Built motion from commit e038f6c0.|2.6.25
authorsupport <support@xcally.com>
Wed, 7 Dec 2022 16:32:10 +0000 (16:32 +0000)
committersupport <support@xcally.com>
Wed, 7 Dec 2022 16:32:10 +0000 (16:32 +0000)
1332 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
public/app/footer/i18n/ar.json
public/app/footer/i18n/bs.json
public/app/footer/i18n/cs.json
public/app/footer/i18n/da.json
public/app/footer/i18n/de.json
public/app/footer/i18n/en.json
public/app/footer/i18n/es.json
public/app/footer/i18n/et.json
public/app/footer/i18n/fa.json
public/app/footer/i18n/fi.json
public/app/footer/i18n/fr.json
public/app/footer/i18n/he.json
public/app/footer/i18n/hi.json
public/app/footer/i18n/hu.json
public/app/footer/i18n/id.json
public/app/footer/i18n/is.json
public/app/footer/i18n/it.json
public/app/footer/i18n/ja.json
public/app/footer/i18n/ko.json
public/app/footer/i18n/lt.json
public/app/footer/i18n/lv.json
public/app/footer/i18n/nl.json
public/app/footer/i18n/no.json
public/app/footer/i18n/pl.json
public/app/footer/i18n/pt-BR.json
public/app/footer/i18n/pt-PT.json
public/app/footer/i18n/ru.json
public/app/footer/i18n/sv.json
public/app/footer/i18n/tr.json
public/app/footer/i18n/zh-CN.json
public/app/footer/i18n/zh-TW.json
public/index.html
public/scripts/app.dfe51dde.js [moved from public/scripts/app.e4a92ace.js with 68% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/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.events.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/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.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/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/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/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/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/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/contacts/index.js
server/components/contacts/sql-utils.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/import/cm/csvUpdates.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.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/cloud-provider.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/api.js
server/errors/index.js
server/migrations/2.6.22.js
server/migrations/2.6.25.js
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.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/index.js
server/services/ami/dialer/models/action.js
server/services/ami/dialer/models/agentComplete.js
server/services/ami/dialer/models/final.js
server/services/ami/dialer/models/hangup.js
server/services/ami/dialer/models/history.js
server/services/ami/dialer/models/queueCallerAbandon.js
server/services/ami/dialer/utils/hopper.js
server/services/ami/dialer/utils/index.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/voiceQueueSummary.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/realtime/utils.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/cmHopperAdditionalPhone.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/interval.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js
server/utils/client-side-logger.js
server/utils/iftime.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js
server/utils/update-app-config.js
snippet/3.5.0/scripts/chat.js [deleted file]
snippet/3.5.0/scripts/chat.js.map [deleted file]
snippet/3.8.0/assets/fonts/74bd8541f6152e9aa0cb.ttf [moved from snippet/3.5.0/assets/fonts/74bd8541f6152e9aa0cb.ttf with 100% similarity]
snippet/3.8.0/assets/fonts/8a4db4218c8e3ba96535.woff [moved from snippet/3.5.0/assets/fonts/8a4db4218c8e3ba96535.woff with 100% similarity]
snippet/3.8.0/assets/fonts/c90b9e812971d29ad6eb.eot [moved from snippet/3.5.0/assets/fonts/c90b9e812971d29ad6eb.eot with 100% similarity]
snippet/3.8.0/assets/fonts/db15fb94f19c4e36b451.woff [moved from snippet/3.5.0/assets/fonts/db15fb94f19c4e36b451.woff with 100% similarity]
snippet/3.8.0/assets/fonts/dc116c4c8ce73229b683.ttf [moved from snippet/3.5.0/assets/fonts/dc116c4c8ce73229b683.ttf with 100% similarity]
snippet/3.8.0/assets/fonts/f2fc8fdab7e77dd45cca.eot [moved from snippet/3.5.0/assets/fonts/f2fc8fdab7e77dd45cca.eot with 100% similarity]
snippet/3.8.0/assets/fonts/ffef7f48a358edc53224.woff2 [moved from snippet/3.5.0/assets/fonts/ffef7f48a358edc53224.woff2 with 100% similarity]
snippet/3.8.0/assets/images/00fe515d7113c2841e5d.svg [moved from snippet/3.5.0/assets/images/00fe515d7113c2841e5d.svg with 100% similarity]
snippet/3.8.0/assets/images/369ccd33e5368870b112.png [moved from snippet/3.5.0/assets/images/369ccd33e5368870b112.png with 100% similarity]
snippet/3.8.0/assets/images/3b24a6b94b2631f4d565.svg [moved from snippet/3.5.0/assets/images/3b24a6b94b2631f4d565.svg with 100% similarity]
snippet/3.8.0/assets/images/b45cb1fa106a1150f12e.png [moved from snippet/3.5.0/assets/images/b45cb1fa106a1150f12e.png with 100% similarity]
snippet/3.8.0/assets/images/c9f502ad417b1b987198.svg [moved from snippet/3.5.0/assets/images/c9f502ad417b1b987198.svg with 100% similarity]
snippet/3.8.0/index.html [moved from snippet/3.5.0/index.html with 69% similarity]
snippet/3.8.0/scripts/app.js [moved from snippet/3.5.0/scripts/app.js with 84% similarity]
snippet/3.8.0/scripts/app.js.LICENSE.txt [moved from snippet/3.5.0/scripts/app.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/chat-e96e9bea.js [new file with mode: 0644]
snippet/3.8.0/scripts/chat-e96e9bea.js.LICENSE.txt [moved from snippet/3.5.0/scripts/chat.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/chat-e96e9bea.js.map [new file with mode: 0644]
snippet/3.8.0/scripts/chat-fecd0807.js [new file with mode: 0644]
snippet/3.8.0/scripts/chat-fecd0807.js.map [new file with mode: 0644]
snippet/3.8.0/scripts/mobile.js [moved from snippet/3.5.0/scripts/mobile.js with 100% similarity]
snippet/3.8.0/scripts/runtime.js [moved from snippet/3.5.0/scripts/runtime.js with 100% similarity]
snippet/3.8.0/scripts/runtime.js.map [moved from snippet/3.5.0/scripts/runtime.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-58d021f3.js [moved from snippet/3.5.0/scripts/vendor-angular-58d021f3.js with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-58d021f3.js.map [moved from snippet/3.5.0/scripts/vendor-angular-58d021f3.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-76f2ed34.js [moved from snippet/3.5.0/scripts/vendor-angular-76f2ed34.js with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-76f2ed34.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-angular-76f2ed34.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-76f2ed34.js.map [moved from snippet/3.5.0/scripts/vendor-angular-76f2ed34.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-animate.js [moved from snippet/3.5.0/scripts/vendor-angular-animate.js with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-animate.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-angular-animate.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-animate.js.map [moved from snippet/3.5.0/scripts/vendor-angular-animate.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-local-storage.js [moved from snippet/3.5.0/scripts/vendor-angular-local-storage.js with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-local-storage.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-angular-local-storage.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-local-storage.js.map [moved from snippet/3.5.0/scripts/vendor-angular-local-storage.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-material.js [moved from snippet/3.5.0/scripts/vendor-angular-material.js with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-material.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-angular-material.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-material.js.map [moved from snippet/3.5.0/scripts/vendor-angular-material.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-messages.js [moved from snippet/3.5.0/scripts/vendor-angular-messages.js with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-messages.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-angular-messages.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-messages.js.map [moved from snippet/3.5.0/scripts/vendor-angular-messages.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-resource.js [moved from snippet/3.5.0/scripts/vendor-angular-resource.js with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-resource.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-angular-resource.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-resource.js.map [moved from snippet/3.5.0/scripts/vendor-angular-resource.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-sanitize.js [moved from snippet/3.5.0/scripts/vendor-angular-sanitize.js with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-sanitize.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-angular-sanitize.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-angular-sanitize.js.map [moved from snippet/3.5.0/scripts/vendor-angular-sanitize.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-emojione.js [moved from snippet/3.5.0/scripts/vendor-emojione.js with 100% similarity]
snippet/3.8.0/scripts/vendor-emojione.js.map [moved from snippet/3.5.0/scripts/vendor-emojione.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-emojionearea.js [moved from snippet/3.5.0/scripts/vendor-emojionearea.js with 100% similarity]
snippet/3.8.0/scripts/vendor-emojionearea.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-emojionearea.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-emojionearea.js.map [moved from snippet/3.5.0/scripts/vendor-emojionearea.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-flow.js [moved from snippet/3.5.0/scripts/vendor-flow.js with 100% similarity]
snippet/3.8.0/scripts/vendor-flow.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-flow.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-flow.js.map [moved from snippet/3.5.0/scripts/vendor-flow.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-index.js [moved from snippet/3.5.0/scripts/vendor-index.js with 100% similarity]
snippet/3.8.0/scripts/vendor-index.js.map [moved from snippet/3.5.0/scripts/vendor-index.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-jquery.js [moved from snippet/3.5.0/scripts/vendor-jquery.js with 100% similarity]
snippet/3.8.0/scripts/vendor-jquery.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-jquery.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-jquery.js.map [moved from snippet/3.5.0/scripts/vendor-jquery.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-jquery.textcomplete.js [moved from snippet/3.5.0/scripts/vendor-jquery.textcomplete.js with 100% similarity]
snippet/3.8.0/scripts/vendor-jquery.textcomplete.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-jquery.textcomplete.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-jquery.textcomplete.js.map [moved from snippet/3.5.0/scripts/vendor-jquery.textcomplete.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-moment.js [moved from snippet/3.5.0/scripts/vendor-moment.js with 100% similarity]
snippet/3.8.0/scripts/vendor-moment.js.LICENSE.txt [moved from snippet/3.5.0/scripts/vendor-moment.js.LICENSE.txt with 100% similarity]
snippet/3.8.0/scripts/vendor-moment.js.map [moved from snippet/3.5.0/scripts/vendor-moment.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-ng-embed.js [moved from snippet/3.5.0/scripts/vendor-ng-embed.js with 100% similarity]
snippet/3.8.0/scripts/vendor-ng-embed.js.map [moved from snippet/3.5.0/scripts/vendor-ng-embed.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-stateDirectives.js [moved from snippet/3.5.0/scripts/vendor-stateDirectives.js with 100% similarity]
snippet/3.8.0/scripts/vendor-stateDirectives.js.map [moved from snippet/3.5.0/scripts/vendor-stateDirectives.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-stateService.js [moved from snippet/3.5.0/scripts/vendor-stateService.js with 100% similarity]
snippet/3.8.0/scripts/vendor-stateService.js.map [moved from snippet/3.5.0/scripts/vendor-stateService.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-transition.js [moved from snippet/3.5.0/scripts/vendor-transition.js with 100% similarity]
snippet/3.8.0/scripts/vendor-transition.js.map [moved from snippet/3.5.0/scripts/vendor-transition.js.map with 100% similarity]
snippet/3.8.0/scripts/vendor-urlMatcher.js [moved from snippet/3.5.0/scripts/vendor-urlMatcher.js with 100% similarity]
snippet/3.8.0/scripts/vendor-urlMatcher.js.map [moved from snippet/3.5.0/scripts/vendor-urlMatcher.js.map with 100% similarity]
snippet/3.8.0/styles/app.css [moved from snippet/3.5.0/styles/app.css with 96% similarity]
snippet/3.8.0/styles/app.css.map [moved from snippet/3.5.0/styles/app.css.map with 96% similarity]
snippet/3.8.0/styles/mobile.css [moved from snippet/3.5.0/styles/mobile.css with 100% similarity]
snippet/3.8.0/styles/mobile.css.map [moved from snippet/3.5.0/styles/mobile.css.map with 100% similarity]
snippet/3.8.0/styles/vendor.css [moved from snippet/3.5.0/styles/vendor.css with 100% similarity]
snippet/3.8.0/styles/vendor.css.map [moved from snippet/3.5.0/styles/vendor.css.map with 100% similarity]
snippet/3.8.0/templates/16cdb681415d17888eb4.html [new file with mode: 0644]
snippet/3.8.0/templates/2444367602029f7ce07b.html [moved from snippet/3.5.0/templates/00860aee362cdeeb1080.html with 100% similarity]
snippet/3.8.0/templates/591bf8c202d03863c86d.html [moved from snippet/3.5.0/templates/dc49a9ba939f8c099868.html with 63% similarity]
snippet/3.8.0/templates/66a0b4b6e8658e97c814.html [moved from snippet/3.5.0/templates/6043a16afdb829ba5934.html with 100% similarity]
snippet/3.8.0/templates/7b7643d87e862e440656.html [new file with mode: 0644]
snippet/3.8.0/templates/c1e929900f2af303341f.html [moved from snippet/3.5.0/templates/9962474df74f9405ac72.html with 100% similarity]
snippet/3.8.0/templates/c6696015a1b93372d614.html [moved from snippet/3.5.0/templates/3f18dac5f545add792db.html with 100% similarity]
snippet/3.8.0/templates/cd310ba2c496545551ae.html [moved from snippet/3.5.0/templates/caf0e553108b226443aa.html with 100% similarity]
snippet/3.8.0/templates/fe333c40841e29976a89.html [new file with mode: 0644]

index e6688c1..e2ef896 100644 (file)
@@ -18647,7 +18647,7 @@ define({ "api": [
     ],
     "name": "notify",
     "group": "Openchannel_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></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> <p>Follow this link to check the documentation: <pre>&lt;a target=&quot;_blank&quot; href=&quot;https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252245/New+Channels+Configuration+Steps&quot;</a></pre></p>",
     "version": "0.0.0",
     "filename": "server/api/openchannelAccount/index.js",
     "groupTitle": "Openchannel_Accounts"
index 0586e41..ce85c1f 100644 (file)
     ],
     "name": "notify",
     "group": "Openchannel_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></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> <p>Follow this link to check the documentation: <pre>&lt;a target=&quot;_blank&quot; href=&quot;https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252245/New+Channels+Configuration+Steps&quot;</a></pre></p>",
     "version": "0.0.0",
     "filename": "server/api/openchannelAccount/index.js",
     "groupTitle": "Openchannel_Accounts"
index 16bffcd..616bec6 100644 (file)
@@ -5,7 +5,7 @@ define({
   "title": "xCALLY MOTION API",
   "header": {
     "title": "Introduction",
-    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
+    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
   },
   "template": {
     "withGenerator": false,
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-12-07T14:29:31.269Z",
+    "time": "2022-12-07T16:23:41.612Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index c75b014..63555e7 100644 (file)
@@ -5,7 +5,7 @@
   "title": "xCALLY MOTION API",
   "header": {
     "title": "Introduction",
-    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
+    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
   },
   "template": {
     "withGenerator": false,
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-12-07T14:29:31.269Z",
+    "time": "2022-12-07T16:23:41.612Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 822cea4..62367a8 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "نحن نستخدم ملفات تعريف الارتباط لنمنحك أفضل تجربة. اقرأ <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie Policy\" class=\"blue-fg\"> سياسة ملفات تعريف الارتباط </a>."
+    "COOKIE_LAW": "نحن نستخدم ملفات تعريف الارتباط لنمنحك أفضل تجربة. اقرأ سياسة ملفات تعريف الارتباط."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index 3ce3659..0b99f17 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi bruger cookies til at give dig den bedste oplevelse. Læs vores <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookiepolitik </a>."
+    "COOKIE_LAW": "Vi bruger cookies til at give dig den bedste oplevelse. Læs vores cookiepolitik."
   }
 }
index 11227ad..ba4c556 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Wir verwenden Cookies, um Ihnen die bestmögliche Erfahrung zu bieten. Lesen Sie unsere <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie-Richtlinie </a>."
+    "COOKIE_LAW": "Wir verwenden Cookies, um Ihnen die bestmögliche Erfahrung zu bieten. Lesen Sie unsere Cookie-Richtlinie."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index c74cc69..ac52e4e 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Usamos cookies para brindarle la mejor experiencia. Lea nuestra <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\"class=\"blue-fg\"> política de cookies </a>."
+    "COOKIE_LAW": "Usamos cookies para brindarle la mejor experiencia. Lea nuestra política de cookies."
   }
 }
index ee6d003..002d860 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie cookie policy.",
     "ERRORS": {}
   }
 }
index e643895..cad1da2 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "ما از کوکی ها استفاده می کنیم تا بهترین تجربه را به شما بدهیم. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> خط مشی کوکی </a> را بخوانید."
+    "COOKIE_LAW": "ما از کوکی ها استفاده می کنیم تا بهترین تجربه را به شما بدهیم. خط مشی کوکی را بخوانید."
   }
 }
index 95c865f..504129d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Käytämme evästeitä saadaksesi sinulle parhaan mahdollisen kokemuksen. Lue <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> evästekäytäntö </a>."
+    "COOKIE_LAW": "Käytämme evästeitä saadaksesi sinulle parhaan mahdollisen kokemuksen. Lue evästekäytäntö."
   }
 }
index 5319e13..56b28f3 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Nous utilisons des cookies pour vous offrir la meilleure expérience. Lisez notre <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> politique sur les cookies </a>."
+    "COOKIE_LAW": "Nous utilisons des cookies pour vous offrir la meilleure expérience. Lisez notre politique sur les cookies."
   }
 }
index e2054af..9e6f38d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "אנו משתמשים בקובצי cookie כדי להעניק לך חוויה מיטבית. לרשותך נוסח <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">המדיניות שלנו בנושא קובצי cookie</a>.",
+    "COOKIE_LAW": "אנו משתמשים בקובצי cookie כדי להעניק לך חוויה מיטבית. לרשותך נוסח המדיניות שלנו בנושא קובצי cookie.",
     "ERRORS": {}
   }
 }
index be3c5b1..c27a18b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "हम आपको बेहतरीन अनुभव देने के लिए कुकीज़ का उपयोग करते हैं। हमारे <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> कुकी नीति </a> पढ़ें।"
+    "COOKIE_LAW": "हम आपको बेहतरीन अनुभव देने के लिए कुकीज़ का उपयोग करते हैं। हमारे कुकी नीति पढ़ें।"
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index fb8e39c..ba65ebe 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Kami menggunakan cookie untuk memberi Anda pengalaman terbaik. Baca <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> kebijakan cookie </a> kami."
+    "COOKIE_LAW": "Kami menggunakan cookie untuk memberi Anda pengalaman terbaik. Baca kebijakan cookie kami."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index efbfc38..364b39e 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Utilizziamo i cookie per fornirti un'esperienza migliore. Leggi la nostra <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>."
+    "COOKIE_LAW": "Utilizziamo i cookie per fornirti un'esperienza migliore. Leggi la nostra cookie policy."
   }
 }
index 41f2c92..639a80b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "私たちはあなたに最高の経験を与えるためにクッキーを使用しています。 <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie Policy\" class=\"blue-fg\">クッキーポリシー</a>をご覧ください。"
+    "COOKIE_LAW": "私たちはあなたに最高の経験を与えるためにクッキーを使用しています。クッキーポリシーをご覧ください。"
   }
 }
index fb1d248..8938b02 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "우리는 쿠키를 사용하여 최고의 경험을 제공합니다. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> 쿠키 정책 </a>을 읽어보십시오."
+    "COOKIE_LAW": "우리는 쿠키를 사용하여 최고의 경험을 제공합니다. 쿠키 정책 을 읽어보십시오."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index 201d1ee..803db53 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Mēs izmantojam sīkdatnes, lai sniegtu jums vislabāko pieredzi. Lasiet mūsu <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">sīkdatņu politiku</a>."
+    "COOKIE_LAW": "Mēs izmantojam sīkdatnes, lai sniegtu jums vislabāko pieredzi. Lasiet mūsu sīkdatņu politiku."
   }
 }
index 2ef529e..411a580 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Wij gebruiken cookies om u de beste ervaring te bieden. Lees ons <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookiebeleid </a>."
+    "COOKIE_LAW": "Wij gebruiken cookies om u de beste ervaring te bieden. Lees ons cookiebeleid."
   }
 }
index 2423f0c..d378a1d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi bruker informasjonskapsler for å gi deg den beste opplevelsen. Les vår <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> informasjonskapsel </a>."
+    "COOKIE_LAW": "Vi bruker informasjonskapsler for å gi deg den beste opplevelsen. Les vår informasjonskapsel."
   }
 }
index 230e172..8d145f8 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Używamy plików cookie, aby zapewnić Ci jak najlepsze wrażenia. Przeczytaj naszą <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> politykę dotyczącą plików cookie </a>."
+    "COOKIE_LAW": "Używamy plików cookie, aby zapewnić Ci jak najlepsze wrażenia. Przeczytaj naszą politykę dotyczącą plików cookie."
   }
 }
index 8a47415..2d99045 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
     "ERRORS": {}
   }
 }
index 353f9d8..3423241 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Nós usamos cookies para lhe proporcionar a melhor experiência. Leia nossa <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> política de cookies </a>."
+    "COOKIE_LAW": "Nós usamos cookies para lhe proporcionar a melhor experiência. Leia nossa política de cookies."
   }
 }
index b096c67..d23b6cf 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Мы используем файлы cookie, чтобы дать вам лучший опыт. Ознакомьтесь с нашей <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> политикой cookie </a>."
+    "COOKIE_LAW": "Мы используем файлы cookie, чтобы дать вам лучший опыт. Ознакомьтесь с нашей политикой cookie."
   }
 }
index 5db59f7..e0e4c3d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi använder cookies för att ge dig den bästa upplevelsen. Läs vår <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookie policy </a>."
+    "COOKIE_LAW": "Vi använder cookies för att ge dig den bästa upplevelsen. Läs vår cookie policy."
   }
 }
index bb26fe4..5ebf75e 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Size en iyi deneyimi sunmak için çerezleri kullanıyoruz. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> çerez politikamızı </a> okuyun."
+    "COOKIE_LAW": "Size en iyi deneyimi sunmak için çerezleri kullanıyoruz. çerez politikamızı okuyun."
   }
 }
index ca6d024..87fc928 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "我们使用cookies来为您提供最佳体验。请阅读我们的<a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie政策</a>。"
+    "COOKIE_LAW": "我们使用cookies来为您提供最佳体验。请阅读我们的 Cookie政策。"
   }
 }
index 8f290a1..ef32d41 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "我們使用cookies來為您提供最佳體驗。請閱讀我們的<a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie政策</a>。"
+    "COOKIE_LAW": "我們使用cookies來為您提供最佳體驗。請閱讀我們的 Cookie政策。"
   }
 }
index d6969bf..184b7bf 100644 (file)
@@ -66,7 +66,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.e4a92ace.js"></script>
+  <script src="scripts/app.dfe51dde.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 68%
rename from public/scripts/app.e4a92ace.js
rename to public/scripts/app.dfe51dde.js
index 22f9d93..e53525c 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),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","app.user-setting","app.client-side-logging"])}(),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,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","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],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){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,provider,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,waitForTheAssignedQueue,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,provider,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,waitForTheAssignedQueue,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,provider,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],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",function(e){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"],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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",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,callAdditionalPhoneAfterMin,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,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.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.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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,level,ParentId",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",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: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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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){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,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs,filterFullName",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:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},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,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",id:n.id,userSetting:!0})}],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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"agent",sort:"-updatedAt",userSetting:!0,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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",id:n.id,userSetting:!0})}],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"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",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,level,ParentId",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.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={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.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!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.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 E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{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:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},setMessengerSoundNotification:function(e){u().messengerSoundNotification=e}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(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:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(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 E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.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";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),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){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).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 r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.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"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.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"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.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";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),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,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(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){y.error(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,x("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 x("speaker",!1)}).then(function(){return x("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)&&(y.info("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):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("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){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.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,S(),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 S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.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 I(e){y.debug("answer -> session",e._request),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 O(e,n){y.debug("terminate -> session",e._request),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 y.debug("getVoiceChannels -> session",t._request),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 w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(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&&S()}).catch(function(e){y.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&&S()}).catch(function(e){y.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&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(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 P(){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){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}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(c.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(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!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){y.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,T(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){y.debug("getNotification -> session",n._request);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(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,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){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,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=w.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){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),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&&"ACW"!==E.currentUser.pauseType&&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(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),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){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.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){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.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){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.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){y.error(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 D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);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 D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),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){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),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){y.debug("referAttended -> session",e._request),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=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),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):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},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(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},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){y.error(e)})})},E.patchConference=P,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,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!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){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.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 D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.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")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},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,i,a,s,o){var r=this;function l(e,n){var t=n?"Transfer Success":"Transfer Failed",a="top right";return console.debug("onTransferCallback -> session, textContent, position, delay",e,t,a,3e3),function(){i.show(i.simple().textContent(t).position(a).hideDelay(3e3))}}function d(e){n.hide(e)}r.title="Refer Attended",r.sessions=a,r.session=s,r.isJabraEnabled=o,r.sessionTarget=null,a.length&&(r.target=a[0].user),r.closeDialog=d,r.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===r.target)return e});n=t.outgoing?(e=t,r.session):(e=r.session,t);console.debug("session.refer() -> source, target, replaces, callback",n,e.user,e,"onTransferCallback"),n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:l(s,!0),requestFailed:l(s,!1)}}),function(e,n){e.terminate(),jabra&&n&&jabra.onHook();d()}(s,o)}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t,a,i){var o=this;function r(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}o.currentUser=a.getCurrentUser(),o.messengerSoundNotification=o.currentUser.messengerSoundNotification,_.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=r(n,"audiooutput","ringingId"),s.speakerId=r(n,"audiooutput","speakerId"),s.microphoneId=r(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,o.conf=angular.copy(s),o.devices=n,o.activeSessions=t,o.saveSettings=function(){i.user.messengerSoundNotification({id:o.currentUser.id,enabled:o.messengerSoundNotification}).$promise.then(function(){a.setMessengerSoundNotification(o.messengerSoundNotification),e.hide(o.conf)})},o.closeDialog=function(){e.hide()},o.isCompatibleBrowser=function(){return"chrome"===o.conf.browserName.toLowerCase()||"opera"===o.conf.browserName.toLowerCase()||"safari"===o.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions","Auth","api"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(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()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(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=s,i.onDateRangeSelection=o,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]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","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"}})}(),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(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(!0)},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(!0);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"></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(e,n,t,a,i){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(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw 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){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},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:"=",ngChange:"&"},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"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",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(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}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.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,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();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};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$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(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(h,f){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function t(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 a(e){return!!_.isNil(e)||_.includes(n,e)}function b(e){var n;return t(e,!1)?"pause":t(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],a))?"busy":"idle"}function A(){return moment().set("year","0000").format()}return{INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{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"},STATUS_STYLES:{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"},paginateAgents:function(e,n,t){var a={count:0,rows:[]},i=e.filter(function(e){return e.online});if(i.forEach(function(e){var n,t,a;e.globalStatus=b(e),n=e,f.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")}),e.globalStatusDisplayValue=(a=(t=e).globalStatus,"pause"===t.globalStatus?a=t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"):"*pause"===t.globalStatus&&(a="*"+(t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"))),a)}),0<t.globalQueueFilter.length){var s=n.filter(function(e){return t.globalQueueFilter.includes(e.id)}),o=_.uniq(s.flatMap(function(e){return _.map(e.Agents,"id")}));i=i.filter(function(e){return o.includes(e.id)})}if(t.globalStatusFilter&&(i=i.filter(function(e){var n=e.globalStatus===t.globalStatusFilter;return"pause"===e.globalStatus&&t.pauseTypeFilter&&(n=e.pauseType===t.pauseTypeFilter),n})),t.filter){var r=t.filter.toLowerCase();i=i.filter(function(e){return(e.fullname+" "+e.internal).toLowerCase().includes(r)})}var l,d,c,m,u="-"===t.sort[0]?"DESC":"ASC",p="DESC"===u?t.sort.substring(1):t.sort;l=i,c=u,i="globalStatus"===(d=p)?(m=c,l.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===m?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===m?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===m?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})):l.sort(function(e,n){var t=e[d],a=n[d];return"fullname"===d?(t=e[d].toLowerCase(),a=n[d].toLowerCase()):"lastPauseAt"===d&&(t=e.globalStatus.includes("pause")?e[d]:A(),a=n.globalStatus.includes("pause")?n[d]:A()),"DESC"===c?t<a?1:-1:t<a?-1:1}),a.count=i.length;var g=t.offset||0,v=g+t.limit;return a.rows=i.slice(g,v),a},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),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(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});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}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},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()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}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,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],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"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),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"},messengerSoundNotification:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/messengerSoundNotification"},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"},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"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},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"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/: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"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),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.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/: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"}}}),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"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),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"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_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"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),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.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),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,startTime:new Date(moment().startOf("day")),startDate:new Date(moment().startOf("day")),endTime:new Date(moment().endOf("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.export.name=l.export.name.replace(/\//g,"_"),l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).set("hour",l.export.startTime.getHours()).set("minute",l.export.startTime.getMinutes()).set("second",l.export.startTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).set("hour",l.export.endTime.getHours()).set("minute",l.export.endTime.getMinutes()).set("second",l.export.endTime.getSeconds()).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,e,i,s,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=s,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){c.projects.unshift(e),i.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++)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.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),i.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++)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.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(){_.remove(c.projects,{id:c.project.id}),i.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,O,C,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(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"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(O,"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(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"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(C,"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(O,"id","name"),pause_id:U(C,"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:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{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:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).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:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , 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(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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),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.chatQueue.save"}];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.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),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.chatQueue.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.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];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.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}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.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:{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({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(){v(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=p,m.getChatWebsiteInteractions=g,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,g()}}).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=v,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){v(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,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(){O(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=O,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){O(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.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.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 O(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,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.deleteContact=function(e){m.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(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.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(a,t,e,i,s,n,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 O(){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 C(){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.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),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=e.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");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){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:{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}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$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});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.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=s.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 s.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=O,S.getHistories=C,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=s.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");s.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){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$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())}),a.$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),O())}),a.$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),C())})}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).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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(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:"id",required:!0},{key:"firstName",required:!1},{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.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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.importUpdates({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("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.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 y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(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=y.user.privacyEnabled?A.mask(a):a):c.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)&&U(t)),n){var s=_.find(y.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 l.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];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(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 N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.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},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.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?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)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:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.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 a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({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")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({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":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],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,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},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=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);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(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$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(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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=S,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.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=A,g.getFinals=E,g.getHistories=y,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(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),A(),E(),y()}).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?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(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=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);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 b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){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,b("hoppers")).$promise)}function E(){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,b("finals")).$promise)}function y(){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,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(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})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],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,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.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 E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.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()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.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:v.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:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.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()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$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(A()).$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(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.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(v.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")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.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()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],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,note",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,note:e.note||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,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$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,note",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,note:e.note||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;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}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)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),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,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.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"],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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.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++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.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:v.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:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.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:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.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:v.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:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.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()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.add(n)}})},v.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:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(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(v.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 y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(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 O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.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 N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(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(u.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},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"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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,dialTimezone",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,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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=16,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]):_.findLast(h.interaction.Messages,["secret",!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=[],a=_.some(h.messages.rows,["read",!0]);if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length&&!a;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.trim()))},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.interaction.UserId!==h.user.id&&(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:{}},a=e(t),i=a.replace(/(?:\r\n|\r|\n)/g,"<br />");g.ckEditorInstance.insertHtml(i)}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||o.from))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||g.isDraft?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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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,waitfortheassignedQueue: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){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:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}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.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:{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({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(){v(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=p,m.getFaxAccountInteractions=g,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,g()}}).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=v,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){v(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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),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.faxQueue.save"}];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.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),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.faxQueue.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.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];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.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.deleteDynamics365Account=function(e){v.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(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","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,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.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(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.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:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.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){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,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.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.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","cloudProviders","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,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(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)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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.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()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(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++)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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),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++)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.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.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()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],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.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}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({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(){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,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,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return 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()})})},f.addAgent=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:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.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()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=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()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_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:DELETEmailAccount"}];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:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{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.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,provider,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=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:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(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","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),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.mailQueue.save"}];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.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),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.mailQueue.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.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];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.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.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),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),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,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.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(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})})},v.deleteHopper=function(e){v.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:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.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){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.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(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.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()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"IvrCampaign"}})},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,callAdditionalPhoneAfterMin:3,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"QueueCampaign"}})},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)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),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,g.hopper.dialTimezone=g.contact.dialTimezone,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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});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.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),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,callAdditionalPhoneAfterMin,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(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},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:"name",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){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.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:u.campaigns.rows,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.campaigns=e||{count:0,rows:[]},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,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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,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,waitForTheAssignedQueue: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){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:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}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.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:{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({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(){v(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=p,m.getOpenchannelAccountInteractions=g,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,g()}}).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=v,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){v(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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),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.openchannelQueue.save"}];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.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),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.openchannelQueue.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.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];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.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","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,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,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(t,a,e,n,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=i.params.direction||"inbound",b=g&&1==g.count?g.rows[0].crudPermissions:null;function A(n){return h.query.offset=(h.query.page-1)*h.query.limit,e.resolve().then(function(){if(!0===n){var e=Object.assign({},_.omit(h.query,["limit","offset","page"]),{nolimit:!0});return o.realtime.getAgents(e).$promise}}).then(function(e){e&&(h.amiAgents=e)}).then(function(){var e=h.queues?h.queues.rows:[];h.agents=l.paginateAgents(h.amiAgents.rows,e,h.query)}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function E(e){return _.find(h.amiAgents.rows,["id",e])}function y(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function S(){A(!0)}function T(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function I(){A(!0)}function O(e){var n=E(e.id);n?(Object.assign(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),A()):r.isAdmin()&&A(!0)}function C(e){if("ATTENDED"!==e.transfer){var n=E(e.id);n?(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,A()):r.isAdmin()&&A(!0)}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(n))_.find(h.queues.rows,function(e){return e.id===n}).Agents.push({id:e.UserId}),A()}}function R(n){if(0!==h.query.globalQueueFilter.length){var t=n[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(t)){var e=_.find(h.queues.rows,function(e){return e.id===t});_.remove(e.Agents,function(e){return e.id===n.UserId}),A()}}}function x(){h.queues&&D(!0)}function N(){h.queues&&D(!0)}function D(e){if(!(h.queues&&0<h.queues.count)||e){var n={type:f,fields:"id,name",sort:"name",nolimit:!0,include:[{model:"User",alias:"Agents",fields:["id","name"],raw:!0}]},t=h.channel+"Queue";return o.getResourcesByRole(h.currentUser,t,n,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}}h.currentUser=r.getCurrentUser(),h.channel=i.params.channel,h.amiAgents=m,h.pauses=p,h.license=u,h.crudPermissions=r.parseCrudPermissions(b),h.utcOffset=v,h.query={channel:h.channel,globalQueueFilter:[],globalStatusFilter:null,pauseTypeFilter:null,limit:10,page:1,sort:"fullname"},h.$onInit=function(){d.on("user:remove",I),d.on("user:save",S),d.on("user:update",T),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("user:ami:update",y),d.on("user:routing:update",y),d.on("user"+_.capitalize(h.channel)+"Queue:save",w),d.on("user"+_.capitalize(h.channel)+"Queue:remove",R),d.on(h.channel+"Queue:save",x),d.on(h.channel+"Queue:remove",N),A()},h.getAgents=A,h.onPaginate=function(){A()},h.onSort=function(){A()},h.logout=function(e){return o.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){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()})})},h.pause=function(e,n){return o.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()})})},h.unpause=function(e){return o.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()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:f,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return o.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()})})},h.getQueuesByChannel=D,h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},n.$on("$destroy",function(){d.removeAllListeners("user:remove"),d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("user:ami:update"),d.removeAllListeners("user:routing:update"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:save"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:remove")})}e.$inject=["$document","$mdDialog","$q","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","agents","license","pauses","userProfileSection","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",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.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];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:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});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.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.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"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.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"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.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:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.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}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$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","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],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(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],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,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,waitForTheAssignedQueue: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){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:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}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.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:{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({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(){v(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=p,m.getSmsAccountInteractions=g,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,g()}}).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=v,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){v(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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),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.smsQueue.save"}];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.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),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.smsQueue.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.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];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.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","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,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,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.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){g.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()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.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:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.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(){f(e)})},g.success=v,g.getAgents=h,g.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:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};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),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.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},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.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:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.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:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.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","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,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.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:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.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","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.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,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.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"),"")}),g.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"),"")}),g.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"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.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){g.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()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],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,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.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("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],r.customDashboard.crudPermissions=r.crudPermissions,l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.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=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.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:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.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 o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.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){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId: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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var 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"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,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",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_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()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_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()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},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:[]},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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",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(){})},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,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(){})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===g.query.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(){}).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(){}).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.OUTGOING_CALL_STATUS_STYLES,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","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,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.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},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:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,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?e.rows:{},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","realtimeManager","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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.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"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),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.save"}];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.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),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.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.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];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.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,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,waitForTheAssignedQueue: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){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:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}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.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:{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({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(){v(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=p,m.getWhatsappAccountInteractions=g,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,g()}}).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=v,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){v(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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),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.whatsappQueue.save"}];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.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),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.whatsappQueue.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.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];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.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","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,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,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.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!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.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){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.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!r.hasPermission(101)}}),i.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!r.hasPermission(115)}}),i.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!l.cm||!r.hasPermission(102)}}),i.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!l.cm||!r.hasPermission(103)}}),i.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!l.dialer||!r.hasPermission(113)}}),i.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!l.voice||!r.hasPermission(110)}}),i.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!l.voice||!r.hasPermission(111)}}),i.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!l.voice||!r.hasPermission(104)}}),i.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!l.chat||!r.hasPermission(105)}}),i.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!l.mail||!r.hasPermission(106)}}),i.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!l.messaging||!r.hasPermission(107)}}),i.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!l.openchannel||!r.hasPermission(108)}}),i.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!l.fax||!r.hasPermission(109)}}),i.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!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],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.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(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.beepPlayer=null,m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){m.beepPlayer=document.getElementById("beep-player"),e.ToId===m.currentUser.id&&e.ToId!==e.FromId&&m.currentUser.messengerSoundNotification&&m.beepPlayer.play().catch(function(e){console.log(e.message)});if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.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))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],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(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",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,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();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 t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();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 r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.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"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(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:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=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(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.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.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return 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){C.error(e)})}function Q(e){var n=e;if(I.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})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.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"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.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"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.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},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.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()})})},I.unpause=function(){return f.user.unpause({id:I.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()})})},I.preview=function(n){return I.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"}):M(e,!1,n)}).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){I.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(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.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()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(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 G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.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"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=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","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",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=""!==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=["","","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","dialTimezone","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-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),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">\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"></angucomplete-alt>\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">\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-switch ng-model="vm.messengerSoundNotification" aria-label="EnableMessengerSoundNotification">\n                <span translate="TOOLBAR.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</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, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = 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(true)" 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">\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" 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" >\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" ng-change="ngChange()">\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-2" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 2)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview && !vm.config.crudPermissions.readOnly" 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 ng-if="vm.config.crudPermissions.canEdit === true">\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 ng-if="vm.config.crudPermissions.canDelete === true">\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 style="height: 60px !important; min-height: 60px !important" 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="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="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" 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="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" 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="md-hue-2" 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" 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" 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">\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 || vm.adSsoEnabled" 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\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.startTime">\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.endTime">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" 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>\n      <div class="error-list">\n        <div ng-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.chatWebsite.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\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.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_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              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" 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" 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/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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_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-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$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\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\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        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</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">{{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          <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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="TOOLS.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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 && additionalPhonesForm.$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                  </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">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\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="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\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\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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/import/importUpdates.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.UPDATE_EXISTING_CONTACTS">Update Existing 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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" 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  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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 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 ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\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                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\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                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\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>\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" ng-change="vm.recalcTZTime()" 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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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>\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\',false)" 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\',false)">\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\',false)">\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="agent-general-home-navbar md-primary-bg width-50">\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 class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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 class="home-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" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\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"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></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-120 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                  {{ \'VOICE.\' + (agent.status | uppercase) | translate | 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\' && agent.status !== \'unavailable\'" 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\' && agent.status !== \'unavailable\'" 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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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>\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 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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.faxAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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, account)" 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.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\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\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="true">\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\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\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        <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 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">\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="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | 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="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\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                <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\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="vm.dynamics365Account.modernAuthentication == false">\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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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 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">\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.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$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      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$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 ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'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      </div>\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        <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 MAIL ACCOUNT\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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  <div class="header md-accent-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.goToRealtime()" 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.addAgent(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) || (credentialsForm.$invalid) || (templateForm.$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\n  <div class="content">\n\n    <md-tabs 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.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</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                <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\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.mailAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</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" 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="MAIL.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 ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication 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.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$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 ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="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="credentialsForm[\'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            </form>\n          </div>\n\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                <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 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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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                <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 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                <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 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" 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                <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">\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              <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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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 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 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 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" 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">\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            </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 template 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.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\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="templateForm[\'fontFamily\'].$error" ng-show="templateForm[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="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'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            </form>\n          </div>\n\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\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\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" 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" 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</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\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-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</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="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header 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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\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 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="provider">{{ \'MAIL.SERVICE\' | 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" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td 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 md-cell class="description ">{{mailAccount.description}}</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                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email 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: \'{{\'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    </div>\n  </div>\n\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\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.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.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.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.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.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, account)" 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, account)" 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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/hopperdate/hopperdate.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" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\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\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\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\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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.dateTime" ng-change="vm.recalcTZTime()">\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.dateTime" ng-change="vm.recalcTZTime()">\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      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\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) || (additionalphonesForm.$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          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin 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              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></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 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">\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 md-order-by="name" class="bl">{{\'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.rows.length > 0">\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="campaign in vm.campaigns.rows">\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.campaigns.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_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 md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.openchannelAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n\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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/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 quick-filter-container">\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 = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'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="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.onSort">\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            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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' }}\" aria-label=\"Screen Recording\">\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=\"['pause', '*pause'].includes(agent.globalStatus)\">\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.onPaginate\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/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 ng-if="vm.voiceQueueType === \'inbound\'" 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.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-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="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.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 ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </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>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</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.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/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 }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-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">\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.formatTime(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.formatTime(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.formatTime(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.formatTime(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  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<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="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.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.showPredictiveInfo($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.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | 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>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\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 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\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-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.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\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.inUse - queue.talking - queue.pTalking }}</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) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | 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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.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" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\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.queues.count}}" md-on-paginate="vm.getQueues" 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.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 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">\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 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.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\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                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </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: \'{{\'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.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</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\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'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\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 ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <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/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret 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">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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        </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            <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          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval 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="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container filters 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.FILTERS">FILTERS</div>\n        </div>\n        <form name="filtersForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.filterFullName" aria-label="fullName"><span translate="SETTINGS.FILTER_FULLNAME">Full Name</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.FILTER_FULLNAME"></span></div>\n          </md-input-container>\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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_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">\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="1200" 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                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></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 ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </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 id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="1200"><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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="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\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\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\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</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.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\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.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.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[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\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>\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">\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.smsAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue 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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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  \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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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.setting.filterFullName" 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        <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 ng-if="vm.setting.filterFullName" class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-pattern="/^[A-Za-z0-9\\ \\_\\-]+$/i" ng-required="true" autofocus>\n        <div class="hint"><span translate="STAFF.HELP.FILTERFULLNAME"></span></div>\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 ng-message="pattern">\n            <span translate="STAFF.ERRORS.FULLNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\ \\_\\-]+$/i\' }">Fullname must be valid pattern</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      <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      <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 class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\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    <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    <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) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\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 ng-if="!vm.setting.filterFullName" 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                <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 ng-if="vm.setting.filterFullName" class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-pattern="/^[A-Za-z0-9\\ \\_\\-]+$/i" ng-required="true" autofocus>\n                <div class="hint"><span translate="STAFF.HELP.FILTERFULLNAME"></span></div>\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 ng-message="pattern">\n                    <span translate="STAFF.ERRORS.FULLNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\ \\_\\-]+$/i\' }">Fullname must be valid pattern</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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\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              <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                <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                <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                <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                    <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          </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                <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                <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 ng-if="!vm.setting.filterFullName" class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input ng-readonly="vm.setting.filterFullName" type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\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\n              <md-input-container ng-if="vm.setting.filterFullName" class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-pattern="/^[A-Za-z0-9\\ \\_\\-\\<\\>\\x22]+$/i" ng-disabled="!vm.crudPermissions.canEdit">\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 ng-message="pattern">\n                    <span translate="STAFF.ERRORS.CALLERID_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\ \\_\\-\\<\\>\\x22]+$/i\' }">CallerId must be valid pattern</span>\n                  </div>\n                </div>\n               \n              </md-input-container>\n\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                <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                <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            </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                <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                <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                <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                <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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer 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.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\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                <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                <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            </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                <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                <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            </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                <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            </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                <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                <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                <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                <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                <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            </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.messengerSoundNotification" aria-label="EnableMessengerSoundNotification" \n                ng-if="vm.agent.allowmessenger">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</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            </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            </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              \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      <md-divider></md-divider>\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              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\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    <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    <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  </div>\n  \x3c!-- / HEADER --\x3e\n\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="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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="user-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></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              <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                <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                <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                <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                    <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          </div>\n          <div class="user-detail-form-container internal-chat 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.INTERNAL_MESSENGER">INTERNAL_MESSENGER</div>\n            </div>\n            <form name="internalChatForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.messengerSoundNotification" \n                aria-label="messengerSoundNotification" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MESSENGERSOUNDNOTIFICATION</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MESSENGERSOUNDNOTIFICATION"></span></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="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                <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                <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                <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.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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\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/users/users.html",'<div id="users" 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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-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-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.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.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" 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.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($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!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-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="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.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="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</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(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'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.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | 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.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$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.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'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">\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">\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>\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\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>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{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\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>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_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 == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{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>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_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 == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\n      <div class="error-list">\n        <div ng-repeat="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>\n      <div class="error-list">\n        <div ng-repeat="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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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_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 md-order-by="name">{{\'\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.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.whatsappAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\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" 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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-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-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" 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" 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" 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" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <audio id="beep-player" hidden src="/assets/ms-phonebar/sounds/beep.ogg"></audio>\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" 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" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></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" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\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.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" 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.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[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">\n          </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.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></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    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" 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.closeChat()" 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 ng-if="vm_ct.isLoading" 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 ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item 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\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" 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.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" 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-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\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    <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>\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" 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" 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 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>\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()">\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/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" 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.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" registered="vm.isWebRTCBarRegistered" 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.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\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 badge-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    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\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>\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\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\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-if="!vm.isRecallNotification" 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-if="!vm.isRecallNotification" 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.client-side-logging",[])}(),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","app.user-setting","app.client-side-logging"])}(),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,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","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],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){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,provider,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,waitForTheAssignedQueue,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,provider,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,waitForTheAssignedQueue,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,provider,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],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",function(e){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"],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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",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,callAdditionalPhoneAfterMin,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,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.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.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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,level,ParentId",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",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: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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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){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,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs,filterFullName",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:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},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,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",id:n.id,userSetting:!0})}],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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"agent",sort:"-updatedAt",userSetting:!0,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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",id:n.id,userSetting:!0})}],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"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,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",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",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,level,ParentId",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.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={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.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!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.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 E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{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:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},setMessengerSoundNotification:function(e){u().messengerSoundNotification=e}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(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:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(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 E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.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";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),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){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).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 r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.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"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.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"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.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";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),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,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(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){y.error(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,x("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 x("speaker",!1)}).then(function(){return x("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)&&(y.info("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):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("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){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.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,S(),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 S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.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 I(e){y.debug("answer -> session",e._request),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 O(e,n){y.debug("terminate -> session",e._request),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 y.debug("getVoiceChannels -> session",t._request),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 w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(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&&S()}).catch(function(e){y.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&&S()}).catch(function(e){y.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&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(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 P(){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){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}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(c.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(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!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){y.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,T(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){y.debug("getNotification -> session",n._request);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(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,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){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,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=w.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){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),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&&"ACW"!==E.currentUser.pauseType&&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(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),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){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.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){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.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){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.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){y.error(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 D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);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 D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),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){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),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){y.debug("referAttended -> session",e._request),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=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),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):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},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(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},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){y.error(e)})})},E.patchConference=P,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,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!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){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.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 D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.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")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},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,i,a,s,o){var r=this;function l(e,n){var t=n?"Transfer Success":"Transfer Failed",a="top right";return console.debug("onTransferCallback -> session, textContent, position, delay",e,t,a,3e3),function(){i.show(i.simple().textContent(t).position(a).hideDelay(3e3))}}function d(e){n.hide(e)}r.title="Refer Attended",r.sessions=a,r.session=s,r.isJabraEnabled=o,r.sessionTarget=null,a.length&&(r.target=a[0].user),r.closeDialog=d,r.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===r.target)return e});n=t.outgoing?(e=t,r.session):(e=r.session,t);console.debug("session.refer() -> source, target, replaces, callback",n,e.user,e,"onTransferCallback"),n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:l(s,!0),requestFailed:l(s,!1)}}),function(e,n){e.terminate(),jabra&&n&&jabra.onHook();d()}(s,o)}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t,a,i){var o=this;function r(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}o.currentUser=a.getCurrentUser(),o.messengerSoundNotification=o.currentUser.messengerSoundNotification,_.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=r(n,"audiooutput","ringingId"),s.speakerId=r(n,"audiooutput","speakerId"),s.microphoneId=r(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,o.conf=angular.copy(s),o.devices=n,o.activeSessions=t,o.saveSettings=function(){i.user.messengerSoundNotification({id:o.currentUser.id,enabled:o.messengerSoundNotification}).$promise.then(function(){a.setMessengerSoundNotification(o.messengerSoundNotification),e.hide(o.conf)})},o.closeDialog=function(){e.hide()},o.isCompatibleBrowser=function(){return"chrome"===o.conf.browserName.toLowerCase()||"opera"===o.conf.browserName.toLowerCase()||"safari"===o.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions","Auth","api"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(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()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(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=s,i.onDateRangeSelection=o,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]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","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"}})}(),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(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(!0)},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(!0);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"></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(e,n,t,a,i){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(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw 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){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},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:"=",ngChange:"&"},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"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",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(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}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.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,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();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};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$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(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(h,f){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function t(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 a(e){return!!_.isNil(e)||_.includes(n,e)}function b(e){var n;return t(e,!1)?"pause":t(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],a))?"busy":"idle"}function A(){return moment().set("year","0000").format()}return{INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{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"},STATUS_STYLES:{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"},paginateAgents:function(e,n,t){var a={count:0,rows:[]},i=e.filter(function(e){return e.online});if(i.forEach(function(e){var n,t,a;e.globalStatus=b(e),n=e,f.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")}),e.globalStatusDisplayValue=(a=(t=e).globalStatus,"pause"===t.globalStatus?a=t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"):"*pause"===t.globalStatus&&(a="*"+(t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"))),a)}),0<t.globalQueueFilter.length){var s=n.filter(function(e){return t.globalQueueFilter.includes(e.id)}),o=_.uniq(s.flatMap(function(e){return _.map(e.Agents,"id")}));i=i.filter(function(e){return o.includes(e.id)})}if(t.globalStatusFilter&&(i=i.filter(function(e){var n=e.globalStatus===t.globalStatusFilter;return"pause"===e.globalStatus&&t.pauseTypeFilter&&(n=e.pauseType===t.pauseTypeFilter),n})),t.filter){var r=t.filter.toLowerCase();i=i.filter(function(e){return(e.fullname+" "+e.internal).toLowerCase().includes(r)})}var l,d,c,m,u="-"===t.sort[0]?"DESC":"ASC",p="DESC"===u?t.sort.substring(1):t.sort;l=i,c=u,i="globalStatus"===(d=p)?(m=c,l.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===m?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===m?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===m?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})):l.sort(function(e,n){var t=e[d],a=n[d];return"fullname"===d?(t=e[d].toLowerCase(),a=n[d].toLowerCase()):"lastPauseAt"===d&&(t=e.globalStatus.includes("pause")?e[d]:A(),a=n.globalStatus.includes("pause")?n[d]:A()),"DESC"===c?t<a?1:-1:t<a?-1:1}),a.count=i.length;var g=t.offset||0,v=g+t.limit;return a.rows=i.slice(g,v),a},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),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(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});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}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},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()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}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,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],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"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),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"},messengerSoundNotification:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/messengerSoundNotification"},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"},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"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},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"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/: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"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),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.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/: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"}}}),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"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),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"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_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"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),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.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),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,startTime:new Date(moment().startOf("day")),startDate:new Date(moment().startOf("day")),endTime:new Date(moment().endOf("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.export.name=l.export.name.replace(/\//g,"_"),l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).set("hour",l.export.startTime.getHours()).set("minute",l.export.startTime.getMinutes()).set("second",l.export.startTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).set("hour",l.export.endTime.getHours()).set("minute",l.export.endTime.getMinutes()).set("second",l.export.endTime.getSeconds()).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,e,i,s,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=s,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){c.projects.unshift(e),i.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++)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.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),i.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++)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.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(){_.remove(c.projects,{id:c.project.id}),i.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,O,C,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(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"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(O,"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(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"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(C,"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(O,"id","name"),pause_id:U(C,"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:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{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:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).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:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , 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(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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),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.chatQueue.save"}];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.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),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.chatQueue.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.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];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.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){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:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}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.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:{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({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(){v(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=p,m.getChatWebsiteInteractions=g,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,g()}}).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=v,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){v(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,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(){O(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=O,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){O(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.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.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 O(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,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.deleteContact=function(e){m.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(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.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(a,t,e,i,s,n,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 O(){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 C(){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.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),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=e.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");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){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:{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}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$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});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.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=s.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 s.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=O,S.getHistories=C,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=s.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");s.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){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$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())}),a.$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),O())}),a.$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),C())})}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).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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(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:"id",required:!0},{key:"firstName",required:!1},{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.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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.importUpdates({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("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.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 y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(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=y.user.privacyEnabled?A.mask(a):a):c.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)&&U(t)),n){var s=_.find(y.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 l.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];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(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 N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.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},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.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?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)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:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.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 a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({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")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({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":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],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,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},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=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);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(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$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(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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=S,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.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=A,g.getFinals=E,g.getHistories=y,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(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),A(),E(),y()}).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?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(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=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);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 b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){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,b("hoppers")).$promise)}function E(){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,b("finals")).$promise)}function y(){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,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(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})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],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,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.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 E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.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()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.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:v.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:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.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()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$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(A()).$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(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.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(v.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")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.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()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],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,note",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,note:e.note||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,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$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,note",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,note:e.note||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;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}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)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),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,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.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"],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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.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++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.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:v.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:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.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:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.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:v.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:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.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()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.add(n)}})},v.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:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(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(v.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 y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(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 O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.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 N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(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(u.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},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"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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,dialTimezone",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,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(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(g.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 E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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=16,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]):_.findLast(h.interaction.Messages,["secret",!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=[],a=_.some(h.messages.rows,["read",!0]);if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length&&!a;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.trim()))},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.interaction.UserId!==h.user.id&&(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:{}},a=e(t),i=a.replace(/(?:\r\n|\r|\n)/g,"<br />");g.ckEditorInstance.insertHtml(i)}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||o.from))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||g.isDraft?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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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,waitfortheassignedQueue: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){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:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}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.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:{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({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(){v(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=p,m.getFaxAccountInteractions=g,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,g()}}).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=v,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){v(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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),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.faxQueue.save"}];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.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),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.faxQueue.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.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];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.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.deleteDynamics365Account=function(e){v.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(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","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,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.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(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.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:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.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){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,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.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.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","cloudProviders","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,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(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)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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.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()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(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++)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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),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++)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.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.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()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],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.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}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({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(){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,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,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return 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()})})},f.addAgent=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:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.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()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=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()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_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:DELETEmailAccount"}];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:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{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.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,provider,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=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:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(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","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),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.mailQueue.save"}];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.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),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.mailQueue.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.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];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.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.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),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),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,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.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(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})})},v.deleteHopper=function(e){v.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:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.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){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.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(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.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()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"IvrCampaign"}})},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,callAdditionalPhoneAfterMin:3,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"QueueCampaign"}})},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)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),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,g.hopper.dialTimezone=g.contact.dialTimezone,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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});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.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),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,callAdditionalPhoneAfterMin,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(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},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:"name",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){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.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:u.campaigns.rows,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.campaigns=e||{count:0,rows:[]},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,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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,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,waitForTheAssignedQueue: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){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:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}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.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:{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({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(){v(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=p,m.getOpenchannelAccountInteractions=g,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,g()}}).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=v,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){v(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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),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.openchannelQueue.save"}];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.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),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.openchannelQueue.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.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];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.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","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,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,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(t,a,e,n,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=i.params.direction||"inbound",b=g&&1==g.count?g.rows[0].crudPermissions:null;function A(n){return h.query.offset=(h.query.page-1)*h.query.limit,e.resolve().then(function(){if(!0===n){var e=Object.assign({},_.omit(h.query,["limit","offset","page"]),{nolimit:!0});return o.realtime.getAgents(e).$promise}}).then(function(e){e&&(h.amiAgents=e)}).then(function(){var e=h.queues?h.queues.rows:[];h.agents=l.paginateAgents(h.amiAgents.rows,e,h.query)}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function E(e){return _.find(h.amiAgents.rows,["id",e])}function y(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function S(){A(!0)}function T(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function I(){A(!0)}function O(e){var n=E(e.id);n?(Object.assign(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),A()):r.isAdmin()&&A(!0)}function C(e){if("ATTENDED"!==e.transfer){var n=E(e.id);n?(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,A()):r.isAdmin()&&A(!0)}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(n))_.find(h.queues.rows,function(e){return e.id===n}).Agents.push({id:e.UserId}),A()}}function R(n){if(0!==h.query.globalQueueFilter.length){var t=n[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(t)){var e=_.find(h.queues.rows,function(e){return e.id===t});_.remove(e.Agents,function(e){return e.id===n.UserId}),A()}}}function x(){h.queues&&D(!0)}function N(){h.queues&&D(!0)}function D(e){if(!(h.queues&&0<h.queues.count)||e){var n={type:f,fields:"id,name",sort:"name",nolimit:!0,include:[{model:"User",alias:"Agents",fields:["id","name"],raw:!0}]},t=h.channel+"Queue";return o.getResourcesByRole(h.currentUser,t,n,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}}h.currentUser=r.getCurrentUser(),h.channel=i.params.channel,h.amiAgents=m,h.pauses=p,h.license=u,h.crudPermissions=r.parseCrudPermissions(b),h.utcOffset=v,h.query={channel:h.channel,globalQueueFilter:[],globalStatusFilter:null,pauseTypeFilter:null,limit:10,page:1,sort:"fullname"},h.$onInit=function(){d.on("user:remove",I),d.on("user:save",S),d.on("user:update",T),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("user:ami:update",y),d.on("user:routing:update",y),d.on("user"+_.capitalize(h.channel)+"Queue:save",w),d.on("user"+_.capitalize(h.channel)+"Queue:remove",R),d.on(h.channel+"Queue:save",x),d.on(h.channel+"Queue:remove",N),A()},h.getAgents=A,h.onPaginate=function(){A()},h.onSort=function(){A()},h.logout=function(e){return o.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){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()})})},h.pause=function(e,n){return o.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()})})},h.unpause=function(e){return o.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()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:f,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return o.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()})})},h.getQueuesByChannel=D,h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},n.$on("$destroy",function(){d.removeAllListeners("user:remove"),d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("user:ami:update"),d.removeAllListeners("user:routing:update"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:save"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:remove")})}e.$inject=["$document","$mdDialog","$q","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","agents","license","pauses","userProfileSection","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",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.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];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:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});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.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.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"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.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"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.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:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.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}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$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","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],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(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],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,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,waitForTheAssignedQueue: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){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:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}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.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:{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({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(){v(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=p,m.getSmsAccountInteractions=g,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,g()}}).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=v,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){v(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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),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.smsQueue.save"}];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.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),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.smsQueue.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.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];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.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","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,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,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.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){g.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()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.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:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.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(){f(e)})},g.success=v,g.getAgents=h,g.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:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};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),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.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},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.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:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.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:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.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","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,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.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:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.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","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.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,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.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"),"")}),g.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"),"")}),g.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"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.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){g.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()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],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,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.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("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],r.customDashboard.crudPermissions=r.crudPermissions,l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.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=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.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:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.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 o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.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){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId: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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var 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"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,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",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_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()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_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()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},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:[]},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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",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(){})},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,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(){})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===g.query.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(){}).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(){}).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.OUTGOING_CALL_STATUS_STYLES,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","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,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.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},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:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,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?e.rows:{},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","realtimeManager","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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.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"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),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.save"}];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.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),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.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.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];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.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,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,waitForTheAssignedQueue: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){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:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(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||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: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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}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.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:{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({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(){v(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=p,m.getWhatsappAccountInteractions=g,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,g()}}).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=v,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){v(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,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),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.whatsappQueue.save"}];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.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),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.whatsappQueue.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.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];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.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","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,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,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.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!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.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){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.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!r.hasPermission(101)}}),i.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!r.hasPermission(115)}}),i.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!l.cm||!r.hasPermission(102)}}),i.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!l.cm||!r.hasPermission(103)}}),i.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!l.dialer||!r.hasPermission(113)}}),i.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!l.voice||!r.hasPermission(110)}}),i.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!l.voice||!r.hasPermission(111)}}),i.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!l.voice||!r.hasPermission(104)}}),i.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!l.chat||!r.hasPermission(105)}}),i.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!l.mail||!r.hasPermission(106)}}),i.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!l.messaging||!r.hasPermission(107)}}),i.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!l.openchannel||!r.hasPermission(108)}}),i.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!l.fax||!r.hasPermission(109)}}),i.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!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],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.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(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.beepPlayer=null,m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){m.beepPlayer=document.getElementById("beep-player"),e.ToId===m.currentUser.id&&e.ToId!==e.FromId&&m.currentUser.messengerSoundNotification&&m.beepPlayer.play().catch(function(e){console.log(e.message)});if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.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))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],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(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",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,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();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 t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();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 r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.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"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(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:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=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(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.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.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return 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){C.error(e)})}function Q(e){var n=e;if(I.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})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.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"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.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"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.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},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.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()})})},I.unpause=function(){return f.user.unpause({id:I.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()})})},I.preview=function(n){return I.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"}):M(e,!1,n)}).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){I.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(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.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()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(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 G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.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"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=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","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",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=""!==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=["","","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","dialTimezone","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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896251872/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-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),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">\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"></angucomplete-alt>\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">\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-switch ng-model="vm.messengerSoundNotification" aria-label="EnableMessengerSoundNotification">\n                <span translate="TOOLBAR.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</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, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = 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(true)" 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">\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" 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" >\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" ng-change="ngChange()">\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-2" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 2)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview && !vm.config.crudPermissions.readOnly" 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 ng-if="vm.config.crudPermissions.canEdit === true">\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 ng-if="vm.config.crudPermissions.canDelete === true">\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 style="height: 60px !important; min-height: 60px !important" 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="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="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" 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="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" 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="md-hue-2" 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" 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 flex class="text-center grey-600-fg">\n        <a translate="FOOTER.COOKIE_LAW"target="_blank" href="https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896253188/Cookie+Policy" flex class="text-center grey-600-fg">We use cookies to give you the best experience. Read our cookie policy.</a>\n      </span>\n      </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" 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">\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 || vm.adSsoEnabled" 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\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.startTime">\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.endTime">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" 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>\n      <div class="error-list">\n        <div ng-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.chatWebsite.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\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.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_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              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" 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" 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/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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_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-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$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\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\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        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</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">{{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          <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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="TOOLS.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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 && additionalPhonesForm.$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                  </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">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\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="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\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\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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/import/importUpdates.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.UPDATE_EXISTING_CONTACTS">Update Existing 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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" 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  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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 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 ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\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                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\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                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\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>\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" ng-change="vm.recalcTZTime()" 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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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>\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\',false)" 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\',false)">\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\',false)">\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="agent-general-home-navbar md-primary-bg width-50">\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 class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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 class="home-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" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\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"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></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-120 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                  {{ \'VOICE.\' + (agent.status | uppercase) | translate | 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\' && agent.status !== \'unavailable\'" 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\' && agent.status !== \'unavailable\'" 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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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>\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 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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.faxAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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, account)" 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.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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 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">\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://xcally.atlassian.net/wiki/spaces/XMV/overview" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://xcally.atlassian.net/wiki/spaces/XMV/overview" 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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\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\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="true">\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\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\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        <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 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">\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="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | 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="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\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                <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\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="vm.dynamics365Account.modernAuthentication == false">\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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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 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">\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.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$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      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$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 ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'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      </div>\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        <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 MAIL ACCOUNT\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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  <div class="header md-accent-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.goToRealtime()" 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.addAgent(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) || (credentialsForm.$invalid) || (templateForm.$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\n  <div class="content">\n\n    <md-tabs 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.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</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                <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\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.mailAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</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" 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="MAIL.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 ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication 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.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$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 ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="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="credentialsForm[\'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            </form>\n          </div>\n\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                <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 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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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                <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 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                <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 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" 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                <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">\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              <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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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 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 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 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" 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">\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            </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 template 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.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\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="templateForm[\'fontFamily\'].$error" ng-show="templateForm[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="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'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            </form>\n          </div>\n\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\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\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" 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" 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</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\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-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</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="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header 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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\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 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="provider">{{ \'MAIL.SERVICE\' | 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" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td 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 md-cell class="description ">{{mailAccount.description}}</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                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email 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: \'{{\'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    </div>\n  </div>\n\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\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.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.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.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.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.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, account)" 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, account)" 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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/hopperdate/hopperdate.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" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\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\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\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\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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.dateTime" ng-change="vm.recalcTZTime()">\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.dateTime" ng-change="vm.recalcTZTime()">\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      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\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) || (additionalphonesForm.$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          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin 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              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></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 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">\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 md-order-by="name" class="bl">{{\'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.rows.length > 0">\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="campaign in vm.campaigns.rows">\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.campaigns.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_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 md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.openchannelAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n\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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/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 quick-filter-container">\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 = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'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="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.onSort">\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            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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' }}\" aria-label=\"Screen Recording\">\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=\"['pause', '*pause'].includes(agent.globalStatus)\">\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.onPaginate\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/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 ng-if="vm.voiceQueueType === \'inbound\'" 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.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-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="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.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 ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </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>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</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.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/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 }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-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">\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.formatTime(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.formatTime(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.formatTime(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.formatTime(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  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<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="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.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.showPredictiveInfo($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.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | 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>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\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 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\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-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.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\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.inUse - queue.talking - queue.pTalking }}</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) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | 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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.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" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\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.queues.count}}" md-on-paginate="vm.getQueues" 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.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 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">\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 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.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\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                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </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: \'{{\'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.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</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\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'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\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 ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <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/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret 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">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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        </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            <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          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval 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="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container filters 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.FILTERS">FILTERS</div>\n        </div>\n        <form name="filtersForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.filterFullName" aria-label="fullName"><span translate="SETTINGS.FILTER_FULLNAME">Full Name</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.FILTER_FULLNAME"></span></div>\n          </md-input-container>\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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_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">\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="1200" 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                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></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 ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </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 id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="1200"><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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="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\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\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\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</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.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\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.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.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[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\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>\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">\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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.smsAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue 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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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  \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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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.setting.filterFullName" 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        <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 ng-if="vm.setting.filterFullName" class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-pattern="/^[A-Za-z0-9\\ \\_\\-]+$/i" ng-required="true" autofocus>\n        <div class="hint"><span translate="STAFF.HELP.FILTERFULLNAME"></span></div>\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 ng-message="pattern">\n            <span translate="STAFF.ERRORS.FULLNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\ \\_\\-]+$/i\' }">Fullname must be valid pattern</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      <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      <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 class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\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    <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    <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) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\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 ng-if="!vm.setting.filterFullName" 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                <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 ng-if="vm.setting.filterFullName" class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-pattern="/^[A-Za-z0-9\\ \\_\\-]+$/i" ng-required="true" autofocus>\n                <div class="hint"><span translate="STAFF.HELP.FILTERFULLNAME"></span></div>\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 ng-message="pattern">\n                    <span translate="STAFF.ERRORS.FULLNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\ \\_\\-]+$/i\' }">Fullname must be valid pattern</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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\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              <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                <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                <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                <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                    <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          </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                <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                <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 ng-if="!vm.setting.filterFullName" class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input ng-readonly="vm.setting.filterFullName" type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\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\n              <md-input-container ng-if="vm.setting.filterFullName" class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-pattern="/^[A-Za-z0-9\\ \\_\\-\\<\\>\\x22]+$/i" ng-disabled="!vm.crudPermissions.canEdit">\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 ng-message="pattern">\n                    <span translate="STAFF.ERRORS.CALLERID_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\ \\_\\-\\<\\>\\x22]+$/i\' }">CallerId must be valid pattern</span>\n                  </div>\n                </div>\n               \n              </md-input-container>\n\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                <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                <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            </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                <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                <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                <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                <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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer 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.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\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                <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                <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            </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                <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                <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            </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                <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            </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                <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                <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                <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                <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                <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            </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.messengerSoundNotification" aria-label="EnableMessengerSoundNotification" \n                ng-if="vm.agent.allowmessenger">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</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            </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            </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              \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      <md-divider></md-divider>\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              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\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    <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    <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  </div>\n  \x3c!-- / HEADER --\x3e\n\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="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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="user-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></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              <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                <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                <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                <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                    <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          </div>\n          <div class="user-detail-form-container internal-chat 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.INTERNAL_MESSENGER">INTERNAL_MESSENGER</div>\n            </div>\n            <form name="internalChatForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.messengerSoundNotification" \n                aria-label="messengerSoundNotification" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MESSENGERSOUNDNOTIFICATION</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MESSENGERSOUNDNOTIFICATION"></span></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="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                <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                <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                <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.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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\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/users/users.html",'<div id="users" 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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-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-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.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.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" 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.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($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!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-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="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.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="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</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(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'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.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | 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.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$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.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'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">\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">\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>\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\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>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{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\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>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_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 == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{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>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_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 == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\n      <div class="error-list">\n        <div ng-repeat="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>\n      <div class="error-list">\n        <div ng-repeat="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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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_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 md-order-by="name">{{\'\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.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.whatsappAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\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" 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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-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-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" 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" 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" 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" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <audio id="beep-player" hidden src="/assets/ms-phonebar/sounds/beep.ogg"></audio>\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" 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" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></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" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\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.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" 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.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[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">\n          </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.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></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    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" 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.closeChat()" 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 ng-if="vm_ct.isLoading" 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 ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item 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\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" 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.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" 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-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\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    <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>\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" 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" 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 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>\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()">\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/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" 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.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" registered="vm.isWebRTCBarRegistered" 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.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\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 badge-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    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\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>\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\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\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-if="!vm.isRecallNotification" 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-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index ea80406..e8708bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba06=['bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','VIRTUAL','action','STRING','contactManager','integration','motionbar','jscripty','browser'];(function(_0x1fbe21,_0x376aac){var _0x15346c=function(_0x4fcec9){while(--_0x4fcec9){_0x1fbe21['push'](_0x1fbe21['shift']());}};_0x15346c(++_0x376aac);}(_0xba06,0xcf));var _0x6ba0=function(_0x489b87,_0xd51c93){_0x489b87=_0x489b87-0x0;var _0x1823b6=_0xba06[_0x489b87];return _0x1823b6;};'use strict';var Sequelize=require(_0x6ba0('0x0'));module['exports']={'name':{'type':Sequelize[_0x6ba0('0x1')],'get':function(_0x1b123a){return this['getDataValue'](_0x6ba0('0x2'));}},'action':{'type':Sequelize[_0x6ba0('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x6ba0('0x4'),_0x6ba0('0x5'),_0x6ba0('0x6'),_0x6ba0('0x7'),'urlForward',_0x6ba0('0x8'),_0x6ba0('0x9'),'script']],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0x6ba0('0xa')},'data1':{'type':Sequelize[_0x6ba0('0x3')](0x1000),'comment':_0x6ba0('0xb')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x6ba0('0xc')},'data3':{'type':Sequelize[_0x6ba0('0x3')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize[_0x6ba0('0x3')](0x1000),'comments':_0x6ba0('0xd')},'data5':{'type':Sequelize[_0x6ba0('0x3')](0x1000),'comments':_0x6ba0('0xe')},'data6':{'type':Sequelize[_0x6ba0('0x3')],'comments':_0x6ba0('0xf')},'data7':{'type':Sequelize[_0x6ba0('0x10')],'comments':_0x6ba0('0x11')}};
\ No newline at end of file
+var _0xcb5c=['sequelize','VIRTUAL','getDataValue','action','contactManager','motionbar','jscripty','urlForward','browser','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[body]'];(function(_0x25a748,_0x3e95f9){var _0x56062e=function(_0x3122ba){while(--_0x3122ba){_0x25a748['push'](_0x25a748['shift']());}};_0x56062e(++_0x3e95f9);}(_0xcb5c,0x96));var _0xccb5=function(_0x35d9d0,_0x853802){_0x35d9d0=_0x35d9d0-0x0;var _0x38bd09=_0xcb5c[_0x35d9d0];return _0x38bd09;};'use strict';var Sequelize=require(_0xccb5('0x0'));module['exports']={'name':{'type':Sequelize[_0xccb5('0x1')],'get':function(_0x2f0c85){return this[_0xccb5('0x2')](_0xccb5('0x3'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0xccb5('0x4'),'integration',_0xccb5('0x5'),_0xccb5('0x6'),_0xccb5('0x7'),_0xccb5('0x8'),'bot',_0xccb5('0x9')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xccb5('0xa')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':'jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'},'data2':{'type':Sequelize[_0xccb5('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[_0xccb5('0xb')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize[_0xccb5('0xb')](0x1000),'comments':_0xccb5('0xc')},'data5':{'type':Sequelize[_0xccb5('0xb')](0x1000),'comments':_0xccb5('0xd')},'data6':{'type':Sequelize[_0xccb5('0xb')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize['TEXT'],'comments':_0xccb5('0xe')}};
\ No newline at end of file
index 1ec1a8f..40ad8dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b4a=['find','params','catch','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','name','body','Action'];(function(_0x9cd26b,_0x425d02){var _0x5094cb=function(_0x436898){while(--_0x436898){_0x9cd26b['push'](_0x9cd26b['shift']());}};_0x5094cb(++_0x425d02);}(_0x9b4a,0x129));var _0xa9b4=function(_0x24142b,_0x2b8a50){_0x24142b=_0x24142b-0x0;var _0x279525=_0x9b4a[_0x24142b];return _0x279525;};'use strict';var emlformat=require(_0xa9b4('0x0'));var rimraf=require(_0xa9b4('0x1'));var zipdir=require(_0xa9b4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa9b4('0x3'));var BPromise=require(_0xa9b4('0x4'));var Mustache=require(_0xa9b4('0x5'));var util=require('util');var path=require(_0xa9b4('0x6'));var sox=require(_0xa9b4('0x7'));var csv=require(_0xa9b4('0x8'));var ejs=require(_0xa9b4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa9b4('0xa'));var squel=require('squel');var crypto=require(_0xa9b4('0xb'));var jsforce=require(_0xa9b4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa9b4('0x8'));var querystring=require('querystring');var Papa=require(_0xa9b4('0xd'));var Redis=require(_0xa9b4('0xe'));var authService=require(_0xa9b4('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa9b4('0x10'));var logger=require('../../config/logger')(_0xa9b4('0x11'));var utils=require(_0xa9b4('0x12'));var config=require(_0xa9b4('0x13'));var licenseUtil=require(_0xa9b4('0x14'));var db=require(_0xa9b4('0x15'))['db'];function respondWithStatusCode(_0x5c85aa,_0x53360e){_0x53360e=_0x53360e||0xcc;return function(_0x25b759){if(_0x25b759){return _0x5c85aa['sendStatus'](_0x53360e);}return _0x5c85aa[_0xa9b4('0x16')](_0x53360e)[_0xa9b4('0x17')]();};}function respondWithResult(_0x2e23dd,_0x3f2d51){_0x3f2d51=_0x3f2d51||0xc8;return function(_0x1b8794){if(_0x1b8794){return _0x2e23dd[_0xa9b4('0x16')](_0x3f2d51)[_0xa9b4('0x18')](_0x1b8794);}};}function respondWithFilteredResult(_0x1ea928,_0x4b591b){return function(_0x561e02){if(_0x561e02){var _0x353099=typeof _0x4b591b[_0xa9b4('0x19')]===_0xa9b4('0x1a')&&typeof _0x4b591b[_0xa9b4('0x1b')]==='undefined';var _0x2f8cde=_0x561e02[_0xa9b4('0x1c')];var _0x4b186f=_0x353099?0x0:_0x4b591b['offset'];var _0x563301=_0x353099?_0x561e02[_0xa9b4('0x1c')]:_0x4b591b[_0xa9b4('0x19')]+_0x4b591b[_0xa9b4('0x1b')];var _0x466c68;if(_0x563301>=_0x2f8cde){_0x563301=_0x2f8cde;_0x466c68=0xc8;}else{_0x466c68=0xce;}_0x1ea928['status'](_0x466c68);return _0x1ea928[_0xa9b4('0x1d')]('Content-Range',_0x4b186f+'-'+_0x563301+'/'+_0x2f8cde)['json'](_0x561e02);}return null;};}function patchUpdates(_0x26e8e2){return function(_0x12d5ee){try{jsonpatch[_0xa9b4('0x1e')](_0x12d5ee,_0x26e8e2,!![]);}catch(_0x34d916){return BPromise[_0xa9b4('0x1f')](_0x34d916);}return _0x12d5ee[_0xa9b4('0x20')]();};}function saveUpdates(_0x6681c,_0x454ad4){return function(_0x573d4f){if(_0x573d4f){return _0x573d4f[_0xa9b4('0x21')](_0x6681c)[_0xa9b4('0x22')](function(_0x19bf13){return _0x19bf13;});}return null;};}function removeEntity(_0x45a349,_0x96790a){return function(_0x72059a){if(_0x72059a){return _0x72059a[_0xa9b4('0x23')]()[_0xa9b4('0x22')](function(){_0x45a349['status'](0xcc)[_0xa9b4('0x17')]();});}};}function handleEntityNotFound(_0xb82b80,_0x404f01){return function(_0x4001f7){if(!_0x4001f7){_0xb82b80['sendStatus'](0x194);}return _0x4001f7;};}function handleError(_0x3e7c50,_0xc193ff){_0xc193ff=_0xc193ff||0x1f4;return function(_0x4c9bff){logger['error'](_0x4c9bff['stack']);if(_0x4c9bff[_0xa9b4('0x24')]){delete _0x4c9bff[_0xa9b4('0x24')];}_0x3e7c50[_0xa9b4('0x16')](_0xc193ff)['send'](_0x4c9bff);};}exports['update']=function(_0x13cc88,_0x37af72){if(_0x13cc88['body']['id']){delete _0x13cc88[_0xa9b4('0x25')]['id'];}return db[_0xa9b4('0x26')][_0xa9b4('0x27')]({'where':{'id':_0x13cc88[_0xa9b4('0x28')]['id']}})[_0xa9b4('0x22')](handleEntityNotFound(_0x37af72,null))[_0xa9b4('0x22')](saveUpdates(_0x13cc88[_0xa9b4('0x25')],null))[_0xa9b4('0x22')](respondWithResult(_0x37af72,null))[_0xa9b4('0x29')](handleError(_0x37af72,null));};exports[_0xa9b4('0x23')]=function(_0x36d868,_0x5212f8){return db['Action'][_0xa9b4('0x27')]({'where':{'id':_0x36d868['params']['id']}})[_0xa9b4('0x22')](handleEntityNotFound(_0x5212f8,null))[_0xa9b4('0x22')](removeEntity(_0x5212f8,null))[_0xa9b4('0x29')](handleError(_0x5212f8,null));};
\ No newline at end of file
+var _0xcee7=['destroy','Action','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','then','name','send','body','find'];(function(_0x3e3e50,_0x39e28c){var _0x5eb609=function(_0x22d896){while(--_0x22d896){_0x3e3e50['push'](_0x3e3e50['shift']());}};_0x5eb609(++_0x39e28c);}(_0xcee7,0xe0));var _0x7cee=function(_0x22f2de,_0x3a8dae){_0x22f2de=_0x22f2de-0x0;var _0x1aaece=_0xcee7[_0x22f2de];return _0x1aaece;};'use strict';var emlformat=require(_0x7cee('0x0'));var rimraf=require(_0x7cee('0x1'));var zipdir=require(_0x7cee('0x2'));var jsonpatch=require(_0x7cee('0x3'));var rp=require(_0x7cee('0x4'));var moment=require(_0x7cee('0x5'));var BPromise=require(_0x7cee('0x6'));var Mustache=require('mustache');var util=require(_0x7cee('0x7'));var path=require(_0x7cee('0x8'));var sox=require('sox');var csv=require(_0x7cee('0x9'));var ejs=require(_0x7cee('0xa'));var fs=require('fs');var fs_extra=require(_0x7cee('0xb'));var _=require(_0x7cee('0xc'));var squel=require('squel');var crypto=require(_0x7cee('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7cee('0xe'));var toCsv=require(_0x7cee('0x9'));var querystring=require(_0x7cee('0xf'));var Papa=require(_0x7cee('0x10'));var Redis=require(_0x7cee('0x11'));var authService=require(_0x7cee('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x7cee('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7cee('0x14'))(_0x7cee('0x15'));var utils=require(_0x7cee('0x16'));var config=require(_0x7cee('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x7cee('0x18'))['db'];function respondWithStatusCode(_0x94b073,_0x44c762){_0x44c762=_0x44c762||0xcc;return function(_0xcf6773){if(_0xcf6773){return _0x94b073[_0x7cee('0x19')](_0x44c762);}return _0x94b073['status'](_0x44c762)[_0x7cee('0x1a')]();};}function respondWithResult(_0x4d4202,_0x454d4e){_0x454d4e=_0x454d4e||0xc8;return function(_0x457026){if(_0x457026){return _0x4d4202[_0x7cee('0x1b')](_0x454d4e)['json'](_0x457026);}};}function respondWithFilteredResult(_0x423ef5,_0x2f9ff8){return function(_0x3751a4){if(_0x3751a4){var _0x439715=typeof _0x2f9ff8[_0x7cee('0x1c')]===_0x7cee('0x1d')&&typeof _0x2f9ff8[_0x7cee('0x1e')]===_0x7cee('0x1d');var _0xda68cf=_0x3751a4[_0x7cee('0x1f')];var _0x4a2ab3=_0x439715?0x0:_0x2f9ff8[_0x7cee('0x1c')];var _0x22fbc4=_0x439715?_0x3751a4[_0x7cee('0x1f')]:_0x2f9ff8[_0x7cee('0x1c')]+_0x2f9ff8['limit'];var _0x5ecaf1;if(_0x22fbc4>=_0xda68cf){_0x22fbc4=_0xda68cf;_0x5ecaf1=0xc8;}else{_0x5ecaf1=0xce;}_0x423ef5[_0x7cee('0x1b')](_0x5ecaf1);return _0x423ef5[_0x7cee('0x20')](_0x7cee('0x21'),_0x4a2ab3+'-'+_0x22fbc4+'/'+_0xda68cf)['json'](_0x3751a4);}return null;};}function patchUpdates(_0x4c68e6){return function(_0x4b2df0){try{jsonpatch[_0x7cee('0x22')](_0x4b2df0,_0x4c68e6,!![]);}catch(_0x48986e){return BPromise['reject'](_0x48986e);}return _0x4b2df0['save']();};}function saveUpdates(_0x75cfe6,_0x56279e){return function(_0x37dbcd){if(_0x37dbcd){return _0x37dbcd['update'](_0x75cfe6)[_0x7cee('0x23')](function(_0xf7d9a5){return _0xf7d9a5;});}return null;};}function removeEntity(_0x17e6c1,_0x1cf3b4){return function(_0x5559d4){if(_0x5559d4){return _0x5559d4['destroy']()[_0x7cee('0x23')](function(){_0x17e6c1[_0x7cee('0x1b')](0xcc)[_0x7cee('0x1a')]();});}};}function handleEntityNotFound(_0x4cf3cd,_0x10371c){return function(_0x14b819){if(!_0x14b819){_0x4cf3cd['sendStatus'](0x194);}return _0x14b819;};}function handleError(_0x59656a,_0x3556ee){_0x3556ee=_0x3556ee||0x1f4;return function(_0x49dbf9){logger['error'](_0x49dbf9['stack']);if(_0x49dbf9[_0x7cee('0x24')]){delete _0x49dbf9[_0x7cee('0x24')];}_0x59656a[_0x7cee('0x1b')](_0x3556ee)[_0x7cee('0x25')](_0x49dbf9);};}exports['update']=function(_0x281638,_0x140459){if(_0x281638[_0x7cee('0x26')]['id']){delete _0x281638[_0x7cee('0x26')]['id'];}return db['Action'][_0x7cee('0x27')]({'where':{'id':_0x281638['params']['id']}})[_0x7cee('0x23')](handleEntityNotFound(_0x140459,null))[_0x7cee('0x23')](saveUpdates(_0x281638[_0x7cee('0x26')],null))['then'](respondWithResult(_0x140459,null))['catch'](handleError(_0x140459,null));};exports[_0x7cee('0x28')]=function(_0x47be14,_0x93b87){return db[_0x7cee('0x29')][_0x7cee('0x27')]({'where':{'id':_0x47be14[_0x7cee('0x2a')]['id']}})['then'](handleEntityNotFound(_0x93b87,null))[_0x7cee('0x23')](removeEntity(_0x93b87,null))[_0x7cee('0x2b')](handleError(_0x93b87,null));};
\ No newline at end of file
index d08138c..a9f3b8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ee=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Action','tools_actions'];(function(_0x447ef1,_0x374cd2){var _0x3d72ec=function(_0x3e10b){while(--_0x3e10b){_0x447ef1['push'](_0x447ef1['shift']());}};_0x3d72ec(++_0x374cd2);}(_0xf2ee,0x16c));var _0xef2e=function(_0x4345b3,_0x2e0372){_0x4345b3=_0x4345b3-0x0;var _0x2f88fc=_0xf2ee[_0x4345b3];return _0x2f88fc;};'use strict';var _=require(_0xef2e('0x0'));var util=require('util');var logger=require(_0xef2e('0x1'))(_0xef2e('0x2'));var moment=require(_0xef2e('0x3'));var BPromise=require(_0xef2e('0x4'));var rp=require(_0xef2e('0x5'));var fs=require('fs');var path=require(_0xef2e('0x6'));var rimraf=require(_0xef2e('0x7'));var config=require(_0xef2e('0x8'));var attributes=require('./action.attributes');module[_0xef2e('0x9')]=function(_0x3760d9,_0x8ccb24){return _0x3760d9[_0xef2e('0xa')](_0xef2e('0xb'),attributes,{'tableName':_0xef2e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x711c=['moment','bluebird','request-promise','path','exports','define','Action','tools_actions','lodash','util','../../config/logger','api'];(function(_0xbf1132,_0x176b34){var _0xe63ce4=function(_0x52d8ed){while(--_0x52d8ed){_0xbf1132['push'](_0xbf1132['shift']());}};_0xe63ce4(++_0x176b34);}(_0x711c,0x74));var _0xc711=function(_0x3c8cef,_0x484465){_0x3c8cef=_0x3c8cef-0x0;var _0x28e391=_0x711c[_0x3c8cef];return _0x28e391;};'use strict';var _=require(_0xc711('0x0'));var util=require(_0xc711('0x1'));var logger=require(_0xc711('0x2'))(_0xc711('0x3'));var moment=require(_0xc711('0x4'));var BPromise=require(_0xc711('0x5'));var rp=require(_0xc711('0x6'));var fs=require('fs');var path=require(_0xc711('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./action.attributes');module[_0xc711('0x8')]=function(_0x49d4c2,_0x4b615b){return _0x49d4c2[_0xc711('0x9')](_0xc711('0xa'),attributes,{'tableName':_0xc711('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd6bcf2..b2967be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x3a83e7,_0x79e765){var _0x5b276a=function(_0x2dae54){while(--_0x2dae54){_0x3a83e7['push'](_0x3a83e7['shift']());}};_0x5b276a(++_0x79e765);}(_0x5fc3,0xa8));var _0x35fc=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0x5fc3[_0x485b5a];return _0xd2b34d;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Action,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Action,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Action,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}
\ No newline at end of file
+var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x59cac7,_0x19b79b){var _0xb08b5b=function(_0x5292a1){while(--_0x5292a1){_0x59cac7['push'](_0x59cac7['shift']());}};_0xb08b5b(++_0x19b79b);}(_0xabce,0x103));var _0xeabc=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xabce[_0x5b644e];return _0x49c6bf;};'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')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
index eb7ec17..a8e8976 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8ad=['isAuthenticated','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa8ad,0x164));var _0xda8a=function(_0x4a0987,_0x3971d0){_0x4a0987=_0x4a0987-0x0;var _0x129f7f=_0xa8ad[_0x4a0987];return _0x129f7f;};'use strict';var multer=require(_0xda8a('0x0'));var util=require(_0xda8a('0x1'));var path=require(_0xda8a('0x2'));var timeout=require(_0xda8a('0x3'));var express=require('express');var router=express[_0xda8a('0x4')]();var fs_extra=require(_0xda8a('0x5'));var auth=require(_0xda8a('0x6'));var interaction=require(_0xda8a('0x7'));var config=require(_0xda8a('0x8'));var controller=require(_0xda8a('0x9'));router[_0xda8a('0xa')](_0xda8a('0xb'),auth[_0xda8a('0xc')](),controller[_0xda8a('0xd')]);router[_0xda8a('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xda8a('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xbeca=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','isAuthenticated','delete','/:id','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x150397,_0x258581){var _0x5cadab=function(_0x3052d6){while(--_0x3052d6){_0x150397['push'](_0x150397['shift']());}};_0x5cadab(++_0x258581);}(_0xbeca,0x15a));var _0xabec=function(_0x578062,_0x2858e9){_0x578062=_0x578062-0x0;var _0x2ba7f5=_0xbeca[_0x578062];return _0x2ba7f5;};'use strict';var multer=require(_0xabec('0x0'));var util=require(_0xabec('0x1'));var path=require(_0xabec('0x2'));var timeout=require(_0xabec('0x3'));var express=require(_0xabec('0x4'));var router=express[_0xabec('0x5')]();var fs_extra=require(_0xabec('0x6'));var auth=require(_0xabec('0x7'));var interaction=require(_0xabec('0x8'));var config=require(_0xabec('0x9'));var controller=require(_0xabec('0xa'));router[_0xabec('0xb')]('/:id',auth[_0xabec('0xc')](),controller['update']);router[_0xabec('0xd')](_0xabec('0xe'),auth[_0xabec('0xc')](),controller['destroy']);module[_0xabec('0xf')]=router;
\ No newline at end of file
index 4d98e80..308b52a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dfd=['STRING','TEXT','sequelize','exports'];(function(_0x275c32,_0x59aa03){var _0x5639ff=function(_0x781bfa){while(--_0x781bfa){_0x275c32['push'](_0x275c32['shift']());}};_0x5639ff(++_0x59aa03);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd7df('0x0'));module[_0xd7df('0x1')]={'name':{'type':Sequelize[_0xd7df('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xd7df('0x2')]},'parent':{'type':Sequelize[_0xd7df('0x2')]},'table':{'type':Sequelize[_0xd7df('0x2')]},'conditions':{'type':Sequelize[_0xd7df('0x3')]},'joins':{'type':Sequelize[_0xd7df('0x3')]}};
\ No newline at end of file
+var _0xeec6=['STRING','TEXT','sequelize','exports'];(function(_0x31db86,_0x2711db){var _0x244998=function(_0xaf3dde){while(--_0xaf3dde){_0x31db86['push'](_0x31db86['shift']());}};_0x244998(++_0x2711db);}(_0xeec6,0x1c2));var _0x6eec=function(_0x2389bc,_0x167cd2){_0x2389bc=_0x2389bc-0x0;var _0x170548=_0xeec6[_0x2389bc];return _0x170548;};'use strict';var Sequelize=require(_0x6eec('0x0'));module[_0x6eec('0x1')]={'name':{'type':Sequelize[_0x6eec('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x6eec('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0x6eec('0x2')]},'conditions':{'type':Sequelize[_0x6eec('0x3')]},'joins':{'type':Sequelize[_0x6eec('0x3')]}};
\ No newline at end of file
index 0449ed3..5f73666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a40=['right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','format','replace','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','operator','web','fullPath','%s-%s.%s','randomstring','generate','csv','custom','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','fork','../../components/export/','output','../../files/reports','savename','countTable','COUNT(*)','run','DATE(%s)','HOUR(%s)','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','get','CustomReports','error','name','send','index','map','AnalyticCustomReport','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','keys','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0x7a40,0x197));var _0x07a4=function(_0x3cbf03,_0x2b2281){_0x3cbf03=_0x3cbf03-0x0;var _0x39b6e6=_0x7a40[_0x3cbf03];return _0x39b6e6;};'use strict';var emlformat=require(_0x07a4('0x0'));var rimraf=require(_0x07a4('0x1'));var zipdir=require(_0x07a4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x07a4('0x3'));var moment=require(_0x07a4('0x4'));var BPromise=require(_0x07a4('0x5'));var Mustache=require(_0x07a4('0x6'));var util=require(_0x07a4('0x7'));var path=require('path');var sox=require(_0x07a4('0x8'));var csv=require(_0x07a4('0x9'));var ejs=require(_0x07a4('0xa'));var fs=require('fs');var fs_extra=require(_0x07a4('0xb'));var _=require(_0x07a4('0xc'));var squel=require('squel');var crypto=require(_0x07a4('0xd'));var jsforce=require(_0x07a4('0xe'));var deskjs=require(_0x07a4('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x07a4('0x10'));var Redis=require(_0x07a4('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x07a4('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x07a4('0x13'))('api');var utils=require(_0x07a4('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x07a4('0x15'));var db=require(_0x07a4('0x16'))['db'];var dbH=require(_0x07a4('0x16'))[_0x07a4('0x17')];function respondWithStatusCode(_0x5210ff,_0x6d3696){_0x6d3696=_0x6d3696||0xcc;return function(_0x30a6b9){if(_0x30a6b9){return _0x5210ff[_0x07a4('0x18')](_0x6d3696);}return _0x5210ff['status'](_0x6d3696)[_0x07a4('0x19')]();};}function respondWithResult(_0x4c1893,_0x2af9c7){_0x2af9c7=_0x2af9c7||0xc8;return function(_0x12c70c){if(_0x12c70c){return _0x4c1893[_0x07a4('0x1a')](_0x2af9c7)[_0x07a4('0x1b')](_0x12c70c);}};}function respondWithFilteredResult(_0x3a2b26,_0x97372b){return function(_0x2c5481){if(_0x2c5481){var _0x42443d=typeof _0x97372b['offset']===_0x07a4('0x1c')&&typeof _0x97372b[_0x07a4('0x1d')]===_0x07a4('0x1c');var _0xe8294b=_0x2c5481[_0x07a4('0x1e')];var _0x568b0a=_0x42443d?0x0:_0x97372b[_0x07a4('0x1f')];var _0x4fea35=_0x42443d?_0x2c5481['count']:_0x97372b['offset']+_0x97372b[_0x07a4('0x1d')];var _0x1f4bf0;if(_0x4fea35>=_0xe8294b){_0x4fea35=_0xe8294b;_0x1f4bf0=0xc8;}else{_0x1f4bf0=0xce;}_0x3a2b26[_0x07a4('0x1a')](_0x1f4bf0);return _0x3a2b26['set'](_0x07a4('0x20'),_0x568b0a+'-'+_0x4fea35+'/'+_0xe8294b)[_0x07a4('0x1b')](_0x2c5481);}return null;};}function patchUpdates(_0x1090e9){return function(_0x26fa10){try{jsonpatch[_0x07a4('0x21')](_0x26fa10,_0x1090e9,!![]);}catch(_0x162367){return BPromise[_0x07a4('0x22')](_0x162367);}return _0x26fa10[_0x07a4('0x23')]();};}function saveUpdates(_0xdea92f,_0x4d06b1){return function(_0x88055e){if(_0x88055e){return _0x88055e['update'](_0xdea92f)['then'](function(_0x13d1ee){return _0x13d1ee;});}return null;};}function removeEntity(_0x36760b,_0x34b133){return function(_0x4bb70f){if(_0x4bb70f){return _0x4bb70f[_0x07a4('0x24')]()[_0x07a4('0x25')](function(){var _0x2232d4=_0x4bb70f[_0x07a4('0x26')]({'plain':!![]});var _0x517ae2=_0x07a4('0x27');return db['UserProfileResource'][_0x07a4('0x24')]({'where':{'type':_0x517ae2,'resourceId':_0x2232d4['id']}})[_0x07a4('0x25')](function(){return _0x4bb70f;});})[_0x07a4('0x25')](function(){_0x36760b['status'](0xcc)[_0x07a4('0x19')]();});}};}function handleEntityNotFound(_0x5db079,_0x8718e0){return function(_0x52e6e2){if(!_0x52e6e2){_0x5db079['sendStatus'](0x194);}return _0x52e6e2;};}function handleError(_0x5593b9,_0x11e048){_0x11e048=_0x11e048||0x1f4;return function(_0x425802){logger[_0x07a4('0x28')](_0x425802['stack']);if(_0x425802[_0x07a4('0x29')]){delete _0x425802['name'];}_0x5593b9[_0x07a4('0x1a')](_0x11e048)[_0x07a4('0x2a')](_0x425802);};}exports[_0x07a4('0x2b')]=function(_0x4cca1d,_0x173851){var _0x4d9308={},_0x506e45={},_0x5d3505={'count':0x0,'rows':[]};var _0x214541=_[_0x07a4('0x2c')](db[_0x07a4('0x2d')]['rawAttributes'],function(_0x53a517){return{'name':_0x53a517[_0x07a4('0x2e')],'type':_0x53a517[_0x07a4('0x2f')][_0x07a4('0x30')]};});_0x506e45[_0x07a4('0x31')]=_[_0x07a4('0x2c')](_0x214541,'name');_0x506e45[_0x07a4('0x32')]=_['keys'](_0x4cca1d[_0x07a4('0x32')]);_0x506e45[_0x07a4('0x33')]=_[_0x07a4('0x34')](_0x506e45[_0x07a4('0x31')],_0x506e45[_0x07a4('0x32')]);_0x4d9308[_0x07a4('0x35')]=_['intersection'](_0x506e45['model'],qs['fields'](_0x4cca1d[_0x07a4('0x32')][_0x07a4('0x36')]));_0x4d9308['attributes']=_0x4d9308[_0x07a4('0x35')][_0x07a4('0x37')]?_0x4d9308[_0x07a4('0x35')]:_0x506e45['model'];if(!_0x4cca1d[_0x07a4('0x32')][_0x07a4('0x38')](_0x07a4('0x39'))){_0x4d9308['limit']=qs[_0x07a4('0x1d')](_0x4cca1d['query'][_0x07a4('0x1d')]);_0x4d9308[_0x07a4('0x1f')]=qs[_0x07a4('0x1f')](_0x4cca1d[_0x07a4('0x32')][_0x07a4('0x1f')]);}_0x4d9308[_0x07a4('0x3a')]=qs[_0x07a4('0x3b')](_0x4cca1d[_0x07a4('0x32')]['sort']);_0x4d9308[_0x07a4('0x3c')]=qs['filters'](_[_0x07a4('0x3d')](_0x4cca1d[_0x07a4('0x32')],_0x506e45[_0x07a4('0x33')]),_0x214541);if(_0x4cca1d[_0x07a4('0x32')][_0x07a4('0x3e')]){_0x4d9308[_0x07a4('0x3c')]=_['merge'](_0x4d9308['where'],{'$or':_[_0x07a4('0x2c')](_0x214541,function(_0x16000a){if(_0x16000a['type']!==_0x07a4('0x3f')){var _0x23b6e8={};_0x23b6e8[_0x16000a[_0x07a4('0x29')]]={'$like':'%'+_0x4cca1d['query'][_0x07a4('0x3e')]+'%'};return _0x23b6e8;}})});}_0x4d9308=_[_0x07a4('0x40')]({},_0x4d9308,_0x4cca1d[_0x07a4('0x41')]);var _0xbeb65c={'where':_0x4d9308[_0x07a4('0x3c')]};return db[_0x07a4('0x2d')][_0x07a4('0x1e')](_0xbeb65c)[_0x07a4('0x25')](function(_0x29aa82){_0x5d3505[_0x07a4('0x1e')]=_0x29aa82;if(_0x4cca1d[_0x07a4('0x32')][_0x07a4('0x42')]){_0x4d9308[_0x07a4('0x43')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0x07a4('0x44')](_0x4d9308);})[_0x07a4('0x25')](function(_0x11288b){_0x5d3505['rows']=_0x11288b;return _0x5d3505;})['then'](respondWithFilteredResult(_0x173851,_0x4d9308))[_0x07a4('0x45')](handleError(_0x173851,null));};exports[_0x07a4('0x46')]=function(_0x106f6d,_0x297c1e){var _0x3620c7={'raw':![],'where':{'id':_0x106f6d['params']['id']}},_0x21a709={};_0x21a709[_0x07a4('0x31')]=_[_0x07a4('0x47')](db['AnalyticCustomReport'][_0x07a4('0x48')]);_0x21a709['query']=_[_0x07a4('0x47')](_0x106f6d[_0x07a4('0x32')]);_0x21a709[_0x07a4('0x33')]=_[_0x07a4('0x34')](_0x21a709[_0x07a4('0x31')],_0x21a709[_0x07a4('0x32')]);_0x3620c7['attributes']=_[_0x07a4('0x34')](_0x21a709[_0x07a4('0x31')],qs['fields'](_0x106f6d[_0x07a4('0x32')][_0x07a4('0x36')]));_0x3620c7[_0x07a4('0x35')]=_0x3620c7[_0x07a4('0x35')]['length']?_0x3620c7[_0x07a4('0x35')]:_0x21a709[_0x07a4('0x31')];if(_0x106f6d[_0x07a4('0x32')][_0x07a4('0x42')]){_0x3620c7[_0x07a4('0x43')]=[{'all':!![]}];}_0x3620c7=_[_0x07a4('0x40')]({},_0x3620c7,_0x106f6d[_0x07a4('0x41')]);return db['AnalyticCustomReport']['find'](_0x3620c7)['then'](handleEntityNotFound(_0x297c1e,null))['then'](respondWithResult(_0x297c1e,null))[_0x07a4('0x45')](handleError(_0x297c1e,null));};exports['create']=function(_0x3d5d02,_0x55f8dd){return db[_0x07a4('0x2d')][_0x07a4('0x49')](_0x3d5d02[_0x07a4('0x4a')],{})[_0x07a4('0x25')](function(_0x342c8c){var _0x421e5f=_0x3d5d02[_0x07a4('0x4b')]['get']({'plain':!![]});if(!_0x421e5f)throw new Error(_0x07a4('0x4c'));if(_0x421e5f[_0x07a4('0x4d')]==='user'){var _0x391185=_0x342c8c[_0x07a4('0x26')]({'plain':!![]});var _0x369a8b=_0x07a4('0x4e');return db[_0x07a4('0x4f')][_0x07a4('0x50')]({'where':{'name':_0x369a8b,'userProfileId':_0x421e5f[_0x07a4('0x51')]},'raw':!![]})['then'](function(_0x360f98){if(_0x360f98&&_0x360f98['autoAssociation']===0x0){return db[_0x07a4('0x52')][_0x07a4('0x49')]({'name':_0x391185[_0x07a4('0x29')],'resourceId':_0x391185['id'],'type':'CustomReports','sectionId':_0x360f98['id']},{})[_0x07a4('0x25')](function(){return _0x342c8c;});}else{return _0x342c8c;}})[_0x07a4('0x45')](function(_0x595a27){logger[_0x07a4('0x28')](_0x07a4('0x53'),_0x595a27);throw _0x595a27;});}return _0x342c8c;})[_0x07a4('0x25')](respondWithResult(_0x55f8dd,0xc9))[_0x07a4('0x45')](handleError(_0x55f8dd,null));};exports['update']=function(_0x4d392f,_0x33d33b){if(_0x4d392f[_0x07a4('0x4a')]['id']){delete _0x4d392f[_0x07a4('0x4a')]['id'];}return db[_0x07a4('0x2d')]['find']({'where':{'id':_0x4d392f[_0x07a4('0x54')]['id']}})[_0x07a4('0x25')](handleEntityNotFound(_0x33d33b,null))[_0x07a4('0x25')](saveUpdates(_0x4d392f[_0x07a4('0x4a')],null))[_0x07a4('0x25')](respondWithResult(_0x33d33b,null))[_0x07a4('0x45')](handleError(_0x33d33b,null));};exports[_0x07a4('0x24')]=function(_0x4f2aab,_0x449643){return db[_0x07a4('0x2d')][_0x07a4('0x50')]({'where':{'id':_0x4f2aab['params']['id']}})[_0x07a4('0x25')](handleEntityNotFound(_0x449643,null))[_0x07a4('0x25')](removeEntity(_0x449643,null))['catch'](handleError(_0x449643,null));};exports[_0x07a4('0x55')]=function(_0x4d73a5,_0x4ab8d5){var _0x57970a=0xa;var _0x3d744c=[_0x07a4('0x56'),_0x07a4('0x57'),_0x07a4('0x58'),_0x07a4('0x59')];var _0x305636={'SUM':_0x07a4('0x5a'),'COUNT':_0x07a4('0x5b'),'COUNT DISTINCT':_0x07a4('0x5c'),'MAX':_0x07a4('0x5d'),'MIN':_0x07a4('0x5e'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x07a4('0x5f'),'GROUP_CONCAT ASC':_0x07a4('0x60'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x59178f={'SEC_TO_TIME':_0x07a4('0x61'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x800cb7=function(_0x1653a5){return!_[_0x07a4('0x62')](['IS\x20NULL',_0x07a4('0x63'),_0x07a4('0x64'),'IS\x20NOT\x20EMPTY'],_0x1653a5);};var _0x86c34f=function(_0x264836){if(!_0x264836||!_0x264836[_0x07a4('0x65')][_0x07a4('0x37')]){return'';}for(var _0x539462='(',_0x2a7260=0x0;_0x2a7260<_0x264836[_0x07a4('0x65')]['length'];_0x2a7260+=0x1){_0x2a7260>0x0&&(_0x539462+='\x20'+_0x264836['operator']+'\x20');_0x539462+=_0x264836[_0x07a4('0x65')][_0x2a7260][_0x07a4('0x66')]?_0x86c34f(_0x264836[_0x07a4('0x65')][_0x2a7260][_0x07a4('0x66')]):_0x264836[_0x07a4('0x65')][_0x2a7260][_0x07a4('0x67')]+'\x20'+_0x264836[_0x07a4('0x65')][_0x2a7260][_0x07a4('0x68')]+(_0x800cb7(_0x264836[_0x07a4('0x65')][_0x2a7260][_0x07a4('0x68')])?'\x20'+_0x264836[_0x07a4('0x65')][_0x2a7260][_0x07a4('0x69')]:'');}return _0x539462+')';};var _0x549281={'where':{'id':_0x4d73a5['params']['id']}},_0xe58db5,_0x32df51,_0x5719b5,_0x484b4b,_0x291ee5;_0x549281=_['merge']({},_0x549281,_0x4d73a5['options']);return db[_0x07a4('0x2d')][_0x07a4('0x50')](_0x549281)[_0x07a4('0x25')](function(_0x2c3c2d){if(_0x2c3c2d){_0xe58db5=_0x2c3c2d;return _0x2c3c2d[_0x07a4('0x6a')]();}return null;})[_0x07a4('0x25')](function(_0x4255dd){if(_0x4255dd){if(!_0x4255dd[_0x07a4('0x37')]){throw new db[(_0x07a4('0x6b'))][(_0x07a4('0x6c'))](_0x07a4('0x6d'),0x193);}_0x32df51=_0x4255dd;return db[_0x07a4('0x6e')][_0x07a4('0x44')]({'raw':!![]});}return null;})['then'](function(_0x120662){if(_0x120662){_0x5719b5=_[_0x07a4('0x6f')](_0x120662,'id');var _0x4880fc;var _0x4963e1=squel[_0x07a4('0x70')]();_0x4963e1[_0x07a4('0x71')](_0xe58db5[_0x07a4('0x72')]);for(var _0x2a72dd=0x0;_0x2a72dd<_0x32df51[_0x07a4('0x37')];_0x2a72dd+=0x1){_0x4880fc=_0x32df51[_0x2a72dd][_0x07a4('0x73')]?_0x5719b5[_0x32df51[_0x2a72dd][_0x07a4('0x73')]][_0x07a4('0x74')]:_0x32df51[_0x2a72dd][_0x07a4('0x67')];_0x4880fc=_0x32df51[_0x2a72dd][_0x07a4('0x75')]?_['replace'](_0x305636[_0x32df51[_0x2a72dd][_0x07a4('0x75')]],'%s',_0x4880fc):_0x4880fc;_0x4880fc=_0x32df51[_0x2a72dd][_0x07a4('0x76')]?_[_0x07a4('0x77')](_0x59178f[_0x32df51[_0x2a72dd][_0x07a4('0x76')]],'%s',_0x4880fc):_0x4880fc;if(_0x32df51[_0x2a72dd][_0x07a4('0x78')]){_0x4963e1[_0x07a4('0x66')](_0x4880fc);}_0x32df51[_0x2a72dd][_0x07a4('0x79')]&&_0x4963e1['order'](_0x4880fc,_0x32df51[_0x2a72dd]['orderBy']===_0x07a4('0x7a')?![]:!![]);_0x4963e1[_0x07a4('0x67')](_0x4880fc,_0x32df51[_0x2a72dd][_0x07a4('0x7b')]||_0x4880fc);}if(_0xe58db5[_0x07a4('0x7c')]){_0xe58db5['joins']=JSON[_0x07a4('0x7d')](_0xe58db5[_0x07a4('0x7c')]);for(var _0x56b34b=0x0;_0x56b34b<_0xe58db5['joins']['length'];_0x56b34b+=0x1){if(_0xe58db5[_0x07a4('0x7c')][_0x56b34b][_0x07a4('0x2f')]&&_[_0x07a4('0x62')](_0x3d744c,_0xe58db5['joins'][_0x56b34b][_0x07a4('0x2f')])&&_0xe58db5[_0x07a4('0x7c')][_0x56b34b][_0x07a4('0x7e')]&&_0xe58db5[_0x07a4('0x7c')][_0x56b34b][_0x07a4('0x7f')]&&_0xe58db5[_0x07a4('0x7c')][_0x56b34b][_0x07a4('0x80')]){_0x4963e1[_0xe58db5[_0x07a4('0x7c')][_0x56b34b]['type']](_0xe58db5[_0x07a4('0x7c')][_0x56b34b]['foreignTable'],null,util[_0x07a4('0x76')](_0x07a4('0x81'),_0xe58db5[_0x07a4('0x72')],_0xe58db5[_0x07a4('0x7c')][_0x56b34b][_0x07a4('0x7e')],_0xe58db5[_0x07a4('0x7c')][_0x56b34b]['foreignTable'],_0xe58db5[_0x07a4('0x7c')][_0x56b34b]['foreignKey']));}}}if(_0xe58db5[_0x07a4('0x82')]){_0xe58db5[_0x07a4('0x82')]=JSON[_0x07a4('0x7d')](_0xe58db5[_0x07a4('0x82')]);_0x4963e1[_0x07a4('0x3c')](_0x86c34f(_0xe58db5['conditions'][_0x07a4('0x66')]));}_0x291ee5=_0x4963e1[_0x07a4('0x83')]();_0x4963e1[_0x07a4('0x1d')](_0x57970a);_0x4963e1['offset'](0x0);logger[_0x07a4('0x84')](_0x07a4('0x85'),_0x4963e1[_0x07a4('0x86')]());return dbH[_0x07a4('0x87')]['query'](_0x4963e1[_0x07a4('0x86')](),{'type':dbH[_0x07a4('0x87')][_0x07a4('0x88')][_0x07a4('0x89')]});}})['then'](respondWithResult(_0x4ab8d5,null))[_0x07a4('0x45')](handleError(_0x4ab8d5,null));};function runReport(_0x38c129,_0x53fce3,_0x24d817){var _0x25bb7f=_0x53fce3[_0x07a4('0x29')];var _0x1c8168=0xa;var _0x4c9894=['join','left_join',_0x07a4('0x58'),_0x07a4('0x59')];var _0x35b811={'SUM':_0x07a4('0x5a'),'COUNT':_0x07a4('0x5b'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x07a4('0x5d'),'MIN':_0x07a4('0x5e'),'AVG':_0x07a4('0x8a'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x07a4('0x60'),'GROUP_CONCAT DESC':_0x07a4('0x8b')};var _0x1a4269={'SEC_TO_TIME':_0x07a4('0x61'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x07a4('0x8c'),'UNIX_TIMESTAMP':_0x07a4('0x8d')};var _0x169427=function(_0x8be33e){return!_[_0x07a4('0x62')]([_0x07a4('0x8e'),'IS\x20NOT\x20NULL',_0x07a4('0x64'),'IS\x20NOT\x20EMPTY'],_0x8be33e);};var _0x49b149=function(_0x458d52){if(!_0x458d52||!_0x458d52[_0x07a4('0x65')]['length']){return'';}for(var _0xe67509='(',_0x129ba4=0x0;_0x129ba4<_0x458d52[_0x07a4('0x65')][_0x07a4('0x37')];_0x129ba4+=0x1){_0x129ba4>0x0&&(_0xe67509+='\x20'+_0x458d52[_0x07a4('0x8f')]+'\x20');_0xe67509+=_0x458d52['rules'][_0x129ba4][_0x07a4('0x66')]?_0x49b149(_0x458d52[_0x07a4('0x65')][_0x129ba4][_0x07a4('0x66')]):_0x458d52[_0x07a4('0x65')][_0x129ba4][_0x07a4('0x67')]+'\x20'+_0x458d52['rules'][_0x129ba4]['condition']+(_0x169427(_0x458d52['rules'][_0x129ba4][_0x07a4('0x68')])?'\x20'+_0x458d52[_0x07a4('0x65')][_0x129ba4][_0x07a4('0x69')]:'');}return _0xe67509+')';};var _0x5d01b1={'where':{'id':_0x38c129['id']}},_0x3796d7,_0x35a89a,_0x51c1fc,_0x4c3243,_0x2f265d;_0x5d01b1=_[_0x07a4('0x40')]({},_0x5d01b1,_0x24d817);return db['AnalyticCustomReport'][_0x07a4('0x50')](_0x5d01b1)[_0x07a4('0x25')](function(_0x3a029c){if(_0x3a029c){_0x3796d7=_0x3a029c;return _0x3a029c['getFields']();}return null;})[_0x07a4('0x25')](function(_0x2e4731){if(_0x2e4731){if(!_0x2e4731[_0x07a4('0x37')]){throw new db['Sequelize'][(_0x07a4('0x6c'))](_0x07a4('0x6d'),0x193);}_0x35a89a=_0x2e4731;return db[_0x07a4('0x6e')][_0x07a4('0x44')]({'raw':!![]});}return null;})[_0x07a4('0x25')](function(_0x5c5c2a){if(_0x5c5c2a){_0x51c1fc=_[_0x07a4('0x6f')](_0x5c5c2a,'id');var _0xbc5a19;var _0x5ea80b=squel[_0x07a4('0x70')]();_0x5ea80b[_0x07a4('0x71')](_0x3796d7['table']);for(var _0x34c544=0x0;_0x34c544<_0x35a89a['length'];_0x34c544+=0x1){_0xbc5a19=_0x35a89a[_0x34c544][_0x07a4('0x73')]?_0x51c1fc[_0x35a89a[_0x34c544][_0x07a4('0x73')]]['metric']:_0x35a89a[_0x34c544][_0x07a4('0x67')];_0xbc5a19=_0x35a89a[_0x34c544][_0x07a4('0x75')]?_[_0x07a4('0x77')](_0x35b811[_0x35a89a[_0x34c544][_0x07a4('0x75')]],'%s',_0xbc5a19):_0xbc5a19;_0xbc5a19=_0x35a89a[_0x34c544][_0x07a4('0x76')]?_['replace'](_0x1a4269[_0x35a89a[_0x34c544][_0x07a4('0x76')]],'%s',_0xbc5a19):_0xbc5a19;if(_0x35a89a[_0x34c544][_0x07a4('0x78')]){_0x5ea80b['group'](_0xbc5a19);}_0x35a89a[_0x34c544][_0x07a4('0x79')]&&_0x5ea80b['order'](_0xbc5a19,_0x35a89a[_0x34c544][_0x07a4('0x79')]===_0x07a4('0x7a')?![]:!![]);_0x5ea80b[_0x07a4('0x67')](_0xbc5a19,_0x35a89a[_0x34c544][_0x07a4('0x7b')]||_0xbc5a19);}if(_0x3796d7[_0x07a4('0x7c')]){_0x3796d7[_0x07a4('0x7c')]=JSON['parse'](_0x3796d7['joins']);for(var _0x5edfa6=0x0;_0x5edfa6<_0x3796d7[_0x07a4('0x7c')][_0x07a4('0x37')];_0x5edfa6+=0x1){if(_0x3796d7[_0x07a4('0x7c')][_0x5edfa6][_0x07a4('0x2f')]&&_[_0x07a4('0x62')](_0x4c9894,_0x3796d7[_0x07a4('0x7c')][_0x5edfa6][_0x07a4('0x2f')])&&_0x3796d7[_0x07a4('0x7c')][_0x5edfa6][_0x07a4('0x7e')]&&_0x3796d7[_0x07a4('0x7c')][_0x5edfa6][_0x07a4('0x7f')]&&_0x3796d7[_0x07a4('0x7c')][_0x5edfa6][_0x07a4('0x80')]){_0x5ea80b[_0x3796d7[_0x07a4('0x7c')][_0x5edfa6]['type']](_0x3796d7[_0x07a4('0x7c')][_0x5edfa6]['foreignTable'],null,util[_0x07a4('0x76')](_0x07a4('0x81'),_0x3796d7[_0x07a4('0x72')],_0x3796d7[_0x07a4('0x7c')][_0x5edfa6][_0x07a4('0x7e')],_0x3796d7['joins'][_0x5edfa6]['foreignTable'],_0x3796d7[_0x07a4('0x7c')][_0x5edfa6][_0x07a4('0x80')]));}}}if(_0x3796d7[_0x07a4('0x82')]){_0x3796d7['conditions']=JSON[_0x07a4('0x7d')](_0x3796d7[_0x07a4('0x82')]);_0x5ea80b['where'](_0x49b149(_0x3796d7[_0x07a4('0x82')][_0x07a4('0x66')]));}_0x2f265d=_0x5ea80b[_0x07a4('0x83')]();_0x5ea80b['limit'](_0x1c8168);_0x5ea80b[_0x07a4('0x1f')](0x0);return;}})[_0x07a4('0x25')](function(){if(_0x53fce3['output']===_0x07a4('0x90')){return null;}var _0x1e60f6=_[_0x07a4('0x40')](_0x53fce3,{'name':_0x53fce3[_0x07a4('0x91')]||_0x53fce3['name']||_0x3796d7[_0x07a4('0x29')],'basename':_0x25bb7f,'savename':util['format'](_0x07a4('0x92'),_0x53fce3[_0x07a4('0x29')]||_0x3796d7['name'],require(_0x07a4('0x93'))[_0x07a4('0x94')](0x4),_0x53fce3['output']||_0x07a4('0x95')),'reportId':_0x3796d7['id'],'reportType':_0x07a4('0x96')});return db['AnalyticExtractedReport']['create'](_0x1e60f6,{'raw':!![]});})[_0x07a4('0x25')](function(_0x172b39){if(_0x3796d7[_0x07a4('0x72')]==='cdr'){_0x2f265d[_0x07a4('0x3c')](_0x3796d7[_0x07a4('0x72')]+_0x07a4('0x97'),_0x53fce3[_0x07a4('0x98')],_0x53fce3['endDate']);}else{_0x2f265d[_0x07a4('0x3c')](_0x3796d7[_0x07a4('0x72')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x53fce3[_0x07a4('0x98')],_0x53fce3[_0x07a4('0x99')]);}if(_0x172b39){logger[_0x07a4('0x9a')]('Run\x20Query:',_0x2f265d[_0x07a4('0x86')]());require('child_process')[_0x07a4('0x9b')](path[_0x07a4('0x56')](__dirname,_0x07a4('0x9c'),_0x172b39[_0x07a4('0x9d')]),[_0x172b39['id'],_0x2f265d[_0x07a4('0x86')](),path[_0x07a4('0x56')](__dirname,_0x07a4('0x9e'),_0x172b39[_0x07a4('0x9f')]),_0x25bb7f]);return _0x172b39;}else{var _0x3d0c21=squel[_0x07a4('0x70')]();_0x3d0c21[_0x07a4('0x71')]('('+_0x2f265d['toString']()+')',_0x07a4('0xa0'));_0x3d0c21[_0x07a4('0x67')](_0x07a4('0xa1'),_0x07a4('0x1e'));_0x2f265d[_0x07a4('0x1d')](_0x53fce3[_0x07a4('0x1d')]||_0x1c8168);_0x2f265d[_0x07a4('0x1f')](_0x53fce3[_0x07a4('0x1f')]||0x0);return dbH[_0x07a4('0x87')][_0x07a4('0x32')](_0x3d0c21[_0x07a4('0x86')](),{'type':dbH[_0x07a4('0x87')][_0x07a4('0x88')]['SELECT']})[_0x07a4('0x25')](function(_0x34a8a6){if(!_0x34a8a6[_0x07a4('0x37')]){_0x4c3243=0x0;}else{_0x4c3243=_0x34a8a6[0x0]['count']||0x0;}return dbH[_0x07a4('0x87')]['query'](_0x2f265d[_0x07a4('0x86')](),{'type':dbH['sequelize'][_0x07a4('0x88')][_0x07a4('0x89')]});})[_0x07a4('0x25')](function(_0x5f5bd2){return{'rows':_0x5f5bd2||[],'count':_0x4c3243};});}});}exports[_0x07a4('0xa2')]=function(_0x53cea2,_0x101bc7){return runReport(_0x53cea2[_0x07a4('0x54')],_0x53cea2[_0x07a4('0x32')],_0x53cea2[_0x07a4('0x41')])[_0x07a4('0x25')](respondWithResult(_0x101bc7,null))['catch'](handleError(_0x101bc7,null));};exports['runReport']=runReport;exports[_0x07a4('0x32')]=function(_0x1e9df9,_0x378d4f){var _0xd907f6=0xa;var _0x29d329=[_0x07a4('0x56'),_0x07a4('0x57'),_0x07a4('0x58'),_0x07a4('0x59')];var _0x2ec0f5={'SUM':'SUM(%s)','COUNT':_0x07a4('0x5b'),'COUNT DISTINCT':_0x07a4('0x5c'),'MAX':_0x07a4('0x5d'),'MIN':_0x07a4('0x5e'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x07a4('0x5f'),'GROUP_CONCAT ASC':_0x07a4('0x60'),'GROUP_CONCAT DESC':_0x07a4('0x8b')};var _0x4351e5={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x07a4('0xa3'),'HOUR':_0x07a4('0xa4'),'ROUND':_0x07a4('0x8c'),'UNIX_TIMESTAMP':_0x07a4('0x8d')};var _0x289f55=function(_0x101fef){return!_[_0x07a4('0x62')]([_0x07a4('0x8e'),_0x07a4('0x63'),_0x07a4('0x64'),'IS\x20NOT\x20EMPTY'],_0x101fef);};var _0x33dbbf=function(_0xfe7714){if(!_0xfe7714||!_0xfe7714[_0x07a4('0x65')][_0x07a4('0x37')]){return'';}for(var _0x498ccf='(',_0x2a2fa9=0x0;_0x2a2fa9<_0xfe7714[_0x07a4('0x65')]['length'];_0x2a2fa9+=0x1){_0x2a2fa9>0x0&&(_0x498ccf+='\x20'+_0xfe7714[_0x07a4('0x8f')]+'\x20');_0x498ccf+=_0xfe7714[_0x07a4('0x65')][_0x2a2fa9][_0x07a4('0x66')]?_0x33dbbf(_0xfe7714[_0x07a4('0x65')][_0x2a2fa9][_0x07a4('0x66')]):_0xfe7714['rules'][_0x2a2fa9][_0x07a4('0x67')]+'\x20'+_0xfe7714['rules'][_0x2a2fa9]['condition']+(_0x289f55(_0xfe7714[_0x07a4('0x65')][_0x2a2fa9]['condition'])?'\x20'+_0xfe7714[_0x07a4('0x65')][_0x2a2fa9][_0x07a4('0x69')]:'');}return _0x498ccf+')';};var _0x556717={'where':{'id':_0x1e9df9[_0x07a4('0x54')]['id']}},_0x3d0591,_0x400b15,_0xaf4c63,_0xf8ca1,_0x454e05;_0x556717=_[_0x07a4('0x40')]({},_0x556717,_0x1e9df9[_0x07a4('0x41')]);return db['AnalyticCustomReport']['find'](_0x556717)[_0x07a4('0x25')](function(_0xf9ebe0){if(_0xf9ebe0){_0x3d0591=_0xf9ebe0;return _0xf9ebe0[_0x07a4('0x6a')]();}return null;})[_0x07a4('0x25')](function(_0x47cbde){if(_0x47cbde){if(!_0x47cbde[_0x07a4('0x37')]){throw new db['Sequelize'][(_0x07a4('0x6c'))](_0x07a4('0x6d'),0x193);}_0x400b15=_0x47cbde;return db[_0x07a4('0x6e')][_0x07a4('0x44')]({'raw':!![]});}return null;})[_0x07a4('0x25')](function(_0x50d550){if(_0x50d550){_0xaf4c63=_[_0x07a4('0x6f')](_0x50d550,'id');var _0x3235b9;var _0x3076b6=squel['select']();_0x3076b6[_0x07a4('0x71')](_0x3d0591['table']);for(var _0x3c7730=0x0;_0x3c7730<_0x400b15[_0x07a4('0x37')];_0x3c7730+=0x1){_0x3235b9=_0x400b15[_0x3c7730]['MetricId']?_0xaf4c63[_0x400b15[_0x3c7730][_0x07a4('0x73')]]['metric']:_0x400b15[_0x3c7730][_0x07a4('0x67')];_0x3235b9=_0x400b15[_0x3c7730][_0x07a4('0x75')]?_[_0x07a4('0x77')](_0x2ec0f5[_0x400b15[_0x3c7730]['function']],'%s',_0x3235b9):_0x3235b9;_0x3235b9=_0x400b15[_0x3c7730][_0x07a4('0x76')]?_[_0x07a4('0x77')](_0x4351e5[_0x400b15[_0x3c7730][_0x07a4('0x76')]],'%s',_0x3235b9):_0x3235b9;if(_0x400b15[_0x3c7730][_0x07a4('0x78')]){_0x3076b6[_0x07a4('0x66')](_0x3235b9);}_0x400b15[_0x3c7730][_0x07a4('0x79')]&&_0x3076b6[_0x07a4('0x3a')](_0x3235b9,_0x400b15[_0x3c7730][_0x07a4('0x79')]===_0x07a4('0x7a')?![]:!![]);_0x3076b6[_0x07a4('0x67')](_0x3235b9,_0x400b15[_0x3c7730][_0x07a4('0x7b')]||_0x3235b9);}if(_0x3d0591['joins']){_0x3d0591[_0x07a4('0x7c')]=JSON[_0x07a4('0x7d')](_0x3d0591[_0x07a4('0x7c')]);for(var _0xddd654=0x0;_0xddd654<_0x3d0591[_0x07a4('0x7c')][_0x07a4('0x37')];_0xddd654+=0x1){if(_0x3d0591[_0x07a4('0x7c')][_0xddd654]['type']&&_[_0x07a4('0x62')](_0x29d329,_0x3d0591[_0x07a4('0x7c')][_0xddd654]['type'])&&_0x3d0591[_0x07a4('0x7c')][_0xddd654][_0x07a4('0x7e')]&&_0x3d0591[_0x07a4('0x7c')][_0xddd654]['foreignTable']&&_0x3d0591['joins'][_0xddd654]['foreignKey']){_0x3076b6[_0x3d0591[_0x07a4('0x7c')][_0xddd654][_0x07a4('0x2f')]](_0x3d0591[_0x07a4('0x7c')][_0xddd654][_0x07a4('0x7f')],null,util['format'](_0x07a4('0x81'),_0x3d0591[_0x07a4('0x72')],_0x3d0591[_0x07a4('0x7c')][_0xddd654][_0x07a4('0x7e')],_0x3d0591['joins'][_0xddd654]['foreignTable'],_0x3d0591[_0x07a4('0x7c')][_0xddd654][_0x07a4('0x80')]));}}}if(_0x3d0591['conditions']){_0x3d0591[_0x07a4('0x82')]=JSON[_0x07a4('0x7d')](_0x3d0591[_0x07a4('0x82')]);_0x3076b6[_0x07a4('0x3c')](_0x33dbbf(_0x3d0591[_0x07a4('0x82')]['group']));}_0x454e05=_0x3076b6[_0x07a4('0x83')]();_0x3076b6[_0x07a4('0x1d')](_0xd907f6);_0x3076b6[_0x07a4('0x1f')](0x0);logger[_0x07a4('0x84')]('Limited\x20Query:',_0x3076b6[_0x07a4('0x86')]());return dbH[_0x07a4('0x87')][_0x07a4('0x32')](_0x3076b6[_0x07a4('0x86')](),{'type':dbH[_0x07a4('0x87')][_0x07a4('0x88')]['SELECT']});}})[_0x07a4('0x25')](function(){return{'sql':_0x454e05[_0x07a4('0x86')]()};})[_0x07a4('0x25')](respondWithResult(_0x378d4f,null))[_0x07a4('0x45')](handleError(_0x378d4f,null));};
\ No newline at end of file
+var _0x0cb9=['%s.%s\x20=\x20%s.%s','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','HOUR(%s)','IS\x20EMPTY','DESC','alias','parse','output','web','fullPath','%s-%s.%s','randomstring','generate','custom','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','fork','../../files/reports','COUNT(*)','run','runReport','left_join','right_join','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','operator','value','metric','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','dbH','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','destroy','then','get','CustomReports','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','key','model','map','keys','filters','intersection','query','attributes','fields','length','order','sort','pick','filter','where','merge','type','VIRTUAL','AnalyticCustomReport','findAll','rows','catch','params','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','join','cross_join','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','function','replace','format','groupBy','orderBy','joins','parentKey','foreignTable'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x0cb9,0xc8));var _0x90cb=function(_0x48c98c,_0x3b6f60){_0x48c98c=_0x48c98c-0x0;var _0x4eb693=_0x0cb9[_0x48c98c];return _0x4eb693;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x90cb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x90cb('0x1'));var rp=require(_0x90cb('0x2'));var moment=require(_0x90cb('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x90cb('0x4'));var path=require('path');var sox=require(_0x90cb('0x5'));var csv=require(_0x90cb('0x6'));var ejs=require(_0x90cb('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x90cb('0x8'));var squel=require('squel');var crypto=require(_0x90cb('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x90cb('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x90cb('0xb'));var Redis=require(_0x90cb('0xc'));var authService=require(_0x90cb('0xd'));var qs=require(_0x90cb('0xe'));var as=require(_0x90cb('0xf'));var hardwareService=require(_0x90cb('0x10'));var logger=require(_0x90cb('0x11'))(_0x90cb('0x12'));var utils=require(_0x90cb('0x13'));var config=require(_0x90cb('0x14'));var licenseUtil=require(_0x90cb('0x15'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x90cb('0x16')];function respondWithStatusCode(_0x96dedc,_0x7bb427){_0x7bb427=_0x7bb427||0xcc;return function(_0x532dcf){if(_0x532dcf){return _0x96dedc[_0x90cb('0x17')](_0x7bb427);}return _0x96dedc['status'](_0x7bb427)[_0x90cb('0x18')]();};}function respondWithResult(_0x492a75,_0x242451){_0x242451=_0x242451||0xc8;return function(_0x47061a){if(_0x47061a){return _0x492a75[_0x90cb('0x19')](_0x242451)[_0x90cb('0x1a')](_0x47061a);}};}function respondWithFilteredResult(_0x110aa8,_0x24be77){return function(_0x3eeb50){if(_0x3eeb50){var _0x4fd1c8=typeof _0x24be77[_0x90cb('0x1b')]==='undefined'&&typeof _0x24be77[_0x90cb('0x1c')]===_0x90cb('0x1d');var _0x3a07a6=_0x3eeb50[_0x90cb('0x1e')];var _0x596418=_0x4fd1c8?0x0:_0x24be77['offset'];var _0x43631a=_0x4fd1c8?_0x3eeb50[_0x90cb('0x1e')]:_0x24be77[_0x90cb('0x1b')]+_0x24be77[_0x90cb('0x1c')];var _0x24dbe7;if(_0x43631a>=_0x3a07a6){_0x43631a=_0x3a07a6;_0x24dbe7=0xc8;}else{_0x24dbe7=0xce;}_0x110aa8[_0x90cb('0x19')](_0x24dbe7);return _0x110aa8[_0x90cb('0x1f')](_0x90cb('0x20'),_0x596418+'-'+_0x43631a+'/'+_0x3a07a6)[_0x90cb('0x1a')](_0x3eeb50);}return null;};}function patchUpdates(_0x5ad1d5){return function(_0x57c4ab){try{jsonpatch['apply'](_0x57c4ab,_0x5ad1d5,!![]);}catch(_0x4d2d39){return BPromise[_0x90cb('0x21')](_0x4d2d39);}return _0x57c4ab['save']();};}function saveUpdates(_0x2488f0,_0x53e47a){return function(_0x2e3d0c){if(_0x2e3d0c){return _0x2e3d0c[_0x90cb('0x22')](_0x2488f0)['then'](function(_0x447325){return _0x447325;});}return null;};}function removeEntity(_0x53d6c4,_0x576352){return function(_0xf09c8f){if(_0xf09c8f){return _0xf09c8f[_0x90cb('0x23')]()[_0x90cb('0x24')](function(){var _0x23a08e=_0xf09c8f[_0x90cb('0x25')]({'plain':!![]});var _0x4323b6=_0x90cb('0x26');return db[_0x90cb('0x27')]['destroy']({'where':{'type':_0x4323b6,'resourceId':_0x23a08e['id']}})[_0x90cb('0x24')](function(){return _0xf09c8f;});})[_0x90cb('0x24')](function(){_0x53d6c4[_0x90cb('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53d17c,_0x5f9078){return function(_0x56cc64){if(!_0x56cc64){_0x53d17c['sendStatus'](0x194);}return _0x56cc64;};}function handleError(_0x38fbb2,_0x4b45fb){_0x4b45fb=_0x4b45fb||0x1f4;return function(_0x53ac74){logger[_0x90cb('0x28')](_0x53ac74[_0x90cb('0x29')]);if(_0x53ac74[_0x90cb('0x2a')]){delete _0x53ac74[_0x90cb('0x2a')];}_0x38fbb2[_0x90cb('0x19')](_0x4b45fb)[_0x90cb('0x2b')](_0x53ac74);};}exports[_0x90cb('0x2c')]=function(_0x201b7d,_0x394828){var _0x4be0d2={},_0x5a7847={},_0x38cfaa={'count':0x0,'rows':[]};var _0x4dd193=_['map'](db['AnalyticCustomReport'][_0x90cb('0x2d')],function(_0x4646c5){return{'name':_0x4646c5[_0x90cb('0x2e')],'type':_0x4646c5['type'][_0x90cb('0x2f')]};});_0x5a7847[_0x90cb('0x30')]=_[_0x90cb('0x31')](_0x4dd193,'name');_0x5a7847['query']=_[_0x90cb('0x32')](_0x201b7d['query']);_0x5a7847[_0x90cb('0x33')]=_[_0x90cb('0x34')](_0x5a7847[_0x90cb('0x30')],_0x5a7847[_0x90cb('0x35')]);_0x4be0d2[_0x90cb('0x36')]=_['intersection'](_0x5a7847['model'],qs[_0x90cb('0x37')](_0x201b7d[_0x90cb('0x35')][_0x90cb('0x37')]));_0x4be0d2['attributes']=_0x4be0d2[_0x90cb('0x36')][_0x90cb('0x38')]?_0x4be0d2['attributes']:_0x5a7847[_0x90cb('0x30')];if(!_0x201b7d[_0x90cb('0x35')]['hasOwnProperty']('nolimit')){_0x4be0d2[_0x90cb('0x1c')]=qs[_0x90cb('0x1c')](_0x201b7d['query'][_0x90cb('0x1c')]);_0x4be0d2['offset']=qs[_0x90cb('0x1b')](_0x201b7d[_0x90cb('0x35')][_0x90cb('0x1b')]);}_0x4be0d2[_0x90cb('0x39')]=qs[_0x90cb('0x3a')](_0x201b7d[_0x90cb('0x35')][_0x90cb('0x3a')]);_0x4be0d2['where']=qs[_0x90cb('0x33')](_[_0x90cb('0x3b')](_0x201b7d['query'],_0x5a7847['filters']),_0x4dd193);if(_0x201b7d['query'][_0x90cb('0x3c')]){_0x4be0d2[_0x90cb('0x3d')]=_[_0x90cb('0x3e')](_0x4be0d2[_0x90cb('0x3d')],{'$or':_[_0x90cb('0x31')](_0x4dd193,function(_0xee32c3){if(_0xee32c3[_0x90cb('0x3f')]!==_0x90cb('0x40')){var _0x26e614={};_0x26e614[_0xee32c3['name']]={'$like':'%'+_0x201b7d['query']['filter']+'%'};return _0x26e614;}})});}_0x4be0d2=_['merge']({},_0x4be0d2,_0x201b7d['options']);var _0x911e8b={'where':_0x4be0d2[_0x90cb('0x3d')]};return db[_0x90cb('0x41')][_0x90cb('0x1e')](_0x911e8b)[_0x90cb('0x24')](function(_0x51a779){_0x38cfaa[_0x90cb('0x1e')]=_0x51a779;if(_0x201b7d[_0x90cb('0x35')]['includeAll']){_0x4be0d2['include']=[{'all':!![]}];}return db[_0x90cb('0x41')][_0x90cb('0x42')](_0x4be0d2);})[_0x90cb('0x24')](function(_0x1af8c6){_0x38cfaa[_0x90cb('0x43')]=_0x1af8c6;return _0x38cfaa;})[_0x90cb('0x24')](respondWithFilteredResult(_0x394828,_0x4be0d2))[_0x90cb('0x44')](handleError(_0x394828,null));};exports['show']=function(_0x4d4f62,_0x51ebd5){var _0x505b49={'raw':![],'where':{'id':_0x4d4f62[_0x90cb('0x45')]['id']}},_0x538ff1={};_0x538ff1['model']=_[_0x90cb('0x32')](db[_0x90cb('0x41')][_0x90cb('0x2d')]);_0x538ff1[_0x90cb('0x35')]=_[_0x90cb('0x32')](_0x4d4f62[_0x90cb('0x35')]);_0x538ff1['filters']=_[_0x90cb('0x34')](_0x538ff1[_0x90cb('0x30')],_0x538ff1[_0x90cb('0x35')]);_0x505b49['attributes']=_[_0x90cb('0x34')](_0x538ff1[_0x90cb('0x30')],qs[_0x90cb('0x37')](_0x4d4f62[_0x90cb('0x35')]['fields']));_0x505b49[_0x90cb('0x36')]=_0x505b49['attributes']['length']?_0x505b49[_0x90cb('0x36')]:_0x538ff1[_0x90cb('0x30')];if(_0x4d4f62[_0x90cb('0x35')]['includeAll']){_0x505b49['include']=[{'all':!![]}];}_0x505b49=_['merge']({},_0x505b49,_0x4d4f62[_0x90cb('0x46')]);return db[_0x90cb('0x41')]['find'](_0x505b49)[_0x90cb('0x24')](handleEntityNotFound(_0x51ebd5,null))[_0x90cb('0x24')](respondWithResult(_0x51ebd5,null))[_0x90cb('0x44')](handleError(_0x51ebd5,null));};exports[_0x90cb('0x47')]=function(_0x4d72b3,_0x4b18c8){return db[_0x90cb('0x41')][_0x90cb('0x47')](_0x4d72b3[_0x90cb('0x48')],{})[_0x90cb('0x24')](function(_0x58a1b5){var _0x3ba060=_0x4d72b3[_0x90cb('0x49')][_0x90cb('0x25')]({'plain':!![]});if(!_0x3ba060)throw new Error(_0x90cb('0x4a'));if(_0x3ba060[_0x90cb('0x4b')]===_0x90cb('0x49')){var _0x410115=_0x58a1b5[_0x90cb('0x25')]({'plain':!![]});var _0x39080f='Reports';return db['UserProfileSection']['find']({'where':{'name':_0x39080f,'userProfileId':_0x3ba060[_0x90cb('0x4c')]},'raw':!![]})['then'](function(_0x39b7df){if(_0x39b7df&&_0x39b7df['autoAssociation']===0x0){return db['UserProfileResource'][_0x90cb('0x47')]({'name':_0x410115[_0x90cb('0x2a')],'resourceId':_0x410115['id'],'type':_0x90cb('0x26'),'sectionId':_0x39b7df['id']},{})[_0x90cb('0x24')](function(){return _0x58a1b5;});}else{return _0x58a1b5;}})[_0x90cb('0x44')](function(_0x36506d){logger[_0x90cb('0x28')](_0x90cb('0x4d'),_0x36506d);throw _0x36506d;});}return _0x58a1b5;})[_0x90cb('0x24')](respondWithResult(_0x4b18c8,0xc9))['catch'](handleError(_0x4b18c8,null));};exports[_0x90cb('0x22')]=function(_0x4fa471,_0xceec63){if(_0x4fa471[_0x90cb('0x48')]['id']){delete _0x4fa471[_0x90cb('0x48')]['id'];}return db[_0x90cb('0x41')][_0x90cb('0x4e')]({'where':{'id':_0x4fa471[_0x90cb('0x45')]['id']}})['then'](handleEntityNotFound(_0xceec63,null))[_0x90cb('0x24')](saveUpdates(_0x4fa471[_0x90cb('0x48')],null))[_0x90cb('0x24')](respondWithResult(_0xceec63,null))[_0x90cb('0x44')](handleError(_0xceec63,null));};exports[_0x90cb('0x23')]=function(_0x160476,_0x2d9932){return db[_0x90cb('0x41')][_0x90cb('0x4e')]({'where':{'id':_0x160476[_0x90cb('0x45')]['id']}})['then'](handleEntityNotFound(_0x2d9932,null))[_0x90cb('0x24')](removeEntity(_0x2d9932,null))[_0x90cb('0x44')](handleError(_0x2d9932,null));};exports['preview']=function(_0x1461de,_0x24a772){var _0x23de0d=0xa;var _0x180050=[_0x90cb('0x4f'),'left_join','right_join',_0x90cb('0x50')];var _0x30f6fd={'SUM':'SUM(%s)','COUNT':_0x90cb('0x51'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x90cb('0x52'),'MIN':_0x90cb('0x53'),'AVG':_0x90cb('0x54'),'GROUP_CONCAT':_0x90cb('0x55'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x90cb('0x56')};var _0x12b532={'SEC_TO_TIME':_0x90cb('0x57'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x90cb('0x58'),'UNIX_TIMESTAMP':_0x90cb('0x59')};var _0x8aaa3b=function(_0x41de0){return!_[_0x90cb('0x5a')]([_0x90cb('0x5b'),_0x90cb('0x5c'),'IS\x20EMPTY',_0x90cb('0x5d')],_0x41de0);};var _0x1bd61d=function(_0x390d13){if(!_0x390d13||!_0x390d13[_0x90cb('0x5e')]['length']){return'';}for(var _0x232f7e='(',_0x5df621=0x0;_0x5df621<_0x390d13['rules'][_0x90cb('0x38')];_0x5df621+=0x1){_0x5df621>0x0&&(_0x232f7e+='\x20'+_0x390d13['operator']+'\x20');_0x232f7e+=_0x390d13[_0x90cb('0x5e')][_0x5df621][_0x90cb('0x5f')]?_0x1bd61d(_0x390d13['rules'][_0x5df621][_0x90cb('0x5f')]):_0x390d13['rules'][_0x5df621][_0x90cb('0x60')]+'\x20'+_0x390d13['rules'][_0x5df621][_0x90cb('0x61')]+(_0x8aaa3b(_0x390d13[_0x90cb('0x5e')][_0x5df621]['condition'])?'\x20'+_0x390d13['rules'][_0x5df621]['value']:'');}return _0x232f7e+')';};var _0x3f6ed6={'where':{'id':_0x1461de[_0x90cb('0x45')]['id']}},_0x5836a0,_0x5ad396,_0x5720be,_0x33763a,_0x2c7c38;_0x3f6ed6=_[_0x90cb('0x3e')]({},_0x3f6ed6,_0x1461de[_0x90cb('0x46')]);return db[_0x90cb('0x41')][_0x90cb('0x4e')](_0x3f6ed6)[_0x90cb('0x24')](function(_0xb753cc){if(_0xb753cc){_0x5836a0=_0xb753cc;return _0xb753cc[_0x90cb('0x62')]();}return null;})[_0x90cb('0x24')](function(_0xb91bc){if(_0xb91bc){if(!_0xb91bc['length']){throw new db[(_0x90cb('0x63'))][(_0x90cb('0x64'))](_0x90cb('0x65'),0x193);}_0x5ad396=_0xb91bc;return db[_0x90cb('0x66')]['findAll']({'raw':!![]});}return null;})[_0x90cb('0x24')](function(_0x4687da){if(_0x4687da){_0x5720be=_[_0x90cb('0x67')](_0x4687da,'id');var _0x64c0f6;var _0x473dc8=squel[_0x90cb('0x68')]();_0x473dc8[_0x90cb('0x69')](_0x5836a0[_0x90cb('0x6a')]);for(var _0x47f4a1=0x0;_0x47f4a1<_0x5ad396['length'];_0x47f4a1+=0x1){_0x64c0f6=_0x5ad396[_0x47f4a1][_0x90cb('0x6b')]?_0x5720be[_0x5ad396[_0x47f4a1][_0x90cb('0x6b')]]['metric']:_0x5ad396[_0x47f4a1][_0x90cb('0x60')];_0x64c0f6=_0x5ad396[_0x47f4a1][_0x90cb('0x6c')]?_[_0x90cb('0x6d')](_0x30f6fd[_0x5ad396[_0x47f4a1][_0x90cb('0x6c')]],'%s',_0x64c0f6):_0x64c0f6;_0x64c0f6=_0x5ad396[_0x47f4a1][_0x90cb('0x6e')]?_[_0x90cb('0x6d')](_0x12b532[_0x5ad396[_0x47f4a1][_0x90cb('0x6e')]],'%s',_0x64c0f6):_0x64c0f6;if(_0x5ad396[_0x47f4a1][_0x90cb('0x6f')]){_0x473dc8['group'](_0x64c0f6);}_0x5ad396[_0x47f4a1]['orderBy']&&_0x473dc8[_0x90cb('0x39')](_0x64c0f6,_0x5ad396[_0x47f4a1][_0x90cb('0x70')]==='DESC'?![]:!![]);_0x473dc8[_0x90cb('0x60')](_0x64c0f6,_0x5ad396[_0x47f4a1]['alias']||_0x64c0f6);}if(_0x5836a0[_0x90cb('0x71')]){_0x5836a0[_0x90cb('0x71')]=JSON['parse'](_0x5836a0[_0x90cb('0x71')]);for(var _0x151585=0x0;_0x151585<_0x5836a0[_0x90cb('0x71')][_0x90cb('0x38')];_0x151585+=0x1){if(_0x5836a0[_0x90cb('0x71')][_0x151585][_0x90cb('0x3f')]&&_['includes'](_0x180050,_0x5836a0[_0x90cb('0x71')][_0x151585][_0x90cb('0x3f')])&&_0x5836a0['joins'][_0x151585][_0x90cb('0x72')]&&_0x5836a0[_0x90cb('0x71')][_0x151585][_0x90cb('0x73')]&&_0x5836a0[_0x90cb('0x71')][_0x151585]['foreignKey']){_0x473dc8[_0x5836a0[_0x90cb('0x71')][_0x151585][_0x90cb('0x3f')]](_0x5836a0['joins'][_0x151585][_0x90cb('0x73')],null,util[_0x90cb('0x6e')](_0x90cb('0x74'),_0x5836a0[_0x90cb('0x6a')],_0x5836a0[_0x90cb('0x71')][_0x151585][_0x90cb('0x72')],_0x5836a0['joins'][_0x151585][_0x90cb('0x73')],_0x5836a0[_0x90cb('0x71')][_0x151585][_0x90cb('0x75')]));}}}if(_0x5836a0['conditions']){_0x5836a0[_0x90cb('0x76')]=JSON['parse'](_0x5836a0[_0x90cb('0x76')]);_0x473dc8[_0x90cb('0x3d')](_0x1bd61d(_0x5836a0['conditions'][_0x90cb('0x5f')]));}_0x2c7c38=_0x473dc8[_0x90cb('0x77')]();_0x473dc8['limit'](_0x23de0d);_0x473dc8['offset'](0x0);logger[_0x90cb('0x78')](_0x90cb('0x79'),_0x473dc8[_0x90cb('0x7a')]());return dbH[_0x90cb('0x7b')][_0x90cb('0x35')](_0x473dc8[_0x90cb('0x7a')](),{'type':dbH[_0x90cb('0x7b')][_0x90cb('0x7c')][_0x90cb('0x7d')]});}})[_0x90cb('0x24')](respondWithResult(_0x24a772,null))[_0x90cb('0x44')](handleError(_0x24a772,null));};function runReport(_0x19b1cc,_0x33d552,_0x58e7c6){var _0x59d185=_0x33d552[_0x90cb('0x2a')];var _0x42c813=0xa;var _0x2c49de=[_0x90cb('0x4f'),'left_join','right_join',_0x90cb('0x50')];var _0x45d63e={'SUM':'SUM(%s)','COUNT':_0x90cb('0x51'),'COUNT DISTINCT':_0x90cb('0x7e'),'MAX':_0x90cb('0x52'),'MIN':_0x90cb('0x53'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x90cb('0x55'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x55c2af={'SEC_TO_TIME':_0x90cb('0x57'),'DATE':'DATE(%s)','HOUR':_0x90cb('0x7f'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x339760=function(_0x1c7602){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL',_0x90cb('0x80'),_0x90cb('0x5d')],_0x1c7602);};var _0x2190cd=function(_0x31e1e5){if(!_0x31e1e5||!_0x31e1e5[_0x90cb('0x5e')][_0x90cb('0x38')]){return'';}for(var _0x2060ac='(',_0x5510da=0x0;_0x5510da<_0x31e1e5[_0x90cb('0x5e')][_0x90cb('0x38')];_0x5510da+=0x1){_0x5510da>0x0&&(_0x2060ac+='\x20'+_0x31e1e5['operator']+'\x20');_0x2060ac+=_0x31e1e5[_0x90cb('0x5e')][_0x5510da][_0x90cb('0x5f')]?_0x2190cd(_0x31e1e5[_0x90cb('0x5e')][_0x5510da][_0x90cb('0x5f')]):_0x31e1e5[_0x90cb('0x5e')][_0x5510da][_0x90cb('0x60')]+'\x20'+_0x31e1e5[_0x90cb('0x5e')][_0x5510da][_0x90cb('0x61')]+(_0x339760(_0x31e1e5[_0x90cb('0x5e')][_0x5510da][_0x90cb('0x61')])?'\x20'+_0x31e1e5[_0x90cb('0x5e')][_0x5510da]['value']:'');}return _0x2060ac+')';};var _0x41128c={'where':{'id':_0x19b1cc['id']}},_0xe55346,_0x55939a,_0xd4ccfb,_0xd71419,_0x105cbb;_0x41128c=_[_0x90cb('0x3e')]({},_0x41128c,_0x58e7c6);return db[_0x90cb('0x41')][_0x90cb('0x4e')](_0x41128c)['then'](function(_0x5e971a){if(_0x5e971a){_0xe55346=_0x5e971a;return _0x5e971a[_0x90cb('0x62')]();}return null;})[_0x90cb('0x24')](function(_0x21cca2){if(_0x21cca2){if(!_0x21cca2[_0x90cb('0x38')]){throw new db[(_0x90cb('0x63'))][(_0x90cb('0x64'))](_0x90cb('0x65'),0x193);}_0x55939a=_0x21cca2;return db[_0x90cb('0x66')][_0x90cb('0x42')]({'raw':!![]});}return null;})[_0x90cb('0x24')](function(_0x536e30){if(_0x536e30){_0xd4ccfb=_[_0x90cb('0x67')](_0x536e30,'id');var _0x165ec3;var _0x598228=squel[_0x90cb('0x68')]();_0x598228[_0x90cb('0x69')](_0xe55346[_0x90cb('0x6a')]);for(var _0x20d7e6=0x0;_0x20d7e6<_0x55939a[_0x90cb('0x38')];_0x20d7e6+=0x1){_0x165ec3=_0x55939a[_0x20d7e6]['MetricId']?_0xd4ccfb[_0x55939a[_0x20d7e6][_0x90cb('0x6b')]]['metric']:_0x55939a[_0x20d7e6][_0x90cb('0x60')];_0x165ec3=_0x55939a[_0x20d7e6][_0x90cb('0x6c')]?_[_0x90cb('0x6d')](_0x45d63e[_0x55939a[_0x20d7e6][_0x90cb('0x6c')]],'%s',_0x165ec3):_0x165ec3;_0x165ec3=_0x55939a[_0x20d7e6][_0x90cb('0x6e')]?_[_0x90cb('0x6d')](_0x55c2af[_0x55939a[_0x20d7e6][_0x90cb('0x6e')]],'%s',_0x165ec3):_0x165ec3;if(_0x55939a[_0x20d7e6][_0x90cb('0x6f')]){_0x598228['group'](_0x165ec3);}_0x55939a[_0x20d7e6][_0x90cb('0x70')]&&_0x598228[_0x90cb('0x39')](_0x165ec3,_0x55939a[_0x20d7e6][_0x90cb('0x70')]===_0x90cb('0x81')?![]:!![]);_0x598228[_0x90cb('0x60')](_0x165ec3,_0x55939a[_0x20d7e6][_0x90cb('0x82')]||_0x165ec3);}if(_0xe55346[_0x90cb('0x71')]){_0xe55346[_0x90cb('0x71')]=JSON[_0x90cb('0x83')](_0xe55346['joins']);for(var _0x234728=0x0;_0x234728<_0xe55346['joins'][_0x90cb('0x38')];_0x234728+=0x1){if(_0xe55346['joins'][_0x234728][_0x90cb('0x3f')]&&_['includes'](_0x2c49de,_0xe55346['joins'][_0x234728][_0x90cb('0x3f')])&&_0xe55346[_0x90cb('0x71')][_0x234728][_0x90cb('0x72')]&&_0xe55346['joins'][_0x234728][_0x90cb('0x73')]&&_0xe55346[_0x90cb('0x71')][_0x234728]['foreignKey']){_0x598228[_0xe55346[_0x90cb('0x71')][_0x234728][_0x90cb('0x3f')]](_0xe55346[_0x90cb('0x71')][_0x234728]['foreignTable'],null,util[_0x90cb('0x6e')]('%s.%s\x20=\x20%s.%s',_0xe55346[_0x90cb('0x6a')],_0xe55346[_0x90cb('0x71')][_0x234728][_0x90cb('0x72')],_0xe55346['joins'][_0x234728][_0x90cb('0x73')],_0xe55346[_0x90cb('0x71')][_0x234728][_0x90cb('0x75')]));}}}if(_0xe55346['conditions']){_0xe55346[_0x90cb('0x76')]=JSON[_0x90cb('0x83')](_0xe55346[_0x90cb('0x76')]);_0x598228['where'](_0x2190cd(_0xe55346[_0x90cb('0x76')][_0x90cb('0x5f')]));}_0x105cbb=_0x598228['clone']();_0x598228['limit'](_0x42c813);_0x598228[_0x90cb('0x1b')](0x0);return;}})[_0x90cb('0x24')](function(){if(_0x33d552[_0x90cb('0x84')]===_0x90cb('0x85')){return null;}var _0xf9fe9f=_['merge'](_0x33d552,{'name':_0x33d552[_0x90cb('0x86')]||_0x33d552[_0x90cb('0x2a')]||_0xe55346['name'],'basename':_0x59d185,'savename':util[_0x90cb('0x6e')](_0x90cb('0x87'),_0x33d552[_0x90cb('0x2a')]||_0xe55346[_0x90cb('0x2a')],require(_0x90cb('0x88'))[_0x90cb('0x89')](0x4),_0x33d552[_0x90cb('0x84')]||'csv'),'reportId':_0xe55346['id'],'reportType':_0x90cb('0x8a')});return db['AnalyticExtractedReport'][_0x90cb('0x47')](_0xf9fe9f,{'raw':!![]});})['then'](function(_0x1c0bcd){if(_0xe55346[_0x90cb('0x6a')]===_0x90cb('0x8b')){_0x105cbb[_0x90cb('0x3d')](_0xe55346['table']+_0x90cb('0x8c'),_0x33d552[_0x90cb('0x8d')],_0x33d552['endDate']);}else{_0x105cbb[_0x90cb('0x3d')](_0xe55346['table']+_0x90cb('0x8e'),_0x33d552[_0x90cb('0x8d')],_0x33d552[_0x90cb('0x8f')]);}if(_0x1c0bcd){logger[_0x90cb('0x90')](_0x90cb('0x91'),_0x105cbb[_0x90cb('0x7a')]());require('child_process')[_0x90cb('0x92')](path['join'](__dirname,'../../components/export/',_0x1c0bcd[_0x90cb('0x84')]),[_0x1c0bcd['id'],_0x105cbb[_0x90cb('0x7a')](),path[_0x90cb('0x4f')](__dirname,_0x90cb('0x93'),_0x1c0bcd['savename']),_0x59d185]);return _0x1c0bcd;}else{var _0x21f091=squel['select']();_0x21f091[_0x90cb('0x69')]('('+_0x105cbb[_0x90cb('0x7a')]()+')','countTable');_0x21f091['field'](_0x90cb('0x94'),_0x90cb('0x1e'));_0x105cbb['limit'](_0x33d552[_0x90cb('0x1c')]||_0x42c813);_0x105cbb[_0x90cb('0x1b')](_0x33d552[_0x90cb('0x1b')]||0x0);return dbH['sequelize'][_0x90cb('0x35')](_0x21f091[_0x90cb('0x7a')](),{'type':dbH[_0x90cb('0x7b')]['QueryTypes'][_0x90cb('0x7d')]})['then'](function(_0x479d63){if(!_0x479d63[_0x90cb('0x38')]){_0xd71419=0x0;}else{_0xd71419=_0x479d63[0x0][_0x90cb('0x1e')]||0x0;}return dbH['sequelize']['query'](_0x105cbb[_0x90cb('0x7a')](),{'type':dbH['sequelize'][_0x90cb('0x7c')][_0x90cb('0x7d')]});})['then'](function(_0x1aad84){return{'rows':_0x1aad84||[],'count':_0xd71419};});}});}exports[_0x90cb('0x95')]=function(_0x3ef4b3,_0x4bf988){return runReport(_0x3ef4b3[_0x90cb('0x45')],_0x3ef4b3['query'],_0x3ef4b3[_0x90cb('0x46')])[_0x90cb('0x24')](respondWithResult(_0x4bf988,null))[_0x90cb('0x44')](handleError(_0x4bf988,null));};exports[_0x90cb('0x96')]=runReport;exports[_0x90cb('0x35')]=function(_0x181332,_0x8fd490){var _0x58e2f6=0xa;var _0x55bf03=[_0x90cb('0x4f'),_0x90cb('0x97'),_0x90cb('0x98'),_0x90cb('0x50')];var _0x45e119={'SUM':'SUM(%s)','COUNT':_0x90cb('0x51'),'COUNT DISTINCT':_0x90cb('0x7e'),'MAX':_0x90cb('0x52'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x90cb('0x55'),'GROUP_CONCAT ASC':_0x90cb('0x99'),'GROUP_CONCAT DESC':_0x90cb('0x56')};var _0x1d85aa={'SEC_TO_TIME':_0x90cb('0x57'),'DATE':_0x90cb('0x9a'),'HOUR':_0x90cb('0x7f'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1cd24c=function(_0xef2f2e){return!_[_0x90cb('0x5a')](['IS\x20NULL',_0x90cb('0x5c'),_0x90cb('0x80'),_0x90cb('0x5d')],_0xef2f2e);};var _0x20ed92=function(_0x17161e){if(!_0x17161e||!_0x17161e['rules'][_0x90cb('0x38')]){return'';}for(var _0x15dfc5='(',_0x1592ee=0x0;_0x1592ee<_0x17161e['rules'][_0x90cb('0x38')];_0x1592ee+=0x1){_0x1592ee>0x0&&(_0x15dfc5+='\x20'+_0x17161e[_0x90cb('0x9b')]+'\x20');_0x15dfc5+=_0x17161e[_0x90cb('0x5e')][_0x1592ee]['group']?_0x20ed92(_0x17161e[_0x90cb('0x5e')][_0x1592ee][_0x90cb('0x5f')]):_0x17161e[_0x90cb('0x5e')][_0x1592ee][_0x90cb('0x60')]+'\x20'+_0x17161e[_0x90cb('0x5e')][_0x1592ee]['condition']+(_0x1cd24c(_0x17161e[_0x90cb('0x5e')][_0x1592ee][_0x90cb('0x61')])?'\x20'+_0x17161e[_0x90cb('0x5e')][_0x1592ee][_0x90cb('0x9c')]:'');}return _0x15dfc5+')';};var _0x34cf26={'where':{'id':_0x181332['params']['id']}},_0x56522e,_0x142fa3,_0x1bc5bd,_0x4f6a03,_0x17643c;_0x34cf26=_[_0x90cb('0x3e')]({},_0x34cf26,_0x181332[_0x90cb('0x46')]);return db[_0x90cb('0x41')][_0x90cb('0x4e')](_0x34cf26)['then'](function(_0x80351e){if(_0x80351e){_0x56522e=_0x80351e;return _0x80351e['getFields']();}return null;})['then'](function(_0x23a98e){if(_0x23a98e){if(!_0x23a98e[_0x90cb('0x38')]){throw new db[(_0x90cb('0x63'))][(_0x90cb('0x64'))](_0x90cb('0x65'),0x193);}_0x142fa3=_0x23a98e;return db['AnalyticMetric'][_0x90cb('0x42')]({'raw':!![]});}return null;})['then'](function(_0x3678b3){if(_0x3678b3){_0x1bc5bd=_[_0x90cb('0x67')](_0x3678b3,'id');var _0x2dda5a;var _0x55d126=squel[_0x90cb('0x68')]();_0x55d126['from'](_0x56522e[_0x90cb('0x6a')]);for(var _0x5b894a=0x0;_0x5b894a<_0x142fa3[_0x90cb('0x38')];_0x5b894a+=0x1){_0x2dda5a=_0x142fa3[_0x5b894a][_0x90cb('0x6b')]?_0x1bc5bd[_0x142fa3[_0x5b894a]['MetricId']][_0x90cb('0x9d')]:_0x142fa3[_0x5b894a][_0x90cb('0x60')];_0x2dda5a=_0x142fa3[_0x5b894a][_0x90cb('0x6c')]?_['replace'](_0x45e119[_0x142fa3[_0x5b894a]['function']],'%s',_0x2dda5a):_0x2dda5a;_0x2dda5a=_0x142fa3[_0x5b894a][_0x90cb('0x6e')]?_['replace'](_0x1d85aa[_0x142fa3[_0x5b894a][_0x90cb('0x6e')]],'%s',_0x2dda5a):_0x2dda5a;if(_0x142fa3[_0x5b894a][_0x90cb('0x6f')]){_0x55d126[_0x90cb('0x5f')](_0x2dda5a);}_0x142fa3[_0x5b894a][_0x90cb('0x70')]&&_0x55d126['order'](_0x2dda5a,_0x142fa3[_0x5b894a][_0x90cb('0x70')]===_0x90cb('0x81')?![]:!![]);_0x55d126[_0x90cb('0x60')](_0x2dda5a,_0x142fa3[_0x5b894a][_0x90cb('0x82')]||_0x2dda5a);}if(_0x56522e['joins']){_0x56522e[_0x90cb('0x71')]=JSON[_0x90cb('0x83')](_0x56522e[_0x90cb('0x71')]);for(var _0xc3da27=0x0;_0xc3da27<_0x56522e[_0x90cb('0x71')][_0x90cb('0x38')];_0xc3da27+=0x1){if(_0x56522e[_0x90cb('0x71')][_0xc3da27]['type']&&_['includes'](_0x55bf03,_0x56522e['joins'][_0xc3da27][_0x90cb('0x3f')])&&_0x56522e[_0x90cb('0x71')][_0xc3da27][_0x90cb('0x72')]&&_0x56522e[_0x90cb('0x71')][_0xc3da27][_0x90cb('0x73')]&&_0x56522e[_0x90cb('0x71')][_0xc3da27][_0x90cb('0x75')]){_0x55d126[_0x56522e[_0x90cb('0x71')][_0xc3da27][_0x90cb('0x3f')]](_0x56522e[_0x90cb('0x71')][_0xc3da27][_0x90cb('0x73')],null,util['format'](_0x90cb('0x74'),_0x56522e[_0x90cb('0x6a')],_0x56522e[_0x90cb('0x71')][_0xc3da27][_0x90cb('0x72')],_0x56522e[_0x90cb('0x71')][_0xc3da27][_0x90cb('0x73')],_0x56522e['joins'][_0xc3da27][_0x90cb('0x75')]));}}}if(_0x56522e[_0x90cb('0x76')]){_0x56522e[_0x90cb('0x76')]=JSON[_0x90cb('0x83')](_0x56522e[_0x90cb('0x76')]);_0x55d126[_0x90cb('0x3d')](_0x20ed92(_0x56522e['conditions']['group']));}_0x17643c=_0x55d126[_0x90cb('0x77')]();_0x55d126[_0x90cb('0x1c')](_0x58e2f6);_0x55d126[_0x90cb('0x1b')](0x0);logger['debug'](_0x90cb('0x79'),_0x55d126[_0x90cb('0x7a')]());return dbH['sequelize'][_0x90cb('0x35')](_0x55d126[_0x90cb('0x7a')](),{'type':dbH[_0x90cb('0x7b')][_0x90cb('0x7c')][_0x90cb('0x7d')]});}})[_0x90cb('0x24')](function(){return{'sql':_0x17643c[_0x90cb('0x7a')]()};})['then'](respondWithResult(_0x8fd490,null))[_0x90cb('0x44')](handleError(_0x8fd490,null));};
\ No newline at end of file
index b6b5c3f..25eb09b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1616=['define','analytics_custom_reports','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes'];(function(_0x3aa321,_0x5bcde5){var _0x2bc5a5=function(_0xabb066){while(--_0xabb066){_0x3aa321['push'](_0x3aa321['shift']());}};_0x2bc5a5(++_0x5bcde5);}(_0x1616,0x1a6));var _0x6161=function(_0x29e35f,_0x4859ef){_0x29e35f=_0x29e35f-0x0;var _0x266b74=_0x1616[_0x29e35f];return _0x266b74;};'use strict';var _=require(_0x6161('0x0'));var util=require(_0x6161('0x1'));var logger=require(_0x6161('0x2'))('api');var moment=require(_0x6161('0x3'));var BPromise=require(_0x6161('0x4'));var rp=require(_0x6161('0x5'));var fs=require('fs');var path=require(_0x6161('0x6'));var rimraf=require(_0x6161('0x7'));var config=require(_0x6161('0x8'));var attributes=require(_0x6161('0x9'));module['exports']=function(_0x40f8e3,_0x5df8de){return _0x40f8e3[_0x6161('0xa')]('AnalyticCustomReport',attributes,{'tableName':_0x6161('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8869=['request-promise','rimraf','../../config/environment','./analyticCustomReport.attributes','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','bluebird'];(function(_0x2c526d,_0x284ef7){var _0x1a6e7c=function(_0x34df61){while(--_0x34df61){_0x2c526d['push'](_0x2c526d['shift']());}};_0x1a6e7c(++_0x284ef7);}(_0x8869,0x157));var _0x9886=function(_0x3879b6,_0x1e2e47){_0x3879b6=_0x3879b6-0x0;var _0x19ccef=_0x8869[_0x3879b6];return _0x19ccef;};'use strict';var _=require(_0x9886('0x0'));var util=require(_0x9886('0x1'));var logger=require(_0x9886('0x2'))(_0x9886('0x3'));var moment=require('moment');var BPromise=require(_0x9886('0x4'));var rp=require(_0x9886('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9886('0x6'));var config=require(_0x9886('0x7'));var attributes=require(_0x9886('0x8'));module['exports']=function(_0x3188a1,_0x1c2881){return _0x3188a1[_0x9886('0x9')](_0x9886('0xa'),attributes,{'tableName':_0x9886('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 257a388..a24f85b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d4=['jayson/promise','client','http','request','then','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x166742,_0x55520c){var _0xb7814a=function(_0x18feaf){while(--_0x18feaf){_0x166742['push'](_0x166742['shift']());}};_0xb7814a(++_0x55520c);}(_0x38d4,0x148));var _0x438d=function(_0x3569cd,_0x30331f){_0x3569cd=_0x3569cd-0x0;var _0x1d829f=_0x38d4[_0x3569cd];return _0x1d829f;};'use strict';var _=require(_0x438d('0x0'));var util=require(_0x438d('0x1'));var moment=require(_0x438d('0x2'));var BPromise=require(_0x438d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x438d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x438d('0x5'));var logger=require(_0x438d('0x6'))('rpc');var config=require(_0x438d('0x7'));var jayson=require(_0x438d('0x8'));var client=jayson[_0x438d('0x9')][_0x438d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1aea89,_0x4e7923,_0x5d69e4){return new BPromise(function(_0x4ad83a,_0x5080e7){return client[_0x438d('0xb')](_0x1aea89,_0x5d69e4)[_0x438d('0xc')](function(_0x9840b5){logger['info'](_0x438d('0xd'),_0x4e7923,_0x438d('0xe'));logger[_0x438d('0xf')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x4e7923,_0x438d('0xe'),JSON['stringify'](_0x9840b5));if(_0x9840b5[_0x438d('0x10')]){if(_0x9840b5['error'][_0x438d('0x11')]===0x1f4){logger['error'](_0x438d('0xd'),_0x4e7923,_0x9840b5[_0x438d('0x10')][_0x438d('0x12')]);return _0x5080e7(_0x9840b5[_0x438d('0x10')][_0x438d('0x12')]);}logger[_0x438d('0x10')](_0x438d('0xd'),_0x4e7923,_0x9840b5[_0x438d('0x10')]['message']);return _0x4ad83a(_0x9840b5['error'][_0x438d('0x12')]);}else{logger[_0x438d('0x13')](_0x438d('0xd'),_0x4e7923,_0x438d('0xe'));_0x4ad83a(_0x9840b5[_0x438d('0x14')][_0x438d('0x12')]);}})['catch'](function(_0x20761c){logger[_0x438d('0x10')](_0x438d('0xd'),_0x4e7923,_0x20761c);_0x5080e7(_0x20761c);});});}
\ No newline at end of file
+var _0x5ee5=['client','http','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x5ee5,0x121));var _0x55ee=function(_0x29210d,_0x45648b){_0x29210d=_0x29210d-0x0;var _0x4a66e6=_0x5ee5[_0x29210d];return _0x4a66e6;};'use strict';var _=require(_0x55ee('0x0'));var util=require(_0x55ee('0x1'));var moment=require(_0x55ee('0x2'));var BPromise=require(_0x55ee('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x55ee('0x4'));var db=require(_0x55ee('0x5'))['db'];var utils=require(_0x55ee('0x6'));var logger=require(_0x55ee('0x7'))(_0x55ee('0x8'));var config=require('../../config/environment');var jayson=require(_0x55ee('0x9'));var client=jayson[_0x55ee('0xa')][_0x55ee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x55f9a0,_0xc13225,_0x5e4cb6){return new BPromise(function(_0x5175f0,_0xf45727){return client['request'](_0x55f9a0,_0x5e4cb6)[_0x55ee('0xc')](function(_0x3b34f7){logger[_0x55ee('0xd')](_0x55ee('0xe'),_0xc13225,_0x55ee('0xf'));logger[_0x55ee('0x10')](_0x55ee('0x11'),_0xc13225,_0x55ee('0xf'),JSON['stringify'](_0x3b34f7));if(_0x3b34f7[_0x55ee('0x12')]){if(_0x3b34f7['error'][_0x55ee('0x13')]===0x1f4){logger['error'](_0x55ee('0xe'),_0xc13225,_0x3b34f7[_0x55ee('0x12')][_0x55ee('0x14')]);return _0xf45727(_0x3b34f7[_0x55ee('0x12')]['message']);}logger[_0x55ee('0x12')](_0x55ee('0xe'),_0xc13225,_0x3b34f7['error'][_0x55ee('0x14')]);return _0x5175f0(_0x3b34f7[_0x55ee('0x12')][_0x55ee('0x14')]);}else{logger[_0x55ee('0xd')](_0x55ee('0xe'),_0xc13225,_0x55ee('0xf'));_0x5175f0(_0x3b34f7[_0x55ee('0x15')][_0x55ee('0x14')]);}})[_0x55ee('0x16')](function(_0x2f132a){logger[_0x55ee('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0xc13225,_0x2f132a);_0xf45727(_0x2f132a);});});}
\ No newline at end of file
index 933c1f3..35efaf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc887=['get','isAuthenticated','index','/:id','/:id/preview','preview','/:id/run','run','/:id/query','query','create','update','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xc887,0x1c7));var _0x7c88=function(_0x322a19,_0x1d561f){_0x322a19=_0x322a19-0x0;var _0x4f8b1e=_0xc887[_0x322a19];return _0x4f8b1e;};'use strict';var multer=require(_0x7c88('0x0'));var util=require(_0x7c88('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7c88('0x2')]();var fs_extra=require(_0x7c88('0x3'));var auth=require(_0x7c88('0x4'));var interaction=require(_0x7c88('0x5'));var config=require('../../config/environment');var controller=require(_0x7c88('0x6'));router[_0x7c88('0x7')]('/',auth[_0x7c88('0x8')](),controller[_0x7c88('0x9')]);router[_0x7c88('0x7')](_0x7c88('0xa'),auth[_0x7c88('0x8')](),controller['show']);router[_0x7c88('0x7')](_0x7c88('0xb'),auth[_0x7c88('0x8')](),controller[_0x7c88('0xc')]);router[_0x7c88('0x7')](_0x7c88('0xd'),auth['isAuthenticated'](),controller[_0x7c88('0xe')]);router[_0x7c88('0x7')](_0x7c88('0xf'),auth[_0x7c88('0x8')](),controller[_0x7c88('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x7c88('0x11')]);router['put'](_0x7c88('0xa'),auth['isAuthenticated'](),controller[_0x7c88('0x12')]);router[_0x7c88('0x13')](_0x7c88('0xa'),auth[_0x7c88('0x8')](),controller[_0x7c88('0x14')]);module[_0x7c88('0x15')]=router;
\ No newline at end of file
+var _0x0f67=['show','preview','/:id/run','run','/:id/query','query','post','put','delete','destroy','util','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id'];(function(_0x3f0fcc,_0xa86f54){var _0x35bf77=function(_0x47a562){while(--_0x47a562){_0x3f0fcc['push'](_0x3f0fcc['shift']());}};_0x35bf77(++_0xa86f54);}(_0x0f67,0x12a));var _0x70f6=function(_0x21643d,_0x57dbc1){_0x21643d=_0x21643d-0x0;var _0xa36697=_0x0f67[_0x21643d];return _0xa36697;};'use strict';var multer=require('multer');var util=require(_0x70f6('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x70f6('0x1'));var router=express[_0x70f6('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x70f6('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x70f6('0x4'));var controller=require('./analyticCustomReport.controller');router[_0x70f6('0x5')]('/',auth[_0x70f6('0x6')](),controller['index']);router[_0x70f6('0x5')](_0x70f6('0x7'),auth[_0x70f6('0x6')](),controller[_0x70f6('0x8')]);router['get']('/:id/preview',auth[_0x70f6('0x6')](),controller[_0x70f6('0x9')]);router['get'](_0x70f6('0xa'),auth[_0x70f6('0x6')](),controller[_0x70f6('0xb')]);router[_0x70f6('0x5')](_0x70f6('0xc'),auth[_0x70f6('0x6')](),controller[_0x70f6('0xd')]);router[_0x70f6('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x70f6('0xf')](_0x70f6('0x7'),auth[_0x70f6('0x6')](),controller['update']);router[_0x70f6('0x10')]('/:id',auth[_0x70f6('0x6')](),controller[_0x70f6('0x11')]);module['exports']=router;
\ No newline at end of file
index a8f2da2..4d4cff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['STRING','TEXT'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x5f8000,_0x4a56b1){_0x5f8000=_0x5f8000-0x0;var _0xc8f261=_0x7fbe[_0x5f8000];return _0xc8f261;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe7fb('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0xe7fb('0x0')]},'parent':{'type':Sequelize[_0xe7fb('0x0')]},'table':{'type':Sequelize[_0xe7fb('0x0')]},'conditions':{'type':Sequelize[_0xe7fb('0x1')]},'joins':{'type':Sequelize[_0xe7fb('0x1')]}};
\ No newline at end of file
+var _0x24ca=['sequelize','STRING','TEXT'];(function(_0x91fbc7,_0x207e4c){var _0x32a811=function(_0x3d6a42){while(--_0x3d6a42){_0x91fbc7['push'](_0x91fbc7['shift']());}};_0x32a811(++_0x207e4c);}(_0x24ca,0x1bc));var _0xa24c=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x24ca[_0x565c49];return _0x20ca34;};'use strict';var Sequelize=require(_0xa24c('0x0'));module['exports']={'name':{'type':Sequelize[_0xa24c('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa24c('0x1')]},'parent':{'type':Sequelize[_0xa24c('0x1')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0xa24c('0x2')]},'joins':{'type':Sequelize[_0xa24c('0x2')]}};
\ No newline at end of file
index 4ba46c0..42986d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','field','function','replace','groupBy','orderBy','order','alias','joins','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20EMPTY','operator','Sequelize','metric','format','DESC','parse','parentKey','web','output','csv','default','AnalyticExtractedReport','cdr','startDate','endDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','countTable','run','runReport','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','dbH','status','json','offset','undefined','limit','count','set','apply','update','then','DefaultReports','destroy','end','error','stack','name','send','map','AnalyticDefaultReport','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','type','VIRTUAL','merge','includeAll','include','findAll','show','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','right_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\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','group','condition','value','options','find','getFields'];(function(_0x3d6ea3,_0xbbdff2){var _0x1f24b7=function(_0x1e33ee){while(--_0x1e33ee){_0x3d6ea3['push'](_0x3d6ea3['shift']());}};_0x1f24b7(++_0xbbdff2);}(_0xda19,0xd5));var _0x9da1=function(_0x146f48,_0x475f61){_0x146f48=_0x146f48-0x0;var _0x2f5766=_0xda19[_0x146f48];return _0x2f5766;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9da1('0x0'));var zipdir=require(_0x9da1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9da1('0x2'));var moment=require('moment');var BPromise=require(_0x9da1('0x3'));var Mustache=require('mustache');var util=require(_0x9da1('0x4'));var path=require(_0x9da1('0x5'));var sox=require(_0x9da1('0x6'));var csv=require(_0x9da1('0x7'));var ejs=require(_0x9da1('0x8'));var fs=require('fs');var fs_extra=require(_0x9da1('0x9'));var _=require(_0x9da1('0xa'));var squel=require(_0x9da1('0xb'));var crypto=require(_0x9da1('0xc'));var jsforce=require(_0x9da1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9da1('0xe'));var Redis=require('ioredis');var authService=require(_0x9da1('0xf'));var qs=require(_0x9da1('0x10'));var as=require(_0x9da1('0x11'));var hardwareService=require(_0x9da1('0x12'));var logger=require(_0x9da1('0x13'))(_0x9da1('0x14'));var utils=require(_0x9da1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9da1('0x16'))['db'];var dbH=require('../../mysqldb')[_0x9da1('0x17')];function respondWithStatusCode(_0x1d93f8,_0xd2d225){_0xd2d225=_0xd2d225||0xcc;return function(_0x1ffa2a){if(_0x1ffa2a){return _0x1d93f8['sendStatus'](_0xd2d225);}return _0x1d93f8[_0x9da1('0x18')](_0xd2d225)['end']();};}function respondWithResult(_0x4d17e1,_0x40ba9d){_0x40ba9d=_0x40ba9d||0xc8;return function(_0x479ccd){if(_0x479ccd){return _0x4d17e1[_0x9da1('0x18')](_0x40ba9d)[_0x9da1('0x19')](_0x479ccd);}};}function respondWithFilteredResult(_0x37653d,_0x1a1a6b){return function(_0x7f1a64){if(_0x7f1a64){var _0x514d8e=typeof _0x1a1a6b[_0x9da1('0x1a')]===_0x9da1('0x1b')&&typeof _0x1a1a6b[_0x9da1('0x1c')]===_0x9da1('0x1b');var _0xfb278d=_0x7f1a64[_0x9da1('0x1d')];var _0x497676=_0x514d8e?0x0:_0x1a1a6b['offset'];var _0x17205d=_0x514d8e?_0x7f1a64[_0x9da1('0x1d')]:_0x1a1a6b[_0x9da1('0x1a')]+_0x1a1a6b[_0x9da1('0x1c')];var _0x40a967;if(_0x17205d>=_0xfb278d){_0x17205d=_0xfb278d;_0x40a967=0xc8;}else{_0x40a967=0xce;}_0x37653d[_0x9da1('0x18')](_0x40a967);return _0x37653d[_0x9da1('0x1e')]('Content-Range',_0x497676+'-'+_0x17205d+'/'+_0xfb278d)[_0x9da1('0x19')](_0x7f1a64);}return null;};}function patchUpdates(_0x554845){return function(_0x9c3b37){try{jsonpatch[_0x9da1('0x1f')](_0x9c3b37,_0x554845,!![]);}catch(_0x1fc065){return BPromise['reject'](_0x1fc065);}return _0x9c3b37['save']();};}function saveUpdates(_0x14793b,_0x3e6f85){return function(_0x16ee0c){if(_0x16ee0c){return _0x16ee0c[_0x9da1('0x20')](_0x14793b)[_0x9da1('0x21')](function(_0x165b73){return _0x165b73;});}return null;};}function removeEntity(_0x4c60aa,_0x2413fe){return function(_0x3bfa40){if(_0x3bfa40){return _0x3bfa40['destroy']()[_0x9da1('0x21')](function(){var _0x3f5680=_0x3bfa40['get']({'plain':!![]});var _0x2fd49c=_0x9da1('0x22');return db['UserProfileResource'][_0x9da1('0x23')]({'where':{'type':_0x2fd49c,'resourceId':_0x3f5680['id']}})[_0x9da1('0x21')](function(){return _0x3bfa40;});})['then'](function(){_0x4c60aa['status'](0xcc)[_0x9da1('0x24')]();});}};}function handleEntityNotFound(_0x47055e,_0x5eca5b){return function(_0x27c6e2){if(!_0x27c6e2){_0x47055e['sendStatus'](0x194);}return _0x27c6e2;};}function handleError(_0x5a6f2d,_0x5a59c2){_0x5a59c2=_0x5a59c2||0x1f4;return function(_0x31b826){logger[_0x9da1('0x25')](_0x31b826[_0x9da1('0x26')]);if(_0x31b826[_0x9da1('0x27')]){delete _0x31b826[_0x9da1('0x27')];}_0x5a6f2d['status'](_0x5a59c2)[_0x9da1('0x28')](_0x31b826);};}exports['index']=function(_0x1feae0,_0x235ced){var _0x5b38b3={},_0xc29ba8={},_0x2eb48f={'count':0x0,'rows':[]};var _0x4f318b=_[_0x9da1('0x29')](db[_0x9da1('0x2a')][_0x9da1('0x2b')],function(_0x2b2b48){return{'name':_0x2b2b48['fieldName'],'type':_0x2b2b48['type'][_0x9da1('0x2c')]};});_0xc29ba8[_0x9da1('0x2d')]=_[_0x9da1('0x29')](_0x4f318b,_0x9da1('0x27'));_0xc29ba8[_0x9da1('0x2e')]=_['keys'](_0x1feae0[_0x9da1('0x2e')]);_0xc29ba8[_0x9da1('0x2f')]=_[_0x9da1('0x30')](_0xc29ba8[_0x9da1('0x2d')],_0xc29ba8[_0x9da1('0x2e')]);_0x5b38b3[_0x9da1('0x31')]=_['intersection'](_0xc29ba8[_0x9da1('0x2d')],qs['fields'](_0x1feae0['query'][_0x9da1('0x32')]));_0x5b38b3['attributes']=_0x5b38b3[_0x9da1('0x31')][_0x9da1('0x33')]?_0x5b38b3[_0x9da1('0x31')]:_0xc29ba8[_0x9da1('0x2d')];if(!_0x1feae0[_0x9da1('0x2e')][_0x9da1('0x34')](_0x9da1('0x35'))){_0x5b38b3[_0x9da1('0x1c')]=qs['limit'](_0x1feae0[_0x9da1('0x2e')]['limit']);_0x5b38b3[_0x9da1('0x1a')]=qs['offset'](_0x1feae0['query'][_0x9da1('0x1a')]);}_0x5b38b3['order']=qs[_0x9da1('0x36')](_0x1feae0[_0x9da1('0x2e')]['sort']);_0x5b38b3[_0x9da1('0x37')]=qs[_0x9da1('0x2f')](_[_0x9da1('0x38')](_0x1feae0[_0x9da1('0x2e')],_0xc29ba8['filters']),_0x4f318b);if(_0x1feae0[_0x9da1('0x2e')]['filter']){_0x5b38b3[_0x9da1('0x37')]=_['merge'](_0x5b38b3[_0x9da1('0x37')],{'$or':_[_0x9da1('0x29')](_0x4f318b,function(_0x58e165){if(_0x58e165[_0x9da1('0x39')]!==_0x9da1('0x3a')){var _0x394acf={};_0x394acf[_0x58e165['name']]={'$like':'%'+_0x1feae0['query']['filter']+'%'};return _0x394acf;}})});}_0x5b38b3=_[_0x9da1('0x3b')]({},_0x5b38b3,_0x1feae0['options']);var _0x5b215c={'where':_0x5b38b3[_0x9da1('0x37')]};return db[_0x9da1('0x2a')][_0x9da1('0x1d')](_0x5b215c)['then'](function(_0x42dbd8){_0x2eb48f[_0x9da1('0x1d')]=_0x42dbd8;if(_0x1feae0[_0x9da1('0x2e')][_0x9da1('0x3c')]){_0x5b38b3[_0x9da1('0x3d')]=[{'all':!![]}];}return db[_0x9da1('0x2a')][_0x9da1('0x3e')](_0x5b38b3);})['then'](function(_0x467350){_0x2eb48f['rows']=_0x467350;return _0x2eb48f;})[_0x9da1('0x21')](respondWithFilteredResult(_0x235ced,_0x5b38b3))['catch'](handleError(_0x235ced,null));};exports[_0x9da1('0x3f')]=function(_0x40d848,_0x599211){var _0x265366={'raw':!![],'where':{'id':_0x40d848['params']['id']}},_0xfeec5f={};_0xfeec5f[_0x9da1('0x2d')]=_['keys'](db[_0x9da1('0x2a')][_0x9da1('0x2b')]);_0xfeec5f['query']=_['keys'](_0x40d848[_0x9da1('0x2e')]);_0xfeec5f[_0x9da1('0x2f')]=_[_0x9da1('0x30')](_0xfeec5f[_0x9da1('0x2d')],_0xfeec5f[_0x9da1('0x2e')]);_0x265366[_0x9da1('0x31')]=_[_0x9da1('0x30')](_0xfeec5f[_0x9da1('0x2d')],qs['fields'](_0x40d848[_0x9da1('0x2e')][_0x9da1('0x32')]));_0x265366[_0x9da1('0x31')]=_0x265366['attributes'][_0x9da1('0x33')]?_0x265366[_0x9da1('0x31')]:_0xfeec5f[_0x9da1('0x2d')];if(_0x40d848['query'][_0x9da1('0x3c')]){_0x265366[_0x9da1('0x3d')]=[{'all':!![]}];}_0x265366=_[_0x9da1('0x3b')]({},_0x265366,_0x40d848['options']);return db[_0x9da1('0x2a')]['find'](_0x265366)['then'](handleEntityNotFound(_0x599211,null))[_0x9da1('0x21')](respondWithResult(_0x599211,null))[_0x9da1('0x40')](handleError(_0x599211,null));};exports['create']=function(_0x712d10,_0x2066d2){return db['AnalyticDefaultReport'][_0x9da1('0x41')](_0x712d10[_0x9da1('0x42')],{})[_0x9da1('0x21')](function(_0x3a529d){var _0x4780ca=_0x712d10[_0x9da1('0x43')][_0x9da1('0x44')]({'plain':!![]});if(!_0x4780ca)throw new Error(_0x9da1('0x45'));if(_0x4780ca[_0x9da1('0x46')]==='user'){var _0x147c65=_0x3a529d[_0x9da1('0x44')]({'plain':!![]});var _0x34a203=_0x9da1('0x47');return db['UserProfileSection']['find']({'where':{'name':_0x34a203,'userProfileId':_0x4780ca[_0x9da1('0x48')]},'raw':!![]})[_0x9da1('0x21')](function(_0x3870dd){if(_0x3870dd&&_0x3870dd[_0x9da1('0x49')]===0x0){return db[_0x9da1('0x4a')][_0x9da1('0x41')]({'name':_0x147c65[_0x9da1('0x27')],'resourceId':_0x147c65['id'],'type':_0x9da1('0x22'),'sectionId':_0x3870dd['id']},{})[_0x9da1('0x21')](function(){return _0x3a529d;});}else{return _0x3a529d;}})[_0x9da1('0x40')](function(_0x868167){logger[_0x9da1('0x25')](_0x9da1('0x4b'),_0x868167);throw _0x868167;});}return _0x3a529d;})[_0x9da1('0x21')](respondWithResult(_0x2066d2,0xc9))['catch'](handleError(_0x2066d2,null));};exports[_0x9da1('0x20')]=function(_0x1fbb5d,_0x4d241a){if(_0x1fbb5d[_0x9da1('0x42')]['id']){delete _0x1fbb5d['body']['id'];}return db[_0x9da1('0x2a')]['find']({'where':{'id':_0x1fbb5d[_0x9da1('0x4c')]['id']}})[_0x9da1('0x21')](handleEntityNotFound(_0x4d241a,null))[_0x9da1('0x21')](saveUpdates(_0x1fbb5d[_0x9da1('0x42')],null))[_0x9da1('0x21')](respondWithResult(_0x4d241a,null))[_0x9da1('0x40')](handleError(_0x4d241a,null));};exports[_0x9da1('0x23')]=function(_0x343b05,_0x170351){return db[_0x9da1('0x2a')]['find']({'where':{'id':_0x343b05[_0x9da1('0x4c')]['id']}})[_0x9da1('0x21')](handleEntityNotFound(_0x170351,null))[_0x9da1('0x21')](removeEntity(_0x170351,null))[_0x9da1('0x40')](handleError(_0x170351,null));};exports[_0x9da1('0x4d')]=function(_0x4607a9,_0x2020d0){var _0x3c01c3=0xa;var _0xfa8d3f=[_0x9da1('0x4e'),'left_join',_0x9da1('0x4f'),_0x9da1('0x50')];var _0x5bda2a={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0xc27b00={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':_0x9da1('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x9da1('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x27ac84=function(_0x10ebc9){return!_[_0x9da1('0x5c')]([_0x9da1('0x5d'),_0x9da1('0x5e'),_0x9da1('0x5f'),'IS\x20NOT\x20EMPTY'],_0x10ebc9);};var _0x5f5dc2=function(_0x454a68){if(!_0x454a68||!_0x454a68['rules']['length']){return'';}for(var _0x5b4a05='(',_0x6f86c3=0x0;_0x6f86c3<_0x454a68['rules'][_0x9da1('0x33')];_0x6f86c3+=0x1){_0x6f86c3>0x0&&(_0x5b4a05+='\x20'+_0x454a68['operator']+'\x20');_0x5b4a05+=_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x61')]?_0x5f5dc2(_0x454a68['rules'][_0x6f86c3][_0x9da1('0x61')]):_0x454a68[_0x9da1('0x60')][_0x6f86c3]['field']+'\x20'+_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x62')]+(_0x27ac84(_0x454a68['rules'][_0x6f86c3]['condition'])?'\x20'+_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x63')]:'');}return _0x5b4a05+')';};var _0x21d00c={'where':{'id':_0x4607a9['params']['id']}},_0x3ca531,_0x236b01,_0x44d7fe,_0x5cb102,_0x3d2c25;_0x21d00c=_['merge']({},_0x21d00c,_0x4607a9[_0x9da1('0x64')]);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0x21d00c)[_0x9da1('0x21')](function(_0x3382b1){if(_0x3382b1){_0x3ca531=_0x3382b1;return _0x3382b1[_0x9da1('0x66')]();}return null;})[_0x9da1('0x21')](function(_0x1f2a4b){if(_0x1f2a4b){if(!_0x1f2a4b[_0x9da1('0x33')]){throw new db['Sequelize'][(_0x9da1('0x67'))](_0x9da1('0x68'),0x193);}_0x236b01=_0x1f2a4b;return db[_0x9da1('0x69')][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x491fcb){if(_0x491fcb){_0x44d7fe=_[_0x9da1('0x6a')](_0x491fcb,'id');var _0x13fadd;var _0x419f78=squel[_0x9da1('0x6b')]();_0x419f78[_0x9da1('0x6c')](_0x3ca531[_0x9da1('0x6d')]);for(var _0x55a6d2=0x0;_0x55a6d2<_0x236b01[_0x9da1('0x33')];_0x55a6d2+=0x1){_0x13fadd=_0x236b01[_0x55a6d2]['MetricId']?_0x44d7fe[_0x236b01[_0x55a6d2][_0x9da1('0x6e')]]['metric']:_0x236b01[_0x55a6d2][_0x9da1('0x6f')];_0x13fadd=_0x236b01[_0x55a6d2][_0x9da1('0x70')]?_[_0x9da1('0x71')](_0x5bda2a[_0x236b01[_0x55a6d2][_0x9da1('0x70')]],'%s',_0x13fadd):_0x13fadd;_0x13fadd=_0x236b01[_0x55a6d2]['format']?_['replace'](_0xc27b00[_0x236b01[_0x55a6d2]['format']],'%s',_0x13fadd):_0x13fadd;if(_0x236b01[_0x55a6d2][_0x9da1('0x72')]){_0x419f78[_0x9da1('0x61')](_0x13fadd);}_0x236b01[_0x55a6d2][_0x9da1('0x73')]&&_0x419f78[_0x9da1('0x74')](_0x13fadd,_0x236b01[_0x55a6d2]['orderBy']==='DESC'?![]:!![]);_0x419f78[_0x9da1('0x6f')](_0x13fadd,_0x236b01[_0x55a6d2][_0x9da1('0x75')]||_0x13fadd);}if(_0x3ca531[_0x9da1('0x76')]){_0x3ca531['joins']=JSON['parse'](_0x3ca531[_0x9da1('0x76')]);for(var _0x1deb93=0x0;_0x1deb93<_0x3ca531[_0x9da1('0x76')]['length'];_0x1deb93+=0x1){if(_0x3ca531['joins'][_0x1deb93][_0x9da1('0x39')]&&_[_0x9da1('0x5c')](_0xfa8d3f,_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x39')])&&_0x3ca531[_0x9da1('0x76')][_0x1deb93]['parentKey']&&_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')]&&_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x78')]){_0x419f78[_0x3ca531['joins'][_0x1deb93][_0x9da1('0x39')]](_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')],null,util['format'](_0x9da1('0x79'),_0x3ca531[_0x9da1('0x6d')],_0x3ca531[_0x9da1('0x76')][_0x1deb93]['parentKey'],_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')],_0x3ca531['joins'][_0x1deb93][_0x9da1('0x78')]));}}}if(_0x3ca531['conditions']){_0x3ca531[_0x9da1('0x7a')]=JSON['parse'](_0x3ca531[_0x9da1('0x7a')]);_0x419f78[_0x9da1('0x37')](_0x5f5dc2(_0x3ca531[_0x9da1('0x7a')][_0x9da1('0x61')]));}_0x3d2c25=_0x419f78[_0x9da1('0x7b')]();_0x419f78[_0x9da1('0x1c')](_0x3c01c3);_0x419f78[_0x9da1('0x1a')](0x0);logger[_0x9da1('0x7c')](_0x9da1('0x7d'),_0x419f78[_0x9da1('0x7e')]());return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x419f78[_0x9da1('0x7e')](),{'type':dbH['sequelize'][_0x9da1('0x80')][_0x9da1('0x81')]});}})[_0x9da1('0x21')](respondWithResult(_0x2020d0,null))[_0x9da1('0x40')](handleError(_0x2020d0,null));};function runReport(_0x162597,_0x4f39bc,_0x1ca102){var _0x2eb5e6=_0x4f39bc['name'];var _0x4a4cda=0xa;var _0x84f8d8=[_0x9da1('0x4e'),_0x9da1('0x82'),_0x9da1('0x4f'),_0x9da1('0x50')];var _0x4701b3={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0x3a0a84={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':_0x9da1('0x5a'),'HOUR':_0x9da1('0x83'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9da1('0x84')};var _0x354c5a=function(_0x53ab6a){return!_[_0x9da1('0x5c')](['IS\x20NULL',_0x9da1('0x5e'),'IS\x20EMPTY',_0x9da1('0x85')],_0x53ab6a);};var _0x106bd9=function(_0x347cb8){if(!_0x347cb8||!_0x347cb8[_0x9da1('0x60')][_0x9da1('0x33')]){return'';}for(var _0x3e331a='(',_0x1f785c=0x0;_0x1f785c<_0x347cb8[_0x9da1('0x60')][_0x9da1('0x33')];_0x1f785c+=0x1){_0x1f785c>0x0&&(_0x3e331a+='\x20'+_0x347cb8[_0x9da1('0x86')]+'\x20');_0x3e331a+=_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x61')]?_0x106bd9(_0x347cb8['rules'][_0x1f785c][_0x9da1('0x61')]):_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x6f')]+'\x20'+_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x62')]+(_0x354c5a(_0x347cb8[_0x9da1('0x60')][_0x1f785c]['condition'])?'\x20'+_0x347cb8['rules'][_0x1f785c][_0x9da1('0x63')]:'');}return _0x3e331a+')';};var _0xdecc82={'where':{'id':_0x162597['id']}},_0xe12dd7,_0x4cd85f,_0x4bf74c,_0x28335d,_0x175b4b;_0xdecc82=_[_0x9da1('0x3b')]({},_0xdecc82,_0x1ca102);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0xdecc82)[_0x9da1('0x21')](function(_0x5561f0){if(_0x5561f0){_0xe12dd7=_0x5561f0;return _0x5561f0[_0x9da1('0x66')]();}return null;})[_0x9da1('0x21')](function(_0x5a64fd){if(_0x5a64fd){if(!_0x5a64fd['length']){throw new db[(_0x9da1('0x87'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4cd85f=_0x5a64fd;return db[_0x9da1('0x69')][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x18ae08){if(_0x18ae08){_0x4bf74c=_[_0x9da1('0x6a')](_0x18ae08,'id');var _0x30065d;var _0x40a2ef=squel[_0x9da1('0x6b')]();_0x40a2ef['from'](_0xe12dd7['table']);for(var _0xd10ba4=0x0;_0xd10ba4<_0x4cd85f[_0x9da1('0x33')];_0xd10ba4+=0x1){_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x6e')]?_0x4bf74c[_0x4cd85f[_0xd10ba4][_0x9da1('0x6e')]][_0x9da1('0x88')]:_0x4cd85f[_0xd10ba4][_0x9da1('0x6f')];_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x70')]?_[_0x9da1('0x71')](_0x4701b3[_0x4cd85f[_0xd10ba4]['function']],'%s',_0x30065d):_0x30065d;_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x89')]?_['replace'](_0x3a0a84[_0x4cd85f[_0xd10ba4][_0x9da1('0x89')]],'%s',_0x30065d):_0x30065d;if(_0x4cd85f[_0xd10ba4][_0x9da1('0x72')]){_0x40a2ef[_0x9da1('0x61')](_0x30065d);}_0x4cd85f[_0xd10ba4][_0x9da1('0x73')]&&_0x40a2ef[_0x9da1('0x74')](_0x30065d,_0x4cd85f[_0xd10ba4][_0x9da1('0x73')]===_0x9da1('0x8a')?![]:!![]);_0x40a2ef['field'](_0x30065d,_0x4cd85f[_0xd10ba4][_0x9da1('0x75')]||_0x30065d);}if(_0xe12dd7['joins']){_0xe12dd7[_0x9da1('0x76')]=JSON[_0x9da1('0x8b')](_0xe12dd7[_0x9da1('0x76')]);for(var _0x22b679=0x0;_0x22b679<_0xe12dd7['joins'][_0x9da1('0x33')];_0x22b679+=0x1){if(_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')]&&_[_0x9da1('0x5c')](_0x84f8d8,_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')])&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x8c')]&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x77')]&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x78')]){_0x40a2ef[_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')]](_0xe12dd7['joins'][_0x22b679][_0x9da1('0x77')],null,util['format'](_0x9da1('0x79'),_0xe12dd7['table'],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x8c')],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x77')],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x78')]));}}}if(_0xe12dd7[_0x9da1('0x7a')]){_0xe12dd7[_0x9da1('0x7a')]=JSON['parse'](_0xe12dd7[_0x9da1('0x7a')]);_0x40a2ef[_0x9da1('0x37')](_0x106bd9(_0xe12dd7['conditions'][_0x9da1('0x61')]));}_0x175b4b=_0x40a2ef[_0x9da1('0x7b')]();_0x40a2ef[_0x9da1('0x1c')](_0x4a4cda);_0x40a2ef['offset'](0x0);return;}})['then'](function(){if(_0x4f39bc['output']===_0x9da1('0x8d')){return null;}var _0x3b17aa=_[_0x9da1('0x3b')](_0x4f39bc,{'name':_0x4f39bc['fullPath']||_0x4f39bc['name']||_0xe12dd7[_0x9da1('0x27')],'basename':_0x2eb5e6,'savename':util[_0x9da1('0x89')]('%s-%s.%s',_0x4f39bc[_0x9da1('0x27')]||_0xe12dd7['name'],require('randomstring')['generate'](0x4),_0x4f39bc[_0x9da1('0x8e')]||_0x9da1('0x8f')),'reportId':_0xe12dd7['id'],'reportType':_0x9da1('0x90')});return db[_0x9da1('0x91')][_0x9da1('0x41')](_0x3b17aa,{'raw':!![]});})[_0x9da1('0x21')](function(_0x2aac99){if(_0xe12dd7[_0x9da1('0x6d')]===_0x9da1('0x92')){_0x175b4b[_0x9da1('0x37')](_0xe12dd7[_0x9da1('0x6d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x4f39bc['startDate'],_0x4f39bc['endDate']);}else{_0x175b4b[_0x9da1('0x37')](_0xe12dd7[_0x9da1('0x6d')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4f39bc[_0x9da1('0x93')],_0x4f39bc[_0x9da1('0x94')]);}if(_0x2aac99){logger[_0x9da1('0x95')](_0x9da1('0x96'),_0x175b4b[_0x9da1('0x7e')]());require(_0x9da1('0x97'))[_0x9da1('0x98')](path[_0x9da1('0x4e')](__dirname,'../../components/export/',_0x2aac99[_0x9da1('0x8e')]),[_0x2aac99['id'],_0x175b4b[_0x9da1('0x7e')](),path[_0x9da1('0x4e')](__dirname,_0x9da1('0x99'),_0x2aac99[_0x9da1('0x9a')]),_0x2eb5e6]);return _0x2aac99;}else{var _0x5ad3f8=squel[_0x9da1('0x6b')]();_0x5ad3f8['from']('('+_0x175b4b[_0x9da1('0x7e')]()+')',_0x9da1('0x9b'));_0x5ad3f8[_0x9da1('0x6f')]('COUNT(*)','count');_0x175b4b[_0x9da1('0x1c')](_0x4f39bc[_0x9da1('0x1c')]||_0x4a4cda);_0x175b4b[_0x9da1('0x1a')](_0x4f39bc['offset']||0x0);return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x5ad3f8['toString'](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')]['SELECT']})['then'](function(_0x489b3f){if(!_0x489b3f[_0x9da1('0x33')]){_0x28335d=0x0;}else{_0x28335d=_0x489b3f[0x0]['count']||0x0;}return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x175b4b[_0x9da1('0x7e')](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')][_0x9da1('0x81')]});})['then'](function(_0x355a71){return{'rows':_0x355a71||[],'count':_0x28335d};});}});}exports[_0x9da1('0x9c')]=function(_0x492e1a,_0x449a17){return runReport(_0x492e1a[_0x9da1('0x4c')],_0x492e1a[_0x9da1('0x2e')],_0x492e1a[_0x9da1('0x64')])['then'](respondWithResult(_0x449a17,null))[_0x9da1('0x40')](handleError(_0x449a17,null));};exports[_0x9da1('0x9d')]=runReport;exports[_0x9da1('0x2e')]=function(_0x8280a9,_0x374754){var _0x1e466a=0xa;var _0x3f9133=[_0x9da1('0x4e'),'left_join',_0x9da1('0x4f'),'cross_join'];var _0x3dd3e0={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0x52e4a6={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x9da1('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x4aa903=function(_0x55d7f2){return!_['includes'](['IS\x20NULL',_0x9da1('0x5e'),_0x9da1('0x5f'),_0x9da1('0x85')],_0x55d7f2);};var _0x3212ad=function(_0x5ac65b){if(!_0x5ac65b||!_0x5ac65b[_0x9da1('0x60')][_0x9da1('0x33')]){return'';}for(var _0x21a99d='(',_0xd19a7c=0x0;_0xd19a7c<_0x5ac65b[_0x9da1('0x60')][_0x9da1('0x33')];_0xd19a7c+=0x1){_0xd19a7c>0x0&&(_0x21a99d+='\x20'+_0x5ac65b[_0x9da1('0x86')]+'\x20');_0x21a99d+=_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x61')]?_0x3212ad(_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x61')]):_0x5ac65b['rules'][_0xd19a7c][_0x9da1('0x6f')]+'\x20'+_0x5ac65b[_0x9da1('0x60')][_0xd19a7c]['condition']+(_0x4aa903(_0x5ac65b['rules'][_0xd19a7c][_0x9da1('0x62')])?'\x20'+_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x63')]:'');}return _0x21a99d+')';};var _0xb14af1={'where':{'id':_0x8280a9[_0x9da1('0x4c')]['id']}},_0x245566,_0x5b2591,_0x3c51e3,_0x54b83d,_0x23bf86;_0xb14af1=_['merge']({},_0xb14af1,_0x8280a9[_0x9da1('0x64')]);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0xb14af1)[_0x9da1('0x21')](function(_0x4bb140){if(_0x4bb140){_0x245566=_0x4bb140;return _0x4bb140[_0x9da1('0x66')]();}return null;})['then'](function(_0x47cbdd){if(_0x47cbdd){if(!_0x47cbdd['length']){throw new db[(_0x9da1('0x87'))][(_0x9da1('0x67'))](_0x9da1('0x68'),0x193);}_0x5b2591=_0x47cbdd;return db['AnalyticMetric'][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x5e1e24){if(_0x5e1e24){_0x3c51e3=_[_0x9da1('0x6a')](_0x5e1e24,'id');var _0x49ddec;var _0x407218=squel['select']();_0x407218['from'](_0x245566['table']);for(var _0x316fee=0x0;_0x316fee<_0x5b2591['length'];_0x316fee+=0x1){_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x6e')]?_0x3c51e3[_0x5b2591[_0x316fee][_0x9da1('0x6e')]]['metric']:_0x5b2591[_0x316fee]['field'];_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x70')]?_['replace'](_0x3dd3e0[_0x5b2591[_0x316fee][_0x9da1('0x70')]],'%s',_0x49ddec):_0x49ddec;_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x89')]?_['replace'](_0x52e4a6[_0x5b2591[_0x316fee]['format']],'%s',_0x49ddec):_0x49ddec;if(_0x5b2591[_0x316fee][_0x9da1('0x72')]){_0x407218[_0x9da1('0x61')](_0x49ddec);}_0x5b2591[_0x316fee][_0x9da1('0x73')]&&_0x407218[_0x9da1('0x74')](_0x49ddec,_0x5b2591[_0x316fee]['orderBy']==='DESC'?![]:!![]);_0x407218[_0x9da1('0x6f')](_0x49ddec,_0x5b2591[_0x316fee][_0x9da1('0x75')]||_0x49ddec);}if(_0x245566[_0x9da1('0x76')]){_0x245566[_0x9da1('0x76')]=JSON[_0x9da1('0x8b')](_0x245566['joins']);for(var _0x56ec7d=0x0;_0x56ec7d<_0x245566[_0x9da1('0x76')][_0x9da1('0x33')];_0x56ec7d+=0x1){if(_0x245566['joins'][_0x56ec7d][_0x9da1('0x39')]&&_['includes'](_0x3f9133,_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x39')])&&_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x8c')]&&_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x77')]&&_0x245566['joins'][_0x56ec7d][_0x9da1('0x78')]){_0x407218[_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x39')]](_0x245566[_0x9da1('0x76')][_0x56ec7d]['foreignTable'],null,util[_0x9da1('0x89')](_0x9da1('0x79'),_0x245566[_0x9da1('0x6d')],_0x245566['joins'][_0x56ec7d]['parentKey'],_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x77')],_0x245566['joins'][_0x56ec7d]['foreignKey']));}}}if(_0x245566[_0x9da1('0x7a')]){_0x245566[_0x9da1('0x7a')]=JSON[_0x9da1('0x8b')](_0x245566[_0x9da1('0x7a')]);_0x407218[_0x9da1('0x37')](_0x3212ad(_0x245566['conditions'][_0x9da1('0x61')]));}_0x23bf86=_0x407218['clone']();_0x407218[_0x9da1('0x1c')](_0x1e466a);_0x407218[_0x9da1('0x1a')](0x0);logger[_0x9da1('0x7c')](_0x9da1('0x7d'),_0x407218['toString']());return dbH['sequelize'][_0x9da1('0x2e')](_0x407218[_0x9da1('0x7e')](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')][_0x9da1('0x81')]});}})[_0x9da1('0x21')](function(){return{'sql':_0x23bf86['toString']()};})[_0x9da1('0x21')](respondWithResult(_0x374754,null))[_0x9da1('0x40')](handleError(_0x374754,null));};
\ No newline at end of file
+var _0xdbf5=['includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','function','replace','format','groupBy','orderBy','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','parentKey','conditions','debug','Limited\x20Query:','toString','SELECT','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','IS\x20EMPTY','ValidationErrorItem','metric','DESC','clone','output','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','cdr','startDate','endDate','info','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','sequelize','QueryTypes','run','Sequelize','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','dbH','end','status','json','limit','undefined','count','set','Content-Range','reject','save','then','destroy','get','DefaultReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','find','userProfileId','catch','update','join','left_join','right_join','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdbf5,0x18c));var _0x5dbf=function(_0xf883f9,_0x1e6fa1){_0xf883f9=_0xf883f9-0x0;var _0x3c6e0f=_0xdbf5[_0xf883f9];return _0x3c6e0f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dbf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5dbf('0x1'));var moment=require(_0x5dbf('0x2'));var BPromise=require(_0x5dbf('0x3'));var Mustache=require(_0x5dbf('0x4'));var util=require(_0x5dbf('0x5'));var path=require(_0x5dbf('0x6'));var sox=require(_0x5dbf('0x7'));var csv=require(_0x5dbf('0x8'));var ejs=require(_0x5dbf('0x9'));var fs=require('fs');var fs_extra=require(_0x5dbf('0xa'));var _=require(_0x5dbf('0xb'));var squel=require(_0x5dbf('0xc'));var crypto=require(_0x5dbf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5dbf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5dbf('0xf'));var Papa=require(_0x5dbf('0x10'));var Redis=require(_0x5dbf('0x11'));var authService=require(_0x5dbf('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5dbf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5dbf('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5dbf('0x15'));var db=require('../../mysqldb')['db'];var dbH=require(_0x5dbf('0x16'))[_0x5dbf('0x17')];function respondWithStatusCode(_0x1453a9,_0x7cb848){_0x7cb848=_0x7cb848||0xcc;return function(_0x14493a){if(_0x14493a){return _0x1453a9['sendStatus'](_0x7cb848);}return _0x1453a9['status'](_0x7cb848)[_0x5dbf('0x18')]();};}function respondWithResult(_0x3480c8,_0x48e7fd){_0x48e7fd=_0x48e7fd||0xc8;return function(_0x19624e){if(_0x19624e){return _0x3480c8[_0x5dbf('0x19')](_0x48e7fd)[_0x5dbf('0x1a')](_0x19624e);}};}function respondWithFilteredResult(_0x2dfa44,_0x181816){return function(_0x472eb9){if(_0x472eb9){var _0x2d32cc=typeof _0x181816['offset']==='undefined'&&typeof _0x181816[_0x5dbf('0x1b')]===_0x5dbf('0x1c');var _0x39c7aa=_0x472eb9[_0x5dbf('0x1d')];var _0x20c2b0=_0x2d32cc?0x0:_0x181816['offset'];var _0x11cd00=_0x2d32cc?_0x472eb9['count']:_0x181816['offset']+_0x181816['limit'];var _0x23d1e7;if(_0x11cd00>=_0x39c7aa){_0x11cd00=_0x39c7aa;_0x23d1e7=0xc8;}else{_0x23d1e7=0xce;}_0x2dfa44[_0x5dbf('0x19')](_0x23d1e7);return _0x2dfa44[_0x5dbf('0x1e')](_0x5dbf('0x1f'),_0x20c2b0+'-'+_0x11cd00+'/'+_0x39c7aa)[_0x5dbf('0x1a')](_0x472eb9);}return null;};}function patchUpdates(_0x5b2518){return function(_0x2764ea){try{jsonpatch['apply'](_0x2764ea,_0x5b2518,!![]);}catch(_0xb68f92){return BPromise[_0x5dbf('0x20')](_0xb68f92);}return _0x2764ea[_0x5dbf('0x21')]();};}function saveUpdates(_0x43a612,_0x3b763c){return function(_0x2f154e){if(_0x2f154e){return _0x2f154e['update'](_0x43a612)[_0x5dbf('0x22')](function(_0x3e3a2d){return _0x3e3a2d;});}return null;};}function removeEntity(_0x2d3e1b,_0x2079fc){return function(_0x2763ec){if(_0x2763ec){return _0x2763ec[_0x5dbf('0x23')]()[_0x5dbf('0x22')](function(){var _0x20ab1b=_0x2763ec[_0x5dbf('0x24')]({'plain':!![]});var _0x15a790=_0x5dbf('0x25');return db[_0x5dbf('0x26')][_0x5dbf('0x23')]({'where':{'type':_0x15a790,'resourceId':_0x20ab1b['id']}})[_0x5dbf('0x22')](function(){return _0x2763ec;});})[_0x5dbf('0x22')](function(){_0x2d3e1b[_0x5dbf('0x19')](0xcc)[_0x5dbf('0x18')]();});}};}function handleEntityNotFound(_0x3f8341,_0x159e61){return function(_0x22ec42){if(!_0x22ec42){_0x3f8341[_0x5dbf('0x27')](0x194);}return _0x22ec42;};}function handleError(_0x471027,_0x21cd00){_0x21cd00=_0x21cd00||0x1f4;return function(_0x5768b7){logger[_0x5dbf('0x28')](_0x5768b7[_0x5dbf('0x29')]);if(_0x5768b7[_0x5dbf('0x2a')]){delete _0x5768b7[_0x5dbf('0x2a')];}_0x471027[_0x5dbf('0x19')](_0x21cd00)[_0x5dbf('0x2b')](_0x5768b7);};}exports[_0x5dbf('0x2c')]=function(_0x31d57a,_0x406ce6){var _0x273b63={},_0x294dd7={},_0x50a307={'count':0x0,'rows':[]};var _0x4c1587=_[_0x5dbf('0x2d')](db[_0x5dbf('0x2e')][_0x5dbf('0x2f')],function(_0x3b73ad){return{'name':_0x3b73ad[_0x5dbf('0x30')],'type':_0x3b73ad['type']['key']};});_0x294dd7[_0x5dbf('0x31')]=_[_0x5dbf('0x2d')](_0x4c1587,'name');_0x294dd7[_0x5dbf('0x32')]=_[_0x5dbf('0x33')](_0x31d57a[_0x5dbf('0x32')]);_0x294dd7[_0x5dbf('0x34')]=_[_0x5dbf('0x35')](_0x294dd7['model'],_0x294dd7[_0x5dbf('0x32')]);_0x273b63[_0x5dbf('0x36')]=_[_0x5dbf('0x35')](_0x294dd7[_0x5dbf('0x31')],qs[_0x5dbf('0x37')](_0x31d57a['query'][_0x5dbf('0x37')]));_0x273b63[_0x5dbf('0x36')]=_0x273b63[_0x5dbf('0x36')][_0x5dbf('0x38')]?_0x273b63['attributes']:_0x294dd7[_0x5dbf('0x31')];if(!_0x31d57a[_0x5dbf('0x32')][_0x5dbf('0x39')](_0x5dbf('0x3a'))){_0x273b63[_0x5dbf('0x1b')]=qs[_0x5dbf('0x1b')](_0x31d57a[_0x5dbf('0x32')][_0x5dbf('0x1b')]);_0x273b63[_0x5dbf('0x3b')]=qs[_0x5dbf('0x3b')](_0x31d57a[_0x5dbf('0x32')]['offset']);}_0x273b63[_0x5dbf('0x3c')]=qs[_0x5dbf('0x3d')](_0x31d57a[_0x5dbf('0x32')]['sort']);_0x273b63[_0x5dbf('0x3e')]=qs[_0x5dbf('0x34')](_[_0x5dbf('0x3f')](_0x31d57a['query'],_0x294dd7[_0x5dbf('0x34')]),_0x4c1587);if(_0x31d57a[_0x5dbf('0x32')][_0x5dbf('0x40')]){_0x273b63['where']=_[_0x5dbf('0x41')](_0x273b63[_0x5dbf('0x3e')],{'$or':_[_0x5dbf('0x2d')](_0x4c1587,function(_0x260c9f){if(_0x260c9f[_0x5dbf('0x42')]!==_0x5dbf('0x43')){var _0x321ae3={};_0x321ae3[_0x260c9f[_0x5dbf('0x2a')]]={'$like':'%'+_0x31d57a['query']['filter']+'%'};return _0x321ae3;}})});}_0x273b63=_['merge']({},_0x273b63,_0x31d57a['options']);var _0x28b28f={'where':_0x273b63[_0x5dbf('0x3e')]};return db['AnalyticDefaultReport'][_0x5dbf('0x1d')](_0x28b28f)[_0x5dbf('0x22')](function(_0x5a60e8){_0x50a307[_0x5dbf('0x1d')]=_0x5a60e8;if(_0x31d57a[_0x5dbf('0x32')][_0x5dbf('0x44')]){_0x273b63[_0x5dbf('0x45')]=[{'all':!![]}];}return db[_0x5dbf('0x2e')][_0x5dbf('0x46')](_0x273b63);})[_0x5dbf('0x22')](function(_0x1c020a){_0x50a307[_0x5dbf('0x47')]=_0x1c020a;return _0x50a307;})[_0x5dbf('0x22')](respondWithFilteredResult(_0x406ce6,_0x273b63))['catch'](handleError(_0x406ce6,null));};exports[_0x5dbf('0x48')]=function(_0x22f958,_0xec1d28){var _0x50880d={'raw':!![],'where':{'id':_0x22f958[_0x5dbf('0x49')]['id']}},_0x16b0ff={};_0x16b0ff[_0x5dbf('0x31')]=_[_0x5dbf('0x33')](db['AnalyticDefaultReport'][_0x5dbf('0x2f')]);_0x16b0ff['query']=_[_0x5dbf('0x33')](_0x22f958[_0x5dbf('0x32')]);_0x16b0ff[_0x5dbf('0x34')]=_[_0x5dbf('0x35')](_0x16b0ff['model'],_0x16b0ff['query']);_0x50880d[_0x5dbf('0x36')]=_[_0x5dbf('0x35')](_0x16b0ff[_0x5dbf('0x31')],qs['fields'](_0x22f958[_0x5dbf('0x32')]['fields']));_0x50880d['attributes']=_0x50880d['attributes']['length']?_0x50880d[_0x5dbf('0x36')]:_0x16b0ff[_0x5dbf('0x31')];if(_0x22f958['query'][_0x5dbf('0x44')]){_0x50880d[_0x5dbf('0x45')]=[{'all':!![]}];}_0x50880d=_['merge']({},_0x50880d,_0x22f958[_0x5dbf('0x4a')]);return db[_0x5dbf('0x2e')]['find'](_0x50880d)[_0x5dbf('0x22')](handleEntityNotFound(_0xec1d28,null))['then'](respondWithResult(_0xec1d28,null))['catch'](handleError(_0xec1d28,null));};exports[_0x5dbf('0x4b')]=function(_0x2a3d30,_0x17a1c0){return db['AnalyticDefaultReport']['create'](_0x2a3d30[_0x5dbf('0x4c')],{})[_0x5dbf('0x22')](function(_0x21f477){var _0x307a00=_0x2a3d30[_0x5dbf('0x4d')][_0x5dbf('0x24')]({'plain':!![]});if(!_0x307a00)throw new Error(_0x5dbf('0x4e'));if(_0x307a00[_0x5dbf('0x4f')]==='user'){var _0x3f38a0=_0x21f477[_0x5dbf('0x24')]({'plain':!![]});var _0x2927a3=_0x5dbf('0x50');return db[_0x5dbf('0x51')][_0x5dbf('0x52')]({'where':{'name':_0x2927a3,'userProfileId':_0x307a00[_0x5dbf('0x53')]},'raw':!![]})['then'](function(_0x1b0b13){if(_0x1b0b13&&_0x1b0b13['autoAssociation']===0x0){return db[_0x5dbf('0x26')][_0x5dbf('0x4b')]({'name':_0x3f38a0[_0x5dbf('0x2a')],'resourceId':_0x3f38a0['id'],'type':_0x5dbf('0x25'),'sectionId':_0x1b0b13['id']},{})[_0x5dbf('0x22')](function(){return _0x21f477;});}else{return _0x21f477;}})[_0x5dbf('0x54')](function(_0x353d0f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x353d0f);throw _0x353d0f;});}return _0x21f477;})['then'](respondWithResult(_0x17a1c0,0xc9))[_0x5dbf('0x54')](handleError(_0x17a1c0,null));};exports[_0x5dbf('0x55')]=function(_0x36a787,_0x56c8b2){if(_0x36a787['body']['id']){delete _0x36a787[_0x5dbf('0x4c')]['id'];}return db[_0x5dbf('0x2e')][_0x5dbf('0x52')]({'where':{'id':_0x36a787['params']['id']}})[_0x5dbf('0x22')](handleEntityNotFound(_0x56c8b2,null))['then'](saveUpdates(_0x36a787[_0x5dbf('0x4c')],null))[_0x5dbf('0x22')](respondWithResult(_0x56c8b2,null))[_0x5dbf('0x54')](handleError(_0x56c8b2,null));};exports['destroy']=function(_0x55fd51,_0x1b316d){return db[_0x5dbf('0x2e')][_0x5dbf('0x52')]({'where':{'id':_0x55fd51[_0x5dbf('0x49')]['id']}})['then'](handleEntityNotFound(_0x1b316d,null))[_0x5dbf('0x22')](removeEntity(_0x1b316d,null))[_0x5dbf('0x54')](handleError(_0x1b316d,null));};exports['preview']=function(_0x5485f3,_0x19ec03){var _0x14bdb1=0xa;var _0x197e8c=[_0x5dbf('0x56'),_0x5dbf('0x57'),_0x5dbf('0x58'),'cross_join'];var _0x4107f1={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x5dbf('0x59'),'MIN':'MIN(%s)','AVG':_0x5dbf('0x5a'),'GROUP_CONCAT':_0x5dbf('0x5b'),'GROUP_CONCAT ASC':_0x5dbf('0x5c'),'GROUP_CONCAT DESC':_0x5dbf('0x5d')};var _0x461ffb={'SEC_TO_TIME':_0x5dbf('0x5e'),'DATE':_0x5dbf('0x5f'),'HOUR':_0x5dbf('0x60'),'ROUND':_0x5dbf('0x61'),'UNIX_TIMESTAMP':_0x5dbf('0x62')};var _0x3a84c2=function(_0x2ca889){return!_[_0x5dbf('0x63')]([_0x5dbf('0x64'),_0x5dbf('0x65'),'IS\x20EMPTY',_0x5dbf('0x66')],_0x2ca889);};var _0x553be4=function(_0xb0a9bf){if(!_0xb0a9bf||!_0xb0a9bf[_0x5dbf('0x67')][_0x5dbf('0x38')]){return'';}for(var _0x110224='(',_0x5a975a=0x0;_0x5a975a<_0xb0a9bf[_0x5dbf('0x67')][_0x5dbf('0x38')];_0x5a975a+=0x1){_0x5a975a>0x0&&(_0x110224+='\x20'+_0xb0a9bf[_0x5dbf('0x68')]+'\x20');_0x110224+=_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x69')]?_0x553be4(_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a]['group']):_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x6a')]+'\x20'+_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x6b')]+(_0x3a84c2(_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x6b')])?'\x20'+_0xb0a9bf[_0x5dbf('0x67')][_0x5a975a][_0x5dbf('0x6c')]:'');}return _0x110224+')';};var _0x12d69b={'where':{'id':_0x5485f3[_0x5dbf('0x49')]['id']}},_0x3b53da,_0x13c8ab,_0x2997a8,_0x5d7a37,_0x52109d;_0x12d69b=_[_0x5dbf('0x41')]({},_0x12d69b,_0x5485f3[_0x5dbf('0x4a')]);return db[_0x5dbf('0x2e')][_0x5dbf('0x52')](_0x12d69b)[_0x5dbf('0x22')](function(_0x1b42cf){if(_0x1b42cf){_0x3b53da=_0x1b42cf;return _0x1b42cf[_0x5dbf('0x6d')]();}return null;})[_0x5dbf('0x22')](function(_0x57c568){if(_0x57c568){if(!_0x57c568['length']){throw new db['Sequelize']['ValidationErrorItem'](_0x5dbf('0x6e'),0x193);}_0x13c8ab=_0x57c568;return db[_0x5dbf('0x6f')][_0x5dbf('0x46')]({'raw':!![]});}return null;})[_0x5dbf('0x22')](function(_0x29c4d9){if(_0x29c4d9){_0x2997a8=_[_0x5dbf('0x70')](_0x29c4d9,'id');var _0x5331ff;var _0x5bb990=squel[_0x5dbf('0x71')]();_0x5bb990[_0x5dbf('0x72')](_0x3b53da['table']);for(var _0x1728b9=0x0;_0x1728b9<_0x13c8ab[_0x5dbf('0x38')];_0x1728b9+=0x1){_0x5331ff=_0x13c8ab[_0x1728b9][_0x5dbf('0x73')]?_0x2997a8[_0x13c8ab[_0x1728b9][_0x5dbf('0x73')]]['metric']:_0x13c8ab[_0x1728b9][_0x5dbf('0x6a')];_0x5331ff=_0x13c8ab[_0x1728b9][_0x5dbf('0x74')]?_[_0x5dbf('0x75')](_0x4107f1[_0x13c8ab[_0x1728b9][_0x5dbf('0x74')]],'%s',_0x5331ff):_0x5331ff;_0x5331ff=_0x13c8ab[_0x1728b9][_0x5dbf('0x76')]?_['replace'](_0x461ffb[_0x13c8ab[_0x1728b9][_0x5dbf('0x76')]],'%s',_0x5331ff):_0x5331ff;if(_0x13c8ab[_0x1728b9][_0x5dbf('0x77')]){_0x5bb990[_0x5dbf('0x69')](_0x5331ff);}_0x13c8ab[_0x1728b9][_0x5dbf('0x78')]&&_0x5bb990['order'](_0x5331ff,_0x13c8ab[_0x1728b9][_0x5dbf('0x78')]==='DESC'?![]:!![]);_0x5bb990[_0x5dbf('0x6a')](_0x5331ff,_0x13c8ab[_0x1728b9][_0x5dbf('0x79')]||_0x5331ff);}if(_0x3b53da[_0x5dbf('0x7a')]){_0x3b53da['joins']=JSON[_0x5dbf('0x7b')](_0x3b53da[_0x5dbf('0x7a')]);for(var _0x4166ce=0x0;_0x4166ce<_0x3b53da[_0x5dbf('0x7a')]['length'];_0x4166ce+=0x1){if(_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x42')]&&_[_0x5dbf('0x63')](_0x197e8c,_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x42')])&&_0x3b53da[_0x5dbf('0x7a')][_0x4166ce]['parentKey']&&_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x7c')]&&_0x3b53da['joins'][_0x4166ce][_0x5dbf('0x7d')]){_0x5bb990[_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x42')]](_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x7c')],null,util[_0x5dbf('0x76')](_0x5dbf('0x7e'),_0x3b53da[_0x5dbf('0x7f')],_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x80')],_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x7c')],_0x3b53da[_0x5dbf('0x7a')][_0x4166ce][_0x5dbf('0x7d')]));}}}if(_0x3b53da[_0x5dbf('0x81')]){_0x3b53da[_0x5dbf('0x81')]=JSON['parse'](_0x3b53da[_0x5dbf('0x81')]);_0x5bb990[_0x5dbf('0x3e')](_0x553be4(_0x3b53da[_0x5dbf('0x81')][_0x5dbf('0x69')]));}_0x52109d=_0x5bb990['clone']();_0x5bb990[_0x5dbf('0x1b')](_0x14bdb1);_0x5bb990[_0x5dbf('0x3b')](0x0);logger[_0x5dbf('0x82')](_0x5dbf('0x83'),_0x5bb990[_0x5dbf('0x84')]());return dbH['sequelize'][_0x5dbf('0x32')](_0x5bb990[_0x5dbf('0x84')](),{'type':dbH['sequelize']['QueryTypes'][_0x5dbf('0x85')]});}})[_0x5dbf('0x22')](respondWithResult(_0x19ec03,null))[_0x5dbf('0x54')](handleError(_0x19ec03,null));};function runReport(_0x8ca7de,_0x14b21b,_0x23ec75){var _0x22339b=_0x14b21b['name'];var _0x310078=0xa;var _0x3b01c0=[_0x5dbf('0x56'),_0x5dbf('0x57'),_0x5dbf('0x58'),_0x5dbf('0x86')];var _0x4cceb1={'SUM':_0x5dbf('0x87'),'COUNT':_0x5dbf('0x88'),'COUNT DISTINCT':_0x5dbf('0x89'),'MAX':_0x5dbf('0x59'),'MIN':_0x5dbf('0x8a'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x5dbf('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5924d2={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x5dbf('0x5f'),'HOUR':_0x5dbf('0x60'),'ROUND':_0x5dbf('0x61'),'UNIX_TIMESTAMP':_0x5dbf('0x62')};var _0x4333db=function(_0x4cb92d){return!_['includes']([_0x5dbf('0x64'),'IS\x20NOT\x20NULL',_0x5dbf('0x8b'),_0x5dbf('0x66')],_0x4cb92d);};var _0x541241=function(_0x3c7eaa){if(!_0x3c7eaa||!_0x3c7eaa['rules'][_0x5dbf('0x38')]){return'';}for(var _0x24d90a='(',_0xa3e94f=0x0;_0xa3e94f<_0x3c7eaa[_0x5dbf('0x67')][_0x5dbf('0x38')];_0xa3e94f+=0x1){_0xa3e94f>0x0&&(_0x24d90a+='\x20'+_0x3c7eaa['operator']+'\x20');_0x24d90a+=_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x69')]?_0x541241(_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x69')]):_0x3c7eaa['rules'][_0xa3e94f][_0x5dbf('0x6a')]+'\x20'+_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x6b')]+(_0x4333db(_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x6b')])?'\x20'+_0x3c7eaa[_0x5dbf('0x67')][_0xa3e94f][_0x5dbf('0x6c')]:'');}return _0x24d90a+')';};var _0x334f63={'where':{'id':_0x8ca7de['id']}},_0x5ac29f,_0x533fdd,_0x5bf068,_0x1bd06b,_0x274497;_0x334f63=_['merge']({},_0x334f63,_0x23ec75);return db['AnalyticDefaultReport']['find'](_0x334f63)[_0x5dbf('0x22')](function(_0x20bda9){if(_0x20bda9){_0x5ac29f=_0x20bda9;return _0x20bda9[_0x5dbf('0x6d')]();}return null;})[_0x5dbf('0x22')](function(_0x12757d){if(_0x12757d){if(!_0x12757d[_0x5dbf('0x38')]){throw new db['Sequelize'][(_0x5dbf('0x8c'))](_0x5dbf('0x6e'),0x193);}_0x533fdd=_0x12757d;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x5dbf('0x22')](function(_0x5722b3){if(_0x5722b3){_0x5bf068=_['keyBy'](_0x5722b3,'id');var _0x3a27c4;var _0x3620d2=squel[_0x5dbf('0x71')]();_0x3620d2['from'](_0x5ac29f[_0x5dbf('0x7f')]);for(var _0x447259=0x0;_0x447259<_0x533fdd['length'];_0x447259+=0x1){_0x3a27c4=_0x533fdd[_0x447259][_0x5dbf('0x73')]?_0x5bf068[_0x533fdd[_0x447259][_0x5dbf('0x73')]][_0x5dbf('0x8d')]:_0x533fdd[_0x447259][_0x5dbf('0x6a')];_0x3a27c4=_0x533fdd[_0x447259][_0x5dbf('0x74')]?_[_0x5dbf('0x75')](_0x4cceb1[_0x533fdd[_0x447259][_0x5dbf('0x74')]],'%s',_0x3a27c4):_0x3a27c4;_0x3a27c4=_0x533fdd[_0x447259][_0x5dbf('0x76')]?_['replace'](_0x5924d2[_0x533fdd[_0x447259]['format']],'%s',_0x3a27c4):_0x3a27c4;if(_0x533fdd[_0x447259]['groupBy']){_0x3620d2[_0x5dbf('0x69')](_0x3a27c4);}_0x533fdd[_0x447259][_0x5dbf('0x78')]&&_0x3620d2[_0x5dbf('0x3c')](_0x3a27c4,_0x533fdd[_0x447259][_0x5dbf('0x78')]===_0x5dbf('0x8e')?![]:!![]);_0x3620d2[_0x5dbf('0x6a')](_0x3a27c4,_0x533fdd[_0x447259][_0x5dbf('0x79')]||_0x3a27c4);}if(_0x5ac29f[_0x5dbf('0x7a')]){_0x5ac29f[_0x5dbf('0x7a')]=JSON[_0x5dbf('0x7b')](_0x5ac29f['joins']);for(var _0x2ded2b=0x0;_0x2ded2b<_0x5ac29f[_0x5dbf('0x7a')][_0x5dbf('0x38')];_0x2ded2b+=0x1){if(_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b][_0x5dbf('0x42')]&&_[_0x5dbf('0x63')](_0x3b01c0,_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b][_0x5dbf('0x42')])&&_0x5ac29f['joins'][_0x2ded2b]['parentKey']&&_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b]['foreignTable']&&_0x5ac29f['joins'][_0x2ded2b][_0x5dbf('0x7d')]){_0x3620d2[_0x5ac29f['joins'][_0x2ded2b]['type']](_0x5ac29f['joins'][_0x2ded2b]['foreignTable'],null,util[_0x5dbf('0x76')]('%s.%s\x20=\x20%s.%s',_0x5ac29f[_0x5dbf('0x7f')],_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b][_0x5dbf('0x80')],_0x5ac29f['joins'][_0x2ded2b][_0x5dbf('0x7c')],_0x5ac29f[_0x5dbf('0x7a')][_0x2ded2b][_0x5dbf('0x7d')]));}}}if(_0x5ac29f['conditions']){_0x5ac29f[_0x5dbf('0x81')]=JSON[_0x5dbf('0x7b')](_0x5ac29f[_0x5dbf('0x81')]);_0x3620d2['where'](_0x541241(_0x5ac29f[_0x5dbf('0x81')][_0x5dbf('0x69')]));}_0x274497=_0x3620d2[_0x5dbf('0x8f')]();_0x3620d2['limit'](_0x310078);_0x3620d2[_0x5dbf('0x3b')](0x0);return;}})[_0x5dbf('0x22')](function(){if(_0x14b21b[_0x5dbf('0x90')]==='web'){return null;}var _0x48a8c5=_['merge'](_0x14b21b,{'name':_0x14b21b[_0x5dbf('0x91')]||_0x14b21b[_0x5dbf('0x2a')]||_0x5ac29f[_0x5dbf('0x2a')],'basename':_0x22339b,'savename':util[_0x5dbf('0x76')](_0x5dbf('0x92'),_0x14b21b[_0x5dbf('0x2a')]||_0x5ac29f['name'],require(_0x5dbf('0x93'))[_0x5dbf('0x94')](0x4),_0x14b21b[_0x5dbf('0x90')]||'csv'),'reportId':_0x5ac29f['id'],'reportType':_0x5dbf('0x95')});return db[_0x5dbf('0x96')][_0x5dbf('0x4b')](_0x48a8c5,{'raw':!![]});})[_0x5dbf('0x22')](function(_0x2afbd4){if(_0x5ac29f[_0x5dbf('0x7f')]===_0x5dbf('0x97')){_0x274497['where'](_0x5ac29f[_0x5dbf('0x7f')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x14b21b[_0x5dbf('0x98')],_0x14b21b[_0x5dbf('0x99')]);}else{_0x274497[_0x5dbf('0x3e')](_0x5ac29f['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x14b21b['startDate'],_0x14b21b[_0x5dbf('0x99')]);}if(_0x2afbd4){logger[_0x5dbf('0x9a')]('Run\x20Query:',_0x274497[_0x5dbf('0x84')]());require('child_process')[_0x5dbf('0x9b')](path[_0x5dbf('0x56')](__dirname,_0x5dbf('0x9c'),_0x2afbd4['output']),[_0x2afbd4['id'],_0x274497[_0x5dbf('0x84')](),path[_0x5dbf('0x56')](__dirname,_0x5dbf('0x9d'),_0x2afbd4[_0x5dbf('0x9e')]),_0x22339b]);return _0x2afbd4;}else{var _0x4bc5af=squel[_0x5dbf('0x71')]();_0x4bc5af[_0x5dbf('0x72')]('('+_0x274497['toString']()+')',_0x5dbf('0x9f'));_0x4bc5af['field'](_0x5dbf('0xa0'),_0x5dbf('0x1d'));_0x274497[_0x5dbf('0x1b')](_0x14b21b['limit']||_0x310078);_0x274497[_0x5dbf('0x3b')](_0x14b21b[_0x5dbf('0x3b')]||0x0);return dbH[_0x5dbf('0xa1')][_0x5dbf('0x32')](_0x4bc5af[_0x5dbf('0x84')](),{'type':dbH[_0x5dbf('0xa1')]['QueryTypes'][_0x5dbf('0x85')]})['then'](function(_0x6cfb82){if(!_0x6cfb82[_0x5dbf('0x38')]){_0x1bd06b=0x0;}else{_0x1bd06b=_0x6cfb82[0x0][_0x5dbf('0x1d')]||0x0;}return dbH[_0x5dbf('0xa1')][_0x5dbf('0x32')](_0x274497[_0x5dbf('0x84')](),{'type':dbH['sequelize'][_0x5dbf('0xa2')][_0x5dbf('0x85')]});})[_0x5dbf('0x22')](function(_0x4d68f6){return{'rows':_0x4d68f6||[],'count':_0x1bd06b};});}});}exports[_0x5dbf('0xa3')]=function(_0x47ac95,_0x51b241){return runReport(_0x47ac95[_0x5dbf('0x49')],_0x47ac95[_0x5dbf('0x32')],_0x47ac95[_0x5dbf('0x4a')])[_0x5dbf('0x22')](respondWithResult(_0x51b241,null))[_0x5dbf('0x54')](handleError(_0x51b241,null));};exports['runReport']=runReport;exports['query']=function(_0x4f38a0,_0x144300){var _0x1da1e3=0xa;var _0x25e681=[_0x5dbf('0x56'),_0x5dbf('0x57'),_0x5dbf('0x58'),_0x5dbf('0x86')];var _0x236754={'SUM':'SUM(%s)','COUNT':_0x5dbf('0x88'),'COUNT DISTINCT':_0x5dbf('0x89'),'MAX':_0x5dbf('0x59'),'MIN':_0x5dbf('0x8a'),'AVG':_0x5dbf('0x5a'),'GROUP_CONCAT':_0x5dbf('0x5b'),'GROUP_CONCAT ASC':_0x5dbf('0x5c'),'GROUP_CONCAT DESC':_0x5dbf('0x5d')};var _0x191a16={'SEC_TO_TIME':_0x5dbf('0x5e'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x5dbf('0x62')};var _0x51b0df=function(_0x48ea8a){return!_['includes']([_0x5dbf('0x64'),_0x5dbf('0x65'),_0x5dbf('0x8b'),_0x5dbf('0x66')],_0x48ea8a);};var _0x3de263=function(_0x4f8dde){if(!_0x4f8dde||!_0x4f8dde[_0x5dbf('0x67')][_0x5dbf('0x38')]){return'';}for(var _0x19effa='(',_0x29177e=0x0;_0x29177e<_0x4f8dde[_0x5dbf('0x67')]['length'];_0x29177e+=0x1){_0x29177e>0x0&&(_0x19effa+='\x20'+_0x4f8dde[_0x5dbf('0x68')]+'\x20');_0x19effa+=_0x4f8dde[_0x5dbf('0x67')][_0x29177e][_0x5dbf('0x69')]?_0x3de263(_0x4f8dde[_0x5dbf('0x67')][_0x29177e]['group']):_0x4f8dde[_0x5dbf('0x67')][_0x29177e][_0x5dbf('0x6a')]+'\x20'+_0x4f8dde[_0x5dbf('0x67')][_0x29177e][_0x5dbf('0x6b')]+(_0x51b0df(_0x4f8dde[_0x5dbf('0x67')][_0x29177e][_0x5dbf('0x6b')])?'\x20'+_0x4f8dde[_0x5dbf('0x67')][_0x29177e]['value']:'');}return _0x19effa+')';};var _0x4899ac={'where':{'id':_0x4f38a0['params']['id']}},_0x51864c,_0x4562a4,_0x240304,_0x5df275,_0xc588a2;_0x4899ac=_[_0x5dbf('0x41')]({},_0x4899ac,_0x4f38a0['options']);return db[_0x5dbf('0x2e')][_0x5dbf('0x52')](_0x4899ac)[_0x5dbf('0x22')](function(_0x2eafe0){if(_0x2eafe0){_0x51864c=_0x2eafe0;return _0x2eafe0[_0x5dbf('0x6d')]();}return null;})[_0x5dbf('0x22')](function(_0x414859){if(_0x414859){if(!_0x414859['length']){throw new db[(_0x5dbf('0xa4'))][(_0x5dbf('0x8c'))](_0x5dbf('0x6e'),0x193);}_0x4562a4=_0x414859;return db[_0x5dbf('0x6f')][_0x5dbf('0x46')]({'raw':!![]});}return null;})[_0x5dbf('0x22')](function(_0x153401){if(_0x153401){_0x240304=_[_0x5dbf('0x70')](_0x153401,'id');var _0xbe0ca0;var _0x521c72=squel[_0x5dbf('0x71')]();_0x521c72[_0x5dbf('0x72')](_0x51864c[_0x5dbf('0x7f')]);for(var _0x6b4262=0x0;_0x6b4262<_0x4562a4[_0x5dbf('0x38')];_0x6b4262+=0x1){_0xbe0ca0=_0x4562a4[_0x6b4262][_0x5dbf('0x73')]?_0x240304[_0x4562a4[_0x6b4262][_0x5dbf('0x73')]][_0x5dbf('0x8d')]:_0x4562a4[_0x6b4262][_0x5dbf('0x6a')];_0xbe0ca0=_0x4562a4[_0x6b4262][_0x5dbf('0x74')]?_[_0x5dbf('0x75')](_0x236754[_0x4562a4[_0x6b4262][_0x5dbf('0x74')]],'%s',_0xbe0ca0):_0xbe0ca0;_0xbe0ca0=_0x4562a4[_0x6b4262][_0x5dbf('0x76')]?_[_0x5dbf('0x75')](_0x191a16[_0x4562a4[_0x6b4262][_0x5dbf('0x76')]],'%s',_0xbe0ca0):_0xbe0ca0;if(_0x4562a4[_0x6b4262][_0x5dbf('0x77')]){_0x521c72[_0x5dbf('0x69')](_0xbe0ca0);}_0x4562a4[_0x6b4262][_0x5dbf('0x78')]&&_0x521c72[_0x5dbf('0x3c')](_0xbe0ca0,_0x4562a4[_0x6b4262]['orderBy']===_0x5dbf('0x8e')?![]:!![]);_0x521c72['field'](_0xbe0ca0,_0x4562a4[_0x6b4262][_0x5dbf('0x79')]||_0xbe0ca0);}if(_0x51864c['joins']){_0x51864c[_0x5dbf('0x7a')]=JSON['parse'](_0x51864c[_0x5dbf('0x7a')]);for(var _0x417869=0x0;_0x417869<_0x51864c[_0x5dbf('0x7a')]['length'];_0x417869+=0x1){if(_0x51864c[_0x5dbf('0x7a')][_0x417869][_0x5dbf('0x42')]&&_[_0x5dbf('0x63')](_0x25e681,_0x51864c[_0x5dbf('0x7a')][_0x417869][_0x5dbf('0x42')])&&_0x51864c[_0x5dbf('0x7a')][_0x417869][_0x5dbf('0x80')]&&_0x51864c['joins'][_0x417869][_0x5dbf('0x7c')]&&_0x51864c[_0x5dbf('0x7a')][_0x417869]['foreignKey']){_0x521c72[_0x51864c[_0x5dbf('0x7a')][_0x417869]['type']](_0x51864c['joins'][_0x417869][_0x5dbf('0x7c')],null,util[_0x5dbf('0x76')]('%s.%s\x20=\x20%s.%s',_0x51864c[_0x5dbf('0x7f')],_0x51864c['joins'][_0x417869]['parentKey'],_0x51864c[_0x5dbf('0x7a')][_0x417869]['foreignTable'],_0x51864c[_0x5dbf('0x7a')][_0x417869][_0x5dbf('0x7d')]));}}}if(_0x51864c[_0x5dbf('0x81')]){_0x51864c[_0x5dbf('0x81')]=JSON[_0x5dbf('0x7b')](_0x51864c[_0x5dbf('0x81')]);_0x521c72[_0x5dbf('0x3e')](_0x3de263(_0x51864c[_0x5dbf('0x81')][_0x5dbf('0x69')]));}_0xc588a2=_0x521c72[_0x5dbf('0x8f')]();_0x521c72[_0x5dbf('0x1b')](_0x1da1e3);_0x521c72[_0x5dbf('0x3b')](0x0);logger[_0x5dbf('0x82')]('Limited\x20Query:',_0x521c72[_0x5dbf('0x84')]());return dbH[_0x5dbf('0xa1')][_0x5dbf('0x32')](_0x521c72[_0x5dbf('0x84')](),{'type':dbH[_0x5dbf('0xa1')][_0x5dbf('0xa2')]['SELECT']});}})[_0x5dbf('0x22')](function(){return{'sql':_0xc588a2[_0x5dbf('0x84')]()};})[_0x5dbf('0x22')](respondWithResult(_0x144300,null))[_0x5dbf('0x54')](handleError(_0x144300,null));};
\ No newline at end of file
index 3aeb007..116b8c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235f=['bluebird','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','lodash','../../config/logger','moment'];(function(_0xf56fb9,_0x17f1a5){var _0x320db1=function(_0x5b1eba){while(--_0x5b1eba){_0xf56fb9['push'](_0xf56fb9['shift']());}};_0x320db1(++_0x17f1a5);}(_0x235f,0xe1));var _0xf235=function(_0x18a436,_0x1dbe06){_0x18a436=_0x18a436-0x0;var _0x5c2cf8=_0x235f[_0x18a436];return _0x5c2cf8;};'use strict';var _=require(_0xf235('0x0'));var util=require('util');var logger=require(_0xf235('0x1'))('api');var moment=require(_0xf235('0x2'));var BPromise=require(_0xf235('0x3'));var rp=require(_0xf235('0x4'));var fs=require('fs');var path=require(_0xf235('0x5'));var rimraf=require(_0xf235('0x6'));var config=require(_0xf235('0x7'));var attributes=require(_0xf235('0x8'));module[_0xf235('0x9')]=function(_0x4a7e49,_0xf8a0ea){return _0x4a7e49[_0xf235('0xa')](_0xf235('0xb'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb8a7=['analytics_default_reports','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./analyticDefaultReport.attributes','AnalyticDefaultReport'];(function(_0x177f35,_0x569774){var _0xaabb31=function(_0x309ae0){while(--_0x309ae0){_0x177f35['push'](_0x177f35['shift']());}};_0xaabb31(++_0x569774);}(_0xb8a7,0xb1));var _0x7b8a=function(_0x4dce9c,_0xc94456){_0x4dce9c=_0x4dce9c-0x0;var _0x3d7858=_0xb8a7[_0x4dce9c];return _0x3d7858;};'use strict';var _=require(_0x7b8a('0x0'));var util=require(_0x7b8a('0x1'));var logger=require(_0x7b8a('0x2'))(_0x7b8a('0x3'));var moment=require('moment');var BPromise=require(_0x7b8a('0x4'));var rp=require(_0x7b8a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b8a('0x6'));var config=require(_0x7b8a('0x7'));var attributes=require(_0x7b8a('0x8'));module['exports']=function(_0x489a3b,_0xf7ce7b){return _0x489a3b['define'](_0x7b8a('0x9'),attributes,{'tableName':_0x7b8a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cab154e..c423fe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c3e=['debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent'];(function(_0x97c6ea,_0x4cffce){var _0x2d7f50=function(_0x54010e){while(--_0x54010e){_0x97c6ea['push'](_0x97c6ea['shift']());}};_0x2d7f50(++_0x4cffce);}(_0x5c3e,0x125));var _0xe5c3=function(_0x373fc8,_0x2435c3){_0x373fc8=_0x373fc8-0x0;var _0x35da32=_0x5c3e[_0x373fc8];return _0x35da32;};'use strict';var _=require(_0xe5c3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe5c3('0x1'));var db=require(_0xe5c3('0x2'))['db'];var utils=require(_0xe5c3('0x3'));var logger=require(_0xe5c3('0x4'))(_0xe5c3('0x5'));var config=require(_0xe5c3('0x6'));var jayson=require(_0xe5c3('0x7'));var client=jayson[_0xe5c3('0x8')][_0xe5c3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x232163,_0x1053cd,_0x251daa){return new BPromise(function(_0x17774,_0x1c838a){return client[_0xe5c3('0xa')](_0x232163,_0x251daa)[_0xe5c3('0xb')](function(_0x48463e){logger[_0xe5c3('0xc')](_0xe5c3('0xd'),_0x1053cd,_0xe5c3('0xe'));logger[_0xe5c3('0xf')](_0xe5c3('0x10'),_0x1053cd,_0xe5c3('0xe'),JSON[_0xe5c3('0x11')](_0x48463e));if(_0x48463e[_0xe5c3('0x12')]){if(_0x48463e[_0xe5c3('0x12')]['code']===0x1f4){logger[_0xe5c3('0x12')](_0xe5c3('0xd'),_0x1053cd,_0x48463e['error'][_0xe5c3('0x13')]);return _0x1c838a(_0x48463e[_0xe5c3('0x12')]['message']);}logger[_0xe5c3('0x12')](_0xe5c3('0xd'),_0x1053cd,_0x48463e[_0xe5c3('0x12')]['message']);return _0x17774(_0x48463e[_0xe5c3('0x12')]['message']);}else{logger[_0xe5c3('0xc')](_0xe5c3('0xd'),_0x1053cd,_0xe5c3('0xe'));_0x17774(_0x48463e[_0xe5c3('0x14')][_0xe5c3('0x13')]);}})[_0xe5c3('0x15')](function(_0x2ddbc1){logger['error'](_0xe5c3('0xd'),_0x1053cd,_0x2ddbc1);_0x1c838a(_0x2ddbc1);});});}
\ No newline at end of file
+var _0xb3e6=['result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticDefaultReport,\x20%s,\x20%s','message'];(function(_0x4c9c5b,_0x210cbb){var _0x4088ab=function(_0x3f1d0a){while(--_0x3f1d0a){_0x4c9c5b['push'](_0x4c9c5b['shift']());}};_0x4088ab(++_0x210cbb);}(_0xb3e6,0x1b7));var _0x6b3e=function(_0x39f34f,_0x298f45){_0x39f34f=_0x39f34f-0x0;var _0x59fee1=_0xb3e6[_0x39f34f];return _0x59fee1;};'use strict';var _=require(_0x6b3e('0x0'));var util=require(_0x6b3e('0x1'));var moment=require(_0x6b3e('0x2'));var BPromise=require('bluebird');var rs=require(_0x6b3e('0x3'));var fs=require('fs');var Redis=require(_0x6b3e('0x4'));var db=require(_0x6b3e('0x5'))['db'];var utils=require(_0x6b3e('0x6'));var logger=require(_0x6b3e('0x7'))(_0x6b3e('0x8'));var config=require(_0x6b3e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6b3e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3763f7,_0x3d4c97,_0x5994ee){return new BPromise(function(_0x251207,_0x2c22c6){return client[_0x6b3e('0xb')](_0x3763f7,_0x5994ee)[_0x6b3e('0xc')](function(_0xaf486f){logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x3d4c97,'request\x20sent');logger[_0x6b3e('0xd')](_0x6b3e('0xe'),_0x3d4c97,_0x6b3e('0xf'),JSON[_0x6b3e('0x10')](_0xaf486f));if(_0xaf486f[_0x6b3e('0x11')]){if(_0xaf486f[_0x6b3e('0x11')][_0x6b3e('0x12')]===0x1f4){logger[_0x6b3e('0x11')](_0x6b3e('0x13'),_0x3d4c97,_0xaf486f[_0x6b3e('0x11')][_0x6b3e('0x14')]);return _0x2c22c6(_0xaf486f[_0x6b3e('0x11')][_0x6b3e('0x14')]);}logger[_0x6b3e('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3d4c97,_0xaf486f['error'][_0x6b3e('0x14')]);return _0x251207(_0xaf486f[_0x6b3e('0x11')][_0x6b3e('0x14')]);}else{logger['info'](_0x6b3e('0x13'),_0x3d4c97,_0x6b3e('0xf'));_0x251207(_0xaf486f[_0x6b3e('0x15')][_0x6b3e('0x14')]);}})[_0x6b3e('0x16')](function(_0x1826d6){logger[_0x6b3e('0x11')](_0x6b3e('0x13'),_0x3d4c97,_0x1826d6);_0x2c22c6(_0x1826d6);});});}
\ No newline at end of file
index 595fd09..8bd0dca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe987=['get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','/:id/query','query','post','create','put','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller'];(function(_0x1b8bc6,_0x4672de){var _0x17b6bd=function(_0x2ab866){while(--_0x2ab866){_0x1b8bc6['push'](_0x1b8bc6['shift']());}};_0x17b6bd(++_0x4672de);}(_0xe987,0x109));var _0x7e98=function(_0x5a3ac7,_0xa2bf9b){_0x5a3ac7=_0x5a3ac7-0x0;var _0x11678a=_0xe987[_0x5a3ac7];return _0x11678a;};'use strict';var multer=require(_0x7e98('0x0'));var util=require(_0x7e98('0x1'));var path=require('path');var timeout=require(_0x7e98('0x2'));var express=require(_0x7e98('0x3'));var router=express[_0x7e98('0x4')]();var fs_extra=require(_0x7e98('0x5'));var auth=require(_0x7e98('0x6'));var interaction=require(_0x7e98('0x7'));var config=require(_0x7e98('0x8'));var controller=require(_0x7e98('0x9'));router[_0x7e98('0xa')]('/',auth[_0x7e98('0xb')](),controller[_0x7e98('0xc')]);router['get'](_0x7e98('0xd'),auth['isAuthenticated'](),controller[_0x7e98('0xe')]);router[_0x7e98('0xa')](_0x7e98('0xf'),auth[_0x7e98('0xb')](),controller[_0x7e98('0x10')]);router[_0x7e98('0xa')](_0x7e98('0x11'),auth[_0x7e98('0xb')](),controller['run']);router[_0x7e98('0xa')](_0x7e98('0x12'),auth[_0x7e98('0xb')](),controller[_0x7e98('0x13')]);router[_0x7e98('0x14')]('/',auth[_0x7e98('0xb')](),controller[_0x7e98('0x15')]);router[_0x7e98('0x16')](_0x7e98('0xd'),auth['isAuthenticated'](),controller[_0x7e98('0x17')]);router[_0x7e98('0x18')](_0x7e98('0xd'),auth[_0x7e98('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc7c3=['delete','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../config/environment','./analyticDefaultReport.controller','isAuthenticated','index','/:id','show','get','/:id/preview','/:id/run','query','post','put'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0xc7c3,0x143));var _0x3c7c=function(_0x1e8c18,_0x1de6b8){_0x1e8c18=_0x1e8c18-0x0;var _0x2ab792=_0xc7c3[_0x1e8c18];return _0x2ab792;};'use strict';var multer=require(_0x3c7c('0x0'));var util=require(_0x3c7c('0x1'));var path=require(_0x3c7c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x3c7c('0x3'));var auth=require(_0x3c7c('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x3c7c('0x5'));var controller=require(_0x3c7c('0x6'));router['get']('/',auth[_0x3c7c('0x7')](),controller[_0x3c7c('0x8')]);router['get'](_0x3c7c('0x9'),auth[_0x3c7c('0x7')](),controller[_0x3c7c('0xa')]);router[_0x3c7c('0xb')](_0x3c7c('0xc'),auth[_0x3c7c('0x7')](),controller['preview']);router['get'](_0x3c7c('0xd'),auth[_0x3c7c('0x7')](),controller['run']);router[_0x3c7c('0xb')]('/:id/query',auth[_0x3c7c('0x7')](),controller[_0x3c7c('0xe')]);router[_0x3c7c('0xf')]('/',auth[_0x3c7c('0x7')](),controller['create']);router[_0x3c7c('0x10')](_0x3c7c('0x9'),auth[_0x3c7c('0x7')](),controller['update']);router[_0x3c7c('0x11')](_0x3c7c('0x9'),auth[_0x3c7c('0x7')](),controller[_0x3c7c('0x12')]);module[_0x3c7c('0x13')]=router;
\ No newline at end of file
index 77efdb3..e777996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3df8=['DATE','Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize','moment','exports','STRING','ENUM','csv','pdf','xlsx'];(function(_0x3d24b6,_0x84644d){var _0x32d0d7=function(_0x13e2a1){while(--_0x13e2a1){_0x3d24b6['push'](_0x3d24b6['shift']());}};_0x32d0d7(++_0x84644d);}(_0x3df8,0x1b8));var _0x83df=function(_0x267d8d,_0xe90f65){_0x267d8d=_0x267d8d-0x0;var _0x11a98f=_0x3df8[_0x267d8d];return _0x11a98f;};'use strict';var Sequelize=require(_0x83df('0x0'));var moment=require(_0x83df('0x1'));module[_0x83df('0x2')]={'name':{'type':Sequelize[_0x83df('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x83df('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x83df('0x4')](_0x83df('0x5'),_0x83df('0x6'),_0x83df('0x7')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x83df('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x83df('0x8')]},'endDate':{'type':Sequelize[_0x83df('0x8')]},'status':{'type':Sequelize[_0x83df('0x3')],'defaultValue':_0x83df('0x9')},'type':{'type':Sequelize['ENUM'](_0x83df('0xa'),_0x83df('0xb')),'allowNull':![],'defaultValue':_0x83df('0xa')},'reportId':{'type':Sequelize[_0x83df('0xc')](0xb)[_0x83df('0xd')]},'reportType':{'type':Sequelize[_0x83df('0x3')]}};
\ No newline at end of file
+var _0x45ce=['sequelize','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','manual','scheduled','UNSIGNED'];(function(_0x2a725d,_0x2466f5){var _0x1d7453=function(_0x2b5f4c){while(--_0x2b5f4c){_0x2a725d['push'](_0x2a725d['shift']());}};_0x1d7453(++_0x2466f5);}(_0x45ce,0x18c));var _0xe45c=function(_0x1facbf,_0x53e75b){_0x1facbf=_0x1facbf-0x0;var _0x4de6a1=_0x45ce[_0x1facbf];return _0x4de6a1;};'use strict';var Sequelize=require(_0xe45c('0x0'));var moment=require('moment');module['exports']={'name':{'type':Sequelize[_0xe45c('0x1')],'allowNull':![]},'basename':{'type':Sequelize[_0xe45c('0x1')],'allowNull':![]},'output':{'type':Sequelize[_0xe45c('0x2')](_0xe45c('0x3'),_0xe45c('0x4'),_0xe45c('0x5')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0xe45c('0x1')],'allowNull':![]},'startDate':{'type':Sequelize[_0xe45c('0x6')]},'endDate':{'type':Sequelize[_0xe45c('0x6')]},'status':{'type':Sequelize[_0xe45c('0x1')],'defaultValue':_0xe45c('0x7')},'type':{'type':Sequelize[_0xe45c('0x2')](_0xe45c('0x8'),_0xe45c('0x9')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0xe45c('0xa')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c779a64..bd1ab8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x166a=['sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','limit','count','set','Content-Range','reject','update','then','destroy','ExtractedReports','error','stack','name','index','map','AnalyticExtractedReport','fieldName','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','download','basename','savename','output','existsSync','join','root','server/files/reports','exists','format','toLowerCase','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path'];(function(_0x195d96,_0xf882ec){var _0x3b1614=function(_0x5af237){while(--_0x5af237){_0x195d96['push'](_0x195d96['shift']());}};_0x3b1614(++_0xf882ec);}(_0x166a,0xaf));var _0xa166=function(_0x52fd82,_0x505755){_0x52fd82=_0x52fd82-0x0;var _0x18773c=_0x166a[_0x52fd82];return _0x18773c;};'use strict';var emlformat=require(_0xa166('0x0'));var rimraf=require(_0xa166('0x1'));var zipdir=require(_0xa166('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa166('0x3'));var BPromise=require(_0xa166('0x4'));var Mustache=require(_0xa166('0x5'));var util=require('util');var path=require(_0xa166('0x6'));var sox=require(_0xa166('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa166('0x8'));var _=require(_0xa166('0x9'));var squel=require(_0xa166('0xa'));var crypto=require(_0xa166('0xb'));var jsforce=require(_0xa166('0xc'));var deskjs=require(_0xa166('0xd'));var toCsv=require(_0xa166('0xe'));var querystring=require(_0xa166('0xf'));var Papa=require('papaparse');var Redis=require(_0xa166('0x10'));var authService=require(_0xa166('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa166('0x12'));var hardwareService=require(_0xa166('0x13'));var logger=require('../../config/logger')(_0xa166('0x14'));var utils=require('../../config/utils');var config=require(_0xa166('0x15'));var licenseUtil=require(_0xa166('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a78ac,_0x1407ca){_0x1407ca=_0x1407ca||0xcc;return function(_0x539ff5){if(_0x539ff5){return _0x4a78ac[_0xa166('0x17')](_0x1407ca);}return _0x4a78ac['status'](_0x1407ca)[_0xa166('0x18')]();};}function respondWithResult(_0x48dbb2,_0x176c13){_0x176c13=_0x176c13||0xc8;return function(_0x14f414){if(_0x14f414){return _0x48dbb2[_0xa166('0x19')](_0x176c13)[_0xa166('0x1a')](_0x14f414);}};}function respondWithFilteredResult(_0x47565d,_0x36bcbe){return function(_0x4b3b50){if(_0x4b3b50){var _0x3988e3=typeof _0x36bcbe[_0xa166('0x1b')]==='undefined'&&typeof _0x36bcbe[_0xa166('0x1c')]==='undefined';var _0x13f4f7=_0x4b3b50['count'];var _0x29e98f=_0x3988e3?0x0:_0x36bcbe[_0xa166('0x1b')];var _0x55c133=_0x3988e3?_0x4b3b50[_0xa166('0x1d')]:_0x36bcbe[_0xa166('0x1b')]+_0x36bcbe['limit'];var _0x3f3505;if(_0x55c133>=_0x13f4f7){_0x55c133=_0x13f4f7;_0x3f3505=0xc8;}else{_0x3f3505=0xce;}_0x47565d[_0xa166('0x19')](_0x3f3505);return _0x47565d[_0xa166('0x1e')](_0xa166('0x1f'),_0x29e98f+'-'+_0x55c133+'/'+_0x13f4f7)['json'](_0x4b3b50);}return null;};}function patchUpdates(_0x26339b){return function(_0x3aa010){try{jsonpatch['apply'](_0x3aa010,_0x26339b,!![]);}catch(_0x324df0){return BPromise[_0xa166('0x20')](_0x324df0);}return _0x3aa010['save']();};}function saveUpdates(_0xff11e3,_0xfa0f12){return function(_0x4449bd){if(_0x4449bd){return _0x4449bd[_0xa166('0x21')](_0xff11e3)[_0xa166('0x22')](function(_0x10fbee){return _0x10fbee;});}return null;};}function removeEntity(_0x519cc9,_0x4045d1){return function(_0x41baa2){if(_0x41baa2){return _0x41baa2[_0xa166('0x23')]()[_0xa166('0x22')](function(){var _0x1dd8e2=_0x41baa2['get']({'plain':!![]});var _0x61d2af=_0xa166('0x24');return db['UserProfileResource'][_0xa166('0x23')]({'where':{'type':_0x61d2af,'resourceId':_0x1dd8e2['id']}})['then'](function(){return _0x41baa2;});})[_0xa166('0x22')](function(){_0x519cc9['status'](0xcc)[_0xa166('0x18')]();});}};}function handleEntityNotFound(_0x58a63b,_0x586250){return function(_0x528a96){if(!_0x528a96){_0x58a63b[_0xa166('0x17')](0x194);}return _0x528a96;};}function handleError(_0x4d964a,_0x1c8082){_0x1c8082=_0x1c8082||0x1f4;return function(_0x12ea48){logger[_0xa166('0x25')](_0x12ea48[_0xa166('0x26')]);if(_0x12ea48[_0xa166('0x27')]){delete _0x12ea48[_0xa166('0x27')];}_0x4d964a[_0xa166('0x19')](_0x1c8082)['send'](_0x12ea48);};}exports[_0xa166('0x28')]=function(_0x2bb8df,_0x363109){var _0x1343df={},_0x8f835={},_0x29abbb={'count':0x0,'rows':[]};var _0x3bcdca=_[_0xa166('0x29')](db[_0xa166('0x2a')]['rawAttributes'],function(_0x261249){return{'name':_0x261249[_0xa166('0x2b')],'type':_0x261249['type']['key']};});_0x8f835['model']=_[_0xa166('0x29')](_0x3bcdca,_0xa166('0x27'));_0x8f835[_0xa166('0x2c')]=_[_0xa166('0x2d')](_0x2bb8df[_0xa166('0x2c')]);_0x8f835[_0xa166('0x2e')]=_[_0xa166('0x2f')](_0x8f835['model'],_0x8f835[_0xa166('0x2c')]);_0x1343df['attributes']=_[_0xa166('0x2f')](_0x8f835[_0xa166('0x30')],qs['fields'](_0x2bb8df['query'][_0xa166('0x31')]));_0x1343df[_0xa166('0x32')]=_0x1343df[_0xa166('0x32')][_0xa166('0x33')]?_0x1343df[_0xa166('0x32')]:_0x8f835['model'];if(!_0x2bb8df[_0xa166('0x2c')][_0xa166('0x34')](_0xa166('0x35'))){_0x1343df[_0xa166('0x1c')]=qs[_0xa166('0x1c')](_0x2bb8df[_0xa166('0x2c')][_0xa166('0x1c')]);_0x1343df[_0xa166('0x1b')]=qs['offset'](_0x2bb8df[_0xa166('0x2c')][_0xa166('0x1b')]);}_0x1343df['order']=qs[_0xa166('0x36')](_0x2bb8df[_0xa166('0x2c')][_0xa166('0x36')]);_0x1343df[_0xa166('0x37')]=qs[_0xa166('0x2e')](_['pick'](_0x2bb8df[_0xa166('0x2c')],_0x8f835[_0xa166('0x2e')]),_0x3bcdca);if(_0x2bb8df[_0xa166('0x2c')][_0xa166('0x38')]){_0x1343df[_0xa166('0x37')]=_[_0xa166('0x39')](_0x1343df[_0xa166('0x37')],{'$or':_[_0xa166('0x29')](_0x3bcdca,function(_0x10779e){if(_0x10779e[_0xa166('0x3a')]!==_0xa166('0x3b')){var _0x2b576f={};_0x2b576f[_0x10779e[_0xa166('0x27')]]={'$like':'%'+_0x2bb8df['query'][_0xa166('0x38')]+'%'};return _0x2b576f;}})});}_0x1343df=_['merge']({},_0x1343df,_0x2bb8df[_0xa166('0x3c')]);var _0x43a2a9={'where':_0x1343df['where']};return db[_0xa166('0x2a')][_0xa166('0x1d')](_0x43a2a9)[_0xa166('0x22')](function(_0x5852d7){_0x29abbb[_0xa166('0x1d')]=_0x5852d7;if(_0x2bb8df[_0xa166('0x2c')][_0xa166('0x3d')]){_0x1343df[_0xa166('0x3e')]=[{'all':!![]}];}return db[_0xa166('0x2a')][_0xa166('0x3f')](_0x1343df);})[_0xa166('0x22')](function(_0x1ea617){_0x29abbb[_0xa166('0x40')]=_0x1ea617;return _0x29abbb;})['then'](respondWithFilteredResult(_0x363109,_0x1343df))[_0xa166('0x41')](handleError(_0x363109,null));};exports['show']=function(_0x4aa17f,_0x18e2ee){var _0x5343ac={'raw':!![],'where':{'id':_0x4aa17f['params']['id']}},_0x5b65a4={};_0x5b65a4[_0xa166('0x30')]=_['keys'](db[_0xa166('0x2a')][_0xa166('0x42')]);_0x5b65a4[_0xa166('0x2c')]=_[_0xa166('0x2d')](_0x4aa17f[_0xa166('0x2c')]);_0x5b65a4[_0xa166('0x2e')]=_[_0xa166('0x2f')](_0x5b65a4['model'],_0x5b65a4['query']);_0x5343ac[_0xa166('0x32')]=_['intersection'](_0x5b65a4[_0xa166('0x30')],qs[_0xa166('0x31')](_0x4aa17f[_0xa166('0x2c')][_0xa166('0x31')]));_0x5343ac[_0xa166('0x32')]=_0x5343ac[_0xa166('0x32')][_0xa166('0x33')]?_0x5343ac['attributes']:_0x5b65a4[_0xa166('0x30')];if(_0x4aa17f[_0xa166('0x2c')]['includeAll']){_0x5343ac[_0xa166('0x3e')]=[{'all':!![]}];}_0x5343ac=_['merge']({},_0x5343ac,_0x4aa17f[_0xa166('0x3c')]);return db[_0xa166('0x2a')][_0xa166('0x43')](_0x5343ac)[_0xa166('0x22')](handleEntityNotFound(_0x18e2ee,null))[_0xa166('0x22')](respondWithResult(_0x18e2ee,null))[_0xa166('0x41')](handleError(_0x18e2ee,null));};exports[_0xa166('0x44')]=function(_0xde2537,_0x3c3fbb){return db[_0xa166('0x2a')][_0xa166('0x44')](_0xde2537['body'],{})[_0xa166('0x22')](function(_0x338d0c){var _0x3acdbd=_0xde2537[_0xa166('0x45')]['get']({'plain':!![]});if(!_0x3acdbd)throw new Error(_0xa166('0x46'));if(_0x3acdbd[_0xa166('0x47')]==='user'){var _0x3d1cfb=_0x338d0c[_0xa166('0x48')]({'plain':!![]});var _0x4415f4=_0xa166('0x24');return db[_0xa166('0x49')]['find']({'where':{'name':_0x4415f4,'userProfileId':_0x3acdbd[_0xa166('0x4a')]},'raw':!![]})[_0xa166('0x22')](function(_0xa94efe){if(_0xa94efe&&_0xa94efe[_0xa166('0x4b')]===0x0){return db[_0xa166('0x4c')][_0xa166('0x44')]({'name':_0x3d1cfb[_0xa166('0x27')],'resourceId':_0x3d1cfb['id'],'type':_0xa94efe[_0xa166('0x27')],'sectionId':_0xa94efe['id']},{})[_0xa166('0x22')](function(){return _0x338d0c;});}else{return _0x338d0c;}})[_0xa166('0x41')](function(_0x327f64){logger[_0xa166('0x25')](_0xa166('0x4d'),_0x327f64);throw _0x327f64;});}return _0x338d0c;})[_0xa166('0x22')](respondWithResult(_0x3c3fbb,0xc9))[_0xa166('0x41')](handleError(_0x3c3fbb,null));};exports['update']=function(_0x1411dc,_0x55c935){if(_0x1411dc[_0xa166('0x4e')]['id']){delete _0x1411dc[_0xa166('0x4e')]['id'];}return db['AnalyticExtractedReport'][_0xa166('0x43')]({'where':{'id':_0x1411dc[_0xa166('0x4f')]['id']}})[_0xa166('0x22')](handleEntityNotFound(_0x55c935,null))['then'](saveUpdates(_0x1411dc[_0xa166('0x4e')],null))[_0xa166('0x22')](respondWithResult(_0x55c935,null))[_0xa166('0x41')](handleError(_0x55c935,null));};exports['destroy']=function(_0x5c4a9d,_0x237004){return db[_0xa166('0x2a')][_0xa166('0x43')]({'where':{'id':_0x5c4a9d[_0xa166('0x4f')]['id']}})[_0xa166('0x22')](handleEntityNotFound(_0x237004,null))['then'](removeEntity(_0x237004,null))[_0xa166('0x41')](handleError(_0x237004,null));};exports[_0xa166('0x50')]=function(_0x145e28,_0x5af043,_0x3054df){return db[_0xa166('0x2a')][_0xa166('0x43')]({'where':{'id':_0x145e28['params']['id']},'attributes':[_0xa166('0x27'),_0xa166('0x51'),_0xa166('0x52'),_0xa166('0x53')],'raw':!![]})[_0xa166('0x22')](handleEntityNotFound(_0x5af043,null))[_0xa166('0x22')](function(_0x4c2625){if(_0x4c2625){if(!fs[_0xa166('0x54')](path[_0xa166('0x55')](config[_0xa166('0x56')],_0xa166('0x57'),_0x4c2625['savename']))){throw new db['Sequelize']['ValidationError']('Report\x20not\x20found\x20or\x20empty');}if(_0x145e28[_0xa166('0x2c')][_0xa166('0x58')]){return _0x5af043[_0xa166('0x17')](0xc8);}return _0x5af043[_0xa166('0x50')](path[_0xa166('0x55')](config[_0xa166('0x56')],_0xa166('0x57'),_0x4c2625['savename']),util[_0xa166('0x59')]('%s.%s',_0x4c2625[_0xa166('0x51')]||_0x4c2625['name'],_0x4c2625[_0xa166('0x53')][_0xa166('0x5a')]()));}})[_0xa166('0x41')](handleError(_0x5af043,null));};
\ No newline at end of file
+var _0x68c4=['request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','crypto','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','apply','reject','save','update','then','destroy','get','stack','name','send','index','map','AnalyticExtractedReport','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','params','rawAttributes','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ExtractedReports','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','download','basename','output','existsSync','join','server/files/reports','savename','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir'];(function(_0x1a016d,_0x424831){var _0x586305=function(_0x1ddf54){while(--_0x1ddf54){_0x1a016d['push'](_0x1a016d['shift']());}};_0x586305(++_0x424831);}(_0x68c4,0x114));var _0x468c=function(_0x5b8155,_0x51c636){_0x5b8155=_0x5b8155-0x0;var _0x1d6f07=_0x68c4[_0x5b8155];return _0x1d6f07;};'use strict';var emlformat=require(_0x468c('0x0'));var rimraf=require(_0x468c('0x1'));var zipdir=require(_0x468c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x468c('0x3'));var moment=require(_0x468c('0x4'));var BPromise=require(_0x468c('0x5'));var Mustache=require('mustache');var util=require(_0x468c('0x6'));var path=require('path');var sox=require(_0x468c('0x7'));var csv=require(_0x468c('0x8'));var ejs=require(_0x468c('0x9'));var fs=require('fs');var fs_extra=require(_0x468c('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x468c('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x468c('0x8'));var querystring=require('querystring');var Papa=require(_0x468c('0xc'));var Redis=require('ioredis');var authService=require(_0x468c('0xd'));var qs=require(_0x468c('0xe'));var as=require(_0x468c('0xf'));var hardwareService=require(_0x468c('0x10'));var logger=require(_0x468c('0x11'))(_0x468c('0x12'));var utils=require(_0x468c('0x13'));var config=require(_0x468c('0x14'));var licenseUtil=require(_0x468c('0x15'));var db=require(_0x468c('0x16'))['db'];function respondWithStatusCode(_0x3be5e6,_0x36efdd){_0x36efdd=_0x36efdd||0xcc;return function(_0x2faf33){if(_0x2faf33){return _0x3be5e6[_0x468c('0x17')](_0x36efdd);}return _0x3be5e6[_0x468c('0x18')](_0x36efdd)[_0x468c('0x19')]();};}function respondWithResult(_0x410ec0,_0x1c3668){_0x1c3668=_0x1c3668||0xc8;return function(_0xc5dfea){if(_0xc5dfea){return _0x410ec0[_0x468c('0x18')](_0x1c3668)['json'](_0xc5dfea);}};}function respondWithFilteredResult(_0x2b1e9a,_0x1284ee){return function(_0x394f4f){if(_0x394f4f){var _0xd39d7e=typeof _0x1284ee[_0x468c('0x1a')]===_0x468c('0x1b')&&typeof _0x1284ee[_0x468c('0x1c')]===_0x468c('0x1b');var _0x2d6679=_0x394f4f[_0x468c('0x1d')];var _0x1e444f=_0xd39d7e?0x0:_0x1284ee[_0x468c('0x1a')];var _0x568e63=_0xd39d7e?_0x394f4f[_0x468c('0x1d')]:_0x1284ee['offset']+_0x1284ee[_0x468c('0x1c')];var _0x6793cc;if(_0x568e63>=_0x2d6679){_0x568e63=_0x2d6679;_0x6793cc=0xc8;}else{_0x6793cc=0xce;}_0x2b1e9a[_0x468c('0x18')](_0x6793cc);return _0x2b1e9a[_0x468c('0x1e')]('Content-Range',_0x1e444f+'-'+_0x568e63+'/'+_0x2d6679)['json'](_0x394f4f);}return null;};}function patchUpdates(_0x6d1113){return function(_0x3833c4){try{jsonpatch[_0x468c('0x1f')](_0x3833c4,_0x6d1113,!![]);}catch(_0x35fe49){return BPromise[_0x468c('0x20')](_0x35fe49);}return _0x3833c4[_0x468c('0x21')]();};}function saveUpdates(_0x4a0e15,_0x213e1a){return function(_0x5863f3){if(_0x5863f3){return _0x5863f3[_0x468c('0x22')](_0x4a0e15)[_0x468c('0x23')](function(_0xcf60b6){return _0xcf60b6;});}return null;};}function removeEntity(_0x225066,_0x4e7b4a){return function(_0x59bfef){if(_0x59bfef){return _0x59bfef[_0x468c('0x24')]()['then'](function(){var _0x114cbd=_0x59bfef[_0x468c('0x25')]({'plain':!![]});var _0x434d1a='ExtractedReports';return db['UserProfileResource'][_0x468c('0x24')]({'where':{'type':_0x434d1a,'resourceId':_0x114cbd['id']}})[_0x468c('0x23')](function(){return _0x59bfef;});})[_0x468c('0x23')](function(){_0x225066['status'](0xcc)[_0x468c('0x19')]();});}};}function handleEntityNotFound(_0x31a379,_0x1be48a){return function(_0x587a71){if(!_0x587a71){_0x31a379['sendStatus'](0x194);}return _0x587a71;};}function handleError(_0x1414f8,_0x481449){_0x481449=_0x481449||0x1f4;return function(_0x5ecc27){logger['error'](_0x5ecc27[_0x468c('0x26')]);if(_0x5ecc27[_0x468c('0x27')]){delete _0x5ecc27[_0x468c('0x27')];}_0x1414f8[_0x468c('0x18')](_0x481449)[_0x468c('0x28')](_0x5ecc27);};}exports[_0x468c('0x29')]=function(_0x554763,_0x3684dd){var _0x6d32a1={},_0x2d8c54={},_0x300012={'count':0x0,'rows':[]};var _0x2594e2=_[_0x468c('0x2a')](db[_0x468c('0x2b')]['rawAttributes'],function(_0x2e5743){return{'name':_0x2e5743[_0x468c('0x2c')],'type':_0x2e5743[_0x468c('0x2d')][_0x468c('0x2e')]};});_0x2d8c54[_0x468c('0x2f')]=_[_0x468c('0x2a')](_0x2594e2,'name');_0x2d8c54[_0x468c('0x30')]=_['keys'](_0x554763[_0x468c('0x30')]);_0x2d8c54[_0x468c('0x31')]=_[_0x468c('0x32')](_0x2d8c54[_0x468c('0x2f')],_0x2d8c54['query']);_0x6d32a1[_0x468c('0x33')]=_[_0x468c('0x32')](_0x2d8c54[_0x468c('0x2f')],qs['fields'](_0x554763['query'][_0x468c('0x34')]));_0x6d32a1[_0x468c('0x33')]=_0x6d32a1['attributes'][_0x468c('0x35')]?_0x6d32a1[_0x468c('0x33')]:_0x2d8c54[_0x468c('0x2f')];if(!_0x554763[_0x468c('0x30')][_0x468c('0x36')](_0x468c('0x37'))){_0x6d32a1[_0x468c('0x1c')]=qs[_0x468c('0x1c')](_0x554763[_0x468c('0x30')]['limit']);_0x6d32a1[_0x468c('0x1a')]=qs[_0x468c('0x1a')](_0x554763[_0x468c('0x30')]['offset']);}_0x6d32a1[_0x468c('0x38')]=qs[_0x468c('0x39')](_0x554763['query']['sort']);_0x6d32a1[_0x468c('0x3a')]=qs[_0x468c('0x31')](_[_0x468c('0x3b')](_0x554763[_0x468c('0x30')],_0x2d8c54[_0x468c('0x31')]),_0x2594e2);if(_0x554763[_0x468c('0x30')][_0x468c('0x3c')]){_0x6d32a1[_0x468c('0x3a')]=_[_0x468c('0x3d')](_0x6d32a1[_0x468c('0x3a')],{'$or':_[_0x468c('0x2a')](_0x2594e2,function(_0x48cddd){if(_0x48cddd[_0x468c('0x2d')]!=='VIRTUAL'){var _0x7f199c={};_0x7f199c[_0x48cddd[_0x468c('0x27')]]={'$like':'%'+_0x554763[_0x468c('0x30')][_0x468c('0x3c')]+'%'};return _0x7f199c;}})});}_0x6d32a1=_[_0x468c('0x3d')]({},_0x6d32a1,_0x554763[_0x468c('0x3e')]);var _0x2c1fdb={'where':_0x6d32a1[_0x468c('0x3a')]};return db[_0x468c('0x2b')][_0x468c('0x1d')](_0x2c1fdb)['then'](function(_0x1cdeda){_0x300012[_0x468c('0x1d')]=_0x1cdeda;if(_0x554763[_0x468c('0x30')]['includeAll']){_0x6d32a1[_0x468c('0x3f')]=[{'all':!![]}];}return db[_0x468c('0x2b')][_0x468c('0x40')](_0x6d32a1);})[_0x468c('0x23')](function(_0x3d7e17){_0x300012['rows']=_0x3d7e17;return _0x300012;})[_0x468c('0x23')](respondWithFilteredResult(_0x3684dd,_0x6d32a1))['catch'](handleError(_0x3684dd,null));};exports['show']=function(_0x532110,_0x189c93){var _0x36523e={'raw':!![],'where':{'id':_0x532110[_0x468c('0x41')]['id']}},_0x3655ff={};_0x3655ff[_0x468c('0x2f')]=_['keys'](db[_0x468c('0x2b')][_0x468c('0x42')]);_0x3655ff[_0x468c('0x30')]=_['keys'](_0x532110['query']);_0x3655ff[_0x468c('0x31')]=_['intersection'](_0x3655ff[_0x468c('0x2f')],_0x3655ff['query']);_0x36523e[_0x468c('0x33')]=_[_0x468c('0x32')](_0x3655ff[_0x468c('0x2f')],qs['fields'](_0x532110['query']['fields']));_0x36523e[_0x468c('0x33')]=_0x36523e[_0x468c('0x33')]['length']?_0x36523e[_0x468c('0x33')]:_0x3655ff[_0x468c('0x2f')];if(_0x532110['query']['includeAll']){_0x36523e[_0x468c('0x3f')]=[{'all':!![]}];}_0x36523e=_[_0x468c('0x3d')]({},_0x36523e,_0x532110['options']);return db[_0x468c('0x2b')]['find'](_0x36523e)[_0x468c('0x23')](handleEntityNotFound(_0x189c93,null))[_0x468c('0x23')](respondWithResult(_0x189c93,null))[_0x468c('0x43')](handleError(_0x189c93,null));};exports[_0x468c('0x44')]=function(_0x5a3d8c,_0x261c84){return db[_0x468c('0x2b')][_0x468c('0x44')](_0x5a3d8c[_0x468c('0x45')],{})['then'](function(_0x2a9635){var _0x10a00b=_0x5a3d8c[_0x468c('0x46')][_0x468c('0x25')]({'plain':!![]});if(!_0x10a00b)throw new Error(_0x468c('0x47'));if(_0x10a00b[_0x468c('0x48')]===_0x468c('0x46')){var _0x437c51=_0x2a9635[_0x468c('0x25')]({'plain':!![]});var _0x56d22b=_0x468c('0x49');return db[_0x468c('0x4a')]['find']({'where':{'name':_0x56d22b,'userProfileId':_0x10a00b[_0x468c('0x4b')]},'raw':!![]})[_0x468c('0x23')](function(_0x230f51){if(_0x230f51&&_0x230f51['autoAssociation']===0x0){return db[_0x468c('0x4c')][_0x468c('0x44')]({'name':_0x437c51[_0x468c('0x27')],'resourceId':_0x437c51['id'],'type':_0x230f51[_0x468c('0x27')],'sectionId':_0x230f51['id']},{})[_0x468c('0x23')](function(){return _0x2a9635;});}else{return _0x2a9635;}})['catch'](function(_0x4c758d){logger['error'](_0x468c('0x4d'),_0x4c758d);throw _0x4c758d;});}return _0x2a9635;})[_0x468c('0x23')](respondWithResult(_0x261c84,0xc9))[_0x468c('0x43')](handleError(_0x261c84,null));};exports['update']=function(_0x58e736,_0x24fa46){if(_0x58e736['body']['id']){delete _0x58e736[_0x468c('0x45')]['id'];}return db[_0x468c('0x2b')][_0x468c('0x4e')]({'where':{'id':_0x58e736[_0x468c('0x41')]['id']}})[_0x468c('0x23')](handleEntityNotFound(_0x24fa46,null))['then'](saveUpdates(_0x58e736[_0x468c('0x45')],null))[_0x468c('0x23')](respondWithResult(_0x24fa46,null))[_0x468c('0x43')](handleError(_0x24fa46,null));};exports[_0x468c('0x24')]=function(_0x4b2754,_0x5acf3e){return db[_0x468c('0x2b')][_0x468c('0x4e')]({'where':{'id':_0x4b2754[_0x468c('0x41')]['id']}})[_0x468c('0x23')](handleEntityNotFound(_0x5acf3e,null))[_0x468c('0x23')](removeEntity(_0x5acf3e,null))['catch'](handleError(_0x5acf3e,null));};exports[_0x468c('0x4f')]=function(_0x334df0,_0x4d7257,_0x4682e0){return db[_0x468c('0x2b')][_0x468c('0x4e')]({'where':{'id':_0x334df0[_0x468c('0x41')]['id']},'attributes':[_0x468c('0x27'),_0x468c('0x50'),'savename',_0x468c('0x51')],'raw':!![]})[_0x468c('0x23')](handleEntityNotFound(_0x4d7257,null))[_0x468c('0x23')](function(_0x3675f2){if(_0x3675f2){if(!fs[_0x468c('0x52')](path[_0x468c('0x53')](config['root'],_0x468c('0x54'),_0x3675f2[_0x468c('0x55')]))){throw new db[(_0x468c('0x56'))][(_0x468c('0x57'))](_0x468c('0x58'));}if(_0x334df0[_0x468c('0x30')][_0x468c('0x59')]){return _0x4d7257[_0x468c('0x17')](0xc8);}return _0x4d7257[_0x468c('0x4f')](path[_0x468c('0x53')](config['root'],_0x468c('0x54'),_0x3675f2[_0x468c('0x55')]),util[_0x468c('0x5a')](_0x468c('0x5b'),_0x3675f2[_0x468c('0x50')]||_0x3675f2[_0x468c('0x27')],_0x3675f2[_0x468c('0x51')][_0x468c('0x5c')]()));}})[_0x468c('0x43')](handleError(_0x4d7257,null));};
\ No newline at end of file
index 0246de6..4cdd745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x615c=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','AnalyticExtractedReport','lodash'];(function(_0x2ce38f,_0x7174e7){var _0x9f688f=function(_0x4fcefb){while(--_0x4fcefb){_0x2ce38f['push'](_0x2ce38f['shift']());}};_0x9f688f(++_0x7174e7);}(_0x615c,0x113));var _0xc615=function(_0xe83ac5,_0x279b67){_0xe83ac5=_0xe83ac5-0x0;var _0x3df16e=_0x615c[_0xe83ac5];return _0x3df16e;};'use strict';var _=require(_0xc615('0x0'));var util=require(_0xc615('0x1'));var logger=require('../../config/logger')(_0xc615('0x2'));var moment=require(_0xc615('0x3'));var BPromise=require(_0xc615('0x4'));var rp=require(_0xc615('0x5'));var fs=require('fs');var path=require(_0xc615('0x6'));var rimraf=require(_0xc615('0x7'));var config=require(_0xc615('0x8'));var attributes=require('./analyticExtractedReport.attributes');module[_0xc615('0x9')]=function(_0x3eb0b8,_0x42fe3f){return _0x3eb0b8[_0xc615('0xa')](_0xc615('0xb'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x559b=['exports','define','AnalyticExtractedReport','analytics_extracted_reports','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes'];(function(_0x9a8e05,_0x95ed11){var _0x2a6ef5=function(_0x122ef2){while(--_0x122ef2){_0x9a8e05['push'](_0x9a8e05['shift']());}};_0x2a6ef5(++_0x95ed11);}(_0x559b,0x1c4));var _0xb559=function(_0x18e0f7,_0x3e567c){_0x18e0f7=_0x18e0f7-0x0;var _0x4364f7=_0x559b[_0x18e0f7];return _0x4364f7;};'use strict';var _=require('lodash');var util=require(_0xb559('0x0'));var logger=require(_0xb559('0x1'))(_0xb559('0x2'));var moment=require(_0xb559('0x3'));var BPromise=require(_0xb559('0x4'));var rp=require(_0xb559('0x5'));var fs=require('fs');var path=require(_0xb559('0x6'));var rimraf=require(_0xb559('0x7'));var config=require(_0xb559('0x8'));var attributes=require(_0xb559('0x9'));module[_0xb559('0xa')]=function(_0x1fd596,_0x182622){return _0x1fd596[_0xb559('0xb')](_0xb559('0xc'),attributes,{'tableName':_0xb559('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dcb75dc..0f6d592 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93ce=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','code','error','message','info','result','lodash'];(function(_0x2d056d,_0x53f6c3){var _0x430fca=function(_0x38e4ee){while(--_0x38e4ee){_0x2d056d['push'](_0x2d056d['shift']());}};_0x430fca(++_0x53f6c3);}(_0x93ce,0x168));var _0xe93c=function(_0xd05552,_0xc3f3d4){_0xd05552=_0xd05552-0x0;var _0x2567df=_0x93ce[_0xd05552];return _0x2567df;};'use strict';var _=require(_0xe93c('0x0'));var util=require('util');var moment=require(_0xe93c('0x1'));var BPromise=require(_0xe93c('0x2'));var rs=require(_0xe93c('0x3'));var fs=require('fs');var Redis=require(_0xe93c('0x4'));var db=require(_0xe93c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe93c('0x6'))(_0xe93c('0x7'));var config=require('../../config/environment');var jayson=require(_0xe93c('0x8'));var client=jayson[_0xe93c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f4e4e,_0x3c20bc,_0x15ba46){return new BPromise(function(_0x4e5259,_0x4536aa){return client['request'](_0x1f4e4e,_0x15ba46)['then'](function(_0x2b7178){logger['info'](_0xe93c('0xa'),_0x3c20bc,_0xe93c('0xb'));logger[_0xe93c('0xc')](_0xe93c('0xd'),_0x3c20bc,_0xe93c('0xb'),JSON['stringify'](_0x2b7178));if(_0x2b7178['error']){if(_0x2b7178['error'][_0xe93c('0xe')]===0x1f4){logger[_0xe93c('0xf')](_0xe93c('0xa'),_0x3c20bc,_0x2b7178[_0xe93c('0xf')][_0xe93c('0x10')]);return _0x4536aa(_0x2b7178[_0xe93c('0xf')][_0xe93c('0x10')]);}logger[_0xe93c('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x3c20bc,_0x2b7178[_0xe93c('0xf')][_0xe93c('0x10')]);return _0x4e5259(_0x2b7178[_0xe93c('0xf')][_0xe93c('0x10')]);}else{logger[_0xe93c('0x11')](_0xe93c('0xa'),_0x3c20bc,_0xe93c('0xb'));_0x4e5259(_0x2b7178[_0xe93c('0x12')]['message']);}})['catch'](function(_0x999f75){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x3c20bc,_0x999f75);_0x4536aa(_0x999f75);});});}
\ No newline at end of file
+var _0xa940=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa940,0x113));var _0x0a94=function(_0x10e284,_0x1b8128){_0x10e284=_0x10e284-0x0;var _0x137a2b=_0xa940[_0x10e284];return _0x137a2b;};'use strict';var _=require(_0x0a94('0x0'));var util=require(_0x0a94('0x1'));var moment=require(_0x0a94('0x2'));var BPromise=require(_0x0a94('0x3'));var rs=require(_0x0a94('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0a94('0x5'));var logger=require(_0x0a94('0x6'))(_0x0a94('0x7'));var config=require(_0x0a94('0x8'));var jayson=require(_0x0a94('0x9'));var client=jayson[_0x0a94('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a05cc,_0x481b8c,_0x5e0888){return new BPromise(function(_0x2f24fa,_0x795d77){return client['request'](_0x3a05cc,_0x5e0888)[_0x0a94('0xb')](function(_0x163814){logger[_0x0a94('0xc')](_0x0a94('0xd'),_0x481b8c,_0x0a94('0xe'));logger[_0x0a94('0xf')](_0x0a94('0x10'),_0x481b8c,_0x0a94('0xe'),JSON[_0x0a94('0x11')](_0x163814));if(_0x163814[_0x0a94('0x12')]){if(_0x163814['error'][_0x0a94('0x13')]===0x1f4){logger['error'](_0x0a94('0xd'),_0x481b8c,_0x163814[_0x0a94('0x12')][_0x0a94('0x14')]);return _0x795d77(_0x163814[_0x0a94('0x12')]['message']);}logger[_0x0a94('0x12')](_0x0a94('0xd'),_0x481b8c,_0x163814[_0x0a94('0x12')][_0x0a94('0x14')]);return _0x2f24fa(_0x163814[_0x0a94('0x12')][_0x0a94('0x14')]);}else{logger[_0x0a94('0xc')](_0x0a94('0xd'),_0x481b8c,'request\x20sent');_0x2f24fa(_0x163814[_0x0a94('0x15')][_0x0a94('0x14')]);}})[_0x0a94('0x16')](function(_0x4d3799){logger[_0x0a94('0x12')](_0x0a94('0xd'),_0x481b8c,_0x4d3799);_0x795d77(_0x4d3799);});});}
\ No newline at end of file
index 921c071..1985ebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6d5=['isAuthenticated','/:id','show','/:id/download','download','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get'];(function(_0x4a0ba6,_0x1c1502){var _0x121ac0=function(_0x558076){while(--_0x558076){_0x4a0ba6['push'](_0x4a0ba6['shift']());}};_0x121ac0(++_0x1c1502);}(_0xf6d5,0x1c4));var _0x5f6d=function(_0x5213f5,_0xe42ece){_0x5213f5=_0x5213f5-0x0;var _0x518396=_0xf6d5[_0x5213f5];return _0x518396;};'use strict';var multer=require(_0x5f6d('0x0'));var util=require(_0x5f6d('0x1'));var path=require(_0x5f6d('0x2'));var timeout=require(_0x5f6d('0x3'));var express=require('express');var router=express[_0x5f6d('0x4')]();var fs_extra=require(_0x5f6d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x5f6d('0x6'));var config=require(_0x5f6d('0x7'));var controller=require(_0x5f6d('0x8'));router[_0x5f6d('0x9')]('/',auth[_0x5f6d('0xa')](),controller['index']);router[_0x5f6d('0x9')](_0x5f6d('0xb'),auth[_0x5f6d('0xa')](),controller[_0x5f6d('0xc')]);router[_0x5f6d('0x9')](_0x5f6d('0xd'),auth['isAuthenticated'](),controller[_0x5f6d('0xe')]);router[_0x5f6d('0xf')]('/',auth['isAuthenticated'](),controller[_0x5f6d('0x10')]);router[_0x5f6d('0x11')](_0x5f6d('0xb'),auth[_0x5f6d('0xa')](),controller[_0x5f6d('0x12')]);router['delete'](_0x5f6d('0xb'),auth[_0x5f6d('0xa')](),controller[_0x5f6d('0x13')]);module[_0x5f6d('0x14')]=router;
\ No newline at end of file
+var _0x4616=['exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','create','update'];(function(_0x4fc177,_0x1fef76){var _0x3cdecb=function(_0x3caebc){while(--_0x3caebc){_0x4fc177['push'](_0x4fc177['shift']());}};_0x3cdecb(++_0x1fef76);}(_0x4616,0x169));var _0x6461=function(_0x122274,_0x34dc4e){_0x122274=_0x122274-0x0;var _0x1164c3=_0x4616[_0x122274];return _0x1164c3;};'use strict';var multer=require(_0x6461('0x0'));var util=require(_0x6461('0x1'));var path=require('path');var timeout=require(_0x6461('0x2'));var express=require(_0x6461('0x3'));var router=express['Router']();var fs_extra=require(_0x6461('0x4'));var auth=require(_0x6461('0x5'));var interaction=require(_0x6461('0x6'));var config=require('../../config/environment');var controller=require(_0x6461('0x7'));router[_0x6461('0x8')]('/',auth[_0x6461('0x9')](),controller['index']);router['get'](_0x6461('0xa'),auth[_0x6461('0x9')](),controller[_0x6461('0xb')]);router[_0x6461('0x8')](_0x6461('0xc'),auth['isAuthenticated'](),controller[_0x6461('0xd')]);router[_0x6461('0xe')]('/',auth[_0x6461('0x9')](),controller[_0x6461('0xf')]);router['put'](_0x6461('0xa'),auth[_0x6461('0x9')](),controller[_0x6461('0x10')]);router['delete'](_0x6461('0xa'),auth[_0x6461('0x9')](),controller['destroy']);module[_0x6461('0x11')]=router;
\ No newline at end of file
index cf6b65f..b6089fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc0c=['BOOLEAN','sequelize','exports','STRING'];(function(_0x5279d1,_0x54c9d5){var _0x17d710=function(_0x5a2475){while(--_0x5a2475){_0x5279d1['push'](_0x5279d1['shift']());}};_0x17d710(++_0x54c9d5);}(_0xbc0c,0x155));var _0xcbc0=function(_0x72b260,_0x2222eb){_0x72b260=_0x72b260-0x0;var _0x41b388=_0xbc0c[_0x72b260];return _0x41b388;};'use strict';var Sequelize=require(_0xcbc0('0x0'));module[_0xcbc0('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0xcbc0('0x2')]},'function':{'type':Sequelize[_0xcbc0('0x2')]},'format':{'type':Sequelize[_0xcbc0('0x2')]},'groupBy':{'type':Sequelize[_0xcbc0('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xcbc0('0x2')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x71e8=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x71e8,0xc5));var _0x871e=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x71e8[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x871e('0x0'));module[_0x871e('0x1')]={'field':{'type':Sequelize[_0x871e('0x2')]},'alias':{'type':Sequelize[_0x871e('0x3')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x871e('0x3')]},'groupBy':{'type':Sequelize[_0x871e('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x871e('0x3')]},'custom':{'type':Sequelize[_0x871e('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 0062c55..d2434ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfd0=['count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','AnalyticFieldReport','fieldName','type','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','show','rawAttributes','catch','create','bulkCreate','body','find','params','ids','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit'];(function(_0x18e1ad,_0x3904ad){var _0x24fd8a=function(_0x2fa440){while(--_0x2fa440){_0x18e1ad['push'](_0x18e1ad['shift']());}};_0x24fd8a(++_0x3904ad);}(_0xbfd0,0x17f));var _0x0bfd=function(_0x18cd5b,_0x10240b){_0x18cd5b=_0x18cd5b-0x0;var _0x5eaa52=_0xbfd0[_0x18cd5b];return _0x5eaa52;};'use strict';var emlformat=require(_0x0bfd('0x0'));var rimraf=require(_0x0bfd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0bfd('0x2'));var rp=require(_0x0bfd('0x3'));var moment=require('moment');var BPromise=require(_0x0bfd('0x4'));var Mustache=require('mustache');var util=require(_0x0bfd('0x5'));var path=require('path');var sox=require(_0x0bfd('0x6'));var csv=require('to-csv');var ejs=require(_0x0bfd('0x7'));var fs=require('fs');var fs_extra=require(_0x0bfd('0x8'));var _=require(_0x0bfd('0x9'));var squel=require(_0x0bfd('0xa'));var crypto=require('crypto');var jsforce=require(_0x0bfd('0xb'));var deskjs=require(_0x0bfd('0xc'));var toCsv=require(_0x0bfd('0xd'));var querystring=require('querystring');var Papa=require(_0x0bfd('0xe'));var Redis=require(_0x0bfd('0xf'));var authService=require(_0x0bfd('0x10'));var qs=require(_0x0bfd('0x11'));var as=require(_0x0bfd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0bfd('0x13'))(_0x0bfd('0x14'));var utils=require(_0x0bfd('0x15'));var config=require(_0x0bfd('0x16'));var licenseUtil=require(_0x0bfd('0x17'));var db=require(_0x0bfd('0x18'))['db'];function respondWithStatusCode(_0x4d2ab3,_0x4f4b72){_0x4f4b72=_0x4f4b72||0xcc;return function(_0x3979dd){if(_0x3979dd){return _0x4d2ab3[_0x0bfd('0x19')](_0x4f4b72);}return _0x4d2ab3['status'](_0x4f4b72)[_0x0bfd('0x1a')]();};}function respondWithResult(_0x28846d,_0x4dcf1c){_0x4dcf1c=_0x4dcf1c||0xc8;return function(_0x285b6f){if(_0x285b6f){return _0x28846d[_0x0bfd('0x1b')](_0x4dcf1c)[_0x0bfd('0x1c')](_0x285b6f);}};}function respondWithFilteredResult(_0x488a34,_0x45a56d){return function(_0x29d371){if(_0x29d371){var _0x4fd1ff=typeof _0x45a56d[_0x0bfd('0x1d')]===_0x0bfd('0x1e')&&typeof _0x45a56d[_0x0bfd('0x1f')]==='undefined';var _0x4ee52d=_0x29d371[_0x0bfd('0x20')];var _0x15c985=_0x4fd1ff?0x0:_0x45a56d[_0x0bfd('0x1d')];var _0x1f0bfa=_0x4fd1ff?_0x29d371['count']:_0x45a56d[_0x0bfd('0x1d')]+_0x45a56d[_0x0bfd('0x1f')];var _0x38cfb9;if(_0x1f0bfa>=_0x4ee52d){_0x1f0bfa=_0x4ee52d;_0x38cfb9=0xc8;}else{_0x38cfb9=0xce;}_0x488a34['status'](_0x38cfb9);return _0x488a34[_0x0bfd('0x21')](_0x0bfd('0x22'),_0x15c985+'-'+_0x1f0bfa+'/'+_0x4ee52d)['json'](_0x29d371);}return null;};}function patchUpdates(_0x351f48){return function(_0x31b177){try{jsonpatch['apply'](_0x31b177,_0x351f48,!![]);}catch(_0x1e5ee5){return BPromise[_0x0bfd('0x23')](_0x1e5ee5);}return _0x31b177[_0x0bfd('0x24')]();};}function saveUpdates(_0x1299f5,_0x28479d){return function(_0x29d890){if(_0x29d890){return _0x29d890[_0x0bfd('0x25')](_0x1299f5)[_0x0bfd('0x26')](function(_0x3e5e2e){return _0x3e5e2e;});}return null;};}function removeEntity(_0x33bc30,_0x297225){return function(_0x18493e){if(_0x18493e){return _0x18493e[_0x0bfd('0x27')]()[_0x0bfd('0x26')](function(){_0x33bc30[_0x0bfd('0x1b')](0xcc)[_0x0bfd('0x1a')]();});}};}function handleEntityNotFound(_0x1c37b1,_0x2ff7cf){return function(_0x478bc8){if(!_0x478bc8){_0x1c37b1[_0x0bfd('0x19')](0x194);}return _0x478bc8;};}function handleError(_0x5b5915,_0x45724d){_0x45724d=_0x45724d||0x1f4;return function(_0x33ab07){logger[_0x0bfd('0x28')](_0x33ab07[_0x0bfd('0x29')]);if(_0x33ab07[_0x0bfd('0x2a')]){delete _0x33ab07[_0x0bfd('0x2a')];}_0x5b5915[_0x0bfd('0x1b')](_0x45724d)[_0x0bfd('0x2b')](_0x33ab07);};}exports[_0x0bfd('0x2c')]=function(_0x4aa3e6,_0x638a38){var _0x98b2b4={},_0x484b91={},_0x891649={'count':0x0,'rows':[]};var _0x3c926f=_['map'](db[_0x0bfd('0x2d')]['rawAttributes'],function(_0x47b7fd){return{'name':_0x47b7fd[_0x0bfd('0x2e')],'type':_0x47b7fd[_0x0bfd('0x2f')]['key']};});_0x484b91[_0x0bfd('0x30')]=_[_0x0bfd('0x31')](_0x3c926f,'name');_0x484b91['query']=_[_0x0bfd('0x32')](_0x4aa3e6[_0x0bfd('0x33')]);_0x484b91[_0x0bfd('0x34')]=_['intersection'](_0x484b91[_0x0bfd('0x30')],_0x484b91['query']);_0x98b2b4['attributes']=_[_0x0bfd('0x35')](_0x484b91[_0x0bfd('0x30')],qs[_0x0bfd('0x36')](_0x4aa3e6[_0x0bfd('0x33')][_0x0bfd('0x36')]));_0x98b2b4['attributes']=_0x98b2b4[_0x0bfd('0x37')][_0x0bfd('0x38')]?_0x98b2b4[_0x0bfd('0x37')]:_0x484b91['model'];if(!_0x4aa3e6[_0x0bfd('0x33')][_0x0bfd('0x39')](_0x0bfd('0x3a'))){_0x98b2b4[_0x0bfd('0x1f')]=qs['limit'](_0x4aa3e6[_0x0bfd('0x33')][_0x0bfd('0x1f')]);_0x98b2b4[_0x0bfd('0x1d')]=qs[_0x0bfd('0x1d')](_0x4aa3e6[_0x0bfd('0x33')][_0x0bfd('0x1d')]);}_0x98b2b4[_0x0bfd('0x3b')]=qs[_0x0bfd('0x3c')](_0x4aa3e6[_0x0bfd('0x33')][_0x0bfd('0x3c')]);_0x98b2b4[_0x0bfd('0x3d')]=qs[_0x0bfd('0x34')](_[_0x0bfd('0x3e')](_0x4aa3e6['query'],_0x484b91[_0x0bfd('0x34')]),_0x3c926f);if(_0x4aa3e6[_0x0bfd('0x33')]['filter']){_0x98b2b4[_0x0bfd('0x3d')]=_[_0x0bfd('0x3f')](_0x98b2b4[_0x0bfd('0x3d')],{'$or':_[_0x0bfd('0x31')](_0x3c926f,function(_0x2073cc){if(_0x2073cc[_0x0bfd('0x2f')]!=='VIRTUAL'){var _0xe83a67={};_0xe83a67[_0x2073cc['name']]={'$like':'%'+_0x4aa3e6['query'][_0x0bfd('0x40')]+'%'};return _0xe83a67;}})});}_0x98b2b4=_[_0x0bfd('0x3f')]({},_0x98b2b4,_0x4aa3e6[_0x0bfd('0x41')]);var _0x1fc76f={'where':_0x98b2b4['where']};return db[_0x0bfd('0x2d')]['count'](_0x1fc76f)[_0x0bfd('0x26')](function(_0xfca2e6){_0x891649[_0x0bfd('0x20')]=_0xfca2e6;if(_0x4aa3e6['query'][_0x0bfd('0x42')]){_0x98b2b4[_0x0bfd('0x43')]=[{'all':!![]}];}return db[_0x0bfd('0x2d')][_0x0bfd('0x44')](_0x98b2b4);})['then'](function(_0x149fee){_0x891649['rows']=_0x149fee;return _0x891649;})[_0x0bfd('0x26')](respondWithFilteredResult(_0x638a38,_0x98b2b4))['catch'](handleError(_0x638a38,null));};exports[_0x0bfd('0x45')]=function(_0x5e9355,_0x5c42d4){var _0x1c9744={'raw':![],'where':{'id':_0x5e9355['params']['id']}},_0x41e87f={};_0x41e87f[_0x0bfd('0x30')]=_['keys'](db['AnalyticFieldReport'][_0x0bfd('0x46')]);_0x41e87f[_0x0bfd('0x33')]=_[_0x0bfd('0x32')](_0x5e9355['query']);_0x41e87f[_0x0bfd('0x34')]=_['intersection'](_0x41e87f[_0x0bfd('0x30')],_0x41e87f[_0x0bfd('0x33')]);_0x1c9744[_0x0bfd('0x37')]=_['intersection'](_0x41e87f[_0x0bfd('0x30')],qs[_0x0bfd('0x36')](_0x5e9355['query'][_0x0bfd('0x36')]));_0x1c9744[_0x0bfd('0x37')]=_0x1c9744[_0x0bfd('0x37')][_0x0bfd('0x38')]?_0x1c9744[_0x0bfd('0x37')]:_0x41e87f[_0x0bfd('0x30')];if(_0x5e9355[_0x0bfd('0x33')][_0x0bfd('0x42')]){_0x1c9744['include']=[{'all':!![]}];}_0x1c9744=_[_0x0bfd('0x3f')]({},_0x1c9744,_0x5e9355[_0x0bfd('0x41')]);return db[_0x0bfd('0x2d')]['find'](_0x1c9744)[_0x0bfd('0x26')](handleEntityNotFound(_0x5c42d4,null))[_0x0bfd('0x26')](respondWithResult(_0x5c42d4,null))[_0x0bfd('0x47')](handleError(_0x5c42d4,null));};exports[_0x0bfd('0x48')]=function(_0x955178,_0x2697d2){return db[_0x0bfd('0x2d')][_0x0bfd('0x48')](_0x955178['body'],{})['then'](respondWithResult(_0x2697d2,0xc9))[_0x0bfd('0x47')](handleError(_0x2697d2,null));};exports[_0x0bfd('0x49')]=function(_0x348dec,_0x4960e2){return db['AnalyticFieldReport'][_0x0bfd('0x49')](_0x348dec[_0x0bfd('0x4a')],{'raw':![],'individualHooks':!![]})[_0x0bfd('0x26')](respondWithResult(_0x4960e2,0xc9))[_0x0bfd('0x47')](handleError(_0x4960e2,null));};exports['update']=function(_0x2361c2,_0x27ec49){if(_0x2361c2['body']['id']){delete _0x2361c2['body']['id'];}return db[_0x0bfd('0x2d')][_0x0bfd('0x4b')]({'where':{'id':_0x2361c2[_0x0bfd('0x4c')]['id']}})[_0x0bfd('0x26')](handleEntityNotFound(_0x27ec49,null))[_0x0bfd('0x26')](saveUpdates(_0x2361c2[_0x0bfd('0x4a')],null))[_0x0bfd('0x26')](respondWithResult(_0x27ec49,null))[_0x0bfd('0x47')](handleError(_0x27ec49,null));};exports[_0x0bfd('0x27')]=function(_0x1b294a,_0x597d2a){return db[_0x0bfd('0x2d')]['find']({'where':{'id':_0x1b294a[_0x0bfd('0x4c')]['id']}})[_0x0bfd('0x26')](handleEntityNotFound(_0x597d2a,null))['then'](removeEntity(_0x597d2a,null))['catch'](handleError(_0x597d2a,null));};exports['bulkDestroy']=function(_0x375bb2,_0x606e42){return db[_0x0bfd('0x2d')][_0x0bfd('0x27')]({'where':{'id':_0x375bb2[_0x0bfd('0x33')][_0x0bfd('0x4d')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x606e42,0xcc))['catch'](handleError(_0x606e42,null));};exports[_0x0bfd('0x4e')]=function(_0x4736c0,_0x17ce84,_0x1533d7){return db[_0x0bfd('0x4f')][_0x0bfd('0x50')]({'where':{'id':_0x4736c0['params']['id']}})[_0x0bfd('0x26')](handleEntityNotFound(_0x17ce84,null))[_0x0bfd('0x26')](function(_0x4296f2){if(_0x4296f2){return db[_0x0bfd('0x51')]['transaction'](function(_0x2d9259){return db[_0x0bfd('0x2d')][_0x0bfd('0x27')]({'where':{'CustomReportId':_0x4736c0[_0x0bfd('0x4c')]['id']},'transaction':_0x2d9259})[_0x0bfd('0x26')](function(_0x57e0b8){var _0x265c04=_[_0x0bfd('0x31')](_0x4736c0[_0x0bfd('0x4a')],function(_0x11302d){delete _0x11302d['id'];_0x11302d[_0x0bfd('0x52')]=_0x4736c0[_0x0bfd('0x4c')]['id'];return _0x11302d;});return db[_0x0bfd('0x2d')][_0x0bfd('0x49')](_0x265c04,{'transaction':_0x2d9259});});})[_0x0bfd('0x26')](function(){return db['AnalyticFieldReport'][_0x0bfd('0x44')]({'where':{'CustomReportId':_0x4736c0[_0x0bfd('0x4c')]['id']}});});}})[_0x0bfd('0x26')](respondWithResult(_0x17ce84,null))[_0x0bfd('0x47')](handleError(_0x17ce84,null));};
\ No newline at end of file
+var _0xeaff=['crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','index','AnalyticFieldReport','fieldName','type','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','include','rows','catch','show','rawAttributes','includeAll','find','create','body','bulkCreate','params','destroy','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel'];(function(_0xcead5,_0x1a38dd){var _0x5b74e0=function(_0x4eb6c3){while(--_0x4eb6c3){_0xcead5['push'](_0xcead5['shift']());}};_0x5b74e0(++_0x1a38dd);}(_0xeaff,0x19f));var _0xfeaf=function(_0x4b1bd7,_0x5bae1a){_0x4b1bd7=_0x4b1bd7-0x0;var _0x34d11c=_0xeaff[_0x4b1bd7];return _0x34d11c;};'use strict';var emlformat=require(_0xfeaf('0x0'));var rimraf=require(_0xfeaf('0x1'));var zipdir=require(_0xfeaf('0x2'));var jsonpatch=require(_0xfeaf('0x3'));var rp=require(_0xfeaf('0x4'));var moment=require(_0xfeaf('0x5'));var BPromise=require(_0xfeaf('0x6'));var Mustache=require(_0xfeaf('0x7'));var util=require(_0xfeaf('0x8'));var path=require(_0xfeaf('0x9'));var sox=require(_0xfeaf('0xa'));var csv=require(_0xfeaf('0xb'));var ejs=require(_0xfeaf('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfeaf('0xd'));var squel=require(_0xfeaf('0xe'));var crypto=require(_0xfeaf('0xf'));var jsforce=require(_0xfeaf('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xfeaf('0xb'));var querystring=require(_0xfeaf('0x11'));var Papa=require(_0xfeaf('0x12'));var Redis=require(_0xfeaf('0x13'));var authService=require(_0xfeaf('0x14'));var qs=require(_0xfeaf('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfeaf('0x16'))('api');var utils=require(_0xfeaf('0x17'));var config=require(_0xfeaf('0x18'));var licenseUtil=require(_0xfeaf('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x30da30,_0x515b38){_0x515b38=_0x515b38||0xcc;return function(_0x1d90ef){if(_0x1d90ef){return _0x30da30['sendStatus'](_0x515b38);}return _0x30da30[_0xfeaf('0x1a')](_0x515b38)[_0xfeaf('0x1b')]();};}function respondWithResult(_0x54d950,_0xcb2b87){_0xcb2b87=_0xcb2b87||0xc8;return function(_0x29fe90){if(_0x29fe90){return _0x54d950[_0xfeaf('0x1a')](_0xcb2b87)[_0xfeaf('0x1c')](_0x29fe90);}};}function respondWithFilteredResult(_0x1beaeb,_0x57cac2){return function(_0xaac8ec){if(_0xaac8ec){var _0xf3cc9e=typeof _0x57cac2[_0xfeaf('0x1d')]==='undefined'&&typeof _0x57cac2[_0xfeaf('0x1e')]===_0xfeaf('0x1f');var _0x1b758b=_0xaac8ec[_0xfeaf('0x20')];var _0x5e45b9=_0xf3cc9e?0x0:_0x57cac2['offset'];var _0x7bab54=_0xf3cc9e?_0xaac8ec[_0xfeaf('0x20')]:_0x57cac2[_0xfeaf('0x1d')]+_0x57cac2[_0xfeaf('0x1e')];var _0x5291ce;if(_0x7bab54>=_0x1b758b){_0x7bab54=_0x1b758b;_0x5291ce=0xc8;}else{_0x5291ce=0xce;}_0x1beaeb[_0xfeaf('0x1a')](_0x5291ce);return _0x1beaeb[_0xfeaf('0x21')](_0xfeaf('0x22'),_0x5e45b9+'-'+_0x7bab54+'/'+_0x1b758b)[_0xfeaf('0x1c')](_0xaac8ec);}return null;};}function patchUpdates(_0x4e431f){return function(_0x488eb8){try{jsonpatch[_0xfeaf('0x23')](_0x488eb8,_0x4e431f,!![]);}catch(_0x5be25a){return BPromise[_0xfeaf('0x24')](_0x5be25a);}return _0x488eb8[_0xfeaf('0x25')]();};}function saveUpdates(_0x40aa91,_0x5c52f1){return function(_0x494ef0){if(_0x494ef0){return _0x494ef0[_0xfeaf('0x26')](_0x40aa91)[_0xfeaf('0x27')](function(_0xec422f){return _0xec422f;});}return null;};}function removeEntity(_0xb7229b,_0x30ed77){return function(_0x19b933){if(_0x19b933){return _0x19b933['destroy']()[_0xfeaf('0x27')](function(){_0xb7229b[_0xfeaf('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1cbe20,_0x1c416){return function(_0x3c3145){if(!_0x3c3145){_0x1cbe20[_0xfeaf('0x28')](0x194);}return _0x3c3145;};}function handleError(_0x57addc,_0x3999a4){_0x3999a4=_0x3999a4||0x1f4;return function(_0x42be5e){logger[_0xfeaf('0x29')](_0x42be5e['stack']);if(_0x42be5e[_0xfeaf('0x2a')]){delete _0x42be5e[_0xfeaf('0x2a')];}_0x57addc[_0xfeaf('0x1a')](_0x3999a4)[_0xfeaf('0x2b')](_0x42be5e);};}exports[_0xfeaf('0x2c')]=function(_0x26dafe,_0x3857cc){var _0x9068b7={},_0xd88fa4={},_0x2a3d32={'count':0x0,'rows':[]};var _0x524cdd=_['map'](db[_0xfeaf('0x2d')]['rawAttributes'],function(_0x6cee3a){return{'name':_0x6cee3a[_0xfeaf('0x2e')],'type':_0x6cee3a[_0xfeaf('0x2f')][_0xfeaf('0x30')]};});_0xd88fa4['model']=_[_0xfeaf('0x31')](_0x524cdd,'name');_0xd88fa4[_0xfeaf('0x32')]=_[_0xfeaf('0x33')](_0x26dafe[_0xfeaf('0x32')]);_0xd88fa4[_0xfeaf('0x34')]=_[_0xfeaf('0x35')](_0xd88fa4['model'],_0xd88fa4[_0xfeaf('0x32')]);_0x9068b7['attributes']=_['intersection'](_0xd88fa4[_0xfeaf('0x36')],qs[_0xfeaf('0x37')](_0x26dafe['query'][_0xfeaf('0x37')]));_0x9068b7[_0xfeaf('0x38')]=_0x9068b7[_0xfeaf('0x38')][_0xfeaf('0x39')]?_0x9068b7[_0xfeaf('0x38')]:_0xd88fa4['model'];if(!_0x26dafe['query'][_0xfeaf('0x3a')](_0xfeaf('0x3b'))){_0x9068b7[_0xfeaf('0x1e')]=qs[_0xfeaf('0x1e')](_0x26dafe[_0xfeaf('0x32')][_0xfeaf('0x1e')]);_0x9068b7['offset']=qs[_0xfeaf('0x1d')](_0x26dafe[_0xfeaf('0x32')][_0xfeaf('0x1d')]);}_0x9068b7[_0xfeaf('0x3c')]=qs['sort'](_0x26dafe[_0xfeaf('0x32')][_0xfeaf('0x3d')]);_0x9068b7[_0xfeaf('0x3e')]=qs[_0xfeaf('0x34')](_['pick'](_0x26dafe[_0xfeaf('0x32')],_0xd88fa4[_0xfeaf('0x34')]),_0x524cdd);if(_0x26dafe[_0xfeaf('0x32')]['filter']){_0x9068b7[_0xfeaf('0x3e')]=_['merge'](_0x9068b7['where'],{'$or':_['map'](_0x524cdd,function(_0x42f23d){if(_0x42f23d[_0xfeaf('0x2f')]!==_0xfeaf('0x3f')){var _0xccfe35={};_0xccfe35[_0x42f23d[_0xfeaf('0x2a')]]={'$like':'%'+_0x26dafe['query'][_0xfeaf('0x40')]+'%'};return _0xccfe35;}})});}_0x9068b7=_[_0xfeaf('0x41')]({},_0x9068b7,_0x26dafe[_0xfeaf('0x42')]);var _0x5c790d={'where':_0x9068b7[_0xfeaf('0x3e')]};return db['AnalyticFieldReport'][_0xfeaf('0x20')](_0x5c790d)['then'](function(_0xf06f58){_0x2a3d32[_0xfeaf('0x20')]=_0xf06f58;if(_0x26dafe['query']['includeAll']){_0x9068b7[_0xfeaf('0x43')]=[{'all':!![]}];}return db[_0xfeaf('0x2d')]['findAll'](_0x9068b7);})['then'](function(_0x27aabb){_0x2a3d32[_0xfeaf('0x44')]=_0x27aabb;return _0x2a3d32;})[_0xfeaf('0x27')](respondWithFilteredResult(_0x3857cc,_0x9068b7))[_0xfeaf('0x45')](handleError(_0x3857cc,null));};exports[_0xfeaf('0x46')]=function(_0x308c6e,_0x277c4b){var _0x2eb6db={'raw':![],'where':{'id':_0x308c6e['params']['id']}},_0x4cf7a9={};_0x4cf7a9['model']=_[_0xfeaf('0x33')](db[_0xfeaf('0x2d')][_0xfeaf('0x47')]);_0x4cf7a9[_0xfeaf('0x32')]=_['keys'](_0x308c6e[_0xfeaf('0x32')]);_0x4cf7a9[_0xfeaf('0x34')]=_[_0xfeaf('0x35')](_0x4cf7a9[_0xfeaf('0x36')],_0x4cf7a9[_0xfeaf('0x32')]);_0x2eb6db[_0xfeaf('0x38')]=_[_0xfeaf('0x35')](_0x4cf7a9[_0xfeaf('0x36')],qs[_0xfeaf('0x37')](_0x308c6e[_0xfeaf('0x32')][_0xfeaf('0x37')]));_0x2eb6db[_0xfeaf('0x38')]=_0x2eb6db[_0xfeaf('0x38')][_0xfeaf('0x39')]?_0x2eb6db['attributes']:_0x4cf7a9['model'];if(_0x308c6e[_0xfeaf('0x32')][_0xfeaf('0x48')]){_0x2eb6db[_0xfeaf('0x43')]=[{'all':!![]}];}_0x2eb6db=_[_0xfeaf('0x41')]({},_0x2eb6db,_0x308c6e[_0xfeaf('0x42')]);return db[_0xfeaf('0x2d')][_0xfeaf('0x49')](_0x2eb6db)['then'](handleEntityNotFound(_0x277c4b,null))[_0xfeaf('0x27')](respondWithResult(_0x277c4b,null))[_0xfeaf('0x45')](handleError(_0x277c4b,null));};exports['create']=function(_0x4ad377,_0x44687c){return db['AnalyticFieldReport'][_0xfeaf('0x4a')](_0x4ad377[_0xfeaf('0x4b')],{})[_0xfeaf('0x27')](respondWithResult(_0x44687c,0xc9))[_0xfeaf('0x45')](handleError(_0x44687c,null));};exports['bulkCreate']=function(_0x36ab2c,_0x2805ea){return db['AnalyticFieldReport'][_0xfeaf('0x4c')](_0x36ab2c[_0xfeaf('0x4b')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x2805ea,0xc9))[_0xfeaf('0x45')](handleError(_0x2805ea,null));};exports['update']=function(_0x1f7539,_0x1988c8){if(_0x1f7539[_0xfeaf('0x4b')]['id']){delete _0x1f7539[_0xfeaf('0x4b')]['id'];}return db[_0xfeaf('0x2d')]['find']({'where':{'id':_0x1f7539[_0xfeaf('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1988c8,null))[_0xfeaf('0x27')](saveUpdates(_0x1f7539[_0xfeaf('0x4b')],null))[_0xfeaf('0x27')](respondWithResult(_0x1988c8,null))['catch'](handleError(_0x1988c8,null));};exports[_0xfeaf('0x4e')]=function(_0x4fd9b6,_0x5644dc){return db[_0xfeaf('0x2d')][_0xfeaf('0x49')]({'where':{'id':_0x4fd9b6[_0xfeaf('0x4d')]['id']}})[_0xfeaf('0x27')](handleEntityNotFound(_0x5644dc,null))[_0xfeaf('0x27')](removeEntity(_0x5644dc,null))[_0xfeaf('0x45')](handleError(_0x5644dc,null));};exports['bulkDestroy']=function(_0x845a06,_0x40e1b8){return db['AnalyticFieldReport'][_0xfeaf('0x4e')]({'where':{'id':_0x845a06[_0xfeaf('0x32')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0xfeaf('0x27')](respondWithResult(_0x40e1b8,0xcc))[_0xfeaf('0x45')](handleError(_0x40e1b8,null));};exports[_0xfeaf('0x4f')]=function(_0x46e67f,_0x1ba7f9,_0x17a1f9){return db[_0xfeaf('0x50')][_0xfeaf('0x51')]({'where':{'id':_0x46e67f[_0xfeaf('0x4d')]['id']}})[_0xfeaf('0x27')](handleEntityNotFound(_0x1ba7f9,null))[_0xfeaf('0x27')](function(_0x5a7ec9){if(_0x5a7ec9){return db[_0xfeaf('0x52')][_0xfeaf('0x53')](function(_0x5ac219){return db[_0xfeaf('0x2d')]['destroy']({'where':{'CustomReportId':_0x46e67f[_0xfeaf('0x4d')]['id']},'transaction':_0x5ac219})[_0xfeaf('0x27')](function(_0x264671){var _0x215582=_[_0xfeaf('0x31')](_0x46e67f[_0xfeaf('0x4b')],function(_0x499d5a){delete _0x499d5a['id'];_0x499d5a[_0xfeaf('0x54')]=_0x46e67f[_0xfeaf('0x4d')]['id'];return _0x499d5a;});return db[_0xfeaf('0x2d')][_0xfeaf('0x4c')](_0x215582,{'transaction':_0x5ac219});});})['then'](function(){return db[_0xfeaf('0x2d')][_0xfeaf('0x55')]({'where':{'CustomReportId':_0x46e67f[_0xfeaf('0x4d')]['id']}});});}})[_0xfeaf('0x27')](respondWithResult(_0x1ba7f9,null))['catch'](handleError(_0x1ba7f9,null));};
\ No newline at end of file
index 13af03a..3145e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb6e=['exports','define','analytics_report_fields','util','api','moment','request-promise','../../config/environment','./analyticFieldReport.attributes'];(function(_0xe19ace,_0x560fa6){var _0x2de345=function(_0x2a1593){while(--_0x2a1593){_0xe19ace['push'](_0xe19ace['shift']());}};_0x2de345(++_0x560fa6);}(_0xdb6e,0xae));var _0xedb6=function(_0x5e9b53,_0x4b8fdc){_0x5e9b53=_0x5e9b53-0x0;var _0x12df57=_0xdb6e[_0x5e9b53];return _0x12df57;};'use strict';var _=require('lodash');var util=require(_0xedb6('0x0'));var logger=require('../../config/logger')(_0xedb6('0x1'));var moment=require(_0xedb6('0x2'));var BPromise=require('bluebird');var rp=require(_0xedb6('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xedb6('0x4'));var attributes=require(_0xedb6('0x5'));module[_0xedb6('0x6')]=function(_0x37e106,_0xc618c1){return _0x37e106[_0xedb6('0x7')]('AnalyticFieldReport',attributes,{'tableName':_0xedb6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8948=['analytics_report_fields','lodash','../../config/logger','api','moment','request-promise','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport'];(function(_0x1296f8,_0x2a4e91){var _0x3cee19=function(_0x226170){while(--_0x226170){_0x1296f8['push'](_0x1296f8['shift']());}};_0x3cee19(++_0x2a4e91);}(_0x8948,0x105));var _0x8894=function(_0x251846,_0x3baa54){_0x251846=_0x251846-0x0;var _0x4e0f4c=_0x8948[_0x251846];return _0x4e0f4c;};'use strict';var _=require(_0x8894('0x0'));var util=require('util');var logger=require(_0x8894('0x1'))(_0x8894('0x2'));var moment=require(_0x8894('0x3'));var BPromise=require('bluebird');var rp=require(_0x8894('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8894('0x5'));var attributes=require(_0x8894('0x6'));module['exports']=function(_0x303c38,_0x10822b){return _0x303c38[_0x8894('0x7')](_0x8894('0x8'),attributes,{'tableName':_0x8894('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c3f559c..3b72f82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8de=['catch','util','moment','bluebird','../../config/logger','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x371b25,_0x224870){var _0x5588e8=function(_0x4e10b1){while(--_0x4e10b1){_0x371b25['push'](_0x371b25['shift']());}};_0x5588e8(++_0x224870);}(_0xb8de,0x157));var _0xeb8d=function(_0x4ee4f4,_0x20ea70){_0x4ee4f4=_0x4ee4f4-0x0;var _0x2c4b7c=_0xb8de[_0x4ee4f4];return _0x2c4b7c;};'use strict';var _=require('lodash');var util=require(_0xeb8d('0x0'));var moment=require(_0xeb8d('0x1'));var BPromise=require(_0xeb8d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xeb8d('0x3'))('rpc');var config=require('../../config/environment');var jayson=require(_0xeb8d('0x4'));var client=jayson[_0xeb8d('0x5')][_0xeb8d('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3ba136,_0x3fb6f6,_0x14a909){return new BPromise(function(_0x447057,_0x2b839d){return client[_0xeb8d('0x7')](_0x3ba136,_0x14a909)[_0xeb8d('0x8')](function(_0x2fdb82){logger[_0xeb8d('0x9')](_0xeb8d('0xa'),_0x3fb6f6,'request\x20sent');logger[_0xeb8d('0xb')](_0xeb8d('0xc'),_0x3fb6f6,_0xeb8d('0xd'),JSON[_0xeb8d('0xe')](_0x2fdb82));if(_0x2fdb82[_0xeb8d('0xf')]){if(_0x2fdb82[_0xeb8d('0xf')][_0xeb8d('0x10')]===0x1f4){logger[_0xeb8d('0xf')](_0xeb8d('0xa'),_0x3fb6f6,_0x2fdb82[_0xeb8d('0xf')][_0xeb8d('0x11')]);return _0x2b839d(_0x2fdb82[_0xeb8d('0xf')][_0xeb8d('0x11')]);}logger[_0xeb8d('0xf')](_0xeb8d('0xa'),_0x3fb6f6,_0x2fdb82[_0xeb8d('0xf')][_0xeb8d('0x11')]);return _0x447057(_0x2fdb82['error']['message']);}else{logger[_0xeb8d('0x9')](_0xeb8d('0xa'),_0x3fb6f6,'request\x20sent');_0x447057(_0x2fdb82['result'][_0xeb8d('0x11')]);}})[_0xeb8d('0x12')](function(_0xb3eaa6){logger[_0xeb8d('0xf')](_0xeb8d('0xa'),_0x3fb6f6,_0xb3eaa6);_0x2b839d(_0xb3eaa6);});});}
\ No newline at end of file
+var _0xdc1c=['request\x20sent','code','error','message','info','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s'];(function(_0x12bc7b,_0x3d8cf2){var _0x18a8a3=function(_0x3d171b){while(--_0x3d171b){_0x12bc7b['push'](_0x12bc7b['shift']());}};_0x18a8a3(++_0x3d8cf2);}(_0xdc1c,0x1d4));var _0xcdc1=function(_0x5264a7,_0x44a706){_0x5264a7=_0x5264a7-0x0;var _0x44f401=_0xdc1c[_0x5264a7];return _0x44f401;};'use strict';var _=require(_0xcdc1('0x0'));var util=require(_0xcdc1('0x1'));var moment=require(_0xcdc1('0x2'));var BPromise=require(_0xcdc1('0x3'));var rs=require(_0xcdc1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcdc1('0x5'))['db'];var utils=require(_0xcdc1('0x6'));var logger=require(_0xcdc1('0x7'))('rpc');var config=require(_0xcdc1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xcdc1('0x9')][_0xcdc1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f50f6,_0x3602d3,_0x2a38){return new BPromise(function(_0x1df562,_0x5dc993){return client[_0xcdc1('0xb')](_0x1f50f6,_0x2a38)[_0xcdc1('0xc')](function(_0x3e39bd){logger['info'](_0xcdc1('0xd'),_0x3602d3,'request\x20sent');logger[_0xcdc1('0xe')](_0xcdc1('0xf'),_0x3602d3,_0xcdc1('0x10'),JSON['stringify'](_0x3e39bd));if(_0x3e39bd['error']){if(_0x3e39bd['error'][_0xcdc1('0x11')]===0x1f4){logger[_0xcdc1('0x12')](_0xcdc1('0xd'),_0x3602d3,_0x3e39bd['error'][_0xcdc1('0x13')]);return _0x5dc993(_0x3e39bd[_0xcdc1('0x12')]['message']);}logger['error'](_0xcdc1('0xd'),_0x3602d3,_0x3e39bd['error']['message']);return _0x1df562(_0x3e39bd[_0xcdc1('0x12')][_0xcdc1('0x13')]);}else{logger[_0xcdc1('0x14')](_0xcdc1('0xd'),_0x3602d3,'request\x20sent');_0x1df562(_0x3e39bd[_0xcdc1('0x15')][_0xcdc1('0x13')]);}})['catch'](function(_0x45818b){logger[_0xcdc1('0x12')](_0xcdc1('0xd'),_0x3602d3,_0x45818b);_0x5dc993(_0x45818b);});});}
\ No newline at end of file
index 852849f..1173ff6 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(_0x3604a8,_0xe81cd1){var _0x2c5a5b=function(_0x102b5a){while(--_0x102b5a){_0x3604a8['push'](_0x3604a8['shift']());}};_0x2c5a5b(++_0xe81cd1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x1ed2ed,_0x374e63){var _0x3f0689=function(_0x2a1161){while(--_0x2a1161){_0x1ed2ed['push'](_0x1ed2ed['shift']());}};_0x3f0689(++_0x374e63);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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 0b518c4..7452993 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee53=['STRING','name'];(function(_0x3ef1b5,_0x4845b1){var _0x56bd5=function(_0x383f04){while(--_0x383f04){_0x3ef1b5['push'](_0x3ef1b5['shift']());}};_0x56bd5(++_0x4845b1);}(_0xee53,0xa8));var _0x3ee5=function(_0x3d27ba,_0x2671a3){_0x3d27ba=_0x3d27ba-0x0;var _0xf01885=_0xee53[_0x3d27ba];return _0xf01885;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3ee5('0x0')],'allowNull':![],'unique':_0x3ee5('0x1')},'table':{'type':Sequelize[_0x3ee5('0x0')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x3ee5('0x0')]}};
\ No newline at end of file
+var _0x7df3=['sequelize','exports','name','TEXT'];(function(_0x3816f7,_0x30e72b){var _0x3d6ac4=function(_0x2c75d0){while(--_0x2c75d0){_0x3816f7['push'](_0x3816f7['shift']());}};_0x3d6ac4(++_0x30e72b);}(_0x7df3,0x1cc));var _0x37df=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x7df3[_0x46aff0];return _0x9d78cf;};'use strict';var Sequelize=require(_0x37df('0x0'));module[_0x37df('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x37df('0x2')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x37df('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f723605..3a4177b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['AnalyticMetric','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','options','find','body','user','UserProfileSection','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','save','then','destroy','get','Metrics','stack','name','send','index','map'];(function(_0x83a081,_0x1814de){var _0x3632e8=function(_0x3bf7db){while(--_0x3bf7db){_0x83a081['push'](_0x83a081['shift']());}};_0x3632e8(++_0x1814de);}(_0x9a19,0x114));var _0x99a1=function(_0x53abe5,_0x33a9e5){_0x53abe5=_0x53abe5-0x0;var _0xc1c37e=_0x9a19[_0x53abe5];return _0xc1c37e;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];function respondWithStatusCode(_0x1bc7aa,_0x2ff655){_0x2ff655=_0x2ff655||0xcc;return function(_0x532f56){if(_0x532f56){return _0x1bc7aa[_0x99a1('0x19')](_0x2ff655);}return _0x1bc7aa[_0x99a1('0x1a')](_0x2ff655)[_0x99a1('0x1b')]();};}function respondWithResult(_0x47815e,_0xe1a1f){_0xe1a1f=_0xe1a1f||0xc8;return function(_0x3c9ef4){if(_0x3c9ef4){return _0x47815e[_0x99a1('0x1a')](_0xe1a1f)['json'](_0x3c9ef4);}};}function respondWithFilteredResult(_0x2d81ed,_0x3e45d4){return function(_0x1bb464){if(_0x1bb464){var _0x3d40cc=typeof _0x3e45d4[_0x99a1('0x1c')]===_0x99a1('0x1d')&&typeof _0x3e45d4[_0x99a1('0x1e')]==='undefined';var _0x4f049c=_0x1bb464[_0x99a1('0x1f')];var _0xbf62f1=_0x3d40cc?0x0:_0x3e45d4[_0x99a1('0x1c')];var _0x1fcd00=_0x3d40cc?_0x1bb464[_0x99a1('0x1f')]:_0x3e45d4[_0x99a1('0x1c')]+_0x3e45d4[_0x99a1('0x1e')];var _0x3cd62c;if(_0x1fcd00>=_0x4f049c){_0x1fcd00=_0x4f049c;_0x3cd62c=0xc8;}else{_0x3cd62c=0xce;}_0x2d81ed[_0x99a1('0x1a')](_0x3cd62c);return _0x2d81ed[_0x99a1('0x20')](_0x99a1('0x21'),_0xbf62f1+'-'+_0x1fcd00+'/'+_0x4f049c)['json'](_0x1bb464);}return null;};}function patchUpdates(_0x3023a1){return function(_0x20007e){try{jsonpatch['apply'](_0x20007e,_0x3023a1,!![]);}catch(_0x38435b){return BPromise['reject'](_0x38435b);}return _0x20007e[_0x99a1('0x22')]();};}function saveUpdates(_0x2927b0,_0x2d6f20){return function(_0x2d3b82){if(_0x2d3b82){return _0x2d3b82['update'](_0x2927b0)[_0x99a1('0x23')](function(_0x1268a7){return _0x1268a7;});}return null;};}function removeEntity(_0x483c17,_0x44df2d){return function(_0x5b5dfa){if(_0x5b5dfa){return _0x5b5dfa[_0x99a1('0x24')]()[_0x99a1('0x23')](function(){var _0x179597=_0x5b5dfa[_0x99a1('0x25')]({'plain':!![]});var _0x3c813=_0x99a1('0x26');return db['UserProfileResource'][_0x99a1('0x24')]({'where':{'type':_0x3c813,'resourceId':_0x179597['id']}})['then'](function(){return _0x5b5dfa;});})['then'](function(){_0x483c17[_0x99a1('0x1a')](0xcc)[_0x99a1('0x1b')]();});}};}function handleEntityNotFound(_0xa6799b,_0x15a0b6){return function(_0x25d560){if(!_0x25d560){_0xa6799b[_0x99a1('0x19')](0x194);}return _0x25d560;};}function handleError(_0x183037,_0x549645){_0x549645=_0x549645||0x1f4;return function(_0xf41b0d){logger['error'](_0xf41b0d[_0x99a1('0x27')]);if(_0xf41b0d[_0x99a1('0x28')]){delete _0xf41b0d[_0x99a1('0x28')];}_0x183037['status'](_0x549645)[_0x99a1('0x29')](_0xf41b0d);};}exports[_0x99a1('0x2a')]=function(_0x5718b9,_0x37514e){var _0x1434a0={},_0x36aa34={},_0x303d1e={'count':0x0,'rows':[]};var _0x2a5b8c=_[_0x99a1('0x2b')](db[_0x99a1('0x2c')][_0x99a1('0x2d')],function(_0x52da8d){return{'name':_0x52da8d['fieldName'],'type':_0x52da8d[_0x99a1('0x2e')]['key']};});_0x36aa34[_0x99a1('0x2f')]=_[_0x99a1('0x2b')](_0x2a5b8c,'name');_0x36aa34[_0x99a1('0x30')]=_[_0x99a1('0x31')](_0x5718b9[_0x99a1('0x30')]);_0x36aa34[_0x99a1('0x32')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],_0x36aa34[_0x99a1('0x30')]);_0x1434a0[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1434a0[_0x99a1('0x34')]=_0x1434a0['attributes']['length']?_0x1434a0[_0x99a1('0x34')]:_0x36aa34[_0x99a1('0x2f')];if(!_0x5718b9[_0x99a1('0x30')][_0x99a1('0x36')](_0x99a1('0x37'))){_0x1434a0[_0x99a1('0x1e')]=qs[_0x99a1('0x1e')](_0x5718b9['query'][_0x99a1('0x1e')]);_0x1434a0[_0x99a1('0x1c')]=qs['offset'](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x1c')]);}_0x1434a0[_0x99a1('0x38')]=qs[_0x99a1('0x39')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x39')]);_0x1434a0[_0x99a1('0x3a')]=qs[_0x99a1('0x32')](_[_0x99a1('0x3b')](_0x5718b9[_0x99a1('0x30')],_0x36aa34[_0x99a1('0x32')]),_0x2a5b8c);if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]){_0x1434a0['where']=_['merge'](_0x1434a0['where'],{'$or':_[_0x99a1('0x2b')](_0x2a5b8c,function(_0x169df7){if(_0x169df7[_0x99a1('0x2e')]!==_0x99a1('0x3d')){var _0x40613a={};_0x40613a[_0x169df7['name']]={'$like':'%'+_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]+'%'};return _0x40613a;}})});}_0x1434a0=_[_0x99a1('0x3e')]({},_0x1434a0,_0x5718b9['options']);var _0x49be37={'where':_0x1434a0[_0x99a1('0x3a')]};return db[_0x99a1('0x2c')][_0x99a1('0x1f')](_0x49be37)['then'](function(_0x6c4cb){_0x303d1e[_0x99a1('0x1f')]=_0x6c4cb;if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3f')]){_0x1434a0[_0x99a1('0x40')]=[{'all':!![]}];}return db[_0x99a1('0x2c')][_0x99a1('0x41')](_0x1434a0);})[_0x99a1('0x23')](function(_0x1c4ce4){_0x303d1e[_0x99a1('0x42')]=_0x1c4ce4;return _0x303d1e;})['then'](respondWithFilteredResult(_0x37514e,_0x1434a0))[_0x99a1('0x43')](handleError(_0x37514e,null));};exports[_0x99a1('0x44')]=function(_0x3d5373,_0x50d38b){var _0x1beed2={'raw':!![],'where':{'id':_0x3d5373[_0x99a1('0x45')]['id']}},_0x51536d={};_0x51536d[_0x99a1('0x2f')]=_[_0x99a1('0x31')](db[_0x99a1('0x2c')][_0x99a1('0x2d')]);_0x51536d[_0x99a1('0x30')]=_['keys'](_0x3d5373[_0x99a1('0x30')]);_0x51536d['filters']=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],_0x51536d[_0x99a1('0x30')]);_0x1beed2[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x3d5373[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1beed2[_0x99a1('0x34')]=_0x1beed2[_0x99a1('0x34')]['length']?_0x1beed2[_0x99a1('0x34')]:_0x51536d[_0x99a1('0x2f')];if(_0x3d5373['query'][_0x99a1('0x3f')]){_0x1beed2[_0x99a1('0x40')]=[{'all':!![]}];}_0x1beed2=_[_0x99a1('0x3e')]({},_0x1beed2,_0x3d5373[_0x99a1('0x46')]);return db[_0x99a1('0x2c')][_0x99a1('0x47')](_0x1beed2)[_0x99a1('0x23')](handleEntityNotFound(_0x50d38b,null))['then'](respondWithResult(_0x50d38b,null))[_0x99a1('0x43')](handleError(_0x50d38b,null));};exports['create']=function(_0x1d4d3f,_0x269798){return db['AnalyticMetric']['create'](_0x1d4d3f[_0x99a1('0x48')],{})[_0x99a1('0x23')](function(_0x462c15){var _0x4519fb=_0x1d4d3f[_0x99a1('0x49')]['get']({'plain':!![]});if(!_0x4519fb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4519fb['role']===_0x99a1('0x49')){var _0x4ae90e=_0x462c15[_0x99a1('0x25')]({'plain':!![]});var _0x30fdfb=_0x99a1('0x26');return db[_0x99a1('0x4a')][_0x99a1('0x47')]({'where':{'name':_0x30fdfb,'userProfileId':_0x4519fb['userProfileId']},'raw':!![]})[_0x99a1('0x23')](function(_0x22bfd8){if(_0x22bfd8&&_0x22bfd8[_0x99a1('0x4b')]===0x0){return db['UserProfileResource'][_0x99a1('0x4c')]({'name':_0x4ae90e['name'],'resourceId':_0x4ae90e['id'],'type':_0x22bfd8['name'],'sectionId':_0x22bfd8['id']},{})[_0x99a1('0x23')](function(){return _0x462c15;});}else{return _0x462c15;}})[_0x99a1('0x43')](function(_0x1dd17b){logger[_0x99a1('0x4d')](_0x99a1('0x4e'),_0x1dd17b);throw _0x1dd17b;});}return _0x462c15;})[_0x99a1('0x23')](respondWithResult(_0x269798,0xc9))[_0x99a1('0x43')](handleError(_0x269798,null));};exports[_0x99a1('0x4f')]=function(_0x16641e,_0x53e9eb){if(_0x16641e[_0x99a1('0x48')]['id']){delete _0x16641e['body']['id'];}return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x16641e['params']['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x53e9eb,null))[_0x99a1('0x23')](saveUpdates(_0x16641e[_0x99a1('0x48')],null))[_0x99a1('0x23')](respondWithResult(_0x53e9eb,null))[_0x99a1('0x43')](handleError(_0x53e9eb,null));};exports[_0x99a1('0x24')]=function(_0x157c49,_0x1a5658){return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x157c49[_0x99a1('0x45')]['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x1a5658,null))['then'](removeEntity(_0x1a5658,null))['catch'](handleError(_0x1a5658,null));};
\ No newline at end of file
+var _0x8d0e=['then','get','Metrics','UserProfileResource','end','sendStatus','error','stack','name','send','AnalyticMetric','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','fields','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','offset','count','set','apply','reject','save','update','destroy'];(function(_0x34217f,_0x4954d9){var _0x533721=function(_0x5ea689){while(--_0x5ea689){_0x34217f['push'](_0x34217f['shift']());}};_0x533721(++_0x4954d9);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x66c523,_0x10dec0){_0x66c523=_0x66c523-0x0;var _0x219b5a=_0x8d0e[_0x66c523];return _0x219b5a;};'use strict';var emlformat=require(_0xe8d0('0x0'));var rimraf=require(_0xe8d0('0x1'));var zipdir=require(_0xe8d0('0x2'));var jsonpatch=require(_0xe8d0('0x3'));var rp=require(_0xe8d0('0x4'));var moment=require(_0xe8d0('0x5'));var BPromise=require(_0xe8d0('0x6'));var Mustache=require(_0xe8d0('0x7'));var util=require(_0xe8d0('0x8'));var path=require('path');var sox=require(_0xe8d0('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe8d0('0xa'));var _=require(_0xe8d0('0xb'));var squel=require(_0xe8d0('0xc'));var crypto=require(_0xe8d0('0xd'));var jsforce=require(_0xe8d0('0xe'));var deskjs=require(_0xe8d0('0xf'));var toCsv=require(_0xe8d0('0x10'));var querystring=require(_0xe8d0('0x11'));var Papa=require('papaparse');var Redis=require(_0xe8d0('0x12'));var authService=require(_0xe8d0('0x13'));var qs=require(_0xe8d0('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe8d0('0x15'))(_0xe8d0('0x16'));var utils=require(_0xe8d0('0x17'));var config=require(_0xe8d0('0x18'));var licenseUtil=require(_0xe8d0('0x19'));var db=require(_0xe8d0('0x1a'))['db'];function respondWithStatusCode(_0x5934b2,_0x38fac0){_0x38fac0=_0x38fac0||0xcc;return function(_0x15b9e5){if(_0x15b9e5){return _0x5934b2['sendStatus'](_0x38fac0);}return _0x5934b2[_0xe8d0('0x1b')](_0x38fac0)['end']();};}function respondWithResult(_0x59b4b7,_0x90a1ea){_0x90a1ea=_0x90a1ea||0xc8;return function(_0x2aa906){if(_0x2aa906){return _0x59b4b7[_0xe8d0('0x1b')](_0x90a1ea)[_0xe8d0('0x1c')](_0x2aa906);}};}function respondWithFilteredResult(_0x15d3a1,_0x7151c6){return function(_0x52818a){if(_0x52818a){var _0x6ccffa=typeof _0x7151c6['offset']===_0xe8d0('0x1d')&&typeof _0x7151c6[_0xe8d0('0x1e')]===_0xe8d0('0x1d');var _0x4d1db4=_0x52818a['count'];var _0x47c67a=_0x6ccffa?0x0:_0x7151c6[_0xe8d0('0x1f')];var _0x384854=_0x6ccffa?_0x52818a[_0xe8d0('0x20')]:_0x7151c6[_0xe8d0('0x1f')]+_0x7151c6[_0xe8d0('0x1e')];var _0x588133;if(_0x384854>=_0x4d1db4){_0x384854=_0x4d1db4;_0x588133=0xc8;}else{_0x588133=0xce;}_0x15d3a1[_0xe8d0('0x1b')](_0x588133);return _0x15d3a1[_0xe8d0('0x21')]('Content-Range',_0x47c67a+'-'+_0x384854+'/'+_0x4d1db4)['json'](_0x52818a);}return null;};}function patchUpdates(_0x554402){return function(_0x384a60){try{jsonpatch[_0xe8d0('0x22')](_0x384a60,_0x554402,!![]);}catch(_0x25363b){return BPromise[_0xe8d0('0x23')](_0x25363b);}return _0x384a60[_0xe8d0('0x24')]();};}function saveUpdates(_0x23a945,_0x1bd25c){return function(_0x28a6b5){if(_0x28a6b5){return _0x28a6b5[_0xe8d0('0x25')](_0x23a945)['then'](function(_0xed8f2e){return _0xed8f2e;});}return null;};}function removeEntity(_0x9f747,_0x572c25){return function(_0x106614){if(_0x106614){return _0x106614[_0xe8d0('0x26')]()[_0xe8d0('0x27')](function(){var _0xd86c76=_0x106614[_0xe8d0('0x28')]({'plain':!![]});var _0x149dfd=_0xe8d0('0x29');return db[_0xe8d0('0x2a')][_0xe8d0('0x26')]({'where':{'type':_0x149dfd,'resourceId':_0xd86c76['id']}})[_0xe8d0('0x27')](function(){return _0x106614;});})[_0xe8d0('0x27')](function(){_0x9f747['status'](0xcc)[_0xe8d0('0x2b')]();});}};}function handleEntityNotFound(_0x26dd52,_0x10dec2){return function(_0x486f49){if(!_0x486f49){_0x26dd52[_0xe8d0('0x2c')](0x194);}return _0x486f49;};}function handleError(_0x343b08,_0x526240){_0x526240=_0x526240||0x1f4;return function(_0x1519e2){logger[_0xe8d0('0x2d')](_0x1519e2[_0xe8d0('0x2e')]);if(_0x1519e2[_0xe8d0('0x2f')]){delete _0x1519e2[_0xe8d0('0x2f')];}_0x343b08['status'](_0x526240)[_0xe8d0('0x30')](_0x1519e2);};}exports['index']=function(_0x5d3276,_0x50ad3c){var _0x547a2b={},_0x13cd4c={},_0x36ccec={'count':0x0,'rows':[]};var _0x5151fa=_['map'](db[_0xe8d0('0x31')]['rawAttributes'],function(_0x3b5d31){return{'name':_0x3b5d31[_0xe8d0('0x32')],'type':_0x3b5d31[_0xe8d0('0x33')][_0xe8d0('0x34')]};});_0x13cd4c[_0xe8d0('0x35')]=_['map'](_0x5151fa,_0xe8d0('0x2f'));_0x13cd4c[_0xe8d0('0x36')]=_[_0xe8d0('0x37')](_0x5d3276[_0xe8d0('0x36')]);_0x13cd4c['filters']=_[_0xe8d0('0x38')](_0x13cd4c[_0xe8d0('0x35')],_0x13cd4c['query']);_0x547a2b[_0xe8d0('0x39')]=_['intersection'](_0x13cd4c[_0xe8d0('0x35')],qs['fields'](_0x5d3276[_0xe8d0('0x36')]['fields']));_0x547a2b[_0xe8d0('0x39')]=_0x547a2b[_0xe8d0('0x39')][_0xe8d0('0x3a')]?_0x547a2b[_0xe8d0('0x39')]:_0x13cd4c['model'];if(!_0x5d3276[_0xe8d0('0x36')][_0xe8d0('0x3b')](_0xe8d0('0x3c'))){_0x547a2b['limit']=qs[_0xe8d0('0x1e')](_0x5d3276[_0xe8d0('0x36')][_0xe8d0('0x1e')]);_0x547a2b[_0xe8d0('0x1f')]=qs[_0xe8d0('0x1f')](_0x5d3276['query'][_0xe8d0('0x1f')]);}_0x547a2b[_0xe8d0('0x3d')]=qs[_0xe8d0('0x3e')](_0x5d3276[_0xe8d0('0x36')][_0xe8d0('0x3e')]);_0x547a2b[_0xe8d0('0x3f')]=qs[_0xe8d0('0x40')](_[_0xe8d0('0x41')](_0x5d3276['query'],_0x13cd4c['filters']),_0x5151fa);if(_0x5d3276[_0xe8d0('0x36')][_0xe8d0('0x42')]){_0x547a2b[_0xe8d0('0x3f')]=_[_0xe8d0('0x43')](_0x547a2b[_0xe8d0('0x3f')],{'$or':_['map'](_0x5151fa,function(_0x2e4362){if(_0x2e4362['type']!==_0xe8d0('0x44')){var _0x458294={};_0x458294[_0x2e4362[_0xe8d0('0x2f')]]={'$like':'%'+_0x5d3276['query'][_0xe8d0('0x42')]+'%'};return _0x458294;}})});}_0x547a2b=_[_0xe8d0('0x43')]({},_0x547a2b,_0x5d3276[_0xe8d0('0x45')]);var _0x230a90={'where':_0x547a2b[_0xe8d0('0x3f')]};return db['AnalyticMetric']['count'](_0x230a90)['then'](function(_0x4cf0da){_0x36ccec[_0xe8d0('0x20')]=_0x4cf0da;if(_0x5d3276['query'][_0xe8d0('0x46')]){_0x547a2b[_0xe8d0('0x47')]=[{'all':!![]}];}return db[_0xe8d0('0x31')][_0xe8d0('0x48')](_0x547a2b);})[_0xe8d0('0x27')](function(_0x1156da){_0x36ccec[_0xe8d0('0x49')]=_0x1156da;return _0x36ccec;})[_0xe8d0('0x27')](respondWithFilteredResult(_0x50ad3c,_0x547a2b))['catch'](handleError(_0x50ad3c,null));};exports[_0xe8d0('0x4a')]=function(_0x1da8b2,_0x4a3740){var _0x4bcdff={'raw':!![],'where':{'id':_0x1da8b2[_0xe8d0('0x4b')]['id']}},_0x3825a1={};_0x3825a1[_0xe8d0('0x35')]=_['keys'](db[_0xe8d0('0x31')][_0xe8d0('0x4c')]);_0x3825a1['query']=_[_0xe8d0('0x37')](_0x1da8b2[_0xe8d0('0x36')]);_0x3825a1['filters']=_[_0xe8d0('0x38')](_0x3825a1[_0xe8d0('0x35')],_0x3825a1[_0xe8d0('0x36')]);_0x4bcdff[_0xe8d0('0x39')]=_[_0xe8d0('0x38')](_0x3825a1[_0xe8d0('0x35')],qs[_0xe8d0('0x4d')](_0x1da8b2[_0xe8d0('0x36')]['fields']));_0x4bcdff[_0xe8d0('0x39')]=_0x4bcdff[_0xe8d0('0x39')][_0xe8d0('0x3a')]?_0x4bcdff[_0xe8d0('0x39')]:_0x3825a1[_0xe8d0('0x35')];if(_0x1da8b2[_0xe8d0('0x36')][_0xe8d0('0x46')]){_0x4bcdff[_0xe8d0('0x47')]=[{'all':!![]}];}_0x4bcdff=_[_0xe8d0('0x43')]({},_0x4bcdff,_0x1da8b2[_0xe8d0('0x45')]);return db[_0xe8d0('0x31')][_0xe8d0('0x4e')](_0x4bcdff)['then'](handleEntityNotFound(_0x4a3740,null))[_0xe8d0('0x27')](respondWithResult(_0x4a3740,null))[_0xe8d0('0x4f')](handleError(_0x4a3740,null));};exports[_0xe8d0('0x50')]=function(_0xad7d94,_0x34047c){return db[_0xe8d0('0x31')][_0xe8d0('0x50')](_0xad7d94['body'],{})[_0xe8d0('0x27')](function(_0x424764){var _0x151cf4=_0xad7d94[_0xe8d0('0x51')]['get']({'plain':!![]});if(!_0x151cf4)throw new Error(_0xe8d0('0x52'));if(_0x151cf4['role']===_0xe8d0('0x51')){var _0x382ae9=_0x424764[_0xe8d0('0x28')]({'plain':!![]});var _0x158d24=_0xe8d0('0x29');return db[_0xe8d0('0x53')][_0xe8d0('0x4e')]({'where':{'name':_0x158d24,'userProfileId':_0x151cf4['userProfileId']},'raw':!![]})[_0xe8d0('0x27')](function(_0x55f93d){if(_0x55f93d&&_0x55f93d['autoAssociation']===0x0){return db[_0xe8d0('0x2a')]['create']({'name':_0x382ae9[_0xe8d0('0x2f')],'resourceId':_0x382ae9['id'],'type':_0x55f93d['name'],'sectionId':_0x55f93d['id']},{})[_0xe8d0('0x27')](function(){return _0x424764;});}else{return _0x424764;}})[_0xe8d0('0x4f')](function(_0x13713c){logger[_0xe8d0('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x13713c);throw _0x13713c;});}return _0x424764;})[_0xe8d0('0x27')](respondWithResult(_0x34047c,0xc9))[_0xe8d0('0x4f')](handleError(_0x34047c,null));};exports[_0xe8d0('0x25')]=function(_0x2e3f1d,_0x18cc14){if(_0x2e3f1d['body']['id']){delete _0x2e3f1d[_0xe8d0('0x54')]['id'];}return db[_0xe8d0('0x31')][_0xe8d0('0x4e')]({'where':{'id':_0x2e3f1d['params']['id']}})[_0xe8d0('0x27')](handleEntityNotFound(_0x18cc14,null))['then'](saveUpdates(_0x2e3f1d['body'],null))[_0xe8d0('0x27')](respondWithResult(_0x18cc14,null))[_0xe8d0('0x4f')](handleError(_0x18cc14,null));};exports['destroy']=function(_0xcb6ce2,_0x3a8074){return db['AnalyticMetric'][_0xe8d0('0x4e')]({'where':{'id':_0xcb6ce2[_0xe8d0('0x4b')]['id']}})[_0xe8d0('0x27')](handleEntityNotFound(_0x3a8074,null))[_0xe8d0('0x27')](removeEntity(_0x3a8074,null))['catch'](handleError(_0x3a8074,null));};
\ No newline at end of file
index 954c9b7..5b75e60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0734=['path','rimraf','../../config/environment','define','AnalyticMetric','analytics_metrics','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x14a5ce,_0x322e8c){var _0x2559d1=function(_0x446300){while(--_0x446300){_0x14a5ce['push'](_0x14a5ce['shift']());}};_0x2559d1(++_0x322e8c);}(_0x0734,0xba));var _0x4073=function(_0x287d8b,_0x139639){_0x287d8b=_0x287d8b-0x0;var _0x21f283=_0x0734[_0x287d8b];return _0x21f283;};'use strict';var _=require(_0x4073('0x0'));var util=require(_0x4073('0x1'));var logger=require(_0x4073('0x2'))(_0x4073('0x3'));var moment=require(_0x4073('0x4'));var BPromise=require('bluebird');var rp=require(_0x4073('0x5'));var fs=require('fs');var path=require(_0x4073('0x6'));var rimraf=require(_0x4073('0x7'));var config=require(_0x4073('0x8'));var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x9d7fe4,_0x547688){return _0x9d7fe4[_0x4073('0x9')](_0x4073('0xa'),attributes,{'tableName':_0x4073('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8e20=['util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','analytics_metrics','lodash'];(function(_0x19a5f2,_0x44e39e){var _0x4f5a70=function(_0x9623da){while(--_0x9623da){_0x19a5f2['push'](_0x19a5f2['shift']());}};_0x4f5a70(++_0x44e39e);}(_0x8e20,0x1af));var _0x08e2=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x8e20[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x08e2('0x0'));var util=require(_0x08e2('0x1'));var logger=require(_0x08e2('0x2'))('api');var moment=require(_0x08e2('0x3'));var BPromise=require(_0x08e2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x08e2('0x5'));var rimraf=require(_0x08e2('0x6'));var config=require(_0x08e2('0x7'));var attributes=require(_0x08e2('0x8'));module[_0x08e2('0x9')]=function(_0x558e8b,_0x1446fe){return _0x558e8b[_0x08e2('0xa')]('AnalyticMetric',attributes,{'tableName':_0x08e2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b72cd29..0e868c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1da=['../../config/logger','../../config/environment','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','randomstring','../../config/utils'];(function(_0x233b3a,_0x5f4ad9){var _0x109870=function(_0x510310){while(--_0x510310){_0x233b3a['push'](_0x233b3a['shift']());}};_0x109870(++_0x5f4ad9);}(_0xa1da,0xc5));var _0xaa1d=function(_0xcd3530,_0x34825d){_0xcd3530=_0xcd3530-0x0;var _0x322ad3=_0xa1da[_0xcd3530];return _0x322ad3;};'use strict';var _=require(_0xaa1d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xaa1d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xaa1d('0x2'));var logger=require(_0xaa1d('0x3'))('rpc');var config=require(_0xaa1d('0x4'));var jayson=require('jayson/promise');var client=jayson[_0xaa1d('0x5')][_0xaa1d('0x6')]({'port':0x232a});function respondWithRpcPromise(_0xae1249,_0x1afea0,_0x5b9feb){return new BPromise(function(_0x5ab367,_0x5ce0c9){return client[_0xaa1d('0x7')](_0xae1249,_0x5b9feb)[_0xaa1d('0x8')](function(_0x266418){logger[_0xaa1d('0x9')](_0xaa1d('0xa'),_0x1afea0,_0xaa1d('0xb'));logger[_0xaa1d('0xc')](_0xaa1d('0xd'),_0x1afea0,_0xaa1d('0xb'),JSON[_0xaa1d('0xe')](_0x266418));if(_0x266418[_0xaa1d('0xf')]){if(_0x266418['error'][_0xaa1d('0x10')]===0x1f4){logger['error'](_0xaa1d('0xa'),_0x1afea0,_0x266418[_0xaa1d('0xf')][_0xaa1d('0x11')]);return _0x5ce0c9(_0x266418[_0xaa1d('0xf')][_0xaa1d('0x11')]);}logger['error'](_0xaa1d('0xa'),_0x1afea0,_0x266418['error'][_0xaa1d('0x11')]);return _0x5ab367(_0x266418['error']['message']);}else{logger[_0xaa1d('0x9')]('AnalyticMetric,\x20%s,\x20%s',_0x1afea0,_0xaa1d('0xb'));_0x5ab367(_0x266418[_0xaa1d('0x12')]['message']);}})[_0xaa1d('0x13')](function(_0x153a99){logger[_0xaa1d('0xf')](_0xaa1d('0xa'),_0x1afea0,_0x153a99);_0x5ce0c9(_0x153a99);});});}
\ No newline at end of file
+var _0x747a=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','AnalyticMetric,\x20%s,\x20%s','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util'];(function(_0x51a02f,_0x27787e){var _0x1a9240=function(_0x5dec0b){while(--_0x5dec0b){_0x51a02f['push'](_0x51a02f['shift']());}};_0x1a9240(++_0x27787e);}(_0x747a,0xe6));var _0xa747=function(_0x19919d,_0x1c827d){_0x19919d=_0x19919d-0x0;var _0x16d617=_0x747a[_0x19919d];return _0x16d617;};'use strict';var _=require('lodash');var util=require(_0xa747('0x0'));var moment=require(_0xa747('0x1'));var BPromise=require(_0xa747('0x2'));var rs=require(_0xa747('0x3'));var fs=require('fs');var Redis=require(_0xa747('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa747('0x5'));var logger=require(_0xa747('0x6'))(_0xa747('0x7'));var config=require(_0xa747('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa747('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b96ec,_0x4e8551,_0x3786c9){return new BPromise(function(_0x1db3ff,_0x5ee516){return client[_0xa747('0xa')](_0x3b96ec,_0x3786c9)[_0xa747('0xb')](function(_0x383979){logger['info'](_0xa747('0xc'),_0x4e8551,_0xa747('0xd'));logger['debug'](_0xa747('0xe'),_0x4e8551,_0xa747('0xd'),JSON[_0xa747('0xf')](_0x383979));if(_0x383979[_0xa747('0x10')]){if(_0x383979[_0xa747('0x10')]['code']===0x1f4){logger[_0xa747('0x10')]('AnalyticMetric,\x20%s,\x20%s',_0x4e8551,_0x383979['error'][_0xa747('0x11')]);return _0x5ee516(_0x383979[_0xa747('0x10')][_0xa747('0x11')]);}logger[_0xa747('0x10')](_0xa747('0xc'),_0x4e8551,_0x383979[_0xa747('0x10')][_0xa747('0x11')]);return _0x1db3ff(_0x383979[_0xa747('0x10')][_0xa747('0x11')]);}else{logger[_0xa747('0x12')](_0xa747('0xc'),_0x4e8551,_0xa747('0xd'));_0x1db3ff(_0x383979[_0xa747('0x13')][_0xa747('0x11')]);}})[_0xa747('0x14')](function(_0x2b34f9){logger[_0xa747('0x10')]('AnalyticMetric,\x20%s,\x20%s',_0x4e8551,_0x2b34f9);_0x5ee516(_0x2b34f9);});});}
\ No newline at end of file
index 46c0c69..803174b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x322f56,_0x1d6cc9){var _0x3917be=function(_0x34b631){while(--_0x34b631){_0x322f56['push'](_0x322f56['shift']());}};_0x3917be(++_0x1d6cc9);}(_0x46e1,0x155));var _0x146e=function(_0xa2b257,_0xd07999){_0xa2b257=_0xa2b257-0x0;var _0x17f4ed=_0x46e1[_0xa2b257];return _0x17f4ed;};'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('./analyticMetric.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
+var _0xc3a8=['update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','create','put'];(function(_0x29718c,_0x438054){var _0x206b76=function(_0x53119d){while(--_0x53119d){_0x29718c['push'](_0x29718c['shift']());}};_0x206b76(++_0x438054);}(_0xc3a8,0xe8));var _0x8c3a=function(_0x8b953b,_0x132acf){_0x8b953b=_0x8b953b-0x0;var _0x1943d5=_0xc3a8[_0x8b953b];return _0x1943d5;};'use strict';var multer=require(_0x8c3a('0x0'));var util=require(_0x8c3a('0x1'));var path=require(_0x8c3a('0x2'));var timeout=require('connect-timeout');var express=require(_0x8c3a('0x3'));var router=express['Router']();var fs_extra=require(_0x8c3a('0x4'));var auth=require(_0x8c3a('0x5'));var interaction=require(_0x8c3a('0x6'));var config=require(_0x8c3a('0x7'));var controller=require('./analyticMetric.controller');router[_0x8c3a('0x8')]('/',auth[_0x8c3a('0x9')](),controller[_0x8c3a('0xa')]);router[_0x8c3a('0x8')](_0x8c3a('0xb'),auth[_0x8c3a('0x9')](),controller['show']);router[_0x8c3a('0xc')]('/',auth[_0x8c3a('0x9')](),controller[_0x8c3a('0xd')]);router[_0x8c3a('0xe')](_0x8c3a('0xb'),auth['isAuthenticated'](),controller[_0x8c3a('0xf')]);router[_0x8c3a('0x10')]('/:id',auth[_0x8c3a('0x9')](),controller[_0x8c3a('0x11')]);module[_0x8c3a('0x12')]=router;
\ No newline at end of file
index cbe15f4..a54cf0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe381=['TEXT','exports'];(function(_0x44fc33,_0x480283){var _0x1e64a1=function(_0x2b642b){while(--_0x2b642b){_0x44fc33['push'](_0x44fc33['shift']());}};_0x1e64a1(++_0x480283);}(_0xe381,0x93));var _0x1e38=function(_0x4cc492,_0x162c85){_0x4cc492=_0x4cc492-0x0;var _0x1f36b9=_0xe381[_0x4cc492];return _0x1f36b9;};'use strict';var Sequelize=require('sequelize');module[_0x1e38('0x0')]={'tree':{'type':Sequelize[_0x1e38('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x62a6=['TEXT','exports'];(function(_0x553283,_0xb12ca3){var _0x4e5f74=function(_0xc0ed6b){while(--_0xc0ed6b){_0x553283['push'](_0x553283['shift']());}};_0x4e5f74(++_0xb12ca3);}(_0x62a6,0x7f));var _0x662a=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x62a6[_0x5d2803];return _0xdcad2c;};'use strict';var Sequelize=require('sequelize');module[_0x662a('0x0')]={'tree':{'type':Sequelize[_0x662a('0x1')],'allowNull':![]}};
\ No newline at end of file
index 51ba7a0..93fadb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fd7=['query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','AnalyticTreeReport','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','update','find','params','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','apply','reject','save','then','destroy','error','stack','send','index','map','fieldName','type','key','model','name'];(function(_0x3b184d,_0x3844fe){var _0x56df79=function(_0x43b629){while(--_0x43b629){_0x3b184d['push'](_0x3b184d['shift']());}};_0x56df79(++_0x3844fe);}(_0x1fd7,0x1e7));var _0x71fd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1fd7[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x71fd('0x0'));var rimraf=require(_0x71fd('0x1'));var zipdir=require(_0x71fd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x71fd('0x3'));var Mustache=require(_0x71fd('0x4'));var util=require(_0x71fd('0x5'));var path=require(_0x71fd('0x6'));var sox=require(_0x71fd('0x7'));var csv=require(_0x71fd('0x8'));var ejs=require(_0x71fd('0x9'));var fs=require('fs');var fs_extra=require(_0x71fd('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x71fd('0xb'));var deskjs=require(_0x71fd('0xc'));var toCsv=require(_0x71fd('0x8'));var querystring=require(_0x71fd('0xd'));var Papa=require(_0x71fd('0xe'));var Redis=require(_0x71fd('0xf'));var authService=require(_0x71fd('0x10'));var qs=require(_0x71fd('0x11'));var as=require(_0x71fd('0x12'));var hardwareService=require(_0x71fd('0x13'));var logger=require('../../config/logger')(_0x71fd('0x14'));var utils=require(_0x71fd('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x71fd('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2701d1,_0x59bdbd){_0x59bdbd=_0x59bdbd||0xcc;return function(_0x2d1e1a){if(_0x2d1e1a){return _0x2701d1[_0x71fd('0x17')](_0x59bdbd);}return _0x2701d1[_0x71fd('0x18')](_0x59bdbd)[_0x71fd('0x19')]();};}function respondWithResult(_0x57f167,_0x4751e2){_0x4751e2=_0x4751e2||0xc8;return function(_0x388a86){if(_0x388a86){return _0x57f167[_0x71fd('0x18')](_0x4751e2)[_0x71fd('0x1a')](_0x388a86);}};}function respondWithFilteredResult(_0x275212,_0x3775c4){return function(_0x155f0e){if(_0x155f0e){var _0x31999b=typeof _0x3775c4[_0x71fd('0x1b')]==='undefined'&&typeof _0x3775c4['limit']===_0x71fd('0x1c');var _0x5b1f61=_0x155f0e[_0x71fd('0x1d')];var _0x178a82=_0x31999b?0x0:_0x3775c4[_0x71fd('0x1b')];var _0x16f70a=_0x31999b?_0x155f0e[_0x71fd('0x1d')]:_0x3775c4[_0x71fd('0x1b')]+_0x3775c4['limit'];var _0xc52b79;if(_0x16f70a>=_0x5b1f61){_0x16f70a=_0x5b1f61;_0xc52b79=0xc8;}else{_0xc52b79=0xce;}_0x275212[_0x71fd('0x18')](_0xc52b79);return _0x275212['set']('Content-Range',_0x178a82+'-'+_0x16f70a+'/'+_0x5b1f61)[_0x71fd('0x1a')](_0x155f0e);}return null;};}function patchUpdates(_0x43819e){return function(_0x28260e){try{jsonpatch[_0x71fd('0x1e')](_0x28260e,_0x43819e,!![]);}catch(_0x54f1e2){return BPromise[_0x71fd('0x1f')](_0x54f1e2);}return _0x28260e[_0x71fd('0x20')]();};}function saveUpdates(_0xee1d1c,_0x1566ad){return function(_0x4008ff){if(_0x4008ff){return _0x4008ff['update'](_0xee1d1c)[_0x71fd('0x21')](function(_0xec59e0){return _0xec59e0;});}return null;};}function removeEntity(_0x5a7f89,_0x2d4c71){return function(_0x3ea27b){if(_0x3ea27b){return _0x3ea27b[_0x71fd('0x22')]()[_0x71fd('0x21')](function(){_0x5a7f89['status'](0xcc)[_0x71fd('0x19')]();});}};}function handleEntityNotFound(_0x293102,_0x518048){return function(_0x413240){if(!_0x413240){_0x293102[_0x71fd('0x17')](0x194);}return _0x413240;};}function handleError(_0x413969,_0x1079c0){_0x1079c0=_0x1079c0||0x1f4;return function(_0x2888dd){logger[_0x71fd('0x23')](_0x2888dd[_0x71fd('0x24')]);if(_0x2888dd['name']){delete _0x2888dd['name'];}_0x413969[_0x71fd('0x18')](_0x1079c0)[_0x71fd('0x25')](_0x2888dd);};}exports[_0x71fd('0x26')]=function(_0x5b3847,_0x464586){var _0x42b6b4={},_0x51e72b={},_0x21a8e5={'count':0x0,'rows':[]};var _0x313ca1=_[_0x71fd('0x27')](db['AnalyticTreeReport']['rawAttributes'],function(_0x4510d1){return{'name':_0x4510d1[_0x71fd('0x28')],'type':_0x4510d1[_0x71fd('0x29')][_0x71fd('0x2a')]};});_0x51e72b[_0x71fd('0x2b')]=_['map'](_0x313ca1,_0x71fd('0x2c'));_0x51e72b[_0x71fd('0x2d')]=_[_0x71fd('0x2e')](_0x5b3847[_0x71fd('0x2d')]);_0x51e72b['filters']=_[_0x71fd('0x2f')](_0x51e72b[_0x71fd('0x2b')],_0x51e72b[_0x71fd('0x2d')]);_0x42b6b4[_0x71fd('0x30')]=_[_0x71fd('0x2f')](_0x51e72b[_0x71fd('0x2b')],qs[_0x71fd('0x31')](_0x5b3847[_0x71fd('0x2d')][_0x71fd('0x31')]));_0x42b6b4['attributes']=_0x42b6b4[_0x71fd('0x30')][_0x71fd('0x32')]?_0x42b6b4[_0x71fd('0x30')]:_0x51e72b[_0x71fd('0x2b')];if(!_0x5b3847[_0x71fd('0x2d')][_0x71fd('0x33')](_0x71fd('0x34'))){_0x42b6b4['limit']=qs[_0x71fd('0x35')](_0x5b3847['query'][_0x71fd('0x35')]);_0x42b6b4[_0x71fd('0x1b')]=qs[_0x71fd('0x1b')](_0x5b3847['query'][_0x71fd('0x1b')]);}_0x42b6b4[_0x71fd('0x36')]=qs['sort'](_0x5b3847[_0x71fd('0x2d')][_0x71fd('0x37')]);_0x42b6b4[_0x71fd('0x38')]=qs[_0x71fd('0x39')](_[_0x71fd('0x3a')](_0x5b3847[_0x71fd('0x2d')],_0x51e72b['filters']),_0x313ca1);if(_0x5b3847['query']['filter']){_0x42b6b4[_0x71fd('0x38')]=_[_0x71fd('0x3b')](_0x42b6b4['where'],{'$or':_['map'](_0x313ca1,function(_0x43a3c6){if(_0x43a3c6[_0x71fd('0x29')]!==_0x71fd('0x3c')){var _0x1312d3={};_0x1312d3[_0x43a3c6[_0x71fd('0x2c')]]={'$like':'%'+_0x5b3847[_0x71fd('0x2d')][_0x71fd('0x3d')]+'%'};return _0x1312d3;}})});}_0x42b6b4=_['merge']({},_0x42b6b4,_0x5b3847[_0x71fd('0x3e')]);var _0x5b8a84={'where':_0x42b6b4[_0x71fd('0x38')]};return db[_0x71fd('0x3f')][_0x71fd('0x1d')](_0x5b8a84)[_0x71fd('0x21')](function(_0x743355){_0x21a8e5[_0x71fd('0x1d')]=_0x743355;if(_0x5b3847[_0x71fd('0x2d')][_0x71fd('0x40')]){_0x42b6b4[_0x71fd('0x41')]=[{'all':!![]}];}return db[_0x71fd('0x3f')][_0x71fd('0x42')](_0x42b6b4);})[_0x71fd('0x21')](function(_0x2e5679){_0x21a8e5[_0x71fd('0x43')]=_0x2e5679;return _0x21a8e5;})['then'](respondWithFilteredResult(_0x464586,_0x42b6b4))[_0x71fd('0x44')](handleError(_0x464586,null));};exports[_0x71fd('0x45')]=function(_0x168a7a,_0x42ce8c){var _0x2d2021={'raw':!![],'where':{'id':_0x168a7a['params']['id']}},_0x1d5f5a={};_0x1d5f5a['model']=_[_0x71fd('0x2e')](db[_0x71fd('0x3f')][_0x71fd('0x46')]);_0x1d5f5a[_0x71fd('0x2d')]=_[_0x71fd('0x2e')](_0x168a7a[_0x71fd('0x2d')]);_0x1d5f5a['filters']=_[_0x71fd('0x2f')](_0x1d5f5a[_0x71fd('0x2b')],_0x1d5f5a[_0x71fd('0x2d')]);_0x2d2021['attributes']=_[_0x71fd('0x2f')](_0x1d5f5a[_0x71fd('0x2b')],qs[_0x71fd('0x31')](_0x168a7a[_0x71fd('0x2d')][_0x71fd('0x31')]));_0x2d2021['attributes']=_0x2d2021['attributes'][_0x71fd('0x32')]?_0x2d2021['attributes']:_0x1d5f5a[_0x71fd('0x2b')];if(_0x168a7a[_0x71fd('0x2d')][_0x71fd('0x40')]){_0x2d2021['include']=[{'all':!![]}];}_0x2d2021=_[_0x71fd('0x3b')]({},_0x2d2021,_0x168a7a['options']);return db[_0x71fd('0x3f')]['find'](_0x2d2021)[_0x71fd('0x21')](handleEntityNotFound(_0x42ce8c,null))['then'](respondWithResult(_0x42ce8c,null))[_0x71fd('0x44')](handleError(_0x42ce8c,null));};exports['create']=function(_0x5542eb,_0x3623cc){return db[_0x71fd('0x3f')][_0x71fd('0x47')](_0x5542eb[_0x71fd('0x48')],{})[_0x71fd('0x21')](respondWithResult(_0x3623cc,0xc9))[_0x71fd('0x44')](handleError(_0x3623cc,null));};exports[_0x71fd('0x49')]=function(_0x57b9c7,_0x2b8f7d){if(_0x57b9c7['body']['id']){delete _0x57b9c7['body']['id'];}return db['AnalyticTreeReport'][_0x71fd('0x4a')]({'where':{'id':_0x57b9c7[_0x71fd('0x4b')]['id']}})[_0x71fd('0x21')](handleEntityNotFound(_0x2b8f7d,null))[_0x71fd('0x21')](saveUpdates(_0x57b9c7[_0x71fd('0x48')],null))[_0x71fd('0x21')](respondWithResult(_0x2b8f7d,null))['catch'](handleError(_0x2b8f7d,null));};exports['destroy']=function(_0x2f348b,_0x5bf56a){return db[_0x71fd('0x3f')][_0x71fd('0x4a')]({'where':{'id':_0x2f348b[_0x71fd('0x4b')]['id']}})[_0x71fd('0x21')](handleEntityNotFound(_0x5bf56a,null))[_0x71fd('0x21')](removeEntity(_0x5bf56a,null))[_0x71fd('0x44')](handleError(_0x5bf56a,null));};
\ No newline at end of file
+var _0xc6e3=['keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','includeAll','include','rows','catch','show','params','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','then','destroy','name','send','map','AnalyticTreeReport','fieldName','key','model','query'];(function(_0xad42ce,_0x3dee68){var _0x2b2fca=function(_0x5aa31a){while(--_0x5aa31a){_0xad42ce['push'](_0xad42ce['shift']());}};_0x2b2fca(++_0x3dee68);}(_0xc6e3,0x11b));var _0x3c6e=function(_0x1e68f7,_0x298d6d){_0x1e68f7=_0x1e68f7-0x0;var _0x2b14e6=_0xc6e3[_0x1e68f7];return _0x2b14e6;};'use strict';var emlformat=require(_0x3c6e('0x0'));var rimraf=require(_0x3c6e('0x1'));var zipdir=require(_0x3c6e('0x2'));var jsonpatch=require(_0x3c6e('0x3'));var rp=require(_0x3c6e('0x4'));var moment=require(_0x3c6e('0x5'));var BPromise=require(_0x3c6e('0x6'));var Mustache=require(_0x3c6e('0x7'));var util=require(_0x3c6e('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x3c6e('0x9'));var ejs=require(_0x3c6e('0xa'));var fs=require('fs');var fs_extra=require(_0x3c6e('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3c6e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x3c6e('0x9'));var querystring=require('querystring');var Papa=require(_0x3c6e('0xd'));var Redis=require(_0x3c6e('0xe'));var authService=require(_0x3c6e('0xf'));var qs=require(_0x3c6e('0x10'));var as=require(_0x3c6e('0x11'));var hardwareService=require(_0x3c6e('0x12'));var logger=require(_0x3c6e('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x3c6e('0x14'));var licenseUtil=require(_0x3c6e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x354a20,_0x2aef5d){_0x2aef5d=_0x2aef5d||0xcc;return function(_0x34b1e2){if(_0x34b1e2){return _0x354a20[_0x3c6e('0x16')](_0x2aef5d);}return _0x354a20['status'](_0x2aef5d)['end']();};}function respondWithResult(_0x14f8c1,_0x36ecc3){_0x36ecc3=_0x36ecc3||0xc8;return function(_0x46f7f8){if(_0x46f7f8){return _0x14f8c1[_0x3c6e('0x17')](_0x36ecc3)[_0x3c6e('0x18')](_0x46f7f8);}};}function respondWithFilteredResult(_0x585b2b,_0x77eaa8){return function(_0x2c7761){if(_0x2c7761){var _0x55e29b=typeof _0x77eaa8[_0x3c6e('0x19')]===_0x3c6e('0x1a')&&typeof _0x77eaa8[_0x3c6e('0x1b')]===_0x3c6e('0x1a');var _0x4edb7b=_0x2c7761[_0x3c6e('0x1c')];var _0xb7f503=_0x55e29b?0x0:_0x77eaa8[_0x3c6e('0x19')];var _0xf816e6=_0x55e29b?_0x2c7761[_0x3c6e('0x1c')]:_0x77eaa8['offset']+_0x77eaa8['limit'];var _0x48d914;if(_0xf816e6>=_0x4edb7b){_0xf816e6=_0x4edb7b;_0x48d914=0xc8;}else{_0x48d914=0xce;}_0x585b2b[_0x3c6e('0x17')](_0x48d914);return _0x585b2b[_0x3c6e('0x1d')]('Content-Range',_0xb7f503+'-'+_0xf816e6+'/'+_0x4edb7b)['json'](_0x2c7761);}return null;};}function patchUpdates(_0x22bef9){return function(_0x1b98e4){try{jsonpatch[_0x3c6e('0x1e')](_0x1b98e4,_0x22bef9,!![]);}catch(_0x5b5597){return BPromise['reject'](_0x5b5597);}return _0x1b98e4[_0x3c6e('0x1f')]();};}function saveUpdates(_0x57bacd,_0x2756cf){return function(_0xf5e998){if(_0xf5e998){return _0xf5e998['update'](_0x57bacd)[_0x3c6e('0x20')](function(_0x4f87c8){return _0x4f87c8;});}return null;};}function removeEntity(_0x5edca3,_0x3dc527){return function(_0x1724d2){if(_0x1724d2){return _0x1724d2[_0x3c6e('0x21')]()[_0x3c6e('0x20')](function(){_0x5edca3[_0x3c6e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa94c92,_0x3909ed){return function(_0x5cc0bd){if(!_0x5cc0bd){_0xa94c92['sendStatus'](0x194);}return _0x5cc0bd;};}function handleError(_0x375186,_0x333f9a){_0x333f9a=_0x333f9a||0x1f4;return function(_0x364366){logger['error'](_0x364366['stack']);if(_0x364366[_0x3c6e('0x22')]){delete _0x364366['name'];}_0x375186[_0x3c6e('0x17')](_0x333f9a)[_0x3c6e('0x23')](_0x364366);};}exports['index']=function(_0x27c3e3,_0xaa8c51){var _0x178e81={},_0x5872c7={},_0x30caa9={'count':0x0,'rows':[]};var _0x2f31ba=_[_0x3c6e('0x24')](db[_0x3c6e('0x25')]['rawAttributes'],function(_0x3e426a){return{'name':_0x3e426a[_0x3c6e('0x26')],'type':_0x3e426a['type'][_0x3c6e('0x27')]};});_0x5872c7[_0x3c6e('0x28')]=_[_0x3c6e('0x24')](_0x2f31ba,_0x3c6e('0x22'));_0x5872c7[_0x3c6e('0x29')]=_[_0x3c6e('0x2a')](_0x27c3e3[_0x3c6e('0x29')]);_0x5872c7[_0x3c6e('0x2b')]=_[_0x3c6e('0x2c')](_0x5872c7['model'],_0x5872c7['query']);_0x178e81[_0x3c6e('0x2d')]=_['intersection'](_0x5872c7[_0x3c6e('0x28')],qs[_0x3c6e('0x2e')](_0x27c3e3[_0x3c6e('0x29')]['fields']));_0x178e81[_0x3c6e('0x2d')]=_0x178e81[_0x3c6e('0x2d')]['length']?_0x178e81[_0x3c6e('0x2d')]:_0x5872c7['model'];if(!_0x27c3e3[_0x3c6e('0x29')][_0x3c6e('0x2f')](_0x3c6e('0x30'))){_0x178e81[_0x3c6e('0x1b')]=qs[_0x3c6e('0x1b')](_0x27c3e3[_0x3c6e('0x29')][_0x3c6e('0x1b')]);_0x178e81['offset']=qs[_0x3c6e('0x19')](_0x27c3e3['query'][_0x3c6e('0x19')]);}_0x178e81['order']=qs[_0x3c6e('0x31')](_0x27c3e3['query'][_0x3c6e('0x31')]);_0x178e81[_0x3c6e('0x32')]=qs[_0x3c6e('0x2b')](_['pick'](_0x27c3e3[_0x3c6e('0x29')],_0x5872c7[_0x3c6e('0x2b')]),_0x2f31ba);if(_0x27c3e3[_0x3c6e('0x29')][_0x3c6e('0x33')]){_0x178e81[_0x3c6e('0x32')]=_[_0x3c6e('0x34')](_0x178e81['where'],{'$or':_[_0x3c6e('0x24')](_0x2f31ba,function(_0x301974){if(_0x301974[_0x3c6e('0x35')]!==_0x3c6e('0x36')){var _0x303841={};_0x303841[_0x301974[_0x3c6e('0x22')]]={'$like':'%'+_0x27c3e3[_0x3c6e('0x29')][_0x3c6e('0x33')]+'%'};return _0x303841;}})});}_0x178e81=_[_0x3c6e('0x34')]({},_0x178e81,_0x27c3e3['options']);var _0x787392={'where':_0x178e81[_0x3c6e('0x32')]};return db[_0x3c6e('0x25')][_0x3c6e('0x1c')](_0x787392)['then'](function(_0x5dbb2a){_0x30caa9[_0x3c6e('0x1c')]=_0x5dbb2a;if(_0x27c3e3[_0x3c6e('0x29')][_0x3c6e('0x37')]){_0x178e81[_0x3c6e('0x38')]=[{'all':!![]}];}return db[_0x3c6e('0x25')]['findAll'](_0x178e81);})[_0x3c6e('0x20')](function(_0x37cf1b){_0x30caa9[_0x3c6e('0x39')]=_0x37cf1b;return _0x30caa9;})[_0x3c6e('0x20')](respondWithFilteredResult(_0xaa8c51,_0x178e81))[_0x3c6e('0x3a')](handleError(_0xaa8c51,null));};exports[_0x3c6e('0x3b')]=function(_0x253d02,_0x416d43){var _0x353442={'raw':!![],'where':{'id':_0x253d02[_0x3c6e('0x3c')]['id']}},_0x5f67ad={};_0x5f67ad['model']=_[_0x3c6e('0x2a')](db[_0x3c6e('0x25')]['rawAttributes']);_0x5f67ad[_0x3c6e('0x29')]=_[_0x3c6e('0x2a')](_0x253d02[_0x3c6e('0x29')]);_0x5f67ad[_0x3c6e('0x2b')]=_['intersection'](_0x5f67ad[_0x3c6e('0x28')],_0x5f67ad[_0x3c6e('0x29')]);_0x353442[_0x3c6e('0x2d')]=_[_0x3c6e('0x2c')](_0x5f67ad[_0x3c6e('0x28')],qs['fields'](_0x253d02[_0x3c6e('0x29')][_0x3c6e('0x2e')]));_0x353442[_0x3c6e('0x2d')]=_0x353442[_0x3c6e('0x2d')]['length']?_0x353442[_0x3c6e('0x2d')]:_0x5f67ad['model'];if(_0x253d02['query'][_0x3c6e('0x37')]){_0x353442[_0x3c6e('0x38')]=[{'all':!![]}];}_0x353442=_[_0x3c6e('0x34')]({},_0x353442,_0x253d02[_0x3c6e('0x3d')]);return db['AnalyticTreeReport'][_0x3c6e('0x3e')](_0x353442)[_0x3c6e('0x20')](handleEntityNotFound(_0x416d43,null))['then'](respondWithResult(_0x416d43,null))[_0x3c6e('0x3a')](handleError(_0x416d43,null));};exports[_0x3c6e('0x3f')]=function(_0x1e5a85,_0xaebe1e){return db[_0x3c6e('0x25')]['create'](_0x1e5a85[_0x3c6e('0x40')],{})['then'](respondWithResult(_0xaebe1e,0xc9))[_0x3c6e('0x3a')](handleError(_0xaebe1e,null));};exports['update']=function(_0x42dfa3,_0x389f9d){if(_0x42dfa3['body']['id']){delete _0x42dfa3[_0x3c6e('0x40')]['id'];}return db[_0x3c6e('0x25')][_0x3c6e('0x3e')]({'where':{'id':_0x42dfa3[_0x3c6e('0x3c')]['id']}})['then'](handleEntityNotFound(_0x389f9d,null))[_0x3c6e('0x20')](saveUpdates(_0x42dfa3[_0x3c6e('0x40')],null))[_0x3c6e('0x20')](respondWithResult(_0x389f9d,null))[_0x3c6e('0x3a')](handleError(_0x389f9d,null));};exports[_0x3c6e('0x21')]=function(_0x6e35a6,_0x484d30){return db[_0x3c6e('0x25')][_0x3c6e('0x3e')]({'where':{'id':_0x6e35a6[_0x3c6e('0x3c')]['id']}})[_0x3c6e('0x20')](handleEntityNotFound(_0x484d30,null))[_0x3c6e('0x20')](removeEntity(_0x484d30,null))['catch'](handleError(_0x484d30,null));};
\ No newline at end of file
index b62f921..a320923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ee=['./analyticTreeReport.attributes','exports','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x99ee,0x190));var _0xe99e=function(_0x5a2285,_0x3212d1){_0x5a2285=_0x5a2285-0x0;var _0x48f6ed=_0x99ee[_0x5a2285];return _0x48f6ed;};'use strict';var _=require(_0xe99e('0x0'));var util=require(_0xe99e('0x1'));var logger=require(_0xe99e('0x2'))(_0xe99e('0x3'));var moment=require(_0xe99e('0x4'));var BPromise=require('bluebird');var rp=require(_0xe99e('0x5'));var fs=require('fs');var path=require(_0xe99e('0x6'));var rimraf=require('rimraf');var config=require(_0xe99e('0x7'));var attributes=require(_0xe99e('0x8'));module[_0xe99e('0x9')]=function(_0xdbd97f,_0x5331d0){return _0xdbd97f['define'](_0xe99e('0xa'),attributes,{'tableName':_0xe99e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2aca=['request-promise','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','AnalyticTreeReport','analytics_report_trees','util','api','bluebird'];(function(_0x3712d2,_0x259c5a){var _0x18d859=function(_0x5242cf){while(--_0x5242cf){_0x3712d2['push'](_0x3712d2['shift']());}};_0x18d859(++_0x259c5a);}(_0x2aca,0xb1));var _0xa2ac=function(_0x9350b6,_0x2355d5){_0x9350b6=_0x9350b6-0x0;var _0x4e797e=_0x2aca[_0x9350b6];return _0x4e797e;};'use strict';var _=require('lodash');var util=require(_0xa2ac('0x0'));var logger=require('../../config/logger')(_0xa2ac('0x1'));var moment=require('moment');var BPromise=require(_0xa2ac('0x2'));var rp=require(_0xa2ac('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa2ac('0x4'));var config=require(_0xa2ac('0x5'));var attributes=require(_0xa2ac('0x6'));module[_0xa2ac('0x7')]=function(_0x5e943b,_0x5b512d){return _0x5e943b['define'](_0xa2ac('0x8'),attributes,{'tableName':_0xa2ac('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3bc5176..2682bd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x35d67d,_0x1aae88){var _0x4b335e=function(_0xfeba15){while(--_0xfeba15){_0x35d67d['push'](_0x35d67d['shift']());}};_0x4b335e(++_0x1aae88);}(_0xdb28,0x106));var _0x8db2=function(_0x4e54e5,_0x5e15a2){_0x4e54e5=_0x4e54e5-0x0;var _0x2346ae=_0xdb28[_0x4e54e5];return _0x2346ae;};'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')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x2e409e,_0x2d227e){var _0xe6e039=function(_0x47195d){while(--_0x47195d){_0x2e409e['push'](_0x2e409e['shift']());}};_0xe6e039(++_0x2d227e);}(_0xadb5,0xad));var _0x5adb=function(_0x3aa490,_0x3a9a5e){_0x3aa490=_0x3aa490-0x0;var _0xed54e6=_0xadb5[_0x3aa490];return _0xed54e6;};'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']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index dee3240..80939f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eb1=['post','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x6eb1,0xb0));var _0x16eb=function(_0x4bb593,_0x272ed0){_0x4bb593=_0x4bb593-0x0;var _0x2da2d8=_0x6eb1[_0x4bb593];return _0x2da2d8;};'use strict';var multer=require(_0x16eb('0x0'));var util=require(_0x16eb('0x1'));var path=require(_0x16eb('0x2'));var timeout=require(_0x16eb('0x3'));var express=require(_0x16eb('0x4'));var router=express[_0x16eb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x16eb('0x6'));var interaction=require(_0x16eb('0x7'));var config=require(_0x16eb('0x8'));var controller=require('./analyticTreeReport.controller');router[_0x16eb('0x9')]('/',auth['isAuthenticated'](),controller[_0x16eb('0xa')]);router['get'](_0x16eb('0xb'),auth[_0x16eb('0xc')](),controller[_0x16eb('0xd')]);router[_0x16eb('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x16eb('0xf')](_0x16eb('0xb'),auth[_0x16eb('0xc')](),controller[_0x16eb('0x10')]);router[_0x16eb('0x11')](_0x16eb('0xb'),auth[_0x16eb('0xc')](),controller['destroy']);module[_0x16eb('0x12')]=router;
\ No newline at end of file
+var _0x406f=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','multer','util'];(function(_0x236c89,_0xd76ba9){var _0x3b2a15=function(_0x89e4f9){while(--_0x89e4f9){_0x236c89['push'](_0x236c89['shift']());}};_0x3b2a15(++_0xd76ba9);}(_0x406f,0x1d9));var _0xf406=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x406f[_0x178e48];return _0x440d7e;};'use strict';var multer=require(_0xf406('0x0'));var util=require(_0xf406('0x1'));var path=require(_0xf406('0x2'));var timeout=require(_0xf406('0x3'));var express=require('express');var router=express[_0xf406('0x4')]();var fs_extra=require(_0xf406('0x5'));var auth=require(_0xf406('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf406('0x7'));var controller=require(_0xf406('0x8'));router[_0xf406('0x9')]('/',auth[_0xf406('0xa')](),controller[_0xf406('0xb')]);router[_0xf406('0x9')](_0xf406('0xc'),auth[_0xf406('0xa')](),controller['show']);router[_0xf406('0xd')]('/',auth['isAuthenticated'](),controller[_0xf406('0xe')]);router[_0xf406('0xf')](_0xf406('0xc'),auth[_0xf406('0xa')](),controller[_0xf406('0x10')]);router[_0xf406('0x11')](_0xf406('0xc'),auth[_0xf406('0xa')](),controller[_0xf406('0x12')]);module['exports']=router;
\ No newline at end of file
index 5792dd3..b427161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf874=['STRING','sequelize'];(function(_0x3ad385,_0x134ef1){var _0x3dfeb9=function(_0x22bd1f){while(--_0x22bd1f){_0x3ad385['push'](_0x3ad385['shift']());}};_0x3dfeb9(++_0x134ef1);}(_0xf874,0x177));var _0x4f87=function(_0x1b0d03,_0x2a9fc7){_0x1b0d03=_0x1b0d03-0x0;var _0x52b60d=_0xf874[_0x1b0d03];return _0x52b60d;};'use strict';var Sequelize=require(_0x4f87('0x0'));module['exports']={'name':{'type':Sequelize[_0x4f87('0x1')]},'basename':{'type':Sequelize[_0x4f87('0x1')]},'type':{'type':Sequelize[_0x4f87('0x1')]}};
\ No newline at end of file
+var _0xcee8=['sequelize','exports','STRING'];(function(_0x38d729,_0x4f5ad0){var _0x2005ea=function(_0x1ff687){while(--_0x1ff687){_0x38d729['push'](_0x38d729['shift']());}};_0x2005ea(++_0x4f5ad0);}(_0xcee8,0xb1));var _0x8cee=function(_0xb8f89e,_0x5df65){_0xb8f89e=_0xb8f89e-0x0;var _0x955eac=_0xcee8[_0xb8f89e];return _0x955eac;};'use strict';var Sequelize=require(_0x8cee('0x0'));module[_0x8cee('0x1')]={'name':{'type':Sequelize[_0x8cee('0x2')]},'basename':{'type':Sequelize[_0x8cee('0x2')]},'type':{'type':Sequelize[_0x8cee('0x2')]}};
\ No newline at end of file
index dc01bdb..57b13c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa71c=['find','include','get','omit','updatedAt','body','createdAt','create','file','originalname','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','Attachment','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','findAll','rows','catch','params','keys','includeAll'];(function(_0x9c0290,_0x1e6938){var _0x480f28=function(_0xa46960){while(--_0xa46960){_0x9c0290['push'](_0x9c0290['shift']());}};_0x480f28(++_0x1e6938);}(_0xa71c,0x1c7));var _0xca71=function(_0x242c07,_0x4788f5){_0x242c07=_0x242c07-0x0;var _0x3bf7d5=_0xa71c[_0x242c07];return _0x3bf7d5;};'use strict';var emlformat=require(_0xca71('0x0'));var rimraf=require(_0xca71('0x1'));var zipdir=require(_0xca71('0x2'));var jsonpatch=require(_0xca71('0x3'));var rp=require(_0xca71('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xca71('0x5'));var util=require('util');var path=require(_0xca71('0x6'));var sox=require(_0xca71('0x7'));var csv=require(_0xca71('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xca71('0x9'));var squel=require(_0xca71('0xa'));var crypto=require(_0xca71('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xca71('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xca71('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xca71('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xca71('0xf'));var logger=require(_0xca71('0x10'))('api');var utils=require('../../config/utils');var config=require(_0xca71('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xca71('0x12'))['db'];function respondWithStatusCode(_0x3eef53,_0x1b3ab6){_0x1b3ab6=_0x1b3ab6||0xcc;return function(_0x2b8ee3){if(_0x2b8ee3){return _0x3eef53[_0xca71('0x13')](_0x1b3ab6);}return _0x3eef53[_0xca71('0x14')](_0x1b3ab6)[_0xca71('0x15')]();};}function respondWithResult(_0x10c333,_0x381322){_0x381322=_0x381322||0xc8;return function(_0x110d5c){if(_0x110d5c){return _0x10c333[_0xca71('0x14')](_0x381322)['json'](_0x110d5c);}};}function respondWithFilteredResult(_0x39cb6b,_0x18f2f6){return function(_0x11fc82){if(_0x11fc82){var _0x1aedc6=typeof _0x18f2f6[_0xca71('0x16')]===_0xca71('0x17')&&typeof _0x18f2f6[_0xca71('0x18')]===_0xca71('0x17');var _0xe34f7b=_0x11fc82['count'];var _0x191eb4=_0x1aedc6?0x0:_0x18f2f6[_0xca71('0x16')];var _0x3c8f5a=_0x1aedc6?_0x11fc82[_0xca71('0x19')]:_0x18f2f6[_0xca71('0x16')]+_0x18f2f6['limit'];var _0x51ac64;if(_0x3c8f5a>=_0xe34f7b){_0x3c8f5a=_0xe34f7b;_0x51ac64=0xc8;}else{_0x51ac64=0xce;}_0x39cb6b[_0xca71('0x14')](_0x51ac64);return _0x39cb6b[_0xca71('0x1a')](_0xca71('0x1b'),_0x191eb4+'-'+_0x3c8f5a+'/'+_0xe34f7b)[_0xca71('0x1c')](_0x11fc82);}return null;};}function patchUpdates(_0x19a529){return function(_0x198e1a){try{jsonpatch[_0xca71('0x1d')](_0x198e1a,_0x19a529,!![]);}catch(_0x420683){return BPromise[_0xca71('0x1e')](_0x420683);}return _0x198e1a[_0xca71('0x1f')]();};}function saveUpdates(_0x1ef9a6,_0x283743){return function(_0x27ed79){if(_0x27ed79){return _0x27ed79[_0xca71('0x20')](_0x1ef9a6)[_0xca71('0x21')](function(_0x17b403){return _0x17b403;});}return null;};}function removeEntity(_0x1ae5d2,_0x4e0522){return function(_0x196cf1){if(_0x196cf1){return _0x196cf1[_0xca71('0x22')]()['then'](function(){_0x1ae5d2[_0xca71('0x14')](0xcc)[_0xca71('0x15')]();});}};}function handleEntityNotFound(_0x4e3719,_0x38d856){return function(_0x54b7a4){if(!_0x54b7a4){_0x4e3719[_0xca71('0x13')](0x194);}return _0x54b7a4;};}function handleError(_0x2c9f80,_0x14a162){_0x14a162=_0x14a162||0x1f4;return function(_0x426179){logger[_0xca71('0x23')](_0x426179[_0xca71('0x24')]);if(_0x426179[_0xca71('0x25')]){delete _0x426179[_0xca71('0x25')];}_0x2c9f80['status'](_0x14a162)['send'](_0x426179);};}exports[_0xca71('0x26')]=function(_0x21902c,_0x53b740){var _0x46c5b8={},_0x42190c={},_0x3c2368={'count':0x0,'rows':[]};var _0x52e235=_[_0xca71('0x27')](db[_0xca71('0x28')][_0xca71('0x29')],function(_0x1727a2){return{'name':_0x1727a2[_0xca71('0x2a')],'type':_0x1727a2[_0xca71('0x2b')][_0xca71('0x2c')]};});_0x42190c[_0xca71('0x2d')]=_[_0xca71('0x27')](_0x52e235,_0xca71('0x25'));_0x42190c[_0xca71('0x2e')]=_['keys'](_0x21902c[_0xca71('0x2e')]);_0x42190c[_0xca71('0x2f')]=_['intersection'](_0x42190c['model'],_0x42190c[_0xca71('0x2e')]);_0x46c5b8[_0xca71('0x30')]=_[_0xca71('0x31')](_0x42190c['model'],qs[_0xca71('0x32')](_0x21902c[_0xca71('0x2e')][_0xca71('0x32')]));_0x46c5b8[_0xca71('0x30')]=_0x46c5b8[_0xca71('0x30')][_0xca71('0x33')]?_0x46c5b8[_0xca71('0x30')]:_0x42190c['model'];if(!_0x21902c[_0xca71('0x2e')][_0xca71('0x34')](_0xca71('0x35'))){_0x46c5b8[_0xca71('0x18')]=qs[_0xca71('0x18')](_0x21902c['query'][_0xca71('0x18')]);_0x46c5b8[_0xca71('0x16')]=qs[_0xca71('0x16')](_0x21902c[_0xca71('0x2e')][_0xca71('0x16')]);}_0x46c5b8[_0xca71('0x36')]=qs[_0xca71('0x37')](_0x21902c['query'][_0xca71('0x37')]);_0x46c5b8[_0xca71('0x38')]=qs['filters'](_['pick'](_0x21902c[_0xca71('0x2e')],_0x42190c[_0xca71('0x2f')]),_0x52e235);if(_0x21902c[_0xca71('0x2e')][_0xca71('0x39')]){_0x46c5b8['where']=_['merge'](_0x46c5b8[_0xca71('0x38')],{'$or':_['map'](_0x52e235,function(_0x1d555e){if(_0x1d555e[_0xca71('0x2b')]!==_0xca71('0x3a')){var _0x3182eb={};_0x3182eb[_0x1d555e[_0xca71('0x25')]]={'$like':'%'+_0x21902c[_0xca71('0x2e')][_0xca71('0x39')]+'%'};return _0x3182eb;}})});}_0x46c5b8=_[_0xca71('0x3b')]({},_0x46c5b8,_0x21902c[_0xca71('0x3c')]);var _0x196e4d={'where':_0x46c5b8[_0xca71('0x38')]};return db[_0xca71('0x28')][_0xca71('0x19')](_0x196e4d)[_0xca71('0x21')](function(_0x4072c9){_0x3c2368['count']=_0x4072c9;if(_0x21902c[_0xca71('0x2e')]['includeAll']){_0x46c5b8['include']=[{'all':!![]}];}return db['Attachment'][_0xca71('0x3d')](_0x46c5b8);})['then'](function(_0x6343a1){_0x3c2368[_0xca71('0x3e')]=_0x6343a1;return _0x3c2368;})[_0xca71('0x21')](respondWithFilteredResult(_0x53b740,_0x46c5b8))[_0xca71('0x3f')](handleError(_0x53b740,null));};exports['show']=function(_0x482bab,_0x29ca5f){var _0x5c14c8={'raw':!![],'where':{'id':_0x482bab[_0xca71('0x40')]['id']}},_0x1f1734={};_0x1f1734['model']=_['keys'](db['Attachment']['rawAttributes']);_0x1f1734[_0xca71('0x2e')]=_[_0xca71('0x41')](_0x482bab['query']);_0x1f1734['filters']=_[_0xca71('0x31')](_0x1f1734[_0xca71('0x2d')],_0x1f1734[_0xca71('0x2e')]);_0x5c14c8[_0xca71('0x30')]=_[_0xca71('0x31')](_0x1f1734[_0xca71('0x2d')],qs[_0xca71('0x32')](_0x482bab[_0xca71('0x2e')][_0xca71('0x32')]));_0x5c14c8['attributes']=_0x5c14c8[_0xca71('0x30')][_0xca71('0x33')]?_0x5c14c8[_0xca71('0x30')]:_0x1f1734[_0xca71('0x2d')];if(_0x482bab['query'][_0xca71('0x42')]){_0x5c14c8['include']=[{'all':!![]}];}_0x5c14c8=_[_0xca71('0x3b')]({},_0x5c14c8,_0x482bab[_0xca71('0x3c')]);return db[_0xca71('0x28')][_0xca71('0x43')](_0x5c14c8)[_0xca71('0x21')](handleEntityNotFound(_0x29ca5f,null))[_0xca71('0x21')](respondWithResult(_0x29ca5f,null))[_0xca71('0x3f')](handleError(_0x29ca5f,null));};exports['clone']=function(_0x53deec,_0x370c21){var _0x4ed8bf={'where':{'id':_0x53deec[_0xca71('0x40')]['id']}},_0x2b1093={};_0x2b1093[_0xca71('0x2d')]=_[_0xca71('0x41')](db['Attachment'][_0xca71('0x29')]);_0x4ed8bf['attributes']=_[_0xca71('0x31')](_0x2b1093[_0xca71('0x2d')],qs[_0xca71('0x32')](_0x53deec['query'][_0xca71('0x32')]));_0x4ed8bf[_0xca71('0x30')]=_0x4ed8bf[_0xca71('0x30')][_0xca71('0x33')]?_0x4ed8bf[_0xca71('0x30')]:_0x2b1093[_0xca71('0x2d')];if(_0x53deec[_0xca71('0x2e')][_0xca71('0x42')]){_0x4ed8bf[_0xca71('0x44')]=[{'all':!![]}];}_0x4ed8bf=_[_0xca71('0x3b')]({},_0x4ed8bf,_0x53deec['options']);return db[_0xca71('0x28')]['find'](_0x4ed8bf)[_0xca71('0x21')](handleEntityNotFound(_0x370c21,null))[_0xca71('0x21')](function(_0x5aaaf7){if(_0x5aaaf7){var _0xc97115=_0x5aaaf7[_0xca71('0x45')]({'plain':!![]});_0xc97115=qs[_0xca71('0x46')](_0xc97115,['id','createdAt',_0xca71('0x47')]);_0x53deec['body']=_['omit'](_0x53deec[_0xca71('0x48')],['id',_0xca71('0x49'),_0xca71('0x47')]);return db['Attachment'][_0xca71('0x4a')](_[_0xca71('0x3b')](_0xc97115,_0x53deec[_0xca71('0x48')]),{'include':_0x53deec[_0xca71('0x2e')][_0xca71('0x42')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x370c21,0xc9))['catch'](handleError(_0x370c21,null));};exports[_0xca71('0x20')]=function(_0x4a3732,_0x245ec9){if(_0x4a3732[_0xca71('0x48')]['id']){delete _0x4a3732[_0xca71('0x48')]['id'];}return db[_0xca71('0x28')][_0xca71('0x43')]({'where':{'id':_0x4a3732['params']['id']}})[_0xca71('0x21')](handleEntityNotFound(_0x245ec9,null))[_0xca71('0x21')](saveUpdates(_0x4a3732['body'],null))[_0xca71('0x21')](respondWithResult(_0x245ec9,null))[_0xca71('0x3f')](handleError(_0x245ec9,null));};exports[_0xca71('0x22')]=function(_0x4b20c4,_0x27de68){return db[_0xca71('0x28')][_0xca71('0x43')]({'where':{'id':_0x4b20c4[_0xca71('0x40')]['id']}})[_0xca71('0x21')](handleEntityNotFound(_0x27de68,null))[_0xca71('0x21')](removeEntity(_0x27de68,null))['catch'](handleError(_0x27de68,null));};exports[_0xca71('0x4a')]=function(_0x4b6509,_0x33badb,_0x2853f1){_0x4b6509['body'][_0xca71('0x25')]=_0x4b6509[_0xca71('0x4b')][_0xca71('0x4c')];_0x4b6509[_0xca71('0x48')][_0xca71('0x4d')]=_0x4b6509['file'][_0xca71('0x4e')];_0x4b6509[_0xca71('0x48')][_0xca71('0x2b')]=_0x4b6509[_0xca71('0x4b')][_0xca71('0x4f')];return db[_0xca71('0x28')]['create'](_0x4b6509['body'])[_0xca71('0x21')](respondWithResult(_0x33badb,0xc9))['catch'](handleError(_0x33badb,null));};exports[_0xca71('0x50')]=function(_0x436157,_0x3dd344,_0x2a8ade){return db['Attachment'][_0xca71('0x51')]({'where':{'id':_0x436157[_0xca71('0x40')]['id']},'raw':!![]})[_0xca71('0x21')](handleEntityNotFound(_0x3dd344,null))['then'](function(_0x3f2615){if(_0x3f2615){var _0x5528ad=_0x3f2615[_0xca71('0x52')]!==null;var _0x4fd5c0=path[_0xca71('0x53')](config[_0xca71('0x54')],_0xca71('0x55'));if(_0x5528ad){_0x4fd5c0=path[_0xca71('0x53')](_0x4fd5c0,_0xca71('0x56'));}var _0x3e44f3=path[_0xca71('0x53')](_0x4fd5c0,_0x3f2615[_0xca71('0x4d')]);return _0x3dd344['download'](_0x3e44f3);}})['catch'](handleError(_0x3dd344,null));};
\ No newline at end of file
+var _0x1f26=['root','server/files/attachments/','offline-chat/','basename','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','Attachment','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','include','findAll','rows','catch','show','params','keys','includeAll','find','clone','get','omit','createdAt','updatedAt','body','create','destroy','file','originalname','filename','mimetype','findOne','ChatOfflineMessageId','join'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x1f26,0x1e5));var _0x61f2=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1f26[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x61f2('0x0'));var rimraf=require(_0x61f2('0x1'));var zipdir=require(_0x61f2('0x2'));var jsonpatch=require(_0x61f2('0x3'));var rp=require(_0x61f2('0x4'));var moment=require(_0x61f2('0x5'));var BPromise=require(_0x61f2('0x6'));var Mustache=require(_0x61f2('0x7'));var util=require(_0x61f2('0x8'));var path=require(_0x61f2('0x9'));var sox=require('sox');var csv=require(_0x61f2('0xa'));var ejs=require(_0x61f2('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x61f2('0xc'));var squel=require(_0x61f2('0xd'));var crypto=require('crypto');var jsforce=require(_0x61f2('0xe'));var deskjs=require(_0x61f2('0xf'));var toCsv=require(_0x61f2('0xa'));var querystring=require(_0x61f2('0x10'));var Papa=require(_0x61f2('0x11'));var Redis=require(_0x61f2('0x12'));var authService=require(_0x61f2('0x13'));var qs=require(_0x61f2('0x14'));var as=require(_0x61f2('0x15'));var hardwareService=require(_0x61f2('0x16'));var logger=require(_0x61f2('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x61f2('0x18'));var licenseUtil=require(_0x61f2('0x19'));var db=require(_0x61f2('0x1a'))['db'];function respondWithStatusCode(_0x3dfaa2,_0x55aae3){_0x55aae3=_0x55aae3||0xcc;return function(_0x3f168a){if(_0x3f168a){return _0x3dfaa2[_0x61f2('0x1b')](_0x55aae3);}return _0x3dfaa2[_0x61f2('0x1c')](_0x55aae3)[_0x61f2('0x1d')]();};}function respondWithResult(_0x2221c0,_0x252e44){_0x252e44=_0x252e44||0xc8;return function(_0x3c1a97){if(_0x3c1a97){return _0x2221c0[_0x61f2('0x1c')](_0x252e44)[_0x61f2('0x1e')](_0x3c1a97);}};}function respondWithFilteredResult(_0x4369c6,_0x2c300c){return function(_0x7dfc3){if(_0x7dfc3){var _0x1e9c93=typeof _0x2c300c[_0x61f2('0x1f')]===_0x61f2('0x20')&&typeof _0x2c300c[_0x61f2('0x21')]===_0x61f2('0x20');var _0x186ddb=_0x7dfc3[_0x61f2('0x22')];var _0x4514e6=_0x1e9c93?0x0:_0x2c300c[_0x61f2('0x1f')];var _0x5e49c1=_0x1e9c93?_0x7dfc3[_0x61f2('0x22')]:_0x2c300c[_0x61f2('0x1f')]+_0x2c300c[_0x61f2('0x21')];var _0x337c82;if(_0x5e49c1>=_0x186ddb){_0x5e49c1=_0x186ddb;_0x337c82=0xc8;}else{_0x337c82=0xce;}_0x4369c6[_0x61f2('0x1c')](_0x337c82);return _0x4369c6['set'](_0x61f2('0x23'),_0x4514e6+'-'+_0x5e49c1+'/'+_0x186ddb)['json'](_0x7dfc3);}return null;};}function patchUpdates(_0x20c9c8){return function(_0x57e00c){try{jsonpatch[_0x61f2('0x24')](_0x57e00c,_0x20c9c8,!![]);}catch(_0x19be32){return BPromise[_0x61f2('0x25')](_0x19be32);}return _0x57e00c[_0x61f2('0x26')]();};}function saveUpdates(_0xcb0ed6,_0x4e7ff0){return function(_0x5aa9d4){if(_0x5aa9d4){return _0x5aa9d4['update'](_0xcb0ed6)[_0x61f2('0x27')](function(_0x331d5a){return _0x331d5a;});}return null;};}function removeEntity(_0xe2836d,_0x4fe589){return function(_0x328c0d){if(_0x328c0d){return _0x328c0d['destroy']()[_0x61f2('0x27')](function(){_0xe2836d[_0x61f2('0x1c')](0xcc)[_0x61f2('0x1d')]();});}};}function handleEntityNotFound(_0x4ee1ef,_0x4d05c3){return function(_0x5e65e2){if(!_0x5e65e2){_0x4ee1ef[_0x61f2('0x1b')](0x194);}return _0x5e65e2;};}function handleError(_0x2927f7,_0xc4fc19){_0xc4fc19=_0xc4fc19||0x1f4;return function(_0x53721e){logger[_0x61f2('0x28')](_0x53721e[_0x61f2('0x29')]);if(_0x53721e[_0x61f2('0x2a')]){delete _0x53721e[_0x61f2('0x2a')];}_0x2927f7[_0x61f2('0x1c')](_0xc4fc19)[_0x61f2('0x2b')](_0x53721e);};}exports[_0x61f2('0x2c')]=function(_0x13ab29,_0x592b23){var _0x3d9590={},_0x32f405={},_0x3da8dc={'count':0x0,'rows':[]};var _0x22b47a=_[_0x61f2('0x2d')](db[_0x61f2('0x2e')][_0x61f2('0x2f')],function(_0x3adb33){return{'name':_0x3adb33[_0x61f2('0x30')],'type':_0x3adb33[_0x61f2('0x31')][_0x61f2('0x32')]};});_0x32f405['model']=_['map'](_0x22b47a,_0x61f2('0x2a'));_0x32f405['query']=_['keys'](_0x13ab29[_0x61f2('0x33')]);_0x32f405['filters']=_[_0x61f2('0x34')](_0x32f405[_0x61f2('0x35')],_0x32f405[_0x61f2('0x33')]);_0x3d9590[_0x61f2('0x36')]=_[_0x61f2('0x34')](_0x32f405['model'],qs[_0x61f2('0x37')](_0x13ab29['query'][_0x61f2('0x37')]));_0x3d9590[_0x61f2('0x36')]=_0x3d9590[_0x61f2('0x36')][_0x61f2('0x38')]?_0x3d9590[_0x61f2('0x36')]:_0x32f405[_0x61f2('0x35')];if(!_0x13ab29[_0x61f2('0x33')][_0x61f2('0x39')](_0x61f2('0x3a'))){_0x3d9590['limit']=qs[_0x61f2('0x21')](_0x13ab29[_0x61f2('0x33')]['limit']);_0x3d9590['offset']=qs[_0x61f2('0x1f')](_0x13ab29['query'][_0x61f2('0x1f')]);}_0x3d9590[_0x61f2('0x3b')]=qs[_0x61f2('0x3c')](_0x13ab29[_0x61f2('0x33')][_0x61f2('0x3c')]);_0x3d9590[_0x61f2('0x3d')]=qs[_0x61f2('0x3e')](_[_0x61f2('0x3f')](_0x13ab29[_0x61f2('0x33')],_0x32f405[_0x61f2('0x3e')]),_0x22b47a);if(_0x13ab29[_0x61f2('0x33')][_0x61f2('0x40')]){_0x3d9590[_0x61f2('0x3d')]=_[_0x61f2('0x41')](_0x3d9590['where'],{'$or':_[_0x61f2('0x2d')](_0x22b47a,function(_0x4e45a7){if(_0x4e45a7[_0x61f2('0x31')]!=='VIRTUAL'){var _0x1aee67={};_0x1aee67[_0x4e45a7[_0x61f2('0x2a')]]={'$like':'%'+_0x13ab29[_0x61f2('0x33')][_0x61f2('0x40')]+'%'};return _0x1aee67;}})});}_0x3d9590=_[_0x61f2('0x41')]({},_0x3d9590,_0x13ab29[_0x61f2('0x42')]);var _0x28dd4c={'where':_0x3d9590[_0x61f2('0x3d')]};return db[_0x61f2('0x2e')][_0x61f2('0x22')](_0x28dd4c)[_0x61f2('0x27')](function(_0x1a65f9){_0x3da8dc['count']=_0x1a65f9;if(_0x13ab29[_0x61f2('0x33')]['includeAll']){_0x3d9590[_0x61f2('0x43')]=[{'all':!![]}];}return db['Attachment'][_0x61f2('0x44')](_0x3d9590);})[_0x61f2('0x27')](function(_0x56036c){_0x3da8dc[_0x61f2('0x45')]=_0x56036c;return _0x3da8dc;})[_0x61f2('0x27')](respondWithFilteredResult(_0x592b23,_0x3d9590))[_0x61f2('0x46')](handleError(_0x592b23,null));};exports[_0x61f2('0x47')]=function(_0x3ab482,_0xa736f7){var _0x7cac21={'raw':!![],'where':{'id':_0x3ab482[_0x61f2('0x48')]['id']}},_0x110757={};_0x110757[_0x61f2('0x35')]=_[_0x61f2('0x49')](db[_0x61f2('0x2e')]['rawAttributes']);_0x110757[_0x61f2('0x33')]=_[_0x61f2('0x49')](_0x3ab482[_0x61f2('0x33')]);_0x110757[_0x61f2('0x3e')]=_[_0x61f2('0x34')](_0x110757['model'],_0x110757[_0x61f2('0x33')]);_0x7cac21[_0x61f2('0x36')]=_[_0x61f2('0x34')](_0x110757['model'],qs[_0x61f2('0x37')](_0x3ab482[_0x61f2('0x33')][_0x61f2('0x37')]));_0x7cac21[_0x61f2('0x36')]=_0x7cac21[_0x61f2('0x36')][_0x61f2('0x38')]?_0x7cac21[_0x61f2('0x36')]:_0x110757[_0x61f2('0x35')];if(_0x3ab482[_0x61f2('0x33')][_0x61f2('0x4a')]){_0x7cac21[_0x61f2('0x43')]=[{'all':!![]}];}_0x7cac21=_[_0x61f2('0x41')]({},_0x7cac21,_0x3ab482[_0x61f2('0x42')]);return db['Attachment'][_0x61f2('0x4b')](_0x7cac21)['then'](handleEntityNotFound(_0xa736f7,null))[_0x61f2('0x27')](respondWithResult(_0xa736f7,null))[_0x61f2('0x46')](handleError(_0xa736f7,null));};exports[_0x61f2('0x4c')]=function(_0x4ddc7f,_0xddd096){var _0x1151e0={'where':{'id':_0x4ddc7f['params']['id']}},_0x1cc786={};_0x1cc786[_0x61f2('0x35')]=_[_0x61f2('0x49')](db['Attachment']['rawAttributes']);_0x1151e0['attributes']=_['intersection'](_0x1cc786[_0x61f2('0x35')],qs['fields'](_0x4ddc7f[_0x61f2('0x33')][_0x61f2('0x37')]));_0x1151e0[_0x61f2('0x36')]=_0x1151e0['attributes'][_0x61f2('0x38')]?_0x1151e0[_0x61f2('0x36')]:_0x1cc786[_0x61f2('0x35')];if(_0x4ddc7f[_0x61f2('0x33')][_0x61f2('0x4a')]){_0x1151e0[_0x61f2('0x43')]=[{'all':!![]}];}_0x1151e0=_[_0x61f2('0x41')]({},_0x1151e0,_0x4ddc7f['options']);return db[_0x61f2('0x2e')]['find'](_0x1151e0)[_0x61f2('0x27')](handleEntityNotFound(_0xddd096,null))[_0x61f2('0x27')](function(_0x4fcf70){if(_0x4fcf70){var _0x58ac34=_0x4fcf70[_0x61f2('0x4d')]({'plain':!![]});_0x58ac34=qs[_0x61f2('0x4e')](_0x58ac34,['id',_0x61f2('0x4f'),_0x61f2('0x50')]);_0x4ddc7f[_0x61f2('0x51')]=_[_0x61f2('0x4e')](_0x4ddc7f['body'],['id',_0x61f2('0x4f'),_0x61f2('0x50')]);return db['Attachment'][_0x61f2('0x52')](_[_0x61f2('0x41')](_0x58ac34,_0x4ddc7f['body']),{'include':_0x4ddc7f['query']['includeAll']?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0xddd096,0xc9))[_0x61f2('0x46')](handleError(_0xddd096,null));};exports['update']=function(_0x279c3c,_0x80c83f){if(_0x279c3c[_0x61f2('0x51')]['id']){delete _0x279c3c[_0x61f2('0x51')]['id'];}return db[_0x61f2('0x2e')][_0x61f2('0x4b')]({'where':{'id':_0x279c3c[_0x61f2('0x48')]['id']}})[_0x61f2('0x27')](handleEntityNotFound(_0x80c83f,null))[_0x61f2('0x27')](saveUpdates(_0x279c3c['body'],null))[_0x61f2('0x27')](respondWithResult(_0x80c83f,null))[_0x61f2('0x46')](handleError(_0x80c83f,null));};exports[_0x61f2('0x53')]=function(_0x250111,_0x333051){return db[_0x61f2('0x2e')][_0x61f2('0x4b')]({'where':{'id':_0x250111[_0x61f2('0x48')]['id']}})[_0x61f2('0x27')](handleEntityNotFound(_0x333051,null))[_0x61f2('0x27')](removeEntity(_0x333051,null))[_0x61f2('0x46')](handleError(_0x333051,null));};exports['create']=function(_0x418651,_0x197284,_0x7204b5){_0x418651[_0x61f2('0x51')][_0x61f2('0x2a')]=_0x418651[_0x61f2('0x54')][_0x61f2('0x55')];_0x418651[_0x61f2('0x51')]['basename']=_0x418651['file'][_0x61f2('0x56')];_0x418651['body'][_0x61f2('0x31')]=_0x418651['file'][_0x61f2('0x57')];return db['Attachment'][_0x61f2('0x52')](_0x418651[_0x61f2('0x51')])['then'](respondWithResult(_0x197284,0xc9))[_0x61f2('0x46')](handleError(_0x197284,null));};exports['download']=function(_0x55b696,_0x1d30c2,_0x52d51d){return db['Attachment'][_0x61f2('0x58')]({'where':{'id':_0x55b696[_0x61f2('0x48')]['id']},'raw':!![]})[_0x61f2('0x27')](handleEntityNotFound(_0x1d30c2,null))['then'](function(_0xef639){if(_0xef639){var _0x53b0e6=_0xef639[_0x61f2('0x59')]!==null;var _0x125d73=path[_0x61f2('0x5a')](config[_0x61f2('0x5b')],_0x61f2('0x5c'));if(_0x53b0e6){_0x125d73=path['join'](_0x125d73,_0x61f2('0x5d'));}var _0x172851=path['join'](_0x125d73,_0xef639[_0x61f2('0x5e')]);return _0x1d30c2[_0x61f2('0x5f')](_0x172851);}})[_0x61f2('0x46')](handleError(_0x1d30c2,null));};
\ No newline at end of file
index fe80ba6..e18d4b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3469=['define','Attachment','attachments','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./attachment.attributes'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x3469,0x16e));var _0x9346=function(_0xa4002c,_0x507d13){_0xa4002c=_0xa4002c-0x0;var _0x484dc4=_0x3469[_0xa4002c];return _0x484dc4;};'use strict';var _=require('lodash');var util=require(_0x9346('0x0'));var logger=require(_0x9346('0x1'))(_0x9346('0x2'));var moment=require('moment');var BPromise=require(_0x9346('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9346('0x4'));var rimraf=require(_0x9346('0x5'));var config=require(_0x9346('0x6'));var attributes=require(_0x9346('0x7'));module['exports']=function(_0x2a9b4f,_0x36ef40){return _0x2a9b4f[_0x9346('0x8')](_0x9346('0x9'),attributes,{'tableName':_0x9346('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfbd4=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','Attachment','attachments'];(function(_0x2d3841,_0xa88cc7){var _0x24457e=function(_0x50d756){while(--_0x50d756){_0x2d3841['push'](_0x2d3841['shift']());}};_0x24457e(++_0xa88cc7);}(_0xfbd4,0x179));var _0x4fbd=function(_0x4f84fe,_0xf35373){_0x4f84fe=_0x4f84fe-0x0;var _0x577dab=_0xfbd4[_0x4f84fe];return _0x577dab;};'use strict';var _=require(_0x4fbd('0x0'));var util=require(_0x4fbd('0x1'));var logger=require(_0x4fbd('0x2'))(_0x4fbd('0x3'));var moment=require(_0x4fbd('0x4'));var BPromise=require('bluebird');var rp=require(_0x4fbd('0x5'));var fs=require('fs');var path=require(_0x4fbd('0x6'));var rimraf=require(_0x4fbd('0x7'));var config=require(_0x4fbd('0x8'));var attributes=require('./attachment.attributes');module[_0x4fbd('0x9')]=function(_0x43f48e,_0x302035){return _0x43f48e[_0x4fbd('0xa')](_0x4fbd('0xb'),attributes,{'tableName':_0x4fbd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a080d1..c056294 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dae=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','Attachment','body','options','raw','info','CreateAttachment','lodash'];(function(_0x38193f,_0x2c6649){var _0x283b66=function(_0x1da004){while(--_0x1da004){_0x38193f['push'](_0x38193f['shift']());}};_0x283b66(++_0x2c6649);}(_0x2dae,0xc3));var _0xe2da=function(_0x1d7300,_0x17f109){_0x1d7300=_0x1d7300-0x0;var _0x46ee98=_0x2dae[_0x1d7300];return _0x46ee98;};'use strict';var _=require(_0xe2da('0x0'));var util=require('util');var moment=require(_0xe2da('0x1'));var BPromise=require(_0xe2da('0x2'));var rs=require(_0xe2da('0x3'));var fs=require('fs');var Redis=require(_0xe2da('0x4'));var db=require(_0xe2da('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe2da('0x6'))(_0xe2da('0x7'));var config=require(_0xe2da('0x8'));var jayson=require(_0xe2da('0x9'));var client=jayson['client'][_0xe2da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x89c70b,_0x34cc98,_0x2efbd8){return new BPromise(function(_0x238da3,_0x1c71ea){return client[_0xe2da('0xb')](_0x89c70b,_0x2efbd8)[_0xe2da('0xc')](function(_0x68aa40){logger['info'](_0xe2da('0xd'),_0x34cc98,_0xe2da('0xe'));logger[_0xe2da('0xf')](_0xe2da('0x10'),_0x34cc98,_0xe2da('0xe'),JSON[_0xe2da('0x11')](_0x68aa40));if(_0x68aa40[_0xe2da('0x12')]){if(_0x68aa40[_0xe2da('0x12')]['code']===0x1f4){logger[_0xe2da('0x12')]('Attachment,\x20%s,\x20%s',_0x34cc98,_0x68aa40[_0xe2da('0x12')][_0xe2da('0x13')]);return _0x1c71ea(_0x68aa40[_0xe2da('0x12')][_0xe2da('0x13')]);}logger[_0xe2da('0x12')](_0xe2da('0xd'),_0x34cc98,_0x68aa40[_0xe2da('0x12')]['message']);return _0x238da3(_0x68aa40[_0xe2da('0x12')]['message']);}else{logger['info'](_0xe2da('0xd'),_0x34cc98,_0xe2da('0xe'));_0x238da3(_0x68aa40[_0xe2da('0x14')]['message']);}})[_0xe2da('0x15')](function(_0x2c0353){logger[_0xe2da('0x12')](_0xe2da('0xd'),_0x34cc98,_0x2c0353);_0x1c71ea(_0x2c0353);});});}exports['CreateAttachment']=function(_0x45bb92){var _0x1f7d33=this;return new Promise(function(_0x417363,_0x2e5730){return db[_0xe2da('0x16')]['create'](_0x45bb92[_0xe2da('0x17')],{'raw':_0x45bb92[_0xe2da('0x18')]?_0x45bb92['options'][_0xe2da('0x19')]===undefined?!![]:![]:!![]})[_0xe2da('0xc')](function(_0x332193){logger[_0xe2da('0x1a')](_0xe2da('0x1b'),_0x45bb92);logger[_0xe2da('0xf')]('CreateAttachment',_0x45bb92,JSON[_0xe2da('0x11')](_0x332193));_0x417363(_0x332193);})['catch'](function(_0x30efdc){logger[_0xe2da('0x12')](_0xe2da('0x1b'),_0x30efdc[_0xe2da('0x13')],_0x45bb92);_0x2e5730(_0x1f7d33[_0xe2da('0x12')](0x1f4,_0x30efdc[_0xe2da('0x13')]));});});};
\ No newline at end of file
+var _0x34b2=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateAttachment','Attachment','create','body','options','raw','then','lodash','util','moment','bluebird'];(function(_0x3f4358,_0x4ecc25){var _0xb7a0ea=function(_0x2d3c72){while(--_0x2d3c72){_0x3f4358['push'](_0x3f4358['shift']());}};_0xb7a0ea(++_0x4ecc25);}(_0x34b2,0x11c));var _0x234b=function(_0x36aad0,_0x3d2e17){_0x36aad0=_0x36aad0-0x0;var _0x31e987=_0x34b2[_0x36aad0];return _0x31e987;};'use strict';var _=require(_0x234b('0x0'));var util=require(_0x234b('0x1'));var moment=require(_0x234b('0x2'));var BPromise=require(_0x234b('0x3'));var rs=require(_0x234b('0x4'));var fs=require('fs');var Redis=require(_0x234b('0x5'));var db=require(_0x234b('0x6'))['db'];var utils=require(_0x234b('0x7'));var logger=require(_0x234b('0x8'))(_0x234b('0x9'));var config=require(_0x234b('0xa'));var jayson=require(_0x234b('0xb'));var client=jayson[_0x234b('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52fac7,_0x5e71ac,_0x2eb07e){return new BPromise(function(_0x84f1f0,_0x153974){return client[_0x234b('0xd')](_0x52fac7,_0x2eb07e)['then'](function(_0x4f4899){logger[_0x234b('0xe')](_0x234b('0xf'),_0x5e71ac,_0x234b('0x10'));logger[_0x234b('0x11')](_0x234b('0x12'),_0x5e71ac,_0x234b('0x10'),JSON[_0x234b('0x13')](_0x4f4899));if(_0x4f4899[_0x234b('0x14')]){if(_0x4f4899[_0x234b('0x14')][_0x234b('0x15')]===0x1f4){logger[_0x234b('0x14')](_0x234b('0xf'),_0x5e71ac,_0x4f4899[_0x234b('0x14')]['message']);return _0x153974(_0x4f4899[_0x234b('0x14')][_0x234b('0x16')]);}logger['error'](_0x234b('0xf'),_0x5e71ac,_0x4f4899[_0x234b('0x14')]['message']);return _0x84f1f0(_0x4f4899[_0x234b('0x14')][_0x234b('0x16')]);}else{logger[_0x234b('0xe')](_0x234b('0xf'),_0x5e71ac,_0x234b('0x10'));_0x84f1f0(_0x4f4899[_0x234b('0x17')][_0x234b('0x16')]);}})[_0x234b('0x18')](function(_0x1fb3d8){logger['error'](_0x234b('0xf'),_0x5e71ac,_0x1fb3d8);_0x153974(_0x1fb3d8);});});}exports[_0x234b('0x19')]=function(_0x18153a){var _0x22696d=this;return new Promise(function(_0x4424a1,_0x530e4a){return db[_0x234b('0x1a')][_0x234b('0x1b')](_0x18153a[_0x234b('0x1c')],{'raw':_0x18153a[_0x234b('0x1d')]?_0x18153a['options'][_0x234b('0x1e')]===undefined?!![]:![]:!![]})[_0x234b('0x1f')](function(_0x2a47e1){logger[_0x234b('0xe')](_0x234b('0x19'),_0x18153a);logger['debug'](_0x234b('0x19'),_0x18153a,JSON[_0x234b('0x13')](_0x2a47e1));_0x4424a1(_0x2a47e1);})['catch'](function(_0x184e98){logger[_0x234b('0x14')](_0x234b('0x19'),_0x184e98[_0x234b('0x16')],_0x18153a);_0x530e4a(_0x22696d[_0x234b('0x14')](0x1f4,_0x184e98[_0x234b('0x16')]));});});};
\ No newline at end of file
index 3678c7b..75bac43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['/:id/clone','clone','diskStorage','join','server/files/attachments/','format','now','originalname','replace','single','create','/:id','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','isAuthenticated','index','show','/:id/download','post'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1deb72,_0x3f6338){_0x1deb72=_0x1deb72-0x0;var _0x18bbdf=_0x0b0e[_0x1deb72];return _0x18bbdf;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x0b0e=['/:id/clone','clone','diskStorage','join','server/files/attachments/','format','now','originalname','replace','single','create','/:id','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','isAuthenticated','index','show','/:id/download','post'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x0b0e,0x187));var _0xe0b0=function(_0x58db4e,_0x439d8d){_0x58db4e=_0x58db4e-0x0;var _0x40139a=_0x0b0e[_0x58db4e];return _0x40139a;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=router;
\ No newline at end of file
index b897bee..4845ccd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4b=['authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Setting','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','role','disabled','blocked','blockedAt','user','agent','domain','add','clearBlockUser','getLicense','catch','status','send','message','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','ad-login','password','User','passport','passport-local','Strategy','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','api','undefined','activedirectory','url'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xac4b,0xb4));var _0xbac4=function(_0x1ce763,_0x18e181){_0x1ce763=_0x1ce763-0x0;var _0xbe7123=_0xac4b[_0x1ce763];return _0xbe7123;};'use strict';var passport=require(_0xbac4('0x0'));var LocalStrategy=require(_0xbac4('0x1'))[_0xbac4('0x2')];var moment=require('moment');var ActiveDirectory=require('activedirectory2');var BPromise=require(_0xbac4('0x3'));var util=require(_0xbac4('0x4'));var db=require(_0xbac4('0x5'))['db'];var authService=require(_0xbac4('0x6'));var utils=require(_0xbac4('0x7'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0xbac4('0x8'));function isActiveDirectoryConfigured(_0x9464ce){var _0xbb85e7=![];if(typeof _0x9464ce['activedirectory']!==_0xbac4('0x9')){_0xbb85e7=_0x9464ce[_0xbac4('0xa')]['baseDN']&&_0x9464ce[_0xbac4('0xa')][_0xbac4('0xb')]&&_0x9464ce['activedirectory']['domain'];}return _0xbb85e7;}function adAuthenticate(_0x43b914,_0x3c99fa,_0x7d8e13){return new BPromise(function(_0x16d77a,_0x2f1d2b){try{var _0x31f484=new ActiveDirectory(_0x43b914);_0x31f484[_0xbac4('0xc')](_0x3c99fa,_0x7d8e13,function(_0x4999a6,_0x528ad7){if(_0x4999a6){logger[_0xbac4('0xd')](_0xbac4('0xe'),_0x3c99fa,util[_0xbac4('0xf')](_0x4999a6,{'showHidden':![],'depth':null}));_0x2f1d2b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x528ad7){logger[_0xbac4('0xd')](_0xbac4('0x10'),_0x3c99fa);_0x2f1d2b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x16d77a(_0x528ad7);}});}catch(_0x1ff93f){_0x2f1d2b(_0x1ff93f);}});}function ActiveDirectoryAuthenticate(_0xf24233,_0x361dea,_0x34e809,_0x2618f8){var _0x1c95a5,_0x2e0953;if(!isActiveDirectoryConfigured(config)){logger[_0xbac4('0xd')](_0xbac4('0x11'),_0x361dea);return _0x2618f8(null,![],{'message':_0xbac4('0x12')});}return db[_0xbac4('0x13')]['findOne']({'where':{'id':0x1},'attributes':[_0xbac4('0x14'),_0xbac4('0x15')],'raw':!![]})[_0xbac4('0x16')](function(_0x1316df){_0x1c95a5=_0x1316df;if(!_0x1c95a5['adSsoEnabled']){logger['error'](_0xbac4('0x17'),_0x361dea);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0xf24233[_0xbac4('0x18')]({'attributes':['id',_0xbac4('0x19'),'password','salt',_0xbac4('0x1a'),_0xbac4('0x1b'),_0xbac4('0x1c'),_0xbac4('0x1d'),'online'],'where':{'name':_0x361dea,'role':{'$or':['admin',_0xbac4('0x1e'),_0xbac4('0x1f')]},'adSsoEnabled':!![]}});})[_0xbac4('0x16')](function(_0x3c8fd0){if(!_0x3c8fd0||_0x3c8fd0&&_0x3c8fd0[_0xbac4('0x19')]!==_0x361dea){throw new Error(_0xbac4('0x12'));}_0x2e0953=_0x3c8fd0;var _0xa71ee2=_0x2e0953[_0xbac4('0x19')]+'@'+config[_0xbac4('0xa')][_0xbac4('0x20')];return adAuthenticate(config[_0xbac4('0xa')],_0xa71ee2,_0x34e809);})['then'](function(_0x25dae9){if(_0x2e0953[_0xbac4('0x1b')]){throw new Error(_0xbac4('0x12'));}if(_0x1c95a5[_0xbac4('0x15')]>0x0){if(_0x2e0953[_0xbac4('0x1c')]){if(moment(_0x2e0953[_0xbac4('0x1d')])[_0xbac4('0x21')](_0x1c95a5[_0xbac4('0x15')],'minutes')>moment()){throw new Error(_0xbac4('0x12'));}return utils[_0xbac4('0x22')](_0x2e0953,0x0,![],null)[_0xbac4('0x16')](function(){return utils[_0xbac4('0x23')](_0x2e0953);})[_0xbac4('0x16')](function(){return _0x2618f8(null,_0x2e0953);});}else{return utils['getLicense'](_0x2e0953)[_0xbac4('0x16')](function(){return _0x2618f8(null,_0x2e0953);});}}else{return utils[_0xbac4('0x23')](_0x2e0953)[_0xbac4('0x16')](function(){return _0x2618f8(null,_0x2e0953);});}})[_0xbac4('0x24')](function(_0x4f1a0b){return _0x2618f8(null,![],_0x4f1a0b);});}function handleError(_0x3c95df,_0x155107,_0x9f27d){return _0x3c95df[_0xbac4('0x25')](_0x155107||0x1f4)[_0xbac4('0x26')]({'message':_0x9f27d?_0x9f27d[_0xbac4('0x27')]||_0x9f27d:''});}exports[_0xbac4('0x28')]=function(_0x80281,_0x53e9a4,_0x154802){passport[_0xbac4('0xc')]('ad-login',function(_0xcec4f2,_0x1430fe,_0x5417bb){var _0x383728=_0xcec4f2||_0x5417bb;if(_0x383728){return handleError(_0x53e9a4,0x191,_0x383728);}if(!_0x1430fe){return handleError(_0x53e9a4,0x194,{'message':_0xbac4('0x29')});}else{var _0x3edbe4={'payload':{'id':_0x1430fe['id'],'role':_0x1430fe[_0xbac4('0x1a')]},'options':{'expiresIn':0x15180}};return authService[_0xbac4('0x2a')](_0x3edbe4)[_0xbac4('0x16')](function(_0x3f1b41){_0x53e9a4[_0xbac4('0x2b')]({'id':_0x1430fe['id'],'token':_0x3f1b41,'statusCall':'','isAlreadyLogged':_0x1430fe['online']});});}})(_0x80281,_0x53e9a4,_0x154802);};passport[_0xbac4('0x2c')](_0xbac4('0x2d'),new LocalStrategy({'usernameField':_0xbac4('0x19'),'passwordField':_0xbac4('0x2e')},function(_0x3ca569,_0x4bfe8c,_0x44e5c8){return ActiveDirectoryAuthenticate(db[_0xbac4('0x2f')],_0x3ca569,_0x4bfe8c,_0x44e5c8);}));
\ No newline at end of file
+var _0xe921=['undefined','baseDN','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','password','role','blocked','blockedAt','user','agent','name','disabled','getLicense','catch','send','login','ad-login','signToken','json','online','use','passport','bluebird','util','../../components/auth/service','../../config/utils','../../config/logger','api','activedirectory'];(function(_0x1c6eea,_0x19a204){var _0x19e1a1=function(_0x24e50a){while(--_0x24e50a){_0x1c6eea['push'](_0x1c6eea['shift']());}};_0x19e1a1(++_0x19a204);}(_0xe921,0x1f3));var _0x1e92=function(_0x3dee08,_0x196ccf){_0x3dee08=_0x3dee08-0x0;var _0x425419=_0xe921[_0x3dee08];return _0x425419;};'use strict';var passport=require(_0x1e92('0x0'));var LocalStrategy=require('passport-local')['Strategy'];var moment=require('moment');var ActiveDirectory=require('activedirectory2');var BPromise=require(_0x1e92('0x1'));var util=require(_0x1e92('0x2'));var db=require('../../mysqldb')['db'];var authService=require(_0x1e92('0x3'));var utils=require(_0x1e92('0x4'));var config=require('../../config/environment');var logger=require(_0x1e92('0x5'))(_0x1e92('0x6'));function isActiveDirectoryConfigured(_0x48aed8){var _0x542050=![];if(typeof _0x48aed8[_0x1e92('0x7')]!==_0x1e92('0x8')){_0x542050=_0x48aed8['activedirectory'][_0x1e92('0x9')]&&_0x48aed8[_0x1e92('0x7')]['url']&&_0x48aed8['activedirectory'][_0x1e92('0xa')];}return _0x542050;}function adAuthenticate(_0x1b5d35,_0x259f9a,_0x2a7779){return new BPromise(function(_0x3678da,_0x574fb1){try{var _0x4e53f6=new ActiveDirectory(_0x1b5d35);_0x4e53f6[_0x1e92('0xb')](_0x259f9a,_0x2a7779,function(_0x4fcb9c,_0x12425d){if(_0x4fcb9c){logger[_0x1e92('0xc')](_0x1e92('0xd'),_0x259f9a,util[_0x1e92('0xe')](_0x4fcb9c,{'showHidden':![],'depth':null}));_0x574fb1(_0x1e92('0xf'));}else if(!_0x12425d){logger[_0x1e92('0xc')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x259f9a);_0x574fb1(_0x1e92('0xf'));}else{_0x3678da(_0x12425d);}});}catch(_0x3ee692){_0x574fb1(_0x3ee692);}});}function ActiveDirectoryAuthenticate(_0x5c3512,_0x22d9ce,_0x1fd480,_0x144f30){var _0x3de9ec,_0x406c27;if(!isActiveDirectoryConfigured(config)){logger[_0x1e92('0xc')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x22d9ce);return _0x144f30(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0x1e92('0x10')][_0x1e92('0x11')]({'where':{'id':0x1},'attributes':[_0x1e92('0x12'),_0x1e92('0x13')],'raw':!![]})[_0x1e92('0x14')](function(_0x25f6ac){_0x3de9ec=_0x25f6ac;if(!_0x3de9ec[_0x1e92('0x12')]){logger[_0x1e92('0xc')](_0x1e92('0x15'),_0x22d9ce);throw new Error(_0x1e92('0xf'));}return _0x5c3512[_0x1e92('0x11')]({'attributes':['id','name',_0x1e92('0x16'),'salt',_0x1e92('0x17'),'disabled',_0x1e92('0x18'),_0x1e92('0x19'),'online'],'where':{'name':_0x22d9ce,'role':{'$or':['admin',_0x1e92('0x1a'),_0x1e92('0x1b')]},'adSsoEnabled':!![]}});})[_0x1e92('0x14')](function(_0x16b10b){if(!_0x16b10b||_0x16b10b&&_0x16b10b[_0x1e92('0x1c')]!==_0x22d9ce){throw new Error(_0x1e92('0xf'));}_0x406c27=_0x16b10b;var _0x4612ff=_0x406c27[_0x1e92('0x1c')]+'@'+config[_0x1e92('0x7')][_0x1e92('0xa')];return adAuthenticate(config[_0x1e92('0x7')],_0x4612ff,_0x1fd480);})['then'](function(_0x228075){if(_0x406c27[_0x1e92('0x1d')]){throw new Error(_0x1e92('0xf'));}if(_0x3de9ec['blockDuration']>0x0){if(_0x406c27[_0x1e92('0x18')]){if(moment(_0x406c27[_0x1e92('0x19')])['add'](_0x3de9ec[_0x1e92('0x13')],'minutes')>moment()){throw new Error(_0x1e92('0xf'));}return utils['clearBlockUser'](_0x406c27,0x0,![],null)[_0x1e92('0x14')](function(){return utils[_0x1e92('0x1e')](_0x406c27);})[_0x1e92('0x14')](function(){return _0x144f30(null,_0x406c27);});}else{return utils[_0x1e92('0x1e')](_0x406c27)[_0x1e92('0x14')](function(){return _0x144f30(null,_0x406c27);});}}else{return utils[_0x1e92('0x1e')](_0x406c27)[_0x1e92('0x14')](function(){return _0x144f30(null,_0x406c27);});}})[_0x1e92('0x1f')](function(_0x374cb5){return _0x144f30(null,![],_0x374cb5);});}function handleError(_0x26a947,_0x18c4b8,_0x260a6b){return _0x26a947['status'](_0x18c4b8||0x1f4)[_0x1e92('0x20')]({'message':_0x260a6b?_0x260a6b['message']||_0x260a6b:''});}exports[_0x1e92('0x21')]=function(_0x58c62e,_0x1cb1d6,_0x67a140){passport[_0x1e92('0xb')](_0x1e92('0x22'),function(_0x36edce,_0x5c3b45,_0x2a8bb2){var _0x440a53=_0x36edce||_0x2a8bb2;if(_0x440a53){return handleError(_0x1cb1d6,0x191,_0x440a53);}if(!_0x5c3b45){return handleError(_0x1cb1d6,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x40e264={'payload':{'id':_0x5c3b45['id'],'role':_0x5c3b45['role']},'options':{'expiresIn':0x15180}};return authService[_0x1e92('0x23')](_0x40e264)['then'](function(_0x2d8360){_0x1cb1d6[_0x1e92('0x24')]({'id':_0x5c3b45['id'],'token':_0x2d8360,'statusCall':'','isAlreadyLogged':_0x5c3b45[_0x1e92('0x25')]});});}})(_0x58c62e,_0x1cb1d6,_0x67a140);};passport[_0x1e92('0x26')](_0x1e92('0x22'),new LocalStrategy({'usernameField':'name','passwordField':_0x1e92('0x16')},function(_0x38bb83,_0x1b205b,_0x59a119){return ActiveDirectoryAuthenticate(db['User'],_0x38bb83,_0x1b205b,_0x59a119);}));
\ No newline at end of file
index 993435a..3185fdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4a8=['express','Router','./authActiveDirectory.controller','post','login'];(function(_0x528385,_0x500299){var _0x203e3e=function(_0x564273){while(--_0x564273){_0x528385['push'](_0x528385['shift']());}};_0x203e3e(++_0x500299);}(_0xe4a8,0x64));var _0x8e4a=function(_0x2cad1d,_0x95a8c7){_0x2cad1d=_0x2cad1d-0x0;var _0x4a900c=_0xe4a8[_0x2cad1d];return _0x4a900c;};'use strict';var express=require(_0x8e4a('0x0'));var router=express[_0x8e4a('0x1')]();var controller=require(_0x8e4a('0x2'));router[_0x8e4a('0x3')]('/',controller[_0x8e4a('0x4')]);module['exports']=router;
\ No newline at end of file
+var _0x677c=['login','exports','Router','./authActiveDirectory.controller','post'];(function(_0x2276b3,_0xc9912){var _0x52eebc=function(_0x4b6446){while(--_0x4b6446){_0x2276b3['push'](_0x2276b3['shift']());}};_0x52eebc(++_0xc9912);}(_0x677c,0x188));var _0xc677=function(_0x217981,_0x3dc5bb){_0x217981=_0x217981-0x0;var _0x83b4cf=_0x677c[_0x217981];return _0x83b4cf;};'use strict';var express=require('express');var router=express[_0xc677('0x0')]();var controller=require(_0xc677('0x1'));router[_0xc677('0x2')]('/',controller[_0xc677('0x3')]);module[_0xc677('0x4')]=router;
\ No newline at end of file
index 6ccdc93..067ab6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x7a54,0x106));var _0x47a5=function(_0x224553,_0x324cca){_0x224553=_0x224553-0x0;var _0x53c476=_0x7a54[_0x224553];return _0x53c476;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
+var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x45dd3f,_0x49ad9b){var _0x2a4a56=function(_0x3a2bcb){while(--_0x3a2bcb){_0x45dd3f['push'](_0x45dd3f['shift']());}};_0x2a4a56(++_0x49ad9b);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
index 836418e..6d934de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd38c=['/callback','callback','setTokenCookie','express','passport','./authGoogle.controller','../user/user.controller.js','get','login'];(function(_0x54a9b9,_0x31352f){var _0x2a34ef=function(_0x50f592){while(--_0x50f592){_0x54a9b9['push'](_0x54a9b9['shift']());}};_0x2a34ef(++_0x31352f);}(_0xd38c,0x174));var _0xcd38=function(_0x417020,_0x3ee315){_0x417020=_0x417020-0x0;var _0x5715ec=_0xd38c[_0x417020];return _0x5715ec;};'use strict';var express=require(_0xcd38('0x0'));var passport=require(_0xcd38('0x1'));var router=express['Router']();var controller=require(_0xcd38('0x2'));var userController=require(_0xcd38('0x3'));var authService=require('../../components/auth/service');router[_0xcd38('0x4')]('/',controller[_0xcd38('0x5')]);router['get'](_0xcd38('0x6'),controller[_0xcd38('0x7')],authService['isMiddleware'],userController['login'],authService[_0xcd38('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0x170d=['login','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','callback','isMiddleware'];(function(_0x1832fe,_0x2830dc){var _0x29e05f=function(_0x2cb186){while(--_0x2cb186){_0x1832fe['push'](_0x1832fe['shift']());}};_0x29e05f(++_0x2830dc);}(_0x170d,0x13b));var _0xd170=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x170d[_0x122ef9];return _0x42fba0;};'use strict';var express=require(_0xd170('0x0'));var passport=require(_0xd170('0x1'));var router=express[_0xd170('0x2')]();var controller=require(_0xd170('0x3'));var userController=require(_0xd170('0x4'));var authService=require(_0xd170('0x5'));router['get']('/',controller['login']);router[_0xd170('0x6')]('/callback',controller[_0xd170('0x7')],authService[_0xd170('0x8')],userController[_0xd170('0x9')],authService[_0xd170('0xa')]);module[_0xd170('0xb')]=router;
\ No newline at end of file
index 6a24b58..c03c3a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa912=['generate','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','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','https://','headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','send','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','validatePasswordPattern','enforcePasswordHistory','previousPasswords','validatePasswordHistory','passwordHistoryLimit','resetPasswordExpires','use','util','passport','passport-local','jayson/promise','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','blockDuration','then','name','password','role','disabled','blocked','blockedAt','admin','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','allowedLoginAttempts','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','getSmtpOptions','\x22%s\x22\x20<%s>','user','request','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','login','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','body'];(function(_0x45e82a,_0x283edd){var _0x1f93a3=function(_0x49c609){while(--_0x49c609){_0x45e82a['push'](_0x45e82a['shift']());}};_0x1f93a3(++_0x283edd);}(_0xa912,0xbc));var _0x2a91=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xa912[_0x1e4360];return _0x31e6b4;};'use strict';var util=require(_0x2a91('0x0'));var passport=require(_0x2a91('0x1'));var LocalStrategy=require(_0x2a91('0x2'))['Strategy'];var jayson=require(_0x2a91('0x3'));var _=require('lodash');var rs=require(_0x2a91('0x4'));var moment=require(_0x2a91('0x5'));var db=require(_0x2a91('0x6'))['db'];var authService=require(_0x2a91('0x7'));var utils=require(_0x2a91('0x8'));var client=jayson[_0x2a91('0x9')][_0x2a91('0xa')]({'port':0x232b});function localAuthenticate(_0x3d9045,_0x459caa,_0x591d32,_0x33750d){var _0x2d9479,_0x219699;return db[_0x2a91('0xb')][_0x2a91('0xc')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x2a91('0xd')],'raw':!![]})[_0x2a91('0xe')](function(_0x3bdb73){_0x2d9479=_0x3bdb73;return _0x3d9045['findOne']({'attributes':['id',_0x2a91('0xf'),_0x2a91('0x10'),'salt',_0x2a91('0x11'),_0x2a91('0x12'),_0x2a91('0x13'),_0x2a91('0x14'),'loginAttempts'],'where':{'name':_0x459caa,'role':{'$or':[_0x2a91('0x15'),'user',_0x2a91('0x16')]}}});})[_0x2a91('0xe')](function(_0x3e763c){if(!_0x3e763c||_0x3e763c&&_0x3e763c[_0x2a91('0xf')]!==_0x459caa){throw new Error(_0x2a91('0x17'));}else{_0x219699=_0x3e763c;return _0x219699;}})[_0x2a91('0xe')](function(){_0x219699[_0x2a91('0x18')](_0x591d32,function(_0x4a6ab3,_0x16f06e){var _0x421f1a=_0x219699['loginAttempts']+0x1;if(_0x4a6ab3){return _0x33750d(_0x4a6ab3);}else if(!_0x16f06e){if(_0x219699[_0x2a91('0x12')]){return _0x33750d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x2d9479[_0x2a91('0x19')]>0x0){if(_0x219699['blocked']){if(_0x2d9479[_0x2a91('0xd')]>0x0){if(moment(_0x219699[_0x2a91('0x14')])[_0x2a91('0x1a')](_0x2d9479[_0x2a91('0xd')],_0x2a91('0x1b'))>moment()){return _0x33750d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x2a91('0x1c')](_0x219699,_0x421f1a,![],null)[_0x2a91('0xe')](function(){return _0x33750d(null,![],{'message':_0x2a91('0x17')});});}}else{return _0x33750d(null,![],{'message':_0x2a91('0x17')});}}else{if(_0x421f1a>=_0x2d9479['allowedLoginAttempts']){return utils[_0x2a91('0x1c')](_0x219699,0x0,!![],moment())['then'](function(){return _0x33750d(null,![],{'message':_0x2a91('0x17')});});}else{return utils[_0x2a91('0x1c')](_0x219699,_0x421f1a,![],null)[_0x2a91('0xe')](function(){return _0x33750d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x33750d(null,![],{'message':_0x2a91('0x17')});}}else{if(_0x219699[_0x2a91('0x12')]){return _0x33750d(null,![],{'message':_0x2a91('0x17')});}else if(_0x2d9479[_0x2a91('0x19')]>0x0){if(_0x219699['blocked']){if(_0x2d9479[_0x2a91('0xd')]>0x0){if(moment(_0x219699[_0x2a91('0x14')])['add'](_0x2d9479['blockDuration'],_0x2a91('0x1b'))>moment()){return _0x33750d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x219699,0x0,![],null)[_0x2a91('0xe')](function(){return utils[_0x2a91('0x1d')](_0x219699);})[_0x2a91('0xe')](function(){return _0x33750d(null,_0x219699);});}}else{return _0x33750d(null,![],{'message':_0x2a91('0x17')});}}else{return utils[_0x2a91('0x1c')](_0x219699,0x0,![],null)['then'](function(){return utils[_0x2a91('0x1d')](_0x219699);})['then'](function(){return _0x33750d(null,_0x219699);})[_0x2a91('0x1e')](function(_0x263f72){return _0x33750d(null,![],_0x263f72);});}}else{if(_0x219699[_0x2a91('0x13')]){return _0x33750d(null,![],{'message':_0x2a91('0x17')});}else{return utils[_0x2a91('0x1d')](_0x219699)['then'](function(){return _0x33750d(null,_0x219699);});}}}});})['catch'](function(_0x3476bf){return _0x33750d(null,![],_0x3476bf);});}function sendServiceMail(_0xf4ce22){return db[_0x2a91('0x1f')][_0x2a91('0x20')]({'where':{'service':!![]},'attributes':['id','name',_0x2a91('0x21')],'include':[{'model':db[_0x2a91('0x22')],'as':_0x2a91('0x23'),'include':[{'model':db[_0x2a91('0x24')],'as':'CloudProvider'}]}]})[_0x2a91('0xe')](function(_0x1e8382){if(!_0x1e8382){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x1fb491=_0x1e8382[_0x2a91('0x25')]();var _0x8aedd7={'account':_0x1fb491,'message':_['merge']({'from':util['format'](_0x2a91('0x26'),_0x1e8382[_0x2a91('0xf')],_0x1e8382['email']||_0x1e8382[_0x2a91('0x23')][_0x2a91('0x27')])},_0xf4ce22)};return client[_0x2a91('0x28')]('SendMail',_0x8aedd7);})[_0x2a91('0xe')](function(_0x4a3145){if(_0x4a3145[_0x2a91('0x29')]){throw new Error(util[_0x2a91('0x2a')](_0x2a91('0x2b'),_0x4a3145['error'][_0x2a91('0x2c')]||JSON[_0x2a91('0x2d')](_0x4a3145[_0x2a91('0x29')])));}return!![];});}function handleError(_0x456092,_0x203e1f,_0x253b18){return _0x456092[_0x2a91('0x2e')](_0x203e1f||0x1f4)['send']({'message':_0x253b18?_0x253b18[_0x2a91('0x2c')]||_0x253b18:''});}exports[_0x2a91('0x2f')]=function(_0x317d9f,_0xfc9720,_0x466c15){passport[_0x2a91('0x18')](_0x2a91('0x30'),function(_0x5032cb,_0x1a580e,_0x335407){var _0x39ea77=_0x5032cb||_0x335407;if(_0x39ea77){return handleError(_0xfc9720,0x191,_0x39ea77);}if(!_0x1a580e){return handleError(_0xfc9720,0x194,{'message':_0x2a91('0x31')});}else{var _0x2e092a={'payload':{'id':_0x1a580e['id'],'role':_0x1a580e[_0x2a91('0x11')]},'options':{'expiresIn':0x15180}};return authService[_0x2a91('0x32')](_0x2e092a)[_0x2a91('0xe')](function(_0xfd9b36){_0xfc9720[_0x2a91('0x33')]({'id':_0x1a580e['id'],'token':_0xfd9b36,'statusCall':'','isAlreadyLogged':_0x1a580e[_0x2a91('0x34')]});});}})(_0x317d9f,_0xfc9720,_0x466c15);};exports[_0x2a91('0x35')]=function(_0x13cf74,_0x6932e){if(!_0x13cf74[_0x2a91('0x36')][_0x2a91('0x21')]){return handleError(_0x6932e,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x3049a8=rs[_0x2a91('0x37')]();_0x13cf74[_0x2a91('0x36')][_0x2a91('0x21')]=_0x13cf74[_0x2a91('0x36')]['email']['trim']()[_0x2a91('0x38')]();var _0xf24943;return db[_0x2a91('0xb')][_0x2a91('0xc')]({'where':{'id':0x1},'attributes':[_0x2a91('0x19'),_0x2a91('0xd')],'raw':!![]})[_0x2a91('0xe')](function(_0x2b0ed0){_0xf24943=_0x2b0ed0;return db['User']['find']({'where':{'email':_0x13cf74[_0x2a91('0x36')][_0x2a91('0x21')]}});})['then'](function(_0x555ba9){if(!_0x555ba9){throw new Error(_0x2a91('0x39'));}if(_0x555ba9[_0x2a91('0x12')]){throw new Error(_0x2a91('0x3a'));}if(_0x555ba9['blocked']){if(moment(_0x555ba9['blockedAt'])[_0x2a91('0x1a')](_0xf24943['blockDuration'],'minutes')>moment()){throw new Error(_0x2a91('0x3b'));}else{_0x555ba9[_0x2a91('0x13')]=![];_0x555ba9[_0x2a91('0x14')]=null;}}_0x555ba9[_0x2a91('0x3c')]=_0x3049a8;_0x555ba9['resetPasswordExpires']=Date[_0x2a91('0x3d')]()+0x36ee80;return _0x555ba9[_0x2a91('0x3e')]();})['then'](function(){return sendServiceMail({'to':_0x13cf74['body'][_0x2a91('0x21')],'subject':_0x2a91('0x3f'),'text':_0x2a91('0x40')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0x2a91('0x41')+_0x13cf74[_0x2a91('0x42')][_0x2a91('0x43')]+_0x2a91('0x44')+_0x3049a8+'\x0a\x0a'+_0x2a91('0x45')});})[_0x2a91('0xe')](function(){_0x6932e[_0x2a91('0x2e')](0xc8)[_0x2a91('0x46')]({'message':'Reset\x20Email\x20sent!'});})[_0x2a91('0x1e')](function(_0x199f7b){return handleError(_0x6932e,0x1f4,_0x199f7b);});};exports['reset']=function(_0x36c7e8,_0x5da79a){return db['User'][_0x2a91('0x20')]({'where':{'resetPasswordToken':_0x36c7e8[_0x2a91('0x47')][_0x2a91('0x48')],'resetPasswordExpires':{'$gt':Date[_0x2a91('0x3d')]()}}})['then'](function(_0x1535c2){if(!_0x1535c2){throw new Error(_0x2a91('0x49'));}return db[_0x2a91('0xb')][_0x2a91('0xc')]({'attributes':['id','securePassword','enforcePasswordHistory','passwordHistoryLimit']})[_0x2a91('0xe')](function(_0x32d1a7){if(_0x32d1a7['securePassword'])authService[_0x2a91('0x4a')](_0x36c7e8['body'][_0x2a91('0x10')]);if(!_0x32d1a7[_0x2a91('0x4b')]||!_0x1535c2[_0x2a91('0x4c')])return _0x1535c2;authService[_0x2a91('0x4d')](_0x36c7e8['body']['password'],_0x1535c2[_0x2a91('0x4c')],_0x32d1a7[_0x2a91('0x4e')]);return _0x1535c2;})[_0x2a91('0xe')](function(){_0x1535c2[_0x2a91('0x10')]=_0x36c7e8[_0x2a91('0x36')]['password'];_0x1535c2[_0x2a91('0x3c')]=null;_0x1535c2[_0x2a91('0x4f')]=null;return _0x1535c2[_0x2a91('0x3e')]();});})[_0x2a91('0xe')](function(){_0x5da79a[_0x2a91('0x2e')](0xc8)[_0x2a91('0x46')]({'message':'Password\x20reset!'});})['catch'](function(_0x5ee4a6){return handleError(_0x5da79a,0x1f4,_0x5ee4a6);});};passport[_0x2a91('0x50')](_0x2a91('0x30'),new LocalStrategy({'usernameField':'name','passwordField':_0x2a91('0x10')},function(_0x582973,_0x364fe5,_0x4db8f7){return localAuthenticate(db['User'],_0x582973,_0x364fe5,_0x4db8f7);}));
\ No newline at end of file
+var _0xba15=['../../components/auth/service','../../config/utils','client','http','Setting','findOne','blockDuration','then','password','salt','role','blockedAt','loginAttempts','admin','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','allowedLoginAttempts','blocked','add','clearBlockUser','minutes','getLicense','MailAccount','find','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','\x22%s\x22\x20<%s>','email','request','SendMail','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','message','stringify','status','send','login','local-login','signToken','json','online','forgot','body','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','/reset/','reset','params','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','Password\x20reset!','catch','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment'];(function(_0x4e3040,_0x225dd0){var _0x25d609=function(_0x5b28f4){while(--_0x5b28f4){_0x4e3040['push'](_0x4e3040['shift']());}};_0x25d609(++_0x225dd0);}(_0xba15,0xf4));var _0x5ba1=function(_0xc6e937,_0x4447b2){_0xc6e937=_0xc6e937-0x0;var _0x38943b=_0xba15[_0xc6e937];return _0x38943b;};'use strict';var util=require(_0x5ba1('0x0'));var passport=require(_0x5ba1('0x1'));var LocalStrategy=require(_0x5ba1('0x2'))[_0x5ba1('0x3')];var jayson=require(_0x5ba1('0x4'));var _=require(_0x5ba1('0x5'));var rs=require(_0x5ba1('0x6'));var moment=require(_0x5ba1('0x7'));var db=require('../../mysqldb')['db'];var authService=require(_0x5ba1('0x8'));var utils=require(_0x5ba1('0x9'));var client=jayson[_0x5ba1('0xa')][_0x5ba1('0xb')]({'port':0x232b});function localAuthenticate(_0x3e8fcf,_0x3ef678,_0xcdc4a3,_0x43f5cb){var _0x4be6f2,_0x7e9364;return db[_0x5ba1('0xc')][_0x5ba1('0xd')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x5ba1('0xe')],'raw':!![]})[_0x5ba1('0xf')](function(_0x530ce9){_0x4be6f2=_0x530ce9;return _0x3e8fcf[_0x5ba1('0xd')]({'attributes':['id','name',_0x5ba1('0x10'),_0x5ba1('0x11'),_0x5ba1('0x12'),'disabled','blocked',_0x5ba1('0x13'),_0x5ba1('0x14')],'where':{'name':_0x3ef678,'role':{'$or':[_0x5ba1('0x15'),_0x5ba1('0x16'),_0x5ba1('0x17')]}}});})[_0x5ba1('0xf')](function(_0x17e09d){if(!_0x17e09d||_0x17e09d&&_0x17e09d[_0x5ba1('0x18')]!==_0x3ef678){throw new Error(_0x5ba1('0x19'));}else{_0x7e9364=_0x17e09d;return _0x7e9364;}})[_0x5ba1('0xf')](function(){_0x7e9364[_0x5ba1('0x1a')](_0xcdc4a3,function(_0x3a0b27,_0x18951b){var _0x40fade=_0x7e9364['loginAttempts']+0x1;if(_0x3a0b27){return _0x43f5cb(_0x3a0b27);}else if(!_0x18951b){if(_0x7e9364[_0x5ba1('0x1b')]){return _0x43f5cb(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x4be6f2[_0x5ba1('0x1c')]>0x0){if(_0x7e9364[_0x5ba1('0x1d')]){if(_0x4be6f2[_0x5ba1('0xe')]>0x0){if(moment(_0x7e9364[_0x5ba1('0x13')])[_0x5ba1('0x1e')](_0x4be6f2[_0x5ba1('0xe')],'minutes')>moment()){return _0x43f5cb(null,![],{'message':_0x5ba1('0x19')});}else{return utils[_0x5ba1('0x1f')](_0x7e9364,_0x40fade,![],null)[_0x5ba1('0xf')](function(){return _0x43f5cb(null,![],{'message':_0x5ba1('0x19')});});}}else{return _0x43f5cb(null,![],{'message':_0x5ba1('0x19')});}}else{if(_0x40fade>=_0x4be6f2[_0x5ba1('0x1c')]){return utils[_0x5ba1('0x1f')](_0x7e9364,0x0,!![],moment())[_0x5ba1('0xf')](function(){return _0x43f5cb(null,![],{'message':_0x5ba1('0x19')});});}else{return utils[_0x5ba1('0x1f')](_0x7e9364,_0x40fade,![],null)[_0x5ba1('0xf')](function(){return _0x43f5cb(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x43f5cb(null,![],{'message':_0x5ba1('0x19')});}}else{if(_0x7e9364['disabled']){return _0x43f5cb(null,![],{'message':_0x5ba1('0x19')});}else if(_0x4be6f2[_0x5ba1('0x1c')]>0x0){if(_0x7e9364[_0x5ba1('0x1d')]){if(_0x4be6f2['blockDuration']>0x0){if(moment(_0x7e9364[_0x5ba1('0x13')])['add'](_0x4be6f2[_0x5ba1('0xe')],_0x5ba1('0x20'))>moment()){return _0x43f5cb(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x5ba1('0x1f')](_0x7e9364,0x0,![],null)[_0x5ba1('0xf')](function(){return utils[_0x5ba1('0x21')](_0x7e9364);})['then'](function(){return _0x43f5cb(null,_0x7e9364);});}}else{return _0x43f5cb(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x5ba1('0x1f')](_0x7e9364,0x0,![],null)[_0x5ba1('0xf')](function(){return utils[_0x5ba1('0x21')](_0x7e9364);})[_0x5ba1('0xf')](function(){return _0x43f5cb(null,_0x7e9364);})['catch'](function(_0x8cf6bd){return _0x43f5cb(null,![],_0x8cf6bd);});}}else{if(_0x7e9364['blocked']){return _0x43f5cb(null,![],{'message':_0x5ba1('0x19')});}else{return utils[_0x5ba1('0x21')](_0x7e9364)['then'](function(){return _0x43f5cb(null,_0x7e9364);});}}}});})['catch'](function(_0x2dcb68){return _0x43f5cb(null,![],_0x2dcb68);});}function sendServiceMail(_0x8da511){return db[_0x5ba1('0x22')][_0x5ba1('0x23')]({'where':{'service':!![]},'attributes':['id','name','email'],'include':[{'model':db[_0x5ba1('0x24')],'as':_0x5ba1('0x25'),'include':[{'model':db[_0x5ba1('0x26')],'as':_0x5ba1('0x26')}]}]})['then'](function(_0x15aa94){if(!_0x15aa94){throw new Error(_0x5ba1('0x27'));}var _0x8bdae6=_0x15aa94[_0x5ba1('0x28')]();var _0x4a37c0={'account':_0x8bdae6,'message':_[_0x5ba1('0x29')]({'from':util['format'](_0x5ba1('0x2a'),_0x15aa94[_0x5ba1('0x18')],_0x15aa94[_0x5ba1('0x2b')]||_0x15aa94[_0x5ba1('0x25')][_0x5ba1('0x16')])},_0x8da511)};return client[_0x5ba1('0x2c')](_0x5ba1('0x2d'),_0x4a37c0);})[_0x5ba1('0xf')](function(_0x2fb0ab){if(_0x2fb0ab['error']){throw new Error(util['format'](_0x5ba1('0x2e'),_0x2fb0ab[_0x5ba1('0x2f')][_0x5ba1('0x30')]||JSON[_0x5ba1('0x31')](_0x2fb0ab[_0x5ba1('0x2f')])));}return!![];});}function handleError(_0x45354c,_0x2081ec,_0x52ef60){return _0x45354c[_0x5ba1('0x32')](_0x2081ec||0x1f4)[_0x5ba1('0x33')]({'message':_0x52ef60?_0x52ef60[_0x5ba1('0x30')]||_0x52ef60:''});}exports[_0x5ba1('0x34')]=function(_0x656bbf,_0x950596,_0x312e84){passport[_0x5ba1('0x1a')](_0x5ba1('0x35'),function(_0x538967,_0x13f3ad,_0x18f092){var _0xe30ae4=_0x538967||_0x18f092;if(_0xe30ae4){return handleError(_0x950596,0x191,_0xe30ae4);}if(!_0x13f3ad){return handleError(_0x950596,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x13b5d9={'payload':{'id':_0x13f3ad['id'],'role':_0x13f3ad[_0x5ba1('0x12')]},'options':{'expiresIn':0x15180}};return authService[_0x5ba1('0x36')](_0x13b5d9)['then'](function(_0x1ce93d){_0x950596[_0x5ba1('0x37')]({'id':_0x13f3ad['id'],'token':_0x1ce93d,'statusCall':'','isAlreadyLogged':_0x13f3ad[_0x5ba1('0x38')]});});}})(_0x656bbf,_0x950596,_0x312e84);};exports[_0x5ba1('0x39')]=function(_0x5ad487,_0x6b9ba6){if(!_0x5ad487[_0x5ba1('0x3a')][_0x5ba1('0x2b')]){return handleError(_0x6b9ba6,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x275adc=rs[_0x5ba1('0x3b')]();_0x5ad487[_0x5ba1('0x3a')][_0x5ba1('0x2b')]=_0x5ad487[_0x5ba1('0x3a')][_0x5ba1('0x2b')][_0x5ba1('0x3c')]()[_0x5ba1('0x3d')]();var _0x21c906;return db[_0x5ba1('0xc')][_0x5ba1('0xd')]({'where':{'id':0x1},'attributes':[_0x5ba1('0x1c'),_0x5ba1('0xe')],'raw':!![]})['then'](function(_0x14e972){_0x21c906=_0x14e972;return db[_0x5ba1('0x3e')][_0x5ba1('0x23')]({'where':{'email':_0x5ad487[_0x5ba1('0x3a')][_0x5ba1('0x2b')]}});})[_0x5ba1('0xf')](function(_0x2924e9){if(!_0x2924e9){throw new Error(_0x5ba1('0x3f'));}if(_0x2924e9[_0x5ba1('0x1b')]){throw new Error(_0x5ba1('0x40'));}if(_0x2924e9[_0x5ba1('0x1d')]){if(moment(_0x2924e9[_0x5ba1('0x13')])[_0x5ba1('0x1e')](_0x21c906[_0x5ba1('0xe')],_0x5ba1('0x20'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x2924e9['blocked']=![];_0x2924e9[_0x5ba1('0x13')]=null;}}_0x2924e9[_0x5ba1('0x41')]=_0x275adc;_0x2924e9[_0x5ba1('0x42')]=Date[_0x5ba1('0x43')]()+0x36ee80;return _0x2924e9['save']();})[_0x5ba1('0xf')](function(){return sendServiceMail({'to':_0x5ad487[_0x5ba1('0x3a')][_0x5ba1('0x2b')],'subject':_0x5ba1('0x44'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x5ba1('0x45')+'https://'+_0x5ad487[_0x5ba1('0x46')]['host']+_0x5ba1('0x47')+_0x275adc+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0x5ba1('0xf')](function(){_0x6b9ba6[_0x5ba1('0x32')](0xc8)[_0x5ba1('0x33')]({'message':'Reset\x20Email\x20sent!'});})['catch'](function(_0x1dab81){return handleError(_0x6b9ba6,0x1f4,_0x1dab81);});};exports[_0x5ba1('0x48')]=function(_0xf0ebfc,_0x5cced1){return db[_0x5ba1('0x3e')][_0x5ba1('0x23')]({'where':{'resetPasswordToken':_0xf0ebfc[_0x5ba1('0x49')]['token'],'resetPasswordExpires':{'$gt':Date['now']()}}})['then'](function(_0x45bc62){if(!_0x45bc62){throw new Error(_0x5ba1('0x4a'));}return db['Setting'][_0x5ba1('0xd')]({'attributes':['id',_0x5ba1('0x4b'),_0x5ba1('0x4c'),_0x5ba1('0x4d')]})[_0x5ba1('0xf')](function(_0x2ab41b){if(_0x2ab41b[_0x5ba1('0x4b')])authService[_0x5ba1('0x4e')](_0xf0ebfc[_0x5ba1('0x3a')][_0x5ba1('0x10')]);if(!_0x2ab41b[_0x5ba1('0x4c')]||!_0x45bc62[_0x5ba1('0x4f')])return _0x45bc62;authService[_0x5ba1('0x50')](_0xf0ebfc[_0x5ba1('0x3a')][_0x5ba1('0x10')],_0x45bc62[_0x5ba1('0x4f')],_0x2ab41b['passwordHistoryLimit']);return _0x45bc62;})[_0x5ba1('0xf')](function(){_0x45bc62['password']=_0xf0ebfc['body'][_0x5ba1('0x10')];_0x45bc62['resetPasswordToken']=null;_0x45bc62[_0x5ba1('0x42')]=null;return _0x45bc62['save']();});})[_0x5ba1('0xf')](function(){_0x5cced1[_0x5ba1('0x32')](0xc8)[_0x5ba1('0x33')]({'message':_0x5ba1('0x51')});})[_0x5ba1('0x52')](function(_0x160f60){return handleError(_0x5cced1,0x1f4,_0x160f60);});};passport[_0x5ba1('0x53')]('local-login',new LocalStrategy({'usernameField':_0x5ba1('0x18'),'passwordField':_0x5ba1('0x10')},function(_0x2cae84,_0x1aa431,_0x2a0254){return localAuthenticate(db[_0x5ba1('0x3e')],_0x2cae84,_0x1aa431,_0x2a0254);}));
\ No newline at end of file
index 310281e..a83c141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc5f=['/forgot','forgot','/reset/:token','reset','express','./authLocal.controller','login','post'];(function(_0x644a32,_0x4b2f5e){var _0x4911df=function(_0x69d7ba){while(--_0x69d7ba){_0x644a32['push'](_0x644a32['shift']());}};_0x4911df(++_0x4b2f5e);}(_0xcc5f,0xac));var _0xfcc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcc5f[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0xfcc5('0x0'));var router=express['Router']();var controller=require(_0xfcc5('0x1'));router['post']('/',controller[_0xfcc5('0x2')]);router[_0xfcc5('0x3')](_0xfcc5('0x4'),controller[_0xfcc5('0x5')]);router['post'](_0xfcc5('0x6'),controller[_0xfcc5('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0xfa96=['login','/forgot','forgot','/reset/:token','reset','exports','express','Router','./authLocal.controller','post'];(function(_0x4e1286,_0x1c02fd){var _0x2cd16c=function(_0x19c67d){while(--_0x19c67d){_0x4e1286['push'](_0x4e1286['shift']());}};_0x2cd16c(++_0x1c02fd);}(_0xfa96,0x18c));var _0x6fa9=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xfa96[_0x17b6e3];return _0x3906f3;};'use strict';var express=require(_0x6fa9('0x0'));var router=express[_0x6fa9('0x1')]();var controller=require(_0x6fa9('0x2'));router[_0x6fa9('0x3')]('/',controller[_0x6fa9('0x4')]);router[_0x6fa9('0x3')](_0x6fa9('0x5'),controller[_0x6fa9('0x6')]);router[_0x6fa9('0x3')](_0x6fa9('0x7'),controller[_0x6fa9('0x8')]);module[_0x6fa9('0x9')]=router;
\ No newline at end of file
index b28c052..f1149fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x792f=['STRING','BOOLEAN','exports'];(function(_0x1b4aa1,_0x4b06d7){var _0x4711e9=function(_0x47060b){while(--_0x47060b){_0x1b4aa1['push'](_0x1b4aa1['shift']());}};_0x4711e9(++_0x4b06d7);}(_0x792f,0x8f));var _0xf792=function(_0x57d370,_0x3ed0f6){_0x57d370=_0x57d370-0x0;var _0x550fd2=_0x792f[_0x57d370];return _0x550fd2;};'use strict';var Sequelize=require('sequelize');module[_0xf792('0x0')]={'name':{'type':Sequelize[_0xf792('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0xf792('0x1')]},'description':{'type':Sequelize[_0xf792('0x1')]},'status':{'type':Sequelize[_0xf792('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
+var _0x4ee9=['INTEGER','sequelize','STRING','BOOLEAN'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x4ee9,0x11d));var _0x94ee=function(_0xe61616,_0x1bd828){_0xe61616=_0xe61616-0x0;var _0x3fa7e0=_0x4ee9[_0xe61616];return _0x3fa7e0;};'use strict';var Sequelize=require(_0x94ee('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0x94ee('0x1')]},'description':{'type':Sequelize[_0x94ee('0x1')]},'status':{'type':Sequelize[_0x94ee('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x94ee('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 2b81ebe..c8f42a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9924=['send','rawAttributes','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','Automation','includeAll','include','findAll','catch','show','params','find','create','body','addConditions','Condition','ids','omit','getConditions','findOne','options','nolimit','addActions','getActions','Action','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name'];(function(_0x188741,_0x243906){var _0x5e9290=function(_0x90f20a){while(--_0x90f20a){_0x188741['push'](_0x188741['shift']());}};_0x5e9290(++_0x243906);}(_0x9924,0x122));var _0x4992=function(_0x2b669f,_0x535a34){_0x2b669f=_0x2b669f-0x0;var _0x48535e=_0x9924[_0x2b669f];return _0x48535e;};'use strict';var emlformat=require(_0x4992('0x0'));var rimraf=require(_0x4992('0x1'));var zipdir=require(_0x4992('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4992('0x3'));var moment=require(_0x4992('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4992('0x5'));var util=require(_0x4992('0x6'));var path=require(_0x4992('0x7'));var sox=require(_0x4992('0x8'));var csv=require(_0x4992('0x9'));var ejs=require(_0x4992('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4992('0xb'));var squel=require(_0x4992('0xc'));var crypto=require(_0x4992('0xd'));var jsforce=require(_0x4992('0xe'));var deskjs=require(_0x4992('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4992('0x10'));var authService=require(_0x4992('0x11'));var qs=require(_0x4992('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4992('0x13'));var logger=require(_0x4992('0x14'))(_0x4992('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4992('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21a3fa,_0x460323){_0x460323=_0x460323||0xcc;return function(_0x4ddaa5){if(_0x4ddaa5){return _0x21a3fa['sendStatus'](_0x460323);}return _0x21a3fa[_0x4992('0x17')](_0x460323)[_0x4992('0x18')]();};}function respondWithResult(_0xcfa2b6,_0x52ef12){_0x52ef12=_0x52ef12||0xc8;return function(_0x331a4a){if(_0x331a4a){return _0xcfa2b6[_0x4992('0x17')](_0x52ef12)[_0x4992('0x19')](_0x331a4a);}};}function respondWithFilteredResult(_0x376029,_0x14f9bc){return function(_0x54bd90){if(_0x54bd90){var _0x463e89=typeof _0x14f9bc[_0x4992('0x1a')]===_0x4992('0x1b')&&typeof _0x14f9bc['limit']==='undefined';var _0x1a4b61=_0x54bd90[_0x4992('0x1c')];var _0x56a5cf=_0x463e89?0x0:_0x14f9bc['offset'];var _0x250adb=_0x463e89?_0x54bd90[_0x4992('0x1c')]:_0x14f9bc['offset']+_0x14f9bc[_0x4992('0x1d')];var _0x1729bc;if(_0x250adb>=_0x1a4b61){_0x250adb=_0x1a4b61;_0x1729bc=0xc8;}else{_0x1729bc=0xce;}_0x376029[_0x4992('0x17')](_0x1729bc);return _0x376029[_0x4992('0x1e')](_0x4992('0x1f'),_0x56a5cf+'-'+_0x250adb+'/'+_0x1a4b61)['json'](_0x54bd90);}return null;};}function patchUpdates(_0x98e1e9){return function(_0x1e6ee7){try{jsonpatch[_0x4992('0x20')](_0x1e6ee7,_0x98e1e9,!![]);}catch(_0xae087e){return BPromise[_0x4992('0x21')](_0xae087e);}return _0x1e6ee7[_0x4992('0x22')]();};}function saveUpdates(_0x1d6c5b,_0xe84196){return function(_0x3c8344){if(_0x3c8344){return _0x3c8344[_0x4992('0x23')](_0x1d6c5b)[_0x4992('0x24')](function(_0x1da62b){return _0x1da62b;});}return null;};}function removeEntity(_0x2e93a4,_0x8298a1){return function(_0x2414fd){if(_0x2414fd){return _0x2414fd[_0x4992('0x25')]()[_0x4992('0x24')](function(){_0x2e93a4[_0x4992('0x17')](0xcc)[_0x4992('0x18')]();});}};}function handleEntityNotFound(_0x2c6ce1,_0x906cb6){return function(_0x4e63c4){if(!_0x4e63c4){_0x2c6ce1[_0x4992('0x26')](0x194);}return _0x4e63c4;};}function handleError(_0x229769,_0x3135f5){_0x3135f5=_0x3135f5||0x1f4;return function(_0x10d9e3){logger[_0x4992('0x27')](_0x10d9e3[_0x4992('0x28')]);if(_0x10d9e3[_0x4992('0x29')]){delete _0x10d9e3[_0x4992('0x29')];}_0x229769[_0x4992('0x17')](_0x3135f5)[_0x4992('0x2a')](_0x10d9e3);};}exports['index']=function(_0x3585d2,_0x157786){var _0x34869e={},_0x2fe366={},_0xc769c={'count':0x0,'rows':[]};var _0x3fb8d9=_['map'](db['Automation'][_0x4992('0x2b')],function(_0x3cf736){return{'name':_0x3cf736['fieldName'],'type':_0x3cf736['type']['key']};});_0x2fe366[_0x4992('0x2c')]=_[_0x4992('0x2d')](_0x3fb8d9,_0x4992('0x29'));_0x2fe366[_0x4992('0x2e')]=_[_0x4992('0x2f')](_0x3585d2[_0x4992('0x2e')]);_0x2fe366[_0x4992('0x30')]=_[_0x4992('0x31')](_0x2fe366['model'],_0x2fe366['query']);_0x34869e['attributes']=_[_0x4992('0x31')](_0x2fe366[_0x4992('0x2c')],qs['fields'](_0x3585d2['query'][_0x4992('0x32')]));_0x34869e[_0x4992('0x33')]=_0x34869e['attributes'][_0x4992('0x34')]?_0x34869e[_0x4992('0x33')]:_0x2fe366['model'];if(!_0x3585d2['query'][_0x4992('0x35')]('nolimit')){_0x34869e[_0x4992('0x1d')]=qs[_0x4992('0x1d')](_0x3585d2[_0x4992('0x2e')][_0x4992('0x1d')]);_0x34869e[_0x4992('0x1a')]=qs[_0x4992('0x1a')](_0x3585d2['query'][_0x4992('0x1a')]);}_0x34869e[_0x4992('0x36')]=qs['sort'](_0x3585d2[_0x4992('0x2e')][_0x4992('0x37')]);_0x34869e[_0x4992('0x38')]=qs[_0x4992('0x30')](_[_0x4992('0x39')](_0x3585d2['query'],_0x2fe366['filters']),_0x3fb8d9);if(_0x3585d2['query'][_0x4992('0x3a')]){_0x34869e[_0x4992('0x38')]=_[_0x4992('0x3b')](_0x34869e[_0x4992('0x38')],{'$or':_[_0x4992('0x2d')](_0x3fb8d9,function(_0x4a8220){if(_0x4a8220[_0x4992('0x3c')]!==_0x4992('0x3d')){var _0x159df8={};_0x159df8[_0x4a8220[_0x4992('0x29')]]={'$like':'%'+_0x3585d2[_0x4992('0x2e')][_0x4992('0x3a')]+'%'};return _0x159df8;}})});}_0x34869e=_[_0x4992('0x3b')]({},_0x34869e,_0x3585d2['options']);var _0x181966={'where':_0x34869e[_0x4992('0x38')]};return db[_0x4992('0x3e')]['count'](_0x181966)[_0x4992('0x24')](function(_0x2604e2){_0xc769c[_0x4992('0x1c')]=_0x2604e2;if(_0x3585d2[_0x4992('0x2e')][_0x4992('0x3f')]){_0x34869e[_0x4992('0x40')]=[{'all':!![]}];}return db[_0x4992('0x3e')][_0x4992('0x41')](_0x34869e);})[_0x4992('0x24')](function(_0x1bb82c){_0xc769c['rows']=_0x1bb82c;return _0xc769c;})[_0x4992('0x24')](respondWithFilteredResult(_0x157786,_0x34869e))[_0x4992('0x42')](handleError(_0x157786,null));};exports[_0x4992('0x43')]=function(_0x92cc42,_0x31d3f5){var _0x24aab0={'raw':![],'where':{'id':_0x92cc42[_0x4992('0x44')]['id']}},_0x1f7132={};_0x1f7132[_0x4992('0x2c')]=_[_0x4992('0x2f')](db['Automation'][_0x4992('0x2b')]);_0x1f7132['query']=_[_0x4992('0x2f')](_0x92cc42[_0x4992('0x2e')]);_0x1f7132[_0x4992('0x30')]=_['intersection'](_0x1f7132[_0x4992('0x2c')],_0x1f7132['query']);_0x24aab0['attributes']=_['intersection'](_0x1f7132[_0x4992('0x2c')],qs['fields'](_0x92cc42[_0x4992('0x2e')][_0x4992('0x32')]));_0x24aab0[_0x4992('0x33')]=_0x24aab0['attributes'][_0x4992('0x34')]?_0x24aab0[_0x4992('0x33')]:_0x1f7132[_0x4992('0x2c')];if(_0x92cc42['query']['includeAll']){_0x24aab0[_0x4992('0x40')]=[{'all':!![]}];}_0x24aab0=_[_0x4992('0x3b')]({},_0x24aab0,_0x92cc42['options']);return db[_0x4992('0x3e')][_0x4992('0x45')](_0x24aab0)[_0x4992('0x24')](handleEntityNotFound(_0x31d3f5,null))[_0x4992('0x24')](respondWithResult(_0x31d3f5,null))['catch'](handleError(_0x31d3f5,null));};exports['create']=function(_0x1cdaf7,_0x3ac6e6){return db[_0x4992('0x3e')][_0x4992('0x46')](_0x1cdaf7[_0x4992('0x47')],{})[_0x4992('0x24')](respondWithResult(_0x3ac6e6,0xc9))[_0x4992('0x42')](handleError(_0x3ac6e6,null));};exports[_0x4992('0x23')]=function(_0x54fc33,_0x4b76a7){if(_0x54fc33[_0x4992('0x47')]['id']){delete _0x54fc33[_0x4992('0x47')]['id'];}return db[_0x4992('0x3e')][_0x4992('0x45')]({'where':{'id':_0x54fc33[_0x4992('0x44')]['id']}})[_0x4992('0x24')](handleEntityNotFound(_0x4b76a7,null))['then'](saveUpdates(_0x54fc33['body'],null))['then'](respondWithResult(_0x4b76a7,null))['catch'](handleError(_0x4b76a7,null));};exports[_0x4992('0x25')]=function(_0x100dfe,_0x27e717){return db[_0x4992('0x3e')][_0x4992('0x45')]({'where':{'id':_0x100dfe[_0x4992('0x44')]['id']}})[_0x4992('0x24')](handleEntityNotFound(_0x27e717,null))[_0x4992('0x24')](removeEntity(_0x27e717,null))[_0x4992('0x42')](handleError(_0x27e717,null));};exports[_0x4992('0x48')]=function(_0x2010d5,_0x23db27,_0x48842c){return db[_0x4992('0x49')][_0x4992('0x45')]({'where':{'id':_0x2010d5['params']['id']}})['then'](handleEntityNotFound(_0x23db27,null))[_0x4992('0x24')](function(_0x589f3b){if(_0x589f3b){return _0x589f3b['addConditions'](_0x2010d5['body'][_0x4992('0x4a')],_[_0x4992('0x4b')](_0x2010d5[_0x4992('0x47')],['ids','id'])||{});}})['then'](respondWithResult(_0x23db27,null))['catch'](handleError(_0x23db27,null));};exports[_0x4992('0x4c')]=function(_0x3a804c,_0x52f6df,_0x3630b){var _0x1f37e6={};var _0x20c849={};var _0x1acc12;var _0x1b5874;return db[_0x4992('0x3e')][_0x4992('0x4d')]({'where':{'id':_0x3a804c[_0x4992('0x44')]['id']}})[_0x4992('0x24')](handleEntityNotFound(_0x52f6df,null))[_0x4992('0x24')](function(_0x2a08c1){if(_0x2a08c1){_0x1acc12=_0x2a08c1;_0x20c849['model']=_['keys'](db[_0x4992('0x49')][_0x4992('0x2b')]);_0x20c849[_0x4992('0x2e')]=_[_0x4992('0x2f')](_0x3a804c['query']);_0x20c849[_0x4992('0x30')]=_['intersection'](_0x20c849[_0x4992('0x2c')],_0x20c849[_0x4992('0x2e')]);_0x1f37e6[_0x4992('0x33')]=_[_0x4992('0x31')](_0x20c849[_0x4992('0x2c')],qs[_0x4992('0x32')](_0x3a804c['query'][_0x4992('0x32')]));_0x1f37e6['attributes']=_0x1f37e6[_0x4992('0x33')][_0x4992('0x34')]?_0x1f37e6[_0x4992('0x33')]:_0x20c849[_0x4992('0x2c')];_0x1f37e6[_0x4992('0x36')]=qs['sort'](_0x3a804c[_0x4992('0x2e')][_0x4992('0x37')]);_0x1f37e6['where']=qs[_0x4992('0x30')](_['pick'](_0x3a804c[_0x4992('0x2e')],_0x20c849[_0x4992('0x30')]));if(_0x3a804c[_0x4992('0x2e')][_0x4992('0x3a')]){_0x1f37e6['where']=_[_0x4992('0x3b')](_0x1f37e6[_0x4992('0x38')],{'$or':_[_0x4992('0x2d')](_0x1f37e6[_0x4992('0x33')],function(_0x10f639){var _0x20be75={};_0x20be75[_0x10f639]={'$like':'%'+_0x3a804c['query'][_0x4992('0x3a')]+'%'};return _0x20be75;})});}_0x1f37e6=_['merge']({},_0x1f37e6,_0x3a804c[_0x4992('0x4e')]);return _0x1acc12[_0x4992('0x4c')](_0x1f37e6);}})['then'](function(_0xee2485){if(_0xee2485){_0x1b5874=_0xee2485[_0x4992('0x34')];if(!_0x3a804c['query'][_0x4992('0x35')](_0x4992('0x4f'))){_0x1f37e6[_0x4992('0x1d')]=qs[_0x4992('0x1d')](_0x3a804c[_0x4992('0x2e')][_0x4992('0x1d')]);_0x1f37e6['offset']=qs[_0x4992('0x1a')](_0x3a804c[_0x4992('0x2e')][_0x4992('0x1a')]);}return _0x1acc12[_0x4992('0x4c')](_0x1f37e6);}})[_0x4992('0x24')](function(_0x1dabdd){if(_0x1dabdd){return _0x1dabdd?{'count':_0x1b5874,'rows':_0x1dabdd}:null;}})[_0x4992('0x24')](respondWithResult(_0x52f6df,null))[_0x4992('0x42')](handleError(_0x52f6df,null));};exports[_0x4992('0x50')]=function(_0x34f8a2,_0x86f7c1,_0x115e71){return db['Action'][_0x4992('0x45')]({'where':{'id':_0x34f8a2[_0x4992('0x44')]['id']}})[_0x4992('0x24')](handleEntityNotFound(_0x86f7c1,null))[_0x4992('0x24')](function(_0x20207e){if(_0x20207e){return _0x20207e[_0x4992('0x50')](_0x34f8a2['body'][_0x4992('0x4a')],_[_0x4992('0x4b')](_0x34f8a2['body'],[_0x4992('0x4a'),'id'])||{});}})['then'](respondWithResult(_0x86f7c1,null))[_0x4992('0x42')](handleError(_0x86f7c1,null));};exports[_0x4992('0x51')]=function(_0x258f12,_0x3cf863,_0x216e27){var _0xcc1902={};var _0xca2493={};var _0x4400f3;var _0x13919b;return db['Automation'][_0x4992('0x4d')]({'where':{'id':_0x258f12[_0x4992('0x44')]['id']}})['then'](handleEntityNotFound(_0x3cf863,null))[_0x4992('0x24')](function(_0x22e319){if(_0x22e319){_0x4400f3=_0x22e319;_0xca2493[_0x4992('0x2c')]=_[_0x4992('0x2f')](db[_0x4992('0x52')]['rawAttributes']);_0xca2493['query']=_['keys'](_0x258f12['query']);_0xca2493[_0x4992('0x30')]=_[_0x4992('0x31')](_0xca2493[_0x4992('0x2c')],_0xca2493[_0x4992('0x2e')]);_0xcc1902['attributes']=_[_0x4992('0x31')](_0xca2493[_0x4992('0x2c')],qs['fields'](_0x258f12['query']['fields']));_0xcc1902[_0x4992('0x33')]=_0xcc1902['attributes'][_0x4992('0x34')]?_0xcc1902[_0x4992('0x33')]:_0xca2493[_0x4992('0x2c')];_0xcc1902[_0x4992('0x36')]=qs['sort'](_0x258f12[_0x4992('0x2e')][_0x4992('0x37')]);_0xcc1902['where']=qs[_0x4992('0x30')](_[_0x4992('0x39')](_0x258f12[_0x4992('0x2e')],_0xca2493[_0x4992('0x30')]));if(_0x258f12['query']['filter']){_0xcc1902['where']=_[_0x4992('0x3b')](_0xcc1902['where'],{'$or':_['map'](_0xcc1902[_0x4992('0x33')],function(_0x3db22a){var _0x5e26fd={};_0x5e26fd[_0x3db22a]={'$like':'%'+_0x258f12[_0x4992('0x2e')]['filter']+'%'};return _0x5e26fd;})});}_0xcc1902=_[_0x4992('0x3b')]({},_0xcc1902,_0x258f12[_0x4992('0x4e')]);return _0x4400f3[_0x4992('0x51')](_0xcc1902);}})[_0x4992('0x24')](function(_0x402a91){if(_0x402a91){_0x13919b=_0x402a91[_0x4992('0x34')];if(!_0x258f12[_0x4992('0x2e')][_0x4992('0x35')](_0x4992('0x4f'))){_0xcc1902[_0x4992('0x1d')]=qs[_0x4992('0x1d')](_0x258f12['query'][_0x4992('0x1d')]);_0xcc1902['offset']=qs[_0x4992('0x1a')](_0x258f12[_0x4992('0x2e')][_0x4992('0x1a')]);}return _0x4400f3[_0x4992('0x51')](_0xcc1902);}})[_0x4992('0x24')](function(_0x19441a){if(_0x19441a){return _0x19441a?{'count':_0x13919b,'rows':_0x19441a}:null;}})[_0x4992('0x24')](respondWithResult(_0x3cf863,null))[_0x4992('0x42')](handleError(_0x3cf863,null));};
\ No newline at end of file
+var _0x7187=['destroy','addConditions','ids','getConditions','findOne','Condition','Action','addActions','omit','getActions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','name','send','index','map','Automation','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','find','create','body','params'];(function(_0x314af3,_0x55b640){var _0x14f133=function(_0x2810a9){while(--_0x2810a9){_0x314af3['push'](_0x314af3['shift']());}};_0x14f133(++_0x55b640);}(_0x7187,0x1b3));var _0x7718=function(_0x41dfe8,_0x4fba9f){_0x41dfe8=_0x41dfe8-0x0;var _0x2c163d=_0x7187[_0x41dfe8];return _0x2c163d;};'use strict';var emlformat=require(_0x7718('0x0'));var rimraf=require(_0x7718('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7718('0x2'));var rp=require(_0x7718('0x3'));var moment=require(_0x7718('0x4'));var BPromise=require(_0x7718('0x5'));var Mustache=require('mustache');var util=require(_0x7718('0x6'));var path=require('path');var sox=require(_0x7718('0x7'));var csv=require('to-csv');var ejs=require(_0x7718('0x8'));var fs=require('fs');var fs_extra=require(_0x7718('0x9'));var _=require(_0x7718('0xa'));var squel=require('squel');var crypto=require(_0x7718('0xb'));var jsforce=require(_0x7718('0xc'));var deskjs=require(_0x7718('0xd'));var toCsv=require(_0x7718('0xe'));var querystring=require(_0x7718('0xf'));var Papa=require(_0x7718('0x10'));var Redis=require(_0x7718('0x11'));var authService=require(_0x7718('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7718('0x13'));var logger=require('../../config/logger')(_0x7718('0x14'));var utils=require(_0x7718('0x15'));var config=require(_0x7718('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x7718('0x17'))['db'];function respondWithStatusCode(_0x2fcee0,_0x315365){_0x315365=_0x315365||0xcc;return function(_0x42ccfb){if(_0x42ccfb){return _0x2fcee0[_0x7718('0x18')](_0x315365);}return _0x2fcee0[_0x7718('0x19')](_0x315365)[_0x7718('0x1a')]();};}function respondWithResult(_0x17fa66,_0x580fd7){_0x580fd7=_0x580fd7||0xc8;return function(_0x44c0ac){if(_0x44c0ac){return _0x17fa66[_0x7718('0x19')](_0x580fd7)['json'](_0x44c0ac);}};}function respondWithFilteredResult(_0x5ee32e,_0x4a38f8){return function(_0x213154){if(_0x213154){var _0x7c6fe3=typeof _0x4a38f8[_0x7718('0x1b')]===_0x7718('0x1c')&&typeof _0x4a38f8[_0x7718('0x1d')]===_0x7718('0x1c');var _0x343f06=_0x213154[_0x7718('0x1e')];var _0x7594d=_0x7c6fe3?0x0:_0x4a38f8['offset'];var _0x4b4ca5=_0x7c6fe3?_0x213154[_0x7718('0x1e')]:_0x4a38f8[_0x7718('0x1b')]+_0x4a38f8['limit'];var _0x12e5a0;if(_0x4b4ca5>=_0x343f06){_0x4b4ca5=_0x343f06;_0x12e5a0=0xc8;}else{_0x12e5a0=0xce;}_0x5ee32e[_0x7718('0x19')](_0x12e5a0);return _0x5ee32e[_0x7718('0x1f')](_0x7718('0x20'),_0x7594d+'-'+_0x4b4ca5+'/'+_0x343f06)[_0x7718('0x21')](_0x213154);}return null;};}function patchUpdates(_0x1b1683){return function(_0x1d6e47){try{jsonpatch[_0x7718('0x22')](_0x1d6e47,_0x1b1683,!![]);}catch(_0xd834b0){return BPromise[_0x7718('0x23')](_0xd834b0);}return _0x1d6e47[_0x7718('0x24')]();};}function saveUpdates(_0x30fb78,_0x178e7a){return function(_0x476261){if(_0x476261){return _0x476261[_0x7718('0x25')](_0x30fb78)[_0x7718('0x26')](function(_0xf7eb1d){return _0xf7eb1d;});}return null;};}function removeEntity(_0x470056,_0x3c44f1){return function(_0x6539cf){if(_0x6539cf){return _0x6539cf['destroy']()[_0x7718('0x26')](function(){_0x470056[_0x7718('0x19')](0xcc)[_0x7718('0x1a')]();});}};}function handleEntityNotFound(_0x1f4ae0,_0x45b8f6){return function(_0x57ede9){if(!_0x57ede9){_0x1f4ae0['sendStatus'](0x194);}return _0x57ede9;};}function handleError(_0x3cd6db,_0x18275a){_0x18275a=_0x18275a||0x1f4;return function(_0x1f7cab){logger[_0x7718('0x27')](_0x1f7cab['stack']);if(_0x1f7cab['name']){delete _0x1f7cab[_0x7718('0x28')];}_0x3cd6db[_0x7718('0x19')](_0x18275a)[_0x7718('0x29')](_0x1f7cab);};}exports[_0x7718('0x2a')]=function(_0x3cdfcc,_0x3ecbf6){var _0x556477={},_0x4988f9={},_0x3990df={'count':0x0,'rows':[]};var _0x5c41b7=_[_0x7718('0x2b')](db[_0x7718('0x2c')][_0x7718('0x2d')],function(_0x346d04){return{'name':_0x346d04['fieldName'],'type':_0x346d04[_0x7718('0x2e')][_0x7718('0x2f')]};});_0x4988f9[_0x7718('0x30')]=_[_0x7718('0x2b')](_0x5c41b7,_0x7718('0x28'));_0x4988f9[_0x7718('0x31')]=_[_0x7718('0x32')](_0x3cdfcc[_0x7718('0x31')]);_0x4988f9[_0x7718('0x33')]=_['intersection'](_0x4988f9[_0x7718('0x30')],_0x4988f9[_0x7718('0x31')]);_0x556477[_0x7718('0x34')]=_[_0x7718('0x35')](_0x4988f9[_0x7718('0x30')],qs[_0x7718('0x36')](_0x3cdfcc[_0x7718('0x31')]['fields']));_0x556477['attributes']=_0x556477[_0x7718('0x34')][_0x7718('0x37')]?_0x556477[_0x7718('0x34')]:_0x4988f9['model'];if(!_0x3cdfcc[_0x7718('0x31')][_0x7718('0x38')](_0x7718('0x39'))){_0x556477[_0x7718('0x1d')]=qs['limit'](_0x3cdfcc[_0x7718('0x31')][_0x7718('0x1d')]);_0x556477[_0x7718('0x1b')]=qs[_0x7718('0x1b')](_0x3cdfcc[_0x7718('0x31')][_0x7718('0x1b')]);}_0x556477[_0x7718('0x3a')]=qs[_0x7718('0x3b')](_0x3cdfcc[_0x7718('0x31')][_0x7718('0x3b')]);_0x556477[_0x7718('0x3c')]=qs[_0x7718('0x33')](_[_0x7718('0x3d')](_0x3cdfcc[_0x7718('0x31')],_0x4988f9[_0x7718('0x33')]),_0x5c41b7);if(_0x3cdfcc[_0x7718('0x31')]['filter']){_0x556477[_0x7718('0x3c')]=_[_0x7718('0x3e')](_0x556477[_0x7718('0x3c')],{'$or':_[_0x7718('0x2b')](_0x5c41b7,function(_0x3efbfe){if(_0x3efbfe[_0x7718('0x2e')]!==_0x7718('0x3f')){var _0x1f0d22={};_0x1f0d22[_0x3efbfe[_0x7718('0x28')]]={'$like':'%'+_0x3cdfcc['query'][_0x7718('0x40')]+'%'};return _0x1f0d22;}})});}_0x556477=_[_0x7718('0x3e')]({},_0x556477,_0x3cdfcc[_0x7718('0x41')]);var _0x2a5780={'where':_0x556477[_0x7718('0x3c')]};return db['Automation'][_0x7718('0x1e')](_0x2a5780)[_0x7718('0x26')](function(_0x3edc33){_0x3990df[_0x7718('0x1e')]=_0x3edc33;if(_0x3cdfcc['query'][_0x7718('0x42')]){_0x556477[_0x7718('0x43')]=[{'all':!![]}];}return db['Automation'][_0x7718('0x44')](_0x556477);})[_0x7718('0x26')](function(_0x10eedb){_0x3990df['rows']=_0x10eedb;return _0x3990df;})['then'](respondWithFilteredResult(_0x3ecbf6,_0x556477))[_0x7718('0x45')](handleError(_0x3ecbf6,null));};exports[_0x7718('0x46')]=function(_0x376cd0,_0x535cd6){var _0x373726={'raw':![],'where':{'id':_0x376cd0['params']['id']}},_0x7ed9f2={};_0x7ed9f2[_0x7718('0x30')]=_[_0x7718('0x32')](db[_0x7718('0x2c')][_0x7718('0x2d')]);_0x7ed9f2[_0x7718('0x31')]=_[_0x7718('0x32')](_0x376cd0[_0x7718('0x31')]);_0x7ed9f2[_0x7718('0x33')]=_[_0x7718('0x35')](_0x7ed9f2[_0x7718('0x30')],_0x7ed9f2[_0x7718('0x31')]);_0x373726['attributes']=_[_0x7718('0x35')](_0x7ed9f2['model'],qs['fields'](_0x376cd0[_0x7718('0x31')]['fields']));_0x373726[_0x7718('0x34')]=_0x373726[_0x7718('0x34')]['length']?_0x373726[_0x7718('0x34')]:_0x7ed9f2[_0x7718('0x30')];if(_0x376cd0[_0x7718('0x31')]['includeAll']){_0x373726[_0x7718('0x43')]=[{'all':!![]}];}_0x373726=_[_0x7718('0x3e')]({},_0x373726,_0x376cd0[_0x7718('0x41')]);return db[_0x7718('0x2c')][_0x7718('0x47')](_0x373726)[_0x7718('0x26')](handleEntityNotFound(_0x535cd6,null))['then'](respondWithResult(_0x535cd6,null))[_0x7718('0x45')](handleError(_0x535cd6,null));};exports[_0x7718('0x48')]=function(_0x440a54,_0xe04ae1){return db['Automation']['create'](_0x440a54[_0x7718('0x49')],{})[_0x7718('0x26')](respondWithResult(_0xe04ae1,0xc9))['catch'](handleError(_0xe04ae1,null));};exports[_0x7718('0x25')]=function(_0x1f2642,_0x66a54a){if(_0x1f2642[_0x7718('0x49')]['id']){delete _0x1f2642[_0x7718('0x49')]['id'];}return db[_0x7718('0x2c')][_0x7718('0x47')]({'where':{'id':_0x1f2642[_0x7718('0x4a')]['id']}})[_0x7718('0x26')](handleEntityNotFound(_0x66a54a,null))['then'](saveUpdates(_0x1f2642[_0x7718('0x49')],null))[_0x7718('0x26')](respondWithResult(_0x66a54a,null))['catch'](handleError(_0x66a54a,null));};exports[_0x7718('0x4b')]=function(_0x3fd0f3,_0x249e0a){return db['Automation'][_0x7718('0x47')]({'where':{'id':_0x3fd0f3['params']['id']}})['then'](handleEntityNotFound(_0x249e0a,null))[_0x7718('0x26')](removeEntity(_0x249e0a,null))[_0x7718('0x45')](handleError(_0x249e0a,null));};exports[_0x7718('0x4c')]=function(_0xd68972,_0x50409c,_0x3314fc){return db['Condition'][_0x7718('0x47')]({'where':{'id':_0xd68972['params']['id']}})[_0x7718('0x26')](handleEntityNotFound(_0x50409c,null))[_0x7718('0x26')](function(_0x43ce8d){if(_0x43ce8d){return _0x43ce8d[_0x7718('0x4c')](_0xd68972[_0x7718('0x49')][_0x7718('0x4d')],_['omit'](_0xd68972[_0x7718('0x49')],[_0x7718('0x4d'),'id'])||{});}})[_0x7718('0x26')](respondWithResult(_0x50409c,null))[_0x7718('0x45')](handleError(_0x50409c,null));};exports[_0x7718('0x4e')]=function(_0x4745e4,_0x5c2377,_0x3e2902){var _0xa624b8={};var _0x2aee78={};var _0x7b2298;var _0x1a9db5;return db['Automation'][_0x7718('0x4f')]({'where':{'id':_0x4745e4['params']['id']}})[_0x7718('0x26')](handleEntityNotFound(_0x5c2377,null))[_0x7718('0x26')](function(_0x31ad1c){if(_0x31ad1c){_0x7b2298=_0x31ad1c;_0x2aee78[_0x7718('0x30')]=_[_0x7718('0x32')](db[_0x7718('0x50')][_0x7718('0x2d')]);_0x2aee78[_0x7718('0x31')]=_[_0x7718('0x32')](_0x4745e4['query']);_0x2aee78[_0x7718('0x33')]=_[_0x7718('0x35')](_0x2aee78['model'],_0x2aee78[_0x7718('0x31')]);_0xa624b8[_0x7718('0x34')]=_[_0x7718('0x35')](_0x2aee78['model'],qs[_0x7718('0x36')](_0x4745e4[_0x7718('0x31')][_0x7718('0x36')]));_0xa624b8['attributes']=_0xa624b8[_0x7718('0x34')][_0x7718('0x37')]?_0xa624b8[_0x7718('0x34')]:_0x2aee78[_0x7718('0x30')];_0xa624b8[_0x7718('0x3a')]=qs[_0x7718('0x3b')](_0x4745e4[_0x7718('0x31')][_0x7718('0x3b')]);_0xa624b8[_0x7718('0x3c')]=qs[_0x7718('0x33')](_['pick'](_0x4745e4['query'],_0x2aee78[_0x7718('0x33')]));if(_0x4745e4[_0x7718('0x31')][_0x7718('0x40')]){_0xa624b8[_0x7718('0x3c')]=_[_0x7718('0x3e')](_0xa624b8[_0x7718('0x3c')],{'$or':_[_0x7718('0x2b')](_0xa624b8[_0x7718('0x34')],function(_0x1ea7b1){var _0x25a916={};_0x25a916[_0x1ea7b1]={'$like':'%'+_0x4745e4['query'][_0x7718('0x40')]+'%'};return _0x25a916;})});}_0xa624b8=_[_0x7718('0x3e')]({},_0xa624b8,_0x4745e4[_0x7718('0x41')]);return _0x7b2298[_0x7718('0x4e')](_0xa624b8);}})[_0x7718('0x26')](function(_0x44f31a){if(_0x44f31a){_0x1a9db5=_0x44f31a[_0x7718('0x37')];if(!_0x4745e4[_0x7718('0x31')]['hasOwnProperty'](_0x7718('0x39'))){_0xa624b8[_0x7718('0x1d')]=qs['limit'](_0x4745e4['query']['limit']);_0xa624b8[_0x7718('0x1b')]=qs[_0x7718('0x1b')](_0x4745e4[_0x7718('0x31')][_0x7718('0x1b')]);}return _0x7b2298['getConditions'](_0xa624b8);}})[_0x7718('0x26')](function(_0x124d0e){if(_0x124d0e){return _0x124d0e?{'count':_0x1a9db5,'rows':_0x124d0e}:null;}})[_0x7718('0x26')](respondWithResult(_0x5c2377,null))[_0x7718('0x45')](handleError(_0x5c2377,null));};exports['addActions']=function(_0x5bfb08,_0x1940d8,_0x104e91){return db[_0x7718('0x51')][_0x7718('0x47')]({'where':{'id':_0x5bfb08['params']['id']}})[_0x7718('0x26')](handleEntityNotFound(_0x1940d8,null))[_0x7718('0x26')](function(_0x27353c){if(_0x27353c){return _0x27353c[_0x7718('0x52')](_0x5bfb08[_0x7718('0x49')][_0x7718('0x4d')],_[_0x7718('0x53')](_0x5bfb08[_0x7718('0x49')],['ids','id'])||{});}})[_0x7718('0x26')](respondWithResult(_0x1940d8,null))[_0x7718('0x45')](handleError(_0x1940d8,null));};exports[_0x7718('0x54')]=function(_0x4c4435,_0x4559d7,_0x38960a){var _0x448705={};var _0x1183c3={};var _0x58a84f;var _0x1971e7;return db[_0x7718('0x2c')][_0x7718('0x4f')]({'where':{'id':_0x4c4435[_0x7718('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4559d7,null))['then'](function(_0x48ca1f){if(_0x48ca1f){_0x58a84f=_0x48ca1f;_0x1183c3[_0x7718('0x30')]=_[_0x7718('0x32')](db['Action'][_0x7718('0x2d')]);_0x1183c3[_0x7718('0x31')]=_['keys'](_0x4c4435['query']);_0x1183c3[_0x7718('0x33')]=_[_0x7718('0x35')](_0x1183c3['model'],_0x1183c3[_0x7718('0x31')]);_0x448705[_0x7718('0x34')]=_[_0x7718('0x35')](_0x1183c3[_0x7718('0x30')],qs[_0x7718('0x36')](_0x4c4435[_0x7718('0x31')][_0x7718('0x36')]));_0x448705[_0x7718('0x34')]=_0x448705[_0x7718('0x34')]['length']?_0x448705['attributes']:_0x1183c3[_0x7718('0x30')];_0x448705[_0x7718('0x3a')]=qs[_0x7718('0x3b')](_0x4c4435[_0x7718('0x31')]['sort']);_0x448705[_0x7718('0x3c')]=qs[_0x7718('0x33')](_[_0x7718('0x3d')](_0x4c4435[_0x7718('0x31')],_0x1183c3[_0x7718('0x33')]));if(_0x4c4435['query'][_0x7718('0x40')]){_0x448705[_0x7718('0x3c')]=_[_0x7718('0x3e')](_0x448705[_0x7718('0x3c')],{'$or':_[_0x7718('0x2b')](_0x448705[_0x7718('0x34')],function(_0x3d003b){var _0x38ae80={};_0x38ae80[_0x3d003b]={'$like':'%'+_0x4c4435[_0x7718('0x31')][_0x7718('0x40')]+'%'};return _0x38ae80;})});}_0x448705=_[_0x7718('0x3e')]({},_0x448705,_0x4c4435[_0x7718('0x41')]);return _0x58a84f[_0x7718('0x54')](_0x448705);}})[_0x7718('0x26')](function(_0x5bb142){if(_0x5bb142){_0x1971e7=_0x5bb142['length'];if(!_0x4c4435['query'][_0x7718('0x38')](_0x7718('0x39'))){_0x448705[_0x7718('0x1d')]=qs[_0x7718('0x1d')](_0x4c4435['query'][_0x7718('0x1d')]);_0x448705[_0x7718('0x1b')]=qs[_0x7718('0x1b')](_0x4c4435[_0x7718('0x31')]['offset']);}return _0x58a84f['getActions'](_0x448705);}})['then'](function(_0x3f69c8){if(_0x3f69c8){return _0x3f69c8?{'count':_0x1971e7,'rows':_0x3f69c8}:null;}})['then'](respondWithResult(_0x4559d7,null))[_0x7718('0x45')](handleError(_0x4559d7,null));};
\ No newline at end of file
index c6a7be9..66d1cdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f3e=['request-promise','path','rimraf','./automation.attributes','exports','tools_automations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x211f04,_0x828280){var _0x1eab0d=function(_0x36e9a3){while(--_0x36e9a3){_0x211f04['push'](_0x211f04['shift']());}};_0x1eab0d(++_0x828280);}(_0x1f3e,0x17a));var _0xe1f3=function(_0x4c6e66,_0x3cb4f4){_0x4c6e66=_0x4c6e66-0x0;var _0xe9084a=_0x1f3e[_0x4c6e66];return _0xe9084a;};'use strict';var _=require(_0xe1f3('0x0'));var util=require(_0xe1f3('0x1'));var logger=require(_0xe1f3('0x2'))(_0xe1f3('0x3'));var moment=require(_0xe1f3('0x4'));var BPromise=require(_0xe1f3('0x5'));var rp=require(_0xe1f3('0x6'));var fs=require('fs');var path=require(_0xe1f3('0x7'));var rimraf=require(_0xe1f3('0x8'));var config=require('../../config/environment');var attributes=require(_0xe1f3('0x9'));module[_0xe1f3('0xa')]=function(_0x4e40d0,_0x1932bf){return _0x4e40d0['define']('Automation',attributes,{'tableName':_0xe1f3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe57d=['util','api','moment','bluebird','path','rimraf','../../config/environment','./automation.attributes','exports','define','Automation','tools_automations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe57d,0x18c));var _0xde57=function(_0x350086,_0x4c6fb6){_0x350086=_0x350086-0x0;var _0x29e709=_0xe57d[_0x350086];return _0x29e709;};'use strict';var _=require('lodash');var util=require(_0xde57('0x0'));var logger=require('../../config/logger')(_0xde57('0x1'));var moment=require(_0xde57('0x2'));var BPromise=require(_0xde57('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xde57('0x4'));var rimraf=require(_0xde57('0x5'));var config=require(_0xde57('0x6'));var attributes=require(_0xde57('0x7'));module[_0xde57('0x8')]=function(_0x5e0a42,_0x257b7b){return _0x5e0a42[_0xde57('0x9')](_0xde57('0xa'),attributes,{'tableName':_0xde57('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36ae337..0c0bebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x110f=['result','catch','lodash','util','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x110f,0x1e6));var _0xf110=function(_0x557fd8,_0x2bbe1d){_0x557fd8=_0x557fd8-0x0;var _0x4d96c9=_0x110f[_0x557fd8];return _0x4d96c9;};'use strict';var _=require(_0xf110('0x0'));var util=require(_0xf110('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf110('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xf110('0x3'));var logger=require(_0xf110('0x4'))(_0xf110('0x5'));var config=require('../../config/environment');var jayson=require(_0xf110('0x6'));var client=jayson[_0xf110('0x7')][_0xf110('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4dcb19,_0x1a1a3b,_0xadc2a3){return new BPromise(function(_0x194a16,_0x57593b){return client[_0xf110('0x9')](_0x4dcb19,_0xadc2a3)[_0xf110('0xa')](function(_0x11c28f){logger['info'](_0xf110('0xb'),_0x1a1a3b,_0xf110('0xc'));logger[_0xf110('0xd')](_0xf110('0xe'),_0x1a1a3b,'request\x20sent',JSON[_0xf110('0xf')](_0x11c28f));if(_0x11c28f[_0xf110('0x10')]){if(_0x11c28f['error'][_0xf110('0x11')]===0x1f4){logger[_0xf110('0x10')](_0xf110('0xb'),_0x1a1a3b,_0x11c28f[_0xf110('0x10')]['message']);return _0x57593b(_0x11c28f[_0xf110('0x10')][_0xf110('0x12')]);}logger[_0xf110('0x10')]('Automation,\x20%s,\x20%s',_0x1a1a3b,_0x11c28f[_0xf110('0x10')][_0xf110('0x12')]);return _0x194a16(_0x11c28f['error'][_0xf110('0x12')]);}else{logger[_0xf110('0x13')](_0xf110('0xb'),_0x1a1a3b,_0xf110('0xc'));_0x194a16(_0x11c28f[_0xf110('0x14')][_0xf110('0x12')]);}})[_0xf110('0x15')](function(_0x44ba58){logger[_0xf110('0x10')]('Automation,\x20%s,\x20%s',_0x1a1a3b,_0x44ba58);_0x57593b(_0x44ba58);});});}
\ No newline at end of file
+var _0xc7da=['request','then','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc7da,0xf2));var _0xac7d=function(_0x2c5bc1,_0x32f0b8){_0x2c5bc1=_0x2c5bc1-0x0;var _0x121145=_0xc7da[_0x2c5bc1];return _0x121145;};'use strict';var _=require(_0xac7d('0x0'));var util=require(_0xac7d('0x1'));var moment=require(_0xac7d('0x2'));var BPromise=require('bluebird');var rs=require(_0xac7d('0x3'));var fs=require('fs');var Redis=require(_0xac7d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xac7d('0x5'));var logger=require(_0xac7d('0x6'))('rpc');var config=require(_0xac7d('0x7'));var jayson=require(_0xac7d('0x8'));var client=jayson[_0xac7d('0x9')][_0xac7d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x268265,_0x153ce5,_0x48ca59){return new BPromise(function(_0x44eb2b,_0x457e2d){return client[_0xac7d('0xb')](_0x268265,_0x48ca59)[_0xac7d('0xc')](function(_0x217811){logger[_0xac7d('0xd')](_0xac7d('0xe'),_0x153ce5,'request\x20sent');logger[_0xac7d('0xf')](_0xac7d('0x10'),_0x153ce5,_0xac7d('0x11'),JSON['stringify'](_0x217811));if(_0x217811[_0xac7d('0x12')]){if(_0x217811[_0xac7d('0x12')][_0xac7d('0x13')]===0x1f4){logger[_0xac7d('0x12')]('Automation,\x20%s,\x20%s',_0x153ce5,_0x217811[_0xac7d('0x12')][_0xac7d('0x14')]);return _0x457e2d(_0x217811[_0xac7d('0x12')][_0xac7d('0x14')]);}logger[_0xac7d('0x12')]('Automation,\x20%s,\x20%s',_0x153ce5,_0x217811[_0xac7d('0x12')]['message']);return _0x44eb2b(_0x217811[_0xac7d('0x12')][_0xac7d('0x14')]);}else{logger[_0xac7d('0xd')](_0xac7d('0xe'),_0x153ce5,'request\x20sent');_0x44eb2b(_0x217811[_0xac7d('0x15')][_0xac7d('0x14')]);}})[_0xac7d('0x16')](function(_0x12813a){logger[_0xac7d('0x12')]('Automation,\x20%s,\x20%s',_0x153ce5,_0x12813a);_0x457e2d(_0x12813a);});});}
\ No newline at end of file
index 86c8517..d2a020c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb4b=['addActions','put','/:id','update','destroy','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','show','/:id/conditions','getActions','post','addConditions'];(function(_0x1defb7,_0xdcac88){var _0x148e3c=function(_0x58aa7f){while(--_0x58aa7f){_0x1defb7['push'](_0x1defb7['shift']());}};_0x148e3c(++_0xdcac88);}(_0xdb4b,0xd7));var _0xbdb4=function(_0x1fcb89,_0x97e587){_0x1fcb89=_0x1fcb89-0x0;var _0x2a1e82=_0xdb4b[_0x1fcb89];return _0x2a1e82;};'use strict';var multer=require('multer');var util=require(_0xbdb4('0x0'));var path=require('path');var timeout=require(_0xbdb4('0x1'));var express=require(_0xbdb4('0x2'));var router=express[_0xbdb4('0x3')]();var fs_extra=require(_0xbdb4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbdb4('0x5'));var config=require(_0xbdb4('0x6'));var controller=require(_0xbdb4('0x7'));router[_0xbdb4('0x8')]('/',auth[_0xbdb4('0x9')](),controller[_0xbdb4('0xa')]);router[_0xbdb4('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xbdb4('0xb')]);router[_0xbdb4('0x8')](_0xbdb4('0xc'),auth[_0xbdb4('0x9')](),controller['getConditions']);router[_0xbdb4('0x8')]('/:id/actions',auth[_0xbdb4('0x9')](),controller[_0xbdb4('0xd')]);router[_0xbdb4('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xbdb4('0xe')](_0xbdb4('0xc'),auth[_0xbdb4('0x9')](),controller[_0xbdb4('0xf')]);router['post']('/:id/actions',auth[_0xbdb4('0x9')](),controller[_0xbdb4('0x10')]);router[_0xbdb4('0x11')](_0xbdb4('0x12'),auth[_0xbdb4('0x9')](),controller[_0xbdb4('0x13')]);router['delete']('/:id',auth[_0xbdb4('0x9')](),controller[_0xbdb4('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xfd2f=['multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./automation.controller','get','/:id','show','isAuthenticated','getConditions','/:id/actions','getActions','post','/:id/conditions','addConditions','update','delete','destroy','exports'];(function(_0x4256aa,_0x1c73a3){var _0x53de4c=function(_0xe9f2eb){while(--_0xe9f2eb){_0x4256aa['push'](_0x4256aa['shift']());}};_0x53de4c(++_0x1c73a3);}(_0xfd2f,0x14a));var _0xffd2=function(_0x1b33d9,_0x18de98){_0x1b33d9=_0x1b33d9-0x0;var _0x142ee5=_0xfd2f[_0x1b33d9];return _0x142ee5;};'use strict';var multer=require(_0xffd2('0x0'));var util=require(_0xffd2('0x1'));var path=require(_0xffd2('0x2'));var timeout=require('connect-timeout');var express=require(_0xffd2('0x3'));var router=express['Router']();var fs_extra=require(_0xffd2('0x4'));var auth=require(_0xffd2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xffd2('0x6'));var controller=require(_0xffd2('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xffd2('0x8')](_0xffd2('0x9'),auth['isAuthenticated'](),controller[_0xffd2('0xa')]);router['get']('/:id/conditions',auth[_0xffd2('0xb')](),controller[_0xffd2('0xc')]);router[_0xffd2('0x8')](_0xffd2('0xd'),auth['isAuthenticated'](),controller[_0xffd2('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xffd2('0xf')](_0xffd2('0x10'),auth[_0xffd2('0xb')](),controller[_0xffd2('0x11')]);router[_0xffd2('0xf')](_0xffd2('0xd'),auth[_0xffd2('0xb')](),controller['addActions']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xffd2('0x12')]);router[_0xffd2('0x13')]('/:id',auth[_0xffd2('0xb')](),controller[_0xffd2('0x14')]);module[_0xffd2('0x15')]=router;
\ No newline at end of file
index 4bc95e6..759091f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb2c=['Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','Max\x20200\x20calls.','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#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)','DESC'];(function(_0x2697d9,_0x26806a){var _0x25e6ae=function(_0x4ff250){while(--_0x4ff250){_0x2697d9['push'](_0x2697d9['shift']());}};_0x25e6ae(++_0x26806a);}(_0xcb2c,0x16b));var _0xccb2=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xcb2c[_0x139a3c];return _0x2b375b;};'use strict';var Sequelize=require(_0xccb2('0x0'));module['exports']={'name':{'type':Sequelize[_0xccb2('0x1')],'unique':_0xccb2('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xccb2('0x3')](_0xccb2('0x4')),'allowNull':![],'defaultValue':_0xccb2('0x4')},'description':{'type':Sequelize[_0xccb2('0x1')]},'active':{'type':Sequelize[_0xccb2('0x5')],'defaultValue':0x0,'comment':_0xccb2('0x6')},'limitCalls':{'type':Sequelize[_0xccb2('0x7')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xccb2('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0xccb2('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xccb2('0x7')](0x3)[_0xccb2('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xccb2('0xa')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xccb2('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xccb2('0x7')](0x5)[_0xccb2('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0xccb2('0x7')](0x3)[_0xccb2('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xccb2('0xb')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xccb2('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xccb2('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xccb2('0x7')](0x3)[_0xccb2('0x9')],'defaultValue':0x3,'comment':_0xccb2('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xccb2('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xccb2('0xe')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xccb2('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xccb2('0xf')},'dialTimezone':{'type':Sequelize[_0xccb2('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xccb2('0x1')],'defaultValue':_0xccb2('0x10')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xccb2('0x11'),_0xccb2('0x12'),_0xccb2('0x13')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xccb2('0x5')],'defaultValue':0x0,'comment':_0xccb2('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0xccb2('0x7')](0x9)[_0xccb2('0x9')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xccb2('0x7')](0x9)[_0xccb2('0x9')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xccb2('0x7')](0x9)[_0xccb2('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xccb2('0x15')},'dialAMDMinWordLength':{'type':Sequelize[_0xccb2('0x7')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xccb2('0x16')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xccb2('0x7')](0x9)[_0xccb2('0x9')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xccb2('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xccb2('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xccb2('0x7')](0x5)[_0xccb2('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xccb2('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xccb2('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0xccb2('0x3')]('DESC','ASC'),'defaultValue':_0xccb2('0x1a')},'dialPrefix':{'type':Sequelize[_0xccb2('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xccb2('0x7')](0x3)[_0xccb2('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xccb2('0x1b')},'dialCutDigit':{'type':Sequelize[_0xccb2('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xccb2('0x1c')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xccb2('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xccb2('0x1d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xccb2('0x7')](0x5)[_0xccb2('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xccb2('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0xccb2('0x7')](0x3)[_0xccb2('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xccb2('0x1f')},'dialDropRetryFrequency':{'type':Sequelize[_0xccb2('0x7')](0x5)[_0xccb2('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xccb2('0x20')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xccb2('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xccb2('0x21')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xccb2('0x7')](0x5)[_0xccb2('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xccb2('0x22')},'dialMachineMaxRetry':{'type':Sequelize[_0xccb2('0x7')](0x3)[_0xccb2('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xccb2('0x23')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xccb2('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xccb2('0x24')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xccb2('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xccb2('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xccb2('0x7')](0x5)[_0xccb2('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xccb2('0x26')}};
\ No newline at end of file
+var _0x6496=['#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x2bdf6a,_0x1c924b){var _0x1726c7=function(_0x31493f){while(--_0x31493f){_0x2bdf6a['push'](_0x2bdf6a['shift']());}};_0x1726c7(++_0x1c924b);}(_0x6496,0xa3));var _0x6649=function(_0x5cb71a,_0x263bdf){_0x5cb71a=_0x5cb71a-0x0;var _0x3f380f=_0x6496[_0x5cb71a];return _0x3f380f;};'use strict';var Sequelize=require('sequelize');module[_0x6649('0x0')]={'name':{'type':Sequelize[_0x6649('0x1')],'unique':_0x6649('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x6649('0x3')](_0x6649('0x4')),'allowNull':![],'defaultValue':_0x6649('0x4')},'description':{'type':Sequelize[_0x6649('0x1')]},'active':{'type':Sequelize[_0x6649('0x5')],'defaultValue':0x0,'comment':_0x6649('0x6')},'limitCalls':{'type':Sequelize[_0x6649('0x7')](0x4)[_0x6649('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x6649('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0x6649('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x6649('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x6649('0x7')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x6649('0x7')](0x3)[_0x6649('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6649('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x6649('0x7')](0x5)[_0x6649('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6649('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0x6649('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6649('0xc')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6649('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x6649('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x6649('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x6649('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6649('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0x6649('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x6649('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x6649('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0x6649('0x3')](_0x6649('0x11'),_0x6649('0x12'),_0x6649('0x13')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x6649('0x14')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x6649('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x6649('0x15')},'dialAMDGreeting':{'type':Sequelize[_0x6649('0x7')](0x9)[_0x6649('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x6649('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x6649('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x6649('0x7')](0x9)[_0x6649('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x6649('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x6649('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x6649('0x7')](0x9)[_0x6649('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x6649('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x6649('0x7')](0x9)[_0x6649('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x6649('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x6649('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x6649('0x3')](_0x6649('0x19'),_0x6649('0x1a')),'defaultValue':_0x6649('0x19')},'dialPrefix':{'type':Sequelize[_0x6649('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x6649('0x7')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x6649('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6649('0x1b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6649('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6649('0x1c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6649('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x6649('0x7')](0x3)[_0x6649('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6649('0x1d')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6649('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x6649('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6649('0x1e')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x6649('0x7')](0x5)[_0x6649('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6649('0x1f')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6649('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6649('0x20')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6649('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6649('0x21')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6649('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6649('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6649('0x22')}};
\ No newline at end of file
index 10c141a..65d4e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7426=['h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','end','error','stack','name','send','index','map','Campaign','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','autoAssociation','CmHopper','order','CampaignId','rows','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','findOne','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','NOW()','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','cm_hopper_additional_phones','cmHopperId','h.id','ci.item','ci.OrderBY','OrderBy','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId'];(function(_0x2696f1,_0x7de5e4){var _0x3e5706=function(_0xfcb99e){while(--_0xfcb99e){_0x2696f1['push'](_0x2696f1['shift']());}};_0x3e5706(++_0x7de5e4);}(_0x7426,0x1df));var _0x6742=function(_0x1cf161,_0x37cb11){_0x1cf161=_0x1cf161-0x0;var _0x36a4e8=_0x7426[_0x1cf161];return _0x36a4e8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6742('0x0'));var zipdir=require(_0x6742('0x1'));var jsonpatch=require(_0x6742('0x2'));var rp=require(_0x6742('0x3'));var moment=require(_0x6742('0x4'));var BPromise=require(_0x6742('0x5'));var Mustache=require(_0x6742('0x6'));var util=require(_0x6742('0x7'));var path=require(_0x6742('0x8'));var sox=require('sox');var csv=require(_0x6742('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6742('0xa'));var _=require(_0x6742('0xb'));var squel=require(_0x6742('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6742('0xd'));var toCsv=require(_0x6742('0x9'));var querystring=require(_0x6742('0xe'));var Papa=require(_0x6742('0xf'));var Redis=require(_0x6742('0x10'));var authService=require(_0x6742('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x6742('0x12'));var hardwareService=require(_0x6742('0x13'));var logger=require('../../config/logger')(_0x6742('0x14'));var utils=require(_0x6742('0x15'));var config=require(_0x6742('0x16'));var licenseUtil=require(_0x6742('0x17'));var db=require(_0x6742('0x18'))['db'];function respondWithStatusCode(_0x457d35,_0x5ba959){_0x5ba959=_0x5ba959||0xcc;return function(_0x5914de){if(_0x5914de){return _0x457d35[_0x6742('0x19')](_0x5ba959);}return _0x457d35[_0x6742('0x1a')](_0x5ba959)['end']();};}function respondWithResult(_0x38dd08,_0xa15e15){_0xa15e15=_0xa15e15||0xc8;return function(_0xaf4cdc){if(_0xaf4cdc){return _0x38dd08[_0x6742('0x1a')](_0xa15e15)[_0x6742('0x1b')](_0xaf4cdc);}};}function respondWithFilteredResult(_0x33b742,_0x54b6a9){return function(_0x3d89e2){if(_0x3d89e2){var _0x21d644=typeof _0x54b6a9[_0x6742('0x1c')]==='undefined'&&typeof _0x54b6a9[_0x6742('0x1d')]===_0x6742('0x1e');var _0x1d652a=_0x3d89e2['count'];var _0x4ca249=_0x21d644?0x0:_0x54b6a9[_0x6742('0x1c')];var _0x1e0ed5=_0x21d644?_0x3d89e2[_0x6742('0x1f')]:_0x54b6a9[_0x6742('0x1c')]+_0x54b6a9[_0x6742('0x1d')];var _0x33e882;if(_0x1e0ed5>=_0x1d652a){_0x1e0ed5=_0x1d652a;_0x33e882=0xc8;}else{_0x33e882=0xce;}_0x33b742[_0x6742('0x1a')](_0x33e882);return _0x33b742[_0x6742('0x20')](_0x6742('0x21'),_0x4ca249+'-'+_0x1e0ed5+'/'+_0x1d652a)[_0x6742('0x1b')](_0x3d89e2);}return null;};}function patchUpdates(_0x3b3547){return function(_0x1e815f){try{jsonpatch[_0x6742('0x22')](_0x1e815f,_0x3b3547,!![]);}catch(_0x1a64de){return BPromise[_0x6742('0x23')](_0x1a64de);}return _0x1e815f[_0x6742('0x24')]();};}function saveUpdates(_0x760a75,_0x61ccb7){return function(_0x3b6a44){if(_0x3b6a44){return _0x3b6a44[_0x6742('0x25')](_0x760a75)[_0x6742('0x26')](function(_0x48a7d3){return _0x48a7d3;});}return null;};}function removeEntity(_0x483748,_0xccf9f9){return function(_0x40accd){if(_0x40accd){return _0x40accd[_0x6742('0x27')]()[_0x6742('0x26')](function(){var _0x1741d5=_0x40accd[_0x6742('0x28')]({'plain':!![]});var _0x24ffab=_0x6742('0x29');return db[_0x6742('0x2a')][_0x6742('0x27')]({'where':{'type':_0x24ffab,'resourceId':_0x1741d5['id']}})[_0x6742('0x26')](function(){return _0x40accd;});})[_0x6742('0x26')](function(){_0x483748[_0x6742('0x1a')](0xcc)[_0x6742('0x2b')]();});}};}function handleEntityNotFound(_0x414cc5,_0x307acd){return function(_0x839df4){if(!_0x839df4){_0x414cc5[_0x6742('0x19')](0x194);}return _0x839df4;};}function handleError(_0x370a7a,_0x57ae48){_0x57ae48=_0x57ae48||0x1f4;return function(_0x1bc44b){logger[_0x6742('0x2c')](_0x1bc44b[_0x6742('0x2d')]);if(_0x1bc44b[_0x6742('0x2e')]){delete _0x1bc44b[_0x6742('0x2e')];}_0x370a7a[_0x6742('0x1a')](_0x57ae48)[_0x6742('0x2f')](_0x1bc44b);};}exports[_0x6742('0x30')]=function(_0x5ca7ba,_0x4b1882){var _0x4770d0={},_0x2480e4={},_0x2cafcc={'count':0x0,'rows':[]};var _0x1d9da9=_[_0x6742('0x31')](db[_0x6742('0x32')][_0x6742('0x33')],function(_0x423a2d){return{'name':_0x423a2d[_0x6742('0x34')],'type':_0x423a2d[_0x6742('0x35')][_0x6742('0x36')]};});_0x2480e4['model']=_[_0x6742('0x31')](_0x1d9da9,_0x6742('0x2e'));_0x2480e4[_0x6742('0x37')]=_[_0x6742('0x38')](_0x5ca7ba[_0x6742('0x37')]);_0x2480e4[_0x6742('0x39')]=_[_0x6742('0x3a')](_0x2480e4['model'],_0x2480e4[_0x6742('0x37')]);_0x4770d0[_0x6742('0x3b')]=_[_0x6742('0x3a')](_0x2480e4[_0x6742('0x3c')],qs[_0x6742('0x3d')](_0x5ca7ba['query'][_0x6742('0x3d')]));_0x4770d0[_0x6742('0x3b')]=_0x4770d0[_0x6742('0x3b')][_0x6742('0x3e')]?_0x4770d0[_0x6742('0x3b')]:_0x2480e4[_0x6742('0x3c')];if(!_0x5ca7ba[_0x6742('0x37')][_0x6742('0x3f')](_0x6742('0x40'))){_0x4770d0['limit']=qs[_0x6742('0x1d')](_0x5ca7ba[_0x6742('0x37')][_0x6742('0x1d')]);_0x4770d0['offset']=qs[_0x6742('0x1c')](_0x5ca7ba[_0x6742('0x37')][_0x6742('0x1c')]);}_0x4770d0['order']=qs[_0x6742('0x41')](_0x5ca7ba[_0x6742('0x37')][_0x6742('0x41')]);_0x4770d0[_0x6742('0x42')]=qs[_0x6742('0x39')](_[_0x6742('0x43')](_0x5ca7ba[_0x6742('0x37')],_0x2480e4[_0x6742('0x39')]),_0x1d9da9);if(_0x5ca7ba['query']['filter']){_0x4770d0[_0x6742('0x42')]=_[_0x6742('0x44')](_0x4770d0[_0x6742('0x42')],{'$or':_[_0x6742('0x31')](_0x1d9da9,function(_0x28cacf){if(_0x28cacf[_0x6742('0x35')]!==_0x6742('0x45')){var _0x4e50d4={};_0x4e50d4[_0x28cacf[_0x6742('0x2e')]]={'$like':'%'+_0x5ca7ba[_0x6742('0x37')][_0x6742('0x46')]+'%'};return _0x4e50d4;}})});}_0x4770d0=_['merge']({},_0x4770d0,_0x5ca7ba['options']);var _0x55d687={'where':_0x4770d0[_0x6742('0x42')]};return db[_0x6742('0x32')][_0x6742('0x1f')](_0x55d687)[_0x6742('0x26')](function(_0x57beaa){_0x2cafcc[_0x6742('0x1f')]=_0x57beaa;if(_0x5ca7ba[_0x6742('0x37')][_0x6742('0x47')]){_0x4770d0[_0x6742('0x48')]=[{'all':!![]}];}return db['Campaign'][_0x6742('0x49')](_0x4770d0);})[_0x6742('0x26')](function(_0x112d67){_0x2cafcc['rows']=_0x112d67;return _0x2cafcc;})[_0x6742('0x26')](respondWithFilteredResult(_0x4b1882,_0x4770d0))[_0x6742('0x4a')](handleError(_0x4b1882,null));};exports[_0x6742('0x4b')]=function(_0x55072f,_0x3cfc33){var _0xccf45={'raw':![],'where':{'id':_0x55072f['params']['id']}},_0x5b4955={};_0x5b4955[_0x6742('0x3c')]=_[_0x6742('0x38')](db[_0x6742('0x32')][_0x6742('0x33')]);_0x5b4955['query']=_[_0x6742('0x38')](_0x55072f['query']);_0x5b4955['filters']=_['intersection'](_0x5b4955[_0x6742('0x3c')],_0x5b4955[_0x6742('0x37')]);_0xccf45[_0x6742('0x3b')]=_[_0x6742('0x3a')](_0x5b4955['model'],qs[_0x6742('0x3d')](_0x55072f[_0x6742('0x37')]['fields']));_0xccf45['attributes']=_0xccf45['attributes'][_0x6742('0x3e')]?_0xccf45[_0x6742('0x3b')]:_0x5b4955[_0x6742('0x3c')];if(_0x55072f['query'][_0x6742('0x47')]){_0xccf45['include']=[{'all':!![]}];}_0xccf45=_[_0x6742('0x44')]({},_0xccf45,_0x55072f[_0x6742('0x4c')]);return db[_0x6742('0x32')][_0x6742('0x4d')](_0xccf45)[_0x6742('0x26')](handleEntityNotFound(_0x3cfc33,null))[_0x6742('0x26')](respondWithResult(_0x3cfc33,null))['catch'](handleError(_0x3cfc33,null));};exports[_0x6742('0x4e')]=function(_0x134dfa,_0x4f36df){return db[_0x6742('0x32')][_0x6742('0x4e')](_0x134dfa[_0x6742('0x4f')],{})['then'](function(_0x53384){var _0x20f192=_0x134dfa[_0x6742('0x50')][_0x6742('0x28')]({'plain':!![]});if(!_0x20f192)throw new Error(_0x6742('0x51'));if(_0x20f192[_0x6742('0x52')]===_0x6742('0x50')){var _0x34c07e=_0x53384['get']({'plain':!![]});var _0x20b63b='IvrCampaigns';return db[_0x6742('0x53')]['find']({'where':{'name':_0x20b63b,'userProfileId':_0x20f192[_0x6742('0x54')]},'raw':!![]})['then'](function(_0x101a36){if(_0x101a36&&_0x101a36['autoAssociation']===0x0){return db[_0x6742('0x2a')]['create']({'name':_0x34c07e[_0x6742('0x2e')],'resourceId':_0x34c07e['id'],'type':_0x101a36[_0x6742('0x2e')],'sectionId':_0x101a36['id']},{})[_0x6742('0x26')](function(){return _0x53384;});}else{return _0x53384;}})[_0x6742('0x4a')](function(_0x6718c4){logger[_0x6742('0x2c')](_0x6742('0x55'),_0x6718c4);throw _0x6718c4;});}return _0x53384;})[_0x6742('0x26')](respondWithResult(_0x4f36df,0xc9))[_0x6742('0x4a')](handleError(_0x4f36df,null));};exports[_0x6742('0x56')]=function(_0x1ebe9d,_0xbc5cfa){var _0x59d39a={'where':{'id':_0x1ebe9d[_0x6742('0x57')]['id']}},_0x4f4e1e={};_0x4f4e1e[_0x6742('0x3c')]=_[_0x6742('0x38')](db[_0x6742('0x32')][_0x6742('0x33')]);_0x59d39a[_0x6742('0x3b')]=_['intersection'](_0x4f4e1e[_0x6742('0x3c')],qs[_0x6742('0x3d')](_0x1ebe9d[_0x6742('0x37')][_0x6742('0x3d')]));_0x59d39a['attributes']=_0x59d39a[_0x6742('0x3b')]['length']?_0x59d39a[_0x6742('0x3b')]:_0x4f4e1e[_0x6742('0x3c')];if(_0x1ebe9d['query'][_0x6742('0x47')]){_0x59d39a[_0x6742('0x48')]=[{'all':!![]}];}_0x59d39a=_[_0x6742('0x44')]({},_0x59d39a,_0x1ebe9d[_0x6742('0x4c')]);return db[_0x6742('0x32')]['find'](_0x59d39a)[_0x6742('0x26')](handleEntityNotFound(_0xbc5cfa,null))[_0x6742('0x26')](function(_0x157811){if(_0x157811){var _0x408a92=_0x157811[_0x6742('0x28')]({'plain':!![]});_0x408a92=qs[_0x6742('0x58')](_0x408a92,['id',_0x6742('0x59'),_0x6742('0x5a')]);_0x1ebe9d['body']=_[_0x6742('0x58')](_0x1ebe9d['body'],['id',_0x6742('0x59'),'updatedAt']);return db[_0x6742('0x32')][_0x6742('0x4e')](_[_0x6742('0x44')](_0x408a92,_0x1ebe9d[_0x6742('0x4f')]),{'include':_0x1ebe9d['query'][_0x6742('0x47')]?[{'all':!![]}]:undefined})[_0x6742('0x26')](function(_0x524dce){var _0xc2da1a=_0x1ebe9d[_0x6742('0x50')][_0x6742('0x28')]({'plain':!![]});if(!_0xc2da1a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xc2da1a['role']===_0x6742('0x50')){var _0x260133=_0x524dce['get']({'plain':!![]});var _0x1c7452=_0x6742('0x29');return db[_0x6742('0x53')][_0x6742('0x4d')]({'where':{'name':_0x1c7452,'userProfileId':_0xc2da1a['userProfileId']},'raw':!![]})['then'](function(_0x1642ab){if(_0x1642ab&&_0x1642ab[_0x6742('0x5b')]===0x0){return db[_0x6742('0x2a')][_0x6742('0x4e')]({'name':_0x260133[_0x6742('0x2e')],'resourceId':_0x260133['id'],'type':_0x1642ab[_0x6742('0x2e')],'sectionId':_0x1642ab['id']},{})[_0x6742('0x26')](function(){return _0x524dce;});}else{return _0x524dce;}})['catch'](function(_0x559bdb){logger[_0x6742('0x2c')](_0x6742('0x55'),_0x559bdb);throw _0x559bdb;});}return _0x524dce;});}})[_0x6742('0x26')](respondWithResult(_0xbc5cfa,0xc9))[_0x6742('0x4a')](handleError(_0xbc5cfa,null));};exports[_0x6742('0x25')]=function(_0x323200,_0x6276a9){if(_0x323200['body']['id']){delete _0x323200[_0x6742('0x4f')]['id'];}return db['Campaign']['find']({'where':{'id':_0x323200[_0x6742('0x57')]['id']}})[_0x6742('0x26')](handleEntityNotFound(_0x6276a9,null))['then'](saveUpdates(_0x323200['body'],null))[_0x6742('0x26')](respondWithResult(_0x6276a9,null))[_0x6742('0x4a')](handleError(_0x6276a9,null));};exports['destroy']=function(_0x5d7d2e,_0x59f839){return db[_0x6742('0x32')]['find']({'where':{'id':_0x5d7d2e['params']['id']}})[_0x6742('0x26')](handleEntityNotFound(_0x59f839,null))[_0x6742('0x26')](removeEntity(_0x59f839,null))['catch'](handleError(_0x59f839,null));};exports['getHoppers']=function(_0x585a33,_0x4a0fda,_0x51728f){var _0xaa3ba4={'raw':!![],'where':{}};var _0x20b4c0={};var _0x1f7169={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x585a33[_0x6742('0x57')]['id']}})[_0x6742('0x26')](handleEntityNotFound(_0x4a0fda,null))['then'](function(_0x5778ae){if(_0x5778ae){_0x20b4c0[_0x6742('0x3c')]=_[_0x6742('0x38')](db[_0x6742('0x5c')][_0x6742('0x33')]);_0x20b4c0[_0x6742('0x37')]=_[_0x6742('0x38')](_0x585a33[_0x6742('0x37')]);_0x20b4c0[_0x6742('0x39')]=_['intersection'](_0x20b4c0[_0x6742('0x3c')],_0x20b4c0[_0x6742('0x37')]);_0xaa3ba4[_0x6742('0x3b')]=_[_0x6742('0x3a')](_0x20b4c0[_0x6742('0x3c')],qs['fields'](_0x585a33[_0x6742('0x37')][_0x6742('0x3d')]));_0xaa3ba4[_0x6742('0x3b')]=_0xaa3ba4[_0x6742('0x3b')][_0x6742('0x3e')]?_0xaa3ba4[_0x6742('0x3b')]:_0x20b4c0[_0x6742('0x3c')];if(!_0x585a33[_0x6742('0x37')][_0x6742('0x3f')](_0x6742('0x40'))){_0xaa3ba4[_0x6742('0x1d')]=qs[_0x6742('0x1d')](_0x585a33[_0x6742('0x37')][_0x6742('0x1d')]);_0xaa3ba4['offset']=qs[_0x6742('0x1c')](_0x585a33[_0x6742('0x37')][_0x6742('0x1c')]);}_0xaa3ba4[_0x6742('0x5d')]=qs[_0x6742('0x41')](_0x585a33[_0x6742('0x37')][_0x6742('0x41')]);_0xaa3ba4[_0x6742('0x42')]=qs['filters'](_[_0x6742('0x43')](_0x585a33[_0x6742('0x37')],_0x20b4c0[_0x6742('0x39')]));_0xaa3ba4[_0x6742('0x42')][_0x6742('0x5e')]=_0x5778ae['id'];if(_0x585a33['query'][_0x6742('0x46')]){_0xaa3ba4[_0x6742('0x42')]=_[_0x6742('0x44')](_0xaa3ba4[_0x6742('0x42')],{'$or':_['map'](_0xaa3ba4[_0x6742('0x3b')],function(_0xa6d9b0){var _0x1a5814={};_0x1a5814[_0xa6d9b0]={'$like':'%'+_0x585a33['query'][_0x6742('0x46')]+'%'};return _0x1a5814;})});}_0xaa3ba4=_[_0x6742('0x44')]({},_0xaa3ba4,_0x585a33[_0x6742('0x4c')]);return db[_0x6742('0x5c')][_0x6742('0x1f')]({'where':_0xaa3ba4[_0x6742('0x42')]})[_0x6742('0x26')](function(_0x542bc8){_0x1f7169[_0x6742('0x1f')]=_0x542bc8;if(_0x585a33[_0x6742('0x37')][_0x6742('0x47')]){_0xaa3ba4[_0x6742('0x48')]=[{'all':!![]}];}return db[_0x6742('0x5c')][_0x6742('0x49')](_0xaa3ba4);})[_0x6742('0x26')](function(_0x2976b6){_0x1f7169[_0x6742('0x5f')]=_0x2976b6;return _0x1f7169;});}})[_0x6742('0x26')](respondWithFilteredResult(_0x4a0fda,_0xaa3ba4))[_0x6742('0x4a')](handleError(_0x4a0fda,null));};exports[_0x6742('0x60')]=function(_0x225e9c,_0x779e89,_0x43ea6a){var _0x3d6228={'raw':!![],'where':{}};var _0x418494={};var _0x4b49c9={'count':0x0,'rows':[]};return db[_0x6742('0x32')]['findOne']({'where':{'id':_0x225e9c[_0x6742('0x57')]['id']}})['then'](handleEntityNotFound(_0x779e89,null))['then'](function(_0x2140fa){if(_0x2140fa){_0x418494['model']=_[_0x6742('0x38')](db[_0x6742('0x61')]['rawAttributes']);_0x418494[_0x6742('0x37')]=_['keys'](_0x225e9c[_0x6742('0x37')]);_0x418494['filters']=_[_0x6742('0x3a')](_0x418494[_0x6742('0x3c')],_0x418494[_0x6742('0x37')]);_0x3d6228[_0x6742('0x3b')]=_['intersection'](_0x418494[_0x6742('0x3c')],qs[_0x6742('0x3d')](_0x225e9c[_0x6742('0x37')][_0x6742('0x3d')]));_0x3d6228['attributes']=_0x3d6228[_0x6742('0x3b')][_0x6742('0x3e')]?_0x3d6228[_0x6742('0x3b')]:_0x418494['model'];if(!_0x225e9c[_0x6742('0x37')][_0x6742('0x3f')](_0x6742('0x40'))){_0x3d6228[_0x6742('0x1d')]=qs[_0x6742('0x1d')](_0x225e9c[_0x6742('0x37')]['limit']);_0x3d6228[_0x6742('0x1c')]=qs[_0x6742('0x1c')](_0x225e9c[_0x6742('0x37')][_0x6742('0x1c')]);}_0x3d6228[_0x6742('0x5d')]=qs[_0x6742('0x41')](_0x225e9c[_0x6742('0x37')][_0x6742('0x41')]);_0x3d6228['where']=qs[_0x6742('0x39')](_[_0x6742('0x43')](_0x225e9c['query'],_0x418494['filters']));_0x3d6228[_0x6742('0x42')][_0x6742('0x5e')]=_0x2140fa['id'];if(_0x225e9c[_0x6742('0x37')][_0x6742('0x46')]){_0x3d6228[_0x6742('0x42')]=_[_0x6742('0x44')](_0x3d6228[_0x6742('0x42')],{'$or':_[_0x6742('0x31')](_0x3d6228[_0x6742('0x3b')],function(_0x1047f9){var _0x226d7c={};_0x226d7c[_0x1047f9]={'$like':'%'+_0x225e9c['query'][_0x6742('0x46')]+'%'};return _0x226d7c;})});}_0x3d6228=_[_0x6742('0x44')]({},_0x3d6228,_0x225e9c['options']);return db['CmHopperHistory'][_0x6742('0x1f')]({'where':_0x3d6228[_0x6742('0x42')]})['then'](function(_0x3966dc){_0x4b49c9[_0x6742('0x1f')]=_0x3966dc;if(_0x225e9c[_0x6742('0x37')][_0x6742('0x47')]){_0x3d6228[_0x6742('0x48')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x3d6228);})[_0x6742('0x26')](function(_0x18ff8e){_0x4b49c9[_0x6742('0x5f')]=_0x18ff8e;return _0x4b49c9;});}})[_0x6742('0x26')](respondWithFilteredResult(_0x779e89,_0x3d6228))[_0x6742('0x4a')](handleError(_0x779e89,null));};exports[_0x6742('0x62')]=function(_0x1efe98,_0x28d9a8,_0x3a41ea){var _0x3690b9={'raw':!![],'where':{}};var _0x1ef1f0={};var _0x2d91a0={'count':0x0,'rows':[]};return db[_0x6742('0x32')]['findOne']({'where':{'id':_0x1efe98[_0x6742('0x57')]['id']}})['then'](handleEntityNotFound(_0x28d9a8,null))[_0x6742('0x26')](function(_0x52ed56){if(_0x52ed56){_0x1ef1f0[_0x6742('0x3c')]=_[_0x6742('0x38')](db[_0x6742('0x63')][_0x6742('0x33')]);_0x1ef1f0[_0x6742('0x37')]=_['keys'](_0x1efe98[_0x6742('0x37')]);_0x1ef1f0['filters']=_[_0x6742('0x3a')](_0x1ef1f0[_0x6742('0x3c')],_0x1ef1f0[_0x6742('0x37')]);_0x3690b9[_0x6742('0x3b')]=_[_0x6742('0x3a')](_0x1ef1f0[_0x6742('0x3c')],qs['fields'](_0x1efe98['query'][_0x6742('0x3d')]));_0x3690b9['attributes']=_0x3690b9['attributes'][_0x6742('0x3e')]?_0x3690b9[_0x6742('0x3b')]:_0x1ef1f0[_0x6742('0x3c')];if(!_0x1efe98[_0x6742('0x37')][_0x6742('0x3f')]('nolimit')){_0x3690b9['limit']=qs[_0x6742('0x1d')](_0x1efe98['query'][_0x6742('0x1d')]);_0x3690b9['offset']=qs['offset'](_0x1efe98[_0x6742('0x37')][_0x6742('0x1c')]);}_0x3690b9[_0x6742('0x5d')]=qs[_0x6742('0x41')](_0x1efe98[_0x6742('0x37')][_0x6742('0x41')]);_0x3690b9[_0x6742('0x42')]=qs[_0x6742('0x39')](_[_0x6742('0x43')](_0x1efe98[_0x6742('0x37')],_0x1ef1f0[_0x6742('0x39')]));_0x3690b9['where'][_0x6742('0x5e')]=_0x52ed56['id'];if(_0x1efe98[_0x6742('0x37')][_0x6742('0x46')]){_0x3690b9[_0x6742('0x42')]=_[_0x6742('0x44')](_0x3690b9[_0x6742('0x42')],{'$or':_[_0x6742('0x31')](_0x3690b9[_0x6742('0x3b')],function(_0x6a29a7){var _0x4384f1={};_0x4384f1[_0x6a29a7]={'$like':'%'+_0x1efe98['query'][_0x6742('0x46')]+'%'};return _0x4384f1;})});}_0x3690b9=_[_0x6742('0x44')]({},_0x3690b9,_0x1efe98[_0x6742('0x4c')]);return db[_0x6742('0x63')][_0x6742('0x1f')]({'where':_0x3690b9[_0x6742('0x42')]})['then'](function(_0x3aa76a){_0x2d91a0['count']=_0x3aa76a;if(_0x1efe98[_0x6742('0x37')]['includeAll']){_0x3690b9[_0x6742('0x48')]=[{'all':!![]}];}return db[_0x6742('0x63')][_0x6742('0x49')](_0x3690b9);})[_0x6742('0x26')](function(_0xcdd54){_0x2d91a0['rows']=_0xcdd54;return _0x2d91a0;});}})[_0x6742('0x26')](respondWithFilteredResult(_0x28d9a8,_0x3690b9))[_0x6742('0x4a')](handleError(_0x28d9a8,null));};exports[_0x6742('0x64')]=function(_0x1221e7,_0x37a248,_0x46296d){var _0x411b27={'raw':!![],'where':{}};var _0x3c62cf={};var _0x33fe10={'count':0x0,'rows':[]};return db[_0x6742('0x32')][_0x6742('0x65')]({'where':{'id':_0x1221e7[_0x6742('0x57')]['id']}})[_0x6742('0x26')](handleEntityNotFound(_0x37a248,null))[_0x6742('0x26')](function(_0x1fbf84){if(_0x1fbf84){_0x3c62cf[_0x6742('0x3c')]=_[_0x6742('0x38')](db[_0x6742('0x66')][_0x6742('0x33')]);_0x3c62cf[_0x6742('0x37')]=_[_0x6742('0x38')](_0x1221e7[_0x6742('0x37')]);_0x3c62cf[_0x6742('0x39')]=_[_0x6742('0x3a')](_0x3c62cf[_0x6742('0x3c')],_0x3c62cf['query']);_0x411b27[_0x6742('0x3b')]=_[_0x6742('0x3a')](_0x3c62cf[_0x6742('0x3c')],qs[_0x6742('0x3d')](_0x1221e7[_0x6742('0x37')]['fields']));_0x411b27['attributes']=_0x411b27[_0x6742('0x3b')][_0x6742('0x3e')]?_0x411b27[_0x6742('0x3b')]:_0x3c62cf[_0x6742('0x3c')];if(!_0x1221e7[_0x6742('0x37')][_0x6742('0x3f')](_0x6742('0x40'))){_0x411b27['limit']=qs[_0x6742('0x1d')](_0x1221e7[_0x6742('0x37')][_0x6742('0x1d')]);_0x411b27[_0x6742('0x1c')]=qs[_0x6742('0x1c')](_0x1221e7[_0x6742('0x37')]['offset']);}_0x411b27[_0x6742('0x5d')]=qs[_0x6742('0x41')](_0x1221e7[_0x6742('0x37')][_0x6742('0x41')]);_0x411b27[_0x6742('0x42')]=qs['filters'](_[_0x6742('0x43')](_0x1221e7[_0x6742('0x37')],_0x3c62cf['filters']));_0x411b27[_0x6742('0x42')][_0x6742('0x5e')]=_0x1fbf84['id'];if(_0x1221e7[_0x6742('0x37')]['filter']){_0x411b27[_0x6742('0x42')]=_[_0x6742('0x44')](_0x411b27[_0x6742('0x42')],{'$or':_[_0x6742('0x31')](_0x411b27[_0x6742('0x3b')],function(_0x2ab19a){var _0x14475a={};_0x14475a[_0x2ab19a]={'$like':'%'+_0x1221e7[_0x6742('0x37')][_0x6742('0x46')]+'%'};return _0x14475a;})});}_0x411b27=_['merge']({},_0x411b27,_0x1221e7[_0x6742('0x4c')]);return db[_0x6742('0x66')][_0x6742('0x1f')]({'where':_0x411b27[_0x6742('0x42')]})[_0x6742('0x26')](function(_0x245171){_0x33fe10[_0x6742('0x1f')]=_0x245171;if(_0x1221e7['query'][_0x6742('0x47')]){_0x411b27[_0x6742('0x48')]=[{'all':!![]}];}return db[_0x6742('0x66')][_0x6742('0x49')](_0x411b27);})[_0x6742('0x26')](function(_0x524f2b){_0x33fe10[_0x6742('0x5f')]=_0x524f2b;return _0x33fe10;});}})['then'](respondWithFilteredResult(_0x37a248,_0x411b27))[_0x6742('0x4a')](handleError(_0x37a248,null));};exports[_0x6742('0x67')]=function(_0x374c9c,_0x4c0323,_0x23f14e){var _0x44c92a={};var _0x5f12f9={};var _0x343980;var _0x148e0d;return db['Campaign'][_0x6742('0x65')]({'where':{'id':_0x374c9c[_0x6742('0x57')]['id']}})['then'](handleEntityNotFound(_0x4c0323,null))[_0x6742('0x26')](function(_0x338e57){if(_0x338e57){_0x343980=_0x338e57;_0x5f12f9[_0x6742('0x3c')]=_[_0x6742('0x38')](db[_0x6742('0x68')]['rawAttributes']);_0x5f12f9[_0x6742('0x37')]=_[_0x6742('0x38')](_0x374c9c[_0x6742('0x37')]);_0x5f12f9[_0x6742('0x39')]=_[_0x6742('0x3a')](_0x5f12f9[_0x6742('0x3c')],_0x5f12f9[_0x6742('0x37')]);_0x44c92a[_0x6742('0x3b')]=_[_0x6742('0x3a')](_0x5f12f9[_0x6742('0x3c')],qs[_0x6742('0x3d')](_0x374c9c[_0x6742('0x37')][_0x6742('0x3d')]));_0x44c92a['attributes']=_0x44c92a[_0x6742('0x3b')][_0x6742('0x3e')]?_0x44c92a[_0x6742('0x3b')]:_0x5f12f9[_0x6742('0x3c')];_0x44c92a['order']=qs[_0x6742('0x41')](_0x374c9c[_0x6742('0x37')][_0x6742('0x41')]);_0x44c92a[_0x6742('0x42')]=qs[_0x6742('0x39')](_[_0x6742('0x43')](_0x374c9c['query'],_0x5f12f9[_0x6742('0x39')]));if(_0x374c9c[_0x6742('0x37')]['filter']){_0x44c92a['where']=_[_0x6742('0x44')](_0x44c92a['where'],{'$or':_[_0x6742('0x31')](_0x44c92a[_0x6742('0x3b')],function(_0xd44fab){var _0x4fdec2={};_0x4fdec2[_0xd44fab]={'$like':'%'+_0x374c9c['query'][_0x6742('0x46')]+'%'};return _0x4fdec2;})});}_0x44c92a=_[_0x6742('0x44')]({},_0x44c92a,_0x374c9c[_0x6742('0x4c')]);return _0x343980[_0x6742('0x67')](_0x44c92a);}})[_0x6742('0x26')](function(_0x168a45){if(_0x168a45){_0x148e0d=_0x168a45[_0x6742('0x3e')];if(!_0x374c9c[_0x6742('0x37')][_0x6742('0x3f')](_0x6742('0x40'))){_0x44c92a[_0x6742('0x1d')]=qs[_0x6742('0x1d')](_0x374c9c['query'][_0x6742('0x1d')]);_0x44c92a[_0x6742('0x1c')]=qs['offset'](_0x374c9c[_0x6742('0x37')]['offset']);}return _0x343980['getLists'](_0x44c92a);}})[_0x6742('0x26')](function(_0x5b58a3){if(_0x5b58a3){return _0x5b58a3?{'count':_0x148e0d,'rows':_0x5b58a3}:null;}})['then'](respondWithResult(_0x4c0323,null))[_0x6742('0x4a')](handleError(_0x4c0323,null));};exports[_0x6742('0x69')]=function(_0x231397,_0x2754fa,_0x33575b){var _0x24d051,_0x4edc7f;var _0x38b4ac=[];var _0x57ab26=moment()[_0x6742('0x6a')](_0x6742('0x6b'));return db[_0x6742('0x32')][_0x6742('0x4d')]({'where':{'id':_0x231397[_0x6742('0x57')]['id']}})['then'](handleEntityNotFound(_0x2754fa,null))[_0x6742('0x26')](function(_0x1fe2ca){if(_0x1fe2ca){_0x4edc7f=_0x1fe2ca;return _0x1fe2ca[_0x6742('0x69')](_0x231397['body'][_0x6742('0x6c')],_[_0x6742('0x58')](_0x231397[_0x6742('0x4f')],[_0x6742('0x6c'),'id'])||{});}return null;})[_0x6742('0x6d')](function(_0x54d1e8){var _0x3d6086;var _0x583d50;_0x24d051=_0x54d1e8||[];var _0x1960ac=[];if(_0x54d1e8){for(var _0x26b465=0x0;_0x26b465<_0x54d1e8[_0x6742('0x3e')];_0x26b465+=0x1){var _0x335df4=_0x54d1e8[_0x26b465][_0x6742('0x28')]({'plain':!![]});_0x4edc7f[_0x6742('0x6e')]=_0x231397[_0x6742('0x4f')][_0x6742('0x6e')]?_0x231397[_0x6742('0x4f')][_0x6742('0x6e')]:_0x4edc7f[_0x6742('0x6e')];switch(_0x4edc7f[_0x6742('0x6e')]){case _0x6742('0x6f'):_0x3d6086=squel['insert']()[_0x6742('0x70')](_0x6742('0x71'))[_0x6742('0x72')]([_0x6742('0x73'),_0x6742('0x74'),_0x6742('0x75'),_0x6742('0x76'),'CampaignId',_0x6742('0x59'),_0x6742('0x5a')],squel[_0x6742('0x77')]()[_0x6742('0x78')](_0x6742('0x73'),_0x6742('0x73'))[_0x6742('0x78')](_0x6742('0x79'),_0x6742('0x74'))[_0x6742('0x78')]('id','ContactId')[_0x6742('0x78')](_0x335df4['CmListId'][_0x6742('0x7a')](),_0x6742('0x76'))[_0x6742('0x78')](_0x231397[_0x6742('0x57')]['id'][_0x6742('0x7a')](),'CampaignId')[_0x6742('0x78')]('\x27'+_0x57ab26+'\x27',_0x6742('0x59'))['field']('\x27'+_0x57ab26+'\x27',_0x6742('0x5a'))[_0x6742('0x7b')](_0x6742('0x7c'))[_0x6742('0x42')](_0x6742('0x7d'))[_0x6742('0x42')](_0x6742('0x7e'),_0x335df4[_0x6742('0x7f')][_0x6742('0x7a')]())['where'](_0x6742('0x80'))['where'](_0x6742('0x81'),squel[_0x6742('0x77')]()[_0x6742('0x78')](_0x6742('0x82'))[_0x6742('0x7b')](_0x6742('0x83'))[_0x6742('0x42')](_0x6742('0x84'),_0x231397[_0x6742('0x57')]['id'][_0x6742('0x7a')]()))['where'](_0x6742('0x81'),squel[_0x6742('0x77')]()[_0x6742('0x78')](_0x6742('0x85'))[_0x6742('0x7b')](_0x6742('0x71'))['where'](_0x6742('0x84'),_0x231397['params']['id'][_0x6742('0x7a')]())))[_0x6742('0x7a')]();break;case _0x6742('0x86'):_0x3d6086=squel['insert']()['into'](_0x6742('0x71'))[_0x6742('0x72')]([_0x6742('0x73'),_0x6742('0x74'),_0x6742('0x75'),_0x6742('0x76'),'CampaignId','createdAt',_0x6742('0x5a')],squel[_0x6742('0x77')]()[_0x6742('0x78')]('phone','phone')[_0x6742('0x78')](_0x6742('0x79'),_0x6742('0x74'))[_0x6742('0x78')]('id',_0x6742('0x75'))['field'](_0x335df4[_0x6742('0x7f')][_0x6742('0x7a')](),_0x6742('0x76'))[_0x6742('0x78')](_0x231397['params']['id'][_0x6742('0x7a')](),_0x6742('0x5e'))[_0x6742('0x78')]('\x27'+_0x57ab26+'\x27',_0x6742('0x59'))[_0x6742('0x78')]('\x27'+_0x57ab26+'\x27',_0x6742('0x5a'))['from'](_0x6742('0x7c'))[_0x6742('0x42')](_0x6742('0x7d'))[_0x6742('0x42')]('ListId\x20=\x20?',_0x335df4['CmListId'][_0x6742('0x7a')]())['where'](_0x6742('0x80'))[_0x6742('0x42')](_0x6742('0x81'),squel[_0x6742('0x77')]()[_0x6742('0x78')](_0x6742('0x85'))[_0x6742('0x7b')](_0x6742('0x71'))[_0x6742('0x42')](_0x6742('0x84'),_0x231397[_0x6742('0x57')]['id']['toString']())))['toString']();break;default:_0x3d6086=squel[_0x6742('0x87')]()[_0x6742('0x70')](_0x6742('0x71'))[_0x6742('0x72')]([_0x6742('0x73'),'scheduledAt',_0x6742('0x75'),_0x6742('0x76'),'CampaignId',_0x6742('0x59'),_0x6742('0x5a')],squel[_0x6742('0x77')]()[_0x6742('0x78')](_0x6742('0x73'),'phone')[_0x6742('0x78')](_0x6742('0x79'),_0x6742('0x74'))[_0x6742('0x78')]('id',_0x6742('0x75'))[_0x6742('0x78')](_0x335df4[_0x6742('0x7f')][_0x6742('0x7a')](),_0x6742('0x76'))['field'](_0x231397['params']['id'][_0x6742('0x7a')](),_0x6742('0x5e'))['field']('\x27'+_0x57ab26+'\x27','createdAt')[_0x6742('0x78')]('\x27'+_0x57ab26+'\x27','updatedAt')[_0x6742('0x7b')]('cm_contacts')[_0x6742('0x42')](_0x6742('0x7d'))[_0x6742('0x42')]('ListId\x20=\x20?',_0x335df4[_0x6742('0x7f')][_0x6742('0x7a')]())[_0x6742('0x42')](_0x6742('0x80')))[_0x6742('0x7a')]();}_0x583d50=squel[_0x6742('0x87')]()[_0x6742('0x70')](_0x6742('0x88'))['fromQuery']([_0x6742('0x89'),_0x6742('0x74'),_0x6742('0x73'),'OrderBy',_0x6742('0x59'),_0x6742('0x5a')],squel[_0x6742('0x77')]()[_0x6742('0x78')](_0x6742('0x8a'),'id')[_0x6742('0x78')](_0x6742('0x79'),_0x6742('0x74'))[_0x6742('0x78')](_0x6742('0x8b'),_0x6742('0x73'))[_0x6742('0x78')](_0x6742('0x8c'),_0x6742('0x8d'))['field']('\x27'+_0x57ab26+'\x27','createdAt')['field']('\x27'+_0x57ab26+'\x27',_0x6742('0x5a'))[_0x6742('0x7b')](_0x6742('0x8e'),'ci')[_0x6742('0x8f')](_0x6742('0x71'),'h',_0x6742('0x90'))[_0x6742('0x42')](_0x6742('0x91'),_0x335df4[_0x6742('0x7f')]['toString']())[_0x6742('0x42')](_0x6742('0x92'),_0x231397['params']['id']['toString']())[_0x6742('0x42')](_0x6742('0x93'),_0x57ab26))[_0x6742('0x7a')]();_0x1960ac[_0x6742('0x94')](db[_0x6742('0x95')][_0x6742('0x37')](_0x3d6086));_0x38b4ac[_0x6742('0x94')](db[_0x6742('0x95')][_0x6742('0x37')](_0x583d50));}return BPromise[_0x6742('0x96')](_0x1960ac);}})['then'](function(){return BPromise[_0x6742('0x96')](_0x38b4ac);})['then'](function(){return _0x24d051;})['then'](respondWithResult(_0x2754fa,null))['catch'](handleError(_0x2754fa,null));};exports[_0x6742('0x97')]=function(_0x10c480,_0x1c657d,_0x5433ed){return db[_0x6742('0x32')][_0x6742('0x4d')]({'where':{'id':_0x10c480['params']['id']}})[_0x6742('0x26')](handleEntityNotFound(_0x1c657d,null))[_0x6742('0x26')](function(_0x18de37){if(_0x18de37){return _0x18de37[_0x6742('0x97')](_0x10c480[_0x6742('0x37')][_0x6742('0x6c')]);}})[_0x6742('0x26')](function(_0x208ad1){if(_0x208ad1){return db[_0x6742('0x5c')][_0x6742('0x27')]({'where':{'ListId':_0x10c480[_0x6742('0x37')][_0x6742('0x6c')],'CampaignId':_0x10c480['params']['id']}})[_0x6742('0x26')](function(){return _0x208ad1;});}})[_0x6742('0x26')](respondWithStatusCode(_0x1c657d,null))[_0x6742('0x4a')](handleError(_0x1c657d,null));};exports[_0x6742('0x98')]=function(_0x404f13,_0x24587a,_0x41d13b){var _0x404227={};var _0x48f6c7={};var _0x39e281;var _0x12ae42;return db[_0x6742('0x32')]['findOne']({'where':{'id':_0x404f13[_0x6742('0x57')]['id']}})[_0x6742('0x26')](handleEntityNotFound(_0x24587a,null))[_0x6742('0x26')](function(_0x4c13e4){if(_0x4c13e4){_0x39e281=_0x4c13e4;_0x48f6c7['model']=_[_0x6742('0x38')](db[_0x6742('0x68')]['rawAttributes']);_0x48f6c7[_0x6742('0x37')]=_[_0x6742('0x38')](_0x404f13['query']);_0x48f6c7['filters']=_['intersection'](_0x48f6c7[_0x6742('0x3c')],_0x48f6c7[_0x6742('0x37')]);_0x404227[_0x6742('0x3b')]=_[_0x6742('0x3a')](_0x48f6c7['model'],qs['fields'](_0x404f13['query'][_0x6742('0x3d')]));_0x404227['attributes']=_0x404227[_0x6742('0x3b')][_0x6742('0x3e')]?_0x404227['attributes']:_0x48f6c7[_0x6742('0x3c')];_0x404227[_0x6742('0x5d')]=qs['sort'](_0x404f13[_0x6742('0x37')][_0x6742('0x41')]);_0x404227[_0x6742('0x42')]=qs['filters'](_[_0x6742('0x43')](_0x404f13['query'],_0x48f6c7['filters']));if(_0x404f13[_0x6742('0x37')][_0x6742('0x46')]){_0x404227['where']=_[_0x6742('0x44')](_0x404227[_0x6742('0x42')],{'$or':_[_0x6742('0x31')](_0x404227[_0x6742('0x3b')],function(_0x4695a2){var _0x44343e={};_0x44343e[_0x4695a2]={'$like':'%'+_0x404f13[_0x6742('0x37')]['filter']+'%'};return _0x44343e;})});}_0x404227=_[_0x6742('0x44')]({},_0x404227,_0x404f13[_0x6742('0x4c')]);return _0x39e281['getBlackLists'](_0x404227);}})[_0x6742('0x26')](function(_0x3bb5a8){if(_0x3bb5a8){_0x12ae42=_0x3bb5a8[_0x6742('0x3e')];if(!_0x404f13[_0x6742('0x37')][_0x6742('0x3f')]('nolimit')){_0x404227[_0x6742('0x1d')]=qs['limit'](_0x404f13[_0x6742('0x37')][_0x6742('0x1d')]);_0x404227[_0x6742('0x1c')]=qs['offset'](_0x404f13[_0x6742('0x37')][_0x6742('0x1c')]);}return _0x39e281[_0x6742('0x98')](_0x404227);}})[_0x6742('0x26')](function(_0x18ccb2){if(_0x18ccb2){return _0x18ccb2?{'count':_0x12ae42,'rows':_0x18ccb2}:null;}})[_0x6742('0x26')](respondWithResult(_0x24587a,null))[_0x6742('0x4a')](handleError(_0x24587a,null));};exports[_0x6742('0x99')]=function(_0x2766e6,_0x567877,_0x50bc4e){var _0x15249a,_0x5b2a6d;var _0x1540fb=[];var _0x522bfd=moment()[_0x6742('0x6a')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x6742('0x32')][_0x6742('0x4d')]({'where':{'id':_0x2766e6[_0x6742('0x57')]['id']}})[_0x6742('0x26')](handleEntityNotFound(_0x567877,null))[_0x6742('0x26')](function(_0x3f1408){if(_0x3f1408){_0x5b2a6d=_0x3f1408;return _0x3f1408['addBlackLists'](_0x2766e6[_0x6742('0x4f')][_0x6742('0x6c')],_[_0x6742('0x58')](_0x2766e6[_0x6742('0x4f')],['ids','id'])||{});}return null;})[_0x6742('0x6d')](function(_0x5c48bb){var _0x55d2f2;var _0x5cdf83;_0x15249a=_0x5c48bb||[];var _0x49d764=[];if(_0x5c48bb){for(var _0x6e8a00=0x0;_0x6e8a00<_0x5c48bb[_0x6742('0x3e')];_0x6e8a00+=0x1){var _0x56f3b2=_0x5c48bb[_0x6e8a00]['get']({'plain':!![]});_0x55d2f2=squel['insert']()[_0x6742('0x70')](_0x6742('0x9a'))[_0x6742('0x72')](['phone',_0x6742('0x75'),'ListId',_0x6742('0x5e'),_0x6742('0x59'),_0x6742('0x5a')],squel[_0x6742('0x77')]()['field'](_0x6742('0x73'),_0x6742('0x73'))[_0x6742('0x78')]('id',_0x6742('0x75'))[_0x6742('0x78')](_0x56f3b2[_0x6742('0x7f')][_0x6742('0x7a')](),_0x6742('0x76'))[_0x6742('0x78')](_0x2766e6['params']['id'][_0x6742('0x7a')](),_0x6742('0x5e'))['field'](_0x6742('0x79'),_0x6742('0x59'))['field']('NOW()','updatedAt')[_0x6742('0x7b')]('cm_contacts')[_0x6742('0x42')](_0x6742('0x7d'))[_0x6742('0x42')](_0x6742('0x7e'),_0x56f3b2[_0x6742('0x7f')][_0x6742('0x7a')]())[_0x6742('0x42')]('phone\x20IS\x20NOT\x20NULL'))[_0x6742('0x7a')]();_0x49d764[_0x6742('0x94')](db['sequelize']['query'](_0x55d2f2));}return BPromise[_0x6742('0x96')](_0x49d764);}})[_0x6742('0x26')](function(){return _0x15249a;})[_0x6742('0x26')](respondWithResult(_0x567877,null))['catch'](handleError(_0x567877,null));};exports['removeBlackLists']=function(_0x3e73b8,_0x341f94,_0x1f408d){return db[_0x6742('0x32')][_0x6742('0x4d')]({'where':{'id':_0x3e73b8['params']['id']}})[_0x6742('0x26')](handleEntityNotFound(_0x341f94,null))[_0x6742('0x26')](function(_0x14aec1){if(_0x14aec1){return _0x14aec1[_0x6742('0x9b')](_0x3e73b8[_0x6742('0x37')][_0x6742('0x6c')]);}})[_0x6742('0x26')](function(_0x21ba85){if(_0x21ba85){return db['CmHopperBlack'][_0x6742('0x27')]({'where':{'ListId':_0x3e73b8[_0x6742('0x37')]['ids'],'CampaignId':_0x3e73b8[_0x6742('0x57')]['id']}})[_0x6742('0x26')](function(){return _0x21ba85;});}})[_0x6742('0x26')](respondWithStatusCode(_0x341f94,null))[_0x6742('0x4a')](handleError(_0x341f94,null));};
\ No newline at end of file
+var _0x5987=['select','field','NOW()','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','scheduledAt','ListId\x20=\x20?','cm_hopper_additional_phones','cmHopperId','OrderBy','ci.item','ci.OrderBY','h.ContactId\x20=\x20ci.CmContactId','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','removeBlackLists','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','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','index','Campaign','fieldName','type','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','sort','where','filter','merge','includeAll','include','findAll','rows','show','rawAttributes','options','find','catch','create','user','UserProfileSection','autoAssociation','params','omit','createdAt','body','updatedAt','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','CmHopper','pick','CmHopperHistory','order','CampaignId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','ContactId','ListId'];(function(_0x5c3619,_0x5cf728){var _0x24a2da=function(_0x4d14a9){while(--_0x4d14a9){_0x5c3619['push'](_0x5c3619['shift']());}};_0x24a2da(++_0x5cf728);}(_0x5987,0x128));var _0x7598=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x5987[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x7598('0x0'));var rimraf=require(_0x7598('0x1'));var zipdir=require(_0x7598('0x2'));var jsonpatch=require(_0x7598('0x3'));var rp=require('request-promise');var moment=require(_0x7598('0x4'));var BPromise=require(_0x7598('0x5'));var Mustache=require(_0x7598('0x6'));var util=require(_0x7598('0x7'));var path=require(_0x7598('0x8'));var sox=require(_0x7598('0x9'));var csv=require(_0x7598('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7598('0xb'));var _=require('lodash');var squel=require(_0x7598('0xc'));var crypto=require(_0x7598('0xd'));var jsforce=require(_0x7598('0xe'));var deskjs=require(_0x7598('0xf'));var toCsv=require(_0x7598('0xa'));var querystring=require(_0x7598('0x10'));var Papa=require(_0x7598('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7598('0x12'));var hardwareService=require(_0x7598('0x13'));var logger=require(_0x7598('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x7598('0x15'));var licenseUtil=require(_0x7598('0x16'));var db=require(_0x7598('0x17'))['db'];function respondWithStatusCode(_0x1a92e9,_0x22cc20){_0x22cc20=_0x22cc20||0xcc;return function(_0x52bc43){if(_0x52bc43){return _0x1a92e9[_0x7598('0x18')](_0x22cc20);}return _0x1a92e9['status'](_0x22cc20)['end']();};}function respondWithResult(_0x3773cd,_0x16527e){_0x16527e=_0x16527e||0xc8;return function(_0x1608b8){if(_0x1608b8){return _0x3773cd[_0x7598('0x19')](_0x16527e)['json'](_0x1608b8);}};}function respondWithFilteredResult(_0x388b3f,_0x3d80be){return function(_0x353d18){if(_0x353d18){var _0x3282de=typeof _0x3d80be['offset']===_0x7598('0x1a')&&typeof _0x3d80be[_0x7598('0x1b')]===_0x7598('0x1a');var _0x1360bb=_0x353d18[_0x7598('0x1c')];var _0x2a62ed=_0x3282de?0x0:_0x3d80be['offset'];var _0x817355=_0x3282de?_0x353d18[_0x7598('0x1c')]:_0x3d80be['offset']+_0x3d80be[_0x7598('0x1b')];var _0x2bc78d;if(_0x817355>=_0x1360bb){_0x817355=_0x1360bb;_0x2bc78d=0xc8;}else{_0x2bc78d=0xce;}_0x388b3f['status'](_0x2bc78d);return _0x388b3f['set'](_0x7598('0x1d'),_0x2a62ed+'-'+_0x817355+'/'+_0x1360bb)[_0x7598('0x1e')](_0x353d18);}return null;};}function patchUpdates(_0x1ae307){return function(_0x42286f){try{jsonpatch[_0x7598('0x1f')](_0x42286f,_0x1ae307,!![]);}catch(_0x5902a9){return BPromise[_0x7598('0x20')](_0x5902a9);}return _0x42286f[_0x7598('0x21')]();};}function saveUpdates(_0x1d6e1b,_0x87e713){return function(_0xb76cfc){if(_0xb76cfc){return _0xb76cfc['update'](_0x1d6e1b)[_0x7598('0x22')](function(_0x3d7ff0){return _0x3d7ff0;});}return null;};}function removeEntity(_0x3ec8b1,_0x453901){return function(_0x384d1d){if(_0x384d1d){return _0x384d1d[_0x7598('0x23')]()['then'](function(){var _0x4bfac0=_0x384d1d[_0x7598('0x24')]({'plain':!![]});var _0x5b4d1c='IvrCampaigns';return db[_0x7598('0x25')][_0x7598('0x23')]({'where':{'type':_0x5b4d1c,'resourceId':_0x4bfac0['id']}})[_0x7598('0x22')](function(){return _0x384d1d;});})['then'](function(){_0x3ec8b1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x9402c7,_0x136d49){return function(_0x2c914c){if(!_0x2c914c){_0x9402c7[_0x7598('0x18')](0x194);}return _0x2c914c;};}function handleError(_0x14ab59,_0x36733a){_0x36733a=_0x36733a||0x1f4;return function(_0x2d36fc){logger[_0x7598('0x26')](_0x2d36fc[_0x7598('0x27')]);if(_0x2d36fc[_0x7598('0x28')]){delete _0x2d36fc['name'];}_0x14ab59['status'](_0x36733a)['send'](_0x2d36fc);};}exports[_0x7598('0x29')]=function(_0x15107d,_0x386ae4){var _0x1654f7={},_0x519e9b={},_0x1d9661={'count':0x0,'rows':[]};var _0x3bd86b=_['map'](db[_0x7598('0x2a')]['rawAttributes'],function(_0x23e126){return{'name':_0x23e126[_0x7598('0x2b')],'type':_0x23e126[_0x7598('0x2c')]['key']};});_0x519e9b['model']=_[_0x7598('0x2d')](_0x3bd86b,'name');_0x519e9b[_0x7598('0x2e')]=_[_0x7598('0x2f')](_0x15107d[_0x7598('0x2e')]);_0x519e9b[_0x7598('0x30')]=_['intersection'](_0x519e9b[_0x7598('0x31')],_0x519e9b[_0x7598('0x2e')]);_0x1654f7[_0x7598('0x32')]=_[_0x7598('0x33')](_0x519e9b[_0x7598('0x31')],qs[_0x7598('0x34')](_0x15107d[_0x7598('0x2e')][_0x7598('0x34')]));_0x1654f7[_0x7598('0x32')]=_0x1654f7['attributes'][_0x7598('0x35')]?_0x1654f7['attributes']:_0x519e9b[_0x7598('0x31')];if(!_0x15107d[_0x7598('0x2e')][_0x7598('0x36')](_0x7598('0x37'))){_0x1654f7[_0x7598('0x1b')]=qs[_0x7598('0x1b')](_0x15107d[_0x7598('0x2e')][_0x7598('0x1b')]);_0x1654f7['offset']=qs['offset'](_0x15107d[_0x7598('0x2e')][_0x7598('0x38')]);}_0x1654f7['order']=qs['sort'](_0x15107d['query'][_0x7598('0x39')]);_0x1654f7[_0x7598('0x3a')]=qs['filters'](_['pick'](_0x15107d[_0x7598('0x2e')],_0x519e9b[_0x7598('0x30')]),_0x3bd86b);if(_0x15107d[_0x7598('0x2e')][_0x7598('0x3b')]){_0x1654f7[_0x7598('0x3a')]=_[_0x7598('0x3c')](_0x1654f7[_0x7598('0x3a')],{'$or':_['map'](_0x3bd86b,function(_0x118bb2){if(_0x118bb2['type']!=='VIRTUAL'){var _0x6308fe={};_0x6308fe[_0x118bb2[_0x7598('0x28')]]={'$like':'%'+_0x15107d[_0x7598('0x2e')]['filter']+'%'};return _0x6308fe;}})});}_0x1654f7=_[_0x7598('0x3c')]({},_0x1654f7,_0x15107d['options']);var _0x42c5a6={'where':_0x1654f7[_0x7598('0x3a')]};return db['Campaign'][_0x7598('0x1c')](_0x42c5a6)[_0x7598('0x22')](function(_0x1ca78c){_0x1d9661['count']=_0x1ca78c;if(_0x15107d[_0x7598('0x2e')][_0x7598('0x3d')]){_0x1654f7[_0x7598('0x3e')]=[{'all':!![]}];}return db[_0x7598('0x2a')][_0x7598('0x3f')](_0x1654f7);})[_0x7598('0x22')](function(_0x102b91){_0x1d9661[_0x7598('0x40')]=_0x102b91;return _0x1d9661;})[_0x7598('0x22')](respondWithFilteredResult(_0x386ae4,_0x1654f7))['catch'](handleError(_0x386ae4,null));};exports[_0x7598('0x41')]=function(_0x553689,_0x14d6d1){var _0x456a24={'raw':![],'where':{'id':_0x553689['params']['id']}},_0x292dca={};_0x292dca[_0x7598('0x31')]=_['keys'](db[_0x7598('0x2a')][_0x7598('0x42')]);_0x292dca[_0x7598('0x2e')]=_[_0x7598('0x2f')](_0x553689[_0x7598('0x2e')]);_0x292dca['filters']=_['intersection'](_0x292dca[_0x7598('0x31')],_0x292dca[_0x7598('0x2e')]);_0x456a24[_0x7598('0x32')]=_[_0x7598('0x33')](_0x292dca['model'],qs[_0x7598('0x34')](_0x553689['query']['fields']));_0x456a24[_0x7598('0x32')]=_0x456a24[_0x7598('0x32')][_0x7598('0x35')]?_0x456a24[_0x7598('0x32')]:_0x292dca['model'];if(_0x553689[_0x7598('0x2e')][_0x7598('0x3d')]){_0x456a24[_0x7598('0x3e')]=[{'all':!![]}];}_0x456a24=_[_0x7598('0x3c')]({},_0x456a24,_0x553689[_0x7598('0x43')]);return db[_0x7598('0x2a')][_0x7598('0x44')](_0x456a24)[_0x7598('0x22')](handleEntityNotFound(_0x14d6d1,null))[_0x7598('0x22')](respondWithResult(_0x14d6d1,null))[_0x7598('0x45')](handleError(_0x14d6d1,null));};exports[_0x7598('0x46')]=function(_0x2efa18,_0x12c6a6){return db['Campaign']['create'](_0x2efa18['body'],{})[_0x7598('0x22')](function(_0x1fae29){var _0x13da32=_0x2efa18[_0x7598('0x47')][_0x7598('0x24')]({'plain':!![]});if(!_0x13da32)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x13da32['role']===_0x7598('0x47')){var _0x33a6a5=_0x1fae29['get']({'plain':!![]});var _0x47cb9d='IvrCampaigns';return db[_0x7598('0x48')]['find']({'where':{'name':_0x47cb9d,'userProfileId':_0x13da32['userProfileId']},'raw':!![]})[_0x7598('0x22')](function(_0x2a5532){if(_0x2a5532&&_0x2a5532[_0x7598('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0x33a6a5[_0x7598('0x28')],'resourceId':_0x33a6a5['id'],'type':_0x2a5532[_0x7598('0x28')],'sectionId':_0x2a5532['id']},{})[_0x7598('0x22')](function(){return _0x1fae29;});}else{return _0x1fae29;}})['catch'](function(_0x1ce912){logger[_0x7598('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ce912);throw _0x1ce912;});}return _0x1fae29;})[_0x7598('0x22')](respondWithResult(_0x12c6a6,0xc9))[_0x7598('0x45')](handleError(_0x12c6a6,null));};exports['clone']=function(_0x570d3d,_0x357921){var _0x42486a={'where':{'id':_0x570d3d[_0x7598('0x4a')]['id']}},_0x3891fb={};_0x3891fb['model']=_[_0x7598('0x2f')](db[_0x7598('0x2a')][_0x7598('0x42')]);_0x42486a[_0x7598('0x32')]=_[_0x7598('0x33')](_0x3891fb[_0x7598('0x31')],qs[_0x7598('0x34')](_0x570d3d[_0x7598('0x2e')]['fields']));_0x42486a[_0x7598('0x32')]=_0x42486a['attributes'][_0x7598('0x35')]?_0x42486a[_0x7598('0x32')]:_0x3891fb[_0x7598('0x31')];if(_0x570d3d[_0x7598('0x2e')]['includeAll']){_0x42486a[_0x7598('0x3e')]=[{'all':!![]}];}_0x42486a=_['merge']({},_0x42486a,_0x570d3d['options']);return db[_0x7598('0x2a')][_0x7598('0x44')](_0x42486a)[_0x7598('0x22')](handleEntityNotFound(_0x357921,null))[_0x7598('0x22')](function(_0xfe8ab9){if(_0xfe8ab9){var _0x3f29fc=_0xfe8ab9[_0x7598('0x24')]({'plain':!![]});_0x3f29fc=qs[_0x7598('0x4b')](_0x3f29fc,['id',_0x7598('0x4c'),'updatedAt']);_0x570d3d['body']=_[_0x7598('0x4b')](_0x570d3d[_0x7598('0x4d')],['id',_0x7598('0x4c'),_0x7598('0x4e')]);return db['Campaign'][_0x7598('0x46')](_[_0x7598('0x3c')](_0x3f29fc,_0x570d3d[_0x7598('0x4d')]),{'include':_0x570d3d[_0x7598('0x2e')]['includeAll']?[{'all':!![]}]:undefined})[_0x7598('0x22')](function(_0x2ee0b9){var _0x5e732a=_0x570d3d['user'][_0x7598('0x24')]({'plain':!![]});if(!_0x5e732a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5e732a[_0x7598('0x4f')]===_0x7598('0x47')){var _0x4d5e05=_0x2ee0b9['get']({'plain':!![]});var _0x4d130c='IvrCampaigns';return db[_0x7598('0x48')][_0x7598('0x44')]({'where':{'name':_0x4d130c,'userProfileId':_0x5e732a['userProfileId']},'raw':!![]})['then'](function(_0xc03282){if(_0xc03282&&_0xc03282[_0x7598('0x49')]===0x0){return db[_0x7598('0x25')]['create']({'name':_0x4d5e05[_0x7598('0x28')],'resourceId':_0x4d5e05['id'],'type':_0xc03282[_0x7598('0x28')],'sectionId':_0xc03282['id']},{})['then'](function(){return _0x2ee0b9;});}else{return _0x2ee0b9;}})[_0x7598('0x45')](function(_0x3a26a7){logger[_0x7598('0x26')](_0x7598('0x50'),_0x3a26a7);throw _0x3a26a7;});}return _0x2ee0b9;});}})[_0x7598('0x22')](respondWithResult(_0x357921,0xc9))[_0x7598('0x45')](handleError(_0x357921,null));};exports['update']=function(_0x5d1ffa,_0x41e2fb){if(_0x5d1ffa[_0x7598('0x4d')]['id']){delete _0x5d1ffa[_0x7598('0x4d')]['id'];}return db['Campaign'][_0x7598('0x44')]({'where':{'id':_0x5d1ffa[_0x7598('0x4a')]['id']}})['then'](handleEntityNotFound(_0x41e2fb,null))[_0x7598('0x22')](saveUpdates(_0x5d1ffa[_0x7598('0x4d')],null))[_0x7598('0x22')](respondWithResult(_0x41e2fb,null))[_0x7598('0x45')](handleError(_0x41e2fb,null));};exports['destroy']=function(_0x14467e,_0x46617b){return db[_0x7598('0x2a')][_0x7598('0x44')]({'where':{'id':_0x14467e[_0x7598('0x4a')]['id']}})['then'](handleEntityNotFound(_0x46617b,null))[_0x7598('0x22')](removeEntity(_0x46617b,null))['catch'](handleError(_0x46617b,null));};exports['getHoppers']=function(_0x32ed35,_0x182a26,_0x28d96b){var _0x2b729a={'raw':!![],'where':{}};var _0x57c598={};var _0x132f3b={'count':0x0,'rows':[]};return db[_0x7598('0x2a')][_0x7598('0x51')]({'where':{'id':_0x32ed35[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](handleEntityNotFound(_0x182a26,null))[_0x7598('0x22')](function(_0x5d3f49){if(_0x5d3f49){_0x57c598['model']=_[_0x7598('0x2f')](db[_0x7598('0x52')][_0x7598('0x42')]);_0x57c598['query']=_[_0x7598('0x2f')](_0x32ed35['query']);_0x57c598[_0x7598('0x30')]=_[_0x7598('0x33')](_0x57c598[_0x7598('0x31')],_0x57c598[_0x7598('0x2e')]);_0x2b729a[_0x7598('0x32')]=_[_0x7598('0x33')](_0x57c598[_0x7598('0x31')],qs[_0x7598('0x34')](_0x32ed35['query'][_0x7598('0x34')]));_0x2b729a[_0x7598('0x32')]=_0x2b729a[_0x7598('0x32')][_0x7598('0x35')]?_0x2b729a[_0x7598('0x32')]:_0x57c598[_0x7598('0x31')];if(!_0x32ed35[_0x7598('0x2e')][_0x7598('0x36')]('nolimit')){_0x2b729a[_0x7598('0x1b')]=qs['limit'](_0x32ed35[_0x7598('0x2e')][_0x7598('0x1b')]);_0x2b729a['offset']=qs[_0x7598('0x38')](_0x32ed35[_0x7598('0x2e')]['offset']);}_0x2b729a['order']=qs[_0x7598('0x39')](_0x32ed35['query']['sort']);_0x2b729a[_0x7598('0x3a')]=qs['filters'](_[_0x7598('0x53')](_0x32ed35[_0x7598('0x2e')],_0x57c598[_0x7598('0x30')]));_0x2b729a['where']['CampaignId']=_0x5d3f49['id'];if(_0x32ed35[_0x7598('0x2e')][_0x7598('0x3b')]){_0x2b729a[_0x7598('0x3a')]=_['merge'](_0x2b729a['where'],{'$or':_['map'](_0x2b729a['attributes'],function(_0xf05e17){var _0x1d7413={};_0x1d7413[_0xf05e17]={'$like':'%'+_0x32ed35[_0x7598('0x2e')][_0x7598('0x3b')]+'%'};return _0x1d7413;})});}_0x2b729a=_['merge']({},_0x2b729a,_0x32ed35[_0x7598('0x43')]);return db[_0x7598('0x52')]['count']({'where':_0x2b729a[_0x7598('0x3a')]})[_0x7598('0x22')](function(_0x4191dd){_0x132f3b['count']=_0x4191dd;if(_0x32ed35[_0x7598('0x2e')]['includeAll']){_0x2b729a[_0x7598('0x3e')]=[{'all':!![]}];}return db[_0x7598('0x52')]['findAll'](_0x2b729a);})['then'](function(_0x12c235){_0x132f3b[_0x7598('0x40')]=_0x12c235;return _0x132f3b;});}})['then'](respondWithFilteredResult(_0x182a26,_0x2b729a))[_0x7598('0x45')](handleError(_0x182a26,null));};exports['getHopperHistories']=function(_0x5abcf3,_0x25e149,_0x3b286f){var _0x868882={'raw':!![],'where':{}};var _0x165391={};var _0x8af083={'count':0x0,'rows':[]};return db[_0x7598('0x2a')][_0x7598('0x51')]({'where':{'id':_0x5abcf3[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](handleEntityNotFound(_0x25e149,null))[_0x7598('0x22')](function(_0x99d323){if(_0x99d323){_0x165391['model']=_[_0x7598('0x2f')](db[_0x7598('0x54')][_0x7598('0x42')]);_0x165391['query']=_[_0x7598('0x2f')](_0x5abcf3[_0x7598('0x2e')]);_0x165391['filters']=_[_0x7598('0x33')](_0x165391[_0x7598('0x31')],_0x165391[_0x7598('0x2e')]);_0x868882[_0x7598('0x32')]=_[_0x7598('0x33')](_0x165391[_0x7598('0x31')],qs['fields'](_0x5abcf3[_0x7598('0x2e')][_0x7598('0x34')]));_0x868882[_0x7598('0x32')]=_0x868882['attributes'][_0x7598('0x35')]?_0x868882[_0x7598('0x32')]:_0x165391['model'];if(!_0x5abcf3[_0x7598('0x2e')][_0x7598('0x36')](_0x7598('0x37'))){_0x868882['limit']=qs[_0x7598('0x1b')](_0x5abcf3[_0x7598('0x2e')]['limit']);_0x868882[_0x7598('0x38')]=qs[_0x7598('0x38')](_0x5abcf3[_0x7598('0x2e')][_0x7598('0x38')]);}_0x868882[_0x7598('0x55')]=qs[_0x7598('0x39')](_0x5abcf3['query'][_0x7598('0x39')]);_0x868882['where']=qs[_0x7598('0x30')](_[_0x7598('0x53')](_0x5abcf3['query'],_0x165391['filters']));_0x868882[_0x7598('0x3a')][_0x7598('0x56')]=_0x99d323['id'];if(_0x5abcf3[_0x7598('0x2e')][_0x7598('0x3b')]){_0x868882[_0x7598('0x3a')]=_[_0x7598('0x3c')](_0x868882[_0x7598('0x3a')],{'$or':_[_0x7598('0x2d')](_0x868882['attributes'],function(_0x5b00d3){var _0x50cc05={};_0x50cc05[_0x5b00d3]={'$like':'%'+_0x5abcf3['query'][_0x7598('0x3b')]+'%'};return _0x50cc05;})});}_0x868882=_['merge']({},_0x868882,_0x5abcf3[_0x7598('0x43')]);return db['CmHopperHistory'][_0x7598('0x1c')]({'where':_0x868882[_0x7598('0x3a')]})['then'](function(_0x2442cc){_0x8af083['count']=_0x2442cc;if(_0x5abcf3['query'][_0x7598('0x3d')]){_0x868882[_0x7598('0x3e')]=[{'all':!![]}];}return db[_0x7598('0x54')]['findAll'](_0x868882);})[_0x7598('0x22')](function(_0x3e53fe){_0x8af083[_0x7598('0x40')]=_0x3e53fe;return _0x8af083;});}})[_0x7598('0x22')](respondWithFilteredResult(_0x25e149,_0x868882))[_0x7598('0x45')](handleError(_0x25e149,null));};exports[_0x7598('0x57')]=function(_0x5b99df,_0x58715c,_0x4dd9cc){var _0x1d46ce={'raw':!![],'where':{}};var _0x5e4530={};var _0x292bec={'count':0x0,'rows':[]};return db['Campaign'][_0x7598('0x51')]({'where':{'id':_0x5b99df[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](handleEntityNotFound(_0x58715c,null))['then'](function(_0x595590){if(_0x595590){_0x5e4530[_0x7598('0x31')]=_[_0x7598('0x2f')](db[_0x7598('0x58')][_0x7598('0x42')]);_0x5e4530[_0x7598('0x2e')]=_[_0x7598('0x2f')](_0x5b99df[_0x7598('0x2e')]);_0x5e4530[_0x7598('0x30')]=_[_0x7598('0x33')](_0x5e4530[_0x7598('0x31')],_0x5e4530[_0x7598('0x2e')]);_0x1d46ce[_0x7598('0x32')]=_['intersection'](_0x5e4530[_0x7598('0x31')],qs[_0x7598('0x34')](_0x5b99df[_0x7598('0x2e')][_0x7598('0x34')]));_0x1d46ce[_0x7598('0x32')]=_0x1d46ce['attributes'][_0x7598('0x35')]?_0x1d46ce[_0x7598('0x32')]:_0x5e4530[_0x7598('0x31')];if(!_0x5b99df[_0x7598('0x2e')][_0x7598('0x36')](_0x7598('0x37'))){_0x1d46ce['limit']=qs[_0x7598('0x1b')](_0x5b99df['query']['limit']);_0x1d46ce['offset']=qs[_0x7598('0x38')](_0x5b99df['query'][_0x7598('0x38')]);}_0x1d46ce['order']=qs[_0x7598('0x39')](_0x5b99df['query'][_0x7598('0x39')]);_0x1d46ce['where']=qs[_0x7598('0x30')](_[_0x7598('0x53')](_0x5b99df[_0x7598('0x2e')],_0x5e4530['filters']));_0x1d46ce['where'][_0x7598('0x56')]=_0x595590['id'];if(_0x5b99df[_0x7598('0x2e')][_0x7598('0x3b')]){_0x1d46ce['where']=_[_0x7598('0x3c')](_0x1d46ce[_0x7598('0x3a')],{'$or':_[_0x7598('0x2d')](_0x1d46ce[_0x7598('0x32')],function(_0x865c24){var _0x2cd4df={};_0x2cd4df[_0x865c24]={'$like':'%'+_0x5b99df[_0x7598('0x2e')][_0x7598('0x3b')]+'%'};return _0x2cd4df;})});}_0x1d46ce=_[_0x7598('0x3c')]({},_0x1d46ce,_0x5b99df[_0x7598('0x43')]);return db['CmHopperFinal']['count']({'where':_0x1d46ce['where']})[_0x7598('0x22')](function(_0x1aaaa4){_0x292bec[_0x7598('0x1c')]=_0x1aaaa4;if(_0x5b99df[_0x7598('0x2e')][_0x7598('0x3d')]){_0x1d46ce['include']=[{'all':!![]}];}return db[_0x7598('0x58')][_0x7598('0x3f')](_0x1d46ce);})['then'](function(_0x307823){_0x292bec[_0x7598('0x40')]=_0x307823;return _0x292bec;});}})[_0x7598('0x22')](respondWithFilteredResult(_0x58715c,_0x1d46ce))['catch'](handleError(_0x58715c,null));};exports[_0x7598('0x59')]=function(_0x591aaf,_0x2db7f5,_0x41d817){var _0x2c814b={'raw':!![],'where':{}};var _0x51e7c0={};var _0x43403e={'count':0x0,'rows':[]};return db[_0x7598('0x2a')][_0x7598('0x51')]({'where':{'id':_0x591aaf['params']['id']}})[_0x7598('0x22')](handleEntityNotFound(_0x2db7f5,null))['then'](function(_0x271a56){if(_0x271a56){_0x51e7c0['model']=_[_0x7598('0x2f')](db['CmHopperBlack'][_0x7598('0x42')]);_0x51e7c0[_0x7598('0x2e')]=_[_0x7598('0x2f')](_0x591aaf[_0x7598('0x2e')]);_0x51e7c0[_0x7598('0x30')]=_[_0x7598('0x33')](_0x51e7c0['model'],_0x51e7c0['query']);_0x2c814b[_0x7598('0x32')]=_[_0x7598('0x33')](_0x51e7c0[_0x7598('0x31')],qs[_0x7598('0x34')](_0x591aaf[_0x7598('0x2e')][_0x7598('0x34')]));_0x2c814b[_0x7598('0x32')]=_0x2c814b['attributes'][_0x7598('0x35')]?_0x2c814b['attributes']:_0x51e7c0[_0x7598('0x31')];if(!_0x591aaf['query']['hasOwnProperty'](_0x7598('0x37'))){_0x2c814b['limit']=qs['limit'](_0x591aaf[_0x7598('0x2e')][_0x7598('0x1b')]);_0x2c814b[_0x7598('0x38')]=qs[_0x7598('0x38')](_0x591aaf[_0x7598('0x2e')][_0x7598('0x38')]);}_0x2c814b[_0x7598('0x55')]=qs[_0x7598('0x39')](_0x591aaf[_0x7598('0x2e')][_0x7598('0x39')]);_0x2c814b['where']=qs[_0x7598('0x30')](_['pick'](_0x591aaf['query'],_0x51e7c0[_0x7598('0x30')]));_0x2c814b[_0x7598('0x3a')]['CampaignId']=_0x271a56['id'];if(_0x591aaf[_0x7598('0x2e')][_0x7598('0x3b')]){_0x2c814b[_0x7598('0x3a')]=_[_0x7598('0x3c')](_0x2c814b[_0x7598('0x3a')],{'$or':_[_0x7598('0x2d')](_0x2c814b[_0x7598('0x32')],function(_0x31e529){var _0x34c9b6={};_0x34c9b6[_0x31e529]={'$like':'%'+_0x591aaf[_0x7598('0x2e')][_0x7598('0x3b')]+'%'};return _0x34c9b6;})});}_0x2c814b=_['merge']({},_0x2c814b,_0x591aaf['options']);return db[_0x7598('0x5a')]['count']({'where':_0x2c814b[_0x7598('0x3a')]})[_0x7598('0x22')](function(_0x31b0d4){_0x43403e['count']=_0x31b0d4;if(_0x591aaf[_0x7598('0x2e')][_0x7598('0x3d')]){_0x2c814b[_0x7598('0x3e')]=[{'all':!![]}];}return db[_0x7598('0x5a')]['findAll'](_0x2c814b);})[_0x7598('0x22')](function(_0x44921f){_0x43403e[_0x7598('0x40')]=_0x44921f;return _0x43403e;});}})[_0x7598('0x22')](respondWithFilteredResult(_0x2db7f5,_0x2c814b))[_0x7598('0x45')](handleError(_0x2db7f5,null));};exports[_0x7598('0x5b')]=function(_0x46cd3a,_0x3876e2,_0x46250a){var _0x3302bb={};var _0x526ed8={};var _0x304638;var _0x4e671b;return db[_0x7598('0x2a')][_0x7598('0x51')]({'where':{'id':_0x46cd3a[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](handleEntityNotFound(_0x3876e2,null))['then'](function(_0x249552){if(_0x249552){_0x304638=_0x249552;_0x526ed8[_0x7598('0x31')]=_[_0x7598('0x2f')](db[_0x7598('0x5c')]['rawAttributes']);_0x526ed8['query']=_[_0x7598('0x2f')](_0x46cd3a['query']);_0x526ed8[_0x7598('0x30')]=_[_0x7598('0x33')](_0x526ed8[_0x7598('0x31')],_0x526ed8[_0x7598('0x2e')]);_0x3302bb[_0x7598('0x32')]=_[_0x7598('0x33')](_0x526ed8[_0x7598('0x31')],qs[_0x7598('0x34')](_0x46cd3a[_0x7598('0x2e')][_0x7598('0x34')]));_0x3302bb[_0x7598('0x32')]=_0x3302bb[_0x7598('0x32')]['length']?_0x3302bb['attributes']:_0x526ed8[_0x7598('0x31')];_0x3302bb['order']=qs[_0x7598('0x39')](_0x46cd3a[_0x7598('0x2e')]['sort']);_0x3302bb[_0x7598('0x3a')]=qs[_0x7598('0x30')](_[_0x7598('0x53')](_0x46cd3a[_0x7598('0x2e')],_0x526ed8[_0x7598('0x30')]));if(_0x46cd3a[_0x7598('0x2e')][_0x7598('0x3b')]){_0x3302bb[_0x7598('0x3a')]=_[_0x7598('0x3c')](_0x3302bb[_0x7598('0x3a')],{'$or':_[_0x7598('0x2d')](_0x3302bb[_0x7598('0x32')],function(_0x5ac39e){var _0x14ee34={};_0x14ee34[_0x5ac39e]={'$like':'%'+_0x46cd3a[_0x7598('0x2e')][_0x7598('0x3b')]+'%'};return _0x14ee34;})});}_0x3302bb=_[_0x7598('0x3c')]({},_0x3302bb,_0x46cd3a['options']);return _0x304638[_0x7598('0x5b')](_0x3302bb);}})[_0x7598('0x22')](function(_0x457fb5){if(_0x457fb5){_0x4e671b=_0x457fb5[_0x7598('0x35')];if(!_0x46cd3a[_0x7598('0x2e')][_0x7598('0x36')](_0x7598('0x37'))){_0x3302bb['limit']=qs['limit'](_0x46cd3a[_0x7598('0x2e')]['limit']);_0x3302bb[_0x7598('0x38')]=qs[_0x7598('0x38')](_0x46cd3a[_0x7598('0x2e')]['offset']);}return _0x304638[_0x7598('0x5b')](_0x3302bb);}})[_0x7598('0x22')](function(_0x566b80){if(_0x566b80){return _0x566b80?{'count':_0x4e671b,'rows':_0x566b80}:null;}})[_0x7598('0x22')](respondWithResult(_0x3876e2,null))['catch'](handleError(_0x3876e2,null));};exports[_0x7598('0x5d')]=function(_0x3b06d6,_0x5cbb2b,_0x4d521d){var _0x30f99d,_0x2a6f9b;var _0x58e3fc=[];var _0x336356=moment()[_0x7598('0x5e')](_0x7598('0x5f'));return db[_0x7598('0x2a')][_0x7598('0x44')]({'where':{'id':_0x3b06d6['params']['id']}})['then'](handleEntityNotFound(_0x5cbb2b,null))[_0x7598('0x22')](function(_0xe6cb69){if(_0xe6cb69){_0x2a6f9b=_0xe6cb69;return _0xe6cb69['addLists'](_0x3b06d6['body'][_0x7598('0x60')],_[_0x7598('0x4b')](_0x3b06d6[_0x7598('0x4d')],[_0x7598('0x60'),'id'])||{});}return null;})[_0x7598('0x61')](function(_0x3bd2ab){var _0x22fd33;var _0x43266d;_0x30f99d=_0x3bd2ab||[];var _0x172c6d=[];if(_0x3bd2ab){for(var _0x273efd=0x0;_0x273efd<_0x3bd2ab[_0x7598('0x35')];_0x273efd+=0x1){var _0x21762a=_0x3bd2ab[_0x273efd][_0x7598('0x24')]({'plain':!![]});_0x2a6f9b[_0x7598('0x62')]=_0x3b06d6[_0x7598('0x4d')][_0x7598('0x62')]?_0x3b06d6[_0x7598('0x4d')][_0x7598('0x62')]:_0x2a6f9b[_0x7598('0x62')];switch(_0x2a6f9b[_0x7598('0x62')]){case'always':_0x22fd33=squel[_0x7598('0x63')]()[_0x7598('0x64')](_0x7598('0x65'))[_0x7598('0x66')]([_0x7598('0x67'),'scheduledAt',_0x7598('0x68'),_0x7598('0x69'),_0x7598('0x56'),'createdAt',_0x7598('0x4e')],squel[_0x7598('0x6a')]()[_0x7598('0x6b')](_0x7598('0x67'),'phone')[_0x7598('0x6b')](_0x7598('0x6c'),'scheduledAt')[_0x7598('0x6b')]('id',_0x7598('0x68'))[_0x7598('0x6b')](_0x21762a[_0x7598('0x6d')][_0x7598('0x6e')](),'ListId')[_0x7598('0x6b')](_0x3b06d6['params']['id'][_0x7598('0x6e')](),_0x7598('0x56'))[_0x7598('0x6b')]('\x27'+_0x336356+'\x27',_0x7598('0x4c'))[_0x7598('0x6b')]('\x27'+_0x336356+'\x27','updatedAt')[_0x7598('0x6f')](_0x7598('0x70'))[_0x7598('0x3a')](_0x7598('0x71'))[_0x7598('0x3a')]('ListId\x20=\x20?',_0x21762a[_0x7598('0x6d')][_0x7598('0x6e')]())[_0x7598('0x3a')](_0x7598('0x72'))['where'](_0x7598('0x73'),squel[_0x7598('0x6a')]()[_0x7598('0x6b')](_0x7598('0x74'))[_0x7598('0x6f')]('cm_hopper_final')[_0x7598('0x3a')](_0x7598('0x75'),_0x3b06d6['params']['id'][_0x7598('0x6e')]()))[_0x7598('0x3a')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0x7598('0x76'))[_0x7598('0x6f')](_0x7598('0x65'))[_0x7598('0x3a')]('CampaignId\x20=\x20?',_0x3b06d6[_0x7598('0x4a')]['id'][_0x7598('0x6e')]())))[_0x7598('0x6e')]();break;case'onlyIfOpen':_0x22fd33=squel[_0x7598('0x63')]()[_0x7598('0x64')](_0x7598('0x65'))[_0x7598('0x66')]([_0x7598('0x67'),'scheduledAt',_0x7598('0x68'),'ListId',_0x7598('0x56'),'createdAt','updatedAt'],squel[_0x7598('0x6a')]()['field'](_0x7598('0x67'),_0x7598('0x67'))['field'](_0x7598('0x6c'),_0x7598('0x77'))[_0x7598('0x6b')]('id',_0x7598('0x68'))[_0x7598('0x6b')](_0x21762a[_0x7598('0x6d')][_0x7598('0x6e')](),_0x7598('0x69'))[_0x7598('0x6b')](_0x3b06d6[_0x7598('0x4a')]['id']['toString'](),_0x7598('0x56'))[_0x7598('0x6b')]('\x27'+_0x336356+'\x27',_0x7598('0x4c'))[_0x7598('0x6b')]('\x27'+_0x336356+'\x27',_0x7598('0x4e'))[_0x7598('0x6f')]('cm_contacts')['where'](_0x7598('0x71'))['where'](_0x7598('0x78'),_0x21762a[_0x7598('0x6d')][_0x7598('0x6e')]())[_0x7598('0x3a')](_0x7598('0x72'))[_0x7598('0x3a')](_0x7598('0x73'),squel[_0x7598('0x6a')]()['field'](_0x7598('0x76'))[_0x7598('0x6f')](_0x7598('0x65'))[_0x7598('0x3a')](_0x7598('0x75'),_0x3b06d6[_0x7598('0x4a')]['id'][_0x7598('0x6e')]())))['toString']();break;default:_0x22fd33=squel[_0x7598('0x63')]()[_0x7598('0x64')](_0x7598('0x65'))['fromQuery']([_0x7598('0x67'),_0x7598('0x77'),_0x7598('0x68'),_0x7598('0x69'),_0x7598('0x56'),'createdAt','updatedAt'],squel[_0x7598('0x6a')]()[_0x7598('0x6b')](_0x7598('0x67'),_0x7598('0x67'))['field'](_0x7598('0x6c'),'scheduledAt')[_0x7598('0x6b')]('id',_0x7598('0x68'))[_0x7598('0x6b')](_0x21762a[_0x7598('0x6d')][_0x7598('0x6e')](),'ListId')[_0x7598('0x6b')](_0x3b06d6['params']['id'][_0x7598('0x6e')](),_0x7598('0x56'))[_0x7598('0x6b')]('\x27'+_0x336356+'\x27',_0x7598('0x4c'))[_0x7598('0x6b')]('\x27'+_0x336356+'\x27',_0x7598('0x4e'))['from'](_0x7598('0x70'))[_0x7598('0x3a')]('deletedAt\x20IS\x20NULL')[_0x7598('0x3a')]('ListId\x20=\x20?',_0x21762a[_0x7598('0x6d')][_0x7598('0x6e')]())[_0x7598('0x3a')]('phone\x20IS\x20NOT\x20NULL'))[_0x7598('0x6e')]();}_0x43266d=squel[_0x7598('0x63')]()['into'](_0x7598('0x79'))[_0x7598('0x66')]([_0x7598('0x7a'),_0x7598('0x77'),_0x7598('0x67'),_0x7598('0x7b'),_0x7598('0x4c'),_0x7598('0x4e')],squel['select']()[_0x7598('0x6b')]('h.id','id')[_0x7598('0x6b')](_0x7598('0x6c'),_0x7598('0x77'))['field'](_0x7598('0x7c'),_0x7598('0x67'))['field'](_0x7598('0x7d'),_0x7598('0x7b'))['field']('\x27'+_0x336356+'\x27',_0x7598('0x4c'))[_0x7598('0x6b')]('\x27'+_0x336356+'\x27','updatedAt')[_0x7598('0x6f')]('cm_contact_has_items','ci')['join']('cm_hopper','h',_0x7598('0x7e'))[_0x7598('0x3a')]('h.ListId\x20=\x20?',_0x21762a['CmListId'][_0x7598('0x6e')]())[_0x7598('0x3a')]('h.CampaignId=?',_0x3b06d6[_0x7598('0x4a')]['id']['toString']())[_0x7598('0x3a')](_0x7598('0x7f'),_0x336356))[_0x7598('0x6e')]();_0x172c6d[_0x7598('0x80')](db['sequelize'][_0x7598('0x2e')](_0x22fd33));_0x58e3fc['push'](db[_0x7598('0x81')][_0x7598('0x2e')](_0x43266d));}return BPromise['all'](_0x172c6d);}})[_0x7598('0x22')](function(){return BPromise[_0x7598('0x82')](_0x58e3fc);})[_0x7598('0x22')](function(){return _0x30f99d;})['then'](respondWithResult(_0x5cbb2b,null))['catch'](handleError(_0x5cbb2b,null));};exports[_0x7598('0x83')]=function(_0x3900b1,_0x4f3137,_0x8c1555){return db[_0x7598('0x2a')]['find']({'where':{'id':_0x3900b1[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](handleEntityNotFound(_0x4f3137,null))[_0x7598('0x22')](function(_0x4d3edc){if(_0x4d3edc){return _0x4d3edc[_0x7598('0x83')](_0x3900b1[_0x7598('0x2e')][_0x7598('0x60')]);}})[_0x7598('0x22')](function(_0x95e22){if(_0x95e22){return db[_0x7598('0x52')][_0x7598('0x23')]({'where':{'ListId':_0x3900b1['query'][_0x7598('0x60')],'CampaignId':_0x3900b1[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](function(){return _0x95e22;});}})[_0x7598('0x22')](respondWithStatusCode(_0x4f3137,null))[_0x7598('0x45')](handleError(_0x4f3137,null));};exports[_0x7598('0x84')]=function(_0x3ed982,_0xbd2642,_0x39d1a1){var _0xb087f8={};var _0x2e3227={};var _0x1ef78d;var _0x3e1ed0;return db[_0x7598('0x2a')][_0x7598('0x51')]({'where':{'id':_0x3ed982[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](handleEntityNotFound(_0xbd2642,null))['then'](function(_0x41fa76){if(_0x41fa76){_0x1ef78d=_0x41fa76;_0x2e3227['model']=_[_0x7598('0x2f')](db['CmList']['rawAttributes']);_0x2e3227[_0x7598('0x2e')]=_['keys'](_0x3ed982[_0x7598('0x2e')]);_0x2e3227['filters']=_['intersection'](_0x2e3227[_0x7598('0x31')],_0x2e3227[_0x7598('0x2e')]);_0xb087f8['attributes']=_['intersection'](_0x2e3227[_0x7598('0x31')],qs['fields'](_0x3ed982[_0x7598('0x2e')][_0x7598('0x34')]));_0xb087f8[_0x7598('0x32')]=_0xb087f8[_0x7598('0x32')][_0x7598('0x35')]?_0xb087f8[_0x7598('0x32')]:_0x2e3227[_0x7598('0x31')];_0xb087f8[_0x7598('0x55')]=qs['sort'](_0x3ed982[_0x7598('0x2e')][_0x7598('0x39')]);_0xb087f8[_0x7598('0x3a')]=qs[_0x7598('0x30')](_['pick'](_0x3ed982[_0x7598('0x2e')],_0x2e3227[_0x7598('0x30')]));if(_0x3ed982[_0x7598('0x2e')]['filter']){_0xb087f8['where']=_['merge'](_0xb087f8['where'],{'$or':_[_0x7598('0x2d')](_0xb087f8[_0x7598('0x32')],function(_0x487b33){var _0x4d435c={};_0x4d435c[_0x487b33]={'$like':'%'+_0x3ed982[_0x7598('0x2e')][_0x7598('0x3b')]+'%'};return _0x4d435c;})});}_0xb087f8=_['merge']({},_0xb087f8,_0x3ed982[_0x7598('0x43')]);return _0x1ef78d[_0x7598('0x84')](_0xb087f8);}})[_0x7598('0x22')](function(_0xff29ed){if(_0xff29ed){_0x3e1ed0=_0xff29ed[_0x7598('0x35')];if(!_0x3ed982['query']['hasOwnProperty'](_0x7598('0x37'))){_0xb087f8['limit']=qs[_0x7598('0x1b')](_0x3ed982[_0x7598('0x2e')]['limit']);_0xb087f8['offset']=qs['offset'](_0x3ed982[_0x7598('0x2e')][_0x7598('0x38')]);}return _0x1ef78d[_0x7598('0x84')](_0xb087f8);}})[_0x7598('0x22')](function(_0x2598fa){if(_0x2598fa){return _0x2598fa?{'count':_0x3e1ed0,'rows':_0x2598fa}:null;}})[_0x7598('0x22')](respondWithResult(_0xbd2642,null))[_0x7598('0x45')](handleError(_0xbd2642,null));};exports['addBlackLists']=function(_0x20d65b,_0x55eecb,_0x2f79db){var _0x5ba3a1,_0xe53e76;var _0x183e60=[];var _0x89d105=moment()['format'](_0x7598('0x5f'));return db[_0x7598('0x2a')][_0x7598('0x44')]({'where':{'id':_0x20d65b[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](handleEntityNotFound(_0x55eecb,null))['then'](function(_0x56cda4){if(_0x56cda4){_0xe53e76=_0x56cda4;return _0x56cda4['addBlackLists'](_0x20d65b[_0x7598('0x4d')]['ids'],_['omit'](_0x20d65b[_0x7598('0x4d')],[_0x7598('0x60'),'id'])||{});}return null;})[_0x7598('0x61')](function(_0x22fdd2){var _0x3639ce;var _0x3e8fba;_0x5ba3a1=_0x22fdd2||[];var _0x3fabd0=[];if(_0x22fdd2){for(var _0x1200a6=0x0;_0x1200a6<_0x22fdd2[_0x7598('0x35')];_0x1200a6+=0x1){var _0x33b3b5=_0x22fdd2[_0x1200a6][_0x7598('0x24')]({'plain':!![]});_0x3639ce=squel[_0x7598('0x63')]()[_0x7598('0x64')]('cm_hopper_black')['fromQuery'](['phone','ContactId',_0x7598('0x69'),_0x7598('0x56'),'createdAt',_0x7598('0x4e')],squel[_0x7598('0x6a')]()['field'](_0x7598('0x67'),_0x7598('0x67'))[_0x7598('0x6b')]('id',_0x7598('0x68'))[_0x7598('0x6b')](_0x33b3b5[_0x7598('0x6d')][_0x7598('0x6e')](),'ListId')[_0x7598('0x6b')](_0x20d65b[_0x7598('0x4a')]['id'][_0x7598('0x6e')](),_0x7598('0x56'))['field']('NOW()',_0x7598('0x4c'))[_0x7598('0x6b')](_0x7598('0x6c'),_0x7598('0x4e'))[_0x7598('0x6f')](_0x7598('0x70'))['where']('deletedAt\x20IS\x20NULL')[_0x7598('0x3a')]('ListId\x20=\x20?',_0x33b3b5['CmListId'][_0x7598('0x6e')]())[_0x7598('0x3a')](_0x7598('0x72')))['toString']();_0x3fabd0[_0x7598('0x80')](db[_0x7598('0x81')][_0x7598('0x2e')](_0x3639ce));}return BPromise['all'](_0x3fabd0);}})[_0x7598('0x22')](function(){return _0x5ba3a1;})[_0x7598('0x22')](respondWithResult(_0x55eecb,null))['catch'](handleError(_0x55eecb,null));};exports[_0x7598('0x85')]=function(_0x48dd1e,_0x3ce521,_0x4f5c01){return db[_0x7598('0x2a')][_0x7598('0x44')]({'where':{'id':_0x48dd1e[_0x7598('0x4a')]['id']}})[_0x7598('0x22')](handleEntityNotFound(_0x3ce521,null))[_0x7598('0x22')](function(_0x1c4bc6){if(_0x1c4bc6){return _0x1c4bc6[_0x7598('0x85')](_0x48dd1e[_0x7598('0x2e')][_0x7598('0x60')]);}})[_0x7598('0x22')](function(_0x5a9dcb){if(_0x5a9dcb){return db[_0x7598('0x5a')][_0x7598('0x23')]({'where':{'ListId':_0x48dd1e['query'][_0x7598('0x60')],'CampaignId':_0x48dd1e['params']['id']}})[_0x7598('0x22')](function(){return _0x5a9dcb;});}})[_0x7598('0x22')](respondWithStatusCode(_0x3ce521,null))['catch'](handleError(_0x3ce521,null));};
\ No newline at end of file
index eaa2858..a3cf28e 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(_0x176329,_0x568c84){var _0x31997c=function(_0x3d64df){while(--_0x3d64df){_0x176329['push'](_0x176329['shift']());}};_0x31997c(++_0x568c84);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'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 _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x197127,_0x48bbfd){var _0x558ca6=function(_0x580faf){while(--_0x580faf){_0x197127['push'](_0x197127['shift']());}};_0x558ca6(++_0x48bbfd);}(_0x7a54,0x106));var _0x47a5=function(_0x50e998,_0x281bd1){_0x50e998=_0x50e998-0x0;var _0x180ebf=_0x7a54[_0x50e998];return _0x180ebf;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76d5ec0..16c3a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf430=['limit','include','model','map','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','then','info','Campaign,\x20%s,\x20%s','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetCampaign','Campaign','options','raw','where','attributes'];(function(_0x515afd,_0x1a1e91){var _0x536d53=function(_0x1d3a89){while(--_0x1d3a89){_0x515afd['push'](_0x515afd['shift']());}};_0x536d53(++_0x1a1e91);}(_0xf430,0x1e4));var _0x0f43=function(_0x13e724,_0x296739){_0x13e724=_0x13e724-0x0;var _0x334a44=_0xf430[_0x13e724];return _0x334a44;};'use strict';var _=require(_0x0f43('0x0'));var util=require(_0x0f43('0x1'));var moment=require(_0x0f43('0x2'));var BPromise=require('bluebird');var rs=require(_0x0f43('0x3'));var fs=require('fs');var Redis=require(_0x0f43('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0f43('0x5'))(_0x0f43('0x6'));var config=require(_0x0f43('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0f43('0x8')][_0x0f43('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x490bc1,_0x562cf2,_0x2e8f68){return new BPromise(function(_0x39bc4c,_0x18e735){return client['request'](_0x490bc1,_0x2e8f68)[_0x0f43('0xa')](function(_0x59508b){logger[_0x0f43('0xb')](_0x0f43('0xc'),_0x562cf2,'request\x20sent');logger['debug'](_0x0f43('0xd'),_0x562cf2,_0x0f43('0xe'),JSON[_0x0f43('0xf')](_0x59508b));if(_0x59508b[_0x0f43('0x10')]){if(_0x59508b[_0x0f43('0x10')]['code']===0x1f4){logger[_0x0f43('0x10')](_0x0f43('0xc'),_0x562cf2,_0x59508b[_0x0f43('0x10')][_0x0f43('0x11')]);return _0x18e735(_0x59508b[_0x0f43('0x10')][_0x0f43('0x11')]);}logger[_0x0f43('0x10')](_0x0f43('0xc'),_0x562cf2,_0x59508b[_0x0f43('0x10')][_0x0f43('0x11')]);return _0x39bc4c(_0x59508b[_0x0f43('0x10')]['message']);}else{logger[_0x0f43('0xb')](_0x0f43('0xc'),_0x562cf2,'request\x20sent');_0x39bc4c(_0x59508b[_0x0f43('0x12')][_0x0f43('0x11')]);}})[_0x0f43('0x13')](function(_0x5631e1){logger[_0x0f43('0x10')]('Campaign,\x20%s,\x20%s',_0x562cf2,_0x5631e1);_0x18e735(_0x5631e1);});});}exports[_0x0f43('0x14')]=function(_0x5617c3){var _0x4e294b=this;return new Promise(function(_0x3e25fa,_0x5a7351){return db[_0x0f43('0x15')]['findAll']({'raw':_0x5617c3[_0x0f43('0x16')]?_0x5617c3[_0x0f43('0x16')][_0x0f43('0x17')]===undefined?!![]:![]:!![],'where':_0x5617c3[_0x0f43('0x16')]?_0x5617c3[_0x0f43('0x16')][_0x0f43('0x18')]||null:null,'attributes':_0x5617c3['options']?_0x5617c3[_0x0f43('0x16')][_0x0f43('0x19')]||null:null,'limit':_0x5617c3[_0x0f43('0x16')]?_0x5617c3[_0x0f43('0x16')][_0x0f43('0x1a')]||null:null,'include':_0x5617c3[_0x0f43('0x16')]?_0x5617c3[_0x0f43('0x16')][_0x0f43('0x1b')]?_['map'](_0x5617c3['options'][_0x0f43('0x1b')],function(_0x5c4b61){return{'model':db[_0x5c4b61[_0x0f43('0x1c')]],'as':_0x5c4b61['as'],'attributes':_0x5c4b61[_0x0f43('0x19')],'include':_0x5c4b61[_0x0f43('0x1b')]?_[_0x0f43('0x1d')](_0x5c4b61['include'],function(_0x227f03){return{'model':db[_0x227f03[_0x0f43('0x1c')]],'as':_0x227f03['as'],'attributes':_0x227f03[_0x0f43('0x19')],'include':_0x227f03['include']?_['map'](_0x227f03['include'],function(_0x489fe5){return{'model':db[_0x489fe5[_0x0f43('0x1c')]],'as':_0x489fe5['as'],'attributes':_0x489fe5[_0x0f43('0x19')]};}):[]};}):[]};}):[]:[]})[_0x0f43('0xa')](function(_0x1494e4){logger[_0x0f43('0xb')](_0x0f43('0x14'),_0x5617c3);logger['debug'](_0x0f43('0x14'),_0x5617c3,JSON[_0x0f43('0xf')](_0x1494e4));_0x3e25fa(_0x1494e4);})[_0x0f43('0x13')](function(_0x29e89f){logger[_0x0f43('0x10')]('GetCampaign',_0x29e89f[_0x0f43('0x11')],_0x5617c3);_0x5a7351(_0x4e294b[_0x0f43('0x10')](0x1f4,_0x29e89f[_0x0f43('0x11')]));});});};
\ No newline at end of file
+var _0xdb4b=['Campaign','options','raw','where','attributes','limit','include','map','model','stringify','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','Campaign,\x20%s,\x20%s','result','GetCampaign'];(function(_0x33fd3a,_0x1cf330){var _0x22687a=function(_0x5cd3b2){while(--_0x5cd3b2){_0x33fd3a['push'](_0x33fd3a['shift']());}};_0x22687a(++_0x1cf330);}(_0xdb4b,0xd7));var _0xbdb4=function(_0x8f448c,_0x5587a4){_0x8f448c=_0x8f448c-0x0;var _0x24b4e3=_0xdb4b[_0x8f448c];return _0x24b4e3;};'use strict';var _=require('lodash');var util=require(_0xbdb4('0x0'));var moment=require('moment');var BPromise=require(_0xbdb4('0x1'));var rs=require(_0xbdb4('0x2'));var fs=require('fs');var Redis=require(_0xbdb4('0x3'));var db=require(_0xbdb4('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbdb4('0x5'))(_0xbdb4('0x6'));var config=require(_0xbdb4('0x7'));var jayson=require(_0xbdb4('0x8'));var client=jayson[_0xbdb4('0x9')][_0xbdb4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1dcaa1,_0x565f24,_0x5b0b37){return new BPromise(function(_0x1345fd,_0x3a2b2d){return client[_0xbdb4('0xb')](_0x1dcaa1,_0x5b0b37)[_0xbdb4('0xc')](function(_0x57ded4){logger[_0xbdb4('0xd')]('Campaign,\x20%s,\x20%s',_0x565f24,_0xbdb4('0xe'));logger[_0xbdb4('0xf')](_0xbdb4('0x10'),_0x565f24,'request\x20sent',JSON['stringify'](_0x57ded4));if(_0x57ded4[_0xbdb4('0x11')]){if(_0x57ded4[_0xbdb4('0x11')][_0xbdb4('0x12')]===0x1f4){logger[_0xbdb4('0x11')]('Campaign,\x20%s,\x20%s',_0x565f24,_0x57ded4['error'][_0xbdb4('0x13')]);return _0x3a2b2d(_0x57ded4[_0xbdb4('0x11')][_0xbdb4('0x13')]);}logger[_0xbdb4('0x11')](_0xbdb4('0x14'),_0x565f24,_0x57ded4[_0xbdb4('0x11')]['message']);return _0x1345fd(_0x57ded4['error'][_0xbdb4('0x13')]);}else{logger[_0xbdb4('0xd')]('Campaign,\x20%s,\x20%s',_0x565f24,_0xbdb4('0xe'));_0x1345fd(_0x57ded4[_0xbdb4('0x15')]['message']);}})['catch'](function(_0x3b7c35){logger[_0xbdb4('0x11')]('Campaign,\x20%s,\x20%s',_0x565f24,_0x3b7c35);_0x3a2b2d(_0x3b7c35);});});}exports[_0xbdb4('0x16')]=function(_0x113471){var _0x4a180b=this;return new Promise(function(_0x2ca1d5,_0x1e5d10){return db[_0xbdb4('0x17')]['findAll']({'raw':_0x113471['options']?_0x113471[_0xbdb4('0x18')][_0xbdb4('0x19')]===undefined?!![]:![]:!![],'where':_0x113471['options']?_0x113471[_0xbdb4('0x18')][_0xbdb4('0x1a')]||null:null,'attributes':_0x113471[_0xbdb4('0x18')]?_0x113471['options'][_0xbdb4('0x1b')]||null:null,'limit':_0x113471['options']?_0x113471[_0xbdb4('0x18')][_0xbdb4('0x1c')]||null:null,'include':_0x113471[_0xbdb4('0x18')]?_0x113471[_0xbdb4('0x18')][_0xbdb4('0x1d')]?_[_0xbdb4('0x1e')](_0x113471['options'][_0xbdb4('0x1d')],function(_0x18b284){return{'model':db[_0x18b284[_0xbdb4('0x1f')]],'as':_0x18b284['as'],'attributes':_0x18b284[_0xbdb4('0x1b')],'include':_0x18b284[_0xbdb4('0x1d')]?_['map'](_0x18b284[_0xbdb4('0x1d')],function(_0x18a6f6){return{'model':db[_0x18a6f6[_0xbdb4('0x1f')]],'as':_0x18a6f6['as'],'attributes':_0x18a6f6['attributes'],'include':_0x18a6f6['include']?_[_0xbdb4('0x1e')](_0x18a6f6[_0xbdb4('0x1d')],function(_0x3b3e0b){return{'model':db[_0x3b3e0b[_0xbdb4('0x1f')]],'as':_0x3b3e0b['as'],'attributes':_0x3b3e0b[_0xbdb4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbdb4('0xc')](function(_0x401be4){logger[_0xbdb4('0xd')](_0xbdb4('0x16'),_0x113471);logger[_0xbdb4('0xf')]('GetCampaign',_0x113471,JSON[_0xbdb4('0x20')](_0x401be4));_0x2ca1d5(_0x401be4);})[_0xbdb4('0x21')](function(_0x1246a7){logger[_0xbdb4('0x11')](_0xbdb4('0x16'),_0x1246a7['message'],_0x113471);_0x1e5d10(_0x4a180b[_0xbdb4('0x11')](0x1f4,_0x1246a7[_0xbdb4('0x13')]));});});};
\ No newline at end of file
index 61608f6..45f8e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28bc=['/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/blacklists','getBlackLists','create','post','/:id/clone','clone','/:id/lists','addLists','addBlackLists','put','delete','removeLists','removeBlackLists','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get'];(function(_0x456577,_0x35f985){var _0x227419=function(_0x301f74){while(--_0x301f74){_0x456577['push'](_0x456577['shift']());}};_0x227419(++_0x35f985);}(_0x28bc,0x79));var _0xc28b=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0x28bc[_0x39096d];return _0x13da4f;};'use strict';var multer=require(_0xc28b('0x0'));var util=require(_0xc28b('0x1'));var path=require(_0xc28b('0x2'));var timeout=require(_0xc28b('0x3'));var express=require(_0xc28b('0x4'));var router=express[_0xc28b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc28b('0x6'));var interaction=require(_0xc28b('0x7'));var config=require(_0xc28b('0x8'));var controller=require('./campaign.controller');router['get']('/',auth[_0xc28b('0x9')](),controller['index']);router[_0xc28b('0xa')](_0xc28b('0xb'),auth[_0xc28b('0x9')](),controller[_0xc28b('0xc')]);router[_0xc28b('0xa')](_0xc28b('0xd'),auth[_0xc28b('0x9')](),controller[_0xc28b('0xe')]);router['get'](_0xc28b('0xf'),auth[_0xc28b('0x9')](),controller[_0xc28b('0x10')]);router[_0xc28b('0xa')](_0xc28b('0x11'),auth[_0xc28b('0x9')](),controller[_0xc28b('0x12')]);router[_0xc28b('0xa')]('/:id/hopper_black',auth[_0xc28b('0x9')](),controller[_0xc28b('0x13')]);router[_0xc28b('0xa')]('/:id/lists',auth[_0xc28b('0x9')](),controller['getLists']);router['get'](_0xc28b('0x14'),auth['isAuthenticated'](),controller[_0xc28b('0x15')]);router['post']('/',auth[_0xc28b('0x9')](),controller[_0xc28b('0x16')]);router[_0xc28b('0x17')](_0xc28b('0x18'),auth['isAuthenticated'](),controller[_0xc28b('0x19')]);router['post'](_0xc28b('0x1a'),auth['isAuthenticated'](),controller[_0xc28b('0x1b')]);router[_0xc28b('0x17')](_0xc28b('0x14'),auth[_0xc28b('0x9')](),controller[_0xc28b('0x1c')]);router[_0xc28b('0x1d')](_0xc28b('0xb'),auth[_0xc28b('0x9')](),controller['update']);router[_0xc28b('0x1e')](_0xc28b('0xb'),auth[_0xc28b('0x9')](),controller['destroy']);router[_0xc28b('0x1e')](_0xc28b('0x1a'),auth[_0xc28b('0x9')](),controller[_0xc28b('0x1f')]);router[_0xc28b('0x1e')]('/:id/blacklists',auth[_0xc28b('0x9')](),controller[_0xc28b('0x20')]);module['exports']=router;
\ No newline at end of file
+var _0x077a=['getHopperHistories','getHopperFinals','/:id/hopper_black','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists','put','/:id','update','delete','removeBlackLists','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','getHoppers','/:id/hopper_histories'];(function(_0x544752,_0x4cbed2){var _0xdb0644=function(_0x4387a4){while(--_0x4387a4){_0x544752['push'](_0x544752['shift']());}};_0xdb0644(++_0x4cbed2);}(_0x077a,0x1f2));var _0xa077=function(_0x311f44,_0x1d7f5b){_0x311f44=_0x311f44-0x0;var _0x46f1e6=_0x077a[_0x311f44];return _0x46f1e6;};'use strict';var multer=require(_0xa077('0x0'));var util=require('util');var path=require(_0xa077('0x1'));var timeout=require(_0xa077('0x2'));var express=require(_0xa077('0x3'));var router=express[_0xa077('0x4')]();var fs_extra=require(_0xa077('0x5'));var auth=require(_0xa077('0x6'));var interaction=require(_0xa077('0x7'));var config=require(_0xa077('0x8'));var controller=require('./campaign.controller');router[_0xa077('0x9')]('/',auth[_0xa077('0xa')](),controller['index']);router['get']('/:id',auth[_0xa077('0xa')](),controller[_0xa077('0xb')]);router['get']('/:id/hoppers',auth[_0xa077('0xa')](),controller[_0xa077('0xc')]);router[_0xa077('0x9')](_0xa077('0xd'),auth[_0xa077('0xa')](),controller[_0xa077('0xe')]);router[_0xa077('0x9')]('/:id/hopper_finals',auth[_0xa077('0xa')](),controller[_0xa077('0xf')]);router[_0xa077('0x9')](_0xa077('0x10'),auth['isAuthenticated'](),controller['getHopperBlacks']);router[_0xa077('0x9')](_0xa077('0x11'),auth[_0xa077('0xa')](),controller[_0xa077('0x12')]);router[_0xa077('0x9')](_0xa077('0x13'),auth[_0xa077('0xa')](),controller[_0xa077('0x14')]);router[_0xa077('0x15')]('/',auth[_0xa077('0xa')](),controller[_0xa077('0x16')]);router[_0xa077('0x15')](_0xa077('0x17'),auth[_0xa077('0xa')](),controller[_0xa077('0x18')]);router[_0xa077('0x15')](_0xa077('0x11'),auth[_0xa077('0xa')](),controller[_0xa077('0x19')]);router[_0xa077('0x15')](_0xa077('0x13'),auth['isAuthenticated'](),controller['addBlackLists']);router[_0xa077('0x1a')](_0xa077('0x1b'),auth[_0xa077('0xa')](),controller[_0xa077('0x1c')]);router[_0xa077('0x1d')]('/:id',auth[_0xa077('0xa')](),controller['destroy']);router[_0xa077('0x1d')](_0xa077('0x11'),auth[_0xa077('0xa')](),controller['removeLists']);router[_0xa077('0x1d')](_0xa077('0x13'),auth[_0xa077('0xa')](),controller[_0xa077('0x1e')]);module[_0xa077('0x1f')]=router;
\ No newline at end of file
index fc53caa..c0f5866 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66e7=['medium','VIRTUAL','exports','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x66e7,0x18e));var _0x766e=function(_0x31eb67,_0x9bc8c0){_0x31eb67=_0x31eb67-0x0;var _0x2a8cb8=_0x66e7[_0x31eb67];return _0x2a8cb8;};'use strict';var Sequelize=require('sequelize');module[_0x766e('0x0')]={'key':{'type':Sequelize[_0x766e('0x1')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'length':_0x766e('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x766e('0x1')]},'name':{'type':Sequelize[_0x766e('0x3')],'get':function(){return this['getDataValue']('key');}}};
\ No newline at end of file
+var _0xc5dd=['key','sequelize','exports','STRING','medium','VIRTUAL','getDataValue'];(function(_0x5d3fff,_0x5bd503){var _0xdda096=function(_0x5a3543){while(--_0x5a3543){_0x5d3fff['push'](_0x5d3fff['shift']());}};_0xdda096(++_0x5bd503);}(_0xc5dd,0x143));var _0xdc5d=function(_0x40c50b,_0x168f67){_0x40c50b=_0x40c50b-0x0;var _0x50b563=_0xc5dd[_0x40c50b];return _0x50b563;};'use strict';var Sequelize=require(_0xdc5d('0x0'));module[_0xdc5d('0x1')]={'key':{'type':Sequelize[_0xdc5d('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'length':_0xdc5d('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xdc5d('0x2')]},'name':{'type':Sequelize[_0xdc5d('0x4')],'get':function(){return this[_0xdc5d('0x5')](_0xdc5d('0x6'));}}};
\ No newline at end of file
index 52f4d67..5947e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51f7=['findAll','catch','show','params','body','find','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','CannedAnswers','userProfileId','autoAssociation','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','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','then','get','UserProfileResource','sendStatus','error','stack','name','send','index','CannedAnswer','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include'];(function(_0x1ca87c,_0x2a4c7f){var _0x480740=function(_0x12d5f4){while(--_0x12d5f4){_0x1ca87c['push'](_0x1ca87c['shift']());}};_0x480740(++_0x2a4c7f);}(_0x51f7,0xce));var _0x751f=function(_0x3a93b7,_0x658183){_0x3a93b7=_0x3a93b7-0x0;var _0x2ed891=_0x51f7[_0x3a93b7];return _0x2ed891;};'use strict';var emlformat=require(_0x751f('0x0'));var rimraf=require(_0x751f('0x1'));var zipdir=require(_0x751f('0x2'));var jsonpatch=require(_0x751f('0x3'));var rp=require(_0x751f('0x4'));var moment=require(_0x751f('0x5'));var BPromise=require(_0x751f('0x6'));var Mustache=require(_0x751f('0x7'));var util=require(_0x751f('0x8'));var path=require('path');var sox=require(_0x751f('0x9'));var csv=require(_0x751f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x751f('0xb'));var squel=require(_0x751f('0xc'));var crypto=require('crypto');var jsforce=require(_0x751f('0xd'));var deskjs=require(_0x751f('0xe'));var toCsv=require(_0x751f('0xa'));var querystring=require(_0x751f('0xf'));var Papa=require(_0x751f('0x10'));var Redis=require(_0x751f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x751f('0x12'));var as=require(_0x751f('0x13'));var hardwareService=require(_0x751f('0x14'));var logger=require(_0x751f('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x751f('0x16'));var db=require(_0x751f('0x17'))['db'];function respondWithStatusCode(_0x4ca9e4,_0x28cb52){_0x28cb52=_0x28cb52||0xcc;return function(_0x291c3e){if(_0x291c3e){return _0x4ca9e4['sendStatus'](_0x28cb52);}return _0x4ca9e4[_0x751f('0x18')](_0x28cb52)[_0x751f('0x19')]();};}function respondWithResult(_0x54864f,_0x205e3b){_0x205e3b=_0x205e3b||0xc8;return function(_0x2e61c6){if(_0x2e61c6){return _0x54864f[_0x751f('0x18')](_0x205e3b)['json'](_0x2e61c6);}};}function respondWithFilteredResult(_0x3fa3bc,_0x27d771){return function(_0x19e58e){if(_0x19e58e){var _0x2a27bf=typeof _0x27d771[_0x751f('0x1a')]===_0x751f('0x1b')&&typeof _0x27d771[_0x751f('0x1c')]===_0x751f('0x1b');var _0x4eee61=_0x19e58e['count'];var _0x51672d=_0x2a27bf?0x0:_0x27d771[_0x751f('0x1a')];var _0x117121=_0x2a27bf?_0x19e58e[_0x751f('0x1d')]:_0x27d771[_0x751f('0x1a')]+_0x27d771['limit'];var _0x5d284c;if(_0x117121>=_0x4eee61){_0x117121=_0x4eee61;_0x5d284c=0xc8;}else{_0x5d284c=0xce;}_0x3fa3bc[_0x751f('0x18')](_0x5d284c);return _0x3fa3bc[_0x751f('0x1e')]('Content-Range',_0x51672d+'-'+_0x117121+'/'+_0x4eee61)[_0x751f('0x1f')](_0x19e58e);}return null;};}function patchUpdates(_0x41ad6a){return function(_0x4f4f7a){try{jsonpatch[_0x751f('0x20')](_0x4f4f7a,_0x41ad6a,!![]);}catch(_0x4552e1){return BPromise[_0x751f('0x21')](_0x4552e1);}return _0x4f4f7a[_0x751f('0x22')]();};}function saveUpdates(_0xdb7065,_0x9506e4){return function(_0x144bca){if(_0x144bca){return _0x144bca[_0x751f('0x23')](_0xdb7065)['then'](function(_0x254dbb){return _0x254dbb;});}return null;};}function removeEntity(_0x59d75,_0x489e66){return function(_0x11c35e){if(_0x11c35e){return _0x11c35e[_0x751f('0x24')]()[_0x751f('0x25')](function(){var _0x2deafa=_0x11c35e[_0x751f('0x26')]({'plain':!![]});var _0x268f17='CannedAnswers';return db[_0x751f('0x27')]['destroy']({'where':{'type':_0x268f17,'resourceId':_0x2deafa['id']}})[_0x751f('0x25')](function(){return _0x11c35e;});})[_0x751f('0x25')](function(){_0x59d75[_0x751f('0x18')](0xcc)[_0x751f('0x19')]();});}};}function handleEntityNotFound(_0x4821d2,_0x521e3f){return function(_0x51e0a7){if(!_0x51e0a7){_0x4821d2[_0x751f('0x28')](0x194);}return _0x51e0a7;};}function handleError(_0x7cee63,_0x30fdfd){_0x30fdfd=_0x30fdfd||0x1f4;return function(_0x87dcf7){logger[_0x751f('0x29')](_0x87dcf7[_0x751f('0x2a')]);if(_0x87dcf7[_0x751f('0x2b')]){delete _0x87dcf7[_0x751f('0x2b')];}_0x7cee63[_0x751f('0x18')](_0x30fdfd)[_0x751f('0x2c')](_0x87dcf7);};}exports[_0x751f('0x2d')]=function(_0x1118cb,_0x3b2e9a){var _0x28cd06={},_0x350558={},_0x1b3578={'count':0x0,'rows':[]};var _0x942fc5=_['map'](db[_0x751f('0x2e')][_0x751f('0x2f')],function(_0x10dce2){return{'name':_0x10dce2[_0x751f('0x30')],'type':_0x10dce2[_0x751f('0x31')][_0x751f('0x32')]};});_0x350558['model']=_['map'](_0x942fc5,'name');_0x350558[_0x751f('0x33')]=_[_0x751f('0x34')](_0x1118cb[_0x751f('0x33')]);_0x350558[_0x751f('0x35')]=_[_0x751f('0x36')](_0x350558[_0x751f('0x37')],_0x350558[_0x751f('0x33')]);_0x28cd06[_0x751f('0x38')]=_[_0x751f('0x36')](_0x350558[_0x751f('0x37')],qs['fields'](_0x1118cb[_0x751f('0x33')][_0x751f('0x39')]));_0x28cd06[_0x751f('0x38')]=_0x28cd06[_0x751f('0x38')][_0x751f('0x3a')]?_0x28cd06[_0x751f('0x38')]:_0x350558[_0x751f('0x37')];if(!_0x1118cb[_0x751f('0x33')][_0x751f('0x3b')](_0x751f('0x3c'))){_0x28cd06['limit']=qs[_0x751f('0x1c')](_0x1118cb['query'][_0x751f('0x1c')]);_0x28cd06['offset']=qs['offset'](_0x1118cb['query']['offset']);}_0x28cd06[_0x751f('0x3d')]=qs[_0x751f('0x3e')](_0x1118cb['query'][_0x751f('0x3e')]);_0x28cd06['where']=qs[_0x751f('0x35')](_[_0x751f('0x3f')](_0x1118cb[_0x751f('0x33')],_0x350558[_0x751f('0x35')]),_0x942fc5);if(_0x1118cb[_0x751f('0x33')][_0x751f('0x40')]){_0x28cd06[_0x751f('0x41')]=_[_0x751f('0x42')](_0x28cd06[_0x751f('0x41')],{'$or':[{'key':{'$like':'%'+_0x1118cb[_0x751f('0x33')][_0x751f('0x40')]+'%'}},{'value':{'$like':'%'+_0x1118cb[_0x751f('0x33')][_0x751f('0x40')]+'%'}}]});}_0x28cd06=_[_0x751f('0x42')]({},_0x28cd06,_0x1118cb[_0x751f('0x43')]);var _0x1237a9={'where':_0x28cd06['where']};return db['CannedAnswer'][_0x751f('0x1d')](_0x1237a9)['then'](function(_0x490b63){_0x1b3578[_0x751f('0x1d')]=_0x490b63;if(_0x1118cb[_0x751f('0x33')][_0x751f('0x44')]){_0x28cd06[_0x751f('0x45')]=[{'all':!![]}];}return db[_0x751f('0x2e')][_0x751f('0x46')](_0x28cd06);})[_0x751f('0x25')](function(_0x4ac14e){_0x1b3578['rows']=_0x4ac14e;return _0x1b3578;})[_0x751f('0x25')](respondWithFilteredResult(_0x3b2e9a,_0x28cd06))[_0x751f('0x47')](handleError(_0x3b2e9a,null));};exports[_0x751f('0x48')]=function(_0x2043f2,_0x233968){var _0x2ade89={'raw':!![],'where':{'id':_0x2043f2[_0x751f('0x49')]['id']}},_0x440533={};_0x440533[_0x751f('0x37')]=_[_0x751f('0x34')](db[_0x751f('0x2e')]['rawAttributes']);_0x440533[_0x751f('0x33')]=_[_0x751f('0x34')](_0x2043f2[_0x751f('0x33')]);_0x440533[_0x751f('0x35')]=_[_0x751f('0x36')](_0x440533[_0x751f('0x37')],_0x440533['query']);_0x2ade89[_0x751f('0x38')]=_[_0x751f('0x36')](_0x440533['model'],qs[_0x751f('0x39')](_0x2043f2['query'][_0x751f('0x39')]));_0x2ade89[_0x751f('0x38')]=_0x2ade89[_0x751f('0x38')][_0x751f('0x3a')]?_0x2ade89[_0x751f('0x38')]:_0x440533[_0x751f('0x37')];if(_0x2043f2[_0x751f('0x33')][_0x751f('0x44')]){_0x2ade89[_0x751f('0x45')]=[{'all':!![]}];}_0x2ade89=_[_0x751f('0x42')]({},_0x2ade89,_0x2043f2[_0x751f('0x43')]);return db['CannedAnswer']['find'](_0x2ade89)[_0x751f('0x25')](handleEntityNotFound(_0x233968,null))[_0x751f('0x25')](respondWithResult(_0x233968,null))[_0x751f('0x47')](handleError(_0x233968,null));};exports[_0x751f('0x23')]=function(_0x156ee7,_0x1f83ac){if(_0x156ee7['body']['id']){delete _0x156ee7[_0x751f('0x4a')]['id'];}return db[_0x751f('0x2e')][_0x751f('0x4b')]({'where':{'id':_0x156ee7[_0x751f('0x49')]['id']}})[_0x751f('0x25')](handleEntityNotFound(_0x1f83ac,null))['then'](saveUpdates(_0x156ee7[_0x751f('0x4a')],null))[_0x751f('0x25')](respondWithResult(_0x1f83ac,null))[_0x751f('0x47')](handleError(_0x1f83ac,null));};exports[_0x751f('0x24')]=function(_0x22919c,_0x33cd5e){return db[_0x751f('0x2e')][_0x751f('0x4b')]({'where':{'id':_0x22919c[_0x751f('0x49')]['id']}})[_0x751f('0x25')](handleEntityNotFound(_0x33cd5e,null))[_0x751f('0x25')](removeEntity(_0x33cd5e,null))['catch'](handleError(_0x33cd5e,null));};exports['create']=function(_0x10a015,_0x44ca38){var _0x28ef80={'key':_0x10a015[_0x751f('0x4a')][_0x751f('0x32')]};if(_0x10a015[_0x751f('0x4a')]['MailAccountId']){_0x28ef80['MailAccountId']=_0x10a015[_0x751f('0x4a')][_0x751f('0x4c')];}else if(_0x10a015[_0x751f('0x4a')][_0x751f('0x4d')]){_0x28ef80[_0x751f('0x4d')]=_0x10a015['body']['SmsAccountId'];}else if(_0x10a015[_0x751f('0x4a')][_0x751f('0x4e')]){_0x28ef80[_0x751f('0x4e')]=_0x10a015[_0x751f('0x4a')][_0x751f('0x4e')];}else if(_0x10a015[_0x751f('0x4a')][_0x751f('0x4f')]){_0x28ef80[_0x751f('0x4f')]=_0x10a015['body']['ChatWebsiteId'];}return db[_0x751f('0x2e')][_0x751f('0x4b')]({'where':_0x28ef80})['then'](function(_0x18ae1a){if(_0x18ae1a){throw new db[(_0x751f('0x50'))][(_0x751f('0x51'))](_0x751f('0x52'));}return db[_0x751f('0x2e')][_0x751f('0x53')](_0x10a015[_0x751f('0x4a')]);})[_0x751f('0x25')](function(_0x8f39fe){var _0xf6571=_0x10a015[_0x751f('0x54')][_0x751f('0x26')]({'plain':!![]});if(!_0xf6571)throw new Error(_0x751f('0x55'));if(_0xf6571[_0x751f('0x56')]===_0x751f('0x54')){var _0x4b13ee=_0x8f39fe[_0x751f('0x26')]({'plain':!![]});return db[_0x751f('0x57')][_0x751f('0x4b')]({'where':{'name':_0x751f('0x58'),'userProfileId':_0xf6571[_0x751f('0x59')]},'raw':!![]})[_0x751f('0x25')](function(_0x548356){if(_0x548356&&_0x548356[_0x751f('0x5a')]===0x0){return db[_0x751f('0x27')]['create']({'name':_0x4b13ee['name'],'resourceId':_0x4b13ee['id'],'type':_0x548356[_0x751f('0x2b')],'sectionId':_0x548356['id']},{})[_0x751f('0x25')](function(){return _0x8f39fe;});}else{return _0x8f39fe;}})[_0x751f('0x47')](function(_0x23d83c){logger['error'](_0x751f('0x5b'),_0x23d83c);throw _0x23d83c;});}return _0x8f39fe;})[_0x751f('0x25')](respondWithResult(_0x44ca38,0xc9))['catch'](handleError(_0x44ca38,null));};
\ No newline at end of file
+var _0x3b0e=['body','destroy','find','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','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','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','undefined','limit','count','offset','set','apply','reject','save','update','then','CannedAnswers','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','CannedAnswer'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3b0e,0x1d5));var _0xe3b0=function(_0x1e83df,_0x187f48){_0x1e83df=_0x1e83df-0x0;var _0x31822b=_0x3b0e[_0x1e83df];return _0x31822b;};'use strict';var emlformat=require(_0xe3b0('0x0'));var rimraf=require(_0xe3b0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe3b0('0x2'));var moment=require(_0xe3b0('0x3'));var BPromise=require(_0xe3b0('0x4'));var Mustache=require(_0xe3b0('0x5'));var util=require('util');var path=require(_0xe3b0('0x6'));var sox=require(_0xe3b0('0x7'));var csv=require('to-csv');var ejs=require(_0xe3b0('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe3b0('0x9'));var squel=require(_0xe3b0('0xa'));var crypto=require(_0xe3b0('0xb'));var jsforce=require(_0xe3b0('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe3b0('0xd'));var querystring=require(_0xe3b0('0xe'));var Papa=require('papaparse');var Redis=require(_0xe3b0('0xf'));var authService=require(_0xe3b0('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe3b0('0x11'));var hardwareService=require(_0xe3b0('0x12'));var logger=require(_0xe3b0('0x13'))(_0xe3b0('0x14'));var utils=require(_0xe3b0('0x15'));var config=require(_0xe3b0('0x16'));var licenseUtil=require(_0xe3b0('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2866dd,_0x394e9d){_0x394e9d=_0x394e9d||0xcc;return function(_0x2005a0){if(_0x2005a0){return _0x2866dd['sendStatus'](_0x394e9d);}return _0x2866dd['status'](_0x394e9d)[_0xe3b0('0x18')]();};}function respondWithResult(_0x1b2253,_0x55ee15){_0x55ee15=_0x55ee15||0xc8;return function(_0x2ebb0c){if(_0x2ebb0c){return _0x1b2253[_0xe3b0('0x19')](_0x55ee15)[_0xe3b0('0x1a')](_0x2ebb0c);}};}function respondWithFilteredResult(_0x421ca7,_0x21e6df){return function(_0x3dd1a3){if(_0x3dd1a3){var _0x1ff17f=typeof _0x21e6df['offset']===_0xe3b0('0x1b')&&typeof _0x21e6df[_0xe3b0('0x1c')]===_0xe3b0('0x1b');var _0x5e68e0=_0x3dd1a3[_0xe3b0('0x1d')];var _0x4bbfed=_0x1ff17f?0x0:_0x21e6df[_0xe3b0('0x1e')];var _0x539a2f=_0x1ff17f?_0x3dd1a3[_0xe3b0('0x1d')]:_0x21e6df[_0xe3b0('0x1e')]+_0x21e6df['limit'];var _0x35a39b;if(_0x539a2f>=_0x5e68e0){_0x539a2f=_0x5e68e0;_0x35a39b=0xc8;}else{_0x35a39b=0xce;}_0x421ca7[_0xe3b0('0x19')](_0x35a39b);return _0x421ca7[_0xe3b0('0x1f')]('Content-Range',_0x4bbfed+'-'+_0x539a2f+'/'+_0x5e68e0)[_0xe3b0('0x1a')](_0x3dd1a3);}return null;};}function patchUpdates(_0x1df416){return function(_0x3d5aed){try{jsonpatch[_0xe3b0('0x20')](_0x3d5aed,_0x1df416,!![]);}catch(_0x1fc3b2){return BPromise[_0xe3b0('0x21')](_0x1fc3b2);}return _0x3d5aed[_0xe3b0('0x22')]();};}function saveUpdates(_0x369973,_0x4cc141){return function(_0xe2facb){if(_0xe2facb){return _0xe2facb[_0xe3b0('0x23')](_0x369973)[_0xe3b0('0x24')](function(_0x4412fc){return _0x4412fc;});}return null;};}function removeEntity(_0x5a8359,_0x4d3a87){return function(_0x42b69c){if(_0x42b69c){return _0x42b69c['destroy']()['then'](function(){var _0x1e9470=_0x42b69c['get']({'plain':!![]});var _0x39f148=_0xe3b0('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x39f148,'resourceId':_0x1e9470['id']}})[_0xe3b0('0x24')](function(){return _0x42b69c;});})[_0xe3b0('0x24')](function(){_0x5a8359[_0xe3b0('0x19')](0xcc)[_0xe3b0('0x18')]();});}};}function handleEntityNotFound(_0x4019a9,_0x17ac31){return function(_0x205be1){if(!_0x205be1){_0x4019a9['sendStatus'](0x194);}return _0x205be1;};}function handleError(_0x3df6b6,_0x544061){_0x544061=_0x544061||0x1f4;return function(_0x2d4a9e){logger[_0xe3b0('0x26')](_0x2d4a9e[_0xe3b0('0x27')]);if(_0x2d4a9e[_0xe3b0('0x28')]){delete _0x2d4a9e[_0xe3b0('0x28')];}_0x3df6b6[_0xe3b0('0x19')](_0x544061)['send'](_0x2d4a9e);};}exports[_0xe3b0('0x29')]=function(_0x5f4076,_0xdf02a8){var _0x590ff9={},_0x1f1521={},_0x4be3c6={'count':0x0,'rows':[]};var _0x588aaa=_[_0xe3b0('0x2a')](db['CannedAnswer'][_0xe3b0('0x2b')],function(_0x6cf764){return{'name':_0x6cf764[_0xe3b0('0x2c')],'type':_0x6cf764[_0xe3b0('0x2d')][_0xe3b0('0x2e')]};});_0x1f1521[_0xe3b0('0x2f')]=_['map'](_0x588aaa,_0xe3b0('0x28'));_0x1f1521[_0xe3b0('0x30')]=_[_0xe3b0('0x31')](_0x5f4076[_0xe3b0('0x30')]);_0x1f1521[_0xe3b0('0x32')]=_['intersection'](_0x1f1521['model'],_0x1f1521['query']);_0x590ff9[_0xe3b0('0x33')]=_[_0xe3b0('0x34')](_0x1f1521['model'],qs[_0xe3b0('0x35')](_0x5f4076[_0xe3b0('0x30')][_0xe3b0('0x35')]));_0x590ff9[_0xe3b0('0x33')]=_0x590ff9[_0xe3b0('0x33')][_0xe3b0('0x36')]?_0x590ff9[_0xe3b0('0x33')]:_0x1f1521[_0xe3b0('0x2f')];if(!_0x5f4076[_0xe3b0('0x30')][_0xe3b0('0x37')]('nolimit')){_0x590ff9[_0xe3b0('0x1c')]=qs[_0xe3b0('0x1c')](_0x5f4076[_0xe3b0('0x30')][_0xe3b0('0x1c')]);_0x590ff9[_0xe3b0('0x1e')]=qs[_0xe3b0('0x1e')](_0x5f4076['query'][_0xe3b0('0x1e')]);}_0x590ff9[_0xe3b0('0x38')]=qs[_0xe3b0('0x39')](_0x5f4076[_0xe3b0('0x30')]['sort']);_0x590ff9[_0xe3b0('0x3a')]=qs['filters'](_[_0xe3b0('0x3b')](_0x5f4076[_0xe3b0('0x30')],_0x1f1521['filters']),_0x588aaa);if(_0x5f4076[_0xe3b0('0x30')]['filter']){_0x590ff9[_0xe3b0('0x3a')]=_[_0xe3b0('0x3c')](_0x590ff9['where'],{'$or':[{'key':{'$like':'%'+_0x5f4076['query'][_0xe3b0('0x3d')]+'%'}},{'value':{'$like':'%'+_0x5f4076['query'][_0xe3b0('0x3d')]+'%'}}]});}_0x590ff9=_[_0xe3b0('0x3c')]({},_0x590ff9,_0x5f4076[_0xe3b0('0x3e')]);var _0x333a59={'where':_0x590ff9[_0xe3b0('0x3a')]};return db['CannedAnswer'][_0xe3b0('0x1d')](_0x333a59)[_0xe3b0('0x24')](function(_0x367f06){_0x4be3c6['count']=_0x367f06;if(_0x5f4076[_0xe3b0('0x30')][_0xe3b0('0x3f')]){_0x590ff9[_0xe3b0('0x40')]=[{'all':!![]}];}return db['CannedAnswer'][_0xe3b0('0x41')](_0x590ff9);})[_0xe3b0('0x24')](function(_0x25a193){_0x4be3c6[_0xe3b0('0x42')]=_0x25a193;return _0x4be3c6;})['then'](respondWithFilteredResult(_0xdf02a8,_0x590ff9))[_0xe3b0('0x43')](handleError(_0xdf02a8,null));};exports[_0xe3b0('0x44')]=function(_0x367864,_0x2a0f5e){var _0x4b4e82={'raw':!![],'where':{'id':_0x367864[_0xe3b0('0x45')]['id']}},_0x32eb14={};_0x32eb14[_0xe3b0('0x2f')]=_[_0xe3b0('0x31')](db[_0xe3b0('0x46')][_0xe3b0('0x2b')]);_0x32eb14['query']=_[_0xe3b0('0x31')](_0x367864[_0xe3b0('0x30')]);_0x32eb14['filters']=_[_0xe3b0('0x34')](_0x32eb14[_0xe3b0('0x2f')],_0x32eb14['query']);_0x4b4e82[_0xe3b0('0x33')]=_[_0xe3b0('0x34')](_0x32eb14['model'],qs[_0xe3b0('0x35')](_0x367864[_0xe3b0('0x30')]['fields']));_0x4b4e82[_0xe3b0('0x33')]=_0x4b4e82['attributes']['length']?_0x4b4e82[_0xe3b0('0x33')]:_0x32eb14['model'];if(_0x367864[_0xe3b0('0x30')][_0xe3b0('0x3f')]){_0x4b4e82[_0xe3b0('0x40')]=[{'all':!![]}];}_0x4b4e82=_['merge']({},_0x4b4e82,_0x367864[_0xe3b0('0x3e')]);return db[_0xe3b0('0x46')]['find'](_0x4b4e82)[_0xe3b0('0x24')](handleEntityNotFound(_0x2a0f5e,null))[_0xe3b0('0x24')](respondWithResult(_0x2a0f5e,null))[_0xe3b0('0x43')](handleError(_0x2a0f5e,null));};exports[_0xe3b0('0x23')]=function(_0x4ffcc3,_0x261623){if(_0x4ffcc3[_0xe3b0('0x47')]['id']){delete _0x4ffcc3[_0xe3b0('0x47')]['id'];}return db[_0xe3b0('0x46')]['find']({'where':{'id':_0x4ffcc3[_0xe3b0('0x45')]['id']}})[_0xe3b0('0x24')](handleEntityNotFound(_0x261623,null))[_0xe3b0('0x24')](saveUpdates(_0x4ffcc3[_0xe3b0('0x47')],null))[_0xe3b0('0x24')](respondWithResult(_0x261623,null))[_0xe3b0('0x43')](handleError(_0x261623,null));};exports[_0xe3b0('0x48')]=function(_0x6513f4,_0x16dd0b){return db[_0xe3b0('0x46')][_0xe3b0('0x49')]({'where':{'id':_0x6513f4[_0xe3b0('0x45')]['id']}})['then'](handleEntityNotFound(_0x16dd0b,null))['then'](removeEntity(_0x16dd0b,null))[_0xe3b0('0x43')](handleError(_0x16dd0b,null));};exports[_0xe3b0('0x4a')]=function(_0x3cbc34,_0x2fb3c1){var _0x586375={'key':_0x3cbc34['body']['key']};if(_0x3cbc34[_0xe3b0('0x47')][_0xe3b0('0x4b')]){_0x586375['MailAccountId']=_0x3cbc34[_0xe3b0('0x47')][_0xe3b0('0x4b')];}else if(_0x3cbc34[_0xe3b0('0x47')][_0xe3b0('0x4c')]){_0x586375[_0xe3b0('0x4c')]=_0x3cbc34[_0xe3b0('0x47')]['SmsAccountId'];}else if(_0x3cbc34[_0xe3b0('0x47')][_0xe3b0('0x4d')]){_0x586375[_0xe3b0('0x4d')]=_0x3cbc34['body'][_0xe3b0('0x4d')];}else if(_0x3cbc34['body'][_0xe3b0('0x4e')]){_0x586375[_0xe3b0('0x4e')]=_0x3cbc34[_0xe3b0('0x47')][_0xe3b0('0x4e')];}return db[_0xe3b0('0x46')][_0xe3b0('0x49')]({'where':_0x586375})[_0xe3b0('0x24')](function(_0x2dd4e5){if(_0x2dd4e5){throw new db[(_0xe3b0('0x4f'))][(_0xe3b0('0x50'))](_0xe3b0('0x51'));}return db['CannedAnswer'][_0xe3b0('0x4a')](_0x3cbc34[_0xe3b0('0x47')]);})['then'](function(_0x597ee4){var _0x475917=_0x3cbc34[_0xe3b0('0x52')]['get']({'plain':!![]});if(!_0x475917)throw new Error(_0xe3b0('0x53'));if(_0x475917[_0xe3b0('0x54')]===_0xe3b0('0x52')){var _0x23fe93=_0x597ee4['get']({'plain':!![]});return db[_0xe3b0('0x55')][_0xe3b0('0x49')]({'where':{'name':'CannedAnswers','userProfileId':_0x475917[_0xe3b0('0x56')]},'raw':!![]})[_0xe3b0('0x24')](function(_0x47bca2){if(_0x47bca2&&_0x47bca2[_0xe3b0('0x57')]===0x0){return db[_0xe3b0('0x58')]['create']({'name':_0x23fe93[_0xe3b0('0x28')],'resourceId':_0x23fe93['id'],'type':_0x47bca2[_0xe3b0('0x28')],'sectionId':_0x47bca2['id']},{})[_0xe3b0('0x24')](function(){return _0x597ee4;});}else{return _0x597ee4;}})[_0xe3b0('0x43')](function(_0x219dcc){logger[_0xe3b0('0x26')](_0xe3b0('0x59'),_0x219dcc);throw _0x219dcc;});}return _0x597ee4;})[_0xe3b0('0x24')](respondWithResult(_0x2fb3c1,0xc9))['catch'](handleError(_0x2fb3c1,null));};
\ No newline at end of file
index 860bfd8..0039401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x209c=['./cannedAnswer.attributes','define','CannedAnswer','tools_canned_answers','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x1a877e,_0x4aa5f5){var _0x559443=function(_0x466d14){while(--_0x466d14){_0x1a877e['push'](_0x1a877e['shift']());}};_0x559443(++_0x4aa5f5);}(_0x209c,0xba));var _0xc209=function(_0x5131ae,_0x2769ef){_0x5131ae=_0x5131ae-0x0;var _0x25ebf5=_0x209c[_0x5131ae];return _0x25ebf5;};'use strict';var _=require(_0xc209('0x0'));var util=require(_0xc209('0x1'));var logger=require(_0xc209('0x2'))(_0xc209('0x3'));var moment=require(_0xc209('0x4'));var BPromise=require('bluebird');var rp=require(_0xc209('0x5'));var fs=require('fs');var path=require(_0xc209('0x6'));var rimraf=require(_0xc209('0x7'));var config=require(_0xc209('0x8'));var attributes=require(_0xc209('0x9'));module['exports']=function(_0x3335d2,_0x133698){return _0x3335d2[_0xc209('0xa')](_0xc209('0xb'),attributes,{'tableName':_0xc209('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x8e18=['moment','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','CannedAnswer','tools_canned_answers','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x1a798b,_0x174a32){var _0x42f95f=function(_0x2a3460){while(--_0x2a3460){_0x1a798b['push'](_0x1a798b['shift']());}};_0x42f95f(++_0x174a32);}(_0x8e18,0x1ae));var _0x88e1=function(_0x28a244,_0x29cdab){_0x28a244=_0x28a244-0x0;var _0x38c6f5=_0x8e18[_0x28a244];return _0x38c6f5;};'use strict';var _=require(_0x88e1('0x0'));var util=require(_0x88e1('0x1'));var logger=require(_0x88e1('0x2'))(_0x88e1('0x3'));var moment=require(_0x88e1('0x4'));var BPromise=require('bluebird');var rp=require(_0x88e1('0x5'));var fs=require('fs');var path=require(_0x88e1('0x6'));var rimraf=require(_0x88e1('0x7'));var config=require(_0x88e1('0x8'));var attributes=require(_0x88e1('0x9'));module[_0x88e1('0xa')]=function(_0x528360,_0x20d067){return _0x528360['define'](_0x88e1('0xb'),attributes,{'tableName':_0x88e1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x88e1('0xd')});};
\ No newline at end of file
index c044bba..3f704ba 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(_0x2ecb7a,_0xf74413){var _0x3b5c95=function(_0x756531){while(--_0x756531){_0x2ecb7a['push'](_0x2ecb7a['shift']());}};_0x3b5c95(++_0xf74413);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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(_0x2869ab,_0x4ae6e9){var _0x389e9a=function(_0xcd8b49){while(--_0xcd8b49){_0x2869ab['push'](_0x2869ab['shift']());}};_0x389e9a(++_0x4ae6e9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 ab34d75..33d05d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2f6=['util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','/:id','post','put','update','destroy','exports'];(function(_0x2fd6c7,_0x46e843){var _0x5cfe41=function(_0x29a415){while(--_0x29a415){_0x2fd6c7['push'](_0x2fd6c7['shift']());}};_0x5cfe41(++_0x46e843);}(_0xf2f6,0x1b0));var _0x6f2f=function(_0x591214,_0x524932){_0x591214=_0x591214-0x0;var _0x3b98e7=_0xf2f6[_0x591214];return _0x3b98e7;};'use strict';var multer=require('multer');var util=require(_0x6f2f('0x0'));var path=require(_0x6f2f('0x1'));var timeout=require('connect-timeout');var express=require(_0x6f2f('0x2'));var router=express[_0x6f2f('0x3')]();var fs_extra=require(_0x6f2f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6f2f('0x5'));var config=require(_0x6f2f('0x6'));var controller=require(_0x6f2f('0x7'));router[_0x6f2f('0x8')]('/',auth[_0x6f2f('0x9')](),controller['index']);router['get'](_0x6f2f('0xa'),auth[_0x6f2f('0x9')](),controller['show']);router[_0x6f2f('0xb')]('/',auth[_0x6f2f('0x9')](),controller['create']);router[_0x6f2f('0xc')](_0x6f2f('0xa'),auth['isAuthenticated'](),controller[_0x6f2f('0xd')]);router['delete'](_0x6f2f('0xa'),auth['isAuthenticated'](),controller[_0x6f2f('0xe')]);module[_0x6f2f('0xf')]=router;
\ No newline at end of file
+var _0x9023=['create','put','/:id','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','index','show','post'];(function(_0x4fad6a,_0x2b4914){var _0x29b377=function(_0x464670){while(--_0x464670){_0x4fad6a['push'](_0x4fad6a['shift']());}};_0x29b377(++_0x2b4914);}(_0x9023,0x145));var _0x3902=function(_0x195299,_0x4fdf6f){_0x195299=_0x195299-0x0;var _0x6b32bd=_0x9023[_0x195299];return _0x6b32bd;};'use strict';var multer=require(_0x3902('0x0'));var util=require(_0x3902('0x1'));var path=require(_0x3902('0x2'));var timeout=require(_0x3902('0x3'));var express=require(_0x3902('0x4'));var router=express[_0x3902('0x5')]();var fs_extra=require(_0x3902('0x6'));var auth=require(_0x3902('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x3902('0x8'));var controller=require(_0x3902('0x9'));router[_0x3902('0xa')]('/',auth[_0x3902('0xb')](),controller[_0x3902('0xc')]);router[_0x3902('0xa')]('/:id',auth[_0x3902('0xb')](),controller[_0x3902('0xd')]);router[_0x3902('0xe')]('/',auth['isAuthenticated'](),controller[_0x3902('0xf')]);router[_0x3902('0x10')](_0x3902('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x3902('0x12')](_0x3902('0x11'),auth['isAuthenticated'](),controller[_0x3902('0x13')]);module['exports']=router;
\ No newline at end of file
index 72c0d46..875ef6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85c2=['sequelize','DATE','STRING','INTEGER'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x85c2,0x1f0));var _0x285c=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x85c2[_0x4f9b18];return _0x29f20c;};'use strict';var Sequelize=require(_0x285c('0x0'));module['exports']={'calldate':{'type':Sequelize[_0x285c('0x1')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x285c('0x2')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x285c('0x2')]},'dcontext':{'type':Sequelize[_0x285c('0x2')]},'channel':{'type':Sequelize[_0x285c('0x2')]},'dstchannel':{'type':Sequelize[_0x285c('0x2')]},'lastapp':{'type':Sequelize[_0x285c('0x2')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x285c('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x285c('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x285c('0x2')]},'amaflags':{'type':Sequelize[_0x285c('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x285c('0x2')]},'uniqueid':{'type':Sequelize[_0x285c('0x2')]},'linkedid':{'type':Sequelize[_0x285c('0x2')]},'sequence':{'type':Sequelize[_0x285c('0x2')]},'peeraccount':{'type':Sequelize[_0x285c('0x2')]},'type':{'type':Sequelize[_0x285c('0x2')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1c4f=['sequelize','exports','DATE','STRING','INTEGER'];(function(_0x5005ab,_0x5f3dd8){var _0x5ea36b=function(_0x24dd6e){while(--_0x24dd6e){_0x5005ab['push'](_0x5005ab['shift']());}};_0x5ea36b(++_0x5f3dd8);}(_0x1c4f,0x1f4));var _0xf1c4=function(_0x2d521f,_0x17efcb){_0x2d521f=_0x2d521f-0x0;var _0x188488=_0x1c4f[_0x2d521f];return _0x188488;};'use strict';var Sequelize=require(_0xf1c4('0x0'));module[_0xf1c4('0x1')]={'calldate':{'type':Sequelize[_0xf1c4('0x2')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0xf1c4('0x3')]},'src':{'type':Sequelize[_0xf1c4('0x3')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0xf1c4('0x3')]},'channel':{'type':Sequelize[_0xf1c4('0x3')]},'dstchannel':{'type':Sequelize[_0xf1c4('0x3')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0xf1c4('0x3')]},'duration':{'type':Sequelize[_0xf1c4('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xf1c4('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xf1c4('0x3')]},'amaflags':{'type':Sequelize[_0xf1c4('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xf1c4('0x3')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xf1c4('0x3')]},'linkedid':{'type':Sequelize[_0xf1c4('0x3')]},'sequence':{'type':Sequelize[_0xf1c4('0x3')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xf1c4('0x3')]},'tag':{'type':Sequelize[_0xf1c4('0x3')]}};
\ No newline at end of file
index 3caae27..8de9dcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','Cdr','includeAll','include','findAll','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x24c533,_0x4efe9e){var _0x326894=function(_0x371111){while(--_0x371111){_0x24c533['push'](_0x24c533['shift']());}};_0x326894(++_0x4efe9e);}(_0x814b,0x1a2));var _0xb814=function(_0x16e73a,_0x146629){_0x16e73a=_0x16e73a-0x0;var _0x187aa1=_0x814b[_0x16e73a];return _0x187aa1;};'use strict';var emlformat=require(_0xb814('0x0'));var rimraf=require(_0xb814('0x1'));var zipdir=require(_0xb814('0x2'));var jsonpatch=require(_0xb814('0x3'));var rp=require(_0xb814('0x4'));var moment=require(_0xb814('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb814('0x6'));var util=require(_0xb814('0x7'));var path=require(_0xb814('0x8'));var sox=require(_0xb814('0x9'));var csv=require(_0xb814('0xa'));var ejs=require(_0xb814('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb814('0xc'));var squel=require(_0xb814('0xd'));var crypto=require('crypto');var jsforce=require(_0xb814('0xe'));var deskjs=require(_0xb814('0xf'));var toCsv=require(_0xb814('0xa'));var querystring=require(_0xb814('0x10'));var Papa=require(_0xb814('0x11'));var Redis=require(_0xb814('0x12'));var authService=require(_0xb814('0x13'));var qs=require(_0xb814('0x14'));var as=require(_0xb814('0x15'));var hardwareService=require(_0xb814('0x16'));var logger=require(_0xb814('0x17'))('api');var utils=require(_0xb814('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xb814('0x19'));var db=require(_0xb814('0x1a'))['db'];function respondWithStatusCode(_0x35b10d,_0x2cc46b){_0x2cc46b=_0x2cc46b||0xcc;return function(_0x2ce718){if(_0x2ce718){return _0x35b10d[_0xb814('0x1b')](_0x2cc46b);}return _0x35b10d[_0xb814('0x1c')](_0x2cc46b)[_0xb814('0x1d')]();};}function respondWithResult(_0xa0a2e5,_0x2ab627){_0x2ab627=_0x2ab627||0xc8;return function(_0x3f4881){if(_0x3f4881){return _0xa0a2e5[_0xb814('0x1c')](_0x2ab627)[_0xb814('0x1e')](_0x3f4881);}};}function respondWithFilteredResult(_0x39bfcf,_0x303aca){return function(_0x3a71d6){if(_0x3a71d6){var _0x45e0d0=typeof _0x303aca[_0xb814('0x1f')]===_0xb814('0x20')&&typeof _0x303aca[_0xb814('0x21')]===_0xb814('0x20');var _0x48c9df=_0x3a71d6[_0xb814('0x22')];var _0x55ba16=_0x45e0d0?0x0:_0x303aca[_0xb814('0x1f')];var _0xfac75b=_0x45e0d0?_0x3a71d6['count']:_0x303aca['offset']+_0x303aca['limit'];var _0x399b43;if(_0xfac75b>=_0x48c9df){_0xfac75b=_0x48c9df;_0x399b43=0xc8;}else{_0x399b43=0xce;}_0x39bfcf['status'](_0x399b43);return _0x39bfcf['set'](_0xb814('0x23'),_0x55ba16+'-'+_0xfac75b+'/'+_0x48c9df)[_0xb814('0x1e')](_0x3a71d6);}return null;};}function patchUpdates(_0x25b6b6){return function(_0x4e139e){try{jsonpatch[_0xb814('0x24')](_0x4e139e,_0x25b6b6,!![]);}catch(_0x531032){return BPromise[_0xb814('0x25')](_0x531032);}return _0x4e139e[_0xb814('0x26')]();};}function saveUpdates(_0x3b267e,_0x470e81){return function(_0x27352e){if(_0x27352e){return _0x27352e[_0xb814('0x27')](_0x3b267e)[_0xb814('0x28')](function(_0x594470){return _0x594470;});}return null;};}function removeEntity(_0x2ead86,_0x52b7a3){return function(_0x3f81d0){if(_0x3f81d0){return _0x3f81d0[_0xb814('0x29')]()[_0xb814('0x28')](function(){_0x2ead86[_0xb814('0x1c')](0xcc)[_0xb814('0x1d')]();});}};}function handleEntityNotFound(_0xb9e57d,_0x3d836c){return function(_0x5755ea){if(!_0x5755ea){_0xb9e57d[_0xb814('0x1b')](0x194);}return _0x5755ea;};}function handleError(_0xc0ef66,_0x1c2625){_0x1c2625=_0x1c2625||0x1f4;return function(_0x349394){logger[_0xb814('0x2a')](_0x349394[_0xb814('0x2b')]);if(_0x349394[_0xb814('0x2c')]){delete _0x349394[_0xb814('0x2c')];}_0xc0ef66['status'](_0x1c2625)[_0xb814('0x2d')](_0x349394);};}exports[_0xb814('0x2e')]=function(_0x52ed64,_0x9008b2){var _0x37d24d={},_0x530744={},_0x499f22={'count':0x0,'rows':[]};var _0x20577b=_[_0xb814('0x2f')](db['Cdr'][_0xb814('0x30')],function(_0x526610){return{'name':_0x526610[_0xb814('0x31')],'type':_0x526610['type']['key']};});_0x530744[_0xb814('0x32')]=_['map'](_0x20577b,_0xb814('0x2c'));_0x530744[_0xb814('0x33')]=_[_0xb814('0x34')](_0x52ed64['query']);_0x530744['filters']=_[_0xb814('0x35')](_0x530744[_0xb814('0x32')],_0x530744['query']);_0x37d24d[_0xb814('0x36')]=_[_0xb814('0x35')](_0x530744[_0xb814('0x32')],qs[_0xb814('0x37')](_0x52ed64[_0xb814('0x33')][_0xb814('0x37')]));_0x37d24d[_0xb814('0x36')]=_0x37d24d['attributes'][_0xb814('0x38')]?_0x37d24d[_0xb814('0x36')]:_0x530744[_0xb814('0x32')];if(!_0x52ed64[_0xb814('0x33')][_0xb814('0x39')]('nolimit')){_0x37d24d[_0xb814('0x21')]=qs['limit'](_0x52ed64[_0xb814('0x33')][_0xb814('0x21')]);_0x37d24d[_0xb814('0x1f')]=qs['offset'](_0x52ed64[_0xb814('0x33')][_0xb814('0x1f')]);}_0x37d24d['order']=qs[_0xb814('0x3a')](_0x52ed64[_0xb814('0x33')][_0xb814('0x3a')]);_0x37d24d[_0xb814('0x3b')]=qs[_0xb814('0x3c')](_[_0xb814('0x3d')](_0x52ed64['query'],_0x530744[_0xb814('0x3c')]),_0x20577b);if(_0x52ed64['query'][_0xb814('0x3e')]){_0x37d24d['where']=_[_0xb814('0x3f')](_0x37d24d['where'],{'$or':_[_0xb814('0x2f')](_0x20577b,function(_0x26675a){if(_0x26675a['type']!=='VIRTUAL'){var _0x5dd6bc={};_0x5dd6bc[_0x26675a['name']]={'$like':'%'+_0x52ed64[_0xb814('0x33')][_0xb814('0x3e')]+'%'};return _0x5dd6bc;}})});}_0x37d24d=_[_0xb814('0x3f')]({},_0x37d24d,_0x52ed64[_0xb814('0x40')]);var _0x51cdba={'where':_0x37d24d['where']};return db[_0xb814('0x41')]['count'](_0x51cdba)[_0xb814('0x28')](function(_0x1098eb){_0x499f22[_0xb814('0x22')]=_0x1098eb;if(_0x52ed64[_0xb814('0x33')][_0xb814('0x42')]){_0x37d24d[_0xb814('0x43')]=[{'all':!![]}];}return db[_0xb814('0x41')][_0xb814('0x44')](_0x37d24d);})[_0xb814('0x28')](function(_0x4b6ff8){_0x499f22['rows']=_0x4b6ff8;return _0x499f22;})['then'](respondWithFilteredResult(_0x9008b2,_0x37d24d))[_0xb814('0x45')](handleError(_0x9008b2,null));};exports['show']=function(_0x29416a,_0x580171){var _0x411723={'raw':!![],'where':{'id':_0x29416a[_0xb814('0x46')]['id']}},_0x44ff56={};_0x44ff56[_0xb814('0x32')]=_['keys'](db[_0xb814('0x41')][_0xb814('0x30')]);_0x44ff56[_0xb814('0x33')]=_[_0xb814('0x34')](_0x29416a[_0xb814('0x33')]);_0x44ff56[_0xb814('0x3c')]=_['intersection'](_0x44ff56[_0xb814('0x32')],_0x44ff56[_0xb814('0x33')]);_0x411723[_0xb814('0x36')]=_[_0xb814('0x35')](_0x44ff56[_0xb814('0x32')],qs[_0xb814('0x37')](_0x29416a[_0xb814('0x33')]['fields']));_0x411723['attributes']=_0x411723[_0xb814('0x36')][_0xb814('0x38')]?_0x411723[_0xb814('0x36')]:_0x44ff56[_0xb814('0x32')];if(_0x29416a[_0xb814('0x33')][_0xb814('0x42')]){_0x411723[_0xb814('0x43')]=[{'all':!![]}];}_0x411723=_[_0xb814('0x3f')]({},_0x411723,_0x29416a[_0xb814('0x40')]);return db[_0xb814('0x41')][_0xb814('0x47')](_0x411723)['then'](handleEntityNotFound(_0x580171,null))[_0xb814('0x28')](respondWithResult(_0x580171,null))[_0xb814('0x45')](handleError(_0x580171,null));};exports['create']=function(_0x338e80,_0x55234d){return db[_0xb814('0x41')][_0xb814('0x48')](_0x338e80[_0xb814('0x49')],{})[_0xb814('0x28')](respondWithResult(_0x55234d,0xc9))[_0xb814('0x45')](handleError(_0x55234d,null));};exports[_0xb814('0x27')]=function(_0x2cc806,_0x45480e){if(_0x2cc806[_0xb814('0x49')]['id']){delete _0x2cc806[_0xb814('0x49')]['id'];}return db['Cdr']['find']({'where':{'id':_0x2cc806[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x45480e,null))[_0xb814('0x28')](saveUpdates(_0x2cc806[_0xb814('0x49')],null))[_0xb814('0x28')](respondWithResult(_0x45480e,null))[_0xb814('0x45')](handleError(_0x45480e,null));};exports[_0xb814('0x29')]=function(_0x4a4f9a,_0x26fd0b){return db[_0xb814('0x41')][_0xb814('0x47')]({'where':{'id':_0x4a4f9a['params']['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x26fd0b,null))['then'](removeEntity(_0x26fd0b,null))[_0xb814('0x45')](handleError(_0x26fd0b,null));};exports['describe']=function(_0x403872,_0x3cf8f8){return db['Cdr'][_0xb814('0x4a')]()[_0xb814('0x28')](respondWithResult(_0x3cf8f8,null))[_0xb814('0x45')](handleError(_0x3cf8f8,null));};
\ No newline at end of file
+var _0x5d17=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','name','send','index','Cdr','rawAttributes','fieldName','type','model','map','query','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','create','update','body','find','describe','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox'];(function(_0x49abf7,_0x4c90b8){var _0x2a919a=function(_0x4d91ba){while(--_0x4d91ba){_0x49abf7['push'](_0x49abf7['shift']());}};_0x2a919a(++_0x4c90b8);}(_0x5d17,0x114));var _0x75d1=function(_0x4cfc1d,_0x2c0927){_0x4cfc1d=_0x4cfc1d-0x0;var _0x1c01a0=_0x5d17[_0x4cfc1d];return _0x1c01a0;};'use strict';var emlformat=require(_0x75d1('0x0'));var rimraf=require(_0x75d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75d1('0x2'));var moment=require(_0x75d1('0x3'));var BPromise=require(_0x75d1('0x4'));var Mustache=require('mustache');var util=require(_0x75d1('0x5'));var path=require(_0x75d1('0x6'));var sox=require(_0x75d1('0x7'));var csv=require(_0x75d1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75d1('0x9'));var _=require(_0x75d1('0xa'));var squel=require(_0x75d1('0xb'));var crypto=require(_0x75d1('0xc'));var jsforce=require(_0x75d1('0xd'));var deskjs=require(_0x75d1('0xe'));var toCsv=require(_0x75d1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x75d1('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x75d1('0x10'));var hardwareService=require(_0x75d1('0x11'));var logger=require('../../config/logger')(_0x75d1('0x12'));var utils=require(_0x75d1('0x13'));var config=require(_0x75d1('0x14'));var licenseUtil=require(_0x75d1('0x15'));var db=require(_0x75d1('0x16'))['db'];function respondWithStatusCode(_0xd089cf,_0x49667a){_0x49667a=_0x49667a||0xcc;return function(_0x19e825){if(_0x19e825){return _0xd089cf[_0x75d1('0x17')](_0x49667a);}return _0xd089cf[_0x75d1('0x18')](_0x49667a)[_0x75d1('0x19')]();};}function respondWithResult(_0x49d723,_0x553697){_0x553697=_0x553697||0xc8;return function(_0x55b8a0){if(_0x55b8a0){return _0x49d723[_0x75d1('0x18')](_0x553697)[_0x75d1('0x1a')](_0x55b8a0);}};}function respondWithFilteredResult(_0x2fd022,_0x52e649){return function(_0x1f9620){if(_0x1f9620){var _0x3fff9b=typeof _0x52e649[_0x75d1('0x1b')]===_0x75d1('0x1c')&&typeof _0x52e649[_0x75d1('0x1d')]===_0x75d1('0x1c');var _0x2845bc=_0x1f9620[_0x75d1('0x1e')];var _0x1bc5de=_0x3fff9b?0x0:_0x52e649[_0x75d1('0x1b')];var _0x2c2a6d=_0x3fff9b?_0x1f9620['count']:_0x52e649['offset']+_0x52e649[_0x75d1('0x1d')];var _0x42b7ac;if(_0x2c2a6d>=_0x2845bc){_0x2c2a6d=_0x2845bc;_0x42b7ac=0xc8;}else{_0x42b7ac=0xce;}_0x2fd022['status'](_0x42b7ac);return _0x2fd022[_0x75d1('0x1f')](_0x75d1('0x20'),_0x1bc5de+'-'+_0x2c2a6d+'/'+_0x2845bc)[_0x75d1('0x1a')](_0x1f9620);}return null;};}function patchUpdates(_0xf6cc70){return function(_0xa42dbe){try{jsonpatch[_0x75d1('0x21')](_0xa42dbe,_0xf6cc70,!![]);}catch(_0x51d3b0){return BPromise[_0x75d1('0x22')](_0x51d3b0);}return _0xa42dbe[_0x75d1('0x23')]();};}function saveUpdates(_0x501cc7,_0x1cb58c){return function(_0x641ea4){if(_0x641ea4){return _0x641ea4['update'](_0x501cc7)[_0x75d1('0x24')](function(_0x5e70ec){return _0x5e70ec;});}return null;};}function removeEntity(_0x3a85c0,_0xc256af){return function(_0x345cf5){if(_0x345cf5){return _0x345cf5['destroy']()['then'](function(){_0x3a85c0[_0x75d1('0x18')](0xcc)[_0x75d1('0x19')]();});}};}function handleEntityNotFound(_0x315ce5,_0x18184b){return function(_0x51d043){if(!_0x51d043){_0x315ce5[_0x75d1('0x17')](0x194);}return _0x51d043;};}function handleError(_0x2b5848,_0x367238){_0x367238=_0x367238||0x1f4;return function(_0x51138e){logger['error'](_0x51138e['stack']);if(_0x51138e[_0x75d1('0x25')]){delete _0x51138e[_0x75d1('0x25')];}_0x2b5848[_0x75d1('0x18')](_0x367238)[_0x75d1('0x26')](_0x51138e);};}exports[_0x75d1('0x27')]=function(_0x519ceb,_0x4d292e){var _0x410e16={},_0x197f52={},_0x4967b5={'count':0x0,'rows':[]};var _0x2408b6=_['map'](db[_0x75d1('0x28')][_0x75d1('0x29')],function(_0x91e7c9){return{'name':_0x91e7c9[_0x75d1('0x2a')],'type':_0x91e7c9[_0x75d1('0x2b')]['key']};});_0x197f52[_0x75d1('0x2c')]=_[_0x75d1('0x2d')](_0x2408b6,_0x75d1('0x25'));_0x197f52[_0x75d1('0x2e')]=_['keys'](_0x519ceb[_0x75d1('0x2e')]);_0x197f52['filters']=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],_0x197f52['query']);_0x410e16[_0x75d1('0x30')]=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x519ceb[_0x75d1('0x2e')]['fields']));_0x410e16[_0x75d1('0x30')]=_0x410e16[_0x75d1('0x30')][_0x75d1('0x32')]?_0x410e16[_0x75d1('0x30')]:_0x197f52['model'];if(!_0x519ceb['query']['hasOwnProperty'](_0x75d1('0x33'))){_0x410e16[_0x75d1('0x1d')]=qs[_0x75d1('0x1d')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1d')]);_0x410e16[_0x75d1('0x1b')]=qs[_0x75d1('0x1b')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1b')]);}_0x410e16['order']=qs[_0x75d1('0x34')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x34')]);_0x410e16[_0x75d1('0x35')]=qs[_0x75d1('0x36')](_['pick'](_0x519ceb['query'],_0x197f52['filters']),_0x2408b6);if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x37')]){_0x410e16[_0x75d1('0x35')]=_[_0x75d1('0x38')](_0x410e16[_0x75d1('0x35')],{'$or':_[_0x75d1('0x2d')](_0x2408b6,function(_0x48f9f3){if(_0x48f9f3['type']!=='VIRTUAL'){var _0x3f2569={};_0x3f2569[_0x48f9f3['name']]={'$like':'%'+_0x519ceb['query'][_0x75d1('0x37')]+'%'};return _0x3f2569;}})});}_0x410e16=_[_0x75d1('0x38')]({},_0x410e16,_0x519ceb[_0x75d1('0x39')]);var _0x46854c={'where':_0x410e16['where']};return db[_0x75d1('0x28')][_0x75d1('0x1e')](_0x46854c)[_0x75d1('0x24')](function(_0x3d4137){_0x4967b5[_0x75d1('0x1e')]=_0x3d4137;if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x410e16[_0x75d1('0x3b')]=[{'all':!![]}];}return db[_0x75d1('0x28')][_0x75d1('0x3c')](_0x410e16);})[_0x75d1('0x24')](function(_0x93922f){_0x4967b5[_0x75d1('0x3d')]=_0x93922f;return _0x4967b5;})[_0x75d1('0x24')](respondWithFilteredResult(_0x4d292e,_0x410e16))[_0x75d1('0x3e')](handleError(_0x4d292e,null));};exports[_0x75d1('0x3f')]=function(_0x25f689,_0x2ad3ef){var _0x42c18c={'raw':!![],'where':{'id':_0x25f689[_0x75d1('0x40')]['id']}},_0x2384aa={};_0x2384aa[_0x75d1('0x2c')]=_['keys'](db['Cdr'][_0x75d1('0x29')]);_0x2384aa[_0x75d1('0x2e')]=_[_0x75d1('0x41')](_0x25f689[_0x75d1('0x2e')]);_0x2384aa['filters']=_[_0x75d1('0x2f')](_0x2384aa[_0x75d1('0x2c')],_0x2384aa[_0x75d1('0x2e')]);_0x42c18c[_0x75d1('0x30')]=_['intersection'](_0x2384aa[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x25f689[_0x75d1('0x2e')][_0x75d1('0x31')]));_0x42c18c['attributes']=_0x42c18c[_0x75d1('0x30')]['length']?_0x42c18c[_0x75d1('0x30')]:_0x2384aa[_0x75d1('0x2c')];if(_0x25f689[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x42c18c[_0x75d1('0x3b')]=[{'all':!![]}];}_0x42c18c=_[_0x75d1('0x38')]({},_0x42c18c,_0x25f689['options']);return db[_0x75d1('0x28')]['find'](_0x42c18c)['then'](handleEntityNotFound(_0x2ad3ef,null))[_0x75d1('0x24')](respondWithResult(_0x2ad3ef,null))[_0x75d1('0x3e')](handleError(_0x2ad3ef,null));};exports[_0x75d1('0x42')]=function(_0x12bd67,_0x16f744){return db[_0x75d1('0x28')][_0x75d1('0x42')](_0x12bd67['body'],{})['then'](respondWithResult(_0x16f744,0xc9))[_0x75d1('0x3e')](handleError(_0x16f744,null));};exports[_0x75d1('0x43')]=function(_0x50def3,_0x2d380d){if(_0x50def3[_0x75d1('0x44')]['id']){delete _0x50def3[_0x75d1('0x44')]['id'];}return db['Cdr'][_0x75d1('0x45')]({'where':{'id':_0x50def3[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x2d380d,null))[_0x75d1('0x24')](saveUpdates(_0x50def3[_0x75d1('0x44')],null))[_0x75d1('0x24')](respondWithResult(_0x2d380d,null))[_0x75d1('0x3e')](handleError(_0x2d380d,null));};exports['destroy']=function(_0x1eaa66,_0x382195){return db[_0x75d1('0x28')][_0x75d1('0x45')]({'where':{'id':_0x1eaa66[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x382195,null))[_0x75d1('0x24')](removeEntity(_0x382195,null))['catch'](handleError(_0x382195,null));};exports[_0x75d1('0x46')]=function(_0x3af9c5,_0x42d587){return db['Cdr'][_0x75d1('0x46')]()[_0x75d1('0x24')](respondWithResult(_0x42d587,null))[_0x75d1('0x3e')](handleError(_0x42d587,null));};
\ No newline at end of file
index 0db2c37..7599e9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x3f7605,_0x3955bf){var _0x17cd59=function(_0x38b0bf){while(--_0x38b0bf){_0x3f7605['push'](_0x3f7605['shift']());}};_0x17cd59(++_0x3955bf);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x2bf2f7,_0x3797ff){var _0x7c9d1c=function(_0x1ecbd0){while(--_0x1ecbd0){_0x2bf2f7['push'](_0x2bf2f7['shift']());}};_0x7c9d1c(++_0x3797ff);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index 0fdabbc..16aefda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf9=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x4409e7,_0x307f17){var _0x24c751=function(_0x3a7d33){while(--_0x3a7d33){_0x4409e7['push'](_0x4409e7['shift']());}};_0x24c751(++_0x307f17);}(_0xddf9,0xa8));var _0x9ddf=function(_0xded12b,_0xecfb8e){_0xded12b=_0xded12b-0x0;var _0x572384=_0xddf9[_0xded12b];return _0x572384;};'use strict';var _=require(_0x9ddf('0x0'));var util=require(_0x9ddf('0x1'));var moment=require(_0x9ddf('0x2'));var BPromise=require(_0x9ddf('0x3'));var rs=require(_0x9ddf('0x4'));var fs=require('fs');var Redis=require(_0x9ddf('0x5'));var db=require(_0x9ddf('0x6'))['db'];var utils=require(_0x9ddf('0x7'));var logger=require(_0x9ddf('0x8'))(_0x9ddf('0x9'));var config=require(_0x9ddf('0xa'));var jayson=require(_0x9ddf('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1c09fb,_0x218392,_0x46feb2){return new BPromise(function(_0x33d075,_0x46a48c){return client[_0x9ddf('0xc')](_0x1c09fb,_0x46feb2)[_0x9ddf('0xd')](function(_0x4f8109){logger[_0x9ddf('0xe')](_0x9ddf('0xf'),_0x218392,_0x9ddf('0x10'));logger[_0x9ddf('0x11')](_0x9ddf('0x12'),_0x218392,_0x9ddf('0x10'),JSON[_0x9ddf('0x13')](_0x4f8109));if(_0x4f8109[_0x9ddf('0x14')]){if(_0x4f8109[_0x9ddf('0x14')][_0x9ddf('0x15')]===0x1f4){logger[_0x9ddf('0x14')]('Cdr,\x20%s,\x20%s',_0x218392,_0x4f8109['error'][_0x9ddf('0x16')]);return _0x46a48c(_0x4f8109[_0x9ddf('0x14')]['message']);}logger['error'](_0x9ddf('0xf'),_0x218392,_0x4f8109['error'][_0x9ddf('0x16')]);return _0x33d075(_0x4f8109[_0x9ddf('0x14')]['message']);}else{logger[_0x9ddf('0xe')]('Cdr,\x20%s,\x20%s',_0x218392,_0x9ddf('0x10'));_0x33d075(_0x4f8109[_0x9ddf('0x17')][_0x9ddf('0x16')]);}})['catch'](function(_0x526408){logger[_0x9ddf('0x14')](_0x9ddf('0xf'),_0x218392,_0x526408);_0x46a48c(_0x526408);});});}
\ No newline at end of file
+var _0x1f47=['lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','Cdr,\x20%s,\x20%s','message','result','catch'];(function(_0x129c1,_0x144d9b){var _0x42cde2=function(_0x418257){while(--_0x418257){_0x129c1['push'](_0x129c1['shift']());}};_0x42cde2(++_0x144d9b);}(_0x1f47,0xa8));var _0x71f4=function(_0x21fc25,_0x5dd815){_0x21fc25=_0x21fc25-0x0;var _0x19ab0=_0x1f47[_0x21fc25];return _0x19ab0;};'use strict';var _=require(_0x71f4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x71f4('0x1'));var rs=require(_0x71f4('0x2'));var fs=require('fs');var Redis=require(_0x71f4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x71f4('0x4'));var logger=require('../../config/logger')(_0x71f4('0x5'));var config=require('../../config/environment');var jayson=require(_0x71f4('0x6'));var client=jayson[_0x71f4('0x7')][_0x71f4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xb9ef3b,_0x11f0d7,_0x2e3f64){return new BPromise(function(_0x38db0a,_0x56aaab){return client[_0x71f4('0x9')](_0xb9ef3b,_0x2e3f64)[_0x71f4('0xa')](function(_0x373b30){logger[_0x71f4('0xb')]('Cdr,\x20%s,\x20%s',_0x11f0d7,_0x71f4('0xc'));logger[_0x71f4('0xd')]('Cdr,\x20%s,\x20%s,\x20%s',_0x11f0d7,_0x71f4('0xc'),JSON[_0x71f4('0xe')](_0x373b30));if(_0x373b30[_0x71f4('0xf')]){if(_0x373b30[_0x71f4('0xf')][_0x71f4('0x10')]===0x1f4){logger[_0x71f4('0xf')](_0x71f4('0x11'),_0x11f0d7,_0x373b30['error']['message']);return _0x56aaab(_0x373b30[_0x71f4('0xf')][_0x71f4('0x12')]);}logger['error'](_0x71f4('0x11'),_0x11f0d7,_0x373b30[_0x71f4('0xf')][_0x71f4('0x12')]);return _0x38db0a(_0x373b30[_0x71f4('0xf')][_0x71f4('0x12')]);}else{logger[_0x71f4('0xb')]('Cdr,\x20%s,\x20%s',_0x11f0d7,_0x71f4('0xc'));_0x38db0a(_0x373b30[_0x71f4('0x13')][_0x71f4('0x12')]);}})[_0x71f4('0x14')](function(_0x3dd2b5){logger[_0x71f4('0xf')]('Cdr,\x20%s,\x20%s',_0x11f0d7,_0x3dd2b5);_0x56aaab(_0x3dd2b5);});});}
\ No newline at end of file
index 692c13d..cc03b82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../components/interaction/service','../../config/environment','./cdr.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x3b531e,_0x57be15){var _0x1ebaf2=function(_0x3c33c2){while(--_0x3c33c2){_0x3b531e['push'](_0x3b531e['shift']());}};_0x1ebaf2(++_0x57be15);}(_0xb10b,0x12a));var _0xbb10=function(_0x2a3746,_0x4a8a46){_0x2a3746=_0x2a3746-0x0;var _0x1d7e9a=_0xb10b[_0x2a3746];return _0x1d7e9a;};'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')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')]('/',auth[_0xbb10('0xb')](),controller['create']);router['put'](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x10')]);router['delete'](_0xbb10('0xd'),auth['isAuthenticated'](),controller[_0xbb10('0x11')]);module[_0xbb10('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(_0x5cdacf,_0x7c82b1){var _0xa68a8b=function(_0x4b3818){while(--_0x4b3818){_0x5cdacf['push'](_0x5cdacf['shift']());}};_0xa68a8b(++_0x7c82b1);}(_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 9a76801..ae3d8f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd99=['noop','TEXT','STRING','sequelize','exports','INTEGER'];(function(_0x28f161,_0x842753){var _0x4c46b2=function(_0x1abbee){while(--_0x1abbee){_0x28f161['push'](_0x28f161['shift']());}};_0x4c46b2(++_0x842753);}(_0xbd99,0x1cb));var _0x9bd9=function(_0x404611,_0xa8fe59){_0x404611=_0x404611-0x0;var _0x1531ad=_0xbd99[_0x404611];return _0x1531ad;};'use strict';var Sequelize=require(_0x9bd9('0x0'));module[_0x9bd9('0x1')]={'priority':{'type':Sequelize[_0x9bd9('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9bd9('0x3')},'appdata':{'type':Sequelize[_0x9bd9('0x4')]()},'description':{'type':Sequelize[_0x9bd9('0x5')]},'interval':{'type':Sequelize[_0x9bd9('0x5')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x1b5c=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x672fd,_0x2bd791){var _0xdb133f=function(_0x3c198f){while(--_0x3c198f){_0x672fd['push'](_0x672fd['shift']());}};_0xdb133f(++_0x2bd791);}(_0x1b5c,0x152));var _0xc1b5=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x1b5c[_0x5d6456];return _0x4d66c1;};'use strict';var Sequelize=require(_0xc1b5('0x0'));module[_0xc1b5('0x1')]={'priority':{'type':Sequelize[_0xc1b5('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc1b5('0x3')],'allowNull':![],'defaultValue':_0xc1b5('0x4')},'appdata':{'type':Sequelize[_0xc1b5('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xc1b5('0x6')}};
\ No newline at end of file
index ae21010..1fe63d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdadd=['include','options','find','catch','body','ChatApplication','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','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','end','json','offset','undefined','limit','reject','destroy','then','stack','name','show','params','keys','rawAttributes','query','intersection','model','attributes','fields'];(function(_0x211298,_0xb4e12d){var _0x3df89c=function(_0x27d8cb){while(--_0x27d8cb){_0x211298['push'](_0x211298['shift']());}};_0x3df89c(++_0xb4e12d);}(_0xdadd,0x1c8));var _0xddad=function(_0x4e1d3c,_0x4f9988){_0x4e1d3c=_0x4e1d3c-0x0;var _0x5177b2=_0xdadd[_0x4e1d3c];return _0x5177b2;};'use strict';var emlformat=require(_0xddad('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xddad('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xddad('0x2'));var moment=require(_0xddad('0x3'));var BPromise=require(_0xddad('0x4'));var Mustache=require('mustache');var util=require(_0xddad('0x5'));var path=require(_0xddad('0x6'));var sox=require(_0xddad('0x7'));var csv=require(_0xddad('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xddad('0x9'));var squel=require(_0xddad('0xa'));var crypto=require('crypto');var jsforce=require(_0xddad('0xb'));var deskjs=require(_0xddad('0xc'));var toCsv=require(_0xddad('0x8'));var querystring=require(_0xddad('0xd'));var Papa=require(_0xddad('0xe'));var Redis=require(_0xddad('0xf'));var authService=require(_0xddad('0x10'));var qs=require(_0xddad('0x11'));var as=require(_0xddad('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xddad('0x13'))(_0xddad('0x14'));var utils=require(_0xddad('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xddad('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x193c44,_0x248c9b){_0x248c9b=_0x248c9b||0xcc;return function(_0xc8973d){if(_0xc8973d){return _0x193c44[_0xddad('0x17')](_0x248c9b);}return _0x193c44[_0xddad('0x18')](_0x248c9b)[_0xddad('0x19')]();};}function respondWithResult(_0x4f8c2e,_0x353723){_0x353723=_0x353723||0xc8;return function(_0x2c7b40){if(_0x2c7b40){return _0x4f8c2e[_0xddad('0x18')](_0x353723)[_0xddad('0x1a')](_0x2c7b40);}};}function respondWithFilteredResult(_0x2ac2ac,_0x1b4b94){return function(_0x4e0ca3){if(_0x4e0ca3){var _0x50c3e4=typeof _0x1b4b94[_0xddad('0x1b')]===_0xddad('0x1c')&&typeof _0x1b4b94[_0xddad('0x1d')]===_0xddad('0x1c');var _0x413fe9=_0x4e0ca3['count'];var _0x282b69=_0x50c3e4?0x0:_0x1b4b94[_0xddad('0x1b')];var _0x3c4a8a=_0x50c3e4?_0x4e0ca3['count']:_0x1b4b94[_0xddad('0x1b')]+_0x1b4b94['limit'];var _0x46ac1f;if(_0x3c4a8a>=_0x413fe9){_0x3c4a8a=_0x413fe9;_0x46ac1f=0xc8;}else{_0x46ac1f=0xce;}_0x2ac2ac['status'](_0x46ac1f);return _0x2ac2ac['set']('Content-Range',_0x282b69+'-'+_0x3c4a8a+'/'+_0x413fe9)[_0xddad('0x1a')](_0x4e0ca3);}return null;};}function patchUpdates(_0x49acbf){return function(_0x567986){try{jsonpatch['apply'](_0x567986,_0x49acbf,!![]);}catch(_0x4ea1e9){return BPromise[_0xddad('0x1e')](_0x4ea1e9);}return _0x567986['save']();};}function saveUpdates(_0x1c4db9,_0x450080){return function(_0x2598c3){if(_0x2598c3){return _0x2598c3['update'](_0x1c4db9)['then'](function(_0x59739e){return _0x59739e;});}return null;};}function removeEntity(_0x321b25,_0x5e9e62){return function(_0x3a6c68){if(_0x3a6c68){return _0x3a6c68[_0xddad('0x1f')]()[_0xddad('0x20')](function(){_0x321b25[_0xddad('0x18')](0xcc)[_0xddad('0x19')]();});}};}function handleEntityNotFound(_0x561f35,_0x17b9ce){return function(_0x5b3a5b){if(!_0x5b3a5b){_0x561f35['sendStatus'](0x194);}return _0x5b3a5b;};}function handleError(_0x3040d1,_0x74c3ea){_0x74c3ea=_0x74c3ea||0x1f4;return function(_0x3b4bc8){logger['error'](_0x3b4bc8[_0xddad('0x21')]);if(_0x3b4bc8[_0xddad('0x22')]){delete _0x3b4bc8['name'];}_0x3040d1[_0xddad('0x18')](_0x74c3ea)['send'](_0x3b4bc8);};}exports[_0xddad('0x23')]=function(_0x53c761,_0x35a882){var _0x1823b0={'raw':!![],'where':{'id':_0x53c761[_0xddad('0x24')]['id']}},_0x55ea75={};_0x55ea75['model']=_[_0xddad('0x25')](db['ChatApplication'][_0xddad('0x26')]);_0x55ea75[_0xddad('0x27')]=_[_0xddad('0x25')](_0x53c761[_0xddad('0x27')]);_0x55ea75['filters']=_[_0xddad('0x28')](_0x55ea75[_0xddad('0x29')],_0x55ea75['query']);_0x1823b0[_0xddad('0x2a')]=_['intersection'](_0x55ea75['model'],qs[_0xddad('0x2b')](_0x53c761[_0xddad('0x27')][_0xddad('0x2b')]));_0x1823b0[_0xddad('0x2a')]=_0x1823b0[_0xddad('0x2a')]['length']?_0x1823b0[_0xddad('0x2a')]:_0x55ea75[_0xddad('0x29')];if(_0x53c761[_0xddad('0x27')]['includeAll']){_0x1823b0[_0xddad('0x2c')]=[{'all':!![]}];}_0x1823b0=_['merge']({},_0x1823b0,_0x53c761[_0xddad('0x2d')]);return db['ChatApplication'][_0xddad('0x2e')](_0x1823b0)[_0xddad('0x20')](handleEntityNotFound(_0x35a882,null))['then'](respondWithResult(_0x35a882,null))[_0xddad('0x2f')](handleError(_0x35a882,null));};exports['update']=function(_0x526205,_0x5884d2){if(_0x526205['body']['id']){delete _0x526205[_0xddad('0x30')]['id'];}return db[_0xddad('0x31')]['find']({'where':{'id':_0x526205['params']['id']}})['then'](handleEntityNotFound(_0x5884d2,null))[_0xddad('0x20')](saveUpdates(_0x526205['body'],null))[_0xddad('0x20')](respondWithResult(_0x5884d2,null))['catch'](handleError(_0x5884d2,null));};exports['destroy']=function(_0x5315aa,_0x4a16f2){return db['ChatApplication'][_0xddad('0x2e')]({'where':{'id':_0x5315aa[_0xddad('0x24')]['id']}})[_0xddad('0x20')](handleEntityNotFound(_0x4a16f2,null))[_0xddad('0x20')](removeEntity(_0x4a16f2,null))[_0xddad('0x2f')](handleError(_0x4a16f2,null));};
\ No newline at end of file
+var _0x2f38=['../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','end','error','stack','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','fields','attributes','includeAll','include','options','find','catch','update','body','destroy','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','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/logger','api','../../config/utils','../../config/environment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x2f38,0x1a7));var _0x82f3=function(_0x5ac9d8,_0x2091a6){_0x5ac9d8=_0x5ac9d8-0x0;var _0x46198b=_0x2f38[_0x5ac9d8];return _0x46198b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x82f3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x82f3('0x1'));var rp=require(_0x82f3('0x2'));var moment=require(_0x82f3('0x3'));var BPromise=require(_0x82f3('0x4'));var Mustache=require(_0x82f3('0x5'));var util=require(_0x82f3('0x6'));var path=require('path');var sox=require(_0x82f3('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x82f3('0x8'));var _=require(_0x82f3('0x9'));var squel=require(_0x82f3('0xa'));var crypto=require(_0x82f3('0xb'));var jsforce=require(_0x82f3('0xc'));var deskjs=require(_0x82f3('0xd'));var toCsv=require(_0x82f3('0xe'));var querystring=require(_0x82f3('0xf'));var Papa=require(_0x82f3('0x10'));var Redis=require(_0x82f3('0x11'));var authService=require(_0x82f3('0x12'));var qs=require(_0x82f3('0x13'));var as=require(_0x82f3('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x82f3('0x15'))(_0x82f3('0x16'));var utils=require(_0x82f3('0x17'));var config=require(_0x82f3('0x18'));var licenseUtil=require(_0x82f3('0x19'));var db=require(_0x82f3('0x1a'))['db'];function respondWithStatusCode(_0x34333c,_0x52a044){_0x52a044=_0x52a044||0xcc;return function(_0x561868){if(_0x561868){return _0x34333c[_0x82f3('0x1b')](_0x52a044);}return _0x34333c[_0x82f3('0x1c')](_0x52a044)['end']();};}function respondWithResult(_0x18d4b5,_0x2cca50){_0x2cca50=_0x2cca50||0xc8;return function(_0x3d34b2){if(_0x3d34b2){return _0x18d4b5[_0x82f3('0x1c')](_0x2cca50)[_0x82f3('0x1d')](_0x3d34b2);}};}function respondWithFilteredResult(_0x40df3d,_0x4ad50f){return function(_0x2621ae){if(_0x2621ae){var _0x2cafd6=typeof _0x4ad50f[_0x82f3('0x1e')]===_0x82f3('0x1f')&&typeof _0x4ad50f[_0x82f3('0x20')]===_0x82f3('0x1f');var _0x4ad7c3=_0x2621ae['count'];var _0x2a06bf=_0x2cafd6?0x0:_0x4ad50f[_0x82f3('0x1e')];var _0x15c508=_0x2cafd6?_0x2621ae[_0x82f3('0x21')]:_0x4ad50f[_0x82f3('0x1e')]+_0x4ad50f[_0x82f3('0x20')];var _0x571804;if(_0x15c508>=_0x4ad7c3){_0x15c508=_0x4ad7c3;_0x571804=0xc8;}else{_0x571804=0xce;}_0x40df3d['status'](_0x571804);return _0x40df3d[_0x82f3('0x22')](_0x82f3('0x23'),_0x2a06bf+'-'+_0x15c508+'/'+_0x4ad7c3)['json'](_0x2621ae);}return null;};}function patchUpdates(_0x5d1120){return function(_0xe0c596){try{jsonpatch[_0x82f3('0x24')](_0xe0c596,_0x5d1120,!![]);}catch(_0x2ea839){return BPromise[_0x82f3('0x25')](_0x2ea839);}return _0xe0c596[_0x82f3('0x26')]();};}function saveUpdates(_0x115b92,_0x25f3b8){return function(_0x11d076){if(_0x11d076){return _0x11d076['update'](_0x115b92)[_0x82f3('0x27')](function(_0xd4ff59){return _0xd4ff59;});}return null;};}function removeEntity(_0x5ddf8c,_0x5a5070){return function(_0x2144a7){if(_0x2144a7){return _0x2144a7['destroy']()[_0x82f3('0x27')](function(){_0x5ddf8c[_0x82f3('0x1c')](0xcc)[_0x82f3('0x28')]();});}};}function handleEntityNotFound(_0x4d861b,_0x402bff){return function(_0xcd0d7){if(!_0xcd0d7){_0x4d861b[_0x82f3('0x1b')](0x194);}return _0xcd0d7;};}function handleError(_0x590d4b,_0x3021d7){_0x3021d7=_0x3021d7||0x1f4;return function(_0x48b7d3){logger[_0x82f3('0x29')](_0x48b7d3[_0x82f3('0x2a')]);if(_0x48b7d3[_0x82f3('0x2b')]){delete _0x48b7d3['name'];}_0x590d4b[_0x82f3('0x1c')](_0x3021d7)[_0x82f3('0x2c')](_0x48b7d3);};}exports[_0x82f3('0x2d')]=function(_0x2352ab,_0xf98e7f){var _0x11141f={'raw':!![],'where':{'id':_0x2352ab[_0x82f3('0x2e')]['id']}},_0x35d7c3={};_0x35d7c3[_0x82f3('0x2f')]=_[_0x82f3('0x30')](db[_0x82f3('0x31')][_0x82f3('0x32')]);_0x35d7c3[_0x82f3('0x33')]=_[_0x82f3('0x30')](_0x2352ab[_0x82f3('0x33')]);_0x35d7c3[_0x82f3('0x34')]=_[_0x82f3('0x35')](_0x35d7c3[_0x82f3('0x2f')],_0x35d7c3[_0x82f3('0x33')]);_0x11141f['attributes']=_[_0x82f3('0x35')](_0x35d7c3['model'],qs[_0x82f3('0x36')](_0x2352ab[_0x82f3('0x33')][_0x82f3('0x36')]));_0x11141f[_0x82f3('0x37')]=_0x11141f[_0x82f3('0x37')]['length']?_0x11141f[_0x82f3('0x37')]:_0x35d7c3[_0x82f3('0x2f')];if(_0x2352ab[_0x82f3('0x33')][_0x82f3('0x38')]){_0x11141f[_0x82f3('0x39')]=[{'all':!![]}];}_0x11141f=_['merge']({},_0x11141f,_0x2352ab[_0x82f3('0x3a')]);return db['ChatApplication'][_0x82f3('0x3b')](_0x11141f)['then'](handleEntityNotFound(_0xf98e7f,null))[_0x82f3('0x27')](respondWithResult(_0xf98e7f,null))[_0x82f3('0x3c')](handleError(_0xf98e7f,null));};exports[_0x82f3('0x3d')]=function(_0x561239,_0x503c77){if(_0x561239['body']['id']){delete _0x561239[_0x82f3('0x3e')]['id'];}return db[_0x82f3('0x31')][_0x82f3('0x3b')]({'where':{'id':_0x561239[_0x82f3('0x2e')]['id']}})[_0x82f3('0x27')](handleEntityNotFound(_0x503c77,null))[_0x82f3('0x27')](saveUpdates(_0x561239[_0x82f3('0x3e')],null))[_0x82f3('0x27')](respondWithResult(_0x503c77,null))['catch'](handleError(_0x503c77,null));};exports[_0x82f3('0x3f')]=function(_0x461ebb,_0x9956fa){return db['ChatApplication'][_0x82f3('0x3b')]({'where':{'id':_0x461ebb[_0x82f3('0x2e')]['id']}})[_0x82f3('0x27')](handleEntityNotFound(_0x9956fa,null))[_0x82f3('0x27')](removeEntity(_0x9956fa,null))['catch'](handleError(_0x9956fa,null));};
\ No newline at end of file
index 8b8ff80..8f178fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e25=['util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x3e25,0x14f));var _0x53e2=function(_0x2449f4,_0x433c0b){_0x2449f4=_0x2449f4-0x0;var _0x3d4494=_0x3e25[_0x2449f4];return _0x3d4494;};'use strict';var _=require(_0x53e2('0x0'));var util=require(_0x53e2('0x1'));var logger=require(_0x53e2('0x2'))('api');var moment=require(_0x53e2('0x3'));var BPromise=require('bluebird');var rp=require(_0x53e2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x53e2('0x5'));var config=require(_0x53e2('0x6'));var attributes=require(_0x53e2('0x7'));module[_0x53e2('0x8')]=function(_0x11ad7a,_0x14b22c){return _0x11ad7a[_0x53e2('0x9')](_0x53e2('0xa'),attributes,{'tableName':_0x53e2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x53e2('0xc'),'collate':_0x53e2('0xd')});};
\ No newline at end of file
+var _0x35cf=['path','rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x1c4865,_0x163598){var _0x2a3640=function(_0x16e8d8){while(--_0x16e8d8){_0x1c4865['push'](_0x1c4865['shift']());}};_0x2a3640(++_0x163598);}(_0x35cf,0xbf));var _0xf35c=function(_0xf90c74,_0x1ea5ca){_0xf90c74=_0xf90c74-0x0;var _0x3e5b3a=_0x35cf[_0xf90c74];return _0x3e5b3a;};'use strict';var _=require(_0xf35c('0x0'));var util=require(_0xf35c('0x1'));var logger=require(_0xf35c('0x2'))('api');var moment=require('moment');var BPromise=require(_0xf35c('0x3'));var rp=require(_0xf35c('0x4'));var fs=require('fs');var path=require(_0xf35c('0x5'));var rimraf=require(_0xf35c('0x6'));var config=require(_0xf35c('0x7'));var attributes=require(_0xf35c('0x8'));module[_0xf35c('0x9')]=function(_0x1bd1ad,_0x5795e3){return _0x1bd1ad[_0xf35c('0xa')](_0xf35c('0xb'),attributes,{'tableName':_0xf35c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xf35c('0xd')});};
\ No newline at end of file
index 8a88174..15ce066 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8808=['client','then','ChatApplication,\x20%s,\x20%s','debug','stringify','error','code','message','info','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xf84ad1,_0x1e507d){var _0x5a52e9=function(_0x725827){while(--_0x725827){_0xf84ad1['push'](_0xf84ad1['shift']());}};_0x5a52e9(++_0x1e507d);}(_0x8808,0x7b));var _0x8880=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x8808[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x8880('0x0'));var util=require(_0x8880('0x1'));var moment=require(_0x8880('0x2'));var BPromise=require('bluebird');var rs=require(_0x8880('0x3'));var fs=require('fs');var Redis=require(_0x8880('0x4'));var db=require(_0x8880('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8880('0x6'))(_0x8880('0x7'));var config=require(_0x8880('0x8'));var jayson=require(_0x8880('0x9'));var client=jayson[_0x8880('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37bd97,_0x4e7f43,_0x307e02){return new BPromise(function(_0x11d3bc,_0x455913){return client['request'](_0x37bd97,_0x307e02)[_0x8880('0xb')](function(_0x17810c){logger['info'](_0x8880('0xc'),_0x4e7f43,'request\x20sent');logger[_0x8880('0xd')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x4e7f43,'request\x20sent',JSON[_0x8880('0xe')](_0x17810c));if(_0x17810c[_0x8880('0xf')]){if(_0x17810c['error'][_0x8880('0x10')]===0x1f4){logger[_0x8880('0xf')](_0x8880('0xc'),_0x4e7f43,_0x17810c[_0x8880('0xf')][_0x8880('0x11')]);return _0x455913(_0x17810c[_0x8880('0xf')][_0x8880('0x11')]);}logger[_0x8880('0xf')](_0x8880('0xc'),_0x4e7f43,_0x17810c[_0x8880('0xf')][_0x8880('0x11')]);return _0x11d3bc(_0x17810c[_0x8880('0xf')][_0x8880('0x11')]);}else{logger[_0x8880('0x12')](_0x8880('0xc'),_0x4e7f43,'request\x20sent');_0x11d3bc(_0x17810c['result'][_0x8880('0x11')]);}})['catch'](function(_0x10854d){logger[_0x8880('0xf')]('ChatApplication,\x20%s,\x20%s',_0x4e7f43,_0x10854d);_0x455913(_0x10854d);});});}
\ No newline at end of file
+var _0x1402=['error','code','ChatApplication,\x20%s,\x20%s','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','stringify'];(function(_0x1c4e6d,_0x5556b2){var _0x342924=function(_0x383988){while(--_0x383988){_0x1c4e6d['push'](_0x1c4e6d['shift']());}};_0x342924(++_0x5556b2);}(_0x1402,0xcc));var _0x2140=function(_0x146915,_0x32dda1){_0x146915=_0x146915-0x0;var _0x1a463a=_0x1402[_0x146915];return _0x1a463a;};'use strict';var _=require('lodash');var util=require(_0x2140('0x0'));var moment=require(_0x2140('0x1'));var BPromise=require(_0x2140('0x2'));var rs=require(_0x2140('0x3'));var fs=require('fs');var Redis=require(_0x2140('0x4'));var db=require(_0x2140('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2140('0x6'))(_0x2140('0x7'));var config=require(_0x2140('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2140('0x9')][_0x2140('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b6a05,_0x15d2f1,_0x44d856){return new BPromise(function(_0xda32c5,_0x5f2723){return client[_0x2140('0xb')](_0x5b6a05,_0x44d856)[_0x2140('0xc')](function(_0x143712){logger[_0x2140('0xd')]('ChatApplication,\x20%s,\x20%s',_0x15d2f1,_0x2140('0xe'));logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x15d2f1,'request\x20sent',JSON[_0x2140('0xf')](_0x143712));if(_0x143712[_0x2140('0x10')]){if(_0x143712[_0x2140('0x10')][_0x2140('0x11')]===0x1f4){logger['error'](_0x2140('0x12'),_0x15d2f1,_0x143712[_0x2140('0x10')][_0x2140('0x13')]);return _0x5f2723(_0x143712[_0x2140('0x10')][_0x2140('0x13')]);}logger['error'](_0x2140('0x12'),_0x15d2f1,_0x143712[_0x2140('0x10')][_0x2140('0x13')]);return _0xda32c5(_0x143712['error']['message']);}else{logger['info'](_0x2140('0x12'),_0x15d2f1,_0x2140('0xe'));_0xda32c5(_0x143712['result'][_0x2140('0x13')]);}})['catch'](function(_0x6ee56b){logger[_0x2140('0x10')](_0x2140('0x12'),_0x15d2f1,_0x6ee56b);_0x5f2723(_0x6ee56b);});});}
\ No newline at end of file
index 7237b48..2f84dd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e4=['../../components/interaction/service','../../config/environment','./chatApplication.controller','/:id','isAuthenticated','show','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x98e4,0x11b));var _0x498e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x98e4[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x498e('0x0'));var util=require('util');var path=require(_0x498e('0x1'));var timeout=require(_0x498e('0x2'));var express=require(_0x498e('0x3'));var router=express[_0x498e('0x4')]();var fs_extra=require(_0x498e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x498e('0x6'));var config=require(_0x498e('0x7'));var controller=require(_0x498e('0x8'));router['get'](_0x498e('0x9'),auth[_0x498e('0xa')](),controller[_0x498e('0xb')]);router[_0x498e('0xc')]('/:id',auth[_0x498e('0xa')](),controller[_0x498e('0xd')]);router[_0x498e('0xe')]('/:id',auth[_0x498e('0xa')](),controller[_0x498e('0xf')]);module[_0x498e('0x10')]=router;
\ No newline at end of file
+var _0xf768=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','/:id','isAuthenticated','show','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x3f30a1,_0x1cc9c3){var _0x13dec8=function(_0xc4502){while(--_0xc4502){_0x3f30a1['push'](_0x3f30a1['shift']());}};_0x13dec8(++_0x1cc9c3);}(_0xf768,0x1d5));var _0x8f76=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xf768[_0x110c3d];return _0x226d67;};'use strict';var multer=require(_0x8f76('0x0'));var util=require(_0x8f76('0x1'));var path=require(_0x8f76('0x2'));var timeout=require(_0x8f76('0x3'));var express=require(_0x8f76('0x4'));var router=express[_0x8f76('0x5')]();var fs_extra=require(_0x8f76('0x6'));var auth=require(_0x8f76('0x7'));var interaction=require(_0x8f76('0x8'));var config=require(_0x8f76('0x9'));var controller=require(_0x8f76('0xa'));router['get'](_0x8f76('0xb'),auth[_0x8f76('0xc')](),controller[_0x8f76('0xd')]);router[_0x8f76('0xe')](_0x8f76('0xb'),auth[_0x8f76('0xc')](),controller[_0x8f76('0xf')]);router[_0x8f76('0x10')]('/:id',auth[_0x8f76('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 923e40f..02f6078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4b2=['exports','STRING','BOOLEAN','sequelize'];(function(_0x303c30,_0x16edcb){var _0x43161b=function(_0x3330ff){while(--_0x3330ff){_0x303c30['push'](_0x303c30['shift']());}};_0x43161b(++_0x16edcb);}(_0xc4b2,0x113));var _0x2c4b=function(_0x7cdaf1,_0x40e620){_0x7cdaf1=_0x7cdaf1-0x0;var _0xf58e9a=_0xc4b2[_0x7cdaf1];return _0xf58e9a;};'use strict';var Sequelize=require(_0x2c4b('0x0'));module[_0x2c4b('0x1')]={'name':{'type':Sequelize[_0x2c4b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x2c4b('0x2')]},'write':{'type':Sequelize[_0x2c4b('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x8f5c=['BOOLEAN','sequelize'];(function(_0x2ba6f5,_0x15d26b){var _0x4ef753=function(_0x5c92b6){while(--_0x5c92b6){_0x2ba6f5['push'](_0x2ba6f5['shift']());}};_0x4ef753(++_0x15d26b);}(_0x8f5c,0x177));var _0xc8f5=function(_0x1c6089,_0x3816e2){_0x1c6089=_0x1c6089-0x0;var _0x4d97c1=_0x8f5c[_0x1c6089];return _0x4d97c1;};'use strict';var Sequelize=require(_0xc8f5('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0xc8f5('0x1')],'defaultValue':!![]}};
\ No newline at end of file
index 2cfd4b1..9427b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a2=['localhost','socket.io-emitter','./chatGroup.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','ChatGroup','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','options','create','body','find','describe','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','findOne','User','filter','removeMembers','addMessage','ChatGroupId','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','eml-format','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis'];(function(_0x1226b4,_0x14dc6f){var _0x40e6a2=function(_0x40e104){while(--_0x40e104){_0x1226b4['push'](_0x1226b4['shift']());}};_0x40e6a2(++_0x14dc6f);}(_0x60a2,0x1cd));var _0x260a=function(_0x12bdf1,_0x5b2606){_0x12bdf1=_0x12bdf1-0x0;var _0xa474bd=_0x60a2[_0x12bdf1];return _0xa474bd;};'use strict';var emlformat=require(_0x260a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x260a('0x1'));var rp=require('request-promise');var moment=require(_0x260a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x260a('0x3'));var util=require(_0x260a('0x4'));var path=require(_0x260a('0x5'));var sox=require(_0x260a('0x6'));var csv=require(_0x260a('0x7'));var ejs=require(_0x260a('0x8'));var fs=require('fs');var fs_extra=require(_0x260a('0x9'));var _=require(_0x260a('0xa'));var squel=require(_0x260a('0xb'));var crypto=require(_0x260a('0xc'));var jsforce=require(_0x260a('0xd'));var deskjs=require(_0x260a('0xe'));var toCsv=require(_0x260a('0x7'));var querystring=require(_0x260a('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x260a('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x260a('0x11'));var hardwareService=require(_0x260a('0x12'));var logger=require(_0x260a('0x13'))(_0x260a('0x14'));var utils=require(_0x260a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x260a('0x16'));var db=require('../../mysqldb')['db'];config[_0x260a('0x17')]=_['defaults'](config[_0x260a('0x17')],{'host':_0x260a('0x18'),'port':0x18eb});var socket=require(_0x260a('0x19'))(new Redis(config['redis']));require(_0x260a('0x1a'))[_0x260a('0x1b')](socket);function respondWithStatusCode(_0x4a80ef,_0x4ba792){_0x4ba792=_0x4ba792||0xcc;return function(_0x3647c2){if(_0x3647c2){return _0x4a80ef['sendStatus'](_0x4ba792);}return _0x4a80ef[_0x260a('0x1c')](_0x4ba792)[_0x260a('0x1d')]();};}function respondWithResult(_0x1f96a0,_0x5cb0d2){_0x5cb0d2=_0x5cb0d2||0xc8;return function(_0x1c6e0c){if(_0x1c6e0c){return _0x1f96a0[_0x260a('0x1c')](_0x5cb0d2)[_0x260a('0x1e')](_0x1c6e0c);}};}function respondWithFilteredResult(_0x586adb,_0xce9432){return function(_0x3afdf9){if(_0x3afdf9){var _0x2fbea9=typeof _0xce9432[_0x260a('0x1f')]===_0x260a('0x20')&&typeof _0xce9432[_0x260a('0x21')]===_0x260a('0x20');var _0xbfd992=_0x3afdf9['count'];var _0x28f183=_0x2fbea9?0x0:_0xce9432[_0x260a('0x1f')];var _0x4cf7e6=_0x2fbea9?_0x3afdf9[_0x260a('0x22')]:_0xce9432[_0x260a('0x1f')]+_0xce9432[_0x260a('0x21')];var _0x44ae03;if(_0x4cf7e6>=_0xbfd992){_0x4cf7e6=_0xbfd992;_0x44ae03=0xc8;}else{_0x44ae03=0xce;}_0x586adb[_0x260a('0x1c')](_0x44ae03);return _0x586adb[_0x260a('0x23')](_0x260a('0x24'),_0x28f183+'-'+_0x4cf7e6+'/'+_0xbfd992)[_0x260a('0x1e')](_0x3afdf9);}return null;};}function patchUpdates(_0x3d3304){return function(_0x5eff6f){try{jsonpatch['apply'](_0x5eff6f,_0x3d3304,!![]);}catch(_0x3b7954){return BPromise['reject'](_0x3b7954);}return _0x5eff6f[_0x260a('0x25')]();};}function saveUpdates(_0xcd0c1b,_0x355b58){return function(_0x2266ca){if(_0x2266ca){return _0x2266ca[_0x260a('0x26')](_0xcd0c1b)['then'](function(_0x327031){return _0x327031;});}return null;};}function removeEntity(_0x106840,_0x304299){return function(_0x157e39){if(_0x157e39){return _0x157e39[_0x260a('0x27')]()[_0x260a('0x28')](function(){_0x106840[_0x260a('0x1c')](0xcc)[_0x260a('0x1d')]();});}};}function handleEntityNotFound(_0x564d37,_0x4cd172){return function(_0x4f6557){if(!_0x4f6557){_0x564d37[_0x260a('0x29')](0x194);}return _0x4f6557;};}function handleError(_0x31bc69,_0x485f88){_0x485f88=_0x485f88||0x1f4;return function(_0x7b7568){logger[_0x260a('0x2a')](_0x7b7568[_0x260a('0x2b')]);if(_0x7b7568['name']){delete _0x7b7568[_0x260a('0x2c')];}_0x31bc69[_0x260a('0x1c')](_0x485f88)[_0x260a('0x2d')](_0x7b7568);};}exports[_0x260a('0x2e')]=function(_0x51f730,_0x2cd6d2){var _0x1d0b68={},_0x36fecd={},_0x38d21c={'count':0x0,'rows':[]};var _0x59325a=_[_0x260a('0x2f')](db[_0x260a('0x30')]['rawAttributes'],function(_0x944811){return{'name':_0x944811['fieldName'],'type':_0x944811[_0x260a('0x31')][_0x260a('0x32')]};});_0x36fecd[_0x260a('0x33')]=_[_0x260a('0x2f')](_0x59325a,'name');_0x36fecd['query']=_['keys'](_0x51f730['query']);_0x36fecd[_0x260a('0x34')]=_[_0x260a('0x35')](_0x36fecd['model'],_0x36fecd[_0x260a('0x36')]);_0x1d0b68[_0x260a('0x37')]=_['intersection'](_0x36fecd[_0x260a('0x33')],qs['fields'](_0x51f730['query'][_0x260a('0x38')]));_0x1d0b68['attributes']=_0x1d0b68[_0x260a('0x37')][_0x260a('0x39')]?_0x1d0b68[_0x260a('0x37')]:_0x36fecd[_0x260a('0x33')];if(!_0x51f730[_0x260a('0x36')][_0x260a('0x3a')](_0x260a('0x3b'))){_0x1d0b68[_0x260a('0x21')]=qs[_0x260a('0x21')](_0x51f730[_0x260a('0x36')][_0x260a('0x21')]);_0x1d0b68[_0x260a('0x1f')]=qs['offset'](_0x51f730[_0x260a('0x36')][_0x260a('0x1f')]);}_0x1d0b68[_0x260a('0x3c')]=qs[_0x260a('0x3d')](_0x51f730[_0x260a('0x36')]['sort']);_0x1d0b68[_0x260a('0x3e')]=qs['filters'](_[_0x260a('0x3f')](_0x51f730[_0x260a('0x36')],_0x36fecd[_0x260a('0x34')]),_0x59325a);if(_0x51f730['query']['filter']){_0x1d0b68[_0x260a('0x3e')]=_[_0x260a('0x40')](_0x1d0b68[_0x260a('0x3e')],{'$or':_['map'](_0x59325a,function(_0x16aeac){if(_0x16aeac[_0x260a('0x31')]!==_0x260a('0x41')){var _0x4ca760={};_0x4ca760[_0x16aeac[_0x260a('0x2c')]]={'$like':'%'+_0x51f730['query']['filter']+'%'};return _0x4ca760;}})});}_0x1d0b68=_['merge']({},_0x1d0b68,_0x51f730['options']);var _0x2d2dc4={'where':_0x1d0b68[_0x260a('0x3e')]};return db[_0x260a('0x30')][_0x260a('0x22')](_0x2d2dc4)[_0x260a('0x28')](function(_0x22dde2){_0x38d21c['count']=_0x22dde2;if(_0x51f730[_0x260a('0x36')][_0x260a('0x42')]){_0x1d0b68['include']=[{'all':!![]}];}return db['ChatGroup'][_0x260a('0x43')](_0x1d0b68);})[_0x260a('0x28')](function(_0x84398c){_0x38d21c[_0x260a('0x44')]=_0x84398c;return _0x38d21c;})['then'](respondWithFilteredResult(_0x2cd6d2,_0x1d0b68))[_0x260a('0x45')](handleError(_0x2cd6d2,null));};exports[_0x260a('0x46')]=function(_0x3a532a,_0x3a1eb2){var _0xdc0a25={'raw':!![],'where':{'id':_0x3a532a[_0x260a('0x47')]['id']}},_0x41d094={};_0x41d094['model']=_[_0x260a('0x48')](db[_0x260a('0x30')][_0x260a('0x49')]);_0x41d094[_0x260a('0x36')]=_[_0x260a('0x48')](_0x3a532a[_0x260a('0x36')]);_0x41d094[_0x260a('0x34')]=_[_0x260a('0x35')](_0x41d094['model'],_0x41d094[_0x260a('0x36')]);_0xdc0a25[_0x260a('0x37')]=_['intersection'](_0x41d094[_0x260a('0x33')],qs['fields'](_0x3a532a[_0x260a('0x36')][_0x260a('0x38')]));_0xdc0a25['attributes']=_0xdc0a25['attributes'][_0x260a('0x39')]?_0xdc0a25[_0x260a('0x37')]:_0x41d094['model'];if(_0x3a532a[_0x260a('0x36')][_0x260a('0x42')]){_0xdc0a25[_0x260a('0x4a')]=[{'all':!![]}];}_0xdc0a25=_[_0x260a('0x40')]({},_0xdc0a25,_0x3a532a[_0x260a('0x4b')]);return db['ChatGroup']['find'](_0xdc0a25)[_0x260a('0x28')](handleEntityNotFound(_0x3a1eb2,null))['then'](respondWithResult(_0x3a1eb2,null))[_0x260a('0x45')](handleError(_0x3a1eb2,null));};exports['create']=function(_0x2c00f2,_0x4a1539){return db[_0x260a('0x30')][_0x260a('0x4c')](_0x2c00f2[_0x260a('0x4d')],{})[_0x260a('0x28')](respondWithResult(_0x4a1539,0xc9))[_0x260a('0x45')](handleError(_0x4a1539,null));};exports[_0x260a('0x26')]=function(_0x5284ea,_0x2e204a){if(_0x5284ea['body']['id']){delete _0x5284ea[_0x260a('0x4d')]['id'];}return db[_0x260a('0x30')]['find']({'where':{'id':_0x5284ea[_0x260a('0x47')]['id']}})[_0x260a('0x28')](handleEntityNotFound(_0x2e204a,null))[_0x260a('0x28')](saveUpdates(_0x5284ea[_0x260a('0x4d')],null))['then'](respondWithResult(_0x2e204a,null))['catch'](handleError(_0x2e204a,null));};exports[_0x260a('0x27')]=function(_0x24d72a,_0x348718){return db[_0x260a('0x30')][_0x260a('0x4e')]({'where':{'id':_0x24d72a['params']['id']}})[_0x260a('0x28')](handleEntityNotFound(_0x348718,null))['then'](removeEntity(_0x348718,null))[_0x260a('0x45')](handleError(_0x348718,null));};exports[_0x260a('0x4f')]=function(_0x527c7f,_0xac134f){return db['ChatGroup']['describe']()[_0x260a('0x28')](respondWithResult(_0xac134f,null))[_0x260a('0x45')](handleError(_0xac134f,null));};exports['getUnread']=function(_0x262e7,_0x34b29b,_0x2f25fe){return db[_0x260a('0x50')][_0x260a('0x22')]({'where':{'ChatGroupId':_0x262e7[_0x260a('0x47')]['id'],'ToId':_0x262e7[_0x260a('0x51')]['id'],'read':![]}})['then'](function(_0x5aa24b){return{'id':_[_0x260a('0x52')](_0x262e7[_0x260a('0x47')]['id']),'count':_0x5aa24b};})[_0x260a('0x28')](respondWithResult(_0x34b29b,null))[_0x260a('0x45')](handleError(_0x34b29b,null));};exports[_0x260a('0x53')]=function(_0x1398fc,_0x386fa4,_0x488aec){return db[_0x260a('0x30')][_0x260a('0x4e')]({'where':{'id':_0x1398fc[_0x260a('0x47')]['id']}})[_0x260a('0x28')](handleEntityNotFound(_0x386fa4,null))[_0x260a('0x28')](function(_0x236977){if(_0x236977){return _0x236977['addMembers'](_0x1398fc[_0x260a('0x4d')]['ids'],_[_0x260a('0x54')](_0x1398fc['body'],[_0x260a('0x55'),'id'])||{});}})[_0x260a('0x28')](respondWithResult(_0x386fa4,null))['catch'](handleError(_0x386fa4,null));};exports[_0x260a('0x56')]=function(_0x502d4d,_0x499989,_0x5f553e){var _0x43fce5={};var _0x45179d={};var _0x505287;var _0x40fe12;return db[_0x260a('0x30')][_0x260a('0x57')]({'where':{'id':_0x502d4d[_0x260a('0x47')]['id']}})['then'](handleEntityNotFound(_0x499989,null))['then'](function(_0x1b68ed){if(_0x1b68ed){_0x505287=_0x1b68ed;_0x45179d[_0x260a('0x33')]=_[_0x260a('0x48')](db[_0x260a('0x58')]['rawAttributes']);_0x45179d[_0x260a('0x36')]=_[_0x260a('0x48')](_0x502d4d['query']);_0x45179d['filters']=_[_0x260a('0x35')](_0x45179d['model'],_0x45179d['query']);_0x43fce5['attributes']=_[_0x260a('0x35')](_0x45179d[_0x260a('0x33')],qs[_0x260a('0x38')](_0x502d4d[_0x260a('0x36')][_0x260a('0x38')]));_0x43fce5[_0x260a('0x37')]=_0x43fce5[_0x260a('0x37')][_0x260a('0x39')]?_0x43fce5[_0x260a('0x37')]:_0x45179d[_0x260a('0x33')];_0x43fce5[_0x260a('0x3c')]=qs[_0x260a('0x3d')](_0x502d4d[_0x260a('0x36')][_0x260a('0x3d')]);_0x43fce5[_0x260a('0x3e')]=qs[_0x260a('0x34')](_[_0x260a('0x3f')](_0x502d4d[_0x260a('0x36')],_0x45179d[_0x260a('0x34')]));if(_0x502d4d[_0x260a('0x36')][_0x260a('0x59')]){_0x43fce5[_0x260a('0x3e')]=_['merge'](_0x43fce5[_0x260a('0x3e')],{'$or':_[_0x260a('0x2f')](_0x43fce5[_0x260a('0x37')],function(_0x328b84){var _0x1ce708={};_0x1ce708[_0x328b84]={'$like':'%'+_0x502d4d[_0x260a('0x36')][_0x260a('0x59')]+'%'};return _0x1ce708;})});}_0x43fce5=_[_0x260a('0x40')]({},_0x43fce5,_0x502d4d[_0x260a('0x4b')]);return _0x505287['getMembers'](_0x43fce5);}})[_0x260a('0x28')](function(_0x5b7f6d){if(_0x5b7f6d){_0x40fe12=_0x5b7f6d[_0x260a('0x39')];if(!_0x502d4d['query'][_0x260a('0x3a')](_0x260a('0x3b'))){_0x43fce5[_0x260a('0x21')]=qs[_0x260a('0x21')](_0x502d4d[_0x260a('0x36')]['limit']);_0x43fce5[_0x260a('0x1f')]=qs[_0x260a('0x1f')](_0x502d4d[_0x260a('0x36')][_0x260a('0x1f')]);}return _0x505287[_0x260a('0x56')](_0x43fce5);}})['then'](function(_0x1610e3){if(_0x1610e3){return _0x1610e3?{'count':_0x40fe12,'rows':_0x1610e3}:null;}})[_0x260a('0x28')](respondWithResult(_0x499989,null))[_0x260a('0x45')](handleError(_0x499989,null));};exports[_0x260a('0x5a')]=function(_0x684242,_0x5afe92,_0x47c2c3){return db['ChatGroup'][_0x260a('0x4e')]({'where':{'id':_0x684242[_0x260a('0x47')]['id']}})[_0x260a('0x28')](handleEntityNotFound(_0x5afe92,null))[_0x260a('0x28')](function(_0x2f3d10){if(_0x2f3d10){return _0x2f3d10[_0x260a('0x5a')](_0x684242[_0x260a('0x36')][_0x260a('0x55')]);}})['then'](respondWithStatusCode(_0x5afe92,null))[_0x260a('0x45')](handleError(_0x5afe92,null));};exports[_0x260a('0x5b')]=function(_0x2b47d9,_0x51fa2b,_0x388b9d){if(_0x2b47d9[_0x260a('0x4d')]['id']){delete _0x2b47d9[_0x260a('0x4d')]['id'];}return db[_0x260a('0x30')][_0x260a('0x4e')]({'where':{'id':_0x2b47d9['params']['id']}})[_0x260a('0x28')](handleEntityNotFound(_0x51fa2b,null))[_0x260a('0x28')](function(_0x3b1397){if(_0x3b1397){_0x2b47d9['body'][_0x260a('0x5c')]=_0x3b1397['id'];return db[_0x260a('0x50')][_0x260a('0x4c')](_0x2b47d9[_0x260a('0x4d')]);}})['then'](respondWithResult(_0x51fa2b,null))[_0x260a('0x45')](handleError(_0x51fa2b,null));};exports[_0x260a('0x5d')]=function(_0x4de8b1,_0x386cc3,_0x48553e){var _0x572946={};var _0x524e51={};var _0x3432a9;var _0x206211;return db[_0x260a('0x30')][_0x260a('0x57')]({'where':{'id':_0x4de8b1[_0x260a('0x47')]['id']}})['then'](handleEntityNotFound(_0x386cc3,null))[_0x260a('0x28')](function(_0x43863f){if(_0x43863f){_0x3432a9=_0x43863f;_0x524e51[_0x260a('0x33')]=_[_0x260a('0x48')](db[_0x260a('0x50')][_0x260a('0x49')]);_0x524e51[_0x260a('0x36')]=_[_0x260a('0x48')](_0x4de8b1[_0x260a('0x36')]);_0x524e51['filters']=_['intersection'](_0x524e51['model'],_0x524e51[_0x260a('0x36')]);_0x572946[_0x260a('0x37')]=_[_0x260a('0x35')](_0x524e51[_0x260a('0x33')],qs['fields'](_0x4de8b1[_0x260a('0x36')][_0x260a('0x38')]));_0x572946[_0x260a('0x37')]=_0x572946['attributes'][_0x260a('0x39')]?_0x572946['attributes']:_0x524e51[_0x260a('0x33')];_0x572946[_0x260a('0x3c')]=qs[_0x260a('0x3d')](_0x4de8b1[_0x260a('0x36')][_0x260a('0x3d')]);_0x572946[_0x260a('0x3e')]=qs[_0x260a('0x34')](_[_0x260a('0x3f')](_0x4de8b1['query'],_0x524e51[_0x260a('0x34')]));if(_0x4de8b1[_0x260a('0x36')][_0x260a('0x59')]){_0x572946['where']=_[_0x260a('0x40')](_0x572946[_0x260a('0x3e')],{'$or':_[_0x260a('0x2f')](_0x572946['attributes'],function(_0x4e8d75){var _0x22e3e5={};_0x22e3e5[_0x4e8d75]={'$like':'%'+_0x4de8b1[_0x260a('0x36')][_0x260a('0x59')]+'%'};return _0x22e3e5;})});}if(_0x4de8b1[_0x260a('0x36')]['$gte']){var _0x45b066=_0x4de8b1[_0x260a('0x36')][_0x260a('0x5e')][_0x260a('0x5f')](',');var _0x5166f4={};_0x5166f4[_0x45b066[0x0]]={'$gte':moment(_0x45b066[0x1])['format'](_0x260a('0x60'))};_0x572946[_0x260a('0x3e')]=_[_0x260a('0x40')](_0x572946[_0x260a('0x3e')],_0x5166f4);}_0x572946=_[_0x260a('0x40')]({},_0x572946,_0x4de8b1['options']);return _0x3432a9['getMessages'](_0x572946);}})[_0x260a('0x28')](function(_0x3700f5){if(_0x3700f5){_0x206211=_0x3700f5[_0x260a('0x39')];if(!_0x4de8b1[_0x260a('0x36')]['hasOwnProperty'](_0x260a('0x3b'))){_0x572946[_0x260a('0x21')]=qs[_0x260a('0x21')](_0x4de8b1[_0x260a('0x36')]['limit']);_0x572946['offset']=qs[_0x260a('0x1f')](_0x4de8b1[_0x260a('0x36')]['offset']);}return _0x3432a9[_0x260a('0x5d')](_0x572946);}})[_0x260a('0x28')](function(_0x3de79e){if(_0x3de79e){return _0x3de79e?{'count':_0x206211,'rows':_0x3de79e}:null;}})[_0x260a('0x28')](respondWithResult(_0x386cc3,null))[_0x260a('0x45')](handleError(_0x386cc3,null));};
\ No newline at end of file
+var _0xeebc=['fields','hasOwnProperty','order','sort','pick','where','type','filter','options','findAll','rows','catch','show','params','length','includeAll','include','merge','find','create','body','destroy','describe','getUnread','ChatInternalMessage','user','addMembers','ids','findOne','User','nolimit','getMembers','removeMembers','getMessages','$gte','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','limit','undefined','count','offset','set','apply','save','update','then','end','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes'];(function(_0x5572fa,_0x240c8d){var _0xb4a018=function(_0x50d659){while(--_0x50d659){_0x5572fa['push'](_0x5572fa['shift']());}};_0xb4a018(++_0x240c8d);}(_0xeebc,0x86));var _0xceeb=function(_0x2005d2,_0xe470e0){_0x2005d2=_0x2005d2-0x0;var _0x2c635a=_0xeebc[_0x2005d2];return _0x2c635a;};'use strict';var emlformat=require(_0xceeb('0x0'));var rimraf=require(_0xceeb('0x1'));var zipdir=require(_0xceeb('0x2'));var jsonpatch=require(_0xceeb('0x3'));var rp=require(_0xceeb('0x4'));var moment=require(_0xceeb('0x5'));var BPromise=require(_0xceeb('0x6'));var Mustache=require(_0xceeb('0x7'));var util=require('util');var path=require('path');var sox=require(_0xceeb('0x8'));var csv=require(_0xceeb('0x9'));var ejs=require(_0xceeb('0xa'));var fs=require('fs');var fs_extra=require(_0xceeb('0xb'));var _=require(_0xceeb('0xc'));var squel=require(_0xceeb('0xd'));var crypto=require(_0xceeb('0xe'));var jsforce=require(_0xceeb('0xf'));var deskjs=require(_0xceeb('0x10'));var toCsv=require(_0xceeb('0x9'));var querystring=require(_0xceeb('0x11'));var Papa=require('papaparse');var Redis=require(_0xceeb('0x12'));var authService=require(_0xceeb('0x13'));var qs=require(_0xceeb('0x14'));var as=require(_0xceeb('0x15'));var hardwareService=require(_0xceeb('0x16'));var logger=require(_0xceeb('0x17'))(_0xceeb('0x18'));var utils=require(_0xceeb('0x19'));var config=require(_0xceeb('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xceeb('0x1b'))['db'];config[_0xceeb('0x1c')]=_[_0xceeb('0x1d')](config[_0xceeb('0x1c')],{'host':_0xceeb('0x1e'),'port':0x18eb});var socket=require(_0xceeb('0x1f'))(new Redis(config[_0xceeb('0x1c')]));require('./chatGroup.socket')[_0xceeb('0x20')](socket);function respondWithStatusCode(_0x59bee2,_0x2a6b56){_0x2a6b56=_0x2a6b56||0xcc;return function(_0x490751){if(_0x490751){return _0x59bee2[_0xceeb('0x21')](_0x2a6b56);}return _0x59bee2[_0xceeb('0x22')](_0x2a6b56)['end']();};}function respondWithResult(_0x40c2bb,_0x1b7cbe){_0x1b7cbe=_0x1b7cbe||0xc8;return function(_0x4f5636){if(_0x4f5636){return _0x40c2bb['status'](_0x1b7cbe)[_0xceeb('0x23')](_0x4f5636);}};}function respondWithFilteredResult(_0x522804,_0x31dc30){return function(_0x28f891){if(_0x28f891){var _0x5f1412=typeof _0x31dc30['offset']==='undefined'&&typeof _0x31dc30[_0xceeb('0x24')]===_0xceeb('0x25');var _0x9a4c89=_0x28f891[_0xceeb('0x26')];var _0x49fa18=_0x5f1412?0x0:_0x31dc30[_0xceeb('0x27')];var _0x29be4b=_0x5f1412?_0x28f891['count']:_0x31dc30[_0xceeb('0x27')]+_0x31dc30[_0xceeb('0x24')];var _0x7ff20a;if(_0x29be4b>=_0x9a4c89){_0x29be4b=_0x9a4c89;_0x7ff20a=0xc8;}else{_0x7ff20a=0xce;}_0x522804[_0xceeb('0x22')](_0x7ff20a);return _0x522804[_0xceeb('0x28')]('Content-Range',_0x49fa18+'-'+_0x29be4b+'/'+_0x9a4c89)[_0xceeb('0x23')](_0x28f891);}return null;};}function patchUpdates(_0x3b8262){return function(_0x563ca5){try{jsonpatch[_0xceeb('0x29')](_0x563ca5,_0x3b8262,!![]);}catch(_0x40b4c4){return BPromise['reject'](_0x40b4c4);}return _0x563ca5[_0xceeb('0x2a')]();};}function saveUpdates(_0x4e1c44,_0x43f4bb){return function(_0x1b0693){if(_0x1b0693){return _0x1b0693[_0xceeb('0x2b')](_0x4e1c44)['then'](function(_0x244d86){return _0x244d86;});}return null;};}function removeEntity(_0x1d1789,_0x4ef47b){return function(_0x5c423a){if(_0x5c423a){return _0x5c423a['destroy']()[_0xceeb('0x2c')](function(){_0x1d1789[_0xceeb('0x22')](0xcc)[_0xceeb('0x2d')]();});}};}function handleEntityNotFound(_0x231fe7,_0x12c075){return function(_0x5cdd24){if(!_0x5cdd24){_0x231fe7['sendStatus'](0x194);}return _0x5cdd24;};}function handleError(_0x565263,_0x2c32f8){_0x2c32f8=_0x2c32f8||0x1f4;return function(_0x4722d5){logger[_0xceeb('0x2e')](_0x4722d5[_0xceeb('0x2f')]);if(_0x4722d5[_0xceeb('0x30')]){delete _0x4722d5[_0xceeb('0x30')];}_0x565263[_0xceeb('0x22')](_0x2c32f8)[_0xceeb('0x31')](_0x4722d5);};}exports[_0xceeb('0x32')]=function(_0x33af93,_0x5caaaf){var _0x21ffdf={},_0x24b0bb={},_0x5e5a3c={'count':0x0,'rows':[]};var _0x1f77f2=_[_0xceeb('0x33')](db[_0xceeb('0x34')][_0xceeb('0x35')],function(_0x1f063d){return{'name':_0x1f063d[_0xceeb('0x36')],'type':_0x1f063d['type'][_0xceeb('0x37')]};});_0x24b0bb[_0xceeb('0x38')]=_['map'](_0x1f77f2,'name');_0x24b0bb[_0xceeb('0x39')]=_[_0xceeb('0x3a')](_0x33af93['query']);_0x24b0bb[_0xceeb('0x3b')]=_[_0xceeb('0x3c')](_0x24b0bb[_0xceeb('0x38')],_0x24b0bb['query']);_0x21ffdf[_0xceeb('0x3d')]=_[_0xceeb('0x3c')](_0x24b0bb[_0xceeb('0x38')],qs[_0xceeb('0x3e')](_0x33af93[_0xceeb('0x39')][_0xceeb('0x3e')]));_0x21ffdf[_0xceeb('0x3d')]=_0x21ffdf[_0xceeb('0x3d')]['length']?_0x21ffdf[_0xceeb('0x3d')]:_0x24b0bb[_0xceeb('0x38')];if(!_0x33af93['query'][_0xceeb('0x3f')]('nolimit')){_0x21ffdf[_0xceeb('0x24')]=qs[_0xceeb('0x24')](_0x33af93[_0xceeb('0x39')]['limit']);_0x21ffdf['offset']=qs['offset'](_0x33af93['query'][_0xceeb('0x27')]);}_0x21ffdf[_0xceeb('0x40')]=qs[_0xceeb('0x41')](_0x33af93['query'][_0xceeb('0x41')]);_0x21ffdf['where']=qs[_0xceeb('0x3b')](_[_0xceeb('0x42')](_0x33af93[_0xceeb('0x39')],_0x24b0bb['filters']),_0x1f77f2);if(_0x33af93[_0xceeb('0x39')]['filter']){_0x21ffdf[_0xceeb('0x43')]=_['merge'](_0x21ffdf[_0xceeb('0x43')],{'$or':_[_0xceeb('0x33')](_0x1f77f2,function(_0x62067a){if(_0x62067a[_0xceeb('0x44')]!=='VIRTUAL'){var _0x13a16d={};_0x13a16d[_0x62067a[_0xceeb('0x30')]]={'$like':'%'+_0x33af93[_0xceeb('0x39')][_0xceeb('0x45')]+'%'};return _0x13a16d;}})});}_0x21ffdf=_['merge']({},_0x21ffdf,_0x33af93[_0xceeb('0x46')]);var _0x5eab10={'where':_0x21ffdf['where']};return db[_0xceeb('0x34')][_0xceeb('0x26')](_0x5eab10)[_0xceeb('0x2c')](function(_0x51e656){_0x5e5a3c[_0xceeb('0x26')]=_0x51e656;if(_0x33af93[_0xceeb('0x39')]['includeAll']){_0x21ffdf['include']=[{'all':!![]}];}return db[_0xceeb('0x34')][_0xceeb('0x47')](_0x21ffdf);})[_0xceeb('0x2c')](function(_0x50caec){_0x5e5a3c[_0xceeb('0x48')]=_0x50caec;return _0x5e5a3c;})[_0xceeb('0x2c')](respondWithFilteredResult(_0x5caaaf,_0x21ffdf))[_0xceeb('0x49')](handleError(_0x5caaaf,null));};exports[_0xceeb('0x4a')]=function(_0x3db709,_0x976f2){var _0x2e4454={'raw':!![],'where':{'id':_0x3db709[_0xceeb('0x4b')]['id']}},_0x475f13={};_0x475f13[_0xceeb('0x38')]=_['keys'](db[_0xceeb('0x34')][_0xceeb('0x35')]);_0x475f13[_0xceeb('0x39')]=_[_0xceeb('0x3a')](_0x3db709[_0xceeb('0x39')]);_0x475f13['filters']=_[_0xceeb('0x3c')](_0x475f13[_0xceeb('0x38')],_0x475f13['query']);_0x2e4454[_0xceeb('0x3d')]=_[_0xceeb('0x3c')](_0x475f13[_0xceeb('0x38')],qs[_0xceeb('0x3e')](_0x3db709[_0xceeb('0x39')][_0xceeb('0x3e')]));_0x2e4454[_0xceeb('0x3d')]=_0x2e4454[_0xceeb('0x3d')][_0xceeb('0x4c')]?_0x2e4454[_0xceeb('0x3d')]:_0x475f13[_0xceeb('0x38')];if(_0x3db709['query'][_0xceeb('0x4d')]){_0x2e4454[_0xceeb('0x4e')]=[{'all':!![]}];}_0x2e4454=_[_0xceeb('0x4f')]({},_0x2e4454,_0x3db709[_0xceeb('0x46')]);return db[_0xceeb('0x34')][_0xceeb('0x50')](_0x2e4454)['then'](handleEntityNotFound(_0x976f2,null))[_0xceeb('0x2c')](respondWithResult(_0x976f2,null))['catch'](handleError(_0x976f2,null));};exports[_0xceeb('0x51')]=function(_0x57fce0,_0x1b6d7f){return db['ChatGroup'][_0xceeb('0x51')](_0x57fce0[_0xceeb('0x52')],{})[_0xceeb('0x2c')](respondWithResult(_0x1b6d7f,0xc9))['catch'](handleError(_0x1b6d7f,null));};exports['update']=function(_0x1b416b,_0x19cdd8){if(_0x1b416b[_0xceeb('0x52')]['id']){delete _0x1b416b[_0xceeb('0x52')]['id'];}return db[_0xceeb('0x34')]['find']({'where':{'id':_0x1b416b['params']['id']}})[_0xceeb('0x2c')](handleEntityNotFound(_0x19cdd8,null))[_0xceeb('0x2c')](saveUpdates(_0x1b416b[_0xceeb('0x52')],null))[_0xceeb('0x2c')](respondWithResult(_0x19cdd8,null))[_0xceeb('0x49')](handleError(_0x19cdd8,null));};exports[_0xceeb('0x53')]=function(_0x282e3e,_0x20f09f){return db[_0xceeb('0x34')][_0xceeb('0x50')]({'where':{'id':_0x282e3e['params']['id']}})[_0xceeb('0x2c')](handleEntityNotFound(_0x20f09f,null))[_0xceeb('0x2c')](removeEntity(_0x20f09f,null))[_0xceeb('0x49')](handleError(_0x20f09f,null));};exports[_0xceeb('0x54')]=function(_0x5334ef,_0x20a0c8){return db[_0xceeb('0x34')]['describe']()[_0xceeb('0x2c')](respondWithResult(_0x20a0c8,null))[_0xceeb('0x49')](handleError(_0x20a0c8,null));};exports[_0xceeb('0x55')]=function(_0x1ca49a,_0x1ddad0,_0x2278d8){return db[_0xceeb('0x56')][_0xceeb('0x26')]({'where':{'ChatGroupId':_0x1ca49a[_0xceeb('0x4b')]['id'],'ToId':_0x1ca49a[_0xceeb('0x57')]['id'],'read':![]}})[_0xceeb('0x2c')](function(_0x258a42){return{'id':_['toInteger'](_0x1ca49a['params']['id']),'count':_0x258a42};})[_0xceeb('0x2c')](respondWithResult(_0x1ddad0,null))[_0xceeb('0x49')](handleError(_0x1ddad0,null));};exports[_0xceeb('0x58')]=function(_0x2724cd,_0x50f816,_0x5dc286){return db['ChatGroup'][_0xceeb('0x50')]({'where':{'id':_0x2724cd[_0xceeb('0x4b')]['id']}})[_0xceeb('0x2c')](handleEntityNotFound(_0x50f816,null))[_0xceeb('0x2c')](function(_0x3e8ad9){if(_0x3e8ad9){return _0x3e8ad9[_0xceeb('0x58')](_0x2724cd[_0xceeb('0x52')]['ids'],_['omit'](_0x2724cd[_0xceeb('0x52')],[_0xceeb('0x59'),'id'])||{});}})[_0xceeb('0x2c')](respondWithResult(_0x50f816,null))['catch'](handleError(_0x50f816,null));};exports['getMembers']=function(_0x375ccc,_0x1f03ce,_0x2a0cfc){var _0x172230={};var _0x347395={};var _0x41f924;var _0x3fa6ba;return db[_0xceeb('0x34')][_0xceeb('0x5a')]({'where':{'id':_0x375ccc['params']['id']}})['then'](handleEntityNotFound(_0x1f03ce,null))['then'](function(_0x7ad6a6){if(_0x7ad6a6){_0x41f924=_0x7ad6a6;_0x347395[_0xceeb('0x38')]=_[_0xceeb('0x3a')](db[_0xceeb('0x5b')][_0xceeb('0x35')]);_0x347395[_0xceeb('0x39')]=_[_0xceeb('0x3a')](_0x375ccc[_0xceeb('0x39')]);_0x347395['filters']=_[_0xceeb('0x3c')](_0x347395[_0xceeb('0x38')],_0x347395[_0xceeb('0x39')]);_0x172230[_0xceeb('0x3d')]=_[_0xceeb('0x3c')](_0x347395[_0xceeb('0x38')],qs[_0xceeb('0x3e')](_0x375ccc['query']['fields']));_0x172230[_0xceeb('0x3d')]=_0x172230[_0xceeb('0x3d')][_0xceeb('0x4c')]?_0x172230[_0xceeb('0x3d')]:_0x347395[_0xceeb('0x38')];_0x172230['order']=qs[_0xceeb('0x41')](_0x375ccc['query'][_0xceeb('0x41')]);_0x172230['where']=qs[_0xceeb('0x3b')](_['pick'](_0x375ccc[_0xceeb('0x39')],_0x347395[_0xceeb('0x3b')]));if(_0x375ccc[_0xceeb('0x39')][_0xceeb('0x45')]){_0x172230[_0xceeb('0x43')]=_[_0xceeb('0x4f')](_0x172230['where'],{'$or':_['map'](_0x172230[_0xceeb('0x3d')],function(_0xc46dda){var _0x4b8d0c={};_0x4b8d0c[_0xc46dda]={'$like':'%'+_0x375ccc['query']['filter']+'%'};return _0x4b8d0c;})});}_0x172230=_[_0xceeb('0x4f')]({},_0x172230,_0x375ccc[_0xceeb('0x46')]);return _0x41f924['getMembers'](_0x172230);}})[_0xceeb('0x2c')](function(_0x4b350d){if(_0x4b350d){_0x3fa6ba=_0x4b350d[_0xceeb('0x4c')];if(!_0x375ccc[_0xceeb('0x39')][_0xceeb('0x3f')](_0xceeb('0x5c'))){_0x172230[_0xceeb('0x24')]=qs[_0xceeb('0x24')](_0x375ccc[_0xceeb('0x39')][_0xceeb('0x24')]);_0x172230[_0xceeb('0x27')]=qs[_0xceeb('0x27')](_0x375ccc[_0xceeb('0x39')][_0xceeb('0x27')]);}return _0x41f924[_0xceeb('0x5d')](_0x172230);}})['then'](function(_0x153cdc){if(_0x153cdc){return _0x153cdc?{'count':_0x3fa6ba,'rows':_0x153cdc}:null;}})[_0xceeb('0x2c')](respondWithResult(_0x1f03ce,null))[_0xceeb('0x49')](handleError(_0x1f03ce,null));};exports[_0xceeb('0x5e')]=function(_0x3594c5,_0x2e70c1,_0x2cd40d){return db[_0xceeb('0x34')][_0xceeb('0x50')]({'where':{'id':_0x3594c5[_0xceeb('0x4b')]['id']}})[_0xceeb('0x2c')](handleEntityNotFound(_0x2e70c1,null))[_0xceeb('0x2c')](function(_0x54fb3f){if(_0x54fb3f){return _0x54fb3f[_0xceeb('0x5e')](_0x3594c5[_0xceeb('0x39')]['ids']);}})[_0xceeb('0x2c')](respondWithStatusCode(_0x2e70c1,null))['catch'](handleError(_0x2e70c1,null));};exports['addMessage']=function(_0x53a021,_0x2a56ba,_0x27b7ab){if(_0x53a021['body']['id']){delete _0x53a021[_0xceeb('0x52')]['id'];}return db[_0xceeb('0x34')][_0xceeb('0x50')]({'where':{'id':_0x53a021[_0xceeb('0x4b')]['id']}})[_0xceeb('0x2c')](handleEntityNotFound(_0x2a56ba,null))[_0xceeb('0x2c')](function(_0x26ee9b){if(_0x26ee9b){_0x53a021[_0xceeb('0x52')]['ChatGroupId']=_0x26ee9b['id'];return db[_0xceeb('0x56')][_0xceeb('0x51')](_0x53a021[_0xceeb('0x52')]);}})[_0xceeb('0x2c')](respondWithResult(_0x2a56ba,null))[_0xceeb('0x49')](handleError(_0x2a56ba,null));};exports[_0xceeb('0x5f')]=function(_0x16cc86,_0xa2c6f,_0x278c9d){var _0x16a068={};var _0x411359={};var _0x34d3c0;var _0x448a75;return db[_0xceeb('0x34')][_0xceeb('0x5a')]({'where':{'id':_0x16cc86[_0xceeb('0x4b')]['id']}})[_0xceeb('0x2c')](handleEntityNotFound(_0xa2c6f,null))[_0xceeb('0x2c')](function(_0x3282e5){if(_0x3282e5){_0x34d3c0=_0x3282e5;_0x411359['model']=_['keys'](db[_0xceeb('0x56')][_0xceeb('0x35')]);_0x411359[_0xceeb('0x39')]=_[_0xceeb('0x3a')](_0x16cc86['query']);_0x411359[_0xceeb('0x3b')]=_['intersection'](_0x411359[_0xceeb('0x38')],_0x411359['query']);_0x16a068[_0xceeb('0x3d')]=_['intersection'](_0x411359['model'],qs[_0xceeb('0x3e')](_0x16cc86[_0xceeb('0x39')][_0xceeb('0x3e')]));_0x16a068[_0xceeb('0x3d')]=_0x16a068[_0xceeb('0x3d')][_0xceeb('0x4c')]?_0x16a068['attributes']:_0x411359[_0xceeb('0x38')];_0x16a068[_0xceeb('0x40')]=qs[_0xceeb('0x41')](_0x16cc86[_0xceeb('0x39')][_0xceeb('0x41')]);_0x16a068['where']=qs[_0xceeb('0x3b')](_[_0xceeb('0x42')](_0x16cc86[_0xceeb('0x39')],_0x411359[_0xceeb('0x3b')]));if(_0x16cc86[_0xceeb('0x39')][_0xceeb('0x45')]){_0x16a068[_0xceeb('0x43')]=_[_0xceeb('0x4f')](_0x16a068[_0xceeb('0x43')],{'$or':_[_0xceeb('0x33')](_0x16a068['attributes'],function(_0x4cacc8){var _0x29b08d={};_0x29b08d[_0x4cacc8]={'$like':'%'+_0x16cc86[_0xceeb('0x39')][_0xceeb('0x45')]+'%'};return _0x29b08d;})});}if(_0x16cc86[_0xceeb('0x39')][_0xceeb('0x60')]){var _0x126087=_0x16cc86[_0xceeb('0x39')][_0xceeb('0x60')]['split'](',');var _0xb2c946={};_0xb2c946[_0x126087[0x0]]={'$gte':moment(_0x126087[0x1])['format'](_0xceeb('0x61'))};_0x16a068['where']=_[_0xceeb('0x4f')](_0x16a068[_0xceeb('0x43')],_0xb2c946);}_0x16a068=_['merge']({},_0x16a068,_0x16cc86[_0xceeb('0x46')]);return _0x34d3c0[_0xceeb('0x5f')](_0x16a068);}})[_0xceeb('0x2c')](function(_0x59e8fd){if(_0x59e8fd){_0x448a75=_0x59e8fd[_0xceeb('0x4c')];if(!_0x16cc86[_0xceeb('0x39')][_0xceeb('0x3f')](_0xceeb('0x5c'))){_0x16a068[_0xceeb('0x24')]=qs['limit'](_0x16cc86[_0xceeb('0x39')][_0xceeb('0x24')]);_0x16a068['offset']=qs['offset'](_0x16cc86['query'][_0xceeb('0x27')]);}return _0x34d3c0['getMessages'](_0x16a068);}})[_0xceeb('0x2c')](function(_0x40061b){if(_0x40061b){return _0x40061b?{'count':_0x448a75,'rows':_0x40061b}:null;}})[_0xceeb('0x2c')](respondWithResult(_0xa2c6f,null))['catch'](handleError(_0xa2c6f,null));};
\ No newline at end of file
index 147ff3b..a1669f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5e5=['emit','hasOwnProperty','hook','ChatGroup','save','update','remove'];(function(_0xce89fa,_0x41ebe0){var _0x1a126c=function(_0x5a0384){while(--_0x5a0384){_0xce89fa['push'](_0xce89fa['shift']());}};_0x1a126c(++_0x41ebe0);}(_0xc5e5,0xdc));var _0x5c5e=function(_0x279981,_0x5f24b4){_0x279981=_0x279981-0x0;var _0x2fce6e=_0xc5e5[_0x279981];return _0x2fce6e;};'use strict';var EventEmitter=require('events');var ChatGroup=require('../../mysqldb')['db'][_0x5c5e('0x0')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5c5e('0x1'),'afterUpdate':_0x5c5e('0x2'),'afterDestroy':_0x5c5e('0x3')};function emitEvent(_0x32d8f5){return function(_0x49029d,_0x41ee97,_0x42c1c2){ChatGroupEvents[_0x5c5e('0x4')](_0x32d8f5+':'+_0x49029d['id'],_0x49029d);ChatGroupEvents['emit'](_0x32d8f5,_0x49029d);_0x42c1c2(null);};}for(var e in events){if(events[_0x5c5e('0x5')](e)){var event=events[e];ChatGroup[_0x5c5e('0x6')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0xd3a7=['hasOwnProperty','hook','events','../../mysqldb','ChatGroup','setMaxListeners','save','remove','emit'];(function(_0x454018,_0x46e33a){var _0x24697d=function(_0x3ec647){while(--_0x3ec647){_0x454018['push'](_0x454018['shift']());}};_0x24697d(++_0x46e33a);}(_0xd3a7,0x107));var _0x7d3a=function(_0x48e217,_0x52f37f){_0x48e217=_0x48e217-0x0;var _0x3dec9b=_0xd3a7[_0x48e217];return _0x3dec9b;};'use strict';var EventEmitter=require(_0x7d3a('0x0'));var ChatGroup=require(_0x7d3a('0x1'))['db'][_0x7d3a('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x7d3a('0x3')](0x0);var events={'afterCreate':_0x7d3a('0x4'),'afterUpdate':'update','afterDestroy':_0x7d3a('0x5')};function emitEvent(_0x11263b){return function(_0x4e808a,_0xd65c98,_0x5ab854){ChatGroupEvents[_0x7d3a('0x6')](_0x11263b+':'+_0x4e808a['id'],_0x4e808a);ChatGroupEvents[_0x7d3a('0x6')](_0x11263b,_0x4e808a);_0x5ab854(null);};}for(var e in events){if(events[_0x7d3a('0x7')](e)){var event=events[e];ChatGroup[_0x7d3a('0x8')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index 2feb638..722c44d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc30c=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports','define','chat_groups','util','../../config/logger'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xc30c,0xa6));var _0xcc30=function(_0x23600c,_0x31d165){_0x23600c=_0x23600c-0x0;var _0x57f2a2=_0xc30c[_0x23600c];return _0x57f2a2;};'use strict';var _=require('lodash');var util=require(_0xcc30('0x0'));var logger=require(_0xcc30('0x1'))('api');var moment=require(_0xcc30('0x2'));var BPromise=require(_0xcc30('0x3'));var rp=require(_0xcc30('0x4'));var fs=require('fs');var path=require(_0xcc30('0x5'));var rimraf=require(_0xcc30('0x6'));var config=require(_0xcc30('0x7'));var attributes=require(_0xcc30('0x8'));module[_0xcc30('0x9')]=function(_0x15eb0b,_0x53177c){return _0x15eb0b[_0xcc30('0xa')]('ChatGroup',attributes,{'tableName':_0xcc30('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x545f=['exports','define','ChatGroup','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1ca9eb,_0x99a10b){var _0x2e284e=function(_0x1196a4){while(--_0x1196a4){_0x1ca9eb['push'](_0x1ca9eb['shift']());}};_0x2e284e(++_0x99a10b);}(_0x545f,0x7b));var _0xf545=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x545f[_0xe66cf2];return _0x2d84e7;};'use strict';var _=require('lodash');var util=require(_0xf545('0x0'));var logger=require(_0xf545('0x1'))(_0xf545('0x2'));var moment=require(_0xf545('0x3'));var BPromise=require(_0xf545('0x4'));var rp=require(_0xf545('0x5'));var fs=require('fs');var path=require(_0xf545('0x6'));var rimraf=require(_0xf545('0x7'));var config=require(_0xf545('0x8'));var attributes=require('./chatGroup.attributes');module[_0xf545('0x9')]=function(_0x3b8af7,_0x38f650){return _0x3b8af7[_0xf545('0xa')](_0xf545('0xb'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 784da2c..3e6ee25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdabe=['../../config/environment','jayson/promise','http','redis','defaults','localhost','./chatGroup.socket','request','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x386b6b,_0x489623){var _0x39969e=function(_0x36c740){while(--_0x36c740){_0x386b6b['push'](_0x386b6b['shift']());}};_0x39969e(++_0x489623);}(_0xdabe,0x1a8));var _0xedab=function(_0x486e93,_0x4a2a4a){_0x486e93=_0x486e93-0x0;var _0x42cd8f=_0xdabe[_0x486e93];return _0x42cd8f;};'use strict';var _=require('lodash');var util=require(_0xedab('0x0'));var moment=require(_0xedab('0x1'));var BPromise=require(_0xedab('0x2'));var rs=require(_0xedab('0x3'));var fs=require('fs');var Redis=require(_0xedab('0x4'));var db=require(_0xedab('0x5'))['db'];var utils=require(_0xedab('0x6'));var logger=require(_0xedab('0x7'))('rpc');var config=require(_0xedab('0x8'));var jayson=require(_0xedab('0x9'));var client=jayson['client'][_0xedab('0xa')]({'port':0x232a});config[_0xedab('0xb')]=_[_0xedab('0xc')](config[_0xedab('0xb')],{'host':_0xedab('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xedab('0xe'))['register'](socket);function respondWithRpcPromise(_0x3295fb,_0x22ee1b,_0x316ed2){return new BPromise(function(_0xab9110,_0x4e7ef8){return client[_0xedab('0xf')](_0x3295fb,_0x316ed2)['then'](function(_0x358c26){logger['info'](_0xedab('0x10'),_0x22ee1b,_0xedab('0x11'));logger[_0xedab('0x12')](_0xedab('0x13'),_0x22ee1b,_0xedab('0x11'),JSON[_0xedab('0x14')](_0x358c26));if(_0x358c26[_0xedab('0x15')]){if(_0x358c26['error'][_0xedab('0x16')]===0x1f4){logger[_0xedab('0x15')](_0xedab('0x10'),_0x22ee1b,_0x358c26['error'][_0xedab('0x17')]);return _0x4e7ef8(_0x358c26[_0xedab('0x15')][_0xedab('0x17')]);}logger['error']('ChatGroup,\x20%s,\x20%s',_0x22ee1b,_0x358c26['error'][_0xedab('0x17')]);return _0xab9110(_0x358c26[_0xedab('0x15')][_0xedab('0x17')]);}else{logger[_0xedab('0x18')](_0xedab('0x10'),_0x22ee1b,'request\x20sent');_0xab9110(_0x358c26[_0xedab('0x19')][_0xedab('0x17')]);}})[_0xedab('0x1a')](function(_0x18522f){logger[_0xedab('0x15')](_0xedab('0x10'),_0x22ee1b,_0x18522f);_0x4e7ef8(_0x18522f);});});}
\ No newline at end of file
+var _0xd5b2=['../../config/utils','../../config/logger','rpc','http','defaults','localhost','redis','./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0xcf0d77,_0x2195aa){var _0x13b05f=function(_0x2e798b){while(--_0x2e798b){_0xcf0d77['push'](_0xcf0d77['shift']());}};_0x13b05f(++_0x2195aa);}(_0xd5b2,0x10e));var _0x2d5b=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0xd5b2[_0x23e7c1];return _0x1add43;};'use strict';var _=require('lodash');var util=require(_0x2d5b('0x0'));var moment=require(_0x2d5b('0x1'));var BPromise=require('bluebird');var rs=require(_0x2d5b('0x2'));var fs=require('fs');var Redis=require(_0x2d5b('0x3'));var db=require(_0x2d5b('0x4'))['db'];var utils=require(_0x2d5b('0x5'));var logger=require(_0x2d5b('0x6'))(_0x2d5b('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x2d5b('0x8')]({'port':0x232a});config['redis']=_[_0x2d5b('0x9')](config['redis'],{'host':_0x2d5b('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2d5b('0xb')]));require(_0x2d5b('0xc'))[_0x2d5b('0xd')](socket);function respondWithRpcPromise(_0x253455,_0x15fdce,_0x4c65b7){return new BPromise(function(_0x2c0edd,_0xa902be){return client[_0x2d5b('0xe')](_0x253455,_0x4c65b7)[_0x2d5b('0xf')](function(_0x141e69){logger[_0x2d5b('0x10')](_0x2d5b('0x11'),_0x15fdce,_0x2d5b('0x12'));logger['debug']('ChatGroup,\x20%s,\x20%s,\x20%s',_0x15fdce,_0x2d5b('0x12'),JSON[_0x2d5b('0x13')](_0x141e69));if(_0x141e69[_0x2d5b('0x14')]){if(_0x141e69[_0x2d5b('0x14')][_0x2d5b('0x15')]===0x1f4){logger[_0x2d5b('0x14')]('ChatGroup,\x20%s,\x20%s',_0x15fdce,_0x141e69[_0x2d5b('0x14')]['message']);return _0xa902be(_0x141e69[_0x2d5b('0x14')][_0x2d5b('0x16')]);}logger['error'](_0x2d5b('0x11'),_0x15fdce,_0x141e69[_0x2d5b('0x14')]['message']);return _0x2c0edd(_0x141e69[_0x2d5b('0x14')][_0x2d5b('0x16')]);}else{logger['info'](_0x2d5b('0x11'),_0x15fdce,_0x2d5b('0x12'));_0x2c0edd(_0x141e69[_0x2d5b('0x17')][_0x2d5b('0x16')]);}})[_0x2d5b('0x18')](function(_0xbf491b){logger[_0x2d5b('0x14')]('ChatGroup,\x20%s,\x20%s',_0x15fdce,_0xbf491b);_0xa902be(_0xbf491b);});});}
\ No newline at end of file
index f0fbbe2..8cb7fa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a19=['register','length','chatGroup:','./chatGroup.events','save','remove','removeListener'];(function(_0x4c9753,_0x253117){var _0x299ae5=function(_0x25439d){while(--_0x25439d){_0x4c9753['push'](_0x4c9753['shift']());}};_0x299ae5(++_0x253117);}(_0x5a19,0x7a));var _0x95a1=function(_0x16dd98,_0x11d346){_0x16dd98=_0x16dd98-0x0;var _0xfc7fb3=_0x5a19[_0x16dd98];return _0xfc7fb3;};'use strict';var ChatGroupEvents=require(_0x95a1('0x0'));var events=[_0x95a1('0x1'),_0x95a1('0x2'),'update'];function createListener(_0x52b71a,_0x5a7d35){return function(_0x380a77){_0x5a7d35['emit'](_0x52b71a,_0x380a77);};}function removeListener(_0x11d88a,_0x4138b6){return function(){ChatGroupEvents[_0x95a1('0x3')](_0x11d88a,_0x4138b6);};}exports[_0x95a1('0x4')]=function(_0x1c757f){for(var _0x25b49b=0x0,_0x148649=events[_0x95a1('0x5')];_0x25b49b<_0x148649;_0x25b49b++){var _0x5ef1e8=events[_0x25b49b];var _0x1c8f33=createListener(_0x95a1('0x6')+_0x5ef1e8,_0x1c757f);ChatGroupEvents['on'](_0x5ef1e8,_0x1c8f33);}};
\ No newline at end of file
+var _0x704b=['./chatGroup.events','save','remove','removeListener','register','length'];(function(_0x4570d3,_0x17eea3){var _0x5685a0=function(_0x153cfa){while(--_0x153cfa){_0x4570d3['push'](_0x4570d3['shift']());}};_0x5685a0(++_0x17eea3);}(_0x704b,0x10e));var _0xb704=function(_0x39f794,_0x212dc5){_0x39f794=_0x39f794-0x0;var _0x180134=_0x704b[_0x39f794];return _0x180134;};'use strict';var ChatGroupEvents=require(_0xb704('0x0'));var events=[_0xb704('0x1'),_0xb704('0x2'),'update'];function createListener(_0x33b3ea,_0x27fd3b){return function(_0x58316d){_0x27fd3b['emit'](_0x33b3ea,_0x58316d);};}function removeListener(_0xd2020a,_0x2002fa){return function(){ChatGroupEvents[_0xb704('0x3')](_0xd2020a,_0x2002fa);};}exports[_0xb704('0x4')]=function(_0x7f70b7){for(var _0x4cdded=0x0,_0x69765a=events[_0xb704('0x5')];_0x4cdded<_0x69765a;_0x4cdded++){var _0x35a1fa=events[_0x4cdded];var _0x3fd086=createListener('chatGroup:'+_0x35a1fa,_0x7f70b7);ChatGroupEvents['on'](_0x35a1fa,_0x3fd086);}};
\ No newline at end of file
index f731969..44d8c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc990=['path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','index','isAuthenticated','describe','/:id','show','/:id/unread','/:id/members','/:id/messages','post','create','addMembers','put','delete','destroy','removeMembers','exports','multer','util'];(function(_0x4a9937,_0x179dec){var _0x3971c2=function(_0x2c5468){while(--_0x2c5468){_0x4a9937['push'](_0x4a9937['shift']());}};_0x3971c2(++_0x179dec);}(_0xc990,0xf8));var _0x0c99=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xc990[_0x1969a7];return _0x3d665f;};'use strict';var multer=require(_0x0c99('0x0'));var util=require(_0x0c99('0x1'));var path=require(_0x0c99('0x2'));var timeout=require(_0x0c99('0x3'));var express=require('express');var router=express[_0x0c99('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0c99('0x5'));var config=require(_0x0c99('0x6'));var controller=require(_0x0c99('0x7'));router[_0x0c99('0x8')]('/',auth['isAuthenticated'](),controller[_0x0c99('0x9')]);router['get']('/describe',auth[_0x0c99('0xa')](),controller[_0x0c99('0xb')]);router[_0x0c99('0x8')](_0x0c99('0xc'),auth['isAuthenticated'](),controller[_0x0c99('0xd')]);router['get'](_0x0c99('0xe'),auth['isAuthenticated'](),controller['getUnread']);router[_0x0c99('0x8')](_0x0c99('0xf'),auth[_0x0c99('0xa')](),controller['getMembers']);router[_0x0c99('0x8')](_0x0c99('0x10'),auth[_0x0c99('0xa')](),controller['getMessages']);router[_0x0c99('0x11')]('/',auth[_0x0c99('0xa')](),controller[_0x0c99('0x12')]);router['post']('/:id/members',auth[_0x0c99('0xa')](),controller[_0x0c99('0x13')]);router['post'](_0x0c99('0x10'),auth['isAuthenticated'](),controller['addMessage']);router[_0x0c99('0x14')](_0x0c99('0xc'),auth[_0x0c99('0xa')](),controller['update']);router[_0x0c99('0x15')](_0x0c99('0xc'),auth[_0x0c99('0xa')](),controller[_0x0c99('0x16')]);router['delete'](_0x0c99('0xf'),auth[_0x0c99('0xa')](),controller[_0x0c99('0x17')]);module[_0x0c99('0x18')]=router;
\ No newline at end of file
+var _0x80b8=['isAuthenticated','index','/describe','describe','/:id','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMessage','update','delete','removeMembers','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get'];(function(_0x3de556,_0x4e6c32){var _0x37e99c=function(_0x2ccfa3){while(--_0x2ccfa3){_0x3de556['push'](_0x3de556['shift']());}};_0x37e99c(++_0x4e6c32);}(_0x80b8,0x18b));var _0x880b=function(_0x58fa46,_0x1fbb17){_0x58fa46=_0x58fa46-0x0;var _0x422ea8=_0x80b8[_0x58fa46];return _0x422ea8;};'use strict';var multer=require(_0x880b('0x0'));var util=require(_0x880b('0x1'));var path=require(_0x880b('0x2'));var timeout=require('connect-timeout');var express=require(_0x880b('0x3'));var router=express[_0x880b('0x4')]();var fs_extra=require(_0x880b('0x5'));var auth=require(_0x880b('0x6'));var interaction=require(_0x880b('0x7'));var config=require(_0x880b('0x8'));var controller=require(_0x880b('0x9'));router[_0x880b('0xa')]('/',auth[_0x880b('0xb')](),controller[_0x880b('0xc')]);router[_0x880b('0xa')](_0x880b('0xd'),auth[_0x880b('0xb')](),controller[_0x880b('0xe')]);router[_0x880b('0xa')](_0x880b('0xf'),auth[_0x880b('0xb')](),controller['show']);router[_0x880b('0xa')](_0x880b('0x10'),auth[_0x880b('0xb')](),controller[_0x880b('0x11')]);router[_0x880b('0xa')](_0x880b('0x12'),auth[_0x880b('0xb')](),controller[_0x880b('0x13')]);router[_0x880b('0xa')](_0x880b('0x14'),auth[_0x880b('0xb')](),controller[_0x880b('0x15')]);router[_0x880b('0x16')]('/',auth[_0x880b('0xb')](),controller[_0x880b('0x17')]);router[_0x880b('0x16')](_0x880b('0x12'),auth['isAuthenticated'](),controller['addMembers']);router[_0x880b('0x16')](_0x880b('0x14'),auth['isAuthenticated'](),controller[_0x880b('0x18')]);router['put'](_0x880b('0xf'),auth[_0x880b('0xb')](),controller[_0x880b('0x19')]);router[_0x880b('0x1a')](_0x880b('0xf'),auth['isAuthenticated'](),controller['destroy']);router[_0x880b('0x1a')](_0x880b('0x12'),auth[_0x880b('0xb')](),controller[_0x880b('0x1b')]);module[_0x880b('0x1c')]=router;
\ No newline at end of file
index c8389ec..612ec1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78c8=['STRING','DATE','long','out','sequelize','exports','BOOLEAN','ENUM','TEXT'];(function(_0x345a1b,_0x189c9e){var _0x1b24ec=function(_0x4437af){while(--_0x4437af){_0x345a1b['push'](_0x345a1b['shift']());}};_0x1b24ec(++_0x189c9e);}(_0x78c8,0x1c6));var _0x878c=function(_0x2a9c97,_0x56aea4){_0x2a9c97=_0x2a9c97-0x0;var _0x38e27f=_0x78c8[_0x2a9c97];return _0x38e27f;};'use strict';var Sequelize=require(_0x878c('0x0'));module[_0x878c('0x1')]={'closed':{'type':Sequelize[_0x878c('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x878c('0x3')]('star','thumb'),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0x878c('0x4')]},'pathTranscript':{'type':Sequelize[_0x878c('0x4')]},'mailTranscript':{'type':Sequelize[_0x878c('0x5')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x878c('0x6')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x878c('0x5')]},'note':{'type':Sequelize[_0x878c('0x5')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x878c('0x5')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x878c('0x5')]},'deviceVendor':{'type':Sequelize[_0x878c('0x5')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x878c('0x4')](_0x878c('0x7'))},'read1stAt':{'type':Sequelize[_0x878c('0x6')]},'lastMsgAt':{'type':Sequelize[_0x878c('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x878c('0x3')]('in',_0x878c('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x878c('0x5')]},'vidaooSessionId':{'type':Sequelize[_0x878c('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x878c('0x2')],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x30a2=['INTEGER','ENUM','star','TEXT','STRING','DATE','long','out','sequelize','exports','BOOLEAN'];(function(_0x5228a8,_0x11a1a4){var _0x4b99a3=function(_0x179f2c){while(--_0x179f2c){_0x5228a8['push'](_0x5228a8['shift']());}};_0x4b99a3(++_0x11a1a4);}(_0x30a2,0x19f));var _0x230a=function(_0x1220dc,_0x448145){_0x1220dc=_0x1220dc-0x0;var _0x264ada=_0x30a2[_0x1220dc];return _0x264ada;};'use strict';var Sequelize=require(_0x230a('0x0'));module[_0x230a('0x1')]={'closed':{'type':Sequelize[_0x230a('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x230a('0x3')]},'ratingType':{'type':Sequelize[_0x230a('0x4')]('star','thumb'),'defaultValue':_0x230a('0x5')},'ratingMessage':{'type':Sequelize[_0x230a('0x6')]},'pathTranscript':{'type':Sequelize[_0x230a('0x6')]},'mailTranscript':{'type':Sequelize[_0x230a('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x230a('0x8')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x230a('0x7')]},'thirdDisposition':{'type':Sequelize[_0x230a('0x7')]},'note':{'type':Sequelize[_0x230a('0x7')]},'browserName':{'type':Sequelize[_0x230a('0x7')]},'browserVersion':{'type':Sequelize[_0x230a('0x7')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x230a('0x7')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0x230a('0x7')]},'deviceType':{'type':Sequelize[_0x230a('0x7')]},'referer':{'type':Sequelize[_0x230a('0x6')]},'customerIp':{'type':Sequelize[_0x230a('0x7')]},'formData':{'type':Sequelize['TEXT'](_0x230a('0x9'))},'read1stAt':{'type':Sequelize[_0x230a('0x8')]},'lastMsgAt':{'type':Sequelize[_0x230a('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x230a('0x4')]('in',_0x230a('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x230a('0x7')]},'customerPort':{'type':Sequelize[_0x230a('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x230a('0x2')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x230a('0x3')]}};
\ No newline at end of file
index a840f56..00aa021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa287=['mailTranscript','Mail\x20Transcript','addMessage','ids','omit','getMessages','intersection','fields','hasOwnProperty','nolimit','order','sort','where','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','include','rows','getMyMessages','pick','map','includeAgent','push','addTags','setTags','spread','Tag','emit','chatInteractionTags:save','removeTags','unix','toString','root','server','files','attachments','Contact','lastName','read','Account','Owner','mkdirSync','Chat','N.A.','closed','browserName','osName','referer','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','firstName','value','views','transcript-','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','../../components/parsers/qs','api','../../config/environment','../../mysqldb','localhost','socket.io-emitter','redis','./chatInteraction.socket','register','jayson/promise','client','http','then','ChatInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','sendStatus','name','send','render','merge','body','contact','agent','interaction','account','index','ChatInteraction','fieldName','key','getOptions','findAll','user','show','params','model','keys','rawAttributes','query','filters','attributes','length','includeAll','options','find','create','describe','createVidaooSession','findOne','ChatWebsiteId','vidaooEscalation','vidaooTopic','vidaooNote','vidaooApiKey','fullname','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','vidaooMetadata','metadata','Sequelize','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','Unauthorized','attachId','ChatOfflineMessageId','server/files/attachments/','offline-chat/','join','download','close','server/files/chat/upload/','format','transcript-%s.txt','now','Messages','User','ChatWebsite','CmContact','ContactId','%s%d','agentAlias','System','customer','agentIdentifier','website_alias','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>'];(function(_0x53a949,_0xbdba7b){var _0x322e3e=function(_0x4e2736){while(--_0x4e2736){_0x53a949['push'](_0x53a949['shift']());}};_0x322e3e(++_0xbdba7b);}(_0xa287,0x1e1));var _0x7a28=function(_0x16de68,_0x33d7ff){_0x16de68=_0x16de68-0x0;var _0x1c277e=_0xa287[_0x16de68];return _0x1c277e;};'use strict';var rimraf=require(_0x7a28('0x0'));var zipdir=require(_0x7a28('0x1'));var rp=require('request-promise');var moment=require(_0x7a28('0x2'));var BPromise=require(_0x7a28('0x3'));var Mustache=require('mustache');var util=require(_0x7a28('0x4'));var path=require(_0x7a28('0x5'));var ejs=require(_0x7a28('0x6'));var fs=require('fs');var _=require(_0x7a28('0x7'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require(_0x7a28('0x8'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x7a28('0x9'));var config=require(_0x7a28('0xa'));var db=require(_0x7a28('0xb'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x7a28('0xc'),'port':0x18eb});var socket=require(_0x7a28('0xd'))(new Redis(config[_0x7a28('0xe')]));require(_0x7a28('0xf'))[_0x7a28('0x10')](socket);var jayson=require(_0x7a28('0x11'));var client=jayson[_0x7a28('0x12')]['http']({'port':0x232b});var client9004=jayson[_0x7a28('0x12')][_0x7a28('0x13')]({'port':0x232c});function respondWithRpcPromise(_0x57e7bf,_0x123b08,_0x9b7681,_0xedec78){return new BPromise(function(_0x555c93,_0x10755b){var _0x19391c=_0xedec78||client;return _0x19391c['request'](_0x57e7bf,_0x9b7681)[_0x7a28('0x14')](function(_0x348064){logger['info'](_0x7a28('0x15'),_0x123b08,'request\x20sent');logger[_0x7a28('0x16')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x123b08,_0x7a28('0x17'),JSON[_0x7a28('0x18')](_0x348064));if(_0x348064[_0x7a28('0x19')]){if(_0x348064['error'][_0x7a28('0x1a')]===0x1f4){logger['error'](_0x7a28('0x15'),_0x123b08,_0x348064['error']['message']);return _0x10755b(_0x348064[_0x7a28('0x19')][_0x7a28('0x1b')]);}logger[_0x7a28('0x19')](_0x7a28('0x15'),_0x123b08,_0x348064[_0x7a28('0x19')][_0x7a28('0x1b')]);return _0x555c93(_0x348064['error'][_0x7a28('0x1b')]);}else{logger[_0x7a28('0x1c')]('ChatInteraction,\x20%s,\x20%s',_0x123b08,_0x7a28('0x17'));_0x555c93(_0x348064[_0x7a28('0x1d')][_0x7a28('0x1b')]);}})[_0x7a28('0x1e')](function(_0x6aef64){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x123b08,_0x6aef64);_0x10755b(_0x6aef64);});});}function respondWithStatusCode(_0x3e1c09,_0x4f894b){_0x4f894b=_0x4f894b||0xcc;return function(_0x50c892){if(_0x50c892){return _0x3e1c09['sendStatus'](_0x4f894b);}return _0x3e1c09[_0x7a28('0x1f')](_0x4f894b)[_0x7a28('0x20')]();};}function respondWithResult(_0x4de5e9,_0x1602c3){_0x1602c3=_0x1602c3||0xc8;return function(_0x284ae2){if(_0x284ae2){return _0x4de5e9['status'](_0x1602c3)[_0x7a28('0x21')](_0x284ae2);}};}function respondWithFilteredResult(_0x23a6ff,_0x16122f){return function(_0x2d1bc9){if(_0x2d1bc9){var _0xceab67=typeof _0x16122f[_0x7a28('0x22')]===_0x7a28('0x23')&&typeof _0x16122f[_0x7a28('0x24')]===_0x7a28('0x23');var _0x59eaf9=_0x2d1bc9[_0x7a28('0x25')];var _0x5ea11a=_0xceab67?0x0:_0x16122f[_0x7a28('0x22')];var _0x3f3582=_0xceab67?_0x2d1bc9[_0x7a28('0x25')]:_0x16122f[_0x7a28('0x22')]+_0x16122f[_0x7a28('0x24')];var _0x42865d;if(_0x3f3582>=_0x59eaf9){_0x3f3582=_0x59eaf9;_0x42865d=0xc8;}else{_0x42865d=0xce;}_0x23a6ff['status'](_0x42865d);return _0x23a6ff[_0x7a28('0x26')](_0x7a28('0x27'),_0x5ea11a+'-'+_0x3f3582+'/'+_0x59eaf9)[_0x7a28('0x21')](_0x2d1bc9);}return null;};}function saveUpdates(_0x593074){return function(_0x224a67){if(_0x224a67){return _0x224a67[_0x7a28('0x28')](_0x593074)['then'](function(_0x3c7f8f){return _0x3c7f8f;});}return null;};}function removeEntity(_0xd11e08){return function(_0x3052cb){if(_0x3052cb){return _0x3052cb[_0x7a28('0x29')]()[_0x7a28('0x14')](function(){_0xd11e08[_0x7a28('0x1f')](0xcc)[_0x7a28('0x20')]();});}};}function handleEntityNotFound(_0x7aa817){return function(_0x451225){if(!_0x451225){_0x7aa817[_0x7a28('0x2a')](0x194);}return _0x451225;};}function handleError(_0x3ced13,_0xe0cc1c){_0xe0cc1c=_0xe0cc1c||0x1f4;return function(_0x45b4db){logger[_0x7a28('0x19')](_0x45b4db['stack']);if(_0x45b4db[_0x7a28('0x2b')]){delete _0x45b4db[_0x7a28('0x2b')];}_0x3ced13[_0x7a28('0x1f')](_0xe0cc1c)[_0x7a28('0x2c')](_0x45b4db);};}function getMustacheRender(_0x1b0d33,_0x564983){return Mustache[_0x7a28('0x2d')](_0x1b0d33,_[_0x7a28('0x2e')](_0x564983[_0x7a28('0x2f')],{'contact':_0x564983[_0x7a28('0x30')],'message':_0x564983[_0x7a28('0x1b')],'agent':_0x564983[_0x7a28('0x31')],'interaction':_0x564983[_0x7a28('0x32')],'account':_0x564983[_0x7a28('0x33')]}))||'';}exports[_0x7a28('0x34')]=function(_0x41cced,_0x58105f){var _0x4a301b={};var _0x57b349=_['map'](db[_0x7a28('0x35')]['rawAttributes'],function(_0x10cb23){return{'name':_0x10cb23[_0x7a28('0x36')],'type':_0x10cb23['type'][_0x7a28('0x37')]};});_0x4a301b=qs[_0x7a28('0x38')](_0x57b349,_0x41cced);return interaction[_0x7a28('0x39')]('chat',_0x41cced['query'],_0x41cced[_0x7a28('0x3a')],_0x4a301b,_0x57b349)[_0x7a28('0x14')](respondWithFilteredResult(_0x58105f,_0x4a301b))[_0x7a28('0x1e')](handleError(_0x58105f,null));};exports[_0x7a28('0x3b')]=function(_0x19f7f8,_0x3e0922){var _0x3292fa={'raw':![],'where':{'id':_0x19f7f8[_0x7a28('0x3c')]['id']}},_0x5cd37e={};_0x5cd37e[_0x7a28('0x3d')]=_[_0x7a28('0x3e')](db[_0x7a28('0x35')][_0x7a28('0x3f')]);_0x5cd37e[_0x7a28('0x40')]=_[_0x7a28('0x3e')](_0x19f7f8[_0x7a28('0x40')]);_0x5cd37e[_0x7a28('0x41')]=_['intersection'](_0x5cd37e[_0x7a28('0x3d')],_0x5cd37e[_0x7a28('0x40')]);_0x3292fa[_0x7a28('0x42')]=_['intersection'](_0x5cd37e[_0x7a28('0x3d')],qs['fields'](_0x19f7f8[_0x7a28('0x40')]['fields']));_0x3292fa[_0x7a28('0x42')]=_0x3292fa[_0x7a28('0x42')][_0x7a28('0x43')]?_0x3292fa[_0x7a28('0x42')]:_0x5cd37e[_0x7a28('0x3d')];if(_0x19f7f8[_0x7a28('0x40')][_0x7a28('0x44')]){_0x3292fa['include']=[{'all':!![]}];}_0x3292fa=_[_0x7a28('0x2e')]({},_0x3292fa,_0x19f7f8[_0x7a28('0x45')]);return db['ChatInteraction'][_0x7a28('0x46')](_0x3292fa)[_0x7a28('0x14')](handleEntityNotFound(_0x3e0922,null))[_0x7a28('0x14')](respondWithResult(_0x3e0922,null))[_0x7a28('0x1e')](handleError(_0x3e0922,null));};exports[_0x7a28('0x47')]=function(_0x56da41,_0x299207){return db[_0x7a28('0x35')][_0x7a28('0x47')](_0x56da41[_0x7a28('0x2f')],{})['then'](respondWithResult(_0x299207,0xc9))[_0x7a28('0x1e')](handleError(_0x299207,null));};exports[_0x7a28('0x28')]=function(_0x268e40,_0x36e103){if(_0x268e40[_0x7a28('0x2f')]['id']){delete _0x268e40[_0x7a28('0x2f')]['id'];}return db[_0x7a28('0x35')]['find']({'where':{'id':_0x268e40[_0x7a28('0x3c')]['id']}})[_0x7a28('0x14')](handleEntityNotFound(_0x36e103,null))[_0x7a28('0x14')](saveUpdates(_0x268e40[_0x7a28('0x2f')],null))[_0x7a28('0x14')](respondWithResult(_0x36e103,null))[_0x7a28('0x1e')](handleError(_0x36e103,null));};exports[_0x7a28('0x29')]=function(_0x4580e8,_0x5d72f4){return db[_0x7a28('0x35')][_0x7a28('0x46')]({'where':{'id':_0x4580e8[_0x7a28('0x3c')]['id']}})[_0x7a28('0x14')](handleEntityNotFound(_0x5d72f4,null))['then'](removeEntity(_0x5d72f4,null))[_0x7a28('0x1e')](handleError(_0x5d72f4,null));};exports[_0x7a28('0x48')]=function(_0x5b3733,_0x4f377){return db['ChatInteraction'][_0x7a28('0x48')]()['then'](respondWithResult(_0x4f377,null))['catch'](handleError(_0x4f377,null));};exports[_0x7a28('0x49')]=function(_0x22e14d,_0x19a836){var _0x5b64a3=_0x22e14d[_0x7a28('0x3c')]['id'];var _0x406a1b;var _0x511231;var _0x23c077;return db['ChatInteraction'][_0x7a28('0x4a')]({'where':{'id':_0x5b64a3}})[_0x7a28('0x14')](function(_0x4352f4){_0x406a1b=_0x4352f4;return db['ChatWebsite'][_0x7a28('0x4a')]({'where':{'id':_0x4352f4[_0x7a28('0x4b')]},'attributes':['id','vidaooApiKey',_0x7a28('0x4c'),_0x7a28('0x4d'),_0x7a28('0x4e'),'vidaooMetadata'],'raw':!![]});})[_0x7a28('0x14')](function(_0x1ee414){if(_0x1ee414&&_0x1ee414[_0x7a28('0x4f')]&&_0x1ee414['vidaooEscalation']){_0x511231=_0x1ee414;var _0x468b95={'interaction':{'id':_0x5b64a3},'agent':{'id':_0x22e14d[_0x7a28('0x3a')]['id'],'name':_0x22e14d['user'][_0x7a28('0x2b')],'fullname':_0x22e14d[_0x7a28('0x3a')][_0x7a28('0x50')],'email':_0x22e14d[_0x7a28('0x3a')][_0x7a28('0x51')]},'contact':_0x22e14d[_0x7a28('0x2f')]['contact'],'account':_0x22e14d[_0x7a28('0x2f')]['account']};var _0x58c396={'rejectUnauthorized':![],'method':_0x7a28('0x52'),'url':_0x7a28('0x53'),'headers':{'X-APIKEY':_0x1ee414['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x22e14d[_0x7a28('0x3a')]['email']],'buttons':null,'topic':_0x511231[_0x7a28('0x4d')],'note':_[_0x7a28('0x54')](_0x511231[_0x7a28('0x4e')])?null:getMustacheRender(_0x511231[_0x7a28('0x4e')],_0x468b95),'metadata':null},'redirect':_0x7a28('0x55'),'json':!![]};try{if(!_[_0x7a28('0x54')](_0x511231[_0x7a28('0x56')])){var _0x2a011b=getMustacheRender(_0x511231[_0x7a28('0x56')],_0x468b95);var _0x2d57c6=JSON['parse'](_0x2a011b);_0x58c396[_0x7a28('0x2f')][_0x7a28('0x57')]=_0x2d57c6;}}catch(_0x1c79ae){throw new db[(_0x7a28('0x58'))][(_0x7a28('0x59'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x58c396);}else{throw new db[(_0x7a28('0x58'))][(_0x7a28('0x59'))](_0x7a28('0x5a'));}})[_0x7a28('0x14')](function(_0x2511bd){_0x23c077=_0x2511bd;if(_0x23c077['id']){var _0x312e1b={'body':_0x23c077[_0x7a28('0x5b')],'ChatWebsiteId':_0x511231['id'],'ChatInteractionId':_0x406a1b['id'],'direction':_0x7a28('0x5c'),'UserId':_0x22e14d[_0x7a28('0x3a')]['id']};return db[_0x7a28('0x5d')][_0x7a28('0x47')](_0x312e1b,{});}else{throw new db[(_0x7a28('0x58'))]['ValidationError'](_0x7a28('0x5e'));}})[_0x7a28('0x14')](function(){return _0x406a1b['updateAttributes']({'vidaooSessionId':_0x23c077['id']});})[_0x7a28('0x14')](respondWithResult(_0x19a836,null))['catch'](handleError(_0x19a836,null));};exports['customUpdate']=function(_0x7714b,_0x3108d5){if(_0x7714b[_0x7a28('0x2f')]['id']){delete _0x7714b['body']['id'];}return db['ChatInteraction'][_0x7a28('0x46')]({'where':{'id':_0x7714b[_0x7a28('0x3c')]['id']},'include':[{'model':db['CmContact'],'as':'Contact'}]})['then'](handleEntityNotFound(_0x3108d5,null))[_0x7a28('0x14')](saveUpdates(_0x7714b[_0x7a28('0x2f')],null))[_0x7a28('0x14')](respondWithResult(_0x3108d5,null))[_0x7a28('0x1e')](handleError(_0x3108d5,null));};exports[_0x7a28('0x5f')]=function(_0x40a885,_0x1e2ac1){if(_0x40a885[_0x7a28('0x2f')]['id']){delete _0x40a885[_0x7a28('0x2f')]['id'];}return db['ChatInteraction'][_0x7a28('0x46')]({'where':{'id':_0x40a885[_0x7a28('0x3c')]['id']}})['then'](function(_0x28ea41){if(!_0x28ea41){logger['error'](_0x7a28('0x60'),_0x7a28('0x5f'),0x194,_0x7a28('0x61'));_0x1e2ac1[_0x7a28('0x2a')](0x194);}else{if(_0x28ea41[_0x7a28('0x62')]){throw new db[(_0x7a28('0x58'))][(_0x7a28('0x59'))](_0x7a28('0x63'));}}return _0x28ea41;})[_0x7a28('0x14')](function(_0x19c364){if(_0x19c364){return _0x19c364[_0x7a28('0x28')]({'closed':_0x40a885[_0x7a28('0x2f')]['closed'],'disposition':_0x40a885[_0x7a28('0x2f')][_0x7a28('0x64')]})['then'](function(_0x3215fe){return _0x3215fe;});}})['then'](function(){return respondWithRpcPromise(_0x7a28('0x65'),'abandon',_0x40a885[_0x7a28('0x2f')],client9004);})['then'](respondWithResult(_0x1e2ac1,null))[_0x7a28('0x1e')](handleError(_0x1e2ac1,null));};exports[_0x7a28('0x66')]=function(_0x4e5172,_0x100205){_0x4e5172['body'][_0x7a28('0x2b')]=_0x4e5172[_0x7a28('0x67')][_0x7a28('0x68')];_0x4e5172[_0x7a28('0x2f')][_0x7a28('0x69')]=_0x4e5172[_0x7a28('0x67')][_0x7a28('0x6a')];_0x4e5172[_0x7a28('0x2f')]['type']=_0x4e5172[_0x7a28('0x67')][_0x7a28('0x6b')];return db[_0x7a28('0x6c')]['create'](_0x4e5172[_0x7a28('0x2f')])[_0x7a28('0x14')](respondWithResult(_0x100205,0xc9))[_0x7a28('0x1e')](handleError(_0x100205,null));};exports['attachmentDownload']=function(_0x135302,_0x2a6345){return db['ChatInteraction'][_0x7a28('0x4a')]({'where':{'id':_0x135302[_0x7a28('0x3c')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x2a6345,null))[_0x7a28('0x14')](function(_0x7d311c){if(_0x7d311c){if(_0x7d311c['closed']){return _0x2a6345[_0x7a28('0x1f')](0x193)[_0x7a28('0x21')]({'status':0x193,'message':_0x7a28('0x6d')});}return db[_0x7a28('0x6c')][_0x7a28('0x4a')]({'where':{'id':_0x135302[_0x7a28('0x40')][_0x7a28('0x6e')]},'raw':!![]})[_0x7a28('0x14')](handleEntityNotFound(_0x2a6345,null));}})[_0x7a28('0x14')](function(_0x43ab22){if(_0x43ab22){var _0xf01fec=_0x43ab22[_0x7a28('0x6f')]!==null;var _0x3be361=path['join'](config['root'],_0x7a28('0x70'));if(_0xf01fec){_0x3be361=path['join'](_0x3be361,_0x7a28('0x71'));}var _0x2962c6=path[_0x7a28('0x72')](_0x3be361,_0x43ab22[_0x7a28('0x69')]);return _0x2a6345[_0x7a28('0x73')](_0x2962c6);}})[_0x7a28('0x1e')](handleError(_0x2a6345,null));};exports[_0x7a28('0x74')]=function(_0x5cf854,_0x3a5004){var _0x38ffa6=null;var _0x1066e9=null;var _0x2b46e8=null;if(_0x5cf854[_0x7a28('0x2f')]['id']){delete _0x5cf854[_0x7a28('0x2f')]['id'];}if(_0x5cf854[_0x7a28('0x2f')]['mailTranscript']){_0x2b46e8=path[_0x7a28('0x72')](config['root'],_0x7a28('0x75'),util[_0x7a28('0x76')](_0x7a28('0x77'),Date[_0x7a28('0x78')]()));_0x5cf854[_0x7a28('0x2f')]['pathTranscript']=_0x2b46e8;}return db[_0x7a28('0x35')][_0x7a28('0x46')]({'where':{'id':_0x5cf854[_0x7a28('0x3c')]['id']},'include':[{'model':db[_0x7a28('0x5d')],'as':_0x7a28('0x79'),'include':[{'model':db[_0x7a28('0x7a')],'as':'User'}]}]})[_0x7a28('0x14')](handleEntityNotFound(_0x3a5004,null))[_0x7a28('0x14')](saveUpdates(_0x5cf854['body'],null))['then'](function(_0x5f1f0f){if(_0x5f1f0f){_0x38ffa6=_0x5f1f0f;return db[_0x7a28('0x7b')][_0x7a28('0x46')]({'where':{'id':_0x38ffa6[_0x7a28('0x4b')]}});}})['then'](function(_0x430b4f){if(_0x430b4f){_0x1066e9=_0x430b4f;return db[_0x7a28('0x7c')][_0x7a28('0x46')]({'where':{'id':_0x38ffa6[_0x7a28('0x7d')]}});}})[_0x7a28('0x14')](function(_0x228750){if(_0x228750){if(_0x2b46e8){var _0x15a0c8=null;for(var _0x38bfda=0x1;_0x38bfda<_0x38ffa6[_0x7a28('0x79')]['length'];++_0x38bfda){_0x15a0c8=_0x38ffa6[_0x7a28('0x79')][_0x38bfda];var _0x1836ec=_0x15a0c8[_0x7a28('0x62')]?util[_0x7a28('0x76')](_0x7a28('0x7e'),_0x1066e9[_0x7a28('0x7f')],_0x15a0c8['UserId']):_0x7a28('0x80');var _0x4444b0=_0x5cf854[_0x7a28('0x2f')][_0x7a28('0x81')]||util['format'](_0x7a28('0x7e'),'Visitor',_0x15a0c8[_0x7a28('0x7d')]);switch(_0x1066e9[_0x7a28('0x82')]){case _0x7a28('0x83'):_0x1836ec=_0x15a0c8[_0x7a28('0x62')]?util['format'](_0x7a28('0x7e'),_0x1066e9['agentAlias'],_0x15a0c8[_0x7a28('0x62')]):_0x7a28('0x80');break;case'agent_alias':_0x1836ec=_0x15a0c8[_0x7a28('0x62')]?_0x15a0c8[_0x7a28('0x7a')]['alias']||_0x15a0c8[_0x7a28('0x7a')][_0x7a28('0x50')]:_0x7a28('0x80');break;case'agent_fullname':_0x1836ec=_0x15a0c8[_0x7a28('0x62')]?_0x15a0c8[_0x7a28('0x7a')][_0x7a28('0x50')]:_0x7a28('0x80');break;default:_0x1836ec=_0x15a0c8[_0x7a28('0x62')]?util['format'](_0x7a28('0x7e'),_0x1066e9[_0x7a28('0x7f')],_0x15a0c8[_0x7a28('0x62')]):_0x7a28('0x80');}var _0x3b0500=util['format'](_0x7a28('0x84'),moment(_0x15a0c8[_0x7a28('0x85')])[_0x7a28('0x76')](_0x7a28('0x86')),_0x15a0c8[_0x7a28('0x87')]==='in'?_0x4444b0:_0x1836ec,_0x15a0c8[_0x7a28('0x2f')]);if(!_0x15a0c8[_0x7a28('0x88')]){fs[_0x7a28('0x89')](_0x2b46e8,_0x3b0500);}}return db[_0x7a28('0x8a')][_0x7a28('0x4a')]({'where':{'service':!![]},'include':[{'model':db[_0x7a28('0x8b')],'as':_0x7a28('0x8c'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x7a28('0x8d'),'raw':!![]}]}]});}}})[_0x7a28('0x14')](function(_0xcbf6e0){if(!_0xcbf6e0||!_0xcbf6e0['Smtp']||!_0x5cf854[_0x7a28('0x2f')])return _0x38ffa6;var _0x1a8fcf=_0xcbf6e0[_0x7a28('0x8e')]();return respondWithRpcPromise(_0x7a28('0x8f'),_0x7a28('0x90'),{'account':_0x1a8fcf,'message':{'from':util[_0x7a28('0x76')](_0x7a28('0x91'),_0xcbf6e0[_0x7a28('0x2b')],_0xcbf6e0[_0x7a28('0x51')]||_0xcbf6e0[_0x7a28('0x8c')]['user']),'to':_0x5cf854[_0x7a28('0x2f')][_0x7a28('0x92')],'subject':_0x7a28('0x93'),'text':util[_0x7a28('0x76')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x5cf854[_0x7a28('0x2f')][_0x7a28('0x92')]),'attachments':[{'path':_0x2b46e8}]}})[_0x7a28('0x14')](function(){return _0x38ffa6;})[_0x7a28('0x1e')](function(_0x537ae5){logger[_0x7a28('0x19')](_0x537ae5);});})['then'](respondWithStatusCode(_0x3a5004,0xc8))[_0x7a28('0x1e')](handleError(_0x3a5004,null));};exports[_0x7a28('0x94')]=function(_0x45ff4d,_0x1a6868){return db['ChatMessage']['find']({'where':{'id':_0x45ff4d['params']['id']}})[_0x7a28('0x14')](handleEntityNotFound(_0x1a6868,null))[_0x7a28('0x14')](function(_0x155dfd){if(_0x155dfd){return _0x155dfd[_0x7a28('0x94')](_0x45ff4d[_0x7a28('0x2f')][_0x7a28('0x95')],_[_0x7a28('0x96')](_0x45ff4d['body'],[_0x7a28('0x95'),'id'])||{});}})[_0x7a28('0x14')](respondWithResult(_0x1a6868,null))['catch'](handleError(_0x1a6868,null));};exports[_0x7a28('0x97')]=function(_0x378442,_0x2d18eb){var _0xe03bd9={'raw':![],'where':{}};var _0x3f0406={};var _0x10787a={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x7a28('0x4a')]({'where':{'id':_0x378442['params']['id']}})[_0x7a28('0x14')](handleEntityNotFound(_0x2d18eb,null))[_0x7a28('0x14')](function(_0x2abfb9){if(_0x2abfb9){_0x3f0406[_0x7a28('0x3d')]=_['keys'](db[_0x7a28('0x5d')]['rawAttributes']);_0x3f0406['query']=_['keys'](_0x378442[_0x7a28('0x40')]);_0x3f0406[_0x7a28('0x41')]=_[_0x7a28('0x98')](_0x3f0406[_0x7a28('0x3d')],_0x3f0406['query']);_0xe03bd9[_0x7a28('0x42')]=_[_0x7a28('0x98')](_0x3f0406[_0x7a28('0x3d')],qs[_0x7a28('0x99')](_0x378442['query'][_0x7a28('0x99')]));_0xe03bd9[_0x7a28('0x42')]=_0xe03bd9[_0x7a28('0x42')][_0x7a28('0x43')]?_0xe03bd9[_0x7a28('0x42')]:_0x3f0406[_0x7a28('0x3d')];if(!_0x378442[_0x7a28('0x40')][_0x7a28('0x9a')](_0x7a28('0x9b'))){_0xe03bd9['limit']=qs['limit'](_0x378442[_0x7a28('0x40')][_0x7a28('0x24')]);_0xe03bd9['offset']=qs[_0x7a28('0x22')](_0x378442[_0x7a28('0x40')][_0x7a28('0x22')]);}_0xe03bd9[_0x7a28('0x9c')]=qs['sort'](_0x378442['query'][_0x7a28('0x9d')]);_0xe03bd9[_0x7a28('0x9e')]=qs[_0x7a28('0x41')](_['pick'](_0x378442[_0x7a28('0x40')],_0x3f0406[_0x7a28('0x41')]));_0xe03bd9['where'][_0x7a28('0x9f')]=_0x2abfb9['id'];if(_0x378442['query'][_0x7a28('0xa0')]){_0xe03bd9['where']=_[_0x7a28('0x2e')](_0xe03bd9[_0x7a28('0x9e')],{'$or':_['map'](_0xe03bd9[_0x7a28('0x42')],function(_0x270df4){var _0x279480={};_0x279480[_0x270df4]={'$like':'%'+_0x378442[_0x7a28('0x40')][_0x7a28('0xa0')]+'%'};return _0x279480;})});}if(_0x378442[_0x7a28('0x40')][_0x7a28('0xa1')]){var _0x399f1f=_0x378442[_0x7a28('0x40')]['$gte'][_0x7a28('0xa2')](',');var _0x5bc26c={};_0x5bc26c[_0x399f1f[0x0]]={'$gte':moment(_0x399f1f[0x1])[_0x7a28('0x76')](_0x7a28('0xa3'))};_0xe03bd9[_0x7a28('0x9e')]=_[_0x7a28('0x2e')](_0xe03bd9[_0x7a28('0x9e')],_0x5bc26c);}_0xe03bd9=_[_0x7a28('0x2e')]({},_0xe03bd9,_0x378442['options']);return db[_0x7a28('0x5d')][_0x7a28('0x25')]({'where':_0xe03bd9['where']})[_0x7a28('0x14')](function(_0x1e1d80){_0x10787a[_0x7a28('0x25')]=_0x1e1d80;if(_0x378442['query'][_0x7a28('0x44')]){_0xe03bd9[_0x7a28('0xa4')]=[{'all':!![]}];}return db[_0x7a28('0x5d')]['findAll'](_0xe03bd9);})['then'](function(_0xbf6340){_0x10787a[_0x7a28('0xa5')]=_0xbf6340;return _0x10787a;});}})['then'](respondWithFilteredResult(_0x2d18eb,_0xe03bd9))[_0x7a28('0x1e')](handleError(_0x2d18eb,null));};exports[_0x7a28('0xa6')]=function(_0xc76a1c,_0x3dbaf2){var _0xe970cc={'where':{}},_0x17c1d8={},_0x1060e1={'count':0x0,'rows':[]};return db[_0x7a28('0x35')]['findOne']({'where':{'id':_0xc76a1c[_0x7a28('0x3c')]['id']}})[_0x7a28('0x14')](handleEntityNotFound(_0x3dbaf2,null))[_0x7a28('0x14')](function(_0x42782f){if(_0x42782f){_0x17c1d8[_0x7a28('0x3d')]=_[_0x7a28('0x3e')](db[_0x7a28('0x5d')][_0x7a28('0x3f')]);_0x17c1d8[_0x7a28('0x40')]=_[_0x7a28('0x3e')](_0xc76a1c[_0x7a28('0x40')]);_0x17c1d8[_0x7a28('0x41')]=_[_0x7a28('0x98')](_0x17c1d8['model'],_0x17c1d8[_0x7a28('0x40')]);_0xe970cc[_0x7a28('0x42')]=_[_0x7a28('0x98')](_0x17c1d8[_0x7a28('0x3d')],qs[_0x7a28('0x99')](_0xc76a1c[_0x7a28('0x40')][_0x7a28('0x99')]));_0xe970cc['attributes']=_0xe970cc[_0x7a28('0x42')][_0x7a28('0x43')]?_0xe970cc[_0x7a28('0x42')]:_0x17c1d8['model'];if(!_0xc76a1c[_0x7a28('0x40')][_0x7a28('0x9a')](_0x7a28('0x9b'))){_0xe970cc[_0x7a28('0x24')]=qs[_0x7a28('0x24')](_0xc76a1c[_0x7a28('0x40')]['limit']);_0xe970cc[_0x7a28('0x22')]=qs[_0x7a28('0x22')](_0xc76a1c['query'][_0x7a28('0x22')]);}_0xe970cc[_0x7a28('0x9c')]=qs['sort'](_0xc76a1c[_0x7a28('0x40')][_0x7a28('0x9d')]);_0xe970cc[_0x7a28('0x9e')]=qs[_0x7a28('0x41')](_[_0x7a28('0xa7')](_0xc76a1c[_0x7a28('0x40')],_0x17c1d8[_0x7a28('0x41')]));_0xe970cc['where'][_0x7a28('0x9f')]=_0x42782f['id'];if(_0xc76a1c[_0x7a28('0x40')]['filter']){_0xe970cc[_0x7a28('0x9e')]=_[_0x7a28('0x2e')](_0xe970cc[_0x7a28('0x9e')],{'$or':_[_0x7a28('0xa8')](_0xe970cc[_0x7a28('0x42')],function(_0x3e3686){var _0x2e47ed={};_0x2e47ed[_0x3e3686]={'$like':'%'+_0xc76a1c[_0x7a28('0x40')][_0x7a28('0xa0')]+'%'};return _0x2e47ed;})});}_0xe970cc[_0x7a28('0x9e')]['secret']=![];if(_0xc76a1c['query']['id']){_0xe970cc[_0x7a28('0x9e')]['id']={'$gt':_0xc76a1c[_0x7a28('0x40')]['id']};}_0xe970cc=_[_0x7a28('0x2e')]({},_0xe970cc,_0xc76a1c[_0x7a28('0x45')]);return db['ChatMessage'][_0x7a28('0x25')]({'where':_0xe970cc[_0x7a28('0x9e')]})[_0x7a28('0x14')](function(_0xb39ad9){_0x1060e1['count']=_0xb39ad9;_0xe970cc[_0x7a28('0xa4')]=[];if(_0xc76a1c[_0x7a28('0x40')][_0x7a28('0xa9')]){_0xe970cc[_0x7a28('0xa4')][_0x7a28('0xaa')]({'model':db[_0x7a28('0x7a')],'as':_0x7a28('0x7a'),'attributes':['id',_0x7a28('0x50'),'alias']});}if(_0xc76a1c[_0x7a28('0x40')]['includeAll']){_0xe970cc[_0x7a28('0xa4')]=[{'all':!![]}];}return db[_0x7a28('0x5d')][_0x7a28('0x39')](_0xe970cc);})['then'](function(_0x4dc0b1){_0x1060e1[_0x7a28('0xa5')]=_0x4dc0b1;return _0x1060e1;});}})[_0x7a28('0x14')](respondWithFilteredResult(_0x3dbaf2,_0xe970cc))['catch'](handleError(_0x3dbaf2,null));};exports[_0x7a28('0xab')]=function(_0x4d8cc6,_0xf9b578){return db[_0x7a28('0x35')]['find']({'where':{'id':_0x4d8cc6[_0x7a28('0x3c')]['id']}})[_0x7a28('0x14')](handleEntityNotFound(_0xf9b578,null))[_0x7a28('0x14')](function(_0x3de099){if(_0x3de099){return _0x3de099[_0x7a28('0xac')](_0x4d8cc6['body']['ids'],_[_0x7a28('0x96')](_0x4d8cc6['body'],[_0x7a28('0x95'),'id'])||{})[_0x7a28('0xad')](function(){return db[_0x7a28('0xae')][_0x7a28('0x39')]({'attributes':['id',_0x7a28('0x2b'),'color'],'where':{'id':_0x4d8cc6[_0x7a28('0x2f')][_0x7a28('0x95')]}});})[_0x7a28('0x14')](function(_0x35bf27){socket[_0x7a28('0xaf')](_0x7a28('0xb0'),{'id':Number(_0x4d8cc6[_0x7a28('0x3c')]['id']),'tags':_0x35bf27||[]});return{'id':Number(_0x4d8cc6['params']['id']),'tags':_0x35bf27||[]};});}})[_0x7a28('0x14')](respondWithResult(_0xf9b578,null))[_0x7a28('0x1e')](handleError(_0xf9b578,null));};exports[_0x7a28('0xb1')]=function(_0x1e0be7,_0x11068f){return db[_0x7a28('0x35')][_0x7a28('0x46')]({'where':{'id':_0x1e0be7[_0x7a28('0x3c')]['id']}})[_0x7a28('0x14')](handleEntityNotFound(_0x11068f,null))[_0x7a28('0x14')](function(_0x33f5ce){if(_0x33f5ce){return _0x33f5ce['removeTags'](_0x1e0be7[_0x7a28('0x40')][_0x7a28('0x95')]);}})['then'](respondWithStatusCode(_0x11068f,null))[_0x7a28('0x1e')](handleError(_0x11068f,null));};exports[_0x7a28('0x73')]=function(_0x48f0be,_0x2eb133){var _0x28c51c=moment()[_0x7a28('0xb2')]()[_0x7a28('0xb3')]();var _0x3277ab=path[_0x7a28('0x72')](config[_0x7a28('0xb4')],_0x7a28('0xb5'),_0x7a28('0xb6'),'tmp');var _0x1f8694=path[_0x7a28('0x72')](config[_0x7a28('0xb4')],_0x7a28('0xb5'),_0x7a28('0xb6'),_0x7a28('0xb7'));var _0x245994=path['join'](_0x3277ab,_0x28c51c);var _0x45991e=util['format']('transcript-%d-%s.zip',_0x48f0be[_0x7a28('0x3c')]['id'],_0x28c51c);var _0x5cc883=path['join'](_0x3277ab,_0x45991e);var _0x1b2aaf=[];_0x1b2aaf[_0x7a28('0xaa')]({'model':db['User'],'as':'User','attributes':['id',_0x7a28('0x50')],'raw':!![]});_0x1b2aaf[_0x7a28('0xaa')]({'model':db[_0x7a28('0x7c')],'as':_0x7a28('0xb8'),'attributes':['id','firstName',_0x7a28('0xb9')],'raw':!![]});if(_0x48f0be['query']['attachments']){_0x1b2aaf[_0x7a28('0xaa')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x20f31a=[{'model':db['ChatMessage'],'as':_0x7a28('0x79'),'attributes':['id',_0x7a28('0x2f'),_0x7a28('0x85'),_0x7a28('0x87'),_0x7a28('0x88'),_0x7a28('0xba')],'include':_0x1b2aaf}];_0x20f31a[_0x7a28('0xaa')]({'model':db[_0x7a28('0x7b')],'as':_0x7a28('0xbb'),'attributes':['id',_0x7a28('0x2b')]});_0x20f31a['push']({'model':db[_0x7a28('0x7a')],'as':_0x7a28('0xbc'),'attributes':['id',_0x7a28('0x50')]});return db[_0x7a28('0x35')]['find']({'where':{'id':_0x48f0be[_0x7a28('0x3c')]['id']},'include':_0x20f31a})['then'](handleEntityNotFound(_0x2eb133,null))[_0x7a28('0x14')](function(_0x2923e3){if(_0x2923e3){var _0x2178e5=_0x2923e3['get']({'plain':!![]});fs[_0x7a28('0xbd')](_0x245994);var _0x5a9f73={'channel':_0x7a28('0xbe'),'account':_0x2178e5[_0x7a28('0xbb')][_0x7a28('0x2b')],'agent':_0x2178e5[_0x7a28('0xbc')]?_0x2178e5[_0x7a28('0xbc')][_0x7a28('0x50')]:_0x7a28('0xbf'),'createdAt':moment(_0x2178e5[_0x7a28('0x85')])['format'](_0x7a28('0xa3'))[_0x7a28('0xb3')](),'closedAt':_0x2178e5[_0x7a28('0xc0')]?moment(_0x2178e5['closedAt'])[_0x7a28('0x76')]('YYYY-MM-DD\x20HH:mm:ss')[_0x7a28('0xb3')]():'','disposition':_0x2178e5[_0x7a28('0x64')],'chatInfo':{'browser':_0x2178e5[_0x7a28('0xc1')],'os':_0x2178e5[_0x7a28('0xc2')],'referer':_0x2178e5[_0x7a28('0xc3')],'customerIp':_0x2178e5['customerIp'],'customerPort':_0x2178e5[_0x7a28('0xc4')]?_0x2178e5[_0x7a28('0xc4')]:'N.A.'},'messages':_(_0x2178e5[_0x7a28('0x79')])[_0x7a28('0xc5')]()[_0x7a28('0xa0')]({'secret':![]})[_0x7a28('0xa8')](function(_0x79bd37){if(_0x79bd37[_0x7a28('0x6c')]){var _0x39383e=path['join'](_0x1f8694,_0x79bd37[_0x7a28('0x6c')][_0x7a28('0x69')]);if(fs[_0x7a28('0xc6')](_0x39383e)){fs[_0x7a28('0xc7')](_0x39383e)[_0x7a28('0xc8')](fs[_0x7a28('0xc9')](path[_0x7a28('0x72')](_0x245994,_0x79bd37[_0x7a28('0x6c')]['basename'])));}}return{'date':moment(_0x79bd37[_0x7a28('0x85')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x7a28('0xb3')](),'sender':_0x79bd37[_0x7a28('0x87')]==='out'?_0x79bd37[_0x7a28('0x7a')]?_0x79bd37['User']['fullname']:_0x7a28('0x80'):_0x79bd37[_0x7a28('0xb8')][_0x7a28('0xca')]+(_0x79bd37['Contact'][_0x7a28('0xb9')]?'\x20'+_0x79bd37[_0x7a28('0xb8')][_0x7a28('0xb9')]:''),'body':_0x79bd37[_0x7a28('0x6c')]?_0x79bd37['Attachment'][_0x7a28('0x69')]:_0x79bd37[_0x7a28('0x2f')],'direction':_0x79bd37['direction']==='out'?'A':'C','secret':_0x79bd37[_0x7a28('0x88')],'read':_0x79bd37[_0x7a28('0xba')],'attachment':_0x79bd37['Attachment']};})[_0x7a28('0xcb')]()};return ejs['renderFile'](path[_0x7a28('0x72')](config[_0x7a28('0xb4')],'server',_0x7a28('0xcc'),'downloadInteraction.ejs'),{'interaction':_0x5a9f73})[_0x7a28('0x14')](function(_0x5f2ca7){var _0x1b60f7=path[_0x7a28('0x72')](_0x245994,_0x7a28('0xcd')+_0x2178e5['id']+'-'+_0x28c51c+'.pdf');var _0x895b35={'path':_0x1b60f7,'channel':_0x7a28('0xbe'),'interactionId':_0x2178e5['id']};return pdf[_0x7a28('0xce')](_0x5f2ca7,_0x895b35);})['then'](function(){return new Promise(function(_0x583e89,_0x4ca7cd){zipdir(_0x245994,{'saveTo':_0x5cc883},function(_0x242314,_0x461f33){if(_0x242314)return _0x4ca7cd(_0x242314);return _0x583e89(_0x461f33);});})['then'](function(){return new BPromise(function(_0x21a23c,_0x4430a9){rimraf(_0x245994,function(_0x4ab528){if(_0x4ab528)_0x4430a9(_0x4ab528);return _0x21a23c();});});})['then'](function(){return _0x2eb133[_0x7a28('0x73')](_0x5cc883,_0x45991e,function(_0x2329ff){if(_0x2329ff){logger['error'](_0x7a28('0xcf'),_0x2329ff);}else{fs[_0x7a28('0xd0')](_0x5cc883);}});});});}else{return _0x2eb133['sendStatus'](0xc8);}})[_0x7a28('0x1e')](handleError(_0x2eb133,null));};
\ No newline at end of file
+var _0xf54e=['jayson/promise','client','http','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','then','stack','name','render','merge','body','agent','interaction','account','index','map','ChatInteraction','rawAttributes','fieldName','getOptions','query','user','show','params','model','keys','intersection','fields','attributes','length','includeAll','include','options','find','create','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooNote','vidaooEscalation','fullname','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','vidaooTopic','follow','vidaooMetadata','parse','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','customUpdate','CmContact','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','attachmentUpload','file','originalname','basename','type','mimetype','Attachment','attachId','join','root','server/files/attachments/','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','Messages','User','ContactId','System','%s%d','Visitor','agentIdentifier','agentAlias','alias','[%s]\x20%s:\x20%s\x0a','createdAt','direction','secret','appendFileSync','MailAccount','Smtp','CloudProvider','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','filters','hasOwnProperty','nolimit','order','sort','where','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','pick','includeAgent','push','addTags','setTags','spread','Tag','color','emit','chatInteractionTags:save','removeTags','unix','toString','server','files','tmp','transcript-%d-%s.zip','firstName','lastName','attachments','read','Account','Owner','get','mkdirSync','Chat','N.A.','closedAt','browserName','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','createWriteStream','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','./chatInteraction.socket','register'];(function(_0x526bbe,_0xb376bb){var _0x107fd7=function(_0xd9702c){while(--_0xd9702c){_0x526bbe['push'](_0x526bbe['shift']());}};_0x107fd7(++_0xb376bb);}(_0xf54e,0x18d));var _0xef54=function(_0x5216e0,_0x4f8cb9){_0x5216e0=_0x5216e0-0x0;var _0x5b3f40=_0xf54e[_0x5216e0];return _0x5b3f40;};'use strict';var rimraf=require(_0xef54('0x0'));var zipdir=require(_0xef54('0x1'));var rp=require(_0xef54('0x2'));var moment=require(_0xef54('0x3'));var BPromise=require(_0xef54('0x4'));var Mustache=require(_0xef54('0x5'));var util=require('util');var path=require(_0xef54('0x6'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xef54('0x7'));var Redis=require(_0xef54('0x8'));var interaction=require(_0xef54('0x9'));var qs=require(_0xef54('0xa'));var pdf=require(_0xef54('0xb'));var logger=require('../../config/logger')('api');var config=require(_0xef54('0xc'));var db=require(_0xef54('0xd'))['db'];config['redis']=_[_0xef54('0xe')](config[_0xef54('0xf')],{'host':'localhost','port':0x18eb});var socket=require(_0xef54('0x10'))(new Redis(config[_0xef54('0xf')]));require(_0xef54('0x11'))[_0xef54('0x12')](socket);var jayson=require(_0xef54('0x13'));var client=jayson[_0xef54('0x14')][_0xef54('0x15')]({'port':0x232b});var client9004=jayson[_0xef54('0x14')][_0xef54('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x45b38f,_0x1a43df,_0x17e5d5,_0x27c592){return new BPromise(function(_0x534cab,_0x3733ea){var _0x16d9e5=_0x27c592||client;return _0x16d9e5['request'](_0x45b38f,_0x17e5d5)['then'](function(_0x495854){logger[_0xef54('0x16')](_0xef54('0x17'),_0x1a43df,_0xef54('0x18'));logger[_0xef54('0x19')](_0xef54('0x1a'),_0x1a43df,_0xef54('0x18'),JSON[_0xef54('0x1b')](_0x495854));if(_0x495854[_0xef54('0x1c')]){if(_0x495854[_0xef54('0x1c')][_0xef54('0x1d')]===0x1f4){logger['error'](_0xef54('0x17'),_0x1a43df,_0x495854[_0xef54('0x1c')][_0xef54('0x1e')]);return _0x3733ea(_0x495854[_0xef54('0x1c')][_0xef54('0x1e')]);}logger[_0xef54('0x1c')](_0xef54('0x17'),_0x1a43df,_0x495854[_0xef54('0x1c')][_0xef54('0x1e')]);return _0x534cab(_0x495854[_0xef54('0x1c')]['message']);}else{logger[_0xef54('0x16')](_0xef54('0x17'),_0x1a43df,_0xef54('0x18'));_0x534cab(_0x495854[_0xef54('0x1f')][_0xef54('0x1e')]);}})[_0xef54('0x20')](function(_0x433f37){logger['error'](_0xef54('0x17'),_0x1a43df,_0x433f37);_0x3733ea(_0x433f37);});});}function respondWithStatusCode(_0x5eb27b,_0x505741){_0x505741=_0x505741||0xcc;return function(_0x33b4fa){if(_0x33b4fa){return _0x5eb27b[_0xef54('0x21')](_0x505741);}return _0x5eb27b[_0xef54('0x22')](_0x505741)[_0xef54('0x23')]();};}function respondWithResult(_0x2aee27,_0x1efbfc){_0x1efbfc=_0x1efbfc||0xc8;return function(_0x42ad15){if(_0x42ad15){return _0x2aee27[_0xef54('0x22')](_0x1efbfc)[_0xef54('0x24')](_0x42ad15);}};}function respondWithFilteredResult(_0x586e8d,_0x2fa9eb){return function(_0x5a18d2){if(_0x5a18d2){var _0x40238a=typeof _0x2fa9eb[_0xef54('0x25')]===_0xef54('0x26')&&typeof _0x2fa9eb['limit']===_0xef54('0x26');var _0x2fb100=_0x5a18d2[_0xef54('0x27')];var _0x4208ff=_0x40238a?0x0:_0x2fa9eb[_0xef54('0x25')];var _0x4f3ae7=_0x40238a?_0x5a18d2[_0xef54('0x27')]:_0x2fa9eb[_0xef54('0x25')]+_0x2fa9eb[_0xef54('0x28')];var _0x148dd4;if(_0x4f3ae7>=_0x2fb100){_0x4f3ae7=_0x2fb100;_0x148dd4=0xc8;}else{_0x148dd4=0xce;}_0x586e8d[_0xef54('0x22')](_0x148dd4);return _0x586e8d[_0xef54('0x29')](_0xef54('0x2a'),_0x4208ff+'-'+_0x4f3ae7+'/'+_0x2fb100)[_0xef54('0x24')](_0x5a18d2);}return null;};}function saveUpdates(_0x2a79f3){return function(_0x320768){if(_0x320768){return _0x320768[_0xef54('0x2b')](_0x2a79f3)[_0xef54('0x2c')](function(_0x1eeaa6){return _0x1eeaa6;});}return null;};}function removeEntity(_0x1c2441){return function(_0x511282){if(_0x511282){return _0x511282['destroy']()['then'](function(){_0x1c2441['status'](0xcc)[_0xef54('0x23')]();});}};}function handleEntityNotFound(_0x1e9e40){return function(_0x561e95){if(!_0x561e95){_0x1e9e40[_0xef54('0x21')](0x194);}return _0x561e95;};}function handleError(_0x44ac95,_0x1adaf1){_0x1adaf1=_0x1adaf1||0x1f4;return function(_0x786f0a){logger[_0xef54('0x1c')](_0x786f0a[_0xef54('0x2d')]);if(_0x786f0a[_0xef54('0x2e')]){delete _0x786f0a['name'];}_0x44ac95['status'](_0x1adaf1)['send'](_0x786f0a);};}function getMustacheRender(_0x2b6130,_0x4dfdd2){return Mustache[_0xef54('0x2f')](_0x2b6130,_[_0xef54('0x30')](_0x4dfdd2[_0xef54('0x31')],{'contact':_0x4dfdd2['contact'],'message':_0x4dfdd2['message'],'agent':_0x4dfdd2[_0xef54('0x32')],'interaction':_0x4dfdd2[_0xef54('0x33')],'account':_0x4dfdd2[_0xef54('0x34')]}))||'';}exports[_0xef54('0x35')]=function(_0x286b59,_0x2e0ed6){var _0x3722e0={};var _0x2ac465=_[_0xef54('0x36')](db[_0xef54('0x37')][_0xef54('0x38')],function(_0xcc6d83){return{'name':_0xcc6d83[_0xef54('0x39')],'type':_0xcc6d83['type']['key']};});_0x3722e0=qs[_0xef54('0x3a')](_0x2ac465,_0x286b59);return interaction['findAll']('chat',_0x286b59[_0xef54('0x3b')],_0x286b59[_0xef54('0x3c')],_0x3722e0,_0x2ac465)[_0xef54('0x2c')](respondWithFilteredResult(_0x2e0ed6,_0x3722e0))[_0xef54('0x20')](handleError(_0x2e0ed6,null));};exports[_0xef54('0x3d')]=function(_0x26f2db,_0x2e7f20){var _0x591bcd={'raw':![],'where':{'id':_0x26f2db[_0xef54('0x3e')]['id']}},_0xd7162a={};_0xd7162a[_0xef54('0x3f')]=_[_0xef54('0x40')](db[_0xef54('0x37')]['rawAttributes']);_0xd7162a['query']=_[_0xef54('0x40')](_0x26f2db[_0xef54('0x3b')]);_0xd7162a['filters']=_[_0xef54('0x41')](_0xd7162a['model'],_0xd7162a[_0xef54('0x3b')]);_0x591bcd['attributes']=_[_0xef54('0x41')](_0xd7162a[_0xef54('0x3f')],qs['fields'](_0x26f2db[_0xef54('0x3b')][_0xef54('0x42')]));_0x591bcd[_0xef54('0x43')]=_0x591bcd['attributes'][_0xef54('0x44')]?_0x591bcd[_0xef54('0x43')]:_0xd7162a[_0xef54('0x3f')];if(_0x26f2db[_0xef54('0x3b')][_0xef54('0x45')]){_0x591bcd[_0xef54('0x46')]=[{'all':!![]}];}_0x591bcd=_['merge']({},_0x591bcd,_0x26f2db[_0xef54('0x47')]);return db['ChatInteraction'][_0xef54('0x48')](_0x591bcd)['then'](handleEntityNotFound(_0x2e7f20,null))[_0xef54('0x2c')](respondWithResult(_0x2e7f20,null))[_0xef54('0x20')](handleError(_0x2e7f20,null));};exports['create']=function(_0x25c1a8,_0x5a7df3){return db['ChatInteraction'][_0xef54('0x49')](_0x25c1a8['body'],{})['then'](respondWithResult(_0x5a7df3,0xc9))[_0xef54('0x20')](handleError(_0x5a7df3,null));};exports['update']=function(_0x56b808,_0x1ed165){if(_0x56b808['body']['id']){delete _0x56b808['body']['id'];}return db['ChatInteraction'][_0xef54('0x48')]({'where':{'id':_0x56b808[_0xef54('0x3e')]['id']}})[_0xef54('0x2c')](handleEntityNotFound(_0x1ed165,null))[_0xef54('0x2c')](saveUpdates(_0x56b808[_0xef54('0x31')],null))['then'](respondWithResult(_0x1ed165,null))[_0xef54('0x20')](handleError(_0x1ed165,null));};exports['destroy']=function(_0x1f6dbc,_0x4083e3){return db[_0xef54('0x37')][_0xef54('0x48')]({'where':{'id':_0x1f6dbc[_0xef54('0x3e')]['id']}})[_0xef54('0x2c')](handleEntityNotFound(_0x4083e3,null))[_0xef54('0x2c')](removeEntity(_0x4083e3,null))[_0xef54('0x20')](handleError(_0x4083e3,null));};exports[_0xef54('0x4a')]=function(_0x47b66a,_0x4e6809){return db['ChatInteraction'][_0xef54('0x4a')]()[_0xef54('0x2c')](respondWithResult(_0x4e6809,null))[_0xef54('0x20')](handleError(_0x4e6809,null));};exports[_0xef54('0x4b')]=function(_0xb80132,_0x3ee93e){var _0x3d5c46=_0xb80132['params']['id'];var _0x21147f;var _0x2b7c0b;var _0x5433ab;return db[_0xef54('0x37')][_0xef54('0x4c')]({'where':{'id':_0x3d5c46}})[_0xef54('0x2c')](function(_0x6c96a2){_0x21147f=_0x6c96a2;return db[_0xef54('0x4d')][_0xef54('0x4c')]({'where':{'id':_0x6c96a2[_0xef54('0x4e')]},'attributes':['id',_0xef54('0x4f'),'vidaooEscalation','vidaooTopic',_0xef54('0x50'),'vidaooMetadata'],'raw':!![]});})[_0xef54('0x2c')](function(_0x2c9f9d){if(_0x2c9f9d&&_0x2c9f9d['vidaooApiKey']&&_0x2c9f9d[_0xef54('0x51')]){_0x2b7c0b=_0x2c9f9d;var _0x7c5d5c={'interaction':{'id':_0x3d5c46},'agent':{'id':_0xb80132['user']['id'],'name':_0xb80132[_0xef54('0x3c')][_0xef54('0x2e')],'fullname':_0xb80132[_0xef54('0x3c')][_0xef54('0x52')],'email':_0xb80132[_0xef54('0x3c')]['email']},'contact':_0xb80132[_0xef54('0x31')][_0xef54('0x53')],'account':_0xb80132[_0xef54('0x31')][_0xef54('0x34')]};var _0xa958c8={'rejectUnauthorized':![],'method':_0xef54('0x54'),'url':_0xef54('0x55'),'headers':{'X-APIKEY':_0x2c9f9d['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0xb80132['user'][_0xef54('0x56')]],'buttons':null,'topic':_0x2b7c0b[_0xef54('0x57')],'note':_['isNull'](_0x2b7c0b[_0xef54('0x50')])?null:getMustacheRender(_0x2b7c0b[_0xef54('0x50')],_0x7c5d5c),'metadata':null},'redirect':_0xef54('0x58'),'json':!![]};try{if(!_['isNull'](_0x2b7c0b[_0xef54('0x59')])){var _0x4d8e94=getMustacheRender(_0x2b7c0b[_0xef54('0x59')],_0x7c5d5c);var _0x8eeab4=JSON[_0xef54('0x5a')](_0x4d8e94);_0xa958c8[_0xef54('0x31')]['metadata']=_0x8eeab4;}}catch(_0x10ce75){throw new db[(_0xef54('0x5b'))][(_0xef54('0x5c'))](_0xef54('0x5d'));}return rp(_0xa958c8);}else{throw new db[(_0xef54('0x5b'))][(_0xef54('0x5c'))](_0xef54('0x5e'));}})[_0xef54('0x2c')](function(_0x3935a1){_0x5433ab=_0x3935a1;if(_0x5433ab['id']){var _0x538707={'body':_0x5433ab[_0xef54('0x5f')],'ChatWebsiteId':_0x2b7c0b['id'],'ChatInteractionId':_0x21147f['id'],'direction':_0xef54('0x60'),'UserId':_0xb80132['user']['id']};return db[_0xef54('0x61')]['create'](_0x538707,{});}else{throw new db[(_0xef54('0x5b'))][(_0xef54('0x5c'))](_0xef54('0x62'));}})[_0xef54('0x2c')](function(){return _0x21147f['updateAttributes']({'vidaooSessionId':_0x5433ab['id']});})[_0xef54('0x2c')](respondWithResult(_0x3ee93e,null))['catch'](handleError(_0x3ee93e,null));};exports[_0xef54('0x63')]=function(_0x32ef72,_0x2ec645){if(_0x32ef72[_0xef54('0x31')]['id']){delete _0x32ef72[_0xef54('0x31')]['id'];}return db[_0xef54('0x37')]['find']({'where':{'id':_0x32ef72[_0xef54('0x3e')]['id']},'include':[{'model':db[_0xef54('0x64')],'as':_0xef54('0x65')}]})[_0xef54('0x2c')](handleEntityNotFound(_0x2ec645,null))['then'](saveUpdates(_0x32ef72[_0xef54('0x31')],null))[_0xef54('0x2c')](respondWithResult(_0x2ec645,null))[_0xef54('0x20')](handleError(_0x2ec645,null));};exports[_0xef54('0x66')]=function(_0x28f001,_0xec49db){if(_0x28f001[_0xef54('0x31')]['id']){delete _0x28f001[_0xef54('0x31')]['id'];}return db[_0xef54('0x37')][_0xef54('0x48')]({'where':{'id':_0x28f001[_0xef54('0x3e')]['id']}})[_0xef54('0x2c')](function(_0x316897){if(!_0x316897){logger[_0xef54('0x1c')](_0xef54('0x67'),'abandon',0x194,_0xef54('0x68'));_0xec49db['sendStatus'](0x194);}else{if(_0x316897[_0xef54('0x69')]){throw new db[(_0xef54('0x5b'))][(_0xef54('0x5c'))](_0xef54('0x6a'));}}return _0x316897;})[_0xef54('0x2c')](function(_0x38cbd8){if(_0x38cbd8){return _0x38cbd8['update']({'closed':_0x28f001[_0xef54('0x31')][_0xef54('0x6b')],'disposition':_0x28f001[_0xef54('0x31')][_0xef54('0x6c')]})[_0xef54('0x2c')](function(_0x5e60fd){return _0x5e60fd;});}})[_0xef54('0x2c')](function(){return respondWithRpcPromise('AbandonInteraction',_0xef54('0x66'),_0x28f001[_0xef54('0x31')],client9004);})['then'](respondWithResult(_0xec49db,null))[_0xef54('0x20')](handleError(_0xec49db,null));};exports[_0xef54('0x6d')]=function(_0xff7fd3,_0x29db85){_0xff7fd3[_0xef54('0x31')][_0xef54('0x2e')]=_0xff7fd3[_0xef54('0x6e')][_0xef54('0x6f')];_0xff7fd3[_0xef54('0x31')][_0xef54('0x70')]=_0xff7fd3[_0xef54('0x6e')]['filename'];_0xff7fd3['body'][_0xef54('0x71')]=_0xff7fd3[_0xef54('0x6e')][_0xef54('0x72')];return db[_0xef54('0x73')][_0xef54('0x49')](_0xff7fd3[_0xef54('0x31')])['then'](respondWithResult(_0x29db85,0xc9))[_0xef54('0x20')](handleError(_0x29db85,null));};exports['attachmentDownload']=function(_0x8ab02a,_0x55714c){return db[_0xef54('0x37')][_0xef54('0x4c')]({'where':{'id':_0x8ab02a[_0xef54('0x3e')]['id']},'raw':!![]})[_0xef54('0x2c')](handleEntityNotFound(_0x55714c,null))['then'](function(_0x5acb40){if(_0x5acb40){if(_0x5acb40[_0xef54('0x6b')]){return _0x55714c[_0xef54('0x22')](0x193)[_0xef54('0x24')]({'status':0x193,'message':'Unauthorized'});}return db[_0xef54('0x73')][_0xef54('0x4c')]({'where':{'id':_0x8ab02a[_0xef54('0x3b')][_0xef54('0x74')]},'raw':!![]})[_0xef54('0x2c')](handleEntityNotFound(_0x55714c,null));}})[_0xef54('0x2c')](function(_0x5ee1f6){if(_0x5ee1f6){var _0x430697=_0x5ee1f6['ChatOfflineMessageId']!==null;var _0x155722=path[_0xef54('0x75')](config[_0xef54('0x76')],_0xef54('0x77'));if(_0x430697){_0x155722=path['join'](_0x155722,'offline-chat/');}var _0x27c416=path['join'](_0x155722,_0x5ee1f6[_0xef54('0x70')]);return _0x55714c['download'](_0x27c416);}})[_0xef54('0x20')](handleError(_0x55714c,null));};exports[_0xef54('0x78')]=function(_0x106d61,_0x98c432){var _0x44d993=null;var _0x42bc4f=null;var _0x35fb76=null;if(_0x106d61[_0xef54('0x31')]['id']){delete _0x106d61[_0xef54('0x31')]['id'];}if(_0x106d61[_0xef54('0x31')][_0xef54('0x79')]){_0x35fb76=path['join'](config[_0xef54('0x76')],_0xef54('0x7a'),util[_0xef54('0x7b')](_0xef54('0x7c'),Date['now']()));_0x106d61[_0xef54('0x31')][_0xef54('0x7d')]=_0x35fb76;}return db[_0xef54('0x37')][_0xef54('0x48')]({'where':{'id':_0x106d61[_0xef54('0x3e')]['id']},'include':[{'model':db[_0xef54('0x61')],'as':_0xef54('0x7e'),'include':[{'model':db['User'],'as':_0xef54('0x7f')}]}]})[_0xef54('0x2c')](handleEntityNotFound(_0x98c432,null))[_0xef54('0x2c')](saveUpdates(_0x106d61['body'],null))[_0xef54('0x2c')](function(_0x5acf33){if(_0x5acf33){_0x44d993=_0x5acf33;return db[_0xef54('0x4d')][_0xef54('0x48')]({'where':{'id':_0x44d993['ChatWebsiteId']}});}})[_0xef54('0x2c')](function(_0xe0a84b){if(_0xe0a84b){_0x42bc4f=_0xe0a84b;return db[_0xef54('0x64')]['find']({'where':{'id':_0x44d993[_0xef54('0x80')]}});}})[_0xef54('0x2c')](function(_0x2f932b){if(_0x2f932b){if(_0x35fb76){var _0x536067=null;for(var _0x49c542=0x1;_0x49c542<_0x44d993[_0xef54('0x7e')][_0xef54('0x44')];++_0x49c542){_0x536067=_0x44d993[_0xef54('0x7e')][_0x49c542];var _0x2a7b66=_0x536067[_0xef54('0x69')]?util[_0xef54('0x7b')]('%s%d',_0x42bc4f['agentAlias'],_0x536067[_0xef54('0x69')]):_0xef54('0x81');var _0x36e308=_0x106d61[_0xef54('0x31')]['customer']||util[_0xef54('0x7b')](_0xef54('0x82'),_0xef54('0x83'),_0x536067[_0xef54('0x80')]);switch(_0x42bc4f[_0xef54('0x84')]){case'website_alias':_0x2a7b66=_0x536067[_0xef54('0x69')]?util['format']('%s%d',_0x42bc4f[_0xef54('0x85')],_0x536067[_0xef54('0x69')]):'System';break;case'agent_alias':_0x2a7b66=_0x536067[_0xef54('0x69')]?_0x536067['User'][_0xef54('0x86')]||_0x536067[_0xef54('0x7f')][_0xef54('0x52')]:_0xef54('0x81');break;case'agent_fullname':_0x2a7b66=_0x536067[_0xef54('0x69')]?_0x536067[_0xef54('0x7f')][_0xef54('0x52')]:_0xef54('0x81');break;default:_0x2a7b66=_0x536067[_0xef54('0x69')]?util[_0xef54('0x7b')](_0xef54('0x82'),_0x42bc4f[_0xef54('0x85')],_0x536067[_0xef54('0x69')]):_0xef54('0x81');}var _0x27aea4=util[_0xef54('0x7b')](_0xef54('0x87'),moment(_0x536067[_0xef54('0x88')])['format']('MM/DD/YYYY\x20HH:mm:ss'),_0x536067[_0xef54('0x89')]==='in'?_0x36e308:_0x2a7b66,_0x536067[_0xef54('0x31')]);if(!_0x536067[_0xef54('0x8a')]){fs[_0xef54('0x8b')](_0x35fb76,_0x27aea4);}}return db[_0xef54('0x8c')][_0xef54('0x4c')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0xef54('0x8d'),'raw':!![],'include':[{'model':db[_0xef54('0x8e')],'as':'CloudProvider','raw':!![]}]}]});}}})[_0xef54('0x2c')](function(_0x33c1e5){if(!_0x33c1e5||!_0x33c1e5['Smtp']||!_0x106d61[_0xef54('0x31')])return _0x44d993;var _0xd46d2a=_0x33c1e5['getSmtpOptions']();return respondWithRpcPromise('SendMail',_0xef54('0x8f'),{'account':_0xd46d2a,'message':{'from':util[_0xef54('0x7b')](_0xef54('0x90'),_0x33c1e5['name'],_0x33c1e5[_0xef54('0x56')]||_0x33c1e5[_0xef54('0x8d')][_0xef54('0x3c')]),'to':_0x106d61[_0xef54('0x31')]['mailTranscript'],'subject':_0xef54('0x91'),'text':util[_0xef54('0x7b')](_0xef54('0x92'),_0x106d61[_0xef54('0x31')][_0xef54('0x79')]),'attachments':[{'path':_0x35fb76}]}})[_0xef54('0x2c')](function(){return _0x44d993;})[_0xef54('0x20')](function(_0x4a85c9){logger['error'](_0x4a85c9);});})['then'](respondWithStatusCode(_0x98c432,0xc8))[_0xef54('0x20')](handleError(_0x98c432,null));};exports['addMessage']=function(_0x2880a3,_0x53bcb2){return db[_0xef54('0x61')][_0xef54('0x48')]({'where':{'id':_0x2880a3[_0xef54('0x3e')]['id']}})[_0xef54('0x2c')](handleEntityNotFound(_0x53bcb2,null))[_0xef54('0x2c')](function(_0x11ae28){if(_0x11ae28){return _0x11ae28[_0xef54('0x93')](_0x2880a3[_0xef54('0x31')][_0xef54('0x94')],_[_0xef54('0x95')](_0x2880a3[_0xef54('0x31')],['ids','id'])||{});}})[_0xef54('0x2c')](respondWithResult(_0x53bcb2,null))[_0xef54('0x20')](handleError(_0x53bcb2,null));};exports[_0xef54('0x96')]=function(_0x31d1f8,_0x5943d1){var _0x4dad32={'raw':![],'where':{}};var _0x47e3c1={};var _0x355693={'count':0x0,'rows':[]};return db[_0xef54('0x37')]['findOne']({'where':{'id':_0x31d1f8[_0xef54('0x3e')]['id']}})[_0xef54('0x2c')](handleEntityNotFound(_0x5943d1,null))['then'](function(_0x1ae0fb){if(_0x1ae0fb){_0x47e3c1[_0xef54('0x3f')]=_[_0xef54('0x40')](db[_0xef54('0x61')][_0xef54('0x38')]);_0x47e3c1['query']=_[_0xef54('0x40')](_0x31d1f8[_0xef54('0x3b')]);_0x47e3c1[_0xef54('0x97')]=_['intersection'](_0x47e3c1[_0xef54('0x3f')],_0x47e3c1['query']);_0x4dad32[_0xef54('0x43')]=_[_0xef54('0x41')](_0x47e3c1['model'],qs[_0xef54('0x42')](_0x31d1f8[_0xef54('0x3b')][_0xef54('0x42')]));_0x4dad32[_0xef54('0x43')]=_0x4dad32[_0xef54('0x43')][_0xef54('0x44')]?_0x4dad32[_0xef54('0x43')]:_0x47e3c1[_0xef54('0x3f')];if(!_0x31d1f8[_0xef54('0x3b')][_0xef54('0x98')](_0xef54('0x99'))){_0x4dad32[_0xef54('0x28')]=qs['limit'](_0x31d1f8[_0xef54('0x3b')][_0xef54('0x28')]);_0x4dad32[_0xef54('0x25')]=qs['offset'](_0x31d1f8[_0xef54('0x3b')][_0xef54('0x25')]);}_0x4dad32[_0xef54('0x9a')]=qs['sort'](_0x31d1f8[_0xef54('0x3b')][_0xef54('0x9b')]);_0x4dad32['where']=qs[_0xef54('0x97')](_['pick'](_0x31d1f8[_0xef54('0x3b')],_0x47e3c1[_0xef54('0x97')]));_0x4dad32[_0xef54('0x9c')][_0xef54('0x9d')]=_0x1ae0fb['id'];if(_0x31d1f8[_0xef54('0x3b')][_0xef54('0x9e')]){_0x4dad32['where']=_[_0xef54('0x30')](_0x4dad32[_0xef54('0x9c')],{'$or':_[_0xef54('0x36')](_0x4dad32[_0xef54('0x43')],function(_0x7cc68b){var _0x5b1aa6={};_0x5b1aa6[_0x7cc68b]={'$like':'%'+_0x31d1f8[_0xef54('0x3b')]['filter']+'%'};return _0x5b1aa6;})});}if(_0x31d1f8['query'][_0xef54('0x9f')]){var _0x240325=_0x31d1f8['query']['$gte'][_0xef54('0xa0')](',');var _0x1af830={};_0x1af830[_0x240325[0x0]]={'$gte':moment(_0x240325[0x1])[_0xef54('0x7b')](_0xef54('0xa1'))};_0x4dad32[_0xef54('0x9c')]=_[_0xef54('0x30')](_0x4dad32[_0xef54('0x9c')],_0x1af830);}_0x4dad32=_[_0xef54('0x30')]({},_0x4dad32,_0x31d1f8[_0xef54('0x47')]);return db[_0xef54('0x61')][_0xef54('0x27')]({'where':_0x4dad32[_0xef54('0x9c')]})[_0xef54('0x2c')](function(_0x387c94){_0x355693[_0xef54('0x27')]=_0x387c94;if(_0x31d1f8[_0xef54('0x3b')]['includeAll']){_0x4dad32[_0xef54('0x46')]=[{'all':!![]}];}return db[_0xef54('0x61')][_0xef54('0xa2')](_0x4dad32);})[_0xef54('0x2c')](function(_0x5ee212){_0x355693[_0xef54('0xa3')]=_0x5ee212;return _0x355693;});}})[_0xef54('0x2c')](respondWithFilteredResult(_0x5943d1,_0x4dad32))[_0xef54('0x20')](handleError(_0x5943d1,null));};exports['getMyMessages']=function(_0x569b7e,_0x3c0699){var _0x3d7616={'where':{}},_0x1c1e5b={},_0x571490={'count':0x0,'rows':[]};return db[_0xef54('0x37')][_0xef54('0x4c')]({'where':{'id':_0x569b7e[_0xef54('0x3e')]['id']}})['then'](handleEntityNotFound(_0x3c0699,null))['then'](function(_0x31514e){if(_0x31514e){_0x1c1e5b['model']=_[_0xef54('0x40')](db[_0xef54('0x61')][_0xef54('0x38')]);_0x1c1e5b[_0xef54('0x3b')]=_[_0xef54('0x40')](_0x569b7e[_0xef54('0x3b')]);_0x1c1e5b[_0xef54('0x97')]=_[_0xef54('0x41')](_0x1c1e5b[_0xef54('0x3f')],_0x1c1e5b[_0xef54('0x3b')]);_0x3d7616[_0xef54('0x43')]=_[_0xef54('0x41')](_0x1c1e5b[_0xef54('0x3f')],qs['fields'](_0x569b7e[_0xef54('0x3b')][_0xef54('0x42')]));_0x3d7616[_0xef54('0x43')]=_0x3d7616[_0xef54('0x43')][_0xef54('0x44')]?_0x3d7616['attributes']:_0x1c1e5b[_0xef54('0x3f')];if(!_0x569b7e['query']['hasOwnProperty']('nolimit')){_0x3d7616[_0xef54('0x28')]=qs['limit'](_0x569b7e['query']['limit']);_0x3d7616[_0xef54('0x25')]=qs[_0xef54('0x25')](_0x569b7e['query'][_0xef54('0x25')]);}_0x3d7616[_0xef54('0x9a')]=qs[_0xef54('0x9b')](_0x569b7e['query'][_0xef54('0x9b')]);_0x3d7616[_0xef54('0x9c')]=qs[_0xef54('0x97')](_[_0xef54('0xa4')](_0x569b7e[_0xef54('0x3b')],_0x1c1e5b[_0xef54('0x97')]));_0x3d7616[_0xef54('0x9c')][_0xef54('0x9d')]=_0x31514e['id'];if(_0x569b7e[_0xef54('0x3b')][_0xef54('0x9e')]){_0x3d7616[_0xef54('0x9c')]=_[_0xef54('0x30')](_0x3d7616['where'],{'$or':_[_0xef54('0x36')](_0x3d7616[_0xef54('0x43')],function(_0xd43ae3){var _0x50906c={};_0x50906c[_0xd43ae3]={'$like':'%'+_0x569b7e[_0xef54('0x3b')]['filter']+'%'};return _0x50906c;})});}_0x3d7616['where'][_0xef54('0x8a')]=![];if(_0x569b7e[_0xef54('0x3b')]['id']){_0x3d7616[_0xef54('0x9c')]['id']={'$gt':_0x569b7e[_0xef54('0x3b')]['id']};}_0x3d7616=_[_0xef54('0x30')]({},_0x3d7616,_0x569b7e[_0xef54('0x47')]);return db[_0xef54('0x61')][_0xef54('0x27')]({'where':_0x3d7616[_0xef54('0x9c')]})[_0xef54('0x2c')](function(_0x25bd59){_0x571490[_0xef54('0x27')]=_0x25bd59;_0x3d7616[_0xef54('0x46')]=[];if(_0x569b7e[_0xef54('0x3b')][_0xef54('0xa5')]){_0x3d7616['include'][_0xef54('0xa6')]({'model':db[_0xef54('0x7f')],'as':_0xef54('0x7f'),'attributes':['id',_0xef54('0x52'),'alias']});}if(_0x569b7e[_0xef54('0x3b')][_0xef54('0x45')]){_0x3d7616['include']=[{'all':!![]}];}return db[_0xef54('0x61')]['findAll'](_0x3d7616);})[_0xef54('0x2c')](function(_0x254a3f){_0x571490['rows']=_0x254a3f;return _0x571490;});}})['then'](respondWithFilteredResult(_0x3c0699,_0x3d7616))['catch'](handleError(_0x3c0699,null));};exports[_0xef54('0xa7')]=function(_0x49a9ae,_0x5760c6){return db[_0xef54('0x37')][_0xef54('0x48')]({'where':{'id':_0x49a9ae[_0xef54('0x3e')]['id']}})[_0xef54('0x2c')](handleEntityNotFound(_0x5760c6,null))[_0xef54('0x2c')](function(_0xa77fda){if(_0xa77fda){return _0xa77fda[_0xef54('0xa8')](_0x49a9ae[_0xef54('0x31')]['ids'],_['omit'](_0x49a9ae['body'],[_0xef54('0x94'),'id'])||{})[_0xef54('0xa9')](function(){return db[_0xef54('0xaa')][_0xef54('0xa2')]({'attributes':['id',_0xef54('0x2e'),_0xef54('0xab')],'where':{'id':_0x49a9ae[_0xef54('0x31')][_0xef54('0x94')]}});})[_0xef54('0x2c')](function(_0x1d14f3){socket[_0xef54('0xac')](_0xef54('0xad'),{'id':Number(_0x49a9ae[_0xef54('0x3e')]['id']),'tags':_0x1d14f3||[]});return{'id':Number(_0x49a9ae[_0xef54('0x3e')]['id']),'tags':_0x1d14f3||[]};});}})[_0xef54('0x2c')](respondWithResult(_0x5760c6,null))[_0xef54('0x20')](handleError(_0x5760c6,null));};exports[_0xef54('0xae')]=function(_0xea65c2,_0x2a0dc2){return db[_0xef54('0x37')]['find']({'where':{'id':_0xea65c2[_0xef54('0x3e')]['id']}})['then'](handleEntityNotFound(_0x2a0dc2,null))[_0xef54('0x2c')](function(_0x43815b){if(_0x43815b){return _0x43815b[_0xef54('0xae')](_0xea65c2[_0xef54('0x3b')][_0xef54('0x94')]);}})['then'](respondWithStatusCode(_0x2a0dc2,null))[_0xef54('0x20')](handleError(_0x2a0dc2,null));};exports['download']=function(_0x48833a,_0x15133d){var _0x1cb40c=moment()[_0xef54('0xaf')]()[_0xef54('0xb0')]();var _0x1536a7=path[_0xef54('0x75')](config[_0xef54('0x76')],_0xef54('0xb1'),_0xef54('0xb2'),_0xef54('0xb3'));var _0x431646=path[_0xef54('0x75')](config['root'],_0xef54('0xb1'),_0xef54('0xb2'),'attachments');var _0x2c8f05=path['join'](_0x1536a7,_0x1cb40c);var _0x1ea7bc=util['format'](_0xef54('0xb4'),_0x48833a[_0xef54('0x3e')]['id'],_0x1cb40c);var _0x5352a8=path[_0xef54('0x75')](_0x1536a7,_0x1ea7bc);var _0x116ac5=[];_0x116ac5['push']({'model':db[_0xef54('0x7f')],'as':_0xef54('0x7f'),'attributes':['id',_0xef54('0x52')],'raw':!![]});_0x116ac5[_0xef54('0xa6')]({'model':db[_0xef54('0x64')],'as':_0xef54('0x65'),'attributes':['id',_0xef54('0xb5'),_0xef54('0xb6')],'raw':!![]});if(_0x48833a['query'][_0xef54('0xb7')]){_0x116ac5[_0xef54('0xa6')]({'model':db[_0xef54('0x73')],'as':'Attachment','raw':!![]});}var _0x2f906c=[{'model':db[_0xef54('0x61')],'as':_0xef54('0x7e'),'attributes':['id',_0xef54('0x31'),'createdAt',_0xef54('0x89'),_0xef54('0x8a'),_0xef54('0xb8')],'include':_0x116ac5}];_0x2f906c['push']({'model':db[_0xef54('0x4d')],'as':_0xef54('0xb9'),'attributes':['id',_0xef54('0x2e')]});_0x2f906c[_0xef54('0xa6')]({'model':db[_0xef54('0x7f')],'as':_0xef54('0xba'),'attributes':['id','fullname']});return db[_0xef54('0x37')][_0xef54('0x48')]({'where':{'id':_0x48833a[_0xef54('0x3e')]['id']},'include':_0x2f906c})[_0xef54('0x2c')](handleEntityNotFound(_0x15133d,null))[_0xef54('0x2c')](function(_0x18cc5e){if(_0x18cc5e){var _0x3d9eb2=_0x18cc5e[_0xef54('0xbb')]({'plain':!![]});fs[_0xef54('0xbc')](_0x2c8f05);var _0x8d89ca={'channel':_0xef54('0xbd'),'account':_0x3d9eb2[_0xef54('0xb9')][_0xef54('0x2e')],'agent':_0x3d9eb2[_0xef54('0xba')]?_0x3d9eb2[_0xef54('0xba')]['fullname']:_0xef54('0xbe'),'createdAt':moment(_0x3d9eb2[_0xef54('0x88')])[_0xef54('0x7b')](_0xef54('0xa1'))[_0xef54('0xb0')](),'closedAt':_0x3d9eb2[_0xef54('0x6b')]?moment(_0x3d9eb2[_0xef54('0xbf')])[_0xef54('0x7b')]('YYYY-MM-DD\x20HH:mm:ss')[_0xef54('0xb0')]():'','disposition':_0x3d9eb2[_0xef54('0x6c')],'chatInfo':{'browser':_0x3d9eb2[_0xef54('0xc0')],'os':_0x3d9eb2[_0xef54('0xc1')],'referer':_0x3d9eb2[_0xef54('0xc2')],'customerIp':_0x3d9eb2[_0xef54('0xc3')],'customerPort':_0x3d9eb2[_0xef54('0xc4')]?_0x3d9eb2[_0xef54('0xc4')]:_0xef54('0xbe')},'messages':_(_0x3d9eb2[_0xef54('0x7e')])[_0xef54('0xc5')]()['filter']({'secret':![]})['map'](function(_0x164cb6){if(_0x164cb6[_0xef54('0x73')]){var _0x339973=path[_0xef54('0x75')](_0x431646,_0x164cb6[_0xef54('0x73')][_0xef54('0x70')]);if(fs[_0xef54('0xc6')](_0x339973)){fs[_0xef54('0xc7')](_0x339973)['pipe'](fs[_0xef54('0xc8')](path[_0xef54('0x75')](_0x2c8f05,_0x164cb6[_0xef54('0x73')]['basename'])));}}return{'date':moment(_0x164cb6['createdAt'])['format'](_0xef54('0xa1'))[_0xef54('0xb0')](),'sender':_0x164cb6[_0xef54('0x89')]==='out'?_0x164cb6['User']?_0x164cb6[_0xef54('0x7f')][_0xef54('0x52')]:'System':_0x164cb6[_0xef54('0x65')][_0xef54('0xb5')]+(_0x164cb6['Contact'][_0xef54('0xb6')]?'\x20'+_0x164cb6[_0xef54('0x65')]['lastName']:''),'body':_0x164cb6[_0xef54('0x73')]?_0x164cb6[_0xef54('0x73')][_0xef54('0x70')]:_0x164cb6[_0xef54('0x31')],'direction':_0x164cb6[_0xef54('0x89')]===_0xef54('0x60')?'A':'C','secret':_0x164cb6['secret'],'read':_0x164cb6[_0xef54('0xb8')],'attachment':_0x164cb6['Attachment']};})['value']()};return ejs['renderFile'](path[_0xef54('0x75')](config[_0xef54('0x76')],_0xef54('0xb1'),'views',_0xef54('0xc9')),{'interaction':_0x8d89ca})['then'](function(_0x1cdff9){var _0x164893=path[_0xef54('0x75')](_0x2c8f05,_0xef54('0xca')+_0x3d9eb2['id']+'-'+_0x1cb40c+_0xef54('0xcb'));var _0x270f05={'path':_0x164893,'channel':_0xef54('0xbd'),'interactionId':_0x3d9eb2['id']};return pdf[_0xef54('0xcc')](_0x1cdff9,_0x270f05);})['then'](function(){return new Promise(function(_0x475617,_0x19e8f0){zipdir(_0x2c8f05,{'saveTo':_0x5352a8},function(_0x565b43,_0x366ba5){if(_0x565b43)return _0x19e8f0(_0x565b43);return _0x475617(_0x366ba5);});})[_0xef54('0x2c')](function(){return new BPromise(function(_0x35bb61,_0x4ca086){rimraf(_0x2c8f05,function(_0xcbbc6f){if(_0xcbbc6f)_0x4ca086(_0xcbbc6f);return _0x35bb61();});});})['then'](function(){return _0x15133d[_0xef54('0xcd')](_0x5352a8,_0x1ea7bc,function(_0x2b5028){if(_0x2b5028){logger[_0xef54('0x1c')](_0xef54('0xce'),_0x2b5028);}else{fs[_0xef54('0xcf')](_0x5352a8);}});});});}else{return _0x15133d[_0xef54('0x21')](0xc8);}})['catch'](handleError(_0x15133d,null));};
\ No newline at end of file
index e63e9da..383148b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3341=['save','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','hook','exports','events','ChatInteraction','../../mysqldb','setMaxListeners'];(function(_0x561c93,_0x5df2fc){var _0x2a6912=function(_0x3afa51){while(--_0x3afa51){_0x561c93['push'](_0x561c93['shift']());}};_0x2a6912(++_0x5df2fc);}(_0x3341,0xf8));var _0x1334=function(_0x18f3c8,_0x428448){_0x18f3c8=_0x18f3c8-0x0;var _0x2dded1=_0x3341[_0x18f3c8];return _0x2dded1;};'use strict';var EventEmitter=require(_0x1334('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x1334('0x1')];var ChatMessage=require(_0x1334('0x2'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x1334('0x3')](0x0);var events={'afterCreate':_0x1334('0x4'),'afterUpdate':'update','afterDestroy':_0x1334('0x5')};function emitEvent(_0x32f280){return function(_0x3d70b4,_0x1be3aa,_0x498a39){_0x3d70b4[_0x1334('0x6')]({'attributes':['id'],'raw':!![]})[_0x1334('0x7')](function(_0x536413){_0x3d70b4[_0x1334('0x8')](_0x1334('0x9'),_0x536413[_0x1334('0xa')](function(_0x5a094a){return{'id':_0x5a094a['id']};}));return ChatMessage[_0x1334('0xb')]({'where':{'ChatInteractionId':_0x3d70b4['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1334('0x7')](function(_0x2c51a3){_0x3d70b4[_0x1334('0x8')]('unreadMessages',_0x2c51a3[_0x1334('0xc')]);ChatInteractionEvents[_0x1334('0xd')](_0x32f280+':'+_0x3d70b4['id'],_0x3d70b4);ChatInteractionEvents[_0x1334('0xd')](_0x32f280,_0x3d70b4);_0x498a39(null);})[_0x1334('0xe')](_0x498a39(null));};}for(var e in events){if(events[_0x1334('0xf')](e)){var event=events[e];ChatInteraction[_0x1334('0x10')](e,emitEvent(event));}}module[_0x1334('0x11')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x4371=['emit','catch','hasOwnProperty','hook','exports','events','ChatInteraction','../../mysqldb','ChatMessage','setMaxListeners','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length'];(function(_0x491468,_0x42f169){var _0x5b8c22=function(_0x407a9b){while(--_0x407a9b){_0x491468['push'](_0x491468['shift']());}};_0x5b8c22(++_0x42f169);}(_0x4371,0x15b));var _0x1437=function(_0x3f1688,_0x34b8ad){_0x3f1688=_0x3f1688-0x0;var _0x5390e8=_0x4371[_0x3f1688];return _0x5390e8;};'use strict';var EventEmitter=require(_0x1437('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x1437('0x1')];var ChatMessage=require(_0x1437('0x2'))['db'][_0x1437('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x1437('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x1437('0x5')};function emitEvent(_0x35b8a7){return function(_0x1eeea1,_0x522d84,_0x25a87d){_0x1eeea1[_0x1437('0x6')]({'attributes':['id'],'raw':!![]})[_0x1437('0x7')](function(_0x6eb44c){_0x1eeea1[_0x1437('0x8')](_0x1437('0x9'),_0x6eb44c[_0x1437('0xa')](function(_0x412f7a){return{'id':_0x412f7a['id']};}));return ChatMessage[_0x1437('0xb')]({'where':{'ChatInteractionId':_0x1eeea1['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1437('0x7')](function(_0x4474ca){_0x1eeea1[_0x1437('0x8')](_0x1437('0xc'),_0x4474ca[_0x1437('0xd')]);ChatInteractionEvents[_0x1437('0xe')](_0x35b8a7+':'+_0x1eeea1['id'],_0x1eeea1);ChatInteractionEvents[_0x1437('0xe')](_0x35b8a7,_0x1eeea1);_0x25a87d(null);})[_0x1437('0xf')](_0x25a87d(null));};}for(var e in events){if(events[_0x1437('0x10')](e)){var event=events[e];ChatInteraction[_0x1437('0x11')](e,emitEvent(event));}}module[_0x1437('0x12')]=ChatInteractionEvents;
\ No newline at end of file
index d6e3aee..24dfd1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b74=['bluebird','request-promise','path','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','changed','closedAt','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','../../config/logger','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4b74,0xdc));var _0x44b7=function(_0x2fb275,_0x4aae33){_0x2fb275=_0x2fb275-0x0;var _0xa8c3fa=_0x4b74[_0x2fb275];return _0xa8c3fa;};'use strict';var _=require(_0x44b7('0x0'));var util=require('util');var logger=require(_0x44b7('0x1'))(_0x44b7('0x2'));var moment=require(_0x44b7('0x3'));var BPromise=require(_0x44b7('0x4'));var rp=require(_0x44b7('0x5'));var fs=require('fs');var path=require(_0x44b7('0x6'));var rimraf=require('rimraf');var config=require(_0x44b7('0x7'));var attributes=require(_0x44b7('0x8'));module[_0x44b7('0x9')]=function(_0x56e9e4,_0x169acc){return _0x56e9e4[_0x44b7('0xa')](_0x44b7('0xb'),attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x165702,_0x3710c4,_0x458bab){if(_0x165702[_0x44b7('0xc')]('closed')){_0x165702[_0x44b7('0xd')]=moment()['format'](_0x44b7('0xe'));}_0x458bab(null,_0x165702);}},'charset':_0x44b7('0xf'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x1de2=['lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','closedAt','format','utf8mb4_unicode_ci'];(function(_0x42df60,_0x3cd73c){var _0x5e912d=function(_0x540a1a){while(--_0x540a1a){_0x42df60['push'](_0x42df60['shift']());}};_0x5e912d(++_0x3cd73c);}(_0x1de2,0xb4));var _0x21de=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0x1de2[_0x2112d4];return _0x434972;};'use strict';var _=require(_0x21de('0x0'));var util=require(_0x21de('0x1'));var logger=require(_0x21de('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x21de('0x3'));var fs=require('fs');var path=require(_0x21de('0x4'));var rimraf=require(_0x21de('0x5'));var config=require(_0x21de('0x6'));var attributes=require(_0x21de('0x7'));module[_0x21de('0x8')]=function(_0x5c6ae8,_0x1ff3e0){return _0x5c6ae8[_0x21de('0x9')](_0x21de('0xa'),attributes,{'tableName':_0x21de('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x580960,_0xcfddb7,_0x124fc1){if(_0x580960['changed']('closed')){_0x580960[_0x21de('0xc')]=moment()[_0x21de('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x124fc1(null,_0x580960);}},'charset':'utf8mb4','collate':_0x21de('0xe')});};
\ No newline at end of file
index 40f00f8..c95b163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23dd=['raw','options','attributes','limit','where','addTags','omit','ids','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','request','then','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','ChatInteraction,\x20%s,\x20%s','result','catch','UpdateChatInteraction','ChatInteraction','body'];(function(_0x1404c9,_0xe88c5a){var _0x164f23=function(_0x4fb5d5){while(--_0x4fb5d5){_0x1404c9['push'](_0x1404c9['shift']());}};_0x164f23(++_0xe88c5a);}(_0x23dd,0xc7));var _0xd23d=function(_0x2ee418,_0x1f008c){_0x2ee418=_0x2ee418-0x0;var _0x51d42c=_0x23dd[_0x2ee418];return _0x51d42c;};'use strict';var _=require(_0xd23d('0x0'));var util=require(_0xd23d('0x1'));var moment=require('moment');var BPromise=require(_0xd23d('0x2'));var rs=require(_0xd23d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd23d('0x4'))['db'];var utils=require(_0xd23d('0x5'));var logger=require(_0xd23d('0x6'))(_0xd23d('0x7'));var config=require('../../config/environment');var jayson=require(_0xd23d('0x8'));var client=jayson['client'][_0xd23d('0x9')]({'port':0x232a});config[_0xd23d('0xa')]=_['defaults'](config[_0xd23d('0xa')],{'host':_0xd23d('0xb'),'port':0x18eb});var socket=require(_0xd23d('0xc'))(new Redis(config[_0xd23d('0xa')]));require('./chatInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x3d11be,_0x2fb512,_0x494f46){return new BPromise(function(_0x55a5b3,_0x3c253c){return client[_0xd23d('0xd')](_0x3d11be,_0x494f46)[_0xd23d('0xe')](function(_0x269a58){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x2fb512,'request\x20sent');logger[_0xd23d('0xf')](_0xd23d('0x10'),_0x2fb512,_0xd23d('0x11'),JSON[_0xd23d('0x12')](_0x269a58));if(_0x269a58['error']){if(_0x269a58[_0xd23d('0x13')][_0xd23d('0x14')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x2fb512,_0x269a58['error'][_0xd23d('0x15')]);return _0x3c253c(_0x269a58['error'][_0xd23d('0x15')]);}logger[_0xd23d('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x2fb512,_0x269a58['error'][_0xd23d('0x15')]);return _0x55a5b3(_0x269a58['error'][_0xd23d('0x15')]);}else{logger[_0xd23d('0x16')](_0xd23d('0x17'),_0x2fb512,_0xd23d('0x11'));_0x55a5b3(_0x269a58[_0xd23d('0x18')]['message']);}})[_0xd23d('0x19')](function(_0x3d184f){logger[_0xd23d('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x2fb512,_0x3d184f);_0x3c253c(_0x3d184f);});});}exports[_0xd23d('0x1a')]=function(_0x2b0b90){var _0x23fd97=this;return new Promise(function(_0x35195b,_0x315319){return db[_0xd23d('0x1b')]['update'](_0x2b0b90[_0xd23d('0x1c')],{'raw':_0x2b0b90['options']?_0x2b0b90['options'][_0xd23d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b0b90[_0xd23d('0x1e')]?_0x2b0b90[_0xd23d('0x1e')]['where']||null:null,'attributes':_0x2b0b90[_0xd23d('0x1e')]?_0x2b0b90[_0xd23d('0x1e')][_0xd23d('0x1f')]||null:null,'limit':_0x2b0b90[_0xd23d('0x1e')]?_0x2b0b90['options'][_0xd23d('0x20')]||null:null})[_0xd23d('0xe')](function(_0x15032a){logger[_0xd23d('0x16')](_0xd23d('0x1a'),_0x2b0b90);logger[_0xd23d('0xf')]('UpdateChatInteraction',_0x2b0b90,JSON[_0xd23d('0x12')](_0x15032a));_0x35195b(_0x15032a);})[_0xd23d('0x19')](function(_0x1c2fff){logger[_0xd23d('0x13')](_0xd23d('0x1a'),_0x1c2fff[_0xd23d('0x15')],_0x2b0b90);_0x315319(_0x23fd97[_0xd23d('0x13')](0x1f4,_0x1c2fff['message']));});});};exports['AddTagsToChatInteraction']=function(_0x1a530d){return new Promise(function(_0xcbb5db,_0x4831ca){return db[_0xd23d('0x1b')]['find']({'where':_0x1a530d[_0xd23d('0x1e')]?_0x1a530d[_0xd23d('0x1e')][_0xd23d('0x21')]||null:null})[_0xd23d('0xe')](function(_0x2d22bc){if(_0x2d22bc){return _0x2d22bc[_0xd23d('0x22')](_0x1a530d[_0xd23d('0x1c')]['ids'],_[_0xd23d('0x23')](_0x1a530d[_0xd23d('0x1c')],[_0xd23d('0x24'),'id'])||{});}})['spread'](function(_0x2f10e6){logger['info'](_0xd23d('0x25'),_0x1a530d);logger[_0xd23d('0xf')](_0xd23d('0x25'),_0x1a530d,JSON[_0xd23d('0x12')](_0x2f10e6));_0xcbb5db(_0x2f10e6);})[_0xd23d('0x19')](function(_0x5e1d33){logger[_0xd23d('0x13')](_0xd23d('0x25'),_0x5e1d33[_0xd23d('0x15')],_0x1a530d);_0x4831ca(_this[_0xd23d('0x13')](0x1f4,_0x5e1d33[_0xd23d('0x15')]));});});};
\ No newline at end of file
+var _0x1244=['body','options','raw','where','limit','UpdateChatInteraction','catch','AddTagsToChatInteraction','addTags','ids','omit','spread','AddTags','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','result','ChatInteraction'];(function(_0x27abea,_0x17c21c){var _0x51c4de=function(_0x2e9260){while(--_0x2e9260){_0x27abea['push'](_0x27abea['shift']());}};_0x51c4de(++_0x17c21c);}(_0x1244,0x125));var _0x4124=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0x1244[_0x3635ce];return _0x97ecd0;};'use strict';var _=require(_0x4124('0x0'));var util=require(_0x4124('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4124('0x2'));var fs=require('fs');var Redis=require(_0x4124('0x3'));var db=require(_0x4124('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4124('0x5'))(_0x4124('0x6'));var config=require(_0x4124('0x7'));var jayson=require(_0x4124('0x8'));var client=jayson[_0x4124('0x9')][_0x4124('0xa')]({'port':0x232a});config[_0x4124('0xb')]=_[_0x4124('0xc')](config[_0x4124('0xb')],{'host':_0x4124('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4124('0xb')]));require('./chatInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x26187e,_0x44a298,_0x2f5087){return new BPromise(function(_0x2ef789,_0x6f5bd7){return client[_0x4124('0xe')](_0x26187e,_0x2f5087)[_0x4124('0xf')](function(_0x257636){logger[_0x4124('0x10')]('ChatInteraction,\x20%s,\x20%s',_0x44a298,_0x4124('0x11'));logger[_0x4124('0x12')](_0x4124('0x13'),_0x44a298,_0x4124('0x11'),JSON[_0x4124('0x14')](_0x257636));if(_0x257636[_0x4124('0x15')]){if(_0x257636['error'][_0x4124('0x16')]===0x1f4){logger[_0x4124('0x15')](_0x4124('0x17'),_0x44a298,_0x257636[_0x4124('0x15')]['message']);return _0x6f5bd7(_0x257636['error'][_0x4124('0x18')]);}logger[_0x4124('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x44a298,_0x257636[_0x4124('0x15')][_0x4124('0x18')]);return _0x2ef789(_0x257636[_0x4124('0x15')][_0x4124('0x18')]);}else{logger['info']('ChatInteraction,\x20%s,\x20%s',_0x44a298,_0x4124('0x11'));_0x2ef789(_0x257636[_0x4124('0x19')][_0x4124('0x18')]);}})['catch'](function(_0x482409){logger['error'](_0x4124('0x17'),_0x44a298,_0x482409);_0x6f5bd7(_0x482409);});});}exports['UpdateChatInteraction']=function(_0x7984f2){var _0x508828=this;return new Promise(function(_0x48e0c4,_0x532bb7){return db[_0x4124('0x1a')]['update'](_0x7984f2[_0x4124('0x1b')],{'raw':_0x7984f2[_0x4124('0x1c')]?_0x7984f2['options'][_0x4124('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x7984f2[_0x4124('0x1c')]?_0x7984f2[_0x4124('0x1c')][_0x4124('0x1e')]||null:null,'attributes':_0x7984f2[_0x4124('0x1c')]?_0x7984f2[_0x4124('0x1c')]['attributes']||null:null,'limit':_0x7984f2['options']?_0x7984f2[_0x4124('0x1c')][_0x4124('0x1f')]||null:null})[_0x4124('0xf')](function(_0x1644fa){logger[_0x4124('0x10')](_0x4124('0x20'),_0x7984f2);logger[_0x4124('0x12')]('UpdateChatInteraction',_0x7984f2,JSON['stringify'](_0x1644fa));_0x48e0c4(_0x1644fa);})[_0x4124('0x21')](function(_0x5c1dab){logger['error'](_0x4124('0x20'),_0x5c1dab[_0x4124('0x18')],_0x7984f2);_0x532bb7(_0x508828['error'](0x1f4,_0x5c1dab[_0x4124('0x18')]));});});};exports[_0x4124('0x22')]=function(_0x4b31f5){return new Promise(function(_0x2703fe,_0x2c8994){return db[_0x4124('0x1a')]['find']({'where':_0x4b31f5['options']?_0x4b31f5[_0x4124('0x1c')]['where']||null:null})[_0x4124('0xf')](function(_0x29fd1d){if(_0x29fd1d){return _0x29fd1d[_0x4124('0x23')](_0x4b31f5[_0x4124('0x1b')][_0x4124('0x24')],_[_0x4124('0x25')](_0x4b31f5['body'],[_0x4124('0x24'),'id'])||{});}})[_0x4124('0x26')](function(_0x18f046){logger[_0x4124('0x10')](_0x4124('0x27'),_0x4b31f5);logger[_0x4124('0x12')](_0x4124('0x27'),_0x4b31f5,JSON[_0x4124('0x14')](_0x18f046));_0x2703fe(_0x18f046);})[_0x4124('0x21')](function(_0x3e4068){logger[_0x4124('0x15')](_0x4124('0x27'),_0x3e4068[_0x4124('0x18')],_0x4b31f5);_0x2c8994(_this[_0x4124('0x15')](0x1f4,_0x3e4068[_0x4124('0x18')]));});});};
\ No newline at end of file
index 8626096..128599b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7cd=['length','chatInteraction:','./chatInteraction.events','remove','update','emit','removeListener'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe7cd,0xaa));var _0xde7c=function(_0x30a833,_0x1575f3){_0x30a833=_0x30a833-0x0;var _0x50f3d3=_0xe7cd[_0x30a833];return _0x50f3d3;};'use strict';var ChatInteractionEvents=require(_0xde7c('0x0'));var events=['save',_0xde7c('0x1'),_0xde7c('0x2')];function createListener(_0x3e855a,_0x170d38){return function(_0x4c117b){_0x170d38[_0xde7c('0x3')](_0x3e855a,_0x4c117b);};}function removeListener(_0x52ae07,_0x41141d){return function(){ChatInteractionEvents[_0xde7c('0x4')](_0x52ae07,_0x41141d);};}exports['register']=function(_0x14c43e){for(var _0x3a7723=0x0,_0x549e76=events[_0xde7c('0x5')];_0x3a7723<_0x549e76;_0x3a7723++){var _0x17a6b0=events[_0x3a7723];var _0x4320af=createListener(_0xde7c('0x6')+_0x17a6b0,_0x14c43e);ChatInteractionEvents['on'](_0x17a6b0,_0x4320af);}};
\ No newline at end of file
+var _0xcb9f=['emit','removeListener','register','length','chatInteraction:','./chatInteraction.events','save','update'];(function(_0x34e030,_0x57c46d){var _0x1a6406=function(_0x74f5ca){while(--_0x74f5ca){_0x34e030['push'](_0x34e030['shift']());}};_0x1a6406(++_0x57c46d);}(_0xcb9f,0x65));var _0xfcb9=function(_0x14feec,_0x333daf){_0x14feec=_0x14feec-0x0;var _0x306fa9=_0xcb9f[_0x14feec];return _0x306fa9;};'use strict';var ChatInteractionEvents=require(_0xfcb9('0x0'));var events=[_0xfcb9('0x1'),'remove',_0xfcb9('0x2')];function createListener(_0x5100da,_0x5a3818){return function(_0x22103e){_0x5a3818[_0xfcb9('0x3')](_0x5100da,_0x22103e);};}function removeListener(_0x321617,_0x2738dc){return function(){ChatInteractionEvents[_0xfcb9('0x4')](_0x321617,_0x2738dc);};}exports[_0xfcb9('0x5')]=function(_0x50a2b9){for(var _0x4e613e=0x0,_0x57572b=events[_0xfcb9('0x6')];_0x4e613e<_0x57572b;_0x4e613e++){var _0x51d067=events[_0x4e613e];var _0x4c48ad=createListener(_0xfcb9('0x7')+_0x51d067,_0x50a2b9);ChatInteractionEvents['on'](_0x51d067,_0x4c48ad);}};
\ No newline at end of file
index f7f1c91..ccd9c0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5080=['/:id/vidaoo','createVidaooSession','diskStorage','join','root','format','%s-%s','now','originalname','replace','/:id/attachment_upload','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','abandon','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/download','download','post','create'];(function(_0x49ef57,_0x1b0598){var _0x33bfb0=function(_0x3ba088){while(--_0x3ba088){_0x49ef57['push'](_0x49ef57['shift']());}};_0x33bfb0(++_0x1b0598);}(_0x5080,0x127));var _0x0508=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5080[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x0508('0x0'));var util=require(_0x0508('0x1'));var path=require(_0x0508('0x2'));var timeout=require(_0x0508('0x3'));var express=require('express');var router=express[_0x0508('0x4')]();var fs_extra=require(_0x0508('0x5'));var auth=require(_0x0508('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0508('0x7'));var controller=require(_0x0508('0x8'));router[_0x0508('0x9')]('/',auth[_0x0508('0xa')](),controller[_0x0508('0xb')]);router['get'](_0x0508('0xc'),auth[_0x0508('0xa')](),controller['describe']);router[_0x0508('0x9')](_0x0508('0xd'),auth[_0x0508('0xe')](),controller['show']);router[_0x0508('0x9')](_0x0508('0xf'),auth['isChatInteractionAuthorized'](),controller[_0x0508('0x10')]);router[_0x0508('0x9')](_0x0508('0x11'),auth[_0x0508('0xa')](),controller[_0x0508('0x12')]);router[_0x0508('0x9')]('/:id/my_messages',auth[_0x0508('0xe')](),controller['getMyMessages']);router[_0x0508('0x9')](_0x0508('0x13'),auth[_0x0508('0xa')](),controller[_0x0508('0x14')]);router[_0x0508('0x15')]('/',auth[_0x0508('0xa')](),controller[_0x0508('0x16')]);router[_0x0508('0x15')](_0x0508('0x17'),auth[_0x0508('0xa')](),controller[_0x0508('0x18')]);var upload=multer({'storage':multer[_0x0508('0x19')]({'destination':function(_0x2562a5,_0x3eb84f,_0x2b7a2e){_0x2b7a2e(null,path[_0x0508('0x1a')](config[_0x0508('0x1b')],'server/files/attachments/'));},'filename':function(_0x53c338,_0xb9d79c,_0x2c9fe0){_0x2c9fe0(null,util[_0x0508('0x1c')](_0x0508('0x1d'),Date[_0x0508('0x1e')](),_0xb9d79c[_0x0508('0x1f')][_0x0508('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x0508('0x15')](_0x0508('0x21'),upload['single'](_0x0508('0x22')),controller[_0x0508('0x23')]);router[_0x0508('0x15')]('/:id/messages',auth[_0x0508('0xe')](),controller[_0x0508('0x24')]);router['post'](_0x0508('0x25'),auth[_0x0508('0xa')](),interaction[_0x0508('0x26')](_0x0508('0x27'),'chatinteraction:addtags'),controller[_0x0508('0x28')]);router[_0x0508('0x29')](_0x0508('0xd'),auth[_0x0508('0xa')](),interaction[_0x0508('0x26')](_0x0508('0x27'),_0x0508('0x2a')),controller[_0x0508('0x2b')]);router['put'](_0x0508('0x2c'),controller[_0x0508('0x2d')]);router['put']('/:id/abandon',auth[_0x0508('0xe')](),controller[_0x0508('0x2e')]);router[_0x0508('0x29')]('/:id/close',controller[_0x0508('0x2f')]);router[_0x0508('0x30')](_0x0508('0xd'),auth[_0x0508('0xa')](),interaction[_0x0508('0x26')](_0x0508('0x27'),_0x0508('0x31')),controller[_0x0508('0x32')]);router['delete'](_0x0508('0x25'),auth[_0x0508('0xa')](),controller[_0x0508('0x33')]);module[_0x0508('0x34')]=router;
\ No newline at end of file
+var _0x4115=['util','connect-timeout','express','../../components/auth/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','/describe','describe','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','/:id/messages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','diskStorage','join','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:update','put','/:id/custom_update','/:id/abandon','abandon','/:id/close','close','/:id','destroy','removeTags','exports'];(function(_0x4f5c2a,_0x288651){var _0x5c8159=function(_0x4d5980){while(--_0x4d5980){_0x4f5c2a['push'](_0x4f5c2a['shift']());}};_0x5c8159(++_0x288651);}(_0x4115,0xe1));var _0x5411=function(_0x40a825,_0x3bac79){_0x40a825=_0x40a825-0x0;var _0x273a54=_0x4115[_0x40a825];return _0x273a54;};'use strict';var multer=require('multer');var util=require(_0x5411('0x0'));var path=require('path');var timeout=require(_0x5411('0x1'));var express=require(_0x5411('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5411('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x5411('0x4'));var controller=require(_0x5411('0x5'));router[_0x5411('0x6')]('/',auth[_0x5411('0x7')](),controller['index']);router[_0x5411('0x6')](_0x5411('0x8'),auth[_0x5411('0x7')](),controller[_0x5411('0x9')]);router[_0x5411('0x6')]('/:id',auth[_0x5411('0xa')](),controller['show']);router[_0x5411('0x6')](_0x5411('0xb'),auth[_0x5411('0xa')](),controller[_0x5411('0xc')]);router['get'](_0x5411('0xd'),auth[_0x5411('0x7')](),controller['getMessages']);router[_0x5411('0x6')]('/:id/my_messages',auth[_0x5411('0xa')](),controller[_0x5411('0xe')]);router['get'](_0x5411('0xf'),auth[_0x5411('0x7')](),controller[_0x5411('0x10')]);router[_0x5411('0x11')]('/',auth[_0x5411('0x7')](),controller[_0x5411('0x12')]);router[_0x5411('0x11')](_0x5411('0x13'),auth[_0x5411('0x7')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x5411('0x14')]({'destination':function(_0x7ccda8,_0x310ba0,_0x250535){_0x250535(null,path[_0x5411('0x15')](config['root'],_0x5411('0x16')));},'filename':function(_0xc87dcf,_0x4d51da,_0x3526ac){_0x3526ac(null,util[_0x5411('0x17')](_0x5411('0x18'),Date[_0x5411('0x19')](),_0x4d51da[_0x5411('0x1a')][_0x5411('0x1b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5411('0x11')](_0x5411('0x1c'),upload['single']('file'),controller[_0x5411('0x1d')]);router[_0x5411('0x11')]('/:id/messages',auth[_0x5411('0xa')](),controller[_0x5411('0x1e')]);router[_0x5411('0x11')](_0x5411('0x1f'),auth['isAuthenticated'](),interaction[_0x5411('0x20')]('chat','chatinteraction:addtags'),controller['addTags']);router['put']('/:id',auth[_0x5411('0x7')](),interaction[_0x5411('0x20')](_0x5411('0x21'),_0x5411('0x22')),controller['update']);router[_0x5411('0x23')](_0x5411('0x24'),controller['customUpdate']);router['put'](_0x5411('0x25'),auth[_0x5411('0xa')](),controller[_0x5411('0x26')]);router[_0x5411('0x23')](_0x5411('0x27'),controller[_0x5411('0x28')]);router['delete'](_0x5411('0x29'),auth[_0x5411('0x7')](),interaction[_0x5411('0x20')]('chat','chatinteraction:destroy'),controller[_0x5411('0x2a')]);router['delete'](_0x5411('0x1f'),auth[_0x5411('0x7')](),controller[_0x5411('0x2b')]);module[_0x5411('0x2c')]=router;
\ No newline at end of file
index 8623988..51d6cd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88ca=['BOOLEAN','exports'];(function(_0x3254d1,_0x1706ce){var _0x15ed80=function(_0x5a8e99){while(--_0x5a8e99){_0x3254d1['push'](_0x3254d1['shift']());}};_0x15ed80(++_0x1706ce);}(_0x88ca,0x1ef));var _0xa88c=function(_0x29632e,_0x5ecba4){_0x29632e=_0x29632e-0x0;var _0x426e04=_0x88ca[_0x29632e];return _0x426e04;};'use strict';var Sequelize=require('sequelize');module[_0xa88c('0x0')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xa88c('0x1')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x171a=['exports','TEXT','BOOLEAN','INTEGER'];(function(_0x510950,_0x1d6f4b){var _0x51c2ad=function(_0x3a0fbd){while(--_0x3a0fbd){_0x510950['push'](_0x510950['shift']());}};_0x51c2ad(++_0x1d6f4b);}(_0x171a,0xc4));var _0xa171=function(_0x5c2d75,_0x4035fc){_0x5c2d75=_0x5c2d75-0x0;var _0x48f399=_0x171a[_0x5c2d75];return _0x48f399;};'use strict';var Sequelize=require('sequelize');module[_0xa171('0x0')]={'body':{'type':Sequelize[_0xa171('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xa171('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xa171('0x3')]}};
\ No newline at end of file
index af6ec8c..c5cfeef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d17=['VIRTUAL','options','include','rows','catch','show','params','includeAll','find','create','body','describe','get','createdAt','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','admin','user','role','userpic','internal','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','messages','FromId','ToId','read','-createdAt','all','eml-format','rimraf','fast-json-patch','bluebird','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','end','status','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','map','ChatInternalMessage','rawAttributes','fieldName','key','model','keys','filters','intersection','query','attributes','fields','length','limit','order','sort','pick','filter','where','merge','type'];(function(_0x4b8fc7,_0x5022fc){var _0x249f4a=function(_0x1b25d4){while(--_0x1b25d4){_0x4b8fc7['push'](_0x4b8fc7['shift']());}};_0x249f4a(++_0x5022fc);}(_0x6d17,0x17b));var _0x76d1=function(_0x3c5f8d,_0x39891f){_0x3c5f8d=_0x3c5f8d-0x0;var _0x3b7beb=_0x6d17[_0x3c5f8d];return _0x3b7beb;};'use strict';var emlformat=require(_0x76d1('0x0'));var rimraf=require(_0x76d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x76d1('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x76d1('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x76d1('0x4'));var sox=require(_0x76d1('0x5'));var csv=require('to-csv');var ejs=require(_0x76d1('0x6'));var fs=require('fs');var fs_extra=require(_0x76d1('0x7'));var _=require(_0x76d1('0x8'));var squel=require('squel');var crypto=require(_0x76d1('0x9'));var jsforce=require(_0x76d1('0xa'));var deskjs=require(_0x76d1('0xb'));var toCsv=require(_0x76d1('0xc'));var querystring=require('querystring');var Papa=require(_0x76d1('0xd'));var Redis=require(_0x76d1('0xe'));var authService=require(_0x76d1('0xf'));var qs=require(_0x76d1('0x10'));var as=require(_0x76d1('0x11'));var hardwareService=require(_0x76d1('0x12'));var logger=require(_0x76d1('0x13'))(_0x76d1('0x14'));var utils=require(_0x76d1('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x76d1('0x16'));var db=require('../../mysqldb')['db'];config[_0x76d1('0x17')]=_[_0x76d1('0x18')](config[_0x76d1('0x17')],{'host':_0x76d1('0x19'),'port':0x18eb});var socket=require(_0x76d1('0x1a'))(new Redis(config[_0x76d1('0x17')]));require('./chatInternalMessage.socket')['register'](socket);function respondWithStatusCode(_0x2f2a9e,_0x5f0225){_0x5f0225=_0x5f0225||0xcc;return function(_0xc3e203){if(_0xc3e203){return _0x2f2a9e['sendStatus'](_0x5f0225);}return _0x2f2a9e['status'](_0x5f0225)[_0x76d1('0x1b')]();};}function respondWithResult(_0x4c1d6a,_0x51d007){_0x51d007=_0x51d007||0xc8;return function(_0x5d52aa){if(_0x5d52aa){return _0x4c1d6a[_0x76d1('0x1c')](_0x51d007)[_0x76d1('0x1d')](_0x5d52aa);}};}function respondWithFilteredResult(_0x144838,_0x424e76){return function(_0x52d336){if(_0x52d336){var _0x473203=typeof _0x424e76[_0x76d1('0x1e')]==='undefined'&&typeof _0x424e76['limit']===_0x76d1('0x1f');var _0x396e5b=_0x52d336['count'];var _0x5e0d00=_0x473203?0x0:_0x424e76[_0x76d1('0x1e')];var _0xc06d73=_0x473203?_0x52d336[_0x76d1('0x20')]:_0x424e76['offset']+_0x424e76['limit'];var _0x20026d;if(_0xc06d73>=_0x396e5b){_0xc06d73=_0x396e5b;_0x20026d=0xc8;}else{_0x20026d=0xce;}_0x144838['status'](_0x20026d);return _0x144838[_0x76d1('0x21')](_0x76d1('0x22'),_0x5e0d00+'-'+_0xc06d73+'/'+_0x396e5b)[_0x76d1('0x1d')](_0x52d336);}return null;};}function patchUpdates(_0x51b719){return function(_0x217fbb){try{jsonpatch['apply'](_0x217fbb,_0x51b719,!![]);}catch(_0x1f70d7){return BPromise[_0x76d1('0x23')](_0x1f70d7);}return _0x217fbb[_0x76d1('0x24')]();};}function saveUpdates(_0x612cbe,_0x409eab){return function(_0x5d8179){if(_0x5d8179){return _0x5d8179[_0x76d1('0x25')](_0x612cbe)[_0x76d1('0x26')](function(_0x46a3a8){return _0x46a3a8;});}return null;};}function removeEntity(_0x4fa71f,_0x3dbdc1){return function(_0x189660){if(_0x189660){return _0x189660[_0x76d1('0x27')]()[_0x76d1('0x26')](function(){_0x4fa71f[_0x76d1('0x1c')](0xcc)[_0x76d1('0x1b')]();});}};}function handleEntityNotFound(_0x13baa7,_0x4d1f53){return function(_0x1c87c6){if(!_0x1c87c6){_0x13baa7[_0x76d1('0x28')](0x194);}return _0x1c87c6;};}function handleError(_0x2def09,_0x14089b){_0x14089b=_0x14089b||0x1f4;return function(_0xb267df){logger[_0x76d1('0x29')](_0xb267df[_0x76d1('0x2a')]);if(_0xb267df[_0x76d1('0x2b')]){delete _0xb267df[_0x76d1('0x2b')];}_0x2def09['status'](_0x14089b)['send'](_0xb267df);};}exports['index']=function(_0x1ef321,_0x1277e0){var _0x10acb9={},_0x54aeec={},_0x22549e={'count':0x0,'rows':[]};var _0x3c6311=_[_0x76d1('0x2c')](db[_0x76d1('0x2d')][_0x76d1('0x2e')],function(_0x38ddf2){return{'name':_0x38ddf2[_0x76d1('0x2f')],'type':_0x38ddf2['type'][_0x76d1('0x30')]};});_0x54aeec[_0x76d1('0x31')]=_[_0x76d1('0x2c')](_0x3c6311,_0x76d1('0x2b'));_0x54aeec['query']=_[_0x76d1('0x32')](_0x1ef321['query']);_0x54aeec[_0x76d1('0x33')]=_[_0x76d1('0x34')](_0x54aeec[_0x76d1('0x31')],_0x54aeec[_0x76d1('0x35')]);_0x10acb9[_0x76d1('0x36')]=_[_0x76d1('0x34')](_0x54aeec[_0x76d1('0x31')],qs[_0x76d1('0x37')](_0x1ef321[_0x76d1('0x35')][_0x76d1('0x37')]));_0x10acb9[_0x76d1('0x36')]=_0x10acb9[_0x76d1('0x36')][_0x76d1('0x38')]?_0x10acb9[_0x76d1('0x36')]:_0x54aeec[_0x76d1('0x31')];if(!_0x1ef321['query']['hasOwnProperty']('nolimit')){_0x10acb9[_0x76d1('0x39')]=qs[_0x76d1('0x39')](_0x1ef321['query'][_0x76d1('0x39')]);_0x10acb9[_0x76d1('0x1e')]=qs['offset'](_0x1ef321['query']['offset']);}_0x10acb9[_0x76d1('0x3a')]=qs[_0x76d1('0x3b')](_0x1ef321[_0x76d1('0x35')]['sort']);_0x10acb9['where']=qs[_0x76d1('0x33')](_[_0x76d1('0x3c')](_0x1ef321[_0x76d1('0x35')],_0x54aeec[_0x76d1('0x33')]),_0x3c6311);if(_0x1ef321[_0x76d1('0x35')][_0x76d1('0x3d')]){_0x10acb9[_0x76d1('0x3e')]=_[_0x76d1('0x3f')](_0x10acb9[_0x76d1('0x3e')],{'$or':_[_0x76d1('0x2c')](_0x3c6311,function(_0x5a3697){if(_0x5a3697[_0x76d1('0x40')]!==_0x76d1('0x41')){var _0xc53afb={};_0xc53afb[_0x5a3697[_0x76d1('0x2b')]]={'$like':'%'+_0x1ef321[_0x76d1('0x35')][_0x76d1('0x3d')]+'%'};return _0xc53afb;}})});}_0x10acb9=_[_0x76d1('0x3f')]({},_0x10acb9,_0x1ef321[_0x76d1('0x42')]);var _0x4f5d67={'where':_0x10acb9[_0x76d1('0x3e')]};return db['ChatInternalMessage'][_0x76d1('0x20')](_0x4f5d67)[_0x76d1('0x26')](function(_0x5574b7){_0x22549e[_0x76d1('0x20')]=_0x5574b7;if(_0x1ef321[_0x76d1('0x35')]['includeAll']){_0x10acb9[_0x76d1('0x43')]=[{'all':!![]}];}return db['ChatInternalMessage']['findAll'](_0x10acb9);})[_0x76d1('0x26')](function(_0x24478b){_0x22549e[_0x76d1('0x44')]=_0x24478b;return _0x22549e;})['then'](respondWithFilteredResult(_0x1277e0,_0x10acb9))[_0x76d1('0x45')](handleError(_0x1277e0,null));};exports[_0x76d1('0x46')]=function(_0x5d54b4,_0x596894){var _0x26941f={'raw':!![],'where':{'id':_0x5d54b4[_0x76d1('0x47')]['id']}},_0x621439={};_0x621439[_0x76d1('0x31')]=_[_0x76d1('0x32')](db['ChatInternalMessage'][_0x76d1('0x2e')]);_0x621439[_0x76d1('0x35')]=_[_0x76d1('0x32')](_0x5d54b4[_0x76d1('0x35')]);_0x621439[_0x76d1('0x33')]=_[_0x76d1('0x34')](_0x621439[_0x76d1('0x31')],_0x621439[_0x76d1('0x35')]);_0x26941f[_0x76d1('0x36')]=_[_0x76d1('0x34')](_0x621439[_0x76d1('0x31')],qs[_0x76d1('0x37')](_0x5d54b4[_0x76d1('0x35')]['fields']));_0x26941f['attributes']=_0x26941f[_0x76d1('0x36')][_0x76d1('0x38')]?_0x26941f[_0x76d1('0x36')]:_0x621439[_0x76d1('0x31')];if(_0x5d54b4[_0x76d1('0x35')][_0x76d1('0x48')]){_0x26941f['include']=[{'all':!![]}];}_0x26941f=_[_0x76d1('0x3f')]({},_0x26941f,_0x5d54b4[_0x76d1('0x42')]);return db['ChatInternalMessage'][_0x76d1('0x49')](_0x26941f)[_0x76d1('0x26')](handleEntityNotFound(_0x596894,null))[_0x76d1('0x26')](respondWithResult(_0x596894,null))[_0x76d1('0x45')](handleError(_0x596894,null));};exports[_0x76d1('0x4a')]=function(_0x436b3e,_0x19ca8d){return db[_0x76d1('0x2d')][_0x76d1('0x4a')](_0x436b3e[_0x76d1('0x4b')],{})[_0x76d1('0x26')](respondWithResult(_0x19ca8d,0xc9))[_0x76d1('0x45')](handleError(_0x19ca8d,null));};exports[_0x76d1('0x25')]=function(_0x72b73b,_0x58160c){if(_0x72b73b['body']['id']){delete _0x72b73b['body']['id'];}return db[_0x76d1('0x2d')][_0x76d1('0x49')]({'where':{'id':_0x72b73b[_0x76d1('0x47')]['id']}})[_0x76d1('0x26')](handleEntityNotFound(_0x58160c,null))[_0x76d1('0x26')](saveUpdates(_0x72b73b[_0x76d1('0x4b')],null))['then'](respondWithResult(_0x58160c,null))['catch'](handleError(_0x58160c,null));};exports[_0x76d1('0x27')]=function(_0x126722,_0x2318e7){return db['ChatInternalMessage'][_0x76d1('0x49')]({'where':{'id':_0x126722['params']['id']}})[_0x76d1('0x26')](handleEntityNotFound(_0x2318e7,null))['then'](removeEntity(_0x2318e7,null))['catch'](handleError(_0x2318e7,null));};exports[_0x76d1('0x4c')]=function(_0x44a6f0,_0x23fb3f){return db[_0x76d1('0x2d')][_0x76d1('0x4c')]()['then'](respondWithResult(_0x23fb3f,null))['catch'](handleError(_0x23fb3f,null));};function wrapUser(_0x5e2c35){return function(_0x1b0eef){var _0x1e9cd8=_0x5e2c35[_0x76d1('0x4d')]({'plain':!![]});_0x1e9cd8['messages']=[];if(_0x1b0eef){_0x1e9cd8['lastMessageAt']=_0x1b0eef[_0x76d1('0x4e')];_0x1e9cd8[_0x76d1('0x4f')]=_0x1b0eef;}else{_0x1e9cd8[_0x76d1('0x50')]=moment(0x0)[_0x76d1('0x51')](_0x76d1('0x52'));_0x1e9cd8[_0x76d1('0x4f')]={};}return _0x1e9cd8;};}exports[_0x76d1('0x53')]=function(_0x3936b8,_0x1f6182,_0x479628){var _0x6e8999=[];return db[_0x76d1('0x54')][_0x76d1('0x55')]({'where':{'role':['agent',_0x76d1('0x56'),_0x76d1('0x57')]},'attributes':['id','fullname','name',_0x76d1('0x58'),_0x76d1('0x59'),_0x76d1('0x5a'),'online','lastLoginAt',_0x76d1('0x5b'),_0x76d1('0x5c')],'order':qs['sort'](_0x76d1('0x5d')),'include':[{'model':db[_0x76d1('0x5e')],'as':_0x76d1('0x5f'),'attributes':['id',_0x76d1('0x2b'),'type'],'through':{'attributes':[]}}]})[_0x76d1('0x26')](function(_0x3c1842){if(_0x3c1842){var _0x56ce88=_0x3936b8[_0x76d1('0x57')][_0x76d1('0x4d')]({'plain':!![]});if(!_0x56ce88)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x56ce88[_0x76d1('0x58')]===_0x76d1('0x57')){return db[_0x76d1('0x60')][_0x76d1('0x49')]({'where':{'name':_0x76d1('0x61'),'userProfileId':_0x56ce88[_0x76d1('0x62')]},'raw':!![]})['then'](function(_0x38e806){if(_0x38e806){if(_0x38e806[_0x76d1('0x63')]===0x0){return db[_0x76d1('0x64')][_0x76d1('0x55')]({'where':{'sectionId':_0x38e806['id']},'raw':!![]})[_0x76d1('0x26')](function(_0x39ff00){var _0x57d8e2=[];if(_[_0x76d1('0x65')](_0x39ff00)){_0x57d8e2=_[_0x76d1('0x3d')](_0x3c1842,function(_0x2cd567){if(_0x2cd567[_0x76d1('0x58')]!==_0x76d1('0x66')){return _0x2cd567;}});return _0x57d8e2;}else{for(var _0x16b24e=0x0;_0x16b24e<_0x3c1842[_0x76d1('0x38')];_0x16b24e++){var _0x150cc4=_0x3c1842[_0x16b24e];if(_0x150cc4[_0x76d1('0x58')]===_0x76d1('0x66')){var _0x43be09=_['find'](_0x39ff00,function(_0xc1d1ca){return _0xc1d1ca[_0x76d1('0x67')]===_0x150cc4['id'];});if(_0x43be09)_0x57d8e2[_0x76d1('0x68')](_0x150cc4);}else{_0x57d8e2['push'](_0x150cc4);}}return _0x57d8e2;}});}else{return _0x3c1842;}}else{var _0x55f950=_[_0x76d1('0x3d')](_0x3c1842,function(_0x3561be){if(_0x3561be[_0x76d1('0x58')]!==_0x76d1('0x66')){return _0x3561be;}});return _0x55f950;}});}else{return _0x3c1842;}}})[_0x76d1('0x26')](function(_0x255701){var _0x219ea1=[];if(_0x255701){_0x6e8999=_0x255701;for(var _0x3a6985=0x0;_0x3a6985<_0x255701[_0x76d1('0x38')];_0x3a6985+=0x1){_0x6e8999[_0x3a6985][_0x76d1('0x69')]=[];_0x219ea1[_0x76d1('0x68')](db[_0x76d1('0x2d')][_0x76d1('0x49')]({'where':{'FromId':[_0x3936b8['user']['id'],_0x255701[_0x3a6985]['id']],'ToId':[_0x3936b8[_0x76d1('0x57')]['id'],_0x255701[_0x3a6985]['id']],'ChatGroupId':null},'attributes':['id',_0x76d1('0x4e'),_0x76d1('0x6a'),_0x76d1('0x6b'),_0x76d1('0x6c'),_0x76d1('0x4b')],'order':qs[_0x76d1('0x3b')](_0x76d1('0x6d')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x76d1('0x26')](wrapUser(_0x255701[_0x3a6985])));}return BPromise[_0x76d1('0x6e')](_0x219ea1);}return[];})['then'](function(_0x1d18ab){return{'rows':_0x1d18ab,'count':_0x1d18ab[_0x76d1('0x38')]};})['then'](respondWithResult(_0x1f6182,null))[_0x76d1('0x45')](handleError(_0x1f6182,null));};
\ No newline at end of file
+var _0x377b=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','end','offset','limit','count','status','set','Content-Range','apply','reject','save','update','destroy','error','stack','name','map','type','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ChatInternalMessage','includeAll','findAll','then','catch','show','params','rawAttributes','length','include','create','body','find','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','user','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','FromId','ToId','read','-createdAt','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x377b,0x1a5));var _0xb377=function(_0x3ceb84,_0x597e54){_0x3ceb84=_0x3ceb84-0x0;var _0xe3fedd=_0x377b[_0x3ceb84];return _0xe3fedd;};'use strict';var emlformat=require(_0xb377('0x0'));var rimraf=require(_0xb377('0x1'));var zipdir=require(_0xb377('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb377('0x3'));var moment=require(_0xb377('0x4'));var BPromise=require(_0xb377('0x5'));var Mustache=require(_0xb377('0x6'));var util=require(_0xb377('0x7'));var path=require(_0xb377('0x8'));var sox=require('sox');var csv=require(_0xb377('0x9'));var ejs=require(_0xb377('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb377('0xb'));var crypto=require(_0xb377('0xc'));var jsforce=require(_0xb377('0xd'));var deskjs=require(_0xb377('0xe'));var toCsv=require(_0xb377('0x9'));var querystring=require(_0xb377('0xf'));var Papa=require(_0xb377('0x10'));var Redis=require(_0xb377('0x11'));var authService=require(_0xb377('0x12'));var qs=require(_0xb377('0x13'));var as=require(_0xb377('0x14'));var hardwareService=require(_0xb377('0x15'));var logger=require(_0xb377('0x16'))(_0xb377('0x17'));var utils=require(_0xb377('0x18'));var config=require(_0xb377('0x19'));var licenseUtil=require(_0xb377('0x1a'));var db=require(_0xb377('0x1b'))['db'];config[_0xb377('0x1c')]=_[_0xb377('0x1d')](config[_0xb377('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xb377('0x1e'))(new Redis(config[_0xb377('0x1c')]));require('./chatInternalMessage.socket')[_0xb377('0x1f')](socket);function respondWithStatusCode(_0x3513e6,_0x32b9f5){_0x32b9f5=_0x32b9f5||0xcc;return function(_0x3de6d1){if(_0x3de6d1){return _0x3513e6[_0xb377('0x20')](_0x32b9f5);}return _0x3513e6['status'](_0x32b9f5)[_0xb377('0x21')]();};}function respondWithResult(_0x564226,_0x2ed820){_0x2ed820=_0x2ed820||0xc8;return function(_0x23abfc){if(_0x23abfc){return _0x564226['status'](_0x2ed820)['json'](_0x23abfc);}};}function respondWithFilteredResult(_0x1ffa29,_0x2fe44c){return function(_0x5b5148){if(_0x5b5148){var _0x2cfdd6=typeof _0x2fe44c[_0xb377('0x22')]==='undefined'&&typeof _0x2fe44c[_0xb377('0x23')]==='undefined';var _0x42a30d=_0x5b5148[_0xb377('0x24')];var _0x51373f=_0x2cfdd6?0x0:_0x2fe44c[_0xb377('0x22')];var _0x2ad860=_0x2cfdd6?_0x5b5148[_0xb377('0x24')]:_0x2fe44c[_0xb377('0x22')]+_0x2fe44c[_0xb377('0x23')];var _0x2092f0;if(_0x2ad860>=_0x42a30d){_0x2ad860=_0x42a30d;_0x2092f0=0xc8;}else{_0x2092f0=0xce;}_0x1ffa29[_0xb377('0x25')](_0x2092f0);return _0x1ffa29[_0xb377('0x26')](_0xb377('0x27'),_0x51373f+'-'+_0x2ad860+'/'+_0x42a30d)['json'](_0x5b5148);}return null;};}function patchUpdates(_0x130567){return function(_0xbd89){try{jsonpatch[_0xb377('0x28')](_0xbd89,_0x130567,!![]);}catch(_0x3423f6){return BPromise[_0xb377('0x29')](_0x3423f6);}return _0xbd89[_0xb377('0x2a')]();};}function saveUpdates(_0x54cbed,_0x378ca3){return function(_0x1adc1c){if(_0x1adc1c){return _0x1adc1c[_0xb377('0x2b')](_0x54cbed)['then'](function(_0x1d59b2){return _0x1d59b2;});}return null;};}function removeEntity(_0xd3989b,_0x159523){return function(_0x1340e4){if(_0x1340e4){return _0x1340e4[_0xb377('0x2c')]()['then'](function(){_0xd3989b[_0xb377('0x25')](0xcc)[_0xb377('0x21')]();});}};}function handleEntityNotFound(_0x33bab0,_0x5d0b4f){return function(_0x45ed4b){if(!_0x45ed4b){_0x33bab0[_0xb377('0x20')](0x194);}return _0x45ed4b;};}function handleError(_0x444e5d,_0x253a8f){_0x253a8f=_0x253a8f||0x1f4;return function(_0x4f3687){logger[_0xb377('0x2d')](_0x4f3687[_0xb377('0x2e')]);if(_0x4f3687[_0xb377('0x2f')]){delete _0x4f3687[_0xb377('0x2f')];}_0x444e5d[_0xb377('0x25')](_0x253a8f)['send'](_0x4f3687);};}exports['index']=function(_0x130666,_0x4fd4cf){var _0x57b37f={},_0x41c06d={},_0x285cf9={'count':0x0,'rows':[]};var _0x5156a4=_[_0xb377('0x30')](db['ChatInternalMessage']['rawAttributes'],function(_0x23f503){return{'name':_0x23f503['fieldName'],'type':_0x23f503[_0xb377('0x31')]['key']};});_0x41c06d['model']=_[_0xb377('0x30')](_0x5156a4,'name');_0x41c06d[_0xb377('0x32')]=_[_0xb377('0x33')](_0x130666[_0xb377('0x32')]);_0x41c06d[_0xb377('0x34')]=_[_0xb377('0x35')](_0x41c06d[_0xb377('0x36')],_0x41c06d[_0xb377('0x32')]);_0x57b37f[_0xb377('0x37')]=_[_0xb377('0x35')](_0x41c06d[_0xb377('0x36')],qs[_0xb377('0x38')](_0x130666[_0xb377('0x32')][_0xb377('0x38')]));_0x57b37f[_0xb377('0x37')]=_0x57b37f[_0xb377('0x37')]['length']?_0x57b37f[_0xb377('0x37')]:_0x41c06d[_0xb377('0x36')];if(!_0x130666[_0xb377('0x32')]['hasOwnProperty'](_0xb377('0x39'))){_0x57b37f['limit']=qs[_0xb377('0x23')](_0x130666['query'][_0xb377('0x23')]);_0x57b37f[_0xb377('0x22')]=qs[_0xb377('0x22')](_0x130666[_0xb377('0x32')][_0xb377('0x22')]);}_0x57b37f[_0xb377('0x3a')]=qs[_0xb377('0x3b')](_0x130666[_0xb377('0x32')][_0xb377('0x3b')]);_0x57b37f[_0xb377('0x3c')]=qs[_0xb377('0x34')](_[_0xb377('0x3d')](_0x130666[_0xb377('0x32')],_0x41c06d[_0xb377('0x34')]),_0x5156a4);if(_0x130666[_0xb377('0x32')][_0xb377('0x3e')]){_0x57b37f[_0xb377('0x3c')]=_[_0xb377('0x3f')](_0x57b37f[_0xb377('0x3c')],{'$or':_[_0xb377('0x30')](_0x5156a4,function(_0x462855){if(_0x462855['type']!==_0xb377('0x40')){var _0x2d9762={};_0x2d9762[_0x462855[_0xb377('0x2f')]]={'$like':'%'+_0x130666[_0xb377('0x32')][_0xb377('0x3e')]+'%'};return _0x2d9762;}})});}_0x57b37f=_[_0xb377('0x3f')]({},_0x57b37f,_0x130666[_0xb377('0x41')]);var _0x3da175={'where':_0x57b37f[_0xb377('0x3c')]};return db[_0xb377('0x42')][_0xb377('0x24')](_0x3da175)['then'](function(_0x875a99){_0x285cf9[_0xb377('0x24')]=_0x875a99;if(_0x130666[_0xb377('0x32')][_0xb377('0x43')]){_0x57b37f['include']=[{'all':!![]}];}return db['ChatInternalMessage'][_0xb377('0x44')](_0x57b37f);})[_0xb377('0x45')](function(_0x3963a2){_0x285cf9['rows']=_0x3963a2;return _0x285cf9;})[_0xb377('0x45')](respondWithFilteredResult(_0x4fd4cf,_0x57b37f))[_0xb377('0x46')](handleError(_0x4fd4cf,null));};exports[_0xb377('0x47')]=function(_0x7ebcb5,_0x38c991){var _0x40d8e3={'raw':!![],'where':{'id':_0x7ebcb5[_0xb377('0x48')]['id']}},_0x349f28={};_0x349f28[_0xb377('0x36')]=_[_0xb377('0x33')](db[_0xb377('0x42')][_0xb377('0x49')]);_0x349f28[_0xb377('0x32')]=_[_0xb377('0x33')](_0x7ebcb5[_0xb377('0x32')]);_0x349f28[_0xb377('0x34')]=_[_0xb377('0x35')](_0x349f28['model'],_0x349f28[_0xb377('0x32')]);_0x40d8e3[_0xb377('0x37')]=_[_0xb377('0x35')](_0x349f28[_0xb377('0x36')],qs[_0xb377('0x38')](_0x7ebcb5[_0xb377('0x32')][_0xb377('0x38')]));_0x40d8e3[_0xb377('0x37')]=_0x40d8e3[_0xb377('0x37')][_0xb377('0x4a')]?_0x40d8e3[_0xb377('0x37')]:_0x349f28[_0xb377('0x36')];if(_0x7ebcb5[_0xb377('0x32')][_0xb377('0x43')]){_0x40d8e3[_0xb377('0x4b')]=[{'all':!![]}];}_0x40d8e3=_['merge']({},_0x40d8e3,_0x7ebcb5[_0xb377('0x41')]);return db[_0xb377('0x42')]['find'](_0x40d8e3)['then'](handleEntityNotFound(_0x38c991,null))[_0xb377('0x45')](respondWithResult(_0x38c991,null))[_0xb377('0x46')](handleError(_0x38c991,null));};exports['create']=function(_0x1c355b,_0x12de7a){return db[_0xb377('0x42')][_0xb377('0x4c')](_0x1c355b[_0xb377('0x4d')],{})['then'](respondWithResult(_0x12de7a,0xc9))[_0xb377('0x46')](handleError(_0x12de7a,null));};exports['update']=function(_0x83af57,_0x16f34d){if(_0x83af57[_0xb377('0x4d')]['id']){delete _0x83af57['body']['id'];}return db[_0xb377('0x42')]['find']({'where':{'id':_0x83af57['params']['id']}})['then'](handleEntityNotFound(_0x16f34d,null))[_0xb377('0x45')](saveUpdates(_0x83af57[_0xb377('0x4d')],null))[_0xb377('0x45')](respondWithResult(_0x16f34d,null))[_0xb377('0x46')](handleError(_0x16f34d,null));};exports['destroy']=function(_0x36de8c,_0xf4e6bf){return db[_0xb377('0x42')][_0xb377('0x4e')]({'where':{'id':_0x36de8c[_0xb377('0x48')]['id']}})['then'](handleEntityNotFound(_0xf4e6bf,null))['then'](removeEntity(_0xf4e6bf,null))[_0xb377('0x46')](handleError(_0xf4e6bf,null));};exports[_0xb377('0x4f')]=function(_0x24cc09,_0x4e779d){return db[_0xb377('0x42')][_0xb377('0x4f')]()[_0xb377('0x45')](respondWithResult(_0x4e779d,null))[_0xb377('0x46')](handleError(_0x4e779d,null));};function wrapUser(_0xbb2529){return function(_0x4b9379){var _0x21f34c=_0xbb2529[_0xb377('0x50')]({'plain':!![]});_0x21f34c[_0xb377('0x51')]=[];if(_0x4b9379){_0x21f34c[_0xb377('0x52')]=_0x4b9379[_0xb377('0x53')];_0x21f34c[_0xb377('0x54')]=_0x4b9379;}else{_0x21f34c['lastMessageAt']=moment(0x0)[_0xb377('0x55')](_0xb377('0x56'));_0x21f34c[_0xb377('0x54')]={};}return _0x21f34c;};}exports[_0xb377('0x57')]=function(_0x56542f,_0x4a7cb3,_0x555791){var _0x57eb07=[];return db['User'][_0xb377('0x44')]({'where':{'role':['agent','admin',_0xb377('0x58')]},'attributes':['id','fullname',_0xb377('0x2f'),_0xb377('0x59'),_0xb377('0x5a'),_0xb377('0x5b'),_0xb377('0x5c'),_0xb377('0x5d'),_0xb377('0x5e'),_0xb377('0x5f')],'order':qs['sort'](_0xb377('0x60')),'include':[{'model':db[_0xb377('0x61')],'as':'VoiceQueues','attributes':['id',_0xb377('0x2f'),'type'],'through':{'attributes':[]}}]})[_0xb377('0x45')](function(_0x1e1e42){if(_0x1e1e42){var _0x2c08bc=_0x56542f[_0xb377('0x58')][_0xb377('0x50')]({'plain':!![]});if(!_0x2c08bc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c08bc[_0xb377('0x59')]===_0xb377('0x58')){return db[_0xb377('0x62')][_0xb377('0x4e')]({'where':{'name':_0xb377('0x63'),'userProfileId':_0x2c08bc[_0xb377('0x64')]},'raw':!![]})['then'](function(_0x26d8da){if(_0x26d8da){if(_0x26d8da[_0xb377('0x65')]===0x0){return db[_0xb377('0x66')][_0xb377('0x44')]({'where':{'sectionId':_0x26d8da['id']},'raw':!![]})[_0xb377('0x45')](function(_0x59bcbd){var _0x59eb67=[];if(_[_0xb377('0x67')](_0x59bcbd)){_0x59eb67=_[_0xb377('0x3e')](_0x1e1e42,function(_0x424e3a){if(_0x424e3a[_0xb377('0x59')]!=='agent'){return _0x424e3a;}});return _0x59eb67;}else{for(var _0xd6d5d9=0x0;_0xd6d5d9<_0x1e1e42[_0xb377('0x4a')];_0xd6d5d9++){var _0xd9ecb9=_0x1e1e42[_0xd6d5d9];if(_0xd9ecb9[_0xb377('0x59')]===_0xb377('0x68')){var _0x4d4949=_[_0xb377('0x4e')](_0x59bcbd,function(_0x53d67c){return _0x53d67c[_0xb377('0x69')]===_0xd9ecb9['id'];});if(_0x4d4949)_0x59eb67[_0xb377('0x6a')](_0xd9ecb9);}else{_0x59eb67[_0xb377('0x6a')](_0xd9ecb9);}}return _0x59eb67;}});}else{return _0x1e1e42;}}else{var _0x6c09f3=_[_0xb377('0x3e')](_0x1e1e42,function(_0xd700c8){if(_0xd700c8[_0xb377('0x59')]!==_0xb377('0x68')){return _0xd700c8;}});return _0x6c09f3;}});}else{return _0x1e1e42;}}})[_0xb377('0x45')](function(_0x4c0d72){var _0x2113a3=[];if(_0x4c0d72){_0x57eb07=_0x4c0d72;for(var _0x2622d2=0x0;_0x2622d2<_0x4c0d72[_0xb377('0x4a')];_0x2622d2+=0x1){_0x57eb07[_0x2622d2][_0xb377('0x51')]=[];_0x2113a3[_0xb377('0x6a')](db[_0xb377('0x42')][_0xb377('0x4e')]({'where':{'FromId':[_0x56542f[_0xb377('0x58')]['id'],_0x4c0d72[_0x2622d2]['id']],'ToId':[_0x56542f[_0xb377('0x58')]['id'],_0x4c0d72[_0x2622d2]['id']],'ChatGroupId':null},'attributes':['id',_0xb377('0x53'),_0xb377('0x6b'),_0xb377('0x6c'),_0xb377('0x6d'),_0xb377('0x4d')],'order':qs[_0xb377('0x3b')](_0xb377('0x6e')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xb377('0x45')](wrapUser(_0x4c0d72[_0x2622d2])));}return BPromise['all'](_0x2113a3);}return[];})[_0xb377('0x45')](function(_0x51d99){return{'rows':_0x51d99,'count':_0x51d99[_0xb377('0x4a')]};})[_0xb377('0x45')](respondWithResult(_0x4a7cb3,null))[_0xb377('0x46')](handleError(_0x4a7cb3,null));};
\ No newline at end of file
index 940980b..7bef94d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f13=['hook','exports','events','../../mysqldb','ChatInternalMessage','save','update','remove','emit'];(function(_0xe3bbea,_0x3ae4d3){var _0x18713d=function(_0x453117){while(--_0x453117){_0xe3bbea['push'](_0xe3bbea['shift']());}};_0x18713d(++_0x3ae4d3);}(_0x0f13,0x16a));var _0x30f1=function(_0x4036f2,_0x56704c){_0x4036f2=_0x4036f2-0x0;var _0x22cf44=_0x0f13[_0x4036f2];return _0x22cf44;};'use strict';var EventEmitter=require(_0x30f1('0x0'));var ChatInternalMessage=require(_0x30f1('0x1'))['db'][_0x30f1('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x30f1('0x3'),'afterUpdate':_0x30f1('0x4'),'afterDestroy':_0x30f1('0x5')};function emitEvent(_0x354887){return function(_0x1d35eb,_0x34d9b5,_0x1caa1d){ChatInternalMessageEvents['emit'](_0x354887+':'+_0x1d35eb['id'],_0x1d35eb);ChatInternalMessageEvents[_0x30f1('0x6')](_0x354887,_0x1d35eb);_0x1caa1d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x30f1('0x7')](e,emitEvent(event));}}module[_0x30f1('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xe875=['../../mysqldb','ChatInternalMessage','setMaxListeners','save','emit','hasOwnProperty','hook','exports','events'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe875,0x1b8));var _0x5e87=function(_0x53eef4,_0x5cd111){_0x53eef4=_0x53eef4-0x0;var _0xf053a1=_0xe875[_0x53eef4];return _0xf053a1;};'use strict';var EventEmitter=require(_0x5e87('0x0'));var ChatInternalMessage=require(_0x5e87('0x1'))['db'][_0x5e87('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x5e87('0x3')](0x0);var events={'afterCreate':_0x5e87('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x10af3a){return function(_0x11e031,_0x27c5fc,_0x16a2ac){ChatInternalMessageEvents['emit'](_0x10af3a+':'+_0x11e031['id'],_0x11e031);ChatInternalMessageEvents[_0x5e87('0x5')](_0x10af3a,_0x11e031);_0x16a2ac(null);};}for(var e in events){if(events[_0x5e87('0x6')](e)){var event=events[e];ChatInternalMessage[_0x5e87('0x7')](e,emitEvent(event));}}module[_0x5e87('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index ead248e..5f97865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d9c=['./chatInternalMessage.attributes','exports','define','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x46524c,_0x4fd13a){var _0x1a6a9d=function(_0x292074){while(--_0x292074){_0x46524c['push'](_0x46524c['shift']());}};_0x1a6a9d(++_0x4fd13a);}(_0x6d9c,0xd8));var _0xc6d9=function(_0x50c7f0,_0x487114){_0x50c7f0=_0x50c7f0-0x0;var _0x2b8fbb=_0x6d9c[_0x50c7f0];return _0x2b8fbb;};'use strict';var _=require(_0xc6d9('0x0'));var util=require(_0xc6d9('0x1'));var logger=require('../../config/logger')(_0xc6d9('0x2'));var moment=require(_0xc6d9('0x3'));var BPromise=require(_0xc6d9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc6d9('0x5'));var rimraf=require(_0xc6d9('0x6'));var config=require(_0xc6d9('0x7'));var attributes=require(_0xc6d9('0x8'));module[_0xc6d9('0x9')]=function(_0x449ba4,_0x23be82){return _0x449ba4[_0xc6d9('0xa')](_0xc6d9('0xb'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc6d9('0xc'),'collate':_0xc6d9('0xd')});};
\ No newline at end of file
+var _0xd05a=['utf8mb4','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','chat_internal_messages'];(function(_0xea463e,_0x10f604){var _0x1948a6=function(_0x4ffce4){while(--_0x4ffce4){_0xea463e['push'](_0xea463e['shift']());}};_0x1948a6(++_0x10f604);}(_0xd05a,0x1ed));var _0xad05=function(_0x57a6e6,_0x171089){_0x57a6e6=_0x57a6e6-0x0;var _0x2af347=_0xd05a[_0x57a6e6];return _0x2af347;};'use strict';var _=require(_0xad05('0x0'));var util=require(_0xad05('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xad05('0x2'));var rp=require(_0xad05('0x3'));var fs=require('fs');var path=require(_0xad05('0x4'));var rimraf=require(_0xad05('0x5'));var config=require(_0xad05('0x6'));var attributes=require(_0xad05('0x7'));module[_0xad05('0x8')]=function(_0x598af9,_0x1c38d2){return _0x598af9[_0xad05('0x9')]('ChatInternalMessage',attributes,{'tableName':_0xad05('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xad05('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index de6907a..0aa8a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fb8=['redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x1a52e1,_0x549393){var _0x2b5f24=function(_0x13a949){while(--_0x13a949){_0x1a52e1['push'](_0x1a52e1['shift']());}};_0x2b5f24(++_0x549393);}(_0x6fb8,0x104));var _0x86fb=function(_0x4fdcc0,_0x560a01){_0x4fdcc0=_0x4fdcc0-0x0;var _0xc0ce94=_0x6fb8[_0x4fdcc0];return _0xc0ce94;};'use strict';var _=require(_0x86fb('0x0'));var util=require('util');var moment=require(_0x86fb('0x1'));var BPromise=require(_0x86fb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x86fb('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x86fb('0x4'))(_0x86fb('0x5'));var config=require(_0x86fb('0x6'));var jayson=require(_0x86fb('0x7'));var client=jayson[_0x86fb('0x8')][_0x86fb('0x9')]({'port':0x232a});config[_0x86fb('0xa')]=_[_0x86fb('0xb')](config[_0x86fb('0xa')],{'host':_0x86fb('0xc'),'port':0x18eb});var socket=require(_0x86fb('0xd'))(new Redis(config[_0x86fb('0xa')]));require(_0x86fb('0xe'))['register'](socket);function respondWithRpcPromise(_0x443829,_0x57a245,_0x441a58){return new BPromise(function(_0x2c35c8,_0x2abe66){return client['request'](_0x443829,_0x441a58)[_0x86fb('0xf')](function(_0x56e431){logger[_0x86fb('0x10')](_0x86fb('0x11'),_0x57a245,_0x86fb('0x12'));logger[_0x86fb('0x13')](_0x86fb('0x14'),_0x57a245,_0x86fb('0x12'),JSON[_0x86fb('0x15')](_0x56e431));if(_0x56e431[_0x86fb('0x16')]){if(_0x56e431[_0x86fb('0x16')][_0x86fb('0x17')]===0x1f4){logger['error'](_0x86fb('0x11'),_0x57a245,_0x56e431['error'][_0x86fb('0x18')]);return _0x2abe66(_0x56e431[_0x86fb('0x16')]['message']);}logger[_0x86fb('0x16')](_0x86fb('0x11'),_0x57a245,_0x56e431[_0x86fb('0x16')][_0x86fb('0x18')]);return _0x2c35c8(_0x56e431[_0x86fb('0x16')]['message']);}else{logger[_0x86fb('0x10')](_0x86fb('0x11'),_0x57a245,_0x86fb('0x12'));_0x2c35c8(_0x56e431[_0x86fb('0x19')][_0x86fb('0x18')]);}})[_0x86fb('0x1a')](function(_0x10fd7e){logger['error'](_0x86fb('0x11'),_0x57a245,_0x10fd7e);_0x2abe66(_0x10fd7e);});});}
\ No newline at end of file
+var _0x09d8=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','redis','defaults','then','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','moment'];(function(_0x5b3a12,_0x12d814){var _0x11f406=function(_0x4307d3){while(--_0x4307d3){_0x5b3a12['push'](_0x5b3a12['shift']());}};_0x11f406(++_0x12d814);}(_0x09d8,0x91));var _0x809d=function(_0x3b06ea,_0x3b2a89){_0x3b06ea=_0x3b06ea-0x0;var _0x277c50=_0x09d8[_0x3b06ea];return _0x277c50;};'use strict';var _=require('lodash');var util=require(_0x809d('0x0'));var moment=require(_0x809d('0x1'));var BPromise=require(_0x809d('0x2'));var rs=require(_0x809d('0x3'));var fs=require('fs');var Redis=require(_0x809d('0x4'));var db=require(_0x809d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x809d('0x6'))(_0x809d('0x7'));var config=require('../../config/environment');var jayson=require(_0x809d('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x809d('0x9')]=_[_0x809d('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatInternalMessage.socket')['register'](socket);function respondWithRpcPromise(_0x297a50,_0x2a0125,_0x2dc30e){return new BPromise(function(_0x35d6a6,_0x370a36){return client['request'](_0x297a50,_0x2dc30e)[_0x809d('0xb')](function(_0x3d3ca4){logger['info'](_0x809d('0xc'),_0x2a0125,_0x809d('0xd'));logger['debug'](_0x809d('0xe'),_0x2a0125,_0x809d('0xd'),JSON[_0x809d('0xf')](_0x3d3ca4));if(_0x3d3ca4[_0x809d('0x10')]){if(_0x3d3ca4[_0x809d('0x10')]['code']===0x1f4){logger[_0x809d('0x10')]('ChatInternalMessage,\x20%s,\x20%s',_0x2a0125,_0x3d3ca4['error'][_0x809d('0x11')]);return _0x370a36(_0x3d3ca4[_0x809d('0x10')][_0x809d('0x11')]);}logger[_0x809d('0x10')](_0x809d('0xc'),_0x2a0125,_0x3d3ca4['error'][_0x809d('0x11')]);return _0x35d6a6(_0x3d3ca4['error'][_0x809d('0x11')]);}else{logger[_0x809d('0x12')](_0x809d('0xc'),_0x2a0125,_0x809d('0xd'));_0x35d6a6(_0x3d3ca4[_0x809d('0x13')][_0x809d('0x11')]);}})[_0x809d('0x14')](function(_0x3a45c7){logger[_0x809d('0x10')](_0x809d('0xc'),_0x2a0125,_0x3a45c7);_0x370a36(_0x3a45c7);});});}
\ No newline at end of file
index a7f5a4e..2fb02a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe65d=['save','remove','update','emit','removeListener','register','length','./chatInternalMessage.events'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xe65d,0x1d7));var _0xde65=function(_0xeb128f,_0x2039bd){_0xeb128f=_0xeb128f-0x0;var _0xe1befa=_0xe65d[_0xeb128f];return _0xe1befa;};'use strict';var ChatInternalMessageEvents=require(_0xde65('0x0'));var events=[_0xde65('0x1'),_0xde65('0x2'),_0xde65('0x3')];function createListener(_0xfb9b27,_0x165342){return function(_0x88c23e){_0x165342[_0xde65('0x4')](_0xfb9b27,_0x88c23e);};}function removeListener(_0x14efe7,_0x576269){return function(){ChatInternalMessageEvents[_0xde65('0x5')](_0x14efe7,_0x576269);};}exports[_0xde65('0x6')]=function(_0x3f067c){for(var _0x86ced0=0x0,_0x46c481=events[_0xde65('0x7')];_0x86ced0<_0x46c481;_0x86ced0++){var _0x159493=events[_0x86ced0];var _0x24ddbb=createListener('chatInternalMessage:'+_0x159493,_0x3f067c);ChatInternalMessageEvents['on'](_0x159493,_0x24ddbb);}};
\ No newline at end of file
+var _0xbbba=['update','emit','removeListener','register','length','chatInternalMessage:','save'];(function(_0x4350c2,_0x112f3c){var _0x8b6406=function(_0x49e845){while(--_0x49e845){_0x4350c2['push'](_0x4350c2['shift']());}};_0x8b6406(++_0x112f3c);}(_0xbbba,0x1e2));var _0xabbb=function(_0xd839e7,_0x4209e9){_0xd839e7=_0xd839e7-0x0;var _0xc3cf23=_0xbbba[_0xd839e7];return _0xc3cf23;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0xabbb('0x0'),'remove',_0xabbb('0x1')];function createListener(_0x1eeb31,_0x23eb4c){return function(_0x3d0c7e){_0x23eb4c[_0xabbb('0x2')](_0x1eeb31,_0x3d0c7e);};}function removeListener(_0x31e02b,_0x27a363){return function(){ChatInternalMessageEvents[_0xabbb('0x3')](_0x31e02b,_0x27a363);};}exports[_0xabbb('0x4')]=function(_0x167de5){for(var _0x35b83c=0x0,_0x312e98=events[_0xabbb('0x5')];_0x35b83c<_0x312e98;_0x35b83c++){var _0x210188=events[_0x35b83c];var _0x280e4f=createListener(_0xabbb('0x6')+_0x210188,_0x167de5);ChatInternalMessageEvents['on'](_0x210188,_0x280e4f);}};
\ No newline at end of file
index df08f95..92357be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9929=['destroy','exports','path','connect-timeout','express','Router','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','create','put','update','delete'];(function(_0xcca245,_0x534946){var _0x26f2d5=function(_0xd9a0ca){while(--_0xd9a0ca){_0xcca245['push'](_0xcca245['shift']());}};_0x26f2d5(++_0x534946);}(_0x9929,0x13d));var _0x9992=function(_0x5ccb37,_0x10e4cd){_0x5ccb37=_0x5ccb37-0x0;var _0x48b573=_0x9929[_0x5ccb37];return _0x48b573;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9992('0x0'));var timeout=require(_0x9992('0x1'));var express=require(_0x9992('0x2'));var router=express[_0x9992('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9992('0x4'));var controller=require(_0x9992('0x5'));router[_0x9992('0x6')]('/',auth[_0x9992('0x7')](),controller[_0x9992('0x8')]);router[_0x9992('0x6')](_0x9992('0x9'),auth[_0x9992('0x7')](),controller[_0x9992('0xa')]);router[_0x9992('0x6')](_0x9992('0xb'),auth[_0x9992('0x7')](),controller[_0x9992('0xc')]);router[_0x9992('0x6')](_0x9992('0xd'),auth[_0x9992('0x7')](),controller[_0x9992('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9992('0xf')]);router[_0x9992('0x10')](_0x9992('0xd'),controller[_0x9992('0x11')]);router[_0x9992('0x12')](_0x9992('0xd'),auth[_0x9992('0x7')](),controller[_0x9992('0x13')]);module[_0x9992('0x14')]=router;
\ No newline at end of file
+var _0xb139=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','getUsers','/:id','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x182f66,_0x1c171a){var _0x4f4ea6=function(_0x44c6f8){while(--_0x44c6f8){_0x182f66['push'](_0x182f66['shift']());}};_0x4f4ea6(++_0x1c171a);}(_0xb139,0x19e));var _0x9b13=function(_0x13808d,_0x1ae6e6){_0x13808d=_0x13808d-0x0;var _0x3dc660=_0xb139[_0x13808d];return _0x3dc660;};'use strict';var multer=require(_0x9b13('0x0'));var util=require(_0x9b13('0x1'));var path=require(_0x9b13('0x2'));var timeout=require(_0x9b13('0x3'));var express=require(_0x9b13('0x4'));var router=express[_0x9b13('0x5')]();var fs_extra=require(_0x9b13('0x6'));var auth=require(_0x9b13('0x7'));var interaction=require(_0x9b13('0x8'));var config=require(_0x9b13('0x9'));var controller=require('./chatInternalMessage.controller');router[_0x9b13('0xa')]('/',auth[_0x9b13('0xb')](),controller['index']);router[_0x9b13('0xa')](_0x9b13('0xc'),auth[_0x9b13('0xb')](),controller[_0x9b13('0xd')]);router[_0x9b13('0xa')]('/users',auth[_0x9b13('0xb')](),controller[_0x9b13('0xe')]);router[_0x9b13('0xa')](_0x9b13('0xf'),auth[_0x9b13('0xb')](),controller['show']);router['post']('/',auth[_0x9b13('0xb')](),controller['create']);router[_0x9b13('0x10')](_0x9b13('0xf'),controller[_0x9b13('0x11')]);router[_0x9b13('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x9b13('0x13')]);module[_0x9b13('0x14')]=router;
\ No newline at end of file
index b24ba80..5a4df16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa062=['TEXT','BOOLEAN','ENUM','out','DATE','sequelize','exports'];(function(_0x1fd507,_0x13bfc4){var _0x4e13d7=function(_0x4554ba){while(--_0x4554ba){_0x1fd507['push'](_0x1fd507['shift']());}};_0x4e13d7(++_0x13bfc4);}(_0xa062,0x101));var _0x2a06=function(_0x182eab,_0x1cb6d2){_0x182eab=_0x182eab-0x0;var _0x75f653=_0xa062[_0x182eab];return _0x75f653;};'use strict';var Sequelize=require(_0x2a06('0x0'));module[_0x2a06('0x1')]={'body':{'type':Sequelize[_0x2a06('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x2a06('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x2a06('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2a06('0x4')]('in',_0x2a06('0x5')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x2a06('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x7894=['medium','BOOLEAN','out','STRING','sequelize','exports','TEXT'];(function(_0x2c1106,_0x322584){var _0x867f48=function(_0x5423c9){while(--_0x5423c9){_0x2c1106['push'](_0x2c1106['shift']());}};_0x867f48(++_0x322584);}(_0x7894,0x170));var _0x4789=function(_0x190145,_0x434ef1){_0x190145=_0x190145-0x0;var _0x540a75=_0x7894[_0x190145];return _0x540a75;};'use strict';var Sequelize=require(_0x4789('0x0'));module[_0x4789('0x1')]={'body':{'type':Sequelize[_0x4789('0x2')](_0x4789('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x4789('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x4789('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x4789('0x5')),'defaultValue':_0x4789('0x5'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x4789('0x6')]},'providerResponse':{'type':Sequelize[_0x4789('0x2')]}};
\ No newline at end of file
index 6a0d8ba..2c10aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf8=['describe','chat','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','get','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','SELECT','contact','fullname','manual','format','SIP/%s','channel','motionChannel','accept','EventManager','acceptmessage','formData','info','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','Sequelize','User','email','interface','event','rejectmessage','parse','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','destroy','sendStatus','send','index','map','ChatMessage','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','rows','show','params','rawAttributes','includeAll','catch','create','body','update','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfbf8,0xba));var _0x8fbf=function(_0x3f9a4c,_0x1ff8fe){_0x3f9a4c=_0x3f9a4c-0x0;var _0x2767b0=_0xfbf8[_0x3f9a4c];return _0x2767b0;};'use strict';var emlformat=require(_0x8fbf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8fbf('0x1'));var rp=require(_0x8fbf('0x2'));var moment=require(_0x8fbf('0x3'));var BPromise=require(_0x8fbf('0x4'));var Mustache=require(_0x8fbf('0x5'));var util=require('util');var path=require('path');var sox=require(_0x8fbf('0x6'));var csv=require(_0x8fbf('0x7'));var ejs=require(_0x8fbf('0x8'));var fs=require('fs');var fs_extra=require(_0x8fbf('0x9'));var _=require(_0x8fbf('0xa'));var squel=require(_0x8fbf('0xb'));var crypto=require(_0x8fbf('0xc'));var jsforce=require(_0x8fbf('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8fbf('0x7'));var querystring=require(_0x8fbf('0xe'));var Papa=require(_0x8fbf('0xf'));var Redis=require(_0x8fbf('0x10'));var authService=require(_0x8fbf('0x11'));var qs=require(_0x8fbf('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8fbf('0x13'));var logger=require(_0x8fbf('0x14'))(_0x8fbf('0x15'));var utils=require(_0x8fbf('0x16'));var config=require(_0x8fbf('0x17'));var licenseUtil=require(_0x8fbf('0x18'));var db=require(_0x8fbf('0x19'))['db'];config[_0x8fbf('0x1a')]=_['defaults'](config[_0x8fbf('0x1a')],{'host':_0x8fbf('0x1b'),'port':0x18eb});var socket=require(_0x8fbf('0x1c'))(new Redis(config[_0x8fbf('0x1a')]));require(_0x8fbf('0x1d'))[_0x8fbf('0x1e')](socket);var jayson=require(_0x8fbf('0x1f'));var client=jayson[_0x8fbf('0x20')][_0x8fbf('0x21')]({'port':0x232c});var client9002=jayson[_0x8fbf('0x20')][_0x8fbf('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x507b22,_0x5cb3e5,_0x25d40b,_0x54d640){return new BPromise(function(_0x4973a0,_0x127cae){var _0x4645b4=_0x54d640||client;return _0x4645b4[_0x8fbf('0x22')](_0x507b22,_0x25d40b)[_0x8fbf('0x23')](function(_0x47b031){logger['info'](_0x8fbf('0x24'),_0x5cb3e5,_0x8fbf('0x25'));logger[_0x8fbf('0x26')](_0x8fbf('0x27'),_0x5cb3e5,_0x8fbf('0x25'),JSON[_0x8fbf('0x28')](_0x47b031));if(_0x47b031[_0x8fbf('0x29')]){if(_0x47b031[_0x8fbf('0x29')][_0x8fbf('0x2a')]===0x1f4){logger['error'](_0x8fbf('0x24'),_0x5cb3e5,_0x47b031[_0x8fbf('0x29')]['message']);return _0x127cae(_0x47b031['error'][_0x8fbf('0x2b')]);}logger['error'](_0x8fbf('0x24'),_0x5cb3e5,_0x47b031[_0x8fbf('0x29')][_0x8fbf('0x2b')]);return _0x4973a0(_0x47b031[_0x8fbf('0x29')]['message']);}else{logger['info'](_0x8fbf('0x24'),_0x5cb3e5,'request\x20sent');_0x4973a0(_0x47b031[_0x8fbf('0x2c')][_0x8fbf('0x2b')]);}})['catch'](function(_0x4618b4){logger[_0x8fbf('0x29')](_0x8fbf('0x24'),_0x5cb3e5,_0x4618b4);_0x127cae(_0x4618b4);});});}function respondWithStatusCode(_0x16da96,_0x4fcd32){_0x4fcd32=_0x4fcd32||0xcc;return function(_0x67c5e1){if(_0x67c5e1){return _0x16da96['sendStatus'](_0x4fcd32);}return _0x16da96[_0x8fbf('0x2d')](_0x4fcd32)[_0x8fbf('0x2e')]();};}function respondWithResult(_0x15c210,_0x5c7367){_0x5c7367=_0x5c7367||0xc8;return function(_0x5cfe95){if(_0x5cfe95){return _0x15c210[_0x8fbf('0x2d')](_0x5c7367)[_0x8fbf('0x2f')](_0x5cfe95);}};}function respondWithFilteredResult(_0x4b75c1,_0x5725b6){return function(_0x4a93eb){if(_0x4a93eb){var _0x4fb04f=typeof _0x5725b6['offset']===_0x8fbf('0x30')&&typeof _0x5725b6[_0x8fbf('0x31')]===_0x8fbf('0x30');var _0x477241=_0x4a93eb['count'];var _0x23746a=_0x4fb04f?0x0:_0x5725b6[_0x8fbf('0x32')];var _0x40927f=_0x4fb04f?_0x4a93eb[_0x8fbf('0x33')]:_0x5725b6[_0x8fbf('0x32')]+_0x5725b6[_0x8fbf('0x31')];var _0x21925f;if(_0x40927f>=_0x477241){_0x40927f=_0x477241;_0x21925f=0xc8;}else{_0x21925f=0xce;}_0x4b75c1['status'](_0x21925f);return _0x4b75c1[_0x8fbf('0x34')](_0x8fbf('0x35'),_0x23746a+'-'+_0x40927f+'/'+_0x477241)[_0x8fbf('0x2f')](_0x4a93eb);}return null;};}function patchUpdates(_0x38b1c3){return function(_0x5dba27){try{jsonpatch[_0x8fbf('0x36')](_0x5dba27,_0x38b1c3,!![]);}catch(_0xa9e61c){return BPromise[_0x8fbf('0x37')](_0xa9e61c);}return _0x5dba27[_0x8fbf('0x38')]();};}function saveUpdates(_0x2f2e29,_0x1c5a47){return function(_0x569e3f){if(_0x569e3f){return _0x569e3f['update'](_0x2f2e29)[_0x8fbf('0x23')](function(_0x955ee9){return _0x955ee9;});}return null;};}function removeEntity(_0x5f45b9,_0x3951b2){return function(_0x4dc415){if(_0x4dc415){return _0x4dc415[_0x8fbf('0x39')]()[_0x8fbf('0x23')](function(){_0x5f45b9['status'](0xcc)[_0x8fbf('0x2e')]();});}};}function handleEntityNotFound(_0x42ab87,_0x50143a){return function(_0x456347){if(!_0x456347){_0x42ab87[_0x8fbf('0x3a')](0x194);}return _0x456347;};}function handleError(_0x33f380,_0x4137fa){_0x4137fa=_0x4137fa||0x1f4;return function(_0x433b38){logger[_0x8fbf('0x29')](_0x433b38['stack']);if(_0x433b38['name']){delete _0x433b38['name'];}_0x33f380[_0x8fbf('0x2d')](_0x4137fa)[_0x8fbf('0x3b')](_0x433b38);};}exports[_0x8fbf('0x3c')]=function(_0x56bccb,_0x287508){var _0x3c3152={},_0x27a6df={},_0xb8ac88={'count':0x0,'rows':[]};var _0x5eca09=_[_0x8fbf('0x3d')](db[_0x8fbf('0x3e')]['rawAttributes'],function(_0x401fd4){return{'name':_0x401fd4['fieldName'],'type':_0x401fd4[_0x8fbf('0x3f')][_0x8fbf('0x40')]};});_0x27a6df[_0x8fbf('0x41')]=_['map'](_0x5eca09,_0x8fbf('0x42'));_0x27a6df[_0x8fbf('0x43')]=_[_0x8fbf('0x44')](_0x56bccb['query']);_0x27a6df[_0x8fbf('0x45')]=_[_0x8fbf('0x46')](_0x27a6df[_0x8fbf('0x41')],_0x27a6df[_0x8fbf('0x43')]);_0x3c3152[_0x8fbf('0x47')]=_[_0x8fbf('0x46')](_0x27a6df['model'],qs[_0x8fbf('0x48')](_0x56bccb[_0x8fbf('0x43')]['fields']));_0x3c3152[_0x8fbf('0x47')]=_0x3c3152['attributes'][_0x8fbf('0x49')]?_0x3c3152[_0x8fbf('0x47')]:_0x27a6df[_0x8fbf('0x41')];if(!_0x56bccb['query'][_0x8fbf('0x4a')](_0x8fbf('0x4b'))){_0x3c3152['limit']=qs['limit'](_0x56bccb[_0x8fbf('0x43')][_0x8fbf('0x31')]);_0x3c3152['offset']=qs[_0x8fbf('0x32')](_0x56bccb['query'][_0x8fbf('0x32')]);}_0x3c3152[_0x8fbf('0x4c')]=qs[_0x8fbf('0x4d')](_0x56bccb[_0x8fbf('0x43')][_0x8fbf('0x4d')]);_0x3c3152[_0x8fbf('0x4e')]=qs[_0x8fbf('0x45')](_['pick'](_0x56bccb[_0x8fbf('0x43')],_0x27a6df['filters']),_0x5eca09);if(_0x56bccb[_0x8fbf('0x43')][_0x8fbf('0x4f')]){_0x3c3152[_0x8fbf('0x4e')]=_[_0x8fbf('0x50')](_0x3c3152['where'],{'$or':_[_0x8fbf('0x3d')](_0x5eca09,function(_0x2904e2){if(_0x2904e2[_0x8fbf('0x3f')]!==_0x8fbf('0x51')){var _0x16bc76={};_0x16bc76[_0x2904e2[_0x8fbf('0x42')]]={'$like':'%'+_0x56bccb['query'][_0x8fbf('0x4f')]+'%'};return _0x16bc76;}})});}_0x3c3152=_['merge']({},_0x3c3152,_0x56bccb[_0x8fbf('0x52')]);var _0x1cd209={'where':_0x3c3152['where']};return db[_0x8fbf('0x3e')][_0x8fbf('0x33')](_0x1cd209)[_0x8fbf('0x23')](function(_0x5e4ef0){_0xb8ac88['count']=_0x5e4ef0;if(_0x56bccb[_0x8fbf('0x43')]['includeAll']){_0x3c3152[_0x8fbf('0x53')]=[{'all':!![]}];}return db[_0x8fbf('0x3e')]['findAll'](_0x3c3152);})[_0x8fbf('0x23')](function(_0x48263e){_0xb8ac88[_0x8fbf('0x54')]=_0x48263e;return _0xb8ac88;})['then'](respondWithFilteredResult(_0x287508,_0x3c3152))['catch'](handleError(_0x287508,null));};exports[_0x8fbf('0x55')]=function(_0x3ccf57,_0x2764b6){var _0x32152c={'raw':!![],'where':{'id':_0x3ccf57[_0x8fbf('0x56')]['id']}},_0x228937={};_0x228937['model']=_['keys'](db[_0x8fbf('0x3e')][_0x8fbf('0x57')]);_0x228937['query']=_['keys'](_0x3ccf57[_0x8fbf('0x43')]);_0x228937[_0x8fbf('0x45')]=_[_0x8fbf('0x46')](_0x228937['model'],_0x228937['query']);_0x32152c[_0x8fbf('0x47')]=_[_0x8fbf('0x46')](_0x228937[_0x8fbf('0x41')],qs[_0x8fbf('0x48')](_0x3ccf57['query'][_0x8fbf('0x48')]));_0x32152c[_0x8fbf('0x47')]=_0x32152c[_0x8fbf('0x47')][_0x8fbf('0x49')]?_0x32152c['attributes']:_0x228937[_0x8fbf('0x41')];if(_0x3ccf57['query'][_0x8fbf('0x58')]){_0x32152c['include']=[{'all':!![]}];}_0x32152c=_['merge']({},_0x32152c,_0x3ccf57['options']);return db[_0x8fbf('0x3e')]['find'](_0x32152c)[_0x8fbf('0x23')](handleEntityNotFound(_0x2764b6,null))[_0x8fbf('0x23')](respondWithResult(_0x2764b6,null))[_0x8fbf('0x59')](handleError(_0x2764b6,null));};exports[_0x8fbf('0x5a')]=function(_0x34c983,_0x12d500){return db[_0x8fbf('0x3e')]['create'](_0x34c983[_0x8fbf('0x5b')],{})[_0x8fbf('0x23')](respondWithResult(_0x12d500,0xc9))[_0x8fbf('0x59')](handleError(_0x12d500,null));};exports[_0x8fbf('0x5c')]=function(_0x442dc7,_0x4a7f75){if(_0x442dc7[_0x8fbf('0x5b')]['id']){delete _0x442dc7['body']['id'];}return db[_0x8fbf('0x3e')][_0x8fbf('0x5d')]({'where':{'id':_0x442dc7['params']['id']}})[_0x8fbf('0x23')](handleEntityNotFound(_0x4a7f75,null))['then'](saveUpdates(_0x442dc7[_0x8fbf('0x5b')],null))['then'](respondWithResult(_0x4a7f75,null))['catch'](handleError(_0x4a7f75,null));};exports[_0x8fbf('0x39')]=function(_0x487ced,_0x545522){return db[_0x8fbf('0x3e')][_0x8fbf('0x5d')]({'where':{'id':_0x487ced[_0x8fbf('0x56')]['id']}})[_0x8fbf('0x23')](handleEntityNotFound(_0x545522,null))[_0x8fbf('0x23')](removeEntity(_0x545522,null))[_0x8fbf('0x59')](handleError(_0x545522,null));};exports['describe']=function(_0x2f09c1,_0x437294){return db[_0x8fbf('0x3e')][_0x8fbf('0x5e')]()[_0x8fbf('0x23')](respondWithResult(_0x437294,null))['catch'](handleError(_0x437294,null));};var interaction_log=require(_0x8fbf('0x14'))('chat-interactions');exports['accept']=function(_0x3c4873,_0x20505d,_0xb65e53){var _0x4b6fc4={'agent':{},'channel':_0x8fbf('0x5f')};if(_0x3c4873[_0x8fbf('0x5b')]['id']){delete _0x3c4873[_0x8fbf('0x5b')]['id'];}_0x3c4873[_0x8fbf('0x5b')][_0x8fbf('0x60')]=!![];_0x3c4873['body'][_0x8fbf('0x61')]=moment()['format'](_0x8fbf('0x62'));_0x3c4873[_0x8fbf('0x5b')][_0x8fbf('0x63')]=_0x3c4873['body'][_0x8fbf('0x63')]||_0x3c4873[_0x8fbf('0x64')]['id'];_0x4b6fc4[_0x8fbf('0x65')]['id']=_0x3c4873[_0x8fbf('0x5b')][_0x8fbf('0x63')];return db[_0x8fbf('0x3e')][_0x8fbf('0x5d')]({'where':{'id':_0x3c4873['params']['id'],'UserId':null}})[_0x8fbf('0x23')](handleEntityNotFound(_0x20505d,null))['then'](saveUpdates(_0x3c4873[_0x8fbf('0x5b')],null))[_0x8fbf('0x23')](function(_0x3b04db){if(_0x3b04db){_0x4b6fc4[_0x8fbf('0x2b')]=_0x3b04db['get']({'plain':!![]});return db[_0x8fbf('0x66')][_0x8fbf('0x5d')]({'where':{'id':_0x3b04db[_0x8fbf('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x20505d,null))[_0x8fbf('0x23')](function(_0x524543){if(_0x524543){return _0x524543[_0x8fbf('0x5c')]({'UserId':_0x3c4873['body'][_0x8fbf('0x63')],'read1stAt':_[_0x8fbf('0x68')](_0x524543[_0x8fbf('0x69')])?moment()['format'](_0x8fbf('0x62')):undefined});}return null;})[_0x8fbf('0x23')](function(_0x2d0469){if(_0x2d0469){_0x4b6fc4[_0x8fbf('0x6a')]=_0x2d0469[_0x8fbf('0x6b')]({'plain':!![]});interaction_log['info'](_0x8fbf('0x6c'),_0x3c4873[_0x8fbf('0x64')]['id'],_0x3c4873['user'][_0x8fbf('0x42')],_0x3c4873[_0x8fbf('0x64')][_0x8fbf('0x6d')],_0x4b6fc4[_0x8fbf('0x6a')]['id'],_0x3c4873[_0x8fbf('0x5b')]?JSON[_0x8fbf('0x28')](_0x3c4873['body']):_0x8fbf('0x6e'));return respondWithRpcPromise(_0x8fbf('0x6f'),_0x8fbf('0x70'),_0x4b6fc4);}return null;})['then'](function(_0x1d3597){var _0x527549=_0x8fbf('0x71')+_0x1d3597[_0x8fbf('0x2b')]['ContactId'];return db[_0x8fbf('0x72')][_0x8fbf('0x43')](_0x527549,{'type':db['Sequelize'][_0x8fbf('0x73')][_0x8fbf('0x74')],'raw':!![]})[_0x8fbf('0x23')](function(_0xf570c3){return _0xf570c3;});})[_0x8fbf('0x23')](function(_0x19520a){if(_0x19520a){_0x4b6fc4[_0x8fbf('0x2b')][_0x8fbf('0x75')]=_0x19520a[0x0];if(!_0x3c4873['body'][_0x8fbf('0x63')])return;return db['User']['find']({'where':{'id':_0x3c4873['body'][_0x8fbf('0x63')],'role':'agent'},'attributes':['id','name',_0x8fbf('0x76'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0xbd0eda){if(!_0xbd0eda)return null;_0x4b6fc4[_0x8fbf('0x2b')][_0x8fbf('0x65')]=_0xbd0eda;return _0x4b6fc4;})[_0x8fbf('0x23')](function(_0x1188a6){if(_0x1188a6){if(_0x3c4873[_0x8fbf('0x5b')][_0x8fbf('0x77')]){_0x4b6fc4[_0x8fbf('0x2b')]['interface']=util[_0x8fbf('0x78')](_0x8fbf('0x79'),_0x3c4873[_0x8fbf('0x64')][_0x8fbf('0x42')]);_0x4b6fc4[_0x8fbf('0x2b')][_0x8fbf('0x7a')]=_0x4b6fc4[_0x8fbf('0x7a')];_0x4b6fc4[_0x8fbf('0x2b')][_0x8fbf('0x7b')]=_0x4b6fc4[_0x8fbf('0x7a')];_0x4b6fc4[_0x8fbf('0x2b')]['event']=_0x8fbf('0x7c');return respondWithRpcPromise(_0x8fbf('0x7d'),'EventManager',{'event':_0x8fbf('0x7e'),'message':_[_0x8fbf('0x50')](_0x4b6fc4[_0x8fbf('0x2b')],JSON['parse'](_0x4b6fc4[_0x8fbf('0x6a')][_0x8fbf('0x7f')]))},client9002)[_0x8fbf('0x23')](function(){return _0x4b6fc4;});}return _0x4b6fc4;}return null;})['then'](respondWithResult(_0x20505d,null))[_0x8fbf('0x59')](handleError(_0x20505d,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x8fbf('0x37')]=function(_0x4a73a9,_0x54ea08,_0x49da9c){var _0x354a31={'agent':{},'channel':'chat'};if(_0x4a73a9['body']['id']){delete _0x4a73a9['body']['id'];}_0x4a73a9[_0x8fbf('0x5b')][_0x8fbf('0x63')]=_0x4a73a9[_0x8fbf('0x5b')][_0x8fbf('0x63')]||_0x4a73a9[_0x8fbf('0x64')]['id'];_0x354a31['agent']['id']=_0x4a73a9['body'][_0x8fbf('0x63')];return db['ChatMessage'][_0x8fbf('0x5d')]({'where':{'id':_0x4a73a9['params']['id'],'UserId':null}})[_0x8fbf('0x23')](handleEntityNotFound(_0x54ea08,null))[_0x8fbf('0x23')](function(_0x578ead){if(_0x578ead){_0x354a31[_0x8fbf('0x2b')]=_0x578ead[_0x8fbf('0x6b')]({'plain':!![]});return db[_0x8fbf('0x66')][_0x8fbf('0x5d')]({'where':{'id':_0x578ead[_0x8fbf('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x54ea08,null))[_0x8fbf('0x23')](function(_0x3b4abf){if(_0x3b4abf){_0x354a31[_0x8fbf('0x6a')]=_0x3b4abf[_0x8fbf('0x6b')]({'plain':!![]});interaction_log[_0x8fbf('0x80')](_0x8fbf('0x81'),_0x4a73a9[_0x8fbf('0x64')]['id'],_0x4a73a9[_0x8fbf('0x64')][_0x8fbf('0x42')],_0x4a73a9[_0x8fbf('0x64')]['role'],_0x354a31[_0x8fbf('0x6a')]['id'],_0x4a73a9[_0x8fbf('0x5b')]?JSON[_0x8fbf('0x28')](_0x4a73a9[_0x8fbf('0x5b')]):_0x8fbf('0x6e'));return respondWithRpcPromise(_0x8fbf('0x82'),_0x8fbf('0x83'),_0x354a31);}return null;})[_0x8fbf('0x23')](function(_0x305905){var _0x2f7eda=_0x8fbf('0x71')+_0x305905['message'][_0x8fbf('0x84')];return db[_0x8fbf('0x72')][_0x8fbf('0x43')](_0x2f7eda,{'type':db[_0x8fbf('0x85')][_0x8fbf('0x73')][_0x8fbf('0x74')],'raw':!![]})[_0x8fbf('0x23')](function(_0x65cb94){return _0x65cb94;});})['then'](function(_0x53f5e2){if(_0x53f5e2){_0x354a31[_0x8fbf('0x2b')]['contact']=_0x53f5e2[0x0];if(!_0x4a73a9[_0x8fbf('0x5b')]['UserId'])return;return db[_0x8fbf('0x86')][_0x8fbf('0x5d')]({'where':{'id':_0x4a73a9['body'][_0x8fbf('0x63')],'role':'agent'},'attributes':['id',_0x8fbf('0x42'),_0x8fbf('0x76'),_0x8fbf('0x87'),'internal'],'raw':!![]});}return null;})[_0x8fbf('0x23')](function(_0x5ef978){if(!_0x5ef978)return null;_0x354a31[_0x8fbf('0x2b')][_0x8fbf('0x65')]=_0x5ef978;return _0x354a31;})[_0x8fbf('0x23')](function(_0xe763f7){if(_0xe763f7){_0xe763f7[_0x8fbf('0x2b')][_0x8fbf('0x88')]=util[_0x8fbf('0x78')](_0x8fbf('0x79'),_0x4a73a9[_0x8fbf('0x64')][_0x8fbf('0x42')]);_0xe763f7[_0x8fbf('0x2b')]['channel']=_0x354a31['channel'];_0xe763f7[_0x8fbf('0x2b')][_0x8fbf('0x7b')]=_0x354a31[_0x8fbf('0x7a')];_0xe763f7['message'][_0x8fbf('0x89')]=_0x8fbf('0x37');respondWithRpcPromise(_0x8fbf('0x7d'),_0x8fbf('0x7d'),{'event':_0x8fbf('0x8a'),'message':_['merge'](_0x354a31[_0x8fbf('0x2b')],JSON[_0x8fbf('0x8b')](_0x354a31[_0x8fbf('0x6a')][_0x8fbf('0x7f')]))},client9002);return _0x354a31;}return null;})['then'](respondWithResult(_0x54ea08,null))['catch'](handleError(_0x54ea08,null));};
\ No newline at end of file
+var _0xc07f=['nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','find','create','body','params','chat-interactions','accept','chat','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteractionId','isNil','read1stAt','interaction','get','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','ChatInteraction','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','contact','User','email','EventManager','rejectmessage','formData','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','register','jayson/promise','client','http','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','name','send','map','ChatMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length'];(function(_0x3f5fe8,_0x578da8){var _0x18c478=function(_0x4708ef){while(--_0x4708ef){_0x3f5fe8['push'](_0x3f5fe8['shift']());}};_0x18c478(++_0x578da8);}(_0xc07f,0x1c3));var _0xfc07=function(_0x53fa74,_0xc84045){_0x53fa74=_0x53fa74-0x0;var _0x46e1b5=_0xc07f[_0x53fa74];return _0x46e1b5;};'use strict';var emlformat=require(_0xfc07('0x0'));var rimraf=require(_0xfc07('0x1'));var zipdir=require(_0xfc07('0x2'));var jsonpatch=require(_0xfc07('0x3'));var rp=require(_0xfc07('0x4'));var moment=require(_0xfc07('0x5'));var BPromise=require(_0xfc07('0x6'));var Mustache=require(_0xfc07('0x7'));var util=require(_0xfc07('0x8'));var path=require(_0xfc07('0x9'));var sox=require(_0xfc07('0xa'));var csv=require(_0xfc07('0xb'));var ejs=require(_0xfc07('0xc'));var fs=require('fs');var fs_extra=require(_0xfc07('0xd'));var _=require(_0xfc07('0xe'));var squel=require(_0xfc07('0xf'));var crypto=require(_0xfc07('0x10'));var jsforce=require(_0xfc07('0x11'));var deskjs=require(_0xfc07('0x12'));var toCsv=require(_0xfc07('0xb'));var querystring=require('querystring');var Papa=require(_0xfc07('0x13'));var Redis=require(_0xfc07('0x14'));var authService=require(_0xfc07('0x15'));var qs=require(_0xfc07('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfc07('0x17'))(_0xfc07('0x18'));var utils=require(_0xfc07('0x19'));var config=require(_0xfc07('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc07('0x1b'))['db'];config['redis']=_[_0xfc07('0x1c')](config[_0xfc07('0x1d')],{'host':_0xfc07('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfc07('0x1d')]));require('./chatMessage.socket')[_0xfc07('0x1f')](socket);var jayson=require(_0xfc07('0x20'));var client=jayson[_0xfc07('0x21')][_0xfc07('0x22')]({'port':0x232c});var client9002=jayson['client'][_0xfc07('0x22')]({'port':0x232a});function respondWithRpcPromise(_0xc47fba,_0x1daf61,_0x195e1f,_0x4111d5){return new BPromise(function(_0x210e44,_0x5eccba){var _0x306421=_0x4111d5||client;return _0x306421['request'](_0xc47fba,_0x195e1f)[_0xfc07('0x23')](function(_0x38f6cb){logger['info'](_0xfc07('0x24'),_0x1daf61,_0xfc07('0x25'));logger[_0xfc07('0x26')](_0xfc07('0x27'),_0x1daf61,_0xfc07('0x25'),JSON[_0xfc07('0x28')](_0x38f6cb));if(_0x38f6cb[_0xfc07('0x29')]){if(_0x38f6cb['error'][_0xfc07('0x2a')]===0x1f4){logger[_0xfc07('0x29')](_0xfc07('0x24'),_0x1daf61,_0x38f6cb['error']['message']);return _0x5eccba(_0x38f6cb[_0xfc07('0x29')][_0xfc07('0x2b')]);}logger['error'](_0xfc07('0x24'),_0x1daf61,_0x38f6cb[_0xfc07('0x29')]['message']);return _0x210e44(_0x38f6cb[_0xfc07('0x29')][_0xfc07('0x2b')]);}else{logger[_0xfc07('0x2c')]('ChatMessage,\x20%s,\x20%s',_0x1daf61,_0xfc07('0x25'));_0x210e44(_0x38f6cb[_0xfc07('0x2d')]['message']);}})[_0xfc07('0x2e')](function(_0xdd47cc){logger[_0xfc07('0x29')](_0xfc07('0x24'),_0x1daf61,_0xdd47cc);_0x5eccba(_0xdd47cc);});});}function respondWithStatusCode(_0x38b4a3,_0x47480a){_0x47480a=_0x47480a||0xcc;return function(_0x2f21c5){if(_0x2f21c5){return _0x38b4a3[_0xfc07('0x2f')](_0x47480a);}return _0x38b4a3[_0xfc07('0x30')](_0x47480a)[_0xfc07('0x31')]();};}function respondWithResult(_0x5c7bec,_0x2642c4){_0x2642c4=_0x2642c4||0xc8;return function(_0x56c891){if(_0x56c891){return _0x5c7bec[_0xfc07('0x30')](_0x2642c4)[_0xfc07('0x32')](_0x56c891);}};}function respondWithFilteredResult(_0x4d2195,_0x32d1e8){return function(_0x554f66){if(_0x554f66){var _0x35a9ec=typeof _0x32d1e8[_0xfc07('0x33')]===_0xfc07('0x34')&&typeof _0x32d1e8[_0xfc07('0x35')]===_0xfc07('0x34');var _0xb44f92=_0x554f66[_0xfc07('0x36')];var _0x4aa64d=_0x35a9ec?0x0:_0x32d1e8[_0xfc07('0x33')];var _0x11ee31=_0x35a9ec?_0x554f66['count']:_0x32d1e8[_0xfc07('0x33')]+_0x32d1e8[_0xfc07('0x35')];var _0x5cfae3;if(_0x11ee31>=_0xb44f92){_0x11ee31=_0xb44f92;_0x5cfae3=0xc8;}else{_0x5cfae3=0xce;}_0x4d2195['status'](_0x5cfae3);return _0x4d2195[_0xfc07('0x37')](_0xfc07('0x38'),_0x4aa64d+'-'+_0x11ee31+'/'+_0xb44f92)['json'](_0x554f66);}return null;};}function patchUpdates(_0x941bab){return function(_0xb2611c){try{jsonpatch['apply'](_0xb2611c,_0x941bab,!![]);}catch(_0x11a744){return BPromise[_0xfc07('0x39')](_0x11a744);}return _0xb2611c[_0xfc07('0x3a')]();};}function saveUpdates(_0x5d9d58,_0x4e7a02){return function(_0x1dde05){if(_0x1dde05){return _0x1dde05[_0xfc07('0x3b')](_0x5d9d58)['then'](function(_0x6d5232){return _0x6d5232;});}return null;};}function removeEntity(_0x5f3459,_0x56c08f){return function(_0x1fc982){if(_0x1fc982){return _0x1fc982[_0xfc07('0x3c')]()[_0xfc07('0x23')](function(){_0x5f3459[_0xfc07('0x30')](0xcc)[_0xfc07('0x31')]();});}};}function handleEntityNotFound(_0x503dc5,_0x538b27){return function(_0x51fcd6){if(!_0x51fcd6){_0x503dc5['sendStatus'](0x194);}return _0x51fcd6;};}function handleError(_0x4cffca,_0x269f1b){_0x269f1b=_0x269f1b||0x1f4;return function(_0x2f7aae){logger[_0xfc07('0x29')](_0x2f7aae['stack']);if(_0x2f7aae[_0xfc07('0x3d')]){delete _0x2f7aae[_0xfc07('0x3d')];}_0x4cffca[_0xfc07('0x30')](_0x269f1b)[_0xfc07('0x3e')](_0x2f7aae);};}exports['index']=function(_0x481877,_0x1ce48b){var _0x2da40f={},_0x25bf72={},_0x4d2c19={'count':0x0,'rows':[]};var _0x334fe8=_[_0xfc07('0x3f')](db[_0xfc07('0x40')][_0xfc07('0x41')],function(_0x2fdaf9){return{'name':_0x2fdaf9[_0xfc07('0x42')],'type':_0x2fdaf9[_0xfc07('0x43')][_0xfc07('0x44')]};});_0x25bf72['model']=_[_0xfc07('0x3f')](_0x334fe8,_0xfc07('0x3d'));_0x25bf72[_0xfc07('0x45')]=_[_0xfc07('0x46')](_0x481877[_0xfc07('0x45')]);_0x25bf72[_0xfc07('0x47')]=_[_0xfc07('0x48')](_0x25bf72['model'],_0x25bf72['query']);_0x2da40f[_0xfc07('0x49')]=_[_0xfc07('0x48')](_0x25bf72[_0xfc07('0x4a')],qs[_0xfc07('0x4b')](_0x481877[_0xfc07('0x45')]['fields']));_0x2da40f['attributes']=_0x2da40f[_0xfc07('0x49')][_0xfc07('0x4c')]?_0x2da40f[_0xfc07('0x49')]:_0x25bf72[_0xfc07('0x4a')];if(!_0x481877['query']['hasOwnProperty'](_0xfc07('0x4d'))){_0x2da40f[_0xfc07('0x35')]=qs[_0xfc07('0x35')](_0x481877[_0xfc07('0x45')][_0xfc07('0x35')]);_0x2da40f[_0xfc07('0x33')]=qs[_0xfc07('0x33')](_0x481877[_0xfc07('0x45')][_0xfc07('0x33')]);}_0x2da40f[_0xfc07('0x4e')]=qs['sort'](_0x481877['query'][_0xfc07('0x4f')]);_0x2da40f[_0xfc07('0x50')]=qs[_0xfc07('0x47')](_[_0xfc07('0x51')](_0x481877[_0xfc07('0x45')],_0x25bf72[_0xfc07('0x47')]),_0x334fe8);if(_0x481877['query']['filter']){_0x2da40f['where']=_[_0xfc07('0x52')](_0x2da40f[_0xfc07('0x50')],{'$or':_[_0xfc07('0x3f')](_0x334fe8,function(_0x4e2e32){if(_0x4e2e32[_0xfc07('0x43')]!==_0xfc07('0x53')){var _0x24bcf8={};_0x24bcf8[_0x4e2e32[_0xfc07('0x3d')]]={'$like':'%'+_0x481877[_0xfc07('0x45')][_0xfc07('0x54')]+'%'};return _0x24bcf8;}})});}_0x2da40f=_[_0xfc07('0x52')]({},_0x2da40f,_0x481877[_0xfc07('0x55')]);var _0x525a42={'where':_0x2da40f[_0xfc07('0x50')]};return db[_0xfc07('0x40')]['count'](_0x525a42)[_0xfc07('0x23')](function(_0x3e4633){_0x4d2c19[_0xfc07('0x36')]=_0x3e4633;if(_0x481877[_0xfc07('0x45')][_0xfc07('0x56')]){_0x2da40f[_0xfc07('0x57')]=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x2da40f);})[_0xfc07('0x23')](function(_0x2926be){_0x4d2c19['rows']=_0x2926be;return _0x4d2c19;})[_0xfc07('0x23')](respondWithFilteredResult(_0x1ce48b,_0x2da40f))['catch'](handleError(_0x1ce48b,null));};exports['show']=function(_0x24fea4,_0x4e4895){var _0x3b2604={'raw':!![],'where':{'id':_0x24fea4['params']['id']}},_0x449878={};_0x449878[_0xfc07('0x4a')]=_[_0xfc07('0x46')](db[_0xfc07('0x40')][_0xfc07('0x41')]);_0x449878[_0xfc07('0x45')]=_[_0xfc07('0x46')](_0x24fea4[_0xfc07('0x45')]);_0x449878[_0xfc07('0x47')]=_['intersection'](_0x449878[_0xfc07('0x4a')],_0x449878[_0xfc07('0x45')]);_0x3b2604['attributes']=_['intersection'](_0x449878[_0xfc07('0x4a')],qs[_0xfc07('0x4b')](_0x24fea4[_0xfc07('0x45')][_0xfc07('0x4b')]));_0x3b2604[_0xfc07('0x49')]=_0x3b2604[_0xfc07('0x49')]['length']?_0x3b2604[_0xfc07('0x49')]:_0x449878[_0xfc07('0x4a')];if(_0x24fea4[_0xfc07('0x45')]['includeAll']){_0x3b2604[_0xfc07('0x57')]=[{'all':!![]}];}_0x3b2604=_[_0xfc07('0x52')]({},_0x3b2604,_0x24fea4[_0xfc07('0x55')]);return db[_0xfc07('0x40')][_0xfc07('0x58')](_0x3b2604)[_0xfc07('0x23')](handleEntityNotFound(_0x4e4895,null))[_0xfc07('0x23')](respondWithResult(_0x4e4895,null))['catch'](handleError(_0x4e4895,null));};exports[_0xfc07('0x59')]=function(_0x2f5291,_0x1f6816){return db['ChatMessage'][_0xfc07('0x59')](_0x2f5291[_0xfc07('0x5a')],{})['then'](respondWithResult(_0x1f6816,0xc9))[_0xfc07('0x2e')](handleError(_0x1f6816,null));};exports[_0xfc07('0x3b')]=function(_0x3bb352,_0x43510f){if(_0x3bb352['body']['id']){delete _0x3bb352[_0xfc07('0x5a')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x3bb352[_0xfc07('0x5b')]['id']}})[_0xfc07('0x23')](handleEntityNotFound(_0x43510f,null))[_0xfc07('0x23')](saveUpdates(_0x3bb352['body'],null))[_0xfc07('0x23')](respondWithResult(_0x43510f,null))[_0xfc07('0x2e')](handleError(_0x43510f,null));};exports[_0xfc07('0x3c')]=function(_0x54ff53,_0x27b938){return db['ChatMessage'][_0xfc07('0x58')]({'where':{'id':_0x54ff53['params']['id']}})['then'](handleEntityNotFound(_0x27b938,null))[_0xfc07('0x23')](removeEntity(_0x27b938,null))[_0xfc07('0x2e')](handleError(_0x27b938,null));};exports['describe']=function(_0x3a0c57,_0x37ee04){return db[_0xfc07('0x40')]['describe']()['then'](respondWithResult(_0x37ee04,null))['catch'](handleError(_0x37ee04,null));};var interaction_log=require(_0xfc07('0x17'))(_0xfc07('0x5c'));exports[_0xfc07('0x5d')]=function(_0x269732,_0x262ca7,_0x313fcd){var _0xd8445f={'agent':{},'channel':_0xfc07('0x5e')};if(_0x269732[_0xfc07('0x5a')]['id']){delete _0x269732[_0xfc07('0x5a')]['id'];}_0x269732[_0xfc07('0x5a')][_0xfc07('0x5f')]=!![];_0x269732[_0xfc07('0x5a')]['readAt']=moment()[_0xfc07('0x60')](_0xfc07('0x61'));_0x269732[_0xfc07('0x5a')]['UserId']=_0x269732['body'][_0xfc07('0x62')]||_0x269732[_0xfc07('0x63')]['id'];_0xd8445f[_0xfc07('0x64')]['id']=_0x269732[_0xfc07('0x5a')][_0xfc07('0x62')];return db[_0xfc07('0x40')][_0xfc07('0x58')]({'where':{'id':_0x269732[_0xfc07('0x5b')]['id'],'UserId':null}})[_0xfc07('0x23')](handleEntityNotFound(_0x262ca7,null))[_0xfc07('0x23')](saveUpdates(_0x269732[_0xfc07('0x5a')],null))[_0xfc07('0x23')](function(_0x5b0f1f){if(_0x5b0f1f){_0xd8445f[_0xfc07('0x2b')]=_0x5b0f1f['get']({'plain':!![]});return db['ChatInteraction'][_0xfc07('0x58')]({'where':{'id':_0x5b0f1f[_0xfc07('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x262ca7,null))[_0xfc07('0x23')](function(_0x5da41e){if(_0x5da41e){return _0x5da41e['update']({'UserId':_0x269732['body'][_0xfc07('0x62')],'read1stAt':_[_0xfc07('0x66')](_0x5da41e[_0xfc07('0x67')])?moment()[_0xfc07('0x60')](_0xfc07('0x61')):undefined});}return null;})[_0xfc07('0x23')](function(_0x1df928){if(_0x1df928){_0xd8445f[_0xfc07('0x68')]=_0x1df928[_0xfc07('0x69')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x269732[_0xfc07('0x63')]['id'],_0x269732[_0xfc07('0x63')][_0xfc07('0x3d')],_0x269732[_0xfc07('0x63')][_0xfc07('0x6a')],_0xd8445f[_0xfc07('0x68')]['id'],_0x269732[_0xfc07('0x5a')]?JSON[_0xfc07('0x28')](_0x269732[_0xfc07('0x5a')]):'null');return respondWithRpcPromise(_0xfc07('0x6b'),_0xfc07('0x6c'),_0xd8445f);}return null;})[_0xfc07('0x23')](function(_0x1a2835){var _0x29cca5=_0xfc07('0x6d')+_0x1a2835[_0xfc07('0x2b')]['ContactId'];return db[_0xfc07('0x6e')][_0xfc07('0x45')](_0x29cca5,{'type':db[_0xfc07('0x6f')][_0xfc07('0x70')][_0xfc07('0x71')],'raw':!![]})[_0xfc07('0x23')](function(_0x476dde){return _0x476dde;});})[_0xfc07('0x23')](function(_0x1eb738){if(_0x1eb738){_0xd8445f[_0xfc07('0x2b')]['contact']=_0x1eb738[0x0];if(!_0x269732[_0xfc07('0x5a')][_0xfc07('0x62')])return;return db['User'][_0xfc07('0x58')]({'where':{'id':_0x269732[_0xfc07('0x5a')][_0xfc07('0x62')],'role':_0xfc07('0x64')},'attributes':['id','name',_0xfc07('0x72'),'email',_0xfc07('0x73')],'raw':!![]});}return null;})['then'](function(_0x3f3e3b){if(!_0x3f3e3b)return null;_0xd8445f[_0xfc07('0x2b')]['agent']=_0x3f3e3b;return _0xd8445f;})['then'](function(_0x5e0ea2){if(_0x5e0ea2){if(_0x269732['body'][_0xfc07('0x74')]){_0xd8445f['message'][_0xfc07('0x75')]=util[_0xfc07('0x60')](_0xfc07('0x76'),_0x269732[_0xfc07('0x63')][_0xfc07('0x3d')]);_0xd8445f[_0xfc07('0x2b')][_0xfc07('0x77')]=_0xd8445f[_0xfc07('0x77')];_0xd8445f['message'][_0xfc07('0x78')]=_0xd8445f[_0xfc07('0x77')];_0xd8445f[_0xfc07('0x2b')][_0xfc07('0x79')]='accept';return respondWithRpcPromise('EventManager','EventManager',{'event':'acceptmessage','message':_['merge'](_0xd8445f[_0xfc07('0x2b')],JSON['parse'](_0xd8445f[_0xfc07('0x68')]['formData']))},client9002)[_0xfc07('0x23')](function(){return _0xd8445f;});}return _0xd8445f;}return null;})[_0xfc07('0x23')](respondWithResult(_0x262ca7,null))[_0xfc07('0x2e')](handleError(_0x262ca7,null));};var interaction_log=require(_0xfc07('0x17'))(_0xfc07('0x5c'));exports[_0xfc07('0x39')]=function(_0x9fbf0c,_0x155f78,_0x3acc1a){var _0x1c2ddf={'agent':{},'channel':_0xfc07('0x5e')};if(_0x9fbf0c['body']['id']){delete _0x9fbf0c[_0xfc07('0x5a')]['id'];}_0x9fbf0c['body'][_0xfc07('0x62')]=_0x9fbf0c[_0xfc07('0x5a')][_0xfc07('0x62')]||_0x9fbf0c[_0xfc07('0x63')]['id'];_0x1c2ddf[_0xfc07('0x64')]['id']=_0x9fbf0c[_0xfc07('0x5a')]['UserId'];return db[_0xfc07('0x40')][_0xfc07('0x58')]({'where':{'id':_0x9fbf0c['params']['id'],'UserId':null}})[_0xfc07('0x23')](handleEntityNotFound(_0x155f78,null))[_0xfc07('0x23')](function(_0x483809){if(_0x483809){_0x1c2ddf['message']=_0x483809[_0xfc07('0x69')]({'plain':!![]});return db[_0xfc07('0x7a')][_0xfc07('0x58')]({'where':{'id':_0x483809[_0xfc07('0x65')]}});}return null;})[_0xfc07('0x23')](handleEntityNotFound(_0x155f78,null))[_0xfc07('0x23')](function(_0x3a2eb6){if(_0x3a2eb6){_0x1c2ddf[_0xfc07('0x68')]=_0x3a2eb6['get']({'plain':!![]});interaction_log[_0xfc07('0x2c')](_0xfc07('0x7b'),_0x9fbf0c[_0xfc07('0x63')]['id'],_0x9fbf0c[_0xfc07('0x63')]['name'],_0x9fbf0c[_0xfc07('0x63')]['role'],_0x1c2ddf[_0xfc07('0x68')]['id'],_0x9fbf0c[_0xfc07('0x5a')]?JSON[_0xfc07('0x28')](_0x9fbf0c[_0xfc07('0x5a')]):_0xfc07('0x7c'));return respondWithRpcPromise(_0xfc07('0x7d'),'rejectMessage',_0x1c2ddf);}return null;})[_0xfc07('0x23')](function(_0x37bf5d){var _0xa455fd=_0xfc07('0x6d')+_0x37bf5d['message']['ContactId'];return db[_0xfc07('0x6e')]['query'](_0xa455fd,{'type':db['Sequelize'][_0xfc07('0x70')][_0xfc07('0x71')],'raw':!![]})[_0xfc07('0x23')](function(_0x291a0c){return _0x291a0c;});})[_0xfc07('0x23')](function(_0x4f0756){if(_0x4f0756){_0x1c2ddf[_0xfc07('0x2b')][_0xfc07('0x7e')]=_0x4f0756[0x0];if(!_0x9fbf0c[_0xfc07('0x5a')][_0xfc07('0x62')])return;return db[_0xfc07('0x7f')]['find']({'where':{'id':_0x9fbf0c['body']['UserId'],'role':'agent'},'attributes':['id',_0xfc07('0x3d'),_0xfc07('0x72'),_0xfc07('0x80'),_0xfc07('0x73')],'raw':!![]});}return null;})[_0xfc07('0x23')](function(_0x595a34){if(!_0x595a34)return null;_0x1c2ddf[_0xfc07('0x2b')]['agent']=_0x595a34;return _0x1c2ddf;})['then'](function(_0x3640b5){if(_0x3640b5){_0x3640b5['message']['interface']=util[_0xfc07('0x60')](_0xfc07('0x76'),_0x9fbf0c[_0xfc07('0x63')][_0xfc07('0x3d')]);_0x3640b5['message'][_0xfc07('0x77')]=_0x1c2ddf[_0xfc07('0x77')];_0x3640b5[_0xfc07('0x2b')]['motionChannel']=_0x1c2ddf[_0xfc07('0x77')];_0x3640b5[_0xfc07('0x2b')]['event']=_0xfc07('0x39');respondWithRpcPromise(_0xfc07('0x81'),_0xfc07('0x81'),{'event':_0xfc07('0x82'),'message':_['merge'](_0x1c2ddf[_0xfc07('0x2b')],JSON['parse'](_0x1c2ddf['interaction'][_0xfc07('0x83')]))},client9002);return _0x1c2ddf;}return null;})[_0xfc07('0x23')](respondWithResult(_0x155f78,null))[_0xfc07('0x2e')](handleError(_0x155f78,null));};
\ No newline at end of file
index d8cf3f5..359e9c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc172=['hook','exports','events','../../mysqldb','save','update','emit'];(function(_0x55e653,_0x30a4d3){var _0x26336d=function(_0x2cd2b8){while(--_0x2cd2b8){_0x55e653['push'](_0x55e653['shift']());}};_0x26336d(++_0x30a4d3);}(_0xc172,0x183));var _0x2c17=function(_0x4aaba0,_0x3036ae){_0x4aaba0=_0x4aaba0-0x0;var _0xfc48b=_0xc172[_0x4aaba0];return _0xfc48b;};'use strict';var EventEmitter=require(_0x2c17('0x0'));var ChatMessage=require(_0x2c17('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2c17('0x2'),'afterUpdate':_0x2c17('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1e199a){return function(_0x203c6c,_0x585e80,_0x577650){ChatMessageEvents['emit'](_0x1e199a+':'+_0x203c6c['id'],_0x203c6c);ChatMessageEvents[_0x2c17('0x4')](_0x1e199a,_0x203c6c);_0x577650(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x2c17('0x5')](e,emitEvent(event));}}module[_0x2c17('0x6')]=ChatMessageEvents;
\ No newline at end of file
+var _0x1075=['hasOwnProperty','exports','events','ChatMessage','update','remove','emit'];(function(_0x36d567,_0x5d9b45){var _0x4d4ac2=function(_0x475402){while(--_0x475402){_0x36d567['push'](_0x36d567['shift']());}};_0x4d4ac2(++_0x5d9b45);}(_0x1075,0xf0));var _0x5107=function(_0x413f87,_0x12c5c0){_0x413f87=_0x413f87-0x0;var _0xb4ae8c=_0x1075[_0x413f87];return _0xb4ae8c;};'use strict';var EventEmitter=require(_0x5107('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x5107('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x5107('0x2'),'afterDestroy':_0x5107('0x3')};function emitEvent(_0x31bb4a){return function(_0xc2311,_0x3330f4,_0x14de1b){ChatMessageEvents[_0x5107('0x4')](_0x31bb4a+':'+_0xc2311['id'],_0xc2311);ChatMessageEvents[_0x5107('0x4')](_0x31bb4a,_0xc2311);_0x14de1b(null);};}for(var e in events){if(events[_0x5107('0x5')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0x5107('0x6')]=ChatMessageEvents;
\ No newline at end of file
index 429fb9a..f72dd2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9425=['lodash','util','api','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','ChatMessage','fti_chat_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','findOne','ChatInteractionId','then','update','createdAt','catch','utf8mb4','utf8mb4_unicode_ci'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9425,0x1cb));var _0x5942=function(_0x28f9dc,_0x23a08e){_0x28f9dc=_0x28f9dc-0x0;var _0x11f831=_0x9425[_0x28f9dc];return _0x11f831;};'use strict';var _=require(_0x5942('0x0'));var util=require(_0x5942('0x1'));var logger=require('../../config/logger')(_0x5942('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5942('0x3'));var fs=require('fs');var path=require(_0x5942('0x4'));var rimraf=require(_0x5942('0x5'));var config=require(_0x5942('0x6'));var attributes=require(_0x5942('0x7'));module['exports']=function(_0x559ec3,_0x4aaf09){return _0x559ec3['define'](_0x5942('0x8'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0x5942('0x9'),'fields':[_0x5942('0xa')],'type':_0x5942('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x275319,_0x25bf8a,_0x66de5c){var _0x277551=_0x559ec3[_0x5942('0xc')];var _0x399d34=_0x275319['get']({'plain':!![]});if(_0x399d34[_0x5942('0xd')][_0x5942('0xe')]()==='in'||_0x399d34[_0x5942('0xd')][_0x5942('0xe')]()===_0x5942('0xf')&&!_0x399d34[_0x5942('0x10')]&&!_[_0x5942('0x11')](_0x399d34[_0x5942('0x12')])){_0x277551['ChatInteraction'][_0x5942('0x13')]({'where':{'id':_0x399d34[_0x5942('0x14')]}})[_0x5942('0x15')](function(_0x2c6861){if(_0x2c6861){_0x2c6861[_0x5942('0x16')]({'lastMsgAt':_0x399d34[_0x5942('0x17')],'lastMsgDirection':_0x399d34['direction']['toLowerCase']()});}})[_0x5942('0x18')](function(_0x411da4){console['error'](_0x411da4);});}_0x66de5c();}},'charset':_0x5942('0x19'),'collate':_0x5942('0x1a')});};
\ No newline at end of file
+var _0x2016=['createdAt','error','utf8mb4','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./chatMessage.attributes','define','ChatMessage','chat_messages','body','FULLTEXT','direction','toLowerCase','secret','isNil','findOne','then','update'];(function(_0x513051,_0x575b8c){var _0x571744=function(_0x25eaf2){while(--_0x25eaf2){_0x513051['push'](_0x513051['shift']());}};_0x571744(++_0x575b8c);}(_0x2016,0xf5));var _0x6201=function(_0x20538b,_0x1f1e33){_0x20538b=_0x20538b-0x0;var _0x3d3afa=_0x2016[_0x20538b];return _0x3d3afa;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6201('0x0'))(_0x6201('0x1'));var moment=require('moment');var BPromise=require(_0x6201('0x2'));var rp=require(_0x6201('0x3'));var fs=require('fs');var path=require(_0x6201('0x4'));var rimraf=require('rimraf');var config=require(_0x6201('0x5'));var attributes=require(_0x6201('0x6'));module['exports']=function(_0x4dd813,_0x412364){return _0x4dd813[_0x6201('0x7')](_0x6201('0x8'),attributes,{'tableName':_0x6201('0x9'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x6201('0xa')],'type':_0x6201('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4e7c98,_0x403295,_0x27e607){var _0xbc0be=_0x4dd813['models'];var _0x2bcd44=_0x4e7c98['get']({'plain':!![]});if(_0x2bcd44[_0x6201('0xc')][_0x6201('0xd')]()==='in'||_0x2bcd44[_0x6201('0xc')][_0x6201('0xd')]()==='out'&&!_0x2bcd44[_0x6201('0xe')]&&!_[_0x6201('0xf')](_0x2bcd44['UserId'])){_0xbc0be['ChatInteraction'][_0x6201('0x10')]({'where':{'id':_0x2bcd44['ChatInteractionId']}})[_0x6201('0x11')](function(_0xa2f8c0){if(_0xa2f8c0){_0xa2f8c0[_0x6201('0x12')]({'lastMsgAt':_0x2bcd44[_0x6201('0x13')],'lastMsgDirection':_0x2bcd44[_0x6201('0xc')]['toLowerCase']()});}})['catch'](function(_0x233df9){console[_0x6201('0x14')](_0x233df9);});}_0x27e607();}},'charset':_0x6201('0x15'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index c9c53d3..b09db62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebe0=['stringify','error','code','message','info','result','catch','CreateChatMessage','ChatMessage','options','raw','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s'];(function(_0x9fe35d,_0x4b934f){var _0x3a0cc2=function(_0x48b512){while(--_0x48b512){_0x9fe35d['push'](_0x9fe35d['shift']());}};_0x3a0cc2(++_0x4b934f);}(_0xebe0,0x1eb));var _0x0ebe=function(_0x5482a6,_0x2b63ab){_0x5482a6=_0x5482a6-0x0;var _0x4f008c=_0xebe0[_0x5482a6];return _0x4f008c;};'use strict';var _=require(_0x0ebe('0x0'));var util=require(_0x0ebe('0x1'));var moment=require(_0x0ebe('0x2'));var BPromise=require(_0x0ebe('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0ebe('0x4'))['db'];var utils=require(_0x0ebe('0x5'));var logger=require(_0x0ebe('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0ebe('0x7'));var client=jayson['client'][_0x0ebe('0x8')]({'port':0x232a});config[_0x0ebe('0x9')]=_[_0x0ebe('0xa')](config[_0x0ebe('0x9')],{'host':_0x0ebe('0xb'),'port':0x18eb});var socket=require(_0x0ebe('0xc'))(new Redis(config[_0x0ebe('0x9')]));require(_0x0ebe('0xd'))[_0x0ebe('0xe')](socket);function respondWithRpcPromise(_0x427367,_0x57ad2d,_0x5dc246){return new BPromise(function(_0x5d7dd7,_0x54a546){return client[_0x0ebe('0xf')](_0x427367,_0x5dc246)[_0x0ebe('0x10')](function(_0x4a0350){logger['info'](_0x0ebe('0x11'),_0x57ad2d,_0x0ebe('0x12'));logger[_0x0ebe('0x13')](_0x0ebe('0x14'),_0x57ad2d,_0x0ebe('0x12'),JSON[_0x0ebe('0x15')](_0x4a0350));if(_0x4a0350[_0x0ebe('0x16')]){if(_0x4a0350[_0x0ebe('0x16')][_0x0ebe('0x17')]===0x1f4){logger['error'](_0x0ebe('0x11'),_0x57ad2d,_0x4a0350[_0x0ebe('0x16')][_0x0ebe('0x18')]);return _0x54a546(_0x4a0350['error'][_0x0ebe('0x18')]);}logger[_0x0ebe('0x16')]('ChatMessage,\x20%s,\x20%s',_0x57ad2d,_0x4a0350[_0x0ebe('0x16')][_0x0ebe('0x18')]);return _0x5d7dd7(_0x4a0350['error']['message']);}else{logger[_0x0ebe('0x19')](_0x0ebe('0x11'),_0x57ad2d,_0x0ebe('0x12'));_0x5d7dd7(_0x4a0350[_0x0ebe('0x1a')][_0x0ebe('0x18')]);}})[_0x0ebe('0x1b')](function(_0xd77bbb){logger['error'](_0x0ebe('0x11'),_0x57ad2d,_0xd77bbb);_0x54a546(_0xd77bbb);});});}exports[_0x0ebe('0x1c')]=function(_0x1c244a){var _0x202af9=this;return new Promise(function(_0x53245e,_0x368b03){return db[_0x0ebe('0x1d')]['create'](_0x1c244a['body'],{'raw':_0x1c244a['options']?_0x1c244a[_0x0ebe('0x1e')][_0x0ebe('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x5d40f3){logger[_0x0ebe('0x19')](_0x0ebe('0x1c'),_0x1c244a);logger['debug'](_0x0ebe('0x1c'),_0x1c244a,JSON[_0x0ebe('0x15')](_0x5d40f3));_0x53245e(_0x5d40f3);})[_0x0ebe('0x1b')](function(_0xab696c){logger[_0x0ebe('0x16')](_0x0ebe('0x1c'),_0xab696c[_0x0ebe('0x18')],_0x1c244a);_0x368b03(_0x202af9['error'](0x1f4,_0xab696c[_0x0ebe('0x18')]));});});};
\ No newline at end of file
+var _0xb6db=['create','body','options','raw','then','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','defaults','redis','./chatMessage.socket','register','request','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','ChatMessage,\x20%s,\x20%s','result','catch','CreateChatMessage','ChatMessage'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb6db,0xec));var _0xbb6d=function(_0x283c5a,_0x1cd8ec){_0x283c5a=_0x283c5a-0x0;var _0x2f7458=_0xb6db[_0x283c5a];return _0x2f7458;};'use strict';var _=require('lodash');var util=require(_0xbb6d('0x0'));var moment=require(_0xbb6d('0x1'));var BPromise=require(_0xbb6d('0x2'));var rs=require(_0xbb6d('0x3'));var fs=require('fs');var Redis=require(_0xbb6d('0x4'));var db=require(_0xbb6d('0x5'))['db'];var utils=require(_0xbb6d('0x6'));var logger=require(_0xbb6d('0x7'))('rpc');var config=require(_0xbb6d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbb6d('0x9')][_0xbb6d('0xa')]({'port':0x232a});config['redis']=_[_0xbb6d('0xb')](config[_0xbb6d('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbb6d('0xc')]));require(_0xbb6d('0xd'))[_0xbb6d('0xe')](socket);function respondWithRpcPromise(_0x1857f7,_0x59d5c7,_0x2b86bf){return new BPromise(function(_0x36955a,_0x5e4a22){return client[_0xbb6d('0xf')](_0x1857f7,_0x2b86bf)['then'](function(_0x4f5cc3){logger['info']('ChatMessage,\x20%s,\x20%s',_0x59d5c7,_0xbb6d('0x10'));logger['debug'](_0xbb6d('0x11'),_0x59d5c7,_0xbb6d('0x10'),JSON[_0xbb6d('0x12')](_0x4f5cc3));if(_0x4f5cc3[_0xbb6d('0x13')]){if(_0x4f5cc3['error'][_0xbb6d('0x14')]===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0x59d5c7,_0x4f5cc3[_0xbb6d('0x13')][_0xbb6d('0x15')]);return _0x5e4a22(_0x4f5cc3[_0xbb6d('0x13')][_0xbb6d('0x15')]);}logger[_0xbb6d('0x13')]('ChatMessage,\x20%s,\x20%s',_0x59d5c7,_0x4f5cc3['error'][_0xbb6d('0x15')]);return _0x36955a(_0x4f5cc3[_0xbb6d('0x13')][_0xbb6d('0x15')]);}else{logger[_0xbb6d('0x16')](_0xbb6d('0x17'),_0x59d5c7,_0xbb6d('0x10'));_0x36955a(_0x4f5cc3[_0xbb6d('0x18')]['message']);}})[_0xbb6d('0x19')](function(_0xd9a977){logger[_0xbb6d('0x13')](_0xbb6d('0x17'),_0x59d5c7,_0xd9a977);_0x5e4a22(_0xd9a977);});});}exports[_0xbb6d('0x1a')]=function(_0x16bc22){var _0x2b1ca9=this;return new Promise(function(_0x55c435,_0x1247a2){return db[_0xbb6d('0x1b')][_0xbb6d('0x1c')](_0x16bc22[_0xbb6d('0x1d')],{'raw':_0x16bc22['options']?_0x16bc22[_0xbb6d('0x1e')][_0xbb6d('0x1f')]===undefined?!![]:![]:!![]})[_0xbb6d('0x20')](function(_0x32eadd){logger[_0xbb6d('0x16')](_0xbb6d('0x1a'),_0x16bc22);logger['debug']('CreateChatMessage',_0x16bc22,JSON[_0xbb6d('0x12')](_0x32eadd));_0x55c435(_0x32eadd);})[_0xbb6d('0x19')](function(_0x366182){logger[_0xbb6d('0x13')](_0xbb6d('0x1a'),_0x366182[_0xbb6d('0x15')],_0x16bc22);_0x1247a2(_0x2b1ca9[_0xbb6d('0x13')](0x1f4,_0x366182[_0xbb6d('0x15')]));});});};
\ No newline at end of file
index 1af4a3f..ec01b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2123=['./chatMessage.events','save','remove','update','emit','removeListener','register','length'];(function(_0x445c92,_0x23fbbc){var _0x455c22=function(_0x512638){while(--_0x512638){_0x445c92['push'](_0x445c92['shift']());}};_0x455c22(++_0x23fbbc);}(_0x2123,0x190));var _0x3212=function(_0x46867e,_0x90e3a2){_0x46867e=_0x46867e-0x0;var _0x19ff44=_0x2123[_0x46867e];return _0x19ff44;};'use strict';var ChatMessageEvents=require(_0x3212('0x0'));var events=[_0x3212('0x1'),_0x3212('0x2'),_0x3212('0x3')];function createListener(_0x7158b8,_0x2ff863){return function(_0x8c047){_0x2ff863[_0x3212('0x4')](_0x7158b8,_0x8c047);};}function removeListener(_0x304f80,_0x6ca653){return function(){ChatMessageEvents[_0x3212('0x5')](_0x304f80,_0x6ca653);};}exports[_0x3212('0x6')]=function(_0x5d9d36){for(var _0x3859e4=0x0,_0x2b1302=events[_0x3212('0x7')];_0x3859e4<_0x2b1302;_0x3859e4++){var _0x4b35e9=events[_0x3859e4];var _0x3e17a3=createListener('chatMessage:'+_0x4b35e9,_0x5d9d36);ChatMessageEvents['on'](_0x4b35e9,_0x3e17a3);}};
\ No newline at end of file
+var _0xdf98=['removeListener','register','length','./chatMessage.events','remove','emit'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xdf98,0xcf));var _0x8df9=function(_0x4d9f63,_0x115c88){_0x4d9f63=_0x4d9f63-0x0;var _0xa6dcfe=_0xdf98[_0x4d9f63];return _0xa6dcfe;};'use strict';var ChatMessageEvents=require(_0x8df9('0x0'));var events=['save',_0x8df9('0x1'),'update'];function createListener(_0x493604,_0x263e95){return function(_0x27ce98){_0x263e95[_0x8df9('0x2')](_0x493604,_0x27ce98);};}function removeListener(_0xeec2ab,_0x3f2ade){return function(){ChatMessageEvents[_0x8df9('0x3')](_0xeec2ab,_0x3f2ade);};}exports[_0x8df9('0x4')]=function(_0x158424){for(var _0x20b677=0x0,_0x5e79af=events[_0x8df9('0x5')];_0x20b677<_0x5e79af;_0x20b677++){var _0x393533=events[_0x20b677];var _0x410568=createListener('chatMessage:'+_0x393533,_0x158424);ChatMessageEvents['on'](_0x393533,_0x410568);}};
\ No newline at end of file
index 1df07ab..8c378de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fac=['../../components/interaction/service','../../config/environment','./chatMessage.controller','get','index','/describe','describe','isAuthenticated','show','post','tracked','chat','create','put','/:id','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x402fd4,_0x504830){var _0x5d4f81=function(_0x362dd3){while(--_0x362dd3){_0x402fd4['push'](_0x402fd4['shift']());}};_0x5d4f81(++_0x504830);}(_0x0fac,0x182));var _0xc0fa=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x0fac[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0xc0fa('0x0'));var util=require('util');var path=require(_0xc0fa('0x1'));var timeout=require(_0xc0fa('0x2'));var express=require('express');var router=express[_0xc0fa('0x3')]();var fs_extra=require(_0xc0fa('0x4'));var auth=require(_0xc0fa('0x5'));var interaction=require(_0xc0fa('0x6'));var config=require(_0xc0fa('0x7'));var controller=require(_0xc0fa('0x8'));router[_0xc0fa('0x9')]('/',auth['isAuthenticated'](),controller[_0xc0fa('0xa')]);router['get'](_0xc0fa('0xb'),auth['isAuthenticated'](),controller[_0xc0fa('0xc')]);router['get']('/:id',auth[_0xc0fa('0xd')](),controller[_0xc0fa('0xe')]);router[_0xc0fa('0xf')]('/',auth[_0xc0fa('0xd')](),interaction[_0xc0fa('0x10')](_0xc0fa('0x11'),'chatmessage:create'),controller[_0xc0fa('0x12')]);router[_0xc0fa('0x13')](_0xc0fa('0x14'),controller[_0xc0fa('0x15')]);router['put'](_0xc0fa('0x16'),auth[_0xc0fa('0xd')](),controller[_0xc0fa('0x17')]);router['put'](_0xc0fa('0x18'),auth[_0xc0fa('0xd')](),controller[_0xc0fa('0x19')]);router[_0xc0fa('0x1a')](_0xc0fa('0x14'),auth[_0xc0fa('0xd')](),controller['destroy']);module[_0xc0fa('0x1b')]=router;
\ No newline at end of file
+var _0x8f27=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','chat','create','put','/:id/accept','accept','reject','delete','destroy'];(function(_0x52d19a,_0x2ebdc2){var _0x23ec77=function(_0x33b780){while(--_0x33b780){_0x52d19a['push'](_0x52d19a['shift']());}};_0x23ec77(++_0x2ebdc2);}(_0x8f27,0xb7));var _0x78f2=function(_0x23a8ba,_0xab5848){_0x23a8ba=_0x23a8ba-0x0;var _0x468389=_0x8f27[_0x23a8ba];return _0x468389;};'use strict';var multer=require(_0x78f2('0x0'));var util=require('util');var path=require(_0x78f2('0x1'));var timeout=require(_0x78f2('0x2'));var express=require(_0x78f2('0x3'));var router=express[_0x78f2('0x4')]();var fs_extra=require(_0x78f2('0x5'));var auth=require(_0x78f2('0x6'));var interaction=require(_0x78f2('0x7'));var config=require('../../config/environment');var controller=require(_0x78f2('0x8'));router[_0x78f2('0x9')]('/',auth[_0x78f2('0xa')](),controller[_0x78f2('0xb')]);router[_0x78f2('0x9')](_0x78f2('0xc'),auth[_0x78f2('0xa')](),controller[_0x78f2('0xd')]);router[_0x78f2('0x9')](_0x78f2('0xe'),auth[_0x78f2('0xa')](),controller[_0x78f2('0xf')]);router[_0x78f2('0x10')]('/',auth[_0x78f2('0xa')](),interaction['tracked'](_0x78f2('0x11'),'chatmessage:create'),controller[_0x78f2('0x12')]);router['put'](_0x78f2('0xe'),controller['update']);router[_0x78f2('0x13')](_0x78f2('0x14'),auth[_0x78f2('0xa')](),controller[_0x78f2('0x15')]);router[_0x78f2('0x13')]('/:id/reject',auth[_0x78f2('0xa')](),controller[_0x78f2('0x16')]);router[_0x78f2('0x17')](_0x78f2('0xe'),auth[_0x78f2('0xa')](),controller[_0x78f2('0x18')]);module[_0x78f2('0x19')]=router;
\ No newline at end of file
index 3b52c96..7ccd5ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['medium','TEXT','exports'];(function(_0x51bbef,_0x525d96){var _0x200b56=function(_0x268ff0){while(--_0x268ff0){_0x51bbef['push'](_0x51bbef['shift']());}};_0x200b56(++_0x525d96);}(_0xadb5,0xad));var _0x5adb=function(_0x222f75,_0x1551e8){_0x222f75=_0x222f75-0x0;var _0x4101bc=_0xadb5[_0x222f75];return _0x4101bc;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'body':{'type':Sequelize['TEXT'](_0x5adb('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x5adb('0x2')](_0x5adb('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0x0b0e=['medium','sequelize','TEXT'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0b0e,0x187));var _0xe0b0=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0x0b0e[_0x32b542];return _0x554d54;};'use strict';var Sequelize=require(_0xe0b0('0x0'));module['exports']={'body':{'type':Sequelize[_0xe0b0('0x1')]('medium'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe0b0('0x1')](_0xe0b0('0x2')),'allowNull':![]}};
\ No newline at end of file
index 0771232..0bc0807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x7a54,0x106));var _0x47a5=function(_0x1e9109,_0x147afc){_0x1e9109=_0x1e9109-0x0;var _0x1044ac=_0x7a54[_0x1e9109];return _0x1044ac;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _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(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0x7a54,0x106));var _0x47a5=function(_0x51b2ad,_0x16eebb){_0x51b2ad=_0x51b2ad-0x0;var _0x549342=_0x7a54[_0x51b2ad];return _0x549342;};'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 d41400e..a64d1d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d49=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x2bf9ae,_0x270fda){var _0x23c251=function(_0x3be086){while(--_0x3be086){_0x2bf9ae['push'](_0x2bf9ae['shift']());}};_0x23c251(++_0x270fda);}(_0x4d49,0x141));var _0x94d4=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x4d49[_0x501510];return _0x1e6ee5;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x94d4('0x0'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x94d4('0x1')](0x0);var events={'afterCreate':_0x94d4('0x2'),'afterUpdate':_0x94d4('0x3'),'afterDestroy':_0x94d4('0x4')};function emitEvent(_0xa6775f){return function(_0x95b780,_0x422546,_0x122abc){ChatOfflineMessageEvents[_0x94d4('0x5')](_0xa6775f+':'+_0x95b780['id'],_0x95b780);ChatOfflineMessageEvents['emit'](_0xa6775f,_0x95b780);_0x122abc(null);};}for(var e in events){if(events[_0x94d4('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x94d4('0x7')](e,emitEvent(event));}}module[_0x94d4('0x8')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x9df5=['exports','events','../../mysqldb','ChatOfflineMessage','update','emit','hook'];(function(_0x3f3346,_0x2e591d){var _0x50f355=function(_0x302eb9){while(--_0x302eb9){_0x3f3346['push'](_0x3f3346['shift']());}};_0x50f355(++_0x2e591d);}(_0x9df5,0x9b));var _0x59df=function(_0x12a930,_0x27b4a5){_0x12a930=_0x12a930-0x0;var _0x627937=_0x9df5[_0x12a930];return _0x627937;};'use strict';var EventEmitter=require(_0x59df('0x0'));var ChatOfflineMessage=require(_0x59df('0x1'))['db'][_0x59df('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x59df('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3dee4f){return function(_0x4e7910,_0xd96d42,_0x2b478c){ChatOfflineMessageEvents[_0x59df('0x4')](_0x3dee4f+':'+_0x4e7910['id'],_0x4e7910);ChatOfflineMessageEvents[_0x59df('0x4')](_0x3dee4f,_0x4e7910);_0x2b478c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x59df('0x5')](e,emitEvent(event));}}module[_0x59df('0x6')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 0c17669..6e423a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19e7=['define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports'];(function(_0x1a621a,_0x269b5b){var _0x4ea4eb=function(_0x35998e){while(--_0x35998e){_0x1a621a['push'](_0x1a621a['shift']());}};_0x4ea4eb(++_0x269b5b);}(_0x19e7,0xde));var _0x719e=function(_0x59b84f,_0x5c84ba){_0x59b84f=_0x59b84f-0x0;var _0xf9c90c=_0x19e7[_0x59b84f];return _0xf9c90c;};'use strict';var attributes=require(_0x719e('0x0'));module[_0x719e('0x1')]=function(_0x1344cd){return _0x1344cd[_0x719e('0x2')](_0x719e('0x3'),attributes,{'tableName':_0x719e('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x719e('0x5'),'collate':_0x719e('0x6')});};
\ No newline at end of file
+var _0xb43a=['chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage'];(function(_0x5db09b,_0x5b6402){var _0x4c98f3=function(_0x1154e5){while(--_0x1154e5){_0x5db09b['push'](_0x5db09b['shift']());}};_0x4c98f3(++_0x5b6402);}(_0xb43a,0xdc));var _0xab43=function(_0x260f28,_0x4e9b30){_0x260f28=_0x260f28-0x0;var _0x3aefcc=_0xb43a[_0x260f28];return _0x3aefcc;};'use strict';var attributes=require(_0xab43('0x0'));module[_0xab43('0x1')]=function(_0x53fdf1){return _0x53fdf1[_0xab43('0x2')](_0xab43('0x3'),attributes,{'tableName':_0xab43('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xab43('0x5'),'collate':_0xab43('0x6')});};
\ No newline at end of file
index 91b266f..da3e862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7345=['../../config/logger','../../config/environment','client','http','request','info','ChatOfflineMessage,\x20%s,\x20%s','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','randomstring','../../config/utils'];(function(_0x18002a,_0x33b114){var _0x5bf7a8=function(_0x141de9){while(--_0x141de9){_0x18002a['push'](_0x18002a['shift']());}};_0x5bf7a8(++_0x33b114);}(_0x7345,0x163));var _0x5734=function(_0x1a7b2e,_0x3e29dd){_0x1a7b2e=_0x1a7b2e-0x0;var _0x4ccad4=_0x7345[_0x1a7b2e];return _0x4ccad4;};'use strict';var _=require(_0x5734('0x0'));var util=require(_0x5734('0x1'));var moment=require(_0x5734('0x2'));var BPromise=require('bluebird');var rs=require(_0x5734('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5734('0x4'));var logger=require(_0x5734('0x5'))('rpc');var config=require(_0x5734('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x5734('0x7')][_0x5734('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x469af9,_0x213e18,_0x1b7db1){return new BPromise(function(_0x3142ff,_0x335d4d){return client[_0x5734('0x9')](_0x469af9,_0x1b7db1)['then'](function(_0x54be6d){logger[_0x5734('0xa')](_0x5734('0xb'),_0x213e18,'request\x20sent');logger[_0x5734('0xc')](_0x5734('0xd'),_0x213e18,_0x5734('0xe'),JSON['stringify'](_0x54be6d));if(_0x54be6d[_0x5734('0xf')]){if(_0x54be6d[_0x5734('0xf')][_0x5734('0x10')]===0x1f4){logger[_0x5734('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x213e18,_0x54be6d['error'][_0x5734('0x11')]);return _0x335d4d(_0x54be6d['error'][_0x5734('0x11')]);}logger[_0x5734('0xf')](_0x5734('0xb'),_0x213e18,_0x54be6d['error'][_0x5734('0x11')]);return _0x3142ff(_0x54be6d[_0x5734('0xf')][_0x5734('0x11')]);}else{logger[_0x5734('0xa')](_0x5734('0xb'),_0x213e18,_0x5734('0xe'));_0x3142ff(_0x54be6d['result'][_0x5734('0x11')]);}})['catch'](function(_0x4f3dc3){logger['error'](_0x5734('0xb'),_0x213e18,_0x4f3dc3);_0x335d4d(_0x4f3dc3);});});}
\ No newline at end of file
+var _0xf9c5=['code','message','info','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xf9c5,0xf7));var _0x5f9c=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xf9c5[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x5f9c('0x0'));var util=require(_0x5f9c('0x1'));var moment=require(_0x5f9c('0x2'));var BPromise=require(_0x5f9c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f9c('0x4'))['db'];var utils=require(_0x5f9c('0x5'));var logger=require(_0x5f9c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5f9c('0x7'));var client=jayson['client'][_0x5f9c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x540cc8,_0x43f795,_0x4d86a5){return new BPromise(function(_0x2edbce,_0x559d9b){return client[_0x5f9c('0x9')](_0x540cc8,_0x4d86a5)[_0x5f9c('0xa')](function(_0x6e87ae){logger['info'](_0x5f9c('0xb'),_0x43f795,_0x5f9c('0xc'));logger[_0x5f9c('0xd')](_0x5f9c('0xe'),_0x43f795,_0x5f9c('0xc'),JSON[_0x5f9c('0xf')](_0x6e87ae));if(_0x6e87ae[_0x5f9c('0x10')]){if(_0x6e87ae[_0x5f9c('0x10')][_0x5f9c('0x11')]===0x1f4){logger['error'](_0x5f9c('0xb'),_0x43f795,_0x6e87ae[_0x5f9c('0x10')][_0x5f9c('0x12')]);return _0x559d9b(_0x6e87ae['error']['message']);}logger[_0x5f9c('0x10')](_0x5f9c('0xb'),_0x43f795,_0x6e87ae[_0x5f9c('0x10')]['message']);return _0x2edbce(_0x6e87ae[_0x5f9c('0x10')][_0x5f9c('0x12')]);}else{logger[_0x5f9c('0x13')]('ChatOfflineMessage,\x20%s,\x20%s',_0x43f795,_0x5f9c('0xc'));_0x2edbce(_0x6e87ae[_0x5f9c('0x14')][_0x5f9c('0x12')]);}})[_0x5f9c('0x15')](function(_0x205300){logger[_0x5f9c('0x10')](_0x5f9c('0xb'),_0x43f795,_0x205300);_0x559d9b(_0x205300);});});}
\ No newline at end of file
index 8b077e1..621a2ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x276c=['create','put','update','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','index','/describe','isAuthenticated','describe','/:id'];(function(_0x1fbef3,_0x42d635){var _0x39a049=function(_0xf755f4){while(--_0xf755f4){_0x1fbef3['push'](_0x1fbef3['shift']());}};_0x39a049(++_0x42d635);}(_0x276c,0xf5));var _0xc276=function(_0x416157,_0x541fe8){_0x416157=_0x416157-0x0;var _0x5d94b0=_0x276c[_0x416157];return _0x5d94b0;};'use strict';var multer=require(_0xc276('0x0'));var util=require(_0xc276('0x1'));var path=require(_0xc276('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc276('0x3')]();var fs_extra=require(_0xc276('0x4'));var auth=require(_0xc276('0x5'));var interaction=require(_0xc276('0x6'));var config=require(_0xc276('0x7'));var controller=require(_0xc276('0x8'));router[_0xc276('0x9')]('/',auth['isAuthenticated'](),controller[_0xc276('0xa')]);router['get'](_0xc276('0xb'),auth[_0xc276('0xc')](),controller[_0xc276('0xd')]);router['get'](_0xc276('0xe'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xc276('0xc')](),controller[_0xc276('0xf')]);router[_0xc276('0x10')](_0xc276('0xe'),auth[_0xc276('0xc')](),controller[_0xc276('0x11')]);router['delete'](_0xc276('0xe'),auth[_0xc276('0xc')](),controller[_0xc276('0x12')]);module[_0xc276('0x13')]=router;
\ No newline at end of file
+var _0xc1f2=['describe','/:id','post','put','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x2e765f,_0x3b5e44){var _0x3a4da8=function(_0x5e2655){while(--_0x5e2655){_0x2e765f['push'](_0x2e765f['shift']());}};_0x3a4da8(++_0x3b5e44);}(_0xc1f2,0x16c));var _0x2c1f=function(_0x35ce91,_0x3c0f73){_0x35ce91=_0x35ce91-0x0;var _0x145e20=_0xc1f2[_0x35ce91];return _0x145e20;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2c1f('0x0'));var timeout=require(_0x2c1f('0x1'));var express=require(_0x2c1f('0x2'));var router=express[_0x2c1f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2c1f('0x4'));var interaction=require(_0x2c1f('0x5'));var config=require(_0x2c1f('0x6'));var controller=require('./chatOfflineMessage.controller');router[_0x2c1f('0x7')]('/',auth[_0x2c1f('0x8')](),controller[_0x2c1f('0x9')]);router[_0x2c1f('0x7')]('/describe',auth[_0x2c1f('0x8')](),controller[_0x2c1f('0xa')]);router[_0x2c1f('0x7')](_0x2c1f('0xb'),auth[_0x2c1f('0x8')](),controller['show']);router[_0x2c1f('0xc')]('/',auth[_0x2c1f('0x8')](),controller['create']);router[_0x2c1f('0xd')](_0x2c1f('0xb'),auth[_0x2c1f('0x8')](),controller['update']);router[_0x2c1f('0xe')](_0x2c1f('0xb'),auth[_0x2c1f('0x8')](),controller[_0x2c1f('0xf')]);module[_0x2c1f('0x10')]=router;
\ No newline at end of file
index 11cd13e..19a9896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f43=['mouseOver','INTEGER','sequelize','exports','STRING','timeout'];(function(_0x3c2039,_0x48b1e4){var _0x5e526a=function(_0x5a39d3){while(--_0x5a39d3){_0x3c2039['push'](_0x3c2039['shift']());}};_0x5e526a(++_0x48b1e4);}(_0x5f43,0x194));var _0x35f4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5f43[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x35f4('0x0'));module[_0x35f4('0x1')]={'name':{'type':Sequelize[_0x35f4('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('mouseOver',_0x35f4('0x3')),'defaultValue':_0x35f4('0x4')},'selector':{'type':Sequelize[_0x35f4('0x2')]},'timeout':{'type':Sequelize[_0x35f4('0x5')]}};
\ No newline at end of file
+var _0x5dca=['ENUM','mouseOver','timeout','INTEGER','sequelize','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5dca,0x1d8));var _0xa5dc=function(_0x273ea1,_0x13d940){_0x273ea1=_0x273ea1-0x0;var _0x2e593c=_0x5dca[_0x273ea1];return _0x2e593c;};'use strict';var Sequelize=require(_0xa5dc('0x0'));module['exports']={'name':{'type':Sequelize[_0xa5dc('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xa5dc('0x2')](_0xa5dc('0x3'),_0xa5dc('0x4')),'defaultValue':_0xa5dc('0x3')},'selector':{'type':Sequelize[_0xa5dc('0x1')]},'timeout':{'type':Sequelize[_0xa5dc('0x5')]}};
\ No newline at end of file
index 6632589..a162900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['offset','undefined','limit','count','Content-Range','json','apply','reject','save','destroy','then','error','send','show','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','catch','body','update','find','params','eml-format','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x3fccb6,_0x1ea530){var _0x5ce0e3=function(_0x13af8c){while(--_0x13af8c){_0x3fccb6['push'](_0x3fccb6['shift']());}};_0x5ce0e3(++_0x1ea530);}(_0x24ca,0x8c));var _0xa24c=function(_0xe6e78c,_0x582369){_0xe6e78c=_0xe6e78c-0x0;var _0x2a09c8=_0x24ca[_0xe6e78c];return _0x2a09c8;};'use strict';var emlformat=require(_0xa24c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa24c('0x1'));var rp=require('request-promise');var moment=require(_0xa24c('0x2'));var BPromise=require(_0xa24c('0x3'));var Mustache=require(_0xa24c('0x4'));var util=require('util');var path=require(_0xa24c('0x5'));var sox=require(_0xa24c('0x6'));var csv=require(_0xa24c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa24c('0x8'));var crypto=require(_0xa24c('0x9'));var jsforce=require(_0xa24c('0xa'));var deskjs=require(_0xa24c('0xb'));var toCsv=require(_0xa24c('0x7'));var querystring=require(_0xa24c('0xc'));var Papa=require('papaparse');var Redis=require(_0xa24c('0xd'));var authService=require(_0xa24c('0xe'));var qs=require(_0xa24c('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa24c('0x10'))(_0xa24c('0x11'));var utils=require(_0xa24c('0x12'));var config=require(_0xa24c('0x13'));var licenseUtil=require(_0xa24c('0x14'));var db=require(_0xa24c('0x15'))['db'];function respondWithStatusCode(_0x566313,_0x5bb631){_0x5bb631=_0x5bb631||0xcc;return function(_0x4907f6){if(_0x4907f6){return _0x566313[_0xa24c('0x16')](_0x5bb631);}return _0x566313[_0xa24c('0x17')](_0x5bb631)[_0xa24c('0x18')]();};}function respondWithResult(_0x9fe9e3,_0x4351a8){_0x4351a8=_0x4351a8||0xc8;return function(_0x4971af){if(_0x4971af){return _0x9fe9e3[_0xa24c('0x17')](_0x4351a8)['json'](_0x4971af);}};}function respondWithFilteredResult(_0x493bcb,_0x588acf){return function(_0x2e8dc9){if(_0x2e8dc9){var _0x2a4270=typeof _0x588acf[_0xa24c('0x19')]===_0xa24c('0x1a')&&typeof _0x588acf[_0xa24c('0x1b')]===_0xa24c('0x1a');var _0x2197da=_0x2e8dc9[_0xa24c('0x1c')];var _0x14f0aa=_0x2a4270?0x0:_0x588acf[_0xa24c('0x19')];var _0x1970fc=_0x2a4270?_0x2e8dc9[_0xa24c('0x1c')]:_0x588acf[_0xa24c('0x19')]+_0x588acf[_0xa24c('0x1b')];var _0x5276b6;if(_0x1970fc>=_0x2197da){_0x1970fc=_0x2197da;_0x5276b6=0xc8;}else{_0x5276b6=0xce;}_0x493bcb[_0xa24c('0x17')](_0x5276b6);return _0x493bcb['set'](_0xa24c('0x1d'),_0x14f0aa+'-'+_0x1970fc+'/'+_0x2197da)[_0xa24c('0x1e')](_0x2e8dc9);}return null;};}function patchUpdates(_0x8c3949){return function(_0x37e20e){try{jsonpatch[_0xa24c('0x1f')](_0x37e20e,_0x8c3949,!![]);}catch(_0x416dea){return BPromise[_0xa24c('0x20')](_0x416dea);}return _0x37e20e[_0xa24c('0x21')]();};}function saveUpdates(_0xba710,_0x2ec5ad){return function(_0x2b471a){if(_0x2b471a){return _0x2b471a['update'](_0xba710)['then'](function(_0x10fa25){return _0x10fa25;});}return null;};}function removeEntity(_0xdd32a8,_0x316a68){return function(_0x1a04ff){if(_0x1a04ff){return _0x1a04ff[_0xa24c('0x22')]()[_0xa24c('0x23')](function(){_0xdd32a8[_0xa24c('0x17')](0xcc)[_0xa24c('0x18')]();});}};}function handleEntityNotFound(_0x304d6c,_0x4dc3dc){return function(_0x2290e1){if(!_0x2290e1){_0x304d6c['sendStatus'](0x194);}return _0x2290e1;};}function handleError(_0x1f347b,_0x256fbc){_0x256fbc=_0x256fbc||0x1f4;return function(_0x471421){logger[_0xa24c('0x24')](_0x471421['stack']);if(_0x471421['name']){delete _0x471421['name'];}_0x1f347b['status'](_0x256fbc)[_0xa24c('0x25')](_0x471421);};}exports[_0xa24c('0x26')]=function(_0xab6197,_0x1cdee4){var _0x37cbd3={'raw':!![],'where':{'id':_0xab6197['params']['id']}},_0x5361d4={};_0x5361d4[_0xa24c('0x27')]=_[_0xa24c('0x28')](db[_0xa24c('0x29')][_0xa24c('0x2a')]);_0x5361d4[_0xa24c('0x2b')]=_[_0xa24c('0x28')](_0xab6197[_0xa24c('0x2b')]);_0x5361d4[_0xa24c('0x2c')]=_[_0xa24c('0x2d')](_0x5361d4[_0xa24c('0x27')],_0x5361d4['query']);_0x37cbd3[_0xa24c('0x2e')]=_[_0xa24c('0x2d')](_0x5361d4['model'],qs[_0xa24c('0x2f')](_0xab6197[_0xa24c('0x2b')][_0xa24c('0x2f')]));_0x37cbd3[_0xa24c('0x2e')]=_0x37cbd3[_0xa24c('0x2e')][_0xa24c('0x30')]?_0x37cbd3[_0xa24c('0x2e')]:_0x5361d4[_0xa24c('0x27')];if(_0xab6197[_0xa24c('0x2b')][_0xa24c('0x31')]){_0x37cbd3['include']=[{'all':!![]}];}_0x37cbd3=_['merge']({},_0x37cbd3,_0xab6197['options']);return db[_0xa24c('0x29')]['find'](_0x37cbd3)[_0xa24c('0x23')](handleEntityNotFound(_0x1cdee4,null))[_0xa24c('0x23')](respondWithResult(_0x1cdee4,null))[_0xa24c('0x32')](handleError(_0x1cdee4,null));};exports['create']=function(_0xe1a798,_0x2cd5fd){return db[_0xa24c('0x29')]['create'](_0xe1a798[_0xa24c('0x33')],{})[_0xa24c('0x23')](respondWithResult(_0x2cd5fd,0xc9))['catch'](handleError(_0x2cd5fd,null));};exports[_0xa24c('0x34')]=function(_0x22fd0f,_0xd837dc){if(_0x22fd0f['body']['id']){delete _0x22fd0f[_0xa24c('0x33')]['id'];}return db[_0xa24c('0x29')][_0xa24c('0x35')]({'where':{'id':_0x22fd0f[_0xa24c('0x36')]['id']}})[_0xa24c('0x23')](handleEntityNotFound(_0xd837dc,null))['then'](saveUpdates(_0x22fd0f[_0xa24c('0x33')],null))[_0xa24c('0x23')](respondWithResult(_0xd837dc,null))['catch'](handleError(_0xd837dc,null));};exports[_0xa24c('0x22')]=function(_0x206080,_0x2417d9){return db['ChatProactiveAction']['find']({'where':{'id':_0x206080[_0xa24c('0x36')]['id']}})[_0xa24c('0x23')](handleEntityNotFound(_0x2417d9,null))[_0xa24c('0x23')](removeEntity(_0x2417d9,null))[_0xa24c('0x32')](handleError(_0x2417d9,null));};
\ No newline at end of file
+var _0x5ad3=['show','keys','rawAttributes','intersection','attributes','model','query','length','includeAll','include','merge','options','ChatProactiveAction','catch','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','end','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name'];(function(_0x2f3b86,_0x1fffad){var _0x9741a0=function(_0x654b64){while(--_0x654b64){_0x2f3b86['push'](_0x2f3b86['shift']());}};_0x9741a0(++_0x1fffad);}(_0x5ad3,0x1e2));var _0x35ad=function(_0x1ba43c,_0x5bd2e8){_0x1ba43c=_0x1ba43c-0x0;var _0x2f60eb=_0x5ad3[_0x1ba43c];return _0x2f60eb;};'use strict';var emlformat=require(_0x35ad('0x0'));var rimraf=require(_0x35ad('0x1'));var zipdir=require(_0x35ad('0x2'));var jsonpatch=require(_0x35ad('0x3'));var rp=require('request-promise');var moment=require(_0x35ad('0x4'));var BPromise=require(_0x35ad('0x5'));var Mustache=require(_0x35ad('0x6'));var util=require(_0x35ad('0x7'));var path=require(_0x35ad('0x8'));var sox=require(_0x35ad('0x9'));var csv=require(_0x35ad('0xa'));var ejs=require(_0x35ad('0xb'));var fs=require('fs');var fs_extra=require(_0x35ad('0xc'));var _=require(_0x35ad('0xd'));var squel=require('squel');var crypto=require(_0x35ad('0xe'));var jsforce=require(_0x35ad('0xf'));var deskjs=require(_0x35ad('0x10'));var toCsv=require('to-csv');var querystring=require(_0x35ad('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x35ad('0x12'));var qs=require(_0x35ad('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x35ad('0x14'));var logger=require(_0x35ad('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x35ad('0x16'));var licenseUtil=require(_0x35ad('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3c4dd5,_0x33e2ec){_0x33e2ec=_0x33e2ec||0xcc;return function(_0x595fe8){if(_0x595fe8){return _0x3c4dd5['sendStatus'](_0x33e2ec);}return _0x3c4dd5[_0x35ad('0x18')](_0x33e2ec)[_0x35ad('0x19')]();};}function respondWithResult(_0x3cda5e,_0x4b7ad9){_0x4b7ad9=_0x4b7ad9||0xc8;return function(_0x3e2676){if(_0x3e2676){return _0x3cda5e[_0x35ad('0x18')](_0x4b7ad9)['json'](_0x3e2676);}};}function respondWithFilteredResult(_0x1494be,_0x4d5185){return function(_0x4e3cd8){if(_0x4e3cd8){var _0x3a981a=typeof _0x4d5185[_0x35ad('0x1a')]===_0x35ad('0x1b')&&typeof _0x4d5185['limit']===_0x35ad('0x1b');var _0x2f3f27=_0x4e3cd8[_0x35ad('0x1c')];var _0x3158a1=_0x3a981a?0x0:_0x4d5185[_0x35ad('0x1a')];var _0x418416=_0x3a981a?_0x4e3cd8['count']:_0x4d5185[_0x35ad('0x1a')]+_0x4d5185[_0x35ad('0x1d')];var _0x574557;if(_0x418416>=_0x2f3f27){_0x418416=_0x2f3f27;_0x574557=0xc8;}else{_0x574557=0xce;}_0x1494be['status'](_0x574557);return _0x1494be[_0x35ad('0x1e')](_0x35ad('0x1f'),_0x3158a1+'-'+_0x418416+'/'+_0x2f3f27)['json'](_0x4e3cd8);}return null;};}function patchUpdates(_0x21f611){return function(_0x32735e){try{jsonpatch['apply'](_0x32735e,_0x21f611,!![]);}catch(_0x37c03d){return BPromise[_0x35ad('0x20')](_0x37c03d);}return _0x32735e[_0x35ad('0x21')]();};}function saveUpdates(_0x30542c,_0x1be6d2){return function(_0x43a6a8){if(_0x43a6a8){return _0x43a6a8[_0x35ad('0x22')](_0x30542c)[_0x35ad('0x23')](function(_0x2fb296){return _0x2fb296;});}return null;};}function removeEntity(_0xebc6c5,_0x4c5740){return function(_0x1cb9da){if(_0x1cb9da){return _0x1cb9da[_0x35ad('0x24')]()['then'](function(){_0xebc6c5[_0x35ad('0x18')](0xcc)[_0x35ad('0x19')]();});}};}function handleEntityNotFound(_0xa3cb9f,_0xfc80ac){return function(_0x368468){if(!_0x368468){_0xa3cb9f['sendStatus'](0x194);}return _0x368468;};}function handleError(_0x37e9bd,_0x226167){_0x226167=_0x226167||0x1f4;return function(_0x3dc3c4){logger[_0x35ad('0x25')](_0x3dc3c4[_0x35ad('0x26')]);if(_0x3dc3c4[_0x35ad('0x27')]){delete _0x3dc3c4[_0x35ad('0x27')];}_0x37e9bd[_0x35ad('0x18')](_0x226167)['send'](_0x3dc3c4);};}exports[_0x35ad('0x28')]=function(_0x11da54,_0x2f8b3){var _0x34b8b9={'raw':!![],'where':{'id':_0x11da54['params']['id']}},_0x2c82f1={};_0x2c82f1['model']=_[_0x35ad('0x29')](db['ChatProactiveAction'][_0x35ad('0x2a')]);_0x2c82f1['query']=_['keys'](_0x11da54['query']);_0x2c82f1['filters']=_[_0x35ad('0x2b')](_0x2c82f1['model'],_0x2c82f1['query']);_0x34b8b9[_0x35ad('0x2c')]=_['intersection'](_0x2c82f1[_0x35ad('0x2d')],qs['fields'](_0x11da54[_0x35ad('0x2e')]['fields']));_0x34b8b9[_0x35ad('0x2c')]=_0x34b8b9['attributes'][_0x35ad('0x2f')]?_0x34b8b9[_0x35ad('0x2c')]:_0x2c82f1[_0x35ad('0x2d')];if(_0x11da54['query'][_0x35ad('0x30')]){_0x34b8b9[_0x35ad('0x31')]=[{'all':!![]}];}_0x34b8b9=_[_0x35ad('0x32')]({},_0x34b8b9,_0x11da54[_0x35ad('0x33')]);return db[_0x35ad('0x34')]['find'](_0x34b8b9)['then'](handleEntityNotFound(_0x2f8b3,null))[_0x35ad('0x23')](respondWithResult(_0x2f8b3,null))[_0x35ad('0x35')](handleError(_0x2f8b3,null));};exports[_0x35ad('0x36')]=function(_0x1c8a3d,_0x55e676){return db[_0x35ad('0x34')][_0x35ad('0x36')](_0x1c8a3d[_0x35ad('0x37')],{})[_0x35ad('0x23')](respondWithResult(_0x55e676,0xc9))[_0x35ad('0x35')](handleError(_0x55e676,null));};exports[_0x35ad('0x22')]=function(_0x49c33d,_0x58250d){if(_0x49c33d[_0x35ad('0x37')]['id']){delete _0x49c33d[_0x35ad('0x37')]['id'];}return db[_0x35ad('0x34')][_0x35ad('0x38')]({'where':{'id':_0x49c33d[_0x35ad('0x39')]['id']}})[_0x35ad('0x23')](handleEntityNotFound(_0x58250d,null))[_0x35ad('0x23')](saveUpdates(_0x49c33d[_0x35ad('0x37')],null))[_0x35ad('0x23')](respondWithResult(_0x58250d,null))['catch'](handleError(_0x58250d,null));};exports[_0x35ad('0x24')]=function(_0x4f975b,_0x25e63e){return db[_0x35ad('0x34')][_0x35ad('0x38')]({'where':{'id':_0x4f975b[_0x35ad('0x39')]['id']}})[_0x35ad('0x23')](handleEntityNotFound(_0x25e63e,null))[_0x35ad('0x23')](removeEntity(_0x25e63e,null))[_0x35ad('0x35')](handleError(_0x25e63e,null));};
\ No newline at end of file
index 1201178..98a5a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c6d=['bluebird','request-promise','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','api','moment'];(function(_0x589eba,_0x3dfe56){var _0x26bfdb=function(_0x40a5dc){while(--_0x40a5dc){_0x589eba['push'](_0x589eba['shift']());}};_0x26bfdb(++_0x3dfe56);}(_0x0c6d,0xaf));var _0xd0c6=function(_0x5b19bd,_0x18ff15){_0x5b19bd=_0x5b19bd-0x0;var _0x53c97e=_0x0c6d[_0x5b19bd];return _0x53c97e;};'use strict';var _=require(_0xd0c6('0x0'));var util=require(_0xd0c6('0x1'));var logger=require(_0xd0c6('0x2'))(_0xd0c6('0x3'));var moment=require(_0xd0c6('0x4'));var BPromise=require(_0xd0c6('0x5'));var rp=require(_0xd0c6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd0c6('0x7'));module[_0xd0c6('0x8')]=function(_0x204af1,_0x4dde32){return _0x204af1[_0xd0c6('0x9')](_0xd0c6('0xa'),attributes,{'tableName':_0xd0c6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc0e4=['moment','request-promise','path','rimraf','./chatProactiveAction.attributes','define','chat_proactive_actions','lodash','util','../../config/logger'];(function(_0x2245d7,_0x92dad1){var _0x32459e=function(_0xb0ce3){while(--_0xb0ce3){_0x2245d7['push'](_0x2245d7['shift']());}};_0x32459e(++_0x92dad1);}(_0xc0e4,0x1b5));var _0x4c0e=function(_0x566bdf,_0x1f4861){_0x566bdf=_0x566bdf-0x0;var _0x331215=_0xc0e4[_0x566bdf];return _0x331215;};'use strict';var _=require(_0x4c0e('0x0'));var util=require(_0x4c0e('0x1'));var logger=require(_0x4c0e('0x2'))('api');var moment=require(_0x4c0e('0x3'));var BPromise=require('bluebird');var rp=require(_0x4c0e('0x4'));var fs=require('fs');var path=require(_0x4c0e('0x5'));var rimraf=require(_0x4c0e('0x6'));var config=require('../../config/environment');var attributes=require(_0x4c0e('0x7'));module['exports']=function(_0x140790,_0x30a9d3){return _0x140790[_0x4c0e('0x8')]('ChatProactiveAction',attributes,{'tableName':_0x4c0e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1678b45..16388a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x623f=['stringify','error','code','message','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s'];(function(_0x445971,_0x432a07){var _0x3e5e23=function(_0x4f91ee){while(--_0x4f91ee){_0x445971['push'](_0x445971['shift']());}};_0x3e5e23(++_0x432a07);}(_0x623f,0x16a));var _0xf623=function(_0x1a40cd,_0xd0761a){_0x1a40cd=_0x1a40cd-0x0;var _0x1bf41d=_0x623f[_0x1a40cd];return _0x1bf41d;};'use strict';var _=require(_0xf623('0x0'));var util=require(_0xf623('0x1'));var moment=require(_0xf623('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf623('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf623('0x4'));var logger=require(_0xf623('0x5'))('rpc');var config=require(_0xf623('0x6'));var jayson=require(_0xf623('0x7'));var client=jayson[_0xf623('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f81b7,_0x476059,_0x963b7e){return new BPromise(function(_0x17b6ef,_0x139591){return client[_0xf623('0x9')](_0x3f81b7,_0x963b7e)[_0xf623('0xa')](function(_0x51d8ba){logger[_0xf623('0xb')](_0xf623('0xc'),_0x476059,_0xf623('0xd'));logger[_0xf623('0xe')](_0xf623('0xf'),_0x476059,_0xf623('0xd'),JSON[_0xf623('0x10')](_0x51d8ba));if(_0x51d8ba[_0xf623('0x11')]){if(_0x51d8ba[_0xf623('0x11')][_0xf623('0x12')]===0x1f4){logger[_0xf623('0x11')](_0xf623('0xc'),_0x476059,_0x51d8ba['error'][_0xf623('0x13')]);return _0x139591(_0x51d8ba[_0xf623('0x11')][_0xf623('0x13')]);}logger[_0xf623('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x476059,_0x51d8ba[_0xf623('0x11')][_0xf623('0x13')]);return _0x17b6ef(_0x51d8ba[_0xf623('0x11')][_0xf623('0x13')]);}else{logger[_0xf623('0xb')](_0xf623('0xc'),_0x476059,_0xf623('0xd'));_0x17b6ef(_0x51d8ba['result']['message']);}})[_0xf623('0x14')](function(_0x127bb4){logger[_0xf623('0x11')](_0xf623('0xc'),_0x476059,_0x127bb4);_0x139591(_0x127bb4);});});}
\ No newline at end of file
+var _0x6f7a=['info','ChatProactiveAction,\x20%s,\x20%s','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x158e3b,_0x4534b){var _0x551a1d=function(_0x629c21){while(--_0x629c21){_0x158e3b['push'](_0x158e3b['shift']());}};_0x551a1d(++_0x4534b);}(_0x6f7a,0x17a));var _0xa6f7=function(_0x2e6c65,_0x5d1b24){_0x2e6c65=_0x2e6c65-0x0;var _0x29d209=_0x6f7a[_0x2e6c65];return _0x29d209;};'use strict';var _=require(_0xa6f7('0x0'));var util=require(_0xa6f7('0x1'));var moment=require(_0xa6f7('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa6f7('0x3'));var db=require(_0xa6f7('0x4'))['db'];var utils=require(_0xa6f7('0x5'));var logger=require(_0xa6f7('0x6'))(_0xa6f7('0x7'));var config=require(_0xa6f7('0x8'));var jayson=require(_0xa6f7('0x9'));var client=jayson[_0xa6f7('0xa')][_0xa6f7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3f2fdb,_0x34279b,_0x129ba0){return new BPromise(function(_0x2ae38f,_0x3fdeb6){return client['request'](_0x3f2fdb,_0x129ba0)[_0xa6f7('0xc')](function(_0x21f2f9){logger[_0xa6f7('0xd')](_0xa6f7('0xe'),_0x34279b,'request\x20sent');logger[_0xa6f7('0xf')](_0xa6f7('0x10'),_0x34279b,_0xa6f7('0x11'),JSON['stringify'](_0x21f2f9));if(_0x21f2f9[_0xa6f7('0x12')]){if(_0x21f2f9[_0xa6f7('0x12')][_0xa6f7('0x13')]===0x1f4){logger[_0xa6f7('0x12')](_0xa6f7('0xe'),_0x34279b,_0x21f2f9[_0xa6f7('0x12')][_0xa6f7('0x14')]);return _0x3fdeb6(_0x21f2f9['error']['message']);}logger['error'](_0xa6f7('0xe'),_0x34279b,_0x21f2f9[_0xa6f7('0x12')][_0xa6f7('0x14')]);return _0x2ae38f(_0x21f2f9[_0xa6f7('0x12')][_0xa6f7('0x14')]);}else{logger['info'](_0xa6f7('0xe'),_0x34279b,_0xa6f7('0x11'));_0x2ae38f(_0x21f2f9[_0xa6f7('0x15')][_0xa6f7('0x14')]);}})[_0xa6f7('0x16')](function(_0x4445c1){logger[_0xa6f7('0x12')]('ChatProactiveAction,\x20%s,\x20%s',_0x34279b,_0x4445c1);_0x3fdeb6(_0x4445c1);});});}
\ No newline at end of file
index 889a066..2653d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['fs-extra','../../components/auth/service','../../config/environment','./chatProactiveAction.controller','show','isAuthenticated','create','put','/:id','update','delete','destroy','exports','multer','path','express','Router'];(function(_0x2b7e9c,_0x236531){var _0x39ac82=function(_0x351563){while(--_0x351563){_0x2b7e9c['push'](_0x2b7e9c['shift']());}};_0x39ac82(++_0x236531);}(_0x31f0,0xb7));var _0x031f=function(_0x23eca2,_0x3c15f9){_0x23eca2=_0x23eca2-0x0;var _0x3be632=_0x31f0[_0x23eca2];return _0x3be632;};'use strict';var multer=require(_0x031f('0x0'));var util=require('util');var path=require(_0x031f('0x1'));var timeout=require('connect-timeout');var express=require(_0x031f('0x2'));var router=express[_0x031f('0x3')]();var fs_extra=require(_0x031f('0x4'));var auth=require(_0x031f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x031f('0x6'));var controller=require(_0x031f('0x7'));router['get']('/:id',auth['isAuthenticated'](),controller[_0x031f('0x8')]);router['post']('/',auth[_0x031f('0x9')](),controller[_0x031f('0xa')]);router[_0x031f('0xb')](_0x031f('0xc'),auth['isAuthenticated'](),controller[_0x031f('0xd')]);router[_0x031f('0xe')](_0x031f('0xc'),auth[_0x031f('0x9')](),controller[_0x031f('0xf')]);module[_0x031f('0x10')]=router;
\ No newline at end of file
+var _0x6aa7=['/:id','show','post','isAuthenticated','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x437516,_0x9b8cfc){var _0x45c3e6=function(_0x2ad2a8){while(--_0x2ad2a8){_0x437516['push'](_0x437516['shift']());}};_0x45c3e6(++_0x9b8cfc);}(_0x6aa7,0x178));var _0x76aa=function(_0x4d953e,_0x159fd4){_0x4d953e=_0x4d953e-0x0;var _0x5562bc=_0x6aa7[_0x4d953e];return _0x5562bc;};'use strict';var multer=require(_0x76aa('0x0'));var util=require('util');var path=require(_0x76aa('0x1'));var timeout=require(_0x76aa('0x2'));var express=require(_0x76aa('0x3'));var router=express[_0x76aa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x76aa('0x5'));var interaction=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var controller=require('./chatProactiveAction.controller');router['get'](_0x76aa('0x8'),auth['isAuthenticated'](),controller[_0x76aa('0x9')]);router[_0x76aa('0xa')]('/',auth[_0x76aa('0xb')](),controller['create']);router[_0x76aa('0xc')](_0x76aa('0x8'),auth[_0x76aa('0xb')](),controller['update']);router[_0x76aa('0xd')](_0x76aa('0x8'),auth[_0x76aa('0xb')](),controller[_0x76aa('0xe')]);module[_0x76aa('0xf')]=router;
\ No newline at end of file
index 94df46f..68c320f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be8=['name','STRING','INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports'];(function(_0x483ab9,_0x419148){var _0x35043b=function(_0x3453a3){while(--_0x3453a3){_0x483ab9['push'](_0x483ab9['shift']());}};_0x35043b(++_0x419148);}(_0x9be8,0x156));var _0x89be=function(_0x2f06e0,_0x2e1c2a){_0x2f06e0=_0x2f06e0-0x0;var _0xf2711b=_0x9be8[_0x2f06e0];return _0xf2711b;};'use strict';var Sequelize=require(_0x89be('0x0'));module[_0x89be('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x89be('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x89be('0x3')]},'timeout':{'type':Sequelize[_0x89be('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x89be('0x5')](_0x89be('0x6'),'beepall',_0x89be('0x7'))}};
\ No newline at end of file
+var _0xc5e7=['roundrobin','sequelize','exports','STRING','INTEGER','ENUM','rrmemory'];(function(_0x339cc4,_0x5c00a8){var _0x5704ab=function(_0x65116b){while(--_0x65116b){_0x339cc4['push'](_0x339cc4['shift']());}};_0x5704ab(++_0x5c00a8);}(_0xc5e7,0x86));var _0x7c5e=function(_0x42c8ce,_0xdc007f){_0x42c8ce=_0x42c8ce-0x0;var _0x348975=_0xc5e7[_0x42c8ce];return _0x348975;};'use strict';var Sequelize=require(_0x7c5e('0x0'));module[_0x7c5e('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7c5e('0x2')]},'timeout':{'type':Sequelize[_0x7c5e('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7c5e('0x4')](_0x7c5e('0x5'),'beepall',_0x7c5e('0x6'))}};
\ No newline at end of file
index e0b495f..1ee44de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4598=['register','sendStatus','status','end','json','undefined','count','Content-Range','then','get','ChatQueues','UserProfileResource','error','stack','name','map','ChatQueue','rawAttributes','key','getOptions','where','include','findAll','rows','params','model','keys','query','filters','intersection','fields','attributes','length','merge','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','describe','hasOwnProperty','nolimit','limit','offset','order','sort','pick','ChatQueueId','filter','UserChatQueue','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','addTeams','ids','Team','User','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','Agents','select','tq.TeamId','from','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','toString','QueryTypes','SELECT','every','TeamId','includes','compact','value','removeAgents','addAgents','omit','spread','userChatQueue:save','userChatQueue:remove','getAgents','bluebird','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','defaults','redis','localhost','socket.io-emitter'];(function(_0xca1f0e,_0x2713d5){var _0x35e4ef=function(_0x44c40f){while(--_0x44c40f){_0xca1f0e['push'](_0xca1f0e['shift']());}};_0x35e4ef(++_0x2713d5);}(_0x4598,0x15b));var _0x8459=function(_0x56daa6,_0x4cbabf){_0x56daa6=_0x56daa6-0x0;var _0x15ac06=_0x4598[_0x56daa6];return _0x15ac06;};'use strict';var BPromise=require(_0x8459('0x0'));var util=require(_0x8459('0x1'));var _=require(_0x8459('0x2'));var squel=require(_0x8459('0x3'));var Redis=require(_0x8459('0x4'));var qs=require(_0x8459('0x5'));var logger=require(_0x8459('0x6'))(_0x8459('0x7'));var config=require('../../config/environment');var db=require(_0x8459('0x8'))['db'];config['redis']=_[_0x8459('0x9')](config[_0x8459('0xa')],{'host':_0x8459('0xb'),'port':0x18eb});var socket=require(_0x8459('0xc'))(new Redis(config['redis']));require('./chatQueue.socket')[_0x8459('0xd')](socket);function respondWithStatusCode(_0x5aa890,_0x2704ed){_0x2704ed=_0x2704ed||0xcc;return function(_0x173ccf){if(_0x173ccf){return _0x5aa890[_0x8459('0xe')](_0x2704ed);}return _0x5aa890[_0x8459('0xf')](_0x2704ed)[_0x8459('0x10')]();};}function respondWithResult(_0x855ff3,_0x84b40e){_0x84b40e=_0x84b40e||0xc8;return function(_0x1f7538){if(_0x1f7538){return _0x855ff3['status'](_0x84b40e)[_0x8459('0x11')](_0x1f7538);}};}function respondWithFilteredResult(_0x3e25ab,_0x289990){return function(_0x110de0){if(_0x110de0){var _0xe9faff=typeof _0x289990['offset']===_0x8459('0x12')&&typeof _0x289990['limit']===_0x8459('0x12');var _0x2711f1=_0x110de0['count'];var _0x183413=_0xe9faff?0x0:_0x289990['offset'];var _0x110ad3=_0xe9faff?_0x110de0[_0x8459('0x13')]:_0x289990['offset']+_0x289990['limit'];var _0xb8926a;if(_0x110ad3>=_0x2711f1){_0x110ad3=_0x2711f1;_0xb8926a=0xc8;}else{_0xb8926a=0xce;}_0x3e25ab[_0x8459('0xf')](_0xb8926a);return _0x3e25ab['set'](_0x8459('0x14'),_0x183413+'-'+_0x110ad3+'/'+_0x2711f1)[_0x8459('0x11')](_0x110de0);}return null;};}function saveUpdates(_0x5be2d9){return function(_0x2621ea){if(_0x2621ea){return _0x2621ea['update'](_0x5be2d9)['then'](function(_0x23f636){return _0x23f636;});}return null;};}function removeEntity(_0x4a4193){return function(_0x2c0e69){if(_0x2c0e69){return _0x2c0e69['destroy']()[_0x8459('0x15')](function(){var _0x2eb954=_0x2c0e69[_0x8459('0x16')]({'plain':!![]});var _0x14b521=_0x8459('0x17');return db[_0x8459('0x18')]['destroy']({'where':{'type':_0x14b521,'resourceId':_0x2eb954['id']}})[_0x8459('0x15')](function(){return _0x2c0e69;});})[_0x8459('0x15')](function(){_0x4a4193[_0x8459('0xf')](0xcc)[_0x8459('0x10')]();});}};}function handleEntityNotFound(_0x22dfdd){return function(_0x128d1a){if(!_0x128d1a){_0x22dfdd['sendStatus'](0x194);}return _0x128d1a;};}function handleError(_0xfd3d26,_0x12783c){_0x12783c=_0x12783c||0x1f4;return function(_0x45f98e){logger[_0x8459('0x19')](_0x45f98e[_0x8459('0x1a')]);if(_0x45f98e[_0x8459('0x1b')]){delete _0x45f98e[_0x8459('0x1b')];}_0xfd3d26['status'](_0x12783c)['send'](_0x45f98e);};}exports['index']=function(_0x333311,_0x179c1a){var _0x9fb19d={};var _0x2f6cf7={'count':0x0,'rows':[]};var _0x2cd838=_[_0x8459('0x1c')](db[_0x8459('0x1d')][_0x8459('0x1e')],function(_0x518f54){return{'name':_0x518f54['fieldName'],'type':_0x518f54['type'][_0x8459('0x1f')]};});_0x9fb19d=qs[_0x8459('0x20')](_0x2cd838,_0x333311);var _0x147ac2={'where':_0x9fb19d[_0x8459('0x21')]};return db[_0x8459('0x1d')][_0x8459('0x13')](_0x147ac2)[_0x8459('0x15')](function(_0x5ed065){_0x2f6cf7[_0x8459('0x13')]=_0x5ed065;_0x9fb19d[_0x8459('0x22')]=qs['include'](_0x333311['query']);return db['ChatQueue'][_0x8459('0x23')](_0x9fb19d);})[_0x8459('0x15')](function(_0x395d71){_0x2f6cf7[_0x8459('0x24')]=_0x395d71;return _0x2f6cf7;})['then'](respondWithFilteredResult(_0x179c1a,_0x9fb19d))['catch'](handleError(_0x179c1a,null));};exports['show']=function(_0x4001b1,_0x99bc7d){var _0x1bbb37={'raw':!![],'where':{'id':_0x4001b1[_0x8459('0x25')]['id']}},_0x425504={};_0x425504[_0x8459('0x26')]=_[_0x8459('0x27')](db[_0x8459('0x1d')][_0x8459('0x1e')]);_0x425504[_0x8459('0x28')]=_['keys'](_0x4001b1[_0x8459('0x28')]);_0x425504[_0x8459('0x29')]=_[_0x8459('0x2a')](_0x425504['model'],_0x425504['query']);_0x1bbb37['attributes']=_[_0x8459('0x2a')](_0x425504[_0x8459('0x26')],qs[_0x8459('0x2b')](_0x4001b1[_0x8459('0x28')][_0x8459('0x2b')]));_0x1bbb37[_0x8459('0x2c')]=_0x1bbb37['attributes'][_0x8459('0x2d')]?_0x1bbb37['attributes']:_0x425504[_0x8459('0x26')];if(_0x4001b1[_0x8459('0x28')]['includeAll']){_0x1bbb37['include']=[{'all':!![]}];}_0x1bbb37=_[_0x8459('0x2e')]({},_0x1bbb37,_0x4001b1[_0x8459('0x2f')]);return db['ChatQueue'][_0x8459('0x30')](_0x1bbb37)[_0x8459('0x15')](handleEntityNotFound(_0x99bc7d,null))[_0x8459('0x15')](respondWithResult(_0x99bc7d,null))[_0x8459('0x31')](handleError(_0x99bc7d,null));};exports[_0x8459('0x32')]=function(_0x59670e,_0x376655){return db[_0x8459('0x1d')][_0x8459('0x32')](_0x59670e[_0x8459('0x33')],{})[_0x8459('0x15')](function(_0x41e59f){var _0x278401=_0x59670e[_0x8459('0x34')][_0x8459('0x16')]({'plain':!![]});if(!_0x278401)throw new Error(_0x8459('0x35'));if(_0x278401[_0x8459('0x36')]===_0x8459('0x34')){var _0x8bb3f7=_0x41e59f[_0x8459('0x16')]({'plain':!![]});var _0x5f3f59='ChatQueues';return db[_0x8459('0x37')][_0x8459('0x30')]({'where':{'name':_0x5f3f59,'userProfileId':_0x278401[_0x8459('0x38')]},'raw':!![]})[_0x8459('0x15')](function(_0x5ef564){if(_0x5ef564&&_0x5ef564[_0x8459('0x39')]===0x0){return db[_0x8459('0x18')][_0x8459('0x32')]({'name':_0x8bb3f7[_0x8459('0x1b')],'resourceId':_0x8bb3f7['id'],'type':_0x5ef564[_0x8459('0x1b')],'sectionId':_0x5ef564['id']},{})[_0x8459('0x15')](function(){return _0x41e59f;});}else{return _0x41e59f;}})[_0x8459('0x31')](function(_0x395d88){logger[_0x8459('0x19')](_0x8459('0x3a'),_0x395d88);throw _0x395d88;});}return _0x41e59f;})[_0x8459('0x15')](respondWithResult(_0x376655,0xc9))[_0x8459('0x31')](handleError(_0x376655,null));};exports[_0x8459('0x3b')]=function(_0x542ad1,_0x22561b){if(_0x542ad1[_0x8459('0x33')]['id']){delete _0x542ad1[_0x8459('0x33')]['id'];}return db[_0x8459('0x1d')]['find']({'where':{'id':_0x542ad1[_0x8459('0x25')]['id']}})[_0x8459('0x15')](handleEntityNotFound(_0x22561b,null))[_0x8459('0x15')](saveUpdates(_0x542ad1['body'],null))[_0x8459('0x15')](respondWithResult(_0x22561b,null))[_0x8459('0x31')](handleError(_0x22561b,null));};exports[_0x8459('0x3c')]=function(_0x5edf21,_0x4b348c){return db[_0x8459('0x1d')]['find']({'where':{'id':_0x5edf21[_0x8459('0x25')]['id']}})['then'](handleEntityNotFound(_0x4b348c,null))['then'](removeEntity(_0x4b348c,null))[_0x8459('0x31')](handleError(_0x4b348c,null));};exports['describe']=function(_0x213076,_0x5472d7){return db[_0x8459('0x1d')][_0x8459('0x3d')]()[_0x8459('0x15')](respondWithResult(_0x5472d7,null))[_0x8459('0x31')](handleError(_0x5472d7,null));};exports['getMembers']=function(_0x58f588,_0x1147c4){var _0x35418a={'raw':!![],'where':{}},_0xfec078={},_0x41f03c;return db['ChatQueue']['findOne']({'where':{'id':_0x58f588[_0x8459('0x25')]['id']}})[_0x8459('0x15')](handleEntityNotFound(_0x1147c4,null))['then'](function(_0x195248){if(_0x195248){_0x41f03c=_0x195248['get']({'plain':!![]});_0xfec078[_0x8459('0x26')]=_[_0x8459('0x27')](db['UserChatQueue'][_0x8459('0x1e')]);_0xfec078[_0x8459('0x28')]=_['keys'](_0x58f588[_0x8459('0x28')]);_0xfec078[_0x8459('0x29')]=_[_0x8459('0x2a')](_0xfec078[_0x8459('0x26')],_0xfec078[_0x8459('0x28')]);_0x35418a[_0x8459('0x2c')]=_[_0x8459('0x2a')](_0xfec078[_0x8459('0x26')],qs[_0x8459('0x2b')](_0x58f588['query'][_0x8459('0x2b')]));_0x35418a[_0x8459('0x2c')]=_0x35418a['attributes'][_0x8459('0x2d')]?_0x35418a[_0x8459('0x2c')]:_0xfec078[_0x8459('0x26')];if(!_0x58f588[_0x8459('0x28')][_0x8459('0x3e')](_0x8459('0x3f'))){_0x35418a['limit']=qs[_0x8459('0x40')](_0x58f588[_0x8459('0x28')][_0x8459('0x40')]);_0x35418a[_0x8459('0x41')]=qs[_0x8459('0x41')](_0x58f588[_0x8459('0x28')][_0x8459('0x41')]);}_0x35418a[_0x8459('0x42')]=qs[_0x8459('0x43')](_0x58f588[_0x8459('0x28')][_0x8459('0x43')]);_0x35418a[_0x8459('0x21')]=qs[_0x8459('0x29')](_[_0x8459('0x44')](_0x58f588[_0x8459('0x28')],_0xfec078[_0x8459('0x29')]));_0x35418a[_0x8459('0x21')][_0x8459('0x45')]=_0x195248['id'];if(_0x58f588[_0x8459('0x28')][_0x8459('0x46')]){_0x35418a['where']=_[_0x8459('0x2e')](_0x35418a[_0x8459('0x21')],{'$or':_[_0x8459('0x1c')](_0x35418a[_0x8459('0x2c')],function(_0x3161ba){var _0x4def01={};_0x4def01[_0x3161ba]={'$like':'%'+_0x58f588[_0x8459('0x28')][_0x8459('0x46')]+'%'};return _0x4def01;})});}_0x35418a=_[_0x8459('0x2e')]({},_0x35418a,_0x58f588[_0x8459('0x2f')]);return db[_0x8459('0x47')]['findAll'](_0x35418a);}})[_0x8459('0x15')](function(_0x1927a8){if(_0x1927a8){return db['User'][_0x8459('0x48')]({'where':{'id':_[_0x8459('0x1c')](_0x1927a8,_0x8459('0x49')),'role':_0x8459('0x4a')},'attributes':['id',_0x8459('0x1b'),_0x8459('0x4b'),_0x8459('0x4c'),_0x8459('0x4d')]});}})[_0x8459('0x15')](function(_0x130fc2){if(_0x130fc2){return{'count':_0x130fc2[_0x8459('0x13')],'rows':_[_0x8459('0x1c')](_0x130fc2['rows'],function(_0x356f65){return{'membername':_0x356f65[_0x8459('0x1b')],'UserId':_0x356f65['id'],'queue_name':_0x41f03c['name'],'ChatQueueId':_0x41f03c['id'],'interface':util[_0x8459('0x4e')](_0x8459('0x4f'),_0x8459('0x50'),_0x356f65[_0x8459('0x1b')]),'penalty':0x0,'paused':_0x356f65[_0x8459('0x4b')],'createdAt':_0x356f65[_0x8459('0x4d')],'updatedAt':_0x356f65['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x8459('0x15')](respondWithFilteredResult(_0x1147c4,_0x35418a))[_0x8459('0x31')](handleError(_0x1147c4,null));};exports[_0x8459('0x51')]=function(_0x1886be,_0x3980d0){var _0x287d30={};var _0x31e092={};var _0x3dcb57;var _0x3f00b3;return db[_0x8459('0x1d')][_0x8459('0x52')]({'where':{'id':_0x1886be['params']['id']}})[_0x8459('0x15')](handleEntityNotFound(_0x3980d0,null))[_0x8459('0x15')](function(_0x6d2900){if(_0x6d2900){_0x3dcb57=_0x6d2900;_0x31e092[_0x8459('0x26')]=_[_0x8459('0x27')](db['Team'][_0x8459('0x1e')]);_0x31e092[_0x8459('0x28')]=_['keys'](_0x1886be[_0x8459('0x28')]);_0x31e092[_0x8459('0x29')]=_[_0x8459('0x2a')](_0x31e092[_0x8459('0x26')],_0x31e092[_0x8459('0x28')]);_0x287d30[_0x8459('0x2c')]=_[_0x8459('0x2a')](_0x31e092[_0x8459('0x26')],qs['fields'](_0x1886be[_0x8459('0x28')]['fields']));_0x287d30[_0x8459('0x2c')]=_0x287d30['attributes'][_0x8459('0x2d')]?_0x287d30[_0x8459('0x2c')]:_0x31e092['model'];_0x287d30[_0x8459('0x42')]=qs[_0x8459('0x43')](_0x1886be[_0x8459('0x28')][_0x8459('0x43')]);_0x287d30[_0x8459('0x21')]=qs[_0x8459('0x29')](_['pick'](_0x1886be['query'],_0x31e092[_0x8459('0x29')]));if(_0x1886be[_0x8459('0x28')][_0x8459('0x46')]){_0x287d30[_0x8459('0x21')]=_[_0x8459('0x2e')](_0x287d30[_0x8459('0x21')],{'$or':_[_0x8459('0x1c')](_0x287d30[_0x8459('0x2c')],function(_0x2387f2){var _0x32c3e6={};_0x32c3e6[_0x2387f2]={'$like':'%'+_0x1886be[_0x8459('0x28')][_0x8459('0x46')]+'%'};return _0x32c3e6;})});}_0x287d30=_[_0x8459('0x2e')]({},_0x287d30,_0x1886be[_0x8459('0x2f')]);return _0x3dcb57['getTeams'](_0x287d30);}})[_0x8459('0x15')](function(_0x39ecfb){if(_0x39ecfb){_0x3f00b3=_0x39ecfb[_0x8459('0x2d')];if(!_0x1886be[_0x8459('0x28')]['hasOwnProperty']('nolimit')){_0x287d30['limit']=qs[_0x8459('0x40')](_0x1886be[_0x8459('0x28')]['limit']);_0x287d30[_0x8459('0x41')]=qs[_0x8459('0x41')](_0x1886be['query'][_0x8459('0x41')]);}return _0x3dcb57[_0x8459('0x51')](_0x287d30);}})[_0x8459('0x15')](function(_0x54e654){if(_0x54e654){return _0x54e654?{'count':_0x3f00b3,'rows':_0x54e654}:null;}})[_0x8459('0x15')](respondWithResult(_0x3980d0,null))[_0x8459('0x31')](handleError(_0x3980d0,null));};exports[_0x8459('0x53')]=function(_0x2be862,_0x10bf05){var _0x4369b0=_0x2be862[_0x8459('0x33')][_0x8459('0x54')];return db[_0x8459('0x55')][_0x8459('0x23')]({'where':{'id':_0x4369b0},'attributes':['id'],'include':[{'model':db[_0x8459('0x56')],'as':'Agents','attributes':['id',_0x8459('0x1b'),_0x8459('0x57'),_0x8459('0x58'),_0x8459('0x59')],'raw':!![]}]})[_0x8459('0x15')](function(_0x3b8024){if(_0x3b8024){var _0x16c155=_[_0x8459('0x5a')](_0x3b8024,function(_0x2aee0b){var _0x3c2bb8=_0x2aee0b[_0x8459('0x16')]({'plain':!![]});return _0x3c2bb8['Agents'];});return db[_0x8459('0x1d')][_0x8459('0x30')]({'where':{'id':_0x2be862['params']['id']}})[_0x8459('0x15')](function(_0x219581){return db[_0x8459('0x5b')][_0x8459('0x5c')](function(_0x4c3464){return _0x219581['addTeams'](_0x4369b0,{'transaction':_0x4c3464})[_0x8459('0x15')](function(){return BPromise[_0x8459('0x5d')](_0x16c155,function(_0x55a6a5){return db[_0x8459('0x47')][_0x8459('0x5e')]({'where':{'UserId':_0x55a6a5['id'],'ChatQueueId':_0x2be862[_0x8459('0x25')]['id']},'transaction':_0x4c3464});});})[_0x8459('0x15')](function(){_0x16c155[_0x8459('0x5f')](function(_0x501d71){socket[_0x8459('0x60')]('userChatQueue:save',{'UserId':_0x501d71['id'],'ChatQueueId':_0x219581['id']});});});});});}})[_0x8459('0x15')](respondWithStatusCode(_0x10bf05,null))[_0x8459('0x31')](handleError(_0x10bf05,null));};exports[_0x8459('0x61')]=function(_0x35b862,_0x4d64d9){return db[_0x8459('0x55')][_0x8459('0x23')]({'where':{'id':_0x35b862[_0x8459('0x28')][_0x8459('0x54')]},'attributes':['id'],'include':[{'model':db[_0x8459('0x56')],'as':_0x8459('0x62'),'attributes':['id'],'raw':!![]}]})[_0x8459('0x15')](handleEntityNotFound(_0x4d64d9,null))[_0x8459('0x15')](function(_0x2fd47a){var _0x5454e7=_[_0x8459('0x1c')](_0x2fd47a,'id');var _0x30eb05=[];var _0x3a1984=[];var _0x2859e8=squel[_0x8459('0x63')]();_0x2859e8['field'](_0x8459('0x64'))[_0x8459('0x65')](_0x8459('0x66'),'tq')[_0x8459('0x67')]('user_has_teams','ut',_0x8459('0x68'))[_0x8459('0x21')]('ChatQueueId\x20=\x20?',_0x35b862[_0x8459('0x25')]['id']);for(var _0x4e73f9=0x0;_0x4e73f9<_0x2fd47a[_0x8459('0x2d')];_0x4e73f9+=0x1){let _0x3edf88=_0x2fd47a[_0x4e73f9];for(var _0x3aeb2b=0x0;_0x3aeb2b<_0x3edf88[_0x8459('0x62')][_0x8459('0x2d')];_0x3aeb2b+=0x1){let _0x104669=_0x3edf88[_0x8459('0x62')][_0x3aeb2b];var _0x285438=_0x2859e8['clone']();_0x285438[_0x8459('0x21')]('ut.UserId\x20=\x20?',_0x104669['id']);_0x3a1984['push'](db[_0x8459('0x5b')][_0x8459('0x28')](_0x285438[_0x8459('0x69')](),{'type':db[_0x8459('0x5b')][_0x8459('0x6a')][_0x8459('0x6b')]})[_0x8459('0x15')](function(_0x51088e){if(_0x51088e[_0x8459('0x2d')]===0x1){return _0x104669['id'];}else{var _0x36daf4=_[_0x8459('0x6c')](_[_0x8459('0x1c')](_0x51088e,_0x8459('0x6d')),function(_0x2b05cd){return _[_0x8459('0x6e')](_0x5454e7,_0x2b05cd);});if(_0x36daf4){return _0x104669['id'];}}}));}}return BPromise['all'](_0x3a1984)[_0x8459('0x15')](function(_0x2a9a10){_0x30eb05=_(_0x30eb05)['union'](_0x2a9a10)[_0x8459('0x6f')]()[_0x8459('0x70')]();return db['ChatQueue'][_0x8459('0x30')]({'where':{'id':_0x35b862[_0x8459('0x25')]['id']}})[_0x8459('0x15')](function(_0x340529){return db[_0x8459('0x5b')][_0x8459('0x5c')](function(_0x58133a){return _0x340529[_0x8459('0x61')](_0x35b862[_0x8459('0x28')][_0x8459('0x54')],{'transaction':_0x58133a})['then'](function(){if(!_['isEmpty'](_0x30eb05)){return _0x340529[_0x8459('0x71')](_0x30eb05,{'transaction':_0x58133a});}})[_0x8459('0x15')](function(){_0x30eb05[_0x8459('0x5f')](function(_0x239101){socket[_0x8459('0x60')]('userChatQueue:remove',{'UserId':_0x239101,'ChatQueueId':_0x340529['id']});});});});});});})['then'](respondWithStatusCode(_0x4d64d9,null))[_0x8459('0x31')](handleError(_0x4d64d9,null));};exports[_0x8459('0x72')]=function(_0x422e26,_0x8363eb){return db['ChatQueue'][_0x8459('0x30')]({'where':{'id':_0x422e26[_0x8459('0x25')]['id']}})[_0x8459('0x15')](handleEntityNotFound(_0x8363eb,null))[_0x8459('0x15')](function(_0x335a95){if(_0x335a95){return _0x335a95['addAgents'](_0x422e26[_0x8459('0x33')][_0x8459('0x54')],_[_0x8459('0x73')](_0x422e26[_0x8459('0x33')],[_0x8459('0x54'),'id'])||{})[_0x8459('0x74')](function(_0x373677){for(var _0x1c4408=0x0;_0x1c4408<_0x422e26[_0x8459('0x33')][_0x8459('0x54')][_0x8459('0x2d')];_0x1c4408+=0x1){socket[_0x8459('0x60')](_0x8459('0x75'),{'UserId':Number(_0x422e26[_0x8459('0x33')][_0x8459('0x54')][_0x1c4408]),'ChatQueueId':Number(_0x422e26[_0x8459('0x25')]['id'])});}return _0x373677;});}})['then'](respondWithResult(_0x8363eb,null))[_0x8459('0x31')](handleError(_0x8363eb,null));};exports['removeAgents']=function(_0x19f10e,_0x3271ed){return db[_0x8459('0x1d')][_0x8459('0x30')]({'where':{'id':_0x19f10e[_0x8459('0x25')]['id']}})[_0x8459('0x15')](handleEntityNotFound(_0x3271ed,null))[_0x8459('0x15')](function(_0x3ff048){if(_0x3ff048){return _0x3ff048[_0x8459('0x71')](_0x19f10e['query']['ids'])[_0x8459('0x15')](function(){if(_['isArray'](_0x19f10e['query']['ids'])){for(var _0x5b037d=0x0;_0x5b037d<_0x19f10e[_0x8459('0x28')][_0x8459('0x54')][_0x8459('0x2d')];_0x5b037d+=0x1){socket['emit']('userChatQueue:remove',{'UserId':Number(_0x19f10e[_0x8459('0x28')][_0x8459('0x54')][_0x5b037d]),'ChatQueueId':Number(_0x19f10e[_0x8459('0x25')]['id'])});}}else{socket[_0x8459('0x60')](_0x8459('0x76'),{'UserId':Number(_0x19f10e[_0x8459('0x28')][_0x8459('0x54')]),'ChatQueueId':Number(_0x19f10e['params']['id'])});}});}})[_0x8459('0x15')](respondWithStatusCode(_0x3271ed,null))[_0x8459('0x31')](handleError(_0x3271ed,null));};exports['getAgents']=function(_0x388232,_0x1c354c){var _0x1969a2={};var _0x491d1f={};var _0x2df091;var _0x14c965;return db['ChatQueue'][_0x8459('0x52')]({'where':{'id':_0x388232['params']['id']}})['then'](handleEntityNotFound(_0x1c354c,null))[_0x8459('0x15')](function(_0x2b779a){if(_0x2b779a){_0x2df091=_0x2b779a;_0x491d1f[_0x8459('0x26')]=_[_0x8459('0x27')](db['User'][_0x8459('0x1e')]);_0x491d1f[_0x8459('0x28')]=_[_0x8459('0x27')](_0x388232[_0x8459('0x28')]);_0x491d1f[_0x8459('0x29')]=_[_0x8459('0x2a')](_0x491d1f[_0x8459('0x26')],_0x491d1f[_0x8459('0x28')]);_0x1969a2[_0x8459('0x2c')]=_['intersection'](_0x491d1f['model'],qs[_0x8459('0x2b')](_0x388232[_0x8459('0x28')]['fields']));_0x1969a2['attributes']=_0x1969a2['attributes']['length']?_0x1969a2[_0x8459('0x2c')]:_0x491d1f[_0x8459('0x26')];_0x1969a2[_0x8459('0x42')]=qs[_0x8459('0x43')](_0x388232[_0x8459('0x28')][_0x8459('0x43')]);_0x1969a2['where']=qs[_0x8459('0x29')](_['pick'](_0x388232[_0x8459('0x28')],_0x491d1f[_0x8459('0x29')]));if(_0x388232[_0x8459('0x28')][_0x8459('0x46')]){_0x1969a2['where']=_['merge'](_0x1969a2[_0x8459('0x21')],{'$or':_[_0x8459('0x1c')](_0x1969a2['attributes'],function(_0x4e946c){var _0x45f124={};_0x45f124[_0x4e946c]={'$like':'%'+_0x388232[_0x8459('0x28')][_0x8459('0x46')]+'%'};return _0x45f124;})});}_0x1969a2=_[_0x8459('0x2e')]({},_0x1969a2,_0x388232[_0x8459('0x2f')]);return _0x2df091[_0x8459('0x77')](_0x1969a2);}})[_0x8459('0x15')](function(_0x3fd358){if(_0x3fd358){_0x14c965=_0x3fd358['length'];if(!_0x388232[_0x8459('0x28')][_0x8459('0x3e')](_0x8459('0x3f'))){_0x1969a2[_0x8459('0x40')]=qs[_0x8459('0x40')](_0x388232[_0x8459('0x28')][_0x8459('0x40')]);_0x1969a2[_0x8459('0x41')]=qs[_0x8459('0x41')](_0x388232[_0x8459('0x28')][_0x8459('0x41')]);}return _0x2df091[_0x8459('0x77')](_0x1969a2);}})[_0x8459('0x15')](function(_0x91cbfa){if(_0x91cbfa){return _0x91cbfa?{'count':_0x14c965,'rows':_0x91cbfa}:null;}})['then'](respondWithResult(_0x1c354c,null))[_0x8459('0x31')](handleError(_0x1c354c,null));};
\ No newline at end of file
+var _0x9280=['pick','filter','merge','map','User','UserId','agent','chatPause','updatedAt','%s/%s','SIP','createdAt','Team','getTeams','addTeams','ids','Agents','online','voicePause','sequelize','each','findOrCreate','userChatQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','compact','value','transaction','isEmpty','removeAgents','forEach','emit','userChatQueue:remove','addAgents','omit','isArray','getAgents','bluebird','util','lodash','squel','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','socket.io-emitter','redis','./chatQueue.socket','register','sendStatus','status','end','json','undefined','limit','count','Content-Range','update','then','destroy','ChatQueues','stack','name','send','ChatQueue','rawAttributes','fieldName','type','key','where','include','query','findAll','rows','catch','show','params','model','keys','filters','attributes','intersection','length','includeAll','options','find','create','body','user','get','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserChatQueue','fields','hasOwnProperty','nolimit','offset','order','sort'];(function(_0x45a3b7,_0x3d7cc0){var _0x301784=function(_0x47ecc3){while(--_0x47ecc3){_0x45a3b7['push'](_0x45a3b7['shift']());}};_0x301784(++_0x3d7cc0);}(_0x9280,0xab));var _0x0928=function(_0x159931,_0x3f87cc){_0x159931=_0x159931-0x0;var _0x46f591=_0x9280[_0x159931];return _0x46f591;};'use strict';var BPromise=require(_0x0928('0x0'));var util=require(_0x0928('0x1'));var _=require(_0x0928('0x2'));var squel=require(_0x0928('0x3'));var Redis=require('ioredis');var qs=require(_0x0928('0x4'));var logger=require(_0x0928('0x5'))(_0x0928('0x6'));var config=require(_0x0928('0x7'));var db=require(_0x0928('0x8'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0928('0x9'))(new Redis(config[_0x0928('0xa')]));require(_0x0928('0xb'))[_0x0928('0xc')](socket);function respondWithStatusCode(_0x25e4c7,_0x322024){_0x322024=_0x322024||0xcc;return function(_0x425321){if(_0x425321){return _0x25e4c7[_0x0928('0xd')](_0x322024);}return _0x25e4c7[_0x0928('0xe')](_0x322024)[_0x0928('0xf')]();};}function respondWithResult(_0x26ce55,_0xe55f95){_0xe55f95=_0xe55f95||0xc8;return function(_0x1ef5e5){if(_0x1ef5e5){return _0x26ce55[_0x0928('0xe')](_0xe55f95)[_0x0928('0x10')](_0x1ef5e5);}};}function respondWithFilteredResult(_0x911950,_0x164aa7){return function(_0x446d88){if(_0x446d88){var _0x395fa7=typeof _0x164aa7['offset']===_0x0928('0x11')&&typeof _0x164aa7[_0x0928('0x12')]==='undefined';var _0x4fd5c5=_0x446d88[_0x0928('0x13')];var _0x2e7fe0=_0x395fa7?0x0:_0x164aa7['offset'];var _0xa4897f=_0x395fa7?_0x446d88['count']:_0x164aa7['offset']+_0x164aa7[_0x0928('0x12')];var _0xf4da42;if(_0xa4897f>=_0x4fd5c5){_0xa4897f=_0x4fd5c5;_0xf4da42=0xc8;}else{_0xf4da42=0xce;}_0x911950[_0x0928('0xe')](_0xf4da42);return _0x911950['set'](_0x0928('0x14'),_0x2e7fe0+'-'+_0xa4897f+'/'+_0x4fd5c5)[_0x0928('0x10')](_0x446d88);}return null;};}function saveUpdates(_0xe50a95){return function(_0x571728){if(_0x571728){return _0x571728[_0x0928('0x15')](_0xe50a95)[_0x0928('0x16')](function(_0x491a85){return _0x491a85;});}return null;};}function removeEntity(_0x2c1968){return function(_0x525c05){if(_0x525c05){return _0x525c05[_0x0928('0x17')]()[_0x0928('0x16')](function(){var _0x2fdcd8=_0x525c05['get']({'plain':!![]});var _0xc58198=_0x0928('0x18');return db['UserProfileResource'][_0x0928('0x17')]({'where':{'type':_0xc58198,'resourceId':_0x2fdcd8['id']}})[_0x0928('0x16')](function(){return _0x525c05;});})['then'](function(){_0x2c1968[_0x0928('0xe')](0xcc)[_0x0928('0xf')]();});}};}function handleEntityNotFound(_0x3e2e76){return function(_0xaaa536){if(!_0xaaa536){_0x3e2e76[_0x0928('0xd')](0x194);}return _0xaaa536;};}function handleError(_0x16b2a0,_0x585dca){_0x585dca=_0x585dca||0x1f4;return function(_0x139a06){logger['error'](_0x139a06[_0x0928('0x19')]);if(_0x139a06[_0x0928('0x1a')]){delete _0x139a06[_0x0928('0x1a')];}_0x16b2a0[_0x0928('0xe')](_0x585dca)[_0x0928('0x1b')](_0x139a06);};}exports['index']=function(_0x5aac57,_0x4b0321){var _0x525017={};var _0x44fee7={'count':0x0,'rows':[]};var _0x2a0f72=_['map'](db[_0x0928('0x1c')][_0x0928('0x1d')],function(_0x2554dd){return{'name':_0x2554dd[_0x0928('0x1e')],'type':_0x2554dd[_0x0928('0x1f')][_0x0928('0x20')]};});_0x525017=qs['getOptions'](_0x2a0f72,_0x5aac57);var _0x27fd34={'where':_0x525017[_0x0928('0x21')]};return db[_0x0928('0x1c')]['count'](_0x27fd34)[_0x0928('0x16')](function(_0x2e9c51){_0x44fee7['count']=_0x2e9c51;_0x525017[_0x0928('0x22')]=qs[_0x0928('0x22')](_0x5aac57[_0x0928('0x23')]);return db[_0x0928('0x1c')][_0x0928('0x24')](_0x525017);})[_0x0928('0x16')](function(_0x2f95f3){_0x44fee7[_0x0928('0x25')]=_0x2f95f3;return _0x44fee7;})[_0x0928('0x16')](respondWithFilteredResult(_0x4b0321,_0x525017))[_0x0928('0x26')](handleError(_0x4b0321,null));};exports[_0x0928('0x27')]=function(_0x1b155b,_0x599a1b){var _0x21a969={'raw':!![],'where':{'id':_0x1b155b[_0x0928('0x28')]['id']}},_0x58ab1a={};_0x58ab1a[_0x0928('0x29')]=_[_0x0928('0x2a')](db[_0x0928('0x1c')][_0x0928('0x1d')]);_0x58ab1a[_0x0928('0x23')]=_['keys'](_0x1b155b['query']);_0x58ab1a[_0x0928('0x2b')]=_['intersection'](_0x58ab1a[_0x0928('0x29')],_0x58ab1a[_0x0928('0x23')]);_0x21a969[_0x0928('0x2c')]=_[_0x0928('0x2d')](_0x58ab1a[_0x0928('0x29')],qs['fields'](_0x1b155b['query']['fields']));_0x21a969[_0x0928('0x2c')]=_0x21a969[_0x0928('0x2c')][_0x0928('0x2e')]?_0x21a969[_0x0928('0x2c')]:_0x58ab1a[_0x0928('0x29')];if(_0x1b155b[_0x0928('0x23')][_0x0928('0x2f')]){_0x21a969[_0x0928('0x22')]=[{'all':!![]}];}_0x21a969=_['merge']({},_0x21a969,_0x1b155b[_0x0928('0x30')]);return db['ChatQueue'][_0x0928('0x31')](_0x21a969)[_0x0928('0x16')](handleEntityNotFound(_0x599a1b,null))[_0x0928('0x16')](respondWithResult(_0x599a1b,null))[_0x0928('0x26')](handleError(_0x599a1b,null));};exports[_0x0928('0x32')]=function(_0x2436fb,_0x369b44){return db[_0x0928('0x1c')][_0x0928('0x32')](_0x2436fb[_0x0928('0x33')],{})[_0x0928('0x16')](function(_0x421133){var _0x1e33a7=_0x2436fb[_0x0928('0x34')][_0x0928('0x35')]({'plain':!![]});if(!_0x1e33a7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e33a7[_0x0928('0x36')]===_0x0928('0x34')){var _0x2d80f0=_0x421133[_0x0928('0x35')]({'plain':!![]});var _0x50c1c0=_0x0928('0x18');return db['UserProfileSection'][_0x0928('0x31')]({'where':{'name':_0x50c1c0,'userProfileId':_0x1e33a7[_0x0928('0x37')]},'raw':!![]})[_0x0928('0x16')](function(_0x59a646){if(_0x59a646&&_0x59a646[_0x0928('0x38')]===0x0){return db[_0x0928('0x39')][_0x0928('0x32')]({'name':_0x2d80f0[_0x0928('0x1a')],'resourceId':_0x2d80f0['id'],'type':_0x59a646[_0x0928('0x1a')],'sectionId':_0x59a646['id']},{})[_0x0928('0x16')](function(){return _0x421133;});}else{return _0x421133;}})[_0x0928('0x26')](function(_0x13d0c7){logger['error'](_0x0928('0x3a'),_0x13d0c7);throw _0x13d0c7;});}return _0x421133;})[_0x0928('0x16')](respondWithResult(_0x369b44,0xc9))[_0x0928('0x26')](handleError(_0x369b44,null));};exports[_0x0928('0x15')]=function(_0x14b9c9,_0x191365){if(_0x14b9c9['body']['id']){delete _0x14b9c9[_0x0928('0x33')]['id'];}return db['ChatQueue']['find']({'where':{'id':_0x14b9c9[_0x0928('0x28')]['id']}})[_0x0928('0x16')](handleEntityNotFound(_0x191365,null))['then'](saveUpdates(_0x14b9c9[_0x0928('0x33')],null))[_0x0928('0x16')](respondWithResult(_0x191365,null))[_0x0928('0x26')](handleError(_0x191365,null));};exports[_0x0928('0x17')]=function(_0x193dfd,_0x407677){return db[_0x0928('0x1c')][_0x0928('0x31')]({'where':{'id':_0x193dfd[_0x0928('0x28')]['id']}})[_0x0928('0x16')](handleEntityNotFound(_0x407677,null))[_0x0928('0x16')](removeEntity(_0x407677,null))[_0x0928('0x26')](handleError(_0x407677,null));};exports[_0x0928('0x3b')]=function(_0x2d35c5,_0x233543){return db[_0x0928('0x1c')][_0x0928('0x3b')]()['then'](respondWithResult(_0x233543,null))['catch'](handleError(_0x233543,null));};exports[_0x0928('0x3c')]=function(_0x589064,_0xb05ba4){var _0x57fb69={'raw':!![],'where':{}},_0x511447={},_0x4e8d33;return db['ChatQueue'][_0x0928('0x3d')]({'where':{'id':_0x589064[_0x0928('0x28')]['id']}})[_0x0928('0x16')](handleEntityNotFound(_0xb05ba4,null))[_0x0928('0x16')](function(_0x2a4f61){if(_0x2a4f61){_0x4e8d33=_0x2a4f61[_0x0928('0x35')]({'plain':!![]});_0x511447[_0x0928('0x29')]=_['keys'](db[_0x0928('0x3e')]['rawAttributes']);_0x511447[_0x0928('0x23')]=_[_0x0928('0x2a')](_0x589064[_0x0928('0x23')]);_0x511447[_0x0928('0x2b')]=_[_0x0928('0x2d')](_0x511447[_0x0928('0x29')],_0x511447[_0x0928('0x23')]);_0x57fb69[_0x0928('0x2c')]=_['intersection'](_0x511447[_0x0928('0x29')],qs['fields'](_0x589064['query'][_0x0928('0x3f')]));_0x57fb69[_0x0928('0x2c')]=_0x57fb69['attributes'][_0x0928('0x2e')]?_0x57fb69[_0x0928('0x2c')]:_0x511447[_0x0928('0x29')];if(!_0x589064[_0x0928('0x23')][_0x0928('0x40')](_0x0928('0x41'))){_0x57fb69[_0x0928('0x12')]=qs['limit'](_0x589064[_0x0928('0x23')][_0x0928('0x12')]);_0x57fb69[_0x0928('0x42')]=qs['offset'](_0x589064[_0x0928('0x23')][_0x0928('0x42')]);}_0x57fb69[_0x0928('0x43')]=qs[_0x0928('0x44')](_0x589064[_0x0928('0x23')]['sort']);_0x57fb69['where']=qs[_0x0928('0x2b')](_[_0x0928('0x45')](_0x589064[_0x0928('0x23')],_0x511447[_0x0928('0x2b')]));_0x57fb69[_0x0928('0x21')]['ChatQueueId']=_0x2a4f61['id'];if(_0x589064[_0x0928('0x23')][_0x0928('0x46')]){_0x57fb69['where']=_[_0x0928('0x47')](_0x57fb69[_0x0928('0x21')],{'$or':_[_0x0928('0x48')](_0x57fb69['attributes'],function(_0x141c06){var _0x40aeb3={};_0x40aeb3[_0x141c06]={'$like':'%'+_0x589064[_0x0928('0x23')]['filter']+'%'};return _0x40aeb3;})});}_0x57fb69=_[_0x0928('0x47')]({},_0x57fb69,_0x589064['options']);return db['UserChatQueue'][_0x0928('0x24')](_0x57fb69);}})[_0x0928('0x16')](function(_0x2f0b18){if(_0x2f0b18){return db[_0x0928('0x49')]['findAndCountAll']({'where':{'id':_[_0x0928('0x48')](_0x2f0b18,_0x0928('0x4a')),'role':_0x0928('0x4b')},'attributes':['id',_0x0928('0x1a'),_0x0928('0x4c'),_0x0928('0x4d'),'createdAt']});}})[_0x0928('0x16')](function(_0x4d8ce5){if(_0x4d8ce5){return{'count':_0x4d8ce5[_0x0928('0x13')],'rows':_['map'](_0x4d8ce5['rows'],function(_0x2c68a4){return{'membername':_0x2c68a4[_0x0928('0x1a')],'UserId':_0x2c68a4['id'],'queue_name':_0x4e8d33['name'],'ChatQueueId':_0x4e8d33['id'],'interface':util['format'](_0x0928('0x4e'),_0x0928('0x4f'),_0x2c68a4[_0x0928('0x1a')]),'penalty':0x0,'paused':_0x2c68a4[_0x0928('0x4c')],'createdAt':_0x2c68a4[_0x0928('0x50')],'updatedAt':_0x2c68a4[_0x0928('0x4d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x0928('0x16')](respondWithFilteredResult(_0xb05ba4,_0x57fb69))[_0x0928('0x26')](handleError(_0xb05ba4,null));};exports['getTeams']=function(_0x2ac445,_0x46ebd8){var _0x2467a4={};var _0x2f056b={};var _0x3d2d12;var _0x4af8cb;return db[_0x0928('0x1c')][_0x0928('0x3d')]({'where':{'id':_0x2ac445[_0x0928('0x28')]['id']}})['then'](handleEntityNotFound(_0x46ebd8,null))['then'](function(_0x24b484){if(_0x24b484){_0x3d2d12=_0x24b484;_0x2f056b[_0x0928('0x29')]=_[_0x0928('0x2a')](db[_0x0928('0x51')][_0x0928('0x1d')]);_0x2f056b['query']=_[_0x0928('0x2a')](_0x2ac445[_0x0928('0x23')]);_0x2f056b[_0x0928('0x2b')]=_[_0x0928('0x2d')](_0x2f056b[_0x0928('0x29')],_0x2f056b[_0x0928('0x23')]);_0x2467a4[_0x0928('0x2c')]=_[_0x0928('0x2d')](_0x2f056b[_0x0928('0x29')],qs[_0x0928('0x3f')](_0x2ac445[_0x0928('0x23')][_0x0928('0x3f')]));_0x2467a4[_0x0928('0x2c')]=_0x2467a4[_0x0928('0x2c')][_0x0928('0x2e')]?_0x2467a4[_0x0928('0x2c')]:_0x2f056b['model'];_0x2467a4[_0x0928('0x43')]=qs[_0x0928('0x44')](_0x2ac445[_0x0928('0x23')][_0x0928('0x44')]);_0x2467a4[_0x0928('0x21')]=qs['filters'](_[_0x0928('0x45')](_0x2ac445[_0x0928('0x23')],_0x2f056b[_0x0928('0x2b')]));if(_0x2ac445[_0x0928('0x23')][_0x0928('0x46')]){_0x2467a4[_0x0928('0x21')]=_['merge'](_0x2467a4['where'],{'$or':_[_0x0928('0x48')](_0x2467a4[_0x0928('0x2c')],function(_0x2dd64a){var _0x1cff6d={};_0x1cff6d[_0x2dd64a]={'$like':'%'+_0x2ac445[_0x0928('0x23')][_0x0928('0x46')]+'%'};return _0x1cff6d;})});}_0x2467a4=_[_0x0928('0x47')]({},_0x2467a4,_0x2ac445['options']);return _0x3d2d12['getTeams'](_0x2467a4);}})[_0x0928('0x16')](function(_0x542ef9){if(_0x542ef9){_0x4af8cb=_0x542ef9[_0x0928('0x2e')];if(!_0x2ac445[_0x0928('0x23')][_0x0928('0x40')](_0x0928('0x41'))){_0x2467a4['limit']=qs[_0x0928('0x12')](_0x2ac445[_0x0928('0x23')][_0x0928('0x12')]);_0x2467a4[_0x0928('0x42')]=qs[_0x0928('0x42')](_0x2ac445[_0x0928('0x23')][_0x0928('0x42')]);}return _0x3d2d12[_0x0928('0x52')](_0x2467a4);}})[_0x0928('0x16')](function(_0x1c64ab){if(_0x1c64ab){return _0x1c64ab?{'count':_0x4af8cb,'rows':_0x1c64ab}:null;}})['then'](respondWithResult(_0x46ebd8,null))[_0x0928('0x26')](handleError(_0x46ebd8,null));};exports[_0x0928('0x53')]=function(_0x5e06eb,_0x18241d){var _0x4c61e9=_0x5e06eb[_0x0928('0x33')][_0x0928('0x54')];return db[_0x0928('0x51')][_0x0928('0x24')]({'where':{'id':_0x4c61e9},'attributes':['id'],'include':[{'model':db[_0x0928('0x49')],'as':_0x0928('0x55'),'attributes':['id',_0x0928('0x1a'),_0x0928('0x56'),_0x0928('0x57'),'interface'],'raw':!![]}]})[_0x0928('0x16')](function(_0x42968e){if(_0x42968e){var _0x29015e=_['flatMap'](_0x42968e,function(_0x87160a){var _0x2ce664=_0x87160a[_0x0928('0x35')]({'plain':!![]});return _0x2ce664[_0x0928('0x55')];});return db['ChatQueue'][_0x0928('0x31')]({'where':{'id':_0x5e06eb[_0x0928('0x28')]['id']}})[_0x0928('0x16')](function(_0x81b6f8){return db[_0x0928('0x58')]['transaction'](function(_0x1f73f7){return _0x81b6f8[_0x0928('0x53')](_0x4c61e9,{'transaction':_0x1f73f7})[_0x0928('0x16')](function(){return BPromise[_0x0928('0x59')](_0x29015e,function(_0x5ae10b){return db[_0x0928('0x3e')][_0x0928('0x5a')]({'where':{'UserId':_0x5ae10b['id'],'ChatQueueId':_0x5e06eb[_0x0928('0x28')]['id']},'transaction':_0x1f73f7});});})[_0x0928('0x16')](function(){_0x29015e['forEach'](function(_0x2237cf){socket['emit'](_0x0928('0x5b'),{'UserId':_0x2237cf['id'],'ChatQueueId':_0x81b6f8['id']});});});});});}})['then'](respondWithStatusCode(_0x18241d,null))[_0x0928('0x26')](handleError(_0x18241d,null));};exports[_0x0928('0x5c')]=function(_0x4c7ee4,_0x3e9d93){return db['Team'][_0x0928('0x24')]({'where':{'id':_0x4c7ee4[_0x0928('0x23')][_0x0928('0x54')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0928('0x55'),'attributes':['id'],'raw':!![]}]})[_0x0928('0x16')](handleEntityNotFound(_0x3e9d93,null))[_0x0928('0x16')](function(_0x596df1){var _0x3f8d62=_[_0x0928('0x48')](_0x596df1,'id');var _0x1fa1d4=[];var _0x39bbe2=[];var _0x31b075=squel[_0x0928('0x5d')]();_0x31b075[_0x0928('0x5e')](_0x0928('0x5f'))[_0x0928('0x60')](_0x0928('0x61'),'tq')[_0x0928('0x62')](_0x0928('0x63'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x0928('0x21')](_0x0928('0x64'),_0x4c7ee4[_0x0928('0x28')]['id']);for(var _0x939444=0x0;_0x939444<_0x596df1[_0x0928('0x2e')];_0x939444+=0x1){let _0x66455=_0x596df1[_0x939444];for(var _0x5e7466=0x0;_0x5e7466<_0x66455['Agents']['length'];_0x5e7466+=0x1){let _0x5d1615=_0x66455['Agents'][_0x5e7466];var _0x44acc0=_0x31b075[_0x0928('0x65')]();_0x44acc0[_0x0928('0x21')](_0x0928('0x66'),_0x5d1615['id']);_0x39bbe2[_0x0928('0x67')](db[_0x0928('0x58')][_0x0928('0x23')](_0x44acc0[_0x0928('0x68')](),{'type':db[_0x0928('0x58')][_0x0928('0x69')][_0x0928('0x6a')]})['then'](function(_0x257dab){if(_0x257dab[_0x0928('0x2e')]===0x1){return _0x5d1615['id'];}else{var _0x495804=_[_0x0928('0x6b')](_['map'](_0x257dab,'TeamId'),function(_0x2f3a54){return _['includes'](_0x3f8d62,_0x2f3a54);});if(_0x495804){return _0x5d1615['id'];}}}));}}return BPromise['all'](_0x39bbe2)[_0x0928('0x16')](function(_0x1d490b){_0x1fa1d4=_(_0x1fa1d4)['union'](_0x1d490b)[_0x0928('0x6c')]()[_0x0928('0x6d')]();return db['ChatQueue']['find']({'where':{'id':_0x4c7ee4[_0x0928('0x28')]['id']}})[_0x0928('0x16')](function(_0xea27fb){return db['sequelize'][_0x0928('0x6e')](function(_0x3e14ee){return _0xea27fb['removeTeams'](_0x4c7ee4['query']['ids'],{'transaction':_0x3e14ee})[_0x0928('0x16')](function(){if(!_[_0x0928('0x6f')](_0x1fa1d4)){return _0xea27fb[_0x0928('0x70')](_0x1fa1d4,{'transaction':_0x3e14ee});}})[_0x0928('0x16')](function(){_0x1fa1d4[_0x0928('0x71')](function(_0x3147f7){socket[_0x0928('0x72')](_0x0928('0x73'),{'UserId':_0x3147f7,'ChatQueueId':_0xea27fb['id']});});});});});});})[_0x0928('0x16')](respondWithStatusCode(_0x3e9d93,null))[_0x0928('0x26')](handleError(_0x3e9d93,null));};exports[_0x0928('0x74')]=function(_0x3b78e5,_0x5d2baf){return db['ChatQueue'][_0x0928('0x31')]({'where':{'id':_0x3b78e5[_0x0928('0x28')]['id']}})[_0x0928('0x16')](handleEntityNotFound(_0x5d2baf,null))['then'](function(_0x2ab39e){if(_0x2ab39e){return _0x2ab39e[_0x0928('0x74')](_0x3b78e5[_0x0928('0x33')][_0x0928('0x54')],_[_0x0928('0x75')](_0x3b78e5[_0x0928('0x33')],[_0x0928('0x54'),'id'])||{})['spread'](function(_0x489357){for(var _0x456db8=0x0;_0x456db8<_0x3b78e5[_0x0928('0x33')]['ids'][_0x0928('0x2e')];_0x456db8+=0x1){socket[_0x0928('0x72')](_0x0928('0x5b'),{'UserId':Number(_0x3b78e5[_0x0928('0x33')]['ids'][_0x456db8]),'ChatQueueId':Number(_0x3b78e5[_0x0928('0x28')]['id'])});}return _0x489357;});}})[_0x0928('0x16')](respondWithResult(_0x5d2baf,null))['catch'](handleError(_0x5d2baf,null));};exports[_0x0928('0x70')]=function(_0x391bc9,_0x1ce635){return db['ChatQueue'][_0x0928('0x31')]({'where':{'id':_0x391bc9[_0x0928('0x28')]['id']}})[_0x0928('0x16')](handleEntityNotFound(_0x1ce635,null))[_0x0928('0x16')](function(_0x27fb94){if(_0x27fb94){return _0x27fb94['removeAgents'](_0x391bc9[_0x0928('0x23')][_0x0928('0x54')])[_0x0928('0x16')](function(){if(_[_0x0928('0x76')](_0x391bc9['query'][_0x0928('0x54')])){for(var _0x384beb=0x0;_0x384beb<_0x391bc9[_0x0928('0x23')][_0x0928('0x54')][_0x0928('0x2e')];_0x384beb+=0x1){socket[_0x0928('0x72')](_0x0928('0x73'),{'UserId':Number(_0x391bc9[_0x0928('0x23')][_0x0928('0x54')][_0x384beb]),'ChatQueueId':Number(_0x391bc9[_0x0928('0x28')]['id'])});}}else{socket[_0x0928('0x72')](_0x0928('0x73'),{'UserId':Number(_0x391bc9[_0x0928('0x23')][_0x0928('0x54')]),'ChatQueueId':Number(_0x391bc9['params']['id'])});}});}})[_0x0928('0x16')](respondWithStatusCode(_0x1ce635,null))[_0x0928('0x26')](handleError(_0x1ce635,null));};exports[_0x0928('0x77')]=function(_0x8b0765,_0x3d339b){var _0x380086={};var _0x36711a={};var _0x15d2a6;var _0x33a5e6;return db[_0x0928('0x1c')][_0x0928('0x3d')]({'where':{'id':_0x8b0765[_0x0928('0x28')]['id']}})[_0x0928('0x16')](handleEntityNotFound(_0x3d339b,null))[_0x0928('0x16')](function(_0x278149){if(_0x278149){_0x15d2a6=_0x278149;_0x36711a[_0x0928('0x29')]=_[_0x0928('0x2a')](db[_0x0928('0x49')][_0x0928('0x1d')]);_0x36711a[_0x0928('0x23')]=_[_0x0928('0x2a')](_0x8b0765['query']);_0x36711a[_0x0928('0x2b')]=_['intersection'](_0x36711a[_0x0928('0x29')],_0x36711a[_0x0928('0x23')]);_0x380086[_0x0928('0x2c')]=_[_0x0928('0x2d')](_0x36711a[_0x0928('0x29')],qs[_0x0928('0x3f')](_0x8b0765['query'][_0x0928('0x3f')]));_0x380086[_0x0928('0x2c')]=_0x380086['attributes'][_0x0928('0x2e')]?_0x380086[_0x0928('0x2c')]:_0x36711a[_0x0928('0x29')];_0x380086['order']=qs[_0x0928('0x44')](_0x8b0765[_0x0928('0x23')][_0x0928('0x44')]);_0x380086[_0x0928('0x21')]=qs[_0x0928('0x2b')](_[_0x0928('0x45')](_0x8b0765[_0x0928('0x23')],_0x36711a[_0x0928('0x2b')]));if(_0x8b0765[_0x0928('0x23')]['filter']){_0x380086[_0x0928('0x21')]=_[_0x0928('0x47')](_0x380086[_0x0928('0x21')],{'$or':_[_0x0928('0x48')](_0x380086[_0x0928('0x2c')],function(_0x393d69){var _0x25eaf8={};_0x25eaf8[_0x393d69]={'$like':'%'+_0x8b0765[_0x0928('0x23')]['filter']+'%'};return _0x25eaf8;})});}_0x380086=_[_0x0928('0x47')]({},_0x380086,_0x8b0765[_0x0928('0x30')]);return _0x15d2a6['getAgents'](_0x380086);}})[_0x0928('0x16')](function(_0x5818d2){if(_0x5818d2){_0x33a5e6=_0x5818d2['length'];if(!_0x8b0765[_0x0928('0x23')]['hasOwnProperty'](_0x0928('0x41'))){_0x380086[_0x0928('0x12')]=qs[_0x0928('0x12')](_0x8b0765[_0x0928('0x23')][_0x0928('0x12')]);_0x380086[_0x0928('0x42')]=qs[_0x0928('0x42')](_0x8b0765[_0x0928('0x23')][_0x0928('0x42')]);}return _0x15d2a6[_0x0928('0x77')](_0x380086);}})[_0x0928('0x16')](function(_0x43d72b){if(_0x43d72b){return _0x43d72b?{'count':_0x33a5e6,'rows':_0x43d72b}:null;}})['then'](respondWithResult(_0x3d339b,null))['catch'](handleError(_0x3d339b,null));};
\ No newline at end of file
index fa25c1c..7745f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d22=['remove','emit','exports','events','ChatQueue','update'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x4d22,0x1ef));var _0x24d2=function(_0x16418a,_0xd99cfc){_0x16418a=_0x16418a-0x0;var _0x2823ac=_0x4d22[_0x16418a];return _0x2823ac;};'use strict';var EventEmitter=require(_0x24d2('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0x24d2('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x24d2('0x2'),'afterDestroy':_0x24d2('0x3')};function emitEvent(_0x530385){return function(_0x43b13c,_0x4e5d53,_0x443867){ChatQueueEvents[_0x24d2('0x4')](_0x530385+':'+_0x43b13c['id'],_0x43b13c);ChatQueueEvents['emit'](_0x530385,_0x43b13c);_0x443867(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0x24d2('0x5')]=ChatQueueEvents;
\ No newline at end of file
+var _0x3cc8=['remove','emit','hasOwnProperty','ChatQueue','setMaxListeners','save','update'];(function(_0x35278e,_0x219be3){var _0x250560=function(_0x1b7ab9){while(--_0x1b7ab9){_0x35278e['push'](_0x35278e['shift']());}};_0x250560(++_0x219be3);}(_0x3cc8,0x1ca));var _0x83cc=function(_0x1e5ba6,_0x562579){_0x1e5ba6=_0x1e5ba6-0x0;var _0x146c88=_0x3cc8[_0x1e5ba6];return _0x146c88;};'use strict';var EventEmitter=require('events');var ChatQueue=require('../../mysqldb')['db'][_0x83cc('0x0')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x83cc('0x1')](0x0);var events={'afterCreate':_0x83cc('0x2'),'afterUpdate':_0x83cc('0x3'),'afterDestroy':_0x83cc('0x4')};function emitEvent(_0x339ce7){return function(_0x5775b9,_0x547be9,_0x2ef9b8){ChatQueueEvents[_0x83cc('0x5')](_0x339ce7+':'+_0x5775b9['id'],_0x5775b9);ChatQueueEvents[_0x83cc('0x5')](_0x339ce7,_0x5775b9);_0x2ef9b8(null);};}for(var e in events){if(events[_0x83cc('0x6')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index e23ffec..6cd85ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a39=['lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','exports','ChatQueue','chat_queues'];(function(_0x1f04a7,_0x591620){var _0x627adf=function(_0x1ead93){while(--_0x1ead93){_0x1f04a7['push'](_0x1f04a7['shift']());}};_0x627adf(++_0x591620);}(_0x3a39,0x1c2));var _0x93a3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3a39[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x93a3('0x0'));var util=require(_0x93a3('0x1'));var logger=require(_0x93a3('0x2'))(_0x93a3('0x3'));var moment=require(_0x93a3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x93a3('0x5'));var config=require(_0x93a3('0x6'));var attributes=require('./chatQueue.attributes');module[_0x93a3('0x7')]=function(_0x54eab7,_0x299180){return _0x54eab7['define'](_0x93a3('0x8'),attributes,{'tableName':_0x93a3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed86=['ChatQueue','chat_queues','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports'];(function(_0x5d9341,_0x3b6c34){var _0xf55979=function(_0x1fc670){while(--_0x1fc670){_0x5d9341['push'](_0x5d9341['shift']());}};_0xf55979(++_0x3b6c34);}(_0xed86,0xff));var _0x6ed8=function(_0xd39959,_0x302d09){_0xd39959=_0xd39959-0x0;var _0x1ff69c=_0xed86[_0xd39959];return _0x1ff69c;};'use strict';var _=require(_0x6ed8('0x0'));var util=require(_0x6ed8('0x1'));var logger=require(_0x6ed8('0x2'))(_0x6ed8('0x3'));var moment=require(_0x6ed8('0x4'));var BPromise=require('bluebird');var rp=require(_0x6ed8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6ed8('0x6'));var config=require(_0x6ed8('0x7'));var attributes=require('./chatQueue.attributes');module[_0x6ed8('0x8')]=function(_0x2ae2dd,_0x36243c){return _0x2ae2dd['define'](_0x6ed8('0x9'),attributes,{'tableName':_0x6ed8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e53e406..aa987fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4965=['request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','options','raw','where','attributes','limit','include','model','map','ShowChatQueue','lodash','util','moment','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./chatQueue.socket','register'];(function(_0x28aea5,_0x3bb12e){var _0x6a55f9=function(_0xf6ece8){while(--_0xf6ece8){_0x28aea5['push'](_0x28aea5['shift']());}};_0x6a55f9(++_0x3bb12e);}(_0x4965,0x16e));var _0x5496=function(_0x5bb9ac,_0x417c09){_0x5bb9ac=_0x5bb9ac-0x0;var _0x38fd65=_0x4965[_0x5bb9ac];return _0x38fd65;};'use strict';var _=require(_0x5496('0x0'));var util=require(_0x5496('0x1'));var moment=require(_0x5496('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5496('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x5496('0x4'))(_0x5496('0x5'));var config=require(_0x5496('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x5496('0x7')][_0x5496('0x8')]({'port':0x232a});config[_0x5496('0x9')]=_[_0x5496('0xa')](config['redis'],{'host':_0x5496('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5496('0x9')]));require(_0x5496('0xc'))[_0x5496('0xd')](socket);function respondWithRpcPromise(_0x5dc64a,_0x443752,_0xd18801){return new BPromise(function(_0x42f073,_0x13f202){return client[_0x5496('0xe')](_0x5dc64a,_0xd18801)[_0x5496('0xf')](function(_0x25d676){logger[_0x5496('0x10')](_0x5496('0x11'),_0x443752,_0x5496('0x12'));logger[_0x5496('0x13')](_0x5496('0x14'),_0x443752,_0x5496('0x12'),JSON[_0x5496('0x15')](_0x25d676));if(_0x25d676[_0x5496('0x16')]){if(_0x25d676['error'][_0x5496('0x17')]===0x1f4){logger[_0x5496('0x16')](_0x5496('0x11'),_0x443752,_0x25d676[_0x5496('0x16')][_0x5496('0x18')]);return _0x13f202(_0x25d676[_0x5496('0x16')][_0x5496('0x18')]);}logger[_0x5496('0x16')]('ChatQueue,\x20%s,\x20%s',_0x443752,_0x25d676['error'][_0x5496('0x18')]);return _0x42f073(_0x25d676[_0x5496('0x16')][_0x5496('0x18')]);}else{logger[_0x5496('0x10')](_0x5496('0x11'),_0x443752,_0x5496('0x12'));_0x42f073(_0x25d676[_0x5496('0x19')][_0x5496('0x18')]);}})[_0x5496('0x1a')](function(_0x512872){logger['error'](_0x5496('0x11'),_0x443752,_0x512872);_0x13f202(_0x512872);});});}exports[_0x5496('0x1b')]=function(_0x10599a){var _0x2cd842=this;return new Promise(function(_0x4d2a9d,_0x701eca){return db[_0x5496('0x1c')]['findAll']({'raw':_0x10599a[_0x5496('0x1d')]?_0x10599a[_0x5496('0x1d')][_0x5496('0x1e')]===undefined?!![]:![]:!![],'where':_0x10599a[_0x5496('0x1d')]?_0x10599a[_0x5496('0x1d')][_0x5496('0x1f')]||null:null,'attributes':_0x10599a[_0x5496('0x1d')]?_0x10599a[_0x5496('0x1d')][_0x5496('0x20')]||null:null,'limit':_0x10599a[_0x5496('0x1d')]?_0x10599a[_0x5496('0x1d')][_0x5496('0x21')]||null:null,'include':_0x10599a[_0x5496('0x1d')]?_0x10599a['options'][_0x5496('0x22')]?_['map'](_0x10599a['options']['include'],function(_0xc6e98b){return{'model':db[_0xc6e98b[_0x5496('0x23')]],'as':_0xc6e98b['as'],'attributes':_0xc6e98b[_0x5496('0x20')],'include':_0xc6e98b[_0x5496('0x22')]?_[_0x5496('0x24')](_0xc6e98b[_0x5496('0x22')],function(_0x38ff07){return{'model':db[_0x38ff07[_0x5496('0x23')]],'as':_0x38ff07['as'],'attributes':_0x38ff07[_0x5496('0x20')],'include':_0x38ff07[_0x5496('0x22')]?_['map'](_0x38ff07[_0x5496('0x22')],function(_0x28d7d5){return{'model':db[_0x28d7d5['model']],'as':_0x28d7d5['as'],'attributes':_0x28d7d5[_0x5496('0x20')]};}):[]};}):[]};}):[]:[]})[_0x5496('0xf')](function(_0x119a56){logger['info']('GetChatQueue',_0x10599a);logger['debug']('GetChatQueue',_0x10599a,JSON[_0x5496('0x15')](_0x119a56));_0x4d2a9d(_0x119a56);})[_0x5496('0x1a')](function(_0x33ae26){logger[_0x5496('0x16')](_0x5496('0x1b'),_0x33ae26[_0x5496('0x18')],_0x10599a);_0x701eca(_0x2cd842['error'](0x1f4,_0x33ae26[_0x5496('0x18')]));});});};exports[_0x5496('0x25')]=function(_0x539489){var _0x2c6514=this;return new Promise(function(_0x903d94,_0xf1b3cf){return db[_0x5496('0x1c')]['find']({'raw':_0x539489['options']?_0x539489[_0x5496('0x1d')][_0x5496('0x1e')]===undefined?!![]:![]:!![],'where':_0x539489[_0x5496('0x1d')]?_0x539489[_0x5496('0x1d')][_0x5496('0x1f')]||null:null,'attributes':_0x539489[_0x5496('0x1d')]?_0x539489[_0x5496('0x1d')]['attributes']||null:null,'include':_0x539489['options']?_0x539489[_0x5496('0x1d')]['include']?_[_0x5496('0x24')](_0x539489[_0x5496('0x1d')][_0x5496('0x22')],function(_0x16bd72){return{'model':db[_0x16bd72[_0x5496('0x23')]],'as':_0x16bd72['as'],'attributes':_0x16bd72['attributes'],'include':_0x16bd72[_0x5496('0x22')]?_['map'](_0x16bd72[_0x5496('0x22')],function(_0xfac994){return{'model':db[_0xfac994['model']],'as':_0xfac994['as'],'attributes':_0xfac994[_0x5496('0x20')],'include':_0xfac994[_0x5496('0x22')]?_['map'](_0xfac994[_0x5496('0x22')],function(_0x3dae10){return{'model':db[_0x3dae10[_0x5496('0x23')]],'as':_0x3dae10['as'],'attributes':_0x3dae10[_0x5496('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x505d9b){logger['info'](_0x5496('0x25'),_0x539489);logger['debug']('ShowChatQueue',_0x539489,JSON[_0x5496('0x15')](_0x505d9b));_0x903d94(_0x505d9b);})[_0x5496('0x1a')](function(_0x53227c){logger[_0x5496('0x16')](_0x5496('0x25'),_0x53227c['message'],_0x539489);_0xf1b3cf(_0x2c6514[_0x5496('0x16')](0x1f4,_0x53227c[_0x5496('0x18')]));});});};
\ No newline at end of file
+var _0x641b=['include','map','model','GetChatQueue','debug','ShowChatQueue','find','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','ChatQueue','options','raw','where','attributes','limit'];(function(_0x4ac485,_0x3f8fe2){var _0x12643b=function(_0x45b0e4){while(--_0x45b0e4){_0x4ac485['push'](_0x4ac485['shift']());}};_0x12643b(++_0x3f8fe2);}(_0x641b,0xca));var _0xb641=function(_0x7649c2,_0x510059){_0x7649c2=_0x7649c2-0x0;var _0x48d9c6=_0x641b[_0x7649c2];return _0x48d9c6;};'use strict';var _=require(_0xb641('0x0'));var util=require('util');var moment=require(_0xb641('0x1'));var BPromise=require(_0xb641('0x2'));var rs=require(_0xb641('0x3'));var fs=require('fs');var Redis=require(_0xb641('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb641('0x5'));var logger=require(_0xb641('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xb641('0x7'));var client=jayson[_0xb641('0x8')][_0xb641('0x9')]({'port':0x232a});config[_0xb641('0xa')]=_[_0xb641('0xb')](config[_0xb641('0xa')],{'host':_0xb641('0xc'),'port':0x18eb});var socket=require(_0xb641('0xd'))(new Redis(config['redis']));require(_0xb641('0xe'))[_0xb641('0xf')](socket);function respondWithRpcPromise(_0x3f3c32,_0x4e7ee4,_0x3f1597){return new BPromise(function(_0x30d931,_0x784c8b){return client[_0xb641('0x10')](_0x3f3c32,_0x3f1597)[_0xb641('0x11')](function(_0x530a49){logger['info'](_0xb641('0x12'),_0x4e7ee4,_0xb641('0x13'));logger['debug'](_0xb641('0x14'),_0x4e7ee4,'request\x20sent',JSON[_0xb641('0x15')](_0x530a49));if(_0x530a49[_0xb641('0x16')]){if(_0x530a49['error']['code']===0x1f4){logger['error'](_0xb641('0x12'),_0x4e7ee4,_0x530a49[_0xb641('0x16')][_0xb641('0x17')]);return _0x784c8b(_0x530a49[_0xb641('0x16')][_0xb641('0x17')]);}logger['error']('ChatQueue,\x20%s,\x20%s',_0x4e7ee4,_0x530a49[_0xb641('0x16')]['message']);return _0x30d931(_0x530a49[_0xb641('0x16')][_0xb641('0x17')]);}else{logger[_0xb641('0x18')](_0xb641('0x12'),_0x4e7ee4,'request\x20sent');_0x30d931(_0x530a49['result'][_0xb641('0x17')]);}})[_0xb641('0x19')](function(_0x64dc7c){logger['error'](_0xb641('0x12'),_0x4e7ee4,_0x64dc7c);_0x784c8b(_0x64dc7c);});});}exports['GetChatQueue']=function(_0x4d520c){var _0x513606=this;return new Promise(function(_0x18f314,_0x1c4d6c){return db[_0xb641('0x1a')]['findAll']({'raw':_0x4d520c[_0xb641('0x1b')]?_0x4d520c[_0xb641('0x1b')][_0xb641('0x1c')]===undefined?!![]:![]:!![],'where':_0x4d520c['options']?_0x4d520c[_0xb641('0x1b')][_0xb641('0x1d')]||null:null,'attributes':_0x4d520c[_0xb641('0x1b')]?_0x4d520c['options'][_0xb641('0x1e')]||null:null,'limit':_0x4d520c['options']?_0x4d520c['options'][_0xb641('0x1f')]||null:null,'include':_0x4d520c[_0xb641('0x1b')]?_0x4d520c[_0xb641('0x1b')][_0xb641('0x20')]?_[_0xb641('0x21')](_0x4d520c['options']['include'],function(_0x23142b){return{'model':db[_0x23142b[_0xb641('0x22')]],'as':_0x23142b['as'],'attributes':_0x23142b[_0xb641('0x1e')],'include':_0x23142b[_0xb641('0x20')]?_[_0xb641('0x21')](_0x23142b[_0xb641('0x20')],function(_0x3e9b7f){return{'model':db[_0x3e9b7f[_0xb641('0x22')]],'as':_0x3e9b7f['as'],'attributes':_0x3e9b7f[_0xb641('0x1e')],'include':_0x3e9b7f[_0xb641('0x20')]?_[_0xb641('0x21')](_0x3e9b7f[_0xb641('0x20')],function(_0x3a28ca){return{'model':db[_0x3a28ca['model']],'as':_0x3a28ca['as'],'attributes':_0x3a28ca[_0xb641('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb641('0x11')](function(_0x1aaf26){logger[_0xb641('0x18')](_0xb641('0x23'),_0x4d520c);logger[_0xb641('0x24')]('GetChatQueue',_0x4d520c,JSON[_0xb641('0x15')](_0x1aaf26));_0x18f314(_0x1aaf26);})[_0xb641('0x19')](function(_0x1e1b21){logger[_0xb641('0x16')](_0xb641('0x23'),_0x1e1b21[_0xb641('0x17')],_0x4d520c);_0x1c4d6c(_0x513606[_0xb641('0x16')](0x1f4,_0x1e1b21[_0xb641('0x17')]));});});};exports[_0xb641('0x25')]=function(_0x5e37a2){var _0x17a46b=this;return new Promise(function(_0x5bba80,_0x38ae40){return db[_0xb641('0x1a')][_0xb641('0x26')]({'raw':_0x5e37a2[_0xb641('0x1b')]?_0x5e37a2['options'][_0xb641('0x1c')]===undefined?!![]:![]:!![],'where':_0x5e37a2['options']?_0x5e37a2[_0xb641('0x1b')][_0xb641('0x1d')]||null:null,'attributes':_0x5e37a2[_0xb641('0x1b')]?_0x5e37a2[_0xb641('0x1b')][_0xb641('0x1e')]||null:null,'include':_0x5e37a2['options']?_0x5e37a2[_0xb641('0x1b')][_0xb641('0x20')]?_[_0xb641('0x21')](_0x5e37a2[_0xb641('0x1b')]['include'],function(_0x456c64){return{'model':db[_0x456c64[_0xb641('0x22')]],'as':_0x456c64['as'],'attributes':_0x456c64[_0xb641('0x1e')],'include':_0x456c64[_0xb641('0x20')]?_[_0xb641('0x21')](_0x456c64[_0xb641('0x20')],function(_0x153251){return{'model':db[_0x153251[_0xb641('0x22')]],'as':_0x153251['as'],'attributes':_0x153251[_0xb641('0x1e')],'include':_0x153251[_0xb641('0x20')]?_[_0xb641('0x21')](_0x153251['include'],function(_0x34857e){return{'model':db[_0x34857e[_0xb641('0x22')]],'as':_0x34857e['as'],'attributes':_0x34857e[_0xb641('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f12a4){logger[_0xb641('0x18')](_0xb641('0x25'),_0x5e37a2);logger[_0xb641('0x24')](_0xb641('0x25'),_0x5e37a2,JSON[_0xb641('0x15')](_0x2f12a4));_0x5bba80(_0x2f12a4);})[_0xb641('0x19')](function(_0x4f1e20){logger[_0xb641('0x16')](_0xb641('0x25'),_0x4f1e20[_0xb641('0x17')],_0x5e37a2);_0x38ae40(_0x17a46b['error'](0x1f4,_0x4f1e20[_0xb641('0x17')]));});});};
\ No newline at end of file
index 9d69a8d..e20904f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc3=['register','chatQueue:','./chatQueue.events','save','update','emit','removeListener'];(function(_0x417234,_0x28ac37){var _0x33f3b8=function(_0x112361){while(--_0x112361){_0x417234['push'](_0x417234['shift']());}};_0x33f3b8(++_0x28ac37);}(_0x4bc3,0x16e));var _0x34bc=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x4bc3[_0x599e60];return _0x468e19;};'use strict';var ChatQueueEvents=require(_0x34bc('0x0'));var events=[_0x34bc('0x1'),'remove',_0x34bc('0x2')];function createListener(_0x2c0897,_0x5b45c7){return function(_0x178fc0){_0x5b45c7[_0x34bc('0x3')](_0x2c0897,_0x178fc0);};}function removeListener(_0x3ce1c3,_0x2e043e){return function(){ChatQueueEvents[_0x34bc('0x4')](_0x3ce1c3,_0x2e043e);};}exports[_0x34bc('0x5')]=function(_0x2cc9c2){for(var _0x4c63a1=0x0,_0x21451b=events['length'];_0x4c63a1<_0x21451b;_0x4c63a1++){var _0x502087=events[_0x4c63a1];var _0x18a01c=createListener(_0x34bc('0x6')+_0x502087,_0x2cc9c2);ChatQueueEvents['on'](_0x502087,_0x18a01c);}};
\ No newline at end of file
+var _0x7a2c=['chatQueue:','./chatQueue.events','remove','update','emit','register'];(function(_0x34666e,_0x346cb1){var _0x3c1472=function(_0x233354){while(--_0x233354){_0x34666e['push'](_0x34666e['shift']());}};_0x3c1472(++_0x346cb1);}(_0x7a2c,0x17b));var _0xc7a2=function(_0xb7f272,_0x1df77f){_0xb7f272=_0xb7f272-0x0;var _0x80b907=_0x7a2c[_0xb7f272];return _0x80b907;};'use strict';var ChatQueueEvents=require(_0xc7a2('0x0'));var events=['save',_0xc7a2('0x1'),_0xc7a2('0x2')];function createListener(_0x409ec5,_0x26fb61){return function(_0x44d702){_0x26fb61[_0xc7a2('0x3')](_0x409ec5,_0x44d702);};}function removeListener(_0x3f2b0d,_0x34cd60){return function(){ChatQueueEvents['removeListener'](_0x3f2b0d,_0x34cd60);};}exports[_0xc7a2('0x4')]=function(_0x1ddbae){for(var _0x5f334e=0x0,_0x481430=events['length'];_0x5f334e<_0x481430;_0x5f334e++){var _0x1dd150=events[_0x5f334e];var _0x3de428=createListener(_0xc7a2('0x5')+_0x1dd150,_0x1ddbae);ChatQueueEvents['on'](_0x1dd150,_0x3de428);}};
\ No newline at end of file
index 5da0b66..eb4a8c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x4d84d6,_0x347a8e){var _0x2d785f=function(_0x104a79){while(--_0x104a79){_0x4d84d6['push'](_0x4d84d6['shift']());}};_0x2d785f(++_0x347a8e);}(_0xe14b,0x93));var _0xbe14=function(_0x17b768,_0x50ceab){_0x17b768=_0x17b768-0x0;var _0x4604fc=_0xe14b[_0x17b768];return _0x4604fc;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
+var _0x814b=['/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x504b79,_0x4115b0){var _0x10f21a=function(_0x36dcb9){while(--_0x36dcb9){_0x504b79['push'](_0x504b79['shift']());}};_0x10f21a(++_0x4115b0);}(_0x814b,0x1a2));var _0xb814=function(_0x3baaf2,_0x894e3d){_0x3baaf2=_0x3baaf2-0x0;var _0x50e8b0=_0x814b[_0x3baaf2];return _0x50e8b0;};'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('0x16')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0x16')](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x18')]);router[_0xb814('0x16')](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x19')]);router[_0xb814('0x1a')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller['destroy']);router[_0xb814('0x1c')]('/:id/teams',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xb814('0x1e')]);module['exports']=router;
\ No newline at end of file
index f886195..4b73bdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a0=['exports','STRING','DATE','moment','sequelize'];(function(_0x3f05a2,_0x8f445){var _0x2ed776=function(_0x267e1b){while(--_0x267e1b){_0x3f05a2['push'](_0x3f05a2['shift']());}};_0x2ed776(++_0x8f445);}(_0xf7a0,0x80));var _0x0f7a=function(_0x1ffef4,_0x54bd09){_0x1ffef4=_0x1ffef4-0x0;var _0x242f78=_0xf7a0[_0x1ffef4];return _0x242f78;};'use strict';var moment=require(_0x0f7a('0x0'));var Sequelize=require(_0x0f7a('0x1'));module[_0x0f7a('0x2')]={'uniqueid':{'type':Sequelize[_0x0f7a('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x0f7a('0x4')]},'leaveAt':{'type':Sequelize[_0x0f7a('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x0f7a('0x3')]}};
\ No newline at end of file
+var _0x6781=['sequelize','exports','STRING','DATE'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x6781,0x104));var _0x1678=function(_0x3d85af,_0x4426cf){_0x3d85af=_0x3d85af-0x0;var _0x129e73=_0x6781[_0x3d85af];return _0x129e73;};'use strict';var moment=require('moment');var Sequelize=require(_0x1678('0x0'));module[_0x1678('0x1')]={'uniqueid':{'type':Sequelize[_0x1678('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x1678('0x3')]},'leaveAt':{'type':Sequelize[_0x1678('0x3')]},'acceptAt':{'type':Sequelize[_0x1678('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x1678('0x2')]}};
\ No newline at end of file
index 7b3c044..749e4b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','ChatQueueReport','rawAttributes','type','key','model','query'];(function(_0x470daf,_0x2ef016){var _0x1940b4=function(_0x2ae05d){while(--_0x2ae05d){_0x470daf['push'](_0x470daf['shift']());}};_0x1940b4(++_0x2ef016);}(_0xc1c6,0xf7));var _0x6c1c=function(_0xcee796,_0x5231fb){_0xcee796=_0xcee796-0x0;var _0x34d316=_0xc1c6[_0xcee796];return _0x34d316;};'use strict';var emlformat=require(_0x6c1c('0x0'));var rimraf=require(_0x6c1c('0x1'));var zipdir=require(_0x6c1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c1c('0x3'));var moment=require('moment');var BPromise=require(_0x6c1c('0x4'));var Mustache=require(_0x6c1c('0x5'));var util=require(_0x6c1c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6c1c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c1c('0x8'));var _=require('lodash');var squel=require(_0x6c1c('0x9'));var crypto=require(_0x6c1c('0xa'));var jsforce=require(_0x6c1c('0xb'));var deskjs=require(_0x6c1c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6c1c('0xd'));var Papa=require(_0x6c1c('0xe'));var Redis=require('ioredis');var authService=require(_0x6c1c('0xf'));var qs=require(_0x6c1c('0x10'));var as=require(_0x6c1c('0x11'));var hardwareService=require(_0x6c1c('0x12'));var logger=require('../../config/logger')(_0x6c1c('0x13'));var utils=require(_0x6c1c('0x14'));var config=require(_0x6c1c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c1c('0x16'))['db'];function respondWithStatusCode(_0x12a9e6,_0x2067bd){_0x2067bd=_0x2067bd||0xcc;return function(_0x49304f){if(_0x49304f){return _0x12a9e6[_0x6c1c('0x17')](_0x2067bd);}return _0x12a9e6['status'](_0x2067bd)[_0x6c1c('0x18')]();};}function respondWithResult(_0x15a1fc,_0x2d279e){_0x2d279e=_0x2d279e||0xc8;return function(_0x154107){if(_0x154107){return _0x15a1fc[_0x6c1c('0x19')](_0x2d279e)[_0x6c1c('0x1a')](_0x154107);}};}function respondWithFilteredResult(_0x297c33,_0x41aa74){return function(_0x448f35){if(_0x448f35){var _0x5f3758=typeof _0x41aa74[_0x6c1c('0x1b')]===_0x6c1c('0x1c')&&typeof _0x41aa74['limit']===_0x6c1c('0x1c');var _0x237cac=_0x448f35['count'];var _0x137770=_0x5f3758?0x0:_0x41aa74['offset'];var _0x338dc2=_0x5f3758?_0x448f35[_0x6c1c('0x1d')]:_0x41aa74['offset']+_0x41aa74[_0x6c1c('0x1e')];var _0x59ab38;if(_0x338dc2>=_0x237cac){_0x338dc2=_0x237cac;_0x59ab38=0xc8;}else{_0x59ab38=0xce;}_0x297c33[_0x6c1c('0x19')](_0x59ab38);return _0x297c33[_0x6c1c('0x1f')](_0x6c1c('0x20'),_0x137770+'-'+_0x338dc2+'/'+_0x237cac)[_0x6c1c('0x1a')](_0x448f35);}return null;};}function patchUpdates(_0x1acf7f){return function(_0x1efb19){try{jsonpatch[_0x6c1c('0x21')](_0x1efb19,_0x1acf7f,!![]);}catch(_0x2ed830){return BPromise[_0x6c1c('0x22')](_0x2ed830);}return _0x1efb19[_0x6c1c('0x23')]();};}function saveUpdates(_0x3d2bf3,_0x450b1f){return function(_0x2382c0){if(_0x2382c0){return _0x2382c0[_0x6c1c('0x24')](_0x3d2bf3)[_0x6c1c('0x25')](function(_0x19c269){return _0x19c269;});}return null;};}function removeEntity(_0x2319d3,_0x12c638){return function(_0x3a3f13){if(_0x3a3f13){return _0x3a3f13[_0x6c1c('0x26')]()[_0x6c1c('0x25')](function(){_0x2319d3[_0x6c1c('0x19')](0xcc)[_0x6c1c('0x18')]();});}};}function handleEntityNotFound(_0x7ff10d,_0x18452d){return function(_0x80bc05){if(!_0x80bc05){_0x7ff10d[_0x6c1c('0x17')](0x194);}return _0x80bc05;};}function handleError(_0x1b9d7d,_0x2feaf4){_0x2feaf4=_0x2feaf4||0x1f4;return function(_0x5f4568){logger[_0x6c1c('0x27')](_0x5f4568['stack']);if(_0x5f4568[_0x6c1c('0x28')]){delete _0x5f4568['name'];}_0x1b9d7d[_0x6c1c('0x19')](_0x2feaf4)['send'](_0x5f4568);};}exports[_0x6c1c('0x29')]=function(_0xf557ba,_0x504348){var _0x3b1a4f={},_0x24da4c={},_0x4e13e3={'count':0x0,'rows':[]};var _0x3b319a=_[_0x6c1c('0x2a')](db[_0x6c1c('0x2b')][_0x6c1c('0x2c')],function(_0x4fc279){return{'name':_0x4fc279['fieldName'],'type':_0x4fc279[_0x6c1c('0x2d')][_0x6c1c('0x2e')]};});_0x24da4c[_0x6c1c('0x2f')]=_[_0x6c1c('0x2a')](_0x3b319a,_0x6c1c('0x28'));_0x24da4c[_0x6c1c('0x30')]=_['keys'](_0xf557ba[_0x6c1c('0x30')]);_0x24da4c[_0x6c1c('0x31')]=_['intersection'](_0x24da4c[_0x6c1c('0x2f')],_0x24da4c[_0x6c1c('0x30')]);_0x3b1a4f[_0x6c1c('0x32')]=_[_0x6c1c('0x33')](_0x24da4c['model'],qs[_0x6c1c('0x34')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x3b1a4f['attributes']=_0x3b1a4f[_0x6c1c('0x32')]['length']?_0x3b1a4f[_0x6c1c('0x32')]:_0x24da4c['model'];if(!_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x35')](_0x6c1c('0x36'))){_0x3b1a4f['limit']=qs['limit'](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x1e')]);_0x3b1a4f[_0x6c1c('0x1b')]=qs['offset'](_0xf557ba[_0x6c1c('0x30')]['offset']);}_0x3b1a4f['order']=qs[_0x6c1c('0x37')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x37')]);_0x3b1a4f[_0x6c1c('0x38')]=qs['filters'](_[_0x6c1c('0x39')](_0xf557ba[_0x6c1c('0x30')],_0x24da4c[_0x6c1c('0x31')]),_0x3b319a);if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]){_0x3b1a4f[_0x6c1c('0x38')]=_[_0x6c1c('0x3b')](_0x3b1a4f[_0x6c1c('0x38')],{'$or':_[_0x6c1c('0x2a')](_0x3b319a,function(_0x232508){if(_0x232508['type']!==_0x6c1c('0x3c')){var _0x464549={};_0x464549[_0x232508[_0x6c1c('0x28')]]={'$like':'%'+_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]+'%'};return _0x464549;}})});}_0x3b1a4f=_['merge']({},_0x3b1a4f,_0xf557ba['options']);var _0x549db1={'where':_0x3b1a4f[_0x6c1c('0x38')]};return db['ChatQueueReport']['count'](_0x549db1)[_0x6c1c('0x25')](function(_0x37244e){_0x4e13e3['count']=_0x37244e;if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x3b1a4f[_0x6c1c('0x3e')]=[{'all':!![]}];}return db['ChatQueueReport'][_0x6c1c('0x3f')](_0x3b1a4f);})[_0x6c1c('0x25')](function(_0x502e75){_0x4e13e3[_0x6c1c('0x40')]=_0x502e75;return _0x4e13e3;})['then'](respondWithFilteredResult(_0x504348,_0x3b1a4f))[_0x6c1c('0x41')](handleError(_0x504348,null));};exports[_0x6c1c('0x42')]=function(_0x16a389,_0x174f2c){var _0x10764a={'raw':!![],'where':{'id':_0x16a389[_0x6c1c('0x43')]['id']}},_0x595ba2={};_0x595ba2[_0x6c1c('0x2f')]=_[_0x6c1c('0x44')](db['ChatQueueReport'][_0x6c1c('0x2c')]);_0x595ba2[_0x6c1c('0x30')]=_[_0x6c1c('0x44')](_0x16a389[_0x6c1c('0x30')]);_0x595ba2[_0x6c1c('0x31')]=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],_0x595ba2['query']);_0x10764a['attributes']=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],qs[_0x6c1c('0x34')](_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x10764a[_0x6c1c('0x32')]=_0x10764a[_0x6c1c('0x32')][_0x6c1c('0x45')]?_0x10764a[_0x6c1c('0x32')]:_0x595ba2['model'];if(_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x10764a['include']=[{'all':!![]}];}_0x10764a=_[_0x6c1c('0x3b')]({},_0x10764a,_0x16a389['options']);return db[_0x6c1c('0x2b')][_0x6c1c('0x46')](_0x10764a)[_0x6c1c('0x25')](handleEntityNotFound(_0x174f2c,null))[_0x6c1c('0x25')](respondWithResult(_0x174f2c,null))[_0x6c1c('0x41')](handleError(_0x174f2c,null));};exports['create']=function(_0x1fe6e8,_0x58d075){return db[_0x6c1c('0x2b')][_0x6c1c('0x47')](_0x1fe6e8[_0x6c1c('0x48')],{})[_0x6c1c('0x25')](respondWithResult(_0x58d075,0xc9))[_0x6c1c('0x41')](handleError(_0x58d075,null));};exports[_0x6c1c('0x24')]=function(_0x52c14d,_0xa9889a){if(_0x52c14d[_0x6c1c('0x48')]['id']){delete _0x52c14d['body']['id'];}return db[_0x6c1c('0x2b')][_0x6c1c('0x46')]({'where':{'id':_0x52c14d[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0xa9889a,null))['then'](saveUpdates(_0x52c14d[_0x6c1c('0x48')],null))[_0x6c1c('0x25')](respondWithResult(_0xa9889a,null))[_0x6c1c('0x41')](handleError(_0xa9889a,null));};exports['destroy']=function(_0x5b8d69,_0x56b367){return db['ChatQueueReport']['find']({'where':{'id':_0x5b8d69[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0x56b367,null))['then'](removeEntity(_0x56b367,null))[_0x6c1c('0x41')](handleError(_0x56b367,null));};exports[_0x6c1c('0x49')]=function(_0x2450ab,_0x5489ac){return db['ChatQueueReport'][_0x6c1c('0x49')]()[_0x6c1c('0x25')](respondWithResult(_0x5489ac,null))['catch'](handleError(_0x5489ac,null));};
\ No newline at end of file
+var _0x1a61=['json','offset','limit','undefined','count','set','Content-Range','apply','destroy','then','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','fieldName','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','includeAll','findAll','rows','catch','params','merge','find','create','body','update','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0x1a61,0x1e6));var _0x11a6=function(_0x2d1b35,_0x3561d7){_0x2d1b35=_0x2d1b35-0x0;var _0x45450f=_0x1a61[_0x2d1b35];return _0x45450f;};'use strict';var emlformat=require(_0x11a6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x11a6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x11a6('0x2'));var moment=require(_0x11a6('0x3'));var BPromise=require(_0x11a6('0x4'));var Mustache=require(_0x11a6('0x5'));var util=require('util');var path=require('path');var sox=require(_0x11a6('0x6'));var csv=require(_0x11a6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x11a6('0x8'));var _=require(_0x11a6('0x9'));var squel=require(_0x11a6('0xa'));var crypto=require(_0x11a6('0xb'));var jsforce=require(_0x11a6('0xc'));var deskjs=require(_0x11a6('0xd'));var toCsv=require(_0x11a6('0x7'));var querystring=require(_0x11a6('0xe'));var Papa=require(_0x11a6('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x11a6('0x10'));var hardwareService=require(_0x11a6('0x11'));var logger=require('../../config/logger')(_0x11a6('0x12'));var utils=require(_0x11a6('0x13'));var config=require(_0x11a6('0x14'));var licenseUtil=require(_0x11a6('0x15'));var db=require(_0x11a6('0x16'))['db'];function respondWithStatusCode(_0x41c4aa,_0x52f39a){_0x52f39a=_0x52f39a||0xcc;return function(_0x52c999){if(_0x52c999){return _0x41c4aa[_0x11a6('0x17')](_0x52f39a);}return _0x41c4aa[_0x11a6('0x18')](_0x52f39a)['end']();};}function respondWithResult(_0x1d3123,_0x15d140){_0x15d140=_0x15d140||0xc8;return function(_0x5158ea){if(_0x5158ea){return _0x1d3123[_0x11a6('0x18')](_0x15d140)[_0x11a6('0x19')](_0x5158ea);}};}function respondWithFilteredResult(_0x5b8e51,_0x345c70){return function(_0x2c79f4){if(_0x2c79f4){var _0x1fec24=typeof _0x345c70[_0x11a6('0x1a')]==='undefined'&&typeof _0x345c70[_0x11a6('0x1b')]===_0x11a6('0x1c');var _0xe8ed8=_0x2c79f4[_0x11a6('0x1d')];var _0x1a9d43=_0x1fec24?0x0:_0x345c70[_0x11a6('0x1a')];var _0x2449bf=_0x1fec24?_0x2c79f4[_0x11a6('0x1d')]:_0x345c70[_0x11a6('0x1a')]+_0x345c70[_0x11a6('0x1b')];var _0x2516a4;if(_0x2449bf>=_0xe8ed8){_0x2449bf=_0xe8ed8;_0x2516a4=0xc8;}else{_0x2516a4=0xce;}_0x5b8e51[_0x11a6('0x18')](_0x2516a4);return _0x5b8e51[_0x11a6('0x1e')](_0x11a6('0x1f'),_0x1a9d43+'-'+_0x2449bf+'/'+_0xe8ed8)['json'](_0x2c79f4);}return null;};}function patchUpdates(_0x485a4f){return function(_0xbd4c49){try{jsonpatch[_0x11a6('0x20')](_0xbd4c49,_0x485a4f,!![]);}catch(_0x3d1efd){return BPromise['reject'](_0x3d1efd);}return _0xbd4c49['save']();};}function saveUpdates(_0x7120c0,_0x521f50){return function(_0x707dd2){if(_0x707dd2){return _0x707dd2['update'](_0x7120c0)['then'](function(_0x51fe97){return _0x51fe97;});}return null;};}function removeEntity(_0x5b3a27,_0x111a63){return function(_0x55a043){if(_0x55a043){return _0x55a043[_0x11a6('0x21')]()[_0x11a6('0x22')](function(){_0x5b3a27['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ffd7f,_0x144cc5){return function(_0x34e230){if(!_0x34e230){_0x2ffd7f[_0x11a6('0x17')](0x194);}return _0x34e230;};}function handleError(_0x14f510,_0x407ae0){_0x407ae0=_0x407ae0||0x1f4;return function(_0x40e3b4){logger[_0x11a6('0x23')](_0x40e3b4[_0x11a6('0x24')]);if(_0x40e3b4[_0x11a6('0x25')]){delete _0x40e3b4[_0x11a6('0x25')];}_0x14f510[_0x11a6('0x18')](_0x407ae0)[_0x11a6('0x26')](_0x40e3b4);};}exports[_0x11a6('0x27')]=function(_0x304ad8,_0x453453){var _0x1ddbb2={},_0x1b7f4e={},_0x44c92d={'count':0x0,'rows':[]};var _0x2bfdf6=_[_0x11a6('0x28')](db[_0x11a6('0x29')][_0x11a6('0x2a')],function(_0x1ec7aa){return{'name':_0x1ec7aa[_0x11a6('0x2b')],'type':_0x1ec7aa['type'][_0x11a6('0x2c')]};});_0x1b7f4e['model']=_[_0x11a6('0x28')](_0x2bfdf6,_0x11a6('0x25'));_0x1b7f4e[_0x11a6('0x2d')]=_[_0x11a6('0x2e')](_0x304ad8[_0x11a6('0x2d')]);_0x1b7f4e['filters']=_[_0x11a6('0x2f')](_0x1b7f4e[_0x11a6('0x30')],_0x1b7f4e['query']);_0x1ddbb2['attributes']=_['intersection'](_0x1b7f4e[_0x11a6('0x30')],qs[_0x11a6('0x31')](_0x304ad8['query'][_0x11a6('0x31')]));_0x1ddbb2[_0x11a6('0x32')]=_0x1ddbb2[_0x11a6('0x32')][_0x11a6('0x33')]?_0x1ddbb2[_0x11a6('0x32')]:_0x1b7f4e['model'];if(!_0x304ad8[_0x11a6('0x2d')][_0x11a6('0x34')](_0x11a6('0x35'))){_0x1ddbb2[_0x11a6('0x1b')]=qs[_0x11a6('0x1b')](_0x304ad8[_0x11a6('0x2d')][_0x11a6('0x1b')]);_0x1ddbb2[_0x11a6('0x1a')]=qs[_0x11a6('0x1a')](_0x304ad8[_0x11a6('0x2d')][_0x11a6('0x1a')]);}_0x1ddbb2[_0x11a6('0x36')]=qs[_0x11a6('0x37')](_0x304ad8['query'][_0x11a6('0x37')]);_0x1ddbb2[_0x11a6('0x38')]=qs[_0x11a6('0x39')](_[_0x11a6('0x3a')](_0x304ad8[_0x11a6('0x2d')],_0x1b7f4e[_0x11a6('0x39')]),_0x2bfdf6);if(_0x304ad8[_0x11a6('0x2d')][_0x11a6('0x3b')]){_0x1ddbb2[_0x11a6('0x38')]=_['merge'](_0x1ddbb2[_0x11a6('0x38')],{'$or':_[_0x11a6('0x28')](_0x2bfdf6,function(_0x5f38c1){if(_0x5f38c1[_0x11a6('0x3c')]!==_0x11a6('0x3d')){var _0x38aaa7={};_0x38aaa7[_0x5f38c1['name']]={'$like':'%'+_0x304ad8[_0x11a6('0x2d')][_0x11a6('0x3b')]+'%'};return _0x38aaa7;}})});}_0x1ddbb2=_['merge']({},_0x1ddbb2,_0x304ad8['options']);var _0x10c485={'where':_0x1ddbb2['where']};return db[_0x11a6('0x29')][_0x11a6('0x1d')](_0x10c485)['then'](function(_0x275aa0){_0x44c92d['count']=_0x275aa0;if(_0x304ad8[_0x11a6('0x2d')][_0x11a6('0x3e')]){_0x1ddbb2['include']=[{'all':!![]}];}return db[_0x11a6('0x29')][_0x11a6('0x3f')](_0x1ddbb2);})[_0x11a6('0x22')](function(_0xd769e4){_0x44c92d[_0x11a6('0x40')]=_0xd769e4;return _0x44c92d;})[_0x11a6('0x22')](respondWithFilteredResult(_0x453453,_0x1ddbb2))[_0x11a6('0x41')](handleError(_0x453453,null));};exports['show']=function(_0x1d3a8b,_0x382182){var _0x5f44c1={'raw':!![],'where':{'id':_0x1d3a8b[_0x11a6('0x42')]['id']}},_0x588b96={};_0x588b96['model']=_[_0x11a6('0x2e')](db[_0x11a6('0x29')][_0x11a6('0x2a')]);_0x588b96['query']=_['keys'](_0x1d3a8b['query']);_0x588b96['filters']=_[_0x11a6('0x2f')](_0x588b96['model'],_0x588b96[_0x11a6('0x2d')]);_0x5f44c1[_0x11a6('0x32')]=_['intersection'](_0x588b96['model'],qs['fields'](_0x1d3a8b[_0x11a6('0x2d')][_0x11a6('0x31')]));_0x5f44c1['attributes']=_0x5f44c1[_0x11a6('0x32')]['length']?_0x5f44c1[_0x11a6('0x32')]:_0x588b96['model'];if(_0x1d3a8b[_0x11a6('0x2d')][_0x11a6('0x3e')]){_0x5f44c1['include']=[{'all':!![]}];}_0x5f44c1=_[_0x11a6('0x43')]({},_0x5f44c1,_0x1d3a8b['options']);return db[_0x11a6('0x29')][_0x11a6('0x44')](_0x5f44c1)[_0x11a6('0x22')](handleEntityNotFound(_0x382182,null))[_0x11a6('0x22')](respondWithResult(_0x382182,null))['catch'](handleError(_0x382182,null));};exports[_0x11a6('0x45')]=function(_0x18feb7,_0x25f137){return db[_0x11a6('0x29')][_0x11a6('0x45')](_0x18feb7[_0x11a6('0x46')],{})['then'](respondWithResult(_0x25f137,0xc9))[_0x11a6('0x41')](handleError(_0x25f137,null));};exports[_0x11a6('0x47')]=function(_0x41afe9,_0x5b8bbf){if(_0x41afe9[_0x11a6('0x46')]['id']){delete _0x41afe9[_0x11a6('0x46')]['id'];}return db[_0x11a6('0x29')][_0x11a6('0x44')]({'where':{'id':_0x41afe9[_0x11a6('0x42')]['id']}})[_0x11a6('0x22')](handleEntityNotFound(_0x5b8bbf,null))[_0x11a6('0x22')](saveUpdates(_0x41afe9[_0x11a6('0x46')],null))[_0x11a6('0x22')](respondWithResult(_0x5b8bbf,null))[_0x11a6('0x41')](handleError(_0x5b8bbf,null));};exports[_0x11a6('0x21')]=function(_0x2e105f,_0x1febf1){return db[_0x11a6('0x29')][_0x11a6('0x44')]({'where':{'id':_0x2e105f[_0x11a6('0x42')]['id']}})[_0x11a6('0x22')](handleEntityNotFound(_0x1febf1,null))[_0x11a6('0x22')](removeEntity(_0x1febf1,null))['catch'](handleError(_0x1febf1,null));};exports[_0x11a6('0x48')]=function(_0x5e7235,_0x27c59a){return db['ChatQueueReport'][_0x11a6('0x48')]()[_0x11a6('0x22')](respondWithResult(_0x27c59a,null))[_0x11a6('0x41')](handleError(_0x27c59a,null));};
\ No newline at end of file
index b720c7c..419ffb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x2e45a0,_0x161f5b){var _0x4b9325=function(_0xe27a26){while(--_0xe27a26){_0x2e45a0['push'](_0x2e45a0['shift']());}};_0x4b9325(++_0x161f5b);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbaf0[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x533612,_0x31db03){var _0x252938=function(_0x2f95b3){while(--_0x2f95b3){_0x533612['push'](_0x533612['shift']());}};_0x252938(++_0x31db03);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 4b867e3..a41bc96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31d9=['../../config/environment','client','http','then','ChatQueueReport,\x20%s,\x20%s','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','debug','UpdateChatQueueReport','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x37437c,_0x55dacf){var _0x35e1a1=function(_0xdcb380){while(--_0xdcb380){_0x37437c['push'](_0x37437c['shift']());}};_0x35e1a1(++_0x55dacf);}(_0x31d9,0x1ab));var _0x931d=function(_0x534412,_0x25125e){_0x534412=_0x534412-0x0;var _0x5bc2d5=_0x31d9[_0x534412];return _0x5bc2d5;};'use strict';var _=require(_0x931d('0x0'));var util=require(_0x931d('0x1'));var moment=require(_0x931d('0x2'));var BPromise=require(_0x931d('0x3'));var rs=require(_0x931d('0x4'));var fs=require('fs');var Redis=require(_0x931d('0x5'));var db=require(_0x931d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x931d('0x7'))('rpc');var config=require(_0x931d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x931d('0x9')][_0x931d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4f77a7,_0x44ea38,_0xdfc6f6){return new BPromise(function(_0x4780c7,_0xfb47bf){return client['request'](_0x4f77a7,_0xdfc6f6)[_0x931d('0xb')](function(_0x2b09b4){logger['info'](_0x931d('0xc'),_0x44ea38,_0x931d('0xd'));logger['debug'](_0x931d('0xe'),_0x44ea38,'request\x20sent',JSON[_0x931d('0xf')](_0x2b09b4));if(_0x2b09b4[_0x931d('0x10')]){if(_0x2b09b4[_0x931d('0x10')][_0x931d('0x11')]===0x1f4){logger[_0x931d('0x10')](_0x931d('0xc'),_0x44ea38,_0x2b09b4[_0x931d('0x10')]['message']);return _0xfb47bf(_0x2b09b4[_0x931d('0x10')][_0x931d('0x12')]);}logger[_0x931d('0x10')](_0x931d('0xc'),_0x44ea38,_0x2b09b4['error']['message']);return _0x4780c7(_0x2b09b4['error'][_0x931d('0x12')]);}else{logger[_0x931d('0x13')](_0x931d('0xc'),_0x44ea38,_0x931d('0xd'));_0x4780c7(_0x2b09b4['result'][_0x931d('0x12')]);}})[_0x931d('0x14')](function(_0x5b9a58){logger[_0x931d('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x44ea38,_0x5b9a58);_0xfb47bf(_0x5b9a58);});});}exports[_0x931d('0x15')]=function(_0x55cc69){var _0x477bf3=this;return new Promise(function(_0x245f26,_0xfa700b){return db[_0x931d('0x16')][_0x931d('0x17')](_0x55cc69[_0x931d('0x18')],{'raw':_0x55cc69[_0x931d('0x19')]?_0x55cc69['options']['raw']===undefined?!![]:![]:!![]})[_0x931d('0xb')](function(_0x2d8cbd){logger[_0x931d('0x13')](_0x931d('0x15'),_0x55cc69);logger[_0x931d('0x1a')]('CreateChatQueueReport',_0x55cc69,JSON[_0x931d('0xf')](_0x2d8cbd));_0x245f26(_0x2d8cbd);})['catch'](function(_0x4dc311){logger['error'](_0x931d('0x15'),_0x4dc311[_0x931d('0x12')],_0x55cc69);_0xfa700b(_0x477bf3['error'](0x1f4,_0x4dc311['message']));});});};exports[_0x931d('0x1b')]=function(_0xe3170){var _0x3e2894=this;return new Promise(function(_0x924676,_0x4d5129){return db[_0x931d('0x16')]['update'](_0xe3170[_0x931d('0x18')],{'raw':_0xe3170[_0x931d('0x19')]?_0xe3170['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe3170[_0x931d('0x19')]?_0xe3170[_0x931d('0x19')][_0x931d('0x1c')]||null:null,'attributes':_0xe3170[_0x931d('0x19')]?_0xe3170['options']['attributes']||null:null,'limit':_0xe3170[_0x931d('0x19')]?_0xe3170[_0x931d('0x19')]['limit']||null:null})[_0x931d('0xb')](function(_0x3435a1){logger[_0x931d('0x13')](_0x931d('0x1b'),_0xe3170);logger[_0x931d('0x1a')]('UpdateChatQueueReport',_0xe3170,JSON[_0x931d('0xf')](_0x3435a1));_0x924676(_0x3435a1);})[_0x931d('0x14')](function(_0x1a9f2a){logger['error'](_0x931d('0x1b'),_0x1a9f2a[_0x931d('0x12')],_0xe3170);_0x4d5129(_0x3e2894['error'](0x1f4,_0x1a9f2a[_0x931d('0x12')]));});});};
\ No newline at end of file
+var _0x21c0=['../../config/environment','jayson/promise','http','request','ChatQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','info','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','catch','update','where','attributes','limit','then','UpdateChatQueueReport','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x37042a,_0x170e96){var _0x1da4de=function(_0x4e5b95){while(--_0x4e5b95){_0x37042a['push'](_0x37042a['shift']());}};_0x1da4de(++_0x170e96);}(_0x21c0,0x180));var _0x021c=function(_0x3db233,_0x28809e){_0x3db233=_0x3db233-0x0;var _0x59b35f=_0x21c0[_0x3db233];return _0x59b35f;};'use strict';var _=require('lodash');var util=require(_0x021c('0x0'));var moment=require('moment');var BPromise=require(_0x021c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x021c('0x2'));var db=require(_0x021c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x021c('0x4'))(_0x021c('0x5'));var config=require(_0x021c('0x6'));var jayson=require(_0x021c('0x7'));var client=jayson['client'][_0x021c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x305c82,_0x157396,_0x15fd31){return new BPromise(function(_0x39ecd7,_0x393585){return client[_0x021c('0x9')](_0x305c82,_0x15fd31)['then'](function(_0x49be06){logger['info'](_0x021c('0xa'),_0x157396,'request\x20sent');logger[_0x021c('0xb')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x157396,'request\x20sent',JSON[_0x021c('0xc')](_0x49be06));if(_0x49be06[_0x021c('0xd')]){if(_0x49be06['error'][_0x021c('0xe')]===0x1f4){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x157396,_0x49be06[_0x021c('0xd')][_0x021c('0xf')]);return _0x393585(_0x49be06['error']['message']);}logger[_0x021c('0xd')](_0x021c('0xa'),_0x157396,_0x49be06[_0x021c('0xd')]['message']);return _0x39ecd7(_0x49be06[_0x021c('0xd')][_0x021c('0xf')]);}else{logger[_0x021c('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x157396,'request\x20sent');_0x39ecd7(_0x49be06['result']['message']);}})['catch'](function(_0x5f1197){logger[_0x021c('0xd')](_0x021c('0xa'),_0x157396,_0x5f1197);_0x393585(_0x5f1197);});});}exports[_0x021c('0x11')]=function(_0x435943){var _0x4893b6=this;return new Promise(function(_0x25a86c,_0x28812c){return db[_0x021c('0x12')][_0x021c('0x13')](_0x435943[_0x021c('0x14')],{'raw':_0x435943['options']?_0x435943[_0x021c('0x15')][_0x021c('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x24828b){logger[_0x021c('0x10')](_0x021c('0x11'),_0x435943);logger['debug']('CreateChatQueueReport',_0x435943,JSON[_0x021c('0xc')](_0x24828b));_0x25a86c(_0x24828b);})[_0x021c('0x17')](function(_0x5a9ca7){logger[_0x021c('0xd')](_0x021c('0x11'),_0x5a9ca7['message'],_0x435943);_0x28812c(_0x4893b6[_0x021c('0xd')](0x1f4,_0x5a9ca7[_0x021c('0xf')]));});});};exports['UpdateChatQueueReport']=function(_0x4c7a6f){var _0x34a7e3=this;return new Promise(function(_0x3a8fe4,_0x4ecc23){return db[_0x021c('0x12')][_0x021c('0x18')](_0x4c7a6f[_0x021c('0x14')],{'raw':_0x4c7a6f[_0x021c('0x15')]?_0x4c7a6f['options'][_0x021c('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c7a6f['options']?_0x4c7a6f['options'][_0x021c('0x19')]||null:null,'attributes':_0x4c7a6f[_0x021c('0x15')]?_0x4c7a6f[_0x021c('0x15')][_0x021c('0x1a')]||null:null,'limit':_0x4c7a6f[_0x021c('0x15')]?_0x4c7a6f[_0x021c('0x15')][_0x021c('0x1b')]||null:null})[_0x021c('0x1c')](function(_0x48ce22){logger[_0x021c('0x10')]('UpdateChatQueueReport',_0x4c7a6f);logger[_0x021c('0xb')](_0x021c('0x1d'),_0x4c7a6f,JSON[_0x021c('0xc')](_0x48ce22));_0x3a8fe4(_0x48ce22);})[_0x021c('0x17')](function(_0x2c15ee){logger[_0x021c('0xd')](_0x021c('0x1d'),_0x2c15ee[_0x021c('0xf')],_0x4c7a6f);_0x4ecc23(_0x34a7e3[_0x021c('0xd')](0x1f4,_0x2c15ee[_0x021c('0xf')]));});});};
\ No newline at end of file
index a8a30fe..e21778a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3d3=['post','create','update','destroy','exports','multer','path','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id'];(function(_0x5eaf56,_0x4636e9){var _0x2adc99=function(_0x5c50ce){while(--_0x5c50ce){_0x5eaf56['push'](_0x5eaf56['shift']());}};_0x2adc99(++_0x4636e9);}(_0xd3d3,0x131));var _0x3d3d=function(_0x455c6c,_0x1e78b7){_0x455c6c=_0x455c6c-0x0;var _0x488242=_0xd3d3[_0x455c6c];return _0x488242;};'use strict';var multer=require(_0x3d3d('0x0'));var util=require('util');var path=require(_0x3d3d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3d3d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x3d3d('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x3d3d('0x4'));var controller=require('./chatQueueReport.controller');router[_0x3d3d('0x5')]('/',auth[_0x3d3d('0x6')](),controller['index']);router[_0x3d3d('0x5')](_0x3d3d('0x7'),auth['isAuthenticated'](),controller[_0x3d3d('0x8')]);router[_0x3d3d('0x5')](_0x3d3d('0x9'),auth[_0x3d3d('0x6')](),controller['show']);router[_0x3d3d('0xa')]('/',auth[_0x3d3d('0x6')](),controller[_0x3d3d('0xb')]);router['put'](_0x3d3d('0x9'),auth['isAuthenticated'](),controller[_0x3d3d('0xc')]);router['delete'](_0x3d3d('0x9'),auth[_0x3d3d('0x6')](),controller[_0x3d3d('0xd')]);module[_0x3d3d('0xe')]=router;
\ No newline at end of file
+var _0x86e5=['exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','index','/describe','isAuthenticated','show','post','create','put','/:id','delete','destroy'];(function(_0x20a322,_0x3c7c23){var _0x295ed6=function(_0x555832){while(--_0x555832){_0x20a322['push'](_0x20a322['shift']());}};_0x295ed6(++_0x3c7c23);}(_0x86e5,0x169));var _0x586e=function(_0xa1da30,_0x1d9a72){_0xa1da30=_0xa1da30-0x0;var _0x3eabe9=_0x86e5[_0xa1da30];return _0x3eabe9;};'use strict';var multer=require('multer');var util=require(_0x586e('0x0'));var path=require(_0x586e('0x1'));var timeout=require(_0x586e('0x2'));var express=require(_0x586e('0x3'));var router=express[_0x586e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x586e('0x5'));var config=require(_0x586e('0x6'));var controller=require(_0x586e('0x7'));router[_0x586e('0x8')]('/',auth['isAuthenticated'](),controller[_0x586e('0x9')]);router[_0x586e('0x8')](_0x586e('0xa'),auth[_0x586e('0xb')](),controller['describe']);router[_0x586e('0x8')]('/:id',auth[_0x586e('0xb')](),controller[_0x586e('0xc')]);router[_0x586e('0xd')]('/',auth[_0x586e('0xb')](),controller[_0x586e('0xe')]);router[_0x586e('0xf')](_0x586e('0x10'),auth['isAuthenticated'](),controller['update']);router[_0x586e('0x11')](_0x586e('0x10'),auth[_0x586e('0xb')](),controller[_0x586e('0x12')]);module[_0x586e('0x13')]=router;
\ No newline at end of file
index 2ad9d43..ffb81ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x1bf73a,_0x59b99d){var _0x114503=function(_0x5c469a){while(--_0x5c469a){_0x1bf73a['push'](_0x1bf73a['shift']());}};_0x114503(++_0x59b99d);}(_0x70e0,0x17b));var _0x070e=function(_0x13eeec,_0x492279){_0x13eeec=_0x13eeec-0x0;var _0x37c5a8=_0x70e0[_0x13eeec];return _0x37c5a8;};'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 _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x41aa44,_0x573e85){var _0x2735f8=function(_0x49f8a7){while(--_0x49f8a7){_0x41aa44['push'](_0x41aa44['shift']());}};_0x2735f8(++_0x573e85);}(_0xaa88,0x137));var _0x8aa8=function(_0x24259d,_0x64a194){_0x24259d=_0x24259d-0x0;var _0x5a701=_0xaa88[_0x24259d];return _0x5a701;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index ddf1a64..d636361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf93c=['stack','name','index','map','rawAttributes','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','ChatTransferReport','findAll','catch','show','keys','include','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','update','then','error'];(function(_0x1113aa,_0x170bde){var _0x26ba50=function(_0x412f13){while(--_0x412f13){_0x1113aa['push'](_0x1113aa['shift']());}};_0x26ba50(++_0x170bde);}(_0xf93c,0x150));var _0xcf93=function(_0x3bea9c,_0x36f75c){_0x3bea9c=_0x3bea9c-0x0;var _0x4f6274=_0xf93c[_0x3bea9c];return _0x4f6274;};'use strict';var emlformat=require(_0xcf93('0x0'));var rimraf=require(_0xcf93('0x1'));var zipdir=require(_0xcf93('0x2'));var jsonpatch=require(_0xcf93('0x3'));var rp=require(_0xcf93('0x4'));var moment=require(_0xcf93('0x5'));var BPromise=require(_0xcf93('0x6'));var Mustache=require(_0xcf93('0x7'));var util=require(_0xcf93('0x8'));var path=require(_0xcf93('0x9'));var sox=require('sox');var csv=require(_0xcf93('0xa'));var ejs=require(_0xcf93('0xb'));var fs=require('fs');var fs_extra=require(_0xcf93('0xc'));var _=require(_0xcf93('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcf93('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcf93('0xf'));var Papa=require('papaparse');var Redis=require(_0xcf93('0x10'));var authService=require(_0xcf93('0x11'));var qs=require(_0xcf93('0x12'));var as=require(_0xcf93('0x13'));var hardwareService=require(_0xcf93('0x14'));var logger=require(_0xcf93('0x15'))(_0xcf93('0x16'));var utils=require(_0xcf93('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xcf93('0x18'));var db=require(_0xcf93('0x19'))['db'];function respondWithStatusCode(_0x5174ec,_0x2ce2c4){_0x2ce2c4=_0x2ce2c4||0xcc;return function(_0x1301d7){if(_0x1301d7){return _0x5174ec[_0xcf93('0x1a')](_0x2ce2c4);}return _0x5174ec[_0xcf93('0x1b')](_0x2ce2c4)[_0xcf93('0x1c')]();};}function respondWithResult(_0x5ba721,_0x5127fa){_0x5127fa=_0x5127fa||0xc8;return function(_0x3d3307){if(_0x3d3307){return _0x5ba721['status'](_0x5127fa)[_0xcf93('0x1d')](_0x3d3307);}};}function respondWithFilteredResult(_0x2579fa,_0x74ebf2){return function(_0x2485ac){if(_0x2485ac){var _0x207f6e=typeof _0x74ebf2[_0xcf93('0x1e')]==='undefined'&&typeof _0x74ebf2[_0xcf93('0x1f')]===_0xcf93('0x20');var _0x1acbc4=_0x2485ac[_0xcf93('0x21')];var _0x10d4b0=_0x207f6e?0x0:_0x74ebf2[_0xcf93('0x1e')];var _0x1f5c1e=_0x207f6e?_0x2485ac[_0xcf93('0x21')]:_0x74ebf2[_0xcf93('0x1e')]+_0x74ebf2[_0xcf93('0x1f')];var _0x527a69;if(_0x1f5c1e>=_0x1acbc4){_0x1f5c1e=_0x1acbc4;_0x527a69=0xc8;}else{_0x527a69=0xce;}_0x2579fa[_0xcf93('0x1b')](_0x527a69);return _0x2579fa['set'](_0xcf93('0x22'),_0x10d4b0+'-'+_0x1f5c1e+'/'+_0x1acbc4)['json'](_0x2485ac);}return null;};}function patchUpdates(_0x45057f){return function(_0x50e4c4){try{jsonpatch['apply'](_0x50e4c4,_0x45057f,!![]);}catch(_0xd8cdd2){return BPromise[_0xcf93('0x23')](_0xd8cdd2);}return _0x50e4c4['save']();};}function saveUpdates(_0x215d13,_0x2e6aac){return function(_0x10dc30){if(_0x10dc30){return _0x10dc30[_0xcf93('0x24')](_0x215d13)[_0xcf93('0x25')](function(_0x4df94e){return _0x4df94e;});}return null;};}function removeEntity(_0x418c59,_0x57ea4e){return function(_0x58b1ae){if(_0x58b1ae){return _0x58b1ae['destroy']()[_0xcf93('0x25')](function(){_0x418c59[_0xcf93('0x1b')](0xcc)[_0xcf93('0x1c')]();});}};}function handleEntityNotFound(_0x905ebb,_0x297cee){return function(_0x4ef7f5){if(!_0x4ef7f5){_0x905ebb[_0xcf93('0x1a')](0x194);}return _0x4ef7f5;};}function handleError(_0x5b8dc6,_0x452a44){_0x452a44=_0x452a44||0x1f4;return function(_0x600ca8){logger[_0xcf93('0x26')](_0x600ca8[_0xcf93('0x27')]);if(_0x600ca8[_0xcf93('0x28')]){delete _0x600ca8[_0xcf93('0x28')];}_0x5b8dc6['status'](_0x452a44)['send'](_0x600ca8);};}exports[_0xcf93('0x29')]=function(_0x4cb938,_0x4762d0){var _0x310a83={},_0x508910={},_0x16417d={'count':0x0,'rows':[]};var _0x450dd8=_[_0xcf93('0x2a')](db['ChatTransferReport'][_0xcf93('0x2b')],function(_0x390160){return{'name':_0x390160['fieldName'],'type':_0x390160['type'][_0xcf93('0x2c')]};});_0x508910['model']=_[_0xcf93('0x2a')](_0x450dd8,_0xcf93('0x28'));_0x508910[_0xcf93('0x2d')]=_['keys'](_0x4cb938[_0xcf93('0x2d')]);_0x508910[_0xcf93('0x2e')]=_[_0xcf93('0x2f')](_0x508910[_0xcf93('0x30')],_0x508910[_0xcf93('0x2d')]);_0x310a83[_0xcf93('0x31')]=_['intersection'](_0x508910[_0xcf93('0x30')],qs[_0xcf93('0x32')](_0x4cb938[_0xcf93('0x2d')][_0xcf93('0x32')]));_0x310a83['attributes']=_0x310a83[_0xcf93('0x31')][_0xcf93('0x33')]?_0x310a83[_0xcf93('0x31')]:_0x508910[_0xcf93('0x30')];if(!_0x4cb938['query'][_0xcf93('0x34')](_0xcf93('0x35'))){_0x310a83[_0xcf93('0x1f')]=qs[_0xcf93('0x1f')](_0x4cb938[_0xcf93('0x2d')][_0xcf93('0x1f')]);_0x310a83['offset']=qs[_0xcf93('0x1e')](_0x4cb938['query'][_0xcf93('0x1e')]);}_0x310a83['order']=qs[_0xcf93('0x36')](_0x4cb938[_0xcf93('0x2d')][_0xcf93('0x36')]);_0x310a83[_0xcf93('0x37')]=qs['filters'](_[_0xcf93('0x38')](_0x4cb938[_0xcf93('0x2d')],_0x508910[_0xcf93('0x2e')]),_0x450dd8);if(_0x4cb938[_0xcf93('0x2d')][_0xcf93('0x39')]){_0x310a83['where']=_[_0xcf93('0x3a')](_0x310a83[_0xcf93('0x37')],{'$or':_[_0xcf93('0x2a')](_0x450dd8,function(_0x2798fe){if(_0x2798fe[_0xcf93('0x3b')]!==_0xcf93('0x3c')){var _0xb330c8={};_0xb330c8[_0x2798fe['name']]={'$like':'%'+_0x4cb938[_0xcf93('0x2d')][_0xcf93('0x39')]+'%'};return _0xb330c8;}})});}_0x310a83=_['merge']({},_0x310a83,_0x4cb938[_0xcf93('0x3d')]);var _0x477085={'where':_0x310a83[_0xcf93('0x37')]};return db['ChatTransferReport'][_0xcf93('0x21')](_0x477085)[_0xcf93('0x25')](function(_0x502bb2){_0x16417d[_0xcf93('0x21')]=_0x502bb2;if(_0x4cb938[_0xcf93('0x2d')][_0xcf93('0x3e')]){_0x310a83['include']=[{'all':!![]}];}return db[_0xcf93('0x3f')][_0xcf93('0x40')](_0x310a83);})[_0xcf93('0x25')](function(_0x17e3f2){_0x16417d['rows']=_0x17e3f2;return _0x16417d;})[_0xcf93('0x25')](respondWithFilteredResult(_0x4762d0,_0x310a83))[_0xcf93('0x41')](handleError(_0x4762d0,null));};exports[_0xcf93('0x42')]=function(_0x4e4890,_0x32856b){var _0x54d3eb={'raw':!![],'where':{'id':_0x4e4890['params']['id']}},_0xd508c1={};_0xd508c1['model']=_['keys'](db[_0xcf93('0x3f')]['rawAttributes']);_0xd508c1[_0xcf93('0x2d')]=_[_0xcf93('0x43')](_0x4e4890[_0xcf93('0x2d')]);_0xd508c1[_0xcf93('0x2e')]=_[_0xcf93('0x2f')](_0xd508c1[_0xcf93('0x30')],_0xd508c1[_0xcf93('0x2d')]);_0x54d3eb[_0xcf93('0x31')]=_[_0xcf93('0x2f')](_0xd508c1[_0xcf93('0x30')],qs[_0xcf93('0x32')](_0x4e4890[_0xcf93('0x2d')][_0xcf93('0x32')]));_0x54d3eb[_0xcf93('0x31')]=_0x54d3eb[_0xcf93('0x31')]['length']?_0x54d3eb[_0xcf93('0x31')]:_0xd508c1[_0xcf93('0x30')];if(_0x4e4890[_0xcf93('0x2d')][_0xcf93('0x3e')]){_0x54d3eb[_0xcf93('0x44')]=[{'all':!![]}];}_0x54d3eb=_[_0xcf93('0x3a')]({},_0x54d3eb,_0x4e4890[_0xcf93('0x3d')]);return db[_0xcf93('0x3f')][_0xcf93('0x45')](_0x54d3eb)[_0xcf93('0x25')](handleEntityNotFound(_0x32856b,null))[_0xcf93('0x25')](respondWithResult(_0x32856b,null))[_0xcf93('0x41')](handleError(_0x32856b,null));};exports[_0xcf93('0x46')]=function(_0x448585,_0x146ed9){return db[_0xcf93('0x3f')][_0xcf93('0x46')](_0x448585[_0xcf93('0x47')],{})[_0xcf93('0x25')](respondWithResult(_0x146ed9,0xc9))[_0xcf93('0x41')](handleError(_0x146ed9,null));};exports['update']=function(_0x38bd78,_0x1e8c35){if(_0x38bd78[_0xcf93('0x47')]['id']){delete _0x38bd78['body']['id'];}return db[_0xcf93('0x3f')][_0xcf93('0x45')]({'where':{'id':_0x38bd78[_0xcf93('0x48')]['id']}})[_0xcf93('0x25')](handleEntityNotFound(_0x1e8c35,null))[_0xcf93('0x25')](saveUpdates(_0x38bd78[_0xcf93('0x47')],null))[_0xcf93('0x25')](respondWithResult(_0x1e8c35,null))[_0xcf93('0x41')](handleError(_0x1e8c35,null));};exports[_0xcf93('0x49')]=function(_0x13c459,_0x402cf3){return db[_0xcf93('0x3f')][_0xcf93('0x45')]({'where':{'id':_0x13c459['params']['id']}})[_0xcf93('0x25')](handleEntityNotFound(_0x402cf3,null))[_0xcf93('0x25')](removeEntity(_0x402cf3,null))['catch'](handleError(_0x402cf3,null));};exports[_0xcf93('0x4a')]=function(_0x37b4a1,_0x5d7b03){return db[_0xcf93('0x3f')][_0xcf93('0x4a')]()[_0xcf93('0x25')](respondWithResult(_0x5d7b03,null))[_0xcf93('0x41')](handleError(_0x5d7b03,null));};
\ No newline at end of file
+var _0x63f5=['intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','create','body','update','find','params','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../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','destroy','then','error','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','name','query','keys','filters'];(function(_0x3f2d02,_0x2c7deb){var _0x54092b=function(_0x427ff8){while(--_0x427ff8){_0x3f2d02['push'](_0x3f2d02['shift']());}};_0x54092b(++_0x2c7deb);}(_0x63f5,0x105));var _0x563f=function(_0x4ede04,_0x58132b){_0x4ede04=_0x4ede04-0x0;var _0x49ccfc=_0x63f5[_0x4ede04];return _0x49ccfc;};'use strict';var emlformat=require(_0x563f('0x0'));var rimraf=require(_0x563f('0x1'));var zipdir=require(_0x563f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x563f('0x3'));var BPromise=require(_0x563f('0x4'));var Mustache=require(_0x563f('0x5'));var util=require('util');var path=require(_0x563f('0x6'));var sox=require(_0x563f('0x7'));var csv=require(_0x563f('0x8'));var ejs=require(_0x563f('0x9'));var fs=require('fs');var fs_extra=require(_0x563f('0xa'));var _=require(_0x563f('0xb'));var squel=require(_0x563f('0xc'));var crypto=require(_0x563f('0xd'));var jsforce=require(_0x563f('0xe'));var deskjs=require(_0x563f('0xf'));var toCsv=require(_0x563f('0x8'));var querystring=require('querystring');var Papa=require(_0x563f('0x10'));var Redis=require(_0x563f('0x11'));var authService=require(_0x563f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x563f('0x13'));var logger=require(_0x563f('0x14'))(_0x563f('0x15'));var utils=require(_0x563f('0x16'));var config=require(_0x563f('0x17'));var licenseUtil=require(_0x563f('0x18'));var db=require(_0x563f('0x19'))['db'];function respondWithStatusCode(_0x3b55db,_0x42acf3){_0x42acf3=_0x42acf3||0xcc;return function(_0x176b21){if(_0x176b21){return _0x3b55db[_0x563f('0x1a')](_0x42acf3);}return _0x3b55db[_0x563f('0x1b')](_0x42acf3)[_0x563f('0x1c')]();};}function respondWithResult(_0x3f644d,_0x3e8f6a){_0x3e8f6a=_0x3e8f6a||0xc8;return function(_0x51bf44){if(_0x51bf44){return _0x3f644d[_0x563f('0x1b')](_0x3e8f6a)[_0x563f('0x1d')](_0x51bf44);}};}function respondWithFilteredResult(_0x2d2678,_0x1b1b91){return function(_0x4c60d6){if(_0x4c60d6){var _0x45c5f5=typeof _0x1b1b91[_0x563f('0x1e')]===_0x563f('0x1f')&&typeof _0x1b1b91[_0x563f('0x20')]==='undefined';var _0x127d3d=_0x4c60d6[_0x563f('0x21')];var _0x467bb8=_0x45c5f5?0x0:_0x1b1b91[_0x563f('0x1e')];var _0x1fa500=_0x45c5f5?_0x4c60d6['count']:_0x1b1b91[_0x563f('0x1e')]+_0x1b1b91[_0x563f('0x20')];var _0xa5160f;if(_0x1fa500>=_0x127d3d){_0x1fa500=_0x127d3d;_0xa5160f=0xc8;}else{_0xa5160f=0xce;}_0x2d2678['status'](_0xa5160f);return _0x2d2678[_0x563f('0x22')](_0x563f('0x23'),_0x467bb8+'-'+_0x1fa500+'/'+_0x127d3d)['json'](_0x4c60d6);}return null;};}function patchUpdates(_0x1b3ea5){return function(_0x5d8b6c){try{jsonpatch[_0x563f('0x24')](_0x5d8b6c,_0x1b3ea5,!![]);}catch(_0x2fd0fa){return BPromise[_0x563f('0x25')](_0x2fd0fa);}return _0x5d8b6c[_0x563f('0x26')]();};}function saveUpdates(_0x450cd0,_0x121707){return function(_0x40da46){if(_0x40da46){return _0x40da46['update'](_0x450cd0)['then'](function(_0x1a7a32){return _0x1a7a32;});}return null;};}function removeEntity(_0x280f7e,_0x272b6a){return function(_0x5acc05){if(_0x5acc05){return _0x5acc05[_0x563f('0x27')]()[_0x563f('0x28')](function(){_0x280f7e[_0x563f('0x1b')](0xcc)[_0x563f('0x1c')]();});}};}function handleEntityNotFound(_0x280d31,_0x43a246){return function(_0xde34ca){if(!_0xde34ca){_0x280d31[_0x563f('0x1a')](0x194);}return _0xde34ca;};}function handleError(_0xd595e0,_0xff5a1f){_0xff5a1f=_0xff5a1f||0x1f4;return function(_0x3691ee){logger[_0x563f('0x29')](_0x3691ee['stack']);if(_0x3691ee['name']){delete _0x3691ee['name'];}_0xd595e0[_0x563f('0x1b')](_0xff5a1f)[_0x563f('0x2a')](_0x3691ee);};}exports[_0x563f('0x2b')]=function(_0x3c555b,_0x5b1171){var _0x31a399={},_0x11c5cc={},_0x37d614={'count':0x0,'rows':[]};var _0xfbc34c=_[_0x563f('0x2c')](db[_0x563f('0x2d')][_0x563f('0x2e')],function(_0x18bd8f){return{'name':_0x18bd8f[_0x563f('0x2f')],'type':_0x18bd8f[_0x563f('0x30')][_0x563f('0x31')]};});_0x11c5cc[_0x563f('0x32')]=_[_0x563f('0x2c')](_0xfbc34c,_0x563f('0x33'));_0x11c5cc[_0x563f('0x34')]=_[_0x563f('0x35')](_0x3c555b[_0x563f('0x34')]);_0x11c5cc[_0x563f('0x36')]=_[_0x563f('0x37')](_0x11c5cc['model'],_0x11c5cc[_0x563f('0x34')]);_0x31a399[_0x563f('0x38')]=_[_0x563f('0x37')](_0x11c5cc[_0x563f('0x32')],qs[_0x563f('0x39')](_0x3c555b[_0x563f('0x34')][_0x563f('0x39')]));_0x31a399[_0x563f('0x38')]=_0x31a399[_0x563f('0x38')][_0x563f('0x3a')]?_0x31a399[_0x563f('0x38')]:_0x11c5cc[_0x563f('0x32')];if(!_0x3c555b['query']['hasOwnProperty']('nolimit')){_0x31a399['limit']=qs['limit'](_0x3c555b['query'][_0x563f('0x20')]);_0x31a399[_0x563f('0x1e')]=qs['offset'](_0x3c555b[_0x563f('0x34')][_0x563f('0x1e')]);}_0x31a399[_0x563f('0x3b')]=qs['sort'](_0x3c555b[_0x563f('0x34')][_0x563f('0x3c')]);_0x31a399[_0x563f('0x3d')]=qs['filters'](_[_0x563f('0x3e')](_0x3c555b[_0x563f('0x34')],_0x11c5cc[_0x563f('0x36')]),_0xfbc34c);if(_0x3c555b['query'][_0x563f('0x3f')]){_0x31a399[_0x563f('0x3d')]=_[_0x563f('0x40')](_0x31a399[_0x563f('0x3d')],{'$or':_[_0x563f('0x2c')](_0xfbc34c,function(_0x2ee9d3){if(_0x2ee9d3[_0x563f('0x30')]!==_0x563f('0x41')){var _0x10edd9={};_0x10edd9[_0x2ee9d3[_0x563f('0x33')]]={'$like':'%'+_0x3c555b[_0x563f('0x34')][_0x563f('0x3f')]+'%'};return _0x10edd9;}})});}_0x31a399=_[_0x563f('0x40')]({},_0x31a399,_0x3c555b[_0x563f('0x42')]);var _0x366318={'where':_0x31a399[_0x563f('0x3d')]};return db['ChatTransferReport'][_0x563f('0x21')](_0x366318)[_0x563f('0x28')](function(_0x4ef29e){_0x37d614[_0x563f('0x21')]=_0x4ef29e;if(_0x3c555b['query']['includeAll']){_0x31a399[_0x563f('0x43')]=[{'all':!![]}];}return db[_0x563f('0x2d')][_0x563f('0x44')](_0x31a399);})[_0x563f('0x28')](function(_0x4b9a3e){_0x37d614[_0x563f('0x45')]=_0x4b9a3e;return _0x37d614;})['then'](respondWithFilteredResult(_0x5b1171,_0x31a399))[_0x563f('0x46')](handleError(_0x5b1171,null));};exports[_0x563f('0x47')]=function(_0x538b33,_0x2e1572){var _0x53c16b={'raw':!![],'where':{'id':_0x538b33['params']['id']}},_0x5d1d0a={};_0x5d1d0a['model']=_[_0x563f('0x35')](db[_0x563f('0x2d')][_0x563f('0x2e')]);_0x5d1d0a['query']=_['keys'](_0x538b33['query']);_0x5d1d0a['filters']=_['intersection'](_0x5d1d0a[_0x563f('0x32')],_0x5d1d0a[_0x563f('0x34')]);_0x53c16b['attributes']=_[_0x563f('0x37')](_0x5d1d0a[_0x563f('0x32')],qs[_0x563f('0x39')](_0x538b33[_0x563f('0x34')]['fields']));_0x53c16b[_0x563f('0x38')]=_0x53c16b['attributes'][_0x563f('0x3a')]?_0x53c16b[_0x563f('0x38')]:_0x5d1d0a[_0x563f('0x32')];if(_0x538b33[_0x563f('0x34')][_0x563f('0x48')]){_0x53c16b[_0x563f('0x43')]=[{'all':!![]}];}_0x53c16b=_['merge']({},_0x53c16b,_0x538b33[_0x563f('0x42')]);return db[_0x563f('0x2d')]['find'](_0x53c16b)[_0x563f('0x28')](handleEntityNotFound(_0x2e1572,null))[_0x563f('0x28')](respondWithResult(_0x2e1572,null))[_0x563f('0x46')](handleError(_0x2e1572,null));};exports[_0x563f('0x49')]=function(_0x325c71,_0x222e08){return db[_0x563f('0x2d')][_0x563f('0x49')](_0x325c71[_0x563f('0x4a')],{})[_0x563f('0x28')](respondWithResult(_0x222e08,0xc9))[_0x563f('0x46')](handleError(_0x222e08,null));};exports[_0x563f('0x4b')]=function(_0x2660ba,_0x574e06){if(_0x2660ba['body']['id']){delete _0x2660ba[_0x563f('0x4a')]['id'];}return db[_0x563f('0x2d')][_0x563f('0x4c')]({'where':{'id':_0x2660ba['params']['id']}})['then'](handleEntityNotFound(_0x574e06,null))[_0x563f('0x28')](saveUpdates(_0x2660ba[_0x563f('0x4a')],null))['then'](respondWithResult(_0x574e06,null))['catch'](handleError(_0x574e06,null));};exports[_0x563f('0x27')]=function(_0x338972,_0x2734ca){return db[_0x563f('0x2d')][_0x563f('0x4c')]({'where':{'id':_0x338972[_0x563f('0x4d')]['id']}})[_0x563f('0x28')](handleEntityNotFound(_0x2734ca,null))[_0x563f('0x28')](removeEntity(_0x2734ca,null))[_0x563f('0x46')](handleError(_0x2734ca,null));};exports[_0x563f('0x4e')]=function(_0x390d99,_0x44f614){return db[_0x563f('0x2d')][_0x563f('0x4e')]()[_0x563f('0x28')](respondWithResult(_0x44f614,null))[_0x563f('0x46')](handleError(_0x44f614,null));};
\ No newline at end of file
index 38fb6fc..719309c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa31=['ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define'];(function(_0x190487,_0x503b7c){var _0x6e23a0=function(_0x86450c){while(--_0x86450c){_0x190487['push'](_0x190487['shift']());}};_0x6e23a0(++_0x503b7c);}(_0xaa31,0x13b));var _0x1aa3=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xaa31[_0x1928c9];return _0x51b5fb;};'use strict';var _=require(_0x1aa3('0x0'));var util=require(_0x1aa3('0x1'));var logger=require(_0x1aa3('0x2'))(_0x1aa3('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1aa3('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1aa3('0x5'));var config=require(_0x1aa3('0x6'));var attributes=require(_0x1aa3('0x7'));module[_0x1aa3('0x8')]=function(_0x3f442,_0x13cf40){return _0x3f442[_0x1aa3('0x9')](_0x1aa3('0xa'),attributes,{'tableName':_0x1aa3('0xb'),'paranoid':![],'indexes':[{'name':_0x1aa3('0xc'),'fields':[_0x1aa3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4561=['request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','define','report_chat_transfer','uniqueid','lodash','../../config/logger','bluebird'];(function(_0xadd2e3,_0x148cba){var _0x47e800=function(_0x2e332c){while(--_0x2e332c){_0xadd2e3['push'](_0xadd2e3['shift']());}};_0x47e800(++_0x148cba);}(_0x4561,0xce));var _0x1456=function(_0x39a07e,_0x1a621d){_0x39a07e=_0x39a07e-0x0;var _0x52465f=_0x4561[_0x39a07e];return _0x52465f;};'use strict';var _=require(_0x1456('0x0'));var util=require('util');var logger=require(_0x1456('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1456('0x2'));var rp=require(_0x1456('0x3'));var fs=require('fs');var path=require(_0x1456('0x4'));var rimraf=require(_0x1456('0x5'));var config=require(_0x1456('0x6'));var attributes=require(_0x1456('0x7'));module['exports']=function(_0xdd5580,_0x471c89){return _0xdd5580[_0x1456('0x8')]('ChatTransferReport',attributes,{'tableName':_0x1456('0x9'),'paranoid':![],'indexes':[{'name':_0x1456('0xa'),'fields':[_0x1456('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index c6fef99..0ffddc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e87=['ChatTransferReport,\x20%s,\x20%s','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','info'];(function(_0x42c23f,_0x5debf9){var _0x491e23=function(_0x2fefe8){while(--_0x2fefe8){_0x42c23f['push'](_0x42c23f['shift']());}};_0x491e23(++_0x5debf9);}(_0x3e87,0x1ec));var _0x73e8=function(_0x330f6e,_0x388b3a){_0x330f6e=_0x330f6e-0x0;var _0x20782c=_0x3e87[_0x330f6e];return _0x20782c;};'use strict';var _=require(_0x73e8('0x0'));var util=require(_0x73e8('0x1'));var moment=require(_0x73e8('0x2'));var BPromise=require('bluebird');var rs=require(_0x73e8('0x3'));var fs=require('fs');var Redis=require(_0x73e8('0x4'));var db=require(_0x73e8('0x5'))['db'];var utils=require(_0x73e8('0x6'));var logger=require('../../config/logger')(_0x73e8('0x7'));var config=require('../../config/environment');var jayson=require(_0x73e8('0x8'));var client=jayson[_0x73e8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1099a3,_0x39c134,_0x27be36){return new BPromise(function(_0x3ee115,_0x1a1762){return client[_0x73e8('0xa')](_0x1099a3,_0x27be36)['then'](function(_0x2d3304){logger[_0x73e8('0xb')](_0x73e8('0xc'),_0x39c134,_0x73e8('0xd'));logger['debug'](_0x73e8('0xe'),_0x39c134,'request\x20sent',JSON[_0x73e8('0xf')](_0x2d3304));if(_0x2d3304[_0x73e8('0x10')]){if(_0x2d3304[_0x73e8('0x10')][_0x73e8('0x11')]===0x1f4){logger[_0x73e8('0x10')]('ChatTransferReport,\x20%s,\x20%s',_0x39c134,_0x2d3304[_0x73e8('0x10')][_0x73e8('0x12')]);return _0x1a1762(_0x2d3304['error'][_0x73e8('0x12')]);}logger['error'](_0x73e8('0xc'),_0x39c134,_0x2d3304[_0x73e8('0x10')]['message']);return _0x3ee115(_0x2d3304[_0x73e8('0x10')]['message']);}else{logger[_0x73e8('0xb')](_0x73e8('0xc'),_0x39c134,_0x73e8('0xd'));_0x3ee115(_0x2d3304[_0x73e8('0x13')][_0x73e8('0x12')]);}})[_0x73e8('0x14')](function(_0x22c8de){logger[_0x73e8('0x10')]('ChatTransferReport,\x20%s,\x20%s',_0x39c134,_0x22c8de);_0x1a1762(_0x22c8de);});});}
\ No newline at end of file
+var _0x327b=['jayson/promise','client','request','then','info','request\x20sent','debug','error','message','ChatTransferReport,\x20%s,\x20%s','result','catch','moment','bluebird','randomstring','rpc'];(function(_0x432aa9,_0x204563){var _0x4b1889=function(_0xbb5cf3){while(--_0xbb5cf3){_0x432aa9['push'](_0x432aa9['shift']());}};_0x4b1889(++_0x204563);}(_0x327b,0x1bc));var _0xb327=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x327b[_0xdea41a];return _0x15d0d8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb327('0x0'));var BPromise=require(_0xb327('0x1'));var rs=require(_0xb327('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb327('0x3'));var config=require('../../config/environment');var jayson=require(_0xb327('0x4'));var client=jayson[_0xb327('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x133c87,_0x53d41b,_0x324263){return new BPromise(function(_0x4f6df5,_0x37680c){return client[_0xb327('0x6')](_0x133c87,_0x324263)[_0xb327('0x7')](function(_0x5e19c2){logger[_0xb327('0x8')]('ChatTransferReport,\x20%s,\x20%s',_0x53d41b,_0xb327('0x9'));logger[_0xb327('0xa')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x53d41b,_0xb327('0x9'),JSON['stringify'](_0x5e19c2));if(_0x5e19c2[_0xb327('0xb')]){if(_0x5e19c2['error']['code']===0x1f4){logger[_0xb327('0xb')]('ChatTransferReport,\x20%s,\x20%s',_0x53d41b,_0x5e19c2[_0xb327('0xb')][_0xb327('0xc')]);return _0x37680c(_0x5e19c2['error'][_0xb327('0xc')]);}logger[_0xb327('0xb')](_0xb327('0xd'),_0x53d41b,_0x5e19c2[_0xb327('0xb')][_0xb327('0xc')]);return _0x4f6df5(_0x5e19c2[_0xb327('0xb')][_0xb327('0xc')]);}else{logger[_0xb327('0x8')]('ChatTransferReport,\x20%s,\x20%s',_0x53d41b,_0xb327('0x9'));_0x4f6df5(_0x5e19c2[_0xb327('0xe')][_0xb327('0xc')]);}})[_0xb327('0xf')](function(_0x11549f){logger['error'](_0xb327('0xd'),_0x53d41b,_0x11549f);_0x37680c(_0x11549f);});});}
\ No newline at end of file
index ac35508..ab6c35d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcce3=['create','put','update','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xcce3,0x1bd));var _0x3cce=function(_0x5575cd,_0x73ab7a){_0x5575cd=_0x5575cd-0x0;var _0x4979a0=_0xcce3[_0x5575cd];return _0x4979a0;};'use strict';var multer=require('multer');var util=require(_0x3cce('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3cce('0x1'));var router=express[_0x3cce('0x2')]();var fs_extra=require(_0x3cce('0x3'));var auth=require(_0x3cce('0x4'));var interaction=require(_0x3cce('0x5'));var config=require(_0x3cce('0x6'));var controller=require(_0x3cce('0x7'));router['get']('/',auth[_0x3cce('0x8')](),controller[_0x3cce('0x9')]);router[_0x3cce('0xa')](_0x3cce('0xb'),auth['isAuthenticated'](),controller[_0x3cce('0xc')]);router[_0x3cce('0xa')](_0x3cce('0xd'),auth[_0x3cce('0x8')](),controller['show']);router[_0x3cce('0xe')]('/',auth['isAuthenticated'](),controller[_0x3cce('0xf')]);router[_0x3cce('0x10')](_0x3cce('0xd'),auth[_0x3cce('0x8')](),controller[_0x3cce('0x11')]);router['delete'](_0x3cce('0xd'),auth[_0x3cce('0x8')](),controller[_0x3cce('0x12')]);module[_0x3cce('0x13')]=router;
\ No newline at end of file
+var _0xa3a6=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','delete','destroy','exports','util','path','express'];(function(_0x3bbb6f,_0x417963){var _0x42cfc4=function(_0x357d55){while(--_0x357d55){_0x3bbb6f['push'](_0x3bbb6f['shift']());}};_0x42cfc4(++_0x417963);}(_0xa3a6,0xb1));var _0x6a3a=function(_0x42c26c,_0x293b2e){_0x42c26c=_0x42c26c-0x0;var _0x76fae5=_0xa3a6[_0x42c26c];return _0x76fae5;};'use strict';var multer=require('multer');var util=require(_0x6a3a('0x0'));var path=require(_0x6a3a('0x1'));var timeout=require('connect-timeout');var express=require(_0x6a3a('0x2'));var router=express[_0x6a3a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6a3a('0x4'));var interaction=require(_0x6a3a('0x5'));var config=require(_0x6a3a('0x6'));var controller=require(_0x6a3a('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6a3a('0x8')](_0x6a3a('0x9'),auth[_0x6a3a('0xa')](),controller[_0x6a3a('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x6a3a('0xc')]);router[_0x6a3a('0xd')]('/',auth[_0x6a3a('0xa')](),controller[_0x6a3a('0xe')]);router[_0x6a3a('0xf')](_0x6a3a('0x10'),auth[_0x6a3a('0xa')](),controller['update']);router[_0x6a3a('0x11')](_0x6a3a('0x10'),auth[_0x6a3a('0xa')](),controller[_0x6a3a('0x12')]);module[_0x6a3a('0x13')]=router;
\ No newline at end of file
index 7755d1d..12dbbfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49e6=['Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','ENUM','star','thumb','stringify','input','name','text','onlineForm','parse','Comments','Leave\x20your\x20comments','getDataValue','offlineForm','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error'];(function(_0x20be7e,_0x56db99){var _0x43728c=function(_0x43d386){while(--_0x43d386){_0x20be7e['push'](_0x20be7e['shift']());}};_0x43728c(++_0x56db99);}(_0x49e6,0x16e));var _0x649e=function(_0x126afd,_0xd4bb03){_0x126afd=_0x126afd-0x0;var _0x3d5391=_0x49e6[_0x126afd];return _0x3d5391;};'use strict';var Sequelize=require(_0x649e('0x0'));var rs=require(_0x649e('0x1'));module[_0x649e('0x2')]={'name':{'type':Sequelize[_0x649e('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x649e('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x649e('0x3')]},'mapKey':{'type':Sequelize[_0x649e('0x3')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x4')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x649e('0x3')],'allowNull':![],'defaultValue':_0x649e('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x649e('0x3')],'allowNull':![],'defaultValue':_0x649e('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x649e('0x3')],'allowNull':![],'defaultValue':_0x649e('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x649e('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x649e('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x649e('0x3')]},'animation':{'type':Sequelize[_0x649e('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded','squared'),'defaultValue':_0x649e('0xa')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x649e('0xb')},'start_chat_button':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0xc')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x649e('0xd')},'header_offline':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0xe')},'download_transcript':{'type':Sequelize[_0x649e('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x649e('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0x649e('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x649e('0xf')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0x649e('0x10')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0x649e('0x11')},'formSubmitFailureMessage':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x12')},'noteTitle':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x13')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0x649e('0x14')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x649e('0x15')},'closingMessageButton':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0xd')},'skipMessageButton':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x16')},'conditionAgreement':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':_0x649e('0x17')},'ratingType':{'type':Sequelize[_0x649e('0x18')](_0x649e('0x19'),_0x649e('0x1a')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x649e('0x1b')]({'items':[{'type':_0x649e('0x1c'),'variable':null,'config':{'placeholder':_0x649e('0x1d'),'type':_0x649e('0x1e'),'required':!![]},'props':{'title':_0x649e('0x1d'),'helpText':''}},{'type':_0x649e('0x1c'),'props':{'title':_0x649e('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x649e('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x649e('0x1f'))?JSON[_0x649e('0x20')](this['getDataValue'](_0x649e('0x1f'))):{};},'set':function(_0x514685){return this['setDataValue']('onlineForm',JSON[_0x649e('0x1b')](_0x514685));}},'offlineForm':{'type':Sequelize[_0x649e('0xf')],'defaultValue':function(){return JSON[_0x649e('0x1b')]({'items':[{'type':_0x649e('0x1c'),'props':{'title':_0x649e('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x649e('0x4'),'type':'email'},'variable':null},{'type':'textarea','config':{'placeholder':_0x649e('0x21')},'props':{'title':'Comments','helpText':_0x649e('0x22')}}],'fromKey':0x0});},'get':function(){return this[_0x649e('0x23')](_0x649e('0x24'))?JSON[_0x649e('0x20')](this[_0x649e('0x23')]('offlineForm')):{};},'set':function(_0x313de8){return this['setDataValue'](_0x649e('0x24'),JSON[_0x649e('0x1b')](_0x313de8));}},'token':{'type':Sequelize[_0x649e('0x3')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x649e('0x3')]},'forwardOffline':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x649e('0x3')]},'waitingTitle':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x25')},'waitingMessage':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x26')},'offlineMessageSubject':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x27')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x649e('0x28')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x649e('0x3')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x16')},'sendUnmanaged':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0xd')},'enableCustomerAttachment':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x649e('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x649e('0x29');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x2a')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x2b')},'verticalAlignment':{'type':Sequelize[_0x649e('0x8')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x2c')},'messagesAlignment':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x2d')},'defaultTitle':{'type':Sequelize[_0x649e('0x3')]},'customerAvatar':{'type':Sequelize[_0x649e('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x649e('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x649e('0x3')],'allowNull':![],'defaultValue':_0x649e('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x649e('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x649e('0x3')],'defaultValue':_0x649e('0x2f')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x649e('0x8')],'comment':_0x649e('0x30')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x649e('0x31'),'set':function(_0x5dd340){if(!_0x5dd340)this[_0x649e('0x32')](_0x649e('0x33'),null);this[_0x649e('0x32')](_0x649e('0x34'),_0x5dd340);}},'vidaooEscalation':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x649e('0x3')]},'vidaooTopic':{'type':Sequelize[_0x649e('0x3')],'allowNull':![],'defaultValue':_0x649e('0x35')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x649e('0x36');}},'vidaooMetadata':{'type':Sequelize[_0x649e('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x649e('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x649e('0xf')]}};
\ No newline at end of file
+var _0xfd90=['input','name','text','getDataValue','onlineForm','parse','setDataValue','Comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','address','email','#011F6A','#ffffff','INTEGER','BOOLEAN','rounded','squared','We\x20are\x20here!','Chat','Send','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Skip','ENUM','thumb','star','stringify'];(function(_0x3f4098,_0x3365b2){var _0x3d5d0c=function(_0x3a7cdb){while(--_0x3a7cdb){_0x3f4098['push'](_0x3f4098['shift']());}};_0x3d5d0c(++_0x3365b2);}(_0xfd90,0x7d));var _0x0fd9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfd90[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0fd9('0x0'));var rs=require(_0x0fd9('0x1'));module[_0x0fd9('0x2')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0x0fd9('0x3')],'allowNull':![],'unique':_0x0fd9('0x4')},'description':{'type':Sequelize[_0x0fd9('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x0fd9('0x5')},'mapKeyOffline':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x5')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x0fd9('0x3')],'allowNull':![],'defaultValue':_0x0fd9('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x0fd9('0x3')],'allowNull':![],'defaultValue':_0x0fd9('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x0fd9('0x3')],'allowNull':![],'defaultValue':_0x0fd9('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x0fd9('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x0fd9('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x0fd9('0x3')]},'animation':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0x0fd9('0xa'),_0x0fd9('0xb')),'defaultValue':_0x0fd9('0xa')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x0fd9('0xc')},'start_chat_button':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0xd')},'offline_chat_button':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0xe')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x0fd9('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x0fd9('0xf')]},'closingQuestion':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x11')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0fd9('0x12')},'noteTitle':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x13')},'closingMessage':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x0fd9('0xe')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x0fd9('0x14')},'conditionAgreement':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x0fd9('0x15')]('star',_0x0fd9('0x16')),'defaultValue':_0x0fd9('0x17')},'ratingStarsNumber':{'type':Sequelize[_0x0fd9('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x0fd9('0xf')],'defaultValue':function(){return JSON[_0x0fd9('0x18')]({'items':[{'type':_0x0fd9('0x19'),'variable':null,'config':{'placeholder':_0x0fd9('0x1a'),'type':_0x0fd9('0x1b'),'required':!![]},'props':{'title':_0x0fd9('0x1a'),'helpText':''}},{'type':_0x0fd9('0x19'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x0fd9('0x5'),'type':_0x0fd9('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x0fd9('0x1c')](_0x0fd9('0x1d'))?JSON[_0x0fd9('0x1e')](this['getDataValue']('onlineForm')):{};},'set':function(_0x42d5f4){return this[_0x0fd9('0x1f')](_0x0fd9('0x1d'),JSON[_0x0fd9('0x18')](_0x42d5f4));}},'offlineForm':{'type':Sequelize[_0x0fd9('0xf')],'defaultValue':function(){return JSON[_0x0fd9('0x18')]({'items':[{'type':_0x0fd9('0x19'),'props':{'title':_0x0fd9('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x0fd9('0x5'),'type':_0x0fd9('0x5')},'variable':null},{'type':'textarea','config':{'placeholder':_0x0fd9('0x20')},'props':{'title':_0x0fd9('0x20'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0x0fd9('0x1c')](_0x0fd9('0x21'))?JSON['parse'](this[_0x0fd9('0x1c')](_0x0fd9('0x21'))):{};},'set':function(_0x44dbd7){return this['setDataValue']('offlineForm',JSON['stringify'](_0x44dbd7));}},'token':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':function(){return rs[_0x0fd9('0x22')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x23')},'waitingMessage':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x24')},'offlineMessageBody':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x25')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x0fd9('0x26')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x0fd9('0xe')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x0fd9('0xf')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x0fd9('0x3')]},'notificationTemplate':{'type':Sequelize[_0x0fd9('0xf')],'defaultValue':function(){return _0x0fd9('0x27');}},'notificationSound':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x28')},'waitForTheAssignedAgent':{'type':Sequelize[_0x0fd9('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x0fd9('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x29')},'verticalAlignment':{'type':Sequelize[_0x0fd9('0x8')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x2a')},'messagesAlignment':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x0fd9('0x3')]},'customerAvatar':{'type':Sequelize[_0x0fd9('0xf')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x0fd9('0x3')],'allowNull':![],'defaultValue':_0x0fd9('0x2b'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0fd9('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0fd9('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x0fd9('0x3')],'defaultValue':_0x0fd9('0x2c')},'systemAvatar':{'type':Sequelize[_0x0fd9('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0fd9('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![],'comment':_0x0fd9('0x2d'),'set':function(_0x33876b){if(!_0x33876b)this[_0x0fd9('0x1f')](_0x0fd9('0x2e'),null);this[_0x0fd9('0x1f')](_0x0fd9('0x2f'),_0x33876b);}},'vidaooEscalation':{'type':Sequelize[_0x0fd9('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0fd9('0x30')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x0fd9('0x31');}},'vidaooMetadata':{'type':Sequelize[_0x0fd9('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x0fd9('0xf')]}};
\ No newline at end of file
index c8768c0..c086c51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd67a=['createdAt','updatedAt','CompanyId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','Intervals','spread','List','account','list','Applications','asc','ListId','contact','headers','threadId','externalUrl','ChatInteraction','ContactId','interaction','messageId','created','autoclose','applications','push','unmanaged','AttachmentId','UserId','User','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','queueId','ChatQueue','queue','waitForTheAssignedQueue','startRouting','EventManager','files','send','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','findOrCreate','utf8','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','offline-chat','openNewInteraction','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','MailAccountId','subjectOffline','toPairsIn','mapValues','MailAccount','offlineMessageSubject','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','getProactiveActions','virtual','increment','chatLicenseExceeded','readFileSync','server/files/chat/iframe.ejs','URL','address','origin','3.5.0','remote','x-real-ip','remoteAddress','referer','replace','render','verticalAlignment','labelText','textColor','hideWhenOffline','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication','findAndCountAll','priority','finally','getApplications','chatProactiveAction','omit','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','Attachment','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','userChatWebsite:remove','getAgents','util','path','ejs','fs-extra','querystring','html-to-text','ioredis','jayson/promise','url','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../errors/api','APIOutOfIntervalError','APINotFoundError','handleError','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','http','client','request','then','ChatWebsite,\x20%s,\x20%s','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','update','destroy','get','ChatWebsites','UserProfileResource','name','getSnippet','timezone','format','iftime\x20%s,%s','iftime\x20%s','indexOf','true','interval','OFFLINE','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','No\x20timezone','map','Interval','all','user-agent-parser','setUA','getResult','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','browser','version','%s\x20%s','unknown','device','model','%s\x20%s\x20%s','vendor','type','index','Pause','mandatoryDispositionPause','ChatWebsite','rawAttributes','fieldName','key','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','params','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','nolimit','pick','ids','addAnswer','CannedAnswer','removeAnswers','addLogo','file','addAvatar','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','join','root','server/files/images/logos/default_logo.svg','sitepic','../../config/license/util','getLicense','custom','isNil','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','existsSync','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','Sequelize','ValidationError','no\x20available\x20attributes','difference'];(function(_0x4cefc3,_0x23f291){var _0x1cc779=function(_0x7cb914){while(--_0x7cb914){_0x4cefc3['push'](_0x4cefc3['shift']());}};_0x1cc779(++_0x23f291);}(_0xd67a,0x1ba));var _0xad67=function(_0xd43187,_0x197382){_0xd43187=_0xd43187-0x0;var _0x24d5a0=_0xd67a[_0xd43187];return _0x24d5a0;};'use strict';var Mustache=require('mustache');var util=require(_0xad67('0x0'));var path=require(_0xad67('0x1'));var ejs=require(_0xad67('0x2'));var fs=require('fs');var fs_extra=require(_0xad67('0x3'));var _=require('lodash');var querystring=require(_0xad67('0x4'));var htmlToText=require(_0xad67('0x5'));var Redis=require(_0xad67('0x6'));var jayson=require(_0xad67('0x7'));var url=require(_0xad67('0x8'));var qs=require(_0xad67('0x9'));var logger=require(_0xad67('0xa'))(_0xad67('0xb'));var config=require(_0xad67('0xc'));var APIOutOfIntervalError=require(_0xad67('0xd'))[_0xad67('0xe')];var APINotFoundError=require('../../errors/api')[_0xad67('0xf')];var APIHandleError=require('../../errors/api')[_0xad67('0x10')];var db=require(_0xad67('0x11'))['db'];config[_0xad67('0x12')]=_[_0xad67('0x13')](config[_0xad67('0x12')],{'host':_0xad67('0x14'),'port':0x18eb});var socket=require(_0xad67('0x15'))(new Redis(config[_0xad67('0x12')]));require(_0xad67('0x16'))['register'](socket);var client=jayson['client']['http']({'port':0x232c});var client9002=jayson['client'][_0xad67('0x17')]({'port':0x232a});var client9003=jayson['client'][_0xad67('0x17')]({'port':0x232b});var client9001=jayson[_0xad67('0x18')][_0xad67('0x17')]({'port':0x2329});function respondWithRpcPromise(_0x184378,_0x1c4264,_0xe9fd,_0x54e445){return new Promise(function(_0xde7710,_0x5cf5fa){var _0x442362=_0x54e445||client;return _0x442362[_0xad67('0x19')](_0x184378,_0xe9fd)[_0xad67('0x1a')](function(_0x369ded){logger['info'](_0xad67('0x1b'),_0x1c4264,'request\x20sent');logger['debug'](_0xad67('0x1c'),_0x1c4264,_0xad67('0x1d'),JSON[_0xad67('0x1e')](_0x369ded));if(_0x369ded[_0xad67('0x1f')]){if(_0x369ded[_0xad67('0x1f')][_0xad67('0x20')]===0x1f4){logger[_0xad67('0x1f')](_0xad67('0x1b'),_0x1c4264,_0x369ded[_0xad67('0x1f')][_0xad67('0x21')]);return _0x5cf5fa(_0x369ded[_0xad67('0x1f')][_0xad67('0x21')]);}logger[_0xad67('0x1f')](_0xad67('0x1b'),_0x1c4264,_0x369ded['error'][_0xad67('0x21')]);return _0xde7710(_0x369ded[_0xad67('0x1f')][_0xad67('0x21')]);}else{logger[_0xad67('0x22')](_0xad67('0x1b'),_0x1c4264,_0xad67('0x1d'));_0xde7710(_0x369ded['result'][_0xad67('0x21')]);}})[_0xad67('0x23')](function(_0x270a67){logger[_0xad67('0x1f')](_0xad67('0x1b'),_0x1c4264,_0x270a67);_0x5cf5fa(_0x270a67);});});}function respondWithStatusCode(_0x2301a6,_0x634a60){_0x634a60=_0x634a60||0xcc;return function(_0x35b2d9){if(_0x35b2d9){return _0x2301a6[_0xad67('0x24')](_0x634a60);}return _0x2301a6[_0xad67('0x25')](_0x634a60)[_0xad67('0x26')]();};}function respondWithResult(_0xbf1375,_0x4a9198){_0x4a9198=_0x4a9198||0xc8;return function(_0x5bcf38){if(_0x5bcf38){return _0xbf1375[_0xad67('0x25')](_0x4a9198)[_0xad67('0x27')](_0x5bcf38);}};}function respondWithFilteredResult(_0x13ad50,_0x514495){return function(_0x58d859){if(_0x58d859){var _0x4c331a=typeof _0x514495[_0xad67('0x28')]===_0xad67('0x29')&&typeof _0x514495[_0xad67('0x2a')]===_0xad67('0x29');var _0x2601c4=_0x58d859[_0xad67('0x2b')];var _0xe1e545=_0x4c331a?0x0:_0x514495[_0xad67('0x28')];var _0xd893e=_0x4c331a?_0x58d859[_0xad67('0x2b')]:_0x514495[_0xad67('0x28')]+_0x514495[_0xad67('0x2a')];var _0x53c9aa;if(_0xd893e>=_0x2601c4){_0xd893e=_0x2601c4;_0x53c9aa=0xc8;}else{_0x53c9aa=0xce;}_0x13ad50[_0xad67('0x25')](_0x53c9aa);return _0x13ad50[_0xad67('0x2c')]('Content-Range',_0xe1e545+'-'+_0xd893e+'/'+_0x2601c4)[_0xad67('0x27')](_0x58d859);}return null;};}function saveUpdates(_0x57794c){return function(_0x1e706a){if(_0x1e706a){return _0x1e706a[_0xad67('0x2d')](_0x57794c)['then'](function(_0x592306){return _0x592306;});}return null;};}function removeEntity(_0x3250ea){return function(_0x289a08){if(_0x289a08){return _0x289a08[_0xad67('0x2e')]()[_0xad67('0x1a')](function(){var _0x217a23=_0x289a08[_0xad67('0x2f')]({'plain':!![]});var _0x3a96b9=_0xad67('0x30');return db[_0xad67('0x31')][_0xad67('0x2e')]({'where':{'type':_0x3a96b9,'resourceId':_0x217a23['id']}})[_0xad67('0x1a')](function(){return _0x289a08;});})[_0xad67('0x1a')](function(){_0x3250ea[_0xad67('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ef47c){return function(_0x2e1014){if(!_0x2e1014){_0x4ef47c[_0xad67('0x24')](0x194);}return _0x2e1014;};}function handleError(_0x1abeb6,_0x453952){_0x453952=_0x453952||0x1f4;return function(_0x4506ed){logger['error'](_0x4506ed['stack']);if(_0x4506ed[_0xad67('0x32')]){delete _0x4506ed[_0xad67('0x32')];}_0x1abeb6[_0xad67('0x25')](_0x453952)['send'](_0x4506ed);};}function iftimePromise(_0x4d0d76,_0x40617a){return respondWithRpcPromise('Command',_0xad67('0x33'),{'command':_0x40617a[_0xad67('0x34')]?util[_0xad67('0x35')](_0xad67('0x36'),_0x4d0d76['interval'],_0x40617a[_0xad67('0x34')]):util[_0xad67('0x35')](_0xad67('0x37'),_0x4d0d76['interval'])},client9002)[_0xad67('0x1a')](function(_0x43ef2f){var _0x1bed93=_0x43ef2f&&_0x43ef2f[_0xad67('0x38')](_0xad67('0x39'))>=0x0?!![]:![];logger[_0xad67('0x22')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x40617a['id'],_0x4d0d76['id'],_0x4d0d76[_0xad67('0x3a')],_0x1bed93?'ONLINE':_0xad67('0x3b'),_0x40617a['timezone']?_0x40617a[_0xad67('0x34')]:'No\x20timezone');return _0x1bed93;})[_0xad67('0x23')](function(_0x48399e){logger[_0xad67('0x1f')](_0xad67('0x3c'),_0x40617a['id'],_0x4d0d76['id'],_0x4d0d76[_0xad67('0x3a')],util[_0xad67('0x3d')](_0x48399e,{'showHidden':![],'depth':null}),_0x40617a['timezone']?_0x40617a[_0xad67('0x34')]:_0xad67('0x3e'));return![];});}function checkWebsiteIntervals(_0x3f3153){var _0x293460=_[_0xad67('0x3f')](_0x3f3153[_0xad67('0x40')]['Intervals'],function(_0x3d9604){var _0x558606=_0x3d9604[_0xad67('0x2f')]({'plain':!![]});return iftimePromise(_0x558606,_0x3f3153);});return Promise[_0xad67('0x41')](_0x293460)[_0xad67('0x1a')](function(_0xc2c69e){return _['some'](_0xc2c69e);});}function createInteractionObject(_0x5c22ab,_0x28ccad,_0x58c25f,_0x387338){var _0x43575b=require(_0xad67('0x42'));var _0x3beef9=new _0x43575b();var _0x3c5a47=_0x3beef9[_0xad67('0x43')](_0x58c25f['user-agent'])[_0xad67('0x44')]();var _0x5544b6=_0x28ccad[_0xad67('0x45')];if(_0x58c25f[_0xad67('0x46')]){_0x5544b6=_0x58c25f[_0xad67('0x46')];}else if(_0x58c25f[_0xad67('0x47')]){_0x5544b6=_[_0xad67('0x48')](_0x58c25f[_0xad67('0x47')][_0xad67('0x49')](','));}return{'ContactId':_0x387338['id'],'ChatWebsiteId':_0x5c22ab,'from':(_0x387338[_0xad67('0x4a')]||'')+'\x20'+(_0x387338[_0xad67('0x4b')]||''),'customerIp':_0x5544b6,'customerPort':_0x58c25f[_0xad67('0x4c')]?_0x58c25f[_0xad67('0x4c')]:null,'referer':_0x28ccad['referer'],'browserName':_0x3c5a47[_0xad67('0x4d')][_0xad67('0x32')]&&_0x3c5a47[_0xad67('0x4d')][_0xad67('0x4e')]?util['format'](_0xad67('0x4f'),_0x3c5a47[_0xad67('0x4d')][_0xad67('0x32')],_0x3c5a47[_0xad67('0x4d')][_0xad67('0x4e')]):_0xad67('0x50'),'browserVersion':_0x3c5a47[_0xad67('0x4d')][_0xad67('0x4e')]||_0xad67('0x50'),'osName':util[_0xad67('0x35')](_0xad67('0x4f'),_0x3c5a47['os'][_0xad67('0x32')],_0x3c5a47['os'][_0xad67('0x4e')]),'osVersion':_0x3c5a47['os']['version'],'deviceModel':_0x3c5a47[_0xad67('0x51')][_0xad67('0x52')]&&_0x3c5a47[_0xad67('0x51')]['vendor']?util[_0xad67('0x35')](_0xad67('0x53'),_0x3c5a47[_0xad67('0x51')][_0xad67('0x52')],_0x3c5a47['device'][_0xad67('0x54')],_0x3c5a47['device'][_0xad67('0x55')]):null,'deviceVendor':_0x3c5a47[_0xad67('0x51')][_0xad67('0x54')],'deviceType':_0x3c5a47['device']['type'],'formData':JSON[_0xad67('0x1e')](_0x28ccad)};}exports[_0xad67('0x56')]=function(_0xba886e,_0xa50cb1){var _0xe115db={'include':[{'model':db[_0xad67('0x57')],'as':_0xad67('0x58')}]},_0x167115={},_0x192816={'count':0x0,'rows':[]};var _0x429c66=_['map'](db[_0xad67('0x59')][_0xad67('0x5a')],function(_0x4d548f){return{'name':_0x4d548f[_0xad67('0x5b')],'type':_0x4d548f[_0xad67('0x55')][_0xad67('0x5c')]};});_0x167115[_0xad67('0x52')]=_[_0xad67('0x3f')](_0x429c66,_0xad67('0x32'));_0x167115[_0xad67('0x5d')]=_[_0xad67('0x5e')](_0xba886e[_0xad67('0x5d')]);_0x167115[_0xad67('0x5f')]=_[_0xad67('0x60')](_0x167115[_0xad67('0x52')],_0x167115[_0xad67('0x5d')]);_0xe115db[_0xad67('0x61')]=_[_0xad67('0x60')](_0x167115[_0xad67('0x52')],qs[_0xad67('0x62')](_0xba886e['query'][_0xad67('0x62')]));_0xe115db[_0xad67('0x61')]=_0xe115db[_0xad67('0x61')]['length']?_0xe115db[_0xad67('0x61')]:_0x167115[_0xad67('0x52')];if(!_0xba886e[_0xad67('0x5d')][_0xad67('0x63')]('nolimit')){_0xe115db[_0xad67('0x2a')]=qs[_0xad67('0x2a')](_0xba886e[_0xad67('0x5d')][_0xad67('0x2a')]);_0xe115db[_0xad67('0x28')]=qs[_0xad67('0x28')](_0xba886e[_0xad67('0x5d')]['offset']);}_0xe115db[_0xad67('0x64')]=qs[_0xad67('0x65')](_0xba886e[_0xad67('0x5d')][_0xad67('0x65')]);_0xe115db[_0xad67('0x66')]=qs['filters'](_['pick'](_0xba886e[_0xad67('0x5d')],_0x167115[_0xad67('0x5f')]),_0x429c66);if(_0xba886e[_0xad67('0x5d')][_0xad67('0x67')]){_0xe115db[_0xad67('0x66')]=_['merge'](_0xe115db[_0xad67('0x66')],{'$or':_['map'](_0x429c66,function(_0x52c91c){if(_0x52c91c[_0xad67('0x55')]!==_0xad67('0x68')){var _0x1f7e50={};_0x1f7e50[_0x52c91c[_0xad67('0x32')]]={'$like':'%'+_0xba886e[_0xad67('0x5d')][_0xad67('0x67')]+'%'};return _0x1f7e50;}})});}_0xe115db=_[_0xad67('0x69')]({},_0xe115db,_0xba886e[_0xad67('0x6a')]);var _0x3263b5={'where':_0xe115db['where']};return db[_0xad67('0x59')][_0xad67('0x2b')](_0x3263b5)['then'](function(_0x310053){_0x192816[_0xad67('0x2b')]=_0x310053;if(_0xba886e['query'][_0xad67('0x6b')]){_0xe115db[_0xad67('0x6c')]=[{'all':!![]}];}return db['ChatWebsite'][_0xad67('0x6d')](_0xe115db);})[_0xad67('0x1a')](function(_0x2a694f){_0x192816[_0xad67('0x6e')]=_0x2a694f;return _0x192816;})[_0xad67('0x1a')](respondWithFilteredResult(_0xa50cb1,_0xe115db))[_0xad67('0x23')](handleError(_0xa50cb1,null));};exports['show']=function(_0x18ff7f,_0x5c73d9){var _0x4292b0={'raw':![],'where':{'id':_0x18ff7f[_0xad67('0x6f')]['id']},'include':[{'model':db[_0xad67('0x57')],'as':_0xad67('0x58')}]},_0x14313f={};_0x14313f['model']=_[_0xad67('0x5e')](db['ChatWebsite'][_0xad67('0x5a')]);_0x14313f[_0xad67('0x5d')]=_[_0xad67('0x5e')](_0x18ff7f[_0xad67('0x5d')]);_0x14313f[_0xad67('0x5f')]=_[_0xad67('0x60')](_0x14313f['model'],_0x14313f['query']);_0x4292b0[_0xad67('0x61')]=_[_0xad67('0x60')](_0x14313f[_0xad67('0x52')],qs[_0xad67('0x62')](_0x18ff7f['query']['fields']));_0x4292b0[_0xad67('0x61')]=_0x4292b0[_0xad67('0x61')][_0xad67('0x70')]?_0x4292b0['attributes']:_0x14313f[_0xad67('0x52')];if(_0x18ff7f[_0xad67('0x5d')][_0xad67('0x6b')]){_0x4292b0['include']=[{'all':!![]}];}_0x4292b0=_[_0xad67('0x69')]({},_0x4292b0,_0x18ff7f[_0xad67('0x6a')]);return db[_0xad67('0x59')]['find'](_0x4292b0)[_0xad67('0x1a')](handleEntityNotFound(_0x5c73d9,null))[_0xad67('0x1a')](respondWithResult(_0x5c73d9,null))['catch'](handleError(_0x5c73d9,null));};exports['create']=function(_0x2970f2,_0x23d4c6){return db[_0xad67('0x59')][_0xad67('0x71')](_0x2970f2[_0xad67('0x72')],{})[_0xad67('0x1a')](function(_0x4dde4b){var _0x52a9be=_0x2970f2[_0xad67('0x73')][_0xad67('0x2f')]({'plain':!![]});if(!_0x52a9be)throw new Error(_0xad67('0x74'));if(_0x52a9be['role']===_0xad67('0x73')){var _0x29c34e=_0x4dde4b[_0xad67('0x2f')]({'plain':!![]});var _0x375001=_0xad67('0x30');return db[_0xad67('0x75')][_0xad67('0x76')]({'where':{'name':_0x375001,'userProfileId':_0x52a9be[_0xad67('0x77')]},'raw':!![]})['then'](function(_0x19cac4){if(_0x19cac4&&_0x19cac4[_0xad67('0x78')]===0x0){return db[_0xad67('0x31')][_0xad67('0x71')]({'name':_0x29c34e[_0xad67('0x32')],'resourceId':_0x29c34e['id'],'type':_0x19cac4[_0xad67('0x32')],'sectionId':_0x19cac4['id']},{})[_0xad67('0x1a')](function(){return _0x4dde4b;});}else{return _0x4dde4b;}})[_0xad67('0x23')](function(_0x1591eb){logger['error'](_0xad67('0x79'),_0x1591eb);throw _0x1591eb;});}return _0x4dde4b;})[_0xad67('0x1a')](respondWithResult(_0x23d4c6,0xc9))['catch'](handleError(_0x23d4c6,null));};exports[_0xad67('0x2d')]=function(_0x330507,_0x325b39){if(_0x330507['body']['id']){delete _0x330507['body']['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x330507[_0xad67('0x6f')]['id']},'include':[{'model':db[_0xad67('0x57')],'as':_0xad67('0x58')}]})['then'](handleEntityNotFound(_0x325b39,null))[_0xad67('0x1a')](saveUpdates(_0x330507['body'],null))[_0xad67('0x1a')](respondWithResult(_0x325b39,null))[_0xad67('0x23')](handleError(_0x325b39,null));};exports[_0xad67('0x2e')]=function(_0x4dcdf3,_0xd871b3){return db['ChatWebsite'][_0xad67('0x76')]({'where':{'id':_0x4dcdf3[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0xd871b3,null))['then'](removeEntity(_0xd871b3,null))['catch'](handleError(_0xd871b3,null));};exports[_0xad67('0x7a')]=function(_0x5c6e6d,_0x477689){return db[_0xad67('0x59')][_0xad67('0x7a')]()[_0xad67('0x1a')](respondWithResult(_0x477689,null))[_0xad67('0x23')](handleError(_0x477689,null));};exports[_0xad67('0x7b')]=function(_0x1c1466,_0x54afc8){if(_0x1c1466[_0xad67('0x72')]['id']){delete _0x1c1466[_0xad67('0x72')]['id'];}return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0x1c1466[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x54afc8,null))[_0xad67('0x1a')](function(_0x4665b7){if(_0x4665b7){_0x1c1466[_0xad67('0x72')][_0xad67('0x7c')]=_0x4665b7['id'];return db[_0xad67('0x7d')][_0xad67('0x71')](_0x1c1466[_0xad67('0x72')]);}})[_0xad67('0x1a')](respondWithResult(_0x54afc8,null))[_0xad67('0x23')](handleError(_0x54afc8,null));};exports[_0xad67('0x7e')]=function(_0x42f6e0,_0x50eec7){var _0x150313={'raw':![],'where':{}};var _0xe4fcf6={};var _0x241272={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xad67('0x7f')]({'where':{'id':_0x42f6e0[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x50eec7,null))[_0xad67('0x1a')](function(_0x372614){if(_0x372614){_0xe4fcf6['model']=_[_0xad67('0x5e')](db[_0xad67('0x7d')][_0xad67('0x5a')]);_0xe4fcf6[_0xad67('0x5d')]=_[_0xad67('0x5e')](_0x42f6e0[_0xad67('0x5d')]);_0xe4fcf6['filters']=_['intersection'](_0xe4fcf6[_0xad67('0x52')],_0xe4fcf6[_0xad67('0x5d')]);_0x150313[_0xad67('0x61')]=_[_0xad67('0x60')](_0xe4fcf6[_0xad67('0x52')],qs[_0xad67('0x62')](_0x42f6e0['query'][_0xad67('0x62')]));_0x150313[_0xad67('0x61')]=_0x150313[_0xad67('0x61')]['length']?_0x150313[_0xad67('0x61')]:_0xe4fcf6[_0xad67('0x52')];if(!_0x42f6e0[_0xad67('0x5d')][_0xad67('0x63')](_0xad67('0x80'))){_0x150313[_0xad67('0x2a')]=qs[_0xad67('0x2a')](_0x42f6e0['query'][_0xad67('0x2a')]);_0x150313[_0xad67('0x28')]=qs[_0xad67('0x28')](_0x42f6e0[_0xad67('0x5d')][_0xad67('0x28')]);}_0x150313['order']=qs[_0xad67('0x65')](_0x42f6e0[_0xad67('0x5d')][_0xad67('0x65')]);_0x150313[_0xad67('0x66')]=qs[_0xad67('0x5f')](_[_0xad67('0x81')](_0x42f6e0[_0xad67('0x5d')],_0xe4fcf6['filters']));_0x150313[_0xad67('0x66')][_0xad67('0x7c')]=_0x372614['id'];if(_0x42f6e0[_0xad67('0x5d')][_0xad67('0x67')]){_0x150313[_0xad67('0x66')]=_['merge'](_0x150313[_0xad67('0x66')],{'$or':_[_0xad67('0x3f')](_0x150313[_0xad67('0x61')],function(_0x2f713e){var _0x1c3faf={};_0x1c3faf[_0x2f713e]={'$like':'%'+_0x42f6e0['query']['filter']+'%'};return _0x1c3faf;})});}_0x150313=_[_0xad67('0x69')]({},_0x150313,_0x42f6e0['options']);return db[_0xad67('0x7d')][_0xad67('0x2b')]({'where':_0x150313['where']})[_0xad67('0x1a')](function(_0x7d73f4){_0x241272[_0xad67('0x2b')]=_0x7d73f4;if(_0x42f6e0[_0xad67('0x5d')][_0xad67('0x6b')]){_0x150313[_0xad67('0x6c')]=[{'all':!![]}];}return db[_0xad67('0x7d')][_0xad67('0x6d')](_0x150313);})[_0xad67('0x1a')](function(_0x345df3){_0x241272[_0xad67('0x6e')]=_0x345df3;return _0x241272;});}})['then'](respondWithFilteredResult(_0x50eec7,_0x150313))[_0xad67('0x23')](handleError(_0x50eec7,null));};exports['removeDispositions']=function(_0xd84530,_0x2b3adb){return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0xd84530[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x2b3adb,null))[_0xad67('0x1a')](function(_0x404056){if(_0x404056){return _0x404056['removeDispositions'](_0xd84530['query'][_0xad67('0x82')]);}})[_0xad67('0x1a')](respondWithStatusCode(_0x2b3adb,null))['catch'](handleError(_0x2b3adb,null));};exports[_0xad67('0x83')]=function(_0xf82d13,_0x350952){if(_0xf82d13[_0xad67('0x72')]['id']){delete _0xf82d13['body']['id'];}return db[_0xad67('0x59')]['find']({'where':{'id':_0xf82d13[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x350952,null))[_0xad67('0x1a')](function(_0x2c345d){if(_0x2c345d){_0xf82d13['body'][_0xad67('0x7c')]=_0x2c345d['id'];return db[_0xad67('0x84')][_0xad67('0x71')](_0xf82d13['body']);}})[_0xad67('0x1a')](respondWithResult(_0x350952,null))['catch'](handleError(_0x350952,null));};exports['getAnswers']=function(_0x31ffad,_0x1c7948){var _0x11ed2d={'raw':![],'where':{}};var _0x7ec7bb={};var _0x27edb0={'count':0x0,'rows':[]};return db[_0xad67('0x59')]['findOne']({'where':{'id':_0x31ffad['params']['id']}})['then'](handleEntityNotFound(_0x1c7948,null))[_0xad67('0x1a')](function(_0x4326e4){if(_0x4326e4){_0x7ec7bb[_0xad67('0x52')]=_['keys'](db[_0xad67('0x84')][_0xad67('0x5a')]);_0x7ec7bb[_0xad67('0x5d')]=_[_0xad67('0x5e')](_0x31ffad['query']);_0x7ec7bb[_0xad67('0x5f')]=_[_0xad67('0x60')](_0x7ec7bb[_0xad67('0x52')],_0x7ec7bb[_0xad67('0x5d')]);_0x11ed2d[_0xad67('0x61')]=_[_0xad67('0x60')](_0x7ec7bb[_0xad67('0x52')],qs[_0xad67('0x62')](_0x31ffad['query'][_0xad67('0x62')]));_0x11ed2d['attributes']=_0x11ed2d['attributes'][_0xad67('0x70')]?_0x11ed2d[_0xad67('0x61')]:_0x7ec7bb[_0xad67('0x52')];if(!_0x31ffad[_0xad67('0x5d')][_0xad67('0x63')](_0xad67('0x80'))){_0x11ed2d[_0xad67('0x2a')]=qs[_0xad67('0x2a')](_0x31ffad[_0xad67('0x5d')]['limit']);_0x11ed2d[_0xad67('0x28')]=qs['offset'](_0x31ffad[_0xad67('0x5d')][_0xad67('0x28')]);}_0x11ed2d[_0xad67('0x64')]=qs[_0xad67('0x65')](_0x31ffad[_0xad67('0x5d')]['sort']);_0x11ed2d[_0xad67('0x66')]=qs['filters'](_[_0xad67('0x81')](_0x31ffad[_0xad67('0x5d')],_0x7ec7bb[_0xad67('0x5f')]));_0x11ed2d[_0xad67('0x66')][_0xad67('0x7c')]=_0x4326e4['id'];if(_0x31ffad[_0xad67('0x5d')][_0xad67('0x67')]){_0x11ed2d[_0xad67('0x66')]=_[_0xad67('0x69')](_0x11ed2d[_0xad67('0x66')],{'$or':_[_0xad67('0x3f')](_0x11ed2d[_0xad67('0x61')],function(_0x2e65b7){var _0x2d9d8b={};_0x2d9d8b[_0x2e65b7]={'$like':'%'+_0x31ffad[_0xad67('0x5d')][_0xad67('0x67')]+'%'};return _0x2d9d8b;})});}_0x11ed2d=_[_0xad67('0x69')]({},_0x11ed2d,_0x31ffad[_0xad67('0x6a')]);return db['CannedAnswer'][_0xad67('0x2b')]({'where':_0x11ed2d[_0xad67('0x66')]})[_0xad67('0x1a')](function(_0xc6c53f){_0x27edb0[_0xad67('0x2b')]=_0xc6c53f;if(_0x31ffad['query'][_0xad67('0x6b')]){_0x11ed2d[_0xad67('0x6c')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x11ed2d);})[_0xad67('0x1a')](function(_0x59e544){_0x27edb0[_0xad67('0x6e')]=_0x59e544;return _0x27edb0;});}})[_0xad67('0x1a')](respondWithFilteredResult(_0x1c7948,_0x11ed2d))['catch'](handleError(_0x1c7948,null));};exports[_0xad67('0x85')]=function(_0x46b8be,_0x361b35){return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0x46b8be[_0xad67('0x6f')]['id']}})['then'](handleEntityNotFound(_0x361b35,null))[_0xad67('0x1a')](function(_0x1c4dd6){if(_0x1c4dd6){return _0x1c4dd6['removeAnswers'](_0x46b8be['query'][_0xad67('0x82')]);}})['then'](respondWithStatusCode(_0x361b35,null))[_0xad67('0x23')](handleError(_0x361b35,null));};exports[_0xad67('0x86')]=function(_0x2393fd,_0x54ea6c){_0x2393fd[_0xad67('0x72')]['sitepic']=_0x2393fd[_0xad67('0x87')]['filename'];return db['ChatWebsite'][_0xad67('0x76')]({'where':{'id':_0x2393fd[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x54ea6c,null))[_0xad67('0x1a')](saveUpdates(_0x2393fd['body'],null))[_0xad67('0x1a')](respondWithResult(_0x54ea6c,null))[_0xad67('0x23')](handleError(_0x54ea6c,null));};exports[_0xad67('0x88')]=function(_0x5f02c8,_0x4a73d1){_0x5f02c8[_0xad67('0x72')]['agentAvatar']=_0x5f02c8[_0xad67('0x87')][_0xad67('0x89')];return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0x5f02c8['params']['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x4a73d1,null))[_0xad67('0x1a')](saveUpdates(_0x5f02c8[_0xad67('0x72')],null))['then'](respondWithResult(_0x4a73d1,null))[_0xad67('0x23')](handleError(_0x4a73d1,null));};exports[_0xad67('0x8a')]=function(_0x4f44ed,_0x5226c1){_0x4f44ed['body'][_0xad67('0x8b')]=_0x4f44ed[_0xad67('0x87')][_0xad67('0x89')];return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0x4f44ed[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x5226c1,null))[_0xad67('0x1a')](saveUpdates(_0x4f44ed[_0xad67('0x72')],null))[_0xad67('0x1a')](respondWithResult(_0x5226c1,null))[_0xad67('0x23')](handleError(_0x5226c1,null));};exports[_0xad67('0x8c')]=function(_0x24e0ae,_0x2b45cd){_0x24e0ae[_0xad67('0x72')][_0xad67('0x8d')]=_0x24e0ae[_0xad67('0x87')][_0xad67('0x89')];return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0x24e0ae[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x2b45cd,null))['then'](saveUpdates(_0x24e0ae['body'],null))[_0xad67('0x1a')](respondWithResult(_0x2b45cd,null))[_0xad67('0x23')](handleError(_0x2b45cd,null));};exports['getLogo']=function(_0x305a23,_0x4317fc){var _0x59efa5=path[_0xad67('0x8e')](config[_0xad67('0x8f')],_0xad67('0x90'));var _0x44895b={'where':{'id':_0x305a23[_0xad67('0x6f')]['id']},'attributes':['id',_0xad67('0x91')],'raw':!![]};var _0x36e020=![];return require(_0xad67('0x92'))[_0xad67('0x93')]()[_0xad67('0x1a')](function(_0x1dfbfd){if(_0x1dfbfd){_0x36e020=_0x1dfbfd[_0xad67('0x94')];}})[_0xad67('0x1a')](function(){return db[_0xad67('0x59')][_0xad67('0x76')](_0x44895b);})[_0xad67('0x1a')](handleEntityNotFound(_0x4317fc,null))[_0xad67('0x1a')](function(_0xcd0460){if(_0xcd0460){if(!_[_0xad67('0x95')](_0xcd0460[_0xad67('0x91')])){if(fs['existsSync'](path['join'](config[_0xad67('0x8f')],_0xad67('0x96'),_0xcd0460[_0xad67('0x91')]))&&_0x36e020){_0x59efa5=path['join'](config[_0xad67('0x8f')],_0xad67('0x96'),_0xcd0460[_0xad67('0x91')]);}}return _0x4317fc[_0xad67('0x97')](_0x59efa5);}})['catch'](handleError(_0x4317fc,null));};exports[_0xad67('0x98')]=function(_0x15a1ac,_0x45ab85){var _0x767b92=path['join'](config['root'],_0xad67('0x99'));var _0x490e0f={'where':{'id':_0x15a1ac[_0xad67('0x6f')]['id']},'attributes':['id',_0xad67('0x9a')],'raw':!![]};return db[_0xad67('0x59')]['find'](_0x490e0f)[_0xad67('0x1a')](handleEntityNotFound(_0x45ab85,null))[_0xad67('0x1a')](function(_0x56f424){if(_0x56f424){if(!_['isNil'](_0x56f424[_0xad67('0x9a')])){if(fs['existsSync'](path['join'](config[_0xad67('0x8f')],_0xad67('0x9b'),_0x56f424['agentAvatar']))){_0x767b92=path[_0xad67('0x8e')](config[_0xad67('0x8f')],_0xad67('0x9b'),_0x56f424[_0xad67('0x9a')]);}}return _0x45ab85[_0xad67('0x97')](_0x767b92);}})[_0xad67('0x23')](handleError(_0x45ab85,null));};exports['getCustomerAvatar']=function(_0x2967c3,_0xb1fec5){var _0x3dcb2c=path[_0xad67('0x8e')](config['root'],_0xad67('0x9c'));var _0x1d18bb={'where':{'id':_0x2967c3[_0xad67('0x6f')]['id']},'attributes':['id','customerAvatar','showCustomerAvatar'],'raw':!![]};return db[_0xad67('0x59')][_0xad67('0x76')](_0x1d18bb)['then'](handleEntityNotFound(_0xb1fec5,null))['then'](function(_0x4d0673){if(_0x4d0673){if(!_[_0xad67('0x95')](_0x4d0673[_0xad67('0x8b')])){if(fs[_0xad67('0x9d')](path[_0xad67('0x8e')](config[_0xad67('0x8f')],_0xad67('0x9b'),_0x4d0673[_0xad67('0x8b')]))&&_0x4d0673[_0xad67('0x9e')]){_0x3dcb2c=path['join'](config[_0xad67('0x8f')],_0xad67('0x9b'),_0x4d0673[_0xad67('0x8b')]);}}return _0xb1fec5[_0xad67('0x97')](_0x3dcb2c);}})[_0xad67('0x23')](handleError(_0xb1fec5,null));};exports[_0xad67('0x9f')]=function(_0x5c3ce1,_0xa94f29){var _0x1c766d=path[_0xad67('0x8e')](config[_0xad67('0x8f')],_0xad67('0xa0'));var _0x2ad9f1={'where':{'id':_0x5c3ce1['params']['id']},'attributes':['id',_0xad67('0x8d')],'raw':!![]};return db['ChatWebsite'][_0xad67('0x76')](_0x2ad9f1)['then'](handleEntityNotFound(_0xa94f29,null))[_0xad67('0x1a')](function(_0xef779){if(_0xef779){if(!_[_0xad67('0x95')](_0xef779[_0xad67('0x8d')])){if(fs[_0xad67('0x9d')](path[_0xad67('0x8e')](config[_0xad67('0x8f')],'server/files/images/avatars/',_0xef779[_0xad67('0x8d')]))){_0x1c766d=path[_0xad67('0x8e')](config[_0xad67('0x8f')],_0xad67('0x9b'),_0xef779[_0xad67('0x8d')]);}}return _0xa94f29[_0xad67('0x97')](_0x1c766d);}})['catch'](handleError(_0xa94f29,null));};exports[_0xad67('0xa1')]=function(_0xc094cb,_0x191c46){var _0x3ee8b1={'body':_0xc094cb[_0xad67('0x72')],'channel':'chat'};var _0x2902c9=[];var _0x53d5d6=[];var _0x4807d9={};var _0x426030=![];return db['CmContact'][_0xad67('0x7a')]()[_0xad67('0x1a')](function(_0x2c298a){if(!_0x2c298a){throw new db[(_0xad67('0xa2'))][(_0xad67('0xa3'))](_0xad67('0xa4'));}_0x2902c9=_[_0xad67('0xa5')](_[_0xad67('0x5e')](_0x2c298a),[_0xad67('0xa6'),'updatedAt']);_0x53d5d6=_[_0xad67('0xa5')](_[_0xad67('0x5e')](_0x2c298a),[_0xad67('0xa6'),_0xad67('0xa7'),_0xad67('0xa8'),'ListId']);if(_0xc094cb['body']['id']){delete _0xc094cb[_0xad67('0x72')]['id'];}if(_[_0xad67('0x95')](_0xc094cb['body'][_0xad67('0xa9')])){throw new db['Sequelize']['ValidationError'](_0xad67('0xaa'));}if(_[_0xad67('0x95')](_0xc094cb[_0xad67('0x72')]['body'])||_0xc094cb[_0xad67('0x72')][_0xad67('0x72')]===''){throw new db[(_0xad67('0xa2'))]['ValidationError'](_0xad67('0xab'));}if(_[_0xad67('0x95')](_0xc094cb[_0xad67('0x72')]['mapKey'])){throw new db[(_0xad67('0xa2'))][(_0xad67('0xa3'))](_0xad67('0xac')+_0x53d5d6);}if(!_['includes'](_0x53d5d6,_0xc094cb[_0xad67('0x72')][_0xad67('0xad')])){throw new db[(_0xad67('0xa2'))][(_0xad67('0xa3'))](_0xad67('0xae')+_0x53d5d6);}_0x4807d9[_0xc094cb[_0xad67('0x72')][_0xad67('0xad')]]=_0xc094cb['body'][_0xad67('0xa9')];})[_0xad67('0x1a')](function(){return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0xc094cb[_0xad67('0x6f')]['id']},'include':[{'model':db[_0xad67('0xaf')],'as':'List','include':[{'model':db[_0xad67('0xb0')],'as':_0xad67('0xb1'),'where':_0x4807d9,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['ChatApplication'],'as':'Applications'},{'model':db[_0xad67('0x40')],'as':_0xad67('0x40'),'include':[{'model':db[_0xad67('0x40')],'as':_0xad67('0xb2'),'attributes':['id',_0xad67('0x3a')],'raw':!![]}]}]});})[_0xad67('0x1a')](function(_0x2a6ee5){if(!_0x2a6ee5)throw new APINotFoundError(util[_0xad67('0x35')]('Chat\x20Website\x20with\x20id\x20%s\x20not\x20found',_0xc094cb[_0xad67('0x6f')]['id']));if(!_0x2a6ee5[_0xad67('0x40')]||!_0x2a6ee5['Interval'][_0xad67('0xb2')])return[_0x2a6ee5,!![]];return[_0x2a6ee5,checkWebsiteIntervals(_0x2a6ee5)];})[_0xad67('0xb3')](function(_0x34a187,_0x13ebe3){if(!_0x13ebe3)throw new APIOutOfIntervalError();if(!_0x34a187[_0xad67('0xb4')])return;_0x3ee8b1[_0xad67('0xb5')]=_0x34a187;_0x3ee8b1[_0xad67('0xb6')]=_0x34a187['List'];_0x3ee8b1['applications']=_['orderBy'](_0x34a187[_0xad67('0xb7')],['priority'],[_0xad67('0xb8')]);if(_0x3ee8b1[_0xad67('0xb5')][_0xad67('0xb7')]){delete _0x3ee8b1['account']['Applications'];}if(_0x3ee8b1['account'][_0xad67('0xb4')]&&_0x3ee8b1[_0xad67('0xb5')][_0xad67('0xb4')][_0xad67('0xb1')][_0xad67('0x70')]){return _0x3ee8b1[_0xad67('0xb5')][_0xad67('0xb4')][_0xad67('0xb1')][0x0];}var _0x25051e=_['defaults'](_0xc094cb[_0xad67('0x72')],{'firstName':_0xc094cb[_0xad67('0x72')][_0xad67('0xa9')],'ListId':_0x34a187[_0xad67('0xb9')]});_0x25051e[_0xc094cb[_0xad67('0x72')][_0xad67('0xad')]]=_0xc094cb[_0xad67('0x72')][_0xad67('0xa9')];return db[_0xad67('0xb0')][_0xad67('0x71')](_0x25051e,{'fields':_0x2902c9,'raw':!![]});})[_0xad67('0x1a')](function(_0x1c7675){_0x3ee8b1[_0xad67('0xba')]=_0x1c7675;var _0x553e01=createInteractionObject(_0xc094cb[_0xad67('0x6f')]['id'],_0xc094cb['body'],_0xc094cb[_0xad67('0xbb')],_0x1c7675);var _0x19558e={'ChatWebsiteId':_0xc094cb[_0xad67('0x6f')]['id'],'closed':![]};if(_0xc094cb[_0xad67('0x72')][_0xad67('0xbc')]){_0x19558e[_0xad67('0xbc')]=_0xc094cb[_0xad67('0x72')][_0xad67('0xbc')];return db['ChatInteraction'][_0xad67('0x76')]({'where':_0x19558e})[_0xad67('0x1a')](function(_0x64a72d){if(_0x64a72d){_0x426030=!![];return _0x64a72d;}_0x553e01[_0xad67('0xbc')]=_0xc094cb[_0xad67('0x72')][_0xad67('0xbc')];_0x553e01[_0xad67('0xbd')]=_0xc094cb[_0xad67('0x72')][_0xad67('0xbd')];return db[_0xad67('0xbe')][_0xad67('0x71')](_0x553e01);});}_0x19558e[_0xad67('0xbf')]=_0x1c7675['id'];if(_0xc094cb['body']['interaction']&&_0xc094cb[_0xad67('0x72')][_0xad67('0xc0')]['id']){_0x19558e['id']=_0xc094cb[_0xad67('0x72')][_0xad67('0xc0')]['id'];return db[_0xad67('0xbe')][_0xad67('0x76')]({'where':_0x19558e})['then'](function(_0x4b70a6){if(_0x4b70a6){_0x426030=!![];return _0x4b70a6;}return db[_0xad67('0xbe')]['create'](_0x553e01);});}return db[_0xad67('0xbe')][_0xad67('0x71')](_0x553e01);})[_0xad67('0x1a')](function(_0x5c68dc){if(!_0x426030)return _0x5c68dc;var _0x31da0b={'from':(_0x3ee8b1[_0xad67('0xba')][_0xad67('0x4a')]||'')+'\x20'+(_0x3ee8b1[_0xad67('0xba')][_0xad67('0x4b')]||'')};if(_0xc094cb[_0xad67('0x72')][_0xad67('0xbc')]&&_0xc094cb[_0xad67('0x72')][_0xad67('0xc1')]&&_0xc094cb[_0xad67('0x72')]['threadId']!=_0xc094cb[_0xad67('0x72')][_0xad67('0xc1')]){_0x31da0b['threadId']=_0xc094cb[_0xad67('0x72')]['messageId'];}return _0x5c68dc[_0xad67('0x2d')](_0x31da0b);})['then'](function(_0x298b09){_0x3ee8b1[_0xad67('0xc0')]=_0x298b09[_0xad67('0x2f')]({'plain':!![]});_0x3ee8b1[_0xad67('0xc0')][_0xad67('0xc2')]=!_0x426030;if(_0x3ee8b1[_0xad67('0xc0')][_0xad67('0xc2')]){if(_0x3ee8b1[_0xad67('0xb5')][_0xad67('0xc3')]){_0x3ee8b1[_0xad67('0xc4')][_0xad67('0xc5')]({'id':0x0,'priority':_0x3ee8b1['applications'][_0xad67('0x70')]+0x1,'app':'close','appdata':_0xad67('0xc6'),'interval':'*,*,*,*'});}}return db['ChatMessage'][_0xad67('0x71')]({'body':_0xc094cb[_0xad67('0x72')]['body'],'ChatWebsiteId':_0xc094cb[_0xad67('0x6f')]['id'],'ChatInteractionId':_0x298b09['id'],'direction':'in','ContactId':_0x3ee8b1[_0xad67('0xba')]['id'],'AttachmentId':_0xc094cb[_0xad67('0x72')][_0xad67('0xc7')]});})[_0xad67('0x1a')](function(_0x1fc3bb){_0x3ee8b1[_0xad67('0x21')]=_0x1fc3bb;if(!_0x3ee8b1['interaction'][_0xad67('0xc8')]){return;}return db[_0xad67('0xc9')]['find']({'attributes':['id',_0xad67('0x32')],'where':{'id':_0x3ee8b1[_0xad67('0xc0')]['UserId']}});})[_0xad67('0x1a')](function(_0x4f74ad){if(_0x4f74ad){_0x3ee8b1[_0xad67('0xc4')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4f74ad[_0xad67('0x32')]+','+(_0x3ee8b1[_0xad67('0xb5')][_0xad67('0xca')]||0xa),'interval':_0xad67('0xcb')});_0x3ee8b1[_0xad67('0xcc')]=!![];}if(!_0x3ee8b1[_0xad67('0xc0')][_0xad67('0xcd')]){return;}return db[_0xad67('0xce')]['find']({'attributes':['id',_0xad67('0x32')],'where':{'id':_0x3ee8b1[_0xad67('0xc0')]['queueId']}});})['then'](function(_0x205fd6){if(_0x205fd6){_0x3ee8b1['applications']['unshift']({'id':0x0,'priority':0x1,'app':_0xad67('0xcf'),'appdata':_0x205fd6[_0xad67('0x32')]+','+(_0x3ee8b1[_0xad67('0xb5')][_0xad67('0xd0')]||0x12c),'interval':_0xad67('0xcb')});}return respondWithRpcPromise('Start',_0xad67('0xd1'),_0x3ee8b1);})[_0xad67('0x1a')](function(_0x5d639d){respondWithRpcPromise('EventManager',_0xad67('0xd2'),{'event':'notify','message':_0x5d639d},client9002);return _0x5d639d;})['then'](respondWithResult(_0x191c46,null))[_0xad67('0x23')](APIHandleError(_0x191c46));};exports['offline']=function(_0x5a8aef,_0x2cf9b4){var _0x3d65f3,_0x31e99b,_0x2a3e2a;var _0x3f2418=[];var _0x20ddcc={};var _0x20fd20=_0x5a8aef[_0xad67('0xd3')]||[];var _0x198395=[];var _0x381c77;return db[_0xad67('0xb0')][_0xad67('0x7a')]()[_0xad67('0x1a')](function(_0x29e39e){if(!_0x29e39e){throw new db[(_0xad67('0xa2'))][(_0xad67('0xa3'))](_0xad67('0xa4'));}_0x3f2418=_[_0xad67('0xa5')](_['keys'](_0x29e39e),[_0xad67('0xa6'),_0xad67('0xa7'),'CompanyId','ListId']);if(_0x5a8aef[_0xad67('0x72')]['id']){delete _0x5a8aef[_0xad67('0x72')]['id'];}if(_['isNil'](_0x5a8aef['body'][_0xad67('0xa9')])){throw _0x2cf9b4[_0xad67('0x25')](0x1f4)[_0xad67('0xd4')](new db['Sequelize'][(_0xad67('0xa3'))]('from\x20is\x20mandatory'));}if(_[_0xad67('0x95')](_0x5a8aef['body'][_0xad67('0x72')])||_0x5a8aef[_0xad67('0x72')][_0xad67('0x72')]===''){throw _0x2cf9b4['status'](0x1f4)[_0xad67('0xd4')](new db[(_0xad67('0xa2'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0xad67('0x95')](_0x5a8aef[_0xad67('0x72')][_0xad67('0xd5')])){throw _0x2cf9b4['status'](0x1f4)[_0xad67('0xd4')](new db[(_0xad67('0xa2'))]['ValidationError'](_0xad67('0xd6')+_0x3f2418));}if(!_[_0xad67('0xd7')](_0x3f2418,_0x5a8aef[_0xad67('0x72')][_0xad67('0xd5')])){throw _0x2cf9b4[_0xad67('0x25')](0x1f4)[_0xad67('0xd4')](new db[(_0xad67('0xa2'))][(_0xad67('0xa3'))](_0xad67('0xd8')+_0x3f2418));}_0x20ddcc[_0x5a8aef['body'][_0xad67('0xd5')]]=_0x5a8aef[_0xad67('0x72')]['from'];})[_0xad67('0x1a')](function(){return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0x5a8aef[_0xad67('0x6f')]['id']},'include':[{'model':db['CmList'],'as':_0xad67('0xb4')},{'model':db['MailAccount'],'as':'MailAccount'}]});})[_0xad67('0x1a')](handleEntityNotFound(_0x2cf9b4,null))[_0xad67('0x1a')](function(_0xc3229d){if(_0xc3229d&&_0xc3229d['List']){_0x31e99b=_0xc3229d;var _0x46b6ef=_[_0xad67('0x13')](_0x5a8aef[_0xad67('0x72')],{'firstName':_0x5a8aef[_0xad67('0x72')][_0xad67('0xa9')],'phone':_0x5a8aef[_0xad67('0x72')]['from'],'ListId':_0xc3229d[_0xad67('0xb9')]});_0x46b6ef[_0x5a8aef[_0xad67('0x72')][_0xad67('0xd5')]]=_0x5a8aef[_0xad67('0x72')][_0xad67('0xa9')];return db[_0xad67('0xb0')][_0xad67('0xd9')]({'where':_0x20ddcc,'defaults':_0x46b6ef});}})[_0xad67('0xb3')](function(_0x1045b6){if(_0x1045b6){_0x2a3e2a=_0x1045b6;var _0x3a7108=fs['readFileSync'](path[_0xad67('0x8e')](config[_0xad67('0x8f')],'server/files/templates/chatOfflineMessage.ejs'),_0xad67('0xda'));var _0x27e95a=ejs['render'](_0x3a7108,{'body':_[_0xad67('0xdb')](_0x5a8aef[_0xad67('0x72')][_0xad67('0x72')]),'bodyTitle':_0x31e99b[_0xad67('0xdc')]});return db[_0xad67('0xdd')][_0xad67('0x71')]({'body':_0x27e95a,'plainBody':htmlToText[_0xad67('0xde')](_0x27e95a),'ContactId':_0x1045b6['id'],'ChatWebsiteId':_0x31e99b['id']});}})[_0xad67('0x1a')](function(_0x18156c){_0x381c77=_0x18156c;if(_0x20fd20[_0xad67('0x70')]){var _0x29ef2d=_0x20fd20[_0xad67('0x3f')](function(_0x6d4342){return{'name':_0x6d4342[_0xad67('0xdf')],'basename':_0x6d4342['filename'],'type':_0x6d4342['mimetype'],'ChatOfflineMessageId':_0x18156c['id']};});_0x198395=_0x29ef2d['map'](_0x2930ff=>{var _0x198c6d={'filename':_0x2930ff[_0xad67('0x32')],'path':path[_0xad67('0x8e')](config['root'],'server',_0xad67('0xd3'),'attachments',_0xad67('0xe0'),_0x2930ff['basename'])};return _0x198c6d;});if(!_0x31e99b[_0xad67('0xe1')]){return db['sequelize']['transaction'](function(_0x171c5f){return db['Attachment'][_0xad67('0xe2')](_0x29ef2d,{'transaction':_0x171c5f});});}}})[_0xad67('0x1a')](function(){if(_0x381c77){_0x3d65f3=_0x381c77;return db['MailAccount'][_0xad67('0x7f')]({'where':{'service':!![]},'include':[{'model':db[_0xad67('0xe3')],'as':_0xad67('0xe4'),'raw':!![],'include':[{'model':db[_0xad67('0xe5')],'as':_0xad67('0xe5'),'raw':!![]}]}]});}})['then'](function(_0x25ee56){if(_0x25ee56&&_0x25ee56[_0xad67('0xe4')]&&_0x31e99b[_0xad67('0xe6')]&&_0x31e99b['forwardOfflineAddress']){var _0x44f3b0=_0x25ee56[_0xad67('0xe7')]();return respondWithRpcPromise(_0xad67('0xe8'),_0xad67('0xe9'),{'account':_0x44f3b0,'message':{'from':util['format'](_0xad67('0xea'),_0x25ee56[_0xad67('0x32')],_0x25ee56[_0xad67('0xeb')]||_0x25ee56[_0xad67('0xe4')][_0xad67('0x73')]),'to':_0x31e99b['forwardOfflineAddress'],'subject':_0x31e99b['offlineMessageSubject'],'html':_0x3d65f3[_0xad67('0x72')],'attachments':_0x198395}},client9003)['then'](function(){return _0x3d65f3;})[_0xad67('0x23')](function(_0x3bc1f1){logger[_0xad67('0x1f')](_0x3bc1f1);});}})['then'](function(){if(_0x31e99b&&_0x31e99b[_0xad67('0xe1')]&&_0x31e99b[_0xad67('0xec')]){var _0x4f5120=[];if(_0x20fd20['length']){_0x4f5120=_0x20fd20[_0xad67('0x3f')](function(_0x280213){return{'name':_0x280213[_0xad67('0xdf')],'basename':_0x280213[_0xad67('0x89')],'type':_0x280213['mimetype'],'ChatOfflineMessageId':_0x381c77['id']};});}var _0x58f781;if(!_[_0xad67('0x95')](_0x31e99b[_0xad67('0xed')])){var _0xa65641=_[_0xad67('0x3f')](_0x5a8aef[_0xad67('0x72')],function(_0x512a6f){return _0x512a6f;});var _0x5a9353=_[_0xad67('0xee')](_0xa65641)[0x0];var _0x11f8cd=_[_0xad67('0xef')](_0x5a9353,function(_0x1cf829){return _0x1cf829;});_0x58f781=_0x11f8cd[0x1][_0x31e99b['subjectOffline']];}var _0x3c3d30={'from':_0x2a3e2a['email'],'firstName':_0x2a3e2a[_0xad67('0x4a')],'lastName':_0x2a3e2a[_0xad67('0x4b')],'mapKey':'email','message':{'from':_0x2a3e2a[_0xad67('0xeb')],'to':_0x31e99b[_0xad67('0xf0')][_0xad67('0xeb')],'cc':'','subject':_[_0xad67('0x95')](_0x58f781)?_0x31e99b[_0xad67('0xf1')]:_0x58f781,'messageId':'','sentAt':new Date(),'attach':_0x4f5120[_0xad67('0x70')],'attachments':_0x4f5120,'originChannel':'Chat','ChatWebsiteId':_0x31e99b['id'],'ChatOfflineMessageId':_0x3d65f3['id'],'originTo':_0x31e99b[_0xad67('0xf0')][_0xad67('0xeb')]},'body':_0x3d65f3[_0xad67('0x72')]};var _0xffcd6={'account':{'id':_0x31e99b['MailAccountId']},'body':_0x3c3d30,'log':_0xad67('0xf2')};return respondWithRpcPromise(_0xad67('0xf2'),_0xad67('0xf3'),_0xffcd6,client9001)[_0xad67('0x1a')](function(){return _0x3d65f3;})['catch'](function(_0x1d5cab){logger['error'](_0x1d5cab);});}return;})[_0xad67('0x1a')](function(){if(_0x3d65f3){return _0x3d65f3;}})[_0xad67('0x1a')](respondWithResult(_0x2cf9b4,null))['catch'](function(){for(var _0x2ea6c4 of _0x20fd20){var _0xfa040a=path[_0xad67('0x8e')](config[_0xad67('0x8f')],'server','files','attachments',_0xad67('0xe0'),_0x2ea6c4[_0xad67('0x89')]);fs_extra[_0xad67('0xf4')](_0xfa040a)[_0xad67('0x23')](function(_0x414ea1){logger[_0xad67('0x1f')](_0xad67('0xf5'),_0xfa040a,_0x414ea1);});}});};exports[_0xad67('0xf6')]=function(_0x43eb06,_0x37f4fa){return db[_0xad67('0xbe')][_0xad67('0x76')]({'where':{'id':_0x43eb06[_0xad67('0x6f')]['id']}})['then'](handleEntityNotFound(_0x37f4fa,null))[_0xad67('0x1a')](function(_0x4ca047){if(_0x4ca047){return _0x4ca047[_0xad67('0xf6')](_0x43eb06[_0xad67('0x72')][_0xad67('0x82')],_['omit'](_0x43eb06['body'],[_0xad67('0x82'),'id'])||{});}})[_0xad67('0x1a')](respondWithResult(_0x37f4fa,null))['catch'](handleError(_0x37f4fa,null));};exports[_0xad67('0xf7')]=function(_0x1fb9bd,_0x22e5b8){var _0x339aa8={'raw':![],'where':{}};var _0x3bf952={};var _0x446eb1={'count':0x0,'rows':[]};return db[_0xad67('0x59')]['findOne']({'where':{'id':_0x1fb9bd[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x22e5b8,null))[_0xad67('0x1a')](function(_0x34345a){if(_0x34345a){_0x3bf952[_0xad67('0x52')]=_['keys'](db['ChatInteraction']['rawAttributes']);_0x3bf952['query']=_[_0xad67('0x5e')](_0x1fb9bd[_0xad67('0x5d')]);_0x3bf952[_0xad67('0x5f')]=_[_0xad67('0x60')](_0x3bf952[_0xad67('0x52')],_0x3bf952[_0xad67('0x5d')]);_0x339aa8['attributes']=_[_0xad67('0x60')](_0x3bf952['model'],qs['fields'](_0x1fb9bd['query'][_0xad67('0x62')]));_0x339aa8['attributes']=_0x339aa8[_0xad67('0x61')][_0xad67('0x70')]?_0x339aa8[_0xad67('0x61')]:_0x3bf952[_0xad67('0x52')];if(!_0x1fb9bd[_0xad67('0x5d')]['hasOwnProperty'](_0xad67('0x80'))){_0x339aa8[_0xad67('0x2a')]=qs[_0xad67('0x2a')](_0x1fb9bd[_0xad67('0x5d')][_0xad67('0x2a')]);_0x339aa8[_0xad67('0x28')]=qs[_0xad67('0x28')](_0x1fb9bd[_0xad67('0x5d')][_0xad67('0x28')]);}_0x339aa8[_0xad67('0x64')]=qs[_0xad67('0x65')](_0x1fb9bd[_0xad67('0x5d')][_0xad67('0x65')]);_0x339aa8['where']=qs[_0xad67('0x5f')](_[_0xad67('0x81')](_0x1fb9bd[_0xad67('0x5d')],_0x3bf952[_0xad67('0x5f')]));_0x339aa8['where'][_0xad67('0x7c')]=_0x34345a['id'];if(_0x1fb9bd[_0xad67('0x5d')][_0xad67('0x67')]){_0x339aa8[_0xad67('0x66')]=_[_0xad67('0x69')](_0x339aa8[_0xad67('0x66')],{'$or':_[_0xad67('0x3f')](_0x339aa8[_0xad67('0x61')],function(_0x56a52e){var _0x261c4f={};_0x261c4f[_0x56a52e]={'$like':'%'+_0x1fb9bd[_0xad67('0x5d')][_0xad67('0x67')]+'%'};return _0x261c4f;})});}_0x339aa8=_[_0xad67('0x69')]({},_0x339aa8,_0x1fb9bd[_0xad67('0x6a')]);return db[_0xad67('0xbe')]['count']({'where':_0x339aa8[_0xad67('0x66')]})[_0xad67('0x1a')](function(_0x41729c){_0x446eb1[_0xad67('0x2b')]=_0x41729c;if(_0x1fb9bd['query'][_0xad67('0x6b')]){_0x339aa8[_0xad67('0x6c')]=[{'model':db[_0xad67('0xb0')],'as':_0xad67('0xf8'),'required':![]},{'model':db[_0xad67('0xc9')],'as':_0xad67('0xf9'),'attributes':[_0xad67('0x32'),_0xad67('0xfa'),_0xad67('0xfb')],'required':![]},{'model':db[_0xad67('0xfc')],'as':_0xad67('0xfd'),'attributes':['id','name','color'],'where':_0x1fb9bd[_0xad67('0x5d')][_0xad67('0xfe')]?{'id':_0x1fb9bd[_0xad67('0x5d')][_0xad67('0xfe')]}:undefined,'required':_0x1fb9bd[_0xad67('0x5d')]['tag']?!![]:![]}];}return db['ChatInteraction'][_0xad67('0x6d')](_0x339aa8);})['then'](function(_0x4a43f3){_0x446eb1['rows']=_0x4a43f3;return _0x446eb1;});}})[_0xad67('0x1a')](respondWithFilteredResult(_0x22e5b8,_0x339aa8))['catch'](handleError(_0x22e5b8,null));};exports[_0xad67('0x33')]=function(_0x408ebb,_0x1516dc){var _0x56cd51=0x0;var _0xa0e4bc=0x0;var _0xdec102=![];var _0x5dc3db;var _0x54cfc4;return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0x408ebb['params']['id']},'include':[{'model':db['Interval'],'as':_0xad67('0x40'),'include':[{'model':db[_0xad67('0x40')],'as':_0xad67('0xb2'),'attributes':['id',_0xad67('0x3a')]}]}]})['then'](handleEntityNotFound(_0x1516dc,null))[_0xad67('0x1a')](function(_0x3cc7a1){if(_0x3cc7a1){_0x5dc3db=_0x3cc7a1;return _0x3cc7a1[_0xad67('0xff')]({'raw':!![]});}})['then'](function(_0x334edd){if(_0x5dc3db){if(_0x334edd){_0x54cfc4=_0x334edd;}}return require(_0xad67('0x92'))[_0xad67('0x93')]();})[_0xad67('0x1a')](function(_0x181277){if(_0x181277){_0xa0e4bc=_0x181277[_0xad67('0x100')];_0xdec102=_0x181277[_0xad67('0x94')];}})['then'](function(){return db[_0xad67('0xbe')][_0xad67('0x2b')]({'where':{'closed':![]}});})['then'](function(_0x5ef113){_0x56cd51=_0x5ef113;if(_0xa0e4bc&&_0x5ef113>_0xa0e4bc){return db['License'][_0xad67('0x7f')]({'where':{'id':0x1}})['then'](function(_0x115264){if(_0x115264){_0x115264[_0xad67('0x101')](_0xad67('0x102'));}});}})[_0xad67('0x1a')](function(){if(!_0x5dc3db['Interval']||!_0x5dc3db[_0xad67('0x40')][_0xad67('0xb2')])return!![];return checkWebsiteIntervals(_0x5dc3db);})[_0xad67('0x1a')](function(_0x5bae47){var _0x2b6055=fs[_0xad67('0x103')](path['join'](config[_0xad67('0x8f')],_0xad67('0x104')),'utf8');var _0x5acd06=new url[(_0xad67('0x105'))](_0x5dc3db[_0xad67('0x106')])[_0xad67('0x107')];var _0x3211d3=_0xad67('0x108');var _0x381b74=![];var _0xbe3717={'chatVersion':_0x3211d3,'chatWebsiteAddressOrigin':_0x5acd06,'remote':_0x5dc3db[_0xad67('0x109')],'query':querystring['stringify'](_[_0xad67('0x69')](_0x5dc3db[_0xad67('0x2f')]({'plain':!![]}),{'customerIp':_0x408ebb[_0xad67('0xbb')][_0xad67('0x47')]||_0x408ebb['headers'][_0xad67('0x10a')]||_0x408ebb['connection'][_0xad67('0x10b')]||_0x408ebb['ip'],'referer':_0x408ebb[_0xad67('0xbb')][_0xad67('0x10c')],'openedInteractions':_0x56cd51,'maxInteractions':_0xa0e4bc,'virtual':_0xdec102[_0xad67('0x100')],'online':_0x5bae47,'custom':_0xdec102}))[_0xad67('0x10d')](/'/g,'\x5c\x27')};_0x1516dc['send'](ejs[_0xad67('0x10e')](Mustache[_0xad67('0x10e')](_0x2b6055,_0xbe3717),{'proactiveActions':_0x54cfc4,'alignment':_0x5dc3db['alignment'],'verticalAlignment':_0x5dc3db[_0xad67('0x10f')],'div_color':_0x5dc3db['color'],'labelText':_0x5dc3db[_0xad67('0x110')],'text_color':_0x5dc3db[_0xad67('0x111')],'text_button_color':_0x5dc3db['textButtonColor'],'button_color':_0x5dc3db['color_button'],'background_color':_0x5dc3db['backgroundColor'],'hideWhenOffline':_0x5dc3db[_0xad67('0x112')],'intervalId':_0x5dc3db['IntervalId'],'isDevelopment':_0x381b74,'chatVersion':_0x3211d3}));})[_0xad67('0x23')](handleError(_0x1516dc,null));};exports[_0xad67('0x113')]=function(_0x423f42,_0xc10340){var _0x2b547d=_0x423f42[_0xad67('0x6f')]['id'];var _0x102752=_0x423f42[_0xad67('0x72')];var _0x4e9a11=0xc8;var _0x4691a3=null;return db['sequelize'][_0xad67('0x114')]({'isolationLevel':db[_0xad67('0x115')][_0xad67('0x116')][_0xad67('0x117')][_0xad67('0x118')]},function(_0x98d254){return db['ChatWebsite'][_0xad67('0x7f')]({'where':{'id':_0x2b547d},'transaction':_0x98d254})[_0xad67('0x1a')](function(_0xa83d4b){if(_0xa83d4b){return db[_0xad67('0x119')][_0xad67('0x2e')]({'where':{'ChatWebsiteId':_0x2b547d},'transaction':_0x98d254})[_0xad67('0x1a')](function(){var _0x4f356d=_[_0xad67('0x3f')](_0x102752,function(_0x30d0c4){_0x30d0c4[_0xad67('0x7c')]=_0x2b547d;return _0x30d0c4;});return db[_0xad67('0x119')][_0xad67('0xe2')](_0x4f356d,{'transaction':_0x98d254});});}else{_0x4e9a11=0x194;_0x4691a3=[];}});})['then'](function(){if(_0x4e9a11!==0x194){return db[_0xad67('0x119')][_0xad67('0x11a')]({'where':{'ChatWebsiteId':_0x2b547d},'order':_0xad67('0x11b')})['then'](function(_0x4abfca){_0x4691a3=_0x4abfca;});}})['catch'](function(_0x1cd386){_0x4e9a11=0x1f4;logger[_0xad67('0x1f')](_0x1cd386['stack']);if(_0x1cd386[_0xad67('0x32')]){delete _0x1cd386[_0xad67('0x32')];}_0x4691a3=_0x1cd386;})[_0xad67('0x11c')](function(){if(_0x4691a3===null){_0xc10340[_0xad67('0x24')](_0x4e9a11);}else{if(_0x4e9a11===0x1f4){_0xc10340[_0xad67('0x25')](_0x4e9a11)[_0xad67('0xd4')](_0x4691a3);}else{_0xc10340[_0xad67('0x25')](_0x4e9a11)[_0xad67('0x27')](_0x4691a3);}}});};exports['getApplications']=function(_0x2f1b45,_0x166d2b){var _0x3e14cb={};var _0x5f154c={};var _0xe3b5f2;var _0x2bfc5d;return db[_0xad67('0x59')]['findOne']({'where':{'id':_0x2f1b45[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x166d2b,null))[_0xad67('0x1a')](function(_0x306d56){if(_0x306d56){_0xe3b5f2=_0x306d56;_0x5f154c[_0xad67('0x52')]=_[_0xad67('0x5e')](db[_0xad67('0x119')][_0xad67('0x5a')]);_0x5f154c[_0xad67('0x5d')]=_['keys'](_0x2f1b45[_0xad67('0x5d')]);_0x5f154c['filters']=_[_0xad67('0x60')](_0x5f154c[_0xad67('0x52')],_0x5f154c[_0xad67('0x5d')]);_0x3e14cb[_0xad67('0x61')]=_[_0xad67('0x60')](_0x5f154c[_0xad67('0x52')],qs['fields'](_0x2f1b45['query'][_0xad67('0x62')]));_0x3e14cb['attributes']=_0x3e14cb[_0xad67('0x61')][_0xad67('0x70')]?_0x3e14cb[_0xad67('0x61')]:_0x5f154c[_0xad67('0x52')];_0x3e14cb[_0xad67('0x64')]=qs[_0xad67('0x65')](_0x2f1b45[_0xad67('0x5d')][_0xad67('0x65')]);_0x3e14cb[_0xad67('0x66')]=qs[_0xad67('0x5f')](_[_0xad67('0x81')](_0x2f1b45['query'],_0x5f154c[_0xad67('0x5f')]));if(_0x2f1b45['query'][_0xad67('0x67')]){_0x3e14cb[_0xad67('0x66')]=_[_0xad67('0x69')](_0x3e14cb[_0xad67('0x66')],{'$or':_[_0xad67('0x3f')](_0x3e14cb[_0xad67('0x61')],function(_0x410576){var _0x4a7033={};_0x4a7033[_0x410576]={'$like':'%'+_0x2f1b45[_0xad67('0x5d')][_0xad67('0x67')]+'%'};return _0x4a7033;})});}_0x3e14cb=_[_0xad67('0x69')]({},_0x3e14cb,_0x2f1b45[_0xad67('0x6a')]);return _0xe3b5f2[_0xad67('0x11d')](_0x3e14cb);}})[_0xad67('0x1a')](function(_0x210159){if(_0x210159){_0x2bfc5d=_0x210159[_0xad67('0x70')];if(!_0x2f1b45[_0xad67('0x5d')][_0xad67('0x63')](_0xad67('0x80'))){_0x3e14cb['limit']=qs[_0xad67('0x2a')](_0x2f1b45[_0xad67('0x5d')][_0xad67('0x2a')]);_0x3e14cb[_0xad67('0x28')]=qs['offset'](_0x2f1b45['query'][_0xad67('0x28')]);}return _0xe3b5f2[_0xad67('0x11d')](_0x3e14cb);}})[_0xad67('0x1a')](function(_0x523c97){if(_0x523c97){return _0x523c97?{'count':_0x2bfc5d,'rows':_0x523c97}:null;}})[_0xad67('0x1a')](respondWithResult(_0x166d2b,null))[_0xad67('0x23')](handleError(_0x166d2b,null));};exports['addProactiveActions']=function(_0x8420dd,_0x265554){return db[_0xad67('0x11e')][_0xad67('0x76')]({'where':{'id':_0x8420dd['params']['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x265554,null))[_0xad67('0x1a')](function(_0x1b9076){if(_0x1b9076){return _0x1b9076['addProactiveActions'](_0x8420dd[_0xad67('0x72')]['ids'],_[_0xad67('0x11f')](_0x8420dd[_0xad67('0x72')],[_0xad67('0x82'),'id'])||{});}})[_0xad67('0x1a')](respondWithResult(_0x265554,null))['catch'](handleError(_0x265554,null));};exports[_0xad67('0xff')]=function(_0x38f1f1,_0x51d5f5){var _0x1bfd23={};var _0x899250={};var _0x3aa3f5;var _0x36c30e;return db[_0xad67('0x59')][_0xad67('0x7f')]({'where':{'id':_0x38f1f1[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x51d5f5,null))[_0xad67('0x1a')](function(_0x3ad572){if(_0x3ad572){_0x3aa3f5=_0x3ad572;_0x899250[_0xad67('0x52')]=_[_0xad67('0x5e')](db[_0xad67('0x120')][_0xad67('0x5a')]);_0x899250['query']=_[_0xad67('0x5e')](_0x38f1f1['query']);_0x899250[_0xad67('0x5f')]=_[_0xad67('0x60')](_0x899250[_0xad67('0x52')],_0x899250[_0xad67('0x5d')]);_0x1bfd23[_0xad67('0x61')]=_[_0xad67('0x60')](_0x899250['model'],qs[_0xad67('0x62')](_0x38f1f1['query'][_0xad67('0x62')]));_0x1bfd23['attributes']=_0x1bfd23[_0xad67('0x61')][_0xad67('0x70')]?_0x1bfd23[_0xad67('0x61')]:_0x899250[_0xad67('0x52')];_0x1bfd23[_0xad67('0x64')]=qs[_0xad67('0x65')](_0x38f1f1['query'][_0xad67('0x65')]);_0x1bfd23[_0xad67('0x66')]=qs[_0xad67('0x5f')](_['pick'](_0x38f1f1[_0xad67('0x5d')],_0x899250[_0xad67('0x5f')]));if(_0x38f1f1[_0xad67('0x5d')][_0xad67('0x67')]){_0x1bfd23[_0xad67('0x66')]=_[_0xad67('0x69')](_0x1bfd23[_0xad67('0x66')],{'$or':_['map'](_0x1bfd23['attributes'],function(_0x5afde9){var _0x34a0ee={};_0x34a0ee[_0x5afde9]={'$like':'%'+_0x38f1f1[_0xad67('0x5d')][_0xad67('0x67')]+'%'};return _0x34a0ee;})});}_0x1bfd23=_['merge']({},_0x1bfd23,_0x38f1f1['options']);return _0x3aa3f5[_0xad67('0xff')](_0x1bfd23);}})[_0xad67('0x1a')](function(_0x4d3b77){if(_0x4d3b77){_0x36c30e=_0x4d3b77['length'];if(!_0x38f1f1[_0xad67('0x5d')]['hasOwnProperty']('nolimit')){_0x1bfd23[_0xad67('0x2a')]=qs[_0xad67('0x2a')](_0x38f1f1[_0xad67('0x5d')][_0xad67('0x2a')]);_0x1bfd23[_0xad67('0x28')]=qs[_0xad67('0x28')](_0x38f1f1[_0xad67('0x5d')]['offset']);}return _0x3aa3f5[_0xad67('0xff')](_0x1bfd23);}})[_0xad67('0x1a')](function(_0x251470){if(_0x251470){return _0x251470?{'count':_0x36c30e,'rows':_0x251470}:null;}})[_0xad67('0x1a')](respondWithResult(_0x51d5f5,null))[_0xad67('0x23')](handleError(_0x51d5f5,null));};exports[_0xad67('0x121')]=function(_0x334ab8,_0x3ea428){var _0x53342b=_0x334ab8[_0xad67('0x5d')][_0xad67('0x122')]===_0xad67('0x123')?_0xad67('0x124'):_0xad67('0x125');return db[_0xad67('0x59')]['find']({'attributes':['id',_0x53342b],'where':{'id':_0x334ab8[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x3ea428,null))[_0xad67('0x1a')](function(_0x89b75){if(_0x89b75){var _0x5d1f85=_0x89b75[_0x53342b];var _0x3ad7f7=_0x5d1f85&&_0x5d1f85[_0xad67('0x126')]?_0x5d1f85[_0xad67('0x126')]:[];_0x3ea428['send']({'fromKey':_[_0xad67('0x95')](_0x5d1f85[_0xad67('0x127')])?undefined:_0x5d1f85['fromKey'],'count':_0x3ad7f7[_0xad67('0x70')],'rows':_0x3ad7f7});}})['catch'](handleError(_0x3ea428,null));};exports['getOfflineMessages']=function(_0x186fe,_0x5ed6d6){var _0x47fe2f={'raw':![],'where':{}};var _0xf34763={};var _0x11b21d={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xad67('0x7f')]({'where':{'id':_0x186fe['params']['id']}})['then'](handleEntityNotFound(_0x5ed6d6,null))['then'](function(_0x1ceb6d){if(_0x1ceb6d){_0xf34763[_0xad67('0x52')]=_[_0xad67('0x5e')](db[_0xad67('0xdd')][_0xad67('0x5a')]);_0xf34763[_0xad67('0x5d')]=_['keys'](_0x186fe[_0xad67('0x5d')]);_0xf34763[_0xad67('0x5f')]=_['intersection'](_0xf34763['model'],_0xf34763[_0xad67('0x5d')]);_0x47fe2f['attributes']=_[_0xad67('0x60')](_0xf34763['model'],qs['fields'](_0x186fe[_0xad67('0x5d')]['fields']));_0x47fe2f[_0xad67('0x61')]=_0x47fe2f['attributes'][_0xad67('0x70')]?_0x47fe2f['attributes']:_0xf34763[_0xad67('0x52')];if(!_0x186fe[_0xad67('0x5d')][_0xad67('0x63')](_0xad67('0x80'))){_0x47fe2f[_0xad67('0x2a')]=qs[_0xad67('0x2a')](_0x186fe[_0xad67('0x5d')][_0xad67('0x2a')]);_0x47fe2f[_0xad67('0x28')]=qs[_0xad67('0x28')](_0x186fe[_0xad67('0x5d')][_0xad67('0x28')]);}_0x47fe2f[_0xad67('0x64')]=qs[_0xad67('0x65')](_0x186fe[_0xad67('0x5d')][_0xad67('0x65')]);_0x47fe2f['where']=qs['filters'](_[_0xad67('0x81')](_0x186fe['query'],_0xf34763[_0xad67('0x5f')]));_0x47fe2f[_0xad67('0x66')]['ChatWebsiteId']=_0x1ceb6d['id'];if(_0x186fe['query'][_0xad67('0x67')]){_0x47fe2f[_0xad67('0x66')]=_[_0xad67('0x69')](_0x47fe2f[_0xad67('0x66')],{'$or':_['map'](_0x47fe2f[_0xad67('0x61')],function(_0x3baad7){var _0x188770={};_0x188770[_0x3baad7]={'$like':'%'+_0x186fe[_0xad67('0x5d')][_0xad67('0x67')]+'%'};return _0x188770;})});}_0x47fe2f=_[_0xad67('0x69')]({},_0x47fe2f,_0x186fe['options']);return db[_0xad67('0xdd')][_0xad67('0x2b')]({'where':_0x47fe2f[_0xad67('0x66')]})[_0xad67('0x1a')](function(_0x65927e){_0x11b21d['count']=_0x65927e;if(_0x186fe[_0xad67('0x5d')][_0xad67('0x6b')]){_0x47fe2f[_0xad67('0x6c')]=[{'all':!![]}];}else{_0x47fe2f['include']=[{'model':db[_0xad67('0xb0')],'as':_0xad67('0xf8'),'required':![]},{'model':db[_0xad67('0x128')],'as':_0xad67('0x129'),'required':![]}];}return db[_0xad67('0xdd')][_0xad67('0x6d')](_0x47fe2f);})[_0xad67('0x1a')](function(_0x3a7c74){_0x11b21d['rows']=_0x3a7c74;return _0x11b21d;});}})['then'](respondWithFilteredResult(_0x5ed6d6,_0x47fe2f))[_0xad67('0x23')](handleError(_0x5ed6d6,null));};exports[_0xad67('0x12a')]=function(_0x4787f0,_0x47d181){return db[_0xad67('0x59')][_0xad67('0x76')]({'where':{'id':_0x4787f0[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x47d181,null))[_0xad67('0x1a')](function(_0x146625){if(_0x146625){return _0x146625[_0xad67('0x12a')](_0x4787f0[_0xad67('0x72')][_0xad67('0x82')],_[_0xad67('0x11f')](_0x4787f0['body'],[_0xad67('0x82'),'id'])||{})[_0xad67('0xb3')](function(_0x4ac54c){for(var _0xb72097=0x0;_0xb72097<_0x4787f0['body'][_0xad67('0x82')]['length'];_0xb72097+=0x1){socket[_0xad67('0x12b')](_0xad67('0x12c'),{'UserId':Number(_0x4787f0[_0xad67('0x72')][_0xad67('0x82')][_0xb72097]),'ChatWebsiteId':Number(_0x4787f0[_0xad67('0x6f')]['id'])});}return _0x4ac54c;});}})['then'](respondWithResult(_0x47d181,null))[_0xad67('0x23')](handleError(_0x47d181,null));};exports[_0xad67('0x12d')]=function(_0xf630bd,_0x17db8b){return db[_0xad67('0x59')]['find']({'where':{'id':_0xf630bd[_0xad67('0x6f')]['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x17db8b,null))[_0xad67('0x1a')](function(_0x289e75){if(_0x289e75){return _0x289e75[_0xad67('0x12d')](_0xf630bd[_0xad67('0x5d')][_0xad67('0x82')])['then'](function(){if(_['isArray'](_0xf630bd[_0xad67('0x5d')]['ids'])){for(var _0x3b1ef3=0x0;_0x3b1ef3<_0xf630bd[_0xad67('0x5d')][_0xad67('0x82')][_0xad67('0x70')];_0x3b1ef3+=0x1){socket[_0xad67('0x12b')](_0xad67('0x12e'),{'UserId':Number(_0xf630bd[_0xad67('0x5d')]['ids'][_0x3b1ef3]),'ChatWebsiteId':Number(_0xf630bd[_0xad67('0x6f')]['id'])});}}else{socket[_0xad67('0x12b')](_0xad67('0x12e'),{'UserId':Number(_0xf630bd['query'][_0xad67('0x82')]),'ChatWebsiteId':Number(_0xf630bd[_0xad67('0x6f')]['id'])});}});}})[_0xad67('0x1a')](respondWithStatusCode(_0x17db8b,null))[_0xad67('0x23')](handleError(_0x17db8b,null));};exports[_0xad67('0x12f')]=function(_0x168f40,_0x5ee278){var _0x153fd8={};var _0x15a9ee={};var _0xe7f99e;var _0x1e819c;return db['ChatWebsite'][_0xad67('0x7f')]({'where':{'id':_0x168f40['params']['id']}})[_0xad67('0x1a')](handleEntityNotFound(_0x5ee278,null))[_0xad67('0x1a')](function(_0x25396b){if(_0x25396b){_0xe7f99e=_0x25396b;_0x15a9ee[_0xad67('0x52')]=_[_0xad67('0x5e')](db[_0xad67('0xc9')][_0xad67('0x5a')]);_0x15a9ee[_0xad67('0x5d')]=_[_0xad67('0x5e')](_0x168f40[_0xad67('0x5d')]);_0x15a9ee[_0xad67('0x5f')]=_[_0xad67('0x60')](_0x15a9ee[_0xad67('0x52')],_0x15a9ee[_0xad67('0x5d')]);_0x153fd8[_0xad67('0x61')]=_['intersection'](_0x15a9ee[_0xad67('0x52')],qs[_0xad67('0x62')](_0x168f40['query']['fields']));_0x153fd8['attributes']=_0x153fd8[_0xad67('0x61')][_0xad67('0x70')]?_0x153fd8['attributes']:_0x15a9ee['model'];_0x153fd8[_0xad67('0x64')]=qs[_0xad67('0x65')](_0x168f40[_0xad67('0x5d')][_0xad67('0x65')]);_0x153fd8['where']=qs[_0xad67('0x5f')](_['pick'](_0x168f40[_0xad67('0x5d')],_0x15a9ee[_0xad67('0x5f')]));if(_0x168f40['query'][_0xad67('0x67')]){_0x153fd8[_0xad67('0x66')]=_[_0xad67('0x69')](_0x153fd8[_0xad67('0x66')],{'$or':_[_0xad67('0x3f')](_0x153fd8[_0xad67('0x61')],function(_0x3dc44c){var _0x5f4a94={};_0x5f4a94[_0x3dc44c]={'$like':'%'+_0x168f40[_0xad67('0x5d')]['filter']+'%'};return _0x5f4a94;})});}_0x153fd8=_[_0xad67('0x69')]({},_0x153fd8,_0x168f40[_0xad67('0x6a')]);return _0xe7f99e[_0xad67('0x12f')](_0x153fd8);}})[_0xad67('0x1a')](function(_0x38992a){if(_0x38992a){_0x1e819c=_0x38992a[_0xad67('0x70')];if(!_0x168f40[_0xad67('0x5d')][_0xad67('0x63')](_0xad67('0x80'))){_0x153fd8[_0xad67('0x2a')]=qs[_0xad67('0x2a')](_0x168f40[_0xad67('0x5d')][_0xad67('0x2a')]);_0x153fd8[_0xad67('0x28')]=qs[_0xad67('0x28')](_0x168f40[_0xad67('0x5d')][_0xad67('0x28')]);}return _0xe7f99e['getAgents'](_0x153fd8);}})[_0xad67('0x1a')](function(_0x16c5c5){if(_0x16c5c5){return _0x16c5c5?{'count':_0x1e819c,'rows':_0x16c5c5}:null;}})['then'](respondWithResult(_0x5ee278,null))[_0xad67('0x23')](handleError(_0x5ee278,null));};
\ No newline at end of file
+var _0xc316=['priority','finally','getApplications','addProactiveActions','chatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','Attachments','addAgents','userChatWebsite:save','emit','getAgents','mustache','ejs','querystring','html-to-text','ioredis','jayson/promise','url','../../components/parsers/qs','../../config/logger','../../config/environment','../../errors/api','APIBadRequestError','APINotFoundError','APIConflictError','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','http','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','destroy','then','get','ChatWebsites','UserProfileResource','sendStatus','stack','name','send','user-agent-parser','user-agent','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','browser','version','format','%s\x20%s','unknown','device','model','vendor','type','index','Pause','mandatoryDispositionPause','ChatWebsite','rawAttributes','key','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','filter','where','merge','options','includeAll','include','findAll','rows','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ChatWebsiteId','Disposition','getDispositions','sort','pick','removeDispositions','ids','addAnswer','CannedAnswer','findOne','removeAnswers','addLogo','file','filename','addAvatar','customerAvatar','systemAvatar','getLogo','join','root','sitepic','../../config/license/util','custom','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','isNil','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','chat','from','From\x20is\x20mandatory','mapKey','Body\x20is\x20mandatory','CmContact','createdAt','updatedAt','includes','CompanyId','ListId','CmList','List','Applications','Interval','Intervals','interval','Chat\x20Website\x20with\x20id\x20%s\x20not\x20found','timezone','ifTime','account','list','applications','orderBy','asc','Contacts','contact','headers','threadId','ChatInteraction','customerIp','referer','externalUrl','ContactId','interaction','messageId','created','autoclose','push','close','unmanaged','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','queueId','ChatQueue','queue','waitForTheAssignedQueue','EventManager','offline','files','Sequelize','ValidationError','no\x20available\x20attributes','difference','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','spread','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','Smtp','CloudProvider','forwardOffline','getSmtpOptions','sendMail','MailAccountId','toPairsIn','subjectOffline','email','offlineMessageSubject','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','internal','color','tag','getProactiveActions','getLicense','virtual','chatLicenseExceeded','server/files/chat/iframe.ejs','address','origin','3.8.0','remote','x-real-ip','connection','remoteAddress','alignment','labelText','textColor','textButtonColor','backgroundColor','IntervalId','Transaction','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication'];(function(_0x5a0f53,_0x3cf8a4){var _0x262793=function(_0x7d6caa){while(--_0x7d6caa){_0x5a0f53['push'](_0x5a0f53['shift']());}};_0x262793(++_0x3cf8a4);}(_0xc316,0x12f));var _0x6c31=function(_0x59f0f7,_0x47d38d){_0x59f0f7=_0x59f0f7-0x0;var _0x275ae4=_0xc316[_0x59f0f7];return _0x275ae4;};'use strict';var Mustache=require(_0x6c31('0x0'));var util=require('util');var path=require('path');var ejs=require(_0x6c31('0x1'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var querystring=require(_0x6c31('0x2'));var htmlToText=require(_0x6c31('0x3'));var Redis=require(_0x6c31('0x4'));var jayson=require(_0x6c31('0x5'));var url=require(_0x6c31('0x6'));var qs=require(_0x6c31('0x7'));var logger=require(_0x6c31('0x8'))('api');var config=require(_0x6c31('0x9'));var APIBadRequestError=require(_0x6c31('0xa'))[_0x6c31('0xb')];var APINotFoundError=require(_0x6c31('0xa'))[_0x6c31('0xc')];var APIOutOfIntervalError=require(_0x6c31('0xa'))['APIOutOfIntervalError'];var APIHandleError=require(_0x6c31('0xa'))['handleError'];var APIConflictError=require(_0x6c31('0xa'))[_0x6c31('0xd')];var db=require(_0x6c31('0xe'))['db'];config[_0x6c31('0xf')]=_[_0x6c31('0x10')](config[_0x6c31('0xf')],{'host':_0x6c31('0x11'),'port':0x18eb});var socket=require(_0x6c31('0x12'))(new Redis(config[_0x6c31('0xf')]));require('./chatWebsite.socket')[_0x6c31('0x13')](socket);var client=jayson[_0x6c31('0x14')][_0x6c31('0x15')]({'port':0x232c});var client9002=jayson['client'][_0x6c31('0x15')]({'port':0x232a});var client9003=jayson[_0x6c31('0x14')][_0x6c31('0x15')]({'port':0x232b});var client9001=jayson[_0x6c31('0x14')][_0x6c31('0x15')]({'port':0x2329});function respondWithRpcPromise(_0x3d2644,_0x2a52f9,_0x1e12fd,_0x6253c1){return new Promise(function(_0xae0153,_0x1ea3c1){var _0x21171d=_0x6253c1||client;return _0x21171d[_0x6c31('0x16')](_0x3d2644,_0x1e12fd)['then'](function(_0x22eb40){logger[_0x6c31('0x17')](_0x6c31('0x18'),_0x2a52f9,_0x6c31('0x19'));logger[_0x6c31('0x1a')](_0x6c31('0x1b'),_0x2a52f9,_0x6c31('0x19'),JSON[_0x6c31('0x1c')](_0x22eb40));if(_0x22eb40[_0x6c31('0x1d')]){if(_0x22eb40[_0x6c31('0x1d')][_0x6c31('0x1e')]===0x1f4){logger[_0x6c31('0x1d')](_0x6c31('0x18'),_0x2a52f9,_0x22eb40[_0x6c31('0x1d')][_0x6c31('0x1f')]);return _0x1ea3c1(_0x22eb40[_0x6c31('0x1d')][_0x6c31('0x1f')]);}logger['error'](_0x6c31('0x18'),_0x2a52f9,_0x22eb40[_0x6c31('0x1d')][_0x6c31('0x1f')]);return _0xae0153(_0x22eb40['error'][_0x6c31('0x1f')]);}else{logger[_0x6c31('0x17')](_0x6c31('0x18'),_0x2a52f9,_0x6c31('0x19'));_0xae0153(_0x22eb40[_0x6c31('0x20')][_0x6c31('0x1f')]);}})[_0x6c31('0x21')](function(_0x679051){logger[_0x6c31('0x1d')](_0x6c31('0x18'),_0x2a52f9,_0x679051);_0x1ea3c1(_0x679051);});});}function respondWithStatusCode(_0x2ab609,_0x26d7e0){_0x26d7e0=_0x26d7e0||0xcc;return function(_0x513a44){if(_0x513a44){return _0x2ab609['sendStatus'](_0x26d7e0);}return _0x2ab609[_0x6c31('0x22')](_0x26d7e0)[_0x6c31('0x23')]();};}function respondWithResult(_0x4b83c4,_0x4c3bb3){_0x4c3bb3=_0x4c3bb3||0xc8;return function(_0x139f45){if(_0x139f45){return _0x4b83c4[_0x6c31('0x22')](_0x4c3bb3)[_0x6c31('0x24')](_0x139f45);}};}function respondWithFilteredResult(_0x5ae544,_0x2b7bde){return function(_0x2ef3e1){if(_0x2ef3e1){var _0x494e88=typeof _0x2b7bde[_0x6c31('0x25')]===_0x6c31('0x26')&&typeof _0x2b7bde[_0x6c31('0x27')]===_0x6c31('0x26');var _0x3a8bdb=_0x2ef3e1[_0x6c31('0x28')];var _0x438048=_0x494e88?0x0:_0x2b7bde[_0x6c31('0x25')];var _0x19b81c=_0x494e88?_0x2ef3e1['count']:_0x2b7bde[_0x6c31('0x25')]+_0x2b7bde[_0x6c31('0x27')];var _0x43b3fa;if(_0x19b81c>=_0x3a8bdb){_0x19b81c=_0x3a8bdb;_0x43b3fa=0xc8;}else{_0x43b3fa=0xce;}_0x5ae544[_0x6c31('0x22')](_0x43b3fa);return _0x5ae544[_0x6c31('0x29')](_0x6c31('0x2a'),_0x438048+'-'+_0x19b81c+'/'+_0x3a8bdb)[_0x6c31('0x24')](_0x2ef3e1);}return null;};}function saveUpdates(_0x1e38e1){return function(_0x68e5f7){if(_0x68e5f7){return _0x68e5f7['update'](_0x1e38e1)['then'](function(_0x1c4275){return _0x1c4275;});}return null;};}function removeEntity(_0x1f12d1){return function(_0x46389c){if(_0x46389c){return _0x46389c[_0x6c31('0x2b')]()[_0x6c31('0x2c')](function(){var _0x51720a=_0x46389c[_0x6c31('0x2d')]({'plain':!![]});var _0x274737=_0x6c31('0x2e');return db[_0x6c31('0x2f')]['destroy']({'where':{'type':_0x274737,'resourceId':_0x51720a['id']}})[_0x6c31('0x2c')](function(){return _0x46389c;});})[_0x6c31('0x2c')](function(){_0x1f12d1[_0x6c31('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x488a81){return function(_0x360323){if(!_0x360323){_0x488a81[_0x6c31('0x30')](0x194);}return _0x360323;};}function handleError(_0x35eb32,_0x1bced4){_0x1bced4=_0x1bced4||0x1f4;return function(_0x1b4fa1){logger[_0x6c31('0x1d')](_0x1b4fa1[_0x6c31('0x31')]);if(_0x1b4fa1[_0x6c31('0x32')]){delete _0x1b4fa1[_0x6c31('0x32')];}_0x35eb32[_0x6c31('0x22')](_0x1bced4)[_0x6c31('0x33')](_0x1b4fa1);};}function createInteractionObject(_0x2e7b7d,_0x3cbb83,_0x31807a,_0x44f036){var _0x4c9a36=require(_0x6c31('0x34'));var _0x2ed57b=new _0x4c9a36();var _0x2cdb2e=_0x2ed57b['setUA'](_0x31807a[_0x6c31('0x35')])['getResult']();var _0x43af8a=_0x3cbb83['customerIp'];if(_0x31807a[_0x6c31('0x36')]){_0x43af8a=_0x31807a[_0x6c31('0x36')];}else if(_0x31807a[_0x6c31('0x37')]){_0x43af8a=_['first'](_0x31807a[_0x6c31('0x37')][_0x6c31('0x38')](','));}return{'ContactId':_0x44f036['id'],'ChatWebsiteId':_0x2e7b7d,'from':(_0x44f036[_0x6c31('0x39')]||'')+'\x20'+(_0x44f036[_0x6c31('0x3a')]||''),'customerIp':_0x43af8a,'customerPort':_0x31807a[_0x6c31('0x3b')]?_0x31807a[_0x6c31('0x3b')]:null,'referer':_0x3cbb83['referer'],'browserName':_0x2cdb2e[_0x6c31('0x3c')][_0x6c31('0x32')]&&_0x2cdb2e[_0x6c31('0x3c')][_0x6c31('0x3d')]?util[_0x6c31('0x3e')](_0x6c31('0x3f'),_0x2cdb2e[_0x6c31('0x3c')][_0x6c31('0x32')],_0x2cdb2e['browser'][_0x6c31('0x3d')]):_0x6c31('0x40'),'browserVersion':_0x2cdb2e[_0x6c31('0x3c')]['version']||_0x6c31('0x40'),'osName':util[_0x6c31('0x3e')](_0x6c31('0x3f'),_0x2cdb2e['os']['name'],_0x2cdb2e['os']['version']),'osVersion':_0x2cdb2e['os'][_0x6c31('0x3d')],'deviceModel':_0x2cdb2e[_0x6c31('0x41')][_0x6c31('0x42')]&&_0x2cdb2e['device'][_0x6c31('0x43')]?util[_0x6c31('0x3e')]('%s\x20%s\x20%s',_0x2cdb2e['device']['model'],_0x2cdb2e[_0x6c31('0x41')]['vendor'],_0x2cdb2e['device']['type']):null,'deviceVendor':_0x2cdb2e[_0x6c31('0x41')]['vendor'],'deviceType':_0x2cdb2e['device'][_0x6c31('0x44')],'formData':JSON[_0x6c31('0x1c')](_0x3cbb83)};}exports[_0x6c31('0x45')]=function(_0x587c43,_0x85f2bd){var _0x3cb72f={'include':[{'model':db[_0x6c31('0x46')],'as':_0x6c31('0x47')}]},_0x51ef21={},_0xbbf063={'count':0x0,'rows':[]};var _0x46df9c=_['map'](db[_0x6c31('0x48')][_0x6c31('0x49')],function(_0x6266f4){return{'name':_0x6266f4['fieldName'],'type':_0x6266f4[_0x6c31('0x44')][_0x6c31('0x4a')]};});_0x51ef21[_0x6c31('0x42')]=_[_0x6c31('0x4b')](_0x46df9c,_0x6c31('0x32'));_0x51ef21[_0x6c31('0x4c')]=_[_0x6c31('0x4d')](_0x587c43['query']);_0x51ef21[_0x6c31('0x4e')]=_[_0x6c31('0x4f')](_0x51ef21[_0x6c31('0x42')],_0x51ef21[_0x6c31('0x4c')]);_0x3cb72f[_0x6c31('0x50')]=_['intersection'](_0x51ef21[_0x6c31('0x42')],qs[_0x6c31('0x51')](_0x587c43[_0x6c31('0x4c')][_0x6c31('0x51')]));_0x3cb72f['attributes']=_0x3cb72f[_0x6c31('0x50')][_0x6c31('0x52')]?_0x3cb72f[_0x6c31('0x50')]:_0x51ef21[_0x6c31('0x42')];if(!_0x587c43[_0x6c31('0x4c')][_0x6c31('0x53')](_0x6c31('0x54'))){_0x3cb72f[_0x6c31('0x27')]=qs['limit'](_0x587c43[_0x6c31('0x4c')][_0x6c31('0x27')]);_0x3cb72f['offset']=qs[_0x6c31('0x25')](_0x587c43[_0x6c31('0x4c')][_0x6c31('0x25')]);}_0x3cb72f[_0x6c31('0x55')]=qs['sort'](_0x587c43[_0x6c31('0x4c')]['sort']);_0x3cb72f['where']=qs[_0x6c31('0x4e')](_['pick'](_0x587c43[_0x6c31('0x4c')],_0x51ef21[_0x6c31('0x4e')]),_0x46df9c);if(_0x587c43[_0x6c31('0x4c')][_0x6c31('0x56')]){_0x3cb72f[_0x6c31('0x57')]=_[_0x6c31('0x58')](_0x3cb72f[_0x6c31('0x57')],{'$or':_['map'](_0x46df9c,function(_0x33e77f){if(_0x33e77f[_0x6c31('0x44')]!=='VIRTUAL'){var _0x172a04={};_0x172a04[_0x33e77f['name']]={'$like':'%'+_0x587c43[_0x6c31('0x4c')][_0x6c31('0x56')]+'%'};return _0x172a04;}})});}_0x3cb72f=_[_0x6c31('0x58')]({},_0x3cb72f,_0x587c43[_0x6c31('0x59')]);var _0x2bf0f7={'where':_0x3cb72f[_0x6c31('0x57')]};return db[_0x6c31('0x48')][_0x6c31('0x28')](_0x2bf0f7)[_0x6c31('0x2c')](function(_0xe2f7f8){_0xbbf063[_0x6c31('0x28')]=_0xe2f7f8;if(_0x587c43['query'][_0x6c31('0x5a')]){_0x3cb72f[_0x6c31('0x5b')]=[{'all':!![]}];}return db['ChatWebsite'][_0x6c31('0x5c')](_0x3cb72f);})[_0x6c31('0x2c')](function(_0x45d23d){_0xbbf063[_0x6c31('0x5d')]=_0x45d23d;return _0xbbf063;})['then'](respondWithFilteredResult(_0x85f2bd,_0x3cb72f))['catch'](handleError(_0x85f2bd,null));};exports[_0x6c31('0x5e')]=function(_0x1d18bb,_0x49f4ed){var _0x2b93c3={'raw':![],'where':{'id':_0x1d18bb[_0x6c31('0x5f')]['id']},'include':[{'model':db['Pause'],'as':_0x6c31('0x47')}]},_0x2fffda={};_0x2fffda['model']=_[_0x6c31('0x4d')](db['ChatWebsite']['rawAttributes']);_0x2fffda['query']=_['keys'](_0x1d18bb['query']);_0x2fffda[_0x6c31('0x4e')]=_[_0x6c31('0x4f')](_0x2fffda[_0x6c31('0x42')],_0x2fffda[_0x6c31('0x4c')]);_0x2b93c3[_0x6c31('0x50')]=_['intersection'](_0x2fffda['model'],qs[_0x6c31('0x51')](_0x1d18bb['query'][_0x6c31('0x51')]));_0x2b93c3[_0x6c31('0x50')]=_0x2b93c3[_0x6c31('0x50')][_0x6c31('0x52')]?_0x2b93c3[_0x6c31('0x50')]:_0x2fffda[_0x6c31('0x42')];if(_0x1d18bb['query'][_0x6c31('0x5a')]){_0x2b93c3['include']=[{'all':!![]}];}_0x2b93c3=_[_0x6c31('0x58')]({},_0x2b93c3,_0x1d18bb[_0x6c31('0x59')]);return db[_0x6c31('0x48')][_0x6c31('0x60')](_0x2b93c3)['then'](handleEntityNotFound(_0x49f4ed,null))[_0x6c31('0x2c')](respondWithResult(_0x49f4ed,null))[_0x6c31('0x21')](handleError(_0x49f4ed,null));};exports[_0x6c31('0x61')]=function(_0x4e22a9,_0x21cc35){return db[_0x6c31('0x48')][_0x6c31('0x61')](_0x4e22a9[_0x6c31('0x62')],{})[_0x6c31('0x2c')](function(_0x3e33e0){var _0x366879=_0x4e22a9[_0x6c31('0x63')][_0x6c31('0x2d')]({'plain':!![]});if(!_0x366879)throw new Error(_0x6c31('0x64'));if(_0x366879['role']===_0x6c31('0x63')){var _0x47915d=_0x3e33e0[_0x6c31('0x2d')]({'plain':!![]});var _0x6232ba=_0x6c31('0x2e');return db['UserProfileSection'][_0x6c31('0x60')]({'where':{'name':_0x6232ba,'userProfileId':_0x366879[_0x6c31('0x65')]},'raw':!![]})[_0x6c31('0x2c')](function(_0x9d0f53){if(_0x9d0f53&&_0x9d0f53[_0x6c31('0x66')]===0x0){return db[_0x6c31('0x2f')]['create']({'name':_0x47915d[_0x6c31('0x32')],'resourceId':_0x47915d['id'],'type':_0x9d0f53['name'],'sectionId':_0x9d0f53['id']},{})[_0x6c31('0x2c')](function(){return _0x3e33e0;});}else{return _0x3e33e0;}})[_0x6c31('0x21')](function(_0x1a1ab1){logger[_0x6c31('0x1d')](_0x6c31('0x67'),_0x1a1ab1);throw _0x1a1ab1;});}return _0x3e33e0;})['then'](respondWithResult(_0x21cc35,0xc9))[_0x6c31('0x21')](handleError(_0x21cc35,null));};exports['update']=function(_0x1e2fa7,_0x3f82c1){if(_0x1e2fa7[_0x6c31('0x62')]['id']){delete _0x1e2fa7[_0x6c31('0x62')]['id'];}return db['ChatWebsite'][_0x6c31('0x60')]({'where':{'id':_0x1e2fa7['params']['id']},'include':[{'model':db['Pause'],'as':_0x6c31('0x47')}]})[_0x6c31('0x2c')](handleEntityNotFound(_0x3f82c1,null))[_0x6c31('0x2c')](saveUpdates(_0x1e2fa7[_0x6c31('0x62')],null))[_0x6c31('0x2c')](respondWithResult(_0x3f82c1,null))[_0x6c31('0x21')](handleError(_0x3f82c1,null));};exports['destroy']=function(_0x525044,_0x41f83c){return db[_0x6c31('0x48')][_0x6c31('0x60')]({'where':{'id':_0x525044[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x41f83c,null))[_0x6c31('0x2c')](removeEntity(_0x41f83c,null))[_0x6c31('0x21')](handleError(_0x41f83c,null));};exports[_0x6c31('0x68')]=function(_0x1b4129,_0x77e5e2){return db[_0x6c31('0x48')][_0x6c31('0x68')]()[_0x6c31('0x2c')](respondWithResult(_0x77e5e2,null))[_0x6c31('0x21')](handleError(_0x77e5e2,null));};exports['addDisposition']=function(_0x511473,_0x57cd84){if(_0x511473[_0x6c31('0x62')]['id']){delete _0x511473[_0x6c31('0x62')]['id'];}return db[_0x6c31('0x48')][_0x6c31('0x60')]({'where':{'id':_0x511473['params']['id']}})['then'](handleEntityNotFound(_0x57cd84,null))['then'](function(_0x37684c){if(_0x37684c){_0x511473[_0x6c31('0x62')][_0x6c31('0x69')]=_0x37684c['id'];return db[_0x6c31('0x6a')][_0x6c31('0x61')](_0x511473[_0x6c31('0x62')]);}})[_0x6c31('0x2c')](respondWithResult(_0x57cd84,null))[_0x6c31('0x21')](handleError(_0x57cd84,null));};exports[_0x6c31('0x6b')]=function(_0x4f964b,_0x3d781d){var _0x21579c={'raw':![],'where':{}};var _0x36ad26={};var _0x240ed9={'count':0x0,'rows':[]};return db[_0x6c31('0x48')]['findOne']({'where':{'id':_0x4f964b[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x3d781d,null))[_0x6c31('0x2c')](function(_0x5c8e1e){if(_0x5c8e1e){_0x36ad26[_0x6c31('0x42')]=_[_0x6c31('0x4d')](db[_0x6c31('0x6a')]['rawAttributes']);_0x36ad26[_0x6c31('0x4c')]=_[_0x6c31('0x4d')](_0x4f964b[_0x6c31('0x4c')]);_0x36ad26[_0x6c31('0x4e')]=_[_0x6c31('0x4f')](_0x36ad26['model'],_0x36ad26[_0x6c31('0x4c')]);_0x21579c[_0x6c31('0x50')]=_[_0x6c31('0x4f')](_0x36ad26[_0x6c31('0x42')],qs[_0x6c31('0x51')](_0x4f964b[_0x6c31('0x4c')][_0x6c31('0x51')]));_0x21579c[_0x6c31('0x50')]=_0x21579c['attributes'][_0x6c31('0x52')]?_0x21579c[_0x6c31('0x50')]:_0x36ad26['model'];if(!_0x4f964b[_0x6c31('0x4c')]['hasOwnProperty']('nolimit')){_0x21579c[_0x6c31('0x27')]=qs[_0x6c31('0x27')](_0x4f964b[_0x6c31('0x4c')][_0x6c31('0x27')]);_0x21579c[_0x6c31('0x25')]=qs[_0x6c31('0x25')](_0x4f964b[_0x6c31('0x4c')][_0x6c31('0x25')]);}_0x21579c['order']=qs['sort'](_0x4f964b[_0x6c31('0x4c')][_0x6c31('0x6c')]);_0x21579c[_0x6c31('0x57')]=qs[_0x6c31('0x4e')](_[_0x6c31('0x6d')](_0x4f964b['query'],_0x36ad26['filters']));_0x21579c[_0x6c31('0x57')]['ChatWebsiteId']=_0x5c8e1e['id'];if(_0x4f964b[_0x6c31('0x4c')][_0x6c31('0x56')]){_0x21579c[_0x6c31('0x57')]=_[_0x6c31('0x58')](_0x21579c[_0x6c31('0x57')],{'$or':_[_0x6c31('0x4b')](_0x21579c['attributes'],function(_0x579b62){var _0x55f195={};_0x55f195[_0x579b62]={'$like':'%'+_0x4f964b[_0x6c31('0x4c')][_0x6c31('0x56')]+'%'};return _0x55f195;})});}_0x21579c=_[_0x6c31('0x58')]({},_0x21579c,_0x4f964b[_0x6c31('0x59')]);return db[_0x6c31('0x6a')][_0x6c31('0x28')]({'where':_0x21579c[_0x6c31('0x57')]})[_0x6c31('0x2c')](function(_0x1967b5){_0x240ed9[_0x6c31('0x28')]=_0x1967b5;if(_0x4f964b['query'][_0x6c31('0x5a')]){_0x21579c['include']=[{'all':!![]}];}return db['Disposition'][_0x6c31('0x5c')](_0x21579c);})[_0x6c31('0x2c')](function(_0x266a7f){_0x240ed9[_0x6c31('0x5d')]=_0x266a7f;return _0x240ed9;});}})[_0x6c31('0x2c')](respondWithFilteredResult(_0x3d781d,_0x21579c))[_0x6c31('0x21')](handleError(_0x3d781d,null));};exports[_0x6c31('0x6e')]=function(_0x1b428e,_0x1eacd6){return db['ChatWebsite'][_0x6c31('0x60')]({'where':{'id':_0x1b428e['params']['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x1eacd6,null))[_0x6c31('0x2c')](function(_0x53ea18){if(_0x53ea18){return _0x53ea18[_0x6c31('0x6e')](_0x1b428e[_0x6c31('0x4c')][_0x6c31('0x6f')]);}})[_0x6c31('0x2c')](respondWithStatusCode(_0x1eacd6,null))['catch'](handleError(_0x1eacd6,null));};exports[_0x6c31('0x70')]=function(_0x5b4a7f,_0x426a7c){if(_0x5b4a7f[_0x6c31('0x62')]['id']){delete _0x5b4a7f[_0x6c31('0x62')]['id'];}return db[_0x6c31('0x48')]['find']({'where':{'id':_0x5b4a7f['params']['id']}})['then'](handleEntityNotFound(_0x426a7c,null))['then'](function(_0x48e4da){if(_0x48e4da){_0x5b4a7f['body']['ChatWebsiteId']=_0x48e4da['id'];return db[_0x6c31('0x71')]['create'](_0x5b4a7f['body']);}})[_0x6c31('0x2c')](respondWithResult(_0x426a7c,null))[_0x6c31('0x21')](handleError(_0x426a7c,null));};exports['getAnswers']=function(_0x5cbee2,_0x327b26){var _0x14a6b0={'raw':![],'where':{}};var _0x582285={};var _0x36aed9={'count':0x0,'rows':[]};return db[_0x6c31('0x48')][_0x6c31('0x72')]({'where':{'id':_0x5cbee2[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x327b26,null))[_0x6c31('0x2c')](function(_0x579446){if(_0x579446){_0x582285[_0x6c31('0x42')]=_['keys'](db[_0x6c31('0x71')][_0x6c31('0x49')]);_0x582285[_0x6c31('0x4c')]=_[_0x6c31('0x4d')](_0x5cbee2[_0x6c31('0x4c')]);_0x582285[_0x6c31('0x4e')]=_[_0x6c31('0x4f')](_0x582285['model'],_0x582285[_0x6c31('0x4c')]);_0x14a6b0[_0x6c31('0x50')]=_[_0x6c31('0x4f')](_0x582285[_0x6c31('0x42')],qs[_0x6c31('0x51')](_0x5cbee2[_0x6c31('0x4c')][_0x6c31('0x51')]));_0x14a6b0[_0x6c31('0x50')]=_0x14a6b0['attributes'][_0x6c31('0x52')]?_0x14a6b0[_0x6c31('0x50')]:_0x582285['model'];if(!_0x5cbee2[_0x6c31('0x4c')][_0x6c31('0x53')]('nolimit')){_0x14a6b0[_0x6c31('0x27')]=qs[_0x6c31('0x27')](_0x5cbee2['query']['limit']);_0x14a6b0['offset']=qs[_0x6c31('0x25')](_0x5cbee2[_0x6c31('0x4c')][_0x6c31('0x25')]);}_0x14a6b0[_0x6c31('0x55')]=qs[_0x6c31('0x6c')](_0x5cbee2[_0x6c31('0x4c')]['sort']);_0x14a6b0['where']=qs[_0x6c31('0x4e')](_[_0x6c31('0x6d')](_0x5cbee2[_0x6c31('0x4c')],_0x582285[_0x6c31('0x4e')]));_0x14a6b0['where'][_0x6c31('0x69')]=_0x579446['id'];if(_0x5cbee2['query']['filter']){_0x14a6b0[_0x6c31('0x57')]=_[_0x6c31('0x58')](_0x14a6b0[_0x6c31('0x57')],{'$or':_[_0x6c31('0x4b')](_0x14a6b0[_0x6c31('0x50')],function(_0x546ce1){var _0x3020e8={};_0x3020e8[_0x546ce1]={'$like':'%'+_0x5cbee2[_0x6c31('0x4c')]['filter']+'%'};return _0x3020e8;})});}_0x14a6b0=_[_0x6c31('0x58')]({},_0x14a6b0,_0x5cbee2['options']);return db[_0x6c31('0x71')][_0x6c31('0x28')]({'where':_0x14a6b0[_0x6c31('0x57')]})[_0x6c31('0x2c')](function(_0x3451dd){_0x36aed9['count']=_0x3451dd;if(_0x5cbee2[_0x6c31('0x4c')]['includeAll']){_0x14a6b0['include']=[{'all':!![]}];}return db[_0x6c31('0x71')][_0x6c31('0x5c')](_0x14a6b0);})['then'](function(_0x5b3752){_0x36aed9[_0x6c31('0x5d')]=_0x5b3752;return _0x36aed9;});}})[_0x6c31('0x2c')](respondWithFilteredResult(_0x327b26,_0x14a6b0))[_0x6c31('0x21')](handleError(_0x327b26,null));};exports[_0x6c31('0x73')]=function(_0x4de75a,_0x4a54ff){return db[_0x6c31('0x48')][_0x6c31('0x60')]({'where':{'id':_0x4de75a['params']['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x4a54ff,null))[_0x6c31('0x2c')](function(_0x2aa805){if(_0x2aa805){return _0x2aa805[_0x6c31('0x73')](_0x4de75a['query'][_0x6c31('0x6f')]);}})[_0x6c31('0x2c')](respondWithStatusCode(_0x4a54ff,null))[_0x6c31('0x21')](handleError(_0x4a54ff,null));};exports[_0x6c31('0x74')]=function(_0x5ca335,_0x413fa7){_0x5ca335['body']['sitepic']=_0x5ca335[_0x6c31('0x75')][_0x6c31('0x76')];return db[_0x6c31('0x48')]['find']({'where':{'id':_0x5ca335[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x413fa7,null))['then'](saveUpdates(_0x5ca335[_0x6c31('0x62')],null))[_0x6c31('0x2c')](respondWithResult(_0x413fa7,null))[_0x6c31('0x21')](handleError(_0x413fa7,null));};exports[_0x6c31('0x77')]=function(_0xc1a6d2,_0x5ed7c5){_0xc1a6d2[_0x6c31('0x62')]['agentAvatar']=_0xc1a6d2[_0x6c31('0x75')][_0x6c31('0x76')];return db[_0x6c31('0x48')]['find']({'where':{'id':_0xc1a6d2[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x5ed7c5,null))['then'](saveUpdates(_0xc1a6d2[_0x6c31('0x62')],null))[_0x6c31('0x2c')](respondWithResult(_0x5ed7c5,null))[_0x6c31('0x21')](handleError(_0x5ed7c5,null));};exports['addCustomerAvatar']=function(_0x572878,_0xa75ff6){_0x572878[_0x6c31('0x62')][_0x6c31('0x78')]=_0x572878[_0x6c31('0x75')][_0x6c31('0x76')];return db[_0x6c31('0x48')][_0x6c31('0x60')]({'where':{'id':_0x572878[_0x6c31('0x5f')]['id']}})['then'](handleEntityNotFound(_0xa75ff6,null))[_0x6c31('0x2c')](saveUpdates(_0x572878[_0x6c31('0x62')],null))[_0x6c31('0x2c')](respondWithResult(_0xa75ff6,null))['catch'](handleError(_0xa75ff6,null));};exports['addSystemAvatar']=function(_0x3be2cc,_0x598751){_0x3be2cc[_0x6c31('0x62')][_0x6c31('0x79')]=_0x3be2cc[_0x6c31('0x75')][_0x6c31('0x76')];return db[_0x6c31('0x48')][_0x6c31('0x60')]({'where':{'id':_0x3be2cc[_0x6c31('0x5f')]['id']}})['then'](handleEntityNotFound(_0x598751,null))[_0x6c31('0x2c')](saveUpdates(_0x3be2cc[_0x6c31('0x62')],null))[_0x6c31('0x2c')](respondWithResult(_0x598751,null))[_0x6c31('0x21')](handleError(_0x598751,null));};exports[_0x6c31('0x7a')]=function(_0x39498b,_0x319dea){var _0x2be541=path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],'server/files/images/logos/default_logo.svg');var _0x12a95f={'where':{'id':_0x39498b[_0x6c31('0x5f')]['id']},'attributes':['id',_0x6c31('0x7d')],'raw':!![]};var _0x1af4ad=![];return require(_0x6c31('0x7e'))['getLicense']()[_0x6c31('0x2c')](function(_0x3e8d84){if(_0x3e8d84){_0x1af4ad=_0x3e8d84[_0x6c31('0x7f')];}})[_0x6c31('0x2c')](function(){return db['ChatWebsite'][_0x6c31('0x60')](_0x12a95f);})['then'](handleEntityNotFound(_0x319dea,null))['then'](function(_0x826eba){if(_0x826eba){if(!_['isNil'](_0x826eba[_0x6c31('0x7d')])){if(fs[_0x6c31('0x80')](path['join'](config['root'],_0x6c31('0x81'),_0x826eba[_0x6c31('0x7d')]))&&_0x1af4ad){_0x2be541=path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0x81'),_0x826eba[_0x6c31('0x7d')]);}}return _0x319dea[_0x6c31('0x82')](_0x2be541);}})[_0x6c31('0x21')](handleError(_0x319dea,null));};exports[_0x6c31('0x83')]=function(_0x20865a,_0x40996d){var _0x15fe9c=path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0x84'));var _0x1b6da6={'where':{'id':_0x20865a[_0x6c31('0x5f')]['id']},'attributes':['id',_0x6c31('0x85')],'raw':!![]};return db[_0x6c31('0x48')]['find'](_0x1b6da6)['then'](handleEntityNotFound(_0x40996d,null))[_0x6c31('0x2c')](function(_0x26e755){if(_0x26e755){if(!_[_0x6c31('0x86')](_0x26e755[_0x6c31('0x85')])){if(fs[_0x6c31('0x80')](path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],'server/files/images/avatars/',_0x26e755[_0x6c31('0x85')]))){_0x15fe9c=path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0x87'),_0x26e755['agentAvatar']);}}return _0x40996d['download'](_0x15fe9c);}})[_0x6c31('0x21')](handleError(_0x40996d,null));};exports[_0x6c31('0x88')]=function(_0x1f49f5,_0x1c4f45){var _0x77cc4d=path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0x89'));var _0x1060ef={'where':{'id':_0x1f49f5[_0x6c31('0x5f')]['id']},'attributes':['id','customerAvatar',_0x6c31('0x8a')],'raw':!![]};return db[_0x6c31('0x48')][_0x6c31('0x60')](_0x1060ef)[_0x6c31('0x2c')](handleEntityNotFound(_0x1c4f45,null))[_0x6c31('0x2c')](function(_0x4ad8a0){if(_0x4ad8a0){if(!_[_0x6c31('0x86')](_0x4ad8a0[_0x6c31('0x78')])){if(fs[_0x6c31('0x80')](path[_0x6c31('0x7b')](config['root'],_0x6c31('0x87'),_0x4ad8a0[_0x6c31('0x78')]))&&_0x4ad8a0[_0x6c31('0x8a')]){_0x77cc4d=path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0x87'),_0x4ad8a0[_0x6c31('0x78')]);}}return _0x1c4f45[_0x6c31('0x82')](_0x77cc4d);}})['catch'](handleError(_0x1c4f45,null));};exports['getSystemAvatar']=function(_0x2eb26d,_0x38adf9){var _0x3460d9=path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0x8b'));var _0x34cee8={'where':{'id':_0x2eb26d['params']['id']},'attributes':['id',_0x6c31('0x79')],'raw':!![]};return db['ChatWebsite'][_0x6c31('0x60')](_0x34cee8)[_0x6c31('0x2c')](handleEntityNotFound(_0x38adf9,null))['then'](function(_0x3638a3){if(_0x3638a3){if(!_[_0x6c31('0x86')](_0x3638a3[_0x6c31('0x79')])){if(fs[_0x6c31('0x80')](path['join'](config[_0x6c31('0x7c')],_0x6c31('0x87'),_0x3638a3[_0x6c31('0x79')]))){_0x3460d9=path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],'server/files/images/avatars/',_0x3638a3[_0x6c31('0x79')]);}}return _0x38adf9[_0x6c31('0x82')](_0x3460d9);}})[_0x6c31('0x21')](handleError(_0x38adf9,null));};exports[_0x6c31('0x8c')]=function(_0x1038eb,_0x28bdeb){var _0x5b6b8e={'body':_0x1038eb['body'],'channel':_0x6c31('0x8d')};var _0xbb281f=[];var _0x5a7624=[];var _0x41731e={};var _0x5085cb=![];if(_0x1038eb[_0x6c31('0x62')]['id']){delete _0x1038eb[_0x6c31('0x62')]['id'];}if(_[_0x6c31('0x86')](_0x1038eb['body'][_0x6c31('0x8e')])){throw new APIBadRequestError(_0x6c31('0x8f'));}if(_['isNil'](_0x1038eb[_0x6c31('0x62')][_0x6c31('0x90')])){throw new APIBadRequestError('MapKey\x20is\x20mandatory');}if(_['isEmpty'](_0x1038eb[_0x6c31('0x62')][_0x6c31('0x62')])){throw new APIBadRequestError(_0x6c31('0x91'));}return db[_0x6c31('0x92')][_0x6c31('0x68')]()[_0x6c31('0x2c')](function(_0xe74139){if(!_0xe74139){throw new Error('No\x20available\x20attributes');}_0xbb281f=Object[_0x6c31('0x4d')](_0xe74139)['filter'](function(_0x452cf6){return![_0x6c31('0x93'),_0x6c31('0x94')][_0x6c31('0x95')](_0x452cf6);});_0x5a7624=Object[_0x6c31('0x4d')](_0xe74139)[_0x6c31('0x56')](function(_0x7d4e7c){return![_0x6c31('0x93'),'updatedAt',_0x6c31('0x96'),_0x6c31('0x97')]['includes'](_0x7d4e7c);});if(!_[_0x6c31('0x95')](_0x5a7624,_0x1038eb[_0x6c31('0x62')][_0x6c31('0x90')])){throw new APIBadRequestError('Invalid\x20MapKey\x20parameter.\x20Allowed\x20values:\x20'+_0x5a7624[_0x6c31('0x7b')](',\x20'));}_0x41731e[_0x1038eb[_0x6c31('0x62')][_0x6c31('0x90')]]=_0x1038eb[_0x6c31('0x62')]['from'];})[_0x6c31('0x2c')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x1038eb['params']['id']},'include':[{'model':db[_0x6c31('0x98')],'as':_0x6c31('0x99'),'include':[{'model':db[_0x6c31('0x92')],'as':'Contacts','where':_0x41731e,'limit':0x1,'order':[[_0x6c31('0x94'),'DESC']]}]},{'model':db['ChatApplication'],'as':_0x6c31('0x9a')},{'model':db['Interval'],'as':_0x6c31('0x9b'),'include':[{'model':db['Interval'],'as':_0x6c31('0x9c'),'attributes':['id',_0x6c31('0x9d')],'raw':!![]}]}]});})[_0x6c31('0x2c')](function(_0x5ba6b2){if(!_0x5ba6b2){throw new APINotFoundError(util[_0x6c31('0x3e')](_0x6c31('0x9e'),_0x1038eb['params']['id']));}var _0x2ebe7d=_0x5ba6b2[_0x6c31('0x9b')];if(_0x2ebe7d){var _0x3a50ed=_0x5ba6b2[_0x6c31('0x9f')]||undefined;return _0x2ebe7d[_0x6c31('0xa0')](_0x3a50ed)[_0x6c31('0x2c')](function(_0x2200c3){if(!_0x2200c3){throw new APIOutOfIntervalError();}return _0x5ba6b2;});}else{return _0x5ba6b2;}})[_0x6c31('0x2c')](function(_0x22d5ff){if(!_0x22d5ff[_0x6c31('0x99')]){return;}_0x5b6b8e[_0x6c31('0xa1')]=_0x22d5ff;_0x5b6b8e[_0x6c31('0xa2')]=_0x22d5ff[_0x6c31('0x99')];_0x5b6b8e[_0x6c31('0xa3')]=_[_0x6c31('0xa4')](_0x22d5ff[_0x6c31('0x9a')],['priority'],[_0x6c31('0xa5')]);if(_0x5b6b8e[_0x6c31('0xa1')][_0x6c31('0x9a')]){delete _0x5b6b8e[_0x6c31('0xa1')][_0x6c31('0x9a')];}if(_0x5b6b8e['account']['List']&&_0x5b6b8e['account'][_0x6c31('0x99')][_0x6c31('0xa6')]['length']){return _0x5b6b8e['account'][_0x6c31('0x99')][_0x6c31('0xa6')][0x0];}var _0x1a53f5=_[_0x6c31('0x10')](_0x1038eb[_0x6c31('0x62')],{'firstName':_0x1038eb[_0x6c31('0x62')][_0x6c31('0x8e')],'ListId':_0x22d5ff['ListId']});_0x1a53f5[_0x1038eb[_0x6c31('0x62')][_0x6c31('0x90')]]=_0x1038eb[_0x6c31('0x62')][_0x6c31('0x8e')];return db[_0x6c31('0x92')][_0x6c31('0x61')](_0x1a53f5,{'fields':_0xbb281f,'raw':!![]});})[_0x6c31('0x2c')](function(_0xcd00a8){_0x5b6b8e[_0x6c31('0xa7')]=_0xcd00a8;var _0x16d7a7=createInteractionObject(_0x1038eb['params']['id'],_0x1038eb['body'],_0x1038eb[_0x6c31('0xa8')],_0xcd00a8);var _0x2448ee={'ChatWebsiteId':_0x1038eb[_0x6c31('0x5f')]['id']};if(_0x1038eb['body'][_0x6c31('0xa9')]){_0x2448ee[_0x6c31('0xa9')]=_0x1038eb['body'][_0x6c31('0xa9')];_0x2448ee['closed']=![];return db[_0x6c31('0xaa')][_0x6c31('0x60')]({'where':_0x2448ee})['then'](function(_0x56777f){var _0x2aba46=_0x1038eb[_0x6c31('0x62')][_0x6c31('0xab')]&&_0x1038eb[_0x6c31('0x62')][_0x6c31('0xac')];if(_0x56777f){_0x5085cb=!![];return _0x56777f;}else if(!_0x2aba46&&_0x56777f&&_0x56777f['closed']){throw new APIConflictError('Writing\x20on\x20closed\x20interaction');}_0x16d7a7['threadId']=_0x1038eb[_0x6c31('0x62')][_0x6c31('0xa9')];_0x16d7a7[_0x6c31('0xad')]=_0x1038eb[_0x6c31('0x62')][_0x6c31('0xad')];return db[_0x6c31('0xaa')][_0x6c31('0x61')](_0x16d7a7);});}_0x2448ee[_0x6c31('0xae')]=_0xcd00a8['id'];if(_0x1038eb[_0x6c31('0x62')]['interaction']&&_0x1038eb['body'][_0x6c31('0xaf')]['id']){_0x2448ee['id']=_0x1038eb[_0x6c31('0x62')][_0x6c31('0xaf')]['id'];return db['ChatInteraction'][_0x6c31('0x60')]({'where':_0x2448ee})[_0x6c31('0x2c')](function(_0x28928c){if(_0x28928c){_0x5085cb=!![];return _0x28928c;}return db[_0x6c31('0xaa')][_0x6c31('0x61')](_0x16d7a7);});}return db[_0x6c31('0xaa')][_0x6c31('0x61')](_0x16d7a7);})[_0x6c31('0x2c')](function(_0xeebfbb){if(!_0x5085cb){return _0xeebfbb;}var _0x2ea619={'from':(_0x5b6b8e[_0x6c31('0xa7')]['firstName']||'')+'\x20'+(_0x5b6b8e[_0x6c31('0xa7')]['lastName']||'')};if(_0x1038eb[_0x6c31('0x62')][_0x6c31('0xa9')]&&_0x1038eb[_0x6c31('0x62')]['messageId']&&_0x1038eb[_0x6c31('0x62')][_0x6c31('0xa9')]!=_0x1038eb['body'][_0x6c31('0xb0')]){_0x2ea619['threadId']=_0x1038eb[_0x6c31('0x62')][_0x6c31('0xb0')];}return _0xeebfbb['update'](_0x2ea619);})[_0x6c31('0x2c')](function(_0xeed903){_0x5b6b8e[_0x6c31('0xaf')]=_0xeed903[_0x6c31('0x2d')]({'plain':!![]});_0x5b6b8e[_0x6c31('0xaf')][_0x6c31('0xb1')]=!_0x5085cb;if(_0x5b6b8e[_0x6c31('0xaf')][_0x6c31('0xb1')]){if(_0x5b6b8e[_0x6c31('0xa1')][_0x6c31('0xb2')]){_0x5b6b8e['applications'][_0x6c31('0xb3')]({'id':0x0,'priority':_0x5b6b8e['applications']['length']+0x1,'app':_0x6c31('0xb4'),'appdata':_0x6c31('0xb5'),'interval':'*,*,*,*'});}}return db['ChatMessage']['create']({'body':_0x1038eb[_0x6c31('0x62')][_0x6c31('0x62')],'ChatWebsiteId':_0x1038eb[_0x6c31('0x5f')]['id'],'ChatInteractionId':_0xeed903['id'],'direction':'in','ContactId':_0x5b6b8e[_0x6c31('0xa7')]['id'],'AttachmentId':_0x1038eb[_0x6c31('0x62')][_0x6c31('0xb6')]});})[_0x6c31('0x2c')](function(_0x3beefd){_0x5b6b8e['message']=_0x3beefd;if(!_0x5b6b8e[_0x6c31('0xaf')][_0x6c31('0xb7')]){return;}return db[_0x6c31('0xb8')][_0x6c31('0x60')]({'attributes':['id',_0x6c31('0x32')],'where':{'id':_0x5b6b8e[_0x6c31('0xaf')][_0x6c31('0xb7')]}});})[_0x6c31('0x2c')](function(_0x1bbfd7){if(_0x1bbfd7){_0x5b6b8e[_0x6c31('0xa3')][_0x6c31('0xb9')]({'id':0x0,'priority':0x0,'app':_0x6c31('0xba'),'appdata':_0x1bbfd7[_0x6c31('0x32')]+','+(_0x5b6b8e['account'][_0x6c31('0xbb')]||0xa),'interval':_0x6c31('0xbc')});_0x5b6b8e[_0x6c31('0xbd')]=!![];}if(!_0x5b6b8e[_0x6c31('0xaf')][_0x6c31('0xbe')]){return;}return db[_0x6c31('0xbf')]['find']({'attributes':['id',_0x6c31('0x32')],'where':{'id':_0x5b6b8e['interaction'][_0x6c31('0xbe')]}});})['then'](function(_0x231814){if(_0x231814){_0x5b6b8e[_0x6c31('0xa3')]['unshift']({'id':0x0,'priority':0x1,'app':_0x6c31('0xc0'),'appdata':_0x231814['name']+','+(_0x5b6b8e[_0x6c31('0xa1')][_0x6c31('0xc1')]||0x12c),'interval':_0x6c31('0xbc')});}return respondWithRpcPromise('Start','startRouting',_0x5b6b8e);})[_0x6c31('0x2c')](function(_0x40cab2){respondWithRpcPromise(_0x6c31('0xc2'),_0x6c31('0xc2'),{'event':_0x6c31('0x8c'),'message':_0x40cab2},client9002);return _0x40cab2;})[_0x6c31('0x2c')](respondWithResult(_0x28bdeb,null))[_0x6c31('0x21')](APIHandleError(_0x28bdeb));};exports[_0x6c31('0xc3')]=function(_0x2350e2,_0x17e0c2){var _0x51ec04,_0x1dd008,_0x420c1a;var _0x2c43f2=[];var _0x246223={};var _0x27113d=_0x2350e2[_0x6c31('0xc4')]||[];var _0x429afa=[];var _0x76e5ff;return db[_0x6c31('0x92')][_0x6c31('0x68')]()['then'](function(_0x417d54){if(!_0x417d54){throw new db[(_0x6c31('0xc5'))][(_0x6c31('0xc6'))](_0x6c31('0xc7'));}_0x2c43f2=_[_0x6c31('0xc8')](_[_0x6c31('0x4d')](_0x417d54),[_0x6c31('0x93'),'updatedAt',_0x6c31('0x96'),_0x6c31('0x97')]);if(_0x2350e2[_0x6c31('0x62')]['id']){delete _0x2350e2[_0x6c31('0x62')]['id'];}if(_[_0x6c31('0x86')](_0x2350e2[_0x6c31('0x62')][_0x6c31('0x8e')])){throw _0x17e0c2[_0x6c31('0x22')](0x1f4)[_0x6c31('0x33')](new db['Sequelize'][(_0x6c31('0xc6'))](_0x6c31('0xc9')));}if(_[_0x6c31('0x86')](_0x2350e2[_0x6c31('0x62')]['body'])||_0x2350e2['body'][_0x6c31('0x62')]===''){throw _0x17e0c2[_0x6c31('0x22')](0x1f4)[_0x6c31('0x33')](new db[(_0x6c31('0xc5'))][(_0x6c31('0xc6'))](_0x6c31('0xca')));}if(_[_0x6c31('0x86')](_0x2350e2[_0x6c31('0x62')][_0x6c31('0xcb')])){throw _0x17e0c2[_0x6c31('0x22')](0x1f4)[_0x6c31('0x33')](new db[(_0x6c31('0xc5'))][(_0x6c31('0xc6'))](_0x6c31('0xcc')+_0x2c43f2));}if(!_[_0x6c31('0x95')](_0x2c43f2,_0x2350e2[_0x6c31('0x62')]['mapKeyOffline'])){throw _0x17e0c2[_0x6c31('0x22')](0x1f4)[_0x6c31('0x33')](new db[(_0x6c31('0xc5'))][(_0x6c31('0xc6'))](_0x6c31('0xcd')+_0x2c43f2));}_0x246223[_0x2350e2['body'][_0x6c31('0xcb')]]=_0x2350e2[_0x6c31('0x62')][_0x6c31('0x8e')];})['then'](function(){return db[_0x6c31('0x48')][_0x6c31('0x60')]({'where':{'id':_0x2350e2[_0x6c31('0x5f')]['id']},'include':[{'model':db[_0x6c31('0x98')],'as':_0x6c31('0x99')},{'model':db[_0x6c31('0xce')],'as':_0x6c31('0xce')}]});})[_0x6c31('0x2c')](handleEntityNotFound(_0x17e0c2,null))[_0x6c31('0x2c')](function(_0x26b8e5){if(_0x26b8e5&&_0x26b8e5[_0x6c31('0x99')]){_0x1dd008=_0x26b8e5;var _0x13e9b6=_[_0x6c31('0x10')](_0x2350e2[_0x6c31('0x62')],{'firstName':_0x2350e2[_0x6c31('0x62')][_0x6c31('0x8e')],'phone':_0x2350e2[_0x6c31('0x62')][_0x6c31('0x8e')],'ListId':_0x26b8e5['ListId']});_0x13e9b6[_0x2350e2[_0x6c31('0x62')][_0x6c31('0xcb')]]=_0x2350e2[_0x6c31('0x62')][_0x6c31('0x8e')];return db['CmContact'][_0x6c31('0xcf')]({'where':_0x246223,'defaults':_0x13e9b6});}})[_0x6c31('0xd0')](function(_0x1c6653){if(_0x1c6653){_0x420c1a=_0x1c6653;var _0x426030=fs['readFileSync'](path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0xd1')),_0x6c31('0xd2'));var _0x806347=ejs[_0x6c31('0xd3')](_0x426030,{'body':_[_0x6c31('0xd4')](_0x2350e2['body'][_0x6c31('0x62')]),'bodyTitle':_0x1dd008[_0x6c31('0xd5')]});return db[_0x6c31('0xd6')]['create']({'body':_0x806347,'plainBody':htmlToText['fromString'](_0x806347),'ContactId':_0x1c6653['id'],'ChatWebsiteId':_0x1dd008['id']});}})[_0x6c31('0x2c')](function(_0x287776){_0x76e5ff=_0x287776;if(_0x27113d[_0x6c31('0x52')]){var _0x23b14e=_0x27113d[_0x6c31('0x4b')](function(_0x1bc964){return{'name':_0x1bc964[_0x6c31('0xd7')],'basename':_0x1bc964[_0x6c31('0x76')],'type':_0x1bc964[_0x6c31('0xd8')],'ChatOfflineMessageId':_0x287776['id']};});_0x429afa=_0x23b14e[_0x6c31('0x4b')](_0x37aa02=>{var _0x2ec966={'filename':_0x37aa02[_0x6c31('0x32')],'path':path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0xd9'),_0x6c31('0xc4'),_0x6c31('0xda'),_0x6c31('0xdb'),_0x37aa02['basename'])};return _0x2ec966;});if(!_0x1dd008[_0x6c31('0xdc')]){return db[_0x6c31('0xdd')][_0x6c31('0xde')](function(_0x3b252d){return db[_0x6c31('0xdf')][_0x6c31('0xe0')](_0x23b14e,{'transaction':_0x3b252d});});}}})['then'](function(){if(_0x76e5ff){_0x51ec04=_0x76e5ff;return db[_0x6c31('0xce')][_0x6c31('0x72')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x6c31('0xe1'),'raw':!![],'include':[{'model':db[_0x6c31('0xe2')],'as':_0x6c31('0xe2'),'raw':!![]}]}]});}})[_0x6c31('0x2c')](function(_0x1b164b){if(_0x1b164b&&_0x1b164b[_0x6c31('0xe1')]&&_0x1dd008[_0x6c31('0xe3')]&&_0x1dd008['forwardOfflineAddress']){var _0x467a7e=_0x1b164b[_0x6c31('0xe4')]();return respondWithRpcPromise('SendMail',_0x6c31('0xe5'),{'account':_0x467a7e,'message':{'from':util[_0x6c31('0x3e')]('\x22%s\x22\x20<%s>',_0x1b164b[_0x6c31('0x32')],_0x1b164b['email']||_0x1b164b[_0x6c31('0xe1')][_0x6c31('0x63')]),'to':_0x1dd008['forwardOfflineAddress'],'subject':_0x1dd008['offlineMessageSubject'],'html':_0x51ec04[_0x6c31('0x62')],'attachments':_0x429afa}},client9003)[_0x6c31('0x2c')](function(){return _0x51ec04;})[_0x6c31('0x21')](function(_0x2db147){logger['error'](_0x2db147);});}})[_0x6c31('0x2c')](function(){if(_0x1dd008&&_0x1dd008[_0x6c31('0xdc')]&&_0x1dd008[_0x6c31('0xe6')]){var _0x237b14=[];if(_0x27113d[_0x6c31('0x52')]){_0x237b14=_0x27113d['map'](function(_0x330457){return{'name':_0x330457['originalname'],'basename':_0x330457[_0x6c31('0x76')],'type':_0x330457['mimetype'],'ChatOfflineMessageId':_0x76e5ff['id']};});}var _0x4c561f;if(!_[_0x6c31('0x86')](_0x1dd008['subjectOffline'])){var _0x36928a=_[_0x6c31('0x4b')](_0x2350e2[_0x6c31('0x62')],function(_0x46d09f){return _0x46d09f;});var _0x51745d=_[_0x6c31('0xe7')](_0x36928a)[0x0];var _0x58c059=_['mapValues'](_0x51745d,function(_0x35c849){return _0x35c849;});_0x4c561f=_0x58c059[0x1][_0x1dd008[_0x6c31('0xe8')]];}var _0x4b14f5={'from':_0x420c1a[_0x6c31('0xe9')],'firstName':_0x420c1a[_0x6c31('0x39')],'lastName':_0x420c1a[_0x6c31('0x3a')],'mapKey':_0x6c31('0xe9'),'message':{'from':_0x420c1a['email'],'to':_0x1dd008[_0x6c31('0xce')][_0x6c31('0xe9')],'cc':'','subject':_[_0x6c31('0x86')](_0x4c561f)?_0x1dd008[_0x6c31('0xea')]:_0x4c561f,'messageId':'','sentAt':new Date(),'attach':_0x237b14[_0x6c31('0x52')],'attachments':_0x237b14,'originChannel':_0x6c31('0xeb'),'ChatWebsiteId':_0x1dd008['id'],'ChatOfflineMessageId':_0x51ec04['id'],'originTo':_0x1dd008[_0x6c31('0xce')][_0x6c31('0xe9')]},'body':_0x51ec04[_0x6c31('0x62')]};var _0x3c5a3a={'account':{'id':_0x1dd008['MailAccountId']},'body':_0x4b14f5,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x6c31('0xec'),_0x6c31('0xed'),_0x3c5a3a,client9001)['then'](function(){return _0x51ec04;})['catch'](function(_0x4a3e46){logger[_0x6c31('0x1d')](_0x4a3e46);});}return;})[_0x6c31('0x2c')](function(){if(_0x51ec04){return _0x51ec04;}})[_0x6c31('0x2c')](respondWithResult(_0x17e0c2,null))[_0x6c31('0x21')](function(){for(var _0x4b7cc2 of _0x27113d){var _0x4692a2=path[_0x6c31('0x7b')](config['root'],_0x6c31('0xd9'),_0x6c31('0xc4'),_0x6c31('0xda'),'offline-chat',_0x4b7cc2[_0x6c31('0x76')]);fs_extra[_0x6c31('0xee')](_0x4692a2)[_0x6c31('0x21')](function(_0x20e53f){logger[_0x6c31('0x1d')](_0x6c31('0xef'),_0x4692a2,_0x20e53f);});}});};exports[_0x6c31('0xf0')]=function(_0x1773de,_0x156cb3){return db[_0x6c31('0xaa')][_0x6c31('0x60')]({'where':{'id':_0x1773de[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x156cb3,null))[_0x6c31('0x2c')](function(_0x297832){if(_0x297832){return _0x297832[_0x6c31('0xf0')](_0x1773de[_0x6c31('0x62')]['ids'],_[_0x6c31('0xf1')](_0x1773de['body'],[_0x6c31('0x6f'),'id'])||{});}})[_0x6c31('0x2c')](respondWithResult(_0x156cb3,null))[_0x6c31('0x21')](handleError(_0x156cb3,null));};exports[_0x6c31('0xf2')]=function(_0x9b0a07,_0x3d0ccc){var _0x321967={'raw':![],'where':{}};var _0xb5d836={};var _0x48a80d={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x6c31('0x72')]({'where':{'id':_0x9b0a07[_0x6c31('0x5f')]['id']}})['then'](handleEntityNotFound(_0x3d0ccc,null))[_0x6c31('0x2c')](function(_0x29cd7b){if(_0x29cd7b){_0xb5d836['model']=_['keys'](db[_0x6c31('0xaa')][_0x6c31('0x49')]);_0xb5d836[_0x6c31('0x4c')]=_[_0x6c31('0x4d')](_0x9b0a07['query']);_0xb5d836[_0x6c31('0x4e')]=_[_0x6c31('0x4f')](_0xb5d836['model'],_0xb5d836[_0x6c31('0x4c')]);_0x321967[_0x6c31('0x50')]=_[_0x6c31('0x4f')](_0xb5d836[_0x6c31('0x42')],qs['fields'](_0x9b0a07[_0x6c31('0x4c')][_0x6c31('0x51')]));_0x321967[_0x6c31('0x50')]=_0x321967['attributes']['length']?_0x321967[_0x6c31('0x50')]:_0xb5d836[_0x6c31('0x42')];if(!_0x9b0a07[_0x6c31('0x4c')][_0x6c31('0x53')](_0x6c31('0x54'))){_0x321967[_0x6c31('0x27')]=qs[_0x6c31('0x27')](_0x9b0a07[_0x6c31('0x4c')][_0x6c31('0x27')]);_0x321967['offset']=qs[_0x6c31('0x25')](_0x9b0a07[_0x6c31('0x4c')]['offset']);}_0x321967['order']=qs[_0x6c31('0x6c')](_0x9b0a07[_0x6c31('0x4c')][_0x6c31('0x6c')]);_0x321967['where']=qs[_0x6c31('0x4e')](_[_0x6c31('0x6d')](_0x9b0a07[_0x6c31('0x4c')],_0xb5d836[_0x6c31('0x4e')]));_0x321967[_0x6c31('0x57')]['ChatWebsiteId']=_0x29cd7b['id'];if(_0x9b0a07[_0x6c31('0x4c')]['filter']){_0x321967[_0x6c31('0x57')]=_[_0x6c31('0x58')](_0x321967[_0x6c31('0x57')],{'$or':_[_0x6c31('0x4b')](_0x321967[_0x6c31('0x50')],function(_0x5b0b7c){var _0x593790={};_0x593790[_0x5b0b7c]={'$like':'%'+_0x9b0a07[_0x6c31('0x4c')][_0x6c31('0x56')]+'%'};return _0x593790;})});}_0x321967=_['merge']({},_0x321967,_0x9b0a07[_0x6c31('0x59')]);return db['ChatInteraction'][_0x6c31('0x28')]({'where':_0x321967[_0x6c31('0x57')]})['then'](function(_0x29a1fb){_0x48a80d[_0x6c31('0x28')]=_0x29a1fb;if(_0x9b0a07[_0x6c31('0x4c')][_0x6c31('0x5a')]){_0x321967[_0x6c31('0x5b')]=[{'model':db[_0x6c31('0x92')],'as':_0x6c31('0xf3'),'required':![]},{'model':db[_0x6c31('0xb8')],'as':'Owner','attributes':[_0x6c31('0x32'),'fullname',_0x6c31('0xf4')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id','name',_0x6c31('0xf5')],'where':_0x9b0a07[_0x6c31('0x4c')]['tag']?{'id':_0x9b0a07[_0x6c31('0x4c')][_0x6c31('0xf6')]}:undefined,'required':_0x9b0a07['query'][_0x6c31('0xf6')]?!![]:![]}];}return db[_0x6c31('0xaa')][_0x6c31('0x5c')](_0x321967);})[_0x6c31('0x2c')](function(_0x5310fe){_0x48a80d[_0x6c31('0x5d')]=_0x5310fe;return _0x48a80d;});}})[_0x6c31('0x2c')](respondWithFilteredResult(_0x3d0ccc,_0x321967))[_0x6c31('0x21')](handleError(_0x3d0ccc,null));};exports['getSnippet']=function(_0x5addf6,_0x46708b){var _0x1afd83=0x0;var _0xdc17f6=0x0;var _0x5103d9=![];var _0x647956;var _0x30f2ff;return db[_0x6c31('0x48')][_0x6c31('0x60')]({'where':{'id':_0x5addf6[_0x6c31('0x5f')]['id']},'include':[{'model':db[_0x6c31('0x9b')],'as':'Interval','include':[{'model':db['Interval'],'as':_0x6c31('0x9c'),'attributes':['id',_0x6c31('0x9d')]}]}]})[_0x6c31('0x2c')](handleEntityNotFound(_0x46708b,null))[_0x6c31('0x2c')](function(_0x34f841){if(_0x34f841){_0x647956=_0x34f841;return _0x34f841[_0x6c31('0xf7')]({'raw':!![]});}})[_0x6c31('0x2c')](function(_0x1a7843){if(_0x647956){if(_0x1a7843){_0x30f2ff=_0x1a7843;}}return require(_0x6c31('0x7e'))[_0x6c31('0xf8')]();})[_0x6c31('0x2c')](function(_0x318b22){if(_0x318b22){_0xdc17f6=_0x318b22[_0x6c31('0xf9')];_0x5103d9=_0x318b22[_0x6c31('0x7f')];}})[_0x6c31('0x2c')](function(){return db[_0x6c31('0xaa')][_0x6c31('0x28')]({'where':{'closed':![]}});})[_0x6c31('0x2c')](function(_0x244a86){_0x1afd83=_0x244a86;if(_0xdc17f6&&_0x244a86>_0xdc17f6){return db['License']['findOne']({'where':{'id':0x1}})['then'](function(_0xa89bcf){if(_0xa89bcf){_0xa89bcf['increment'](_0x6c31('0xfa'));}});}})[_0x6c31('0x2c')](function(){var _0x25389b=_0x647956[_0x6c31('0x9b')];var _0x5c0db0=_0x647956[_0x6c31('0x9f')]||undefined;return _0x25389b?_0x25389b['ifTime'](_0x5c0db0):!![];})[_0x6c31('0x2c')](function(_0xeaa392){var _0x2db671=fs['readFileSync'](path[_0x6c31('0x7b')](config[_0x6c31('0x7c')],_0x6c31('0xfb')),'utf8');var _0x116da9=new url['URL'](_0x647956[_0x6c31('0xfc')])[_0x6c31('0xfd')];var _0x16cda6=_0x6c31('0xfe');var _0x3bc024=![];var _0x2942bb={'chatVersion':_0x16cda6,'chatWebsiteAddressOrigin':_0x116da9,'remote':_0x647956[_0x6c31('0xff')],'query':querystring[_0x6c31('0x1c')](_['merge'](_0x647956['get']({'plain':!![]}),{'customerIp':_0x5addf6[_0x6c31('0xa8')][_0x6c31('0x37')]||_0x5addf6[_0x6c31('0xa8')][_0x6c31('0x100')]||_0x5addf6[_0x6c31('0x101')][_0x6c31('0x102')]||_0x5addf6['ip'],'referer':_0x5addf6[_0x6c31('0xa8')]['referer'],'openedInteractions':_0x1afd83,'maxInteractions':_0xdc17f6,'virtual':_0x5103d9[_0x6c31('0xf9')],'online':_0xeaa392,'custom':_0x5103d9}))['replace'](/'/g,'\x5c\x27')};_0x46708b[_0x6c31('0x33')](ejs[_0x6c31('0xd3')](Mustache[_0x6c31('0xd3')](_0x2db671,_0x2942bb),{'proactiveActions':_0x30f2ff,'alignment':_0x647956[_0x6c31('0x103')],'verticalAlignment':_0x647956['verticalAlignment'],'div_color':_0x647956[_0x6c31('0xf5')],'labelText':_0x647956[_0x6c31('0x104')],'text_color':_0x647956[_0x6c31('0x105')],'text_button_color':_0x647956[_0x6c31('0x106')],'button_color':_0x647956['color_button'],'background_color':_0x647956[_0x6c31('0x107')],'hideWhenOffline':_0x647956['hideWhenOffline'],'intervalId':_0x647956[_0x6c31('0x108')],'isDevelopment':_0x3bc024,'chatVersion':_0x16cda6}));})[_0x6c31('0x21')](handleError(_0x46708b,null));};exports['addApplications']=function(_0x327075,_0x406528){var _0x32bd72=_0x327075[_0x6c31('0x5f')]['id'];var _0x2e0571=_0x327075[_0x6c31('0x62')];var _0x4e6ad9=0xc8;var _0x330304=null;return db['sequelize'][_0x6c31('0xde')]({'isolationLevel':db[_0x6c31('0xdd')][_0x6c31('0x109')][_0x6c31('0x10a')][_0x6c31('0x10b')]},function(_0x500b63){return db[_0x6c31('0x48')][_0x6c31('0x72')]({'where':{'id':_0x32bd72},'transaction':_0x500b63})[_0x6c31('0x2c')](function(_0x33fefa){if(_0x33fefa){return db[_0x6c31('0x10c')][_0x6c31('0x2b')]({'where':{'ChatWebsiteId':_0x32bd72},'transaction':_0x500b63})[_0x6c31('0x2c')](function(){var _0x1f83f7=_[_0x6c31('0x4b')](_0x2e0571,function(_0x56b63e){_0x56b63e[_0x6c31('0x69')]=_0x32bd72;return _0x56b63e;});return db['ChatApplication'][_0x6c31('0xe0')](_0x1f83f7,{'transaction':_0x500b63});});}else{_0x4e6ad9=0x194;_0x330304=[];}});})[_0x6c31('0x2c')](function(){if(_0x4e6ad9!==0x194){return db[_0x6c31('0x10c')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x32bd72},'order':_0x6c31('0x10d')})['then'](function(_0x3543ba){_0x330304=_0x3543ba;});}})[_0x6c31('0x21')](function(_0x10d509){_0x4e6ad9=0x1f4;logger[_0x6c31('0x1d')](_0x10d509['stack']);if(_0x10d509['name']){delete _0x10d509[_0x6c31('0x32')];}_0x330304=_0x10d509;})[_0x6c31('0x10e')](function(){if(_0x330304===null){_0x406528['sendStatus'](_0x4e6ad9);}else{if(_0x4e6ad9===0x1f4){_0x406528[_0x6c31('0x22')](_0x4e6ad9)[_0x6c31('0x33')](_0x330304);}else{_0x406528[_0x6c31('0x22')](_0x4e6ad9)['json'](_0x330304);}}});};exports[_0x6c31('0x10f')]=function(_0x1539de,_0xa5c55e){var _0x434896={};var _0x18fff7={};var _0x17102a;var _0x3b0a4d;return db[_0x6c31('0x48')][_0x6c31('0x72')]({'where':{'id':_0x1539de[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0xa5c55e,null))['then'](function(_0x43a2cf){if(_0x43a2cf){_0x17102a=_0x43a2cf;_0x18fff7[_0x6c31('0x42')]=_[_0x6c31('0x4d')](db[_0x6c31('0x10c')][_0x6c31('0x49')]);_0x18fff7[_0x6c31('0x4c')]=_[_0x6c31('0x4d')](_0x1539de[_0x6c31('0x4c')]);_0x18fff7['filters']=_[_0x6c31('0x4f')](_0x18fff7[_0x6c31('0x42')],_0x18fff7[_0x6c31('0x4c')]);_0x434896[_0x6c31('0x50')]=_[_0x6c31('0x4f')](_0x18fff7[_0x6c31('0x42')],qs[_0x6c31('0x51')](_0x1539de[_0x6c31('0x4c')][_0x6c31('0x51')]));_0x434896[_0x6c31('0x50')]=_0x434896['attributes'][_0x6c31('0x52')]?_0x434896[_0x6c31('0x50')]:_0x18fff7[_0x6c31('0x42')];_0x434896[_0x6c31('0x55')]=qs[_0x6c31('0x6c')](_0x1539de['query'][_0x6c31('0x6c')]);_0x434896['where']=qs['filters'](_[_0x6c31('0x6d')](_0x1539de[_0x6c31('0x4c')],_0x18fff7[_0x6c31('0x4e')]));if(_0x1539de[_0x6c31('0x4c')][_0x6c31('0x56')]){_0x434896[_0x6c31('0x57')]=_[_0x6c31('0x58')](_0x434896['where'],{'$or':_[_0x6c31('0x4b')](_0x434896[_0x6c31('0x50')],function(_0x3fa4f2){var _0x3f0fa8={};_0x3f0fa8[_0x3fa4f2]={'$like':'%'+_0x1539de['query'][_0x6c31('0x56')]+'%'};return _0x3f0fa8;})});}_0x434896=_[_0x6c31('0x58')]({},_0x434896,_0x1539de[_0x6c31('0x59')]);return _0x17102a[_0x6c31('0x10f')](_0x434896);}})[_0x6c31('0x2c')](function(_0xc77f76){if(_0xc77f76){_0x3b0a4d=_0xc77f76[_0x6c31('0x52')];if(!_0x1539de['query'][_0x6c31('0x53')](_0x6c31('0x54'))){_0x434896[_0x6c31('0x27')]=qs[_0x6c31('0x27')](_0x1539de[_0x6c31('0x4c')][_0x6c31('0x27')]);_0x434896[_0x6c31('0x25')]=qs[_0x6c31('0x25')](_0x1539de['query'][_0x6c31('0x25')]);}return _0x17102a[_0x6c31('0x10f')](_0x434896);}})['then'](function(_0x278fdd){if(_0x278fdd){return _0x278fdd?{'count':_0x3b0a4d,'rows':_0x278fdd}:null;}})[_0x6c31('0x2c')](respondWithResult(_0xa5c55e,null))[_0x6c31('0x21')](handleError(_0xa5c55e,null));};exports[_0x6c31('0x110')]=function(_0x55a738,_0x2ba1d7){return db[_0x6c31('0x111')]['find']({'where':{'id':_0x55a738[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x2ba1d7,null))['then'](function(_0x31ebe4){if(_0x31ebe4){return _0x31ebe4[_0x6c31('0x110')](_0x55a738[_0x6c31('0x62')][_0x6c31('0x6f')],_[_0x6c31('0xf1')](_0x55a738[_0x6c31('0x62')],[_0x6c31('0x6f'),'id'])||{});}})[_0x6c31('0x2c')](respondWithResult(_0x2ba1d7,null))[_0x6c31('0x21')](handleError(_0x2ba1d7,null));};exports[_0x6c31('0xf7')]=function(_0x39c210,_0x33cbff){var _0x564245={};var _0x3ca014={};var _0x7de392;var _0x1071ed;return db[_0x6c31('0x48')][_0x6c31('0x72')]({'where':{'id':_0x39c210[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x33cbff,null))['then'](function(_0x35823c){if(_0x35823c){_0x7de392=_0x35823c;_0x3ca014['model']=_[_0x6c31('0x4d')](db['ChatProactiveAction'][_0x6c31('0x49')]);_0x3ca014['query']=_['keys'](_0x39c210[_0x6c31('0x4c')]);_0x3ca014['filters']=_[_0x6c31('0x4f')](_0x3ca014[_0x6c31('0x42')],_0x3ca014[_0x6c31('0x4c')]);_0x564245[_0x6c31('0x50')]=_[_0x6c31('0x4f')](_0x3ca014[_0x6c31('0x42')],qs['fields'](_0x39c210[_0x6c31('0x4c')][_0x6c31('0x51')]));_0x564245['attributes']=_0x564245['attributes'][_0x6c31('0x52')]?_0x564245[_0x6c31('0x50')]:_0x3ca014['model'];_0x564245[_0x6c31('0x55')]=qs[_0x6c31('0x6c')](_0x39c210['query']['sort']);_0x564245['where']=qs[_0x6c31('0x4e')](_['pick'](_0x39c210[_0x6c31('0x4c')],_0x3ca014[_0x6c31('0x4e')]));if(_0x39c210[_0x6c31('0x4c')][_0x6c31('0x56')]){_0x564245['where']=_[_0x6c31('0x58')](_0x564245['where'],{'$or':_[_0x6c31('0x4b')](_0x564245[_0x6c31('0x50')],function(_0x42315d){var _0x45bb20={};_0x45bb20[_0x42315d]={'$like':'%'+_0x39c210['query']['filter']+'%'};return _0x45bb20;})});}_0x564245=_['merge']({},_0x564245,_0x39c210[_0x6c31('0x59')]);return _0x7de392['getProactiveActions'](_0x564245);}})[_0x6c31('0x2c')](function(_0x19952c){if(_0x19952c){_0x1071ed=_0x19952c[_0x6c31('0x52')];if(!_0x39c210[_0x6c31('0x4c')][_0x6c31('0x53')](_0x6c31('0x54'))){_0x564245[_0x6c31('0x27')]=qs[_0x6c31('0x27')](_0x39c210[_0x6c31('0x4c')][_0x6c31('0x27')]);_0x564245[_0x6c31('0x25')]=qs[_0x6c31('0x25')](_0x39c210[_0x6c31('0x4c')]['offset']);}return _0x7de392['getProactiveActions'](_0x564245);}})[_0x6c31('0x2c')](function(_0xf45051){if(_0xf45051){return _0xf45051?{'count':_0x1071ed,'rows':_0xf45051}:null;}})[_0x6c31('0x2c')](respondWithResult(_0x33cbff,null))[_0x6c31('0x21')](handleError(_0x33cbff,null));};exports[_0x6c31('0x112')]=function(_0x5fc9c9,_0x4ed8ff){var _0x5deb7e=_0x5fc9c9[_0x6c31('0x4c')][_0x6c31('0x113')]===_0x6c31('0x114')?_0x6c31('0x115'):_0x6c31('0x116');return db[_0x6c31('0x48')][_0x6c31('0x60')]({'attributes':['id',_0x5deb7e],'where':{'id':_0x5fc9c9['params']['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x4ed8ff,null))[_0x6c31('0x2c')](function(_0x24478c){if(_0x24478c){var _0x3d75d1=_0x24478c[_0x5deb7e];var _0x3b7915=_0x3d75d1&&_0x3d75d1[_0x6c31('0x117')]?_0x3d75d1[_0x6c31('0x117')]:[];_0x4ed8ff[_0x6c31('0x33')]({'fromKey':_['isNil'](_0x3d75d1[_0x6c31('0x118')])?undefined:_0x3d75d1[_0x6c31('0x118')],'count':_0x3b7915[_0x6c31('0x52')],'rows':_0x3b7915});}})[_0x6c31('0x21')](handleError(_0x4ed8ff,null));};exports['getOfflineMessages']=function(_0x222650,_0x58a872){var _0xf3a787={'raw':![],'where':{}};var _0x2c31c4={};var _0x76ec0d={'count':0x0,'rows':[]};return db[_0x6c31('0x48')][_0x6c31('0x72')]({'where':{'id':_0x222650[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x58a872,null))[_0x6c31('0x2c')](function(_0x4fc062){if(_0x4fc062){_0x2c31c4[_0x6c31('0x42')]=_['keys'](db[_0x6c31('0xd6')]['rawAttributes']);_0x2c31c4[_0x6c31('0x4c')]=_['keys'](_0x222650['query']);_0x2c31c4['filters']=_[_0x6c31('0x4f')](_0x2c31c4[_0x6c31('0x42')],_0x2c31c4[_0x6c31('0x4c')]);_0xf3a787['attributes']=_[_0x6c31('0x4f')](_0x2c31c4['model'],qs[_0x6c31('0x51')](_0x222650[_0x6c31('0x4c')][_0x6c31('0x51')]));_0xf3a787[_0x6c31('0x50')]=_0xf3a787[_0x6c31('0x50')][_0x6c31('0x52')]?_0xf3a787['attributes']:_0x2c31c4[_0x6c31('0x42')];if(!_0x222650[_0x6c31('0x4c')][_0x6c31('0x53')](_0x6c31('0x54'))){_0xf3a787['limit']=qs[_0x6c31('0x27')](_0x222650['query'][_0x6c31('0x27')]);_0xf3a787[_0x6c31('0x25')]=qs[_0x6c31('0x25')](_0x222650[_0x6c31('0x4c')]['offset']);}_0xf3a787[_0x6c31('0x55')]=qs[_0x6c31('0x6c')](_0x222650[_0x6c31('0x4c')]['sort']);_0xf3a787[_0x6c31('0x57')]=qs[_0x6c31('0x4e')](_[_0x6c31('0x6d')](_0x222650[_0x6c31('0x4c')],_0x2c31c4[_0x6c31('0x4e')]));_0xf3a787[_0x6c31('0x57')]['ChatWebsiteId']=_0x4fc062['id'];if(_0x222650[_0x6c31('0x4c')][_0x6c31('0x56')]){_0xf3a787[_0x6c31('0x57')]=_[_0x6c31('0x58')](_0xf3a787[_0x6c31('0x57')],{'$or':_[_0x6c31('0x4b')](_0xf3a787[_0x6c31('0x50')],function(_0x3d0778){var _0x52c83e={};_0x52c83e[_0x3d0778]={'$like':'%'+_0x222650['query'][_0x6c31('0x56')]+'%'};return _0x52c83e;})});}_0xf3a787=_[_0x6c31('0x58')]({},_0xf3a787,_0x222650[_0x6c31('0x59')]);return db[_0x6c31('0xd6')][_0x6c31('0x28')]({'where':_0xf3a787['where']})[_0x6c31('0x2c')](function(_0x3e6cd5){_0x76ec0d['count']=_0x3e6cd5;if(_0x222650[_0x6c31('0x4c')][_0x6c31('0x5a')]){_0xf3a787[_0x6c31('0x5b')]=[{'all':!![]}];}else{_0xf3a787['include']=[{'model':db['CmContact'],'as':_0x6c31('0xf3'),'required':![]},{'model':db[_0x6c31('0xdf')],'as':_0x6c31('0x119'),'required':![]}];}return db[_0x6c31('0xd6')][_0x6c31('0x5c')](_0xf3a787);})[_0x6c31('0x2c')](function(_0x4e1c23){_0x76ec0d[_0x6c31('0x5d')]=_0x4e1c23;return _0x76ec0d;});}})[_0x6c31('0x2c')](respondWithFilteredResult(_0x58a872,_0xf3a787))[_0x6c31('0x21')](handleError(_0x58a872,null));};exports[_0x6c31('0x11a')]=function(_0x5ef126,_0x43c3dc){return db[_0x6c31('0x48')]['find']({'where':{'id':_0x5ef126[_0x6c31('0x5f')]['id']}})['then'](handleEntityNotFound(_0x43c3dc,null))[_0x6c31('0x2c')](function(_0x4bc966){if(_0x4bc966){return _0x4bc966[_0x6c31('0x11a')](_0x5ef126[_0x6c31('0x62')][_0x6c31('0x6f')],_[_0x6c31('0xf1')](_0x5ef126[_0x6c31('0x62')],['ids','id'])||{})[_0x6c31('0xd0')](function(_0x55a03f){for(var _0x119885=0x0;_0x119885<_0x5ef126[_0x6c31('0x62')][_0x6c31('0x6f')][_0x6c31('0x52')];_0x119885+=0x1){socket['emit'](_0x6c31('0x11b'),{'UserId':Number(_0x5ef126[_0x6c31('0x62')][_0x6c31('0x6f')][_0x119885]),'ChatWebsiteId':Number(_0x5ef126[_0x6c31('0x5f')]['id'])});}return _0x55a03f;});}})[_0x6c31('0x2c')](respondWithResult(_0x43c3dc,null))[_0x6c31('0x21')](handleError(_0x43c3dc,null));};exports['removeAgents']=function(_0x3e4e69,_0x481606){return db[_0x6c31('0x48')]['find']({'where':{'id':_0x3e4e69[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x481606,null))[_0x6c31('0x2c')](function(_0x4807db){if(_0x4807db){return _0x4807db['removeAgents'](_0x3e4e69[_0x6c31('0x4c')]['ids'])['then'](function(){if(_['isArray'](_0x3e4e69[_0x6c31('0x4c')][_0x6c31('0x6f')])){for(var _0x124bbc=0x0;_0x124bbc<_0x3e4e69[_0x6c31('0x4c')][_0x6c31('0x6f')][_0x6c31('0x52')];_0x124bbc+=0x1){socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x3e4e69[_0x6c31('0x4c')][_0x6c31('0x6f')][_0x124bbc]),'ChatWebsiteId':Number(_0x3e4e69[_0x6c31('0x5f')]['id'])});}}else{socket[_0x6c31('0x11c')]('userChatWebsite:remove',{'UserId':Number(_0x3e4e69[_0x6c31('0x4c')][_0x6c31('0x6f')]),'ChatWebsiteId':Number(_0x3e4e69[_0x6c31('0x5f')]['id'])});}});}})[_0x6c31('0x2c')](respondWithStatusCode(_0x481606,null))[_0x6c31('0x21')](handleError(_0x481606,null));};exports[_0x6c31('0x11d')]=function(_0x40a492,_0x1726ab){var _0xd9d728={};var _0x5b4206={};var _0x22a9d4;var _0x2c35a6;return db[_0x6c31('0x48')][_0x6c31('0x72')]({'where':{'id':_0x40a492[_0x6c31('0x5f')]['id']}})[_0x6c31('0x2c')](handleEntityNotFound(_0x1726ab,null))[_0x6c31('0x2c')](function(_0x485fc1){if(_0x485fc1){_0x22a9d4=_0x485fc1;_0x5b4206[_0x6c31('0x42')]=_[_0x6c31('0x4d')](db[_0x6c31('0xb8')][_0x6c31('0x49')]);_0x5b4206[_0x6c31('0x4c')]=_[_0x6c31('0x4d')](_0x40a492[_0x6c31('0x4c')]);_0x5b4206[_0x6c31('0x4e')]=_[_0x6c31('0x4f')](_0x5b4206[_0x6c31('0x42')],_0x5b4206[_0x6c31('0x4c')]);_0xd9d728[_0x6c31('0x50')]=_[_0x6c31('0x4f')](_0x5b4206[_0x6c31('0x42')],qs['fields'](_0x40a492[_0x6c31('0x4c')][_0x6c31('0x51')]));_0xd9d728[_0x6c31('0x50')]=_0xd9d728[_0x6c31('0x50')][_0x6c31('0x52')]?_0xd9d728[_0x6c31('0x50')]:_0x5b4206['model'];_0xd9d728['order']=qs[_0x6c31('0x6c')](_0x40a492['query'][_0x6c31('0x6c')]);_0xd9d728[_0x6c31('0x57')]=qs[_0x6c31('0x4e')](_[_0x6c31('0x6d')](_0x40a492[_0x6c31('0x4c')],_0x5b4206[_0x6c31('0x4e')]));if(_0x40a492[_0x6c31('0x4c')][_0x6c31('0x56')]){_0xd9d728[_0x6c31('0x57')]=_['merge'](_0xd9d728['where'],{'$or':_[_0x6c31('0x4b')](_0xd9d728[_0x6c31('0x50')],function(_0x979368){var _0x4e6020={};_0x4e6020[_0x979368]={'$like':'%'+_0x40a492[_0x6c31('0x4c')][_0x6c31('0x56')]+'%'};return _0x4e6020;})});}_0xd9d728=_[_0x6c31('0x58')]({},_0xd9d728,_0x40a492['options']);return _0x22a9d4[_0x6c31('0x11d')](_0xd9d728);}})[_0x6c31('0x2c')](function(_0x4274d8){if(_0x4274d8){_0x2c35a6=_0x4274d8['length'];if(!_0x40a492['query'][_0x6c31('0x53')](_0x6c31('0x54'))){_0xd9d728[_0x6c31('0x27')]=qs[_0x6c31('0x27')](_0x40a492[_0x6c31('0x4c')][_0x6c31('0x27')]);_0xd9d728[_0x6c31('0x25')]=qs[_0x6c31('0x25')](_0x40a492[_0x6c31('0x4c')][_0x6c31('0x25')]);}return _0x22a9d4[_0x6c31('0x11d')](_0xd9d728);}})['then'](function(_0x223f39){if(_0x223f39){return _0x223f39?{'count':_0x2c35a6,'rows':_0x223f39}:null;}})[_0x6c31('0x2c')](respondWithResult(_0x1726ab,null))[_0x6c31('0x21')](handleError(_0x1726ab,null));};
\ No newline at end of file
index 70597ad..9ee0b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3ea=['remove','emit','hook','events','../../mysqldb','ChatWebsite','save'];(function(_0x4de586,_0x183427){var _0x46baf5=function(_0x1157f0){while(--_0x1157f0){_0x4de586['push'](_0x4de586['shift']());}};_0x46baf5(++_0x183427);}(_0xb3ea,0x10d));var _0xab3e=function(_0x13769a,_0x177a83){_0x13769a=_0x13769a-0x0;var _0x2281c2=_0xb3ea[_0x13769a];return _0x2281c2;};'use strict';var EventEmitter=require(_0xab3e('0x0'));var ChatWebsite=require(_0xab3e('0x1'))['db'][_0xab3e('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xab3e('0x3'),'afterUpdate':'update','afterDestroy':_0xab3e('0x4')};function emitEvent(_0x5d862a){return function(_0x30e8e6,_0x196c45,_0x1f0c0f){ChatWebsiteEvents[_0xab3e('0x5')](_0x5d862a+':'+_0x30e8e6['id'],_0x30e8e6);ChatWebsiteEvents[_0xab3e('0x5')](_0x5d862a,_0x30e8e6);_0x1f0c0f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0xab3e('0x6')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0x3e25=['hook','exports','events','../../mysqldb','ChatWebsite','save','remove','emit','hasOwnProperty'];(function(_0x4091ed,_0x57f0fa){var _0x4bfa33=function(_0x380717){while(--_0x380717){_0x4091ed['push'](_0x4091ed['shift']());}};_0x4bfa33(++_0x57f0fa);}(_0x3e25,0x14f));var _0x53e2=function(_0x78740f,_0x2ec83d){_0x78740f=_0x78740f-0x0;var _0x5b2774=_0x3e25[_0x78740f];return _0x5b2774;};'use strict';var EventEmitter=require(_0x53e2('0x0'));var ChatWebsite=require(_0x53e2('0x1'))['db'][_0x53e2('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x53e2('0x3'),'afterUpdate':'update','afterDestroy':_0x53e2('0x4')};function emitEvent(_0x54366b){return function(_0x36545f,_0x2e0130,_0x14845f){ChatWebsiteEvents[_0x53e2('0x5')](_0x54366b+':'+_0x36545f['id'],_0x36545f);ChatWebsiteEvents[_0x53e2('0x5')](_0x54366b,_0x36545f);_0x14845f(null);};}for(var e in events){if(events[_0x53e2('0x6')](e)){var event=events[e];ChatWebsite[_0x53e2('0x7')](e,emitEvent(event));}}module[_0x53e2('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
index 820cc58..bbe32fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8acc=['ChatWebsite','chat_websites','lodash','util','api','rimraf','../../config/environment','./chatWebsite.attributes','exports','define'];(function(_0x282f78,_0x43b313){var _0x50f24c=function(_0x5e439b){while(--_0x5e439b){_0x282f78['push'](_0x282f78['shift']());}};_0x50f24c(++_0x43b313);}(_0x8acc,0x188));var _0xc8ac=function(_0x4af269,_0x5c6903){_0x4af269=_0x4af269-0x0;var _0x4dbee8=_0x8acc[_0x4af269];return _0x4dbee8;};'use strict';var _=require(_0xc8ac('0x0'));var util=require(_0xc8ac('0x1'));var logger=require('../../config/logger')(_0xc8ac('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc8ac('0x3'));var config=require(_0xc8ac('0x4'));var attributes=require(_0xc8ac('0x5'));module[_0xc8ac('0x6')]=function(_0x2a86db,_0x1b53ce){return _0x2a86db[_0xc8ac('0x7')](_0xc8ac('0x8'),attributes,{'tableName':_0xc8ac('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7771=['lodash','util','moment','bluebird','request-promise','path','../../config/environment','./chatWebsite.attributes','ChatWebsite','chat_websites'];(function(_0x2c5784,_0x5e1e63){var _0x1d1a63=function(_0x475517){while(--_0x475517){_0x2c5784['push'](_0x2c5784['shift']());}};_0x1d1a63(++_0x5e1e63);}(_0x7771,0x1b8));var _0x1777=function(_0x51ab33,_0x71a8a8){_0x51ab33=_0x51ab33-0x0;var _0x5e1298=_0x7771[_0x51ab33];return _0x5e1298;};'use strict';var _=require(_0x1777('0x0'));var util=require(_0x1777('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1777('0x2'));var BPromise=require(_0x1777('0x3'));var rp=require(_0x1777('0x4'));var fs=require('fs');var path=require(_0x1777('0x5'));var rimraf=require('rimraf');var config=require(_0x1777('0x6'));var attributes=require(_0x1777('0x7'));module['exports']=function(_0x3a9551,_0x461cfe){return _0x3a9551['define'](_0x1777('0x8'),attributes,{'tableName':_0x1777('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 33b8a7d..ad02bf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fba=['client','http','redis','defaults','localhost','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x2daaf9,_0x54e03c){var _0x778e37=function(_0x3630b4){while(--_0x3630b4){_0x2daaf9['push'](_0x2daaf9['shift']());}};_0x778e37(++_0x54e03c);}(_0x9fba,0xce));var _0xa9fb=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0x9fba[_0x15c421];return _0x5e5ed5;};'use strict';var _=require(_0xa9fb('0x0'));var util=require('util');var moment=require(_0xa9fb('0x1'));var BPromise=require(_0xa9fb('0x2'));var rs=require(_0xa9fb('0x3'));var fs=require('fs');var Redis=require(_0xa9fb('0x4'));var db=require(_0xa9fb('0x5'))['db'];var utils=require(_0xa9fb('0x6'));var logger=require(_0xa9fb('0x7'))('rpc');var config=require(_0xa9fb('0x8'));var jayson=require(_0xa9fb('0x9'));var client=jayson[_0xa9fb('0xa')][_0xa9fb('0xb')]({'port':0x232a});config[_0xa9fb('0xc')]=_[_0xa9fb('0xd')](config[_0xa9fb('0xc')],{'host':_0xa9fb('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa9fb('0xc')]));require('./chatWebsite.socket')[_0xa9fb('0xf')](socket);function respondWithRpcPromise(_0x25f679,_0x4a3ce0,_0x2e737d){return new BPromise(function(_0x4580ef,_0x4ce7f8){return client[_0xa9fb('0x10')](_0x25f679,_0x2e737d)[_0xa9fb('0x11')](function(_0x36676e){logger[_0xa9fb('0x12')](_0xa9fb('0x13'),_0x4a3ce0,_0xa9fb('0x14'));logger['debug'](_0xa9fb('0x15'),_0x4a3ce0,_0xa9fb('0x14'),JSON[_0xa9fb('0x16')](_0x36676e));if(_0x36676e[_0xa9fb('0x17')]){if(_0x36676e[_0xa9fb('0x17')]['code']===0x1f4){logger[_0xa9fb('0x17')](_0xa9fb('0x13'),_0x4a3ce0,_0x36676e[_0xa9fb('0x17')][_0xa9fb('0x18')]);return _0x4ce7f8(_0x36676e['error'][_0xa9fb('0x18')]);}logger[_0xa9fb('0x17')](_0xa9fb('0x13'),_0x4a3ce0,_0x36676e[_0xa9fb('0x17')][_0xa9fb('0x18')]);return _0x4580ef(_0x36676e[_0xa9fb('0x17')][_0xa9fb('0x18')]);}else{logger['info'](_0xa9fb('0x13'),_0x4a3ce0,_0xa9fb('0x14'));_0x4580ef(_0x36676e[_0xa9fb('0x19')][_0xa9fb('0x18')]);}})[_0xa9fb('0x1a')](function(_0x4fd3fe){logger[_0xa9fb('0x17')](_0xa9fb('0x13'),_0x4a3ce0,_0x4fd3fe);_0x4ce7f8(_0x4fd3fe);});});}
\ No newline at end of file
+var _0xfd3d=['../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x460666,_0x24bfa0){var _0x555cbf=function(_0x3b4743){while(--_0x3b4743){_0x460666['push'](_0x460666['shift']());}};_0x555cbf(++_0x24bfa0);}(_0xfd3d,0xd2));var _0xdfd3=function(_0x17d78f,_0x3d4bae){_0x17d78f=_0x17d78f-0x0;var _0x30cf70=_0xfd3d[_0x17d78f];return _0x30cf70;};'use strict';var _=require(_0xdfd3('0x0'));var util=require('util');var moment=require(_0xdfd3('0x1'));var BPromise=require(_0xdfd3('0x2'));var rs=require(_0xdfd3('0x3'));var fs=require('fs');var Redis=require(_0xdfd3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xdfd3('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xdfd3('0x6'));var jayson=require(_0xdfd3('0x7'));var client=jayson[_0xdfd3('0x8')][_0xdfd3('0x9')]({'port':0x232a});config[_0xdfd3('0xa')]=_[_0xdfd3('0xb')](config['redis'],{'host':_0xdfd3('0xc'),'port':0x18eb});var socket=require(_0xdfd3('0xd'))(new Redis(config[_0xdfd3('0xa')]));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x3b3134,_0x202095,_0x58b351){return new BPromise(function(_0x51a922,_0x380baa){return client[_0xdfd3('0xe')](_0x3b3134,_0x58b351)[_0xdfd3('0xf')](function(_0x1c3897){logger[_0xdfd3('0x10')](_0xdfd3('0x11'),_0x202095,_0xdfd3('0x12'));logger[_0xdfd3('0x13')](_0xdfd3('0x14'),_0x202095,_0xdfd3('0x12'),JSON[_0xdfd3('0x15')](_0x1c3897));if(_0x1c3897['error']){if(_0x1c3897[_0xdfd3('0x16')][_0xdfd3('0x17')]===0x1f4){logger[_0xdfd3('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x202095,_0x1c3897['error'][_0xdfd3('0x18')]);return _0x380baa(_0x1c3897[_0xdfd3('0x16')][_0xdfd3('0x18')]);}logger['error'](_0xdfd3('0x11'),_0x202095,_0x1c3897['error'][_0xdfd3('0x18')]);return _0x51a922(_0x1c3897[_0xdfd3('0x16')][_0xdfd3('0x18')]);}else{logger[_0xdfd3('0x10')]('ChatWebsite,\x20%s,\x20%s',_0x202095,_0xdfd3('0x12'));_0x51a922(_0x1c3897[_0xdfd3('0x19')][_0xdfd3('0x18')]);}})[_0xdfd3('0x1a')](function(_0x5d4976){logger[_0xdfd3('0x16')](_0xdfd3('0x11'),_0x202095,_0x5d4976);_0x380baa(_0x5d4976);});});}
\ No newline at end of file
index 0de0cc3..2d9a99c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a66=['remove','update','register','length','save'];(function(_0x2b6ab6,_0x5a21b0){var _0x1cda87=function(_0x3c64f2){while(--_0x3c64f2){_0x2b6ab6['push'](_0x2b6ab6['shift']());}};_0x1cda87(++_0x5a21b0);}(_0x0a66,0xd6));var _0x60a6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0a66[_0x20a584];return _0x4b41a8;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=[_0x60a6('0x0'),_0x60a6('0x1'),_0x60a6('0x2')];function createListener(_0x435f75,_0x28bc5d){return function(_0x580b55){_0x28bc5d['emit'](_0x435f75,_0x580b55);};}function removeListener(_0x36fab2,_0x3a8adf){return function(){ChatWebsiteEvents['removeListener'](_0x36fab2,_0x3a8adf);};}exports[_0x60a6('0x3')]=function(_0x51f17e){for(var _0x3926a8=0x0,_0x517335=events[_0x60a6('0x4')];_0x3926a8<_0x517335;_0x3926a8++){var _0x4b5825=events[_0x3926a8];var _0x53f817=createListener('chatWebsite:'+_0x4b5825,_0x51f17e);ChatWebsiteEvents['on'](_0x4b5825,_0x53f817);}};
\ No newline at end of file
+var _0xa6f6=['length','./chatWebsite.events','save','remove','removeListener'];(function(_0x2c7784,_0x5aeb33){var _0x204784=function(_0x56cbf5){while(--_0x56cbf5){_0x2c7784['push'](_0x2c7784['shift']());}};_0x204784(++_0x5aeb33);}(_0xa6f6,0x16e));var _0x6a6f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xa6f6[_0x57b54c];return _0x59cc19;};'use strict';var ChatWebsiteEvents=require(_0x6a6f('0x0'));var events=[_0x6a6f('0x1'),_0x6a6f('0x2'),'update'];function createListener(_0x29df27,_0x2fb640){return function(_0x26f4ac){_0x2fb640['emit'](_0x29df27,_0x26f4ac);};}function removeListener(_0x240163,_0x411707){return function(){ChatWebsiteEvents[_0x6a6f('0x3')](_0x240163,_0x411707);};}exports['register']=function(_0x1a6b34){for(var _0x338154=0x0,_0x5c380a=events[_0x6a6f('0x4')];_0x338154<_0x5c380a;_0x338154++){var _0x303296=events[_0x338154];var _0x532c19=createListener('chatWebsite:'+_0x303296,_0x1a6b34);ChatWebsiteEvents['on'](_0x303296,_0x532c19);}};
\ No newline at end of file
index a920744..2d2f7e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa637=['addInteraction','addApplications','/:id/proactive_actions','addProactiveActions','addAgents','put','update','delete','destroy','removeAnswers','removeAgents','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','getSystemAvatar','/:id/interactions','getInteractions','getSnippet','/:id/applications','getApplications','/:id/fields','getFields','/:id/offline_messages','/:id/users','getAgents','create','post','addDisposition','diskStorage','join','root','now','file','%s-%s','originalname','single','addAvatar','server/files/images/avatars/','format','/:id/customer_avatar','/:id/system_avatar','addSystemAvatar','server/files','attachments','ensureDir','extname','/:id/offline','any','offline'];(function(_0x38a410,_0x22bbb0){var _0x33e72f=function(_0xf100eb){while(--_0xf100eb){_0x38a410['push'](_0x38a410['shift']());}};_0x33e72f(++_0x22bbb0);}(_0xa637,0xde));var _0x7a63=function(_0x339c87,_0x1d3a50){_0x339c87=_0x339c87-0x0;var _0x4182c0=_0xa637[_0x339c87];return _0x4182c0;};'use strict';var multer=require('multer');var util=require(_0x7a63('0x0'));var path=require('path');var timeout=require(_0x7a63('0x1'));var express=require('express');var router=express[_0x7a63('0x2')]();var fs_extra=require(_0x7a63('0x3'));var auth=require(_0x7a63('0x4'));var interaction=require(_0x7a63('0x5'));var config=require(_0x7a63('0x6'));var controller=require(_0x7a63('0x7'));router[_0x7a63('0x8')]('/',auth['isAuthenticated'](),controller[_0x7a63('0x9')]);router['get'](_0x7a63('0xa'),auth[_0x7a63('0xb')](),controller[_0x7a63('0xc')]);router[_0x7a63('0x8')](_0x7a63('0xd'),auth[_0x7a63('0xb')](),controller[_0x7a63('0xe')]);router[_0x7a63('0x8')](_0x7a63('0xf'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x10')]);router[_0x7a63('0x8')](_0x7a63('0x11'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x12')]);router['get'](_0x7a63('0x13'),controller[_0x7a63('0x14')]);router[_0x7a63('0x8')](_0x7a63('0x15'),controller[_0x7a63('0x16')]);router['get']('/:id/customer_avatar',controller['getCustomerAvatar']);router[_0x7a63('0x8')]('/:id/system_avatar',controller[_0x7a63('0x17')]);router['get'](_0x7a63('0x18'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x19')]);router[_0x7a63('0x8')]('/:id/snippet',controller[_0x7a63('0x1a')]);router[_0x7a63('0x8')](_0x7a63('0x1b'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x1c')]);router[_0x7a63('0x8')]('/:id/proactive_actions',auth['isAuthenticated'](),controller['getProactiveActions']);router['get'](_0x7a63('0x1d'),controller[_0x7a63('0x1e')]);router[_0x7a63('0x8')](_0x7a63('0x1f'),auth[_0x7a63('0xb')](),controller['getOfflineMessages']);router[_0x7a63('0x8')](_0x7a63('0x20'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x21')]);router['post']('/',auth[_0x7a63('0xb')](),controller[_0x7a63('0x22')]);router[_0x7a63('0x23')](_0x7a63('0xf'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x24')]);router[_0x7a63('0x23')]('/:id/canned_answers',auth[_0x7a63('0xb')](),controller['addAnswer']);var upload=multer({'storage':multer[_0x7a63('0x25')]({'destination':function(_0xa3ef04,_0x21008d,_0xd8e0d4){_0xd8e0d4(null,path[_0x7a63('0x26')](config[_0x7a63('0x27')],'server/files/images/logos/'));},'filename':function(_0x7cd6af,_0x36301d,_0x1351d5){_0x1351d5(null,util['format']('%s-%s',Date[_0x7a63('0x28')](),_0x36301d['originalname']));}})});router[_0x7a63('0x23')]('/:id/logo',upload['single'](_0x7a63('0x29')),controller['addLogo']);var upload=multer({'storage':multer[_0x7a63('0x25')]({'destination':function(_0x11db22,_0x130904,_0x3d1f48){_0x3d1f48(null,path[_0x7a63('0x26')](config[_0x7a63('0x27')],'server/files/images/avatars/'));},'filename':function(_0x1915be,_0x3b0425,_0x1a292c){_0x1a292c(null,util['format'](_0x7a63('0x2a'),Date['now'](),_0x3b0425[_0x7a63('0x2b')]));}})});router[_0x7a63('0x23')](_0x7a63('0x15'),upload[_0x7a63('0x2c')](_0x7a63('0x29')),controller[_0x7a63('0x2d')]);var upload=multer({'storage':multer[_0x7a63('0x25')]({'destination':function(_0x15d80a,_0x2a3bb0,_0x4faf93){_0x4faf93(null,path[_0x7a63('0x26')](config[_0x7a63('0x27')],_0x7a63('0x2e')));},'filename':function(_0x18314d,_0x1e5f2f,_0x134b19){_0x134b19(null,util[_0x7a63('0x2f')](_0x7a63('0x2a'),Date[_0x7a63('0x28')](),_0x1e5f2f[_0x7a63('0x2b')]));}})});router['post'](_0x7a63('0x30'),upload['single'](_0x7a63('0x29')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0x7a63('0x25')]({'destination':function(_0x809fe2,_0x2c9458,_0x59b6a5){_0x59b6a5(null,path[_0x7a63('0x26')](config[_0x7a63('0x27')],_0x7a63('0x2e')));},'filename':function(_0x17e291,_0x3422f1,_0x15cdca){_0x15cdca(null,util[_0x7a63('0x2f')](_0x7a63('0x2a'),Date[_0x7a63('0x28')](),_0x3422f1[_0x7a63('0x2b')]));}})});router[_0x7a63('0x23')](_0x7a63('0x31'),upload['single']('file'),controller[_0x7a63('0x32')]);router[_0x7a63('0x23')]('/:id/notify',controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x7a63('0x25')]({'destination':function(_0x4d2a82,_0x12e781,_0x52e208){const _0x4643b9=path[_0x7a63('0x26')](config[_0x7a63('0x27')],_0x7a63('0x33'),_0x7a63('0x34'),'offline-chat');fs_extra[_0x7a63('0x35')](_0x4643b9,function(){_0x52e208(null,_0x4643b9);});},'filename':function(_0x5d986f,_0x13f4e4,_0x40460a){const _0x1572df=_0x13f4e4['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x24cf9d=path[_0x7a63('0x36')](_0x1572df);const _0x35c6bd=Date[_0x7a63('0x28')]()+'-'+_0x1572df['replace'](_0x24cf9d,'')+_0x24cf9d;_0x40460a(null,_0x35c6bd);}})});router[_0x7a63('0x23')](_0x7a63('0x37'),offlineUploadMulter[_0x7a63('0x38')](),controller[_0x7a63('0x39')]);router[_0x7a63('0x23')]('/:id/interactions',auth[_0x7a63('0xb')](),controller[_0x7a63('0x3a')]);router[_0x7a63('0x23')]('/:id/applications',auth[_0x7a63('0xb')](),controller[_0x7a63('0x3b')]);router[_0x7a63('0x23')](_0x7a63('0x3c'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x3d')]);router[_0x7a63('0x23')](_0x7a63('0x20'),auth['isAuthenticated'](),controller[_0x7a63('0x3e')]);router[_0x7a63('0x3f')](_0x7a63('0xd'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x40')]);router[_0x7a63('0x41')](_0x7a63('0xd'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x42')]);router['delete']('/:id/dispositions',auth[_0x7a63('0xb')](),controller['removeDispositions']);router[_0x7a63('0x41')]('/:id/canned_answers',auth[_0x7a63('0xb')](),controller[_0x7a63('0x43')]);router[_0x7a63('0x41')](_0x7a63('0x20'),auth[_0x7a63('0xb')](),controller[_0x7a63('0x44')]);module[_0x7a63('0x45')]=router;
\ No newline at end of file
+var _0xeced=['file','addLogo','originalname','addAvatar','server/files/images/avatars/','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','offline','addInteraction','addApplications','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','/:id/customer_avatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','getAgents','create','addDisposition','post','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','single'];(function(_0x59b41d,_0x2ba427){var _0x13a78d=function(_0x214216){while(--_0x214216){_0x59b41d['push'](_0x59b41d['shift']());}};_0x13a78d(++_0x2ba427);}(_0xeced,0x173));var _0xdece=function(_0x18fe24,_0x329d38){_0x18fe24=_0x18fe24-0x0;var _0x5e0a4d=_0xeced[_0x18fe24];return _0x5e0a4d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdece('0x0'));var timeout=require(_0xdece('0x1'));var express=require(_0xdece('0x2'));var router=express[_0xdece('0x3')]();var fs_extra=require(_0xdece('0x4'));var auth=require(_0xdece('0x5'));var interaction=require(_0xdece('0x6'));var config=require(_0xdece('0x7'));var controller=require('./chatWebsite.controller');router[_0xdece('0x8')]('/',auth[_0xdece('0x9')](),controller['index']);router[_0xdece('0x8')]('/describe',auth[_0xdece('0x9')](),controller['describe']);router[_0xdece('0x8')](_0xdece('0xa'),auth[_0xdece('0x9')](),controller['show']);router[_0xdece('0x8')](_0xdece('0xb'),auth[_0xdece('0x9')](),controller[_0xdece('0xc')]);router[_0xdece('0x8')](_0xdece('0xd'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xdece('0x8')](_0xdece('0xe'),controller[_0xdece('0xf')]);router[_0xdece('0x8')](_0xdece('0x10'),controller['getAvatar']);router['get'](_0xdece('0x11'),controller['getCustomerAvatar']);router[_0xdece('0x8')](_0xdece('0x12'),controller[_0xdece('0x13')]);router['get'](_0xdece('0x14'),auth[_0xdece('0x9')](),controller[_0xdece('0x15')]);router[_0xdece('0x8')](_0xdece('0x16'),controller[_0xdece('0x17')]);router[_0xdece('0x8')](_0xdece('0x18'),auth[_0xdece('0x9')](),controller['getApplications']);router[_0xdece('0x8')](_0xdece('0x19'),auth[_0xdece('0x9')](),controller[_0xdece('0x1a')]);router[_0xdece('0x8')](_0xdece('0x1b'),controller[_0xdece('0x1c')]);router[_0xdece('0x8')](_0xdece('0x1d'),auth[_0xdece('0x9')](),controller['getOfflineMessages']);router[_0xdece('0x8')](_0xdece('0x1e'),auth[_0xdece('0x9')](),controller[_0xdece('0x1f')]);router['post']('/',auth[_0xdece('0x9')](),controller[_0xdece('0x20')]);router['post'](_0xdece('0xb'),auth[_0xdece('0x9')](),controller[_0xdece('0x21')]);router[_0xdece('0x22')]('/:id/canned_answers',auth[_0xdece('0x9')](),controller['addAnswer']);var upload=multer({'storage':multer[_0xdece('0x23')]({'destination':function(_0x3ffa31,_0x540258,_0xe09e3b){_0xe09e3b(null,path[_0xdece('0x24')](config[_0xdece('0x25')],_0xdece('0x26')));},'filename':function(_0x21cbc5,_0x2450a6,_0x49d169){_0x49d169(null,util[_0xdece('0x27')](_0xdece('0x28'),Date[_0xdece('0x29')](),_0x2450a6['originalname']));}})});router[_0xdece('0x22')](_0xdece('0xe'),upload[_0xdece('0x2a')](_0xdece('0x2b')),controller[_0xdece('0x2c')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xc277bd,_0x2670e1,_0x1c71fa){_0x1c71fa(null,path[_0xdece('0x24')](config[_0xdece('0x25')],'server/files/images/avatars/'));},'filename':function(_0x47d911,_0x509fcf,_0x2fe77f){_0x2fe77f(null,util['format'](_0xdece('0x28'),Date[_0xdece('0x29')](),_0x509fcf[_0xdece('0x2d')]));}})});router[_0xdece('0x22')](_0xdece('0x10'),upload[_0xdece('0x2a')](_0xdece('0x2b')),controller[_0xdece('0x2e')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x339f89,_0x211a45,_0x20464e){_0x20464e(null,path[_0xdece('0x24')](config[_0xdece('0x25')],_0xdece('0x2f')));},'filename':function(_0x446b64,_0x5f14ff,_0x34a6ed){_0x34a6ed(null,util[_0xdece('0x27')]('%s-%s',Date[_0xdece('0x29')](),_0x5f14ff[_0xdece('0x2d')]));}})});router[_0xdece('0x22')](_0xdece('0x11'),upload[_0xdece('0x2a')](_0xdece('0x2b')),controller[_0xdece('0x30')]);var upload=multer({'storage':multer[_0xdece('0x23')]({'destination':function(_0x3c1cf3,_0x57a647,_0x2e27b6){_0x2e27b6(null,path[_0xdece('0x24')](config['root'],_0xdece('0x2f')));},'filename':function(_0x4535d8,_0xfd1f22,_0x533931){_0x533931(null,util[_0xdece('0x27')](_0xdece('0x28'),Date['now'](),_0xfd1f22[_0xdece('0x2d')]));}})});router[_0xdece('0x22')](_0xdece('0x12'),upload[_0xdece('0x2a')](_0xdece('0x2b')),controller[_0xdece('0x31')]);router[_0xdece('0x22')](_0xdece('0x32'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0xdece('0x23')]({'destination':function(_0x573b4e,_0x2707a3,_0x2a416d){const _0x315b73=path['join'](config[_0xdece('0x25')],_0xdece('0x33'),_0xdece('0x34'),_0xdece('0x35'));fs_extra[_0xdece('0x36')](_0x315b73,function(){_0x2a416d(null,_0x315b73);});},'filename':function(_0x16dd79,_0x59e4f4,_0x3a5333){const _0x34bf7a=_0x59e4f4[_0xdece('0x2d')][_0xdece('0x37')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x2b8d1f=path[_0xdece('0x38')](_0x34bf7a);const _0x1bc1b6=Date['now']()+'-'+_0x34bf7a[_0xdece('0x37')](_0x2b8d1f,'')+_0x2b8d1f;_0x3a5333(null,_0x1bc1b6);}})});router[_0xdece('0x22')](_0xdece('0x39'),offlineUploadMulter['any'](),controller[_0xdece('0x3a')]);router[_0xdece('0x22')](_0xdece('0x14'),auth[_0xdece('0x9')](),controller[_0xdece('0x3b')]);router[_0xdece('0x22')](_0xdece('0x18'),auth[_0xdece('0x9')](),controller[_0xdece('0x3c')]);router[_0xdece('0x22')](_0xdece('0x19'),auth[_0xdece('0x9')](),controller['addProactiveActions']);router[_0xdece('0x22')]('/:id/users',auth['isAuthenticated'](),controller[_0xdece('0x3d')]);router[_0xdece('0x3e')]('/:id',auth['isAuthenticated'](),controller[_0xdece('0x3f')]);router[_0xdece('0x40')](_0xdece('0xa'),auth[_0xdece('0x9')](),controller[_0xdece('0x41')]);router['delete'](_0xdece('0xb'),auth[_0xdece('0x9')](),controller[_0xdece('0x42')]);router['delete'](_0xdece('0xd'),auth[_0xdece('0x9')](),controller[_0xdece('0x43')]);router[_0xdece('0x40')](_0xdece('0x1e'),auth[_0xdece('0x9')](),controller['removeAgents']);module[_0xdece('0x44')]=router;
\ No newline at end of file
index 69f688f..c473aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc913=['production','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','/client-logs','use','isAuthenticated','exports','beaver-logger/server','express','../components/auth/service','Router','env'];(function(_0x2e2ec4,_0x423749){var _0x4c4d53=function(_0x323c7d){while(--_0x323c7d){_0x2e2ec4['push'](_0x2e2ec4['shift']());}};_0x4c4d53(++_0x423749);}(_0xc913,0x8a));var _0x3c91=function(_0x1ca4c3,_0x554126){_0x1ca4c3=_0x1ca4c3-0x0;var _0x4426a6=_0xc913[_0x1ca4c3];return _0x4426a6;};var beaverLogger=require(_0x3c91('0x0'));var express=require(_0x3c91('0x1'));var auth=require(_0x3c91('0x2'));var config=require('../config/environment');var router=express[_0x3c91('0x3')]();var isProduction=config[_0x3c91('0x4')]===_0x3c91('0x5')||![];function clientSideLogs(_0x495811,_0x12255d,_0x16fef1){var _0x447611=_0x495811['app'][_0x3c91('0x6')](_0x3c91('0x7'));if(!_0x447611){throw new Error(_0x3c91('0x8'));}return beaverLogger['expressEndpoint']({'uri':_0x3c91('0x9'),'logger':_0x447611,'enableCors':!isProduction})(_0x495811,_0x12255d,_0x16fef1);}router[_0x3c91('0xa')](auth[_0x3c91('0xb')](),clientSideLogs);module[_0x3c91('0xc')]=router;
\ No newline at end of file
+var _0x421b=['../config/environment','Router','env','production','app','get','Client-Side\x20logger\x20not\x20found!','/client-logs','use','isAuthenticated','exports','beaver-logger/server','express','../components/auth/service'];(function(_0x380be3,_0x6933dc){var _0x229661=function(_0x13d961){while(--_0x13d961){_0x380be3['push'](_0x380be3['shift']());}};_0x229661(++_0x6933dc);}(_0x421b,0xeb));var _0xb421=function(_0x313d6f,_0x122c8d){_0x313d6f=_0x313d6f-0x0;var _0x2059ac=_0x421b[_0x313d6f];return _0x2059ac;};var beaverLogger=require(_0xb421('0x0'));var express=require(_0xb421('0x1'));var auth=require(_0xb421('0x2'));var config=require(_0xb421('0x3'));var router=express[_0xb421('0x4')]();var isProduction=config[_0xb421('0x5')]===_0xb421('0x6')||![];function clientSideLogs(_0x59f283,_0x455122,_0x1da5b5){var _0x5c5fd0=_0x59f283[_0xb421('0x7')][_0xb421('0x8')]('client-side-logger');if(!_0x5c5fd0){throw new Error(_0xb421('0x9'));}return beaverLogger['expressEndpoint']({'uri':_0xb421('0xa'),'logger':_0x5c5fd0,'enableCors':!isProduction})(_0x59f283,_0x455122,_0x1da5b5);}router[_0xb421('0xb')](auth[_0xb421('0xc')](),clientSideLogs);module[_0xb421('0xd')]=router;
\ No newline at end of file
index 077e21a..20bfc06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda38=['Dynamics365','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','STRING','MicrosoftAzure','ENUM','Outlook365'];(function(_0x420ca8,_0x50592c){var _0x12f497=function(_0x2007b8){while(--_0x2007b8){_0x420ca8['push'](_0x420ca8['shift']());}};_0x12f497(++_0x50592c);}(_0xda38,0x92));var _0x8da3=function(_0x275804,_0x1690bb){_0x275804=_0x275804-0x0;var _0x5cf3a4=_0xda38[_0x275804];return _0x5cf3a4;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8da3('0x0')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS','Google',_0x8da3('0x1')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x8da3('0x2')](_0x8da3('0x3'),_0x8da3('0x4'))},'data1':{'type':Sequelize[_0x8da3('0x0')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize['STRING'],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0x8da3('0x0')],'comment':_0x8da3('0x5')},'data4':{'type':Sequelize[_0x8da3('0x0')],'comment':_0x8da3('0x6')},'data5':{'type':Sequelize[_0x8da3('0x7')],'comment':'MicrosoftAzure\x20=>\x20access_token'},'data6':{'type':Sequelize[_0x8da3('0x7')],'comment':_0x8da3('0x8')},'data7':{'type':Sequelize[_0x8da3('0x7')],'comment':_0x8da3('0x9')}};
\ No newline at end of file
+var _0x5964=['ENUM','AmazonAWS','MicrosoftAzure','Outlook365','Dynamics365','STRING','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x5964,0x7c));var _0x4596=function(_0x501732,_0x53aaa0){_0x501732=_0x501732-0x0;var _0x588ae8=_0x5964[_0x501732];return _0x588ae8;};'use strict';var Sequelize=require(_0x4596('0x0'));module[_0x4596('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x4596('0x2')](_0x4596('0x3'),'Google',_0x4596('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x4596('0x2')](_0x4596('0x5'),_0x4596('0x6'))},'data1':{'type':Sequelize[_0x4596('0x7')],'comment':_0x4596('0x8')},'data2':{'type':Sequelize[_0x4596('0x7')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0x4596('0x7')],'comment':_0x4596('0x9')},'data4':{'type':Sequelize['STRING'],'comment':_0x4596('0xa')},'data5':{'type':Sequelize[_0x4596('0xb')],'comment':_0x4596('0xc')},'data6':{'type':Sequelize[_0x4596('0xb')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0x4596('0xb')],'comment':_0x4596('0xd')}};
\ No newline at end of file
index f68239a..78f5f0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe01=['ascii','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','access_token','data6','refresh_token','data5','startRefreshInterval','emit','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','./cloudProvider.oauth','redis','localhost','sendStatus','status','json','offset','undefined','limit','count','Content-Range','update','then','end','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','decryptString','data3','catch','show','params','find','service','MicrosoftAzure','create','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','includes','join','body','encryptString','destroy','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','error','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString'];(function(_0x28b6c9,_0xbf4f03){var _0x4a6298=function(_0x2fa579){while(--_0x2fa579){_0x28b6c9['push'](_0x28b6c9['shift']());}};_0x4a6298(++_0xbf4f03);}(_0xbe01,0x18d));var _0x1be0=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xbe01[_0x565c49];return _0x20ca34;};'use strict';var _=require(_0x1be0('0x0'));var Redis=require('ioredis');var qs=require(_0x1be0('0x1'));var encryptor=require(_0x1be0('0x2'));var config=require(_0x1be0('0x3'));var logger=require(_0x1be0('0x4'))(_0x1be0('0x5'));var db=require('../../mysqldb')['db'];var oauth=require(_0x1be0('0x6'));config[_0x1be0('0x7')]=_['defaults'](config[_0x1be0('0x7')],{'host':_0x1be0('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var redis=new Redis(config[_0x1be0('0x7')]);function respondWithStatusCode(_0x1bf38a,_0xf2099){_0xf2099=_0xf2099||0xcc;return function(_0x2c05d4){if(_0x2c05d4){return _0x1bf38a[_0x1be0('0x9')](_0xf2099);}return _0x1bf38a[_0x1be0('0xa')](_0xf2099)['end']();};}function respondWithResult(_0x554b50,_0x3c6469){_0x3c6469=_0x3c6469||0xc8;return function(_0x2480d8){if(_0x2480d8){return _0x554b50['status'](_0x3c6469)[_0x1be0('0xb')](_0x2480d8);}};}function respondWithFilteredResult(_0xef2d02,_0x53f3ac){return function(_0xbb0bd){if(_0xbb0bd){var _0xe8ca8=typeof _0x53f3ac[_0x1be0('0xc')]===_0x1be0('0xd')&&typeof _0x53f3ac[_0x1be0('0xe')]==='undefined';var _0x3a7b36=_0xbb0bd[_0x1be0('0xf')];var _0x25d231=_0xe8ca8?0x0:_0x53f3ac[_0x1be0('0xc')];var _0x29d25c=_0xe8ca8?_0xbb0bd[_0x1be0('0xf')]:_0x53f3ac['offset']+_0x53f3ac['limit'];var _0x5f10e9;if(_0x29d25c>=_0x3a7b36){_0x29d25c=_0x3a7b36;_0x5f10e9=0xc8;}else{_0x5f10e9=0xce;}_0xef2d02[_0x1be0('0xa')](_0x5f10e9);return _0xef2d02['set'](_0x1be0('0x10'),_0x25d231+'-'+_0x29d25c+'/'+_0x3a7b36)[_0x1be0('0xb')](_0xbb0bd);}return null;};}function saveUpdates(_0x3daa00){return function(_0x480bf6){if(_0x480bf6){return _0x480bf6[_0x1be0('0x11')](_0x3daa00)[_0x1be0('0x12')](function(_0x4f1869){return _0x4f1869;});}return null;};}function removeEntity(_0x429d30){return function(_0x56cb1a){if(_0x56cb1a){return _0x56cb1a['destroy']()['then'](function(){_0x429d30[_0x1be0('0xa')](0xcc)[_0x1be0('0x13')]();});}};}function handleEntityNotFound(_0x2dca09){return function(_0x48683f){if(!_0x48683f){_0x2dca09[_0x1be0('0x9')](0x194);}return _0x48683f;};}function handleError(_0x316085,_0x5916fc){_0x5916fc=_0x5916fc||0x1f4;return function(_0x19dd57){logger['error'](_0x19dd57['stack']);if(_0x19dd57[_0x1be0('0x14')]){delete _0x19dd57[_0x1be0('0x14')];}_0x316085[_0x1be0('0xa')](_0x5916fc)[_0x1be0('0x15')](_0x19dd57);};}function maskClientSecret(_0xec606a){return _[_0x1be0('0x16')](_0xec606a[_0x1be0('0x17')](0x0,0x3),0x14,'*');}exports[_0x1be0('0x18')]=function(_0x4a5244,_0x1108fd){var _0x265956={},_0x474156={},_0x4d4131={'count':0x0,'rows':[]};var _0x2a3891=_[_0x1be0('0x19')](db[_0x1be0('0x1a')][_0x1be0('0x1b')],function(_0x46dd92){return{'name':_0x46dd92[_0x1be0('0x1c')],'type':_0x46dd92[_0x1be0('0x1d')][_0x1be0('0x1e')]};});_0x474156[_0x1be0('0x1f')]=_[_0x1be0('0x19')](_0x2a3891,_0x1be0('0x14'));_0x474156[_0x1be0('0x20')]=_[_0x1be0('0x21')](_0x4a5244[_0x1be0('0x20')]);_0x474156[_0x1be0('0x22')]=_[_0x1be0('0x23')](_0x474156[_0x1be0('0x1f')],_0x474156[_0x1be0('0x20')]);_0x265956[_0x1be0('0x24')]=_[_0x1be0('0x23')](_0x474156['model'],qs[_0x1be0('0x25')](_0x4a5244[_0x1be0('0x20')][_0x1be0('0x25')]));_0x265956[_0x1be0('0x24')]=_0x265956[_0x1be0('0x24')]['length']?_0x265956[_0x1be0('0x24')]:_0x474156['model'];if(!_0x4a5244[_0x1be0('0x20')][_0x1be0('0x26')](_0x1be0('0x27'))){_0x265956[_0x1be0('0xe')]=qs[_0x1be0('0xe')](_0x4a5244[_0x1be0('0x20')][_0x1be0('0xe')]);_0x265956['offset']=qs[_0x1be0('0xc')](_0x4a5244[_0x1be0('0x20')]['offset']);}_0x265956[_0x1be0('0x28')]=qs[_0x1be0('0x29')](_0x4a5244['query']['sort']);_0x265956[_0x1be0('0x2a')]=qs[_0x1be0('0x22')](_[_0x1be0('0x2b')](_0x4a5244[_0x1be0('0x20')],_0x474156[_0x1be0('0x22')]),_0x2a3891);if(_0x4a5244[_0x1be0('0x20')][_0x1be0('0x2c')]){_0x265956[_0x1be0('0x2a')]=_[_0x1be0('0x2d')](_0x265956[_0x1be0('0x2a')],{'$or':_[_0x1be0('0x19')](_0x2a3891,function(_0x56de7a){if(_0x56de7a[_0x1be0('0x1d')]!==_0x1be0('0x2e')){var _0x384832={};_0x384832[_0x56de7a[_0x1be0('0x14')]]={'$like':'%'+_0x4a5244[_0x1be0('0x20')][_0x1be0('0x2c')]+'%'};return _0x384832;}})});}_0x265956=_['merge']({},_0x265956,_0x4a5244[_0x1be0('0x2f')]);var _0x15d4aa={'where':_0x265956[_0x1be0('0x2a')]};return db[_0x1be0('0x1a')][_0x1be0('0xf')](_0x15d4aa)[_0x1be0('0x12')](function(_0x25a9c1){_0x4d4131['count']=_0x25a9c1;if(_0x4a5244[_0x1be0('0x20')]['includeAll']){_0x265956[_0x1be0('0x30')]=[{'all':!![]}];}return db[_0x1be0('0x1a')]['findAll'](_0x265956);})['then'](function(_0x238686){_0x4d4131[_0x1be0('0x31')]=_['map'](_0x238686,function(_0x21bd85){if(_0x21bd85['service']==='MicrosoftAzure'){var _0x31b675=encryptor[_0x1be0('0x32')](_0x21bd85[_0x1be0('0x33')]);_0x21bd85[_0x1be0('0x33')]=maskClientSecret(_0x31b675);}return _0x21bd85;});return _0x4d4131;})[_0x1be0('0x12')](respondWithFilteredResult(_0x1108fd,_0x265956))[_0x1be0('0x34')](handleError(_0x1108fd,null));};exports[_0x1be0('0x35')]=function(_0x2c18c0,_0x580b74){var _0x1864b8={'raw':!![],'where':{'id':_0x2c18c0[_0x1be0('0x36')]['id']}},_0x248de1={};_0x248de1[_0x1be0('0x1f')]=_[_0x1be0('0x21')](db[_0x1be0('0x1a')]['rawAttributes']);_0x248de1[_0x1be0('0x20')]=_[_0x1be0('0x21')](_0x2c18c0[_0x1be0('0x20')]);_0x248de1[_0x1be0('0x22')]=_[_0x1be0('0x23')](_0x248de1[_0x1be0('0x1f')],_0x248de1['query']);_0x1864b8[_0x1be0('0x24')]=_[_0x1be0('0x23')](_0x248de1[_0x1be0('0x1f')],qs[_0x1be0('0x25')](_0x2c18c0['query'][_0x1be0('0x25')]));_0x1864b8[_0x1be0('0x24')]=_0x1864b8['attributes']['length']?_0x1864b8[_0x1be0('0x24')]:_0x248de1[_0x1be0('0x1f')];if(_0x2c18c0[_0x1be0('0x20')]['includeAll']){_0x1864b8[_0x1be0('0x30')]=[{'all':!![]}];}_0x1864b8=_[_0x1be0('0x2d')]({},_0x1864b8,_0x2c18c0[_0x1be0('0x2f')]);return db[_0x1be0('0x1a')][_0x1be0('0x37')](_0x1864b8)[_0x1be0('0x12')](handleEntityNotFound(_0x580b74,null))[_0x1be0('0x12')](function(_0x2b6d65){if(_0x2b6d65[_0x1be0('0x38')]===_0x1be0('0x39')){var _0x26637e=encryptor[_0x1be0('0x32')](_0x2b6d65[_0x1be0('0x33')]);_0x2b6d65[_0x1be0('0x33')]=maskClientSecret(_0x26637e);}return _0x2b6d65;})[_0x1be0('0x12')](respondWithResult(_0x580b74,null))['catch'](handleError(_0x580b74,null));};exports[_0x1be0('0x3a')]=function(_0x1d8d4a,_0x53306b){if(!_0x1d8d4a['body'][_0x1be0('0x14')])throw new Error(_0x1be0('0x3b'));if(!_0x1d8d4a['body'][_0x1be0('0x38')])throw new Error(_0x1be0('0x3c'));var _0x99724d=db[_0x1be0('0x1a')][_0x1be0('0x1b')]['service']['values'];if(!_0x99724d[_0x1be0('0x3d')](_0x1d8d4a['body'][_0x1be0('0x38')]))throw new Error('Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20'+_0x99724d[_0x1be0('0x3e')](',\x20'));if(_0x1d8d4a[_0x1be0('0x3f')][_0x1be0('0x38')]==='MicrosoftAzure'&&_0x1d8d4a[_0x1be0('0x3f')][_0x1be0('0x33')]){_0x1d8d4a[_0x1be0('0x3f')]['data3']=encryptor[_0x1be0('0x40')](_0x1d8d4a[_0x1be0('0x3f')][_0x1be0('0x33')]);}return db[_0x1be0('0x1a')][_0x1be0('0x3a')](_0x1d8d4a['body'],{})['then'](respondWithResult(_0x53306b,0xc9))[_0x1be0('0x34')](handleError(_0x53306b,null));};exports[_0x1be0('0x11')]=function(_0x37d721,_0x233894){if(_0x37d721['body']['id']){delete _0x37d721['body']['id'];}return db[_0x1be0('0x1a')]['find']({'where':{'id':_0x37d721['params']['id']}})['then'](handleEntityNotFound(_0x233894,null))['then'](function(_0x58c626){if(_0x58c626[_0x1be0('0x38')]==='MicrosoftAzure'&&_0x37d721[_0x1be0('0x3f')][_0x1be0('0x33')]){_0x37d721[_0x1be0('0x3f')][_0x1be0('0x33')]=encryptor[_0x1be0('0x40')](_0x37d721[_0x1be0('0x3f')][_0x1be0('0x33')]);}return _0x58c626;})['then'](saveUpdates(_0x37d721[_0x1be0('0x3f')],null))[_0x1be0('0x12')](respondWithResult(_0x233894,null))[_0x1be0('0x34')](handleError(_0x233894,null));};exports[_0x1be0('0x41')]=function(_0x44d425,_0x24148f){return db['CloudProvider'][_0x1be0('0x37')]({'where':{'id':_0x44d425[_0x1be0('0x36')]['id']}})[_0x1be0('0x12')](handleEntityNotFound(_0x24148f,null))['then'](removeEntity(_0x24148f,null))['catch'](handleError(_0x24148f,null));};exports[_0x1be0('0x42')]=function(_0x4ecc98,_0xcdfe77){return db[_0x1be0('0x1a')][_0x1be0('0x43')]({'where':{'id':_0x4ecc98[_0x1be0('0x36')]['id']},'raw':!![]})[_0x1be0('0x12')](function(_0x3a089d){if(!_0x3a089d)return _0xcdfe77[_0x1be0('0x9')](0x194);return{'url':oauth[_0x1be0('0x44')](_0x3a089d,_0x4ecc98['user']['id'])};})['then'](respondWithResult(_0xcdfe77,null))[_0x1be0('0x34')](handleError(_0xcdfe77,null));};exports[_0x1be0('0x45')]=function(_0x466550,_0xbe95d8){var _0x5b3111=_0x466550[_0x1be0('0x3f')];var _0x513a9e;var _0x2a8324;if(_0x5b3111[_0x1be0('0x46')])throw _0x5b3111;redis[_0x1be0('0x47')](_0x5b3111[_0x1be0('0x48')])[_0x1be0('0x12')](function(_0x419fff){if(!_0x419fff)throw new Error(_0x1be0('0x49'));_0x513a9e=JSON[_0x1be0('0x4a')](_0x419fff);var _0x2d4c33=Buffer[_0x1be0('0x4b')](_0x5b3111[_0x1be0('0x48')],_0x1be0('0x4c'))[_0x1be0('0x4d')](_0x1be0('0x4e'));_0x2a8324=JSON[_0x1be0('0x4a')](_0x2d4c33);if(!oauth['isValidIdToken'](_0x5b3111['id_token'],_0x513a9e[_0x1be0('0x4f')]))throw new Error(_0x1be0('0x50'));redis[_0x1be0('0x51')](_0x5b3111['state']);return oauth[_0x1be0('0x52')](_0x5b3111[_0x1be0('0x53')],_0x513a9e);})['then'](function(_0x2017a0){_0x513a9e['data5']=_0x2017a0[_0x1be0('0x54')];_0x513a9e[_0x1be0('0x55')]=_0x2017a0[_0x1be0('0x56')];return db[_0x1be0('0x1a')][_0x1be0('0x11')]({'data5':_0x513a9e[_0x1be0('0x57')],'data6':_0x513a9e[_0x1be0('0x55')]},{'where':{'id':_0x513a9e['id']}});})['then'](function(){oauth[_0x1be0('0x58')](_0x513a9e);socket[_0x1be0('0x59')]('microsoftAuthorization:success',{'id':_0x2a8324['id']});return;})[_0x1be0('0x12')](respondWithStatusCode(_0xbe95d8,null))[_0x1be0('0x34')](function(_0x3b4841){if(_0x2a8324){socket[_0x1be0('0x59')](_0x1be0('0x5a'),{'id':_0x2a8324['id']});}if(!_0x513a9e){logger[_0x1be0('0x46')](_0x1be0('0x5b'),_0x3b4841);return _0xbe95d8[_0x1be0('0xa')](0x1f4)[_0x1be0('0x15')](_0x3b4841[_0x1be0('0x5c')]);}logger['error'](_0x1be0('0x5d'),_0x513a9e['id'],JSON[_0x1be0('0x5e')](_0x3b4841));});};
\ No newline at end of file
+var _0x22eb=['get','state','Invalid\x20state\x20parameter','parse','from','base64','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','data5','refresh_token','data6','startRefreshInterval','emit','send','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','socket.io-emitter','sendStatus','end','json','undefined','limit','count','offset','status','then','error','name','padEnd','index','CloudProvider','rawAttributes','fieldName','key','model','map','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','service','MicrosoftAzure','decryptString','data3','catch','params','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','update','find','destroy','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x22eb,0x1d6));var _0xb22e=function(_0x4eab68,_0x1aad06){_0x4eab68=_0x4eab68-0x0;var _0x2528ba=_0x22eb[_0x4eab68];return _0x2528ba;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0xb22e('0x0'));var encryptor=require(_0xb22e('0x1'));var config=require(_0xb22e('0x2'));var logger=require(_0xb22e('0x3'))(_0xb22e('0x4'));var db=require(_0xb22e('0x5'))['db'];var oauth=require(_0xb22e('0x6'));config[_0xb22e('0x7')]=_[_0xb22e('0x8')](config[_0xb22e('0x7')],{'host':_0xb22e('0x9'),'port':0x18eb});var socket=require(_0xb22e('0xa'))(new Redis(config[_0xb22e('0x7')]));var redis=new Redis(config[_0xb22e('0x7')]);function respondWithStatusCode(_0x8c030b,_0x375e74){_0x375e74=_0x375e74||0xcc;return function(_0x54803a){if(_0x54803a){return _0x8c030b[_0xb22e('0xb')](_0x375e74);}return _0x8c030b['status'](_0x375e74)[_0xb22e('0xc')]();};}function respondWithResult(_0x255af6,_0x17b730){_0x17b730=_0x17b730||0xc8;return function(_0x3c1054){if(_0x3c1054){return _0x255af6['status'](_0x17b730)[_0xb22e('0xd')](_0x3c1054);}};}function respondWithFilteredResult(_0x3686f5,_0x280129){return function(_0x12c888){if(_0x12c888){var _0xb34291=typeof _0x280129['offset']===_0xb22e('0xe')&&typeof _0x280129[_0xb22e('0xf')]===_0xb22e('0xe');var _0x378922=_0x12c888[_0xb22e('0x10')];var _0x58b21c=_0xb34291?0x0:_0x280129[_0xb22e('0x11')];var _0xdf92b3=_0xb34291?_0x12c888[_0xb22e('0x10')]:_0x280129[_0xb22e('0x11')]+_0x280129[_0xb22e('0xf')];var _0x51cc13;if(_0xdf92b3>=_0x378922){_0xdf92b3=_0x378922;_0x51cc13=0xc8;}else{_0x51cc13=0xce;}_0x3686f5[_0xb22e('0x12')](_0x51cc13);return _0x3686f5['set']('Content-Range',_0x58b21c+'-'+_0xdf92b3+'/'+_0x378922)[_0xb22e('0xd')](_0x12c888);}return null;};}function saveUpdates(_0x5c177b){return function(_0x2708db){if(_0x2708db){return _0x2708db['update'](_0x5c177b)['then'](function(_0x46f1d8){return _0x46f1d8;});}return null;};}function removeEntity(_0x330bdc){return function(_0x3ae7ce){if(_0x3ae7ce){return _0x3ae7ce['destroy']()[_0xb22e('0x13')](function(){_0x330bdc['status'](0xcc)[_0xb22e('0xc')]();});}};}function handleEntityNotFound(_0x4b80a4){return function(_0x2fbf0f){if(!_0x2fbf0f){_0x4b80a4['sendStatus'](0x194);}return _0x2fbf0f;};}function handleError(_0x579c71,_0x1fbc1b){_0x1fbc1b=_0x1fbc1b||0x1f4;return function(_0x221d51){logger[_0xb22e('0x14')](_0x221d51['stack']);if(_0x221d51[_0xb22e('0x15')]){delete _0x221d51[_0xb22e('0x15')];}_0x579c71[_0xb22e('0x12')](_0x1fbc1b)['send'](_0x221d51);};}function maskClientSecret(_0x42465a){return _[_0xb22e('0x16')](_0x42465a['slice'](0x0,0x3),0x14,'*');}exports[_0xb22e('0x17')]=function(_0x577d02,_0x47fee3){var _0x2dacfa={},_0x204d47={},_0x216692={'count':0x0,'rows':[]};var _0x53e2fa=_['map'](db[_0xb22e('0x18')][_0xb22e('0x19')],function(_0x6eb6ce){return{'name':_0x6eb6ce[_0xb22e('0x1a')],'type':_0x6eb6ce['type'][_0xb22e('0x1b')]};});_0x204d47[_0xb22e('0x1c')]=_[_0xb22e('0x1d')](_0x53e2fa,_0xb22e('0x15'));_0x204d47['query']=_[_0xb22e('0x1e')](_0x577d02[_0xb22e('0x1f')]);_0x204d47['filters']=_['intersection'](_0x204d47[_0xb22e('0x1c')],_0x204d47[_0xb22e('0x1f')]);_0x2dacfa[_0xb22e('0x20')]=_[_0xb22e('0x21')](_0x204d47[_0xb22e('0x1c')],qs[_0xb22e('0x22')](_0x577d02[_0xb22e('0x1f')]['fields']));_0x2dacfa[_0xb22e('0x20')]=_0x2dacfa[_0xb22e('0x20')][_0xb22e('0x23')]?_0x2dacfa[_0xb22e('0x20')]:_0x204d47[_0xb22e('0x1c')];if(!_0x577d02[_0xb22e('0x1f')][_0xb22e('0x24')]('nolimit')){_0x2dacfa[_0xb22e('0xf')]=qs[_0xb22e('0xf')](_0x577d02['query'][_0xb22e('0xf')]);_0x2dacfa[_0xb22e('0x11')]=qs[_0xb22e('0x11')](_0x577d02[_0xb22e('0x1f')]['offset']);}_0x2dacfa[_0xb22e('0x25')]=qs[_0xb22e('0x26')](_0x577d02[_0xb22e('0x1f')][_0xb22e('0x26')]);_0x2dacfa[_0xb22e('0x27')]=qs[_0xb22e('0x28')](_['pick'](_0x577d02[_0xb22e('0x1f')],_0x204d47[_0xb22e('0x28')]),_0x53e2fa);if(_0x577d02[_0xb22e('0x1f')]['filter']){_0x2dacfa['where']=_['merge'](_0x2dacfa[_0xb22e('0x27')],{'$or':_[_0xb22e('0x1d')](_0x53e2fa,function(_0x167d49){if(_0x167d49['type']!==_0xb22e('0x29')){var _0x5b88ef={};_0x5b88ef[_0x167d49[_0xb22e('0x15')]]={'$like':'%'+_0x577d02[_0xb22e('0x1f')][_0xb22e('0x2a')]+'%'};return _0x5b88ef;}})});}_0x2dacfa=_[_0xb22e('0x2b')]({},_0x2dacfa,_0x577d02[_0xb22e('0x2c')]);var _0x155722={'where':_0x2dacfa[_0xb22e('0x27')]};return db[_0xb22e('0x18')][_0xb22e('0x10')](_0x155722)['then'](function(_0x427ad2){_0x216692[_0xb22e('0x10')]=_0x427ad2;if(_0x577d02['query'][_0xb22e('0x2d')]){_0x2dacfa[_0xb22e('0x2e')]=[{'all':!![]}];}return db['CloudProvider'][_0xb22e('0x2f')](_0x2dacfa);})[_0xb22e('0x13')](function(_0x3c9dad){_0x216692[_0xb22e('0x30')]=_[_0xb22e('0x1d')](_0x3c9dad,function(_0x2c023b){if(_0x2c023b[_0xb22e('0x31')]===_0xb22e('0x32')){var _0x5642e3=encryptor[_0xb22e('0x33')](_0x2c023b['data3']);_0x2c023b[_0xb22e('0x34')]=maskClientSecret(_0x5642e3);}return _0x2c023b;});return _0x216692;})['then'](respondWithFilteredResult(_0x47fee3,_0x2dacfa))[_0xb22e('0x35')](handleError(_0x47fee3,null));};exports['show']=function(_0xcd4d43,_0x42a58b){var _0x51be93={'raw':!![],'where':{'id':_0xcd4d43[_0xb22e('0x36')]['id']}},_0x9d329c={};_0x9d329c[_0xb22e('0x1c')]=_[_0xb22e('0x1e')](db[_0xb22e('0x18')][_0xb22e('0x19')]);_0x9d329c[_0xb22e('0x1f')]=_['keys'](_0xcd4d43[_0xb22e('0x1f')]);_0x9d329c[_0xb22e('0x28')]=_[_0xb22e('0x21')](_0x9d329c[_0xb22e('0x1c')],_0x9d329c['query']);_0x51be93[_0xb22e('0x20')]=_[_0xb22e('0x21')](_0x9d329c[_0xb22e('0x1c')],qs[_0xb22e('0x22')](_0xcd4d43[_0xb22e('0x1f')][_0xb22e('0x22')]));_0x51be93[_0xb22e('0x20')]=_0x51be93[_0xb22e('0x20')]['length']?_0x51be93[_0xb22e('0x20')]:_0x9d329c['model'];if(_0xcd4d43['query'][_0xb22e('0x2d')]){_0x51be93[_0xb22e('0x2e')]=[{'all':!![]}];}_0x51be93=_[_0xb22e('0x2b')]({},_0x51be93,_0xcd4d43['options']);return db[_0xb22e('0x18')]['find'](_0x51be93)[_0xb22e('0x13')](handleEntityNotFound(_0x42a58b,null))[_0xb22e('0x13')](function(_0x321333){if(_0x321333[_0xb22e('0x31')]===_0xb22e('0x32')){var _0xbb4318=encryptor[_0xb22e('0x33')](_0x321333[_0xb22e('0x34')]);_0x321333[_0xb22e('0x34')]=maskClientSecret(_0xbb4318);}return _0x321333;})[_0xb22e('0x13')](respondWithResult(_0x42a58b,null))[_0xb22e('0x35')](handleError(_0x42a58b,null));};exports[_0xb22e('0x37')]=function(_0x5a5c46,_0x1dacea){if(!_0x5a5c46[_0xb22e('0x38')][_0xb22e('0x15')])throw new Error(_0xb22e('0x39'));if(!_0x5a5c46['body'][_0xb22e('0x31')])throw new Error(_0xb22e('0x3a'));var _0x225a49=db[_0xb22e('0x18')][_0xb22e('0x19')][_0xb22e('0x31')][_0xb22e('0x3b')];if(!_0x225a49['includes'](_0x5a5c46['body'][_0xb22e('0x31')]))throw new Error(_0xb22e('0x3c')+_0x225a49['join'](',\x20'));if(_0x5a5c46[_0xb22e('0x38')][_0xb22e('0x31')]==='MicrosoftAzure'&&_0x5a5c46[_0xb22e('0x38')][_0xb22e('0x34')]){_0x5a5c46[_0xb22e('0x38')][_0xb22e('0x34')]=encryptor[_0xb22e('0x3d')](_0x5a5c46[_0xb22e('0x38')][_0xb22e('0x34')]);}return db['CloudProvider'][_0xb22e('0x37')](_0x5a5c46[_0xb22e('0x38')],{})[_0xb22e('0x13')](respondWithResult(_0x1dacea,0xc9))[_0xb22e('0x35')](handleError(_0x1dacea,null));};exports[_0xb22e('0x3e')]=function(_0x34695a,_0x3c7148){if(_0x34695a['body']['id']){delete _0x34695a[_0xb22e('0x38')]['id'];}return db[_0xb22e('0x18')][_0xb22e('0x3f')]({'where':{'id':_0x34695a[_0xb22e('0x36')]['id']}})[_0xb22e('0x13')](handleEntityNotFound(_0x3c7148,null))[_0xb22e('0x13')](function(_0x4b18cb){if(_0x4b18cb['service']===_0xb22e('0x32')&&_0x34695a[_0xb22e('0x38')][_0xb22e('0x34')]){_0x34695a[_0xb22e('0x38')][_0xb22e('0x34')]=encryptor[_0xb22e('0x3d')](_0x34695a['body']['data3']);}return _0x4b18cb;})['then'](saveUpdates(_0x34695a[_0xb22e('0x38')],null))[_0xb22e('0x13')](respondWithResult(_0x3c7148,null))[_0xb22e('0x35')](handleError(_0x3c7148,null));};exports[_0xb22e('0x40')]=function(_0x5905b3,_0x127455){return db[_0xb22e('0x18')][_0xb22e('0x3f')]({'where':{'id':_0x5905b3[_0xb22e('0x36')]['id']}})['then'](handleEntityNotFound(_0x127455,null))[_0xb22e('0x13')](removeEntity(_0x127455,null))[_0xb22e('0x35')](handleError(_0x127455,null));};exports[_0xb22e('0x41')]=function(_0x2931f3,_0x5be216){return db[_0xb22e('0x18')][_0xb22e('0x42')]({'where':{'id':_0x2931f3[_0xb22e('0x36')]['id']},'raw':!![]})[_0xb22e('0x13')](function(_0x550c04){if(!_0x550c04)return _0x5be216['sendStatus'](0x194);return{'url':oauth[_0xb22e('0x43')](_0x550c04,_0x2931f3[_0xb22e('0x44')]['id'])};})[_0xb22e('0x13')](respondWithResult(_0x5be216,null))[_0xb22e('0x35')](handleError(_0x5be216,null));};exports[_0xb22e('0x45')]=function(_0x35655a,_0x414a36){var _0x278735=_0x35655a[_0xb22e('0x38')];var _0x402044;var _0x434aba;if(_0x278735['error'])throw _0x278735;redis[_0xb22e('0x46')](_0x278735[_0xb22e('0x47')])[_0xb22e('0x13')](function(_0x26ba5f){if(!_0x26ba5f)throw new Error(_0xb22e('0x48'));_0x402044=JSON[_0xb22e('0x49')](_0x26ba5f);var _0x17dcd2=Buffer[_0xb22e('0x4a')](_0x278735[_0xb22e('0x47')],_0xb22e('0x4b'))['toString']('ascii');_0x434aba=JSON[_0xb22e('0x49')](_0x17dcd2);if(!oauth['isValidIdToken'](_0x278735[_0xb22e('0x4c')],_0x402044[_0xb22e('0x4d')]))throw new Error(_0xb22e('0x4e'));redis[_0xb22e('0x4f')](_0x278735[_0xb22e('0x47')]);return oauth[_0xb22e('0x50')](_0x278735['code'],_0x402044);})[_0xb22e('0x13')](function(_0x21dfda){_0x402044[_0xb22e('0x51')]=_0x21dfda['access_token'];_0x402044['data6']=_0x21dfda[_0xb22e('0x52')];return db[_0xb22e('0x18')][_0xb22e('0x3e')]({'data5':_0x402044[_0xb22e('0x51')],'data6':_0x402044[_0xb22e('0x53')]},{'where':{'id':_0x402044['id']}});})[_0xb22e('0x13')](function(){oauth[_0xb22e('0x54')](_0x402044);socket[_0xb22e('0x55')]('microsoftAuthorization:success',{'id':_0x434aba['id']});return;})[_0xb22e('0x13')](respondWithStatusCode(_0x414a36,null))[_0xb22e('0x35')](function(_0x5a24ff){if(_0x434aba){socket[_0xb22e('0x55')]('microsoftAuthorization:error',{'id':_0x434aba['id']});}if(!_0x402044){logger['error']('Invalid\x20authentication\x20state\x20parameter',_0x5a24ff);return _0x414a36[_0xb22e('0x12')](0x1f4)[_0xb22e('0x56')](_0x5a24ff[_0xb22e('0x57')]);}logger['error'](_0xb22e('0x58'),_0x402044['id'],JSON[_0xb22e('0x59')](_0x5a24ff));});};
\ No newline at end of file
index bc6e604..e93bd15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcff4=['define','CloudProvider','cloud_providers','lodash','util','../../config/logger','api','moment','bluebird','path','./cloudProvider.attributes','exports'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0xcff4,0xf3));var _0x4cff=function(_0x4a7f38,_0x3fa077){_0x4a7f38=_0x4a7f38-0x0;var _0x3b0859=_0xcff4[_0x4a7f38];return _0x3b0859;};'use strict';var _=require(_0x4cff('0x0'));var util=require(_0x4cff('0x1'));var logger=require(_0x4cff('0x2'))(_0x4cff('0x3'));var moment=require(_0x4cff('0x4'));var BPromise=require(_0x4cff('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4cff('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4cff('0x7'));module[_0x4cff('0x8')]=function(_0x5a07c6,_0x3180dc){return _0x5a07c6[_0x4cff('0x9')](_0x4cff('0xa'),attributes,{'tableName':_0x4cff('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa119=['CloudProvider','cloud_providers','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define'];(function(_0x3bc022,_0x398082){var _0x4a19c6=function(_0x1e3281){while(--_0x1e3281){_0x3bc022['push'](_0x3bc022['shift']());}};_0x4a19c6(++_0x398082);}(_0xa119,0xf2));var _0x9a11=function(_0x3d4334,_0x2223c1){_0x3d4334=_0x3d4334-0x0;var _0x2b86b6=_0xa119[_0x3d4334];return _0x2b86b6;};'use strict';var _=require('lodash');var util=require(_0x9a11('0x0'));var logger=require(_0x9a11('0x1'))(_0x9a11('0x2'));var moment=require(_0x9a11('0x3'));var BPromise=require(_0x9a11('0x4'));var rp=require(_0x9a11('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9a11('0x6'));var config=require(_0x9a11('0x7'));var attributes=require('./cloudProvider.attributes');module[_0x9a11('0x8')]=function(_0xd5de1,_0x439e29){return _0xd5de1[_0x9a11('0x9')](_0x9a11('0xa'),attributes,{'tableName':_0x9a11('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 20184f4..3fe3365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7b1=['payload','iss','issuer','aud','audience','isAfter','unix','exp','resolve','then','data3','CloudProvider','findOne','refresh_token','POST','{TENANT_ID}','data2','data5','access_token','data6','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','decryptString','intervals','bind','catch','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','jsonwebtoken','moment','request-promise','util','../../components/encryptor','../../config/environment','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','openid','offline_access','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','map','type','Dynamics365','push','join','Outlook365','https://outlook.office365.com/IMAP.AccessAsUser.All','data7','replace','code','id_token','from','stringify','toString','randomBytes','hex','client_id','data1','response_type','redirect_uri','data4','response_mode','form_post','scope','state','nonce','login','oauth2Claims','oauth2/','set','decode'];(function(_0x6ac1a1,_0x436c6c){var _0x23dc70=function(_0x5d4173){while(--_0x5d4173){_0x6ac1a1['push'](_0x6ac1a1['shift']());}};_0x23dc70(++_0x436c6c);}(_0xa7b1,0x1e5));var _0x1a7b=function(_0x18dfa4,_0x2dd7f0){_0x18dfa4=_0x18dfa4-0x0;var _0x597085=_0xa7b1[_0x18dfa4];return _0x597085;};'use strict';var _=require(_0x1a7b('0x0'));var crypto=require('crypto');var jwt=require(_0x1a7b('0x1'));var moment=require(_0x1a7b('0x2'));var Redis=require('ioredis');var rp=require(_0x1a7b('0x3'));var util=require(_0x1a7b('0x4'));var encryptor=require(_0x1a7b('0x5'));var config=require(_0x1a7b('0x6'));var logger=require('../../config/logger')('api');var schedule=require(_0x1a7b('0x7'));var db=require(_0x1a7b('0x8'))['db'];config[_0x1a7b('0x9')]=_[_0x1a7b('0xa')](config[_0x1a7b('0x9')],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0x1a7b('0x9')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0x1a7b('0xb'),'profile','email',_0x1a7b('0xc'),'https://outlook.office365.com/IMAP.AccessAsUser.All',_0x1a7b('0xd'),_0x1a7b('0xe')],'Dynamics365':[_0x1a7b('0xb'),_0x1a7b('0xc')]};var MICROSOFT_AUTH_ENDPOINT=_0x1a7b('0xf');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x48a131){var _0x2ccc91=_[_0x1a7b('0x10')](AZURE_AUTH_SCOPES[_0x48a131[_0x1a7b('0x11')]]);if(_0x48a131[_0x1a7b('0x11')]===_0x1a7b('0x12'))_0x2ccc91[_0x1a7b('0x13')](_0x48a131['data7']+'/.default');return _0x2ccc91[_0x1a7b('0x14')]('\x20');}function getAccessTokenScope(_0x1b6f19){if(_0x1b6f19['type']===_0x1a7b('0x15'))return _0x1a7b('0x16');if(_0x1b6f19['type']===_0x1a7b('0x12'))return _0x1b6f19[_0x1a7b('0x17')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0xb7b042,_0x484811){var _0x280862=MICROSOFT_AUTH_URL[_0x1a7b('0x18')]('{TENANT_ID}',_0xb7b042['data2']);var _0x5b144a=[_0x1a7b('0x19'),_0x1a7b('0x1a')];var _0x35e12a=Buffer[_0x1a7b('0x1b')](JSON[_0x1a7b('0x1c')]({'id':_0x484811}))[_0x1a7b('0x1d')]('base64');var _0x46964b=crypto[_0x1a7b('0x1e')](0x10)[_0x1a7b('0x1d')](_0x1a7b('0x1f'));var _0x5eba12=getAuthorizationScopes(_0xb7b042);var _0x3d5ab4=[{'key':_0x1a7b('0x20'),'value':_0xb7b042[_0x1a7b('0x21')]},{'key':_0x1a7b('0x22'),'value':encodeURIComponent(_0x5b144a[_0x1a7b('0x14')]('\x20'))},{'key':_0x1a7b('0x23'),'value':_0xb7b042[_0x1a7b('0x24')]},{'key':_0x1a7b('0x25'),'value':_0x1a7b('0x26')},{'key':_0x1a7b('0x27'),'value':encodeURIComponent(_0x5eba12)},{'key':_0x1a7b('0x28'),'value':_0x35e12a},{'key':_0x1a7b('0x29'),'value':_0x46964b},{'key':'prompt','value':_0x1a7b('0x2a')}];var _0x25c5fe=_0x280862+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x3d5ab4,function(_0x4d4d2d){return _0x4d4d2d['key']+'='+_0x4d4d2d['value'];})['join']('&');_0xb7b042[_0x1a7b('0x2b')]={'issuer':_0x280862[_0x1a7b('0x18')](_0x1a7b('0x2c'),''),'audience':_0xb7b042['data1'],'state':_0x35e12a,'nonce':_0x46964b};redis[_0x1a7b('0x2d')](_0x35e12a,JSON['stringify'](_0xb7b042));return _0x25c5fe;}function isValidIdToken(_0x357e57,_0x489e32){try{var _0x1f7130=jwt[_0x1a7b('0x2e')](_0x357e57,{'complete':!![]});var _0xfde0e2=_0x1f7130[_0x1a7b('0x2f')];if(_0xfde0e2[_0x1a7b('0x30')]!==_0x489e32[_0x1a7b('0x31')])return![];if(_0xfde0e2[_0x1a7b('0x32')]!==_0x489e32[_0x1a7b('0x33')])return![];if(_0xfde0e2[_0x1a7b('0x29')]!==_0x489e32[_0x1a7b('0x29')])return![];if(moment()[_0x1a7b('0x34')](moment[_0x1a7b('0x35')](_0xfde0e2[_0x1a7b('0x36')])))return![];return!![];}catch(_0x1fb5e3){throw _0x1fb5e3;}}function refreshOauth2MicrosoftAccessToken(_0x4c07d8){return Promise[_0x1a7b('0x37')]()[_0x1a7b('0x38')](function(){if(_0x4c07d8[_0x1a7b('0x39')])return _0x4c07d8;return db[_0x1a7b('0x3a')][_0x1a7b('0x3b')]({'where':{'id':_0x4c07d8['id']},'raw':!![]});})[_0x1a7b('0x38')](function(_0x2aa3a4){var _0x2af9fe={'grant_type':_0x1a7b('0x3c'),'refresh_token':_0x2aa3a4['data6'],'scope':getAccessTokenScope(_0x2aa3a4),'redirect_uri':_0x2aa3a4[_0x1a7b('0x24')],'client_id':_0x2aa3a4['data1'],'client_secret':encryptor['decryptString'](_0x2aa3a4[_0x1a7b('0x39')])};var _0x5db3ab={'method':_0x1a7b('0x3d'),'uri':MICROSOFT_AUTH_URL[_0x1a7b('0x18')](_0x1a7b('0x3e'),_0x2aa3a4[_0x1a7b('0x3f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2af9fe,'json':!![]};return rp(_0x5db3ab);})[_0x1a7b('0x38')](function(_0x348091){_0x4c07d8[_0x1a7b('0x40')]=_0x348091[_0x1a7b('0x41')];_0x4c07d8[_0x1a7b('0x42')]=_0x348091['refresh_token'];return db['CloudProvider']['update']({'data5':_0x4c07d8['data5'],'data6':_0x4c07d8[_0x1a7b('0x42')]},{'where':{'id':_0x4c07d8['id']}});})[_0x1a7b('0x38')](function(){return _0x4c07d8;})['catch'](function(_0xccb27a){logger['error'](_0x1a7b('0x43'),_0x4c07d8['id'],_0xccb27a);});}function getOauth2MicrosoftAccessToken(_0x2b59f9,_0x22111){var _0x10a314={'grant_type':_0x1a7b('0x44'),'code':_0x2b59f9,'scope':getAccessTokenScope(_0x22111),'redirect_uri':_0x22111[_0x1a7b('0x24')],'client_id':_0x22111['data1'],'client_secret':encryptor[_0x1a7b('0x45')](_0x22111[_0x1a7b('0x39')])};var _0x1f54bf={'method':_0x1a7b('0x3d'),'uri':MICROSOFT_AUTH_URL['replace'](_0x1a7b('0x3e'),_0x22111[_0x1a7b('0x3f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x10a314,'json':!![]};return rp(_0x1f54bf);}function startRefreshInterval(_0x592e47){var _0x32e260=schedule[_0x1a7b('0x46')];if(_0x32e260[_0x592e47['id']])clearInterval(_0x32e260[_0x592e47['id']]);_0x32e260[_0x592e47['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x1a7b('0x47')](this,{'id':_0x592e47['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x1a7b('0x46')]=_0x32e260;}function startAllRefreshIntervals(){return db['CloudProvider']['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x33d866){var _0x566c7c=_0x33d866[_0x1a7b('0x10')](function(_0x41b224){return refreshOauth2MicrosoftAccessToken(_0x41b224)['then'](function(_0x346c93){startRefreshInterval(_0x346c93);});});return Promise['all'](_0x566c7c);})[_0x1a7b('0x48')](function(_0x3462d9){var _0x1f723f=_0x3462d9?util['inspect'](_0x3462d9,{'showHidden':![],'depth':null}):'';logger[_0x1a7b('0x49')](_0x1a7b('0x4a'),_0x1f723f);});}module[_0x1a7b('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xb9d0=['stringify','payload','iss','issuer','aud','audience','unix','exp','resolve','then','data3','CloudProvider','refresh_token','data4','decryptString','data5','access_token','data6','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','POST','intervals','findAll','map','all','exports','lodash','crypto','moment','ioredis','request-promise','util','../../components/encryptor','../../config/logger','../../config/schedule/cloud-provider','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','https://outlook.office.com/POP.AccessAsUser.All','/authorize','type','Dynamics365','push','join','Outlook365','https://outlook.office365.com/IMAP.AccessAsUser.All','data7','/.default','{TENANT_ID}','data2','code','id_token','from','toString','randomBytes','hex','client_id','data1','response_type','redirect_uri','response_mode','scope','state','nonce','prompt','login','oauth2Claims','replace','set'];(function(_0x342952,_0x441653){var _0x89327=function(_0x3838e3){while(--_0x3838e3){_0x342952['push'](_0x342952['shift']());}};_0x89327(++_0x441653);}(_0xb9d0,0x14d));var _0x0b9d=function(_0x167d21,_0x5e550d){_0x167d21=_0x167d21-0x0;var _0x2fa25c=_0xb9d0[_0x167d21];return _0x2fa25c;};'use strict';var _=require(_0x0b9d('0x0'));var crypto=require(_0x0b9d('0x1'));var jwt=require('jsonwebtoken');var moment=require(_0x0b9d('0x2'));var Redis=require(_0x0b9d('0x3'));var rp=require(_0x0b9d('0x4'));var util=require(_0x0b9d('0x5'));var encryptor=require(_0x0b9d('0x6'));var config=require('../../config/environment');var logger=require(_0x0b9d('0x7'))('api');var schedule=require(_0x0b9d('0x8'));var db=require('../../mysqldb')['db'];config[_0x0b9d('0x9')]=_[_0x0b9d('0xa')](config[_0x0b9d('0x9')],{'host':_0x0b9d('0xb'),'port':0x18eb});var redis=new Redis(config[_0x0b9d('0x9')]);var MICROSOFT_AUTH_URL=_0x0b9d('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x0b9d('0xd'),_0x0b9d('0xe'),_0x0b9d('0xf'),'offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All',_0x0b9d('0x10'),'https://outlook.office.com/SMTP.Send'],'Dynamics365':[_0x0b9d('0xd'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x0b9d('0x11');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x1ad7d8){var _0x5451a5=_['map'](AZURE_AUTH_SCOPES[_0x1ad7d8[_0x0b9d('0x12')]]);if(_0x1ad7d8[_0x0b9d('0x12')]===_0x0b9d('0x13'))_0x5451a5[_0x0b9d('0x14')](_0x1ad7d8['data7']+'/.default');return _0x5451a5[_0x0b9d('0x15')]('\x20');}function getAccessTokenScope(_0x2f12e7){if(_0x2f12e7[_0x0b9d('0x12')]===_0x0b9d('0x16'))return _0x0b9d('0x17');if(_0x2f12e7[_0x0b9d('0x12')]==='Dynamics365')return _0x2f12e7[_0x0b9d('0x18')]+_0x0b9d('0x19');}function generateMicrosoftAuthorizationUrl(_0x591939,_0x3ac40d){var _0x288cac=MICROSOFT_AUTH_URL['replace'](_0x0b9d('0x1a'),_0x591939[_0x0b9d('0x1b')]);var _0x566e02=[_0x0b9d('0x1c'),_0x0b9d('0x1d')];var _0x29790a=Buffer[_0x0b9d('0x1e')](JSON['stringify']({'id':_0x3ac40d}))[_0x0b9d('0x1f')]('base64');var _0x5e7f92=crypto[_0x0b9d('0x20')](0x10)['toString'](_0x0b9d('0x21'));var _0x1e6a02=getAuthorizationScopes(_0x591939);var _0x1dfe68=[{'key':_0x0b9d('0x22'),'value':_0x591939[_0x0b9d('0x23')]},{'key':_0x0b9d('0x24'),'value':encodeURIComponent(_0x566e02[_0x0b9d('0x15')]('\x20'))},{'key':_0x0b9d('0x25'),'value':_0x591939['data4']},{'key':_0x0b9d('0x26'),'value':'form_post'},{'key':_0x0b9d('0x27'),'value':encodeURIComponent(_0x1e6a02)},{'key':_0x0b9d('0x28'),'value':_0x29790a},{'key':_0x0b9d('0x29'),'value':_0x5e7f92},{'key':_0x0b9d('0x2a'),'value':_0x0b9d('0x2b')}];var _0x237596=_0x288cac+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x1dfe68,function(_0x173d16){return _0x173d16['key']+'='+_0x173d16['value'];})[_0x0b9d('0x15')]('&');_0x591939[_0x0b9d('0x2c')]={'issuer':_0x288cac[_0x0b9d('0x2d')]('oauth2/',''),'audience':_0x591939['data1'],'state':_0x29790a,'nonce':_0x5e7f92};redis[_0x0b9d('0x2e')](_0x29790a,JSON[_0x0b9d('0x2f')](_0x591939));return _0x237596;}function isValidIdToken(_0x369a46,_0x5267c6){try{var _0x5dea53=jwt['decode'](_0x369a46,{'complete':!![]});var _0x522a1d=_0x5dea53[_0x0b9d('0x30')];if(_0x522a1d[_0x0b9d('0x31')]!==_0x5267c6[_0x0b9d('0x32')])return![];if(_0x522a1d[_0x0b9d('0x33')]!==_0x5267c6[_0x0b9d('0x34')])return![];if(_0x522a1d[_0x0b9d('0x29')]!==_0x5267c6['nonce'])return![];if(moment()['isAfter'](moment[_0x0b9d('0x35')](_0x522a1d[_0x0b9d('0x36')])))return![];return!![];}catch(_0x3a31d0){throw _0x3a31d0;}}function refreshOauth2MicrosoftAccessToken(_0x743d8f){return Promise[_0x0b9d('0x37')]()[_0x0b9d('0x38')](function(){if(_0x743d8f[_0x0b9d('0x39')])return _0x743d8f;return db[_0x0b9d('0x3a')]['findOne']({'where':{'id':_0x743d8f['id']},'raw':!![]});})[_0x0b9d('0x38')](function(_0x7d12c7){var _0x160ed0={'grant_type':_0x0b9d('0x3b'),'refresh_token':_0x7d12c7['data6'],'scope':getAccessTokenScope(_0x7d12c7),'redirect_uri':_0x7d12c7[_0x0b9d('0x3c')],'client_id':_0x7d12c7[_0x0b9d('0x23')],'client_secret':encryptor[_0x0b9d('0x3d')](_0x7d12c7[_0x0b9d('0x39')])};var _0x5f4586={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x0b9d('0x2d')]('{TENANT_ID}',_0x7d12c7[_0x0b9d('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x160ed0,'json':!![]};return rp(_0x5f4586);})[_0x0b9d('0x38')](function(_0x40d033){_0x743d8f[_0x0b9d('0x3e')]=_0x40d033[_0x0b9d('0x3f')];_0x743d8f[_0x0b9d('0x40')]=_0x40d033[_0x0b9d('0x3b')];return db['CloudProvider'][_0x0b9d('0x41')]({'data5':_0x743d8f[_0x0b9d('0x3e')],'data6':_0x743d8f[_0x0b9d('0x40')]},{'where':{'id':_0x743d8f['id']}});})[_0x0b9d('0x38')](function(){return _0x743d8f;})[_0x0b9d('0x42')](function(_0x1cd6f1){logger[_0x0b9d('0x43')](_0x0b9d('0x44'),_0x743d8f['id'],_0x1cd6f1);});}function getOauth2MicrosoftAccessToken(_0x337ab9,_0x1a41e7){var _0x11e308={'grant_type':_0x0b9d('0x45'),'code':_0x337ab9,'scope':getAccessTokenScope(_0x1a41e7),'redirect_uri':_0x1a41e7[_0x0b9d('0x3c')],'client_id':_0x1a41e7[_0x0b9d('0x23')],'client_secret':encryptor['decryptString'](_0x1a41e7[_0x0b9d('0x39')])};var _0x42bb92={'method':_0x0b9d('0x46'),'uri':MICROSOFT_AUTH_URL['replace'](_0x0b9d('0x1a'),_0x1a41e7[_0x0b9d('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x11e308,'json':!![]};return rp(_0x42bb92);}function startRefreshInterval(_0x5230b8){var _0x24a224=schedule[_0x0b9d('0x47')];if(_0x24a224[_0x5230b8['id']])clearInterval(_0x24a224[_0x5230b8['id']]);_0x24a224[_0x5230b8['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x5230b8['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x24a224;}function startAllRefreshIntervals(){return db[_0x0b9d('0x3a')][_0x0b9d('0x48')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x0b9d('0x38')](function(_0x55f464){var _0x31acce=_0x55f464[_0x0b9d('0x49')](function(_0x7ce2de){return refreshOauth2MicrosoftAccessToken(_0x7ce2de)[_0x0b9d('0x38')](function(_0x4b6825){startRefreshInterval(_0x4b6825);});});return Promise[_0x0b9d('0x4a')](_0x31acce);})['catch'](function(_0x5195cb){var _0x38c08f=_0x5195cb?util['inspect'](_0x5195cb,{'showHidden':![],'depth':null}):'';logger['error']('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x38c08f);});}module[_0x0b9d('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index f2177af..0e82c7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x17d06b,_0x91eb8b){var _0x43f5df=function(_0x34b1b7){while(--_0x34b1b7){_0x17d06b['push'](_0x17d06b['shift']());}};_0x43f5df(++_0x91eb8b);}(_0xef0f,0x168));var _0xfef0=function(_0x53cf5a,_0x4fe8b7){_0x53cf5a=_0x53cf5a-0x0;var _0x9fbde2=_0xef0f[_0x53cf5a];return _0x9fbde2;};'use strict';var _=require(_0xfef0('0x0'));var util=require('util');var moment=require(_0xfef0('0x1'));var BPromise=require(_0xfef0('0x2'));var rs=require(_0xfef0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfef0('0x4'))['db'];var utils=require(_0xfef0('0x5'));var logger=require(_0xfef0('0x6'))('rpc');var config=require(_0xfef0('0x7'));var jayson=require(_0xfef0('0x8'));var client=jayson[_0xfef0('0x9')][_0xfef0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xad43e,_0x11dfd7,_0x5130bd){return new BPromise(function(_0x41ec94,_0x58cf6d){return client[_0xfef0('0xb')](_0xad43e,_0x5130bd)[_0xfef0('0xc')](function(_0x3a81cc){logger[_0xfef0('0xd')](_0xfef0('0xe'),_0x11dfd7,_0xfef0('0xf'));logger[_0xfef0('0x10')](_0xfef0('0x11'),_0x11dfd7,_0xfef0('0xf'),JSON[_0xfef0('0x12')](_0x3a81cc));if(_0x3a81cc[_0xfef0('0x13')]){if(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x14')]===0x1f4){logger[_0xfef0('0x13')]('CloudProvider,\x20%s,\x20%s',_0x11dfd7,_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);return _0x58cf6d(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);}logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x3a81cc[_0xfef0('0x13')]['message']);return _0x41ec94(_0x3a81cc[_0xfef0('0x13')]['message']);}else{logger['info']('CloudProvider,\x20%s,\x20%s',_0x11dfd7,_0xfef0('0xf'));_0x41ec94(_0x3a81cc[_0xfef0('0x16')][_0xfef0('0x15')]);}})[_0xfef0('0x17')](function(_0x2a96d9){logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x2a96d9);_0x58cf6d(_0x2a96d9);});});}
\ No newline at end of file
+var _0x5464=['info','CloudProvider,\x20%s,\x20%s','debug','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x5a8d1a,_0x249fb3){var _0x340d35=function(_0x2834ee){while(--_0x2834ee){_0x5a8d1a['push'](_0x5a8d1a['shift']());}};_0x340d35(++_0x249fb3);}(_0x5464,0x15d));var _0x4546=function(_0x517660,_0x431fca){_0x517660=_0x517660-0x0;var _0x22d562=_0x5464[_0x517660];return _0x22d562;};'use strict';var _=require(_0x4546('0x0'));var util=require(_0x4546('0x1'));var moment=require(_0x4546('0x2'));var BPromise=require('bluebird');var rs=require(_0x4546('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4546('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4546('0x5'))(_0x4546('0x6'));var config=require(_0x4546('0x7'));var jayson=require(_0x4546('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5c5e09,_0x224c7c,_0x36c875){return new BPromise(function(_0x1a76c1,_0x2e860a){return client[_0x4546('0x9')](_0x5c5e09,_0x36c875)[_0x4546('0xa')](function(_0x11d63e){logger[_0x4546('0xb')](_0x4546('0xc'),_0x224c7c,'request\x20sent');logger[_0x4546('0xd')](_0x4546('0xe'),_0x224c7c,_0x4546('0xf'),JSON['stringify'](_0x11d63e));if(_0x11d63e[_0x4546('0x10')]){if(_0x11d63e[_0x4546('0x10')][_0x4546('0x11')]===0x1f4){logger[_0x4546('0x10')]('CloudProvider,\x20%s,\x20%s',_0x224c7c,_0x11d63e['error'][_0x4546('0x12')]);return _0x2e860a(_0x11d63e['error']['message']);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x224c7c,_0x11d63e['error']['message']);return _0x1a76c1(_0x11d63e[_0x4546('0x10')]['message']);}else{logger[_0x4546('0xb')]('CloudProvider,\x20%s,\x20%s',_0x224c7c,_0x4546('0xf'));_0x1a76c1(_0x11d63e['result'][_0x4546('0x12')]);}})[_0x4546('0x13')](function(_0x24b32a){logger[_0x4546('0x10')](_0x4546('0xc'),_0x224c7c,_0x24b32a);_0x2e860a(_0x24b32a);});});}
\ No newline at end of file
index 12ed196..7d4c7dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['put','update','delete','destroy','/:id/oauth2/microsoft/authorize/','/oauth2/microsoft/callback','oauth2MicrosoftCallback','exports','Router','./cloudProvider.controller','get','isAuthenticated','/:id','post','create'];(function(_0x296135,_0x5accda){var _0x1fc384=function(_0xfac084){while(--_0xfac084){_0x296135['push'](_0x296135['shift']());}};_0x1fc384(++_0x5accda);}(_0xadb5,0xad));var _0x5adb=function(_0x2f9b57,_0x117eb6){_0x2f9b57=_0x2f9b57-0x0;var _0x494448=_0xadb5[_0x2f9b57];return _0x494448;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['index']);router[_0x5adb('0x2')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller['show']);router[_0x5adb('0x5')]('/',auth[_0x5adb('0x3')](),controller[_0x5adb('0x6')]);router[_0x5adb('0x7')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0x8')]);router[_0x5adb('0x9')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0xa')]);router[_0x5adb('0x2')](_0x5adb('0xb'),auth[_0x5adb('0x3')](),controller['oauth2MicrosoftAuthorize']);router['post'](_0x5adb('0xc'),controller[_0x5adb('0xd')]);module[_0x5adb('0xe')]=router;
\ No newline at end of file
+var _0xc4aa=['put','/:id','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','/oauth2/microsoft/callback','exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','show','post','create'];(function(_0x2479a0,_0x5a9af6){var _0x237d29=function(_0x4cd9a6){while(--_0x4cd9a6){_0x2479a0['push'](_0x2479a0['shift']());}};_0x237d29(++_0x5a9af6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xc4aa[_0x53ccf2];return _0x5a2964;};'use strict';var express=require(_0xac4a('0x0'));var router=express[_0xac4a('0x1')]();var auth=require(_0xac4a('0x2'));var controller=require(_0xac4a('0x3'));router[_0xac4a('0x4')]('/',auth[_0xac4a('0x5')](),controller['index']);router['get']('/:id',auth[_0xac4a('0x5')](),controller[_0xac4a('0x6')]);router[_0xac4a('0x7')]('/',auth[_0xac4a('0x5')](),controller[_0xac4a('0x8')]);router[_0xac4a('0x9')](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller['update']);router['delete'](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xb')]);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xd')]);router['post'](_0xac4a('0xe'),controller['oauth2MicrosoftCallback']);module[_0xac4a('0xf')]=router;
\ No newline at end of file
index d8bcad5..71af239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12dc=['sequelize','exports','name','STRING'];(function(_0x3ee9cf,_0x34e996){var _0x2d0ec4=function(_0x145c1){while(--_0x145c1){_0x3ee9cf['push'](_0x3ee9cf['shift']());}};_0x2d0ec4(++_0x34e996);}(_0x12dc,0xb4));var _0xc12d=function(_0x1a0996,_0x199f94){_0x1a0996=_0x1a0996-0x0;var _0x2ec959=_0x12dc[_0x1a0996];return _0x2ec959;};'use strict';var Sequelize=require(_0xc12d('0x0'));module[_0xc12d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xc12d('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xc12d('0x3')]},'companyId':{'type':Sequelize[_0xc12d('0x3')]},'website':{'type':Sequelize[_0xc12d('0x3')]},'phone':{'type':Sequelize[_0xc12d('0x3')]},'fax':{'type':Sequelize[_0xc12d('0x3')]},'type':{'type':Sequelize[_0xc12d('0x3')]},'street':{'type':Sequelize[_0xc12d('0x3')]},'postalCode':{'type':Sequelize[_0xc12d('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xc12d('0x3')]},'email':{'type':Sequelize[_0xc12d('0x3')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xc12d('0x3')]},'sStreet':{'type':Sequelize[_0xc12d('0x3')]},'sPostalCode':{'type':Sequelize[_0xc12d('0x3')]},'sCity':{'type':Sequelize[_0xc12d('0x3')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc12d('0x3')]}};
\ No newline at end of file
+var _0xb5b3=['exports','STRING','name','sequelize'];(function(_0x56083d,_0x4014ee){var _0x332f02=function(_0x43b9ec){while(--_0x43b9ec){_0x56083d['push'](_0x56083d['shift']());}};_0x332f02(++_0x4014ee);}(_0xb5b3,0x143));var _0x3b5b=function(_0x36a39e,_0x564ec5){_0x36a39e=_0x36a39e-0x0;var _0x345bca=_0xb5b3[_0x36a39e];return _0x345bca;};'use strict';var Sequelize=require(_0x3b5b('0x0'));module[_0x3b5b('0x1')]={'name':{'type':Sequelize[_0x3b5b('0x2')],'unique':_0x3b5b('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x3b5b('0x2')]},'website':{'type':Sequelize[_0x3b5b('0x2')]},'phone':{'type':Sequelize[_0x3b5b('0x2')]},'fax':{'type':Sequelize[_0x3b5b('0x2')]},'type':{'type':Sequelize[_0x3b5b('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x3b5b('0x2')]},'city':{'type':Sequelize[_0x3b5b('0x2')]},'country':{'type':Sequelize[_0x3b5b('0x2')]},'email':{'type':Sequelize[_0x3b5b('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x3b5b('0x2')]},'sStreet':{'type':Sequelize[_0x3b5b('0x2')]},'sPostalCode':{'type':Sequelize[_0x3b5b('0x2')]},'sCity':{'type':Sequelize[_0x3b5b('0x2')]},'sCountry':{'type':Sequelize[_0x3b5b('0x2')]},'description':{'type':Sequelize[_0x3b5b('0x2')]}};
\ No newline at end of file
index 02d4f4b..6c83316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ca=['api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','Companies','name','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','user','UserProfileSection','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','params','addContacts','CmContact','ids','omit','getContacts','findOne','eml-format','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x414626,_0x9acee0){var _0x52cc32=function(_0x12f089){while(--_0x12f089){_0x414626['push'](_0x414626['shift']());}};_0x52cc32(++_0x9acee0);}(_0x32ca,0x13c));var _0xa32c=function(_0x1d90cd,_0x1d2745){_0x1d90cd=_0x1d90cd-0x0;var _0x81bbac=_0x32ca[_0x1d90cd];return _0x81bbac;};'use strict';var emlformat=require(_0xa32c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa32c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa32c('0x2'));var BPromise=require(_0xa32c('0x3'));var Mustache=require('mustache');var util=require(_0xa32c('0x4'));var path=require(_0xa32c('0x5'));var sox=require(_0xa32c('0x6'));var csv=require(_0xa32c('0x7'));var ejs=require(_0xa32c('0x8'));var fs=require('fs');var fs_extra=require(_0xa32c('0x9'));var _=require(_0xa32c('0xa'));var squel=require('squel');var crypto=require(_0xa32c('0xb'));var jsforce=require(_0xa32c('0xc'));var deskjs=require(_0xa32c('0xd'));var toCsv=require(_0xa32c('0x7'));var querystring=require(_0xa32c('0xe'));var Papa=require(_0xa32c('0xf'));var Redis=require(_0xa32c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa32c('0x11'));var as=require(_0xa32c('0x12'));var hardwareService=require(_0xa32c('0x13'));var logger=require('../../config/logger')(_0xa32c('0x14'));var utils=require(_0xa32c('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa32c('0x16'));var db=require(_0xa32c('0x17'))['db'];function respondWithStatusCode(_0x33562e,_0x31fef3){_0x31fef3=_0x31fef3||0xcc;return function(_0x371340){if(_0x371340){return _0x33562e[_0xa32c('0x18')](_0x31fef3);}return _0x33562e[_0xa32c('0x19')](_0x31fef3)[_0xa32c('0x1a')]();};}function respondWithResult(_0x470a75,_0x123eef){_0x123eef=_0x123eef||0xc8;return function(_0x38ebf9){if(_0x38ebf9){return _0x470a75['status'](_0x123eef)[_0xa32c('0x1b')](_0x38ebf9);}};}function respondWithFilteredResult(_0xd69b9e,_0x2de700){return function(_0x19d1cc){if(_0x19d1cc){var _0x1ee743=typeof _0x2de700[_0xa32c('0x1c')]===_0xa32c('0x1d')&&typeof _0x2de700[_0xa32c('0x1e')]==='undefined';var _0x2eba43=_0x19d1cc[_0xa32c('0x1f')];var _0x558ba6=_0x1ee743?0x0:_0x2de700['offset'];var _0xa9b1be=_0x1ee743?_0x19d1cc[_0xa32c('0x1f')]:_0x2de700[_0xa32c('0x1c')]+_0x2de700[_0xa32c('0x1e')];var _0x362a0a;if(_0xa9b1be>=_0x2eba43){_0xa9b1be=_0x2eba43;_0x362a0a=0xc8;}else{_0x362a0a=0xce;}_0xd69b9e['status'](_0x362a0a);return _0xd69b9e[_0xa32c('0x20')](_0xa32c('0x21'),_0x558ba6+'-'+_0xa9b1be+'/'+_0x2eba43)[_0xa32c('0x1b')](_0x19d1cc);}return null;};}function patchUpdates(_0x26955a){return function(_0x2d329f){try{jsonpatch[_0xa32c('0x22')](_0x2d329f,_0x26955a,!![]);}catch(_0x271644){return BPromise['reject'](_0x271644);}return _0x2d329f[_0xa32c('0x23')]();};}function saveUpdates(_0x4f15ed,_0x275b2a){return function(_0x4e2362){if(_0x4e2362){return _0x4e2362['update'](_0x4f15ed)[_0xa32c('0x24')](function(_0x63b687){return _0x63b687;});}return null;};}function removeEntity(_0x3b6738,_0x3d39b0){return function(_0x2f12ac){if(_0x2f12ac){return _0x2f12ac[_0xa32c('0x25')]()[_0xa32c('0x24')](function(){var _0x3d10ea=_0x2f12ac[_0xa32c('0x26')]({'plain':!![]});var _0x5dbbed=_0xa32c('0x27');return db['UserProfileResource'][_0xa32c('0x25')]({'where':{'type':_0x5dbbed,'resourceId':_0x3d10ea['id']}})[_0xa32c('0x24')](function(){return _0x2f12ac;});})[_0xa32c('0x24')](function(){_0x3b6738[_0xa32c('0x19')](0xcc)[_0xa32c('0x1a')]();});}};}function handleEntityNotFound(_0x3762b8,_0x579d3d){return function(_0x39eb03){if(!_0x39eb03){_0x3762b8[_0xa32c('0x18')](0x194);}return _0x39eb03;};}function handleError(_0x435bf4,_0x594723){_0x594723=_0x594723||0x1f4;return function(_0xc16e16){logger['error'](_0xc16e16['stack']);if(_0xc16e16[_0xa32c('0x28')]){delete _0xc16e16[_0xa32c('0x28')];}_0x435bf4[_0xa32c('0x19')](_0x594723)['send'](_0xc16e16);};}exports['index']=function(_0x4640cb,_0x2487f3){var _0x68569f={},_0x1821dd={},_0x309c57={'count':0x0,'rows':[]};return db[_0xa32c('0x29')][_0xa32c('0x2a')]()[_0xa32c('0x24')](function(_0x11aa0e){_0x1821dd[_0xa32c('0x2b')]=_[_0xa32c('0x2c')](_0x11aa0e);_0x1821dd[_0xa32c('0x2d')]=_['keys'](_0x4640cb[_0xa32c('0x2d')]);_0x1821dd[_0xa32c('0x2e')]=_[_0xa32c('0x2f')](_0x1821dd['model'],_0x1821dd[_0xa32c('0x2d')]);_0x68569f[_0xa32c('0x30')]=_[_0xa32c('0x2f')](_0x1821dd[_0xa32c('0x2b')],qs['fields'](_0x4640cb[_0xa32c('0x2d')][_0xa32c('0x31')]));_0x68569f[_0xa32c('0x30')]=_0x68569f[_0xa32c('0x30')][_0xa32c('0x32')]?_0x68569f[_0xa32c('0x30')]:_0x1821dd[_0xa32c('0x2b')];if(!_0x4640cb['query'][_0xa32c('0x33')](_0xa32c('0x34'))){_0x68569f[_0xa32c('0x1e')]=qs[_0xa32c('0x1e')](_0x4640cb[_0xa32c('0x2d')][_0xa32c('0x1e')]);_0x68569f[_0xa32c('0x1c')]=qs[_0xa32c('0x1c')](_0x4640cb[_0xa32c('0x2d')]['offset']);}_0x68569f['order']=qs[_0xa32c('0x35')](_0x4640cb['query'][_0xa32c('0x35')]);_0x68569f[_0xa32c('0x36')]=qs['filters'](_[_0xa32c('0x37')](_0x4640cb[_0xa32c('0x2d')],_0x1821dd['filters']),_0x11aa0e);if(_0x4640cb[_0xa32c('0x2d')][_0xa32c('0x38')]){_0x68569f[_0xa32c('0x36')]=_[_0xa32c('0x39')](_0x68569f[_0xa32c('0x36')],{'$or':_[_0xa32c('0x3a')](_0x68569f[_0xa32c('0x30')],function(_0x1c9be6){var _0x5eaf38={};_0x5eaf38[_0x1c9be6]={'$like':'%'+_0x4640cb[_0xa32c('0x2d')][_0xa32c('0x38')]+'%'};return _0x5eaf38;})});}_0x68569f=_[_0xa32c('0x39')]({},_0x68569f,_0x4640cb[_0xa32c('0x3b')]);var _0x190ef8={'where':_0x68569f['where']};return db[_0xa32c('0x29')][_0xa32c('0x1f')](_0x190ef8)['then'](function(_0x5c0fee){_0x309c57[_0xa32c('0x1f')]=_0x5c0fee;if(_0x4640cb[_0xa32c('0x2d')][_0xa32c('0x3c')]){_0x68569f[_0xa32c('0x3d')]=[{'all':!![]}];}return db[_0xa32c('0x29')][_0xa32c('0x3e')](_0x68569f);})[_0xa32c('0x24')](function(_0x5e66be){_0x309c57[_0xa32c('0x3f')]=_0x5e66be;return _0x309c57;})['then'](respondWithFilteredResult(_0x2487f3,_0x68569f))[_0xa32c('0x40')](handleError(_0x2487f3,null));})[_0xa32c('0x40')](handleError(_0x2487f3,null));};exports[_0xa32c('0x41')]=function(_0x19ed9a,_0xb4d235){var _0x4272e5={'raw':![],'where':{'id':_0x19ed9a['params']['id']}},_0x48e66d={};_0x48e66d['model']=_['keys'](db[_0xa32c('0x29')][_0xa32c('0x42')]);_0x48e66d[_0xa32c('0x2d')]=_['keys'](_0x19ed9a[_0xa32c('0x2d')]);_0x48e66d[_0xa32c('0x2e')]=_['intersection'](_0x48e66d[_0xa32c('0x2b')],_0x48e66d[_0xa32c('0x2d')]);_0x4272e5[_0xa32c('0x30')]=_['intersection'](_0x48e66d[_0xa32c('0x2b')],qs[_0xa32c('0x31')](_0x19ed9a[_0xa32c('0x2d')][_0xa32c('0x31')]));_0x4272e5[_0xa32c('0x30')]=_0x4272e5[_0xa32c('0x30')][_0xa32c('0x32')]?_0x4272e5[_0xa32c('0x30')]:_0x48e66d[_0xa32c('0x2b')];if(_0x19ed9a[_0xa32c('0x2d')][_0xa32c('0x3c')]){_0x4272e5['include']=[{'all':!![]}];}_0x4272e5=_[_0xa32c('0x39')]({},_0x4272e5,_0x19ed9a['options']);return db['CmCompany']['find'](_0x4272e5)[_0xa32c('0x24')](handleEntityNotFound(_0xb4d235,null))[_0xa32c('0x24')](respondWithResult(_0xb4d235,null))[_0xa32c('0x40')](handleError(_0xb4d235,null));};exports[_0xa32c('0x43')]=function(_0x2f9d64,_0x4567ec){return db[_0xa32c('0x29')][_0xa32c('0x43')](_0x2f9d64[_0xa32c('0x44')],{})[_0xa32c('0x24')](function(_0x4d9c44){var _0x9a3e3c=_0x2f9d64[_0xa32c('0x45')][_0xa32c('0x26')]({'plain':!![]});if(!_0x9a3e3c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x9a3e3c['role']===_0xa32c('0x45')){var _0x37e161=_0x4d9c44[_0xa32c('0x26')]({'plain':!![]});var _0x4c61fa=_0xa32c('0x27');return db[_0xa32c('0x46')]['find']({'where':{'name':_0x4c61fa,'userProfileId':_0x9a3e3c[_0xa32c('0x47')]},'raw':!![]})[_0xa32c('0x24')](function(_0x2487cf){if(_0x2487cf&&_0x2487cf['autoAssociation']===0x0){return db[_0xa32c('0x48')][_0xa32c('0x43')]({'name':_0x37e161[_0xa32c('0x28')],'resourceId':_0x37e161['id'],'type':_0x2487cf['name'],'sectionId':_0x2487cf['id']},{})[_0xa32c('0x24')](function(){return _0x4d9c44;});}else{return _0x4d9c44;}})[_0xa32c('0x40')](function(_0x421153){logger[_0xa32c('0x49')](_0xa32c('0x4a'),_0x421153);throw _0x421153;});}return _0x4d9c44;})['then'](respondWithResult(_0x4567ec,0xc9))[_0xa32c('0x40')](handleError(_0x4567ec,null));};exports[_0xa32c('0x4b')]=function(_0x21de4a,_0x11dbda){if(_0x21de4a[_0xa32c('0x44')]['id']){delete _0x21de4a[_0xa32c('0x44')]['id'];}return db[_0xa32c('0x29')][_0xa32c('0x4c')]({'where':{'id':_0x21de4a[_0xa32c('0x4d')]['id']}})[_0xa32c('0x24')](handleEntityNotFound(_0x11dbda,null))['then'](saveUpdates(_0x21de4a['body'],null))['then'](respondWithResult(_0x11dbda,null))[_0xa32c('0x40')](handleError(_0x11dbda,null));};exports[_0xa32c('0x25')]=function(_0x2256d5,_0x333fb3){return db['CmCompany'][_0xa32c('0x4c')]({'where':{'id':_0x2256d5['params']['id']}})[_0xa32c('0x24')](handleEntityNotFound(_0x333fb3,null))[_0xa32c('0x24')](removeEntity(_0x333fb3,null))[_0xa32c('0x40')](handleError(_0x333fb3,null));};exports[_0xa32c('0x2a')]=function(_0x29bd11,_0x4ccc10){return db[_0xa32c('0x29')]['describe']()[_0xa32c('0x24')](respondWithResult(_0x4ccc10,null))['catch'](handleError(_0x4ccc10,null));};exports[_0xa32c('0x4e')]=function(_0x5a91c6,_0x5063bd,_0x3b61c8){return db[_0xa32c('0x4f')][_0xa32c('0x4c')]({'where':{'id':_0x5a91c6['params']['id']}})[_0xa32c('0x24')](handleEntityNotFound(_0x5063bd,null))['then'](function(_0x59f8e3){if(_0x59f8e3){return _0x59f8e3[_0xa32c('0x4e')](_0x5a91c6[_0xa32c('0x44')][_0xa32c('0x50')],_[_0xa32c('0x51')](_0x5a91c6['body'],[_0xa32c('0x50'),'id'])||{});}})[_0xa32c('0x24')](respondWithResult(_0x5063bd,null))['catch'](handleError(_0x5063bd,null));};exports[_0xa32c('0x52')]=function(_0x1bf48f,_0x50cf2b,_0x570475){var _0x55e186={};var _0x13dce3={};var _0x303ba0;var _0x80a8c8;return db[_0xa32c('0x29')][_0xa32c('0x53')]({'where':{'id':_0x1bf48f[_0xa32c('0x4d')]['id']}})[_0xa32c('0x24')](handleEntityNotFound(_0x50cf2b,null))['then'](function(_0x23b3e6){if(_0x23b3e6){_0x303ba0=_0x23b3e6;_0x13dce3['model']=_[_0xa32c('0x2c')](db['CmContact'][_0xa32c('0x42')]);_0x13dce3[_0xa32c('0x2d')]=_[_0xa32c('0x2c')](_0x1bf48f[_0xa32c('0x2d')]);_0x13dce3[_0xa32c('0x2e')]=_[_0xa32c('0x2f')](_0x13dce3[_0xa32c('0x2b')],_0x13dce3['query']);_0x55e186['attributes']=_[_0xa32c('0x2f')](_0x13dce3[_0xa32c('0x2b')],qs[_0xa32c('0x31')](_0x1bf48f['query'][_0xa32c('0x31')]));_0x55e186[_0xa32c('0x30')]=_0x55e186[_0xa32c('0x30')]['length']?_0x55e186[_0xa32c('0x30')]:_0x13dce3[_0xa32c('0x2b')];_0x55e186['order']=qs[_0xa32c('0x35')](_0x1bf48f['query'][_0xa32c('0x35')]);_0x55e186[_0xa32c('0x36')]=qs['filters'](_[_0xa32c('0x37')](_0x1bf48f['query'],_0x13dce3[_0xa32c('0x2e')]));if(_0x1bf48f['query'][_0xa32c('0x38')]){_0x55e186[_0xa32c('0x36')]=_[_0xa32c('0x39')](_0x55e186[_0xa32c('0x36')],{'$or':_[_0xa32c('0x3a')](_0x55e186[_0xa32c('0x30')],function(_0x41f04e){var _0xdb95e={};_0xdb95e[_0x41f04e]={'$like':'%'+_0x1bf48f['query'][_0xa32c('0x38')]+'%'};return _0xdb95e;})});}_0x55e186=_[_0xa32c('0x39')]({},_0x55e186,_0x1bf48f[_0xa32c('0x3b')]);return _0x303ba0['getContacts'](_0x55e186);}})[_0xa32c('0x24')](function(_0xb5df2b){if(_0xb5df2b){_0x80a8c8=_0xb5df2b[_0xa32c('0x32')];if(!_0x1bf48f['query'][_0xa32c('0x33')](_0xa32c('0x34'))){_0x55e186[_0xa32c('0x1e')]=qs[_0xa32c('0x1e')](_0x1bf48f[_0xa32c('0x2d')]['limit']);_0x55e186[_0xa32c('0x1c')]=qs[_0xa32c('0x1c')](_0x1bf48f[_0xa32c('0x2d')][_0xa32c('0x1c')]);}return _0x303ba0[_0xa32c('0x52')](_0x55e186);}})['then'](function(_0x22faf6){if(_0x22faf6){return _0x22faf6?{'count':_0x80a8c8,'rows':_0x22faf6}:null;}})[_0xa32c('0x24')](respondWithResult(_0x50cf2b,null))[_0xa32c('0x40')](handleError(_0x50cf2b,null));};
\ No newline at end of file
+var _0x7fff=['api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','destroy','get','Companies','then','error','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','includeAll','include','rows','show','params','rawAttributes','options','find','catch','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContact','addContacts','ids','omit','getContacts','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x400f53,_0x1981d4){var _0x31a631=function(_0x4b2547){while(--_0x4b2547){_0x400f53['push'](_0x400f53['shift']());}};_0x31a631(++_0x1981d4);}(_0x7fff,0x199));var _0xf7ff=function(_0x20d070,_0x5f18f7){_0x20d070=_0x20d070-0x0;var _0x224eb1=_0x7fff[_0x20d070];return _0x224eb1;};'use strict';var emlformat=require(_0xf7ff('0x0'));var rimraf=require(_0xf7ff('0x1'));var zipdir=require(_0xf7ff('0x2'));var jsonpatch=require(_0xf7ff('0x3'));var rp=require(_0xf7ff('0x4'));var moment=require(_0xf7ff('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf7ff('0x6'));var util=require('util');var path=require('path');var sox=require(_0xf7ff('0x7'));var csv=require(_0xf7ff('0x8'));var ejs=require(_0xf7ff('0x9'));var fs=require('fs');var fs_extra=require(_0xf7ff('0xa'));var _=require('lodash');var squel=require(_0xf7ff('0xb'));var crypto=require(_0xf7ff('0xc'));var jsforce=require(_0xf7ff('0xd'));var deskjs=require(_0xf7ff('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf7ff('0xf'));var Papa=require(_0xf7ff('0x10'));var Redis=require(_0xf7ff('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xf7ff('0x12'));var as=require(_0xf7ff('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf7ff('0x14'))(_0xf7ff('0x15'));var utils=require(_0xf7ff('0x16'));var config=require(_0xf7ff('0x17'));var licenseUtil=require(_0xf7ff('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5449cb,_0x46bfee){_0x46bfee=_0x46bfee||0xcc;return function(_0x2182c2){if(_0x2182c2){return _0x5449cb[_0xf7ff('0x19')](_0x46bfee);}return _0x5449cb[_0xf7ff('0x1a')](_0x46bfee)[_0xf7ff('0x1b')]();};}function respondWithResult(_0x32a01f,_0x4b7632){_0x4b7632=_0x4b7632||0xc8;return function(_0x2082f0){if(_0x2082f0){return _0x32a01f['status'](_0x4b7632)[_0xf7ff('0x1c')](_0x2082f0);}};}function respondWithFilteredResult(_0x1a339e,_0x36625e){return function(_0x413846){if(_0x413846){var _0x2e192d=typeof _0x36625e[_0xf7ff('0x1d')]===_0xf7ff('0x1e')&&typeof _0x36625e[_0xf7ff('0x1f')]===_0xf7ff('0x1e');var _0x1c6a83=_0x413846['count'];var _0x47a967=_0x2e192d?0x0:_0x36625e['offset'];var _0x19fe3a=_0x2e192d?_0x413846[_0xf7ff('0x20')]:_0x36625e[_0xf7ff('0x1d')]+_0x36625e[_0xf7ff('0x1f')];var _0x578dce;if(_0x19fe3a>=_0x1c6a83){_0x19fe3a=_0x1c6a83;_0x578dce=0xc8;}else{_0x578dce=0xce;}_0x1a339e[_0xf7ff('0x1a')](_0x578dce);return _0x1a339e['set']('Content-Range',_0x47a967+'-'+_0x19fe3a+'/'+_0x1c6a83)[_0xf7ff('0x1c')](_0x413846);}return null;};}function patchUpdates(_0x116971){return function(_0xb27b0c){try{jsonpatch[_0xf7ff('0x21')](_0xb27b0c,_0x116971,!![]);}catch(_0x42df20){return BPromise[_0xf7ff('0x22')](_0x42df20);}return _0xb27b0c[_0xf7ff('0x23')]();};}function saveUpdates(_0x4a6b85,_0x177823){return function(_0x74bf15){if(_0x74bf15){return _0x74bf15[_0xf7ff('0x24')](_0x4a6b85)['then'](function(_0x5c902a){return _0x5c902a;});}return null;};}function removeEntity(_0x1474a5,_0x658e84){return function(_0x45a582){if(_0x45a582){return _0x45a582[_0xf7ff('0x25')]()['then'](function(){var _0x412710=_0x45a582[_0xf7ff('0x26')]({'plain':!![]});var _0x461084=_0xf7ff('0x27');return db['UserProfileResource'][_0xf7ff('0x25')]({'where':{'type':_0x461084,'resourceId':_0x412710['id']}})[_0xf7ff('0x28')](function(){return _0x45a582;});})['then'](function(){_0x1474a5[_0xf7ff('0x1a')](0xcc)[_0xf7ff('0x1b')]();});}};}function handleEntityNotFound(_0x2064dc,_0x46179f){return function(_0x3b45d9){if(!_0x3b45d9){_0x2064dc['sendStatus'](0x194);}return _0x3b45d9;};}function handleError(_0x528c43,_0x4df432){_0x4df432=_0x4df432||0x1f4;return function(_0x4ee230){logger[_0xf7ff('0x29')](_0x4ee230['stack']);if(_0x4ee230[_0xf7ff('0x2a')]){delete _0x4ee230['name'];}_0x528c43[_0xf7ff('0x1a')](_0x4df432)[_0xf7ff('0x2b')](_0x4ee230);};}exports[_0xf7ff('0x2c')]=function(_0x3faa9c,_0x1578de){var _0x26c1ed={},_0xf9a543={},_0x11caaa={'count':0x0,'rows':[]};return db[_0xf7ff('0x2d')][_0xf7ff('0x2e')]()[_0xf7ff('0x28')](function(_0x41762c){_0xf9a543[_0xf7ff('0x2f')]=_[_0xf7ff('0x30')](_0x41762c);_0xf9a543[_0xf7ff('0x31')]=_[_0xf7ff('0x30')](_0x3faa9c[_0xf7ff('0x31')]);_0xf9a543[_0xf7ff('0x32')]=_[_0xf7ff('0x33')](_0xf9a543[_0xf7ff('0x2f')],_0xf9a543[_0xf7ff('0x31')]);_0x26c1ed[_0xf7ff('0x34')]=_[_0xf7ff('0x33')](_0xf9a543[_0xf7ff('0x2f')],qs[_0xf7ff('0x35')](_0x3faa9c[_0xf7ff('0x31')][_0xf7ff('0x35')]));_0x26c1ed[_0xf7ff('0x34')]=_0x26c1ed[_0xf7ff('0x34')][_0xf7ff('0x36')]?_0x26c1ed[_0xf7ff('0x34')]:_0xf9a543[_0xf7ff('0x2f')];if(!_0x3faa9c[_0xf7ff('0x31')][_0xf7ff('0x37')](_0xf7ff('0x38'))){_0x26c1ed[_0xf7ff('0x1f')]=qs[_0xf7ff('0x1f')](_0x3faa9c[_0xf7ff('0x31')]['limit']);_0x26c1ed[_0xf7ff('0x1d')]=qs['offset'](_0x3faa9c[_0xf7ff('0x31')]['offset']);}_0x26c1ed[_0xf7ff('0x39')]=qs[_0xf7ff('0x3a')](_0x3faa9c[_0xf7ff('0x31')][_0xf7ff('0x3a')]);_0x26c1ed[_0xf7ff('0x3b')]=qs['filters'](_[_0xf7ff('0x3c')](_0x3faa9c['query'],_0xf9a543[_0xf7ff('0x32')]),_0x41762c);if(_0x3faa9c[_0xf7ff('0x31')][_0xf7ff('0x3d')]){_0x26c1ed[_0xf7ff('0x3b')]=_[_0xf7ff('0x3e')](_0x26c1ed['where'],{'$or':_[_0xf7ff('0x3f')](_0x26c1ed['attributes'],function(_0x131d09){var _0x4c1fc4={};_0x4c1fc4[_0x131d09]={'$like':'%'+_0x3faa9c[_0xf7ff('0x31')][_0xf7ff('0x3d')]+'%'};return _0x4c1fc4;})});}_0x26c1ed=_[_0xf7ff('0x3e')]({},_0x26c1ed,_0x3faa9c['options']);var _0x44e44d={'where':_0x26c1ed[_0xf7ff('0x3b')]};return db['CmCompany'][_0xf7ff('0x20')](_0x44e44d)[_0xf7ff('0x28')](function(_0x57f44d){_0x11caaa['count']=_0x57f44d;if(_0x3faa9c[_0xf7ff('0x31')][_0xf7ff('0x40')]){_0x26c1ed[_0xf7ff('0x41')]=[{'all':!![]}];}return db[_0xf7ff('0x2d')]['findAll'](_0x26c1ed);})['then'](function(_0x3b5b3a){_0x11caaa[_0xf7ff('0x42')]=_0x3b5b3a;return _0x11caaa;})[_0xf7ff('0x28')](respondWithFilteredResult(_0x1578de,_0x26c1ed))['catch'](handleError(_0x1578de,null));})['catch'](handleError(_0x1578de,null));};exports[_0xf7ff('0x43')]=function(_0x22687b,_0x2a8c21){var _0x28f09c={'raw':![],'where':{'id':_0x22687b[_0xf7ff('0x44')]['id']}},_0x222f3f={};_0x222f3f[_0xf7ff('0x2f')]=_[_0xf7ff('0x30')](db['CmCompany'][_0xf7ff('0x45')]);_0x222f3f[_0xf7ff('0x31')]=_[_0xf7ff('0x30')](_0x22687b[_0xf7ff('0x31')]);_0x222f3f['filters']=_[_0xf7ff('0x33')](_0x222f3f['model'],_0x222f3f[_0xf7ff('0x31')]);_0x28f09c[_0xf7ff('0x34')]=_[_0xf7ff('0x33')](_0x222f3f[_0xf7ff('0x2f')],qs['fields'](_0x22687b[_0xf7ff('0x31')][_0xf7ff('0x35')]));_0x28f09c[_0xf7ff('0x34')]=_0x28f09c[_0xf7ff('0x34')]['length']?_0x28f09c[_0xf7ff('0x34')]:_0x222f3f[_0xf7ff('0x2f')];if(_0x22687b[_0xf7ff('0x31')][_0xf7ff('0x40')]){_0x28f09c['include']=[{'all':!![]}];}_0x28f09c=_[_0xf7ff('0x3e')]({},_0x28f09c,_0x22687b[_0xf7ff('0x46')]);return db[_0xf7ff('0x2d')][_0xf7ff('0x47')](_0x28f09c)[_0xf7ff('0x28')](handleEntityNotFound(_0x2a8c21,null))[_0xf7ff('0x28')](respondWithResult(_0x2a8c21,null))[_0xf7ff('0x48')](handleError(_0x2a8c21,null));};exports['create']=function(_0x572fdf,_0x253b49){return db[_0xf7ff('0x2d')]['create'](_0x572fdf[_0xf7ff('0x49')],{})['then'](function(_0x38f97d){var _0x2b92d8=_0x572fdf[_0xf7ff('0x4a')][_0xf7ff('0x26')]({'plain':!![]});if(!_0x2b92d8)throw new Error(_0xf7ff('0x4b'));if(_0x2b92d8['role']===_0xf7ff('0x4a')){var _0x550d88=_0x38f97d[_0xf7ff('0x26')]({'plain':!![]});var _0x521b8b=_0xf7ff('0x27');return db[_0xf7ff('0x4c')]['find']({'where':{'name':_0x521b8b,'userProfileId':_0x2b92d8[_0xf7ff('0x4d')]},'raw':!![]})[_0xf7ff('0x28')](function(_0x2ae48d){if(_0x2ae48d&&_0x2ae48d['autoAssociation']===0x0){return db[_0xf7ff('0x4e')]['create']({'name':_0x550d88['name'],'resourceId':_0x550d88['id'],'type':_0x2ae48d[_0xf7ff('0x2a')],'sectionId':_0x2ae48d['id']},{})[_0xf7ff('0x28')](function(){return _0x38f97d;});}else{return _0x38f97d;}})['catch'](function(_0x35a867){logger[_0xf7ff('0x29')](_0xf7ff('0x4f'),_0x35a867);throw _0x35a867;});}return _0x38f97d;})[_0xf7ff('0x28')](respondWithResult(_0x253b49,0xc9))['catch'](handleError(_0x253b49,null));};exports['update']=function(_0x4a8c6a,_0x4d2e98){if(_0x4a8c6a[_0xf7ff('0x49')]['id']){delete _0x4a8c6a[_0xf7ff('0x49')]['id'];}return db['CmCompany']['find']({'where':{'id':_0x4a8c6a[_0xf7ff('0x44')]['id']}})[_0xf7ff('0x28')](handleEntityNotFound(_0x4d2e98,null))[_0xf7ff('0x28')](saveUpdates(_0x4a8c6a[_0xf7ff('0x49')],null))['then'](respondWithResult(_0x4d2e98,null))[_0xf7ff('0x48')](handleError(_0x4d2e98,null));};exports[_0xf7ff('0x25')]=function(_0x355850,_0x3b7a5e){return db['CmCompany']['find']({'where':{'id':_0x355850[_0xf7ff('0x44')]['id']}})[_0xf7ff('0x28')](handleEntityNotFound(_0x3b7a5e,null))['then'](removeEntity(_0x3b7a5e,null))['catch'](handleError(_0x3b7a5e,null));};exports['describe']=function(_0x4efd94,_0x14d5d3){return db[_0xf7ff('0x2d')][_0xf7ff('0x2e')]()[_0xf7ff('0x28')](respondWithResult(_0x14d5d3,null))['catch'](handleError(_0x14d5d3,null));};exports['addContacts']=function(_0x1f77bb,_0x2fe1e6,_0x123c30){return db[_0xf7ff('0x50')][_0xf7ff('0x47')]({'where':{'id':_0x1f77bb['params']['id']}})[_0xf7ff('0x28')](handleEntityNotFound(_0x2fe1e6,null))[_0xf7ff('0x28')](function(_0x3ef4e5){if(_0x3ef4e5){return _0x3ef4e5[_0xf7ff('0x51')](_0x1f77bb[_0xf7ff('0x49')][_0xf7ff('0x52')],_[_0xf7ff('0x53')](_0x1f77bb[_0xf7ff('0x49')],[_0xf7ff('0x52'),'id'])||{});}})[_0xf7ff('0x28')](respondWithResult(_0x2fe1e6,null))[_0xf7ff('0x48')](handleError(_0x2fe1e6,null));};exports[_0xf7ff('0x54')]=function(_0x5aea9d,_0x2c7623,_0x46ef48){var _0x2114c8={};var _0x8593c6={};var _0x89b8a5;var _0x2e47f0;return db[_0xf7ff('0x2d')][_0xf7ff('0x55')]({'where':{'id':_0x5aea9d[_0xf7ff('0x44')]['id']}})[_0xf7ff('0x28')](handleEntityNotFound(_0x2c7623,null))[_0xf7ff('0x28')](function(_0x5716cc){if(_0x5716cc){_0x89b8a5=_0x5716cc;_0x8593c6[_0xf7ff('0x2f')]=_['keys'](db[_0xf7ff('0x50')][_0xf7ff('0x45')]);_0x8593c6[_0xf7ff('0x31')]=_[_0xf7ff('0x30')](_0x5aea9d['query']);_0x8593c6['filters']=_[_0xf7ff('0x33')](_0x8593c6[_0xf7ff('0x2f')],_0x8593c6[_0xf7ff('0x31')]);_0x2114c8[_0xf7ff('0x34')]=_[_0xf7ff('0x33')](_0x8593c6['model'],qs['fields'](_0x5aea9d[_0xf7ff('0x31')][_0xf7ff('0x35')]));_0x2114c8[_0xf7ff('0x34')]=_0x2114c8[_0xf7ff('0x34')][_0xf7ff('0x36')]?_0x2114c8[_0xf7ff('0x34')]:_0x8593c6[_0xf7ff('0x2f')];_0x2114c8[_0xf7ff('0x39')]=qs[_0xf7ff('0x3a')](_0x5aea9d['query']['sort']);_0x2114c8['where']=qs[_0xf7ff('0x32')](_[_0xf7ff('0x3c')](_0x5aea9d[_0xf7ff('0x31')],_0x8593c6['filters']));if(_0x5aea9d[_0xf7ff('0x31')]['filter']){_0x2114c8['where']=_[_0xf7ff('0x3e')](_0x2114c8[_0xf7ff('0x3b')],{'$or':_[_0xf7ff('0x3f')](_0x2114c8[_0xf7ff('0x34')],function(_0x29dd0f){var _0x5704a2={};_0x5704a2[_0x29dd0f]={'$like':'%'+_0x5aea9d[_0xf7ff('0x31')][_0xf7ff('0x3d')]+'%'};return _0x5704a2;})});}_0x2114c8=_[_0xf7ff('0x3e')]({},_0x2114c8,_0x5aea9d[_0xf7ff('0x46')]);return _0x89b8a5[_0xf7ff('0x54')](_0x2114c8);}})['then'](function(_0x4b9b81){if(_0x4b9b81){_0x2e47f0=_0x4b9b81[_0xf7ff('0x36')];if(!_0x5aea9d[_0xf7ff('0x31')]['hasOwnProperty'](_0xf7ff('0x38'))){_0x2114c8[_0xf7ff('0x1f')]=qs[_0xf7ff('0x1f')](_0x5aea9d[_0xf7ff('0x31')][_0xf7ff('0x1f')]);_0x2114c8[_0xf7ff('0x1d')]=qs[_0xf7ff('0x1d')](_0x5aea9d['query'][_0xf7ff('0x1d')]);}return _0x89b8a5[_0xf7ff('0x54')](_0x2114c8);}})[_0xf7ff('0x28')](function(_0x4176ec){if(_0x4176ec){return _0x4176ec?{'count':_0x2e47f0,'rows':_0x4176ec}:null;}})['then'](respondWithResult(_0x2c7623,null))[_0xf7ff('0x48')](handleError(_0x2c7623,null));};
\ No newline at end of file
index ee19e0d..4d6a93e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd44=['api','moment','bluebird','request-promise','path','rimraf','CmCompany','cm_companies','lodash','util','../../config/logger'];(function(_0xe501ff,_0x955b7e){var _0x17135d=function(_0x8e3458){while(--_0x8e3458){_0xe501ff['push'](_0xe501ff['shift']());}};_0x17135d(++_0x955b7e);}(_0xdd44,0x126));var _0x4dd4=function(_0x2ba740,_0x62a305){_0x2ba740=_0x2ba740-0x0;var _0x358bda=_0xdd44[_0x2ba740];return _0x358bda;};'use strict';var _=require(_0x4dd4('0x0'));var util=require(_0x4dd4('0x1'));var logger=require(_0x4dd4('0x2'))(_0x4dd4('0x3'));var moment=require(_0x4dd4('0x4'));var BPromise=require(_0x4dd4('0x5'));var rp=require(_0x4dd4('0x6'));var fs=require('fs');var path=require(_0x4dd4('0x7'));var rimraf=require(_0x4dd4('0x8'));var config=require('../../config/environment');var attributes=require('./cmCompany.attributes');module['exports']=function(_0x114ffe,_0x338158){return _0x114ffe['define'](_0x4dd4('0x9'),attributes,{'tableName':_0x4dd4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1afd=['moment','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','exports','define','CmCompany','cm_companies','../../config/logger'];(function(_0xc84ed4,_0x3b8a6b){var _0x58b337=function(_0x303ddb){while(--_0x303ddb){_0xc84ed4['push'](_0xc84ed4['shift']());}};_0x58b337(++_0x3b8a6b);}(_0x1afd,0x1ac));var _0xd1af=function(_0x2fb175,_0x530dae){_0x2fb175=_0x2fb175-0x0;var _0x25e827=_0x1afd[_0x2fb175];return _0x25e827;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd1af('0x0'))('api');var moment=require(_0xd1af('0x1'));var BPromise=require('bluebird');var rp=require(_0xd1af('0x2'));var fs=require('fs');var path=require(_0xd1af('0x3'));var rimraf=require(_0xd1af('0x4'));var config=require(_0xd1af('0x5'));var attributes=require(_0xd1af('0x6'));module[_0xd1af('0x7')]=function(_0x27f002,_0x46f5df){return _0x27f002[_0xd1af('0x8')](_0xd1af('0x9'),attributes,{'tableName':_0xd1af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b9267d..509d1c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ec=['message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x466559,_0x528088){var _0x56e3e4=function(_0x1ddd0d){while(--_0x1ddd0d){_0x466559['push'](_0x466559['shift']());}};_0x56e3e4(++_0x528088);}(_0x80ec,0x1b7));var _0xc80e=function(_0xe1c2b9,_0x79691){_0xe1c2b9=_0xe1c2b9-0x0;var _0x41f015=_0x80ec[_0xe1c2b9];return _0x41f015;};'use strict';var _=require(_0xc80e('0x0'));var util=require(_0xc80e('0x1'));var moment=require(_0xc80e('0x2'));var BPromise=require('bluebird');var rs=require(_0xc80e('0x3'));var fs=require('fs');var Redis=require(_0xc80e('0x4'));var db=require(_0xc80e('0x5'))['db'];var utils=require(_0xc80e('0x6'));var logger=require(_0xc80e('0x7'))(_0xc80e('0x8'));var config=require(_0xc80e('0x9'));var jayson=require(_0xc80e('0xa'));var client=jayson[_0xc80e('0xb')][_0xc80e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34efd8,_0x5a5a3f,_0x567fee){return new BPromise(function(_0x3d2748,_0x3260f7){return client[_0xc80e('0xd')](_0x34efd8,_0x567fee)[_0xc80e('0xe')](function(_0x550af6){logger[_0xc80e('0xf')](_0xc80e('0x10'),_0x5a5a3f,_0xc80e('0x11'));logger['debug'](_0xc80e('0x12'),_0x5a5a3f,_0xc80e('0x11'),JSON[_0xc80e('0x13')](_0x550af6));if(_0x550af6[_0xc80e('0x14')]){if(_0x550af6['error']['code']===0x1f4){logger['error'](_0xc80e('0x10'),_0x5a5a3f,_0x550af6[_0xc80e('0x14')][_0xc80e('0x15')]);return _0x3260f7(_0x550af6[_0xc80e('0x14')][_0xc80e('0x15')]);}logger[_0xc80e('0x14')]('CmCompany,\x20%s,\x20%s',_0x5a5a3f,_0x550af6[_0xc80e('0x14')][_0xc80e('0x15')]);return _0x3d2748(_0x550af6[_0xc80e('0x14')][_0xc80e('0x15')]);}else{logger[_0xc80e('0xf')]('CmCompany,\x20%s,\x20%s',_0x5a5a3f,'request\x20sent');_0x3d2748(_0x550af6['result']['message']);}})[_0xc80e('0x16')](function(_0x4ae739){logger[_0xc80e('0x14')](_0xc80e('0x10'),_0x5a5a3f,_0x4ae739);_0x3260f7(_0x4ae739);});});}
\ No newline at end of file
+var _0x7c45=['../../config/environment','http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7c45,0x13a));var _0x57c4=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x7c45[_0x4b7895];return _0x264180;};'use strict';var _=require('lodash');var util=require(_0x57c4('0x0'));var moment=require(_0x57c4('0x1'));var BPromise=require('bluebird');var rs=require(_0x57c4('0x2'));var fs=require('fs');var Redis=require(_0x57c4('0x3'));var db=require(_0x57c4('0x4'))['db'];var utils=require(_0x57c4('0x5'));var logger=require(_0x57c4('0x6'))(_0x57c4('0x7'));var config=require(_0x57c4('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x57c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c9a72,_0x2a2524,_0x2f09da){return new BPromise(function(_0x3aea68,_0x42e781){return client[_0x57c4('0xa')](_0x1c9a72,_0x2f09da)[_0x57c4('0xb')](function(_0x4c3cf3){logger[_0x57c4('0xc')](_0x57c4('0xd'),_0x2a2524,_0x57c4('0xe'));logger[_0x57c4('0xf')](_0x57c4('0x10'),_0x2a2524,_0x57c4('0xe'),JSON[_0x57c4('0x11')](_0x4c3cf3));if(_0x4c3cf3[_0x57c4('0x12')]){if(_0x4c3cf3['error'][_0x57c4('0x13')]===0x1f4){logger[_0x57c4('0x12')]('CmCompany,\x20%s,\x20%s',_0x2a2524,_0x4c3cf3[_0x57c4('0x12')]['message']);return _0x42e781(_0x4c3cf3[_0x57c4('0x12')][_0x57c4('0x14')]);}logger[_0x57c4('0x12')](_0x57c4('0xd'),_0x2a2524,_0x4c3cf3[_0x57c4('0x12')][_0x57c4('0x14')]);return _0x3aea68(_0x4c3cf3[_0x57c4('0x12')][_0x57c4('0x14')]);}else{logger[_0x57c4('0xc')](_0x57c4('0xd'),_0x2a2524,_0x57c4('0xe'));_0x3aea68(_0x4c3cf3[_0x57c4('0x15')][_0x57c4('0x14')]);}})[_0x57c4('0x16')](function(_0x5eab3f){logger[_0x57c4('0x12')](_0x57c4('0xd'),_0x2a2524,_0x5eab3f);_0x42e781(_0x5eab3f);});});}
\ No newline at end of file
index 30cc201..a14e4cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c48=['post','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id','isAuthenticated','show','/:id/contacts','getContacts'];(function(_0xe2bfc6,_0x5aea2a){var _0x5cd695=function(_0x4e7085){while(--_0x4e7085){_0xe2bfc6['push'](_0xe2bfc6['shift']());}};_0x5cd695(++_0x5aea2a);}(_0x0c48,0x1e8));var _0x80c4=function(_0x58e29f,_0x475e63){_0x58e29f=_0x58e29f-0x0;var _0x32a7ab=_0x0c48[_0x58e29f];return _0x32a7ab;};'use strict';var multer=require(_0x80c4('0x0'));var util=require(_0x80c4('0x1'));var path=require(_0x80c4('0x2'));var timeout=require(_0x80c4('0x3'));var express=require(_0x80c4('0x4'));var router=express[_0x80c4('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x80c4('0x6'));var interaction=require(_0x80c4('0x7'));var config=require(_0x80c4('0x8'));var controller=require('./cmCompany.controller');router[_0x80c4('0x9')]('/',auth['isAuthenticated'](),controller[_0x80c4('0xa')]);router[_0x80c4('0x9')](_0x80c4('0xb'),auth['isAuthenticated'](),controller[_0x80c4('0xc')]);router[_0x80c4('0x9')](_0x80c4('0xd'),auth[_0x80c4('0xe')](),controller[_0x80c4('0xf')]);router[_0x80c4('0x9')](_0x80c4('0x10'),auth[_0x80c4('0xe')](),controller[_0x80c4('0x11')]);router[_0x80c4('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x80c4('0x12')]('/:id/contacts',auth[_0x80c4('0xe')](),controller['addContacts']);router['put'](_0x80c4('0xd'),auth[_0x80c4('0xe')](),controller['update']);router[_0x80c4('0x13')](_0x80c4('0xd'),auth[_0x80c4('0xe')](),controller[_0x80c4('0x14')]);module[_0x80c4('0x15')]=router;
\ No newline at end of file
+var _0x3fdc=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','describe','getContacts','post','create','/:id/contacts','addContacts','delete','/:id','destroy','util','path','connect-timeout'];(function(_0x52c3af,_0x50a7f8){var _0x224822=function(_0x37d6ea){while(--_0x37d6ea){_0x52c3af['push'](_0x52c3af['shift']());}};_0x224822(++_0x50a7f8);}(_0x3fdc,0x1dd));var _0xc3fd=function(_0x79d58f,_0x3908dd){_0x79d58f=_0x79d58f-0x0;var _0x32cd2d=_0x3fdc[_0x79d58f];return _0x32cd2d;};'use strict';var multer=require('multer');var util=require(_0xc3fd('0x0'));var path=require(_0xc3fd('0x1'));var timeout=require(_0xc3fd('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc3fd('0x3'));var auth=require(_0xc3fd('0x4'));var interaction=require(_0xc3fd('0x5'));var config=require(_0xc3fd('0x6'));var controller=require(_0xc3fd('0x7'));router[_0xc3fd('0x8')]('/',auth[_0xc3fd('0x9')](),controller[_0xc3fd('0xa')]);router['get']('/describe',auth[_0xc3fd('0x9')](),controller[_0xc3fd('0xb')]);router[_0xc3fd('0x8')]('/:id',auth[_0xc3fd('0x9')](),controller['show']);router[_0xc3fd('0x8')]('/:id/contacts',auth[_0xc3fd('0x9')](),controller[_0xc3fd('0xc')]);router[_0xc3fd('0xd')]('/',auth['isAuthenticated'](),controller[_0xc3fd('0xe')]);router[_0xc3fd('0xd')](_0xc3fd('0xf'),auth['isAuthenticated'](),controller[_0xc3fd('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xc3fd('0x11')](_0xc3fd('0x12'),auth['isAuthenticated'](),controller[_0xc3fd('0x13')]);module['exports']=router;
\ No newline at end of file
index 9a6109e..55a6d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f46=['INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize','exports','STRING','TEXT'];(function(_0x2d6d10,_0x1f6a07){var _0xc871aa=function(_0x243783){while(--_0x243783){_0x2d6d10['push'](_0x2d6d10['shift']());}};_0xc871aa(++_0x1f6a07);}(_0x1f46,0xc1));var _0x61f4=function(_0x5f21ed,_0x12da5e){_0x5f21ed=_0x5f21ed-0x0;var _0x12a18c=_0x1f46[_0x5f21ed];return _0x12a18c;};'use strict';var _=require(_0x61f4('0x0'));var Sequelize=require(_0x61f4('0x1'));module[_0x61f4('0x2')]={'firstName':{'type':Sequelize[_0x61f4('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x61f4('0x3')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x61f4('0x3')]},'city':{'type':Sequelize[_0x61f4('0x3')]},'country':{'type':Sequelize[_0x61f4('0x3')]},'dateOfBirth':{'type':Sequelize[_0x61f4('0x3')]},'description':{'type':Sequelize[_0x61f4('0x4')]},'phone':{'type':Sequelize[_0x61f4('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x61f4('0x3')]},'email':{'type':Sequelize[_0x61f4('0x3')]},'url':{'type':Sequelize[_0x61f4('0x3')]},'facebook':{'type':Sequelize[_0x61f4('0x3')]},'fb_data':{'type':Sequelize[_0x61f4('0x3')]},'twitter':{'type':Sequelize[_0x61f4('0x3')]},'skype':{'type':Sequelize[_0x61f4('0x3')]},'teams':{'type':Sequelize[_0x61f4('0x3')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x61f4('0x3')]},'wechat':{'type':Sequelize[_0x61f4('0x3')]},'telegram':{'type':Sequelize[_0x61f4('0x3')]},'UserId':{'type':Sequelize[_0x61f4('0x5')]},'AdditionalPhones':{'type':Sequelize[_0x61f4('0x3')]},'priority':{'type':Sequelize[_0x61f4('0x5')](0x2)[_0x61f4('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x61f4('0x7')],'defaultValue':Sequelize[_0x61f4('0x8')]},'dialTimezone':{'type':Sequelize[_0x61f4('0x3')]},'utcOffset':{'type':Sequelize[_0x61f4('0x5')]}};
\ No newline at end of file
+var _0x84e7=['sequelize','exports','STRING','INTEGER','UNSIGNED','NOW','lodash'];(function(_0x3d8e9d,_0x4e2448){var _0x171c0a=function(_0x692c56){while(--_0x692c56){_0x3d8e9d['push'](_0x3d8e9d['shift']());}};_0x171c0a(++_0x4e2448);}(_0x84e7,0xf4));var _0x784e=function(_0x3afa16,_0x387d59){_0x3afa16=_0x3afa16-0x0;var _0xce287b=_0x84e7[_0x3afa16];return _0xce287b;};'use strict';var _=require(_0x784e('0x0'));var Sequelize=require(_0x784e('0x1'));module[_0x784e('0x2')]={'firstName':{'type':Sequelize[_0x784e('0x3')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x784e('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x784e('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x784e('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x784e('0x3')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0x784e('0x3')]},'twitter':{'type':Sequelize[_0x784e('0x3')]},'skype':{'type':Sequelize[_0x784e('0x3')]},'teams':{'type':Sequelize[_0x784e('0x3')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x784e('0x3')]},'wechat':{'type':Sequelize[_0x784e('0x3')]},'telegram':{'type':Sequelize[_0x784e('0x3')]},'UserId':{'type':Sequelize[_0x784e('0x4')]},'AdditionalPhones':{'type':Sequelize[_0x784e('0x3')]},'priority':{'type':Sequelize[_0x784e('0x4')](0x2)[_0x784e('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0x784e('0x6')]},'dialTimezone':{'type':Sequelize[_0x784e('0x3')]},'utcOffset':{'type':Sequelize[_0x784e('0x4')]}};
\ No newline at end of file
index 3a96081..7f65300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e43=['describe','getOptions','findAll','query','user','catch','CmContact','find','tags','keys','length','startsWith','columnName','CmCustomField','cf_','displayName','custom','type','info','forEach','hasOwnProperty','merge','body','get','isArray','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','from','CmHopperBlack','create','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','CmContactHasItem','CmHopperHistory','ReportAgentPreview','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappMessage','WhatsappQueueReport','isNil','dialTimezone','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','spread','contact','all','params','Tags','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','omit','map','format','pickBy','isEmpty','cm_contacts','id\x20=\x20?','text','values','phone','getTags','findOne','model','intersection','attributes','fields','order','sort','pick','filters','filter','options','setTags','ids','setAdditionalPhones','OrderBy','item_types','items','ItemTypeId','description','PHONE','item','sequelize','`ItemType`.OrderBy','ItemType.OrderBy','CmHopperAdditionalPhone','getAdditionalPhones','duplicateAdditionalPhones','fromContactId','CmContactId','toContactId','hopperId','rawAttributes','nolimit','ContactId','includeAll','include','rows','getHopperHistories','CmHopperFinal','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','socket_timestamp','split','Incorrect\x20binding\x20parameters\x20passed!','No\x20phone\x20column\x20specified','firstName','root','server/files/tmp','file','filename','chmodSync','0777','child_process','fork','binding_values','CompanyId','upload','createReadStream','parse','meta','agent','binding','No\x20firstName\x20column\x20specified','../../components/import/cm/csv2','stringify','message','pid','importUpdates','User','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','start\x20child\x20process\x20correctly!','exit','getJourney','mail','chat','sms','openchannel','whatsapp','-createdAt','resolve','includes','channel','toLowerCase','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20createdAt\x20filter','voice','uniqueid','source','destination','starttime','duration','note','userDisposition','userSecondDisposition','userThirdDisposition','fullname','createdAt','VoiceCallReport','findAndCountAll','startCase','Website','Account','disposition','secondDisposition','thirdDisposition','UserId','key','Owner','Tag','DESC','customerIp','osName','ratingMessage','referer','subject','externalUrl','threadId','flatten','sortBy','reverse','moment','util','path','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','../../config/environment/shared','redis','defaults','localhost','socket.io-emitter','status','json','limit','undefined','count','offset','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index'];(function(_0x5338fe,_0x5e71d1){var _0xf0a1be=function(_0x306a01){while(--_0x306a01){_0x5338fe['push'](_0x5338fe['shift']());}};_0xf0a1be(++_0x5e71d1);}(_0x1e43,0xcf));var _0x31e4=function(_0x151d64,_0x360f73){_0x151d64=_0x151d64-0x0;var _0x409cfd=_0x1e43[_0x151d64];return _0x409cfd;};'use strict';var moment=require(_0x31e4('0x0'));var BPromise=require('bluebird');var util=require(_0x31e4('0x1'));var path=require(_0x31e4('0x2'));var fs=require('fs');var _=require('lodash');var squel=require(_0x31e4('0x3'));var Papa=require('papaparse');var Redis=require(_0x31e4('0x4'));var contacts=require(_0x31e4('0x5'));var qs=require(_0x31e4('0x6'));var logger=require(_0x31e4('0x7'))('api');var config=require('../../config/environment');var shared=require(_0x31e4('0x8'));var db=require('../../mysqldb')['db'];config[_0x31e4('0x9')]=_[_0x31e4('0xa')](config['redis'],{'host':_0x31e4('0xb'),'port':0x18eb});var socket=require(_0x31e4('0xc'))(new Redis(config[_0x31e4('0x9')]));require('./cmContact.socket')['register'](socket);function respondWithResult(_0x4ae893,_0x12ceb4){_0x12ceb4=_0x12ceb4||0xc8;return function(_0x4987fb){if(_0x4987fb){return _0x4ae893[_0x31e4('0xd')](_0x12ceb4)[_0x31e4('0xe')](_0x4987fb);}};}function respondWithFilteredResult(_0xa818d,_0x69355c){return function(_0x595fa5){if(_0x595fa5){var _0x2789e4=typeof _0x69355c['offset']==='undefined'&&typeof _0x69355c[_0x31e4('0xf')]===_0x31e4('0x10');var _0x43a3b2=_0x595fa5[_0x31e4('0x11')];var _0x13e89d=_0x2789e4?0x0:_0x69355c[_0x31e4('0x12')];var _0x7cd1b=_0x2789e4?_0x595fa5['count']:_0x69355c[_0x31e4('0x12')]+_0x69355c[_0x31e4('0xf')];var _0x34dad3;if(_0x7cd1b>=_0x43a3b2){_0x7cd1b=_0x43a3b2;_0x34dad3=0xc8;}else{_0x34dad3=0xce;}_0xa818d['status'](_0x34dad3);return _0xa818d[_0x31e4('0x13')](_0x31e4('0x14'),_0x13e89d+'-'+_0x7cd1b+'/'+_0x43a3b2)['json'](_0x595fa5);}return null;};}function saveUpdates(_0x2baf7d){return function(_0x259038){if(_0x259038){return _0x259038[_0x31e4('0x15')](_0x2baf7d)[_0x31e4('0x16')](function(_0x427d32){return _0x427d32;});}return null;};}function removeEntity(_0x50e014){return function(_0x48f5ca){if(_0x48f5ca){return _0x48f5ca[_0x31e4('0x17')]()[_0x31e4('0x16')](function(){_0x50e014[_0x31e4('0xd')](0xcc)[_0x31e4('0x18')]();});}};}function handleEntityNotFound(_0x35378c){return function(_0x5d1393){if(!_0x5d1393){_0x35378c[_0x31e4('0x19')](0x194);}return _0x5d1393;};}function handleError(_0x32d90d,_0x4d4782){_0x4d4782=_0x4d4782||0x1f4;return function(_0x3979a0){logger[_0x31e4('0x1a')](_0x3979a0[_0x31e4('0x1b')]);if(_0x3979a0[_0x31e4('0x1c')]){delete _0x3979a0[_0x31e4('0x1c')];}_0x32d90d['status'](_0x4d4782)[_0x31e4('0x1d')](_0x3979a0);};}exports[_0x31e4('0x1e')]=function(_0x21a390,_0x4bb2a0){var _0x133571={};return contacts[_0x31e4('0x1f')]()[_0x31e4('0x16')](function(_0x41057f){_0x133571=qs[_0x31e4('0x20')](_0x41057f,_0x21a390);return contacts[_0x31e4('0x21')](_0x21a390[_0x31e4('0x22')],_0x21a390[_0x31e4('0x23')],_0x133571,_0x41057f);})['then'](respondWithFilteredResult(_0x4bb2a0,_0x133571))[_0x31e4('0x24')](handleError(_0x4bb2a0,null));};exports['destroy']=function(_0xd69d7f,_0x4be1d9){return db[_0x31e4('0x25')][_0x31e4('0x26')]({'where':{'id':_0xd69d7f['params']['id']}})['then'](handleEntityNotFound(_0x4be1d9,null))[_0x31e4('0x16')](removeEntity(_0x4be1d9,null))[_0x31e4('0x24')](handleError(_0x4be1d9,null));};exports['describe']=function(_0x9e3b7f,_0x209919){return db['CmContact'][_0x31e4('0x1f')]()[_0x31e4('0x16')](function(_0x2a3d59){delete _0x2a3d59[_0x31e4('0x27')];for(var _0x5497fa=0x0;_0x5497fa<Object[_0x31e4('0x28')](_0x2a3d59)[_0x31e4('0x29')];_0x5497fa++){var _0x44275e=Object[_0x31e4('0x28')](_0x2a3d59)[_0x5497fa];if(!_[_0x31e4('0x2a')](_0x44275e,'cf_')){_0x2a3d59[_0x44275e][_0x31e4('0x2b')]=_0x44275e;_0x2a3d59[_0x44275e]['displayName']=_0x44275e;}}return _0x2a3d59;})['then'](function(_0x33dc19){var _0x25d0c2={'where':Boolean(_0x9e3b7f['query']['analytics'])===!![]?undefined:{'$or':[{'ListId':_0x9e3b7f[_0x31e4('0x22')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x31e4('0x2c')][_0x31e4('0x21')](_0x25d0c2)['then'](function(_0xd527f7){for(var _0x107ff7=0x0;_0x107ff7<_0xd527f7[_0x31e4('0x29')];_0x107ff7++){var _0x58fdcd=_0x31e4('0x2d')+_0xd527f7[_0x107ff7]['id'];if(_0x33dc19[_0x58fdcd]){_0x33dc19[_0x58fdcd]['columnName']=_0x58fdcd;_0x33dc19[_0x58fdcd][_0x31e4('0x2e')]=_0xd527f7[_0x107ff7]['alias'];_0x33dc19[_0x58fdcd][_0x31e4('0x2f')]={'type':_0xd527f7[_0x107ff7][_0x31e4('0x30')],'values':_0xd527f7[_0x107ff7]['values']};}else{logger[_0x31e4('0x31')]('Custom\x20field\x20%s\x20not\x20found\x20on\x20cm_contacts\x20table',_0x58fdcd);}}Object[_0x31e4('0x28')](_0x33dc19)[_0x31e4('0x32')](function(_0x54505d){if(!_0x33dc19[_0x54505d][_0x31e4('0x33')](_0x31e4('0x2b'))){delete _0x33dc19[_0x54505d];}});return _0x33dc19;});})['then'](respondWithResult(_0x209919,null))[_0x31e4('0x24')](handleError(_0x209919,null));};exports[_0x31e4('0x34')]=function(_0x5a6dca,_0x2d004d){var _0x465a09;var _0x139a9b;var _0x152521;if(_0x5a6dca[_0x31e4('0x35')]['id']){delete _0x5a6dca[_0x31e4('0x35')]['id'];}return db[_0x31e4('0x25')][_0x31e4('0x21')]({'where':{'id':[_0x5a6dca[_0x31e4('0x35')]['to'],_0x5a6dca[_0x31e4('0x35')]['from']]}})[_0x31e4('0x16')](function(_0x1cecc0){if(_0x1cecc0){if(_0x1cecc0[_0x31e4('0x29')]!==0x2){return null;}_0x1cecc0[0x0]=_0x1cecc0[0x0][_0x31e4('0x36')]({'plain':!![]});_0x1cecc0[0x1]=_0x1cecc0[0x1]['get']({'plain':!![]});delete _0x1cecc0[0x0]['id'];delete _0x1cecc0[0x1]['id'];return _['mergeWith'](_0x1cecc0[0x0],_0x1cecc0[0x1],function(_0x44b488,_0x2d3e77){if(Array[_0x31e4('0x37')](_0x2d3e77)&&!_0x2d3e77['length']){return _0x44b488;}else if(!_0x2d3e77){return _0x44b488;}});}})[_0x31e4('0x16')](handleEntityNotFound(_0x2d004d,null))['then'](function(_0x5bcd00){if(_0x5bcd00){if(_0x5bcd00[_0x31e4('0x27')]&&_[_0x31e4('0x37')](_0x5bcd00[_0x31e4('0x27')])){_0x5bcd00['tags']=_0x5bcd00['tags'][_0x31e4('0x38')]();}logger[_0x31e4('0x31')](_0x31e4('0x39'),_0x5a6dca[_0x31e4('0x35')]['to'],_0x5a6dca['body']['from']);return db[_0x31e4('0x3a')][_0x31e4('0x17')]({'where':{'ContactId':[_0x5a6dca[_0x31e4('0x35')]['to'],_0x5a6dca['body'][_0x31e4('0x3b')]]}})[_0x31e4('0x16')](function(_0x1f3cf1){logger[_0x31e4('0x31')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x1f3cf1);return db[_0x31e4('0x3c')][_0x31e4('0x17')]({'where':{'ContactId':[_0x5a6dca[_0x31e4('0x35')]['to'],_0x5a6dca[_0x31e4('0x35')][_0x31e4('0x3b')]]}})['then'](function(_0x2786ff){logger[_0x31e4('0x31')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x2786ff);return db[_0x31e4('0x25')][_0x31e4('0x3d')](_0x5bcd00);});});}})['then'](function(_0x15b5ab){if(_0x15b5ab){_0x465a09=_0x15b5ab;_0x139a9b={'ContactId':_0x465a09['id']};_0x152521={'where':{'ContactId':[_0x5a6dca[_0x31e4('0x35')]['to'],_0x5a6dca[_0x31e4('0x35')][_0x31e4('0x3b')]]}};return db['ChatInteraction']['update'](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db['ChatMessage']['update'](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x3e')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})['then'](function(){if(_0x465a09){return db[_0x31e4('0x3f')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x40')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x3f')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db['MailMessage'][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x41')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x42')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x43')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x44')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x45')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db['OpenchannelMessage'][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x46')][_0x31e4('0x15')]({'CmContactId':_0x465a09['id']},{'where':{'CmContactId':[_0x5a6dca[_0x31e4('0x35')]['to'],_0x5a6dca[_0x31e4('0x35')]['from']]}});}})[_0x31e4('0x16')](function(){if(_0x465a09){return db['CmHopperFinal'][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x47')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})['then'](function(){if(_0x465a09){return db[_0x31e4('0x48')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db['VoiceCallReport'][_0x31e4('0x15')](_0x139a9b,_0x152521);}})['then'](function(){if(_0x465a09){return db['ChatQueueReport'][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x49')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x4a')]['update'](_0x139a9b,_0x152521);}})['then'](function(){if(_0x465a09){return db[_0x31e4('0x4b')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})['then'](function(){if(_0x465a09){return db[_0x31e4('0x4c')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x4d')]['update'](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db['WhatsappInteraction'][_0x31e4('0x15')](_0x139a9b,_0x152521);}})[_0x31e4('0x16')](function(){if(_0x465a09){return db[_0x31e4('0x4e')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})['then'](function(){if(_0x465a09){return db[_0x31e4('0x4f')][_0x31e4('0x15')](_0x139a9b,_0x152521);}})['then'](function(){if(_0x465a09){return db['CmContact']['destroy']({'where':{'id':[_0x5a6dca[_0x31e4('0x35')]['to'],_0x5a6dca[_0x31e4('0x35')]['from']]}});}})['then'](function(){if(_0x465a09){return _0x465a09;}})[_0x31e4('0x16')](respondWithResult(_0x2d004d,null))[_0x31e4('0x24')](handleError(_0x2d004d,null));};exports['create']=function(_0x336f32,_0x231b06){return db[_0x31e4('0x25')][_0x31e4('0x1f')]()[_0x31e4('0x16')](function(_0x46ad45){if(_0x336f32['body'][_0x31e4('0x27')]&&_[_0x31e4('0x37')](_0x336f32['body']['tags'])){if(_0x336f32[_0x31e4('0x35')][_0x31e4('0x27')][_0x31e4('0x29')]){_0x336f32[_0x31e4('0x35')][_0x31e4('0x27')]=_0x336f32['body']['tags'][_0x31e4('0x38')](';')+';';}else{_0x336f32[_0x31e4('0x35')][_0x31e4('0x27')]=null;}}else{_0x336f32['body'][_0x31e4('0x27')]=null;}if(!_[_0x31e4('0x50')](_0x336f32[_0x31e4('0x35')]['dialTimezone'])){var _0x4aa466=_0x336f32['body'][_0x31e4('0x51')];if(!_['isNil'](shared['timezones'][_0x4aa466]))_0x336f32['body']['utcOffset']=shared[_0x31e4('0x52')][_0x4aa466][_0x31e4('0x53')];}return db[_0x31e4('0x25')][_0x31e4('0x3d')](_0x336f32[_0x31e4('0x35')],{'fields':_['keys'](_0x46ad45),'raw':!![]});})['then'](function(_0xd1de6c){if(_0x336f32['body'][_0x31e4('0x54')]){return insertAdditionalPhones(_0xd1de6c,_0x336f32[_0x31e4('0x35')][_0x31e4('0x54')]);}else{return _0xd1de6c;}})[_0x31e4('0x16')](respondWithResult(_0x231b06,0xc9))[_0x31e4('0x24')](handleError(_0x231b06,null));};exports[_0x31e4('0x55')]=function(_0x61f264,_0x40d229){var _0x139cbd=0x0;var _0x581fe2=0x0;var _0x5a98c7=0x0;var _0x57fd7a=[];return db[_0x31e4('0x25')][_0x31e4('0x1f')]()['then'](function(_0x19b14f){return BPromise['each'](_0x61f264[_0x31e4('0x35')],function(_0x2b3119){var _0x4a05d7={'where':{'$or':[]},'defaults':_0x2b3119,'fields':_[_0x31e4('0x28')](_0x19b14f),'raw':!![]};if(_0x2b3119[_0x31e4('0x56')]){for(var _0x16a4e6=0x0;_0x16a4e6<_0x2b3119[_0x31e4('0x56')][_0x31e4('0x29')];_0x16a4e6++){var _0x4a1900={};_0x4a1900[_0x2b3119[_0x31e4('0x56')][_0x16a4e6]]=_0x2b3119[_0x2b3119[_0x31e4('0x56')][_0x16a4e6]];_0x4a05d7[_0x31e4('0x57')][_0x31e4('0x58')][_0x31e4('0x59')](_0x4a1900);}_0x4a05d7['where'][_0x31e4('0x5a')]=_0x2b3119[_0x31e4('0x5a')];}return db['CmContact']['findOrCreate'](_0x4a05d7)[_0x31e4('0x5b')](function(_0x24a69c,_0xfe7762){if(_0xfe7762){if(_0x2b3119[_0x31e4('0x33')](_0x31e4('0x54'))){_0x57fd7a['push']({'contact':_0x24a69c,'additionalPhones':_0x2b3119[_0x31e4('0x54')]});}_0x139cbd++;}else{_0x5a98c7++;}})[_0x31e4('0x24')](function(){_0x581fe2++;});});})[_0x31e4('0x16')](function(_0x303500){if(_0x303500){if(_0x57fd7a[_0x31e4('0x29')]>0x0){return new Promise(function(_0x327fef){var _0x2094c1=[];for(var _0x3cedfc=0x0;_0x3cedfc<_0x57fd7a['length'];_0x3cedfc++){_0x2094c1['push'](insertAdditionalPhones(_0x57fd7a[_0x3cedfc][_0x31e4('0x5c')],_0x57fd7a[_0x3cedfc][_0x31e4('0x54')]));}Promise[_0x31e4('0x5d')](_0x2094c1)[_0x31e4('0x16')](function(){_0x327fef(0x1);});})[_0x31e4('0x16')](function(){return{'success':_0x139cbd,'failure':_0x581fe2,'duplicates':_0x5a98c7};});}else{return{'success':_0x139cbd,'failure':_0x581fe2,'duplicates':_0x5a98c7};}}})[_0x31e4('0x16')](respondWithResult(_0x40d229,0xc9))[_0x31e4('0x24')](handleError(_0x40d229,null));};exports['show']=function(_0x1431f7,_0x23192d){var _0x42d2ba;return db[_0x31e4('0x25')][_0x31e4('0x1f')]()[_0x31e4('0x16')](function(_0x2c0fd5){return db[_0x31e4('0x25')]['find']({'where':{'id':_0x1431f7[_0x31e4('0x5e')]['id']},'include':[{'model':db['Tag'],'as':_0x31e4('0x5f'),'attributes':['id',_0x31e4('0x1c'),_0x31e4('0x60')],'required':_0x1431f7[_0x31e4('0x22')][_0x31e4('0x61')]?!![]:![]},{'model':db[_0x31e4('0x46')],'as':_0x31e4('0x62'),'where':{'CmContactId':_0x1431f7[_0x31e4('0x5e')]['id']},'required':![],'include':[{'model':db[_0x31e4('0x63')],'as':_0x31e4('0x64')}]}],'order':[db['sequelize'][_0x31e4('0x65')](_0x31e4('0x66'))],'attributes':_[_0x31e4('0x28')](_0x2c0fd5)});})[_0x31e4('0x16')](function(_0x8a2948){if(!_[_0x31e4('0x50')](_0x8a2948)){_0x42d2ba=_0x8a2948[_0x31e4('0x36')]({'plain':!![]});var _0x2effd9={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x8a2948&&_0x8a2948['ListId']){if(_0x8a2948[_0x31e4('0x5a')]){_0x2effd9[_0x31e4('0x57')][_0x31e4('0x67')][_0x31e4('0x59')]({'ListId':{'$ne':_0x8a2948[_0x31e4('0x5a')]}});}}return db[_0x31e4('0x2c')][_0x31e4('0x21')](_0x2effd9);}})[_0x31e4('0x16')](function(_0x4f9836){if(!_[_0x31e4('0x50')](_0x4f9836)){return _[_0x31e4('0x68')](_0x42d2ba,_[_0x31e4('0x69')](_0x4f9836,function(_0x467465){return util[_0x31e4('0x6a')]('cf_%d',_0x467465['id']);}));}})[_0x31e4('0x16')](handleEntityNotFound(_0x23192d,null))[_0x31e4('0x16')](respondWithResult(_0x23192d,null))[_0x31e4('0x24')](handleError(_0x23192d,null));};exports[_0x31e4('0x15')]=function(_0x3681e4,_0x50106d){var _0x4d2771;if(_0x3681e4['body']['id']){delete _0x3681e4[_0x31e4('0x35')]['id'];}if(!_['isNil'](_0x3681e4['body'][_0x31e4('0x51')])){var _0x3260ee=_0x3681e4[_0x31e4('0x35')][_0x31e4('0x51')];if(!_[_0x31e4('0x50')](shared[_0x31e4('0x52')][_0x3260ee]))_0x3681e4[_0x31e4('0x35')][_0x31e4('0x53')]=shared[_0x31e4('0x52')][_0x3260ee][_0x31e4('0x53')];}return db[_0x31e4('0x25')][_0x31e4('0x26')]({'where':{'id':_0x3681e4['params']['id']}})[_0x31e4('0x16')](handleEntityNotFound(_0x50106d,null))['then'](saveUpdates(_0x3681e4[_0x31e4('0x35')],null))[_0x31e4('0x16')](function(_0x30bfb3){_0x4d2771=_0x30bfb3;var _0x34a82c={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x30bfb3&&_0x30bfb3[_0x31e4('0x5a')]){if(_0x30bfb3[_0x31e4('0x5a')]){_0x34a82c[_0x31e4('0x57')][_0x31e4('0x67')]['push']({'ListId':{'$ne':_0x30bfb3[_0x31e4('0x5a')]}});}}return db[_0x31e4('0x2c')][_0x31e4('0x21')](_0x34a82c);})[_0x31e4('0x16')](function(_0x5432eb){if(_0x5432eb){return _['omit'](_[_0x31e4('0x6b')](_0x3681e4[_0x31e4('0x35')],function(_0x436b2f,_0x3d1c40){return _[_0x31e4('0x2a')](_0x3d1c40,'cf_');}),_[_0x31e4('0x69')](_0x5432eb,function(_0x411d40){return util[_0x31e4('0x6a')]('cf_%d',_0x411d40['id']);}));}})[_0x31e4('0x16')](function(_0x5942b5){if(_0x5942b5&&!_[_0x31e4('0x6c')](_0x5942b5)){var _0x42a280=squel[_0x31e4('0x15')]()['table'](_0x31e4('0x6d'))['setFields'](_0x5942b5)[_0x31e4('0x57')](_0x31e4('0x6e'),_0x3681e4['params']['id'])['toParam']();return db['sequelize']['query'](_0x42a280[_0x31e4('0x6f')],{'replacements':_0x42a280[_0x31e4('0x70')]});}})[_0x31e4('0x16')](function(){if(_0x3681e4[_0x31e4('0x35')][_0x31e4('0x71')]&&_0x4d2771){return db[_0x31e4('0x3a')]['update']({'phone':_0x3681e4[_0x31e4('0x35')][_0x31e4('0x71')],'OrderBy':0x0},{'where':{'ContactId':_0x4d2771['id']}});}})['then'](function(){return _0x4d2771;})[_0x31e4('0x16')](respondWithResult(_0x50106d,null))[_0x31e4('0x24')](handleError(_0x50106d,null));};exports[_0x31e4('0x72')]=function(_0x5c3b84,_0xac91fe){var _0x1e8dab={};var _0x5c09f9={};var _0x32762d;var _0x49043a;return db[_0x31e4('0x25')][_0x31e4('0x73')]({'where':{'id':_0x5c3b84[_0x31e4('0x5e')]['id']}})[_0x31e4('0x16')](handleEntityNotFound(_0xac91fe,null))['then'](function(_0x35a916){if(_0x35a916){_0x32762d=_0x35a916;_0x5c09f9[_0x31e4('0x74')]=_[_0x31e4('0x28')](db['Tag']['rawAttributes']);_0x5c09f9['query']=_['keys'](_0x5c3b84[_0x31e4('0x22')]);_0x5c09f9['filters']=_[_0x31e4('0x75')](_0x5c09f9['model'],_0x5c09f9[_0x31e4('0x22')]);_0x1e8dab[_0x31e4('0x76')]=_[_0x31e4('0x75')](_0x5c09f9[_0x31e4('0x74')],qs[_0x31e4('0x77')](_0x5c3b84[_0x31e4('0x22')][_0x31e4('0x77')]));_0x1e8dab[_0x31e4('0x76')]=_0x1e8dab['attributes'][_0x31e4('0x29')]?_0x1e8dab['attributes']:_0x5c09f9[_0x31e4('0x74')];_0x1e8dab[_0x31e4('0x78')]=qs[_0x31e4('0x79')](_0x5c3b84[_0x31e4('0x22')]['sort']);_0x1e8dab['where']=qs['filters'](_[_0x31e4('0x7a')](_0x5c3b84[_0x31e4('0x22')],_0x5c09f9[_0x31e4('0x7b')]));if(_0x5c3b84[_0x31e4('0x22')]['filter']){_0x1e8dab[_0x31e4('0x57')]=_['merge'](_0x1e8dab['where'],{'$or':_[_0x31e4('0x69')](_0x1e8dab[_0x31e4('0x76')],function(_0x161c14){var _0x3ade34={};_0x3ade34[_0x161c14]={'$like':'%'+_0x5c3b84['query'][_0x31e4('0x7c')]+'%'};return _0x3ade34;})});}_0x1e8dab=_[_0x31e4('0x34')]({},_0x1e8dab,_0x5c3b84[_0x31e4('0x7d')]);return _0x32762d[_0x31e4('0x72')](_0x1e8dab);}})[_0x31e4('0x16')](function(_0x1a9b94){if(_0x1a9b94){_0x49043a=_0x1a9b94[_0x31e4('0x29')];if(!_0x5c3b84['query']['hasOwnProperty']('nolimit')){_0x1e8dab[_0x31e4('0xf')]=qs[_0x31e4('0xf')](_0x5c3b84['query'][_0x31e4('0xf')]);_0x1e8dab[_0x31e4('0x12')]=qs[_0x31e4('0x12')](_0x5c3b84[_0x31e4('0x22')][_0x31e4('0x12')]);}return _0x32762d[_0x31e4('0x72')](_0x1e8dab);}})[_0x31e4('0x16')](function(_0x9904d6){if(_0x9904d6){return _0x9904d6?{'count':_0x49043a,'rows':_0x9904d6}:null;}})['then'](respondWithResult(_0xac91fe,null))[_0x31e4('0x24')](handleError(_0xac91fe,null));};exports['setTags']=function(_0x3311be,_0x5563f0){if(_0x3311be[_0x31e4('0x35')]['id']){delete _0x3311be['body']['id'];}return db['CmContact'][_0x31e4('0x73')]({'where':{'id':_0x3311be[_0x31e4('0x5e')]['id']}})[_0x31e4('0x16')](handleEntityNotFound(_0x5563f0,null))['then'](function(_0xadc809){if(_0xadc809){return _0xadc809[_0x31e4('0x7e')](_0x3311be[_0x31e4('0x35')][_0x31e4('0x7f')]||[]);}return null;})[_0x31e4('0x16')](respondWithResult(_0x5563f0,null))[_0x31e4('0x24')](handleError(_0x5563f0,null));};exports[_0x31e4('0x80')]=function(_0x356c92,_0x5c6ffb){var _0x1c062a=[];_0x1c062a[_0x31e4('0x59')](addAdditionalPhones(_0x356c92['body']));Promise['all'](_0x1c062a)[_0x31e4('0x16')](function(){_0x1c062a=[];_0x1c062a[_0x31e4('0x59')](deleteCmHopperPhones(_0x356c92[_0x31e4('0x35')]['id']));_0x1c062a['push'](addCmHopperPhones(_0x356c92[_0x31e4('0x35')]['id']));Promise['all'](_0x1c062a)[_0x31e4('0x16')](function(){return[0x1];})['then'](respondWithResult(_0x5c6ffb,null));});};function addAdditionalPhones(_0x4aa134){var _0x23c98a;return new Promise(function(_0x22567e){return db[_0x31e4('0x46')][_0x31e4('0x17')]({'where':{'CmContactId':_0x4aa134['id']}})[_0x31e4('0x16')](function(){db[_0x31e4('0x63')][_0x31e4('0x21')]({'raw':!![],'attributes':['id',_0x31e4('0x81')]})[_0x31e4('0x16')](function(_0x4d9817){var _0x387597=[];for(var _0x42db60=0x0;_0x42db60<_0x4aa134['items']['length'];_0x42db60++){var _0x20530e=_0x4aa134[_0x31e4('0x82')]?_[_0x31e4('0x50')](_0x4aa134[_0x31e4('0x82')][_0x42db60])?'':_0x4aa134[_0x31e4('0x82')][_0x42db60]:_0x4aa134[_0x31e4('0x83')][_0x42db60][_0x31e4('0x84')]?_0x4aa134[_0x31e4('0x83')][_0x42db60][_0x31e4('0x84')]:'';var _0x1b74d3=_[_0x31e4('0x50')](_0x4aa134['items'][_0x42db60][_0x31e4('0x85')])?'':_0x4aa134['items'][_0x42db60][_0x31e4('0x85')];var _0x3e9465=_0x20530e+':'+_0x4aa134['items'][_0x42db60][_0x31e4('0x71')]+'§'+_0x1b74d3;if(_[_0x31e4('0x50')](_0x23c98a))_0x23c98a=_0x3e9465;else _0x23c98a+=';'+_0x3e9465;var _0x19e9dd=null;var _0x526e02=null;if(_0x4aa134[_0x31e4('0x82')]){if(!_[_0x31e4('0x50')](_0x4aa134[_0x31e4('0x82')][_0x42db60])){_0x526e02=_[_0x31e4('0x26')](_0x4d9817,function(_0x3e5c22){return _0x3e5c22['id']===_0x4aa134[_0x31e4('0x82')][_0x42db60];});if(!_[_0x31e4('0x50')](_0x526e02)){_0x19e9dd=_0x526e02[_0x31e4('0x81')];}}}else{if(!_[_0x31e4('0x50')](_0x4aa134[_0x31e4('0x83')][_0x42db60])){_0x526e02=_[_0x31e4('0x26')](_0x4d9817,function(_0x11d80b){return _0x11d80b['id']===_0x4aa134['items'][_0x42db60]['ItemTypeId'];});if(!_[_0x31e4('0x50')](_0x526e02)){_0x19e9dd=_0x42db60;}}}if(_['isNil'](_0x19e9dd)){_0x19e9dd=0x64;}_0x387597[_0x31e4('0x59')](addAdditionalPhone(_0x4aa134['id'],_0x4aa134[_0x31e4('0x83')][_0x42db60][_0x31e4('0x71')],_0x4aa134[_0x31e4('0x82')]?_['isNil'](_0x4aa134[_0x31e4('0x82')][_0x42db60])?null:_0x4aa134[_0x31e4('0x82')][_0x42db60]:_0x4aa134[_0x31e4('0x83')][_0x42db60][_0x31e4('0x84')]?_0x4aa134[_0x31e4('0x83')][_0x42db60][_0x31e4('0x84')]:null,_0x19e9dd,_0x1b74d3));}Promise[_0x31e4('0x5d')](_0x387597)[_0x31e4('0x16')](function(){db[_0x31e4('0x25')]['update']({'AdditionalPhones':_0x23c98a},{'where':{'id':_0x4aa134['id']}})['then'](function(){_0x22567e(0x1);});});});});});}function addAdditionalPhone(_0x3b4be6,_0x38d7aa,_0x5f11f,_0x1e8b17,_0x3efc1b){return db[_0x31e4('0x46')][_0x31e4('0x26')]({'where':{'CmContactId':_0x3b4be6,'item':_0x38d7aa}})[_0x31e4('0x16')](function(_0x17175d){if(_0x17175d)logger[_0x31e4('0x31')]('contact\x20phone\x20exists',_0x17175d);else{db[_0x31e4('0x46')]['create']({'CmContactId':_0x3b4be6,'item':_0x38d7aa,'ItemTypeId':_0x5f11f,'OrderBy':_0x1e8b17,'ItemClass':_0x31e4('0x86'),'description':_0x3efc1b});}});}function deleteCmHopperPhones(_0x97264c){return new Promise(function(_0x309626){return db['CmHopper'][_0x31e4('0x21')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x97264c}})[_0x31e4('0x16')](function(_0x10bcdb){db['CmHopperAdditionalPhone']['destroy']({'where':{'CmHopperId':{'$in':_[_0x31e4('0x69')](_0x10bcdb,'id')}}});})[_0x31e4('0x16')](function(){_0x309626(0x1);});});}function addCmHopperPhones(_0x3526e4){return new Promise(function(_0x21ef10){return db[_0x31e4('0x3a')][_0x31e4('0x21')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x3526e4}})['then'](function(_0xf48a1d){var _0x190ce3=[];_[_0x31e4('0x69')](_0xf48a1d,function(_0x107f20){_0x190ce3[_0x31e4('0x59')](createCmHopperPhone(_0x3526e4,_0x107f20['id']));});Promise[_0x31e4('0x5d')](_0x190ce3)[_0x31e4('0x16')](function(){_0x21ef10(0x1);});});});}function createCmHopperPhone(_0x3eb9fd,_0x3b357d){return new Promise(function(_0xfc350c){db[_0x31e4('0x46')][_0x31e4('0x21')]({'raw':!![],'attributes':[_0x31e4('0x87'),_0x31e4('0x81')],'where':{'CmContactId':_0x3eb9fd,'ItemClass':_0x31e4('0x86')},'include':[{'model':db['ContactItemType'],'attributes':[_0x31e4('0x81')],'as':_0x31e4('0x64')}],'order':[_0x31e4('0x81'),db[_0x31e4('0x88')][_0x31e4('0x65')](_0x31e4('0x89'))]})[_0x31e4('0x16')](function(_0x2f6b66){var _0x5aea86=0x1;var _0x599c52=_[_0x31e4('0x69')](_0x2f6b66,function(_0x23835e){_0x23835e['CmHopperId']=_0x3b357d;_0x23835e[_0x31e4('0x71')]=_0x23835e['item'];_0x23835e[_0x31e4('0x81')]=_0x5aea86;delete _0x23835e[_0x31e4('0x8a')];_0x5aea86=_0x5aea86+0x1;return _0x23835e;});return db[_0x31e4('0x8b')][_0x31e4('0x55')](_0x599c52,{});})[_0x31e4('0x16')](function(){_0xfc350c(0x1);});});}function insertAdditionalPhones(_0x47f077,_0x2e2def){return new Promise(function(_0x2128af){var _0x4b81ce=[];for(var _0x32896a=0x0;_0x32896a<_0x2e2def[_0x31e4('0x29')];_0x32896a++){var _0x1634ab=_0x2e2def[_0x32896a];_0x4b81ce['push'](parseContactItemType(_0x1634ab));}Promise[_0x31e4('0x5d')](_0x4b81ce)[_0x31e4('0x16')](function(){var _0x4fc870={'id':_0x47f077['id'],'items':_0x2e2def};return addAdditionalPhones(_0x4fc870)[_0x31e4('0x16')](function(){return addCmHopperPhones(_0x47f077['id']);});})['then'](function(){_0x2128af(_0x47f077);});});}function parseContactItemType(_0x1193d2){return new Promise(function(_0x3477c0){if(_0x1193d2['hasOwnProperty']('ItemTypeId')){_0x3477c0(_0x1193d2);}else{return db[_0x31e4('0x63')][_0x31e4('0x26')]({'where':{'name':_0x1193d2[_0x31e4('0x64')]}})['then'](function(_0x3b4fe6){if(_[_0x31e4('0x50')](_0x3b4fe6))_0x1193d2[_0x31e4('0x84')]=null;else _0x1193d2['ItemTypeId']=_0x3b4fe6['id'];_0x3477c0(_0x1193d2);});}});}exports[_0x31e4('0x8c')]=function(_0x11e87a,_0x216415){return db[_0x31e4('0x46')][_0x31e4('0x21')]({'raw':!![],'where':{'CmContactId':_0x11e87a['params']['id'],'ItemClass':'PHONE'},'include':[{'model':db[_0x31e4('0x63')],'as':_0x31e4('0x64')}],'order':[[_0x31e4('0x81')],[db['sequelize'][_0x31e4('0x65')](_0x31e4('0x89'))]]})['then'](function(_0x151294){return _0x151294;})[_0x31e4('0x16')](respondWithResult(_0x216415,null))[_0x31e4('0x24')](handleError(_0x216415,null));};exports[_0x31e4('0x8d')]=function(_0xd4bf27,_0x118001){return db[_0x31e4('0x46')][_0x31e4('0x21')]({'raw':!![],'where':{'CmContactId':_0xd4bf27[_0x31e4('0x35')][_0x31e4('0x8e')]}})[_0x31e4('0x16')](function(_0x31af42){var _0x159708=_[_0x31e4('0x69')](_0x31af42,function(_0x54c67b){_0x54c67b[_0x31e4('0x8f')]=_0xd4bf27[_0x31e4('0x35')][_0x31e4('0x90')];return _0x54c67b;});return db[_0x31e4('0x46')][_0x31e4('0x55')](_0x159708,{});})['then'](function(){return addCmHopperPhones(_0xd4bf27['body'][_0x31e4('0x90')]);})[_0x31e4('0x16')](function(){return['ok'];})[_0x31e4('0x16')](respondWithResult(_0x118001,null))[_0x31e4('0x24')](handleError(_0x118001,null));};exports['rescheduleAdditionalPhones']=function(_0x2f8e52,_0x17f6c0){var _0x5e1260=[];_0x5e1260[_0x31e4('0x59')](createCmHopperPhone(_0x2f8e52[_0x31e4('0x35')]['id'],_0x2f8e52[_0x31e4('0x35')][_0x31e4('0x91')]));Promise[_0x31e4('0x5d')](_0x5e1260)[_0x31e4('0x16')](function(){return[0x1];})[_0x31e4('0x16')](respondWithResult(_0x17f6c0,null));};exports['getHoppers']=function(_0x4807d7,_0x14fd17){var _0x2bfdc4={'raw':![],'where':{}};var _0x5e0060={};var _0x3b0142={'count':0x0,'rows':[]};return db['CmContact'][_0x31e4('0x73')]({'where':{'id':_0x4807d7[_0x31e4('0x5e')]['id']}})['then'](handleEntityNotFound(_0x14fd17,null))[_0x31e4('0x16')](function(_0x5f1c1e){if(_0x5f1c1e){_0x5e0060[_0x31e4('0x74')]=_['keys'](db[_0x31e4('0x3a')][_0x31e4('0x92')]);_0x5e0060[_0x31e4('0x22')]=_[_0x31e4('0x28')](_0x4807d7[_0x31e4('0x22')]);_0x5e0060['filters']=_[_0x31e4('0x75')](_0x5e0060['model'],_0x5e0060['query']);_0x2bfdc4[_0x31e4('0x76')]=_[_0x31e4('0x75')](_0x5e0060[_0x31e4('0x74')],qs[_0x31e4('0x77')](_0x4807d7[_0x31e4('0x22')]['fields']));_0x2bfdc4[_0x31e4('0x76')]=_0x2bfdc4[_0x31e4('0x76')][_0x31e4('0x29')]?_0x2bfdc4[_0x31e4('0x76')]:_0x5e0060[_0x31e4('0x74')];if(!_0x4807d7[_0x31e4('0x22')][_0x31e4('0x33')](_0x31e4('0x93'))){_0x2bfdc4[_0x31e4('0xf')]=qs[_0x31e4('0xf')](_0x4807d7[_0x31e4('0x22')][_0x31e4('0xf')]);_0x2bfdc4[_0x31e4('0x12')]=qs['offset'](_0x4807d7[_0x31e4('0x22')][_0x31e4('0x12')]);}_0x2bfdc4['order']=qs['sort'](_0x4807d7['query'][_0x31e4('0x79')]);_0x2bfdc4[_0x31e4('0x57')]=qs[_0x31e4('0x7b')](_[_0x31e4('0x7a')](_0x4807d7[_0x31e4('0x22')],_0x5e0060[_0x31e4('0x7b')]));_0x2bfdc4[_0x31e4('0x57')][_0x31e4('0x94')]=_0x5f1c1e['id'];if(_0x4807d7[_0x31e4('0x22')][_0x31e4('0x7c')]){_0x2bfdc4[_0x31e4('0x57')]=_[_0x31e4('0x34')](_0x2bfdc4[_0x31e4('0x57')],{'$or':_[_0x31e4('0x69')](_0x2bfdc4[_0x31e4('0x76')],function(_0x5b0230){var _0x1c326c={};_0x1c326c[_0x5b0230]={'$like':'%'+_0x4807d7[_0x31e4('0x22')]['filter']+'%'};return _0x1c326c;})});}_0x2bfdc4=_['merge']({},_0x2bfdc4,_0x4807d7['options']);return db[_0x31e4('0x3a')]['count']({'where':_0x2bfdc4['where']})['then'](function(_0x271a54){_0x3b0142['count']=_0x271a54;if(_0x4807d7[_0x31e4('0x22')][_0x31e4('0x95')]){_0x2bfdc4[_0x31e4('0x96')]=[{'all':!![]}];}return db[_0x31e4('0x3a')][_0x31e4('0x21')](_0x2bfdc4);})['then'](function(_0x42e7b7){_0x3b0142[_0x31e4('0x97')]=_0x42e7b7;return _0x3b0142;});}})[_0x31e4('0x16')](respondWithFilteredResult(_0x14fd17,_0x2bfdc4))['catch'](handleError(_0x14fd17,null));};exports[_0x31e4('0x98')]=function(_0x454a27,_0x565833){var _0x1e9b9c={'raw':!![],'where':{}};var _0x16e6d4={};var _0x156a9c={'count':0x0,'rows':[]};return db[_0x31e4('0x25')][_0x31e4('0x73')]({'where':{'id':_0x454a27[_0x31e4('0x5e')]['id']}})['then'](handleEntityNotFound(_0x565833,null))['then'](function(_0x13cb55){if(_0x13cb55){_0x16e6d4[_0x31e4('0x74')]=_['keys'](db[_0x31e4('0x47')][_0x31e4('0x92')]);_0x16e6d4[_0x31e4('0x22')]=_[_0x31e4('0x28')](_0x454a27[_0x31e4('0x22')]);_0x16e6d4[_0x31e4('0x7b')]=_[_0x31e4('0x75')](_0x16e6d4['model'],_0x16e6d4[_0x31e4('0x22')]);_0x1e9b9c[_0x31e4('0x76')]=_['intersection'](_0x16e6d4[_0x31e4('0x74')],qs[_0x31e4('0x77')](_0x454a27[_0x31e4('0x22')][_0x31e4('0x77')]));_0x1e9b9c[_0x31e4('0x76')]=_0x1e9b9c['attributes'][_0x31e4('0x29')]?_0x1e9b9c['attributes']:_0x16e6d4['model'];if(!_0x454a27[_0x31e4('0x22')]['hasOwnProperty'](_0x31e4('0x93'))){_0x1e9b9c[_0x31e4('0xf')]=qs[_0x31e4('0xf')](_0x454a27[_0x31e4('0x22')][_0x31e4('0xf')]);_0x1e9b9c[_0x31e4('0x12')]=qs[_0x31e4('0x12')](_0x454a27[_0x31e4('0x22')][_0x31e4('0x12')]);}_0x1e9b9c['order']=qs[_0x31e4('0x79')](_0x454a27[_0x31e4('0x22')][_0x31e4('0x79')]);_0x1e9b9c[_0x31e4('0x57')]=qs[_0x31e4('0x7b')](_[_0x31e4('0x7a')](_0x454a27[_0x31e4('0x22')],_0x16e6d4['filters']));_0x1e9b9c[_0x31e4('0x57')][_0x31e4('0x94')]=_0x13cb55['id'];if(_0x454a27[_0x31e4('0x22')][_0x31e4('0x7c')]){_0x1e9b9c[_0x31e4('0x57')]=_[_0x31e4('0x34')](_0x1e9b9c[_0x31e4('0x57')],{'$or':_[_0x31e4('0x69')](_0x1e9b9c[_0x31e4('0x76')],function(_0x529dad){var _0x56ef7e={};_0x56ef7e[_0x529dad]={'$like':'%'+_0x454a27['query'][_0x31e4('0x7c')]+'%'};return _0x56ef7e;})});}_0x1e9b9c=_[_0x31e4('0x34')]({},_0x1e9b9c,_0x454a27['options']);return db[_0x31e4('0x47')][_0x31e4('0x11')]({'where':_0x1e9b9c[_0x31e4('0x57')]})[_0x31e4('0x16')](function(_0x62a18c){_0x156a9c[_0x31e4('0x11')]=_0x62a18c;if(_0x454a27[_0x31e4('0x22')][_0x31e4('0x95')]){_0x1e9b9c[_0x31e4('0x96')]=[{'all':!![]}];}return db[_0x31e4('0x47')][_0x31e4('0x21')](_0x1e9b9c);})[_0x31e4('0x16')](function(_0x37acef){_0x156a9c[_0x31e4('0x97')]=_0x37acef;return _0x156a9c;});}})[_0x31e4('0x16')](respondWithFilteredResult(_0x565833,_0x1e9b9c))['catch'](handleError(_0x565833,null));};exports['getHopperFinals']=function(_0x5e1ff1,_0xd661fc){var _0xcbb582={'raw':!![],'where':{}};var _0x5817ba={};var _0x43e8cc={'count':0x0,'rows':[]};return db[_0x31e4('0x25')]['findOne']({'where':{'id':_0x5e1ff1['params']['id']}})[_0x31e4('0x16')](handleEntityNotFound(_0xd661fc,null))[_0x31e4('0x16')](function(_0x3c6412){if(_0x3c6412){_0x5817ba['model']=_[_0x31e4('0x28')](db[_0x31e4('0x99')][_0x31e4('0x92')]);_0x5817ba[_0x31e4('0x22')]=_[_0x31e4('0x28')](_0x5e1ff1['query']);_0x5817ba[_0x31e4('0x7b')]=_[_0x31e4('0x75')](_0x5817ba[_0x31e4('0x74')],_0x5817ba[_0x31e4('0x22')]);_0xcbb582[_0x31e4('0x76')]=_['intersection'](_0x5817ba['model'],qs['fields'](_0x5e1ff1[_0x31e4('0x22')][_0x31e4('0x77')]));_0xcbb582['attributes']=_0xcbb582[_0x31e4('0x76')][_0x31e4('0x29')]?_0xcbb582[_0x31e4('0x76')]:_0x5817ba[_0x31e4('0x74')];if(!_0x5e1ff1[_0x31e4('0x22')][_0x31e4('0x33')]('nolimit')){_0xcbb582['limit']=qs[_0x31e4('0xf')](_0x5e1ff1[_0x31e4('0x22')]['limit']);_0xcbb582[_0x31e4('0x12')]=qs[_0x31e4('0x12')](_0x5e1ff1[_0x31e4('0x22')][_0x31e4('0x12')]);}_0xcbb582['order']=qs['sort'](_0x5e1ff1['query']['sort']);_0xcbb582[_0x31e4('0x57')]=qs['filters'](_['pick'](_0x5e1ff1['query'],_0x5817ba['filters']));_0xcbb582[_0x31e4('0x57')][_0x31e4('0x94')]=_0x3c6412['id'];if(_0x5e1ff1[_0x31e4('0x22')][_0x31e4('0x7c')]){_0xcbb582[_0x31e4('0x57')]=_[_0x31e4('0x34')](_0xcbb582['where'],{'$or':_[_0x31e4('0x69')](_0xcbb582['attributes'],function(_0x364681){var _0x1dae5a={};_0x1dae5a[_0x364681]={'$like':'%'+_0x5e1ff1[_0x31e4('0x22')][_0x31e4('0x7c')]+'%'};return _0x1dae5a;})});}_0xcbb582=_[_0x31e4('0x34')]({},_0xcbb582,_0x5e1ff1[_0x31e4('0x7d')]);return db[_0x31e4('0x99')]['count']({'where':_0xcbb582[_0x31e4('0x57')]})[_0x31e4('0x16')](function(_0x399f19){_0x43e8cc[_0x31e4('0x11')]=_0x399f19;if(_0x5e1ff1[_0x31e4('0x22')][_0x31e4('0x95')]){_0xcbb582[_0x31e4('0x96')]=[{'all':!![]}];}return db[_0x31e4('0x99')][_0x31e4('0x21')](_0xcbb582);})[_0x31e4('0x16')](function(_0x210c92){_0x43e8cc[_0x31e4('0x97')]=_0x210c92;return _0x43e8cc;});}})[_0x31e4('0x16')](respondWithFilteredResult(_0xd661fc,_0xcbb582))['catch'](handleError(_0xd661fc,null));};exports['getJscriptySessions']=function(_0x1e1f36,_0x2fad18){var _0x419adf={'raw':!![],'where':{}};var _0x3a37ba={};var _0x442ac1={'count':0x0,'rows':[]};return db[_0x31e4('0x25')][_0x31e4('0x73')]({'where':{'id':_0x1e1f36['params']['id']}})[_0x31e4('0x16')](handleEntityNotFound(_0x2fad18,null))[_0x31e4('0x16')](function(_0x457b61){if(_0x457b61){_0x3a37ba[_0x31e4('0x74')]=_[_0x31e4('0x28')](db[_0x31e4('0x4d')][_0x31e4('0x92')]);_0x3a37ba['query']=_['keys'](_0x1e1f36[_0x31e4('0x22')]);_0x3a37ba['filters']=_[_0x31e4('0x75')](_0x3a37ba[_0x31e4('0x74')],_0x3a37ba[_0x31e4('0x22')]);_0x419adf[_0x31e4('0x76')]=_[_0x31e4('0x75')](_0x3a37ba[_0x31e4('0x74')],qs[_0x31e4('0x77')](_0x1e1f36[_0x31e4('0x22')][_0x31e4('0x77')]));_0x419adf[_0x31e4('0x76')]=_0x419adf[_0x31e4('0x76')]['length']?_0x419adf[_0x31e4('0x76')]:_0x3a37ba['model'];if(!_0x1e1f36[_0x31e4('0x22')][_0x31e4('0x33')](_0x31e4('0x93'))){_0x419adf[_0x31e4('0xf')]=qs[_0x31e4('0xf')](_0x1e1f36['query'][_0x31e4('0xf')]);_0x419adf[_0x31e4('0x12')]=qs[_0x31e4('0x12')](_0x1e1f36[_0x31e4('0x22')][_0x31e4('0x12')]);}_0x419adf['order']=qs[_0x31e4('0x79')](_0x1e1f36[_0x31e4('0x22')]['sort']);_0x419adf[_0x31e4('0x57')]=qs[_0x31e4('0x7b')](_['pick'](_0x1e1f36[_0x31e4('0x22')],_0x3a37ba[_0x31e4('0x7b')]));_0x419adf[_0x31e4('0x57')][_0x31e4('0x94')]=_0x457b61['id'];if(_0x1e1f36['query'][_0x31e4('0x7c')]){_0x419adf[_0x31e4('0x57')]=_['merge'](_0x419adf[_0x31e4('0x57')],{'$or':_[_0x31e4('0x69')](_0x419adf['attributes'],function(_0x52eb15){var _0x73de01={};_0x73de01[_0x52eb15]={'$like':'%'+_0x1e1f36[_0x31e4('0x22')][_0x31e4('0x7c')]+'%'};return _0x73de01;})});}_0x419adf=_[_0x31e4('0x34')]({},_0x419adf,_0x1e1f36['options']);return db[_0x31e4('0x4d')][_0x31e4('0x11')]({'where':_0x419adf[_0x31e4('0x57')]})[_0x31e4('0x16')](function(_0x1343a5){_0x442ac1[_0x31e4('0x11')]=_0x1343a5;if(_0x1e1f36[_0x31e4('0x22')]['includeAll']){_0x419adf[_0x31e4('0x96')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x419adf);})['then'](function(_0x5dc80e){_0x442ac1[_0x31e4('0x97')]=_0x5dc80e;return _0x442ac1;});}})['then'](respondWithFilteredResult(_0x2fad18,_0x419adf))[_0x31e4('0x24')](handleError(_0x2fad18,null));};exports['uploadCsv']=function(_0x2fb51c,_0x4f308b){try{if(!_0x2fb51c['body'][_0x31e4('0x5a')]){throw new Error(_0x31e4('0x9a'));}if(!_0x2fb51c[_0x31e4('0x35')][_0x31e4('0x9b')]){throw new Error(_0x31e4('0x9c'));}if(!_0x2fb51c[_0x31e4('0x35')]['binding_values']){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x2fb51c[_0x31e4('0x35')][_0x31e4('0x9d')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x79163=_0x2fb51c[_0x31e4('0x35')]['binding_keys'][_0x31e4('0x9e')](',');var _0x124bb7=_0x2fb51c[_0x31e4('0x35')]['binding_values'][_0x31e4('0x9e')](',');if(!_0x79163['length']||!_0x124bb7[_0x31e4('0x29')]||_0x79163[_0x31e4('0x29')]!==_0x124bb7[_0x31e4('0x29')]){throw new Error(_0x31e4('0x9f'));}_0x2fb51c['body'][_0x31e4('0x77')]=_['zipObject'](_0x79163,_0x124bb7);if(!_0x2fb51c[_0x31e4('0x35')][_0x31e4('0x77')][_0x31e4('0x71')]){throw new Error(_0x31e4('0xa0'));}if(!_0x2fb51c['body'][_0x31e4('0x77')][_0x31e4('0xa1')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x440c17=path[_0x31e4('0x38')](config[_0x31e4('0xa2')],_0x31e4('0xa3'),_0x2fb51c[_0x31e4('0xa4')][_0x31e4('0xa5')]);fs[_0x31e4('0xa6')](_0x440c17,parseInt(_0x31e4('0xa7'),0x8));var _0x1c5d9e=require(_0x31e4('0xa8'))[_0x31e4('0xa9')](path[_0x31e4('0x38')](__dirname,'../../components/import/cm/csv'),[_0x440c17,_0x2fb51c[_0x31e4('0x35')][_0x31e4('0x9b')],_0x2fb51c[_0x31e4('0x35')][_0x31e4('0xaa')],_0x2fb51c[_0x31e4('0x35')][_0x31e4('0x5a')],_0x2fb51c[_0x31e4('0x35')][_0x31e4('0xab')],_0x2fb51c[_0x31e4('0x35')][_0x31e4('0x56')],_0x2fb51c[_0x31e4('0x35')][_0x31e4('0x9d')]]);return _0x4f308b[_0x31e4('0xd')](0xc8)[_0x31e4('0xe')]({'message':'File\x20uploaded\x20correctly!','pid':_0x1c5d9e['pid']});}catch(_0x19b9e2){return _0x4f308b[_0x31e4('0xd')](0x1f4)[_0x31e4('0x1d')](_0x19b9e2);}};exports[_0x31e4('0xac')]=function(_0x2a6eb2,_0x349135){var _0x15d372=fs[_0x31e4('0xad')](_0x2a6eb2[_0x31e4('0xa4')][_0x31e4('0x2')]);Papa[_0x31e4('0xae')](_0x15d372,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x337937){return _0x349135[_0x31e4('0xd')](0xc8)[_0x31e4('0xe')]({'file':_0x2a6eb2[_0x31e4('0xa4')],'fields':_0x337937[_0x31e4('0xaf')]['fields']});}});};exports['import']=function(_0x3038cf,_0x377daa){return db['User'][_0x31e4('0x21')]({'raw':!![],'attributes':['id'],'where':{'role':_0x31e4('0xb0')}})[_0x31e4('0x16')](function(_0x33866c){var _0x5c88f7=![];if(!_0x3038cf['body'][_0x31e4('0x5a')]){throw new Error(_0x31e4('0x9a'));}if(!_0x3038cf['body'][_0x31e4('0xb1')][_0x31e4('0x71')]){throw new Error(_0x31e4('0xa0'));}if(!_0x3038cf[_0x31e4('0x35')][_0x31e4('0xb1')]['firstName']){throw new Error(_0x31e4('0xb2'));}if(!_0x3038cf[_0x31e4('0x35')]['socket_timestamp']){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xa48654=require(_0x31e4('0xa8'))[_0x31e4('0xa9')](path[_0x31e4('0x38')](__dirname,_0x31e4('0xb3')),[_0x3038cf['params']['id'],JSON[_0x31e4('0xb4')](_0x3038cf[_0x31e4('0x35')]),JSON[_0x31e4('0xb4')](_0x33866c)]);_0xa48654['on'](_0x31e4('0xb5'),function(){_0x5c88f7=!![];return _0x377daa['status'](0xc8)[_0x31e4('0xe')]({'message':'start\x20child\x20process\x20correctly!','pid':_0xa48654['pid']});});_0xa48654['on']('exit',function(_0x538c14){if(_0x538c14&&!_0x5c88f7){return _0x377daa[_0x31e4('0xd')](0x1f4)[_0x31e4('0xe')]({'message':'error\x20child\x20process','pid':_0xa48654[_0x31e4('0xb6')]});}});})[_0x31e4('0x24')](handleError(_0x377daa,null));};exports[_0x31e4('0xb7')]=function(_0x4560dc,_0x46ae31){return db[_0x31e4('0xb8')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x31e4('0xb0')}})[_0x31e4('0x16')](function(_0x1a0d70){var _0xec9a82=![];if(!_0x4560dc[_0x31e4('0x35')][_0x31e4('0x5a')]){throw new Error(_0x31e4('0x9a'));}if(!_0x4560dc[_0x31e4('0x35')]['binding'][_0x31e4('0x71')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x4560dc[_0x31e4('0x35')]['binding'][_0x31e4('0xa1')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x4560dc[_0x31e4('0x35')][_0x31e4('0x9d')]){throw new Error(_0x31e4('0xb9'));}var _0x12720d=require('child_process')['fork'](path['join'](__dirname,'../../components/import/cm/csvUpdates'),[_0x4560dc['params']['id'],JSON['stringify'](_0x4560dc[_0x31e4('0x35')]),JSON[_0x31e4('0xb4')](_0x1a0d70)]);_0x12720d['on'](_0x31e4('0xb5'),function(){_0xec9a82=!![];return _0x46ae31[_0x31e4('0xd')](0xc8)[_0x31e4('0xe')]({'message':_0x31e4('0xba'),'pid':_0x12720d[_0x31e4('0xb6')]});});_0x12720d['on'](_0x31e4('0xbb'),function(_0x381d20){if(_0x381d20&&!_0xec9a82){return _0x46ae31[_0x31e4('0xd')](0x1f4)[_0x31e4('0xe')]({'message':'error\x20child\x20process','pid':_0x12720d[_0x31e4('0xb6')]});}});})[_0x31e4('0x24')](handleError(_0x46ae31,null));};exports[_0x31e4('0xbc')]=function(_0x5f3a95,_0x383199){var _0x2ca684=[_0x31e4('0xbd'),_0x31e4('0xbe'),_0x31e4('0xbf'),_0x31e4('0xc0'),'fax',_0x31e4('0xc1'),'voice'];var _0x17b60d={'offset':0x0,'order':qs[_0x31e4('0x79')](_0x31e4('0xc2'))},_0x4a96bf={'count':0x0,'rows':[]};Promise[_0x31e4('0xc3')]()[_0x31e4('0x16')](function(){if(_0x5f3a95['query']['channel']){if(!_[_0x31e4('0xc4')](_0x2ca684,_0x5f3a95[_0x31e4('0x22')][_0x31e4('0xc5')][_0x31e4('0xc6')]())){throw new Error('Invalid\x20channel');}_0x2ca684=[_0x5f3a95[_0x31e4('0x22')][_0x31e4('0xc5')][_0x31e4('0xc6')]()];}if(_0x5f3a95[_0x31e4('0x22')][_0x31e4('0xc7')]){try{var _0x285cc6=JSON[_0x31e4('0xae')](_0x5f3a95['query'][_0x31e4('0xc7')]);if(!moment(_0x285cc6['from'])['isValid']()){throw new Error(_0x31e4('0xc8'));}if(!moment(_0x285cc6['to'])[_0x31e4('0xc9')]()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x549b8d){throw new Error(_0x31e4('0xca'));}}if(!_0x5f3a95['query'][_0x31e4('0x33')](_0x31e4('0x93'))){_0x17b60d[_0x31e4('0xf')]=qs[_0x31e4('0xf')](_0x5f3a95[_0x31e4('0x22')]['limit']||0xa);_0x17b60d[_0x31e4('0x12')]=qs[_0x31e4('0x12')](_0x5f3a95['query'][_0x31e4('0x12')]);}var _0x3cae2c=_0x2ca684['map'](function(_0x329887){if(_0x329887===_0x31e4('0xcb')){var _0x5e773f={'attributes':['id',_0x31e4('0xcc'),_0x31e4('0x30'),_0x31e4('0xcd'),_0x31e4('0xce'),'callerid',_0x31e4('0xcf'),'endtime',_0x31e4('0xd0'),_0x31e4('0xd1'),'createdAt',_0x31e4('0xd2'),_0x31e4('0xd3'),_0x31e4('0xd4'),'UserId'],'where':{'ContactId':_0x5f3a95[_0x31e4('0x5e')]['id']},'include':[{'model':db[_0x31e4('0xb8')],'as':'User','attributes':['id',_0x31e4('0x1c'),_0x31e4('0xd5'),'alias']}],'order':[['createdAt','DESC']]};if(_0x5f3a95[_0x31e4('0x22')][_0x31e4('0xc7')]){_0x5e773f[_0x31e4('0x57')][_0x31e4('0xd6')]={'$gte':_0x285cc6[_0x31e4('0x3b')],'$lte':_0x285cc6['to']};}return db[_0x31e4('0xd7')][_0x31e4('0xd8')](_0x5e773f)['then'](function(_0x4f740a){_0x4a96bf[_0x31e4('0x11')]+=_0x4f740a[_0x31e4('0x11')];return _[_0x31e4('0x69')](_0x4f740a[_0x31e4('0x97')],function(_0x24c00c){var _0x552d9b=_0x24c00c[_0x31e4('0x36')]({'plain':!![]});_0x552d9b['channel']=_0x329887;if(_0x552d9b[_0x31e4('0xb8')]){_0x552d9b[_0x31e4('0xb8')]={'id':_0x552d9b[_0x31e4('0xb8')]['id'],'name':_0x552d9b[_0x31e4('0xb8')][_0x31e4('0x1c')],'fullname':_0x552d9b[_0x31e4('0xb8')][_0x31e4('0xd5')],'alias':_0x552d9b[_0x31e4('0xb8')]['alias']};}return _0x552d9b;});});}else{var _0x528fcf=_[_0x31e4('0xd9')](_0x329887)+(_0x329887===_0x31e4('0xbe')?_0x31e4('0xda'):_0x31e4('0xdb'));var _0xfbf559={'attributes':['id','closed','closedAt',_0x31e4('0xd6'),'note',_0x31e4('0xdc'),_0x31e4('0xdd'),_0x31e4('0xde'),_0x31e4('0xdf'),_0x528fcf+'Id'],'where':{'ContactId':_0x5f3a95[_0x31e4('0x5e')]['id']},'include':[{'model':db[_0x528fcf],'as':_0x31e4('0xdb'),'attributes':['id','name',_0x31e4('0xe0')]},{'model':db[_0x31e4('0xb8')],'as':_0x31e4('0xe1'),'attributes':['id','name','fullname']},{'model':db[_0x31e4('0xe2')],'as':_0x31e4('0x5f'),'attributes':['id',_0x31e4('0x1c'),_0x31e4('0x60')],'through':{'attributes':[]}}],'order':[[_0x31e4('0xd6'),_0x31e4('0xe3')]]};if(_0x5f3a95['query']['range']){_0xfbf559[_0x31e4('0x57')]['createdAt']={'$gte':_0x285cc6[_0x31e4('0x3b')],'$lte':_0x285cc6['to']};}switch(_0x329887){case _0x31e4('0xbe'):_0xfbf559[_0x31e4('0x76')][_0x31e4('0x59')]('browserName',_0x31e4('0xe4'),'customerPort','deviceModel',_0x31e4('0xe5'),_0x31e4('0xe6'),'ratingType','ratingValue',_0x31e4('0xe7'));break;case _0x31e4('0xbd'):_0xfbf559['attributes'][_0x31e4('0x59')](_0x31e4('0xe8'),'substatus');break;case _0x31e4('0xc0'):_0xfbf559[_0x31e4('0x76')][_0x31e4('0x59')](_0x31e4('0xe9'),_0x31e4('0xea'));break;}return db[_[_0x31e4('0xd9')](_0x329887)+'Interaction']['findAndCountAll'](_0xfbf559)[_0x31e4('0x16')](function(_0x21655d){_0x4a96bf[_0x31e4('0x11')]+=_0x21655d['count'];return _['map'](_0x21655d[_0x31e4('0x97')],function(_0x46d799){var _0x45f30a=_0x46d799['get']({'plain':!![]});_0x45f30a[_0x31e4('0xc5')]=_0x329887;if(_0x45f30a[_0x31e4('0xe1')]){_0x45f30a[_0x31e4('0xe1')]={'id':_0x45f30a[_0x31e4('0xe1')]['id'],'name':_0x45f30a['Owner'][_0x31e4('0x1c')],'fullname':_0x45f30a[_0x31e4('0xe1')][_0x31e4('0xd5')]};}return _0x45f30a;});});}});return Promise[_0x31e4('0x5d')](_0x3cae2c);})[_0x31e4('0x16')](function(_0x379d54){return _(_0x379d54)[_0x31e4('0xeb')]()[_0x31e4('0xec')](_0x31e4('0xd6'))[_0x31e4('0xed')]()['value']();})['then'](function(_0x4d00ab){_0x4a96bf[_0x31e4('0x97')]=_0x17b60d[_0x31e4('0xf')]?_0x4d00ab['slice'](_0x17b60d[_0x31e4('0x12')],_0x17b60d[_0x31e4('0x12')]+_0x17b60d[_0x31e4('0xf')]):_0x4d00ab;return _0x4a96bf;})[_0x31e4('0x16')](respondWithFilteredResult(_0x383199,_0x17b60d))[_0x31e4('0x24')](handleError(_0x383199,null));};
\ No newline at end of file
+var _0x2988=['ratingType','ratingValue','referer','subject','externalUrl','threadId','flatten','sortBy','reverse','value','slice','moment','bluebird','util','squel','papaparse','ioredis','../../components/contacts','../../components/parsers/qs','../../config/environment','../../config/environment/shared','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','status','offset','undefined','count','limit','set','Content-Range','json','update','then','end','sendStatus','error','stack','name','send','index','describe','getOptions','findAll','user','CmContact','params','catch','tags','length','keys','cf_','displayName','query','analytics','CmCustomField','columnName','alias','custom','type','values','info','Custom\x20field\x20%s\x20not\x20found\x20on\x20cm_contacts\x20table','forEach','hasOwnProperty','merge','body','from','get','mergeWith','isArray','CmHopper','destroy','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappQueueReport','join','isNil','dialTimezone','timezones','utcOffset','additionalPhones','duplicates','where','$or','ListId','spread','push','contact','show','find','Tag','Tags','color','tag','Phones','sequelize','literal','Phones.OrderBy','$and','omit','map','pickBy','table','cm_contacts','id\x20=\x20?','toParam','text','phone','findOne','model','filters','intersection','attributes','fields','order','sort','filter','getTags','setTags','ids','setAdditionalPhones','all','ContactItemType','OrderBy','item_types','items','ItemTypeId','contact\x20phone\x20exists','PHONE','CmHopperAdditionalPhone','ItemType','CmHopperId','ItemType.OrderBy','bulkCreate','getAdditionalPhones','`ItemType`.OrderBy','duplicateAdditionalPhones','fromContactId','CmContactId','toContactId','rescheduleAdditionalPhones','getHoppers','rawAttributes','nolimit','ContactId','options','rows','getHopperHistories','pick','includeAll','CmHopperFinal','include','JscriptySessionReport','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','binding_values','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','binding_keys','split','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','server/files/tmp','file','filename','chmodSync','child_process','../../components/import/cm/csv','File\x20uploaded\x20correctly!','pid','upload','createReadStream','parse','meta','import','agent','fork','error\x20child\x20process','User','binding','../../components/import/cm/csvUpdates','stringify','message','start\x20child\x20process\x20correctly!','exit','mail','chat','sms','openchannel','whatsapp','voice','-createdAt','channel','includes','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','source','destination','callerid','starttime','note','userDisposition','userSecondDisposition','userThirdDisposition','UserId','createdAt','DESC','findAndCountAll','fullname','startCase','Account','closed','closedAt','disposition','secondDisposition','thirdDisposition','key','Owner','browserName','customerIp','deviceModel'];(function(_0xa883e3,_0x599111){var _0x23300a=function(_0x4abd7f){while(--_0x4abd7f){_0xa883e3['push'](_0xa883e3['shift']());}};_0x23300a(++_0x599111);}(_0x2988,0x107));var _0x8298=function(_0x54cca7,_0x2fe248){_0x54cca7=_0x54cca7-0x0;var _0x4019f2=_0x2988[_0x54cca7];return _0x4019f2;};'use strict';var moment=require(_0x8298('0x0'));var BPromise=require(_0x8298('0x1'));var util=require(_0x8298('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x8298('0x3'));var Papa=require(_0x8298('0x4'));var Redis=require(_0x8298('0x5'));var contacts=require(_0x8298('0x6'));var qs=require(_0x8298('0x7'));var logger=require('../../config/logger')('api');var config=require(_0x8298('0x8'));var shared=require(_0x8298('0x9'));var db=require(_0x8298('0xa'))['db'];config[_0x8298('0xb')]=_[_0x8298('0xc')](config[_0x8298('0xb')],{'host':_0x8298('0xd'),'port':0x18eb});var socket=require(_0x8298('0xe'))(new Redis(config[_0x8298('0xb')]));require(_0x8298('0xf'))[_0x8298('0x10')](socket);function respondWithResult(_0x4cff0e,_0x1e2fcd){_0x1e2fcd=_0x1e2fcd||0xc8;return function(_0x9be0fd){if(_0x9be0fd){return _0x4cff0e[_0x8298('0x11')](_0x1e2fcd)['json'](_0x9be0fd);}};}function respondWithFilteredResult(_0x44badb,_0x3d88a6){return function(_0x3a4294){if(_0x3a4294){var _0x44f700=typeof _0x3d88a6[_0x8298('0x12')]==='undefined'&&typeof _0x3d88a6['limit']===_0x8298('0x13');var _0x53b2f0=_0x3a4294[_0x8298('0x14')];var _0x284671=_0x44f700?0x0:_0x3d88a6[_0x8298('0x12')];var _0x5a2676=_0x44f700?_0x3a4294[_0x8298('0x14')]:_0x3d88a6[_0x8298('0x12')]+_0x3d88a6[_0x8298('0x15')];var _0x587aea;if(_0x5a2676>=_0x53b2f0){_0x5a2676=_0x53b2f0;_0x587aea=0xc8;}else{_0x587aea=0xce;}_0x44badb[_0x8298('0x11')](_0x587aea);return _0x44badb[_0x8298('0x16')](_0x8298('0x17'),_0x284671+'-'+_0x5a2676+'/'+_0x53b2f0)[_0x8298('0x18')](_0x3a4294);}return null;};}function saveUpdates(_0x38bfef){return function(_0x582dfa){if(_0x582dfa){return _0x582dfa[_0x8298('0x19')](_0x38bfef)[_0x8298('0x1a')](function(_0x22c46c){return _0x22c46c;});}return null;};}function removeEntity(_0x445451){return function(_0x203c7c){if(_0x203c7c){return _0x203c7c['destroy']()['then'](function(){_0x445451[_0x8298('0x11')](0xcc)[_0x8298('0x1b')]();});}};}function handleEntityNotFound(_0x506695){return function(_0x249b4c){if(!_0x249b4c){_0x506695[_0x8298('0x1c')](0x194);}return _0x249b4c;};}function handleError(_0x48005c,_0xd86148){_0xd86148=_0xd86148||0x1f4;return function(_0x2668a5){logger[_0x8298('0x1d')](_0x2668a5[_0x8298('0x1e')]);if(_0x2668a5['name']){delete _0x2668a5[_0x8298('0x1f')];}_0x48005c[_0x8298('0x11')](_0xd86148)[_0x8298('0x20')](_0x2668a5);};}exports[_0x8298('0x21')]=function(_0x51507c,_0x4d098f){var _0x52fbc7={};return contacts[_0x8298('0x22')]()[_0x8298('0x1a')](function(_0x2fbcf6){_0x52fbc7=qs[_0x8298('0x23')](_0x2fbcf6,_0x51507c);return contacts[_0x8298('0x24')](_0x51507c['query'],_0x51507c[_0x8298('0x25')],_0x52fbc7,_0x2fbcf6);})[_0x8298('0x1a')](respondWithFilteredResult(_0x4d098f,_0x52fbc7))['catch'](handleError(_0x4d098f,null));};exports['destroy']=function(_0x40ff2b,_0x2ca191){return db[_0x8298('0x26')]['find']({'where':{'id':_0x40ff2b[_0x8298('0x27')]['id']}})[_0x8298('0x1a')](handleEntityNotFound(_0x2ca191,null))['then'](removeEntity(_0x2ca191,null))[_0x8298('0x28')](handleError(_0x2ca191,null));};exports[_0x8298('0x22')]=function(_0x17ff62,_0x13b2d6){return db[_0x8298('0x26')][_0x8298('0x22')]()[_0x8298('0x1a')](function(_0x58800f){delete _0x58800f[_0x8298('0x29')];for(var _0x59fca3=0x0;_0x59fca3<Object['keys'](_0x58800f)[_0x8298('0x2a')];_0x59fca3++){var _0x4ee9f7=Object[_0x8298('0x2b')](_0x58800f)[_0x59fca3];if(!_['startsWith'](_0x4ee9f7,_0x8298('0x2c'))){_0x58800f[_0x4ee9f7]['columnName']=_0x4ee9f7;_0x58800f[_0x4ee9f7][_0x8298('0x2d')]=_0x4ee9f7;}}return _0x58800f;})[_0x8298('0x1a')](function(_0x34c852){var _0x22352a={'where':Boolean(_0x17ff62[_0x8298('0x2e')][_0x8298('0x2f')])===!![]?undefined:{'$or':[{'ListId':_0x17ff62['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0x8298('0x30')][_0x8298('0x24')](_0x22352a)[_0x8298('0x1a')](function(_0x21df06){for(var _0x1130de=0x0;_0x1130de<_0x21df06['length'];_0x1130de++){var _0x58cd2f=_0x8298('0x2c')+_0x21df06[_0x1130de]['id'];if(_0x34c852[_0x58cd2f]){_0x34c852[_0x58cd2f][_0x8298('0x31')]=_0x58cd2f;_0x34c852[_0x58cd2f]['displayName']=_0x21df06[_0x1130de][_0x8298('0x32')];_0x34c852[_0x58cd2f][_0x8298('0x33')]={'type':_0x21df06[_0x1130de][_0x8298('0x34')],'values':_0x21df06[_0x1130de][_0x8298('0x35')]};}else{logger[_0x8298('0x36')](_0x8298('0x37'),_0x58cd2f);}}Object[_0x8298('0x2b')](_0x34c852)[_0x8298('0x38')](function(_0x21f7c6){if(!_0x34c852[_0x21f7c6][_0x8298('0x39')](_0x8298('0x31'))){delete _0x34c852[_0x21f7c6];}});return _0x34c852;});})[_0x8298('0x1a')](respondWithResult(_0x13b2d6,null))['catch'](handleError(_0x13b2d6,null));};exports[_0x8298('0x3a')]=function(_0x538db2,_0x162c7d){var _0x1ab838;var _0x2c08b6;var _0x1fd73a;if(_0x538db2[_0x8298('0x3b')]['id']){delete _0x538db2[_0x8298('0x3b')]['id'];}return db[_0x8298('0x26')][_0x8298('0x24')]({'where':{'id':[_0x538db2[_0x8298('0x3b')]['to'],_0x538db2[_0x8298('0x3b')][_0x8298('0x3c')]]}})[_0x8298('0x1a')](function(_0x9a809d){if(_0x9a809d){if(_0x9a809d['length']!==0x2){return null;}_0x9a809d[0x0]=_0x9a809d[0x0][_0x8298('0x3d')]({'plain':!![]});_0x9a809d[0x1]=_0x9a809d[0x1][_0x8298('0x3d')]({'plain':!![]});delete _0x9a809d[0x0]['id'];delete _0x9a809d[0x1]['id'];return _[_0x8298('0x3e')](_0x9a809d[0x0],_0x9a809d[0x1],function(_0x447f22,_0x5ad222){if(Array[_0x8298('0x3f')](_0x5ad222)&&!_0x5ad222['length']){return _0x447f22;}else if(!_0x5ad222){return _0x447f22;}});}})['then'](handleEntityNotFound(_0x162c7d,null))[_0x8298('0x1a')](function(_0x21921a){if(_0x21921a){if(_0x21921a['tags']&&_['isArray'](_0x21921a[_0x8298('0x29')])){_0x21921a['tags']=_0x21921a['tags']['join']();}logger[_0x8298('0x36')]('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x538db2[_0x8298('0x3b')]['to'],_0x538db2['body'][_0x8298('0x3c')]);return db[_0x8298('0x40')][_0x8298('0x41')]({'where':{'ContactId':[_0x538db2[_0x8298('0x3b')]['to'],_0x538db2[_0x8298('0x3b')][_0x8298('0x3c')]]}})[_0x8298('0x1a')](function(_0xc56de1){logger[_0x8298('0x36')](_0x8298('0x42'),_0xc56de1);return db[_0x8298('0x43')][_0x8298('0x41')]({'where':{'ContactId':[_0x538db2['body']['to'],_0x538db2[_0x8298('0x3b')][_0x8298('0x3c')]]}})[_0x8298('0x1a')](function(_0x4d7dd1){logger[_0x8298('0x36')](_0x8298('0x44'),_0x4d7dd1);return db['CmContact'][_0x8298('0x45')](_0x21921a);});});}})[_0x8298('0x1a')](function(_0x322298){if(_0x322298){_0x1ab838=_0x322298;_0x2c08b6={'ContactId':_0x1ab838['id']};_0x1fd73a={'where':{'ContactId':[_0x538db2[_0x8298('0x3b')]['to'],_0x538db2[_0x8298('0x3b')]['from']]}};return db['ChatInteraction']['update'](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x46')]['update'](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x47')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x48')]['update'](_0x2c08b6,_0x1fd73a);}})['then'](function(){if(_0x1ab838){return db[_0x8298('0x49')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db['MailInteraction'][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db['MailMessage'][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})['then'](function(){if(_0x1ab838){return db[_0x8298('0x4a')]['update'](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x4b')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x4c')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})['then'](function(){if(_0x1ab838){return db[_0x8298('0x4d')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x4e')]['update'](_0x2c08b6,_0x1fd73a);}})['then'](function(){if(_0x1ab838){return db[_0x8298('0x4f')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})['then'](function(){if(_0x1ab838){return db[_0x8298('0x50')][_0x8298('0x19')]({'CmContactId':_0x1ab838['id']},{'where':{'CmContactId':[_0x538db2[_0x8298('0x3b')]['to'],_0x538db2[_0x8298('0x3b')][_0x8298('0x3c')]]}});}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db['CmHopperFinal'][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})['then'](function(){if(_0x1ab838){return db[_0x8298('0x51')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})['then'](function(){if(_0x1ab838){return db[_0x8298('0x52')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x53')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x54')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})['then'](function(){if(_0x1ab838){return db[_0x8298('0x55')]['update'](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x56')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x57')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x58')][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db['JscriptySessionReport'][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db['WhatsappInteraction'][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db['WhatsappMessage'][_0x8298('0x19')](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x59')]['update'](_0x2c08b6,_0x1fd73a);}})[_0x8298('0x1a')](function(){if(_0x1ab838){return db[_0x8298('0x26')][_0x8298('0x41')]({'where':{'id':[_0x538db2[_0x8298('0x3b')]['to'],_0x538db2[_0x8298('0x3b')][_0x8298('0x3c')]]}});}})[_0x8298('0x1a')](function(){if(_0x1ab838){return _0x1ab838;}})[_0x8298('0x1a')](respondWithResult(_0x162c7d,null))['catch'](handleError(_0x162c7d,null));};exports[_0x8298('0x45')]=function(_0x3df3a3,_0x4c9154){return db[_0x8298('0x26')]['describe']()[_0x8298('0x1a')](function(_0x240333){if(_0x3df3a3[_0x8298('0x3b')][_0x8298('0x29')]&&_[_0x8298('0x3f')](_0x3df3a3[_0x8298('0x3b')]['tags'])){if(_0x3df3a3[_0x8298('0x3b')][_0x8298('0x29')]['length']){_0x3df3a3[_0x8298('0x3b')][_0x8298('0x29')]=_0x3df3a3['body'][_0x8298('0x29')][_0x8298('0x5a')](';')+';';}else{_0x3df3a3[_0x8298('0x3b')][_0x8298('0x29')]=null;}}else{_0x3df3a3['body'][_0x8298('0x29')]=null;}if(!_[_0x8298('0x5b')](_0x3df3a3[_0x8298('0x3b')][_0x8298('0x5c')])){var _0x1ad601=_0x3df3a3[_0x8298('0x3b')][_0x8298('0x5c')];if(!_[_0x8298('0x5b')](shared[_0x8298('0x5d')][_0x1ad601]))_0x3df3a3[_0x8298('0x3b')][_0x8298('0x5e')]=shared[_0x8298('0x5d')][_0x1ad601][_0x8298('0x5e')];}return db[_0x8298('0x26')][_0x8298('0x45')](_0x3df3a3[_0x8298('0x3b')],{'fields':_[_0x8298('0x2b')](_0x240333),'raw':!![]});})['then'](function(_0x4d13cb){if(_0x3df3a3['body'][_0x8298('0x5f')]){return insertAdditionalPhones(_0x4d13cb,_0x3df3a3[_0x8298('0x3b')][_0x8298('0x5f')]);}else{return _0x4d13cb;}})[_0x8298('0x1a')](respondWithResult(_0x4c9154,0xc9))[_0x8298('0x28')](handleError(_0x4c9154,null));};exports['bulkCreate']=function(_0x3da7ee,_0x19f6ff){var _0x53e6fc=0x0;var _0x53a491=0x0;var _0x37d1ae=0x0;var _0x292114=[];return db[_0x8298('0x26')][_0x8298('0x22')]()['then'](function(_0x322818){return BPromise['each'](_0x3da7ee[_0x8298('0x3b')],function(_0x387516){var _0x4229be={'where':{'$or':[]},'defaults':_0x387516,'fields':_['keys'](_0x322818),'raw':!![]};if(_0x387516[_0x8298('0x60')]){for(var _0x1d0f48=0x0;_0x1d0f48<_0x387516[_0x8298('0x60')]['length'];_0x1d0f48++){var _0x39376a={};_0x39376a[_0x387516['duplicates'][_0x1d0f48]]=_0x387516[_0x387516[_0x8298('0x60')][_0x1d0f48]];_0x4229be[_0x8298('0x61')][_0x8298('0x62')]['push'](_0x39376a);}_0x4229be[_0x8298('0x61')]['ListId']=_0x387516[_0x8298('0x63')];}return db[_0x8298('0x26')]['findOrCreate'](_0x4229be)[_0x8298('0x64')](function(_0x3634f4,_0x5ad038){if(_0x5ad038){if(_0x387516['hasOwnProperty'](_0x8298('0x5f'))){_0x292114[_0x8298('0x65')]({'contact':_0x3634f4,'additionalPhones':_0x387516[_0x8298('0x5f')]});}_0x53e6fc++;}else{_0x37d1ae++;}})[_0x8298('0x28')](function(){_0x53a491++;});});})[_0x8298('0x1a')](function(_0x9ea0e5){if(_0x9ea0e5){if(_0x292114['length']>0x0){return new Promise(function(_0x231894){var _0x2d577f=[];for(var _0x32252d=0x0;_0x32252d<_0x292114[_0x8298('0x2a')];_0x32252d++){_0x2d577f['push'](insertAdditionalPhones(_0x292114[_0x32252d][_0x8298('0x66')],_0x292114[_0x32252d][_0x8298('0x5f')]));}Promise['all'](_0x2d577f)[_0x8298('0x1a')](function(){_0x231894(0x1);});})[_0x8298('0x1a')](function(){return{'success':_0x53e6fc,'failure':_0x53a491,'duplicates':_0x37d1ae};});}else{return{'success':_0x53e6fc,'failure':_0x53a491,'duplicates':_0x37d1ae};}}})[_0x8298('0x1a')](respondWithResult(_0x19f6ff,0xc9))[_0x8298('0x28')](handleError(_0x19f6ff,null));};exports[_0x8298('0x67')]=function(_0x28acfc,_0x298a61){var _0x2771af;return db[_0x8298('0x26')][_0x8298('0x22')]()['then'](function(_0x3694bd){return db[_0x8298('0x26')][_0x8298('0x68')]({'where':{'id':_0x28acfc[_0x8298('0x27')]['id']},'include':[{'model':db[_0x8298('0x69')],'as':_0x8298('0x6a'),'attributes':['id',_0x8298('0x1f'),_0x8298('0x6b')],'required':_0x28acfc[_0x8298('0x2e')][_0x8298('0x6c')]?!![]:![]},{'model':db[_0x8298('0x50')],'as':_0x8298('0x6d'),'where':{'CmContactId':_0x28acfc[_0x8298('0x27')]['id']},'required':![],'include':[{'model':db['ContactItemType'],'as':'ItemType'}]}],'order':[db[_0x8298('0x6e')][_0x8298('0x6f')](_0x8298('0x70'))],'attributes':_['keys'](_0x3694bd)});})[_0x8298('0x1a')](function(_0x486a0e){if(!_[_0x8298('0x5b')](_0x486a0e)){_0x2771af=_0x486a0e['get']({'plain':!![]});var _0x9ef1dd={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x486a0e&&_0x486a0e[_0x8298('0x63')]){if(_0x486a0e[_0x8298('0x63')]){_0x9ef1dd[_0x8298('0x61')][_0x8298('0x71')]['push']({'ListId':{'$ne':_0x486a0e[_0x8298('0x63')]}});}}return db['CmCustomField'][_0x8298('0x24')](_0x9ef1dd);}})[_0x8298('0x1a')](function(_0x2f4016){if(!_[_0x8298('0x5b')](_0x2f4016)){return _[_0x8298('0x72')](_0x2771af,_[_0x8298('0x73')](_0x2f4016,function(_0x2d7a08){return util['format']('cf_%d',_0x2d7a08['id']);}));}})[_0x8298('0x1a')](handleEntityNotFound(_0x298a61,null))[_0x8298('0x1a')](respondWithResult(_0x298a61,null))[_0x8298('0x28')](handleError(_0x298a61,null));};exports[_0x8298('0x19')]=function(_0x49411d,_0x2151a8){var _0x4372a6;if(_0x49411d['body']['id']){delete _0x49411d['body']['id'];}if(!_[_0x8298('0x5b')](_0x49411d['body']['dialTimezone'])){var _0x90c7e0=_0x49411d[_0x8298('0x3b')]['dialTimezone'];if(!_[_0x8298('0x5b')](shared[_0x8298('0x5d')][_0x90c7e0]))_0x49411d[_0x8298('0x3b')]['utcOffset']=shared['timezones'][_0x90c7e0]['utcOffset'];}return db[_0x8298('0x26')]['find']({'where':{'id':_0x49411d[_0x8298('0x27')]['id']}})[_0x8298('0x1a')](handleEntityNotFound(_0x2151a8,null))[_0x8298('0x1a')](saveUpdates(_0x49411d[_0x8298('0x3b')],null))[_0x8298('0x1a')](function(_0x272133){_0x4372a6=_0x272133;var _0x4b1b={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x272133&&_0x272133['ListId']){if(_0x272133[_0x8298('0x63')]){_0x4b1b[_0x8298('0x61')]['$and'][_0x8298('0x65')]({'ListId':{'$ne':_0x272133['ListId']}});}}return db['CmCustomField']['findAll'](_0x4b1b);})[_0x8298('0x1a')](function(_0x36de75){if(_0x36de75){return _[_0x8298('0x72')](_[_0x8298('0x74')](_0x49411d[_0x8298('0x3b')],function(_0x545e73,_0x2c03a6){return _['startsWith'](_0x2c03a6,'cf_');}),_['map'](_0x36de75,function(_0x4ea7c1){return util['format']('cf_%d',_0x4ea7c1['id']);}));}})[_0x8298('0x1a')](function(_0x513b96){if(_0x513b96&&!_['isEmpty'](_0x513b96)){var _0x4e8ae1=squel['update']()[_0x8298('0x75')](_0x8298('0x76'))['setFields'](_0x513b96)[_0x8298('0x61')](_0x8298('0x77'),_0x49411d[_0x8298('0x27')]['id'])[_0x8298('0x78')]();return db[_0x8298('0x6e')][_0x8298('0x2e')](_0x4e8ae1[_0x8298('0x79')],{'replacements':_0x4e8ae1[_0x8298('0x35')]});}})['then'](function(){if(_0x49411d['body']['phone']&&_0x4372a6){return db['CmHopper'][_0x8298('0x19')]({'phone':_0x49411d[_0x8298('0x3b')][_0x8298('0x7a')],'OrderBy':0x0},{'where':{'ContactId':_0x4372a6['id']}});}})[_0x8298('0x1a')](function(){return _0x4372a6;})['then'](respondWithResult(_0x2151a8,null))[_0x8298('0x28')](handleError(_0x2151a8,null));};exports['getTags']=function(_0x1f0fa6,_0xf99137){var _0x5f3062={};var _0x4b259a={};var _0x55b402;var _0x2f7b64;return db[_0x8298('0x26')][_0x8298('0x7b')]({'where':{'id':_0x1f0fa6[_0x8298('0x27')]['id']}})[_0x8298('0x1a')](handleEntityNotFound(_0xf99137,null))[_0x8298('0x1a')](function(_0x889f83){if(_0x889f83){_0x55b402=_0x889f83;_0x4b259a[_0x8298('0x7c')]=_[_0x8298('0x2b')](db[_0x8298('0x69')]['rawAttributes']);_0x4b259a['query']=_['keys'](_0x1f0fa6[_0x8298('0x2e')]);_0x4b259a[_0x8298('0x7d')]=_[_0x8298('0x7e')](_0x4b259a[_0x8298('0x7c')],_0x4b259a[_0x8298('0x2e')]);_0x5f3062[_0x8298('0x7f')]=_[_0x8298('0x7e')](_0x4b259a['model'],qs[_0x8298('0x80')](_0x1f0fa6[_0x8298('0x2e')][_0x8298('0x80')]));_0x5f3062[_0x8298('0x7f')]=_0x5f3062['attributes'][_0x8298('0x2a')]?_0x5f3062[_0x8298('0x7f')]:_0x4b259a[_0x8298('0x7c')];_0x5f3062[_0x8298('0x81')]=qs[_0x8298('0x82')](_0x1f0fa6[_0x8298('0x2e')][_0x8298('0x82')]);_0x5f3062[_0x8298('0x61')]=qs[_0x8298('0x7d')](_['pick'](_0x1f0fa6[_0x8298('0x2e')],_0x4b259a[_0x8298('0x7d')]));if(_0x1f0fa6[_0x8298('0x2e')]['filter']){_0x5f3062[_0x8298('0x61')]=_[_0x8298('0x3a')](_0x5f3062[_0x8298('0x61')],{'$or':_[_0x8298('0x73')](_0x5f3062[_0x8298('0x7f')],function(_0x27e248){var _0x1b9206={};_0x1b9206[_0x27e248]={'$like':'%'+_0x1f0fa6[_0x8298('0x2e')][_0x8298('0x83')]+'%'};return _0x1b9206;})});}_0x5f3062=_[_0x8298('0x3a')]({},_0x5f3062,_0x1f0fa6['options']);return _0x55b402[_0x8298('0x84')](_0x5f3062);}})['then'](function(_0x57365d){if(_0x57365d){_0x2f7b64=_0x57365d[_0x8298('0x2a')];if(!_0x1f0fa6[_0x8298('0x2e')][_0x8298('0x39')]('nolimit')){_0x5f3062['limit']=qs[_0x8298('0x15')](_0x1f0fa6[_0x8298('0x2e')][_0x8298('0x15')]);_0x5f3062[_0x8298('0x12')]=qs[_0x8298('0x12')](_0x1f0fa6[_0x8298('0x2e')]['offset']);}return _0x55b402['getTags'](_0x5f3062);}})[_0x8298('0x1a')](function(_0x32cde8){if(_0x32cde8){return _0x32cde8?{'count':_0x2f7b64,'rows':_0x32cde8}:null;}})[_0x8298('0x1a')](respondWithResult(_0xf99137,null))[_0x8298('0x28')](handleError(_0xf99137,null));};exports[_0x8298('0x85')]=function(_0x435a0b,_0x393ff9){if(_0x435a0b[_0x8298('0x3b')]['id']){delete _0x435a0b[_0x8298('0x3b')]['id'];}return db[_0x8298('0x26')][_0x8298('0x7b')]({'where':{'id':_0x435a0b[_0x8298('0x27')]['id']}})[_0x8298('0x1a')](handleEntityNotFound(_0x393ff9,null))['then'](function(_0x216f9a){if(_0x216f9a){return _0x216f9a[_0x8298('0x85')](_0x435a0b[_0x8298('0x3b')][_0x8298('0x86')]||[]);}return null;})[_0x8298('0x1a')](respondWithResult(_0x393ff9,null))['catch'](handleError(_0x393ff9,null));};exports[_0x8298('0x87')]=function(_0x5384e6,_0x2f235a){var _0x104421=[];_0x104421[_0x8298('0x65')](addAdditionalPhones(_0x5384e6['body']));Promise[_0x8298('0x88')](_0x104421)[_0x8298('0x1a')](function(){_0x104421=[];_0x104421[_0x8298('0x65')](deleteCmHopperPhones(_0x5384e6[_0x8298('0x3b')]['id']));_0x104421[_0x8298('0x65')](addCmHopperPhones(_0x5384e6['body']['id']));Promise['all'](_0x104421)['then'](function(){return[0x1];})[_0x8298('0x1a')](respondWithResult(_0x2f235a,null));});};function addAdditionalPhones(_0x1f9761){var _0x513e3d;return new Promise(function(_0x4dfaf9){return db[_0x8298('0x50')][_0x8298('0x41')]({'where':{'CmContactId':_0x1f9761['id']}})[_0x8298('0x1a')](function(){db[_0x8298('0x89')][_0x8298('0x24')]({'raw':!![],'attributes':['id',_0x8298('0x8a')]})['then'](function(_0x16b7fe){var _0x33e18c=[];for(var _0x56fef9=0x0;_0x56fef9<_0x1f9761['items'][_0x8298('0x2a')];_0x56fef9++){var _0x5010de=_0x1f9761[_0x8298('0x8b')]?_[_0x8298('0x5b')](_0x1f9761[_0x8298('0x8b')][_0x56fef9])?'':_0x1f9761[_0x8298('0x8b')][_0x56fef9]:_0x1f9761[_0x8298('0x8c')][_0x56fef9][_0x8298('0x8d')]?_0x1f9761[_0x8298('0x8c')][_0x56fef9][_0x8298('0x8d')]:'';var _0x11d91e=_[_0x8298('0x5b')](_0x1f9761[_0x8298('0x8c')][_0x56fef9]['description'])?'':_0x1f9761[_0x8298('0x8c')][_0x56fef9]['description'];var _0x2bff44=_0x5010de+':'+_0x1f9761['items'][_0x56fef9][_0x8298('0x7a')]+'§'+_0x11d91e;if(_[_0x8298('0x5b')](_0x513e3d))_0x513e3d=_0x2bff44;else _0x513e3d+=';'+_0x2bff44;var _0x7ff063=null;var _0x30ef0e=null;if(_0x1f9761[_0x8298('0x8b')]){if(!_['isNil'](_0x1f9761[_0x8298('0x8b')][_0x56fef9])){_0x30ef0e=_[_0x8298('0x68')](_0x16b7fe,function(_0x530adb){return _0x530adb['id']===_0x1f9761[_0x8298('0x8b')][_0x56fef9];});if(!_[_0x8298('0x5b')](_0x30ef0e)){_0x7ff063=_0x30ef0e[_0x8298('0x8a')];}}}else{if(!_[_0x8298('0x5b')](_0x1f9761['items'][_0x56fef9])){_0x30ef0e=_[_0x8298('0x68')](_0x16b7fe,function(_0x5e3b15){return _0x5e3b15['id']===_0x1f9761[_0x8298('0x8c')][_0x56fef9]['ItemTypeId'];});if(!_[_0x8298('0x5b')](_0x30ef0e)){_0x7ff063=_0x56fef9;}}}if(_['isNil'](_0x7ff063)){_0x7ff063=0x64;}_0x33e18c[_0x8298('0x65')](addAdditionalPhone(_0x1f9761['id'],_0x1f9761['items'][_0x56fef9][_0x8298('0x7a')],_0x1f9761[_0x8298('0x8b')]?_[_0x8298('0x5b')](_0x1f9761[_0x8298('0x8b')][_0x56fef9])?null:_0x1f9761[_0x8298('0x8b')][_0x56fef9]:_0x1f9761[_0x8298('0x8c')][_0x56fef9]['ItemTypeId']?_0x1f9761[_0x8298('0x8c')][_0x56fef9][_0x8298('0x8d')]:null,_0x7ff063,_0x11d91e));}Promise[_0x8298('0x88')](_0x33e18c)[_0x8298('0x1a')](function(){db[_0x8298('0x26')][_0x8298('0x19')]({'AdditionalPhones':_0x513e3d},{'where':{'id':_0x1f9761['id']}})[_0x8298('0x1a')](function(){_0x4dfaf9(0x1);});});});});});}function addAdditionalPhone(_0x29f918,_0x4266ee,_0x1f8527,_0x10fcb4,_0x1a78ef){return db['CmContactHasItem']['find']({'where':{'CmContactId':_0x29f918,'item':_0x4266ee}})[_0x8298('0x1a')](function(_0x29b8ad){if(_0x29b8ad)logger['info'](_0x8298('0x8e'),_0x29b8ad);else{db[_0x8298('0x50')][_0x8298('0x45')]({'CmContactId':_0x29f918,'item':_0x4266ee,'ItemTypeId':_0x1f8527,'OrderBy':_0x10fcb4,'ItemClass':_0x8298('0x8f'),'description':_0x1a78ef});}});}function deleteCmHopperPhones(_0xb812a1){return new Promise(function(_0x3b670a){return db['CmHopper'][_0x8298('0x24')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0xb812a1}})[_0x8298('0x1a')](function(_0x3f147c){db[_0x8298('0x90')][_0x8298('0x41')]({'where':{'CmHopperId':{'$in':_['map'](_0x3f147c,'id')}}});})['then'](function(){_0x3b670a(0x1);});});}function addCmHopperPhones(_0x5bf237){return new Promise(function(_0x2d8f1a){return db[_0x8298('0x40')][_0x8298('0x24')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x5bf237}})[_0x8298('0x1a')](function(_0x36010d){var _0x5d1e55=[];_[_0x8298('0x73')](_0x36010d,function(_0x4342fc){_0x5d1e55[_0x8298('0x65')](createCmHopperPhone(_0x5bf237,_0x4342fc['id']));});Promise[_0x8298('0x88')](_0x5d1e55)['then'](function(){_0x2d8f1a(0x1);});});});}function createCmHopperPhone(_0x131ac0,_0x26a819){return new Promise(function(_0x4c737c){db[_0x8298('0x50')][_0x8298('0x24')]({'raw':!![],'attributes':['item',_0x8298('0x8a')],'where':{'CmContactId':_0x131ac0,'ItemClass':_0x8298('0x8f')},'include':[{'model':db[_0x8298('0x89')],'attributes':[_0x8298('0x8a')],'as':_0x8298('0x91')}],'order':['OrderBy',db['sequelize']['literal']('`ItemType`.OrderBy')]})[_0x8298('0x1a')](function(_0x2c5144){var _0x672e97=0x1;var _0x3fa85c=_[_0x8298('0x73')](_0x2c5144,function(_0x189a45){_0x189a45[_0x8298('0x92')]=_0x26a819;_0x189a45[_0x8298('0x7a')]=_0x189a45['item'];_0x189a45[_0x8298('0x8a')]=_0x672e97;delete _0x189a45[_0x8298('0x93')];_0x672e97=_0x672e97+0x1;return _0x189a45;});return db['CmHopperAdditionalPhone'][_0x8298('0x94')](_0x3fa85c,{});})[_0x8298('0x1a')](function(){_0x4c737c(0x1);});});}function insertAdditionalPhones(_0x33f213,_0x573869){return new Promise(function(_0xdf005f){var _0x2041f4=[];for(var _0x5c08ff=0x0;_0x5c08ff<_0x573869['length'];_0x5c08ff++){var _0xb61e43=_0x573869[_0x5c08ff];_0x2041f4[_0x8298('0x65')](parseContactItemType(_0xb61e43));}Promise['all'](_0x2041f4)[_0x8298('0x1a')](function(){var _0x338f71={'id':_0x33f213['id'],'items':_0x573869};return addAdditionalPhones(_0x338f71)[_0x8298('0x1a')](function(){return addCmHopperPhones(_0x33f213['id']);});})[_0x8298('0x1a')](function(){_0xdf005f(_0x33f213);});});}function parseContactItemType(_0x18bb51){return new Promise(function(_0x56fad6){if(_0x18bb51[_0x8298('0x39')](_0x8298('0x8d'))){_0x56fad6(_0x18bb51);}else{return db[_0x8298('0x89')][_0x8298('0x68')]({'where':{'name':_0x18bb51[_0x8298('0x91')]}})[_0x8298('0x1a')](function(_0x157e81){if(_[_0x8298('0x5b')](_0x157e81))_0x18bb51[_0x8298('0x8d')]=null;else _0x18bb51[_0x8298('0x8d')]=_0x157e81['id'];_0x56fad6(_0x18bb51);});}});}exports[_0x8298('0x95')]=function(_0x21ee33,_0x311326){return db[_0x8298('0x50')]['findAll']({'raw':!![],'where':{'CmContactId':_0x21ee33[_0x8298('0x27')]['id'],'ItemClass':_0x8298('0x8f')},'include':[{'model':db[_0x8298('0x89')],'as':_0x8298('0x91')}],'order':[['OrderBy'],[db[_0x8298('0x6e')][_0x8298('0x6f')](_0x8298('0x96'))]]})[_0x8298('0x1a')](function(_0x5d9cc3){return _0x5d9cc3;})['then'](respondWithResult(_0x311326,null))[_0x8298('0x28')](handleError(_0x311326,null));};exports[_0x8298('0x97')]=function(_0x204ec5,_0x334b05){return db[_0x8298('0x50')][_0x8298('0x24')]({'raw':!![],'where':{'CmContactId':_0x204ec5[_0x8298('0x3b')][_0x8298('0x98')]}})['then'](function(_0x3e5cc3){var _0x27ec73=_[_0x8298('0x73')](_0x3e5cc3,function(_0x3aa000){_0x3aa000[_0x8298('0x99')]=_0x204ec5[_0x8298('0x3b')][_0x8298('0x9a')];return _0x3aa000;});return db[_0x8298('0x50')][_0x8298('0x94')](_0x27ec73,{});})['then'](function(){return addCmHopperPhones(_0x204ec5[_0x8298('0x3b')][_0x8298('0x9a')]);})[_0x8298('0x1a')](function(){return['ok'];})[_0x8298('0x1a')](respondWithResult(_0x334b05,null))[_0x8298('0x28')](handleError(_0x334b05,null));};exports[_0x8298('0x9b')]=function(_0x5ec14b,_0x18ba78){var _0x555fb1=[];_0x555fb1[_0x8298('0x65')](createCmHopperPhone(_0x5ec14b['body']['id'],_0x5ec14b[_0x8298('0x3b')]['hopperId']));Promise[_0x8298('0x88')](_0x555fb1)[_0x8298('0x1a')](function(){return[0x1];})[_0x8298('0x1a')](respondWithResult(_0x18ba78,null));};exports[_0x8298('0x9c')]=function(_0x4fb722,_0x45b3cb){var _0x2525aa={'raw':![],'where':{}};var _0x3e51f0={};var _0x3f74b8={'count':0x0,'rows':[]};return db[_0x8298('0x26')][_0x8298('0x7b')]({'where':{'id':_0x4fb722[_0x8298('0x27')]['id']}})[_0x8298('0x1a')](handleEntityNotFound(_0x45b3cb,null))['then'](function(_0x394f32){if(_0x394f32){_0x3e51f0[_0x8298('0x7c')]=_[_0x8298('0x2b')](db[_0x8298('0x40')][_0x8298('0x9d')]);_0x3e51f0[_0x8298('0x2e')]=_[_0x8298('0x2b')](_0x4fb722[_0x8298('0x2e')]);_0x3e51f0[_0x8298('0x7d')]=_['intersection'](_0x3e51f0[_0x8298('0x7c')],_0x3e51f0[_0x8298('0x2e')]);_0x2525aa['attributes']=_[_0x8298('0x7e')](_0x3e51f0[_0x8298('0x7c')],qs[_0x8298('0x80')](_0x4fb722[_0x8298('0x2e')][_0x8298('0x80')]));_0x2525aa[_0x8298('0x7f')]=_0x2525aa['attributes'][_0x8298('0x2a')]?_0x2525aa[_0x8298('0x7f')]:_0x3e51f0[_0x8298('0x7c')];if(!_0x4fb722[_0x8298('0x2e')]['hasOwnProperty'](_0x8298('0x9e'))){_0x2525aa[_0x8298('0x15')]=qs[_0x8298('0x15')](_0x4fb722[_0x8298('0x2e')][_0x8298('0x15')]);_0x2525aa[_0x8298('0x12')]=qs[_0x8298('0x12')](_0x4fb722[_0x8298('0x2e')][_0x8298('0x12')]);}_0x2525aa[_0x8298('0x81')]=qs[_0x8298('0x82')](_0x4fb722[_0x8298('0x2e')][_0x8298('0x82')]);_0x2525aa[_0x8298('0x61')]=qs['filters'](_['pick'](_0x4fb722['query'],_0x3e51f0['filters']));_0x2525aa[_0x8298('0x61')][_0x8298('0x9f')]=_0x394f32['id'];if(_0x4fb722[_0x8298('0x2e')][_0x8298('0x83')]){_0x2525aa[_0x8298('0x61')]=_['merge'](_0x2525aa[_0x8298('0x61')],{'$or':_[_0x8298('0x73')](_0x2525aa[_0x8298('0x7f')],function(_0x3d405c){var _0x470294={};_0x470294[_0x3d405c]={'$like':'%'+_0x4fb722[_0x8298('0x2e')]['filter']+'%'};return _0x470294;})});}_0x2525aa=_[_0x8298('0x3a')]({},_0x2525aa,_0x4fb722[_0x8298('0xa0')]);return db[_0x8298('0x40')][_0x8298('0x14')]({'where':_0x2525aa[_0x8298('0x61')]})[_0x8298('0x1a')](function(_0x548219){_0x3f74b8['count']=_0x548219;if(_0x4fb722[_0x8298('0x2e')]['includeAll']){_0x2525aa['include']=[{'all':!![]}];}return db[_0x8298('0x40')][_0x8298('0x24')](_0x2525aa);})[_0x8298('0x1a')](function(_0x213e04){_0x3f74b8[_0x8298('0xa1')]=_0x213e04;return _0x3f74b8;});}})[_0x8298('0x1a')](respondWithFilteredResult(_0x45b3cb,_0x2525aa))[_0x8298('0x28')](handleError(_0x45b3cb,null));};exports[_0x8298('0xa2')]=function(_0x2196d4,_0x1e0d49){var _0x25244f={'raw':!![],'where':{}};var _0xe8a25e={};var _0x3cee4b={'count':0x0,'rows':[]};return db[_0x8298('0x26')][_0x8298('0x7b')]({'where':{'id':_0x2196d4['params']['id']}})[_0x8298('0x1a')](handleEntityNotFound(_0x1e0d49,null))[_0x8298('0x1a')](function(_0x4b4082){if(_0x4b4082){_0xe8a25e[_0x8298('0x7c')]=_['keys'](db[_0x8298('0x51')][_0x8298('0x9d')]);_0xe8a25e[_0x8298('0x2e')]=_['keys'](_0x2196d4[_0x8298('0x2e')]);_0xe8a25e[_0x8298('0x7d')]=_['intersection'](_0xe8a25e[_0x8298('0x7c')],_0xe8a25e[_0x8298('0x2e')]);_0x25244f['attributes']=_[_0x8298('0x7e')](_0xe8a25e[_0x8298('0x7c')],qs[_0x8298('0x80')](_0x2196d4['query'][_0x8298('0x80')]));_0x25244f[_0x8298('0x7f')]=_0x25244f[_0x8298('0x7f')]['length']?_0x25244f[_0x8298('0x7f')]:_0xe8a25e['model'];if(!_0x2196d4[_0x8298('0x2e')][_0x8298('0x39')](_0x8298('0x9e'))){_0x25244f[_0x8298('0x15')]=qs[_0x8298('0x15')](_0x2196d4[_0x8298('0x2e')][_0x8298('0x15')]);_0x25244f[_0x8298('0x12')]=qs[_0x8298('0x12')](_0x2196d4['query'][_0x8298('0x12')]);}_0x25244f[_0x8298('0x81')]=qs[_0x8298('0x82')](_0x2196d4[_0x8298('0x2e')][_0x8298('0x82')]);_0x25244f['where']=qs[_0x8298('0x7d')](_[_0x8298('0xa3')](_0x2196d4[_0x8298('0x2e')],_0xe8a25e[_0x8298('0x7d')]));_0x25244f[_0x8298('0x61')]['ContactId']=_0x4b4082['id'];if(_0x2196d4[_0x8298('0x2e')]['filter']){_0x25244f[_0x8298('0x61')]=_[_0x8298('0x3a')](_0x25244f[_0x8298('0x61')],{'$or':_[_0x8298('0x73')](_0x25244f['attributes'],function(_0x30b43d){var _0x3b468c={};_0x3b468c[_0x30b43d]={'$like':'%'+_0x2196d4['query']['filter']+'%'};return _0x3b468c;})});}_0x25244f=_['merge']({},_0x25244f,_0x2196d4[_0x8298('0xa0')]);return db['CmHopperHistory'][_0x8298('0x14')]({'where':_0x25244f[_0x8298('0x61')]})['then'](function(_0x48c3a8){_0x3cee4b[_0x8298('0x14')]=_0x48c3a8;if(_0x2196d4[_0x8298('0x2e')][_0x8298('0xa4')]){_0x25244f['include']=[{'all':!![]}];}return db[_0x8298('0x51')][_0x8298('0x24')](_0x25244f);})[_0x8298('0x1a')](function(_0x2def20){_0x3cee4b[_0x8298('0xa1')]=_0x2def20;return _0x3cee4b;});}})['then'](respondWithFilteredResult(_0x1e0d49,_0x25244f))['catch'](handleError(_0x1e0d49,null));};exports['getHopperFinals']=function(_0x2bd47d,_0x1be941){var _0xa9d6db={'raw':!![],'where':{}};var _0xfbfc78={};var _0x1985fd={'count':0x0,'rows':[]};return db[_0x8298('0x26')]['findOne']({'where':{'id':_0x2bd47d[_0x8298('0x27')]['id']}})[_0x8298('0x1a')](handleEntityNotFound(_0x1be941,null))[_0x8298('0x1a')](function(_0x172ae5){if(_0x172ae5){_0xfbfc78['model']=_[_0x8298('0x2b')](db[_0x8298('0xa5')][_0x8298('0x9d')]);_0xfbfc78[_0x8298('0x2e')]=_[_0x8298('0x2b')](_0x2bd47d['query']);_0xfbfc78['filters']=_[_0x8298('0x7e')](_0xfbfc78[_0x8298('0x7c')],_0xfbfc78['query']);_0xa9d6db[_0x8298('0x7f')]=_['intersection'](_0xfbfc78[_0x8298('0x7c')],qs[_0x8298('0x80')](_0x2bd47d['query'][_0x8298('0x80')]));_0xa9d6db[_0x8298('0x7f')]=_0xa9d6db[_0x8298('0x7f')]['length']?_0xa9d6db[_0x8298('0x7f')]:_0xfbfc78[_0x8298('0x7c')];if(!_0x2bd47d[_0x8298('0x2e')][_0x8298('0x39')](_0x8298('0x9e'))){_0xa9d6db['limit']=qs[_0x8298('0x15')](_0x2bd47d[_0x8298('0x2e')][_0x8298('0x15')]);_0xa9d6db[_0x8298('0x12')]=qs[_0x8298('0x12')](_0x2bd47d[_0x8298('0x2e')][_0x8298('0x12')]);}_0xa9d6db[_0x8298('0x81')]=qs['sort'](_0x2bd47d[_0x8298('0x2e')][_0x8298('0x82')]);_0xa9d6db[_0x8298('0x61')]=qs[_0x8298('0x7d')](_[_0x8298('0xa3')](_0x2bd47d[_0x8298('0x2e')],_0xfbfc78['filters']));_0xa9d6db[_0x8298('0x61')]['ContactId']=_0x172ae5['id'];if(_0x2bd47d[_0x8298('0x2e')][_0x8298('0x83')]){_0xa9d6db[_0x8298('0x61')]=_[_0x8298('0x3a')](_0xa9d6db['where'],{'$or':_['map'](_0xa9d6db[_0x8298('0x7f')],function(_0x35376a){var _0x4487fd={};_0x4487fd[_0x35376a]={'$like':'%'+_0x2bd47d[_0x8298('0x2e')][_0x8298('0x83')]+'%'};return _0x4487fd;})});}_0xa9d6db=_[_0x8298('0x3a')]({},_0xa9d6db,_0x2bd47d[_0x8298('0xa0')]);return db['CmHopperFinal'][_0x8298('0x14')]({'where':_0xa9d6db[_0x8298('0x61')]})[_0x8298('0x1a')](function(_0x2e9de9){_0x1985fd[_0x8298('0x14')]=_0x2e9de9;if(_0x2bd47d['query']['includeAll']){_0xa9d6db[_0x8298('0xa6')]=[{'all':!![]}];}return db[_0x8298('0xa5')][_0x8298('0x24')](_0xa9d6db);})[_0x8298('0x1a')](function(_0xbdd0c){_0x1985fd[_0x8298('0xa1')]=_0xbdd0c;return _0x1985fd;});}})[_0x8298('0x1a')](respondWithFilteredResult(_0x1be941,_0xa9d6db))[_0x8298('0x28')](handleError(_0x1be941,null));};exports['getJscriptySessions']=function(_0x18b5c1,_0x43b582){var _0x11824e={'raw':!![],'where':{}};var _0x6187c1={};var _0x5f2f33={'count':0x0,'rows':[]};return db[_0x8298('0x26')][_0x8298('0x7b')]({'where':{'id':_0x18b5c1[_0x8298('0x27')]['id']}})[_0x8298('0x1a')](handleEntityNotFound(_0x43b582,null))[_0x8298('0x1a')](function(_0x29ef74){if(_0x29ef74){_0x6187c1[_0x8298('0x7c')]=_[_0x8298('0x2b')](db[_0x8298('0xa7')]['rawAttributes']);_0x6187c1[_0x8298('0x2e')]=_[_0x8298('0x2b')](_0x18b5c1[_0x8298('0x2e')]);_0x6187c1[_0x8298('0x7d')]=_[_0x8298('0x7e')](_0x6187c1[_0x8298('0x7c')],_0x6187c1[_0x8298('0x2e')]);_0x11824e[_0x8298('0x7f')]=_[_0x8298('0x7e')](_0x6187c1['model'],qs[_0x8298('0x80')](_0x18b5c1['query'][_0x8298('0x80')]));_0x11824e[_0x8298('0x7f')]=_0x11824e[_0x8298('0x7f')]['length']?_0x11824e[_0x8298('0x7f')]:_0x6187c1[_0x8298('0x7c')];if(!_0x18b5c1[_0x8298('0x2e')][_0x8298('0x39')]('nolimit')){_0x11824e[_0x8298('0x15')]=qs['limit'](_0x18b5c1[_0x8298('0x2e')][_0x8298('0x15')]);_0x11824e['offset']=qs[_0x8298('0x12')](_0x18b5c1['query']['offset']);}_0x11824e['order']=qs[_0x8298('0x82')](_0x18b5c1['query'][_0x8298('0x82')]);_0x11824e[_0x8298('0x61')]=qs[_0x8298('0x7d')](_[_0x8298('0xa3')](_0x18b5c1[_0x8298('0x2e')],_0x6187c1[_0x8298('0x7d')]));_0x11824e['where'][_0x8298('0x9f')]=_0x29ef74['id'];if(_0x18b5c1[_0x8298('0x2e')][_0x8298('0x83')]){_0x11824e[_0x8298('0x61')]=_[_0x8298('0x3a')](_0x11824e['where'],{'$or':_[_0x8298('0x73')](_0x11824e[_0x8298('0x7f')],function(_0xe6760d){var _0x5edb0c={};_0x5edb0c[_0xe6760d]={'$like':'%'+_0x18b5c1[_0x8298('0x2e')][_0x8298('0x83')]+'%'};return _0x5edb0c;})});}_0x11824e=_[_0x8298('0x3a')]({},_0x11824e,_0x18b5c1[_0x8298('0xa0')]);return db[_0x8298('0xa7')]['count']({'where':_0x11824e[_0x8298('0x61')]})[_0x8298('0x1a')](function(_0x32c0f1){_0x5f2f33[_0x8298('0x14')]=_0x32c0f1;if(_0x18b5c1[_0x8298('0x2e')][_0x8298('0xa4')]){_0x11824e[_0x8298('0xa6')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x8298('0x24')](_0x11824e);})[_0x8298('0x1a')](function(_0x14631b){_0x5f2f33[_0x8298('0xa1')]=_0x14631b;return _0x5f2f33;});}})[_0x8298('0x1a')](respondWithFilteredResult(_0x43b582,_0x11824e))[_0x8298('0x28')](handleError(_0x43b582,null));};exports['uploadCsv']=function(_0x448832,_0x2cb114){try{if(!_0x448832[_0x8298('0x3b')][_0x8298('0x63')]){throw new Error(_0x8298('0xa8'));}if(!_0x448832[_0x8298('0x3b')]['binding_keys']){throw new Error(_0x8298('0xa9'));}if(!_0x448832[_0x8298('0x3b')][_0x8298('0xaa')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x448832[_0x8298('0x3b')][_0x8298('0xab')]){throw new Error(_0x8298('0xac'));}var _0xe2078e=_0x448832[_0x8298('0x3b')][_0x8298('0xad')][_0x8298('0xae')](',');var _0x5898a3=_0x448832[_0x8298('0x3b')][_0x8298('0xaa')]['split'](',');if(!_0xe2078e['length']||!_0x5898a3['length']||_0xe2078e[_0x8298('0x2a')]!==_0x5898a3[_0x8298('0x2a')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x448832['body'][_0x8298('0x80')]=_['zipObject'](_0xe2078e,_0x5898a3);if(!_0x448832[_0x8298('0x3b')][_0x8298('0x80')]['phone']){throw new Error(_0x8298('0xaf'));}if(!_0x448832['body'][_0x8298('0x80')][_0x8298('0xb0')]){throw new Error(_0x8298('0xb1'));}var _0x1df6c7=path[_0x8298('0x5a')](config['root'],_0x8298('0xb2'),_0x448832[_0x8298('0xb3')][_0x8298('0xb4')]);fs[_0x8298('0xb5')](_0x1df6c7,parseInt('0777',0x8));var _0x4d912c=require(_0x8298('0xb6'))['fork'](path[_0x8298('0x5a')](__dirname,_0x8298('0xb7')),[_0x1df6c7,_0x448832[_0x8298('0x3b')][_0x8298('0xad')],_0x448832[_0x8298('0x3b')][_0x8298('0xaa')],_0x448832['body'][_0x8298('0x63')],_0x448832[_0x8298('0x3b')]['CompanyId'],_0x448832['body'][_0x8298('0x60')],_0x448832[_0x8298('0x3b')][_0x8298('0xab')]]);return _0x2cb114[_0x8298('0x11')](0xc8)[_0x8298('0x18')]({'message':_0x8298('0xb8'),'pid':_0x4d912c[_0x8298('0xb9')]});}catch(_0x30cc50){return _0x2cb114['status'](0x1f4)[_0x8298('0x20')](_0x30cc50);}};exports[_0x8298('0xba')]=function(_0x3514fe,_0x2f6626){var _0x9317b0=fs[_0x8298('0xbb')](_0x3514fe[_0x8298('0xb3')]['path']);Papa[_0x8298('0xbc')](_0x9317b0,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x29c3aa){return _0x2f6626[_0x8298('0x11')](0xc8)[_0x8298('0x18')]({'file':_0x3514fe[_0x8298('0xb3')],'fields':_0x29c3aa[_0x8298('0xbd')][_0x8298('0x80')]});}});};exports[_0x8298('0xbe')]=function(_0x1de396,_0x4d1003){return db['User']['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x8298('0xbf')}})[_0x8298('0x1a')](function(_0x241e47){var _0x326f80=![];if(!_0x1de396[_0x8298('0x3b')][_0x8298('0x63')]){throw new Error(_0x8298('0xa8'));}if(!_0x1de396[_0x8298('0x3b')]['binding']['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x1de396[_0x8298('0x3b')]['binding'][_0x8298('0xb0')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x1de396[_0x8298('0x3b')][_0x8298('0xab')]){throw new Error(_0x8298('0xac'));}var _0x316d7c=require(_0x8298('0xb6'))[_0x8298('0xc0')](path[_0x8298('0x5a')](__dirname,'../../components/import/cm/csv2'),[_0x1de396['params']['id'],JSON['stringify'](_0x1de396['body']),JSON['stringify'](_0x241e47)]);_0x316d7c['on']('message',function(){_0x326f80=!![];return _0x4d1003[_0x8298('0x11')](0xc8)[_0x8298('0x18')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x316d7c[_0x8298('0xb9')]});});_0x316d7c['on']('exit',function(_0x3b3a84){if(_0x3b3a84&&!_0x326f80){return _0x4d1003[_0x8298('0x11')](0x1f4)[_0x8298('0x18')]({'message':_0x8298('0xc1'),'pid':_0x316d7c[_0x8298('0xb9')]});}});})[_0x8298('0x28')](handleError(_0x4d1003,null));};exports['importUpdates']=function(_0x16ac9e,_0x5dbc14){return db[_0x8298('0xc2')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x8298('0xbf')}})[_0x8298('0x1a')](function(_0x310f2c){var _0x3e9631=![];if(!_0x16ac9e[_0x8298('0x3b')][_0x8298('0x63')]){throw new Error(_0x8298('0xa8'));}if(!_0x16ac9e[_0x8298('0x3b')][_0x8298('0xc3')][_0x8298('0x7a')]){throw new Error(_0x8298('0xaf'));}if(!_0x16ac9e[_0x8298('0x3b')]['binding'][_0x8298('0xb0')]){throw new Error(_0x8298('0xb1'));}if(!_0x16ac9e[_0x8298('0x3b')]['socket_timestamp']){throw new Error(_0x8298('0xac'));}var _0x1d58fc=require(_0x8298('0xb6'))[_0x8298('0xc0')](path[_0x8298('0x5a')](__dirname,_0x8298('0xc4')),[_0x16ac9e[_0x8298('0x27')]['id'],JSON[_0x8298('0xc5')](_0x16ac9e[_0x8298('0x3b')]),JSON[_0x8298('0xc5')](_0x310f2c)]);_0x1d58fc['on'](_0x8298('0xc6'),function(){_0x3e9631=!![];return _0x5dbc14[_0x8298('0x11')](0xc8)[_0x8298('0x18')]({'message':_0x8298('0xc7'),'pid':_0x1d58fc[_0x8298('0xb9')]});});_0x1d58fc['on'](_0x8298('0xc8'),function(_0x3df256){if(_0x3df256&&!_0x3e9631){return _0x5dbc14['status'](0x1f4)[_0x8298('0x18')]({'message':'error\x20child\x20process','pid':_0x1d58fc[_0x8298('0xb9')]});}});})[_0x8298('0x28')](handleError(_0x5dbc14,null));};exports['getJourney']=function(_0x1dcf16,_0x277067){var _0x1299c9=[_0x8298('0xc9'),_0x8298('0xca'),_0x8298('0xcb'),_0x8298('0xcc'),'fax',_0x8298('0xcd'),_0x8298('0xce')];var _0x543c9={'offset':0x0,'order':qs['sort'](_0x8298('0xcf'))},_0x2a70fb={'count':0x0,'rows':[]};Promise['resolve']()['then'](function(){if(_0x1dcf16['query'][_0x8298('0xd0')]){if(!_[_0x8298('0xd1')](_0x1299c9,_0x1dcf16[_0x8298('0x2e')][_0x8298('0xd0')][_0x8298('0xd2')]())){throw new Error('Invalid\x20channel');}_0x1299c9=[_0x1dcf16[_0x8298('0x2e')][_0x8298('0xd0')][_0x8298('0xd2')]()];}if(_0x1dcf16[_0x8298('0x2e')][_0x8298('0xd3')]){try{var _0x5900f1=JSON[_0x8298('0xbc')](_0x1dcf16[_0x8298('0x2e')][_0x8298('0xd3')]);if(!moment(_0x5900f1[_0x8298('0x3c')])[_0x8298('0xd4')]()){throw new Error(_0x8298('0xd5'));}if(!moment(_0x5900f1['to'])[_0x8298('0xd4')]()){throw new Error(_0x8298('0xd6'));}}catch(_0x46ac05){throw new Error(_0x8298('0xd7'));}}if(!_0x1dcf16[_0x8298('0x2e')][_0x8298('0x39')](_0x8298('0x9e'))){_0x543c9[_0x8298('0x15')]=qs[_0x8298('0x15')](_0x1dcf16[_0x8298('0x2e')][_0x8298('0x15')]||0xa);_0x543c9['offset']=qs[_0x8298('0x12')](_0x1dcf16['query'][_0x8298('0x12')]);}var _0x32004a=_0x1299c9[_0x8298('0x73')](function(_0x3ebb49){if(_0x3ebb49==='voice'){var _0x597871={'attributes':['id','uniqueid',_0x8298('0x34'),_0x8298('0xd8'),_0x8298('0xd9'),_0x8298('0xda'),_0x8298('0xdb'),'endtime','duration',_0x8298('0xdc'),'createdAt',_0x8298('0xdd'),_0x8298('0xde'),_0x8298('0xdf'),_0x8298('0xe0')],'where':{'ContactId':_0x1dcf16[_0x8298('0x27')]['id']},'include':[{'model':db[_0x8298('0xc2')],'as':'User','attributes':['id',_0x8298('0x1f'),'fullname','alias']}],'order':[[_0x8298('0xe1'),_0x8298('0xe2')]]};if(_0x1dcf16['query'][_0x8298('0xd3')]){_0x597871[_0x8298('0x61')]['createdAt']={'$gte':_0x5900f1[_0x8298('0x3c')],'$lte':_0x5900f1['to']};}return db[_0x8298('0x53')][_0x8298('0xe3')](_0x597871)['then'](function(_0x15d46c){_0x2a70fb[_0x8298('0x14')]+=_0x15d46c[_0x8298('0x14')];return _[_0x8298('0x73')](_0x15d46c[_0x8298('0xa1')],function(_0x4f969b){var _0x4c7bf2=_0x4f969b[_0x8298('0x3d')]({'plain':!![]});_0x4c7bf2[_0x8298('0xd0')]=_0x3ebb49;if(_0x4c7bf2['User']){_0x4c7bf2[_0x8298('0xc2')]={'id':_0x4c7bf2['User']['id'],'name':_0x4c7bf2[_0x8298('0xc2')][_0x8298('0x1f')],'fullname':_0x4c7bf2[_0x8298('0xc2')][_0x8298('0xe4')],'alias':_0x4c7bf2['User'][_0x8298('0x32')]};}return _0x4c7bf2;});});}else{var _0x7ab9c7=_[_0x8298('0xe5')](_0x3ebb49)+(_0x3ebb49===_0x8298('0xca')?'Website':_0x8298('0xe6'));var _0x592e45={'attributes':['id',_0x8298('0xe7'),_0x8298('0xe8'),_0x8298('0xe1'),_0x8298('0xdc'),_0x8298('0xe9'),_0x8298('0xea'),_0x8298('0xeb'),_0x8298('0xe0'),_0x7ab9c7+'Id'],'where':{'ContactId':_0x1dcf16[_0x8298('0x27')]['id']},'include':[{'model':db[_0x7ab9c7],'as':_0x8298('0xe6'),'attributes':['id','name',_0x8298('0xec')]},{'model':db[_0x8298('0xc2')],'as':_0x8298('0xed'),'attributes':['id','name','fullname']},{'model':db[_0x8298('0x69')],'as':_0x8298('0x6a'),'attributes':['id',_0x8298('0x1f'),_0x8298('0x6b')],'through':{'attributes':[]}}],'order':[[_0x8298('0xe1'),_0x8298('0xe2')]]};if(_0x1dcf16['query']['range']){_0x592e45[_0x8298('0x61')][_0x8298('0xe1')]={'$gte':_0x5900f1[_0x8298('0x3c')],'$lte':_0x5900f1['to']};}switch(_0x3ebb49){case _0x8298('0xca'):_0x592e45['attributes']['push'](_0x8298('0xee'),_0x8298('0xef'),'customerPort',_0x8298('0xf0'),'osName','ratingMessage',_0x8298('0xf1'),_0x8298('0xf2'),_0x8298('0xf3'));break;case _0x8298('0xc9'):_0x592e45[_0x8298('0x7f')]['push'](_0x8298('0xf4'),'substatus');break;case _0x8298('0xcc'):_0x592e45[_0x8298('0x7f')]['push'](_0x8298('0xf5'),_0x8298('0xf6'));break;}return db[_[_0x8298('0xe5')](_0x3ebb49)+'Interaction']['findAndCountAll'](_0x592e45)[_0x8298('0x1a')](function(_0x531e76){_0x2a70fb[_0x8298('0x14')]+=_0x531e76['count'];return _[_0x8298('0x73')](_0x531e76[_0x8298('0xa1')],function(_0x11a765){var _0xd9a6bd=_0x11a765['get']({'plain':!![]});_0xd9a6bd[_0x8298('0xd0')]=_0x3ebb49;if(_0xd9a6bd['Owner']){_0xd9a6bd['Owner']={'id':_0xd9a6bd['Owner']['id'],'name':_0xd9a6bd['Owner'][_0x8298('0x1f')],'fullname':_0xd9a6bd[_0x8298('0xed')][_0x8298('0xe4')]};}return _0xd9a6bd;});});}});return Promise[_0x8298('0x88')](_0x32004a);})[_0x8298('0x1a')](function(_0x4797a8){return _(_0x4797a8)[_0x8298('0xf7')]()[_0x8298('0xf8')]('createdAt')[_0x8298('0xf9')]()[_0x8298('0xfa')]();})[_0x8298('0x1a')](function(_0x1de256){_0x2a70fb[_0x8298('0xa1')]=_0x543c9[_0x8298('0x15')]?_0x1de256[_0x8298('0xfb')](_0x543c9['offset'],_0x543c9[_0x8298('0x12')]+_0x543c9[_0x8298('0x15')]):_0x1de256;return _0x2a70fb;})[_0x8298('0x1a')](respondWithFilteredResult(_0x277067,_0x543c9))[_0x8298('0x28')](handleError(_0x277067,null));};
\ No newline at end of file
index 2f54ec5..14ceea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2162=['hasOwnProperty','hook','exports','CmContact','setMaxListeners','save','remove','emit'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x2162,0x73));var _0x2216=function(_0x533e4e,_0x4eba54){_0x533e4e=_0x533e4e-0x0;var _0x1f14bb=_0x2162[_0x533e4e];return _0x1f14bb;};'use strict';var EventEmitter=require('events');var CmContact=require('../../mysqldb')['db'][_0x2216('0x0')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x2216('0x1')](0x0);var events={'afterCreate':_0x2216('0x2'),'afterUpdate':'update','afterDestroy':_0x2216('0x3')};function emitEvent(_0x3e78bf){return function(_0x373412,_0x2896af,_0x39c2dd){CmContactEvents[_0x2216('0x4')](_0x3e78bf+':'+_0x373412['id'],_0x373412);CmContactEvents[_0x2216('0x4')](_0x3e78bf,_0x373412);_0x39c2dd(null);};}for(var e in events){if(events[_0x2216('0x5')](e)){var event=events[e];CmContact[_0x2216('0x6')](e,emitEvent(event));}}module[_0x2216('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0x7a9e=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmContact'];(function(_0x1460ae,_0xdf2689){var _0x2ddad7=function(_0x23b6b8){while(--_0x23b6b8){_0x1460ae['push'](_0x1460ae['shift']());}};_0x2ddad7(++_0xdf2689);}(_0x7a9e,0x177));var _0xe7a9=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x7a9e[_0x122ef9];return _0x42fba0;};'use strict';var EventEmitter=require(_0xe7a9('0x0'));var CmContact=require(_0xe7a9('0x1'))['db'][_0xe7a9('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe7a9('0x3'),'afterDestroy':_0xe7a9('0x4')};function emitEvent(_0x24cccb){return function(_0x3d305f,_0x4f7ef5,_0x41e53c){CmContactEvents['emit'](_0x24cccb+':'+_0x3d305f['id'],_0x3d305f);CmContactEvents[_0xe7a9('0x5')](_0x24cccb,_0x3d305f);_0x41e53c(null);};}for(var e in events){if(events[_0xe7a9('0x6')](e)){var event=events[e];CmContact[_0xe7a9('0x7')](e,emitEvent(event));}}module[_0xe7a9('0x8')]=CmContactEvents;
\ No newline at end of file
index a96f74f..4637fd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8e2=['all','BlackLists','CmHopperBlack','exports','define','lastName','mobile','fax','email','FULLTEXT','utf8mb4_unicode_ci','models','List\x20not\x20found','cmContact,\x20%s,\x20%s','afterCreate','get','length','ContactId','[CmContact][afterDestroy][Succesfull]','inspect','catch','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','./cmContact.attributes','Campaign','scheduledat','format','isNil','dialTimezone','resolve','findOne','then','timezones','utcOffset','add','minutes','YYYY-MM-DD\x20HH:mm:ss','phone','ListId','priority','callbackUniqueid','CampaignId','\x20in\x20Campaign\x20with\x20id\x20','[CmContact][Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','CmHopper','VoiceQueueId','create','dialCheckDuplicateType','always','VoiceQueue','findAll','outbound','CmList','Lists','map'];(function(_0x5ad67e,_0x52662c){var _0x34156c=function(_0x3d2695){while(--_0x3d2695){_0x5ad67e['push'](_0x5ad67e['shift']());}};_0x34156c(++_0x52662c);}(_0xf8e2,0x13d));var _0x2f8e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xf8e2[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x2f8e('0x0'));var util=require(_0x2f8e('0x1'));var logger=require(_0x2f8e('0x2'))(_0x2f8e('0x3'));var moment=require(_0x2f8e('0x4'));var shared=require('../../config/environment/shared');var attributes=require(_0x2f8e('0x5'));function getTimezoneCallbackAt(_0x1dae9e,_0x3a9498,_0xf21a6c,_0x9a38f9){var _0x1cc657=_0x9a38f9?_0x2f8e('0x6'):'VoiceQueue';var _0x1e6a39=_0xf21a6c['scheduledat']?_0xf21a6c[_0x2f8e('0x7')]:moment()[_0x2f8e('0x8')]('YYYY-MM-DD\x20HH:mm:ss');if(_[_0x2f8e('0x9')](_0xf21a6c[_0x2f8e('0xa')])){return Promise[_0x2f8e('0xb')](_0x1e6a39);}return _0x1dae9e[_0x1cc657][_0x2f8e('0xc')]({'where':{'id':_0x3a9498}})[_0x2f8e('0xd')](function(_0x54538f){if(_[_0x2f8e('0x9')](_0x54538f)||_[_0x2f8e('0x9')](_0x54538f[_0x2f8e('0xa')])){return Promise['resolve'](_0x1e6a39);}var _0xe9005e=shared[_0x2f8e('0xe')];var _0x11ea2f=_0xe9005e[_0x54538f[_0x2f8e('0xa')]];var _0x5251a6=_0xe9005e[_0xf21a6c[_0x2f8e('0xa')]];if(_[_0x2f8e('0x9')](_0x11ea2f)&&_[_0x2f8e('0x9')](_0x5251a6)){return Promise[_0x2f8e('0xb')](_0x1e6a39);}var _0x2db734=_0x11ea2f['utcOffset']-_0x5251a6[_0x2f8e('0xf')];var _0x2a034e=_0xf21a6c['scheduledat']?_0xf21a6c[_0x2f8e('0x7')]:moment();_0x1e6a39=moment(_0x2a034e)[_0x2f8e('0x10')](_0x2db734,_0x2f8e('0x11'))['format'](_0x2f8e('0x12'));return Promise['resolve'](_0x1e6a39);});}function getNewHopperPayload(_0x4435a2){return{'phone':_0x4435a2[_0x2f8e('0x13')],'ContactId':_0x4435a2['id'],'ListId':_0x4435a2[_0x2f8e('0x14')],'scheduledat':_0x4435a2[_0x2f8e('0x7')]?_0x4435a2[_0x2f8e('0x7')]:moment()[_0x2f8e('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x4435a2[_0x2f8e('0x15')]?_0x4435a2[_0x2f8e('0x15')]:0x2,'callback':_0x4435a2[_0x2f8e('0x16')]?!![]:![],'callbackuniqueid':_0x4435a2[_0x2f8e('0x16')]?_0x4435a2[_0x2f8e('0x16')]:undefined,'callbackat':_0x4435a2['callbackUniqueid']?moment()[_0x2f8e('0x8')](_0x2f8e('0x12')):undefined};}function handleAlwaysCheckDuplicate(_0x5f2a43,_0x533683,_0x1e335e,_0x3c2b38){var _0x551427=_0x3c2b38?_0x2f8e('0x17'):'VoiceQueueId';return _0x5f2a43['CmHopper'][_0x2f8e('0xc')]({'where':{'phone':_0x1e335e[_0x2f8e('0x13')],['foreignKey']:_0x533683['id']}})['then'](function(_0x19e7ed){if(_0x19e7ed){throw new Error('[CmContact][Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x1e335e[_0x2f8e('0x13')]+_0x2f8e('0x18')+_0x533683['id']);}return _0x5f2a43['CmHopperFinal'][_0x2f8e('0xc')]({'where':{'calleridnum':_0x1e335e['phone'],['foreignKey']:_0x533683['id']}});})[_0x2f8e('0xd')](function(_0x365c7e){if(_0x365c7e){throw new Error(_0x2f8e('0x19')+_0x1e335e[_0x2f8e('0x13')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x533683['id']);}var _0x384ae5=getNewHopperPayload(_0x1e335e);_0x384ae5[_0x551427]=_0x533683['id'];return _0x5f2a43[_0x2f8e('0x1a')]['create'](_0x384ae5);});}function handleOnlyIfOpenCheckDuplicate(_0x4eae5b,_0x41417f,_0x1fe7ac,_0x217d31){var _0x4fe67c=_0x217d31?_0x2f8e('0x17'):_0x2f8e('0x1b');return _0x4eae5b[_0x2f8e('0x1a')]['findOne']({'where':{'phone':_0x1fe7ac[_0x2f8e('0x13')],['foreignKey']:_0x41417f['id']}})['then'](function(_0x3f8e56){if(_0x3f8e56){throw new Error('[CmContact][OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x1fe7ac[_0x2f8e('0x13')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x41417f['id']);}var _0x26bf7=getNewHopperPayload(_0x1fe7ac);_0x26bf7[_0x4fe67c]=_0x41417f['id'];return _0x4eae5b[_0x2f8e('0x1a')][_0x2f8e('0x1c')](_0x26bf7);});}function handleNeverCheckDuplicate(_0x12009b,_0x17306d,_0x414515){var _0x429aee=getNewHopperPayload(_0x414515);_0x429aee['VoiceQueueId']=_0x17306d['id'];return _0x12009b[_0x2f8e('0x1a')][_0x2f8e('0x1c')](_0x429aee);}function handleCheckDuplicate(_0x544cec,_0x15df6a,_0x41d415,_0x47770b){return getTimezoneCallbackAt(_0x544cec,_0x15df6a,_0x41d415,_0x47770b)[_0x2f8e('0xd')](function(_0x43a77a){_0x41d415[_0x2f8e('0x7')]=_0x43a77a;switch(_0x15df6a[_0x2f8e('0x1d')]){case _0x2f8e('0x1e'):return handleAlwaysCheckDuplicate(_0x544cec,_0x15df6a,_0x41d415,_0x47770b);case'onlyIfOpen':return handleOnlyIfOpenCheckDuplicate(_0x544cec,_0x15df6a,_0x41d415,_0x47770b);default:return handleNeverCheckDuplicate(_0x544cec,_0x15df6a,_0x41d415);}});}function createHopperForVoiceQueues(_0x5d7981,_0x143c53){return _0x5d7981[_0x2f8e('0x1f')][_0x2f8e('0x20')]({'where':{'type':_0x2f8e('0x21')},'attributes':['id',_0x2f8e('0x1d'),_0x2f8e('0xa')],'include':[{'model':_0x5d7981[_0x2f8e('0x22')],'as':_0x2f8e('0x23'),'where':{'id':_0x143c53['ListId']}}],'raw':!![]})['then'](function(_0x582fe9){var _0x3a4d7d=_0x582fe9[_0x2f8e('0x24')](function(_0x53ab1e){return handleCheckDuplicate(_0x5d7981,_0x53ab1e,_0x143c53,![]);});return Promise[_0x2f8e('0x25')](_0x3a4d7d);});}function createHopperForCampaigns(_0x2b8e00,_0x45df0d){return _0x2b8e00['Campaign'][_0x2f8e('0x20')]({'attributes':['id',_0x2f8e('0x1d'),_0x2f8e('0xa')],'include':[{'model':_0x2b8e00['CmList'],'as':'Lists','where':{'id':_0x45df0d[_0x2f8e('0x14')]}}],'raw':!![]})['then'](function(_0x17a486){var _0x329195=_0x17a486[_0x2f8e('0x24')](function(_0x20bb2a){return handleCheckDuplicate(_0x2b8e00,_0x20bb2a,_0x45df0d,!![]);});return Promise[_0x2f8e('0x25')](_0x329195);});}function createHopperBlackForVoiceQueues(_0x55a3be,_0x1e2f54){return _0x55a3be[_0x2f8e('0x1f')][_0x2f8e('0x20')]({'where':{'type':_0x2f8e('0x21')},'attributes':['id'],'include':[{'model':_0x55a3be[_0x2f8e('0x22')],'as':_0x2f8e('0x26'),'where':{'id':_0x1e2f54['ListId']}}],'raw':!![]})[_0x2f8e('0xd')](function(_0x5d89a7){var _0x36a0f8=_0x5d89a7[_0x2f8e('0x24')](function(_0x4e5eac){return _0x55a3be[_0x2f8e('0x27')][_0x2f8e('0x1c')]({'phone':_0x1e2f54[_0x2f8e('0x13')],'ContactId':_0x1e2f54['id'],'ListId':_0x1e2f54['ListId'],'VoiceQueueId':_0x4e5eac['id']});});return Promise[_0x2f8e('0x25')](_0x36a0f8);});}function createHopperBlackForCampaigns(_0x22f51a,_0x251f20){return _0x22f51a[_0x2f8e('0x6')]['findAll']({'attributes':['id'],'include':[{'model':_0x22f51a[_0x2f8e('0x22')],'as':'BlackLists','where':{'id':_0x251f20['ListId']}}],'raw':!![]})[_0x2f8e('0xd')](function(_0x123576){var _0x31be14=_0x123576[_0x2f8e('0x24')](function(_0x1d8c1c){return _0x22f51a['CmHopperBlack'][_0x2f8e('0x1c')]({'phone':_0x251f20[_0x2f8e('0x13')],'ContactId':_0x251f20['id'],'ListId':_0x251f20['ListId'],'CampaignId':_0x1d8c1c['id']});});return Promise['all'](_0x31be14);});}module[_0x2f8e('0x28')]=function(_0x3038c1){return _0x3038c1[_0x2f8e('0x29')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':'phone','fields':[_0x2f8e('0x13')]},{'name':'fti_cm_contacts','fields':['firstName',_0x2f8e('0x2a'),_0x2f8e('0x13'),_0x2f8e('0x2b'),_0x2f8e('0x2c'),_0x2f8e('0x2d')],'type':_0x2f8e('0x2e')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x2f8e('0x2f'),'hooks':{'afterCreate':function(_0x4abffe,_0x322b08,_0x510c75){var _0x48c257=_0x3038c1[_0x2f8e('0x30')];var _0xbe808d=_0x4abffe['get']({'plain':!![]});if(!_0xbe808d[_0x2f8e('0x14')]){return _0x510c75(new Error(_0x2f8e('0x31')));}if(!_0xbe808d['phone']){return _0x510c75();}return createHopperForVoiceQueues(_0x48c257,_0xbe808d)[_0x2f8e('0xd')](function(){return createHopperBlackForVoiceQueues(_0x48c257,_0xbe808d);})['then'](function(){return createHopperForCampaigns(_0x48c257,_0xbe808d);})['then'](function(){return createHopperBlackForCampaigns(_0x48c257,_0xbe808d);})['then'](function(){return _0x510c75();})['catch'](function(_0x4912ac){logger['error'](_0x2f8e('0x32'),_0x2f8e('0x33'),_0x4912ac['message']);_0x510c75(_0x4912ac);});},'afterDestroy':function(_0xd44058,_0x226d11,_0x528b03){var _0x1a062e=_0x3038c1[_0x2f8e('0x30')];var _0xa74d7d=_0xd44058[_0x2f8e('0x34')]({'plain':!![]});return _0x1a062e[_0x2f8e('0x1a')][_0x2f8e('0x20')]({'raw':!![],'where':{'ListId':_0xa74d7d['ListId'],'ContactId':_0xa74d7d['id']}})[_0x2f8e('0xd')](function(_0x48c975){if(!_['isEmpty'](_0x48c975)){var _0x135ce6=[];for(var _0x584b11=0x0;_0x584b11<_0x48c975[_0x2f8e('0x35')];_0x584b11+=0x1){var _0x3adce0=_0x1a062e[_0x2f8e('0x1a')]['destroy']({'where':{'ListId':_0x48c975[_0x584b11][_0x2f8e('0x14')],'ContactId':_0x48c975[_0x584b11][_0x2f8e('0x36')],'VoiceQueueId':_0x48c975[_0x584b11]['VoiceQueueId'],'CampaignId':_0x48c975[_0x584b11]['CampaignId']}});_0x135ce6['push'](_0x3adce0);}return Promise['all'](_0x135ce6);}})[_0x2f8e('0xd')](function(_0x49d664){logger['info'](_0x2f8e('0x37'),util[_0x2f8e('0x38')](_0x49d664,{'showHidden':![],'depth':null}));_0x528b03();})[_0x2f8e('0x39')](function(_0x35c5c7){logger['error'](_0x2f8e('0x3a'),util['inspect'](_0x35c5c7,{'showHidden':![],'depth':null}));_0x528b03(_0x35c5c7);});}}});};
\ No newline at end of file
+var _0xe14b=['fti_cm_contacts','firstName','lastName','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','List\x20not\x20found','catch','cmContact,\x20%s,\x20%s','afterCreate','isEmpty','length','destroy','ContactId','push','[CmContact][afterDestroy][Succesfull]','inspect','error','lodash','util','moment','../../config/environment/shared','Campaign','VoiceQueue','scheduledat','dialTimezone','resolve','findOne','then','isNil','timezones','utcOffset','add','minutes','format','YYYY-MM-DD\x20HH:mm:ss','phone','ListId','priority','callbackUniqueid','VoiceQueueId','CmHopper','assign','CmHopperFinal','[CmContact][Always]\x20Hopper\x20Final\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','create','CampaignId','[CmContact][OnlyIfOpen]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20','\x20in\x20Campaign\x20with\x20id\x20','findAll','outbound','dialCheckDuplicateType','CmList','all','Lists','map','BlackLists','CmHopperBlack','CmContact','cm_contacts'];(function(_0x816922,_0x40650f){var _0x31ecac=function(_0x346a87){while(--_0x346a87){_0x816922['push'](_0x816922['shift']());}};_0x31ecac(++_0x40650f);}(_0xe14b,0x93));var _0xbe14=function(_0x20bb95,_0x2e88fa){_0x20bb95=_0x20bb95-0x0;var _0x5abdad=_0xe14b[_0x20bb95];return _0x5abdad;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var shared=require(_0xbe14('0x3'));var attributes=require('./cmContact.attributes');function getTimezoneCallbackAt(_0x7d3665,_0x5ce8fb,_0x496c04,_0x1833e3){var _0x2d1a4a=_0x1833e3?_0xbe14('0x4'):_0xbe14('0x5');var _0x1d9ade=_0x496c04[_0xbe14('0x6')]?_0x496c04[_0xbe14('0x6')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss');if(_['isNil'](_0x496c04[_0xbe14('0x7')])){return Promise[_0xbe14('0x8')](_0x1d9ade);}return _0x7d3665[_0x2d1a4a][_0xbe14('0x9')]({'where':{'id':_0x5ce8fb}})[_0xbe14('0xa')](function(_0x53c7ea){if(_['isNil'](_0x53c7ea)||_[_0xbe14('0xb')](_0x53c7ea[_0xbe14('0x7')])){return Promise['resolve'](_0x1d9ade);}var _0x254c3b=shared[_0xbe14('0xc')];var _0x886a5e=_0x254c3b[_0x53c7ea[_0xbe14('0x7')]];var _0x27792f=_0x254c3b[_0x496c04[_0xbe14('0x7')]];if(_[_0xbe14('0xb')](_0x886a5e)&&_[_0xbe14('0xb')](_0x27792f)){return Promise[_0xbe14('0x8')](_0x1d9ade);}var _0xa2cf72=_0x886a5e[_0xbe14('0xd')]-_0x27792f[_0xbe14('0xd')];var _0x813399=_0x496c04['scheduledat']?_0x496c04['scheduledat']:moment();_0x1d9ade=moment(_0x813399)[_0xbe14('0xe')](_0xa2cf72,_0xbe14('0xf'))[_0xbe14('0x10')](_0xbe14('0x11'));return Promise['resolve'](_0x1d9ade);});}function getNewHopperPayload(_0x21c789){return{'phone':_0x21c789[_0xbe14('0x12')],'ContactId':_0x21c789['id'],'ListId':_0x21c789[_0xbe14('0x13')],'scheduledat':_0x21c789[_0xbe14('0x6')]?_0x21c789[_0xbe14('0x6')]:moment()[_0xbe14('0x10')](_0xbe14('0x11')),'priority':_0x21c789['priority']?_0x21c789[_0xbe14('0x14')]:0x2,'callback':_0x21c789[_0xbe14('0x15')]?!![]:![],'callbackuniqueid':_0x21c789[_0xbe14('0x15')]?_0x21c789[_0xbe14('0x15')]:undefined,'callbackat':_0x21c789[_0xbe14('0x15')]?moment()[_0xbe14('0x10')]('YYYY-MM-DD\x20HH:mm:ss'):undefined};}function handleAlwaysCheckDuplicate(_0x24f820,_0x4a1bbd,_0x417c8d,_0xc12977){var _0x188ec4=_0xc12977?'CampaignId':_0xbe14('0x16');var _0x56d845={['foreignKey']:_0x4a1bbd['id']};return _0x24f820[_0xbe14('0x17')]['findOne']({'where':Object[_0xbe14('0x18')]({},_0x56d845,{'phone':_0x417c8d['phone']})})[_0xbe14('0xa')](function(_0x3d3608){if(_0x3d3608){throw new Error('[CmContact][Always]\x20Hopper\x20already\x20exists\x20for\x20contact\x20with\x20phone\x20'+_0x417c8d[_0xbe14('0x12')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x4a1bbd['id']);}return _0x24f820[_0xbe14('0x19')]['findOne']({'where':Object[_0xbe14('0x18')]({},_0x56d845,{'calleridnum':_0x417c8d[_0xbe14('0x12')]})});})[_0xbe14('0xa')](function(_0x39cc81){if(_0x39cc81){throw new Error(_0xbe14('0x1a')+_0x417c8d[_0xbe14('0x12')]+'\x20in\x20Campaign\x20with\x20id\x20'+_0x4a1bbd['id']);}var _0x1822e0=getNewHopperPayload(_0x417c8d);_0x1822e0[_0x188ec4]=_0x4a1bbd['id'];return _0x24f820[_0xbe14('0x17')][_0xbe14('0x1b')](_0x1822e0);});}function handleOnlyIfOpenCheckDuplicate(_0x169369,_0x5dd475,_0x16f884,_0x29fc64){var _0x59bf34=_0x29fc64?_0xbe14('0x1c'):_0xbe14('0x16');var _0x1c7cc7={'phone':_0x16f884[_0xbe14('0x12')],['foreignKey']:_0x5dd475['id']};return _0x169369[_0xbe14('0x17')][_0xbe14('0x9')]({'where':_0x1c7cc7})[_0xbe14('0xa')](function(_0x2b05cb){if(_0x2b05cb){throw new Error(_0xbe14('0x1d')+_0x16f884[_0xbe14('0x12')]+_0xbe14('0x1e')+_0x5dd475['id']);}var _0x3bf43c=getNewHopperPayload(_0x16f884);_0x3bf43c[_0x59bf34]=_0x5dd475['id'];return _0x169369[_0xbe14('0x17')][_0xbe14('0x1b')](_0x3bf43c);});}function handleNeverCheckDuplicate(_0x223f7a,_0xe6feb2,_0x6ba36c){var _0x2ff48e=getNewHopperPayload(_0x6ba36c);_0x2ff48e[_0xbe14('0x16')]=_0xe6feb2['id'];return _0x223f7a[_0xbe14('0x17')]['create'](_0x2ff48e);}function handleCheckDuplicate(_0x2e33e1,_0x499793,_0x58f8de,_0x46c2d1){return getTimezoneCallbackAt(_0x2e33e1,_0x499793,_0x58f8de,_0x46c2d1)['then'](function(_0x243524){_0x58f8de[_0xbe14('0x6')]=_0x243524;switch(_0x499793['dialCheckDuplicateType']){case'always':return handleAlwaysCheckDuplicate(_0x2e33e1,_0x499793,_0x58f8de,_0x46c2d1);case'onlyIfOpen':return handleOnlyIfOpenCheckDuplicate(_0x2e33e1,_0x499793,_0x58f8de,_0x46c2d1);default:return handleNeverCheckDuplicate(_0x2e33e1,_0x499793,_0x58f8de);}});}function createHopperForVoiceQueues(_0x412ad5,_0xa3d24){return _0x412ad5['VoiceQueue'][_0xbe14('0x1f')]({'where':{'type':_0xbe14('0x20')},'attributes':['id',_0xbe14('0x21'),_0xbe14('0x7')],'include':[{'model':_0x412ad5[_0xbe14('0x22')],'as':'Lists','where':{'id':_0xa3d24['ListId']}}],'raw':!![]})[_0xbe14('0xa')](function(_0x52b24c){var _0x5dd7aa=_0x52b24c['map'](function(_0x163ef7){return handleCheckDuplicate(_0x412ad5,_0x163ef7,_0xa3d24,![]);});return Promise[_0xbe14('0x23')](_0x5dd7aa);});}function createHopperForCampaigns(_0x2bb45,_0x3dbacb){return _0x2bb45[_0xbe14('0x4')][_0xbe14('0x1f')]({'attributes':['id',_0xbe14('0x21'),_0xbe14('0x7')],'include':[{'model':_0x2bb45[_0xbe14('0x22')],'as':_0xbe14('0x24'),'where':{'id':_0x3dbacb[_0xbe14('0x13')]}}],'raw':!![]})[_0xbe14('0xa')](function(_0x539c41){var _0x4f51f8=_0x539c41[_0xbe14('0x25')](function(_0x2951e1){return handleCheckDuplicate(_0x2bb45,_0x2951e1,_0x3dbacb,!![]);});return Promise[_0xbe14('0x23')](_0x4f51f8);});}function createHopperBlackForVoiceQueues(_0x520e09,_0x326329){return _0x520e09[_0xbe14('0x5')][_0xbe14('0x1f')]({'where':{'type':_0xbe14('0x20')},'attributes':['id'],'include':[{'model':_0x520e09[_0xbe14('0x22')],'as':_0xbe14('0x26'),'where':{'id':_0x326329[_0xbe14('0x13')]}}],'raw':!![]})[_0xbe14('0xa')](function(_0x1b2608){var _0x5255ff=_0x1b2608[_0xbe14('0x25')](function(_0x841b71){return _0x520e09[_0xbe14('0x27')][_0xbe14('0x1b')]({'phone':_0x326329[_0xbe14('0x12')],'ContactId':_0x326329['id'],'ListId':_0x326329[_0xbe14('0x13')],'VoiceQueueId':_0x841b71['id']});});return Promise['all'](_0x5255ff);});}function createHopperBlackForCampaigns(_0xb0f143,_0x1974a4){return _0xb0f143[_0xbe14('0x4')][_0xbe14('0x1f')]({'attributes':['id'],'include':[{'model':_0xb0f143['CmList'],'as':'BlackLists','where':{'id':_0x1974a4[_0xbe14('0x13')]}}],'raw':!![]})[_0xbe14('0xa')](function(_0x3272ae){var _0x51c859=_0x3272ae['map'](function(_0x6b6aa8){return _0xb0f143['CmHopperBlack']['create']({'phone':_0x1974a4[_0xbe14('0x12')],'ContactId':_0x1974a4['id'],'ListId':_0x1974a4[_0xbe14('0x13')],'CampaignId':_0x6b6aa8['id']});});return Promise[_0xbe14('0x23')](_0x51c859);});}module['exports']=function(_0x558525){return _0x558525['define'](_0xbe14('0x28'),attributes,{'tableName':_0xbe14('0x29'),'paranoid':!![],'indexes':[{'name':_0xbe14('0x12'),'fields':['phone']},{'name':_0xbe14('0x2a'),'fields':[_0xbe14('0x2b'),_0xbe14('0x2c'),_0xbe14('0x12'),'mobile','fax',_0xbe14('0x2d')],'type':_0xbe14('0x2e')}],'timestamps':!![],'charset':_0xbe14('0x2f'),'collate':_0xbe14('0x30'),'hooks':{'afterCreate':function(_0x2550dc,_0x4f2d95,_0x51023a){var _0x46af81=_0x558525[_0xbe14('0x31')];var _0x238c60=_0x2550dc[_0xbe14('0x32')]({'plain':!![]});if(!_0x238c60['ListId']){return _0x51023a(new Error(_0xbe14('0x33')));}if(!_0x238c60[_0xbe14('0x12')]){return _0x51023a();}return createHopperForVoiceQueues(_0x46af81,_0x238c60)['then'](function(){return createHopperBlackForVoiceQueues(_0x46af81,_0x238c60);})[_0xbe14('0xa')](function(){return createHopperForCampaigns(_0x46af81,_0x238c60);})[_0xbe14('0xa')](function(){return createHopperBlackForCampaigns(_0x46af81,_0x238c60);})[_0xbe14('0xa')](function(){return _0x51023a();})[_0xbe14('0x34')](function(_0x589dac){logger['error'](_0xbe14('0x35'),_0xbe14('0x36'),_0x589dac['message']);_0x51023a(_0x589dac);});},'afterDestroy':function(_0x5acf90,_0xca8cdb,_0x5d3726){var _0x3f7f5b=_0x558525[_0xbe14('0x31')];var _0xdbc6e1=_0x5acf90[_0xbe14('0x32')]({'plain':!![]});return _0x3f7f5b[_0xbe14('0x17')]['findAll']({'raw':!![],'where':{'ListId':_0xdbc6e1[_0xbe14('0x13')],'ContactId':_0xdbc6e1['id']}})[_0xbe14('0xa')](function(_0x6928f2){if(!_[_0xbe14('0x37')](_0x6928f2)){var _0x2fc073=[];for(var _0x494c32=0x0;_0x494c32<_0x6928f2[_0xbe14('0x38')];_0x494c32+=0x1){var _0x3d419a=_0x3f7f5b[_0xbe14('0x17')][_0xbe14('0x39')]({'where':{'ListId':_0x6928f2[_0x494c32][_0xbe14('0x13')],'ContactId':_0x6928f2[_0x494c32][_0xbe14('0x3a')],'VoiceQueueId':_0x6928f2[_0x494c32]['VoiceQueueId'],'CampaignId':_0x6928f2[_0x494c32]['CampaignId']}});_0x2fc073[_0xbe14('0x3b')](_0x3d419a);}return Promise[_0xbe14('0x23')](_0x2fc073);}})[_0xbe14('0xa')](function(_0x48554a){logger['info'](_0xbe14('0x3c'),util[_0xbe14('0x3d')](_0x48554a,{'showHidden':![],'depth':null}));_0x5d3726();})['catch'](function(_0x339a86){logger[_0xbe14('0x3e')]('[CmContact][afterDestroy][Error]',util[_0xbe14('0x3d')](_0x339a86,{'showHidden':![],'depth':null}));_0x5d3726(_0x339a86);});}}});};
\ No newline at end of file
index 8f58f55..af4cf5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x1d55e8,_0x1de280){var _0x54d9a0=function(_0x271981){while(--_0x271981){_0x1d55e8['push'](_0x1d55e8['shift']());}};_0x54d9a0(++_0x1de280);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
+var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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 squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
index 0b5332e..86738ad 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'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 ad05653..4321809 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x4c9799,_0x53b646){var _0x3f05b4=function(_0xaa118a){while(--_0xaa118a){_0x4c9799['push'](_0x4c9799['shift']());}};_0x3f05b4(++_0x53b646);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);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('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
+var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x284306,_0x5ddd68){var _0x574d24=function(_0x62357a){while(--_0x62357a){_0x284306['push'](_0x284306['shift']());}};_0x574d24(++_0x5ddd68);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);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('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
index c3592ea..f704529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ba=['INTEGER','STRING','PHONE','sequelize','exports'];(function(_0x3a3b9e,_0xc59037){var _0x148103=function(_0x406731){while(--_0x406731){_0x3a3b9e['push'](_0x3a3b9e['shift']());}};_0x148103(++_0xc59037);}(_0xf0ba,0x1ed));var _0xaf0b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf0ba[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xaf0b('0x0'));module[_0xaf0b('0x1')]={'CmContactId':{'type':Sequelize[_0xaf0b('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0xaf0b('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xaf0b('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':_0xaf0b('0x4')},'OrderBy':{'type':Sequelize[_0xaf0b('0x2')],'defaultValue':null},'description':{'type':Sequelize['STRING'],'defaultValue':null}};
\ No newline at end of file
+var _0xe920=['sequelize','exports','INTEGER','STRING','PHONE'];(function(_0x231952,_0x25d759){var _0x573744=function(_0x568091){while(--_0x568091){_0x231952['push'](_0x231952['shift']());}};_0x573744(++_0x25d759);}(_0xe920,0xbe));var _0x0e92=function(_0x31ced5,_0x5d5415){_0x31ced5=_0x31ced5-0x0;var _0x10d9e5=_0xe920[_0x31ced5];return _0x10d9e5;};'use strict';var Sequelize=require(_0x0e92('0x0'));module[_0x0e92('0x1')]={'CmContactId':{'type':Sequelize[_0x0e92('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0x0e92('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x0e92('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x0e92('0x3')],'defaultValue':_0x0e92('0x4')},'OrderBy':{'type':Sequelize[_0x0e92('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0x0e92('0x3')],'defaultValue':null}};
\ No newline at end of file
index d87cf93..8b9f99d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8817=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','offset','set','apply','reject','save','update','destroy','then','get','CmContactHasItems','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','CmContactHasItem','findAll','rows','show','params','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware'];(function(_0x3cd5fe,_0x56aa78){var _0x1e4281=function(_0x2596f8){while(--_0x2596f8){_0x3cd5fe['push'](_0x3cd5fe['shift']());}};_0x1e4281(++_0x56aa78);}(_0x8817,0x97));var _0x7881=function(_0x387a25,_0x3612f5){_0x387a25=_0x387a25-0x0;var _0x22b80f=_0x8817[_0x387a25];return _0x22b80f;};'use strict';var emlformat=require(_0x7881('0x0'));var rimraf=require(_0x7881('0x1'));var zipdir=require(_0x7881('0x2'));var jsonpatch=require(_0x7881('0x3'));var rp=require('request-promise');var moment=require(_0x7881('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7881('0x5'));var path=require('path');var sox=require(_0x7881('0x6'));var csv=require(_0x7881('0x7'));var ejs=require(_0x7881('0x8'));var fs=require('fs');var fs_extra=require(_0x7881('0x9'));var _=require(_0x7881('0xa'));var squel=require(_0x7881('0xb'));var crypto=require(_0x7881('0xc'));var jsforce=require(_0x7881('0xd'));var deskjs=require(_0x7881('0xe'));var toCsv=require(_0x7881('0x7'));var querystring=require(_0x7881('0xf'));var Papa=require(_0x7881('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7881('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7881('0x12'));var logger=require(_0x7881('0x13'))(_0x7881('0x14'));var utils=require(_0x7881('0x15'));var config=require(_0x7881('0x16'));var licenseUtil=require(_0x7881('0x17'));var db=require(_0x7881('0x18'))['db'];function respondWithStatusCode(_0x281922,_0x55d515){_0x55d515=_0x55d515||0xcc;return function(_0x4b2db7){if(_0x4b2db7){return _0x281922['sendStatus'](_0x55d515);}return _0x281922[_0x7881('0x19')](_0x55d515)[_0x7881('0x1a')]();};}function respondWithResult(_0x51bd6e,_0x2c2698){_0x2c2698=_0x2c2698||0xc8;return function(_0x14cdb8){if(_0x14cdb8){return _0x51bd6e[_0x7881('0x19')](_0x2c2698)[_0x7881('0x1b')](_0x14cdb8);}};}function respondWithFilteredResult(_0x5d1c41,_0x21069d){return function(_0x11046d){if(_0x11046d){var _0x23889a=typeof _0x21069d['offset']===_0x7881('0x1c')&&typeof _0x21069d[_0x7881('0x1d')]==='undefined';var _0x14a686=_0x11046d['count'];var _0x335c69=_0x23889a?0x0:_0x21069d[_0x7881('0x1e')];var _0x4075a5=_0x23889a?_0x11046d['count']:_0x21069d['offset']+_0x21069d[_0x7881('0x1d')];var _0x1c13e8;if(_0x4075a5>=_0x14a686){_0x4075a5=_0x14a686;_0x1c13e8=0xc8;}else{_0x1c13e8=0xce;}_0x5d1c41[_0x7881('0x19')](_0x1c13e8);return _0x5d1c41[_0x7881('0x1f')]('Content-Range',_0x335c69+'-'+_0x4075a5+'/'+_0x14a686)[_0x7881('0x1b')](_0x11046d);}return null;};}function patchUpdates(_0x405847){return function(_0x5050cc){try{jsonpatch[_0x7881('0x20')](_0x5050cc,_0x405847,!![]);}catch(_0x22e63a){return BPromise[_0x7881('0x21')](_0x22e63a);}return _0x5050cc[_0x7881('0x22')]();};}function saveUpdates(_0x471f72,_0x3cf35b){return function(_0x104525){if(_0x104525){return _0x104525[_0x7881('0x23')](_0x471f72)['then'](function(_0x407eeb){return _0x407eeb;});}return null;};}function removeEntity(_0x560cfc,_0x47b351){return function(_0x375939){if(_0x375939){return _0x375939[_0x7881('0x24')]()[_0x7881('0x25')](function(){var _0x4ff9da=_0x375939[_0x7881('0x26')]({'plain':!![]});var _0x165c39=_0x7881('0x27');return db['UserProfileResource'][_0x7881('0x24')]({'where':{'type':_0x165c39,'resourceId':_0x4ff9da['id']}})['then'](function(){return _0x375939;});})['then'](function(){_0x560cfc[_0x7881('0x19')](0xcc)[_0x7881('0x1a')]();});}};}function handleEntityNotFound(_0x45a7be,_0x46dfaf){return function(_0x41afbe){if(!_0x41afbe){_0x45a7be[_0x7881('0x28')](0x194);}return _0x41afbe;};}function handleError(_0xd16e6b,_0x20b785){_0x20b785=_0x20b785||0x1f4;return function(_0x1211e2){logger[_0x7881('0x29')](_0x1211e2[_0x7881('0x2a')]);if(_0x1211e2[_0x7881('0x2b')]){delete _0x1211e2[_0x7881('0x2b')];}_0xd16e6b[_0x7881('0x19')](_0x20b785)[_0x7881('0x2c')](_0x1211e2);};}exports[_0x7881('0x2d')]=function(_0x543913,_0x2306df){var _0x5d331={},_0x69686a={},_0x305e50={'count':0x0,'rows':[]};var _0x2fdc2d=_['map'](db['CmContactHasItem'][_0x7881('0x2e')],function(_0x4a6045){return{'name':_0x4a6045[_0x7881('0x2f')],'type':_0x4a6045[_0x7881('0x30')][_0x7881('0x31')]};});_0x69686a[_0x7881('0x32')]=_[_0x7881('0x33')](_0x2fdc2d,_0x7881('0x2b'));_0x69686a[_0x7881('0x34')]=_[_0x7881('0x35')](_0x543913['query']);_0x69686a[_0x7881('0x36')]=_[_0x7881('0x37')](_0x69686a[_0x7881('0x32')],_0x69686a[_0x7881('0x34')]);_0x5d331[_0x7881('0x38')]=_[_0x7881('0x37')](_0x69686a[_0x7881('0x32')],qs[_0x7881('0x39')](_0x543913[_0x7881('0x34')][_0x7881('0x39')]));_0x5d331[_0x7881('0x38')]=_0x5d331['attributes'][_0x7881('0x3a')]?_0x5d331[_0x7881('0x38')]:_0x69686a[_0x7881('0x32')];if(!_0x543913[_0x7881('0x34')][_0x7881('0x3b')]('nolimit')){_0x5d331[_0x7881('0x1d')]=qs[_0x7881('0x1d')](_0x543913[_0x7881('0x34')][_0x7881('0x1d')]);_0x5d331[_0x7881('0x1e')]=qs[_0x7881('0x1e')](_0x543913[_0x7881('0x34')][_0x7881('0x1e')]);}_0x5d331[_0x7881('0x3c')]=qs[_0x7881('0x3d')](_0x543913[_0x7881('0x34')][_0x7881('0x3d')]);_0x5d331[_0x7881('0x3e')]=qs[_0x7881('0x36')](_[_0x7881('0x3f')](_0x543913['query'],_0x69686a[_0x7881('0x36')]),_0x2fdc2d);if(_0x543913['query'][_0x7881('0x40')]){_0x5d331[_0x7881('0x3e')]=_[_0x7881('0x41')](_0x5d331[_0x7881('0x3e')],{'$or':_[_0x7881('0x33')](_0x2fdc2d,function(_0x2c2e0f){if(_0x2c2e0f['type']!==_0x7881('0x42')){var _0x5def6f={};_0x5def6f[_0x2c2e0f[_0x7881('0x2b')]]={'$like':'%'+_0x543913[_0x7881('0x34')][_0x7881('0x40')]+'%'};return _0x5def6f;}})});}_0x5d331=_[_0x7881('0x41')]({},_0x5d331,_0x543913[_0x7881('0x43')]);var _0xa0516c={'where':_0x5d331[_0x7881('0x3e')]};return db[_0x7881('0x44')]['count'](_0xa0516c)[_0x7881('0x25')](function(_0x1693ef){_0x305e50['count']=_0x1693ef;if(_0x543913[_0x7881('0x34')]['includeAll']){_0x5d331['include']=[{'all':!![]}];}return db[_0x7881('0x44')][_0x7881('0x45')](_0x5d331);})['then'](function(_0x188ade){_0x305e50[_0x7881('0x46')]=_0x188ade;return _0x305e50;})[_0x7881('0x25')](respondWithFilteredResult(_0x2306df,_0x5d331))['catch'](handleError(_0x2306df,null));};exports[_0x7881('0x47')]=function(_0xa589a3,_0xa531bf){var _0x25b728={'raw':!![],'where':{'id':_0xa589a3[_0x7881('0x48')]['id']}},_0x25c0c9={};_0x25c0c9[_0x7881('0x32')]=_[_0x7881('0x35')](db[_0x7881('0x44')][_0x7881('0x2e')]);_0x25c0c9[_0x7881('0x34')]=_[_0x7881('0x35')](_0xa589a3[_0x7881('0x34')]);_0x25c0c9[_0x7881('0x36')]=_[_0x7881('0x37')](_0x25c0c9[_0x7881('0x32')],_0x25c0c9[_0x7881('0x34')]);_0x25b728['attributes']=_['intersection'](_0x25c0c9[_0x7881('0x32')],qs[_0x7881('0x39')](_0xa589a3[_0x7881('0x34')][_0x7881('0x39')]));_0x25b728[_0x7881('0x38')]=_0x25b728[_0x7881('0x38')]['length']?_0x25b728[_0x7881('0x38')]:_0x25c0c9[_0x7881('0x32')];if(_0xa589a3[_0x7881('0x34')]['includeAll']){_0x25b728['include']=[{'all':!![]}];}_0x25b728=_[_0x7881('0x41')]({},_0x25b728,_0xa589a3[_0x7881('0x43')]);return db['CmContactHasItem']['find'](_0x25b728)['then'](handleEntityNotFound(_0xa531bf,null))[_0x7881('0x25')](respondWithResult(_0xa531bf,null))[_0x7881('0x49')](handleError(_0xa531bf,null));};exports[_0x7881('0x4a')]=function(_0x48f703,_0x1286a5){return db['CmContactHasItem']['create'](_0x48f703['body'],{})[_0x7881('0x25')](function(_0x2230a8){var _0x15e9fb=_0x48f703[_0x7881('0x4b')]['get']({'plain':!![]});if(!_0x15e9fb)throw new Error(_0x7881('0x4c'));if(_0x15e9fb[_0x7881('0x4d')]==='user'){var _0xaa0a3c=_0x2230a8[_0x7881('0x26')]({'plain':!![]});var _0x28c2f0=_0x7881('0x27');return db[_0x7881('0x4e')][_0x7881('0x4f')]({'where':{'name':_0x28c2f0,'userProfileId':_0x15e9fb[_0x7881('0x50')]},'raw':!![]})[_0x7881('0x25')](function(_0x2bbe7b){if(_0x2bbe7b&&_0x2bbe7b[_0x7881('0x51')]===0x0){return db[_0x7881('0x52')]['create']({'name':_0xaa0a3c[_0x7881('0x2b')],'resourceId':_0xaa0a3c['id'],'type':_0x2bbe7b[_0x7881('0x2b')],'sectionId':_0x2bbe7b['id']},{})[_0x7881('0x25')](function(){return _0x2230a8;});}else{return _0x2230a8;}})['catch'](function(_0xd7938c){logger[_0x7881('0x29')](_0x7881('0x53'),_0xd7938c);throw _0xd7938c;});}return _0x2230a8;})[_0x7881('0x25')](respondWithResult(_0x1286a5,0xc9))[_0x7881('0x49')](handleError(_0x1286a5,null));};exports[_0x7881('0x23')]=function(_0x36a607,_0x27bbb1){if(_0x36a607[_0x7881('0x54')]['id']){delete _0x36a607[_0x7881('0x54')]['id'];}return db[_0x7881('0x44')][_0x7881('0x4f')]({'where':{'id':_0x36a607[_0x7881('0x48')]['id']}})[_0x7881('0x25')](handleEntityNotFound(_0x27bbb1,null))[_0x7881('0x25')](saveUpdates(_0x36a607[_0x7881('0x54')],null))[_0x7881('0x25')](respondWithResult(_0x27bbb1,null))[_0x7881('0x49')](handleError(_0x27bbb1,null));};exports[_0x7881('0x24')]=function(_0x15a4b0,_0x58e211){return db[_0x7881('0x44')][_0x7881('0x4f')]({'where':{'id':_0x15a4b0[_0x7881('0x48')]['id']}})['then'](handleEntityNotFound(_0x58e211,null))[_0x7881('0x25')](removeEntity(_0x58e211,null))[_0x7881('0x49')](handleError(_0x58e211,null));};
\ No newline at end of file
+var _0x1ab7=['desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','end','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CmContactHasItems','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce'];(function(_0x6a850f,_0x4e026b){var _0x5370ac=function(_0xc5193a){while(--_0xc5193a){_0x6a850f['push'](_0x6a850f['shift']());}};_0x5370ac(++_0x4e026b);}(_0x1ab7,0x187));var _0x71ab=function(_0x2c1ad0,_0x5c2efb){_0x2c1ad0=_0x2c1ad0-0x0;var _0x22da92=_0x1ab7[_0x2c1ad0];return _0x22da92;};'use strict';var emlformat=require(_0x71ab('0x0'));var rimraf=require(_0x71ab('0x1'));var zipdir=require(_0x71ab('0x2'));var jsonpatch=require(_0x71ab('0x3'));var rp=require(_0x71ab('0x4'));var moment=require('moment');var BPromise=require(_0x71ab('0x5'));var Mustache=require(_0x71ab('0x6'));var util=require('util');var path=require(_0x71ab('0x7'));var sox=require('sox');var csv=require(_0x71ab('0x8'));var ejs=require(_0x71ab('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x71ab('0xa'));var squel=require(_0x71ab('0xb'));var crypto=require(_0x71ab('0xc'));var jsforce=require(_0x71ab('0xd'));var deskjs=require(_0x71ab('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x71ab('0xf'));var Redis=require(_0x71ab('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x71ab('0x11'));var hardwareService=require(_0x71ab('0x12'));var logger=require('../../config/logger')(_0x71ab('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x71ab('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x211621,_0x415d9e){_0x415d9e=_0x415d9e||0xcc;return function(_0x44900e){if(_0x44900e){return _0x211621[_0x71ab('0x15')](_0x415d9e);}return _0x211621[_0x71ab('0x16')](_0x415d9e)['end']();};}function respondWithResult(_0x195f74,_0xb10700){_0xb10700=_0xb10700||0xc8;return function(_0x3351c9){if(_0x3351c9){return _0x195f74[_0x71ab('0x16')](_0xb10700)[_0x71ab('0x17')](_0x3351c9);}};}function respondWithFilteredResult(_0x366d4e,_0x369565){return function(_0x4815fb){if(_0x4815fb){var _0x14830a=typeof _0x369565[_0x71ab('0x18')]===_0x71ab('0x19')&&typeof _0x369565[_0x71ab('0x1a')]===_0x71ab('0x19');var _0x48fbd7=_0x4815fb[_0x71ab('0x1b')];var _0x572722=_0x14830a?0x0:_0x369565[_0x71ab('0x18')];var _0x30a963=_0x14830a?_0x4815fb[_0x71ab('0x1b')]:_0x369565[_0x71ab('0x18')]+_0x369565[_0x71ab('0x1a')];var _0xa67a36;if(_0x30a963>=_0x48fbd7){_0x30a963=_0x48fbd7;_0xa67a36=0xc8;}else{_0xa67a36=0xce;}_0x366d4e['status'](_0xa67a36);return _0x366d4e[_0x71ab('0x1c')](_0x71ab('0x1d'),_0x572722+'-'+_0x30a963+'/'+_0x48fbd7)[_0x71ab('0x17')](_0x4815fb);}return null;};}function patchUpdates(_0x8a7556){return function(_0x1b1e31){try{jsonpatch[_0x71ab('0x1e')](_0x1b1e31,_0x8a7556,!![]);}catch(_0xc0fd31){return BPromise[_0x71ab('0x1f')](_0xc0fd31);}return _0x1b1e31[_0x71ab('0x20')]();};}function saveUpdates(_0x1d5c20,_0x25afd1){return function(_0x2b6a36){if(_0x2b6a36){return _0x2b6a36[_0x71ab('0x21')](_0x1d5c20)['then'](function(_0x5d3e3a){return _0x5d3e3a;});}return null;};}function removeEntity(_0x50cd51,_0x15ff7f){return function(_0x895535){if(_0x895535){return _0x895535[_0x71ab('0x22')]()[_0x71ab('0x23')](function(){var _0x1178c4=_0x895535[_0x71ab('0x24')]({'plain':!![]});var _0x338d78='CmContactHasItems';return db[_0x71ab('0x25')][_0x71ab('0x22')]({'where':{'type':_0x338d78,'resourceId':_0x1178c4['id']}})['then'](function(){return _0x895535;});})['then'](function(){_0x50cd51[_0x71ab('0x16')](0xcc)[_0x71ab('0x26')]();});}};}function handleEntityNotFound(_0x239893,_0x419fb6){return function(_0x12e801){if(!_0x12e801){_0x239893[_0x71ab('0x15')](0x194);}return _0x12e801;};}function handleError(_0xd74af,_0x1aa6ca){_0x1aa6ca=_0x1aa6ca||0x1f4;return function(_0x375a27){logger[_0x71ab('0x27')](_0x375a27[_0x71ab('0x28')]);if(_0x375a27[_0x71ab('0x29')]){delete _0x375a27['name'];}_0xd74af[_0x71ab('0x16')](_0x1aa6ca)[_0x71ab('0x2a')](_0x375a27);};}exports[_0x71ab('0x2b')]=function(_0x50d61d,_0x1213f1){var _0x4da0ee={},_0x4c231a={},_0x21f32d={'count':0x0,'rows':[]};var _0xb8d1ef=_[_0x71ab('0x2c')](db[_0x71ab('0x2d')][_0x71ab('0x2e')],function(_0x565dc9){return{'name':_0x565dc9[_0x71ab('0x2f')],'type':_0x565dc9['type'][_0x71ab('0x30')]};});_0x4c231a[_0x71ab('0x31')]=_['map'](_0xb8d1ef,_0x71ab('0x29'));_0x4c231a[_0x71ab('0x32')]=_[_0x71ab('0x33')](_0x50d61d[_0x71ab('0x32')]);_0x4c231a[_0x71ab('0x34')]=_['intersection'](_0x4c231a[_0x71ab('0x31')],_0x4c231a[_0x71ab('0x32')]);_0x4da0ee[_0x71ab('0x35')]=_[_0x71ab('0x36')](_0x4c231a['model'],qs[_0x71ab('0x37')](_0x50d61d[_0x71ab('0x32')]['fields']));_0x4da0ee[_0x71ab('0x35')]=_0x4da0ee[_0x71ab('0x35')]['length']?_0x4da0ee[_0x71ab('0x35')]:_0x4c231a[_0x71ab('0x31')];if(!_0x50d61d['query'][_0x71ab('0x38')](_0x71ab('0x39'))){_0x4da0ee[_0x71ab('0x1a')]=qs[_0x71ab('0x1a')](_0x50d61d[_0x71ab('0x32')][_0x71ab('0x1a')]);_0x4da0ee[_0x71ab('0x18')]=qs[_0x71ab('0x18')](_0x50d61d[_0x71ab('0x32')][_0x71ab('0x18')]);}_0x4da0ee[_0x71ab('0x3a')]=qs[_0x71ab('0x3b')](_0x50d61d[_0x71ab('0x32')][_0x71ab('0x3b')]);_0x4da0ee[_0x71ab('0x3c')]=qs['filters'](_['pick'](_0x50d61d[_0x71ab('0x32')],_0x4c231a['filters']),_0xb8d1ef);if(_0x50d61d['query'][_0x71ab('0x3d')]){_0x4da0ee['where']=_[_0x71ab('0x3e')](_0x4da0ee[_0x71ab('0x3c')],{'$or':_[_0x71ab('0x2c')](_0xb8d1ef,function(_0x45765e){if(_0x45765e[_0x71ab('0x3f')]!=='VIRTUAL'){var _0x393c27={};_0x393c27[_0x45765e[_0x71ab('0x29')]]={'$like':'%'+_0x50d61d['query'][_0x71ab('0x3d')]+'%'};return _0x393c27;}})});}_0x4da0ee=_[_0x71ab('0x3e')]({},_0x4da0ee,_0x50d61d[_0x71ab('0x40')]);var _0x37ae58={'where':_0x4da0ee['where']};return db[_0x71ab('0x2d')][_0x71ab('0x1b')](_0x37ae58)[_0x71ab('0x23')](function(_0x4c0510){_0x21f32d[_0x71ab('0x1b')]=_0x4c0510;if(_0x50d61d[_0x71ab('0x32')][_0x71ab('0x41')]){_0x4da0ee[_0x71ab('0x42')]=[{'all':!![]}];}return db[_0x71ab('0x2d')][_0x71ab('0x43')](_0x4da0ee);})[_0x71ab('0x23')](function(_0x3163c4){_0x21f32d[_0x71ab('0x44')]=_0x3163c4;return _0x21f32d;})[_0x71ab('0x23')](respondWithFilteredResult(_0x1213f1,_0x4da0ee))[_0x71ab('0x45')](handleError(_0x1213f1,null));};exports[_0x71ab('0x46')]=function(_0x1f9b51,_0xe9a8d8){var _0x3c6bd2={'raw':!![],'where':{'id':_0x1f9b51['params']['id']}},_0x192d79={};_0x192d79[_0x71ab('0x31')]=_[_0x71ab('0x33')](db[_0x71ab('0x2d')]['rawAttributes']);_0x192d79[_0x71ab('0x32')]=_[_0x71ab('0x33')](_0x1f9b51[_0x71ab('0x32')]);_0x192d79['filters']=_[_0x71ab('0x36')](_0x192d79[_0x71ab('0x31')],_0x192d79[_0x71ab('0x32')]);_0x3c6bd2[_0x71ab('0x35')]=_[_0x71ab('0x36')](_0x192d79[_0x71ab('0x31')],qs[_0x71ab('0x37')](_0x1f9b51[_0x71ab('0x32')][_0x71ab('0x37')]));_0x3c6bd2['attributes']=_0x3c6bd2[_0x71ab('0x35')]['length']?_0x3c6bd2[_0x71ab('0x35')]:_0x192d79[_0x71ab('0x31')];if(_0x1f9b51[_0x71ab('0x32')]['includeAll']){_0x3c6bd2[_0x71ab('0x42')]=[{'all':!![]}];}_0x3c6bd2=_['merge']({},_0x3c6bd2,_0x1f9b51[_0x71ab('0x40')]);return db[_0x71ab('0x2d')][_0x71ab('0x47')](_0x3c6bd2)[_0x71ab('0x23')](handleEntityNotFound(_0xe9a8d8,null))[_0x71ab('0x23')](respondWithResult(_0xe9a8d8,null))[_0x71ab('0x45')](handleError(_0xe9a8d8,null));};exports[_0x71ab('0x48')]=function(_0x37f7f1,_0x3a618c){return db['CmContactHasItem']['create'](_0x37f7f1[_0x71ab('0x49')],{})['then'](function(_0x3972d5){var _0x3e806f=_0x37f7f1[_0x71ab('0x4a')][_0x71ab('0x24')]({'plain':!![]});if(!_0x3e806f)throw new Error(_0x71ab('0x4b'));if(_0x3e806f[_0x71ab('0x4c')]==='user'){var _0x56c6a6=_0x3972d5['get']({'plain':!![]});var _0x6b6897=_0x71ab('0x4d');return db['UserProfileSection'][_0x71ab('0x47')]({'where':{'name':_0x6b6897,'userProfileId':_0x3e806f['userProfileId']},'raw':!![]})[_0x71ab('0x23')](function(_0x105554){if(_0x105554&&_0x105554[_0x71ab('0x4e')]===0x0){return db[_0x71ab('0x25')][_0x71ab('0x48')]({'name':_0x56c6a6[_0x71ab('0x29')],'resourceId':_0x56c6a6['id'],'type':_0x105554[_0x71ab('0x29')],'sectionId':_0x105554['id']},{})[_0x71ab('0x23')](function(){return _0x3972d5;});}else{return _0x3972d5;}})['catch'](function(_0x757eb0){logger['error'](_0x71ab('0x4f'),_0x757eb0);throw _0x757eb0;});}return _0x3972d5;})[_0x71ab('0x23')](respondWithResult(_0x3a618c,0xc9))[_0x71ab('0x45')](handleError(_0x3a618c,null));};exports['update']=function(_0x264267,_0x274851){if(_0x264267[_0x71ab('0x49')]['id']){delete _0x264267[_0x71ab('0x49')]['id'];}return db[_0x71ab('0x2d')][_0x71ab('0x47')]({'where':{'id':_0x264267[_0x71ab('0x50')]['id']}})[_0x71ab('0x23')](handleEntityNotFound(_0x274851,null))[_0x71ab('0x23')](saveUpdates(_0x264267[_0x71ab('0x49')],null))[_0x71ab('0x23')](respondWithResult(_0x274851,null))[_0x71ab('0x45')](handleError(_0x274851,null));};exports[_0x71ab('0x22')]=function(_0x5a484a,_0x5d7e36){return db[_0x71ab('0x2d')][_0x71ab('0x47')]({'where':{'id':_0x5a484a[_0x71ab('0x50')]['id']}})[_0x71ab('0x23')](handleEntityNotFound(_0x5d7e36,null))[_0x71ab('0x23')](removeEntity(_0x5d7e36,null))[_0x71ab('0x45')](handleError(_0x5d7e36,null));};
\ No newline at end of file
index 8b24017..ef20778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcff8=['exports','cm_contact_has_items','util','moment','bluebird','request-promise','path'];(function(_0x5bf6ba,_0x46543b){var _0x159e28=function(_0x50a324){while(--_0x50a324){_0x5bf6ba['push'](_0x5bf6ba['shift']());}};_0x159e28(++_0x46543b);}(_0xcff8,0x11a));var _0x8cff=function(_0x593980,_0x24e0d9){_0x593980=_0x593980-0x0;var _0x2f2d0a=_0xcff8[_0x593980];return _0x2f2d0a;};'use strict';var _=require('lodash');var util=require(_0x8cff('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x8cff('0x1'));var BPromise=require(_0x8cff('0x2'));var rp=require(_0x8cff('0x3'));var fs=require('fs');var path=require(_0x8cff('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmContactHasItem.attributes');module[_0x8cff('0x5')]=function(_0x420aeb,_0x2aa1a8){return _0x420aeb['define']('CmContactHasItem',attributes,{'tableName':_0x8cff('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd76b=['api','moment','bluebird','path','rimraf','exports','define','lodash','../../config/logger'];(function(_0xbf4ddf,_0x66b3cb){var _0x3cb273=function(_0x3cf903){while(--_0x3cf903){_0xbf4ddf['push'](_0xbf4ddf['shift']());}};_0x3cb273(++_0x66b3cb);}(_0xd76b,0x1c9));var _0xbd76=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xd76b[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0xbd76('0x0'));var util=require('util');var logger=require(_0xbd76('0x1'))(_0xbd76('0x2'));var moment=require(_0xbd76('0x3'));var BPromise=require(_0xbd76('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbd76('0x5'));var rimraf=require(_0xbd76('0x6'));var config=require('../../config/environment');var attributes=require('./cmContactHasItem.attributes');module[_0xbd76('0x7')]=function(_0x3d0738,_0x525932){return _0x3d0738[_0xbd76('0x8')]('CmContactHasItem',attributes,{'tableName':'cm_contact_has_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 217cbec..3d2a19f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f8d=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb'];(function(_0x34a9c9,_0x435956){var _0x240f95=function(_0x4e0b45){while(--_0x4e0b45){_0x34a9c9['push'](_0x34a9c9['shift']());}};_0x240f95(++_0x435956);}(_0x8f8d,0x1b0));var _0xd8f8=function(_0x921bbb,_0x43bb09){_0x921bbb=_0x921bbb-0x0;var _0x5dc77b=_0x8f8d[_0x921bbb];return _0x5dc77b;};'use strict';var _=require(_0xd8f8('0x0'));var util=require(_0xd8f8('0x1'));var moment=require('moment');var BPromise=require(_0xd8f8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd8f8('0x3'));var db=require(_0xd8f8('0x4'))['db'];var utils=require(_0xd8f8('0x5'));var logger=require(_0xd8f8('0x6'))(_0xd8f8('0x7'));var config=require(_0xd8f8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd8f8('0x9')][_0xd8f8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x38078c,_0x4aaff7,_0x1261a8){return new BPromise(function(_0x55f24d,_0x5522b0){return client[_0xd8f8('0xb')](_0x38078c,_0x1261a8)[_0xd8f8('0xc')](function(_0x49ef65){logger[_0xd8f8('0xd')](_0xd8f8('0xe'),_0x4aaff7,_0xd8f8('0xf'));logger['debug'](_0xd8f8('0x10'),_0x4aaff7,'request\x20sent',JSON[_0xd8f8('0x11')](_0x49ef65));if(_0x49ef65[_0xd8f8('0x12')]){if(_0x49ef65[_0xd8f8('0x12')][_0xd8f8('0x13')]===0x1f4){logger[_0xd8f8('0x12')]('CmContactHasItem,\x20%s,\x20%s',_0x4aaff7,_0x49ef65[_0xd8f8('0x12')][_0xd8f8('0x14')]);return _0x5522b0(_0x49ef65[_0xd8f8('0x12')]['message']);}logger['error']('CmContactHasItem,\x20%s,\x20%s',_0x4aaff7,_0x49ef65[_0xd8f8('0x12')][_0xd8f8('0x14')]);return _0x55f24d(_0x49ef65['error'][_0xd8f8('0x14')]);}else{logger[_0xd8f8('0xd')]('CmContactHasItem,\x20%s,\x20%s',_0x4aaff7,_0xd8f8('0xf'));_0x55f24d(_0x49ef65[_0xd8f8('0x15')][_0xd8f8('0x14')]);}})[_0xd8f8('0x16')](function(_0x16de65){logger[_0xd8f8('0x12')](_0xd8f8('0xe'),_0x4aaff7,_0x16de65);_0x5522b0(_0x16de65);});});}
\ No newline at end of file
+var _0x436d=['info','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','CmContactHasItem,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x57f701,_0x5c1086){var _0x286201=function(_0x44ac20){while(--_0x44ac20){_0x57f701['push'](_0x57f701['shift']());}};_0x286201(++_0x5c1086);}(_0x436d,0x191));var _0xd436=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x436d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd436('0x0'));var util=require(_0xd436('0x1'));var moment=require(_0xd436('0x2'));var BPromise=require(_0xd436('0x3'));var rs=require(_0xd436('0x4'));var fs=require('fs');var Redis=require(_0xd436('0x5'));var db=require(_0xd436('0x6'))['db'];var utils=require(_0xd436('0x7'));var logger=require(_0xd436('0x8'))(_0xd436('0x9'));var config=require('../../config/environment');var jayson=require(_0xd436('0xa'));var client=jayson[_0xd436('0xb')][_0xd436('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x28f88c,_0x108440,_0x5144c6){return new BPromise(function(_0x5f04e0,_0x3fd135){return client[_0xd436('0xd')](_0x28f88c,_0x5144c6)[_0xd436('0xe')](function(_0x1c155e){logger[_0xd436('0xf')]('CmContactHasItem,\x20%s,\x20%s',_0x108440,_0xd436('0x10'));logger[_0xd436('0x11')](_0xd436('0x12'),_0x108440,_0xd436('0x10'),JSON[_0xd436('0x13')](_0x1c155e));if(_0x1c155e[_0xd436('0x14')]){if(_0x1c155e[_0xd436('0x14')][_0xd436('0x15')]===0x1f4){logger['error'](_0xd436('0x16'),_0x108440,_0x1c155e['error']['message']);return _0x3fd135(_0x1c155e[_0xd436('0x14')][_0xd436('0x17')]);}logger['error'](_0xd436('0x16'),_0x108440,_0x1c155e['error'][_0xd436('0x17')]);return _0x5f04e0(_0x1c155e[_0xd436('0x14')][_0xd436('0x17')]);}else{logger[_0xd436('0xf')](_0xd436('0x16'),_0x108440,_0xd436('0x10'));_0x5f04e0(_0x1c155e[_0xd436('0x18')][_0xd436('0x17')]);}})[_0xd436('0x19')](function(_0x56b269){logger[_0xd436('0x14')](_0xd436('0x16'),_0x108440,_0x56b269);_0x3fd135(_0x56b269);});});}
\ No newline at end of file
index 1c8af49..61d0a08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ca7=['/:id','isAuthenticated','post','put','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../config/environment','./cmContactHasItem.controller','index','get'];(function(_0x5c1b0c,_0x12cfba){var _0x268a79=function(_0x30af08){while(--_0x30af08){_0x5c1b0c['push'](_0x5c1b0c['shift']());}};_0x268a79(++_0x12cfba);}(_0x1ca7,0x157));var _0x71ca=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x1ca7[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x71ca('0x0'));var util=require(_0x71ca('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x71ca('0x2')]();var fs_extra=require(_0x71ca('0x3'));var auth=require(_0x71ca('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x71ca('0x5'));var controller=require(_0x71ca('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x71ca('0x7')]);router[_0x71ca('0x8')](_0x71ca('0x9'),auth[_0x71ca('0xa')](),controller['show']);router[_0x71ca('0xb')]('/',auth[_0x71ca('0xa')](),controller['create']);router[_0x71ca('0xc')](_0x71ca('0x9'),auth[_0x71ca('0xa')](),controller['update']);router[_0x71ca('0xd')](_0x71ca('0x9'),auth[_0x71ca('0xa')](),controller[_0x71ca('0xe')]);module[_0x71ca('0xf')]=router;
\ No newline at end of file
+var _0x317b=['./cmContactHasItem.controller','get','index','/:id','isAuthenticated','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x317b,0x96));var _0xb317=function(_0x562830,_0x16d702){_0x562830=_0x562830-0x0;var _0x193066=_0x317b[_0x562830];return _0x193066;};'use strict';var multer=require(_0xb317('0x0'));var util=require(_0xb317('0x1'));var path=require(_0xb317('0x2'));var timeout=require(_0xb317('0x3'));var express=require(_0xb317('0x4'));var router=express[_0xb317('0x5')]();var fs_extra=require(_0xb317('0x6'));var auth=require(_0xb317('0x7'));var interaction=require(_0xb317('0x8'));var config=require(_0xb317('0x9'));var controller=require(_0xb317('0xa'));router[_0xb317('0xb')]('/',auth['isAuthenticated'](),controller[_0xb317('0xc')]);router[_0xb317('0xb')](_0xb317('0xd'),auth[_0xb317('0xe')](),controller['show']);router['post']('/',auth[_0xb317('0xe')](),controller[_0xb317('0xf')]);router[_0xb317('0x10')]('/:id',auth[_0xb317('0xe')](),controller[_0xb317('0x11')]);router[_0xb317('0x12')]('/:id',auth[_0xb317('0xe')](),controller['destroy']);module[_0xb317('0x13')]=router;
\ No newline at end of file
index ff1c772..a5c8878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ebc=['name','TEXT','long','type','select','parse','values','stringify','BOOLEAN','ENUM','voice','VIRTUAL','getDataValue','alias','STRING','setDataValue'];(function(_0x1a3684,_0x2d6bfd){var _0x2e98a7=function(_0x53f762){while(--_0x53f762){_0x1a3684['push'](_0x1a3684['shift']());}};_0x2e98a7(++_0x2d6bfd);}(_0x8ebc,0xfb));var _0xc8eb=function(_0x8666ec,_0x34fb14){_0x8666ec=_0x8666ec-0x0;var _0x496fe8=_0x8ebc[_0x8666ec];return _0x496fe8;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0xc8eb('0x0')],'get':function(_0x351941){return this[_0xc8eb('0x1')](_0xc8eb('0x2'));}},'alias':{'type':Sequelize[_0xc8eb('0x3')],'allowNull':![],'set':function(_0x58aa8d){this[_0xc8eb('0x4')](_0xc8eb('0x2'),_0x58aa8d?_0x58aa8d:this[_0xc8eb('0x1')](_0xc8eb('0x5')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0xc8eb('0x6')](_0xc8eb('0x7')),'get':function(){if(this[_0xc8eb('0x1')](_0xc8eb('0x8'))===_0xc8eb('0x9')){return JSON[_0xc8eb('0xa')](this[_0xc8eb('0x1')](_0xc8eb('0xb')));}else{return this['getDataValue'](_0xc8eb('0xb'));}},'set':function(_0x155c93){if(Array['isArray'](_0x155c93)){this['setDataValue'](_0xc8eb('0xb'),JSON[_0xc8eb('0xc')](_0x155c93));}else{this[_0xc8eb('0x4')](_0xc8eb('0xb'),_0x155c93);}}},'required':{'type':Sequelize[_0xc8eb('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xc8eb('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xc8eb('0xe')](_0xc8eb('0xf'))}};
\ No newline at end of file
+var _0x140b=['STRING','setDataValue','name','long','type','select','parse','values','isArray','stringify','voice','sequelize','lodash','VIRTUAL','getDataValue','alias'];(function(_0x5e2619,_0x2fdc1a){var _0x5c1768=function(_0x28f9c4){while(--_0x28f9c4){_0x5e2619['push'](_0x5e2619['shift']());}};_0x5c1768(++_0x2fdc1a);}(_0x140b,0x1bb));var _0xb140=function(_0x1f49ca,_0x1e68c8){_0x1f49ca=_0x1f49ca-0x0;var _0x599f1d=_0x140b[_0x1f49ca];return _0x599f1d;};'use strict';var Sequelize=require(_0xb140('0x0'));var _=require(_0xb140('0x1'));module['exports']={'name':{'type':Sequelize[_0xb140('0x2')],'get':function(_0x170b6a){return this[_0xb140('0x3')](_0xb140('0x4'));}},'alias':{'type':Sequelize[_0xb140('0x5')],'allowNull':![],'set':function(_0x321e79){this[_0xb140('0x6')](_0xb140('0x4'),_0x321e79?_0x321e79:this[_0xb140('0x3')](_0xb140('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0xb140('0x8')),'get':function(){if(this[_0xb140('0x3')](_0xb140('0x9'))===_0xb140('0xa')){return JSON[_0xb140('0xb')](this['getDataValue'](_0xb140('0xc')));}else{return this[_0xb140('0x3')](_0xb140('0xc'));}},'set':function(_0x1304bd){if(Array[_0xb140('0xd')](_0x1304bd)){this[_0xb140('0x6')](_0xb140('0xc'),JSON[_0xb140('0xe')](_0x1304bd));}else{this[_0xb140('0x6')](_0xb140('0xc'),_0x1304bd);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xb140('0xf'))}};
\ No newline at end of file
index fb5aaaf..4d7c9d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5244=['to-csv','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','type','key','model','differenceBy','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','create','Sequelize','TEXT','text','number','switch','sequelize','cm_contacts','cf_%d','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x3026d5,_0x1dc6ef){var _0x409bea=function(_0x501d4c){while(--_0x501d4c){_0x3026d5['push'](_0x3026d5['shift']());}};_0x409bea(++_0x1dc6ef);}(_0x5244,0x1a2));var _0x4524=function(_0x312037,_0x9dd792){_0x312037=_0x312037-0x0;var _0x4e008d=_0x5244[_0x312037];return _0x4e008d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4524('0x0'));var zipdir=require(_0x4524('0x1'));var jsonpatch=require(_0x4524('0x2'));var rp=require('request-promise');var moment=require(_0x4524('0x3'));var BPromise=require(_0x4524('0x4'));var Mustache=require(_0x4524('0x5'));var util=require(_0x4524('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4524('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4524('0x8'));var _=require(_0x4524('0x9'));var squel=require(_0x4524('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4524('0x7'));var querystring=require(_0x4524('0xb'));var Papa=require(_0x4524('0xc'));var Redis=require(_0x4524('0xd'));var authService=require(_0x4524('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x4524('0xf'));var hardwareService=require(_0x4524('0x10'));var logger=require(_0x4524('0x11'))(_0x4524('0x12'));var utils=require(_0x4524('0x13'));var config=require(_0x4524('0x14'));var licenseUtil=require(_0x4524('0x15'));var db=require(_0x4524('0x16'))['db'];function respondWithStatusCode(_0x47e3c9,_0x447ff8){_0x447ff8=_0x447ff8||0xcc;return function(_0x5220c6){if(_0x5220c6){return _0x47e3c9[_0x4524('0x17')](_0x447ff8);}return _0x47e3c9[_0x4524('0x18')](_0x447ff8)[_0x4524('0x19')]();};}function respondWithResult(_0x3de096,_0xeeee92){_0xeeee92=_0xeeee92||0xc8;return function(_0x1d75a7){if(_0x1d75a7){return _0x3de096[_0x4524('0x18')](_0xeeee92)[_0x4524('0x1a')](_0x1d75a7);}};}function respondWithFilteredResult(_0x2307fc,_0x2e60c1){return function(_0x327686){if(_0x327686){var _0x26418b=typeof _0x2e60c1['offset']===_0x4524('0x1b')&&typeof _0x2e60c1['limit']===_0x4524('0x1b');var _0x5a5fa5=_0x327686[_0x4524('0x1c')];var _0xd135dc=_0x26418b?0x0:_0x2e60c1[_0x4524('0x1d')];var _0x4b7fed=_0x26418b?_0x327686['count']:_0x2e60c1[_0x4524('0x1d')]+_0x2e60c1[_0x4524('0x1e')];var _0xf9da74;if(_0x4b7fed>=_0x5a5fa5){_0x4b7fed=_0x5a5fa5;_0xf9da74=0xc8;}else{_0xf9da74=0xce;}_0x2307fc[_0x4524('0x18')](_0xf9da74);return _0x2307fc[_0x4524('0x1f')](_0x4524('0x20'),_0xd135dc+'-'+_0x4b7fed+'/'+_0x5a5fa5)['json'](_0x327686);}return null;};}function patchUpdates(_0x23ccd3){return function(_0xf979a4){try{jsonpatch[_0x4524('0x21')](_0xf979a4,_0x23ccd3,!![]);}catch(_0xf439e9){return BPromise[_0x4524('0x22')](_0xf439e9);}return _0xf979a4['save']();};}function saveUpdates(_0x43a3e1,_0x2e8c59){return function(_0x3e82b8){if(_0x3e82b8){return _0x3e82b8[_0x4524('0x23')](_0x43a3e1)[_0x4524('0x24')](function(_0xeb2966){return _0xeb2966;});}return null;};}function removeEntity(_0x182e34,_0x203590){return function(_0x335aac){if(_0x335aac){return _0x335aac[_0x4524('0x25')]()[_0x4524('0x24')](function(){_0x182e34[_0x4524('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x480571,_0x1a2c18){return function(_0x524e9b){if(!_0x524e9b){_0x480571[_0x4524('0x17')](0x194);}return _0x524e9b;};}function handleError(_0x5f04d0,_0x5b2827){_0x5b2827=_0x5b2827||0x1f4;return function(_0x8b7e75){logger[_0x4524('0x26')](_0x8b7e75[_0x4524('0x27')]);if(_0x8b7e75[_0x4524('0x28')]){delete _0x8b7e75[_0x4524('0x28')];}_0x5f04d0[_0x4524('0x18')](_0x5b2827)[_0x4524('0x29')](_0x8b7e75);};}exports[_0x4524('0x2a')]=function(_0x288679,_0xb7c194){var _0x395073={},_0xa9ed91={},_0x2002c8={'count':0x0,'rows':[]};var _0x2e832c=_[_0x4524('0x2b')](db[_0x4524('0x2c')][_0x4524('0x2d')],function(_0x501e20){return{'name':_0x501e20['fieldName'],'type':_0x501e20[_0x4524('0x2e')][_0x4524('0x2f')]};});_0xa9ed91[_0x4524('0x30')]=_[_0x4524('0x31')](_[_0x4524('0x2b')](_0x2e832c,_0x4524('0x28')),[_0x4524('0x28')]);_0xa9ed91['query']=_[_0x4524('0x32')](_0x288679[_0x4524('0x33')]);_0xa9ed91[_0x4524('0x34')]=_[_0x4524('0x35')](_0xa9ed91[_0x4524('0x30')],_0xa9ed91[_0x4524('0x33')]);_0x395073[_0x4524('0x36')]=_[_0x4524('0x35')](_0xa9ed91[_0x4524('0x30')],qs[_0x4524('0x37')](_0x288679['query'][_0x4524('0x37')]));_0x395073[_0x4524('0x36')]=_0x395073[_0x4524('0x36')][_0x4524('0x38')]?_0x395073['attributes']:_0xa9ed91[_0x4524('0x30')];if(!_0x288679['query'][_0x4524('0x39')](_0x4524('0x3a'))){_0x395073[_0x4524('0x1e')]=qs['limit'](_0x288679['query']['limit']);_0x395073[_0x4524('0x1d')]=qs['offset'](_0x288679[_0x4524('0x33')][_0x4524('0x1d')]);}_0x395073[_0x4524('0x3b')]=qs[_0x4524('0x3c')](_0x288679[_0x4524('0x33')]['sort']);_0x395073[_0x4524('0x3d')]=qs['filters'](_[_0x4524('0x3e')](_0x288679[_0x4524('0x33')],_0xa9ed91['filters']),_0x2e832c);if(_0x288679[_0x4524('0x33')][_0x4524('0x3f')]){_0x395073['where']=_[_0x4524('0x40')](_0x395073[_0x4524('0x3d')],{'$or':_[_0x4524('0x2b')](_0x2e832c,function(_0x1d454d){if(_0x1d454d['type']!==_0x4524('0x41')){var _0x3db9b6={};_0x3db9b6[_0x1d454d['name']]={'$like':'%'+_0x288679[_0x4524('0x33')]['filter']+'%'};return _0x3db9b6;}})});}_0x395073=_['merge']({},_0x395073,_0x288679[_0x4524('0x42')]);var _0x1eff31={'where':_0x395073[_0x4524('0x3d')]};return db[_0x4524('0x2c')][_0x4524('0x1c')](_0x1eff31)['then'](function(_0x319f6f){_0x2002c8[_0x4524('0x1c')]=_0x319f6f;if(_0x288679[_0x4524('0x33')][_0x4524('0x43')]){_0x395073[_0x4524('0x44')]=[{'all':!![]}];}return db[_0x4524('0x2c')][_0x4524('0x45')](_0x395073);})['then'](function(_0x3ca81d){_0x2002c8[_0x4524('0x46')]=_0x3ca81d;return _0x2002c8;})[_0x4524('0x24')](respondWithFilteredResult(_0xb7c194,_0x395073))[_0x4524('0x47')](handleError(_0xb7c194,null));};exports[_0x4524('0x48')]=function(_0x1d19fb,_0x584ea0){var _0x7cb7ba={'raw':!![],'where':{'id':_0x1d19fb[_0x4524('0x49')]['id']}},_0x210589={};_0x210589['model']=_[_0x4524('0x32')](db[_0x4524('0x2c')][_0x4524('0x2d')]);_0x210589['query']=_['keys'](_0x1d19fb[_0x4524('0x33')]);_0x210589['filters']=_['intersection'](_0x210589[_0x4524('0x30')],_0x210589[_0x4524('0x33')]);_0x7cb7ba['attributes']=_[_0x4524('0x35')](_0x210589[_0x4524('0x30')],qs[_0x4524('0x37')](_0x1d19fb[_0x4524('0x33')][_0x4524('0x37')]));_0x7cb7ba[_0x4524('0x36')]=_0x7cb7ba[_0x4524('0x36')][_0x4524('0x38')]?_0x7cb7ba[_0x4524('0x36')]:_0x210589[_0x4524('0x30')];if(_0x1d19fb['query'][_0x4524('0x43')]){_0x7cb7ba[_0x4524('0x44')]=[{'all':!![]}];}_0x7cb7ba=_[_0x4524('0x40')]({},_0x7cb7ba,_0x1d19fb['options']);return db[_0x4524('0x2c')][_0x4524('0x4a')](_0x7cb7ba)[_0x4524('0x24')](handleEntityNotFound(_0x584ea0,null))['then'](respondWithResult(_0x584ea0,null))['catch'](handleError(_0x584ea0,null));};exports[_0x4524('0x23')]=function(_0x365b83,_0x58bd1d){if(_0x365b83[_0x4524('0x4b')]['id']){delete _0x365b83[_0x4524('0x4b')]['id'];}return db[_0x4524('0x2c')][_0x4524('0x4a')]({'where':{'id':_0x365b83[_0x4524('0x49')]['id']}})[_0x4524('0x24')](handleEntityNotFound(_0x58bd1d,null))[_0x4524('0x24')](saveUpdates(_0x365b83[_0x4524('0x4b')],null))[_0x4524('0x24')](respondWithResult(_0x58bd1d,null))[_0x4524('0x47')](handleError(_0x58bd1d,null));};exports['destroy']=function(_0xc2225c,_0x3eb4de){return db['CmCustomField'][_0x4524('0x4a')]({'where':{'id':_0xc2225c[_0x4524('0x49')]['id']}})[_0x4524('0x24')](handleEntityNotFound(_0x3eb4de,null))[_0x4524('0x24')](removeEntity(_0x3eb4de,null))[_0x4524('0x47')](handleError(_0x3eb4de,null));};exports[_0x4524('0x4c')]=function(_0x3e4c7c,_0xe65fc2){var _0x5d598e;return db['sequelize']['transaction'](function(_0x4b76ac){return db[_0x4524('0x2c')]['create'](_0x3e4c7c[_0x4524('0x4b')],{'transaction':_0x4b76ac})['then'](function(_0x26c49b){_0x5d598e=_0x26c49b;var _0x27b9ad={'type':db[_0x4524('0x4d')][_0x4524('0x4e')],'transaction':_0x4b76ac};switch(_0x3e4c7c[_0x4524('0x4b')][_0x4524('0x2e')]){case _0x4524('0x4f'):_0x27b9ad['type']=db[_0x4524('0x4d')]['TEXT'];break;case _0x4524('0x50'):_0x27b9ad[_0x4524('0x2e')]=db['Sequelize']['INTEGER'];break;case _0x4524('0x51'):_0x27b9ad[_0x4524('0x2e')]=db['Sequelize']['BOOLEAN'];_0x27b9ad['defaultValue']=![];break;default:}return db[_0x4524('0x52')]['queryInterface']['addColumn'](_0x4524('0x53'),util['format'](_0x4524('0x54'),_0x5d598e['id']),_0x27b9ad);})[_0x4524('0x24')](function(){return _0x5d598e;});})[_0x4524('0x24')](respondWithResult(_0xe65fc2,0xc9))[_0x4524('0x47')](handleError(_0xe65fc2,null));};
\ No newline at end of file
+var _0xcfcd=['filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','show','params','length','include','find','catch','body','destroy','create','sequelize','transaction','Sequelize','TEXT','text','INTEGER','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','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','offset','count','set','Content-Range','reject','then','error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','query','keys'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xcfcd,0x134));var _0xdcfc=function(_0x1b42f2,_0x5b0c12){_0x1b42f2=_0x1b42f2-0x0;var _0x477f19=_0xcfcd[_0x1b42f2];return _0x477f19;};'use strict';var emlformat=require(_0xdcfc('0x0'));var rimraf=require(_0xdcfc('0x1'));var zipdir=require(_0xdcfc('0x2'));var jsonpatch=require(_0xdcfc('0x3'));var rp=require(_0xdcfc('0x4'));var moment=require(_0xdcfc('0x5'));var BPromise=require(_0xdcfc('0x6'));var Mustache=require('mustache');var util=require(_0xdcfc('0x7'));var path=require(_0xdcfc('0x8'));var sox=require('sox');var csv=require(_0xdcfc('0x9'));var ejs=require(_0xdcfc('0xa'));var fs=require('fs');var fs_extra=require(_0xdcfc('0xb'));var _=require(_0xdcfc('0xc'));var squel=require('squel');var crypto=require(_0xdcfc('0xd'));var jsforce=require(_0xdcfc('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xdcfc('0x9'));var querystring=require(_0xdcfc('0xf'));var Papa=require(_0xdcfc('0x10'));var Redis=require(_0xdcfc('0x11'));var authService=require(_0xdcfc('0x12'));var qs=require(_0xdcfc('0x13'));var as=require(_0xdcfc('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdcfc('0x15'))(_0xdcfc('0x16'));var utils=require(_0xdcfc('0x17'));var config=require(_0xdcfc('0x18'));var licenseUtil=require(_0xdcfc('0x19'));var db=require(_0xdcfc('0x1a'))['db'];function respondWithStatusCode(_0x40d3e6,_0x4042bc){_0x4042bc=_0x4042bc||0xcc;return function(_0x46616a){if(_0x46616a){return _0x40d3e6[_0xdcfc('0x1b')](_0x4042bc);}return _0x40d3e6[_0xdcfc('0x1c')](_0x4042bc)[_0xdcfc('0x1d')]();};}function respondWithResult(_0x5b56b2,_0x10a69e){_0x10a69e=_0x10a69e||0xc8;return function(_0x22ce9e){if(_0x22ce9e){return _0x5b56b2[_0xdcfc('0x1c')](_0x10a69e)[_0xdcfc('0x1e')](_0x22ce9e);}};}function respondWithFilteredResult(_0x56f811,_0x10dbe8){return function(_0x5e7818){if(_0x5e7818){var _0x288d5b=typeof _0x10dbe8['offset']===_0xdcfc('0x1f')&&typeof _0x10dbe8[_0xdcfc('0x20')]==='undefined';var _0x186a6a=_0x5e7818['count'];var _0x46e0e8=_0x288d5b?0x0:_0x10dbe8[_0xdcfc('0x21')];var _0xcdc92c=_0x288d5b?_0x5e7818[_0xdcfc('0x22')]:_0x10dbe8[_0xdcfc('0x21')]+_0x10dbe8[_0xdcfc('0x20')];var _0x1d78df;if(_0xcdc92c>=_0x186a6a){_0xcdc92c=_0x186a6a;_0x1d78df=0xc8;}else{_0x1d78df=0xce;}_0x56f811[_0xdcfc('0x1c')](_0x1d78df);return _0x56f811[_0xdcfc('0x23')](_0xdcfc('0x24'),_0x46e0e8+'-'+_0xcdc92c+'/'+_0x186a6a)[_0xdcfc('0x1e')](_0x5e7818);}return null;};}function patchUpdates(_0x54a701){return function(_0x38ba89){try{jsonpatch['apply'](_0x38ba89,_0x54a701,!![]);}catch(_0x2e56a0){return BPromise[_0xdcfc('0x25')](_0x2e56a0);}return _0x38ba89['save']();};}function saveUpdates(_0x4acdc4,_0x3f63fa){return function(_0x27f6c0){if(_0x27f6c0){return _0x27f6c0['update'](_0x4acdc4)['then'](function(_0x5bf2c6){return _0x5bf2c6;});}return null;};}function removeEntity(_0x50a2e4,_0x43c7eb){return function(_0xb6a745){if(_0xb6a745){return _0xb6a745['destroy']()[_0xdcfc('0x26')](function(){_0x50a2e4[_0xdcfc('0x1c')](0xcc)[_0xdcfc('0x1d')]();});}};}function handleEntityNotFound(_0x5dfe54,_0x1ff92f){return function(_0x5cbf4a){if(!_0x5cbf4a){_0x5dfe54[_0xdcfc('0x1b')](0x194);}return _0x5cbf4a;};}function handleError(_0x22b097,_0xb11ead){_0xb11ead=_0xb11ead||0x1f4;return function(_0x233c32){logger[_0xdcfc('0x27')](_0x233c32[_0xdcfc('0x28')]);if(_0x233c32[_0xdcfc('0x29')]){delete _0x233c32[_0xdcfc('0x29')];}_0x22b097[_0xdcfc('0x1c')](_0xb11ead)[_0xdcfc('0x2a')](_0x233c32);};}exports[_0xdcfc('0x2b')]=function(_0x2df593,_0x5bc0b7){var _0x3ed361={},_0x36d146={},_0x5807a6={'count':0x0,'rows':[]};var _0x40b841=_[_0xdcfc('0x2c')](db[_0xdcfc('0x2d')][_0xdcfc('0x2e')],function(_0xf8a0fe){return{'name':_0xf8a0fe[_0xdcfc('0x2f')],'type':_0xf8a0fe[_0xdcfc('0x30')][_0xdcfc('0x31')]};});_0x36d146['model']=_['differenceBy'](_['map'](_0x40b841,_0xdcfc('0x29')),['name']);_0x36d146[_0xdcfc('0x32')]=_[_0xdcfc('0x33')](_0x2df593[_0xdcfc('0x32')]);_0x36d146[_0xdcfc('0x34')]=_[_0xdcfc('0x35')](_0x36d146[_0xdcfc('0x36')],_0x36d146[_0xdcfc('0x32')]);_0x3ed361[_0xdcfc('0x37')]=_[_0xdcfc('0x35')](_0x36d146[_0xdcfc('0x36')],qs[_0xdcfc('0x38')](_0x2df593['query'][_0xdcfc('0x38')]));_0x3ed361['attributes']=_0x3ed361[_0xdcfc('0x37')]['length']?_0x3ed361[_0xdcfc('0x37')]:_0x36d146['model'];if(!_0x2df593[_0xdcfc('0x32')][_0xdcfc('0x39')]('nolimit')){_0x3ed361[_0xdcfc('0x20')]=qs[_0xdcfc('0x20')](_0x2df593[_0xdcfc('0x32')][_0xdcfc('0x20')]);_0x3ed361[_0xdcfc('0x21')]=qs['offset'](_0x2df593['query'][_0xdcfc('0x21')]);}_0x3ed361[_0xdcfc('0x3a')]=qs[_0xdcfc('0x3b')](_0x2df593['query'][_0xdcfc('0x3b')]);_0x3ed361['where']=qs[_0xdcfc('0x34')](_[_0xdcfc('0x3c')](_0x2df593['query'],_0x36d146[_0xdcfc('0x34')]),_0x40b841);if(_0x2df593['query'][_0xdcfc('0x3d')]){_0x3ed361[_0xdcfc('0x3e')]=_['merge'](_0x3ed361[_0xdcfc('0x3e')],{'$or':_[_0xdcfc('0x2c')](_0x40b841,function(_0x587309){if(_0x587309['type']!==_0xdcfc('0x3f')){var _0x2f133a={};_0x2f133a[_0x587309[_0xdcfc('0x29')]]={'$like':'%'+_0x2df593['query'][_0xdcfc('0x3d')]+'%'};return _0x2f133a;}})});}_0x3ed361=_[_0xdcfc('0x40')]({},_0x3ed361,_0x2df593[_0xdcfc('0x41')]);var _0x3ea13d={'where':_0x3ed361[_0xdcfc('0x3e')]};return db[_0xdcfc('0x2d')][_0xdcfc('0x22')](_0x3ea13d)[_0xdcfc('0x26')](function(_0x41fdeb){_0x5807a6[_0xdcfc('0x22')]=_0x41fdeb;if(_0x2df593[_0xdcfc('0x32')][_0xdcfc('0x42')]){_0x3ed361['include']=[{'all':!![]}];}return db['CmCustomField'][_0xdcfc('0x43')](_0x3ed361);})[_0xdcfc('0x26')](function(_0x431fcc){_0x5807a6['rows']=_0x431fcc;return _0x5807a6;})[_0xdcfc('0x26')](respondWithFilteredResult(_0x5bc0b7,_0x3ed361))['catch'](handleError(_0x5bc0b7,null));};exports[_0xdcfc('0x44')]=function(_0x37485d,_0x446035){var _0x11782c={'raw':!![],'where':{'id':_0x37485d[_0xdcfc('0x45')]['id']}},_0x295200={};_0x295200['model']=_[_0xdcfc('0x33')](db[_0xdcfc('0x2d')][_0xdcfc('0x2e')]);_0x295200[_0xdcfc('0x32')]=_[_0xdcfc('0x33')](_0x37485d[_0xdcfc('0x32')]);_0x295200[_0xdcfc('0x34')]=_[_0xdcfc('0x35')](_0x295200[_0xdcfc('0x36')],_0x295200[_0xdcfc('0x32')]);_0x11782c[_0xdcfc('0x37')]=_[_0xdcfc('0x35')](_0x295200[_0xdcfc('0x36')],qs['fields'](_0x37485d[_0xdcfc('0x32')]['fields']));_0x11782c[_0xdcfc('0x37')]=_0x11782c['attributes'][_0xdcfc('0x46')]?_0x11782c[_0xdcfc('0x37')]:_0x295200[_0xdcfc('0x36')];if(_0x37485d['query']['includeAll']){_0x11782c[_0xdcfc('0x47')]=[{'all':!![]}];}_0x11782c=_[_0xdcfc('0x40')]({},_0x11782c,_0x37485d[_0xdcfc('0x41')]);return db['CmCustomField'][_0xdcfc('0x48')](_0x11782c)[_0xdcfc('0x26')](handleEntityNotFound(_0x446035,null))[_0xdcfc('0x26')](respondWithResult(_0x446035,null))[_0xdcfc('0x49')](handleError(_0x446035,null));};exports['update']=function(_0x3e456c,_0x16b466){if(_0x3e456c[_0xdcfc('0x4a')]['id']){delete _0x3e456c['body']['id'];}return db[_0xdcfc('0x2d')][_0xdcfc('0x48')]({'where':{'id':_0x3e456c[_0xdcfc('0x45')]['id']}})['then'](handleEntityNotFound(_0x16b466,null))[_0xdcfc('0x26')](saveUpdates(_0x3e456c[_0xdcfc('0x4a')],null))[_0xdcfc('0x26')](respondWithResult(_0x16b466,null))[_0xdcfc('0x49')](handleError(_0x16b466,null));};exports[_0xdcfc('0x4b')]=function(_0x5e9234,_0x56fe74){return db[_0xdcfc('0x2d')][_0xdcfc('0x48')]({'where':{'id':_0x5e9234[_0xdcfc('0x45')]['id']}})[_0xdcfc('0x26')](handleEntityNotFound(_0x56fe74,null))['then'](removeEntity(_0x56fe74,null))['catch'](handleError(_0x56fe74,null));};exports[_0xdcfc('0x4c')]=function(_0x450aa7,_0x32a2a8){var _0x50b3ff;return db[_0xdcfc('0x4d')][_0xdcfc('0x4e')](function(_0x51bc9f){return db['CmCustomField']['create'](_0x450aa7['body'],{'transaction':_0x51bc9f})[_0xdcfc('0x26')](function(_0xd5c48){_0x50b3ff=_0xd5c48;var _0x11383d={'type':db[_0xdcfc('0x4f')][_0xdcfc('0x50')],'transaction':_0x51bc9f};switch(_0x450aa7['body']['type']){case _0xdcfc('0x51'):_0x11383d[_0xdcfc('0x30')]=db['Sequelize']['TEXT'];break;case'number':_0x11383d[_0xdcfc('0x30')]=db[_0xdcfc('0x4f')][_0xdcfc('0x52')];break;case _0xdcfc('0x53'):_0x11383d['type']=db['Sequelize'][_0xdcfc('0x54')];_0x11383d[_0xdcfc('0x55')]=![];break;default:}return db[_0xdcfc('0x4d')]['queryInterface'][_0xdcfc('0x56')](_0xdcfc('0x57'),util[_0xdcfc('0x58')](_0xdcfc('0x59'),_0x50b3ff['id']),_0x11383d);})[_0xdcfc('0x26')](function(){return _0x50b3ff;});})[_0xdcfc('0x26')](respondWithResult(_0x32a2a8,0xc9))['catch'](handleError(_0x32a2a8,null));};
\ No newline at end of file
index cf4b003..f5d236a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00de=['CmCustomField','cm_custom_fields','../../config/logger','bluebird','request-promise','path','../../config/environment','./cmCustomField.attributes','exports','define'];(function(_0x3a91ba,_0x3707a9){var _0x490ac9=function(_0x4aff39){while(--_0x4aff39){_0x3a91ba['push'](_0x3a91ba['shift']());}};_0x490ac9(++_0x3707a9);}(_0x00de,0x1ec));var _0xe00d=function(_0x40b3f2,_0x2c4f5f){_0x40b3f2=_0x40b3f2-0x0;var _0x4ce90c=_0x00de[_0x40b3f2];return _0x4ce90c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe00d('0x0'))('api');var moment=require('moment');var BPromise=require(_0xe00d('0x1'));var rp=require(_0xe00d('0x2'));var fs=require('fs');var path=require(_0xe00d('0x3'));var rimraf=require('rimraf');var config=require(_0xe00d('0x4'));var attributes=require(_0xe00d('0x5'));module[_0xe00d('0x6')]=function(_0x1c0605,_0x218b7d){return _0x1c0605[_0xe00d('0x7')](_0xe00d('0x8'),attributes,{'tableName':_0xe00d('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x68c1=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCustomField.attributes','cm_custom_fields','lodash','../../config/logger','api'];(function(_0x26d347,_0x3154d2){var _0x5abd62=function(_0x333a07){while(--_0x333a07){_0x26d347['push'](_0x26d347['shift']());}};_0x5abd62(++_0x3154d2);}(_0x68c1,0x1d6));var _0x168c=function(_0x6243bb,_0x269bd7){_0x6243bb=_0x6243bb-0x0;var _0x16ef17=_0x68c1[_0x6243bb];return _0x16ef17;};'use strict';var _=require(_0x168c('0x0'));var util=require('util');var logger=require(_0x168c('0x1'))(_0x168c('0x2'));var moment=require(_0x168c('0x3'));var BPromise=require(_0x168c('0x4'));var rp=require(_0x168c('0x5'));var fs=require('fs');var path=require(_0x168c('0x6'));var rimraf=require(_0x168c('0x7'));var config=require(_0x168c('0x8'));var attributes=require(_0x168c('0x9'));module['exports']=function(_0x3be881,_0x3a4a66){return _0x3be881['define']('CmCustomField',attributes,{'tableName':_0x168c('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3dfa1d2..f75f0b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf745=['http','request','then','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','CmCustomField,\x20%s,\x20%s','message','result','util','moment','bluebird','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x4941d4,_0x575995){var _0x2ec911=function(_0x11afae){while(--_0x11afae){_0x4941d4['push'](_0x4941d4['shift']());}};_0x2ec911(++_0x575995);}(_0xf745,0x19c));var _0x5f74=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xf745[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var util=require(_0x5f74('0x0'));var moment=require(_0x5f74('0x1'));var BPromise=require(_0x5f74('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f74('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x5f74('0x4'))('rpc');var config=require(_0x5f74('0x5'));var jayson=require(_0x5f74('0x6'));var client=jayson[_0x5f74('0x7')][_0x5f74('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x317b74,_0x2ad331,_0xab798b){return new BPromise(function(_0x176114,_0x56d4f3){return client[_0x5f74('0x9')](_0x317b74,_0xab798b)[_0x5f74('0xa')](function(_0x2dfde9){logger['info']('CmCustomField,\x20%s,\x20%s',_0x2ad331,_0x5f74('0xb'));logger[_0x5f74('0xc')](_0x5f74('0xd'),_0x2ad331,_0x5f74('0xb'),JSON[_0x5f74('0xe')](_0x2dfde9));if(_0x2dfde9[_0x5f74('0xf')]){if(_0x2dfde9[_0x5f74('0xf')][_0x5f74('0x10')]===0x1f4){logger[_0x5f74('0xf')](_0x5f74('0x11'),_0x2ad331,_0x2dfde9['error'][_0x5f74('0x12')]);return _0x56d4f3(_0x2dfde9[_0x5f74('0xf')]['message']);}logger['error'](_0x5f74('0x11'),_0x2ad331,_0x2dfde9[_0x5f74('0xf')][_0x5f74('0x12')]);return _0x176114(_0x2dfde9['error'][_0x5f74('0x12')]);}else{logger['info']('CmCustomField,\x20%s,\x20%s',_0x2ad331,'request\x20sent');_0x176114(_0x2dfde9[_0x5f74('0x13')]['message']);}})['catch'](function(_0x51003d){logger['error']('CmCustomField,\x20%s,\x20%s',_0x2ad331,_0x51003d);_0x56d4f3(_0x51003d);});});}
\ No newline at end of file
+var _0x3054=['http','request','then','CmCustomField,\x20%s,\x20%s','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client'];(function(_0x211f66,_0x6d409f){var _0x324240=function(_0x5b0c0e){while(--_0x5b0c0e){_0x211f66['push'](_0x211f66['shift']());}};_0x324240(++_0x6d409f);}(_0x3054,0xac));var _0x4305=function(_0x33d98b,_0xdb372c){_0x33d98b=_0x33d98b-0x0;var _0x16ecf6=_0x3054[_0x33d98b];return _0x16ecf6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4305('0x0'));var BPromise=require(_0x4305('0x1'));var rs=require(_0x4305('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4305('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x4305('0x4'))(_0x4305('0x5'));var config=require('../../config/environment');var jayson=require(_0x4305('0x6'));var client=jayson[_0x4305('0x7')][_0x4305('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3782cf,_0x5ea4be,_0x111844){return new BPromise(function(_0x238206,_0x5400a1){return client[_0x4305('0x9')](_0x3782cf,_0x111844)[_0x4305('0xa')](function(_0x22a9c6){logger['info'](_0x4305('0xb'),_0x5ea4be,_0x4305('0xc'));logger['debug'](_0x4305('0xd'),_0x5ea4be,'request\x20sent',JSON[_0x4305('0xe')](_0x22a9c6));if(_0x22a9c6['error']){if(_0x22a9c6[_0x4305('0xf')][_0x4305('0x10')]===0x1f4){logger['error'](_0x4305('0xb'),_0x5ea4be,_0x22a9c6['error'][_0x4305('0x11')]);return _0x5400a1(_0x22a9c6['error'][_0x4305('0x11')]);}logger[_0x4305('0xf')](_0x4305('0xb'),_0x5ea4be,_0x22a9c6[_0x4305('0xf')]['message']);return _0x238206(_0x22a9c6['error']['message']);}else{logger['info'](_0x4305('0xb'),_0x5ea4be,_0x4305('0xc'));_0x238206(_0x22a9c6[_0x4305('0x12')][_0x4305('0x11')]);}})[_0x4305('0x13')](function(_0x4c00d6){logger['error'](_0x4305('0xb'),_0x5ea4be,_0x4c00d6);_0x5400a1(_0x4c00d6);});});}
\ No newline at end of file
index 5fdfeb0..73d410a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1696=['get','/:id','show','post','create','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','isAuthenticated','index'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1696,0x79));var _0x6169=function(_0x3495f0,_0x215b4c){_0x3495f0=_0x3495f0-0x0;var _0x374d7d=_0x1696[_0x3495f0];return _0x374d7d;};'use strict';var multer=require(_0x6169('0x0'));var util=require('util');var path=require(_0x6169('0x1'));var timeout=require(_0x6169('0x2'));var express=require(_0x6169('0x3'));var router=express[_0x6169('0x4')]();var fs_extra=require(_0x6169('0x5'));var auth=require(_0x6169('0x6'));var interaction=require(_0x6169('0x7'));var config=require(_0x6169('0x8'));var controller=require(_0x6169('0x9'));router['get']('/',auth[_0x6169('0xa')](),controller[_0x6169('0xb')]);router[_0x6169('0xc')](_0x6169('0xd'),auth[_0x6169('0xa')](),controller[_0x6169('0xe')]);router[_0x6169('0xf')]('/',auth['isAuthenticated'](),controller[_0x6169('0x10')]);router['put'](_0x6169('0xd'),auth[_0x6169('0xa')](),controller['update']);router[_0x6169('0x11')](_0x6169('0xd'),auth[_0x6169('0xa')](),controller[_0x6169('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xcbef=['delete','destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update'];(function(_0x4fcecc,_0x9d68b2){var _0x36e629=function(_0x3ebe4c){while(--_0x3ebe4c){_0x4fcecc['push'](_0x4fcecc['shift']());}};_0x36e629(++_0x9d68b2);}(_0xcbef,0x11a));var _0xfcbe=function(_0x588cf2,_0x2e250a){_0x588cf2=_0x588cf2-0x0;var _0x437057=_0xcbef[_0x588cf2];return _0x437057;};'use strict';var multer=require('multer');var util=require(_0xfcbe('0x0'));var path=require(_0xfcbe('0x1'));var timeout=require('connect-timeout');var express=require(_0xfcbe('0x2'));var router=express[_0xfcbe('0x3')]();var fs_extra=require(_0xfcbe('0x4'));var auth=require(_0xfcbe('0x5'));var interaction=require(_0xfcbe('0x6'));var config=require(_0xfcbe('0x7'));var controller=require(_0xfcbe('0x8'));router['get']('/',auth[_0xfcbe('0x9')](),controller[_0xfcbe('0xa')]);router[_0xfcbe('0xb')](_0xfcbe('0xc'),auth[_0xfcbe('0x9')](),controller[_0xfcbe('0xd')]);router[_0xfcbe('0xe')]('/',auth[_0xfcbe('0x9')](),controller[_0xfcbe('0xf')]);router[_0xfcbe('0x10')]('/:id',auth[_0xfcbe('0x9')](),controller[_0xfcbe('0x11')]);router[_0xfcbe('0x12')]('/:id',auth[_0xfcbe('0x9')](),controller[_0xfcbe('0x13')]);module['exports']=router;
\ No newline at end of file
index 14ee084..025743a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf6=['YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','DATE','format'];(function(_0x2f5481,_0x5b3c1a){var _0x4d3629=function(_0x57e7bc){while(--_0x57e7bc){_0x2f5481['push'](_0x2f5481['shift']());}};_0x4d3629(++_0x5b3c1a);}(_0xddf6,0x1bd));var _0x6ddf=function(_0x59085f,_0x4c364f){_0x59085f=_0x59085f-0x0;var _0x594442=_0xddf6[_0x59085f];return _0x594442;};'use strict';var moment=require(_0x6ddf('0x0'));var Sequelize=require(_0x6ddf('0x1'));module[_0x6ddf('0x2')]={'phone':{'type':Sequelize[_0x6ddf('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x6ddf('0x4')],'defaultValue':moment()[_0x6ddf('0x5')](_0x6ddf('0x6'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6ddf('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize[_0x6ddf('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6ddf('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6ddf('0x4')]},'priority':{'type':Sequelize[_0x6ddf('0x7')](0x2)[_0x6ddf('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x6ddf('0x8')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x6ddf('0x7')],'unique':_0x6ddf('0xa')},'ListId':{'type':Sequelize[_0x6ddf('0x7')],'unique':_0x6ddf('0xa')},'UserId':{'type':Sequelize[_0x6ddf('0x7')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x6ddf('0xa')},'CampaignId':{'type':Sequelize[_0x6ddf('0x7')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6ddf('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6ddf('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6ddf('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x6ddf('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x6ddf('0x3')]},'recallmeNotifiedDate':{'type':Sequelize[_0x6ddf('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xc7d7=['YYYY-MM-DD\x20HH:mm:ss','INTEGER','STRING','contactListQueue','moment','sequelize','exports','BOOLEAN','DATE','format'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xc7d7,0x16c));var _0x7c7d=function(_0x281012,_0x59f528){_0x281012=_0x281012-0x0;var _0x2aab9a=_0xc7d7[_0x281012];return _0x2aab9a;};'use strict';var moment=require(_0x7c7d('0x0'));var Sequelize=require(_0x7c7d('0x1'));module[_0x7c7d('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0x7c7d('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x7c7d('0x4')],'defaultValue':moment()[_0x7c7d('0x5')](_0x7c7d('0x6'))},'countbusyretry':{'type':Sequelize[_0x7c7d('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x7c7d('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x7c7d('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x7c7d('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x7c7d('0x8')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x7c7d('0x4')]},'priority':{'type':Sequelize[_0x7c7d('0x7')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x7c7d('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x7c7d('0x7')],'unique':_0x7c7d('0x9')},'ListId':{'type':Sequelize[_0x7c7d('0x7')],'unique':_0x7c7d('0x9')},'UserId':{'type':Sequelize[_0x7c7d('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x7c7d('0x7')],'unique':_0x7c7d('0x9')},'CampaignId':{'type':Sequelize[_0x7c7d('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x7c7d('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x7c7d('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x7c7d('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x7c7d('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x7c7d('0x7')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x7c7d('0x8')]},'recallmeNotifiedDate':{'type':Sequelize[_0x7c7d('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index d910206..347f81a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a28=['set','Content-Range','update','then','error','stack','name','send','index','map','CmHopper','fieldName','model','query','keys','filters','intersection','concat','$or','$gt','$lte','$ne','$not','$between','$notBetween','$in','$like','$iLike','$notILike','$contains','$contained','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','destroy','VoiceQueueId','CampaignId','omit','dataValues','updatedAt','statedesc','deleted','campaign','membername','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','hopperIds','priority','ASC','scheduledAt','literal','DESC','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','VoiceQueue','dialActive','getPreviewRecall','findOne','recallme','Queue','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','push','utcOffset','getTimezone','timezones','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','undefined','limit','count','offset'];(function(_0x30c86e,_0x161d70){var _0x50509c=function(_0x3f79a0){while(--_0x3f79a0){_0x30c86e['push'](_0x30c86e['shift']());}};_0x50509c(++_0x161d70);}(_0x8a28,0xfd));var _0x88a2=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x8a28[_0x4dbaad];return _0x226c72;};'use strict';var moment=require(_0x88a2('0x0'));var _=require(_0x88a2('0x1'));var qs=require(_0x88a2('0x2'));var logger=require(_0x88a2('0x3'))(_0x88a2('0x4'));var shared=require(_0x88a2('0x5'));var db=require(_0x88a2('0x6'))['db'];function respondWithResult(_0x3fc89d,_0x5d5b92){_0x5d5b92=_0x5d5b92||0xc8;return function(_0x2f482e){if(_0x2f482e){return _0x3fc89d[_0x88a2('0x7')](_0x5d5b92)[_0x88a2('0x8')](_0x2f482e);}};}function respondWithFilteredResult(_0x438e32,_0x29ce92){return function(_0x5cb591){if(_0x5cb591){var _0x1629ea=typeof _0x29ce92['offset']===_0x88a2('0x9')&&typeof _0x29ce92[_0x88a2('0xa')]===_0x88a2('0x9');var _0xdbb322=_0x5cb591[_0x88a2('0xb')];var _0x2d0fce=_0x1629ea?0x0:_0x29ce92[_0x88a2('0xc')];var _0x306a59=_0x1629ea?_0x5cb591[_0x88a2('0xb')]:_0x29ce92['offset']+_0x29ce92['limit'];var _0x854332;if(_0x306a59>=_0xdbb322){_0x306a59=_0xdbb322;_0x854332=0xc8;}else{_0x854332=0xce;}_0x438e32[_0x88a2('0x7')](_0x854332);return _0x438e32[_0x88a2('0xd')](_0x88a2('0xe'),_0x2d0fce+'-'+_0x306a59+'/'+_0xdbb322)[_0x88a2('0x8')](_0x5cb591);}return null;};}function saveUpdates(_0x4887fc,_0x210a52){return function(_0x1a4056){if(_0x1a4056){return _0x1a4056[_0x88a2('0xf')](_0x4887fc)[_0x88a2('0x10')](function(_0x5093c0){return _0x5093c0;});}return null;};}function handleEntityNotFound(_0x923706,_0x407ef0){return function(_0x3b83ce){if(!_0x3b83ce){_0x923706['sendStatus'](0x194);}return _0x3b83ce;};}function handleError(_0x34f19e,_0x207b12){_0x207b12=_0x207b12||0x1f4;return function(_0x462b7b){logger[_0x88a2('0x11')](_0x462b7b[_0x88a2('0x12')]);if(_0x462b7b[_0x88a2('0x13')]){delete _0x462b7b[_0x88a2('0x13')];}_0x34f19e[_0x88a2('0x7')](_0x207b12)[_0x88a2('0x14')](_0x462b7b);};}exports[_0x88a2('0x15')]=function(_0x235b75,_0x3c030e){var _0x188f6a={},_0x29dc1b={},_0x34d34a={'count':0x0,'rows':[]};var _0x162b5f=_[_0x88a2('0x16')](db[_0x88a2('0x17')]['rawAttributes'],function(_0x190aac){return{'name':_0x190aac[_0x88a2('0x18')],'type':_0x190aac['type']['key']};});_0x29dc1b[_0x88a2('0x19')]=_[_0x88a2('0x16')](_0x162b5f,_0x88a2('0x13'));_0x29dc1b[_0x88a2('0x1a')]=_[_0x88a2('0x1b')](_0x235b75['query']);_0x29dc1b[_0x88a2('0x1c')]=_[_0x88a2('0x1d')](_0x29dc1b[_0x88a2('0x19')],_0x29dc1b[_0x88a2('0x1a')]);_0x29dc1b['filters']=_[_0x88a2('0x1e')](_0x29dc1b['filters'],['$and',_0x88a2('0x1f'),_0x88a2('0x20'),'$gte','$lt',_0x88a2('0x21'),_0x88a2('0x22'),'$eq',_0x88a2('0x23'),_0x88a2('0x24'),_0x88a2('0x25'),_0x88a2('0x26'),'$notIn',_0x88a2('0x27'),'$notLike',_0x88a2('0x28'),_0x88a2('0x29'),_0x88a2('0x27'),'$overlap',_0x88a2('0x2a'),_0x88a2('0x2b'),'$any']);_0x188f6a[_0x88a2('0x2c')]=_[_0x88a2('0x1d')](_0x29dc1b['model'],qs['fields'](_0x235b75[_0x88a2('0x1a')][_0x88a2('0x2d')]));_0x188f6a[_0x88a2('0x2c')]=_0x188f6a[_0x88a2('0x2c')][_0x88a2('0x2e')]?_0x188f6a[_0x88a2('0x2c')]:_0x29dc1b['model'];if(!_0x235b75[_0x88a2('0x1a')][_0x88a2('0x2f')](_0x88a2('0x30'))){_0x188f6a[_0x88a2('0xa')]=qs[_0x88a2('0xa')](_0x235b75[_0x88a2('0x1a')][_0x88a2('0xa')]);_0x188f6a[_0x88a2('0xc')]=qs[_0x88a2('0xc')](_0x235b75[_0x88a2('0x1a')]['offset']);}_0x188f6a['order']=qs[_0x88a2('0x31')](_0x235b75[_0x88a2('0x1a')][_0x88a2('0x31')]);_0x188f6a['where']=qs[_0x88a2('0x1c')](_[_0x88a2('0x32')](_0x235b75['query'],_0x29dc1b[_0x88a2('0x1c')]),_0x162b5f);if(_0x235b75[_0x88a2('0x1a')][_0x88a2('0x33')]){_0x188f6a['where']=_['merge'](_0x188f6a[_0x88a2('0x34')],{'$or':_[_0x88a2('0x16')](_0x162b5f,function(_0x4cb19f){if(_0x4cb19f[_0x88a2('0x35')]!==_0x88a2('0x36')){var _0x327a80={};_0x327a80[_0x4cb19f[_0x88a2('0x13')]]={'$like':'%'+_0x235b75[_0x88a2('0x1a')][_0x88a2('0x33')]+'%'};return _0x327a80;}})});}_0x188f6a=_[_0x88a2('0x37')]({},_0x188f6a,_0x235b75[_0x88a2('0x38')]);var _0x4fdacc={'where':_0x188f6a[_0x88a2('0x34')]};return db[_0x88a2('0x17')]['count'](_0x4fdacc)[_0x88a2('0x10')](function(_0x38cc76){_0x34d34a[_0x88a2('0xb')]=_0x38cc76;if(_0x235b75[_0x88a2('0x1a')][_0x88a2('0x39')]){_0x188f6a[_0x88a2('0x3a')]=[{'all':!![]}];}return db[_0x88a2('0x17')][_0x88a2('0x3b')](_0x188f6a);})[_0x88a2('0x10')](function(_0x1fa0c6){_0x34d34a[_0x88a2('0x3c')]=_0x1fa0c6;return _0x34d34a;})[_0x88a2('0x10')](respondWithFilteredResult(_0x3c030e,_0x188f6a))[_0x88a2('0x3d')](handleError(_0x3c030e,null));};exports[_0x88a2('0x3e')]=function(_0x42b8f7,_0xb21338){var _0x1496d9={'raw':!![],'where':{'id':_0x42b8f7[_0x88a2('0x3f')]['id']}},_0x23cdc2={};_0x23cdc2[_0x88a2('0x19')]=_[_0x88a2('0x1b')](db[_0x88a2('0x17')][_0x88a2('0x40')]);_0x23cdc2[_0x88a2('0x1a')]=_[_0x88a2('0x1b')](_0x42b8f7['query']);_0x23cdc2['filters']=_[_0x88a2('0x1d')](_0x23cdc2[_0x88a2('0x19')],_0x23cdc2['query']);_0x1496d9[_0x88a2('0x2c')]=_[_0x88a2('0x1d')](_0x23cdc2[_0x88a2('0x19')],qs[_0x88a2('0x2d')](_0x42b8f7[_0x88a2('0x1a')][_0x88a2('0x2d')]));_0x1496d9['attributes']=_0x1496d9[_0x88a2('0x2c')][_0x88a2('0x2e')]?_0x1496d9[_0x88a2('0x2c')]:_0x23cdc2['model'];if(_0x42b8f7[_0x88a2('0x1a')][_0x88a2('0x39')]){_0x1496d9[_0x88a2('0x3a')]=[{'all':!![]}];}_0x1496d9=_[_0x88a2('0x37')]({},_0x1496d9,_0x42b8f7['options']);return db[_0x88a2('0x17')][_0x88a2('0x41')](_0x1496d9)[_0x88a2('0x10')](handleEntityNotFound(_0xb21338,null))[_0x88a2('0x10')](respondWithResult(_0xb21338,null))[_0x88a2('0x3d')](handleError(_0xb21338,null));};exports[_0x88a2('0x42')]=function(_0x682411,_0x363475){return db[_0x88a2('0x17')][_0x88a2('0x42')](_0x682411[_0x88a2('0x43')],{})[_0x88a2('0x10')](respondWithResult(_0x363475,0xc9))[_0x88a2('0x3d')](handleError(_0x363475,null));};exports[_0x88a2('0xf')]=function(_0xe8d957,_0x9ef5ac){if(_0xe8d957[_0x88a2('0x43')]['id']){delete _0xe8d957[_0x88a2('0x43')]['id'];}return db[_0x88a2('0x17')][_0x88a2('0x41')]({'where':{'id':_0xe8d957['params']['id']}})[_0x88a2('0x10')](handleEntityNotFound(_0x9ef5ac,null))['then'](saveUpdates(_0xe8d957[_0x88a2('0x43')],null))['then'](respondWithResult(_0x9ef5ac,null))[_0x88a2('0x3d')](handleError(_0x9ef5ac,null));};exports[_0x88a2('0x44')]=function(_0x1c5e6b,_0x37319d){return db[_0x88a2('0x17')][_0x88a2('0x44')]()[_0x88a2('0x10')](respondWithResult(_0x37319d,null))[_0x88a2('0x3d')](handleError(_0x37319d,null));};exports['destroy']=function(_0x1d773c,_0x1cc256){var _0x5b1f66;var _0x341e08=_0x1d773c['params']['id'];return db[_0x88a2('0x17')]['find']({'where':{'id':_0x1d773c[_0x88a2('0x3f')]['id']}})[_0x88a2('0x10')](handleEntityNotFound(_0x1cc256,null))[_0x88a2('0x10')](function(_0x18dae2){if(_0x18dae2){return _0x18dae2[_0x88a2('0x45')]()[_0x88a2('0x10')](function(_0x39bffe){return _0x39bffe;});}})[_0x88a2('0x10')](function(_0x2cf43b){_0x5b1f66=_0x2cf43b;if(_0x2cf43b){if(_0x2cf43b[_0x88a2('0x46')]||_0x2cf43b[_0x88a2('0x47')]){return db[_0x2cf43b[_0x88a2('0x46')]?'VoiceQueue':'Campaign'][_0x88a2('0x41')]({'where':{'id':_0x2cf43b[_0x88a2('0x46')]?_0x2cf43b[_0x88a2('0x46')]:_0x2cf43b[_0x88a2('0x47')]},'attributes':['id',_0x88a2('0x13')],'raw':!![]});}}})['then'](function(_0x2bc03d){var _0x4793ee={};if(_0x2bc03d){_['merge'](_0x4793ee,_[_0x88a2('0x48')](_0x5b1f66[_0x88a2('0x49')],['createdAt',_0x88a2('0x4a'),'id']));_0x4793ee['state']=0x15;_0x4793ee[_0x88a2('0x4b')]=_0x88a2('0x4c');_0x4793ee[_0x88a2('0x4d')]=_0x2bc03d[_0x88a2('0x13')];_0x4793ee[_0x88a2('0x4e')]=_0x1d773c[_0x88a2('0x4f')]['name'];_0x4793ee[_0x88a2('0x50')]=_0x1d773c[_0x88a2('0x4f')]['id'];_0x4793ee[_0x88a2('0x4c')]=!![];_0x4793ee['deletedat']=moment()[_0x88a2('0x51')](_0x88a2('0x52'));_0x4793ee['calleridnum']=_0x5b1f66[_0x88a2('0x53')];_0x4793ee[_0x88a2('0x54')]=_0x5b1f66['VoiceQueueId']?'queue':_0x88a2('0x55');return db[_0x88a2('0x56')]['find']({'where':{'id':_0x4793ee[_0x88a2('0x57')]},'attributes':[_0x88a2('0x58'),_0x88a2('0x59')]})[_0x88a2('0x10')](function(_0xa62fec){if(!_[_0x88a2('0x5a')](_0x1cc256)&&!_[_0x88a2('0x5a')](_0xa62fec['firstName'])){_0x4793ee[_0x88a2('0x5b')]=_0xa62fec[_0x88a2('0x58')];if(!_[_0x88a2('0x5a')](_0xa62fec['lastName'])){_0x4793ee['calleridname']+='\x20'+_0xa62fec['lastName'];}}})[_0x88a2('0x5c')](function(){return db[_0x88a2('0x5d')][_0x88a2('0x42')](_0x4793ee);});}})['then'](function(_0x3aba26){return db[_0x88a2('0x5e')][_0x88a2('0x45')]({'where':{'CmHopperId':_0x341e08}});})[_0x88a2('0x10')](function(){return _0x1cc256[_0x88a2('0x7')](0xcc)[_0x88a2('0x5f')]();})['catch'](handleError(_0x1cc256,null));};exports['getPreview']=function(_0x29371a,_0x5599d1){var _0x4d4411=[];return db[_0x88a2('0x56')][_0x88a2('0x44')]()[_0x88a2('0x10')](function(_0x291f1f){_0x4d4411=_[_0x88a2('0x1b')](_0x291f1f);return _0x29371a['user']['getVoiceQueues']({'where':{'type':_0x88a2('0x60'),'dialActive':!![],'dialMethod':_0x88a2('0x61')},'attributes':['id',_0x88a2('0x62'),_0x88a2('0x63')],'raw':!![]});})[_0x88a2('0x10')](function(_0xb99aaa){if(_0xb99aaa&&_0xb99aaa[_0x88a2('0x2e')]){return db[_0x88a2('0x64')][_0x88a2('0x65')](function(_0x485489){var _0x541172={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x88a2('0x51')](_0x88a2('0x52'))},'VoiceQueueId':{'$in':_['map'](_0xb99aaa,'id')},'$or':[{'UserId':null},{'UserId':_0x29371a['user']['id']}]};var _0x5e538c={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0xb99aaa)[_0x88a2('0x33')]([_0x88a2('0x63'),0x0])[_0x88a2('0x16')]('id')[_0x88a2('0x66')]()},'$or':[{'UserId':null},{'UserId':_0x29371a['user']['id']}]};var _0x203e60={'$or':[_0x541172,_0x5e538c]};var _0x3b76bf=[];if(_0x29371a[_0x88a2('0x43')][_0x88a2('0x67')]&&_0x29371a[_0x88a2('0x43')][_0x88a2('0x67')]===_0x88a2('0x68')){if(!_['isEmpty'](_0x29371a['body'][_0x88a2('0x69')])){_0x203e60['id']={'$in':_0x29371a['body']['hopperIds']};}_0x3b76bf=[[_0x88a2('0x6a'),_0x88a2('0x6b')],[_0x88a2('0x6c'),_0xb99aaa[0x0][_0x88a2('0x62')]===_0x88a2('0x6b')?'DESC':_0x88a2('0x6b')],db['sequelize'][_0x88a2('0x6d')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x88a2('0x6e')]];}else{if(!_['isEmpty'](_0x29371a[_0x88a2('0x43')][_0x88a2('0x69')])){_0x203e60['id']={'$notIn':_0x29371a[_0x88a2('0x43')][_0x88a2('0x69')]};}_0x3b76bf=[[_0x88a2('0x6a'),_0x88a2('0x6e')],[_0x88a2('0x6c'),_0xb99aaa[0x0][_0x88a2('0x62')]],db[_0x88a2('0x64')][_0x88a2('0x6d')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x88a2('0x6b')]];}return db[_0x88a2('0x17')]['findOne']({'attributes':['id',_0x88a2('0x6f'),'phone','recallme'],'where':_0x203e60,'order':_0x3b76bf,'transaction':_0x485489,'lock':_0x485489[_0x88a2('0x70')][_0x88a2('0x71')],'include':[{'model':db[_0x88a2('0x56')],'as':_0x88a2('0x72'),'attributes':_0x4d4411,'include':[{'model':db[_0x88a2('0x73')],'as':_0x88a2('0x74'),'attributes':['id','name']}]},{'model':db[_0x88a2('0x75')],'as':_0x88a2('0x76'),'attributes':['id',_0x88a2('0x13')]},{'model':db[_0x88a2('0x77')],'as':'Queue','attributes':['id','name',_0x88a2('0x78')]}]})[_0x88a2('0x10')](function(_0x585409){if(_0x585409){return _0x585409[_0x88a2('0xf')]({'UserId':_0x29371a[_0x88a2('0x4f')]['id']},{'transaction':_0x485489});}});});}})[_0x88a2('0x10')](handleEntityNotFound(_0x5599d1,null))[_0x88a2('0x10')](respondWithResult(_0x5599d1,null))['catch'](handleError(_0x5599d1,null));};exports[_0x88a2('0x79')]=function(_0x14c831,_0x1db40c,_0x1350b2){var _0x54b65d=[];var _0x3c8f98=_0x14c831['params']['id'];var _0x149f0e=_0x14c831[_0x88a2('0x4f')]['id'];return db[_0x88a2('0x56')]['describe']()[_0x88a2('0x10')](function(_0x381ea4){_0x54b65d=_['keys'](_0x381ea4);return db[_0x88a2('0x64')][_0x88a2('0x65')](function(_0x1bf412){const _0xf9f243={'id':_0x3c8f98};return db[_0x88a2('0x17')][_0x88a2('0x7a')]({'attributes':['id',_0x88a2('0x6f'),_0x88a2('0x7b')],'where':_0xf9f243,'transaction':_0x1bf412,'lock':_0x1bf412['LOCK'][_0x88a2('0x71')],'include':[{'model':db[_0x88a2('0x56')],'as':_0x88a2('0x72'),'attributes':_0x54b65d,'include':[{'model':db[_0x88a2('0x73')],'as':'Company','attributes':['id',_0x88a2('0x13')]}]},{'model':db[_0x88a2('0x75')],'as':_0x88a2('0x76'),'attributes':['id',_0x88a2('0x13')]},{'model':db[_0x88a2('0x77')],'as':_0x88a2('0x7c'),'attributes':['id',_0x88a2('0x13'),_0x88a2('0x78')]}]})[_0x88a2('0x10')](function(_0xcb1375){if(_0xcb1375){return _0xcb1375['update']({'UserId':_0x149f0e},{'transaction':_0x1bf412});}});});})[_0x88a2('0x10')](handleEntityNotFound(_0x1db40c,null))[_0x88a2('0x10')](respondWithResult(_0x1db40c,null))[_0x88a2('0x3d')](handleError(_0x1db40c,null));};exports[_0x88a2('0x7d')]=function(_0x9d26d1,_0xc3c2f2){return _0x9d26d1[_0x88a2('0x4f')]['getVoiceQueues']({'where':{'type':_0x88a2('0x60'),'dialActive':!![],'dialMethod':_0x88a2('0x61')},'attributes':['id'],'raw':!![]})['then'](function(_0x1f1824){if(_0x1f1824&&_0x1f1824[_0x88a2('0x2e')]){return db['CmHopper'][_0x88a2('0xb')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x88a2('0x51')](_0x88a2('0x52'))},'VoiceQueueId':{'$in':_[_0x88a2('0x16')](_0x1f1824,'id')},'$or':[{'UserId':null},{'UserId':_0x9d26d1[_0x88a2('0x4f')]['id']}]}});}return 0x0;})['then'](function(_0x5abf8c){if(!_['isNil'](_0x5abf8c)&&_[_0x88a2('0x7e')](_0x5abf8c)){return _0xc3c2f2[_0x88a2('0x7')](0xc8)[_0x88a2('0x8')]({'contacts':_0x5abf8c});}else{logger[_0x88a2('0x11')](_0x88a2('0x7f'),_0x88a2('0x7d'),0x194,_0x88a2('0x80'));_0xc3c2f2['sendStatus'](0x194);}})[_0x88a2('0x3d')](handleError(_0xc3c2f2,null));};exports['getTimezones']=function(_0x912355,_0x5abbd9){var _0x1430ef=shared['timezones'];var _0x526b5a=[];_[_0x88a2('0x16')](_0x1430ef,function(_0x4d9afd){_0x526b5a[_0x88a2('0x81')]({'id':_0x4d9afd['name'],'name':_0x4d9afd[_0x88a2('0x13')],'utcOffset':_0x4d9afd[_0x88a2('0x82')]});});return _0x5abbd9[_0x88a2('0x7')](0xc8)['json']({'tz':_0x526b5a});};exports[_0x88a2('0x83')]=function(_0x4612b5,_0x5212aa){var _0x392317=shared[_0x88a2('0x84')];var _0x24c54a={};if(!_[_0x88a2('0x5a')](_0x392317[_0x4612b5['body']['id']]))_0x24c54a=_0x392317[_0x4612b5[_0x88a2('0x43')]['id']];return _0x5212aa[_0x88a2('0x7')](0xc8)['json'](_0x24c54a);};
\ No newline at end of file
+var _0xcb99=['getPreviewRecall','recallme','Company','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','push','utcOffset','getTimezone','timezones','moment','../../components/parsers/qs','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','json','then','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$iLike','$overlap','$contains','$contained','attributes','length','nolimit','sort','where','pick','filter','merge','options','includeAll','CmHopper','findAll','rows','catch','show','params','fields','include','find','create','update','body','describe','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','statedesc','deleted','campaign','membername','UserId','user','format','YYYY-MM-DD\x20HH:mm:ss','queue','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','destroy','end','CmContact','getVoiceQueues','outbound','preview','dialPreviewAutoRecallMe','sequelize','transaction','value','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','phone','LOCK','UPDATE','Contact','CmCompany','CmList','List','Queue'];(function(_0x2574dc,_0x5241c9){var _0x238405=function(_0xf02570){while(--_0xf02570){_0x2574dc['push'](_0x2574dc['shift']());}};_0x238405(++_0x5241c9);}(_0xcb99,0x8b));var _0x9cb9=function(_0x46f4bb,_0x7dc8a9){_0x46f4bb=_0x46f4bb-0x0;var _0x29f2af=_0xcb99[_0x46f4bb];return _0x29f2af;};'use strict';var moment=require(_0x9cb9('0x0'));var _=require('lodash');var qs=require(_0x9cb9('0x1'));var logger=require('../../config/logger')('api');var shared=require(_0x9cb9('0x2'));var db=require(_0x9cb9('0x3'))['db'];function respondWithResult(_0x124c48,_0x51f2ee){_0x51f2ee=_0x51f2ee||0xc8;return function(_0x167735){if(_0x167735){return _0x124c48[_0x9cb9('0x4')](_0x51f2ee)['json'](_0x167735);}};}function respondWithFilteredResult(_0x214b72,_0x509cfc){return function(_0x2ed26a){if(_0x2ed26a){var _0xa84493=typeof _0x509cfc[_0x9cb9('0x5')]===_0x9cb9('0x6')&&typeof _0x509cfc[_0x9cb9('0x7')]===_0x9cb9('0x6');var _0x106f17=_0x2ed26a[_0x9cb9('0x8')];var _0x48d99a=_0xa84493?0x0:_0x509cfc['offset'];var _0xe6d275=_0xa84493?_0x2ed26a[_0x9cb9('0x8')]:_0x509cfc[_0x9cb9('0x5')]+_0x509cfc['limit'];var _0x3be02c;if(_0xe6d275>=_0x106f17){_0xe6d275=_0x106f17;_0x3be02c=0xc8;}else{_0x3be02c=0xce;}_0x214b72[_0x9cb9('0x4')](_0x3be02c);return _0x214b72['set']('Content-Range',_0x48d99a+'-'+_0xe6d275+'/'+_0x106f17)[_0x9cb9('0x9')](_0x2ed26a);}return null;};}function saveUpdates(_0x2e687e,_0x3382c8){return function(_0x1bcb05){if(_0x1bcb05){return _0x1bcb05['update'](_0x2e687e)[_0x9cb9('0xa')](function(_0x37dc98){return _0x37dc98;});}return null;};}function handleEntityNotFound(_0x3ec500,_0x32352d){return function(_0x18fa1f){if(!_0x18fa1f){_0x3ec500[_0x9cb9('0xb')](0x194);}return _0x18fa1f;};}function handleError(_0xc0bf6,_0x2132be){_0x2132be=_0x2132be||0x1f4;return function(_0x3975a5){logger[_0x9cb9('0xc')](_0x3975a5[_0x9cb9('0xd')]);if(_0x3975a5[_0x9cb9('0xe')]){delete _0x3975a5[_0x9cb9('0xe')];}_0xc0bf6[_0x9cb9('0x4')](_0x2132be)[_0x9cb9('0xf')](_0x3975a5);};}exports[_0x9cb9('0x10')]=function(_0x41e598,_0x5a6fba){var _0x4e89cf={},_0x59fcae={},_0x1a23d3={'count':0x0,'rows':[]};var _0x50169f=_['map'](db['CmHopper'][_0x9cb9('0x11')],function(_0x5b2aa3){return{'name':_0x5b2aa3[_0x9cb9('0x12')],'type':_0x5b2aa3[_0x9cb9('0x13')][_0x9cb9('0x14')]};});_0x59fcae[_0x9cb9('0x15')]=_[_0x9cb9('0x16')](_0x50169f,_0x9cb9('0xe'));_0x59fcae[_0x9cb9('0x17')]=_[_0x9cb9('0x18')](_0x41e598[_0x9cb9('0x17')]);_0x59fcae[_0x9cb9('0x19')]=_[_0x9cb9('0x1a')](_0x59fcae[_0x9cb9('0x15')],_0x59fcae[_0x9cb9('0x17')]);_0x59fcae[_0x9cb9('0x19')]=_['concat'](_0x59fcae['filters'],[_0x9cb9('0x1b'),_0x9cb9('0x1c'),_0x9cb9('0x1d'),_0x9cb9('0x1e'),_0x9cb9('0x1f'),_0x9cb9('0x20'),_0x9cb9('0x21'),_0x9cb9('0x22'),_0x9cb9('0x23'),'$between',_0x9cb9('0x24'),_0x9cb9('0x25'),_0x9cb9('0x26'),_0x9cb9('0x27'),'$notLike',_0x9cb9('0x28'),'$notILike',_0x9cb9('0x27'),_0x9cb9('0x29'),_0x9cb9('0x2a'),_0x9cb9('0x2b'),'$any']);_0x4e89cf[_0x9cb9('0x2c')]=_[_0x9cb9('0x1a')](_0x59fcae[_0x9cb9('0x15')],qs['fields'](_0x41e598[_0x9cb9('0x17')]['fields']));_0x4e89cf[_0x9cb9('0x2c')]=_0x4e89cf[_0x9cb9('0x2c')][_0x9cb9('0x2d')]?_0x4e89cf[_0x9cb9('0x2c')]:_0x59fcae[_0x9cb9('0x15')];if(!_0x41e598[_0x9cb9('0x17')]['hasOwnProperty'](_0x9cb9('0x2e'))){_0x4e89cf[_0x9cb9('0x7')]=qs[_0x9cb9('0x7')](_0x41e598['query']['limit']);_0x4e89cf[_0x9cb9('0x5')]=qs[_0x9cb9('0x5')](_0x41e598[_0x9cb9('0x17')]['offset']);}_0x4e89cf['order']=qs[_0x9cb9('0x2f')](_0x41e598[_0x9cb9('0x17')]['sort']);_0x4e89cf[_0x9cb9('0x30')]=qs[_0x9cb9('0x19')](_[_0x9cb9('0x31')](_0x41e598[_0x9cb9('0x17')],_0x59fcae[_0x9cb9('0x19')]),_0x50169f);if(_0x41e598['query'][_0x9cb9('0x32')]){_0x4e89cf[_0x9cb9('0x30')]=_['merge'](_0x4e89cf[_0x9cb9('0x30')],{'$or':_['map'](_0x50169f,function(_0x1f72b2){if(_0x1f72b2[_0x9cb9('0x13')]!=='VIRTUAL'){var _0x5668c4={};_0x5668c4[_0x1f72b2[_0x9cb9('0xe')]]={'$like':'%'+_0x41e598[_0x9cb9('0x17')][_0x9cb9('0x32')]+'%'};return _0x5668c4;}})});}_0x4e89cf=_[_0x9cb9('0x33')]({},_0x4e89cf,_0x41e598[_0x9cb9('0x34')]);var _0x2dd463={'where':_0x4e89cf[_0x9cb9('0x30')]};return db['CmHopper'][_0x9cb9('0x8')](_0x2dd463)[_0x9cb9('0xa')](function(_0x4496a4){_0x1a23d3[_0x9cb9('0x8')]=_0x4496a4;if(_0x41e598[_0x9cb9('0x17')][_0x9cb9('0x35')]){_0x4e89cf['include']=[{'all':!![]}];}return db[_0x9cb9('0x36')][_0x9cb9('0x37')](_0x4e89cf);})[_0x9cb9('0xa')](function(_0x31f8d7){_0x1a23d3[_0x9cb9('0x38')]=_0x31f8d7;return _0x1a23d3;})[_0x9cb9('0xa')](respondWithFilteredResult(_0x5a6fba,_0x4e89cf))[_0x9cb9('0x39')](handleError(_0x5a6fba,null));};exports[_0x9cb9('0x3a')]=function(_0x481377,_0x597db6){var _0x448113={'raw':!![],'where':{'id':_0x481377[_0x9cb9('0x3b')]['id']}},_0x5c0811={};_0x5c0811['model']=_[_0x9cb9('0x18')](db[_0x9cb9('0x36')][_0x9cb9('0x11')]);_0x5c0811[_0x9cb9('0x17')]=_['keys'](_0x481377[_0x9cb9('0x17')]);_0x5c0811['filters']=_[_0x9cb9('0x1a')](_0x5c0811[_0x9cb9('0x15')],_0x5c0811[_0x9cb9('0x17')]);_0x448113[_0x9cb9('0x2c')]=_[_0x9cb9('0x1a')](_0x5c0811['model'],qs[_0x9cb9('0x3c')](_0x481377[_0x9cb9('0x17')][_0x9cb9('0x3c')]));_0x448113[_0x9cb9('0x2c')]=_0x448113[_0x9cb9('0x2c')][_0x9cb9('0x2d')]?_0x448113[_0x9cb9('0x2c')]:_0x5c0811[_0x9cb9('0x15')];if(_0x481377[_0x9cb9('0x17')]['includeAll']){_0x448113[_0x9cb9('0x3d')]=[{'all':!![]}];}_0x448113=_[_0x9cb9('0x33')]({},_0x448113,_0x481377[_0x9cb9('0x34')]);return db[_0x9cb9('0x36')][_0x9cb9('0x3e')](_0x448113)['then'](handleEntityNotFound(_0x597db6,null))[_0x9cb9('0xa')](respondWithResult(_0x597db6,null))[_0x9cb9('0x39')](handleError(_0x597db6,null));};exports[_0x9cb9('0x3f')]=function(_0x52c295,_0x2813ce){return db[_0x9cb9('0x36')][_0x9cb9('0x3f')](_0x52c295['body'],{})[_0x9cb9('0xa')](respondWithResult(_0x2813ce,0xc9))[_0x9cb9('0x39')](handleError(_0x2813ce,null));};exports[_0x9cb9('0x40')]=function(_0x45bbdd,_0x2920fb){if(_0x45bbdd[_0x9cb9('0x41')]['id']){delete _0x45bbdd['body']['id'];}return db[_0x9cb9('0x36')][_0x9cb9('0x3e')]({'where':{'id':_0x45bbdd[_0x9cb9('0x3b')]['id']}})[_0x9cb9('0xa')](handleEntityNotFound(_0x2920fb,null))[_0x9cb9('0xa')](saveUpdates(_0x45bbdd[_0x9cb9('0x41')],null))[_0x9cb9('0xa')](respondWithResult(_0x2920fb,null))[_0x9cb9('0x39')](handleError(_0x2920fb,null));};exports[_0x9cb9('0x42')]=function(_0x28efec,_0x11e990){return db[_0x9cb9('0x36')][_0x9cb9('0x42')]()['then'](respondWithResult(_0x11e990,null))[_0x9cb9('0x39')](handleError(_0x11e990,null));};exports['destroy']=function(_0x40ae9b,_0x23fece){var _0x401f1e;var _0x5a7691=_0x40ae9b[_0x9cb9('0x3b')]['id'];return db[_0x9cb9('0x36')][_0x9cb9('0x3e')]({'where':{'id':_0x40ae9b[_0x9cb9('0x3b')]['id']}})['then'](handleEntityNotFound(_0x23fece,null))['then'](function(_0x57475e){if(_0x57475e){return _0x57475e['destroy']()['then'](function(_0x527e4a){return _0x527e4a;});}})[_0x9cb9('0xa')](function(_0x4490ec){_0x401f1e=_0x4490ec;if(_0x4490ec){if(_0x4490ec[_0x9cb9('0x43')]||_0x4490ec['CampaignId']){return db[_0x4490ec[_0x9cb9('0x43')]?_0x9cb9('0x44'):_0x9cb9('0x45')][_0x9cb9('0x3e')]({'where':{'id':_0x4490ec[_0x9cb9('0x43')]?_0x4490ec[_0x9cb9('0x43')]:_0x4490ec[_0x9cb9('0x46')]},'attributes':['id',_0x9cb9('0xe')],'raw':!![]});}}})['then'](function(_0x5b8ffa){var _0x58df82={};if(_0x5b8ffa){_[_0x9cb9('0x33')](_0x58df82,_[_0x9cb9('0x47')](_0x401f1e[_0x9cb9('0x48')],[_0x9cb9('0x49'),'updatedAt','id']));_0x58df82['state']=0x15;_0x58df82[_0x9cb9('0x4a')]=_0x9cb9('0x4b');_0x58df82[_0x9cb9('0x4c')]=_0x5b8ffa['name'];_0x58df82[_0x9cb9('0x4d')]=_0x40ae9b['user'][_0x9cb9('0xe')];_0x58df82[_0x9cb9('0x4e')]=_0x40ae9b[_0x9cb9('0x4f')]['id'];_0x58df82[_0x9cb9('0x4b')]=!![];_0x58df82['deletedat']=moment()[_0x9cb9('0x50')](_0x9cb9('0x51'));_0x58df82['calleridnum']=_0x401f1e['phone'];_0x58df82['campaigntype']=_0x401f1e[_0x9cb9('0x43')]?_0x9cb9('0x52'):'ivr';return db['CmContact'][_0x9cb9('0x3e')]({'where':{'id':_0x58df82[_0x9cb9('0x53')]},'attributes':[_0x9cb9('0x54'),_0x9cb9('0x55')]})[_0x9cb9('0xa')](function(_0x4e030a){if(!_[_0x9cb9('0x56')](_0x23fece)&&!_['isNil'](_0x4e030a['firstName'])){_0x58df82[_0x9cb9('0x57')]=_0x4e030a[_0x9cb9('0x54')];if(!_[_0x9cb9('0x56')](_0x4e030a['lastName'])){_0x58df82[_0x9cb9('0x57')]+='\x20'+_0x4e030a[_0x9cb9('0x55')];}}})[_0x9cb9('0x58')](function(){return db[_0x9cb9('0x59')][_0x9cb9('0x3f')](_0x58df82);});}})[_0x9cb9('0xa')](function(_0x21f73a){return db[_0x9cb9('0x5a')][_0x9cb9('0x5b')]({'where':{'CmHopperId':_0x5a7691}});})[_0x9cb9('0xa')](function(){return _0x23fece[_0x9cb9('0x4')](0xcc)[_0x9cb9('0x5c')]();})[_0x9cb9('0x39')](handleError(_0x23fece,null));};exports['getPreview']=function(_0x4dfc6e,_0x3e19ca){var _0x41ff82=[];return db[_0x9cb9('0x5d')]['describe']()[_0x9cb9('0xa')](function(_0xfd180d){_0x41ff82=_['keys'](_0xfd180d);return _0x4dfc6e['user'][_0x9cb9('0x5e')]({'where':{'type':_0x9cb9('0x5f'),'dialActive':!![],'dialMethod':_0x9cb9('0x60')},'attributes':['id','dialOrderByScheduledAt',_0x9cb9('0x61')],'raw':!![]});})['then'](function(_0x4473c6){if(_0x4473c6&&_0x4473c6[_0x9cb9('0x2d')]){return db[_0x9cb9('0x62')][_0x9cb9('0x63')](function(_0x3b3897){var _0x2d1b65={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x9cb9('0x16')](_0x4473c6,'id')},'$or':[{'UserId':null},{'UserId':_0x4dfc6e[_0x9cb9('0x4f')]['id']}]};var _0x38acc6={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4473c6)[_0x9cb9('0x32')](['dialPreviewAutoRecallMe',0x0])[_0x9cb9('0x16')]('id')[_0x9cb9('0x64')]()},'$or':[{'UserId':null},{'UserId':_0x4dfc6e[_0x9cb9('0x4f')]['id']}]};var _0x58b9b3={'$or':[_0x2d1b65,_0x38acc6]};var _0x4f11b6=[];if(_0x4dfc6e['body']['direction']&&_0x4dfc6e[_0x9cb9('0x41')]['direction']===_0x9cb9('0x65')){if(!_[_0x9cb9('0x66')](_0x4dfc6e[_0x9cb9('0x41')][_0x9cb9('0x67')])){_0x58b9b3['id']={'$in':_0x4dfc6e[_0x9cb9('0x41')][_0x9cb9('0x67')]};}_0x4f11b6=[[_0x9cb9('0x68'),_0x9cb9('0x69')],[_0x9cb9('0x6a'),_0x4473c6[0x0]['dialOrderByScheduledAt']==='ASC'?_0x9cb9('0x6b'):_0x9cb9('0x69')],db['sequelize']['literal'](_0x9cb9('0x6c')),['id',_0x9cb9('0x6b')]];}else{if(!_['isEmpty'](_0x4dfc6e['body']['hopperIds'])){_0x58b9b3['id']={'$notIn':_0x4dfc6e['body'][_0x9cb9('0x67')]};}_0x4f11b6=[['priority',_0x9cb9('0x6b')],[_0x9cb9('0x6a'),_0x4473c6[0x0]['dialOrderByScheduledAt']],db[_0x9cb9('0x62')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0x9cb9('0x36')][_0x9cb9('0x6d')]({'attributes':['id',_0x9cb9('0x6e'),_0x9cb9('0x6f'),'recallme'],'where':_0x58b9b3,'order':_0x4f11b6,'transaction':_0x3b3897,'lock':_0x3b3897[_0x9cb9('0x70')][_0x9cb9('0x71')],'include':[{'model':db['CmContact'],'as':_0x9cb9('0x72'),'attributes':_0x41ff82,'include':[{'model':db[_0x9cb9('0x73')],'as':'Company','attributes':['id',_0x9cb9('0xe')]}]},{'model':db[_0x9cb9('0x74')],'as':_0x9cb9('0x75'),'attributes':['id',_0x9cb9('0xe')]},{'model':db[_0x9cb9('0x44')],'as':_0x9cb9('0x76'),'attributes':['id','name','dialActive']}]})[_0x9cb9('0xa')](function(_0x2c2ff1){if(_0x2c2ff1){return _0x2c2ff1[_0x9cb9('0x40')]({'UserId':_0x4dfc6e[_0x9cb9('0x4f')]['id']},{'transaction':_0x3b3897});}});});}})[_0x9cb9('0xa')](handleEntityNotFound(_0x3e19ca,null))[_0x9cb9('0xa')](respondWithResult(_0x3e19ca,null))[_0x9cb9('0x39')](handleError(_0x3e19ca,null));};exports[_0x9cb9('0x77')]=function(_0x24f574,_0x4eb9c6,_0x23a727){var _0x1ef68b=[];var _0x3ceb83=_0x24f574['params']['id'];var _0x7d8ce8=_0x24f574[_0x9cb9('0x4f')]['id'];return db[_0x9cb9('0x5d')][_0x9cb9('0x42')]()['then'](function(_0x222393){_0x1ef68b=_[_0x9cb9('0x18')](_0x222393);return db[_0x9cb9('0x62')][_0x9cb9('0x63')](function(_0x30342f){const _0x203156={'id':_0x3ceb83};return db[_0x9cb9('0x36')][_0x9cb9('0x6d')]({'attributes':['id',_0x9cb9('0x6e'),_0x9cb9('0x78')],'where':_0x203156,'transaction':_0x30342f,'lock':_0x30342f[_0x9cb9('0x70')]['UPDATE'],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x1ef68b,'include':[{'model':db[_0x9cb9('0x73')],'as':_0x9cb9('0x79'),'attributes':['id','name']}]},{'model':db[_0x9cb9('0x74')],'as':_0x9cb9('0x75'),'attributes':['id','name']},{'model':db[_0x9cb9('0x44')],'as':'Queue','attributes':['id',_0x9cb9('0xe'),'dialActive']}]})[_0x9cb9('0xa')](function(_0xd49604){if(_0xd49604){return _0xd49604[_0x9cb9('0x40')]({'UserId':_0x7d8ce8},{'transaction':_0x30342f});}});});})[_0x9cb9('0xa')](handleEntityNotFound(_0x4eb9c6,null))[_0x9cb9('0xa')](respondWithResult(_0x4eb9c6,null))['catch'](handleError(_0x4eb9c6,null));};exports[_0x9cb9('0x7a')]=function(_0x303dfc,_0x3a60d3){return _0x303dfc['user']['getVoiceQueues']({'where':{'type':_0x9cb9('0x5f'),'dialActive':!![],'dialMethod':_0x9cb9('0x60')},'attributes':['id'],'raw':!![]})[_0x9cb9('0xa')](function(_0x288782){if(_0x288782&&_0x288782['length']){return db[_0x9cb9('0x36')][_0x9cb9('0x8')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x9cb9('0x51'))},'VoiceQueueId':{'$in':_[_0x9cb9('0x16')](_0x288782,'id')},'$or':[{'UserId':null},{'UserId':_0x303dfc[_0x9cb9('0x4f')]['id']}]}});}return 0x0;})[_0x9cb9('0xa')](function(_0x54043e){if(!_[_0x9cb9('0x56')](_0x54043e)&&_[_0x9cb9('0x7b')](_0x54043e)){return _0x3a60d3[_0x9cb9('0x4')](0xc8)[_0x9cb9('0x9')]({'contacts':_0x54043e});}else{logger[_0x9cb9('0xc')](_0x9cb9('0x7c'),_0x9cb9('0x7a'),0x194,'entity\x20not\x20found');_0x3a60d3[_0x9cb9('0xb')](0x194);}})['catch'](handleError(_0x3a60d3,null));};exports['getTimezones']=function(_0x54d5ed,_0x5341d1){var _0x32130f=shared['timezones'];var _0x4c2ca1=[];_[_0x9cb9('0x16')](_0x32130f,function(_0x465945){_0x4c2ca1[_0x9cb9('0x7d')]({'id':_0x465945[_0x9cb9('0xe')],'name':_0x465945[_0x9cb9('0xe')],'utcOffset':_0x465945[_0x9cb9('0x7e')]});});return _0x5341d1[_0x9cb9('0x4')](0xc8)[_0x9cb9('0x9')]({'tz':_0x4c2ca1});};exports[_0x9cb9('0x7f')]=function(_0x206abd,_0x5971eb){var _0xe48750=shared[_0x9cb9('0x80')];var _0x13b776={};if(!_[_0x9cb9('0x56')](_0xe48750[_0x206abd[_0x9cb9('0x41')]['id']]))_0x13b776=_0xe48750[_0x206abd['body']['id']];return _0x5971eb['status'](0xc8)[_0x9cb9('0x9')](_0x13b776);};
\ No newline at end of file
index 4b56ce0..f9b9762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','priority','lodash'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x326f,0xd1));var _0xf326=function(_0x455e66,_0x4cdd7b){_0x455e66=_0x455e66-0x0;var _0x16954b=_0x326f[_0x455e66];return _0x16954b;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['scheduledat']},{'name':'phone','fields':['phone']},{'name':_0xf326('0xe'),'fields':[_0xf326('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['define','CmHopper','cm_hopper','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','../../config/environment','./cmHopper.attributes','exports'];(function(_0x2fe132,_0x31bb8f){var _0x83b089=function(_0x40fe8b){while(--_0x40fe8b){_0x2fe132['push'](_0x2fe132['shift']());}};_0x83b089(++_0x31bb8f);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0xc4aa[_0x422905];return _0x33dc6c;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':['scheduledat']},{'name':_0xac4a('0xc'),'fields':[_0xac4a('0xc')]},{'name':_0xac4a('0xd'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
index dd41857..07c1775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bc1=['CreateCmHopper','create','body','UpdateCmHopper','update','active','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','transaction','order','UPDATE','Contact','keys','User','Agent','name','voicePause','length','UserId','push','includes','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','MoveContactManagedDialer','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','NOW()','List','lodash','util','../../mysqldb','../../config/logger','rpc','CmHopper','findAll','options','raw','where','limit','include','map','attributes','model','then','debug','stringify','error','GetCmHopper','message','ShowCmHopper','find','info','catch'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x9bc1,0x1c1));var _0x19bc=function(_0x21d2a6,_0x44c6cc){_0x21d2a6=_0x21d2a6-0x0;var _0x3a5b9f=_0x9bc1[_0x21d2a6];return _0x3a5b9f;};'use strict';var _=require(_0x19bc('0x0'));var util=require(_0x19bc('0x1'));var moment=require('moment');var BPromise=require('bluebird');var db=require(_0x19bc('0x2'))['db'];var logger=require(_0x19bc('0x3'))(_0x19bc('0x4'));exports['GetCmHopper']=function(_0x2e821f){var _0x3a0d10=this;return new Promise(function(_0x18c4d5,_0x2aef82){return db[_0x19bc('0x5')][_0x19bc('0x6')]({'raw':_0x2e821f['options']?_0x2e821f[_0x19bc('0x7')][_0x19bc('0x8')]===undefined?!![]:![]:!![],'where':_0x2e821f['options']?_0x2e821f[_0x19bc('0x7')][_0x19bc('0x9')]||null:null,'attributes':_0x2e821f[_0x19bc('0x7')]?_0x2e821f[_0x19bc('0x7')]['attributes']||null:null,'limit':_0x2e821f['options']?_0x2e821f[_0x19bc('0x7')][_0x19bc('0xa')]||null:null,'include':_0x2e821f[_0x19bc('0x7')]?_0x2e821f[_0x19bc('0x7')][_0x19bc('0xb')]?_[_0x19bc('0xc')](_0x2e821f[_0x19bc('0x7')][_0x19bc('0xb')],function(_0x302bb9){return{'model':db[_0x302bb9['model']],'as':_0x302bb9['as'],'attributes':_0x302bb9[_0x19bc('0xd')],'include':_0x302bb9[_0x19bc('0xb')]?_[_0x19bc('0xc')](_0x302bb9[_0x19bc('0xb')],function(_0x449e5b){return{'model':db[_0x449e5b[_0x19bc('0xe')]],'as':_0x449e5b['as'],'attributes':_0x449e5b[_0x19bc('0xd')],'include':_0x449e5b[_0x19bc('0xb')]?_[_0x19bc('0xc')](_0x449e5b['include'],function(_0x2934fa){return{'model':db[_0x2934fa[_0x19bc('0xe')]],'as':_0x2934fa['as'],'attributes':_0x2934fa[_0x19bc('0xd')]};}):[]};}):[]};}):[]:[]})[_0x19bc('0xf')](function(_0x32e6d1){logger['info']('GetCmHopper',_0x2e821f);logger[_0x19bc('0x10')]('GetCmHopper',_0x2e821f,JSON[_0x19bc('0x11')](_0x32e6d1));_0x18c4d5(_0x32e6d1);})['catch'](function(_0x2c7f76){logger[_0x19bc('0x12')](_0x19bc('0x13'),_0x2c7f76[_0x19bc('0x14')],_0x2e821f);_0x2aef82(_0x3a0d10[_0x19bc('0x12')](0x1f4,_0x2c7f76[_0x19bc('0x14')]));});});};exports[_0x19bc('0x15')]=function(_0x23a8c2){var _0x28e3b9=this;return new Promise(function(_0x588d34,_0x2c5fc0){return db[_0x19bc('0x5')][_0x19bc('0x16')]({'raw':_0x23a8c2['options']?_0x23a8c2[_0x19bc('0x7')][_0x19bc('0x8')]===undefined?!![]:![]:!![],'where':_0x23a8c2[_0x19bc('0x7')]?_0x23a8c2[_0x19bc('0x7')][_0x19bc('0x9')]||null:null,'attributes':_0x23a8c2[_0x19bc('0x7')]?_0x23a8c2[_0x19bc('0x7')][_0x19bc('0xd')]||null:null,'include':_0x23a8c2['options']?_0x23a8c2['options'][_0x19bc('0xb')]?_['map'](_0x23a8c2[_0x19bc('0x7')][_0x19bc('0xb')],function(_0x5bdb43){return{'model':db[_0x5bdb43[_0x19bc('0xe')]],'as':_0x5bdb43['as'],'attributes':_0x5bdb43[_0x19bc('0xd')],'include':_0x5bdb43[_0x19bc('0xb')]?_[_0x19bc('0xc')](_0x5bdb43['include'],function(_0x5b474d){return{'model':db[_0x5b474d[_0x19bc('0xe')]],'as':_0x5b474d['as'],'attributes':_0x5b474d[_0x19bc('0xd')],'include':_0x5b474d[_0x19bc('0xb')]?_['map'](_0x5b474d[_0x19bc('0xb')],function(_0x2ac3fb){return{'model':db[_0x2ac3fb['model']],'as':_0x2ac3fb['as'],'attributes':_0x2ac3fb['attributes']};}):[]};}):[]};}):[]:[]})[_0x19bc('0xf')](function(_0x265a8c){logger[_0x19bc('0x17')](_0x19bc('0x15'),_0x23a8c2);logger['debug'](_0x19bc('0x15'),_0x23a8c2,JSON[_0x19bc('0x11')](_0x265a8c));_0x588d34(_0x265a8c);})[_0x19bc('0x18')](function(_0x272935){logger[_0x19bc('0x12')](_0x19bc('0x15'),_0x272935[_0x19bc('0x14')],_0x23a8c2);_0x2c5fc0(_0x28e3b9[_0x19bc('0x12')](0x1f4,_0x272935[_0x19bc('0x14')]));});});};exports[_0x19bc('0x19')]=function(_0x1490e5){var _0xa25997=this;return new Promise(function(_0x2d156c,_0x46447a){return db[_0x19bc('0x5')][_0x19bc('0x1a')](_0x1490e5[_0x19bc('0x1b')],{'raw':_0x1490e5[_0x19bc('0x7')]?_0x1490e5['options']['raw']===undefined?!![]:![]:!![]})[_0x19bc('0xf')](function(_0x1451c1){logger[_0x19bc('0x17')](_0x19bc('0x19'),_0x1490e5);logger[_0x19bc('0x10')](_0x19bc('0x19'),_0x1490e5,JSON[_0x19bc('0x11')](_0x1451c1));_0x2d156c(_0x1451c1);})[_0x19bc('0x18')](function(_0x17cf20){logger[_0x19bc('0x12')](_0x19bc('0x19'),_0x17cf20['message'],_0x1490e5);_0x46447a(_0xa25997['error'](0x1f4,_0x17cf20[_0x19bc('0x14')]));});});};exports[_0x19bc('0x1c')]=function(_0xc8b964){var _0x3240d8=this;return new Promise(function(_0x1bdd79,_0x181060){return db[_0x19bc('0x5')][_0x19bc('0x1d')](_0xc8b964[_0x19bc('0x1b')],{'raw':_0xc8b964[_0x19bc('0x7')]?_0xc8b964[_0x19bc('0x7')][_0x19bc('0x8')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xc8b964['options']?_0xc8b964['options'][_0x19bc('0x9')]||null:null,'attributes':_0xc8b964[_0x19bc('0x7')]?_0xc8b964[_0x19bc('0x7')][_0x19bc('0xd')]||null:null,'limit':_0xc8b964[_0x19bc('0x7')]?_0xc8b964[_0x19bc('0x7')][_0x19bc('0xa')]||null:null})[_0x19bc('0xf')](function(_0x25862c){logger[_0x19bc('0x17')](_0x19bc('0x1c'),_0xc8b964);logger['info']('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0x19bc('0x11')](_0xc8b964[_0x19bc('0x7')][_0x19bc('0x9')]),_0xc8b964[_0x19bc('0x1b')][_0x19bc('0x1e')]);logger[_0x19bc('0x10')]('UpdateCmHopper',_0xc8b964,JSON[_0x19bc('0x11')](_0x25862c));_0x1bdd79(_0x25862c);})[_0x19bc('0x18')](function(_0x388e15){logger[_0x19bc('0x12')](_0x19bc('0x1c'),_0x388e15[_0x19bc('0x14')],_0xc8b964);_0x181060(_0x3240d8[_0x19bc('0x12')](0x1f4,_0x388e15[_0x19bc('0x14')]));});});};exports[_0x19bc('0x1f')]=function(_0x25738e){var _0x56caa9=this;return new Promise(function(_0x1adee4,_0x33ed07){return db['CmHopper'][_0x19bc('0x20')]({'where':_0x25738e[_0x19bc('0x7')]?_0x25738e[_0x19bc('0x7')][_0x19bc('0x9')]||null:null})['then'](function(_0x5ee360){logger[_0x19bc('0x17')]('DestroyCmHopper',_0x25738e);logger[_0x19bc('0x10')](_0x19bc('0x1f'),_0x25738e,JSON['stringify'](_0x5ee360));_0x1adee4(_0x5ee360);})[_0x19bc('0x18')](function(_0x294ffa){logger[_0x19bc('0x12')](_0x19bc('0x1f'),_0x294ffa[_0x19bc('0x14')],_0x25738e);_0x33ed07(_0x56caa9['error'](0x1f4,_0x294ffa[_0x19bc('0x14')]));});});};exports[_0x19bc('0x21')]=function(_0x2b44de){var _0x2cd457=this;return new Promise(function(_0x39f235,_0x1f8168){return db[_0x19bc('0x22')][_0x19bc('0x23')]()[_0x19bc('0xf')](function(_0x2e426e){return db[_0x19bc('0x24')][_0x19bc('0x25')](function(_0x4ba095){return db[_0x19bc('0x5')][_0x19bc('0x6')]({'where':_0x2b44de[_0x19bc('0x7')]?_0x2b44de[_0x19bc('0x7')]['where']||null:null,'attributes':_0x2b44de['options']?_0x2b44de[_0x19bc('0x7')][_0x19bc('0xd')]||null:null,'limit':_0x2b44de[_0x19bc('0x7')]?_0x2b44de[_0x19bc('0x7')][_0x19bc('0xa')]||null:null,'order':_0x2b44de[_0x19bc('0x7')]?_0x2b44de[_0x19bc('0x7')][_0x19bc('0x26')]||null:null,'transaction':_0x4ba095,'lock':_0x4ba095['LOCK'][_0x19bc('0x27')],'include':[{'model':db['CmContact'],'as':_0x19bc('0x28'),'attributes':_[_0x19bc('0x29')](_0x2e426e)},{'model':db[_0x19bc('0x2a')],'as':_0x19bc('0x2b'),'attributes':['id',_0x19bc('0x2c'),_0x19bc('0x2d')]}]})['then'](function(_0x14394a){var _0x37b3ca=[];var _0x597eb7=[];for(var _0x5e6917=0x0;_0x5e6917<_0x14394a[_0x19bc('0x2e')];_0x5e6917+=0x1){var _0x344a3e=_0x14394a[_0x5e6917][_0x19bc('0x2f')];if(_0x344a3e===null){_0x37b3ca[_0x19bc('0x30')](_0x14394a[_0x5e6917][_0x19bc('0x1d')](_0x2b44de['body'],{'transaction':_0x4ba095}));}else if(!_0x597eb7[_0x19bc('0x31')](_0x344a3e)){_0x597eb7[_0x19bc('0x30')](_0x344a3e);_0x37b3ca[_0x19bc('0x30')](_0x14394a[_0x5e6917]['update'](_0x2b44de[_0x19bc('0x1b')],{'transaction':_0x4ba095}));}}return BPromise[_0x19bc('0x32')](_0x37b3ca);});})['then'](function(_0x40236f){logger[_0x19bc('0x17')](_0x19bc('0x21'),_0x2b44de);if(_0x40236f[_0x19bc('0x2e')]>0x0){logger['info'](_0x19bc('0x33'),_0x40236f[0x0][_0x19bc('0x34')]['id'],_0x40236f[0x0][_0x19bc('0x34')][_0x19bc('0x35')],_0x40236f[0x0]['dataValues'][_0x19bc('0x1e')]);}logger[_0x19bc('0x10')](_0x19bc('0x21'),_0x2b44de,JSON[_0x19bc('0x11')](_0x40236f));_0x39f235(_0x40236f);})['catch'](function(_0x1d52a0){logger[_0x19bc('0x12')](_0x19bc('0x21'),_0x1d52a0[_0x19bc('0x14')],_0x2b44de);_0x1f8168(_0x2cd457['error'](0x1f4,_0x1d52a0[_0x19bc('0x14')]));});});});};exports[_0x19bc('0x36')]=function(_0x5615a4){var _0x56a569=this;return new Promise(function(_0x46cc68,_0xb10079){return db[_0x19bc('0x24')][_0x19bc('0x25')](function(_0x3714f8){return db[_0x19bc('0x37')][_0x19bc('0x1a')](_0x5615a4[_0x19bc('0x1b')],{'raw':_0x5615a4['options']?_0x5615a4[_0x19bc('0x7')][_0x19bc('0x8')]===undefined?!![]:![]:!![],'transaction':_0x3714f8})[_0x19bc('0xf')](function(){logger['info'](_0x19bc('0x38'),JSON['stringify'](_0x5615a4['options'][_0x19bc('0x9')]),_0x5615a4['options'][_0x19bc('0x9')]['active']);return db[_0x19bc('0x5')][_0x19bc('0x20')]({'where':_0x5615a4[_0x19bc('0x7')]?_0x5615a4[_0x19bc('0x7')][_0x19bc('0x9')]||null:null,'transaction':_0x3714f8});});})[_0x19bc('0xf')](function(_0x3ac8ac){logger[_0x19bc('0x17')](_0x19bc('0x36'),_0x5615a4);logger[_0x19bc('0x10')]('MoveContactManagedDialer',_0x5615a4,JSON[_0x19bc('0x11')](_0x3ac8ac));_0x46cc68(_0x3ac8ac);})['catch'](function(_0x39bf18){logger[_0x19bc('0x12')](_0x19bc('0x36'),_0x39bf18[_0x19bc('0x14')],_0x5615a4);_0xb10079(_0x56a569[_0x19bc('0x12')](0x1f4,_0x39bf18[_0x19bc('0x14')]));});});};exports['CountReScheduled']=function(_0x31635c){var _0x499970=this;return new Promise(function(_0x20a2f6,_0xd7b02e){return db[_0x19bc('0x5')]['findAll']({'raw':_0x31635c[_0x19bc('0x7')]?_0x31635c[_0x19bc('0x7')][_0x19bc('0x8')]===undefined?!![]:![]:!![],'where':_0x31635c[_0x19bc('0x7')]?_0x31635c[_0x19bc('0x7')][_0x19bc('0x9')]||null:null,'attributes':[[db['sequelize']['fn'](_0x19bc('0x39'),db['sequelize']['fn']('IF',db[_0x19bc('0x24')][_0x19bc('0x3a')](_0x19bc('0x3b')+util[_0x19bc('0x3c')](_0x19bc('0x3d'),moment()[_0x19bc('0x3c')](_0x19bc('0x3e')))+_0x19bc('0x3f')))),_0x19bc('0x40')]]})[_0x19bc('0xf')](function(_0x56fceb){logger[_0x19bc('0x17')](_0x19bc('0x41'),_0x31635c);logger[_0x19bc('0x10')](_0x19bc('0x41'),_0x31635c,JSON[_0x19bc('0x11')](_0x56fceb));_0x20a2f6(_0x56fceb);})[_0x19bc('0x18')](function(_0x171bb8){logger[_0x19bc('0x12')](_0x19bc('0x41'),_0x171bb8[_0x19bc('0x14')],_0x31635c);_0xd7b02e(_0x499970[_0x19bc('0x12')](0x1f4,_0x171bb8['message']));});});};exports['GetContactRecallMe']=function(_0x535fad){var _0x6e3ba4=this;return new Promise(function(_0x3a7113,_0x5447e3){return db[_0x19bc('0x22')][_0x19bc('0x23')]()[_0x19bc('0xf')](function(){return db[_0x19bc('0x24')]['transaction'](function(_0x5dccf6){return db['CmHopper'][_0x19bc('0x6')]({'where':_0x535fad[_0x19bc('0x7')]?_0x535fad[_0x19bc('0x7')][_0x19bc('0x9')]||null:null,'attributes':_0x535fad[_0x19bc('0x7')]?_0x535fad[_0x19bc('0x7')][_0x19bc('0xd')]||null:null,'limit':0x1,'order':_0x535fad[_0x19bc('0x7')]?_0x535fad[_0x19bc('0x7')]['order']||null:null,'group':db[_0x19bc('0x5')][_0x19bc('0x2f')],'transaction':_0x5dccf6,'lock':_0x5dccf6['LOCK']['UPDATE'],'include':_0x535fad[_0x19bc('0x7')]?_0x535fad['options']['include']?_['map'](_0x535fad[_0x19bc('0x7')][_0x19bc('0xb')],function(_0x1e600d){return{'model':db[_0x1e600d[_0x19bc('0xe')]],'as':_0x1e600d['as'],'attributes':_0x1e600d['attributes'],'include':_0x1e600d[_0x19bc('0xb')]?_[_0x19bc('0xc')](_0x1e600d['include'],function(_0x23a53c){return{'model':db[_0x23a53c[_0x19bc('0xe')]],'as':_0x23a53c['as'],'attributes':_0x23a53c[_0x19bc('0xd')],'include':_0x23a53c[_0x19bc('0xb')]?_[_0x19bc('0xc')](_0x23a53c[_0x19bc('0xb')],function(_0x14020b){return{'model':db[_0x14020b[_0x19bc('0xe')]],'as':_0x14020b['as'],'attributes':_0x14020b[_0x19bc('0xd')]};}):[]};}):[]};}):[]:[]})[_0x19bc('0xf')](function(_0x61172f){var _0x2e2901=[];for(var _0x12dd84=0x0;_0x12dd84<_0x61172f[_0x19bc('0x2e')];_0x12dd84+=0x1){_0x2e2901['push'](_0x61172f[_0x12dd84][_0x19bc('0x1d')](_0x535fad['body'],{'transaction':_0x5dccf6}));}return BPromise[_0x19bc('0x32')](_0x2e2901);});})[_0x19bc('0xf')](function(_0x18b8b4){logger[_0x19bc('0x17')]('GetContactRecallMe',_0x535fad);logger[_0x19bc('0x10')](_0x19bc('0x42'),_0x535fad,JSON['stringify'](_0x18b8b4));_0x3a7113(_0x18b8b4);})['catch'](function(_0x573c0f){logger[_0x19bc('0x12')]('GetContactRecallMe',_0x573c0f[_0x19bc('0x14')],_0x535fad);_0x5447e3(_0x6e3ba4[_0x19bc('0x12')](0x1f4,_0x573c0f['message']));});});});};exports['GetCmHopperPreview']=function(_0x160b84){var _0x2161ed=this;return new Promise(function(_0x15d431,_0x4300d0){db[_0x19bc('0x22')]['describe']()['then'](function(_0x285359){return db[_0x19bc('0x5')][_0x19bc('0x6')]({'raw':_0x160b84[_0x19bc('0x7')]?_0x160b84[_0x19bc('0x7')]['raw']===undefined?!![]:![]:!![],'where':_0x160b84[_0x19bc('0x7')]?_0x160b84[_0x19bc('0x7')][_0x19bc('0x9')]||null:null,'attributes':_0x160b84[_0x19bc('0x7')]?_0x160b84[_0x19bc('0x7')][_0x19bc('0xd')]||null:null,'limit':_0x160b84[_0x19bc('0x7')]?_0x160b84[_0x19bc('0x7')]['limit']||null:null,'include':_0x160b84['options']?_0x160b84[_0x19bc('0x7')][_0x19bc('0xb')]?_[_0x19bc('0xc')](_0x160b84['options']['include'],function(_0x322b18){return{'model':db[_0x322b18[_0x19bc('0xe')]],'as':_0x322b18['as'],'attributes':_0x322b18['as']===_0x19bc('0x28')?_[_0x19bc('0x29')](_0x285359):_0x322b18['attributes'],'include':_0x322b18[_0x19bc('0xb')]?_[_0x19bc('0xc')](_0x322b18['include'],function(_0x1f8484){return{'model':db[_0x1f8484[_0x19bc('0xe')]],'as':_0x1f8484['as'],'attributes':_0x1f8484['attributes'],'include':_0x1f8484['include']?_['map'](_0x1f8484['include'],function(_0x448955){return{'model':db[_0x448955[_0x19bc('0xe')]],'as':_0x448955['as'],'attributes':_0x448955[_0x19bc('0xd')]};}):[]};}):[]};}):[]:[]})[_0x19bc('0xf')](function(_0x2a6a41){logger[_0x19bc('0x17')](_0x19bc('0x13'),_0x160b84);logger[_0x19bc('0x10')](_0x19bc('0x13'),_0x160b84,JSON[_0x19bc('0x11')](_0x2a6a41));_0x15d431(_0x2a6a41);})[_0x19bc('0x18')](function(_0x36aa87){logger[_0x19bc('0x12')](_0x19bc('0x13'),_0x36aa87[_0x19bc('0x14')],_0x160b84);_0x4300d0(_0x2161ed[_0x19bc('0x12')](0x1f4,_0x36aa87['message']));});});});};exports['GetContactByPhone']=function(_0x308f09){var _0x4a37c9=this;return new Promise(function(_0x17c635,_0x502259){return db[_0x19bc('0x22')]['findOne']({'raw':!![],'where':{'phone':_0x308f09[_0x19bc('0x7')][_0x19bc('0x9')]['phone']},'attributes':['id',_0x19bc('0x43')],'order':[['id',_0x19bc('0x44')]]})[_0x19bc('0xf')](function(_0x57e646){logger[_0x19bc('0x17')](_0x19bc('0x45'),_0x308f09);logger[_0x19bc('0x10')](_0x19bc('0x45'),_0x308f09,JSON['stringify'](_0x57e646));_0x17c635(_0x57e646);})[_0x19bc('0x18')](function(_0xe2b7c1){logger[_0x19bc('0x12')]('getContactByPhone',_0xe2b7c1[_0x19bc('0x14')],_0x308f09);_0x502259(_0x4a37c9[_0x19bc('0x12')](0x1f4,_0xe2b7c1['message']));});});};exports['ResetActiveCalls']=function(_0x142fed){var _0x507376=this;return new Promise(function(_0x3fd7c7,_0x52b431){return db['sequelize'][_0x19bc('0x25')](function(_0x1f0b98){var _0x167cb9=_0x142fed['options']&&_0x142fed[_0x19bc('0x7')][_0x19bc('0x9')]?_0x142fed['options'][_0x19bc('0x9')]:{};return db[_0x19bc('0x5')][_0x19bc('0x1d')](_0x142fed['body'],{'where':_0x167cb9,'transaction':_0x1f0b98})[_0x19bc('0xf')](function(_0x51c3e0){logger[_0x19bc('0x17')]('ResetActiveCalls',_0x142fed);logger['debug'](_0x19bc('0x46'),_0x142fed,JSON[_0x19bc('0x11')](_0x51c3e0));_0x3fd7c7(_0x51c3e0);})[_0x19bc('0x18')](function(_0x4a9e94){logger[_0x19bc('0x12')]('ResetActiveCalls',_0x4a9e94[_0x19bc('0x14')],_0x142fed);_0x52b431(_0x507376[_0x19bc('0x12')](0x1f4,_0x4a9e94[_0x19bc('0x14')]));});});});};exports[_0x19bc('0x47')]=function(_0x4a8a76){var _0xf57205=this;var _0x397954=_0x4a8a76['body'][_0x19bc('0x9')][_0x19bc('0x48')];var _0x103935=_0x4a8a76[_0x19bc('0x1b')][_0x19bc('0x9')][_0x19bc('0x49')];var _0x27ec22=_0x4a8a76[_0x19bc('0x1b')][_0x19bc('0x9')][_0x19bc('0x4a')];return new Promise(function(_0x5a581a,_0x5c20fb){return db[_0x19bc('0x5')][_0x19bc('0x6')]({'where':{'voiceQueueId':{'$in':_0x397954},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0x19bc('0x3a')](_0x19bc('0x4b')+_0x103935+_0x19bc('0x4c')),'$gt':db[_0x19bc('0x24')]['literal'](_0x19bc('0x4d'))}},'UserId':{'$in':_0x27ec22}},'include':[{'model':db[_0x19bc('0x22')],'as':_0x19bc('0x28')},{'model':db[_0x19bc('0x2a')],'as':_0x19bc('0x2b'),'attributes':['id','name','voicePause']},{'model':db['CmList'],'as':_0x19bc('0x4e')}]})['then'](function(_0x8e74d7){if(_0x8e74d7['length']>0x0){return db['sequelize']['transaction'](function(_0x2939e5){return db[_0x19bc('0x5')][_0x19bc('0x1d')]({'recallmeNotifiedDate':db[_0x19bc('0x24')][_0x19bc('0x3a')](_0x19bc('0x4d'))},{'where':{'id':{'$in':_[_0x19bc('0xc')](_0x8e74d7,'id')}},'transaction':_0x2939e5})[_0x19bc('0xf')](function(){_0x5a581a(_0x8e74d7);})['catch'](function(_0x2cd173){logger[_0x19bc('0x12')](_0x19bc('0x47'),_0x2cd173[_0x19bc('0x14')],_0x4a8a76);_0x5c20fb(_0xf57205['error'](0x1f4,_0x2cd173[_0x19bc('0x14')]));});})[_0x19bc('0x18')](function(_0x509c32){logger[_0x19bc('0x12')](_0x19bc('0x47'),_0x509c32[_0x19bc('0x14')],_0x4a8a76);_0x5c20fb(_0xf57205[_0x19bc('0x12')](0x1f4,_0x509c32[_0x19bc('0x14')]));});}else{_0x5a581a(_0x8e74d7);}});});};
\ No newline at end of file
+var _0x23fb=['create','body','UpdateCmHopper','active','DestroyCmHopper','CmContact','sequelize','findAll','order','LOCK','UPDATE','Contact','keys','Agent','name','voicePause','length','UserId','push','includes','update','all','GetContactDialer','dataValues','ContactId','MoveContactManagedDialer','transaction','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','destroy','COUNT','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','GetCmHopperPreview','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','NOW()','User','lodash','util','moment','../../mysqldb','../../config/logger','rpc','GetCmHopper','options','raw','where','attributes','limit','include','map','model','then','info','stringify','catch','error','message','ShowCmHopper','CmHopper','debug','CreateCmHopper'];(function(_0x53216c,_0x505ce0){var _0x42f18a=function(_0x437470){while(--_0x437470){_0x53216c['push'](_0x53216c['shift']());}};_0x42f18a(++_0x505ce0);}(_0x23fb,0x11b));var _0xb23f=function(_0x322c2f,_0x254da0){_0x322c2f=_0x322c2f-0x0;var _0x33994f=_0x23fb[_0x322c2f];return _0x33994f;};'use strict';var _=require(_0xb23f('0x0'));var util=require(_0xb23f('0x1'));var moment=require(_0xb23f('0x2'));var BPromise=require('bluebird');var db=require(_0xb23f('0x3'))['db'];var logger=require(_0xb23f('0x4'))(_0xb23f('0x5'));exports[_0xb23f('0x6')]=function(_0x4e7971){var _0x918e50=this;return new Promise(function(_0x11aa4f,_0x3384d7){return db['CmHopper']['findAll']({'raw':_0x4e7971[_0xb23f('0x7')]?_0x4e7971[_0xb23f('0x7')][_0xb23f('0x8')]===undefined?!![]:![]:!![],'where':_0x4e7971[_0xb23f('0x7')]?_0x4e7971['options'][_0xb23f('0x9')]||null:null,'attributes':_0x4e7971['options']?_0x4e7971[_0xb23f('0x7')][_0xb23f('0xa')]||null:null,'limit':_0x4e7971[_0xb23f('0x7')]?_0x4e7971['options'][_0xb23f('0xb')]||null:null,'include':_0x4e7971[_0xb23f('0x7')]?_0x4e7971[_0xb23f('0x7')][_0xb23f('0xc')]?_[_0xb23f('0xd')](_0x4e7971[_0xb23f('0x7')][_0xb23f('0xc')],function(_0xd4f2f3){return{'model':db[_0xd4f2f3['model']],'as':_0xd4f2f3['as'],'attributes':_0xd4f2f3[_0xb23f('0xa')],'include':_0xd4f2f3[_0xb23f('0xc')]?_[_0xb23f('0xd')](_0xd4f2f3[_0xb23f('0xc')],function(_0x31d95f){return{'model':db[_0x31d95f[_0xb23f('0xe')]],'as':_0x31d95f['as'],'attributes':_0x31d95f[_0xb23f('0xa')],'include':_0x31d95f['include']?_[_0xb23f('0xd')](_0x31d95f[_0xb23f('0xc')],function(_0x4d45f8){return{'model':db[_0x4d45f8[_0xb23f('0xe')]],'as':_0x4d45f8['as'],'attributes':_0x4d45f8[_0xb23f('0xa')]};}):[]};}):[]};}):[]:[]})[_0xb23f('0xf')](function(_0x2382f3){logger[_0xb23f('0x10')]('GetCmHopper',_0x4e7971);logger['debug'](_0xb23f('0x6'),_0x4e7971,JSON[_0xb23f('0x11')](_0x2382f3));_0x11aa4f(_0x2382f3);})[_0xb23f('0x12')](function(_0xfcb20a){logger[_0xb23f('0x13')](_0xb23f('0x6'),_0xfcb20a[_0xb23f('0x14')],_0x4e7971);_0x3384d7(_0x918e50[_0xb23f('0x13')](0x1f4,_0xfcb20a[_0xb23f('0x14')]));});});};exports[_0xb23f('0x15')]=function(_0x275a36){var _0x5e837d=this;return new Promise(function(_0x446478,_0x3333d9){return db[_0xb23f('0x16')]['find']({'raw':_0x275a36[_0xb23f('0x7')]?_0x275a36[_0xb23f('0x7')]['raw']===undefined?!![]:![]:!![],'where':_0x275a36[_0xb23f('0x7')]?_0x275a36['options'][_0xb23f('0x9')]||null:null,'attributes':_0x275a36[_0xb23f('0x7')]?_0x275a36[_0xb23f('0x7')][_0xb23f('0xa')]||null:null,'include':_0x275a36['options']?_0x275a36[_0xb23f('0x7')][_0xb23f('0xc')]?_['map'](_0x275a36[_0xb23f('0x7')][_0xb23f('0xc')],function(_0x4f9d52){return{'model':db[_0x4f9d52[_0xb23f('0xe')]],'as':_0x4f9d52['as'],'attributes':_0x4f9d52[_0xb23f('0xa')],'include':_0x4f9d52[_0xb23f('0xc')]?_[_0xb23f('0xd')](_0x4f9d52['include'],function(_0x2e35b4){return{'model':db[_0x2e35b4[_0xb23f('0xe')]],'as':_0x2e35b4['as'],'attributes':_0x2e35b4[_0xb23f('0xa')],'include':_0x2e35b4[_0xb23f('0xc')]?_[_0xb23f('0xd')](_0x2e35b4[_0xb23f('0xc')],function(_0x4c66f8){return{'model':db[_0x4c66f8[_0xb23f('0xe')]],'as':_0x4c66f8['as'],'attributes':_0x4c66f8['attributes']};}):[]};}):[]};}):[]:[]})[_0xb23f('0xf')](function(_0x3eff6f){logger['info'](_0xb23f('0x15'),_0x275a36);logger[_0xb23f('0x17')](_0xb23f('0x15'),_0x275a36,JSON['stringify'](_0x3eff6f));_0x446478(_0x3eff6f);})[_0xb23f('0x12')](function(_0x5e0d1a){logger[_0xb23f('0x13')]('ShowCmHopper',_0x5e0d1a[_0xb23f('0x14')],_0x275a36);_0x3333d9(_0x5e837d[_0xb23f('0x13')](0x1f4,_0x5e0d1a[_0xb23f('0x14')]));});});};exports[_0xb23f('0x18')]=function(_0x4894d0){var _0x5263a0=this;return new Promise(function(_0x1efe21,_0x59ce36){return db['CmHopper'][_0xb23f('0x19')](_0x4894d0[_0xb23f('0x1a')],{'raw':_0x4894d0[_0xb23f('0x7')]?_0x4894d0[_0xb23f('0x7')][_0xb23f('0x8')]===undefined?!![]:![]:!![]})['then'](function(_0x211fc7){logger[_0xb23f('0x10')](_0xb23f('0x18'),_0x4894d0);logger['debug'](_0xb23f('0x18'),_0x4894d0,JSON['stringify'](_0x211fc7));_0x1efe21(_0x211fc7);})[_0xb23f('0x12')](function(_0x4d06dc){logger[_0xb23f('0x13')](_0xb23f('0x18'),_0x4d06dc[_0xb23f('0x14')],_0x4894d0);_0x59ce36(_0x5263a0[_0xb23f('0x13')](0x1f4,_0x4d06dc['message']));});});};exports[_0xb23f('0x1b')]=function(_0x4fa0fe){var _0x585309=this;return new Promise(function(_0x3703b6,_0x3be2c1){return db[_0xb23f('0x16')]['update'](_0x4fa0fe['body'],{'raw':_0x4fa0fe[_0xb23f('0x7')]?_0x4fa0fe['options'][_0xb23f('0x8')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4fa0fe[_0xb23f('0x7')]?_0x4fa0fe[_0xb23f('0x7')][_0xb23f('0x9')]||null:null,'attributes':_0x4fa0fe[_0xb23f('0x7')]?_0x4fa0fe[_0xb23f('0x7')][_0xb23f('0xa')]||null:null,'limit':_0x4fa0fe[_0xb23f('0x7')]?_0x4fa0fe[_0xb23f('0x7')][_0xb23f('0xb')]||null:null})[_0xb23f('0xf')](function(_0x3132d3){logger[_0xb23f('0x10')](_0xb23f('0x1b'),_0x4fa0fe);logger[_0xb23f('0x10')]('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xb23f('0x11')](_0x4fa0fe[_0xb23f('0x7')]['where']),_0x4fa0fe[_0xb23f('0x1a')][_0xb23f('0x1c')]);logger[_0xb23f('0x17')](_0xb23f('0x1b'),_0x4fa0fe,JSON['stringify'](_0x3132d3));_0x3703b6(_0x3132d3);})['catch'](function(_0x380678){logger[_0xb23f('0x13')](_0xb23f('0x1b'),_0x380678[_0xb23f('0x14')],_0x4fa0fe);_0x3be2c1(_0x585309[_0xb23f('0x13')](0x1f4,_0x380678[_0xb23f('0x14')]));});});};exports[_0xb23f('0x1d')]=function(_0x2e504b){var _0x10df26=this;return new Promise(function(_0x46411a,_0x1bb0bd){return db['CmHopper']['destroy']({'where':_0x2e504b[_0xb23f('0x7')]?_0x2e504b[_0xb23f('0x7')]['where']||null:null})['then'](function(_0x4a9fe5){logger[_0xb23f('0x10')](_0xb23f('0x1d'),_0x2e504b);logger[_0xb23f('0x17')](_0xb23f('0x1d'),_0x2e504b,JSON[_0xb23f('0x11')](_0x4a9fe5));_0x46411a(_0x4a9fe5);})[_0xb23f('0x12')](function(_0x496fe5){logger[_0xb23f('0x13')](_0xb23f('0x1d'),_0x496fe5['message'],_0x2e504b);_0x1bb0bd(_0x10df26[_0xb23f('0x13')](0x1f4,_0x496fe5['message']));});});};exports['GetContactDialer']=function(_0x3d2254){var _0x5a17d3=this;return new Promise(function(_0xd55528,_0x4dba32){return db[_0xb23f('0x1e')]['describe']()[_0xb23f('0xf')](function(_0x218bd7){return db[_0xb23f('0x1f')]['transaction'](function(_0x39b308){return db[_0xb23f('0x16')][_0xb23f('0x20')]({'where':_0x3d2254['options']?_0x3d2254[_0xb23f('0x7')][_0xb23f('0x9')]||null:null,'attributes':_0x3d2254[_0xb23f('0x7')]?_0x3d2254[_0xb23f('0x7')][_0xb23f('0xa')]||null:null,'limit':_0x3d2254[_0xb23f('0x7')]?_0x3d2254[_0xb23f('0x7')]['limit']||null:null,'order':_0x3d2254[_0xb23f('0x7')]?_0x3d2254[_0xb23f('0x7')][_0xb23f('0x21')]||null:null,'transaction':_0x39b308,'lock':_0x39b308[_0xb23f('0x22')][_0xb23f('0x23')],'include':[{'model':db['CmContact'],'as':_0xb23f('0x24'),'attributes':_[_0xb23f('0x25')](_0x218bd7)},{'model':db['User'],'as':_0xb23f('0x26'),'attributes':['id',_0xb23f('0x27'),_0xb23f('0x28')]}]})[_0xb23f('0xf')](function(_0x595a5c){var _0x3c2fd9=[];var _0x2c912a=[];for(var _0x5dc4ee=0x0;_0x5dc4ee<_0x595a5c[_0xb23f('0x29')];_0x5dc4ee+=0x1){var _0x16b062=_0x595a5c[_0x5dc4ee][_0xb23f('0x2a')];if(_0x16b062===null){_0x3c2fd9[_0xb23f('0x2b')](_0x595a5c[_0x5dc4ee]['update'](_0x3d2254[_0xb23f('0x1a')],{'transaction':_0x39b308}));}else if(!_0x2c912a[_0xb23f('0x2c')](_0x16b062)){_0x2c912a[_0xb23f('0x2b')](_0x16b062);_0x3c2fd9[_0xb23f('0x2b')](_0x595a5c[_0x5dc4ee][_0xb23f('0x2d')](_0x3d2254[_0xb23f('0x1a')],{'transaction':_0x39b308}));}}return BPromise[_0xb23f('0x2e')](_0x3c2fd9);});})[_0xb23f('0xf')](function(_0x22f70b){logger[_0xb23f('0x10')](_0xb23f('0x2f'),_0x3d2254);if(_0x22f70b[_0xb23f('0x29')]>0x0){logger['info']('GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]',_0x22f70b[0x0][_0xb23f('0x30')]['id'],_0x22f70b[0x0][_0xb23f('0x30')][_0xb23f('0x31')],_0x22f70b[0x0][_0xb23f('0x30')][_0xb23f('0x1c')]);}logger['debug'](_0xb23f('0x2f'),_0x3d2254,JSON[_0xb23f('0x11')](_0x22f70b));_0xd55528(_0x22f70b);})['catch'](function(_0x5ccfd5){logger[_0xb23f('0x13')](_0xb23f('0x2f'),_0x5ccfd5['message'],_0x3d2254);_0x4dba32(_0x5a17d3[_0xb23f('0x13')](0x1f4,_0x5ccfd5[_0xb23f('0x14')]));});});});};exports[_0xb23f('0x32')]=function(_0x24d282){var _0x323ba4=this;return new Promise(function(_0x482800,_0xe971ad){return db[_0xb23f('0x1f')][_0xb23f('0x33')](function(_0x4283ee){return db[_0xb23f('0x34')][_0xb23f('0x19')](_0x24d282[_0xb23f('0x1a')],{'raw':_0x24d282[_0xb23f('0x7')]?_0x24d282['options'][_0xb23f('0x8')]===undefined?!![]:![]:!![],'transaction':_0x4283ee})[_0xb23f('0xf')](function(){logger[_0xb23f('0x10')](_0xb23f('0x35'),JSON[_0xb23f('0x11')](_0x24d282[_0xb23f('0x7')][_0xb23f('0x9')]),_0x24d282[_0xb23f('0x7')][_0xb23f('0x9')][_0xb23f('0x1c')]);return db[_0xb23f('0x16')][_0xb23f('0x36')]({'where':_0x24d282[_0xb23f('0x7')]?_0x24d282[_0xb23f('0x7')][_0xb23f('0x9')]||null:null,'transaction':_0x4283ee});});})[_0xb23f('0xf')](function(_0x594745){logger[_0xb23f('0x10')](_0xb23f('0x32'),_0x24d282);logger['debug'](_0xb23f('0x32'),_0x24d282,JSON['stringify'](_0x594745));_0x482800(_0x594745);})[_0xb23f('0x12')](function(_0x2b64b8){logger[_0xb23f('0x13')](_0xb23f('0x32'),_0x2b64b8['message'],_0x24d282);_0xe971ad(_0x323ba4[_0xb23f('0x13')](0x1f4,_0x2b64b8[_0xb23f('0x14')]));});});};exports['CountReScheduled']=function(_0x34770d){var _0x1dc003=this;return new Promise(function(_0x871054,_0x5b574a){return db['CmHopper'][_0xb23f('0x20')]({'raw':_0x34770d['options']?_0x34770d[_0xb23f('0x7')][_0xb23f('0x8')]===undefined?!![]:![]:!![],'where':_0x34770d[_0xb23f('0x7')]?_0x34770d[_0xb23f('0x7')][_0xb23f('0x9')]||null:null,'attributes':[[db['sequelize']['fn'](_0xb23f('0x37'),db[_0xb23f('0x1f')]['fn']('IF',db['sequelize'][_0xb23f('0x38')](_0xb23f('0x39')+util[_0xb23f('0x3a')]('\x22%s\x22',moment()['format'](_0xb23f('0x3b')))+_0xb23f('0x3c')))),_0xb23f('0x3d')]]})[_0xb23f('0xf')](function(_0x2f7d60){logger[_0xb23f('0x10')](_0xb23f('0x3e'),_0x34770d);logger[_0xb23f('0x17')](_0xb23f('0x3e'),_0x34770d,JSON[_0xb23f('0x11')](_0x2f7d60));_0x871054(_0x2f7d60);})[_0xb23f('0x12')](function(_0xe3251){logger[_0xb23f('0x13')](_0xb23f('0x3e'),_0xe3251[_0xb23f('0x14')],_0x34770d);_0x5b574a(_0x1dc003['error'](0x1f4,_0xe3251[_0xb23f('0x14')]));});});};exports[_0xb23f('0x3f')]=function(_0x5484ba){var _0x12deab=this;return new Promise(function(_0x1f0016,_0x5a54e2){return db['CmContact']['describe']()[_0xb23f('0xf')](function(){return db[_0xb23f('0x1f')][_0xb23f('0x33')](function(_0x45b7f3){return db[_0xb23f('0x16')][_0xb23f('0x20')]({'where':_0x5484ba[_0xb23f('0x7')]?_0x5484ba[_0xb23f('0x7')]['where']||null:null,'attributes':_0x5484ba[_0xb23f('0x7')]?_0x5484ba[_0xb23f('0x7')][_0xb23f('0xa')]||null:null,'limit':0x1,'order':_0x5484ba['options']?_0x5484ba[_0xb23f('0x7')]['order']||null:null,'group':db[_0xb23f('0x16')][_0xb23f('0x2a')],'transaction':_0x45b7f3,'lock':_0x45b7f3[_0xb23f('0x22')][_0xb23f('0x23')],'include':_0x5484ba['options']?_0x5484ba[_0xb23f('0x7')][_0xb23f('0xc')]?_[_0xb23f('0xd')](_0x5484ba[_0xb23f('0x7')][_0xb23f('0xc')],function(_0xf95021){return{'model':db[_0xf95021[_0xb23f('0xe')]],'as':_0xf95021['as'],'attributes':_0xf95021[_0xb23f('0xa')],'include':_0xf95021[_0xb23f('0xc')]?_[_0xb23f('0xd')](_0xf95021[_0xb23f('0xc')],function(_0x2338b8){return{'model':db[_0x2338b8['model']],'as':_0x2338b8['as'],'attributes':_0x2338b8[_0xb23f('0xa')],'include':_0x2338b8[_0xb23f('0xc')]?_[_0xb23f('0xd')](_0x2338b8[_0xb23f('0xc')],function(_0x27c5ef){return{'model':db[_0x27c5ef[_0xb23f('0xe')]],'as':_0x27c5ef['as'],'attributes':_0x27c5ef['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x281453){var _0x502e5f=[];for(var _0x29ff9e=0x0;_0x29ff9e<_0x281453['length'];_0x29ff9e+=0x1){_0x502e5f['push'](_0x281453[_0x29ff9e][_0xb23f('0x2d')](_0x5484ba[_0xb23f('0x1a')],{'transaction':_0x45b7f3}));}return BPromise[_0xb23f('0x2e')](_0x502e5f);});})[_0xb23f('0xf')](function(_0x1245c3){logger[_0xb23f('0x10')]('GetContactRecallMe',_0x5484ba);logger[_0xb23f('0x17')]('GetContactRecallMe',_0x5484ba,JSON['stringify'](_0x1245c3));_0x1f0016(_0x1245c3);})[_0xb23f('0x12')](function(_0x40f11){logger['error'](_0xb23f('0x3f'),_0x40f11['message'],_0x5484ba);_0x5a54e2(_0x12deab[_0xb23f('0x13')](0x1f4,_0x40f11[_0xb23f('0x14')]));});});});};exports[_0xb23f('0x40')]=function(_0x35f0a2){var _0x1f487b=this;return new Promise(function(_0x5d8965,_0x6f6867){db[_0xb23f('0x1e')]['describe']()[_0xb23f('0xf')](function(_0x4fb6a0){return db[_0xb23f('0x16')]['findAll']({'raw':_0x35f0a2[_0xb23f('0x7')]?_0x35f0a2[_0xb23f('0x7')]['raw']===undefined?!![]:![]:!![],'where':_0x35f0a2[_0xb23f('0x7')]?_0x35f0a2[_0xb23f('0x7')][_0xb23f('0x9')]||null:null,'attributes':_0x35f0a2[_0xb23f('0x7')]?_0x35f0a2[_0xb23f('0x7')][_0xb23f('0xa')]||null:null,'limit':_0x35f0a2[_0xb23f('0x7')]?_0x35f0a2[_0xb23f('0x7')][_0xb23f('0xb')]||null:null,'include':_0x35f0a2[_0xb23f('0x7')]?_0x35f0a2[_0xb23f('0x7')][_0xb23f('0xc')]?_[_0xb23f('0xd')](_0x35f0a2['options']['include'],function(_0x3a1af4){return{'model':db[_0x3a1af4[_0xb23f('0xe')]],'as':_0x3a1af4['as'],'attributes':_0x3a1af4['as']==='Contact'?_[_0xb23f('0x25')](_0x4fb6a0):_0x3a1af4[_0xb23f('0xa')],'include':_0x3a1af4[_0xb23f('0xc')]?_['map'](_0x3a1af4[_0xb23f('0xc')],function(_0x672792){return{'model':db[_0x672792['model']],'as':_0x672792['as'],'attributes':_0x672792['attributes'],'include':_0x672792['include']?_[_0xb23f('0xd')](_0x672792[_0xb23f('0xc')],function(_0x22a7cf){return{'model':db[_0x22a7cf[_0xb23f('0xe')]],'as':_0x22a7cf['as'],'attributes':_0x22a7cf['attributes']};}):[]};}):[]};}):[]:[]})[_0xb23f('0xf')](function(_0x1124f2){logger[_0xb23f('0x10')](_0xb23f('0x6'),_0x35f0a2);logger[_0xb23f('0x17')](_0xb23f('0x6'),_0x35f0a2,JSON[_0xb23f('0x11')](_0x1124f2));_0x5d8965(_0x1124f2);})[_0xb23f('0x12')](function(_0x3c8751){logger[_0xb23f('0x13')]('GetCmHopper',_0x3c8751[_0xb23f('0x14')],_0x35f0a2);_0x6f6867(_0x1f487b[_0xb23f('0x13')](0x1f4,_0x3c8751[_0xb23f('0x14')]));});});});};exports['GetContactByPhone']=function(_0x14fabb){var _0x4a5da9=this;return new Promise(function(_0x496486,_0x8141b0){return db[_0xb23f('0x1e')][_0xb23f('0x41')]({'raw':!![],'where':{'phone':_0x14fabb[_0xb23f('0x7')][_0xb23f('0x9')][_0xb23f('0x42')]},'attributes':['id',_0xb23f('0x43')],'order':[['id',_0xb23f('0x44')]]})[_0xb23f('0xf')](function(_0xf845fe){logger[_0xb23f('0x10')](_0xb23f('0x45'),_0x14fabb);logger[_0xb23f('0x17')](_0xb23f('0x45'),_0x14fabb,JSON[_0xb23f('0x11')](_0xf845fe));_0x496486(_0xf845fe);})[_0xb23f('0x12')](function(_0x4e6952){logger['error'](_0xb23f('0x45'),_0x4e6952[_0xb23f('0x14')],_0x14fabb);_0x8141b0(_0x4a5da9[_0xb23f('0x13')](0x1f4,_0x4e6952[_0xb23f('0x14')]));});});};exports['ResetActiveCalls']=function(_0x382628){var _0x2612db=this;return new Promise(function(_0x27d58c,_0x2f887d){return db[_0xb23f('0x1f')][_0xb23f('0x33')](function(_0x22489e){var _0x3d8e9c=_0x382628[_0xb23f('0x7')]&&_0x382628[_0xb23f('0x7')][_0xb23f('0x9')]?_0x382628[_0xb23f('0x7')][_0xb23f('0x9')]:{};return db[_0xb23f('0x16')]['update'](_0x382628[_0xb23f('0x1a')],{'where':_0x3d8e9c,'transaction':_0x22489e})[_0xb23f('0xf')](function(_0x5be4bd){logger[_0xb23f('0x10')]('ResetActiveCalls',_0x382628);logger[_0xb23f('0x17')](_0xb23f('0x46'),_0x382628,JSON[_0xb23f('0x11')](_0x5be4bd));_0x27d58c(_0x5be4bd);})['catch'](function(_0x98e735){logger['error']('ResetActiveCalls',_0x98e735[_0xb23f('0x14')],_0x382628);_0x2f887d(_0x2612db['error'](0x1f4,_0x98e735[_0xb23f('0x14')]));});});});};exports[_0xb23f('0x47')]=function(_0x336192){var _0x349f7a=this;var _0x4ab145=_0x336192[_0xb23f('0x1a')][_0xb23f('0x9')]['voiceQueueIds'];var _0x20d4ec=_0x336192['body']['where']['interval'];var _0x4d197c=_0x336192[_0xb23f('0x1a')][_0xb23f('0x9')][_0xb23f('0x48')];return new Promise(function(_0x36e32d,_0x3a5f27){return db['CmHopper'][_0xb23f('0x20')]({'where':{'voiceQueueId':{'$in':_0x4ab145},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xb23f('0x1f')]['literal'](_0xb23f('0x49')+_0x20d4ec+_0xb23f('0x4a')),'$gt':db[_0xb23f('0x1f')][_0xb23f('0x38')](_0xb23f('0x4b'))}},'UserId':{'$in':_0x4d197c}},'include':[{'model':db['CmContact'],'as':_0xb23f('0x24')},{'model':db[_0xb23f('0x4c')],'as':_0xb23f('0x26'),'attributes':['id',_0xb23f('0x27'),'voicePause']},{'model':db['CmList'],'as':'List'}]})[_0xb23f('0xf')](function(_0x41d5f7){if(_0x41d5f7[_0xb23f('0x29')]>0x0){return db[_0xb23f('0x1f')][_0xb23f('0x33')](function(_0x2d0729){return db[_0xb23f('0x16')][_0xb23f('0x2d')]({'recallmeNotifiedDate':db[_0xb23f('0x1f')]['literal'](_0xb23f('0x4b'))},{'where':{'id':{'$in':_[_0xb23f('0xd')](_0x41d5f7,'id')}},'transaction':_0x2d0729})[_0xb23f('0xf')](function(){_0x36e32d(_0x41d5f7);})['catch'](function(_0x5c5807){logger[_0xb23f('0x13')](_0xb23f('0x47'),_0x5c5807[_0xb23f('0x14')],_0x336192);_0x3a5f27(_0x349f7a[_0xb23f('0x13')](0x1f4,_0x5c5807['message']));});})[_0xb23f('0x12')](function(_0x175008){logger[_0xb23f('0x13')](_0xb23f('0x47'),_0x175008['message'],_0x336192);_0x3a5f27(_0x349f7a[_0xb23f('0x13')](0x1f4,_0x175008[_0xb23f('0x14')]));});}else{_0x36e32d(_0x41d5f7);}});});};
\ No newline at end of file
index e0ac383..3585d52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a3=['get','isAuthenticated','index','describe','getOpenContacts','/timezones','getTimezones','getPreviewRecall','post','create','/preview','/timezone','getTimezone','put','update','delete','/:id','destroy','exports','express','Router','../../components/auth/service','./cmHopper.controller'];(function(_0x3ec3c3,_0x418d8e){var _0x7e6f1=function(_0x2cedef){while(--_0x2cedef){_0x3ec3c3['push'](_0x3ec3c3['shift']());}};_0x7e6f1(++_0x418d8e);}(_0x14a3,0x6f));var _0x314a=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x14a3[_0x1ac595];return _0x455fff;};'use strict';var express=require(_0x314a('0x0'));var router=express[_0x314a('0x1')]();var auth=require(_0x314a('0x2'));var controller=require(_0x314a('0x3'));router[_0x314a('0x4')]('/',auth[_0x314a('0x5')](),controller[_0x314a('0x6')]);router[_0x314a('0x4')]('/describe',auth[_0x314a('0x5')](),controller[_0x314a('0x7')]);router[_0x314a('0x4')]('/opencontacts',auth[_0x314a('0x5')](),controller[_0x314a('0x8')]);router[_0x314a('0x4')](_0x314a('0x9'),auth[_0x314a('0x5')](),controller[_0x314a('0xa')]);router['get']('/:id',auth[_0x314a('0x5')](),controller['show']);router[_0x314a('0x4')]('/:id/previewrecall',auth['isAuthenticated'](),controller[_0x314a('0xb')]);router[_0x314a('0xc')]('/',auth['isAuthenticated'](),controller[_0x314a('0xd')]);router[_0x314a('0xc')](_0x314a('0xe'),auth[_0x314a('0x5')](),controller['getPreview']);router['post'](_0x314a('0xf'),auth[_0x314a('0x5')](),controller[_0x314a('0x10')]);router[_0x314a('0x11')]('/:id',auth[_0x314a('0x5')](),controller[_0x314a('0x12')]);router[_0x314a('0x13')](_0x314a('0x14'),auth[_0x314a('0x5')](),controller[_0x314a('0x15')]);module[_0x314a('0x16')]=router;
\ No newline at end of file
+var _0xdd70=['./cmHopper.controller','get','isAuthenticated','index','describe','/opencontacts','/:id','show','getPreviewRecall','post','create','/preview','getPreview','getTimezone','put','update','destroy','exports','express'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xdd70,0x1c7));var _0x0dd7=function(_0x40a257,_0x198734){_0x40a257=_0x40a257-0x0;var _0x17cb98=_0xdd70[_0x40a257];return _0x17cb98;};'use strict';var express=require(_0x0dd7('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x0dd7('0x1'));router[_0x0dd7('0x2')]('/',auth[_0x0dd7('0x3')](),controller[_0x0dd7('0x4')]);router[_0x0dd7('0x2')]('/describe',auth[_0x0dd7('0x3')](),controller[_0x0dd7('0x5')]);router[_0x0dd7('0x2')](_0x0dd7('0x6'),auth[_0x0dd7('0x3')](),controller['getOpenContacts']);router['get']('/timezones',auth[_0x0dd7('0x3')](),controller['getTimezones']);router[_0x0dd7('0x2')](_0x0dd7('0x7'),auth[_0x0dd7('0x3')](),controller[_0x0dd7('0x8')]);router[_0x0dd7('0x2')]('/:id/previewrecall',auth[_0x0dd7('0x3')](),controller[_0x0dd7('0x9')]);router[_0x0dd7('0xa')]('/',auth['isAuthenticated'](),controller[_0x0dd7('0xb')]);router[_0x0dd7('0xa')](_0x0dd7('0xc'),auth[_0x0dd7('0x3')](),controller[_0x0dd7('0xd')]);router[_0x0dd7('0xa')]('/timezone',auth['isAuthenticated'](),controller[_0x0dd7('0xe')]);router[_0x0dd7('0xf')]('/:id',auth[_0x0dd7('0x3')](),controller[_0x0dd7('0x10')]);router['delete'](_0x0dd7('0x7'),auth[_0x0dd7('0x3')](),controller[_0x0dd7('0x11')]);module[_0x0dd7('0x12')]=router;
\ No newline at end of file
index 305b509..0731f95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50c8=['exports','STRING','INTEGER','DATE','moment','sequelize'];(function(_0x2f9145,_0x39c59d){var _0x44a11b=function(_0x21b177){while(--_0x21b177){_0x2f9145['push'](_0x2f9145['shift']());}};_0x44a11b(++_0x39c59d);}(_0x50c8,0x190));var _0x850c=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x50c8[_0x31e29a];return _0x32d892;};'use strict';var moment=require(_0x850c('0x0'));var Sequelize=require(_0x850c('0x1'));module[_0x850c('0x2')]={'CmHopperId':{'type':Sequelize['INTEGER']},'phone':{'type':Sequelize[_0x850c('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x850c('0x4')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x850c('0x5')],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x850c('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x850c('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x850c('0x4')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x850c('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x850c('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x850c('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x850c('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf894=['STRING','DATE','format','INTEGER','moment','exports'];(function(_0x27e6c7,_0x3abcb2){var _0x6bd1a9=function(_0x6a1b5c){while(--_0x6a1b5c){_0x27e6c7['push'](_0x27e6c7['shift']());}};_0x6bd1a9(++_0x3abcb2);}(_0xf894,0x6a));var _0x4f89=function(_0x52bb7b,_0x197a4a){_0x52bb7b=_0x52bb7b-0x0;var _0x2d3c2e=_0xf894[_0x52bb7b];return _0x2d3c2e;};'use strict';var moment=require(_0x4f89('0x0'));var Sequelize=require('sequelize');module[_0x4f89('0x1')]={'CmHopperId':{'type':Sequelize['INTEGER']},'phone':{'type':Sequelize[_0x4f89('0x2')],'allowNull':![]},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x4f89('0x3')],'defaultValue':moment()[_0x4f89('0x4')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x4f89('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x4f89('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4f89('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4f89('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 7e70a78..ca49f18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4598=['index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','order','where','pick','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','then','CmHopperAdditionalPhones','UserProfileResource','end','stack','name','send'];(function(_0x1bb812,_0x23eacc){var _0x372adb=function(_0x5ad456){while(--_0x5ad456){_0x1bb812['push'](_0x1bb812['shift']());}};_0x372adb(++_0x23eacc);}(_0x4598,0x1af));var _0x8459=function(_0x453a19,_0x1af654){_0x453a19=_0x453a19-0x0;var _0x4a6edb=_0x4598[_0x453a19];return _0x4a6edb;};'use strict';var emlformat=require(_0x8459('0x0'));var rimraf=require(_0x8459('0x1'));var zipdir=require(_0x8459('0x2'));var jsonpatch=require(_0x8459('0x3'));var rp=require('request-promise');var moment=require(_0x8459('0x4'));var BPromise=require(_0x8459('0x5'));var Mustache=require('mustache');var util=require(_0x8459('0x6'));var path=require(_0x8459('0x7'));var sox=require('sox');var csv=require(_0x8459('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8459('0x9'));var _=require(_0x8459('0xa'));var squel=require(_0x8459('0xb'));var crypto=require('crypto');var jsforce=require(_0x8459('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8459('0xd'));var Redis=require(_0x8459('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8459('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8459('0x10'));var logger=require(_0x8459('0x11'))(_0x8459('0x12'));var utils=require(_0x8459('0x13'));var config=require(_0x8459('0x14'));var licenseUtil=require(_0x8459('0x15'));var db=require(_0x8459('0x16'))['db'];function respondWithStatusCode(_0x24ea27,_0x194ec5){_0x194ec5=_0x194ec5||0xcc;return function(_0x35e3e7){if(_0x35e3e7){return _0x24ea27[_0x8459('0x17')](_0x194ec5);}return _0x24ea27['status'](_0x194ec5)['end']();};}function respondWithResult(_0x20a8f6,_0x1d1ca0){_0x1d1ca0=_0x1d1ca0||0xc8;return function(_0x165605){if(_0x165605){return _0x20a8f6[_0x8459('0x18')](_0x1d1ca0)['json'](_0x165605);}};}function respondWithFilteredResult(_0x3794ce,_0x549bf9){return function(_0x3d5cae){if(_0x3d5cae){var _0x17c53d=typeof _0x549bf9['offset']==='undefined'&&typeof _0x549bf9['limit']===_0x8459('0x19');var _0x5ae4c7=_0x3d5cae[_0x8459('0x1a')];var _0x1d6cb5=_0x17c53d?0x0:_0x549bf9[_0x8459('0x1b')];var _0x5547b0=_0x17c53d?_0x3d5cae[_0x8459('0x1a')]:_0x549bf9['offset']+_0x549bf9[_0x8459('0x1c')];var _0x39f99b;if(_0x5547b0>=_0x5ae4c7){_0x5547b0=_0x5ae4c7;_0x39f99b=0xc8;}else{_0x39f99b=0xce;}_0x3794ce[_0x8459('0x18')](_0x39f99b);return _0x3794ce[_0x8459('0x1d')](_0x8459('0x1e'),_0x1d6cb5+'-'+_0x5547b0+'/'+_0x5ae4c7)[_0x8459('0x1f')](_0x3d5cae);}return null;};}function patchUpdates(_0x2cdc76){return function(_0x1b87a0){try{jsonpatch[_0x8459('0x20')](_0x1b87a0,_0x2cdc76,!![]);}catch(_0x15c677){return BPromise[_0x8459('0x21')](_0x15c677);}return _0x1b87a0['save']();};}function saveUpdates(_0x225cb2,_0x42a10d){return function(_0x4ae438){if(_0x4ae438){return _0x4ae438[_0x8459('0x22')](_0x225cb2)['then'](function(_0x4cea78){return _0x4cea78;});}return null;};}function removeEntity(_0x57d904,_0x1f38b0){return function(_0x2d6462){if(_0x2d6462){return _0x2d6462[_0x8459('0x23')]()[_0x8459('0x24')](function(){var _0x5583d4=_0x2d6462['get']({'plain':!![]});var _0x44000f=_0x8459('0x25');return db[_0x8459('0x26')][_0x8459('0x23')]({'where':{'type':_0x44000f,'resourceId':_0x5583d4['id']}})[_0x8459('0x24')](function(){return _0x2d6462;});})[_0x8459('0x24')](function(){_0x57d904[_0x8459('0x18')](0xcc)[_0x8459('0x27')]();});}};}function handleEntityNotFound(_0x174778,_0x451988){return function(_0x555842){if(!_0x555842){_0x174778['sendStatus'](0x194);}return _0x555842;};}function handleError(_0x1fce4f,_0x512351){_0x512351=_0x512351||0x1f4;return function(_0x11db3b){logger['error'](_0x11db3b[_0x8459('0x28')]);if(_0x11db3b[_0x8459('0x29')]){delete _0x11db3b[_0x8459('0x29')];}_0x1fce4f[_0x8459('0x18')](_0x512351)[_0x8459('0x2a')](_0x11db3b);};}exports[_0x8459('0x2b')]=function(_0x30af4d,_0x660e60){var _0x385b6c={},_0x31e766={},_0x14d53b={'count':0x0,'rows':[]};var _0x5caabc=_[_0x8459('0x2c')](db[_0x8459('0x2d')][_0x8459('0x2e')],function(_0x3321ed){return{'name':_0x3321ed[_0x8459('0x2f')],'type':_0x3321ed[_0x8459('0x30')]['key']};});_0x31e766[_0x8459('0x31')]=_[_0x8459('0x2c')](_0x5caabc,_0x8459('0x29'));_0x31e766[_0x8459('0x32')]=_[_0x8459('0x33')](_0x30af4d[_0x8459('0x32')]);_0x31e766[_0x8459('0x34')]=_[_0x8459('0x35')](_0x31e766[_0x8459('0x31')],_0x31e766[_0x8459('0x32')]);_0x385b6c[_0x8459('0x36')]=_[_0x8459('0x35')](_0x31e766['model'],qs[_0x8459('0x37')](_0x30af4d[_0x8459('0x32')]['fields']));_0x385b6c[_0x8459('0x36')]=_0x385b6c['attributes'][_0x8459('0x38')]?_0x385b6c['attributes']:_0x31e766[_0x8459('0x31')];if(!_0x30af4d[_0x8459('0x32')]['hasOwnProperty']('nolimit')){_0x385b6c[_0x8459('0x1c')]=qs['limit'](_0x30af4d[_0x8459('0x32')][_0x8459('0x1c')]);_0x385b6c[_0x8459('0x1b')]=qs['offset'](_0x30af4d[_0x8459('0x32')][_0x8459('0x1b')]);}_0x385b6c[_0x8459('0x39')]=qs['sort'](_0x30af4d[_0x8459('0x32')]['sort']);_0x385b6c[_0x8459('0x3a')]=qs['filters'](_[_0x8459('0x3b')](_0x30af4d['query'],_0x31e766[_0x8459('0x34')]),_0x5caabc);if(_0x30af4d[_0x8459('0x32')]['filter']){_0x385b6c[_0x8459('0x3a')]=_[_0x8459('0x3c')](_0x385b6c[_0x8459('0x3a')],{'$or':_[_0x8459('0x2c')](_0x5caabc,function(_0x4afd17){if(_0x4afd17[_0x8459('0x30')]!==_0x8459('0x3d')){var _0x47bb01={};_0x47bb01[_0x4afd17[_0x8459('0x29')]]={'$like':'%'+_0x30af4d[_0x8459('0x32')]['filter']+'%'};return _0x47bb01;}})});}_0x385b6c=_['merge']({},_0x385b6c,_0x30af4d[_0x8459('0x3e')]);var _0x2ce2fe={'where':_0x385b6c[_0x8459('0x3a')]};return db[_0x8459('0x2d')][_0x8459('0x1a')](_0x2ce2fe)['then'](function(_0x499a41){_0x14d53b[_0x8459('0x1a')]=_0x499a41;if(_0x30af4d[_0x8459('0x32')]['includeAll']){_0x385b6c[_0x8459('0x3f')]=[{'all':!![]}];}return db['CmHopperAdditionalPhone'][_0x8459('0x40')](_0x385b6c);})[_0x8459('0x24')](function(_0x40a024){_0x14d53b[_0x8459('0x41')]=_0x40a024;return _0x14d53b;})['then'](respondWithFilteredResult(_0x660e60,_0x385b6c))[_0x8459('0x42')](handleError(_0x660e60,null));};exports[_0x8459('0x43')]=function(_0x3ae1fa,_0x268545){var _0x13fcd6={'raw':!![],'where':{'id':_0x3ae1fa[_0x8459('0x44')]['id']}},_0x5f482c={};_0x5f482c['model']=_[_0x8459('0x33')](db[_0x8459('0x2d')][_0x8459('0x2e')]);_0x5f482c[_0x8459('0x32')]=_['keys'](_0x3ae1fa['query']);_0x5f482c['filters']=_[_0x8459('0x35')](_0x5f482c['model'],_0x5f482c[_0x8459('0x32')]);_0x13fcd6[_0x8459('0x36')]=_[_0x8459('0x35')](_0x5f482c['model'],qs[_0x8459('0x37')](_0x3ae1fa[_0x8459('0x32')][_0x8459('0x37')]));_0x13fcd6[_0x8459('0x36')]=_0x13fcd6[_0x8459('0x36')]['length']?_0x13fcd6['attributes']:_0x5f482c['model'];if(_0x3ae1fa[_0x8459('0x32')][_0x8459('0x45')]){_0x13fcd6['include']=[{'all':!![]}];}_0x13fcd6=_[_0x8459('0x3c')]({},_0x13fcd6,_0x3ae1fa['options']);return db['CmHopperAdditionalPhone'][_0x8459('0x46')](_0x13fcd6)[_0x8459('0x24')](handleEntityNotFound(_0x268545,null))[_0x8459('0x24')](respondWithResult(_0x268545,null))[_0x8459('0x42')](handleError(_0x268545,null));};exports[_0x8459('0x47')]=function(_0x3662df,_0x2dfdf7){return db[_0x8459('0x2d')][_0x8459('0x47')](_0x3662df[_0x8459('0x48')],{})[_0x8459('0x24')](function(_0x5bbfcd){var _0x275d8d=_0x3662df[_0x8459('0x49')]['get']({'plain':!![]});if(!_0x275d8d)throw new Error(_0x8459('0x4a'));if(_0x275d8d['role']===_0x8459('0x49')){var _0x183d33=_0x5bbfcd['get']({'plain':!![]});var _0x541710='CmHopperAdditionalPhones';return db[_0x8459('0x4b')][_0x8459('0x46')]({'where':{'name':_0x541710,'userProfileId':_0x275d8d[_0x8459('0x4c')]},'raw':!![]})[_0x8459('0x24')](function(_0x1a57a5){if(_0x1a57a5&&_0x1a57a5[_0x8459('0x4d')]===0x0){return db[_0x8459('0x26')][_0x8459('0x47')]({'name':_0x183d33[_0x8459('0x29')],'resourceId':_0x183d33['id'],'type':_0x1a57a5[_0x8459('0x29')],'sectionId':_0x1a57a5['id']},{})[_0x8459('0x24')](function(){return _0x5bbfcd;});}else{return _0x5bbfcd;}})['catch'](function(_0x552167){logger[_0x8459('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x552167);throw _0x552167;});}return _0x5bbfcd;})[_0x8459('0x24')](respondWithResult(_0x2dfdf7,0xc9))['catch'](handleError(_0x2dfdf7,null));};exports[_0x8459('0x22')]=function(_0x578bf2,_0x3541ae){if(_0x578bf2[_0x8459('0x48')]['id']){delete _0x578bf2[_0x8459('0x48')]['id'];}return db[_0x8459('0x2d')][_0x8459('0x46')]({'where':{'id':_0x578bf2[_0x8459('0x44')]['id']}})[_0x8459('0x24')](handleEntityNotFound(_0x3541ae,null))[_0x8459('0x24')](saveUpdates(_0x578bf2['body'],null))[_0x8459('0x24')](respondWithResult(_0x3541ae,null))[_0x8459('0x42')](handleError(_0x3541ae,null));};exports[_0x8459('0x23')]=function(_0x2e8945,_0x530902){return db[_0x8459('0x2d')]['find']({'where':{'id':_0x2e8945[_0x8459('0x44')]['id']}})['then'](handleEntityNotFound(_0x530902,null))[_0x8459('0x24')](removeEntity(_0x530902,null))['catch'](handleError(_0x530902,null));};
\ No newline at end of file
+var _0x8cb2=['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','offset','undefined','limit','Content-Range','json','apply','reject','save','update','then','destroy','get','CmHopperAdditionalPhones','UserProfileResource','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','pick','filters','filter','VIRTUAL','merge','options','count','include','findAll','catch','params','length','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x178913,_0x3a4ce2){var _0x160d8e=function(_0x409c73){while(--_0x409c73){_0x178913['push'](_0x178913['shift']());}};_0x160d8e(++_0x3a4ce2);}(_0x8cb2,0x147));var _0x28cb=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8cb2[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x28cb('0x0'));var rimraf=require(_0x28cb('0x1'));var zipdir=require(_0x28cb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x28cb('0x3'));var moment=require(_0x28cb('0x4'));var BPromise=require(_0x28cb('0x5'));var Mustache=require('mustache');var util=require(_0x28cb('0x6'));var path=require('path');var sox=require(_0x28cb('0x7'));var csv=require(_0x28cb('0x8'));var ejs=require(_0x28cb('0x9'));var fs=require('fs');var fs_extra=require(_0x28cb('0xa'));var _=require(_0x28cb('0xb'));var squel=require(_0x28cb('0xc'));var crypto=require(_0x28cb('0xd'));var jsforce=require(_0x28cb('0xe'));var deskjs=require(_0x28cb('0xf'));var toCsv=require('to-csv');var querystring=require(_0x28cb('0x10'));var Papa=require(_0x28cb('0x11'));var Redis=require(_0x28cb('0x12'));var authService=require(_0x28cb('0x13'));var qs=require(_0x28cb('0x14'));var as=require(_0x28cb('0x15'));var hardwareService=require(_0x28cb('0x16'));var logger=require('../../config/logger')(_0x28cb('0x17'));var utils=require(_0x28cb('0x18'));var config=require(_0x28cb('0x19'));var licenseUtil=require(_0x28cb('0x1a'));var db=require(_0x28cb('0x1b'))['db'];function respondWithStatusCode(_0x4433d9,_0x43c50c){_0x43c50c=_0x43c50c||0xcc;return function(_0x2ec68f){if(_0x2ec68f){return _0x4433d9[_0x28cb('0x1c')](_0x43c50c);}return _0x4433d9[_0x28cb('0x1d')](_0x43c50c)[_0x28cb('0x1e')]();};}function respondWithResult(_0x43f13e,_0x5a56ff){_0x5a56ff=_0x5a56ff||0xc8;return function(_0x5f3ee3){if(_0x5f3ee3){return _0x43f13e[_0x28cb('0x1d')](_0x5a56ff)['json'](_0x5f3ee3);}};}function respondWithFilteredResult(_0x5034fa,_0x2a024a){return function(_0x449a81){if(_0x449a81){var _0x345fdd=typeof _0x2a024a[_0x28cb('0x1f')]===_0x28cb('0x20')&&typeof _0x2a024a['limit']===_0x28cb('0x20');var _0x552334=_0x449a81['count'];var _0x5945e1=_0x345fdd?0x0:_0x2a024a[_0x28cb('0x1f')];var _0x2226d1=_0x345fdd?_0x449a81['count']:_0x2a024a['offset']+_0x2a024a[_0x28cb('0x21')];var _0x1c9fca;if(_0x2226d1>=_0x552334){_0x2226d1=_0x552334;_0x1c9fca=0xc8;}else{_0x1c9fca=0xce;}_0x5034fa[_0x28cb('0x1d')](_0x1c9fca);return _0x5034fa['set'](_0x28cb('0x22'),_0x5945e1+'-'+_0x2226d1+'/'+_0x552334)[_0x28cb('0x23')](_0x449a81);}return null;};}function patchUpdates(_0x3052e1){return function(_0x19e05a){try{jsonpatch[_0x28cb('0x24')](_0x19e05a,_0x3052e1,!![]);}catch(_0x57c661){return BPromise[_0x28cb('0x25')](_0x57c661);}return _0x19e05a[_0x28cb('0x26')]();};}function saveUpdates(_0x285fbd,_0x19f404){return function(_0x2187b4){if(_0x2187b4){return _0x2187b4[_0x28cb('0x27')](_0x285fbd)[_0x28cb('0x28')](function(_0x5e89b1){return _0x5e89b1;});}return null;};}function removeEntity(_0x213512,_0x1f366b){return function(_0x122dfd){if(_0x122dfd){return _0x122dfd[_0x28cb('0x29')]()['then'](function(){var _0x39dccb=_0x122dfd[_0x28cb('0x2a')]({'plain':!![]});var _0x295807=_0x28cb('0x2b');return db[_0x28cb('0x2c')][_0x28cb('0x29')]({'where':{'type':_0x295807,'resourceId':_0x39dccb['id']}})['then'](function(){return _0x122dfd;});})[_0x28cb('0x28')](function(){_0x213512['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x40fe94,_0x1e0302){return function(_0x15d38f){if(!_0x15d38f){_0x40fe94[_0x28cb('0x1c')](0x194);}return _0x15d38f;};}function handleError(_0xbf4628,_0x2338cb){_0x2338cb=_0x2338cb||0x1f4;return function(_0x1c97dd){logger['error'](_0x1c97dd[_0x28cb('0x2d')]);if(_0x1c97dd[_0x28cb('0x2e')]){delete _0x1c97dd['name'];}_0xbf4628[_0x28cb('0x1d')](_0x2338cb)[_0x28cb('0x2f')](_0x1c97dd);};}exports[_0x28cb('0x30')]=function(_0x3c7bed,_0x224180){var _0x203cba={},_0x3180ce={},_0x15cdc8={'count':0x0,'rows':[]};var _0x2627c2=_[_0x28cb('0x31')](db[_0x28cb('0x32')][_0x28cb('0x33')],function(_0x2196e9){return{'name':_0x2196e9[_0x28cb('0x34')],'type':_0x2196e9[_0x28cb('0x35')][_0x28cb('0x36')]};});_0x3180ce[_0x28cb('0x37')]=_['map'](_0x2627c2,_0x28cb('0x2e'));_0x3180ce[_0x28cb('0x38')]=_[_0x28cb('0x39')](_0x3c7bed[_0x28cb('0x38')]);_0x3180ce['filters']=_[_0x28cb('0x3a')](_0x3180ce[_0x28cb('0x37')],_0x3180ce['query']);_0x203cba[_0x28cb('0x3b')]=_[_0x28cb('0x3a')](_0x3180ce[_0x28cb('0x37')],qs['fields'](_0x3c7bed[_0x28cb('0x38')][_0x28cb('0x3c')]));_0x203cba['attributes']=_0x203cba[_0x28cb('0x3b')]['length']?_0x203cba['attributes']:_0x3180ce[_0x28cb('0x37')];if(!_0x3c7bed['query']['hasOwnProperty'](_0x28cb('0x3d'))){_0x203cba[_0x28cb('0x21')]=qs[_0x28cb('0x21')](_0x3c7bed[_0x28cb('0x38')][_0x28cb('0x21')]);_0x203cba[_0x28cb('0x1f')]=qs[_0x28cb('0x1f')](_0x3c7bed[_0x28cb('0x38')]['offset']);}_0x203cba[_0x28cb('0x3e')]=qs[_0x28cb('0x3f')](_0x3c7bed[_0x28cb('0x38')]['sort']);_0x203cba[_0x28cb('0x40')]=qs['filters'](_[_0x28cb('0x41')](_0x3c7bed['query'],_0x3180ce[_0x28cb('0x42')]),_0x2627c2);if(_0x3c7bed['query'][_0x28cb('0x43')]){_0x203cba['where']=_['merge'](_0x203cba[_0x28cb('0x40')],{'$or':_[_0x28cb('0x31')](_0x2627c2,function(_0x3ecb52){if(_0x3ecb52[_0x28cb('0x35')]!==_0x28cb('0x44')){var _0x213141={};_0x213141[_0x3ecb52[_0x28cb('0x2e')]]={'$like':'%'+_0x3c7bed[_0x28cb('0x38')][_0x28cb('0x43')]+'%'};return _0x213141;}})});}_0x203cba=_[_0x28cb('0x45')]({},_0x203cba,_0x3c7bed[_0x28cb('0x46')]);var _0x2e046a={'where':_0x203cba['where']};return db[_0x28cb('0x32')][_0x28cb('0x47')](_0x2e046a)['then'](function(_0x1dc195){_0x15cdc8[_0x28cb('0x47')]=_0x1dc195;if(_0x3c7bed[_0x28cb('0x38')]['includeAll']){_0x203cba[_0x28cb('0x48')]=[{'all':!![]}];}return db[_0x28cb('0x32')][_0x28cb('0x49')](_0x203cba);})[_0x28cb('0x28')](function(_0x4134ef){_0x15cdc8['rows']=_0x4134ef;return _0x15cdc8;})['then'](respondWithFilteredResult(_0x224180,_0x203cba))[_0x28cb('0x4a')](handleError(_0x224180,null));};exports['show']=function(_0x58cd92,_0x3272c0){var _0x1135c7={'raw':!![],'where':{'id':_0x58cd92[_0x28cb('0x4b')]['id']}},_0x34963a={};_0x34963a[_0x28cb('0x37')]=_['keys'](db[_0x28cb('0x32')][_0x28cb('0x33')]);_0x34963a[_0x28cb('0x38')]=_[_0x28cb('0x39')](_0x58cd92[_0x28cb('0x38')]);_0x34963a[_0x28cb('0x42')]=_[_0x28cb('0x3a')](_0x34963a[_0x28cb('0x37')],_0x34963a[_0x28cb('0x38')]);_0x1135c7[_0x28cb('0x3b')]=_[_0x28cb('0x3a')](_0x34963a[_0x28cb('0x37')],qs[_0x28cb('0x3c')](_0x58cd92[_0x28cb('0x38')][_0x28cb('0x3c')]));_0x1135c7[_0x28cb('0x3b')]=_0x1135c7['attributes'][_0x28cb('0x4c')]?_0x1135c7[_0x28cb('0x3b')]:_0x34963a[_0x28cb('0x37')];if(_0x58cd92[_0x28cb('0x38')][_0x28cb('0x4d')]){_0x1135c7[_0x28cb('0x48')]=[{'all':!![]}];}_0x1135c7=_[_0x28cb('0x45')]({},_0x1135c7,_0x58cd92[_0x28cb('0x46')]);return db[_0x28cb('0x32')]['find'](_0x1135c7)[_0x28cb('0x28')](handleEntityNotFound(_0x3272c0,null))[_0x28cb('0x28')](respondWithResult(_0x3272c0,null))[_0x28cb('0x4a')](handleError(_0x3272c0,null));};exports['create']=function(_0x286ea7,_0x1f94f9){return db[_0x28cb('0x32')][_0x28cb('0x4e')](_0x286ea7[_0x28cb('0x4f')],{})[_0x28cb('0x28')](function(_0x360ba6){var _0x361f78=_0x286ea7[_0x28cb('0x50')]['get']({'plain':!![]});if(!_0x361f78)throw new Error(_0x28cb('0x51'));if(_0x361f78[_0x28cb('0x52')]===_0x28cb('0x50')){var _0x514b54=_0x360ba6[_0x28cb('0x2a')]({'plain':!![]});var _0x4e59e8=_0x28cb('0x2b');return db['UserProfileSection'][_0x28cb('0x53')]({'where':{'name':_0x4e59e8,'userProfileId':_0x361f78['userProfileId']},'raw':!![]})[_0x28cb('0x28')](function(_0x58f1b7){if(_0x58f1b7&&_0x58f1b7['autoAssociation']===0x0){return db[_0x28cb('0x2c')]['create']({'name':_0x514b54[_0x28cb('0x2e')],'resourceId':_0x514b54['id'],'type':_0x58f1b7['name'],'sectionId':_0x58f1b7['id']},{})[_0x28cb('0x28')](function(){return _0x360ba6;});}else{return _0x360ba6;}})[_0x28cb('0x4a')](function(_0xcd049a){logger[_0x28cb('0x54')](_0x28cb('0x55'),_0xcd049a);throw _0xcd049a;});}return _0x360ba6;})[_0x28cb('0x28')](respondWithResult(_0x1f94f9,0xc9))['catch'](handleError(_0x1f94f9,null));};exports[_0x28cb('0x27')]=function(_0x1d4fa2,_0x24215e){if(_0x1d4fa2[_0x28cb('0x4f')]['id']){delete _0x1d4fa2[_0x28cb('0x4f')]['id'];}return db[_0x28cb('0x32')][_0x28cb('0x53')]({'where':{'id':_0x1d4fa2['params']['id']}})[_0x28cb('0x28')](handleEntityNotFound(_0x24215e,null))[_0x28cb('0x28')](saveUpdates(_0x1d4fa2[_0x28cb('0x4f')],null))['then'](respondWithResult(_0x24215e,null))[_0x28cb('0x4a')](handleError(_0x24215e,null));};exports[_0x28cb('0x29')]=function(_0x20f558,_0x2b93ea){return db[_0x28cb('0x32')][_0x28cb('0x53')]({'where':{'id':_0x20f558[_0x28cb('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2b93ea,null))[_0x28cb('0x28')](removeEntity(_0x2b93ea,null))[_0x28cb('0x4a')](handleError(_0x2b93ea,null));};
\ No newline at end of file
index 6a9a4c7..29890a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7573=['request-promise','path','rimraf','exports','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x128fe1,_0x304ccf){var _0x113f6e=function(_0x1717fb){while(--_0x1717fb){_0x128fe1['push'](_0x128fe1['shift']());}};_0x113f6e(++_0x304ccf);}(_0x7573,0x72));var _0x3757=function(_0x287820,_0x4233b2){_0x287820=_0x287820-0x0;var _0x573677=_0x7573[_0x287820];return _0x573677;};'use strict';var _=require(_0x3757('0x0'));var util=require(_0x3757('0x1'));var logger=require(_0x3757('0x2'))(_0x3757('0x3'));var moment=require(_0x3757('0x4'));var BPromise=require(_0x3757('0x5'));var rp=require(_0x3757('0x6'));var fs=require('fs');var path=require(_0x3757('0x7'));var rimraf=require(_0x3757('0x8'));var config=require('../../config/environment');var attributes=require('./cmHopperAdditionalPhone.attributes');module[_0x3757('0x9')]=function(_0x55e1fd,_0x162b4e){return _0x55e1fd['define'](_0x3757('0xa'),attributes,{'tableName':_0x3757('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4720=['request-promise','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','../../config/logger','api','moment','bluebird'];(function(_0x1b23e7,_0x44e9a0){var _0x52c72b=function(_0x1ad83f){while(--_0x1ad83f){_0x1b23e7['push'](_0x1b23e7['shift']());}};_0x52c72b(++_0x44e9a0);}(_0x4720,0x164));var _0x0472=function(_0x4e7844,_0x30ce77){_0x4e7844=_0x4e7844-0x0;var _0x336119=_0x4720[_0x4e7844];return _0x336119;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0472('0x0'))(_0x0472('0x1'));var moment=require(_0x0472('0x2'));var BPromise=require(_0x0472('0x3'));var rp=require(_0x0472('0x4'));var fs=require('fs');var path=require(_0x0472('0x5'));var rimraf=require(_0x0472('0x6'));var config=require(_0x0472('0x7'));var attributes=require(_0x0472('0x8'));module[_0x0472('0x9')]=function(_0x4e49a1,_0x199f62){return _0x4e49a1[_0x0472('0xa')](_0x0472('0xb'),attributes,{'tableName':'cm_hopper_additional_phones','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf680c3..b8c430d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf948=['activateAdditionalPhone','IncrementPreviewCounters','field','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','ASC','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countagentrejectretry','dialGlobalMaxRetry','countabandonedretry','countmachineretry','entity','OrderBy','duration','waitTime','isNil','scheduledat','add','minutes','phone','countnoanswerretry','createdAt','updatedAt','sequelize','transaction','update'];(function(_0x10d42b,_0x142201){var _0x598fa2=function(_0x4edbce){while(--_0x4edbce){_0x10d42b['push'](_0x10d42b['shift']());}};_0x598fa2(++_0x142201);}(_0xf948,0x79));var _0x8f94=function(_0x4ea05b,_0x505a2c){_0x4ea05b=_0x4ea05b-0x0;var _0xe4282d=_0xf948[_0x4ea05b];return _0xe4282d;};'use strict';var _=require(_0x8f94('0x0'));var util=require(_0x8f94('0x1'));var moment=require(_0x8f94('0x2'));var BPromise=require(_0x8f94('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8f94('0x4'));var db=require(_0x8f94('0x5'))['db'];var utils=require(_0x8f94('0x6'));var logger=require(_0x8f94('0x7'))('rpc');var config=require(_0x8f94('0x8'));var jayson=require(_0x8f94('0x9'));var client=jayson[_0x8f94('0xa')][_0x8f94('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4fee5f,_0x399260,_0x42d2a9){return new BPromise(function(_0x581d3d,_0x284141){return client[_0x8f94('0xc')](_0x4fee5f,_0x42d2a9)[_0x8f94('0xd')](function(_0x32f098){logger[_0x8f94('0xe')](_0x8f94('0xf'),_0x399260,_0x8f94('0x10'));logger['debug'](_0x8f94('0x11'),_0x399260,_0x8f94('0x10'),JSON[_0x8f94('0x12')](_0x32f098));if(_0x32f098[_0x8f94('0x13')]){if(_0x32f098[_0x8f94('0x13')]['code']===0x1f4){logger[_0x8f94('0x13')](_0x8f94('0xf'),_0x399260,_0x32f098[_0x8f94('0x13')][_0x8f94('0x14')]);return _0x284141(_0x32f098['error']['message']);}logger['error'](_0x8f94('0xf'),_0x399260,_0x32f098['error']['message']);return _0x581d3d(_0x32f098[_0x8f94('0x13')]['message']);}else{logger[_0x8f94('0xe')](_0x8f94('0xf'),_0x399260,_0x8f94('0x10'));_0x581d3d(_0x32f098[_0x8f94('0x15')]['message']);}})[_0x8f94('0x16')](function(_0x54bec6){logger[_0x8f94('0x13')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x399260,_0x54bec6);_0x284141(_0x54bec6);});});}exports[_0x8f94('0x17')]=function(_0x16d54d){var _0x378267=this;return new Promise(function(_0x46884e,_0x3d3a6b){return db[_0x8f94('0x18')][_0x8f94('0x19')]({'raw':!![],'where':{'ContactId':_0x16d54d[_0x8f94('0x1a')][_0x8f94('0x1b')],'ListId':_0x16d54d[_0x8f94('0x1a')][_0x8f94('0x1c')],'VoiceQueueId':_0x16d54d[_0x8f94('0x1a')][_0x8f94('0x1d')]===undefined?null:_0x16d54d[_0x8f94('0x1a')]['VoiceQueueId'],'CampaignId':_0x16d54d[_0x8f94('0x1a')]['CampaignId']===undefined?null:_0x16d54d['body'][_0x8f94('0x1e')]}})[_0x8f94('0xd')](function(_0x48cd25){if(_0x48cd25!=null){return db[_0x8f94('0x1f')][_0x8f94('0x19')]({'raw':!![],'where':{'CmHopperId':_0x48cd25['id'],'OrderBy':{'$gt':_0x48cd25['OrderBy']}},'order':[['OrderBy',_0x8f94('0x20')]]})[_0x8f94('0xd')](function(_0xae7a50){var _0xd5536a=0x0;if(_0xae7a50){if(_0xae7a50[_0x8f94('0x21')]+_0xae7a50[_0x8f94('0x22')]+_0xae7a50['countnoanswerretry']+_0xae7a50[_0x8f94('0x23')]+_0xae7a50[_0x8f94('0x24')]+_0xae7a50['countabandonedretry']+_0xae7a50['countmachineretry']+_0xae7a50[_0x8f94('0x25')]<_0x16d54d['entity'][_0x8f94('0x26')])_0xd5536a=0x1;_0x46884e({'additional':_0xd5536a});}else{return db[_0x8f94('0x1f')][_0x8f94('0x19')]({'raw':!![],'where':{'CmHopperId':_0x48cd25['id']},'order':[['OrderBy',_0x8f94('0x20')]]})[_0x8f94('0xd')](function(_0x4e04b5){var _0x54754d=0x0;if(_0x4e04b5){if(_0x4e04b5[_0x8f94('0x21')]+_0x4e04b5[_0x8f94('0x22')]+_0x4e04b5['countnoanswerretry']+_0x4e04b5[_0x8f94('0x23')]+_0x4e04b5[_0x8f94('0x24')]+_0x4e04b5[_0x8f94('0x27')]+_0x4e04b5[_0x8f94('0x28')]+_0x4e04b5[_0x8f94('0x25')]<_0x16d54d[_0x8f94('0x29')][_0x8f94('0x26')])_0x54754d=0x1;_0x46884e({'additional':_0x54754d});}else{_0x46884e({'additional':0x0});}})['catch'](function(_0x24d60c){logger[_0x8f94('0x13')](_0x8f94('0x17'),_0x24d60c['message']);_0x3d3a6b(_0x378267['error'](0x1f4,_0x24d60c[_0x8f94('0x14')]));});}})['catch'](function(_0x11fd85){logger[_0x8f94('0x13')](_0x8f94('0x17'),_0x11fd85[_0x8f94('0x14')]);_0x3d3a6b(_0x378267[_0x8f94('0x13')](0x1f4,_0x11fd85[_0x8f94('0x14')]));});}else _0x46884e({'additional':0x0});});});};exports['SwapAdditionalPhones']=function(_0x42ecfe){var _0x8edd34=this;return new Promise(function(_0x41db69,_0x1127ab){return db[_0x8f94('0x18')][_0x8f94('0x19')]({'raw':!![],'where':{'ContactId':_0x42ecfe[_0x8f94('0x1a')][_0x8f94('0x1b')],'ListId':_0x42ecfe[_0x8f94('0x1a')][_0x8f94('0x1c')],'VoiceQueueId':_0x42ecfe[_0x8f94('0x1a')][_0x8f94('0x1d')]===undefined?null:_0x42ecfe[_0x8f94('0x1a')][_0x8f94('0x1d')],'CampaignId':_0x42ecfe['body'][_0x8f94('0x1e')]===undefined?null:_0x42ecfe['body'][_0x8f94('0x1e')]}})['then'](function(_0x421b43){if(_0x421b43!=null){return db['CmHopperAdditionalPhone'][_0x8f94('0x19')]({'raw':!![],'where':{'CmHopperId':_0x421b43['id'],'OrderBy':{'$gte':_0x421b43[_0x8f94('0x2a')]}},'order':[[_0x8f94('0x2a'),'ASC']]})[_0x8f94('0xd')](function(_0x45fabd){if(_0x45fabd)return activateAdditionalPhone(_0x421b43,_0x42ecfe['body'],_0x45fabd,_0x42ecfe['duration'],_0x42ecfe['waitTime'])['then'](function(_0x2a33e0){_0x41db69(_0x2a33e0);});else{return db[_0x8f94('0x1f')][_0x8f94('0x19')]({'raw':!![],'where':{'CmHopperId':_0x421b43['id']},'order':[[_0x8f94('0x2a'),_0x8f94('0x20')]]})['then'](function(_0x3ccdc2){if(_0x3ccdc2)return activateAdditionalPhone(_0x421b43,_0x42ecfe[_0x8f94('0x1a')],_0x3ccdc2,_0x42ecfe[_0x8f94('0x2b')],_0x42ecfe[_0x8f94('0x2c')])['then'](function(_0x31669f){_0x41db69(_0x31669f);});else{_0x41db69({'id':_0x421b43['id'],'phone':''});}})[_0x8f94('0x16')](function(_0x42f29e){logger['error'](_0x8f94('0x17'),_0x42f29e[_0x8f94('0x14')]);_0x1127ab(_0x8edd34[_0x8f94('0x13')](0x1f4,_0x42f29e[_0x8f94('0x14')]));});}})[_0x8f94('0x16')](function(_0x41ffc6){logger[_0x8f94('0x13')](_0x8f94('0x17'),_0x41ffc6['message']);_0x1127ab(_0x8edd34[_0x8f94('0x13')](0x1f4,_0x41ffc6[_0x8f94('0x14')]));});}else _0x41db69(0x1);});});};function activateAdditionalPhone(_0x1aef53,_0x5a3f5b,_0x1d705b,_0x2caaea,_0x14de98){return new Promise(function(_0x2cc002,_0x74751e){var _0x36c82b;if(_[_0x8f94('0x2d')](_0x1d705b[_0x8f94('0x2e')])){_0x1d705b[_0x8f94('0x2e')]=moment();}if(moment()>moment(_0x1d705b[_0x8f94('0x2e')])){_0x36c82b=moment()[_0x8f94('0x2f')](_0x14de98||0x3,_0x8f94('0x30'));}else{if(_0x1d705b['OrderBy']==0x0){_0x36c82b=moment(_0x1d705b[_0x8f94('0x2e')]);}else{_0x36c82b=moment()[_0x8f94('0x2f')](_0x14de98||0x3,_0x8f94('0x30'));}}if(_[_0x8f94('0x2d')](_0x36c82b)){_0x36c82b=moment()[_0x8f94('0x2f')](_0x14de98||0x3,_0x8f94('0x30'));}var _0x10781f={'phone':_0x1aef53[_0x8f94('0x31')],'active':0x0,'OrderBy':_[_0x8f94('0x2d')](_0x1aef53[_0x8f94('0x2a')])?0x0:_0x1aef53[_0x8f94('0x2a')],'scheduledat':moment()[_0x8f94('0x2f')](_0x2caaea||0x1,'minutes'),'countbusyretry':_0x5a3f5b['countbusyretry'],'countcongestionretry':_0x5a3f5b[_0x8f94('0x22')],'countnoanswerretry':_0x5a3f5b[_0x8f94('0x32')],'countnosuchnumberretry':_0x5a3f5b[_0x8f94('0x23')],'countdropretry':_0x5a3f5b['countdropretry'],'countabandonedretry':_0x5a3f5b[_0x8f94('0x27')],'countmachineretry':_0x5a3f5b[_0x8f94('0x28')],'countagentrejectretry':_0x5a3f5b[_0x8f94('0x25')],'createdAt':_0x5a3f5b[_0x8f94('0x33')],'updatedAt':_0x5a3f5b['updatedAt']};var _0x13462a={'CmHopperId':_0x1aef53['id'],'phone':_0x1d705b[_0x8f94('0x31')],'active':0x0,'OrderBy':_['isNil'](_0x1d705b['OrderBy'])?0x0:_0x1d705b['OrderBy'],'scheduledat':_0x36c82b,'countbusyretry':_0x1d705b['countbusyretry'],'countcongestionretry':_0x1d705b[_0x8f94('0x22')],'countnoanswerretry':_0x1d705b['countnoanswerretry'],'countnosuchnumberretry':_0x1d705b[_0x8f94('0x23')],'countdropretry':_0x1d705b[_0x8f94('0x24')],'countabandonedretry':_0x1d705b[_0x8f94('0x27')],'countmachineretry':_0x1d705b[_0x8f94('0x28')],'countagentrejectretry':_0x1d705b['countagentrejectretry'],'createdAt':_0x1d705b[_0x8f94('0x33')],'updatedAt':_0x1d705b[_0x8f94('0x34')]};return db[_0x8f94('0x35')][_0x8f94('0x36')](function(_0x166de3){return db[_0x8f94('0x1f')][_0x8f94('0x37')](_0x10781f,{'where':{'id':_0x1d705b['id']}},{'transaction':_0x166de3})[_0x8f94('0xd')](function(){return db[_0x8f94('0x18')]['update'](_0x13462a,{'where':{'id':_0x1aef53['id']}},{'transaction':_0x166de3});});})[_0x8f94('0xd')](function(_0x51832b){_0x2cc002({'id':_0x1aef53['id'],'phone':_0x1d705b['phone']});})[_0x8f94('0x16')](function(_0x2168bd){logger[_0x8f94('0x13')](_0x8f94('0x38'),_0x2168bd['message']);_0x74751e({'error':_0x2168bd[_0x8f94('0x14')]});});});}exports[_0x8f94('0x39')]=function(_0xa22102){var _0x1d76e6=this;return new Promise(function(_0x3e52ed,_0x252e72){return db['CmHopper'][_0x8f94('0x37')](_0xa22102[_0x8f94('0x1a')][_0x8f94('0x3a')],{'where':{'id':_0xa22102[_0x8f94('0x1a')]['id']}})[_0x8f94('0xd')](function(_0x45044a){_0x3e52ed(_0x45044a);})[_0x8f94('0x16')](function(_0x58e987){logger[_0x8f94('0x13')](_0x8f94('0x39'),_0x58e987[_0x8f94('0x14')]);_0x252e72(_0x1d76e6[_0x8f94('0x13')](0x1f4,_0x58e987[_0x8f94('0x14')]));});});};
\ No newline at end of file
+var _0x18a1=['message','info','result','catch','findOne','body','ListId','VoiceQueueId','CampaignId','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','CmHopperAdditionalPhone','entity','VerifyAdditionalPhones','SwapAdditionalPhones','CmHopper','ContactId','waitTime','duration','isNil','scheduledat','add','minutes','updatedAt','phone','createdAt','sequelize','transaction','update','activateAdditionalPhone','IncrementPreviewCounters','field','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','error','code','CmHopperAdditionalPhone,\x20%s,\x20%s'];(function(_0x309d92,_0x37bcd3){var _0x46f3de=function(_0x3dabe4){while(--_0x3dabe4){_0x309d92['push'](_0x309d92['shift']());}};_0x46f3de(++_0x37bcd3);}(_0x18a1,0x191));var _0x118a=function(_0x541151,_0x40a019){_0x541151=_0x541151-0x0;var _0x13e4e8=_0x18a1[_0x541151];return _0x13e4e8;};'use strict';var _=require(_0x118a('0x0'));var util=require(_0x118a('0x1'));var moment=require('moment');var BPromise=require(_0x118a('0x2'));var rs=require(_0x118a('0x3'));var fs=require('fs');var Redis=require(_0x118a('0x4'));var db=require(_0x118a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x118a('0x6'))(_0x118a('0x7'));var config=require(_0x118a('0x8'));var jayson=require(_0x118a('0x9'));var client=jayson[_0x118a('0xa')][_0x118a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x20126c,_0x1ecb86,_0x3884b7){return new BPromise(function(_0x41d84f,_0x4412f4){return client[_0x118a('0xc')](_0x20126c,_0x3884b7)[_0x118a('0xd')](function(_0x5b0420){logger['info']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x1ecb86,_0x118a('0xe'));logger['debug'](_0x118a('0xf'),_0x1ecb86,'request\x20sent',JSON['stringify'](_0x5b0420));if(_0x5b0420['error']){if(_0x5b0420[_0x118a('0x10')][_0x118a('0x11')]===0x1f4){logger[_0x118a('0x10')](_0x118a('0x12'),_0x1ecb86,_0x5b0420[_0x118a('0x10')][_0x118a('0x13')]);return _0x4412f4(_0x5b0420[_0x118a('0x10')][_0x118a('0x13')]);}logger[_0x118a('0x10')](_0x118a('0x12'),_0x1ecb86,_0x5b0420[_0x118a('0x10')]['message']);return _0x41d84f(_0x5b0420[_0x118a('0x10')]['message']);}else{logger[_0x118a('0x14')](_0x118a('0x12'),_0x1ecb86,'request\x20sent');_0x41d84f(_0x5b0420[_0x118a('0x15')]['message']);}})[_0x118a('0x16')](function(_0x707d94){logger[_0x118a('0x10')](_0x118a('0x12'),_0x1ecb86,_0x707d94);_0x4412f4(_0x707d94);});});}exports['VerifyAdditionalPhones']=function(_0x12ede3){var _0x231cdc=this;return new Promise(function(_0x3eec08,_0x56e6fc){return db['CmHopper'][_0x118a('0x17')]({'raw':!![],'where':{'ContactId':_0x12ede3['body']['ContactId'],'ListId':_0x12ede3[_0x118a('0x18')][_0x118a('0x19')],'VoiceQueueId':_0x12ede3[_0x118a('0x18')][_0x118a('0x1a')]===undefined?null:_0x12ede3[_0x118a('0x18')][_0x118a('0x1a')],'CampaignId':_0x12ede3['body'][_0x118a('0x1b')]===undefined?null:_0x12ede3[_0x118a('0x18')][_0x118a('0x1b')]}})[_0x118a('0xd')](function(_0x4811ce){if(_0x4811ce!=null){return db['CmHopperAdditionalPhone']['findOne']({'raw':!![],'where':{'CmHopperId':_0x4811ce['id'],'OrderBy':{'$gt':_0x4811ce['OrderBy']}},'order':[[_0x118a('0x1c'),_0x118a('0x1d')]]})[_0x118a('0xd')](function(_0x3b582d){var _0x135ffc=0x0;if(_0x3b582d){if(_0x3b582d[_0x118a('0x1e')]+_0x3b582d[_0x118a('0x1f')]+_0x3b582d[_0x118a('0x20')]+_0x3b582d[_0x118a('0x21')]+_0x3b582d[_0x118a('0x22')]+_0x3b582d[_0x118a('0x23')]+_0x3b582d[_0x118a('0x24')]+_0x3b582d[_0x118a('0x25')]<_0x12ede3['entity'][_0x118a('0x26')])_0x135ffc=0x1;_0x3eec08({'additional':_0x135ffc});}else{return db[_0x118a('0x27')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x4811ce['id']},'order':[[_0x118a('0x1c'),_0x118a('0x1d')]]})[_0x118a('0xd')](function(_0x5eea19){var _0x1109b9=0x0;if(_0x5eea19){if(_0x5eea19[_0x118a('0x1e')]+_0x5eea19['countcongestionretry']+_0x5eea19[_0x118a('0x20')]+_0x5eea19[_0x118a('0x21')]+_0x5eea19[_0x118a('0x22')]+_0x5eea19[_0x118a('0x23')]+_0x5eea19[_0x118a('0x24')]+_0x5eea19[_0x118a('0x25')]<_0x12ede3[_0x118a('0x28')][_0x118a('0x26')])_0x1109b9=0x1;_0x3eec08({'additional':_0x1109b9});}else{_0x3eec08({'additional':0x0});}})[_0x118a('0x16')](function(_0x3468b9){logger[_0x118a('0x10')](_0x118a('0x29'),_0x3468b9[_0x118a('0x13')]);_0x56e6fc(_0x231cdc[_0x118a('0x10')](0x1f4,_0x3468b9['message']));});}})[_0x118a('0x16')](function(_0x4fcd89){logger['error'](_0x118a('0x29'),_0x4fcd89[_0x118a('0x13')]);_0x56e6fc(_0x231cdc[_0x118a('0x10')](0x1f4,_0x4fcd89[_0x118a('0x13')]));});}else _0x3eec08({'additional':0x0});});});};exports[_0x118a('0x2a')]=function(_0x37090e){var _0xa6c384=this;return new Promise(function(_0x14e6b4,_0x2dd10b){return db[_0x118a('0x2b')]['findOne']({'raw':!![],'where':{'ContactId':_0x37090e[_0x118a('0x18')][_0x118a('0x2c')],'ListId':_0x37090e[_0x118a('0x18')][_0x118a('0x19')],'VoiceQueueId':_0x37090e['body'][_0x118a('0x1a')]===undefined?null:_0x37090e[_0x118a('0x18')][_0x118a('0x1a')],'CampaignId':_0x37090e[_0x118a('0x18')]['CampaignId']===undefined?null:_0x37090e[_0x118a('0x18')][_0x118a('0x1b')]}})[_0x118a('0xd')](function(_0x445898){if(_0x445898!=null){return db['CmHopperAdditionalPhone'][_0x118a('0x17')]({'raw':!![],'where':{'CmHopperId':_0x445898['id'],'OrderBy':{'$gte':_0x445898[_0x118a('0x1c')]}},'order':[[_0x118a('0x1c'),_0x118a('0x1d')]]})[_0x118a('0xd')](function(_0x57d339){if(_0x57d339)return activateAdditionalPhone(_0x445898,_0x37090e['body'],_0x57d339,_0x37090e['duration'],_0x37090e[_0x118a('0x2d')])[_0x118a('0xd')](function(_0x15f7f5){_0x14e6b4(_0x15f7f5);});else{return db['CmHopperAdditionalPhone'][_0x118a('0x17')]({'raw':!![],'where':{'CmHopperId':_0x445898['id']},'order':[[_0x118a('0x1c'),_0x118a('0x1d')]]})[_0x118a('0xd')](function(_0x543127){if(_0x543127)return activateAdditionalPhone(_0x445898,_0x37090e[_0x118a('0x18')],_0x543127,_0x37090e[_0x118a('0x2e')],_0x37090e[_0x118a('0x2d')])[_0x118a('0xd')](function(_0x2de6a5){_0x14e6b4(_0x2de6a5);});else{_0x14e6b4({'id':_0x445898['id'],'phone':''});}})[_0x118a('0x16')](function(_0x3be1c3){logger[_0x118a('0x10')]('VerifyAdditionalPhones',_0x3be1c3[_0x118a('0x13')]);_0x2dd10b(_0xa6c384[_0x118a('0x10')](0x1f4,_0x3be1c3[_0x118a('0x13')]));});}})[_0x118a('0x16')](function(_0x257fc5){logger[_0x118a('0x10')](_0x118a('0x29'),_0x257fc5[_0x118a('0x13')]);_0x2dd10b(_0xa6c384['error'](0x1f4,_0x257fc5['message']));});}else _0x14e6b4(0x1);});});};function activateAdditionalPhone(_0x242e75,_0x5ac83e,_0x26085b,_0x3313b4,_0x27ac7e){return new Promise(function(_0x475330,_0x4b6a60){var _0x45eed1;if(_[_0x118a('0x2f')](_0x26085b[_0x118a('0x30')])){_0x26085b[_0x118a('0x30')]=moment();}if(moment()>moment(_0x26085b[_0x118a('0x30')])){_0x45eed1=moment()[_0x118a('0x31')](_0x27ac7e||0x3,_0x118a('0x32'));}else{if(_0x26085b[_0x118a('0x1c')]==0x0){_0x45eed1=moment(_0x26085b['scheduledat']);}else{_0x45eed1=moment()[_0x118a('0x31')](_0x27ac7e||0x3,_0x118a('0x32'));}}if(_['isNil'](_0x45eed1)){_0x45eed1=moment()[_0x118a('0x31')](_0x27ac7e||0x3,'minutes');}var _0x1bdf73={'phone':_0x242e75['phone'],'active':0x0,'OrderBy':_[_0x118a('0x2f')](_0x242e75[_0x118a('0x1c')])?0x0:_0x242e75[_0x118a('0x1c')],'scheduledat':moment()[_0x118a('0x31')](_0x3313b4||0x1,_0x118a('0x32')),'countbusyretry':_0x5ac83e[_0x118a('0x1e')],'countcongestionretry':_0x5ac83e['countcongestionretry'],'countnoanswerretry':_0x5ac83e[_0x118a('0x20')],'countnosuchnumberretry':_0x5ac83e[_0x118a('0x21')],'countdropretry':_0x5ac83e[_0x118a('0x22')],'countabandonedretry':_0x5ac83e[_0x118a('0x23')],'countmachineretry':_0x5ac83e['countmachineretry'],'countagentrejectretry':_0x5ac83e[_0x118a('0x25')],'createdAt':_0x5ac83e['createdAt'],'updatedAt':_0x5ac83e[_0x118a('0x33')]};var _0x456527={'CmHopperId':_0x242e75['id'],'phone':_0x26085b[_0x118a('0x34')],'active':0x0,'OrderBy':_[_0x118a('0x2f')](_0x26085b['OrderBy'])?0x0:_0x26085b[_0x118a('0x1c')],'scheduledat':_0x45eed1,'countbusyretry':_0x26085b[_0x118a('0x1e')],'countcongestionretry':_0x26085b[_0x118a('0x1f')],'countnoanswerretry':_0x26085b[_0x118a('0x20')],'countnosuchnumberretry':_0x26085b['countnosuchnumberretry'],'countdropretry':_0x26085b[_0x118a('0x22')],'countabandonedretry':_0x26085b[_0x118a('0x23')],'countmachineretry':_0x26085b[_0x118a('0x24')],'countagentrejectretry':_0x26085b['countagentrejectretry'],'createdAt':_0x26085b[_0x118a('0x35')],'updatedAt':_0x26085b[_0x118a('0x33')]};return db[_0x118a('0x36')][_0x118a('0x37')](function(_0x486a14){return db[_0x118a('0x27')][_0x118a('0x38')](_0x1bdf73,{'where':{'id':_0x26085b['id']}},{'transaction':_0x486a14})[_0x118a('0xd')](function(){return db[_0x118a('0x2b')][_0x118a('0x38')](_0x456527,{'where':{'id':_0x242e75['id']}},{'transaction':_0x486a14});});})[_0x118a('0xd')](function(_0x11d1d5){_0x475330({'id':_0x242e75['id'],'phone':_0x26085b[_0x118a('0x34')]});})[_0x118a('0x16')](function(_0x3fcd59){logger[_0x118a('0x10')](_0x118a('0x39'),_0x3fcd59[_0x118a('0x13')]);_0x4b6a60({'error':_0x3fcd59['message']});});});}exports[_0x118a('0x3a')]=function(_0x230dd5){var _0x1e2142=this;return new Promise(function(_0x4e74f1,_0x274c5f){return db[_0x118a('0x2b')][_0x118a('0x38')](_0x230dd5[_0x118a('0x18')][_0x118a('0x3b')],{'where':{'id':_0x230dd5[_0x118a('0x18')]['id']}})[_0x118a('0xd')](function(_0x2d8396){_0x4e74f1(_0x2d8396);})[_0x118a('0x16')](function(_0x50ca84){logger['error'](_0x118a('0x3a'),_0x50ca84[_0x118a('0x13')]);_0x274c5f(_0x1e2142[_0x118a('0x10')](0x1f4,_0x50ca84['message']));});});};
\ No newline at end of file
index dc583af..d075a72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf4a=['isAuthenticated','get','/:id','post','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperAdditionalPhone.controller'];(function(_0x1aa62f,_0x567e8a){var _0x202da1=function(_0x46663b){while(--_0x46663b){_0x1aa62f['push'](_0x1aa62f['shift']());}};_0x202da1(++_0x567e8a);}(_0xcf4a,0x14c));var _0xacf4=function(_0x44e270,_0x318d84){_0x44e270=_0x44e270-0x0;var _0x27526b=_0xcf4a[_0x44e270];return _0x27526b;};'use strict';var multer=require(_0xacf4('0x0'));var util=require(_0xacf4('0x1'));var path=require(_0xacf4('0x2'));var timeout=require(_0xacf4('0x3'));var express=require(_0xacf4('0x4'));var router=express[_0xacf4('0x5')]();var fs_extra=require(_0xacf4('0x6'));var auth=require(_0xacf4('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xacf4('0x8'));var controller=require(_0xacf4('0x9'));router['get']('/',auth[_0xacf4('0xa')](),controller['index']);router[_0xacf4('0xb')](_0xacf4('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xacf4('0xd')]('/',auth[_0xacf4('0xa')](),controller['create']);router[_0xacf4('0xe')](_0xacf4('0xc'),auth[_0xacf4('0xa')](),controller['update']);router[_0xacf4('0xf')]('/:id',auth[_0xacf4('0xa')](),controller[_0xacf4('0x10')]);module[_0xacf4('0x11')]=router;
\ No newline at end of file
+var _0xbfcf=['create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x12ce92,_0x3dfd4e){var _0x5902be=function(_0x11dc08){while(--_0x11dc08){_0x12ce92['push'](_0x12ce92['shift']());}};_0x5902be(++_0x3dfd4e);}(_0xbfcf,0x1a9));var _0xfbfc=function(_0x5d860f,_0x467498){_0x5d860f=_0x5d860f-0x0;var _0x236490=_0xbfcf[_0x5d860f];return _0x236490;};'use strict';var multer=require(_0xfbfc('0x0'));var util=require(_0xfbfc('0x1'));var path=require(_0xfbfc('0x2'));var timeout=require(_0xfbfc('0x3'));var express=require(_0xfbfc('0x4'));var router=express['Router']();var fs_extra=require(_0xfbfc('0x5'));var auth=require(_0xfbfc('0x6'));var interaction=require(_0xfbfc('0x7'));var config=require('../../config/environment');var controller=require(_0xfbfc('0x8'));router[_0xfbfc('0x9')]('/',auth[_0xfbfc('0xa')](),controller[_0xfbfc('0xb')]);router[_0xfbfc('0x9')](_0xfbfc('0xc'),auth[_0xfbfc('0xa')](),controller[_0xfbfc('0xd')]);router[_0xfbfc('0xe')]('/',auth['isAuthenticated'](),controller[_0xfbfc('0xf')]);router['put']('/:id',auth[_0xfbfc('0xa')](),controller[_0xfbfc('0x10')]);router[_0xfbfc('0x11')]('/:id',auth[_0xfbfc('0xa')](),controller[_0xfbfc('0x12')]);module[_0xfbfc('0x13')]=router;
\ No newline at end of file
index 487adae..32f2f3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcba=['sequelize','STRING','INTEGER','contactListQueue','moment'];(function(_0x1895b7,_0x21fbc7){var _0x1aecdc=function(_0x44682a){while(--_0x44682a){_0x1895b7['push'](_0x1895b7['shift']());}};_0x1aecdc(++_0x21fbc7);}(_0xbcba,0x6d));var _0xabcb=function(_0x98fa20,_0x35a329){_0x98fa20=_0x98fa20-0x0;var _0x4e9be1=_0xbcba[_0x98fa20];return _0x4e9be1;};'use strict';var moment=require(_0xabcb('0x0'));var Sequelize=require(_0xabcb('0x1'));module['exports']={'phone':{'type':Sequelize[_0xabcb('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xabcb('0x3')],'unique':_0xabcb('0x4')},'ListId':{'type':Sequelize[_0xabcb('0x3')],'unique':_0xabcb('0x4')},'VoiceQueueId':{'type':Sequelize[_0xabcb('0x3')],'unique':'contactListQueue'}};
\ No newline at end of file
+var _0xddd2=['INTEGER','contactListQueue','moment','exports'];(function(_0xa5e609,_0x4b28a4){var _0x42d910=function(_0x1ff139){while(--_0x1ff139){_0xa5e609['push'](_0xa5e609['shift']());}};_0x42d910(++_0x4b28a4);}(_0xddd2,0x1e2));var _0x2ddd=function(_0x20cd72,_0x2a6055){_0x20cd72=_0x20cd72-0x0;var _0x378cb3=_0xddd2[_0x20cd72];return _0x378cb3;};'use strict';var moment=require(_0x2ddd('0x0'));var Sequelize=require('sequelize');module[_0x2ddd('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0x2ddd('0x2')],'unique':_0x2ddd('0x3')},'ListId':{'type':Sequelize[_0x2ddd('0x2')],'unique':_0x2ddd('0x3')},'VoiceQueueId':{'type':Sequelize[_0x2ddd('0x2')],'unique':_0x2ddd('0x3')}};
\ No newline at end of file
index 353bd03..33384ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ab2=['request-promise','moment','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','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','destroy','then','error','stack','name','map','CmHopperBlack','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','limit','order','sort','where','filter','merge','findAll','rows','catch','show','params','rawAttributes','includeAll','options','find','update','body','describe','zip-dir'];(function(_0x4ba4b3,_0x3919eb){var _0x428ca6=function(_0x481962){while(--_0x481962){_0x4ba4b3['push'](_0x4ba4b3['shift']());}};_0x428ca6(++_0x3919eb);}(_0x8ab2,0x167));var _0x28ab=function(_0x6c9308,_0x37d5eb){_0x6c9308=_0x6c9308-0x0;var _0xdf1e4=_0x8ab2[_0x6c9308];return _0xdf1e4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x28ab('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x28ab('0x1'));var moment=require(_0x28ab('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x28ab('0x3'));var path=require(_0x28ab('0x4'));var sox=require(_0x28ab('0x5'));var csv=require(_0x28ab('0x6'));var ejs=require(_0x28ab('0x7'));var fs=require('fs');var fs_extra=require(_0x28ab('0x8'));var _=require(_0x28ab('0x9'));var squel=require('squel');var crypto=require(_0x28ab('0xa'));var jsforce=require(_0x28ab('0xb'));var deskjs=require(_0x28ab('0xc'));var toCsv=require('to-csv');var querystring=require(_0x28ab('0xd'));var Papa=require(_0x28ab('0xe'));var Redis=require(_0x28ab('0xf'));var authService=require(_0x28ab('0x10'));var qs=require(_0x28ab('0x11'));var as=require(_0x28ab('0x12'));var hardwareService=require(_0x28ab('0x13'));var logger=require(_0x28ab('0x14'))('api');var utils=require(_0x28ab('0x15'));var config=require(_0x28ab('0x16'));var licenseUtil=require(_0x28ab('0x17'));var db=require(_0x28ab('0x18'))['db'];function respondWithStatusCode(_0x5b8114,_0x5e0a5f){_0x5e0a5f=_0x5e0a5f||0xcc;return function(_0x53d2f4){if(_0x53d2f4){return _0x5b8114[_0x28ab('0x19')](_0x5e0a5f);}return _0x5b8114[_0x28ab('0x1a')](_0x5e0a5f)[_0x28ab('0x1b')]();};}function respondWithResult(_0x34a736,_0x9b6d94){_0x9b6d94=_0x9b6d94||0xc8;return function(_0x3fe625){if(_0x3fe625){return _0x34a736['status'](_0x9b6d94)[_0x28ab('0x1c')](_0x3fe625);}};}function respondWithFilteredResult(_0xa6b1b7,_0x115f43){return function(_0x28e3f1){if(_0x28e3f1){var _0x4ad041=typeof _0x115f43[_0x28ab('0x1d')]==='undefined'&&typeof _0x115f43['limit']===_0x28ab('0x1e');var _0x51347a=_0x28e3f1[_0x28ab('0x1f')];var _0x460c5a=_0x4ad041?0x0:_0x115f43[_0x28ab('0x1d')];var _0x327710=_0x4ad041?_0x28e3f1['count']:_0x115f43[_0x28ab('0x1d')]+_0x115f43['limit'];var _0x2a00e8;if(_0x327710>=_0x51347a){_0x327710=_0x51347a;_0x2a00e8=0xc8;}else{_0x2a00e8=0xce;}_0xa6b1b7['status'](_0x2a00e8);return _0xa6b1b7[_0x28ab('0x20')](_0x28ab('0x21'),_0x460c5a+'-'+_0x327710+'/'+_0x51347a)[_0x28ab('0x1c')](_0x28e3f1);}return null;};}function patchUpdates(_0x403716){return function(_0x3d46d2){try{jsonpatch[_0x28ab('0x22')](_0x3d46d2,_0x403716,!![]);}catch(_0x2afb24){return BPromise[_0x28ab('0x23')](_0x2afb24);}return _0x3d46d2[_0x28ab('0x24')]();};}function saveUpdates(_0x2777c7,_0x487208){return function(_0x99ac4b){if(_0x99ac4b){return _0x99ac4b['update'](_0x2777c7)['then'](function(_0x8f0dc6){return _0x8f0dc6;});}return null;};}function removeEntity(_0x76c152,_0x1f0112){return function(_0x6957c3){if(_0x6957c3){return _0x6957c3[_0x28ab('0x25')]()[_0x28ab('0x26')](function(){_0x76c152[_0x28ab('0x1a')](0xcc)[_0x28ab('0x1b')]();});}};}function handleEntityNotFound(_0x41ee51,_0x1ccf9f){return function(_0x2dab8b){if(!_0x2dab8b){_0x41ee51[_0x28ab('0x19')](0x194);}return _0x2dab8b;};}function handleError(_0x1c95a9,_0x56a716){_0x56a716=_0x56a716||0x1f4;return function(_0x40eca3){logger[_0x28ab('0x27')](_0x40eca3[_0x28ab('0x28')]);if(_0x40eca3[_0x28ab('0x29')]){delete _0x40eca3[_0x28ab('0x29')];}_0x1c95a9[_0x28ab('0x1a')](_0x56a716)['send'](_0x40eca3);};}exports['index']=function(_0x39f8fc,_0x1e4fd2){var _0xd5bf60={},_0xa45b5d={},_0x295289={'count':0x0,'rows':[]};var _0x4f9109=_[_0x28ab('0x2a')](db[_0x28ab('0x2b')]['rawAttributes'],function(_0x2f26ba){return{'name':_0x2f26ba[_0x28ab('0x2c')],'type':_0x2f26ba[_0x28ab('0x2d')]['key']};});_0xa45b5d['model']=_[_0x28ab('0x2a')](_0x4f9109,_0x28ab('0x29'));_0xa45b5d[_0x28ab('0x2e')]=_[_0x28ab('0x2f')](_0x39f8fc[_0x28ab('0x2e')]);_0xa45b5d[_0x28ab('0x30')]=_[_0x28ab('0x31')](_0xa45b5d[_0x28ab('0x32')],_0xa45b5d[_0x28ab('0x2e')]);_0xd5bf60['attributes']=_[_0x28ab('0x31')](_0xa45b5d['model'],qs[_0x28ab('0x33')](_0x39f8fc[_0x28ab('0x2e')][_0x28ab('0x33')]));_0xd5bf60[_0x28ab('0x34')]=_0xd5bf60[_0x28ab('0x34')][_0x28ab('0x35')]?_0xd5bf60[_0x28ab('0x34')]:_0xa45b5d[_0x28ab('0x32')];if(!_0x39f8fc[_0x28ab('0x2e')]['hasOwnProperty']('nolimit')){_0xd5bf60[_0x28ab('0x36')]=qs['limit'](_0x39f8fc['query'][_0x28ab('0x36')]);_0xd5bf60['offset']=qs[_0x28ab('0x1d')](_0x39f8fc[_0x28ab('0x2e')]['offset']);}_0xd5bf60[_0x28ab('0x37')]=qs[_0x28ab('0x38')](_0x39f8fc[_0x28ab('0x2e')]['sort']);_0xd5bf60[_0x28ab('0x39')]=qs[_0x28ab('0x30')](_['pick'](_0x39f8fc[_0x28ab('0x2e')],_0xa45b5d[_0x28ab('0x30')]),_0x4f9109);if(_0x39f8fc[_0x28ab('0x2e')][_0x28ab('0x3a')]){_0xd5bf60[_0x28ab('0x39')]=_[_0x28ab('0x3b')](_0xd5bf60[_0x28ab('0x39')],{'$or':_[_0x28ab('0x2a')](_0x4f9109,function(_0x29bbca){if(_0x29bbca[_0x28ab('0x2d')]!=='VIRTUAL'){var _0x5ad9ff={};_0x5ad9ff[_0x29bbca['name']]={'$like':'%'+_0x39f8fc[_0x28ab('0x2e')][_0x28ab('0x3a')]+'%'};return _0x5ad9ff;}})});}_0xd5bf60=_[_0x28ab('0x3b')]({},_0xd5bf60,_0x39f8fc['options']);var _0x1aa122={'where':_0xd5bf60['where']};return db[_0x28ab('0x2b')][_0x28ab('0x1f')](_0x1aa122)[_0x28ab('0x26')](function(_0x19b354){_0x295289[_0x28ab('0x1f')]=_0x19b354;if(_0x39f8fc[_0x28ab('0x2e')]['includeAll']){_0xd5bf60['include']=[{'all':!![]}];}return db[_0x28ab('0x2b')][_0x28ab('0x3c')](_0xd5bf60);})[_0x28ab('0x26')](function(_0x1a22ad){_0x295289[_0x28ab('0x3d')]=_0x1a22ad;return _0x295289;})[_0x28ab('0x26')](respondWithFilteredResult(_0x1e4fd2,_0xd5bf60))[_0x28ab('0x3e')](handleError(_0x1e4fd2,null));};exports[_0x28ab('0x3f')]=function(_0x3a028a,_0x5dc76c){var _0x3d55ef={'raw':!![],'where':{'id':_0x3a028a[_0x28ab('0x40')]['id']}},_0x2ffcf2={};_0x2ffcf2['model']=_[_0x28ab('0x2f')](db['CmHopperBlack'][_0x28ab('0x41')]);_0x2ffcf2['query']=_['keys'](_0x3a028a[_0x28ab('0x2e')]);_0x2ffcf2[_0x28ab('0x30')]=_[_0x28ab('0x31')](_0x2ffcf2[_0x28ab('0x32')],_0x2ffcf2[_0x28ab('0x2e')]);_0x3d55ef[_0x28ab('0x34')]=_[_0x28ab('0x31')](_0x2ffcf2[_0x28ab('0x32')],qs[_0x28ab('0x33')](_0x3a028a['query']['fields']));_0x3d55ef['attributes']=_0x3d55ef[_0x28ab('0x34')][_0x28ab('0x35')]?_0x3d55ef[_0x28ab('0x34')]:_0x2ffcf2[_0x28ab('0x32')];if(_0x3a028a[_0x28ab('0x2e')][_0x28ab('0x42')]){_0x3d55ef['include']=[{'all':!![]}];}_0x3d55ef=_[_0x28ab('0x3b')]({},_0x3d55ef,_0x3a028a[_0x28ab('0x43')]);return db[_0x28ab('0x2b')][_0x28ab('0x44')](_0x3d55ef)[_0x28ab('0x26')](handleEntityNotFound(_0x5dc76c,null))[_0x28ab('0x26')](respondWithResult(_0x5dc76c,null))[_0x28ab('0x3e')](handleError(_0x5dc76c,null));};exports[_0x28ab('0x45')]=function(_0x18f01f,_0x3ab011){if(_0x18f01f[_0x28ab('0x46')]['id']){delete _0x18f01f[_0x28ab('0x46')]['id'];}return db[_0x28ab('0x2b')][_0x28ab('0x44')]({'where':{'id':_0x18f01f[_0x28ab('0x40')]['id']}})['then'](handleEntityNotFound(_0x3ab011,null))[_0x28ab('0x26')](saveUpdates(_0x18f01f[_0x28ab('0x46')],null))[_0x28ab('0x26')](respondWithResult(_0x3ab011,null))[_0x28ab('0x3e')](handleError(_0x3ab011,null));};exports[_0x28ab('0x25')]=function(_0x1e664b,_0x453fef){return db[_0x28ab('0x2b')][_0x28ab('0x44')]({'where':{'id':_0x1e664b[_0x28ab('0x40')]['id']}})['then'](handleEntityNotFound(_0x453fef,null))[_0x28ab('0x26')](removeEntity(_0x453fef,null))[_0x28ab('0x3e')](handleError(_0x453fef,null));};exports[_0x28ab('0x47')]=function(_0x29a647,_0x18c352){return db[_0x28ab('0x2b')][_0x28ab('0x47')]()['then'](respondWithResult(_0x18c352,null))['catch'](handleError(_0x18c352,null));};
\ No newline at end of file
+var _0x9dcf=['send','index','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','VIRTUAL','CmHopperBlack','includeAll','rows','catch','show','params','keys','include','options','find','body','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','ejs','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name'];(function(_0x442a5d,_0x2a6745){var _0x51d134=function(_0x5cae90){while(--_0x5cae90){_0x442a5d['push'](_0x442a5d['shift']());}};_0x51d134(++_0x2a6745);}(_0x9dcf,0x103));var _0xf9dc=function(_0x1e697a,_0x177ff2){_0x1e697a=_0x1e697a-0x0;var _0x4db7ea=_0x9dcf[_0x1e697a];return _0x4db7ea;};'use strict';var emlformat=require(_0xf9dc('0x0'));var rimraf=require(_0xf9dc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf9dc('0x2'));var rp=require('request-promise');var moment=require(_0xf9dc('0x3'));var BPromise=require(_0xf9dc('0x4'));var Mustache=require('mustache');var util=require(_0xf9dc('0x5'));var path=require(_0xf9dc('0x6'));var sox=require(_0xf9dc('0x7'));var csv=require('to-csv');var ejs=require(_0xf9dc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf9dc('0x9'));var squel=require('squel');var crypto=require(_0xf9dc('0xa'));var jsforce=require(_0xf9dc('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf9dc('0xc'));var querystring=require(_0xf9dc('0xd'));var Papa=require(_0xf9dc('0xe'));var Redis=require(_0xf9dc('0xf'));var authService=require(_0xf9dc('0x10'));var qs=require(_0xf9dc('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf9dc('0x12'));var utils=require(_0xf9dc('0x13'));var config=require(_0xf9dc('0x14'));var licenseUtil=require(_0xf9dc('0x15'));var db=require(_0xf9dc('0x16'))['db'];function respondWithStatusCode(_0x38187b,_0x1048c2){_0x1048c2=_0x1048c2||0xcc;return function(_0x438c46){if(_0x438c46){return _0x38187b['sendStatus'](_0x1048c2);}return _0x38187b['status'](_0x1048c2)[_0xf9dc('0x17')]();};}function respondWithResult(_0x417622,_0x20f91e){_0x20f91e=_0x20f91e||0xc8;return function(_0x372306){if(_0x372306){return _0x417622[_0xf9dc('0x18')](_0x20f91e)[_0xf9dc('0x19')](_0x372306);}};}function respondWithFilteredResult(_0x91129,_0x10e3b4){return function(_0x1b9f6e){if(_0x1b9f6e){var _0x3c2431=typeof _0x10e3b4[_0xf9dc('0x1a')]==='undefined'&&typeof _0x10e3b4[_0xf9dc('0x1b')]===_0xf9dc('0x1c');var _0x2f79e8=_0x1b9f6e[_0xf9dc('0x1d')];var _0x5d3dc8=_0x3c2431?0x0:_0x10e3b4[_0xf9dc('0x1a')];var _0x5181bd=_0x3c2431?_0x1b9f6e[_0xf9dc('0x1d')]:_0x10e3b4[_0xf9dc('0x1a')]+_0x10e3b4[_0xf9dc('0x1b')];var _0x575066;if(_0x5181bd>=_0x2f79e8){_0x5181bd=_0x2f79e8;_0x575066=0xc8;}else{_0x575066=0xce;}_0x91129[_0xf9dc('0x18')](_0x575066);return _0x91129[_0xf9dc('0x1e')](_0xf9dc('0x1f'),_0x5d3dc8+'-'+_0x5181bd+'/'+_0x2f79e8)[_0xf9dc('0x19')](_0x1b9f6e);}return null;};}function patchUpdates(_0x3ccacd){return function(_0x36ba58){try{jsonpatch[_0xf9dc('0x20')](_0x36ba58,_0x3ccacd,!![]);}catch(_0x3744b3){return BPromise[_0xf9dc('0x21')](_0x3744b3);}return _0x36ba58[_0xf9dc('0x22')]();};}function saveUpdates(_0x438649,_0x254da8){return function(_0x3a816b){if(_0x3a816b){return _0x3a816b[_0xf9dc('0x23')](_0x438649)[_0xf9dc('0x24')](function(_0x5362b7){return _0x5362b7;});}return null;};}function removeEntity(_0x1cb31b,_0x41b812){return function(_0x2764f3){if(_0x2764f3){return _0x2764f3[_0xf9dc('0x25')]()[_0xf9dc('0x24')](function(){_0x1cb31b[_0xf9dc('0x18')](0xcc)[_0xf9dc('0x17')]();});}};}function handleEntityNotFound(_0x29159f,_0x45d559){return function(_0x11cdaf){if(!_0x11cdaf){_0x29159f[_0xf9dc('0x26')](0x194);}return _0x11cdaf;};}function handleError(_0x5e5c4d,_0x543888){_0x543888=_0x543888||0x1f4;return function(_0x232d80){logger[_0xf9dc('0x27')](_0x232d80['stack']);if(_0x232d80[_0xf9dc('0x28')]){delete _0x232d80[_0xf9dc('0x28')];}_0x5e5c4d['status'](_0x543888)[_0xf9dc('0x29')](_0x232d80);};}exports[_0xf9dc('0x2a')]=function(_0x4d129e,_0x4a863a){var _0x1e3460={},_0x32b1ff={},_0x3e93bf={'count':0x0,'rows':[]};var _0x5e3d84=_[_0xf9dc('0x2b')](db['CmHopperBlack'][_0xf9dc('0x2c')],function(_0x2d5c55){return{'name':_0x2d5c55[_0xf9dc('0x2d')],'type':_0x2d5c55[_0xf9dc('0x2e')][_0xf9dc('0x2f')]};});_0x32b1ff[_0xf9dc('0x30')]=_['map'](_0x5e3d84,_0xf9dc('0x28'));_0x32b1ff[_0xf9dc('0x31')]=_['keys'](_0x4d129e[_0xf9dc('0x31')]);_0x32b1ff['filters']=_[_0xf9dc('0x32')](_0x32b1ff['model'],_0x32b1ff[_0xf9dc('0x31')]);_0x1e3460[_0xf9dc('0x33')]=_[_0xf9dc('0x32')](_0x32b1ff[_0xf9dc('0x30')],qs[_0xf9dc('0x34')](_0x4d129e[_0xf9dc('0x31')][_0xf9dc('0x34')]));_0x1e3460[_0xf9dc('0x33')]=_0x1e3460[_0xf9dc('0x33')][_0xf9dc('0x35')]?_0x1e3460[_0xf9dc('0x33')]:_0x32b1ff[_0xf9dc('0x30')];if(!_0x4d129e[_0xf9dc('0x31')][_0xf9dc('0x36')](_0xf9dc('0x37'))){_0x1e3460[_0xf9dc('0x1b')]=qs[_0xf9dc('0x1b')](_0x4d129e['query'][_0xf9dc('0x1b')]);_0x1e3460[_0xf9dc('0x1a')]=qs[_0xf9dc('0x1a')](_0x4d129e[_0xf9dc('0x31')]['offset']);}_0x1e3460[_0xf9dc('0x38')]=qs['sort'](_0x4d129e[_0xf9dc('0x31')]['sort']);_0x1e3460[_0xf9dc('0x39')]=qs[_0xf9dc('0x3a')](_[_0xf9dc('0x3b')](_0x4d129e[_0xf9dc('0x31')],_0x32b1ff[_0xf9dc('0x3a')]),_0x5e3d84);if(_0x4d129e[_0xf9dc('0x31')][_0xf9dc('0x3c')]){_0x1e3460[_0xf9dc('0x39')]=_[_0xf9dc('0x3d')](_0x1e3460['where'],{'$or':_[_0xf9dc('0x2b')](_0x5e3d84,function(_0x38e0db){if(_0x38e0db[_0xf9dc('0x2e')]!==_0xf9dc('0x3e')){var _0x4283b7={};_0x4283b7[_0x38e0db[_0xf9dc('0x28')]]={'$like':'%'+_0x4d129e[_0xf9dc('0x31')][_0xf9dc('0x3c')]+'%'};return _0x4283b7;}})});}_0x1e3460=_[_0xf9dc('0x3d')]({},_0x1e3460,_0x4d129e['options']);var _0x569695={'where':_0x1e3460[_0xf9dc('0x39')]};return db[_0xf9dc('0x3f')][_0xf9dc('0x1d')](_0x569695)[_0xf9dc('0x24')](function(_0x3d8c6f){_0x3e93bf['count']=_0x3d8c6f;if(_0x4d129e[_0xf9dc('0x31')][_0xf9dc('0x40')]){_0x1e3460['include']=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x1e3460);})[_0xf9dc('0x24')](function(_0x2c8fb6){_0x3e93bf[_0xf9dc('0x41')]=_0x2c8fb6;return _0x3e93bf;})[_0xf9dc('0x24')](respondWithFilteredResult(_0x4a863a,_0x1e3460))[_0xf9dc('0x42')](handleError(_0x4a863a,null));};exports[_0xf9dc('0x43')]=function(_0x31884d,_0x16ab5d){var _0x435d24={'raw':!![],'where':{'id':_0x31884d[_0xf9dc('0x44')]['id']}},_0x2f7f49={};_0x2f7f49['model']=_['keys'](db[_0xf9dc('0x3f')][_0xf9dc('0x2c')]);_0x2f7f49[_0xf9dc('0x31')]=_[_0xf9dc('0x45')](_0x31884d[_0xf9dc('0x31')]);_0x2f7f49[_0xf9dc('0x3a')]=_[_0xf9dc('0x32')](_0x2f7f49[_0xf9dc('0x30')],_0x2f7f49['query']);_0x435d24['attributes']=_[_0xf9dc('0x32')](_0x2f7f49['model'],qs[_0xf9dc('0x34')](_0x31884d[_0xf9dc('0x31')][_0xf9dc('0x34')]));_0x435d24['attributes']=_0x435d24[_0xf9dc('0x33')]['length']?_0x435d24[_0xf9dc('0x33')]:_0x2f7f49['model'];if(_0x31884d[_0xf9dc('0x31')]['includeAll']){_0x435d24[_0xf9dc('0x46')]=[{'all':!![]}];}_0x435d24=_[_0xf9dc('0x3d')]({},_0x435d24,_0x31884d[_0xf9dc('0x47')]);return db[_0xf9dc('0x3f')][_0xf9dc('0x48')](_0x435d24)[_0xf9dc('0x24')](handleEntityNotFound(_0x16ab5d,null))['then'](respondWithResult(_0x16ab5d,null))[_0xf9dc('0x42')](handleError(_0x16ab5d,null));};exports[_0xf9dc('0x23')]=function(_0x4bc381,_0xb0e93d){if(_0x4bc381[_0xf9dc('0x49')]['id']){delete _0x4bc381[_0xf9dc('0x49')]['id'];}return db[_0xf9dc('0x3f')]['find']({'where':{'id':_0x4bc381[_0xf9dc('0x44')]['id']}})[_0xf9dc('0x24')](handleEntityNotFound(_0xb0e93d,null))[_0xf9dc('0x24')](saveUpdates(_0x4bc381[_0xf9dc('0x49')],null))['then'](respondWithResult(_0xb0e93d,null))['catch'](handleError(_0xb0e93d,null));};exports['destroy']=function(_0x207d16,_0x463e67){return db['CmHopperBlack'][_0xf9dc('0x48')]({'where':{'id':_0x207d16[_0xf9dc('0x44')]['id']}})[_0xf9dc('0x24')](handleEntityNotFound(_0x463e67,null))['then'](removeEntity(_0x463e67,null))['catch'](handleError(_0x463e67,null));};exports[_0xf9dc('0x4a')]=function(_0x171a2a,_0x4c0679){return db['CmHopperBlack'][_0xf9dc('0x4a')]()['then'](respondWithResult(_0x4c0679,null))[_0xf9dc('0x42')](handleError(_0x4c0679,null));};
\ No newline at end of file
index e3e27a0..3d2eec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd25e=['moment','request-promise','rimraf','../../config/environment','define','CmHopperBlack','cm_hopper_black','util','../../config/logger'];(function(_0x258f6d,_0x3c7deb){var _0x5f17d8=function(_0x306468){while(--_0x306468){_0x258f6d['push'](_0x258f6d['shift']());}};_0x5f17d8(++_0x3c7deb);}(_0xd25e,0xcd));var _0xed25=function(_0xe33952,_0x455767){_0xe33952=_0xe33952-0x0;var _0x58d0b0=_0xd25e[_0xe33952];return _0x58d0b0;};'use strict';var _=require('lodash');var util=require(_0xed25('0x0'));var logger=require(_0xed25('0x1'))('api');var moment=require(_0xed25('0x2'));var BPromise=require('bluebird');var rp=require(_0xed25('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xed25('0x4'));var config=require(_0xed25('0x5'));var attributes=require('./cmHopperBlack.attributes');module['exports']=function(_0x355ba1,_0x2fe79f){return _0x355ba1[_0xed25('0x6')](_0xed25('0x7'),attributes,{'tableName':_0xed25('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4974=['api','moment','bluebird','path','rimraf','../../config/environment','./cmHopperBlack.attributes','cm_hopper_black','lodash'];(function(_0x5b0892,_0x42410f){var _0x9b0116=function(_0x52bce3){while(--_0x52bce3){_0x5b0892['push'](_0x5b0892['shift']());}};_0x9b0116(++_0x42410f);}(_0x4974,0x143));var _0x4497=function(_0x212950,_0x412c4a){_0x212950=_0x212950-0x0;var _0x1eb5d6=_0x4974[_0x212950];return _0x1eb5d6;};'use strict';var _=require(_0x4497('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4497('0x1'));var moment=require(_0x4497('0x2'));var BPromise=require(_0x4497('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4497('0x4'));var rimraf=require(_0x4497('0x5'));var config=require(_0x4497('0x6'));var attributes=require(_0x4497('0x7'));module['exports']=function(_0x194e9c,_0x34eb77){return _0x194e9c['define']('CmHopperBlack',attributes,{'tableName':_0x4497('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e6f3a98..2f9e431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f63=['raw','where','attributes','limit','include','map','model','catch','UpdateCmHopperBlack','update','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','GetCmHopperBlack','CmHopperBlack','findAll','options'];(function(_0x4207a6,_0x3a3110){var _0x42b37a=function(_0x574360){while(--_0x574360){_0x4207a6['push'](_0x4207a6['shift']());}};_0x42b37a(++_0x3a3110);}(_0x2f63,0x1e0));var _0x32f6=function(_0x481df5,_0x216652){_0x481df5=_0x481df5-0x0;var _0x32726e=_0x2f63[_0x481df5];return _0x32726e;};'use strict';var _=require(_0x32f6('0x0'));var util=require(_0x32f6('0x1'));var moment=require(_0x32f6('0x2'));var BPromise=require(_0x32f6('0x3'));var rs=require(_0x32f6('0x4'));var fs=require('fs');var Redis=require(_0x32f6('0x5'));var db=require(_0x32f6('0x6'))['db'];var utils=require(_0x32f6('0x7'));var logger=require(_0x32f6('0x8'))(_0x32f6('0x9'));var config=require(_0x32f6('0xa'));var jayson=require(_0x32f6('0xb'));var client=jayson['client'][_0x32f6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5f40ee,_0x1d89e5,_0x1beb2c){return new BPromise(function(_0x2c9254,_0x5289b4){return client[_0x32f6('0xd')](_0x5f40ee,_0x1beb2c)[_0x32f6('0xe')](function(_0x31451d){logger[_0x32f6('0xf')](_0x32f6('0x10'),_0x1d89e5,_0x32f6('0x11'));logger[_0x32f6('0x12')](_0x32f6('0x13'),_0x1d89e5,'request\x20sent',JSON[_0x32f6('0x14')](_0x31451d));if(_0x31451d[_0x32f6('0x15')]){if(_0x31451d['error']['code']===0x1f4){logger[_0x32f6('0x15')](_0x32f6('0x10'),_0x1d89e5,_0x31451d[_0x32f6('0x15')][_0x32f6('0x16')]);return _0x5289b4(_0x31451d['error'][_0x32f6('0x16')]);}logger[_0x32f6('0x15')](_0x32f6('0x10'),_0x1d89e5,_0x31451d[_0x32f6('0x15')]['message']);return _0x2c9254(_0x31451d[_0x32f6('0x15')][_0x32f6('0x16')]);}else{logger[_0x32f6('0xf')](_0x32f6('0x10'),_0x1d89e5,_0x32f6('0x11'));_0x2c9254(_0x31451d['result'][_0x32f6('0x16')]);}})['catch'](function(_0x430a9e){logger[_0x32f6('0x15')]('CmHopperBlack,\x20%s,\x20%s',_0x1d89e5,_0x430a9e);_0x5289b4(_0x430a9e);});});}exports[_0x32f6('0x17')]=function(_0x529869){var _0x4949bf=this;return new Promise(function(_0x58e7c,_0x18fe84){return db[_0x32f6('0x18')][_0x32f6('0x19')]({'raw':_0x529869['options']?_0x529869[_0x32f6('0x1a')][_0x32f6('0x1b')]===undefined?!![]:![]:!![],'where':_0x529869[_0x32f6('0x1a')]?_0x529869[_0x32f6('0x1a')][_0x32f6('0x1c')]||null:null,'attributes':_0x529869[_0x32f6('0x1a')]?_0x529869[_0x32f6('0x1a')][_0x32f6('0x1d')]||null:null,'limit':_0x529869[_0x32f6('0x1a')]?_0x529869[_0x32f6('0x1a')][_0x32f6('0x1e')]||null:null,'include':_0x529869[_0x32f6('0x1a')]?_0x529869[_0x32f6('0x1a')][_0x32f6('0x1f')]?_[_0x32f6('0x20')](_0x529869[_0x32f6('0x1a')][_0x32f6('0x1f')],function(_0x529d90){return{'model':db[_0x529d90[_0x32f6('0x21')]],'as':_0x529d90['as'],'attributes':_0x529d90[_0x32f6('0x1d')],'include':_0x529d90[_0x32f6('0x1f')]?_['map'](_0x529d90['include'],function(_0x10c1ce){return{'model':db[_0x10c1ce[_0x32f6('0x21')]],'as':_0x10c1ce['as'],'attributes':_0x10c1ce['attributes'],'include':_0x10c1ce[_0x32f6('0x1f')]?_['map'](_0x10c1ce[_0x32f6('0x1f')],function(_0xc41c46){return{'model':db[_0xc41c46[_0x32f6('0x21')]],'as':_0xc41c46['as'],'attributes':_0xc41c46['attributes']};}):[]};}):[]};}):[]:[]})[_0x32f6('0xe')](function(_0x4b94c1){logger['info'](_0x32f6('0x17'),_0x529869);logger['debug'](_0x32f6('0x17'),_0x529869,JSON['stringify'](_0x4b94c1));_0x58e7c(_0x4b94c1);})[_0x32f6('0x22')](function(_0xf45a53){logger['error'](_0x32f6('0x17'),_0xf45a53[_0x32f6('0x16')],_0x529869);_0x18fe84(_0x4949bf[_0x32f6('0x15')](0x1f4,_0xf45a53['message']));});});};exports[_0x32f6('0x23')]=function(_0x67b584){var _0x14f590=this;return new Promise(function(_0x1f8973,_0x4aa545){return db[_0x32f6('0x18')][_0x32f6('0x24')](_0x67b584['body'],{'raw':_0x67b584[_0x32f6('0x1a')]?_0x67b584[_0x32f6('0x1a')][_0x32f6('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x67b584[_0x32f6('0x1a')]?_0x67b584[_0x32f6('0x1a')][_0x32f6('0x1c')]||null:null,'attributes':_0x67b584[_0x32f6('0x1a')]?_0x67b584[_0x32f6('0x1a')][_0x32f6('0x1d')]||null:null,'limit':_0x67b584['options']?_0x67b584[_0x32f6('0x1a')][_0x32f6('0x1e')]||null:null})[_0x32f6('0xe')](function(_0x51961c){logger[_0x32f6('0xf')]('UpdateCmHopperBlack',_0x67b584);logger[_0x32f6('0x12')]('UpdateCmHopperBlack',_0x67b584,JSON[_0x32f6('0x14')](_0x51961c));_0x1f8973(_0x51961c);})['catch'](function(_0x4e0887){logger[_0x32f6('0x15')](_0x32f6('0x23'),_0x4e0887[_0x32f6('0x16')],_0x67b584);_0x4aa545(_0x14f590[_0x32f6('0x15')](0x1f4,_0x4e0887['message']));});});};exports[_0x32f6('0x25')]=function(_0x4f0000){var _0x55eca9=this;return new Promise(function(_0x2392ab,_0x2524ce){return db[_0x32f6('0x18')][_0x32f6('0x26')]({'where':_0x4f0000[_0x32f6('0x1a')]?_0x4f0000[_0x32f6('0x1a')][_0x32f6('0x1c')]||null:null})[_0x32f6('0xe')](function(_0x48820e){logger[_0x32f6('0xf')](_0x32f6('0x25'),_0x4f0000);logger['debug'](_0x32f6('0x25'),_0x4f0000,JSON[_0x32f6('0x14')](_0x48820e));_0x2392ab(_0x48820e);})['catch'](function(_0x12e921){logger['error'](_0x32f6('0x25'),_0x12e921[_0x32f6('0x16')],_0x4f0000);_0x2524ce(_0x55eca9[_0x32f6('0x15')](0x1f4,_0x12e921[_0x32f6('0x16')]));});});};
\ No newline at end of file
+var _0xec1e=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','util','moment','bluebird','randomstring','ioredis'];(function(_0x7d36ee,_0x247639){var _0x562c86=function(_0x49c644){while(--_0x49c644){_0x7d36ee['push'](_0x7d36ee['shift']());}};_0x562c86(++_0x247639);}(_0xec1e,0x73));var _0xeec1=function(_0x1d7599,_0x49929f){_0x1d7599=_0x1d7599-0x0;var _0x55da12=_0xec1e[_0x1d7599];return _0x55da12;};'use strict';var _=require('lodash');var util=require(_0xeec1('0x0'));var moment=require(_0xeec1('0x1'));var BPromise=require(_0xeec1('0x2'));var rs=require(_0xeec1('0x3'));var fs=require('fs');var Redis=require(_0xeec1('0x4'));var db=require(_0xeec1('0x5'))['db'];var utils=require(_0xeec1('0x6'));var logger=require(_0xeec1('0x7'))(_0xeec1('0x8'));var config=require('../../config/environment');var jayson=require(_0xeec1('0x9'));var client=jayson[_0xeec1('0xa')][_0xeec1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1ff627,_0x116d10,_0x221193){return new BPromise(function(_0x5cb06a,_0x59d181){return client[_0xeec1('0xc')](_0x1ff627,_0x221193)[_0xeec1('0xd')](function(_0x17ab7e){logger[_0xeec1('0xe')](_0xeec1('0xf'),_0x116d10,_0xeec1('0x10'));logger[_0xeec1('0x11')](_0xeec1('0x12'),_0x116d10,_0xeec1('0x10'),JSON[_0xeec1('0x13')](_0x17ab7e));if(_0x17ab7e[_0xeec1('0x14')]){if(_0x17ab7e[_0xeec1('0x14')]['code']===0x1f4){logger[_0xeec1('0x14')](_0xeec1('0xf'),_0x116d10,_0x17ab7e[_0xeec1('0x14')][_0xeec1('0x15')]);return _0x59d181(_0x17ab7e[_0xeec1('0x14')][_0xeec1('0x15')]);}logger[_0xeec1('0x14')]('CmHopperBlack,\x20%s,\x20%s',_0x116d10,_0x17ab7e[_0xeec1('0x14')][_0xeec1('0x15')]);return _0x5cb06a(_0x17ab7e[_0xeec1('0x14')][_0xeec1('0x15')]);}else{logger[_0xeec1('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x116d10,_0xeec1('0x10'));_0x5cb06a(_0x17ab7e[_0xeec1('0x16')][_0xeec1('0x15')]);}})[_0xeec1('0x17')](function(_0x346f79){logger['error'](_0xeec1('0xf'),_0x116d10,_0x346f79);_0x59d181(_0x346f79);});});}exports[_0xeec1('0x18')]=function(_0x34d1d1){var _0x13e1f8=this;return new Promise(function(_0x260bdb,_0x465d98){return db[_0xeec1('0x19')][_0xeec1('0x1a')]({'raw':_0x34d1d1[_0xeec1('0x1b')]?_0x34d1d1[_0xeec1('0x1b')][_0xeec1('0x1c')]===undefined?!![]:![]:!![],'where':_0x34d1d1[_0xeec1('0x1b')]?_0x34d1d1[_0xeec1('0x1b')][_0xeec1('0x1d')]||null:null,'attributes':_0x34d1d1[_0xeec1('0x1b')]?_0x34d1d1[_0xeec1('0x1b')][_0xeec1('0x1e')]||null:null,'limit':_0x34d1d1[_0xeec1('0x1b')]?_0x34d1d1[_0xeec1('0x1b')][_0xeec1('0x1f')]||null:null,'include':_0x34d1d1[_0xeec1('0x1b')]?_0x34d1d1[_0xeec1('0x1b')][_0xeec1('0x20')]?_[_0xeec1('0x21')](_0x34d1d1['options'][_0xeec1('0x20')],function(_0x92400a){return{'model':db[_0x92400a[_0xeec1('0x22')]],'as':_0x92400a['as'],'attributes':_0x92400a['attributes'],'include':_0x92400a['include']?_[_0xeec1('0x21')](_0x92400a[_0xeec1('0x20')],function(_0x536e4b){return{'model':db[_0x536e4b['model']],'as':_0x536e4b['as'],'attributes':_0x536e4b[_0xeec1('0x1e')],'include':_0x536e4b[_0xeec1('0x20')]?_[_0xeec1('0x21')](_0x536e4b[_0xeec1('0x20')],function(_0x19e6e8){return{'model':db[_0x19e6e8[_0xeec1('0x22')]],'as':_0x19e6e8['as'],'attributes':_0x19e6e8[_0xeec1('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xeec1('0xd')](function(_0x292a8a){logger[_0xeec1('0xe')](_0xeec1('0x18'),_0x34d1d1);logger[_0xeec1('0x11')](_0xeec1('0x18'),_0x34d1d1,JSON[_0xeec1('0x13')](_0x292a8a));_0x260bdb(_0x292a8a);})[_0xeec1('0x17')](function(_0x5c2099){logger[_0xeec1('0x14')](_0xeec1('0x18'),_0x5c2099[_0xeec1('0x15')],_0x34d1d1);_0x465d98(_0x13e1f8[_0xeec1('0x14')](0x1f4,_0x5c2099[_0xeec1('0x15')]));});});};exports[_0xeec1('0x23')]=function(_0x22c7bd){var _0x18b50d=this;return new Promise(function(_0x54d09b,_0x2155e1){return db[_0xeec1('0x19')][_0xeec1('0x24')](_0x22c7bd[_0xeec1('0x25')],{'raw':_0x22c7bd[_0xeec1('0x1b')]?_0x22c7bd['options'][_0xeec1('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22c7bd[_0xeec1('0x1b')]?_0x22c7bd['options'][_0xeec1('0x1d')]||null:null,'attributes':_0x22c7bd[_0xeec1('0x1b')]?_0x22c7bd[_0xeec1('0x1b')]['attributes']||null:null,'limit':_0x22c7bd['options']?_0x22c7bd[_0xeec1('0x1b')][_0xeec1('0x1f')]||null:null})[_0xeec1('0xd')](function(_0x1bd0c1){logger['info']('UpdateCmHopperBlack',_0x22c7bd);logger[_0xeec1('0x11')](_0xeec1('0x23'),_0x22c7bd,JSON[_0xeec1('0x13')](_0x1bd0c1));_0x54d09b(_0x1bd0c1);})[_0xeec1('0x17')](function(_0x13dde9){logger['error'](_0xeec1('0x23'),_0x13dde9['message'],_0x22c7bd);_0x2155e1(_0x18b50d[_0xeec1('0x14')](0x1f4,_0x13dde9[_0xeec1('0x15')]));});});};exports[_0xeec1('0x26')]=function(_0x349fe8){var _0x337b9d=this;return new Promise(function(_0x3bccce,_0x25bd72){return db[_0xeec1('0x19')][_0xeec1('0x27')]({'where':_0x349fe8[_0xeec1('0x1b')]?_0x349fe8[_0xeec1('0x1b')]['where']||null:null})['then'](function(_0x1462ca){logger[_0xeec1('0xe')]('DestroyCmHopperBlack',_0x349fe8);logger['debug'](_0xeec1('0x26'),_0x349fe8,JSON['stringify'](_0x1462ca));_0x3bccce(_0x1462ca);})['catch'](function(_0x1e1195){logger[_0xeec1('0x14')](_0xeec1('0x26'),_0x1e1195[_0xeec1('0x15')],_0x349fe8);_0x25bd72(_0x337b9d[_0xeec1('0x14')](0x1f4,_0x1e1195[_0xeec1('0x15')]));});});};
\ No newline at end of file
index a308794..19e4297 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x909dfe,_0x36e38a){var _0x5cb58f=function(_0x3f3000){while(--_0x3f3000){_0x909dfe['push'](_0x909dfe['shift']());}};_0x5cb58f(++_0x36e38a);}(_0xbff5,0x1bc));var _0x5bff=function(_0x5f1822,_0x2c43a8){_0x5f1822=_0x5f1822-0x0;var _0x161168=_0xbff5[_0x5f1822];return _0x161168;};'use strict';var multer=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var path=require(_0x5bff('0x2'));var timeout=require(_0x5bff('0x3'));var express=require(_0x5bff('0x4'));var router=express[_0x5bff('0x5')]();var fs_extra=require(_0x5bff('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5bff('0x7'));var config=require('../../config/environment');var controller=require('./cmHopperBlack.controller');router[_0x5bff('0x8')]('/',auth[_0x5bff('0x9')](),controller[_0x5bff('0xa')]);router[_0x5bff('0x8')](_0x5bff('0xb'),auth[_0x5bff('0x9')](),controller[_0x5bff('0xc')]);router[_0x5bff('0x8')](_0x5bff('0xd'),auth['isAuthenticated'](),controller[_0x5bff('0xe')]);router['put'](_0x5bff('0xd'),auth[_0x5bff('0x9')](),controller['update']);router[_0x5bff('0xf')]('/:id',auth[_0x5bff('0x9')](),controller['destroy']);module[_0x5bff('0x10')]=router;
\ No newline at end of file
+var _0xf494=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','describe','/:id','show','put','delete','destroy','multer','util'];(function(_0x5409aa,_0x2f7db4){var _0x4677b6=function(_0x25ca63){while(--_0x25ca63){_0x5409aa['push'](_0x5409aa['shift']());}};_0x4677b6(++_0x2f7db4);}(_0xf494,0x1c6));var _0x4f49=function(_0x2b70df,_0x224881){_0x2b70df=_0x2b70df-0x0;var _0x44b705=_0xf494[_0x2b70df];return _0x44b705;};'use strict';var multer=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var path=require(_0x4f49('0x2'));var timeout=require('connect-timeout');var express=require(_0x4f49('0x3'));var router=express[_0x4f49('0x4')]();var fs_extra=require(_0x4f49('0x5'));var auth=require(_0x4f49('0x6'));var interaction=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var controller=require(_0x4f49('0x9'));router[_0x4f49('0xa')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0xc')]);router[_0x4f49('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x4f49('0xd')]);router[_0x4f49('0xa')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0xf')]);router[_0x4f49('0x10')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller['update']);router[_0x4f49('0x11')](_0x4f49('0xe'),auth['isAuthenticated'](),controller[_0x4f49('0x12')]);module['exports']=router;
\ No newline at end of file
index bee640b..85182d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e07=['getDataValue','endtime','setDataValue','diff','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE'];(function(_0x34dbc0,_0x27e7ce){var _0x1aebb4=function(_0x54e5b6){while(--_0x54e5b6){_0x34dbc0['push'](_0x34dbc0['shift']());}};_0x1aebb4(++_0x27e7ce);}(_0x8e07,0x165));var _0x78e0=function(_0xda6675,_0x492ac5){_0xda6675=_0xda6675-0x0;var _0x9a3a27=_0x8e07[_0xda6675];return _0x9a3a27;};'use strict';var Sequelize=require(_0x78e0('0x0'));var moment=require(_0x78e0('0x1'));module[_0x78e0('0x2')]={'state':{'type':Sequelize[_0x78e0('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x78e0('0x4')]},'scheduledat':{'type':Sequelize[_0x78e0('0x5')]},'countbusyretry':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x78e0('0x4')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x78e0('0x4')]},'calleridnum':{'type':Sequelize[_0x78e0('0x4')]},'calleridname':{'type':Sequelize[_0x78e0('0x4')]},'starttime':{'type':Sequelize[_0x78e0('0x5')]},'responsetime':{'type':Sequelize[_0x78e0('0x5')]},'answertime':{'type':Sequelize[_0x78e0('0x5')]},'droptime':{'type':Sequelize[_0x78e0('0x5')]},'endtime':{'type':Sequelize[_0x78e0('0x5')]},'ringtime':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x78e0('0x4')]},'campaign':{'type':Sequelize[_0x78e0('0x4')]},'campaigntype':{'type':Sequelize[_0x78e0('0x4')]},'membername':{'type':Sequelize[_0x78e0('0x4')]},'reason':{'type':Sequelize[_0x78e0('0x4')]},'disposition':{'type':Sequelize[_0x78e0('0x4')]},'secondDisposition':{'type':Sequelize[_0x78e0('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x3533de){var _0x3759d3=this[_0x78e0('0x6')](_0x78e0('0x7'));if(_0x3759d3&&_0x3533de){this[_0x78e0('0x8')]('followuptime',moment(_0x3533de)[_0x78e0('0x9')](moment(_0x3759d3),'seconds'));}}},'amd':{'type':Sequelize[_0x78e0('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0x78e0('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x78e0('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x78e0('0x5')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x78e0('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x78e0('0x5')]},'deleted':{'type':Sequelize[_0x78e0('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x78e0('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x78e0('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x78e0('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x258e=['getDataValue','endtime','setDataValue','followuptime','diff','seconds','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE'];(function(_0x16a7d8,_0x326d5c){var _0xa4b589=function(_0x17add5){while(--_0x17add5){_0x16a7d8['push'](_0x16a7d8['shift']());}};_0xa4b589(++_0x326d5c);}(_0x258e,0x118));var _0xe258=function(_0x449e04,_0x18458d){_0x449e04=_0x449e04-0x0;var _0x54ac4c=_0x258e[_0x449e04];return _0x54ac4c;};'use strict';var Sequelize=require(_0xe258('0x0'));var moment=require(_0xe258('0x1'));module[_0xe258('0x2')]={'state':{'type':Sequelize[_0xe258('0x3')](0x2)},'statedesc':{'type':Sequelize[_0xe258('0x4')]},'scheduledat':{'type':Sequelize[_0xe258('0x5')]},'countbusyretry':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xe258('0x4')]},'originatecalleridnum':{'type':Sequelize[_0xe258('0x4')]},'originatecalleridname':{'type':Sequelize[_0xe258('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xe258('0x4')]},'starttime':{'type':Sequelize[_0xe258('0x5')]},'responsetime':{'type':Sequelize[_0xe258('0x5')]},'answertime':{'type':Sequelize[_0xe258('0x5')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xe258('0x5')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xe258('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xe258('0x4')]},'reason':{'type':Sequelize[_0xe258('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xe258('0x4')]},'thirdDisposition':{'type':Sequelize[_0xe258('0x4')]},'dispositionat':{'type':Sequelize[_0xe258('0x5')],'set':function(_0x3e48c0){var _0x23756c=this[_0xe258('0x6')](_0xe258('0x7'));if(_0x23756c&&_0x3e48c0){this[_0xe258('0x8')](_0xe258('0x9'),moment(_0x3e48c0)[_0xe258('0xa')](moment(_0x23756c),_0xe258('0xb')));}}},'amd':{'type':Sequelize[_0xe258('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0xe258('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xe258('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xe258('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xe258('0x5')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe258('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xe258('0x5')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0xe258('0x5')]},'recallme':{'type':Sequelize[_0xe258('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xe258('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe258('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 4ce6aaf..d5a0fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','dropContacts','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','insert','into','cm_hopper','phone','scheduledAt','ListId','createdAt','select','ANY_VALUE(calleridnum)','field','NOW()','ContactId','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','cm_hopper_final','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','from','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','VoiceQueueId\x20=\x20?','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','updatedAt','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','CampaignId','CampaignId\x20=\x20?','checkContactHopper','findOne','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','options','CmHopperFinal','findAll','rows','catch','show','params','length','find','describe','body','uniqueid','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts'];(function(_0x1b3289,_0x5e3c61){var _0x2cf96d=function(_0x16459e){while(--_0x16459e){_0x1b3289['push'](_0x1b3289['shift']());}};_0x2cf96d(++_0x5e3c61);}(_0x1623,0xab));var _0x3162=function(_0x577db2,_0x1aaec7){_0x577db2=_0x577db2-0x0;var _0x4e92a3=_0x1623[_0x577db2];return _0x4e92a3;};'use strict';var emlformat=require(_0x3162('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3162('0x1'));var rp=require(_0x3162('0x2'));var moment=require(_0x3162('0x3'));var BPromise=require(_0x3162('0x4'));var Mustache=require(_0x3162('0x5'));var util=require('util');var path=require('path');var sox=require(_0x3162('0x6'));var csv=require('to-csv');var ejs=require(_0x3162('0x7'));var fs=require('fs');var fs_extra=require(_0x3162('0x8'));var _=require('lodash');var squel=require(_0x3162('0x9'));var crypto=require(_0x3162('0xa'));var jsforce=require(_0x3162('0xb'));var deskjs=require(_0x3162('0xc'));var toCsv=require(_0x3162('0xd'));var querystring=require(_0x3162('0xe'));var Papa=require(_0x3162('0xf'));var Redis=require(_0x3162('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3162('0x11'));var hardwareService=require(_0x3162('0x12'));var logger=require(_0x3162('0x13'))(_0x3162('0x14'));var utils=require(_0x3162('0x15'));var config=require(_0x3162('0x16'));var licenseUtil=require(_0x3162('0x17'));var db=require(_0x3162('0x18'))['db'];function respondWithStatusCode(_0x157ab8,_0x4c3625){_0x4c3625=_0x4c3625||0xcc;return function(_0x2d11c5){if(_0x2d11c5){return _0x157ab8['sendStatus'](_0x4c3625);}return _0x157ab8[_0x3162('0x19')](_0x4c3625)[_0x3162('0x1a')]();};}function respondWithResult(_0x49d1ad,_0x4a393a){_0x4a393a=_0x4a393a||0xc8;return function(_0x198764){if(_0x198764){return _0x49d1ad[_0x3162('0x19')](_0x4a393a)[_0x3162('0x1b')](_0x198764);}};}function respondWithFilteredResult(_0x4b8a3b,_0x15e348){return function(_0x3d0bea){if(_0x3d0bea){var _0x2705d1=typeof _0x15e348['offset']===_0x3162('0x1c')&&typeof _0x15e348[_0x3162('0x1d')]===_0x3162('0x1c');var _0xc3ee06=_0x3d0bea[_0x3162('0x1e')];var _0x1eed46=_0x2705d1?0x0:_0x15e348[_0x3162('0x1f')];var _0x4b2bf3=_0x2705d1?_0x3d0bea[_0x3162('0x1e')]:_0x15e348[_0x3162('0x1f')]+_0x15e348[_0x3162('0x1d')];var _0x36ca97;if(_0x4b2bf3>=_0xc3ee06){_0x4b2bf3=_0xc3ee06;_0x36ca97=0xc8;}else{_0x36ca97=0xce;}_0x4b8a3b['status'](_0x36ca97);return _0x4b8a3b[_0x3162('0x20')]('Content-Range',_0x1eed46+'-'+_0x4b2bf3+'/'+_0xc3ee06)['json'](_0x3d0bea);}return null;};}function patchUpdates(_0xa5c62b){return function(_0x3e4d23){try{jsonpatch[_0x3162('0x21')](_0x3e4d23,_0xa5c62b,!![]);}catch(_0x523fab){return BPromise['reject'](_0x523fab);}return _0x3e4d23[_0x3162('0x22')]();};}function saveUpdates(_0x396372,_0x32c051){return function(_0x26c90d){if(_0x26c90d){return _0x26c90d[_0x3162('0x23')](_0x396372)[_0x3162('0x24')](function(_0x52ae25){return _0x52ae25;});}return null;};}function removeEntity(_0x1b2713,_0x5a4994){return function(_0xd283d6){if(_0xd283d6){return _0xd283d6[_0x3162('0x25')]()[_0x3162('0x24')](function(){_0x1b2713[_0x3162('0x19')](0xcc)[_0x3162('0x1a')]();});}};}function handleEntityNotFound(_0x3c543e,_0x30552f){return function(_0x5f8f7){if(!_0x5f8f7){_0x3c543e[_0x3162('0x26')](0x194);}return _0x5f8f7;};}function handleError(_0x356c5d,_0x8fa09f){_0x8fa09f=_0x8fa09f||0x1f4;return function(_0x2f62d7){logger[_0x3162('0x27')](_0x2f62d7['stack']);if(_0x2f62d7[_0x3162('0x28')]){delete _0x2f62d7['name'];}_0x356c5d[_0x3162('0x19')](_0x8fa09f)[_0x3162('0x29')](_0x2f62d7);};}exports[_0x3162('0x2a')]=function(_0x57f567,_0x4903e7){var _0xda0389={},_0xaa1f35={},_0x14df16={'count':0x0,'rows':[]};var _0x399148=_[_0x3162('0x2b')](db['CmHopperFinal'][_0x3162('0x2c')],function(_0x4e3cc2){return{'name':_0x4e3cc2[_0x3162('0x2d')],'type':_0x4e3cc2[_0x3162('0x2e')][_0x3162('0x2f')]};});_0xaa1f35[_0x3162('0x30')]=_[_0x3162('0x2b')](_0x399148,_0x3162('0x28'));_0xaa1f35[_0x3162('0x31')]=_[_0x3162('0x32')](_0x57f567['query']);_0xaa1f35[_0x3162('0x33')]=_[_0x3162('0x34')](_0xaa1f35['model'],_0xaa1f35[_0x3162('0x31')]);_0xda0389[_0x3162('0x35')]=_['intersection'](_0xaa1f35['model'],qs[_0x3162('0x36')](_0x57f567['query'][_0x3162('0x36')]));_0xda0389[_0x3162('0x35')]=_0xda0389[_0x3162('0x35')]['length']?_0xda0389['attributes']:_0xaa1f35[_0x3162('0x30')];if(!_0x57f567[_0x3162('0x31')]['hasOwnProperty'](_0x3162('0x37'))){_0xda0389['limit']=qs[_0x3162('0x1d')](_0x57f567[_0x3162('0x31')][_0x3162('0x1d')]);_0xda0389[_0x3162('0x1f')]=qs[_0x3162('0x1f')](_0x57f567[_0x3162('0x31')][_0x3162('0x1f')]);}_0xda0389[_0x3162('0x38')]=qs[_0x3162('0x39')](_0x57f567[_0x3162('0x31')][_0x3162('0x39')]);_0xda0389['where']=qs[_0x3162('0x33')](_[_0x3162('0x3a')](_0x57f567[_0x3162('0x31')],_0xaa1f35['filters']),_0x399148);if(_0x57f567['query'][_0x3162('0x3b')]){_0xda0389[_0x3162('0x3c')]=_[_0x3162('0x3d')](_0xda0389[_0x3162('0x3c')],{'$or':_['map'](_0x399148,function(_0x4186b6){if(_0x4186b6['type']!=='VIRTUAL'){var _0x5dee49={};_0x5dee49[_0x4186b6[_0x3162('0x28')]]={'$like':'%'+_0x57f567[_0x3162('0x31')][_0x3162('0x3b')]+'%'};return _0x5dee49;}})});}_0xda0389=_['merge']({},_0xda0389,_0x57f567[_0x3162('0x3e')]);var _0x2ce9c6={'where':_0xda0389[_0x3162('0x3c')]};return db[_0x3162('0x3f')][_0x3162('0x1e')](_0x2ce9c6)['then'](function(_0x5447d6){_0x14df16[_0x3162('0x1e')]=_0x5447d6;if(_0x57f567[_0x3162('0x31')]['includeAll']){_0xda0389['include']=[{'all':!![]}];}return db[_0x3162('0x3f')][_0x3162('0x40')](_0xda0389);})[_0x3162('0x24')](function(_0x4883ac){_0x14df16[_0x3162('0x41')]=_0x4883ac;return _0x14df16;})[_0x3162('0x24')](respondWithFilteredResult(_0x4903e7,_0xda0389))[_0x3162('0x42')](handleError(_0x4903e7,null));};exports[_0x3162('0x43')]=function(_0x534708,_0x2617d3){var _0x282e3e={'raw':!![],'where':{'id':_0x534708[_0x3162('0x44')]['id']}},_0x522cce={};_0x522cce[_0x3162('0x30')]=_['keys'](db[_0x3162('0x3f')][_0x3162('0x2c')]);_0x522cce['query']=_[_0x3162('0x32')](_0x534708['query']);_0x522cce[_0x3162('0x33')]=_[_0x3162('0x34')](_0x522cce[_0x3162('0x30')],_0x522cce[_0x3162('0x31')]);_0x282e3e[_0x3162('0x35')]=_[_0x3162('0x34')](_0x522cce['model'],qs[_0x3162('0x36')](_0x534708[_0x3162('0x31')][_0x3162('0x36')]));_0x282e3e['attributes']=_0x282e3e[_0x3162('0x35')][_0x3162('0x45')]?_0x282e3e['attributes']:_0x522cce[_0x3162('0x30')];if(_0x534708['query']['includeAll']){_0x282e3e['include']=[{'all':!![]}];}_0x282e3e=_[_0x3162('0x3d')]({},_0x282e3e,_0x534708[_0x3162('0x3e')]);return db[_0x3162('0x3f')][_0x3162('0x46')](_0x282e3e)[_0x3162('0x24')](handleEntityNotFound(_0x2617d3,null))[_0x3162('0x24')](respondWithResult(_0x2617d3,null))[_0x3162('0x42')](handleError(_0x2617d3,null));};exports[_0x3162('0x47')]=function(_0x3d2958,_0x28865c){return db[_0x3162('0x3f')][_0x3162('0x47')]()[_0x3162('0x24')](respondWithResult(_0x28865c,null))['catch'](handleError(_0x28865c,null));};exports[_0x3162('0x23')]=function(_0x48cb8f,_0x4f1dde){if(_0x48cb8f[_0x3162('0x48')][_0x3162('0x49')]){delete _0x48cb8f[_0x3162('0x48')][_0x3162('0x49')];}return db['CmHopperFinal'][_0x3162('0x46')]({'where':{'uniqueid':_0x48cb8f['params']['id']}})[_0x3162('0x24')](handleEntityNotFound(_0x4f1dde,null))[_0x3162('0x24')](saveUpdates(_0x48cb8f['body'],null))[_0x3162('0x24')](respondWithResult(_0x4f1dde,null))['catch'](handleError(_0x4f1dde,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x13e7c4,_0x22c0a2,_0x160364){return db[_0x3162('0x3f')][_0x3162('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x13e7c4[_0x3162('0x44')]['id']},'attributes':[[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x3162('0x4c')))),_0x3162('0x4d')],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')]('`state`\x20=\x203,\x201,\x20null'))),_0x3162('0x4f')],[db['sequelize']['fn'](_0x3162('0x4b'),db['sequelize']['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x50')))),_0x3162('0x51')],[db['sequelize']['fn']('COUNT',db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x52')))),_0x3162('0x53')],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db['sequelize'][_0x3162('0x4e')](_0x3162('0x54')))),'dropContacts'],[db['sequelize']['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x55')))),_0x3162('0x56')],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db['sequelize']['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')]('`state`\x20=\x2022,\x201,\x20null'))),_0x3162('0x57')],[db['sequelize']['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x58')))),_0x3162('0x59')]]})[_0x3162('0x24')](handleEntityNotFound(_0x22c0a2,null))[_0x3162('0x24')](respondWithResult(_0x22c0a2,null))[_0x3162('0x42')](handleError(_0x22c0a2,null));};exports[_0x3162('0x5a')]=function(_0x4b5729,_0x4a42ea,_0x520b1a){return db[_0x3162('0x3f')]['findAll']({'raw':![],'where':{'CampaignId':_0x4b5729[_0x3162('0x44')]['id']},'attributes':[[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0x3162('0x4d')],[db[_0x3162('0x4a')]['fn']('COUNT',db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x5b')))),_0x3162('0x4f')],[db['sequelize']['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x50')))),'busyContacts'],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x52')))),_0x3162('0x53')],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x54')))),_0x3162('0x5c')],[db[_0x3162('0x4a')]['fn']('COUNT',db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')]['literal'](_0x3162('0x55')))),'abandonedContacts'],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x5d')))),'reCallContacts'],[db[_0x3162('0x4a')]['fn'](_0x3162('0x4b'),db[_0x3162('0x4a')]['fn']('IF',db[_0x3162('0x4a')][_0x3162('0x4e')](_0x3162('0x58')))),'answeringMachine']]})[_0x3162('0x24')](handleEntityNotFound(_0x4a42ea,null))[_0x3162('0x24')](respondWithResult(_0x4a42ea,null))[_0x3162('0x42')](handleError(_0x4a42ea,null));};exports[_0x3162('0x5e')]=function(_0x8a75ca,_0x33c39d,_0xb3d824){return db['VoiceQueue']['find']({'where':{'id':_0x8a75ca['params']['id']}})[_0x3162('0x24')](handleEntityNotFound(_0x33c39d,null))[_0x3162('0x24')](function(_0x59b3f7){var _0x129005;if(_0x59b3f7){_0x129005=squel[_0x3162('0x5f')]()[_0x3162('0x60')](_0x3162('0x61'))['fromQuery']([_0x3162('0x62'),_0x3162('0x63'),'ContactId',_0x3162('0x64'),'VoiceQueueId',_0x3162('0x65'),'updatedAt'],squel[_0x3162('0x66')]()['field'](_0x3162('0x67'),_0x3162('0x62'))[_0x3162('0x68')](_0x3162('0x69'),_0x3162('0x63'))[_0x3162('0x68')]('ANY_VALUE(ContactId)',_0x3162('0x6a'))[_0x3162('0x68')](_0x3162('0x6b'),'ListId')[_0x3162('0x68')](_0x3162('0x6c'),_0x3162('0x6d'))[_0x3162('0x68')](_0x3162('0x69'),'createdAt')[_0x3162('0x68')](_0x3162('0x69'),'updatedAt')['from'](_0x3162('0x6e'))[_0x3162('0x3c')]('VoiceQueueId\x20=\x20?',_0x8a75ca[_0x3162('0x44')]['id'][_0x3162('0x6f')]())[_0x3162('0x3c')](_0x3162('0x70'),_0x8a75ca[_0x3162('0x48')][_0x3162('0x71')][_0x3162('0x6f')]())[_0x3162('0x3c')](_0x3162('0x72'))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x3162('0x66')]()[_0x3162('0x68')]('phone')[_0x3162('0x73')]('cm_hopper')['where']('VoiceQueueId\x20=\x20?',_0x8a75ca[_0x3162('0x44')]['id']['toString']()))[_0x3162('0x3c')](_0x3162('0x74'),squel[_0x3162('0x66')]()[_0x3162('0x68')](_0x3162('0x75'))[_0x3162('0x73')](_0x3162('0x6e'))[_0x3162('0x3c')](_0x3162('0x76'),_0x8a75ca[_0x3162('0x44')]['id'][_0x3162('0x6f')]())['where'](_0x3162('0x77')))[_0x3162('0x78')](_0x3162('0x6a')))[_0x3162('0x6f')]();return db[_0x3162('0x4a')][_0x3162('0x31')](_0x129005);}return[];})[_0x3162('0x24')](respondWithResult(_0x33c39d,null))[_0x3162('0x42')](handleError(_0x33c39d,null));};exports[_0x3162('0x79')]=function(_0x3f37fa,_0x1d242f,_0x190f91){return db['Campaign'][_0x3162('0x46')]({'where':{'id':_0x3f37fa[_0x3162('0x44')]['id']}})[_0x3162('0x24')](handleEntityNotFound(_0x1d242f,null))['then'](function(_0x3d7bd1){var _0x5cdbb0;if(_0x3d7bd1){_0x5cdbb0=squel[_0x3162('0x5f')]()[_0x3162('0x60')]('cm_hopper')['fromQuery']([_0x3162('0x62'),_0x3162('0x63'),'ContactId',_0x3162('0x64'),'CampaignId',_0x3162('0x65'),_0x3162('0x7a')],squel[_0x3162('0x66')]()[_0x3162('0x68')](_0x3162('0x67'),_0x3162('0x62'))[_0x3162('0x68')](_0x3162('0x69'),_0x3162('0x63'))['field'](_0x3162('0x7b'),'ContactId')[_0x3162('0x68')](_0x3162('0x6b'),'ListId')[_0x3162('0x68')](_0x3162('0x7c'),_0x3162('0x7d'))[_0x3162('0x68')](_0x3162('0x69'),_0x3162('0x65'))[_0x3162('0x68')]('NOW()',_0x3162('0x7a'))[_0x3162('0x73')](_0x3162('0x6e'))['where'](_0x3162('0x7e'),_0x3f37fa[_0x3162('0x44')]['id'][_0x3162('0x6f')]())[_0x3162('0x3c')](_0x3162('0x70'),_0x3f37fa[_0x3162('0x48')]['state'][_0x3162('0x6f')]())[_0x3162('0x3c')](_0x3162('0x72'))[_0x3162('0x3c')](_0x3162('0x74'),squel['select']()[_0x3162('0x68')]('phone')[_0x3162('0x73')](_0x3162('0x61'))['where'](_0x3162('0x7e'),_0x3f37fa[_0x3162('0x44')]['id'][_0x3162('0x6f')]()))['where'](_0x3162('0x74'),squel['select']()['field'](_0x3162('0x75'))[_0x3162('0x73')](_0x3162('0x6e'))[_0x3162('0x3c')](_0x3162('0x7e'),_0x3f37fa[_0x3162('0x44')]['id'][_0x3162('0x6f')]())['where']('state\x20=\x204'))['group'](_0x3162('0x6a')))[_0x3162('0x6f')]();return db['sequelize']['query'](_0x5cdbb0);}return[];})[_0x3162('0x24')](respondWithResult(_0x1d242f,null))['catch'](handleError(_0x1d242f,null));};exports[_0x3162('0x7f')]=function(_0x35d9f0,_0x4408db,_0x377edb){return db['CmHopper'][_0x3162('0x80')]({'where':{'VoiceQueueId':_0x35d9f0[_0x3162('0x48')][_0x3162('0x6d')],'CampaignId':_0x35d9f0['body'][_0x3162('0x7d')],'ContactId':_0x35d9f0['body'][_0x3162('0x6a')]}})['then'](handleEntityNotFound(_0x4408db,null))[_0x3162('0x24')](function(_0x3d414f){if(_0x3d414f){return _0x3d414f;}return null;})[_0x3162('0x24')](respondWithResult(_0x4408db,null))['catch'](handleError(_0x4408db,null));};
\ No newline at end of file
+var _0x53ec=['ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','group','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','name','send','map','CmHopperFinal','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','rows','show','params','include','find','catch','describe','update','body','uniqueid','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','findAll','noSuchContacts','`state`\x20=\x203,\x201,\x20null','dropContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','phone','ContactId','VoiceQueueId','updatedAt','select','ANY_VALUE(calleridnum)','scheduledAt','field','ListId','ANY_VALUE(VoiceQueueId)','NOW()','createdAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','moveContactsIvrCampaignHopperFinal','Campaign','fromQuery','CampaignId','ANY_VALUE(ContactId)'];(function(_0x419e5d,_0x3d8de6){var _0x4ba5ad=function(_0x658ba3){while(--_0x658ba3){_0x419e5d['push'](_0x419e5d['shift']());}};_0x4ba5ad(++_0x3d8de6);}(_0x53ec,0x192));var _0xc53e=function(_0x72895a,_0x433607){_0x72895a=_0x72895a-0x0;var _0x5226d5=_0x53ec[_0x72895a];return _0x5226d5;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];function respondWithStatusCode(_0x863fa,_0x4203aa){_0x4203aa=_0x4203aa||0xcc;return function(_0x56f0e5){if(_0x56f0e5){return _0x863fa['sendStatus'](_0x4203aa);}return _0x863fa[_0xc53e('0x18')](_0x4203aa)[_0xc53e('0x19')]();};}function respondWithResult(_0x7cd798,_0x3d2e17){_0x3d2e17=_0x3d2e17||0xc8;return function(_0x358ef3){if(_0x358ef3){return _0x7cd798[_0xc53e('0x18')](_0x3d2e17)[_0xc53e('0x1a')](_0x358ef3);}};}function respondWithFilteredResult(_0x19c0d1,_0x455e4d){return function(_0x2ad6eb){if(_0x2ad6eb){var _0x5b0a88=typeof _0x455e4d[_0xc53e('0x1b')]===_0xc53e('0x1c')&&typeof _0x455e4d[_0xc53e('0x1d')]===_0xc53e('0x1c');var _0x15333b=_0x2ad6eb[_0xc53e('0x1e')];var _0x164016=_0x5b0a88?0x0:_0x455e4d[_0xc53e('0x1b')];var _0x3b550e=_0x5b0a88?_0x2ad6eb['count']:_0x455e4d['offset']+_0x455e4d[_0xc53e('0x1d')];var _0x2a5bac;if(_0x3b550e>=_0x15333b){_0x3b550e=_0x15333b;_0x2a5bac=0xc8;}else{_0x2a5bac=0xce;}_0x19c0d1[_0xc53e('0x18')](_0x2a5bac);return _0x19c0d1[_0xc53e('0x1f')](_0xc53e('0x20'),_0x164016+'-'+_0x3b550e+'/'+_0x15333b)[_0xc53e('0x1a')](_0x2ad6eb);}return null;};}function patchUpdates(_0x15a015){return function(_0x25702b){try{jsonpatch[_0xc53e('0x21')](_0x25702b,_0x15a015,!![]);}catch(_0x401af6){return BPromise[_0xc53e('0x22')](_0x401af6);}return _0x25702b[_0xc53e('0x23')]();};}function saveUpdates(_0x426467,_0x4fb695){return function(_0x47cfdd){if(_0x47cfdd){return _0x47cfdd['update'](_0x426467)[_0xc53e('0x24')](function(_0x384218){return _0x384218;});}return null;};}function removeEntity(_0x7591c1,_0x4015c8){return function(_0x180811){if(_0x180811){return _0x180811['destroy']()['then'](function(){_0x7591c1[_0xc53e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ae55e,_0x3a5ce8){return function(_0x443179){if(!_0x443179){_0x1ae55e[_0xc53e('0x25')](0x194);}return _0x443179;};}function handleError(_0x63c5dc,_0x4df8cf){_0x4df8cf=_0x4df8cf||0x1f4;return function(_0x398e7a){logger['error'](_0x398e7a['stack']);if(_0x398e7a['name']){delete _0x398e7a[_0xc53e('0x26')];}_0x63c5dc['status'](_0x4df8cf)[_0xc53e('0x27')](_0x398e7a);};}exports['index']=function(_0x24a77e,_0x5112d2){var _0x5ce216={},_0x8f0ee6={},_0x6a62b0={'count':0x0,'rows':[]};var _0x42dec1=_[_0xc53e('0x28')](db[_0xc53e('0x29')][_0xc53e('0x2a')],function(_0x3280fe){return{'name':_0x3280fe[_0xc53e('0x2b')],'type':_0x3280fe['type'][_0xc53e('0x2c')]};});_0x8f0ee6[_0xc53e('0x2d')]=_[_0xc53e('0x28')](_0x42dec1,'name');_0x8f0ee6[_0xc53e('0x2e')]=_['keys'](_0x24a77e[_0xc53e('0x2e')]);_0x8f0ee6[_0xc53e('0x2f')]=_['intersection'](_0x8f0ee6['model'],_0x8f0ee6[_0xc53e('0x2e')]);_0x5ce216[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x8f0ee6[_0xc53e('0x2d')],qs[_0xc53e('0x32')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x5ce216[_0xc53e('0x30')]=_0x5ce216['attributes'][_0xc53e('0x33')]?_0x5ce216[_0xc53e('0x30')]:_0x8f0ee6[_0xc53e('0x2d')];if(!_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x34')](_0xc53e('0x35'))){_0x5ce216[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x24a77e[_0xc53e('0x2e')]['limit']);_0x5ce216[_0xc53e('0x1b')]=qs['offset'](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x1b')]);}_0x5ce216['order']=qs[_0xc53e('0x36')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x36')]);_0x5ce216['where']=qs[_0xc53e('0x2f')](_[_0xc53e('0x37')](_0x24a77e[_0xc53e('0x2e')],_0x8f0ee6[_0xc53e('0x2f')]),_0x42dec1);if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]){_0x5ce216[_0xc53e('0x39')]=_['merge'](_0x5ce216[_0xc53e('0x39')],{'$or':_[_0xc53e('0x28')](_0x42dec1,function(_0x2db711){if(_0x2db711['type']!==_0xc53e('0x3a')){var _0x5e8ab7={};_0x5e8ab7[_0x2db711[_0xc53e('0x26')]]={'$like':'%'+_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]+'%'};return _0x5e8ab7;}})});}_0x5ce216=_[_0xc53e('0x3b')]({},_0x5ce216,_0x24a77e[_0xc53e('0x3c')]);var _0x5507d0={'where':_0x5ce216[_0xc53e('0x39')]};return db[_0xc53e('0x29')]['count'](_0x5507d0)['then'](function(_0x5e9e15){_0x6a62b0['count']=_0x5e9e15;if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x5ce216['include']=[{'all':!![]}];}return db[_0xc53e('0x29')]['findAll'](_0x5ce216);})['then'](function(_0x53447e){_0x6a62b0[_0xc53e('0x3e')]=_0x53447e;return _0x6a62b0;})['then'](respondWithFilteredResult(_0x5112d2,_0x5ce216))['catch'](handleError(_0x5112d2,null));};exports[_0xc53e('0x3f')]=function(_0x53a82f,_0x422088){var _0x360af9={'raw':!![],'where':{'id':_0x53a82f[_0xc53e('0x40')]['id']}},_0x49f204={};_0x49f204[_0xc53e('0x2d')]=_['keys'](db[_0xc53e('0x29')]['rawAttributes']);_0x49f204['query']=_['keys'](_0x53a82f['query']);_0x49f204[_0xc53e('0x2f')]=_[_0xc53e('0x31')](_0x49f204[_0xc53e('0x2d')],_0x49f204['query']);_0x360af9[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x49f204['model'],qs['fields'](_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x360af9[_0xc53e('0x30')]=_0x360af9['attributes'][_0xc53e('0x33')]?_0x360af9[_0xc53e('0x30')]:_0x49f204[_0xc53e('0x2d')];if(_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x360af9[_0xc53e('0x41')]=[{'all':!![]}];}_0x360af9=_[_0xc53e('0x3b')]({},_0x360af9,_0x53a82f['options']);return db[_0xc53e('0x29')][_0xc53e('0x42')](_0x360af9)[_0xc53e('0x24')](handleEntityNotFound(_0x422088,null))['then'](respondWithResult(_0x422088,null))[_0xc53e('0x43')](handleError(_0x422088,null));};exports[_0xc53e('0x44')]=function(_0x4458c8,_0x15e744){return db[_0xc53e('0x29')][_0xc53e('0x44')]()['then'](respondWithResult(_0x15e744,null))[_0xc53e('0x43')](handleError(_0x15e744,null));};exports[_0xc53e('0x45')]=function(_0x39feea,_0x5a6e41){if(_0x39feea[_0xc53e('0x46')][_0xc53e('0x47')]){delete _0x39feea[_0xc53e('0x46')][_0xc53e('0x47')];}return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'uniqueid':_0x39feea[_0xc53e('0x40')]['id']}})[_0xc53e('0x24')](handleEntityNotFound(_0x5a6e41,null))[_0xc53e('0x24')](saveUpdates(_0x39feea[_0xc53e('0x46')],null))['then'](respondWithResult(_0x5a6e41,null))[_0xc53e('0x43')](handleError(_0x5a6e41,null));};exports[_0xc53e('0x48')]=function(_0x38520c,_0x3d74ac,_0x136544){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'VoiceQueueId':_0x38520c[_0xc53e('0x40')]['id']},'attributes':[[db['sequelize']['fn'](_0xc53e('0x49'),db['sequelize']['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x4c')))),'noSuchContacts'],[db[_0xc53e('0x4a')]['fn'](_0xc53e('0x49'),db[_0xc53e('0x4a')]['fn']('IF',db['sequelize'][_0xc53e('0x4b')]('`state`\x20=\x203,\x201,\x20null'))),_0xc53e('0x4d')],[db[_0xc53e('0x4a')]['fn']('COUNT',db[_0xc53e('0x4a')]['fn']('IF',db[_0xc53e('0x4a')]['literal'](_0xc53e('0x4e')))),_0xc53e('0x4f')],[db[_0xc53e('0x4a')]['fn'](_0xc53e('0x49'),db[_0xc53e('0x4a')]['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x50')))),_0xc53e('0x51')],[db[_0xc53e('0x4a')]['fn'](_0xc53e('0x49'),db['sequelize']['fn']('IF',db[_0xc53e('0x4a')]['literal'](_0xc53e('0x52')))),'dropContacts'],[db[_0xc53e('0x4a')]['fn'](_0xc53e('0x49'),db['sequelize']['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x53')))),_0xc53e('0x54')],[db['sequelize']['fn'](_0xc53e('0x49'),db[_0xc53e('0x4a')]['fn']('IF',db['sequelize']['literal'](_0xc53e('0x55')))),'reCallContacts'],[db['sequelize']['fn']('COUNT',db[_0xc53e('0x4a')]['fn']('IF',db['sequelize'][_0xc53e('0x4b')]('`state`\x20=\x2019,\x201,\x20null'))),_0xc53e('0x56')]]})[_0xc53e('0x24')](handleEntityNotFound(_0x3d74ac,null))[_0xc53e('0x24')](respondWithResult(_0x3d74ac,null))[_0xc53e('0x43')](handleError(_0x3d74ac,null));};exports[_0xc53e('0x57')]=function(_0x4caf5f,_0x55e068,_0x4655b7){return db[_0xc53e('0x29')][_0xc53e('0x58')]({'raw':![],'where':{'CampaignId':_0x4caf5f[_0xc53e('0x40')]['id']},'attributes':[[db[_0xc53e('0x4a')]['fn'](_0xc53e('0x49'),db[_0xc53e('0x4a')]['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x4c')))),_0xc53e('0x59')],[db[_0xc53e('0x4a')]['fn'](_0xc53e('0x49'),db['sequelize']['fn']('IF',db[_0xc53e('0x4a')]['literal'](_0xc53e('0x5a')))),_0xc53e('0x4d')],[db[_0xc53e('0x4a')]['fn'](_0xc53e('0x49'),db[_0xc53e('0x4a')]['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x4e')))),'busyContacts'],[db['sequelize']['fn']('COUNT',db[_0xc53e('0x4a')]['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x50')))),_0xc53e('0x51')],[db[_0xc53e('0x4a')]['fn'](_0xc53e('0x49'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xc53e('0x52')))),_0xc53e('0x5b')],[db['sequelize']['fn'](_0xc53e('0x49'),db[_0xc53e('0x4a')]['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x53')))),_0xc53e('0x54')],[db['sequelize']['fn']('COUNT',db[_0xc53e('0x4a')]['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x55')))),_0xc53e('0x5c')],[db[_0xc53e('0x4a')]['fn']('COUNT',db[_0xc53e('0x4a')]['fn']('IF',db[_0xc53e('0x4a')][_0xc53e('0x4b')](_0xc53e('0x5d')))),'answeringMachine']]})[_0xc53e('0x24')](handleEntityNotFound(_0x55e068,null))[_0xc53e('0x24')](respondWithResult(_0x55e068,null))[_0xc53e('0x43')](handleError(_0x55e068,null));};exports[_0xc53e('0x5e')]=function(_0x32f954,_0x2d9803,_0x51638a){return db[_0xc53e('0x5f')][_0xc53e('0x42')]({'where':{'id':_0x32f954[_0xc53e('0x40')]['id']}})[_0xc53e('0x24')](handleEntityNotFound(_0x2d9803,null))['then'](function(_0x5e1f4a){var _0x57edb;if(_0x5e1f4a){_0x57edb=squel[_0xc53e('0x60')]()[_0xc53e('0x61')](_0xc53e('0x62'))['fromQuery']([_0xc53e('0x63'),'scheduledAt',_0xc53e('0x64'),'ListId',_0xc53e('0x65'),'createdAt',_0xc53e('0x66')],squel[_0xc53e('0x67')]()['field'](_0xc53e('0x68'),_0xc53e('0x63'))['field']('NOW()',_0xc53e('0x69'))[_0xc53e('0x6a')]('ANY_VALUE(ContactId)','ContactId')[_0xc53e('0x6a')]('ANY_VALUE(ListId)',_0xc53e('0x6b'))['field'](_0xc53e('0x6c'),_0xc53e('0x65'))[_0xc53e('0x6a')](_0xc53e('0x6d'),_0xc53e('0x6e'))[_0xc53e('0x6a')](_0xc53e('0x6d'),_0xc53e('0x66'))[_0xc53e('0x6f')](_0xc53e('0x70'))['where'](_0xc53e('0x71'),_0x32f954['params']['id'][_0xc53e('0x72')]())[_0xc53e('0x39')](_0xc53e('0x73'),_0x32f954[_0xc53e('0x46')][_0xc53e('0x74')][_0xc53e('0x72')]())[_0xc53e('0x39')](_0xc53e('0x75'))[_0xc53e('0x39')](_0xc53e('0x76'),squel['select']()[_0xc53e('0x6a')]('phone')[_0xc53e('0x6f')](_0xc53e('0x62'))[_0xc53e('0x39')]('VoiceQueueId\x20=\x20?',_0x32f954[_0xc53e('0x40')]['id'][_0xc53e('0x72')]()))[_0xc53e('0x39')](_0xc53e('0x76'),squel[_0xc53e('0x67')]()['field'](_0xc53e('0x77'))[_0xc53e('0x6f')]('cm_hopper_final')[_0xc53e('0x39')](_0xc53e('0x71'),_0x32f954[_0xc53e('0x40')]['id']['toString']())[_0xc53e('0x39')](_0xc53e('0x78')))['group'](_0xc53e('0x64')))[_0xc53e('0x72')]();return db['sequelize']['query'](_0x57edb);}return[];})[_0xc53e('0x24')](respondWithResult(_0x2d9803,null))['catch'](handleError(_0x2d9803,null));};exports[_0xc53e('0x79')]=function(_0x3d2636,_0x263d97,_0x58684c){return db[_0xc53e('0x7a')][_0xc53e('0x42')]({'where':{'id':_0x3d2636[_0xc53e('0x40')]['id']}})['then'](handleEntityNotFound(_0x263d97,null))[_0xc53e('0x24')](function(_0x2e048a){var _0x1c24e6;if(_0x2e048a){_0x1c24e6=squel[_0xc53e('0x60')]()[_0xc53e('0x61')]('cm_hopper')[_0xc53e('0x7b')]([_0xc53e('0x63'),_0xc53e('0x69'),_0xc53e('0x64'),_0xc53e('0x6b'),_0xc53e('0x7c'),_0xc53e('0x6e'),_0xc53e('0x66')],squel[_0xc53e('0x67')]()['field'](_0xc53e('0x68'),_0xc53e('0x63'))[_0xc53e('0x6a')](_0xc53e('0x6d'),_0xc53e('0x69'))[_0xc53e('0x6a')](_0xc53e('0x7d'),_0xc53e('0x64'))[_0xc53e('0x6a')]('ANY_VALUE(ListId)',_0xc53e('0x6b'))[_0xc53e('0x6a')](_0xc53e('0x7e'),_0xc53e('0x7c'))['field'](_0xc53e('0x6d'),_0xc53e('0x6e'))[_0xc53e('0x6a')](_0xc53e('0x6d'),'updatedAt')[_0xc53e('0x6f')](_0xc53e('0x70'))[_0xc53e('0x39')](_0xc53e('0x7f'),_0x3d2636[_0xc53e('0x40')]['id'][_0xc53e('0x72')]())[_0xc53e('0x39')]('state\x20=\x20?',_0x3d2636[_0xc53e('0x46')]['state'][_0xc53e('0x72')]())[_0xc53e('0x39')](_0xc53e('0x75'))['where'](_0xc53e('0x76'),squel[_0xc53e('0x67')]()[_0xc53e('0x6a')]('phone')[_0xc53e('0x6f')](_0xc53e('0x62'))[_0xc53e('0x39')]('CampaignId\x20=\x20?',_0x3d2636[_0xc53e('0x40')]['id'][_0xc53e('0x72')]()))[_0xc53e('0x39')](_0xc53e('0x76'),squel[_0xc53e('0x67')]()['field']('calleridnum')['from'](_0xc53e('0x70'))[_0xc53e('0x39')](_0xc53e('0x7f'),_0x3d2636[_0xc53e('0x40')]['id']['toString']())[_0xc53e('0x39')]('state\x20=\x204'))[_0xc53e('0x80')](_0xc53e('0x64')))[_0xc53e('0x72')]();return db[_0xc53e('0x4a')]['query'](_0x1c24e6);}return[];})[_0xc53e('0x24')](respondWithResult(_0x263d97,null))[_0xc53e('0x43')](handleError(_0x263d97,null));};exports[_0xc53e('0x81')]=function(_0x352bc6,_0x67be18,_0x306343){return db[_0xc53e('0x82')][_0xc53e('0x83')]({'where':{'VoiceQueueId':_0x352bc6[_0xc53e('0x46')][_0xc53e('0x65')],'CampaignId':_0x352bc6[_0xc53e('0x46')][_0xc53e('0x7c')],'ContactId':_0x352bc6[_0xc53e('0x46')][_0xc53e('0x64')]}})[_0xc53e('0x24')](handleEntityNotFound(_0x67be18,null))[_0xc53e('0x24')](function(_0x3dc1be){if(_0x3dc1be){return _0x3dc1be;}return null;})[_0xc53e('0x24')](respondWithResult(_0x67be18,null))[_0xc53e('0x43')](handleError(_0x67be18,null));};
\ No newline at end of file
index 92e29f0..e550960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d26=['CmHopperFinal','calleridnum','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmHopperFinal.attributes','exports','define'];(function(_0x103ac4,_0x137d0c){var _0x39d4c0=function(_0x40d749){while(--_0x40d749){_0x103ac4['push'](_0x103ac4['shift']());}};_0x39d4c0(++_0x137d0c);}(_0x0d26,0x189));var _0x60d2=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0x0d26[_0x29b609];return _0x54c952;};'use strict';var _=require(_0x60d2('0x0'));var util=require(_0x60d2('0x1'));var logger=require(_0x60d2('0x2'))(_0x60d2('0x3'));var moment=require(_0x60d2('0x4'));var BPromise=require(_0x60d2('0x5'));var rp=require(_0x60d2('0x6'));var fs=require('fs');var path=require(_0x60d2('0x7'));var rimraf=require(_0x60d2('0x8'));var config=require('../../config/environment');var attributes=require(_0x60d2('0x9'));module[_0x60d2('0xa')]=function(_0x48df35,_0x32d78a){return _0x48df35[_0x60d2('0xb')](_0x60d2('0xc'),attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':_0x60d2('0xd'),'fields':[_0x60d2('0xd')]},{'name':_0x60d2('0xe'),'fields':[_0x60d2('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6f58=['calleridnum','uniqueid','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','CmHopperFinal','cm_hopper_final'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x6f58,0x147));var _0x86f5=function(_0x32c757,_0x3f3b5f){_0x32c757=_0x32c757-0x0;var _0x21bcb4=_0x6f58[_0x32c757];return _0x21bcb4;};'use strict';var _=require('lodash');var util=require(_0x86f5('0x0'));var logger=require('../../config/logger')(_0x86f5('0x1'));var moment=require(_0x86f5('0x2'));var BPromise=require(_0x86f5('0x3'));var rp=require(_0x86f5('0x4'));var fs=require('fs');var path=require(_0x86f5('0x5'));var rimraf=require(_0x86f5('0x6'));var config=require(_0x86f5('0x7'));var attributes=require(_0x86f5('0x8'));module['exports']=function(_0x4ad756,_0x6b17ad){return _0x4ad756['define'](_0x86f5('0x9'),attributes,{'tableName':_0x86f5('0xa'),'paranoid':![],'indexes':[{'name':_0x86f5('0xb'),'fields':[_0x86f5('0xb')]},{'name':'uniqueid','fields':[_0x86f5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 57cb703..6244355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x590d33,_0x2595bf){var _0x49afa3=function(_0x23cd41){while(--_0x23cd41){_0x590d33['push'](_0x590d33['shift']());}};_0x49afa3(++_0x2595bf);}(_0xb10b,0x12a));var _0xbb10=function(_0xcafb2b,_0x2cc85e){_0xcafb2b=_0xcafb2b-0x0;var _0x539f9a=_0xb10b[_0xcafb2b];return _0x539f9a;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _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(_0xaf1ad,_0x24cbb9){var _0x1cc676=function(_0x2b6170){while(--_0x2b6170){_0xaf1ad['push'](_0xaf1ad['shift']());}};_0x1cc676(++_0x24cbb9);}(_0x7a54,0x106));var _0x47a5=function(_0x42c12f,_0x34cec4){_0x42c12f=_0x42c12f-0x0;var _0x5ed1f5=_0x7a54[_0x42c12f];return _0x5ed1f5;};'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
index 1b44ca8..ec10777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9916=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./cmHopperFinal.controller','isAuthenticated','index','get','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','exports','multer','util','path'];(function(_0x427975,_0x3c85cb){var _0x1a5d52=function(_0xc3e7aa){while(--_0xc3e7aa){_0x427975['push'](_0x427975['shift']());}};_0x1a5d52(++_0x3c85cb);}(_0x9916,0x15c));var _0x6991=function(_0x4f3350,_0x283df4){_0x4f3350=_0x4f3350-0x0;var _0x4946b7=_0x9916[_0x4f3350];return _0x4946b7;};'use strict';var multer=require(_0x6991('0x0'));var util=require(_0x6991('0x1'));var path=require(_0x6991('0x2'));var timeout=require(_0x6991('0x3'));var express=require(_0x6991('0x4'));var router=express[_0x6991('0x5')]();var fs_extra=require(_0x6991('0x6'));var auth=require(_0x6991('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6991('0x8'));router['get']('/',auth[_0x6991('0x9')](),controller[_0x6991('0xa')]);router[_0x6991('0xb')]('/describe',auth['isAuthenticated'](),controller[_0x6991('0xc')]);router[_0x6991('0xb')](_0x6991('0xd'),auth[_0x6991('0x9')](),controller[_0x6991('0xe')]);router[_0x6991('0xb')](_0x6991('0xf'),auth['isAuthenticated'](),controller['countContactsQueueCampaignHopperFinal']);router[_0x6991('0xb')](_0x6991('0x10'),auth['isAuthenticated'](),controller[_0x6991('0x11')]);router['post'](_0x6991('0x12'),auth['isAuthenticated'](),controller[_0x6991('0x13')]);router[_0x6991('0x14')](_0x6991('0x15'),auth[_0x6991('0x9')](),controller[_0x6991('0x16')]);router[_0x6991('0x14')](_0x6991('0x17'),auth[_0x6991('0x9')](),controller[_0x6991('0x18')]);router[_0x6991('0x19')](_0x6991('0xd'),auth[_0x6991('0x9')](),controller['update']);module[_0x6991('0x1a')]=router;
\ No newline at end of file
+var _0x9ce4=['get','isAuthenticated','index','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','post','/voice/queue/moveContacts/:id','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1a2b0f,_0x25d1b){var _0x4b6e20=function(_0x14d465){while(--_0x14d465){_0x1a2b0f['push'](_0x1a2b0f['shift']());}};_0x4b6e20(++_0x25d1b);}(_0x9ce4,0x1d2));var _0x49ce=function(_0x16b962,_0x1e8b75){_0x16b962=_0x16b962-0x0;var _0x5b8877=_0x9ce4[_0x16b962];return _0x5b8877;};'use strict';var multer=require('multer');var util=require(_0x49ce('0x0'));var path=require(_0x49ce('0x1'));var timeout=require(_0x49ce('0x2'));var express=require(_0x49ce('0x3'));var router=express[_0x49ce('0x4')]();var fs_extra=require(_0x49ce('0x5'));var auth=require(_0x49ce('0x6'));var interaction=require(_0x49ce('0x7'));var config=require(_0x49ce('0x8'));var controller=require('./cmHopperFinal.controller');router[_0x49ce('0x9')]('/',auth[_0x49ce('0xa')](),controller[_0x49ce('0xb')]);router[_0x49ce('0x9')]('/describe',auth[_0x49ce('0xa')](),controller[_0x49ce('0xc')]);router[_0x49ce('0x9')]('/:id',auth[_0x49ce('0xa')](),controller[_0x49ce('0xd')]);router[_0x49ce('0x9')](_0x49ce('0xe'),auth['isAuthenticated'](),controller[_0x49ce('0xf')]);router[_0x49ce('0x9')](_0x49ce('0x10'),auth['isAuthenticated'](),controller['countContactsIvrCampaignHopperFinal']);router[_0x49ce('0x11')](_0x49ce('0x12'),auth['isAuthenticated'](),controller['moveContactsQueueCampaignHopperFinal']);router[_0x49ce('0x11')](_0x49ce('0x13'),auth[_0x49ce('0xa')](),controller[_0x49ce('0x14')]);router['post'](_0x49ce('0x15'),auth[_0x49ce('0xa')](),controller['checkContactHopper']);router[_0x49ce('0x16')]('/:id',auth[_0x49ce('0xa')](),controller[_0x49ce('0x17')]);module[_0x49ce('0x18')]=router;
\ No newline at end of file
index bb4fe29..22a870a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa2=['BOOLEAN','sequelize','exports','INTEGER','STRING','DATE'];(function(_0xb700a8,_0x1d2a8e){var _0x2eaf55=function(_0x138ab7){while(--_0x138ab7){_0xb700a8['push'](_0xb700a8['shift']());}};_0x2eaf55(++_0x1d2a8e);}(_0x9fa2,0x67));var _0x29fa=function(_0x25c92b,_0x41b368){_0x25c92b=_0x25c92b-0x0;var _0xc59d85=_0x9fa2[_0x25c92b];return _0xc59d85;};'use strict';var Sequelize=require(_0x29fa('0x0'));module[_0x29fa('0x1')]={'state':{'type':Sequelize[_0x29fa('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x29fa('0x3')]},'scheduledat':{'type':Sequelize[_0x29fa('0x4')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x29fa('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x29fa('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x29fa('0x3')]},'calleridnum':{'type':Sequelize[_0x29fa('0x3')]},'calleridname':{'type':Sequelize[_0x29fa('0x3')]},'starttime':{'type':Sequelize[_0x29fa('0x4')]},'responsetime':{'type':Sequelize[_0x29fa('0x4')]},'answertime':{'type':Sequelize[_0x29fa('0x4')]},'droptime':{'type':Sequelize[_0x29fa('0x4')]},'endtime':{'type':Sequelize[_0x29fa('0x4')]},'ringtime':{'type':Sequelize[_0x29fa('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x29fa('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x29fa('0x3')]},'campaign':{'type':Sequelize[_0x29fa('0x3')]},'campaigntype':{'type':Sequelize[_0x29fa('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x29fa('0x3')]},'amd':{'type':Sequelize[_0x29fa('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x29fa('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x29fa('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x29fa('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x29fa('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x29fa('0x4')]},'edited':{'type':Sequelize[_0x29fa('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x29fa('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x29fa('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x29fa('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x29fa('0x3')]}};
\ No newline at end of file
+var _0xade6=['sequelize','exports','INTEGER','DATE','STRING','BOOLEAN'];(function(_0xf5926f,_0x58bc6e){var _0x43c169=function(_0x3d187c){while(--_0x3d187c){_0xf5926f['push'](_0xf5926f['shift']());}};_0x43c169(++_0x58bc6e);}(_0xade6,0x120));var _0x6ade=function(_0x3328b4,_0x403a24){_0x3328b4=_0x3328b4-0x0;var _0x530143=_0xade6[_0x3328b4];return _0x530143;};'use strict';var Sequelize=require(_0x6ade('0x0'));module[_0x6ade('0x1')]={'state':{'type':Sequelize[_0x6ade('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x6ade('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x6ade('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x6ade('0x4')]},'originatecalleridname':{'type':Sequelize[_0x6ade('0x4')]},'calleridnum':{'type':Sequelize[_0x6ade('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x6ade('0x3')]},'responsetime':{'type':Sequelize[_0x6ade('0x3')]},'answertime':{'type':Sequelize[_0x6ade('0x3')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x6ade('0x4')]},'membername':{'type':Sequelize[_0x6ade('0x4')]},'reason':{'type':Sequelize[_0x6ade('0x4')]},'amd':{'type':Sequelize[_0x6ade('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x6ade('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6ade('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x6ade('0x3')]},'edited':{'type':Sequelize[_0x6ade('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6ade('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x6ade('0x4')]}};
\ No newline at end of file
index cc3f6c0..aa11ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1407=['VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','describe','body','uniqueid','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','name','send','index','map','CmHopperHistory','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','filter','merge'];(function(_0x26eb3d,_0x2cfde2){var _0x4bd0c1=function(_0xb650cb){while(--_0xb650cb){_0x26eb3d['push'](_0x26eb3d['shift']());}};_0x4bd0c1(++_0x2cfde2);}(_0x1407,0x1b1));var _0x7140=function(_0x3b0972,_0x474fbf){_0x3b0972=_0x3b0972-0x0;var _0x5633de=_0x1407[_0x3b0972];return _0x5633de;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7140('0x0'));var jsonpatch=require(_0x7140('0x1'));var rp=require('request-promise');var moment=require(_0x7140('0x2'));var BPromise=require(_0x7140('0x3'));var Mustache=require(_0x7140('0x4'));var util=require('util');var path=require('path');var sox=require(_0x7140('0x5'));var csv=require(_0x7140('0x6'));var ejs=require(_0x7140('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7140('0x8'));var squel=require('squel');var crypto=require(_0x7140('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7140('0x6'));var querystring=require('querystring');var Papa=require(_0x7140('0xa'));var Redis=require(_0x7140('0xb'));var authService=require(_0x7140('0xc'));var qs=require(_0x7140('0xd'));var as=require(_0x7140('0xe'));var hardwareService=require(_0x7140('0xf'));var logger=require('../../config/logger')(_0x7140('0x10'));var utils=require('../../config/utils');var config=require(_0x7140('0x11'));var licenseUtil=require(_0x7140('0x12'));var db=require(_0x7140('0x13'))['db'];function respondWithStatusCode(_0x1cdf27,_0xf907fe){_0xf907fe=_0xf907fe||0xcc;return function(_0x4bd4c2){if(_0x4bd4c2){return _0x1cdf27[_0x7140('0x14')](_0xf907fe);}return _0x1cdf27[_0x7140('0x15')](_0xf907fe)[_0x7140('0x16')]();};}function respondWithResult(_0x52bd93,_0x4c193b){_0x4c193b=_0x4c193b||0xc8;return function(_0x23d90d){if(_0x23d90d){return _0x52bd93[_0x7140('0x15')](_0x4c193b)['json'](_0x23d90d);}};}function respondWithFilteredResult(_0x2229d0,_0x3ef639){return function(_0x37e8ee){if(_0x37e8ee){var _0x44ada3=typeof _0x3ef639['offset']===_0x7140('0x17')&&typeof _0x3ef639[_0x7140('0x18')]===_0x7140('0x17');var _0x27add0=_0x37e8ee['count'];var _0x46915e=_0x44ada3?0x0:_0x3ef639[_0x7140('0x19')];var _0x5b95c5=_0x44ada3?_0x37e8ee[_0x7140('0x1a')]:_0x3ef639[_0x7140('0x19')]+_0x3ef639[_0x7140('0x18')];var _0x9c195a;if(_0x5b95c5>=_0x27add0){_0x5b95c5=_0x27add0;_0x9c195a=0xc8;}else{_0x9c195a=0xce;}_0x2229d0[_0x7140('0x15')](_0x9c195a);return _0x2229d0[_0x7140('0x1b')](_0x7140('0x1c'),_0x46915e+'-'+_0x5b95c5+'/'+_0x27add0)[_0x7140('0x1d')](_0x37e8ee);}return null;};}function patchUpdates(_0x26f66c){return function(_0x4ebb6d){try{jsonpatch[_0x7140('0x1e')](_0x4ebb6d,_0x26f66c,!![]);}catch(_0x30e367){return BPromise[_0x7140('0x1f')](_0x30e367);}return _0x4ebb6d[_0x7140('0x20')]();};}function saveUpdates(_0x128874,_0xaec5e5){return function(_0xdda87b){if(_0xdda87b){return _0xdda87b[_0x7140('0x21')](_0x128874)[_0x7140('0x22')](function(_0x3af26c){return _0x3af26c;});}return null;};}function removeEntity(_0x3125e7,_0x20ca15){return function(_0x45e271){if(_0x45e271){return _0x45e271[_0x7140('0x23')]()['then'](function(){_0x3125e7[_0x7140('0x15')](0xcc)[_0x7140('0x16')]();});}};}function handleEntityNotFound(_0x2b0def,_0x395cf2){return function(_0xda3638){if(!_0xda3638){_0x2b0def['sendStatus'](0x194);}return _0xda3638;};}function handleError(_0x2df40c,_0x49ab89){_0x49ab89=_0x49ab89||0x1f4;return function(_0x419031){logger['error'](_0x419031['stack']);if(_0x419031['name']){delete _0x419031[_0x7140('0x24')];}_0x2df40c[_0x7140('0x15')](_0x49ab89)[_0x7140('0x25')](_0x419031);};}exports[_0x7140('0x26')]=function(_0x2fbdec,_0x507f28){var _0x56f3bd={},_0x3946a9={},_0x4fc697={'count':0x0,'rows':[]};var _0x4000f0=_[_0x7140('0x27')](db[_0x7140('0x28')]['rawAttributes'],function(_0x264023){return{'name':_0x264023[_0x7140('0x29')],'type':_0x264023[_0x7140('0x2a')][_0x7140('0x2b')]};});_0x3946a9[_0x7140('0x2c')]=_[_0x7140('0x27')](_0x4000f0,_0x7140('0x24'));_0x3946a9[_0x7140('0x2d')]=_[_0x7140('0x2e')](_0x2fbdec[_0x7140('0x2d')]);_0x3946a9[_0x7140('0x2f')]=_[_0x7140('0x30')](_0x3946a9[_0x7140('0x2c')],_0x3946a9[_0x7140('0x2d')]);_0x56f3bd['attributes']=_['intersection'](_0x3946a9[_0x7140('0x2c')],qs[_0x7140('0x31')](_0x2fbdec[_0x7140('0x2d')]['fields']));_0x56f3bd[_0x7140('0x32')]=_0x56f3bd[_0x7140('0x32')]['length']?_0x56f3bd[_0x7140('0x32')]:_0x3946a9['model'];if(!_0x2fbdec['query'][_0x7140('0x33')]('nolimit')){_0x56f3bd[_0x7140('0x18')]=qs[_0x7140('0x18')](_0x2fbdec[_0x7140('0x2d')]['limit']);_0x56f3bd['offset']=qs[_0x7140('0x19')](_0x2fbdec['query']['offset']);}_0x56f3bd[_0x7140('0x34')]=qs['sort'](_0x2fbdec[_0x7140('0x2d')][_0x7140('0x35')]);_0x56f3bd[_0x7140('0x36')]=qs[_0x7140('0x2f')](_['pick'](_0x2fbdec[_0x7140('0x2d')],_0x3946a9[_0x7140('0x2f')]),_0x4000f0);if(_0x2fbdec[_0x7140('0x2d')][_0x7140('0x37')]){_0x56f3bd[_0x7140('0x36')]=_[_0x7140('0x38')](_0x56f3bd[_0x7140('0x36')],{'$or':_[_0x7140('0x27')](_0x4000f0,function(_0x232720){if(_0x232720[_0x7140('0x2a')]!==_0x7140('0x39')){var _0x2c86b3={};_0x2c86b3[_0x232720[_0x7140('0x24')]]={'$like':'%'+_0x2fbdec[_0x7140('0x2d')][_0x7140('0x37')]+'%'};return _0x2c86b3;}})});}_0x56f3bd=_['merge']({},_0x56f3bd,_0x2fbdec[_0x7140('0x3a')]);var _0x262402={'where':_0x56f3bd[_0x7140('0x36')]};return db[_0x7140('0x28')]['count'](_0x262402)['then'](function(_0xf60c0a){_0x4fc697['count']=_0xf60c0a;if(_0x2fbdec[_0x7140('0x2d')][_0x7140('0x3b')]){_0x56f3bd[_0x7140('0x3c')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x7140('0x3d')](_0x56f3bd);})['then'](function(_0x25d426){_0x4fc697[_0x7140('0x3e')]=_0x25d426;return _0x4fc697;})[_0x7140('0x22')](respondWithFilteredResult(_0x507f28,_0x56f3bd))[_0x7140('0x3f')](handleError(_0x507f28,null));};exports['show']=function(_0x2c68c9,_0x59e10b){var _0x3b5cdc={'raw':!![],'where':{'id':_0x2c68c9[_0x7140('0x40')]['id']}},_0x3f5145={};_0x3f5145[_0x7140('0x2c')]=_['keys'](db['CmHopperHistory']['rawAttributes']);_0x3f5145['query']=_[_0x7140('0x2e')](_0x2c68c9[_0x7140('0x2d')]);_0x3f5145[_0x7140('0x2f')]=_[_0x7140('0x30')](_0x3f5145[_0x7140('0x2c')],_0x3f5145[_0x7140('0x2d')]);_0x3b5cdc['attributes']=_['intersection'](_0x3f5145[_0x7140('0x2c')],qs['fields'](_0x2c68c9[_0x7140('0x2d')][_0x7140('0x31')]));_0x3b5cdc['attributes']=_0x3b5cdc[_0x7140('0x32')]['length']?_0x3b5cdc[_0x7140('0x32')]:_0x3f5145['model'];if(_0x2c68c9[_0x7140('0x2d')][_0x7140('0x3b')]){_0x3b5cdc[_0x7140('0x3c')]=[{'all':!![]}];}_0x3b5cdc=_[_0x7140('0x38')]({},_0x3b5cdc,_0x2c68c9[_0x7140('0x3a')]);return db[_0x7140('0x28')][_0x7140('0x41')](_0x3b5cdc)['then'](handleEntityNotFound(_0x59e10b,null))[_0x7140('0x22')](respondWithResult(_0x59e10b,null))['catch'](handleError(_0x59e10b,null));};exports[_0x7140('0x42')]=function(_0x300f7e,_0x1754ea){return db['CmHopperHistory']['create'](_0x300f7e['body'],{})[_0x7140('0x22')](respondWithResult(_0x1754ea,0xc9))[_0x7140('0x3f')](handleError(_0x1754ea,null));};exports[_0x7140('0x43')]=function(_0x57e79a,_0x550585){return db['CmHopperHistory'][_0x7140('0x43')]()[_0x7140('0x22')](respondWithResult(_0x550585,null))[_0x7140('0x3f')](handleError(_0x550585,null));};exports[_0x7140('0x21')]=function(_0x593813,_0x2a3404){if(_0x593813[_0x7140('0x44')][_0x7140('0x45')]){delete _0x593813[_0x7140('0x44')][_0x7140('0x45')];}return db[_0x7140('0x28')]['find']({'where':{'uniqueid':_0x593813['params']['id']}})['then'](handleEntityNotFound(_0x2a3404,null))[_0x7140('0x22')](saveUpdates(_0x593813[_0x7140('0x44')],null))[_0x7140('0x22')](respondWithResult(_0x2a3404,null))['catch'](handleError(_0x2a3404,null));};
\ No newline at end of file
+var _0xcb52=['fieldName','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','rawAttributes','include','find','catch','create','body','describe','uniqueid','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../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','CmHopperHistory'];(function(_0x349367,_0x1cede2){var _0x14179b=function(_0x38a191){while(--_0x38a191){_0x349367['push'](_0x349367['shift']());}};_0x14179b(++_0x1cede2);}(_0xcb52,0xc2));var _0x2cb5=function(_0x3bbb0e,_0xf4cdf2){_0x3bbb0e=_0x3bbb0e-0x0;var _0x1558b3=_0xcb52[_0x3bbb0e];return _0x1558b3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2cb5('0x0'));var rp=require(_0x2cb5('0x1'));var moment=require(_0x2cb5('0x2'));var BPromise=require(_0x2cb5('0x3'));var Mustache=require(_0x2cb5('0x4'));var util=require(_0x2cb5('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x2cb5('0x6'));var ejs=require(_0x2cb5('0x7'));var fs=require('fs');var fs_extra=require(_0x2cb5('0x8'));var _=require(_0x2cb5('0x9'));var squel=require(_0x2cb5('0xa'));var crypto=require(_0x2cb5('0xb'));var jsforce=require(_0x2cb5('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x2cb5('0xd'));var Papa=require(_0x2cb5('0xe'));var Redis=require(_0x2cb5('0xf'));var authService=require(_0x2cb5('0x10'));var qs=require(_0x2cb5('0x11'));var as=require(_0x2cb5('0x12'));var hardwareService=require(_0x2cb5('0x13'));var logger=require(_0x2cb5('0x14'))(_0x2cb5('0x15'));var utils=require('../../config/utils');var config=require(_0x2cb5('0x16'));var licenseUtil=require(_0x2cb5('0x17'));var db=require(_0x2cb5('0x18'))['db'];function respondWithStatusCode(_0x1e5a03,_0x33c724){_0x33c724=_0x33c724||0xcc;return function(_0x5fbeb2){if(_0x5fbeb2){return _0x1e5a03[_0x2cb5('0x19')](_0x33c724);}return _0x1e5a03[_0x2cb5('0x1a')](_0x33c724)[_0x2cb5('0x1b')]();};}function respondWithResult(_0x4c1d7b,_0x2b1ea9){_0x2b1ea9=_0x2b1ea9||0xc8;return function(_0x116408){if(_0x116408){return _0x4c1d7b[_0x2cb5('0x1a')](_0x2b1ea9)[_0x2cb5('0x1c')](_0x116408);}};}function respondWithFilteredResult(_0xd6ab5c,_0x47ef7f){return function(_0x24995b){if(_0x24995b){var _0x51c1b2=typeof _0x47ef7f[_0x2cb5('0x1d')]==='undefined'&&typeof _0x47ef7f[_0x2cb5('0x1e')]===_0x2cb5('0x1f');var _0x321321=_0x24995b[_0x2cb5('0x20')];var _0xb60dbb=_0x51c1b2?0x0:_0x47ef7f[_0x2cb5('0x1d')];var _0x447fee=_0x51c1b2?_0x24995b[_0x2cb5('0x20')]:_0x47ef7f[_0x2cb5('0x1d')]+_0x47ef7f[_0x2cb5('0x1e')];var _0x338088;if(_0x447fee>=_0x321321){_0x447fee=_0x321321;_0x338088=0xc8;}else{_0x338088=0xce;}_0xd6ab5c[_0x2cb5('0x1a')](_0x338088);return _0xd6ab5c[_0x2cb5('0x21')](_0x2cb5('0x22'),_0xb60dbb+'-'+_0x447fee+'/'+_0x321321)[_0x2cb5('0x1c')](_0x24995b);}return null;};}function patchUpdates(_0x5c201e){return function(_0x4c12e5){try{jsonpatch[_0x2cb5('0x23')](_0x4c12e5,_0x5c201e,!![]);}catch(_0x404df4){return BPromise['reject'](_0x404df4);}return _0x4c12e5[_0x2cb5('0x24')]();};}function saveUpdates(_0x20b12c,_0x4bf9cd){return function(_0x45d57f){if(_0x45d57f){return _0x45d57f[_0x2cb5('0x25')](_0x20b12c)[_0x2cb5('0x26')](function(_0x4644ba){return _0x4644ba;});}return null;};}function removeEntity(_0x51bbfc,_0x371e9d){return function(_0x4457c1){if(_0x4457c1){return _0x4457c1[_0x2cb5('0x27')]()[_0x2cb5('0x26')](function(){_0x51bbfc['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x52111b,_0x4f3360){return function(_0x4217ad){if(!_0x4217ad){_0x52111b[_0x2cb5('0x19')](0x194);}return _0x4217ad;};}function handleError(_0x5670a5,_0x393b71){_0x393b71=_0x393b71||0x1f4;return function(_0x3b9f27){logger[_0x2cb5('0x28')](_0x3b9f27[_0x2cb5('0x29')]);if(_0x3b9f27[_0x2cb5('0x2a')]){delete _0x3b9f27[_0x2cb5('0x2a')];}_0x5670a5['status'](_0x393b71)[_0x2cb5('0x2b')](_0x3b9f27);};}exports[_0x2cb5('0x2c')]=function(_0x2a7730,_0x7b88e9){var _0x5f30a2={},_0x5a8628={},_0x275970={'count':0x0,'rows':[]};var _0x12aaa5=_['map'](db[_0x2cb5('0x2d')]['rawAttributes'],function(_0x33e8ce){return{'name':_0x33e8ce[_0x2cb5('0x2e')],'type':_0x33e8ce[_0x2cb5('0x2f')][_0x2cb5('0x30')]};});_0x5a8628['model']=_['map'](_0x12aaa5,'name');_0x5a8628[_0x2cb5('0x31')]=_['keys'](_0x2a7730[_0x2cb5('0x31')]);_0x5a8628[_0x2cb5('0x32')]=_[_0x2cb5('0x33')](_0x5a8628['model'],_0x5a8628['query']);_0x5f30a2['attributes']=_['intersection'](_0x5a8628[_0x2cb5('0x34')],qs[_0x2cb5('0x35')](_0x2a7730[_0x2cb5('0x31')][_0x2cb5('0x35')]));_0x5f30a2['attributes']=_0x5f30a2[_0x2cb5('0x36')][_0x2cb5('0x37')]?_0x5f30a2[_0x2cb5('0x36')]:_0x5a8628[_0x2cb5('0x34')];if(!_0x2a7730[_0x2cb5('0x31')][_0x2cb5('0x38')](_0x2cb5('0x39'))){_0x5f30a2[_0x2cb5('0x1e')]=qs['limit'](_0x2a7730[_0x2cb5('0x31')][_0x2cb5('0x1e')]);_0x5f30a2[_0x2cb5('0x1d')]=qs[_0x2cb5('0x1d')](_0x2a7730[_0x2cb5('0x31')][_0x2cb5('0x1d')]);}_0x5f30a2[_0x2cb5('0x3a')]=qs[_0x2cb5('0x3b')](_0x2a7730[_0x2cb5('0x31')][_0x2cb5('0x3b')]);_0x5f30a2[_0x2cb5('0x3c')]=qs[_0x2cb5('0x32')](_[_0x2cb5('0x3d')](_0x2a7730['query'],_0x5a8628[_0x2cb5('0x32')]),_0x12aaa5);if(_0x2a7730[_0x2cb5('0x31')][_0x2cb5('0x3e')]){_0x5f30a2[_0x2cb5('0x3c')]=_[_0x2cb5('0x3f')](_0x5f30a2[_0x2cb5('0x3c')],{'$or':_['map'](_0x12aaa5,function(_0xabae51){if(_0xabae51[_0x2cb5('0x2f')]!==_0x2cb5('0x40')){var _0x176736={};_0x176736[_0xabae51[_0x2cb5('0x2a')]]={'$like':'%'+_0x2a7730[_0x2cb5('0x31')]['filter']+'%'};return _0x176736;}})});}_0x5f30a2=_[_0x2cb5('0x3f')]({},_0x5f30a2,_0x2a7730[_0x2cb5('0x41')]);var _0x1e26fb={'where':_0x5f30a2[_0x2cb5('0x3c')]};return db[_0x2cb5('0x2d')][_0x2cb5('0x20')](_0x1e26fb)['then'](function(_0x408ecc){_0x275970[_0x2cb5('0x20')]=_0x408ecc;if(_0x2a7730['query'][_0x2cb5('0x42')]){_0x5f30a2['include']=[{'all':!![]}];}return db[_0x2cb5('0x2d')][_0x2cb5('0x43')](_0x5f30a2);})[_0x2cb5('0x26')](function(_0x5d1cb1){_0x275970[_0x2cb5('0x44')]=_0x5d1cb1;return _0x275970;})[_0x2cb5('0x26')](respondWithFilteredResult(_0x7b88e9,_0x5f30a2))['catch'](handleError(_0x7b88e9,null));};exports[_0x2cb5('0x45')]=function(_0x1a91c3,_0x282377){var _0x535c5f={'raw':!![],'where':{'id':_0x1a91c3[_0x2cb5('0x46')]['id']}},_0x1be360={};_0x1be360[_0x2cb5('0x34')]=_[_0x2cb5('0x47')](db['CmHopperHistory'][_0x2cb5('0x48')]);_0x1be360[_0x2cb5('0x31')]=_[_0x2cb5('0x47')](_0x1a91c3[_0x2cb5('0x31')]);_0x1be360[_0x2cb5('0x32')]=_[_0x2cb5('0x33')](_0x1be360[_0x2cb5('0x34')],_0x1be360[_0x2cb5('0x31')]);_0x535c5f['attributes']=_[_0x2cb5('0x33')](_0x1be360['model'],qs[_0x2cb5('0x35')](_0x1a91c3[_0x2cb5('0x31')][_0x2cb5('0x35')]));_0x535c5f[_0x2cb5('0x36')]=_0x535c5f[_0x2cb5('0x36')][_0x2cb5('0x37')]?_0x535c5f['attributes']:_0x1be360['model'];if(_0x1a91c3[_0x2cb5('0x31')][_0x2cb5('0x42')]){_0x535c5f[_0x2cb5('0x49')]=[{'all':!![]}];}_0x535c5f=_[_0x2cb5('0x3f')]({},_0x535c5f,_0x1a91c3[_0x2cb5('0x41')]);return db[_0x2cb5('0x2d')][_0x2cb5('0x4a')](_0x535c5f)['then'](handleEntityNotFound(_0x282377,null))[_0x2cb5('0x26')](respondWithResult(_0x282377,null))[_0x2cb5('0x4b')](handleError(_0x282377,null));};exports[_0x2cb5('0x4c')]=function(_0x4cbace,_0x40f8af){return db['CmHopperHistory'][_0x2cb5('0x4c')](_0x4cbace[_0x2cb5('0x4d')],{})[_0x2cb5('0x26')](respondWithResult(_0x40f8af,0xc9))['catch'](handleError(_0x40f8af,null));};exports['describe']=function(_0x1057ed,_0x4a3079){return db['CmHopperHistory'][_0x2cb5('0x4e')]()[_0x2cb5('0x26')](respondWithResult(_0x4a3079,null))['catch'](handleError(_0x4a3079,null));};exports['update']=function(_0x58af3c,_0x10c8f2){if(_0x58af3c[_0x2cb5('0x4d')][_0x2cb5('0x4f')]){delete _0x58af3c[_0x2cb5('0x4d')]['uniqueid'];}return db[_0x2cb5('0x2d')][_0x2cb5('0x4a')]({'where':{'uniqueid':_0x58af3c['params']['id']}})['then'](handleEntityNotFound(_0x10c8f2,null))[_0x2cb5('0x26')](saveUpdates(_0x58af3c[_0x2cb5('0x4d')],null))[_0x2cb5('0x26')](respondWithResult(_0x10c8f2,null))[_0x2cb5('0x4b')](handleError(_0x10c8f2,null));};
\ No newline at end of file
index e4ada13..49f3139 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b2=['uniqueid','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','CmHopperHistory','cm_hopper_history','endtime'];(function(_0x482118,_0x58bebe){var _0x4dedca=function(_0x4ab747){while(--_0x4ab747){_0x482118['push'](_0x482118['shift']());}};_0x4dedca(++_0x58bebe);}(_0x14b2,0x1a1));var _0x214b=function(_0x5aa678,_0xa8230f){_0x5aa678=_0x5aa678-0x0;var _0x575204=_0x14b2[_0x5aa678];return _0x575204;};'use strict';var _=require(_0x214b('0x0'));var util=require(_0x214b('0x1'));var logger=require('../../config/logger')(_0x214b('0x2'));var moment=require(_0x214b('0x3'));var BPromise=require(_0x214b('0x4'));var rp=require(_0x214b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x214b('0x6'));var config=require(_0x214b('0x7'));var attributes=require('./cmHopperHistory.attributes');module['exports']=function(_0x16cce0,_0x264d5e){return _0x16cce0[_0x214b('0x8')](_0x214b('0x9'),attributes,{'tableName':_0x214b('0xa'),'paranoid':![],'indexes':[{'name':_0x214b('0xb'),'fields':['endtime']},{'name':_0x214b('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a9a=['rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','cm_hopper_history','endtime','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x332e21,_0x2bf254){var _0x5aae4e=function(_0x529e90){while(--_0x529e90){_0x332e21['push'](_0x332e21['shift']());}};_0x5aae4e(++_0x2bf254);}(_0x8a9a,0x17f));var _0xa8a9=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x8a9a[_0x273c39];return _0x46d6b5;};'use strict';var _=require('lodash');var util=require(_0xa8a9('0x0'));var logger=require(_0xa8a9('0x1'))(_0xa8a9('0x2'));var moment=require(_0xa8a9('0x3'));var BPromise=require(_0xa8a9('0x4'));var rp=require(_0xa8a9('0x5'));var fs=require('fs');var path=require(_0xa8a9('0x6'));var rimraf=require(_0xa8a9('0x7'));var config=require(_0xa8a9('0x8'));var attributes=require(_0xa8a9('0x9'));module[_0xa8a9('0xa')]=function(_0x1de1c6,_0x4ac303){return _0x1de1c6[_0xa8a9('0xb')]('CmHopperHistory',attributes,{'tableName':_0xa8a9('0xc'),'paranoid':![],'indexes':[{'name':_0xa8a9('0xd'),'fields':[_0xa8a9('0xd')]},{'name':_0xa8a9('0xe'),'fields':[_0xa8a9('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 47718b9..8b45735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf09=['CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CmHopperHistory','body','options','raw','CreateCmHopperHistory','stringify','AvgHandleTime','findAll','where','COUNT','sequelize','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','literal','`state`\x20=\x2011,\x201,\x20null','AVG','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','GetVoiceQueueHopperHistory','campaign','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','name','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info'];(function(_0x1d7a04,_0x28687c){var _0x588a40=function(_0x1c90e2){while(--_0x1c90e2){_0x1d7a04['push'](_0x1d7a04['shift']());}};_0x588a40(++_0x28687c);}(_0xaf09,0x10d));var _0x9af0=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xaf09[_0x47e7cb];return _0x2a8874;};'use strict';var _=require(_0x9af0('0x0'));var util=require(_0x9af0('0x1'));var moment=require(_0x9af0('0x2'));var BPromise=require(_0x9af0('0x3'));var rs=require(_0x9af0('0x4'));var fs=require('fs');var Redis=require(_0x9af0('0x5'));var db=require(_0x9af0('0x6'))['db'];var utils=require(_0x9af0('0x7'));var logger=require(_0x9af0('0x8'))('rpc');var config=require(_0x9af0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9af0('0xa')][_0x9af0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52162e,_0xf7e92,_0x556d1a){return new BPromise(function(_0x51663a,_0xad63de){return client[_0x9af0('0xc')](_0x52162e,_0x556d1a)[_0x9af0('0xd')](function(_0x220f3c){logger[_0x9af0('0xe')](_0x9af0('0xf'),_0xf7e92,_0x9af0('0x10'));logger[_0x9af0('0x11')](_0x9af0('0x12'),_0xf7e92,_0x9af0('0x10'),JSON['stringify'](_0x220f3c));if(_0x220f3c['error']){if(_0x220f3c[_0x9af0('0x13')][_0x9af0('0x14')]===0x1f4){logger[_0x9af0('0x13')]('CmHopperHistory,\x20%s,\x20%s',_0xf7e92,_0x220f3c[_0x9af0('0x13')][_0x9af0('0x15')]);return _0xad63de(_0x220f3c[_0x9af0('0x13')]['message']);}logger['error'](_0x9af0('0xf'),_0xf7e92,_0x220f3c[_0x9af0('0x13')][_0x9af0('0x15')]);return _0x51663a(_0x220f3c['error'][_0x9af0('0x15')]);}else{logger[_0x9af0('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0xf7e92,'request\x20sent');_0x51663a(_0x220f3c[_0x9af0('0x16')][_0x9af0('0x15')]);}})[_0x9af0('0x17')](function(_0x40ad66){logger[_0x9af0('0x13')]('CmHopperHistory,\x20%s,\x20%s',_0xf7e92,_0x40ad66);_0xad63de(_0x40ad66);});});}exports['CreateCmHopperHistory']=function(_0xc053e2){var _0x331250=this;return new Promise(function(_0x3184b4,_0x51eae3){return db[_0x9af0('0x18')]['create'](_0xc053e2[_0x9af0('0x19')],{'raw':_0xc053e2[_0x9af0('0x1a')]?_0xc053e2['options'][_0x9af0('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x203ee9){logger[_0x9af0('0xe')](_0x9af0('0x1c'),_0xc053e2);logger[_0x9af0('0x11')](_0x9af0('0x1c'),_0xc053e2,JSON[_0x9af0('0x1d')](_0x203ee9));_0x3184b4(_0x203ee9);})[_0x9af0('0x17')](function(_0x2ddc91){logger[_0x9af0('0x13')](_0x9af0('0x1c'),_0x2ddc91[_0x9af0('0x15')],_0xc053e2);_0x51eae3(_0x331250[_0x9af0('0x13')](0x1f4,_0x2ddc91[_0x9af0('0x15')]));});});};exports[_0x9af0('0x1e')]=function(_0x445a35){var _0x317926=this;return new Promise(function(_0x23fa36,_0x14d6e4){return db[_0x9af0('0x18')][_0x9af0('0x1f')]({'raw':_0x445a35[_0x9af0('0x1a')]?_0x445a35[_0x9af0('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x445a35['options']?_0x445a35[_0x9af0('0x1a')][_0x9af0('0x20')]||null:null,'attributes':[[db['sequelize']['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')][_0x9af0('0x23')]('id')),_0x9af0('0x24')],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')]['fn']('IF',db[_0x9af0('0x22')]['literal'](_0x9af0('0x25')))),_0x9af0('0x26')],[db[_0x9af0('0x22')]['fn']('COUNT',db[_0x9af0('0x22')]['fn']('IF',db[_0x9af0('0x22')]['literal'](_0x9af0('0x27')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db['sequelize']['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')](_0x9af0('0x29')))),'predictiveIntervalDroppedCallsCallersExit'],[db['sequelize']['fn'](_0x9af0('0x2a'),db['sequelize']['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0x9af0('0x2b')],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x2a'),db['sequelize']['fn']('IF',db[_0x9af0('0x22')]['literal'](_0x9af0('0x2c')))),'predictiveIntervalAvgTalktime']]})[_0x9af0('0xd')](function(_0x3f6f2){logger[_0x9af0('0xe')](_0x9af0('0x1e'),_0x445a35);logger[_0x9af0('0x11')](_0x9af0('0x1e'),_0x445a35,JSON[_0x9af0('0x1d')](_0x3f6f2));_0x23fa36(_0x3f6f2);})[_0x9af0('0x17')](function(_0x20652d){logger[_0x9af0('0x13')](_0x9af0('0x1e'),_0x20652d[_0x9af0('0x15')],_0x445a35);_0x14d6e4(_0x317926['error'](0x1f4,_0x20652d[_0x9af0('0x15')]));});});};exports[_0x9af0('0x2d')]=function(_0x2e9d53){var _0x230484=this;return new Promise(function(_0x24e00e,_0x4be374){return db[_0x9af0('0x18')][_0x9af0('0x1f')]({'raw':_0x2e9d53[_0x9af0('0x1a')]?_0x2e9d53[_0x9af0('0x1a')][_0x9af0('0x1b')]===undefined?!![]:![]:!![],'where':_0x2e9d53[_0x9af0('0x1a')]?_0x2e9d53[_0x9af0('0x1a')][_0x9af0('0x20')]||null:null,'attributes':[[_0x9af0('0x2e'),'name'],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')]['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')](_0x9af0('0x2f')))),_0x9af0('0x30')],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db['sequelize']['fn']('IF',db[_0x9af0('0x22')]['literal'](_0x9af0('0x31')))),'outboundNoAnswerCallsDay'],[db['sequelize']['fn'](_0x9af0('0x21'),db['sequelize']['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')](_0x9af0('0x25')))),'outboundAnswerCallsDay'],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x9af0('0x28')](_0x9af0('0x32')))),_0x9af0('0x33')],[db['sequelize']['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')]['fn']('IF',db['sequelize'][_0x9af0('0x28')](_0x9af0('0x34')))),'outboundCongestionCallsDay'],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')]['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')](_0x9af0('0x35')))),_0x9af0('0x36')],[db[_0x9af0('0x22')]['fn']('COUNT',db[_0x9af0('0x22')]['fn']('IF',db['sequelize'][_0x9af0('0x28')](_0x9af0('0x37')))),_0x9af0('0x38')],[db['sequelize']['fn'](_0x9af0('0x21'),db['sequelize']['fn']('IF',db[_0x9af0('0x22')]['literal']('`state`\x20=\x2012,\x201,\x20null'))),_0x9af0('0x39')],[db['sequelize']['fn'](_0x9af0('0x21'),db['sequelize']['fn']('IF',db[_0x9af0('0x22')]['literal'](_0x9af0('0x3a')))),_0x9af0('0x3b')],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db['sequelize']['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')](_0x9af0('0x3c')))),_0x9af0('0x3d')],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')]['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')](_0x9af0('0x3e')))),_0x9af0('0x3f')],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')]['fn']('IF',db[_0x9af0('0x22')]['literal'](_0x9af0('0x40')))),_0x9af0('0x41')],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')]['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')](_0x9af0('0x42')))),_0x9af0('0x3f')],[db[_0x9af0('0x22')]['fn'](_0x9af0('0x21'),db[_0x9af0('0x22')]['fn']('IF',db['sequelize'][_0x9af0('0x28')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0x9af0('0x43')]],'group':[_0x9af0('0x2e')]})[_0x9af0('0xd')](function(_0x2d9c8f){logger[_0x9af0('0xe')](_0x9af0('0x2d'),_0x2e9d53);logger[_0x9af0('0x11')](_0x9af0('0x2d'),_0x2e9d53,JSON[_0x9af0('0x1d')](_0x2d9c8f));_0x24e00e(_0x2d9c8f);})[_0x9af0('0x17')](function(_0x52538a){logger[_0x9af0('0x13')](_0x9af0('0x2d'),_0x52538a[_0x9af0('0x15')],_0x2e9d53);_0x4be374(_0x230484['error'](0x1f4,_0x52538a[_0x9af0('0x15')]));});});};exports[_0x9af0('0x44')]=function(_0x57487a){var _0x1e2e22=this;return new Promise(function(_0x1b81cf,_0x606431){return db[_0x9af0('0x18')][_0x9af0('0x1f')]({'raw':_0x57487a['options']?_0x57487a[_0x9af0('0x1a')][_0x9af0('0x1b')]===undefined?!![]:![]:!![],'where':_0x57487a[_0x9af0('0x1a')]?_0x57487a[_0x9af0('0x1a')]['where']||null:null,'attributes':[['campaign',_0x9af0('0x45')],[db['sequelize']['fn']('COUNT',db['sequelize'][_0x9af0('0x23')]('id')),'ivrTotalCallsDays'],[db[_0x9af0('0x22')]['fn']('COUNT',db[_0x9af0('0x22')]['fn']('IF',db[_0x9af0('0x22')][_0x9af0('0x28')]('`state`\x20=\x204,\x201,\x20null'))),_0x9af0('0x46')]],'group':[_0x9af0('0x2e')]})[_0x9af0('0xd')](function(_0x5cace1){logger[_0x9af0('0xe')](_0x9af0('0x44'),_0x57487a);logger['debug'](_0x9af0('0x44'),_0x57487a,JSON[_0x9af0('0x1d')](_0x5cace1));_0x1b81cf(_0x5cace1);})[_0x9af0('0x17')](function(_0x20b816){logger[_0x9af0('0x13')](_0x9af0('0x44'),_0x20b816[_0x9af0('0x15')],_0x57487a);_0x606431(_0x1e2e22[_0x9af0('0x13')](0x1f4,_0x20b816['message']));});});};
\ No newline at end of file
+var _0xa79e=['predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','then','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','create','body','options','raw','CreateCmHopperHistory','CmHopperHistory','findAll','where','sequelize','col','predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`talktime`,\x20null'];(function(_0x1e516e,_0x2fe049){var _0x5b6fdc=function(_0x2645c5){while(--_0x2645c5){_0x1e516e['push'](_0x1e516e['shift']());}};_0x5b6fdc(++_0x2fe049);}(_0xa79e,0xf7));var _0xea79=function(_0x202c61,_0x3673e0){_0x202c61=_0x202c61-0x0;var _0x540691=_0xa79e[_0x202c61];return _0x540691;};'use strict';var _=require(_0xea79('0x0'));var util=require('util');var moment=require(_0xea79('0x1'));var BPromise=require(_0xea79('0x2'));var rs=require(_0xea79('0x3'));var fs=require('fs');var Redis=require(_0xea79('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xea79('0x5'))(_0xea79('0x6'));var config=require('../../config/environment');var jayson=require(_0xea79('0x7'));var client=jayson[_0xea79('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b0770,_0xa2a312,_0x448c7e){return new BPromise(function(_0x59ab11,_0x498460){return client['request'](_0x1b0770,_0x448c7e)[_0xea79('0x9')](function(_0x38fc39){logger['info'](_0xea79('0xa'),_0xa2a312,_0xea79('0xb'));logger[_0xea79('0xc')](_0xea79('0xd'),_0xa2a312,'request\x20sent',JSON[_0xea79('0xe')](_0x38fc39));if(_0x38fc39[_0xea79('0xf')]){if(_0x38fc39[_0xea79('0xf')][_0xea79('0x10')]===0x1f4){logger['error'](_0xea79('0xa'),_0xa2a312,_0x38fc39['error'][_0xea79('0x11')]);return _0x498460(_0x38fc39[_0xea79('0xf')][_0xea79('0x11')]);}logger['error'](_0xea79('0xa'),_0xa2a312,_0x38fc39[_0xea79('0xf')]['message']);return _0x59ab11(_0x38fc39[_0xea79('0xf')][_0xea79('0x11')]);}else{logger[_0xea79('0x12')](_0xea79('0xa'),_0xa2a312,'request\x20sent');_0x59ab11(_0x38fc39[_0xea79('0x13')][_0xea79('0x11')]);}})[_0xea79('0x14')](function(_0x265088){logger[_0xea79('0xf')](_0xea79('0xa'),_0xa2a312,_0x265088);_0x498460(_0x265088);});});}exports['CreateCmHopperHistory']=function(_0x1938c7){var _0x455434=this;return new Promise(function(_0xb5cfd2,_0x4d6f48){return db['CmHopperHistory'][_0xea79('0x15')](_0x1938c7[_0xea79('0x16')],{'raw':_0x1938c7[_0xea79('0x17')]?_0x1938c7[_0xea79('0x17')][_0xea79('0x18')]===undefined?!![]:![]:!![]})[_0xea79('0x9')](function(_0x2fa5bb){logger['info'](_0xea79('0x19'),_0x1938c7);logger['debug'](_0xea79('0x19'),_0x1938c7,JSON['stringify'](_0x2fa5bb));_0xb5cfd2(_0x2fa5bb);})['catch'](function(_0x2dac7f){logger['error'](_0xea79('0x19'),_0x2dac7f[_0xea79('0x11')],_0x1938c7);_0x4d6f48(_0x455434[_0xea79('0xf')](0x1f4,_0x2dac7f[_0xea79('0x11')]));});});};exports['AvgHandleTime']=function(_0x45adee){var _0x4065e7=this;return new Promise(function(_0x682b9f,_0x271a73){return db[_0xea79('0x1a')][_0xea79('0x1b')]({'raw':_0x45adee['options']?_0x45adee['options'][_0xea79('0x18')]===undefined?!![]:![]:!![],'where':_0x45adee['options']?_0x45adee[_0xea79('0x17')][_0xea79('0x1c')]||null:null,'attributes':[[db[_0xea79('0x1d')]['fn']('COUNT',db[_0xea79('0x1d')][_0xea79('0x1e')]('id')),_0xea79('0x1f')],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db['sequelize']['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x22')))),'predictiveIntervalAnsweredCalls'],[db['sequelize']['fn'](_0xea79('0x20'),db['sequelize']['fn']('IF',db[_0xea79('0x1d')]['literal'](_0xea79('0x23')))),_0xea79('0x24')],[db[_0xea79('0x1d')]['fn']('COUNT',db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x25')))),_0xea79('0x26')],[db['sequelize']['fn']('AVG',db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),'predictiveIntervalAvgHoldtime'],[db['sequelize']['fn'](_0xea79('0x27'),db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x28')))),_0xea79('0x29')]]})[_0xea79('0x9')](function(_0x37bc7e){logger[_0xea79('0x12')](_0xea79('0x2a'),_0x45adee);logger['debug'](_0xea79('0x2a'),_0x45adee,JSON['stringify'](_0x37bc7e));_0x682b9f(_0x37bc7e);})['catch'](function(_0x1db264){logger[_0xea79('0xf')](_0xea79('0x2a'),_0x1db264[_0xea79('0x11')],_0x45adee);_0x271a73(_0x4065e7[_0xea79('0xf')](0x1f4,_0x1db264[_0xea79('0x11')]));});});};exports[_0xea79('0x2b')]=function(_0x24e72c){var _0x4000be=this;return new Promise(function(_0x379a8e,_0x4464aa){return db[_0xea79('0x1a')][_0xea79('0x1b')]({'raw':_0x24e72c[_0xea79('0x17')]?_0x24e72c[_0xea79('0x17')][_0xea79('0x18')]===undefined?!![]:![]:!![],'where':_0x24e72c['options']?_0x24e72c[_0xea79('0x17')][_0xea79('0x1c')]||null:null,'attributes':[[_0xea79('0x2c'),_0xea79('0x2d')],[db[_0xea79('0x1d')]['fn']('COUNT',db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x2e')))),_0xea79('0x2f')],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db['sequelize']['literal'](_0xea79('0x30')))),_0xea79('0x31')],[db['sequelize']['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x22')))),_0xea79('0x32')],[db['sequelize']['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')]('`state`\x20=\x205,\x201,\x20null'))),_0xea79('0x33')],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db['sequelize'][_0xea79('0x21')](_0xea79('0x34')))),_0xea79('0x35')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x36')))),_0xea79('0x37')],[db['sequelize']['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x38')))),'outboundDropCallsDayCallersExit'],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db['sequelize'][_0xea79('0x21')](_0xea79('0x39')))),_0xea79('0x3a')],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')]['literal'](_0xea79('0x3b')))),_0xea79('0x3c')],[db[_0xea79('0x1d')]['fn']('COUNT',db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x3d')))),_0xea79('0x3e')],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db['sequelize']['fn']('IF',db['sequelize'][_0xea79('0x21')](_0xea79('0x3f')))),_0xea79('0x40')],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db['sequelize'][_0xea79('0x21')](_0xea79('0x41')))),_0xea79('0x42')],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')]['literal'](_0xea79('0x43')))),_0xea79('0x40')],[db[_0xea79('0x1d')]['fn'](_0xea79('0x20'),db[_0xea79('0x1d')]['fn']('IF',db['sequelize'][_0xea79('0x21')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0xea79('0x44')]],'group':[_0xea79('0x2c')]})[_0xea79('0x9')](function(_0x2f9bcd){logger[_0xea79('0x12')](_0xea79('0x2b'),_0x24e72c);logger[_0xea79('0xc')](_0xea79('0x2b'),_0x24e72c,JSON['stringify'](_0x2f9bcd));_0x379a8e(_0x2f9bcd);})['catch'](function(_0x1d8d83){logger[_0xea79('0xf')](_0xea79('0x2b'),_0x1d8d83[_0xea79('0x11')],_0x24e72c);_0x4464aa(_0x4000be[_0xea79('0xf')](0x1f4,_0x1d8d83[_0xea79('0x11')]));});});};exports[_0xea79('0x45')]=function(_0x390812){var _0x21dcdb=this;return new Promise(function(_0x24ce46,_0x40da05){return db[_0xea79('0x1a')][_0xea79('0x1b')]({'raw':_0x390812[_0xea79('0x17')]?_0x390812['options']['raw']===undefined?!![]:![]:!![],'where':_0x390812[_0xea79('0x17')]?_0x390812[_0xea79('0x17')][_0xea79('0x1c')]||null:null,'attributes':[[_0xea79('0x2c'),_0xea79('0x2d')],[db[_0xea79('0x1d')]['fn']('COUNT',db[_0xea79('0x1d')][_0xea79('0x1e')]('id')),_0xea79('0x46')],[db[_0xea79('0x1d')]['fn']('COUNT',db[_0xea79('0x1d')]['fn']('IF',db[_0xea79('0x1d')][_0xea79('0x21')](_0xea79('0x22')))),_0xea79('0x47')]],'group':[_0xea79('0x2c')]})[_0xea79('0x9')](function(_0x40c60b){logger[_0xea79('0x12')](_0xea79('0x45'),_0x390812);logger[_0xea79('0xc')](_0xea79('0x45'),_0x390812,JSON[_0xea79('0xe')](_0x40c60b));_0x24ce46(_0x40c60b);})[_0xea79('0x14')](function(_0x3eb35c){logger['error'](_0xea79('0x45'),_0x3eb35c[_0xea79('0x11')],_0x390812);_0x40da05(_0x21dcdb[_0xea79('0xf')](0x1f4,_0x3eb35c[_0xea79('0x11')]));});});};
\ No newline at end of file
index 9e260fc..062aef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff17=['post','create','put','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x240cca,_0x392017){var _0x118f2c=function(_0x2a42de){while(--_0x2a42de){_0x240cca['push'](_0x240cca['shift']());}};_0x118f2c(++_0x392017);}(_0xff17,0x1a7));var _0x7ff1=function(_0x531350,_0xa58628){_0x531350=_0x531350-0x0;var _0x370453=_0xff17[_0x531350];return _0x370453;};'use strict';var multer=require(_0x7ff1('0x0'));var util=require(_0x7ff1('0x1'));var path=require(_0x7ff1('0x2'));var timeout=require(_0x7ff1('0x3'));var express=require(_0x7ff1('0x4'));var router=express['Router']();var fs_extra=require(_0x7ff1('0x5'));var auth=require(_0x7ff1('0x6'));var interaction=require(_0x7ff1('0x7'));var config=require(_0x7ff1('0x8'));var controller=require(_0x7ff1('0x9'));router[_0x7ff1('0xa')]('/',auth[_0x7ff1('0xb')](),controller[_0x7ff1('0xc')]);router[_0x7ff1('0xa')](_0x7ff1('0xd'),auth['isAuthenticated'](),controller[_0x7ff1('0xe')]);router[_0x7ff1('0xa')](_0x7ff1('0xf'),auth[_0x7ff1('0xb')](),controller[_0x7ff1('0x10')]);router[_0x7ff1('0x11')]('/',auth[_0x7ff1('0xb')](),controller[_0x7ff1('0x12')]);router[_0x7ff1('0x13')](_0x7ff1('0xf'),auth[_0x7ff1('0xb')](),controller[_0x7ff1('0x14')]);module[_0x7ff1('0x15')]=router;
\ No newline at end of file
+var _0x7d21=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x5a4663,_0x27a762){var _0x4876d8=function(_0x46bc72){while(--_0x46bc72){_0x5a4663['push'](_0x5a4663['shift']());}};_0x4876d8(++_0x27a762);}(_0x7d21,0x1a2));var _0x17d2=function(_0x43350b,_0xa7d264){_0x43350b=_0x43350b-0x0;var _0x3b1040=_0x7d21[_0x43350b];return _0x3b1040;};'use strict';var multer=require(_0x17d2('0x0'));var util=require(_0x17d2('0x1'));var path=require(_0x17d2('0x2'));var timeout=require(_0x17d2('0x3'));var express=require(_0x17d2('0x4'));var router=express[_0x17d2('0x5')]();var fs_extra=require(_0x17d2('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x17d2('0x7'));var config=require(_0x17d2('0x8'));var controller=require('./cmHopperHistory.controller');router[_0x17d2('0x9')]('/',auth[_0x17d2('0xa')](),controller[_0x17d2('0xb')]);router[_0x17d2('0x9')](_0x17d2('0xc'),auth[_0x17d2('0xa')](),controller[_0x17d2('0xd')]);router[_0x17d2('0x9')](_0x17d2('0xe'),auth['isAuthenticated'](),controller[_0x17d2('0xf')]);router[_0x17d2('0x10')]('/',auth['isAuthenticated'](),controller[_0x17d2('0x11')]);router[_0x17d2('0x12')]('/:id',auth['isAuthenticated'](),controller['update']);module['exports']=router;
\ No newline at end of file
index 370fde7..243d57e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f75=['name','sequelize','STRING'];(function(_0x58bc60,_0x4c7df1){var _0x583bc9=function(_0x4a74ad){while(--_0x4a74ad){_0x58bc60['push'](_0x58bc60['shift']());}};_0x583bc9(++_0x4c7df1);}(_0x9f75,0x15a));var _0x59f7=function(_0x2054c8,_0x341ac3){_0x2054c8=_0x2054c8-0x0;var _0x496f8a=_0x9f75[_0x2054c8];return _0x496f8a;};'use strict';var Sequelize=require(_0x59f7('0x0'));module['exports']={'name':{'type':Sequelize[_0x59f7('0x1')],'unique':_0x59f7('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc92f=['exports','name','STRING','sequelize'];(function(_0x5256aa,_0x484e8f){var _0x137e79=function(_0x325020){while(--_0x325020){_0x5256aa['push'](_0x5256aa['shift']());}};_0x137e79(++_0x484e8f);}(_0xc92f,0xf3));var _0xfc92=function(_0x3f83b5,_0x4c73d4){_0x3f83b5=_0x3f83b5-0x0;var _0x3804e9=_0xc92f[_0x3f83b5];return _0x3804e9;};'use strict';var Sequelize=require(_0xfc92('0x0'));module[_0xfc92('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xfc92('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xfc92('0x3')]},'dialPrefix':{'type':Sequelize[_0xfc92('0x3')]}};
\ No newline at end of file
index 969408a..da5828d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c84=['filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','userProfileId','create','body','describe','addDisposition','ListId','Disposition','findOne','order','removeDispositions','ids','CmContact','tags','isArray','join','each','omit','success','dataValues','errors','push','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','raw','getContactsCsv','ContactItemType','OrderBy','select','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','c.cf_','customField_','alias','item','from','cm_contact_has_items','CmContactId\x20=\x20c.id','field','description','ItemTypeId\x20=\x20?','description_additionalPhone_','toString','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','text/csv','download','addCustomField','sequelize','transaction','TEXT','text','Sequelize','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','info','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','Lists','UserProfileResource','destroy','error','stack','name','send','CmList','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8c84,0x107));var _0x48c8=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x8c84[_0x4cf98e];return _0x1623ac;};'use strict';var emlformat=require(_0x48c8('0x0'));var rimraf=require(_0x48c8('0x1'));var zipdir=require(_0x48c8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x48c8('0x3'));var BPromise=require(_0x48c8('0x4'));var Mustache=require(_0x48c8('0x5'));var util=require(_0x48c8('0x6'));var path=require('path');var sox=require(_0x48c8('0x7'));var csv=require('to-csv');var ejs=require(_0x48c8('0x8'));var fs=require('fs');var fs_extra=require(_0x48c8('0x9'));var _=require(_0x48c8('0xa'));var squel=require(_0x48c8('0xb'));var crypto=require(_0x48c8('0xc'));var jsforce=require(_0x48c8('0xd'));var deskjs=require(_0x48c8('0xe'));var toCsv=require(_0x48c8('0xf'));var querystring=require(_0x48c8('0x10'));var Papa=require(_0x48c8('0x11'));var Redis=require(_0x48c8('0x12'));var authService=require(_0x48c8('0x13'));var qs=require(_0x48c8('0x14'));var as=require(_0x48c8('0x15'));var hardwareService=require(_0x48c8('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x48c8('0x17'));var config=require(_0x48c8('0x18'));var licenseUtil=require(_0x48c8('0x19'));var db=require(_0x48c8('0x1a'))['db'];var csv_results;config[_0x48c8('0x1b')]=_[_0x48c8('0x1c')](config[_0x48c8('0x1b')],{'host':_0x48c8('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x48c8('0x1b')]));require('./cmList.socket')[_0x48c8('0x1e')](socket);function respondWithStatusCode(_0x1d7999,_0x8aefe3){_0x8aefe3=_0x8aefe3||0xcc;return function(_0x42efda){if(_0x42efda){return _0x1d7999[_0x48c8('0x1f')](_0x8aefe3);}return _0x1d7999[_0x48c8('0x20')](_0x8aefe3)[_0x48c8('0x21')]();};}function respondWithResult(_0x3c4430,_0x3c4fa7){_0x3c4fa7=_0x3c4fa7||0xc8;return function(_0x5ad5e4){if(_0x5ad5e4){return _0x3c4430['status'](_0x3c4fa7)[_0x48c8('0x22')](_0x5ad5e4);}};}function respondWithFilteredResult(_0xba554,_0x1eef3c){return function(_0x24983d){if(_0x24983d){var _0x4b52d0=typeof _0x1eef3c[_0x48c8('0x23')]===_0x48c8('0x24')&&typeof _0x1eef3c[_0x48c8('0x25')]==='undefined';var _0x281baf=_0x24983d['count'];var _0x52e3bd=_0x4b52d0?0x0:_0x1eef3c[_0x48c8('0x23')];var _0x21b5c6=_0x4b52d0?_0x24983d[_0x48c8('0x26')]:_0x1eef3c['offset']+_0x1eef3c[_0x48c8('0x25')];var _0x136dec;if(_0x21b5c6>=_0x281baf){_0x21b5c6=_0x281baf;_0x136dec=0xc8;}else{_0x136dec=0xce;}_0xba554[_0x48c8('0x20')](_0x136dec);return _0xba554[_0x48c8('0x27')](_0x48c8('0x28'),_0x52e3bd+'-'+_0x21b5c6+'/'+_0x281baf)[_0x48c8('0x22')](_0x24983d);}return null;};}function patchUpdates(_0x25260a){return function(_0xd5bcec){try{jsonpatch[_0x48c8('0x29')](_0xd5bcec,_0x25260a,!![]);}catch(_0x282403){return BPromise['reject'](_0x282403);}return _0xd5bcec[_0x48c8('0x2a')]();};}function saveUpdates(_0x2cf8e9,_0x41d6e9){return function(_0x1f83d0){if(_0x1f83d0){return _0x1f83d0[_0x48c8('0x2b')](_0x2cf8e9)[_0x48c8('0x2c')](function(_0xcc6ee7){return _0xcc6ee7;});}return null;};}function removeEntity(_0xeb59a4,_0x5ec3e9){return function(_0x318076){if(_0x318076){return _0x318076['destroy']()[_0x48c8('0x2c')](function(){var _0x19b163=_0x318076[_0x48c8('0x2d')]({'plain':!![]});var _0x3295fc=_0x48c8('0x2e');return db[_0x48c8('0x2f')][_0x48c8('0x30')]({'where':{'type':_0x3295fc,'resourceId':_0x19b163['id']}})['then'](function(){return _0x318076;});})['then'](function(){_0xeb59a4[_0x48c8('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x96a460,_0x779a3a){return function(_0x2e39c5){if(!_0x2e39c5){_0x96a460[_0x48c8('0x1f')](0x194);}return _0x2e39c5;};}function handleError(_0x275e44,_0x39bea2){_0x39bea2=_0x39bea2||0x1f4;return function(_0x4eaf11){logger[_0x48c8('0x31')](_0x4eaf11[_0x48c8('0x32')]);if(_0x4eaf11[_0x48c8('0x33')]){delete _0x4eaf11[_0x48c8('0x33')];}_0x275e44['status'](_0x39bea2)[_0x48c8('0x34')](_0x4eaf11);};}exports['index']=function(_0x37f328,_0x3af777){var _0x4ff49f={},_0x4a1da4={},_0x44e8d0={'count':0x0,'rows':[]};var _0xe5bb1c=_['map'](db[_0x48c8('0x35')][_0x48c8('0x36')],function(_0x22af14){return{'name':_0x22af14[_0x48c8('0x37')],'type':_0x22af14[_0x48c8('0x38')][_0x48c8('0x39')]};});_0x4a1da4[_0x48c8('0x3a')]=_[_0x48c8('0x3b')](_0xe5bb1c,'name');_0x4a1da4['query']=_[_0x48c8('0x3c')](_0x37f328[_0x48c8('0x3d')]);_0x4a1da4[_0x48c8('0x3e')]=_['intersection'](_0x4a1da4[_0x48c8('0x3a')],_0x4a1da4['query']);_0x4ff49f[_0x48c8('0x3f')]=_['intersection'](_0x4a1da4[_0x48c8('0x3a')],qs[_0x48c8('0x40')](_0x37f328[_0x48c8('0x3d')]['fields']));_0x4ff49f[_0x48c8('0x3f')]=_0x4ff49f[_0x48c8('0x3f')][_0x48c8('0x41')]?_0x4ff49f[_0x48c8('0x3f')]:_0x4a1da4[_0x48c8('0x3a')];if(!_0x37f328['query'][_0x48c8('0x42')](_0x48c8('0x43'))){_0x4ff49f[_0x48c8('0x25')]=qs[_0x48c8('0x25')](_0x37f328[_0x48c8('0x3d')]['limit']);_0x4ff49f[_0x48c8('0x23')]=qs[_0x48c8('0x23')](_0x37f328['query']['offset']);}_0x4ff49f['order']=qs[_0x48c8('0x44')](_0x37f328[_0x48c8('0x3d')][_0x48c8('0x44')]);_0x4ff49f[_0x48c8('0x45')]=qs['filters'](_[_0x48c8('0x46')](_0x37f328[_0x48c8('0x3d')],_0x4a1da4[_0x48c8('0x3e')]),_0xe5bb1c);if(_0x37f328[_0x48c8('0x3d')][_0x48c8('0x47')]){_0x4ff49f[_0x48c8('0x45')]=_[_0x48c8('0x48')](_0x4ff49f[_0x48c8('0x45')],{'$or':_[_0x48c8('0x3b')](_0xe5bb1c,function(_0x5ee61d){if(_0x5ee61d[_0x48c8('0x38')]!==_0x48c8('0x49')){var _0x5a9655={};_0x5a9655[_0x5ee61d[_0x48c8('0x33')]]={'$like':'%'+_0x37f328['query'][_0x48c8('0x47')]+'%'};return _0x5a9655;}})});}_0x4ff49f=_[_0x48c8('0x48')]({},_0x4ff49f,_0x37f328[_0x48c8('0x4a')]);var _0x2188e8={'where':_0x4ff49f[_0x48c8('0x45')]};return db[_0x48c8('0x35')][_0x48c8('0x26')](_0x2188e8)[_0x48c8('0x2c')](function(_0x883b56){_0x44e8d0[_0x48c8('0x26')]=_0x883b56;if(_0x37f328[_0x48c8('0x3d')][_0x48c8('0x4b')]){_0x4ff49f[_0x48c8('0x4c')]=[{'all':!![]}];}return db[_0x48c8('0x35')][_0x48c8('0x4d')](_0x4ff49f);})[_0x48c8('0x2c')](function(_0x23ffeb){_0x44e8d0[_0x48c8('0x4e')]=_0x23ffeb;return _0x44e8d0;})['then'](respondWithFilteredResult(_0x3af777,_0x4ff49f))[_0x48c8('0x4f')](handleError(_0x3af777,null));};exports[_0x48c8('0x50')]=function(_0x3572e1,_0x4b00bd){var _0x448f0f={'raw':![],'where':{'id':_0x3572e1[_0x48c8('0x51')]['id']}},_0x45d3b8={};_0x45d3b8[_0x48c8('0x3a')]=_[_0x48c8('0x3c')](db[_0x48c8('0x35')]['rawAttributes']);_0x45d3b8[_0x48c8('0x3d')]=_[_0x48c8('0x3c')](_0x3572e1[_0x48c8('0x3d')]);_0x45d3b8[_0x48c8('0x3e')]=_[_0x48c8('0x52')](_0x45d3b8[_0x48c8('0x3a')],_0x45d3b8[_0x48c8('0x3d')]);_0x448f0f['attributes']=_['intersection'](_0x45d3b8['model'],qs[_0x48c8('0x40')](_0x3572e1[_0x48c8('0x3d')][_0x48c8('0x40')]));_0x448f0f[_0x48c8('0x3f')]=_0x448f0f[_0x48c8('0x3f')]['length']?_0x448f0f['attributes']:_0x45d3b8[_0x48c8('0x3a')];if(_0x3572e1[_0x48c8('0x3d')][_0x48c8('0x4b')]){_0x448f0f['include']=[{'all':!![]}];}_0x448f0f=_[_0x48c8('0x48')]({},_0x448f0f,_0x3572e1[_0x48c8('0x4a')]);return db[_0x48c8('0x35')]['find'](_0x448f0f)[_0x48c8('0x2c')](handleEntityNotFound(_0x4b00bd,null))['then'](respondWithResult(_0x4b00bd,null))[_0x48c8('0x4f')](handleError(_0x4b00bd,null));};exports['create']=function(_0x481a5e,_0x41adb5){return db[_0x48c8('0x35')]['create'](_0x481a5e['body'],{})[_0x48c8('0x2c')](function(_0x47443f){var _0x492c4a=_0x481a5e['user'][_0x48c8('0x2d')]({'plain':!![]});if(!_0x492c4a)throw new Error(_0x48c8('0x53'));if(_0x492c4a['role']===_0x48c8('0x54')){var _0x5cd377=_0x47443f['get']({'plain':!![]});var _0x2031e4=_0x48c8('0x2e');return db['UserProfileSection'][_0x48c8('0x55')]({'where':{'name':_0x2031e4,'userProfileId':_0x492c4a[_0x48c8('0x56')]},'raw':!![]})[_0x48c8('0x2c')](function(_0x1608a3){if(_0x1608a3&&_0x1608a3['autoAssociation']===0x0){return db[_0x48c8('0x2f')][_0x48c8('0x57')]({'name':_0x5cd377['name'],'resourceId':_0x5cd377['id'],'type':_0x1608a3[_0x48c8('0x33')],'sectionId':_0x1608a3['id']},{})[_0x48c8('0x2c')](function(){return _0x47443f;});}else{return _0x47443f;}})['catch'](function(_0x5d3498){logger[_0x48c8('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d3498);throw _0x5d3498;});}return _0x47443f;})['then'](respondWithResult(_0x41adb5,0xc9))['catch'](handleError(_0x41adb5,null));};exports[_0x48c8('0x2b')]=function(_0x4c2f6b,_0x5760f4){if(_0x4c2f6b[_0x48c8('0x58')]['id']){delete _0x4c2f6b[_0x48c8('0x58')]['id'];}return db[_0x48c8('0x35')][_0x48c8('0x55')]({'where':{'id':_0x4c2f6b[_0x48c8('0x51')]['id']}})['then'](handleEntityNotFound(_0x5760f4,null))[_0x48c8('0x2c')](saveUpdates(_0x4c2f6b[_0x48c8('0x58')],null))[_0x48c8('0x2c')](respondWithResult(_0x5760f4,null))[_0x48c8('0x4f')](handleError(_0x5760f4,null));};exports['destroy']=function(_0x58b4bc,_0x5f2d74){return db['CmList'][_0x48c8('0x55')]({'where':{'id':_0x58b4bc[_0x48c8('0x51')]['id']}})[_0x48c8('0x2c')](handleEntityNotFound(_0x5f2d74,null))['then'](removeEntity(_0x5f2d74,null))[_0x48c8('0x4f')](handleError(_0x5f2d74,null));};exports[_0x48c8('0x59')]=function(_0x3d91a0,_0x3ef17d){return db[_0x48c8('0x35')]['describe']()[_0x48c8('0x2c')](respondWithResult(_0x3ef17d,null))[_0x48c8('0x4f')](handleError(_0x3ef17d,null));};exports[_0x48c8('0x5a')]=function(_0x48101c,_0x37ccb8,_0x1b4f70){if(_0x48101c[_0x48c8('0x58')]['id']){delete _0x48101c[_0x48c8('0x58')]['id'];}return db[_0x48c8('0x35')][_0x48c8('0x55')]({'where':{'id':_0x48101c['params']['id']}})['then'](handleEntityNotFound(_0x37ccb8,null))[_0x48c8('0x2c')](function(_0x5c3b37){if(_0x5c3b37){_0x48101c[_0x48c8('0x58')][_0x48c8('0x5b')]=_0x5c3b37['id'];return db[_0x48c8('0x5c')][_0x48c8('0x57')](_0x48101c[_0x48c8('0x58')]);}})[_0x48c8('0x2c')](respondWithResult(_0x37ccb8,null))[_0x48c8('0x4f')](handleError(_0x37ccb8,null));};exports['getDispositions']=function(_0x17abbd,_0x5082a8,_0x149179){var _0x263b7e={'raw':![],'where':{}};var _0x19b153={};var _0x4121d5={'count':0x0,'rows':[]};return db[_0x48c8('0x35')][_0x48c8('0x5d')]({'where':{'id':_0x17abbd[_0x48c8('0x51')]['id']}})[_0x48c8('0x2c')](handleEntityNotFound(_0x5082a8,null))[_0x48c8('0x2c')](function(_0x2d6957){if(_0x2d6957){_0x19b153[_0x48c8('0x3a')]=_[_0x48c8('0x3c')](db[_0x48c8('0x5c')][_0x48c8('0x36')]);_0x19b153['query']=_['keys'](_0x17abbd['query']);_0x19b153['filters']=_[_0x48c8('0x52')](_0x19b153['model'],_0x19b153[_0x48c8('0x3d')]);_0x263b7e[_0x48c8('0x3f')]=_['intersection'](_0x19b153[_0x48c8('0x3a')],qs[_0x48c8('0x40')](_0x17abbd[_0x48c8('0x3d')][_0x48c8('0x40')]));_0x263b7e[_0x48c8('0x3f')]=_0x263b7e[_0x48c8('0x3f')][_0x48c8('0x41')]?_0x263b7e[_0x48c8('0x3f')]:_0x19b153['model'];if(!_0x17abbd[_0x48c8('0x3d')][_0x48c8('0x42')]('nolimit')){_0x263b7e['limit']=qs[_0x48c8('0x25')](_0x17abbd[_0x48c8('0x3d')]['limit']);_0x263b7e[_0x48c8('0x23')]=qs['offset'](_0x17abbd['query'][_0x48c8('0x23')]);}_0x263b7e[_0x48c8('0x5e')]=qs[_0x48c8('0x44')](_0x17abbd[_0x48c8('0x3d')][_0x48c8('0x44')]);_0x263b7e[_0x48c8('0x45')]=qs['filters'](_[_0x48c8('0x46')](_0x17abbd[_0x48c8('0x3d')],_0x19b153[_0x48c8('0x3e')]));_0x263b7e[_0x48c8('0x45')][_0x48c8('0x5b')]=_0x2d6957['id'];if(_0x17abbd['query'][_0x48c8('0x47')]){_0x263b7e[_0x48c8('0x45')]=_[_0x48c8('0x48')](_0x263b7e[_0x48c8('0x45')],{'$or':_[_0x48c8('0x3b')](_0x263b7e['attributes'],function(_0x251656){var _0x47f96e={};_0x47f96e[_0x251656]={'$like':'%'+_0x17abbd['query'][_0x48c8('0x47')]+'%'};return _0x47f96e;})});}_0x263b7e=_['merge']({},_0x263b7e,_0x17abbd[_0x48c8('0x4a')]);return db[_0x48c8('0x5c')][_0x48c8('0x26')]({'where':_0x263b7e[_0x48c8('0x45')]})[_0x48c8('0x2c')](function(_0x1a2cc6){_0x4121d5[_0x48c8('0x26')]=_0x1a2cc6;if(_0x17abbd[_0x48c8('0x3d')][_0x48c8('0x4b')]){_0x263b7e[_0x48c8('0x4c')]=[{'all':!![]}];}return db[_0x48c8('0x5c')][_0x48c8('0x4d')](_0x263b7e);})[_0x48c8('0x2c')](function(_0x1ddf25){_0x4121d5[_0x48c8('0x4e')]=_0x1ddf25;return _0x4121d5;});}})['then'](respondWithFilteredResult(_0x5082a8,_0x263b7e))[_0x48c8('0x4f')](handleError(_0x5082a8,null));};exports['removeDispositions']=function(_0x427d3f,_0xa437d8,_0x34afb3){return db[_0x48c8('0x35')]['find']({'where':{'id':_0x427d3f[_0x48c8('0x51')]['id']}})[_0x48c8('0x2c')](handleEntityNotFound(_0xa437d8,null))[_0x48c8('0x2c')](function(_0x4d4277){if(_0x4d4277){return _0x4d4277[_0x48c8('0x5f')](_0x427d3f[_0x48c8('0x3d')][_0x48c8('0x60')]);}})[_0x48c8('0x2c')](respondWithStatusCode(_0xa437d8,null))['catch'](handleError(_0xa437d8,null));};exports['addContacts']=function(_0x434b95,_0x1327bf,_0x1f5977){return db[_0x48c8('0x35')]['find']({'where':{'id':_0x434b95['params']['id']}})[_0x48c8('0x2c')](handleEntityNotFound(_0x1327bf,null))[_0x48c8('0x2c')](function(_0x15db9b){if(_0x15db9b){var _0x3c42d8=[];var _0x25c2e7={'success':[],'errors':[]};return db[_0x48c8('0x61')][_0x48c8('0x59')]()['then'](function(_0x115986){if(_0x434b95['body'][_0x48c8('0x62')]&&_[_0x48c8('0x63')](_0x434b95[_0x48c8('0x58')][_0x48c8('0x62')])){if(_0x434b95[_0x48c8('0x58')]['tags']['length']){_0x434b95[_0x48c8('0x58')][_0x48c8('0x62')]=_0x434b95[_0x48c8('0x58')][_0x48c8('0x62')][_0x48c8('0x64')](';')+';';}else{_0x434b95['body'][_0x48c8('0x62')]=null;}}else{_0x434b95[_0x48c8('0x58')][_0x48c8('0x62')]=null;}if(_0x434b95[_0x48c8('0x58')]&&_[_0x48c8('0x63')](_0x434b95[_0x48c8('0x58')])){for(var _0x5dd0d1=0x0;_0x5dd0d1<_0x434b95['body'][_0x48c8('0x41')];_0x5dd0d1+=0x1){_0x434b95[_0x48c8('0x58')][_0x5dd0d1][_0x48c8('0x5b')]=_0x434b95[_0x48c8('0x51')]['id'];_0x3c42d8['push'](_0x434b95[_0x48c8('0x58')][_0x5dd0d1]);}return BPromise[_0x48c8('0x65')](_0x3c42d8,function(_0x53f7fa){return db[_0x48c8('0x61')][_0x48c8('0x57')](_[_0x48c8('0x66')](_0x53f7fa,['ids','id'])||{},{'fields':_[_0x48c8('0x3c')](_0x115986),'raw':!![]})[_0x48c8('0x2c')](function(_0x39a950){_0x25c2e7[_0x48c8('0x67')]['push'](_0x39a950[_0x48c8('0x68')]);})[_0x48c8('0x4f')](function(_0x55ae1d){_0x25c2e7[_0x48c8('0x69')][_0x48c8('0x6a')]({'data':_0x53f7fa,'error':_0x55ae1d[_0x48c8('0x6b')]});});})[_0x48c8('0x2c')](function(_0x41f91d){return _0x25c2e7;})['catch'](function(_0x38afef){return _0x38afef;});}else{_0x1327bf['status'](0x190)[_0x48c8('0x22')]({'message':_0x48c8('0x6c')});}});}})[_0x48c8('0x2c')](respondWithResult(_0x1327bf,null))[_0x48c8('0x4f')](handleError(_0x1327bf,null));};exports[_0x48c8('0x6d')]=function(_0x43b7cd,_0x5308e9,_0x30decc){var _0x24f40b;return db['CmList']['find']({'where':{'id':_0x43b7cd['params']['id']},'include':[{'model':db[_0x48c8('0x6e')],'as':_0x48c8('0x6f')}]})['then'](handleEntityNotFound(_0x5308e9,null))[_0x48c8('0x2c')](function(_0x4fc0fb){if(_0x4fc0fb){_0x24f40b=_0x4fc0fb;return db[_0x48c8('0x61')][_0x48c8('0x36')];}})[_0x48c8('0x2c')](function(_0x3f5903){if(_0x3f5903){var _0x575701={};var _0x5f1369={};_0x5f1369[_0x48c8('0x3a')]=_[_0x48c8('0x70')](_[_0x48c8('0x3c')](_0x3f5903),_[_0x48c8('0x3b')](_0x24f40b[_0x48c8('0x6f')],function(_0x47494a){return util[_0x48c8('0x71')]('cf_%d',_0x47494a['id']);}));_0x5f1369[_0x48c8('0x3d')]=_[_0x48c8('0x3c')](_0x43b7cd[_0x48c8('0x3d')]);_0x5f1369[_0x48c8('0x3e')]=_[_0x48c8('0x52')](_0x5f1369[_0x48c8('0x3a')],_0x5f1369[_0x48c8('0x3d')]);_0x575701[_0x48c8('0x3f')]=_[_0x48c8('0x52')](_0x5f1369[_0x48c8('0x3a')],qs['fields'](_0x43b7cd[_0x48c8('0x3d')]['fields']));_0x575701[_0x48c8('0x3f')]=_0x575701[_0x48c8('0x3f')][_0x48c8('0x41')]?_0x575701[_0x48c8('0x3f')]:_0x5f1369[_0x48c8('0x3a')];if(!_0x43b7cd[_0x48c8('0x3d')][_0x48c8('0x42')](_0x48c8('0x43'))){_0x575701[_0x48c8('0x25')]=qs[_0x48c8('0x25')](_0x43b7cd['query'][_0x48c8('0x25')]);_0x575701[_0x48c8('0x23')]=qs['offset'](_0x43b7cd['query'][_0x48c8('0x23')]);}_0x575701['order']=qs[_0x48c8('0x44')](_0x43b7cd['query'][_0x48c8('0x44')]);_0x575701[_0x48c8('0x45')]=qs[_0x48c8('0x3e')](_[_0x48c8('0x46')](_0x43b7cd[_0x48c8('0x3d')],_0x5f1369[_0x48c8('0x3e')]));_0x575701[_0x48c8('0x72')]=!![];if(_0x43b7cd[_0x48c8('0x3d')][_0x48c8('0x47')]){_0x575701['where']=_[_0x48c8('0x48')](_0x575701[_0x48c8('0x45')],{'$or':_['map'](_0x575701[_0x48c8('0x3f')],function(_0x1b4361){var _0xa493e7={};_0xa493e7[_0x1b4361]={'$like':'%'+_0x43b7cd['query'][_0x48c8('0x47')]+'%'};return _0xa493e7;})});}_0x575701=_[_0x48c8('0x48')]({},_0x575701,_0x43b7cd[_0x48c8('0x4a')]);return _0x24f40b[_0x48c8('0x6d')](_0x575701);}})[_0x48c8('0x2c')](respondWithResult(_0x5308e9,null))['catch'](handleError(_0x5308e9,null));};exports[_0x48c8('0x73')]=function(_0x4d1baf,_0x134162,_0x319cd5){var _0x11780d;var _0x1d1476;var _0x25937b;var _0x3ba9c0=_0x4d1baf['params']['id'];csv_results=[];return db[_0x48c8('0x74')][_0x48c8('0x4d')]({'attributes':['id','name'],'raw':!![],'order':[_0x48c8('0x75')]})[_0x48c8('0x2c')](function(_0x223cd1){_0x11780d=_0x223cd1;var _0x223a51=_[_0x48c8('0x3c')](db[_0x48c8('0x61')]['rawAttributes']);return db[_0x48c8('0x6e')][_0x48c8('0x4d')]({'raw':!![],'attributes':['id','alias']})[_0x48c8('0x2c')](function(_0x9197d5){_0x1d1476=_0x9197d5;var _0x2b5c12=squel[_0x48c8('0x76')]()[_0x48c8('0x40')](_0x223a51)['from'](_0x48c8('0x77'),'c')['where'](_0x48c8('0x78'),_0x3ba9c0)[_0x48c8('0x45')](_0x48c8('0x79'))['distinct']();for(var _0x3c4f56=0x0;_0x3c4f56<_0x1d1476[_0x48c8('0x41')];_0x3c4f56++){_0x2b5c12['field'](_0x48c8('0x7a')+_0x1d1476[_0x3c4f56]['id'],_0x48c8('0x7b')+_0x1d1476[_0x3c4f56][_0x48c8('0x7c')]);}for(var _0x3c4f56=0x0;_0x3c4f56<_0x11780d[_0x48c8('0x41')];_0x3c4f56++){_0x2b5c12['field'](squel['select']()['field'](_0x48c8('0x7d'))[_0x48c8('0x7e')](_0x48c8('0x7f'))[_0x48c8('0x45')]('ItemTypeId\x20=\x20?',_0x11780d[_0x3c4f56]['id'])['where'](_0x48c8('0x80')),'additionalPhone_'+_0x11780d[_0x3c4f56][_0x48c8('0x33')]);_0x2b5c12[_0x48c8('0x81')](squel[_0x48c8('0x76')]()['field'](_0x48c8('0x82'))[_0x48c8('0x7e')](_0x48c8('0x7f'))[_0x48c8('0x45')](_0x48c8('0x83'),_0x11780d[_0x3c4f56]['id'])[_0x48c8('0x45')]('CmContactId\x20=\x20c.id'),_0x48c8('0x84')+_0x11780d[_0x3c4f56]['name']);}var _0x2e4d2b=[];_0x2e4d2b[_0x48c8('0x6a')](_0x2b5c12[_0x48c8('0x85')]());BPromise['each'](_0x2e4d2b,handleQuery)[_0x48c8('0x2c')](function(_0x43b73c){handleQuery(_0x2b5c12[_0x48c8('0x85')]());var _0x21cd9a=csv_results[0x0];if(!_[_0x48c8('0x86')](_0x21cd9a)){var _0x3596ad=toCsv(_0x21cd9a);var _0x318254=Date[_0x48c8('0x87')]();fs[_0x48c8('0x88')](util['format'](_0x48c8('0x89'),_0x3ba9c0,_0x318254),_0x3596ad);_0x134162['setHeader'](_0x48c8('0x8a'),_0x48c8('0x8b')+util[_0x48c8('0x71')]('list_%d_%s.csv',_0x3ba9c0,_0x318254));_0x134162[_0x48c8('0x8c')]('Content-type',_0x48c8('0x8d'));return _0x134162[_0x48c8('0x8e')](util[_0x48c8('0x71')](_0x48c8('0x89'),_0x3ba9c0,_0x318254));}else{return _0x134162[_0x48c8('0x1f')](0xcc);}});});});};exports[_0x48c8('0x8f')]=function(_0x795aec,_0xeaa232,_0x39437e){var _0x751029;delete _0x795aec[_0x48c8('0x58')]['id'];return db[_0x48c8('0x35')][_0x48c8('0x5d')]({'where':{'id':_0x795aec[_0x48c8('0x51')]['id']}})[_0x48c8('0x2c')](handleEntityNotFound(_0xeaa232,null))['then'](function(_0x4f5d97){if(_0x4f5d97){return db[_0x48c8('0x90')][_0x48c8('0x91')](function(_0x581618){return db[_0x48c8('0x6e')][_0x48c8('0x57')](_0x795aec[_0x48c8('0x58')],{'transaction':_0x581618})['then'](function(_0x282cda){_0x751029=_0x282cda;return _0x4f5d97['addCustomFields'](_0x282cda,{'transaction':_0x581618});})[_0x48c8('0x2c')](function(){var _0x160a91={'type':db['Sequelize'][_0x48c8('0x92')],'transaction':_0x581618};switch(_0x795aec['body'][_0x48c8('0x38')]){case _0x48c8('0x93'):_0x160a91[_0x48c8('0x38')]=db[_0x48c8('0x94')][_0x48c8('0x92')];break;case _0x48c8('0x95'):_0x160a91[_0x48c8('0x38')]=db['Sequelize'][_0x48c8('0x96')];break;case _0x48c8('0x97'):_0x160a91[_0x48c8('0x38')]=db[_0x48c8('0x94')][_0x48c8('0x98')];_0x160a91['defaultValue']=![];break;default:}return db[_0x48c8('0x90')][_0x48c8('0x99')][_0x48c8('0x9a')](_0x48c8('0x77'),util[_0x48c8('0x71')](_0x48c8('0x9b'),_0x751029['id']),_0x160a91);})[_0x48c8('0x2c')](function(){return _0x751029;});});}})[_0x48c8('0x2c')](respondWithResult(_0xeaa232,null))[_0x48c8('0x4f')](handleError(_0xeaa232,null));};exports[_0x48c8('0x9c')]=function(_0x4d59d6,_0x57ab37,_0x3f2111){var _0x2f439f={};var _0x33e5b1={};var _0x47e2af;var _0x4e7043;return db['CmList'][_0x48c8('0x5d')]({'where':{'id':_0x4d59d6['params']['id']}})[_0x48c8('0x2c')](handleEntityNotFound(_0x57ab37,null))[_0x48c8('0x2c')](function(_0x494f4e){if(_0x494f4e){_0x47e2af=_0x494f4e;_0x33e5b1['model']=_['keys'](db[_0x48c8('0x6e')]['rawAttributes']);_0x33e5b1[_0x48c8('0x3d')]=_[_0x48c8('0x3c')](_0x4d59d6['query']);_0x33e5b1[_0x48c8('0x3e')]=_[_0x48c8('0x52')](_0x33e5b1[_0x48c8('0x3a')],_0x33e5b1[_0x48c8('0x3d')]);_0x2f439f['attributes']=_[_0x48c8('0x52')](_0x33e5b1[_0x48c8('0x3a')],qs[_0x48c8('0x40')](_0x4d59d6['query'][_0x48c8('0x40')]));_0x2f439f[_0x48c8('0x3f')]=_0x2f439f[_0x48c8('0x3f')][_0x48c8('0x41')]?_0x2f439f[_0x48c8('0x3f')]:_0x33e5b1['model'];_0x2f439f['order']=qs['sort'](_0x4d59d6[_0x48c8('0x3d')][_0x48c8('0x44')]);_0x2f439f[_0x48c8('0x45')]=qs[_0x48c8('0x3e')](_['pick'](_0x4d59d6[_0x48c8('0x3d')],_0x33e5b1[_0x48c8('0x3e')]));_0x2f439f[_0x48c8('0x45')]=_['merge'](_0x2f439f['where'],{'$or':[{'ListId':_0x494f4e['id']},{'ListId':null}]});if(_0x4d59d6['query'][_0x48c8('0x47')]){_0x2f439f[_0x48c8('0x45')]=_['merge'](_0x2f439f[_0x48c8('0x45')],{'$or':_[_0x48c8('0x3b')](_0x2f439f['attributes'],function(_0x15b815){var _0x5ed23d={};_0x5ed23d[_0x15b815]={'$like':'%'+_0x4d59d6[_0x48c8('0x3d')]['filter']+'%'};return _0x5ed23d;})});}_0x2f439f=_[_0x48c8('0x48')]({},_0x2f439f,_0x4d59d6[_0x48c8('0x4a')]);return db['CmCustomField'][_0x48c8('0x9d')](_0x2f439f);}})[_0x48c8('0x2c')](respondWithResult(_0x57ab37,null))[_0x48c8('0x4f')](handleError(_0x57ab37,null));};exports['getGlobalCustomFields']=function(_0x255e99,_0x4e0f50){return db[_0x48c8('0x6e')]['findAndCountAll']({'where':{'ListId':null}})[_0x48c8('0x2c')](handleEntityNotFound(_0x4e0f50,null))[_0x48c8('0x2c')](function(_0x39b613){return _0x39b613;})[_0x48c8('0x2c')](respondWithResult(_0x4e0f50,null))[_0x48c8('0x4f')](handleError(_0x4e0f50,null));};exports['addAgents']=function(_0x2e3b6e,_0x1c4036,_0x114f2f){return db[_0x48c8('0x35')][_0x48c8('0x55')]({'where':{'id':_0x2e3b6e[_0x48c8('0x51')]['id']}})['then'](handleEntityNotFound(_0x1c4036,null))[_0x48c8('0x2c')](function(_0x27c050){if(_0x27c050){return _0x27c050[_0x48c8('0x9e')](_0x2e3b6e[_0x48c8('0x58')][_0x48c8('0x60')],_[_0x48c8('0x66')](_0x2e3b6e[_0x48c8('0x58')],[_0x48c8('0x60'),'id'])||{})[_0x48c8('0x9f')](function(_0x1ff1f0){for(var _0x382e68=0x0;_0x382e68<_0x2e3b6e[_0x48c8('0x58')]['ids'][_0x48c8('0x41')];_0x382e68+=0x1){socket[_0x48c8('0xa0')](_0x48c8('0xa1'),{'UserId':Number(_0x2e3b6e['body'][_0x48c8('0x60')][_0x382e68]),'CmListId':Number(_0x2e3b6e[_0x48c8('0x51')]['id'])});}return _0x1ff1f0;});}})[_0x48c8('0x2c')](respondWithResult(_0x1c4036,null))[_0x48c8('0x4f')](handleError(_0x1c4036,null));};exports[_0x48c8('0xa2')]=function(_0x3b60e0,_0x1949dd,_0x3ba771){return db[_0x48c8('0x35')][_0x48c8('0x55')]({'where':{'id':_0x3b60e0[_0x48c8('0x51')]['id']}})['then'](handleEntityNotFound(_0x1949dd,null))[_0x48c8('0x2c')](function(_0x55b59d){if(_0x55b59d){return _0x55b59d[_0x48c8('0xa2')](_0x3b60e0[_0x48c8('0x3d')][_0x48c8('0x60')])[_0x48c8('0x2c')](function(){if(_[_0x48c8('0x63')](_0x3b60e0[_0x48c8('0x3d')][_0x48c8('0x60')])){for(var _0x2089e0=0x0;_0x2089e0<_0x3b60e0[_0x48c8('0x3d')][_0x48c8('0x60')][_0x48c8('0x41')];_0x2089e0+=0x1){socket[_0x48c8('0xa0')]('userCmList:remove',{'UserId':Number(_0x3b60e0[_0x48c8('0x3d')][_0x48c8('0x60')][_0x2089e0]),'CmListId':Number(_0x3b60e0[_0x48c8('0x51')]['id'])});}}else{socket['emit'](_0x48c8('0xa3'),{'UserId':Number(_0x3b60e0[_0x48c8('0x3d')][_0x48c8('0x60')]),'CmListId':Number(_0x3b60e0[_0x48c8('0x51')]['id'])});}});}})[_0x48c8('0x2c')](respondWithStatusCode(_0x1949dd,null))[_0x48c8('0x4f')](handleError(_0x1949dd,null));};exports[_0x48c8('0xa4')]=function(_0x424718,_0xfa37d0,_0x630c44){var _0x4c3065={};var _0x56d390={};var _0x2be802;var _0x523cdc;return db[_0x48c8('0x35')][_0x48c8('0x5d')]({'where':{'id':_0x424718[_0x48c8('0x51')]['id']}})['then'](handleEntityNotFound(_0xfa37d0,null))[_0x48c8('0x2c')](function(_0x671046){if(_0x671046){_0x2be802=_0x671046;_0x56d390[_0x48c8('0x3a')]=_['keys'](db[_0x48c8('0xa5')][_0x48c8('0x36')]);_0x56d390['query']=_['keys'](_0x424718[_0x48c8('0x3d')]);_0x56d390[_0x48c8('0x3e')]=_[_0x48c8('0x52')](_0x56d390[_0x48c8('0x3a')],_0x56d390[_0x48c8('0x3d')]);_0x4c3065[_0x48c8('0x3f')]=_[_0x48c8('0x52')](_0x56d390[_0x48c8('0x3a')],qs['fields'](_0x424718['query'][_0x48c8('0x40')]));_0x4c3065['attributes']=_0x4c3065[_0x48c8('0x3f')][_0x48c8('0x41')]?_0x4c3065[_0x48c8('0x3f')]:_0x56d390[_0x48c8('0x3a')];_0x4c3065[_0x48c8('0x5e')]=qs[_0x48c8('0x44')](_0x424718[_0x48c8('0x3d')][_0x48c8('0x44')]);_0x4c3065[_0x48c8('0x45')]=qs[_0x48c8('0x3e')](_['pick'](_0x424718[_0x48c8('0x3d')],_0x56d390[_0x48c8('0x3e')]));if(_0x424718['query']['filter']){_0x4c3065[_0x48c8('0x45')]=_[_0x48c8('0x48')](_0x4c3065[_0x48c8('0x45')],{'$or':_[_0x48c8('0x3b')](_0x4c3065['attributes'],function(_0x98ef7c){var _0x4db29b={};_0x4db29b[_0x98ef7c]={'$like':'%'+_0x424718[_0x48c8('0x3d')]['filter']+'%'};return _0x4db29b;})});}_0x4c3065=_['merge']({},_0x4c3065,_0x424718[_0x48c8('0x4a')]);return _0x2be802['getAgents'](_0x4c3065);}})[_0x48c8('0x2c')](function(_0x3047d4){if(_0x3047d4){_0x523cdc=_0x3047d4[_0x48c8('0x41')];if(!_0x424718['query'][_0x48c8('0x42')]('nolimit')){_0x4c3065[_0x48c8('0x25')]=qs[_0x48c8('0x25')](_0x424718[_0x48c8('0x3d')]['limit']);_0x4c3065[_0x48c8('0x23')]=qs[_0x48c8('0x23')](_0x424718[_0x48c8('0x3d')][_0x48c8('0x23')]);}return _0x2be802[_0x48c8('0xa4')](_0x4c3065);}})['then'](function(_0x491be6){if(_0x491be6){return _0x491be6?{'count':_0x523cdc,'rows':_0x491be6}:null;}})['then'](respondWithResult(_0xfa37d0,null))[_0x48c8('0x4f')](handleError(_0xfa37d0,null));};function handleQuery(_0x1faca5){logger[_0x48c8('0xa6')](_0x1faca5);return db[_0x48c8('0x90')]['query'](_0x1faca5)[_0x48c8('0x9f')](function(_0x55efb9){csv_results[_0x48c8('0x6a')](_0x55efb9);})['catch'](function(_0x308ba3){logger[_0x48c8('0x31')](_0x308ba3[_0x48c8('0x6b')]);});}
\ No newline at end of file
+var _0x9bd1=['role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','getDispositions','findOne','nolimit','map','removeDispositions','ids','CmContact','isArray','tags','join','push','omit','success','dataValues','errors','message','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','getContactsCsv','ContactItemType','alias','select','from','cm_contacts','field','c.cf_','customField_','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','additionalPhone_','description_additionalPhone_','toString','each','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','list_%d_%s.csv','download','addCustomField','sequelize','transaction','Sequelize','TEXT','text','number','BOOLEAN','queryInterface','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','User','getAgents','info','eml-format','rimraf','moment','bluebird','mustache','path','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./cmList.socket','register','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','then','get','Lists','name','send','index','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','CmList','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x358d28,_0x2819be){var _0x849e2=function(_0x344cae){while(--_0x344cae){_0x358d28['push'](_0x358d28['shift']());}};_0x849e2(++_0x2819be);}(_0x9bd1,0x17f));var _0x19bd=function(_0x3e5c7a,_0x5e1081){_0x3e5c7a=_0x3e5c7a-0x0;var _0x3ad833=_0x9bd1[_0x3e5c7a];return _0x3ad833;};'use strict';var emlformat=require(_0x19bd('0x0'));var rimraf=require(_0x19bd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x19bd('0x2'));var BPromise=require(_0x19bd('0x3'));var Mustache=require(_0x19bd('0x4'));var util=require('util');var path=require(_0x19bd('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x19bd('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x19bd('0x7'));var squel=require(_0x19bd('0x8'));var crypto=require('crypto');var jsforce=require(_0x19bd('0x9'));var deskjs=require(_0x19bd('0xa'));var toCsv=require(_0x19bd('0xb'));var querystring=require(_0x19bd('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x19bd('0xd'));var qs=require(_0x19bd('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x19bd('0xf'))('api');var utils=require(_0x19bd('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x19bd('0x11'));var db=require(_0x19bd('0x12'))['db'];var csv_results;config[_0x19bd('0x13')]=_[_0x19bd('0x14')](config[_0x19bd('0x13')],{'host':_0x19bd('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x19bd('0x13')]));require(_0x19bd('0x16'))[_0x19bd('0x17')](socket);function respondWithStatusCode(_0xce9ad9,_0x4b1691){_0x4b1691=_0x4b1691||0xcc;return function(_0xaf11e5){if(_0xaf11e5){return _0xce9ad9[_0x19bd('0x18')](_0x4b1691);}return _0xce9ad9[_0x19bd('0x19')](_0x4b1691)[_0x19bd('0x1a')]();};}function respondWithResult(_0x5a5002,_0x4e2294){_0x4e2294=_0x4e2294||0xc8;return function(_0x5bb01c){if(_0x5bb01c){return _0x5a5002[_0x19bd('0x19')](_0x4e2294)['json'](_0x5bb01c);}};}function respondWithFilteredResult(_0xb485b8,_0x558611){return function(_0x163398){if(_0x163398){var _0x5f07f1=typeof _0x558611['offset']===_0x19bd('0x1b')&&typeof _0x558611[_0x19bd('0x1c')]===_0x19bd('0x1b');var _0x564cc5=_0x163398[_0x19bd('0x1d')];var _0x17653d=_0x5f07f1?0x0:_0x558611[_0x19bd('0x1e')];var _0x131f3c=_0x5f07f1?_0x163398[_0x19bd('0x1d')]:_0x558611[_0x19bd('0x1e')]+_0x558611['limit'];var _0x48a39a;if(_0x131f3c>=_0x564cc5){_0x131f3c=_0x564cc5;_0x48a39a=0xc8;}else{_0x48a39a=0xce;}_0xb485b8['status'](_0x48a39a);return _0xb485b8[_0x19bd('0x1f')](_0x19bd('0x20'),_0x17653d+'-'+_0x131f3c+'/'+_0x564cc5)[_0x19bd('0x21')](_0x163398);}return null;};}function patchUpdates(_0x18f265){return function(_0x39db8f){try{jsonpatch[_0x19bd('0x22')](_0x39db8f,_0x18f265,!![]);}catch(_0x180799){return BPromise[_0x19bd('0x23')](_0x180799);}return _0x39db8f[_0x19bd('0x24')]();};}function saveUpdates(_0x5e6b7d,_0x481ed1){return function(_0x5e0ee3){if(_0x5e0ee3){return _0x5e0ee3[_0x19bd('0x25')](_0x5e6b7d)['then'](function(_0x5329b2){return _0x5329b2;});}return null;};}function removeEntity(_0x4e713f,_0x10d002){return function(_0x4952b2){if(_0x4952b2){return _0x4952b2[_0x19bd('0x26')]()[_0x19bd('0x27')](function(){var _0x543d16=_0x4952b2[_0x19bd('0x28')]({'plain':!![]});var _0x3eacb2=_0x19bd('0x29');return db['UserProfileResource'][_0x19bd('0x26')]({'where':{'type':_0x3eacb2,'resourceId':_0x543d16['id']}})[_0x19bd('0x27')](function(){return _0x4952b2;});})[_0x19bd('0x27')](function(){_0x4e713f[_0x19bd('0x19')](0xcc)[_0x19bd('0x1a')]();});}};}function handleEntityNotFound(_0x1c42cb,_0x52927c){return function(_0xa06ee5){if(!_0xa06ee5){_0x1c42cb['sendStatus'](0x194);}return _0xa06ee5;};}function handleError(_0x5ca5e1,_0x5275ce){_0x5275ce=_0x5275ce||0x1f4;return function(_0x4e605a){logger['error'](_0x4e605a['stack']);if(_0x4e605a[_0x19bd('0x2a')]){delete _0x4e605a[_0x19bd('0x2a')];}_0x5ca5e1['status'](_0x5275ce)[_0x19bd('0x2b')](_0x4e605a);};}exports[_0x19bd('0x2c')]=function(_0x3ca211,_0x54f531){var _0x1d8d64={},_0x3e60bc={},_0x1e2289={'count':0x0,'rows':[]};var _0x5a0499=_['map'](db['CmList']['rawAttributes'],function(_0x3cbee3){return{'name':_0x3cbee3['fieldName'],'type':_0x3cbee3[_0x19bd('0x2d')]['key']};});_0x3e60bc[_0x19bd('0x2e')]=_['map'](_0x5a0499,_0x19bd('0x2a'));_0x3e60bc[_0x19bd('0x2f')]=_['keys'](_0x3ca211[_0x19bd('0x2f')]);_0x3e60bc[_0x19bd('0x30')]=_[_0x19bd('0x31')](_0x3e60bc[_0x19bd('0x2e')],_0x3e60bc[_0x19bd('0x2f')]);_0x1d8d64[_0x19bd('0x32')]=_[_0x19bd('0x31')](_0x3e60bc['model'],qs[_0x19bd('0x33')](_0x3ca211['query'][_0x19bd('0x33')]));_0x1d8d64[_0x19bd('0x32')]=_0x1d8d64[_0x19bd('0x32')][_0x19bd('0x34')]?_0x1d8d64[_0x19bd('0x32')]:_0x3e60bc[_0x19bd('0x2e')];if(!_0x3ca211[_0x19bd('0x2f')][_0x19bd('0x35')]('nolimit')){_0x1d8d64['limit']=qs[_0x19bd('0x1c')](_0x3ca211[_0x19bd('0x2f')]['limit']);_0x1d8d64['offset']=qs[_0x19bd('0x1e')](_0x3ca211['query'][_0x19bd('0x1e')]);}_0x1d8d64[_0x19bd('0x36')]=qs['sort'](_0x3ca211[_0x19bd('0x2f')][_0x19bd('0x37')]);_0x1d8d64[_0x19bd('0x38')]=qs['filters'](_[_0x19bd('0x39')](_0x3ca211[_0x19bd('0x2f')],_0x3e60bc['filters']),_0x5a0499);if(_0x3ca211[_0x19bd('0x2f')][_0x19bd('0x3a')]){_0x1d8d64[_0x19bd('0x38')]=_[_0x19bd('0x3b')](_0x1d8d64[_0x19bd('0x38')],{'$or':_['map'](_0x5a0499,function(_0x5351d7){if(_0x5351d7[_0x19bd('0x2d')]!=='VIRTUAL'){var _0x4a0f49={};_0x4a0f49[_0x5351d7[_0x19bd('0x2a')]]={'$like':'%'+_0x3ca211[_0x19bd('0x2f')][_0x19bd('0x3a')]+'%'};return _0x4a0f49;}})});}_0x1d8d64=_['merge']({},_0x1d8d64,_0x3ca211[_0x19bd('0x3c')]);var _0x5859e9={'where':_0x1d8d64[_0x19bd('0x38')]};return db[_0x19bd('0x3d')][_0x19bd('0x1d')](_0x5859e9)[_0x19bd('0x27')](function(_0xbfd7f8){_0x1e2289[_0x19bd('0x1d')]=_0xbfd7f8;if(_0x3ca211['query'][_0x19bd('0x3e')]){_0x1d8d64[_0x19bd('0x3f')]=[{'all':!![]}];}return db[_0x19bd('0x3d')][_0x19bd('0x40')](_0x1d8d64);})[_0x19bd('0x27')](function(_0x2c9ef6){_0x1e2289[_0x19bd('0x41')]=_0x2c9ef6;return _0x1e2289;})[_0x19bd('0x27')](respondWithFilteredResult(_0x54f531,_0x1d8d64))[_0x19bd('0x42')](handleError(_0x54f531,null));};exports[_0x19bd('0x43')]=function(_0x5368ec,_0x37d9bb){var _0x13b1e0={'raw':![],'where':{'id':_0x5368ec[_0x19bd('0x44')]['id']}},_0x3a5873={};_0x3a5873[_0x19bd('0x2e')]=_[_0x19bd('0x45')](db[_0x19bd('0x3d')][_0x19bd('0x46')]);_0x3a5873['query']=_[_0x19bd('0x45')](_0x5368ec[_0x19bd('0x2f')]);_0x3a5873[_0x19bd('0x30')]=_[_0x19bd('0x31')](_0x3a5873['model'],_0x3a5873[_0x19bd('0x2f')]);_0x13b1e0[_0x19bd('0x32')]=_[_0x19bd('0x31')](_0x3a5873[_0x19bd('0x2e')],qs[_0x19bd('0x33')](_0x5368ec[_0x19bd('0x2f')][_0x19bd('0x33')]));_0x13b1e0[_0x19bd('0x32')]=_0x13b1e0[_0x19bd('0x32')][_0x19bd('0x34')]?_0x13b1e0['attributes']:_0x3a5873['model'];if(_0x5368ec[_0x19bd('0x2f')][_0x19bd('0x3e')]){_0x13b1e0['include']=[{'all':!![]}];}_0x13b1e0=_['merge']({},_0x13b1e0,_0x5368ec[_0x19bd('0x3c')]);return db['CmList'][_0x19bd('0x47')](_0x13b1e0)[_0x19bd('0x27')](handleEntityNotFound(_0x37d9bb,null))[_0x19bd('0x27')](respondWithResult(_0x37d9bb,null))[_0x19bd('0x42')](handleError(_0x37d9bb,null));};exports[_0x19bd('0x48')]=function(_0x3e57d7,_0x1eb804){return db[_0x19bd('0x3d')][_0x19bd('0x48')](_0x3e57d7[_0x19bd('0x49')],{})[_0x19bd('0x27')](function(_0x492458){var _0x3de7a4=_0x3e57d7[_0x19bd('0x4a')][_0x19bd('0x28')]({'plain':!![]});if(!_0x3de7a4)throw new Error(_0x19bd('0x4b'));if(_0x3de7a4[_0x19bd('0x4c')]==='user'){var _0x42a135=_0x492458[_0x19bd('0x28')]({'plain':!![]});var _0xaaf0ee=_0x19bd('0x29');return db[_0x19bd('0x4d')][_0x19bd('0x47')]({'where':{'name':_0xaaf0ee,'userProfileId':_0x3de7a4[_0x19bd('0x4e')]},'raw':!![]})[_0x19bd('0x27')](function(_0x5a5c25){if(_0x5a5c25&&_0x5a5c25['autoAssociation']===0x0){return db['UserProfileResource'][_0x19bd('0x48')]({'name':_0x42a135[_0x19bd('0x2a')],'resourceId':_0x42a135['id'],'type':_0x5a5c25['name'],'sectionId':_0x5a5c25['id']},{})[_0x19bd('0x27')](function(){return _0x492458;});}else{return _0x492458;}})['catch'](function(_0x2e9208){logger[_0x19bd('0x4f')](_0x19bd('0x50'),_0x2e9208);throw _0x2e9208;});}return _0x492458;})[_0x19bd('0x27')](respondWithResult(_0x1eb804,0xc9))[_0x19bd('0x42')](handleError(_0x1eb804,null));};exports['update']=function(_0x48144e,_0x1b96f6){if(_0x48144e[_0x19bd('0x49')]['id']){delete _0x48144e['body']['id'];}return db[_0x19bd('0x3d')]['find']({'where':{'id':_0x48144e[_0x19bd('0x44')]['id']}})[_0x19bd('0x27')](handleEntityNotFound(_0x1b96f6,null))[_0x19bd('0x27')](saveUpdates(_0x48144e['body'],null))[_0x19bd('0x27')](respondWithResult(_0x1b96f6,null))[_0x19bd('0x42')](handleError(_0x1b96f6,null));};exports[_0x19bd('0x26')]=function(_0x3096a4,_0x1f6d9d){return db[_0x19bd('0x3d')][_0x19bd('0x47')]({'where':{'id':_0x3096a4[_0x19bd('0x44')]['id']}})[_0x19bd('0x27')](handleEntityNotFound(_0x1f6d9d,null))['then'](removeEntity(_0x1f6d9d,null))[_0x19bd('0x42')](handleError(_0x1f6d9d,null));};exports['describe']=function(_0x42103f,_0x11494b){return db[_0x19bd('0x3d')][_0x19bd('0x51')]()['then'](respondWithResult(_0x11494b,null))[_0x19bd('0x42')](handleError(_0x11494b,null));};exports[_0x19bd('0x52')]=function(_0x538555,_0x180c8f,_0x33be01){if(_0x538555[_0x19bd('0x49')]['id']){delete _0x538555[_0x19bd('0x49')]['id'];}return db[_0x19bd('0x3d')]['find']({'where':{'id':_0x538555['params']['id']}})['then'](handleEntityNotFound(_0x180c8f,null))[_0x19bd('0x27')](function(_0x516a86){if(_0x516a86){_0x538555[_0x19bd('0x49')][_0x19bd('0x53')]=_0x516a86['id'];return db[_0x19bd('0x54')]['create'](_0x538555[_0x19bd('0x49')]);}})[_0x19bd('0x27')](respondWithResult(_0x180c8f,null))['catch'](handleError(_0x180c8f,null));};exports[_0x19bd('0x55')]=function(_0x597265,_0x424719,_0x41f8ec){var _0x45a11d={'raw':![],'where':{}};var _0x127f7e={};var _0x450b9c={'count':0x0,'rows':[]};return db[_0x19bd('0x3d')][_0x19bd('0x56')]({'where':{'id':_0x597265[_0x19bd('0x44')]['id']}})['then'](handleEntityNotFound(_0x424719,null))[_0x19bd('0x27')](function(_0x1ba195){if(_0x1ba195){_0x127f7e[_0x19bd('0x2e')]=_['keys'](db['Disposition'][_0x19bd('0x46')]);_0x127f7e[_0x19bd('0x2f')]=_[_0x19bd('0x45')](_0x597265[_0x19bd('0x2f')]);_0x127f7e[_0x19bd('0x30')]=_[_0x19bd('0x31')](_0x127f7e[_0x19bd('0x2e')],_0x127f7e['query']);_0x45a11d[_0x19bd('0x32')]=_[_0x19bd('0x31')](_0x127f7e[_0x19bd('0x2e')],qs[_0x19bd('0x33')](_0x597265[_0x19bd('0x2f')][_0x19bd('0x33')]));_0x45a11d[_0x19bd('0x32')]=_0x45a11d[_0x19bd('0x32')][_0x19bd('0x34')]?_0x45a11d['attributes']:_0x127f7e[_0x19bd('0x2e')];if(!_0x597265[_0x19bd('0x2f')][_0x19bd('0x35')](_0x19bd('0x57'))){_0x45a11d['limit']=qs[_0x19bd('0x1c')](_0x597265[_0x19bd('0x2f')]['limit']);_0x45a11d[_0x19bd('0x1e')]=qs[_0x19bd('0x1e')](_0x597265['query'][_0x19bd('0x1e')]);}_0x45a11d[_0x19bd('0x36')]=qs[_0x19bd('0x37')](_0x597265[_0x19bd('0x2f')][_0x19bd('0x37')]);_0x45a11d[_0x19bd('0x38')]=qs[_0x19bd('0x30')](_[_0x19bd('0x39')](_0x597265[_0x19bd('0x2f')],_0x127f7e[_0x19bd('0x30')]));_0x45a11d[_0x19bd('0x38')]['ListId']=_0x1ba195['id'];if(_0x597265['query'][_0x19bd('0x3a')]){_0x45a11d['where']=_[_0x19bd('0x3b')](_0x45a11d[_0x19bd('0x38')],{'$or':_[_0x19bd('0x58')](_0x45a11d[_0x19bd('0x32')],function(_0x2deffb){var _0x221178={};_0x221178[_0x2deffb]={'$like':'%'+_0x597265[_0x19bd('0x2f')][_0x19bd('0x3a')]+'%'};return _0x221178;})});}_0x45a11d=_[_0x19bd('0x3b')]({},_0x45a11d,_0x597265[_0x19bd('0x3c')]);return db[_0x19bd('0x54')][_0x19bd('0x1d')]({'where':_0x45a11d[_0x19bd('0x38')]})[_0x19bd('0x27')](function(_0x4c85f7){_0x450b9c[_0x19bd('0x1d')]=_0x4c85f7;if(_0x597265[_0x19bd('0x2f')][_0x19bd('0x3e')]){_0x45a11d[_0x19bd('0x3f')]=[{'all':!![]}];}return db[_0x19bd('0x54')][_0x19bd('0x40')](_0x45a11d);})[_0x19bd('0x27')](function(_0x39a875){_0x450b9c[_0x19bd('0x41')]=_0x39a875;return _0x450b9c;});}})[_0x19bd('0x27')](respondWithFilteredResult(_0x424719,_0x45a11d))['catch'](handleError(_0x424719,null));};exports[_0x19bd('0x59')]=function(_0x257dfd,_0x49798b,_0x24a6ea){return db['CmList'][_0x19bd('0x47')]({'where':{'id':_0x257dfd[_0x19bd('0x44')]['id']}})[_0x19bd('0x27')](handleEntityNotFound(_0x49798b,null))['then'](function(_0x260e7e){if(_0x260e7e){return _0x260e7e[_0x19bd('0x59')](_0x257dfd[_0x19bd('0x2f')][_0x19bd('0x5a')]);}})[_0x19bd('0x27')](respondWithStatusCode(_0x49798b,null))[_0x19bd('0x42')](handleError(_0x49798b,null));};exports['addContacts']=function(_0x2a8155,_0x328e9a,_0xac1aef){return db[_0x19bd('0x3d')][_0x19bd('0x47')]({'where':{'id':_0x2a8155[_0x19bd('0x44')]['id']}})[_0x19bd('0x27')](handleEntityNotFound(_0x328e9a,null))[_0x19bd('0x27')](function(_0x44145d){if(_0x44145d){var _0x5ee0bc=[];var _0x504ab5={'success':[],'errors':[]};return db[_0x19bd('0x5b')][_0x19bd('0x51')]()[_0x19bd('0x27')](function(_0x304d77){if(_0x2a8155[_0x19bd('0x49')]['tags']&&_[_0x19bd('0x5c')](_0x2a8155[_0x19bd('0x49')][_0x19bd('0x5d')])){if(_0x2a8155[_0x19bd('0x49')][_0x19bd('0x5d')]['length']){_0x2a8155[_0x19bd('0x49')][_0x19bd('0x5d')]=_0x2a8155[_0x19bd('0x49')][_0x19bd('0x5d')][_0x19bd('0x5e')](';')+';';}else{_0x2a8155['body']['tags']=null;}}else{_0x2a8155[_0x19bd('0x49')]['tags']=null;}if(_0x2a8155[_0x19bd('0x49')]&&_[_0x19bd('0x5c')](_0x2a8155['body'])){for(var _0x185152=0x0;_0x185152<_0x2a8155[_0x19bd('0x49')]['length'];_0x185152+=0x1){_0x2a8155[_0x19bd('0x49')][_0x185152]['ListId']=_0x2a8155['params']['id'];_0x5ee0bc[_0x19bd('0x5f')](_0x2a8155['body'][_0x185152]);}return BPromise['each'](_0x5ee0bc,function(_0x365f8e){return db[_0x19bd('0x5b')][_0x19bd('0x48')](_[_0x19bd('0x60')](_0x365f8e,['ids','id'])||{},{'fields':_[_0x19bd('0x45')](_0x304d77),'raw':!![]})[_0x19bd('0x27')](function(_0x334f74){_0x504ab5[_0x19bd('0x61')]['push'](_0x334f74[_0x19bd('0x62')]);})[_0x19bd('0x42')](function(_0x1d1ce2){_0x504ab5[_0x19bd('0x63')][_0x19bd('0x5f')]({'data':_0x365f8e,'error':_0x1d1ce2[_0x19bd('0x64')]});});})[_0x19bd('0x27')](function(_0x25f651){return _0x504ab5;})[_0x19bd('0x42')](function(_0x25b34f){return _0x25b34f;});}else{_0x328e9a[_0x19bd('0x19')](0x190)['json']({'message':'Malformed\x20request\x20syntax'});}});}})[_0x19bd('0x27')](respondWithResult(_0x328e9a,null))['catch'](handleError(_0x328e9a,null));};exports[_0x19bd('0x65')]=function(_0x25f0f0,_0x592638,_0x58b096){var _0x581707;return db[_0x19bd('0x3d')][_0x19bd('0x47')]({'where':{'id':_0x25f0f0[_0x19bd('0x44')]['id']},'include':[{'model':db[_0x19bd('0x66')],'as':_0x19bd('0x67')}]})[_0x19bd('0x27')](handleEntityNotFound(_0x592638,null))['then'](function(_0x45311c){if(_0x45311c){_0x581707=_0x45311c;return db[_0x19bd('0x5b')][_0x19bd('0x46')];}})[_0x19bd('0x27')](function(_0x3ca064){if(_0x3ca064){var _0x470399={};var _0x178ebd={};_0x178ebd[_0x19bd('0x2e')]=_[_0x19bd('0x68')](_[_0x19bd('0x45')](_0x3ca064),_[_0x19bd('0x58')](_0x581707[_0x19bd('0x67')],function(_0x5b7878){return util[_0x19bd('0x69')](_0x19bd('0x6a'),_0x5b7878['id']);}));_0x178ebd[_0x19bd('0x2f')]=_[_0x19bd('0x45')](_0x25f0f0[_0x19bd('0x2f')]);_0x178ebd[_0x19bd('0x30')]=_[_0x19bd('0x31')](_0x178ebd[_0x19bd('0x2e')],_0x178ebd[_0x19bd('0x2f')]);_0x470399['attributes']=_['intersection'](_0x178ebd[_0x19bd('0x2e')],qs[_0x19bd('0x33')](_0x25f0f0[_0x19bd('0x2f')]['fields']));_0x470399[_0x19bd('0x32')]=_0x470399[_0x19bd('0x32')][_0x19bd('0x34')]?_0x470399[_0x19bd('0x32')]:_0x178ebd[_0x19bd('0x2e')];if(!_0x25f0f0[_0x19bd('0x2f')]['hasOwnProperty'](_0x19bd('0x57'))){_0x470399[_0x19bd('0x1c')]=qs[_0x19bd('0x1c')](_0x25f0f0[_0x19bd('0x2f')][_0x19bd('0x1c')]);_0x470399[_0x19bd('0x1e')]=qs[_0x19bd('0x1e')](_0x25f0f0['query'][_0x19bd('0x1e')]);}_0x470399[_0x19bd('0x36')]=qs['sort'](_0x25f0f0[_0x19bd('0x2f')]['sort']);_0x470399[_0x19bd('0x38')]=qs[_0x19bd('0x30')](_['pick'](_0x25f0f0[_0x19bd('0x2f')],_0x178ebd[_0x19bd('0x30')]));_0x470399[_0x19bd('0x6b')]=!![];if(_0x25f0f0['query'][_0x19bd('0x3a')]){_0x470399[_0x19bd('0x38')]=_[_0x19bd('0x3b')](_0x470399[_0x19bd('0x38')],{'$or':_['map'](_0x470399['attributes'],function(_0x2ae4ac){var _0x17fca1={};_0x17fca1[_0x2ae4ac]={'$like':'%'+_0x25f0f0[_0x19bd('0x2f')][_0x19bd('0x3a')]+'%'};return _0x17fca1;})});}_0x470399=_[_0x19bd('0x3b')]({},_0x470399,_0x25f0f0[_0x19bd('0x3c')]);return _0x581707['getContacts'](_0x470399);}})['then'](respondWithResult(_0x592638,null))[_0x19bd('0x42')](handleError(_0x592638,null));};exports[_0x19bd('0x6c')]=function(_0x18bef4,_0x3f7da3,_0x45e2f3){var _0x5aff9f;var _0xeee2d1;var _0x44283f;var _0x3efa7a=_0x18bef4[_0x19bd('0x44')]['id'];csv_results=[];return db[_0x19bd('0x6d')][_0x19bd('0x40')]({'attributes':['id','name'],'raw':!![],'order':['OrderBy']})[_0x19bd('0x27')](function(_0x1b7b33){_0x5aff9f=_0x1b7b33;var _0x2247f9=_[_0x19bd('0x45')](db[_0x19bd('0x5b')][_0x19bd('0x46')]);return db['CmCustomField'][_0x19bd('0x40')]({'raw':!![],'attributes':['id',_0x19bd('0x6e')]})[_0x19bd('0x27')](function(_0x768401){_0xeee2d1=_0x768401;var _0x94742=squel[_0x19bd('0x6f')]()[_0x19bd('0x33')](_0x2247f9)[_0x19bd('0x70')](_0x19bd('0x71'),'c')['where']('c.ListId\x20=\x20?',_0x3efa7a)[_0x19bd('0x38')]('c.deletedAt\x20is\x20null')['distinct']();for(var _0x5a18b4=0x0;_0x5a18b4<_0xeee2d1[_0x19bd('0x34')];_0x5a18b4++){_0x94742[_0x19bd('0x72')](_0x19bd('0x73')+_0xeee2d1[_0x5a18b4]['id'],_0x19bd('0x74')+_0xeee2d1[_0x5a18b4]['alias']);}for(var _0x5a18b4=0x0;_0x5a18b4<_0x5aff9f['length'];_0x5a18b4++){_0x94742[_0x19bd('0x72')](squel[_0x19bd('0x6f')]()[_0x19bd('0x72')]('item')[_0x19bd('0x70')](_0x19bd('0x75'))[_0x19bd('0x38')](_0x19bd('0x76'),_0x5aff9f[_0x5a18b4]['id'])[_0x19bd('0x38')](_0x19bd('0x77')),_0x19bd('0x78')+_0x5aff9f[_0x5a18b4][_0x19bd('0x2a')]);_0x94742[_0x19bd('0x72')](squel[_0x19bd('0x6f')]()[_0x19bd('0x72')]('description')['from']('cm_contact_has_items')[_0x19bd('0x38')](_0x19bd('0x76'),_0x5aff9f[_0x5a18b4]['id'])['where']('CmContactId\x20=\x20c.id'),_0x19bd('0x79')+_0x5aff9f[_0x5a18b4][_0x19bd('0x2a')]);}var _0x37ff97=[];_0x37ff97[_0x19bd('0x5f')](_0x94742[_0x19bd('0x7a')]());BPromise[_0x19bd('0x7b')](_0x37ff97,handleQuery)[_0x19bd('0x27')](function(_0x4f0a70){handleQuery(_0x94742[_0x19bd('0x7a')]());var _0x37decb=csv_results[0x0];if(!_[_0x19bd('0x7c')](_0x37decb)){var _0x19834d=toCsv(_0x37decb);var _0x3e4a2a=Date[_0x19bd('0x7d')]();fs[_0x19bd('0x7e')](util['format'](_0x19bd('0x7f'),_0x3efa7a,_0x3e4a2a),_0x19834d);_0x3f7da3[_0x19bd('0x80')]('Content-disposition',_0x19bd('0x81')+util[_0x19bd('0x69')](_0x19bd('0x82'),_0x3efa7a,_0x3e4a2a));_0x3f7da3[_0x19bd('0x80')]('Content-type','text/csv');return _0x3f7da3[_0x19bd('0x83')](util[_0x19bd('0x69')](_0x19bd('0x7f'),_0x3efa7a,_0x3e4a2a));}else{return _0x3f7da3[_0x19bd('0x18')](0xcc);}});});});};exports[_0x19bd('0x84')]=function(_0x36392e,_0x2194c6,_0x5357ca){var _0x41913c;delete _0x36392e['body']['id'];return db[_0x19bd('0x3d')][_0x19bd('0x56')]({'where':{'id':_0x36392e['params']['id']}})['then'](handleEntityNotFound(_0x2194c6,null))[_0x19bd('0x27')](function(_0xadf518){if(_0xadf518){return db[_0x19bd('0x85')][_0x19bd('0x86')](function(_0x566096){return db['CmCustomField'][_0x19bd('0x48')](_0x36392e[_0x19bd('0x49')],{'transaction':_0x566096})[_0x19bd('0x27')](function(_0x258344){_0x41913c=_0x258344;return _0xadf518['addCustomFields'](_0x258344,{'transaction':_0x566096});})[_0x19bd('0x27')](function(){var _0x14c179={'type':db[_0x19bd('0x87')][_0x19bd('0x88')],'transaction':_0x566096};switch(_0x36392e[_0x19bd('0x49')][_0x19bd('0x2d')]){case _0x19bd('0x89'):_0x14c179[_0x19bd('0x2d')]=db[_0x19bd('0x87')][_0x19bd('0x88')];break;case _0x19bd('0x8a'):_0x14c179[_0x19bd('0x2d')]=db['Sequelize']['INTEGER'];break;case'switch':_0x14c179[_0x19bd('0x2d')]=db[_0x19bd('0x87')][_0x19bd('0x8b')];_0x14c179['defaultValue']=![];break;default:}return db[_0x19bd('0x85')][_0x19bd('0x8c')]['addColumn']('cm_contacts',util[_0x19bd('0x69')](_0x19bd('0x8d'),_0x41913c['id']),_0x14c179);})[_0x19bd('0x27')](function(){return _0x41913c;});});}})[_0x19bd('0x27')](respondWithResult(_0x2194c6,null))['catch'](handleError(_0x2194c6,null));};exports[_0x19bd('0x8e')]=function(_0x514850,_0x57eca4,_0x79192a){var _0x202e25={};var _0x237423={};var _0x2b61bd;var _0x368da7;return db['CmList']['findOne']({'where':{'id':_0x514850['params']['id']}})[_0x19bd('0x27')](handleEntityNotFound(_0x57eca4,null))[_0x19bd('0x27')](function(_0x45b8f2){if(_0x45b8f2){_0x2b61bd=_0x45b8f2;_0x237423[_0x19bd('0x2e')]=_[_0x19bd('0x45')](db[_0x19bd('0x66')][_0x19bd('0x46')]);_0x237423[_0x19bd('0x2f')]=_[_0x19bd('0x45')](_0x514850['query']);_0x237423[_0x19bd('0x30')]=_[_0x19bd('0x31')](_0x237423[_0x19bd('0x2e')],_0x237423[_0x19bd('0x2f')]);_0x202e25[_0x19bd('0x32')]=_[_0x19bd('0x31')](_0x237423[_0x19bd('0x2e')],qs[_0x19bd('0x33')](_0x514850['query'][_0x19bd('0x33')]));_0x202e25[_0x19bd('0x32')]=_0x202e25[_0x19bd('0x32')][_0x19bd('0x34')]?_0x202e25[_0x19bd('0x32')]:_0x237423[_0x19bd('0x2e')];_0x202e25[_0x19bd('0x36')]=qs[_0x19bd('0x37')](_0x514850[_0x19bd('0x2f')]['sort']);_0x202e25[_0x19bd('0x38')]=qs[_0x19bd('0x30')](_['pick'](_0x514850[_0x19bd('0x2f')],_0x237423[_0x19bd('0x30')]));_0x202e25[_0x19bd('0x38')]=_['merge'](_0x202e25[_0x19bd('0x38')],{'$or':[{'ListId':_0x45b8f2['id']},{'ListId':null}]});if(_0x514850[_0x19bd('0x2f')][_0x19bd('0x3a')]){_0x202e25[_0x19bd('0x38')]=_['merge'](_0x202e25[_0x19bd('0x38')],{'$or':_[_0x19bd('0x58')](_0x202e25['attributes'],function(_0x510235){var _0x1e979a={};_0x1e979a[_0x510235]={'$like':'%'+_0x514850[_0x19bd('0x2f')][_0x19bd('0x3a')]+'%'};return _0x1e979a;})});}_0x202e25=_[_0x19bd('0x3b')]({},_0x202e25,_0x514850[_0x19bd('0x3c')]);return db[_0x19bd('0x66')][_0x19bd('0x8f')](_0x202e25);}})[_0x19bd('0x27')](respondWithResult(_0x57eca4,null))[_0x19bd('0x42')](handleError(_0x57eca4,null));};exports[_0x19bd('0x90')]=function(_0x13bafe,_0x18cf76){return db[_0x19bd('0x66')][_0x19bd('0x8f')]({'where':{'ListId':null}})[_0x19bd('0x27')](handleEntityNotFound(_0x18cf76,null))[_0x19bd('0x27')](function(_0x3dbf24){return _0x3dbf24;})[_0x19bd('0x27')](respondWithResult(_0x18cf76,null))['catch'](handleError(_0x18cf76,null));};exports['addAgents']=function(_0x90ce2a,_0x8b9906,_0x1be1fa){return db[_0x19bd('0x3d')][_0x19bd('0x47')]({'where':{'id':_0x90ce2a['params']['id']}})[_0x19bd('0x27')](handleEntityNotFound(_0x8b9906,null))[_0x19bd('0x27')](function(_0x15589b){if(_0x15589b){return _0x15589b[_0x19bd('0x91')](_0x90ce2a[_0x19bd('0x49')][_0x19bd('0x5a')],_[_0x19bd('0x60')](_0x90ce2a[_0x19bd('0x49')],['ids','id'])||{})[_0x19bd('0x92')](function(_0x2c2c27){for(var _0x1de88d=0x0;_0x1de88d<_0x90ce2a[_0x19bd('0x49')][_0x19bd('0x5a')][_0x19bd('0x34')];_0x1de88d+=0x1){socket[_0x19bd('0x93')](_0x19bd('0x94'),{'UserId':Number(_0x90ce2a[_0x19bd('0x49')]['ids'][_0x1de88d]),'CmListId':Number(_0x90ce2a[_0x19bd('0x44')]['id'])});}return _0x2c2c27;});}})['then'](respondWithResult(_0x8b9906,null))[_0x19bd('0x42')](handleError(_0x8b9906,null));};exports[_0x19bd('0x95')]=function(_0x103c9a,_0x7d9450,_0x450fd3){return db['CmList']['find']({'where':{'id':_0x103c9a[_0x19bd('0x44')]['id']}})[_0x19bd('0x27')](handleEntityNotFound(_0x7d9450,null))[_0x19bd('0x27')](function(_0x3750a9){if(_0x3750a9){return _0x3750a9['removeAgents'](_0x103c9a[_0x19bd('0x2f')]['ids'])['then'](function(){if(_[_0x19bd('0x5c')](_0x103c9a[_0x19bd('0x2f')]['ids'])){for(var _0x326c9f=0x0;_0x326c9f<_0x103c9a[_0x19bd('0x2f')][_0x19bd('0x5a')][_0x19bd('0x34')];_0x326c9f+=0x1){socket[_0x19bd('0x93')]('userCmList:remove',{'UserId':Number(_0x103c9a['query'][_0x19bd('0x5a')][_0x326c9f]),'CmListId':Number(_0x103c9a['params']['id'])});}}else{socket['emit']('userCmList:remove',{'UserId':Number(_0x103c9a[_0x19bd('0x2f')][_0x19bd('0x5a')]),'CmListId':Number(_0x103c9a[_0x19bd('0x44')]['id'])});}});}})[_0x19bd('0x27')](respondWithStatusCode(_0x7d9450,null))[_0x19bd('0x42')](handleError(_0x7d9450,null));};exports['getAgents']=function(_0x4c09d3,_0x404c35,_0x39d4da){var _0x41c0a8={};var _0x566cf1={};var _0x17ec32;var _0x1bd7fb;return db[_0x19bd('0x3d')][_0x19bd('0x56')]({'where':{'id':_0x4c09d3[_0x19bd('0x44')]['id']}})[_0x19bd('0x27')](handleEntityNotFound(_0x404c35,null))['then'](function(_0x1c9ec7){if(_0x1c9ec7){_0x17ec32=_0x1c9ec7;_0x566cf1[_0x19bd('0x2e')]=_[_0x19bd('0x45')](db[_0x19bd('0x96')][_0x19bd('0x46')]);_0x566cf1[_0x19bd('0x2f')]=_['keys'](_0x4c09d3[_0x19bd('0x2f')]);_0x566cf1[_0x19bd('0x30')]=_['intersection'](_0x566cf1[_0x19bd('0x2e')],_0x566cf1[_0x19bd('0x2f')]);_0x41c0a8[_0x19bd('0x32')]=_[_0x19bd('0x31')](_0x566cf1[_0x19bd('0x2e')],qs[_0x19bd('0x33')](_0x4c09d3['query'][_0x19bd('0x33')]));_0x41c0a8['attributes']=_0x41c0a8[_0x19bd('0x32')][_0x19bd('0x34')]?_0x41c0a8[_0x19bd('0x32')]:_0x566cf1['model'];_0x41c0a8[_0x19bd('0x36')]=qs[_0x19bd('0x37')](_0x4c09d3[_0x19bd('0x2f')][_0x19bd('0x37')]);_0x41c0a8[_0x19bd('0x38')]=qs[_0x19bd('0x30')](_[_0x19bd('0x39')](_0x4c09d3[_0x19bd('0x2f')],_0x566cf1[_0x19bd('0x30')]));if(_0x4c09d3['query'][_0x19bd('0x3a')]){_0x41c0a8[_0x19bd('0x38')]=_[_0x19bd('0x3b')](_0x41c0a8[_0x19bd('0x38')],{'$or':_[_0x19bd('0x58')](_0x41c0a8[_0x19bd('0x32')],function(_0x5d2802){var _0x1bea4a={};_0x1bea4a[_0x5d2802]={'$like':'%'+_0x4c09d3['query'][_0x19bd('0x3a')]+'%'};return _0x1bea4a;})});}_0x41c0a8=_[_0x19bd('0x3b')]({},_0x41c0a8,_0x4c09d3[_0x19bd('0x3c')]);return _0x17ec32[_0x19bd('0x97')](_0x41c0a8);}})[_0x19bd('0x27')](function(_0x14e311){if(_0x14e311){_0x1bd7fb=_0x14e311['length'];if(!_0x4c09d3[_0x19bd('0x2f')]['hasOwnProperty'](_0x19bd('0x57'))){_0x41c0a8[_0x19bd('0x1c')]=qs[_0x19bd('0x1c')](_0x4c09d3[_0x19bd('0x2f')][_0x19bd('0x1c')]);_0x41c0a8[_0x19bd('0x1e')]=qs[_0x19bd('0x1e')](_0x4c09d3[_0x19bd('0x2f')][_0x19bd('0x1e')]);}return _0x17ec32[_0x19bd('0x97')](_0x41c0a8);}})['then'](function(_0x27f9e2){if(_0x27f9e2){return _0x27f9e2?{'count':_0x1bd7fb,'rows':_0x27f9e2}:null;}})[_0x19bd('0x27')](respondWithResult(_0x404c35,null))[_0x19bd('0x42')](handleError(_0x404c35,null));};function handleQuery(_0x181aa9){logger[_0x19bd('0x98')](_0x181aa9);return db[_0x19bd('0x85')][_0x19bd('0x2f')](_0x181aa9)[_0x19bd('0x92')](function(_0x186342){csv_results['push'](_0x186342);})[_0x19bd('0x42')](function(_0x529ce1){logger[_0x19bd('0x4f')](_0x529ce1[_0x19bd('0x64')]);});}
\ No newline at end of file
index 71ef3fc..cd16092 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x1d2922,_0xdcb3e0){var _0x1d7211=function(_0x2becdf){while(--_0x2becdf){_0x1d2922['push'](_0x1d2922['shift']());}};_0x1d7211(++_0xdcb3e0);}(_0x7217,0x19e));var _0x7721=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0x7217[_0x38a7ac];return _0x53061a;};'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
+var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0x55ca,0x126));var _0xa55c=function(_0x21353c,_0x2ea587){_0x21353c=_0x21353c-0x0;var _0xa99120=_0x55ca[_0x21353c];return _0xa99120;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index 39a5978..c986a42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ea=['cm_lists','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList'];(function(_0x2cdec6,_0x39d4c8){var _0xa36703=function(_0x6bb8d4){while(--_0x6bb8d4){_0x2cdec6['push'](_0x2cdec6['shift']());}};_0xa36703(++_0x39d4c8);}(_0xd2ea,0x15f));var _0xad2e=function(_0x2f2307,_0x4d6880){_0x2f2307=_0x2f2307-0x0;var _0x2eb9da=_0xd2ea[_0x2f2307];return _0x2eb9da;};'use strict';var _=require(_0xad2e('0x0'));var util=require(_0xad2e('0x1'));var logger=require(_0xad2e('0x2'))(_0xad2e('0x3'));var moment=require(_0xad2e('0x4'));var BPromise=require('bluebird');var rp=require(_0xad2e('0x5'));var fs=require('fs');var path=require(_0xad2e('0x6'));var rimraf=require(_0xad2e('0x7'));var config=require(_0xad2e('0x8'));var attributes=require(_0xad2e('0x9'));module[_0xad2e('0xa')]=function(_0x29e97f,_0x592e8b){return _0x29e97f[_0xad2e('0xb')](_0xad2e('0xc'),attributes,{'tableName':_0xad2e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x41bb=['bluebird','request-promise','path','rimraf','./cmList.attributes','exports','cm_lists','lodash','util','api'];(function(_0xee66a7,_0x45c04d){var _0x1ca6c3=function(_0x2e6337){while(--_0x2e6337){_0xee66a7['push'](_0xee66a7['shift']());}};_0x1ca6c3(++_0x45c04d);}(_0x41bb,0xc5));var _0xb41b=function(_0x1ab695,_0x131a89){_0x1ab695=_0x1ab695-0x0;var _0xd92d5b=_0x41bb[_0x1ab695];return _0xd92d5b;};'use strict';var _=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var logger=require('../../config/logger')(_0xb41b('0x2'));var moment=require('moment');var BPromise=require(_0xb41b('0x3'));var rp=require(_0xb41b('0x4'));var fs=require('fs');var path=require(_0xb41b('0x5'));var rimraf=require(_0xb41b('0x6'));var config=require('../../config/environment');var attributes=require(_0xb41b('0x7'));module[_0xb41b('0x8')]=function(_0x2dbaa3,_0x50bc62){return _0x2dbaa3['define']('CmList',attributes,{'tableName':_0xb41b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9de5a9f..c0eab78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde7=['request\x20sent','CmList,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','info','CmList,\x20%s,\x20%s'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0xbde7,0x149));var _0x7bde=function(_0x414df0,_0x3b902f){_0x414df0=_0x414df0-0x0;var _0x2cf357=_0xbde7[_0x414df0];return _0x2cf357;};'use strict';var _=require('lodash');var util=require(_0x7bde('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7bde('0x1'));var fs=require('fs');var Redis=require(_0x7bde('0x2'));var db=require(_0x7bde('0x3'))['db'];var utils=require(_0x7bde('0x4'));var logger=require(_0x7bde('0x5'))(_0x7bde('0x6'));var config=require('../../config/environment');var jayson=require(_0x7bde('0x7'));var client=jayson[_0x7bde('0x8')]['http']({'port':0x232a});config[_0x7bde('0x9')]=_[_0x7bde('0xa')](config['redis'],{'host':_0x7bde('0xb'),'port':0x18eb});var socket=require(_0x7bde('0xc'))(new Redis(config[_0x7bde('0x9')]));require('./cmList.socket')[_0x7bde('0xd')](socket);function respondWithRpcPromise(_0x16f2a1,_0x55a7ea,_0xdc6329){return new BPromise(function(_0x3d41fe,_0x4a02f0){return client['request'](_0x16f2a1,_0xdc6329)['then'](function(_0x5ae6b7){logger[_0x7bde('0xe')](_0x7bde('0xf'),_0x55a7ea,_0x7bde('0x10'));logger['debug'](_0x7bde('0x11'),_0x55a7ea,'request\x20sent',JSON[_0x7bde('0x12')](_0x5ae6b7));if(_0x5ae6b7[_0x7bde('0x13')]){if(_0x5ae6b7[_0x7bde('0x13')]['code']===0x1f4){logger[_0x7bde('0x13')](_0x7bde('0xf'),_0x55a7ea,_0x5ae6b7[_0x7bde('0x13')][_0x7bde('0x14')]);return _0x4a02f0(_0x5ae6b7[_0x7bde('0x13')][_0x7bde('0x14')]);}logger[_0x7bde('0x13')](_0x7bde('0xf'),_0x55a7ea,_0x5ae6b7[_0x7bde('0x13')][_0x7bde('0x14')]);return _0x3d41fe(_0x5ae6b7[_0x7bde('0x13')][_0x7bde('0x14')]);}else{logger['info'](_0x7bde('0xf'),_0x55a7ea,_0x7bde('0x10'));_0x3d41fe(_0x5ae6b7[_0x7bde('0x15')][_0x7bde('0x14')]);}})[_0x7bde('0x16')](function(_0x25a22c){logger[_0x7bde('0x13')](_0x7bde('0xf'),_0x55a7ea,_0x25a22c);_0x4a02f0(_0x25a22c);});});}
\ No newline at end of file
+var _0x0ab6=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./cmList.socket','then','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','CmList,\x20%s,\x20%s','message','info','request\x20sent','catch','lodash','util'];(function(_0x28d965,_0x349580){var _0x5ab74a=function(_0x5d446f){while(--_0x5d446f){_0x28d965['push'](_0x28d965['shift']());}};_0x5ab74a(++_0x349580);}(_0x0ab6,0x1ce));var _0x60ab=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x0ab6[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x60ab('0x0'));var util=require(_0x60ab('0x1'));var moment=require('moment');var BPromise=require(_0x60ab('0x2'));var rs=require(_0x60ab('0x3'));var fs=require('fs');var Redis=require(_0x60ab('0x4'));var db=require(_0x60ab('0x5'))['db'];var utils=require(_0x60ab('0x6'));var logger=require(_0x60ab('0x7'))(_0x60ab('0x8'));var config=require(_0x60ab('0x9'));var jayson=require(_0x60ab('0xa'));var client=jayson[_0x60ab('0xb')][_0x60ab('0xc')]({'port':0x232a});config['redis']=_[_0x60ab('0xd')](config[_0x60ab('0xe')],{'host':_0x60ab('0xf'),'port':0x18eb});var socket=require(_0x60ab('0x10'))(new Redis(config[_0x60ab('0xe')]));require(_0x60ab('0x11'))['register'](socket);function respondWithRpcPromise(_0x24241a,_0x3d819a,_0x514d50){return new BPromise(function(_0x5a7447,_0x52e811){return client['request'](_0x24241a,_0x514d50)[_0x60ab('0x12')](function(_0x23d8d0){logger['info']('CmList,\x20%s,\x20%s',_0x3d819a,'request\x20sent');logger[_0x60ab('0x13')](_0x60ab('0x14'),_0x3d819a,'request\x20sent',JSON[_0x60ab('0x15')](_0x23d8d0));if(_0x23d8d0[_0x60ab('0x16')]){if(_0x23d8d0['error'][_0x60ab('0x17')]===0x1f4){logger['error'](_0x60ab('0x18'),_0x3d819a,_0x23d8d0[_0x60ab('0x16')][_0x60ab('0x19')]);return _0x52e811(_0x23d8d0[_0x60ab('0x16')][_0x60ab('0x19')]);}logger['error'](_0x60ab('0x18'),_0x3d819a,_0x23d8d0[_0x60ab('0x16')][_0x60ab('0x19')]);return _0x5a7447(_0x23d8d0['error'][_0x60ab('0x19')]);}else{logger[_0x60ab('0x1a')](_0x60ab('0x18'),_0x3d819a,_0x60ab('0x1b'));_0x5a7447(_0x23d8d0['result'][_0x60ab('0x19')]);}})[_0x60ab('0x1c')](function(_0x52b663){logger[_0x60ab('0x16')](_0x60ab('0x18'),_0x3d819a,_0x52b663);_0x52e811(_0x52b663);});});}
\ No newline at end of file
index f113d8b..8f6f8af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3344=['removeListener','length','cmList:','./cmList.events','save','remove','update','emit'];(function(_0x2778bc,_0x1d22f9){var _0x4ec7f1=function(_0x30b246){while(--_0x30b246){_0x2778bc['push'](_0x2778bc['shift']());}};_0x4ec7f1(++_0x1d22f9);}(_0x3344,0xdb));var _0x4334=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3344[_0x14add3];return _0x4a174f;};'use strict';var CmListEvents=require(_0x4334('0x0'));var events=[_0x4334('0x1'),_0x4334('0x2'),_0x4334('0x3')];function createListener(_0xd350b6,_0xe919e8){return function(_0x216c5a){_0xe919e8[_0x4334('0x4')](_0xd350b6,_0x216c5a);};}function removeListener(_0x59deb1,_0x27baee){return function(){CmListEvents[_0x4334('0x5')](_0x59deb1,_0x27baee);};}exports['register']=function(_0x32ab71){for(var _0x378ed0=0x0,_0x4d0693=events[_0x4334('0x6')];_0x378ed0<_0x4d0693;_0x378ed0++){var _0x320e30=events[_0x378ed0];var _0x49340a=createListener(_0x4334('0x7')+_0x320e30,_0x32ab71);CmListEvents['on'](_0x320e30,_0x49340a);}};
\ No newline at end of file
+var _0xbcdf=['removeListener','length','./cmList.events','save','update','emit'];(function(_0x41f199,_0x3d3010){var _0x307212=function(_0x5ae56d){while(--_0x5ae56d){_0x41f199['push'](_0x41f199['shift']());}};_0x307212(++_0x3d3010);}(_0xbcdf,0x1b2));var _0xfbcd=function(_0xd7b7c4,_0x3bde33){_0xd7b7c4=_0xd7b7c4-0x0;var _0x3701d4=_0xbcdf[_0xd7b7c4];return _0x3701d4;};'use strict';var CmListEvents=require(_0xfbcd('0x0'));var events=[_0xfbcd('0x1'),'remove',_0xfbcd('0x2')];function createListener(_0x1e85ba,_0x345f0c){return function(_0x5dd790){_0x345f0c[_0xfbcd('0x3')](_0x1e85ba,_0x5dd790);};}function removeListener(_0x376c29,_0x1d3d06){return function(){CmListEvents[_0xfbcd('0x4')](_0x376c29,_0x1d3d06);};}exports['register']=function(_0x4cd374){for(var _0x320bc9=0x0,_0x48a4bb=events[_0xfbcd('0x5')];_0x320bc9<_0x48a4bb;_0x320bc9++){var _0x2115ad=events[_0x320bc9];var _0x5af52b=createListener('cmList:'+_0x2115ad,_0x4cd374);CmListEvents['on'](_0x2115ad,_0x5af52b);}};
\ No newline at end of file
index e46e309..f8f6ab4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fb1=['put','update','delete','destroy','removeDispositions','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','./cmList.controller','get','isAuthenticated','index','/describe','describe','/global_fields','getGlobalCustomFields','/:id','show','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','/:id/users','post','create','/:id/dispositions','addDisposition','addContacts','addCustomField','addAgents'];(function(_0xff346f,_0x489af3){var _0x1611f8=function(_0x1b4cd6){while(--_0x1b4cd6){_0xff346f['push'](_0xff346f['shift']());}};_0x1611f8(++_0x489af3);}(_0x3fb1,0x15a));var _0x13fb=function(_0x229b09,_0x141b41){_0x229b09=_0x229b09-0x0;var _0x5206cc=_0x3fb1[_0x229b09];return _0x5206cc;};'use strict';var multer=require('multer');var util=require(_0x13fb('0x0'));var path=require('path');var timeout=require(_0x13fb('0x1'));var express=require(_0x13fb('0x2'));var router=express['Router']();var fs_extra=require(_0x13fb('0x3'));var auth=require(_0x13fb('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x13fb('0x5'));router[_0x13fb('0x6')]('/',auth[_0x13fb('0x7')](),controller[_0x13fb('0x8')]);router[_0x13fb('0x6')](_0x13fb('0x9'),auth[_0x13fb('0x7')](),controller[_0x13fb('0xa')]);router[_0x13fb('0x6')](_0x13fb('0xb'),auth[_0x13fb('0x7')](),controller[_0x13fb('0xc')]);router['get'](_0x13fb('0xd'),auth[_0x13fb('0x7')](),controller[_0x13fb('0xe')]);router['get']('/:id/dispositions',auth[_0x13fb('0x7')](),controller[_0x13fb('0xf')]);router[_0x13fb('0x6')](_0x13fb('0x10'),auth[_0x13fb('0x7')](),controller[_0x13fb('0x11')]);router['get']('/:id/contacts/csv',auth['isAuthenticated'](),controller[_0x13fb('0x12')]);router[_0x13fb('0x6')](_0x13fb('0x13'),auth[_0x13fb('0x7')](),controller['getCustomFields']);router[_0x13fb('0x6')](_0x13fb('0x14'),auth[_0x13fb('0x7')](),controller['getAgents']);router[_0x13fb('0x15')]('/',auth[_0x13fb('0x7')](),controller[_0x13fb('0x16')]);router[_0x13fb('0x15')](_0x13fb('0x17'),auth['isAuthenticated'](),controller[_0x13fb('0x18')]);router[_0x13fb('0x15')](_0x13fb('0x10'),auth[_0x13fb('0x7')](),controller[_0x13fb('0x19')]);router[_0x13fb('0x15')](_0x13fb('0x13'),auth['isAuthenticated'](),controller[_0x13fb('0x1a')]);router[_0x13fb('0x15')](_0x13fb('0x14'),auth[_0x13fb('0x7')](),controller[_0x13fb('0x1b')]);router[_0x13fb('0x1c')](_0x13fb('0xd'),auth['isAuthenticated'](),controller[_0x13fb('0x1d')]);router[_0x13fb('0x1e')](_0x13fb('0xd'),auth['isAuthenticated'](),controller[_0x13fb('0x1f')]);router[_0x13fb('0x1e')](_0x13fb('0x17'),auth[_0x13fb('0x7')](),controller[_0x13fb('0x20')]);router[_0x13fb('0x1e')](_0x13fb('0x14'),auth[_0x13fb('0x7')](),controller['removeAgents']);module[_0x13fb('0x21')]=router;
\ No newline at end of file
+var _0x2a4b=['removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe','describe','/global_fields','getGlobalCustomFields','/:id','/:id/dispositions','getDispositions','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','post','create','addDisposition','/:id/contacts','addContacts','addCustomField','addAgents','put','update','destroy','removeDispositions','delete'];(function(_0x7e9a24,_0x3f9c9b){var _0x8d6795=function(_0x220841){while(--_0x220841){_0x7e9a24['push'](_0x7e9a24['shift']());}};_0x8d6795(++_0x3f9c9b);}(_0x2a4b,0xbb));var _0xb2a4=function(_0x18331a,_0x5e7f73){_0x18331a=_0x18331a-0x0;var _0x4f5013=_0x2a4b[_0x18331a];return _0x4f5013;};'use strict';var multer=require('multer');var util=require(_0xb2a4('0x0'));var path=require('path');var timeout=require(_0xb2a4('0x1'));var express=require(_0xb2a4('0x2'));var router=express[_0xb2a4('0x3')]();var fs_extra=require(_0xb2a4('0x4'));var auth=require(_0xb2a4('0x5'));var interaction=require(_0xb2a4('0x6'));var config=require('../../config/environment');var controller=require('./cmList.controller');router['get']('/',auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x8')]);router[_0xb2a4('0x9')](_0xb2a4('0xa'),auth[_0xb2a4('0x7')](),controller[_0xb2a4('0xb')]);router['get'](_0xb2a4('0xc'),auth[_0xb2a4('0x7')](),controller[_0xb2a4('0xd')]);router[_0xb2a4('0x9')](_0xb2a4('0xe'),auth[_0xb2a4('0x7')](),controller['show']);router[_0xb2a4('0x9')](_0xb2a4('0xf'),auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x10')]);router[_0xb2a4('0x9')]('/:id/contacts',auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x11')]);router[_0xb2a4('0x9')](_0xb2a4('0x12'),auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x13')]);router[_0xb2a4('0x9')](_0xb2a4('0x14'),auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x15')]);router[_0xb2a4('0x9')](_0xb2a4('0x16'),auth[_0xb2a4('0x7')](),controller['getAgents']);router[_0xb2a4('0x17')]('/',auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x18')]);router[_0xb2a4('0x17')](_0xb2a4('0xf'),auth['isAuthenticated'](),controller[_0xb2a4('0x19')]);router['post'](_0xb2a4('0x1a'),auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x1b')]);router[_0xb2a4('0x17')]('/:id/fields',auth['isAuthenticated'](),controller[_0xb2a4('0x1c')]);router['post']('/:id/users',auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x1d')]);router[_0xb2a4('0x1e')](_0xb2a4('0xe'),auth['isAuthenticated'](),controller[_0xb2a4('0x1f')]);router['delete'](_0xb2a4('0xe'),auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x20')]);router['delete'](_0xb2a4('0xf'),auth['isAuthenticated'](),controller[_0xb2a4('0x21')]);router[_0xb2a4('0x22')](_0xb2a4('0x16'),auth[_0xb2a4('0x7')](),controller[_0xb2a4('0x23')]);module[_0xb2a4('0x24')]=router;
\ No newline at end of file
index 790434b..004560b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb02c=['exports','VIRTUAL','getDataValue','field','STRING','sequelize'];(function(_0x2b193b,_0x126ef0){var _0x107a8e=function(_0x161b49){while(--_0x161b49){_0x2b193b['push'](_0x2b193b['shift']());}};_0x107a8e(++_0x126ef0);}(_0xb02c,0x1cd));var _0xcb02=function(_0x455727,_0x130f04){_0x455727=_0x455727-0x0;var _0x40ff29=_0xb02c[_0x455727];return _0x40ff29;};'use strict';var Sequelize=require(_0xcb02('0x0'));module[_0xcb02('0x1')]={'name':{'type':Sequelize[_0xcb02('0x2')],'get':function(_0x1cab3f){return this[_0xcb02('0x3')](_0xcb02('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xcb02('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0x8789=['exports','getDataValue','field','STRING','sequelize'];(function(_0x3a8c1b,_0x5d4e5d){var _0x2f3c39=function(_0x4fba6d){while(--_0x4fba6d){_0x3a8c1b['push'](_0x3a8c1b['shift']());}};_0x2f3c39(++_0x5d4e5d);}(_0x8789,0xef));var _0x9878=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x8789[_0x2d7f0e];return _0x110b07;};'use strict';var Sequelize=require(_0x9878('0x0'));module[_0x9878('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x52b22b){return this[_0x9878('0x2')](_0x9878('0x3'));}},'field':{'type':Sequelize[_0x9878('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x9878('0x4')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index d5a18ea..fca7b80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x5ea602,_0x2bdf16){var _0x184f27=function(_0x552303){while(--_0x552303){_0x5ea602['push'](_0x5ea602['shift']());}};_0x184f27(++_0x2bdf16);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+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(_0x107cdc,_0x218b4e){var _0x7fe3c1=function(_0x35728a){while(--_0x35728a){_0x107cdc['push'](_0x107cdc['shift']());}};_0x7fe3c1(++_0x218b4e);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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 11f1c8d..87216af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c2=['api','moment','bluebird','request-promise','path','rimraf','exports','Condition','tools_conditions','lodash','../../config/logger'];(function(_0x31520d,_0x50046a){var _0x4d0d26=function(_0x187fe0){while(--_0x187fe0){_0x31520d['push'](_0x31520d['shift']());}};_0x4d0d26(++_0x50046a);}(_0x29c2,0x1a0));var _0x229c=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x29c2[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x229c('0x0'));var util=require('util');var logger=require(_0x229c('0x1'))(_0x229c('0x2'));var moment=require(_0x229c('0x3'));var BPromise=require(_0x229c('0x4'));var rp=require(_0x229c('0x5'));var fs=require('fs');var path=require(_0x229c('0x6'));var rimraf=require(_0x229c('0x7'));var config=require('../../config/environment');var attributes=require('./condition.attributes');module[_0x229c('0x8')]=function(_0x58e07d,_0x50db4b){return _0x58e07d['define'](_0x229c('0x9'),attributes,{'tableName':_0x229c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc25=['moment','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition','lodash','util','../../config/logger','api'];(function(_0xe6d681,_0x2475a5){var _0x4ce0f2=function(_0x45446d){while(--_0x45446d){_0xe6d681['push'](_0xe6d681['shift']());}};_0x4ce0f2(++_0x2475a5);}(_0xdc25,0x10d));var _0x5dc2=function(_0x38369b,_0x3f24bd){_0x38369b=_0x38369b-0x0;var _0x475ac1=_0xdc25[_0x38369b];return _0x475ac1;};'use strict';var _=require(_0x5dc2('0x0'));var util=require(_0x5dc2('0x1'));var logger=require(_0x5dc2('0x2'))(_0x5dc2('0x3'));var moment=require(_0x5dc2('0x4'));var BPromise=require('bluebird');var rp=require(_0x5dc2('0x5'));var fs=require('fs');var path=require(_0x5dc2('0x6'));var rimraf=require(_0x5dc2('0x7'));var config=require(_0x5dc2('0x8'));var attributes=require(_0x5dc2('0x9'));module[_0x5dc2('0xa')]=function(_0x243e8a,_0x1e817e){return _0x243e8a[_0x5dc2('0xb')](_0x5dc2('0xc'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 83d736f..e08e15f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x125f=['../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Condition,\x20%s,\x20%s','debug','error','code','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x2695c8,_0x4b8c2a){var _0x20d141=function(_0x21c861){while(--_0x21c861){_0x2695c8['push'](_0x2695c8['shift']());}};_0x20d141(++_0x4b8c2a);}(_0x125f,0x150));var _0xf125=function(_0x3c6614,_0x2c8250){_0x3c6614=_0x3c6614-0x0;var _0x4da19b=_0x125f[_0x3c6614];return _0x4da19b;};'use strict';var _=require(_0xf125('0x0'));var util=require(_0xf125('0x1'));var moment=require('moment');var BPromise=require(_0xf125('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf125('0x3'));var db=require(_0xf125('0x4'))['db'];var utils=require(_0xf125('0x5'));var logger=require(_0xf125('0x6'))('rpc');var config=require(_0xf125('0x7'));var jayson=require(_0xf125('0x8'));var client=jayson[_0xf125('0x9')][_0xf125('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56353f,_0x49f152,_0x4dddd7){return new BPromise(function(_0x45bdc9,_0x1601c3){return client[_0xf125('0xb')](_0x56353f,_0x4dddd7)['then'](function(_0x5ab96c){logger[_0xf125('0xc')](_0xf125('0xd'),_0x49f152,'request\x20sent');logger[_0xf125('0xe')]('Condition,\x20%s,\x20%s,\x20%s',_0x49f152,'request\x20sent',JSON['stringify'](_0x5ab96c));if(_0x5ab96c['error']){if(_0x5ab96c[_0xf125('0xf')][_0xf125('0x10')]===0x1f4){logger[_0xf125('0xf')]('Condition,\x20%s,\x20%s',_0x49f152,_0x5ab96c['error'][_0xf125('0x11')]);return _0x1601c3(_0x5ab96c[_0xf125('0xf')][_0xf125('0x11')]);}logger[_0xf125('0xf')](_0xf125('0xd'),_0x49f152,_0x5ab96c[_0xf125('0xf')]['message']);return _0x45bdc9(_0x5ab96c['error'][_0xf125('0x11')]);}else{logger[_0xf125('0xc')](_0xf125('0xd'),_0x49f152,'request\x20sent');_0x45bdc9(_0x5ab96c['result'][_0xf125('0x11')]);}})[_0xf125('0x12')](function(_0x32d449){logger[_0xf125('0xf')]('Condition,\x20%s,\x20%s',_0x49f152,_0x32d449);_0x1601c3(_0x32d449);});});}
\ No newline at end of file
+var _0xcee6=['code','Condition,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','Condition,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3674bd,_0x46a05a){var _0x1e7703=function(_0x1394c3){while(--_0x1394c3){_0x3674bd['push'](_0x3674bd['shift']());}};_0x1e7703(++_0x46a05a);}(_0xcee6,0x1a9));var _0x6cee=function(_0x5ce8b9,_0x5cded8){_0x5ce8b9=_0x5ce8b9-0x0;var _0xe34be0=_0xcee6[_0x5ce8b9];return _0xe34be0;};'use strict';var _=require(_0x6cee('0x0'));var util=require(_0x6cee('0x1'));var moment=require(_0x6cee('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6cee('0x3'));var db=require(_0x6cee('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6cee('0x5'))(_0x6cee('0x6'));var config=require(_0x6cee('0x7'));var jayson=require(_0x6cee('0x8'));var client=jayson[_0x6cee('0x9')][_0x6cee('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59eb44,_0x29a095,_0x9d124d){return new BPromise(function(_0x14e16e,_0x149ebc){return client[_0x6cee('0xb')](_0x59eb44,_0x9d124d)['then'](function(_0x153ac3){logger['info']('Condition,\x20%s,\x20%s',_0x29a095,_0x6cee('0xc'));logger['debug'](_0x6cee('0xd'),_0x29a095,'request\x20sent',JSON[_0x6cee('0xe')](_0x153ac3));if(_0x153ac3[_0x6cee('0xf')]){if(_0x153ac3['error'][_0x6cee('0x10')]===0x1f4){logger[_0x6cee('0xf')](_0x6cee('0x11'),_0x29a095,_0x153ac3[_0x6cee('0xf')][_0x6cee('0x12')]);return _0x149ebc(_0x153ac3['error'][_0x6cee('0x12')]);}logger[_0x6cee('0xf')](_0x6cee('0x11'),_0x29a095,_0x153ac3[_0x6cee('0xf')][_0x6cee('0x12')]);return _0x14e16e(_0x153ac3[_0x6cee('0xf')][_0x6cee('0x12')]);}else{logger['info'](_0x6cee('0x11'),_0x29a095,_0x6cee('0xc'));_0x14e16e(_0x153ac3[_0x6cee('0x13')][_0x6cee('0x12')]);}})[_0x6cee('0x14')](function(_0x2de5e2){logger['error']('Condition,\x20%s,\x20%s',_0x29a095,_0x2de5e2);_0x149ebc(_0x2de5e2);});});}
\ No newline at end of file
index ea01289..ab16caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac30=['/:id','isAuthenticated','update','delete','destroy','exports','util','connect-timeout','Router','../../components/interaction/service','../../config/environment','./condition.controller','put'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xac30,0xfd));var _0x0ac3=function(_0x3718b7,_0x2da677){_0x3718b7=_0x3718b7-0x0;var _0xf8c91e=_0xac30[_0x3718b7];return _0xf8c91e;};'use strict';var multer=require('multer');var util=require(_0x0ac3('0x0'));var path=require('path');var timeout=require(_0x0ac3('0x1'));var express=require('express');var router=express[_0x0ac3('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0ac3('0x3'));var config=require(_0x0ac3('0x4'));var controller=require(_0x0ac3('0x5'));router[_0x0ac3('0x6')](_0x0ac3('0x7'),auth[_0x0ac3('0x8')](),controller[_0x0ac3('0x9')]);router[_0x0ac3('0xa')](_0x0ac3('0x7'),auth[_0x0ac3('0x8')](),controller[_0x0ac3('0xb')]);module[_0x0ac3('0xc')]=router;
\ No newline at end of file
+var _0x71fe=['put','update','delete','isAuthenticated','destroy','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./condition.controller'];(function(_0x28fbbf,_0x11f896){var _0x543af6=function(_0x27fa74){while(--_0x27fa74){_0x28fbbf['push'](_0x28fbbf['shift']());}};_0x543af6(++_0x11f896);}(_0x71fe,0x1d4));var _0xe71f=function(_0x2bbd23,_0x43c40f){_0x2bbd23=_0x2bbd23-0x0;var _0x4dc031=_0x71fe[_0x2bbd23];return _0x4dc031;};'use strict';var multer=require(_0xe71f('0x0'));var util=require(_0xe71f('0x1'));var path=require(_0xe71f('0x2'));var timeout=require(_0xe71f('0x3'));var express=require(_0xe71f('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe71f('0x5'));var config=require(_0xe71f('0x6'));var controller=require(_0xe71f('0x7'));router[_0xe71f('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xe71f('0x9')]);router[_0xe71f('0xa')]('/:id',auth[_0xe71f('0xb')](),controller[_0xe71f('0xc')]);module[_0xe71f('0xd')]=router;
\ No newline at end of file
index 5bb5832..e54a586 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x832f=['STRING','sequelize','name','INTEGER'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x832f,0xad));var _0xf832=function(_0x872b02,_0x4f4458){_0x872b02=_0x872b02-0x0;var _0x1a6b24=_0x832f[_0x872b02];return _0x1a6b24;};'use strict';var Sequelize=require(_0xf832('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xf832('0x1')},'OrderBy':{'type':Sequelize[_0xf832('0x2')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xf832('0x3')],'allowNull':!![]}};
\ No newline at end of file
+var _0x5e65=['exports','STRING','name'];(function(_0x29d6e6,_0x264220){var _0xc75ff0=function(_0x214f6b){while(--_0x214f6b){_0x29d6e6['push'](_0x29d6e6['shift']());}};_0xc75ff0(++_0x264220);}(_0x5e65,0xdb));var _0x55e6=function(_0x6726c8,_0x30aff7){_0x6726c8=_0x6726c8-0x0;var _0x4ab0e3=_0x5e65[_0x6726c8];return _0x4ab0e3;};'use strict';var Sequelize=require('sequelize');module[_0x55e6('0x0')]={'name':{'type':Sequelize[_0x55e6('0x1')],'allowNull':![],'unique':_0x55e6('0x2')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x55e6('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 15fbd62..88debda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x056b=['find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','body','CmContactHasItem','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','save','update','then','destroy','ContactItemTypes','error','stack','name','index','map','ContactItemType','rawAttributes','type','key','model','query','keys','intersection','fields','attributes','length','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll'];(function(_0x2cfc02,_0x3e7326){var _0x33efdc=function(_0x170850){while(--_0x170850){_0x2cfc02['push'](_0x2cfc02['shift']());}};_0x33efdc(++_0x3e7326);}(_0x056b,0xb6));var _0xb056=function(_0x1a8dc3,_0x395536){_0x1a8dc3=_0x1a8dc3-0x0;var _0x2a9c1e=_0x056b[_0x1a8dc3];return _0x2a9c1e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb056('0x0'));var zipdir=require(_0xb056('0x1'));var jsonpatch=require(_0xb056('0x2'));var rp=require(_0xb056('0x3'));var moment=require(_0xb056('0x4'));var BPromise=require(_0xb056('0x5'));var Mustache=require(_0xb056('0x6'));var util=require(_0xb056('0x7'));var path=require(_0xb056('0x8'));var sox=require(_0xb056('0x9'));var csv=require(_0xb056('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb056('0xb'));var _=require(_0xb056('0xc'));var squel=require(_0xb056('0xd'));var crypto=require(_0xb056('0xe'));var jsforce=require(_0xb056('0xf'));var deskjs=require(_0xb056('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb056('0x11'));var Redis=require(_0xb056('0x12'));var authService=require(_0xb056('0x13'));var qs=require(_0xb056('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb056('0x15'));var logger=require('../../config/logger')(_0xb056('0x16'));var utils=require(_0xb056('0x17'));var config=require(_0xb056('0x18'));var licenseUtil=require(_0xb056('0x19'));var db=require(_0xb056('0x1a'))['db'];function respondWithStatusCode(_0x5d8306,_0x49c5ec){_0x49c5ec=_0x49c5ec||0xcc;return function(_0xf3e80f){if(_0xf3e80f){return _0x5d8306[_0xb056('0x1b')](_0x49c5ec);}return _0x5d8306['status'](_0x49c5ec)[_0xb056('0x1c')]();};}function respondWithResult(_0x34611b,_0xf1c2e9){_0xf1c2e9=_0xf1c2e9||0xc8;return function(_0x1197e5){if(_0x1197e5){return _0x34611b[_0xb056('0x1d')](_0xf1c2e9)[_0xb056('0x1e')](_0x1197e5);}};}function respondWithFilteredResult(_0x179e49,_0x4b838e){return function(_0x162146){if(_0x162146){var _0x43565e=typeof _0x4b838e[_0xb056('0x1f')]===_0xb056('0x20')&&typeof _0x4b838e['limit']===_0xb056('0x20');var _0x4e501a=_0x162146[_0xb056('0x21')];var _0x311eb9=_0x43565e?0x0:_0x4b838e['offset'];var _0x29c77e=_0x43565e?_0x162146['count']:_0x4b838e[_0xb056('0x1f')]+_0x4b838e[_0xb056('0x22')];var _0x5e4bd9;if(_0x29c77e>=_0x4e501a){_0x29c77e=_0x4e501a;_0x5e4bd9=0xc8;}else{_0x5e4bd9=0xce;}_0x179e49[_0xb056('0x1d')](_0x5e4bd9);return _0x179e49['set'](_0xb056('0x23'),_0x311eb9+'-'+_0x29c77e+'/'+_0x4e501a)[_0xb056('0x1e')](_0x162146);}return null;};}function patchUpdates(_0x457b54){return function(_0x33dd35){try{jsonpatch['apply'](_0x33dd35,_0x457b54,!![]);}catch(_0x1db585){return BPromise['reject'](_0x1db585);}return _0x33dd35[_0xb056('0x24')]();};}function saveUpdates(_0x5dea90,_0x324ce6){return function(_0x40ac2d){if(_0x40ac2d){return _0x40ac2d[_0xb056('0x25')](_0x5dea90)[_0xb056('0x26')](function(_0x36e539){return _0x36e539;});}return null;};}function removeEntity(_0x4bb6c0,_0x4e66c3){return function(_0x1016da){if(_0x1016da){return _0x1016da[_0xb056('0x27')]()[_0xb056('0x26')](function(){var _0x1bd6ac=_0x1016da['get']({'plain':!![]});var _0x44a14f=_0xb056('0x28');return db['UserProfileResource'][_0xb056('0x27')]({'where':{'type':_0x44a14f,'resourceId':_0x1bd6ac['id']}})[_0xb056('0x26')](function(){return _0x1016da;});})[_0xb056('0x26')](function(){_0x4bb6c0[_0xb056('0x1d')](0xcc)[_0xb056('0x1c')]();});}};}function handleEntityNotFound(_0x4024d7,_0x211898){return function(_0x2042f1){if(!_0x2042f1){_0x4024d7['sendStatus'](0x194);}return _0x2042f1;};}function handleError(_0x29fbc1,_0x51b06b){_0x51b06b=_0x51b06b||0x1f4;return function(_0x3d83d3){logger[_0xb056('0x29')](_0x3d83d3[_0xb056('0x2a')]);if(_0x3d83d3['name']){delete _0x3d83d3[_0xb056('0x2b')];}_0x29fbc1[_0xb056('0x1d')](_0x51b06b)['send'](_0x3d83d3);};}exports[_0xb056('0x2c')]=function(_0x43aa63,_0x329eaa){var _0x1fad05={},_0x3ce984={},_0x4ebca5={'count':0x0,'rows':[]};var _0x87f31e=_[_0xb056('0x2d')](db[_0xb056('0x2e')][_0xb056('0x2f')],function(_0x103482){return{'name':_0x103482['fieldName'],'type':_0x103482[_0xb056('0x30')][_0xb056('0x31')]};});_0x3ce984[_0xb056('0x32')]=_[_0xb056('0x2d')](_0x87f31e,_0xb056('0x2b'));_0x3ce984[_0xb056('0x33')]=_[_0xb056('0x34')](_0x43aa63[_0xb056('0x33')]);_0x3ce984['filters']=_[_0xb056('0x35')](_0x3ce984['model'],_0x3ce984[_0xb056('0x33')]);_0x1fad05['attributes']=_['intersection'](_0x3ce984[_0xb056('0x32')],qs[_0xb056('0x36')](_0x43aa63[_0xb056('0x33')][_0xb056('0x36')]));_0x1fad05[_0xb056('0x37')]=_0x1fad05[_0xb056('0x37')][_0xb056('0x38')]?_0x1fad05['attributes']:_0x3ce984[_0xb056('0x32')];if(!_0x43aa63[_0xb056('0x33')]['hasOwnProperty']('nolimit')){_0x1fad05[_0xb056('0x22')]=qs[_0xb056('0x22')](_0x43aa63[_0xb056('0x33')]['limit']);_0x1fad05[_0xb056('0x1f')]=qs[_0xb056('0x1f')](_0x43aa63[_0xb056('0x33')][_0xb056('0x1f')]);}_0x1fad05[_0xb056('0x39')]=qs[_0xb056('0x3a')](_0x43aa63[_0xb056('0x33')][_0xb056('0x3a')]);_0x1fad05[_0xb056('0x3b')]=qs[_0xb056('0x3c')](_[_0xb056('0x3d')](_0x43aa63[_0xb056('0x33')],_0x3ce984['filters']),_0x87f31e);if(_0x43aa63[_0xb056('0x33')]['filter']){_0x1fad05[_0xb056('0x3b')]=_[_0xb056('0x3e')](_0x1fad05[_0xb056('0x3b')],{'$or':_[_0xb056('0x2d')](_0x87f31e,function(_0x460f28){if(_0x460f28[_0xb056('0x30')]!==_0xb056('0x3f')){var _0x42b54f={};_0x42b54f[_0x460f28['name']]={'$like':'%'+_0x43aa63[_0xb056('0x33')][_0xb056('0x40')]+'%'};return _0x42b54f;}})});}_0x1fad05=_[_0xb056('0x3e')]({},_0x1fad05,_0x43aa63[_0xb056('0x41')]);var _0x134db7={'where':_0x1fad05['where']};return db[_0xb056('0x2e')][_0xb056('0x21')](_0x134db7)[_0xb056('0x26')](function(_0x216f72){_0x4ebca5[_0xb056('0x21')]=_0x216f72;if(_0x43aa63[_0xb056('0x33')]['includeAll']){_0x1fad05[_0xb056('0x42')]=[{'all':!![]}];}return db['ContactItemType'][_0xb056('0x43')](_0x1fad05);})[_0xb056('0x26')](function(_0x21d98e){_0x4ebca5[_0xb056('0x44')]=_0x21d98e;return _0x4ebca5;})[_0xb056('0x26')](respondWithFilteredResult(_0x329eaa,_0x1fad05))[_0xb056('0x45')](handleError(_0x329eaa,null));};exports[_0xb056('0x46')]=function(_0x248819,_0x2c8b61){var _0x149341={'raw':!![],'where':{'id':_0x248819[_0xb056('0x47')]['id']}},_0x4fa3c5={};_0x4fa3c5[_0xb056('0x32')]=_[_0xb056('0x34')](db['ContactItemType'][_0xb056('0x2f')]);_0x4fa3c5[_0xb056('0x33')]=_['keys'](_0x248819['query']);_0x4fa3c5[_0xb056('0x3c')]=_[_0xb056('0x35')](_0x4fa3c5[_0xb056('0x32')],_0x4fa3c5[_0xb056('0x33')]);_0x149341['attributes']=_['intersection'](_0x4fa3c5['model'],qs['fields'](_0x248819['query']['fields']));_0x149341[_0xb056('0x37')]=_0x149341['attributes'][_0xb056('0x38')]?_0x149341[_0xb056('0x37')]:_0x4fa3c5[_0xb056('0x32')];if(_0x248819[_0xb056('0x33')][_0xb056('0x48')]){_0x149341[_0xb056('0x42')]=[{'all':!![]}];}_0x149341=_[_0xb056('0x3e')]({},_0x149341,_0x248819[_0xb056('0x41')]);return db['ContactItemType'][_0xb056('0x49')](_0x149341)[_0xb056('0x26')](handleEntityNotFound(_0x2c8b61,null))['then'](respondWithResult(_0x2c8b61,null))[_0xb056('0x45')](handleError(_0x2c8b61,null));};exports[_0xb056('0x4a')]=function(_0xe40439,_0x2f2d22){return db[_0xb056('0x2e')][_0xb056('0x4a')](_0xe40439['body'],{})[_0xb056('0x26')](function(_0x5e2224){var _0x132268=_0xe40439[_0xb056('0x4b')][_0xb056('0x4c')]({'plain':!![]});if(!_0x132268)throw new Error(_0xb056('0x4d'));if(_0x132268[_0xb056('0x4e')]===_0xb056('0x4b')){var _0x2b6733=_0x5e2224[_0xb056('0x4c')]({'plain':!![]});var _0x5a3bbf=_0xb056('0x28');return db[_0xb056('0x4f')][_0xb056('0x49')]({'where':{'name':_0x5a3bbf,'userProfileId':_0x132268[_0xb056('0x50')]},'raw':!![]})[_0xb056('0x26')](function(_0x35acab){if(_0x35acab&&_0x35acab[_0xb056('0x51')]===0x0){return db[_0xb056('0x52')]['create']({'name':_0x2b6733[_0xb056('0x2b')],'resourceId':_0x2b6733['id'],'type':_0x35acab[_0xb056('0x2b')],'sectionId':_0x35acab['id']},{})[_0xb056('0x26')](function(){return _0x5e2224;});}else{return _0x5e2224;}})[_0xb056('0x45')](function(_0x1a5170){logger[_0xb056('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a5170);throw _0x1a5170;});}return _0x5e2224;})[_0xb056('0x26')](respondWithResult(_0x2f2d22,0xc9))[_0xb056('0x45')](handleError(_0x2f2d22,null));};exports[_0xb056('0x25')]=function(_0x536d85,_0x37c64c){if(_0x536d85['body']['id']){delete _0x536d85[_0xb056('0x53')]['id'];}return db[_0xb056('0x2e')][_0xb056('0x49')]({'where':{'id':_0x536d85[_0xb056('0x47')]['id']}})['then'](handleEntityNotFound(_0x37c64c,null))[_0xb056('0x26')](saveUpdates(_0x536d85[_0xb056('0x53')],null))['then'](respondWithResult(_0x37c64c,null))[_0xb056('0x45')](handleError(_0x37c64c,null));};exports[_0xb056('0x27')]=function(_0x1d3cdd,_0x1546e5){return db[_0xb056('0x2e')]['find']({'where':{'id':_0x1d3cdd[_0xb056('0x47')]['id']}})[_0xb056('0x26')](handleEntityNotFound(_0x1546e5,null))[_0xb056('0x26')](db[_0xb056('0x54')][_0xb056('0x25')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x1d3cdd[_0xb056('0x47')]['id']}}))[_0xb056('0x26')](removeEntity(_0x1546e5,null))[_0xb056('0x45')](handleError(_0x1546e5,null));};
\ No newline at end of file
+var _0x9f0e=['index','map','ContactItemType','rawAttributes','fieldName','type','key','model','query','intersection','attributes','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','catch','show','params','keys','filters','fields','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','get','ContactItemTypes','UserProfileResource','end','error','stack','name','send'];(function(_0x7502,_0x4d125f){var _0x3e9163=function(_0x4f3317){while(--_0x4f3317){_0x7502['push'](_0x7502['shift']());}};_0x3e9163(++_0x4d125f);}(_0x9f0e,0x116));var _0xe9f0=function(_0x544b2a,_0x73da24){_0x544b2a=_0x544b2a-0x0;var _0x1914b8=_0x9f0e[_0x544b2a];return _0x1914b8;};'use strict';var emlformat=require(_0xe9f0('0x0'));var rimraf=require(_0xe9f0('0x1'));var zipdir=require(_0xe9f0('0x2'));var jsonpatch=require(_0xe9f0('0x3'));var rp=require(_0xe9f0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe9f0('0x5'));var util=require(_0xe9f0('0x6'));var path=require(_0xe9f0('0x7'));var sox=require(_0xe9f0('0x8'));var csv=require(_0xe9f0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9f0('0xa'));var squel=require(_0xe9f0('0xb'));var crypto=require(_0xe9f0('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9f0('0xd'));var toCsv=require(_0xe9f0('0x9'));var querystring=require(_0xe9f0('0xe'));var Papa=require(_0xe9f0('0xf'));var Redis=require(_0xe9f0('0x10'));var authService=require(_0xe9f0('0x11'));var qs=require(_0xe9f0('0x12'));var as=require(_0xe9f0('0x13'));var hardwareService=require(_0xe9f0('0x14'));var logger=require('../../config/logger')(_0xe9f0('0x15'));var utils=require(_0xe9f0('0x16'));var config=require(_0xe9f0('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9f0('0x18'))['db'];function respondWithStatusCode(_0x586763,_0x367545){_0x367545=_0x367545||0xcc;return function(_0xd82420){if(_0xd82420){return _0x586763[_0xe9f0('0x19')](_0x367545);}return _0x586763[_0xe9f0('0x1a')](_0x367545)['end']();};}function respondWithResult(_0x2cf75d,_0x5a10c6){_0x5a10c6=_0x5a10c6||0xc8;return function(_0x1e3ba8){if(_0x1e3ba8){return _0x2cf75d[_0xe9f0('0x1a')](_0x5a10c6)[_0xe9f0('0x1b')](_0x1e3ba8);}};}function respondWithFilteredResult(_0x59320d,_0x28bfac){return function(_0x33e9e4){if(_0x33e9e4){var _0x2e68ef=typeof _0x28bfac['offset']===_0xe9f0('0x1c')&&typeof _0x28bfac[_0xe9f0('0x1d')]===_0xe9f0('0x1c');var _0xd71ac8=_0x33e9e4[_0xe9f0('0x1e')];var _0x2ab12b=_0x2e68ef?0x0:_0x28bfac[_0xe9f0('0x1f')];var _0x59bf5a=_0x2e68ef?_0x33e9e4[_0xe9f0('0x1e')]:_0x28bfac[_0xe9f0('0x1f')]+_0x28bfac[_0xe9f0('0x1d')];var _0x5c4182;if(_0x59bf5a>=_0xd71ac8){_0x59bf5a=_0xd71ac8;_0x5c4182=0xc8;}else{_0x5c4182=0xce;}_0x59320d[_0xe9f0('0x1a')](_0x5c4182);return _0x59320d[_0xe9f0('0x20')](_0xe9f0('0x21'),_0x2ab12b+'-'+_0x59bf5a+'/'+_0xd71ac8)[_0xe9f0('0x1b')](_0x33e9e4);}return null;};}function patchUpdates(_0x5ba788){return function(_0x33f143){try{jsonpatch[_0xe9f0('0x22')](_0x33f143,_0x5ba788,!![]);}catch(_0x583687){return BPromise['reject'](_0x583687);}return _0x33f143['save']();};}function saveUpdates(_0x12fe9f,_0xa1ddc){return function(_0x1211ae){if(_0x1211ae){return _0x1211ae[_0xe9f0('0x23')](_0x12fe9f)[_0xe9f0('0x24')](function(_0x4a5c27){return _0x4a5c27;});}return null;};}function removeEntity(_0x229fe0,_0x38b7ee){return function(_0x437d43){if(_0x437d43){return _0x437d43[_0xe9f0('0x25')]()[_0xe9f0('0x24')](function(){var _0x372ffd=_0x437d43[_0xe9f0('0x26')]({'plain':!![]});var _0x1321bb=_0xe9f0('0x27');return db[_0xe9f0('0x28')]['destroy']({'where':{'type':_0x1321bb,'resourceId':_0x372ffd['id']}})[_0xe9f0('0x24')](function(){return _0x437d43;});})[_0xe9f0('0x24')](function(){_0x229fe0[_0xe9f0('0x1a')](0xcc)[_0xe9f0('0x29')]();});}};}function handleEntityNotFound(_0x4cf1b1,_0x212a38){return function(_0x2613fd){if(!_0x2613fd){_0x4cf1b1[_0xe9f0('0x19')](0x194);}return _0x2613fd;};}function handleError(_0x1f98a7,_0x4335c6){_0x4335c6=_0x4335c6||0x1f4;return function(_0x5457f6){logger[_0xe9f0('0x2a')](_0x5457f6[_0xe9f0('0x2b')]);if(_0x5457f6[_0xe9f0('0x2c')]){delete _0x5457f6[_0xe9f0('0x2c')];}_0x1f98a7[_0xe9f0('0x1a')](_0x4335c6)[_0xe9f0('0x2d')](_0x5457f6);};}exports[_0xe9f0('0x2e')]=function(_0x2efd33,_0x2b6503){var _0x3dbe49={},_0x22806c={},_0x617ad3={'count':0x0,'rows':[]};var _0x445ad0=_[_0xe9f0('0x2f')](db[_0xe9f0('0x30')][_0xe9f0('0x31')],function(_0x80e3ac){return{'name':_0x80e3ac[_0xe9f0('0x32')],'type':_0x80e3ac[_0xe9f0('0x33')][_0xe9f0('0x34')]};});_0x22806c[_0xe9f0('0x35')]=_[_0xe9f0('0x2f')](_0x445ad0,_0xe9f0('0x2c'));_0x22806c[_0xe9f0('0x36')]=_['keys'](_0x2efd33['query']);_0x22806c['filters']=_[_0xe9f0('0x37')](_0x22806c['model'],_0x22806c[_0xe9f0('0x36')]);_0x3dbe49[_0xe9f0('0x38')]=_['intersection'](_0x22806c[_0xe9f0('0x35')],qs['fields'](_0x2efd33['query']['fields']));_0x3dbe49[_0xe9f0('0x38')]=_0x3dbe49[_0xe9f0('0x38')]['length']?_0x3dbe49[_0xe9f0('0x38')]:_0x22806c[_0xe9f0('0x35')];if(!_0x2efd33[_0xe9f0('0x36')]['hasOwnProperty']('nolimit')){_0x3dbe49[_0xe9f0('0x1d')]=qs[_0xe9f0('0x1d')](_0x2efd33[_0xe9f0('0x36')]['limit']);_0x3dbe49[_0xe9f0('0x1f')]=qs[_0xe9f0('0x1f')](_0x2efd33[_0xe9f0('0x36')][_0xe9f0('0x1f')]);}_0x3dbe49[_0xe9f0('0x39')]=qs['sort'](_0x2efd33[_0xe9f0('0x36')][_0xe9f0('0x3a')]);_0x3dbe49[_0xe9f0('0x3b')]=qs['filters'](_[_0xe9f0('0x3c')](_0x2efd33[_0xe9f0('0x36')],_0x22806c['filters']),_0x445ad0);if(_0x2efd33[_0xe9f0('0x36')]['filter']){_0x3dbe49[_0xe9f0('0x3b')]=_['merge'](_0x3dbe49['where'],{'$or':_['map'](_0x445ad0,function(_0x5bddcc){if(_0x5bddcc['type']!==_0xe9f0('0x3d')){var _0x2d4115={};_0x2d4115[_0x5bddcc[_0xe9f0('0x2c')]]={'$like':'%'+_0x2efd33[_0xe9f0('0x36')][_0xe9f0('0x3e')]+'%'};return _0x2d4115;}})});}_0x3dbe49=_[_0xe9f0('0x3f')]({},_0x3dbe49,_0x2efd33[_0xe9f0('0x40')]);var _0x3e79c1={'where':_0x3dbe49[_0xe9f0('0x3b')]};return db['ContactItemType'][_0xe9f0('0x1e')](_0x3e79c1)[_0xe9f0('0x24')](function(_0x36b00a){_0x617ad3['count']=_0x36b00a;if(_0x2efd33['query'][_0xe9f0('0x41')]){_0x3dbe49['include']=[{'all':!![]}];}return db[_0xe9f0('0x30')][_0xe9f0('0x42')](_0x3dbe49);})[_0xe9f0('0x24')](function(_0x42d9d2){_0x617ad3['rows']=_0x42d9d2;return _0x617ad3;})[_0xe9f0('0x24')](respondWithFilteredResult(_0x2b6503,_0x3dbe49))[_0xe9f0('0x43')](handleError(_0x2b6503,null));};exports[_0xe9f0('0x44')]=function(_0x18faaf,_0x37a2ac){var _0x59378a={'raw':!![],'where':{'id':_0x18faaf[_0xe9f0('0x45')]['id']}},_0x60a40d={};_0x60a40d[_0xe9f0('0x35')]=_[_0xe9f0('0x46')](db[_0xe9f0('0x30')]['rawAttributes']);_0x60a40d[_0xe9f0('0x36')]=_['keys'](_0x18faaf['query']);_0x60a40d[_0xe9f0('0x47')]=_[_0xe9f0('0x37')](_0x60a40d['model'],_0x60a40d[_0xe9f0('0x36')]);_0x59378a[_0xe9f0('0x38')]=_[_0xe9f0('0x37')](_0x60a40d[_0xe9f0('0x35')],qs[_0xe9f0('0x48')](_0x18faaf[_0xe9f0('0x36')][_0xe9f0('0x48')]));_0x59378a['attributes']=_0x59378a[_0xe9f0('0x38')]['length']?_0x59378a[_0xe9f0('0x38')]:_0x60a40d['model'];if(_0x18faaf[_0xe9f0('0x36')]['includeAll']){_0x59378a[_0xe9f0('0x49')]=[{'all':!![]}];}_0x59378a=_[_0xe9f0('0x3f')]({},_0x59378a,_0x18faaf[_0xe9f0('0x40')]);return db['ContactItemType'][_0xe9f0('0x4a')](_0x59378a)[_0xe9f0('0x24')](handleEntityNotFound(_0x37a2ac,null))[_0xe9f0('0x24')](respondWithResult(_0x37a2ac,null))[_0xe9f0('0x43')](handleError(_0x37a2ac,null));};exports[_0xe9f0('0x4b')]=function(_0x135175,_0x6ece3f){return db[_0xe9f0('0x30')][_0xe9f0('0x4b')](_0x135175[_0xe9f0('0x4c')],{})[_0xe9f0('0x24')](function(_0x1325a2){var _0x57beee=_0x135175['user'][_0xe9f0('0x26')]({'plain':!![]});if(!_0x57beee)throw new Error(_0xe9f0('0x4d'));if(_0x57beee[_0xe9f0('0x4e')]==='user'){var _0x1ac381=_0x1325a2['get']({'plain':!![]});var _0x323e1e=_0xe9f0('0x27');return db[_0xe9f0('0x4f')][_0xe9f0('0x4a')]({'where':{'name':_0x323e1e,'userProfileId':_0x57beee['userProfileId']},'raw':!![]})[_0xe9f0('0x24')](function(_0x3fa271){if(_0x3fa271&&_0x3fa271['autoAssociation']===0x0){return db[_0xe9f0('0x28')][_0xe9f0('0x4b')]({'name':_0x1ac381[_0xe9f0('0x2c')],'resourceId':_0x1ac381['id'],'type':_0x3fa271[_0xe9f0('0x2c')],'sectionId':_0x3fa271['id']},{})['then'](function(){return _0x1325a2;});}else{return _0x1325a2;}})[_0xe9f0('0x43')](function(_0x3a5d19){logger[_0xe9f0('0x2a')](_0xe9f0('0x50'),_0x3a5d19);throw _0x3a5d19;});}return _0x1325a2;})[_0xe9f0('0x24')](respondWithResult(_0x6ece3f,0xc9))[_0xe9f0('0x43')](handleError(_0x6ece3f,null));};exports[_0xe9f0('0x23')]=function(_0x12d9be,_0x4da78f){if(_0x12d9be[_0xe9f0('0x4c')]['id']){delete _0x12d9be[_0xe9f0('0x4c')]['id'];}return db[_0xe9f0('0x30')][_0xe9f0('0x4a')]({'where':{'id':_0x12d9be[_0xe9f0('0x45')]['id']}})[_0xe9f0('0x24')](handleEntityNotFound(_0x4da78f,null))[_0xe9f0('0x24')](saveUpdates(_0x12d9be[_0xe9f0('0x4c')],null))[_0xe9f0('0x24')](respondWithResult(_0x4da78f,null))[_0xe9f0('0x43')](handleError(_0x4da78f,null));};exports[_0xe9f0('0x25')]=function(_0x3c26ac,_0x4f1c25){return db[_0xe9f0('0x30')]['find']({'where':{'id':_0x3c26ac[_0xe9f0('0x45')]['id']}})[_0xe9f0('0x24')](handleEntityNotFound(_0x4f1c25,null))[_0xe9f0('0x24')](db['CmContactHasItem']['update']({'ItemTypeId':null},{'where':{'ItemTypeId':_0x3c26ac[_0xe9f0('0x45')]['id']}}))['then'](removeEntity(_0x4f1c25,null))[_0xe9f0('0x43')](handleError(_0x4f1c25,null));};
\ No newline at end of file
index b30b792..9a62eb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x911c=['util','../../config/logger','api','request-promise','rimraf','./contactItemType.attributes','define','ContactItemType','tools_contact_item_types'];(function(_0x57ebf0,_0x5739bf){var _0x135aa9=function(_0x32561f){while(--_0x32561f){_0x57ebf0['push'](_0x57ebf0['shift']());}};_0x135aa9(++_0x5739bf);}(_0x911c,0x7e));var _0xc911=function(_0x3b76e9,_0x39efb2){_0x3b76e9=_0x3b76e9-0x0;var _0x43489c=_0x911c[_0x3b76e9];return _0x43489c;};'use strict';var _=require('lodash');var util=require(_0xc911('0x0'));var logger=require(_0xc911('0x1'))(_0xc911('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc911('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc911('0x4'));var config=require('../../config/environment');var attributes=require(_0xc911('0x5'));module['exports']=function(_0x570608,_0x15bdb2){return _0x570608[_0xc911('0x6')](_0xc911('0x7'),attributes,{'tableName':_0xc911('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd934=['rimraf','../../config/environment','exports','define','tools_contact_item_types','lodash','util','../../config/logger','moment','path'];(function(_0x6c023d,_0x33662d){var _0xae9ed5=function(_0x1ac6d0){while(--_0x1ac6d0){_0x6c023d['push'](_0x6c023d['shift']());}};_0xae9ed5(++_0x33662d);}(_0xd934,0x131));var _0x4d93=function(_0x3a6bca,_0x5dbf24){_0x3a6bca=_0x3a6bca-0x0;var _0x34a210=_0xd934[_0x3a6bca];return _0x34a210;};'use strict';var _=require(_0x4d93('0x0'));var util=require(_0x4d93('0x1'));var logger=require(_0x4d93('0x2'))('api');var moment=require(_0x4d93('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d93('0x4'));var rimraf=require(_0x4d93('0x5'));var config=require(_0x4d93('0x6'));var attributes=require('./contactItemType.attributes');module[_0x4d93('0x7')]=function(_0x1239bf,_0x556d87){return _0x1239bf[_0x4d93('0x8')]('ContactItemType',attributes,{'tableName':_0x4d93('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb00256..59f61f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0de8=['ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x52e881,_0x5bcfe8){var _0x482df6=function(_0x4a1b83){while(--_0x4a1b83){_0x52e881['push'](_0x52e881['shift']());}};_0x482df6(++_0x5bcfe8);}(_0x0de8,0x1e9));var _0x80de=function(_0x1484c4,_0x2d844b){_0x1484c4=_0x1484c4-0x0;var _0x598b70=_0x0de8[_0x1484c4];return _0x598b70;};'use strict';var _=require(_0x80de('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x80de('0x1'));var fs=require('fs');var Redis=require(_0x80de('0x2'));var db=require(_0x80de('0x3'))['db'];var utils=require(_0x80de('0x4'));var logger=require(_0x80de('0x5'))('rpc');var config=require(_0x80de('0x6'));var jayson=require(_0x80de('0x7'));var client=jayson[_0x80de('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16ff5d,_0x32cb4e,_0x4b9d4a){return new BPromise(function(_0x317183,_0x493b32){return client[_0x80de('0x9')](_0x16ff5d,_0x4b9d4a)[_0x80de('0xa')](function(_0x5d26e5){logger[_0x80de('0xb')](_0x80de('0xc'),_0x32cb4e,_0x80de('0xd'));logger[_0x80de('0xe')](_0x80de('0xf'),_0x32cb4e,_0x80de('0xd'),JSON[_0x80de('0x10')](_0x5d26e5));if(_0x5d26e5[_0x80de('0x11')]){if(_0x5d26e5[_0x80de('0x11')]['code']===0x1f4){logger['error']('ContactItemType,\x20%s,\x20%s',_0x32cb4e,_0x5d26e5[_0x80de('0x11')][_0x80de('0x12')]);return _0x493b32(_0x5d26e5[_0x80de('0x11')]['message']);}logger[_0x80de('0x11')](_0x80de('0xc'),_0x32cb4e,_0x5d26e5[_0x80de('0x11')][_0x80de('0x12')]);return _0x317183(_0x5d26e5[_0x80de('0x11')][_0x80de('0x12')]);}else{logger[_0x80de('0xb')](_0x80de('0xc'),_0x32cb4e,_0x80de('0xd'));_0x317183(_0x5d26e5[_0x80de('0x13')][_0x80de('0x12')]);}})[_0x80de('0x14')](function(_0x4777f1){logger[_0x80de('0x11')]('ContactItemType,\x20%s,\x20%s',_0x32cb4e,_0x4777f1);_0x493b32(_0x4777f1);});});}
\ No newline at end of file
+var _0xb927=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','ContactItemType,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xb927,0xa9));var _0x7b92=function(_0x5f7a83,_0x322a2f){_0x5f7a83=_0x5f7a83-0x0;var _0xf05190=_0xb927[_0x5f7a83];return _0xf05190;};'use strict';var _=require('lodash');var util=require(_0x7b92('0x0'));var moment=require(_0x7b92('0x1'));var BPromise=require(_0x7b92('0x2'));var rs=require(_0x7b92('0x3'));var fs=require('fs');var Redis=require(_0x7b92('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7b92('0x5'));var logger=require(_0x7b92('0x6'))(_0x7b92('0x7'));var config=require(_0x7b92('0x8'));var jayson=require(_0x7b92('0x9'));var client=jayson[_0x7b92('0xa')][_0x7b92('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c5b67,_0xcf00e0,_0x14efaf){return new BPromise(function(_0x507e5c,_0x2fa60e){return client[_0x7b92('0xc')](_0x3c5b67,_0x14efaf)[_0x7b92('0xd')](function(_0x1b2234){logger[_0x7b92('0xe')](_0x7b92('0xf'),_0xcf00e0,_0x7b92('0x10'));logger['debug'](_0x7b92('0x11'),_0xcf00e0,_0x7b92('0x10'),JSON['stringify'](_0x1b2234));if(_0x1b2234['error']){if(_0x1b2234[_0x7b92('0x12')][_0x7b92('0x13')]===0x1f4){logger['error'](_0x7b92('0xf'),_0xcf00e0,_0x1b2234['error'][_0x7b92('0x14')]);return _0x2fa60e(_0x1b2234[_0x7b92('0x12')][_0x7b92('0x14')]);}logger[_0x7b92('0x12')](_0x7b92('0xf'),_0xcf00e0,_0x1b2234[_0x7b92('0x12')]['message']);return _0x507e5c(_0x1b2234[_0x7b92('0x12')][_0x7b92('0x14')]);}else{logger[_0x7b92('0xe')](_0x7b92('0xf'),_0xcf00e0,_0x7b92('0x10'));_0x507e5c(_0x1b2234['result'][_0x7b92('0x14')]);}})[_0x7b92('0x15')](function(_0x4b6aaf){logger['error'](_0x7b92('0xf'),_0xcf00e0,_0x4b6aaf);_0x2fa60e(_0x4b6aaf);});});}
\ No newline at end of file
index 26bf45a..6d90706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1474=['Router','fs-extra','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','index','post','put','/:id','isAuthenticated','update','delete','exports','multer','util','path','express'];(function(_0x1f0639,_0x306cfb){var _0x1080c2=function(_0x3d6490){while(--_0x3d6490){_0x1f0639['push'](_0x1f0639['shift']());}};_0x1080c2(++_0x306cfb);}(_0x1474,0x7a));var _0x4147=function(_0x33e4a7,_0x2e80a2){_0x33e4a7=_0x33e4a7-0x0;var _0x598620=_0x1474[_0x33e4a7];return _0x598620;};'use strict';var multer=require(_0x4147('0x0'));var util=require(_0x4147('0x1'));var path=require(_0x4147('0x2'));var timeout=require('connect-timeout');var express=require(_0x4147('0x3'));var router=express[_0x4147('0x4')]();var fs_extra=require(_0x4147('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4147('0x6'));var config=require(_0x4147('0x7'));var controller=require(_0x4147('0x8'));router[_0x4147('0x9')]('/',auth['isAuthenticated'](),controller[_0x4147('0xa')]);router[_0x4147('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x4147('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4147('0xc')](_0x4147('0xd'),auth[_0x4147('0xe')](),controller[_0x4147('0xf')]);router[_0x4147('0x10')]('/:id',auth[_0x4147('0xe')](),controller['destroy']);module[_0x4147('0x11')]=router;
\ No newline at end of file
+var _0x4dfa=['get','/:id','isAuthenticated','put','exports','multer','connect-timeout','Router','../../config/environment','./contactItemType.controller','index'];(function(_0x56daff,_0xadca9a){var _0x132c82=function(_0x19e0d7){while(--_0x19e0d7){_0x56daff['push'](_0x56daff['shift']());}};_0x132c82(++_0xadca9a);}(_0x4dfa,0xec));var _0xa4df=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x4dfa[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0xa4df('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa4df('0x1'));var express=require('express');var router=express[_0xa4df('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa4df('0x3'));var controller=require(_0xa4df('0x4'));router['get']('/',auth['isAuthenticated'](),controller[_0xa4df('0x5')]);router[_0xa4df('0x6')](_0xa4df('0x7'),auth[_0xa4df('0x8')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa4df('0x9')]('/:id',auth[_0xa4df('0x8')](),controller['update']);router['delete'](_0xa4df('0x7'),auth[_0xa4df('0x8')](),controller['destroy']);module[_0xa4df('0xa')]=router;
\ No newline at end of file
index cdc073b..730b9ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x1aaaee,_0x536453){var _0x23dd57=function(_0x17285d){while(--_0x17285d){_0x1aaaee['push'](_0x1aaaee['shift']());}};_0x23dd57(++_0x536453);}(_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 _0xd8b0=['exports','sequelize'];(function(_0x339b49,_0x23de01){var _0x3c6365=function(_0x175cb1){while(--_0x175cb1){_0x339b49['push'](_0x339b49['shift']());}};_0x3c6365(++_0x23de01);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 77a7898..6ec037c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30b8=['updatedAt','body','update','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','order','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Dashboard','rawAttributes','type','model','query','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','CustomDashboards','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt'];(function(_0x30d9a1,_0x3b273e){var _0x4c927a=function(_0x4f731b){while(--_0x4f731b){_0x30d9a1['push'](_0x30d9a1['shift']());}};_0x4c927a(++_0x3b273e);}(_0x30b8,0x11c));var _0x830b=function(_0x4f20c2,_0x3da7b5){_0x4f20c2=_0x4f20c2-0x0;var _0x4cffe3=_0x30b8[_0x4f20c2];return _0x4cffe3;};'use strict';var emlformat=require(_0x830b('0x0'));var rimraf=require(_0x830b('0x1'));var zipdir=require(_0x830b('0x2'));var jsonpatch=require(_0x830b('0x3'));var rp=require(_0x830b('0x4'));var moment=require(_0x830b('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x830b('0x6'));var util=require(_0x830b('0x7'));var path=require('path');var sox=require(_0x830b('0x8'));var csv=require(_0x830b('0x9'));var ejs=require(_0x830b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x830b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x830b('0xc'));var deskjs=require(_0x830b('0xd'));var toCsv=require(_0x830b('0x9'));var querystring=require(_0x830b('0xe'));var Papa=require('papaparse');var Redis=require(_0x830b('0xf'));var authService=require(_0x830b('0x10'));var qs=require(_0x830b('0x11'));var as=require(_0x830b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x830b('0x13'))(_0x830b('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x830b('0x15'))['db'];config[_0x830b('0x16')]=_[_0x830b('0x17')](config['redis'],{'host':_0x830b('0x18'),'port':0x18eb});var socket=require(_0x830b('0x19'))(new Redis(config['redis']));require(_0x830b('0x1a'))[_0x830b('0x1b')](socket);function respondWithStatusCode(_0x230452,_0x5329dd){_0x5329dd=_0x5329dd||0xcc;return function(_0x3edc){if(_0x3edc){return _0x230452[_0x830b('0x1c')](_0x5329dd);}return _0x230452[_0x830b('0x1d')](_0x5329dd)[_0x830b('0x1e')]();};}function respondWithResult(_0x5de9fd,_0x51a812){_0x51a812=_0x51a812||0xc8;return function(_0x44b45a){if(_0x44b45a){return _0x5de9fd[_0x830b('0x1d')](_0x51a812)[_0x830b('0x1f')](_0x44b45a);}};}function respondWithFilteredResult(_0x199b28,_0x3e134b){return function(_0x70ac4c){if(_0x70ac4c){var _0x347bb3=typeof _0x3e134b[_0x830b('0x20')]==='undefined'&&typeof _0x3e134b[_0x830b('0x21')]===_0x830b('0x22');var _0x205be0=_0x70ac4c['count'];var _0x57d1d6=_0x347bb3?0x0:_0x3e134b[_0x830b('0x20')];var _0x2098cf=_0x347bb3?_0x70ac4c[_0x830b('0x23')]:_0x3e134b[_0x830b('0x20')]+_0x3e134b['limit'];var _0x3509e0;if(_0x2098cf>=_0x205be0){_0x2098cf=_0x205be0;_0x3509e0=0xc8;}else{_0x3509e0=0xce;}_0x199b28[_0x830b('0x1d')](_0x3509e0);return _0x199b28['set'](_0x830b('0x24'),_0x57d1d6+'-'+_0x2098cf+'/'+_0x205be0)[_0x830b('0x1f')](_0x70ac4c);}return null;};}function patchUpdates(_0x5c418a){return function(_0x30ed34){try{jsonpatch['apply'](_0x30ed34,_0x5c418a,!![]);}catch(_0x17e22a){return BPromise[_0x830b('0x25')](_0x17e22a);}return _0x30ed34['save']();};}function saveUpdates(_0x54c13,_0x1143a8){return function(_0x1d3084){if(_0x1d3084){return _0x1d3084['update'](_0x54c13)[_0x830b('0x26')](function(_0x371908){return _0x371908;});}return null;};}function removeEntity(_0x3b4150,_0x341a90){return function(_0x55c4d6){if(_0x55c4d6){return _0x55c4d6[_0x830b('0x27')]()[_0x830b('0x26')](function(){var _0x3e62fa=_0x55c4d6[_0x830b('0x28')]({'plain':!![]});var _0xaf4668='CustomDashboards';return db[_0x830b('0x29')]['destroy']({'where':{'type':_0xaf4668,'resourceId':_0x3e62fa['id']}})['then'](function(){return _0x55c4d6;});})[_0x830b('0x26')](function(){_0x3b4150[_0x830b('0x1d')](0xcc)[_0x830b('0x1e')]();});}};}function handleEntityNotFound(_0x33cde3,_0xa15206){return function(_0x33fe76){if(!_0x33fe76){_0x33cde3[_0x830b('0x1c')](0x194);}return _0x33fe76;};}function handleError(_0x23fe32,_0x352a8b){_0x352a8b=_0x352a8b||0x1f4;return function(_0x18f963){logger[_0x830b('0x2a')](_0x18f963[_0x830b('0x2b')]);if(_0x18f963['name']){delete _0x18f963[_0x830b('0x2c')];}_0x23fe32[_0x830b('0x1d')](_0x352a8b)[_0x830b('0x2d')](_0x18f963);};}exports[_0x830b('0x2e')]=function(_0x3539c1,_0x87b215){var _0x456d11={},_0x4ab6cf={},_0x22fbc5={'count':0x0,'rows':[]};var _0x202a9b=_[_0x830b('0x2f')](db[_0x830b('0x30')][_0x830b('0x31')],function(_0xe835f3){return{'name':_0xe835f3['fieldName'],'type':_0xe835f3[_0x830b('0x32')]['key']};});_0x4ab6cf[_0x830b('0x33')]=_[_0x830b('0x2f')](_0x202a9b,'name');_0x4ab6cf['query']=_['keys'](_0x3539c1[_0x830b('0x34')]);_0x4ab6cf[_0x830b('0x35')]=_[_0x830b('0x36')](_0x4ab6cf[_0x830b('0x33')],_0x4ab6cf['query']);_0x456d11['attributes']=_[_0x830b('0x36')](_0x4ab6cf[_0x830b('0x33')],qs[_0x830b('0x37')](_0x3539c1[_0x830b('0x34')][_0x830b('0x37')]));_0x456d11['attributes']=_0x456d11[_0x830b('0x38')][_0x830b('0x39')]?_0x456d11['attributes']:_0x4ab6cf[_0x830b('0x33')];if(!_0x3539c1[_0x830b('0x34')]['hasOwnProperty'](_0x830b('0x3a'))){_0x456d11[_0x830b('0x21')]=qs['limit'](_0x3539c1[_0x830b('0x34')][_0x830b('0x21')]);_0x456d11[_0x830b('0x20')]=qs[_0x830b('0x20')](_0x3539c1['query']['offset']);}_0x456d11['order']=qs[_0x830b('0x3b')](_0x3539c1['query'][_0x830b('0x3b')]);_0x456d11[_0x830b('0x3c')]=qs[_0x830b('0x35')](_[_0x830b('0x3d')](_0x3539c1['query'],_0x4ab6cf[_0x830b('0x35')]),_0x202a9b);if(_0x3539c1[_0x830b('0x34')][_0x830b('0x3e')]){_0x456d11[_0x830b('0x3c')]=_['merge'](_0x456d11['where'],{'$or':_[_0x830b('0x2f')](_0x202a9b,function(_0x32b7a7){if(_0x32b7a7[_0x830b('0x32')]!==_0x830b('0x3f')){var _0x5ce2f0={};_0x5ce2f0[_0x32b7a7[_0x830b('0x2c')]]={'$like':'%'+_0x3539c1[_0x830b('0x34')]['filter']+'%'};return _0x5ce2f0;}})});}_0x456d11=_[_0x830b('0x40')]({},_0x456d11,_0x3539c1[_0x830b('0x41')]);var _0x9571e0={'where':_0x456d11[_0x830b('0x3c')]};return db['Dashboard'][_0x830b('0x23')](_0x9571e0)['then'](function(_0x598796){_0x22fbc5[_0x830b('0x23')]=_0x598796;if(_0x3539c1[_0x830b('0x34')][_0x830b('0x42')]){_0x456d11[_0x830b('0x43')]=[{'all':!![]}];}return db[_0x830b('0x30')]['findAll'](_0x456d11);})[_0x830b('0x26')](function(_0x2c97e7){_0x22fbc5[_0x830b('0x44')]=_0x2c97e7;return _0x22fbc5;})['then'](respondWithFilteredResult(_0x87b215,_0x456d11))[_0x830b('0x45')](handleError(_0x87b215,null));};exports[_0x830b('0x46')]=function(_0xd8bf4c,_0x1ab1c4){var _0x558562={'raw':![],'where':{'id':_0xd8bf4c[_0x830b('0x47')]['id']}},_0x48f398={};_0x48f398[_0x830b('0x33')]=_[_0x830b('0x48')](db[_0x830b('0x30')][_0x830b('0x31')]);_0x48f398['query']=_[_0x830b('0x48')](_0xd8bf4c[_0x830b('0x34')]);_0x48f398[_0x830b('0x35')]=_['intersection'](_0x48f398[_0x830b('0x33')],_0x48f398['query']);_0x558562[_0x830b('0x38')]=_[_0x830b('0x36')](_0x48f398[_0x830b('0x33')],qs[_0x830b('0x37')](_0xd8bf4c[_0x830b('0x34')][_0x830b('0x37')]));_0x558562[_0x830b('0x38')]=_0x558562['attributes'][_0x830b('0x39')]?_0x558562[_0x830b('0x38')]:_0x48f398[_0x830b('0x33')];if(_0xd8bf4c[_0x830b('0x34')][_0x830b('0x42')]){_0x558562['include']=[{'all':!![]}];}_0x558562=_['merge']({},_0x558562,_0xd8bf4c['options']);return db['Dashboard'][_0x830b('0x49')](_0x558562)['then'](handleEntityNotFound(_0x1ab1c4,null))[_0x830b('0x26')](respondWithResult(_0x1ab1c4,null))['catch'](handleError(_0x1ab1c4,null));};exports[_0x830b('0x4a')]=function(_0x3c58dd,_0x5c8cec){return db[_0x830b('0x30')]['create'](_0x3c58dd['body'],{})[_0x830b('0x26')](function(_0x1d1e18){var _0xdc3019=_0x3c58dd[_0x830b('0x4b')][_0x830b('0x28')]({'plain':!![]});if(!_0xdc3019)throw new Error(_0x830b('0x4c'));if(_0xdc3019['role']===_0x830b('0x4b')){var _0x2810ed=_0x1d1e18[_0x830b('0x28')]({'plain':!![]});var _0x31d760=_0x830b('0x4d');return db[_0x830b('0x4e')][_0x830b('0x49')]({'where':{'name':_0x31d760,'userProfileId':_0xdc3019[_0x830b('0x4f')]},'raw':!![]})[_0x830b('0x26')](function(_0x3cf434){if(_0x3cf434&&_0x3cf434[_0x830b('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x2810ed[_0x830b('0x2c')],'resourceId':_0x2810ed['id'],'type':_0x3cf434[_0x830b('0x2c')],'sectionId':_0x3cf434['id']},{})[_0x830b('0x26')](function(){return _0x1d1e18;});}else{return _0x1d1e18;}})[_0x830b('0x45')](function(_0x19b741){logger['error'](_0x830b('0x51'),_0x19b741);throw _0x19b741;});}return _0x1d1e18;})[_0x830b('0x26')](respondWithResult(_0x5c8cec,0xc9))[_0x830b('0x45')](handleError(_0x5c8cec,null));};exports[_0x830b('0x52')]=function(_0x16c3d1,_0x479f2c){var _0x1f6974={'where':{'id':_0x16c3d1[_0x830b('0x47')]['id']}},_0x2294be={};_0x2294be[_0x830b('0x33')]=_[_0x830b('0x48')](db['Dashboard']['rawAttributes']);_0x1f6974['attributes']=_[_0x830b('0x36')](_0x2294be[_0x830b('0x33')],qs['fields'](_0x16c3d1[_0x830b('0x34')][_0x830b('0x37')]));_0x1f6974[_0x830b('0x38')]=_0x1f6974[_0x830b('0x38')]['length']?_0x1f6974[_0x830b('0x38')]:_0x2294be[_0x830b('0x33')];if(_0x16c3d1[_0x830b('0x34')][_0x830b('0x42')]){_0x1f6974[_0x830b('0x43')]=[{'all':!![]}];}_0x1f6974=_[_0x830b('0x40')]({},_0x1f6974,_0x16c3d1[_0x830b('0x41')]);return db[_0x830b('0x30')][_0x830b('0x49')](_0x1f6974)[_0x830b('0x26')](handleEntityNotFound(_0x479f2c,null))[_0x830b('0x26')](function(_0x3ba4dd){if(_0x3ba4dd){var _0x17df4b=_0x3ba4dd['get']({'plain':!![]});_0x17df4b=qs[_0x830b('0x53')](_0x17df4b,['id',_0x830b('0x54'),_0x830b('0x55')]);_0x16c3d1[_0x830b('0x56')]=_[_0x830b('0x53')](_0x16c3d1[_0x830b('0x56')],['id','createdAt','updatedAt']);return db[_0x830b('0x30')]['create'](_[_0x830b('0x40')](_0x17df4b,_0x16c3d1[_0x830b('0x56')]),{'include':_0x16c3d1[_0x830b('0x34')][_0x830b('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x446281){var _0x585d5a=_0x16c3d1[_0x830b('0x4b')]['get']({'plain':!![]});if(!_0x585d5a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x585d5a['role']==='user'){var _0x59af10=_0x446281[_0x830b('0x28')]({'plain':!![]});var _0x44744f='CustomDashboards';return db[_0x830b('0x4e')][_0x830b('0x49')]({'where':{'name':_0x44744f,'userProfileId':_0x585d5a['userProfileId']},'raw':!![]})[_0x830b('0x26')](function(_0x438326){if(_0x438326&&_0x438326[_0x830b('0x50')]===0x0){return db[_0x830b('0x29')][_0x830b('0x4a')]({'name':_0x59af10[_0x830b('0x2c')],'resourceId':_0x59af10['id'],'type':_0x438326[_0x830b('0x2c')],'sectionId':_0x438326['id']},{})[_0x830b('0x26')](function(){return _0x446281;});}else{return _0x446281;}})['catch'](function(_0x1fae3e){logger['error'](_0x830b('0x51'),_0x1fae3e);throw _0x1fae3e;});}return _0x446281;});}})[_0x830b('0x26')](respondWithResult(_0x479f2c,0xc9))[_0x830b('0x45')](handleError(_0x479f2c,null));};exports[_0x830b('0x57')]=function(_0x12dc42,_0x11b755){if(_0x12dc42[_0x830b('0x56')]['id']){delete _0x12dc42[_0x830b('0x56')]['id'];}return db['Dashboard'][_0x830b('0x49')]({'where':{'id':_0x12dc42[_0x830b('0x47')]['id']}})[_0x830b('0x26')](handleEntityNotFound(_0x11b755,null))[_0x830b('0x26')](saveUpdates(_0x12dc42[_0x830b('0x56')],null))[_0x830b('0x26')](respondWithResult(_0x11b755,null))[_0x830b('0x45')](handleError(_0x11b755,null));};exports[_0x830b('0x27')]=function(_0x519b62,_0x40043f){return db[_0x830b('0x30')]['find']({'where':{'id':_0x519b62[_0x830b('0x47')]['id']}})['then'](handleEntityNotFound(_0x40043f,null))[_0x830b('0x26')](removeEntity(_0x40043f,null))[_0x830b('0x45')](handleError(_0x40043f,null));};function widgetAttributes(_0x49fe6c){try{switch(_0x49fe6c[_0x830b('0x32')]){case'iframe':return[{'name':_0x830b('0x58'),'value':_0x49fe6c[_0x830b('0x58')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x0]?_0x49fe6c[_0x830b('0x59')][0x0][_0x830b('0x5a')]:undefined)||_0x830b('0x5b')}];case _0x830b('0x5c'):return[{'name':'attrPath','value':_0x49fe6c[_0x830b('0x5d')]||(_0x49fe6c['attrs']&&_0x49fe6c[_0x830b('0x59')][0x0]?_0x49fe6c[_0x830b('0x59')][0x0]['value']:undefined)||''}];case _0x830b('0x5e'):return[{'name':_0x830b('0x5f'),'value':_0x49fe6c[_0x830b('0x5f')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x0]?_0x49fe6c[_0x830b('0x59')][0x0][_0x830b('0x5a')]:undefined)||_0x830b('0x60')},{'name':_0x830b('0x61'),'value':_0x49fe6c[_0x830b('0x61')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x1]?_0x49fe6c[_0x830b('0x59')][0x1][_0x830b('0x5a')]:undefined)||'0.00'},{'name':_0x830b('0x62'),'value':_0x49fe6c[_0x830b('0x62')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x2]?_0x49fe6c[_0x830b('0x59')][0x2][_0x830b('0x5a')]:undefined)||0xc}];case'counter':return[{'name':_0x830b('0x63'),'value':_0x49fe6c[_0x830b('0x63')]||(_0x49fe6c['attrs']&&_0x49fe6c[_0x830b('0x59')][0x0]?_0x49fe6c['attrs'][0x0][_0x830b('0x5a')]:undefined)||_0x830b('0x64')},{'name':_0x830b('0x65'),'value':_0x49fe6c[_0x830b('0x65')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x1]?_0x49fe6c[_0x830b('0x59')][0x1][_0x830b('0x5a')]:undefined)||[]},{'name':'attrFontSize','value':_0x49fe6c[_0x830b('0x62')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x2]?_0x49fe6c['attrs'][0x2][_0x830b('0x5a')]:undefined)||0x14},{'name':_0x830b('0x66'),'value':_0x49fe6c[_0x830b('0x66')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x3]?_0x49fe6c['attrs'][0x3]['value']:undefined)||_0x830b('0x67')},{'name':_0x830b('0x68'),'value':_0x49fe6c[_0x830b('0x68')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x4]?_0x49fe6c[_0x830b('0x59')][0x4][_0x830b('0x5a')]:undefined)||''},{'name':_0x830b('0x69'),'value':_0x49fe6c[_0x830b('0x69')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x5]?_0x49fe6c[_0x830b('0x59')][0x5]['value']:undefined)||''},{'name':'attrSmsAccounts','value':_0x49fe6c[_0x830b('0x6a')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c['attrs'][0x6]?_0x49fe6c[_0x830b('0x59')][0x6][_0x830b('0x5a')]:undefined)||''},{'name':_0x830b('0x6b'),'value':_0x49fe6c[_0x830b('0x6b')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x7]?_0x49fe6c[_0x830b('0x59')][0x7][_0x830b('0x5a')]:undefined)||''},{'name':_0x830b('0x6c'),'value':_0x49fe6c[_0x830b('0x6c')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c['attrs'][0x8]?_0x49fe6c[_0x830b('0x59')][0x8][_0x830b('0x5a')]:undefined)||''},{'name':_0x830b('0x6d'),'value':_0x49fe6c['attrChatWebsites']||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x9]?_0x49fe6c[_0x830b('0x59')][0x9][_0x830b('0x5a')]:undefined)||''}];case _0x830b('0x6e'):case'pie-chart':return[{'name':_0x830b('0x6f'),'value':_0x49fe6c['attrSerie1']||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x0]?_0x49fe6c['attrs'][0x0][_0x830b('0x5a')]:undefined)||_0x830b('0x64')},{'name':_0x830b('0x70'),'value':_0x49fe6c[_0x830b('0x70')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x1]?_0x49fe6c[_0x830b('0x59')][0x1][_0x830b('0x5a')]:undefined)||null},{'name':_0x830b('0x71'),'value':_0x49fe6c[_0x830b('0x71')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c['attrs'][0x2]?_0x49fe6c[_0x830b('0x59')][0x2][_0x830b('0x5a')]:undefined)||null},{'name':_0x830b('0x65'),'value':_0x49fe6c[_0x830b('0x65')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c['attrs'][0x3]?_0x49fe6c[_0x830b('0x59')][0x3][_0x830b('0x5a')]:undefined)||[]},{'name':_0x830b('0x66'),'value':_0x49fe6c[_0x830b('0x66')]||(_0x49fe6c['attrs']&&_0x49fe6c[_0x830b('0x59')][0x4]?_0x49fe6c[_0x830b('0x59')][0x4]['value']:undefined)||_0x830b('0x67')},{'name':_0x830b('0x68'),'value':_0x49fe6c[_0x830b('0x68')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x5]?_0x49fe6c['attrs'][0x5][_0x830b('0x5a')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x49fe6c[_0x830b('0x69')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x6]?_0x49fe6c[_0x830b('0x59')][0x6][_0x830b('0x5a')]:undefined)||''},{'name':_0x830b('0x6a'),'value':_0x49fe6c[_0x830b('0x6a')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x7]?_0x49fe6c[_0x830b('0x59')][0x7][_0x830b('0x5a')]:undefined)||''},{'name':_0x830b('0x6b'),'value':_0x49fe6c[_0x830b('0x6b')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x8]?_0x49fe6c[_0x830b('0x59')][0x8][_0x830b('0x5a')]:undefined)||''},{'name':_0x830b('0x6c'),'value':_0x49fe6c[_0x830b('0x6c')]||(_0x49fe6c['attrs']&&_0x49fe6c['attrs'][0x9]?_0x49fe6c['attrs'][0x9]['value']:undefined)||''},{'name':_0x830b('0x6d'),'value':_0x49fe6c['attrChatWebsites']||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0xa]?_0x49fe6c['attrs'][0xa][_0x830b('0x5a')]:undefined)||''}];case _0x830b('0x72'):return[{'name':_0x830b('0x73'),'type':_0x49fe6c['reportType']||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c[_0x830b('0x59')][0x0]?_0x49fe6c['attrs'][0x0]['type']:undefined)||null,'value':_0x49fe6c['attrReport']||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c['attrs'][0x0]?_0x49fe6c['attrs'][0x0][_0x830b('0x5a')]:undefined)||null},{'name':_0x830b('0x74'),'value':_0x49fe6c[_0x830b('0x74')]||(_0x49fe6c[_0x830b('0x59')]&&_0x49fe6c['attrs'][0x1]?_0x49fe6c[_0x830b('0x59')][0x1][_0x830b('0x5a')]:undefined)||0x0}];default:return[];}}catch(_0x38076a){logger[_0x830b('0x2a')](_0x830b('0x75'),JSON['stringify'](_0x38076a));return[];}}exports[_0x830b('0x76')]=function(_0x436756,_0x571d57,_0x3b022e){if(_0x436756[_0x830b('0x56')]['id']){delete _0x436756['body']['id'];}return db[_0x830b('0x30')][_0x830b('0x49')]({'where':{'id':_0x436756[_0x830b('0x47')]['id']}})['then'](handleEntityNotFound(_0x571d57,null))['then'](function(_0x3a5e80){if(_0x3a5e80){_0x436756[_0x830b('0x56')][_0x830b('0x77')]=_0x3a5e80['id'];_0x436756[_0x830b('0x56')]['attrs']=widgetAttributes(_0x436756[_0x830b('0x56')]);return db[_0x830b('0x78')][_0x830b('0x4a')](_0x436756[_0x830b('0x56')]);}})['then'](respondWithResult(_0x571d57,null))[_0x830b('0x45')](handleError(_0x571d57,null));};exports[_0x830b('0x79')]=function(_0x504187,_0x33427c,_0xffc49b){var _0x5b0389={};var _0x20b08f={};var _0x288612;var _0x7e468e;return db[_0x830b('0x30')]['findOne']({'where':{'id':_0x504187[_0x830b('0x47')]['id']}})['then'](handleEntityNotFound(_0x33427c,null))['then'](function(_0x28d574){if(_0x28d574){_0x288612=_0x28d574;_0x20b08f['model']=_[_0x830b('0x48')](db['DashboardItem'][_0x830b('0x31')]);_0x20b08f[_0x830b('0x34')]=_[_0x830b('0x48')](_0x504187['query']);_0x20b08f[_0x830b('0x35')]=_[_0x830b('0x36')](_0x20b08f[_0x830b('0x33')],_0x20b08f[_0x830b('0x34')]);_0x5b0389['attributes']=_[_0x830b('0x36')](_0x20b08f[_0x830b('0x33')],qs['fields'](_0x504187[_0x830b('0x34')]['fields']));_0x5b0389['attributes']=_0x5b0389['attributes'][_0x830b('0x39')]?_0x5b0389[_0x830b('0x38')]:_0x20b08f[_0x830b('0x33')];_0x5b0389[_0x830b('0x7a')]=qs['sort'](_0x504187[_0x830b('0x34')][_0x830b('0x3b')]);_0x5b0389[_0x830b('0x3c')]=qs[_0x830b('0x35')](_['pick'](_0x504187[_0x830b('0x34')],_0x20b08f[_0x830b('0x35')]));if(_0x504187[_0x830b('0x34')][_0x830b('0x3e')]){_0x5b0389[_0x830b('0x3c')]=_[_0x830b('0x40')](_0x5b0389['where'],{'$or':_[_0x830b('0x2f')](_0x5b0389[_0x830b('0x38')],function(_0x235435){var _0x31a31c={};_0x31a31c[_0x235435]={'$like':'%'+_0x504187['query']['filter']+'%'};return _0x31a31c;})});}_0x5b0389=_[_0x830b('0x40')]({},_0x5b0389,_0x504187[_0x830b('0x41')]);return _0x288612[_0x830b('0x79')](_0x5b0389);}})['then'](function(_0x2b020f){if(_0x2b020f){_0x7e468e=_0x2b020f['length'];if(!_0x504187['query']['hasOwnProperty'](_0x830b('0x3a'))){_0x5b0389[_0x830b('0x21')]=qs[_0x830b('0x21')](_0x504187[_0x830b('0x34')][_0x830b('0x21')]);_0x5b0389[_0x830b('0x20')]=qs['offset'](_0x504187[_0x830b('0x34')][_0x830b('0x20')]);}return _0x288612[_0x830b('0x79')](_0x5b0389);}})[_0x830b('0x26')](function(_0x3f8199){if(_0x3f8199){return _0x3f8199?{'count':_0x7e468e,'rows':_0x3f8199}:null;}})[_0x830b('0x26')](respondWithResult(_0x33427c,null))['catch'](handleError(_0x33427c,null));};
\ No newline at end of file
+var _0x4370=['attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','getItems','findOne','DashboardItem','hasOwnProperty','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','get','destroy','end','error','name','send','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','options','Dashboard','includeAll','include','findAll','rows','catch','params','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','CustomDashboards','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','role','UserProfileSection','UserProfileResource','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues'];(function(_0x3cf6a3,_0xc502f9){var _0x26c993=function(_0x34844f){while(--_0x34844f){_0x3cf6a3['push'](_0x3cf6a3['shift']());}};_0x26c993(++_0xc502f9);}(_0x4370,0x1ac));var _0x0437=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x4370[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require(_0x0437('0x0'));var rimraf=require(_0x0437('0x1'));var zipdir=require(_0x0437('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0437('0x3'));var BPromise=require(_0x0437('0x4'));var Mustache=require(_0x0437('0x5'));var util=require(_0x0437('0x6'));var path=require(_0x0437('0x7'));var sox=require(_0x0437('0x8'));var csv=require(_0x0437('0x9'));var ejs=require(_0x0437('0xa'));var fs=require('fs');var fs_extra=require(_0x0437('0xb'));var _=require('lodash');var squel=require(_0x0437('0xc'));var crypto=require(_0x0437('0xd'));var jsforce=require(_0x0437('0xe'));var deskjs=require(_0x0437('0xf'));var toCsv=require(_0x0437('0x9'));var querystring=require(_0x0437('0x10'));var Papa=require('papaparse');var Redis=require(_0x0437('0x11'));var authService=require(_0x0437('0x12'));var qs=require(_0x0437('0x13'));var as=require(_0x0437('0x14'));var hardwareService=require(_0x0437('0x15'));var logger=require(_0x0437('0x16'))(_0x0437('0x17'));var utils=require(_0x0437('0x18'));var config=require(_0x0437('0x19'));var licenseUtil=require(_0x0437('0x1a'));var db=require(_0x0437('0x1b'))['db'];config[_0x0437('0x1c')]=_[_0x0437('0x1d')](config['redis'],{'host':_0x0437('0x1e'),'port':0x18eb});var socket=require(_0x0437('0x1f'))(new Redis(config[_0x0437('0x1c')]));require(_0x0437('0x20'))[_0x0437('0x21')](socket);function respondWithStatusCode(_0xcb3795,_0x488366){_0x488366=_0x488366||0xcc;return function(_0x56d26f){if(_0x56d26f){return _0xcb3795[_0x0437('0x22')](_0x488366);}return _0xcb3795[_0x0437('0x23')](_0x488366)['end']();};}function respondWithResult(_0x3eff2c,_0x42be6c){_0x42be6c=_0x42be6c||0xc8;return function(_0xe458a7){if(_0xe458a7){return _0x3eff2c[_0x0437('0x23')](_0x42be6c)[_0x0437('0x24')](_0xe458a7);}};}function respondWithFilteredResult(_0x44f5e5,_0x517d8b){return function(_0x1f4fb4){if(_0x1f4fb4){var _0x21525f=typeof _0x517d8b[_0x0437('0x25')]===_0x0437('0x26')&&typeof _0x517d8b['limit']===_0x0437('0x26');var _0x214204=_0x1f4fb4[_0x0437('0x27')];var _0x8a639d=_0x21525f?0x0:_0x517d8b[_0x0437('0x25')];var _0x1e3d48=_0x21525f?_0x1f4fb4[_0x0437('0x27')]:_0x517d8b[_0x0437('0x25')]+_0x517d8b[_0x0437('0x28')];var _0x32218b;if(_0x1e3d48>=_0x214204){_0x1e3d48=_0x214204;_0x32218b=0xc8;}else{_0x32218b=0xce;}_0x44f5e5['status'](_0x32218b);return _0x44f5e5[_0x0437('0x29')](_0x0437('0x2a'),_0x8a639d+'-'+_0x1e3d48+'/'+_0x214204)[_0x0437('0x24')](_0x1f4fb4);}return null;};}function patchUpdates(_0x17f35a){return function(_0x231c50){try{jsonpatch[_0x0437('0x2b')](_0x231c50,_0x17f35a,!![]);}catch(_0x59c37c){return BPromise[_0x0437('0x2c')](_0x59c37c);}return _0x231c50['save']();};}function saveUpdates(_0x37c915,_0x75177a){return function(_0x3d58fc){if(_0x3d58fc){return _0x3d58fc[_0x0437('0x2d')](_0x37c915)['then'](function(_0x1b5883){return _0x1b5883;});}return null;};}function removeEntity(_0x3eb93c,_0x5c1b0a){return function(_0x141511){if(_0x141511){return _0x141511['destroy']()[_0x0437('0x2e')](function(){var _0x1ea71d=_0x141511[_0x0437('0x2f')]({'plain':!![]});var _0x323f89='CustomDashboards';return db['UserProfileResource'][_0x0437('0x30')]({'where':{'type':_0x323f89,'resourceId':_0x1ea71d['id']}})[_0x0437('0x2e')](function(){return _0x141511;});})[_0x0437('0x2e')](function(){_0x3eb93c[_0x0437('0x23')](0xcc)[_0x0437('0x31')]();});}};}function handleEntityNotFound(_0x59cf23,_0x40a5ba){return function(_0x2cf735){if(!_0x2cf735){_0x59cf23[_0x0437('0x22')](0x194);}return _0x2cf735;};}function handleError(_0x2c138f,_0x1ee276){_0x1ee276=_0x1ee276||0x1f4;return function(_0x3282f4){logger[_0x0437('0x32')](_0x3282f4['stack']);if(_0x3282f4[_0x0437('0x33')]){delete _0x3282f4[_0x0437('0x33')];}_0x2c138f[_0x0437('0x23')](_0x1ee276)[_0x0437('0x34')](_0x3282f4);};}exports['index']=function(_0x9b1f15,_0x405ab7){var _0x3a64b2={},_0x376300={},_0x1e4473={'count':0x0,'rows':[]};var _0x12b529=_['map'](db['Dashboard'][_0x0437('0x35')],function(_0x3efc32){return{'name':_0x3efc32[_0x0437('0x36')],'type':_0x3efc32[_0x0437('0x37')][_0x0437('0x38')]};});_0x376300['model']=_[_0x0437('0x39')](_0x12b529,_0x0437('0x33'));_0x376300['query']=_[_0x0437('0x3a')](_0x9b1f15[_0x0437('0x3b')]);_0x376300[_0x0437('0x3c')]=_[_0x0437('0x3d')](_0x376300[_0x0437('0x3e')],_0x376300[_0x0437('0x3b')]);_0x3a64b2[_0x0437('0x3f')]=_['intersection'](_0x376300[_0x0437('0x3e')],qs[_0x0437('0x40')](_0x9b1f15[_0x0437('0x3b')]['fields']));_0x3a64b2['attributes']=_0x3a64b2['attributes'][_0x0437('0x41')]?_0x3a64b2[_0x0437('0x3f')]:_0x376300[_0x0437('0x3e')];if(!_0x9b1f15[_0x0437('0x3b')]['hasOwnProperty'](_0x0437('0x42'))){_0x3a64b2[_0x0437('0x28')]=qs[_0x0437('0x28')](_0x9b1f15[_0x0437('0x3b')][_0x0437('0x28')]);_0x3a64b2['offset']=qs[_0x0437('0x25')](_0x9b1f15[_0x0437('0x3b')][_0x0437('0x25')]);}_0x3a64b2[_0x0437('0x43')]=qs['sort'](_0x9b1f15[_0x0437('0x3b')][_0x0437('0x44')]);_0x3a64b2[_0x0437('0x45')]=qs[_0x0437('0x3c')](_[_0x0437('0x46')](_0x9b1f15[_0x0437('0x3b')],_0x376300[_0x0437('0x3c')]),_0x12b529);if(_0x9b1f15[_0x0437('0x3b')][_0x0437('0x47')]){_0x3a64b2[_0x0437('0x45')]=_['merge'](_0x3a64b2[_0x0437('0x45')],{'$or':_[_0x0437('0x39')](_0x12b529,function(_0x538fd5){if(_0x538fd5['type']!=='VIRTUAL'){var _0x539611={};_0x539611[_0x538fd5['name']]={'$like':'%'+_0x9b1f15['query']['filter']+'%'};return _0x539611;}})});}_0x3a64b2=_['merge']({},_0x3a64b2,_0x9b1f15[_0x0437('0x48')]);var _0x29e7dd={'where':_0x3a64b2[_0x0437('0x45')]};return db[_0x0437('0x49')][_0x0437('0x27')](_0x29e7dd)[_0x0437('0x2e')](function(_0x3d77be){_0x1e4473['count']=_0x3d77be;if(_0x9b1f15[_0x0437('0x3b')][_0x0437('0x4a')]){_0x3a64b2[_0x0437('0x4b')]=[{'all':!![]}];}return db['Dashboard'][_0x0437('0x4c')](_0x3a64b2);})[_0x0437('0x2e')](function(_0x3385b7){_0x1e4473[_0x0437('0x4d')]=_0x3385b7;return _0x1e4473;})[_0x0437('0x2e')](respondWithFilteredResult(_0x405ab7,_0x3a64b2))[_0x0437('0x4e')](handleError(_0x405ab7,null));};exports['show']=function(_0x5b9954,_0x554dfb){var _0x28e25a={'raw':![],'where':{'id':_0x5b9954[_0x0437('0x4f')]['id']}},_0xdc4ff0={};_0xdc4ff0[_0x0437('0x3e')]=_['keys'](db[_0x0437('0x49')][_0x0437('0x35')]);_0xdc4ff0[_0x0437('0x3b')]=_[_0x0437('0x3a')](_0x5b9954[_0x0437('0x3b')]);_0xdc4ff0[_0x0437('0x3c')]=_[_0x0437('0x3d')](_0xdc4ff0[_0x0437('0x3e')],_0xdc4ff0['query']);_0x28e25a[_0x0437('0x3f')]=_[_0x0437('0x3d')](_0xdc4ff0['model'],qs['fields'](_0x5b9954[_0x0437('0x3b')][_0x0437('0x40')]));_0x28e25a[_0x0437('0x3f')]=_0x28e25a[_0x0437('0x3f')][_0x0437('0x41')]?_0x28e25a[_0x0437('0x3f')]:_0xdc4ff0[_0x0437('0x3e')];if(_0x5b9954[_0x0437('0x3b')][_0x0437('0x4a')]){_0x28e25a[_0x0437('0x4b')]=[{'all':!![]}];}_0x28e25a=_[_0x0437('0x50')]({},_0x28e25a,_0x5b9954[_0x0437('0x48')]);return db[_0x0437('0x49')][_0x0437('0x51')](_0x28e25a)['then'](handleEntityNotFound(_0x554dfb,null))[_0x0437('0x2e')](respondWithResult(_0x554dfb,null))[_0x0437('0x4e')](handleError(_0x554dfb,null));};exports['create']=function(_0x27455f,_0x244ffa){return db[_0x0437('0x49')][_0x0437('0x52')](_0x27455f[_0x0437('0x53')],{})[_0x0437('0x2e')](function(_0x2169b0){var _0x298b04=_0x27455f[_0x0437('0x54')][_0x0437('0x2f')]({'plain':!![]});if(!_0x298b04)throw new Error(_0x0437('0x55'));if(_0x298b04['role']==='user'){var _0x11fa0a=_0x2169b0['get']({'plain':!![]});var _0x3ea85e=_0x0437('0x56');return db['UserProfileSection'][_0x0437('0x51')]({'where':{'name':_0x3ea85e,'userProfileId':_0x298b04['userProfileId']},'raw':!![]})[_0x0437('0x2e')](function(_0x3bcf2c){if(_0x3bcf2c&&_0x3bcf2c[_0x0437('0x57')]===0x0){return db['UserProfileResource'][_0x0437('0x52')]({'name':_0x11fa0a[_0x0437('0x33')],'resourceId':_0x11fa0a['id'],'type':_0x3bcf2c[_0x0437('0x33')],'sectionId':_0x3bcf2c['id']},{})[_0x0437('0x2e')](function(){return _0x2169b0;});}else{return _0x2169b0;}})[_0x0437('0x4e')](function(_0x3484ed){logger[_0x0437('0x32')](_0x0437('0x58'),_0x3484ed);throw _0x3484ed;});}return _0x2169b0;})[_0x0437('0x2e')](respondWithResult(_0x244ffa,0xc9))['catch'](handleError(_0x244ffa,null));};exports[_0x0437('0x59')]=function(_0x26b26b,_0x163946){var _0x5d198a={'where':{'id':_0x26b26b[_0x0437('0x4f')]['id']}},_0x430176={};_0x430176['model']=_[_0x0437('0x3a')](db[_0x0437('0x49')][_0x0437('0x35')]);_0x5d198a[_0x0437('0x3f')]=_[_0x0437('0x3d')](_0x430176[_0x0437('0x3e')],qs['fields'](_0x26b26b[_0x0437('0x3b')]['fields']));_0x5d198a[_0x0437('0x3f')]=_0x5d198a[_0x0437('0x3f')][_0x0437('0x41')]?_0x5d198a[_0x0437('0x3f')]:_0x430176[_0x0437('0x3e')];if(_0x26b26b[_0x0437('0x3b')][_0x0437('0x4a')]){_0x5d198a[_0x0437('0x4b')]=[{'all':!![]}];}_0x5d198a=_[_0x0437('0x50')]({},_0x5d198a,_0x26b26b[_0x0437('0x48')]);return db[_0x0437('0x49')][_0x0437('0x51')](_0x5d198a)[_0x0437('0x2e')](handleEntityNotFound(_0x163946,null))[_0x0437('0x2e')](function(_0x3fb124){if(_0x3fb124){var _0x369077=_0x3fb124['get']({'plain':!![]});_0x369077=qs[_0x0437('0x5a')](_0x369077,['id',_0x0437('0x5b'),_0x0437('0x5c')]);_0x26b26b[_0x0437('0x53')]=_[_0x0437('0x5a')](_0x26b26b[_0x0437('0x53')],['id',_0x0437('0x5b'),_0x0437('0x5c')]);return db[_0x0437('0x49')]['create'](_[_0x0437('0x50')](_0x369077,_0x26b26b[_0x0437('0x53')]),{'include':_0x26b26b[_0x0437('0x3b')][_0x0437('0x4a')]?[{'all':!![]}]:undefined})[_0x0437('0x2e')](function(_0x5bdad9){var _0x4f6491=_0x26b26b[_0x0437('0x54')][_0x0437('0x2f')]({'plain':!![]});if(!_0x4f6491)throw new Error(_0x0437('0x55'));if(_0x4f6491[_0x0437('0x5d')]===_0x0437('0x54')){var _0x3da11c=_0x5bdad9[_0x0437('0x2f')]({'plain':!![]});var _0x549b18=_0x0437('0x56');return db[_0x0437('0x5e')][_0x0437('0x51')]({'where':{'name':_0x549b18,'userProfileId':_0x4f6491['userProfileId']},'raw':!![]})[_0x0437('0x2e')](function(_0x3fe3b5){if(_0x3fe3b5&&_0x3fe3b5['autoAssociation']===0x0){return db[_0x0437('0x5f')][_0x0437('0x52')]({'name':_0x3da11c[_0x0437('0x33')],'resourceId':_0x3da11c['id'],'type':_0x3fe3b5['name'],'sectionId':_0x3fe3b5['id']},{})[_0x0437('0x2e')](function(){return _0x5bdad9;});}else{return _0x5bdad9;}})[_0x0437('0x4e')](function(_0x59d1ce){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x59d1ce);throw _0x59d1ce;});}return _0x5bdad9;});}})[_0x0437('0x2e')](respondWithResult(_0x163946,0xc9))[_0x0437('0x4e')](handleError(_0x163946,null));};exports['update']=function(_0x24afaa,_0x29415b){if(_0x24afaa[_0x0437('0x53')]['id']){delete _0x24afaa['body']['id'];}return db[_0x0437('0x49')][_0x0437('0x51')]({'where':{'id':_0x24afaa[_0x0437('0x4f')]['id']}})[_0x0437('0x2e')](handleEntityNotFound(_0x29415b,null))[_0x0437('0x2e')](saveUpdates(_0x24afaa[_0x0437('0x53')],null))[_0x0437('0x2e')](respondWithResult(_0x29415b,null))[_0x0437('0x4e')](handleError(_0x29415b,null));};exports[_0x0437('0x30')]=function(_0xcc9e66,_0x33ab86){return db[_0x0437('0x49')][_0x0437('0x51')]({'where':{'id':_0xcc9e66[_0x0437('0x4f')]['id']}})[_0x0437('0x2e')](handleEntityNotFound(_0x33ab86,null))[_0x0437('0x2e')](removeEntity(_0x33ab86,null))[_0x0437('0x4e')](handleError(_0x33ab86,null));};function widgetAttributes(_0x57483e){try{switch(_0x57483e[_0x0437('0x37')]){case _0x0437('0x60'):return[{'name':_0x0437('0x61'),'value':_0x57483e[_0x0437('0x61')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x0]?_0x57483e['attrs'][0x0][_0x0437('0x63')]:undefined)||_0x0437('0x64')}];case'custom':return[{'name':_0x0437('0x65'),'value':_0x57483e[_0x0437('0x65')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x0]?_0x57483e[_0x0437('0x62')][0x0][_0x0437('0x63')]:undefined)||''}];case _0x0437('0x66'):return[{'name':_0x0437('0x67'),'value':_0x57483e[_0x0437('0x67')]||(_0x57483e['attrs']&&_0x57483e[_0x0437('0x62')][0x0]?_0x57483e[_0x0437('0x62')][0x0][_0x0437('0x63')]:undefined)||_0x0437('0x68')},{'name':'attrTimezone','value':_0x57483e[_0x0437('0x69')]||(_0x57483e['attrs']&&_0x57483e[_0x0437('0x62')][0x1]?_0x57483e[_0x0437('0x62')][0x1][_0x0437('0x63')]:undefined)||_0x0437('0x6a')},{'name':_0x0437('0x6b'),'value':_0x57483e[_0x0437('0x6b')]||(_0x57483e['attrs']&&_0x57483e['attrs'][0x2]?_0x57483e['attrs'][0x2][_0x0437('0x63')]:undefined)||0xc}];case _0x0437('0x6c'):return[{'name':_0x0437('0x6d'),'value':_0x57483e[_0x0437('0x6d')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e['attrs'][0x0]?_0x57483e[_0x0437('0x62')][0x0][_0x0437('0x63')]:undefined)||_0x0437('0x6e')},{'name':_0x0437('0x6f'),'value':_0x57483e[_0x0437('0x6f')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x1]?_0x57483e[_0x0437('0x62')][0x1][_0x0437('0x63')]:undefined)||[]},{'name':_0x0437('0x6b'),'value':_0x57483e[_0x0437('0x6b')]||(_0x57483e['attrs']&&_0x57483e['attrs'][0x2]?_0x57483e[_0x0437('0x62')][0x2][_0x0437('0x63')]:undefined)||0x14},{'name':_0x0437('0x70'),'value':_0x57483e['attrChannel']||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x3]?_0x57483e[_0x0437('0x62')][0x3][_0x0437('0x63')]:undefined)||_0x0437('0x71')},{'name':_0x0437('0x72'),'value':_0x57483e[_0x0437('0x72')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x4]?_0x57483e[_0x0437('0x62')][0x4][_0x0437('0x63')]:undefined)||''},{'name':_0x0437('0x73'),'value':_0x57483e[_0x0437('0x73')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x5]?_0x57483e[_0x0437('0x62')][0x5][_0x0437('0x63')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x57483e[_0x0437('0x74')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e['attrs'][0x6]?_0x57483e['attrs'][0x6][_0x0437('0x63')]:undefined)||''},{'name':_0x0437('0x75'),'value':_0x57483e[_0x0437('0x75')]||(_0x57483e['attrs']&&_0x57483e['attrs'][0x7]?_0x57483e[_0x0437('0x62')][0x7][_0x0437('0x63')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x57483e[_0x0437('0x76')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e['attrs'][0x8]?_0x57483e[_0x0437('0x62')][0x8][_0x0437('0x63')]:undefined)||''},{'name':_0x0437('0x77'),'value':_0x57483e[_0x0437('0x77')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x9]?_0x57483e[_0x0437('0x62')][0x9]['value']:undefined)||''}];case _0x0437('0x78'):case _0x0437('0x79'):return[{'name':_0x0437('0x7a'),'value':_0x57483e['attrSerie1']||(_0x57483e[_0x0437('0x62')]&&_0x57483e['attrs'][0x0]?_0x57483e['attrs'][0x0][_0x0437('0x63')]:undefined)||_0x0437('0x6e')},{'name':'attrSerie2','value':_0x57483e[_0x0437('0x7b')]||(_0x57483e['attrs']&&_0x57483e['attrs'][0x1]?_0x57483e['attrs'][0x1][_0x0437('0x63')]:undefined)||null},{'name':_0x0437('0x7c'),'value':_0x57483e[_0x0437('0x7c')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x2]?_0x57483e[_0x0437('0x62')][0x2][_0x0437('0x63')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x57483e['attrVoiceQueues']||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x3]?_0x57483e[_0x0437('0x62')][0x3][_0x0437('0x63')]:undefined)||[]},{'name':_0x0437('0x70'),'value':_0x57483e['attrChannel']||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x4]?_0x57483e[_0x0437('0x62')][0x4][_0x0437('0x63')]:undefined)||'voice'},{'name':_0x0437('0x72'),'value':_0x57483e[_0x0437('0x72')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e['attrs'][0x5]?_0x57483e['attrs'][0x5][_0x0437('0x63')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x57483e[_0x0437('0x73')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x6]?_0x57483e[_0x0437('0x62')][0x6][_0x0437('0x63')]:undefined)||''},{'name':_0x0437('0x74'),'value':_0x57483e[_0x0437('0x74')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e['attrs'][0x7]?_0x57483e[_0x0437('0x62')][0x7][_0x0437('0x63')]:undefined)||''},{'name':_0x0437('0x75'),'value':_0x57483e[_0x0437('0x75')]||(_0x57483e['attrs']&&_0x57483e['attrs'][0x8]?_0x57483e[_0x0437('0x62')][0x8][_0x0437('0x63')]:undefined)||''},{'name':_0x0437('0x76'),'value':_0x57483e[_0x0437('0x76')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e['attrs'][0x9]?_0x57483e[_0x0437('0x62')][0x9][_0x0437('0x63')]:undefined)||''},{'name':_0x0437('0x77'),'value':_0x57483e['attrChatWebsites']||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0xa]?_0x57483e['attrs'][0xa][_0x0437('0x63')]:undefined)||''}];case _0x0437('0x7d'):return[{'name':_0x0437('0x7e'),'type':_0x57483e[_0x0437('0x7f')]||(_0x57483e['attrs']&&_0x57483e[_0x0437('0x62')][0x0]?_0x57483e[_0x0437('0x62')][0x0][_0x0437('0x37')]:undefined)||null,'value':_0x57483e[_0x0437('0x7e')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x0]?_0x57483e[_0x0437('0x62')][0x0][_0x0437('0x63')]:undefined)||null},{'name':'attrRefresh','value':_0x57483e[_0x0437('0x80')]||(_0x57483e[_0x0437('0x62')]&&_0x57483e[_0x0437('0x62')][0x1]?_0x57483e['attrs'][0x1][_0x0437('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x419362){logger[_0x0437('0x32')](_0x0437('0x81'),JSON[_0x0437('0x82')](_0x419362));return[];}}exports['addItem']=function(_0x1c2814,_0x111a0c,_0x2550f3){if(_0x1c2814[_0x0437('0x53')]['id']){delete _0x1c2814[_0x0437('0x53')]['id'];}return db[_0x0437('0x49')][_0x0437('0x51')]({'where':{'id':_0x1c2814[_0x0437('0x4f')]['id']}})[_0x0437('0x2e')](handleEntityNotFound(_0x111a0c,null))[_0x0437('0x2e')](function(_0x4cfeea){if(_0x4cfeea){_0x1c2814[_0x0437('0x53')]['DashboardId']=_0x4cfeea['id'];_0x1c2814[_0x0437('0x53')][_0x0437('0x62')]=widgetAttributes(_0x1c2814[_0x0437('0x53')]);return db['DashboardItem']['create'](_0x1c2814[_0x0437('0x53')]);}})[_0x0437('0x2e')](respondWithResult(_0x111a0c,null))['catch'](handleError(_0x111a0c,null));};exports[_0x0437('0x83')]=function(_0x3390ff,_0x3d1b0a,_0x1554aa){var _0xa4b6a6={};var _0x3a583b={};var _0x5af59d;var _0x492d0b;return db[_0x0437('0x49')][_0x0437('0x84')]({'where':{'id':_0x3390ff['params']['id']}})[_0x0437('0x2e')](handleEntityNotFound(_0x3d1b0a,null))[_0x0437('0x2e')](function(_0x1a8eca){if(_0x1a8eca){_0x5af59d=_0x1a8eca;_0x3a583b[_0x0437('0x3e')]=_[_0x0437('0x3a')](db[_0x0437('0x85')][_0x0437('0x35')]);_0x3a583b[_0x0437('0x3b')]=_[_0x0437('0x3a')](_0x3390ff[_0x0437('0x3b')]);_0x3a583b[_0x0437('0x3c')]=_[_0x0437('0x3d')](_0x3a583b['model'],_0x3a583b[_0x0437('0x3b')]);_0xa4b6a6[_0x0437('0x3f')]=_[_0x0437('0x3d')](_0x3a583b[_0x0437('0x3e')],qs[_0x0437('0x40')](_0x3390ff[_0x0437('0x3b')]['fields']));_0xa4b6a6[_0x0437('0x3f')]=_0xa4b6a6[_0x0437('0x3f')]['length']?_0xa4b6a6[_0x0437('0x3f')]:_0x3a583b[_0x0437('0x3e')];_0xa4b6a6[_0x0437('0x43')]=qs[_0x0437('0x44')](_0x3390ff[_0x0437('0x3b')][_0x0437('0x44')]);_0xa4b6a6[_0x0437('0x45')]=qs[_0x0437('0x3c')](_['pick'](_0x3390ff[_0x0437('0x3b')],_0x3a583b[_0x0437('0x3c')]));if(_0x3390ff[_0x0437('0x3b')]['filter']){_0xa4b6a6[_0x0437('0x45')]=_[_0x0437('0x50')](_0xa4b6a6[_0x0437('0x45')],{'$or':_[_0x0437('0x39')](_0xa4b6a6[_0x0437('0x3f')],function(_0x1b4e84){var _0x1204c3={};_0x1204c3[_0x1b4e84]={'$like':'%'+_0x3390ff[_0x0437('0x3b')][_0x0437('0x47')]+'%'};return _0x1204c3;})});}_0xa4b6a6=_[_0x0437('0x50')]({},_0xa4b6a6,_0x3390ff['options']);return _0x5af59d[_0x0437('0x83')](_0xa4b6a6);}})[_0x0437('0x2e')](function(_0x2c8040){if(_0x2c8040){_0x492d0b=_0x2c8040[_0x0437('0x41')];if(!_0x3390ff[_0x0437('0x3b')][_0x0437('0x86')]('nolimit')){_0xa4b6a6[_0x0437('0x28')]=qs[_0x0437('0x28')](_0x3390ff['query']['limit']);_0xa4b6a6[_0x0437('0x25')]=qs['offset'](_0x3390ff['query']['offset']);}return _0x5af59d['getItems'](_0xa4b6a6);}})[_0x0437('0x2e')](function(_0x24075f){if(_0x24075f){return _0x24075f?{'count':_0x492d0b,'rows':_0x24075f}:null;}})[_0x0437('0x2e')](respondWithResult(_0x3d1b0a,null))[_0x0437('0x4e')](handleError(_0x3d1b0a,null));};
\ No newline at end of file
index 09d6667..082be14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcb2=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','Dashboard'];(function(_0x311a6c,_0x1b9953){var _0x170c4f=function(_0x14ef90){while(--_0x14ef90){_0x311a6c['push'](_0x311a6c['shift']());}};_0x170c4f(++_0x1b9953);}(_0xfcb2,0x1ae));var _0x2fcb=function(_0x146be4,_0x3d72cf){_0x146be4=_0x146be4-0x0;var _0x35966e=_0xfcb2[_0x146be4];return _0x35966e;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0x2fcb('0x0'))['db'][_0x2fcb('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x2fcb('0x2')](0x0);var events={'afterCreate':_0x2fcb('0x3'),'afterUpdate':'update','afterDestroy':_0x2fcb('0x4')};function emitEvent(_0x5e8f55){return function(_0x30350f,_0x139a56,_0xfdb412){DashboardEvents[_0x2fcb('0x5')](_0x5e8f55+':'+_0x30350f['id'],_0x30350f);DashboardEvents['emit'](_0x5e8f55,_0x30350f);_0xfdb412(null);};}for(var e in events){if(events[_0x2fcb('0x6')](e)){var event=events[e];Dashboard[_0x2fcb('0x7')](e,emitEvent(event));}}module[_0x2fcb('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0xe5e9=['Dashboard','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3a0e99,_0x2008cf){var _0x1f3fb6=function(_0x4a9063){while(--_0x4a9063){_0x3a0e99['push'](_0x3a0e99['shift']());}};_0x1f3fb6(++_0x2008cf);}(_0xe5e9,0xda));var _0x9e5e=function(_0x209cc0,_0x59bb37){_0x209cc0=_0x209cc0-0x0;var _0x3c5029=_0xe5e9[_0x209cc0];return _0x3c5029;};'use strict';var EventEmitter=require(_0x9e5e('0x0'));var Dashboard=require(_0x9e5e('0x1'))['db'][_0x9e5e('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x9e5e('0x3')](0x0);var events={'afterCreate':_0x9e5e('0x4'),'afterUpdate':_0x9e5e('0x5'),'afterDestroy':_0x9e5e('0x6')};function emitEvent(_0x363ecd){return function(_0x5d25da,_0xf2c296,_0xc7e3ce){DashboardEvents[_0x9e5e('0x7')](_0x363ecd+':'+_0x5d25da['id'],_0x5d25da);DashboardEvents['emit'](_0x363ecd,_0x5d25da);_0xc7e3ce(null);};}for(var e in events){if(events[_0x9e5e('0x8')](e)){var event=events[e];Dashboard[_0x9e5e('0x9')](e,emitEvent(event));}}module[_0x9e5e('0xa')]=DashboardEvents;
\ No newline at end of file
index ce0b972..6d3faa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9380=['lodash','api','moment','bluebird','request-promise','../../config/environment','./dashboard.attributes','exports','define','Dashboard'];(function(_0x3233cd,_0x5b13cf){var _0x357e96=function(_0xe64dd4){while(--_0xe64dd4){_0x3233cd['push'](_0x3233cd['shift']());}};_0x357e96(++_0x5b13cf);}(_0x9380,0x14a));var _0x0938=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x9380[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0x0938('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0938('0x1'));var moment=require(_0x0938('0x2'));var BPromise=require(_0x0938('0x3'));var rp=require(_0x0938('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0938('0x5'));var attributes=require(_0x0938('0x6'));module[_0x0938('0x7')]=function(_0x468724,_0x35b070){return _0x468724[_0x0938('0x8')](_0x0938('0x9'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa515=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports','Dashboard','dashboards'];(function(_0x3a200d,_0x240e25){var _0x52d683=function(_0x5333cb){while(--_0x5333cb){_0x3a200d['push'](_0x3a200d['shift']());}};_0x52d683(++_0x240e25);}(_0xa515,0x108));var _0x5a51=function(_0x5df5f4,_0x4b4aa1){_0x5df5f4=_0x5df5f4-0x0;var _0x1b28c8=_0xa515[_0x5df5f4];return _0x1b28c8;};'use strict';var _=require(_0x5a51('0x0'));var util=require(_0x5a51('0x1'));var logger=require(_0x5a51('0x2'))(_0x5a51('0x3'));var moment=require('moment');var BPromise=require(_0x5a51('0x4'));var rp=require(_0x5a51('0x5'));var fs=require('fs');var path=require(_0x5a51('0x6'));var rimraf=require('rimraf');var config=require(_0x5a51('0x7'));var attributes=require('./dashboard.attributes');module[_0x5a51('0x8')]=function(_0x4a839c,_0x152850){return _0x4a839c['define'](_0x5a51('0x9'),attributes,{'tableName':_0x5a51('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c041ca..65d9d86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe632=['randomstring','../../config/logger','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./dashboard.socket','register','request','Dashboard,\x20%s,\x20%s','debug','stringify','code','error','message','result','catch','lodash','util','moment'];(function(_0x25b74b,_0x1feb5f){var _0x1de60a=function(_0x46cb79){while(--_0x46cb79){_0x25b74b['push'](_0x25b74b['shift']());}};_0x1de60a(++_0x1feb5f);}(_0xe632,0x1b2));var _0x2e63=function(_0x1b0639,_0x32cc11){_0x1b0639=_0x1b0639-0x0;var _0x64e7e=_0xe632[_0x1b0639];return _0x64e7e;};'use strict';var _=require(_0x2e63('0x0'));var util=require(_0x2e63('0x1'));var moment=require(_0x2e63('0x2'));var BPromise=require('bluebird');var rs=require(_0x2e63('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2e63('0x4'))('rpc');var config=require(_0x2e63('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x2e63('0x6')][_0x2e63('0x7')]({'port':0x232a});config['redis']=_[_0x2e63('0x8')](config[_0x2e63('0x9')],{'host':_0x2e63('0xa'),'port':0x18eb});var socket=require(_0x2e63('0xb'))(new Redis(config[_0x2e63('0x9')]));require(_0x2e63('0xc'))[_0x2e63('0xd')](socket);function respondWithRpcPromise(_0x33862f,_0x31e192,_0x19607a){return new BPromise(function(_0x3e2179,_0x47ff50){return client[_0x2e63('0xe')](_0x33862f,_0x19607a)['then'](function(_0x230857){logger['info'](_0x2e63('0xf'),_0x31e192,'request\x20sent');logger[_0x2e63('0x10')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x31e192,'request\x20sent',JSON[_0x2e63('0x11')](_0x230857));if(_0x230857['error']){if(_0x230857['error'][_0x2e63('0x12')]===0x1f4){logger[_0x2e63('0x13')](_0x2e63('0xf'),_0x31e192,_0x230857[_0x2e63('0x13')]['message']);return _0x47ff50(_0x230857['error'][_0x2e63('0x14')]);}logger[_0x2e63('0x13')](_0x2e63('0xf'),_0x31e192,_0x230857[_0x2e63('0x13')][_0x2e63('0x14')]);return _0x3e2179(_0x230857[_0x2e63('0x13')][_0x2e63('0x14')]);}else{logger['info'](_0x2e63('0xf'),_0x31e192,'request\x20sent');_0x3e2179(_0x230857[_0x2e63('0x15')][_0x2e63('0x14')]);}})[_0x2e63('0x16')](function(_0x258f41){logger[_0x2e63('0x13')](_0x2e63('0xf'),_0x31e192,_0x258f41);_0x47ff50(_0x258f41);});});}
\ No newline at end of file
+var _0x67fe=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./dashboard.socket','request','then','info','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','Dashboard,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x3b0cdd,_0x1fd5f4){var _0x143bd1=function(_0xbcf961){while(--_0xbcf961){_0x3b0cdd['push'](_0x3b0cdd['shift']());}};_0x143bd1(++_0x1fd5f4);}(_0x67fe,0xbf));var _0xe67f=function(_0x45a150,_0x6ace92){_0x45a150=_0x45a150-0x0;var _0x1e0cb1=_0x67fe[_0x45a150];return _0x1e0cb1;};'use strict';var _=require(_0xe67f('0x0'));var util=require(_0xe67f('0x1'));var moment=require(_0xe67f('0x2'));var BPromise=require('bluebird');var rs=require(_0xe67f('0x3'));var fs=require('fs');var Redis=require(_0xe67f('0x4'));var db=require(_0xe67f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe67f('0x6'))(_0xe67f('0x7'));var config=require(_0xe67f('0x8'));var jayson=require(_0xe67f('0x9'));var client=jayson[_0xe67f('0xa')][_0xe67f('0xb')]({'port':0x232a});config['redis']=_[_0xe67f('0xc')](config['redis'],{'host':_0xe67f('0xd'),'port':0x18eb});var socket=require(_0xe67f('0xe'))(new Redis(config[_0xe67f('0xf')]));require(_0xe67f('0x10'))['register'](socket);function respondWithRpcPromise(_0xc2b4db,_0x433a3f,_0x3afb26){return new BPromise(function(_0xfd7c64,_0xc5fe30){return client[_0xe67f('0x11')](_0xc2b4db,_0x3afb26)[_0xe67f('0x12')](function(_0x4ad4f8){logger[_0xe67f('0x13')]('Dashboard,\x20%s,\x20%s',_0x433a3f,'request\x20sent');logger[_0xe67f('0x14')](_0xe67f('0x15'),_0x433a3f,'request\x20sent',JSON[_0xe67f('0x16')](_0x4ad4f8));if(_0x4ad4f8[_0xe67f('0x17')]){if(_0x4ad4f8['error']['code']===0x1f4){logger[_0xe67f('0x17')]('Dashboard,\x20%s,\x20%s',_0x433a3f,_0x4ad4f8[_0xe67f('0x17')][_0xe67f('0x18')]);return _0xc5fe30(_0x4ad4f8[_0xe67f('0x17')][_0xe67f('0x18')]);}logger[_0xe67f('0x17')](_0xe67f('0x19'),_0x433a3f,_0x4ad4f8[_0xe67f('0x17')][_0xe67f('0x18')]);return _0xfd7c64(_0x4ad4f8[_0xe67f('0x17')][_0xe67f('0x18')]);}else{logger[_0xe67f('0x13')](_0xe67f('0x19'),_0x433a3f,'request\x20sent');_0xfd7c64(_0x4ad4f8[_0xe67f('0x1a')][_0xe67f('0x18')]);}})[_0xe67f('0x1b')](function(_0x10a9af){logger[_0xe67f('0x17')](_0xe67f('0x19'),_0x433a3f,_0x10a9af);_0xc5fe30(_0x10a9af);});});}
\ No newline at end of file
index 0532bfc..1cf5ac9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e24=['length','dashboard:','./dashboard.events','remove','emit'];(function(_0x3938f3,_0x2017b1){var _0x455d32=function(_0x28ea12){while(--_0x28ea12){_0x3938f3['push'](_0x3938f3['shift']());}};_0x455d32(++_0x2017b1);}(_0x5e24,0x1a1));var _0x45e2=function(_0x30426d,_0x1d7501){_0x30426d=_0x30426d-0x0;var _0x4f5950=_0x5e24[_0x30426d];return _0x4f5950;};'use strict';var DashboardEvents=require(_0x45e2('0x0'));var events=['save',_0x45e2('0x1'),'update'];function createListener(_0x2d6d7f,_0xb577a6){return function(_0x2befae){_0xb577a6[_0x45e2('0x2')](_0x2d6d7f,_0x2befae);};}function removeListener(_0x1a2168,_0x569f54){return function(){DashboardEvents['removeListener'](_0x1a2168,_0x569f54);};}exports['register']=function(_0x224d1a){for(var _0x526666=0x0,_0x557908=events[_0x45e2('0x3')];_0x526666<_0x557908;_0x526666++){var _0x2afc1f=events[_0x526666];var _0x53cf2f=createListener(_0x45e2('0x4')+_0x2afc1f,_0x224d1a);DashboardEvents['on'](_0x2afc1f,_0x53cf2f);}};
\ No newline at end of file
+var _0x8d85=['remove','emit','register','dashboard:'];(function(_0x2f7be9,_0x173b28){var _0x22b2ad=function(_0x2f50e4){while(--_0x2f50e4){_0x2f7be9['push'](_0x2f7be9['shift']());}};_0x22b2ad(++_0x173b28);}(_0x8d85,0xfc));var _0x58d8=function(_0x107e5f,_0x1d3168){_0x107e5f=_0x107e5f-0x0;var _0x43e0ad=_0x8d85[_0x107e5f];return _0x43e0ad;};'use strict';var DashboardEvents=require('./dashboard.events');var events=['save',_0x58d8('0x0'),'update'];function createListener(_0x24eea3,_0x10524e){return function(_0x3aaddb){_0x10524e[_0x58d8('0x1')](_0x24eea3,_0x3aaddb);};}function removeListener(_0x313b29,_0x3d4536){return function(){DashboardEvents['removeListener'](_0x313b29,_0x3d4536);};}exports[_0x58d8('0x2')]=function(_0x54ae66){for(var _0x48189e=0x0,_0x3c5d43=events['length'];_0x48189e<_0x3c5d43;_0x48189e++){var _0xa18bb9=events[_0x48189e];var _0x11301b=createListener(_0x58d8('0x3')+_0xa18bb9,_0x54ae66);DashboardEvents['on'](_0xa18bb9,_0x11301b);}};
\ No newline at end of file
index ce10631..4dfda10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a7=['index','/:id','show','isAuthenticated','getItems','post','/:id/clone','clone','/:id/items','addItem','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./dashboard.controller','get'];(function(_0x2e5fd8,_0x126276){var _0x18268c=function(_0x3637ff){while(--_0x3637ff){_0x2e5fd8['push'](_0x2e5fd8['shift']());}};_0x18268c(++_0x126276);}(_0x15a7,0x1ee));var _0x715a=function(_0x3fb6b3,_0x32f93e){_0x3fb6b3=_0x3fb6b3-0x0;var _0x4c93e6=_0x15a7[_0x3fb6b3];return _0x4c93e6;};'use strict';var multer=require(_0x715a('0x0'));var util=require(_0x715a('0x1'));var path=require(_0x715a('0x2'));var timeout=require(_0x715a('0x3'));var express=require(_0x715a('0x4'));var router=express[_0x715a('0x5')]();var fs_extra=require(_0x715a('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x715a('0x7'));var controller=require(_0x715a('0x8'));router[_0x715a('0x9')]('/',auth['isAuthenticated'](),controller[_0x715a('0xa')]);router[_0x715a('0x9')](_0x715a('0xb'),auth['isAuthenticated'](),controller[_0x715a('0xc')]);router[_0x715a('0x9')]('/:id/items',auth[_0x715a('0xd')](),controller[_0x715a('0xe')]);router[_0x715a('0xf')]('/',auth[_0x715a('0xd')](),controller['create']);router[_0x715a('0xf')](_0x715a('0x10'),auth[_0x715a('0xd')](),controller[_0x715a('0x11')]);router['post'](_0x715a('0x12'),auth[_0x715a('0xd')](),controller[_0x715a('0x13')]);router[_0x715a('0x14')](_0x715a('0xb'),auth['isAuthenticated'](),controller[_0x715a('0x15')]);router['delete'](_0x715a('0xb'),auth['isAuthenticated'](),controller[_0x715a('0x16')]);module[_0x715a('0x17')]=router;
\ No newline at end of file
+var _0xf8f1=['../../components/auth/service','../../config/environment','./dashboard.controller','isAuthenticated','get','show','/:id/items','getItems','create','post','addItem','put','/:id','update','delete','destroy','exports','util','connect-timeout','express','fs-extra'];(function(_0x343ba3,_0x39ebaa){var _0x356fc4=function(_0x2536ae){while(--_0x2536ae){_0x343ba3['push'](_0x343ba3['shift']());}};_0x356fc4(++_0x39ebaa);}(_0xf8f1,0x176));var _0x1f8f=function(_0x55ff3e,_0x41077f){_0x55ff3e=_0x55ff3e-0x0;var _0x2709eb=_0xf8f1[_0x55ff3e];return _0x2709eb;};'use strict';var multer=require('multer');var util=require(_0x1f8f('0x0'));var path=require('path');var timeout=require(_0x1f8f('0x1'));var express=require(_0x1f8f('0x2'));var router=express['Router']();var fs_extra=require(_0x1f8f('0x3'));var auth=require(_0x1f8f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1f8f('0x5'));var controller=require(_0x1f8f('0x6'));router['get']('/',auth[_0x1f8f('0x7')](),controller['index']);router[_0x1f8f('0x8')]('/:id',auth[_0x1f8f('0x7')](),controller[_0x1f8f('0x9')]);router['get'](_0x1f8f('0xa'),auth['isAuthenticated'](),controller[_0x1f8f('0xb')]);router['post']('/',auth[_0x1f8f('0x7')](),controller[_0x1f8f('0xc')]);router[_0x1f8f('0xd')]('/:id/clone',auth[_0x1f8f('0x7')](),controller['clone']);router[_0x1f8f('0xd')](_0x1f8f('0xa'),auth[_0x1f8f('0x7')](),controller[_0x1f8f('0xe')]);router[_0x1f8f('0xf')](_0x1f8f('0x10'),auth['isAuthenticated'](),controller[_0x1f8f('0x11')]);router[_0x1f8f('0x12')](_0x1f8f('0x10'),auth['isAuthenticated'](),controller[_0x1f8f('0x13')]);module[_0x1f8f('0x14')]=router;
\ No newline at end of file
index db13748..e812cef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['STRING','TEXT','parse','setDataValue','attrs','stringify','INTEGER','#2196f3','squel','lodash','exports'];(function(_0x553ae6,_0x6e07c2){var _0x2f43a6=function(_0x2505f6){while(--_0x2505f6){_0x553ae6['push'](_0x553ae6['shift']());}};_0x2f43a6(++_0x6e07c2);}(_0x2eb2,0x19f));var _0x22eb=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0x2eb2[_0x521929];return _0x632436;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x22eb('0x0'));var _=require(_0x22eb('0x1'));module[_0x22eb('0x2')]={'title':{'type':Sequelize[_0x22eb('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x22eb('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x22eb('0x4')]('long'),'get':function(){try{return JSON[_0x22eb('0x5')](this['getDataValue']('attrs'));}catch(_0x1dfef7){return[];}},'set':function(_0x10e116){try{this[_0x22eb('0x6')](_0x22eb('0x7'),JSON[_0x22eb('0x8')](_0x10e116));}catch(_0x396806){this[_0x22eb('0x6')](_0x22eb('0x7'),JSON[_0x22eb('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0x22eb('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x22eb('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x22eb('0x9')]},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x22eb('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x22eb('0xa'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0x22eb('0x9')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x1261=['squel','lodash','exports','STRING','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0x5eef05,_0x1be989){var _0x56d4b8=function(_0x57993d){while(--_0x57993d){_0x5eef05['push'](_0x5eef05['shift']());}};_0x56d4b8(++_0x1be989);}(_0x1261,0x144));var _0x1126=function(_0x43de22,_0x1eced6){_0x43de22=_0x43de22-0x0;var _0x4b15ee=_0x1261[_0x43de22];return _0x4b15ee;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x1126('0x0'));var _=require(_0x1126('0x1'));module[_0x1126('0x2')]={'title':{'type':Sequelize[_0x1126('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x1126('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x1126('0x4')](_0x1126('0x5')),'get':function(){try{return JSON[_0x1126('0x6')](this[_0x1126('0x7')](_0x1126('0x8')));}catch(_0x5a2189){return[];}},'set':function(_0x5c68c8){try{this[_0x1126('0x9')](_0x1126('0x8'),JSON['stringify'](_0x5c68c8));}catch(_0x17e5f0){this[_0x1126('0x9')](_0x1126('0x8'),JSON[_0x1126('0xa')]([]));}}},'sizeX':{'type':Sequelize[_0x1126('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x1126('0xb')]},'col':{'type':Sequelize[_0x1126('0xb')]},'background':{'type':Sequelize[_0x1126('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x1126('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0x1126('0xb')],'defaultValue':0xc}};
\ No newline at end of file
index f93d08e..e6a2ed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb8b=['count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','keys','DashboardItem','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','merge','find','catch','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','type','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','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/license/util','redis','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','offset','limit','undefined'];(function(_0x17ff7a,_0x4d83bd){var _0x18aa4b=function(_0x2a810d){while(--_0x2a810d){_0x17ff7a['push'](_0x17ff7a['shift']());}};_0x18aa4b(++_0x4d83bd);}(_0xdb8b,0x1c4));var _0xbdb8=function(_0x172e4d,_0x1cd238){_0x172e4d=_0x172e4d-0x0;var _0x16911e=_0xdb8b[_0x172e4d];return _0x16911e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbdb8('0x0'));var zipdir=require(_0xbdb8('0x1'));var jsonpatch=require(_0xbdb8('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xbdb8('0x3'));var Mustache=require('mustache');var util=require(_0xbdb8('0x4'));var path=require(_0xbdb8('0x5'));var sox=require(_0xbdb8('0x6'));var csv=require(_0xbdb8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbdb8('0x8'));var _=require('lodash');var squel=require(_0xbdb8('0x9'));var crypto=require(_0xbdb8('0xa'));var jsforce=require(_0xbdb8('0xb'));var deskjs=require(_0xbdb8('0xc'));var toCsv=require(_0xbdb8('0x7'));var querystring=require(_0xbdb8('0xd'));var Papa=require('papaparse');var Redis=require(_0xbdb8('0xe'));var authService=require(_0xbdb8('0xf'));var qs=require(_0xbdb8('0x10'));var as=require(_0xbdb8('0x11'));var hardwareService=require(_0xbdb8('0x12'));var logger=require(_0xbdb8('0x13'))(_0xbdb8('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xbdb8('0x15'));var db=require('../../mysqldb')['db'];config[_0xbdb8('0x16')]=_['defaults'](config[_0xbdb8('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xbdb8('0x17'))(new Redis(config[_0xbdb8('0x16')]));require(_0xbdb8('0x18'))[_0xbdb8('0x19')](socket);function respondWithStatusCode(_0x20984d,_0x180036){_0x180036=_0x180036||0xcc;return function(_0x12bc92){if(_0x12bc92){return _0x20984d[_0xbdb8('0x1a')](_0x180036);}return _0x20984d[_0xbdb8('0x1b')](_0x180036)[_0xbdb8('0x1c')]();};}function respondWithResult(_0x3d583b,_0x1985cb){_0x1985cb=_0x1985cb||0xc8;return function(_0x29b2f7){if(_0x29b2f7){return _0x3d583b['status'](_0x1985cb)[_0xbdb8('0x1d')](_0x29b2f7);}};}function respondWithFilteredResult(_0x3fc32f,_0x154036){return function(_0x5e5330){if(_0x5e5330){var _0x50e009=typeof _0x154036[_0xbdb8('0x1e')]==='undefined'&&typeof _0x154036[_0xbdb8('0x1f')]===_0xbdb8('0x20');var _0xb496f8=_0x5e5330[_0xbdb8('0x21')];var _0x3a177d=_0x50e009?0x0:_0x154036[_0xbdb8('0x1e')];var _0x21c9bf=_0x50e009?_0x5e5330[_0xbdb8('0x21')]:_0x154036[_0xbdb8('0x1e')]+_0x154036[_0xbdb8('0x1f')];var _0x39cfb9;if(_0x21c9bf>=_0xb496f8){_0x21c9bf=_0xb496f8;_0x39cfb9=0xc8;}else{_0x39cfb9=0xce;}_0x3fc32f[_0xbdb8('0x1b')](_0x39cfb9);return _0x3fc32f[_0xbdb8('0x22')](_0xbdb8('0x23'),_0x3a177d+'-'+_0x21c9bf+'/'+_0xb496f8)[_0xbdb8('0x1d')](_0x5e5330);}return null;};}function patchUpdates(_0x3588ee){return function(_0x14c7af){try{jsonpatch[_0xbdb8('0x24')](_0x14c7af,_0x3588ee,!![]);}catch(_0x1e9398){return BPromise[_0xbdb8('0x25')](_0x1e9398);}return _0x14c7af[_0xbdb8('0x26')]();};}function saveUpdates(_0x50c6db,_0x1b99df){return function(_0x5cd628){if(_0x5cd628){return _0x5cd628[_0xbdb8('0x27')](_0x50c6db)[_0xbdb8('0x28')](function(_0x4e9e42){return _0x4e9e42;});}return null;};}function removeEntity(_0x1da624,_0x38709a){return function(_0x554de8){if(_0x554de8){return _0x554de8[_0xbdb8('0x29')]()[_0xbdb8('0x28')](function(){_0x1da624[_0xbdb8('0x1b')](0xcc)[_0xbdb8('0x1c')]();});}};}function handleEntityNotFound(_0x3dedcb,_0x2fe157){return function(_0x325233){if(!_0x325233){_0x3dedcb['sendStatus'](0x194);}return _0x325233;};}function handleError(_0x3c3138,_0x5d0fd7){_0x5d0fd7=_0x5d0fd7||0x1f4;return function(_0x4d2103){logger[_0xbdb8('0x2a')](_0x4d2103[_0xbdb8('0x2b')]);if(_0x4d2103[_0xbdb8('0x2c')]){delete _0x4d2103[_0xbdb8('0x2c')];}_0x3c3138['status'](_0x5d0fd7)[_0xbdb8('0x2d')](_0x4d2103);};}exports[_0xbdb8('0x2e')]=function(_0x26dcbe,_0x477c83){var _0x4ec9a0={'raw':![],'where':{'id':_0x26dcbe[_0xbdb8('0x2f')]['id']}},_0x422f80={};_0x422f80[_0xbdb8('0x30')]=_[_0xbdb8('0x31')](db[_0xbdb8('0x32')][_0xbdb8('0x33')]);_0x422f80[_0xbdb8('0x34')]=_['keys'](_0x26dcbe[_0xbdb8('0x34')]);_0x422f80[_0xbdb8('0x35')]=_['intersection'](_0x422f80['model'],_0x422f80[_0xbdb8('0x34')]);_0x4ec9a0[_0xbdb8('0x36')]=_[_0xbdb8('0x37')](_0x422f80['model'],qs[_0xbdb8('0x38')](_0x26dcbe[_0xbdb8('0x34')][_0xbdb8('0x38')]));_0x4ec9a0[_0xbdb8('0x36')]=_0x4ec9a0['attributes'][_0xbdb8('0x39')]?_0x4ec9a0['attributes']:_0x422f80['model'];if(_0x26dcbe[_0xbdb8('0x34')][_0xbdb8('0x3a')]){_0x4ec9a0['include']=[{'all':!![]}];}_0x4ec9a0=_[_0xbdb8('0x3b')]({},_0x4ec9a0,_0x26dcbe['options']);return db[_0xbdb8('0x32')][_0xbdb8('0x3c')](_0x4ec9a0)['then'](handleEntityNotFound(_0x477c83,null))[_0xbdb8('0x28')](respondWithResult(_0x477c83,null))[_0xbdb8('0x3d')](handleError(_0x477c83,null));};exports[_0xbdb8('0x29')]=function(_0x457676,_0x5bb3ac){return db[_0xbdb8('0x32')][_0xbdb8('0x3c')]({'where':{'id':_0x457676[_0xbdb8('0x2f')]['id']}})['then'](handleEntityNotFound(_0x5bb3ac,null))['then'](removeEntity(_0x5bb3ac,null))[_0xbdb8('0x3d')](handleError(_0x5bb3ac,null));};function widgetAttributes(_0x2f1c79){try{switch(_0x2f1c79['type']){case'iframe':return[{'name':'attrUrl','value':_0x2f1c79[_0xbdb8('0x3e')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x0]?_0x2f1c79['attrs'][0x0][_0xbdb8('0x40')]:undefined)||_0xbdb8('0x41')}];case'custom':return[{'name':'attrPath','value':_0x2f1c79[_0xbdb8('0x42')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x0]?_0x2f1c79[_0xbdb8('0x3f')][0x0]['value']:undefined)||''}];case _0xbdb8('0x43'):return[{'name':'attrHourFormat','value':_0x2f1c79[_0xbdb8('0x44')]||(_0x2f1c79['attrs']&&_0x2f1c79[_0xbdb8('0x3f')][0x0]?_0x2f1c79[_0xbdb8('0x3f')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':_0xbdb8('0x45'),'value':_0x2f1c79['attrTimezone']||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x1]?_0x2f1c79['attrs'][0x1][_0xbdb8('0x40')]:undefined)||_0xbdb8('0x46')},{'name':_0xbdb8('0x47'),'value':_0x2f1c79[_0xbdb8('0x47')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x2]?_0x2f1c79[_0xbdb8('0x3f')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0xbdb8('0x48'),'value':_0x2f1c79[_0xbdb8('0x48')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79['attrs'][0x0]?_0x2f1c79[_0xbdb8('0x3f')][0x0][_0xbdb8('0x40')]:undefined)||_0xbdb8('0x49')},{'name':_0xbdb8('0x4a'),'value':_0x2f1c79[_0xbdb8('0x4a')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x1]?_0x2f1c79[_0xbdb8('0x3f')][0x1]['value']:undefined)||[]},{'name':_0xbdb8('0x47'),'value':_0x2f1c79[_0xbdb8('0x47')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x2]?_0x2f1c79[_0xbdb8('0x3f')][0x2]['value']:undefined)||0x14},{'name':_0xbdb8('0x4b'),'value':_0x2f1c79[_0xbdb8('0x4b')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79['attrs'][0x3]?_0x2f1c79[_0xbdb8('0x3f')][0x3][_0xbdb8('0x40')]:undefined)||_0xbdb8('0x4c')},{'name':'attrEmailAccounts','value':_0x2f1c79[_0xbdb8('0x4d')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x4]?_0x2f1c79[_0xbdb8('0x3f')][0x4]['value']:undefined)||''},{'name':_0xbdb8('0x4e'),'value':_0x2f1c79['attrFaxAccounts']||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79['attrs'][0x5]?_0x2f1c79[_0xbdb8('0x3f')][0x5][_0xbdb8('0x40')]:undefined)||''},{'name':_0xbdb8('0x4f'),'value':_0x2f1c79[_0xbdb8('0x4f')]||(_0x2f1c79['attrs']&&_0x2f1c79[_0xbdb8('0x3f')][0x6]?_0x2f1c79[_0xbdb8('0x3f')][0x6][_0xbdb8('0x40')]:undefined)||''},{'name':_0xbdb8('0x50'),'value':_0x2f1c79[_0xbdb8('0x50')]||(_0x2f1c79['attrs']&&_0x2f1c79[_0xbdb8('0x3f')][0x7]?_0x2f1c79[_0xbdb8('0x3f')][0x7]['value']:undefined)||''},{'name':_0xbdb8('0x51'),'value':_0x2f1c79[_0xbdb8('0x51')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79['attrs'][0x8]?_0x2f1c79['attrs'][0x8][_0xbdb8('0x40')]:undefined)||''},{'name':_0xbdb8('0x52'),'value':_0x2f1c79[_0xbdb8('0x52')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x9]?_0x2f1c79['attrs'][0x9][_0xbdb8('0x40')]:undefined)||''}];case _0xbdb8('0x53'):case _0xbdb8('0x54'):return[{'name':_0xbdb8('0x55'),'value':_0x2f1c79[_0xbdb8('0x55')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x0]?_0x2f1c79[_0xbdb8('0x3f')][0x0][_0xbdb8('0x40')]:undefined)||_0xbdb8('0x49')},{'name':_0xbdb8('0x56'),'value':_0x2f1c79[_0xbdb8('0x56')]||(_0x2f1c79['attrs']&&_0x2f1c79['attrs'][0x1]?_0x2f1c79[_0xbdb8('0x3f')][0x1][_0xbdb8('0x40')]:undefined)||null},{'name':_0xbdb8('0x57'),'value':_0x2f1c79[_0xbdb8('0x57')]||(_0x2f1c79['attrs']&&_0x2f1c79[_0xbdb8('0x3f')][0x2]?_0x2f1c79[_0xbdb8('0x3f')][0x2]['value']:undefined)||null},{'name':_0xbdb8('0x4a'),'value':_0x2f1c79[_0xbdb8('0x4a')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x3]?_0x2f1c79[_0xbdb8('0x3f')][0x3][_0xbdb8('0x40')]:undefined)||[]},{'name':'attrChannel','value':_0x2f1c79[_0xbdb8('0x4b')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79['attrs'][0x4]?_0x2f1c79['attrs'][0x4][_0xbdb8('0x40')]:undefined)||_0xbdb8('0x4c')},{'name':_0xbdb8('0x4d'),'value':_0x2f1c79['attrEmailAccounts']||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79['attrs'][0x5]?_0x2f1c79[_0xbdb8('0x3f')][0x5]['value']:undefined)||''},{'name':_0xbdb8('0x4e'),'value':_0x2f1c79[_0xbdb8('0x4e')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x6]?_0x2f1c79[_0xbdb8('0x3f')][0x6][_0xbdb8('0x40')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x2f1c79[_0xbdb8('0x4f')]||(_0x2f1c79['attrs']&&_0x2f1c79['attrs'][0x7]?_0x2f1c79[_0xbdb8('0x3f')][0x7][_0xbdb8('0x40')]:undefined)||''},{'name':_0xbdb8('0x50'),'value':_0x2f1c79[_0xbdb8('0x50')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x8]?_0x2f1c79[_0xbdb8('0x3f')][0x8][_0xbdb8('0x40')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x2f1c79[_0xbdb8('0x51')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79['attrs'][0x9]?_0x2f1c79[_0xbdb8('0x3f')][0x9][_0xbdb8('0x40')]:undefined)||''},{'name':_0xbdb8('0x52'),'value':_0x2f1c79[_0xbdb8('0x52')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0xa]?_0x2f1c79['attrs'][0xa][_0xbdb8('0x40')]:undefined)||''}];case _0xbdb8('0x58'):return[{'name':_0xbdb8('0x59'),'type':_0x2f1c79[_0xbdb8('0x5a')]||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79[_0xbdb8('0x3f')][0x0]?_0x2f1c79['attrs'][0x0][_0xbdb8('0x5b')]:undefined)||null,'value':_0x2f1c79[_0xbdb8('0x59')]||(_0x2f1c79['attrs']&&_0x2f1c79['attrs'][0x0]?_0x2f1c79[_0xbdb8('0x3f')][0x0]['value']:undefined)||null},{'name':_0xbdb8('0x5c'),'value':_0x2f1c79['attrRefresh']||(_0x2f1c79[_0xbdb8('0x3f')]&&_0x2f1c79['attrs'][0x1]?_0x2f1c79[_0xbdb8('0x3f')][0x1][_0xbdb8('0x40')]:undefined)||0x0}];default:return[];}}catch(_0xb31eaa){logger[_0xbdb8('0x2a')](_0xbdb8('0x5d'),JSON[_0xbdb8('0x5e')](_0xb31eaa));return[];}}exports[_0xbdb8('0x5f')]=function(_0x4fffd1,_0x426f2c){if(_0x4fffd1[_0xbdb8('0x60')]){_0x4fffd1['body']['attrs']=widgetAttributes(_0x4fffd1['body']);}return db['DashboardItem'][_0xbdb8('0x5f')](_0x4fffd1[_0xbdb8('0x60')],{})[_0xbdb8('0x28')](respondWithResult(_0x426f2c,0xc9))[_0xbdb8('0x3d')](handleError(_0x426f2c,null));};exports[_0xbdb8('0x27')]=function(_0x4d499e,_0x421569){if(_0x4d499e['body']['id']){delete _0x4d499e['body']['id'];}_0x4d499e['body']['attrs']=widgetAttributes(_0x4d499e['body']);return db[_0xbdb8('0x32')]['find']({'where':{'id':_0x4d499e[_0xbdb8('0x2f')]['id']}})[_0xbdb8('0x28')](handleEntityNotFound(_0x421569,null))[_0xbdb8('0x28')](saveUpdates(_0x4d499e[_0xbdb8('0x60')],null))['then'](respondWithResult(_0x421569,null))[_0xbdb8('0x3d')](handleError(_0x421569,null));};
\ No newline at end of file
+var _0xb194=['attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','stringify','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','show','params','model','keys','DashboardItem','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','type','iframe'];(function(_0x699072,_0x3aca68){var _0x44edc2=function(_0x3c1e8b){while(--_0x3c1e8b){_0x699072['push'](_0x699072['shift']());}};_0x44edc2(++_0x3aca68);}(_0xb194,0x1b2));var _0x4b19=function(_0x58e39a,_0x474e33){_0x58e39a=_0x58e39a-0x0;var _0x5233f4=_0xb194[_0x58e39a];return _0x5233f4;};'use strict';var emlformat=require(_0x4b19('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4b19('0x1'));var jsonpatch=require(_0x4b19('0x2'));var rp=require(_0x4b19('0x3'));var moment=require(_0x4b19('0x4'));var BPromise=require(_0x4b19('0x5'));var Mustache=require('mustache');var util=require(_0x4b19('0x6'));var path=require(_0x4b19('0x7'));var sox=require('sox');var csv=require(_0x4b19('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4b19('0x9'));var _=require('lodash');var squel=require(_0x4b19('0xa'));var crypto=require(_0x4b19('0xb'));var jsforce=require(_0x4b19('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4b19('0xd'));var Papa=require('papaparse');var Redis=require(_0x4b19('0xe'));var authService=require(_0x4b19('0xf'));var qs=require(_0x4b19('0x10'));var as=require(_0x4b19('0x11'));var hardwareService=require(_0x4b19('0x12'));var logger=require(_0x4b19('0x13'))(_0x4b19('0x14'));var utils=require(_0x4b19('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4b19('0x16'));var db=require('../../mysqldb')['db'];config[_0x4b19('0x17')]=_[_0x4b19('0x18')](config['redis'],{'host':_0x4b19('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4b19('0x17')]));require(_0x4b19('0x1a'))[_0x4b19('0x1b')](socket);function respondWithStatusCode(_0x3a3af4,_0xc0a0da){_0xc0a0da=_0xc0a0da||0xcc;return function(_0x5e02bc){if(_0x5e02bc){return _0x3a3af4[_0x4b19('0x1c')](_0xc0a0da);}return _0x3a3af4[_0x4b19('0x1d')](_0xc0a0da)[_0x4b19('0x1e')]();};}function respondWithResult(_0x3a19cf,_0x18d261){_0x18d261=_0x18d261||0xc8;return function(_0x1ac29b){if(_0x1ac29b){return _0x3a19cf['status'](_0x18d261)[_0x4b19('0x1f')](_0x1ac29b);}};}function respondWithFilteredResult(_0xd3f210,_0x21e845){return function(_0xe7696a){if(_0xe7696a){var _0x2d17b5=typeof _0x21e845[_0x4b19('0x20')]===_0x4b19('0x21')&&typeof _0x21e845[_0x4b19('0x22')]==='undefined';var _0x28a433=_0xe7696a['count'];var _0x81a5f3=_0x2d17b5?0x0:_0x21e845[_0x4b19('0x20')];var _0x3f1ba5=_0x2d17b5?_0xe7696a[_0x4b19('0x23')]:_0x21e845[_0x4b19('0x20')]+_0x21e845[_0x4b19('0x22')];var _0x56b421;if(_0x3f1ba5>=_0x28a433){_0x3f1ba5=_0x28a433;_0x56b421=0xc8;}else{_0x56b421=0xce;}_0xd3f210[_0x4b19('0x1d')](_0x56b421);return _0xd3f210['set'](_0x4b19('0x24'),_0x81a5f3+'-'+_0x3f1ba5+'/'+_0x28a433)[_0x4b19('0x1f')](_0xe7696a);}return null;};}function patchUpdates(_0x234632){return function(_0x5c2fd6){try{jsonpatch[_0x4b19('0x25')](_0x5c2fd6,_0x234632,!![]);}catch(_0x52e144){return BPromise[_0x4b19('0x26')](_0x52e144);}return _0x5c2fd6[_0x4b19('0x27')]();};}function saveUpdates(_0x53f903,_0x363165){return function(_0x428e72){if(_0x428e72){return _0x428e72[_0x4b19('0x28')](_0x53f903)[_0x4b19('0x29')](function(_0x4c5f27){return _0x4c5f27;});}return null;};}function removeEntity(_0x12c4ac,_0x4ceba3){return function(_0x545991){if(_0x545991){return _0x545991[_0x4b19('0x2a')]()['then'](function(){_0x12c4ac[_0x4b19('0x1d')](0xcc)[_0x4b19('0x1e')]();});}};}function handleEntityNotFound(_0x28ae60,_0x29ea36){return function(_0x5c6741){if(!_0x5c6741){_0x28ae60[_0x4b19('0x1c')](0x194);}return _0x5c6741;};}function handleError(_0xcf1850,_0x5987d6){_0x5987d6=_0x5987d6||0x1f4;return function(_0x2e1fab){logger[_0x4b19('0x2b')](_0x2e1fab[_0x4b19('0x2c')]);if(_0x2e1fab['name']){delete _0x2e1fab['name'];}_0xcf1850[_0x4b19('0x1d')](_0x5987d6)[_0x4b19('0x2d')](_0x2e1fab);};}exports[_0x4b19('0x2e')]=function(_0x22798d,_0x1d63a3){var _0x4b4463={'raw':![],'where':{'id':_0x22798d[_0x4b19('0x2f')]['id']}},_0x15d240={};_0x15d240[_0x4b19('0x30')]=_[_0x4b19('0x31')](db[_0x4b19('0x32')][_0x4b19('0x33')]);_0x15d240[_0x4b19('0x34')]=_[_0x4b19('0x31')](_0x22798d[_0x4b19('0x34')]);_0x15d240[_0x4b19('0x35')]=_[_0x4b19('0x36')](_0x15d240[_0x4b19('0x30')],_0x15d240['query']);_0x4b4463[_0x4b19('0x37')]=_['intersection'](_0x15d240[_0x4b19('0x30')],qs[_0x4b19('0x38')](_0x22798d['query'][_0x4b19('0x38')]));_0x4b4463[_0x4b19('0x37')]=_0x4b4463[_0x4b19('0x37')][_0x4b19('0x39')]?_0x4b4463[_0x4b19('0x37')]:_0x15d240[_0x4b19('0x30')];if(_0x22798d[_0x4b19('0x34')][_0x4b19('0x3a')]){_0x4b4463[_0x4b19('0x3b')]=[{'all':!![]}];}_0x4b4463=_[_0x4b19('0x3c')]({},_0x4b4463,_0x22798d[_0x4b19('0x3d')]);return db[_0x4b19('0x32')][_0x4b19('0x3e')](_0x4b4463)['then'](handleEntityNotFound(_0x1d63a3,null))[_0x4b19('0x29')](respondWithResult(_0x1d63a3,null))['catch'](handleError(_0x1d63a3,null));};exports['destroy']=function(_0xc530e2,_0x31eabc){return db[_0x4b19('0x32')][_0x4b19('0x3e')]({'where':{'id':_0xc530e2[_0x4b19('0x2f')]['id']}})[_0x4b19('0x29')](handleEntityNotFound(_0x31eabc,null))[_0x4b19('0x29')](removeEntity(_0x31eabc,null))[_0x4b19('0x3f')](handleError(_0x31eabc,null));};function widgetAttributes(_0x418a24){try{switch(_0x418a24[_0x4b19('0x40')]){case _0x4b19('0x41'):return[{'name':'attrUrl','value':_0x418a24[_0x4b19('0x42')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x0]?_0x418a24['attrs'][0x0][_0x4b19('0x44')]:undefined)||_0x4b19('0x45')}];case _0x4b19('0x46'):return[{'name':_0x4b19('0x47'),'value':_0x418a24[_0x4b19('0x47')]||(_0x418a24['attrs']&&_0x418a24['attrs'][0x0]?_0x418a24[_0x4b19('0x43')][0x0][_0x4b19('0x44')]:undefined)||''}];case _0x4b19('0x48'):return[{'name':_0x4b19('0x49'),'value':_0x418a24[_0x4b19('0x49')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x0]?_0x418a24[_0x4b19('0x43')][0x0][_0x4b19('0x44')]:undefined)||_0x4b19('0x4a')},{'name':_0x4b19('0x4b'),'value':_0x418a24[_0x4b19('0x4b')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x1]?_0x418a24[_0x4b19('0x43')][0x1][_0x4b19('0x44')]:undefined)||_0x4b19('0x4c')},{'name':'attrFontSize','value':_0x418a24[_0x4b19('0x4d')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x2]?_0x418a24[_0x4b19('0x43')][0x2][_0x4b19('0x44')]:undefined)||0xc}];case'counter':return[{'name':_0x4b19('0x4e'),'value':_0x418a24['attrMetric']||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x0]?_0x418a24[_0x4b19('0x43')][0x0]['value']:undefined)||_0x4b19('0x4f')},{'name':_0x4b19('0x50'),'value':_0x418a24[_0x4b19('0x50')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x1]?_0x418a24['attrs'][0x1]['value']:undefined)||[]},{'name':_0x4b19('0x4d'),'value':_0x418a24[_0x4b19('0x4d')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x2]?_0x418a24[_0x4b19('0x43')][0x2]['value']:undefined)||0x14},{'name':_0x4b19('0x51'),'value':_0x418a24[_0x4b19('0x51')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x3]?_0x418a24[_0x4b19('0x43')][0x3][_0x4b19('0x44')]:undefined)||'voice'},{'name':_0x4b19('0x52'),'value':_0x418a24[_0x4b19('0x52')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x4]?_0x418a24[_0x4b19('0x43')][0x4]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x418a24[_0x4b19('0x53')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x5]?_0x418a24[_0x4b19('0x43')][0x5]['value']:undefined)||''},{'name':'attrSmsAccounts','value':_0x418a24[_0x4b19('0x54')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x6]?_0x418a24['attrs'][0x6][_0x4b19('0x44')]:undefined)||''},{'name':_0x4b19('0x55'),'value':_0x418a24[_0x4b19('0x55')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x7]?_0x418a24['attrs'][0x7][_0x4b19('0x44')]:undefined)||''},{'name':_0x4b19('0x56'),'value':_0x418a24['attrWhatsappAccounts']||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x8]?_0x418a24['attrs'][0x8][_0x4b19('0x44')]:undefined)||''},{'name':_0x4b19('0x57'),'value':_0x418a24[_0x4b19('0x57')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x9]?_0x418a24[_0x4b19('0x43')][0x9][_0x4b19('0x44')]:undefined)||''}];case _0x4b19('0x58'):case _0x4b19('0x59'):return[{'name':_0x4b19('0x5a'),'value':_0x418a24[_0x4b19('0x5a')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x0]?_0x418a24[_0x4b19('0x43')][0x0][_0x4b19('0x44')]:undefined)||_0x4b19('0x4f')},{'name':_0x4b19('0x5b'),'value':_0x418a24[_0x4b19('0x5b')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x1]?_0x418a24[_0x4b19('0x43')][0x1]['value']:undefined)||null},{'name':_0x4b19('0x5c'),'value':_0x418a24[_0x4b19('0x5c')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x2]?_0x418a24[_0x4b19('0x43')][0x2][_0x4b19('0x44')]:undefined)||null},{'name':_0x4b19('0x50'),'value':_0x418a24['attrVoiceQueues']||(_0x418a24['attrs']&&_0x418a24[_0x4b19('0x43')][0x3]?_0x418a24[_0x4b19('0x43')][0x3][_0x4b19('0x44')]:undefined)||[]},{'name':_0x4b19('0x51'),'value':_0x418a24['attrChannel']||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x4]?_0x418a24['attrs'][0x4][_0x4b19('0x44')]:undefined)||'voice'},{'name':_0x4b19('0x52'),'value':_0x418a24[_0x4b19('0x52')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x5]?_0x418a24['attrs'][0x5][_0x4b19('0x44')]:undefined)||''},{'name':_0x4b19('0x53'),'value':_0x418a24[_0x4b19('0x53')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x6]?_0x418a24['attrs'][0x6][_0x4b19('0x44')]:undefined)||''},{'name':_0x4b19('0x54'),'value':_0x418a24[_0x4b19('0x54')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x7]?_0x418a24[_0x4b19('0x43')][0x7]['value']:undefined)||''},{'name':_0x4b19('0x55'),'value':_0x418a24[_0x4b19('0x55')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x8]?_0x418a24['attrs'][0x8]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x418a24['attrWhatsappAccounts']||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x9]?_0x418a24['attrs'][0x9]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x418a24[_0x4b19('0x57')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0xa]?_0x418a24['attrs'][0xa][_0x4b19('0x44')]:undefined)||''}];case _0x4b19('0x5d'):return[{'name':_0x4b19('0x5e'),'type':_0x418a24[_0x4b19('0x5f')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x0]?_0x418a24['attrs'][0x0][_0x4b19('0x40')]:undefined)||null,'value':_0x418a24[_0x4b19('0x5e')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24['attrs'][0x0]?_0x418a24[_0x4b19('0x43')][0x0]['value']:undefined)||null},{'name':_0x4b19('0x60'),'value':_0x418a24[_0x4b19('0x60')]||(_0x418a24[_0x4b19('0x43')]&&_0x418a24[_0x4b19('0x43')][0x1]?_0x418a24[_0x4b19('0x43')][0x1][_0x4b19('0x44')]:undefined)||0x0}];default:return[];}}catch(_0x5b6503){logger[_0x4b19('0x2b')]('widgetAttributes:\x20%s',JSON[_0x4b19('0x61')](_0x5b6503));return[];}}exports[_0x4b19('0x62')]=function(_0x456ad0,_0x53622c){if(_0x456ad0[_0x4b19('0x63')]){_0x456ad0['body'][_0x4b19('0x43')]=widgetAttributes(_0x456ad0[_0x4b19('0x63')]);}return db[_0x4b19('0x32')][_0x4b19('0x62')](_0x456ad0[_0x4b19('0x63')],{})[_0x4b19('0x29')](respondWithResult(_0x53622c,0xc9))['catch'](handleError(_0x53622c,null));};exports[_0x4b19('0x28')]=function(_0x2a3599,_0x483b57){if(_0x2a3599['body']['id']){delete _0x2a3599[_0x4b19('0x63')]['id'];}_0x2a3599['body'][_0x4b19('0x43')]=widgetAttributes(_0x2a3599[_0x4b19('0x63')]);return db[_0x4b19('0x32')][_0x4b19('0x3e')]({'where':{'id':_0x2a3599[_0x4b19('0x2f')]['id']}})[_0x4b19('0x29')](handleEntityNotFound(_0x483b57,null))[_0x4b19('0x29')](saveUpdates(_0x2a3599['body'],null))[_0x4b19('0x29')](respondWithResult(_0x483b57,null))[_0x4b19('0x3f')](handleError(_0x483b57,null));};
\ No newline at end of file
index bbfb652..e55b37a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d53=['DashboardItem','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x2feba1,_0x3b055d){var _0x48eb98=function(_0x5293c4){while(--_0x5293c4){_0x2feba1['push'](_0x2feba1['shift']());}};_0x48eb98(++_0x3b055d);}(_0x2d53,0xae));var _0x32d5=function(_0x536068,_0x3de52c){_0x536068=_0x536068-0x0;var _0x4a5db2=_0x2d53[_0x536068];return _0x4a5db2;};'use strict';var EventEmitter=require(_0x32d5('0x0'));var DashboardItem=require(_0x32d5('0x1'))['db'][_0x32d5('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x32d5('0x3')](0x0);var events={'afterCreate':_0x32d5('0x4'),'afterUpdate':_0x32d5('0x5'),'afterDestroy':_0x32d5('0x6')};function emitEvent(_0xde1f80){return function(_0x30bfa3,_0x46509d,_0x231938){DashboardItemEvents[_0x32d5('0x7')](_0xde1f80+':'+_0x30bfa3['id'],_0x30bfa3);DashboardItemEvents[_0x32d5('0x7')](_0xde1f80,_0x30bfa3);_0x231938(null);};}for(var e in events){if(events[_0x32d5('0x8')](e)){var event=events[e];DashboardItem[_0x32d5('0x9')](e,emitEvent(event));}}module[_0x32d5('0xa')]=DashboardItemEvents;
\ No newline at end of file
+var _0xf11e=['hasOwnProperty','hook','exports','events','DashboardItem','setMaxListeners','save','emit'];(function(_0x4cd87e,_0x206c15){var _0x1f7a44=function(_0xfc2a34){while(--_0xfc2a34){_0x4cd87e['push'](_0x4cd87e['shift']());}};_0x1f7a44(++_0x206c15);}(_0xf11e,0x11b));var _0xef11=function(_0x1e7468,_0xa89ba1){_0x1e7468=_0x1e7468-0x0;var _0x82327e=_0xf11e[_0x1e7468];return _0x82327e;};'use strict';var EventEmitter=require(_0xef11('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0xef11('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xef11('0x2')](0x0);var events={'afterCreate':_0xef11('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3368fd){return function(_0x5cea87,_0x594a7c,_0x23dbcb){DashboardItemEvents[_0xef11('0x4')](_0x3368fd+':'+_0x5cea87['id'],_0x5cea87);DashboardItemEvents[_0xef11('0x4')](_0x3368fd,_0x5cea87);_0x23dbcb(null);};}for(var e in events){if(events[_0xef11('0x5')](e)){var event=events[e];DashboardItem[_0xef11('0x6')](e,emitEvent(event));}}module[_0xef11('0x7')]=DashboardItemEvents;
\ No newline at end of file
index a05c886..ebd6d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed11=['define','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./dashboardItem.attributes','exports'];(function(_0x30e0f0,_0x4aa76e){var _0x2afc0a=function(_0x47b312){while(--_0x47b312){_0x30e0f0['push'](_0x30e0f0['shift']());}};_0x2afc0a(++_0x4aa76e);}(_0xed11,0x1eb));var _0x1ed1=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xed11[_0x1f9f37];return _0x21c080;};'use strict';var _=require(_0x1ed1('0x0'));var util=require('util');var logger=require(_0x1ed1('0x1'))('api');var moment=require(_0x1ed1('0x2'));var BPromise=require(_0x1ed1('0x3'));var rp=require(_0x1ed1('0x4'));var fs=require('fs');var path=require(_0x1ed1('0x5'));var rimraf=require('rimraf');var config=require(_0x1ed1('0x6'));var attributes=require(_0x1ed1('0x7'));module[_0x1ed1('0x8')]=function(_0x9f1f39,_0x52793a){return _0x9f1f39[_0x1ed1('0x9')]('DashboardItem',attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d62=['DashboardItem','dashboard_items','lodash','util','moment','bluebird','request-promise','path','./dashboardItem.attributes','exports'];(function(_0x37564b,_0x5b7e5b){var _0x12a817=function(_0x4cc01c){while(--_0x4cc01c){_0x37564b['push'](_0x37564b['shift']());}};_0x12a817(++_0x5b7e5b);}(_0x3d62,0x70));var _0x23d6=function(_0x377b20,_0x2a658b){_0x377b20=_0x377b20-0x0;var _0x576278=_0x3d62[_0x377b20];return _0x576278;};'use strict';var _=require(_0x23d6('0x0'));var util=require(_0x23d6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x23d6('0x2'));var BPromise=require(_0x23d6('0x3'));var rp=require(_0x23d6('0x4'));var fs=require('fs');var path=require(_0x23d6('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x23d6('0x6'));module[_0x23d6('0x7')]=function(_0x21e0a4,_0x3680dd){return _0x21e0a4['define'](_0x23d6('0x8'),attributes,{'tableName':_0x23d6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf8c857..6e63d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c4a=['register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','socket.io-emitter'];(function(_0x439035,_0x35347e){var _0x4c1f6d=function(_0x3c9e5a){while(--_0x3c9e5a){_0x439035['push'](_0x439035['shift']());}};_0x4c1f6d(++_0x35347e);}(_0x7c4a,0x105));var _0xa7c4=function(_0xef7b42,_0xf9ab01){_0xef7b42=_0xef7b42-0x0;var _0x5c3893=_0x7c4a[_0xef7b42];return _0x5c3893;};'use strict';var _=require(_0xa7c4('0x0'));var util=require(_0xa7c4('0x1'));var moment=require(_0xa7c4('0x2'));var BPromise=require(_0xa7c4('0x3'));var rs=require(_0xa7c4('0x4'));var fs=require('fs');var Redis=require(_0xa7c4('0x5'));var db=require(_0xa7c4('0x6'))['db'];var utils=require(_0xa7c4('0x7'));var logger=require(_0xa7c4('0x8'))(_0xa7c4('0x9'));var config=require(_0xa7c4('0xa'));var jayson=require(_0xa7c4('0xb'));var client=jayson['client']['http']({'port':0x232a});config[_0xa7c4('0xc')]=_['defaults'](config[_0xa7c4('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xa7c4('0xd'))(new Redis(config[_0xa7c4('0xc')]));require('./dashboardItem.socket')[_0xa7c4('0xe')](socket);function respondWithRpcPromise(_0x4832bd,_0x35aa21,_0x589f6b){return new BPromise(function(_0x1e44bc,_0x34d3e8){return client[_0xa7c4('0xf')](_0x4832bd,_0x589f6b)[_0xa7c4('0x10')](function(_0xb664f3){logger[_0xa7c4('0x11')](_0xa7c4('0x12'),_0x35aa21,_0xa7c4('0x13'));logger['debug']('DashboardItem,\x20%s,\x20%s,\x20%s',_0x35aa21,_0xa7c4('0x13'),JSON[_0xa7c4('0x14')](_0xb664f3));if(_0xb664f3[_0xa7c4('0x15')]){if(_0xb664f3[_0xa7c4('0x15')][_0xa7c4('0x16')]===0x1f4){logger[_0xa7c4('0x15')](_0xa7c4('0x12'),_0x35aa21,_0xb664f3[_0xa7c4('0x15')]['message']);return _0x34d3e8(_0xb664f3[_0xa7c4('0x15')][_0xa7c4('0x17')]);}logger[_0xa7c4('0x15')](_0xa7c4('0x12'),_0x35aa21,_0xb664f3['error']['message']);return _0x1e44bc(_0xb664f3[_0xa7c4('0x15')]['message']);}else{logger[_0xa7c4('0x11')](_0xa7c4('0x12'),_0x35aa21,_0xa7c4('0x13'));_0x1e44bc(_0xb664f3['result'][_0xa7c4('0x17')]);}})[_0xa7c4('0x18')](function(_0x37864e){logger[_0xa7c4('0x15')]('DashboardItem,\x20%s,\x20%s',_0x35aa21,_0x37864e);_0x34d3e8(_0x37864e);});});}
\ No newline at end of file
+var _0xdb76=['util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','DashboardItem,\x20%s,\x20%s','message','info','result','catch','lodash'];(function(_0x51f645,_0x17197d){var _0x1affe3=function(_0x18f8d6){while(--_0x18f8d6){_0x51f645['push'](_0x51f645['shift']());}};_0x1affe3(++_0x17197d);}(_0xdb76,0xbc));var _0x6db7=function(_0x2920d3,_0x57de5c){_0x2920d3=_0x2920d3-0x0;var _0x5ae06a=_0xdb76[_0x2920d3];return _0x5ae06a;};'use strict';var _=require(_0x6db7('0x0'));var util=require(_0x6db7('0x1'));var moment=require('moment');var BPromise=require(_0x6db7('0x2'));var rs=require(_0x6db7('0x3'));var fs=require('fs');var Redis=require(_0x6db7('0x4'));var db=require(_0x6db7('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6db7('0x6'));var config=require(_0x6db7('0x7'));var jayson=require(_0x6db7('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x6db7('0x9')]=_[_0x6db7('0xa')](config[_0x6db7('0x9')],{'host':_0x6db7('0xb'),'port':0x18eb});var socket=require(_0x6db7('0xc'))(new Redis(config['redis']));require(_0x6db7('0xd'))[_0x6db7('0xe')](socket);function respondWithRpcPromise(_0x4a0dae,_0x3c02dc,_0xc7ea8a){return new BPromise(function(_0x3a34d1,_0x2b8f94){return client[_0x6db7('0xf')](_0x4a0dae,_0xc7ea8a)[_0x6db7('0x10')](function(_0x296b68){logger['info']('DashboardItem,\x20%s,\x20%s',_0x3c02dc,_0x6db7('0x11'));logger[_0x6db7('0x12')](_0x6db7('0x13'),_0x3c02dc,_0x6db7('0x11'),JSON[_0x6db7('0x14')](_0x296b68));if(_0x296b68[_0x6db7('0x15')]){if(_0x296b68['error']['code']===0x1f4){logger[_0x6db7('0x15')](_0x6db7('0x16'),_0x3c02dc,_0x296b68[_0x6db7('0x15')][_0x6db7('0x17')]);return _0x2b8f94(_0x296b68[_0x6db7('0x15')][_0x6db7('0x17')]);}logger[_0x6db7('0x15')]('DashboardItem,\x20%s,\x20%s',_0x3c02dc,_0x296b68[_0x6db7('0x15')][_0x6db7('0x17')]);return _0x3a34d1(_0x296b68[_0x6db7('0x15')]['message']);}else{logger[_0x6db7('0x18')](_0x6db7('0x16'),_0x3c02dc,_0x6db7('0x11'));_0x3a34d1(_0x296b68[_0x6db7('0x19')][_0x6db7('0x17')]);}})[_0x6db7('0x1a')](function(_0x22f0de){logger[_0x6db7('0x15')]('DashboardItem,\x20%s,\x20%s',_0x3c02dc,_0x22f0de);_0x2b8f94(_0x22f0de);});});}
\ No newline at end of file
index 5a2b3de..41d3a0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955d=['update','emit','removeListener','register','length','dashboardItem:','remove'];(function(_0x152aa1,_0x307718){var _0x1bc01a=function(_0xd3211e){while(--_0xd3211e){_0x152aa1['push'](_0x152aa1['shift']());}};_0x1bc01a(++_0x307718);}(_0x955d,0x117));var _0xd955=function(_0x56e4f8,_0x3dafb3){_0x56e4f8=_0x56e4f8-0x0;var _0x4baae0=_0x955d[_0x56e4f8];return _0x4baae0;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=['save',_0xd955('0x0'),_0xd955('0x1')];function createListener(_0x4e8895,_0x31c9f1){return function(_0x3a5b3c){_0x31c9f1[_0xd955('0x2')](_0x4e8895,_0x3a5b3c);};}function removeListener(_0x2e92a3,_0xe5faf6){return function(){DashboardItemEvents[_0xd955('0x3')](_0x2e92a3,_0xe5faf6);};}exports[_0xd955('0x4')]=function(_0x490652){for(var _0x4dff66=0x0,_0x2438d4=events[_0xd955('0x5')];_0x4dff66<_0x2438d4;_0x4dff66++){var _0x22ad6c=events[_0x4dff66];var _0x1639d4=createListener(_0xd955('0x6')+_0x22ad6c,_0x490652);DashboardItemEvents['on'](_0x22ad6c,_0x1639d4);}};
\ No newline at end of file
+var _0x6afd=['update','removeListener','register','length','remove'];(function(_0x556927,_0x34b53f){var _0x5f1235=function(_0x4f4e44){while(--_0x4f4e44){_0x556927['push'](_0x556927['shift']());}};_0x5f1235(++_0x34b53f);}(_0x6afd,0x1bc));var _0xd6af=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x6afd[_0x46aff0];return _0x9d78cf;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=['save',_0xd6af('0x0'),_0xd6af('0x1')];function createListener(_0x2abb51,_0x364704){return function(_0x5d119b){_0x364704['emit'](_0x2abb51,_0x5d119b);};}function removeListener(_0x4d4be1,_0x493f08){return function(){DashboardItemEvents[_0xd6af('0x2')](_0x4d4be1,_0x493f08);};}exports[_0xd6af('0x3')]=function(_0x561aa4){for(var _0x368cb4=0x0,_0x230752=events[_0xd6af('0x4')];_0x368cb4<_0x230752;_0x368cb4++){var _0x4c4c1c=events[_0x368cb4];var _0x4bc8b4=createListener('dashboardItem:'+_0x4c4c1c,_0x561aa4);DashboardItemEvents['on'](_0x4c4c1c,_0x4bc8b4);}};
\ No newline at end of file
index 518597f..3a79629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c57=['multer','util','path','Router','../../components/auth/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','delete'];(function(_0x5bbca4,_0x3303c5){var _0x5a0fe5=function(_0x19fdc2){while(--_0x19fdc2){_0x5bbca4['push'](_0x5bbca4['shift']());}};_0x5a0fe5(++_0x3303c5);}(_0x0c57,0x1c7));var _0x70c5=function(_0x2febc5,_0x150f24){_0x2febc5=_0x2febc5-0x0;var _0x208a9b=_0x0c57[_0x2febc5];return _0x208a9b;};'use strict';var multer=require(_0x70c5('0x0'));var util=require(_0x70c5('0x1'));var path=require(_0x70c5('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x70c5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x70c5('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x70c5('0x5'));var controller=require(_0x70c5('0x6'));router[_0x70c5('0x7')](_0x70c5('0x8'),auth[_0x70c5('0x9')](),controller[_0x70c5('0xa')]);router[_0x70c5('0xb')]('/',auth[_0x70c5('0x9')](),controller['create']);router['put']('/:id',auth[_0x70c5('0x9')](),controller['update']);router[_0x70c5('0xc')](_0x70c5('0x8'),auth[_0x70c5('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x90eb=['../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4f8d61,_0x29eff0){var _0x3bc078=function(_0x4c7203){while(--_0x4c7203){_0x4f8d61['push'](_0x4f8d61['shift']());}};_0x3bc078(++_0x29eff0);}(_0x90eb,0x1df));var _0xb90e=function(_0x1a9921,_0x26f45c){_0x1a9921=_0x1a9921-0x0;var _0x5aa39a=_0x90eb[_0x1a9921];return _0x5aa39a;};'use strict';var multer=require('multer');var util=require(_0xb90e('0x0'));var path=require(_0xb90e('0x1'));var timeout=require(_0xb90e('0x2'));var express=require(_0xb90e('0x3'));var router=express[_0xb90e('0x4')]();var fs_extra=require(_0xb90e('0x5'));var auth=require(_0xb90e('0x6'));var interaction=require(_0xb90e('0x7'));var config=require(_0xb90e('0x8'));var controller=require(_0xb90e('0x9'));router[_0xb90e('0xa')](_0xb90e('0xb'),auth[_0xb90e('0xc')](),controller[_0xb90e('0xd')]);router[_0xb90e('0xe')]('/',auth[_0xb90e('0xc')](),controller['create']);router[_0xb90e('0xf')](_0xb90e('0xb'),auth[_0xb90e('0xc')](),controller['update']);router[_0xb90e('0x10')](_0xb90e('0xb'),auth[_0xb90e('0xc')](),controller['destroy']);module[_0xb90e('0x11')]=router;
\ No newline at end of file
index 0b38a18..a6ba34c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ee4=['sequelize','exports','STRING','ENUM','second','third','first'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0ee4,0x173));var _0x40ee=function(_0x143de7,_0x115259){_0x143de7=_0x143de7-0x0;var _0x321bf9=_0x0ee4[_0x143de7];return _0x321bf9;};'use strict';var Sequelize=require(_0x40ee('0x0'));module[_0x40ee('0x1')]={'name':{'type':Sequelize[_0x40ee('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x40ee('0x3')]('first',_0x40ee('0x4'),_0x40ee('0x5')),'allowNull':![],'defaultValue':_0x40ee('0x6')},'description':{'type':Sequelize[_0x40ee('0x2')]}};
\ No newline at end of file
+var _0xf7a7=['first','second','third','sequelize','exports','STRING','ENUM'];(function(_0x406913,_0x57bdfe){var _0x2df997=function(_0x2a4c4c){while(--_0x2a4c4c){_0x406913['push'](_0x406913['shift']());}};_0x2df997(++_0x57bdfe);}(_0xf7a7,0xd5));var _0x7f7a=function(_0x9a44b1,_0x3c4d86){_0x9a44b1=_0x9a44b1-0x0;var _0x1353f7=_0xf7a7[_0x9a44b1];return _0x1353f7;};'use strict';var Sequelize=require(_0x7f7a('0x0'));module[_0x7f7a('0x1')]={'name':{'type':Sequelize[_0x7f7a('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x7f7a('0x3')](_0x7f7a('0x4'),_0x7f7a('0x5'),_0x7f7a('0x6')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0x7f7a('0x2')]}};
\ No newline at end of file
index 55b8a8d..e8958fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0736=['pick','filter','merge','where','VIRTUAL','options','Disposition','includeAll','include','rows','show','catch','create','body','user','get','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','params','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','then','destroy','Dispositions','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0xbd731f,_0xd3423e){var _0x2f0dbd=function(_0x5efe24){while(--_0x5efe24){_0xbd731f['push'](_0xbd731f['shift']());}};_0x2f0dbd(++_0xd3423e);}(_0x0736,0x1c0));var _0x6073=function(_0x1d6a72,_0x29f1d3){_0x1d6a72=_0x1d6a72-0x0;var _0x3adcd8=_0x0736[_0x1d6a72];return _0x3adcd8;};'use strict';var emlformat=require(_0x6073('0x0'));var rimraf=require(_0x6073('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6073('0x2'));var rp=require(_0x6073('0x3'));var moment=require(_0x6073('0x4'));var BPromise=require(_0x6073('0x5'));var Mustache=require(_0x6073('0x6'));var util=require(_0x6073('0x7'));var path=require(_0x6073('0x8'));var sox=require(_0x6073('0x9'));var csv=require(_0x6073('0xa'));var ejs=require(_0x6073('0xb'));var fs=require('fs');var fs_extra=require(_0x6073('0xc'));var _=require(_0x6073('0xd'));var squel=require(_0x6073('0xe'));var crypto=require(_0x6073('0xf'));var jsforce=require(_0x6073('0x10'));var deskjs=require(_0x6073('0x11'));var toCsv=require(_0x6073('0xa'));var querystring=require('querystring');var Papa=require(_0x6073('0x12'));var Redis=require(_0x6073('0x13'));var authService=require(_0x6073('0x14'));var qs=require(_0x6073('0x15'));var as=require(_0x6073('0x16'));var hardwareService=require(_0x6073('0x17'));var logger=require(_0x6073('0x18'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6073('0x19'))['db'];function respondWithStatusCode(_0xbb20d4,_0x4ceaa8){_0x4ceaa8=_0x4ceaa8||0xcc;return function(_0x305dd0){if(_0x305dd0){return _0xbb20d4[_0x6073('0x1a')](_0x4ceaa8);}return _0xbb20d4[_0x6073('0x1b')](_0x4ceaa8)[_0x6073('0x1c')]();};}function respondWithResult(_0x109dc5,_0x32fb98){_0x32fb98=_0x32fb98||0xc8;return function(_0x2f1baa){if(_0x2f1baa){return _0x109dc5[_0x6073('0x1b')](_0x32fb98)[_0x6073('0x1d')](_0x2f1baa);}};}function respondWithFilteredResult(_0xcb3c36,_0x5a6ae0){return function(_0x43a2fe){if(_0x43a2fe){var _0x45637e=typeof _0x5a6ae0['offset']===_0x6073('0x1e')&&typeof _0x5a6ae0[_0x6073('0x1f')]===_0x6073('0x1e');var _0x50d889=_0x43a2fe[_0x6073('0x20')];var _0x43b234=_0x45637e?0x0:_0x5a6ae0[_0x6073('0x21')];var _0x6ebd7a=_0x45637e?_0x43a2fe['count']:_0x5a6ae0['offset']+_0x5a6ae0[_0x6073('0x1f')];var _0x4a6299;if(_0x6ebd7a>=_0x50d889){_0x6ebd7a=_0x50d889;_0x4a6299=0xc8;}else{_0x4a6299=0xce;}_0xcb3c36['status'](_0x4a6299);return _0xcb3c36[_0x6073('0x22')](_0x6073('0x23'),_0x43b234+'-'+_0x6ebd7a+'/'+_0x50d889)[_0x6073('0x1d')](_0x43a2fe);}return null;};}function patchUpdates(_0x16ee59){return function(_0x1a95b1){try{jsonpatch['apply'](_0x1a95b1,_0x16ee59,!![]);}catch(_0x1794cf){return BPromise['reject'](_0x1794cf);}return _0x1a95b1['save']();};}function saveUpdates(_0x12a6d9,_0x2defaf){return function(_0x2228ca){if(_0x2228ca){return _0x2228ca['update'](_0x12a6d9)[_0x6073('0x24')](function(_0x3db8c8){return _0x3db8c8;});}return null;};}function removeEntity(_0x10589d,_0x3d454f){return function(_0x21dd44){if(_0x21dd44){return _0x21dd44[_0x6073('0x25')]()['then'](function(){var _0x321f4d=_0x21dd44['get']({'plain':!![]});var _0xd58a15=_0x6073('0x26');return db[_0x6073('0x27')][_0x6073('0x25')]({'where':{'type':_0xd58a15,'resourceId':_0x321f4d['id']}})[_0x6073('0x24')](function(){return _0x21dd44;});})[_0x6073('0x24')](function(){_0x10589d[_0x6073('0x1b')](0xcc)[_0x6073('0x1c')]();});}};}function handleEntityNotFound(_0x205492,_0x4def74){return function(_0x1d3d35){if(!_0x1d3d35){_0x205492['sendStatus'](0x194);}return _0x1d3d35;};}function handleError(_0x5a8564,_0x2bb3ec){_0x2bb3ec=_0x2bb3ec||0x1f4;return function(_0x3dd707){logger[_0x6073('0x28')](_0x3dd707[_0x6073('0x29')]);if(_0x3dd707[_0x6073('0x2a')]){delete _0x3dd707[_0x6073('0x2a')];}_0x5a8564[_0x6073('0x1b')](_0x2bb3ec)[_0x6073('0x2b')](_0x3dd707);};}exports[_0x6073('0x2c')]=function(_0x5ad864,_0x5c01c1){var _0x1fade1={},_0x20cbfe={},_0x34fe56={'count':0x0,'rows':[]};var _0x348bad=_[_0x6073('0x2d')](db['Disposition'][_0x6073('0x2e')],function(_0x200fad){return{'name':_0x200fad[_0x6073('0x2f')],'type':_0x200fad[_0x6073('0x30')][_0x6073('0x31')]};});_0x20cbfe['model']=_[_0x6073('0x2d')](_0x348bad,_0x6073('0x2a'));_0x20cbfe[_0x6073('0x32')]=_[_0x6073('0x33')](_0x5ad864[_0x6073('0x32')]);_0x20cbfe[_0x6073('0x34')]=_['intersection'](_0x20cbfe['model'],_0x20cbfe['query']);_0x1fade1[_0x6073('0x35')]=_[_0x6073('0x36')](_0x20cbfe[_0x6073('0x37')],qs['fields'](_0x5ad864['query'][_0x6073('0x38')]));_0x1fade1['attributes']=_0x1fade1['attributes'][_0x6073('0x39')]?_0x1fade1[_0x6073('0x35')]:_0x20cbfe[_0x6073('0x37')];if(!_0x5ad864['query'][_0x6073('0x3a')](_0x6073('0x3b'))){_0x1fade1[_0x6073('0x1f')]=qs[_0x6073('0x1f')](_0x5ad864[_0x6073('0x32')]['limit']);_0x1fade1[_0x6073('0x21')]=qs['offset'](_0x5ad864['query'][_0x6073('0x21')]);}_0x1fade1[_0x6073('0x3c')]=qs[_0x6073('0x3d')](_0x5ad864[_0x6073('0x32')][_0x6073('0x3d')]);_0x1fade1['where']=qs['filters'](_[_0x6073('0x3e')](_0x5ad864[_0x6073('0x32')],_0x20cbfe[_0x6073('0x34')]),_0x348bad);if(_0x5ad864[_0x6073('0x32')][_0x6073('0x3f')]){_0x1fade1['where']=_[_0x6073('0x40')](_0x1fade1[_0x6073('0x41')],{'$or':_[_0x6073('0x2d')](_0x348bad,function(_0x3b3f25){if(_0x3b3f25[_0x6073('0x30')]!==_0x6073('0x42')){var _0x55026d={};_0x55026d[_0x3b3f25[_0x6073('0x2a')]]={'$like':'%'+_0x5ad864[_0x6073('0x32')][_0x6073('0x3f')]+'%'};return _0x55026d;}})});}_0x1fade1=_[_0x6073('0x40')]({},_0x1fade1,_0x5ad864[_0x6073('0x43')]);var _0x3b38ee={'where':_0x1fade1[_0x6073('0x41')]};return db[_0x6073('0x44')][_0x6073('0x20')](_0x3b38ee)[_0x6073('0x24')](function(_0x277ce0){_0x34fe56[_0x6073('0x20')]=_0x277ce0;if(_0x5ad864[_0x6073('0x32')][_0x6073('0x45')]){_0x1fade1[_0x6073('0x46')]=[{'all':!![]}];}return db[_0x6073('0x44')]['findAll'](_0x1fade1);})['then'](function(_0x22952c){_0x34fe56[_0x6073('0x47')]=_0x22952c;return _0x34fe56;})[_0x6073('0x24')](respondWithFilteredResult(_0x5c01c1,_0x1fade1))['catch'](handleError(_0x5c01c1,null));};exports[_0x6073('0x48')]=function(_0x4870e4,_0x1b14d3){var _0x14e3a7={'raw':!![],'where':{'id':_0x4870e4['params']['id']}},_0x3d1a8d={};_0x3d1a8d[_0x6073('0x37')]=_[_0x6073('0x33')](db[_0x6073('0x44')][_0x6073('0x2e')]);_0x3d1a8d[_0x6073('0x32')]=_[_0x6073('0x33')](_0x4870e4['query']);_0x3d1a8d[_0x6073('0x34')]=_[_0x6073('0x36')](_0x3d1a8d[_0x6073('0x37')],_0x3d1a8d[_0x6073('0x32')]);_0x14e3a7[_0x6073('0x35')]=_[_0x6073('0x36')](_0x3d1a8d['model'],qs[_0x6073('0x38')](_0x4870e4[_0x6073('0x32')]['fields']));_0x14e3a7[_0x6073('0x35')]=_0x14e3a7[_0x6073('0x35')][_0x6073('0x39')]?_0x14e3a7[_0x6073('0x35')]:_0x3d1a8d['model'];if(_0x4870e4[_0x6073('0x32')][_0x6073('0x45')]){_0x14e3a7[_0x6073('0x46')]=[{'all':!![]}];}_0x14e3a7=_[_0x6073('0x40')]({},_0x14e3a7,_0x4870e4[_0x6073('0x43')]);return db[_0x6073('0x44')]['find'](_0x14e3a7)[_0x6073('0x24')](handleEntityNotFound(_0x1b14d3,null))['then'](respondWithResult(_0x1b14d3,null))[_0x6073('0x49')](handleError(_0x1b14d3,null));};exports[_0x6073('0x4a')]=function(_0x3c5af9,_0x5a5270){return db[_0x6073('0x44')][_0x6073('0x4a')](_0x3c5af9[_0x6073('0x4b')],{})[_0x6073('0x24')](function(_0x320c8e){var _0x16f9c0=_0x3c5af9[_0x6073('0x4c')][_0x6073('0x4d')]({'plain':!![]});if(!_0x16f9c0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x16f9c0[_0x6073('0x4e')]===_0x6073('0x4c')){var _0x5c67a1=_0x320c8e[_0x6073('0x4d')]({'plain':!![]});var _0xc6cf2f='Dispositions';return db[_0x6073('0x4f')]['find']({'where':{'name':_0xc6cf2f,'userProfileId':_0x16f9c0['userProfileId']},'raw':!![]})[_0x6073('0x24')](function(_0x22a5a6){if(_0x22a5a6&&_0x22a5a6[_0x6073('0x50')]===0x0){return db[_0x6073('0x27')][_0x6073('0x4a')]({'name':_0x5c67a1[_0x6073('0x2a')],'resourceId':_0x5c67a1['id'],'type':_0x22a5a6[_0x6073('0x2a')],'sectionId':_0x22a5a6['id']},{})[_0x6073('0x24')](function(){return _0x320c8e;});}else{return _0x320c8e;}})[_0x6073('0x49')](function(_0x575d81){logger[_0x6073('0x28')](_0x6073('0x51'),_0x575d81);throw _0x575d81;});}return _0x320c8e;})[_0x6073('0x24')](respondWithResult(_0x5a5270,0xc9))['catch'](handleError(_0x5a5270,null));};exports[_0x6073('0x52')]=function(_0x53853d,_0x9c3577){if(_0x53853d[_0x6073('0x4b')]['id']){delete _0x53853d['body']['id'];}return db[_0x6073('0x44')][_0x6073('0x53')]({'where':{'id':_0x53853d[_0x6073('0x54')]['id']}})['then'](handleEntityNotFound(_0x9c3577,null))[_0x6073('0x24')](saveUpdates(_0x53853d['body'],null))[_0x6073('0x24')](respondWithResult(_0x9c3577,null))[_0x6073('0x49')](handleError(_0x9c3577,null));};exports[_0x6073('0x25')]=function(_0xf39498,_0x461045){return db[_0x6073('0x44')][_0x6073('0x53')]({'where':{'id':_0xf39498['params']['id']}})[_0x6073('0x24')](handleEntityNotFound(_0x461045,null))[_0x6073('0x24')](removeEntity(_0x461045,null))[_0x6073('0x49')](handleError(_0x461045,null));};
\ No newline at end of file
+var _0x8a62=['fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Dispositions','UserProfileResource','error','stack','name','index','map','Disposition','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','count','includeAll','findAll','catch','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs'];(function(_0x4a96d2,_0x689504){var _0x38af04=function(_0x3a67cd){while(--_0x3a67cd){_0x4a96d2['push'](_0x4a96d2['shift']());}};_0x38af04(++_0x689504);}(_0x8a62,0x18f));var _0x28a6=function(_0x344030,_0x589731){_0x344030=_0x344030-0x0;var _0x4f7860=_0x8a62[_0x344030];return _0x4f7860;};'use strict';var emlformat=require(_0x28a6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x28a6('0x1'));var jsonpatch=require(_0x28a6('0x2'));var rp=require(_0x28a6('0x3'));var moment=require(_0x28a6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x28a6('0x5'));var util=require(_0x28a6('0x6'));var path=require(_0x28a6('0x7'));var sox=require(_0x28a6('0x8'));var csv=require(_0x28a6('0x9'));var ejs=require(_0x28a6('0xa'));var fs=require('fs');var fs_extra=require(_0x28a6('0xb'));var _=require(_0x28a6('0xc'));var squel=require('squel');var crypto=require(_0x28a6('0xd'));var jsforce=require(_0x28a6('0xe'));var deskjs=require(_0x28a6('0xf'));var toCsv=require('to-csv');var querystring=require(_0x28a6('0x10'));var Papa=require('papaparse');var Redis=require(_0x28a6('0x11'));var authService=require(_0x28a6('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x28a6('0x13'));var logger=require('../../config/logger')(_0x28a6('0x14'));var utils=require('../../config/utils');var config=require(_0x28a6('0x15'));var licenseUtil=require(_0x28a6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc6e917,_0x37a50a){_0x37a50a=_0x37a50a||0xcc;return function(_0x356cbb){if(_0x356cbb){return _0xc6e917[_0x28a6('0x17')](_0x37a50a);}return _0xc6e917['status'](_0x37a50a)[_0x28a6('0x18')]();};}function respondWithResult(_0x2d40fe,_0x5f410e){_0x5f410e=_0x5f410e||0xc8;return function(_0x4e1030){if(_0x4e1030){return _0x2d40fe[_0x28a6('0x19')](_0x5f410e)[_0x28a6('0x1a')](_0x4e1030);}};}function respondWithFilteredResult(_0x9fef62,_0x21cd27){return function(_0x10965d){if(_0x10965d){var _0x568fce=typeof _0x21cd27[_0x28a6('0x1b')]===_0x28a6('0x1c')&&typeof _0x21cd27[_0x28a6('0x1d')]===_0x28a6('0x1c');var _0x4d3b15=_0x10965d['count'];var _0x5433ca=_0x568fce?0x0:_0x21cd27[_0x28a6('0x1b')];var _0xa0919f=_0x568fce?_0x10965d['count']:_0x21cd27[_0x28a6('0x1b')]+_0x21cd27[_0x28a6('0x1d')];var _0x2e1d0c;if(_0xa0919f>=_0x4d3b15){_0xa0919f=_0x4d3b15;_0x2e1d0c=0xc8;}else{_0x2e1d0c=0xce;}_0x9fef62['status'](_0x2e1d0c);return _0x9fef62[_0x28a6('0x1e')](_0x28a6('0x1f'),_0x5433ca+'-'+_0xa0919f+'/'+_0x4d3b15)[_0x28a6('0x1a')](_0x10965d);}return null;};}function patchUpdates(_0x53d2b5){return function(_0x188d8b){try{jsonpatch[_0x28a6('0x20')](_0x188d8b,_0x53d2b5,!![]);}catch(_0x1e7270){return BPromise[_0x28a6('0x21')](_0x1e7270);}return _0x188d8b[_0x28a6('0x22')]();};}function saveUpdates(_0x517d1b,_0x49651e){return function(_0xf4bf9e){if(_0xf4bf9e){return _0xf4bf9e[_0x28a6('0x23')](_0x517d1b)[_0x28a6('0x24')](function(_0x57f2a9){return _0x57f2a9;});}return null;};}function removeEntity(_0x13fbb1,_0x47d051){return function(_0x3d1050){if(_0x3d1050){return _0x3d1050[_0x28a6('0x25')]()['then'](function(){var _0x25ab96=_0x3d1050[_0x28a6('0x26')]({'plain':!![]});var _0x48f976=_0x28a6('0x27');return db[_0x28a6('0x28')][_0x28a6('0x25')]({'where':{'type':_0x48f976,'resourceId':_0x25ab96['id']}})['then'](function(){return _0x3d1050;});})[_0x28a6('0x24')](function(){_0x13fbb1[_0x28a6('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d7b2d,_0x52ba25){return function(_0x48daba){if(!_0x48daba){_0x5d7b2d[_0x28a6('0x17')](0x194);}return _0x48daba;};}function handleError(_0x2f141f,_0x1d25ed){_0x1d25ed=_0x1d25ed||0x1f4;return function(_0x4501e9){logger[_0x28a6('0x29')](_0x4501e9[_0x28a6('0x2a')]);if(_0x4501e9[_0x28a6('0x2b')]){delete _0x4501e9[_0x28a6('0x2b')];}_0x2f141f['status'](_0x1d25ed)['send'](_0x4501e9);};}exports[_0x28a6('0x2c')]=function(_0x4b2938,_0x58629d){var _0x4716a1={},_0x11c5af={},_0x301b69={'count':0x0,'rows':[]};var _0x46b70f=_[_0x28a6('0x2d')](db[_0x28a6('0x2e')][_0x28a6('0x2f')],function(_0x11f96d){return{'name':_0x11f96d['fieldName'],'type':_0x11f96d[_0x28a6('0x30')][_0x28a6('0x31')]};});_0x11c5af[_0x28a6('0x32')]=_[_0x28a6('0x2d')](_0x46b70f,_0x28a6('0x2b'));_0x11c5af[_0x28a6('0x33')]=_[_0x28a6('0x34')](_0x4b2938[_0x28a6('0x33')]);_0x11c5af[_0x28a6('0x35')]=_[_0x28a6('0x36')](_0x11c5af[_0x28a6('0x32')],_0x11c5af[_0x28a6('0x33')]);_0x4716a1[_0x28a6('0x37')]=_[_0x28a6('0x36')](_0x11c5af[_0x28a6('0x32')],qs[_0x28a6('0x38')](_0x4b2938[_0x28a6('0x33')][_0x28a6('0x38')]));_0x4716a1[_0x28a6('0x37')]=_0x4716a1[_0x28a6('0x37')][_0x28a6('0x39')]?_0x4716a1[_0x28a6('0x37')]:_0x11c5af['model'];if(!_0x4b2938['query'][_0x28a6('0x3a')](_0x28a6('0x3b'))){_0x4716a1[_0x28a6('0x1d')]=qs['limit'](_0x4b2938[_0x28a6('0x33')][_0x28a6('0x1d')]);_0x4716a1[_0x28a6('0x1b')]=qs[_0x28a6('0x1b')](_0x4b2938[_0x28a6('0x33')][_0x28a6('0x1b')]);}_0x4716a1[_0x28a6('0x3c')]=qs[_0x28a6('0x3d')](_0x4b2938[_0x28a6('0x33')]['sort']);_0x4716a1[_0x28a6('0x3e')]=qs[_0x28a6('0x35')](_[_0x28a6('0x3f')](_0x4b2938[_0x28a6('0x33')],_0x11c5af[_0x28a6('0x35')]),_0x46b70f);if(_0x4b2938['query'][_0x28a6('0x40')]){_0x4716a1[_0x28a6('0x3e')]=_[_0x28a6('0x41')](_0x4716a1['where'],{'$or':_[_0x28a6('0x2d')](_0x46b70f,function(_0x1c16e0){if(_0x1c16e0[_0x28a6('0x30')]!=='VIRTUAL'){var _0x3b5876={};_0x3b5876[_0x1c16e0['name']]={'$like':'%'+_0x4b2938[_0x28a6('0x33')][_0x28a6('0x40')]+'%'};return _0x3b5876;}})});}_0x4716a1=_[_0x28a6('0x41')]({},_0x4716a1,_0x4b2938[_0x28a6('0x42')]);var _0x326785={'where':_0x4716a1[_0x28a6('0x3e')]};return db[_0x28a6('0x2e')]['count'](_0x326785)[_0x28a6('0x24')](function(_0x2f940a){_0x301b69[_0x28a6('0x43')]=_0x2f940a;if(_0x4b2938[_0x28a6('0x33')][_0x28a6('0x44')]){_0x4716a1['include']=[{'all':!![]}];}return db[_0x28a6('0x2e')][_0x28a6('0x45')](_0x4716a1);})[_0x28a6('0x24')](function(_0x5e7e77){_0x301b69['rows']=_0x5e7e77;return _0x301b69;})[_0x28a6('0x24')](respondWithFilteredResult(_0x58629d,_0x4716a1))[_0x28a6('0x46')](handleError(_0x58629d,null));};exports[_0x28a6('0x47')]=function(_0x17618c,_0x2828c2){var _0x39bd4d={'raw':!![],'where':{'id':_0x17618c[_0x28a6('0x48')]['id']}},_0x422f15={};_0x422f15['model']=_['keys'](db[_0x28a6('0x2e')][_0x28a6('0x2f')]);_0x422f15[_0x28a6('0x33')]=_[_0x28a6('0x34')](_0x17618c['query']);_0x422f15[_0x28a6('0x35')]=_[_0x28a6('0x36')](_0x422f15[_0x28a6('0x32')],_0x422f15[_0x28a6('0x33')]);_0x39bd4d[_0x28a6('0x37')]=_[_0x28a6('0x36')](_0x422f15['model'],qs[_0x28a6('0x38')](_0x17618c[_0x28a6('0x33')]['fields']));_0x39bd4d[_0x28a6('0x37')]=_0x39bd4d[_0x28a6('0x37')]['length']?_0x39bd4d['attributes']:_0x422f15[_0x28a6('0x32')];if(_0x17618c[_0x28a6('0x33')][_0x28a6('0x44')]){_0x39bd4d[_0x28a6('0x49')]=[{'all':!![]}];}_0x39bd4d=_[_0x28a6('0x41')]({},_0x39bd4d,_0x17618c['options']);return db[_0x28a6('0x2e')][_0x28a6('0x4a')](_0x39bd4d)[_0x28a6('0x24')](handleEntityNotFound(_0x2828c2,null))['then'](respondWithResult(_0x2828c2,null))['catch'](handleError(_0x2828c2,null));};exports[_0x28a6('0x4b')]=function(_0x4107e9,_0x3b781d){return db[_0x28a6('0x2e')][_0x28a6('0x4b')](_0x4107e9[_0x28a6('0x4c')],{})[_0x28a6('0x24')](function(_0x37f8c0){var _0x4b6f04=_0x4107e9[_0x28a6('0x4d')][_0x28a6('0x26')]({'plain':!![]});if(!_0x4b6f04)throw new Error(_0x28a6('0x4e'));if(_0x4b6f04[_0x28a6('0x4f')]==='user'){var _0x8f65ce=_0x37f8c0[_0x28a6('0x26')]({'plain':!![]});var _0x57635d=_0x28a6('0x27');return db['UserProfileSection'][_0x28a6('0x4a')]({'where':{'name':_0x57635d,'userProfileId':_0x4b6f04['userProfileId']},'raw':!![]})[_0x28a6('0x24')](function(_0x428939){if(_0x428939&&_0x428939[_0x28a6('0x50')]===0x0){return db[_0x28a6('0x28')][_0x28a6('0x4b')]({'name':_0x8f65ce[_0x28a6('0x2b')],'resourceId':_0x8f65ce['id'],'type':_0x428939[_0x28a6('0x2b')],'sectionId':_0x428939['id']},{})[_0x28a6('0x24')](function(){return _0x37f8c0;});}else{return _0x37f8c0;}})[_0x28a6('0x46')](function(_0x3a6d6c){logger[_0x28a6('0x29')](_0x28a6('0x51'),_0x3a6d6c);throw _0x3a6d6c;});}return _0x37f8c0;})['then'](respondWithResult(_0x3b781d,0xc9))['catch'](handleError(_0x3b781d,null));};exports[_0x28a6('0x23')]=function(_0x5a1b94,_0x4b03e2){if(_0x5a1b94[_0x28a6('0x4c')]['id']){delete _0x5a1b94[_0x28a6('0x4c')]['id'];}return db[_0x28a6('0x2e')]['find']({'where':{'id':_0x5a1b94[_0x28a6('0x48')]['id']}})['then'](handleEntityNotFound(_0x4b03e2,null))[_0x28a6('0x24')](saveUpdates(_0x5a1b94['body'],null))[_0x28a6('0x24')](respondWithResult(_0x4b03e2,null))['catch'](handleError(_0x4b03e2,null));};exports[_0x28a6('0x25')]=function(_0x2ff1fd,_0x5d3102){return db[_0x28a6('0x2e')][_0x28a6('0x4a')]({'where':{'id':_0x2ff1fd['params']['id']}})[_0x28a6('0x24')](handleEntityNotFound(_0x5d3102,null))[_0x28a6('0x24')](removeEntity(_0x5d3102,null))[_0x28a6('0x46')](handleError(_0x5d3102,null));};
\ No newline at end of file
index fa18c03..f3e4156 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6098=['ListId','ChatWebsiteId','name_mail','MailAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','Disposition','name_voice','name'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0x6098,0x1d6));var _0x8609=function(_0x152ca2,_0x5abd1b){_0x152ca2=_0x152ca2-0x0;var _0x58fbd2=_0x6098[_0x152ca2];return _0x58fbd2;};'use strict';var _=require('lodash');var util=require(_0x8609('0x0'));var logger=require(_0x8609('0x1'))(_0x8609('0x2'));var moment=require(_0x8609('0x3'));var BPromise=require(_0x8609('0x4'));var rp=require(_0x8609('0x5'));var fs=require('fs');var path=require(_0x8609('0x6'));var rimraf=require(_0x8609('0x7'));var config=require(_0x8609('0x8'));var attributes=require('./disposition.attributes');module[_0x8609('0x9')]=function(_0x444e3d,_0x487680){return _0x444e3d['define'](_0x8609('0xa'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0x8609('0xb'),'fields':[_0x8609('0xc'),_0x8609('0xd')]},{'unique':!![],'name':'name_chat','fields':['name',_0x8609('0xe')]},{'unique':!![],'name':_0x8609('0xf'),'fields':[_0x8609('0xc'),_0x8609('0x10')]},{'unique':!![],'name':'name_sms','fields':[_0x8609('0xc'),'SmsAccountId']},{'unique':!![],'name':_0x8609('0x11'),'fields':['name',_0x8609('0x12')]},{'unique':!![],'name':_0x8609('0x13'),'fields':['name',_0x8609('0x14')]},{'unique':!![],'name':_0x8609('0x15'),'fields':['name',_0x8609('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8228=['Disposition','name_voice','name','ListId','name_chat','MailAccountId','FaxAccountId','name_openchannel','OpenchannelAccountId','WhatsappAccountId','bluebird','rimraf','../../config/environment','./disposition.attributes','exports'];(function(_0x408e38,_0x23cda8){var _0x426b0e=function(_0x8f2898){while(--_0x8f2898){_0x408e38['push'](_0x408e38['shift']());}};_0x426b0e(++_0x23cda8);}(_0x8228,0x145));var _0x8822=function(_0x40f17f,_0x1a1d66){_0x40f17f=_0x40f17f-0x0;var _0x2b41f4=_0x8228[_0x40f17f];return _0x2b41f4;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x8822('0x0'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8822('0x1'));var config=require(_0x8822('0x2'));var attributes=require(_0x8822('0x3'));module[_0x8822('0x4')]=function(_0x283bb1,_0x2b664c){return _0x283bb1['define'](_0x8822('0x5'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0x8822('0x6'),'fields':[_0x8822('0x7'),_0x8822('0x8')]},{'unique':!![],'name':_0x8822('0x9'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':'name_mail','fields':[_0x8822('0x7'),_0x8822('0xa')]},{'unique':!![],'name':'name_sms','fields':['name','SmsAccountId']},{'unique':!![],'name':'name_fax','fields':[_0x8822('0x7'),_0x8822('0xb')]},{'unique':!![],'name':_0x8822('0xc'),'fields':[_0x8822('0x7'),_0x8822('0xd')]},{'unique':!![],'name':'name_whatsapp','fields':['name',_0x8822('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b8836a8..96da127 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(_0x5ec320,_0x30068d){var _0x14c3bb=function(_0x2aaffe){while(--_0x2aaffe){_0x5ec320['push'](_0x5ec320['shift']());}};_0x14c3bb(++_0x30068d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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(_0x397e01,_0x5a5635){var _0x49e118=function(_0x154677){while(--_0x154677){_0x397e01['push'](_0x397e01['shift']());}};_0x49e118(++_0x5a5635);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 20d6f34..ea8780f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1130=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','put','update','exports','multer','util','connect-timeout'];(function(_0x5f5c40,_0x5347e8){var _0x42b0c3=function(_0x3e98a5){while(--_0x3e98a5){_0x5f5c40['push'](_0x5f5c40['shift']());}};_0x42b0c3(++_0x5347e8);}(_0x1130,0xad));var _0x0113=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x1130[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x0113('0x0'));var util=require(_0x0113('0x1'));var path=require('path');var timeout=require(_0x0113('0x2'));var express=require(_0x0113('0x3'));var router=express[_0x0113('0x4')]();var fs_extra=require(_0x0113('0x5'));var auth=require(_0x0113('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0113('0x7'));var controller=require('./disposition.controller');router[_0x0113('0x8')]('/',auth[_0x0113('0x9')](),controller[_0x0113('0xa')]);router[_0x0113('0x8')](_0x0113('0xb'),auth[_0x0113('0x9')](),controller[_0x0113('0xc')]);router['post']('/',auth[_0x0113('0x9')](),controller['create']);router[_0x0113('0xd')](_0x0113('0xb'),auth[_0x0113('0x9')](),controller[_0x0113('0xe')]);router['delete'](_0x0113('0xb'),auth[_0x0113('0x9')](),controller['destroy']);module[_0x0113('0xf')]=router;
\ No newline at end of file
+var _0x80bc=['update','multer','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','isAuthenticated','index','get','show','post','put','/:id'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x80bc,0x14b));var _0xc80b=function(_0x7dbd65,_0x18da49){_0x7dbd65=_0x7dbd65-0x0;var _0x33d551=_0x80bc[_0x7dbd65];return _0x33d551;};'use strict';var multer=require(_0xc80b('0x0'));var util=require(_0xc80b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc80b('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xc80b('0x3'));var interaction=require(_0xc80b('0x4'));var config=require(_0xc80b('0x5'));var controller=require(_0xc80b('0x6'));router['get']('/',auth[_0xc80b('0x7')](),controller[_0xc80b('0x8')]);router[_0xc80b('0x9')]('/:id',auth[_0xc80b('0x7')](),controller[_0xc80b('0xa')]);router[_0xc80b('0xb')]('/',auth[_0xc80b('0x7')](),controller['create']);router[_0xc80b('0xc')](_0xc80b('0xd'),auth[_0xc80b('0x7')](),controller[_0xc80b('0xe')]);router['delete'](_0xc80b('0xd'),auth[_0xc80b('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 8248608..05fba71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9fb=['7200','12000','14400','9600','IAX','DADHI','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','4800'];(function(_0x2fa457,_0x7021df){var _0x4f250a=function(_0xef901e){while(--_0xef901e){_0x2fa457['push'](_0x2fa457['shift']());}};_0x4f250a(++_0x7021df);}(_0xd9fb,0x189));var _0xbd9f=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0xd9fb[_0x9cd4c3];return _0x4c9025;};'use strict';var Sequelize=require(_0xbd9f('0x0'));module[_0xbd9f('0x1')]={'name':{'type':Sequelize[_0xbd9f('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xbd9f('0x2')]},'ecm':{'type':Sequelize[_0xbd9f('0x3')](_0xbd9f('0x4'),'no'),'defaultValue':_0xbd9f('0x4')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':_0xbd9f('0x5')},'localstationid':{'type':Sequelize[_0xbd9f('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xbd9f('0x3')]('2400',_0xbd9f('0x6'),_0xbd9f('0x7'),'9600',_0xbd9f('0x8'),_0xbd9f('0x9')),'defaultValue':_0xbd9f('0x6')},'maxrate':{'type':Sequelize[_0xbd9f('0x3')]('2400',_0xbd9f('0x6'),_0xbd9f('0x7'),_0xbd9f('0xa'),_0xbd9f('0x8'),_0xbd9f('0x9')),'defaultValue':_0xbd9f('0x9')},'modem':{'type':Sequelize[_0xbd9f('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xbd9f('0x3')]('SIP',_0xbd9f('0xb'),_0xbd9f('0xc'),_0xbd9f('0xd')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xbd9f('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xbd9f('0xe');}},'notificationSound':{'type':Sequelize[_0xbd9f('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xbd9f('0xf')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xbd9f('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xbd9f('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xbd9f('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xbd9f('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xbd9f('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbd9f('0x10')],'allowNull':!![],'defaultValue':null,'comment':_0xbd9f('0x11')},'mandatoryDisposition':{'type':Sequelize[_0xbd9f('0xf')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x49a818){if(!_0x49a818)this[_0xbd9f('0x12')]('mandatoryDispositionPauseId',null);this[_0xbd9f('0x12')](_0xbd9f('0x13'),_0x49a818);}}};
\ No newline at end of file
+var _0xb46f=['7200','9600','14400','v17,v27,v29','INTEGER','SIP','IAX','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','2400','4800'];(function(_0x2c353f,_0x49693e){var _0x23df36=function(_0x4b8356){while(--_0x4b8356){_0x2c353f['push'](_0x2c353f['shift']());}};_0x23df36(++_0x49693e);}(_0xb46f,0xb6));var _0xfb46=function(_0x3aa181,_0x3d1c33){_0x3aa181=_0x3aa181-0x0;var _0x58b92a=_0xb46f[_0x3aa181];return _0x58b92a;};'use strict';var Sequelize=require(_0xfb46('0x0'));module[_0xfb46('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xfb46('0x2')]},'ecm':{'type':Sequelize[_0xfb46('0x3')](_0xfb46('0x4'),'no'),'defaultValue':_0xfb46('0x4')},'headerinfo':{'type':Sequelize[_0xfb46('0x2')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0xfb46('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xfb46('0x3')](_0xfb46('0x5'),_0xfb46('0x6'),_0xfb46('0x7'),_0xfb46('0x8'),'12000',_0xfb46('0x9')),'defaultValue':_0xfb46('0x6')},'maxrate':{'type':Sequelize['ENUM']('2400','4800','7200',_0xfb46('0x8'),'12000',_0xfb46('0x9')),'defaultValue':_0xfb46('0x9')},'modem':{'type':Sequelize[_0xfb46('0x2')],'defaultValue':_0xfb46('0xa')},'gateway':{'type':Sequelize[_0xfb46('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xfb46('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xfb46('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xfb46('0x3')](_0xfb46('0xc'),_0xfb46('0xd'),'DADHI','KHOMP'),'defaultValue':_0xfb46('0xc')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xfb46('0xe')],'defaultValue':function(){return _0xfb46('0xf');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xfb46('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xfb46('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xfb46('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xfb46('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xfb46('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xfb46('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xfb46('0xb')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xfb46('0x10')],'defaultValue':![],'comment':_0xfb46('0x11'),'set':function(_0x47959d){if(!_0x47959d)this['setDataValue'](_0xfb46('0x12'),null);this[_0xfb46('0x13')](_0xfb46('0x14'),_0x47959d);}}};
\ No newline at end of file
index ba8be2b..0b4459e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1cd=['gateway','faxdetect','minrate','t38timeout','push','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','bulkCreate','update','VoiceExtension','tech','key','createdAt','updatedAt','TrunkId','findById','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','defaults','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','userFaxAccount:save','removeAgents','emit','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','client','http','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','destroy','then','UserProfileResource','stack','name','send','index','mandatoryDispositionPause','map','FaxAccount','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','Pause','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','getDispositions','findOne','Disposition','findAll','removeDispositions','ids','addAnswer','CannedAnswer','length','removeAnswers','addInteraction','omit','getInteractions','FaxInteraction','CmContact','Contact','User','fullname','internal','tag','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','findAndCountAll','priority','getApplications','context','localstationid','app','system','Set','ecm'];(function(_0x67d9fb,_0x208d53){var _0x222a58=function(_0x27b27c){while(--_0x27b27c){_0x67d9fb['push'](_0x67d9fb['shift']());}};_0x222a58(++_0x208d53);}(_0xb1cd,0x1be));var _0xdb1c=function(_0x2c64e7,_0x322872){_0x2c64e7=_0x2c64e7-0x0;var _0x416fdf=_0xb1cd[_0x2c64e7];return _0x416fdf;};'use strict';var emlformat=require(_0xdb1c('0x0'));var rimraf=require(_0xdb1c('0x1'));var zipdir=require(_0xdb1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdb1c('0x3'));var moment=require(_0xdb1c('0x4'));var BPromise=require(_0xdb1c('0x5'));var Mustache=require('mustache');var util=require(_0xdb1c('0x6'));var path=require(_0xdb1c('0x7'));var sox=require(_0xdb1c('0x8'));var csv=require(_0xdb1c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb1c('0xa'));var _=require(_0xdb1c('0xb'));var squel=require(_0xdb1c('0xc'));var crypto=require(_0xdb1c('0xd'));var jsforce=require(_0xdb1c('0xe'));var deskjs=require(_0xdb1c('0xf'));var toCsv=require(_0xdb1c('0x9'));var querystring=require(_0xdb1c('0x10'));var Papa=require('papaparse');var Redis=require(_0xdb1c('0x11'));var authService=require(_0xdb1c('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xdb1c('0x13'));var hardwareService=require(_0xdb1c('0x14'));var logger=require('../../config/logger')(_0xdb1c('0x15'));var utils=require(_0xdb1c('0x16'));var config=require(_0xdb1c('0x17'));var licenseUtil=require(_0xdb1c('0x18'));var db=require(_0xdb1c('0x19'))['db'];config[_0xdb1c('0x1a')]=_['defaults'](config[_0xdb1c('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xdb1c('0x1b'))(new Redis(config[_0xdb1c('0x1a')]));require('./faxAccount.socket')[_0xdb1c('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0xdb1c('0x1d')][_0xdb1c('0x1e')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4537fd,_0x38c966,_0x280a95,_0x5a222a){return new BPromise(function(_0x1a25a4,_0x12b440){var _0x131d2a=_0x5a222a||client;return _0x131d2a[_0xdb1c('0x1f')](_0x4537fd,_0x280a95)['then'](function(_0x1af8b2){logger[_0xdb1c('0x20')](_0xdb1c('0x21'),_0x38c966,_0xdb1c('0x22'));logger[_0xdb1c('0x23')](_0xdb1c('0x24'),_0x38c966,_0xdb1c('0x22'),JSON[_0xdb1c('0x25')](_0x1af8b2));if(_0x1af8b2['error']){if(_0x1af8b2[_0xdb1c('0x26')][_0xdb1c('0x27')]===0x1f4){logger['error'](_0xdb1c('0x21'),_0x38c966,_0x1af8b2['error'][_0xdb1c('0x28')]);return _0x12b440(_0x1af8b2[_0xdb1c('0x26')]['message']);}logger[_0xdb1c('0x26')](_0xdb1c('0x21'),_0x38c966,_0x1af8b2['error'][_0xdb1c('0x28')]);return _0x1a25a4(_0x1af8b2[_0xdb1c('0x26')]['message']);}else{logger[_0xdb1c('0x20')]('FaxAccount,\x20%s,\x20%s',_0x38c966,_0xdb1c('0x22'));_0x1a25a4(_0x1af8b2[_0xdb1c('0x29')]['message']);}})['catch'](function(_0x54aeee){logger['error'](_0xdb1c('0x21'),_0x38c966,_0x54aeee);_0x12b440(_0x54aeee);});});}function respondWithStatusCode(_0x6354fc,_0x5dfd61){_0x5dfd61=_0x5dfd61||0xcc;return function(_0x27cedf){if(_0x27cedf){return _0x6354fc[_0xdb1c('0x2a')](_0x5dfd61);}return _0x6354fc[_0xdb1c('0x2b')](_0x5dfd61)[_0xdb1c('0x2c')]();};}function respondWithResult(_0x27e7b7,_0x374239){_0x374239=_0x374239||0xc8;return function(_0x154434){if(_0x154434){return _0x27e7b7[_0xdb1c('0x2b')](_0x374239)[_0xdb1c('0x2d')](_0x154434);}};}function respondWithFilteredResult(_0x2be141,_0x129f6f){return function(_0x5e59f9){if(_0x5e59f9){var _0x660584=typeof _0x129f6f[_0xdb1c('0x2e')]==='undefined'&&typeof _0x129f6f[_0xdb1c('0x2f')]===_0xdb1c('0x30');var _0x18b656=_0x5e59f9[_0xdb1c('0x31')];var _0x31e9f7=_0x660584?0x0:_0x129f6f['offset'];var _0x134ce3=_0x660584?_0x5e59f9[_0xdb1c('0x31')]:_0x129f6f[_0xdb1c('0x2e')]+_0x129f6f[_0xdb1c('0x2f')];var _0x21e460;if(_0x134ce3>=_0x18b656){_0x134ce3=_0x18b656;_0x21e460=0xc8;}else{_0x21e460=0xce;}_0x2be141[_0xdb1c('0x2b')](_0x21e460);return _0x2be141[_0xdb1c('0x32')](_0xdb1c('0x33'),_0x31e9f7+'-'+_0x134ce3+'/'+_0x18b656)[_0xdb1c('0x2d')](_0x5e59f9);}return null;};}function patchUpdates(_0x371386){return function(_0x255271){try{jsonpatch['apply'](_0x255271,_0x371386,!![]);}catch(_0x40a08b){return BPromise[_0xdb1c('0x34')](_0x40a08b);}return _0x255271['save']();};}function saveUpdates(_0x18566d,_0x269198){return function(_0x223bc7){if(_0x223bc7){return _0x223bc7['update'](_0x18566d)['then'](function(_0x396de4){return _0x396de4;});}return null;};}function removeEntity(_0x4beec0,_0x238f33){return function(_0x19744a){if(_0x19744a){return _0x19744a[_0xdb1c('0x35')]()[_0xdb1c('0x36')](function(){var _0x1ce432=_0x19744a['get']({'plain':!![]});var _0x480fc7='FaxAccounts';return db[_0xdb1c('0x37')][_0xdb1c('0x35')]({'where':{'type':_0x480fc7,'resourceId':_0x1ce432['id']}})[_0xdb1c('0x36')](function(){return _0x19744a;});})['then'](function(){_0x4beec0[_0xdb1c('0x2b')](0xcc)[_0xdb1c('0x2c')]();});}};}function handleEntityNotFound(_0x1cbf3e,_0x431160){return function(_0x47cd59){if(!_0x47cd59){_0x1cbf3e[_0xdb1c('0x2a')](0x194);}return _0x47cd59;};}function handleError(_0x5a42b9,_0x4998ea){_0x4998ea=_0x4998ea||0x1f4;return function(_0x5da331){logger[_0xdb1c('0x26')](_0x5da331[_0xdb1c('0x38')]);if(_0x5da331['name']){delete _0x5da331[_0xdb1c('0x39')];}_0x5a42b9[_0xdb1c('0x2b')](_0x4998ea)[_0xdb1c('0x3a')](_0x5da331);};}exports[_0xdb1c('0x3b')]=function(_0xc3f441,_0x4a6d12){var _0x220d0a={'include':[{'model':db['Pause'],'as':_0xdb1c('0x3c')}]},_0x2c91c5={},_0x58b087={'count':0x0,'rows':[]};var _0x5394e0=_[_0xdb1c('0x3d')](db[_0xdb1c('0x3e')]['rawAttributes'],function(_0x5cf7d6){return{'name':_0x5cf7d6['fieldName'],'type':_0x5cf7d6['type']['key']};});_0x2c91c5['model']=_[_0xdb1c('0x3d')](_0x5394e0,_0xdb1c('0x39'));_0x2c91c5[_0xdb1c('0x3f')]=_[_0xdb1c('0x40')](_0xc3f441[_0xdb1c('0x3f')]);_0x2c91c5['filters']=_[_0xdb1c('0x41')](_0x2c91c5[_0xdb1c('0x42')],_0x2c91c5[_0xdb1c('0x3f')]);_0x220d0a[_0xdb1c('0x43')]=_['intersection'](_0x2c91c5[_0xdb1c('0x42')],qs[_0xdb1c('0x44')](_0xc3f441[_0xdb1c('0x3f')]['fields']));_0x220d0a[_0xdb1c('0x43')]=_0x220d0a[_0xdb1c('0x43')]['length']?_0x220d0a[_0xdb1c('0x43')]:_0x2c91c5[_0xdb1c('0x42')];if(!_0xc3f441[_0xdb1c('0x3f')][_0xdb1c('0x45')](_0xdb1c('0x46'))){_0x220d0a[_0xdb1c('0x2f')]=qs['limit'](_0xc3f441[_0xdb1c('0x3f')][_0xdb1c('0x2f')]);_0x220d0a[_0xdb1c('0x2e')]=qs['offset'](_0xc3f441[_0xdb1c('0x3f')][_0xdb1c('0x2e')]);}_0x220d0a[_0xdb1c('0x47')]=qs[_0xdb1c('0x48')](_0xc3f441['query'][_0xdb1c('0x48')]);_0x220d0a[_0xdb1c('0x49')]=qs['filters'](_[_0xdb1c('0x4a')](_0xc3f441[_0xdb1c('0x3f')],_0x2c91c5[_0xdb1c('0x4b')]),_0x5394e0);if(_0xc3f441[_0xdb1c('0x3f')][_0xdb1c('0x4c')]){_0x220d0a['where']=_[_0xdb1c('0x4d')](_0x220d0a[_0xdb1c('0x49')],{'$or':_[_0xdb1c('0x3d')](_0x5394e0,function(_0x2d03ad){if(_0x2d03ad[_0xdb1c('0x4e')]!==_0xdb1c('0x4f')){var _0x1763fb={};_0x1763fb[_0x2d03ad[_0xdb1c('0x39')]]={'$like':'%'+_0xc3f441[_0xdb1c('0x3f')][_0xdb1c('0x4c')]+'%'};return _0x1763fb;}})});}_0x220d0a=_[_0xdb1c('0x4d')]({},_0x220d0a,_0xc3f441[_0xdb1c('0x50')]);var _0x49f311={'where':_0x220d0a[_0xdb1c('0x49')]};return db['FaxAccount']['count'](_0x49f311)[_0xdb1c('0x36')](function(_0x10c30e){_0x58b087[_0xdb1c('0x31')]=_0x10c30e;if(_0xc3f441[_0xdb1c('0x3f')][_0xdb1c('0x51')]){_0x220d0a[_0xdb1c('0x52')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0x220d0a);})[_0xdb1c('0x36')](function(_0xaab3a3){_0x58b087[_0xdb1c('0x53')]=_0xaab3a3;return _0x58b087;})[_0xdb1c('0x36')](respondWithFilteredResult(_0x4a6d12,_0x220d0a))[_0xdb1c('0x54')](handleError(_0x4a6d12,null));};exports[_0xdb1c('0x55')]=function(_0x59d664,_0x25cec7){var _0x2a4d05={'raw':![],'where':{'id':_0x59d664[_0xdb1c('0x56')]['id']},'include':[{'model':db[_0xdb1c('0x57')],'as':'mandatoryDispositionPause'}]},_0x1473e9={};_0x1473e9[_0xdb1c('0x42')]=_[_0xdb1c('0x40')](db['FaxAccount'][_0xdb1c('0x58')]);_0x1473e9['query']=_[_0xdb1c('0x40')](_0x59d664[_0xdb1c('0x3f')]);_0x1473e9['filters']=_[_0xdb1c('0x41')](_0x1473e9['model'],_0x1473e9[_0xdb1c('0x3f')]);_0x2a4d05[_0xdb1c('0x43')]=_['intersection'](_0x1473e9[_0xdb1c('0x42')],qs['fields'](_0x59d664[_0xdb1c('0x3f')]['fields']));_0x2a4d05[_0xdb1c('0x43')]=_0x2a4d05[_0xdb1c('0x43')]['length']?_0x2a4d05['attributes']:_0x1473e9[_0xdb1c('0x42')];if(_0x59d664['query'][_0xdb1c('0x51')]){_0x2a4d05[_0xdb1c('0x52')]=[{'all':!![]}];}_0x2a4d05=_[_0xdb1c('0x4d')]({},_0x2a4d05,_0x59d664[_0xdb1c('0x50')]);return db[_0xdb1c('0x3e')][_0xdb1c('0x59')](_0x2a4d05)['then'](handleEntityNotFound(_0x25cec7,null))[_0xdb1c('0x36')](respondWithResult(_0x25cec7,null))[_0xdb1c('0x54')](handleError(_0x25cec7,null));};exports['create']=function(_0x3bf6ab,_0x3d2591){return db[_0xdb1c('0x3e')][_0xdb1c('0x5a')](_0x3bf6ab[_0xdb1c('0x5b')],{})[_0xdb1c('0x36')](function(_0x3cc9a5){var _0xf36fda=_0x3bf6ab['user']['get']({'plain':!![]});if(!_0xf36fda)throw new Error(_0xdb1c('0x5c'));if(_0xf36fda[_0xdb1c('0x5d')]===_0xdb1c('0x5e')){var _0x3b0a93=_0x3cc9a5[_0xdb1c('0x5f')]({'plain':!![]});var _0x756a23=_0xdb1c('0x60');return db[_0xdb1c('0x61')]['find']({'where':{'name':_0x756a23,'userProfileId':_0xf36fda[_0xdb1c('0x62')]},'raw':!![]})[_0xdb1c('0x36')](function(_0x1edf9e){if(_0x1edf9e&&_0x1edf9e[_0xdb1c('0x63')]===0x0){return db[_0xdb1c('0x37')][_0xdb1c('0x5a')]({'name':_0x3b0a93['name'],'resourceId':_0x3b0a93['id'],'type':_0x1edf9e[_0xdb1c('0x39')],'sectionId':_0x1edf9e['id']},{})['then'](function(){return _0x3cc9a5;});}else{return _0x3cc9a5;}})[_0xdb1c('0x54')](function(_0x2a53e4){logger['error'](_0xdb1c('0x64'),_0x2a53e4);throw _0x2a53e4;});}return _0x3cc9a5;})['then'](respondWithResult(_0x3d2591,0xc9))[_0xdb1c('0x54')](handleError(_0x3d2591,null));};exports['update']=function(_0x44564c,_0x46f8c8){if(_0x44564c[_0xdb1c('0x5b')]['id']){delete _0x44564c[_0xdb1c('0x5b')]['id'];}return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x44564c['params']['id']},'include':[{'model':db[_0xdb1c('0x57')],'as':_0xdb1c('0x3c')}]})[_0xdb1c('0x36')](handleEntityNotFound(_0x46f8c8,null))[_0xdb1c('0x36')](saveUpdates(_0x44564c['body'],null))[_0xdb1c('0x36')](respondWithResult(_0x46f8c8,null))[_0xdb1c('0x54')](handleError(_0x46f8c8,null));};exports[_0xdb1c('0x35')]=function(_0x2a2024,_0xb74f67){return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x2a2024[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0xb74f67,null))[_0xdb1c('0x36')](removeEntity(_0xb74f67,null))[_0xdb1c('0x54')](handleError(_0xb74f67,null));};exports[_0xdb1c('0x65')]=function(_0x3acfc9,_0x5a4243){return db[_0xdb1c('0x3e')]['describe']()[_0xdb1c('0x36')](respondWithResult(_0x5a4243,null))[_0xdb1c('0x54')](handleError(_0x5a4243,null));};exports[_0xdb1c('0x66')]=function(_0x59084e,_0x558cbf,_0x5cbebb){if(_0x59084e[_0xdb1c('0x5b')]['id']){delete _0x59084e[_0xdb1c('0x5b')]['id'];}return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x59084e[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x558cbf,null))[_0xdb1c('0x36')](function(_0xea879b){if(_0xea879b){_0x59084e['body'][_0xdb1c('0x67')]=_0xea879b['id'];return db['Disposition'][_0xdb1c('0x5a')](_0x59084e[_0xdb1c('0x5b')]);}})['then'](respondWithResult(_0x558cbf,null))[_0xdb1c('0x54')](handleError(_0x558cbf,null));};exports[_0xdb1c('0x68')]=function(_0x521f9e,_0xab36e6,_0x4e4a09){var _0x33d212={'raw':![],'where':{}};var _0x1ac1a0={};var _0x44016f={'count':0x0,'rows':[]};return db[_0xdb1c('0x3e')][_0xdb1c('0x69')]({'where':{'id':_0x521f9e[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0xab36e6,null))[_0xdb1c('0x36')](function(_0x22f9ca){if(_0x22f9ca){_0x1ac1a0['model']=_[_0xdb1c('0x40')](db['Disposition'][_0xdb1c('0x58')]);_0x1ac1a0['query']=_[_0xdb1c('0x40')](_0x521f9e['query']);_0x1ac1a0['filters']=_[_0xdb1c('0x41')](_0x1ac1a0[_0xdb1c('0x42')],_0x1ac1a0[_0xdb1c('0x3f')]);_0x33d212[_0xdb1c('0x43')]=_[_0xdb1c('0x41')](_0x1ac1a0[_0xdb1c('0x42')],qs[_0xdb1c('0x44')](_0x521f9e[_0xdb1c('0x3f')][_0xdb1c('0x44')]));_0x33d212[_0xdb1c('0x43')]=_0x33d212[_0xdb1c('0x43')]['length']?_0x33d212[_0xdb1c('0x43')]:_0x1ac1a0[_0xdb1c('0x42')];if(!_0x521f9e[_0xdb1c('0x3f')]['hasOwnProperty'](_0xdb1c('0x46'))){_0x33d212[_0xdb1c('0x2f')]=qs[_0xdb1c('0x2f')](_0x521f9e[_0xdb1c('0x3f')][_0xdb1c('0x2f')]);_0x33d212[_0xdb1c('0x2e')]=qs[_0xdb1c('0x2e')](_0x521f9e[_0xdb1c('0x3f')][_0xdb1c('0x2e')]);}_0x33d212['order']=qs[_0xdb1c('0x48')](_0x521f9e[_0xdb1c('0x3f')][_0xdb1c('0x48')]);_0x33d212[_0xdb1c('0x49')]=qs[_0xdb1c('0x4b')](_[_0xdb1c('0x4a')](_0x521f9e['query'],_0x1ac1a0[_0xdb1c('0x4b')]));_0x33d212['where'][_0xdb1c('0x67')]=_0x22f9ca['id'];if(_0x521f9e['query'][_0xdb1c('0x4c')]){_0x33d212[_0xdb1c('0x49')]=_['merge'](_0x33d212[_0xdb1c('0x49')],{'$or':_[_0xdb1c('0x3d')](_0x33d212[_0xdb1c('0x43')],function(_0x154725){var _0x200097={};_0x200097[_0x154725]={'$like':'%'+_0x521f9e[_0xdb1c('0x3f')][_0xdb1c('0x4c')]+'%'};return _0x200097;})});}_0x33d212=_[_0xdb1c('0x4d')]({},_0x33d212,_0x521f9e[_0xdb1c('0x50')]);return db[_0xdb1c('0x6a')][_0xdb1c('0x31')]({'where':_0x33d212['where']})['then'](function(_0x24714d){_0x44016f[_0xdb1c('0x31')]=_0x24714d;if(_0x521f9e[_0xdb1c('0x3f')][_0xdb1c('0x51')]){_0x33d212[_0xdb1c('0x52')]=[{'all':!![]}];}return db[_0xdb1c('0x6a')][_0xdb1c('0x6b')](_0x33d212);})[_0xdb1c('0x36')](function(_0x464219){_0x44016f[_0xdb1c('0x53')]=_0x464219;return _0x44016f;});}})['then'](respondWithFilteredResult(_0xab36e6,_0x33d212))['catch'](handleError(_0xab36e6,null));};exports[_0xdb1c('0x6c')]=function(_0x4b5dca,_0x2d3653,_0x274094){return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x4b5dca[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x2d3653,null))[_0xdb1c('0x36')](function(_0x3e6cef){if(_0x3e6cef){return _0x3e6cef[_0xdb1c('0x6c')](_0x4b5dca[_0xdb1c('0x3f')][_0xdb1c('0x6d')]);}})[_0xdb1c('0x36')](respondWithStatusCode(_0x2d3653,null))['catch'](handleError(_0x2d3653,null));};exports[_0xdb1c('0x6e')]=function(_0x49da8c,_0x108c57,_0x3d1df0){if(_0x49da8c['body']['id']){delete _0x49da8c[_0xdb1c('0x5b')]['id'];}return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x49da8c['params']['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x108c57,null))[_0xdb1c('0x36')](function(_0x4d7277){if(_0x4d7277){_0x49da8c[_0xdb1c('0x5b')][_0xdb1c('0x67')]=_0x4d7277['id'];return db['CannedAnswer'][_0xdb1c('0x5a')](_0x49da8c[_0xdb1c('0x5b')]);}})[_0xdb1c('0x36')](respondWithResult(_0x108c57,null))[_0xdb1c('0x54')](handleError(_0x108c57,null));};exports['getAnswers']=function(_0x2b7144,_0x5d6a91,_0x16625a){var _0x20bc7c={'raw':![],'where':{}};var _0x356acf={};var _0x12c6a0={'count':0x0,'rows':[]};return db[_0xdb1c('0x3e')][_0xdb1c('0x69')]({'where':{'id':_0x2b7144[_0xdb1c('0x56')]['id']}})['then'](handleEntityNotFound(_0x5d6a91,null))[_0xdb1c('0x36')](function(_0x834a90){if(_0x834a90){_0x356acf[_0xdb1c('0x42')]=_[_0xdb1c('0x40')](db[_0xdb1c('0x6f')][_0xdb1c('0x58')]);_0x356acf[_0xdb1c('0x3f')]=_[_0xdb1c('0x40')](_0x2b7144[_0xdb1c('0x3f')]);_0x356acf['filters']=_[_0xdb1c('0x41')](_0x356acf[_0xdb1c('0x42')],_0x356acf[_0xdb1c('0x3f')]);_0x20bc7c[_0xdb1c('0x43')]=_[_0xdb1c('0x41')](_0x356acf[_0xdb1c('0x42')],qs[_0xdb1c('0x44')](_0x2b7144[_0xdb1c('0x3f')][_0xdb1c('0x44')]));_0x20bc7c[_0xdb1c('0x43')]=_0x20bc7c[_0xdb1c('0x43')][_0xdb1c('0x70')]?_0x20bc7c[_0xdb1c('0x43')]:_0x356acf[_0xdb1c('0x42')];if(!_0x2b7144[_0xdb1c('0x3f')]['hasOwnProperty']('nolimit')){_0x20bc7c[_0xdb1c('0x2f')]=qs['limit'](_0x2b7144['query'][_0xdb1c('0x2f')]);_0x20bc7c[_0xdb1c('0x2e')]=qs['offset'](_0x2b7144[_0xdb1c('0x3f')][_0xdb1c('0x2e')]);}_0x20bc7c['order']=qs['sort'](_0x2b7144[_0xdb1c('0x3f')]['sort']);_0x20bc7c[_0xdb1c('0x49')]=qs[_0xdb1c('0x4b')](_[_0xdb1c('0x4a')](_0x2b7144['query'],_0x356acf[_0xdb1c('0x4b')]));_0x20bc7c['where'][_0xdb1c('0x67')]=_0x834a90['id'];if(_0x2b7144[_0xdb1c('0x3f')][_0xdb1c('0x4c')]){_0x20bc7c[_0xdb1c('0x49')]=_[_0xdb1c('0x4d')](_0x20bc7c[_0xdb1c('0x49')],{'$or':_[_0xdb1c('0x3d')](_0x20bc7c[_0xdb1c('0x43')],function(_0x143ffa){var _0x217198={};_0x217198[_0x143ffa]={'$like':'%'+_0x2b7144[_0xdb1c('0x3f')][_0xdb1c('0x4c')]+'%'};return _0x217198;})});}_0x20bc7c=_[_0xdb1c('0x4d')]({},_0x20bc7c,_0x2b7144[_0xdb1c('0x50')]);return db['CannedAnswer'][_0xdb1c('0x31')]({'where':_0x20bc7c['where']})[_0xdb1c('0x36')](function(_0x3317d8){_0x12c6a0['count']=_0x3317d8;if(_0x2b7144['query']['includeAll']){_0x20bc7c['include']=[{'all':!![]}];}return db[_0xdb1c('0x6f')]['findAll'](_0x20bc7c);})[_0xdb1c('0x36')](function(_0x4858c1){_0x12c6a0['rows']=_0x4858c1;return _0x12c6a0;});}})[_0xdb1c('0x36')](respondWithFilteredResult(_0x5d6a91,_0x20bc7c))[_0xdb1c('0x54')](handleError(_0x5d6a91,null));};exports['removeAnswers']=function(_0x3f2745,_0x16ab34,_0x78d432){return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x3f2745[_0xdb1c('0x56')]['id']}})['then'](handleEntityNotFound(_0x16ab34,null))[_0xdb1c('0x36')](function(_0x1a57ee){if(_0x1a57ee){return _0x1a57ee[_0xdb1c('0x71')](_0x3f2745['query'][_0xdb1c('0x6d')]);}})[_0xdb1c('0x36')](respondWithStatusCode(_0x16ab34,null))['catch'](handleError(_0x16ab34,null));};exports['addInteraction']=function(_0x500fc5,_0x962607,_0x32e4cd){return db['FaxInteraction']['find']({'where':{'id':_0x500fc5[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x962607,null))['then'](function(_0x356aa0){if(_0x356aa0){return _0x356aa0[_0xdb1c('0x72')](_0x500fc5[_0xdb1c('0x5b')]['ids'],_[_0xdb1c('0x73')](_0x500fc5[_0xdb1c('0x5b')],[_0xdb1c('0x6d'),'id'])||{});}})[_0xdb1c('0x36')](respondWithResult(_0x962607,null))[_0xdb1c('0x54')](handleError(_0x962607,null));};exports[_0xdb1c('0x74')]=function(_0x509e3e,_0x15030d,_0x1ff10e){var _0x4ad823={'raw':![],'where':{}};var _0x2c949c={};var _0xebab3={'count':0x0,'rows':[]};return db['FaxAccount'][_0xdb1c('0x69')]({'where':{'id':_0x509e3e['params']['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x15030d,null))[_0xdb1c('0x36')](function(_0x3c3fe2){if(_0x3c3fe2){_0x2c949c['model']=_[_0xdb1c('0x40')](db[_0xdb1c('0x75')][_0xdb1c('0x58')]);_0x2c949c['query']=_[_0xdb1c('0x40')](_0x509e3e[_0xdb1c('0x3f')]);_0x2c949c[_0xdb1c('0x4b')]=_[_0xdb1c('0x41')](_0x2c949c[_0xdb1c('0x42')],_0x2c949c[_0xdb1c('0x3f')]);_0x4ad823[_0xdb1c('0x43')]=_[_0xdb1c('0x41')](_0x2c949c[_0xdb1c('0x42')],qs[_0xdb1c('0x44')](_0x509e3e[_0xdb1c('0x3f')][_0xdb1c('0x44')]));_0x4ad823['attributes']=_0x4ad823['attributes'][_0xdb1c('0x70')]?_0x4ad823[_0xdb1c('0x43')]:_0x2c949c[_0xdb1c('0x42')];if(!_0x509e3e[_0xdb1c('0x3f')]['hasOwnProperty'](_0xdb1c('0x46'))){_0x4ad823[_0xdb1c('0x2f')]=qs[_0xdb1c('0x2f')](_0x509e3e[_0xdb1c('0x3f')][_0xdb1c('0x2f')]);_0x4ad823[_0xdb1c('0x2e')]=qs[_0xdb1c('0x2e')](_0x509e3e[_0xdb1c('0x3f')][_0xdb1c('0x2e')]);}_0x4ad823[_0xdb1c('0x47')]=qs[_0xdb1c('0x48')](_0x509e3e[_0xdb1c('0x3f')][_0xdb1c('0x48')]);_0x4ad823[_0xdb1c('0x49')]=qs[_0xdb1c('0x4b')](_[_0xdb1c('0x4a')](_0x509e3e[_0xdb1c('0x3f')],_0x2c949c[_0xdb1c('0x4b')]));_0x4ad823[_0xdb1c('0x49')][_0xdb1c('0x67')]=_0x3c3fe2['id'];if(_0x509e3e[_0xdb1c('0x3f')][_0xdb1c('0x4c')]){_0x4ad823[_0xdb1c('0x49')]=_['merge'](_0x4ad823['where'],{'$or':_[_0xdb1c('0x3d')](_0x4ad823[_0xdb1c('0x43')],function(_0x4249e5){var _0x5062bc={};_0x5062bc[_0x4249e5]={'$like':'%'+_0x509e3e[_0xdb1c('0x3f')][_0xdb1c('0x4c')]+'%'};return _0x5062bc;})});}_0x4ad823=_['merge']({},_0x4ad823,_0x509e3e['options']);return db[_0xdb1c('0x75')][_0xdb1c('0x31')]({'where':_0x4ad823[_0xdb1c('0x49')]})[_0xdb1c('0x36')](function(_0x1e6951){_0xebab3[_0xdb1c('0x31')]=_0x1e6951;if(_0x509e3e[_0xdb1c('0x3f')]['includeAll']){_0x4ad823[_0xdb1c('0x52')]=[{'model':db[_0xdb1c('0x76')],'as':_0xdb1c('0x77'),'required':![]},{'model':db[_0xdb1c('0x78')],'as':'Owner','attributes':[_0xdb1c('0x39'),_0xdb1c('0x79'),_0xdb1c('0x7a')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0xdb1c('0x39'),'color'],'where':_0x509e3e[_0xdb1c('0x3f')]['tag']?{'id':_0x509e3e[_0xdb1c('0x3f')][_0xdb1c('0x7b')]}:undefined,'required':_0x509e3e[_0xdb1c('0x3f')][_0xdb1c('0x7b')]?!![]:![]}];}return db['FaxInteraction']['findAll'](_0x4ad823);})['then'](function(_0xae7599){_0xebab3['rows']=_0xae7599;return _0xebab3;});}})[_0xdb1c('0x36')](respondWithFilteredResult(_0x15030d,_0x4ad823))[_0xdb1c('0x54')](handleError(_0x15030d,null));};exports[_0xdb1c('0x7c')]=function(_0x4ccac9,_0xea6434){var _0xf5358=_0x4ccac9[_0xdb1c('0x56')]['id'];var _0x93a309=_0x4ccac9[_0xdb1c('0x5b')];var _0x91ce85=0xc8;var _0x3c4637=null;return db[_0xdb1c('0x7d')][_0xdb1c('0x7e')]({'isolationLevel':db[_0xdb1c('0x7d')]['Transaction'][_0xdb1c('0x7f')][_0xdb1c('0x80')]},function(_0x731042){return db[_0xdb1c('0x3e')][_0xdb1c('0x69')]({'where':{'id':_0xf5358},'transaction':_0x731042})[_0xdb1c('0x36')](function(_0x46bab8){if(_0x46bab8){return db[_0xdb1c('0x81')][_0xdb1c('0x35')]({'where':{'FaxAccountId':_0xf5358},'transaction':_0x731042})[_0xdb1c('0x36')](function(){var _0x50c9eb=_[_0xdb1c('0x3d')](_0x93a309,function(_0x5d1911){_0x5d1911[_0xdb1c('0x67')]=_0xf5358;return _0x5d1911;});return db[_0xdb1c('0x81')]['bulkCreate'](_0x50c9eb,{'transaction':_0x731042});});}else{_0x91ce85=0x194;_0x3c4637=[];}});})['then'](function(){if(_0x91ce85!==0x194){return db[_0xdb1c('0x81')][_0xdb1c('0x82')]({'where':{'FaxAccountId':_0xf5358},'order':_0xdb1c('0x83')})['then'](function(_0x2a8257){_0x3c4637=_0x2a8257;});}})['catch'](function(_0x2f5d37){_0x91ce85=0x1f4;logger[_0xdb1c('0x26')](_0x2f5d37['stack']);if(_0x2f5d37['name']){delete _0x2f5d37['name'];}_0x3c4637=_0x2f5d37;})['finally'](function(){if(_0x3c4637===null){_0xea6434['sendStatus'](_0x91ce85);}else{if(_0x91ce85===0x1f4){_0xea6434['status'](_0x91ce85)[_0xdb1c('0x3a')](_0x3c4637);}else{_0xea6434[_0xdb1c('0x2b')](_0x91ce85)[_0xdb1c('0x2d')](_0x3c4637);}}});};exports['getApplications']=function(_0x40068b,_0x362367,_0x2c8d89){var _0x56939d={};var _0x3961e1={};var _0x47e84c;var _0x31e48e;return db[_0xdb1c('0x3e')][_0xdb1c('0x69')]({'where':{'id':_0x40068b[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x362367,null))[_0xdb1c('0x36')](function(_0x1ef077){if(_0x1ef077){_0x47e84c=_0x1ef077;_0x3961e1[_0xdb1c('0x42')]=_[_0xdb1c('0x40')](db[_0xdb1c('0x81')][_0xdb1c('0x58')]);_0x3961e1['query']=_['keys'](_0x40068b[_0xdb1c('0x3f')]);_0x3961e1['filters']=_[_0xdb1c('0x41')](_0x3961e1['model'],_0x3961e1[_0xdb1c('0x3f')]);_0x56939d[_0xdb1c('0x43')]=_[_0xdb1c('0x41')](_0x3961e1['model'],qs[_0xdb1c('0x44')](_0x40068b['query'][_0xdb1c('0x44')]));_0x56939d['attributes']=_0x56939d[_0xdb1c('0x43')][_0xdb1c('0x70')]?_0x56939d[_0xdb1c('0x43')]:_0x3961e1['model'];_0x56939d[_0xdb1c('0x47')]=qs[_0xdb1c('0x48')](_0x40068b['query']['sort']);_0x56939d[_0xdb1c('0x49')]=qs[_0xdb1c('0x4b')](_['pick'](_0x40068b[_0xdb1c('0x3f')],_0x3961e1['filters']));if(_0x40068b[_0xdb1c('0x3f')][_0xdb1c('0x4c')]){_0x56939d[_0xdb1c('0x49')]=_[_0xdb1c('0x4d')](_0x56939d[_0xdb1c('0x49')],{'$or':_['map'](_0x56939d[_0xdb1c('0x43')],function(_0x4b7f6a){var _0x26c3e9={};_0x26c3e9[_0x4b7f6a]={'$like':'%'+_0x40068b[_0xdb1c('0x3f')][_0xdb1c('0x4c')]+'%'};return _0x26c3e9;})});}_0x56939d=_['merge']({},_0x56939d,_0x40068b[_0xdb1c('0x50')]);return _0x47e84c[_0xdb1c('0x84')](_0x56939d);}})[_0xdb1c('0x36')](function(_0x2e82c6){if(_0x2e82c6){_0x31e48e=_0x2e82c6[_0xdb1c('0x70')];if(!_0x40068b[_0xdb1c('0x3f')][_0xdb1c('0x45')](_0xdb1c('0x46'))){_0x56939d[_0xdb1c('0x2f')]=qs[_0xdb1c('0x2f')](_0x40068b[_0xdb1c('0x3f')][_0xdb1c('0x2f')]);_0x56939d['offset']=qs[_0xdb1c('0x2e')](_0x40068b[_0xdb1c('0x3f')][_0xdb1c('0x2e')]);}return _0x47e84c[_0xdb1c('0x84')](_0x56939d);}})[_0xdb1c('0x36')](function(_0x4e0615){if(_0x4e0615){return _0x4e0615?{'count':_0x31e48e,'rows':_0x4e0615}:null;}})[_0xdb1c('0x36')](respondWithResult(_0x362367,null))[_0xdb1c('0x54')](handleError(_0x362367,null));};function Extension(_0x1cf26d,_0x3fb3ff,_0x5a5acc,_0x4fa343){this[_0xdb1c('0x85')]='from-voip-provider';this['exten']=_0x1cf26d[_0xdb1c('0x86')];this[_0xdb1c('0x87')]=_0x4fa343;this[_0xdb1c('0x4e')]=_0xdb1c('0x88');this['description']='Fax\x20Extension';this[_0xdb1c('0x67')]=_0x1cf26d['id'];this[_0xdb1c('0x83')]=_0x3fb3ff;this['appdata']=_0x5a5acc;}function createExtensionsReciveFax(_0x49bc0a){var _0x4eeb6a=0x1;var _0xe2bc6b=[];_0xe2bc6b['push'](new Extension(_0x49bc0a,_0x4eeb6a,'','Answer'));_0x4eeb6a+=0x1;_0xe2bc6b['push'](new Extension(_0x49bc0a,_0x4eeb6a,'CDR(type)=inbound-fax',_0xdb1c('0x89')));_0x4eeb6a+=0x1;for(var _0x388515 in _0x49bc0a){if(_0x49bc0a[_0xdb1c('0x45')](_0x388515)&&(_0x388515===_0xdb1c('0x8a')||_0x388515===_0xdb1c('0x86')||_0x388515===_0xdb1c('0x8b')||_0x388515===_0xdb1c('0x8c')||_0x388515==='headerinfo'||_0x388515==='maxrate'||_0x388515===_0xdb1c('0x8d')||_0x388515==='modem'||_0x388515===_0xdb1c('0x8e'))){_0xe2bc6b[_0xdb1c('0x8f')](new Extension(_0x49bc0a,_0x4eeb6a,'FAXOPT('+_0x388515+')='+_0x49bc0a[_0x388515],_0xdb1c('0x89')));_0x4eeb6a+=0x1;}}_0xe2bc6b[_0xdb1c('0x8f')](new Extension(_0x49bc0a,_0x4eeb6a,'6',_0xdb1c('0x90')));_0x4eeb6a+=0x1;_0xe2bc6b[_0xdb1c('0x8f')](new Extension(_0x49bc0a,_0x4eeb6a,_0xdb1c('0x91'),_0xdb1c('0x92')));_0x4eeb6a=0x0;return _0xe2bc6b;}exports[_0xdb1c('0x93')]=function(_0x244d24,_0x4af91b,_0x1dcb77){var _0x32deef;return db['sequelize'][_0xdb1c('0x7e')](function(_0x5a5a2d){return db[_0xdb1c('0x3e')][_0xdb1c('0x5a')](_0x244d24[_0xdb1c('0x5b')],{'transaction':_0x5a5a2d})[_0xdb1c('0x36')](function(_0x1075e5){_0x32deef=_0x1075e5[_0xdb1c('0x5f')]({'plain':!![]});return db['VoiceExtension'][_0xdb1c('0x94')](createExtensionsReciveFax(_0x32deef),{'transaction':_0x5a5a2d});});})[_0xdb1c('0x36')](function(){return _0x32deef;})[_0xdb1c('0x36')](respondWithResult(_0x4af91b,null))[_0xdb1c('0x54')](handleError(_0x4af91b,null));};exports['updateAccountApplications']=function(_0x2c5ea6,_0x4df903,_0x148571){var _0x12742d;return db['sequelize'][_0xdb1c('0x7e')](function(_0x3ac96e){return db['FaxAccount'][_0xdb1c('0x95')](_0x2c5ea6[_0xdb1c('0x5b')],{'where':{'id':_0x2c5ea6['body']['id']},'transaction':_0x3ac96e})[_0xdb1c('0x36')](function(_0x513a0d){return db[_0xdb1c('0x96')]['destroy']({'where':{'FaxAccountId':_0x2c5ea6[_0xdb1c('0x5b')]['id']},'transaction':_0x3ac96e})[_0xdb1c('0x36')](function(_0x41ccfc){return db[_0xdb1c('0x96')][_0xdb1c('0x94')](createExtensionsReciveFax(_['omit'](_0x2c5ea6[_0xdb1c('0x5b')],[_0xdb1c('0x97'),_0xdb1c('0x98'),_0xdb1c('0x99'),_0xdb1c('0x9a'),_0xdb1c('0x9b'),'ListId'])),{'transaction':_0x3ac96e});});});})[_0xdb1c('0x36')](function(){return db[_0xdb1c('0x3e')][_0xdb1c('0x9c')](_0x2c5ea6[_0xdb1c('0x5b')]['id']);})[_0xdb1c('0x36')](respondWithResult(_0x4df903,null))['catch'](handleError(_0x4df903,null));};exports[_0xdb1c('0x9d')]=function(_0x29676b,_0x33c8f2,_0x8c8a30){var _0x24e41b={'raw':!![],'where':{}};var _0x10aae7={};var _0x1d15d1={'count':0x0,'rows':[]};return db[_0xdb1c('0x3e')][_0xdb1c('0x69')]({'where':{'id':_0x29676b[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x33c8f2,null))[_0xdb1c('0x36')](function(_0x1a2e7c){if(_0x1a2e7c){_0x10aae7['model']=_[_0xdb1c('0x40')](db[_0xdb1c('0x9e')][_0xdb1c('0x58')]);_0x10aae7[_0xdb1c('0x3f')]=_[_0xdb1c('0x40')](_0x29676b['query']);_0x10aae7['filters']=_[_0xdb1c('0x41')](_0x10aae7['model'],_0x10aae7['query']);_0x24e41b[_0xdb1c('0x43')]=_[_0xdb1c('0x41')](_0x10aae7[_0xdb1c('0x42')],qs[_0xdb1c('0x44')](_0x29676b['query']['fields']));_0x24e41b[_0xdb1c('0x43')]=_0x24e41b[_0xdb1c('0x43')]['length']?_0x24e41b['attributes']:_0x10aae7[_0xdb1c('0x42')];if(!_0x29676b[_0xdb1c('0x3f')]['hasOwnProperty']('nolimit')){_0x24e41b[_0xdb1c('0x2f')]=qs[_0xdb1c('0x2f')](_0x29676b[_0xdb1c('0x3f')][_0xdb1c('0x2f')]);_0x24e41b[_0xdb1c('0x2e')]=qs[_0xdb1c('0x2e')](_0x29676b[_0xdb1c('0x3f')][_0xdb1c('0x2e')]);}_0x24e41b[_0xdb1c('0x47')]=qs[_0xdb1c('0x48')](_0x29676b[_0xdb1c('0x3f')][_0xdb1c('0x48')]);_0x24e41b[_0xdb1c('0x49')]=qs[_0xdb1c('0x4b')](_['pick'](_0x29676b[_0xdb1c('0x3f')],_0x10aae7['filters']));_0x24e41b[_0xdb1c('0x49')][_0xdb1c('0x67')]=_0x1a2e7c['id'];if(_0x29676b[_0xdb1c('0x3f')][_0xdb1c('0x4c')]){_0x24e41b[_0xdb1c('0x49')]=_['merge'](_0x24e41b[_0xdb1c('0x49')],{'$or':_[_0xdb1c('0x3d')](_0x24e41b[_0xdb1c('0x43')],function(_0x4ad1ad){var _0x288d32={};_0x288d32[_0x4ad1ad]={'$like':'%'+_0x29676b[_0xdb1c('0x3f')][_0xdb1c('0x4c')]+'%'};return _0x288d32;})});}if(_0x29676b[_0xdb1c('0x3f')]['$gte']){var _0x20cb67=_0x29676b[_0xdb1c('0x3f')][_0xdb1c('0x9f')]['split'](',');var _0x57f095={};_0x57f095[_0x20cb67[0x0]]={'$gte':moment(_0x20cb67[0x1])[_0xdb1c('0xa0')](_0xdb1c('0xa1'))};_0x24e41b[_0xdb1c('0x49')]=_[_0xdb1c('0x4d')](_0x24e41b[_0xdb1c('0x49')],_0x57f095);}_0x24e41b=_[_0xdb1c('0x4d')]({},_0x24e41b,_0x29676b['options']);return db['FaxMessage']['count']({'where':_0x24e41b[_0xdb1c('0x49')]})[_0xdb1c('0x36')](function(_0x5d7506){_0x1d15d1[_0xdb1c('0x31')]=_0x5d7506;if(_0x29676b[_0xdb1c('0x3f')]['includeAll']){_0x24e41b[_0xdb1c('0x52')]=[{'all':!![]}];}return db[_0xdb1c('0x9e')][_0xdb1c('0x6b')](_0x24e41b);})[_0xdb1c('0x36')](function(_0x1c6f30){_0x1d15d1[_0xdb1c('0x53')]=_0x1c6f30;return _0x1d15d1;});}})[_0xdb1c('0x36')](respondWithFilteredResult(_0x33c8f2,_0x24e41b))[_0xdb1c('0x54')](handleError(_0x33c8f2,null));};exports[_0xdb1c('0x3a')]=function(_0x4e5681,_0x3d49a5,_0x1715f2){var _0x184e06,_0xb81ba4={},_0x1294b5;if(_0x4e5681[_0xdb1c('0x5b')]['to']){_0x1294b5=_0x4e5681['body']['to'][0x0];}return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x4e5681['params']['id']},'include':[{'model':db[_0xdb1c('0xa2')],'as':_0xdb1c('0xa3'),'include':[{'model':db[_0xdb1c('0x76')],'as':_0xdb1c('0xa4'),'where':{'fax':_0x1294b5},'limit':0x1,'order':[[_0xdb1c('0x9a'),_0xdb1c('0xa5')]]}]}]})[_0xdb1c('0x36')](handleEntityNotFound(_0x3d49a5,null))[_0xdb1c('0x36')](function(_0x5941b5){_0x184e06=_0x5941b5;if(_0x4e5681[_0xdb1c('0x5b')][_0xdb1c('0xa6')]&&_0x4e5681['body']['attachments'][_0xdb1c('0x70')]){for(var _0x1d53dc=0x0;_0x1d53dc<_0x4e5681[_0xdb1c('0x5b')][_0xdb1c('0xa6')]['length'];_0x1d53dc+=0x1){_0x4e5681[_0xdb1c('0x5b')][_0xdb1c('0xa6')][_0x1d53dc]={'filename':_0x4e5681[_0xdb1c('0x5b')][_0xdb1c('0xa6')][_0x1d53dc][_0xdb1c('0x39')],'id':_0x4e5681[_0xdb1c('0x5b')]['attachments'][_0x1d53dc]['id'],'path':path[_0xdb1c('0xa7')](config[_0xdb1c('0xa8')],_0xdb1c('0xa9'),_0x4e5681[_0xdb1c('0x5b')][_0xdb1c('0xa6')][_0x1d53dc][_0xdb1c('0xaa')])};}}return respondWithRpcPromise(_0xdb1c('0xab'),_0xdb1c('0xab'),{'FaxAccountId':_[_0xdb1c('0xac')](_0x4e5681[_0xdb1c('0x56')]['id'])?undefined:_0x4e5681['params']['id'],'path':_[_0xdb1c('0xac')](_0x4e5681[_0xdb1c('0x5b')]['attachments'][0x0][_0xdb1c('0x7')])?undefined:_0x4e5681['body']['attachments'][0x0][_0xdb1c('0x7')],'fax':_[_0xdb1c('0xac')](_0x4e5681[_0xdb1c('0x5b')]['to'][0x0])?undefined:_0x4e5681['body']['to'][0x0]},client9002);})[_0xdb1c('0x36')](function(){if(_0x184e06){if(_[_0xdb1c('0xac')](_0x4e5681[_0xdb1c('0x5b')][_0xdb1c('0xad')])){_0x4e5681['body'][_0xdb1c('0xad')]=util[_0xdb1c('0xa0')](_0xdb1c('0xae'),_0x184e06[_0xdb1c('0x39')],_0x184e06[_0xdb1c('0xaf')]);}if(_0x184e06[_0xdb1c('0xa3')]){if(_0x184e06[_0xdb1c('0xa3')][_0xdb1c('0xa4')][_0xdb1c('0x70')]){return _0x184e06[_0xdb1c('0xa3')][_0xdb1c('0xa4')][0x0];}else{return db[_0xdb1c('0x76')][_0xdb1c('0x5a')](_[_0xdb1c('0xb0')](_0x4e5681[_0xdb1c('0x5b')],{'firstName':_0x4e5681['body']['to'][0x0],'phone':_0x4e5681[_0xdb1c('0x5b')]['to'][0x0],'fax':_0x4e5681[_0xdb1c('0x5b')]['to'][0x0],'ListId':_0x184e06[_0xdb1c('0xb1')]}));}}else{throw new Error(_0xdb1c('0xb2'));}}else{throw new Error(_0xdb1c('0xb3'));}})['then'](function(_0x5ad936){if(_0x5ad936){return db[_0xdb1c('0x75')]['find']({'where':{'ContactId':_0x5ad936['id'],'closed':![],'FaxAccountId':_0x184e06['id']}})[_0xdb1c('0x36')](function(_0x3132b3){if(_0x3132b3){return[_0x3132b3,![]];}return db[_0xdb1c('0x75')][_0xdb1c('0x5a')]({'UserId':_0x4e5681[_0xdb1c('0x5e')]['id'],'ContactId':_0x5ad936['id'],'FaxAccountId':_0x184e06['id'],'fax':_0x4e5681[_0xdb1c('0x5b')]['to'][0x0],'firstMsgDirection':_0xdb1c('0xb4'),'Messages':[_['merge'](_0x4e5681[_0xdb1c('0x5b')],{'read':![],'body':_0x4e5681[_0xdb1c('0x5b')][_0xdb1c('0xa6')][0x0][_0xdb1c('0xb5')],'FaxAccountId':_0x184e06['id'],'UserId':_0x4e5681['user']['id'],'ContactId':_0x5ad936['id'],'AttachmentId':_0x4e5681['body'][_0xdb1c('0xa6')][0x0]['id']})]},{'include':[{'model':db[_0xdb1c('0x9e')],'as':_0xdb1c('0xb6')}]})['then'](function(_0x2bac01){return[_0x2bac01,!![]];});});}else{throw new Error(_0xdb1c('0xb7'));}})[_0xdb1c('0xb8')](function(_0x1c0f67,_0x183c5c){if(_0x183c5c){return _0x1c0f67;}return db[_0xdb1c('0x9e')][_0xdb1c('0x5a')]({'direction':_0xdb1c('0xb4'),'read':![],'body':_0x4e5681[_0xdb1c('0x5b')]['attachments'][0x0][_0xdb1c('0xb5')],'FaxAccountId':_0x184e06['id'],'FaxInteractionId':_0x1c0f67['id'],'UserId':_0x4e5681[_0xdb1c('0x5e')]['id'],'ContactId':_0x1c0f67[_0xdb1c('0xb9')],'AttachmentId':_0x4e5681['body'][_0xdb1c('0xa6')][0x0]['id']})[_0xdb1c('0x36')](function(_0xbabc2d){_0x1c0f67[_0xdb1c('0xba')][_0xdb1c('0xb6')]=[];_0x1c0f67[_0xdb1c('0xba')]['Messages'][_0xdb1c('0x8f')](_0xbabc2d[_0xdb1c('0xba')]);return _0x1c0f67;});})[_0xdb1c('0x36')](function(_0x26b908){respondWithRpcPromise('SendFax',_0xdb1c('0xbb'),{'FaxAccountId':_['isNil'](_0x4e5681[_0xdb1c('0x56')]['id'])?undefined:_0x4e5681[_0xdb1c('0x56')]['id'],'path':_[_0xdb1c('0xac')](_0x4e5681[_0xdb1c('0x5b')][_0xdb1c('0xa6')][0x0][_0xdb1c('0x7')])?undefined:_0x4e5681['body']['attachments'][0x0][_0xdb1c('0x7')],'fax':_[_0xdb1c('0xac')](_0x4e5681[_0xdb1c('0x5b')]['to'][0x0])?undefined:_0x4e5681[_0xdb1c('0x5b')]['to'][0x0],'AttachmentId':_0x4e5681['body'][_0xdb1c('0xa6')][0x0]['id']},client9002)['then'](function(_0xc0b83){logger[_0xdb1c('0x20')](_0xdb1c('0xbc'),_0xc0b83);})[_0xdb1c('0x54')](function(_0x17bebd){logger[_0xdb1c('0x20')](_0xdb1c('0xbc'),_0x17bebd);});return _0x26b908;})[_0xdb1c('0x36')](respondWithResult(_0x3d49a5,null))[_0xdb1c('0x54')](handleError(_0x3d49a5,null));};exports[_0xdb1c('0xbd')]=function(_0x22176e,_0x40ec93,_0x454f1d){return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x22176e[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x40ec93,null))[_0xdb1c('0x36')](function(_0x2b0c31){if(_0x2b0c31){return _0x2b0c31[_0xdb1c('0xbd')](_0x22176e[_0xdb1c('0x5b')]['ids'],_[_0xdb1c('0x73')](_0x22176e[_0xdb1c('0x5b')],[_0xdb1c('0x6d'),'id'])||{})[_0xdb1c('0xb8')](function(_0x1efcda){for(var _0x1680f8=0x0;_0x1680f8<_0x22176e[_0xdb1c('0x5b')][_0xdb1c('0x6d')][_0xdb1c('0x70')];_0x1680f8+=0x1){socket['emit'](_0xdb1c('0xbe'),{'UserId':Number(_0x22176e['body'][_0xdb1c('0x6d')][_0x1680f8]),'FaxAccountId':Number(_0x22176e[_0xdb1c('0x56')]['id'])});}return _0x1efcda;});}})['then'](respondWithResult(_0x40ec93,null))[_0xdb1c('0x54')](handleError(_0x40ec93,null));};exports[_0xdb1c('0xbf')]=function(_0x1bbc8f,_0x2866fe,_0x4d772f){return db[_0xdb1c('0x3e')][_0xdb1c('0x59')]({'where':{'id':_0x1bbc8f[_0xdb1c('0x56')]['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x2866fe,null))['then'](function(_0x26ae42){if(_0x26ae42){return _0x26ae42['removeAgents'](_0x1bbc8f[_0xdb1c('0x3f')][_0xdb1c('0x6d')])['then'](function(){if(_['isArray'](_0x1bbc8f['query'][_0xdb1c('0x6d')])){for(var _0x13e524=0x0;_0x13e524<_0x1bbc8f[_0xdb1c('0x3f')][_0xdb1c('0x6d')]['length'];_0x13e524+=0x1){socket['emit']('userFaxAccount:remove',{'UserId':Number(_0x1bbc8f[_0xdb1c('0x3f')][_0xdb1c('0x6d')][_0x13e524]),'FaxAccountId':Number(_0x1bbc8f[_0xdb1c('0x56')]['id'])});}}else{socket[_0xdb1c('0xc0')](_0xdb1c('0xc1'),{'UserId':Number(_0x1bbc8f[_0xdb1c('0x3f')][_0xdb1c('0x6d')]),'FaxAccountId':Number(_0x1bbc8f[_0xdb1c('0x56')]['id'])});}});}})[_0xdb1c('0x36')](respondWithStatusCode(_0x2866fe,null))[_0xdb1c('0x54')](handleError(_0x2866fe,null));};exports[_0xdb1c('0xc2')]=function(_0x319538,_0x2eb263,_0x35a9c2){var _0x1b0819={};var _0x1b976c={};var _0x2424e6;var _0x2b2aae;return db['FaxAccount'][_0xdb1c('0x69')]({'where':{'id':_0x319538['params']['id']}})[_0xdb1c('0x36')](handleEntityNotFound(_0x2eb263,null))[_0xdb1c('0x36')](function(_0x20a3cd){if(_0x20a3cd){_0x2424e6=_0x20a3cd;_0x1b976c[_0xdb1c('0x42')]=_['keys'](db[_0xdb1c('0x78')]['rawAttributes']);_0x1b976c[_0xdb1c('0x3f')]=_['keys'](_0x319538[_0xdb1c('0x3f')]);_0x1b976c[_0xdb1c('0x4b')]=_['intersection'](_0x1b976c[_0xdb1c('0x42')],_0x1b976c['query']);_0x1b0819['attributes']=_[_0xdb1c('0x41')](_0x1b976c[_0xdb1c('0x42')],qs['fields'](_0x319538['query'][_0xdb1c('0x44')]));_0x1b0819['attributes']=_0x1b0819[_0xdb1c('0x43')][_0xdb1c('0x70')]?_0x1b0819[_0xdb1c('0x43')]:_0x1b976c['model'];_0x1b0819[_0xdb1c('0x47')]=qs['sort'](_0x319538[_0xdb1c('0x3f')][_0xdb1c('0x48')]);_0x1b0819[_0xdb1c('0x49')]=qs[_0xdb1c('0x4b')](_[_0xdb1c('0x4a')](_0x319538[_0xdb1c('0x3f')],_0x1b976c['filters']));if(_0x319538['query']['filter']){_0x1b0819['where']=_[_0xdb1c('0x4d')](_0x1b0819[_0xdb1c('0x49')],{'$or':_[_0xdb1c('0x3d')](_0x1b0819[_0xdb1c('0x43')],function(_0x2fd32b){var _0x796d99={};_0x796d99[_0x2fd32b]={'$like':'%'+_0x319538['query']['filter']+'%'};return _0x796d99;})});}_0x1b0819=_['merge']({},_0x1b0819,_0x319538[_0xdb1c('0x50')]);return _0x2424e6[_0xdb1c('0xc2')](_0x1b0819);}})['then'](function(_0x19bb65){if(_0x19bb65){_0x2b2aae=_0x19bb65['length'];if(!_0x319538[_0xdb1c('0x3f')][_0xdb1c('0x45')](_0xdb1c('0x46'))){_0x1b0819[_0xdb1c('0x2f')]=qs[_0xdb1c('0x2f')](_0x319538['query'][_0xdb1c('0x2f')]);_0x1b0819['offset']=qs['offset'](_0x319538['query'][_0xdb1c('0x2e')]);}return _0x2424e6[_0xdb1c('0xc2')](_0x1b0819);}})['then'](function(_0x559738){if(_0x559738){return _0x559738?{'count':_0x2b2aae,'rows':_0x559738}:null;}})[_0xdb1c('0x36')](respondWithResult(_0x2eb263,null))[_0xdb1c('0x54')](handleError(_0x2eb263,null));};
\ No newline at end of file
+var _0xeb21=['tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','priority','json','getApplications','context','from-voip-provider','app','description','Fax\x20Extension','appdata','push','CDR(type)=inbound-fax','Set','localstationid','gateway','modem','t38timeout','FAXOPT(','ReceiveFax','addAccountApplications','bulkCreate','updateAccountApplications','VoiceExtension','tech','key','createdAt','updatedAt','TrunkId','ListId','findById','FaxMessage','split','format','List','CmContact','Contacts','DESC','attachments','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','Messages','spread','out','filename','dataValues','path','SendFaxRpc,\x20%s','addAgents','emit','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','client','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','sendStatus','status','end','offset','undefined','limit','count','Content-Range','reject','save','update','then','get','UserProfileResource','destroy','stack','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','nolimit','removeAnswers','addInteraction','omit','getInteractions','FaxInteraction','User','Owner','fullname','internal','Tags','color'];(function(_0x947f69,_0x2312c3){var _0x31659e=function(_0x28d311){while(--_0x28d311){_0x947f69['push'](_0x947f69['shift']());}};_0x31659e(++_0x2312c3);}(_0xeb21,0xff));var _0x1eb2=function(_0x2675da,_0x5a250e){_0x2675da=_0x2675da-0x0;var _0x5e6153=_0xeb21[_0x2675da];return _0x5e6153;};'use strict';var emlformat=require(_0x1eb2('0x0'));var rimraf=require(_0x1eb2('0x1'));var zipdir=require(_0x1eb2('0x2'));var jsonpatch=require(_0x1eb2('0x3'));var rp=require('request-promise');var moment=require(_0x1eb2('0x4'));var BPromise=require(_0x1eb2('0x5'));var Mustache=require(_0x1eb2('0x6'));var util=require(_0x1eb2('0x7'));var path=require('path');var sox=require(_0x1eb2('0x8'));var csv=require(_0x1eb2('0x9'));var ejs=require(_0x1eb2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1eb2('0xb'));var squel=require(_0x1eb2('0xc'));var crypto=require(_0x1eb2('0xd'));var jsforce=require(_0x1eb2('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1eb2('0xf'));var Papa=require(_0x1eb2('0x10'));var Redis=require('ioredis');var authService=require(_0x1eb2('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x1eb2('0x12'));var hardwareService=require(_0x1eb2('0x13'));var logger=require('../../config/logger')(_0x1eb2('0x14'));var utils=require(_0x1eb2('0x15'));var config=require(_0x1eb2('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1eb2('0x17'))['db'];config[_0x1eb2('0x18')]=_[_0x1eb2('0x19')](config[_0x1eb2('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x1eb2('0x1a'))(new Redis(config['redis']));require('./faxAccount.socket')[_0x1eb2('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x1eb2('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c1a5a,_0x328ce3,_0x309eff,_0x6e55e3){return new BPromise(function(_0x5f52fe,_0x13cecf){var _0x4703cb=_0x6e55e3||client;return _0x4703cb[_0x1eb2('0x1d')](_0x4c1a5a,_0x309eff)['then'](function(_0x4a0a40){logger[_0x1eb2('0x1e')](_0x1eb2('0x1f'),_0x328ce3,_0x1eb2('0x20'));logger[_0x1eb2('0x21')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x328ce3,'request\x20sent',JSON[_0x1eb2('0x22')](_0x4a0a40));if(_0x4a0a40[_0x1eb2('0x23')]){if(_0x4a0a40[_0x1eb2('0x23')][_0x1eb2('0x24')]===0x1f4){logger['error']('FaxAccount,\x20%s,\x20%s',_0x328ce3,_0x4a0a40[_0x1eb2('0x23')]['message']);return _0x13cecf(_0x4a0a40[_0x1eb2('0x23')]['message']);}logger['error'](_0x1eb2('0x1f'),_0x328ce3,_0x4a0a40[_0x1eb2('0x23')][_0x1eb2('0x25')]);return _0x5f52fe(_0x4a0a40[_0x1eb2('0x23')][_0x1eb2('0x25')]);}else{logger[_0x1eb2('0x1e')](_0x1eb2('0x1f'),_0x328ce3,_0x1eb2('0x20'));_0x5f52fe(_0x4a0a40['result']['message']);}})[_0x1eb2('0x26')](function(_0x5a0660){logger['error'](_0x1eb2('0x1f'),_0x328ce3,_0x5a0660);_0x13cecf(_0x5a0660);});});}function respondWithStatusCode(_0x266fe2,_0x51c80b){_0x51c80b=_0x51c80b||0xcc;return function(_0xe22759){if(_0xe22759){return _0x266fe2[_0x1eb2('0x27')](_0x51c80b);}return _0x266fe2[_0x1eb2('0x28')](_0x51c80b)[_0x1eb2('0x29')]();};}function respondWithResult(_0x437fdf,_0x43332a){_0x43332a=_0x43332a||0xc8;return function(_0x516b1e){if(_0x516b1e){return _0x437fdf[_0x1eb2('0x28')](_0x43332a)['json'](_0x516b1e);}};}function respondWithFilteredResult(_0x1c0a54,_0x3554da){return function(_0x57b551){if(_0x57b551){var _0x424493=typeof _0x3554da[_0x1eb2('0x2a')]===_0x1eb2('0x2b')&&typeof _0x3554da[_0x1eb2('0x2c')]===_0x1eb2('0x2b');var _0x37ad74=_0x57b551['count'];var _0x4aea1f=_0x424493?0x0:_0x3554da['offset'];var _0x385b7d=_0x424493?_0x57b551[_0x1eb2('0x2d')]:_0x3554da[_0x1eb2('0x2a')]+_0x3554da[_0x1eb2('0x2c')];var _0x5ce8a9;if(_0x385b7d>=_0x37ad74){_0x385b7d=_0x37ad74;_0x5ce8a9=0xc8;}else{_0x5ce8a9=0xce;}_0x1c0a54[_0x1eb2('0x28')](_0x5ce8a9);return _0x1c0a54['set'](_0x1eb2('0x2e'),_0x4aea1f+'-'+_0x385b7d+'/'+_0x37ad74)['json'](_0x57b551);}return null;};}function patchUpdates(_0x63949a){return function(_0x57fcaa){try{jsonpatch['apply'](_0x57fcaa,_0x63949a,!![]);}catch(_0x4f3057){return BPromise[_0x1eb2('0x2f')](_0x4f3057);}return _0x57fcaa[_0x1eb2('0x30')]();};}function saveUpdates(_0x4d4faa,_0x253e2f){return function(_0x18e19){if(_0x18e19){return _0x18e19[_0x1eb2('0x31')](_0x4d4faa)[_0x1eb2('0x32')](function(_0x2be2d0){return _0x2be2d0;});}return null;};}function removeEntity(_0x325fe8,_0x5e3738){return function(_0x9f1bdb){if(_0x9f1bdb){return _0x9f1bdb['destroy']()['then'](function(){var _0x1ac7b5=_0x9f1bdb[_0x1eb2('0x33')]({'plain':!![]});var _0x1a64b1='FaxAccounts';return db[_0x1eb2('0x34')][_0x1eb2('0x35')]({'where':{'type':_0x1a64b1,'resourceId':_0x1ac7b5['id']}})[_0x1eb2('0x32')](function(){return _0x9f1bdb;});})[_0x1eb2('0x32')](function(){_0x325fe8[_0x1eb2('0x28')](0xcc)[_0x1eb2('0x29')]();});}};}function handleEntityNotFound(_0x1aea09,_0x36b7bb){return function(_0x1d8e73){if(!_0x1d8e73){_0x1aea09[_0x1eb2('0x27')](0x194);}return _0x1d8e73;};}function handleError(_0x5eaca4,_0x46251a){_0x46251a=_0x46251a||0x1f4;return function(_0x555299){logger[_0x1eb2('0x23')](_0x555299[_0x1eb2('0x36')]);if(_0x555299[_0x1eb2('0x37')]){delete _0x555299[_0x1eb2('0x37')];}_0x5eaca4[_0x1eb2('0x28')](_0x46251a)[_0x1eb2('0x38')](_0x555299);};}exports[_0x1eb2('0x39')]=function(_0x2a2246,_0x23858d){var _0x1fc245={'include':[{'model':db[_0x1eb2('0x3a')],'as':_0x1eb2('0x3b')}]},_0x4f22b6={},_0x183730={'count':0x0,'rows':[]};var _0x4820a2=_[_0x1eb2('0x3c')](db[_0x1eb2('0x3d')][_0x1eb2('0x3e')],function(_0x9c18ee){return{'name':_0x9c18ee['fieldName'],'type':_0x9c18ee[_0x1eb2('0x3f')]['key']};});_0x4f22b6[_0x1eb2('0x40')]=_[_0x1eb2('0x3c')](_0x4820a2,_0x1eb2('0x37'));_0x4f22b6['query']=_[_0x1eb2('0x41')](_0x2a2246[_0x1eb2('0x42')]);_0x4f22b6['filters']=_[_0x1eb2('0x43')](_0x4f22b6['model'],_0x4f22b6['query']);_0x1fc245[_0x1eb2('0x44')]=_[_0x1eb2('0x43')](_0x4f22b6[_0x1eb2('0x40')],qs[_0x1eb2('0x45')](_0x2a2246[_0x1eb2('0x42')][_0x1eb2('0x45')]));_0x1fc245[_0x1eb2('0x44')]=_0x1fc245[_0x1eb2('0x44')][_0x1eb2('0x46')]?_0x1fc245['attributes']:_0x4f22b6[_0x1eb2('0x40')];if(!_0x2a2246[_0x1eb2('0x42')][_0x1eb2('0x47')]('nolimit')){_0x1fc245['limit']=qs['limit'](_0x2a2246['query'][_0x1eb2('0x2c')]);_0x1fc245[_0x1eb2('0x2a')]=qs['offset'](_0x2a2246[_0x1eb2('0x42')]['offset']);}_0x1fc245[_0x1eb2('0x48')]=qs[_0x1eb2('0x49')](_0x2a2246[_0x1eb2('0x42')][_0x1eb2('0x49')]);_0x1fc245[_0x1eb2('0x4a')]=qs[_0x1eb2('0x4b')](_[_0x1eb2('0x4c')](_0x2a2246['query'],_0x4f22b6[_0x1eb2('0x4b')]),_0x4820a2);if(_0x2a2246[_0x1eb2('0x42')][_0x1eb2('0x4d')]){_0x1fc245['where']=_[_0x1eb2('0x4e')](_0x1fc245[_0x1eb2('0x4a')],{'$or':_['map'](_0x4820a2,function(_0x17a026){if(_0x17a026[_0x1eb2('0x3f')]!==_0x1eb2('0x4f')){var _0x3b3b78={};_0x3b3b78[_0x17a026[_0x1eb2('0x37')]]={'$like':'%'+_0x2a2246[_0x1eb2('0x42')][_0x1eb2('0x4d')]+'%'};return _0x3b3b78;}})});}_0x1fc245=_[_0x1eb2('0x4e')]({},_0x1fc245,_0x2a2246[_0x1eb2('0x50')]);var _0x140eda={'where':_0x1fc245[_0x1eb2('0x4a')]};return db['FaxAccount'][_0x1eb2('0x2d')](_0x140eda)[_0x1eb2('0x32')](function(_0xd9318e){_0x183730['count']=_0xd9318e;if(_0x2a2246[_0x1eb2('0x42')][_0x1eb2('0x51')]){_0x1fc245[_0x1eb2('0x52')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0x1fc245);})[_0x1eb2('0x32')](function(_0x5606f3){_0x183730[_0x1eb2('0x53')]=_0x5606f3;return _0x183730;})['then'](respondWithFilteredResult(_0x23858d,_0x1fc245))[_0x1eb2('0x26')](handleError(_0x23858d,null));};exports[_0x1eb2('0x54')]=function(_0x40bb19,_0x4f024f){var _0x2ba725={'raw':![],'where':{'id':_0x40bb19['params']['id']},'include':[{'model':db[_0x1eb2('0x3a')],'as':_0x1eb2('0x3b')}]},_0x5bb522={};_0x5bb522[_0x1eb2('0x40')]=_[_0x1eb2('0x41')](db[_0x1eb2('0x3d')][_0x1eb2('0x3e')]);_0x5bb522[_0x1eb2('0x42')]=_[_0x1eb2('0x41')](_0x40bb19[_0x1eb2('0x42')]);_0x5bb522[_0x1eb2('0x4b')]=_[_0x1eb2('0x43')](_0x5bb522['model'],_0x5bb522[_0x1eb2('0x42')]);_0x2ba725[_0x1eb2('0x44')]=_[_0x1eb2('0x43')](_0x5bb522[_0x1eb2('0x40')],qs['fields'](_0x40bb19[_0x1eb2('0x42')]['fields']));_0x2ba725[_0x1eb2('0x44')]=_0x2ba725[_0x1eb2('0x44')][_0x1eb2('0x46')]?_0x2ba725['attributes']:_0x5bb522[_0x1eb2('0x40')];if(_0x40bb19['query'][_0x1eb2('0x51')]){_0x2ba725[_0x1eb2('0x52')]=[{'all':!![]}];}_0x2ba725=_['merge']({},_0x2ba725,_0x40bb19[_0x1eb2('0x50')]);return db[_0x1eb2('0x3d')][_0x1eb2('0x55')](_0x2ba725)['then'](handleEntityNotFound(_0x4f024f,null))[_0x1eb2('0x32')](respondWithResult(_0x4f024f,null))[_0x1eb2('0x26')](handleError(_0x4f024f,null));};exports[_0x1eb2('0x56')]=function(_0x52e644,_0x879ae0){return db[_0x1eb2('0x3d')][_0x1eb2('0x56')](_0x52e644[_0x1eb2('0x57')],{})[_0x1eb2('0x32')](function(_0xdfda2){var _0x171af7=_0x52e644[_0x1eb2('0x58')][_0x1eb2('0x33')]({'plain':!![]});if(!_0x171af7)throw new Error(_0x1eb2('0x59'));if(_0x171af7[_0x1eb2('0x5a')]==='user'){var _0x3b55a0=_0xdfda2['get']({'plain':!![]});var _0x44c772=_0x1eb2('0x5b');return db[_0x1eb2('0x5c')][_0x1eb2('0x55')]({'where':{'name':_0x44c772,'userProfileId':_0x171af7[_0x1eb2('0x5d')]},'raw':!![]})['then'](function(_0x71edb8){if(_0x71edb8&&_0x71edb8[_0x1eb2('0x5e')]===0x0){return db['UserProfileResource'][_0x1eb2('0x56')]({'name':_0x3b55a0[_0x1eb2('0x37')],'resourceId':_0x3b55a0['id'],'type':_0x71edb8[_0x1eb2('0x37')],'sectionId':_0x71edb8['id']},{})[_0x1eb2('0x32')](function(){return _0xdfda2;});}else{return _0xdfda2;}})[_0x1eb2('0x26')](function(_0x963b5c){logger['error'](_0x1eb2('0x5f'),_0x963b5c);throw _0x963b5c;});}return _0xdfda2;})[_0x1eb2('0x32')](respondWithResult(_0x879ae0,0xc9))['catch'](handleError(_0x879ae0,null));};exports[_0x1eb2('0x31')]=function(_0xced266,_0x447abe){if(_0xced266['body']['id']){delete _0xced266['body']['id'];}return db[_0x1eb2('0x3d')]['find']({'where':{'id':_0xced266[_0x1eb2('0x60')]['id']},'include':[{'model':db[_0x1eb2('0x3a')],'as':_0x1eb2('0x3b')}]})['then'](handleEntityNotFound(_0x447abe,null))[_0x1eb2('0x32')](saveUpdates(_0xced266[_0x1eb2('0x57')],null))[_0x1eb2('0x32')](respondWithResult(_0x447abe,null))['catch'](handleError(_0x447abe,null));};exports[_0x1eb2('0x35')]=function(_0x3be05b,_0x47b89f){return db[_0x1eb2('0x3d')][_0x1eb2('0x55')]({'where':{'id':_0x3be05b[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x47b89f,null))[_0x1eb2('0x32')](removeEntity(_0x47b89f,null))['catch'](handleError(_0x47b89f,null));};exports[_0x1eb2('0x61')]=function(_0x5c6fd5,_0x2b01b2){return db[_0x1eb2('0x3d')][_0x1eb2('0x61')]()['then'](respondWithResult(_0x2b01b2,null))[_0x1eb2('0x26')](handleError(_0x2b01b2,null));};exports[_0x1eb2('0x62')]=function(_0x2963b8,_0x1a3c6d,_0x31d127){if(_0x2963b8[_0x1eb2('0x57')]['id']){delete _0x2963b8[_0x1eb2('0x57')]['id'];}return db['FaxAccount'][_0x1eb2('0x55')]({'where':{'id':_0x2963b8[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x1a3c6d,null))[_0x1eb2('0x32')](function(_0x53b968){if(_0x53b968){_0x2963b8[_0x1eb2('0x57')][_0x1eb2('0x63')]=_0x53b968['id'];return db[_0x1eb2('0x64')]['create'](_0x2963b8[_0x1eb2('0x57')]);}})[_0x1eb2('0x32')](respondWithResult(_0x1a3c6d,null))['catch'](handleError(_0x1a3c6d,null));};exports[_0x1eb2('0x65')]=function(_0x563cb6,_0x24feb2,_0x2aab4e){var _0x4b298d={'raw':![],'where':{}};var _0x367ade={};var _0x4eeb0b={'count':0x0,'rows':[]};return db['FaxAccount'][_0x1eb2('0x66')]({'where':{'id':_0x563cb6[_0x1eb2('0x60')]['id']}})['then'](handleEntityNotFound(_0x24feb2,null))['then'](function(_0x5863da){if(_0x5863da){_0x367ade[_0x1eb2('0x40')]=_[_0x1eb2('0x41')](db[_0x1eb2('0x64')][_0x1eb2('0x3e')]);_0x367ade['query']=_[_0x1eb2('0x41')](_0x563cb6[_0x1eb2('0x42')]);_0x367ade[_0x1eb2('0x4b')]=_[_0x1eb2('0x43')](_0x367ade[_0x1eb2('0x40')],_0x367ade[_0x1eb2('0x42')]);_0x4b298d[_0x1eb2('0x44')]=_[_0x1eb2('0x43')](_0x367ade[_0x1eb2('0x40')],qs[_0x1eb2('0x45')](_0x563cb6[_0x1eb2('0x42')][_0x1eb2('0x45')]));_0x4b298d[_0x1eb2('0x44')]=_0x4b298d[_0x1eb2('0x44')]['length']?_0x4b298d['attributes']:_0x367ade[_0x1eb2('0x40')];if(!_0x563cb6[_0x1eb2('0x42')]['hasOwnProperty']('nolimit')){_0x4b298d[_0x1eb2('0x2c')]=qs[_0x1eb2('0x2c')](_0x563cb6[_0x1eb2('0x42')][_0x1eb2('0x2c')]);_0x4b298d[_0x1eb2('0x2a')]=qs[_0x1eb2('0x2a')](_0x563cb6[_0x1eb2('0x42')][_0x1eb2('0x2a')]);}_0x4b298d[_0x1eb2('0x48')]=qs[_0x1eb2('0x49')](_0x563cb6['query'][_0x1eb2('0x49')]);_0x4b298d['where']=qs[_0x1eb2('0x4b')](_[_0x1eb2('0x4c')](_0x563cb6[_0x1eb2('0x42')],_0x367ade[_0x1eb2('0x4b')]));_0x4b298d[_0x1eb2('0x4a')][_0x1eb2('0x63')]=_0x5863da['id'];if(_0x563cb6[_0x1eb2('0x42')][_0x1eb2('0x4d')]){_0x4b298d[_0x1eb2('0x4a')]=_[_0x1eb2('0x4e')](_0x4b298d['where'],{'$or':_['map'](_0x4b298d[_0x1eb2('0x44')],function(_0x431b20){var _0x2b5696={};_0x2b5696[_0x431b20]={'$like':'%'+_0x563cb6['query']['filter']+'%'};return _0x2b5696;})});}_0x4b298d=_[_0x1eb2('0x4e')]({},_0x4b298d,_0x563cb6[_0x1eb2('0x50')]);return db['Disposition'][_0x1eb2('0x2d')]({'where':_0x4b298d[_0x1eb2('0x4a')]})[_0x1eb2('0x32')](function(_0x1e05c6){_0x4eeb0b[_0x1eb2('0x2d')]=_0x1e05c6;if(_0x563cb6[_0x1eb2('0x42')][_0x1eb2('0x51')]){_0x4b298d[_0x1eb2('0x52')]=[{'all':!![]}];}return db['Disposition'][_0x1eb2('0x67')](_0x4b298d);})[_0x1eb2('0x32')](function(_0x4be8cc){_0x4eeb0b[_0x1eb2('0x53')]=_0x4be8cc;return _0x4eeb0b;});}})['then'](respondWithFilteredResult(_0x24feb2,_0x4b298d))[_0x1eb2('0x26')](handleError(_0x24feb2,null));};exports[_0x1eb2('0x68')]=function(_0x16c189,_0xc2476,_0x154bb5){return db['FaxAccount'][_0x1eb2('0x55')]({'where':{'id':_0x16c189['params']['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0xc2476,null))[_0x1eb2('0x32')](function(_0x19ffed){if(_0x19ffed){return _0x19ffed[_0x1eb2('0x68')](_0x16c189[_0x1eb2('0x42')][_0x1eb2('0x69')]);}})[_0x1eb2('0x32')](respondWithStatusCode(_0xc2476,null))[_0x1eb2('0x26')](handleError(_0xc2476,null));};exports[_0x1eb2('0x6a')]=function(_0x465efe,_0x567b2c,_0x21aa66){if(_0x465efe[_0x1eb2('0x57')]['id']){delete _0x465efe[_0x1eb2('0x57')]['id'];}return db[_0x1eb2('0x3d')][_0x1eb2('0x55')]({'where':{'id':_0x465efe['params']['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x567b2c,null))[_0x1eb2('0x32')](function(_0x45e1fc){if(_0x45e1fc){_0x465efe[_0x1eb2('0x57')][_0x1eb2('0x63')]=_0x45e1fc['id'];return db[_0x1eb2('0x6b')]['create'](_0x465efe[_0x1eb2('0x57')]);}})[_0x1eb2('0x32')](respondWithResult(_0x567b2c,null))['catch'](handleError(_0x567b2c,null));};exports[_0x1eb2('0x6c')]=function(_0x14b02a,_0xa8e6d9,_0x36bc3f){var _0x42c9ea={'raw':![],'where':{}};var _0x48ac6d={};var _0x326157={'count':0x0,'rows':[]};return db[_0x1eb2('0x3d')][_0x1eb2('0x66')]({'where':{'id':_0x14b02a[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0xa8e6d9,null))[_0x1eb2('0x32')](function(_0x21325d){if(_0x21325d){_0x48ac6d['model']=_['keys'](db[_0x1eb2('0x6b')][_0x1eb2('0x3e')]);_0x48ac6d[_0x1eb2('0x42')]=_['keys'](_0x14b02a['query']);_0x48ac6d[_0x1eb2('0x4b')]=_[_0x1eb2('0x43')](_0x48ac6d[_0x1eb2('0x40')],_0x48ac6d[_0x1eb2('0x42')]);_0x42c9ea[_0x1eb2('0x44')]=_['intersection'](_0x48ac6d[_0x1eb2('0x40')],qs[_0x1eb2('0x45')](_0x14b02a[_0x1eb2('0x42')]['fields']));_0x42c9ea[_0x1eb2('0x44')]=_0x42c9ea[_0x1eb2('0x44')][_0x1eb2('0x46')]?_0x42c9ea[_0x1eb2('0x44')]:_0x48ac6d[_0x1eb2('0x40')];if(!_0x14b02a[_0x1eb2('0x42')][_0x1eb2('0x47')](_0x1eb2('0x6d'))){_0x42c9ea['limit']=qs[_0x1eb2('0x2c')](_0x14b02a[_0x1eb2('0x42')][_0x1eb2('0x2c')]);_0x42c9ea[_0x1eb2('0x2a')]=qs[_0x1eb2('0x2a')](_0x14b02a[_0x1eb2('0x42')][_0x1eb2('0x2a')]);}_0x42c9ea[_0x1eb2('0x48')]=qs['sort'](_0x14b02a['query']['sort']);_0x42c9ea[_0x1eb2('0x4a')]=qs[_0x1eb2('0x4b')](_[_0x1eb2('0x4c')](_0x14b02a[_0x1eb2('0x42')],_0x48ac6d['filters']));_0x42c9ea[_0x1eb2('0x4a')][_0x1eb2('0x63')]=_0x21325d['id'];if(_0x14b02a[_0x1eb2('0x42')]['filter']){_0x42c9ea[_0x1eb2('0x4a')]=_['merge'](_0x42c9ea[_0x1eb2('0x4a')],{'$or':_[_0x1eb2('0x3c')](_0x42c9ea[_0x1eb2('0x44')],function(_0x59711f){var _0xe2912f={};_0xe2912f[_0x59711f]={'$like':'%'+_0x14b02a[_0x1eb2('0x42')]['filter']+'%'};return _0xe2912f;})});}_0x42c9ea=_[_0x1eb2('0x4e')]({},_0x42c9ea,_0x14b02a[_0x1eb2('0x50')]);return db[_0x1eb2('0x6b')]['count']({'where':_0x42c9ea['where']})[_0x1eb2('0x32')](function(_0x4363e5){_0x326157[_0x1eb2('0x2d')]=_0x4363e5;if(_0x14b02a[_0x1eb2('0x42')][_0x1eb2('0x51')]){_0x42c9ea[_0x1eb2('0x52')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x42c9ea);})[_0x1eb2('0x32')](function(_0x5017c8){_0x326157[_0x1eb2('0x53')]=_0x5017c8;return _0x326157;});}})[_0x1eb2('0x32')](respondWithFilteredResult(_0xa8e6d9,_0x42c9ea))[_0x1eb2('0x26')](handleError(_0xa8e6d9,null));};exports['removeAnswers']=function(_0x371db3,_0x45e5f8,_0xb11148){return db['FaxAccount'][_0x1eb2('0x55')]({'where':{'id':_0x371db3[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x45e5f8,null))[_0x1eb2('0x32')](function(_0x39b5c5){if(_0x39b5c5){return _0x39b5c5[_0x1eb2('0x6e')](_0x371db3[_0x1eb2('0x42')][_0x1eb2('0x69')]);}})[_0x1eb2('0x32')](respondWithStatusCode(_0x45e5f8,null))[_0x1eb2('0x26')](handleError(_0x45e5f8,null));};exports['addInteraction']=function(_0x3f1acb,_0x424bbe,_0x31ba45){return db['FaxInteraction'][_0x1eb2('0x55')]({'where':{'id':_0x3f1acb[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x424bbe,null))[_0x1eb2('0x32')](function(_0x82f4b9){if(_0x82f4b9){return _0x82f4b9[_0x1eb2('0x6f')](_0x3f1acb['body'][_0x1eb2('0x69')],_[_0x1eb2('0x70')](_0x3f1acb[_0x1eb2('0x57')],['ids','id'])||{});}})['then'](respondWithResult(_0x424bbe,null))[_0x1eb2('0x26')](handleError(_0x424bbe,null));};exports[_0x1eb2('0x71')]=function(_0x43e2ac,_0x107982,_0x3f6d06){var _0x2e17b5={'raw':![],'where':{}};var _0x33e4ba={};var _0xcd4f05={'count':0x0,'rows':[]};return db[_0x1eb2('0x3d')][_0x1eb2('0x66')]({'where':{'id':_0x43e2ac[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x107982,null))[_0x1eb2('0x32')](function(_0x4b8308){if(_0x4b8308){_0x33e4ba[_0x1eb2('0x40')]=_[_0x1eb2('0x41')](db['FaxInteraction'][_0x1eb2('0x3e')]);_0x33e4ba[_0x1eb2('0x42')]=_['keys'](_0x43e2ac[_0x1eb2('0x42')]);_0x33e4ba[_0x1eb2('0x4b')]=_['intersection'](_0x33e4ba[_0x1eb2('0x40')],_0x33e4ba[_0x1eb2('0x42')]);_0x2e17b5['attributes']=_[_0x1eb2('0x43')](_0x33e4ba[_0x1eb2('0x40')],qs[_0x1eb2('0x45')](_0x43e2ac[_0x1eb2('0x42')][_0x1eb2('0x45')]));_0x2e17b5['attributes']=_0x2e17b5[_0x1eb2('0x44')][_0x1eb2('0x46')]?_0x2e17b5['attributes']:_0x33e4ba['model'];if(!_0x43e2ac['query'][_0x1eb2('0x47')](_0x1eb2('0x6d'))){_0x2e17b5[_0x1eb2('0x2c')]=qs[_0x1eb2('0x2c')](_0x43e2ac[_0x1eb2('0x42')][_0x1eb2('0x2c')]);_0x2e17b5[_0x1eb2('0x2a')]=qs[_0x1eb2('0x2a')](_0x43e2ac[_0x1eb2('0x42')][_0x1eb2('0x2a')]);}_0x2e17b5[_0x1eb2('0x48')]=qs[_0x1eb2('0x49')](_0x43e2ac[_0x1eb2('0x42')]['sort']);_0x2e17b5[_0x1eb2('0x4a')]=qs[_0x1eb2('0x4b')](_[_0x1eb2('0x4c')](_0x43e2ac[_0x1eb2('0x42')],_0x33e4ba[_0x1eb2('0x4b')]));_0x2e17b5[_0x1eb2('0x4a')][_0x1eb2('0x63')]=_0x4b8308['id'];if(_0x43e2ac[_0x1eb2('0x42')]['filter']){_0x2e17b5[_0x1eb2('0x4a')]=_[_0x1eb2('0x4e')](_0x2e17b5[_0x1eb2('0x4a')],{'$or':_[_0x1eb2('0x3c')](_0x2e17b5[_0x1eb2('0x44')],function(_0x23b054){var _0x6680b3={};_0x6680b3[_0x23b054]={'$like':'%'+_0x43e2ac['query'][_0x1eb2('0x4d')]+'%'};return _0x6680b3;})});}_0x2e17b5=_['merge']({},_0x2e17b5,_0x43e2ac[_0x1eb2('0x50')]);return db[_0x1eb2('0x72')][_0x1eb2('0x2d')]({'where':_0x2e17b5[_0x1eb2('0x4a')]})['then'](function(_0x4094d4){_0xcd4f05[_0x1eb2('0x2d')]=_0x4094d4;if(_0x43e2ac[_0x1eb2('0x42')][_0x1eb2('0x51')]){_0x2e17b5[_0x1eb2('0x52')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x1eb2('0x73')],'as':_0x1eb2('0x74'),'attributes':[_0x1eb2('0x37'),_0x1eb2('0x75'),_0x1eb2('0x76')],'required':![]},{'model':db['Tag'],'as':_0x1eb2('0x77'),'attributes':['id',_0x1eb2('0x37'),_0x1eb2('0x78')],'where':_0x43e2ac[_0x1eb2('0x42')][_0x1eb2('0x79')]?{'id':_0x43e2ac[_0x1eb2('0x42')][_0x1eb2('0x79')]}:undefined,'required':_0x43e2ac[_0x1eb2('0x42')][_0x1eb2('0x79')]?!![]:![]}];}return db['FaxInteraction'][_0x1eb2('0x67')](_0x2e17b5);})['then'](function(_0x45c0a7){_0xcd4f05['rows']=_0x45c0a7;return _0xcd4f05;});}})[_0x1eb2('0x32')](respondWithFilteredResult(_0x107982,_0x2e17b5))[_0x1eb2('0x26')](handleError(_0x107982,null));};exports[_0x1eb2('0x7a')]=function(_0x4f6f6b,_0x988724){var _0x13ca35=_0x4f6f6b[_0x1eb2('0x60')]['id'];var _0x1721e8=_0x4f6f6b[_0x1eb2('0x57')];var _0x5e9408=0xc8;var _0x5e3ce0=null;return db[_0x1eb2('0x7b')][_0x1eb2('0x7c')]({'isolationLevel':db[_0x1eb2('0x7b')][_0x1eb2('0x7d')][_0x1eb2('0x7e')][_0x1eb2('0x7f')]},function(_0x4a748a){return db[_0x1eb2('0x3d')][_0x1eb2('0x66')]({'where':{'id':_0x13ca35},'transaction':_0x4a748a})[_0x1eb2('0x32')](function(_0x2026e3){if(_0x2026e3){return db[_0x1eb2('0x80')][_0x1eb2('0x35')]({'where':{'FaxAccountId':_0x13ca35},'transaction':_0x4a748a})[_0x1eb2('0x32')](function(){var _0x7ff4cc=_[_0x1eb2('0x3c')](_0x1721e8,function(_0x54d2b0){_0x54d2b0[_0x1eb2('0x63')]=_0x13ca35;return _0x54d2b0;});return db[_0x1eb2('0x80')]['bulkCreate'](_0x7ff4cc,{'transaction':_0x4a748a});});}else{_0x5e9408=0x194;_0x5e3ce0=[];}});})[_0x1eb2('0x32')](function(){if(_0x5e9408!==0x194){return db[_0x1eb2('0x80')]['findAndCountAll']({'where':{'FaxAccountId':_0x13ca35},'order':_0x1eb2('0x81')})[_0x1eb2('0x32')](function(_0x528f76){_0x5e3ce0=_0x528f76;});}})[_0x1eb2('0x26')](function(_0xcd563b){_0x5e9408=0x1f4;logger[_0x1eb2('0x23')](_0xcd563b[_0x1eb2('0x36')]);if(_0xcd563b[_0x1eb2('0x37')]){delete _0xcd563b[_0x1eb2('0x37')];}_0x5e3ce0=_0xcd563b;})['finally'](function(){if(_0x5e3ce0===null){_0x988724['sendStatus'](_0x5e9408);}else{if(_0x5e9408===0x1f4){_0x988724[_0x1eb2('0x28')](_0x5e9408)['send'](_0x5e3ce0);}else{_0x988724[_0x1eb2('0x28')](_0x5e9408)[_0x1eb2('0x82')](_0x5e3ce0);}}});};exports[_0x1eb2('0x83')]=function(_0xc08ec5,_0x5962a1,_0x252edf){var _0x2b1c00={};var _0x40c2dd={};var _0x46e389;var _0x261fd3;return db[_0x1eb2('0x3d')][_0x1eb2('0x66')]({'where':{'id':_0xc08ec5[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x5962a1,null))[_0x1eb2('0x32')](function(_0xff941b){if(_0xff941b){_0x46e389=_0xff941b;_0x40c2dd[_0x1eb2('0x40')]=_['keys'](db[_0x1eb2('0x80')]['rawAttributes']);_0x40c2dd[_0x1eb2('0x42')]=_[_0x1eb2('0x41')](_0xc08ec5[_0x1eb2('0x42')]);_0x40c2dd['filters']=_['intersection'](_0x40c2dd[_0x1eb2('0x40')],_0x40c2dd[_0x1eb2('0x42')]);_0x2b1c00[_0x1eb2('0x44')]=_[_0x1eb2('0x43')](_0x40c2dd[_0x1eb2('0x40')],qs[_0x1eb2('0x45')](_0xc08ec5[_0x1eb2('0x42')][_0x1eb2('0x45')]));_0x2b1c00[_0x1eb2('0x44')]=_0x2b1c00['attributes']['length']?_0x2b1c00[_0x1eb2('0x44')]:_0x40c2dd['model'];_0x2b1c00['order']=qs[_0x1eb2('0x49')](_0xc08ec5[_0x1eb2('0x42')][_0x1eb2('0x49')]);_0x2b1c00['where']=qs[_0x1eb2('0x4b')](_[_0x1eb2('0x4c')](_0xc08ec5[_0x1eb2('0x42')],_0x40c2dd[_0x1eb2('0x4b')]));if(_0xc08ec5[_0x1eb2('0x42')][_0x1eb2('0x4d')]){_0x2b1c00[_0x1eb2('0x4a')]=_[_0x1eb2('0x4e')](_0x2b1c00[_0x1eb2('0x4a')],{'$or':_[_0x1eb2('0x3c')](_0x2b1c00['attributes'],function(_0x55a9a3){var _0x2a6e95={};_0x2a6e95[_0x55a9a3]={'$like':'%'+_0xc08ec5[_0x1eb2('0x42')][_0x1eb2('0x4d')]+'%'};return _0x2a6e95;})});}_0x2b1c00=_[_0x1eb2('0x4e')]({},_0x2b1c00,_0xc08ec5[_0x1eb2('0x50')]);return _0x46e389[_0x1eb2('0x83')](_0x2b1c00);}})[_0x1eb2('0x32')](function(_0x5cbac3){if(_0x5cbac3){_0x261fd3=_0x5cbac3[_0x1eb2('0x46')];if(!_0xc08ec5[_0x1eb2('0x42')][_0x1eb2('0x47')](_0x1eb2('0x6d'))){_0x2b1c00[_0x1eb2('0x2c')]=qs[_0x1eb2('0x2c')](_0xc08ec5['query'][_0x1eb2('0x2c')]);_0x2b1c00[_0x1eb2('0x2a')]=qs[_0x1eb2('0x2a')](_0xc08ec5[_0x1eb2('0x42')][_0x1eb2('0x2a')]);}return _0x46e389[_0x1eb2('0x83')](_0x2b1c00);}})[_0x1eb2('0x32')](function(_0x5333a5){if(_0x5333a5){return _0x5333a5?{'count':_0x261fd3,'rows':_0x5333a5}:null;}})['then'](respondWithResult(_0x5962a1,null))['catch'](handleError(_0x5962a1,null));};function Extension(_0x4a4248,_0x43dd2d,_0x3e2a4b,_0x2f0c89){this[_0x1eb2('0x84')]=_0x1eb2('0x85');this['exten']=_0x4a4248['localstationid'];this[_0x1eb2('0x86')]=_0x2f0c89;this[_0x1eb2('0x3f')]='system';this[_0x1eb2('0x87')]=_0x1eb2('0x88');this[_0x1eb2('0x63')]=_0x4a4248['id'];this[_0x1eb2('0x81')]=_0x43dd2d;this[_0x1eb2('0x89')]=_0x3e2a4b;}function createExtensionsReciveFax(_0x4f4475){var _0x57a8d4=0x1;var _0x3d9786=[];_0x3d9786[_0x1eb2('0x8a')](new Extension(_0x4f4475,_0x57a8d4,'','Answer'));_0x57a8d4+=0x1;_0x3d9786[_0x1eb2('0x8a')](new Extension(_0x4f4475,_0x57a8d4,_0x1eb2('0x8b'),_0x1eb2('0x8c')));_0x57a8d4+=0x1;for(var _0x3d8a3e in _0x4f4475){if(_0x4f4475[_0x1eb2('0x47')](_0x3d8a3e)&&(_0x3d8a3e==='ecm'||_0x3d8a3e===_0x1eb2('0x8d')||_0x3d8a3e===_0x1eb2('0x8e')||_0x3d8a3e==='faxdetect'||_0x3d8a3e==='headerinfo'||_0x3d8a3e==='maxrate'||_0x3d8a3e==='minrate'||_0x3d8a3e===_0x1eb2('0x8f')||_0x3d8a3e===_0x1eb2('0x90'))){_0x3d9786[_0x1eb2('0x8a')](new Extension(_0x4f4475,_0x57a8d4,_0x1eb2('0x91')+_0x3d8a3e+')='+_0x4f4475[_0x3d8a3e],_0x1eb2('0x8c')));_0x57a8d4+=0x1;}}_0x3d9786[_0x1eb2('0x8a')](new Extension(_0x4f4475,_0x57a8d4,'6','Wait'));_0x57a8d4+=0x1;_0x3d9786['push'](new Extension(_0x4f4475,_0x57a8d4,'/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',_0x1eb2('0x92')));_0x57a8d4=0x0;return _0x3d9786;}exports[_0x1eb2('0x93')]=function(_0x511407,_0x3622f8,_0x5bc551){var _0x2c0b30;return db['sequelize'][_0x1eb2('0x7c')](function(_0x428e04){return db[_0x1eb2('0x3d')][_0x1eb2('0x56')](_0x511407['body'],{'transaction':_0x428e04})[_0x1eb2('0x32')](function(_0x51e868){_0x2c0b30=_0x51e868[_0x1eb2('0x33')]({'plain':!![]});return db['VoiceExtension'][_0x1eb2('0x94')](createExtensionsReciveFax(_0x2c0b30),{'transaction':_0x428e04});});})[_0x1eb2('0x32')](function(){return _0x2c0b30;})[_0x1eb2('0x32')](respondWithResult(_0x3622f8,null))['catch'](handleError(_0x3622f8,null));};exports[_0x1eb2('0x95')]=function(_0x29a842,_0x4594e7,_0x25faaa){var _0x981c83;return db[_0x1eb2('0x7b')][_0x1eb2('0x7c')](function(_0x178480){return db[_0x1eb2('0x3d')][_0x1eb2('0x31')](_0x29a842[_0x1eb2('0x57')],{'where':{'id':_0x29a842[_0x1eb2('0x57')]['id']},'transaction':_0x178480})[_0x1eb2('0x32')](function(_0x59012f){return db[_0x1eb2('0x96')][_0x1eb2('0x35')]({'where':{'FaxAccountId':_0x29a842['body']['id']},'transaction':_0x178480})[_0x1eb2('0x32')](function(_0x32a279){return db['VoiceExtension']['bulkCreate'](createExtensionsReciveFax(_[_0x1eb2('0x70')](_0x29a842[_0x1eb2('0x57')],[_0x1eb2('0x97'),_0x1eb2('0x98'),_0x1eb2('0x99'),_0x1eb2('0x9a'),_0x1eb2('0x9b'),_0x1eb2('0x9c')])),{'transaction':_0x178480});});});})[_0x1eb2('0x32')](function(){return db[_0x1eb2('0x3d')][_0x1eb2('0x9d')](_0x29a842[_0x1eb2('0x57')]['id']);})['then'](respondWithResult(_0x4594e7,null))[_0x1eb2('0x26')](handleError(_0x4594e7,null));};exports['getMessages']=function(_0x19631a,_0x27fead,_0x3030bd){var _0x2cc494={'raw':!![],'where':{}};var _0x8bb3f={};var _0x3201f9={'count':0x0,'rows':[]};return db[_0x1eb2('0x3d')][_0x1eb2('0x66')]({'where':{'id':_0x19631a[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x27fead,null))[_0x1eb2('0x32')](function(_0x5de0b2){if(_0x5de0b2){_0x8bb3f[_0x1eb2('0x40')]=_['keys'](db[_0x1eb2('0x9e')]['rawAttributes']);_0x8bb3f['query']=_[_0x1eb2('0x41')](_0x19631a[_0x1eb2('0x42')]);_0x8bb3f[_0x1eb2('0x4b')]=_[_0x1eb2('0x43')](_0x8bb3f['model'],_0x8bb3f[_0x1eb2('0x42')]);_0x2cc494[_0x1eb2('0x44')]=_[_0x1eb2('0x43')](_0x8bb3f[_0x1eb2('0x40')],qs[_0x1eb2('0x45')](_0x19631a[_0x1eb2('0x42')][_0x1eb2('0x45')]));_0x2cc494[_0x1eb2('0x44')]=_0x2cc494[_0x1eb2('0x44')][_0x1eb2('0x46')]?_0x2cc494[_0x1eb2('0x44')]:_0x8bb3f[_0x1eb2('0x40')];if(!_0x19631a[_0x1eb2('0x42')][_0x1eb2('0x47')](_0x1eb2('0x6d'))){_0x2cc494[_0x1eb2('0x2c')]=qs[_0x1eb2('0x2c')](_0x19631a[_0x1eb2('0x42')][_0x1eb2('0x2c')]);_0x2cc494[_0x1eb2('0x2a')]=qs[_0x1eb2('0x2a')](_0x19631a[_0x1eb2('0x42')][_0x1eb2('0x2a')]);}_0x2cc494['order']=qs[_0x1eb2('0x49')](_0x19631a[_0x1eb2('0x42')]['sort']);_0x2cc494[_0x1eb2('0x4a')]=qs[_0x1eb2('0x4b')](_[_0x1eb2('0x4c')](_0x19631a['query'],_0x8bb3f[_0x1eb2('0x4b')]));_0x2cc494['where'][_0x1eb2('0x63')]=_0x5de0b2['id'];if(_0x19631a[_0x1eb2('0x42')]['filter']){_0x2cc494[_0x1eb2('0x4a')]=_[_0x1eb2('0x4e')](_0x2cc494[_0x1eb2('0x4a')],{'$or':_[_0x1eb2('0x3c')](_0x2cc494[_0x1eb2('0x44')],function(_0x4e7a05){var _0x5ca6f8={};_0x5ca6f8[_0x4e7a05]={'$like':'%'+_0x19631a[_0x1eb2('0x42')][_0x1eb2('0x4d')]+'%'};return _0x5ca6f8;})});}if(_0x19631a[_0x1eb2('0x42')]['$gte']){var _0x4f0b7d=_0x19631a[_0x1eb2('0x42')]['$gte'][_0x1eb2('0x9f')](',');var _0x551c7d={};_0x551c7d[_0x4f0b7d[0x0]]={'$gte':moment(_0x4f0b7d[0x1])[_0x1eb2('0xa0')]('YYYY-MM-DD\x20HH:mm:ss')};_0x2cc494[_0x1eb2('0x4a')]=_[_0x1eb2('0x4e')](_0x2cc494[_0x1eb2('0x4a')],_0x551c7d);}_0x2cc494=_['merge']({},_0x2cc494,_0x19631a[_0x1eb2('0x50')]);return db[_0x1eb2('0x9e')][_0x1eb2('0x2d')]({'where':_0x2cc494[_0x1eb2('0x4a')]})[_0x1eb2('0x32')](function(_0xe18d52){_0x3201f9[_0x1eb2('0x2d')]=_0xe18d52;if(_0x19631a[_0x1eb2('0x42')][_0x1eb2('0x51')]){_0x2cc494[_0x1eb2('0x52')]=[{'all':!![]}];}return db[_0x1eb2('0x9e')][_0x1eb2('0x67')](_0x2cc494);})['then'](function(_0x35a0d4){_0x3201f9[_0x1eb2('0x53')]=_0x35a0d4;return _0x3201f9;});}})[_0x1eb2('0x32')](respondWithFilteredResult(_0x27fead,_0x2cc494))[_0x1eb2('0x26')](handleError(_0x27fead,null));};exports[_0x1eb2('0x38')]=function(_0x22ea1d,_0x58946d,_0x4afe12){var _0x206111,_0x449398={},_0x1053dd;if(_0x22ea1d['body']['to']){_0x1053dd=_0x22ea1d['body']['to'][0x0];}return db['FaxAccount'][_0x1eb2('0x55')]({'where':{'id':_0x22ea1d[_0x1eb2('0x60')]['id']},'include':[{'model':db['CmList'],'as':_0x1eb2('0xa1'),'include':[{'model':db[_0x1eb2('0xa2')],'as':_0x1eb2('0xa3'),'where':{'fax':_0x1053dd},'limit':0x1,'order':[[_0x1eb2('0x9a'),_0x1eb2('0xa4')]]}]}]})[_0x1eb2('0x32')](handleEntityNotFound(_0x58946d,null))[_0x1eb2('0x32')](function(_0x382df4){_0x206111=_0x382df4;if(_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')]&&_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][_0x1eb2('0x46')]){for(var _0x1f9d1d=0x0;_0x1f9d1d<_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')]['length'];_0x1f9d1d+=0x1){_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][_0x1f9d1d]={'filename':_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][_0x1f9d1d]['name'],'id':_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][_0x1f9d1d]['id'],'path':path['join'](config[_0x1eb2('0xa6')],_0x1eb2('0xa7'),_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][_0x1f9d1d][_0x1eb2('0xa8')])};}}return respondWithRpcPromise(_0x1eb2('0xa9'),_0x1eb2('0xa9'),{'FaxAccountId':_['isNil'](_0x22ea1d[_0x1eb2('0x60')]['id'])?undefined:_0x22ea1d['params']['id'],'path':_[_0x1eb2('0xaa')](_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][0x0]['path'])?undefined:_0x22ea1d['body'][_0x1eb2('0xa5')][0x0]['path'],'fax':_[_0x1eb2('0xaa')](_0x22ea1d[_0x1eb2('0x57')]['to'][0x0])?undefined:_0x22ea1d[_0x1eb2('0x57')]['to'][0x0]},client9002);})[_0x1eb2('0x32')](function(){if(_0x206111){if(_[_0x1eb2('0xaa')](_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xab')])){_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xab')]=util[_0x1eb2('0xa0')](_0x1eb2('0xac'),_0x206111[_0x1eb2('0x37')],_0x206111[_0x1eb2('0xad')]);}if(_0x206111['List']){if(_0x206111[_0x1eb2('0xa1')][_0x1eb2('0xa3')][_0x1eb2('0x46')]){return _0x206111[_0x1eb2('0xa1')][_0x1eb2('0xa3')][0x0];}else{return db[_0x1eb2('0xa2')]['create'](_[_0x1eb2('0x19')](_0x22ea1d[_0x1eb2('0x57')],{'firstName':_0x22ea1d[_0x1eb2('0x57')]['to'][0x0],'phone':_0x22ea1d[_0x1eb2('0x57')]['to'][0x0],'fax':_0x22ea1d[_0x1eb2('0x57')]['to'][0x0],'ListId':_0x206111['ListId']}));}}else{throw new Error(_0x1eb2('0xae'));}}else{throw new Error(_0x1eb2('0xaf'));}})[_0x1eb2('0x32')](function(_0x217831){if(_0x217831){return db[_0x1eb2('0x72')][_0x1eb2('0x55')]({'where':{'ContactId':_0x217831['id'],'closed':![],'FaxAccountId':_0x206111['id']}})['then'](function(_0xb4ca1e){if(_0xb4ca1e){return[_0xb4ca1e,![]];}return db[_0x1eb2('0x72')][_0x1eb2('0x56')]({'UserId':_0x22ea1d[_0x1eb2('0x58')]['id'],'ContactId':_0x217831['id'],'FaxAccountId':_0x206111['id'],'fax':_0x22ea1d[_0x1eb2('0x57')]['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0x1eb2('0x4e')](_0x22ea1d[_0x1eb2('0x57')],{'read':![],'body':_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][0x0]['filename'],'FaxAccountId':_0x206111['id'],'UserId':_0x22ea1d[_0x1eb2('0x58')]['id'],'ContactId':_0x217831['id'],'AttachmentId':_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0x1eb2('0xb0')}]})[_0x1eb2('0x32')](function(_0x3d093b){return[_0x3d093b,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x1eb2('0xb1')](function(_0x474164,_0x323deb){if(_0x323deb){return _0x474164;}return db[_0x1eb2('0x9e')][_0x1eb2('0x56')]({'direction':_0x1eb2('0xb2'),'read':![],'body':_0x22ea1d['body'][_0x1eb2('0xa5')][0x0][_0x1eb2('0xb3')],'FaxAccountId':_0x206111['id'],'FaxInteractionId':_0x474164['id'],'UserId':_0x22ea1d[_0x1eb2('0x58')]['id'],'ContactId':_0x474164['ContactId'],'AttachmentId':_0x22ea1d[_0x1eb2('0x57')][_0x1eb2('0xa5')][0x0]['id']})['then'](function(_0x5fdbfc){_0x474164[_0x1eb2('0xb4')]['Messages']=[];_0x474164[_0x1eb2('0xb4')][_0x1eb2('0xb0')][_0x1eb2('0x8a')](_0x5fdbfc[_0x1eb2('0xb4')]);return _0x474164;});})[_0x1eb2('0x32')](function(_0x1a071f){respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x1eb2('0xaa')](_0x22ea1d['params']['id'])?undefined:_0x22ea1d[_0x1eb2('0x60')]['id'],'path':_['isNil'](_0x22ea1d[_0x1eb2('0x57')]['attachments'][0x0][_0x1eb2('0xb5')])?undefined:_0x22ea1d[_0x1eb2('0x57')]['attachments'][0x0]['path'],'fax':_['isNil'](_0x22ea1d['body']['to'][0x0])?undefined:_0x22ea1d['body']['to'][0x0],'AttachmentId':_0x22ea1d[_0x1eb2('0x57')]['attachments'][0x0]['id']},client9002)['then'](function(_0x5288d8){logger['info'](_0x1eb2('0xb6'),_0x5288d8);})[_0x1eb2('0x26')](function(_0x5ecb6f){logger[_0x1eb2('0x1e')](_0x1eb2('0xb6'),_0x5ecb6f);});return _0x1a071f;})[_0x1eb2('0x32')](respondWithResult(_0x58946d,null))['catch'](handleError(_0x58946d,null));};exports[_0x1eb2('0xb7')]=function(_0x941de2,_0x575ed0,_0x436f55){return db[_0x1eb2('0x3d')]['find']({'where':{'id':_0x941de2[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x575ed0,null))[_0x1eb2('0x32')](function(_0x3877a5){if(_0x3877a5){return _0x3877a5[_0x1eb2('0xb7')](_0x941de2[_0x1eb2('0x57')][_0x1eb2('0x69')],_[_0x1eb2('0x70')](_0x941de2['body'],[_0x1eb2('0x69'),'id'])||{})[_0x1eb2('0xb1')](function(_0x15b839){for(var _0x201eac=0x0;_0x201eac<_0x941de2['body'][_0x1eb2('0x69')][_0x1eb2('0x46')];_0x201eac+=0x1){socket[_0x1eb2('0xb8')]('userFaxAccount:save',{'UserId':Number(_0x941de2[_0x1eb2('0x57')][_0x1eb2('0x69')][_0x201eac]),'FaxAccountId':Number(_0x941de2[_0x1eb2('0x60')]['id'])});}return _0x15b839;});}})['then'](respondWithResult(_0x575ed0,null))['catch'](handleError(_0x575ed0,null));};exports['removeAgents']=function(_0x12f49c,_0x5c754e,_0x499176){return db[_0x1eb2('0x3d')][_0x1eb2('0x55')]({'where':{'id':_0x12f49c[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x5c754e,null))[_0x1eb2('0x32')](function(_0x4e7cf4){if(_0x4e7cf4){return _0x4e7cf4[_0x1eb2('0xb9')](_0x12f49c[_0x1eb2('0x42')][_0x1eb2('0x69')])[_0x1eb2('0x32')](function(){if(_[_0x1eb2('0xba')](_0x12f49c[_0x1eb2('0x42')]['ids'])){for(var _0x1b2217=0x0;_0x1b2217<_0x12f49c['query'][_0x1eb2('0x69')][_0x1eb2('0x46')];_0x1b2217+=0x1){socket[_0x1eb2('0xb8')]('userFaxAccount:remove',{'UserId':Number(_0x12f49c['query'][_0x1eb2('0x69')][_0x1b2217]),'FaxAccountId':Number(_0x12f49c[_0x1eb2('0x60')]['id'])});}}else{socket[_0x1eb2('0xb8')]('userFaxAccount:remove',{'UserId':Number(_0x12f49c['query'][_0x1eb2('0x69')]),'FaxAccountId':Number(_0x12f49c[_0x1eb2('0x60')]['id'])});}});}})['then'](respondWithStatusCode(_0x5c754e,null))['catch'](handleError(_0x5c754e,null));};exports[_0x1eb2('0xbb')]=function(_0x4e8737,_0x5ceeea,_0x1a3181){var _0x24a4c5={};var _0x57015e={};var _0x2daf18;var _0x5c8a5e;return db['FaxAccount']['findOne']({'where':{'id':_0x4e8737[_0x1eb2('0x60')]['id']}})[_0x1eb2('0x32')](handleEntityNotFound(_0x5ceeea,null))[_0x1eb2('0x32')](function(_0x523f13){if(_0x523f13){_0x2daf18=_0x523f13;_0x57015e[_0x1eb2('0x40')]=_[_0x1eb2('0x41')](db[_0x1eb2('0x73')][_0x1eb2('0x3e')]);_0x57015e[_0x1eb2('0x42')]=_[_0x1eb2('0x41')](_0x4e8737[_0x1eb2('0x42')]);_0x57015e[_0x1eb2('0x4b')]=_['intersection'](_0x57015e[_0x1eb2('0x40')],_0x57015e['query']);_0x24a4c5[_0x1eb2('0x44')]=_[_0x1eb2('0x43')](_0x57015e[_0x1eb2('0x40')],qs['fields'](_0x4e8737['query'][_0x1eb2('0x45')]));_0x24a4c5['attributes']=_0x24a4c5[_0x1eb2('0x44')][_0x1eb2('0x46')]?_0x24a4c5[_0x1eb2('0x44')]:_0x57015e[_0x1eb2('0x40')];_0x24a4c5['order']=qs[_0x1eb2('0x49')](_0x4e8737[_0x1eb2('0x42')][_0x1eb2('0x49')]);_0x24a4c5['where']=qs[_0x1eb2('0x4b')](_['pick'](_0x4e8737['query'],_0x57015e[_0x1eb2('0x4b')]));if(_0x4e8737['query']['filter']){_0x24a4c5['where']=_[_0x1eb2('0x4e')](_0x24a4c5['where'],{'$or':_[_0x1eb2('0x3c')](_0x24a4c5[_0x1eb2('0x44')],function(_0x89c3bc){var _0x283f0b={};_0x283f0b[_0x89c3bc]={'$like':'%'+_0x4e8737['query'][_0x1eb2('0x4d')]+'%'};return _0x283f0b;})});}_0x24a4c5=_[_0x1eb2('0x4e')]({},_0x24a4c5,_0x4e8737[_0x1eb2('0x50')]);return _0x2daf18[_0x1eb2('0xbb')](_0x24a4c5);}})[_0x1eb2('0x32')](function(_0x1a3fb1){if(_0x1a3fb1){_0x5c8a5e=_0x1a3fb1[_0x1eb2('0x46')];if(!_0x4e8737['query'][_0x1eb2('0x47')](_0x1eb2('0x6d'))){_0x24a4c5[_0x1eb2('0x2c')]=qs['limit'](_0x4e8737['query']['limit']);_0x24a4c5[_0x1eb2('0x2a')]=qs['offset'](_0x4e8737[_0x1eb2('0x42')][_0x1eb2('0x2a')]);}return _0x2daf18[_0x1eb2('0xbb')](_0x24a4c5);}})['then'](function(_0x2b5c03){if(_0x2b5c03){return _0x2b5c03?{'count':_0x5c8a5e,'rows':_0x2b5c03}:null;}})[_0x1eb2('0x32')](respondWithResult(_0x5ceeea,null))[_0x1eb2('0x26')](handleError(_0x5ceeea,null));};
\ No newline at end of file
index aedf99d..0b48ea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7daf=['hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x1d7e02,_0xeaab2b){var _0x2ec457=function(_0xe61d4c){while(--_0xe61d4c){_0x1d7e02['push'](_0x1d7e02['shift']());}};_0x2ec457(++_0xeaab2b);}(_0x7daf,0x84));var _0xf7da=function(_0x168254,_0x106b69){_0x168254=_0x168254-0x0;var _0xcd209d=_0x7daf[_0x168254];return _0xcd209d;};'use strict';var EventEmitter=require(_0xf7da('0x0'));var FaxAccount=require(_0xf7da('0x1'))['db'][_0xf7da('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xf7da('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf7da('0x4'),'afterDestroy':_0xf7da('0x5')};function emitEvent(_0x44e713){return function(_0x422da9,_0x52283d,_0x1d8c2d){FaxAccountEvents[_0xf7da('0x6')](_0x44e713+':'+_0x422da9['id'],_0x422da9);FaxAccountEvents[_0xf7da('0x6')](_0x44e713,_0x422da9);_0x1d8c2d(null);};}for(var e in events){if(events[_0xf7da('0x7')](e)){var event=events[e];FaxAccount[_0xf7da('0x8')](e,emitEvent(event));}}module[_0xf7da('0x9')]=FaxAccountEvents;
\ No newline at end of file
+var _0xb313=['hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update','remove','emit'];(function(_0x492bf7,_0x14319d){var _0x448a9a=function(_0x1ffd77){while(--_0x1ffd77){_0x492bf7['push'](_0x492bf7['shift']());}};_0x448a9a(++_0x14319d);}(_0xb313,0x142));var _0x3b31=function(_0x35bb5c,_0x31f555){_0x35bb5c=_0x35bb5c-0x0;var _0x2e324a=_0xb313[_0x35bb5c];return _0x2e324a;};'use strict';var EventEmitter=require(_0x3b31('0x0'));var FaxAccount=require(_0x3b31('0x1'))['db'][_0x3b31('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x3b31('0x3')](0x0);var events={'afterCreate':_0x3b31('0x4'),'afterUpdate':_0x3b31('0x5'),'afterDestroy':_0x3b31('0x6')};function emitEvent(_0x49c4ab){return function(_0x56b907,_0x36a031,_0x5a366b){FaxAccountEvents[_0x3b31('0x7')](_0x49c4ab+':'+_0x56b907['id'],_0x56b907);FaxAccountEvents[_0x3b31('0x7')](_0x49c4ab,_0x56b907);_0x5a366b(null);};}for(var e in events){if(events[_0x3b31('0x8')](e)){var event=events[e];FaxAccount[_0x3b31('0x9')](e,emitEvent(event));}}module[_0x3b31('0xa')]=FaxAccountEvents;
\ No newline at end of file
index 76efa74..3dff671 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf36b=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./faxAccount.attributes','exports','FaxAccount','fax_accounts','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf36b,0x1eb));var _0xbf36=function(_0x32b674,_0x1d839d){_0x32b674=_0x32b674-0x0;var _0x5d3767=_0xf36b[_0x32b674];return _0x5d3767;};'use strict';var _=require(_0xbf36('0x0'));var util=require(_0xbf36('0x1'));var logger=require(_0xbf36('0x2'))(_0xbf36('0x3'));var moment=require(_0xbf36('0x4'));var BPromise=require(_0xbf36('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xbf36('0x6'));var config=require(_0xbf36('0x7'));var attributes=require(_0xbf36('0x8'));module[_0xbf36('0x9')]=function(_0x24518f,_0x587c39){return _0x24518f['define'](_0xbf36('0xa'),attributes,{'tableName':_0xbf36('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc49=['fax_accounts','util','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x21f00e,_0xb2ac62){var _0x55cd1a=function(_0x1fc7a4){while(--_0x1fc7a4){_0x21f00e['push'](_0x21f00e['shift']());}};_0x55cd1a(++_0xb2ac62);}(_0xbc49,0xc5));var _0x9bc4=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0xbc49[_0x22b68a];return _0x1ac67a;};'use strict';var _=require('lodash');var util=require(_0x9bc4('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x9bc4('0x1'));var BPromise=require(_0x9bc4('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9bc4('0x3'));var rimraf=require(_0x9bc4('0x4'));var config=require(_0x9bc4('0x5'));var attributes=require('./faxAccount.attributes');module['exports']=function(_0x1e8c57,_0x3217fc){return _0x1e8c57['define']('FaxAccount',attributes,{'tableName':_0x9bc4('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a0fe333..e1529c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e7c=['FaxAccount','findAll','options','attributes','limit','include','map','model','catch','NotifyFaxAccount','body','describe','Sequelize','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','ValidationError','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','CmContact','Contacts','Applications','get','account','applications','priority','asc','length','defaults','create','contact','fax','find','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','close','unmanaged','*,*,*,*','created','interaction','ContactId','UserId','name','unshift','agent','waitForTheAssignedAgent','queueId','FaxQueue','queue','Start','startRouting','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetFaxAccount'];(function(_0x4efdfd,_0x4a27df){var _0x2b413=function(_0x14a082){while(--_0x14a082){_0x4efdfd['push'](_0x4efdfd['shift']());}};_0x2b413(++_0x4a27df);}(_0x6e7c,0x9e));var _0xc6e7=function(_0x580dc9,_0x44819f){_0x580dc9=_0x580dc9-0x0;var _0x199170=_0x6e7c[_0x580dc9];return _0x199170;};'use strict';var _=require('lodash');var util=require(_0xc6e7('0x0'));var moment=require(_0xc6e7('0x1'));var BPromise=require(_0xc6e7('0x2'));var rs=require(_0xc6e7('0x3'));var fs=require('fs');var Redis=require(_0xc6e7('0x4'));var db=require(_0xc6e7('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc6e7('0x6'))(_0xc6e7('0x7'));var config=require('../../config/environment');var jayson=require(_0xc6e7('0x8'));var client=jayson[_0xc6e7('0x9')][_0xc6e7('0xa')]({'port':0x232c});config[_0xc6e7('0xb')]=_['defaults'](config[_0xc6e7('0xb')],{'host':_0xc6e7('0xc'),'port':0x18eb});var socket=require(_0xc6e7('0xd'))(new Redis(config['redis']));require(_0xc6e7('0xe'))[_0xc6e7('0xf')](socket);function respondWithRpcPromise(_0x1fa923,_0x5ae6d2,_0x5bca5c){return new BPromise(function(_0x1b8e50,_0x3bc7b5){return client[_0xc6e7('0x10')](_0x1fa923,_0x5bca5c)[_0xc6e7('0x11')](function(_0x41f0ce){logger[_0xc6e7('0x12')](_0xc6e7('0x13'),_0x5ae6d2,_0xc6e7('0x14'));logger[_0xc6e7('0x15')](_0xc6e7('0x16'),_0x5ae6d2,_0xc6e7('0x14'),JSON['stringify'](_0x41f0ce));if(_0x41f0ce['error']){if(_0x41f0ce[_0xc6e7('0x17')][_0xc6e7('0x18')]===0x1f4){logger['error'](_0xc6e7('0x13'),_0x5ae6d2,_0x41f0ce[_0xc6e7('0x17')][_0xc6e7('0x19')]);return _0x3bc7b5(_0x41f0ce[_0xc6e7('0x17')][_0xc6e7('0x19')]);}logger['error'](_0xc6e7('0x13'),_0x5ae6d2,_0x41f0ce[_0xc6e7('0x17')][_0xc6e7('0x19')]);return _0x1b8e50(_0x41f0ce[_0xc6e7('0x17')][_0xc6e7('0x19')]);}else{logger[_0xc6e7('0x12')](_0xc6e7('0x13'),_0x5ae6d2,'request\x20sent');_0x1b8e50(_0x41f0ce[_0xc6e7('0x1a')]['message']);}})['catch'](function(_0x4e26fd){logger[_0xc6e7('0x17')](_0xc6e7('0x13'),_0x5ae6d2,_0x4e26fd);_0x3bc7b5(_0x4e26fd);});});}exports[_0xc6e7('0x1b')]=function(_0x534d5e){var _0x1bae82=this;return new Promise(function(_0x39ebfa,_0x1cf0fa){return db[_0xc6e7('0x1c')][_0xc6e7('0x1d')]({'raw':_0x534d5e[_0xc6e7('0x1e')]?_0x534d5e[_0xc6e7('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x534d5e[_0xc6e7('0x1e')]?_0x534d5e[_0xc6e7('0x1e')]['where']||null:null,'attributes':_0x534d5e[_0xc6e7('0x1e')]?_0x534d5e[_0xc6e7('0x1e')][_0xc6e7('0x1f')]||null:null,'limit':_0x534d5e[_0xc6e7('0x1e')]?_0x534d5e[_0xc6e7('0x1e')][_0xc6e7('0x20')]||null:null,'include':_0x534d5e[_0xc6e7('0x1e')]?_0x534d5e[_0xc6e7('0x1e')][_0xc6e7('0x21')]?_[_0xc6e7('0x22')](_0x534d5e[_0xc6e7('0x1e')]['include'],function(_0xf6c695){return{'model':db[_0xf6c695[_0xc6e7('0x23')]],'as':_0xf6c695['as'],'attributes':_0xf6c695[_0xc6e7('0x1f')],'include':_0xf6c695[_0xc6e7('0x21')]?_[_0xc6e7('0x22')](_0xf6c695[_0xc6e7('0x21')],function(_0x25b87e){return{'model':db[_0x25b87e['model']],'as':_0x25b87e['as'],'attributes':_0x25b87e[_0xc6e7('0x1f')],'include':_0x25b87e['include']?_[_0xc6e7('0x22')](_0x25b87e['include'],function(_0x132a3a){return{'model':db[_0x132a3a[_0xc6e7('0x23')]],'as':_0x132a3a['as'],'attributes':_0x132a3a[_0xc6e7('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xc6e7('0x11')](function(_0x2dbb13){logger['info'](_0xc6e7('0x1b'),_0x534d5e);logger[_0xc6e7('0x15')](_0xc6e7('0x1b'),_0x534d5e,JSON['stringify'](_0x2dbb13));_0x39ebfa(_0x2dbb13);})[_0xc6e7('0x24')](function(_0x157066){logger[_0xc6e7('0x17')](_0xc6e7('0x1b'),_0x157066[_0xc6e7('0x19')],_0x534d5e);_0x1cf0fa(_0x1bae82[_0xc6e7('0x17')](0x1f4,_0x157066[_0xc6e7('0x19')]));});});};exports[_0xc6e7('0x25')]=function(_0x4c1db6,_0x1ea026,_0x52d652){var _0x3b5cb7=this;return new Promise(function(_0x37bf28,_0x5b9612){var _0x4198c8={'body':_0x4c1db6[_0xc6e7('0x26')],'channel':'fax'};var _0x3ee2e7=[];var _0x2dda13=[];var _0x227f0f={};return db['CmContact'][_0xc6e7('0x27')]()[_0xc6e7('0x11')](function(_0x31cef6){if(!_0x31cef6){throw new db[(_0xc6e7('0x28'))]['ValidationError'](_0xc6e7('0x29'));}_0x3ee2e7=_[_0xc6e7('0x2a')](_[_0xc6e7('0x2b')](_0x31cef6),[_0xc6e7('0x2c'),_0xc6e7('0x2d')]);_0x2dda13=_[_0xc6e7('0x2a')](_['keys'](_0x31cef6),['createdAt','updatedAt',_0xc6e7('0x2e'),_0xc6e7('0x2f')]);if(_0x4c1db6[_0xc6e7('0x26')]['id']){delete _0x4c1db6[_0xc6e7('0x26')]['id'];}if(_[_0xc6e7('0x30')](_0x4c1db6[_0xc6e7('0x26')]['from'])){throw new db[(_0xc6e7('0x28'))]['ValidationError'](_0xc6e7('0x31'));}if(_['isNil'](_0x4c1db6[_0xc6e7('0x26')][_0xc6e7('0x26')])||_0x4c1db6['body'][_0xc6e7('0x26')]===''){throw new db[(_0xc6e7('0x28'))][(_0xc6e7('0x32'))](_0xc6e7('0x33'));}if(_['isNil'](_0x4c1db6[_0xc6e7('0x26')][_0xc6e7('0x34')])){throw new db[(_0xc6e7('0x28'))]['ValidationError'](_0xc6e7('0x35')+_0x2dda13);}if(!_['includes'](_0x2dda13,_0x4c1db6[_0xc6e7('0x26')][_0xc6e7('0x34')])){throw new db[(_0xc6e7('0x28'))][(_0xc6e7('0x32'))](_0xc6e7('0x36')+_0x2dda13);}_0x227f0f[_0x4c1db6[_0xc6e7('0x26')][_0xc6e7('0x34')]]=_0x4c1db6['body'][_0xc6e7('0x37')];})['then'](function(){return db[_0xc6e7('0x1c')]['find']({'where':{'id':_0x4c1db6['account']['id']},'include':[{'model':db[_0xc6e7('0x38')],'as':_0xc6e7('0x39'),'include':[{'model':db[_0xc6e7('0x3a')],'as':_0xc6e7('0x3b'),'where':_0x227f0f,'limit':0x1,'order':[[_0xc6e7('0x2d'),'DESC']]}]},{'model':db['FaxApplication'],'as':_0xc6e7('0x3c')}]});})[_0xc6e7('0x11')](function(_0x18bcba){if(_0x18bcba&&_0x18bcba['List']){var _0x433d=_0x18bcba[_0xc6e7('0x3d')]({'plain':!![]});_0x4198c8[_0xc6e7('0x3e')]=_0x433d;_0x4198c8[_0xc6e7('0x3f')]=_0x433d['Applications'];_0x4198c8['list']=_0x433d['List'];_0x4198c8[_0xc6e7('0x3f')]=_['orderBy'](_0x4198c8['applications'],[_0xc6e7('0x40')],[_0xc6e7('0x41')]);if(_0x4198c8['account'][_0xc6e7('0x3c')]){delete _0x4198c8['account']['Applications'];}if(_0x4198c8[_0xc6e7('0x3e')][_0xc6e7('0x39')]&&_0x4198c8['account'][_0xc6e7('0x39')]['Contacts'][_0xc6e7('0x42')]){return _0x4198c8[_0xc6e7('0x3e')][_0xc6e7('0x39')][_0xc6e7('0x3b')][0x0];}var _0x1caff4=_[_0xc6e7('0x43')](_0x4c1db6[_0xc6e7('0x26')],{'firstName':_0x4c1db6[_0xc6e7('0x26')][_0xc6e7('0x37')],'ListId':_0x433d[_0xc6e7('0x2f')]});_0x1caff4[_0x4c1db6[_0xc6e7('0x26')][_0xc6e7('0x34')]]=_0x4c1db6[_0xc6e7('0x26')]['from'];return db[_0xc6e7('0x3a')][_0xc6e7('0x44')](_0x1caff4,{'fields':_0x3ee2e7,'raw':!![]});}})[_0xc6e7('0x11')](function(_0xd9ec3){_0x4198c8[_0xc6e7('0x45')]=_0xd9ec3;if(_0xd9ec3){var _0x2940fa={'ContactId':_0xd9ec3['id'],'FaxAccountId':_0x4c1db6[_0xc6e7('0x3e')]['id'],'fax':_0xd9ec3[_0xc6e7('0x46')]};return db['FaxInteraction'][_0xc6e7('0x47')]({'where':{'ContactId':_0xd9ec3['id'],'closed':![],'FaxAccountId':_0x4c1db6[_0xc6e7('0x3e')]['id']}})['then'](function(_0xee79e0){if(_0xee79e0){return[_0xee79e0,![]];}return db[_0xc6e7('0x48')][_0xc6e7('0x44')](_0x2940fa)[_0xc6e7('0x11')](function(_0x5cefa7){return[_0x5cefa7,!![]];});});}else{throw new Error(_0xc6e7('0x49'));}})[_0xc6e7('0x4a')](function(_0x1a6861,_0x1d560e){var _0x388200=_0x1a6861['get']({'plain':!![]});if(_0x1d560e){if(_0x4198c8[_0xc6e7('0x3e')][_0xc6e7('0x4b')]){_0x4198c8[_0xc6e7('0x3f')][_0xc6e7('0x4c')]({'id':0x0,'priority':_0x4198c8[_0xc6e7('0x3f')][_0xc6e7('0x42')]+0x1,'app':_0xc6e7('0x4d'),'appdata':_0xc6e7('0x4e'),'interval':_0xc6e7('0x4f')});}_0x388200[_0xc6e7('0x50')]=!![];}else{_0x388200[_0xc6e7('0x50')]=![];}_0x4198c8[_0xc6e7('0x51')]=_0x388200;return db['FaxMessage']['create']({'body':_0x4c1db6[_0xc6e7('0x26')][_0xc6e7('0x26')],'FaxAccountId':_0x4c1db6['account']['id'],'FaxInteractionId':_0x1a6861['id'],'direction':'in','ContactId':_0x1a6861[_0xc6e7('0x52')],'AttachmentId':_0x4c1db6[_0xc6e7('0x26')]['AttachmentId']});})[_0xc6e7('0x11')](function(_0x5bb787){_0x4198c8['message']=_0x5bb787;if(!_0x4198c8[_0xc6e7('0x51')][_0xc6e7('0x53')])return;return db['User']['find']({'attributes':['id',_0xc6e7('0x54')],'where':{'id':_0x4198c8['interaction'][_0xc6e7('0x53')]}});})[_0xc6e7('0x11')](function(_0x52a372){if(_0x52a372){_0x4198c8[_0xc6e7('0x3f')][_0xc6e7('0x55')]({'id':0x0,'priority':0x0,'app':_0xc6e7('0x56'),'appdata':_0x52a372[_0xc6e7('0x54')]+','+(_0x4198c8[_0xc6e7('0x3e')][_0xc6e7('0x57')]||0xa),'interval':'*,*,*,*'});}if(!_0x4198c8[_0xc6e7('0x51')][_0xc6e7('0x58')])return;return db[_0xc6e7('0x59')]['find']({'attributes':['id','name'],'where':{'id':_0x4198c8[_0xc6e7('0x51')]['queueId']}});})['then'](function(_0x1172e3){if(_0x1172e3){_0x4198c8['applications'][_0xc6e7('0x55')]({'id':0x0,'priority':0x1,'app':_0xc6e7('0x5a'),'appdata':_0x1172e3['name']+','+(_0x4198c8[_0xc6e7('0x3e')]['waitForTheAssignedQueue']||0x12c),'interval':_0xc6e7('0x4f')});}return respondWithRpcPromise(_0xc6e7('0x5b'),_0xc6e7('0x5c'),_0x4198c8);})[_0xc6e7('0x11')](function(_0xb737d9){_0x37bf28(_0xb737d9);})[_0xc6e7('0x24')](function(_0x4272d3){_0x5b9612(_0x3b5cb7[_0xc6e7('0x17')](0x1f4,_0x4272d3[_0xc6e7('0x19')]));});});};
\ No newline at end of file
+var _0xe723=['orderBy','Applications','create','contact','FaxInteraction','Contact\x20not\x20found','autoclose','push','length','close','unmanaged','created','FaxMessage','ContactId','AttachmentId','interaction','UserId','name','unshift','*,*,*,*','FaxQueue','queueId','queue','waitForTheAssignedQueue','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FaxAccount','findAll','options','where','map','include','attributes','then','GetFaxAccount','body','fax','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','updatedAt','createdAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','find','CmList','List','Contacts','DESC','get','account','list','applications'];(function(_0x50b3ca,_0x44d75a){var _0x1a02ff=function(_0x2cc77d){while(--_0x2cc77d){_0x50b3ca['push'](_0x50b3ca['shift']());}};_0x1a02ff(++_0x44d75a);}(_0xe723,0xd0));var _0x3e72=function(_0x1945a3,_0x578abd){_0x1945a3=_0x1945a3-0x0;var _0x218f60=_0xe723[_0x1945a3];return _0x218f60;};'use strict';var _=require(_0x3e72('0x0'));var util=require('util');var moment=require(_0x3e72('0x1'));var BPromise=require(_0x3e72('0x2'));var rs=require(_0x3e72('0x3'));var fs=require('fs');var Redis=require(_0x3e72('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3e72('0x5'))(_0x3e72('0x6'));var config=require(_0x3e72('0x7'));var jayson=require(_0x3e72('0x8'));var client=jayson[_0x3e72('0x9')][_0x3e72('0xa')]({'port':0x232c});config[_0x3e72('0xb')]=_[_0x3e72('0xc')](config['redis'],{'host':_0x3e72('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3e72('0xe'))[_0x3e72('0xf')](socket);function respondWithRpcPromise(_0x2d2c76,_0x44eaa5,_0x1ab501){return new BPromise(function(_0x2c48a4,_0x2583b0){return client[_0x3e72('0x10')](_0x2d2c76,_0x1ab501)['then'](function(_0x2c32e0){logger[_0x3e72('0x11')](_0x3e72('0x12'),_0x44eaa5,_0x3e72('0x13'));logger[_0x3e72('0x14')](_0x3e72('0x15'),_0x44eaa5,_0x3e72('0x13'),JSON[_0x3e72('0x16')](_0x2c32e0));if(_0x2c32e0[_0x3e72('0x17')]){if(_0x2c32e0[_0x3e72('0x17')][_0x3e72('0x18')]===0x1f4){logger[_0x3e72('0x17')](_0x3e72('0x12'),_0x44eaa5,_0x2c32e0[_0x3e72('0x17')][_0x3e72('0x19')]);return _0x2583b0(_0x2c32e0[_0x3e72('0x17')][_0x3e72('0x19')]);}logger[_0x3e72('0x17')]('FaxAccount,\x20%s,\x20%s',_0x44eaa5,_0x2c32e0['error'][_0x3e72('0x19')]);return _0x2c48a4(_0x2c32e0['error'][_0x3e72('0x19')]);}else{logger[_0x3e72('0x11')](_0x3e72('0x12'),_0x44eaa5,_0x3e72('0x13'));_0x2c48a4(_0x2c32e0[_0x3e72('0x1a')][_0x3e72('0x19')]);}})[_0x3e72('0x1b')](function(_0x54d53f){logger[_0x3e72('0x17')](_0x3e72('0x12'),_0x44eaa5,_0x54d53f);_0x2583b0(_0x54d53f);});});}exports['GetFaxAccount']=function(_0x635547){var _0x82ecf3=this;return new Promise(function(_0x521480,_0xeab2bd){return db[_0x3e72('0x1c')][_0x3e72('0x1d')]({'raw':_0x635547['options']?_0x635547['options']['raw']===undefined?!![]:![]:!![],'where':_0x635547[_0x3e72('0x1e')]?_0x635547[_0x3e72('0x1e')][_0x3e72('0x1f')]||null:null,'attributes':_0x635547[_0x3e72('0x1e')]?_0x635547[_0x3e72('0x1e')]['attributes']||null:null,'limit':_0x635547[_0x3e72('0x1e')]?_0x635547[_0x3e72('0x1e')]['limit']||null:null,'include':_0x635547[_0x3e72('0x1e')]?_0x635547[_0x3e72('0x1e')]['include']?_[_0x3e72('0x20')](_0x635547[_0x3e72('0x1e')][_0x3e72('0x21')],function(_0x5293f0){return{'model':db[_0x5293f0['model']],'as':_0x5293f0['as'],'attributes':_0x5293f0[_0x3e72('0x22')],'include':_0x5293f0[_0x3e72('0x21')]?_[_0x3e72('0x20')](_0x5293f0[_0x3e72('0x21')],function(_0xf90492){return{'model':db[_0xf90492['model']],'as':_0xf90492['as'],'attributes':_0xf90492[_0x3e72('0x22')],'include':_0xf90492[_0x3e72('0x21')]?_[_0x3e72('0x20')](_0xf90492[_0x3e72('0x21')],function(_0x16800a){return{'model':db[_0x16800a['model']],'as':_0x16800a['as'],'attributes':_0x16800a['attributes']};}):[]};}):[]};}):[]:[]})[_0x3e72('0x23')](function(_0x19e6c5){logger[_0x3e72('0x11')](_0x3e72('0x24'),_0x635547);logger[_0x3e72('0x14')](_0x3e72('0x24'),_0x635547,JSON[_0x3e72('0x16')](_0x19e6c5));_0x521480(_0x19e6c5);})[_0x3e72('0x1b')](function(_0x222a05){logger[_0x3e72('0x17')](_0x3e72('0x24'),_0x222a05[_0x3e72('0x19')],_0x635547);_0xeab2bd(_0x82ecf3['error'](0x1f4,_0x222a05[_0x3e72('0x19')]));});});};exports['NotifyFaxAccount']=function(_0x56fcca,_0x3da936,_0x389807){var _0x17e0b9=this;return new Promise(function(_0x184ca2,_0x8d7cff){var _0x210512={'body':_0x56fcca[_0x3e72('0x25')],'channel':_0x3e72('0x26')};var _0x25c411=[];var _0x5340cb=[];var _0x54f0c6={};return db[_0x3e72('0x27')]['describe']()['then'](function(_0x12e58a){if(!_0x12e58a){throw new db[(_0x3e72('0x28'))][(_0x3e72('0x29'))](_0x3e72('0x2a'));}_0x25c411=_[_0x3e72('0x2b')](_[_0x3e72('0x2c')](_0x12e58a),['createdAt',_0x3e72('0x2d')]);_0x5340cb=_[_0x3e72('0x2b')](_[_0x3e72('0x2c')](_0x12e58a),[_0x3e72('0x2e'),_0x3e72('0x2d'),_0x3e72('0x2f'),_0x3e72('0x30')]);if(_0x56fcca['body']['id']){delete _0x56fcca['body']['id'];}if(_['isNil'](_0x56fcca[_0x3e72('0x25')][_0x3e72('0x31')])){throw new db[(_0x3e72('0x28'))][(_0x3e72('0x29'))](_0x3e72('0x32'));}if(_[_0x3e72('0x33')](_0x56fcca[_0x3e72('0x25')]['body'])||_0x56fcca['body'][_0x3e72('0x25')]===''){throw new db[(_0x3e72('0x28'))][(_0x3e72('0x29'))](_0x3e72('0x34'));}if(_[_0x3e72('0x33')](_0x56fcca[_0x3e72('0x25')]['mapKey'])){throw new db['Sequelize']['ValidationError'](_0x3e72('0x35')+_0x5340cb);}if(!_[_0x3e72('0x36')](_0x5340cb,_0x56fcca[_0x3e72('0x25')][_0x3e72('0x37')])){throw new db[(_0x3e72('0x28'))][(_0x3e72('0x29'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5340cb);}_0x54f0c6[_0x56fcca[_0x3e72('0x25')][_0x3e72('0x37')]]=_0x56fcca[_0x3e72('0x25')][_0x3e72('0x31')];})[_0x3e72('0x23')](function(){return db['FaxAccount'][_0x3e72('0x38')]({'where':{'id':_0x56fcca['account']['id']},'include':[{'model':db[_0x3e72('0x39')],'as':_0x3e72('0x3a'),'include':[{'model':db[_0x3e72('0x27')],'as':_0x3e72('0x3b'),'where':_0x54f0c6,'limit':0x1,'order':[[_0x3e72('0x2d'),_0x3e72('0x3c')]]}]},{'model':db['FaxApplication'],'as':'Applications'}]});})[_0x3e72('0x23')](function(_0x34f1a8){if(_0x34f1a8&&_0x34f1a8[_0x3e72('0x3a')]){var _0x29403a=_0x34f1a8[_0x3e72('0x3d')]({'plain':!![]});_0x210512[_0x3e72('0x3e')]=_0x29403a;_0x210512['applications']=_0x29403a['Applications'];_0x210512[_0x3e72('0x3f')]=_0x29403a[_0x3e72('0x3a')];_0x210512[_0x3e72('0x40')]=_[_0x3e72('0x41')](_0x210512[_0x3e72('0x40')],['priority'],['asc']);if(_0x210512['account']['Applications']){delete _0x210512[_0x3e72('0x3e')][_0x3e72('0x42')];}if(_0x210512[_0x3e72('0x3e')][_0x3e72('0x3a')]&&_0x210512[_0x3e72('0x3e')][_0x3e72('0x3a')][_0x3e72('0x3b')]['length']){return _0x210512[_0x3e72('0x3e')][_0x3e72('0x3a')][_0x3e72('0x3b')][0x0];}var _0x1fe32b=_['defaults'](_0x56fcca[_0x3e72('0x25')],{'firstName':_0x56fcca[_0x3e72('0x25')]['from'],'ListId':_0x29403a[_0x3e72('0x30')]});_0x1fe32b[_0x56fcca[_0x3e72('0x25')][_0x3e72('0x37')]]=_0x56fcca['body'][_0x3e72('0x31')];return db['CmContact'][_0x3e72('0x43')](_0x1fe32b,{'fields':_0x25c411,'raw':!![]});}})['then'](function(_0x1989b5){_0x210512[_0x3e72('0x44')]=_0x1989b5;if(_0x1989b5){var _0xe6155b={'ContactId':_0x1989b5['id'],'FaxAccountId':_0x56fcca[_0x3e72('0x3e')]['id'],'fax':_0x1989b5[_0x3e72('0x26')]};return db[_0x3e72('0x45')][_0x3e72('0x38')]({'where':{'ContactId':_0x1989b5['id'],'closed':![],'FaxAccountId':_0x56fcca[_0x3e72('0x3e')]['id']}})[_0x3e72('0x23')](function(_0x55d1bb){if(_0x55d1bb){return[_0x55d1bb,![]];}return db[_0x3e72('0x45')][_0x3e72('0x43')](_0xe6155b)[_0x3e72('0x23')](function(_0x2c9165){return[_0x2c9165,!![]];});});}else{throw new Error(_0x3e72('0x46'));}})['spread'](function(_0x3642f4,_0x1e88b7){var _0x2c8098=_0x3642f4[_0x3e72('0x3d')]({'plain':!![]});if(_0x1e88b7){if(_0x210512[_0x3e72('0x3e')][_0x3e72('0x47')]){_0x210512['applications'][_0x3e72('0x48')]({'id':0x0,'priority':_0x210512['applications'][_0x3e72('0x49')]+0x1,'app':_0x3e72('0x4a'),'appdata':_0x3e72('0x4b'),'interval':'*,*,*,*'});}_0x2c8098[_0x3e72('0x4c')]=!![];}else{_0x2c8098[_0x3e72('0x4c')]=![];}_0x210512['interaction']=_0x2c8098;return db[_0x3e72('0x4d')][_0x3e72('0x43')]({'body':_0x56fcca[_0x3e72('0x25')][_0x3e72('0x25')],'FaxAccountId':_0x56fcca['account']['id'],'FaxInteractionId':_0x3642f4['id'],'direction':'in','ContactId':_0x3642f4[_0x3e72('0x4e')],'AttachmentId':_0x56fcca['body'][_0x3e72('0x4f')]});})[_0x3e72('0x23')](function(_0x2321a7){_0x210512['message']=_0x2321a7;if(!_0x210512[_0x3e72('0x50')][_0x3e72('0x51')])return;return db['User']['find']({'attributes':['id',_0x3e72('0x52')],'where':{'id':_0x210512[_0x3e72('0x50')][_0x3e72('0x51')]}});})[_0x3e72('0x23')](function(_0x516fb4){if(_0x516fb4){_0x210512[_0x3e72('0x40')][_0x3e72('0x53')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x516fb4['name']+','+(_0x210512[_0x3e72('0x3e')]['waitForTheAssignedAgent']||0xa),'interval':_0x3e72('0x54')});}if(!_0x210512[_0x3e72('0x50')]['queueId'])return;return db[_0x3e72('0x55')][_0x3e72('0x38')]({'attributes':['id',_0x3e72('0x52')],'where':{'id':_0x210512[_0x3e72('0x50')][_0x3e72('0x56')]}});})[_0x3e72('0x23')](function(_0x1dd265){if(_0x1dd265){_0x210512[_0x3e72('0x40')]['unshift']({'id':0x0,'priority':0x1,'app':_0x3e72('0x57'),'appdata':_0x1dd265[_0x3e72('0x52')]+','+(_0x210512[_0x3e72('0x3e')][_0x3e72('0x58')]||0x12c),'interval':_0x3e72('0x54')});}return respondWithRpcPromise(_0x3e72('0x59'),_0x3e72('0x5a'),_0x210512);})[_0x3e72('0x23')](function(_0x211b18){_0x184ca2(_0x211b18);})[_0x3e72('0x1b')](function(_0x3d4078){_0x8d7cff(_0x17e0b9['error'](0x1f4,_0x3d4078[_0x3e72('0x19')]));});});};
\ No newline at end of file
index 168f3ea..9423320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8566=['register','./faxAccount.events','save','remove','update','emit','removeListener'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x8566,0x78));var _0x6856=function(_0x1e4079,_0x18c002){_0x1e4079=_0x1e4079-0x0;var _0x24f302=_0x8566[_0x1e4079];return _0x24f302;};'use strict';var FaxAccountEvents=require(_0x6856('0x0'));var events=[_0x6856('0x1'),_0x6856('0x2'),_0x6856('0x3')];function createListener(_0x5d4dff,_0x572e60){return function(_0x278c4b){_0x572e60[_0x6856('0x4')](_0x5d4dff,_0x278c4b);};}function removeListener(_0x314805,_0x37a731){return function(){FaxAccountEvents[_0x6856('0x5')](_0x314805,_0x37a731);};}exports[_0x6856('0x6')]=function(_0x1035e0){for(var _0x5a31fe=0x0,_0x1a7720=events['length'];_0x5a31fe<_0x1a7720;_0x5a31fe++){var _0x349b05=events[_0x5a31fe];var _0x1801e2=createListener('faxAccount:'+_0x349b05,_0x1035e0);FaxAccountEvents['on'](_0x349b05,_0x1801e2);}};
\ No newline at end of file
+var _0x8f4a=['length','faxAccount:','save','remove','update','removeListener','register'];(function(_0x32dda4,_0x5c96d0){var _0x3522e9=function(_0x9bdc81){while(--_0x9bdc81){_0x32dda4['push'](_0x32dda4['shift']());}};_0x3522e9(++_0x5c96d0);}(_0x8f4a,0xf0));var _0xa8f4=function(_0x4c9f79,_0x21810d){_0x4c9f79=_0x4c9f79-0x0;var _0x5169fe=_0x8f4a[_0x4c9f79];return _0x5169fe;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0xa8f4('0x0'),_0xa8f4('0x1'),_0xa8f4('0x2')];function createListener(_0xe67f6b,_0x1046fe){return function(_0x203231){_0x1046fe['emit'](_0xe67f6b,_0x203231);};}function removeListener(_0x3e0de1,_0x4d022d){return function(){FaxAccountEvents[_0xa8f4('0x3')](_0x3e0de1,_0x4d022d);};}exports[_0xa8f4('0x4')]=function(_0x2c243f){for(var _0xc8922b=0x0,_0x4fe43=events[_0xa8f4('0x5')];_0xc8922b<_0x4fe43;_0xc8922b++){var _0x4c3cb7=events[_0xc8922b];var _0x5a8ec9=createListener(_0xa8f4('0x6')+_0x4c3cb7,_0x2c243f);FaxAccountEvents['on'](_0x4c3cb7,_0x5a8ec9);}};
\ No newline at end of file
index f0407d8..922a21c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd535=['getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','addAnswer','/:id/interactions','addApplications','addAccountApplications','/updateaccountapplications','updateAccountApplications','send','addAgents','delete','removeDispositions','exports','multer','util','Router','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers'];(function(_0x53f1de,_0x37d8d3){var _0x2fa505=function(_0x220b34){while(--_0x220b34){_0x53f1de['push'](_0x53f1de['shift']());}};_0x2fa505(++_0x37d8d3);}(_0xd535,0x161));var _0x5d53=function(_0x62d410,_0x2499af){_0x62d410=_0x62d410-0x0;var _0x57796f=_0xd535[_0x62d410];return _0x57796f;};'use strict';var multer=require(_0x5d53('0x0'));var util=require(_0x5d53('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5d53('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5d53('0x3'));var config=require(_0x5d53('0x4'));var controller=require(_0x5d53('0x5'));router[_0x5d53('0x6')]('/',auth[_0x5d53('0x7')](),controller[_0x5d53('0x8')]);router[_0x5d53('0x6')](_0x5d53('0x9'),auth[_0x5d53('0x7')](),controller[_0x5d53('0xa')]);router['get'](_0x5d53('0xb'),auth['isAuthenticated'](),controller[_0x5d53('0xc')]);router[_0x5d53('0x6')](_0x5d53('0xd'),auth[_0x5d53('0x7')](),controller[_0x5d53('0xe')]);router[_0x5d53('0x6')](_0x5d53('0xf'),auth[_0x5d53('0x7')](),controller[_0x5d53('0x10')]);router[_0x5d53('0x6')]('/:id/interactions',auth[_0x5d53('0x7')](),controller[_0x5d53('0x11')]);router[_0x5d53('0x6')](_0x5d53('0x12'),auth[_0x5d53('0x7')](),controller[_0x5d53('0x13')]);router[_0x5d53('0x6')](_0x5d53('0x14'),auth[_0x5d53('0x7')](),controller[_0x5d53('0x15')]);router[_0x5d53('0x6')](_0x5d53('0x16'),auth[_0x5d53('0x7')](),controller[_0x5d53('0x17')]);router[_0x5d53('0x18')]('/',auth['isAuthenticated'](),controller['create']);router[_0x5d53('0x18')]('/:id/dispositions',auth[_0x5d53('0x7')](),controller[_0x5d53('0x19')]);router[_0x5d53('0x18')](_0x5d53('0xf'),auth[_0x5d53('0x7')](),controller[_0x5d53('0x1a')]);router[_0x5d53('0x18')](_0x5d53('0x1b'),auth[_0x5d53('0x7')](),controller['addInteraction']);router[_0x5d53('0x18')](_0x5d53('0x12'),auth['isAuthenticated'](),controller[_0x5d53('0x1c')]);router[_0x5d53('0x18')]('/addaccountapplications',auth[_0x5d53('0x7')](),controller[_0x5d53('0x1d')]);router[_0x5d53('0x18')](_0x5d53('0x1e'),auth[_0x5d53('0x7')](),controller[_0x5d53('0x1f')]);router[_0x5d53('0x18')]('/:id/send',auth[_0x5d53('0x7')](),controller[_0x5d53('0x20')]);router[_0x5d53('0x18')](_0x5d53('0x16'),auth[_0x5d53('0x7')](),controller[_0x5d53('0x21')]);router['put'](_0x5d53('0xb'),auth[_0x5d53('0x7')](),controller['update']);router[_0x5d53('0x22')](_0x5d53('0xb'),auth[_0x5d53('0x7')](),controller['destroy']);router[_0x5d53('0x22')](_0x5d53('0xd'),auth[_0x5d53('0x7')](),controller[_0x5d53('0x23')]);router[_0x5d53('0x22')](_0x5d53('0xf'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x5d53('0x22')](_0x5d53('0x16'),auth[_0x5d53('0x7')](),controller['removeAgents']);module[_0x5d53('0x24')]=router;
\ No newline at end of file
+var _0xddf8=['addInteraction','addApplications','/addaccountapplications','addAccountApplications','/updateaccountapplications','updateAccountApplications','/:id/send','addAgents','put','/:id','update','destroy','removeDispositions','delete','removeAgents','exports','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','isAuthenticated','get','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/interactions','getInteractions','/:id/applications','getApplications','getMessages','/:id/users','post','create','addDisposition','/:id/canned_answers','addAnswer'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xddf8,0x64));var _0x8ddf=function(_0x1379ee,_0x50bf49){_0x1379ee=_0x1379ee-0x0;var _0x5427b4=_0xddf8[_0x1379ee];return _0x5427b4;};'use strict';var multer=require('multer');var util=require(_0x8ddf('0x0'));var path=require('path');var timeout=require(_0x8ddf('0x1'));var express=require(_0x8ddf('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8ddf('0x3'));var interaction=require(_0x8ddf('0x4'));var config=require(_0x8ddf('0x5'));var controller=require(_0x8ddf('0x6'));router['get']('/',auth[_0x8ddf('0x7')](),controller['index']);router[_0x8ddf('0x8')](_0x8ddf('0x9'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0xa')]);router[_0x8ddf('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x8ddf('0xb')]);router[_0x8ddf('0x8')](_0x8ddf('0xc'),auth['isAuthenticated'](),controller[_0x8ddf('0xd')]);router['get']('/:id/canned_answers',auth[_0x8ddf('0x7')](),controller[_0x8ddf('0xe')]);router['get'](_0x8ddf('0xf'),auth['isAuthenticated'](),controller[_0x8ddf('0x10')]);router[_0x8ddf('0x8')](_0x8ddf('0x11'),auth['isAuthenticated'](),controller[_0x8ddf('0x12')]);router[_0x8ddf('0x8')]('/:id/messages',auth['isAuthenticated'](),controller[_0x8ddf('0x13')]);router[_0x8ddf('0x8')](_0x8ddf('0x14'),auth['isAuthenticated'](),controller['getAgents']);router[_0x8ddf('0x15')]('/',auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x16')]);router[_0x8ddf('0x15')](_0x8ddf('0xc'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x17')]);router[_0x8ddf('0x15')](_0x8ddf('0x18'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x19')]);router[_0x8ddf('0x15')](_0x8ddf('0xf'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x1a')]);router[_0x8ddf('0x15')]('/:id/applications',auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x1b')]);router[_0x8ddf('0x15')](_0x8ddf('0x1c'),auth['isAuthenticated'](),controller[_0x8ddf('0x1d')]);router[_0x8ddf('0x15')](_0x8ddf('0x1e'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x1f')]);router[_0x8ddf('0x15')](_0x8ddf('0x20'),auth[_0x8ddf('0x7')](),controller['send']);router[_0x8ddf('0x15')](_0x8ddf('0x14'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x21')]);router[_0x8ddf('0x22')](_0x8ddf('0x23'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x24')]);router['delete'](_0x8ddf('0x23'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x25')]);router['delete'](_0x8ddf('0xc'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x26')]);router['delete'](_0x8ddf('0x18'),auth[_0x8ddf('0x7')](),controller['removeAnswers']);router[_0x8ddf('0x27')](_0x8ddf('0x14'),auth[_0x8ddf('0x7')](),controller[_0x8ddf('0x28')]);module[_0x8ddf('0x29')]=router;
\ No newline at end of file
index 1dbd7e9..ea25daf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8117=['noop','TEXT','*,*,*,*','exports','INTEGER','STRING'];(function(_0x15a44a,_0x1ed300){var _0x39bbda=function(_0x39f7a3){while(--_0x39f7a3){_0x15a44a['push'](_0x15a44a['shift']());}};_0x39bbda(++_0x1ed300);}(_0x8117,0x195));var _0x7811=function(_0x2a89a5,_0x48278c){_0x2a89a5=_0x2a89a5-0x0;var _0x1c238f=_0x8117[_0x2a89a5];return _0x1c238f;};'use strict';var Sequelize=require('sequelize');module[_0x7811('0x0')]={'priority':{'type':Sequelize[_0x7811('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x7811('0x2')],'allowNull':![],'defaultValue':_0x7811('0x3')},'appdata':{'type':Sequelize[_0x7811('0x4')]()},'description':{'type':Sequelize[_0x7811('0x2')]},'interval':{'type':Sequelize[_0x7811('0x2')],'defaultValue':_0x7811('0x5')}};
\ No newline at end of file
+var _0xd097=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x148785,_0x195ee5){var _0x17a172=function(_0x478b94){while(--_0x478b94){_0x148785['push'](_0x148785['shift']());}};_0x17a172(++_0x195ee5);}(_0xd097,0x1ba));var _0x7d09=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd097[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x7d09('0x0'));module[_0x7d09('0x1')]={'priority':{'type':Sequelize[_0x7d09('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x7d09('0x3')],'allowNull':![],'defaultValue':_0x7d09('0x4')},'appdata':{'type':Sequelize[_0x7d09('0x5')]()},'description':{'type':Sequelize[_0x7d09('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x7d09('0x6')}};
\ No newline at end of file
index e02fa8e..8772afb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9256=['includeAll','create','body','update','find','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','then','destroy','error','stack','name','send','map','FaxApplication','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params'];(function(_0x29c3b2,_0x3c12ac){var _0x4b3aa7=function(_0x622a9d){while(--_0x622a9d){_0x29c3b2['push'](_0x29c3b2['shift']());}};_0x4b3aa7(++_0x3c12ac);}(_0x9256,0x139));var _0x6925=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9256[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6925('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6925('0x1'));var rp=require(_0x6925('0x2'));var moment=require(_0x6925('0x3'));var BPromise=require(_0x6925('0x4'));var Mustache=require(_0x6925('0x5'));var util=require(_0x6925('0x6'));var path=require(_0x6925('0x7'));var sox=require('sox');var csv=require(_0x6925('0x8'));var ejs=require(_0x6925('0x9'));var fs=require('fs');var fs_extra=require(_0x6925('0xa'));var _=require(_0x6925('0xb'));var squel=require(_0x6925('0xc'));var crypto=require(_0x6925('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6925('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6925('0xf'));var Papa=require(_0x6925('0x10'));var Redis=require('ioredis');var authService=require(_0x6925('0x11'));var qs=require(_0x6925('0x12'));var as=require(_0x6925('0x13'));var hardwareService=require(_0x6925('0x14'));var logger=require(_0x6925('0x15'))(_0x6925('0x16'));var utils=require(_0x6925('0x17'));var config=require(_0x6925('0x18'));var licenseUtil=require(_0x6925('0x19'));var db=require(_0x6925('0x1a'))['db'];function respondWithStatusCode(_0x4655de,_0x2b821b){_0x2b821b=_0x2b821b||0xcc;return function(_0x487508){if(_0x487508){return _0x4655de[_0x6925('0x1b')](_0x2b821b);}return _0x4655de[_0x6925('0x1c')](_0x2b821b)[_0x6925('0x1d')]();};}function respondWithResult(_0x3fdde2,_0x4a5e46){_0x4a5e46=_0x4a5e46||0xc8;return function(_0x3ad24c){if(_0x3ad24c){return _0x3fdde2['status'](_0x4a5e46)[_0x6925('0x1e')](_0x3ad24c);}};}function respondWithFilteredResult(_0x48dc63,_0x202aaf){return function(_0x27f057){if(_0x27f057){var _0xcb5cff=typeof _0x202aaf[_0x6925('0x1f')]==='undefined'&&typeof _0x202aaf[_0x6925('0x20')]===_0x6925('0x21');var _0x50f225=_0x27f057['count'];var _0x270765=_0xcb5cff?0x0:_0x202aaf[_0x6925('0x1f')];var _0x3387fd=_0xcb5cff?_0x27f057[_0x6925('0x22')]:_0x202aaf[_0x6925('0x1f')]+_0x202aaf[_0x6925('0x20')];var _0x1b167a;if(_0x3387fd>=_0x50f225){_0x3387fd=_0x50f225;_0x1b167a=0xc8;}else{_0x1b167a=0xce;}_0x48dc63[_0x6925('0x1c')](_0x1b167a);return _0x48dc63['set'](_0x6925('0x23'),_0x270765+'-'+_0x3387fd+'/'+_0x50f225)[_0x6925('0x1e')](_0x27f057);}return null;};}function patchUpdates(_0x322869){return function(_0x1ce953){try{jsonpatch[_0x6925('0x24')](_0x1ce953,_0x322869,!![]);}catch(_0x4891c9){return BPromise['reject'](_0x4891c9);}return _0x1ce953['save']();};}function saveUpdates(_0x26ab1f,_0x3d6bdd){return function(_0x30fd5b){if(_0x30fd5b){return _0x30fd5b['update'](_0x26ab1f)[_0x6925('0x25')](function(_0x1b91e4){return _0x1b91e4;});}return null;};}function removeEntity(_0x136b22,_0x48e4fd){return function(_0x6ae223){if(_0x6ae223){return _0x6ae223[_0x6925('0x26')]()[_0x6925('0x25')](function(){_0x136b22[_0x6925('0x1c')](0xcc)[_0x6925('0x1d')]();});}};}function handleEntityNotFound(_0x33e701,_0x43a1be){return function(_0x69dd9e){if(!_0x69dd9e){_0x33e701[_0x6925('0x1b')](0x194);}return _0x69dd9e;};}function handleError(_0x1290ca,_0x87c970){_0x87c970=_0x87c970||0x1f4;return function(_0x111979){logger[_0x6925('0x27')](_0x111979[_0x6925('0x28')]);if(_0x111979[_0x6925('0x29')]){delete _0x111979['name'];}_0x1290ca[_0x6925('0x1c')](_0x87c970)[_0x6925('0x2a')](_0x111979);};}exports['index']=function(_0x41c8c8,_0x44dbcb){var _0x39a1be={},_0x36730c={},_0x19720f={'count':0x0,'rows':[]};var _0x5a0d0d=_[_0x6925('0x2b')](db[_0x6925('0x2c')][_0x6925('0x2d')],function(_0x35d2ee){return{'name':_0x35d2ee[_0x6925('0x2e')],'type':_0x35d2ee[_0x6925('0x2f')]['key']};});_0x36730c[_0x6925('0x30')]=_['map'](_0x5a0d0d,_0x6925('0x29'));_0x36730c[_0x6925('0x31')]=_[_0x6925('0x32')](_0x41c8c8[_0x6925('0x31')]);_0x36730c[_0x6925('0x33')]=_[_0x6925('0x34')](_0x36730c[_0x6925('0x30')],_0x36730c[_0x6925('0x31')]);_0x39a1be[_0x6925('0x35')]=_[_0x6925('0x34')](_0x36730c[_0x6925('0x30')],qs['fields'](_0x41c8c8[_0x6925('0x31')][_0x6925('0x36')]));_0x39a1be['attributes']=_0x39a1be[_0x6925('0x35')][_0x6925('0x37')]?_0x39a1be[_0x6925('0x35')]:_0x36730c['model'];if(!_0x41c8c8[_0x6925('0x31')][_0x6925('0x38')](_0x6925('0x39'))){_0x39a1be['limit']=qs[_0x6925('0x20')](_0x41c8c8[_0x6925('0x31')]['limit']);_0x39a1be['offset']=qs['offset'](_0x41c8c8[_0x6925('0x31')][_0x6925('0x1f')]);}_0x39a1be[_0x6925('0x3a')]=qs['sort'](_0x41c8c8['query'][_0x6925('0x3b')]);_0x39a1be[_0x6925('0x3c')]=qs[_0x6925('0x33')](_[_0x6925('0x3d')](_0x41c8c8[_0x6925('0x31')],_0x36730c[_0x6925('0x33')]),_0x5a0d0d);if(_0x41c8c8[_0x6925('0x31')][_0x6925('0x3e')]){_0x39a1be[_0x6925('0x3c')]=_[_0x6925('0x3f')](_0x39a1be[_0x6925('0x3c')],{'$or':_[_0x6925('0x2b')](_0x5a0d0d,function(_0x3292a2){if(_0x3292a2[_0x6925('0x2f')]!==_0x6925('0x40')){var _0x196f46={};_0x196f46[_0x3292a2[_0x6925('0x29')]]={'$like':'%'+_0x41c8c8[_0x6925('0x31')][_0x6925('0x3e')]+'%'};return _0x196f46;}})});}_0x39a1be=_[_0x6925('0x3f')]({},_0x39a1be,_0x41c8c8[_0x6925('0x41')]);var _0x3d8a32={'where':_0x39a1be[_0x6925('0x3c')]};return db['FaxApplication'][_0x6925('0x22')](_0x3d8a32)[_0x6925('0x25')](function(_0x10e38f){_0x19720f[_0x6925('0x22')]=_0x10e38f;if(_0x41c8c8['query']['includeAll']){_0x39a1be[_0x6925('0x42')]=[{'all':!![]}];}return db[_0x6925('0x2c')][_0x6925('0x43')](_0x39a1be);})[_0x6925('0x25')](function(_0x269521){_0x19720f[_0x6925('0x44')]=_0x269521;return _0x19720f;})[_0x6925('0x25')](respondWithFilteredResult(_0x44dbcb,_0x39a1be))[_0x6925('0x45')](handleError(_0x44dbcb,null));};exports[_0x6925('0x46')]=function(_0x1e57fb,_0x3a653e){var _0x36664e={'raw':!![],'where':{'id':_0x1e57fb[_0x6925('0x47')]['id']}},_0x51f054={};_0x51f054[_0x6925('0x30')]=_[_0x6925('0x32')](db[_0x6925('0x2c')]['rawAttributes']);_0x51f054['query']=_[_0x6925('0x32')](_0x1e57fb['query']);_0x51f054[_0x6925('0x33')]=_[_0x6925('0x34')](_0x51f054[_0x6925('0x30')],_0x51f054['query']);_0x36664e['attributes']=_['intersection'](_0x51f054[_0x6925('0x30')],qs[_0x6925('0x36')](_0x1e57fb[_0x6925('0x31')][_0x6925('0x36')]));_0x36664e[_0x6925('0x35')]=_0x36664e[_0x6925('0x35')][_0x6925('0x37')]?_0x36664e['attributes']:_0x51f054['model'];if(_0x1e57fb['query'][_0x6925('0x48')]){_0x36664e[_0x6925('0x42')]=[{'all':!![]}];}_0x36664e=_[_0x6925('0x3f')]({},_0x36664e,_0x1e57fb[_0x6925('0x41')]);return db[_0x6925('0x2c')]['find'](_0x36664e)[_0x6925('0x25')](handleEntityNotFound(_0x3a653e,null))[_0x6925('0x25')](respondWithResult(_0x3a653e,null))[_0x6925('0x45')](handleError(_0x3a653e,null));};exports[_0x6925('0x49')]=function(_0xe5bc33,_0xc900b7){return db[_0x6925('0x2c')][_0x6925('0x49')](_0xe5bc33[_0x6925('0x4a')],{})[_0x6925('0x25')](respondWithResult(_0xc900b7,0xc9))[_0x6925('0x45')](handleError(_0xc900b7,null));};exports[_0x6925('0x4b')]=function(_0x57cef4,_0x1c7e66){if(_0x57cef4[_0x6925('0x4a')]['id']){delete _0x57cef4[_0x6925('0x4a')]['id'];}return db[_0x6925('0x2c')][_0x6925('0x4c')]({'where':{'id':_0x57cef4[_0x6925('0x47')]['id']}})[_0x6925('0x25')](handleEntityNotFound(_0x1c7e66,null))[_0x6925('0x25')](saveUpdates(_0x57cef4[_0x6925('0x4a')],null))[_0x6925('0x25')](respondWithResult(_0x1c7e66,null))[_0x6925('0x45')](handleError(_0x1c7e66,null));};exports[_0x6925('0x26')]=function(_0x305c47,_0x2c371a){return db[_0x6925('0x2c')][_0x6925('0x4c')]({'where':{'id':_0x305c47[_0x6925('0x47')]['id']}})[_0x6925('0x25')](handleEntityNotFound(_0x2c371a,null))[_0x6925('0x25')](removeEntity(_0x2c371a,null))[_0x6925('0x45')](handleError(_0x2c371a,null));};
\ No newline at end of file
+var _0x3910=['fields','length','hasOwnProperty','order','sort','filter','where','type','options','includeAll','include','findAll','rows','show','rawAttributes','find','catch','create','body','params','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','map','FaxApplication','fieldName','model','query','keys','filters','intersection','attributes'];(function(_0x2a72ac,_0x51d35f){var _0x347a64=function(_0x13fc98){while(--_0x13fc98){_0x2a72ac['push'](_0x2a72ac['shift']());}};_0x347a64(++_0x51d35f);}(_0x3910,0x130));var _0x0391=function(_0x172fe1,_0x31bb8d){_0x172fe1=_0x172fe1-0x0;var _0x31cdbf=_0x3910[_0x172fe1];return _0x31cdbf;};'use strict';var emlformat=require(_0x0391('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0391('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0391('0x2'));var moment=require('moment');var BPromise=require(_0x0391('0x3'));var Mustache=require(_0x0391('0x4'));var util=require(_0x0391('0x5'));var path=require(_0x0391('0x6'));var sox=require(_0x0391('0x7'));var csv=require(_0x0391('0x8'));var ejs=require(_0x0391('0x9'));var fs=require('fs');var fs_extra=require(_0x0391('0xa'));var _=require(_0x0391('0xb'));var squel=require(_0x0391('0xc'));var crypto=require(_0x0391('0xd'));var jsforce=require(_0x0391('0xe'));var deskjs=require(_0x0391('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0391('0x10'));var Redis=require(_0x0391('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0391('0x12'));var as=require(_0x0391('0x13'));var hardwareService=require(_0x0391('0x14'));var logger=require('../../config/logger')(_0x0391('0x15'));var utils=require(_0x0391('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0391('0x17'));var db=require(_0x0391('0x18'))['db'];function respondWithStatusCode(_0x218874,_0x2fc73f){_0x2fc73f=_0x2fc73f||0xcc;return function(_0x1621a5){if(_0x1621a5){return _0x218874[_0x0391('0x19')](_0x2fc73f);}return _0x218874['status'](_0x2fc73f)['end']();};}function respondWithResult(_0x536713,_0x5aee4e){_0x5aee4e=_0x5aee4e||0xc8;return function(_0x2c7f65){if(_0x2c7f65){return _0x536713[_0x0391('0x1a')](_0x5aee4e)[_0x0391('0x1b')](_0x2c7f65);}};}function respondWithFilteredResult(_0x1acf9b,_0x3bc1f3){return function(_0x4ca4c1){if(_0x4ca4c1){var _0x2e147c=typeof _0x3bc1f3[_0x0391('0x1c')]===_0x0391('0x1d')&&typeof _0x3bc1f3[_0x0391('0x1e')]===_0x0391('0x1d');var _0x55f77c=_0x4ca4c1[_0x0391('0x1f')];var _0x45033e=_0x2e147c?0x0:_0x3bc1f3['offset'];var _0x1941cf=_0x2e147c?_0x4ca4c1[_0x0391('0x1f')]:_0x3bc1f3[_0x0391('0x1c')]+_0x3bc1f3['limit'];var _0xda7a07;if(_0x1941cf>=_0x55f77c){_0x1941cf=_0x55f77c;_0xda7a07=0xc8;}else{_0xda7a07=0xce;}_0x1acf9b['status'](_0xda7a07);return _0x1acf9b[_0x0391('0x20')](_0x0391('0x21'),_0x45033e+'-'+_0x1941cf+'/'+_0x55f77c)['json'](_0x4ca4c1);}return null;};}function patchUpdates(_0x48da36){return function(_0x4cf44e){try{jsonpatch['apply'](_0x4cf44e,_0x48da36,!![]);}catch(_0x3272b9){return BPromise[_0x0391('0x22')](_0x3272b9);}return _0x4cf44e[_0x0391('0x23')]();};}function saveUpdates(_0x20effd,_0x542729){return function(_0x246eb0){if(_0x246eb0){return _0x246eb0[_0x0391('0x24')](_0x20effd)[_0x0391('0x25')](function(_0x58d304){return _0x58d304;});}return null;};}function removeEntity(_0x56515e,_0x401a48){return function(_0x59a2dc){if(_0x59a2dc){return _0x59a2dc[_0x0391('0x26')]()[_0x0391('0x25')](function(){_0x56515e[_0x0391('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ad79b,_0x5a6cac){return function(_0x14040a){if(!_0x14040a){_0x4ad79b[_0x0391('0x19')](0x194);}return _0x14040a;};}function handleError(_0x4dbc43,_0x30f2d2){_0x30f2d2=_0x30f2d2||0x1f4;return function(_0x4b4764){logger['error'](_0x4b4764[_0x0391('0x27')]);if(_0x4b4764[_0x0391('0x28')]){delete _0x4b4764[_0x0391('0x28')];}_0x4dbc43[_0x0391('0x1a')](_0x30f2d2)[_0x0391('0x29')](_0x4b4764);};}exports['index']=function(_0x1a31e8,_0x641857){var _0x38a523={},_0x18e966={},_0x3b5a33={'count':0x0,'rows':[]};var _0x9f836c=_[_0x0391('0x2a')](db[_0x0391('0x2b')]['rawAttributes'],function(_0x2301c7){return{'name':_0x2301c7[_0x0391('0x2c')],'type':_0x2301c7['type']['key']};});_0x18e966[_0x0391('0x2d')]=_[_0x0391('0x2a')](_0x9f836c,'name');_0x18e966[_0x0391('0x2e')]=_[_0x0391('0x2f')](_0x1a31e8[_0x0391('0x2e')]);_0x18e966[_0x0391('0x30')]=_[_0x0391('0x31')](_0x18e966[_0x0391('0x2d')],_0x18e966['query']);_0x38a523[_0x0391('0x32')]=_['intersection'](_0x18e966[_0x0391('0x2d')],qs[_0x0391('0x33')](_0x1a31e8[_0x0391('0x2e')][_0x0391('0x33')]));_0x38a523[_0x0391('0x32')]=_0x38a523[_0x0391('0x32')][_0x0391('0x34')]?_0x38a523[_0x0391('0x32')]:_0x18e966['model'];if(!_0x1a31e8[_0x0391('0x2e')][_0x0391('0x35')]('nolimit')){_0x38a523[_0x0391('0x1e')]=qs[_0x0391('0x1e')](_0x1a31e8['query'][_0x0391('0x1e')]);_0x38a523[_0x0391('0x1c')]=qs[_0x0391('0x1c')](_0x1a31e8[_0x0391('0x2e')]['offset']);}_0x38a523[_0x0391('0x36')]=qs[_0x0391('0x37')](_0x1a31e8[_0x0391('0x2e')][_0x0391('0x37')]);_0x38a523['where']=qs[_0x0391('0x30')](_['pick'](_0x1a31e8[_0x0391('0x2e')],_0x18e966[_0x0391('0x30')]),_0x9f836c);if(_0x1a31e8[_0x0391('0x2e')][_0x0391('0x38')]){_0x38a523[_0x0391('0x39')]=_['merge'](_0x38a523[_0x0391('0x39')],{'$or':_[_0x0391('0x2a')](_0x9f836c,function(_0x2614a9){if(_0x2614a9[_0x0391('0x3a')]!=='VIRTUAL'){var _0x4ce721={};_0x4ce721[_0x2614a9[_0x0391('0x28')]]={'$like':'%'+_0x1a31e8['query'][_0x0391('0x38')]+'%'};return _0x4ce721;}})});}_0x38a523=_['merge']({},_0x38a523,_0x1a31e8[_0x0391('0x3b')]);var _0x22f9e5={'where':_0x38a523['where']};return db['FaxApplication'][_0x0391('0x1f')](_0x22f9e5)[_0x0391('0x25')](function(_0x987498){_0x3b5a33[_0x0391('0x1f')]=_0x987498;if(_0x1a31e8[_0x0391('0x2e')][_0x0391('0x3c')]){_0x38a523[_0x0391('0x3d')]=[{'all':!![]}];}return db[_0x0391('0x2b')][_0x0391('0x3e')](_0x38a523);})['then'](function(_0x3b6dc3){_0x3b5a33[_0x0391('0x3f')]=_0x3b6dc3;return _0x3b5a33;})[_0x0391('0x25')](respondWithFilteredResult(_0x641857,_0x38a523))['catch'](handleError(_0x641857,null));};exports[_0x0391('0x40')]=function(_0x1b537c,_0x2aadef){var _0x1d94c6={'raw':!![],'where':{'id':_0x1b537c['params']['id']}},_0xb7803f={};_0xb7803f[_0x0391('0x2d')]=_[_0x0391('0x2f')](db['FaxApplication'][_0x0391('0x41')]);_0xb7803f[_0x0391('0x2e')]=_[_0x0391('0x2f')](_0x1b537c[_0x0391('0x2e')]);_0xb7803f[_0x0391('0x30')]=_['intersection'](_0xb7803f[_0x0391('0x2d')],_0xb7803f[_0x0391('0x2e')]);_0x1d94c6[_0x0391('0x32')]=_[_0x0391('0x31')](_0xb7803f['model'],qs[_0x0391('0x33')](_0x1b537c[_0x0391('0x2e')][_0x0391('0x33')]));_0x1d94c6[_0x0391('0x32')]=_0x1d94c6[_0x0391('0x32')][_0x0391('0x34')]?_0x1d94c6[_0x0391('0x32')]:_0xb7803f[_0x0391('0x2d')];if(_0x1b537c[_0x0391('0x2e')][_0x0391('0x3c')]){_0x1d94c6[_0x0391('0x3d')]=[{'all':!![]}];}_0x1d94c6=_['merge']({},_0x1d94c6,_0x1b537c[_0x0391('0x3b')]);return db['FaxApplication'][_0x0391('0x42')](_0x1d94c6)[_0x0391('0x25')](handleEntityNotFound(_0x2aadef,null))['then'](respondWithResult(_0x2aadef,null))[_0x0391('0x43')](handleError(_0x2aadef,null));};exports[_0x0391('0x44')]=function(_0x537782,_0x550442){return db[_0x0391('0x2b')][_0x0391('0x44')](_0x537782[_0x0391('0x45')],{})[_0x0391('0x25')](respondWithResult(_0x550442,0xc9))[_0x0391('0x43')](handleError(_0x550442,null));};exports[_0x0391('0x24')]=function(_0x3f1256,_0x3d253d){if(_0x3f1256[_0x0391('0x45')]['id']){delete _0x3f1256['body']['id'];}return db[_0x0391('0x2b')][_0x0391('0x42')]({'where':{'id':_0x3f1256[_0x0391('0x46')]['id']}})['then'](handleEntityNotFound(_0x3d253d,null))['then'](saveUpdates(_0x3f1256[_0x0391('0x45')],null))[_0x0391('0x25')](respondWithResult(_0x3d253d,null))[_0x0391('0x43')](handleError(_0x3d253d,null));};exports[_0x0391('0x26')]=function(_0x1af629,_0x4342d6){return db[_0x0391('0x2b')][_0x0391('0x42')]({'where':{'id':_0x1af629[_0x0391('0x46')]['id']}})['then'](handleEntityNotFound(_0x4342d6,null))[_0x0391('0x25')](removeEntity(_0x4342d6,null))[_0x0391('0x43')](handleError(_0x4342d6,null));};
\ No newline at end of file
index 272bf30..a060d37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc667=['exports','FaxApplication','fax_applications','utf8mb4','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./faxApplication.attributes'];(function(_0x392777,_0x34fb2d){var _0x562ba3=function(_0x35c150){while(--_0x35c150){_0x392777['push'](_0x392777['shift']());}};_0x562ba3(++_0x34fb2d);}(_0xc667,0xa0));var _0x7c66=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xc667[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x7c66('0x0'));var util=require(_0x7c66('0x1'));var logger=require(_0x7c66('0x2'))(_0x7c66('0x3'));var moment=require('moment');var BPromise=require(_0x7c66('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7c66('0x5'));var rimraf=require(_0x7c66('0x6'));var config=require(_0x7c66('0x7'));var attributes=require(_0x7c66('0x8'));module[_0x7c66('0x9')]=function(_0x47a365,_0x1a6bba){return _0x47a365['define'](_0x7c66('0xa'),attributes,{'tableName':_0x7c66('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7c66('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x9259=['path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','utf8mb4','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0xea19a8,_0xb99e2){var _0x8191a3=function(_0x29db22){while(--_0x29db22){_0xea19a8['push'](_0xea19a8['shift']());}};_0x8191a3(++_0xb99e2);}(_0x9259,0x1ac));var _0x9925=function(_0x1a08ad,_0x21d209){_0x1a08ad=_0x1a08ad-0x0;var _0x521649=_0x9259[_0x1a08ad];return _0x521649;};'use strict';var _=require(_0x9925('0x0'));var util=require(_0x9925('0x1'));var logger=require(_0x9925('0x2'))(_0x9925('0x3'));var moment=require('moment');var BPromise=require(_0x9925('0x4'));var rp=require(_0x9925('0x5'));var fs=require('fs');var path=require(_0x9925('0x6'));var rimraf=require(_0x9925('0x7'));var config=require(_0x9925('0x8'));var attributes=require(_0x9925('0x9'));module[_0x9925('0xa')]=function(_0x11d7bc,_0x31e9c3){return _0x11d7bc[_0x9925('0xb')](_0x9925('0xc'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9925('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 50ac913..9621dbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ede=['error','message','result','catch','update','body','options','where','limit','then','UpdateFaxApplication','stringify','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s'];(function(_0x33d29f,_0x28a01e){var _0x2f1774=function(_0xbf2292){while(--_0xbf2292){_0x33d29f['push'](_0x33d29f['shift']());}};_0x2f1774(++_0x28a01e);}(_0x6ede,0x140));var _0xe6ed=function(_0x403db1,_0x59018e){_0x403db1=_0x403db1-0x0;var _0x47c48f=_0x6ede[_0x403db1];return _0x47c48f;};'use strict';var _=require('lodash');var util=require(_0xe6ed('0x0'));var moment=require('moment');var BPromise=require(_0xe6ed('0x1'));var rs=require(_0xe6ed('0x2'));var fs=require('fs');var Redis=require(_0xe6ed('0x3'));var db=require(_0xe6ed('0x4'))['db'];var utils=require(_0xe6ed('0x5'));var logger=require(_0xe6ed('0x6'))(_0xe6ed('0x7'));var config=require('../../config/environment');var jayson=require(_0xe6ed('0x8'));var client=jayson[_0xe6ed('0x9')][_0xe6ed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x22e03b,_0x2e8e4b,_0x2910af){return new BPromise(function(_0x1831f5,_0x33afd9){return client['request'](_0x22e03b,_0x2910af)['then'](function(_0x579126){logger[_0xe6ed('0xb')](_0xe6ed('0xc'),_0x2e8e4b,_0xe6ed('0xd'));logger[_0xe6ed('0xe')](_0xe6ed('0xf'),_0x2e8e4b,_0xe6ed('0xd'),JSON['stringify'](_0x579126));if(_0x579126['error']){if(_0x579126[_0xe6ed('0x10')]['code']===0x1f4){logger[_0xe6ed('0x10')](_0xe6ed('0xc'),_0x2e8e4b,_0x579126['error']['message']);return _0x33afd9(_0x579126['error'][_0xe6ed('0x11')]);}logger['error']('FaxApplication,\x20%s,\x20%s',_0x2e8e4b,_0x579126[_0xe6ed('0x10')][_0xe6ed('0x11')]);return _0x1831f5(_0x579126[_0xe6ed('0x10')][_0xe6ed('0x11')]);}else{logger[_0xe6ed('0xb')](_0xe6ed('0xc'),_0x2e8e4b,_0xe6ed('0xd'));_0x1831f5(_0x579126[_0xe6ed('0x12')][_0xe6ed('0x11')]);}})[_0xe6ed('0x13')](function(_0x40444d){logger[_0xe6ed('0x10')](_0xe6ed('0xc'),_0x2e8e4b,_0x40444d);_0x33afd9(_0x40444d);});});}exports['UpdateFaxApplication']=function(_0x25cd96){var _0x4ba076=this;return new Promise(function(_0x16a881,_0x5939b3){return db['FaxApplication'][_0xe6ed('0x14')](_0x25cd96[_0xe6ed('0x15')],{'raw':_0x25cd96[_0xe6ed('0x16')]?_0x25cd96[_0xe6ed('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x25cd96[_0xe6ed('0x16')]?_0x25cd96['options'][_0xe6ed('0x17')]||null:null,'attributes':_0x25cd96['options']?_0x25cd96[_0xe6ed('0x16')]['attributes']||null:null,'limit':_0x25cd96['options']?_0x25cd96[_0xe6ed('0x16')][_0xe6ed('0x18')]||null:null})[_0xe6ed('0x19')](function(_0x1344dc){logger['info'](_0xe6ed('0x1a'),_0x25cd96);logger[_0xe6ed('0xe')]('UpdateFaxApplication',_0x25cd96,JSON[_0xe6ed('0x1b')](_0x1344dc));_0x16a881(_0x1344dc);})[_0xe6ed('0x13')](function(_0x4ae4cc){logger['error'](_0xe6ed('0x1a'),_0x4ae4cc[_0xe6ed('0x11')],_0x25cd96);_0x5939b3(_0x4ba076[_0xe6ed('0x10')](0x1f4,_0x4ae4cc[_0xe6ed('0x11')]));});});};
\ No newline at end of file
+var _0x4d84=['../../config/environment','jayson/promise','client','request','then','FaxApplication,\x20%s,\x20%s','debug','FaxApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','FaxApplication','body','options','raw','where','attributes','limit','UpdateFaxApplication','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x252bfc,_0x2837f1){var _0x16bf76=function(_0x4a99e3){while(--_0x4a99e3){_0x252bfc['push'](_0x252bfc['shift']());}};_0x16bf76(++_0x2837f1);}(_0x4d84,0xad));var _0x44d8=function(_0x40c2f1,_0x1b4e95){_0x40c2f1=_0x40c2f1-0x0;var _0x3dd985=_0x4d84[_0x40c2f1];return _0x3dd985;};'use strict';var _=require(_0x44d8('0x0'));var util=require(_0x44d8('0x1'));var moment=require(_0x44d8('0x2'));var BPromise=require(_0x44d8('0x3'));var rs=require(_0x44d8('0x4'));var fs=require('fs');var Redis=require(_0x44d8('0x5'));var db=require(_0x44d8('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x44d8('0x7'));var jayson=require(_0x44d8('0x8'));var client=jayson[_0x44d8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x95604e,_0x2111ed,_0x129e62){return new BPromise(function(_0x41cf89,_0x2947f7){return client[_0x44d8('0xa')](_0x95604e,_0x129e62)[_0x44d8('0xb')](function(_0x37201b){logger['info'](_0x44d8('0xc'),_0x2111ed,'request\x20sent');logger[_0x44d8('0xd')](_0x44d8('0xe'),_0x2111ed,_0x44d8('0xf'),JSON[_0x44d8('0x10')](_0x37201b));if(_0x37201b['error']){if(_0x37201b[_0x44d8('0x11')][_0x44d8('0x12')]===0x1f4){logger[_0x44d8('0x11')](_0x44d8('0xc'),_0x2111ed,_0x37201b[_0x44d8('0x11')][_0x44d8('0x13')]);return _0x2947f7(_0x37201b[_0x44d8('0x11')][_0x44d8('0x13')]);}logger[_0x44d8('0x11')](_0x44d8('0xc'),_0x2111ed,_0x37201b['error'][_0x44d8('0x13')]);return _0x41cf89(_0x37201b[_0x44d8('0x11')][_0x44d8('0x13')]);}else{logger[_0x44d8('0x14')](_0x44d8('0xc'),_0x2111ed,_0x44d8('0xf'));_0x41cf89(_0x37201b[_0x44d8('0x15')][_0x44d8('0x13')]);}})['catch'](function(_0x305910){logger[_0x44d8('0x11')]('FaxApplication,\x20%s,\x20%s',_0x2111ed,_0x305910);_0x2947f7(_0x305910);});});}exports['UpdateFaxApplication']=function(_0x84355f){var _0xe59fbf=this;return new Promise(function(_0x16ca06,_0x545d11){return db[_0x44d8('0x16')]['update'](_0x84355f[_0x44d8('0x17')],{'raw':_0x84355f[_0x44d8('0x18')]?_0x84355f[_0x44d8('0x18')][_0x44d8('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x84355f['options']?_0x84355f['options'][_0x44d8('0x1a')]||null:null,'attributes':_0x84355f[_0x44d8('0x18')]?_0x84355f['options'][_0x44d8('0x1b')]||null:null,'limit':_0x84355f[_0x44d8('0x18')]?_0x84355f[_0x44d8('0x18')][_0x44d8('0x1c')]||null:null})[_0x44d8('0xb')](function(_0x1866f9){logger[_0x44d8('0x14')](_0x44d8('0x1d'),_0x84355f);logger[_0x44d8('0xd')](_0x44d8('0x1d'),_0x84355f,JSON[_0x44d8('0x10')](_0x1866f9));_0x16ca06(_0x1866f9);})['catch'](function(_0x2a43a9){logger[_0x44d8('0x11')](_0x44d8('0x1d'),_0x2a43a9[_0x44d8('0x13')],_0x84355f);_0x545d11(_0xe59fbf[_0x44d8('0x11')](0x1f4,_0x2a43a9[_0x44d8('0x13')]));});});};
\ No newline at end of file
index 888fee1..4746aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','post','create','destroy','exports','path','connect-timeout','express','Router'];(function(_0x4f4a46,_0x2314fc){var _0x452474=function(_0x4c5bff){while(--_0x4c5bff){_0x4f4a46['push'](_0x4f4a46['shift']());}};_0x452474(++_0x2314fc);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3342('0x0'));var timeout=require(_0x3342('0x1'));var express=require(_0x3342('0x2'));var router=express[_0x3342('0x3')]();var fs_extra=require(_0x3342('0x4'));var auth=require(_0x3342('0x5'));var interaction=require(_0x3342('0x6'));var config=require(_0x3342('0x7'));var controller=require(_0x3342('0x8'));router[_0x3342('0x9')]('/',auth[_0x3342('0xa')](),controller[_0x3342('0xb')]);router[_0x3342('0x9')](_0x3342('0xc'),auth[_0x3342('0xa')](),controller[_0x3342('0xd')]);router[_0x3342('0xe')]('/',auth[_0x3342('0xa')](),controller[_0x3342('0xf')]);router['put']('/:id',auth[_0x3342('0xa')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x3342('0x10')]);module[_0x3342('0x11')]=router;
\ No newline at end of file
+var _0xea28=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xea28,0x13a));var _0x8ea2=function(_0xce6b02,_0x13052e){_0xce6b02=_0xce6b02-0x0;var _0x5b36fc=_0xea28[_0xce6b02];return _0x5b36fc;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xf')]('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0x11')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x12')]);router['delete']('/:id',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);module[_0x8ea2('0x14')]=router;
\ No newline at end of file
index a3250d0..3f7f404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6d=['exports','DATE','STRING','ENUM','out','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3a6d,0x143));var _0xd3a6=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x3a6d[_0x2070da];return _0x4f9fe1;};'use strict';var Sequelize=require(_0xd3a6('0x0'));module[_0xd3a6('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xd3a6('0x2')]},'disposition':{'type':Sequelize[_0xd3a6('0x3')]},'secondDisposition':{'type':Sequelize[_0xd3a6('0x3')]},'thirdDisposition':{'type':Sequelize[_0xd3a6('0x3')]},'note':{'type':Sequelize[_0xd3a6('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0xd3a6('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xd3a6('0x4')]('in',_0xd3a6('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xd3a6('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xd3a6('0x4')]('in',_0xd3a6('0x5')),'defaultValue':'in','allowNull':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xb145=['out','INTEGER','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0x4178cb,_0x290510){var _0x5555ee=function(_0x16eeda){while(--_0x16eeda){_0x4178cb['push'](_0x4178cb['shift']());}};_0x5555ee(++_0x290510);}(_0xb145,0xa3));var _0x5b14=function(_0x5c46ec,_0xc53762){_0x5c46ec=_0x5c46ec-0x0;var _0x48bc75=_0xb145[_0x5c46ec];return _0x48bc75;};'use strict';var Sequelize=require('sequelize');module[_0x5b14('0x0')]={'closed':{'type':Sequelize[_0x5b14('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x5b14('0x2')]},'disposition':{'type':Sequelize[_0x5b14('0x3')]},'secondDisposition':{'type':Sequelize[_0x5b14('0x3')]},'thirdDisposition':{'type':Sequelize[_0x5b14('0x3')]},'note':{'type':Sequelize[_0x5b14('0x3')]},'read1stAt':{'type':Sequelize[_0x5b14('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x5b14('0x4')]('in',_0x5b14('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x5b14('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x5b14('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'queueId':{'type':Sequelize[_0x5b14('0x6')]}};
\ No newline at end of file
index be6cbe7..bd7a71a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x971e=['update','body','describe','addMessage','FaxMessage','ids','getMessages','findOne','rawAttributes','filters','intersection','hasOwnProperty','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','rows','addTags','setTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','err','unlinkSync','rimraf','moment','bluebird','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','redis','localhost','./faxInteraction.socket','register','sendStatus','status','end','undefined','limit','offset','count','set','json','then','stack','name','send','index','map','fieldName','type','key','getOptions','findAll','fax','query','user','show','params','keys','model','attributes','fields','length','includeAll','include','merge','FaxInteraction','find','catch','create'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x971e,0x165));var _0xe971=function(_0x587500,_0x44c75a){_0x587500=_0x587500-0x0;var _0x2e5b7d=_0x971e[_0x587500];return _0x2e5b7d;};'use strict';var rimraf=require(_0xe971('0x0'));var zipdir=require('zip-dir');var moment=require(_0xe971('0x1'));var BPromise=require(_0xe971('0x2'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xe971('0x3'));var Redis=require('ioredis');var interaction=require(_0xe971('0x4'));var qs=require(_0xe971('0x5'));var logger=require(_0xe971('0x6'))(_0xe971('0x7'));var config=require(_0xe971('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xe971('0x9')](config[_0xe971('0xa')],{'host':_0xe971('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe971('0xa')]));require(_0xe971('0xc'))[_0xe971('0xd')](socket);function respondWithStatusCode(_0xa42052,_0x2673bc){_0x2673bc=_0x2673bc||0xcc;return function(_0x4cdfa7){if(_0x4cdfa7){return _0xa42052[_0xe971('0xe')](_0x2673bc);}return _0xa42052[_0xe971('0xf')](_0x2673bc)[_0xe971('0x10')]();};}function respondWithResult(_0xee839e,_0x15dada){_0x15dada=_0x15dada||0xc8;return function(_0x54bf75){if(_0x54bf75){return _0xee839e[_0xe971('0xf')](_0x15dada)['json'](_0x54bf75);}};}function respondWithFilteredResult(_0x7aa626,_0x4eae3d){return function(_0x733aae){if(_0x733aae){var _0x724013=typeof _0x4eae3d['offset']===_0xe971('0x11')&&typeof _0x4eae3d[_0xe971('0x12')]===_0xe971('0x11');var _0x16998a=_0x733aae['count'];var _0x5a24d5=_0x724013?0x0:_0x4eae3d[_0xe971('0x13')];var _0x175369=_0x724013?_0x733aae[_0xe971('0x14')]:_0x4eae3d[_0xe971('0x13')]+_0x4eae3d[_0xe971('0x12')];var _0x7e920f;if(_0x175369>=_0x16998a){_0x175369=_0x16998a;_0x7e920f=0xc8;}else{_0x7e920f=0xce;}_0x7aa626[_0xe971('0xf')](_0x7e920f);return _0x7aa626[_0xe971('0x15')]('Content-Range',_0x5a24d5+'-'+_0x175369+'/'+_0x16998a)[_0xe971('0x16')](_0x733aae);}return null;};}function saveUpdates(_0x42f7ec){return function(_0x29225c){if(_0x29225c){return _0x29225c['update'](_0x42f7ec)[_0xe971('0x17')](function(_0x121da8){return _0x121da8;});}return null;};}function removeEntity(_0x15677a){return function(_0xac6def){if(_0xac6def){return _0xac6def['destroy']()[_0xe971('0x17')](function(){_0x15677a[_0xe971('0xf')](0xcc)[_0xe971('0x10')]();});}};}function handleEntityNotFound(_0x2146e8){return function(_0x1b2689){if(!_0x1b2689){_0x2146e8[_0xe971('0xe')](0x194);}return _0x1b2689;};}function handleError(_0x17fe3a,_0x5091c0){_0x5091c0=_0x5091c0||0x1f4;return function(_0x565a67){logger['error'](_0x565a67[_0xe971('0x18')]);if(_0x565a67[_0xe971('0x19')]){delete _0x565a67[_0xe971('0x19')];}_0x17fe3a[_0xe971('0xf')](_0x5091c0)[_0xe971('0x1a')](_0x565a67);};}exports[_0xe971('0x1b')]=function(_0x25c8dd,_0x418714){var _0x18c660={};var _0x57be20=_[_0xe971('0x1c')](db['FaxInteraction']['rawAttributes'],function(_0x8dae3c){return{'name':_0x8dae3c[_0xe971('0x1d')],'type':_0x8dae3c[_0xe971('0x1e')][_0xe971('0x1f')]};});_0x18c660=qs[_0xe971('0x20')](_0x57be20,_0x25c8dd);return interaction[_0xe971('0x21')](_0xe971('0x22'),_0x25c8dd[_0xe971('0x23')],_0x25c8dd[_0xe971('0x24')],_0x18c660,_0x57be20)['then'](respondWithFilteredResult(_0x418714,_0x18c660))['catch'](handleError(_0x418714,null));};exports[_0xe971('0x25')]=function(_0x50c486,_0xbb391d){var _0xc3c88f={'raw':![],'where':{'id':_0x50c486[_0xe971('0x26')]['id']}},_0x3b4d88={};_0x3b4d88['model']=_[_0xe971('0x27')](db['FaxInteraction']['rawAttributes']);_0x3b4d88[_0xe971('0x23')]=_[_0xe971('0x27')](_0x50c486[_0xe971('0x23')]);_0x3b4d88['filters']=_['intersection'](_0x3b4d88[_0xe971('0x28')],_0x3b4d88[_0xe971('0x23')]);_0xc3c88f[_0xe971('0x29')]=_['intersection'](_0x3b4d88[_0xe971('0x28')],qs['fields'](_0x50c486['query'][_0xe971('0x2a')]));_0xc3c88f[_0xe971('0x29')]=_0xc3c88f[_0xe971('0x29')][_0xe971('0x2b')]?_0xc3c88f[_0xe971('0x29')]:_0x3b4d88[_0xe971('0x28')];if(_0x50c486['query'][_0xe971('0x2c')]){_0xc3c88f[_0xe971('0x2d')]=[{'all':!![]}];}_0xc3c88f=_[_0xe971('0x2e')]({},_0xc3c88f,_0x50c486['options']);return db[_0xe971('0x2f')][_0xe971('0x30')](_0xc3c88f)[_0xe971('0x17')](handleEntityNotFound(_0xbb391d,null))['then'](respondWithResult(_0xbb391d,null))[_0xe971('0x31')](handleError(_0xbb391d,null));};exports[_0xe971('0x32')]=function(_0x2468da,_0x4f0ea5){return db[_0xe971('0x2f')]['create'](_0x2468da['body'],{})[_0xe971('0x17')](respondWithResult(_0x4f0ea5,0xc9))[_0xe971('0x31')](handleError(_0x4f0ea5,null));};exports[_0xe971('0x33')]=function(_0x488666,_0x1792f1){if(_0x488666[_0xe971('0x34')]['id']){delete _0x488666[_0xe971('0x34')]['id'];}return db[_0xe971('0x2f')][_0xe971('0x30')]({'where':{'id':_0x488666['params']['id']}})[_0xe971('0x17')](handleEntityNotFound(_0x1792f1,null))[_0xe971('0x17')](saveUpdates(_0x488666[_0xe971('0x34')],null))[_0xe971('0x17')](respondWithResult(_0x1792f1,null))[_0xe971('0x31')](handleError(_0x1792f1,null));};exports['destroy']=function(_0x34ff3a,_0x126492){return db[_0xe971('0x2f')]['find']({'where':{'id':_0x34ff3a[_0xe971('0x26')]['id']}})[_0xe971('0x17')](handleEntityNotFound(_0x126492,null))[_0xe971('0x17')](removeEntity(_0x126492,null))[_0xe971('0x31')](handleError(_0x126492,null));};exports[_0xe971('0x35')]=function(_0x2e6917,_0x4d2202){return db[_0xe971('0x2f')][_0xe971('0x35')]()['then'](respondWithResult(_0x4d2202,null))[_0xe971('0x31')](handleError(_0x4d2202,null));};exports[_0xe971('0x36')]=function(_0x26f589,_0x3b38c4){return db[_0xe971('0x37')]['find']({'where':{'id':_0x26f589['params']['id']}})['then'](handleEntityNotFound(_0x3b38c4,null))[_0xe971('0x17')](function(_0x22f7aa){if(_0x22f7aa){return _0x22f7aa['addMessage'](_0x26f589[_0xe971('0x34')]['ids'],_['omit'](_0x26f589['body'],[_0xe971('0x38'),'id'])||{});}})[_0xe971('0x17')](respondWithResult(_0x3b38c4,null))['catch'](handleError(_0x3b38c4,null));};exports[_0xe971('0x39')]=function(_0x2dc392,_0x4bf8a2){var _0x53dffd={'raw':![],'where':{}};var _0x3a72c4={};var _0x393ab7={'count':0x0,'rows':[]};return db[_0xe971('0x2f')][_0xe971('0x3a')]({'where':{'id':_0x2dc392['params']['id']}})[_0xe971('0x17')](handleEntityNotFound(_0x4bf8a2,null))[_0xe971('0x17')](function(_0x5482b4){if(_0x5482b4){_0x3a72c4[_0xe971('0x28')]=_[_0xe971('0x27')](db[_0xe971('0x37')][_0xe971('0x3b')]);_0x3a72c4[_0xe971('0x23')]=_[_0xe971('0x27')](_0x2dc392['query']);_0x3a72c4[_0xe971('0x3c')]=_[_0xe971('0x3d')](_0x3a72c4[_0xe971('0x28')],_0x3a72c4['query']);_0x53dffd[_0xe971('0x29')]=_[_0xe971('0x3d')](_0x3a72c4[_0xe971('0x28')],qs[_0xe971('0x2a')](_0x2dc392['query'][_0xe971('0x2a')]));_0x53dffd['attributes']=_0x53dffd[_0xe971('0x29')]['length']?_0x53dffd[_0xe971('0x29')]:_0x3a72c4['model'];if(!_0x2dc392[_0xe971('0x23')][_0xe971('0x3e')]('nolimit')){_0x53dffd[_0xe971('0x12')]=qs['limit'](_0x2dc392['query'][_0xe971('0x12')]);_0x53dffd[_0xe971('0x13')]=qs[_0xe971('0x13')](_0x2dc392[_0xe971('0x23')][_0xe971('0x13')]);}_0x53dffd['order']=qs[_0xe971('0x3f')](_0x2dc392['query'][_0xe971('0x3f')]);_0x53dffd[_0xe971('0x40')]=qs['filters'](_[_0xe971('0x41')](_0x2dc392[_0xe971('0x23')],_0x3a72c4[_0xe971('0x3c')]));_0x53dffd[_0xe971('0x40')]['FaxInteractionId']=_0x5482b4['id'];if(_0x2dc392['query'][_0xe971('0x42')]){_0x53dffd[_0xe971('0x40')]=_[_0xe971('0x2e')](_0x53dffd[_0xe971('0x40')],{'$or':_[_0xe971('0x1c')](_0x53dffd['attributes'],function(_0x15ba03){var _0x2ef761={};_0x2ef761[_0x15ba03]={'$like':'%'+_0x2dc392[_0xe971('0x23')]['filter']+'%'};return _0x2ef761;})});}if(_0x2dc392[_0xe971('0x23')][_0xe971('0x43')]){var _0x4cbfcf=_0x2dc392[_0xe971('0x23')][_0xe971('0x43')][_0xe971('0x44')](',');var _0x17e4d1={};_0x17e4d1[_0x4cbfcf[0x0]]={'$gte':moment(_0x4cbfcf[0x1])[_0xe971('0x45')](_0xe971('0x46'))};_0x53dffd[_0xe971('0x40')]=_[_0xe971('0x2e')](_0x53dffd[_0xe971('0x40')],_0x17e4d1);}_0x53dffd=_[_0xe971('0x2e')]({},_0x53dffd,_0x2dc392[_0xe971('0x47')]);return db[_0xe971('0x37')]['count']({'where':_0x53dffd['where']})[_0xe971('0x17')](function(_0x29761f){_0x393ab7['count']=_0x29761f;if(_0x2dc392[_0xe971('0x23')][_0xe971('0x2c')]){_0x53dffd[_0xe971('0x2d')]=[{'all':!![]}];}return db[_0xe971('0x37')][_0xe971('0x21')](_0x53dffd);})[_0xe971('0x17')](function(_0x1d2f98){_0x393ab7[_0xe971('0x48')]=_0x1d2f98;return _0x393ab7;});}})[_0xe971('0x17')](respondWithFilteredResult(_0x4bf8a2,_0x53dffd))[_0xe971('0x31')](handleError(_0x4bf8a2,null));};exports[_0xe971('0x49')]=function(_0x3e1847,_0x141999){return db[_0xe971('0x2f')]['find']({'where':{'id':_0x3e1847[_0xe971('0x26')]['id']}})['then'](handleEntityNotFound(_0x141999,null))[_0xe971('0x17')](function(_0x5bbd2c){if(_0x5bbd2c){return _0x5bbd2c[_0xe971('0x4a')](_0x3e1847[_0xe971('0x34')][_0xe971('0x38')],_['omit'](_0x3e1847[_0xe971('0x34')],['ids','id'])||{})[_0xe971('0x4b')](function(){return db[_0xe971('0x4c')][_0xe971('0x21')]({'attributes':['id',_0xe971('0x19'),_0xe971('0x4d')],'where':{'id':_0x3e1847[_0xe971('0x34')][_0xe971('0x38')]}});})[_0xe971('0x17')](function(_0x3ba6af){socket[_0xe971('0x4e')](_0xe971('0x4f'),{'id':Number(_0x3e1847[_0xe971('0x26')]['id']),'tags':_0x3ba6af||[]});return{'id':Number(_0x3e1847[_0xe971('0x26')]['id']),'tags':_0x3ba6af||[]};});}})[_0xe971('0x17')](respondWithResult(_0x141999,null))['catch'](handleError(_0x141999,null));};exports[_0xe971('0x50')]=function(_0x4b3918,_0x2250ea){return db[_0xe971('0x2f')][_0xe971('0x30')]({'where':{'id':_0x4b3918['params']['id']}})['then'](handleEntityNotFound(_0x2250ea,null))['then'](function(_0x1a85a0){if(_0x1a85a0){return _0x1a85a0[_0xe971('0x50')](_0x4b3918[_0xe971('0x23')][_0xe971('0x38')]);}})[_0xe971('0x17')](respondWithStatusCode(_0x2250ea,null))[_0xe971('0x31')](handleError(_0x2250ea,null));};exports[_0xe971('0x51')]=function(_0x31b635,_0x2c6218){var _0x2b5dfc=moment()[_0xe971('0x52')]()['toString']();var _0x3ce6c0=path[_0xe971('0x53')](config[_0xe971('0x54')],_0xe971('0x55'),_0xe971('0x56'),_0xe971('0x57'));var _0x192afb=path['join'](config[_0xe971('0x54')],_0xe971('0x55'),'files','attachments');var _0x5a8b25=path[_0xe971('0x53')](_0x3ce6c0,_0x2b5dfc);var _0x271f06=util[_0xe971('0x45')](_0xe971('0x58'),_0x31b635[_0xe971('0x26')]['id'],_0x2b5dfc);var _0x43c8f0=path['join'](_0x3ce6c0,_0x271f06);var _0x1e70b5=[];_0x1e70b5['push']({'model':db[_0xe971('0x59')],'as':_0xe971('0x59'),'raw':!![]});var _0x3df5d3=[{'model':db[_0xe971('0x37')],'as':_0xe971('0x5a'),'attributes':['id',_0xe971('0x34'),_0xe971('0x5b')],'include':_0x1e70b5}];return db['FaxInteraction'][_0xe971('0x30')]({'where':{'id':_0x31b635['params']['id']},'include':_0x3df5d3})['then'](handleEntityNotFound(_0x2c6218,null))[_0xe971('0x17')](function(_0x141329){if(_0x141329&&_0x141329['Messages']){var _0x336b5f=_0x141329[_0xe971('0x5c')]({'plain':!![]});fs[_0xe971('0x5d')](_0x5a8b25);for(var _0x10c742=0x0;_0x10c742<_0x336b5f['Messages'][_0xe971('0x2b')];_0x10c742++){var _0x4b9539=_0x336b5f[_0xe971('0x5a')][_0x10c742][_0xe971('0x59')];if(_0x4b9539){var _0x21e27d=path[_0xe971('0x53')](_0x192afb,_0x4b9539[_0xe971('0x5e')]);if(fs[_0xe971('0x5f')](_0x21e27d)){fs[_0xe971('0x60')](_0x21e27d)[_0xe971('0x61')](fs[_0xe971('0x62')](path[_0xe971('0x53')](_0x5a8b25,_0x4b9539[_0xe971('0x5e')])));}}}return BPromise[_0xe971('0x63')]()['then'](function(){return new BPromise(function(_0x563709,_0x47d2b5){zipdir(_0x5a8b25,{'saveTo':_0x43c8f0},function(_0x4482f6,_0x1506b4){if(_0x4482f6)return _0x47d2b5(_0x4482f6);return _0x563709(_0x1506b4);});})[_0xe971('0x17')](function(){return new BPromise(function(_0x54c5ea,_0x384a63){rimraf(_0x5a8b25,function(_0xec1e7f){if(_0xec1e7f)_0x384a63(_0xec1e7f);return _0x54c5ea();});});})[_0xe971('0x17')](function(){return _0x2c6218[_0xe971('0x51')](_0x43c8f0,_0x271f06,function(_0x45e3c7){if(_0x45e3c7){console['log'](_0xe971('0x64'),_0x45e3c7);}else{fs[_0xe971('0x65')](_0x43c8f0);}});});});}else{return _0x2c6218['sendStatus'](0xc8);}})[_0xe971('0x31')](handleError(_0x2c6218,null));};
\ No newline at end of file
+var _0x3901=['spread','color','emit','faxInteractionTags:save','removeTags','unix','toString','root','files','join','server','attachments','transcript-%d-%s.zip','push','Attachment','createdAt','Messages','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','basename','resolve','download','log','unlinkSync','rimraf','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../mysqldb','redis','defaults','localhost','./faxInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','then','stack','name','send','index','map','FaxInteraction','rawAttributes','type','getOptions','query','user','catch','show','model','keys','filters','intersection','fields','attributes','length','includeAll','options','find','create','update','body','params','describe','addMessage','FaxMessage','ids','omit','findOne','hasOwnProperty','nolimit','sort','pick','where','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','findAll','addTags','setTags'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3901,0x7e));var _0x1390=function(_0xf5605c,_0x178148){_0xf5605c=_0xf5605c-0x0;var _0x4a5d10=_0x3901[_0xf5605c];return _0x4a5d10;};'use strict';var rimraf=require(_0x1390('0x0'));var zipdir=require('zip-dir');var moment=require(_0x1390('0x1'));var BPromise=require(_0x1390('0x2'));var util=require(_0x1390('0x3'));var path=require(_0x1390('0x4'));var fs=require('fs');var _=require(_0x1390('0x5'));var Redis=require(_0x1390('0x6'));var interaction=require(_0x1390('0x7'));var qs=require(_0x1390('0x8'));var logger=require('../../config/logger')('api');var config=require('../../config/environment');var db=require(_0x1390('0x9'))['db'];config[_0x1390('0xa')]=_[_0x1390('0xb')](config[_0x1390('0xa')],{'host':_0x1390('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1390('0xa')]));require(_0x1390('0xd'))[_0x1390('0xe')](socket);function respondWithStatusCode(_0x48568f,_0x3d371a){_0x3d371a=_0x3d371a||0xcc;return function(_0x16721b){if(_0x16721b){return _0x48568f[_0x1390('0xf')](_0x3d371a);}return _0x48568f['status'](_0x3d371a)['end']();};}function respondWithResult(_0x351396,_0x45cb15){_0x45cb15=_0x45cb15||0xc8;return function(_0x49f4c0){if(_0x49f4c0){return _0x351396[_0x1390('0x10')](_0x45cb15)[_0x1390('0x11')](_0x49f4c0);}};}function respondWithFilteredResult(_0x30189d,_0x1d9c75){return function(_0x16d182){if(_0x16d182){var _0x586153=typeof _0x1d9c75[_0x1390('0x12')]===_0x1390('0x13')&&typeof _0x1d9c75[_0x1390('0x14')]===_0x1390('0x13');var _0xb442af=_0x16d182[_0x1390('0x15')];var _0x5edbb8=_0x586153?0x0:_0x1d9c75[_0x1390('0x12')];var _0x2dd949=_0x586153?_0x16d182['count']:_0x1d9c75[_0x1390('0x12')]+_0x1d9c75[_0x1390('0x14')];var _0x278795;if(_0x2dd949>=_0xb442af){_0x2dd949=_0xb442af;_0x278795=0xc8;}else{_0x278795=0xce;}_0x30189d[_0x1390('0x10')](_0x278795);return _0x30189d[_0x1390('0x16')](_0x1390('0x17'),_0x5edbb8+'-'+_0x2dd949+'/'+_0xb442af)[_0x1390('0x11')](_0x16d182);}return null;};}function saveUpdates(_0x1d4e25){return function(_0x4aec57){if(_0x4aec57){return _0x4aec57['update'](_0x1d4e25)[_0x1390('0x18')](function(_0x613f24){return _0x613f24;});}return null;};}function removeEntity(_0x5192b3){return function(_0x402da4){if(_0x402da4){return _0x402da4['destroy']()['then'](function(){_0x5192b3[_0x1390('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47d179){return function(_0x2d3f90){if(!_0x2d3f90){_0x47d179['sendStatus'](0x194);}return _0x2d3f90;};}function handleError(_0x5626ae,_0x50557b){_0x50557b=_0x50557b||0x1f4;return function(_0x1d4e1e){logger['error'](_0x1d4e1e[_0x1390('0x19')]);if(_0x1d4e1e['name']){delete _0x1d4e1e[_0x1390('0x1a')];}_0x5626ae[_0x1390('0x10')](_0x50557b)[_0x1390('0x1b')](_0x1d4e1e);};}exports[_0x1390('0x1c')]=function(_0x471a55,_0x4a1b04){var _0x4e2a21={};var _0x29d122=_[_0x1390('0x1d')](db[_0x1390('0x1e')][_0x1390('0x1f')],function(_0x36cb1a){return{'name':_0x36cb1a['fieldName'],'type':_0x36cb1a[_0x1390('0x20')]['key']};});_0x4e2a21=qs[_0x1390('0x21')](_0x29d122,_0x471a55);return interaction['findAll']('fax',_0x471a55[_0x1390('0x22')],_0x471a55[_0x1390('0x23')],_0x4e2a21,_0x29d122)[_0x1390('0x18')](respondWithFilteredResult(_0x4a1b04,_0x4e2a21))[_0x1390('0x24')](handleError(_0x4a1b04,null));};exports[_0x1390('0x25')]=function(_0x353d77,_0x32be99){var _0x3d3a32={'raw':![],'where':{'id':_0x353d77['params']['id']}},_0x344367={};_0x344367[_0x1390('0x26')]=_[_0x1390('0x27')](db[_0x1390('0x1e')][_0x1390('0x1f')]);_0x344367[_0x1390('0x22')]=_['keys'](_0x353d77[_0x1390('0x22')]);_0x344367[_0x1390('0x28')]=_[_0x1390('0x29')](_0x344367[_0x1390('0x26')],_0x344367[_0x1390('0x22')]);_0x3d3a32['attributes']=_[_0x1390('0x29')](_0x344367[_0x1390('0x26')],qs[_0x1390('0x2a')](_0x353d77[_0x1390('0x22')][_0x1390('0x2a')]));_0x3d3a32[_0x1390('0x2b')]=_0x3d3a32[_0x1390('0x2b')][_0x1390('0x2c')]?_0x3d3a32[_0x1390('0x2b')]:_0x344367[_0x1390('0x26')];if(_0x353d77['query'][_0x1390('0x2d')]){_0x3d3a32['include']=[{'all':!![]}];}_0x3d3a32=_['merge']({},_0x3d3a32,_0x353d77[_0x1390('0x2e')]);return db[_0x1390('0x1e')][_0x1390('0x2f')](_0x3d3a32)[_0x1390('0x18')](handleEntityNotFound(_0x32be99,null))[_0x1390('0x18')](respondWithResult(_0x32be99,null))[_0x1390('0x24')](handleError(_0x32be99,null));};exports[_0x1390('0x30')]=function(_0x2578f2,_0x2f0b2b){return db[_0x1390('0x1e')][_0x1390('0x30')](_0x2578f2['body'],{})[_0x1390('0x18')](respondWithResult(_0x2f0b2b,0xc9))[_0x1390('0x24')](handleError(_0x2f0b2b,null));};exports[_0x1390('0x31')]=function(_0x3d2581,_0x9959c0){if(_0x3d2581[_0x1390('0x32')]['id']){delete _0x3d2581[_0x1390('0x32')]['id'];}return db[_0x1390('0x1e')][_0x1390('0x2f')]({'where':{'id':_0x3d2581[_0x1390('0x33')]['id']}})[_0x1390('0x18')](handleEntityNotFound(_0x9959c0,null))['then'](saveUpdates(_0x3d2581['body'],null))[_0x1390('0x18')](respondWithResult(_0x9959c0,null))[_0x1390('0x24')](handleError(_0x9959c0,null));};exports['destroy']=function(_0x2505e1,_0x5d1c28){return db[_0x1390('0x1e')]['find']({'where':{'id':_0x2505e1['params']['id']}})['then'](handleEntityNotFound(_0x5d1c28,null))[_0x1390('0x18')](removeEntity(_0x5d1c28,null))[_0x1390('0x24')](handleError(_0x5d1c28,null));};exports[_0x1390('0x34')]=function(_0x229084,_0xcd796c){return db[_0x1390('0x1e')]['describe']()[_0x1390('0x18')](respondWithResult(_0xcd796c,null))[_0x1390('0x24')](handleError(_0xcd796c,null));};exports[_0x1390('0x35')]=function(_0x7ad3e,_0x41d2f3){return db[_0x1390('0x36')][_0x1390('0x2f')]({'where':{'id':_0x7ad3e[_0x1390('0x33')]['id']}})['then'](handleEntityNotFound(_0x41d2f3,null))[_0x1390('0x18')](function(_0x26a4b7){if(_0x26a4b7){return _0x26a4b7[_0x1390('0x35')](_0x7ad3e[_0x1390('0x32')][_0x1390('0x37')],_[_0x1390('0x38')](_0x7ad3e[_0x1390('0x32')],[_0x1390('0x37'),'id'])||{});}})[_0x1390('0x18')](respondWithResult(_0x41d2f3,null))[_0x1390('0x24')](handleError(_0x41d2f3,null));};exports['getMessages']=function(_0x2bc6dc,_0x2b6c39){var _0x4ab0b6={'raw':![],'where':{}};var _0x5d883a={};var _0x40acff={'count':0x0,'rows':[]};return db[_0x1390('0x1e')][_0x1390('0x39')]({'where':{'id':_0x2bc6dc[_0x1390('0x33')]['id']}})[_0x1390('0x18')](handleEntityNotFound(_0x2b6c39,null))['then'](function(_0x204ab7){if(_0x204ab7){_0x5d883a['model']=_[_0x1390('0x27')](db[_0x1390('0x36')]['rawAttributes']);_0x5d883a[_0x1390('0x22')]=_[_0x1390('0x27')](_0x2bc6dc[_0x1390('0x22')]);_0x5d883a[_0x1390('0x28')]=_[_0x1390('0x29')](_0x5d883a[_0x1390('0x26')],_0x5d883a[_0x1390('0x22')]);_0x4ab0b6['attributes']=_[_0x1390('0x29')](_0x5d883a['model'],qs[_0x1390('0x2a')](_0x2bc6dc['query']['fields']));_0x4ab0b6[_0x1390('0x2b')]=_0x4ab0b6['attributes'][_0x1390('0x2c')]?_0x4ab0b6[_0x1390('0x2b')]:_0x5d883a[_0x1390('0x26')];if(!_0x2bc6dc['query'][_0x1390('0x3a')](_0x1390('0x3b'))){_0x4ab0b6[_0x1390('0x14')]=qs[_0x1390('0x14')](_0x2bc6dc['query'][_0x1390('0x14')]);_0x4ab0b6['offset']=qs[_0x1390('0x12')](_0x2bc6dc[_0x1390('0x22')][_0x1390('0x12')]);}_0x4ab0b6['order']=qs[_0x1390('0x3c')](_0x2bc6dc[_0x1390('0x22')][_0x1390('0x3c')]);_0x4ab0b6['where']=qs[_0x1390('0x28')](_[_0x1390('0x3d')](_0x2bc6dc['query'],_0x5d883a[_0x1390('0x28')]));_0x4ab0b6[_0x1390('0x3e')]['FaxInteractionId']=_0x204ab7['id'];if(_0x2bc6dc['query'][_0x1390('0x3f')]){_0x4ab0b6[_0x1390('0x3e')]=_['merge'](_0x4ab0b6[_0x1390('0x3e')],{'$or':_['map'](_0x4ab0b6[_0x1390('0x2b')],function(_0x348f5a){var _0x4ada9d={};_0x4ada9d[_0x348f5a]={'$like':'%'+_0x2bc6dc[_0x1390('0x22')][_0x1390('0x3f')]+'%'};return _0x4ada9d;})});}if(_0x2bc6dc['query'][_0x1390('0x40')]){var _0x3392dd=_0x2bc6dc['query'][_0x1390('0x40')][_0x1390('0x41')](',');var _0x5cdc69={};_0x5cdc69[_0x3392dd[0x0]]={'$gte':moment(_0x3392dd[0x1])[_0x1390('0x42')](_0x1390('0x43'))};_0x4ab0b6[_0x1390('0x3e')]=_[_0x1390('0x44')](_0x4ab0b6[_0x1390('0x3e')],_0x5cdc69);}_0x4ab0b6=_[_0x1390('0x44')]({},_0x4ab0b6,_0x2bc6dc[_0x1390('0x2e')]);return db['FaxMessage'][_0x1390('0x15')]({'where':_0x4ab0b6[_0x1390('0x3e')]})[_0x1390('0x18')](function(_0x555790){_0x40acff['count']=_0x555790;if(_0x2bc6dc[_0x1390('0x22')][_0x1390('0x2d')]){_0x4ab0b6['include']=[{'all':!![]}];}return db[_0x1390('0x36')][_0x1390('0x45')](_0x4ab0b6);})[_0x1390('0x18')](function(_0x1975c4){_0x40acff['rows']=_0x1975c4;return _0x40acff;});}})[_0x1390('0x18')](respondWithFilteredResult(_0x2b6c39,_0x4ab0b6))[_0x1390('0x24')](handleError(_0x2b6c39,null));};exports[_0x1390('0x46')]=function(_0x1a7ec7,_0x3ae1de){return db[_0x1390('0x1e')][_0x1390('0x2f')]({'where':{'id':_0x1a7ec7[_0x1390('0x33')]['id']}})[_0x1390('0x18')](handleEntityNotFound(_0x3ae1de,null))[_0x1390('0x18')](function(_0x5ea32d){if(_0x5ea32d){return _0x5ea32d[_0x1390('0x47')](_0x1a7ec7['body'][_0x1390('0x37')],_[_0x1390('0x38')](_0x1a7ec7['body'],[_0x1390('0x37'),'id'])||{})[_0x1390('0x48')](function(){return db['Tag'][_0x1390('0x45')]({'attributes':['id',_0x1390('0x1a'),_0x1390('0x49')],'where':{'id':_0x1a7ec7[_0x1390('0x32')]['ids']}});})['then'](function(_0x108bf1){socket[_0x1390('0x4a')](_0x1390('0x4b'),{'id':Number(_0x1a7ec7['params']['id']),'tags':_0x108bf1||[]});return{'id':Number(_0x1a7ec7[_0x1390('0x33')]['id']),'tags':_0x108bf1||[]};});}})[_0x1390('0x18')](respondWithResult(_0x3ae1de,null))['catch'](handleError(_0x3ae1de,null));};exports[_0x1390('0x4c')]=function(_0x2943ba,_0x1d078d){return db['FaxInteraction'][_0x1390('0x2f')]({'where':{'id':_0x2943ba['params']['id']}})[_0x1390('0x18')](handleEntityNotFound(_0x1d078d,null))['then'](function(_0x57c15d){if(_0x57c15d){return _0x57c15d['removeTags'](_0x2943ba[_0x1390('0x22')]['ids']);}})[_0x1390('0x18')](respondWithStatusCode(_0x1d078d,null))[_0x1390('0x24')](handleError(_0x1d078d,null));};exports['download']=function(_0x26e152,_0xc0079f){var _0x3e8a4e=moment()[_0x1390('0x4d')]()[_0x1390('0x4e')]();var _0x296bb4=path['join'](config[_0x1390('0x4f')],'server',_0x1390('0x50'),'tmp');var _0x2736b0=path[_0x1390('0x51')](config['root'],_0x1390('0x52'),_0x1390('0x50'),_0x1390('0x53'));var _0x280944=path[_0x1390('0x51')](_0x296bb4,_0x3e8a4e);var _0x4052ac=util[_0x1390('0x42')](_0x1390('0x54'),_0x26e152[_0x1390('0x33')]['id'],_0x3e8a4e);var _0xc2177b=path[_0x1390('0x51')](_0x296bb4,_0x4052ac);var _0x55f55a=[];_0x55f55a[_0x1390('0x55')]({'model':db[_0x1390('0x56')],'as':'Attachment','raw':!![]});var _0x18b4a9=[{'model':db['FaxMessage'],'as':'Messages','attributes':['id','body',_0x1390('0x57')],'include':_0x55f55a}];return db[_0x1390('0x1e')][_0x1390('0x2f')]({'where':{'id':_0x26e152[_0x1390('0x33')]['id']},'include':_0x18b4a9})['then'](handleEntityNotFound(_0xc0079f,null))[_0x1390('0x18')](function(_0x172e71){if(_0x172e71&&_0x172e71[_0x1390('0x58')]){var _0x4a627e=_0x172e71['get']({'plain':!![]});fs[_0x1390('0x59')](_0x280944);for(var _0x5f23ef=0x0;_0x5f23ef<_0x4a627e['Messages'][_0x1390('0x2c')];_0x5f23ef++){var _0x4a77f2=_0x4a627e['Messages'][_0x5f23ef][_0x1390('0x56')];if(_0x4a77f2){var _0x262478=path[_0x1390('0x51')](_0x2736b0,_0x4a77f2['basename']);if(fs[_0x1390('0x5a')](_0x262478)){fs[_0x1390('0x5b')](_0x262478)[_0x1390('0x5c')](fs[_0x1390('0x5d')](path[_0x1390('0x51')](_0x280944,_0x4a77f2[_0x1390('0x5e')])));}}}return BPromise[_0x1390('0x5f')]()[_0x1390('0x18')](function(){return new BPromise(function(_0x4781b9,_0x51970c){zipdir(_0x280944,{'saveTo':_0xc2177b},function(_0x5850fb,_0x41da0f){if(_0x5850fb)return _0x51970c(_0x5850fb);return _0x4781b9(_0x41da0f);});})['then'](function(){return new BPromise(function(_0x3139aa,_0x4a95a8){rimraf(_0x280944,function(_0x3cf861){if(_0x3cf861)_0x4a95a8(_0x3cf861);return _0x3139aa();});});})[_0x1390('0x18')](function(){return _0xc0079f[_0x1390('0x60')](_0xc2177b,_0x4052ac,function(_0x54e0a8){if(_0x54e0a8){console[_0x1390('0x61')]('err',_0x54e0a8);}else{fs[_0x1390('0x62')](_0xc2177b);}});});});}else{return _0xc0079f[_0x1390('0xf')](0xc8);}})['catch'](handleError(_0xc0079f,null));};
\ No newline at end of file
index 43ee807..e1d1c81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4307=['FaxInteraction','update','remove','getUsers','then','setDataValue','Users','map','unreadMessages','length','catch','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x5b9f8e,_0x2c1a03){var _0x3728e5=function(_0x3c699d){while(--_0x3c699d){_0x5b9f8e['push'](_0x5b9f8e['shift']());}};_0x3728e5(++_0x2c1a03);}(_0x4307,0xc1));var _0x7430=function(_0x3d2d87,_0x1f87db){_0x3d2d87=_0x3d2d87-0x0;var _0x3c5183=_0x4307[_0x3d2d87];return _0x3c5183;};'use strict';var EventEmitter=require(_0x7430('0x0'));var FaxInteraction=require(_0x7430('0x1'))['db'][_0x7430('0x2')];var FaxMessage=require(_0x7430('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x7430('0x3'),'afterDestroy':_0x7430('0x4')};function emitEvent(_0x45e8b4){return function(_0x595165,_0x1481e3,_0x1ef2c6){_0x595165[_0x7430('0x5')]({'attributes':['id'],'raw':!![]})[_0x7430('0x6')](function(_0x377ead){_0x595165[_0x7430('0x7')](_0x7430('0x8'),_0x377ead[_0x7430('0x9')](function(_0x11bc07){return{'id':_0x11bc07['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x595165['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7430('0x6')](function(_0x3a6277){_0x595165[_0x7430('0x7')](_0x7430('0xa'),_0x3a6277[_0x7430('0xb')]);FaxInteractionEvents['emit'](_0x45e8b4+':'+_0x595165['id'],_0x595165);FaxInteractionEvents['emit'](_0x45e8b4,_0x595165);_0x1ef2c6(null);})[_0x7430('0xc')](_0x1ef2c6(null));};}for(var e in events){if(events[_0x7430('0xd')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x7430('0xe')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x0bfc=['length','emit','catch','hook','exports','FaxInteraction','FaxMessage','update','remove','getUsers','then','map','setDataValue','unreadMessages'];(function(_0x4f8c11,_0x397cd5){var _0x4a8d6e=function(_0x4fbd44){while(--_0x4fbd44){_0x4f8c11['push'](_0x4f8c11['shift']());}};_0x4a8d6e(++_0x397cd5);}(_0x0bfc,0x19b));var _0xc0bf=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x0bfc[_0x24237f];return _0x48298e;};'use strict';var EventEmitter=require('events');var FaxInteraction=require('../../mysqldb')['db'][_0xc0bf('0x0')];var FaxMessage=require('../../mysqldb')['db'][_0xc0bf('0x1')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xc0bf('0x2'),'afterDestroy':_0xc0bf('0x3')};function emitEvent(_0x4b7c46){return function(_0x47d174,_0x3bebe,_0x40ce5c){_0x47d174[_0xc0bf('0x4')]({'attributes':['id'],'raw':!![]})[_0xc0bf('0x5')](function(_0x5deaa6){_0x47d174['setDataValue']('Users',_0x5deaa6[_0xc0bf('0x6')](function(_0x282242){return{'id':_0x282242['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x47d174['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc0bf('0x5')](function(_0x44d50f){_0x47d174[_0xc0bf('0x7')](_0xc0bf('0x8'),_0x44d50f[_0xc0bf('0x9')]);FaxInteractionEvents['emit'](_0x4b7c46+':'+_0x47d174['id'],_0x47d174);FaxInteractionEvents[_0xc0bf('0xa')](_0x4b7c46,_0x47d174);_0x40ce5c(null);})[_0xc0bf('0xb')](_0x40ce5c(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0xc0bf('0xc')](e,emitEvent(event));}}module[_0xc0bf('0xd')]=FaxInteractionEvents;
\ No newline at end of file
index 628c063..1adea0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcdb=['rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','fax_interactions','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1b92a6,_0x14444b){var _0x24be5b=function(_0x3a5fb5){while(--_0x3a5fb5){_0x1b92a6['push'](_0x1b92a6['shift']());}};_0x24be5b(++_0x14444b);}(_0xdcdb,0x64));var _0xbdcd=function(_0x496129,_0x55abf3){_0x496129=_0x496129-0x0;var _0x389db1=_0xdcdb[_0x496129];return _0x389db1;};'use strict';var _=require(_0xbdcd('0x0'));var util=require(_0xbdcd('0x1'));var logger=require(_0xbdcd('0x2'))(_0xbdcd('0x3'));var moment=require(_0xbdcd('0x4'));var BPromise=require(_0xbdcd('0x5'));var rp=require(_0xbdcd('0x6'));var fs=require('fs');var path=require(_0xbdcd('0x7'));var rimraf=require(_0xbdcd('0x8'));var config=require(_0xbdcd('0x9'));var attributes=require(_0xbdcd('0xa'));module[_0xbdcd('0xb')]=function(_0x3a8b0d,_0x471f46){return _0x3a8b0d[_0xbdcd('0xc')](_0xbdcd('0xd'),attributes,{'tableName':_0xbdcd('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x338a29,_0x201493,_0x402461){if(_0x338a29['changed'](_0xbdcd('0xf'))){_0x338a29[_0xbdcd('0x10')]=moment()['format'](_0xbdcd('0x11'));}_0x402461(null,_0x338a29);}}});};
\ No newline at end of file
+var _0x142c=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./faxInteraction.attributes','exports','define','fax_interactions','changed','closed','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0xf73c09,_0x4e424e){var _0xa8923c=function(_0x4831c1){while(--_0x4831c1){_0xf73c09['push'](_0xf73c09['shift']());}};_0xa8923c(++_0x4e424e);}(_0x142c,0x8f));var _0xc142=function(_0x459219,_0x1cb666){_0x459219=_0x459219-0x0;var _0x36d8e1=_0x142c[_0x459219];return _0x36d8e1;};'use strict';var _=require(_0xc142('0x0'));var util=require(_0xc142('0x1'));var logger=require(_0xc142('0x2'))(_0xc142('0x3'));var moment=require(_0xc142('0x4'));var BPromise=require(_0xc142('0x5'));var rp=require(_0xc142('0x6'));var fs=require('fs');var path=require(_0xc142('0x7'));var rimraf=require('rimraf');var config=require(_0xc142('0x8'));var attributes=require(_0xc142('0x9'));module[_0xc142('0xa')]=function(_0x46bff1,_0x4ff85e){return _0x46bff1[_0xc142('0xb')]('FaxInteraction',attributes,{'tableName':_0xc142('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2e8d46,_0x4794dc,_0x1cd3e1){if(_0x2e8d46[_0xc142('0xd')](_0xc142('0xe'))){_0x2e8d46['closedAt']=moment()['format'](_0xc142('0xf'));}_0x1cd3e1(null,_0x2e8d46);}}});};
\ No newline at end of file
index 86b61a4..c66aab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4898=['attributes','limit','then','catch','AddTagsToFaxInteraction','find','addTags','omit','spread','AddTags','lodash','moment','randomstring','ioredis','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','./faxInteraction.socket','request','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','UpdateFaxInteraction','FaxInteraction','update','body','raw','options','where'];(function(_0x32e8f2,_0x33cff3){var _0xefd2e6=function(_0x524abd){while(--_0x524abd){_0x32e8f2['push'](_0x32e8f2['shift']());}};_0xefd2e6(++_0x33cff3);}(_0x4898,0x1ea));var _0x8489=function(_0xb86ef,_0x4deeef){_0xb86ef=_0xb86ef-0x0;var _0x1e66f0=_0x4898[_0xb86ef];return _0x1e66f0;};'use strict';var _=require(_0x8489('0x0'));var util=require('util');var moment=require(_0x8489('0x1'));var BPromise=require('bluebird');var rs=require(_0x8489('0x2'));var fs=require('fs');var Redis=require(_0x8489('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8489('0x4'))('rpc');var config=require(_0x8489('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8489('0x6')][_0x8489('0x7')]({'port':0x232a});config[_0x8489('0x8')]=_[_0x8489('0x9')](config[_0x8489('0x8')],{'host':_0x8489('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8489('0x8')]));require(_0x8489('0xb'))['register'](socket);function respondWithRpcPromise(_0x3682d8,_0x19d005,_0x43f342){return new BPromise(function(_0xb073ba,_0x2395ef){return client[_0x8489('0xc')](_0x3682d8,_0x43f342)['then'](function(_0x5458be){logger['info'](_0x8489('0xd'),_0x19d005,_0x8489('0xe'));logger[_0x8489('0xf')](_0x8489('0x10'),_0x19d005,_0x8489('0xe'),JSON[_0x8489('0x11')](_0x5458be));if(_0x5458be[_0x8489('0x12')]){if(_0x5458be[_0x8489('0x12')][_0x8489('0x13')]===0x1f4){logger[_0x8489('0x12')](_0x8489('0xd'),_0x19d005,_0x5458be[_0x8489('0x12')]['message']);return _0x2395ef(_0x5458be['error'][_0x8489('0x14')]);}logger[_0x8489('0x12')](_0x8489('0xd'),_0x19d005,_0x5458be[_0x8489('0x12')][_0x8489('0x14')]);return _0xb073ba(_0x5458be[_0x8489('0x12')][_0x8489('0x14')]);}else{logger[_0x8489('0x15')](_0x8489('0xd'),_0x19d005,_0x8489('0xe'));_0xb073ba(_0x5458be[_0x8489('0x16')][_0x8489('0x14')]);}})['catch'](function(_0x2d06cb){logger[_0x8489('0x12')](_0x8489('0xd'),_0x19d005,_0x2d06cb);_0x2395ef(_0x2d06cb);});});}exports[_0x8489('0x17')]=function(_0x1fee34){var _0x31e814=this;return new Promise(function(_0x4a7b47,_0x4bdc84){return db[_0x8489('0x18')][_0x8489('0x19')](_0x1fee34[_0x8489('0x1a')],{'raw':_0x1fee34['options']?_0x1fee34['options'][_0x8489('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1fee34[_0x8489('0x1c')]?_0x1fee34['options'][_0x8489('0x1d')]||null:null,'attributes':_0x1fee34[_0x8489('0x1c')]?_0x1fee34[_0x8489('0x1c')][_0x8489('0x1e')]||null:null,'limit':_0x1fee34[_0x8489('0x1c')]?_0x1fee34[_0x8489('0x1c')][_0x8489('0x1f')]||null:null})[_0x8489('0x20')](function(_0x4eef27){logger['info'](_0x8489('0x17'),_0x1fee34);logger[_0x8489('0xf')](_0x8489('0x17'),_0x1fee34,JSON[_0x8489('0x11')](_0x4eef27));_0x4a7b47(_0x4eef27);})[_0x8489('0x21')](function(_0x3d25d3){logger['error'](_0x8489('0x17'),_0x3d25d3[_0x8489('0x14')],_0x1fee34);_0x4bdc84(_0x31e814[_0x8489('0x12')](0x1f4,_0x3d25d3[_0x8489('0x14')]));});});};exports[_0x8489('0x22')]=function(_0x34c649){return new Promise(function(_0xfa5ac,_0x70370f){return db['FaxInteraction'][_0x8489('0x23')]({'where':_0x34c649['options']?_0x34c649[_0x8489('0x1c')][_0x8489('0x1d')]||null:null})['then'](function(_0x1782eb){if(_0x1782eb){return _0x1782eb[_0x8489('0x24')](_0x34c649['body']['ids'],_[_0x8489('0x25')](_0x34c649[_0x8489('0x1a')],['ids','id'])||{});}})[_0x8489('0x26')](function(_0x40c256){logger[_0x8489('0x15')](_0x8489('0x27'),_0x34c649);logger['debug'](_0x8489('0x27'),_0x34c649,JSON[_0x8489('0x11')](_0x40c256));_0xfa5ac(_0x40c256);})[_0x8489('0x21')](function(_0x417b1e){logger[_0x8489('0x12')](_0x8489('0x27'),_0x417b1e[_0x8489('0x14')],_0x34c649);_0x70370f(_this['error'](0x1f4,_0x417b1e[_0x8489('0x14')]));});});};
\ No newline at end of file
+var _0xce4f=['catch','FaxInteraction','update','body','options','raw','where','attributes','limit','UpdateFaxInteraction','stringify','AddTagsToFaxInteraction','ids','omit','spread','AddTags','util','bluebird','ioredis','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','request','then','info','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','FaxInteraction,\x20%s,\x20%s','message','error','request\x20sent','result'];(function(_0x573acb,_0x2108ae){var _0x1d3422=function(_0x1bbb36){while(--_0x1bbb36){_0x573acb['push'](_0x573acb['shift']());}};_0x1d3422(++_0x2108ae);}(_0xce4f,0x1ec));var _0xfce4=function(_0x30072b,_0x4e0e60){_0x30072b=_0x30072b-0x0;var _0x4cd9fb=_0xce4f[_0x30072b];return _0x4cd9fb;};'use strict';var _=require('lodash');var util=require(_0xfce4('0x0'));var moment=require('moment');var BPromise=require(_0xfce4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfce4('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xfce4('0x3'));var jayson=require(_0xfce4('0x4'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config[_0xfce4('0x5')],{'host':_0xfce4('0x6'),'port':0x18eb});var socket=require(_0xfce4('0x7'))(new Redis(config[_0xfce4('0x5')]));require('./faxInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x2a7a52,_0xa20b26,_0x2ae742){return new BPromise(function(_0xfbb7ff,_0x1947fb){return client[_0xfce4('0x8')](_0x2a7a52,_0x2ae742)[_0xfce4('0x9')](function(_0x3721f7){logger[_0xfce4('0xa')]('FaxInteraction,\x20%s,\x20%s',_0xa20b26,'request\x20sent');logger[_0xfce4('0xb')](_0xfce4('0xc'),_0xa20b26,'request\x20sent',JSON['stringify'](_0x3721f7));if(_0x3721f7['error']){if(_0x3721f7['error']['code']===0x1f4){logger['error'](_0xfce4('0xd'),_0xa20b26,_0x3721f7['error'][_0xfce4('0xe')]);return _0x1947fb(_0x3721f7[_0xfce4('0xf')][_0xfce4('0xe')]);}logger[_0xfce4('0xf')]('FaxInteraction,\x20%s,\x20%s',_0xa20b26,_0x3721f7['error'][_0xfce4('0xe')]);return _0xfbb7ff(_0x3721f7[_0xfce4('0xf')][_0xfce4('0xe')]);}else{logger[_0xfce4('0xa')](_0xfce4('0xd'),_0xa20b26,_0xfce4('0x10'));_0xfbb7ff(_0x3721f7[_0xfce4('0x11')][_0xfce4('0xe')]);}})[_0xfce4('0x12')](function(_0x13cd6b){logger[_0xfce4('0xf')](_0xfce4('0xd'),_0xa20b26,_0x13cd6b);_0x1947fb(_0x13cd6b);});});}exports['UpdateFaxInteraction']=function(_0xf78a18){var _0xf4fed2=this;return new Promise(function(_0x432bab,_0x1c68d5){return db[_0xfce4('0x13')][_0xfce4('0x14')](_0xf78a18[_0xfce4('0x15')],{'raw':_0xf78a18['options']?_0xf78a18[_0xfce4('0x16')][_0xfce4('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf78a18[_0xfce4('0x16')]?_0xf78a18[_0xfce4('0x16')][_0xfce4('0x18')]||null:null,'attributes':_0xf78a18[_0xfce4('0x16')]?_0xf78a18[_0xfce4('0x16')][_0xfce4('0x19')]||null:null,'limit':_0xf78a18[_0xfce4('0x16')]?_0xf78a18[_0xfce4('0x16')][_0xfce4('0x1a')]||null:null})[_0xfce4('0x9')](function(_0x322505){logger['info'](_0xfce4('0x1b'),_0xf78a18);logger['debug'](_0xfce4('0x1b'),_0xf78a18,JSON[_0xfce4('0x1c')](_0x322505));_0x432bab(_0x322505);})[_0xfce4('0x12')](function(_0x210496){logger['error'](_0xfce4('0x1b'),_0x210496[_0xfce4('0xe')],_0xf78a18);_0x1c68d5(_0xf4fed2[_0xfce4('0xf')](0x1f4,_0x210496[_0xfce4('0xe')]));});});};exports[_0xfce4('0x1d')]=function(_0x1addb1){return new Promise(function(_0x17c498,_0x227bc6){return db['FaxInteraction']['find']({'where':_0x1addb1[_0xfce4('0x16')]?_0x1addb1[_0xfce4('0x16')][_0xfce4('0x18')]||null:null})[_0xfce4('0x9')](function(_0x4d6e76){if(_0x4d6e76){return _0x4d6e76['addTags'](_0x1addb1[_0xfce4('0x15')][_0xfce4('0x1e')],_[_0xfce4('0x1f')](_0x1addb1[_0xfce4('0x15')],[_0xfce4('0x1e'),'id'])||{});}})[_0xfce4('0x20')](function(_0x33a563){logger[_0xfce4('0xa')](_0xfce4('0x21'),_0x1addb1);logger[_0xfce4('0xb')](_0xfce4('0x21'),_0x1addb1,JSON['stringify'](_0x33a563));_0x17c498(_0x33a563);})['catch'](function(_0x43d53d){logger['error']('AddTags',_0x43d53d[_0xfce4('0xe')],_0x1addb1);_0x227bc6(_this['error'](0x1f4,_0x43d53d[_0xfce4('0xe')]));});});};
\ No newline at end of file
index 5da1e80..8446074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4557=['./faxInteraction.events','save','remove','removeListener'];(function(_0x355d92,_0x2f1966){var _0x5a4b70=function(_0x209dfd){while(--_0x209dfd){_0x355d92['push'](_0x355d92['shift']());}};_0x5a4b70(++_0x2f1966);}(_0x4557,0x1f4));var _0x7455=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4557[_0x20a584];return _0x4b41a8;};'use strict';var FaxInteractionEvents=require(_0x7455('0x0'));var events=[_0x7455('0x1'),_0x7455('0x2'),'update'];function createListener(_0x235f6c,_0x4c3609){return function(_0x1fd8fe){_0x4c3609['emit'](_0x235f6c,_0x1fd8fe);};}function removeListener(_0x173b05,_0x56ac06){return function(){FaxInteractionEvents[_0x7455('0x3')](_0x173b05,_0x56ac06);};}exports['register']=function(_0x33809c){for(var _0x1a629a=0x0,_0x32440c=events['length'];_0x1a629a<_0x32440c;_0x1a629a++){var _0x517bd6=events[_0x1a629a];var _0x3a75ef=createListener('faxInteraction:'+_0x517bd6,_0x33809c);FaxInteractionEvents['on'](_0x517bd6,_0x3a75ef);}};
\ No newline at end of file
+var _0x4071=['removeListener','register','length','faxInteraction:','./faxInteraction.events','save','update'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x4071,0xeb));var _0x1407=function(_0x38e34e,_0x27527e){_0x38e34e=_0x38e34e-0x0;var _0x68ab01=_0x4071[_0x38e34e];return _0x68ab01;};'use strict';var FaxInteractionEvents=require(_0x1407('0x0'));var events=[_0x1407('0x1'),'remove',_0x1407('0x2')];function createListener(_0xa22137,_0x50eec3){return function(_0x12d938){_0x50eec3['emit'](_0xa22137,_0x12d938);};}function removeListener(_0x57f318,_0x53d8fd){return function(){FaxInteractionEvents[_0x1407('0x3')](_0x57f318,_0x53d8fd);};}exports[_0x1407('0x4')]=function(_0x261301){for(var _0x4af100=0x0,_0x542206=events[_0x1407('0x5')];_0x4af100<_0x542206;_0x4af100++){var _0x385d63=events[_0x4af100];var _0x32ffdc=createListener(_0x1407('0x6')+_0x385d63,_0x261301);FaxInteractionEvents['on'](_0x385d63,_0x32ffdc);}};
\ No newline at end of file
index 70dec0b..5367b60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe12=['tracked','faxinteraction:addtags','addTags','fax','faxinteraction:update','update','faxinteraction:destroy','delete','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','index','isAuthenticated','describe','/:id','show','getMessages','/:id/download','post','create','/:id/messages'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xbe12,0xea));var _0x2be1=function(_0x23617a,_0x367c04){_0x23617a=_0x23617a-0x0;var _0x336859=_0xbe12[_0x23617a];return _0x336859;};'use strict';var multer=require(_0x2be1('0x0'));var util=require(_0x2be1('0x1'));var path=require(_0x2be1('0x2'));var timeout=require(_0x2be1('0x3'));var express=require(_0x2be1('0x4'));var router=express[_0x2be1('0x5')]();var fs_extra=require(_0x2be1('0x6'));var auth=require(_0x2be1('0x7'));var interaction=require(_0x2be1('0x8'));var config=require(_0x2be1('0x9'));var controller=require(_0x2be1('0xa'));router[_0x2be1('0xb')]('/',auth['isAuthenticated'](),controller[_0x2be1('0xc')]);router[_0x2be1('0xb')]('/describe',auth[_0x2be1('0xd')](),controller[_0x2be1('0xe')]);router[_0x2be1('0xb')](_0x2be1('0xf'),auth[_0x2be1('0xd')](),controller[_0x2be1('0x10')]);router[_0x2be1('0xb')]('/:id/messages',auth[_0x2be1('0xd')](),controller[_0x2be1('0x11')]);router[_0x2be1('0xb')](_0x2be1('0x12'),auth[_0x2be1('0xd')](),controller['download']);router[_0x2be1('0x13')]('/',auth[_0x2be1('0xd')](),controller[_0x2be1('0x14')]);router[_0x2be1('0x13')](_0x2be1('0x15'),auth[_0x2be1('0xd')](),controller['addMessage']);router[_0x2be1('0x13')]('/:id/tags',auth[_0x2be1('0xd')](),interaction[_0x2be1('0x16')]('fax',_0x2be1('0x17')),controller[_0x2be1('0x18')]);router['put'](_0x2be1('0xf'),auth[_0x2be1('0xd')](),interaction[_0x2be1('0x16')](_0x2be1('0x19'),_0x2be1('0x1a')),controller[_0x2be1('0x1b')]);router['delete'](_0x2be1('0xf'),auth[_0x2be1('0xd')](),interaction[_0x2be1('0x16')](_0x2be1('0x19'),_0x2be1('0x1c')),controller['destroy']);router[_0x2be1('0x1d')]('/:id/tags',auth['isAuthenticated'](),controller[_0x2be1('0x1e')]);module[_0x2be1('0x1f')]=router;
\ No newline at end of file
+var _0xa44c=['post','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','put','/:id','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','/describe','isAuthenticated','show','/:id/messages','getMessages','download','create'];(function(_0x443c91,_0x333e16){var _0x407830=function(_0x357dfb){while(--_0x357dfb){_0x443c91['push'](_0x443c91['shift']());}};_0x407830(++_0x333e16);}(_0xa44c,0xc2));var _0xca44=function(_0x1dc15e,_0x46d926){_0x1dc15e=_0x1dc15e-0x0;var _0x137395=_0xa44c[_0x1dc15e];return _0x137395;};'use strict';var multer=require(_0xca44('0x0'));var util=require(_0xca44('0x1'));var path=require('path');var timeout=require(_0xca44('0x2'));var express=require(_0xca44('0x3'));var router=express[_0xca44('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xca44('0x5'));var config=require(_0xca44('0x6'));var controller=require(_0xca44('0x7'));router[_0xca44('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xca44('0x8')](_0xca44('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0xca44('0x8')]('/:id',auth[_0xca44('0xa')](),controller[_0xca44('0xb')]);router[_0xca44('0x8')](_0xca44('0xc'),auth[_0xca44('0xa')](),controller[_0xca44('0xd')]);router[_0xca44('0x8')]('/:id/download',auth[_0xca44('0xa')](),controller[_0xca44('0xe')]);router['post']('/',auth[_0xca44('0xa')](),controller[_0xca44('0xf')]);router[_0xca44('0x10')](_0xca44('0xc'),auth[_0xca44('0xa')](),controller[_0xca44('0x11')]);router[_0xca44('0x10')](_0xca44('0x12'),auth[_0xca44('0xa')](),interaction[_0xca44('0x13')](_0xca44('0x14'),_0xca44('0x15')),controller['addTags']);router[_0xca44('0x16')](_0xca44('0x17'),auth[_0xca44('0xa')](),interaction[_0xca44('0x13')](_0xca44('0x14'),'faxinteraction:update'),controller[_0xca44('0x18')]);router[_0xca44('0x19')](_0xca44('0x17'),auth[_0xca44('0xa')](),interaction[_0xca44('0x13')](_0xca44('0x14'),_0xca44('0x1a')),controller[_0xca44('0x1b')]);router[_0xca44('0x19')](_0xca44('0x12'),auth['isAuthenticated'](),controller[_0xca44('0x1c')]);module[_0xca44('0x1d')]=router;
\ No newline at end of file
index f4d4b00..9d366b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc090=['out','sequelize','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x2b89ff,_0x30e38a){var _0x2c3d4b=function(_0x146c84){while(--_0x146c84){_0x2b89ff['push'](_0x2b89ff['shift']());}};_0x2c3d4b(++_0x30e38a);}(_0xc090,0x112));var _0x0c09=function(_0x1e0b8c,_0x5b276e){_0x1e0b8c=_0x1e0b8c-0x0;var _0x5c702c=_0xc090[_0x1e0b8c];return _0x5c702c;};'use strict';var Sequelize=require(_0x0c09('0x0'));module[_0x0c09('0x1')]={'body':{'type':Sequelize[_0x0c09('0x2')](_0x0c09('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x0c09('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0c09('0x5')]('in',_0x0c09('0x6')),'defaultValue':_0x0c09('0x6'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x0c09('0x2')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xf874=['ENUM','out','DATE','TEXT','medium','BOOLEAN'];(function(_0x25d386,_0x108d0d){var _0x857f4a=function(_0x3eb98d){while(--_0x3eb98d){_0x25d386['push'](_0x25d386['shift']());}};_0x857f4a(++_0x108d0d);}(_0xf874,0xed));var _0x4f87=function(_0x24a5bd,_0x1374f5){_0x24a5bd=_0x24a5bd-0x0;var _0x2f29fb=_0xf874[_0x24a5bd];return _0x2f29fb;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x4f87('0x0')](_0x4f87('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x4f87('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4f87('0x3')]('in',_0x4f87('0x4')),'defaultValue':_0x4f87('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x4f87('0x5')]}};
\ No newline at end of file
index 824be06..fff1f29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec53=['model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','keys','length','find','body','describe','fax-interactions','accept','fax','readAt','format','UserId','agent','get','FaxInteractionId','isNil','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','AcceptMessage','sequelize','Sequelize','SELECT','contact','User','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','QueryTypes','email','motionChannel','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','save','update','then','destroy','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key'];(function(_0x5d8c1b,_0x38c5cb){var _0x5d0692=function(_0x24a39f){while(--_0x24a39f){_0x5d8c1b['push'](_0x5d8c1b['shift']());}};_0x5d0692(++_0x38c5cb);}(_0xec53,0xdd));var _0x3ec5=function(_0x202f3c,_0x107924){_0x202f3c=_0x202f3c-0x0;var _0x16bf4a=_0xec53[_0x202f3c];return _0x16bf4a;};'use strict';var emlformat=require(_0x3ec5('0x0'));var rimraf=require(_0x3ec5('0x1'));var zipdir=require(_0x3ec5('0x2'));var jsonpatch=require(_0x3ec5('0x3'));var rp=require(_0x3ec5('0x4'));var moment=require(_0x3ec5('0x5'));var BPromise=require(_0x3ec5('0x6'));var Mustache=require(_0x3ec5('0x7'));var util=require(_0x3ec5('0x8'));var path=require(_0x3ec5('0x9'));var sox=require('sox');var csv=require(_0x3ec5('0xa'));var ejs=require(_0x3ec5('0xb'));var fs=require('fs');var fs_extra=require(_0x3ec5('0xc'));var _=require('lodash');var squel=require(_0x3ec5('0xd'));var crypto=require(_0x3ec5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x3ec5('0xf'));var toCsv=require(_0x3ec5('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3ec5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x3ec5('0x11'));var hardwareService=require(_0x3ec5('0x12'));var logger=require(_0x3ec5('0x13'))(_0x3ec5('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3ec5('0x15'));var db=require(_0x3ec5('0x16'))['db'];config['redis']=_[_0x3ec5('0x17')](config[_0x3ec5('0x18')],{'host':_0x3ec5('0x19'),'port':0x18eb});var socket=require(_0x3ec5('0x1a'))(new Redis(config[_0x3ec5('0x18')]));require('./faxMessage.socket')[_0x3ec5('0x1b')](socket);var jayson=require(_0x3ec5('0x1c'));var client=jayson[_0x3ec5('0x1d')][_0x3ec5('0x1e')]({'port':0x232c});var client9002=jayson['client'][_0x3ec5('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x42384c,_0x9ae0f,_0x4ae7fa,_0x2b06b7){return new BPromise(function(_0x425657,_0x41f4de){var _0x21e861=_0x2b06b7||client;return _0x21e861[_0x3ec5('0x1f')](_0x42384c,_0x4ae7fa)['then'](function(_0x151ff7){logger[_0x3ec5('0x20')](_0x3ec5('0x21'),_0x9ae0f,_0x3ec5('0x22'));logger[_0x3ec5('0x23')](_0x3ec5('0x24'),_0x9ae0f,'request\x20sent',JSON[_0x3ec5('0x25')](_0x151ff7));if(_0x151ff7[_0x3ec5('0x26')]){if(_0x151ff7[_0x3ec5('0x26')][_0x3ec5('0x27')]===0x1f4){logger[_0x3ec5('0x26')](_0x3ec5('0x21'),_0x9ae0f,_0x151ff7['error']['message']);return _0x41f4de(_0x151ff7[_0x3ec5('0x26')][_0x3ec5('0x28')]);}logger[_0x3ec5('0x26')]('FaxMessage,\x20%s,\x20%s',_0x9ae0f,_0x151ff7[_0x3ec5('0x26')][_0x3ec5('0x28')]);return _0x425657(_0x151ff7[_0x3ec5('0x26')][_0x3ec5('0x28')]);}else{logger['info'](_0x3ec5('0x21'),_0x9ae0f,_0x3ec5('0x22'));_0x425657(_0x151ff7[_0x3ec5('0x29')][_0x3ec5('0x28')]);}})[_0x3ec5('0x2a')](function(_0x182899){logger['error']('FaxMessage,\x20%s,\x20%s',_0x9ae0f,_0x182899);_0x41f4de(_0x182899);});});}function respondWithStatusCode(_0x9efed6,_0x360848){_0x360848=_0x360848||0xcc;return function(_0x8bd1dd){if(_0x8bd1dd){return _0x9efed6[_0x3ec5('0x2b')](_0x360848);}return _0x9efed6[_0x3ec5('0x2c')](_0x360848)[_0x3ec5('0x2d')]();};}function respondWithResult(_0x2cbf9e,_0x2abeb3){_0x2abeb3=_0x2abeb3||0xc8;return function(_0x59f5da){if(_0x59f5da){return _0x2cbf9e[_0x3ec5('0x2c')](_0x2abeb3)[_0x3ec5('0x2e')](_0x59f5da);}};}function respondWithFilteredResult(_0x402bc2,_0x3eeb5d){return function(_0x3e9384){if(_0x3e9384){var _0xc6a071=typeof _0x3eeb5d[_0x3ec5('0x2f')]==='undefined'&&typeof _0x3eeb5d[_0x3ec5('0x30')]===_0x3ec5('0x31');var _0x7687dd=_0x3e9384['count'];var _0x58f6a4=_0xc6a071?0x0:_0x3eeb5d[_0x3ec5('0x2f')];var _0x1a04c8=_0xc6a071?_0x3e9384[_0x3ec5('0x32')]:_0x3eeb5d['offset']+_0x3eeb5d[_0x3ec5('0x30')];var _0x20d84c;if(_0x1a04c8>=_0x7687dd){_0x1a04c8=_0x7687dd;_0x20d84c=0xc8;}else{_0x20d84c=0xce;}_0x402bc2['status'](_0x20d84c);return _0x402bc2['set']('Content-Range',_0x58f6a4+'-'+_0x1a04c8+'/'+_0x7687dd)[_0x3ec5('0x2e')](_0x3e9384);}return null;};}function patchUpdates(_0x4d9ef9){return function(_0x28b415){try{jsonpatch[_0x3ec5('0x33')](_0x28b415,_0x4d9ef9,!![]);}catch(_0x2ee095){return BPromise[_0x3ec5('0x34')](_0x2ee095);}return _0x28b415[_0x3ec5('0x35')]();};}function saveUpdates(_0x298f85,_0x2d6903){return function(_0x5c9987){if(_0x5c9987){return _0x5c9987[_0x3ec5('0x36')](_0x298f85)[_0x3ec5('0x37')](function(_0x4139d2){return _0x4139d2;});}return null;};}function removeEntity(_0x13ef43,_0x352567){return function(_0x24624a){if(_0x24624a){return _0x24624a[_0x3ec5('0x38')]()[_0x3ec5('0x37')](function(){_0x13ef43[_0x3ec5('0x2c')](0xcc)[_0x3ec5('0x2d')]();});}};}function handleEntityNotFound(_0x7685c6,_0x2fd897){return function(_0x5d78e0){if(!_0x5d78e0){_0x7685c6[_0x3ec5('0x2b')](0x194);}return _0x5d78e0;};}function handleError(_0x343a50,_0x23935e){_0x23935e=_0x23935e||0x1f4;return function(_0x29a46b){logger[_0x3ec5('0x26')](_0x29a46b[_0x3ec5('0x39')]);if(_0x29a46b[_0x3ec5('0x3a')]){delete _0x29a46b[_0x3ec5('0x3a')];}_0x343a50[_0x3ec5('0x2c')](_0x23935e)[_0x3ec5('0x3b')](_0x29a46b);};}exports[_0x3ec5('0x3c')]=function(_0x50eaa7,_0x3e3e7f){var _0x337f81={},_0x51d909={},_0x5f01be={'count':0x0,'rows':[]};var _0x5b3f24=_[_0x3ec5('0x3d')](db[_0x3ec5('0x3e')][_0x3ec5('0x3f')],function(_0x26f3aa){return{'name':_0x26f3aa[_0x3ec5('0x40')],'type':_0x26f3aa[_0x3ec5('0x41')][_0x3ec5('0x42')]};});_0x51d909[_0x3ec5('0x43')]=_[_0x3ec5('0x3d')](_0x5b3f24,_0x3ec5('0x3a'));_0x51d909[_0x3ec5('0x44')]=_['keys'](_0x50eaa7['query']);_0x51d909[_0x3ec5('0x45')]=_[_0x3ec5('0x46')](_0x51d909[_0x3ec5('0x43')],_0x51d909['query']);_0x337f81[_0x3ec5('0x47')]=_[_0x3ec5('0x46')](_0x51d909[_0x3ec5('0x43')],qs['fields'](_0x50eaa7[_0x3ec5('0x44')][_0x3ec5('0x48')]));_0x337f81[_0x3ec5('0x47')]=_0x337f81[_0x3ec5('0x47')]['length']?_0x337f81[_0x3ec5('0x47')]:_0x51d909[_0x3ec5('0x43')];if(!_0x50eaa7[_0x3ec5('0x44')][_0x3ec5('0x49')](_0x3ec5('0x4a'))){_0x337f81[_0x3ec5('0x30')]=qs['limit'](_0x50eaa7[_0x3ec5('0x44')][_0x3ec5('0x30')]);_0x337f81[_0x3ec5('0x2f')]=qs['offset'](_0x50eaa7[_0x3ec5('0x44')][_0x3ec5('0x2f')]);}_0x337f81['order']=qs[_0x3ec5('0x4b')](_0x50eaa7['query']['sort']);_0x337f81[_0x3ec5('0x4c')]=qs['filters'](_[_0x3ec5('0x4d')](_0x50eaa7[_0x3ec5('0x44')],_0x51d909[_0x3ec5('0x45')]),_0x5b3f24);if(_0x50eaa7[_0x3ec5('0x44')]['filter']){_0x337f81[_0x3ec5('0x4c')]=_[_0x3ec5('0x4e')](_0x337f81[_0x3ec5('0x4c')],{'$or':_[_0x3ec5('0x3d')](_0x5b3f24,function(_0x22a333){if(_0x22a333[_0x3ec5('0x41')]!==_0x3ec5('0x4f')){var _0x2a270b={};_0x2a270b[_0x22a333[_0x3ec5('0x3a')]]={'$like':'%'+_0x50eaa7[_0x3ec5('0x44')][_0x3ec5('0x50')]+'%'};return _0x2a270b;}})});}_0x337f81=_['merge']({},_0x337f81,_0x50eaa7[_0x3ec5('0x51')]);var _0x28d979={'where':_0x337f81[_0x3ec5('0x4c')]};return db['FaxMessage']['count'](_0x28d979)[_0x3ec5('0x37')](function(_0x29b321){_0x5f01be[_0x3ec5('0x32')]=_0x29b321;if(_0x50eaa7[_0x3ec5('0x44')][_0x3ec5('0x52')]){_0x337f81[_0x3ec5('0x53')]=[{'all':!![]}];}return db[_0x3ec5('0x3e')]['findAll'](_0x337f81);})['then'](function(_0x18ff0a){_0x5f01be[_0x3ec5('0x54')]=_0x18ff0a;return _0x5f01be;})['then'](respondWithFilteredResult(_0x3e3e7f,_0x337f81))['catch'](handleError(_0x3e3e7f,null));};exports[_0x3ec5('0x55')]=function(_0x3b8362,_0x3c90c2){var _0x3ea531={'raw':!![],'where':{'id':_0x3b8362[_0x3ec5('0x56')]['id']}},_0x1e5fe0={};_0x1e5fe0['model']=_[_0x3ec5('0x57')](db[_0x3ec5('0x3e')][_0x3ec5('0x3f')]);_0x1e5fe0['query']=_[_0x3ec5('0x57')](_0x3b8362[_0x3ec5('0x44')]);_0x1e5fe0[_0x3ec5('0x45')]=_['intersection'](_0x1e5fe0['model'],_0x1e5fe0['query']);_0x3ea531[_0x3ec5('0x47')]=_[_0x3ec5('0x46')](_0x1e5fe0['model'],qs[_0x3ec5('0x48')](_0x3b8362[_0x3ec5('0x44')][_0x3ec5('0x48')]));_0x3ea531[_0x3ec5('0x47')]=_0x3ea531[_0x3ec5('0x47')][_0x3ec5('0x58')]?_0x3ea531['attributes']:_0x1e5fe0['model'];if(_0x3b8362[_0x3ec5('0x44')][_0x3ec5('0x52')]){_0x3ea531[_0x3ec5('0x53')]=[{'all':!![]}];}_0x3ea531=_['merge']({},_0x3ea531,_0x3b8362[_0x3ec5('0x51')]);return db[_0x3ec5('0x3e')][_0x3ec5('0x59')](_0x3ea531)[_0x3ec5('0x37')](handleEntityNotFound(_0x3c90c2,null))['then'](respondWithResult(_0x3c90c2,null))['catch'](handleError(_0x3c90c2,null));};exports[_0x3ec5('0x36')]=function(_0x594bd3,_0x20de6f){if(_0x594bd3[_0x3ec5('0x5a')]['id']){delete _0x594bd3[_0x3ec5('0x5a')]['id'];}return db[_0x3ec5('0x3e')]['find']({'where':{'id':_0x594bd3['params']['id']}})['then'](handleEntityNotFound(_0x20de6f,null))[_0x3ec5('0x37')](saveUpdates(_0x594bd3['body'],null))[_0x3ec5('0x37')](respondWithResult(_0x20de6f,null))[_0x3ec5('0x2a')](handleError(_0x20de6f,null));};exports[_0x3ec5('0x38')]=function(_0x5eee0e,_0x3269af){return db[_0x3ec5('0x3e')]['find']({'where':{'id':_0x5eee0e[_0x3ec5('0x56')]['id']}})[_0x3ec5('0x37')](handleEntityNotFound(_0x3269af,null))[_0x3ec5('0x37')](removeEntity(_0x3269af,null))['catch'](handleError(_0x3269af,null));};exports[_0x3ec5('0x5b')]=function(_0x351931,_0x470806){return db[_0x3ec5('0x3e')][_0x3ec5('0x5b')]()[_0x3ec5('0x37')](respondWithResult(_0x470806,null))[_0x3ec5('0x2a')](handleError(_0x470806,null));};var interaction_log=require('../../config/logger')(_0x3ec5('0x5c'));exports[_0x3ec5('0x5d')]=function(_0x4e88a8,_0x16b772,_0x2aabd2){var _0x27d848={'agent':{},'channel':_0x3ec5('0x5e')};if(_0x4e88a8['body']['id']){delete _0x4e88a8[_0x3ec5('0x5a')]['id'];}_0x4e88a8[_0x3ec5('0x5a')]['read']=!![];_0x4e88a8[_0x3ec5('0x5a')][_0x3ec5('0x5f')]=moment()[_0x3ec5('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x4e88a8['body'][_0x3ec5('0x61')]=_0x4e88a8['body'][_0x3ec5('0x61')]||_0x4e88a8['user']['id'];_0x27d848[_0x3ec5('0x62')]['id']=_0x4e88a8[_0x3ec5('0x5a')][_0x3ec5('0x61')];return db[_0x3ec5('0x3e')][_0x3ec5('0x59')]({'where':{'id':_0x4e88a8['params']['id'],'UserId':null}})[_0x3ec5('0x37')](handleEntityNotFound(_0x16b772,null))[_0x3ec5('0x37')](saveUpdates(_0x4e88a8[_0x3ec5('0x5a')],null))['then'](function(_0x422c62){if(_0x422c62){_0x27d848[_0x3ec5('0x28')]=_0x422c62[_0x3ec5('0x63')]({'plain':!![]});return db['FaxInteraction'][_0x3ec5('0x59')]({'where':{'id':_0x422c62[_0x3ec5('0x64')]}});}return null;})[_0x3ec5('0x37')](handleEntityNotFound(_0x16b772,null))[_0x3ec5('0x37')](function(_0x21d78d){if(_0x21d78d){return _0x21d78d[_0x3ec5('0x36')]({'UserId':_0x4e88a8[_0x3ec5('0x5a')]['UserId'],'read1stAt':_[_0x3ec5('0x65')](_0x21d78d['read1stAt'])?moment()[_0x3ec5('0x60')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x3ec5('0x37')](function(_0x13ea7){if(_0x13ea7){_0x27d848[_0x3ec5('0x66')]=_0x13ea7[_0x3ec5('0x63')]({'plain':!![]});interaction_log[_0x3ec5('0x20')](_0x3ec5('0x67'),_0x4e88a8['user']['id'],_0x4e88a8[_0x3ec5('0x68')][_0x3ec5('0x3a')],_0x4e88a8[_0x3ec5('0x68')]['role'],_0x27d848[_0x3ec5('0x66')]['id'],_0x4e88a8['body']?JSON[_0x3ec5('0x25')](_0x4e88a8['body']):_0x3ec5('0x69'));return respondWithRpcPromise(_0x3ec5('0x6a'),'acceptMessage',_0x27d848);}return null;})[_0x3ec5('0x37')](function(_0xd69299){var _0x31fbc8='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xd69299[_0x3ec5('0x28')]['ContactId'];return db[_0x3ec5('0x6b')]['query'](_0x31fbc8,{'type':db[_0x3ec5('0x6c')]['QueryTypes'][_0x3ec5('0x6d')],'raw':!![]})[_0x3ec5('0x37')](function(_0x961201){return _0x961201;});})[_0x3ec5('0x37')](function(_0xf1b883){if(_0xf1b883){_0x27d848['message'][_0x3ec5('0x6e')]=_0xf1b883[0x0];if(!_0x4e88a8[_0x3ec5('0x5a')][_0x3ec5('0x61')])return;return db[_0x3ec5('0x6f')][_0x3ec5('0x59')]({'where':{'id':_0x4e88a8[_0x3ec5('0x5a')][_0x3ec5('0x61')],'role':'agent'},'attributes':['id',_0x3ec5('0x3a'),_0x3ec5('0x70'),'email',_0x3ec5('0x71')],'raw':!![]});}return null;})[_0x3ec5('0x37')](function(_0x2c6b0d){if(!_0x2c6b0d)return null;_0x27d848[_0x3ec5('0x28')][_0x3ec5('0x62')]=_0x2c6b0d;return _0x27d848;})[_0x3ec5('0x37')](function(_0x589caf){if(_0x589caf){if(_0x4e88a8[_0x3ec5('0x5a')][_0x3ec5('0x72')]){_0x27d848['message'][_0x3ec5('0x73')]=util[_0x3ec5('0x60')](_0x3ec5('0x74'),_0x4e88a8['user'][_0x3ec5('0x3a')]);_0x27d848[_0x3ec5('0x28')]['channel']=_0x27d848[_0x3ec5('0x75')];_0x27d848['message']['motionChannel']=_0x27d848[_0x3ec5('0x75')];_0x27d848[_0x3ec5('0x28')][_0x3ec5('0x76')]='accept';return respondWithRpcPromise(_0x3ec5('0x77'),_0x3ec5('0x77'),{'event':_0x3ec5('0x78'),'message':_0x27d848['message']},client9002)[_0x3ec5('0x37')](function(){return _0x27d848;});}return _0x27d848;}return null;})['then'](respondWithResult(_0x16b772,null))[_0x3ec5('0x2a')](handleError(_0x16b772,null));};var interaction_log=require(_0x3ec5('0x13'))(_0x3ec5('0x5c'));exports[_0x3ec5('0x34')]=function(_0x404626,_0x2a0e00,_0x1dd829){var _0x509949={'agent':{},'channel':'fax'};if(_0x404626['body']['id']){delete _0x404626[_0x3ec5('0x5a')]['id'];}_0x404626[_0x3ec5('0x5a')][_0x3ec5('0x61')]=_0x404626[_0x3ec5('0x5a')][_0x3ec5('0x61')]||_0x404626[_0x3ec5('0x68')]['id'];_0x509949['agent']['id']=_0x404626[_0x3ec5('0x5a')][_0x3ec5('0x61')];return db[_0x3ec5('0x3e')][_0x3ec5('0x59')]({'where':{'id':_0x404626['params']['id'],'UserId':null}})[_0x3ec5('0x37')](handleEntityNotFound(_0x2a0e00,null))[_0x3ec5('0x37')](function(_0x5726cc){if(_0x5726cc){_0x509949[_0x3ec5('0x28')]=_0x5726cc[_0x3ec5('0x63')]({'plain':!![]});return db[_0x3ec5('0x79')][_0x3ec5('0x59')]({'where':{'id':_0x5726cc['FaxInteractionId']}});}return null;})[_0x3ec5('0x37')](handleEntityNotFound(_0x2a0e00,null))[_0x3ec5('0x37')](function(_0x3d7189){if(_0x3d7189){_0x509949['interaction']=_0x3d7189[_0x3ec5('0x63')]({'plain':!![]});interaction_log[_0x3ec5('0x20')](_0x3ec5('0x7a'),_0x404626[_0x3ec5('0x68')]['id'],_0x404626[_0x3ec5('0x68')][_0x3ec5('0x3a')],_0x404626['user'][_0x3ec5('0x7b')],_0x509949[_0x3ec5('0x66')]['id'],_0x404626[_0x3ec5('0x5a')]?JSON[_0x3ec5('0x25')](_0x404626['body']):_0x3ec5('0x69'));return respondWithRpcPromise(_0x3ec5('0x7c'),'rejectMessage',_0x509949);}return null;})[_0x3ec5('0x37')](function(_0x4730db){var _0x423bd9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4730db[_0x3ec5('0x28')]['ContactId'];return db[_0x3ec5('0x6b')][_0x3ec5('0x44')](_0x423bd9,{'type':db[_0x3ec5('0x6c')][_0x3ec5('0x7d')][_0x3ec5('0x6d')],'raw':!![]})[_0x3ec5('0x37')](function(_0xb1100e){return _0xb1100e;});})[_0x3ec5('0x37')](function(_0x8d7ce){if(_0x8d7ce){_0x509949['message'][_0x3ec5('0x6e')]=_0x8d7ce[0x0];if(!_0x404626[_0x3ec5('0x5a')]['UserId'])return;return db['User']['find']({'where':{'id':_0x404626['body'][_0x3ec5('0x61')],'role':_0x3ec5('0x62')},'attributes':['id',_0x3ec5('0x3a'),_0x3ec5('0x70'),_0x3ec5('0x7e'),_0x3ec5('0x71')],'raw':!![]});}return null;})[_0x3ec5('0x37')](function(_0x541c0a){if(!_0x541c0a)return null;_0x509949[_0x3ec5('0x28')][_0x3ec5('0x62')]=_0x541c0a;return _0x509949;})[_0x3ec5('0x37')](function(_0x2800a7){if(_0x2800a7){_0x2800a7[_0x3ec5('0x28')]['interface']=util['format']('SIP/%s',_0x404626[_0x3ec5('0x68')][_0x3ec5('0x3a')]);_0x2800a7['message']['channel']=_0x509949[_0x3ec5('0x75')];_0x2800a7['message'][_0x3ec5('0x7f')]=_0x509949[_0x3ec5('0x75')];_0x2800a7['message']['event']=_0x3ec5('0x34');respondWithRpcPromise(_0x3ec5('0x77'),'EventManager',{'event':_0x3ec5('0x80'),'message':_0x2800a7['message']},client9002);return _0x509949;}return null;})[_0x3ec5('0x37')](respondWithResult(_0x2a0e00,null))[_0x3ec5('0x2a')](handleError(_0x2a0e00,null));};exports[_0x3ec5('0x81')]=function(_0x1c6f1a,_0x4f255b){var _0x642d80;return db[_0x3ec5('0x3e')][_0x3ec5('0x81')](_0x1c6f1a[_0x3ec5('0x5a')],{})[_0x3ec5('0x37')](function(_0xa894bc){_0x642d80=_0xa894bc;return db[_0x3ec5('0x82')][_0x3ec5('0x83')]({'where':{'id':_0x642d80['ContactId']}});})[_0x3ec5('0x37')](function(_0x2079f1){if(_[_0x3ec5('0x65')](_0x2079f1)){return;}else{_0x642d80[_0x3ec5('0x5e')]=_0x2079f1[_0x3ec5('0x5e')];return db[_0x3ec5('0x84')]['findOne']({'where':{'id':_0x642d80[_0x3ec5('0x85')]}});}})['then'](function(_0x49447c){return respondWithRpcPromise(_0x3ec5('0x86'),'SendFax',{'FaxAccountId':_[_0x3ec5('0x65')](_0x1c6f1a[_0x3ec5('0x5a')])?undefined:_0x1c6f1a[_0x3ec5('0x5a')][_0x3ec5('0x87')],'path':_[_0x3ec5('0x65')](_0x49447c)?undefined:util['format'](_0x3ec5('0x88'),_0x49447c[_0x3ec5('0x89')]),'fax':_[_0x3ec5('0x65')](_0x642d80['fax'])?undefined:_0x642d80[_0x3ec5('0x5e')],'AttachmentId':_0x642d80['AttachmentId']},client9002);})[_0x3ec5('0x37')](respondWithResult(_0x4f255b,0xc9))['catch'](handleError(_0x4f255b,null));};exports[_0x3ec5('0x8a')]=function(_0x7a4da7,_0x10b51c){var _0x25a435=path[_0x3ec5('0x8b')](config[_0x3ec5('0x8c')],_0x3ec5('0x8d'),_0x3ec5('0x8e'),_0x3ec5('0x8f'));return db[_0x3ec5('0x3e')][_0x3ec5('0x59')]({'where':{'id':_0x7a4da7[_0x3ec5('0x56')]['id']},'include':[{'model':db[_0x3ec5('0x84')],'as':_0x3ec5('0x84')}]})[_0x3ec5('0x37')](handleEntityNotFound(_0x10b51c,null))['then'](function(_0x505d9c){if(_0x505d9c){return _0x10b51c['download'](path[_0x3ec5('0x8b')](_0x25a435,_0x505d9c[_0x3ec5('0x84')]['basename']));}})[_0x3ec5('0x2a')](handleError(_0x10b51c,null));};
\ No newline at end of file
+var _0x373b=['end','json','undefined','limit','count','offset','Content-Range','apply','save','update','destroy','stack','name','index','map','FaxMessage','rawAttributes','fieldName','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','filters','pick','filter','merge','where','type','includeAll','include','show','keys','options','find','body','params','describe','fax-interactions','accept','fax','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','contact','User','fullname','internal','manual','interface','format','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','Sequelize','SELECT','email','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','client','http','request','then','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxMessage,\x20%s,\x20%s','catch','sendStatus','status'];(function(_0x38147e,_0x24f8f9){var _0x1dfaa9=function(_0x335440){while(--_0x335440){_0x38147e['push'](_0x38147e['shift']());}};_0x1dfaa9(++_0x24f8f9);}(_0x373b,0x64));var _0xb373=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x373b[_0x46aff0];return _0x9d78cf;};'use strict';var emlformat=require(_0xb373('0x0'));var rimraf=require(_0xb373('0x1'));var zipdir=require(_0xb373('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb373('0x3'));var moment=require(_0xb373('0x4'));var BPromise=require(_0xb373('0x5'));var Mustache=require(_0xb373('0x6'));var util=require(_0xb373('0x7'));var path=require('path');var sox=require(_0xb373('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb373('0x9'));var _=require(_0xb373('0xa'));var squel=require('squel');var crypto=require(_0xb373('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb373('0xc'));var toCsv=require(_0xb373('0xd'));var querystring=require(_0xb373('0xe'));var Papa=require(_0xb373('0xf'));var Redis=require(_0xb373('0x10'));var authService=require(_0xb373('0x11'));var qs=require(_0xb373('0x12'));var as=require(_0xb373('0x13'));var hardwareService=require(_0xb373('0x14'));var logger=require(_0xb373('0x15'))('api');var utils=require(_0xb373('0x16'));var config=require(_0xb373('0x17'));var licenseUtil=require(_0xb373('0x18'));var db=require('../../mysqldb')['db'];config[_0xb373('0x19')]=_[_0xb373('0x1a')](config[_0xb373('0x19')],{'host':_0xb373('0x1b'),'port':0x18eb});var socket=require(_0xb373('0x1c'))(new Redis(config[_0xb373('0x19')]));require(_0xb373('0x1d'))[_0xb373('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0xb373('0x1f')][_0xb373('0x20')]({'port':0x232c});var client9002=jayson['client'][_0xb373('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x494904,_0xed7fa5,_0x9f3326,_0x10c00b){return new BPromise(function(_0xca2fb3,_0x23c812){var _0x38f454=_0x10c00b||client;return _0x38f454[_0xb373('0x21')](_0x494904,_0x9f3326)[_0xb373('0x22')](function(_0x114363){logger[_0xb373('0x23')]('FaxMessage,\x20%s,\x20%s',_0xed7fa5,_0xb373('0x24'));logger[_0xb373('0x25')](_0xb373('0x26'),_0xed7fa5,_0xb373('0x24'),JSON[_0xb373('0x27')](_0x114363));if(_0x114363[_0xb373('0x28')]){if(_0x114363['error'][_0xb373('0x29')]===0x1f4){logger[_0xb373('0x28')]('FaxMessage,\x20%s,\x20%s',_0xed7fa5,_0x114363['error'][_0xb373('0x2a')]);return _0x23c812(_0x114363[_0xb373('0x28')][_0xb373('0x2a')]);}logger[_0xb373('0x28')](_0xb373('0x2b'),_0xed7fa5,_0x114363['error'][_0xb373('0x2a')]);return _0xca2fb3(_0x114363['error'][_0xb373('0x2a')]);}else{logger['info'](_0xb373('0x2b'),_0xed7fa5,_0xb373('0x24'));_0xca2fb3(_0x114363['result'][_0xb373('0x2a')]);}})[_0xb373('0x2c')](function(_0x3da477){logger[_0xb373('0x28')](_0xb373('0x2b'),_0xed7fa5,_0x3da477);_0x23c812(_0x3da477);});});}function respondWithStatusCode(_0x49a9d6,_0x8d6057){_0x8d6057=_0x8d6057||0xcc;return function(_0x3e1609){if(_0x3e1609){return _0x49a9d6[_0xb373('0x2d')](_0x8d6057);}return _0x49a9d6[_0xb373('0x2e')](_0x8d6057)[_0xb373('0x2f')]();};}function respondWithResult(_0x97b279,_0x355ff2){_0x355ff2=_0x355ff2||0xc8;return function(_0x36617e){if(_0x36617e){return _0x97b279[_0xb373('0x2e')](_0x355ff2)[_0xb373('0x30')](_0x36617e);}};}function respondWithFilteredResult(_0x405193,_0x2bc1c2){return function(_0x4dae16){if(_0x4dae16){var _0x130e13=typeof _0x2bc1c2['offset']===_0xb373('0x31')&&typeof _0x2bc1c2[_0xb373('0x32')]==='undefined';var _0x3abf7f=_0x4dae16[_0xb373('0x33')];var _0x17e3f3=_0x130e13?0x0:_0x2bc1c2['offset'];var _0x1bc60d=_0x130e13?_0x4dae16[_0xb373('0x33')]:_0x2bc1c2[_0xb373('0x34')]+_0x2bc1c2[_0xb373('0x32')];var _0xdf53cc;if(_0x1bc60d>=_0x3abf7f){_0x1bc60d=_0x3abf7f;_0xdf53cc=0xc8;}else{_0xdf53cc=0xce;}_0x405193[_0xb373('0x2e')](_0xdf53cc);return _0x405193['set'](_0xb373('0x35'),_0x17e3f3+'-'+_0x1bc60d+'/'+_0x3abf7f)[_0xb373('0x30')](_0x4dae16);}return null;};}function patchUpdates(_0x5ae573){return function(_0x258160){try{jsonpatch[_0xb373('0x36')](_0x258160,_0x5ae573,!![]);}catch(_0x767dd3){return BPromise['reject'](_0x767dd3);}return _0x258160[_0xb373('0x37')]();};}function saveUpdates(_0x549d65,_0x587cfd){return function(_0x1e3a68){if(_0x1e3a68){return _0x1e3a68[_0xb373('0x38')](_0x549d65)['then'](function(_0x41c484){return _0x41c484;});}return null;};}function removeEntity(_0x269e77,_0x25558c){return function(_0x5827b3){if(_0x5827b3){return _0x5827b3[_0xb373('0x39')]()[_0xb373('0x22')](function(){_0x269e77[_0xb373('0x2e')](0xcc)[_0xb373('0x2f')]();});}};}function handleEntityNotFound(_0x1846ce,_0x4213b0){return function(_0x138a74){if(!_0x138a74){_0x1846ce[_0xb373('0x2d')](0x194);}return _0x138a74;};}function handleError(_0x161dc0,_0x454b34){_0x454b34=_0x454b34||0x1f4;return function(_0x569d78){logger['error'](_0x569d78[_0xb373('0x3a')]);if(_0x569d78['name']){delete _0x569d78[_0xb373('0x3b')];}_0x161dc0[_0xb373('0x2e')](_0x454b34)['send'](_0x569d78);};}exports[_0xb373('0x3c')]=function(_0x3d6089,_0x2d9690){var _0x4c3b2d={},_0x2b2c16={},_0x497a80={'count':0x0,'rows':[]};var _0x5026b1=_[_0xb373('0x3d')](db[_0xb373('0x3e')][_0xb373('0x3f')],function(_0x2c616d){return{'name':_0x2c616d[_0xb373('0x40')],'type':_0x2c616d['type']['key']};});_0x2b2c16[_0xb373('0x41')]=_[_0xb373('0x3d')](_0x5026b1,_0xb373('0x3b'));_0x2b2c16['query']=_['keys'](_0x3d6089[_0xb373('0x42')]);_0x2b2c16['filters']=_[_0xb373('0x43')](_0x2b2c16[_0xb373('0x41')],_0x2b2c16[_0xb373('0x42')]);_0x4c3b2d[_0xb373('0x44')]=_[_0xb373('0x43')](_0x2b2c16['model'],qs[_0xb373('0x45')](_0x3d6089[_0xb373('0x42')][_0xb373('0x45')]));_0x4c3b2d[_0xb373('0x44')]=_0x4c3b2d['attributes'][_0xb373('0x46')]?_0x4c3b2d[_0xb373('0x44')]:_0x2b2c16[_0xb373('0x41')];if(!_0x3d6089[_0xb373('0x42')][_0xb373('0x47')](_0xb373('0x48'))){_0x4c3b2d['limit']=qs['limit'](_0x3d6089[_0xb373('0x42')][_0xb373('0x32')]);_0x4c3b2d[_0xb373('0x34')]=qs['offset'](_0x3d6089[_0xb373('0x42')]['offset']);}_0x4c3b2d[_0xb373('0x49')]=qs['sort'](_0x3d6089[_0xb373('0x42')]['sort']);_0x4c3b2d['where']=qs[_0xb373('0x4a')](_[_0xb373('0x4b')](_0x3d6089[_0xb373('0x42')],_0x2b2c16[_0xb373('0x4a')]),_0x5026b1);if(_0x3d6089[_0xb373('0x42')][_0xb373('0x4c')]){_0x4c3b2d['where']=_[_0xb373('0x4d')](_0x4c3b2d[_0xb373('0x4e')],{'$or':_[_0xb373('0x3d')](_0x5026b1,function(_0x242d38){if(_0x242d38[_0xb373('0x4f')]!=='VIRTUAL'){var _0x423368={};_0x423368[_0x242d38[_0xb373('0x3b')]]={'$like':'%'+_0x3d6089[_0xb373('0x42')][_0xb373('0x4c')]+'%'};return _0x423368;}})});}_0x4c3b2d=_[_0xb373('0x4d')]({},_0x4c3b2d,_0x3d6089['options']);var _0x7b0b53={'where':_0x4c3b2d['where']};return db[_0xb373('0x3e')][_0xb373('0x33')](_0x7b0b53)[_0xb373('0x22')](function(_0x4f008d){_0x497a80['count']=_0x4f008d;if(_0x3d6089[_0xb373('0x42')][_0xb373('0x50')]){_0x4c3b2d[_0xb373('0x51')]=[{'all':!![]}];}return db[_0xb373('0x3e')]['findAll'](_0x4c3b2d);})[_0xb373('0x22')](function(_0x2e94f4){_0x497a80['rows']=_0x2e94f4;return _0x497a80;})[_0xb373('0x22')](respondWithFilteredResult(_0x2d9690,_0x4c3b2d))[_0xb373('0x2c')](handleError(_0x2d9690,null));};exports[_0xb373('0x52')]=function(_0x5a3759,_0x47bf68){var _0x1afcb9={'raw':!![],'where':{'id':_0x5a3759['params']['id']}},_0x4f53af={};_0x4f53af[_0xb373('0x41')]=_[_0xb373('0x53')](db['FaxMessage'][_0xb373('0x3f')]);_0x4f53af[_0xb373('0x42')]=_[_0xb373('0x53')](_0x5a3759[_0xb373('0x42')]);_0x4f53af['filters']=_[_0xb373('0x43')](_0x4f53af[_0xb373('0x41')],_0x4f53af['query']);_0x1afcb9[_0xb373('0x44')]=_[_0xb373('0x43')](_0x4f53af[_0xb373('0x41')],qs[_0xb373('0x45')](_0x5a3759['query']['fields']));_0x1afcb9['attributes']=_0x1afcb9[_0xb373('0x44')][_0xb373('0x46')]?_0x1afcb9[_0xb373('0x44')]:_0x4f53af['model'];if(_0x5a3759['query'][_0xb373('0x50')]){_0x1afcb9[_0xb373('0x51')]=[{'all':!![]}];}_0x1afcb9=_[_0xb373('0x4d')]({},_0x1afcb9,_0x5a3759[_0xb373('0x54')]);return db[_0xb373('0x3e')][_0xb373('0x55')](_0x1afcb9)[_0xb373('0x22')](handleEntityNotFound(_0x47bf68,null))[_0xb373('0x22')](respondWithResult(_0x47bf68,null))[_0xb373('0x2c')](handleError(_0x47bf68,null));};exports[_0xb373('0x38')]=function(_0x40f7de,_0x6a7ad){if(_0x40f7de[_0xb373('0x56')]['id']){delete _0x40f7de[_0xb373('0x56')]['id'];}return db[_0xb373('0x3e')]['find']({'where':{'id':_0x40f7de['params']['id']}})[_0xb373('0x22')](handleEntityNotFound(_0x6a7ad,null))['then'](saveUpdates(_0x40f7de[_0xb373('0x56')],null))[_0xb373('0x22')](respondWithResult(_0x6a7ad,null))[_0xb373('0x2c')](handleError(_0x6a7ad,null));};exports[_0xb373('0x39')]=function(_0x5315f0,_0x3abc04){return db[_0xb373('0x3e')]['find']({'where':{'id':_0x5315f0[_0xb373('0x57')]['id']}})[_0xb373('0x22')](handleEntityNotFound(_0x3abc04,null))[_0xb373('0x22')](removeEntity(_0x3abc04,null))['catch'](handleError(_0x3abc04,null));};exports[_0xb373('0x58')]=function(_0x48f39f,_0x1871f0){return db['FaxMessage']['describe']()[_0xb373('0x22')](respondWithResult(_0x1871f0,null))[_0xb373('0x2c')](handleError(_0x1871f0,null));};var interaction_log=require(_0xb373('0x15'))(_0xb373('0x59'));exports[_0xb373('0x5a')]=function(_0x266f19,_0x43a896,_0x52a7e7){var _0x3f8d08={'agent':{},'channel':_0xb373('0x5b')};if(_0x266f19[_0xb373('0x56')]['id']){delete _0x266f19[_0xb373('0x56')]['id'];}_0x266f19[_0xb373('0x56')][_0xb373('0x5c')]=!![];_0x266f19[_0xb373('0x56')]['readAt']=moment()['format'](_0xb373('0x5d'));_0x266f19[_0xb373('0x56')][_0xb373('0x5e')]=_0x266f19[_0xb373('0x56')][_0xb373('0x5e')]||_0x266f19[_0xb373('0x5f')]['id'];_0x3f8d08[_0xb373('0x60')]['id']=_0x266f19[_0xb373('0x56')][_0xb373('0x5e')];return db['FaxMessage'][_0xb373('0x55')]({'where':{'id':_0x266f19[_0xb373('0x57')]['id'],'UserId':null}})[_0xb373('0x22')](handleEntityNotFound(_0x43a896,null))['then'](saveUpdates(_0x266f19[_0xb373('0x56')],null))[_0xb373('0x22')](function(_0x5b7d29){if(_0x5b7d29){_0x3f8d08['message']=_0x5b7d29[_0xb373('0x61')]({'plain':!![]});return db['FaxInteraction'][_0xb373('0x55')]({'where':{'id':_0x5b7d29[_0xb373('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x43a896,null))[_0xb373('0x22')](function(_0x39801){if(_0x39801){return _0x39801[_0xb373('0x38')]({'UserId':_0x266f19[_0xb373('0x56')]['UserId'],'read1stAt':_[_0xb373('0x63')](_0x39801[_0xb373('0x64')])?moment()['format'](_0xb373('0x5d')):undefined});}return null;})[_0xb373('0x22')](function(_0x17f149){if(_0x17f149){_0x3f8d08[_0xb373('0x65')]=_0x17f149['get']({'plain':!![]});interaction_log['info'](_0xb373('0x66'),_0x266f19['user']['id'],_0x266f19[_0xb373('0x5f')][_0xb373('0x3b')],_0x266f19['user'][_0xb373('0x67')],_0x3f8d08[_0xb373('0x65')]['id'],_0x266f19[_0xb373('0x56')]?JSON[_0xb373('0x27')](_0x266f19[_0xb373('0x56')]):_0xb373('0x68'));return respondWithRpcPromise(_0xb373('0x69'),_0xb373('0x6a'),_0x3f8d08);}return null;})[_0xb373('0x22')](function(_0x51ea4b){var _0x4fa60f=_0xb373('0x6b')+_0x51ea4b['message'][_0xb373('0x6c')];return db[_0xb373('0x6d')][_0xb373('0x42')](_0x4fa60f,{'type':db['Sequelize'][_0xb373('0x6e')]['SELECT'],'raw':!![]})[_0xb373('0x22')](function(_0x209dc8){return _0x209dc8;});})[_0xb373('0x22')](function(_0x4552a3){if(_0x4552a3){_0x3f8d08[_0xb373('0x2a')][_0xb373('0x6f')]=_0x4552a3[0x0];if(!_0x266f19[_0xb373('0x56')][_0xb373('0x5e')])return;return db[_0xb373('0x70')][_0xb373('0x55')]({'where':{'id':_0x266f19[_0xb373('0x56')][_0xb373('0x5e')],'role':'agent'},'attributes':['id',_0xb373('0x3b'),_0xb373('0x71'),'email',_0xb373('0x72')],'raw':!![]});}return null;})[_0xb373('0x22')](function(_0x3936d9){if(!_0x3936d9)return null;_0x3f8d08[_0xb373('0x2a')][_0xb373('0x60')]=_0x3936d9;return _0x3f8d08;})[_0xb373('0x22')](function(_0xf47867){if(_0xf47867){if(_0x266f19[_0xb373('0x56')][_0xb373('0x73')]){_0x3f8d08[_0xb373('0x2a')][_0xb373('0x74')]=util[_0xb373('0x75')](_0xb373('0x76'),_0x266f19[_0xb373('0x5f')]['name']);_0x3f8d08[_0xb373('0x2a')][_0xb373('0x77')]=_0x3f8d08[_0xb373('0x77')];_0x3f8d08[_0xb373('0x2a')][_0xb373('0x78')]=_0x3f8d08[_0xb373('0x77')];_0x3f8d08[_0xb373('0x2a')][_0xb373('0x79')]=_0xb373('0x5a');return respondWithRpcPromise('EventManager',_0xb373('0x7a'),{'event':_0xb373('0x7b'),'message':_0x3f8d08[_0xb373('0x2a')]},client9002)['then'](function(){return _0x3f8d08;});}return _0x3f8d08;}return null;})[_0xb373('0x22')](respondWithResult(_0x43a896,null))[_0xb373('0x2c')](handleError(_0x43a896,null));};var interaction_log=require(_0xb373('0x15'))(_0xb373('0x59'));exports[_0xb373('0x7c')]=function(_0x511304,_0x50124a,_0x4d49ab){var _0x1ba8d0={'agent':{},'channel':'fax'};if(_0x511304[_0xb373('0x56')]['id']){delete _0x511304['body']['id'];}_0x511304[_0xb373('0x56')][_0xb373('0x5e')]=_0x511304[_0xb373('0x56')][_0xb373('0x5e')]||_0x511304[_0xb373('0x5f')]['id'];_0x1ba8d0[_0xb373('0x60')]['id']=_0x511304[_0xb373('0x56')][_0xb373('0x5e')];return db[_0xb373('0x3e')]['find']({'where':{'id':_0x511304[_0xb373('0x57')]['id'],'UserId':null}})[_0xb373('0x22')](handleEntityNotFound(_0x50124a,null))[_0xb373('0x22')](function(_0x346b82){if(_0x346b82){_0x1ba8d0[_0xb373('0x2a')]=_0x346b82[_0xb373('0x61')]({'plain':!![]});return db[_0xb373('0x7d')][_0xb373('0x55')]({'where':{'id':_0x346b82[_0xb373('0x62')]}});}return null;})[_0xb373('0x22')](handleEntityNotFound(_0x50124a,null))[_0xb373('0x22')](function(_0x216605){if(_0x216605){_0x1ba8d0[_0xb373('0x65')]=_0x216605[_0xb373('0x61')]({'plain':!![]});interaction_log[_0xb373('0x23')](_0xb373('0x7e'),_0x511304[_0xb373('0x5f')]['id'],_0x511304['user'][_0xb373('0x3b')],_0x511304[_0xb373('0x5f')]['role'],_0x1ba8d0[_0xb373('0x65')]['id'],_0x511304[_0xb373('0x56')]?JSON[_0xb373('0x27')](_0x511304[_0xb373('0x56')]):_0xb373('0x68'));return respondWithRpcPromise('RejectMessage',_0xb373('0x7f'),_0x1ba8d0);}return null;})['then'](function(_0x212d95){var _0x4e1830=_0xb373('0x6b')+_0x212d95[_0xb373('0x2a')][_0xb373('0x6c')];return db[_0xb373('0x6d')][_0xb373('0x42')](_0x4e1830,{'type':db[_0xb373('0x80')][_0xb373('0x6e')][_0xb373('0x81')],'raw':!![]})[_0xb373('0x22')](function(_0x428644){return _0x428644;});})['then'](function(_0x5201c6){if(_0x5201c6){_0x1ba8d0[_0xb373('0x2a')][_0xb373('0x6f')]=_0x5201c6[0x0];if(!_0x511304['body'][_0xb373('0x5e')])return;return db[_0xb373('0x70')][_0xb373('0x55')]({'where':{'id':_0x511304[_0xb373('0x56')][_0xb373('0x5e')],'role':_0xb373('0x60')},'attributes':['id',_0xb373('0x3b'),'fullname',_0xb373('0x82'),_0xb373('0x72')],'raw':!![]});}return null;})[_0xb373('0x22')](function(_0x543570){if(!_0x543570)return null;_0x1ba8d0[_0xb373('0x2a')]['agent']=_0x543570;return _0x1ba8d0;})[_0xb373('0x22')](function(_0x1e64e2){if(_0x1e64e2){_0x1e64e2[_0xb373('0x2a')][_0xb373('0x74')]=util[_0xb373('0x75')](_0xb373('0x76'),_0x511304[_0xb373('0x5f')][_0xb373('0x3b')]);_0x1e64e2[_0xb373('0x2a')][_0xb373('0x77')]=_0x1ba8d0[_0xb373('0x77')];_0x1e64e2[_0xb373('0x2a')][_0xb373('0x78')]=_0x1ba8d0[_0xb373('0x77')];_0x1e64e2[_0xb373('0x2a')]['event']=_0xb373('0x7c');respondWithRpcPromise('EventManager',_0xb373('0x7a'),{'event':_0xb373('0x83'),'message':_0x1e64e2[_0xb373('0x2a')]},client9002);return _0x1ba8d0;}return null;})[_0xb373('0x22')](respondWithResult(_0x50124a,null))[_0xb373('0x2c')](handleError(_0x50124a,null));};exports[_0xb373('0x84')]=function(_0x203c14,_0x3e75a1){var _0x163392;return db[_0xb373('0x3e')]['create'](_0x203c14[_0xb373('0x56')],{})['then'](function(_0x1c85c3){_0x163392=_0x1c85c3;return db[_0xb373('0x85')][_0xb373('0x86')]({'where':{'id':_0x163392[_0xb373('0x6c')]}});})[_0xb373('0x22')](function(_0x127767){if(_[_0xb373('0x63')](_0x127767)){return;}else{_0x163392['fax']=_0x127767[_0xb373('0x5b')];return db[_0xb373('0x87')][_0xb373('0x86')]({'where':{'id':_0x163392[_0xb373('0x88')]}});}})[_0xb373('0x22')](function(_0x2a15d0){return respondWithRpcPromise(_0xb373('0x89'),_0xb373('0x89'),{'FaxAccountId':_['isNil'](_0x203c14['body'])?undefined:_0x203c14[_0xb373('0x56')][_0xb373('0x8a')],'path':_[_0xb373('0x63')](_0x2a15d0)?undefined:util[_0xb373('0x75')](_0xb373('0x8b'),_0x2a15d0[_0xb373('0x8c')]),'fax':_[_0xb373('0x63')](_0x163392['fax'])?undefined:_0x163392[_0xb373('0x5b')],'AttachmentId':_0x163392[_0xb373('0x88')]},client9002);})['then'](respondWithResult(_0x3e75a1,0xc9))[_0xb373('0x2c')](handleError(_0x3e75a1,null));};exports[_0xb373('0x8d')]=function(_0x6242d5,_0x50fec8){var _0x1102bc=path[_0xb373('0x8e')](config[_0xb373('0x8f')],_0xb373('0x90'),_0xb373('0x91'),_0xb373('0x92'));return db[_0xb373('0x3e')][_0xb373('0x55')]({'where':{'id':_0x6242d5[_0xb373('0x57')]['id']},'include':[{'model':db[_0xb373('0x87')],'as':'Attachment'}]})['then'](handleEntityNotFound(_0x50fec8,null))[_0xb373('0x22')](function(_0x24b072){if(_0x24b072){return _0x50fec8[_0xb373('0x8d')](path[_0xb373('0x8e')](_0x1102bc,_0x24b072[_0xb373('0x87')]['basename']));}})['catch'](handleError(_0x50fec8,null));};
\ No newline at end of file
index 9af6feb..405b5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eec=['events','../../mysqldb','FaxMessage','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0x6eec,0x1e0));var _0xc6ee=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6eec[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xc6ee('0x0'));var FaxMessage=require(_0xc6ee('0x1'))['db'][_0xc6ee('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xc6ee('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc6ee('0x4'),'afterDestroy':_0xc6ee('0x5')};function emitEvent(_0x56475c){return function(_0x63587e,_0x26ee43,_0x41c66b){FaxMessageEvents[_0xc6ee('0x6')](_0x56475c+':'+_0x63587e['id'],_0x63587e);FaxMessageEvents[_0xc6ee('0x6')](_0x56475c,_0x63587e);_0x41c66b(null);};}for(var e in events){if(events[_0xc6ee('0x7')](e)){var event=events[e];FaxMessage[_0xc6ee('0x8')](e,emitEvent(event));}}module[_0xc6ee('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0xd991=['FaxMessage','setMaxListeners','save','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x28f361,_0x12707a){var _0x4c54e2=function(_0x3cc9a8){while(--_0x3cc9a8){_0x28f361['push'](_0x28f361['shift']());}};_0x4c54e2(++_0x12707a);}(_0xd991,0x115));var _0x1d99=function(_0x343ff2,_0x521684){_0x343ff2=_0x343ff2-0x0;var _0x49df11=_0xd991[_0x343ff2];return _0x49df11;};'use strict';var EventEmitter=require(_0x1d99('0x0'));var FaxMessage=require(_0x1d99('0x1'))['db'][_0x1d99('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x1d99('0x3')](0x0);var events={'afterCreate':_0x1d99('0x4'),'afterUpdate':'update','afterDestroy':_0x1d99('0x5')};function emitEvent(_0xe9aefb){return function(_0xf03459,_0x1f6da3,_0x300c32){FaxMessageEvents[_0x1d99('0x6')](_0xe9aefb+':'+_0xf03459['id'],_0xf03459);FaxMessageEvents['emit'](_0xe9aefb,_0xf03459);_0x300c32(null);};}for(var e in events){if(events[_0x1d99('0x7')](e)){var event=events[e];FaxMessage[_0x1d99('0x8')](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
index 0948e24..5f8a8ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1545=['request-promise','rimraf','exports','define','FaxMessage','body','FULLTEXT','models','toLowerCase','direction','out','secret','isNil','UserId','findOne','then','createdAt','error','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird'];(function(_0x1e1c58,_0x1aa518){var _0x57796c=function(_0x58ca2c){while(--_0x58ca2c){_0x1e1c58['push'](_0x1e1c58['shift']());}};_0x57796c(++_0x1aa518);}(_0x1545,0x74));var _0x5154=function(_0xf671c8,_0x275759){_0xf671c8=_0xf671c8-0x0;var _0x2a7d44=_0x1545[_0xf671c8];return _0x2a7d44;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5154('0x0'))(_0x5154('0x1'));var moment=require(_0x5154('0x2'));var BPromise=require(_0x5154('0x3'));var rp=require(_0x5154('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5154('0x5'));var config=require('../../config/environment');var attributes=require('./faxMessage.attributes');module[_0x5154('0x6')]=function(_0x4fa860,_0x36a295){return _0x4fa860[_0x5154('0x7')](_0x5154('0x8'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x5154('0x9')],'type':_0x5154('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x132422,_0x1074b4,_0x24a206){var _0x570f16=_0x4fa860[_0x5154('0xb')];var _0x1b788e=_0x132422['get']({'plain':!![]});if(_0x1b788e['direction'][_0x5154('0xc')]()==='in'||_0x1b788e[_0x5154('0xd')]['toLowerCase']()===_0x5154('0xe')&&!_0x1b788e[_0x5154('0xf')]&&!_[_0x5154('0x10')](_0x1b788e[_0x5154('0x11')])){_0x570f16['FaxInteraction'][_0x5154('0x12')]({'where':{'id':_0x1b788e['FaxInteractionId']}})[_0x5154('0x13')](function(_0x3fdfc2){if(_0x3fdfc2){_0x3fdfc2['update']({'lastMsgAt':_0x1b788e[_0x5154('0x14')],'lastMsgDirection':_0x1b788e[_0x5154('0xd')]['toLowerCase']()});}})['catch'](function(_0x321869){console[_0x5154('0x15')](_0x321869);});}_0x24a206();}},'charset':_0x5154('0x16'),'collate':_0x5154('0x17')});};
\ No newline at end of file
+var _0xedd8=['FaxInteraction','FaxInteractionId','then','update','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./faxMessage.attributes','exports','fax_messages','fti_fax_messages','body','get','toLowerCase','direction','out','secret'];(function(_0x5f46e7,_0x62f9f8){var _0x567e95=function(_0x5cb693){while(--_0x5cb693){_0x5f46e7['push'](_0x5f46e7['shift']());}};_0x567e95(++_0x62f9f8);}(_0xedd8,0x8a));var _0x8edd=function(_0x48a96f,_0x530059){_0x48a96f=_0x48a96f-0x0;var _0x3ff3ef=_0xedd8[_0x48a96f];return _0x3ff3ef;};'use strict';var _=require(_0x8edd('0x0'));var util=require(_0x8edd('0x1'));var logger=require(_0x8edd('0x2'))('api');var moment=require(_0x8edd('0x3'));var BPromise=require(_0x8edd('0x4'));var rp=require(_0x8edd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8edd('0x6'));var config=require(_0x8edd('0x7'));var attributes=require(_0x8edd('0x8'));module[_0x8edd('0x9')]=function(_0x41ab35,_0x3e5bef){return _0x41ab35['define']('FaxMessage',attributes,{'tableName':_0x8edd('0xa'),'paranoid':![],'indexes':[{'name':_0x8edd('0xb'),'fields':[_0x8edd('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5c1b18,_0x569895,_0x15175d){var _0x4899a7=_0x41ab35['models'];var _0x47511f=_0x5c1b18[_0x8edd('0xd')]({'plain':!![]});if(_0x47511f['direction'][_0x8edd('0xe')]()==='in'||_0x47511f[_0x8edd('0xf')][_0x8edd('0xe')]()===_0x8edd('0x10')&&!_0x47511f[_0x8edd('0x11')]&&!_['isNil'](_0x47511f['UserId'])){_0x4899a7[_0x8edd('0x12')]['findOne']({'where':{'id':_0x47511f[_0x8edd('0x13')]}})[_0x8edd('0x14')](function(_0x41be02){if(_0x41be02){_0x41be02[_0x8edd('0x15')]({'lastMsgAt':_0x47511f['createdAt'],'lastMsgDirection':_0x47511f[_0x8edd('0xf')][_0x8edd('0xe')]()});}})[_0x8edd('0x16')](function(_0x49507e){console[_0x8edd('0x17')](_0x49507e);});}_0x15175d();}},'charset':_0x8edd('0x18'),'collate':_0x8edd('0x19')});};
\ No newline at end of file
index 9bb1b21..efd1551 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['info','result','catch','FaxMessage','create','body','options','then','CreateFaxMessage','update','raw','where','attributes','UpdateFaxMessage','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','defaults','localhost','./faxMessage.socket','register','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xb458,0x103));var _0x8b45=function(_0x3d2c5e,_0x178ef8){_0x3d2c5e=_0x3d2c5e-0x0;var _0xc99fa0=_0xb458[_0x3d2c5e];return _0xc99fa0;};'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});config[_0x8b45('0x9')]=_[_0x8b45('0xa')](config[_0x8b45('0x9')],{'host':_0x8b45('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8b45('0x9')]));require(_0x8b45('0xc'))[_0x8b45('0xd')](socket);function respondWithRpcPromise(_0x2bc809,_0x2f7117,_0x499899){return new BPromise(function(_0x2a4c83,_0x7cc49b){return client['request'](_0x2bc809,_0x499899)['then'](function(_0x5bb708){logger['info'](_0x8b45('0xe'),_0x2f7117,_0x8b45('0xf'));logger[_0x8b45('0x10')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x2f7117,_0x8b45('0xf'),JSON[_0x8b45('0x11')](_0x5bb708));if(_0x5bb708[_0x8b45('0x12')]){if(_0x5bb708[_0x8b45('0x12')][_0x8b45('0x13')]===0x1f4){logger[_0x8b45('0x12')]('FaxMessage,\x20%s,\x20%s',_0x2f7117,_0x5bb708['error'][_0x8b45('0x14')]);return _0x7cc49b(_0x5bb708[_0x8b45('0x12')][_0x8b45('0x14')]);}logger[_0x8b45('0x12')](_0x8b45('0xe'),_0x2f7117,_0x5bb708[_0x8b45('0x12')][_0x8b45('0x14')]);return _0x2a4c83(_0x5bb708[_0x8b45('0x12')][_0x8b45('0x14')]);}else{logger[_0x8b45('0x15')](_0x8b45('0xe'),_0x2f7117,_0x8b45('0xf'));_0x2a4c83(_0x5bb708[_0x8b45('0x16')][_0x8b45('0x14')]);}})[_0x8b45('0x17')](function(_0x31c6b4){logger[_0x8b45('0x12')](_0x8b45('0xe'),_0x2f7117,_0x31c6b4);_0x7cc49b(_0x31c6b4);});});}exports['CreateFaxMessage']=function(_0x25e8a1){var _0x2db2d1=this;return new Promise(function(_0x1767d5,_0x46e21a){return db[_0x8b45('0x18')][_0x8b45('0x19')](_0x25e8a1[_0x8b45('0x1a')],{'raw':_0x25e8a1[_0x8b45('0x1b')]?_0x25e8a1['options']['raw']===undefined?!![]:![]:!![]})[_0x8b45('0x1c')](function(_0x580e17){logger[_0x8b45('0x15')](_0x8b45('0x1d'),_0x25e8a1);logger[_0x8b45('0x10')](_0x8b45('0x1d'),_0x25e8a1,JSON[_0x8b45('0x11')](_0x580e17));_0x1767d5(_0x580e17);})[_0x8b45('0x17')](function(_0x32b12b){logger['error']('CreateFaxMessage',_0x32b12b[_0x8b45('0x14')],_0x25e8a1);_0x46e21a(_0x2db2d1[_0x8b45('0x12')](0x1f4,_0x32b12b['message']));});});};exports['UpdateFaxMessage']=function(_0x129c35){var _0x32f6f0=this;return new Promise(function(_0x2ca2d9,_0x2f37bc){return db['FaxMessage'][_0x8b45('0x1e')](_0x129c35[_0x8b45('0x1a')],{'raw':_0x129c35[_0x8b45('0x1b')]?_0x129c35[_0x8b45('0x1b')][_0x8b45('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x129c35[_0x8b45('0x1b')]?_0x129c35[_0x8b45('0x1b')][_0x8b45('0x20')]||null:null,'attributes':_0x129c35[_0x8b45('0x1b')]?_0x129c35[_0x8b45('0x1b')][_0x8b45('0x21')]||null:null,'limit':_0x129c35[_0x8b45('0x1b')]?_0x129c35[_0x8b45('0x1b')]['limit']||null:null})[_0x8b45('0x1c')](function(_0x36db96){logger[_0x8b45('0x15')](_0x8b45('0x22'),_0x129c35);logger[_0x8b45('0x10')](_0x8b45('0x22'),_0x129c35,JSON[_0x8b45('0x11')](_0x36db96));_0x2ca2d9(_0x36db96);})[_0x8b45('0x17')](function(_0x5d8938){logger[_0x8b45('0x12')](_0x8b45('0x22'),_0x5d8938[_0x8b45('0x14')],_0x129c35);_0x2f37bc(_0x32f6f0[_0x8b45('0x12')](0x1f4,_0x5d8938[_0x8b45('0x14')]));});});};
\ No newline at end of file
+var _0x2d17=['create','catch','UpdateFaxMessage','FaxMessage','body','options','where','attributes','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateFaxMessage'];(function(_0x228d41,_0x2f3f79){var _0x3ec383=function(_0x573254){while(--_0x573254){_0x228d41['push'](_0x228d41['shift']());}};_0x3ec383(++_0x2f3f79);}(_0x2d17,0x17e));var _0x72d1=function(_0xa4a99e,_0x51df5a){_0xa4a99e=_0xa4a99e-0x0;var _0x489613=_0x2d17[_0xa4a99e];return _0x489613;};'use strict';var _=require(_0x72d1('0x0'));var util=require(_0x72d1('0x1'));var moment=require('moment');var BPromise=require(_0x72d1('0x2'));var rs=require(_0x72d1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72d1('0x4'))['db'];var utils=require(_0x72d1('0x5'));var logger=require('../../config/logger')(_0x72d1('0x6'));var config=require('../../config/environment');var jayson=require(_0x72d1('0x7'));var client=jayson['client'][_0x72d1('0x8')]({'port':0x232a});config[_0x72d1('0x9')]=_['defaults'](config[_0x72d1('0x9')],{'host':_0x72d1('0xa'),'port':0x18eb});var socket=require(_0x72d1('0xb'))(new Redis(config['redis']));require(_0x72d1('0xc'))[_0x72d1('0xd')](socket);function respondWithRpcPromise(_0x283775,_0x593c91,_0x1d7520){return new BPromise(function(_0x3a35c6,_0x45eb4a){return client[_0x72d1('0xe')](_0x283775,_0x1d7520)[_0x72d1('0xf')](function(_0x3916f2){logger[_0x72d1('0x10')](_0x72d1('0x11'),_0x593c91,_0x72d1('0x12'));logger[_0x72d1('0x13')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x593c91,_0x72d1('0x12'),JSON[_0x72d1('0x14')](_0x3916f2));if(_0x3916f2[_0x72d1('0x15')]){if(_0x3916f2[_0x72d1('0x15')][_0x72d1('0x16')]===0x1f4){logger[_0x72d1('0x15')](_0x72d1('0x11'),_0x593c91,_0x3916f2[_0x72d1('0x15')][_0x72d1('0x17')]);return _0x45eb4a(_0x3916f2[_0x72d1('0x15')][_0x72d1('0x17')]);}logger[_0x72d1('0x15')](_0x72d1('0x11'),_0x593c91,_0x3916f2['error'][_0x72d1('0x17')]);return _0x3a35c6(_0x3916f2['error'][_0x72d1('0x17')]);}else{logger[_0x72d1('0x10')]('FaxMessage,\x20%s,\x20%s',_0x593c91,_0x72d1('0x12'));_0x3a35c6(_0x3916f2[_0x72d1('0x18')][_0x72d1('0x17')]);}})['catch'](function(_0x4925f6){logger[_0x72d1('0x15')](_0x72d1('0x11'),_0x593c91,_0x4925f6);_0x45eb4a(_0x4925f6);});});}exports[_0x72d1('0x19')]=function(_0x1865c1){var _0x8d6890=this;return new Promise(function(_0x2253fd,_0x1e2411){return db['FaxMessage'][_0x72d1('0x1a')](_0x1865c1['body'],{'raw':_0x1865c1['options']?_0x1865c1['options']['raw']===undefined?!![]:![]:!![]})[_0x72d1('0xf')](function(_0x374602){logger['info'](_0x72d1('0x19'),_0x1865c1);logger[_0x72d1('0x13')](_0x72d1('0x19'),_0x1865c1,JSON[_0x72d1('0x14')](_0x374602));_0x2253fd(_0x374602);})[_0x72d1('0x1b')](function(_0x4e6acd){logger['error'](_0x72d1('0x19'),_0x4e6acd[_0x72d1('0x17')],_0x1865c1);_0x1e2411(_0x8d6890[_0x72d1('0x15')](0x1f4,_0x4e6acd[_0x72d1('0x17')]));});});};exports[_0x72d1('0x1c')]=function(_0x33d530){var _0x163bec=this;return new Promise(function(_0x589f7c,_0x57ec9e){return db[_0x72d1('0x1d')]['update'](_0x33d530[_0x72d1('0x1e')],{'raw':_0x33d530[_0x72d1('0x1f')]?_0x33d530[_0x72d1('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33d530[_0x72d1('0x1f')]?_0x33d530['options'][_0x72d1('0x20')]||null:null,'attributes':_0x33d530[_0x72d1('0x1f')]?_0x33d530[_0x72d1('0x1f')][_0x72d1('0x21')]||null:null,'limit':_0x33d530['options']?_0x33d530[_0x72d1('0x1f')]['limit']||null:null})[_0x72d1('0xf')](function(_0x32dc5e){logger['info'](_0x72d1('0x1c'),_0x33d530);logger[_0x72d1('0x13')](_0x72d1('0x1c'),_0x33d530,JSON[_0x72d1('0x14')](_0x32dc5e));_0x589f7c(_0x32dc5e);})[_0x72d1('0x1b')](function(_0x52511f){logger[_0x72d1('0x15')](_0x72d1('0x1c'),_0x52511f[_0x72d1('0x17')],_0x33d530);_0x57ec9e(_0x163bec['error'](0x1f4,_0x52511f[_0x72d1('0x17')]));});});};
\ No newline at end of file
index 4c22cbc..b98ac93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0672=['length','save','remove','update','emit','register'];(function(_0x9fdd53,_0xd7b5c0){var _0x4ed380=function(_0x365143){while(--_0x365143){_0x9fdd53['push'](_0x9fdd53['shift']());}};_0x4ed380(++_0xd7b5c0);}(_0x0672,0xe5));var _0x2067=function(_0x423797,_0x3d393b){_0x423797=_0x423797-0x0;var _0x57ec0c=_0x0672[_0x423797];return _0x57ec0c;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x2067('0x0'),_0x2067('0x1'),_0x2067('0x2')];function createListener(_0x5e4053,_0x533da2){return function(_0x4771a8){_0x533da2[_0x2067('0x3')](_0x5e4053,_0x4771a8);};}function removeListener(_0x43c1d3,_0x3f649f){return function(){FaxMessageEvents['removeListener'](_0x43c1d3,_0x3f649f);};}exports[_0x2067('0x4')]=function(_0x56db90){for(var _0x4395d4=0x0,_0x112016=events[_0x2067('0x5')];_0x4395d4<_0x112016;_0x4395d4++){var _0xc7110e=events[_0x4395d4];var _0x2ae7ce=createListener('faxMessage:'+_0xc7110e,_0x56db90);FaxMessageEvents['on'](_0xc7110e,_0x2ae7ce);}};
\ No newline at end of file
+var _0x0058=['length','faxMessage:','./faxMessage.events','save','update','emit'];(function(_0x1b33fe,_0x2149c7){var _0x5aa05c=function(_0x42bdd9){while(--_0x42bdd9){_0x1b33fe['push'](_0x1b33fe['shift']());}};_0x5aa05c(++_0x2149c7);}(_0x0058,0xb0));var _0x8005=function(_0x2b2bc1,_0x265cea){_0x2b2bc1=_0x2b2bc1-0x0;var _0x584606=_0x0058[_0x2b2bc1];return _0x584606;};'use strict';var FaxMessageEvents=require(_0x8005('0x0'));var events=[_0x8005('0x1'),'remove',_0x8005('0x2')];function createListener(_0x1f9a60,_0x84fc4e){return function(_0x5a60b6){_0x84fc4e[_0x8005('0x3')](_0x1f9a60,_0x5a60b6);};}function removeListener(_0x1bb87c,_0x378dd2){return function(){FaxMessageEvents['removeListener'](_0x1bb87c,_0x378dd2);};}exports['register']=function(_0x372f97){for(var _0x5a1c0c=0x0,_0x268951=events[_0x8005('0x4')];_0x5a1c0c<_0x268951;_0x5a1c0c++){var _0x2658e1=events[_0x5a1c0c];var _0x23ac9e=createListener(_0x8005('0x5')+_0x2658e1,_0x372f97);FaxMessageEvents['on'](_0x2658e1,_0x23ac9e);}};
\ No newline at end of file
index 445c8c4..daf98c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b20=['accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','post','fax','faxmessage:create','create','put','update','/:id/accept'];(function(_0x12171f,_0x391ca6){var _0x3b6cde=function(_0x15f657){while(--_0x15f657){_0x12171f['push'](_0x12171f['shift']());}};_0x3b6cde(++_0x391ca6);}(_0x6b20,0xd1));var _0x06b2=function(_0x277544,_0x41e573){_0x277544=_0x277544-0x0;var _0x3c9a85=_0x6b20[_0x277544];return _0x3c9a85;};'use strict';var multer=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var path=require('path');var timeout=require(_0x06b2('0x2'));var express=require('express');var router=express[_0x06b2('0x3')]();var fs_extra=require(_0x06b2('0x4'));var auth=require(_0x06b2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x06b2('0x6'));var controller=require(_0x06b2('0x7'));router[_0x06b2('0x8')]('/',auth[_0x06b2('0x9')](),controller[_0x06b2('0xa')]);router[_0x06b2('0x8')](_0x06b2('0xb'),auth['isAuthenticated'](),controller[_0x06b2('0xc')]);router[_0x06b2('0x8')](_0x06b2('0xd'),auth['isAuthenticated'](),controller[_0x06b2('0xe')]);router['get'](_0x06b2('0xf'),auth['isAuthenticated'](),controller['download']);router[_0x06b2('0x10')]('/',auth[_0x06b2('0x9')](),interaction['tracked'](_0x06b2('0x11'),_0x06b2('0x12')),controller[_0x06b2('0x13')]);router[_0x06b2('0x14')](_0x06b2('0xd'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x15')]);router[_0x06b2('0x14')](_0x06b2('0x16'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x17')]);router[_0x06b2('0x14')](_0x06b2('0x18'),auth['isAuthenticated'](),controller[_0x06b2('0x19')]);router[_0x06b2('0x1a')](_0x06b2('0xd'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x1b')]);module[_0x06b2('0x1c')]=router;
\ No newline at end of file
+var _0xb821=['path','Router','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/download','download','post','tracked','fax','faxmessage:create','put','update','/:id/accept','reject','exports','util'];(function(_0x54e846,_0xed36a5){var _0x45fb1c=function(_0xe8f8ed){while(--_0xe8f8ed){_0x54e846['push'](_0x54e846['shift']());}};_0x45fb1c(++_0xed36a5);}(_0xb821,0xa7));var _0x1b82=function(_0x4aa33a,_0x2e0f6e){_0x4aa33a=_0x4aa33a-0x0;var _0x9ed4e9=_0xb821[_0x4aa33a];return _0x9ed4e9;};'use strict';var multer=require('multer');var util=require(_0x1b82('0x0'));var path=require(_0x1b82('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1b82('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1b82('0x3'));var config=require(_0x1b82('0x4'));var controller=require(_0x1b82('0x5'));router[_0x1b82('0x6')]('/',auth['isAuthenticated'](),controller[_0x1b82('0x7')]);router[_0x1b82('0x6')](_0x1b82('0x8'),auth[_0x1b82('0x9')](),controller[_0x1b82('0xa')]);router[_0x1b82('0x6')](_0x1b82('0xb'),auth[_0x1b82('0x9')](),controller[_0x1b82('0xc')]);router['get'](_0x1b82('0xd'),auth[_0x1b82('0x9')](),controller[_0x1b82('0xe')]);router[_0x1b82('0xf')]('/',auth[_0x1b82('0x9')](),interaction[_0x1b82('0x10')](_0x1b82('0x11'),_0x1b82('0x12')),controller['create']);router[_0x1b82('0x13')](_0x1b82('0xb'),auth[_0x1b82('0x9')](),controller[_0x1b82('0x14')]);router['put'](_0x1b82('0x15'),auth['isAuthenticated'](),controller['accept']);router[_0x1b82('0x13')]('/:id/reject',auth[_0x1b82('0x9')](),controller[_0x1b82('0x16')]);router['delete'](_0x1b82('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x1b82('0x17')]=router;
\ No newline at end of file
index e56c5c6..bd6f37c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3ab=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x2f7366,_0x5bd065){var _0x56d01c=function(_0xf3d81e){while(--_0xf3d81e){_0x2f7366['push'](_0x2f7366['shift']());}};_0x56d01c(++_0x5bd065);}(_0xd3ab,0x149));var _0xbd3a=function(_0x59180f,_0x435b7d){_0x59180f=_0x59180f-0x0;var _0x3040a8=_0xd3ab[_0x59180f];return _0x3040a8;};'use strict';var Sequelize=require(_0xbd3a('0x0'));module[_0xbd3a('0x1')]={'name':{'type':Sequelize[_0xbd3a('0x2')],'unique':_0xbd3a('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xbd3a('0x2')]},'timeout':{'type':Sequelize[_0xbd3a('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xbd3a('0x5')](_0xbd3a('0x6'),_0xbd3a('0x7'),_0xbd3a('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xbd3a('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe056=['name','ENUM','beepall','roundrobin','STRING'];(function(_0x59a4d9,_0x4e2e42){var _0x402f8a=function(_0x2363ad){while(--_0x2363ad){_0x59a4d9['push'](_0x59a4d9['shift']());}};_0x402f8a(++_0x4e2e42);}(_0xe056,0xdb));var _0x6e05=function(_0x4b12ae,_0xf2b3b){_0x4b12ae=_0x4b12ae-0x0;var _0x16957b=_0xe056[_0x4b12ae];return _0x16957b;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6e05('0x0')],'unique':_0x6e05('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6e05('0x0')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x6e05('0x2')]('rrmemory',_0x6e05('0x3'),_0x6e05('0x4')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index fb04908..86163c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x002d=['key','getOptions','where','FaxQueue','include','query','findAll','rows','catch','params','model','keys','filters','intersection','fields','attributes','length','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','hasOwnProperty','nolimit','order','sort','pick','FaxQueueId','filter','options','User','findAndCountAll','format','%s/%s','SIP','faxPause','createdAt','getTeams','ids','Agents','online','voicePause','flatMap','sequelize','addTeams','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','Team','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','push','QueryTypes','every','TeamId','includes','all','union','value','transaction','isEmpty','removeAgents','userFaxQueue:remove','addAgents','spread','isArray','getAgents','bluebird','util','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','FaxQueues','UserProfileResource','error','stack','name','status','send','map','rawAttributes'];(function(_0x11a962,_0x3cc338){var _0x55d423=function(_0xf4b236){while(--_0xf4b236){_0x11a962['push'](_0x11a962['shift']());}};_0x55d423(++_0x3cc338);}(_0x002d,0xca));var _0xd002=function(_0xdb0c28,_0x2e4ed9){_0xdb0c28=_0xdb0c28-0x0;var _0x5cbe14=_0x002d[_0xdb0c28];return _0x5cbe14;};'use strict';var BPromise=require(_0xd002('0x0'));var util=require(_0xd002('0x1'));var _=require(_0xd002('0x2'));var squel=require('squel');var Redis=require('ioredis');var qs=require(_0xd002('0x3'));var logger=require(_0xd002('0x4'))(_0xd002('0x5'));var config=require(_0xd002('0x6'));var db=require(_0xd002('0x7'))['db'];config[_0xd002('0x8')]=_[_0xd002('0x9')](config[_0xd002('0x8')],{'host':_0xd002('0xa'),'port':0x18eb});var socket=require(_0xd002('0xb'))(new Redis(config[_0xd002('0x8')]));require(_0xd002('0xc'))[_0xd002('0xd')](socket);function respondWithStatusCode(_0x166980,_0x284f4b){_0x284f4b=_0x284f4b||0xcc;return function(_0x1b347d){if(_0x1b347d){return _0x166980[_0xd002('0xe')](_0x284f4b);}return _0x166980['status'](_0x284f4b)['end']();};}function respondWithResult(_0x269cfe,_0x3e283b){_0x3e283b=_0x3e283b||0xc8;return function(_0x2be09b){if(_0x2be09b){return _0x269cfe['status'](_0x3e283b)[_0xd002('0xf')](_0x2be09b);}};}function respondWithFilteredResult(_0x12dad3,_0x439e07){return function(_0xa09d51){if(_0xa09d51){var _0xa92c00=typeof _0x439e07[_0xd002('0x10')]===_0xd002('0x11')&&typeof _0x439e07[_0xd002('0x12')]===_0xd002('0x11');var _0x37410c=_0xa09d51[_0xd002('0x13')];var _0x4de1c3=_0xa92c00?0x0:_0x439e07[_0xd002('0x10')];var _0x1e5c3b=_0xa92c00?_0xa09d51['count']:_0x439e07['offset']+_0x439e07['limit'];var _0x460e7b;if(_0x1e5c3b>=_0x37410c){_0x1e5c3b=_0x37410c;_0x460e7b=0xc8;}else{_0x460e7b=0xce;}_0x12dad3['status'](_0x460e7b);return _0x12dad3[_0xd002('0x14')](_0xd002('0x15'),_0x4de1c3+'-'+_0x1e5c3b+'/'+_0x37410c)[_0xd002('0xf')](_0xa09d51);}return null;};}function saveUpdates(_0x282c43){return function(_0x3c6f43){if(_0x3c6f43){return _0x3c6f43[_0xd002('0x16')](_0x282c43)[_0xd002('0x17')](function(_0x5e1f31){return _0x5e1f31;});}return null;};}function removeEntity(_0x83090d){return function(_0x4708f6){if(_0x4708f6){return _0x4708f6[_0xd002('0x18')]()[_0xd002('0x17')](function(){var _0x2a9c5f=_0x4708f6['get']({'plain':!![]});var _0x2ff24c=_0xd002('0x19');return db[_0xd002('0x1a')][_0xd002('0x18')]({'where':{'type':_0x2ff24c,'resourceId':_0x2a9c5f['id']}})[_0xd002('0x17')](function(){return _0x4708f6;});})[_0xd002('0x17')](function(){_0x83090d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xa57f52){return function(_0x152d31){if(!_0x152d31){_0xa57f52[_0xd002('0xe')](0x194);}return _0x152d31;};}function handleError(_0x45cd2e,_0x28cfb1){_0x28cfb1=_0x28cfb1||0x1f4;return function(_0x43a31b){logger[_0xd002('0x1b')](_0x43a31b[_0xd002('0x1c')]);if(_0x43a31b[_0xd002('0x1d')]){delete _0x43a31b[_0xd002('0x1d')];}_0x45cd2e[_0xd002('0x1e')](_0x28cfb1)[_0xd002('0x1f')](_0x43a31b);};}exports['index']=function(_0x25a29d,_0x24155f){var _0x55e3be={};var _0x32ac79={'count':0x0,'rows':[]};var _0x21fe25=_[_0xd002('0x20')](db['FaxQueue'][_0xd002('0x21')],function(_0x4f58fa){return{'name':_0x4f58fa['fieldName'],'type':_0x4f58fa['type'][_0xd002('0x22')]};});_0x55e3be=qs[_0xd002('0x23')](_0x21fe25,_0x25a29d);var _0x1f4ae6={'where':_0x55e3be[_0xd002('0x24')]};return db[_0xd002('0x25')][_0xd002('0x13')](_0x1f4ae6)[_0xd002('0x17')](function(_0x3e0cc2){_0x32ac79[_0xd002('0x13')]=_0x3e0cc2;_0x55e3be[_0xd002('0x26')]=qs['include'](_0x25a29d[_0xd002('0x27')]);return db[_0xd002('0x25')][_0xd002('0x28')](_0x55e3be);})[_0xd002('0x17')](function(_0x4d863e){_0x32ac79[_0xd002('0x29')]=_0x4d863e;return _0x32ac79;})['then'](respondWithFilteredResult(_0x24155f,_0x55e3be))[_0xd002('0x2a')](handleError(_0x24155f,null));};exports['show']=function(_0x3f271e,_0x4c9933){var _0x2643fc={'raw':!![],'where':{'id':_0x3f271e[_0xd002('0x2b')]['id']}},_0x458f3f={};_0x458f3f[_0xd002('0x2c')]=_[_0xd002('0x2d')](db[_0xd002('0x25')]['rawAttributes']);_0x458f3f[_0xd002('0x27')]=_[_0xd002('0x2d')](_0x3f271e[_0xd002('0x27')]);_0x458f3f[_0xd002('0x2e')]=_[_0xd002('0x2f')](_0x458f3f[_0xd002('0x2c')],_0x458f3f['query']);_0x2643fc['attributes']=_['intersection'](_0x458f3f[_0xd002('0x2c')],qs['fields'](_0x3f271e[_0xd002('0x27')][_0xd002('0x30')]));_0x2643fc[_0xd002('0x31')]=_0x2643fc[_0xd002('0x31')][_0xd002('0x32')]?_0x2643fc[_0xd002('0x31')]:_0x458f3f[_0xd002('0x2c')];if(_0x3f271e[_0xd002('0x27')]['includeAll']){_0x2643fc[_0xd002('0x26')]=[{'all':!![]}];}_0x2643fc=_[_0xd002('0x33')]({},_0x2643fc,_0x3f271e['options']);return db['FaxQueue'][_0xd002('0x34')](_0x2643fc)[_0xd002('0x17')](handleEntityNotFound(_0x4c9933,null))[_0xd002('0x17')](respondWithResult(_0x4c9933,null))[_0xd002('0x2a')](handleError(_0x4c9933,null));};exports['create']=function(_0x1e4a98,_0x5545f2){return db[_0xd002('0x25')][_0xd002('0x35')](_0x1e4a98[_0xd002('0x36')],{})[_0xd002('0x17')](function(_0x13a378){var _0x54c2ec=_0x1e4a98[_0xd002('0x37')][_0xd002('0x38')]({'plain':!![]});if(!_0x54c2ec)throw new Error(_0xd002('0x39'));if(_0x54c2ec[_0xd002('0x3a')]===_0xd002('0x37')){var _0xf76a2d=_0x13a378[_0xd002('0x38')]({'plain':!![]});var _0x39cf15=_0xd002('0x19');return db[_0xd002('0x3b')][_0xd002('0x34')]({'where':{'name':_0x39cf15,'userProfileId':_0x54c2ec[_0xd002('0x3c')]},'raw':!![]})[_0xd002('0x17')](function(_0x1509d0){if(_0x1509d0&&_0x1509d0[_0xd002('0x3d')]===0x0){return db[_0xd002('0x1a')]['create']({'name':_0xf76a2d[_0xd002('0x1d')],'resourceId':_0xf76a2d['id'],'type':_0x1509d0[_0xd002('0x1d')],'sectionId':_0x1509d0['id']},{})[_0xd002('0x17')](function(){return _0x13a378;});}else{return _0x13a378;}})[_0xd002('0x2a')](function(_0x5339e3){logger[_0xd002('0x1b')](_0xd002('0x3e'),_0x5339e3);throw _0x5339e3;});}return _0x13a378;})['then'](respondWithResult(_0x5545f2,0xc9))['catch'](handleError(_0x5545f2,null));};exports[_0xd002('0x16')]=function(_0x382693,_0x10ce62){if(_0x382693['body']['id']){delete _0x382693[_0xd002('0x36')]['id'];}return db['FaxQueue']['find']({'where':{'id':_0x382693[_0xd002('0x2b')]['id']}})['then'](handleEntityNotFound(_0x10ce62,null))[_0xd002('0x17')](saveUpdates(_0x382693[_0xd002('0x36')],null))['then'](respondWithResult(_0x10ce62,null))[_0xd002('0x2a')](handleError(_0x10ce62,null));};exports[_0xd002('0x18')]=function(_0xfe4815,_0x1b562a){return db[_0xd002('0x25')]['find']({'where':{'id':_0xfe4815['params']['id']}})[_0xd002('0x17')](handleEntityNotFound(_0x1b562a,null))['then'](removeEntity(_0x1b562a,null))[_0xd002('0x2a')](handleError(_0x1b562a,null));};exports[_0xd002('0x3f')]=function(_0x5d4c92,_0x5ec2db){return db[_0xd002('0x25')]['describe']()[_0xd002('0x17')](respondWithResult(_0x5ec2db,null))['catch'](handleError(_0x5ec2db,null));};exports[_0xd002('0x40')]=function(_0x48d13c,_0x400171){var _0x2de5bb={'raw':!![],'where':{}},_0x4d8d8c={},_0x1f6977;return db[_0xd002('0x25')][_0xd002('0x41')]({'where':{'id':_0x48d13c[_0xd002('0x2b')]['id']}})[_0xd002('0x17')](handleEntityNotFound(_0x400171,null))[_0xd002('0x17')](function(_0x54eeab){if(_0x54eeab){_0x1f6977=_0x54eeab[_0xd002('0x38')]({'plain':!![]});_0x4d8d8c[_0xd002('0x2c')]=_[_0xd002('0x2d')](db[_0xd002('0x42')]['rawAttributes']);_0x4d8d8c[_0xd002('0x27')]=_[_0xd002('0x2d')](_0x48d13c[_0xd002('0x27')]);_0x4d8d8c[_0xd002('0x2e')]=_[_0xd002('0x2f')](_0x4d8d8c[_0xd002('0x2c')],_0x4d8d8c['query']);_0x2de5bb[_0xd002('0x31')]=_[_0xd002('0x2f')](_0x4d8d8c[_0xd002('0x2c')],qs[_0xd002('0x30')](_0x48d13c[_0xd002('0x27')][_0xd002('0x30')]));_0x2de5bb[_0xd002('0x31')]=_0x2de5bb[_0xd002('0x31')][_0xd002('0x32')]?_0x2de5bb[_0xd002('0x31')]:_0x4d8d8c['model'];if(!_0x48d13c[_0xd002('0x27')][_0xd002('0x43')](_0xd002('0x44'))){_0x2de5bb[_0xd002('0x12')]=qs[_0xd002('0x12')](_0x48d13c[_0xd002('0x27')][_0xd002('0x12')]);_0x2de5bb[_0xd002('0x10')]=qs['offset'](_0x48d13c['query'][_0xd002('0x10')]);}_0x2de5bb[_0xd002('0x45')]=qs[_0xd002('0x46')](_0x48d13c[_0xd002('0x27')]['sort']);_0x2de5bb[_0xd002('0x24')]=qs[_0xd002('0x2e')](_[_0xd002('0x47')](_0x48d13c[_0xd002('0x27')],_0x4d8d8c['filters']));_0x2de5bb[_0xd002('0x24')][_0xd002('0x48')]=_0x54eeab['id'];if(_0x48d13c[_0xd002('0x27')][_0xd002('0x49')]){_0x2de5bb['where']=_[_0xd002('0x33')](_0x2de5bb[_0xd002('0x24')],{'$or':_[_0xd002('0x20')](_0x2de5bb['attributes'],function(_0x319f00){var _0x532aa6={};_0x532aa6[_0x319f00]={'$like':'%'+_0x48d13c['query'][_0xd002('0x49')]+'%'};return _0x532aa6;})});}_0x2de5bb=_[_0xd002('0x33')]({},_0x2de5bb,_0x48d13c[_0xd002('0x4a')]);return db[_0xd002('0x42')]['findAll'](_0x2de5bb);}})[_0xd002('0x17')](function(_0x5f3ae8){if(_0x5f3ae8){return db[_0xd002('0x4b')][_0xd002('0x4c')]({'where':{'id':_[_0xd002('0x20')](_0x5f3ae8,'UserId'),'role':'agent'},'attributes':['id',_0xd002('0x1d'),'faxPause','updatedAt','createdAt']});}})[_0xd002('0x17')](function(_0x33d395){if(_0x33d395){return{'count':_0x33d395[_0xd002('0x13')],'rows':_['map'](_0x33d395[_0xd002('0x29')],function(_0x411a4b){return{'membername':_0x411a4b[_0xd002('0x1d')],'UserId':_0x411a4b['id'],'queue_name':_0x1f6977[_0xd002('0x1d')],'FaxQueueId':_0x1f6977['id'],'interface':util[_0xd002('0x4d')](_0xd002('0x4e'),_0xd002('0x4f'),_0x411a4b[_0xd002('0x1d')]),'penalty':0x0,'paused':_0x411a4b[_0xd002('0x50')],'createdAt':_0x411a4b[_0xd002('0x51')],'updatedAt':_0x411a4b['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xd002('0x17')](respondWithFilteredResult(_0x400171,_0x2de5bb))[_0xd002('0x2a')](handleError(_0x400171,null));};exports['getTeams']=function(_0x1885b6,_0x1941b4){var _0x15beba={};var _0x98996c={};var _0x4c661b;var _0x2f962a;return db[_0xd002('0x25')][_0xd002('0x41')]({'where':{'id':_0x1885b6['params']['id']}})[_0xd002('0x17')](handleEntityNotFound(_0x1941b4,null))[_0xd002('0x17')](function(_0x5a7740){if(_0x5a7740){_0x4c661b=_0x5a7740;_0x98996c['model']=_[_0xd002('0x2d')](db['Team'][_0xd002('0x21')]);_0x98996c[_0xd002('0x27')]=_[_0xd002('0x2d')](_0x1885b6[_0xd002('0x27')]);_0x98996c['filters']=_[_0xd002('0x2f')](_0x98996c[_0xd002('0x2c')],_0x98996c[_0xd002('0x27')]);_0x15beba['attributes']=_[_0xd002('0x2f')](_0x98996c[_0xd002('0x2c')],qs[_0xd002('0x30')](_0x1885b6['query'][_0xd002('0x30')]));_0x15beba['attributes']=_0x15beba[_0xd002('0x31')][_0xd002('0x32')]?_0x15beba['attributes']:_0x98996c['model'];_0x15beba[_0xd002('0x45')]=qs['sort'](_0x1885b6[_0xd002('0x27')]['sort']);_0x15beba[_0xd002('0x24')]=qs[_0xd002('0x2e')](_[_0xd002('0x47')](_0x1885b6['query'],_0x98996c[_0xd002('0x2e')]));if(_0x1885b6['query'][_0xd002('0x49')]){_0x15beba[_0xd002('0x24')]=_[_0xd002('0x33')](_0x15beba[_0xd002('0x24')],{'$or':_['map'](_0x15beba[_0xd002('0x31')],function(_0x3aab86){var _0x5aaca6={};_0x5aaca6[_0x3aab86]={'$like':'%'+_0x1885b6[_0xd002('0x27')]['filter']+'%'};return _0x5aaca6;})});}_0x15beba=_['merge']({},_0x15beba,_0x1885b6['options']);return _0x4c661b[_0xd002('0x52')](_0x15beba);}})[_0xd002('0x17')](function(_0xce01f7){if(_0xce01f7){_0x2f962a=_0xce01f7['length'];if(!_0x1885b6[_0xd002('0x27')][_0xd002('0x43')](_0xd002('0x44'))){_0x15beba[_0xd002('0x12')]=qs[_0xd002('0x12')](_0x1885b6[_0xd002('0x27')][_0xd002('0x12')]);_0x15beba['offset']=qs[_0xd002('0x10')](_0x1885b6[_0xd002('0x27')][_0xd002('0x10')]);}return _0x4c661b[_0xd002('0x52')](_0x15beba);}})[_0xd002('0x17')](function(_0x3b315a){if(_0x3b315a){return _0x3b315a?{'count':_0x2f962a,'rows':_0x3b315a}:null;}})['then'](respondWithResult(_0x1941b4,null))['catch'](handleError(_0x1941b4,null));};exports['addTeams']=function(_0x1d1af7,_0x49dd8f){var _0xa5dbe0=_0x1d1af7['body'][_0xd002('0x53')];return db['Team'][_0xd002('0x28')]({'where':{'id':_0xa5dbe0},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd002('0x54'),'attributes':['id',_0xd002('0x1d'),_0xd002('0x55'),_0xd002('0x56'),'interface'],'raw':!![]}]})['then'](function(_0x299597){if(_0x299597){var _0x3db505=_[_0xd002('0x57')](_0x299597,function(_0x2bff80){var _0xf759e1=_0x2bff80[_0xd002('0x38')]({'plain':!![]});return _0xf759e1[_0xd002('0x54')];});return db[_0xd002('0x25')][_0xd002('0x34')]({'where':{'id':_0x1d1af7[_0xd002('0x2b')]['id']}})[_0xd002('0x17')](function(_0x242349){return db[_0xd002('0x58')]['transaction'](function(_0x45e080){return _0x242349[_0xd002('0x59')](_0xa5dbe0,{'transaction':_0x45e080})[_0xd002('0x17')](function(){return BPromise['each'](_0x3db505,function(_0x1a6479){return db[_0xd002('0x42')][_0xd002('0x5a')]({'where':{'UserId':_0x1a6479['id'],'FaxQueueId':_0x1d1af7[_0xd002('0x2b')]['id']},'transaction':_0x45e080});});})[_0xd002('0x17')](function(){_0x3db505[_0xd002('0x5b')](function(_0x14a123){socket[_0xd002('0x5c')](_0xd002('0x5d'),{'UserId':_0x14a123['id'],'FaxQueueId':_0x242349['id']});});});});});}})[_0xd002('0x17')](respondWithStatusCode(_0x49dd8f,null))[_0xd002('0x2a')](handleError(_0x49dd8f,null));};exports[_0xd002('0x5e')]=function(_0x21c0c3,_0x3b632f){return db[_0xd002('0x5f')]['findAll']({'where':{'id':_0x21c0c3[_0xd002('0x27')][_0xd002('0x53')]},'attributes':['id'],'include':[{'model':db[_0xd002('0x4b')],'as':_0xd002('0x54'),'attributes':['id'],'raw':!![]}]})[_0xd002('0x17')](handleEntityNotFound(_0x3b632f,null))['then'](function(_0x55a350){var _0x3e97b5=_[_0xd002('0x20')](_0x55a350,'id');var _0x54e3b4=[];var _0x1fc672=[];var _0x39dea2=squel['select']();_0x39dea2[_0xd002('0x60')](_0xd002('0x61'))['from']('team_has_fax_queues','tq')[_0xd002('0x62')](_0xd002('0x63'),'ut',_0xd002('0x64'))['where'](_0xd002('0x65'),_0x21c0c3[_0xd002('0x2b')]['id']);for(var _0x28dc05=0x0;_0x28dc05<_0x55a350[_0xd002('0x32')];_0x28dc05+=0x1){let _0x56b13d=_0x55a350[_0x28dc05];for(var _0x20933e=0x0;_0x20933e<_0x56b13d[_0xd002('0x54')][_0xd002('0x32')];_0x20933e+=0x1){let _0x57acdc=_0x56b13d['Agents'][_0x20933e];var _0x3aa697=_0x39dea2['clone']();_0x3aa697[_0xd002('0x24')]('ut.UserId\x20=\x20?',_0x57acdc['id']);_0x1fc672[_0xd002('0x66')](db[_0xd002('0x58')][_0xd002('0x27')](_0x3aa697['toString'](),{'type':db[_0xd002('0x58')][_0xd002('0x67')]['SELECT']})['then'](function(_0x9cb1fa){if(_0x9cb1fa[_0xd002('0x32')]===0x1){return _0x57acdc['id'];}else{var _0x55ec3e=_[_0xd002('0x68')](_[_0xd002('0x20')](_0x9cb1fa,_0xd002('0x69')),function(_0x3b0627){return _[_0xd002('0x6a')](_0x3e97b5,_0x3b0627);});if(_0x55ec3e){return _0x57acdc['id'];}}}));}}return BPromise[_0xd002('0x6b')](_0x1fc672)['then'](function(_0x1a594e){_0x54e3b4=_(_0x54e3b4)[_0xd002('0x6c')](_0x1a594e)['compact']()[_0xd002('0x6d')]();return db[_0xd002('0x25')][_0xd002('0x34')]({'where':{'id':_0x21c0c3[_0xd002('0x2b')]['id']}})[_0xd002('0x17')](function(_0xb06fa7){return db['sequelize'][_0xd002('0x6e')](function(_0x4d07be){return _0xb06fa7['removeTeams'](_0x21c0c3[_0xd002('0x27')][_0xd002('0x53')],{'transaction':_0x4d07be})[_0xd002('0x17')](function(){if(!_[_0xd002('0x6f')](_0x54e3b4)){return _0xb06fa7[_0xd002('0x70')](_0x54e3b4,{'transaction':_0x4d07be});}})[_0xd002('0x17')](function(){_0x54e3b4[_0xd002('0x5b')](function(_0x311c82){socket['emit'](_0xd002('0x71'),{'UserId':_0x311c82,'FaxQueueId':_0xb06fa7['id']});});});});});});})[_0xd002('0x17')](respondWithStatusCode(_0x3b632f,null))[_0xd002('0x2a')](handleError(_0x3b632f,null));};exports[_0xd002('0x72')]=function(_0x393169,_0x3dffca){return db[_0xd002('0x25')][_0xd002('0x34')]({'where':{'id':_0x393169[_0xd002('0x2b')]['id']}})[_0xd002('0x17')](handleEntityNotFound(_0x3dffca,null))['then'](function(_0x4ad90d){if(_0x4ad90d){return _0x4ad90d['addAgents'](_0x393169[_0xd002('0x36')]['ids'],_['omit'](_0x393169[_0xd002('0x36')],[_0xd002('0x53'),'id'])||{})[_0xd002('0x73')](function(_0x25f8fb){for(var _0x21b2b7=0x0;_0x21b2b7<_0x393169[_0xd002('0x36')][_0xd002('0x53')][_0xd002('0x32')];_0x21b2b7+=0x1){socket[_0xd002('0x5c')](_0xd002('0x5d'),{'UserId':Number(_0x393169[_0xd002('0x36')]['ids'][_0x21b2b7]),'FaxQueueId':Number(_0x393169['params']['id'])});}return _0x25f8fb;});}})['then'](respondWithResult(_0x3dffca,null))[_0xd002('0x2a')](handleError(_0x3dffca,null));};exports[_0xd002('0x70')]=function(_0x3499b4,_0x27e4c3){return db[_0xd002('0x25')][_0xd002('0x34')]({'where':{'id':_0x3499b4[_0xd002('0x2b')]['id']}})[_0xd002('0x17')](handleEntityNotFound(_0x27e4c3,null))['then'](function(_0x471388){if(_0x471388){return _0x471388[_0xd002('0x70')](_0x3499b4[_0xd002('0x27')][_0xd002('0x53')])[_0xd002('0x17')](function(){if(_[_0xd002('0x74')](_0x3499b4['query']['ids'])){for(var _0x26d060=0x0;_0x26d060<_0x3499b4['query'][_0xd002('0x53')][_0xd002('0x32')];_0x26d060+=0x1){socket['emit']('userFaxQueue:remove',{'UserId':Number(_0x3499b4[_0xd002('0x27')][_0xd002('0x53')][_0x26d060]),'FaxQueueId':Number(_0x3499b4['params']['id'])});}}else{socket['emit'](_0xd002('0x71'),{'UserId':Number(_0x3499b4['query'][_0xd002('0x53')]),'FaxQueueId':Number(_0x3499b4[_0xd002('0x2b')]['id'])});}});}})[_0xd002('0x17')](respondWithStatusCode(_0x27e4c3,null))['catch'](handleError(_0x27e4c3,null));};exports[_0xd002('0x75')]=function(_0x508c1b,_0x50cddb){var _0x2425af={};var _0x2bb6ff={};var _0x2dd992;var _0x12052c;return db[_0xd002('0x25')]['findOne']({'where':{'id':_0x508c1b[_0xd002('0x2b')]['id']}})[_0xd002('0x17')](handleEntityNotFound(_0x50cddb,null))['then'](function(_0x7916f7){if(_0x7916f7){_0x2dd992=_0x7916f7;_0x2bb6ff[_0xd002('0x2c')]=_[_0xd002('0x2d')](db[_0xd002('0x4b')][_0xd002('0x21')]);_0x2bb6ff[_0xd002('0x27')]=_['keys'](_0x508c1b[_0xd002('0x27')]);_0x2bb6ff['filters']=_['intersection'](_0x2bb6ff['model'],_0x2bb6ff[_0xd002('0x27')]);_0x2425af['attributes']=_[_0xd002('0x2f')](_0x2bb6ff[_0xd002('0x2c')],qs[_0xd002('0x30')](_0x508c1b['query'][_0xd002('0x30')]));_0x2425af[_0xd002('0x31')]=_0x2425af[_0xd002('0x31')][_0xd002('0x32')]?_0x2425af[_0xd002('0x31')]:_0x2bb6ff[_0xd002('0x2c')];_0x2425af['order']=qs[_0xd002('0x46')](_0x508c1b[_0xd002('0x27')][_0xd002('0x46')]);_0x2425af[_0xd002('0x24')]=qs[_0xd002('0x2e')](_['pick'](_0x508c1b['query'],_0x2bb6ff[_0xd002('0x2e')]));if(_0x508c1b[_0xd002('0x27')]['filter']){_0x2425af[_0xd002('0x24')]=_['merge'](_0x2425af['where'],{'$or':_['map'](_0x2425af['attributes'],function(_0x59c789){var _0x190776={};_0x190776[_0x59c789]={'$like':'%'+_0x508c1b[_0xd002('0x27')]['filter']+'%'};return _0x190776;})});}_0x2425af=_[_0xd002('0x33')]({},_0x2425af,_0x508c1b[_0xd002('0x4a')]);return _0x2dd992['getAgents'](_0x2425af);}})[_0xd002('0x17')](function(_0xd7d11c){if(_0xd7d11c){_0x12052c=_0xd7d11c['length'];if(!_0x508c1b[_0xd002('0x27')]['hasOwnProperty']('nolimit')){_0x2425af[_0xd002('0x12')]=qs[_0xd002('0x12')](_0x508c1b[_0xd002('0x27')][_0xd002('0x12')]);_0x2425af[_0xd002('0x10')]=qs['offset'](_0x508c1b[_0xd002('0x27')][_0xd002('0x10')]);}return _0x2dd992[_0xd002('0x75')](_0x2425af);}})[_0xd002('0x17')](function(_0xad3767){if(_0xad3767){return _0xad3767?{'count':_0x12052c,'rows':_0xad3767}:null;}})[_0xd002('0x17')](respondWithResult(_0x50cddb,null))[_0xd002('0x2a')](handleError(_0x50cddb,null));};
\ No newline at end of file
+var _0xecb2=['addAgents','spread','isArray','getAgents','bluebird','squel','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','./faxQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','get','FaxQueues','UserProfileResource','error','stack','name','map','FaxQueue','rawAttributes','fieldName','type','key','getOptions','where','include','query','rows','catch','params','model','keys','filters','intersection','attributes','fields','length','includeAll','merge','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','describe','getMembers','findOne','UserFaxQueue','hasOwnProperty','nolimit','order','sort','pick','filter','findAll','User','findAndCountAll','UserId','faxPause','createdAt','format','%s/%s','SIP','updatedAt','getTeams','Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','userFaxQueue:remove'];(function(_0x4f027d,_0x3f9587){var _0xc46890=function(_0x27d06c){while(--_0x27d06c){_0x4f027d['push'](_0x4f027d['shift']());}};_0xc46890(++_0x3f9587);}(_0xecb2,0xf6));var _0x2ecb=function(_0x170904,_0x1403e9){_0x170904=_0x170904-0x0;var _0x29a058=_0xecb2[_0x170904];return _0x29a058;};'use strict';var BPromise=require(_0x2ecb('0x0'));var util=require('util');var _=require('lodash');var squel=require(_0x2ecb('0x1'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x2ecb('0x2'))(_0x2ecb('0x3'));var config=require(_0x2ecb('0x4'));var db=require(_0x2ecb('0x5'))['db'];config[_0x2ecb('0x6')]=_[_0x2ecb('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2ecb('0x6')]));require(_0x2ecb('0x8'))[_0x2ecb('0x9')](socket);function respondWithStatusCode(_0x3bd683,_0x40d20a){_0x40d20a=_0x40d20a||0xcc;return function(_0x4fe275){if(_0x4fe275){return _0x3bd683[_0x2ecb('0xa')](_0x40d20a);}return _0x3bd683[_0x2ecb('0xb')](_0x40d20a)[_0x2ecb('0xc')]();};}function respondWithResult(_0x500735,_0x1e213c){_0x1e213c=_0x1e213c||0xc8;return function(_0x442482){if(_0x442482){return _0x500735[_0x2ecb('0xb')](_0x1e213c)[_0x2ecb('0xd')](_0x442482);}};}function respondWithFilteredResult(_0x9f045a,_0x5b8044){return function(_0x268ef4){if(_0x268ef4){var _0x2c771c=typeof _0x5b8044[_0x2ecb('0xe')]===_0x2ecb('0xf')&&typeof _0x5b8044[_0x2ecb('0x10')]===_0x2ecb('0xf');var _0x32d3c6=_0x268ef4['count'];var _0x10bc58=_0x2c771c?0x0:_0x5b8044[_0x2ecb('0xe')];var _0x48505e=_0x2c771c?_0x268ef4[_0x2ecb('0x11')]:_0x5b8044[_0x2ecb('0xe')]+_0x5b8044[_0x2ecb('0x10')];var _0x3fda3b;if(_0x48505e>=_0x32d3c6){_0x48505e=_0x32d3c6;_0x3fda3b=0xc8;}else{_0x3fda3b=0xce;}_0x9f045a[_0x2ecb('0xb')](_0x3fda3b);return _0x9f045a[_0x2ecb('0x12')](_0x2ecb('0x13'),_0x10bc58+'-'+_0x48505e+'/'+_0x32d3c6)[_0x2ecb('0xd')](_0x268ef4);}return null;};}function saveUpdates(_0x662ef2){return function(_0x5ade76){if(_0x5ade76){return _0x5ade76[_0x2ecb('0x14')](_0x662ef2)[_0x2ecb('0x15')](function(_0x5a1d41){return _0x5a1d41;});}return null;};}function removeEntity(_0x46e3bc){return function(_0x4c17cf){if(_0x4c17cf){return _0x4c17cf[_0x2ecb('0x16')]()[_0x2ecb('0x15')](function(){var _0xfa744e=_0x4c17cf[_0x2ecb('0x17')]({'plain':!![]});var _0x3363b0=_0x2ecb('0x18');return db[_0x2ecb('0x19')]['destroy']({'where':{'type':_0x3363b0,'resourceId':_0xfa744e['id']}})[_0x2ecb('0x15')](function(){return _0x4c17cf;});})[_0x2ecb('0x15')](function(){_0x46e3bc[_0x2ecb('0xb')](0xcc)['end']();});}};}function handleEntityNotFound(_0x110b69){return function(_0x2b7aae){if(!_0x2b7aae){_0x110b69['sendStatus'](0x194);}return _0x2b7aae;};}function handleError(_0x5b9d50,_0x2db610){_0x2db610=_0x2db610||0x1f4;return function(_0x5544ce){logger[_0x2ecb('0x1a')](_0x5544ce[_0x2ecb('0x1b')]);if(_0x5544ce[_0x2ecb('0x1c')]){delete _0x5544ce[_0x2ecb('0x1c')];}_0x5b9d50[_0x2ecb('0xb')](_0x2db610)['send'](_0x5544ce);};}exports['index']=function(_0x2e38ee,_0x5e072e){var _0x3fa13f={};var _0x8f21c={'count':0x0,'rows':[]};var _0x45249b=_[_0x2ecb('0x1d')](db[_0x2ecb('0x1e')][_0x2ecb('0x1f')],function(_0x171259){return{'name':_0x171259[_0x2ecb('0x20')],'type':_0x171259[_0x2ecb('0x21')][_0x2ecb('0x22')]};});_0x3fa13f=qs[_0x2ecb('0x23')](_0x45249b,_0x2e38ee);var _0x2fc4fe={'where':_0x3fa13f[_0x2ecb('0x24')]};return db[_0x2ecb('0x1e')][_0x2ecb('0x11')](_0x2fc4fe)[_0x2ecb('0x15')](function(_0x46092e){_0x8f21c[_0x2ecb('0x11')]=_0x46092e;_0x3fa13f[_0x2ecb('0x25')]=qs[_0x2ecb('0x25')](_0x2e38ee[_0x2ecb('0x26')]);return db[_0x2ecb('0x1e')]['findAll'](_0x3fa13f);})['then'](function(_0x354734){_0x8f21c[_0x2ecb('0x27')]=_0x354734;return _0x8f21c;})[_0x2ecb('0x15')](respondWithFilteredResult(_0x5e072e,_0x3fa13f))[_0x2ecb('0x28')](handleError(_0x5e072e,null));};exports['show']=function(_0x2c13f4,_0x1eec30){var _0x3142b0={'raw':!![],'where':{'id':_0x2c13f4[_0x2ecb('0x29')]['id']}},_0x257d2f={};_0x257d2f[_0x2ecb('0x2a')]=_['keys'](db[_0x2ecb('0x1e')]['rawAttributes']);_0x257d2f[_0x2ecb('0x26')]=_[_0x2ecb('0x2b')](_0x2c13f4[_0x2ecb('0x26')]);_0x257d2f[_0x2ecb('0x2c')]=_[_0x2ecb('0x2d')](_0x257d2f[_0x2ecb('0x2a')],_0x257d2f[_0x2ecb('0x26')]);_0x3142b0[_0x2ecb('0x2e')]=_[_0x2ecb('0x2d')](_0x257d2f['model'],qs[_0x2ecb('0x2f')](_0x2c13f4[_0x2ecb('0x26')][_0x2ecb('0x2f')]));_0x3142b0['attributes']=_0x3142b0[_0x2ecb('0x2e')][_0x2ecb('0x30')]?_0x3142b0[_0x2ecb('0x2e')]:_0x257d2f['model'];if(_0x2c13f4[_0x2ecb('0x26')][_0x2ecb('0x31')]){_0x3142b0[_0x2ecb('0x25')]=[{'all':!![]}];}_0x3142b0=_[_0x2ecb('0x32')]({},_0x3142b0,_0x2c13f4[_0x2ecb('0x33')]);return db[_0x2ecb('0x1e')][_0x2ecb('0x34')](_0x3142b0)[_0x2ecb('0x15')](handleEntityNotFound(_0x1eec30,null))[_0x2ecb('0x15')](respondWithResult(_0x1eec30,null))[_0x2ecb('0x28')](handleError(_0x1eec30,null));};exports['create']=function(_0xf9e0b2,_0x5d9252){return db[_0x2ecb('0x1e')][_0x2ecb('0x35')](_0xf9e0b2[_0x2ecb('0x36')],{})[_0x2ecb('0x15')](function(_0x3b2765){var _0x369f44=_0xf9e0b2['user'][_0x2ecb('0x17')]({'plain':!![]});if(!_0x369f44)throw new Error(_0x2ecb('0x37'));if(_0x369f44[_0x2ecb('0x38')]===_0x2ecb('0x39')){var _0x1278b3=_0x3b2765[_0x2ecb('0x17')]({'plain':!![]});var _0x36f308=_0x2ecb('0x18');return db[_0x2ecb('0x3a')][_0x2ecb('0x34')]({'where':{'name':_0x36f308,'userProfileId':_0x369f44[_0x2ecb('0x3b')]},'raw':!![]})[_0x2ecb('0x15')](function(_0xa90974){if(_0xa90974&&_0xa90974['autoAssociation']===0x0){return db[_0x2ecb('0x19')]['create']({'name':_0x1278b3['name'],'resourceId':_0x1278b3['id'],'type':_0xa90974[_0x2ecb('0x1c')],'sectionId':_0xa90974['id']},{})[_0x2ecb('0x15')](function(){return _0x3b2765;});}else{return _0x3b2765;}})[_0x2ecb('0x28')](function(_0x818b70){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x818b70);throw _0x818b70;});}return _0x3b2765;})['then'](respondWithResult(_0x5d9252,0xc9))[_0x2ecb('0x28')](handleError(_0x5d9252,null));};exports['update']=function(_0x5d566e,_0x231076){if(_0x5d566e[_0x2ecb('0x36')]['id']){delete _0x5d566e[_0x2ecb('0x36')]['id'];}return db[_0x2ecb('0x1e')][_0x2ecb('0x34')]({'where':{'id':_0x5d566e[_0x2ecb('0x29')]['id']}})[_0x2ecb('0x15')](handleEntityNotFound(_0x231076,null))[_0x2ecb('0x15')](saveUpdates(_0x5d566e[_0x2ecb('0x36')],null))[_0x2ecb('0x15')](respondWithResult(_0x231076,null))[_0x2ecb('0x28')](handleError(_0x231076,null));};exports['destroy']=function(_0x11c877,_0x3e0a98){return db['FaxQueue'][_0x2ecb('0x34')]({'where':{'id':_0x11c877[_0x2ecb('0x29')]['id']}})[_0x2ecb('0x15')](handleEntityNotFound(_0x3e0a98,null))['then'](removeEntity(_0x3e0a98,null))['catch'](handleError(_0x3e0a98,null));};exports[_0x2ecb('0x3c')]=function(_0x176770,_0xf5edc8){return db[_0x2ecb('0x1e')]['describe']()[_0x2ecb('0x15')](respondWithResult(_0xf5edc8,null))[_0x2ecb('0x28')](handleError(_0xf5edc8,null));};exports[_0x2ecb('0x3d')]=function(_0x1ee483,_0x22bba5){var _0x4f15dc={'raw':!![],'where':{}},_0x428b9d={},_0xa51d2f;return db[_0x2ecb('0x1e')][_0x2ecb('0x3e')]({'where':{'id':_0x1ee483['params']['id']}})[_0x2ecb('0x15')](handleEntityNotFound(_0x22bba5,null))['then'](function(_0x25eea2){if(_0x25eea2){_0xa51d2f=_0x25eea2[_0x2ecb('0x17')]({'plain':!![]});_0x428b9d[_0x2ecb('0x2a')]=_['keys'](db[_0x2ecb('0x3f')][_0x2ecb('0x1f')]);_0x428b9d['query']=_[_0x2ecb('0x2b')](_0x1ee483[_0x2ecb('0x26')]);_0x428b9d['filters']=_['intersection'](_0x428b9d[_0x2ecb('0x2a')],_0x428b9d[_0x2ecb('0x26')]);_0x4f15dc[_0x2ecb('0x2e')]=_['intersection'](_0x428b9d[_0x2ecb('0x2a')],qs['fields'](_0x1ee483['query'][_0x2ecb('0x2f')]));_0x4f15dc[_0x2ecb('0x2e')]=_0x4f15dc[_0x2ecb('0x2e')]['length']?_0x4f15dc[_0x2ecb('0x2e')]:_0x428b9d['model'];if(!_0x1ee483[_0x2ecb('0x26')][_0x2ecb('0x40')](_0x2ecb('0x41'))){_0x4f15dc[_0x2ecb('0x10')]=qs[_0x2ecb('0x10')](_0x1ee483['query'][_0x2ecb('0x10')]);_0x4f15dc['offset']=qs['offset'](_0x1ee483[_0x2ecb('0x26')][_0x2ecb('0xe')]);}_0x4f15dc[_0x2ecb('0x42')]=qs[_0x2ecb('0x43')](_0x1ee483[_0x2ecb('0x26')][_0x2ecb('0x43')]);_0x4f15dc[_0x2ecb('0x24')]=qs[_0x2ecb('0x2c')](_[_0x2ecb('0x44')](_0x1ee483[_0x2ecb('0x26')],_0x428b9d[_0x2ecb('0x2c')]));_0x4f15dc[_0x2ecb('0x24')]['FaxQueueId']=_0x25eea2['id'];if(_0x1ee483[_0x2ecb('0x26')][_0x2ecb('0x45')]){_0x4f15dc[_0x2ecb('0x24')]=_[_0x2ecb('0x32')](_0x4f15dc['where'],{'$or':_[_0x2ecb('0x1d')](_0x4f15dc[_0x2ecb('0x2e')],function(_0x6dc83a){var _0x5f4586={};_0x5f4586[_0x6dc83a]={'$like':'%'+_0x1ee483['query']['filter']+'%'};return _0x5f4586;})});}_0x4f15dc=_[_0x2ecb('0x32')]({},_0x4f15dc,_0x1ee483[_0x2ecb('0x33')]);return db['UserFaxQueue'][_0x2ecb('0x46')](_0x4f15dc);}})[_0x2ecb('0x15')](function(_0x47a6b1){if(_0x47a6b1){return db[_0x2ecb('0x47')][_0x2ecb('0x48')]({'where':{'id':_[_0x2ecb('0x1d')](_0x47a6b1,_0x2ecb('0x49')),'role':'agent'},'attributes':['id',_0x2ecb('0x1c'),_0x2ecb('0x4a'),'updatedAt',_0x2ecb('0x4b')]});}})[_0x2ecb('0x15')](function(_0x5c6ff2){if(_0x5c6ff2){return{'count':_0x5c6ff2[_0x2ecb('0x11')],'rows':_[_0x2ecb('0x1d')](_0x5c6ff2[_0x2ecb('0x27')],function(_0x30d297){return{'membername':_0x30d297['name'],'UserId':_0x30d297['id'],'queue_name':_0xa51d2f[_0x2ecb('0x1c')],'FaxQueueId':_0xa51d2f['id'],'interface':util[_0x2ecb('0x4c')](_0x2ecb('0x4d'),_0x2ecb('0x4e'),_0x30d297['name']),'penalty':0x0,'paused':_0x30d297[_0x2ecb('0x4a')],'createdAt':_0x30d297[_0x2ecb('0x4b')],'updatedAt':_0x30d297[_0x2ecb('0x4f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x2ecb('0x15')](respondWithFilteredResult(_0x22bba5,_0x4f15dc))[_0x2ecb('0x28')](handleError(_0x22bba5,null));};exports[_0x2ecb('0x50')]=function(_0x57430c,_0x27bf14){var _0x11b4db={};var _0x236e8c={};var _0x1ea868;var _0x9cb921;return db[_0x2ecb('0x1e')][_0x2ecb('0x3e')]({'where':{'id':_0x57430c[_0x2ecb('0x29')]['id']}})[_0x2ecb('0x15')](handleEntityNotFound(_0x27bf14,null))[_0x2ecb('0x15')](function(_0x834be3){if(_0x834be3){_0x1ea868=_0x834be3;_0x236e8c[_0x2ecb('0x2a')]=_[_0x2ecb('0x2b')](db[_0x2ecb('0x51')][_0x2ecb('0x1f')]);_0x236e8c['query']=_[_0x2ecb('0x2b')](_0x57430c[_0x2ecb('0x26')]);_0x236e8c[_0x2ecb('0x2c')]=_[_0x2ecb('0x2d')](_0x236e8c['model'],_0x236e8c[_0x2ecb('0x26')]);_0x11b4db['attributes']=_[_0x2ecb('0x2d')](_0x236e8c[_0x2ecb('0x2a')],qs[_0x2ecb('0x2f')](_0x57430c['query'][_0x2ecb('0x2f')]));_0x11b4db[_0x2ecb('0x2e')]=_0x11b4db[_0x2ecb('0x2e')]['length']?_0x11b4db[_0x2ecb('0x2e')]:_0x236e8c['model'];_0x11b4db[_0x2ecb('0x42')]=qs['sort'](_0x57430c['query']['sort']);_0x11b4db[_0x2ecb('0x24')]=qs[_0x2ecb('0x2c')](_[_0x2ecb('0x44')](_0x57430c[_0x2ecb('0x26')],_0x236e8c[_0x2ecb('0x2c')]));if(_0x57430c[_0x2ecb('0x26')][_0x2ecb('0x45')]){_0x11b4db[_0x2ecb('0x24')]=_[_0x2ecb('0x32')](_0x11b4db[_0x2ecb('0x24')],{'$or':_[_0x2ecb('0x1d')](_0x11b4db['attributes'],function(_0x25b526){var _0x5cca0d={};_0x5cca0d[_0x25b526]={'$like':'%'+_0x57430c[_0x2ecb('0x26')][_0x2ecb('0x45')]+'%'};return _0x5cca0d;})});}_0x11b4db=_[_0x2ecb('0x32')]({},_0x11b4db,_0x57430c[_0x2ecb('0x33')]);return _0x1ea868[_0x2ecb('0x50')](_0x11b4db);}})[_0x2ecb('0x15')](function(_0x418278){if(_0x418278){_0x9cb921=_0x418278['length'];if(!_0x57430c[_0x2ecb('0x26')][_0x2ecb('0x40')]('nolimit')){_0x11b4db[_0x2ecb('0x10')]=qs[_0x2ecb('0x10')](_0x57430c['query'][_0x2ecb('0x10')]);_0x11b4db[_0x2ecb('0xe')]=qs['offset'](_0x57430c[_0x2ecb('0x26')][_0x2ecb('0xe')]);}return _0x1ea868[_0x2ecb('0x50')](_0x11b4db);}})[_0x2ecb('0x15')](function(_0xb40b39){if(_0xb40b39){return _0xb40b39?{'count':_0x9cb921,'rows':_0xb40b39}:null;}})['then'](respondWithResult(_0x27bf14,null))['catch'](handleError(_0x27bf14,null));};exports[_0x2ecb('0x52')]=function(_0x282632,_0x232a4e){var _0x2be125=_0x282632['body'][_0x2ecb('0x53')];return db[_0x2ecb('0x51')][_0x2ecb('0x46')]({'where':{'id':_0x2be125},'attributes':['id'],'include':[{'model':db[_0x2ecb('0x47')],'as':_0x2ecb('0x54'),'attributes':['id','name','online',_0x2ecb('0x55'),_0x2ecb('0x56')],'raw':!![]}]})[_0x2ecb('0x15')](function(_0x1655e7){if(_0x1655e7){var _0x5df865=_[_0x2ecb('0x57')](_0x1655e7,function(_0x3c0e1e){var _0x161478=_0x3c0e1e[_0x2ecb('0x17')]({'plain':!![]});return _0x161478[_0x2ecb('0x54')];});return db['FaxQueue'][_0x2ecb('0x34')]({'where':{'id':_0x282632[_0x2ecb('0x29')]['id']}})[_0x2ecb('0x15')](function(_0x247c33){return db[_0x2ecb('0x58')][_0x2ecb('0x59')](function(_0x47d1aa){return _0x247c33[_0x2ecb('0x52')](_0x2be125,{'transaction':_0x47d1aa})[_0x2ecb('0x15')](function(){return BPromise[_0x2ecb('0x5a')](_0x5df865,function(_0x285b16){return db[_0x2ecb('0x3f')][_0x2ecb('0x5b')]({'where':{'UserId':_0x285b16['id'],'FaxQueueId':_0x282632['params']['id']},'transaction':_0x47d1aa});});})['then'](function(){_0x5df865[_0x2ecb('0x5c')](function(_0x224625){socket[_0x2ecb('0x5d')](_0x2ecb('0x5e'),{'UserId':_0x224625['id'],'FaxQueueId':_0x247c33['id']});});});});});}})[_0x2ecb('0x15')](respondWithStatusCode(_0x232a4e,null))[_0x2ecb('0x28')](handleError(_0x232a4e,null));};exports[_0x2ecb('0x5f')]=function(_0x26e9a5,_0x57cbad){return db[_0x2ecb('0x51')][_0x2ecb('0x46')]({'where':{'id':_0x26e9a5[_0x2ecb('0x26')][_0x2ecb('0x53')]},'attributes':['id'],'include':[{'model':db[_0x2ecb('0x47')],'as':_0x2ecb('0x54'),'attributes':['id'],'raw':!![]}]})[_0x2ecb('0x15')](handleEntityNotFound(_0x57cbad,null))['then'](function(_0x10092e){var _0x5491b0=_['map'](_0x10092e,'id');var _0x5e63ee=[];var _0x5433a7=[];var _0xea354b=squel[_0x2ecb('0x60')]();_0xea354b[_0x2ecb('0x61')](_0x2ecb('0x62'))[_0x2ecb('0x63')](_0x2ecb('0x64'),'tq')[_0x2ecb('0x65')](_0x2ecb('0x66'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x2ecb('0x24')]('FaxQueueId\x20=\x20?',_0x26e9a5['params']['id']);for(var _0x3a3a4a=0x0;_0x3a3a4a<_0x10092e['length'];_0x3a3a4a+=0x1){let _0x7a2723=_0x10092e[_0x3a3a4a];for(var _0x5d2fbd=0x0;_0x5d2fbd<_0x7a2723[_0x2ecb('0x54')][_0x2ecb('0x30')];_0x5d2fbd+=0x1){let _0x5ab2b2=_0x7a2723[_0x2ecb('0x54')][_0x5d2fbd];var _0x5c56be=_0xea354b['clone']();_0x5c56be['where'](_0x2ecb('0x67'),_0x5ab2b2['id']);_0x5433a7[_0x2ecb('0x68')](db[_0x2ecb('0x58')][_0x2ecb('0x26')](_0x5c56be[_0x2ecb('0x69')](),{'type':db[_0x2ecb('0x58')][_0x2ecb('0x6a')][_0x2ecb('0x6b')]})[_0x2ecb('0x15')](function(_0x197b8e){if(_0x197b8e[_0x2ecb('0x30')]===0x1){return _0x5ab2b2['id'];}else{var _0x289fe9=_[_0x2ecb('0x6c')](_[_0x2ecb('0x1d')](_0x197b8e,_0x2ecb('0x6d')),function(_0x175c92){return _[_0x2ecb('0x6e')](_0x5491b0,_0x175c92);});if(_0x289fe9){return _0x5ab2b2['id'];}}}));}}return BPromise[_0x2ecb('0x6f')](_0x5433a7)[_0x2ecb('0x15')](function(_0x51e42c){_0x5e63ee=_(_0x5e63ee)['union'](_0x51e42c)[_0x2ecb('0x70')]()[_0x2ecb('0x71')]();return db['FaxQueue'][_0x2ecb('0x34')]({'where':{'id':_0x26e9a5['params']['id']}})['then'](function(_0x1c4d42){return db['sequelize'][_0x2ecb('0x59')](function(_0x153688){return _0x1c4d42[_0x2ecb('0x5f')](_0x26e9a5[_0x2ecb('0x26')]['ids'],{'transaction':_0x153688})[_0x2ecb('0x15')](function(){if(!_[_0x2ecb('0x72')](_0x5e63ee)){return _0x1c4d42[_0x2ecb('0x73')](_0x5e63ee,{'transaction':_0x153688});}})[_0x2ecb('0x15')](function(){_0x5e63ee[_0x2ecb('0x5c')](function(_0x3325e5){socket[_0x2ecb('0x5d')](_0x2ecb('0x74'),{'UserId':_0x3325e5,'FaxQueueId':_0x1c4d42['id']});});});});});});})[_0x2ecb('0x15')](respondWithStatusCode(_0x57cbad,null))[_0x2ecb('0x28')](handleError(_0x57cbad,null));};exports[_0x2ecb('0x75')]=function(_0x16f4a6,_0x3c6eb4){return db[_0x2ecb('0x1e')][_0x2ecb('0x34')]({'where':{'id':_0x16f4a6['params']['id']}})[_0x2ecb('0x15')](handleEntityNotFound(_0x3c6eb4,null))[_0x2ecb('0x15')](function(_0xdc692f){if(_0xdc692f){return _0xdc692f[_0x2ecb('0x75')](_0x16f4a6[_0x2ecb('0x36')]['ids'],_['omit'](_0x16f4a6[_0x2ecb('0x36')],['ids','id'])||{})[_0x2ecb('0x76')](function(_0x5c3a3a){for(var _0xcfa03d=0x0;_0xcfa03d<_0x16f4a6['body'][_0x2ecb('0x53')][_0x2ecb('0x30')];_0xcfa03d+=0x1){socket['emit'](_0x2ecb('0x5e'),{'UserId':Number(_0x16f4a6['body'][_0x2ecb('0x53')][_0xcfa03d]),'FaxQueueId':Number(_0x16f4a6['params']['id'])});}return _0x5c3a3a;});}})[_0x2ecb('0x15')](respondWithResult(_0x3c6eb4,null))[_0x2ecb('0x28')](handleError(_0x3c6eb4,null));};exports[_0x2ecb('0x73')]=function(_0x142cf7,_0x5e33c2){return db['FaxQueue'][_0x2ecb('0x34')]({'where':{'id':_0x142cf7[_0x2ecb('0x29')]['id']}})[_0x2ecb('0x15')](handleEntityNotFound(_0x5e33c2,null))[_0x2ecb('0x15')](function(_0x4556c5){if(_0x4556c5){return _0x4556c5['removeAgents'](_0x142cf7[_0x2ecb('0x26')][_0x2ecb('0x53')])[_0x2ecb('0x15')](function(){if(_[_0x2ecb('0x77')](_0x142cf7[_0x2ecb('0x26')][_0x2ecb('0x53')])){for(var _0x3b053a=0x0;_0x3b053a<_0x142cf7[_0x2ecb('0x26')][_0x2ecb('0x53')]['length'];_0x3b053a+=0x1){socket[_0x2ecb('0x5d')](_0x2ecb('0x74'),{'UserId':Number(_0x142cf7['query'][_0x2ecb('0x53')][_0x3b053a]),'FaxQueueId':Number(_0x142cf7[_0x2ecb('0x29')]['id'])});}}else{socket[_0x2ecb('0x5d')](_0x2ecb('0x74'),{'UserId':Number(_0x142cf7[_0x2ecb('0x26')][_0x2ecb('0x53')]),'FaxQueueId':Number(_0x142cf7[_0x2ecb('0x29')]['id'])});}});}})[_0x2ecb('0x15')](respondWithStatusCode(_0x5e33c2,null))[_0x2ecb('0x28')](handleError(_0x5e33c2,null));};exports['getAgents']=function(_0x50c0f6,_0x4e3474){var _0xb7f8da={};var _0x4ce32f={};var _0x32ed5c;var _0x43e4ef;return db['FaxQueue'][_0x2ecb('0x3e')]({'where':{'id':_0x50c0f6[_0x2ecb('0x29')]['id']}})[_0x2ecb('0x15')](handleEntityNotFound(_0x4e3474,null))[_0x2ecb('0x15')](function(_0x1654e9){if(_0x1654e9){_0x32ed5c=_0x1654e9;_0x4ce32f[_0x2ecb('0x2a')]=_['keys'](db[_0x2ecb('0x47')][_0x2ecb('0x1f')]);_0x4ce32f['query']=_[_0x2ecb('0x2b')](_0x50c0f6[_0x2ecb('0x26')]);_0x4ce32f[_0x2ecb('0x2c')]=_[_0x2ecb('0x2d')](_0x4ce32f[_0x2ecb('0x2a')],_0x4ce32f[_0x2ecb('0x26')]);_0xb7f8da[_0x2ecb('0x2e')]=_[_0x2ecb('0x2d')](_0x4ce32f[_0x2ecb('0x2a')],qs[_0x2ecb('0x2f')](_0x50c0f6[_0x2ecb('0x26')][_0x2ecb('0x2f')]));_0xb7f8da[_0x2ecb('0x2e')]=_0xb7f8da[_0x2ecb('0x2e')][_0x2ecb('0x30')]?_0xb7f8da[_0x2ecb('0x2e')]:_0x4ce32f[_0x2ecb('0x2a')];_0xb7f8da[_0x2ecb('0x42')]=qs['sort'](_0x50c0f6['query']['sort']);_0xb7f8da[_0x2ecb('0x24')]=qs[_0x2ecb('0x2c')](_['pick'](_0x50c0f6['query'],_0x4ce32f[_0x2ecb('0x2c')]));if(_0x50c0f6[_0x2ecb('0x26')][_0x2ecb('0x45')]){_0xb7f8da[_0x2ecb('0x24')]=_[_0x2ecb('0x32')](_0xb7f8da['where'],{'$or':_['map'](_0xb7f8da[_0x2ecb('0x2e')],function(_0x5a7431){var _0x1d4109={};_0x1d4109[_0x5a7431]={'$like':'%'+_0x50c0f6[_0x2ecb('0x26')]['filter']+'%'};return _0x1d4109;})});}_0xb7f8da=_[_0x2ecb('0x32')]({},_0xb7f8da,_0x50c0f6[_0x2ecb('0x33')]);return _0x32ed5c[_0x2ecb('0x78')](_0xb7f8da);}})[_0x2ecb('0x15')](function(_0x191107){if(_0x191107){_0x43e4ef=_0x191107['length'];if(!_0x50c0f6[_0x2ecb('0x26')][_0x2ecb('0x40')]('nolimit')){_0xb7f8da[_0x2ecb('0x10')]=qs['limit'](_0x50c0f6[_0x2ecb('0x26')]['limit']);_0xb7f8da[_0x2ecb('0xe')]=qs[_0x2ecb('0xe')](_0x50c0f6[_0x2ecb('0x26')]['offset']);}return _0x32ed5c[_0x2ecb('0x78')](_0xb7f8da);}})[_0x2ecb('0x15')](function(_0x303111){if(_0x303111){return _0x303111?{'count':_0x43e4ef,'rows':_0x303111}:null;}})[_0x2ecb('0x15')](respondWithResult(_0x4e3474,null))[_0x2ecb('0x28')](handleError(_0x4e3474,null));};
\ No newline at end of file
index 27aff8a..240deec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69a6=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxQueue','setMaxListeners'];(function(_0x2c04d9,_0x59ec65){var _0x5ad09a=function(_0x5e2ce3){while(--_0x5e2ce3){_0x2c04d9['push'](_0x2c04d9['shift']());}};_0x5ad09a(++_0x59ec65);}(_0x69a6,0xee));var _0x669a=function(_0x21399f,_0x331b4e){_0x21399f=_0x21399f-0x0;var _0x1f31da=_0x69a6[_0x21399f];return _0x1f31da;};'use strict';var EventEmitter=require(_0x669a('0x0'));var FaxQueue=require(_0x669a('0x1'))['db'][_0x669a('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x669a('0x3')](0x0);var events={'afterCreate':_0x669a('0x4'),'afterUpdate':_0x669a('0x5'),'afterDestroy':_0x669a('0x6')};function emitEvent(_0x58a694){return function(_0x19661b,_0x111da1,_0x3972fb){FaxQueueEvents[_0x669a('0x7')](_0x58a694+':'+_0x19661b['id'],_0x19661b);FaxQueueEvents[_0x669a('0x7')](_0x58a694,_0x19661b);_0x3972fb(null);};}for(var e in events){if(events[_0x669a('0x8')](e)){var event=events[e];FaxQueue[_0x669a('0x9')](e,emitEvent(event));}}module[_0x669a('0xa')]=FaxQueueEvents;
\ No newline at end of file
+var _0x9476=['remove','emit','hook','exports','events','../../mysqldb','FaxQueue','setMaxListeners','save','update'];(function(_0x325a7f,_0x34fca4){var _0x38e775=function(_0x3aa5c6){while(--_0x3aa5c6){_0x325a7f['push'](_0x325a7f['shift']());}};_0x38e775(++_0x34fca4);}(_0x9476,0x180));var _0x6947=function(_0x26e51e,_0x4938fe){_0x26e51e=_0x26e51e-0x0;var _0x29ff05=_0x9476[_0x26e51e];return _0x29ff05;};'use strict';var EventEmitter=require(_0x6947('0x0'));var FaxQueue=require(_0x6947('0x1'))['db'][_0x6947('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x6947('0x3')](0x0);var events={'afterCreate':_0x6947('0x4'),'afterUpdate':_0x6947('0x5'),'afterDestroy':_0x6947('0x6')};function emitEvent(_0x49b703){return function(_0x21f50a,_0x33f975,_0x43ef79){FaxQueueEvents[_0x6947('0x7')](_0x49b703+':'+_0x21f50a['id'],_0x21f50a);FaxQueueEvents['emit'](_0x49b703,_0x21f50a);_0x43ef79(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0x6947('0x8')](e,emitEvent(event));}}module[_0x6947('0x9')]=FaxQueueEvents;
\ No newline at end of file
index 625b9c8..9a9d777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eff=['rimraf','../../config/environment','exports','define','FaxQueue','fax_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x276241,_0x189708){var _0x54fa39=function(_0x584f22){while(--_0x584f22){_0x276241['push'](_0x276241['shift']());}};_0x54fa39(++_0x189708);}(_0x4eff,0x14b));var _0xf4ef=function(_0xc12c9c,_0x4a8eb4){_0xc12c9c=_0xc12c9c-0x0;var _0x505579=_0x4eff[_0xc12c9c];return _0x505579;};'use strict';var _=require(_0xf4ef('0x0'));var util=require(_0xf4ef('0x1'));var logger=require(_0xf4ef('0x2'))('api');var moment=require(_0xf4ef('0x3'));var BPromise=require(_0xf4ef('0x4'));var rp=require(_0xf4ef('0x5'));var fs=require('fs');var path=require(_0xf4ef('0x6'));var rimraf=require(_0xf4ef('0x7'));var config=require(_0xf4ef('0x8'));var attributes=require('./faxQueue.attributes');module[_0xf4ef('0x9')]=function(_0x460bfa,_0x5565ac){return _0x460bfa[_0xf4ef('0xa')](_0xf4ef('0xb'),attributes,{'tableName':_0xf4ef('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2be7=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','fax_queues'];(function(_0x139e6a,_0x443ab7){var _0x19c2ba=function(_0x5be05b){while(--_0x5be05b){_0x139e6a['push'](_0x139e6a['shift']());}};_0x19c2ba(++_0x443ab7);}(_0x2be7,0x1ba));var _0x72be=function(_0x206f02,_0x36f322){_0x206f02=_0x206f02-0x0;var _0x8a2663=_0x2be7[_0x206f02];return _0x8a2663;};'use strict';var _=require(_0x72be('0x0'));var util=require('util');var logger=require(_0x72be('0x1'))(_0x72be('0x2'));var moment=require(_0x72be('0x3'));var BPromise=require(_0x72be('0x4'));var rp=require(_0x72be('0x5'));var fs=require('fs');var path=require(_0x72be('0x6'));var rimraf=require(_0x72be('0x7'));var config=require(_0x72be('0x8'));var attributes=require(_0x72be('0x9'));module[_0x72be('0xa')]=function(_0x2ea9c1,_0x4f716b){return _0x2ea9c1['define'](_0x72be('0xb'),attributes,{'tableName':_0x72be('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f3dbbe4..570d882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e80=['GetFaxQueue','ShowFaxQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxQueue,\x20%s,\x20%s','result','catch','FaxQueue','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0x258760,_0x55a0b5){var _0x2d3296=function(_0x52a56d){while(--_0x52a56d){_0x258760['push'](_0x258760['shift']());}};_0x2d3296(++_0x55a0b5);}(_0x8e80,0x83));var _0x08e8=function(_0x16a344,_0x43dc6c){_0x16a344=_0x16a344-0x0;var _0x24f848=_0x8e80[_0x16a344];return _0x24f848;};'use strict';var _=require(_0x08e8('0x0'));var util=require(_0x08e8('0x1'));var moment=require(_0x08e8('0x2'));var BPromise=require(_0x08e8('0x3'));var rs=require(_0x08e8('0x4'));var fs=require('fs');var Redis=require(_0x08e8('0x5'));var db=require(_0x08e8('0x6'))['db'];var utils=require(_0x08e8('0x7'));var logger=require(_0x08e8('0x8'))(_0x08e8('0x9'));var config=require('../../config/environment');var jayson=require(_0x08e8('0xa'));var client=jayson[_0x08e8('0xb')]['http']({'port':0x232a});config[_0x08e8('0xc')]=_[_0x08e8('0xd')](config['redis'],{'host':_0x08e8('0xe'),'port':0x18eb});var socket=require(_0x08e8('0xf'))(new Redis(config['redis']));require(_0x08e8('0x10'))[_0x08e8('0x11')](socket);function respondWithRpcPromise(_0x5e2214,_0x3ec9cd,_0xaa9c82){return new BPromise(function(_0x4dcaaf,_0x5f249e){return client[_0x08e8('0x12')](_0x5e2214,_0xaa9c82)[_0x08e8('0x13')](function(_0x411044){logger[_0x08e8('0x14')]('FaxQueue,\x20%s,\x20%s',_0x3ec9cd,_0x08e8('0x15'));logger[_0x08e8('0x16')](_0x08e8('0x17'),_0x3ec9cd,_0x08e8('0x15'),JSON[_0x08e8('0x18')](_0x411044));if(_0x411044[_0x08e8('0x19')]){if(_0x411044['error'][_0x08e8('0x1a')]===0x1f4){logger[_0x08e8('0x19')]('FaxQueue,\x20%s,\x20%s',_0x3ec9cd,_0x411044[_0x08e8('0x19')][_0x08e8('0x1b')]);return _0x5f249e(_0x411044[_0x08e8('0x19')][_0x08e8('0x1b')]);}logger['error'](_0x08e8('0x1c'),_0x3ec9cd,_0x411044[_0x08e8('0x19')][_0x08e8('0x1b')]);return _0x4dcaaf(_0x411044['error'][_0x08e8('0x1b')]);}else{logger[_0x08e8('0x14')]('FaxQueue,\x20%s,\x20%s',_0x3ec9cd,'request\x20sent');_0x4dcaaf(_0x411044[_0x08e8('0x1d')][_0x08e8('0x1b')]);}})[_0x08e8('0x1e')](function(_0x3d811b){logger[_0x08e8('0x19')]('FaxQueue,\x20%s,\x20%s',_0x3ec9cd,_0x3d811b);_0x5f249e(_0x3d811b);});});}exports['GetFaxQueue']=function(_0x28d0b1){var _0x5221b6=this;return new Promise(function(_0x552554,_0x5db8b2){return db[_0x08e8('0x1f')][_0x08e8('0x20')]({'raw':_0x28d0b1[_0x08e8('0x21')]?_0x28d0b1[_0x08e8('0x21')][_0x08e8('0x22')]===undefined?!![]:![]:!![],'where':_0x28d0b1['options']?_0x28d0b1[_0x08e8('0x21')][_0x08e8('0x23')]||null:null,'attributes':_0x28d0b1['options']?_0x28d0b1['options'][_0x08e8('0x24')]||null:null,'limit':_0x28d0b1[_0x08e8('0x21')]?_0x28d0b1[_0x08e8('0x21')][_0x08e8('0x25')]||null:null,'include':_0x28d0b1[_0x08e8('0x21')]?_0x28d0b1['options'][_0x08e8('0x26')]?_[_0x08e8('0x27')](_0x28d0b1[_0x08e8('0x21')][_0x08e8('0x26')],function(_0x9e1a9f){return{'model':db[_0x9e1a9f[_0x08e8('0x28')]],'as':_0x9e1a9f['as'],'attributes':_0x9e1a9f[_0x08e8('0x24')],'include':_0x9e1a9f['include']?_['map'](_0x9e1a9f[_0x08e8('0x26')],function(_0x45f5b8){return{'model':db[_0x45f5b8['model']],'as':_0x45f5b8['as'],'attributes':_0x45f5b8[_0x08e8('0x24')],'include':_0x45f5b8[_0x08e8('0x26')]?_['map'](_0x45f5b8['include'],function(_0x4bfa42){return{'model':db[_0x4bfa42['model']],'as':_0x4bfa42['as'],'attributes':_0x4bfa42['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5a5f22){logger[_0x08e8('0x14')](_0x08e8('0x29'),_0x28d0b1);logger[_0x08e8('0x16')](_0x08e8('0x29'),_0x28d0b1,JSON['stringify'](_0x5a5f22));_0x552554(_0x5a5f22);})['catch'](function(_0xe55e3e){logger[_0x08e8('0x19')](_0x08e8('0x29'),_0xe55e3e[_0x08e8('0x1b')],_0x28d0b1);_0x5db8b2(_0x5221b6[_0x08e8('0x19')](0x1f4,_0xe55e3e['message']));});});};exports['ShowFaxQueue']=function(_0x34ddbc){var _0x55b5b0=this;return new Promise(function(_0x4fefe5,_0x5ea487){return db[_0x08e8('0x1f')]['find']({'raw':_0x34ddbc['options']?_0x34ddbc[_0x08e8('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x34ddbc[_0x08e8('0x21')]?_0x34ddbc[_0x08e8('0x21')][_0x08e8('0x23')]||null:null,'attributes':_0x34ddbc['options']?_0x34ddbc[_0x08e8('0x21')][_0x08e8('0x24')]||null:null,'include':_0x34ddbc[_0x08e8('0x21')]?_0x34ddbc[_0x08e8('0x21')][_0x08e8('0x26')]?_[_0x08e8('0x27')](_0x34ddbc[_0x08e8('0x21')]['include'],function(_0x2c2cd1){return{'model':db[_0x2c2cd1['model']],'as':_0x2c2cd1['as'],'attributes':_0x2c2cd1[_0x08e8('0x24')],'include':_0x2c2cd1[_0x08e8('0x26')]?_[_0x08e8('0x27')](_0x2c2cd1[_0x08e8('0x26')],function(_0x501365){return{'model':db[_0x501365[_0x08e8('0x28')]],'as':_0x501365['as'],'attributes':_0x501365[_0x08e8('0x24')],'include':_0x501365[_0x08e8('0x26')]?_[_0x08e8('0x27')](_0x501365['include'],function(_0x4d1fe3){return{'model':db[_0x4d1fe3[_0x08e8('0x28')]],'as':_0x4d1fe3['as'],'attributes':_0x4d1fe3[_0x08e8('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x349e88){logger[_0x08e8('0x14')](_0x08e8('0x2a'),_0x34ddbc);logger[_0x08e8('0x16')]('ShowFaxQueue',_0x34ddbc,JSON['stringify'](_0x349e88));_0x4fefe5(_0x349e88);})[_0x08e8('0x1e')](function(_0x4e0b55){logger[_0x08e8('0x19')](_0x08e8('0x2a'),_0x4e0b55[_0x08e8('0x1b')],_0x34ddbc);_0x5ea487(_0x55b5b0[_0x08e8('0x19')](0x1f4,_0x4e0b55[_0x08e8('0x1b')]));});});};
\ No newline at end of file
+var _0xcd77=['http','redis','localhost','./faxQueue.socket','register','then','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','include','map','model','attributes','ShowFaxQueue','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1f2412,_0x54f6e4){var _0x5df5af=function(_0x3a06f1){while(--_0x3a06f1){_0x1f2412['push'](_0x1f2412['shift']());}};_0x5df5af(++_0x54f6e4);}(_0xcd77,0xf9));var _0x7cd7=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xcd77[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require(_0x7cd7('0x0'));var moment=require(_0x7cd7('0x1'));var BPromise=require(_0x7cd7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7cd7('0x3'));var db=require(_0x7cd7('0x4'))['db'];var utils=require(_0x7cd7('0x5'));var logger=require(_0x7cd7('0x6'))(_0x7cd7('0x7'));var config=require(_0x7cd7('0x8'));var jayson=require(_0x7cd7('0x9'));var client=jayson['client'][_0x7cd7('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x7cd7('0xb')],{'host':_0x7cd7('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7cd7('0xd'))[_0x7cd7('0xe')](socket);function respondWithRpcPromise(_0x32d229,_0x5b6fa1,_0x1e4193){return new BPromise(function(_0xc7bedd,_0x162692){return client['request'](_0x32d229,_0x1e4193)[_0x7cd7('0xf')](function(_0x363582){logger['info'](_0x7cd7('0x10'),_0x5b6fa1,_0x7cd7('0x11'));logger[_0x7cd7('0x12')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x5b6fa1,_0x7cd7('0x11'),JSON[_0x7cd7('0x13')](_0x363582));if(_0x363582[_0x7cd7('0x14')]){if(_0x363582[_0x7cd7('0x14')][_0x7cd7('0x15')]===0x1f4){logger['error']('FaxQueue,\x20%s,\x20%s',_0x5b6fa1,_0x363582['error'][_0x7cd7('0x16')]);return _0x162692(_0x363582[_0x7cd7('0x14')][_0x7cd7('0x16')]);}logger[_0x7cd7('0x14')](_0x7cd7('0x10'),_0x5b6fa1,_0x363582[_0x7cd7('0x14')]['message']);return _0xc7bedd(_0x363582[_0x7cd7('0x14')][_0x7cd7('0x16')]);}else{logger[_0x7cd7('0x17')](_0x7cd7('0x10'),_0x5b6fa1,_0x7cd7('0x11'));_0xc7bedd(_0x363582[_0x7cd7('0x18')][_0x7cd7('0x16')]);}})[_0x7cd7('0x19')](function(_0x1bbd46){logger[_0x7cd7('0x14')](_0x7cd7('0x10'),_0x5b6fa1,_0x1bbd46);_0x162692(_0x1bbd46);});});}exports[_0x7cd7('0x1a')]=function(_0x5e747f){var _0x40da64=this;return new Promise(function(_0x97a6aa,_0x15f023){return db[_0x7cd7('0x1b')][_0x7cd7('0x1c')]({'raw':_0x5e747f[_0x7cd7('0x1d')]?_0x5e747f[_0x7cd7('0x1d')][_0x7cd7('0x1e')]===undefined?!![]:![]:!![],'where':_0x5e747f[_0x7cd7('0x1d')]?_0x5e747f[_0x7cd7('0x1d')][_0x7cd7('0x1f')]||null:null,'attributes':_0x5e747f['options']?_0x5e747f[_0x7cd7('0x1d')]['attributes']||null:null,'limit':_0x5e747f[_0x7cd7('0x1d')]?_0x5e747f[_0x7cd7('0x1d')]['limit']||null:null,'include':_0x5e747f[_0x7cd7('0x1d')]?_0x5e747f[_0x7cd7('0x1d')][_0x7cd7('0x20')]?_[_0x7cd7('0x21')](_0x5e747f['options'][_0x7cd7('0x20')],function(_0x271f44){return{'model':db[_0x271f44[_0x7cd7('0x22')]],'as':_0x271f44['as'],'attributes':_0x271f44[_0x7cd7('0x23')],'include':_0x271f44[_0x7cd7('0x20')]?_['map'](_0x271f44[_0x7cd7('0x20')],function(_0x46ff23){return{'model':db[_0x46ff23[_0x7cd7('0x22')]],'as':_0x46ff23['as'],'attributes':_0x46ff23['attributes'],'include':_0x46ff23[_0x7cd7('0x20')]?_[_0x7cd7('0x21')](_0x46ff23['include'],function(_0x15ea9a){return{'model':db[_0x15ea9a['model']],'as':_0x15ea9a['as'],'attributes':_0x15ea9a['attributes']};}):[]};}):[]};}):[]:[]})[_0x7cd7('0xf')](function(_0x17b7d9){logger[_0x7cd7('0x17')](_0x7cd7('0x1a'),_0x5e747f);logger[_0x7cd7('0x12')](_0x7cd7('0x1a'),_0x5e747f,JSON[_0x7cd7('0x13')](_0x17b7d9));_0x97a6aa(_0x17b7d9);})[_0x7cd7('0x19')](function(_0x45dac1){logger[_0x7cd7('0x14')]('GetFaxQueue',_0x45dac1[_0x7cd7('0x16')],_0x5e747f);_0x15f023(_0x40da64[_0x7cd7('0x14')](0x1f4,_0x45dac1[_0x7cd7('0x16')]));});});};exports[_0x7cd7('0x24')]=function(_0x170588){var _0x164ae6=this;return new Promise(function(_0x40f80e,_0x2a6d37){return db[_0x7cd7('0x1b')]['find']({'raw':_0x170588[_0x7cd7('0x1d')]?_0x170588['options'][_0x7cd7('0x1e')]===undefined?!![]:![]:!![],'where':_0x170588[_0x7cd7('0x1d')]?_0x170588['options']['where']||null:null,'attributes':_0x170588[_0x7cd7('0x1d')]?_0x170588['options']['attributes']||null:null,'include':_0x170588[_0x7cd7('0x1d')]?_0x170588[_0x7cd7('0x1d')]['include']?_['map'](_0x170588[_0x7cd7('0x1d')][_0x7cd7('0x20')],function(_0x4cdc83){return{'model':db[_0x4cdc83[_0x7cd7('0x22')]],'as':_0x4cdc83['as'],'attributes':_0x4cdc83[_0x7cd7('0x23')],'include':_0x4cdc83[_0x7cd7('0x20')]?_[_0x7cd7('0x21')](_0x4cdc83[_0x7cd7('0x20')],function(_0x5e33f5){return{'model':db[_0x5e33f5['model']],'as':_0x5e33f5['as'],'attributes':_0x5e33f5[_0x7cd7('0x23')],'include':_0x5e33f5['include']?_['map'](_0x5e33f5[_0x7cd7('0x20')],function(_0x30af76){return{'model':db[_0x30af76['model']],'as':_0x30af76['as'],'attributes':_0x30af76[_0x7cd7('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x39445d){logger[_0x7cd7('0x17')](_0x7cd7('0x24'),_0x170588);logger[_0x7cd7('0x12')](_0x7cd7('0x24'),_0x170588,JSON[_0x7cd7('0x13')](_0x39445d));_0x40f80e(_0x39445d);})[_0x7cd7('0x19')](function(_0x57b0a8){logger[_0x7cd7('0x14')]('ShowFaxQueue',_0x57b0a8[_0x7cd7('0x16')],_0x170588);_0x2a6d37(_0x164ae6['error'](0x1f4,_0x57b0a8[_0x7cd7('0x16')]));});});};
\ No newline at end of file
index cdb22cd..0359047 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7564=['remove','update','emit','removeListener','register','length','faxQueue:','./faxQueue.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7564,0x1e4));var _0x4756=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x7564[_0x565c49];return _0x20ca34;};'use strict';var FaxQueueEvents=require(_0x4756('0x0'));var events=[_0x4756('0x1'),_0x4756('0x2'),_0x4756('0x3')];function createListener(_0x487966,_0x102fa4){return function(_0x3416eb){_0x102fa4[_0x4756('0x4')](_0x487966,_0x3416eb);};}function removeListener(_0x460bdd,_0x4b93b8){return function(){FaxQueueEvents[_0x4756('0x5')](_0x460bdd,_0x4b93b8);};}exports[_0x4756('0x6')]=function(_0x4b753d){for(var _0x2bea80=0x0,_0x2993bc=events[_0x4756('0x7')];_0x2bea80<_0x2993bc;_0x2bea80++){var _0x254732=events[_0x2bea80];var _0x58f1e5=createListener(_0x4756('0x8')+_0x254732,_0x4b753d);FaxQueueEvents['on'](_0x254732,_0x58f1e5);}};
\ No newline at end of file
+var _0x34e7=['length','faxQueue:','save','update','emit','removeListener'];(function(_0x363f49,_0x10fc31){var _0x333549=function(_0x560411){while(--_0x560411){_0x363f49['push'](_0x363f49['shift']());}};_0x333549(++_0x10fc31);}(_0x34e7,0x1be));var _0x734e=function(_0x53bec3,_0x550a58){_0x53bec3=_0x53bec3-0x0;var _0x159317=_0x34e7[_0x53bec3];return _0x159317;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x734e('0x0'),'remove',_0x734e('0x1')];function createListener(_0x406401,_0x140beb){return function(_0x211af6){_0x140beb[_0x734e('0x2')](_0x406401,_0x211af6);};}function removeListener(_0x595fe5,_0x17e092){return function(){FaxQueueEvents[_0x734e('0x3')](_0x595fe5,_0x17e092);};}exports['register']=function(_0x316150){for(var _0x2fbc34=0x0,_0x2548c6=events[_0x734e('0x4')];_0x2fbc34<_0x2548c6;_0x2fbc34++){var _0x162a30=events[_0x2fbc34];var _0x2dde76=createListener(_0x734e('0x5')+_0x162a30,_0x316150);FaxQueueEvents['on'](_0x162a30,_0x2dde76);}};
\ No newline at end of file
index 433280f..5098370 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e24=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','/:id/users','getAgents','post','create','/:id/teams','addTeams','addAgents','put','/:id','delete','destroy','removeTeams','removeAgents','exports','multer'];(function(_0x51c589,_0x45214d){var _0x20c5dd=function(_0x5ce9ca){while(--_0x5ce9ca){_0x51c589['push'](_0x51c589['shift']());}};_0x20c5dd(++_0x45214d);}(_0x3e24,0x167));var _0x43e2=function(_0x2f7be9,_0x173b28){_0x2f7be9=_0x2f7be9-0x0;var _0x22b2ad=_0x3e24[_0x2f7be9];return _0x22b2ad;};'use strict';var multer=require(_0x43e2('0x0'));var util=require(_0x43e2('0x1'));var path=require(_0x43e2('0x2'));var timeout=require(_0x43e2('0x3'));var express=require(_0x43e2('0x4'));var router=express['Router']();var fs_extra=require(_0x43e2('0x5'));var auth=require(_0x43e2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x43e2('0x7'));var controller=require(_0x43e2('0x8'));router[_0x43e2('0x9')]('/',auth[_0x43e2('0xa')](),controller[_0x43e2('0xb')]);router[_0x43e2('0x9')](_0x43e2('0xc'),auth['isAuthenticated'](),controller[_0x43e2('0xd')]);router[_0x43e2('0x9')]('/:id',auth[_0x43e2('0xa')](),controller[_0x43e2('0xe')]);router['get'](_0x43e2('0xf'),auth[_0x43e2('0xa')](),controller['getMembers']);router[_0x43e2('0x9')]('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router[_0x43e2('0x9')](_0x43e2('0x10'),auth[_0x43e2('0xa')](),controller[_0x43e2('0x11')]);router[_0x43e2('0x12')]('/',auth[_0x43e2('0xa')](),controller[_0x43e2('0x13')]);router[_0x43e2('0x12')](_0x43e2('0x14'),auth[_0x43e2('0xa')](),controller[_0x43e2('0x15')]);router[_0x43e2('0x12')]('/:id/users',auth[_0x43e2('0xa')](),controller[_0x43e2('0x16')]);router[_0x43e2('0x17')](_0x43e2('0x18'),auth['isAuthenticated'](),controller['update']);router[_0x43e2('0x19')](_0x43e2('0x18'),auth[_0x43e2('0xa')](),controller[_0x43e2('0x1a')]);router[_0x43e2('0x19')](_0x43e2('0x14'),auth[_0x43e2('0xa')](),controller[_0x43e2('0x1b')]);router[_0x43e2('0x19')](_0x43e2('0x10'),auth['isAuthenticated'](),controller[_0x43e2('0x1c')]);module[_0x43e2('0x1d')]=router;
\ No newline at end of file
+var _0x4991=['addAgents','put','update','destroy','delete','/:id/teams','removeAgents','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/members','getMembers','getTeams','getAgents','post','create','addTeams','/:id/users'];(function(_0x3906f7,_0x234aad){var _0x5e0623=function(_0x523ec1){while(--_0x523ec1){_0x3906f7['push'](_0x3906f7['shift']());}};_0x5e0623(++_0x234aad);}(_0x4991,0xf7));var _0x1499=function(_0x1342db,_0x4df1f1){_0x1342db=_0x1342db-0x0;var _0x39170e=_0x4991[_0x1342db];return _0x39170e;};'use strict';var multer=require(_0x1499('0x0'));var util=require('util');var path=require(_0x1499('0x1'));var timeout=require('connect-timeout');var express=require(_0x1499('0x2'));var router=express[_0x1499('0x3')]();var fs_extra=require(_0x1499('0x4'));var auth=require(_0x1499('0x5'));var interaction=require(_0x1499('0x6'));var config=require(_0x1499('0x7'));var controller=require(_0x1499('0x8'));router[_0x1499('0x9')]('/',auth['isAuthenticated'](),controller[_0x1499('0xa')]);router[_0x1499('0x9')](_0x1499('0xb'),auth[_0x1499('0xc')](),controller[_0x1499('0xd')]);router[_0x1499('0x9')](_0x1499('0xe'),auth[_0x1499('0xc')](),controller['show']);router[_0x1499('0x9')](_0x1499('0xf'),auth['isAuthenticated'](),controller[_0x1499('0x10')]);router[_0x1499('0x9')]('/:id/teams',auth[_0x1499('0xc')](),controller[_0x1499('0x11')]);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x1499('0x12')]);router[_0x1499('0x13')]('/',auth[_0x1499('0xc')](),controller[_0x1499('0x14')]);router[_0x1499('0x13')]('/:id/teams',auth['isAuthenticated'](),controller[_0x1499('0x15')]);router['post'](_0x1499('0x16'),auth[_0x1499('0xc')](),controller[_0x1499('0x17')]);router[_0x1499('0x18')]('/:id',auth[_0x1499('0xc')](),controller[_0x1499('0x19')]);router['delete'](_0x1499('0xe'),auth[_0x1499('0xc')](),controller[_0x1499('0x1a')]);router[_0x1499('0x1b')](_0x1499('0x1c'),auth[_0x1499('0xc')](),controller['removeTeams']);router['delete']('/:id/users',auth[_0x1499('0xc')](),controller[_0x1499('0x1d')]);module['exports']=router;
\ No newline at end of file
index 69faab2..f65a9a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb3=['sequelize','exports','STRING','DATE','moment'];(function(_0xf2a6e3,_0x226b31){var _0x5b0dbb=function(_0x266e0a){while(--_0x266e0a){_0xf2a6e3['push'](_0xf2a6e3['shift']());}};_0x5b0dbb(++_0x226b31);}(_0xdbb3,0xbd));var _0x3dbb=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0xdbb3[_0x363ef8];return _0x148822;};'use strict';var moment=require(_0x3dbb('0x0'));var Sequelize=require(_0x3dbb('0x1'));module[_0x3dbb('0x2')]={'uniqueid':{'type':Sequelize[_0x3dbb('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x3dbb('0x3')]},'joinAt':{'type':Sequelize[_0x3dbb('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x3dbb('0x4')]},'reason':{'type':Sequelize[_0x3dbb('0x3')]}};
\ No newline at end of file
+var _0x85da=['STRING','DATE','moment','exports'];(function(_0x428f32,_0xba79ad){var _0x9e6f89=function(_0x5cf6c8){while(--_0x5cf6c8){_0x428f32['push'](_0x428f32['shift']());}};_0x9e6f89(++_0xba79ad);}(_0x85da,0x1ae));var _0xa85d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x85da[_0x57b54c];return _0x59cc19;};'use strict';var moment=require(_0xa85d('0x0'));var Sequelize=require('sequelize');module[_0xa85d('0x1')]={'uniqueid':{'type':Sequelize[_0xa85d('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xa85d('0x2')]},'joinAt':{'type':Sequelize[_0xa85d('0x3')]},'leaveAt':{'type':Sequelize[_0xa85d('0x3')]},'acceptAt':{'type':Sequelize[_0xa85d('0x3')]},'exitAt':{'type':Sequelize[_0xa85d('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0d07d92..725c054 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76dc=['util','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','json','apply','reject','save','update','then','destroy','error','name','index','map','rawAttributes','fieldName','type','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','FaxQueueReport','includeAll','include','rows','params','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird'];(function(_0x58ad55,_0x13f533){var _0x4841e8=function(_0x18675b){while(--_0x18675b){_0x58ad55['push'](_0x58ad55['shift']());}};_0x4841e8(++_0x13f533);}(_0x76dc,0x1f2));var _0xc76d=function(_0xc6d32b,_0x608367){_0xc6d32b=_0xc6d32b-0x0;var _0x5d773a=_0x76dc[_0xc6d32b];return _0x5d773a;};'use strict';var emlformat=require(_0xc76d('0x0'));var rimraf=require(_0xc76d('0x1'));var zipdir=require(_0xc76d('0x2'));var jsonpatch=require(_0xc76d('0x3'));var rp=require('request-promise');var moment=require(_0xc76d('0x4'));var BPromise=require(_0xc76d('0x5'));var Mustache=require('mustache');var util=require(_0xc76d('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xc76d('0x7'));var ejs=require(_0xc76d('0x8'));var fs=require('fs');var fs_extra=require(_0xc76d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc76d('0xa'));var jsforce=require(_0xc76d('0xb'));var deskjs=require(_0xc76d('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc76d('0xd'));var Redis=require(_0xc76d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc76d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc76d('0x10'));var logger=require(_0xc76d('0x11'))(_0xc76d('0x12'));var utils=require(_0xc76d('0x13'));var config=require(_0xc76d('0x14'));var licenseUtil=require(_0xc76d('0x15'));var db=require(_0xc76d('0x16'))['db'];function respondWithStatusCode(_0x2e02e9,_0x1722b3){_0x1722b3=_0x1722b3||0xcc;return function(_0x311814){if(_0x311814){return _0x2e02e9[_0xc76d('0x17')](_0x1722b3);}return _0x2e02e9[_0xc76d('0x18')](_0x1722b3)[_0xc76d('0x19')]();};}function respondWithResult(_0x3ed1bd,_0x5cda20){_0x5cda20=_0x5cda20||0xc8;return function(_0x8696db){if(_0x8696db){return _0x3ed1bd[_0xc76d('0x18')](_0x5cda20)['json'](_0x8696db);}};}function respondWithFilteredResult(_0x4741a4,_0x2d23d2){return function(_0x47a4ee){if(_0x47a4ee){var _0x6f94e=typeof _0x2d23d2['offset']===_0xc76d('0x1a')&&typeof _0x2d23d2['limit']==='undefined';var _0x45a83e=_0x47a4ee[_0xc76d('0x1b')];var _0x339623=_0x6f94e?0x0:_0x2d23d2[_0xc76d('0x1c')];var _0xd1d16f=_0x6f94e?_0x47a4ee['count']:_0x2d23d2[_0xc76d('0x1c')]+_0x2d23d2[_0xc76d('0x1d')];var _0xa0c5b6;if(_0xd1d16f>=_0x45a83e){_0xd1d16f=_0x45a83e;_0xa0c5b6=0xc8;}else{_0xa0c5b6=0xce;}_0x4741a4[_0xc76d('0x18')](_0xa0c5b6);return _0x4741a4[_0xc76d('0x1e')]('Content-Range',_0x339623+'-'+_0xd1d16f+'/'+_0x45a83e)[_0xc76d('0x1f')](_0x47a4ee);}return null;};}function patchUpdates(_0x324db7){return function(_0x5dffde){try{jsonpatch[_0xc76d('0x20')](_0x5dffde,_0x324db7,!![]);}catch(_0x777f22){return BPromise[_0xc76d('0x21')](_0x777f22);}return _0x5dffde[_0xc76d('0x22')]();};}function saveUpdates(_0x18f546,_0x3d357b){return function(_0x42b89c){if(_0x42b89c){return _0x42b89c[_0xc76d('0x23')](_0x18f546)[_0xc76d('0x24')](function(_0x20e09c){return _0x20e09c;});}return null;};}function removeEntity(_0x15328d,_0x5de11f){return function(_0x11b42f){if(_0x11b42f){return _0x11b42f[_0xc76d('0x25')]()['then'](function(){_0x15328d[_0xc76d('0x18')](0xcc)[_0xc76d('0x19')]();});}};}function handleEntityNotFound(_0x55ca79,_0x374b9e){return function(_0x476aee){if(!_0x476aee){_0x55ca79[_0xc76d('0x17')](0x194);}return _0x476aee;};}function handleError(_0xd1dda0,_0xfc4aea){_0xfc4aea=_0xfc4aea||0x1f4;return function(_0x1949c4){logger[_0xc76d('0x26')](_0x1949c4['stack']);if(_0x1949c4['name']){delete _0x1949c4[_0xc76d('0x27')];}_0xd1dda0[_0xc76d('0x18')](_0xfc4aea)['send'](_0x1949c4);};}exports[_0xc76d('0x28')]=function(_0x52a79a,_0x64899f){var _0x49fa89={},_0x2039f4={},_0x5cf2e4={'count':0x0,'rows':[]};var _0x13b468=_[_0xc76d('0x29')](db['FaxQueueReport'][_0xc76d('0x2a')],function(_0x1c68f3){return{'name':_0x1c68f3[_0xc76d('0x2b')],'type':_0x1c68f3[_0xc76d('0x2c')]['key']};});_0x2039f4[_0xc76d('0x2d')]=_['map'](_0x13b468,_0xc76d('0x27'));_0x2039f4['query']=_[_0xc76d('0x2e')](_0x52a79a[_0xc76d('0x2f')]);_0x2039f4['filters']=_['intersection'](_0x2039f4['model'],_0x2039f4['query']);_0x49fa89[_0xc76d('0x30')]=_[_0xc76d('0x31')](_0x2039f4[_0xc76d('0x2d')],qs[_0xc76d('0x32')](_0x52a79a[_0xc76d('0x2f')]['fields']));_0x49fa89[_0xc76d('0x30')]=_0x49fa89['attributes'][_0xc76d('0x33')]?_0x49fa89['attributes']:_0x2039f4[_0xc76d('0x2d')];if(!_0x52a79a[_0xc76d('0x2f')][_0xc76d('0x34')](_0xc76d('0x35'))){_0x49fa89[_0xc76d('0x1d')]=qs['limit'](_0x52a79a[_0xc76d('0x2f')][_0xc76d('0x1d')]);_0x49fa89[_0xc76d('0x1c')]=qs['offset'](_0x52a79a[_0xc76d('0x2f')][_0xc76d('0x1c')]);}_0x49fa89[_0xc76d('0x36')]=qs['sort'](_0x52a79a[_0xc76d('0x2f')][_0xc76d('0x37')]);_0x49fa89[_0xc76d('0x38')]=qs[_0xc76d('0x39')](_[_0xc76d('0x3a')](_0x52a79a[_0xc76d('0x2f')],_0x2039f4['filters']),_0x13b468);if(_0x52a79a['query'][_0xc76d('0x3b')]){_0x49fa89['where']=_[_0xc76d('0x3c')](_0x49fa89[_0xc76d('0x38')],{'$or':_[_0xc76d('0x29')](_0x13b468,function(_0x1925a1){if(_0x1925a1['type']!=='VIRTUAL'){var _0xc907eb={};_0xc907eb[_0x1925a1[_0xc76d('0x27')]]={'$like':'%'+_0x52a79a[_0xc76d('0x2f')][_0xc76d('0x3b')]+'%'};return _0xc907eb;}})});}_0x49fa89=_[_0xc76d('0x3c')]({},_0x49fa89,_0x52a79a['options']);var _0x42404c={'where':_0x49fa89[_0xc76d('0x38')]};return db[_0xc76d('0x3d')][_0xc76d('0x1b')](_0x42404c)[_0xc76d('0x24')](function(_0x78e14a){_0x5cf2e4[_0xc76d('0x1b')]=_0x78e14a;if(_0x52a79a[_0xc76d('0x2f')][_0xc76d('0x3e')]){_0x49fa89[_0xc76d('0x3f')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0x49fa89);})[_0xc76d('0x24')](function(_0x2a0759){_0x5cf2e4[_0xc76d('0x40')]=_0x2a0759;return _0x5cf2e4;})[_0xc76d('0x24')](respondWithFilteredResult(_0x64899f,_0x49fa89))['catch'](handleError(_0x64899f,null));};exports['show']=function(_0x45be72,_0x13a895){var _0x3e471e={'raw':!![],'where':{'id':_0x45be72[_0xc76d('0x41')]['id']}},_0x15eb42={};_0x15eb42[_0xc76d('0x2d')]=_[_0xc76d('0x2e')](db[_0xc76d('0x3d')]['rawAttributes']);_0x15eb42[_0xc76d('0x2f')]=_[_0xc76d('0x2e')](_0x45be72[_0xc76d('0x2f')]);_0x15eb42[_0xc76d('0x39')]=_['intersection'](_0x15eb42['model'],_0x15eb42['query']);_0x3e471e['attributes']=_['intersection'](_0x15eb42['model'],qs['fields'](_0x45be72[_0xc76d('0x2f')][_0xc76d('0x32')]));_0x3e471e[_0xc76d('0x30')]=_0x3e471e[_0xc76d('0x30')][_0xc76d('0x33')]?_0x3e471e[_0xc76d('0x30')]:_0x15eb42[_0xc76d('0x2d')];if(_0x45be72[_0xc76d('0x2f')]['includeAll']){_0x3e471e[_0xc76d('0x3f')]=[{'all':!![]}];}_0x3e471e=_[_0xc76d('0x3c')]({},_0x3e471e,_0x45be72[_0xc76d('0x42')]);return db[_0xc76d('0x3d')][_0xc76d('0x43')](_0x3e471e)[_0xc76d('0x24')](handleEntityNotFound(_0x13a895,null))[_0xc76d('0x24')](respondWithResult(_0x13a895,null))[_0xc76d('0x44')](handleError(_0x13a895,null));};exports[_0xc76d('0x45')]=function(_0x4fb26e,_0x5b41d3){return db[_0xc76d('0x3d')][_0xc76d('0x45')](_0x4fb26e[_0xc76d('0x46')],{})[_0xc76d('0x24')](respondWithResult(_0x5b41d3,0xc9))[_0xc76d('0x44')](handleError(_0x5b41d3,null));};exports['update']=function(_0x25fc9d,_0x1ede13){if(_0x25fc9d['body']['id']){delete _0x25fc9d['body']['id'];}return db[_0xc76d('0x3d')][_0xc76d('0x43')]({'where':{'id':_0x25fc9d['params']['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0x1ede13,null))[_0xc76d('0x24')](saveUpdates(_0x25fc9d[_0xc76d('0x46')],null))[_0xc76d('0x24')](respondWithResult(_0x1ede13,null))[_0xc76d('0x44')](handleError(_0x1ede13,null));};exports[_0xc76d('0x25')]=function(_0x25a549,_0x10b1b0){return db[_0xc76d('0x3d')][_0xc76d('0x43')]({'where':{'id':_0x25a549['params']['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0x10b1b0,null))[_0xc76d('0x24')](removeEntity(_0x10b1b0,null))[_0xc76d('0x44')](handleError(_0x10b1b0,null));};exports['describe']=function(_0xbb9ef3,_0x1afc6c){return db['FaxQueueReport'][_0xc76d('0x47')]()['then'](respondWithResult(_0x1afc6c,null))[_0xc76d('0x44')](handleError(_0x1afc6c,null));};
\ No newline at end of file
+var _0x422f=['FaxQueueReport','fieldName','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','type','VIRTUAL','findAll','rows','show','params','rawAttributes','length','includeAll','include','merge','options','find','body','catch','describe','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','map'];(function(_0x44c14b,_0x29b7e4){var _0xcf6b96=function(_0x5eef5b){while(--_0x5eef5b){_0x44c14b['push'](_0x44c14b['shift']());}};_0xcf6b96(++_0x29b7e4);}(_0x422f,0x1c7));var _0xf422=function(_0x261960,_0x4e66d1){_0x261960=_0x261960-0x0;var _0x14526d=_0x422f[_0x261960];return _0x14526d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf422('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf422('0x1'));var rp=require(_0xf422('0x2'));var moment=require('moment');var BPromise=require(_0xf422('0x3'));var Mustache=require(_0xf422('0x4'));var util=require(_0xf422('0x5'));var path=require(_0xf422('0x6'));var sox=require(_0xf422('0x7'));var csv=require(_0xf422('0x8'));var ejs=require(_0xf422('0x9'));var fs=require('fs');var fs_extra=require(_0xf422('0xa'));var _=require(_0xf422('0xb'));var squel=require('squel');var crypto=require(_0xf422('0xc'));var jsforce=require(_0xf422('0xd'));var deskjs=require(_0xf422('0xe'));var toCsv=require(_0xf422('0x8'));var querystring=require(_0xf422('0xf'));var Papa=require('papaparse');var Redis=require(_0xf422('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf422('0x11'));var hardwareService=require(_0xf422('0x12'));var logger=require(_0xf422('0x13'))(_0xf422('0x14'));var utils=require(_0xf422('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf422('0x16'));var db=require(_0xf422('0x17'))['db'];function respondWithStatusCode(_0x4d56d1,_0x133a6a){_0x133a6a=_0x133a6a||0xcc;return function(_0x8aa9cc){if(_0x8aa9cc){return _0x4d56d1[_0xf422('0x18')](_0x133a6a);}return _0x4d56d1[_0xf422('0x19')](_0x133a6a)[_0xf422('0x1a')]();};}function respondWithResult(_0x28a6a8,_0x223b21){_0x223b21=_0x223b21||0xc8;return function(_0x272430){if(_0x272430){return _0x28a6a8[_0xf422('0x19')](_0x223b21)['json'](_0x272430);}};}function respondWithFilteredResult(_0x54bb9c,_0x52f96b){return function(_0x1c81e1){if(_0x1c81e1){var _0x30b70a=typeof _0x52f96b[_0xf422('0x1b')]===_0xf422('0x1c')&&typeof _0x52f96b['limit']===_0xf422('0x1c');var _0x264964=_0x1c81e1[_0xf422('0x1d')];var _0x2ae133=_0x30b70a?0x0:_0x52f96b[_0xf422('0x1b')];var _0x29b0b1=_0x30b70a?_0x1c81e1['count']:_0x52f96b['offset']+_0x52f96b[_0xf422('0x1e')];var _0x4b657;if(_0x29b0b1>=_0x264964){_0x29b0b1=_0x264964;_0x4b657=0xc8;}else{_0x4b657=0xce;}_0x54bb9c[_0xf422('0x19')](_0x4b657);return _0x54bb9c['set'](_0xf422('0x1f'),_0x2ae133+'-'+_0x29b0b1+'/'+_0x264964)['json'](_0x1c81e1);}return null;};}function patchUpdates(_0x22afe7){return function(_0x15833b){try{jsonpatch[_0xf422('0x20')](_0x15833b,_0x22afe7,!![]);}catch(_0x4d6717){return BPromise[_0xf422('0x21')](_0x4d6717);}return _0x15833b[_0xf422('0x22')]();};}function saveUpdates(_0x511529,_0x4b80a0){return function(_0x268575){if(_0x268575){return _0x268575[_0xf422('0x23')](_0x511529)['then'](function(_0x25b6a5){return _0x25b6a5;});}return null;};}function removeEntity(_0x570ea2,_0x3b21a5){return function(_0x32ceee){if(_0x32ceee){return _0x32ceee[_0xf422('0x24')]()[_0xf422('0x25')](function(){_0x570ea2[_0xf422('0x19')](0xcc)[_0xf422('0x1a')]();});}};}function handleEntityNotFound(_0xd8d70f,_0x11d10b){return function(_0x5dcab4){if(!_0x5dcab4){_0xd8d70f[_0xf422('0x18')](0x194);}return _0x5dcab4;};}function handleError(_0x59d03d,_0x2f0f9f){_0x2f0f9f=_0x2f0f9f||0x1f4;return function(_0x7d36e7){logger[_0xf422('0x26')](_0x7d36e7[_0xf422('0x27')]);if(_0x7d36e7[_0xf422('0x28')]){delete _0x7d36e7[_0xf422('0x28')];}_0x59d03d[_0xf422('0x19')](_0x2f0f9f)['send'](_0x7d36e7);};}exports['index']=function(_0x35d1fa,_0x10d51b){var _0x266fb8={},_0x33ef63={},_0xefb99e={'count':0x0,'rows':[]};var _0x48e0c7=_[_0xf422('0x29')](db[_0xf422('0x2a')]['rawAttributes'],function(_0x5f0186){return{'name':_0x5f0186[_0xf422('0x2b')],'type':_0x5f0186['type']['key']};});_0x33ef63[_0xf422('0x2c')]=_[_0xf422('0x29')](_0x48e0c7,'name');_0x33ef63[_0xf422('0x2d')]=_[_0xf422('0x2e')](_0x35d1fa[_0xf422('0x2d')]);_0x33ef63[_0xf422('0x2f')]=_[_0xf422('0x30')](_0x33ef63['model'],_0x33ef63[_0xf422('0x2d')]);_0x266fb8['attributes']=_[_0xf422('0x30')](_0x33ef63[_0xf422('0x2c')],qs[_0xf422('0x31')](_0x35d1fa[_0xf422('0x2d')][_0xf422('0x31')]));_0x266fb8[_0xf422('0x32')]=_0x266fb8[_0xf422('0x32')]['length']?_0x266fb8['attributes']:_0x33ef63[_0xf422('0x2c')];if(!_0x35d1fa[_0xf422('0x2d')]['hasOwnProperty'](_0xf422('0x33'))){_0x266fb8[_0xf422('0x1e')]=qs[_0xf422('0x1e')](_0x35d1fa[_0xf422('0x2d')][_0xf422('0x1e')]);_0x266fb8[_0xf422('0x1b')]=qs[_0xf422('0x1b')](_0x35d1fa[_0xf422('0x2d')][_0xf422('0x1b')]);}_0x266fb8[_0xf422('0x34')]=qs[_0xf422('0x35')](_0x35d1fa[_0xf422('0x2d')][_0xf422('0x35')]);_0x266fb8[_0xf422('0x36')]=qs['filters'](_['pick'](_0x35d1fa['query'],_0x33ef63[_0xf422('0x2f')]),_0x48e0c7);if(_0x35d1fa[_0xf422('0x2d')]['filter']){_0x266fb8[_0xf422('0x36')]=_['merge'](_0x266fb8[_0xf422('0x36')],{'$or':_[_0xf422('0x29')](_0x48e0c7,function(_0x55ac68){if(_0x55ac68[_0xf422('0x37')]!==_0xf422('0x38')){var _0x174f6f={};_0x174f6f[_0x55ac68['name']]={'$like':'%'+_0x35d1fa[_0xf422('0x2d')]['filter']+'%'};return _0x174f6f;}})});}_0x266fb8=_['merge']({},_0x266fb8,_0x35d1fa['options']);var _0x112bce={'where':_0x266fb8[_0xf422('0x36')]};return db[_0xf422('0x2a')][_0xf422('0x1d')](_0x112bce)[_0xf422('0x25')](function(_0x2f82a0){_0xefb99e[_0xf422('0x1d')]=_0x2f82a0;if(_0x35d1fa[_0xf422('0x2d')]['includeAll']){_0x266fb8['include']=[{'all':!![]}];}return db[_0xf422('0x2a')][_0xf422('0x39')](_0x266fb8);})[_0xf422('0x25')](function(_0xb3955){_0xefb99e[_0xf422('0x3a')]=_0xb3955;return _0xefb99e;})[_0xf422('0x25')](respondWithFilteredResult(_0x10d51b,_0x266fb8))['catch'](handleError(_0x10d51b,null));};exports[_0xf422('0x3b')]=function(_0x4f453a,_0x17c1f2){var _0x391e3c={'raw':!![],'where':{'id':_0x4f453a[_0xf422('0x3c')]['id']}},_0x564041={};_0x564041[_0xf422('0x2c')]=_[_0xf422('0x2e')](db[_0xf422('0x2a')][_0xf422('0x3d')]);_0x564041['query']=_[_0xf422('0x2e')](_0x4f453a[_0xf422('0x2d')]);_0x564041[_0xf422('0x2f')]=_[_0xf422('0x30')](_0x564041[_0xf422('0x2c')],_0x564041['query']);_0x391e3c[_0xf422('0x32')]=_[_0xf422('0x30')](_0x564041['model'],qs[_0xf422('0x31')](_0x4f453a['query'][_0xf422('0x31')]));_0x391e3c[_0xf422('0x32')]=_0x391e3c[_0xf422('0x32')][_0xf422('0x3e')]?_0x391e3c[_0xf422('0x32')]:_0x564041[_0xf422('0x2c')];if(_0x4f453a[_0xf422('0x2d')][_0xf422('0x3f')]){_0x391e3c[_0xf422('0x40')]=[{'all':!![]}];}_0x391e3c=_[_0xf422('0x41')]({},_0x391e3c,_0x4f453a[_0xf422('0x42')]);return db[_0xf422('0x2a')][_0xf422('0x43')](_0x391e3c)[_0xf422('0x25')](handleEntityNotFound(_0x17c1f2,null))[_0xf422('0x25')](respondWithResult(_0x17c1f2,null))['catch'](handleError(_0x17c1f2,null));};exports['create']=function(_0x3c59dd,_0x2c2ce9){return db[_0xf422('0x2a')]['create'](_0x3c59dd[_0xf422('0x44')],{})[_0xf422('0x25')](respondWithResult(_0x2c2ce9,0xc9))[_0xf422('0x45')](handleError(_0x2c2ce9,null));};exports[_0xf422('0x23')]=function(_0x1f3a30,_0x259e24){if(_0x1f3a30[_0xf422('0x44')]['id']){delete _0x1f3a30['body']['id'];}return db[_0xf422('0x2a')]['find']({'where':{'id':_0x1f3a30[_0xf422('0x3c')]['id']}})[_0xf422('0x25')](handleEntityNotFound(_0x259e24,null))['then'](saveUpdates(_0x1f3a30[_0xf422('0x44')],null))[_0xf422('0x25')](respondWithResult(_0x259e24,null))[_0xf422('0x45')](handleError(_0x259e24,null));};exports[_0xf422('0x24')]=function(_0x2df71a,_0x5c3cb8){return db['FaxQueueReport'][_0xf422('0x43')]({'where':{'id':_0x2df71a['params']['id']}})[_0xf422('0x25')](handleEntityNotFound(_0x5c3cb8,null))[_0xf422('0x25')](removeEntity(_0x5c3cb8,null))[_0xf422('0x45')](handleError(_0x5c3cb8,null));};exports[_0xf422('0x46')]=function(_0x4b4de4,_0x4b8b1f){return db[_0xf422('0x2a')][_0xf422('0x46')]()[_0xf422('0x25')](respondWithResult(_0x4b8b1f,null))[_0xf422('0x45')](handleError(_0x4b8b1f,null));};
\ No newline at end of file
index be5005f..0234456 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./faxQueueReport.attributes','exports','define','report_fax_queue','uniqueid','lodash'];(function(_0x26ad45,_0x55babc){var _0x864bfd=function(_0x40883e){while(--_0x40883e){_0x26ad45['push'](_0x26ad45['shift']());}};_0x864bfd(++_0x55babc);}(_0x5fc3,0xa8));var _0x35fc=function(_0x34c063,_0x11d3d7){_0x34c063=_0x34c063-0x0;var _0x2c63a3=_0x5fc3[_0x34c063];return _0x2c63a3;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('FaxQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x53ec=['path','../../config/environment','./faxQueueReport.attributes','define','FaxQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x88c6da,_0xa6b57e){var _0x1b234d=function(_0x336c69){while(--_0x336c69){_0x88c6da['push'](_0x88c6da['shift']());}};_0x1b234d(++_0xa6b57e);}(_0x53ec,0x192));var _0xc53e=function(_0x18a529,_0x2bea53){_0x18a529=_0x18a529-0x0;var _0x216fb8=_0x53ec[_0x18a529];return _0x216fb8;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));module['exports']=function(_0x2f1414,_0x4f989b){return _0x2f1414[_0xc53e('0x9')](_0xc53e('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xc53e('0xb'),'fields':[_0xc53e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index a166600..4655df8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a0a=['catch','where','limit','UpdateFaxQueueReport','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','CreateFaxQueueReport','create','body','options','raw','debug'];(function(_0x2eb3db,_0x4a32c0){var _0x358f33=function(_0x1d0588){while(--_0x1d0588){_0x2eb3db['push'](_0x2eb3db['shift']());}};_0x358f33(++_0x4a32c0);}(_0x1a0a,0x16c));var _0xa1a0=function(_0x5cf52f,_0x2304cc){_0x5cf52f=_0x5cf52f-0x0;var _0x5b4b76=_0x1a0a[_0x5cf52f];return _0x5b4b76;};'use strict';var _=require('lodash');var util=require(_0xa1a0('0x0'));var moment=require(_0xa1a0('0x1'));var BPromise=require(_0xa1a0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa1a0('0x3'));var db=require(_0xa1a0('0x4'))['db'];var utils=require(_0xa1a0('0x5'));var logger=require(_0xa1a0('0x6'))('rpc');var config=require(_0xa1a0('0x7'));var jayson=require(_0xa1a0('0x8'));var client=jayson['client'][_0xa1a0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x64cb2a,_0x3858a1,_0x1b9cf3){return new BPromise(function(_0x1563f9,_0x50a248){return client['request'](_0x64cb2a,_0x1b9cf3)[_0xa1a0('0xa')](function(_0x39b78e){logger[_0xa1a0('0xb')](_0xa1a0('0xc'),_0x3858a1,_0xa1a0('0xd'));logger['debug'](_0xa1a0('0xe'),_0x3858a1,'request\x20sent',JSON[_0xa1a0('0xf')](_0x39b78e));if(_0x39b78e['error']){if(_0x39b78e['error'][_0xa1a0('0x10')]===0x1f4){logger[_0xa1a0('0x11')](_0xa1a0('0xc'),_0x3858a1,_0x39b78e[_0xa1a0('0x11')][_0xa1a0('0x12')]);return _0x50a248(_0x39b78e[_0xa1a0('0x11')][_0xa1a0('0x12')]);}logger[_0xa1a0('0x11')](_0xa1a0('0xc'),_0x3858a1,_0x39b78e[_0xa1a0('0x11')][_0xa1a0('0x12')]);return _0x1563f9(_0x39b78e[_0xa1a0('0x11')]['message']);}else{logger[_0xa1a0('0xb')](_0xa1a0('0xc'),_0x3858a1,_0xa1a0('0xd'));_0x1563f9(_0x39b78e[_0xa1a0('0x13')][_0xa1a0('0x12')]);}})['catch'](function(_0x2558c2){logger['error'](_0xa1a0('0xc'),_0x3858a1,_0x2558c2);_0x50a248(_0x2558c2);});});}exports[_0xa1a0('0x14')]=function(_0x3b9cd8){var _0x4ab1a0=this;return new Promise(function(_0x148a04,_0xd46dc1){return db['FaxQueueReport'][_0xa1a0('0x15')](_0x3b9cd8[_0xa1a0('0x16')],{'raw':_0x3b9cd8['options']?_0x3b9cd8[_0xa1a0('0x17')][_0xa1a0('0x18')]===undefined?!![]:![]:!![]})[_0xa1a0('0xa')](function(_0x287ee9){logger['info'](_0xa1a0('0x14'),_0x3b9cd8);logger[_0xa1a0('0x19')]('CreateFaxQueueReport',_0x3b9cd8,JSON[_0xa1a0('0xf')](_0x287ee9));_0x148a04(_0x287ee9);})[_0xa1a0('0x1a')](function(_0x423f17){logger['error'](_0xa1a0('0x14'),_0x423f17[_0xa1a0('0x12')],_0x3b9cd8);_0xd46dc1(_0x4ab1a0[_0xa1a0('0x11')](0x1f4,_0x423f17[_0xa1a0('0x12')]));});});};exports['UpdateFaxQueueReport']=function(_0x4f0b01){var _0x55395d=this;return new Promise(function(_0x3b2c6a,_0x2e58d8){return db['FaxQueueReport']['update'](_0x4f0b01[_0xa1a0('0x16')],{'raw':_0x4f0b01['options']?_0x4f0b01[_0xa1a0('0x17')][_0xa1a0('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f0b01[_0xa1a0('0x17')]?_0x4f0b01[_0xa1a0('0x17')][_0xa1a0('0x1b')]||null:null,'attributes':_0x4f0b01[_0xa1a0('0x17')]?_0x4f0b01[_0xa1a0('0x17')]['attributes']||null:null,'limit':_0x4f0b01['options']?_0x4f0b01[_0xa1a0('0x17')][_0xa1a0('0x1c')]||null:null})[_0xa1a0('0xa')](function(_0x134e57){logger['info'](_0xa1a0('0x1d'),_0x4f0b01);logger[_0xa1a0('0x19')](_0xa1a0('0x1d'),_0x4f0b01,JSON[_0xa1a0('0xf')](_0x134e57));_0x3b2c6a(_0x134e57);})[_0xa1a0('0x1a')](function(_0xb5f10e){logger[_0xa1a0('0x11')](_0xa1a0('0x1d'),_0xb5f10e['message'],_0x4f0b01);_0x2e58d8(_0x55395d[_0xa1a0('0x11')](0x1f4,_0xb5f10e[_0xa1a0('0x12')]));});});};
\ No newline at end of file
+var _0x156d=['info','FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','where','attributes','UpdateFaxQueueReport','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x46ae5a,_0x2a38d0){var _0x434986=function(_0x22735d){while(--_0x22735d){_0x46ae5a['push'](_0x46ae5a['shift']());}};_0x434986(++_0x2a38d0);}(_0x156d,0x12a));var _0xd156=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x156d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0xd156('0x0'));var moment=require('moment');var BPromise=require(_0xd156('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd156('0x2'));var db=require(_0xd156('0x3'))['db'];var utils=require(_0xd156('0x4'));var logger=require(_0xd156('0x5'))('rpc');var config=require(_0xd156('0x6'));var jayson=require(_0xd156('0x7'));var client=jayson[_0xd156('0x8')][_0xd156('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd36325,_0x49dfaf,_0x954b05){return new BPromise(function(_0x478f60,_0x4d0b43){return client[_0xd156('0xa')](_0xd36325,_0x954b05)[_0xd156('0xb')](function(_0x4c0cad){logger[_0xd156('0xc')](_0xd156('0xd'),_0x49dfaf,'request\x20sent');logger[_0xd156('0xe')](_0xd156('0xf'),_0x49dfaf,_0xd156('0x10'),JSON[_0xd156('0x11')](_0x4c0cad));if(_0x4c0cad['error']){if(_0x4c0cad[_0xd156('0x12')]['code']===0x1f4){logger[_0xd156('0x12')](_0xd156('0xd'),_0x49dfaf,_0x4c0cad['error'][_0xd156('0x13')]);return _0x4d0b43(_0x4c0cad[_0xd156('0x12')][_0xd156('0x13')]);}logger['error'](_0xd156('0xd'),_0x49dfaf,_0x4c0cad[_0xd156('0x12')][_0xd156('0x13')]);return _0x478f60(_0x4c0cad[_0xd156('0x12')]['message']);}else{logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x49dfaf,'request\x20sent');_0x478f60(_0x4c0cad[_0xd156('0x14')][_0xd156('0x13')]);}})[_0xd156('0x15')](function(_0x5b78cc){logger['error'](_0xd156('0xd'),_0x49dfaf,_0x5b78cc);_0x4d0b43(_0x5b78cc);});});}exports[_0xd156('0x16')]=function(_0x49e458){var _0x26be6d=this;return new Promise(function(_0x145827,_0x4c7731){return db[_0xd156('0x17')][_0xd156('0x18')](_0x49e458[_0xd156('0x19')],{'raw':_0x49e458[_0xd156('0x1a')]?_0x49e458[_0xd156('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xd156('0xb')](function(_0x14c874){logger[_0xd156('0xc')](_0xd156('0x16'),_0x49e458);logger['debug']('CreateFaxQueueReport',_0x49e458,JSON[_0xd156('0x11')](_0x14c874));_0x145827(_0x14c874);})[_0xd156('0x15')](function(_0x30e69e){logger['error'](_0xd156('0x16'),_0x30e69e[_0xd156('0x13')],_0x49e458);_0x4c7731(_0x26be6d[_0xd156('0x12')](0x1f4,_0x30e69e[_0xd156('0x13')]));});});};exports['UpdateFaxQueueReport']=function(_0x16c235){var _0x51cfd1=this;return new Promise(function(_0x4990d7,_0xf7a9f2){return db[_0xd156('0x17')]['update'](_0x16c235[_0xd156('0x19')],{'raw':_0x16c235[_0xd156('0x1a')]?_0x16c235[_0xd156('0x1a')][_0xd156('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16c235[_0xd156('0x1a')]?_0x16c235[_0xd156('0x1a')][_0xd156('0x1c')]||null:null,'attributes':_0x16c235['options']?_0x16c235[_0xd156('0x1a')][_0xd156('0x1d')]||null:null,'limit':_0x16c235[_0xd156('0x1a')]?_0x16c235['options']['limit']||null:null})[_0xd156('0xb')](function(_0x28493e){logger['info'](_0xd156('0x1e'),_0x16c235);logger[_0xd156('0xe')](_0xd156('0x1e'),_0x16c235,JSON[_0xd156('0x11')](_0x28493e));_0x4990d7(_0x28493e);})['catch'](function(_0x559b9e){logger[_0xd156('0x12')](_0xd156('0x1e'),_0x559b9e[_0xd156('0x13')],_0x16c235);_0xf7a9f2(_0x51cfd1['error'](0x1f4,_0x559b9e[_0xd156('0x13')]));});});};
\ No newline at end of file
index 98f2017..d5a4ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d75=['isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','index','/describe'];(function(_0xb74c95,_0x4e1613){var _0x2f4f6b=function(_0x27bd8d){while(--_0x27bd8d){_0xb74c95['push'](_0xb74c95['shift']());}};_0x2f4f6b(++_0x4e1613);}(_0x4d75,0x18b));var _0x54d7=function(_0xdc17b3,_0x1fffdf){_0xdc17b3=_0xdc17b3-0x0;var _0x5026b4=_0x4d75[_0xdc17b3];return _0x5026b4;};'use strict';var multer=require(_0x54d7('0x0'));var util=require(_0x54d7('0x1'));var path=require(_0x54d7('0x2'));var timeout=require(_0x54d7('0x3'));var express=require(_0x54d7('0x4'));var router=express['Router']();var fs_extra=require(_0x54d7('0x5'));var auth=require(_0x54d7('0x6'));var interaction=require(_0x54d7('0x7'));var config=require(_0x54d7('0x8'));var controller=require(_0x54d7('0x9'));router[_0x54d7('0xa')]('/',auth['isAuthenticated'](),controller[_0x54d7('0xb')]);router['get'](_0x54d7('0xc'),auth[_0x54d7('0xd')](),controller[_0x54d7('0xe')]);router['get'](_0x54d7('0xf'),auth[_0x54d7('0xd')](),controller[_0x54d7('0x10')]);router[_0x54d7('0x11')]('/',auth[_0x54d7('0xd')](),controller[_0x54d7('0x12')]);router[_0x54d7('0x13')]('/:id',auth[_0x54d7('0xd')](),controller[_0x54d7('0x14')]);router[_0x54d7('0x15')](_0x54d7('0xf'),auth['isAuthenticated'](),controller[_0x54d7('0x16')]);module[_0x54d7('0x17')]=router;
\ No newline at end of file
+var _0xd62f=['create','update','delete','/:id','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','post'];(function(_0x36d8d9,_0x17b58a){var _0x1ac3a2=function(_0x392196){while(--_0x392196){_0x36d8d9['push'](_0x36d8d9['shift']());}};_0x1ac3a2(++_0x17b58a);}(_0xd62f,0x1a8));var _0xfd62=function(_0x400b8f,_0x160b91){_0x400b8f=_0x400b8f-0x0;var _0x50d48d=_0xd62f[_0x400b8f];return _0x50d48d;};'use strict';var multer=require(_0xfd62('0x0'));var util=require('util');var path=require(_0xfd62('0x1'));var timeout=require(_0xfd62('0x2'));var express=require(_0xfd62('0x3'));var router=express[_0xfd62('0x4')]();var fs_extra=require(_0xfd62('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xfd62('0x6'));var config=require(_0xfd62('0x7'));var controller=require(_0xfd62('0x8'));router[_0xfd62('0x9')]('/',auth[_0xfd62('0xa')](),controller[_0xfd62('0xb')]);router['get'](_0xfd62('0xc'),auth[_0xfd62('0xa')](),controller[_0xfd62('0xd')]);router[_0xfd62('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xfd62('0xe')]);router[_0xfd62('0xf')]('/',auth[_0xfd62('0xa')](),controller[_0xfd62('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xfd62('0x11')]);router[_0xfd62('0x12')](_0xfd62('0x13'),auth['isAuthenticated'](),controller[_0xfd62('0x14')]);module[_0xfd62('0x15')]=router;
\ No newline at end of file
index 2e4518d..25d7e5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x49f368,_0xf070e2){var _0x3923f3=function(_0x5a313a){while(--_0x5a313a){_0x49f368['push'](_0x49f368['shift']());}};_0x3923f3(++_0xf070e2);}(_0x9c44,0x178));var _0x49c4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x9c44[_0x2d7f0e];return _0x110b07;};'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 _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x35de8a,_0x35346e){var _0x2ac42f=function(_0x6ca2fc){while(--_0x6ca2fc){_0x35de8a['push'](_0x35de8a['shift']());}};_0x2ac42f(++_0x35346e);}(_0xaa88,0x137));var _0x8aa8=function(_0x19b84f,_0x48765e){_0x19b84f=_0x19b84f-0x0;var _0x18067b=_0xaa88[_0x19b84f];return _0x18067b;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index 3da36ea..f6a7b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6696=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','options','FaxTransferReport','count','includeAll','include','rows','catch','params','merge','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x6696,0x107));var _0x6669=function(_0x3afe18,_0x26922c){_0x3afe18=_0x3afe18-0x0;var _0x19ed1f=_0x6696[_0x3afe18];return _0x19ed1f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6669('0x0'));var zipdir=require(_0x6669('0x1'));var jsonpatch=require(_0x6669('0x2'));var rp=require('request-promise');var moment=require(_0x6669('0x3'));var BPromise=require(_0x6669('0x4'));var Mustache=require(_0x6669('0x5'));var util=require(_0x6669('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6669('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6669('0x8'));var _=require(_0x6669('0x9'));var squel=require(_0x6669('0xa'));var crypto=require(_0x6669('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6669('0x7'));var querystring=require(_0x6669('0xc'));var Papa=require(_0x6669('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6669('0xe'));var as=require(_0x6669('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6669('0x10'));var utils=require('../../config/utils');var config=require(_0x6669('0x11'));var licenseUtil=require(_0x6669('0x12'));var db=require(_0x6669('0x13'))['db'];function respondWithStatusCode(_0x89a34e,_0x59d997){_0x59d997=_0x59d997||0xcc;return function(_0x41787b){if(_0x41787b){return _0x89a34e[_0x6669('0x14')](_0x59d997);}return _0x89a34e[_0x6669('0x15')](_0x59d997)[_0x6669('0x16')]();};}function respondWithResult(_0x25386e,_0x24ffa9){_0x24ffa9=_0x24ffa9||0xc8;return function(_0x2754cd){if(_0x2754cd){return _0x25386e[_0x6669('0x15')](_0x24ffa9)[_0x6669('0x17')](_0x2754cd);}};}function respondWithFilteredResult(_0xe65dde,_0x495864){return function(_0x1d4be0){if(_0x1d4be0){var _0x36f16c=typeof _0x495864['offset']===_0x6669('0x18')&&typeof _0x495864['limit']==='undefined';var _0x515db9=_0x1d4be0['count'];var _0x3264f7=_0x36f16c?0x0:_0x495864[_0x6669('0x19')];var _0x3183c9=_0x36f16c?_0x1d4be0['count']:_0x495864[_0x6669('0x19')]+_0x495864['limit'];var _0x41008a;if(_0x3183c9>=_0x515db9){_0x3183c9=_0x515db9;_0x41008a=0xc8;}else{_0x41008a=0xce;}_0xe65dde[_0x6669('0x15')](_0x41008a);return _0xe65dde[_0x6669('0x1a')](_0x6669('0x1b'),_0x3264f7+'-'+_0x3183c9+'/'+_0x515db9)[_0x6669('0x17')](_0x1d4be0);}return null;};}function patchUpdates(_0x46ea60){return function(_0x16de8d){try{jsonpatch[_0x6669('0x1c')](_0x16de8d,_0x46ea60,!![]);}catch(_0x3477d4){return BPromise[_0x6669('0x1d')](_0x3477d4);}return _0x16de8d[_0x6669('0x1e')]();};}function saveUpdates(_0x29de68,_0x1196e5){return function(_0x6fdf64){if(_0x6fdf64){return _0x6fdf64[_0x6669('0x1f')](_0x29de68)[_0x6669('0x20')](function(_0x592d08){return _0x592d08;});}return null;};}function removeEntity(_0x2a9578,_0x417196){return function(_0x2ec89f){if(_0x2ec89f){return _0x2ec89f[_0x6669('0x21')]()[_0x6669('0x20')](function(){_0x2a9578[_0x6669('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b4e48,_0x3e957c){return function(_0x28419c){if(!_0x28419c){_0x2b4e48[_0x6669('0x14')](0x194);}return _0x28419c;};}function handleError(_0x591875,_0x3b8078){_0x3b8078=_0x3b8078||0x1f4;return function(_0x14f72f){logger[_0x6669('0x22')](_0x14f72f[_0x6669('0x23')]);if(_0x14f72f[_0x6669('0x24')]){delete _0x14f72f[_0x6669('0x24')];}_0x591875[_0x6669('0x15')](_0x3b8078)[_0x6669('0x25')](_0x14f72f);};}exports['index']=function(_0x2a5863,_0x1b60d0){var _0x2f413d={},_0x4787cb={},_0x4fd6ac={'count':0x0,'rows':[]};var _0x1d9de5=_[_0x6669('0x26')](db['FaxTransferReport'][_0x6669('0x27')],function(_0x1c42b9){return{'name':_0x1c42b9[_0x6669('0x28')],'type':_0x1c42b9[_0x6669('0x29')]['key']};});_0x4787cb['model']=_[_0x6669('0x26')](_0x1d9de5,_0x6669('0x24'));_0x4787cb[_0x6669('0x2a')]=_[_0x6669('0x2b')](_0x2a5863[_0x6669('0x2a')]);_0x4787cb[_0x6669('0x2c')]=_[_0x6669('0x2d')](_0x4787cb[_0x6669('0x2e')],_0x4787cb['query']);_0x2f413d[_0x6669('0x2f')]=_[_0x6669('0x2d')](_0x4787cb['model'],qs[_0x6669('0x30')](_0x2a5863[_0x6669('0x2a')][_0x6669('0x30')]));_0x2f413d[_0x6669('0x2f')]=_0x2f413d[_0x6669('0x2f')][_0x6669('0x31')]?_0x2f413d['attributes']:_0x4787cb[_0x6669('0x2e')];if(!_0x2a5863[_0x6669('0x2a')][_0x6669('0x32')](_0x6669('0x33'))){_0x2f413d['limit']=qs[_0x6669('0x34')](_0x2a5863[_0x6669('0x2a')][_0x6669('0x34')]);_0x2f413d[_0x6669('0x19')]=qs[_0x6669('0x19')](_0x2a5863[_0x6669('0x2a')][_0x6669('0x19')]);}_0x2f413d[_0x6669('0x35')]=qs[_0x6669('0x36')](_0x2a5863[_0x6669('0x2a')]['sort']);_0x2f413d[_0x6669('0x37')]=qs[_0x6669('0x2c')](_['pick'](_0x2a5863['query'],_0x4787cb[_0x6669('0x2c')]),_0x1d9de5);if(_0x2a5863[_0x6669('0x2a')][_0x6669('0x38')]){_0x2f413d[_0x6669('0x37')]=_['merge'](_0x2f413d[_0x6669('0x37')],{'$or':_[_0x6669('0x26')](_0x1d9de5,function(_0x243605){if(_0x243605[_0x6669('0x29')]!=='VIRTUAL'){var _0x28e4be={};_0x28e4be[_0x243605['name']]={'$like':'%'+_0x2a5863[_0x6669('0x2a')][_0x6669('0x38')]+'%'};return _0x28e4be;}})});}_0x2f413d=_['merge']({},_0x2f413d,_0x2a5863[_0x6669('0x39')]);var _0xb9b58={'where':_0x2f413d[_0x6669('0x37')]};return db[_0x6669('0x3a')][_0x6669('0x3b')](_0xb9b58)[_0x6669('0x20')](function(_0xa9eb47){_0x4fd6ac[_0x6669('0x3b')]=_0xa9eb47;if(_0x2a5863[_0x6669('0x2a')][_0x6669('0x3c')]){_0x2f413d[_0x6669('0x3d')]=[{'all':!![]}];}return db[_0x6669('0x3a')]['findAll'](_0x2f413d);})[_0x6669('0x20')](function(_0x58a1de){_0x4fd6ac[_0x6669('0x3e')]=_0x58a1de;return _0x4fd6ac;})[_0x6669('0x20')](respondWithFilteredResult(_0x1b60d0,_0x2f413d))[_0x6669('0x3f')](handleError(_0x1b60d0,null));};exports['show']=function(_0xddda94,_0x4b22e7){var _0x35386d={'raw':!![],'where':{'id':_0xddda94[_0x6669('0x40')]['id']}},_0x4cf5a7={};_0x4cf5a7[_0x6669('0x2e')]=_['keys'](db['FaxTransferReport'][_0x6669('0x27')]);_0x4cf5a7[_0x6669('0x2a')]=_[_0x6669('0x2b')](_0xddda94[_0x6669('0x2a')]);_0x4cf5a7['filters']=_['intersection'](_0x4cf5a7[_0x6669('0x2e')],_0x4cf5a7['query']);_0x35386d[_0x6669('0x2f')]=_['intersection'](_0x4cf5a7[_0x6669('0x2e')],qs[_0x6669('0x30')](_0xddda94['query']['fields']));_0x35386d[_0x6669('0x2f')]=_0x35386d['attributes']['length']?_0x35386d['attributes']:_0x4cf5a7[_0x6669('0x2e')];if(_0xddda94['query']['includeAll']){_0x35386d[_0x6669('0x3d')]=[{'all':!![]}];}_0x35386d=_[_0x6669('0x41')]({},_0x35386d,_0xddda94['options']);return db[_0x6669('0x3a')][_0x6669('0x42')](_0x35386d)[_0x6669('0x20')](handleEntityNotFound(_0x4b22e7,null))['then'](respondWithResult(_0x4b22e7,null))[_0x6669('0x3f')](handleError(_0x4b22e7,null));};exports[_0x6669('0x43')]=function(_0x27f83e,_0xde13a7){return db[_0x6669('0x3a')][_0x6669('0x43')](_0x27f83e['body'],{})[_0x6669('0x20')](respondWithResult(_0xde13a7,0xc9))['catch'](handleError(_0xde13a7,null));};exports[_0x6669('0x1f')]=function(_0x342a3b,_0x256a78){if(_0x342a3b['body']['id']){delete _0x342a3b[_0x6669('0x44')]['id'];}return db['FaxTransferReport'][_0x6669('0x42')]({'where':{'id':_0x342a3b[_0x6669('0x40')]['id']}})[_0x6669('0x20')](handleEntityNotFound(_0x256a78,null))[_0x6669('0x20')](saveUpdates(_0x342a3b[_0x6669('0x44')],null))[_0x6669('0x20')](respondWithResult(_0x256a78,null))[_0x6669('0x3f')](handleError(_0x256a78,null));};exports[_0x6669('0x21')]=function(_0x4c5a8f,_0x573f8e){return db['FaxTransferReport']['find']({'where':{'id':_0x4c5a8f[_0x6669('0x40')]['id']}})[_0x6669('0x20')](handleEntityNotFound(_0x573f8e,null))[_0x6669('0x20')](removeEntity(_0x573f8e,null))[_0x6669('0x3f')](handleError(_0x573f8e,null));};exports[_0x6669('0x45')]=function(_0x3a5fff,_0x38fc1a){return db['FaxTransferReport']['describe']()[_0x6669('0x20')](respondWithResult(_0x38fc1a,null))[_0x6669('0x3f')](handleError(_0x38fc1a,null));};
\ No newline at end of file
+var _0xf5b9=['name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','findAll','rows','catch','show','keys','includeAll','include','create','body','update','find','params','describe','eml-format','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','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','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','end','error','stack'];(function(_0x86c6cb,_0x30bb53){var _0x1b1592=function(_0x19e1c9){while(--_0x19e1c9){_0x86c6cb['push'](_0x86c6cb['shift']());}};_0x1b1592(++_0x30bb53);}(_0xf5b9,0x106));var _0x9f5b=function(_0x534907,_0x455d91){_0x534907=_0x534907-0x0;var _0x1d775e=_0xf5b9[_0x534907];return _0x1d775e;};'use strict';var emlformat=require(_0x9f5b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9f5b('0x1'));var rp=require('request-promise');var moment=require(_0x9f5b('0x2'));var BPromise=require(_0x9f5b('0x3'));var Mustache=require(_0x9f5b('0x4'));var util=require(_0x9f5b('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x9f5b('0x6'));var ejs=require(_0x9f5b('0x7'));var fs=require('fs');var fs_extra=require(_0x9f5b('0x8'));var _=require(_0x9f5b('0x9'));var squel=require('squel');var crypto=require(_0x9f5b('0xa'));var jsforce=require(_0x9f5b('0xb'));var deskjs=require(_0x9f5b('0xc'));var toCsv=require(_0x9f5b('0x6'));var querystring=require(_0x9f5b('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9f5b('0xe'));var qs=require(_0x9f5b('0xf'));var as=require(_0x9f5b('0x10'));var hardwareService=require(_0x9f5b('0x11'));var logger=require('../../config/logger')(_0x9f5b('0x12'));var utils=require(_0x9f5b('0x13'));var config=require(_0x9f5b('0x14'));var licenseUtil=require(_0x9f5b('0x15'));var db=require(_0x9f5b('0x16'))['db'];function respondWithStatusCode(_0x11a266,_0x3513e6){_0x3513e6=_0x3513e6||0xcc;return function(_0x535a9b){if(_0x535a9b){return _0x11a266[_0x9f5b('0x17')](_0x3513e6);}return _0x11a266[_0x9f5b('0x18')](_0x3513e6)['end']();};}function respondWithResult(_0x5b7d78,_0x2aeb8c){_0x2aeb8c=_0x2aeb8c||0xc8;return function(_0x219866){if(_0x219866){return _0x5b7d78[_0x9f5b('0x18')](_0x2aeb8c)['json'](_0x219866);}};}function respondWithFilteredResult(_0x61497d,_0x5ced5c){return function(_0x426928){if(_0x426928){var _0x5e8911=typeof _0x5ced5c[_0x9f5b('0x19')]===_0x9f5b('0x1a')&&typeof _0x5ced5c[_0x9f5b('0x1b')]===_0x9f5b('0x1a');var _0xe565ba=_0x426928['count'];var _0x27944a=_0x5e8911?0x0:_0x5ced5c['offset'];var _0x6a44e6=_0x5e8911?_0x426928[_0x9f5b('0x1c')]:_0x5ced5c[_0x9f5b('0x19')]+_0x5ced5c[_0x9f5b('0x1b')];var _0x4538bc;if(_0x6a44e6>=_0xe565ba){_0x6a44e6=_0xe565ba;_0x4538bc=0xc8;}else{_0x4538bc=0xce;}_0x61497d[_0x9f5b('0x18')](_0x4538bc);return _0x61497d[_0x9f5b('0x1d')](_0x9f5b('0x1e'),_0x27944a+'-'+_0x6a44e6+'/'+_0xe565ba)['json'](_0x426928);}return null;};}function patchUpdates(_0x4aaa76){return function(_0x596c2e){try{jsonpatch[_0x9f5b('0x1f')](_0x596c2e,_0x4aaa76,!![]);}catch(_0x25db8d){return BPromise['reject'](_0x25db8d);}return _0x596c2e[_0x9f5b('0x20')]();};}function saveUpdates(_0x11ef5d,_0x5ecfdf){return function(_0x2039c5){if(_0x2039c5){return _0x2039c5['update'](_0x11ef5d)['then'](function(_0x100028){return _0x100028;});}return null;};}function removeEntity(_0x3f3042,_0x1b775a){return function(_0x15df0d){if(_0x15df0d){return _0x15df0d[_0x9f5b('0x21')]()[_0x9f5b('0x22')](function(){_0x3f3042[_0x9f5b('0x18')](0xcc)[_0x9f5b('0x23')]();});}};}function handleEntityNotFound(_0x5b8c85,_0x487bd5){return function(_0x13f9bb){if(!_0x13f9bb){_0x5b8c85[_0x9f5b('0x17')](0x194);}return _0x13f9bb;};}function handleError(_0x118d8d,_0x2acc33){_0x2acc33=_0x2acc33||0x1f4;return function(_0xb63db){logger[_0x9f5b('0x24')](_0xb63db[_0x9f5b('0x25')]);if(_0xb63db[_0x9f5b('0x26')]){delete _0xb63db[_0x9f5b('0x26')];}_0x118d8d['status'](_0x2acc33)[_0x9f5b('0x27')](_0xb63db);};}exports[_0x9f5b('0x28')]=function(_0x11efcc,_0x23d684){var _0x40e70b={},_0x59ef34={},_0x51675c={'count':0x0,'rows':[]};var _0x2f2552=_[_0x9f5b('0x29')](db[_0x9f5b('0x2a')][_0x9f5b('0x2b')],function(_0x301e9d){return{'name':_0x301e9d[_0x9f5b('0x2c')],'type':_0x301e9d[_0x9f5b('0x2d')][_0x9f5b('0x2e')]};});_0x59ef34[_0x9f5b('0x2f')]=_[_0x9f5b('0x29')](_0x2f2552,_0x9f5b('0x26'));_0x59ef34[_0x9f5b('0x30')]=_['keys'](_0x11efcc['query']);_0x59ef34[_0x9f5b('0x31')]=_['intersection'](_0x59ef34[_0x9f5b('0x2f')],_0x59ef34[_0x9f5b('0x30')]);_0x40e70b[_0x9f5b('0x32')]=_[_0x9f5b('0x33')](_0x59ef34[_0x9f5b('0x2f')],qs['fields'](_0x11efcc['query'][_0x9f5b('0x34')]));_0x40e70b[_0x9f5b('0x32')]=_0x40e70b[_0x9f5b('0x32')][_0x9f5b('0x35')]?_0x40e70b['attributes']:_0x59ef34['model'];if(!_0x11efcc[_0x9f5b('0x30')]['hasOwnProperty'](_0x9f5b('0x36'))){_0x40e70b[_0x9f5b('0x1b')]=qs[_0x9f5b('0x1b')](_0x11efcc['query'][_0x9f5b('0x1b')]);_0x40e70b[_0x9f5b('0x19')]=qs[_0x9f5b('0x19')](_0x11efcc[_0x9f5b('0x30')][_0x9f5b('0x19')]);}_0x40e70b[_0x9f5b('0x37')]=qs[_0x9f5b('0x38')](_0x11efcc['query'][_0x9f5b('0x38')]);_0x40e70b[_0x9f5b('0x39')]=qs[_0x9f5b('0x31')](_[_0x9f5b('0x3a')](_0x11efcc[_0x9f5b('0x30')],_0x59ef34[_0x9f5b('0x31')]),_0x2f2552);if(_0x11efcc['query']['filter']){_0x40e70b[_0x9f5b('0x39')]=_[_0x9f5b('0x3b')](_0x40e70b[_0x9f5b('0x39')],{'$or':_[_0x9f5b('0x29')](_0x2f2552,function(_0x1dc451){if(_0x1dc451[_0x9f5b('0x2d')]!==_0x9f5b('0x3c')){var _0x2413aa={};_0x2413aa[_0x1dc451[_0x9f5b('0x26')]]={'$like':'%'+_0x11efcc[_0x9f5b('0x30')]['filter']+'%'};return _0x2413aa;}})});}_0x40e70b=_[_0x9f5b('0x3b')]({},_0x40e70b,_0x11efcc[_0x9f5b('0x3d')]);var _0x5b2488={'where':_0x40e70b[_0x9f5b('0x39')]};return db[_0x9f5b('0x2a')][_0x9f5b('0x1c')](_0x5b2488)['then'](function(_0x36240a){_0x51675c[_0x9f5b('0x1c')]=_0x36240a;if(_0x11efcc[_0x9f5b('0x30')]['includeAll']){_0x40e70b['include']=[{'all':!![]}];}return db[_0x9f5b('0x2a')][_0x9f5b('0x3e')](_0x40e70b);})[_0x9f5b('0x22')](function(_0x452ffd){_0x51675c[_0x9f5b('0x3f')]=_0x452ffd;return _0x51675c;})[_0x9f5b('0x22')](respondWithFilteredResult(_0x23d684,_0x40e70b))[_0x9f5b('0x40')](handleError(_0x23d684,null));};exports[_0x9f5b('0x41')]=function(_0x2e5447,_0xb5a42e){var _0x29fe2c={'raw':!![],'where':{'id':_0x2e5447['params']['id']}},_0x109da2={};_0x109da2[_0x9f5b('0x2f')]=_['keys'](db['FaxTransferReport'][_0x9f5b('0x2b')]);_0x109da2[_0x9f5b('0x30')]=_[_0x9f5b('0x42')](_0x2e5447[_0x9f5b('0x30')]);_0x109da2[_0x9f5b('0x31')]=_[_0x9f5b('0x33')](_0x109da2[_0x9f5b('0x2f')],_0x109da2[_0x9f5b('0x30')]);_0x29fe2c[_0x9f5b('0x32')]=_[_0x9f5b('0x33')](_0x109da2[_0x9f5b('0x2f')],qs['fields'](_0x2e5447['query'][_0x9f5b('0x34')]));_0x29fe2c['attributes']=_0x29fe2c[_0x9f5b('0x32')]['length']?_0x29fe2c[_0x9f5b('0x32')]:_0x109da2['model'];if(_0x2e5447[_0x9f5b('0x30')][_0x9f5b('0x43')]){_0x29fe2c[_0x9f5b('0x44')]=[{'all':!![]}];}_0x29fe2c=_[_0x9f5b('0x3b')]({},_0x29fe2c,_0x2e5447[_0x9f5b('0x3d')]);return db['FaxTransferReport']['find'](_0x29fe2c)['then'](handleEntityNotFound(_0xb5a42e,null))[_0x9f5b('0x22')](respondWithResult(_0xb5a42e,null))['catch'](handleError(_0xb5a42e,null));};exports[_0x9f5b('0x45')]=function(_0x4937e9,_0x4eb55d){return db[_0x9f5b('0x2a')][_0x9f5b('0x45')](_0x4937e9[_0x9f5b('0x46')],{})[_0x9f5b('0x22')](respondWithResult(_0x4eb55d,0xc9))[_0x9f5b('0x40')](handleError(_0x4eb55d,null));};exports[_0x9f5b('0x47')]=function(_0x3b2c0c,_0x2cef93){if(_0x3b2c0c['body']['id']){delete _0x3b2c0c[_0x9f5b('0x46')]['id'];}return db[_0x9f5b('0x2a')][_0x9f5b('0x48')]({'where':{'id':_0x3b2c0c[_0x9f5b('0x49')]['id']}})[_0x9f5b('0x22')](handleEntityNotFound(_0x2cef93,null))['then'](saveUpdates(_0x3b2c0c[_0x9f5b('0x46')],null))[_0x9f5b('0x22')](respondWithResult(_0x2cef93,null))[_0x9f5b('0x40')](handleError(_0x2cef93,null));};exports['destroy']=function(_0x1aea6d,_0x3826d3){return db[_0x9f5b('0x2a')][_0x9f5b('0x48')]({'where':{'id':_0x1aea6d[_0x9f5b('0x49')]['id']}})['then'](handleEntityNotFound(_0x3826d3,null))[_0x9f5b('0x22')](removeEntity(_0x3826d3,null))['catch'](handleError(_0x3826d3,null));};exports[_0x9f5b('0x4a')]=function(_0x5a4fc9,_0x3fd739){return db[_0x9f5b('0x2a')]['describe']()[_0x9f5b('0x22')](respondWithResult(_0x3fd739,null))[_0x9f5b('0x40')](handleError(_0x3fd739,null));};
\ No newline at end of file
index 9819d32..1fdd562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ff=['./faxTransferReport.attributes','exports','define','FaxTransferReport','uniqueid','lodash','../../config/logger','api','request-promise'];(function(_0x1ff58e,_0x59883f){var _0x365452=function(_0x4c1f95){while(--_0x4c1f95){_0x1ff58e['push'](_0x1ff58e['shift']());}};_0x365452(++_0x59883f);}(_0xa1ff,0x101));var _0xfa1f=function(_0x4bce4d,_0x4d5dfd){_0x4bce4d=_0x4bce4d-0x0;var _0xfa7800=_0xa1ff[_0x4bce4d];return _0xfa7800;};'use strict';var _=require(_0xfa1f('0x0'));var util=require('util');var logger=require(_0xfa1f('0x1'))(_0xfa1f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfa1f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xfa1f('0x4'));module[_0xfa1f('0x5')]=function(_0x21fb42,_0x2c31a9){return _0x21fb42[_0xfa1f('0x6')](_0xfa1f('0x7'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0xfa1f('0x8'),'fields':[_0xfa1f('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xea35=['bluebird','request-promise','path','rimraf','./faxTransferReport.attributes','exports','define','report_fax_transfer','uniqueid','lodash','util','../../config/logger','moment'];(function(_0x4d90ec,_0xda482b){var _0x2eca10=function(_0x3ea9d5){while(--_0x3ea9d5){_0x4d90ec['push'](_0x4d90ec['shift']());}};_0x2eca10(++_0xda482b);}(_0xea35,0x11a));var _0x5ea3=function(_0x3bd05b,_0x586c38){_0x3bd05b=_0x3bd05b-0x0;var _0x22274f=_0xea35[_0x3bd05b];return _0x22274f;};'use strict';var _=require(_0x5ea3('0x0'));var util=require(_0x5ea3('0x1'));var logger=require(_0x5ea3('0x2'))('api');var moment=require(_0x5ea3('0x3'));var BPromise=require(_0x5ea3('0x4'));var rp=require(_0x5ea3('0x5'));var fs=require('fs');var path=require(_0x5ea3('0x6'));var rimraf=require(_0x5ea3('0x7'));var config=require('../../config/environment');var attributes=require(_0x5ea3('0x8'));module[_0x5ea3('0x9')]=function(_0x29f582,_0x12ed4c){return _0x29f582[_0x5ea3('0xa')]('FaxTransferReport',attributes,{'tableName':_0x5ea3('0xb'),'paranoid':![],'indexes':[{'name':_0x5ea3('0xc'),'fields':[_0x5ea3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 7787729..6f6046e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x900c=['error','code','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x900c,0xa4));var _0xc900=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x900c[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc900('0x0'));var util=require(_0xc900('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc900('0x2'));var fs=require('fs');var Redis=require(_0xc900('0x3'));var db=require(_0xc900('0x4'))['db'];var utils=require(_0xc900('0x5'));var logger=require(_0xc900('0x6'))(_0xc900('0x7'));var config=require('../../config/environment');var jayson=require(_0xc900('0x8'));var client=jayson['client'][_0xc900('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13de07,_0x109c65,_0xd9679e){return new BPromise(function(_0x446e07,_0x8cd1e2){return client['request'](_0x13de07,_0xd9679e)['then'](function(_0x4897f9){logger[_0xc900('0xa')](_0xc900('0xb'),_0x109c65,_0xc900('0xc'));logger[_0xc900('0xd')](_0xc900('0xe'),_0x109c65,_0xc900('0xc'),JSON[_0xc900('0xf')](_0x4897f9));if(_0x4897f9[_0xc900('0x10')]){if(_0x4897f9[_0xc900('0x10')][_0xc900('0x11')]===0x1f4){logger[_0xc900('0x10')](_0xc900('0xb'),_0x109c65,_0x4897f9[_0xc900('0x10')][_0xc900('0x12')]);return _0x8cd1e2(_0x4897f9[_0xc900('0x10')]['message']);}logger['error'](_0xc900('0xb'),_0x109c65,_0x4897f9[_0xc900('0x10')][_0xc900('0x12')]);return _0x446e07(_0x4897f9[_0xc900('0x10')][_0xc900('0x12')]);}else{logger['info'](_0xc900('0xb'),_0x109c65,_0xc900('0xc'));_0x446e07(_0x4897f9['result'][_0xc900('0x12')]);}})[_0xc900('0x13')](function(_0x1fbd15){logger[_0xc900('0x10')](_0xc900('0xb'),_0x109c65,_0x1fbd15);_0x8cd1e2(_0x1fbd15);});});}
\ No newline at end of file
+var _0x1b57=['util','moment','randomstring','../../config/logger','rpc','client','request','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0xb60674,_0xa4e08a){var _0x2514a0=function(_0x5bfc26){while(--_0x5bfc26){_0xb60674['push'](_0xb60674['shift']());}};_0x2514a0(++_0xa4e08a);}(_0x1b57,0xe0));var _0x71b5=function(_0x2c0208,_0x15e3ae){_0x2c0208=_0x2c0208-0x0;var _0x57d973=_0x1b57[_0x2c0208];return _0x57d973;};'use strict';var _=require('lodash');var util=require(_0x71b5('0x0'));var moment=require(_0x71b5('0x1'));var BPromise=require('bluebird');var rs=require(_0x71b5('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x71b5('0x3'))(_0x71b5('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x71b5('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x40c119,_0x3c6926,_0xdd680a){return new BPromise(function(_0x19cd6a,_0x5884be){return client[_0x71b5('0x6')](_0x40c119,_0xdd680a)['then'](function(_0x8252a3){logger[_0x71b5('0x7')](_0x71b5('0x8'),_0x3c6926,_0x71b5('0x9'));logger['debug'](_0x71b5('0xa'),_0x3c6926,_0x71b5('0x9'),JSON[_0x71b5('0xb')](_0x8252a3));if(_0x8252a3['error']){if(_0x8252a3[_0x71b5('0xc')][_0x71b5('0xd')]===0x1f4){logger[_0x71b5('0xc')](_0x71b5('0x8'),_0x3c6926,_0x8252a3[_0x71b5('0xc')][_0x71b5('0xe')]);return _0x5884be(_0x8252a3[_0x71b5('0xc')][_0x71b5('0xe')]);}logger[_0x71b5('0xc')](_0x71b5('0x8'),_0x3c6926,_0x8252a3[_0x71b5('0xc')][_0x71b5('0xe')]);return _0x19cd6a(_0x8252a3[_0x71b5('0xc')][_0x71b5('0xe')]);}else{logger[_0x71b5('0x7')]('FaxTransferReport,\x20%s,\x20%s',_0x3c6926,_0x71b5('0x9'));_0x19cd6a(_0x8252a3['result'][_0x71b5('0xe')]);}})[_0x71b5('0xf')](function(_0x595dbd){logger[_0x71b5('0xc')](_0x71b5('0x8'),_0x3c6926,_0x595dbd);_0x5884be(_0x595dbd);});});}
\ No newline at end of file
index bafdb76..882f666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc307=['../../config/environment','./faxTransferReport.controller','get','isAuthenticated','show','post','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3d22fa,_0x4612af){var _0x312f6f=function(_0x321223){while(--_0x321223){_0x3d22fa['push'](_0x3d22fa['shift']());}};_0x312f6f(++_0x4612af);}(_0xc307,0x1c1));var _0x7c30=function(_0x4974e4,_0xb65336){_0x4974e4=_0x4974e4-0x0;var _0x38a8e1=_0xc307[_0x4974e4];return _0x38a8e1;};'use strict';var multer=require(_0x7c30('0x0'));var util=require(_0x7c30('0x1'));var path=require('path');var timeout=require(_0x7c30('0x2'));var express=require(_0x7c30('0x3'));var router=express[_0x7c30('0x4')]();var fs_extra=require(_0x7c30('0x5'));var auth=require(_0x7c30('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7c30('0x7'));var controller=require(_0x7c30('0x8'));router[_0x7c30('0x9')]('/',auth[_0x7c30('0xa')](),controller['index']);router[_0x7c30('0x9')]('/describe',auth[_0x7c30('0xa')](),controller['describe']);router[_0x7c30('0x9')]('/:id',auth[_0x7c30('0xa')](),controller[_0x7c30('0xb')]);router[_0x7c30('0xc')]('/',auth[_0x7c30('0xa')](),controller[_0x7c30('0xd')]);router['put'](_0x7c30('0xe'),auth[_0x7c30('0xa')](),controller[_0x7c30('0xf')]);router[_0x7c30('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x7c30('0x11')]);module[_0x7c30('0x12')]=router;
\ No newline at end of file
+var _0x0d8c=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','/:id','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x51935e,_0x575bdc){var _0x4fc584=function(_0xae3f00){while(--_0xae3f00){_0x51935e['push'](_0x51935e['shift']());}};_0x4fc584(++_0x575bdc);}(_0x0d8c,0x1d3));var _0xc0d8=function(_0xad39e5,_0x12a222){_0xad39e5=_0xad39e5-0x0;var _0xdf003d=_0x0d8c[_0xad39e5];return _0xdf003d;};'use strict';var multer=require(_0xc0d8('0x0'));var util=require(_0xc0d8('0x1'));var path=require(_0xc0d8('0x2'));var timeout=require(_0xc0d8('0x3'));var express=require(_0xc0d8('0x4'));var router=express[_0xc0d8('0x5')]();var fs_extra=require(_0xc0d8('0x6'));var auth=require(_0xc0d8('0x7'));var interaction=require(_0xc0d8('0x8'));var config=require(_0xc0d8('0x9'));var controller=require('./faxTransferReport.controller');router['get']('/',auth[_0xc0d8('0xa')](),controller[_0xc0d8('0xb')]);router[_0xc0d8('0xc')](_0xc0d8('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0xc0d8('0xc')](_0xc0d8('0xe'),auth[_0xc0d8('0xa')](),controller['show']);router['post']('/',auth[_0xc0d8('0xa')](),controller['create']);router[_0xc0d8('0xf')](_0xc0d8('0xe'),auth[_0xc0d8('0xa')](),controller[_0xc0d8('0x10')]);router[_0xc0d8('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xc0d8('0x12')]);module['exports']=router;
\ No newline at end of file
index 6d8f38f..54fdea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8a2=['multer','express','fs-extra','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','exports'];(function(_0x2e7087,_0x112eec){var _0xb5b3a6=function(_0x296310){while(--_0x296310){_0x2e7087['push'](_0x2e7087['shift']());}};_0xb5b3a6(++_0x112eec);}(_0xe8a2,0xe7));var _0x2e8a=function(_0x2f08ac,_0x2da3a0){_0x2f08ac=_0x2f08ac-0x0;var _0x2fa0ff=_0xe8a2[_0x2f08ac];return _0x2fa0ff;};'use strict';var multer=require(_0x2e8a('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2e8a('0x1'));var router=express['Router']();var fs_extra=require(_0x2e8a('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x2e8a('0x3'));var config=require(_0x2e8a('0x4'));var controller=require(_0x2e8a('0x5'));router[_0x2e8a('0x6')]('/',auth[_0x2e8a('0x7')](),controller['index']);router['get'](_0x2e8a('0x8'),auth[_0x2e8a('0x7')](),controller[_0x2e8a('0x9')]);router['get'](_0x2e8a('0xa'),auth[_0x2e8a('0x7')](),controller[_0x2e8a('0xb')]);router[_0x2e8a('0x6')](_0x2e8a('0xc'),auth[_0x2e8a('0x7')](),controller[_0x2e8a('0xd')]);router[_0x2e8a('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2e8a('0xe')](_0x2e8a('0xa'),auth[_0x2e8a('0x7')](),controller[_0x2e8a('0xf')]);router[_0x2e8a('0x10')](_0x2e8a('0x8'),auth[_0x2e8a('0x7')](),controller[_0x2e8a('0x11')]);router[_0x2e8a('0x12')]('/:id',auth[_0x2e8a('0x7')](),controller[_0x2e8a('0x13')]);module[_0x2e8a('0x14')]=router;
\ No newline at end of file
+var _0xd4fa=['/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','show'];(function(_0x3c90ad,_0x292c85){var _0x4f39da=function(_0xe9ad2){while(--_0xe9ad2){_0x3c90ad['push'](_0x3c90ad['shift']());}};_0x4f39da(++_0x292c85);}(_0xd4fa,0x110));var _0xad4f=function(_0x1a7edf,_0x5c4e04){_0x1a7edf=_0x1a7edf-0x0;var _0x56c1d9=_0xd4fa[_0x1a7edf];return _0x56c1d9;};'use strict';var multer=require(_0xad4f('0x0'));var util=require(_0xad4f('0x1'));var path=require(_0xad4f('0x2'));var timeout=require('connect-timeout');var express=require(_0xad4f('0x3'));var router=express[_0xad4f('0x4')]();var fs_extra=require(_0xad4f('0x5'));var auth=require(_0xad4f('0x6'));var interaction=require(_0xad4f('0x7'));var config=require(_0xad4f('0x8'));var controller=require(_0xad4f('0x9'));router[_0xad4f('0xa')]('/',auth[_0xad4f('0xb')](),controller[_0xad4f('0xc')]);router['get']('/:id',auth[_0xad4f('0xb')](),controller[_0xad4f('0xd')]);router[_0xad4f('0xa')](_0xad4f('0xe'),auth[_0xad4f('0xb')](),controller[_0xad4f('0xf')]);router[_0xad4f('0xa')](_0xad4f('0x10'),auth[_0xad4f('0xb')](),controller[_0xad4f('0x11')]);router[_0xad4f('0x12')]('/',auth[_0xad4f('0xb')](),controller[_0xad4f('0x13')]);router[_0xad4f('0x12')](_0xad4f('0xe'),auth['isAuthenticated'](),controller[_0xad4f('0x14')]);router[_0xad4f('0x15')](_0xad4f('0x16'),auth[_0xad4f('0xb')](),controller['update']);router[_0xad4f('0x17')](_0xad4f('0x16'),auth[_0xad4f('0xb')](),controller[_0xad4f('0x18')]);module[_0xad4f('0x19')]=router;
\ No newline at end of file
index d14b553..494a7b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c6=['STRING','ENUM','basic','integrationTab'];(function(_0x3efeaa,_0x3363ae){var _0x159b55=function(_0x5cb03f){while(--_0x5cb03f){_0x3efeaa['push'](_0x3efeaa['shift']());}};_0x159b55(++_0x3363ae);}(_0x07c6,0x110));var _0x607c=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x07c6[_0xefd519];return _0x4bb882;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x607c('0x0')]},'description':{'type':Sequelize[_0x607c('0x0')]},'username':{'type':Sequelize[_0x607c('0x0')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x607c('0x1')]('basic'),'defaultValue':_0x607c('0x2')},'password':{'type':Sequelize[_0x607c('0x0')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x607c('0x0')]},'tokenSecret':{'type':Sequelize[_0x607c('0x0')]},'serverUrl':{'type':Sequelize[_0x607c('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab','newTab'),'defaultValue':_0x607c('0x3')}};
\ No newline at end of file
+var _0xac66=['integrationTab','newTab','sequelize','exports','STRING','ENUM','basic'];(function(_0x276abb,_0x392a48){var _0x492b5b=function(_0x4ac35a){while(--_0x4ac35a){_0x276abb['push'](_0x276abb['shift']());}};_0x492b5b(++_0x392a48);}(_0xac66,0x10c));var _0x6ac6=function(_0x3a1618,_0x312db6){_0x3a1618=_0x3a1618-0x0;var _0x4cff80=_0xac66[_0x3a1618];return _0x4cff80;};'use strict';var Sequelize=require(_0x6ac6('0x0'));module[_0x6ac6('0x1')]={'name':{'type':Sequelize[_0x6ac6('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x6ac6('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x6ac6('0x3')]('basic'),'defaultValue':_0x6ac6('0x4')},'password':{'type':Sequelize[_0x6ac6('0x2')]},'consumerKey':{'type':Sequelize[_0x6ac6('0x2')]},'consumerSecret':{'type':Sequelize[_0x6ac6('0x2')]},'token':{'type':Sequelize[_0x6ac6('0x2')]},'tokenSecret':{'type':Sequelize[_0x6ac6('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6ac6('0x3')](_0x6ac6('0x5'),_0x6ac6('0x6')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 4a03870..fa1fe17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96b5=['DeskField','Descriptions','getFields','priority','authType','username','consumerKey','consumerSecret','token','tokenSecret','remoteUri','slice','lastIndexOf','%s/custom_fields','application/json','headers','Authorization','format','Basic\x20%s','password','toString','base64','concat','_embedded','entries','active','test','statusCode','error','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','name','send','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filter','merge','where','options','DeskAccount','includeAll','show','params','length','include','find','catch','create','body','findOne','DeskConfiguration','getConfigurations','addConfiguration','Subjects','getSubjects','getDescriptions','channel'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x96b5,0x8d));var _0x596b=function(_0x2b001d,_0x36a75f){_0x2b001d=_0x2b001d-0x0;var _0x1c1538=_0x96b5[_0x2b001d];return _0x1c1538;};'use strict';var emlformat=require(_0x596b('0x0'));var rimraf=require(_0x596b('0x1'));var zipdir=require(_0x596b('0x2'));var jsonpatch=require(_0x596b('0x3'));var rp=require(_0x596b('0x4'));var moment=require('moment');var BPromise=require(_0x596b('0x5'));var Mustache=require(_0x596b('0x6'));var util=require(_0x596b('0x7'));var path=require(_0x596b('0x8'));var sox=require('sox');var csv=require(_0x596b('0x9'));var ejs=require(_0x596b('0xa'));var fs=require('fs');var fs_extra=require(_0x596b('0xb'));var _=require(_0x596b('0xc'));var squel=require(_0x596b('0xd'));var crypto=require(_0x596b('0xe'));var jsforce=require(_0x596b('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x596b('0x10'));var Papa=require(_0x596b('0x11'));var Redis=require('ioredis');var authService=require(_0x596b('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x596b('0x13'));var hardwareService=require(_0x596b('0x14'));var logger=require(_0x596b('0x15'))(_0x596b('0x16'));var utils=require(_0x596b('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5d01d0,_0x1d9ad8){_0x1d9ad8=_0x1d9ad8||0xcc;return function(_0x4eb112){if(_0x4eb112){return _0x5d01d0[_0x596b('0x18')](_0x1d9ad8);}return _0x5d01d0['status'](_0x1d9ad8)[_0x596b('0x19')]();};}function respondWithResult(_0x4b91b3,_0x31f7ce){_0x31f7ce=_0x31f7ce||0xc8;return function(_0x57f11e){if(_0x57f11e){return _0x4b91b3[_0x596b('0x1a')](_0x31f7ce)[_0x596b('0x1b')](_0x57f11e);}};}function respondWithFilteredResult(_0x8e1e84,_0x5e58c1){return function(_0x25da57){if(_0x25da57){var _0x57ddcf=typeof _0x5e58c1[_0x596b('0x1c')]===_0x596b('0x1d')&&typeof _0x5e58c1[_0x596b('0x1e')]===_0x596b('0x1d');var _0x117b60=_0x25da57[_0x596b('0x1f')];var _0x4fea46=_0x57ddcf?0x0:_0x5e58c1[_0x596b('0x1c')];var _0x1ece70=_0x57ddcf?_0x25da57[_0x596b('0x1f')]:_0x5e58c1[_0x596b('0x1c')]+_0x5e58c1[_0x596b('0x1e')];var _0x46dab1;if(_0x1ece70>=_0x117b60){_0x1ece70=_0x117b60;_0x46dab1=0xc8;}else{_0x46dab1=0xce;}_0x8e1e84['status'](_0x46dab1);return _0x8e1e84[_0x596b('0x20')](_0x596b('0x21'),_0x4fea46+'-'+_0x1ece70+'/'+_0x117b60)[_0x596b('0x1b')](_0x25da57);}return null;};}function patchUpdates(_0x3d4119){return function(_0x3a174b){try{jsonpatch['apply'](_0x3a174b,_0x3d4119,!![]);}catch(_0x2c1b18){return BPromise[_0x596b('0x22')](_0x2c1b18);}return _0x3a174b[_0x596b('0x23')]();};}function saveUpdates(_0xdc5ee2,_0x1b156d){return function(_0x23fc2d){if(_0x23fc2d){return _0x23fc2d[_0x596b('0x24')](_0xdc5ee2)[_0x596b('0x25')](function(_0x194a28){return _0x194a28;});}return null;};}function removeEntity(_0x380bac,_0x235ce2){return function(_0x25412d){if(_0x25412d){return _0x25412d[_0x596b('0x26')]()[_0x596b('0x25')](function(){_0x380bac['status'](0xcc)[_0x596b('0x19')]();});}};}function handleEntityNotFound(_0x239825,_0x55444c){return function(_0x362d7a){if(!_0x362d7a){_0x239825[_0x596b('0x18')](0x194);}return _0x362d7a;};}function handleError(_0x360674,_0xfc9278){_0xfc9278=_0xfc9278||0x1f4;return function(_0x33ee6e){logger['error'](_0x33ee6e['stack']);if(_0x33ee6e[_0x596b('0x27')]){delete _0x33ee6e[_0x596b('0x27')];}_0x360674[_0x596b('0x1a')](_0xfc9278)[_0x596b('0x28')](_0x33ee6e);};}exports['index']=function(_0x5454d6,_0x1eaa15){var _0x29e7c3={},_0x3077b6={},_0x4e87fb={'count':0x0,'rows':[]};var _0x224ffa=_[_0x596b('0x29')](db['DeskAccount'][_0x596b('0x2a')],function(_0x161e4b){return{'name':_0x161e4b[_0x596b('0x2b')],'type':_0x161e4b[_0x596b('0x2c')][_0x596b('0x2d')]};});_0x3077b6[_0x596b('0x2e')]=_[_0x596b('0x29')](_0x224ffa,_0x596b('0x27'));_0x3077b6['query']=_[_0x596b('0x2f')](_0x5454d6[_0x596b('0x30')]);_0x3077b6[_0x596b('0x31')]=_['intersection'](_0x3077b6['model'],_0x3077b6['query']);_0x29e7c3[_0x596b('0x32')]=_[_0x596b('0x33')](_0x3077b6[_0x596b('0x2e')],qs[_0x596b('0x34')](_0x5454d6[_0x596b('0x30')][_0x596b('0x34')]));_0x29e7c3['attributes']=_0x29e7c3[_0x596b('0x32')]['length']?_0x29e7c3['attributes']:_0x3077b6[_0x596b('0x2e')];if(!_0x5454d6['query'][_0x596b('0x35')](_0x596b('0x36'))){_0x29e7c3['limit']=qs[_0x596b('0x1e')](_0x5454d6[_0x596b('0x30')]['limit']);_0x29e7c3[_0x596b('0x1c')]=qs[_0x596b('0x1c')](_0x5454d6[_0x596b('0x30')][_0x596b('0x1c')]);}_0x29e7c3[_0x596b('0x37')]=qs[_0x596b('0x38')](_0x5454d6[_0x596b('0x30')][_0x596b('0x38')]);_0x29e7c3['where']=qs[_0x596b('0x31')](_['pick'](_0x5454d6['query'],_0x3077b6['filters']),_0x224ffa);if(_0x5454d6[_0x596b('0x30')][_0x596b('0x39')]){_0x29e7c3['where']=_[_0x596b('0x3a')](_0x29e7c3[_0x596b('0x3b')],{'$or':_[_0x596b('0x29')](_0x224ffa,function(_0x5b153e){if(_0x5b153e[_0x596b('0x2c')]!=='VIRTUAL'){var _0x4a386c={};_0x4a386c[_0x5b153e[_0x596b('0x27')]]={'$like':'%'+_0x5454d6[_0x596b('0x30')][_0x596b('0x39')]+'%'};return _0x4a386c;}})});}_0x29e7c3=_[_0x596b('0x3a')]({},_0x29e7c3,_0x5454d6[_0x596b('0x3c')]);var _0x706d36={'where':_0x29e7c3['where']};return db[_0x596b('0x3d')]['count'](_0x706d36)[_0x596b('0x25')](function(_0x10c458){_0x4e87fb[_0x596b('0x1f')]=_0x10c458;if(_0x5454d6[_0x596b('0x30')][_0x596b('0x3e')]){_0x29e7c3['include']=[{'all':!![]}];}return db[_0x596b('0x3d')]['findAll'](_0x29e7c3);})[_0x596b('0x25')](function(_0x4443aa){_0x4e87fb['rows']=_0x4443aa;return _0x4e87fb;})['then'](respondWithFilteredResult(_0x1eaa15,_0x29e7c3))['catch'](handleError(_0x1eaa15,null));};exports[_0x596b('0x3f')]=function(_0x6a20c,_0x53464b){var _0x38fd34={'raw':![],'where':{'id':_0x6a20c[_0x596b('0x40')]['id']}},_0x5d0510={};_0x5d0510[_0x596b('0x2e')]=_['keys'](db[_0x596b('0x3d')][_0x596b('0x2a')]);_0x5d0510[_0x596b('0x30')]=_[_0x596b('0x2f')](_0x6a20c[_0x596b('0x30')]);_0x5d0510[_0x596b('0x31')]=_['intersection'](_0x5d0510[_0x596b('0x2e')],_0x5d0510[_0x596b('0x30')]);_0x38fd34[_0x596b('0x32')]=_[_0x596b('0x33')](_0x5d0510[_0x596b('0x2e')],qs[_0x596b('0x34')](_0x6a20c[_0x596b('0x30')][_0x596b('0x34')]));_0x38fd34[_0x596b('0x32')]=_0x38fd34['attributes'][_0x596b('0x41')]?_0x38fd34['attributes']:_0x5d0510[_0x596b('0x2e')];if(_0x6a20c['query'][_0x596b('0x3e')]){_0x38fd34[_0x596b('0x42')]=[{'all':!![]}];}_0x38fd34=_['merge']({},_0x38fd34,_0x6a20c[_0x596b('0x3c')]);return db[_0x596b('0x3d')][_0x596b('0x43')](_0x38fd34)[_0x596b('0x25')](handleEntityNotFound(_0x53464b,null))['then'](respondWithResult(_0x53464b,null))[_0x596b('0x44')](handleError(_0x53464b,null));};exports[_0x596b('0x45')]=function(_0x2788e4,_0x5c0464){return db[_0x596b('0x3d')][_0x596b('0x45')](_0x2788e4[_0x596b('0x46')],{})[_0x596b('0x25')](respondWithResult(_0x5c0464,0xc9))[_0x596b('0x44')](handleError(_0x5c0464,null));};exports[_0x596b('0x24')]=function(_0x54e83b,_0x37226d){if(_0x54e83b[_0x596b('0x46')]['id']){delete _0x54e83b[_0x596b('0x46')]['id'];}return db[_0x596b('0x3d')][_0x596b('0x43')]({'where':{'id':_0x54e83b[_0x596b('0x40')]['id']}})[_0x596b('0x25')](handleEntityNotFound(_0x37226d,null))['then'](saveUpdates(_0x54e83b[_0x596b('0x46')],null))[_0x596b('0x25')](respondWithResult(_0x37226d,null))['catch'](handleError(_0x37226d,null));};exports[_0x596b('0x26')]=function(_0x56b82f,_0x5dbcc0){return db[_0x596b('0x3d')][_0x596b('0x43')]({'where':{'id':_0x56b82f[_0x596b('0x40')]['id']}})[_0x596b('0x25')](handleEntityNotFound(_0x5dbcc0,null))[_0x596b('0x25')](removeEntity(_0x5dbcc0,null))['catch'](handleError(_0x5dbcc0,null));};exports['getConfigurations']=function(_0x1b8729,_0x4fa919,_0x5a9467){var _0x983662={};var _0x59c2dc={};var _0x34d27b;var _0x575fb1;return db[_0x596b('0x3d')][_0x596b('0x47')]({'where':{'id':_0x1b8729[_0x596b('0x40')]['id']}})[_0x596b('0x25')](handleEntityNotFound(_0x4fa919,null))[_0x596b('0x25')](function(_0x554666){if(_0x554666){_0x34d27b=_0x554666;_0x59c2dc[_0x596b('0x2e')]=_[_0x596b('0x2f')](db[_0x596b('0x48')][_0x596b('0x2a')]);_0x59c2dc['query']=_[_0x596b('0x2f')](_0x1b8729['query']);_0x59c2dc[_0x596b('0x31')]=_[_0x596b('0x33')](_0x59c2dc[_0x596b('0x2e')],_0x59c2dc[_0x596b('0x30')]);_0x983662[_0x596b('0x32')]=_[_0x596b('0x33')](_0x59c2dc[_0x596b('0x2e')],qs[_0x596b('0x34')](_0x1b8729[_0x596b('0x30')][_0x596b('0x34')]));_0x983662[_0x596b('0x32')]=_0x983662[_0x596b('0x32')][_0x596b('0x41')]?_0x983662[_0x596b('0x32')]:_0x59c2dc[_0x596b('0x2e')];_0x983662[_0x596b('0x37')]=qs['sort'](_0x1b8729[_0x596b('0x30')][_0x596b('0x38')]);_0x983662['where']=qs[_0x596b('0x31')](_['pick'](_0x1b8729[_0x596b('0x30')],_0x59c2dc[_0x596b('0x31')]));if(_0x1b8729[_0x596b('0x30')][_0x596b('0x39')]){_0x983662[_0x596b('0x3b')]=_['merge'](_0x983662[_0x596b('0x3b')],{'$or':_['map'](_0x983662[_0x596b('0x32')],function(_0x4dcd3c){var _0x51071f={};_0x51071f[_0x4dcd3c]={'$like':'%'+_0x1b8729[_0x596b('0x30')][_0x596b('0x39')]+'%'};return _0x51071f;})});}_0x983662=_[_0x596b('0x3a')]({},_0x983662,_0x1b8729[_0x596b('0x3c')]);return _0x34d27b[_0x596b('0x49')](_0x983662);}})['then'](function(_0x52d601){if(_0x52d601){_0x575fb1=_0x52d601[_0x596b('0x41')];if(!_0x1b8729[_0x596b('0x30')][_0x596b('0x35')](_0x596b('0x36'))){_0x983662[_0x596b('0x1e')]=qs['limit'](_0x1b8729[_0x596b('0x30')][_0x596b('0x1e')]);_0x983662[_0x596b('0x1c')]=qs[_0x596b('0x1c')](_0x1b8729[_0x596b('0x30')][_0x596b('0x1c')]);}return _0x34d27b[_0x596b('0x49')](_0x983662);}})['then'](function(_0x4baa4e){if(_0x4baa4e){return _0x4baa4e?{'count':_0x575fb1,'rows':_0x4baa4e}:null;}})[_0x596b('0x25')](respondWithResult(_0x4fa919,null))[_0x596b('0x44')](handleError(_0x4fa919,null));};exports[_0x596b('0x4a')]=function(_0x20b614,_0x100055,_0x4229eb){if(_0x20b614[_0x596b('0x46')]['id']){delete _0x20b614[_0x596b('0x46')]['id'];}return db[_0x596b('0x3d')][_0x596b('0x47')]({'where':{'id':_0x20b614[_0x596b('0x40')]['id']}})[_0x596b('0x25')](handleEntityNotFound(_0x100055,null))['then'](function(_0x3f7136){if(_0x3f7136){_0x20b614[_0x596b('0x46')]['AccountId']=_0x3f7136['id'];_0x20b614[_0x596b('0x46')][_0x596b('0x4b')]=integrations[_0x596b('0x4c')](_0x20b614[_0x596b('0x46')]['channel'],_0x20b614[_0x596b('0x46')][_0x596b('0x2c')]);_0x20b614[_0x596b('0x46')]['Descriptions']=integrations[_0x596b('0x4d')](_0x20b614[_0x596b('0x46')][_0x596b('0x4e')],_0x20b614[_0x596b('0x46')][_0x596b('0x2c')]);return db[_0x596b('0x48')][_0x596b('0x45')](_0x20b614[_0x596b('0x46')],{'include':[{'model':db[_0x596b('0x4f')],'as':_0x596b('0x4b')},{'model':db[_0x596b('0x4f')],'as':_0x596b('0x50')}]});}return null;})['then'](respondWithResult(_0x100055,null))[_0x596b('0x44')](handleError(_0x100055,null));};exports[_0x596b('0x51')]=function(_0x44c6f5,_0x25efe4,_0x521980){var _0x26b63d=[{'name':_0x596b('0x52'),'label':_0x596b('0x52'),'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 _0x110848='';return db[_0x596b('0x3d')]['findOne']({'where':{'id':_0x44c6f5[_0x596b('0x40')]['id']},'attributes':['id','remoteUri',_0x596b('0x53'),_0x596b('0x54'),'password',_0x596b('0x55'),_0x596b('0x56'),_0x596b('0x57'),_0x596b('0x58')]})['then'](handleEntityNotFound(_0x25efe4,null))['then'](function(_0x52b603){if(_0x52b603){_0x110848=_0x52b603[_0x596b('0x59')];var _0x2dceb3=_0x110848[_0x596b('0x5a')](-0x1);if(_0x2dceb3==='/'){_0x110848=_0x110848['substring'](0x0,_0x110848[_0x596b('0x5b')](_0x2dceb3));}var _0x22b50e={'method':'GET','uri':util['format'](_0x596b('0x5c'),_0x110848),'headers':{'Content-Type':_0x596b('0x5d'),'Accept':_0x596b('0x5d')},'json':!![]};if(_0x52b603[_0x596b('0x53')]==='basic'){_0x22b50e[_0x596b('0x5e')][_0x596b('0x5f')]=util[_0x596b('0x60')](_0x596b('0x61'),new Buffer(util[_0x596b('0x60')]('%s:%s',_0x52b603[_0x596b('0x54')],_0x52b603[_0x596b('0x62')]))[_0x596b('0x63')](_0x596b('0x64')));}return rp(_0x22b50e)['then'](function(_0xf10632){return _0x26b63d[_0x596b('0x65')](_[_0x596b('0x29')](_0xf10632[_0x596b('0x66')][_0x596b('0x67')],function(_0x5360b5){return{'id':_0x5360b5[_0x596b('0x27')],'name':_0x5360b5[_0x596b('0x27')],'type':_0x5360b5['type'],'active':_0x5360b5[_0x596b('0x68')],'label':_0x5360b5['label'],'custom':!![]};}));});}})['then'](function(_0x5d0590){return{'count':_0x5d0590[_0x596b('0x41')],'rows':_0x5d0590};})[_0x596b('0x25')](respondWithResult(_0x25efe4,null))[_0x596b('0x44')](function(_0x16dc24){var _0x2ef68f=_0x44c6f5[_0x596b('0x30')][_0x596b('0x69')]?0x1f4:_0x16dc24[_0x596b('0x6a')]||0x1f4;logger[_0x596b('0x6b')]('getFields,\x20%s,\x20%s,\x20%s',_0x596b('0x51'),_0x2ef68f,JSON[_0x596b('0x6c')](_0x16dc24));delete _0x16dc24['name'];if(_0x2ef68f===0x191){_0x2ef68f=0x190;}_0x25efe4[_0x596b('0x1a')](_0x2ef68f)[_0x596b('0x28')](_0x44c6f5[_0x596b('0x30')][_0x596b('0x69')]?{'message':_0x596b('0x6d'),'statusCode':_0x16dc24[_0x596b('0x6a')]}:_0x16dc24);});};
\ No newline at end of file
+var _0xfb0a=['util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','limit','count','set','reject','save','update','destroy','then','end','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','nolimit','offset','order','sort','where','pick','merge','VIRTUAL','filter','DeskAccount','include','findAll','catch','params','keys','length','includeAll','options','find','create','body','getConfigurations','findOne','DeskConfiguration','hasOwnProperty','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','DeskField','getFields','priority','remoteUri','authType','username','consumerKey','token','tokenSecret','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','basic','headers','Authorization','%s:%s','password','base64','_embedded','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x4e1657,_0x607b35){var _0x55c5a4=function(_0x361b45){while(--_0x361b45){_0x4e1657['push'](_0x4e1657['shift']());}};_0x55c5a4(++_0x607b35);}(_0xfb0a,0x1bc));var _0xafb0=function(_0x3a7634,_0x2db384){_0x3a7634=_0x3a7634-0x0;var _0x23bbe9=_0xfb0a[_0x3a7634];return _0x23bbe9;};'use strict';var emlformat=require(_0xafb0('0x0'));var rimraf=require(_0xafb0('0x1'));var zipdir=require(_0xafb0('0x2'));var jsonpatch=require(_0xafb0('0x3'));var rp=require(_0xafb0('0x4'));var moment=require(_0xafb0('0x5'));var BPromise=require(_0xafb0('0x6'));var Mustache=require(_0xafb0('0x7'));var util=require(_0xafb0('0x8'));var path=require(_0xafb0('0x9'));var sox=require(_0xafb0('0xa'));var csv=require(_0xafb0('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xafb0('0xc'));var _=require(_0xafb0('0xd'));var squel=require('squel');var crypto=require(_0xafb0('0xe'));var jsforce=require(_0xafb0('0xf'));var deskjs=require(_0xafb0('0x10'));var toCsv=require('to-csv');var querystring=require(_0xafb0('0x11'));var Papa=require('papaparse');var Redis=require(_0xafb0('0x12'));var authService=require(_0xafb0('0x13'));var qs=require(_0xafb0('0x14'));var as=require(_0xafb0('0x15'));var hardwareService=require(_0xafb0('0x16'));var logger=require('../../config/logger')(_0xafb0('0x17'));var utils=require(_0xafb0('0x18'));var config=require(_0xafb0('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xafb0('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3d988a,_0x5e1bd0){_0x5e1bd0=_0x5e1bd0||0xcc;return function(_0xa68b4c){if(_0xa68b4c){return _0x3d988a[_0xafb0('0x1b')](_0x5e1bd0);}return _0x3d988a[_0xafb0('0x1c')](_0x5e1bd0)['end']();};}function respondWithResult(_0x3b41a5,_0x1c8681){_0x1c8681=_0x1c8681||0xc8;return function(_0x14d818){if(_0x14d818){return _0x3b41a5[_0xafb0('0x1c')](_0x1c8681)[_0xafb0('0x1d')](_0x14d818);}};}function respondWithFilteredResult(_0x299dbe,_0x15b165){return function(_0x1a9dc1){if(_0x1a9dc1){var _0xb02612=typeof _0x15b165['offset']==='undefined'&&typeof _0x15b165[_0xafb0('0x1e')]==='undefined';var _0x19a567=_0x1a9dc1[_0xafb0('0x1f')];var _0x23567d=_0xb02612?0x0:_0x15b165['offset'];var _0x27ce4c=_0xb02612?_0x1a9dc1[_0xafb0('0x1f')]:_0x15b165['offset']+_0x15b165[_0xafb0('0x1e')];var _0x539ab5;if(_0x27ce4c>=_0x19a567){_0x27ce4c=_0x19a567;_0x539ab5=0xc8;}else{_0x539ab5=0xce;}_0x299dbe['status'](_0x539ab5);return _0x299dbe[_0xafb0('0x20')]('Content-Range',_0x23567d+'-'+_0x27ce4c+'/'+_0x19a567)[_0xafb0('0x1d')](_0x1a9dc1);}return null;};}function patchUpdates(_0x136130){return function(_0x22defb){try{jsonpatch['apply'](_0x22defb,_0x136130,!![]);}catch(_0x53a832){return BPromise[_0xafb0('0x21')](_0x53a832);}return _0x22defb[_0xafb0('0x22')]();};}function saveUpdates(_0x480e7b,_0x5999d2){return function(_0x10404e){if(_0x10404e){return _0x10404e[_0xafb0('0x23')](_0x480e7b)['then'](function(_0x30ee96){return _0x30ee96;});}return null;};}function removeEntity(_0xb86640,_0xf91b3){return function(_0x9582e0){if(_0x9582e0){return _0x9582e0[_0xafb0('0x24')]()[_0xafb0('0x25')](function(){_0xb86640[_0xafb0('0x1c')](0xcc)[_0xafb0('0x26')]();});}};}function handleEntityNotFound(_0x3ee823,_0x5addb5){return function(_0x5e6db9){if(!_0x5e6db9){_0x3ee823['sendStatus'](0x194);}return _0x5e6db9;};}function handleError(_0x5c1aad,_0xea5501){_0xea5501=_0xea5501||0x1f4;return function(_0x4e1e0d){logger[_0xafb0('0x27')](_0x4e1e0d[_0xafb0('0x28')]);if(_0x4e1e0d[_0xafb0('0x29')]){delete _0x4e1e0d[_0xafb0('0x29')];}_0x5c1aad[_0xafb0('0x1c')](_0xea5501)[_0xafb0('0x2a')](_0x4e1e0d);};}exports[_0xafb0('0x2b')]=function(_0x4678e4,_0x641d8){var _0x56293a={},_0x468050={},_0x4cf476={'count':0x0,'rows':[]};var _0x493dfb=_['map'](db['DeskAccount'][_0xafb0('0x2c')],function(_0xcf50eb){return{'name':_0xcf50eb[_0xafb0('0x2d')],'type':_0xcf50eb[_0xafb0('0x2e')][_0xafb0('0x2f')]};});_0x468050[_0xafb0('0x30')]=_[_0xafb0('0x31')](_0x493dfb,'name');_0x468050[_0xafb0('0x32')]=_['keys'](_0x4678e4[_0xafb0('0x32')]);_0x468050[_0xafb0('0x33')]=_[_0xafb0('0x34')](_0x468050[_0xafb0('0x30')],_0x468050['query']);_0x56293a[_0xafb0('0x35')]=_[_0xafb0('0x34')](_0x468050[_0xafb0('0x30')],qs[_0xafb0('0x36')](_0x4678e4[_0xafb0('0x32')]['fields']));_0x56293a['attributes']=_0x56293a[_0xafb0('0x35')]['length']?_0x56293a[_0xafb0('0x35')]:_0x468050[_0xafb0('0x30')];if(!_0x4678e4[_0xafb0('0x32')]['hasOwnProperty'](_0xafb0('0x37'))){_0x56293a[_0xafb0('0x1e')]=qs['limit'](_0x4678e4[_0xafb0('0x32')][_0xafb0('0x1e')]);_0x56293a['offset']=qs[_0xafb0('0x38')](_0x4678e4[_0xafb0('0x32')][_0xafb0('0x38')]);}_0x56293a[_0xafb0('0x39')]=qs[_0xafb0('0x3a')](_0x4678e4[_0xafb0('0x32')][_0xafb0('0x3a')]);_0x56293a[_0xafb0('0x3b')]=qs['filters'](_[_0xafb0('0x3c')](_0x4678e4[_0xafb0('0x32')],_0x468050[_0xafb0('0x33')]),_0x493dfb);if(_0x4678e4[_0xafb0('0x32')]['filter']){_0x56293a[_0xafb0('0x3b')]=_[_0xafb0('0x3d')](_0x56293a['where'],{'$or':_['map'](_0x493dfb,function(_0x5cb571){if(_0x5cb571[_0xafb0('0x2e')]!==_0xafb0('0x3e')){var _0x77454f={};_0x77454f[_0x5cb571['name']]={'$like':'%'+_0x4678e4[_0xafb0('0x32')][_0xafb0('0x3f')]+'%'};return _0x77454f;}})});}_0x56293a=_[_0xafb0('0x3d')]({},_0x56293a,_0x4678e4['options']);var _0x559a12={'where':_0x56293a[_0xafb0('0x3b')]};return db[_0xafb0('0x40')][_0xafb0('0x1f')](_0x559a12)['then'](function(_0x219bc2){_0x4cf476[_0xafb0('0x1f')]=_0x219bc2;if(_0x4678e4['query']['includeAll']){_0x56293a[_0xafb0('0x41')]=[{'all':!![]}];}return db[_0xafb0('0x40')][_0xafb0('0x42')](_0x56293a);})[_0xafb0('0x25')](function(_0x28c703){_0x4cf476['rows']=_0x28c703;return _0x4cf476;})[_0xafb0('0x25')](respondWithFilteredResult(_0x641d8,_0x56293a))[_0xafb0('0x43')](handleError(_0x641d8,null));};exports['show']=function(_0x8129ed,_0x50871a){var _0x4223fd={'raw':![],'where':{'id':_0x8129ed[_0xafb0('0x44')]['id']}},_0x5a3a9f={};_0x5a3a9f[_0xafb0('0x30')]=_[_0xafb0('0x45')](db[_0xafb0('0x40')][_0xafb0('0x2c')]);_0x5a3a9f[_0xafb0('0x32')]=_[_0xafb0('0x45')](_0x8129ed['query']);_0x5a3a9f[_0xafb0('0x33')]=_[_0xafb0('0x34')](_0x5a3a9f[_0xafb0('0x30')],_0x5a3a9f[_0xafb0('0x32')]);_0x4223fd['attributes']=_[_0xafb0('0x34')](_0x5a3a9f[_0xafb0('0x30')],qs['fields'](_0x8129ed[_0xafb0('0x32')][_0xafb0('0x36')]));_0x4223fd[_0xafb0('0x35')]=_0x4223fd[_0xafb0('0x35')][_0xafb0('0x46')]?_0x4223fd[_0xafb0('0x35')]:_0x5a3a9f[_0xafb0('0x30')];if(_0x8129ed[_0xafb0('0x32')][_0xafb0('0x47')]){_0x4223fd['include']=[{'all':!![]}];}_0x4223fd=_['merge']({},_0x4223fd,_0x8129ed[_0xafb0('0x48')]);return db['DeskAccount'][_0xafb0('0x49')](_0x4223fd)['then'](handleEntityNotFound(_0x50871a,null))[_0xafb0('0x25')](respondWithResult(_0x50871a,null))[_0xafb0('0x43')](handleError(_0x50871a,null));};exports[_0xafb0('0x4a')]=function(_0x17b340,_0x57b233){return db['DeskAccount'][_0xafb0('0x4a')](_0x17b340[_0xafb0('0x4b')],{})[_0xafb0('0x25')](respondWithResult(_0x57b233,0xc9))['catch'](handleError(_0x57b233,null));};exports['update']=function(_0x959940,_0xb53a96){if(_0x959940[_0xafb0('0x4b')]['id']){delete _0x959940[_0xafb0('0x4b')]['id'];}return db[_0xafb0('0x40')][_0xafb0('0x49')]({'where':{'id':_0x959940[_0xafb0('0x44')]['id']}})[_0xafb0('0x25')](handleEntityNotFound(_0xb53a96,null))['then'](saveUpdates(_0x959940[_0xafb0('0x4b')],null))[_0xafb0('0x25')](respondWithResult(_0xb53a96,null))[_0xafb0('0x43')](handleError(_0xb53a96,null));};exports['destroy']=function(_0x4c0da7,_0x8992b3){return db['DeskAccount'][_0xafb0('0x49')]({'where':{'id':_0x4c0da7['params']['id']}})[_0xafb0('0x25')](handleEntityNotFound(_0x8992b3,null))[_0xafb0('0x25')](removeEntity(_0x8992b3,null))[_0xafb0('0x43')](handleError(_0x8992b3,null));};exports[_0xafb0('0x4c')]=function(_0xdd3398,_0x2b318b,_0x38a8af){var _0x4dce61={};var _0x5d1e96={};var _0x3fd7fc;var _0x152390;return db[_0xafb0('0x40')][_0xafb0('0x4d')]({'where':{'id':_0xdd3398['params']['id']}})[_0xafb0('0x25')](handleEntityNotFound(_0x2b318b,null))['then'](function(_0x5bbc2b){if(_0x5bbc2b){_0x3fd7fc=_0x5bbc2b;_0x5d1e96['model']=_['keys'](db[_0xafb0('0x4e')][_0xafb0('0x2c')]);_0x5d1e96['query']=_[_0xafb0('0x45')](_0xdd3398[_0xafb0('0x32')]);_0x5d1e96['filters']=_[_0xafb0('0x34')](_0x5d1e96[_0xafb0('0x30')],_0x5d1e96['query']);_0x4dce61[_0xafb0('0x35')]=_['intersection'](_0x5d1e96['model'],qs['fields'](_0xdd3398[_0xafb0('0x32')][_0xafb0('0x36')]));_0x4dce61[_0xafb0('0x35')]=_0x4dce61['attributes'][_0xafb0('0x46')]?_0x4dce61[_0xafb0('0x35')]:_0x5d1e96[_0xafb0('0x30')];_0x4dce61[_0xafb0('0x39')]=qs[_0xafb0('0x3a')](_0xdd3398[_0xafb0('0x32')]['sort']);_0x4dce61[_0xafb0('0x3b')]=qs[_0xafb0('0x33')](_['pick'](_0xdd3398[_0xafb0('0x32')],_0x5d1e96[_0xafb0('0x33')]));if(_0xdd3398['query']['filter']){_0x4dce61[_0xafb0('0x3b')]=_[_0xafb0('0x3d')](_0x4dce61[_0xafb0('0x3b')],{'$or':_[_0xafb0('0x31')](_0x4dce61[_0xafb0('0x35')],function(_0x28f7dc){var _0x2fa253={};_0x2fa253[_0x28f7dc]={'$like':'%'+_0xdd3398[_0xafb0('0x32')][_0xafb0('0x3f')]+'%'};return _0x2fa253;})});}_0x4dce61=_[_0xafb0('0x3d')]({},_0x4dce61,_0xdd3398['options']);return _0x3fd7fc[_0xafb0('0x4c')](_0x4dce61);}})[_0xafb0('0x25')](function(_0x301891){if(_0x301891){_0x152390=_0x301891[_0xafb0('0x46')];if(!_0xdd3398[_0xafb0('0x32')][_0xafb0('0x4f')](_0xafb0('0x37'))){_0x4dce61[_0xafb0('0x1e')]=qs[_0xafb0('0x1e')](_0xdd3398[_0xafb0('0x32')]['limit']);_0x4dce61[_0xafb0('0x38')]=qs[_0xafb0('0x38')](_0xdd3398['query'][_0xafb0('0x38')]);}return _0x3fd7fc['getConfigurations'](_0x4dce61);}})[_0xafb0('0x25')](function(_0x40d8e7){if(_0x40d8e7){return _0x40d8e7?{'count':_0x152390,'rows':_0x40d8e7}:null;}})[_0xafb0('0x25')](respondWithResult(_0x2b318b,null))[_0xafb0('0x43')](handleError(_0x2b318b,null));};exports['addConfiguration']=function(_0x2d05f8,_0x2bf7f1,_0x47901e){if(_0x2d05f8['body']['id']){delete _0x2d05f8[_0xafb0('0x4b')]['id'];}return db[_0xafb0('0x40')][_0xafb0('0x4d')]({'where':{'id':_0x2d05f8[_0xafb0('0x44')]['id']}})[_0xafb0('0x25')](handleEntityNotFound(_0x2bf7f1,null))['then'](function(_0x3184c1){if(_0x3184c1){_0x2d05f8[_0xafb0('0x4b')][_0xafb0('0x50')]=_0x3184c1['id'];_0x2d05f8[_0xafb0('0x4b')][_0xafb0('0x51')]=integrations[_0xafb0('0x52')](_0x2d05f8['body']['channel'],_0x2d05f8['body'][_0xafb0('0x2e')]);_0x2d05f8[_0xafb0('0x4b')][_0xafb0('0x53')]=integrations[_0xafb0('0x54')](_0x2d05f8[_0xafb0('0x4b')][_0xafb0('0x55')],_0x2d05f8[_0xafb0('0x4b')][_0xafb0('0x2e')]);return db[_0xafb0('0x4e')][_0xafb0('0x4a')](_0x2d05f8[_0xafb0('0x4b')],{'include':[{'model':db[_0xafb0('0x56')],'as':'Subjects'},{'model':db['DeskField'],'as':_0xafb0('0x53')}]});}return null;})[_0xafb0('0x25')](respondWithResult(_0x2bf7f1,null))[_0xafb0('0x43')](handleError(_0x2bf7f1,null));};exports[_0xafb0('0x57')]=function(_0x46be40,_0x58a526,_0x3bebd0){var _0x226128=[{'name':_0xafb0('0x58'),'label':_0xafb0('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 _0x1ace7f='';return db[_0xafb0('0x40')][_0xafb0('0x4d')]({'where':{'id':_0x46be40[_0xafb0('0x44')]['id']},'attributes':['id',_0xafb0('0x59'),_0xafb0('0x5a'),_0xafb0('0x5b'),'password',_0xafb0('0x5c'),'consumerSecret',_0xafb0('0x5d'),_0xafb0('0x5e')]})[_0xafb0('0x25')](handleEntityNotFound(_0x58a526,null))[_0xafb0('0x25')](function(_0x2ff143){if(_0x2ff143){_0x1ace7f=_0x2ff143[_0xafb0('0x59')];var _0x1073fc=_0x1ace7f[_0xafb0('0x5f')](-0x1);if(_0x1073fc==='/'){_0x1ace7f=_0x1ace7f[_0xafb0('0x60')](0x0,_0x1ace7f[_0xafb0('0x61')](_0x1073fc));}var _0x404585={'method':'GET','uri':util[_0xafb0('0x62')](_0xafb0('0x63'),_0x1ace7f),'headers':{'Content-Type':_0xafb0('0x64'),'Accept':_0xafb0('0x64')},'json':!![]};if(_0x2ff143['authType']===_0xafb0('0x65')){_0x404585[_0xafb0('0x66')][_0xafb0('0x67')]=util['format']('Basic\x20%s',new Buffer(util[_0xafb0('0x62')](_0xafb0('0x68'),_0x2ff143[_0xafb0('0x5b')],_0x2ff143[_0xafb0('0x69')]))['toString'](_0xafb0('0x6a')));}return rp(_0x404585)[_0xafb0('0x25')](function(_0x1acfe2){return _0x226128['concat'](_['map'](_0x1acfe2[_0xafb0('0x6b')]['entries'],function(_0x19d611){return{'id':_0x19d611['name'],'name':_0x19d611['name'],'type':_0x19d611[_0xafb0('0x2e')],'active':_0x19d611[_0xafb0('0x6c')],'label':_0x19d611[_0xafb0('0x6d')],'custom':!![]};}));});}})['then'](function(_0x23e248){return{'count':_0x23e248[_0xafb0('0x46')],'rows':_0x23e248};})[_0xafb0('0x25')](respondWithResult(_0x58a526,null))['catch'](function(_0x2642fb){var _0x4c49d1=_0x46be40[_0xafb0('0x32')][_0xafb0('0x6e')]?0x1f4:_0x2642fb[_0xafb0('0x6f')]||0x1f4;logger['error'](_0xafb0('0x70'),_0xafb0('0x57'),_0x4c49d1,JSON['stringify'](_0x2642fb));delete _0x2642fb[_0xafb0('0x29')];if(_0x4c49d1===0x191){_0x4c49d1=0x190;}_0x58a526['status'](_0x4c49d1)[_0xafb0('0x2a')](_0x46be40[_0xafb0('0x32')][_0xafb0('0x6e')]?{'message':'Wrong\x20credentials','statusCode':_0x2642fb[_0xafb0('0x6f')]}:_0x2642fb);});};
\ No newline at end of file
index 847e2fd..52c3394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d4e=['path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','int_desk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x352fc9,_0x59fadc){var _0x36b574=function(_0x3a451f){while(--_0x3a451f){_0x352fc9['push'](_0x352fc9['shift']());}};_0x36b574(++_0x59fadc);}(_0x9d4e,0x14b));var _0xe9d4=function(_0x57163b,_0x41db5f){_0x57163b=_0x57163b-0x0;var _0x13c1ea=_0x9d4e[_0x57163b];return _0x13c1ea;};'use strict';var _=require(_0xe9d4('0x0'));var util=require(_0xe9d4('0x1'));var logger=require(_0xe9d4('0x2'))(_0xe9d4('0x3'));var moment=require(_0xe9d4('0x4'));var BPromise=require(_0xe9d4('0x5'));var rp=require(_0xe9d4('0x6'));var fs=require('fs');var path=require(_0xe9d4('0x7'));var rimraf=require(_0xe9d4('0x8'));var config=require(_0xe9d4('0x9'));var attributes=require(_0xe9d4('0xa'));var integrations=require(_0xe9d4('0xb'));module['exports']=function(_0x44d02a,_0x168340){return _0x44d02a['define']('DeskAccount',attributes,{'tableName':_0xe9d4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xae05=['lodash','util','../../config/logger','bluebird','path','rimraf','define','DeskAccount','int_desk_accounts'];(function(_0x3f9924,_0x2b66d6){var _0x1fb85e=function(_0x2ca373){while(--_0x2ca373){_0x3f9924['push'](_0x3f9924['shift']());}};_0x1fb85e(++_0x2b66d6);}(_0xae05,0x1d4));var _0x5ae0=function(_0x5c8b3f,_0x19ed9e){_0x5c8b3f=_0x5c8b3f-0x0;var _0x527ded=_0xae05[_0x5c8b3f];return _0x527ded;};'use strict';var _=require(_0x5ae0('0x0'));var util=require(_0x5ae0('0x1'));var logger=require(_0x5ae0('0x2'))('api');var moment=require('moment');var BPromise=require(_0x5ae0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5ae0('0x4'));var rimraf=require(_0x5ae0('0x5'));var config=require('../../config/environment');var attributes=require('./intDeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x58f70f,_0x311ed8){return _0x58f70f[_0x5ae0('0x6')](_0x5ae0('0x7'),attributes,{'tableName':_0x5ae0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bbb0615..b3743c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6a9=['request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetDeskAccount','DeskAccount','raw','options','where','map','include','model','attributes','ShowDeskAccount','find','lodash','util','moment','randomstring','../../mysqldb','rpc','../../config/environment','client','request','then','info','DeskAccount,\x20%s,\x20%s'];(function(_0x4ab613,_0x32b15b){var _0xe61a06=function(_0x20680f){while(--_0x20680f){_0x4ab613['push'](_0x4ab613['shift']());}};_0xe61a06(++_0x32b15b);}(_0xb6a9,0x1d4));var _0x9b6a=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0xb6a9[_0x3305de];return _0x3b5a84;};'use strict';var _=require(_0x9b6a('0x0'));var util=require(_0x9b6a('0x1'));var moment=require(_0x9b6a('0x2'));var BPromise=require('bluebird');var rs=require(_0x9b6a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9b6a('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9b6a('0x5'));var config=require(_0x9b6a('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x9b6a('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x11f104,_0x42933d,_0x1746cc){return new BPromise(function(_0x4f42fe,_0x1e0d83){return client[_0x9b6a('0x8')](_0x11f104,_0x1746cc)[_0x9b6a('0x9')](function(_0x2717de){logger[_0x9b6a('0xa')](_0x9b6a('0xb'),_0x42933d,_0x9b6a('0xc'));logger[_0x9b6a('0xd')](_0x9b6a('0xe'),_0x42933d,_0x9b6a('0xc'),JSON[_0x9b6a('0xf')](_0x2717de));if(_0x2717de[_0x9b6a('0x10')]){if(_0x2717de[_0x9b6a('0x10')][_0x9b6a('0x11')]===0x1f4){logger[_0x9b6a('0x10')](_0x9b6a('0xb'),_0x42933d,_0x2717de[_0x9b6a('0x10')][_0x9b6a('0x12')]);return _0x1e0d83(_0x2717de[_0x9b6a('0x10')][_0x9b6a('0x12')]);}logger['error'](_0x9b6a('0xb'),_0x42933d,_0x2717de[_0x9b6a('0x10')]['message']);return _0x4f42fe(_0x2717de[_0x9b6a('0x10')][_0x9b6a('0x12')]);}else{logger[_0x9b6a('0xa')](_0x9b6a('0xb'),_0x42933d,_0x9b6a('0xc'));_0x4f42fe(_0x2717de[_0x9b6a('0x13')][_0x9b6a('0x12')]);}})[_0x9b6a('0x14')](function(_0x45b6ab){logger[_0x9b6a('0x10')](_0x9b6a('0xb'),_0x42933d,_0x45b6ab);_0x1e0d83(_0x45b6ab);});});}exports[_0x9b6a('0x15')]=function(_0x494ff5){var _0x573811=this;return new Promise(function(_0x170ce6,_0x3c9e85){return db[_0x9b6a('0x16')]['findAll']({'raw':_0x494ff5['options']?_0x494ff5['options'][_0x9b6a('0x17')]===undefined?!![]:![]:!![],'where':_0x494ff5[_0x9b6a('0x18')]?_0x494ff5[_0x9b6a('0x18')][_0x9b6a('0x19')]||null:null,'attributes':_0x494ff5['options']?_0x494ff5[_0x9b6a('0x18')]['attributes']||null:null,'limit':_0x494ff5[_0x9b6a('0x18')]?_0x494ff5['options']['limit']||null:null,'include':_0x494ff5[_0x9b6a('0x18')]?_0x494ff5[_0x9b6a('0x18')]['include']?_[_0x9b6a('0x1a')](_0x494ff5[_0x9b6a('0x18')][_0x9b6a('0x1b')],function(_0x10f22f){return{'model':db[_0x10f22f[_0x9b6a('0x1c')]],'as':_0x10f22f['as'],'attributes':_0x10f22f[_0x9b6a('0x1d')],'include':_0x10f22f[_0x9b6a('0x1b')]?_[_0x9b6a('0x1a')](_0x10f22f[_0x9b6a('0x1b')],function(_0x52240e){return{'model':db[_0x52240e[_0x9b6a('0x1c')]],'as':_0x52240e['as'],'attributes':_0x52240e[_0x9b6a('0x1d')],'include':_0x52240e[_0x9b6a('0x1b')]?_['map'](_0x52240e[_0x9b6a('0x1b')],function(_0x426661){return{'model':db[_0x426661['model']],'as':_0x426661['as'],'attributes':_0x426661['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x53c235){logger[_0x9b6a('0xa')](_0x9b6a('0x15'),_0x494ff5);logger[_0x9b6a('0xd')](_0x9b6a('0x15'),_0x494ff5,JSON[_0x9b6a('0xf')](_0x53c235));_0x170ce6(_0x53c235);})[_0x9b6a('0x14')](function(_0x5957ab){logger['error']('GetDeskAccount',_0x5957ab['message'],_0x494ff5);_0x3c9e85(_0x573811[_0x9b6a('0x10')](0x1f4,_0x5957ab['message']));});});};exports[_0x9b6a('0x1e')]=function(_0x2ee67d){var _0x45777f=this;return new Promise(function(_0x4d69c4,_0x3c30ef){return db[_0x9b6a('0x16')][_0x9b6a('0x1f')]({'raw':_0x2ee67d[_0x9b6a('0x18')]?_0x2ee67d[_0x9b6a('0x18')][_0x9b6a('0x17')]===undefined?!![]:![]:!![],'where':_0x2ee67d[_0x9b6a('0x18')]?_0x2ee67d[_0x9b6a('0x18')]['where']||null:null,'attributes':_0x2ee67d[_0x9b6a('0x18')]?_0x2ee67d[_0x9b6a('0x18')][_0x9b6a('0x1d')]||null:null,'include':_0x2ee67d[_0x9b6a('0x18')]?_0x2ee67d[_0x9b6a('0x18')][_0x9b6a('0x1b')]?_[_0x9b6a('0x1a')](_0x2ee67d[_0x9b6a('0x18')][_0x9b6a('0x1b')],function(_0xed9923){return{'model':db[_0xed9923[_0x9b6a('0x1c')]],'as':_0xed9923['as'],'attributes':_0xed9923['attributes'],'include':_0xed9923[_0x9b6a('0x1b')]?_[_0x9b6a('0x1a')](_0xed9923[_0x9b6a('0x1b')],function(_0x1168ee){return{'model':db[_0x1168ee[_0x9b6a('0x1c')]],'as':_0x1168ee['as'],'attributes':_0x1168ee[_0x9b6a('0x1d')],'include':_0x1168ee['include']?_[_0x9b6a('0x1a')](_0x1168ee['include'],function(_0xf9a24b){return{'model':db[_0xf9a24b[_0x9b6a('0x1c')]],'as':_0xf9a24b['as'],'attributes':_0xf9a24b[_0x9b6a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x9b6a('0x9')](function(_0x4ec6db){logger[_0x9b6a('0xa')](_0x9b6a('0x1e'),_0x2ee67d);logger['debug']('ShowDeskAccount',_0x2ee67d,JSON[_0x9b6a('0xf')](_0x4ec6db));_0x4d69c4(_0x4ec6db);})['catch'](function(_0x2a2ea0){logger[_0x9b6a('0x10')](_0x9b6a('0x1e'),_0x2a2ea0['message'],_0x2ee67d);_0x3c30ef(_0x45777f['error'](0x1f4,_0x2a2ea0['message']));});});};
\ No newline at end of file
+var _0xe194=['raw','where','attributes','limit','include','map','model','debug','ShowDeskAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetDeskAccount','DeskAccount','options'];(function(_0x4e9d3c,_0x1f4b98){var _0x2d0825=function(_0x384676){while(--_0x384676){_0x4e9d3c['push'](_0x4e9d3c['shift']());}};_0x2d0825(++_0x1f4b98);}(_0xe194,0xb3));var _0x4e19=function(_0x492221,_0x9e2521){_0x492221=_0x492221-0x0;var _0x398bf9=_0xe194[_0x492221];return _0x398bf9;};'use strict';var _=require(_0x4e19('0x0'));var util=require(_0x4e19('0x1'));var moment=require(_0x4e19('0x2'));var BPromise=require(_0x4e19('0x3'));var rs=require(_0x4e19('0x4'));var fs=require('fs');var Redis=require(_0x4e19('0x5'));var db=require(_0x4e19('0x6'))['db'];var utils=require(_0x4e19('0x7'));var logger=require(_0x4e19('0x8'))('rpc');var config=require(_0x4e19('0x9'));var jayson=require(_0x4e19('0xa'));var client=jayson[_0x4e19('0xb')][_0x4e19('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5be70d,_0x34d1d4,_0x5e36a8){return new BPromise(function(_0x1cb06b,_0x3612b6){return client['request'](_0x5be70d,_0x5e36a8)[_0x4e19('0xd')](function(_0x517ee9){logger[_0x4e19('0xe')](_0x4e19('0xf'),_0x34d1d4,_0x4e19('0x10'));logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x34d1d4,_0x4e19('0x10'),JSON[_0x4e19('0x11')](_0x517ee9));if(_0x517ee9['error']){if(_0x517ee9[_0x4e19('0x12')][_0x4e19('0x13')]===0x1f4){logger['error'](_0x4e19('0xf'),_0x34d1d4,_0x517ee9[_0x4e19('0x12')]['message']);return _0x3612b6(_0x517ee9[_0x4e19('0x12')][_0x4e19('0x14')]);}logger[_0x4e19('0x12')](_0x4e19('0xf'),_0x34d1d4,_0x517ee9[_0x4e19('0x12')]['message']);return _0x1cb06b(_0x517ee9[_0x4e19('0x12')]['message']);}else{logger[_0x4e19('0xe')](_0x4e19('0xf'),_0x34d1d4,_0x4e19('0x10'));_0x1cb06b(_0x517ee9['result'][_0x4e19('0x14')]);}})[_0x4e19('0x15')](function(_0x5f1ac1){logger[_0x4e19('0x12')]('DeskAccount,\x20%s,\x20%s',_0x34d1d4,_0x5f1ac1);_0x3612b6(_0x5f1ac1);});});}exports[_0x4e19('0x16')]=function(_0x513f00){var _0x506dbd=this;return new Promise(function(_0x4d74dc,_0x34f602){return db[_0x4e19('0x17')]['findAll']({'raw':_0x513f00[_0x4e19('0x18')]?_0x513f00[_0x4e19('0x18')][_0x4e19('0x19')]===undefined?!![]:![]:!![],'where':_0x513f00[_0x4e19('0x18')]?_0x513f00['options'][_0x4e19('0x1a')]||null:null,'attributes':_0x513f00[_0x4e19('0x18')]?_0x513f00[_0x4e19('0x18')][_0x4e19('0x1b')]||null:null,'limit':_0x513f00[_0x4e19('0x18')]?_0x513f00[_0x4e19('0x18')][_0x4e19('0x1c')]||null:null,'include':_0x513f00['options']?_0x513f00[_0x4e19('0x18')][_0x4e19('0x1d')]?_['map'](_0x513f00[_0x4e19('0x18')][_0x4e19('0x1d')],function(_0x1154ee){return{'model':db[_0x1154ee['model']],'as':_0x1154ee['as'],'attributes':_0x1154ee['attributes'],'include':_0x1154ee[_0x4e19('0x1d')]?_[_0x4e19('0x1e')](_0x1154ee[_0x4e19('0x1d')],function(_0x1b2244){return{'model':db[_0x1b2244[_0x4e19('0x1f')]],'as':_0x1b2244['as'],'attributes':_0x1b2244['attributes'],'include':_0x1b2244[_0x4e19('0x1d')]?_[_0x4e19('0x1e')](_0x1b2244[_0x4e19('0x1d')],function(_0x126437){return{'model':db[_0x126437[_0x4e19('0x1f')]],'as':_0x126437['as'],'attributes':_0x126437[_0x4e19('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1d9807){logger[_0x4e19('0xe')](_0x4e19('0x16'),_0x513f00);logger[_0x4e19('0x20')](_0x4e19('0x16'),_0x513f00,JSON[_0x4e19('0x11')](_0x1d9807));_0x4d74dc(_0x1d9807);})['catch'](function(_0x5c9ee8){logger['error'](_0x4e19('0x16'),_0x5c9ee8[_0x4e19('0x14')],_0x513f00);_0x34f602(_0x506dbd[_0x4e19('0x12')](0x1f4,_0x5c9ee8[_0x4e19('0x14')]));});});};exports[_0x4e19('0x21')]=function(_0x28bde7){var _0x1cb204=this;return new Promise(function(_0x516482,_0x2f6b2e){return db[_0x4e19('0x17')]['find']({'raw':_0x28bde7[_0x4e19('0x18')]?_0x28bde7[_0x4e19('0x18')][_0x4e19('0x19')]===undefined?!![]:![]:!![],'where':_0x28bde7[_0x4e19('0x18')]?_0x28bde7[_0x4e19('0x18')]['where']||null:null,'attributes':_0x28bde7[_0x4e19('0x18')]?_0x28bde7[_0x4e19('0x18')][_0x4e19('0x1b')]||null:null,'include':_0x28bde7[_0x4e19('0x18')]?_0x28bde7[_0x4e19('0x18')][_0x4e19('0x1d')]?_[_0x4e19('0x1e')](_0x28bde7[_0x4e19('0x18')]['include'],function(_0x530871){return{'model':db[_0x530871[_0x4e19('0x1f')]],'as':_0x530871['as'],'attributes':_0x530871[_0x4e19('0x1b')],'include':_0x530871[_0x4e19('0x1d')]?_[_0x4e19('0x1e')](_0x530871[_0x4e19('0x1d')],function(_0x506200){return{'model':db[_0x506200['model']],'as':_0x506200['as'],'attributes':_0x506200[_0x4e19('0x1b')],'include':_0x506200['include']?_[_0x4e19('0x1e')](_0x506200['include'],function(_0x5875bd){return{'model':db[_0x5875bd[_0x4e19('0x1f')]],'as':_0x5875bd['as'],'attributes':_0x5875bd[_0x4e19('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x4e19('0xd')](function(_0x3e2cc6){logger[_0x4e19('0xe')](_0x4e19('0x21'),_0x28bde7);logger[_0x4e19('0x20')]('ShowDeskAccount',_0x28bde7,JSON[_0x4e19('0x11')](_0x3e2cc6));_0x516482(_0x3e2cc6);})['catch'](function(_0x2f03a8){logger['error'](_0x4e19('0x21'),_0x2f03a8[_0x4e19('0x14')],_0x28bde7);_0x2f6b2e(_0x1cb204[_0x4e19('0x12')](0x1f4,_0x2f03a8[_0x4e19('0x14')]));});});};
\ No newline at end of file
index 9240d88..f29016c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x2f38e0,_0x18bf82){var _0x483ffc=function(_0x2e21ed){while(--_0x2e21ed){_0x2f38e0['push'](_0x2f38e0['shift']());}};_0x483ffc(++_0x18bf82);}(_0x9c44,0x178));var _0x49c4=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x9c44[_0x5d2803];return _0xdcad2c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
+var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x5aa0d1,_0x2e4b77){var _0xd6c2cb=function(_0x4c92f1){while(--_0x4c92f1){_0x5aa0d1['push'](_0x5aa0d1['shift']());}};_0xd6c2cb(++_0x2e4b77);}(_0x3e74,0x175));var _0x43e7=function(_0x4a07c6,_0x214d78){_0x4a07c6=_0x4a07c6-0x0;var _0x2603a6=_0x3e74[_0x4a07c6];return _0x2603a6;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
index c9f3ed1..cf1a8f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x983d=['sequelize','exports','STRING'];(function(_0x533606,_0x57ab3a){var _0x53933b=function(_0x4bb7fe){while(--_0x4bb7fe){_0x533606['push'](_0x533606['shift']());}};_0x53933b(++_0x57ab3a);}(_0x983d,0x69));var _0xd983=function(_0xd4437b,_0x57e5ef){_0xd4437b=_0xd4437b-0x0;var _0x3794bd=_0x983d[_0xd4437b];return _0x3794bd;};'use strict';var Sequelize=require(_0xd983('0x0'));module[_0xd983('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd983('0x2')]}};
\ No newline at end of file
+var _0x1778=['sequelize','exports','STRING'];(function(_0x186d34,_0x417387){var _0x859d84=function(_0x55d105){while(--_0x55d105){_0x186d34['push'](_0x186d34['shift']());}};_0x859d84(++_0x417387);}(_0x1778,0x1f2));var _0x8177=function(_0x1d570a,_0xdabdba){_0x1d570a=_0x1d570a-0x0;var _0x3a0b6f=_0x1778[_0x1d570a];return _0x3a0b6f;};'use strict';var Sequelize=require(_0x8177('0x0'));module[_0x8177('0x1')]={'name':{'type':Sequelize[_0x8177('0x2')]},'description':{'type':Sequelize[_0x8177('0x2')]}};
\ No newline at end of file
index 8e9ad85..c252c1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41a6=['nolimit','getSubjects','getDescriptions','getTags','setTags','ids','eml-format','rimraf','request-promise','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','undefined','count','status','set','json','reject','destroy','then','error','name','send','index','map','DeskConfiguration','type','key','keys','intersection','query','attributes','model','fields','hasOwnProperty','limit','order','sort','pick','filters','where','VIRTUAL','merge','options','include','findAll','rows','catch','params','rawAttributes','length','includeAll','find','create','body','update','findOne','DeskField','filter','getFields'];(function(_0x6700c5,_0x5474d8){var _0x1ba7d3=function(_0x29b995){while(--_0x29b995){_0x6700c5['push'](_0x6700c5['shift']());}};_0x1ba7d3(++_0x5474d8);}(_0x41a6,0x196));var _0x641a=function(_0x29590b,_0x30d71a){_0x29590b=_0x29590b-0x0;var _0xb2d249=_0x41a6[_0x29590b];return _0xb2d249;};'use strict';var emlformat=require(_0x641a('0x0'));var rimraf=require(_0x641a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x641a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x641a('0x3'));var util=require(_0x641a('0x4'));var path=require(_0x641a('0x5'));var sox=require('sox');var csv=require(_0x641a('0x6'));var ejs=require(_0x641a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x641a('0x8'));var squel=require(_0x641a('0x9'));var crypto=require('crypto');var jsforce=require(_0x641a('0xa'));var deskjs=require(_0x641a('0xb'));var toCsv=require(_0x641a('0x6'));var querystring=require(_0x641a('0xc'));var Papa=require(_0x641a('0xd'));var Redis=require(_0x641a('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x641a('0xf'));var as=require(_0x641a('0x10'));var hardwareService=require(_0x641a('0x11'));var logger=require(_0x641a('0x12'))(_0x641a('0x13'));var utils=require(_0x641a('0x14'));var config=require(_0x641a('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x641a('0x16'))['db'];function respondWithStatusCode(_0x32fb2b,_0x596932){_0x596932=_0x596932||0xcc;return function(_0x277126){if(_0x277126){return _0x32fb2b[_0x641a('0x17')](_0x596932);}return _0x32fb2b['status'](_0x596932)[_0x641a('0x18')]();};}function respondWithResult(_0x1a939c,_0x396e74){_0x396e74=_0x396e74||0xc8;return function(_0x334802){if(_0x334802){return _0x1a939c['status'](_0x396e74)['json'](_0x334802);}};}function respondWithFilteredResult(_0x1b1f58,_0x5b5926){return function(_0x2740ea){if(_0x2740ea){var _0x8638a4=typeof _0x5b5926[_0x641a('0x19')]===_0x641a('0x1a')&&typeof _0x5b5926['limit']===_0x641a('0x1a');var _0x35e5ac=_0x2740ea[_0x641a('0x1b')];var _0x30c98b=_0x8638a4?0x0:_0x5b5926[_0x641a('0x19')];var _0x2da215=_0x8638a4?_0x2740ea[_0x641a('0x1b')]:_0x5b5926[_0x641a('0x19')]+_0x5b5926['limit'];var _0x2d7cbd;if(_0x2da215>=_0x35e5ac){_0x2da215=_0x35e5ac;_0x2d7cbd=0xc8;}else{_0x2d7cbd=0xce;}_0x1b1f58[_0x641a('0x1c')](_0x2d7cbd);return _0x1b1f58[_0x641a('0x1d')]('Content-Range',_0x30c98b+'-'+_0x2da215+'/'+_0x35e5ac)[_0x641a('0x1e')](_0x2740ea);}return null;};}function patchUpdates(_0xa69cf8){return function(_0x36f6a6){try{jsonpatch['apply'](_0x36f6a6,_0xa69cf8,!![]);}catch(_0x5b1b9c){return BPromise[_0x641a('0x1f')](_0x5b1b9c);}return _0x36f6a6['save']();};}function saveUpdates(_0x9061a9,_0x2442cf){return function(_0x5bacd5){if(_0x5bacd5){return _0x5bacd5['update'](_0x9061a9)['then'](function(_0x52eaad){return _0x52eaad;});}return null;};}function removeEntity(_0x3c5e58,_0x5e46fc){return function(_0x20ce1d){if(_0x20ce1d){return _0x20ce1d[_0x641a('0x20')]()[_0x641a('0x21')](function(){_0x3c5e58[_0x641a('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a9765,_0x1f864c){return function(_0x2bc4d){if(!_0x2bc4d){_0x2a9765[_0x641a('0x17')](0x194);}return _0x2bc4d;};}function handleError(_0x3541a1,_0x11fe98){_0x11fe98=_0x11fe98||0x1f4;return function(_0x14027d){logger[_0x641a('0x22')](_0x14027d['stack']);if(_0x14027d[_0x641a('0x23')]){delete _0x14027d[_0x641a('0x23')];}_0x3541a1[_0x641a('0x1c')](_0x11fe98)[_0x641a('0x24')](_0x14027d);};}exports[_0x641a('0x25')]=function(_0x20286f,_0x1d11b6){var _0xe73c3e={},_0x2506bd={},_0x1162db={'count':0x0,'rows':[]};var _0x46742f=_[_0x641a('0x26')](db[_0x641a('0x27')]['rawAttributes'],function(_0xbad5b2){return{'name':_0xbad5b2['fieldName'],'type':_0xbad5b2[_0x641a('0x28')][_0x641a('0x29')]};});_0x2506bd['model']=_[_0x641a('0x26')](_0x46742f,_0x641a('0x23'));_0x2506bd['query']=_[_0x641a('0x2a')](_0x20286f['query']);_0x2506bd['filters']=_[_0x641a('0x2b')](_0x2506bd['model'],_0x2506bd[_0x641a('0x2c')]);_0xe73c3e[_0x641a('0x2d')]=_[_0x641a('0x2b')](_0x2506bd[_0x641a('0x2e')],qs['fields'](_0x20286f[_0x641a('0x2c')][_0x641a('0x2f')]));_0xe73c3e['attributes']=_0xe73c3e['attributes']['length']?_0xe73c3e['attributes']:_0x2506bd[_0x641a('0x2e')];if(!_0x20286f[_0x641a('0x2c')][_0x641a('0x30')]('nolimit')){_0xe73c3e[_0x641a('0x31')]=qs[_0x641a('0x31')](_0x20286f[_0x641a('0x2c')][_0x641a('0x31')]);_0xe73c3e[_0x641a('0x19')]=qs[_0x641a('0x19')](_0x20286f[_0x641a('0x2c')]['offset']);}_0xe73c3e[_0x641a('0x32')]=qs[_0x641a('0x33')](_0x20286f[_0x641a('0x2c')][_0x641a('0x33')]);_0xe73c3e['where']=qs['filters'](_[_0x641a('0x34')](_0x20286f[_0x641a('0x2c')],_0x2506bd[_0x641a('0x35')]),_0x46742f);if(_0x20286f[_0x641a('0x2c')]['filter']){_0xe73c3e[_0x641a('0x36')]=_['merge'](_0xe73c3e[_0x641a('0x36')],{'$or':_[_0x641a('0x26')](_0x46742f,function(_0x553fd3){if(_0x553fd3['type']!==_0x641a('0x37')){var _0xd9a759={};_0xd9a759[_0x553fd3[_0x641a('0x23')]]={'$like':'%'+_0x20286f[_0x641a('0x2c')]['filter']+'%'};return _0xd9a759;}})});}_0xe73c3e=_[_0x641a('0x38')]({},_0xe73c3e,_0x20286f[_0x641a('0x39')]);var _0x174c58={'where':_0xe73c3e[_0x641a('0x36')]};return db[_0x641a('0x27')]['count'](_0x174c58)[_0x641a('0x21')](function(_0x1a1f38){_0x1162db[_0x641a('0x1b')]=_0x1a1f38;if(_0x20286f[_0x641a('0x2c')]['includeAll']){_0xe73c3e[_0x641a('0x3a')]=[{'all':!![]}];}return db[_0x641a('0x27')][_0x641a('0x3b')](_0xe73c3e);})[_0x641a('0x21')](function(_0x516e36){_0x1162db[_0x641a('0x3c')]=_0x516e36;return _0x1162db;})['then'](respondWithFilteredResult(_0x1d11b6,_0xe73c3e))[_0x641a('0x3d')](handleError(_0x1d11b6,null));};exports['show']=function(_0x50801e,_0x1378a2){var _0x43943c={'raw':![],'where':{'id':_0x50801e[_0x641a('0x3e')]['id']}},_0x3cae62={};_0x3cae62['model']=_[_0x641a('0x2a')](db[_0x641a('0x27')][_0x641a('0x3f')]);_0x3cae62[_0x641a('0x2c')]=_[_0x641a('0x2a')](_0x50801e['query']);_0x3cae62['filters']=_[_0x641a('0x2b')](_0x3cae62['model'],_0x3cae62[_0x641a('0x2c')]);_0x43943c['attributes']=_[_0x641a('0x2b')](_0x3cae62[_0x641a('0x2e')],qs[_0x641a('0x2f')](_0x50801e[_0x641a('0x2c')][_0x641a('0x2f')]));_0x43943c['attributes']=_0x43943c[_0x641a('0x2d')][_0x641a('0x40')]?_0x43943c[_0x641a('0x2d')]:_0x3cae62[_0x641a('0x2e')];if(_0x50801e['query'][_0x641a('0x41')]){_0x43943c[_0x641a('0x3a')]=[{'all':!![]}];}_0x43943c=_[_0x641a('0x38')]({},_0x43943c,_0x50801e[_0x641a('0x39')]);return db['DeskConfiguration'][_0x641a('0x42')](_0x43943c)[_0x641a('0x21')](handleEntityNotFound(_0x1378a2,null))['then'](respondWithResult(_0x1378a2,null))[_0x641a('0x3d')](handleError(_0x1378a2,null));};exports['create']=function(_0x3cff3c,_0x22a18f){return db[_0x641a('0x27')][_0x641a('0x43')](_0x3cff3c[_0x641a('0x44')],{})[_0x641a('0x21')](respondWithResult(_0x22a18f,0xc9))[_0x641a('0x3d')](handleError(_0x22a18f,null));};exports[_0x641a('0x45')]=function(_0x153add,_0xc7a13c){if(_0x153add[_0x641a('0x44')]['id']){delete _0x153add[_0x641a('0x44')]['id'];}return db[_0x641a('0x27')]['find']({'where':{'id':_0x153add[_0x641a('0x3e')]['id']}})[_0x641a('0x21')](handleEntityNotFound(_0xc7a13c,null))[_0x641a('0x21')](saveUpdates(_0x153add[_0x641a('0x44')],null))['then'](respondWithResult(_0xc7a13c,null))[_0x641a('0x3d')](handleError(_0xc7a13c,null));};exports[_0x641a('0x20')]=function(_0x501810,_0xf8b7){return db[_0x641a('0x27')][_0x641a('0x42')]({'where':{'id':_0x501810[_0x641a('0x3e')]['id']}})['then'](handleEntityNotFound(_0xf8b7,null))[_0x641a('0x21')](removeEntity(_0xf8b7,null))[_0x641a('0x3d')](handleError(_0xf8b7,null));};exports['getFields']=function(_0x206afe,_0x2380f4,_0x113bd3){var _0x5f1b1a={};var _0x95066c={};var _0x5e68a6;var _0x5a8b4e;return db[_0x641a('0x27')][_0x641a('0x46')]({'where':{'id':_0x206afe['params']['id']}})[_0x641a('0x21')](handleEntityNotFound(_0x2380f4,null))[_0x641a('0x21')](function(_0xf91c80){if(_0xf91c80){_0x5e68a6=_0xf91c80;_0x95066c[_0x641a('0x2e')]=_[_0x641a('0x2a')](db[_0x641a('0x47')]['rawAttributes']);_0x95066c[_0x641a('0x2c')]=_[_0x641a('0x2a')](_0x206afe[_0x641a('0x2c')]);_0x95066c[_0x641a('0x35')]=_['intersection'](_0x95066c['model'],_0x95066c[_0x641a('0x2c')]);_0x5f1b1a[_0x641a('0x2d')]=_[_0x641a('0x2b')](_0x95066c[_0x641a('0x2e')],qs['fields'](_0x206afe['query'][_0x641a('0x2f')]));_0x5f1b1a['attributes']=_0x5f1b1a[_0x641a('0x2d')][_0x641a('0x40')]?_0x5f1b1a[_0x641a('0x2d')]:_0x95066c['model'];_0x5f1b1a[_0x641a('0x32')]=qs[_0x641a('0x33')](_0x206afe[_0x641a('0x2c')][_0x641a('0x33')]);_0x5f1b1a[_0x641a('0x36')]=qs[_0x641a('0x35')](_[_0x641a('0x34')](_0x206afe[_0x641a('0x2c')],_0x95066c[_0x641a('0x35')]));if(_0x206afe[_0x641a('0x2c')][_0x641a('0x48')]){_0x5f1b1a[_0x641a('0x36')]=_[_0x641a('0x38')](_0x5f1b1a['where'],{'$or':_['map'](_0x5f1b1a[_0x641a('0x2d')],function(_0x32edc0){var _0x34b873={};_0x34b873[_0x32edc0]={'$like':'%'+_0x206afe[_0x641a('0x2c')][_0x641a('0x48')]+'%'};return _0x34b873;})});}_0x5f1b1a=_[_0x641a('0x38')]({},_0x5f1b1a,_0x206afe[_0x641a('0x39')]);return _0x5e68a6[_0x641a('0x49')](_0x5f1b1a);}})['then'](function(_0x5df9fa){if(_0x5df9fa){_0x5a8b4e=_0x5df9fa[_0x641a('0x40')];if(!_0x206afe[_0x641a('0x2c')][_0x641a('0x30')](_0x641a('0x4a'))){_0x5f1b1a['limit']=qs[_0x641a('0x31')](_0x206afe[_0x641a('0x2c')]['limit']);_0x5f1b1a[_0x641a('0x19')]=qs['offset'](_0x206afe[_0x641a('0x2c')][_0x641a('0x19')]);}return _0x5e68a6['getFields'](_0x5f1b1a);}})[_0x641a('0x21')](function(_0x34f0df){if(_0x34f0df){return _0x34f0df?{'count':_0x5a8b4e,'rows':_0x34f0df}:null;}})['then'](respondWithResult(_0x2380f4,null))['catch'](handleError(_0x2380f4,null));};exports['getSubjects']=function(_0x31a127,_0x368a3c,_0x236326){var _0x2c91a7={};var _0x4c2680={};var _0x5b1281;var _0x310365;return db['DeskConfiguration']['findOne']({'where':{'id':_0x31a127[_0x641a('0x3e')]['id']}})[_0x641a('0x21')](handleEntityNotFound(_0x368a3c,null))[_0x641a('0x21')](function(_0x25712c){if(_0x25712c){_0x5b1281=_0x25712c;_0x4c2680[_0x641a('0x2e')]=_[_0x641a('0x2a')](db[_0x641a('0x47')]['rawAttributes']);_0x4c2680[_0x641a('0x2c')]=_[_0x641a('0x2a')](_0x31a127[_0x641a('0x2c')]);_0x4c2680[_0x641a('0x35')]=_[_0x641a('0x2b')](_0x4c2680[_0x641a('0x2e')],_0x4c2680[_0x641a('0x2c')]);_0x2c91a7[_0x641a('0x2d')]=_[_0x641a('0x2b')](_0x4c2680[_0x641a('0x2e')],qs[_0x641a('0x2f')](_0x31a127['query'][_0x641a('0x2f')]));_0x2c91a7[_0x641a('0x2d')]=_0x2c91a7[_0x641a('0x2d')][_0x641a('0x40')]?_0x2c91a7[_0x641a('0x2d')]:_0x4c2680[_0x641a('0x2e')];_0x2c91a7[_0x641a('0x32')]=qs[_0x641a('0x33')](_0x31a127['query'][_0x641a('0x33')]);_0x2c91a7[_0x641a('0x36')]=qs[_0x641a('0x35')](_[_0x641a('0x34')](_0x31a127[_0x641a('0x2c')],_0x4c2680[_0x641a('0x35')]));if(_0x31a127['query']['filter']){_0x2c91a7[_0x641a('0x36')]=_['merge'](_0x2c91a7[_0x641a('0x36')],{'$or':_['map'](_0x2c91a7[_0x641a('0x2d')],function(_0x2f6aee){var _0x49edca={};_0x49edca[_0x2f6aee]={'$like':'%'+_0x31a127[_0x641a('0x2c')][_0x641a('0x48')]+'%'};return _0x49edca;})});}_0x2c91a7=_[_0x641a('0x38')]({},_0x2c91a7,_0x31a127[_0x641a('0x39')]);return _0x5b1281[_0x641a('0x4b')](_0x2c91a7);}})[_0x641a('0x21')](function(_0x5a1e5){if(_0x5a1e5){_0x310365=_0x5a1e5[_0x641a('0x40')];if(!_0x31a127[_0x641a('0x2c')]['hasOwnProperty']('nolimit')){_0x2c91a7[_0x641a('0x31')]=qs[_0x641a('0x31')](_0x31a127[_0x641a('0x2c')][_0x641a('0x31')]);_0x2c91a7[_0x641a('0x19')]=qs[_0x641a('0x19')](_0x31a127[_0x641a('0x2c')][_0x641a('0x19')]);}return _0x5b1281[_0x641a('0x4b')](_0x2c91a7);}})[_0x641a('0x21')](function(_0x44eeb2){if(_0x44eeb2){return _0x44eeb2?{'count':_0x310365,'rows':_0x44eeb2}:null;}})[_0x641a('0x21')](respondWithResult(_0x368a3c,null))[_0x641a('0x3d')](handleError(_0x368a3c,null));};exports[_0x641a('0x4c')]=function(_0x5d213d,_0x5908aa,_0x28d0e0){var _0x1785fd={};var _0x392478={};var _0xb33335;var _0x548d59;return db[_0x641a('0x27')][_0x641a('0x46')]({'where':{'id':_0x5d213d[_0x641a('0x3e')]['id']}})[_0x641a('0x21')](handleEntityNotFound(_0x5908aa,null))[_0x641a('0x21')](function(_0x54b0c4){if(_0x54b0c4){_0xb33335=_0x54b0c4;_0x392478[_0x641a('0x2e')]=_['keys'](db[_0x641a('0x47')][_0x641a('0x3f')]);_0x392478[_0x641a('0x2c')]=_['keys'](_0x5d213d[_0x641a('0x2c')]);_0x392478[_0x641a('0x35')]=_[_0x641a('0x2b')](_0x392478[_0x641a('0x2e')],_0x392478['query']);_0x1785fd[_0x641a('0x2d')]=_[_0x641a('0x2b')](_0x392478[_0x641a('0x2e')],qs[_0x641a('0x2f')](_0x5d213d[_0x641a('0x2c')][_0x641a('0x2f')]));_0x1785fd[_0x641a('0x2d')]=_0x1785fd[_0x641a('0x2d')][_0x641a('0x40')]?_0x1785fd['attributes']:_0x392478[_0x641a('0x2e')];_0x1785fd[_0x641a('0x32')]=qs['sort'](_0x5d213d[_0x641a('0x2c')][_0x641a('0x33')]);_0x1785fd[_0x641a('0x36')]=qs[_0x641a('0x35')](_['pick'](_0x5d213d['query'],_0x392478[_0x641a('0x35')]));if(_0x5d213d[_0x641a('0x2c')]['filter']){_0x1785fd[_0x641a('0x36')]=_[_0x641a('0x38')](_0x1785fd[_0x641a('0x36')],{'$or':_[_0x641a('0x26')](_0x1785fd[_0x641a('0x2d')],function(_0x30d659){var _0x12f23={};_0x12f23[_0x30d659]={'$like':'%'+_0x5d213d[_0x641a('0x2c')][_0x641a('0x48')]+'%'};return _0x12f23;})});}_0x1785fd=_[_0x641a('0x38')]({},_0x1785fd,_0x5d213d[_0x641a('0x39')]);return _0xb33335[_0x641a('0x4c')](_0x1785fd);}})['then'](function(_0x29e098){if(_0x29e098){_0x548d59=_0x29e098[_0x641a('0x40')];if(!_0x5d213d[_0x641a('0x2c')][_0x641a('0x30')]('nolimit')){_0x1785fd[_0x641a('0x31')]=qs['limit'](_0x5d213d[_0x641a('0x2c')][_0x641a('0x31')]);_0x1785fd[_0x641a('0x19')]=qs[_0x641a('0x19')](_0x5d213d['query'][_0x641a('0x19')]);}return _0xb33335['getDescriptions'](_0x1785fd);}})[_0x641a('0x21')](function(_0x81c1c7){if(_0x81c1c7){return _0x81c1c7?{'count':_0x548d59,'rows':_0x81c1c7}:null;}})[_0x641a('0x21')](respondWithResult(_0x5908aa,null))[_0x641a('0x3d')](handleError(_0x5908aa,null));};exports[_0x641a('0x4d')]=function(_0x37119d,_0x297b5b,_0x141cb3){var _0x2ee807={};var _0x506665={};var _0x340cbf;var _0x25603b;return db[_0x641a('0x27')]['findOne']({'where':{'id':_0x37119d[_0x641a('0x3e')]['id']}})['then'](handleEntityNotFound(_0x297b5b,null))[_0x641a('0x21')](function(_0x173afe){if(_0x173afe){_0x340cbf=_0x173afe;_0x506665[_0x641a('0x2e')]=_[_0x641a('0x2a')](db['Tag'][_0x641a('0x3f')]);_0x506665[_0x641a('0x2c')]=_[_0x641a('0x2a')](_0x37119d[_0x641a('0x2c')]);_0x506665[_0x641a('0x35')]=_[_0x641a('0x2b')](_0x506665[_0x641a('0x2e')],_0x506665[_0x641a('0x2c')]);_0x2ee807[_0x641a('0x2d')]=_[_0x641a('0x2b')](_0x506665['model'],qs[_0x641a('0x2f')](_0x37119d['query']['fields']));_0x2ee807['attributes']=_0x2ee807[_0x641a('0x2d')][_0x641a('0x40')]?_0x2ee807[_0x641a('0x2d')]:_0x506665[_0x641a('0x2e')];_0x2ee807[_0x641a('0x32')]=qs[_0x641a('0x33')](_0x37119d['query'][_0x641a('0x33')]);_0x2ee807[_0x641a('0x36')]=qs[_0x641a('0x35')](_[_0x641a('0x34')](_0x37119d[_0x641a('0x2c')],_0x506665[_0x641a('0x35')]));if(_0x37119d[_0x641a('0x2c')]['filter']){_0x2ee807[_0x641a('0x36')]=_[_0x641a('0x38')](_0x2ee807[_0x641a('0x36')],{'$or':_[_0x641a('0x26')](_0x2ee807[_0x641a('0x2d')],function(_0xd58a5e){var _0x1db718={};_0x1db718[_0xd58a5e]={'$like':'%'+_0x37119d[_0x641a('0x2c')]['filter']+'%'};return _0x1db718;})});}_0x2ee807=_['merge']({},_0x2ee807,_0x37119d[_0x641a('0x39')]);return _0x340cbf[_0x641a('0x4d')](_0x2ee807);}})[_0x641a('0x21')](function(_0x46532c){if(_0x46532c){_0x25603b=_0x46532c[_0x641a('0x40')];if(!_0x37119d[_0x641a('0x2c')][_0x641a('0x30')]('nolimit')){_0x2ee807[_0x641a('0x31')]=qs[_0x641a('0x31')](_0x37119d['query'][_0x641a('0x31')]);_0x2ee807['offset']=qs['offset'](_0x37119d[_0x641a('0x2c')][_0x641a('0x19')]);}return _0x340cbf[_0x641a('0x4d')](_0x2ee807);}})[_0x641a('0x21')](function(_0x50a5a2){if(_0x50a5a2){return _0x50a5a2?{'count':_0x25603b,'rows':_0x50a5a2}:null;}})['then'](respondWithResult(_0x297b5b,null))[_0x641a('0x3d')](handleError(_0x297b5b,null));};exports[_0x641a('0x4e')]=function(_0x560dbd,_0x48891e,_0x3597cf){if(_0x560dbd[_0x641a('0x44')]['id']){delete _0x560dbd[_0x641a('0x44')]['id'];}return db[_0x641a('0x27')][_0x641a('0x46')]({'where':{'id':_0x560dbd[_0x641a('0x3e')]['id']}})[_0x641a('0x21')](handleEntityNotFound(_0x48891e,null))[_0x641a('0x21')](function(_0x334813){if(_0x334813){return _0x334813['setTags'](_0x560dbd[_0x641a('0x44')][_0x641a('0x4f')]||[]);}return null;})[_0x641a('0x21')](respondWithResult(_0x48891e,null))[_0x641a('0x3d')](handleError(_0x48891e,null));};
\ No newline at end of file
+var _0x44e2=['rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','where','merge','VIRTUAL','filter','options','DeskConfiguration','includeAll','include','findAll','catch','show','params','find','create','body','getFields','findOne','DeskField','pick','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index'];(function(_0x1e396c,_0x3526f8){var _0x5ecab3=function(_0x4b5a3e){while(--_0x4b5a3e){_0x1e396c['push'](_0x1e396c['shift']());}};_0x5ecab3(++_0x3526f8);}(_0x44e2,0xd6));var _0x244e=function(_0x1bdd02,_0x37f8c3){_0x1bdd02=_0x1bdd02-0x0;var _0x49e054=_0x44e2[_0x1bdd02];return _0x49e054;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x244e('0x0'));var zipdir=require(_0x244e('0x1'));var jsonpatch=require(_0x244e('0x2'));var rp=require('request-promise');var moment=require(_0x244e('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x244e('0x4'));var path=require(_0x244e('0x5'));var sox=require(_0x244e('0x6'));var csv=require('to-csv');var ejs=require(_0x244e('0x7'));var fs=require('fs');var fs_extra=require(_0x244e('0x8'));var _=require(_0x244e('0x9'));var squel=require(_0x244e('0xa'));var crypto=require(_0x244e('0xb'));var jsforce=require(_0x244e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x244e('0xd'));var querystring=require(_0x244e('0xe'));var Papa=require(_0x244e('0xf'));var Redis=require(_0x244e('0x10'));var authService=require(_0x244e('0x11'));var qs=require(_0x244e('0x12'));var as=require(_0x244e('0x13'));var hardwareService=require(_0x244e('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x244e('0x15'));var licenseUtil=require(_0x244e('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13ab7f,_0x3f636d){_0x3f636d=_0x3f636d||0xcc;return function(_0x57fa52){if(_0x57fa52){return _0x13ab7f[_0x244e('0x17')](_0x3f636d);}return _0x13ab7f[_0x244e('0x18')](_0x3f636d)[_0x244e('0x19')]();};}function respondWithResult(_0x4f2876,_0xbc6628){_0xbc6628=_0xbc6628||0xc8;return function(_0x4bd5c2){if(_0x4bd5c2){return _0x4f2876[_0x244e('0x18')](_0xbc6628)[_0x244e('0x1a')](_0x4bd5c2);}};}function respondWithFilteredResult(_0x169a20,_0x427e2c){return function(_0x4987f1){if(_0x4987f1){var _0x275a90=typeof _0x427e2c[_0x244e('0x1b')]===_0x244e('0x1c')&&typeof _0x427e2c[_0x244e('0x1d')]===_0x244e('0x1c');var _0x387672=_0x4987f1['count'];var _0xf8b2b=_0x275a90?0x0:_0x427e2c[_0x244e('0x1b')];var _0x1161e7=_0x275a90?_0x4987f1[_0x244e('0x1e')]:_0x427e2c['offset']+_0x427e2c[_0x244e('0x1d')];var _0x3b6a65;if(_0x1161e7>=_0x387672){_0x1161e7=_0x387672;_0x3b6a65=0xc8;}else{_0x3b6a65=0xce;}_0x169a20[_0x244e('0x18')](_0x3b6a65);return _0x169a20[_0x244e('0x1f')](_0x244e('0x20'),_0xf8b2b+'-'+_0x1161e7+'/'+_0x387672)[_0x244e('0x1a')](_0x4987f1);}return null;};}function patchUpdates(_0x588ad0){return function(_0x1e21ec){try{jsonpatch[_0x244e('0x21')](_0x1e21ec,_0x588ad0,!![]);}catch(_0x148dc8){return BPromise[_0x244e('0x22')](_0x148dc8);}return _0x1e21ec[_0x244e('0x23')]();};}function saveUpdates(_0x2e2371,_0x39e685){return function(_0x203b50){if(_0x203b50){return _0x203b50[_0x244e('0x24')](_0x2e2371)[_0x244e('0x25')](function(_0x1afa09){return _0x1afa09;});}return null;};}function removeEntity(_0x153785,_0x2c607f){return function(_0x22293d){if(_0x22293d){return _0x22293d[_0x244e('0x26')]()[_0x244e('0x25')](function(){_0x153785[_0x244e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ea800,_0x362cc8){return function(_0x4de8bf){if(!_0x4de8bf){_0x4ea800[_0x244e('0x17')](0x194);}return _0x4de8bf;};}function handleError(_0x3d26bc,_0x9b08de){_0x9b08de=_0x9b08de||0x1f4;return function(_0xa8614d){logger[_0x244e('0x27')](_0xa8614d[_0x244e('0x28')]);if(_0xa8614d[_0x244e('0x29')]){delete _0xa8614d[_0x244e('0x29')];}_0x3d26bc[_0x244e('0x18')](_0x9b08de)[_0x244e('0x2a')](_0xa8614d);};}exports[_0x244e('0x2b')]=function(_0x13b9f9,_0x1c151e){var _0x39511c={},_0x454273={},_0x48797b={'count':0x0,'rows':[]};var _0x3b2068=_['map'](db['DeskConfiguration'][_0x244e('0x2c')],function(_0x4cf6e6){return{'name':_0x4cf6e6[_0x244e('0x2d')],'type':_0x4cf6e6[_0x244e('0x2e')][_0x244e('0x2f')]};});_0x454273[_0x244e('0x30')]=_[_0x244e('0x31')](_0x3b2068,_0x244e('0x29'));_0x454273['query']=_[_0x244e('0x32')](_0x13b9f9[_0x244e('0x33')]);_0x454273['filters']=_[_0x244e('0x34')](_0x454273[_0x244e('0x30')],_0x454273[_0x244e('0x33')]);_0x39511c[_0x244e('0x35')]=_[_0x244e('0x34')](_0x454273[_0x244e('0x30')],qs['fields'](_0x13b9f9['query'][_0x244e('0x36')]));_0x39511c[_0x244e('0x35')]=_0x39511c[_0x244e('0x35')][_0x244e('0x37')]?_0x39511c[_0x244e('0x35')]:_0x454273['model'];if(!_0x13b9f9[_0x244e('0x33')][_0x244e('0x38')]('nolimit')){_0x39511c['limit']=qs[_0x244e('0x1d')](_0x13b9f9[_0x244e('0x33')]['limit']);_0x39511c[_0x244e('0x1b')]=qs[_0x244e('0x1b')](_0x13b9f9[_0x244e('0x33')][_0x244e('0x1b')]);}_0x39511c[_0x244e('0x39')]=qs[_0x244e('0x3a')](_0x13b9f9['query'][_0x244e('0x3a')]);_0x39511c['where']=qs[_0x244e('0x3b')](_['pick'](_0x13b9f9[_0x244e('0x33')],_0x454273[_0x244e('0x3b')]),_0x3b2068);if(_0x13b9f9[_0x244e('0x33')]['filter']){_0x39511c[_0x244e('0x3c')]=_[_0x244e('0x3d')](_0x39511c['where'],{'$or':_[_0x244e('0x31')](_0x3b2068,function(_0x1a2bec){if(_0x1a2bec[_0x244e('0x2e')]!==_0x244e('0x3e')){var _0xb9c775={};_0xb9c775[_0x1a2bec[_0x244e('0x29')]]={'$like':'%'+_0x13b9f9[_0x244e('0x33')][_0x244e('0x3f')]+'%'};return _0xb9c775;}})});}_0x39511c=_[_0x244e('0x3d')]({},_0x39511c,_0x13b9f9[_0x244e('0x40')]);var _0x2165fd={'where':_0x39511c[_0x244e('0x3c')]};return db[_0x244e('0x41')][_0x244e('0x1e')](_0x2165fd)[_0x244e('0x25')](function(_0x1e4934){_0x48797b[_0x244e('0x1e')]=_0x1e4934;if(_0x13b9f9[_0x244e('0x33')][_0x244e('0x42')]){_0x39511c[_0x244e('0x43')]=[{'all':!![]}];}return db[_0x244e('0x41')][_0x244e('0x44')](_0x39511c);})[_0x244e('0x25')](function(_0x2c093c){_0x48797b['rows']=_0x2c093c;return _0x48797b;})[_0x244e('0x25')](respondWithFilteredResult(_0x1c151e,_0x39511c))[_0x244e('0x45')](handleError(_0x1c151e,null));};exports[_0x244e('0x46')]=function(_0x4fde28,_0x322ab4){var _0x26b257={'raw':![],'where':{'id':_0x4fde28[_0x244e('0x47')]['id']}},_0x1991ea={};_0x1991ea[_0x244e('0x30')]=_[_0x244e('0x32')](db['DeskConfiguration'][_0x244e('0x2c')]);_0x1991ea[_0x244e('0x33')]=_[_0x244e('0x32')](_0x4fde28[_0x244e('0x33')]);_0x1991ea['filters']=_[_0x244e('0x34')](_0x1991ea[_0x244e('0x30')],_0x1991ea[_0x244e('0x33')]);_0x26b257[_0x244e('0x35')]=_[_0x244e('0x34')](_0x1991ea['model'],qs['fields'](_0x4fde28[_0x244e('0x33')]['fields']));_0x26b257[_0x244e('0x35')]=_0x26b257[_0x244e('0x35')][_0x244e('0x37')]?_0x26b257[_0x244e('0x35')]:_0x1991ea[_0x244e('0x30')];if(_0x4fde28[_0x244e('0x33')][_0x244e('0x42')]){_0x26b257[_0x244e('0x43')]=[{'all':!![]}];}_0x26b257=_['merge']({},_0x26b257,_0x4fde28[_0x244e('0x40')]);return db['DeskConfiguration'][_0x244e('0x48')](_0x26b257)['then'](handleEntityNotFound(_0x322ab4,null))[_0x244e('0x25')](respondWithResult(_0x322ab4,null))[_0x244e('0x45')](handleError(_0x322ab4,null));};exports[_0x244e('0x49')]=function(_0x5a7dcd,_0x2810cb){return db[_0x244e('0x41')][_0x244e('0x49')](_0x5a7dcd[_0x244e('0x4a')],{})[_0x244e('0x25')](respondWithResult(_0x2810cb,0xc9))[_0x244e('0x45')](handleError(_0x2810cb,null));};exports[_0x244e('0x24')]=function(_0x4145a0,_0x1daa1b){if(_0x4145a0[_0x244e('0x4a')]['id']){delete _0x4145a0[_0x244e('0x4a')]['id'];}return db[_0x244e('0x41')]['find']({'where':{'id':_0x4145a0[_0x244e('0x47')]['id']}})['then'](handleEntityNotFound(_0x1daa1b,null))[_0x244e('0x25')](saveUpdates(_0x4145a0[_0x244e('0x4a')],null))[_0x244e('0x25')](respondWithResult(_0x1daa1b,null))['catch'](handleError(_0x1daa1b,null));};exports['destroy']=function(_0x4632b8,_0xa67337){return db[_0x244e('0x41')][_0x244e('0x48')]({'where':{'id':_0x4632b8[_0x244e('0x47')]['id']}})['then'](handleEntityNotFound(_0xa67337,null))[_0x244e('0x25')](removeEntity(_0xa67337,null))[_0x244e('0x45')](handleError(_0xa67337,null));};exports[_0x244e('0x4b')]=function(_0x5b0a9f,_0x5d2853,_0x2eab53){var _0xaf3aa6={};var _0x766b44={};var _0x390b3f;var _0x8245f;return db[_0x244e('0x41')][_0x244e('0x4c')]({'where':{'id':_0x5b0a9f[_0x244e('0x47')]['id']}})[_0x244e('0x25')](handleEntityNotFound(_0x5d2853,null))[_0x244e('0x25')](function(_0x4e5dfc){if(_0x4e5dfc){_0x390b3f=_0x4e5dfc;_0x766b44[_0x244e('0x30')]=_[_0x244e('0x32')](db[_0x244e('0x4d')][_0x244e('0x2c')]);_0x766b44[_0x244e('0x33')]=_[_0x244e('0x32')](_0x5b0a9f[_0x244e('0x33')]);_0x766b44[_0x244e('0x3b')]=_[_0x244e('0x34')](_0x766b44['model'],_0x766b44[_0x244e('0x33')]);_0xaf3aa6['attributes']=_['intersection'](_0x766b44[_0x244e('0x30')],qs[_0x244e('0x36')](_0x5b0a9f[_0x244e('0x33')][_0x244e('0x36')]));_0xaf3aa6[_0x244e('0x35')]=_0xaf3aa6[_0x244e('0x35')][_0x244e('0x37')]?_0xaf3aa6[_0x244e('0x35')]:_0x766b44[_0x244e('0x30')];_0xaf3aa6[_0x244e('0x39')]=qs[_0x244e('0x3a')](_0x5b0a9f[_0x244e('0x33')][_0x244e('0x3a')]);_0xaf3aa6['where']=qs[_0x244e('0x3b')](_[_0x244e('0x4e')](_0x5b0a9f[_0x244e('0x33')],_0x766b44['filters']));if(_0x5b0a9f[_0x244e('0x33')][_0x244e('0x3f')]){_0xaf3aa6['where']=_[_0x244e('0x3d')](_0xaf3aa6[_0x244e('0x3c')],{'$or':_[_0x244e('0x31')](_0xaf3aa6[_0x244e('0x35')],function(_0x54f97c){var _0xe2c7d5={};_0xe2c7d5[_0x54f97c]={'$like':'%'+_0x5b0a9f[_0x244e('0x33')][_0x244e('0x3f')]+'%'};return _0xe2c7d5;})});}_0xaf3aa6=_[_0x244e('0x3d')]({},_0xaf3aa6,_0x5b0a9f[_0x244e('0x40')]);return _0x390b3f[_0x244e('0x4b')](_0xaf3aa6);}})[_0x244e('0x25')](function(_0x33d6de){if(_0x33d6de){_0x8245f=_0x33d6de['length'];if(!_0x5b0a9f[_0x244e('0x33')][_0x244e('0x38')](_0x244e('0x4f'))){_0xaf3aa6[_0x244e('0x1d')]=qs[_0x244e('0x1d')](_0x5b0a9f[_0x244e('0x33')][_0x244e('0x1d')]);_0xaf3aa6[_0x244e('0x1b')]=qs['offset'](_0x5b0a9f[_0x244e('0x33')][_0x244e('0x1b')]);}return _0x390b3f['getFields'](_0xaf3aa6);}})[_0x244e('0x25')](function(_0x139347){if(_0x139347){return _0x139347?{'count':_0x8245f,'rows':_0x139347}:null;}})[_0x244e('0x25')](respondWithResult(_0x5d2853,null))[_0x244e('0x45')](handleError(_0x5d2853,null));};exports[_0x244e('0x50')]=function(_0x55766b,_0x2cdbd6,_0x2eb596){var _0xc4d1cf={};var _0xbc9591={};var _0x5296b8;var _0x42dea5;return db[_0x244e('0x41')][_0x244e('0x4c')]({'where':{'id':_0x55766b[_0x244e('0x47')]['id']}})[_0x244e('0x25')](handleEntityNotFound(_0x2cdbd6,null))[_0x244e('0x25')](function(_0x48eccd){if(_0x48eccd){_0x5296b8=_0x48eccd;_0xbc9591['model']=_[_0x244e('0x32')](db[_0x244e('0x4d')]['rawAttributes']);_0xbc9591['query']=_[_0x244e('0x32')](_0x55766b[_0x244e('0x33')]);_0xbc9591['filters']=_['intersection'](_0xbc9591[_0x244e('0x30')],_0xbc9591[_0x244e('0x33')]);_0xc4d1cf[_0x244e('0x35')]=_['intersection'](_0xbc9591[_0x244e('0x30')],qs[_0x244e('0x36')](_0x55766b[_0x244e('0x33')]['fields']));_0xc4d1cf[_0x244e('0x35')]=_0xc4d1cf['attributes'][_0x244e('0x37')]?_0xc4d1cf[_0x244e('0x35')]:_0xbc9591[_0x244e('0x30')];_0xc4d1cf['order']=qs[_0x244e('0x3a')](_0x55766b[_0x244e('0x33')][_0x244e('0x3a')]);_0xc4d1cf[_0x244e('0x3c')]=qs['filters'](_[_0x244e('0x4e')](_0x55766b[_0x244e('0x33')],_0xbc9591[_0x244e('0x3b')]));if(_0x55766b[_0x244e('0x33')][_0x244e('0x3f')]){_0xc4d1cf[_0x244e('0x3c')]=_[_0x244e('0x3d')](_0xc4d1cf[_0x244e('0x3c')],{'$or':_[_0x244e('0x31')](_0xc4d1cf[_0x244e('0x35')],function(_0x47c93a){var _0x306a63={};_0x306a63[_0x47c93a]={'$like':'%'+_0x55766b['query'][_0x244e('0x3f')]+'%'};return _0x306a63;})});}_0xc4d1cf=_[_0x244e('0x3d')]({},_0xc4d1cf,_0x55766b[_0x244e('0x40')]);return _0x5296b8['getSubjects'](_0xc4d1cf);}})[_0x244e('0x25')](function(_0x2220d2){if(_0x2220d2){_0x42dea5=_0x2220d2[_0x244e('0x37')];if(!_0x55766b[_0x244e('0x33')][_0x244e('0x38')](_0x244e('0x4f'))){_0xc4d1cf[_0x244e('0x1d')]=qs['limit'](_0x55766b[_0x244e('0x33')][_0x244e('0x1d')]);_0xc4d1cf['offset']=qs['offset'](_0x55766b[_0x244e('0x33')][_0x244e('0x1b')]);}return _0x5296b8[_0x244e('0x50')](_0xc4d1cf);}})[_0x244e('0x25')](function(_0x20b1de){if(_0x20b1de){return _0x20b1de?{'count':_0x42dea5,'rows':_0x20b1de}:null;}})[_0x244e('0x25')](respondWithResult(_0x2cdbd6,null))[_0x244e('0x45')](handleError(_0x2cdbd6,null));};exports[_0x244e('0x51')]=function(_0x34a67c,_0x356785,_0x59fabd){var _0x24a5c9={};var _0x1a9994={};var _0x50352e;var _0x48dd8c;return db[_0x244e('0x41')][_0x244e('0x4c')]({'where':{'id':_0x34a67c['params']['id']}})[_0x244e('0x25')](handleEntityNotFound(_0x356785,null))[_0x244e('0x25')](function(_0x37d8c6){if(_0x37d8c6){_0x50352e=_0x37d8c6;_0x1a9994[_0x244e('0x30')]=_[_0x244e('0x32')](db['DeskField'][_0x244e('0x2c')]);_0x1a9994['query']=_[_0x244e('0x32')](_0x34a67c[_0x244e('0x33')]);_0x1a9994[_0x244e('0x3b')]=_[_0x244e('0x34')](_0x1a9994[_0x244e('0x30')],_0x1a9994[_0x244e('0x33')]);_0x24a5c9[_0x244e('0x35')]=_['intersection'](_0x1a9994[_0x244e('0x30')],qs['fields'](_0x34a67c['query'][_0x244e('0x36')]));_0x24a5c9[_0x244e('0x35')]=_0x24a5c9[_0x244e('0x35')][_0x244e('0x37')]?_0x24a5c9[_0x244e('0x35')]:_0x1a9994[_0x244e('0x30')];_0x24a5c9[_0x244e('0x39')]=qs[_0x244e('0x3a')](_0x34a67c[_0x244e('0x33')]['sort']);_0x24a5c9[_0x244e('0x3c')]=qs['filters'](_[_0x244e('0x4e')](_0x34a67c[_0x244e('0x33')],_0x1a9994[_0x244e('0x3b')]));if(_0x34a67c[_0x244e('0x33')][_0x244e('0x3f')]){_0x24a5c9[_0x244e('0x3c')]=_[_0x244e('0x3d')](_0x24a5c9[_0x244e('0x3c')],{'$or':_['map'](_0x24a5c9[_0x244e('0x35')],function(_0x2aad1c){var _0x191c2f={};_0x191c2f[_0x2aad1c]={'$like':'%'+_0x34a67c[_0x244e('0x33')]['filter']+'%'};return _0x191c2f;})});}_0x24a5c9=_[_0x244e('0x3d')]({},_0x24a5c9,_0x34a67c[_0x244e('0x40')]);return _0x50352e[_0x244e('0x51')](_0x24a5c9);}})['then'](function(_0x4bcff4){if(_0x4bcff4){_0x48dd8c=_0x4bcff4[_0x244e('0x37')];if(!_0x34a67c[_0x244e('0x33')][_0x244e('0x38')](_0x244e('0x4f'))){_0x24a5c9[_0x244e('0x1d')]=qs[_0x244e('0x1d')](_0x34a67c[_0x244e('0x33')]['limit']);_0x24a5c9[_0x244e('0x1b')]=qs[_0x244e('0x1b')](_0x34a67c[_0x244e('0x33')][_0x244e('0x1b')]);}return _0x50352e[_0x244e('0x51')](_0x24a5c9);}})['then'](function(_0x35ef1e){if(_0x35ef1e){return _0x35ef1e?{'count':_0x48dd8c,'rows':_0x35ef1e}:null;}})['then'](respondWithResult(_0x356785,null))[_0x244e('0x45')](handleError(_0x356785,null));};exports[_0x244e('0x52')]=function(_0x49dfe9,_0x1728f0,_0x20978c){var _0x434f50={};var _0x1a49f5={};var _0x43de9c;var _0x188677;return db[_0x244e('0x41')]['findOne']({'where':{'id':_0x49dfe9[_0x244e('0x47')]['id']}})[_0x244e('0x25')](handleEntityNotFound(_0x1728f0,null))[_0x244e('0x25')](function(_0x455550){if(_0x455550){_0x43de9c=_0x455550;_0x1a49f5[_0x244e('0x30')]=_[_0x244e('0x32')](db[_0x244e('0x53')]['rawAttributes']);_0x1a49f5[_0x244e('0x33')]=_[_0x244e('0x32')](_0x49dfe9['query']);_0x1a49f5[_0x244e('0x3b')]=_[_0x244e('0x34')](_0x1a49f5[_0x244e('0x30')],_0x1a49f5[_0x244e('0x33')]);_0x434f50[_0x244e('0x35')]=_[_0x244e('0x34')](_0x1a49f5[_0x244e('0x30')],qs[_0x244e('0x36')](_0x49dfe9[_0x244e('0x33')]['fields']));_0x434f50['attributes']=_0x434f50['attributes'][_0x244e('0x37')]?_0x434f50[_0x244e('0x35')]:_0x1a49f5[_0x244e('0x30')];_0x434f50[_0x244e('0x39')]=qs['sort'](_0x49dfe9[_0x244e('0x33')][_0x244e('0x3a')]);_0x434f50['where']=qs['filters'](_[_0x244e('0x4e')](_0x49dfe9[_0x244e('0x33')],_0x1a49f5[_0x244e('0x3b')]));if(_0x49dfe9[_0x244e('0x33')][_0x244e('0x3f')]){_0x434f50[_0x244e('0x3c')]=_[_0x244e('0x3d')](_0x434f50[_0x244e('0x3c')],{'$or':_[_0x244e('0x31')](_0x434f50['attributes'],function(_0x4760f7){var _0xbd2db={};_0xbd2db[_0x4760f7]={'$like':'%'+_0x49dfe9[_0x244e('0x33')][_0x244e('0x3f')]+'%'};return _0xbd2db;})});}_0x434f50=_[_0x244e('0x3d')]({},_0x434f50,_0x49dfe9[_0x244e('0x40')]);return _0x43de9c[_0x244e('0x52')](_0x434f50);}})[_0x244e('0x25')](function(_0x5c0da5){if(_0x5c0da5){_0x188677=_0x5c0da5[_0x244e('0x37')];if(!_0x49dfe9[_0x244e('0x33')][_0x244e('0x38')](_0x244e('0x4f'))){_0x434f50[_0x244e('0x1d')]=qs['limit'](_0x49dfe9[_0x244e('0x33')][_0x244e('0x1d')]);_0x434f50[_0x244e('0x1b')]=qs[_0x244e('0x1b')](_0x49dfe9['query']['offset']);}return _0x43de9c[_0x244e('0x52')](_0x434f50);}})[_0x244e('0x25')](function(_0x283e30){if(_0x283e30){return _0x283e30?{'count':_0x188677,'rows':_0x283e30}:null;}})[_0x244e('0x25')](respondWithResult(_0x1728f0,null))[_0x244e('0x45')](handleError(_0x1728f0,null));};exports['setTags']=function(_0x1c1c81,_0x1032a7,_0x494a98){if(_0x1c1c81[_0x244e('0x4a')]['id']){delete _0x1c1c81['body']['id'];}return db['DeskConfiguration']['findOne']({'where':{'id':_0x1c1c81['params']['id']}})[_0x244e('0x25')](handleEntityNotFound(_0x1032a7,null))['then'](function(_0x4f0137){if(_0x4f0137){return _0x4f0137[_0x244e('0x54')](_0x1c1c81[_0x244e('0x4a')][_0x244e('0x55')]||[]);}return null;})[_0x244e('0x25')](respondWithResult(_0x1032a7,null))[_0x244e('0x45')](handleError(_0x1032a7,null));};
\ No newline at end of file
index bf465b3..7fc838c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49d1=['request-promise','../../config/environment','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','int_desk_configurations','util','../../config/logger','api','moment'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x49d1,0xb7));var _0x149d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x49d1[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x149d('0x0'));var logger=require(_0x149d('0x1'))(_0x149d('0x2'));var moment=require(_0x149d('0x3'));var BPromise=require('bluebird');var rp=require(_0x149d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x149d('0x5'));var attributes=require(_0x149d('0x6'));module[_0x149d('0x7')]=function(_0x369ff3,_0x67e664){return _0x369ff3[_0x149d('0x8')](_0x149d('0x9'),attributes,{'tableName':_0x149d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfbf2=['path','rimraf','./intDeskConfiguration.attributes','define','DeskConfiguration','int_desk_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x599b7b,_0x5d7a61){var _0x3e4f69=function(_0x327ef3){while(--_0x327ef3){_0x599b7b['push'](_0x599b7b['shift']());}};_0x3e4f69(++_0x5d7a61);}(_0xfbf2,0x102));var _0x2fbf=function(_0x175d59,_0x20204e){_0x175d59=_0x175d59-0x0;var _0x9cf48c=_0xfbf2[_0x175d59];return _0x9cf48c;};'use strict';var _=require(_0x2fbf('0x0'));var util=require('util');var logger=require(_0x2fbf('0x1'))(_0x2fbf('0x2'));var moment=require(_0x2fbf('0x3'));var BPromise=require(_0x2fbf('0x4'));var rp=require(_0x2fbf('0x5'));var fs=require('fs');var path=require(_0x2fbf('0x6'));var rimraf=require(_0x2fbf('0x7'));var config=require('../../config/environment');var attributes=require(_0x2fbf('0x8'));module['exports']=function(_0x3cb940,_0x38e936){return _0x3cb940[_0x2fbf('0x9')](_0x2fbf('0xa'),attributes,{'tableName':_0x2fbf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 568706e..cf8ddd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8863=['catch','util','moment','bluebird','randomstring','rpc','../../config/environment','client','http','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result'];(function(_0x49a793,_0x4eff8d){var _0x53103a=function(_0x127198){while(--_0x127198){_0x49a793['push'](_0x49a793['shift']());}};_0x53103a(++_0x4eff8d);}(_0x8863,0x1b6));var _0x3886=function(_0x235f7f,_0x4cc112){_0x235f7f=_0x235f7f-0x0;var _0x3bf31e=_0x8863[_0x235f7f];return _0x3bf31e;};'use strict';var _=require('lodash');var util=require(_0x3886('0x0'));var moment=require(_0x3886('0x1'));var BPromise=require(_0x3886('0x2'));var rs=require(_0x3886('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3886('0x4'));var config=require(_0x3886('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x3886('0x6')][_0x3886('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x566503,_0x25d62e,_0x6edf8a){return new BPromise(function(_0x3a7943,_0x2718ec){return client['request'](_0x566503,_0x6edf8a)[_0x3886('0x8')](function(_0x2dbdc1){logger[_0x3886('0x9')](_0x3886('0xa'),_0x25d62e,_0x3886('0xb'));logger['debug'](_0x3886('0xc'),_0x25d62e,_0x3886('0xb'),JSON[_0x3886('0xd')](_0x2dbdc1));if(_0x2dbdc1['error']){if(_0x2dbdc1['error'][_0x3886('0xe')]===0x1f4){logger[_0x3886('0xf')](_0x3886('0xa'),_0x25d62e,_0x2dbdc1[_0x3886('0xf')][_0x3886('0x10')]);return _0x2718ec(_0x2dbdc1[_0x3886('0xf')][_0x3886('0x10')]);}logger[_0x3886('0xf')](_0x3886('0xa'),_0x25d62e,_0x2dbdc1[_0x3886('0xf')][_0x3886('0x10')]);return _0x3a7943(_0x2dbdc1[_0x3886('0xf')]['message']);}else{logger[_0x3886('0x9')](_0x3886('0xa'),_0x25d62e,'request\x20sent');_0x3a7943(_0x2dbdc1[_0x3886('0x11')]['message']);}})[_0x3886('0x12')](function(_0xdbb8c){logger[_0x3886('0xf')](_0x3886('0xa'),_0x25d62e,_0xdbb8c);_0x2718ec(_0xdbb8c);});});}
\ No newline at end of file
+var _0xce9e=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring'];(function(_0x54dd2b,_0x8048ae){var _0x2e9579=function(_0x41ca2a){while(--_0x41ca2a){_0x54dd2b['push'](_0x54dd2b['shift']());}};_0x2e9579(++_0x8048ae);}(_0xce9e,0x1c8));var _0xece9=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xce9e[_0x34bc30];return _0x5706de;};'use strict';var _=require(_0xece9('0x0'));var util=require(_0xece9('0x1'));var moment=require(_0xece9('0x2'));var BPromise=require('bluebird');var rs=require(_0xece9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xece9('0x4'));var logger=require('../../config/logger')(_0xece9('0x5'));var config=require(_0xece9('0x6'));var jayson=require(_0xece9('0x7'));var client=jayson[_0xece9('0x8')][_0xece9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xa03386,_0x398671,_0x4a6553){return new BPromise(function(_0x5c2d59,_0x3180c0){return client[_0xece9('0xa')](_0xa03386,_0x4a6553)[_0xece9('0xb')](function(_0x214e2d){logger[_0xece9('0xc')](_0xece9('0xd'),_0x398671,_0xece9('0xe'));logger[_0xece9('0xf')](_0xece9('0x10'),_0x398671,_0xece9('0xe'),JSON[_0xece9('0x11')](_0x214e2d));if(_0x214e2d[_0xece9('0x12')]){if(_0x214e2d[_0xece9('0x12')][_0xece9('0x13')]===0x1f4){logger[_0xece9('0x12')](_0xece9('0xd'),_0x398671,_0x214e2d[_0xece9('0x12')][_0xece9('0x14')]);return _0x3180c0(_0x214e2d['error'][_0xece9('0x14')]);}logger[_0xece9('0x12')](_0xece9('0xd'),_0x398671,_0x214e2d[_0xece9('0x12')][_0xece9('0x14')]);return _0x5c2d59(_0x214e2d[_0xece9('0x12')][_0xece9('0x14')]);}else{logger[_0xece9('0xc')](_0xece9('0xd'),_0x398671,_0xece9('0xe'));_0x5c2d59(_0x214e2d[_0xece9('0x15')][_0xece9('0x14')]);}})[_0xece9('0x16')](function(_0x1e9422){logger[_0xece9('0x12')](_0xece9('0xd'),_0x398671,_0x1e9422);_0x3180c0(_0x1e9422);});});}
\ No newline at end of file
index 8b5a201..99354a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb94c=['fs-extra','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x4a8b13,_0x2714db){var _0x4269bd=function(_0x22fd54){while(--_0x22fd54){_0x4a8b13['push'](_0x4a8b13['shift']());}};_0x4269bd(++_0x2714db);}(_0xb94c,0x176));var _0xcb94=function(_0x1fd2c9,_0x288d0b){_0x1fd2c9=_0x1fd2c9-0x0;var _0xca77f=_0xb94c[_0x1fd2c9];return _0xca77f;};'use strict';var multer=require(_0xcb94('0x0'));var util=require(_0xcb94('0x1'));var path=require('path');var timeout=require(_0xcb94('0x2'));var express=require(_0xcb94('0x3'));var router=express['Router']();var fs_extra=require(_0xcb94('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xcb94('0x5'));var config=require(_0xcb94('0x6'));var controller=require(_0xcb94('0x7'));router[_0xcb94('0x8')]('/',auth[_0xcb94('0x9')](),controller['index']);router[_0xcb94('0x8')](_0xcb94('0xa'),auth[_0xcb94('0x9')](),controller[_0xcb94('0xb')]);router[_0xcb94('0xc')]('/',auth['isAuthenticated'](),controller[_0xcb94('0xd')]);router[_0xcb94('0xe')](_0xcb94('0xa'),auth[_0xcb94('0x9')](),controller['update']);router[_0xcb94('0xf')](_0xcb94('0xa'),auth[_0xcb94('0x9')](),controller[_0xcb94('0x10')]);module[_0xcb94('0x11')]=router;
\ No newline at end of file
+var _0xa000=['../../components/auth/service','get','isAuthenticated','index','show','post','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x324f55,_0x2e6ca4){var _0x284952=function(_0x36ceae){while(--_0x36ceae){_0x324f55['push'](_0x324f55['shift']());}};_0x284952(++_0x2e6ca4);}(_0xa000,0x162));var _0x0a00=function(_0x36d2f4,_0x11c126){_0x36d2f4=_0x36d2f4-0x0;var _0x588872=_0xa000[_0x36d2f4];return _0x588872;};'use strict';var multer=require(_0x0a00('0x0'));var util=require(_0x0a00('0x1'));var path=require(_0x0a00('0x2'));var timeout=require(_0x0a00('0x3'));var express=require(_0x0a00('0x4'));var router=express[_0x0a00('0x5')]();var fs_extra=require(_0x0a00('0x6'));var auth=require(_0x0a00('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDeskField.controller');router[_0x0a00('0x8')]('/',auth[_0x0a00('0x9')](),controller[_0x0a00('0xa')]);router[_0x0a00('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a00('0xb')]);router[_0x0a00('0xc')]('/',auth[_0x0a00('0x9')](),controller[_0x0a00('0xd')]);router[_0x0a00('0xe')](_0x0a00('0xf'),auth[_0x0a00('0x9')](),controller[_0x0a00('0x10')]);router['delete']('/:id',auth[_0x0a00('0x9')](),controller[_0x0a00('0x11')]);module[_0x0a00('0x12')]=router;
\ No newline at end of file
index 1fae262..1ad4b95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x636c=['customVariable','keyValue','picklist','STRING','BOOLEAN','ENUM','string','variable'];(function(_0x216a89,_0x5d0f7d){var _0xfba552=function(_0x586005){while(--_0x586005){_0x216a89['push'](_0x216a89['shift']());}};_0xfba552(++_0x5d0f7d);}(_0x636c,0x18d));var _0xc636=function(_0xa5b88b,_0x392a9c){_0xa5b88b=_0xa5b88b-0x0;var _0x568105=_0x636c[_0xa5b88b];return _0x568105;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xc636('0x0')](_0xc636('0x1'),_0xc636('0x2'),_0xc636('0x3'),_0xc636('0x4'),_0xc636('0x5')),'defaultValue':_0xc636('0x1')},'content':{'type':Sequelize[_0xc636('0x6')]},'key':{'type':Sequelize[_0xc636('0x6')]},'keyType':{'type':Sequelize[_0xc636('0x0')]('string',_0xc636('0x2'),_0xc636('0x3'))},'keyContent':{'type':Sequelize[_0xc636('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xc636('0x6')]},'customField':{'type':Sequelize[_0xc636('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc636('0x6')]}};
\ No newline at end of file
+var _0x1f74=['customVariable','keyValue','picklist','STRING','BOOLEAN','ENUM','string','variable'];(function(_0x1663e2,_0x250ef5){var _0x5c4b21=function(_0x1b7752){while(--_0x1b7752){_0x1663e2['push'](_0x1663e2['shift']());}};_0x5c4b21(++_0x250ef5);}(_0x1f74,0x12d));var _0x41f7=function(_0x3cee22,_0x54ad32){_0x3cee22=_0x3cee22-0x0;var _0x286fa5=_0x1f74[_0x3cee22];return _0x286fa5;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x41f7('0x0')](_0x41f7('0x1'),_0x41f7('0x2'),_0x41f7('0x3'),_0x41f7('0x4'),_0x41f7('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x41f7('0x6')]},'key':{'type':Sequelize[_0x41f7('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x41f7('0x1'),_0x41f7('0x2'),_0x41f7('0x3'))},'keyContent':{'type':Sequelize[_0x41f7('0x6')]},'idField':{'type':Sequelize[_0x41f7('0x6')]},'nameField':{'type':Sequelize[_0x41f7('0x6')]},'customField':{'type':Sequelize[_0x41f7('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x41f7('0x6')]}};
\ No newline at end of file
index 25cb42a..6752b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc00=['Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','DeskField','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','pick','where','VIRTUAL','filter','merge','includeAll','include','rows','catch','params','options','find','create','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','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','sendStatus','end','status','json','offset','limit','undefined','count'];(function(_0x168e5e,_0x5037a8){var _0x2fabf7=function(_0x44280b){while(--_0x44280b){_0x168e5e['push'](_0x168e5e['shift']());}};_0x2fabf7(++_0x5037a8);}(_0xbc00,0x107));var _0x0bc0=function(_0x340380,_0x4bd2a8){_0x340380=_0x340380-0x0;var _0x49ce1c=_0xbc00[_0x340380];return _0x49ce1c;};'use strict';var emlformat=require(_0x0bc0('0x0'));var rimraf=require(_0x0bc0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0bc0('0x2'));var rp=require('request-promise');var moment=require(_0x0bc0('0x3'));var BPromise=require(_0x0bc0('0x4'));var Mustache=require(_0x0bc0('0x5'));var util=require('util');var path=require(_0x0bc0('0x6'));var sox=require(_0x0bc0('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0bc0('0x8'));var _=require(_0x0bc0('0x9'));var squel=require(_0x0bc0('0xa'));var crypto=require(_0x0bc0('0xb'));var jsforce=require(_0x0bc0('0xc'));var deskjs=require(_0x0bc0('0xd'));var toCsv=require(_0x0bc0('0xe'));var querystring=require(_0x0bc0('0xf'));var Papa=require(_0x0bc0('0x10'));var Redis=require('ioredis');var authService=require(_0x0bc0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0bc0('0x12'));var hardwareService=require(_0x0bc0('0x13'));var logger=require(_0x0bc0('0x14'))(_0x0bc0('0x15'));var utils=require(_0x0bc0('0x16'));var config=require(_0x0bc0('0x17'));var licenseUtil=require(_0x0bc0('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10021d,_0x15afb2){_0x15afb2=_0x15afb2||0xcc;return function(_0x1ed38b){if(_0x1ed38b){return _0x10021d[_0x0bc0('0x19')](_0x15afb2);}return _0x10021d['status'](_0x15afb2)[_0x0bc0('0x1a')]();};}function respondWithResult(_0x49449d,_0x30e531){_0x30e531=_0x30e531||0xc8;return function(_0x211047){if(_0x211047){return _0x49449d[_0x0bc0('0x1b')](_0x30e531)[_0x0bc0('0x1c')](_0x211047);}};}function respondWithFilteredResult(_0x1a0f3a,_0x3d0d2c){return function(_0x560d11){if(_0x560d11){var _0x3cd7ee=typeof _0x3d0d2c[_0x0bc0('0x1d')]==='undefined'&&typeof _0x3d0d2c[_0x0bc0('0x1e')]===_0x0bc0('0x1f');var _0x39567b=_0x560d11[_0x0bc0('0x20')];var _0x286539=_0x3cd7ee?0x0:_0x3d0d2c[_0x0bc0('0x1d')];var _0x361a7b=_0x3cd7ee?_0x560d11['count']:_0x3d0d2c[_0x0bc0('0x1d')]+_0x3d0d2c[_0x0bc0('0x1e')];var _0x3d5ccf;if(_0x361a7b>=_0x39567b){_0x361a7b=_0x39567b;_0x3d5ccf=0xc8;}else{_0x3d5ccf=0xce;}_0x1a0f3a[_0x0bc0('0x1b')](_0x3d5ccf);return _0x1a0f3a['set'](_0x0bc0('0x21'),_0x286539+'-'+_0x361a7b+'/'+_0x39567b)[_0x0bc0('0x1c')](_0x560d11);}return null;};}function patchUpdates(_0x3c2c09){return function(_0x5d3f50){try{jsonpatch[_0x0bc0('0x22')](_0x5d3f50,_0x3c2c09,!![]);}catch(_0x352e16){return BPromise[_0x0bc0('0x23')](_0x352e16);}return _0x5d3f50[_0x0bc0('0x24')]();};}function saveUpdates(_0x45cdc3,_0xc7eba4){return function(_0x4d86eb){if(_0x4d86eb){return _0x4d86eb[_0x0bc0('0x25')](_0x45cdc3)[_0x0bc0('0x26')](function(_0x300599){return _0x300599;});}return null;};}function removeEntity(_0x844570,_0x3ac96c){return function(_0x3dea98){if(_0x3dea98){return _0x3dea98[_0x0bc0('0x27')]()[_0x0bc0('0x26')](function(){_0x844570[_0x0bc0('0x1b')](0xcc)[_0x0bc0('0x1a')]();});}};}function handleEntityNotFound(_0x4e4d4a,_0x3c53ec){return function(_0x5f5987){if(!_0x5f5987){_0x4e4d4a[_0x0bc0('0x19')](0x194);}return _0x5f5987;};}function handleError(_0x17ba34,_0x3dcc08){_0x3dcc08=_0x3dcc08||0x1f4;return function(_0x382f2e){logger[_0x0bc0('0x28')](_0x382f2e['stack']);if(_0x382f2e[_0x0bc0('0x29')]){delete _0x382f2e[_0x0bc0('0x29')];}_0x17ba34[_0x0bc0('0x1b')](_0x3dcc08)[_0x0bc0('0x2a')](_0x382f2e);};}exports[_0x0bc0('0x2b')]=function(_0x15be4e,_0x3d9a3b){var _0x45ea8d={},_0x314a52={},_0x40c5bd={'count':0x0,'rows':[]};var _0x2bb535=_['map'](db[_0x0bc0('0x2c')][_0x0bc0('0x2d')],function(_0x4624aa){return{'name':_0x4624aa['fieldName'],'type':_0x4624aa[_0x0bc0('0x2e')][_0x0bc0('0x2f')]};});_0x314a52[_0x0bc0('0x30')]=_[_0x0bc0('0x31')](_0x2bb535,'name');_0x314a52[_0x0bc0('0x32')]=_[_0x0bc0('0x33')](_0x15be4e[_0x0bc0('0x32')]);_0x314a52[_0x0bc0('0x34')]=_[_0x0bc0('0x35')](_0x314a52[_0x0bc0('0x30')],_0x314a52[_0x0bc0('0x32')]);_0x45ea8d['attributes']=_['intersection'](_0x314a52['model'],qs[_0x0bc0('0x36')](_0x15be4e[_0x0bc0('0x32')][_0x0bc0('0x36')]));_0x45ea8d[_0x0bc0('0x37')]=_0x45ea8d['attributes'][_0x0bc0('0x38')]?_0x45ea8d[_0x0bc0('0x37')]:_0x314a52[_0x0bc0('0x30')];if(!_0x15be4e[_0x0bc0('0x32')][_0x0bc0('0x39')](_0x0bc0('0x3a'))){_0x45ea8d[_0x0bc0('0x1e')]=qs[_0x0bc0('0x1e')](_0x15be4e[_0x0bc0('0x32')][_0x0bc0('0x1e')]);_0x45ea8d[_0x0bc0('0x1d')]=qs[_0x0bc0('0x1d')](_0x15be4e['query']['offset']);}_0x45ea8d[_0x0bc0('0x3b')]=qs['sort'](_0x15be4e[_0x0bc0('0x32')]['sort']);_0x45ea8d['where']=qs[_0x0bc0('0x34')](_[_0x0bc0('0x3c')](_0x15be4e['query'],_0x314a52[_0x0bc0('0x34')]),_0x2bb535);if(_0x15be4e[_0x0bc0('0x32')]['filter']){_0x45ea8d[_0x0bc0('0x3d')]=_['merge'](_0x45ea8d[_0x0bc0('0x3d')],{'$or':_[_0x0bc0('0x31')](_0x2bb535,function(_0xc9bb18){if(_0xc9bb18[_0x0bc0('0x2e')]!==_0x0bc0('0x3e')){var _0xbe41c8={};_0xbe41c8[_0xc9bb18[_0x0bc0('0x29')]]={'$like':'%'+_0x15be4e[_0x0bc0('0x32')][_0x0bc0('0x3f')]+'%'};return _0xbe41c8;}})});}_0x45ea8d=_[_0x0bc0('0x40')]({},_0x45ea8d,_0x15be4e['options']);var _0x5ed9ab={'where':_0x45ea8d[_0x0bc0('0x3d')]};return db[_0x0bc0('0x2c')][_0x0bc0('0x20')](_0x5ed9ab)[_0x0bc0('0x26')](function(_0x3ba0aa){_0x40c5bd[_0x0bc0('0x20')]=_0x3ba0aa;if(_0x15be4e[_0x0bc0('0x32')][_0x0bc0('0x41')]){_0x45ea8d[_0x0bc0('0x42')]=[{'all':!![]}];}return db[_0x0bc0('0x2c')]['findAll'](_0x45ea8d);})[_0x0bc0('0x26')](function(_0x2e5420){_0x40c5bd[_0x0bc0('0x43')]=_0x2e5420;return _0x40c5bd;})['then'](respondWithFilteredResult(_0x3d9a3b,_0x45ea8d))[_0x0bc0('0x44')](handleError(_0x3d9a3b,null));};exports['show']=function(_0x520d05,_0x408f5b){var _0x16312c={'raw':!![],'where':{'id':_0x520d05[_0x0bc0('0x45')]['id']}},_0x82cb24={};_0x82cb24[_0x0bc0('0x30')]=_[_0x0bc0('0x33')](db['DeskField'][_0x0bc0('0x2d')]);_0x82cb24[_0x0bc0('0x32')]=_[_0x0bc0('0x33')](_0x520d05['query']);_0x82cb24[_0x0bc0('0x34')]=_[_0x0bc0('0x35')](_0x82cb24[_0x0bc0('0x30')],_0x82cb24['query']);_0x16312c[_0x0bc0('0x37')]=_[_0x0bc0('0x35')](_0x82cb24[_0x0bc0('0x30')],qs[_0x0bc0('0x36')](_0x520d05['query'][_0x0bc0('0x36')]));_0x16312c[_0x0bc0('0x37')]=_0x16312c['attributes'][_0x0bc0('0x38')]?_0x16312c[_0x0bc0('0x37')]:_0x82cb24['model'];if(_0x520d05[_0x0bc0('0x32')]['includeAll']){_0x16312c[_0x0bc0('0x42')]=[{'all':!![]}];}_0x16312c=_[_0x0bc0('0x40')]({},_0x16312c,_0x520d05[_0x0bc0('0x46')]);return db[_0x0bc0('0x2c')][_0x0bc0('0x47')](_0x16312c)[_0x0bc0('0x26')](handleEntityNotFound(_0x408f5b,null))['then'](respondWithResult(_0x408f5b,null))[_0x0bc0('0x44')](handleError(_0x408f5b,null));};exports[_0x0bc0('0x48')]=function(_0x55fbc1,_0x49ca6a){return db[_0x0bc0('0x2c')][_0x0bc0('0x48')](_0x55fbc1[_0x0bc0('0x49')],{})[_0x0bc0('0x26')](respondWithResult(_0x49ca6a,0xc9))[_0x0bc0('0x44')](handleError(_0x49ca6a,null));};exports[_0x0bc0('0x25')]=function(_0x16a072,_0x4b02e5){if(_0x16a072['body']['id']){delete _0x16a072[_0x0bc0('0x49')]['id'];}return db[_0x0bc0('0x2c')][_0x0bc0('0x47')]({'where':{'id':_0x16a072[_0x0bc0('0x45')]['id']}})[_0x0bc0('0x26')](handleEntityNotFound(_0x4b02e5,null))['then'](saveUpdates(_0x16a072['body'],null))[_0x0bc0('0x26')](respondWithResult(_0x4b02e5,null))[_0x0bc0('0x44')](handleError(_0x4b02e5,null));};exports[_0x0bc0('0x27')]=function(_0x3164ff,_0x2654dc){return db[_0x0bc0('0x2c')][_0x0bc0('0x47')]({'where':{'id':_0x3164ff['params']['id']}})['then'](handleEntityNotFound(_0x2654dc,null))[_0x0bc0('0x26')](removeEntity(_0x2654dc,null))[_0x0bc0('0x44')](handleError(_0x2654dc,null));};
\ No newline at end of file
+var _0x0c85=['options','includeAll','include','catch','show','params','length','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','sendStatus','name','send','index','DeskField','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','merge','VIRTUAL','filter'];(function(_0x21cce9,_0x231204){var _0x503721=function(_0xd1c1e4){while(--_0xd1c1e4){_0x21cce9['push'](_0x21cce9['shift']());}};_0x503721(++_0x231204);}(_0x0c85,0x14f));var _0x50c8=function(_0x2a4147,_0x8fc38c){_0x2a4147=_0x2a4147-0x0;var _0x477c6c=_0x0c85[_0x2a4147];return _0x477c6c;};'use strict';var emlformat=require(_0x50c8('0x0'));var rimraf=require(_0x50c8('0x1'));var zipdir=require(_0x50c8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x50c8('0x3'));var moment=require(_0x50c8('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x50c8('0x5'));var util=require(_0x50c8('0x6'));var path=require(_0x50c8('0x7'));var sox=require(_0x50c8('0x8'));var csv=require('to-csv');var ejs=require(_0x50c8('0x9'));var fs=require('fs');var fs_extra=require(_0x50c8('0xa'));var _=require('lodash');var squel=require(_0x50c8('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x50c8('0xc'));var querystring=require(_0x50c8('0xd'));var Papa=require('papaparse');var Redis=require(_0x50c8('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x50c8('0xf'));var as=require(_0x50c8('0x10'));var hardwareService=require(_0x50c8('0x11'));var logger=require(_0x50c8('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x50c8('0x13'));var licenseUtil=require(_0x50c8('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2131bd,_0x4756a1){_0x4756a1=_0x4756a1||0xcc;return function(_0x13d751){if(_0x13d751){return _0x2131bd['sendStatus'](_0x4756a1);}return _0x2131bd[_0x50c8('0x15')](_0x4756a1)[_0x50c8('0x16')]();};}function respondWithResult(_0x84e7ef,_0x287de5){_0x287de5=_0x287de5||0xc8;return function(_0x20375a){if(_0x20375a){return _0x84e7ef[_0x50c8('0x15')](_0x287de5)['json'](_0x20375a);}};}function respondWithFilteredResult(_0x318023,_0x51b85c){return function(_0x50d756){if(_0x50d756){var _0x219f2a=typeof _0x51b85c['offset']==='undefined'&&typeof _0x51b85c['limit']==='undefined';var _0x965510=_0x50d756[_0x50c8('0x17')];var _0xded764=_0x219f2a?0x0:_0x51b85c[_0x50c8('0x18')];var _0x171da5=_0x219f2a?_0x50d756[_0x50c8('0x17')]:_0x51b85c[_0x50c8('0x18')]+_0x51b85c[_0x50c8('0x19')];var _0x1dc9ac;if(_0x171da5>=_0x965510){_0x171da5=_0x965510;_0x1dc9ac=0xc8;}else{_0x1dc9ac=0xce;}_0x318023['status'](_0x1dc9ac);return _0x318023[_0x50c8('0x1a')](_0x50c8('0x1b'),_0xded764+'-'+_0x171da5+'/'+_0x965510)[_0x50c8('0x1c')](_0x50d756);}return null;};}function patchUpdates(_0x33f365){return function(_0x2bd0ef){try{jsonpatch[_0x50c8('0x1d')](_0x2bd0ef,_0x33f365,!![]);}catch(_0x582b73){return BPromise[_0x50c8('0x1e')](_0x582b73);}return _0x2bd0ef[_0x50c8('0x1f')]();};}function saveUpdates(_0xfa01e4,_0x2983d5){return function(_0x2fc53a){if(_0x2fc53a){return _0x2fc53a[_0x50c8('0x20')](_0xfa01e4)[_0x50c8('0x21')](function(_0x49ed6d){return _0x49ed6d;});}return null;};}function removeEntity(_0xeda590,_0x49ef15){return function(_0xb6d831){if(_0xb6d831){return _0xb6d831['destroy']()['then'](function(){_0xeda590['status'](0xcc)[_0x50c8('0x16')]();});}};}function handleEntityNotFound(_0x45990e,_0x50c930){return function(_0x4f3829){if(!_0x4f3829){_0x45990e[_0x50c8('0x22')](0x194);}return _0x4f3829;};}function handleError(_0x2640be,_0x21fa12){_0x21fa12=_0x21fa12||0x1f4;return function(_0x2dbeb8){logger['error'](_0x2dbeb8['stack']);if(_0x2dbeb8[_0x50c8('0x23')]){delete _0x2dbeb8['name'];}_0x2640be['status'](_0x21fa12)[_0x50c8('0x24')](_0x2dbeb8);};}exports[_0x50c8('0x25')]=function(_0x22dd1a,_0x55cb14){var _0x97e52b={},_0x23b5fb={},_0x5d2133={'count':0x0,'rows':[]};var _0x4d6774=_['map'](db[_0x50c8('0x26')][_0x50c8('0x27')],function(_0x135a97){return{'name':_0x135a97['fieldName'],'type':_0x135a97[_0x50c8('0x28')]['key']};});_0x23b5fb[_0x50c8('0x29')]=_[_0x50c8('0x2a')](_0x4d6774,'name');_0x23b5fb[_0x50c8('0x2b')]=_[_0x50c8('0x2c')](_0x22dd1a[_0x50c8('0x2b')]);_0x23b5fb[_0x50c8('0x2d')]=_[_0x50c8('0x2e')](_0x23b5fb[_0x50c8('0x29')],_0x23b5fb[_0x50c8('0x2b')]);_0x97e52b[_0x50c8('0x2f')]=_[_0x50c8('0x2e')](_0x23b5fb[_0x50c8('0x29')],qs[_0x50c8('0x30')](_0x22dd1a['query'][_0x50c8('0x30')]));_0x97e52b[_0x50c8('0x2f')]=_0x97e52b[_0x50c8('0x2f')]['length']?_0x97e52b[_0x50c8('0x2f')]:_0x23b5fb[_0x50c8('0x29')];if(!_0x22dd1a[_0x50c8('0x2b')]['hasOwnProperty'](_0x50c8('0x31'))){_0x97e52b[_0x50c8('0x19')]=qs['limit'](_0x22dd1a[_0x50c8('0x2b')][_0x50c8('0x19')]);_0x97e52b['offset']=qs[_0x50c8('0x18')](_0x22dd1a[_0x50c8('0x2b')][_0x50c8('0x18')]);}_0x97e52b['order']=qs['sort'](_0x22dd1a[_0x50c8('0x2b')][_0x50c8('0x32')]);_0x97e52b[_0x50c8('0x33')]=qs['filters'](_['pick'](_0x22dd1a[_0x50c8('0x2b')],_0x23b5fb[_0x50c8('0x2d')]),_0x4d6774);if(_0x22dd1a['query']['filter']){_0x97e52b[_0x50c8('0x33')]=_[_0x50c8('0x34')](_0x97e52b['where'],{'$or':_[_0x50c8('0x2a')](_0x4d6774,function(_0x24dc1b){if(_0x24dc1b[_0x50c8('0x28')]!==_0x50c8('0x35')){var _0x39565d={};_0x39565d[_0x24dc1b[_0x50c8('0x23')]]={'$like':'%'+_0x22dd1a['query'][_0x50c8('0x36')]+'%'};return _0x39565d;}})});}_0x97e52b=_[_0x50c8('0x34')]({},_0x97e52b,_0x22dd1a[_0x50c8('0x37')]);var _0xa5f046={'where':_0x97e52b[_0x50c8('0x33')]};return db[_0x50c8('0x26')][_0x50c8('0x17')](_0xa5f046)[_0x50c8('0x21')](function(_0x2dab32){_0x5d2133[_0x50c8('0x17')]=_0x2dab32;if(_0x22dd1a[_0x50c8('0x2b')][_0x50c8('0x38')]){_0x97e52b[_0x50c8('0x39')]=[{'all':!![]}];}return db['DeskField']['findAll'](_0x97e52b);})[_0x50c8('0x21')](function(_0x462cb2){_0x5d2133['rows']=_0x462cb2;return _0x5d2133;})[_0x50c8('0x21')](respondWithFilteredResult(_0x55cb14,_0x97e52b))[_0x50c8('0x3a')](handleError(_0x55cb14,null));};exports[_0x50c8('0x3b')]=function(_0x558e38,_0x22a361){var _0x24db1d={'raw':!![],'where':{'id':_0x558e38[_0x50c8('0x3c')]['id']}},_0x4eac97={};_0x4eac97[_0x50c8('0x29')]=_['keys'](db[_0x50c8('0x26')]['rawAttributes']);_0x4eac97[_0x50c8('0x2b')]=_[_0x50c8('0x2c')](_0x558e38[_0x50c8('0x2b')]);_0x4eac97[_0x50c8('0x2d')]=_[_0x50c8('0x2e')](_0x4eac97['model'],_0x4eac97['query']);_0x24db1d['attributes']=_['intersection'](_0x4eac97['model'],qs[_0x50c8('0x30')](_0x558e38[_0x50c8('0x2b')][_0x50c8('0x30')]));_0x24db1d['attributes']=_0x24db1d['attributes'][_0x50c8('0x3d')]?_0x24db1d[_0x50c8('0x2f')]:_0x4eac97[_0x50c8('0x29')];if(_0x558e38[_0x50c8('0x2b')][_0x50c8('0x38')]){_0x24db1d[_0x50c8('0x39')]=[{'all':!![]}];}_0x24db1d=_[_0x50c8('0x34')]({},_0x24db1d,_0x558e38['options']);return db[_0x50c8('0x26')][_0x50c8('0x3e')](_0x24db1d)[_0x50c8('0x21')](handleEntityNotFound(_0x22a361,null))[_0x50c8('0x21')](respondWithResult(_0x22a361,null))[_0x50c8('0x3a')](handleError(_0x22a361,null));};exports[_0x50c8('0x3f')]=function(_0x44f172,_0x5a23cd){return db[_0x50c8('0x26')]['create'](_0x44f172[_0x50c8('0x40')],{})[_0x50c8('0x21')](respondWithResult(_0x5a23cd,0xc9))[_0x50c8('0x3a')](handleError(_0x5a23cd,null));};exports[_0x50c8('0x20')]=function(_0x1167b0,_0x5deb78){if(_0x1167b0[_0x50c8('0x40')]['id']){delete _0x1167b0[_0x50c8('0x40')]['id'];}return db[_0x50c8('0x26')][_0x50c8('0x3e')]({'where':{'id':_0x1167b0[_0x50c8('0x3c')]['id']}})['then'](handleEntityNotFound(_0x5deb78,null))[_0x50c8('0x21')](saveUpdates(_0x1167b0[_0x50c8('0x40')],null))[_0x50c8('0x21')](respondWithResult(_0x5deb78,null))[_0x50c8('0x3a')](handleError(_0x5deb78,null));};exports['destroy']=function(_0x502e0f,_0x16e3ab){return db['DeskField'][_0x50c8('0x3e')]({'where':{'id':_0x502e0f[_0x50c8('0x3c')]['id']}})[_0x50c8('0x21')](handleEntityNotFound(_0x16e3ab,null))['then'](removeEntity(_0x16e3ab,null))[_0x50c8('0x3a')](handleError(_0x16e3ab,null));};
\ No newline at end of file
index 628baab..1355a10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a80=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intDeskField.attributes','exports','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util'];(function(_0x375325,_0x57a850){var _0x228f57=function(_0x2ad744){while(--_0x2ad744){_0x375325['push'](_0x375325['shift']());}};_0x228f57(++_0x57a850);}(_0x8a80,0x193));var _0x08a8=function(_0x1d7a25,_0x35ba06){_0x1d7a25=_0x1d7a25-0x0;var _0x84276c=_0x8a80[_0x1d7a25];return _0x84276c;};'use strict';var _=require(_0x08a8('0x0'));var util=require(_0x08a8('0x1'));var logger=require(_0x08a8('0x2'))(_0x08a8('0x3'));var moment=require(_0x08a8('0x4'));var BPromise=require(_0x08a8('0x5'));var rp=require(_0x08a8('0x6'));var fs=require('fs');var path=require(_0x08a8('0x7'));var rimraf=require('rimraf');var config=require(_0x08a8('0x8'));var attributes=require(_0x08a8('0x9'));module[_0x08a8('0xa')]=function(_0x505055,_0x3d088d){return _0x505055['define']('DeskField',attributes,{'tableName':_0x08a8('0xb'),'paranoid':![],'indexes':[{'name':_0x08a8('0xc'),'fields':[_0x08a8('0xd'),_0x08a8('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x33e6=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','desk_unique_index','idField','lodash','util'];(function(_0xf2634a,_0x31c7de){var _0x5b60ab=function(_0x496031){while(--_0x496031){_0xf2634a['push'](_0xf2634a['shift']());}};_0x5b60ab(++_0x31c7de);}(_0x33e6,0xfd));var _0x633e=function(_0x29231d,_0x47cdc3){_0x29231d=_0x29231d-0x0;var _0x7daa0d=_0x33e6[_0x29231d];return _0x7daa0d;};'use strict';var _=require(_0x633e('0x0'));var util=require(_0x633e('0x1'));var logger=require(_0x633e('0x2'))(_0x633e('0x3'));var moment=require(_0x633e('0x4'));var BPromise=require('bluebird');var rp=require(_0x633e('0x5'));var fs=require('fs');var path=require(_0x633e('0x6'));var rimraf=require(_0x633e('0x7'));var config=require(_0x633e('0x8'));var attributes=require(_0x633e('0x9'));module[_0x633e('0xa')]=function(_0x454169,_0x44826a){return _0x454169[_0x633e('0xb')](_0x633e('0xc'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x633e('0xd'),'fields':[_0x633e('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0ccd5e4..a40aad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a2=['error','DeskField,\x20%s,\x20%s','message','result','catch','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','info','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s'];(function(_0x5d4c64,_0x584585){var _0x5d8581=function(_0x21caa0){while(--_0x21caa0){_0x5d4c64['push'](_0x5d4c64['shift']());}};_0x5d8581(++_0x584585);}(_0xa8a2,0x145));var _0x2a8a=function(_0x560714,_0x1de2e2){_0x560714=_0x560714-0x0;var _0x42c40a=_0xa8a2[_0x560714];return _0x42c40a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2a8a('0x0'));var BPromise=require('bluebird');var rs=require(_0x2a8a('0x1'));var fs=require('fs');var Redis=require(_0x2a8a('0x2'));var db=require(_0x2a8a('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2a8a('0x4'));var config=require(_0x2a8a('0x5'));var jayson=require(_0x2a8a('0x6'));var client=jayson['client'][_0x2a8a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xcf1a69,_0x30e738,_0x7709be){return new BPromise(function(_0x3c3359,_0x369649){return client['request'](_0xcf1a69,_0x7709be)['then'](function(_0x1fee5e){logger[_0x2a8a('0x8')]('DeskField,\x20%s,\x20%s',_0x30e738,_0x2a8a('0x9'));logger['debug'](_0x2a8a('0xa'),_0x30e738,'request\x20sent',JSON['stringify'](_0x1fee5e));if(_0x1fee5e[_0x2a8a('0xb')]){if(_0x1fee5e[_0x2a8a('0xb')]['code']===0x1f4){logger[_0x2a8a('0xb')](_0x2a8a('0xc'),_0x30e738,_0x1fee5e[_0x2a8a('0xb')]['message']);return _0x369649(_0x1fee5e['error'][_0x2a8a('0xd')]);}logger['error']('DeskField,\x20%s,\x20%s',_0x30e738,_0x1fee5e[_0x2a8a('0xb')][_0x2a8a('0xd')]);return _0x3c3359(_0x1fee5e[_0x2a8a('0xb')][_0x2a8a('0xd')]);}else{logger[_0x2a8a('0x8')](_0x2a8a('0xc'),_0x30e738,_0x2a8a('0x9'));_0x3c3359(_0x1fee5e[_0x2a8a('0xe')][_0x2a8a('0xd')]);}})[_0x2a8a('0xf')](function(_0x1b1e28){logger[_0x2a8a('0xb')]('DeskField,\x20%s,\x20%s',_0x30e738,_0x1b1e28);_0x369649(_0x1b1e28);});});}
\ No newline at end of file
+var _0x1769=['request','then','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3c06c6,_0x21a8f0){var _0x3fcb33=function(_0x25344c){while(--_0x25344c){_0x3c06c6['push'](_0x3c06c6['shift']());}};_0x3fcb33(++_0x21a8f0);}(_0x1769,0x19d));var _0x9176=function(_0x565f59,_0x58f11a){_0x565f59=_0x565f59-0x0;var _0x54dbf4=_0x1769[_0x565f59];return _0x54dbf4;};'use strict';var _=require(_0x9176('0x0'));var util=require(_0x9176('0x1'));var moment=require('moment');var BPromise=require(_0x9176('0x2'));var rs=require(_0x9176('0x3'));var fs=require('fs');var Redis=require(_0x9176('0x4'));var db=require(_0x9176('0x5'))['db'];var utils=require(_0x9176('0x6'));var logger=require(_0x9176('0x7'))(_0x9176('0x8'));var config=require(_0x9176('0x9'));var jayson=require(_0x9176('0xa'));var client=jayson['client'][_0x9176('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x293612,_0x33f1d7,_0xf38cf3){return new BPromise(function(_0x85e692,_0x47116b){return client[_0x9176('0xc')](_0x293612,_0xf38cf3)[_0x9176('0xd')](function(_0x3290e6){logger['info'](_0x9176('0xe'),_0x33f1d7,_0x9176('0xf'));logger[_0x9176('0x10')](_0x9176('0x11'),_0x33f1d7,_0x9176('0xf'),JSON[_0x9176('0x12')](_0x3290e6));if(_0x3290e6[_0x9176('0x13')]){if(_0x3290e6[_0x9176('0x13')][_0x9176('0x14')]===0x1f4){logger[_0x9176('0x13')](_0x9176('0xe'),_0x33f1d7,_0x3290e6[_0x9176('0x13')][_0x9176('0x15')]);return _0x47116b(_0x3290e6['error']['message']);}logger[_0x9176('0x13')](_0x9176('0xe'),_0x33f1d7,_0x3290e6['error']['message']);return _0x85e692(_0x3290e6[_0x9176('0x13')][_0x9176('0x15')]);}else{logger[_0x9176('0x16')](_0x9176('0xe'),_0x33f1d7,_0x9176('0xf'));_0x85e692(_0x3290e6[_0x9176('0x17')][_0x9176('0x15')]);}})[_0x9176('0x18')](function(_0x4a486d){logger[_0x9176('0x13')](_0x9176('0xe'),_0x33f1d7,_0x4a486d);_0x47116b(_0x4a486d);});});}
\ No newline at end of file
index c3a4706..f16d02a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd2a=['multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./intDynamics365Account.controller','get','index','isAuthenticated','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','destroy'];(function(_0x324523,_0x35a62d){var _0x28c8f4=function(_0x16b6ce){while(--_0x16b6ce){_0x324523['push'](_0x324523['shift']());}};_0x28c8f4(++_0x35a62d);}(_0xdd2a,0x17a));var _0xadd2=function(_0x44d85e,_0x3ea6b0){_0x44d85e=_0x44d85e-0x0;var _0x530963=_0xdd2a[_0x44d85e];return _0x530963;};'use strict';var multer=require(_0xadd2('0x0'));var util=require(_0xadd2('0x1'));var path=require(_0xadd2('0x2'));var timeout=require(_0xadd2('0x3'));var express=require('express');var router=express[_0xadd2('0x4')]();var fs_extra=require(_0xadd2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xadd2('0x6'));var config=require('../../config/environment');var controller=require(_0xadd2('0x7'));router[_0xadd2('0x8')]('/',auth['isAuthenticated'](),controller[_0xadd2('0x9')]);router[_0xadd2('0x8')]('/:id',auth[_0xadd2('0xa')](),controller['show']);router[_0xadd2('0x8')](_0xadd2('0xb'),auth[_0xadd2('0xa')](),controller[_0xadd2('0xc')]);router[_0xadd2('0x8')](_0xadd2('0xd'),auth[_0xadd2('0xa')](),controller[_0xadd2('0xe')]);router[_0xadd2('0xf')]('/',auth[_0xadd2('0xa')](),controller[_0xadd2('0x10')]);router[_0xadd2('0xf')](_0xadd2('0xb'),auth[_0xadd2('0xa')](),controller[_0xadd2('0x11')]);router[_0xadd2('0x12')](_0xadd2('0x13'),auth[_0xadd2('0xa')](),controller['update']);router['delete'](_0xadd2('0x13'),auth[_0xadd2('0xa')](),controller[_0xadd2('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x30a6=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/:id','show','/:id/configurations','post','create','addConfiguration','put','update','delete','exports','multer','util','path'];(function(_0x173300,_0x41de8d){var _0x2c7581=function(_0x365231){while(--_0x365231){_0x173300['push'](_0x173300['shift']());}};_0x2c7581(++_0x41de8d);}(_0x30a6,0x107));var _0x630a=function(_0x4b2a54,_0x1a077f){_0x4b2a54=_0x4b2a54-0x0;var _0x4ce90c=_0x30a6[_0x4b2a54];return _0x4ce90c;};'use strict';var multer=require(_0x630a('0x0'));var util=require(_0x630a('0x1'));var path=require(_0x630a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x630a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x630a('0x4'));var interaction=require(_0x630a('0x5'));var config=require(_0x630a('0x6'));var controller=require('./intDynamics365Account.controller');router['get']('/',auth[_0x630a('0x7')](),controller['index']);router[_0x630a('0x8')](_0x630a('0x9'),auth['isAuthenticated'](),controller[_0x630a('0xa')]);router[_0x630a('0x8')](_0x630a('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x630a('0x8')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x630a('0xc')]('/',auth[_0x630a('0x7')](),controller[_0x630a('0xd')]);router[_0x630a('0xc')]('/:id/configurations',auth[_0x630a('0x7')](),controller[_0x630a('0xe')]);router[_0x630a('0xf')]('/:id',auth[_0x630a('0x7')](),controller[_0x630a('0x10')]);router[_0x630a('0x11')]('/:id',auth[_0x630a('0x7')](),controller['destroy']);module[_0x630a('0x12')]=router;
\ No newline at end of file
index 7e6016e..bd89c0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbacd=['BOOLEAN','sequelize','exports','STRING'];(function(_0x2ecddb,_0x130813){var _0x44d4cd=function(_0x37f075){while(--_0x37f075){_0x2ecddb['push'](_0x2ecddb['shift']());}};_0x44d4cd(++_0x130813);}(_0xbacd,0x1c5));var _0xdbac=function(_0x5d7eb4,_0x3f737d){_0x5d7eb4=_0x5d7eb4-0x0;var _0x504591=_0xbacd[_0x5d7eb4];return _0x504591;};'use strict';var Sequelize=require(_0xdbac('0x0'));module[_0xdbac('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xdbac('0x2')]},'password':{'type':Sequelize[_0xdbac('0x2')]},'remoteUri':{'type':Sequelize[_0xdbac('0x2')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xdbac('0x2')]},'clientSecret':{'type':Sequelize[_0xdbac('0x2')]},'serverUrl':{'type':Sequelize[_0xdbac('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xdbac('0x2')]},'modernAuthentication':{'type':Sequelize[_0xdbac('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xd0c9=['STRING','sequelize','exports'];(function(_0xcb8fde,_0x24399c){var _0x16dd77=function(_0x27cab4){while(--_0x27cab4){_0xcb8fde['push'](_0xcb8fde['shift']());}};_0x16dd77(++_0x24399c);}(_0xd0c9,0xe2));var _0x9d0c=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xd0c9[_0x1cc8fe];return _0x230054;};'use strict';var Sequelize=require(_0x9d0c('0x0'));module[_0x9d0c('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x9d0c('0x2')]},'tenantId':{'type':Sequelize[_0x9d0c('0x2')]},'clientId':{'type':Sequelize[_0x9d0c('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x9d0c('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index e0ce5d6..9a8bd81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f5=['slainvokedidname','slaname','socialprofileidname','statecode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','password','remoteUri','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','access_token','POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','forEach','@odata.type','substring','lastIndexOf','push','MetadataId','isNil','BooleanAttributeMetadata','all','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','test','statusCode','send','Wrong\x20credentials','EntityDefinitions(',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','Options','Label','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','UserLocalizedLabel','true','false','request-promise','util','lodash','../../components/parsers/qs','api','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','update','destroy','then','error','stack','name','index','map','Dynamics365Account','fieldName','type','model','filters','intersection','query','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','catch','params','keys','rawAttributes','length','find','create','body','getConfigurations','findOne','nolimit','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Configuration','Dynamics365Field','format','%s/api/data/v9.0/','getFields','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_url','exchangerate','firstresponsebykpiidname','importsequencenumber','influencescore','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','resolveby','responseby','responsiblecontactidname','sentimentvalue'];(function(_0x3c85f1,_0x4cee02){var _0x22ad27=function(_0x2a6717){while(--_0x2a6717){_0x3c85f1['push'](_0x3c85f1['shift']());}};_0x22ad27(++_0x4cee02);}(_0xe0f5,0xfd));var _0x5e0f=function(_0x1112ee,_0x54ed62){_0x1112ee=_0x1112ee-0x0;var _0x46e85d=_0xe0f5[_0x1112ee];return _0x46e85d;};'use strict';var rp=require(_0x5e0f('0x0'));var util=require(_0x5e0f('0x1'));var _=require(_0x5e0f('0x2'));var qs=require(_0x5e0f('0x3'));var logger=require('../../config/logger')(_0x5e0f('0x4'));var db=require(_0x5e0f('0x5'))['db'];var integrations=require(_0x5e0f('0x6'));function respondWithResult(_0x464163,_0xa5e1f1){_0xa5e1f1=_0xa5e1f1||0xc8;return function(_0x2d071d){if(_0x2d071d){return _0x464163[_0x5e0f('0x7')](_0xa5e1f1)[_0x5e0f('0x8')](_0x2d071d);}};}function respondWithFilteredResult(_0x49959a,_0x5494b7){return function(_0x28a4f3){if(_0x28a4f3){var _0x526b81=typeof _0x5494b7[_0x5e0f('0x9')]===_0x5e0f('0xa')&&typeof _0x5494b7[_0x5e0f('0xb')]==='undefined';var _0x23b579=_0x28a4f3[_0x5e0f('0xc')];var _0x2668d3=_0x526b81?0x0:_0x5494b7[_0x5e0f('0x9')];var _0xe458df=_0x526b81?_0x28a4f3['count']:_0x5494b7['offset']+_0x5494b7['limit'];var _0x4d6296;if(_0xe458df>=_0x23b579){_0xe458df=_0x23b579;_0x4d6296=0xc8;}else{_0x4d6296=0xce;}_0x49959a[_0x5e0f('0x7')](_0x4d6296);return _0x49959a[_0x5e0f('0xd')]('Content-Range',_0x2668d3+'-'+_0xe458df+'/'+_0x23b579)[_0x5e0f('0x8')](_0x28a4f3);}return null;};}function saveUpdates(_0x1de004){return function(_0x2bf48b){if(_0x2bf48b){return _0x2bf48b[_0x5e0f('0xe')](_0x1de004)['then'](function(_0x258a3c){return _0x258a3c;});}return null;};}function removeEntity(_0x1c91f5){return function(_0x56e9ec){if(_0x56e9ec){return _0x56e9ec[_0x5e0f('0xf')]()[_0x5e0f('0x10')](function(){_0x1c91f5[_0x5e0f('0x7')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16f9e5){return function(_0x52c989){if(!_0x52c989){_0x16f9e5['sendStatus'](0x194);}return _0x52c989;};}function handleError(_0x4e586b,_0x212a2b){_0x212a2b=_0x212a2b||0x1f4;return function(_0x12e6de){logger[_0x5e0f('0x11')](_0x12e6de[_0x5e0f('0x12')]);if(_0x12e6de[_0x5e0f('0x13')]){delete _0x12e6de[_0x5e0f('0x13')];}_0x4e586b['status'](_0x212a2b)['send'](_0x12e6de);};}exports[_0x5e0f('0x14')]=function(_0x192af2,_0x2b4b72){var _0x58e720={},_0x3bd1b={},_0x36a4db={'count':0x0,'rows':[]};var _0x559f77=_[_0x5e0f('0x15')](db[_0x5e0f('0x16')]['rawAttributes'],function(_0x341bea){return{'name':_0x341bea[_0x5e0f('0x17')],'type':_0x341bea[_0x5e0f('0x18')]['key']};});_0x3bd1b[_0x5e0f('0x19')]=_[_0x5e0f('0x15')](_0x559f77,'name');_0x3bd1b['query']=_['keys'](_0x192af2['query']);_0x3bd1b[_0x5e0f('0x1a')]=_[_0x5e0f('0x1b')](_0x3bd1b[_0x5e0f('0x19')],_0x3bd1b[_0x5e0f('0x1c')]);_0x58e720[_0x5e0f('0x1d')]=_[_0x5e0f('0x1b')](_0x3bd1b['model'],qs['fields'](_0x192af2['query'][_0x5e0f('0x1e')]));_0x58e720[_0x5e0f('0x1d')]=_0x58e720['attributes']['length']?_0x58e720[_0x5e0f('0x1d')]:_0x3bd1b[_0x5e0f('0x19')];if(!_0x192af2['query'][_0x5e0f('0x1f')]('nolimit')){_0x58e720[_0x5e0f('0xb')]=qs[_0x5e0f('0xb')](_0x192af2[_0x5e0f('0x1c')][_0x5e0f('0xb')]);_0x58e720[_0x5e0f('0x9')]=qs[_0x5e0f('0x9')](_0x192af2[_0x5e0f('0x1c')]['offset']);}_0x58e720[_0x5e0f('0x20')]=qs[_0x5e0f('0x21')](_0x192af2[_0x5e0f('0x1c')][_0x5e0f('0x21')]);_0x58e720[_0x5e0f('0x22')]=qs[_0x5e0f('0x1a')](_[_0x5e0f('0x23')](_0x192af2['query'],_0x3bd1b['filters']),_0x559f77);if(_0x192af2[_0x5e0f('0x1c')][_0x5e0f('0x24')]){_0x58e720['where']=_[_0x5e0f('0x25')](_0x58e720[_0x5e0f('0x22')],{'$or':_['map'](_0x559f77,function(_0x5f17aa){if(_0x5f17aa[_0x5e0f('0x18')]!=='VIRTUAL'){var _0x40c2f5={};_0x40c2f5[_0x5f17aa[_0x5e0f('0x13')]]={'$like':'%'+_0x192af2[_0x5e0f('0x1c')][_0x5e0f('0x24')]+'%'};return _0x40c2f5;}})});}_0x58e720=_['merge']({},_0x58e720,_0x192af2[_0x5e0f('0x26')]);var _0x205a57={'where':_0x58e720[_0x5e0f('0x22')]};return db[_0x5e0f('0x16')][_0x5e0f('0xc')](_0x205a57)[_0x5e0f('0x10')](function(_0x1e0540){_0x36a4db[_0x5e0f('0xc')]=_0x1e0540;if(_0x192af2[_0x5e0f('0x1c')][_0x5e0f('0x27')]){_0x58e720[_0x5e0f('0x28')]=[{'all':!![]}];}return db[_0x5e0f('0x16')]['findAll'](_0x58e720);})[_0x5e0f('0x10')](function(_0x22217b){_0x36a4db['rows']=_0x22217b;return _0x36a4db;})[_0x5e0f('0x10')](respondWithFilteredResult(_0x2b4b72,_0x58e720))[_0x5e0f('0x29')](handleError(_0x2b4b72,null));};exports['show']=function(_0x5183a6,_0x3f19d5){var _0x38480d={'raw':![],'where':{'id':_0x5183a6[_0x5e0f('0x2a')]['id']}},_0x18aac0={};_0x18aac0[_0x5e0f('0x19')]=_[_0x5e0f('0x2b')](db[_0x5e0f('0x16')][_0x5e0f('0x2c')]);_0x18aac0['query']=_['keys'](_0x5183a6[_0x5e0f('0x1c')]);_0x18aac0[_0x5e0f('0x1a')]=_[_0x5e0f('0x1b')](_0x18aac0[_0x5e0f('0x19')],_0x18aac0[_0x5e0f('0x1c')]);_0x38480d[_0x5e0f('0x1d')]=_[_0x5e0f('0x1b')](_0x18aac0['model'],qs[_0x5e0f('0x1e')](_0x5183a6[_0x5e0f('0x1c')][_0x5e0f('0x1e')]));_0x38480d[_0x5e0f('0x1d')]=_0x38480d[_0x5e0f('0x1d')][_0x5e0f('0x2d')]?_0x38480d[_0x5e0f('0x1d')]:_0x18aac0[_0x5e0f('0x19')];if(_0x5183a6[_0x5e0f('0x1c')][_0x5e0f('0x27')]){_0x38480d[_0x5e0f('0x28')]=[{'all':!![]}];}_0x38480d=_[_0x5e0f('0x25')]({},_0x38480d,_0x5183a6[_0x5e0f('0x26')]);return db[_0x5e0f('0x16')][_0x5e0f('0x2e')](_0x38480d)[_0x5e0f('0x10')](handleEntityNotFound(_0x3f19d5,null))[_0x5e0f('0x10')](respondWithResult(_0x3f19d5,null))['catch'](handleError(_0x3f19d5,null));};exports[_0x5e0f('0x2f')]=function(_0x3f885b,_0x4c1cb8){return db[_0x5e0f('0x16')][_0x5e0f('0x2f')](_0x3f885b[_0x5e0f('0x30')],{})[_0x5e0f('0x10')](respondWithResult(_0x4c1cb8,0xc9))[_0x5e0f('0x29')](handleError(_0x4c1cb8,null));};exports[_0x5e0f('0xe')]=function(_0x4878e1,_0x3dd7d7){if(_0x4878e1[_0x5e0f('0x30')]['id']){delete _0x4878e1[_0x5e0f('0x30')]['id'];}return db['Dynamics365Account'][_0x5e0f('0x2e')]({'where':{'id':_0x4878e1['params']['id']}})['then'](handleEntityNotFound(_0x3dd7d7,null))['then'](saveUpdates(_0x4878e1['body'],null))[_0x5e0f('0x10')](respondWithResult(_0x3dd7d7,null))['catch'](handleError(_0x3dd7d7,null));};exports[_0x5e0f('0xf')]=function(_0x550a9c,_0x52306b){return db[_0x5e0f('0x16')]['find']({'where':{'id':_0x550a9c[_0x5e0f('0x2a')]['id']}})[_0x5e0f('0x10')](handleEntityNotFound(_0x52306b,null))[_0x5e0f('0x10')](removeEntity(_0x52306b,null))[_0x5e0f('0x29')](handleError(_0x52306b,null));};exports[_0x5e0f('0x31')]=function(_0x31f097,_0x150530){var _0x2056e1={};var _0xa51cde={};var _0xb633de;var _0x45a13c;return db['Dynamics365Account'][_0x5e0f('0x32')]({'where':{'id':_0x31f097['params']['id']}})[_0x5e0f('0x10')](handleEntityNotFound(_0x150530,null))['then'](function(_0x21dad4){if(_0x21dad4){_0xb633de=_0x21dad4;_0xa51cde[_0x5e0f('0x19')]=_[_0x5e0f('0x2b')](db['Dynamics365Configuration'][_0x5e0f('0x2c')]);_0xa51cde[_0x5e0f('0x1c')]=_['keys'](_0x31f097[_0x5e0f('0x1c')]);_0xa51cde[_0x5e0f('0x1a')]=_[_0x5e0f('0x1b')](_0xa51cde[_0x5e0f('0x19')],_0xa51cde['query']);_0x2056e1['attributes']=_['intersection'](_0xa51cde[_0x5e0f('0x19')],qs[_0x5e0f('0x1e')](_0x31f097[_0x5e0f('0x1c')][_0x5e0f('0x1e')]));_0x2056e1[_0x5e0f('0x1d')]=_0x2056e1[_0x5e0f('0x1d')]['length']?_0x2056e1[_0x5e0f('0x1d')]:_0xa51cde[_0x5e0f('0x19')];_0x2056e1[_0x5e0f('0x20')]=qs[_0x5e0f('0x21')](_0x31f097[_0x5e0f('0x1c')][_0x5e0f('0x21')]);_0x2056e1[_0x5e0f('0x22')]=qs[_0x5e0f('0x1a')](_[_0x5e0f('0x23')](_0x31f097[_0x5e0f('0x1c')],_0xa51cde['filters']));if(_0x31f097['query'][_0x5e0f('0x24')]){_0x2056e1[_0x5e0f('0x22')]=_[_0x5e0f('0x25')](_0x2056e1['where'],{'$or':_['map'](_0x2056e1[_0x5e0f('0x1d')],function(_0x573fbd){var _0x2e541a={};_0x2e541a[_0x573fbd]={'$like':'%'+_0x31f097[_0x5e0f('0x1c')][_0x5e0f('0x24')]+'%'};return _0x2e541a;})});}_0x2056e1=_[_0x5e0f('0x25')]({},_0x2056e1,_0x31f097['options']);return _0xb633de[_0x5e0f('0x31')](_0x2056e1);}})[_0x5e0f('0x10')](function(_0x1cde6e){if(_0x1cde6e){_0x45a13c=_0x1cde6e[_0x5e0f('0x2d')];if(!_0x31f097[_0x5e0f('0x1c')][_0x5e0f('0x1f')](_0x5e0f('0x33'))){_0x2056e1['limit']=qs[_0x5e0f('0xb')](_0x31f097[_0x5e0f('0x1c')][_0x5e0f('0xb')]);_0x2056e1['offset']=qs[_0x5e0f('0x9')](_0x31f097[_0x5e0f('0x1c')]['offset']);}return _0xb633de[_0x5e0f('0x31')](_0x2056e1);}})[_0x5e0f('0x10')](function(_0x132dff){if(_0x132dff){return _0x132dff?{'count':_0x45a13c,'rows':_0x132dff}:null;}})['then'](respondWithResult(_0x150530,null))['catch'](handleError(_0x150530,null));};exports[_0x5e0f('0x34')]=function(_0x142e59,_0x5c7f0d){if(_0x142e59['body']['id']){delete _0x142e59[_0x5e0f('0x30')]['id'];}return db[_0x5e0f('0x16')][_0x5e0f('0x32')]({'where':{'id':_0x142e59[_0x5e0f('0x2a')]['id']}})[_0x5e0f('0x10')](handleEntityNotFound(_0x5c7f0d,null))[_0x5e0f('0x10')](function(_0x141fb6){if(_0x141fb6){_0x142e59['body']['AccountId']=_0x141fb6['id'];_0x142e59[_0x5e0f('0x30')][_0x5e0f('0x35')]=integrations[_0x5e0f('0x36')](_0x142e59['body'][_0x5e0f('0x37')],_0x142e59[_0x5e0f('0x30')][_0x5e0f('0x18')]);_0x142e59['body'][_0x5e0f('0x38')]=integrations[_0x5e0f('0x39')](_0x142e59['body'][_0x5e0f('0x37')],_0x142e59[_0x5e0f('0x30')][_0x5e0f('0x18')]);return db[_0x5e0f('0x3a')][_0x5e0f('0x2f')](_0x142e59[_0x5e0f('0x30')],{'include':[{'model':db['Dynamics365Field'],'as':_0x5e0f('0x35')},{'model':db[_0x5e0f('0x3b')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x5c7f0d,null))['catch'](handleError(_0x5c7f0d,null));};function sanitizeRemoteUri(_0x5bb6d7){var _0x4de032=_0x5bb6d7['slice'](-0x1);if(_0x4de032==='/')return _0x5bb6d7['substring'](0x0,_0x5bb6d7['lastIndexOf'](_0x4de032));return _0x5bb6d7;}function getWebApiUrl(_0x557532){return util[_0x5e0f('0x3c')](_0x5e0f('0x3d'),_0x557532);}exports[_0x5e0f('0x3e')]=function(_0x5c26b3,_0x36aa83){var _0x4ab594=_0x5c26b3[_0x5e0f('0x1c')]['ticketType'];var _0x41baf6=_0x4ab594==='incident'?'Incident':'PhoneCall';var _0x3096b6='';var _0x139972='';var _0x3b428f='';var _0x453feb='';var _0x374c73='';var _0x4c8190='';var _0x21ef64='';var _0x5bf698='';var _0x316bec=[_0x5e0f('0x3f'),_0x5e0f('0x40'),_0x5e0f('0x41'),_0x5e0f('0x42'),_0x5e0f('0x43'),_0x5e0f('0x44'),_0x5e0f('0x45'),_0x5e0f('0x46'),_0x5e0f('0x47'),_0x5e0f('0x48')];var _0x567ade=[_0x5e0f('0x49'),_0x5e0f('0x4a'),_0x5e0f('0x4b'),_0x5e0f('0x4c'),_0x5e0f('0x4d'),'contactidyominame',_0x5e0f('0x4e'),_0x5e0f('0x4f'),_0x5e0f('0x50'),_0x5e0f('0x51'),_0x5e0f('0x52'),'createdbyyominame',_0x5e0f('0x53'),_0x5e0f('0x54'),_0x5e0f('0x55'),_0x5e0f('0x56'),_0x5e0f('0x57'),_0x5e0f('0x58'),_0x5e0f('0x59'),_0x5e0f('0x5a'),'entityimage_timestamp',_0x5e0f('0x5b'),'escalatedon',_0x5e0f('0x5c'),_0x5e0f('0x5d'),'followupby',_0x5e0f('0x5e'),_0x5e0f('0x5f'),'kbarticleidname',_0x5e0f('0x60'),'masteridname',_0x5e0f('0x61'),_0x5e0f('0x62'),'modifiedbyname',_0x5e0f('0x63'),_0x5e0f('0x64'),_0x5e0f('0x65'),_0x5e0f('0x66'),_0x5e0f('0x67'),'msdyn_iotalertname','numberofchildincidents',_0x5e0f('0x68'),_0x5e0f('0x69'),_0x5e0f('0x6a'),'owneridtype',_0x5e0f('0x6b'),_0x5e0f('0x6c'),_0x5e0f('0x6d'),_0x5e0f('0x6e'),_0x5e0f('0x6f'),_0x5e0f('0x70'),'productserialnumber',_0x5e0f('0x71'),'resolvebykpiidname',_0x5e0f('0x72'),_0x5e0f('0x73'),'responsiblecontactidyominame',_0x5e0f('0x74'),_0x5e0f('0x75'),_0x5e0f('0x76'),_0x5e0f('0x77'),_0x5e0f('0x78'),'statuscode','subjectidname',_0x5e0f('0x79'),_0x5e0f('0x7a'),_0x5e0f('0x7b'),_0x5e0f('0x7c'),_0x5e0f('0x7d'),_0x5e0f('0x7e')];var _0xe99732=_0x316bec[_0x5e0f('0x7f')](_0x567ade);return db[_0x5e0f('0x16')][_0x5e0f('0x32')]({'where':{'id':_0x5c26b3[_0x5e0f('0x2a')]['id']},'attributes':['id',_0x5e0f('0x80'),_0x5e0f('0x81'),_0x5e0f('0x82'),'tenantId',_0x5e0f('0x83'),_0x5e0f('0x84'),_0x5e0f('0x85')],'include':[{'model':db[_0x5e0f('0x86')],'as':_0x5e0f('0x86'),'attributes':['id',_0x5e0f('0x87'),_0x5e0f('0x88')]}]})[_0x5e0f('0x10')](handleEntityNotFound(_0x36aa83,null))[_0x5e0f('0x10')](function(_0x1b3ba6){if(_0x1b3ba6){if(_0x1b3ba6[_0x5e0f('0x85')]){_0x1b3ba6[_0x5e0f('0x89')]=_0x1b3ba6['CloudProvider'][_0x5e0f('0x87')];_0x5bf698=sanitizeRemoteUri(_0x1b3ba6[_0x5e0f('0x86')]['data7']);_0x21ef64=getWebApiUrl(_0x5bf698);return _0x1b3ba6;}_0x5bf698=sanitizeRemoteUri(_0x1b3ba6[_0x5e0f('0x82')]);_0x21ef64=getWebApiUrl(_0x5bf698);var _0xfad2ad={'method':_0x5e0f('0x8a'),'uri':_0x5e0f('0x8b')+_0x1b3ba6[_0x5e0f('0x8c')]+_0x5e0f('0x8d'),'form':{'client_id':_0x1b3ba6[_0x5e0f('0x83')],'resource':_0x5bf698,'username':_0x1b3ba6[_0x5e0f('0x80')],'password':_0x1b3ba6[_0x5e0f('0x81')],'grant_type':_0x5e0f('0x81'),'client_secret':_0x1b3ba6[_0x5e0f('0x84')]},'json':!![]};return rp(_0xfad2ad);}})[_0x5e0f('0x10')](function(_0x4a410d){_0x4c8190=_0x4a410d[_0x5e0f('0x89')];var _0x47d46e={'method':_0x5e0f('0x8e'),'uri':encodeURI(_0x21ef64+_0x5e0f('0x8f')+_0x41baf6+'\x27'),'headers':{'Authorization':_0x5e0f('0x90')+_0x4c8190,'If-None-Match':null,'OData-Version':_0x5e0f('0x91')},'json':!![]};return rp(_0x47d46e);})[_0x5e0f('0x10')](function(_0x1b5389){var _0x288453=_0x1b5389['value'][0x0];var _0xd1b900=_0x288453['MetadataId'];var _0x217b18={'method':_0x5e0f('0x8e'),'uri':_0x21ef64+'EntityDefinitions('+_0xd1b900+_0x5e0f('0x92'),'headers':{'Authorization':_0x5e0f('0x90')+_0x4c8190,'If-None-Match':null,'OData-Version':_0x5e0f('0x91')},'json':!![]};return rp(_0x217b18);})[_0x5e0f('0x10')](function(_0x59b3a2){_0x3096b6=_0x59b3a2;_0x139972=_0x3096b6[_0x5e0f('0x93')];_0x139972=_[_0x5e0f('0x94')](_0x139972,function(_0x5caeb0){return!_0xe99732[_0x5e0f('0x95')](_0x5caeb0[_0x5e0f('0x96')]);});var _0x35ab21=[];var _0x4d142f=[];_0x139972[_0x5e0f('0x97')](function(_0xc2565e){if(_0xc2565e[_0x5e0f('0x98')]){var _0x459967=_0xc2565e[_0x5e0f('0x98')][_0x5e0f('0x99')](_0xc2565e['@odata.type'][_0x5e0f('0x9a')]('.')+0x1);if(_0x459967==='PicklistAttributeMetadata'){_0x35ab21[_0x5e0f('0x9b')](getSelectList(_0x21ef64,_0x4ab594,_0x4d142f,_0x3096b6['MetadataId'],_0xc2565e[_0x5e0f('0x9c')],_0x4c8190));}}});return Promise['all'](_0x35ab21);})[_0x5e0f('0x10')](function(_0x46deab){_0x3b428f=_0x46deab[0x0];var _0x5c245b=[];var _0x5acef8=[];_0x139972['forEach'](function(_0x5f2209){if(!_[_0x5e0f('0x9d')](_0x5f2209[_0x5e0f('0x98')])){var _0x28e897=_0x5f2209['@odata.type'][_0x5e0f('0x99')](_0x5f2209[_0x5e0f('0x98')][_0x5e0f('0x9a')]('.')+0x1);if(_0x28e897===_0x5e0f('0x9e')){_0x5c245b['push'](getBooleanList(_0x21ef64,_0x4ab594,_0x5acef8,_0x3096b6['MetadataId'],_0x5f2209['MetadataId'],_0x4c8190));}}});return Promise[_0x5e0f('0x9f')](_0x5c245b);})['then'](function(_0x455f02){_0x453feb=_0x455f02[0x0];var _0x186ef5=[];var _0xf332f3=[];_0x139972[_0x5e0f('0x97')](function(_0x27c6e6){if(_0x27c6e6[_0x5e0f('0x98')]){var _0x4033fa=_0x27c6e6[_0x5e0f('0x98')][_0x5e0f('0x99')](_0x27c6e6[_0x5e0f('0x98')][_0x5e0f('0x9a')]('.')+0x1);if(_0x4033fa==='StringAttributeMetadata'||_0x4033fa===_0x5e0f('0xa0')||_0x4033fa===_0x5e0f('0xa1')||_0x4033fa===_0x5e0f('0xa2')||_0x4033fa===_0x5e0f('0xa3')||_0x4033fa===_0x5e0f('0xa4')||_0x4033fa===_0x5e0f('0xa5')||_0x4033fa===_0x5e0f('0xa6')||_0x4033fa==='StateAttributeMetadata'||_0x4033fa===_0x5e0f('0xa7')){_0x186ef5[_0x5e0f('0x9b')](getInputList(_0x21ef64,_0x4ab594,_0x4033fa,_0xf332f3,_0x3096b6['MetadataId'],_0x27c6e6[_0x5e0f('0x9c')],_0x4c8190));}}});return Promise[_0x5e0f('0x9f')](_0x186ef5);})[_0x5e0f('0x10')](function(_0x1d7275){_0x374c73=_0x1d7275[0x0];var _0x2a6bfb=_0x3b428f[_0x5e0f('0x7f')](_0x453feb)['concat'](_0x374c73);var _0x3b6d94={'count':_0x2a6bfb['length'],'rows':_0x2a6bfb};return _0x3b6d94;})[_0x5e0f('0x10')](respondWithResult(_0x36aa83,null))['catch'](function(_0xb51ab0){var _0x4026a5=_0x5c26b3[_0x5e0f('0x1c')][_0x5e0f('0xa8')]?0x1f4:_0xb51ab0[_0x5e0f('0xa9')]||0x1f4;logger[_0x5e0f('0x11')](_0xb51ab0['stack']);delete _0xb51ab0[_0x5e0f('0x13')];if(_0x4026a5===0x191){_0x4026a5=0x190;}_0x36aa83['status'](_0x4026a5)[_0x5e0f('0xaa')](_0x5c26b3[_0x5e0f('0x1c')]['test']?{'message':_0x5e0f('0xab'),'statusCode':_0xb51ab0[_0x5e0f('0xa9')]}:_0xb51ab0);});};function getSelectList(_0x3bbb7a,_0x3646ae,_0x54e443,_0x4400bc,_0x5acda,_0xd62867){var _0x170722={'method':'GET','uri':_0x3bbb7a+_0x5e0f('0xac')+_0x4400bc+_0x5e0f('0xad')+_0x5acda+_0x5e0f('0xae')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0x5e0f('0x90')+_0xd62867,'If-None-Match':null,'OData-Version':_0x5e0f('0x91')},'json':!![]};return rp(_0x170722)[_0x5e0f('0x10')](function(_0x462b36){var _0x5871b0=[];var _0x2cd319=_0x462b36['OptionSet'][_0x5e0f('0xaf')];_0x2cd319[_0x5e0f('0x97')](function(_0x567d53){_0x5871b0[_0x5e0f('0x9b')]({'name':_0x567d53[_0x5e0f('0xb0')]['UserLocalizedLabel'][_0x5e0f('0xb0')],'value':String(_0x567d53[_0x5e0f('0xb1')])});});var _0x4d4a74={'id':_0x3646ae+'_'+_0x462b36[_0x5e0f('0x96')],'name':_0x462b36[_0x5e0f('0xb2')]['UserLocalizedLabel'][_0x5e0f('0xb0')],'custom':![],'options':_0x5871b0};_0x54e443[_0x5e0f('0x9b')](_0x4d4a74);return _0x54e443;});}function getBooleanList(_0x2f8bd8,_0x44b47b,_0x203e4f,_0x5b632c,_0x4f7428,_0x45e64c){var _0x11256c={'method':_0x5e0f('0x8e'),'uri':_0x2f8bd8+'EntityDefinitions('+_0x5b632c+_0x5e0f('0xad')+_0x4f7428+_0x5e0f('0xb3'),'headers':{'Authorization':_0x5e0f('0x90')+_0x45e64c,'If-None-Match':null,'OData-Version':_0x5e0f('0x91')},'json':!![]};return rp(_0x11256c)[_0x5e0f('0x10')](function(_0x26baba){var _0x3a0e96=[];_0x3a0e96[_0x5e0f('0x9b')]({'name':_0x26baba[_0x5e0f('0xb4')][_0x5e0f('0xb5')]['Label'][_0x5e0f('0xb6')]['Label'],'value':_0x5e0f('0xb7')},{'name':_0x26baba[_0x5e0f('0xb4')]['FalseOption'][_0x5e0f('0xb0')]['UserLocalizedLabel'][_0x5e0f('0xb0')],'value':_0x5e0f('0xb8')});var _0x503589={'id':_0x44b47b+'_'+_0x26baba[_0x5e0f('0x96')],'name':_0x26baba['DisplayName']['UserLocalizedLabel']['Label'],'custom':![],'options':_0x3a0e96};_0x203e4f['push'](_0x503589);return _0x203e4f;});}function getInputList(_0x40d5a8,_0x55ddab,_0x388fec,_0x24e63c,_0x363205,_0x416586,_0x9ea174){var _0x256caf={'method':_0x5e0f('0x8e'),'uri':_0x40d5a8+_0x5e0f('0xac')+_0x363205+')/Attributes('+_0x416586+')/Microsoft.Dynamics.CRM.'+_0x388fec+'?$select=DisplayName,LogicalName','headers':{'Authorization':'Bearer\x20'+_0x9ea174,'If-None-Match':null,'OData-Version':_0x5e0f('0x91')},'json':!![]};return rp(_0x256caf)[_0x5e0f('0x10')](function(_0xf7f589){var _0x300892={'id':_0x55ddab+'_'+_0xf7f589[_0x5e0f('0x96')],'name':_0xf7f589[_0x5e0f('0xb2')][_0x5e0f('0xb6')]?_0xf7f589[_0x5e0f('0xb2')]['UserLocalizedLabel'][_0x5e0f('0xb0')]:_0xf7f589['LogicalName'],'custom':![],'options':[]};_0x24e63c[_0x5e0f('0x9b')](_0x300892);return _0x24e63c;});}
\ No newline at end of file
+var _0x0c3b=['MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','includes','LogicalName','forEach','@odata.type','lastIndexOf','all','isNil','BooleanAttributeMetadata','push','StringAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','stack','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','UserLocalizedLabel','Label','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','status','offset','count','set','Content-Range','json','update','destroy','then','end','sendStatus','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','merge','VIRTUAL','options','Dynamics365Account','includeAll','include','findAll','rows','params','find','catch','create','body','getConfigurations','findOne','Dynamics365Configuration','filter','Subjects','Descriptions','getDescriptions','channel','Dynamics365Field','slice','substring','format','%s/api/data/v9.0/','getFields','ticketType','incident','PhoneCall','title','description','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidyominame','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','importsequencenumber','influencescore','lastonholdtime','masteridname','modifiedbyname','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','concat','username','password','tenantId','clientId','modernAuthentication','CloudProvider','data5','data7','access_token','remoteUri','POST','https://login.microsoftonline.com/','/oauth2/token','clientSecret','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value'];(function(_0x3eb713,_0x437874){var _0x1d7128=function(_0x2b9cea){while(--_0x2b9cea){_0x3eb713['push'](_0x3eb713['shift']());}};_0x1d7128(++_0x437874);}(_0x0c3b,0x1a9));var _0xb0c3=function(_0x7c95e1,_0x373a2d){_0x7c95e1=_0x7c95e1-0x0;var _0x42819d=_0x0c3b[_0x7c95e1];return _0x42819d;};'use strict';var rp=require(_0xb0c3('0x0'));var util=require('util');var _=require(_0xb0c3('0x1'));var qs=require(_0xb0c3('0x2'));var logger=require(_0xb0c3('0x3'))(_0xb0c3('0x4'));var db=require(_0xb0c3('0x5'))['db'];var integrations=require(_0xb0c3('0x6'));function respondWithResult(_0x6801c,_0x2fb101){_0x2fb101=_0x2fb101||0xc8;return function(_0x467e52){if(_0x467e52){return _0x6801c[_0xb0c3('0x7')](_0x2fb101)['json'](_0x467e52);}};}function respondWithFilteredResult(_0x492356,_0x5db482){return function(_0x2b30be){if(_0x2b30be){var _0x40b9b5=typeof _0x5db482[_0xb0c3('0x8')]==='undefined'&&typeof _0x5db482['limit']==='undefined';var _0x56342b=_0x2b30be[_0xb0c3('0x9')];var _0x1b183e=_0x40b9b5?0x0:_0x5db482['offset'];var _0x28cd0d=_0x40b9b5?_0x2b30be[_0xb0c3('0x9')]:_0x5db482[_0xb0c3('0x8')]+_0x5db482['limit'];var _0x4cfc21;if(_0x28cd0d>=_0x56342b){_0x28cd0d=_0x56342b;_0x4cfc21=0xc8;}else{_0x4cfc21=0xce;}_0x492356[_0xb0c3('0x7')](_0x4cfc21);return _0x492356[_0xb0c3('0xa')](_0xb0c3('0xb'),_0x1b183e+'-'+_0x28cd0d+'/'+_0x56342b)[_0xb0c3('0xc')](_0x2b30be);}return null;};}function saveUpdates(_0x10e5bb){return function(_0x5b763b){if(_0x5b763b){return _0x5b763b[_0xb0c3('0xd')](_0x10e5bb)['then'](function(_0xf71186){return _0xf71186;});}return null;};}function removeEntity(_0x10bf41){return function(_0x32d52f){if(_0x32d52f){return _0x32d52f[_0xb0c3('0xe')]()[_0xb0c3('0xf')](function(){_0x10bf41['status'](0xcc)[_0xb0c3('0x10')]();});}};}function handleEntityNotFound(_0xd8b13d){return function(_0x3eb92f){if(!_0x3eb92f){_0xd8b13d[_0xb0c3('0x11')](0x194);}return _0x3eb92f;};}function handleError(_0x5a5023,_0x28d867){_0x28d867=_0x28d867||0x1f4;return function(_0x16c893){logger[_0xb0c3('0x12')](_0x16c893['stack']);if(_0x16c893[_0xb0c3('0x13')]){delete _0x16c893['name'];}_0x5a5023['status'](_0x28d867)[_0xb0c3('0x14')](_0x16c893);};}exports[_0xb0c3('0x15')]=function(_0x192285,_0x28549a){var _0x2474f3={},_0xde3e91={},_0x13f94b={'count':0x0,'rows':[]};var _0x546bba=_['map'](db['Dynamics365Account'][_0xb0c3('0x16')],function(_0x47fd7b){return{'name':_0x47fd7b[_0xb0c3('0x17')],'type':_0x47fd7b[_0xb0c3('0x18')][_0xb0c3('0x19')]};});_0xde3e91[_0xb0c3('0x1a')]=_[_0xb0c3('0x1b')](_0x546bba,_0xb0c3('0x13'));_0xde3e91[_0xb0c3('0x1c')]=_[_0xb0c3('0x1d')](_0x192285[_0xb0c3('0x1c')]);_0xde3e91[_0xb0c3('0x1e')]=_['intersection'](_0xde3e91[_0xb0c3('0x1a')],_0xde3e91[_0xb0c3('0x1c')]);_0x2474f3[_0xb0c3('0x1f')]=_[_0xb0c3('0x20')](_0xde3e91[_0xb0c3('0x1a')],qs[_0xb0c3('0x21')](_0x192285[_0xb0c3('0x1c')][_0xb0c3('0x21')]));_0x2474f3['attributes']=_0x2474f3[_0xb0c3('0x1f')][_0xb0c3('0x22')]?_0x2474f3[_0xb0c3('0x1f')]:_0xde3e91[_0xb0c3('0x1a')];if(!_0x192285['query'][_0xb0c3('0x23')](_0xb0c3('0x24'))){_0x2474f3['limit']=qs[_0xb0c3('0x25')](_0x192285[_0xb0c3('0x1c')][_0xb0c3('0x25')]);_0x2474f3[_0xb0c3('0x8')]=qs[_0xb0c3('0x8')](_0x192285['query'][_0xb0c3('0x8')]);}_0x2474f3['order']=qs[_0xb0c3('0x26')](_0x192285[_0xb0c3('0x1c')][_0xb0c3('0x26')]);_0x2474f3[_0xb0c3('0x27')]=qs['filters'](_[_0xb0c3('0x28')](_0x192285[_0xb0c3('0x1c')],_0xde3e91['filters']),_0x546bba);if(_0x192285[_0xb0c3('0x1c')]['filter']){_0x2474f3['where']=_[_0xb0c3('0x29')](_0x2474f3[_0xb0c3('0x27')],{'$or':_[_0xb0c3('0x1b')](_0x546bba,function(_0x4e2e76){if(_0x4e2e76[_0xb0c3('0x18')]!==_0xb0c3('0x2a')){var _0xe13c05={};_0xe13c05[_0x4e2e76[_0xb0c3('0x13')]]={'$like':'%'+_0x192285['query']['filter']+'%'};return _0xe13c05;}})});}_0x2474f3=_[_0xb0c3('0x29')]({},_0x2474f3,_0x192285[_0xb0c3('0x2b')]);var _0x213f2a={'where':_0x2474f3[_0xb0c3('0x27')]};return db[_0xb0c3('0x2c')][_0xb0c3('0x9')](_0x213f2a)['then'](function(_0x42273b){_0x13f94b[_0xb0c3('0x9')]=_0x42273b;if(_0x192285[_0xb0c3('0x1c')][_0xb0c3('0x2d')]){_0x2474f3[_0xb0c3('0x2e')]=[{'all':!![]}];}return db[_0xb0c3('0x2c')][_0xb0c3('0x2f')](_0x2474f3);})[_0xb0c3('0xf')](function(_0x30c9d2){_0x13f94b[_0xb0c3('0x30')]=_0x30c9d2;return _0x13f94b;})[_0xb0c3('0xf')](respondWithFilteredResult(_0x28549a,_0x2474f3))['catch'](handleError(_0x28549a,null));};exports['show']=function(_0xaadc25,_0x54fb6f){var _0x5de8e8={'raw':![],'where':{'id':_0xaadc25[_0xb0c3('0x31')]['id']}},_0xe76a2f={};_0xe76a2f[_0xb0c3('0x1a')]=_['keys'](db[_0xb0c3('0x2c')][_0xb0c3('0x16')]);_0xe76a2f[_0xb0c3('0x1c')]=_[_0xb0c3('0x1d')](_0xaadc25[_0xb0c3('0x1c')]);_0xe76a2f[_0xb0c3('0x1e')]=_[_0xb0c3('0x20')](_0xe76a2f[_0xb0c3('0x1a')],_0xe76a2f['query']);_0x5de8e8[_0xb0c3('0x1f')]=_[_0xb0c3('0x20')](_0xe76a2f[_0xb0c3('0x1a')],qs[_0xb0c3('0x21')](_0xaadc25[_0xb0c3('0x1c')][_0xb0c3('0x21')]));_0x5de8e8['attributes']=_0x5de8e8[_0xb0c3('0x1f')][_0xb0c3('0x22')]?_0x5de8e8[_0xb0c3('0x1f')]:_0xe76a2f[_0xb0c3('0x1a')];if(_0xaadc25[_0xb0c3('0x1c')][_0xb0c3('0x2d')]){_0x5de8e8[_0xb0c3('0x2e')]=[{'all':!![]}];}_0x5de8e8=_['merge']({},_0x5de8e8,_0xaadc25['options']);return db[_0xb0c3('0x2c')][_0xb0c3('0x32')](_0x5de8e8)[_0xb0c3('0xf')](handleEntityNotFound(_0x54fb6f,null))['then'](respondWithResult(_0x54fb6f,null))[_0xb0c3('0x33')](handleError(_0x54fb6f,null));};exports['create']=function(_0x278a02,_0xd6539f){return db[_0xb0c3('0x2c')][_0xb0c3('0x34')](_0x278a02[_0xb0c3('0x35')],{})['then'](respondWithResult(_0xd6539f,0xc9))[_0xb0c3('0x33')](handleError(_0xd6539f,null));};exports[_0xb0c3('0xd')]=function(_0x45eb5f,_0x47bc1a){if(_0x45eb5f['body']['id']){delete _0x45eb5f[_0xb0c3('0x35')]['id'];}return db['Dynamics365Account'][_0xb0c3('0x32')]({'where':{'id':_0x45eb5f['params']['id']}})[_0xb0c3('0xf')](handleEntityNotFound(_0x47bc1a,null))[_0xb0c3('0xf')](saveUpdates(_0x45eb5f['body'],null))[_0xb0c3('0xf')](respondWithResult(_0x47bc1a,null))['catch'](handleError(_0x47bc1a,null));};exports[_0xb0c3('0xe')]=function(_0x15901d,_0x2ba480){return db['Dynamics365Account']['find']({'where':{'id':_0x15901d[_0xb0c3('0x31')]['id']}})[_0xb0c3('0xf')](handleEntityNotFound(_0x2ba480,null))['then'](removeEntity(_0x2ba480,null))[_0xb0c3('0x33')](handleError(_0x2ba480,null));};exports[_0xb0c3('0x36')]=function(_0x5d3371,_0x30a5bc){var _0x5b1e4f={};var _0x32a342={};var _0x131690;var _0x268e86;return db[_0xb0c3('0x2c')][_0xb0c3('0x37')]({'where':{'id':_0x5d3371['params']['id']}})[_0xb0c3('0xf')](handleEntityNotFound(_0x30a5bc,null))[_0xb0c3('0xf')](function(_0x980af3){if(_0x980af3){_0x131690=_0x980af3;_0x32a342[_0xb0c3('0x1a')]=_[_0xb0c3('0x1d')](db[_0xb0c3('0x38')][_0xb0c3('0x16')]);_0x32a342[_0xb0c3('0x1c')]=_[_0xb0c3('0x1d')](_0x5d3371[_0xb0c3('0x1c')]);_0x32a342['filters']=_[_0xb0c3('0x20')](_0x32a342[_0xb0c3('0x1a')],_0x32a342[_0xb0c3('0x1c')]);_0x5b1e4f[_0xb0c3('0x1f')]=_[_0xb0c3('0x20')](_0x32a342[_0xb0c3('0x1a')],qs[_0xb0c3('0x21')](_0x5d3371[_0xb0c3('0x1c')][_0xb0c3('0x21')]));_0x5b1e4f['attributes']=_0x5b1e4f[_0xb0c3('0x1f')]['length']?_0x5b1e4f[_0xb0c3('0x1f')]:_0x32a342[_0xb0c3('0x1a')];_0x5b1e4f['order']=qs[_0xb0c3('0x26')](_0x5d3371[_0xb0c3('0x1c')]['sort']);_0x5b1e4f['where']=qs['filters'](_[_0xb0c3('0x28')](_0x5d3371['query'],_0x32a342[_0xb0c3('0x1e')]));if(_0x5d3371['query']['filter']){_0x5b1e4f[_0xb0c3('0x27')]=_['merge'](_0x5b1e4f[_0xb0c3('0x27')],{'$or':_[_0xb0c3('0x1b')](_0x5b1e4f[_0xb0c3('0x1f')],function(_0x4dc764){var _0xc26614={};_0xc26614[_0x4dc764]={'$like':'%'+_0x5d3371[_0xb0c3('0x1c')][_0xb0c3('0x39')]+'%'};return _0xc26614;})});}_0x5b1e4f=_['merge']({},_0x5b1e4f,_0x5d3371['options']);return _0x131690['getConfigurations'](_0x5b1e4f);}})[_0xb0c3('0xf')](function(_0x5a9fe8){if(_0x5a9fe8){_0x268e86=_0x5a9fe8[_0xb0c3('0x22')];if(!_0x5d3371['query'][_0xb0c3('0x23')](_0xb0c3('0x24'))){_0x5b1e4f[_0xb0c3('0x25')]=qs[_0xb0c3('0x25')](_0x5d3371[_0xb0c3('0x1c')]['limit']);_0x5b1e4f[_0xb0c3('0x8')]=qs[_0xb0c3('0x8')](_0x5d3371[_0xb0c3('0x1c')][_0xb0c3('0x8')]);}return _0x131690[_0xb0c3('0x36')](_0x5b1e4f);}})[_0xb0c3('0xf')](function(_0x5e4403){if(_0x5e4403){return _0x5e4403?{'count':_0x268e86,'rows':_0x5e4403}:null;}})[_0xb0c3('0xf')](respondWithResult(_0x30a5bc,null))['catch'](handleError(_0x30a5bc,null));};exports['addConfiguration']=function(_0x3af8c2,_0x31b273){if(_0x3af8c2[_0xb0c3('0x35')]['id']){delete _0x3af8c2[_0xb0c3('0x35')]['id'];}return db['Dynamics365Account'][_0xb0c3('0x37')]({'where':{'id':_0x3af8c2[_0xb0c3('0x31')]['id']}})['then'](handleEntityNotFound(_0x31b273,null))[_0xb0c3('0xf')](function(_0x3a4501){if(_0x3a4501){_0x3af8c2[_0xb0c3('0x35')]['AccountId']=_0x3a4501['id'];_0x3af8c2['body'][_0xb0c3('0x3a')]=integrations['getSubjects'](_0x3af8c2[_0xb0c3('0x35')]['channel'],_0x3af8c2[_0xb0c3('0x35')]['type']);_0x3af8c2['body'][_0xb0c3('0x3b')]=integrations[_0xb0c3('0x3c')](_0x3af8c2['body'][_0xb0c3('0x3d')],_0x3af8c2[_0xb0c3('0x35')][_0xb0c3('0x18')]);return db[_0xb0c3('0x38')][_0xb0c3('0x34')](_0x3af8c2[_0xb0c3('0x35')],{'include':[{'model':db[_0xb0c3('0x3e')],'as':_0xb0c3('0x3a')},{'model':db[_0xb0c3('0x3e')],'as':'Descriptions'}]});}return null;})[_0xb0c3('0xf')](respondWithResult(_0x31b273,null))[_0xb0c3('0x33')](handleError(_0x31b273,null));};function sanitizeRemoteUri(_0x409c64){var _0x39f32d=_0x409c64[_0xb0c3('0x3f')](-0x1);if(_0x39f32d==='/')return _0x409c64[_0xb0c3('0x40')](0x0,_0x409c64['lastIndexOf'](_0x39f32d));return _0x409c64;}function getWebApiUrl(_0x22f9a3){return util[_0xb0c3('0x41')](_0xb0c3('0x42'),_0x22f9a3);}exports[_0xb0c3('0x43')]=function(_0x560b05,_0x33f21b){var _0x182544=_0x560b05['query'][_0xb0c3('0x44')];var _0x5c54cb=_0x182544===_0xb0c3('0x45')?'Incident':_0xb0c3('0x46');var _0x4a533d='';var _0x55d3e1='';var _0x33ee9b='';var _0x3f7a62='';var _0x3f1f9e='';var _0xe7a31d='';var _0xf9c671='';var _0x371766='';var _0x24a217=[_0xb0c3('0x47'),_0xb0c3('0x48'),'customerid',_0xb0c3('0x49'),_0xb0c3('0x4a'),_0xb0c3('0x4b'),_0xb0c3('0x4c'),_0xb0c3('0x4d'),_0xb0c3('0x4e'),_0xb0c3('0x4f')];var _0xdea594=['accountidname',_0xb0c3('0x50'),'actualserviceunits',_0xb0c3('0x51'),_0xb0c3('0x52'),_0xb0c3('0x53'),_0xb0c3('0x54'),_0xb0c3('0x55'),'createdbyexternalpartyname',_0xb0c3('0x56'),_0xb0c3('0x57'),_0xb0c3('0x58'),_0xb0c3('0x59'),_0xb0c3('0x5a'),_0xb0c3('0x5b'),_0xb0c3('0x5c'),_0xb0c3('0x5d'),_0xb0c3('0x5e'),_0xb0c3('0x5f'),_0xb0c3('0x60'),_0xb0c3('0x61'),_0xb0c3('0x62'),_0xb0c3('0x63'),_0xb0c3('0x64'),'firstresponsebykpiidname','followupby',_0xb0c3('0x65'),_0xb0c3('0x66'),'kbarticleidname',_0xb0c3('0x67'),_0xb0c3('0x68'),'modifiedbyexternalpartyname','modifiedbyexternalpartyyominame',_0xb0c3('0x69'),'modifiedbyyominame','modifiedon',_0xb0c3('0x6a'),_0xb0c3('0x6b'),_0xb0c3('0x6c'),_0xb0c3('0x6d'),'numberofchildincidents',_0xb0c3('0x6e'),'overriddencreatedon',_0xb0c3('0x6f'),_0xb0c3('0x70'),_0xb0c3('0x71'),_0xb0c3('0x72'),_0xb0c3('0x73'),_0xb0c3('0x74'),_0xb0c3('0x75'),_0xb0c3('0x76'),_0xb0c3('0x77'),_0xb0c3('0x78'),_0xb0c3('0x79'),_0xb0c3('0x7a'),'responsiblecontactidname',_0xb0c3('0x7b'),_0xb0c3('0x7c'),_0xb0c3('0x7d'),_0xb0c3('0x7e'),_0xb0c3('0x7f'),_0xb0c3('0x80'),'statuscode',_0xb0c3('0x81'),_0xb0c3('0x82'),_0xb0c3('0x83'),_0xb0c3('0x84'),_0xb0c3('0x85'),'utcconversiontimezonecode','versionnumber'];var _0x253a79=_0x24a217[_0xb0c3('0x86')](_0xdea594);return db['Dynamics365Account'][_0xb0c3('0x37')]({'where':{'id':_0x560b05[_0xb0c3('0x31')]['id']},'attributes':['id',_0xb0c3('0x87'),_0xb0c3('0x88'),'remoteUri',_0xb0c3('0x89'),_0xb0c3('0x8a'),'clientSecret',_0xb0c3('0x8b')],'include':[{'model':db['CloudProvider'],'as':_0xb0c3('0x8c'),'attributes':['id',_0xb0c3('0x8d'),_0xb0c3('0x8e')]}]})[_0xb0c3('0xf')](handleEntityNotFound(_0x33f21b,null))['then'](function(_0x15d774){if(_0x15d774){if(_0x15d774[_0xb0c3('0x8b')]){_0x15d774[_0xb0c3('0x8f')]=_0x15d774[_0xb0c3('0x8c')][_0xb0c3('0x8d')];_0x371766=sanitizeRemoteUri(_0x15d774['CloudProvider']['data7']);_0xf9c671=getWebApiUrl(_0x371766);return _0x15d774;}_0x371766=sanitizeRemoteUri(_0x15d774[_0xb0c3('0x90')]);_0xf9c671=getWebApiUrl(_0x371766);var _0x360ba6={'method':_0xb0c3('0x91'),'uri':_0xb0c3('0x92')+_0x15d774['tenantId']+_0xb0c3('0x93'),'form':{'client_id':_0x15d774[_0xb0c3('0x8a')],'resource':_0x371766,'username':_0x15d774['username'],'password':_0x15d774['password'],'grant_type':_0xb0c3('0x88'),'client_secret':_0x15d774[_0xb0c3('0x94')]},'json':!![]};return rp(_0x360ba6);}})[_0xb0c3('0xf')](function(_0x5011fd){_0xe7a31d=_0x5011fd['access_token'];var _0x2ac0c4={'method':_0xb0c3('0x95'),'uri':encodeURI(_0xf9c671+_0xb0c3('0x96')+_0x5c54cb+'\x27'),'headers':{'Authorization':_0xb0c3('0x97')+_0xe7a31d,'If-None-Match':null,'OData-Version':_0xb0c3('0x98')},'json':!![]};return rp(_0x2ac0c4);})[_0xb0c3('0xf')](function(_0x4be9c2){var _0x59487d=_0x4be9c2[_0xb0c3('0x99')][0x0];var _0x1e182f=_0x59487d[_0xb0c3('0x9a')];var _0x309d1e={'method':_0xb0c3('0x95'),'uri':_0xf9c671+_0xb0c3('0x9b')+_0x1e182f+_0xb0c3('0x9c'),'headers':{'Authorization':_0xb0c3('0x97')+_0xe7a31d,'If-None-Match':null,'OData-Version':_0xb0c3('0x98')},'json':!![]};return rp(_0x309d1e);})[_0xb0c3('0xf')](function(_0x589c08){_0x4a533d=_0x589c08;_0x55d3e1=_0x4a533d[_0xb0c3('0x9d')];_0x55d3e1=_['remove'](_0x55d3e1,function(_0x4cd06a){return!_0x253a79[_0xb0c3('0x9e')](_0x4cd06a[_0xb0c3('0x9f')]);});var _0x459483=[];var _0x2aeeb0=[];_0x55d3e1[_0xb0c3('0xa0')](function(_0x436a9e){if(_0x436a9e['@odata.type']){var _0x55fa00=_0x436a9e[_0xb0c3('0xa1')][_0xb0c3('0x40')](_0x436a9e[_0xb0c3('0xa1')][_0xb0c3('0xa2')]('.')+0x1);if(_0x55fa00==='PicklistAttributeMetadata'){_0x459483['push'](getSelectList(_0xf9c671,_0x182544,_0x2aeeb0,_0x4a533d['MetadataId'],_0x436a9e[_0xb0c3('0x9a')],_0xe7a31d));}}});return Promise[_0xb0c3('0xa3')](_0x459483);})['then'](function(_0x48bdf3){_0x33ee9b=_0x48bdf3[0x0];var _0x5ebb71=[];var _0x1399a4=[];_0x55d3e1[_0xb0c3('0xa0')](function(_0x3d4607){if(!_[_0xb0c3('0xa4')](_0x3d4607[_0xb0c3('0xa1')])){var _0x3f0d56=_0x3d4607[_0xb0c3('0xa1')][_0xb0c3('0x40')](_0x3d4607[_0xb0c3('0xa1')][_0xb0c3('0xa2')]('.')+0x1);if(_0x3f0d56===_0xb0c3('0xa5')){_0x5ebb71[_0xb0c3('0xa6')](getBooleanList(_0xf9c671,_0x182544,_0x1399a4,_0x4a533d[_0xb0c3('0x9a')],_0x3d4607[_0xb0c3('0x9a')],_0xe7a31d));}}});return Promise[_0xb0c3('0xa3')](_0x5ebb71);})[_0xb0c3('0xf')](function(_0x5726d7){_0x3f7a62=_0x5726d7[0x0];var _0x1bbec8=[];var _0x5a9801=[];_0x55d3e1[_0xb0c3('0xa0')](function(_0x5c0546){if(_0x5c0546['@odata.type']){var _0x20337c=_0x5c0546[_0xb0c3('0xa1')][_0xb0c3('0x40')](_0x5c0546[_0xb0c3('0xa1')][_0xb0c3('0xa2')]('.')+0x1);if(_0x20337c===_0xb0c3('0xa7')||_0x20337c===_0xb0c3('0xa8')||_0x20337c==='BigIntAttributeMetadata'||_0x20337c===_0xb0c3('0xa9')||_0x20337c===_0xb0c3('0xaa')||_0x20337c===_0xb0c3('0xab')||_0x20337c===_0xb0c3('0xac')||_0x20337c==='EntityNameAttributeMetadata'||_0x20337c===_0xb0c3('0xad')||_0x20337c===_0xb0c3('0xae')){_0x1bbec8[_0xb0c3('0xa6')](getInputList(_0xf9c671,_0x182544,_0x20337c,_0x5a9801,_0x4a533d['MetadataId'],_0x5c0546[_0xb0c3('0x9a')],_0xe7a31d));}}});return Promise[_0xb0c3('0xa3')](_0x1bbec8);})[_0xb0c3('0xf')](function(_0x43cc7d){_0x3f1f9e=_0x43cc7d[0x0];var _0x168bbc=_0x33ee9b['concat'](_0x3f7a62)[_0xb0c3('0x86')](_0x3f1f9e);var _0x387875={'count':_0x168bbc[_0xb0c3('0x22')],'rows':_0x168bbc};return _0x387875;})['then'](respondWithResult(_0x33f21b,null))[_0xb0c3('0x33')](function(_0x3676ee){var _0x2b546d=_0x560b05[_0xb0c3('0x1c')][_0xb0c3('0xaf')]?0x1f4:_0x3676ee[_0xb0c3('0xb0')]||0x1f4;logger[_0xb0c3('0x12')](_0x3676ee[_0xb0c3('0xb1')]);delete _0x3676ee[_0xb0c3('0x13')];if(_0x2b546d===0x191){_0x2b546d=0x190;}_0x33f21b[_0xb0c3('0x7')](_0x2b546d)[_0xb0c3('0x14')](_0x560b05[_0xb0c3('0x1c')]['test']?{'message':_0xb0c3('0xb2'),'statusCode':_0x3676ee['statusCode']}:_0x3676ee);});};function getSelectList(_0x2b75af,_0x217c6e,_0x3a4060,_0x5b7721,_0x41ce02,_0x5b1bd9){var _0x203d47={'method':_0xb0c3('0x95'),'uri':_0x2b75af+_0xb0c3('0x9b')+_0x5b7721+_0xb0c3('0xb3')+_0x41ce02+_0xb0c3('0xb4')+_0xb0c3('0xb5'),'headers':{'Authorization':_0xb0c3('0x97')+_0x5b1bd9,'If-None-Match':null,'OData-Version':_0xb0c3('0x98')},'json':!![]};return rp(_0x203d47)['then'](function(_0x13fd22){var _0x31723a=[];var _0x221c7a=_0x13fd22['OptionSet']['Options'];_0x221c7a[_0xb0c3('0xa0')](function(_0x5720f3){_0x31723a[_0xb0c3('0xa6')]({'name':_0x5720f3['Label'][_0xb0c3('0xb6')][_0xb0c3('0xb7')],'value':String(_0x5720f3[_0xb0c3('0xb8')])});});var _0x8f105e={'id':_0x217c6e+'_'+_0x13fd22[_0xb0c3('0x9f')],'name':_0x13fd22[_0xb0c3('0xb9')][_0xb0c3('0xb6')][_0xb0c3('0xb7')],'custom':![],'options':_0x31723a};_0x3a4060[_0xb0c3('0xa6')](_0x8f105e);return _0x3a4060;});}function getBooleanList(_0xff759,_0x306fdf,_0x194742,_0x5190ae,_0x38024b,_0x36708f){var _0x2422d9={'method':_0xb0c3('0x95'),'uri':_0xff759+_0xb0c3('0x9b')+_0x5190ae+_0xb0c3('0xb3')+_0x38024b+_0xb0c3('0xba'),'headers':{'Authorization':_0xb0c3('0x97')+_0x36708f,'If-None-Match':null,'OData-Version':_0xb0c3('0x98')},'json':!![]};return rp(_0x2422d9)[_0xb0c3('0xf')](function(_0x49cd73){var _0x3747fd=[];_0x3747fd[_0xb0c3('0xa6')]({'name':_0x49cd73[_0xb0c3('0xbb')][_0xb0c3('0xbc')][_0xb0c3('0xb7')][_0xb0c3('0xb6')][_0xb0c3('0xb7')],'value':'true'},{'name':_0x49cd73[_0xb0c3('0xbb')][_0xb0c3('0xbd')][_0xb0c3('0xb7')][_0xb0c3('0xb6')][_0xb0c3('0xb7')],'value':_0xb0c3('0xbe')});var _0x382f68={'id':_0x306fdf+'_'+_0x49cd73[_0xb0c3('0x9f')],'name':_0x49cd73[_0xb0c3('0xb9')]['UserLocalizedLabel'][_0xb0c3('0xb7')],'custom':![],'options':_0x3747fd};_0x194742[_0xb0c3('0xa6')](_0x382f68);return _0x194742;});}function getInputList(_0x3b007f,_0x8ccc04,_0x205ff3,_0x586eaa,_0xf83cdb,_0x25684c,_0x2ad71d){var _0x50995d={'method':_0xb0c3('0x95'),'uri':_0x3b007f+'EntityDefinitions('+_0xf83cdb+')/Attributes('+_0x25684c+_0xb0c3('0xbf')+_0x205ff3+_0xb0c3('0xc0'),'headers':{'Authorization':_0xb0c3('0x97')+_0x2ad71d,'If-None-Match':null,'OData-Version':_0xb0c3('0x98')},'json':!![]};return rp(_0x50995d)[_0xb0c3('0xf')](function(_0x35538e){var _0x12b6e2={'id':_0x8ccc04+'_'+_0x35538e[_0xb0c3('0x9f')],'name':_0x35538e['DisplayName']['UserLocalizedLabel']?_0x35538e[_0xb0c3('0xb9')][_0xb0c3('0xb6')]['Label']:_0x35538e[_0xb0c3('0x9f')],'custom':![],'options':[]};_0x586eaa['push'](_0x12b6e2);return _0x586eaa;});}
\ No newline at end of file
index f7f1e26..cfc712d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0x5b70fe,_0x7f2eeb){var _0x3e2682=function(_0x4826b3){while(--_0x4826b3){_0x5b70fe['push'](_0x5b70fe['shift']());}};_0x3e2682(++_0x7f2eeb);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xbaf0[_0x5b644e];return _0x49c6bf;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x4aa7bd,_0x477ceb){var _0x5a4ff9=function(_0x391590){while(--_0x391590){_0x4aa7bd['push'](_0x4aa7bd['shift']());}};_0x5a4ff9(++_0x477ceb);}(_0xe706,0xa3));var _0x6e70=function(_0x175a55,_0x4082fd){_0x175a55=_0x175a55-0x0;var _0x167adf=_0xe706[_0x175a55];return _0x167adf;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 241501a..781bfa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe953=['find','ShowDynamics365Account','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','map','model','catch'];(function(_0x38b8c6,_0x541f91){var _0x3104d6=function(_0x4215ee){while(--_0x4215ee){_0x38b8c6['push'](_0x38b8c6['shift']());}};_0x3104d6(++_0x541f91);}(_0xe953,0x174));var _0x3e95=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0xe953[_0x12f688];return _0x59c3de;};'use strict';var _=require(_0x3e95('0x0'));var util=require(_0x3e95('0x1'));var moment=require(_0x3e95('0x2'));var BPromise=require('bluebird');var rs=require(_0x3e95('0x3'));var fs=require('fs');var Redis=require(_0x3e95('0x4'));var db=require(_0x3e95('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3e95('0x6'))(_0x3e95('0x7'));var config=require(_0x3e95('0x8'));var jayson=require(_0x3e95('0x9'));var client=jayson[_0x3e95('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x413f66,_0x2a279b,_0x5de875){return new BPromise(function(_0x272edc,_0xd47b8b){return client[_0x3e95('0xb')](_0x413f66,_0x5de875)[_0x3e95('0xc')](function(_0x4b4003){logger[_0x3e95('0xd')](_0x3e95('0xe'),_0x2a279b,_0x3e95('0xf'));logger[_0x3e95('0x10')](_0x3e95('0x11'),_0x2a279b,'request\x20sent',JSON[_0x3e95('0x12')](_0x4b4003));if(_0x4b4003[_0x3e95('0x13')]){if(_0x4b4003[_0x3e95('0x13')][_0x3e95('0x14')]===0x1f4){logger['error'](_0x3e95('0xe'),_0x2a279b,_0x4b4003[_0x3e95('0x13')]['message']);return _0xd47b8b(_0x4b4003[_0x3e95('0x13')][_0x3e95('0x15')]);}logger[_0x3e95('0x13')](_0x3e95('0xe'),_0x2a279b,_0x4b4003[_0x3e95('0x13')][_0x3e95('0x15')]);return _0x272edc(_0x4b4003[_0x3e95('0x13')][_0x3e95('0x15')]);}else{logger[_0x3e95('0xd')](_0x3e95('0xe'),_0x2a279b,_0x3e95('0xf'));_0x272edc(_0x4b4003[_0x3e95('0x16')][_0x3e95('0x15')]);}})['catch'](function(_0x119927){logger[_0x3e95('0x13')](_0x3e95('0xe'),_0x2a279b,_0x119927);_0xd47b8b(_0x119927);});});}exports[_0x3e95('0x17')]=function(_0x3324a9){var _0x3e1a39=this;return new Promise(function(_0x29a722,_0x5dfef4){return db[_0x3e95('0x18')][_0x3e95('0x19')]({'raw':_0x3324a9['options']?_0x3324a9[_0x3e95('0x1a')][_0x3e95('0x1b')]===undefined?!![]:![]:!![],'where':_0x3324a9[_0x3e95('0x1a')]?_0x3324a9[_0x3e95('0x1a')][_0x3e95('0x1c')]||null:null,'attributes':_0x3324a9[_0x3e95('0x1a')]?_0x3324a9[_0x3e95('0x1a')][_0x3e95('0x1d')]||null:null,'limit':_0x3324a9[_0x3e95('0x1a')]?_0x3324a9[_0x3e95('0x1a')][_0x3e95('0x1e')]||null:null,'include':_0x3324a9[_0x3e95('0x1a')]?_0x3324a9[_0x3e95('0x1a')][_0x3e95('0x1f')]?_[_0x3e95('0x20')](_0x3324a9[_0x3e95('0x1a')][_0x3e95('0x1f')],function(_0x46abfb){return{'model':db[_0x46abfb[_0x3e95('0x21')]],'as':_0x46abfb['as'],'attributes':_0x46abfb['attributes'],'include':_0x46abfb[_0x3e95('0x1f')]?_[_0x3e95('0x20')](_0x46abfb[_0x3e95('0x1f')],function(_0x4aa01c){return{'model':db[_0x4aa01c['model']],'as':_0x4aa01c['as'],'attributes':_0x4aa01c['attributes'],'include':_0x4aa01c['include']?_['map'](_0x4aa01c[_0x3e95('0x1f')],function(_0xe46189){return{'model':db[_0xe46189['model']],'as':_0xe46189['as'],'attributes':_0xe46189[_0x3e95('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3e95('0xc')](function(_0x11e690){logger[_0x3e95('0xd')]('GetDynamics365Account',_0x3324a9);logger[_0x3e95('0x10')]('GetDynamics365Account',_0x3324a9,JSON[_0x3e95('0x12')](_0x11e690));_0x29a722(_0x11e690);})[_0x3e95('0x22')](function(_0x364423){logger['error'](_0x3e95('0x17'),_0x364423[_0x3e95('0x15')],_0x3324a9);_0x5dfef4(_0x3e1a39[_0x3e95('0x13')](0x1f4,_0x364423[_0x3e95('0x15')]));});});};exports['ShowDynamics365Account']=function(_0x1804be){var _0x52cbd4=this;return new Promise(function(_0x5a15bd,_0x248846){return db[_0x3e95('0x18')][_0x3e95('0x23')]({'raw':_0x1804be['options']?_0x1804be[_0x3e95('0x1a')][_0x3e95('0x1b')]===undefined?!![]:![]:!![],'where':_0x1804be[_0x3e95('0x1a')]?_0x1804be[_0x3e95('0x1a')][_0x3e95('0x1c')]||null:null,'attributes':_0x1804be['options']?_0x1804be['options']['attributes']||null:null,'include':_0x1804be[_0x3e95('0x1a')]?_0x1804be[_0x3e95('0x1a')][_0x3e95('0x1f')]?_[_0x3e95('0x20')](_0x1804be['options'][_0x3e95('0x1f')],function(_0x3c6ca2){return{'model':db[_0x3c6ca2[_0x3e95('0x21')]],'as':_0x3c6ca2['as'],'attributes':_0x3c6ca2[_0x3e95('0x1d')],'include':_0x3c6ca2[_0x3e95('0x1f')]?_['map'](_0x3c6ca2[_0x3e95('0x1f')],function(_0x13974b){return{'model':db[_0x13974b[_0x3e95('0x21')]],'as':_0x13974b['as'],'attributes':_0x13974b['attributes'],'include':_0x13974b[_0x3e95('0x1f')]?_[_0x3e95('0x20')](_0x13974b['include'],function(_0x3159ba){return{'model':db[_0x3159ba[_0x3e95('0x21')]],'as':_0x3159ba['as'],'attributes':_0x3159ba['attributes']};}):[]};}):[]};}):[]:[]})[_0x3e95('0xc')](function(_0x4f6164){logger['info'](_0x3e95('0x24'),_0x1804be);logger[_0x3e95('0x10')](_0x3e95('0x24'),_0x1804be,JSON[_0x3e95('0x12')](_0x4f6164));_0x5a15bd(_0x4f6164);})[_0x3e95('0x22')](function(_0x1c1327){logger[_0x3e95('0x13')](_0x3e95('0x24'),_0x1c1327[_0x3e95('0x15')],_0x1804be);_0x248846(_0x52cbd4['error'](0x1f4,_0x1c1327[_0x3e95('0x15')]));});});};
\ No newline at end of file
+var _0xe95d=['where','attributes','include','map','model','ShowDynamics365Account','find','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Account,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetDynamics365Account','Dynamics365Account','options'];(function(_0x34bc94,_0x74f0fd){var _0xee41e7=function(_0x424111){while(--_0x424111){_0x34bc94['push'](_0x34bc94['shift']());}};_0xee41e7(++_0x74f0fd);}(_0xe95d,0xee));var _0xde95=function(_0x22bdd3,_0x552e50){_0x22bdd3=_0x22bdd3-0x0;var _0x44d9d9=_0xe95d[_0x22bdd3];return _0x44d9d9;};'use strict';var _=require(_0xde95('0x0'));var util=require('util');var moment=require(_0xde95('0x1'));var BPromise=require('bluebird');var rs=require(_0xde95('0x2'));var fs=require('fs');var Redis=require(_0xde95('0x3'));var db=require(_0xde95('0x4'))['db'];var utils=require(_0xde95('0x5'));var logger=require(_0xde95('0x6'))(_0xde95('0x7'));var config=require(_0xde95('0x8'));var jayson=require(_0xde95('0x9'));var client=jayson[_0xde95('0xa')][_0xde95('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x38b7e3,_0x44f228,_0x5b7799){return new BPromise(function(_0x335aa7,_0x28c740){return client['request'](_0x38b7e3,_0x5b7799)[_0xde95('0xc')](function(_0x3a63fc){logger[_0xde95('0xd')](_0xde95('0xe'),_0x44f228,'request\x20sent');logger[_0xde95('0xf')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x44f228,_0xde95('0x10'),JSON[_0xde95('0x11')](_0x3a63fc));if(_0x3a63fc['error']){if(_0x3a63fc[_0xde95('0x12')][_0xde95('0x13')]===0x1f4){logger[_0xde95('0x12')](_0xde95('0xe'),_0x44f228,_0x3a63fc['error'][_0xde95('0x14')]);return _0x28c740(_0x3a63fc['error'][_0xde95('0x14')]);}logger[_0xde95('0x12')](_0xde95('0xe'),_0x44f228,_0x3a63fc[_0xde95('0x12')][_0xde95('0x14')]);return _0x335aa7(_0x3a63fc[_0xde95('0x12')][_0xde95('0x14')]);}else{logger['info'](_0xde95('0xe'),_0x44f228,_0xde95('0x10'));_0x335aa7(_0x3a63fc[_0xde95('0x15')]['message']);}})[_0xde95('0x16')](function(_0x46c08e){logger[_0xde95('0x12')](_0xde95('0xe'),_0x44f228,_0x46c08e);_0x28c740(_0x46c08e);});});}exports[_0xde95('0x17')]=function(_0x79bfa1){var _0x123dfc=this;return new Promise(function(_0x2f3067,_0x4e4528){return db[_0xde95('0x18')]['findAll']({'raw':_0x79bfa1[_0xde95('0x19')]?_0x79bfa1[_0xde95('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x79bfa1[_0xde95('0x19')]?_0x79bfa1['options'][_0xde95('0x1a')]||null:null,'attributes':_0x79bfa1['options']?_0x79bfa1[_0xde95('0x19')][_0xde95('0x1b')]||null:null,'limit':_0x79bfa1[_0xde95('0x19')]?_0x79bfa1[_0xde95('0x19')]['limit']||null:null,'include':_0x79bfa1['options']?_0x79bfa1[_0xde95('0x19')][_0xde95('0x1c')]?_[_0xde95('0x1d')](_0x79bfa1[_0xde95('0x19')][_0xde95('0x1c')],function(_0x169535){return{'model':db[_0x169535[_0xde95('0x1e')]],'as':_0x169535['as'],'attributes':_0x169535[_0xde95('0x1b')],'include':_0x169535[_0xde95('0x1c')]?_[_0xde95('0x1d')](_0x169535[_0xde95('0x1c')],function(_0x6cb58a){return{'model':db[_0x6cb58a[_0xde95('0x1e')]],'as':_0x6cb58a['as'],'attributes':_0x6cb58a['attributes'],'include':_0x6cb58a['include']?_[_0xde95('0x1d')](_0x6cb58a[_0xde95('0x1c')],function(_0x273dd7){return{'model':db[_0x273dd7[_0xde95('0x1e')]],'as':_0x273dd7['as'],'attributes':_0x273dd7[_0xde95('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xde95('0xc')](function(_0x43c08e){logger[_0xde95('0xd')](_0xde95('0x17'),_0x79bfa1);logger[_0xde95('0xf')](_0xde95('0x17'),_0x79bfa1,JSON[_0xde95('0x11')](_0x43c08e));_0x2f3067(_0x43c08e);})[_0xde95('0x16')](function(_0x59d135){logger['error']('GetDynamics365Account',_0x59d135['message'],_0x79bfa1);_0x4e4528(_0x123dfc[_0xde95('0x12')](0x1f4,_0x59d135[_0xde95('0x14')]));});});};exports[_0xde95('0x1f')]=function(_0x338e0e){var _0x2a6411=this;return new Promise(function(_0xf0e0e1,_0x2c18dc){return db['Dynamics365Account'][_0xde95('0x20')]({'raw':_0x338e0e['options']?_0x338e0e['options']['raw']===undefined?!![]:![]:!![],'where':_0x338e0e[_0xde95('0x19')]?_0x338e0e[_0xde95('0x19')]['where']||null:null,'attributes':_0x338e0e[_0xde95('0x19')]?_0x338e0e[_0xde95('0x19')][_0xde95('0x1b')]||null:null,'include':_0x338e0e[_0xde95('0x19')]?_0x338e0e['options'][_0xde95('0x1c')]?_[_0xde95('0x1d')](_0x338e0e['options']['include'],function(_0x801eda){return{'model':db[_0x801eda['model']],'as':_0x801eda['as'],'attributes':_0x801eda[_0xde95('0x1b')],'include':_0x801eda[_0xde95('0x1c')]?_[_0xde95('0x1d')](_0x801eda['include'],function(_0x113ff9){return{'model':db[_0x113ff9['model']],'as':_0x113ff9['as'],'attributes':_0x113ff9[_0xde95('0x1b')],'include':_0x113ff9[_0xde95('0x1c')]?_[_0xde95('0x1d')](_0x113ff9[_0xde95('0x1c')],function(_0x42c917){return{'model':db[_0x42c917['model']],'as':_0x42c917['as'],'attributes':_0x42c917[_0xde95('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xde95('0xc')](function(_0x4a6018){logger[_0xde95('0xd')]('ShowDynamics365Account',_0x338e0e);logger[_0xde95('0xf')]('ShowDynamics365Account',_0x338e0e,JSON[_0xde95('0x11')](_0x4a6018));_0xf0e0e1(_0x4a6018);})[_0xde95('0x16')](function(_0x28a081){logger[_0xde95('0x12')]('ShowDynamics365Account',_0x28a081[_0xde95('0x14')],_0x338e0e);_0x2c18dc(_0x2a6411[_0xde95('0x12')](0x1f4,_0x28a081[_0xde95('0x14')]));});});};
\ No newline at end of file
index 4436ac4..0cf1be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xace6=['create','put','delete','/:id','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','show','/:id/fields','getFields','getSubjects','/:id/descriptions','post'];(function(_0x4a8418,_0x39078a){var _0x390174=function(_0x173ea6){while(--_0x173ea6){_0x4a8418['push'](_0x4a8418['shift']());}};_0x390174(++_0x39078a);}(_0xace6,0xd5));var _0x6ace=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xace6[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x6ace('0x0'));var util=require(_0x6ace('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6ace('0x2'));var router=express[_0x6ace('0x3')]();var fs_extra=require(_0x6ace('0x4'));var auth=require(_0x6ace('0x5'));var interaction=require(_0x6ace('0x6'));var config=require(_0x6ace('0x7'));var controller=require(_0x6ace('0x8'));router[_0x6ace('0x9')]('/',auth[_0x6ace('0xa')](),controller['index']);router[_0x6ace('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6ace('0xb')]);router[_0x6ace('0x9')](_0x6ace('0xc'),auth[_0x6ace('0xa')](),controller[_0x6ace('0xd')]);router[_0x6ace('0x9')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x6ace('0xe')]);router[_0x6ace('0x9')](_0x6ace('0xf'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x6ace('0x10')]('/',auth[_0x6ace('0xa')](),controller[_0x6ace('0x11')]);router[_0x6ace('0x12')]('/:id',auth[_0x6ace('0xa')](),controller['update']);router[_0x6ace('0x13')](_0x6ace('0x14'),auth[_0x6ace('0xa')](),controller[_0x6ace('0x15')]);module[_0x6ace('0x16')]=router;
\ No newline at end of file
+var _0x671e=['post','create','update','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x57aa6a,_0x26a3ff){var _0x378d4a=function(_0x399f6c){while(--_0x399f6c){_0x57aa6a['push'](_0x57aa6a['shift']());}};_0x378d4a(++_0x26a3ff);}(_0x671e,0xd6));var _0xe671=function(_0x2be004,_0x26fc49){_0x2be004=_0x2be004-0x0;var _0x55cfba=_0x671e[_0x2be004];return _0x55cfba;};'use strict';var multer=require(_0xe671('0x0'));var util=require(_0xe671('0x1'));var path=require(_0xe671('0x2'));var timeout=require('connect-timeout');var express=require(_0xe671('0x3'));var router=express[_0xe671('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe671('0x5'));var interaction=require(_0xe671('0x6'));var config=require(_0xe671('0x7'));var controller=require('./intDynamics365Configuration.controller');router[_0xe671('0x8')]('/',auth[_0xe671('0x9')](),controller['index']);router[_0xe671('0x8')](_0xe671('0xa'),auth[_0xe671('0x9')](),controller[_0xe671('0xb')]);router['get'](_0xe671('0xc'),auth[_0xe671('0x9')](),controller[_0xe671('0xd')]);router[_0xe671('0x8')]('/:id/subjects',auth['isAuthenticated'](),controller[_0xe671('0xe')]);router[_0xe671('0x8')](_0xe671('0xf'),auth['isAuthenticated'](),controller[_0xe671('0x10')]);router[_0xe671('0x11')]('/',auth[_0xe671('0x9')](),controller[_0xe671('0x12')]);router['put'](_0xe671('0xa'),auth['isAuthenticated'](),controller[_0xe671('0x13')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xe671('0x14')]=router;
\ No newline at end of file
index 1b58ec8..a680a8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa38a=['contact','nothing','BOOLEAN','sequelize','exports','STRING','ENUM','incident','phonecall'];(function(_0x35fabd,_0x825452){var _0x61a8ee=function(_0x218f4c){while(--_0x218f4c){_0x35fabd['push'](_0x35fabd['shift']());}};_0x61a8ee(++_0x825452);}(_0xa38a,0xae));var _0xaa38=function(_0x3694ea,_0x3b60d4){_0x3694ea=_0x3694ea-0x0;var _0x16057e=_0xa38a[_0x3694ea];return _0x16057e;};'use strict';var Sequelize=require(_0xaa38('0x0'));module[_0xaa38('0x1')]={'name':{'type':Sequelize[_0xaa38('0x2')]},'description':{'type':Sequelize[_0xaa38('0x2')]},'ticketType':{'type':Sequelize[_0xaa38('0x3')](_0xaa38('0x4'),_0xaa38('0x5')),'defaultValue':'incident'},'moduleCreate':{'type':Sequelize[_0xaa38('0x3')](_0xaa38('0x6'),_0xaa38('0x7')),'defaultValue':_0xaa38('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xaa38('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x176d=['ENUM','incident','phonecall','contact','nothing','BOOLEAN','sequelize','exports','STRING'];(function(_0x4cd03f,_0x34e866){var _0x4b7233=function(_0x32d8f6){while(--_0x32d8f6){_0x4cd03f['push'](_0x4cd03f['shift']());}};_0x4b7233(++_0x34e866);}(_0x176d,0x1ad));var _0xd176=function(_0x56c2b7,_0x46b107){_0x56c2b7=_0x56c2b7-0x0;var _0x566a41=_0x176d[_0x56c2b7];return _0x566a41;};'use strict';var Sequelize=require(_0xd176('0x0'));module[_0xd176('0x1')]={'name':{'type':Sequelize[_0xd176('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xd176('0x3')](_0xd176('0x4'),_0xd176('0x5')),'defaultValue':_0xd176('0x4')},'moduleCreate':{'type':Sequelize[_0xd176('0x3')](_0xd176('0x6'),_0xd176('0x7')),'defaultValue':_0xd176('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xd176('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xd176('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 0fb513a..91cc834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bab=['zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','map','Dynamics365Configuration','fieldName','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','filter','merge','includeAll','include','catch','params','rawAttributes','find','create','body','update','getFields','findOne','Dynamics365Field','getSubjects','options','getDescriptions','rimraf'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x2bab,0x1d9));var _0xb2ba=function(_0x1d9bd4,_0xaa100c){_0x1d9bd4=_0x1d9bd4-0x0;var _0x15882f=_0x2bab[_0x1d9bd4];return _0x15882f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb2ba('0x0'));var zipdir=require(_0xb2ba('0x1'));var jsonpatch=require(_0xb2ba('0x2'));var rp=require(_0xb2ba('0x3'));var moment=require(_0xb2ba('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb2ba('0x5'));var util=require('util');var path=require(_0xb2ba('0x6'));var sox=require('sox');var csv=require(_0xb2ba('0x7'));var ejs=require(_0xb2ba('0x8'));var fs=require('fs');var fs_extra=require(_0xb2ba('0x9'));var _=require(_0xb2ba('0xa'));var squel=require(_0xb2ba('0xb'));var crypto=require(_0xb2ba('0xc'));var jsforce=require(_0xb2ba('0xd'));var deskjs=require(_0xb2ba('0xe'));var toCsv=require(_0xb2ba('0x7'));var querystring=require(_0xb2ba('0xf'));var Papa=require('papaparse');var Redis=require(_0xb2ba('0x10'));var authService=require(_0xb2ba('0x11'));var qs=require(_0xb2ba('0x12'));var as=require(_0xb2ba('0x13'));var hardwareService=require(_0xb2ba('0x14'));var logger=require(_0xb2ba('0x15'))(_0xb2ba('0x16'));var utils=require(_0xb2ba('0x17'));var config=require(_0xb2ba('0x18'));var licenseUtil=require(_0xb2ba('0x19'));var db=require(_0xb2ba('0x1a'))['db'];function respondWithStatusCode(_0x1b4ccd,_0x4c1c5c){_0x4c1c5c=_0x4c1c5c||0xcc;return function(_0x158730){if(_0x158730){return _0x1b4ccd[_0xb2ba('0x1b')](_0x4c1c5c);}return _0x1b4ccd['status'](_0x4c1c5c)[_0xb2ba('0x1c')]();};}function respondWithResult(_0x3f458c,_0x316999){_0x316999=_0x316999||0xc8;return function(_0x2b72a2){if(_0x2b72a2){return _0x3f458c[_0xb2ba('0x1d')](_0x316999)[_0xb2ba('0x1e')](_0x2b72a2);}};}function respondWithFilteredResult(_0xa62451,_0x4a91c4){return function(_0xe70d87){if(_0xe70d87){var _0x51ce20=typeof _0x4a91c4[_0xb2ba('0x1f')]===_0xb2ba('0x20')&&typeof _0x4a91c4[_0xb2ba('0x21')]==='undefined';var _0x207aa6=_0xe70d87[_0xb2ba('0x22')];var _0xe8ca02=_0x51ce20?0x0:_0x4a91c4[_0xb2ba('0x1f')];var _0x5d5571=_0x51ce20?_0xe70d87[_0xb2ba('0x22')]:_0x4a91c4[_0xb2ba('0x1f')]+_0x4a91c4[_0xb2ba('0x21')];var _0x2cc848;if(_0x5d5571>=_0x207aa6){_0x5d5571=_0x207aa6;_0x2cc848=0xc8;}else{_0x2cc848=0xce;}_0xa62451['status'](_0x2cc848);return _0xa62451[_0xb2ba('0x23')]('Content-Range',_0xe8ca02+'-'+_0x5d5571+'/'+_0x207aa6)[_0xb2ba('0x1e')](_0xe70d87);}return null;};}function patchUpdates(_0x3faeb1){return function(_0x41e079){try{jsonpatch['apply'](_0x41e079,_0x3faeb1,!![]);}catch(_0x540380){return BPromise[_0xb2ba('0x24')](_0x540380);}return _0x41e079[_0xb2ba('0x25')]();};}function saveUpdates(_0x1224e1,_0x2e77fd){return function(_0x2fb1d8){if(_0x2fb1d8){return _0x2fb1d8['update'](_0x1224e1)[_0xb2ba('0x26')](function(_0x332790){return _0x332790;});}return null;};}function removeEntity(_0x3481b1,_0x13dd73){return function(_0x5282aa){if(_0x5282aa){return _0x5282aa[_0xb2ba('0x27')]()['then'](function(){_0x3481b1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x377737,_0x24064f){return function(_0x3b64c8){if(!_0x3b64c8){_0x377737[_0xb2ba('0x1b')](0x194);}return _0x3b64c8;};}function handleError(_0x5e1f73,_0x4d35ae){_0x4d35ae=_0x4d35ae||0x1f4;return function(_0x966e5c){logger[_0xb2ba('0x28')](_0x966e5c[_0xb2ba('0x29')]);if(_0x966e5c['name']){delete _0x966e5c['name'];}_0x5e1f73[_0xb2ba('0x1d')](_0x4d35ae)['send'](_0x966e5c);};}exports['index']=function(_0x169df2,_0x28dd9b){var _0x347f46={},_0x501f12={},_0x15398e={'count':0x0,'rows':[]};var _0x1c6686=_[_0xb2ba('0x2a')](db[_0xb2ba('0x2b')]['rawAttributes'],function(_0x21d433){return{'name':_0x21d433[_0xb2ba('0x2c')],'type':_0x21d433['type']['key']};});_0x501f12[_0xb2ba('0x2d')]=_['map'](_0x1c6686,_0xb2ba('0x2e'));_0x501f12[_0xb2ba('0x2f')]=_[_0xb2ba('0x30')](_0x169df2[_0xb2ba('0x2f')]);_0x501f12[_0xb2ba('0x31')]=_[_0xb2ba('0x32')](_0x501f12['model'],_0x501f12['query']);_0x347f46[_0xb2ba('0x33')]=_[_0xb2ba('0x32')](_0x501f12[_0xb2ba('0x2d')],qs[_0xb2ba('0x34')](_0x169df2[_0xb2ba('0x2f')][_0xb2ba('0x34')]));_0x347f46[_0xb2ba('0x33')]=_0x347f46[_0xb2ba('0x33')][_0xb2ba('0x35')]?_0x347f46[_0xb2ba('0x33')]:_0x501f12[_0xb2ba('0x2d')];if(!_0x169df2[_0xb2ba('0x2f')][_0xb2ba('0x36')](_0xb2ba('0x37'))){_0x347f46['limit']=qs[_0xb2ba('0x21')](_0x169df2[_0xb2ba('0x2f')][_0xb2ba('0x21')]);_0x347f46[_0xb2ba('0x1f')]=qs[_0xb2ba('0x1f')](_0x169df2[_0xb2ba('0x2f')][_0xb2ba('0x1f')]);}_0x347f46[_0xb2ba('0x38')]=qs['sort'](_0x169df2['query'][_0xb2ba('0x39')]);_0x347f46['where']=qs[_0xb2ba('0x31')](_[_0xb2ba('0x3a')](_0x169df2[_0xb2ba('0x2f')],_0x501f12[_0xb2ba('0x31')]),_0x1c6686);if(_0x169df2[_0xb2ba('0x2f')]['filter']){_0x347f46['where']=_['merge'](_0x347f46[_0xb2ba('0x3b')],{'$or':_[_0xb2ba('0x2a')](_0x1c6686,function(_0x6af0fa){if(_0x6af0fa[_0xb2ba('0x3c')]!==_0xb2ba('0x3d')){var _0x597236={};_0x597236[_0x6af0fa[_0xb2ba('0x2e')]]={'$like':'%'+_0x169df2['query'][_0xb2ba('0x3e')]+'%'};return _0x597236;}})});}_0x347f46=_[_0xb2ba('0x3f')]({},_0x347f46,_0x169df2['options']);var _0x2d4088={'where':_0x347f46['where']};return db[_0xb2ba('0x2b')][_0xb2ba('0x22')](_0x2d4088)['then'](function(_0x22d4c0){_0x15398e[_0xb2ba('0x22')]=_0x22d4c0;if(_0x169df2[_0xb2ba('0x2f')][_0xb2ba('0x40')]){_0x347f46[_0xb2ba('0x41')]=[{'all':!![]}];}return db['Dynamics365Configuration']['findAll'](_0x347f46);})['then'](function(_0x2b03c4){_0x15398e['rows']=_0x2b03c4;return _0x15398e;})[_0xb2ba('0x26')](respondWithFilteredResult(_0x28dd9b,_0x347f46))[_0xb2ba('0x42')](handleError(_0x28dd9b,null));};exports['show']=function(_0x4f677a,_0x50e6a4){var _0x4f849a={'raw':![],'where':{'id':_0x4f677a[_0xb2ba('0x43')]['id']}},_0x1ce919={};_0x1ce919['model']=_['keys'](db[_0xb2ba('0x2b')][_0xb2ba('0x44')]);_0x1ce919['query']=_[_0xb2ba('0x30')](_0x4f677a[_0xb2ba('0x2f')]);_0x1ce919[_0xb2ba('0x31')]=_[_0xb2ba('0x32')](_0x1ce919['model'],_0x1ce919[_0xb2ba('0x2f')]);_0x4f849a[_0xb2ba('0x33')]=_[_0xb2ba('0x32')](_0x1ce919[_0xb2ba('0x2d')],qs[_0xb2ba('0x34')](_0x4f677a[_0xb2ba('0x2f')][_0xb2ba('0x34')]));_0x4f849a[_0xb2ba('0x33')]=_0x4f849a[_0xb2ba('0x33')]['length']?_0x4f849a[_0xb2ba('0x33')]:_0x1ce919[_0xb2ba('0x2d')];if(_0x4f677a['query'][_0xb2ba('0x40')]){_0x4f849a[_0xb2ba('0x41')]=[{'all':!![]}];}_0x4f849a=_[_0xb2ba('0x3f')]({},_0x4f849a,_0x4f677a['options']);return db[_0xb2ba('0x2b')][_0xb2ba('0x45')](_0x4f849a)[_0xb2ba('0x26')](handleEntityNotFound(_0x50e6a4,null))[_0xb2ba('0x26')](respondWithResult(_0x50e6a4,null))[_0xb2ba('0x42')](handleError(_0x50e6a4,null));};exports[_0xb2ba('0x46')]=function(_0x1413c6,_0x200f92){return db['Dynamics365Configuration'][_0xb2ba('0x46')](_0x1413c6[_0xb2ba('0x47')],{})[_0xb2ba('0x26')](respondWithResult(_0x200f92,0xc9))[_0xb2ba('0x42')](handleError(_0x200f92,null));};exports[_0xb2ba('0x48')]=function(_0x54fc79,_0x2db582){if(_0x54fc79['body']['id']){delete _0x54fc79[_0xb2ba('0x47')]['id'];}return db['Dynamics365Configuration']['find']({'where':{'id':_0x54fc79[_0xb2ba('0x43')]['id']}})[_0xb2ba('0x26')](handleEntityNotFound(_0x2db582,null))['then'](saveUpdates(_0x54fc79[_0xb2ba('0x47')],null))[_0xb2ba('0x26')](respondWithResult(_0x2db582,null))['catch'](handleError(_0x2db582,null));};exports[_0xb2ba('0x27')]=function(_0x3014b7,_0x36c9db){return db[_0xb2ba('0x2b')][_0xb2ba('0x45')]({'where':{'id':_0x3014b7[_0xb2ba('0x43')]['id']}})[_0xb2ba('0x26')](handleEntityNotFound(_0x36c9db,null))['then'](removeEntity(_0x36c9db,null))[_0xb2ba('0x42')](handleError(_0x36c9db,null));};exports[_0xb2ba('0x49')]=function(_0x1f2353,_0x3e1c66,_0x6371cd){var _0x2e070f={};var _0x5d22e8={};var _0x48a0a3;var _0x201e2b;return db['Dynamics365Configuration'][_0xb2ba('0x4a')]({'where':{'id':_0x1f2353[_0xb2ba('0x43')]['id']}})[_0xb2ba('0x26')](handleEntityNotFound(_0x3e1c66,null))['then'](function(_0x1d5d56){if(_0x1d5d56){_0x48a0a3=_0x1d5d56;_0x5d22e8[_0xb2ba('0x2d')]=_['keys'](db[_0xb2ba('0x4b')][_0xb2ba('0x44')]);_0x5d22e8[_0xb2ba('0x2f')]=_[_0xb2ba('0x30')](_0x1f2353[_0xb2ba('0x2f')]);_0x5d22e8['filters']=_[_0xb2ba('0x32')](_0x5d22e8[_0xb2ba('0x2d')],_0x5d22e8[_0xb2ba('0x2f')]);_0x2e070f['attributes']=_['intersection'](_0x5d22e8[_0xb2ba('0x2d')],qs[_0xb2ba('0x34')](_0x1f2353[_0xb2ba('0x2f')][_0xb2ba('0x34')]));_0x2e070f[_0xb2ba('0x33')]=_0x2e070f['attributes'][_0xb2ba('0x35')]?_0x2e070f['attributes']:_0x5d22e8[_0xb2ba('0x2d')];_0x2e070f[_0xb2ba('0x38')]=qs['sort'](_0x1f2353[_0xb2ba('0x2f')][_0xb2ba('0x39')]);_0x2e070f['where']=qs[_0xb2ba('0x31')](_[_0xb2ba('0x3a')](_0x1f2353[_0xb2ba('0x2f')],_0x5d22e8[_0xb2ba('0x31')]));if(_0x1f2353['query']['filter']){_0x2e070f[_0xb2ba('0x3b')]=_[_0xb2ba('0x3f')](_0x2e070f[_0xb2ba('0x3b')],{'$or':_[_0xb2ba('0x2a')](_0x2e070f[_0xb2ba('0x33')],function(_0x3ac580){var _0x331ee4={};_0x331ee4[_0x3ac580]={'$like':'%'+_0x1f2353['query']['filter']+'%'};return _0x331ee4;})});}_0x2e070f=_[_0xb2ba('0x3f')]({},_0x2e070f,_0x1f2353['options']);return _0x48a0a3[_0xb2ba('0x49')](_0x2e070f);}})[_0xb2ba('0x26')](function(_0x1ed6bb){if(_0x1ed6bb){_0x201e2b=_0x1ed6bb[_0xb2ba('0x35')];if(!_0x1f2353[_0xb2ba('0x2f')][_0xb2ba('0x36')]('nolimit')){_0x2e070f[_0xb2ba('0x21')]=qs[_0xb2ba('0x21')](_0x1f2353[_0xb2ba('0x2f')][_0xb2ba('0x21')]);_0x2e070f[_0xb2ba('0x1f')]=qs['offset'](_0x1f2353[_0xb2ba('0x2f')][_0xb2ba('0x1f')]);}return _0x48a0a3[_0xb2ba('0x49')](_0x2e070f);}})[_0xb2ba('0x26')](function(_0x44b219){if(_0x44b219){return _0x44b219?{'count':_0x201e2b,'rows':_0x44b219}:null;}})[_0xb2ba('0x26')](respondWithResult(_0x3e1c66,null))[_0xb2ba('0x42')](handleError(_0x3e1c66,null));};exports[_0xb2ba('0x4c')]=function(_0x3d6c3a,_0x57b9a5,_0x5b50bc){var _0x339d54={};var _0x4f57d0={};var _0x35b4d9;var _0xc12b97;return db[_0xb2ba('0x2b')][_0xb2ba('0x4a')]({'where':{'id':_0x3d6c3a[_0xb2ba('0x43')]['id']}})[_0xb2ba('0x26')](handleEntityNotFound(_0x57b9a5,null))['then'](function(_0x361b62){if(_0x361b62){_0x35b4d9=_0x361b62;_0x4f57d0['model']=_['keys'](db['Dynamics365Field'][_0xb2ba('0x44')]);_0x4f57d0[_0xb2ba('0x2f')]=_[_0xb2ba('0x30')](_0x3d6c3a[_0xb2ba('0x2f')]);_0x4f57d0['filters']=_[_0xb2ba('0x32')](_0x4f57d0[_0xb2ba('0x2d')],_0x4f57d0[_0xb2ba('0x2f')]);_0x339d54['attributes']=_[_0xb2ba('0x32')](_0x4f57d0[_0xb2ba('0x2d')],qs[_0xb2ba('0x34')](_0x3d6c3a['query'][_0xb2ba('0x34')]));_0x339d54[_0xb2ba('0x33')]=_0x339d54['attributes'][_0xb2ba('0x35')]?_0x339d54['attributes']:_0x4f57d0['model'];_0x339d54[_0xb2ba('0x38')]=qs['sort'](_0x3d6c3a[_0xb2ba('0x2f')]['sort']);_0x339d54[_0xb2ba('0x3b')]=qs[_0xb2ba('0x31')](_['pick'](_0x3d6c3a[_0xb2ba('0x2f')],_0x4f57d0[_0xb2ba('0x31')]));if(_0x3d6c3a[_0xb2ba('0x2f')][_0xb2ba('0x3e')]){_0x339d54[_0xb2ba('0x3b')]=_[_0xb2ba('0x3f')](_0x339d54['where'],{'$or':_[_0xb2ba('0x2a')](_0x339d54[_0xb2ba('0x33')],function(_0x29f77d){var _0x16fb48={};_0x16fb48[_0x29f77d]={'$like':'%'+_0x3d6c3a[_0xb2ba('0x2f')][_0xb2ba('0x3e')]+'%'};return _0x16fb48;})});}_0x339d54=_[_0xb2ba('0x3f')]({},_0x339d54,_0x3d6c3a[_0xb2ba('0x4d')]);return _0x35b4d9['getSubjects'](_0x339d54);}})[_0xb2ba('0x26')](function(_0x3d202b){if(_0x3d202b){_0xc12b97=_0x3d202b[_0xb2ba('0x35')];if(!_0x3d6c3a[_0xb2ba('0x2f')][_0xb2ba('0x36')]('nolimit')){_0x339d54[_0xb2ba('0x21')]=qs[_0xb2ba('0x21')](_0x3d6c3a[_0xb2ba('0x2f')][_0xb2ba('0x21')]);_0x339d54[_0xb2ba('0x1f')]=qs[_0xb2ba('0x1f')](_0x3d6c3a[_0xb2ba('0x2f')]['offset']);}return _0x35b4d9['getSubjects'](_0x339d54);}})[_0xb2ba('0x26')](function(_0xb7606c){if(_0xb7606c){return _0xb7606c?{'count':_0xc12b97,'rows':_0xb7606c}:null;}})['then'](respondWithResult(_0x57b9a5,null))[_0xb2ba('0x42')](handleError(_0x57b9a5,null));};exports['getDescriptions']=function(_0x475420,_0x3cbb4f,_0x175eac){var _0x40109e={};var _0x19b236={};var _0x38fd9d;var _0x3c003c;return db['Dynamics365Configuration'][_0xb2ba('0x4a')]({'where':{'id':_0x475420['params']['id']}})[_0xb2ba('0x26')](handleEntityNotFound(_0x3cbb4f,null))[_0xb2ba('0x26')](function(_0x3f7f7e){if(_0x3f7f7e){_0x38fd9d=_0x3f7f7e;_0x19b236[_0xb2ba('0x2d')]=_[_0xb2ba('0x30')](db[_0xb2ba('0x4b')][_0xb2ba('0x44')]);_0x19b236['query']=_[_0xb2ba('0x30')](_0x475420[_0xb2ba('0x2f')]);_0x19b236[_0xb2ba('0x31')]=_[_0xb2ba('0x32')](_0x19b236['model'],_0x19b236[_0xb2ba('0x2f')]);_0x40109e[_0xb2ba('0x33')]=_['intersection'](_0x19b236[_0xb2ba('0x2d')],qs[_0xb2ba('0x34')](_0x475420[_0xb2ba('0x2f')][_0xb2ba('0x34')]));_0x40109e[_0xb2ba('0x33')]=_0x40109e[_0xb2ba('0x33')][_0xb2ba('0x35')]?_0x40109e[_0xb2ba('0x33')]:_0x19b236[_0xb2ba('0x2d')];_0x40109e['order']=qs['sort'](_0x475420[_0xb2ba('0x2f')][_0xb2ba('0x39')]);_0x40109e[_0xb2ba('0x3b')]=qs['filters'](_[_0xb2ba('0x3a')](_0x475420[_0xb2ba('0x2f')],_0x19b236['filters']));if(_0x475420[_0xb2ba('0x2f')]['filter']){_0x40109e[_0xb2ba('0x3b')]=_[_0xb2ba('0x3f')](_0x40109e[_0xb2ba('0x3b')],{'$or':_[_0xb2ba('0x2a')](_0x40109e[_0xb2ba('0x33')],function(_0x47a194){var _0x190776={};_0x190776[_0x47a194]={'$like':'%'+_0x475420[_0xb2ba('0x2f')][_0xb2ba('0x3e')]+'%'};return _0x190776;})});}_0x40109e=_['merge']({},_0x40109e,_0x475420[_0xb2ba('0x4d')]);return _0x38fd9d[_0xb2ba('0x4e')](_0x40109e);}})[_0xb2ba('0x26')](function(_0x356ab7){if(_0x356ab7){_0x3c003c=_0x356ab7[_0xb2ba('0x35')];if(!_0x475420[_0xb2ba('0x2f')][_0xb2ba('0x36')](_0xb2ba('0x37'))){_0x40109e[_0xb2ba('0x21')]=qs[_0xb2ba('0x21')](_0x475420[_0xb2ba('0x2f')][_0xb2ba('0x21')]);_0x40109e['offset']=qs['offset'](_0x475420[_0xb2ba('0x2f')][_0xb2ba('0x1f')]);}return _0x38fd9d['getDescriptions'](_0x40109e);}})[_0xb2ba('0x26')](function(_0x2f57c3){if(_0x2f57c3){return _0x2f57c3?{'count':_0x3c003c,'rows':_0x2f57c3}:null;}})[_0xb2ba('0x26')](respondWithResult(_0x3cbb4f,null))[_0xb2ba('0x42')](handleError(_0x3cbb4f,null));};
\ No newline at end of file
+var _0x57f9=['rows','catch','show','rawAttributes','include','find','create','body','params','getFields','findOne','keys','hasOwnProperty','getSubjects','Dynamics365Field','getDescriptions','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','Dynamics365Configuration','fieldName','type','model','map','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll'];(function(_0x3e509b,_0xf48fca){var _0x52ed81=function(_0x24adbb){while(--_0x24adbb){_0x3e509b['push'](_0x3e509b['shift']());}};_0x52ed81(++_0xf48fca);}(_0x57f9,0x1aa));var _0x957f=function(_0x1d4281,_0x1ff1cf){_0x1d4281=_0x1d4281-0x0;var _0x17c250=_0x57f9[_0x1d4281];return _0x17c250;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x957f('0x0'));var jsonpatch=require(_0x957f('0x1'));var rp=require('request-promise');var moment=require(_0x957f('0x2'));var BPromise=require(_0x957f('0x3'));var Mustache=require(_0x957f('0x4'));var util=require('util');var path=require(_0x957f('0x5'));var sox=require('sox');var csv=require(_0x957f('0x6'));var ejs=require(_0x957f('0x7'));var fs=require('fs');var fs_extra=require(_0x957f('0x8'));var _=require(_0x957f('0x9'));var squel=require(_0x957f('0xa'));var crypto=require(_0x957f('0xb'));var jsforce=require(_0x957f('0xc'));var deskjs=require(_0x957f('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x957f('0xe'));var Redis=require('ioredis');var authService=require(_0x957f('0xf'));var qs=require(_0x957f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x957f('0x11'));var logger=require(_0x957f('0x12'))(_0x957f('0x13'));var utils=require(_0x957f('0x14'));var config=require(_0x957f('0x15'));var licenseUtil=require(_0x957f('0x16'));var db=require(_0x957f('0x17'))['db'];function respondWithStatusCode(_0x226ea7,_0x4e20ee){_0x4e20ee=_0x4e20ee||0xcc;return function(_0x5bee1){if(_0x5bee1){return _0x226ea7[_0x957f('0x18')](_0x4e20ee);}return _0x226ea7[_0x957f('0x19')](_0x4e20ee)[_0x957f('0x1a')]();};}function respondWithResult(_0x56b6a1,_0x319f4f){_0x319f4f=_0x319f4f||0xc8;return function(_0x3c20dd){if(_0x3c20dd){return _0x56b6a1['status'](_0x319f4f)['json'](_0x3c20dd);}};}function respondWithFilteredResult(_0x19d275,_0x29119e){return function(_0x3b1873){if(_0x3b1873){var _0x17c9da=typeof _0x29119e[_0x957f('0x1b')]==='undefined'&&typeof _0x29119e['limit']===_0x957f('0x1c');var _0x6923a5=_0x3b1873[_0x957f('0x1d')];var _0x83ea3d=_0x17c9da?0x0:_0x29119e[_0x957f('0x1b')];var _0x29d9f8=_0x17c9da?_0x3b1873[_0x957f('0x1d')]:_0x29119e['offset']+_0x29119e[_0x957f('0x1e')];var _0x4eeaf0;if(_0x29d9f8>=_0x6923a5){_0x29d9f8=_0x6923a5;_0x4eeaf0=0xc8;}else{_0x4eeaf0=0xce;}_0x19d275[_0x957f('0x19')](_0x4eeaf0);return _0x19d275[_0x957f('0x1f')](_0x957f('0x20'),_0x83ea3d+'-'+_0x29d9f8+'/'+_0x6923a5)['json'](_0x3b1873);}return null;};}function patchUpdates(_0x52e6ca){return function(_0xcba871){try{jsonpatch[_0x957f('0x21')](_0xcba871,_0x52e6ca,!![]);}catch(_0x41b996){return BPromise[_0x957f('0x22')](_0x41b996);}return _0xcba871[_0x957f('0x23')]();};}function saveUpdates(_0x53a819,_0x1df88e){return function(_0x45f2e5){if(_0x45f2e5){return _0x45f2e5[_0x957f('0x24')](_0x53a819)[_0x957f('0x25')](function(_0x4b3616){return _0x4b3616;});}return null;};}function removeEntity(_0x4e8e79,_0x3935bb){return function(_0x1cec39){if(_0x1cec39){return _0x1cec39[_0x957f('0x26')]()['then'](function(){_0x4e8e79[_0x957f('0x19')](0xcc)[_0x957f('0x1a')]();});}};}function handleEntityNotFound(_0xd42370,_0x2bdd78){return function(_0x396f59){if(!_0x396f59){_0xd42370[_0x957f('0x18')](0x194);}return _0x396f59;};}function handleError(_0x3920fc,_0x142296){_0x142296=_0x142296||0x1f4;return function(_0x496a1f){logger[_0x957f('0x27')](_0x496a1f[_0x957f('0x28')]);if(_0x496a1f['name']){delete _0x496a1f[_0x957f('0x29')];}_0x3920fc['status'](_0x142296)[_0x957f('0x2a')](_0x496a1f);};}exports[_0x957f('0x2b')]=function(_0x4efb9f,_0x5a464e){var _0x3494c8={},_0x3eec8b={},_0x3ca0aa={'count':0x0,'rows':[]};var _0x39e761=_['map'](db[_0x957f('0x2c')]['rawAttributes'],function(_0x23a753){return{'name':_0x23a753[_0x957f('0x2d')],'type':_0x23a753[_0x957f('0x2e')]['key']};});_0x3eec8b[_0x957f('0x2f')]=_[_0x957f('0x30')](_0x39e761,_0x957f('0x29'));_0x3eec8b['query']=_['keys'](_0x4efb9f[_0x957f('0x31')]);_0x3eec8b['filters']=_[_0x957f('0x32')](_0x3eec8b['model'],_0x3eec8b[_0x957f('0x31')]);_0x3494c8['attributes']=_[_0x957f('0x32')](_0x3eec8b[_0x957f('0x2f')],qs[_0x957f('0x33')](_0x4efb9f[_0x957f('0x31')]['fields']));_0x3494c8[_0x957f('0x34')]=_0x3494c8['attributes'][_0x957f('0x35')]?_0x3494c8[_0x957f('0x34')]:_0x3eec8b[_0x957f('0x2f')];if(!_0x4efb9f['query']['hasOwnProperty'](_0x957f('0x36'))){_0x3494c8[_0x957f('0x1e')]=qs[_0x957f('0x1e')](_0x4efb9f[_0x957f('0x31')][_0x957f('0x1e')]);_0x3494c8[_0x957f('0x1b')]=qs[_0x957f('0x1b')](_0x4efb9f[_0x957f('0x31')][_0x957f('0x1b')]);}_0x3494c8[_0x957f('0x37')]=qs[_0x957f('0x38')](_0x4efb9f[_0x957f('0x31')][_0x957f('0x38')]);_0x3494c8[_0x957f('0x39')]=qs[_0x957f('0x3a')](_[_0x957f('0x3b')](_0x4efb9f[_0x957f('0x31')],_0x3eec8b['filters']),_0x39e761);if(_0x4efb9f[_0x957f('0x31')][_0x957f('0x3c')]){_0x3494c8[_0x957f('0x39')]=_[_0x957f('0x3d')](_0x3494c8[_0x957f('0x39')],{'$or':_[_0x957f('0x30')](_0x39e761,function(_0x5548d3){if(_0x5548d3[_0x957f('0x2e')]!==_0x957f('0x3e')){var _0x403d3e={};_0x403d3e[_0x5548d3[_0x957f('0x29')]]={'$like':'%'+_0x4efb9f['query'][_0x957f('0x3c')]+'%'};return _0x403d3e;}})});}_0x3494c8=_[_0x957f('0x3d')]({},_0x3494c8,_0x4efb9f[_0x957f('0x3f')]);var _0x59f238={'where':_0x3494c8[_0x957f('0x39')]};return db['Dynamics365Configuration']['count'](_0x59f238)['then'](function(_0x52bf4c){_0x3ca0aa[_0x957f('0x1d')]=_0x52bf4c;if(_0x4efb9f[_0x957f('0x31')][_0x957f('0x40')]){_0x3494c8['include']=[{'all':!![]}];}return db[_0x957f('0x2c')][_0x957f('0x41')](_0x3494c8);})[_0x957f('0x25')](function(_0x2ace98){_0x3ca0aa[_0x957f('0x42')]=_0x2ace98;return _0x3ca0aa;})[_0x957f('0x25')](respondWithFilteredResult(_0x5a464e,_0x3494c8))[_0x957f('0x43')](handleError(_0x5a464e,null));};exports[_0x957f('0x44')]=function(_0x35b13c,_0x100440){var _0x34a4a6={'raw':![],'where':{'id':_0x35b13c['params']['id']}},_0x39959b={};_0x39959b[_0x957f('0x2f')]=_['keys'](db[_0x957f('0x2c')][_0x957f('0x45')]);_0x39959b[_0x957f('0x31')]=_['keys'](_0x35b13c['query']);_0x39959b[_0x957f('0x3a')]=_[_0x957f('0x32')](_0x39959b[_0x957f('0x2f')],_0x39959b[_0x957f('0x31')]);_0x34a4a6[_0x957f('0x34')]=_[_0x957f('0x32')](_0x39959b[_0x957f('0x2f')],qs[_0x957f('0x33')](_0x35b13c[_0x957f('0x31')]['fields']));_0x34a4a6[_0x957f('0x34')]=_0x34a4a6[_0x957f('0x34')][_0x957f('0x35')]?_0x34a4a6[_0x957f('0x34')]:_0x39959b['model'];if(_0x35b13c[_0x957f('0x31')][_0x957f('0x40')]){_0x34a4a6[_0x957f('0x46')]=[{'all':!![]}];}_0x34a4a6=_[_0x957f('0x3d')]({},_0x34a4a6,_0x35b13c[_0x957f('0x3f')]);return db[_0x957f('0x2c')][_0x957f('0x47')](_0x34a4a6)[_0x957f('0x25')](handleEntityNotFound(_0x100440,null))['then'](respondWithResult(_0x100440,null))[_0x957f('0x43')](handleError(_0x100440,null));};exports['create']=function(_0x455811,_0x26c7b7){return db['Dynamics365Configuration'][_0x957f('0x48')](_0x455811[_0x957f('0x49')],{})[_0x957f('0x25')](respondWithResult(_0x26c7b7,0xc9))['catch'](handleError(_0x26c7b7,null));};exports[_0x957f('0x24')]=function(_0x3333b0,_0x2369bb){if(_0x3333b0[_0x957f('0x49')]['id']){delete _0x3333b0[_0x957f('0x49')]['id'];}return db[_0x957f('0x2c')][_0x957f('0x47')]({'where':{'id':_0x3333b0['params']['id']}})[_0x957f('0x25')](handleEntityNotFound(_0x2369bb,null))[_0x957f('0x25')](saveUpdates(_0x3333b0[_0x957f('0x49')],null))['then'](respondWithResult(_0x2369bb,null))['catch'](handleError(_0x2369bb,null));};exports[_0x957f('0x26')]=function(_0xba1199,_0x311046){return db[_0x957f('0x2c')][_0x957f('0x47')]({'where':{'id':_0xba1199[_0x957f('0x4a')]['id']}})[_0x957f('0x25')](handleEntityNotFound(_0x311046,null))[_0x957f('0x25')](removeEntity(_0x311046,null))[_0x957f('0x43')](handleError(_0x311046,null));};exports[_0x957f('0x4b')]=function(_0x15dc14,_0x445ca7,_0x1fd8de){var _0x4f6431={};var _0x311321={};var _0x38273a;var _0x3a6edc;return db[_0x957f('0x2c')][_0x957f('0x4c')]({'where':{'id':_0x15dc14[_0x957f('0x4a')]['id']}})[_0x957f('0x25')](handleEntityNotFound(_0x445ca7,null))[_0x957f('0x25')](function(_0x56a3ef){if(_0x56a3ef){_0x38273a=_0x56a3ef;_0x311321[_0x957f('0x2f')]=_[_0x957f('0x4d')](db['Dynamics365Field'][_0x957f('0x45')]);_0x311321['query']=_['keys'](_0x15dc14[_0x957f('0x31')]);_0x311321['filters']=_[_0x957f('0x32')](_0x311321[_0x957f('0x2f')],_0x311321[_0x957f('0x31')]);_0x4f6431['attributes']=_['intersection'](_0x311321['model'],qs[_0x957f('0x33')](_0x15dc14[_0x957f('0x31')][_0x957f('0x33')]));_0x4f6431['attributes']=_0x4f6431[_0x957f('0x34')][_0x957f('0x35')]?_0x4f6431[_0x957f('0x34')]:_0x311321[_0x957f('0x2f')];_0x4f6431[_0x957f('0x37')]=qs[_0x957f('0x38')](_0x15dc14[_0x957f('0x31')]['sort']);_0x4f6431[_0x957f('0x39')]=qs[_0x957f('0x3a')](_[_0x957f('0x3b')](_0x15dc14[_0x957f('0x31')],_0x311321[_0x957f('0x3a')]));if(_0x15dc14['query']['filter']){_0x4f6431[_0x957f('0x39')]=_[_0x957f('0x3d')](_0x4f6431[_0x957f('0x39')],{'$or':_[_0x957f('0x30')](_0x4f6431[_0x957f('0x34')],function(_0x2ca0a2){var _0x15fb5c={};_0x15fb5c[_0x2ca0a2]={'$like':'%'+_0x15dc14['query'][_0x957f('0x3c')]+'%'};return _0x15fb5c;})});}_0x4f6431=_['merge']({},_0x4f6431,_0x15dc14[_0x957f('0x3f')]);return _0x38273a[_0x957f('0x4b')](_0x4f6431);}})[_0x957f('0x25')](function(_0x581529){if(_0x581529){_0x3a6edc=_0x581529[_0x957f('0x35')];if(!_0x15dc14[_0x957f('0x31')][_0x957f('0x4e')](_0x957f('0x36'))){_0x4f6431['limit']=qs[_0x957f('0x1e')](_0x15dc14[_0x957f('0x31')][_0x957f('0x1e')]);_0x4f6431['offset']=qs[_0x957f('0x1b')](_0x15dc14[_0x957f('0x31')][_0x957f('0x1b')]);}return _0x38273a[_0x957f('0x4b')](_0x4f6431);}})[_0x957f('0x25')](function(_0x5a7529){if(_0x5a7529){return _0x5a7529?{'count':_0x3a6edc,'rows':_0x5a7529}:null;}})['then'](respondWithResult(_0x445ca7,null))[_0x957f('0x43')](handleError(_0x445ca7,null));};exports[_0x957f('0x4f')]=function(_0x4126d0,_0x357cf9,_0x5677d4){var _0x268a5b={};var _0x54a0e5={};var _0xdfd4a7;var _0x48fbea;return db[_0x957f('0x2c')]['findOne']({'where':{'id':_0x4126d0[_0x957f('0x4a')]['id']}})[_0x957f('0x25')](handleEntityNotFound(_0x357cf9,null))[_0x957f('0x25')](function(_0x5e7a53){if(_0x5e7a53){_0xdfd4a7=_0x5e7a53;_0x54a0e5[_0x957f('0x2f')]=_[_0x957f('0x4d')](db[_0x957f('0x50')][_0x957f('0x45')]);_0x54a0e5['query']=_[_0x957f('0x4d')](_0x4126d0['query']);_0x54a0e5[_0x957f('0x3a')]=_[_0x957f('0x32')](_0x54a0e5[_0x957f('0x2f')],_0x54a0e5['query']);_0x268a5b[_0x957f('0x34')]=_[_0x957f('0x32')](_0x54a0e5['model'],qs[_0x957f('0x33')](_0x4126d0[_0x957f('0x31')][_0x957f('0x33')]));_0x268a5b[_0x957f('0x34')]=_0x268a5b[_0x957f('0x34')][_0x957f('0x35')]?_0x268a5b[_0x957f('0x34')]:_0x54a0e5[_0x957f('0x2f')];_0x268a5b[_0x957f('0x37')]=qs['sort'](_0x4126d0[_0x957f('0x31')][_0x957f('0x38')]);_0x268a5b[_0x957f('0x39')]=qs[_0x957f('0x3a')](_['pick'](_0x4126d0[_0x957f('0x31')],_0x54a0e5['filters']));if(_0x4126d0[_0x957f('0x31')]['filter']){_0x268a5b['where']=_[_0x957f('0x3d')](_0x268a5b[_0x957f('0x39')],{'$or':_[_0x957f('0x30')](_0x268a5b[_0x957f('0x34')],function(_0x2d0cc6){var _0xf37e95={};_0xf37e95[_0x2d0cc6]={'$like':'%'+_0x4126d0[_0x957f('0x31')][_0x957f('0x3c')]+'%'};return _0xf37e95;})});}_0x268a5b=_[_0x957f('0x3d')]({},_0x268a5b,_0x4126d0[_0x957f('0x3f')]);return _0xdfd4a7[_0x957f('0x4f')](_0x268a5b);}})[_0x957f('0x25')](function(_0x215654){if(_0x215654){_0x48fbea=_0x215654['length'];if(!_0x4126d0[_0x957f('0x31')][_0x957f('0x4e')](_0x957f('0x36'))){_0x268a5b['limit']=qs['limit'](_0x4126d0[_0x957f('0x31')][_0x957f('0x1e')]);_0x268a5b[_0x957f('0x1b')]=qs[_0x957f('0x1b')](_0x4126d0['query'][_0x957f('0x1b')]);}return _0xdfd4a7[_0x957f('0x4f')](_0x268a5b);}})[_0x957f('0x25')](function(_0x1c9fe3){if(_0x1c9fe3){return _0x1c9fe3?{'count':_0x48fbea,'rows':_0x1c9fe3}:null;}})[_0x957f('0x25')](respondWithResult(_0x357cf9,null))[_0x957f('0x43')](handleError(_0x357cf9,null));};exports['getDescriptions']=function(_0x314699,_0x1310a1,_0x3bcaa5){var _0x10d064={};var _0x3473c7={};var _0x589319;var _0x438da6;return db[_0x957f('0x2c')][_0x957f('0x4c')]({'where':{'id':_0x314699[_0x957f('0x4a')]['id']}})[_0x957f('0x25')](handleEntityNotFound(_0x1310a1,null))[_0x957f('0x25')](function(_0x563646){if(_0x563646){_0x589319=_0x563646;_0x3473c7[_0x957f('0x2f')]=_[_0x957f('0x4d')](db[_0x957f('0x50')][_0x957f('0x45')]);_0x3473c7[_0x957f('0x31')]=_[_0x957f('0x4d')](_0x314699[_0x957f('0x31')]);_0x3473c7[_0x957f('0x3a')]=_[_0x957f('0x32')](_0x3473c7[_0x957f('0x2f')],_0x3473c7[_0x957f('0x31')]);_0x10d064['attributes']=_['intersection'](_0x3473c7[_0x957f('0x2f')],qs['fields'](_0x314699[_0x957f('0x31')][_0x957f('0x33')]));_0x10d064[_0x957f('0x34')]=_0x10d064[_0x957f('0x34')][_0x957f('0x35')]?_0x10d064[_0x957f('0x34')]:_0x3473c7[_0x957f('0x2f')];_0x10d064['order']=qs[_0x957f('0x38')](_0x314699['query']['sort']);_0x10d064[_0x957f('0x39')]=qs['filters'](_[_0x957f('0x3b')](_0x314699['query'],_0x3473c7['filters']));if(_0x314699[_0x957f('0x31')]['filter']){_0x10d064[_0x957f('0x39')]=_[_0x957f('0x3d')](_0x10d064[_0x957f('0x39')],{'$or':_[_0x957f('0x30')](_0x10d064[_0x957f('0x34')],function(_0x4d531b){var _0x2f7bd6={};_0x2f7bd6[_0x4d531b]={'$like':'%'+_0x314699[_0x957f('0x31')]['filter']+'%'};return _0x2f7bd6;})});}_0x10d064=_['merge']({},_0x10d064,_0x314699[_0x957f('0x3f')]);return _0x589319[_0x957f('0x51')](_0x10d064);}})['then'](function(_0x414593){if(_0x414593){_0x438da6=_0x414593['length'];if(!_0x314699[_0x957f('0x31')][_0x957f('0x4e')]('nolimit')){_0x10d064[_0x957f('0x1e')]=qs[_0x957f('0x1e')](_0x314699[_0x957f('0x31')][_0x957f('0x1e')]);_0x10d064[_0x957f('0x1b')]=qs[_0x957f('0x1b')](_0x314699['query'][_0x957f('0x1b')]);}return _0x589319[_0x957f('0x51')](_0x10d064);}})[_0x957f('0x25')](function(_0x483ecd){if(_0x483ecd){return _0x483ecd?{'count':_0x438da6,'rows':_0x483ecd}:null;}})['then'](respondWithResult(_0x1310a1,null))[_0x957f('0x43')](handleError(_0x1310a1,null));};
\ No newline at end of file
index 1e32c12..f379713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util','../../config/logger','bluebird'];(function(_0x2aded4,_0x33cc87){var _0x83decb=function(_0x55ec7d){while(--_0x55ec7d){_0x2aded4['push'](_0x2aded4['shift']());}};_0x83decb(++_0x33cc87);}(_0xb821,0xa7));var _0x1b82=function(_0x2a67f9,_0x4c168b){_0x2a67f9=_0x2a67f9-0x0;var _0xa9afc=_0xb821[_0x2a67f9];return _0xa9afc;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var logger=require(_0x1b82('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1b82('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1b82('0x3'));var config=require(_0x1b82('0x4'));var attributes=require(_0x1b82('0x5'));module[_0x1b82('0x6')]=function(_0x597ca7,_0x3e27c4){return _0x597ca7[_0x1b82('0x7')](_0x1b82('0x8'),attributes,{'tableName':_0x1b82('0x9'),'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(_0x5eba8b,_0x2317c2){var _0xcef121=function(_0x37bf83){while(--_0x37bf83){_0x5eba8b['push'](_0x5eba8b['shift']());}};_0xcef121(++_0x2317c2);}(_0xbec5,0xe5));var _0x5bec=function(_0x4c6d6f,_0x291557){_0x4c6d6f=_0x4c6d6f-0x0;var _0x2d4478=_0xbec5[_0x4c6d6f];return _0x2d4478;};'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 75625cb..bb390fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffce=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Dynamics365Configuration,\x20%s,\x20%s','message'];(function(_0xbc5b77,_0x198482){var _0x189904=function(_0x76d0a){while(--_0x76d0a){_0xbc5b77['push'](_0xbc5b77['shift']());}};_0x189904(++_0x198482);}(_0xffce,0x1a2));var _0xeffc=function(_0x3339ef,_0x3f94a2){_0x3339ef=_0x3339ef-0x0;var _0x1d499c=_0xffce[_0x3339ef];return _0x1d499c;};'use strict';var _=require(_0xeffc('0x0'));var util=require(_0xeffc('0x1'));var moment=require(_0xeffc('0x2'));var BPromise=require(_0xeffc('0x3'));var rs=require(_0xeffc('0x4'));var fs=require('fs');var Redis=require(_0xeffc('0x5'));var db=require(_0xeffc('0x6'))['db'];var utils=require(_0xeffc('0x7'));var logger=require(_0xeffc('0x8'))(_0xeffc('0x9'));var config=require(_0xeffc('0xa'));var jayson=require(_0xeffc('0xb'));var client=jayson[_0xeffc('0xc')][_0xeffc('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x555dfd,_0x3ee01c,_0x4eaa6b){return new BPromise(function(_0x584859,_0x1960e7){return client[_0xeffc('0xe')](_0x555dfd,_0x4eaa6b)['then'](function(_0x251bb3){logger[_0xeffc('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3ee01c,'request\x20sent');logger[_0xeffc('0x10')](_0xeffc('0x11'),_0x3ee01c,_0xeffc('0x12'),JSON[_0xeffc('0x13')](_0x251bb3));if(_0x251bb3[_0xeffc('0x14')]){if(_0x251bb3[_0xeffc('0x14')][_0xeffc('0x15')]===0x1f4){logger['error'](_0xeffc('0x16'),_0x3ee01c,_0x251bb3[_0xeffc('0x14')][_0xeffc('0x17')]);return _0x1960e7(_0x251bb3['error'][_0xeffc('0x17')]);}logger['error'](_0xeffc('0x16'),_0x3ee01c,_0x251bb3[_0xeffc('0x14')][_0xeffc('0x17')]);return _0x584859(_0x251bb3['error'][_0xeffc('0x17')]);}else{logger[_0xeffc('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3ee01c,_0xeffc('0x12'));_0x584859(_0x251bb3[_0xeffc('0x18')][_0xeffc('0x17')]);}})[_0xeffc('0x19')](function(_0x33188f){logger[_0xeffc('0x14')](_0xeffc('0x16'),_0x3ee01c,_0x33188f);_0x1960e7(_0x33188f);});});}
\ No newline at end of file
+var _0xeacf=['message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x102b0c,_0x33dee4){var _0x9b15ca=function(_0x42d504){while(--_0x42d504){_0x102b0c['push'](_0x102b0c['shift']());}};_0x9b15ca(++_0x33dee4);}(_0xeacf,0x133));var _0xfeac=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xeacf[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require(_0xfeac('0x0'));var util=require('util');var moment=require(_0xfeac('0x1'));var BPromise=require(_0xfeac('0x2'));var rs=require(_0xfeac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfeac('0x4'))['db'];var utils=require(_0xfeac('0x5'));var logger=require(_0xfeac('0x6'))(_0xfeac('0x7'));var config=require('../../config/environment');var jayson=require(_0xfeac('0x8'));var client=jayson[_0xfeac('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d9e48,_0x5a4a4e,_0x32d301){return new BPromise(function(_0x4321d1,_0x1e76e8){return client[_0xfeac('0xa')](_0x5d9e48,_0x32d301)[_0xfeac('0xb')](function(_0x2ca313){logger['info'](_0xfeac('0xc'),_0x5a4a4e,_0xfeac('0xd'));logger['debug']('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x5a4a4e,'request\x20sent',JSON[_0xfeac('0xe')](_0x2ca313));if(_0x2ca313[_0xfeac('0xf')]){if(_0x2ca313[_0xfeac('0xf')]['code']===0x1f4){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x5a4a4e,_0x2ca313['error'][_0xfeac('0x10')]);return _0x1e76e8(_0x2ca313['error']['message']);}logger[_0xfeac('0xf')](_0xfeac('0xc'),_0x5a4a4e,_0x2ca313['error'][_0xfeac('0x10')]);return _0x4321d1(_0x2ca313[_0xfeac('0xf')]['message']);}else{logger['info'](_0xfeac('0xc'),_0x5a4a4e,_0xfeac('0xd'));_0x4321d1(_0x2ca313[_0xfeac('0x11')]['message']);}})[_0xfeac('0x12')](function(_0x390a65){logger[_0xfeac('0xf')](_0xfeac('0xc'),_0x5a4a4e,_0x390a65);_0x1e76e8(_0x390a65);});});}
\ No newline at end of file
index a7e6b76..87f3ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c2=['post','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Field.controller','get','isAuthenticated'];(function(_0x3f22ca,_0x3ac093){var _0x4fd908=function(_0x1c1c4e){while(--_0x1c1c4e){_0x3f22ca['push'](_0x3f22ca['shift']());}};_0x4fd908(++_0x3ac093);}(_0x60c2,0xeb));var _0x260c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x60c2[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x260c('0x0'));var util=require(_0x260c('0x1'));var path=require(_0x260c('0x2'));var timeout=require(_0x260c('0x3'));var express=require(_0x260c('0x4'));var router=express[_0x260c('0x5')]();var fs_extra=require(_0x260c('0x6'));var auth=require(_0x260c('0x7'));var interaction=require(_0x260c('0x8'));var config=require('../../config/environment');var controller=require(_0x260c('0x9'));router[_0x260c('0xa')]('/',auth[_0x260c('0xb')](),controller['index']);router[_0x260c('0xa')]('/:id',auth[_0x260c('0xb')](),controller['show']);router[_0x260c('0xc')]('/',auth['isAuthenticated'](),controller[_0x260c('0xd')]);router[_0x260c('0xe')](_0x260c('0xf'),auth[_0x260c('0xb')](),controller[_0x260c('0x10')]);router['delete']('/:id',auth[_0x260c('0xb')](),controller[_0x260c('0x11')]);module[_0x260c('0x12')]=router;
\ No newline at end of file
+var _0xd271=['get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller'];(function(_0x495d69,_0x223b85){var _0x47b629=function(_0x134173){while(--_0x134173){_0x495d69['push'](_0x495d69['shift']());}};_0x47b629(++_0x223b85);}(_0xd271,0xd1));var _0x1d27=function(_0x529d6e,_0x221b7f){_0x529d6e=_0x529d6e-0x0;var _0x2574bd=_0xd271[_0x529d6e];return _0x2574bd;};'use strict';var multer=require(_0x1d27('0x0'));var util=require(_0x1d27('0x1'));var path=require(_0x1d27('0x2'));var timeout=require(_0x1d27('0x3'));var express=require(_0x1d27('0x4'));var router=express[_0x1d27('0x5')]();var fs_extra=require(_0x1d27('0x6'));var auth=require(_0x1d27('0x7'));var interaction=require(_0x1d27('0x8'));var config=require(_0x1d27('0x9'));var controller=require(_0x1d27('0xa'));router[_0x1d27('0xb')]('/',auth[_0x1d27('0xc')](),controller[_0x1d27('0xd')]);router['get'](_0x1d27('0xe'),auth[_0x1d27('0xc')](),controller[_0x1d27('0xf')]);router[_0x1d27('0x10')]('/',auth[_0x1d27('0xc')](),controller[_0x1d27('0x11')]);router[_0x1d27('0x12')]('/:id',auth[_0x1d27('0xc')](),controller[_0x1d27('0x13')]);router[_0x1d27('0x14')](_0x1d27('0xe'),auth[_0x1d27('0xc')](),controller[_0x1d27('0x15')]);module['exports']=router;
\ No newline at end of file
index 23fd1ec..449e259 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86e8=['BOOLEAN','sequelize','exports','variable','keyValue','string','STRING','customVariable'];(function(_0x24ec24,_0x3bc223){var _0xf7513f=function(_0x4e6872){while(--_0x4e6872){_0x24ec24['push'](_0x24ec24['shift']());}};_0xf7513f(++_0x3bc223);}(_0x86e8,0x151));var _0x886e=function(_0x9731b4,_0x26aac3){_0x9731b4=_0x9731b4-0x0;var _0x3d7a66=_0x86e8[_0x9731b4];return _0x3d7a66;};'use strict';var Sequelize=require(_0x886e('0x0'));module[_0x886e('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0x886e('0x2'),'customVariable',_0x886e('0x3'),'picklist'),'defaultValue':_0x886e('0x4')},'content':{'type':Sequelize[_0x886e('0x5')]},'key':{'type':Sequelize[_0x886e('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x886e('0x4'),_0x886e('0x2'),_0x886e('0x6'))},'keyContent':{'type':Sequelize[_0x886e('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x886e('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x886e('0x5')]}};
\ No newline at end of file
+var _0xeb86=['ENUM','string','keyValue','picklist','STRING','variable','customVariable','sequelize','exports'];(function(_0x5878fd,_0x4cad4c){var _0x280120=function(_0x29a726){while(--_0x29a726){_0x5878fd['push'](_0x5878fd['shift']());}};_0x280120(++_0x4cad4c);}(_0xeb86,0x1b7));var _0x6eb8=function(_0x562748,_0x1b2d6b){_0x562748=_0x562748-0x0;var _0x1f7815=_0xeb86[_0x562748];return _0x1f7815;};'use strict';var Sequelize=require(_0x6eb8('0x0'));module[_0x6eb8('0x1')]={'type':{'type':Sequelize[_0x6eb8('0x2')](_0x6eb8('0x3'),'variable','customVariable',_0x6eb8('0x4'),_0x6eb8('0x5')),'defaultValue':_0x6eb8('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x6eb8('0x6')]},'keyType':{'type':Sequelize[_0x6eb8('0x2')](_0x6eb8('0x3'),_0x6eb8('0x7'),_0x6eb8('0x8'))},'keyContent':{'type':Sequelize[_0x6eb8('0x6')]},'idField':{'type':Sequelize[_0x6eb8('0x6')]},'nameField':{'type':Sequelize[_0x6eb8('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6eb8('0x6')]}};
\ No newline at end of file
index 49596ff..0e0acc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3eb=['fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','catch','params','find','create','body','destroy','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs'];(function(_0x5942e8,_0x152886){var _0x5f43cf=function(_0x47855a){while(--_0x47855a){_0x5942e8['push'](_0x5942e8['shift']());}};_0x5f43cf(++_0x152886);}(_0xd3eb,0xd8));var _0xbd3e=function(_0x3e8cae,_0x4cb96a){_0x3e8cae=_0x3e8cae-0x0;var _0x45c4d6=_0xd3eb[_0x3e8cae];return _0x45c4d6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbd3e('0x0'));var jsonpatch=require(_0xbd3e('0x1'));var rp=require('request-promise');var moment=require(_0xbd3e('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xbd3e('0x3'));var util=require(_0xbd3e('0x4'));var path=require(_0xbd3e('0x5'));var sox=require(_0xbd3e('0x6'));var csv=require(_0xbd3e('0x7'));var ejs=require(_0xbd3e('0x8'));var fs=require('fs');var fs_extra=require(_0xbd3e('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xbd3e('0xa'));var jsforce=require(_0xbd3e('0xb'));var deskjs=require(_0xbd3e('0xc'));var toCsv=require(_0xbd3e('0x7'));var querystring=require(_0xbd3e('0xd'));var Papa=require(_0xbd3e('0xe'));var Redis=require(_0xbd3e('0xf'));var authService=require(_0xbd3e('0x10'));var qs=require(_0xbd3e('0x11'));var as=require(_0xbd3e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbd3e('0x13'))(_0xbd3e('0x14'));var utils=require(_0xbd3e('0x15'));var config=require(_0xbd3e('0x16'));var licenseUtil=require(_0xbd3e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x163380,_0x32fd24){_0x32fd24=_0x32fd24||0xcc;return function(_0x413eba){if(_0x413eba){return _0x163380[_0xbd3e('0x18')](_0x32fd24);}return _0x163380[_0xbd3e('0x19')](_0x32fd24)[_0xbd3e('0x1a')]();};}function respondWithResult(_0xfc2aeb,_0x486c5e){_0x486c5e=_0x486c5e||0xc8;return function(_0x7a23d2){if(_0x7a23d2){return _0xfc2aeb[_0xbd3e('0x19')](_0x486c5e)[_0xbd3e('0x1b')](_0x7a23d2);}};}function respondWithFilteredResult(_0x36a03b,_0x13abe0){return function(_0x40776d){if(_0x40776d){var _0x4f49b5=typeof _0x13abe0[_0xbd3e('0x1c')]===_0xbd3e('0x1d')&&typeof _0x13abe0[_0xbd3e('0x1e')]==='undefined';var _0x5a294f=_0x40776d['count'];var _0x47ff3d=_0x4f49b5?0x0:_0x13abe0[_0xbd3e('0x1c')];var _0x331043=_0x4f49b5?_0x40776d['count']:_0x13abe0[_0xbd3e('0x1c')]+_0x13abe0['limit'];var _0x734ff6;if(_0x331043>=_0x5a294f){_0x331043=_0x5a294f;_0x734ff6=0xc8;}else{_0x734ff6=0xce;}_0x36a03b[_0xbd3e('0x19')](_0x734ff6);return _0x36a03b[_0xbd3e('0x1f')]('Content-Range',_0x47ff3d+'-'+_0x331043+'/'+_0x5a294f)['json'](_0x40776d);}return null;};}function patchUpdates(_0x1788ec){return function(_0x2c1d9f){try{jsonpatch[_0xbd3e('0x20')](_0x2c1d9f,_0x1788ec,!![]);}catch(_0x55a607){return BPromise[_0xbd3e('0x21')](_0x55a607);}return _0x2c1d9f[_0xbd3e('0x22')]();};}function saveUpdates(_0x2a65c8,_0x3f0562){return function(_0x2583e8){if(_0x2583e8){return _0x2583e8[_0xbd3e('0x23')](_0x2a65c8)[_0xbd3e('0x24')](function(_0x5be167){return _0x5be167;});}return null;};}function removeEntity(_0x481bb9,_0x33a789){return function(_0x1a1472){if(_0x1a1472){return _0x1a1472['destroy']()[_0xbd3e('0x24')](function(){_0x481bb9['status'](0xcc)[_0xbd3e('0x1a')]();});}};}function handleEntityNotFound(_0x5b5853,_0x32505f){return function(_0x5e31ef){if(!_0x5e31ef){_0x5b5853[_0xbd3e('0x18')](0x194);}return _0x5e31ef;};}function handleError(_0x328378,_0x2b2560){_0x2b2560=_0x2b2560||0x1f4;return function(_0x347c05){logger[_0xbd3e('0x25')](_0x347c05[_0xbd3e('0x26')]);if(_0x347c05[_0xbd3e('0x27')]){delete _0x347c05['name'];}_0x328378[_0xbd3e('0x19')](_0x2b2560)[_0xbd3e('0x28')](_0x347c05);};}exports[_0xbd3e('0x29')]=function(_0x243afa,_0x105f3e){var _0x2a4f2a={},_0x17219c={},_0x28bc1e={'count':0x0,'rows':[]};var _0x41f26b=_[_0xbd3e('0x2a')](db[_0xbd3e('0x2b')][_0xbd3e('0x2c')],function(_0x284706){return{'name':_0x284706[_0xbd3e('0x2d')],'type':_0x284706[_0xbd3e('0x2e')][_0xbd3e('0x2f')]};});_0x17219c[_0xbd3e('0x30')]=_[_0xbd3e('0x2a')](_0x41f26b,_0xbd3e('0x27'));_0x17219c[_0xbd3e('0x31')]=_[_0xbd3e('0x32')](_0x243afa['query']);_0x17219c[_0xbd3e('0x33')]=_[_0xbd3e('0x34')](_0x17219c[_0xbd3e('0x30')],_0x17219c[_0xbd3e('0x31')]);_0x2a4f2a[_0xbd3e('0x35')]=_[_0xbd3e('0x34')](_0x17219c['model'],qs[_0xbd3e('0x36')](_0x243afa[_0xbd3e('0x31')][_0xbd3e('0x36')]));_0x2a4f2a[_0xbd3e('0x35')]=_0x2a4f2a[_0xbd3e('0x35')][_0xbd3e('0x37')]?_0x2a4f2a['attributes']:_0x17219c['model'];if(!_0x243afa[_0xbd3e('0x31')][_0xbd3e('0x38')]('nolimit')){_0x2a4f2a[_0xbd3e('0x1e')]=qs[_0xbd3e('0x1e')](_0x243afa[_0xbd3e('0x31')][_0xbd3e('0x1e')]);_0x2a4f2a[_0xbd3e('0x1c')]=qs['offset'](_0x243afa['query'][_0xbd3e('0x1c')]);}_0x2a4f2a[_0xbd3e('0x39')]=qs['sort'](_0x243afa[_0xbd3e('0x31')][_0xbd3e('0x3a')]);_0x2a4f2a[_0xbd3e('0x3b')]=qs['filters'](_['pick'](_0x243afa[_0xbd3e('0x31')],_0x17219c['filters']),_0x41f26b);if(_0x243afa[_0xbd3e('0x31')][_0xbd3e('0x3c')]){_0x2a4f2a[_0xbd3e('0x3b')]=_['merge'](_0x2a4f2a[_0xbd3e('0x3b')],{'$or':_[_0xbd3e('0x2a')](_0x41f26b,function(_0x5e105b){if(_0x5e105b[_0xbd3e('0x2e')]!==_0xbd3e('0x3d')){var _0x48c10e={};_0x48c10e[_0x5e105b[_0xbd3e('0x27')]]={'$like':'%'+_0x243afa[_0xbd3e('0x31')][_0xbd3e('0x3c')]+'%'};return _0x48c10e;}})});}_0x2a4f2a=_[_0xbd3e('0x3e')]({},_0x2a4f2a,_0x243afa[_0xbd3e('0x3f')]);var _0x3b4b91={'where':_0x2a4f2a['where']};return db[_0xbd3e('0x2b')][_0xbd3e('0x40')](_0x3b4b91)[_0xbd3e('0x24')](function(_0x16eaae){_0x28bc1e[_0xbd3e('0x40')]=_0x16eaae;if(_0x243afa['query'][_0xbd3e('0x41')]){_0x2a4f2a[_0xbd3e('0x42')]=[{'all':!![]}];}return db['Dynamics365Field'][_0xbd3e('0x43')](_0x2a4f2a);})[_0xbd3e('0x24')](function(_0x58df97){_0x28bc1e[_0xbd3e('0x44')]=_0x58df97;return _0x28bc1e;})[_0xbd3e('0x24')](respondWithFilteredResult(_0x105f3e,_0x2a4f2a))[_0xbd3e('0x45')](handleError(_0x105f3e,null));};exports['show']=function(_0x12537d,_0x1093fa){var _0xc9eadd={'raw':!![],'where':{'id':_0x12537d[_0xbd3e('0x46')]['id']}},_0xba770d={};_0xba770d['model']=_[_0xbd3e('0x32')](db[_0xbd3e('0x2b')]['rawAttributes']);_0xba770d[_0xbd3e('0x31')]=_[_0xbd3e('0x32')](_0x12537d[_0xbd3e('0x31')]);_0xba770d[_0xbd3e('0x33')]=_['intersection'](_0xba770d['model'],_0xba770d['query']);_0xc9eadd['attributes']=_[_0xbd3e('0x34')](_0xba770d[_0xbd3e('0x30')],qs[_0xbd3e('0x36')](_0x12537d[_0xbd3e('0x31')][_0xbd3e('0x36')]));_0xc9eadd[_0xbd3e('0x35')]=_0xc9eadd['attributes'][_0xbd3e('0x37')]?_0xc9eadd['attributes']:_0xba770d[_0xbd3e('0x30')];if(_0x12537d[_0xbd3e('0x31')][_0xbd3e('0x41')]){_0xc9eadd[_0xbd3e('0x42')]=[{'all':!![]}];}_0xc9eadd=_[_0xbd3e('0x3e')]({},_0xc9eadd,_0x12537d[_0xbd3e('0x3f')]);return db[_0xbd3e('0x2b')][_0xbd3e('0x47')](_0xc9eadd)['then'](handleEntityNotFound(_0x1093fa,null))[_0xbd3e('0x24')](respondWithResult(_0x1093fa,null))[_0xbd3e('0x45')](handleError(_0x1093fa,null));};exports[_0xbd3e('0x48')]=function(_0x4c5b2c,_0x18c47b){return db[_0xbd3e('0x2b')][_0xbd3e('0x48')](_0x4c5b2c['body'],{})[_0xbd3e('0x24')](respondWithResult(_0x18c47b,0xc9))['catch'](handleError(_0x18c47b,null));};exports['update']=function(_0x3c7912,_0x5bf238){if(_0x3c7912[_0xbd3e('0x49')]['id']){delete _0x3c7912['body']['id'];}return db['Dynamics365Field']['find']({'where':{'id':_0x3c7912[_0xbd3e('0x46')]['id']}})[_0xbd3e('0x24')](handleEntityNotFound(_0x5bf238,null))[_0xbd3e('0x24')](saveUpdates(_0x3c7912['body'],null))[_0xbd3e('0x24')](respondWithResult(_0x5bf238,null))[_0xbd3e('0x45')](handleError(_0x5bf238,null));};exports[_0xbd3e('0x4a')]=function(_0x1d8c08,_0x3ccb4c){return db[_0xbd3e('0x2b')][_0xbd3e('0x47')]({'where':{'id':_0x1d8c08[_0xbd3e('0x46')]['id']}})[_0xbd3e('0x24')](handleEntityNotFound(_0x3ccb4c,null))[_0xbd3e('0x24')](removeEntity(_0x3ccb4c,null))[_0xbd3e('0x45')](handleError(_0x3ccb4c,null));};
\ No newline at end of file
+var _0x9a46=['jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','update','destroy','error','name','map','Dynamics365Field','fieldName','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','then','rows','catch','params','rawAttributes','intersection','include','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel'];(function(_0x1e1d80,_0xf36cef){var _0x41ba56=function(_0x694a39){while(--_0x694a39){_0x1e1d80['push'](_0x1e1d80['shift']());}};_0x41ba56(++_0xf36cef);}(_0x9a46,0x19e));var _0x69a4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9a46[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x69a4('0x0'));var rimraf=require(_0x69a4('0x1'));var zipdir=require(_0x69a4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x69a4('0x3'));var moment=require(_0x69a4('0x4'));var BPromise=require(_0x69a4('0x5'));var Mustache=require('mustache');var util=require(_0x69a4('0x6'));var path=require(_0x69a4('0x7'));var sox=require(_0x69a4('0x8'));var csv=require('to-csv');var ejs=require(_0x69a4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x69a4('0xa'));var squel=require(_0x69a4('0xb'));var crypto=require('crypto');var jsforce=require(_0x69a4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x69a4('0xd'));var querystring=require('querystring');var Papa=require(_0x69a4('0xe'));var Redis=require('ioredis');var authService=require(_0x69a4('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x69a4('0x10'));var hardwareService=require(_0x69a4('0x11'));var logger=require(_0x69a4('0x12'))(_0x69a4('0x13'));var utils=require(_0x69a4('0x14'));var config=require(_0x69a4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x69a4('0x16'))['db'];function respondWithStatusCode(_0x31e19a,_0x2cd796){_0x2cd796=_0x2cd796||0xcc;return function(_0x52c382){if(_0x52c382){return _0x31e19a[_0x69a4('0x17')](_0x2cd796);}return _0x31e19a[_0x69a4('0x18')](_0x2cd796)[_0x69a4('0x19')]();};}function respondWithResult(_0x2bb567,_0x5be671){_0x5be671=_0x5be671||0xc8;return function(_0x280ba8){if(_0x280ba8){return _0x2bb567[_0x69a4('0x18')](_0x5be671)[_0x69a4('0x1a')](_0x280ba8);}};}function respondWithFilteredResult(_0x5e7e90,_0x4edb43){return function(_0x1c5993){if(_0x1c5993){var _0x33f0fb=typeof _0x4edb43[_0x69a4('0x1b')]==='undefined'&&typeof _0x4edb43[_0x69a4('0x1c')]===_0x69a4('0x1d');var _0x3ff21e=_0x1c5993['count'];var _0x1b41ad=_0x33f0fb?0x0:_0x4edb43[_0x69a4('0x1b')];var _0xcd2dae=_0x33f0fb?_0x1c5993[_0x69a4('0x1e')]:_0x4edb43[_0x69a4('0x1b')]+_0x4edb43['limit'];var _0x1c7f9a;if(_0xcd2dae>=_0x3ff21e){_0xcd2dae=_0x3ff21e;_0x1c7f9a=0xc8;}else{_0x1c7f9a=0xce;}_0x5e7e90['status'](_0x1c7f9a);return _0x5e7e90[_0x69a4('0x1f')]('Content-Range',_0x1b41ad+'-'+_0xcd2dae+'/'+_0x3ff21e)[_0x69a4('0x1a')](_0x1c5993);}return null;};}function patchUpdates(_0x51e8fa){return function(_0x5e1b3f){try{jsonpatch['apply'](_0x5e1b3f,_0x51e8fa,!![]);}catch(_0x4e8c06){return BPromise[_0x69a4('0x20')](_0x4e8c06);}return _0x5e1b3f[_0x69a4('0x21')]();};}function saveUpdates(_0x1e9d5d,_0x3aef02){return function(_0x2dfed5){if(_0x2dfed5){return _0x2dfed5[_0x69a4('0x22')](_0x1e9d5d)['then'](function(_0x24d6c7){return _0x24d6c7;});}return null;};}function removeEntity(_0x2fe8c9,_0x50aa3f){return function(_0x3c6a5c){if(_0x3c6a5c){return _0x3c6a5c[_0x69a4('0x23')]()['then'](function(){_0x2fe8c9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x19c111,_0x5a0c8a){return function(_0x1ba1d5){if(!_0x1ba1d5){_0x19c111[_0x69a4('0x17')](0x194);}return _0x1ba1d5;};}function handleError(_0x2dd794,_0x5ec2bd){_0x5ec2bd=_0x5ec2bd||0x1f4;return function(_0x3137c9){logger[_0x69a4('0x24')](_0x3137c9['stack']);if(_0x3137c9[_0x69a4('0x25')]){delete _0x3137c9[_0x69a4('0x25')];}_0x2dd794['status'](_0x5ec2bd)['send'](_0x3137c9);};}exports['index']=function(_0x38536b,_0x400108){var _0x39363b={},_0x3843a6={},_0x3755ab={'count':0x0,'rows':[]};var _0x144e4b=_[_0x69a4('0x26')](db[_0x69a4('0x27')]['rawAttributes'],function(_0x47d8a7){return{'name':_0x47d8a7[_0x69a4('0x28')],'type':_0x47d8a7[_0x69a4('0x29')]['key']};});_0x3843a6[_0x69a4('0x2a')]=_['map'](_0x144e4b,_0x69a4('0x25'));_0x3843a6[_0x69a4('0x2b')]=_[_0x69a4('0x2c')](_0x38536b['query']);_0x3843a6[_0x69a4('0x2d')]=_['intersection'](_0x3843a6['model'],_0x3843a6[_0x69a4('0x2b')]);_0x39363b[_0x69a4('0x2e')]=_['intersection'](_0x3843a6[_0x69a4('0x2a')],qs[_0x69a4('0x2f')](_0x38536b[_0x69a4('0x2b')]['fields']));_0x39363b['attributes']=_0x39363b[_0x69a4('0x2e')][_0x69a4('0x30')]?_0x39363b['attributes']:_0x3843a6[_0x69a4('0x2a')];if(!_0x38536b[_0x69a4('0x2b')][_0x69a4('0x31')](_0x69a4('0x32'))){_0x39363b['limit']=qs[_0x69a4('0x1c')](_0x38536b[_0x69a4('0x2b')][_0x69a4('0x1c')]);_0x39363b[_0x69a4('0x1b')]=qs[_0x69a4('0x1b')](_0x38536b[_0x69a4('0x2b')]['offset']);}_0x39363b[_0x69a4('0x33')]=qs[_0x69a4('0x34')](_0x38536b[_0x69a4('0x2b')][_0x69a4('0x34')]);_0x39363b[_0x69a4('0x35')]=qs[_0x69a4('0x2d')](_[_0x69a4('0x36')](_0x38536b['query'],_0x3843a6[_0x69a4('0x2d')]),_0x144e4b);if(_0x38536b[_0x69a4('0x2b')][_0x69a4('0x37')]){_0x39363b[_0x69a4('0x35')]=_[_0x69a4('0x38')](_0x39363b[_0x69a4('0x35')],{'$or':_['map'](_0x144e4b,function(_0x3ba68b){if(_0x3ba68b[_0x69a4('0x29')]!==_0x69a4('0x39')){var _0x168677={};_0x168677[_0x3ba68b[_0x69a4('0x25')]]={'$like':'%'+_0x38536b['query']['filter']+'%'};return _0x168677;}})});}_0x39363b=_[_0x69a4('0x38')]({},_0x39363b,_0x38536b[_0x69a4('0x3a')]);var _0x165a4a={'where':_0x39363b['where']};return db['Dynamics365Field'][_0x69a4('0x1e')](_0x165a4a)['then'](function(_0x2eefb1){_0x3755ab[_0x69a4('0x1e')]=_0x2eefb1;if(_0x38536b[_0x69a4('0x2b')][_0x69a4('0x3b')]){_0x39363b['include']=[{'all':!![]}];}return db[_0x69a4('0x27')][_0x69a4('0x3c')](_0x39363b);})[_0x69a4('0x3d')](function(_0x4b5825){_0x3755ab[_0x69a4('0x3e')]=_0x4b5825;return _0x3755ab;})[_0x69a4('0x3d')](respondWithFilteredResult(_0x400108,_0x39363b))[_0x69a4('0x3f')](handleError(_0x400108,null));};exports['show']=function(_0x3128ca,_0x1fe0ed){var _0x1a05cd={'raw':!![],'where':{'id':_0x3128ca[_0x69a4('0x40')]['id']}},_0x4c081a={};_0x4c081a['model']=_[_0x69a4('0x2c')](db[_0x69a4('0x27')][_0x69a4('0x41')]);_0x4c081a[_0x69a4('0x2b')]=_[_0x69a4('0x2c')](_0x3128ca[_0x69a4('0x2b')]);_0x4c081a[_0x69a4('0x2d')]=_[_0x69a4('0x42')](_0x4c081a[_0x69a4('0x2a')],_0x4c081a[_0x69a4('0x2b')]);_0x1a05cd[_0x69a4('0x2e')]=_[_0x69a4('0x42')](_0x4c081a[_0x69a4('0x2a')],qs[_0x69a4('0x2f')](_0x3128ca[_0x69a4('0x2b')][_0x69a4('0x2f')]));_0x1a05cd[_0x69a4('0x2e')]=_0x1a05cd['attributes'][_0x69a4('0x30')]?_0x1a05cd[_0x69a4('0x2e')]:_0x4c081a['model'];if(_0x3128ca[_0x69a4('0x2b')]['includeAll']){_0x1a05cd[_0x69a4('0x43')]=[{'all':!![]}];}_0x1a05cd=_[_0x69a4('0x38')]({},_0x1a05cd,_0x3128ca[_0x69a4('0x3a')]);return db[_0x69a4('0x27')][_0x69a4('0x44')](_0x1a05cd)[_0x69a4('0x3d')](handleEntityNotFound(_0x1fe0ed,null))[_0x69a4('0x3d')](respondWithResult(_0x1fe0ed,null))[_0x69a4('0x3f')](handleError(_0x1fe0ed,null));};exports[_0x69a4('0x45')]=function(_0x13cd00,_0x1f07c5){return db[_0x69a4('0x27')]['create'](_0x13cd00[_0x69a4('0x46')],{})[_0x69a4('0x3d')](respondWithResult(_0x1f07c5,0xc9))[_0x69a4('0x3f')](handleError(_0x1f07c5,null));};exports[_0x69a4('0x22')]=function(_0x1a12b0,_0x10a708){if(_0x1a12b0[_0x69a4('0x46')]['id']){delete _0x1a12b0[_0x69a4('0x46')]['id'];}return db[_0x69a4('0x27')]['find']({'where':{'id':_0x1a12b0[_0x69a4('0x40')]['id']}})[_0x69a4('0x3d')](handleEntityNotFound(_0x10a708,null))[_0x69a4('0x3d')](saveUpdates(_0x1a12b0[_0x69a4('0x46')],null))[_0x69a4('0x3d')](respondWithResult(_0x10a708,null))[_0x69a4('0x3f')](handleError(_0x10a708,null));};exports[_0x69a4('0x23')]=function(_0x2cfb32,_0x4a5ae7){return db['Dynamics365Field'][_0x69a4('0x44')]({'where':{'id':_0x2cfb32[_0x69a4('0x40')]['id']}})[_0x69a4('0x3d')](handleEntityNotFound(_0x4a5ae7,null))[_0x69a4('0x3d')](removeEntity(_0x4a5ae7,null))[_0x69a4('0x3f')](handleError(_0x4a5ae7,null));};
\ No newline at end of file
index 6cd6685..7c54e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b8=['moment','bluebird','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api'];(function(_0x5ec663,_0x2a323a){var _0x3ceafd=function(_0xdb2e06){while(--_0xdb2e06){_0x5ec663['push'](_0x5ec663['shift']());}};_0x3ceafd(++_0x2a323a);}(_0x72b8,0x84));var _0x872b=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x72b8[_0x160c73];return _0xd9302;};'use strict';var _=require(_0x872b('0x0'));var util=require(_0x872b('0x1'));var logger=require(_0x872b('0x2'))(_0x872b('0x3'));var moment=require(_0x872b('0x4'));var BPromise=require(_0x872b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x872b('0x6'));var rimraf=require(_0x872b('0x7'));var config=require(_0x872b('0x8'));var attributes=require(_0x872b('0x9'));module[_0x872b('0xa')]=function(_0x3a28c3,_0x6f77a4){return _0x3a28c3[_0x872b('0xb')](_0x872b('0xc'),attributes,{'tableName':_0x872b('0xd'),'paranoid':![],'indexes':[{'name':_0x872b('0xe'),'fields':[_0x872b('0xf'),_0x872b('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc11b=['lodash','util','api','moment','path','rimraf','./intDynamics365Field.attributes','exports','define','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId'];(function(_0x1eb1d0,_0x424ecc){var _0x2d9229=function(_0x2311ae){while(--_0x2311ae){_0x1eb1d0['push'](_0x1eb1d0['shift']());}};_0x2d9229(++_0x424ecc);}(_0xc11b,0x12b));var _0xbc11=function(_0x44f8f9,_0x3bbb9d){_0x44f8f9=_0x44f8f9-0x0;var _0x1e4130=_0xc11b[_0x44f8f9];return _0x1e4130;};'use strict';var _=require(_0xbc11('0x0'));var util=require(_0xbc11('0x1'));var logger=require('../../config/logger')(_0xbc11('0x2'));var moment=require(_0xbc11('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbc11('0x4'));var rimraf=require(_0xbc11('0x5'));var config=require('../../config/environment');var attributes=require(_0xbc11('0x6'));module[_0xbc11('0x7')]=function(_0x1ef680,_0x2e30ed){return _0x1ef680[_0xbc11('0x8')]('Dynamics365Field',attributes,{'tableName':_0xbc11('0x9'),'paranoid':![],'indexes':[{'name':_0xbc11('0xa'),'fields':[_0xbc11('0xb'),_0xbc11('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b3030e7..725b0cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8fb=['client','http','request','then','info','request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Field,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x2e2632,_0x258e96){var _0x178cee=function(_0x2963bf){while(--_0x2963bf){_0x2e2632['push'](_0x2e2632['shift']());}};_0x178cee(++_0x258e96);}(_0xf8fb,0xb6));var _0xbf8f=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xf8fb[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xbf8f('0x0'));var util=require(_0xbf8f('0x1'));var moment=require(_0xbf8f('0x2'));var BPromise=require(_0xbf8f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf8f('0x4'));var db=require(_0xbf8f('0x5'))['db'];var utils=require(_0xbf8f('0x6'));var logger=require(_0xbf8f('0x7'))('rpc');var config=require(_0xbf8f('0x8'));var jayson=require(_0xbf8f('0x9'));var client=jayson[_0xbf8f('0xa')][_0xbf8f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d2f94,_0x326ed0,_0x130cb1){return new BPromise(function(_0x5242f4,_0x58cb1c){return client[_0xbf8f('0xc')](_0x1d2f94,_0x130cb1)[_0xbf8f('0xd')](function(_0x307c5e){logger[_0xbf8f('0xe')]('Dynamics365Field,\x20%s,\x20%s',_0x326ed0,_0xbf8f('0xf'));logger['debug'](_0xbf8f('0x10'),_0x326ed0,'request\x20sent',JSON[_0xbf8f('0x11')](_0x307c5e));if(_0x307c5e[_0xbf8f('0x12')]){if(_0x307c5e[_0xbf8f('0x12')][_0xbf8f('0x13')]===0x1f4){logger[_0xbf8f('0x12')](_0xbf8f('0x14'),_0x326ed0,_0x307c5e['error'][_0xbf8f('0x15')]);return _0x58cb1c(_0x307c5e[_0xbf8f('0x12')][_0xbf8f('0x15')]);}logger['error'](_0xbf8f('0x14'),_0x326ed0,_0x307c5e['error']['message']);return _0x5242f4(_0x307c5e[_0xbf8f('0x12')][_0xbf8f('0x15')]);}else{logger[_0xbf8f('0xe')](_0xbf8f('0x14'),_0x326ed0,_0xbf8f('0xf'));_0x5242f4(_0x307c5e[_0xbf8f('0x16')][_0xbf8f('0x15')]);}})[_0xbf8f('0x17')](function(_0x4c8326){logger['error'](_0xbf8f('0x14'),_0x326ed0,_0x4c8326);_0x58cb1c(_0x4c8326);});});}
\ No newline at end of file
+var _0x28ba=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Dynamics365Field,\x20%s,\x20%s','message','info','catch','moment','bluebird','randomstring'];(function(_0x491544,_0x5874f1){var _0x33cbdb=function(_0x3debc6){while(--_0x3debc6){_0x491544['push'](_0x491544['shift']());}};_0x33cbdb(++_0x5874f1);}(_0x28ba,0xc5));var _0xa28b=function(_0x228dba,_0x5e09ed){_0x228dba=_0x228dba-0x0;var _0x4cb334=_0x28ba[_0x228dba];return _0x4cb334;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa28b('0x0'));var BPromise=require(_0xa28b('0x1'));var rs=require(_0xa28b('0x2'));var fs=require('fs');var Redis=require(_0xa28b('0x3'));var db=require(_0xa28b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa28b('0x5'))(_0xa28b('0x6'));var config=require(_0xa28b('0x7'));var jayson=require(_0xa28b('0x8'));var client=jayson['client'][_0xa28b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3a68ce,_0x56da89,_0x258539){return new BPromise(function(_0xfad4d9,_0x1b862b){return client[_0xa28b('0xa')](_0x3a68ce,_0x258539)['then'](function(_0x407712){logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x56da89,'request\x20sent');logger[_0xa28b('0xb')](_0xa28b('0xc'),_0x56da89,_0xa28b('0xd'),JSON['stringify'](_0x407712));if(_0x407712[_0xa28b('0xe')]){if(_0x407712[_0xa28b('0xe')][_0xa28b('0xf')]===0x1f4){logger[_0xa28b('0xe')](_0xa28b('0x10'),_0x56da89,_0x407712[_0xa28b('0xe')][_0xa28b('0x11')]);return _0x1b862b(_0x407712['error'][_0xa28b('0x11')]);}logger[_0xa28b('0xe')](_0xa28b('0x10'),_0x56da89,_0x407712['error'][_0xa28b('0x11')]);return _0xfad4d9(_0x407712[_0xa28b('0xe')][_0xa28b('0x11')]);}else{logger[_0xa28b('0x12')](_0xa28b('0x10'),_0x56da89,_0xa28b('0xd'));_0xfad4d9(_0x407712['result'][_0xa28b('0x11')]);}})[_0xa28b('0x13')](function(_0x55a2b0){logger[_0xa28b('0xe')](_0xa28b('0x10'),_0x56da89,_0x55a2b0);_0x1b862b(_0x55a2b0);});});}
\ No newline at end of file
index d540f87..cfe8c45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f4b=['show','/:id/configurations','getConfigurations','post','create','put','update','destroy','exports','multer','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id'];(function(_0xa5ab62,_0x16170f){var _0x253ea2=function(_0x580168){while(--_0x580168){_0xa5ab62['push'](_0xa5ab62['shift']());}};_0x253ea2(++_0x16170f);}(_0x6f4b,0x185));var _0xb6f4=function(_0x3afec3,_0x3b7e4e){_0x3afec3=_0x3afec3-0x0;var _0x1f177f=_0x6f4b[_0x3afec3];return _0x1f177f;};'use strict';var multer=require(_0xb6f4('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb6f4('0x1')]();var fs_extra=require(_0xb6f4('0x2'));var auth=require(_0xb6f4('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xb6f4('0x4'));var controller=require(_0xb6f4('0x5'));router[_0xb6f4('0x6')]('/',auth[_0xb6f4('0x7')](),controller[_0xb6f4('0x8')]);router['get'](_0xb6f4('0x9'),auth['isAuthenticated'](),controller[_0xb6f4('0xa')]);router[_0xb6f4('0x6')](_0xb6f4('0xb'),auth[_0xb6f4('0x7')](),controller[_0xb6f4('0xc')]);router[_0xb6f4('0x6')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0xb6f4('0xd')]('/',auth['isAuthenticated'](),controller[_0xb6f4('0xe')]);router[_0xb6f4('0xd')]('/:id/configurations',auth[_0xb6f4('0x7')](),controller['addConfiguration']);router[_0xb6f4('0xf')](_0xb6f4('0x9'),auth['isAuthenticated'](),controller[_0xb6f4('0x10')]);router['delete'](_0xb6f4('0x9'),auth[_0xb6f4('0x7')](),controller[_0xb6f4('0x11')]);module[_0xb6f4('0x12')]=router;
\ No newline at end of file
+var _0x70ef=['./intFreshdeskAccount.controller','get','/:id','isAuthenticated','show','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x57a259,_0x542c32){var _0x1f39a1=function(_0x285e1e){while(--_0x285e1e){_0x57a259['push'](_0x57a259['shift']());}};_0x1f39a1(++_0x542c32);}(_0x70ef,0x187));var _0xf70e=function(_0x36e00e,_0x15d309){_0x36e00e=_0x36e00e-0x0;var _0x5ca7f0=_0x70ef[_0x36e00e];return _0x5ca7f0;};'use strict';var multer=require(_0xf70e('0x0'));var util=require(_0xf70e('0x1'));var path=require(_0xf70e('0x2'));var timeout=require(_0xf70e('0x3'));var express=require(_0xf70e('0x4'));var router=express[_0xf70e('0x5')]();var fs_extra=require(_0xf70e('0x6'));var auth=require(_0xf70e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xf70e('0x8'));var controller=require(_0xf70e('0x9'));router[_0xf70e('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf70e('0xa')](_0xf70e('0xb'),auth[_0xf70e('0xc')](),controller[_0xf70e('0xd')]);router[_0xf70e('0xa')]('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router[_0xf70e('0xa')](_0xf70e('0xe'),auth['isAuthenticated'](),controller[_0xf70e('0xf')]);router[_0xf70e('0x10')]('/',auth[_0xf70e('0xc')](),controller[_0xf70e('0x11')]);router['post'](_0xf70e('0x12'),auth['isAuthenticated'](),controller[_0xf70e('0x13')]);router[_0xf70e('0x14')](_0xf70e('0xb'),auth['isAuthenticated'](),controller[_0xf70e('0x15')]);router[_0xf70e('0x16')]('/:id',auth[_0xf70e('0xc')](),controller[_0xf70e('0x17')]);module[_0xf70e('0x18')]=router;
\ No newline at end of file
index a9451c1..c7485d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de3=['username','remoteUri','sequelize','STRING'];(function(_0x3b0c9d,_0x3ddeb5){var _0xcfc8d7=function(_0x320dc6){while(--_0x320dc6){_0x3b0c9d['push'](_0x3b0c9d['shift']());}};_0xcfc8d7(++_0x3ddeb5);}(_0x3de3,0x1ce));var _0x33de=function(_0x17d79e,_0x5d77c4){_0x17d79e=_0x17d79e-0x0;var _0x255498=_0x3de3[_0x17d79e];return _0x255498;};'use strict';var Sequelize=require(_0x33de('0x0'));module['exports']={'name':{'type':Sequelize[_0x33de('0x1')]},'description':{'type':Sequelize[_0x33de('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x33de('0x2')},'apiKey':{'type':Sequelize[_0x33de('0x1')]},'remoteUri':{'type':Sequelize[_0x33de('0x1')],'unique':_0x33de('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x5430=['STRING','username','remoteUri','sequelize','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5430,0x10c));var _0x0543=function(_0x53ced2,_0x5d7fa8){_0x53ced2=_0x53ced2-0x0;var _0xbedb5b=_0x5430[_0x53ced2];return _0xbedb5b;};'use strict';var Sequelize=require(_0x0543('0x0'));module[_0x0543('0x1')]={'name':{'type':Sequelize[_0x0543('0x2')]},'description':{'type':Sequelize[_0x0543('0x2')]},'username':{'type':Sequelize[_0x0543('0x2')],'unique':_0x0543('0x3')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x0543('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index d7576b0..9b4db43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04b8=['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','../../components/integrations/configuration','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','end','stack','name','send','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','options','includeAll','FreshdeskAccount','findAll','rows','catch','keys','include','find','create','body','params','getConfigurations','findOne','FreshdeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshdeskField','Descriptions','getFields','remoteUri','apiKey','slice','substring','GET','%s/%s','api/v2/ticket_fields','format','Basic\x20%s','%s:X','base64','requester','subject','agent','description','priority','group','source','ticket_type','remove','includes','custom_text','custom_dropdown','label','default','choices','statusCode','error','stringify','test','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra'];(function(_0xeb3824,_0xeb05a6){var _0x4b3867=function(_0xb16b17){while(--_0xb16b17){_0xeb3824['push'](_0xeb3824['shift']());}};_0x4b3867(++_0xeb05a6);}(_0x04b8,0x159));var _0x804b=function(_0x259577,_0x1bf987){_0x259577=_0x259577-0x0;var _0x2ae0e7=_0x04b8[_0x259577];return _0x2ae0e7;};'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'];var integrations=require(_0x804b('0x18'));function respondWithStatusCode(_0x5303cc,_0x23ee57){_0x23ee57=_0x23ee57||0xcc;return function(_0x3a2702){if(_0x3a2702){return _0x5303cc[_0x804b('0x19')](_0x23ee57);}return _0x5303cc[_0x804b('0x1a')](_0x23ee57)['end']();};}function respondWithResult(_0x215825,_0x1b01a7){_0x1b01a7=_0x1b01a7||0xc8;return function(_0x274bb8){if(_0x274bb8){return _0x215825[_0x804b('0x1a')](_0x1b01a7)['json'](_0x274bb8);}};}function respondWithFilteredResult(_0x2fd593,_0x8ccbe0){return function(_0x5e1cfe){if(_0x5e1cfe){var _0x3c5986=typeof _0x8ccbe0['offset']===_0x804b('0x1b')&&typeof _0x8ccbe0[_0x804b('0x1c')]===_0x804b('0x1b');var _0x1760f8=_0x5e1cfe[_0x804b('0x1d')];var _0x5a0a82=_0x3c5986?0x0:_0x8ccbe0[_0x804b('0x1e')];var _0x50b4fe=_0x3c5986?_0x5e1cfe[_0x804b('0x1d')]:_0x8ccbe0[_0x804b('0x1e')]+_0x8ccbe0[_0x804b('0x1c')];var _0x469251;if(_0x50b4fe>=_0x1760f8){_0x50b4fe=_0x1760f8;_0x469251=0xc8;}else{_0x469251=0xce;}_0x2fd593['status'](_0x469251);return _0x2fd593[_0x804b('0x1f')](_0x804b('0x20'),_0x5a0a82+'-'+_0x50b4fe+'/'+_0x1760f8)[_0x804b('0x21')](_0x5e1cfe);}return null;};}function patchUpdates(_0x11eaf6){return function(_0x27844b){try{jsonpatch[_0x804b('0x22')](_0x27844b,_0x11eaf6,!![]);}catch(_0x3241a0){return BPromise[_0x804b('0x23')](_0x3241a0);}return _0x27844b[_0x804b('0x24')]();};}function saveUpdates(_0x2b7271,_0x1acc48){return function(_0x5a968b){if(_0x5a968b){return _0x5a968b[_0x804b('0x25')](_0x2b7271)[_0x804b('0x26')](function(_0x5585f8){return _0x5585f8;});}return null;};}function removeEntity(_0x44a921,_0x367024){return function(_0x115b8f){if(_0x115b8f){return _0x115b8f[_0x804b('0x27')]()[_0x804b('0x26')](function(){_0x44a921['status'](0xcc)[_0x804b('0x28')]();});}};}function handleEntityNotFound(_0x7d9c33,_0x4e7266){return function(_0x12b6a6){if(!_0x12b6a6){_0x7d9c33[_0x804b('0x19')](0x194);}return _0x12b6a6;};}function handleError(_0x1117a5,_0x27d5ec){_0x27d5ec=_0x27d5ec||0x1f4;return function(_0x2d88da){logger['error'](_0x2d88da[_0x804b('0x29')]);if(_0x2d88da[_0x804b('0x2a')]){delete _0x2d88da[_0x804b('0x2a')];}_0x1117a5[_0x804b('0x1a')](_0x27d5ec)[_0x804b('0x2b')](_0x2d88da);};}exports['index']=function(_0x3eb531,_0x2931ff){var _0x410871={},_0x5c7026={},_0x3dbd41={'count':0x0,'rows':[]};var _0x407357=_[_0x804b('0x2c')](db['FreshdeskAccount'][_0x804b('0x2d')],function(_0x471c04){return{'name':_0x471c04['fieldName'],'type':_0x471c04[_0x804b('0x2e')][_0x804b('0x2f')]};});_0x5c7026[_0x804b('0x30')]=_[_0x804b('0x2c')](_0x407357,_0x804b('0x2a'));_0x5c7026[_0x804b('0x31')]=_['keys'](_0x3eb531[_0x804b('0x31')]);_0x5c7026[_0x804b('0x32')]=_[_0x804b('0x33')](_0x5c7026[_0x804b('0x30')],_0x5c7026[_0x804b('0x31')]);_0x410871[_0x804b('0x34')]=_[_0x804b('0x33')](_0x5c7026[_0x804b('0x30')],qs[_0x804b('0x35')](_0x3eb531[_0x804b('0x31')][_0x804b('0x35')]));_0x410871[_0x804b('0x34')]=_0x410871[_0x804b('0x34')][_0x804b('0x36')]?_0x410871[_0x804b('0x34')]:_0x5c7026[_0x804b('0x30')];if(!_0x3eb531[_0x804b('0x31')][_0x804b('0x37')](_0x804b('0x38'))){_0x410871[_0x804b('0x1c')]=qs[_0x804b('0x1c')](_0x3eb531[_0x804b('0x31')][_0x804b('0x1c')]);_0x410871[_0x804b('0x1e')]=qs[_0x804b('0x1e')](_0x3eb531['query']['offset']);}_0x410871['order']=qs[_0x804b('0x39')](_0x3eb531[_0x804b('0x31')][_0x804b('0x39')]);_0x410871['where']=qs['filters'](_['pick'](_0x3eb531[_0x804b('0x31')],_0x5c7026[_0x804b('0x32')]),_0x407357);if(_0x3eb531[_0x804b('0x31')][_0x804b('0x3a')]){_0x410871[_0x804b('0x3b')]=_[_0x804b('0x3c')](_0x410871[_0x804b('0x3b')],{'$or':_[_0x804b('0x2c')](_0x407357,function(_0x27ba88){if(_0x27ba88[_0x804b('0x2e')]!==_0x804b('0x3d')){var _0x22a3fa={};_0x22a3fa[_0x27ba88[_0x804b('0x2a')]]={'$like':'%'+_0x3eb531['query'][_0x804b('0x3a')]+'%'};return _0x22a3fa;}})});}_0x410871=_[_0x804b('0x3c')]({},_0x410871,_0x3eb531[_0x804b('0x3e')]);var _0x3d6d8a={'where':_0x410871[_0x804b('0x3b')]};return db['FreshdeskAccount']['count'](_0x3d6d8a)[_0x804b('0x26')](function(_0x2afafd){_0x3dbd41[_0x804b('0x1d')]=_0x2afafd;if(_0x3eb531['query'][_0x804b('0x3f')]){_0x410871['include']=[{'all':!![]}];}return db[_0x804b('0x40')][_0x804b('0x41')](_0x410871);})[_0x804b('0x26')](function(_0x304710){_0x3dbd41[_0x804b('0x42')]=_0x304710;return _0x3dbd41;})[_0x804b('0x26')](respondWithFilteredResult(_0x2931ff,_0x410871))[_0x804b('0x43')](handleError(_0x2931ff,null));};exports['show']=function(_0x17972a,_0x1c0363){var _0x1dcec8={'raw':![],'where':{'id':_0x17972a['params']['id']}},_0x1d25f6={};_0x1d25f6[_0x804b('0x30')]=_[_0x804b('0x44')](db[_0x804b('0x40')][_0x804b('0x2d')]);_0x1d25f6[_0x804b('0x31')]=_[_0x804b('0x44')](_0x17972a[_0x804b('0x31')]);_0x1d25f6[_0x804b('0x32')]=_['intersection'](_0x1d25f6[_0x804b('0x30')],_0x1d25f6['query']);_0x1dcec8['attributes']=_['intersection'](_0x1d25f6[_0x804b('0x30')],qs['fields'](_0x17972a[_0x804b('0x31')][_0x804b('0x35')]));_0x1dcec8[_0x804b('0x34')]=_0x1dcec8[_0x804b('0x34')]['length']?_0x1dcec8[_0x804b('0x34')]:_0x1d25f6[_0x804b('0x30')];if(_0x17972a[_0x804b('0x31')]['includeAll']){_0x1dcec8[_0x804b('0x45')]=[{'all':!![]}];}_0x1dcec8=_[_0x804b('0x3c')]({},_0x1dcec8,_0x17972a[_0x804b('0x3e')]);return db['FreshdeskAccount'][_0x804b('0x46')](_0x1dcec8)[_0x804b('0x26')](handleEntityNotFound(_0x1c0363,null))[_0x804b('0x26')](respondWithResult(_0x1c0363,null))[_0x804b('0x43')](handleError(_0x1c0363,null));};exports[_0x804b('0x47')]=function(_0x3a39f5,_0x392bc0){return db[_0x804b('0x40')][_0x804b('0x47')](_0x3a39f5[_0x804b('0x48')],{})[_0x804b('0x26')](respondWithResult(_0x392bc0,0xc9))[_0x804b('0x43')](handleError(_0x392bc0,null));};exports[_0x804b('0x25')]=function(_0x2c1796,_0x578e92){if(_0x2c1796['body']['id']){delete _0x2c1796[_0x804b('0x48')]['id'];}return db[_0x804b('0x40')][_0x804b('0x46')]({'where':{'id':_0x2c1796[_0x804b('0x49')]['id']}})[_0x804b('0x26')](handleEntityNotFound(_0x578e92,null))['then'](saveUpdates(_0x2c1796[_0x804b('0x48')],null))[_0x804b('0x26')](respondWithResult(_0x578e92,null))[_0x804b('0x43')](handleError(_0x578e92,null));};exports[_0x804b('0x27')]=function(_0x47247c,_0x111e3f){return db['FreshdeskAccount']['find']({'where':{'id':_0x47247c[_0x804b('0x49')]['id']}})[_0x804b('0x26')](handleEntityNotFound(_0x111e3f,null))['then'](removeEntity(_0x111e3f,null))['catch'](handleError(_0x111e3f,null));};exports[_0x804b('0x4a')]=function(_0x3d56bb,_0x4a5068,_0x4efe2a){var _0x164c5d={};var _0x38c2c0={};var _0x54cc99;var _0x2756de;return db['FreshdeskAccount'][_0x804b('0x4b')]({'where':{'id':_0x3d56bb['params']['id']}})[_0x804b('0x26')](handleEntityNotFound(_0x4a5068,null))[_0x804b('0x26')](function(_0x47c835){if(_0x47c835){_0x54cc99=_0x47c835;_0x38c2c0[_0x804b('0x30')]=_['keys'](db[_0x804b('0x4c')][_0x804b('0x2d')]);_0x38c2c0[_0x804b('0x31')]=_[_0x804b('0x44')](_0x3d56bb[_0x804b('0x31')]);_0x38c2c0[_0x804b('0x32')]=_[_0x804b('0x33')](_0x38c2c0[_0x804b('0x30')],_0x38c2c0[_0x804b('0x31')]);_0x164c5d[_0x804b('0x34')]=_['intersection'](_0x38c2c0['model'],qs[_0x804b('0x35')](_0x3d56bb['query']['fields']));_0x164c5d[_0x804b('0x34')]=_0x164c5d[_0x804b('0x34')][_0x804b('0x36')]?_0x164c5d[_0x804b('0x34')]:_0x38c2c0['model'];_0x164c5d['order']=qs[_0x804b('0x39')](_0x3d56bb[_0x804b('0x31')][_0x804b('0x39')]);_0x164c5d[_0x804b('0x3b')]=qs[_0x804b('0x32')](_[_0x804b('0x4d')](_0x3d56bb[_0x804b('0x31')],_0x38c2c0[_0x804b('0x32')]));if(_0x3d56bb[_0x804b('0x31')][_0x804b('0x3a')]){_0x164c5d[_0x804b('0x3b')]=_[_0x804b('0x3c')](_0x164c5d[_0x804b('0x3b')],{'$or':_[_0x804b('0x2c')](_0x164c5d[_0x804b('0x34')],function(_0x3d98a2){var _0x524291={};_0x524291[_0x3d98a2]={'$like':'%'+_0x3d56bb[_0x804b('0x31')][_0x804b('0x3a')]+'%'};return _0x524291;})});}_0x164c5d=_['merge']({},_0x164c5d,_0x3d56bb[_0x804b('0x3e')]);return _0x54cc99[_0x804b('0x4a')](_0x164c5d);}})[_0x804b('0x26')](function(_0x2576a4){if(_0x2576a4){_0x2756de=_0x2576a4['length'];if(!_0x3d56bb[_0x804b('0x31')][_0x804b('0x37')]('nolimit')){_0x164c5d[_0x804b('0x1c')]=qs[_0x804b('0x1c')](_0x3d56bb[_0x804b('0x31')]['limit']);_0x164c5d[_0x804b('0x1e')]=qs[_0x804b('0x1e')](_0x3d56bb[_0x804b('0x31')][_0x804b('0x1e')]);}return _0x54cc99[_0x804b('0x4a')](_0x164c5d);}})['then'](function(_0xb08c4e){if(_0xb08c4e){return _0xb08c4e?{'count':_0x2756de,'rows':_0xb08c4e}:null;}})[_0x804b('0x26')](respondWithResult(_0x4a5068,null))[_0x804b('0x43')](handleError(_0x4a5068,null));};exports[_0x804b('0x4e')]=function(_0x5dcc63,_0x4f8a81,_0x183796){if(_0x5dcc63['body']['id']){delete _0x5dcc63[_0x804b('0x48')]['id'];}return db[_0x804b('0x40')][_0x804b('0x4b')]({'where':{'id':_0x5dcc63[_0x804b('0x49')]['id']}})[_0x804b('0x26')](handleEntityNotFound(_0x4f8a81,null))['then'](function(_0x27f06c){if(_0x27f06c){_0x5dcc63[_0x804b('0x48')][_0x804b('0x4f')]=_0x27f06c['id'];_0x5dcc63['body'][_0x804b('0x50')]=integrations[_0x804b('0x51')](_0x5dcc63['body'][_0x804b('0x52')],_0x5dcc63['body'][_0x804b('0x2e')]);_0x5dcc63[_0x804b('0x48')]['Descriptions']=integrations[_0x804b('0x53')](_0x5dcc63[_0x804b('0x48')][_0x804b('0x52')],_0x5dcc63['body'][_0x804b('0x2e')]);return db['FreshdeskConfiguration'][_0x804b('0x47')](_0x5dcc63[_0x804b('0x48')],{'include':[{'model':db[_0x804b('0x54')],'as':_0x804b('0x50')},{'model':db['FreshdeskField'],'as':_0x804b('0x55')}]});}return null;})[_0x804b('0x26')](respondWithResult(_0x4f8a81,null))[_0x804b('0x43')](handleError(_0x4f8a81,null));};exports[_0x804b('0x56')]=function(_0x17e21c,_0x1bb4ec,_0x5b3b79){var _0x39ed3c='';return db[_0x804b('0x40')]['findOne']({'where':{'id':_0x17e21c[_0x804b('0x49')]['id']},'attributes':['id',_0x804b('0x57'),_0x804b('0x58')]})[_0x804b('0x26')](handleEntityNotFound(_0x1bb4ec,null))['then'](function(_0x335c63){if(_0x335c63){_0x39ed3c=_0x335c63[_0x804b('0x57')];var _0x5a2ced=_0x39ed3c[_0x804b('0x59')](-0x1);if(_0x5a2ced==='/'){_0x39ed3c=_0x39ed3c[_0x804b('0x5a')](0x0,_0x39ed3c['lastIndexOf'](_0x5a2ced));}return rp({'method':_0x804b('0x5b'),'uri':util['format'](_0x804b('0x5c'),_0x39ed3c,_0x804b('0x5d')),'headers':{'Authorization':util[_0x804b('0x5e')](_0x804b('0x5f'),new Buffer(util[_0x804b('0x5e')](_0x804b('0x60'),_0x335c63[_0x804b('0x58')]))['toString'](_0x804b('0x61')))},'json':!![]});}})['then'](function(_0x18fdd5){if(_0x18fdd5){var _0x2d955e=[_0x804b('0x62'),_0x804b('0x63'),_0x804b('0x64'),_0x804b('0x65'),_0x804b('0x1a'),_0x804b('0x66'),_0x804b('0x67'),_0x804b('0x68'),_0x804b('0x69'),'group','company'];_[_0x804b('0x6a')](_0x18fdd5,function(_0x383553){return _0x2d955e[_0x804b('0x6b')](_0x383553[_0x804b('0x2a')])||!_0x383553['default']&&_0x383553[_0x804b('0x2e')]!==_0x804b('0x6c')&&_0x383553[_0x804b('0x2e')]!==_0x804b('0x6d');});return{'count':_0x18fdd5[_0x804b('0x36')],'rows':_[_0x804b('0x2c')](_0x18fdd5,function(_0x1a9efe){return{'id':_0x1a9efe[_0x804b('0x2a')],'name':_0x1a9efe[_0x804b('0x6e')],'custom':!_0x1a9efe[_0x804b('0x6f')],'options':_0x1a9efe['choices']?_['map'](_0x1a9efe[_0x804b('0x70')],function(_0x2c45de){return{'name':_['capitalize'](_0x2c45de),'value':_0x2c45de};}):[]};})};}})[_0x804b('0x26')](respondWithResult(_0x1bb4ec,null))[_0x804b('0x43')](function(_0x585d7c){var _0x345bf7=_0x17e21c['query']['test']?0x1f4:_0x585d7c[_0x804b('0x71')]||0x1f4;logger[_0x804b('0x72')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x345bf7,JSON[_0x804b('0x73')](_0x585d7c));delete _0x585d7c[_0x804b('0x2a')];if(_0x345bf7===0x191){_0x345bf7=0x190;}_0x1bb4ec['status'](_0x345bf7)[_0x804b('0x2b')](_0x17e21c['query'][_0x804b('0x74')]?{'message':_0x804b('0x75'),'statusCode':_0x585d7c[_0x804b('0x71')]}:_0x585d7c);});};
\ No newline at end of file
+var _0x16d2=['nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows','show','include','find','create','catch','body','params','FreshdeskConfiguration','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','FreshdeskField','getFields','apiKey','remoteUri','slice','substring','lastIndexOf','GET','format','api/v2/ticket_fields','%s:X','toString','base64','requester','agent','description','ticket_type','group','company','remove','includes','default','custom_dropdown','label','choices','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','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','destroy','error','stack','index','map','FreshdeskAccount','rawAttributes','fieldName','type','model','name','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x13452,_0x4d9e74){var _0x56e1e0=function(_0xbfc3f9){while(--_0xbfc3f9){_0x13452['push'](_0x13452['shift']());}};_0x56e1e0(++_0x4d9e74);}(_0x16d2,0x123));var _0x216d=function(_0x4d9480,_0x2f45ab){_0x4d9480=_0x4d9480-0x0;var _0x2d0eef=_0x16d2[_0x4d9480];return _0x2d0eef;};'use strict';var emlformat=require(_0x216d('0x0'));var rimraf=require(_0x216d('0x1'));var zipdir=require(_0x216d('0x2'));var jsonpatch=require(_0x216d('0x3'));var rp=require(_0x216d('0x4'));var moment=require(_0x216d('0x5'));var BPromise=require(_0x216d('0x6'));var Mustache=require(_0x216d('0x7'));var util=require(_0x216d('0x8'));var path=require('path');var sox=require(_0x216d('0x9'));var csv=require(_0x216d('0xa'));var ejs=require(_0x216d('0xb'));var fs=require('fs');var fs_extra=require(_0x216d('0xc'));var _=require(_0x216d('0xd'));var squel=require(_0x216d('0xe'));var crypto=require(_0x216d('0xf'));var jsforce=require(_0x216d('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x216d('0xa'));var querystring=require(_0x216d('0x11'));var Papa=require(_0x216d('0x12'));var Redis=require(_0x216d('0x13'));var authService=require(_0x216d('0x14'));var qs=require(_0x216d('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x216d('0x16'));var logger=require('../../config/logger')(_0x216d('0x17'));var utils=require(_0x216d('0x18'));var config=require(_0x216d('0x19'));var licenseUtil=require(_0x216d('0x1a'));var db=require(_0x216d('0x1b'))['db'];var integrations=require(_0x216d('0x1c'));function respondWithStatusCode(_0x4c92d9,_0xb36a43){_0xb36a43=_0xb36a43||0xcc;return function(_0x4c07d0){if(_0x4c07d0){return _0x4c92d9[_0x216d('0x1d')](_0xb36a43);}return _0x4c92d9[_0x216d('0x1e')](_0xb36a43)['end']();};}function respondWithResult(_0x165c19,_0x322e4b){_0x322e4b=_0x322e4b||0xc8;return function(_0x54a816){if(_0x54a816){return _0x165c19[_0x216d('0x1e')](_0x322e4b)['json'](_0x54a816);}};}function respondWithFilteredResult(_0x448c0d,_0xf571a4){return function(_0x4631b0){if(_0x4631b0){var _0x23ff86=typeof _0xf571a4[_0x216d('0x1f')]===_0x216d('0x20')&&typeof _0xf571a4[_0x216d('0x21')]===_0x216d('0x20');var _0x19fdac=_0x4631b0['count'];var _0x3b60dd=_0x23ff86?0x0:_0xf571a4['offset'];var _0x4ddc51=_0x23ff86?_0x4631b0[_0x216d('0x22')]:_0xf571a4[_0x216d('0x1f')]+_0xf571a4['limit'];var _0x3f32e0;if(_0x4ddc51>=_0x19fdac){_0x4ddc51=_0x19fdac;_0x3f32e0=0xc8;}else{_0x3f32e0=0xce;}_0x448c0d[_0x216d('0x1e')](_0x3f32e0);return _0x448c0d['set'](_0x216d('0x23'),_0x3b60dd+'-'+_0x4ddc51+'/'+_0x19fdac)[_0x216d('0x24')](_0x4631b0);}return null;};}function patchUpdates(_0x430e81){return function(_0x3e9818){try{jsonpatch['apply'](_0x3e9818,_0x430e81,!![]);}catch(_0x20ee7c){return BPromise[_0x216d('0x25')](_0x20ee7c);}return _0x3e9818[_0x216d('0x26')]();};}function saveUpdates(_0x438981,_0x206782){return function(_0x57cfbd){if(_0x57cfbd){return _0x57cfbd[_0x216d('0x27')](_0x438981)[_0x216d('0x28')](function(_0x188494){return _0x188494;});}return null;};}function removeEntity(_0x2880c6,_0x6fa4b3){return function(_0x54d96f){if(_0x54d96f){return _0x54d96f[_0x216d('0x29')]()[_0x216d('0x28')](function(){_0x2880c6[_0x216d('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ec8a7,_0x56460f){return function(_0x4c792e){if(!_0x4c792e){_0x4ec8a7['sendStatus'](0x194);}return _0x4c792e;};}function handleError(_0x32f240,_0x470d8a){_0x470d8a=_0x470d8a||0x1f4;return function(_0x189413){logger[_0x216d('0x2a')](_0x189413[_0x216d('0x2b')]);if(_0x189413['name']){delete _0x189413['name'];}_0x32f240[_0x216d('0x1e')](_0x470d8a)['send'](_0x189413);};}exports[_0x216d('0x2c')]=function(_0x42abbe,_0x10f7c6){var _0x20bc16={},_0x307f2b={},_0x12bcab={'count':0x0,'rows':[]};var _0x28fcc2=_[_0x216d('0x2d')](db[_0x216d('0x2e')][_0x216d('0x2f')],function(_0x11be90){return{'name':_0x11be90[_0x216d('0x30')],'type':_0x11be90[_0x216d('0x31')]['key']};});_0x307f2b[_0x216d('0x32')]=_[_0x216d('0x2d')](_0x28fcc2,_0x216d('0x33'));_0x307f2b['query']=_[_0x216d('0x34')](_0x42abbe[_0x216d('0x35')]);_0x307f2b[_0x216d('0x36')]=_[_0x216d('0x37')](_0x307f2b['model'],_0x307f2b[_0x216d('0x35')]);_0x20bc16[_0x216d('0x38')]=_[_0x216d('0x37')](_0x307f2b[_0x216d('0x32')],qs[_0x216d('0x39')](_0x42abbe[_0x216d('0x35')][_0x216d('0x39')]));_0x20bc16[_0x216d('0x38')]=_0x20bc16[_0x216d('0x38')][_0x216d('0x3a')]?_0x20bc16[_0x216d('0x38')]:_0x307f2b['model'];if(!_0x42abbe[_0x216d('0x35')][_0x216d('0x3b')](_0x216d('0x3c'))){_0x20bc16['limit']=qs[_0x216d('0x21')](_0x42abbe[_0x216d('0x35')]['limit']);_0x20bc16[_0x216d('0x1f')]=qs['offset'](_0x42abbe['query'][_0x216d('0x1f')]);}_0x20bc16[_0x216d('0x3d')]=qs[_0x216d('0x3e')](_0x42abbe[_0x216d('0x35')]['sort']);_0x20bc16['where']=qs['filters'](_[_0x216d('0x3f')](_0x42abbe[_0x216d('0x35')],_0x307f2b['filters']),_0x28fcc2);if(_0x42abbe[_0x216d('0x35')][_0x216d('0x40')]){_0x20bc16['where']=_[_0x216d('0x41')](_0x20bc16[_0x216d('0x42')],{'$or':_[_0x216d('0x2d')](_0x28fcc2,function(_0x474fab){if(_0x474fab[_0x216d('0x31')]!==_0x216d('0x43')){var _0x35cb6e={};_0x35cb6e[_0x474fab[_0x216d('0x33')]]={'$like':'%'+_0x42abbe['query']['filter']+'%'};return _0x35cb6e;}})});}_0x20bc16=_[_0x216d('0x41')]({},_0x20bc16,_0x42abbe[_0x216d('0x44')]);var _0x504a34={'where':_0x20bc16[_0x216d('0x42')]};return db[_0x216d('0x2e')][_0x216d('0x22')](_0x504a34)['then'](function(_0x2c3e44){_0x12bcab[_0x216d('0x22')]=_0x2c3e44;if(_0x42abbe[_0x216d('0x35')][_0x216d('0x45')]){_0x20bc16['include']=[{'all':!![]}];}return db[_0x216d('0x2e')][_0x216d('0x46')](_0x20bc16);})['then'](function(_0x37bf4a){_0x12bcab[_0x216d('0x47')]=_0x37bf4a;return _0x12bcab;})['then'](respondWithFilteredResult(_0x10f7c6,_0x20bc16))['catch'](handleError(_0x10f7c6,null));};exports[_0x216d('0x48')]=function(_0x440bc9,_0x3c491e){var _0x498efe={'raw':![],'where':{'id':_0x440bc9['params']['id']}},_0x3e361a={};_0x3e361a['model']=_[_0x216d('0x34')](db[_0x216d('0x2e')][_0x216d('0x2f')]);_0x3e361a['query']=_[_0x216d('0x34')](_0x440bc9['query']);_0x3e361a[_0x216d('0x36')]=_[_0x216d('0x37')](_0x3e361a[_0x216d('0x32')],_0x3e361a['query']);_0x498efe[_0x216d('0x38')]=_[_0x216d('0x37')](_0x3e361a[_0x216d('0x32')],qs[_0x216d('0x39')](_0x440bc9['query']['fields']));_0x498efe['attributes']=_0x498efe[_0x216d('0x38')][_0x216d('0x3a')]?_0x498efe[_0x216d('0x38')]:_0x3e361a[_0x216d('0x32')];if(_0x440bc9[_0x216d('0x35')][_0x216d('0x45')]){_0x498efe[_0x216d('0x49')]=[{'all':!![]}];}_0x498efe=_[_0x216d('0x41')]({},_0x498efe,_0x440bc9['options']);return db[_0x216d('0x2e')][_0x216d('0x4a')](_0x498efe)[_0x216d('0x28')](handleEntityNotFound(_0x3c491e,null))[_0x216d('0x28')](respondWithResult(_0x3c491e,null))['catch'](handleError(_0x3c491e,null));};exports[_0x216d('0x4b')]=function(_0x542e1b,_0x1f2fa5){return db[_0x216d('0x2e')][_0x216d('0x4b')](_0x542e1b['body'],{})['then'](respondWithResult(_0x1f2fa5,0xc9))[_0x216d('0x4c')](handleError(_0x1f2fa5,null));};exports[_0x216d('0x27')]=function(_0x3932a3,_0x1340fe){if(_0x3932a3[_0x216d('0x4d')]['id']){delete _0x3932a3[_0x216d('0x4d')]['id'];}return db['FreshdeskAccount']['find']({'where':{'id':_0x3932a3[_0x216d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1340fe,null))[_0x216d('0x28')](saveUpdates(_0x3932a3[_0x216d('0x4d')],null))['then'](respondWithResult(_0x1340fe,null))['catch'](handleError(_0x1340fe,null));};exports['destroy']=function(_0x4bac14,_0x1ae9b7){return db[_0x216d('0x2e')][_0x216d('0x4a')]({'where':{'id':_0x4bac14[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x1ae9b7,null))[_0x216d('0x28')](removeEntity(_0x1ae9b7,null))[_0x216d('0x4c')](handleError(_0x1ae9b7,null));};exports['getConfigurations']=function(_0x3f70c9,_0x34cdb9,_0x119b12){var _0x54dd49={};var _0x1e1caf={};var _0x10fe2e;var _0x2c7c67;return db[_0x216d('0x2e')]['findOne']({'where':{'id':_0x3f70c9[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x34cdb9,null))[_0x216d('0x28')](function(_0x1a4761){if(_0x1a4761){_0x10fe2e=_0x1a4761;_0x1e1caf['model']=_[_0x216d('0x34')](db[_0x216d('0x4f')]['rawAttributes']);_0x1e1caf[_0x216d('0x35')]=_['keys'](_0x3f70c9[_0x216d('0x35')]);_0x1e1caf[_0x216d('0x36')]=_[_0x216d('0x37')](_0x1e1caf[_0x216d('0x32')],_0x1e1caf[_0x216d('0x35')]);_0x54dd49[_0x216d('0x38')]=_[_0x216d('0x37')](_0x1e1caf[_0x216d('0x32')],qs[_0x216d('0x39')](_0x3f70c9['query'][_0x216d('0x39')]));_0x54dd49[_0x216d('0x38')]=_0x54dd49['attributes'][_0x216d('0x3a')]?_0x54dd49[_0x216d('0x38')]:_0x1e1caf['model'];_0x54dd49['order']=qs[_0x216d('0x3e')](_0x3f70c9['query'][_0x216d('0x3e')]);_0x54dd49[_0x216d('0x42')]=qs[_0x216d('0x36')](_['pick'](_0x3f70c9[_0x216d('0x35')],_0x1e1caf['filters']));if(_0x3f70c9['query'][_0x216d('0x40')]){_0x54dd49[_0x216d('0x42')]=_['merge'](_0x54dd49[_0x216d('0x42')],{'$or':_[_0x216d('0x2d')](_0x54dd49[_0x216d('0x38')],function(_0x3f9097){var _0x2ae667={};_0x2ae667[_0x3f9097]={'$like':'%'+_0x3f70c9[_0x216d('0x35')]['filter']+'%'};return _0x2ae667;})});}_0x54dd49=_['merge']({},_0x54dd49,_0x3f70c9[_0x216d('0x44')]);return _0x10fe2e[_0x216d('0x50')](_0x54dd49);}})[_0x216d('0x28')](function(_0x1551b6){if(_0x1551b6){_0x2c7c67=_0x1551b6[_0x216d('0x3a')];if(!_0x3f70c9[_0x216d('0x35')][_0x216d('0x3b')](_0x216d('0x3c'))){_0x54dd49[_0x216d('0x21')]=qs[_0x216d('0x21')](_0x3f70c9[_0x216d('0x35')][_0x216d('0x21')]);_0x54dd49['offset']=qs['offset'](_0x3f70c9[_0x216d('0x35')][_0x216d('0x1f')]);}return _0x10fe2e['getConfigurations'](_0x54dd49);}})[_0x216d('0x28')](function(_0x5eb684){if(_0x5eb684){return _0x5eb684?{'count':_0x2c7c67,'rows':_0x5eb684}:null;}})['then'](respondWithResult(_0x34cdb9,null))[_0x216d('0x4c')](handleError(_0x34cdb9,null));};exports[_0x216d('0x51')]=function(_0x20806e,_0x17ce26,_0x1d404c){if(_0x20806e[_0x216d('0x4d')]['id']){delete _0x20806e[_0x216d('0x4d')]['id'];}return db[_0x216d('0x2e')][_0x216d('0x52')]({'where':{'id':_0x20806e[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x17ce26,null))[_0x216d('0x28')](function(_0x19c7cf){if(_0x19c7cf){_0x20806e[_0x216d('0x4d')][_0x216d('0x53')]=_0x19c7cf['id'];_0x20806e[_0x216d('0x4d')][_0x216d('0x54')]=integrations[_0x216d('0x55')](_0x20806e[_0x216d('0x4d')][_0x216d('0x56')],_0x20806e[_0x216d('0x4d')][_0x216d('0x31')]);_0x20806e['body'][_0x216d('0x57')]=integrations['getDescriptions'](_0x20806e[_0x216d('0x4d')]['channel'],_0x20806e[_0x216d('0x4d')][_0x216d('0x31')]);return db['FreshdeskConfiguration'][_0x216d('0x4b')](_0x20806e[_0x216d('0x4d')],{'include':[{'model':db[_0x216d('0x58')],'as':_0x216d('0x54')},{'model':db[_0x216d('0x58')],'as':_0x216d('0x57')}]});}return null;})[_0x216d('0x28')](respondWithResult(_0x17ce26,null))[_0x216d('0x4c')](handleError(_0x17ce26,null));};exports[_0x216d('0x59')]=function(_0x5acc44,_0x120f8a,_0x299cc7){var _0x16cf09='';return db['FreshdeskAccount']['findOne']({'where':{'id':_0x5acc44['params']['id']},'attributes':['id','remoteUri',_0x216d('0x5a')]})['then'](handleEntityNotFound(_0x120f8a,null))[_0x216d('0x28')](function(_0x1184be){if(_0x1184be){_0x16cf09=_0x1184be[_0x216d('0x5b')];var _0x27ce4d=_0x16cf09[_0x216d('0x5c')](-0x1);if(_0x27ce4d==='/'){_0x16cf09=_0x16cf09[_0x216d('0x5d')](0x0,_0x16cf09[_0x216d('0x5e')](_0x27ce4d));}return rp({'method':_0x216d('0x5f'),'uri':util[_0x216d('0x60')]('%s/%s',_0x16cf09,_0x216d('0x61')),'headers':{'Authorization':util[_0x216d('0x60')]('Basic\x20%s',new Buffer(util[_0x216d('0x60')](_0x216d('0x62'),_0x1184be[_0x216d('0x5a')]))[_0x216d('0x63')](_0x216d('0x64')))},'json':!![]});}})[_0x216d('0x28')](function(_0x534b82){if(_0x534b82){var _0x4a66a3=[_0x216d('0x65'),'subject',_0x216d('0x66'),_0x216d('0x67'),_0x216d('0x1e'),'priority','group','source',_0x216d('0x68'),_0x216d('0x69'),_0x216d('0x6a')];_[_0x216d('0x6b')](_0x534b82,function(_0x55f251){return _0x4a66a3[_0x216d('0x6c')](_0x55f251[_0x216d('0x33')])||!_0x55f251[_0x216d('0x6d')]&&_0x55f251['type']!=='custom_text'&&_0x55f251[_0x216d('0x31')]!==_0x216d('0x6e');});return{'count':_0x534b82[_0x216d('0x3a')],'rows':_[_0x216d('0x2d')](_0x534b82,function(_0x3c26c6){return{'id':_0x3c26c6['name'],'name':_0x3c26c6[_0x216d('0x6f')],'custom':!_0x3c26c6[_0x216d('0x6d')],'options':_0x3c26c6[_0x216d('0x70')]?_[_0x216d('0x2d')](_0x3c26c6['choices'],function(_0x17f320){return{'name':_['capitalize'](_0x17f320),'value':_0x17f320};}):[]};})};}})[_0x216d('0x28')](respondWithResult(_0x120f8a,null))['catch'](function(_0x70f266){var _0x3ae6df=_0x5acc44[_0x216d('0x35')][_0x216d('0x71')]?0x1f4:_0x70f266[_0x216d('0x72')]||0x1f4;logger['error'](_0x216d('0x73'),'getFields',_0x3ae6df,JSON['stringify'](_0x70f266));delete _0x70f266['name'];if(_0x3ae6df===0x191){_0x3ae6df=0x190;}_0x120f8a['status'](_0x3ae6df)[_0x216d('0x74')](_0x5acc44[_0x216d('0x35')][_0x216d('0x71')]?{'message':'Wrong\x20credentials','statusCode':_0x70f266['statusCode']}:_0x70f266);});};
\ No newline at end of file
index 270f675..6169436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb06b=['bluebird','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','define','FreshdeskAccount','util','../../config/logger','api','moment'];(function(_0x1846ad,_0x406378){var _0x5cc614=function(_0x4adb69){while(--_0x4adb69){_0x1846ad['push'](_0x1846ad['shift']());}};_0x5cc614(++_0x406378);}(_0xb06b,0x188));var _0xbb06=function(_0x1aaff6,_0xc3a953){_0x1aaff6=_0x1aaff6-0x0;var _0x5656ab=_0xb06b[_0x1aaff6];return _0x5656ab;};'use strict';var _=require('lodash');var util=require(_0xbb06('0x0'));var logger=require(_0xbb06('0x1'))(_0xbb06('0x2'));var moment=require(_0xbb06('0x3'));var BPromise=require(_0xbb06('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb06('0x5'));var rimraf=require(_0xbb06('0x6'));var config=require(_0xbb06('0x7'));var attributes=require(_0xbb06('0x8'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0xc41e15,_0x388926){return _0xc41e15[_0xbb06('0x9')](_0xbb06('0xa'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xda12=['api','moment','bluebird','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','int_freshdesk_accounts','lodash','../../config/logger'];(function(_0x378720,_0xa711f1){var _0x47920a=function(_0xc5056){while(--_0xc5056){_0x378720['push'](_0x378720['shift']());}};_0x47920a(++_0xa711f1);}(_0xda12,0xf5));var _0x2da1=function(_0x44946b,_0xf874ec){_0x44946b=_0x44946b-0x0;var _0x249bc4=_0xda12[_0x44946b];return _0x249bc4;};'use strict';var _=require(_0x2da1('0x0'));var util=require('util');var logger=require(_0x2da1('0x1'))(_0x2da1('0x2'));var moment=require(_0x2da1('0x3'));var BPromise=require(_0x2da1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2da1('0x5'));var rimraf=require(_0x2da1('0x6'));var config=require(_0x2da1('0x7'));var attributes=require(_0x2da1('0x8'));var integrations=require(_0x2da1('0x9'));module[_0x2da1('0xa')]=function(_0x4ec5d4,_0x49b888){return _0x4ec5d4[_0x2da1('0xb')]('FreshdeskAccount',attributes,{'tableName':_0x2da1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e316332..592cfd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3893=['message','result','catch','GetFreshdeskAccount','FreshdeskAccount','options','raw','where','attributes','include','model','map','ShowFreshdeskAccount','find','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x55ffa8,_0x254939){var _0x2f75db=function(_0x1f8cee){while(--_0x1f8cee){_0x55ffa8['push'](_0x55ffa8['shift']());}};_0x2f75db(++_0x254939);}(_0x3893,0x1a1));var _0x3389=function(_0x19bdf5,_0x3a6395){_0x19bdf5=_0x19bdf5-0x0;var _0x140930=_0x3893[_0x19bdf5];return _0x140930;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3389('0x0'));var BPromise=require(_0x3389('0x1'));var rs=require(_0x3389('0x2'));var fs=require('fs');var Redis=require(_0x3389('0x3'));var db=require(_0x3389('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3389('0x5'));var config=require(_0x3389('0x6'));var jayson=require(_0x3389('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x459ba0,_0x34ec6b,_0x34a221){return new BPromise(function(_0x51e1d8,_0x1ffafa){return client[_0x3389('0x8')](_0x459ba0,_0x34a221)[_0x3389('0x9')](function(_0x5a7bac){logger[_0x3389('0xa')](_0x3389('0xb'),_0x34ec6b,_0x3389('0xc'));logger[_0x3389('0xd')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x34ec6b,_0x3389('0xc'),JSON[_0x3389('0xe')](_0x5a7bac));if(_0x5a7bac[_0x3389('0xf')]){if(_0x5a7bac[_0x3389('0xf')][_0x3389('0x10')]===0x1f4){logger[_0x3389('0xf')]('FreshdeskAccount,\x20%s,\x20%s',_0x34ec6b,_0x5a7bac[_0x3389('0xf')][_0x3389('0x11')]);return _0x1ffafa(_0x5a7bac[_0x3389('0xf')][_0x3389('0x11')]);}logger[_0x3389('0xf')](_0x3389('0xb'),_0x34ec6b,_0x5a7bac[_0x3389('0xf')][_0x3389('0x11')]);return _0x51e1d8(_0x5a7bac[_0x3389('0xf')][_0x3389('0x11')]);}else{logger['info'](_0x3389('0xb'),_0x34ec6b,'request\x20sent');_0x51e1d8(_0x5a7bac[_0x3389('0x12')][_0x3389('0x11')]);}})[_0x3389('0x13')](function(_0x1b0a70){logger[_0x3389('0xf')](_0x3389('0xb'),_0x34ec6b,_0x1b0a70);_0x1ffafa(_0x1b0a70);});});}exports[_0x3389('0x14')]=function(_0x324509){var _0x38b9b6=this;return new Promise(function(_0x312e2f,_0xb94f15){return db[_0x3389('0x15')]['findAll']({'raw':_0x324509[_0x3389('0x16')]?_0x324509[_0x3389('0x16')][_0x3389('0x17')]===undefined?!![]:![]:!![],'where':_0x324509[_0x3389('0x16')]?_0x324509[_0x3389('0x16')][_0x3389('0x18')]||null:null,'attributes':_0x324509[_0x3389('0x16')]?_0x324509[_0x3389('0x16')][_0x3389('0x19')]||null:null,'limit':_0x324509[_0x3389('0x16')]?_0x324509[_0x3389('0x16')]['limit']||null:null,'include':_0x324509['options']?_0x324509[_0x3389('0x16')]['include']?_['map'](_0x324509[_0x3389('0x16')][_0x3389('0x1a')],function(_0x3cc58d){return{'model':db[_0x3cc58d[_0x3389('0x1b')]],'as':_0x3cc58d['as'],'attributes':_0x3cc58d[_0x3389('0x19')],'include':_0x3cc58d[_0x3389('0x1a')]?_['map'](_0x3cc58d[_0x3389('0x1a')],function(_0x37a672){return{'model':db[_0x37a672[_0x3389('0x1b')]],'as':_0x37a672['as'],'attributes':_0x37a672[_0x3389('0x19')],'include':_0x37a672['include']?_[_0x3389('0x1c')](_0x37a672[_0x3389('0x1a')],function(_0xc995ad){return{'model':db[_0xc995ad[_0x3389('0x1b')]],'as':_0xc995ad['as'],'attributes':_0xc995ad['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a9cf1){logger[_0x3389('0xa')](_0x3389('0x14'),_0x324509);logger[_0x3389('0xd')](_0x3389('0x14'),_0x324509,JSON[_0x3389('0xe')](_0x1a9cf1));_0x312e2f(_0x1a9cf1);})['catch'](function(_0x3a0c72){logger[_0x3389('0xf')](_0x3389('0x14'),_0x3a0c72[_0x3389('0x11')],_0x324509);_0xb94f15(_0x38b9b6['error'](0x1f4,_0x3a0c72[_0x3389('0x11')]));});});};exports[_0x3389('0x1d')]=function(_0x3c1947){var _0x57a15a=this;return new Promise(function(_0x3eeaf0,_0x583a40){return db['FreshdeskAccount'][_0x3389('0x1e')]({'raw':_0x3c1947[_0x3389('0x16')]?_0x3c1947[_0x3389('0x16')][_0x3389('0x17')]===undefined?!![]:![]:!![],'where':_0x3c1947[_0x3389('0x16')]?_0x3c1947[_0x3389('0x16')][_0x3389('0x18')]||null:null,'attributes':_0x3c1947[_0x3389('0x16')]?_0x3c1947[_0x3389('0x16')][_0x3389('0x19')]||null:null,'include':_0x3c1947[_0x3389('0x16')]?_0x3c1947[_0x3389('0x16')][_0x3389('0x1a')]?_[_0x3389('0x1c')](_0x3c1947[_0x3389('0x16')][_0x3389('0x1a')],function(_0xc3296f){return{'model':db[_0xc3296f[_0x3389('0x1b')]],'as':_0xc3296f['as'],'attributes':_0xc3296f['attributes'],'include':_0xc3296f[_0x3389('0x1a')]?_[_0x3389('0x1c')](_0xc3296f['include'],function(_0x4e0759){return{'model':db[_0x4e0759['model']],'as':_0x4e0759['as'],'attributes':_0x4e0759['attributes'],'include':_0x4e0759['include']?_[_0x3389('0x1c')](_0x4e0759['include'],function(_0x3509a0){return{'model':db[_0x3509a0['model']],'as':_0x3509a0['as'],'attributes':_0x3509a0[_0x3389('0x19')]};}):[]};}):[]};}):[]:[]})[_0x3389('0x9')](function(_0x41e75e){logger[_0x3389('0xa')](_0x3389('0x1d'),_0x3c1947);logger['debug']('ShowFreshdeskAccount',_0x3c1947,JSON['stringify'](_0x41e75e));_0x3eeaf0(_0x41e75e);})[_0x3389('0x13')](function(_0x42f815){logger['error'](_0x3389('0x1d'),_0x42f815['message'],_0x3c1947);_0x583a40(_0x57a15a[_0x3389('0xf')](0x1f4,_0x42f815[_0x3389('0x11')]));});});};
\ No newline at end of file
+var _0x8d1f=['find','util','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','request','then','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','GetFreshdeskAccount','options','raw','where','attributes','limit','include','model','map','stringify','ShowFreshdeskAccount','FreshdeskAccount'];(function(_0x5b2861,_0x3fa9c1){var _0x1aae6e=function(_0x5d1230){while(--_0x5d1230){_0x5b2861['push'](_0x5b2861['shift']());}};_0x1aae6e(++_0x3fa9c1);}(_0x8d1f,0x137));var _0xf8d1=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x8d1f[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0xf8d1('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xf8d1('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf8d1('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xf8d1('0x3'))('rpc');var config=require(_0xf8d1('0x4'));var jayson=require(_0xf8d1('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1a4125,_0xeab5b1,_0x117924){return new BPromise(function(_0x1fab63,_0x423f1){return client[_0xf8d1('0x6')](_0x1a4125,_0x117924)[_0xf8d1('0x7')](function(_0x143a50){logger['info'](_0xf8d1('0x8'),_0xeab5b1,_0xf8d1('0x9'));logger[_0xf8d1('0xa')](_0xf8d1('0xb'),_0xeab5b1,_0xf8d1('0x9'),JSON['stringify'](_0x143a50));if(_0x143a50[_0xf8d1('0xc')]){if(_0x143a50[_0xf8d1('0xc')][_0xf8d1('0xd')]===0x1f4){logger[_0xf8d1('0xc')](_0xf8d1('0x8'),_0xeab5b1,_0x143a50[_0xf8d1('0xc')][_0xf8d1('0xe')]);return _0x423f1(_0x143a50[_0xf8d1('0xc')]['message']);}logger[_0xf8d1('0xc')]('FreshdeskAccount,\x20%s,\x20%s',_0xeab5b1,_0x143a50['error']['message']);return _0x1fab63(_0x143a50[_0xf8d1('0xc')][_0xf8d1('0xe')]);}else{logger[_0xf8d1('0xf')](_0xf8d1('0x8'),_0xeab5b1,_0xf8d1('0x9'));_0x1fab63(_0x143a50[_0xf8d1('0x10')]['message']);}})[_0xf8d1('0x11')](function(_0x320a3f){logger[_0xf8d1('0xc')](_0xf8d1('0x8'),_0xeab5b1,_0x320a3f);_0x423f1(_0x320a3f);});});}exports[_0xf8d1('0x12')]=function(_0xba9738){var _0xfd74ed=this;return new Promise(function(_0x13a158,_0x5c9ace){return db['FreshdeskAccount']['findAll']({'raw':_0xba9738[_0xf8d1('0x13')]?_0xba9738[_0xf8d1('0x13')][_0xf8d1('0x14')]===undefined?!![]:![]:!![],'where':_0xba9738[_0xf8d1('0x13')]?_0xba9738[_0xf8d1('0x13')][_0xf8d1('0x15')]||null:null,'attributes':_0xba9738[_0xf8d1('0x13')]?_0xba9738[_0xf8d1('0x13')][_0xf8d1('0x16')]||null:null,'limit':_0xba9738[_0xf8d1('0x13')]?_0xba9738['options'][_0xf8d1('0x17')]||null:null,'include':_0xba9738[_0xf8d1('0x13')]?_0xba9738[_0xf8d1('0x13')]['include']?_['map'](_0xba9738['options'][_0xf8d1('0x18')],function(_0x5e466c){return{'model':db[_0x5e466c[_0xf8d1('0x19')]],'as':_0x5e466c['as'],'attributes':_0x5e466c[_0xf8d1('0x16')],'include':_0x5e466c[_0xf8d1('0x18')]?_[_0xf8d1('0x1a')](_0x5e466c[_0xf8d1('0x18')],function(_0x14c1ca){return{'model':db[_0x14c1ca[_0xf8d1('0x19')]],'as':_0x14c1ca['as'],'attributes':_0x14c1ca[_0xf8d1('0x16')],'include':_0x14c1ca[_0xf8d1('0x18')]?_[_0xf8d1('0x1a')](_0x14c1ca[_0xf8d1('0x18')],function(_0x5fd118){return{'model':db[_0x5fd118[_0xf8d1('0x19')]],'as':_0x5fd118['as'],'attributes':_0x5fd118[_0xf8d1('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3163fe){logger[_0xf8d1('0xf')](_0xf8d1('0x12'),_0xba9738);logger[_0xf8d1('0xa')](_0xf8d1('0x12'),_0xba9738,JSON[_0xf8d1('0x1b')](_0x3163fe));_0x13a158(_0x3163fe);})['catch'](function(_0x1d8b96){logger[_0xf8d1('0xc')](_0xf8d1('0x12'),_0x1d8b96[_0xf8d1('0xe')],_0xba9738);_0x5c9ace(_0xfd74ed[_0xf8d1('0xc')](0x1f4,_0x1d8b96[_0xf8d1('0xe')]));});});};exports[_0xf8d1('0x1c')]=function(_0x3d0b27){var _0x1f1895=this;return new Promise(function(_0x1a2135,_0x5c5dae){return db[_0xf8d1('0x1d')][_0xf8d1('0x1e')]({'raw':_0x3d0b27['options']?_0x3d0b27[_0xf8d1('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x3d0b27[_0xf8d1('0x13')]?_0x3d0b27[_0xf8d1('0x13')][_0xf8d1('0x15')]||null:null,'attributes':_0x3d0b27[_0xf8d1('0x13')]?_0x3d0b27[_0xf8d1('0x13')]['attributes']||null:null,'include':_0x3d0b27['options']?_0x3d0b27[_0xf8d1('0x13')][_0xf8d1('0x18')]?_['map'](_0x3d0b27[_0xf8d1('0x13')]['include'],function(_0x5f31a6){return{'model':db[_0x5f31a6[_0xf8d1('0x19')]],'as':_0x5f31a6['as'],'attributes':_0x5f31a6[_0xf8d1('0x16')],'include':_0x5f31a6[_0xf8d1('0x18')]?_[_0xf8d1('0x1a')](_0x5f31a6[_0xf8d1('0x18')],function(_0x59bcc9){return{'model':db[_0x59bcc9['model']],'as':_0x59bcc9['as'],'attributes':_0x59bcc9[_0xf8d1('0x16')],'include':_0x59bcc9[_0xf8d1('0x18')]?_[_0xf8d1('0x1a')](_0x59bcc9[_0xf8d1('0x18')],function(_0xb33b94){return{'model':db[_0xb33b94['model']],'as':_0xb33b94['as'],'attributes':_0xb33b94[_0xf8d1('0x16')]};}):[]};}):[]};}):[]:[]})[_0xf8d1('0x7')](function(_0xc4c88d){logger['info']('ShowFreshdeskAccount',_0x3d0b27);logger[_0xf8d1('0xa')]('ShowFreshdeskAccount',_0x3d0b27,JSON[_0xf8d1('0x1b')](_0xc4c88d));_0x1a2135(_0xc4c88d);})[_0xf8d1('0x11')](function(_0x413f30){logger[_0xf8d1('0xc')](_0xf8d1('0x1c'),_0x413f30['message'],_0x3d0b27);_0x5c5dae(_0x1f1895[_0xf8d1('0xc')](0x1f4,_0x413f30[_0xf8d1('0xe')]));});});};
\ No newline at end of file
index df3c685..d6fe815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fa8=['setTags','put','/:id','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','get','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getTags','create','post','/:id/tags'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0x6fa8,0x6d));var _0x86fa=function(_0x2dfe1c,_0x52165a){_0x2dfe1c=_0x2dfe1c-0x0;var _0x251ca2=_0x6fa8[_0x2dfe1c];return _0x251ca2;};'use strict';var multer=require(_0x86fa('0x0'));var util=require(_0x86fa('0x1'));var path=require(_0x86fa('0x2'));var timeout=require('connect-timeout');var express=require(_0x86fa('0x3'));var router=express[_0x86fa('0x4')]();var fs_extra=require(_0x86fa('0x5'));var auth=require(_0x86fa('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x86fa('0x7'));var controller=require(_0x86fa('0x8'));router['get']('/',auth[_0x86fa('0x9')](),controller[_0x86fa('0xa')]);router[_0x86fa('0xb')]('/:id',auth[_0x86fa('0x9')](),controller[_0x86fa('0xc')]);router[_0x86fa('0xb')]('/:id/fields',auth[_0x86fa('0x9')](),controller[_0x86fa('0xd')]);router[_0x86fa('0xb')](_0x86fa('0xe'),auth[_0x86fa('0x9')](),controller[_0x86fa('0xf')]);router[_0x86fa('0xb')](_0x86fa('0x10'),auth[_0x86fa('0x9')](),controller['getDescriptions']);router['get']('/:id/tags',auth['isAuthenticated'](),controller[_0x86fa('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x86fa('0x12')]);router[_0x86fa('0x13')](_0x86fa('0x14'),auth[_0x86fa('0x9')](),controller[_0x86fa('0x15')]);router[_0x86fa('0x16')](_0x86fa('0x17'),auth[_0x86fa('0x9')](),controller['update']);router['delete'](_0x86fa('0x17'),auth[_0x86fa('0x9')](),controller[_0x86fa('0x18')]);module[_0x86fa('0x19')]=router;
\ No newline at end of file
+var _0x6281=['/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6281,0x87));var _0x1628=function(_0x371d83,_0x49a0ce){_0x371d83=_0x371d83-0x0;var _0x27a8b8=_0x6281[_0x371d83];return _0x27a8b8;};'use strict';var multer=require(_0x1628('0x0'));var util=require('util');var path=require(_0x1628('0x1'));var timeout=require(_0x1628('0x2'));var express=require(_0x1628('0x3'));var router=express[_0x1628('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1628('0x5'));var config=require('../../config/environment');var controller=require(_0x1628('0x6'));router[_0x1628('0x7')]('/',auth[_0x1628('0x8')](),controller['index']);router['get']('/:id',auth[_0x1628('0x8')](),controller['show']);router[_0x1628('0x7')](_0x1628('0x9'),auth['isAuthenticated'](),controller[_0x1628('0xa')]);router[_0x1628('0x7')](_0x1628('0xb'),auth[_0x1628('0x8')](),controller[_0x1628('0xc')]);router[_0x1628('0x7')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x1628('0xd')]);router[_0x1628('0x7')](_0x1628('0xe'),auth[_0x1628('0x8')](),controller[_0x1628('0xf')]);router[_0x1628('0x10')]('/',auth[_0x1628('0x8')](),controller[_0x1628('0x11')]);router[_0x1628('0x10')]('/:id/tags',auth[_0x1628('0x8')](),controller[_0x1628('0x12')]);router['put'](_0x1628('0x13'),auth[_0x1628('0x8')](),controller[_0x1628('0x14')]);router[_0x1628('0x15')](_0x1628('0x13'),auth['isAuthenticated'](),controller[_0x1628('0x16')]);module[_0x1628('0x17')]=router;
\ No newline at end of file
index 789e4de..5630bd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb54=['exports','STRING','sequelize'];(function(_0x446789,_0x40aa74){var _0x534e45=function(_0x3b9809){while(--_0x3b9809){_0x446789['push'](_0x446789['shift']());}};_0x534e45(++_0x40aa74);}(_0xbb54,0x15b));var _0x4bb5=function(_0x1b1f88,_0x3fe1cb){_0x1b1f88=_0x1b1f88-0x0;var _0x5045b9=_0xbb54[_0x1b1f88];return _0x5045b9;};'use strict';var Sequelize=require(_0x4bb5('0x0'));module[_0x4bb5('0x1')]={'name':{'type':Sequelize[_0x4bb5('0x2')]},'description':{'type':Sequelize[_0x4bb5('0x2')]}};
\ No newline at end of file
+var _0x2321=['sequelize','STRING'];(function(_0x17e990,_0x45d0d3){var _0x38c5c9=function(_0x5f3249){while(--_0x5f3249){_0x17e990['push'](_0x17e990['shift']());}};_0x38c5c9(++_0x45d0d3);}(_0x2321,0xfe));var _0x1232=function(_0x26b80e,_0x5c9333){_0x26b80e=_0x26b80e-0x0;var _0x84a8a8=_0x2321[_0x26b80e];return _0x84a8a8;};'use strict';var Sequelize=require(_0x1232('0x0'));module['exports']={'name':{'type':Sequelize[_0x1232('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4e2c7ec..bd24c6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabd2=['stack','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getFields','findOne','FreshdeskField','order','getSubjects','getDescriptions','Tag','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','save','destroy','then','error'];(function(_0x5f3bab,_0x396aae){var _0x57d769=function(_0x54ed1b){while(--_0x54ed1b){_0x5f3bab['push'](_0x5f3bab['shift']());}};_0x57d769(++_0x396aae);}(_0xabd2,0x81));var _0x2abd=function(_0x224528,_0x4956f9){_0x224528=_0x224528-0x0;var _0xc378a8=_0xabd2[_0x224528];return _0xc378a8;};'use strict';var emlformat=require(_0x2abd('0x0'));var rimraf=require(_0x2abd('0x1'));var zipdir=require(_0x2abd('0x2'));var jsonpatch=require(_0x2abd('0x3'));var rp=require(_0x2abd('0x4'));var moment=require(_0x2abd('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2abd('0x6'));var util=require(_0x2abd('0x7'));var path=require(_0x2abd('0x8'));var sox=require(_0x2abd('0x9'));var csv=require(_0x2abd('0xa'));var ejs=require(_0x2abd('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2abd('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2abd('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2abd('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2abd('0xe'));var authService=require(_0x2abd('0xf'));var qs=require(_0x2abd('0x10'));var as=require(_0x2abd('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2abd('0x12'))(_0x2abd('0x13'));var utils=require('../../config/utils');var config=require(_0x2abd('0x14'));var licenseUtil=require(_0x2abd('0x15'));var db=require(_0x2abd('0x16'))['db'];function respondWithStatusCode(_0x38b24a,_0x597c7d){_0x597c7d=_0x597c7d||0xcc;return function(_0x4ee1f3){if(_0x4ee1f3){return _0x38b24a['sendStatus'](_0x597c7d);}return _0x38b24a[_0x2abd('0x17')](_0x597c7d)[_0x2abd('0x18')]();};}function respondWithResult(_0x17e2d4,_0x2082af){_0x2082af=_0x2082af||0xc8;return function(_0x2f27cf){if(_0x2f27cf){return _0x17e2d4[_0x2abd('0x17')](_0x2082af)[_0x2abd('0x19')](_0x2f27cf);}};}function respondWithFilteredResult(_0x4a814f,_0x517cc2){return function(_0xd1fd3c){if(_0xd1fd3c){var _0x4e67ad=typeof _0x517cc2['offset']===_0x2abd('0x1a')&&typeof _0x517cc2['limit']==='undefined';var _0x4748f7=_0xd1fd3c[_0x2abd('0x1b')];var _0x4a6fdd=_0x4e67ad?0x0:_0x517cc2[_0x2abd('0x1c')];var _0x56aa65=_0x4e67ad?_0xd1fd3c[_0x2abd('0x1b')]:_0x517cc2[_0x2abd('0x1c')]+_0x517cc2['limit'];var _0x5ba1df;if(_0x56aa65>=_0x4748f7){_0x56aa65=_0x4748f7;_0x5ba1df=0xc8;}else{_0x5ba1df=0xce;}_0x4a814f[_0x2abd('0x17')](_0x5ba1df);return _0x4a814f[_0x2abd('0x1d')](_0x2abd('0x1e'),_0x4a6fdd+'-'+_0x56aa65+'/'+_0x4748f7)[_0x2abd('0x19')](_0xd1fd3c);}return null;};}function patchUpdates(_0x7abb12){return function(_0xa2833){try{jsonpatch[_0x2abd('0x1f')](_0xa2833,_0x7abb12,!![]);}catch(_0x4e988c){return BPromise[_0x2abd('0x20')](_0x4e988c);}return _0xa2833[_0x2abd('0x21')]();};}function saveUpdates(_0x3e6ad5,_0x48e4c8){return function(_0x32b43c){if(_0x32b43c){return _0x32b43c['update'](_0x3e6ad5)['then'](function(_0x2ee3d4){return _0x2ee3d4;});}return null;};}function removeEntity(_0x1d39ce,_0x27f975){return function(_0x357504){if(_0x357504){return _0x357504[_0x2abd('0x22')]()[_0x2abd('0x23')](function(){_0x1d39ce[_0x2abd('0x17')](0xcc)[_0x2abd('0x18')]();});}};}function handleEntityNotFound(_0xd09532,_0x520a6f){return function(_0x3778b7){if(!_0x3778b7){_0xd09532['sendStatus'](0x194);}return _0x3778b7;};}function handleError(_0xe05496,_0x24d006){_0x24d006=_0x24d006||0x1f4;return function(_0x481b88){logger[_0x2abd('0x24')](_0x481b88[_0x2abd('0x25')]);if(_0x481b88[_0x2abd('0x26')]){delete _0x481b88[_0x2abd('0x26')];}_0xe05496[_0x2abd('0x17')](_0x24d006)[_0x2abd('0x27')](_0x481b88);};}exports[_0x2abd('0x28')]=function(_0x8880ee,_0x471db4){var _0x58f9a9={},_0x1df5c9={},_0x1a994b={'count':0x0,'rows':[]};var _0xf5b4f3=_['map'](db[_0x2abd('0x29')][_0x2abd('0x2a')],function(_0x50545a){return{'name':_0x50545a[_0x2abd('0x2b')],'type':_0x50545a[_0x2abd('0x2c')][_0x2abd('0x2d')]};});_0x1df5c9[_0x2abd('0x2e')]=_[_0x2abd('0x2f')](_0xf5b4f3,_0x2abd('0x26'));_0x1df5c9[_0x2abd('0x30')]=_[_0x2abd('0x31')](_0x8880ee[_0x2abd('0x30')]);_0x1df5c9[_0x2abd('0x32')]=_[_0x2abd('0x33')](_0x1df5c9[_0x2abd('0x2e')],_0x1df5c9[_0x2abd('0x30')]);_0x58f9a9[_0x2abd('0x34')]=_[_0x2abd('0x33')](_0x1df5c9['model'],qs[_0x2abd('0x35')](_0x8880ee[_0x2abd('0x30')][_0x2abd('0x35')]));_0x58f9a9[_0x2abd('0x34')]=_0x58f9a9['attributes'][_0x2abd('0x36')]?_0x58f9a9[_0x2abd('0x34')]:_0x1df5c9[_0x2abd('0x2e')];if(!_0x8880ee[_0x2abd('0x30')][_0x2abd('0x37')](_0x2abd('0x38'))){_0x58f9a9[_0x2abd('0x39')]=qs[_0x2abd('0x39')](_0x8880ee[_0x2abd('0x30')][_0x2abd('0x39')]);_0x58f9a9['offset']=qs[_0x2abd('0x1c')](_0x8880ee[_0x2abd('0x30')][_0x2abd('0x1c')]);}_0x58f9a9['order']=qs[_0x2abd('0x3a')](_0x8880ee['query'][_0x2abd('0x3a')]);_0x58f9a9[_0x2abd('0x3b')]=qs[_0x2abd('0x32')](_[_0x2abd('0x3c')](_0x8880ee[_0x2abd('0x30')],_0x1df5c9[_0x2abd('0x32')]),_0xf5b4f3);if(_0x8880ee[_0x2abd('0x30')][_0x2abd('0x3d')]){_0x58f9a9[_0x2abd('0x3b')]=_[_0x2abd('0x3e')](_0x58f9a9['where'],{'$or':_[_0x2abd('0x2f')](_0xf5b4f3,function(_0x21d582){if(_0x21d582['type']!=='VIRTUAL'){var _0x2845a9={};_0x2845a9[_0x21d582['name']]={'$like':'%'+_0x8880ee[_0x2abd('0x30')]['filter']+'%'};return _0x2845a9;}})});}_0x58f9a9=_[_0x2abd('0x3e')]({},_0x58f9a9,_0x8880ee[_0x2abd('0x3f')]);var _0x36d643={'where':_0x58f9a9[_0x2abd('0x3b')]};return db[_0x2abd('0x29')][_0x2abd('0x1b')](_0x36d643)[_0x2abd('0x23')](function(_0x27ca4e){_0x1a994b[_0x2abd('0x1b')]=_0x27ca4e;if(_0x8880ee['query'][_0x2abd('0x40')]){_0x58f9a9[_0x2abd('0x41')]=[{'all':!![]}];}return db[_0x2abd('0x29')][_0x2abd('0x42')](_0x58f9a9);})[_0x2abd('0x23')](function(_0x272b3a){_0x1a994b[_0x2abd('0x43')]=_0x272b3a;return _0x1a994b;})[_0x2abd('0x23')](respondWithFilteredResult(_0x471db4,_0x58f9a9))[_0x2abd('0x44')](handleError(_0x471db4,null));};exports[_0x2abd('0x45')]=function(_0x23b93f,_0x25b6a0){var _0x4b312b={'raw':![],'where':{'id':_0x23b93f[_0x2abd('0x46')]['id']}},_0x427159={};_0x427159[_0x2abd('0x2e')]=_[_0x2abd('0x31')](db[_0x2abd('0x29')]['rawAttributes']);_0x427159[_0x2abd('0x30')]=_[_0x2abd('0x31')](_0x23b93f[_0x2abd('0x30')]);_0x427159['filters']=_[_0x2abd('0x33')](_0x427159[_0x2abd('0x2e')],_0x427159['query']);_0x4b312b[_0x2abd('0x34')]=_['intersection'](_0x427159['model'],qs[_0x2abd('0x35')](_0x23b93f[_0x2abd('0x30')][_0x2abd('0x35')]));_0x4b312b[_0x2abd('0x34')]=_0x4b312b[_0x2abd('0x34')]['length']?_0x4b312b[_0x2abd('0x34')]:_0x427159[_0x2abd('0x2e')];if(_0x23b93f[_0x2abd('0x30')][_0x2abd('0x40')]){_0x4b312b['include']=[{'all':!![]}];}_0x4b312b=_[_0x2abd('0x3e')]({},_0x4b312b,_0x23b93f['options']);return db['FreshdeskConfiguration'][_0x2abd('0x47')](_0x4b312b)[_0x2abd('0x23')](handleEntityNotFound(_0x25b6a0,null))[_0x2abd('0x23')](respondWithResult(_0x25b6a0,null))[_0x2abd('0x44')](handleError(_0x25b6a0,null));};exports['create']=function(_0x4cff1b,_0x180afa){return db[_0x2abd('0x29')][_0x2abd('0x48')](_0x4cff1b[_0x2abd('0x49')],{})[_0x2abd('0x23')](respondWithResult(_0x180afa,0xc9))[_0x2abd('0x44')](handleError(_0x180afa,null));};exports['update']=function(_0x3257fd,_0x34ccd4){if(_0x3257fd['body']['id']){delete _0x3257fd[_0x2abd('0x49')]['id'];}return db[_0x2abd('0x29')][_0x2abd('0x47')]({'where':{'id':_0x3257fd[_0x2abd('0x46')]['id']}})[_0x2abd('0x23')](handleEntityNotFound(_0x34ccd4,null))[_0x2abd('0x23')](saveUpdates(_0x3257fd['body'],null))[_0x2abd('0x23')](respondWithResult(_0x34ccd4,null))[_0x2abd('0x44')](handleError(_0x34ccd4,null));};exports['destroy']=function(_0x358504,_0x12f4fd){return db[_0x2abd('0x29')][_0x2abd('0x47')]({'where':{'id':_0x358504[_0x2abd('0x46')]['id']}})[_0x2abd('0x23')](handleEntityNotFound(_0x12f4fd,null))['then'](removeEntity(_0x12f4fd,null))['catch'](handleError(_0x12f4fd,null));};exports[_0x2abd('0x4a')]=function(_0x3097b3,_0x32e133,_0x3d60ea){var _0x48119e={};var _0xa6e718={};var _0x1d6729;var _0x3e8131;return db[_0x2abd('0x29')][_0x2abd('0x4b')]({'where':{'id':_0x3097b3[_0x2abd('0x46')]['id']}})['then'](handleEntityNotFound(_0x32e133,null))['then'](function(_0x55f65d){if(_0x55f65d){_0x1d6729=_0x55f65d;_0xa6e718[_0x2abd('0x2e')]=_['keys'](db[_0x2abd('0x4c')][_0x2abd('0x2a')]);_0xa6e718['query']=_[_0x2abd('0x31')](_0x3097b3[_0x2abd('0x30')]);_0xa6e718[_0x2abd('0x32')]=_[_0x2abd('0x33')](_0xa6e718['model'],_0xa6e718[_0x2abd('0x30')]);_0x48119e[_0x2abd('0x34')]=_[_0x2abd('0x33')](_0xa6e718['model'],qs[_0x2abd('0x35')](_0x3097b3[_0x2abd('0x30')][_0x2abd('0x35')]));_0x48119e[_0x2abd('0x34')]=_0x48119e['attributes']['length']?_0x48119e[_0x2abd('0x34')]:_0xa6e718['model'];_0x48119e[_0x2abd('0x4d')]=qs[_0x2abd('0x3a')](_0x3097b3[_0x2abd('0x30')]['sort']);_0x48119e[_0x2abd('0x3b')]=qs['filters'](_[_0x2abd('0x3c')](_0x3097b3[_0x2abd('0x30')],_0xa6e718[_0x2abd('0x32')]));if(_0x3097b3['query']['filter']){_0x48119e[_0x2abd('0x3b')]=_['merge'](_0x48119e[_0x2abd('0x3b')],{'$or':_['map'](_0x48119e[_0x2abd('0x34')],function(_0x16c2d7){var _0x27cd59={};_0x27cd59[_0x16c2d7]={'$like':'%'+_0x3097b3[_0x2abd('0x30')]['filter']+'%'};return _0x27cd59;})});}_0x48119e=_[_0x2abd('0x3e')]({},_0x48119e,_0x3097b3['options']);return _0x1d6729[_0x2abd('0x4a')](_0x48119e);}})[_0x2abd('0x23')](function(_0x4ab2cc){if(_0x4ab2cc){_0x3e8131=_0x4ab2cc['length'];if(!_0x3097b3[_0x2abd('0x30')][_0x2abd('0x37')]('nolimit')){_0x48119e[_0x2abd('0x39')]=qs[_0x2abd('0x39')](_0x3097b3[_0x2abd('0x30')]['limit']);_0x48119e[_0x2abd('0x1c')]=qs[_0x2abd('0x1c')](_0x3097b3[_0x2abd('0x30')][_0x2abd('0x1c')]);}return _0x1d6729['getFields'](_0x48119e);}})[_0x2abd('0x23')](function(_0x2c9226){if(_0x2c9226){return _0x2c9226?{'count':_0x3e8131,'rows':_0x2c9226}:null;}})[_0x2abd('0x23')](respondWithResult(_0x32e133,null))[_0x2abd('0x44')](handleError(_0x32e133,null));};exports[_0x2abd('0x4e')]=function(_0x4dccfc,_0xcda9cf,_0x3536ad){var _0x184927={};var _0x3530f4={};var _0xe8dbe8;var _0x3f2072;return db[_0x2abd('0x29')][_0x2abd('0x4b')]({'where':{'id':_0x4dccfc[_0x2abd('0x46')]['id']}})['then'](handleEntityNotFound(_0xcda9cf,null))['then'](function(_0x38da22){if(_0x38da22){_0xe8dbe8=_0x38da22;_0x3530f4[_0x2abd('0x2e')]=_['keys'](db['FreshdeskField'][_0x2abd('0x2a')]);_0x3530f4[_0x2abd('0x30')]=_['keys'](_0x4dccfc[_0x2abd('0x30')]);_0x3530f4[_0x2abd('0x32')]=_[_0x2abd('0x33')](_0x3530f4[_0x2abd('0x2e')],_0x3530f4[_0x2abd('0x30')]);_0x184927[_0x2abd('0x34')]=_[_0x2abd('0x33')](_0x3530f4[_0x2abd('0x2e')],qs['fields'](_0x4dccfc[_0x2abd('0x30')][_0x2abd('0x35')]));_0x184927['attributes']=_0x184927[_0x2abd('0x34')][_0x2abd('0x36')]?_0x184927[_0x2abd('0x34')]:_0x3530f4[_0x2abd('0x2e')];_0x184927[_0x2abd('0x4d')]=qs[_0x2abd('0x3a')](_0x4dccfc[_0x2abd('0x30')][_0x2abd('0x3a')]);_0x184927[_0x2abd('0x3b')]=qs[_0x2abd('0x32')](_[_0x2abd('0x3c')](_0x4dccfc['query'],_0x3530f4[_0x2abd('0x32')]));if(_0x4dccfc[_0x2abd('0x30')]['filter']){_0x184927[_0x2abd('0x3b')]=_[_0x2abd('0x3e')](_0x184927[_0x2abd('0x3b')],{'$or':_[_0x2abd('0x2f')](_0x184927[_0x2abd('0x34')],function(_0x5d9058){var _0x33607c={};_0x33607c[_0x5d9058]={'$like':'%'+_0x4dccfc[_0x2abd('0x30')][_0x2abd('0x3d')]+'%'};return _0x33607c;})});}_0x184927=_[_0x2abd('0x3e')]({},_0x184927,_0x4dccfc[_0x2abd('0x3f')]);return _0xe8dbe8[_0x2abd('0x4e')](_0x184927);}})[_0x2abd('0x23')](function(_0x24448a){if(_0x24448a){_0x3f2072=_0x24448a[_0x2abd('0x36')];if(!_0x4dccfc['query'][_0x2abd('0x37')](_0x2abd('0x38'))){_0x184927[_0x2abd('0x39')]=qs[_0x2abd('0x39')](_0x4dccfc['query'][_0x2abd('0x39')]);_0x184927[_0x2abd('0x1c')]=qs[_0x2abd('0x1c')](_0x4dccfc[_0x2abd('0x30')]['offset']);}return _0xe8dbe8[_0x2abd('0x4e')](_0x184927);}})['then'](function(_0x593b94){if(_0x593b94){return _0x593b94?{'count':_0x3f2072,'rows':_0x593b94}:null;}})[_0x2abd('0x23')](respondWithResult(_0xcda9cf,null))['catch'](handleError(_0xcda9cf,null));};exports[_0x2abd('0x4f')]=function(_0x2555b2,_0x1db13a,_0x558ca8){var _0x3665b3={};var _0x1721b5={};var _0x2ded27;var _0xf7bca0;return db[_0x2abd('0x29')][_0x2abd('0x4b')]({'where':{'id':_0x2555b2['params']['id']}})[_0x2abd('0x23')](handleEntityNotFound(_0x1db13a,null))[_0x2abd('0x23')](function(_0x459ab7){if(_0x459ab7){_0x2ded27=_0x459ab7;_0x1721b5[_0x2abd('0x2e')]=_['keys'](db['FreshdeskField'][_0x2abd('0x2a')]);_0x1721b5[_0x2abd('0x30')]=_['keys'](_0x2555b2[_0x2abd('0x30')]);_0x1721b5[_0x2abd('0x32')]=_[_0x2abd('0x33')](_0x1721b5[_0x2abd('0x2e')],_0x1721b5[_0x2abd('0x30')]);_0x3665b3[_0x2abd('0x34')]=_[_0x2abd('0x33')](_0x1721b5['model'],qs[_0x2abd('0x35')](_0x2555b2[_0x2abd('0x30')]['fields']));_0x3665b3[_0x2abd('0x34')]=_0x3665b3[_0x2abd('0x34')]['length']?_0x3665b3['attributes']:_0x1721b5[_0x2abd('0x2e')];_0x3665b3['order']=qs[_0x2abd('0x3a')](_0x2555b2[_0x2abd('0x30')][_0x2abd('0x3a')]);_0x3665b3['where']=qs['filters'](_[_0x2abd('0x3c')](_0x2555b2[_0x2abd('0x30')],_0x1721b5[_0x2abd('0x32')]));if(_0x2555b2[_0x2abd('0x30')][_0x2abd('0x3d')]){_0x3665b3[_0x2abd('0x3b')]=_['merge'](_0x3665b3[_0x2abd('0x3b')],{'$or':_[_0x2abd('0x2f')](_0x3665b3[_0x2abd('0x34')],function(_0x19e7fa){var _0x14cef4={};_0x14cef4[_0x19e7fa]={'$like':'%'+_0x2555b2[_0x2abd('0x30')][_0x2abd('0x3d')]+'%'};return _0x14cef4;})});}_0x3665b3=_['merge']({},_0x3665b3,_0x2555b2[_0x2abd('0x3f')]);return _0x2ded27[_0x2abd('0x4f')](_0x3665b3);}})['then'](function(_0x121b3){if(_0x121b3){_0xf7bca0=_0x121b3[_0x2abd('0x36')];if(!_0x2555b2[_0x2abd('0x30')][_0x2abd('0x37')]('nolimit')){_0x3665b3['limit']=qs[_0x2abd('0x39')](_0x2555b2[_0x2abd('0x30')]['limit']);_0x3665b3['offset']=qs['offset'](_0x2555b2[_0x2abd('0x30')][_0x2abd('0x1c')]);}return _0x2ded27[_0x2abd('0x4f')](_0x3665b3);}})[_0x2abd('0x23')](function(_0x4350f6){if(_0x4350f6){return _0x4350f6?{'count':_0xf7bca0,'rows':_0x4350f6}:null;}})[_0x2abd('0x23')](respondWithResult(_0x1db13a,null))[_0x2abd('0x44')](handleError(_0x1db13a,null));};exports['getTags']=function(_0x26f005,_0x25acd5,_0x356897){var _0x3712e8={};var _0x327fba={};var _0x20d277;var _0x16a857;return db[_0x2abd('0x29')][_0x2abd('0x4b')]({'where':{'id':_0x26f005['params']['id']}})[_0x2abd('0x23')](handleEntityNotFound(_0x25acd5,null))[_0x2abd('0x23')](function(_0x5df647){if(_0x5df647){_0x20d277=_0x5df647;_0x327fba[_0x2abd('0x2e')]=_[_0x2abd('0x31')](db[_0x2abd('0x50')][_0x2abd('0x2a')]);_0x327fba[_0x2abd('0x30')]=_[_0x2abd('0x31')](_0x26f005[_0x2abd('0x30')]);_0x327fba[_0x2abd('0x32')]=_[_0x2abd('0x33')](_0x327fba[_0x2abd('0x2e')],_0x327fba[_0x2abd('0x30')]);_0x3712e8['attributes']=_[_0x2abd('0x33')](_0x327fba['model'],qs[_0x2abd('0x35')](_0x26f005['query']['fields']));_0x3712e8[_0x2abd('0x34')]=_0x3712e8['attributes'][_0x2abd('0x36')]?_0x3712e8[_0x2abd('0x34')]:_0x327fba['model'];_0x3712e8[_0x2abd('0x4d')]=qs[_0x2abd('0x3a')](_0x26f005[_0x2abd('0x30')][_0x2abd('0x3a')]);_0x3712e8[_0x2abd('0x3b')]=qs['filters'](_['pick'](_0x26f005[_0x2abd('0x30')],_0x327fba[_0x2abd('0x32')]));if(_0x26f005[_0x2abd('0x30')][_0x2abd('0x3d')]){_0x3712e8[_0x2abd('0x3b')]=_[_0x2abd('0x3e')](_0x3712e8[_0x2abd('0x3b')],{'$or':_[_0x2abd('0x2f')](_0x3712e8[_0x2abd('0x34')],function(_0x45c335){var _0x203a54={};_0x203a54[_0x45c335]={'$like':'%'+_0x26f005[_0x2abd('0x30')][_0x2abd('0x3d')]+'%'};return _0x203a54;})});}_0x3712e8=_['merge']({},_0x3712e8,_0x26f005[_0x2abd('0x3f')]);return _0x20d277[_0x2abd('0x51')](_0x3712e8);}})['then'](function(_0x3022ae){if(_0x3022ae){_0x16a857=_0x3022ae[_0x2abd('0x36')];if(!_0x26f005[_0x2abd('0x30')]['hasOwnProperty'](_0x2abd('0x38'))){_0x3712e8['limit']=qs[_0x2abd('0x39')](_0x26f005[_0x2abd('0x30')][_0x2abd('0x39')]);_0x3712e8[_0x2abd('0x1c')]=qs[_0x2abd('0x1c')](_0x26f005['query'][_0x2abd('0x1c')]);}return _0x20d277[_0x2abd('0x51')](_0x3712e8);}})['then'](function(_0x1542fa){if(_0x1542fa){return _0x1542fa?{'count':_0x16a857,'rows':_0x1542fa}:null;}})[_0x2abd('0x23')](respondWithResult(_0x25acd5,null))[_0x2abd('0x44')](handleError(_0x25acd5,null));};exports[_0x2abd('0x52')]=function(_0x23dadf,_0x22a432,_0x2fed0){if(_0x23dadf[_0x2abd('0x49')]['id']){delete _0x23dadf['body']['id'];}return db[_0x2abd('0x29')][_0x2abd('0x4b')]({'where':{'id':_0x23dadf[_0x2abd('0x46')]['id']}})[_0x2abd('0x23')](handleEntityNotFound(_0x22a432,null))[_0x2abd('0x23')](function(_0x2697c4){if(_0x2697c4){return _0x2697c4['setTags'](_0x23dadf[_0x2abd('0x49')]['ids']||[]);}return null;})[_0x2abd('0x23')](respondWithResult(_0x22a432,null))[_0x2abd('0x44')](handleError(_0x22a432,null));};
\ No newline at end of file
+var _0x8b1a=['setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','Content-Range','apply','reject','destroy','then','error','stack','name','send','index','map','FreshdeskConfiguration','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','intersection','find','catch','create','body','update','getFields','findOne','FreshdeskField','nolimit','getSubjects','getDescriptions','getTags','Tag'];(function(_0x5408c2,_0xb736e8){var _0x55f181=function(_0x24cb95){while(--_0x24cb95){_0x5408c2['push'](_0x5408c2['shift']());}};_0x55f181(++_0xb736e8);}(_0x8b1a,0xa6));var _0xa8b1=function(_0xc90b0f,_0xdbeac7){_0xc90b0f=_0xc90b0f-0x0;var _0x3c66a3=_0x8b1a[_0xc90b0f];return _0x3c66a3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa8b1('0x0'));var zipdir=require(_0xa8b1('0x1'));var jsonpatch=require(_0xa8b1('0x2'));var rp=require(_0xa8b1('0x3'));var moment=require('moment');var BPromise=require(_0xa8b1('0x4'));var Mustache=require(_0xa8b1('0x5'));var util=require(_0xa8b1('0x6'));var path=require(_0xa8b1('0x7'));var sox=require(_0xa8b1('0x8'));var csv=require(_0xa8b1('0x9'));var ejs=require(_0xa8b1('0xa'));var fs=require('fs');var fs_extra=require(_0xa8b1('0xb'));var _=require(_0xa8b1('0xc'));var squel=require(_0xa8b1('0xd'));var crypto=require(_0xa8b1('0xe'));var jsforce=require(_0xa8b1('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa8b1('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa8b1('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa8b1('0x12'));var hardwareService=require(_0xa8b1('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa8b1('0x14'));var db=require(_0xa8b1('0x15'))['db'];function respondWithStatusCode(_0xc0be4d,_0x3b8b0b){_0x3b8b0b=_0x3b8b0b||0xcc;return function(_0x139b9e){if(_0x139b9e){return _0xc0be4d[_0xa8b1('0x16')](_0x3b8b0b);}return _0xc0be4d[_0xa8b1('0x17')](_0x3b8b0b)[_0xa8b1('0x18')]();};}function respondWithResult(_0xe3e0eb,_0x23ac4b){_0x23ac4b=_0x23ac4b||0xc8;return function(_0x1c9455){if(_0x1c9455){return _0xe3e0eb[_0xa8b1('0x17')](_0x23ac4b)['json'](_0x1c9455);}};}function respondWithFilteredResult(_0x523052,_0x3b67ad){return function(_0x48671b){if(_0x48671b){var _0x545520=typeof _0x3b67ad[_0xa8b1('0x19')]==='undefined'&&typeof _0x3b67ad['limit']===_0xa8b1('0x1a');var _0x7b554=_0x48671b['count'];var _0x22b1d6=_0x545520?0x0:_0x3b67ad[_0xa8b1('0x19')];var _0x497d2b=_0x545520?_0x48671b['count']:_0x3b67ad[_0xa8b1('0x19')]+_0x3b67ad[_0xa8b1('0x1b')];var _0x1b65b1;if(_0x497d2b>=_0x7b554){_0x497d2b=_0x7b554;_0x1b65b1=0xc8;}else{_0x1b65b1=0xce;}_0x523052[_0xa8b1('0x17')](_0x1b65b1);return _0x523052['set'](_0xa8b1('0x1c'),_0x22b1d6+'-'+_0x497d2b+'/'+_0x7b554)['json'](_0x48671b);}return null;};}function patchUpdates(_0x582e76){return function(_0x1a540c){try{jsonpatch[_0xa8b1('0x1d')](_0x1a540c,_0x582e76,!![]);}catch(_0x39486f){return BPromise[_0xa8b1('0x1e')](_0x39486f);}return _0x1a540c['save']();};}function saveUpdates(_0x136155,_0xdfe608){return function(_0x33eb4e){if(_0x33eb4e){return _0x33eb4e['update'](_0x136155)['then'](function(_0x40d52a){return _0x40d52a;});}return null;};}function removeEntity(_0x2771fa,_0x31af54){return function(_0xebbc84){if(_0xebbc84){return _0xebbc84[_0xa8b1('0x1f')]()[_0xa8b1('0x20')](function(){_0x2771fa['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e9fa3,_0xf1ce53){return function(_0x3f8f64){if(!_0x3f8f64){_0x3e9fa3['sendStatus'](0x194);}return _0x3f8f64;};}function handleError(_0xba92ef,_0x4989d6){_0x4989d6=_0x4989d6||0x1f4;return function(_0x42ac1e){logger[_0xa8b1('0x21')](_0x42ac1e[_0xa8b1('0x22')]);if(_0x42ac1e[_0xa8b1('0x23')]){delete _0x42ac1e[_0xa8b1('0x23')];}_0xba92ef[_0xa8b1('0x17')](_0x4989d6)[_0xa8b1('0x24')](_0x42ac1e);};}exports[_0xa8b1('0x25')]=function(_0x3479df,_0x155f82){var _0x592ca1={},_0x20418e={},_0x435aec={'count':0x0,'rows':[]};var _0x506a45=_[_0xa8b1('0x26')](db[_0xa8b1('0x27')]['rawAttributes'],function(_0x5e3096){return{'name':_0x5e3096[_0xa8b1('0x28')],'type':_0x5e3096[_0xa8b1('0x29')][_0xa8b1('0x2a')]};});_0x20418e[_0xa8b1('0x2b')]=_[_0xa8b1('0x26')](_0x506a45,_0xa8b1('0x23'));_0x20418e[_0xa8b1('0x2c')]=_['keys'](_0x3479df['query']);_0x20418e[_0xa8b1('0x2d')]=_['intersection'](_0x20418e[_0xa8b1('0x2b')],_0x20418e[_0xa8b1('0x2c')]);_0x592ca1[_0xa8b1('0x2e')]=_['intersection'](_0x20418e[_0xa8b1('0x2b')],qs[_0xa8b1('0x2f')](_0x3479df[_0xa8b1('0x2c')][_0xa8b1('0x2f')]));_0x592ca1['attributes']=_0x592ca1[_0xa8b1('0x2e')][_0xa8b1('0x30')]?_0x592ca1[_0xa8b1('0x2e')]:_0x20418e[_0xa8b1('0x2b')];if(!_0x3479df[_0xa8b1('0x2c')][_0xa8b1('0x31')]('nolimit')){_0x592ca1['limit']=qs[_0xa8b1('0x1b')](_0x3479df['query']['limit']);_0x592ca1[_0xa8b1('0x19')]=qs[_0xa8b1('0x19')](_0x3479df[_0xa8b1('0x2c')][_0xa8b1('0x19')]);}_0x592ca1[_0xa8b1('0x32')]=qs['sort'](_0x3479df['query'][_0xa8b1('0x33')]);_0x592ca1[_0xa8b1('0x34')]=qs[_0xa8b1('0x2d')](_[_0xa8b1('0x35')](_0x3479df[_0xa8b1('0x2c')],_0x20418e[_0xa8b1('0x2d')]),_0x506a45);if(_0x3479df[_0xa8b1('0x2c')][_0xa8b1('0x36')]){_0x592ca1[_0xa8b1('0x34')]=_[_0xa8b1('0x37')](_0x592ca1[_0xa8b1('0x34')],{'$or':_[_0xa8b1('0x26')](_0x506a45,function(_0x3cac28){if(_0x3cac28[_0xa8b1('0x29')]!==_0xa8b1('0x38')){var _0x3749e8={};_0x3749e8[_0x3cac28[_0xa8b1('0x23')]]={'$like':'%'+_0x3479df[_0xa8b1('0x2c')]['filter']+'%'};return _0x3749e8;}})});}_0x592ca1=_[_0xa8b1('0x37')]({},_0x592ca1,_0x3479df[_0xa8b1('0x39')]);var _0xa0318e={'where':_0x592ca1[_0xa8b1('0x34')]};return db[_0xa8b1('0x27')]['count'](_0xa0318e)[_0xa8b1('0x20')](function(_0x1ee721){_0x435aec['count']=_0x1ee721;if(_0x3479df[_0xa8b1('0x2c')][_0xa8b1('0x3a')]){_0x592ca1[_0xa8b1('0x3b')]=[{'all':!![]}];}return db[_0xa8b1('0x27')][_0xa8b1('0x3c')](_0x592ca1);})[_0xa8b1('0x20')](function(_0x1c25a8){_0x435aec[_0xa8b1('0x3d')]=_0x1c25a8;return _0x435aec;})[_0xa8b1('0x20')](respondWithFilteredResult(_0x155f82,_0x592ca1))['catch'](handleError(_0x155f82,null));};exports[_0xa8b1('0x3e')]=function(_0x5e7e66,_0x18cff7){var _0x1a4022={'raw':![],'where':{'id':_0x5e7e66[_0xa8b1('0x3f')]['id']}},_0x434b5f={};_0x434b5f[_0xa8b1('0x2b')]=_[_0xa8b1('0x40')](db['FreshdeskConfiguration'][_0xa8b1('0x41')]);_0x434b5f[_0xa8b1('0x2c')]=_[_0xa8b1('0x40')](_0x5e7e66[_0xa8b1('0x2c')]);_0x434b5f[_0xa8b1('0x2d')]=_[_0xa8b1('0x42')](_0x434b5f['model'],_0x434b5f[_0xa8b1('0x2c')]);_0x1a4022[_0xa8b1('0x2e')]=_['intersection'](_0x434b5f[_0xa8b1('0x2b')],qs[_0xa8b1('0x2f')](_0x5e7e66['query'][_0xa8b1('0x2f')]));_0x1a4022[_0xa8b1('0x2e')]=_0x1a4022['attributes'][_0xa8b1('0x30')]?_0x1a4022[_0xa8b1('0x2e')]:_0x434b5f[_0xa8b1('0x2b')];if(_0x5e7e66[_0xa8b1('0x2c')][_0xa8b1('0x3a')]){_0x1a4022['include']=[{'all':!![]}];}_0x1a4022=_[_0xa8b1('0x37')]({},_0x1a4022,_0x5e7e66[_0xa8b1('0x39')]);return db[_0xa8b1('0x27')][_0xa8b1('0x43')](_0x1a4022)[_0xa8b1('0x20')](handleEntityNotFound(_0x18cff7,null))[_0xa8b1('0x20')](respondWithResult(_0x18cff7,null))[_0xa8b1('0x44')](handleError(_0x18cff7,null));};exports[_0xa8b1('0x45')]=function(_0x478a92,_0x1cc120){return db[_0xa8b1('0x27')][_0xa8b1('0x45')](_0x478a92[_0xa8b1('0x46')],{})[_0xa8b1('0x20')](respondWithResult(_0x1cc120,0xc9))[_0xa8b1('0x44')](handleError(_0x1cc120,null));};exports[_0xa8b1('0x47')]=function(_0x17523a,_0x354911){if(_0x17523a[_0xa8b1('0x46')]['id']){delete _0x17523a[_0xa8b1('0x46')]['id'];}return db[_0xa8b1('0x27')]['find']({'where':{'id':_0x17523a[_0xa8b1('0x3f')]['id']}})[_0xa8b1('0x20')](handleEntityNotFound(_0x354911,null))[_0xa8b1('0x20')](saveUpdates(_0x17523a[_0xa8b1('0x46')],null))[_0xa8b1('0x20')](respondWithResult(_0x354911,null))[_0xa8b1('0x44')](handleError(_0x354911,null));};exports[_0xa8b1('0x1f')]=function(_0x3d762d,_0x337e03){return db[_0xa8b1('0x27')]['find']({'where':{'id':_0x3d762d[_0xa8b1('0x3f')]['id']}})[_0xa8b1('0x20')](handleEntityNotFound(_0x337e03,null))['then'](removeEntity(_0x337e03,null))[_0xa8b1('0x44')](handleError(_0x337e03,null));};exports[_0xa8b1('0x48')]=function(_0x10c9e2,_0xe89ea1,_0x4648a0){var _0xd72b9b={};var _0x341c4a={};var _0x31ad17;var _0x40cddd;return db[_0xa8b1('0x27')][_0xa8b1('0x49')]({'where':{'id':_0x10c9e2[_0xa8b1('0x3f')]['id']}})[_0xa8b1('0x20')](handleEntityNotFound(_0xe89ea1,null))[_0xa8b1('0x20')](function(_0x451453){if(_0x451453){_0x31ad17=_0x451453;_0x341c4a[_0xa8b1('0x2b')]=_[_0xa8b1('0x40')](db[_0xa8b1('0x4a')][_0xa8b1('0x41')]);_0x341c4a[_0xa8b1('0x2c')]=_[_0xa8b1('0x40')](_0x10c9e2[_0xa8b1('0x2c')]);_0x341c4a[_0xa8b1('0x2d')]=_[_0xa8b1('0x42')](_0x341c4a[_0xa8b1('0x2b')],_0x341c4a[_0xa8b1('0x2c')]);_0xd72b9b[_0xa8b1('0x2e')]=_[_0xa8b1('0x42')](_0x341c4a[_0xa8b1('0x2b')],qs[_0xa8b1('0x2f')](_0x10c9e2['query'][_0xa8b1('0x2f')]));_0xd72b9b[_0xa8b1('0x2e')]=_0xd72b9b[_0xa8b1('0x2e')][_0xa8b1('0x30')]?_0xd72b9b['attributes']:_0x341c4a[_0xa8b1('0x2b')];_0xd72b9b[_0xa8b1('0x32')]=qs[_0xa8b1('0x33')](_0x10c9e2[_0xa8b1('0x2c')][_0xa8b1('0x33')]);_0xd72b9b[_0xa8b1('0x34')]=qs['filters'](_[_0xa8b1('0x35')](_0x10c9e2[_0xa8b1('0x2c')],_0x341c4a['filters']));if(_0x10c9e2['query']['filter']){_0xd72b9b[_0xa8b1('0x34')]=_[_0xa8b1('0x37')](_0xd72b9b[_0xa8b1('0x34')],{'$or':_[_0xa8b1('0x26')](_0xd72b9b[_0xa8b1('0x2e')],function(_0x31da9f){var _0x374449={};_0x374449[_0x31da9f]={'$like':'%'+_0x10c9e2[_0xa8b1('0x2c')]['filter']+'%'};return _0x374449;})});}_0xd72b9b=_[_0xa8b1('0x37')]({},_0xd72b9b,_0x10c9e2[_0xa8b1('0x39')]);return _0x31ad17[_0xa8b1('0x48')](_0xd72b9b);}})['then'](function(_0x556ebe){if(_0x556ebe){_0x40cddd=_0x556ebe[_0xa8b1('0x30')];if(!_0x10c9e2['query'][_0xa8b1('0x31')](_0xa8b1('0x4b'))){_0xd72b9b['limit']=qs[_0xa8b1('0x1b')](_0x10c9e2[_0xa8b1('0x2c')][_0xa8b1('0x1b')]);_0xd72b9b[_0xa8b1('0x19')]=qs[_0xa8b1('0x19')](_0x10c9e2[_0xa8b1('0x2c')]['offset']);}return _0x31ad17[_0xa8b1('0x48')](_0xd72b9b);}})[_0xa8b1('0x20')](function(_0xb86165){if(_0xb86165){return _0xb86165?{'count':_0x40cddd,'rows':_0xb86165}:null;}})[_0xa8b1('0x20')](respondWithResult(_0xe89ea1,null))[_0xa8b1('0x44')](handleError(_0xe89ea1,null));};exports[_0xa8b1('0x4c')]=function(_0x53544c,_0x158afe,_0x1bf2bc){var _0x59940a={};var _0x3b6570={};var _0x145cda;var _0x4d709;return db[_0xa8b1('0x27')][_0xa8b1('0x49')]({'where':{'id':_0x53544c[_0xa8b1('0x3f')]['id']}})[_0xa8b1('0x20')](handleEntityNotFound(_0x158afe,null))[_0xa8b1('0x20')](function(_0x46cf26){if(_0x46cf26){_0x145cda=_0x46cf26;_0x3b6570['model']=_[_0xa8b1('0x40')](db['FreshdeskField'][_0xa8b1('0x41')]);_0x3b6570[_0xa8b1('0x2c')]=_['keys'](_0x53544c[_0xa8b1('0x2c')]);_0x3b6570[_0xa8b1('0x2d')]=_[_0xa8b1('0x42')](_0x3b6570[_0xa8b1('0x2b')],_0x3b6570[_0xa8b1('0x2c')]);_0x59940a['attributes']=_['intersection'](_0x3b6570['model'],qs[_0xa8b1('0x2f')](_0x53544c[_0xa8b1('0x2c')][_0xa8b1('0x2f')]));_0x59940a[_0xa8b1('0x2e')]=_0x59940a[_0xa8b1('0x2e')][_0xa8b1('0x30')]?_0x59940a['attributes']:_0x3b6570[_0xa8b1('0x2b')];_0x59940a[_0xa8b1('0x32')]=qs[_0xa8b1('0x33')](_0x53544c[_0xa8b1('0x2c')][_0xa8b1('0x33')]);_0x59940a[_0xa8b1('0x34')]=qs['filters'](_['pick'](_0x53544c[_0xa8b1('0x2c')],_0x3b6570[_0xa8b1('0x2d')]));if(_0x53544c[_0xa8b1('0x2c')][_0xa8b1('0x36')]){_0x59940a[_0xa8b1('0x34')]=_[_0xa8b1('0x37')](_0x59940a[_0xa8b1('0x34')],{'$or':_[_0xa8b1('0x26')](_0x59940a[_0xa8b1('0x2e')],function(_0x535758){var _0x3c92cb={};_0x3c92cb[_0x535758]={'$like':'%'+_0x53544c[_0xa8b1('0x2c')][_0xa8b1('0x36')]+'%'};return _0x3c92cb;})});}_0x59940a=_[_0xa8b1('0x37')]({},_0x59940a,_0x53544c['options']);return _0x145cda[_0xa8b1('0x4c')](_0x59940a);}})[_0xa8b1('0x20')](function(_0x3e328b){if(_0x3e328b){_0x4d709=_0x3e328b[_0xa8b1('0x30')];if(!_0x53544c[_0xa8b1('0x2c')]['hasOwnProperty'](_0xa8b1('0x4b'))){_0x59940a['limit']=qs[_0xa8b1('0x1b')](_0x53544c['query'][_0xa8b1('0x1b')]);_0x59940a[_0xa8b1('0x19')]=qs[_0xa8b1('0x19')](_0x53544c['query'][_0xa8b1('0x19')]);}return _0x145cda[_0xa8b1('0x4c')](_0x59940a);}})[_0xa8b1('0x20')](function(_0x80e72f){if(_0x80e72f){return _0x80e72f?{'count':_0x4d709,'rows':_0x80e72f}:null;}})[_0xa8b1('0x20')](respondWithResult(_0x158afe,null))['catch'](handleError(_0x158afe,null));};exports[_0xa8b1('0x4d')]=function(_0x2a4128,_0x31337c,_0x136914){var _0x52035b={};var _0x59e5d7={};var _0xa6ba71;var _0x3d3f7f;return db[_0xa8b1('0x27')][_0xa8b1('0x49')]({'where':{'id':_0x2a4128['params']['id']}})[_0xa8b1('0x20')](handleEntityNotFound(_0x31337c,null))[_0xa8b1('0x20')](function(_0x5e9fa3){if(_0x5e9fa3){_0xa6ba71=_0x5e9fa3;_0x59e5d7[_0xa8b1('0x2b')]=_[_0xa8b1('0x40')](db['FreshdeskField'][_0xa8b1('0x41')]);_0x59e5d7['query']=_[_0xa8b1('0x40')](_0x2a4128[_0xa8b1('0x2c')]);_0x59e5d7[_0xa8b1('0x2d')]=_[_0xa8b1('0x42')](_0x59e5d7[_0xa8b1('0x2b')],_0x59e5d7[_0xa8b1('0x2c')]);_0x52035b[_0xa8b1('0x2e')]=_['intersection'](_0x59e5d7['model'],qs['fields'](_0x2a4128[_0xa8b1('0x2c')]['fields']));_0x52035b[_0xa8b1('0x2e')]=_0x52035b[_0xa8b1('0x2e')][_0xa8b1('0x30')]?_0x52035b[_0xa8b1('0x2e')]:_0x59e5d7[_0xa8b1('0x2b')];_0x52035b[_0xa8b1('0x32')]=qs[_0xa8b1('0x33')](_0x2a4128[_0xa8b1('0x2c')][_0xa8b1('0x33')]);_0x52035b[_0xa8b1('0x34')]=qs[_0xa8b1('0x2d')](_['pick'](_0x2a4128[_0xa8b1('0x2c')],_0x59e5d7['filters']));if(_0x2a4128[_0xa8b1('0x2c')][_0xa8b1('0x36')]){_0x52035b[_0xa8b1('0x34')]=_[_0xa8b1('0x37')](_0x52035b[_0xa8b1('0x34')],{'$or':_[_0xa8b1('0x26')](_0x52035b['attributes'],function(_0x2e3215){var _0x3202fc={};_0x3202fc[_0x2e3215]={'$like':'%'+_0x2a4128[_0xa8b1('0x2c')]['filter']+'%'};return _0x3202fc;})});}_0x52035b=_[_0xa8b1('0x37')]({},_0x52035b,_0x2a4128['options']);return _0xa6ba71[_0xa8b1('0x4d')](_0x52035b);}})['then'](function(_0x5bf0a9){if(_0x5bf0a9){_0x3d3f7f=_0x5bf0a9[_0xa8b1('0x30')];if(!_0x2a4128[_0xa8b1('0x2c')][_0xa8b1('0x31')](_0xa8b1('0x4b'))){_0x52035b[_0xa8b1('0x1b')]=qs[_0xa8b1('0x1b')](_0x2a4128[_0xa8b1('0x2c')]['limit']);_0x52035b[_0xa8b1('0x19')]=qs[_0xa8b1('0x19')](_0x2a4128[_0xa8b1('0x2c')]['offset']);}return _0xa6ba71[_0xa8b1('0x4d')](_0x52035b);}})[_0xa8b1('0x20')](function(_0x5559d9){if(_0x5559d9){return _0x5559d9?{'count':_0x3d3f7f,'rows':_0x5559d9}:null;}})['then'](respondWithResult(_0x31337c,null))[_0xa8b1('0x44')](handleError(_0x31337c,null));};exports[_0xa8b1('0x4e')]=function(_0x1782b1,_0x24d64c,_0x40d5c5){var _0x31fdc9={};var _0x1b41d1={};var _0x109ae6;var _0x1d2c6a;return db[_0xa8b1('0x27')][_0xa8b1('0x49')]({'where':{'id':_0x1782b1[_0xa8b1('0x3f')]['id']}})['then'](handleEntityNotFound(_0x24d64c,null))[_0xa8b1('0x20')](function(_0x28d101){if(_0x28d101){_0x109ae6=_0x28d101;_0x1b41d1[_0xa8b1('0x2b')]=_['keys'](db[_0xa8b1('0x4f')]['rawAttributes']);_0x1b41d1[_0xa8b1('0x2c')]=_['keys'](_0x1782b1[_0xa8b1('0x2c')]);_0x1b41d1[_0xa8b1('0x2d')]=_['intersection'](_0x1b41d1[_0xa8b1('0x2b')],_0x1b41d1[_0xa8b1('0x2c')]);_0x31fdc9[_0xa8b1('0x2e')]=_['intersection'](_0x1b41d1[_0xa8b1('0x2b')],qs[_0xa8b1('0x2f')](_0x1782b1[_0xa8b1('0x2c')][_0xa8b1('0x2f')]));_0x31fdc9['attributes']=_0x31fdc9['attributes']['length']?_0x31fdc9[_0xa8b1('0x2e')]:_0x1b41d1[_0xa8b1('0x2b')];_0x31fdc9['order']=qs[_0xa8b1('0x33')](_0x1782b1[_0xa8b1('0x2c')][_0xa8b1('0x33')]);_0x31fdc9['where']=qs[_0xa8b1('0x2d')](_[_0xa8b1('0x35')](_0x1782b1['query'],_0x1b41d1[_0xa8b1('0x2d')]));if(_0x1782b1['query']['filter']){_0x31fdc9[_0xa8b1('0x34')]=_['merge'](_0x31fdc9[_0xa8b1('0x34')],{'$or':_[_0xa8b1('0x26')](_0x31fdc9[_0xa8b1('0x2e')],function(_0x599d8){var _0x33cc1b={};_0x33cc1b[_0x599d8]={'$like':'%'+_0x1782b1['query'][_0xa8b1('0x36')]+'%'};return _0x33cc1b;})});}_0x31fdc9=_[_0xa8b1('0x37')]({},_0x31fdc9,_0x1782b1[_0xa8b1('0x39')]);return _0x109ae6[_0xa8b1('0x4e')](_0x31fdc9);}})[_0xa8b1('0x20')](function(_0x5a38c3){if(_0x5a38c3){_0x1d2c6a=_0x5a38c3[_0xa8b1('0x30')];if(!_0x1782b1['query'][_0xa8b1('0x31')](_0xa8b1('0x4b'))){_0x31fdc9[_0xa8b1('0x1b')]=qs[_0xa8b1('0x1b')](_0x1782b1[_0xa8b1('0x2c')][_0xa8b1('0x1b')]);_0x31fdc9['offset']=qs['offset'](_0x1782b1['query'][_0xa8b1('0x19')]);}return _0x109ae6[_0xa8b1('0x4e')](_0x31fdc9);}})[_0xa8b1('0x20')](function(_0x3ce434){if(_0x3ce434){return _0x3ce434?{'count':_0x1d2c6a,'rows':_0x3ce434}:null;}})[_0xa8b1('0x20')](respondWithResult(_0x24d64c,null))[_0xa8b1('0x44')](handleError(_0x24d64c,null));};exports[_0xa8b1('0x50')]=function(_0x214ab8,_0x20f25f,_0xbbc2ce){if(_0x214ab8[_0xa8b1('0x46')]['id']){delete _0x214ab8[_0xa8b1('0x46')]['id'];}return db[_0xa8b1('0x27')][_0xa8b1('0x49')]({'where':{'id':_0x214ab8[_0xa8b1('0x3f')]['id']}})[_0xa8b1('0x20')](handleEntityNotFound(_0x20f25f,null))[_0xa8b1('0x20')](function(_0x17dc0f){if(_0x17dc0f){return _0x17dc0f[_0xa8b1('0x50')](_0x214ab8['body'][_0xa8b1('0x51')]||[]);}return null;})[_0xa8b1('0x20')](respondWithResult(_0x20f25f,null))[_0xa8b1('0x44')](handleError(_0x20f25f,null));};
\ No newline at end of file
index 4b6763b..624cc8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe69b=['define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports'];(function(_0x18a436,_0x1dbe06){var _0x5c2cf8=function(_0x4712d1){while(--_0x4712d1){_0x18a436['push'](_0x18a436['shift']());}};_0x5c2cf8(++_0x1dbe06);}(_0xe69b,0x13b));var _0xbe69=function(_0x2f20ab,_0xd43f94){_0x2f20ab=_0x2f20ab-0x0;var _0x54a464=_0xe69b[_0x2f20ab];return _0x54a464;};'use strict';var _=require(_0xbe69('0x0'));var util=require(_0xbe69('0x1'));var logger=require(_0xbe69('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbe69('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe69('0x4'));var rimraf=require(_0xbe69('0x5'));var config=require(_0xbe69('0x6'));var attributes=require(_0xbe69('0x7'));module[_0xbe69('0x8')]=function(_0xe08ef8,_0xb8a09){return _0xe08ef8[_0xbe69('0x9')](_0xbe69('0xa'),attributes,{'tableName':_0xbe69('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x526d=['../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','util','moment','bluebird','request-promise','path'];(function(_0x9c3c56,_0x169b56){var _0x2dd782=function(_0x386962){while(--_0x386962){_0x9c3c56['push'](_0x9c3c56['shift']());}};_0x2dd782(++_0x169b56);}(_0x526d,0xed));var _0xd526=function(_0x28bf0c,_0xb50710){_0x28bf0c=_0x28bf0c-0x0;var _0x53795e=_0x526d[_0x28bf0c];return _0x53795e;};'use strict';var _=require('lodash');var util=require(_0xd526('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xd526('0x1'));var BPromise=require(_0xd526('0x2'));var rp=require(_0xd526('0x3'));var fs=require('fs');var path=require(_0xd526('0x4'));var rimraf=require('rimraf');var config=require(_0xd526('0x5'));var attributes=require(_0xd526('0x6'));module[_0xd526('0x7')]=function(_0x2574c1,_0x3ad607){return _0x2574c1[_0xd526('0x8')](_0xd526('0x9'),attributes,{'tableName':_0xd526('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e97a7e7..f3b97ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cec=['FreshdeskConfiguration,\x20%s,\x20%s','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8cec,0x167));var _0xc8ce=function(_0x15fde9,_0x2c6dee){_0x15fde9=_0x15fde9-0x0;var _0x3248be=_0x8cec[_0x15fde9];return _0x3248be;};'use strict';var _=require(_0xc8ce('0x0'));var util=require(_0xc8ce('0x1'));var moment=require('moment');var BPromise=require(_0xc8ce('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc8ce('0x3'))['db'];var utils=require(_0xc8ce('0x4'));var logger=require(_0xc8ce('0x5'))(_0xc8ce('0x6'));var config=require('../../config/environment');var jayson=require(_0xc8ce('0x7'));var client=jayson['client'][_0xc8ce('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x51f735,_0x60bffe,_0x3f2962){return new BPromise(function(_0x3375fc,_0x26a10b){return client[_0xc8ce('0x9')](_0x51f735,_0x3f2962)[_0xc8ce('0xa')](function(_0x905e31){logger[_0xc8ce('0xb')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x60bffe,_0xc8ce('0xc'));logger[_0xc8ce('0xd')](_0xc8ce('0xe'),_0x60bffe,_0xc8ce('0xc'),JSON[_0xc8ce('0xf')](_0x905e31));if(_0x905e31[_0xc8ce('0x10')]){if(_0x905e31[_0xc8ce('0x10')][_0xc8ce('0x11')]===0x1f4){logger[_0xc8ce('0x10')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x60bffe,_0x905e31['error'][_0xc8ce('0x12')]);return _0x26a10b(_0x905e31[_0xc8ce('0x10')][_0xc8ce('0x12')]);}logger[_0xc8ce('0x10')](_0xc8ce('0x13'),_0x60bffe,_0x905e31[_0xc8ce('0x10')][_0xc8ce('0x12')]);return _0x3375fc(_0x905e31['error'][_0xc8ce('0x12')]);}else{logger[_0xc8ce('0xb')](_0xc8ce('0x13'),_0x60bffe,_0xc8ce('0xc'));_0x3375fc(_0x905e31['result']['message']);}})[_0xc8ce('0x14')](function(_0x196daf){logger[_0xc8ce('0x10')](_0xc8ce('0x13'),_0x60bffe,_0x196daf);_0x26a10b(_0x196daf);});});}
\ No newline at end of file
+var _0x89f6=['http','request','then','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x477001,_0x2a9aa4){var _0x3f7576=function(_0x4ea24f){while(--_0x4ea24f){_0x477001['push'](_0x477001['shift']());}};_0x3f7576(++_0x2a9aa4);}(_0x89f6,0xd3));var _0x689f=function(_0x3f0b30,_0x159bc8){_0x3f0b30=_0x3f0b30-0x0;var _0x2748a5=_0x89f6[_0x3f0b30];return _0x2748a5;};'use strict';var _=require(_0x689f('0x0'));var util=require('util');var moment=require(_0x689f('0x1'));var BPromise=require(_0x689f('0x2'));var rs=require(_0x689f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x689f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x689f('0x5'))('rpc');var config=require(_0x689f('0x6'));var jayson=require(_0x689f('0x7'));var client=jayson[_0x689f('0x8')][_0x689f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3ef78a,_0x4a2498,_0x5d2db6){return new BPromise(function(_0x4098b4,_0x117e8b){return client[_0x689f('0xa')](_0x3ef78a,_0x5d2db6)[_0x689f('0xb')](function(_0x376bdd){logger['info'](_0x689f('0xc'),_0x4a2498,_0x689f('0xd'));logger[_0x689f('0xe')](_0x689f('0xf'),_0x4a2498,_0x689f('0xd'),JSON[_0x689f('0x10')](_0x376bdd));if(_0x376bdd['error']){if(_0x376bdd[_0x689f('0x11')][_0x689f('0x12')]===0x1f4){logger[_0x689f('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x4a2498,_0x376bdd[_0x689f('0x11')]['message']);return _0x117e8b(_0x376bdd[_0x689f('0x11')]['message']);}logger[_0x689f('0x11')](_0x689f('0xc'),_0x4a2498,_0x376bdd[_0x689f('0x11')][_0x689f('0x13')]);return _0x4098b4(_0x376bdd[_0x689f('0x11')][_0x689f('0x13')]);}else{logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x4a2498,'request\x20sent');_0x4098b4(_0x376bdd[_0x689f('0x14')]['message']);}})[_0x689f('0x15')](function(_0x23108c){logger[_0x689f('0x11')](_0x689f('0xc'),_0x4a2498,_0x23108c);_0x117e8b(_0x23108c);});});}
\ No newline at end of file
index 12b21df..7d56dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a1=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer'];(function(_0x522957,_0x9dfe2b){var _0x3287ad=function(_0x2314f7){while(--_0x2314f7){_0x522957['push'](_0x522957['shift']());}};_0x3287ad(++_0x9dfe2b);}(_0xd4a1,0xed));var _0x1d4a=function(_0x263807,_0x48858c){_0x263807=_0x263807-0x0;var _0x284fe3=_0xd4a1[_0x263807];return _0x284fe3;};'use strict';var multer=require(_0x1d4a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1d4a('0x1'));var express=require('express');var router=express[_0x1d4a('0x2')]();var fs_extra=require(_0x1d4a('0x3'));var auth=require(_0x1d4a('0x4'));var interaction=require(_0x1d4a('0x5'));var config=require('../../config/environment');var controller=require('./intFreshdeskField.controller');router[_0x1d4a('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x1d4a('0x7'),auth[_0x1d4a('0x8')](),controller[_0x1d4a('0x9')]);router[_0x1d4a('0xa')]('/',auth[_0x1d4a('0x8')](),controller[_0x1d4a('0xb')]);router[_0x1d4a('0xc')](_0x1d4a('0x7'),auth[_0x1d4a('0x8')](),controller[_0x1d4a('0xd')]);router[_0x1d4a('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x1d4a('0xf')]);module[_0x1d4a('0x10')]=router;
\ No newline at end of file
+var _0x4fbc=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','get','index'];(function(_0x31879d,_0x329f43){var _0x4b20e6=function(_0x5d1775){while(--_0x5d1775){_0x31879d['push'](_0x31879d['shift']());}};_0x4b20e6(++_0x329f43);}(_0x4fbc,0xb1));var _0xc4fb=function(_0x37373b,_0x27a75f){_0x37373b=_0x37373b-0x0;var _0x4eca20=_0x4fbc[_0x37373b];return _0x4eca20;};'use strict';var multer=require(_0xc4fb('0x0'));var util=require(_0xc4fb('0x1'));var path=require(_0xc4fb('0x2'));var timeout=require(_0xc4fb('0x3'));var express=require(_0xc4fb('0x4'));var router=express[_0xc4fb('0x5')]();var fs_extra=require(_0xc4fb('0x6'));var auth=require(_0xc4fb('0x7'));var interaction=require(_0xc4fb('0x8'));var config=require('../../config/environment');var controller=require(_0xc4fb('0x9'));router[_0xc4fb('0xa')]('/',auth['isAuthenticated'](),controller[_0xc4fb('0xb')]);router[_0xc4fb('0xa')](_0xc4fb('0xc'),auth['isAuthenticated'](),controller[_0xc4fb('0xd')]);router[_0xc4fb('0xe')]('/',auth['isAuthenticated'](),controller[_0xc4fb('0xf')]);router[_0xc4fb('0x10')](_0xc4fb('0xc'),auth['isAuthenticated'](),controller[_0xc4fb('0x11')]);router[_0xc4fb('0x12')](_0xc4fb('0xc'),auth['isAuthenticated'](),controller[_0xc4fb('0x13')]);module[_0xc4fb('0x14')]=router;
\ No newline at end of file
index 7acb640..efd791b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2ed=['string','STRING','ENUM','BOOLEAN','sequelize','exports','variable','customVariable','keyValue','picklist'];(function(_0x518dcd,_0x52023d){var _0x388c8b=function(_0x48aa39){while(--_0x48aa39){_0x518dcd['push'](_0x518dcd['shift']());}};_0x388c8b(++_0x52023d);}(_0xc2ed,0x162));var _0xdc2e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xc2ed[_0x31e29a];return _0x32d892;};'use strict';var Sequelize=require(_0xdc2e('0x0'));module[_0xdc2e('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0xdc2e('0x2'),_0xdc2e('0x3'),_0xdc2e('0x4'),_0xdc2e('0x5')),'defaultValue':_0xdc2e('0x6')},'content':{'type':Sequelize[_0xdc2e('0x7')]},'key':{'type':Sequelize[_0xdc2e('0x7')]},'keyType':{'type':Sequelize[_0xdc2e('0x8')](_0xdc2e('0x6'),_0xdc2e('0x2'),_0xdc2e('0x3'))},'keyContent':{'type':Sequelize[_0xdc2e('0x7')]},'idField':{'type':Sequelize[_0xdc2e('0x7')]},'nameField':{'type':Sequelize[_0xdc2e('0x7')]},'customField':{'type':Sequelize[_0xdc2e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xdc2e('0x7')]}};
\ No newline at end of file
+var _0x0f27=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports'];(function(_0x221b90,_0x2117d8){var _0x5c3753=function(_0x3586cb){while(--_0x3586cb){_0x221b90['push'](_0x221b90['shift']());}};_0x5c3753(++_0x2117d8);}(_0x0f27,0x1b8));var _0x70f2=function(_0x45cd59,_0x5be7c0){_0x45cd59=_0x45cd59-0x0;var _0x39541a=_0x0f27[_0x45cd59];return _0x39541a;};'use strict';var Sequelize=require('sequelize');module[_0x70f2('0x0')]={'type':{'type':Sequelize[_0x70f2('0x1')](_0x70f2('0x2'),_0x70f2('0x3'),_0x70f2('0x4'),_0x70f2('0x5'),_0x70f2('0x6')),'defaultValue':_0x70f2('0x2')},'content':{'type':Sequelize[_0x70f2('0x7')]},'key':{'type':Sequelize[_0x70f2('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0x70f2('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x70f2('0x7')]},'nameField':{'type':Sequelize[_0x70f2('0x7')]},'customField':{'type':Sequelize[_0x70f2('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x70f2('0x7')]}};
\ No newline at end of file
index 9e108bc..94939ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','name','send','index','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','FreshdeskField','findAll','rows','show','params','includeAll','find','catch','create','body','destroy','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x2999cc,_0x4b011f){var _0x2a711f=function(_0x9dd1c9){while(--_0x9dd1c9){_0x2999cc['push'](_0x2999cc['shift']());}};_0x2a711f(++_0x4b011f);}(_0x41bb,0xc5));var _0xb41b=function(_0x499ae4,_0x4a2788){_0x499ae4=_0x499ae4-0x0;var _0xcbbd25=_0x41bb[_0x499ae4];return _0xcbbd25;};'use strict';var emlformat=require(_0xb41b('0x0'));var rimraf=require(_0xb41b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb41b('0x2'));var rp=require('request-promise');var moment=require(_0xb41b('0x3'));var BPromise=require(_0xb41b('0x4'));var Mustache=require(_0xb41b('0x5'));var util=require(_0xb41b('0x6'));var path=require('path');var sox=require(_0xb41b('0x7'));var csv=require(_0xb41b('0x8'));var ejs=require(_0xb41b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xb41b('0xa'));var jsforce=require(_0xb41b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb41b('0x8'));var querystring=require(_0xb41b('0xc'));var Papa=require(_0xb41b('0xd'));var Redis=require(_0xb41b('0xe'));var authService=require(_0xb41b('0xf'));var qs=require(_0xb41b('0x10'));var as=require(_0xb41b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb41b('0x12'))('api');var utils=require(_0xb41b('0x13'));var config=require(_0xb41b('0x14'));var licenseUtil=require(_0xb41b('0x15'));var db=require(_0xb41b('0x16'))['db'];function respondWithStatusCode(_0x2066d5,_0x5f1ea4){_0x5f1ea4=_0x5f1ea4||0xcc;return function(_0x353ba3){if(_0x353ba3){return _0x2066d5[_0xb41b('0x17')](_0x5f1ea4);}return _0x2066d5[_0xb41b('0x18')](_0x5f1ea4)[_0xb41b('0x19')]();};}function respondWithResult(_0x3be1ec,_0x4e8603){_0x4e8603=_0x4e8603||0xc8;return function(_0x4e7f11){if(_0x4e7f11){return _0x3be1ec['status'](_0x4e8603)[_0xb41b('0x1a')](_0x4e7f11);}};}function respondWithFilteredResult(_0xdc5fb0,_0x143a81){return function(_0x338920){if(_0x338920){var _0x29ea51=typeof _0x143a81['offset']===_0xb41b('0x1b')&&typeof _0x143a81[_0xb41b('0x1c')]===_0xb41b('0x1b');var _0xcf0728=_0x338920[_0xb41b('0x1d')];var _0x47154d=_0x29ea51?0x0:_0x143a81[_0xb41b('0x1e')];var _0x5df8c2=_0x29ea51?_0x338920['count']:_0x143a81['offset']+_0x143a81[_0xb41b('0x1c')];var _0x503e86;if(_0x5df8c2>=_0xcf0728){_0x5df8c2=_0xcf0728;_0x503e86=0xc8;}else{_0x503e86=0xce;}_0xdc5fb0[_0xb41b('0x18')](_0x503e86);return _0xdc5fb0[_0xb41b('0x1f')](_0xb41b('0x20'),_0x47154d+'-'+_0x5df8c2+'/'+_0xcf0728)['json'](_0x338920);}return null;};}function patchUpdates(_0x53bc44){return function(_0x1a1386){try{jsonpatch[_0xb41b('0x21')](_0x1a1386,_0x53bc44,!![]);}catch(_0xd1bc61){return BPromise[_0xb41b('0x22')](_0xd1bc61);}return _0x1a1386[_0xb41b('0x23')]();};}function saveUpdates(_0x42dccb,_0x4c73da){return function(_0x58f149){if(_0x58f149){return _0x58f149[_0xb41b('0x24')](_0x42dccb)[_0xb41b('0x25')](function(_0x871b35){return _0x871b35;});}return null;};}function removeEntity(_0x583741,_0x14e9c8){return function(_0x2441d6){if(_0x2441d6){return _0x2441d6['destroy']()[_0xb41b('0x25')](function(){_0x583741[_0xb41b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xed3c7e,_0x4a7992){return function(_0x2d0f27){if(!_0x2d0f27){_0xed3c7e[_0xb41b('0x17')](0x194);}return _0x2d0f27;};}function handleError(_0x53e3a2,_0x3af2c){_0x3af2c=_0x3af2c||0x1f4;return function(_0x4265b8){logger['error'](_0x4265b8['stack']);if(_0x4265b8[_0xb41b('0x26')]){delete _0x4265b8[_0xb41b('0x26')];}_0x53e3a2[_0xb41b('0x18')](_0x3af2c)[_0xb41b('0x27')](_0x4265b8);};}exports[_0xb41b('0x28')]=function(_0x181cbd,_0x253efb){var _0x545395={},_0x26ef96={},_0xb68029={'count':0x0,'rows':[]};var _0x5069aa=_[_0xb41b('0x29')](db['FreshdeskField'][_0xb41b('0x2a')],function(_0x31d4cd){return{'name':_0x31d4cd['fieldName'],'type':_0x31d4cd[_0xb41b('0x2b')]['key']};});_0x26ef96[_0xb41b('0x2c')]=_[_0xb41b('0x29')](_0x5069aa,'name');_0x26ef96[_0xb41b('0x2d')]=_[_0xb41b('0x2e')](_0x181cbd[_0xb41b('0x2d')]);_0x26ef96[_0xb41b('0x2f')]=_[_0xb41b('0x30')](_0x26ef96[_0xb41b('0x2c')],_0x26ef96[_0xb41b('0x2d')]);_0x545395[_0xb41b('0x31')]=_[_0xb41b('0x30')](_0x26ef96[_0xb41b('0x2c')],qs['fields'](_0x181cbd[_0xb41b('0x2d')]['fields']));_0x545395['attributes']=_0x545395[_0xb41b('0x31')][_0xb41b('0x32')]?_0x545395[_0xb41b('0x31')]:_0x26ef96[_0xb41b('0x2c')];if(!_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x33')](_0xb41b('0x34'))){_0x545395[_0xb41b('0x1c')]=qs[_0xb41b('0x1c')](_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x1c')]);_0x545395['offset']=qs[_0xb41b('0x1e')](_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x1e')]);}_0x545395[_0xb41b('0x35')]=qs[_0xb41b('0x36')](_0x181cbd[_0xb41b('0x2d')]['sort']);_0x545395['where']=qs[_0xb41b('0x2f')](_[_0xb41b('0x37')](_0x181cbd['query'],_0x26ef96[_0xb41b('0x2f')]),_0x5069aa);if(_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x38')]){_0x545395[_0xb41b('0x39')]=_[_0xb41b('0x3a')](_0x545395['where'],{'$or':_[_0xb41b('0x29')](_0x5069aa,function(_0x5775d3){if(_0x5775d3[_0xb41b('0x2b')]!==_0xb41b('0x3b')){var _0x799d6={};_0x799d6[_0x5775d3[_0xb41b('0x26')]]={'$like':'%'+_0x181cbd[_0xb41b('0x2d')][_0xb41b('0x38')]+'%'};return _0x799d6;}})});}_0x545395=_[_0xb41b('0x3a')]({},_0x545395,_0x181cbd[_0xb41b('0x3c')]);var _0x2b0721={'where':_0x545395['where']};return db['FreshdeskField']['count'](_0x2b0721)[_0xb41b('0x25')](function(_0x5147ce){_0xb68029['count']=_0x5147ce;if(_0x181cbd[_0xb41b('0x2d')]['includeAll']){_0x545395[_0xb41b('0x3d')]=[{'all':!![]}];}return db[_0xb41b('0x3e')][_0xb41b('0x3f')](_0x545395);})[_0xb41b('0x25')](function(_0x4fa390){_0xb68029[_0xb41b('0x40')]=_0x4fa390;return _0xb68029;})[_0xb41b('0x25')](respondWithFilteredResult(_0x253efb,_0x545395))['catch'](handleError(_0x253efb,null));};exports[_0xb41b('0x41')]=function(_0xa70324,_0x3f181c){var _0x174d6c={'raw':!![],'where':{'id':_0xa70324[_0xb41b('0x42')]['id']}},_0x47bab5={};_0x47bab5['model']=_[_0xb41b('0x2e')](db[_0xb41b('0x3e')][_0xb41b('0x2a')]);_0x47bab5['query']=_['keys'](_0xa70324[_0xb41b('0x2d')]);_0x47bab5[_0xb41b('0x2f')]=_[_0xb41b('0x30')](_0x47bab5[_0xb41b('0x2c')],_0x47bab5[_0xb41b('0x2d')]);_0x174d6c[_0xb41b('0x31')]=_[_0xb41b('0x30')](_0x47bab5['model'],qs['fields'](_0xa70324[_0xb41b('0x2d')]['fields']));_0x174d6c[_0xb41b('0x31')]=_0x174d6c['attributes'][_0xb41b('0x32')]?_0x174d6c['attributes']:_0x47bab5[_0xb41b('0x2c')];if(_0xa70324['query'][_0xb41b('0x43')]){_0x174d6c[_0xb41b('0x3d')]=[{'all':!![]}];}_0x174d6c=_[_0xb41b('0x3a')]({},_0x174d6c,_0xa70324[_0xb41b('0x3c')]);return db['FreshdeskField'][_0xb41b('0x44')](_0x174d6c)[_0xb41b('0x25')](handleEntityNotFound(_0x3f181c,null))['then'](respondWithResult(_0x3f181c,null))[_0xb41b('0x45')](handleError(_0x3f181c,null));};exports['create']=function(_0x5cc658,_0x5733d0){return db['FreshdeskField'][_0xb41b('0x46')](_0x5cc658[_0xb41b('0x47')],{})[_0xb41b('0x25')](respondWithResult(_0x5733d0,0xc9))[_0xb41b('0x45')](handleError(_0x5733d0,null));};exports[_0xb41b('0x24')]=function(_0x349a6c,_0x34d076){if(_0x349a6c[_0xb41b('0x47')]['id']){delete _0x349a6c[_0xb41b('0x47')]['id'];}return db[_0xb41b('0x3e')][_0xb41b('0x44')]({'where':{'id':_0x349a6c[_0xb41b('0x42')]['id']}})[_0xb41b('0x25')](handleEntityNotFound(_0x34d076,null))[_0xb41b('0x25')](saveUpdates(_0x349a6c[_0xb41b('0x47')],null))[_0xb41b('0x25')](respondWithResult(_0x34d076,null))['catch'](handleError(_0x34d076,null));};exports[_0xb41b('0x48')]=function(_0x5e041d,_0x4a7aa3){return db[_0xb41b('0x3e')][_0xb41b('0x44')]({'where':{'id':_0x5e041d[_0xb41b('0x42')]['id']}})[_0xb41b('0x25')](handleEntityNotFound(_0x4a7aa3,null))[_0xb41b('0x25')](removeEntity(_0x4a7aa3,null))[_0xb41b('0x45')](handleError(_0x4a7aa3,null));};
\ No newline at end of file
+var _0x0db9=['where','filter','merge','FreshdeskField','includeAll','include','findAll','rows','catch','show','keys','options','find','create','body','params','destroy','eml-format','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort'];(function(_0x23b612,_0x440ea6){var _0x104bcb=function(_0x37f7a4){while(--_0x37f7a4){_0x23b612['push'](_0x23b612['shift']());}};_0x104bcb(++_0x440ea6);}(_0x0db9,0xa3));var _0x90db=function(_0xa041de,_0x3600e2){_0xa041de=_0xa041de-0x0;var _0x1d654c=_0x0db9[_0xa041de];return _0x1d654c;};'use strict';var emlformat=require(_0x90db('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x90db('0x1'));var moment=require(_0x90db('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x90db('0x3'));var util=require('util');var path=require(_0x90db('0x4'));var sox=require(_0x90db('0x5'));var csv=require('to-csv');var ejs=require(_0x90db('0x6'));var fs=require('fs');var fs_extra=require(_0x90db('0x7'));var _=require(_0x90db('0x8'));var squel=require(_0x90db('0x9'));var crypto=require(_0x90db('0xa'));var jsforce=require(_0x90db('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x90db('0xc'));var querystring=require(_0x90db('0xd'));var Papa=require(_0x90db('0xe'));var Redis=require(_0x90db('0xf'));var authService=require(_0x90db('0x10'));var qs=require(_0x90db('0x11'));var as=require(_0x90db('0x12'));var hardwareService=require(_0x90db('0x13'));var logger=require(_0x90db('0x14'))(_0x90db('0x15'));var utils=require(_0x90db('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x90db('0x17'));var db=require(_0x90db('0x18'))['db'];function respondWithStatusCode(_0x45ad3c,_0x436327){_0x436327=_0x436327||0xcc;return function(_0x1b410d){if(_0x1b410d){return _0x45ad3c[_0x90db('0x19')](_0x436327);}return _0x45ad3c[_0x90db('0x1a')](_0x436327)[_0x90db('0x1b')]();};}function respondWithResult(_0x7826f7,_0x309aea){_0x309aea=_0x309aea||0xc8;return function(_0x334e22){if(_0x334e22){return _0x7826f7[_0x90db('0x1a')](_0x309aea)[_0x90db('0x1c')](_0x334e22);}};}function respondWithFilteredResult(_0xda2abe,_0x544226){return function(_0x3124d4){if(_0x3124d4){var _0x5ef456=typeof _0x544226[_0x90db('0x1d')]===_0x90db('0x1e')&&typeof _0x544226[_0x90db('0x1f')]===_0x90db('0x1e');var _0x32ff04=_0x3124d4[_0x90db('0x20')];var _0x15e33e=_0x5ef456?0x0:_0x544226[_0x90db('0x1d')];var _0x24a16a=_0x5ef456?_0x3124d4[_0x90db('0x20')]:_0x544226['offset']+_0x544226[_0x90db('0x1f')];var _0x445a22;if(_0x24a16a>=_0x32ff04){_0x24a16a=_0x32ff04;_0x445a22=0xc8;}else{_0x445a22=0xce;}_0xda2abe['status'](_0x445a22);return _0xda2abe['set'](_0x90db('0x21'),_0x15e33e+'-'+_0x24a16a+'/'+_0x32ff04)[_0x90db('0x1c')](_0x3124d4);}return null;};}function patchUpdates(_0x300dc2){return function(_0x3a58c4){try{jsonpatch[_0x90db('0x22')](_0x3a58c4,_0x300dc2,!![]);}catch(_0x168eaf){return BPromise[_0x90db('0x23')](_0x168eaf);}return _0x3a58c4['save']();};}function saveUpdates(_0xb45340,_0x1aeab9){return function(_0x23934a){if(_0x23934a){return _0x23934a[_0x90db('0x24')](_0xb45340)['then'](function(_0x43028e){return _0x43028e;});}return null;};}function removeEntity(_0x5a98f6,_0x459068){return function(_0x19f9c6){if(_0x19f9c6){return _0x19f9c6['destroy']()[_0x90db('0x25')](function(){_0x5a98f6[_0x90db('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f8469,_0x3e3fbd){return function(_0x5b3c09){if(!_0x5b3c09){_0x2f8469[_0x90db('0x19')](0x194);}return _0x5b3c09;};}function handleError(_0xe026cf,_0x1cc660){_0x1cc660=_0x1cc660||0x1f4;return function(_0x94cd84){logger['error'](_0x94cd84[_0x90db('0x26')]);if(_0x94cd84[_0x90db('0x27')]){delete _0x94cd84[_0x90db('0x27')];}_0xe026cf[_0x90db('0x1a')](_0x1cc660)[_0x90db('0x28')](_0x94cd84);};}exports[_0x90db('0x29')]=function(_0x44b5b6,_0x3c7f67){var _0x4c6311={},_0x3489d1={},_0x552c2e={'count':0x0,'rows':[]};var _0xa2bb=_[_0x90db('0x2a')](db['FreshdeskField'][_0x90db('0x2b')],function(_0xfc4ceb){return{'name':_0xfc4ceb[_0x90db('0x2c')],'type':_0xfc4ceb[_0x90db('0x2d')]['key']};});_0x3489d1[_0x90db('0x2e')]=_[_0x90db('0x2a')](_0xa2bb,_0x90db('0x27'));_0x3489d1['query']=_['keys'](_0x44b5b6[_0x90db('0x2f')]);_0x3489d1[_0x90db('0x30')]=_[_0x90db('0x31')](_0x3489d1['model'],_0x3489d1[_0x90db('0x2f')]);_0x4c6311[_0x90db('0x32')]=_['intersection'](_0x3489d1[_0x90db('0x2e')],qs[_0x90db('0x33')](_0x44b5b6['query'][_0x90db('0x33')]));_0x4c6311[_0x90db('0x32')]=_0x4c6311[_0x90db('0x32')][_0x90db('0x34')]?_0x4c6311['attributes']:_0x3489d1['model'];if(!_0x44b5b6[_0x90db('0x2f')]['hasOwnProperty'](_0x90db('0x35'))){_0x4c6311[_0x90db('0x1f')]=qs[_0x90db('0x1f')](_0x44b5b6['query'][_0x90db('0x1f')]);_0x4c6311['offset']=qs[_0x90db('0x1d')](_0x44b5b6[_0x90db('0x2f')]['offset']);}_0x4c6311[_0x90db('0x36')]=qs[_0x90db('0x37')](_0x44b5b6[_0x90db('0x2f')][_0x90db('0x37')]);_0x4c6311[_0x90db('0x38')]=qs[_0x90db('0x30')](_['pick'](_0x44b5b6[_0x90db('0x2f')],_0x3489d1[_0x90db('0x30')]),_0xa2bb);if(_0x44b5b6['query'][_0x90db('0x39')]){_0x4c6311[_0x90db('0x38')]=_[_0x90db('0x3a')](_0x4c6311['where'],{'$or':_[_0x90db('0x2a')](_0xa2bb,function(_0x2c9f57){if(_0x2c9f57['type']!=='VIRTUAL'){var _0x57c06b={};_0x57c06b[_0x2c9f57['name']]={'$like':'%'+_0x44b5b6[_0x90db('0x2f')][_0x90db('0x39')]+'%'};return _0x57c06b;}})});}_0x4c6311=_[_0x90db('0x3a')]({},_0x4c6311,_0x44b5b6['options']);var _0x55b0b2={'where':_0x4c6311[_0x90db('0x38')]};return db[_0x90db('0x3b')]['count'](_0x55b0b2)[_0x90db('0x25')](function(_0x592c01){_0x552c2e[_0x90db('0x20')]=_0x592c01;if(_0x44b5b6[_0x90db('0x2f')][_0x90db('0x3c')]){_0x4c6311[_0x90db('0x3d')]=[{'all':!![]}];}return db[_0x90db('0x3b')][_0x90db('0x3e')](_0x4c6311);})[_0x90db('0x25')](function(_0x1d6f9a){_0x552c2e[_0x90db('0x3f')]=_0x1d6f9a;return _0x552c2e;})['then'](respondWithFilteredResult(_0x3c7f67,_0x4c6311))[_0x90db('0x40')](handleError(_0x3c7f67,null));};exports[_0x90db('0x41')]=function(_0x2e1fc8,_0xd45db3){var _0x4611f1={'raw':!![],'where':{'id':_0x2e1fc8['params']['id']}},_0x4f0b46={};_0x4f0b46[_0x90db('0x2e')]=_['keys'](db[_0x90db('0x3b')][_0x90db('0x2b')]);_0x4f0b46[_0x90db('0x2f')]=_[_0x90db('0x42')](_0x2e1fc8[_0x90db('0x2f')]);_0x4f0b46['filters']=_['intersection'](_0x4f0b46['model'],_0x4f0b46[_0x90db('0x2f')]);_0x4611f1[_0x90db('0x32')]=_[_0x90db('0x31')](_0x4f0b46['model'],qs[_0x90db('0x33')](_0x2e1fc8[_0x90db('0x2f')][_0x90db('0x33')]));_0x4611f1[_0x90db('0x32')]=_0x4611f1['attributes'][_0x90db('0x34')]?_0x4611f1[_0x90db('0x32')]:_0x4f0b46[_0x90db('0x2e')];if(_0x2e1fc8[_0x90db('0x2f')]['includeAll']){_0x4611f1['include']=[{'all':!![]}];}_0x4611f1=_[_0x90db('0x3a')]({},_0x4611f1,_0x2e1fc8[_0x90db('0x43')]);return db[_0x90db('0x3b')][_0x90db('0x44')](_0x4611f1)['then'](handleEntityNotFound(_0xd45db3,null))[_0x90db('0x25')](respondWithResult(_0xd45db3,null))['catch'](handleError(_0xd45db3,null));};exports[_0x90db('0x45')]=function(_0x2e4a8a,_0x576449){return db[_0x90db('0x3b')][_0x90db('0x45')](_0x2e4a8a[_0x90db('0x46')],{})[_0x90db('0x25')](respondWithResult(_0x576449,0xc9))[_0x90db('0x40')](handleError(_0x576449,null));};exports[_0x90db('0x24')]=function(_0x407f50,_0x62b965){if(_0x407f50[_0x90db('0x46')]['id']){delete _0x407f50[_0x90db('0x46')]['id'];}return db[_0x90db('0x3b')]['find']({'where':{'id':_0x407f50[_0x90db('0x47')]['id']}})[_0x90db('0x25')](handleEntityNotFound(_0x62b965,null))[_0x90db('0x25')](saveUpdates(_0x407f50[_0x90db('0x46')],null))[_0x90db('0x25')](respondWithResult(_0x62b965,null))[_0x90db('0x40')](handleError(_0x62b965,null));};exports[_0x90db('0x48')]=function(_0x3a768b,_0x43c760){return db[_0x90db('0x3b')][_0x90db('0x44')]({'where':{'id':_0x3a768b[_0x90db('0x47')]['id']}})['then'](handleEntityNotFound(_0x43c760,null))[_0x90db('0x25')](removeEntity(_0x43c760,null))['catch'](handleError(_0x43c760,null));};
\ No newline at end of file
index 43db7c2..60a4069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe97d=['FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','FieldId','util','../../config/logger','api','moment','request-promise','path','rimraf','define'];(function(_0x2e986d,_0x4b6b63){var _0x351c79=function(_0xf178c7){while(--_0xf178c7){_0x2e986d['push'](_0x2e986d['shift']());}};_0x351c79(++_0x4b6b63);}(_0xe97d,0x178));var _0xde97=function(_0x490cd3,_0x97d5ee){_0x490cd3=_0x490cd3-0x0;var _0x3320d7=_0xe97d[_0x490cd3];return _0x3320d7;};'use strict';var _=require('lodash');var util=require(_0xde97('0x0'));var logger=require(_0xde97('0x1'))(_0xde97('0x2'));var moment=require(_0xde97('0x3'));var BPromise=require('bluebird');var rp=require(_0xde97('0x4'));var fs=require('fs');var path=require(_0xde97('0x5'));var rimraf=require(_0xde97('0x6'));var config=require('../../config/environment');var attributes=require('./intFreshdeskField.attributes');module['exports']=function(_0x160276,_0x212d5a){return _0x160276[_0xde97('0x7')](_0xde97('0x8'),attributes,{'tableName':_0xde97('0x9'),'paranoid':![],'indexes':[{'name':_0xde97('0xa'),'fields':['idField',_0xde97('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x06b0=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intFreshdeskField.attributes','exports','int_freshdesk_fields','freshdesk_unique_index','idField','lodash'];(function(_0xdeb09f,_0xf88fb4){var _0x9f5c22=function(_0x2eafe2){while(--_0x2eafe2){_0xdeb09f['push'](_0xdeb09f['shift']());}};_0x9f5c22(++_0xf88fb4);}(_0x06b0,0x74));var _0x006b=function(_0xda8967,_0x2b3d45){_0xda8967=_0xda8967-0x0;var _0x266d4a=_0x06b0[_0xda8967];return _0x266d4a;};'use strict';var _=require(_0x006b('0x0'));var util=require('util');var logger=require(_0x006b('0x1'))(_0x006b('0x2'));var moment=require(_0x006b('0x3'));var BPromise=require(_0x006b('0x4'));var rp=require(_0x006b('0x5'));var fs=require('fs');var path=require(_0x006b('0x6'));var rimraf=require('rimraf');var config=require(_0x006b('0x7'));var attributes=require(_0x006b('0x8'));module[_0x006b('0x9')]=function(_0x5e021a,_0x1f9838){return _0x5e021a['define']('FreshdeskField',attributes,{'tableName':_0x006b('0xa'),'paranoid':![],'indexes':[{'name':_0x006b('0xb'),'fields':[_0x006b('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c678ffc..7a1999b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5220=['debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskField,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','request\x20sent'];(function(_0x2d6553,_0x195c39){var _0x5b7a08=function(_0x1f21b8){while(--_0x1f21b8){_0x2d6553['push'](_0x2d6553['shift']());}};_0x5b7a08(++_0x195c39);}(_0x5220,0xf1));var _0x0522=function(_0x320839,_0x3a18a5){_0x320839=_0x320839-0x0;var _0x29387e=_0x5220[_0x320839];return _0x29387e;};'use strict';var _=require('lodash');var util=require(_0x0522('0x0'));var moment=require(_0x0522('0x1'));var BPromise=require(_0x0522('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0522('0x3'));var logger=require(_0x0522('0x4'))(_0x0522('0x5'));var config=require('../../config/environment');var jayson=require(_0x0522('0x6'));var client=jayson[_0x0522('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5f223b,_0x357087,_0xbd2d72){return new BPromise(function(_0x15abfb,_0x10d020){return client[_0x0522('0x8')](_0x5f223b,_0xbd2d72)[_0x0522('0x9')](function(_0x470910){logger['info']('FreshdeskField,\x20%s,\x20%s',_0x357087,_0x0522('0xa'));logger[_0x0522('0xb')](_0x0522('0xc'),_0x357087,_0x0522('0xa'),JSON[_0x0522('0xd')](_0x470910));if(_0x470910[_0x0522('0xe')]){if(_0x470910[_0x0522('0xe')][_0x0522('0xf')]===0x1f4){logger['error'](_0x0522('0x10'),_0x357087,_0x470910['error'][_0x0522('0x11')]);return _0x10d020(_0x470910[_0x0522('0xe')][_0x0522('0x11')]);}logger[_0x0522('0xe')](_0x0522('0x10'),_0x357087,_0x470910['error'][_0x0522('0x11')]);return _0x15abfb(_0x470910[_0x0522('0xe')]['message']);}else{logger[_0x0522('0x12')](_0x0522('0x10'),_0x357087,_0x0522('0xa'));_0x15abfb(_0x470910[_0x0522('0x13')][_0x0522('0x11')]);}})[_0x0522('0x14')](function(_0x56dd60){logger[_0x0522('0xe')]('FreshdeskField,\x20%s,\x20%s',_0x357087,_0x56dd60);_0x10d020(_0x56dd60);});});}
\ No newline at end of file
+var _0x746f=['then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x524379,_0x21ff2c){var _0x1ef2cc=function(_0x5f431c){while(--_0x5f431c){_0x524379['push'](_0x524379['shift']());}};_0x1ef2cc(++_0x21ff2c);}(_0x746f,0x1c3));var _0xf746=function(_0x17e4b0,_0x562736){_0x17e4b0=_0x17e4b0-0x0;var _0x98c50c=_0x746f[_0x17e4b0];return _0x98c50c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf746('0x0'));var BPromise=require(_0xf746('0x1'));var rs=require(_0xf746('0x2'));var fs=require('fs');var Redis=require(_0xf746('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf746('0x4'));var logger=require(_0xf746('0x5'))(_0xf746('0x6'));var config=require('../../config/environment');var jayson=require(_0xf746('0x7'));var client=jayson[_0xf746('0x8')][_0xf746('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d15ab,_0x410539,_0x30d8b2){return new BPromise(function(_0x3cb6cc,_0x863cfc){return client[_0xf746('0xa')](_0x5d15ab,_0x30d8b2)[_0xf746('0xb')](function(_0x8ab7cb){logger[_0xf746('0xc')](_0xf746('0xd'),_0x410539,_0xf746('0xe'));logger['debug'](_0xf746('0xf'),_0x410539,'request\x20sent',JSON[_0xf746('0x10')](_0x8ab7cb));if(_0x8ab7cb[_0xf746('0x11')]){if(_0x8ab7cb[_0xf746('0x11')][_0xf746('0x12')]===0x1f4){logger[_0xf746('0x11')](_0xf746('0xd'),_0x410539,_0x8ab7cb['error'][_0xf746('0x13')]);return _0x863cfc(_0x8ab7cb['error'][_0xf746('0x13')]);}logger[_0xf746('0x11')](_0xf746('0xd'),_0x410539,_0x8ab7cb[_0xf746('0x11')][_0xf746('0x13')]);return _0x3cb6cc(_0x8ab7cb['error'][_0xf746('0x13')]);}else{logger[_0xf746('0xc')](_0xf746('0xd'),_0x410539,_0xf746('0xe'));_0x3cb6cc(_0x8ab7cb[_0xf746('0x14')][_0xf746('0x13')]);}})[_0xf746('0x15')](function(_0x1dc293){logger['error'](_0xf746('0xd'),_0x410539,_0x1dc293);_0x863cfc(_0x1dc293);});});}
\ No newline at end of file
index 087651a..a030712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a3=['getFields','post','addConfiguration','update','delete','/:id','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id/configurations','getConfigurations'];(function(_0x1ff74b,_0x24e1a1){var _0x2f0fe3=function(_0x3306e5){while(--_0x3306e5){_0x1ff74b['push'](_0x1ff74b['shift']());}};_0x2f0fe3(++_0x24e1a1);}(_0x44a3,0x1a9));var _0x344a=function(_0x44c7a2,_0x449be7){_0x44c7a2=_0x44c7a2-0x0;var _0x3efc90=_0x44a3[_0x44c7a2];return _0x3efc90;};'use strict';var multer=require(_0x344a('0x0'));var util=require(_0x344a('0x1'));var path=require(_0x344a('0x2'));var timeout=require(_0x344a('0x3'));var express=require(_0x344a('0x4'));var router=express[_0x344a('0x5')]();var fs_extra=require(_0x344a('0x6'));var auth=require(_0x344a('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x344a('0x8'));var controller=require(_0x344a('0x9'));router[_0x344a('0xa')]('/',auth[_0x344a('0xb')](),controller[_0x344a('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x344a('0xa')](_0x344a('0xd'),auth[_0x344a('0xb')](),controller[_0x344a('0xe')]);router[_0x344a('0xa')]('/:id/fields',auth[_0x344a('0xb')](),controller[_0x344a('0xf')]);router['post']('/',auth[_0x344a('0xb')](),controller['create']);router[_0x344a('0x10')]('/:id/configurations',auth[_0x344a('0xb')](),controller[_0x344a('0x11')]);router['put']('/:id',auth[_0x344a('0xb')](),controller[_0x344a('0x12')]);router[_0x344a('0x13')](_0x344a('0x14'),auth[_0x344a('0xb')](),controller[_0x344a('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x6324=['isAuthenticated','index','show','getConfigurations','getFields','post','create','/:id/configurations','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get'];(function(_0xf06c54,_0x174350){var _0x3dbd4e=function(_0x2ad9c4){while(--_0x2ad9c4){_0xf06c54['push'](_0xf06c54['shift']());}};_0x3dbd4e(++_0x174350);}(_0x6324,0x142));var _0x4632=function(_0x11155f,_0x57b687){_0x11155f=_0x11155f-0x0;var _0xd07e48=_0x6324[_0x11155f];return _0xd07e48;};'use strict';var multer=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var path=require(_0x4632('0x2'));var timeout=require(_0x4632('0x3'));var express=require('express');var router=express[_0x4632('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4632('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4632('0x6'));var controller=require('./intFreshsalesAccount.controller');router[_0x4632('0x7')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0x9')]);router[_0x4632('0x7')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0xa')]);router[_0x4632('0x7')]('/:id/configurations',auth[_0x4632('0x8')](),controller[_0x4632('0xb')]);router['get']('/:id/fields',auth[_0x4632('0x8')](),controller[_0x4632('0xc')]);router[_0x4632('0xd')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0xe')]);router[_0x4632('0xd')](_0x4632('0xf'),auth[_0x4632('0x8')](),controller['addConfiguration']);router[_0x4632('0x10')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0x11')]);router[_0x4632('0x12')](_0x4632('0x13'),auth['isAuthenticated'](),controller[_0x4632('0x14')]);module[_0x4632('0x15')]=router;
\ No newline at end of file
index 3755c3c..1c2d950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['sequelize','STRING','username','remoteUri'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xfef3,0x118));var _0x3fef=function(_0x1082ee,_0x18607a){_0x1082ee=_0x1082ee-0x0;var _0x88187e=_0xfef3[_0x1082ee];return _0x88187e;};'use strict';var Sequelize=require(_0x3fef('0x0'));module['exports']={'name':{'type':Sequelize[_0x3fef('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x3fef('0x1')],'unique':_0x3fef('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x3fef('0x1')],'unique':_0x3fef('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xf61e=['remoteUri','sequelize','exports','STRING','username'];(function(_0x526e9f,_0xb70342){var _0x353069=function(_0x138d19){while(--_0x138d19){_0x526e9f['push'](_0x526e9f['shift']());}};_0x353069(++_0xb70342);}(_0xf61e,0x191));var _0xef61=function(_0x405116,_0x42a884){_0x405116=_0x405116-0x0;var _0x56cbdc=_0xf61e[_0x405116];return _0x56cbdc;};'use strict';var Sequelize=require(_0xef61('0x0'));module[_0xef61('0x1')]={'name':{'type':Sequelize[_0xef61('0x2')]},'description':{'type':Sequelize[_0xef61('0x2')]},'username':{'type':Sequelize[_0xef61('0x2')],'unique':_0xef61('0x3')},'apiKey':{'type':Sequelize[_0xef61('0x2')]},'remoteUri':{'type':Sequelize[_0xef61('0x2')],'unique':_0xef61('0x4')},'serverUrl':{'type':Sequelize[_0xef61('0x2')],'allowNull':![]}};
\ No newline at end of file
index c04be7a..a8187c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa155=['findAll','rows','catch','show','params','length','find','create','body','getConfigurations','findOne','addConfiguration','Subjects','getSubjects','Descriptions','channel','FreshsalesConfiguration','FreshsalesField','username','remoteUri','apiKey','slice','substring','lastIndexOf','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','limit','undefined','offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','FreshsalesAccount'];(function(_0x243201,_0x3fb4a6){var _0x5eb2b9=function(_0x491e79){while(--_0x491e79){_0x243201['push'](_0x243201['shift']());}};_0x5eb2b9(++_0x3fb4a6);}(_0xa155,0xf7));var _0x5a15=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xa155[_0x2dea24];return _0x309d58;};'use strict';var emlformat=require(_0x5a15('0x0'));var rimraf=require(_0x5a15('0x1'));var zipdir=require(_0x5a15('0x2'));var jsonpatch=require(_0x5a15('0x3'));var rp=require('request-promise');var moment=require(_0x5a15('0x4'));var BPromise=require(_0x5a15('0x5'));var Mustache=require(_0x5a15('0x6'));var util=require(_0x5a15('0x7'));var path=require('path');var sox=require(_0x5a15('0x8'));var csv=require('to-csv');var ejs=require(_0x5a15('0x9'));var fs=require('fs');var fs_extra=require(_0x5a15('0xa'));var _=require(_0x5a15('0xb'));var squel=require(_0x5a15('0xc'));var crypto=require(_0x5a15('0xd'));var jsforce=require(_0x5a15('0xe'));var deskjs=require(_0x5a15('0xf'));var toCsv=require(_0x5a15('0x10'));var querystring=require('querystring');var Papa=require(_0x5a15('0x11'));var Redis=require(_0x5a15('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5a15('0x13'));var as=require(_0x5a15('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5a15('0x15'))('api');var utils=require(_0x5a15('0x16'));var config=require(_0x5a15('0x17'));var licenseUtil=require(_0x5a15('0x18'));var db=require(_0x5a15('0x19'))['db'];var integrations=require(_0x5a15('0x1a'));function respondWithStatusCode(_0x17fba3,_0x2e2550){_0x2e2550=_0x2e2550||0xcc;return function(_0x4f66c6){if(_0x4f66c6){return _0x17fba3[_0x5a15('0x1b')](_0x2e2550);}return _0x17fba3[_0x5a15('0x1c')](_0x2e2550)[_0x5a15('0x1d')]();};}function respondWithResult(_0x329ca0,_0x359234){_0x359234=_0x359234||0xc8;return function(_0x5940b8){if(_0x5940b8){return _0x329ca0[_0x5a15('0x1c')](_0x359234)['json'](_0x5940b8);}};}function respondWithFilteredResult(_0x5ce8cd,_0x34004a){return function(_0x2b9542){if(_0x2b9542){var _0x514c71=typeof _0x34004a['offset']==='undefined'&&typeof _0x34004a[_0x5a15('0x1e')]===_0x5a15('0x1f');var _0x430d69=_0x2b9542['count'];var _0x3c7526=_0x514c71?0x0:_0x34004a[_0x5a15('0x20')];var _0x13d0b3=_0x514c71?_0x2b9542[_0x5a15('0x21')]:_0x34004a[_0x5a15('0x20')]+_0x34004a[_0x5a15('0x1e')];var _0x2f8c91;if(_0x13d0b3>=_0x430d69){_0x13d0b3=_0x430d69;_0x2f8c91=0xc8;}else{_0x2f8c91=0xce;}_0x5ce8cd[_0x5a15('0x1c')](_0x2f8c91);return _0x5ce8cd[_0x5a15('0x22')](_0x5a15('0x23'),_0x3c7526+'-'+_0x13d0b3+'/'+_0x430d69)[_0x5a15('0x24')](_0x2b9542);}return null;};}function patchUpdates(_0x4ade88){return function(_0x118e52){try{jsonpatch[_0x5a15('0x25')](_0x118e52,_0x4ade88,!![]);}catch(_0xe50e13){return BPromise[_0x5a15('0x26')](_0xe50e13);}return _0x118e52[_0x5a15('0x27')]();};}function saveUpdates(_0x112152,_0x383708){return function(_0x26dc21){if(_0x26dc21){return _0x26dc21[_0x5a15('0x28')](_0x112152)[_0x5a15('0x29')](function(_0x1bbc27){return _0x1bbc27;});}return null;};}function removeEntity(_0x3cffcd,_0x5e4163){return function(_0x20635d){if(_0x20635d){return _0x20635d[_0x5a15('0x2a')]()[_0x5a15('0x29')](function(){_0x3cffcd[_0x5a15('0x1c')](0xcc)[_0x5a15('0x1d')]();});}};}function handleEntityNotFound(_0x228e42,_0x20298e){return function(_0x1c22d0){if(!_0x1c22d0){_0x228e42[_0x5a15('0x1b')](0x194);}return _0x1c22d0;};}function handleError(_0x1206ef,_0x2c2cfb){_0x2c2cfb=_0x2c2cfb||0x1f4;return function(_0x3ba1c1){logger[_0x5a15('0x2b')](_0x3ba1c1[_0x5a15('0x2c')]);if(_0x3ba1c1[_0x5a15('0x2d')]){delete _0x3ba1c1['name'];}_0x1206ef[_0x5a15('0x1c')](_0x2c2cfb)[_0x5a15('0x2e')](_0x3ba1c1);};}exports['index']=function(_0x5caf75,_0x34aa88){var _0x56aeb5={},_0x33475d={},_0x1a9c44={'count':0x0,'rows':[]};var _0x36e6f2=_[_0x5a15('0x2f')](db['FreshsalesAccount'][_0x5a15('0x30')],function(_0x34c9c1){return{'name':_0x34c9c1[_0x5a15('0x31')],'type':_0x34c9c1[_0x5a15('0x32')][_0x5a15('0x33')]};});_0x33475d[_0x5a15('0x34')]=_[_0x5a15('0x2f')](_0x36e6f2,_0x5a15('0x2d'));_0x33475d[_0x5a15('0x35')]=_[_0x5a15('0x36')](_0x5caf75[_0x5a15('0x35')]);_0x33475d[_0x5a15('0x37')]=_[_0x5a15('0x38')](_0x33475d['model'],_0x33475d[_0x5a15('0x35')]);_0x56aeb5[_0x5a15('0x39')]=_[_0x5a15('0x38')](_0x33475d['model'],qs[_0x5a15('0x3a')](_0x5caf75[_0x5a15('0x35')][_0x5a15('0x3a')]));_0x56aeb5[_0x5a15('0x39')]=_0x56aeb5['attributes']['length']?_0x56aeb5[_0x5a15('0x39')]:_0x33475d[_0x5a15('0x34')];if(!_0x5caf75[_0x5a15('0x35')][_0x5a15('0x3b')](_0x5a15('0x3c'))){_0x56aeb5['limit']=qs[_0x5a15('0x1e')](_0x5caf75[_0x5a15('0x35')]['limit']);_0x56aeb5[_0x5a15('0x20')]=qs[_0x5a15('0x20')](_0x5caf75[_0x5a15('0x35')][_0x5a15('0x20')]);}_0x56aeb5['order']=qs[_0x5a15('0x3d')](_0x5caf75['query'][_0x5a15('0x3d')]);_0x56aeb5['where']=qs[_0x5a15('0x37')](_[_0x5a15('0x3e')](_0x5caf75[_0x5a15('0x35')],_0x33475d[_0x5a15('0x37')]),_0x36e6f2);if(_0x5caf75[_0x5a15('0x35')][_0x5a15('0x3f')]){_0x56aeb5['where']=_[_0x5a15('0x40')](_0x56aeb5[_0x5a15('0x41')],{'$or':_[_0x5a15('0x2f')](_0x36e6f2,function(_0x1f2170){if(_0x1f2170[_0x5a15('0x32')]!==_0x5a15('0x42')){var _0x1c37ee={};_0x1c37ee[_0x1f2170[_0x5a15('0x2d')]]={'$like':'%'+_0x5caf75[_0x5a15('0x35')]['filter']+'%'};return _0x1c37ee;}})});}_0x56aeb5=_[_0x5a15('0x40')]({},_0x56aeb5,_0x5caf75[_0x5a15('0x43')]);var _0x2e1e78={'where':_0x56aeb5[_0x5a15('0x41')]};return db['FreshsalesAccount'][_0x5a15('0x21')](_0x2e1e78)[_0x5a15('0x29')](function(_0x221d5b){_0x1a9c44['count']=_0x221d5b;if(_0x5caf75[_0x5a15('0x35')][_0x5a15('0x44')]){_0x56aeb5[_0x5a15('0x45')]=[{'all':!![]}];}return db[_0x5a15('0x46')][_0x5a15('0x47')](_0x56aeb5);})[_0x5a15('0x29')](function(_0x4bcc01){_0x1a9c44[_0x5a15('0x48')]=_0x4bcc01;return _0x1a9c44;})[_0x5a15('0x29')](respondWithFilteredResult(_0x34aa88,_0x56aeb5))[_0x5a15('0x49')](handleError(_0x34aa88,null));};exports[_0x5a15('0x4a')]=function(_0x32cbf2,_0x3cd89f){var _0xdb3b45={'raw':![],'where':{'id':_0x32cbf2[_0x5a15('0x4b')]['id']}},_0x3bac94={};_0x3bac94[_0x5a15('0x34')]=_['keys'](db[_0x5a15('0x46')][_0x5a15('0x30')]);_0x3bac94['query']=_[_0x5a15('0x36')](_0x32cbf2[_0x5a15('0x35')]);_0x3bac94['filters']=_[_0x5a15('0x38')](_0x3bac94[_0x5a15('0x34')],_0x3bac94[_0x5a15('0x35')]);_0xdb3b45['attributes']=_[_0x5a15('0x38')](_0x3bac94[_0x5a15('0x34')],qs[_0x5a15('0x3a')](_0x32cbf2[_0x5a15('0x35')][_0x5a15('0x3a')]));_0xdb3b45[_0x5a15('0x39')]=_0xdb3b45['attributes'][_0x5a15('0x4c')]?_0xdb3b45['attributes']:_0x3bac94[_0x5a15('0x34')];if(_0x32cbf2[_0x5a15('0x35')]['includeAll']){_0xdb3b45[_0x5a15('0x45')]=[{'all':!![]}];}_0xdb3b45=_[_0x5a15('0x40')]({},_0xdb3b45,_0x32cbf2[_0x5a15('0x43')]);return db[_0x5a15('0x46')][_0x5a15('0x4d')](_0xdb3b45)[_0x5a15('0x29')](handleEntityNotFound(_0x3cd89f,null))[_0x5a15('0x29')](respondWithResult(_0x3cd89f,null))[_0x5a15('0x49')](handleError(_0x3cd89f,null));};exports[_0x5a15('0x4e')]=function(_0x1dde77,_0x4fbd47){return db['FreshsalesAccount']['create'](_0x1dde77['body'],{})[_0x5a15('0x29')](respondWithResult(_0x4fbd47,0xc9))[_0x5a15('0x49')](handleError(_0x4fbd47,null));};exports[_0x5a15('0x28')]=function(_0xc56969,_0x439701){if(_0xc56969['body']['id']){delete _0xc56969['body']['id'];}return db[_0x5a15('0x46')]['find']({'where':{'id':_0xc56969['params']['id']}})['then'](handleEntityNotFound(_0x439701,null))['then'](saveUpdates(_0xc56969[_0x5a15('0x4f')],null))[_0x5a15('0x29')](respondWithResult(_0x439701,null))[_0x5a15('0x49')](handleError(_0x439701,null));};exports['destroy']=function(_0xbc7b9f,_0x5a3483){return db['FreshsalesAccount'][_0x5a15('0x4d')]({'where':{'id':_0xbc7b9f['params']['id']}})[_0x5a15('0x29')](handleEntityNotFound(_0x5a3483,null))[_0x5a15('0x29')](removeEntity(_0x5a3483,null))[_0x5a15('0x49')](handleError(_0x5a3483,null));};exports[_0x5a15('0x50')]=function(_0x4b22e7,_0x37384a,_0x47bab8){var _0x18e76b={};var _0x326472={};var _0x5a582e;var _0x22dd7d;return db[_0x5a15('0x46')][_0x5a15('0x51')]({'where':{'id':_0x4b22e7[_0x5a15('0x4b')]['id']}})[_0x5a15('0x29')](handleEntityNotFound(_0x37384a,null))['then'](function(_0x2ae428){if(_0x2ae428){_0x5a582e=_0x2ae428;_0x326472['model']=_['keys'](db['FreshsalesConfiguration'][_0x5a15('0x30')]);_0x326472[_0x5a15('0x35')]=_[_0x5a15('0x36')](_0x4b22e7['query']);_0x326472[_0x5a15('0x37')]=_['intersection'](_0x326472[_0x5a15('0x34')],_0x326472[_0x5a15('0x35')]);_0x18e76b[_0x5a15('0x39')]=_['intersection'](_0x326472[_0x5a15('0x34')],qs[_0x5a15('0x3a')](_0x4b22e7['query'][_0x5a15('0x3a')]));_0x18e76b['attributes']=_0x18e76b[_0x5a15('0x39')]['length']?_0x18e76b[_0x5a15('0x39')]:_0x326472[_0x5a15('0x34')];_0x18e76b['order']=qs[_0x5a15('0x3d')](_0x4b22e7['query'][_0x5a15('0x3d')]);_0x18e76b[_0x5a15('0x41')]=qs['filters'](_[_0x5a15('0x3e')](_0x4b22e7['query'],_0x326472[_0x5a15('0x37')]));if(_0x4b22e7[_0x5a15('0x35')][_0x5a15('0x3f')]){_0x18e76b[_0x5a15('0x41')]=_[_0x5a15('0x40')](_0x18e76b[_0x5a15('0x41')],{'$or':_[_0x5a15('0x2f')](_0x18e76b[_0x5a15('0x39')],function(_0x13b358){var _0x4209a7={};_0x4209a7[_0x13b358]={'$like':'%'+_0x4b22e7[_0x5a15('0x35')][_0x5a15('0x3f')]+'%'};return _0x4209a7;})});}_0x18e76b=_['merge']({},_0x18e76b,_0x4b22e7[_0x5a15('0x43')]);return _0x5a582e[_0x5a15('0x50')](_0x18e76b);}})[_0x5a15('0x29')](function(_0xa8f345){if(_0xa8f345){_0x22dd7d=_0xa8f345[_0x5a15('0x4c')];if(!_0x4b22e7[_0x5a15('0x35')]['hasOwnProperty'](_0x5a15('0x3c'))){_0x18e76b[_0x5a15('0x1e')]=qs[_0x5a15('0x1e')](_0x4b22e7[_0x5a15('0x35')]['limit']);_0x18e76b['offset']=qs[_0x5a15('0x20')](_0x4b22e7['query']['offset']);}return _0x5a582e[_0x5a15('0x50')](_0x18e76b);}})[_0x5a15('0x29')](function(_0x4c8efa){if(_0x4c8efa){return _0x4c8efa?{'count':_0x22dd7d,'rows':_0x4c8efa}:null;}})[_0x5a15('0x29')](respondWithResult(_0x37384a,null))[_0x5a15('0x49')](handleError(_0x37384a,null));};exports[_0x5a15('0x52')]=function(_0x54f2f5,_0x28c7bc,_0x5f1882){if(_0x54f2f5[_0x5a15('0x4f')]['id']){delete _0x54f2f5[_0x5a15('0x4f')]['id'];}return db[_0x5a15('0x46')][_0x5a15('0x51')]({'where':{'id':_0x54f2f5[_0x5a15('0x4b')]['id']}})[_0x5a15('0x29')](handleEntityNotFound(_0x28c7bc,null))[_0x5a15('0x29')](function(_0x246999){if(_0x246999){_0x54f2f5[_0x5a15('0x4f')]['AccountId']=_0x246999['id'];_0x54f2f5[_0x5a15('0x4f')][_0x5a15('0x53')]=integrations[_0x5a15('0x54')](_0x54f2f5['body']['channel'],_0x54f2f5[_0x5a15('0x4f')]['type']);_0x54f2f5['body'][_0x5a15('0x55')]=integrations['getDescriptions'](_0x54f2f5[_0x5a15('0x4f')][_0x5a15('0x56')],_0x54f2f5[_0x5a15('0x4f')][_0x5a15('0x32')]);return db[_0x5a15('0x57')][_0x5a15('0x4e')](_0x54f2f5['body'],{'include':[{'model':db[_0x5a15('0x58')],'as':_0x5a15('0x53')},{'model':db['FreshsalesField'],'as':_0x5a15('0x55')}]});}return null;})[_0x5a15('0x29')](respondWithResult(_0x28c7bc,null))[_0x5a15('0x49')](handleError(_0x28c7bc,null));};exports['getFields']=function(_0x711fd0,_0x287348,_0xeca160){var _0x16959f='';var _0x4de21f='';return db[_0x5a15('0x46')][_0x5a15('0x51')]({'where':{'id':_0x711fd0[_0x5a15('0x4b')]['id']},'attributes':['id',_0x5a15('0x59'),_0x5a15('0x5a'),_0x5a15('0x5b')]})[_0x5a15('0x29')](handleEntityNotFound(_0x287348,null))['then'](function(_0xdd4fa9){if(_0xdd4fa9){_0x4de21f=_0xdd4fa9[_0x5a15('0x59')];_0x16959f=_0xdd4fa9[_0x5a15('0x5a')];var _0xf48120=_0xdd4fa9[_0x5a15('0x5a')][_0x5a15('0x5c')](-0x1);if(_0xf48120==='/'){_0x16959f=_0x16959f[_0x5a15('0x5d')](0x0,_0x16959f[_0x5a15('0x5e')](_0xf48120));}return rp({'method':'GET','uri':util[_0x5a15('0x5f')](_0x5a15('0x60'),_0x16959f,_0x5a15('0x61')),'headers':{'Authorization':_0x5a15('0x62')+_0xdd4fa9['apiKey']},'json':!![]});}})[_0x5a15('0x29')](function(_0x3af293){if(_0x3af293){var _0x977855=_0x3af293[_0x5a15('0x63')];var _0x1c3614=![];var _0x3f1df3=null;for(_0x3f1df3=0x0;_0x3f1df3<_0x977855[_0x5a15('0x4c')];_0x3f1df3++){if(_0x977855[_0x3f1df3][_0x5a15('0x64')]===_0x4de21f){_0x1c3614=!![];}}if(_0x1c3614){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x5a15('0x65')});}}})[_0x5a15('0x29')](respondWithResult(_0x287348,null))[_0x5a15('0x49')](function(_0x2a3f25){var _0x531a99=_0x711fd0[_0x5a15('0x35')]['test']?0x1f4:_0x2a3f25[_0x5a15('0x66')]||0x1f4;logger[_0x5a15('0x2b')](_0x5a15('0x67'),'getFields',_0x531a99,JSON['stringify'](_0x2a3f25));delete _0x2a3f25[_0x5a15('0x2d')];if(_0x531a99===0x191){_0x531a99=0x190;}_0x287348[_0x5a15('0x1c')](_0x531a99)['send'](_0x711fd0[_0x5a15('0x35')][_0x5a15('0x68')]?{'message':_0x5a15('0x69'),'statusCode':_0x2a3f25['statusCode']}:_0x2a3f25);});};
\ No newline at end of file
+var _0x1527=['merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','create','body','catch','find','getConfigurations','findOne','FreshsalesConfiguration','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','FreshsalesAccount','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x1527,0xff));var _0x7152=function(_0xdd82b4,_0x5cd8b8){_0xdd82b4=_0xdd82b4-0x0;var _0x549bb2=_0x1527[_0xdd82b4];return _0x549bb2;};'use strict';var emlformat=require(_0x7152('0x0'));var rimraf=require(_0x7152('0x1'));var zipdir=require(_0x7152('0x2'));var jsonpatch=require(_0x7152('0x3'));var rp=require(_0x7152('0x4'));var moment=require(_0x7152('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7152('0x6'));var util=require(_0x7152('0x7'));var path=require(_0x7152('0x8'));var sox=require(_0x7152('0x9'));var csv=require(_0x7152('0xa'));var ejs=require(_0x7152('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7152('0xc'));var squel=require(_0x7152('0xd'));var crypto=require(_0x7152('0xe'));var jsforce=require(_0x7152('0xf'));var deskjs=require(_0x7152('0x10'));var toCsv=require(_0x7152('0xa'));var querystring=require('querystring');var Papa=require(_0x7152('0x11'));var Redis=require(_0x7152('0x12'));var authService=require(_0x7152('0x13'));var qs=require(_0x7152('0x14'));var as=require(_0x7152('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7152('0x16'));var utils=require(_0x7152('0x17'));var config=require(_0x7152('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x7152('0x19'));function respondWithStatusCode(_0x3551e5,_0x2cc411){_0x2cc411=_0x2cc411||0xcc;return function(_0x443103){if(_0x443103){return _0x3551e5[_0x7152('0x1a')](_0x2cc411);}return _0x3551e5[_0x7152('0x1b')](_0x2cc411)[_0x7152('0x1c')]();};}function respondWithResult(_0x4ee9c5,_0x4e3782){_0x4e3782=_0x4e3782||0xc8;return function(_0x545715){if(_0x545715){return _0x4ee9c5[_0x7152('0x1b')](_0x4e3782)[_0x7152('0x1d')](_0x545715);}};}function respondWithFilteredResult(_0x29563b,_0x504a44){return function(_0x18f272){if(_0x18f272){var _0x4f0072=typeof _0x504a44['offset']==='undefined'&&typeof _0x504a44[_0x7152('0x1e')]===_0x7152('0x1f');var _0x402074=_0x18f272[_0x7152('0x20')];var _0x48bfc5=_0x4f0072?0x0:_0x504a44['offset'];var _0x295c55=_0x4f0072?_0x18f272[_0x7152('0x20')]:_0x504a44[_0x7152('0x21')]+_0x504a44[_0x7152('0x1e')];var _0x34e212;if(_0x295c55>=_0x402074){_0x295c55=_0x402074;_0x34e212=0xc8;}else{_0x34e212=0xce;}_0x29563b[_0x7152('0x1b')](_0x34e212);return _0x29563b[_0x7152('0x22')](_0x7152('0x23'),_0x48bfc5+'-'+_0x295c55+'/'+_0x402074)['json'](_0x18f272);}return null;};}function patchUpdates(_0x98346d){return function(_0xd199f4){try{jsonpatch[_0x7152('0x24')](_0xd199f4,_0x98346d,!![]);}catch(_0x488ae9){return BPromise[_0x7152('0x25')](_0x488ae9);}return _0xd199f4[_0x7152('0x26')]();};}function saveUpdates(_0xf2520d,_0x41666d){return function(_0x1f9380){if(_0x1f9380){return _0x1f9380[_0x7152('0x27')](_0xf2520d)[_0x7152('0x28')](function(_0x326e5e){return _0x326e5e;});}return null;};}function removeEntity(_0x576705,_0xd6b260){return function(_0x5ea7ee){if(_0x5ea7ee){return _0x5ea7ee[_0x7152('0x29')]()['then'](function(){_0x576705[_0x7152('0x1b')](0xcc)[_0x7152('0x1c')]();});}};}function handleEntityNotFound(_0x26a577,_0x102217){return function(_0x38adac){if(!_0x38adac){_0x26a577['sendStatus'](0x194);}return _0x38adac;};}function handleError(_0x447adc,_0x5ca4c7){_0x5ca4c7=_0x5ca4c7||0x1f4;return function(_0x4e1a1c){logger[_0x7152('0x2a')](_0x4e1a1c['stack']);if(_0x4e1a1c['name']){delete _0x4e1a1c[_0x7152('0x2b')];}_0x447adc['status'](_0x5ca4c7)[_0x7152('0x2c')](_0x4e1a1c);};}exports['index']=function(_0x2675ae,_0xcda829){var _0x5c7298={},_0x4e854d={},_0x31a78c={'count':0x0,'rows':[]};var _0x200966=_['map'](db[_0x7152('0x2d')][_0x7152('0x2e')],function(_0x3a0069){return{'name':_0x3a0069[_0x7152('0x2f')],'type':_0x3a0069[_0x7152('0x30')][_0x7152('0x31')]};});_0x4e854d[_0x7152('0x32')]=_[_0x7152('0x33')](_0x200966,_0x7152('0x2b'));_0x4e854d[_0x7152('0x34')]=_[_0x7152('0x35')](_0x2675ae[_0x7152('0x34')]);_0x4e854d[_0x7152('0x36')]=_[_0x7152('0x37')](_0x4e854d[_0x7152('0x32')],_0x4e854d[_0x7152('0x34')]);_0x5c7298['attributes']=_['intersection'](_0x4e854d['model'],qs[_0x7152('0x38')](_0x2675ae[_0x7152('0x34')]['fields']));_0x5c7298['attributes']=_0x5c7298[_0x7152('0x39')][_0x7152('0x3a')]?_0x5c7298['attributes']:_0x4e854d[_0x7152('0x32')];if(!_0x2675ae[_0x7152('0x34')][_0x7152('0x3b')](_0x7152('0x3c'))){_0x5c7298[_0x7152('0x1e')]=qs[_0x7152('0x1e')](_0x2675ae[_0x7152('0x34')][_0x7152('0x1e')]);_0x5c7298[_0x7152('0x21')]=qs['offset'](_0x2675ae['query'][_0x7152('0x21')]);}_0x5c7298[_0x7152('0x3d')]=qs[_0x7152('0x3e')](_0x2675ae[_0x7152('0x34')][_0x7152('0x3e')]);_0x5c7298['where']=qs['filters'](_[_0x7152('0x3f')](_0x2675ae[_0x7152('0x34')],_0x4e854d[_0x7152('0x36')]),_0x200966);if(_0x2675ae[_0x7152('0x34')][_0x7152('0x40')]){_0x5c7298[_0x7152('0x41')]=_[_0x7152('0x42')](_0x5c7298[_0x7152('0x41')],{'$or':_[_0x7152('0x33')](_0x200966,function(_0x3482c4){if(_0x3482c4[_0x7152('0x30')]!==_0x7152('0x43')){var _0x59e800={};_0x59e800[_0x3482c4[_0x7152('0x2b')]]={'$like':'%'+_0x2675ae[_0x7152('0x34')][_0x7152('0x40')]+'%'};return _0x59e800;}})});}_0x5c7298=_['merge']({},_0x5c7298,_0x2675ae[_0x7152('0x44')]);var _0x53574c={'where':_0x5c7298['where']};return db['FreshsalesAccount'][_0x7152('0x20')](_0x53574c)[_0x7152('0x28')](function(_0x5982c6){_0x31a78c['count']=_0x5982c6;if(_0x2675ae[_0x7152('0x34')][_0x7152('0x45')]){_0x5c7298[_0x7152('0x46')]=[{'all':!![]}];}return db[_0x7152('0x2d')][_0x7152('0x47')](_0x5c7298);})[_0x7152('0x28')](function(_0x298b00){_0x31a78c[_0x7152('0x48')]=_0x298b00;return _0x31a78c;})[_0x7152('0x28')](respondWithFilteredResult(_0xcda829,_0x5c7298))['catch'](handleError(_0xcda829,null));};exports[_0x7152('0x49')]=function(_0x40ed3d,_0x52ff77){var _0x20ad04={'raw':![],'where':{'id':_0x40ed3d[_0x7152('0x4a')]['id']}},_0x972b5b={};_0x972b5b[_0x7152('0x32')]=_['keys'](db[_0x7152('0x2d')]['rawAttributes']);_0x972b5b[_0x7152('0x34')]=_[_0x7152('0x35')](_0x40ed3d[_0x7152('0x34')]);_0x972b5b['filters']=_[_0x7152('0x37')](_0x972b5b[_0x7152('0x32')],_0x972b5b[_0x7152('0x34')]);_0x20ad04[_0x7152('0x39')]=_[_0x7152('0x37')](_0x972b5b[_0x7152('0x32')],qs[_0x7152('0x38')](_0x40ed3d['query'][_0x7152('0x38')]));_0x20ad04['attributes']=_0x20ad04[_0x7152('0x39')][_0x7152('0x3a')]?_0x20ad04[_0x7152('0x39')]:_0x972b5b[_0x7152('0x32')];if(_0x40ed3d[_0x7152('0x34')][_0x7152('0x45')]){_0x20ad04[_0x7152('0x46')]=[{'all':!![]}];}_0x20ad04=_['merge']({},_0x20ad04,_0x40ed3d[_0x7152('0x44')]);return db['FreshsalesAccount']['find'](_0x20ad04)['then'](handleEntityNotFound(_0x52ff77,null))[_0x7152('0x28')](respondWithResult(_0x52ff77,null))['catch'](handleError(_0x52ff77,null));};exports['create']=function(_0x5a0468,_0x252657){return db[_0x7152('0x2d')][_0x7152('0x4b')](_0x5a0468[_0x7152('0x4c')],{})[_0x7152('0x28')](respondWithResult(_0x252657,0xc9))[_0x7152('0x4d')](handleError(_0x252657,null));};exports[_0x7152('0x27')]=function(_0x4e097b,_0x631ab7){if(_0x4e097b[_0x7152('0x4c')]['id']){delete _0x4e097b['body']['id'];}return db[_0x7152('0x2d')][_0x7152('0x4e')]({'where':{'id':_0x4e097b['params']['id']}})[_0x7152('0x28')](handleEntityNotFound(_0x631ab7,null))['then'](saveUpdates(_0x4e097b[_0x7152('0x4c')],null))[_0x7152('0x28')](respondWithResult(_0x631ab7,null))[_0x7152('0x4d')](handleError(_0x631ab7,null));};exports[_0x7152('0x29')]=function(_0x60571a,_0x334725){return db[_0x7152('0x2d')][_0x7152('0x4e')]({'where':{'id':_0x60571a[_0x7152('0x4a')]['id']}})[_0x7152('0x28')](handleEntityNotFound(_0x334725,null))['then'](removeEntity(_0x334725,null))[_0x7152('0x4d')](handleError(_0x334725,null));};exports[_0x7152('0x4f')]=function(_0x47fdbb,_0x4bc691,_0x53e887){var _0x21ceb1={};var _0x4a888e={};var _0x52521c;var _0x1ea028;return db[_0x7152('0x2d')][_0x7152('0x50')]({'where':{'id':_0x47fdbb[_0x7152('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4bc691,null))['then'](function(_0x245bdc){if(_0x245bdc){_0x52521c=_0x245bdc;_0x4a888e['model']=_[_0x7152('0x35')](db[_0x7152('0x51')][_0x7152('0x2e')]);_0x4a888e['query']=_[_0x7152('0x35')](_0x47fdbb[_0x7152('0x34')]);_0x4a888e[_0x7152('0x36')]=_[_0x7152('0x37')](_0x4a888e[_0x7152('0x32')],_0x4a888e['query']);_0x21ceb1[_0x7152('0x39')]=_['intersection'](_0x4a888e['model'],qs['fields'](_0x47fdbb[_0x7152('0x34')][_0x7152('0x38')]));_0x21ceb1[_0x7152('0x39')]=_0x21ceb1[_0x7152('0x39')][_0x7152('0x3a')]?_0x21ceb1[_0x7152('0x39')]:_0x4a888e['model'];_0x21ceb1[_0x7152('0x3d')]=qs['sort'](_0x47fdbb['query'][_0x7152('0x3e')]);_0x21ceb1[_0x7152('0x41')]=qs[_0x7152('0x36')](_[_0x7152('0x3f')](_0x47fdbb[_0x7152('0x34')],_0x4a888e['filters']));if(_0x47fdbb[_0x7152('0x34')]['filter']){_0x21ceb1[_0x7152('0x41')]=_[_0x7152('0x42')](_0x21ceb1[_0x7152('0x41')],{'$or':_[_0x7152('0x33')](_0x21ceb1[_0x7152('0x39')],function(_0x3db7ad){var _0x36ea34={};_0x36ea34[_0x3db7ad]={'$like':'%'+_0x47fdbb[_0x7152('0x34')][_0x7152('0x40')]+'%'};return _0x36ea34;})});}_0x21ceb1=_[_0x7152('0x42')]({},_0x21ceb1,_0x47fdbb['options']);return _0x52521c[_0x7152('0x4f')](_0x21ceb1);}})[_0x7152('0x28')](function(_0x184de6){if(_0x184de6){_0x1ea028=_0x184de6[_0x7152('0x3a')];if(!_0x47fdbb['query'][_0x7152('0x3b')]('nolimit')){_0x21ceb1[_0x7152('0x1e')]=qs[_0x7152('0x1e')](_0x47fdbb[_0x7152('0x34')][_0x7152('0x1e')]);_0x21ceb1[_0x7152('0x21')]=qs['offset'](_0x47fdbb[_0x7152('0x34')]['offset']);}return _0x52521c[_0x7152('0x4f')](_0x21ceb1);}})[_0x7152('0x28')](function(_0x21536e){if(_0x21536e){return _0x21536e?{'count':_0x1ea028,'rows':_0x21536e}:null;}})['then'](respondWithResult(_0x4bc691,null))['catch'](handleError(_0x4bc691,null));};exports[_0x7152('0x52')]=function(_0x3c673c,_0x402149,_0x16af86){if(_0x3c673c['body']['id']){delete _0x3c673c[_0x7152('0x4c')]['id'];}return db[_0x7152('0x2d')][_0x7152('0x50')]({'where':{'id':_0x3c673c[_0x7152('0x4a')]['id']}})[_0x7152('0x28')](handleEntityNotFound(_0x402149,null))[_0x7152('0x28')](function(_0x615aed){if(_0x615aed){_0x3c673c[_0x7152('0x4c')][_0x7152('0x53')]=_0x615aed['id'];_0x3c673c[_0x7152('0x4c')][_0x7152('0x54')]=integrations['getSubjects'](_0x3c673c['body'][_0x7152('0x55')],_0x3c673c[_0x7152('0x4c')][_0x7152('0x30')]);_0x3c673c['body'][_0x7152('0x56')]=integrations[_0x7152('0x57')](_0x3c673c['body']['channel'],_0x3c673c['body'][_0x7152('0x30')]);return db[_0x7152('0x51')][_0x7152('0x4b')](_0x3c673c['body'],{'include':[{'model':db[_0x7152('0x58')],'as':_0x7152('0x54')},{'model':db[_0x7152('0x58')],'as':_0x7152('0x56')}]});}return null;})['then'](respondWithResult(_0x402149,null))[_0x7152('0x4d')](handleError(_0x402149,null));};exports[_0x7152('0x59')]=function(_0x1b0f69,_0x3ba8b7,_0x57e742){var _0x544cd5='';var _0x16b312='';return db[_0x7152('0x2d')]['findOne']({'where':{'id':_0x1b0f69[_0x7152('0x4a')]['id']},'attributes':['id',_0x7152('0x5a'),_0x7152('0x5b'),_0x7152('0x5c')]})[_0x7152('0x28')](handleEntityNotFound(_0x3ba8b7,null))[_0x7152('0x28')](function(_0x5ca981){if(_0x5ca981){_0x16b312=_0x5ca981[_0x7152('0x5a')];_0x544cd5=_0x5ca981[_0x7152('0x5b')];var _0x70460c=_0x5ca981['remoteUri'][_0x7152('0x5d')](-0x1);if(_0x70460c==='/'){_0x544cd5=_0x544cd5[_0x7152('0x5e')](0x0,_0x544cd5['lastIndexOf'](_0x70460c));}return rp({'method':_0x7152('0x5f'),'uri':util[_0x7152('0x60')](_0x7152('0x61'),_0x544cd5,_0x7152('0x62')),'headers':{'Authorization':_0x7152('0x63')+_0x5ca981[_0x7152('0x5c')]},'json':!![]});}})[_0x7152('0x28')](function(_0x1f24ec){if(_0x1f24ec){var _0x22ad28=_0x1f24ec[_0x7152('0x64')];var _0x5bc849=![];var _0x40c431=null;for(_0x40c431=0x0;_0x40c431<_0x22ad28[_0x7152('0x3a')];_0x40c431++){if(_0x22ad28[_0x40c431][_0x7152('0x65')]===_0x16b312){_0x5bc849=!![];}}if(_0x5bc849){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x7152('0x66')});}}})[_0x7152('0x28')](respondWithResult(_0x3ba8b7,null))[_0x7152('0x4d')](function(_0x50eee5){var _0x5bfbc6=_0x1b0f69['query']['test']?0x1f4:_0x50eee5[_0x7152('0x67')]||0x1f4;logger['error'](_0x7152('0x68'),_0x7152('0x59'),_0x5bfbc6,JSON['stringify'](_0x50eee5));delete _0x50eee5[_0x7152('0x2b')];if(_0x5bfbc6===0x191){_0x5bfbc6=0x190;}_0x3ba8b7[_0x7152('0x1b')](_0x5bfbc6)[_0x7152('0x2c')](_0x1b0f69[_0x7152('0x34')][_0x7152('0x69')]?{'message':_0x7152('0x6a'),'statusCode':_0x50eee5['statusCode']}:_0x50eee5);});};
\ No newline at end of file
index c04f149..406851b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['api','moment','bluebird','path','../../config/environment','../../components/integrations/configuration','FreshsalesAccount','int_freshsales_accounts','lodash','util'];(function(_0x21e762,_0x3dcb6f){var _0x5d78e9=function(_0x50886d){while(--_0x50886d){_0x21e762['push'](_0x21e762['shift']());}};_0x5d78e9(++_0x3dcb6f);}(_0xa46e,0x8a));var _0xea46=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0xa46e[_0x4f9b18];return _0x29f20c;};'use strict';var _=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var logger=require('../../config/logger')(_0xea46('0x2'));var moment=require(_0xea46('0x3'));var BPromise=require(_0xea46('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xea46('0x5'));var rimraf=require('rimraf');var config=require(_0xea46('0x6'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0xea46('0x7'));module['exports']=function(_0x10bee5,_0x3dc26f){return _0x10bee5['define'](_0xea46('0x8'),attributes,{'tableName':_0xea46('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6050=['moment','bluebird','path','rimraf','../../config/environment','int_freshsales_accounts','lodash','util','../../config/logger','api'];(function(_0x3463bf,_0x64ea1e){var _0xd4c007=function(_0x252828){while(--_0x252828){_0x3463bf['push'](_0x3463bf['shift']());}};_0xd4c007(++_0x64ea1e);}(_0x6050,0x196));var _0x0605=function(_0x419197,_0x24b110){_0x419197=_0x419197-0x0;var _0x19282a=_0x6050[_0x419197];return _0x19282a;};'use strict';var _=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var logger=require(_0x0605('0x2'))(_0x0605('0x3'));var moment=require(_0x0605('0x4'));var BPromise=require(_0x0605('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0605('0x6'));var rimraf=require(_0x0605('0x7'));var config=require(_0x0605('0x8'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require('../../components/integrations/configuration');module['exports']=function(_0xd78d96,_0x578623){return _0xd78d96['define']('FreshsalesAccount',attributes,{'tableName':_0x0605('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21cd9c4..5a8e68d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c3c=['find','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','limit','include','map','model','attributes','debug','catch','ShowFreshsalesAccount'];(function(_0x29b1b7,_0x9947f){var _0x326e97=function(_0x591fa6){while(--_0x591fa6){_0x29b1b7['push'](_0x29b1b7['shift']());}};_0x326e97(++_0x9947f);}(_0x5c3c,0x132));var _0xc5c3=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0x5c3c[_0xc67528];return _0x38e26d;};'use strict';var _=require(_0xc5c3('0x0'));var util=require(_0xc5c3('0x1'));var moment=require(_0xc5c3('0x2'));var BPromise=require(_0xc5c3('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc5c3('0x4'));var db=require(_0xc5c3('0x5'))['db'];var utils=require(_0xc5c3('0x6'));var logger=require(_0xc5c3('0x7'))(_0xc5c3('0x8'));var config=require(_0xc5c3('0x9'));var jayson=require(_0xc5c3('0xa'));var client=jayson[_0xc5c3('0xb')][_0xc5c3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5a392b,_0x4b8404,_0x591f7d){return new BPromise(function(_0x723c31,_0x522be1){return client['request'](_0x5a392b,_0x591f7d)[_0xc5c3('0xd')](function(_0x46e2c1){logger['info'](_0xc5c3('0xe'),_0x4b8404,_0xc5c3('0xf'));logger['debug'](_0xc5c3('0x10'),_0x4b8404,_0xc5c3('0xf'),JSON[_0xc5c3('0x11')](_0x46e2c1));if(_0x46e2c1['error']){if(_0x46e2c1[_0xc5c3('0x12')][_0xc5c3('0x13')]===0x1f4){logger['error'](_0xc5c3('0xe'),_0x4b8404,_0x46e2c1[_0xc5c3('0x12')][_0xc5c3('0x14')]);return _0x522be1(_0x46e2c1['error'][_0xc5c3('0x14')]);}logger[_0xc5c3('0x12')](_0xc5c3('0xe'),_0x4b8404,_0x46e2c1[_0xc5c3('0x12')][_0xc5c3('0x14')]);return _0x723c31(_0x46e2c1['error']['message']);}else{logger[_0xc5c3('0x15')](_0xc5c3('0xe'),_0x4b8404,_0xc5c3('0xf'));_0x723c31(_0x46e2c1[_0xc5c3('0x16')]['message']);}})['catch'](function(_0x467ba9){logger['error'](_0xc5c3('0xe'),_0x4b8404,_0x467ba9);_0x522be1(_0x467ba9);});});}exports[_0xc5c3('0x17')]=function(_0x2ff158){var _0x13c867=this;return new Promise(function(_0x28bae6,_0x5e11d5){return db[_0xc5c3('0x18')][_0xc5c3('0x19')]({'raw':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')][_0xc5c3('0x1b')]||null:null,'attributes':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')]['attributes']||null:null,'limit':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')][_0xc5c3('0x1c')]||null:null,'include':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')][_0xc5c3('0x1d')]?_[_0xc5c3('0x1e')](_0x2ff158['options']['include'],function(_0x45affe){return{'model':db[_0x45affe[_0xc5c3('0x1f')]],'as':_0x45affe['as'],'attributes':_0x45affe['attributes'],'include':_0x45affe['include']?_[_0xc5c3('0x1e')](_0x45affe[_0xc5c3('0x1d')],function(_0x38a3df){return{'model':db[_0x38a3df['model']],'as':_0x38a3df['as'],'attributes':_0x38a3df['attributes'],'include':_0x38a3df[_0xc5c3('0x1d')]?_[_0xc5c3('0x1e')](_0x38a3df[_0xc5c3('0x1d')],function(_0x29791c){return{'model':db[_0x29791c['model']],'as':_0x29791c['as'],'attributes':_0x29791c[_0xc5c3('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2eacec){logger['info'](_0xc5c3('0x17'),_0x2ff158);logger[_0xc5c3('0x21')](_0xc5c3('0x17'),_0x2ff158,JSON[_0xc5c3('0x11')](_0x2eacec));_0x28bae6(_0x2eacec);})[_0xc5c3('0x22')](function(_0x2d07e1){logger[_0xc5c3('0x12')]('GetFreshsalesAccount',_0x2d07e1[_0xc5c3('0x14')],_0x2ff158);_0x5e11d5(_0x13c867['error'](0x1f4,_0x2d07e1[_0xc5c3('0x14')]));});});};exports[_0xc5c3('0x23')]=function(_0x5b26e9){var _0x4daa8b=this;return new Promise(function(_0x2e648f,_0x46f149){return db[_0xc5c3('0x18')][_0xc5c3('0x24')]({'raw':_0x5b26e9['options']?_0x5b26e9[_0xc5c3('0x1a')][_0xc5c3('0x25')]===undefined?!![]:![]:!![],'where':_0x5b26e9[_0xc5c3('0x1a')]?_0x5b26e9[_0xc5c3('0x1a')][_0xc5c3('0x1b')]||null:null,'attributes':_0x5b26e9[_0xc5c3('0x1a')]?_0x5b26e9[_0xc5c3('0x1a')][_0xc5c3('0x20')]||null:null,'include':_0x5b26e9[_0xc5c3('0x1a')]?_0x5b26e9['options'][_0xc5c3('0x1d')]?_[_0xc5c3('0x1e')](_0x5b26e9[_0xc5c3('0x1a')][_0xc5c3('0x1d')],function(_0x330391){return{'model':db[_0x330391[_0xc5c3('0x1f')]],'as':_0x330391['as'],'attributes':_0x330391[_0xc5c3('0x20')],'include':_0x330391['include']?_['map'](_0x330391[_0xc5c3('0x1d')],function(_0x55fccf){return{'model':db[_0x55fccf[_0xc5c3('0x1f')]],'as':_0x55fccf['as'],'attributes':_0x55fccf[_0xc5c3('0x20')],'include':_0x55fccf[_0xc5c3('0x1d')]?_[_0xc5c3('0x1e')](_0x55fccf[_0xc5c3('0x1d')],function(_0x498677){return{'model':db[_0x498677[_0xc5c3('0x1f')]],'as':_0x498677['as'],'attributes':_0x498677[_0xc5c3('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x29f57d){logger[_0xc5c3('0x15')](_0xc5c3('0x23'),_0x5b26e9);logger[_0xc5c3('0x21')](_0xc5c3('0x23'),_0x5b26e9,JSON[_0xc5c3('0x11')](_0x29f57d));_0x2e648f(_0x29f57d);})[_0xc5c3('0x22')](function(_0x2ad440){logger[_0xc5c3('0x12')](_0xc5c3('0x23'),_0x2ad440['message'],_0x5b26e9);_0x46f149(_0x4daa8b[_0xc5c3('0x12')](0x1f4,_0x2ad440['message']));});});};
\ No newline at end of file
+var _0x3a6d=['client','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','attributes','limit','include','model','map','debug','ShowFreshsalesAccount','find','raw','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x54e4b2,_0x404f55){var _0x163bee=function(_0xbb725e){while(--_0xbb725e){_0x54e4b2['push'](_0x54e4b2['shift']());}};_0x163bee(++_0x404f55);}(_0x3a6d,0x143));var _0xd3a6=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x3a6d[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xd3a6('0x0'));var util=require(_0xd3a6('0x1'));var moment=require('moment');var BPromise=require(_0xd3a6('0x2'));var rs=require(_0xd3a6('0x3'));var fs=require('fs');var Redis=require(_0xd3a6('0x4'));var db=require(_0xd3a6('0x5'))['db'];var utils=require(_0xd3a6('0x6'));var logger=require('../../config/logger')(_0xd3a6('0x7'));var config=require(_0xd3a6('0x8'));var jayson=require(_0xd3a6('0x9'));var client=jayson[_0xd3a6('0xa')][_0xd3a6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x282cb1,_0x58d83a,_0x121bd2){return new BPromise(function(_0x134dd3,_0x16858){return client[_0xd3a6('0xc')](_0x282cb1,_0x121bd2)[_0xd3a6('0xd')](function(_0xa67661){logger[_0xd3a6('0xe')](_0xd3a6('0xf'),_0x58d83a,_0xd3a6('0x10'));logger['debug'](_0xd3a6('0x11'),_0x58d83a,_0xd3a6('0x10'),JSON[_0xd3a6('0x12')](_0xa67661));if(_0xa67661[_0xd3a6('0x13')]){if(_0xa67661[_0xd3a6('0x13')]['code']===0x1f4){logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);return _0x16858(_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);}logger[_0xd3a6('0x13')](_0xd3a6('0xf'),_0x58d83a,_0xa67661[_0xd3a6('0x13')]['message']);return _0x134dd3(_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);}else{logger[_0xd3a6('0xe')]('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0xd3a6('0x10'));_0x134dd3(_0xa67661[_0xd3a6('0x15')][_0xd3a6('0x14')]);}})['catch'](function(_0x3498d5){logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0x3498d5);_0x16858(_0x3498d5);});});}exports[_0xd3a6('0x16')]=function(_0x8d1286){var _0x32683f=this;return new Promise(function(_0xbe58b4,_0x22fb05){return db[_0xd3a6('0x17')][_0xd3a6('0x18')]({'raw':_0x8d1286['options']?_0x8d1286[_0xd3a6('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x8d1286[_0xd3a6('0x19')]?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1a')]||null:null,'attributes':_0x8d1286[_0xd3a6('0x19')]?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1b')]||null:null,'limit':_0x8d1286['options']?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1c')]||null:null,'include':_0x8d1286['options']?_0x8d1286['options']['include']?_['map'](_0x8d1286['options'][_0xd3a6('0x1d')],function(_0x400982){return{'model':db[_0x400982[_0xd3a6('0x1e')]],'as':_0x400982['as'],'attributes':_0x400982['attributes'],'include':_0x400982[_0xd3a6('0x1d')]?_['map'](_0x400982[_0xd3a6('0x1d')],function(_0x16afc8){return{'model':db[_0x16afc8[_0xd3a6('0x1e')]],'as':_0x16afc8['as'],'attributes':_0x16afc8['attributes'],'include':_0x16afc8[_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0x16afc8[_0xd3a6('0x1d')],function(_0x219e32){return{'model':db[_0x219e32[_0xd3a6('0x1e')]],'as':_0x219e32['as'],'attributes':_0x219e32[_0xd3a6('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x30df90){logger[_0xd3a6('0xe')](_0xd3a6('0x16'),_0x8d1286);logger[_0xd3a6('0x20')](_0xd3a6('0x16'),_0x8d1286,JSON[_0xd3a6('0x12')](_0x30df90));_0xbe58b4(_0x30df90);})['catch'](function(_0x535bd4){logger[_0xd3a6('0x13')](_0xd3a6('0x16'),_0x535bd4[_0xd3a6('0x14')],_0x8d1286);_0x22fb05(_0x32683f[_0xd3a6('0x13')](0x1f4,_0x535bd4['message']));});});};exports[_0xd3a6('0x21')]=function(_0xa4efd){var _0x4d322a=this;return new Promise(function(_0x14381c,_0x5d9867){return db[_0xd3a6('0x17')][_0xd3a6('0x22')]({'raw':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x23')]===undefined?!![]:![]:!![],'where':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd[_0xd3a6('0x19')]['where']||null:null,'attributes':_0xa4efd['options']?_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x1b')]||null:null,'include':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd['options'][_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x1d')],function(_0x3ebd0d){return{'model':db[_0x3ebd0d[_0xd3a6('0x1e')]],'as':_0x3ebd0d['as'],'attributes':_0x3ebd0d[_0xd3a6('0x1b')],'include':_0x3ebd0d[_0xd3a6('0x1d')]?_['map'](_0x3ebd0d[_0xd3a6('0x1d')],function(_0x41981c){return{'model':db[_0x41981c[_0xd3a6('0x1e')]],'as':_0x41981c['as'],'attributes':_0x41981c[_0xd3a6('0x1b')],'include':_0x41981c[_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0x41981c['include'],function(_0x16a30a){return{'model':db[_0x16a30a['model']],'as':_0x16a30a['as'],'attributes':_0x16a30a[_0xd3a6('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd3a6('0xd')](function(_0x180bb9){logger[_0xd3a6('0xe')]('ShowFreshsalesAccount',_0xa4efd);logger['debug'](_0xd3a6('0x21'),_0xa4efd,JSON[_0xd3a6('0x12')](_0x180bb9));_0x14381c(_0x180bb9);})[_0xd3a6('0x24')](function(_0x5188e1){logger[_0xd3a6('0x13')](_0xd3a6('0x21'),_0x5188e1['message'],_0xa4efd);_0x5d9867(_0x4d322a[_0xd3a6('0x13')](0x1f4,_0x5188e1['message']));});});};
\ No newline at end of file
index 3e326d7..807852b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8f2=['isAuthenticated','/:id/descriptions','/:id/fields','getFields','create','update','destroy','connect-timeout','Router','fs-extra','../../components/auth/service','./intFreshsalesConfiguration.controller','get','index','/:id','show'];(function(_0x53417c,_0x126dee){var _0x49407d=function(_0x1b1737){while(--_0x1b1737){_0x53417c['push'](_0x53417c['shift']());}};_0x49407d(++_0x126dee);}(_0xd8f2,0xe7));var _0x2d8f=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xd8f2[_0x432682];return _0x463d05;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2d8f('0x0'));var express=require('express');var router=express[_0x2d8f('0x1')]();var fs_extra=require(_0x2d8f('0x2'));var auth=require(_0x2d8f('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2d8f('0x4'));router[_0x2d8f('0x5')]('/',auth['isAuthenticated'](),controller[_0x2d8f('0x6')]);router[_0x2d8f('0x5')](_0x2d8f('0x7'),auth['isAuthenticated'](),controller[_0x2d8f('0x8')]);router[_0x2d8f('0x5')]('/:id/subjects',auth[_0x2d8f('0x9')](),controller['getSubjects']);router[_0x2d8f('0x5')](_0x2d8f('0xa'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x2d8f('0x5')](_0x2d8f('0xb'),auth['isAuthenticated'](),controller[_0x2d8f('0xc')]);router['post']('/',auth[_0x2d8f('0x9')](),controller[_0x2d8f('0xd')]);router['put']('/:id',auth[_0x2d8f('0x9')](),controller[_0x2d8f('0xe')]);router['delete'](_0x2d8f('0x7'),auth[_0x2d8f('0x9')](),controller[_0x2d8f('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x2e1f=['multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/subjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','create','put','delete','destroy','exports'];(function(_0x55fc11,_0x5c466a){var _0x2513cd=function(_0x50fcd7){while(--_0x50fcd7){_0x55fc11['push'](_0x55fc11['shift']());}};_0x2513cd(++_0x5c466a);}(_0x2e1f,0x142));var _0xf2e1=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x2e1f[_0x88cd7b];return _0x56fcc8;};'use strict';var multer=require(_0xf2e1('0x0'));var util=require(_0xf2e1('0x1'));var path=require('path');var timeout=require(_0xf2e1('0x2'));var express=require('express');var router=express[_0xf2e1('0x3')]();var fs_extra=require(_0xf2e1('0x4'));var auth=require(_0xf2e1('0x5'));var interaction=require(_0xf2e1('0x6'));var config=require(_0xf2e1('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router['get']('/',auth[_0xf2e1('0x8')](),controller[_0xf2e1('0x9')]);router[_0xf2e1('0xa')](_0xf2e1('0xb'),auth[_0xf2e1('0x8')](),controller[_0xf2e1('0xc')]);router[_0xf2e1('0xa')](_0xf2e1('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xf2e1('0xa')](_0xf2e1('0xe'),auth[_0xf2e1('0x8')](),controller[_0xf2e1('0xf')]);router[_0xf2e1('0xa')](_0xf2e1('0x10'),auth[_0xf2e1('0x8')](),controller[_0xf2e1('0x11')]);router['post']('/',auth[_0xf2e1('0x8')](),controller[_0xf2e1('0x12')]);router[_0xf2e1('0x13')](_0xf2e1('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xf2e1('0x14')](_0xf2e1('0xb'),auth['isAuthenticated'](),controller[_0xf2e1('0x15')]);module[_0xf2e1('0x16')]=router;
\ No newline at end of file
index 97ddf06..62cd154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc10d=['STRING','sequelize'];(function(_0x54abb3,_0xe87839){var _0x50c5b6=function(_0x4ff48c){while(--_0x4ff48c){_0x54abb3['push'](_0x54abb3['shift']());}};_0x50c5b6(++_0xe87839);}(_0xc10d,0x119));var _0xdc10=function(_0x1e381c,_0x47b5b9){_0x1e381c=_0x1e381c-0x0;var _0x9b5ea9=_0xc10d[_0x1e381c];return _0x9b5ea9;};'use strict';var Sequelize=require(_0xdc10('0x0'));module['exports']={'name':{'type':Sequelize[_0xdc10('0x1')]},'description':{'type':Sequelize[_0xdc10('0x1')]}};
\ No newline at end of file
+var _0x202e=['sequelize','exports'];(function(_0x187eb3,_0x5f6fe3){var _0x2bcc36=function(_0x13a4bb){while(--_0x13a4bb){_0x187eb3['push'](_0x187eb3['shift']());}};_0x2bcc36(++_0x5f6fe3);}(_0x202e,0x7a));var _0xe202=function(_0x1ce683,_0x261780){_0x1ce683=_0x1ce683-0x0;var _0x5a1b0e=_0x202e[_0x1ce683];return _0x5a1b0e;};'use strict';var Sequelize=require(_0xe202('0x0'));module[_0xe202('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c1dd8ad..cae24e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa777=['nolimit','getDescriptions','getFields','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','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','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query','intersection','length','attributes','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','fields','create','body','find','params','destroy','getSubjects','findOne','FreshsalesField'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xa777,0x102));var _0x7a77=function(_0x65daf0,_0x2de19e){_0x65daf0=_0x65daf0-0x0;var _0x394c5e=_0xa777[_0x65daf0];return _0x394c5e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7a77('0x0'));var zipdir=require(_0x7a77('0x1'));var jsonpatch=require(_0x7a77('0x2'));var rp=require(_0x7a77('0x3'));var moment=require(_0x7a77('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7a77('0x5'));var util=require(_0x7a77('0x6'));var path=require(_0x7a77('0x7'));var sox=require(_0x7a77('0x8'));var csv=require(_0x7a77('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7a77('0xa'));var _=require(_0x7a77('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7a77('0xc'));var deskjs=require(_0x7a77('0xd'));var toCsv=require('to-csv');var querystring=require(_0x7a77('0xe'));var Papa=require(_0x7a77('0xf'));var Redis=require(_0x7a77('0x10'));var authService=require(_0x7a77('0x11'));var qs=require(_0x7a77('0x12'));var as=require(_0x7a77('0x13'));var hardwareService=require(_0x7a77('0x14'));var logger=require(_0x7a77('0x15'))('api');var utils=require(_0x7a77('0x16'));var config=require(_0x7a77('0x17'));var licenseUtil=require(_0x7a77('0x18'));var db=require(_0x7a77('0x19'))['db'];function respondWithStatusCode(_0x2331d6,_0x4881d0){_0x4881d0=_0x4881d0||0xcc;return function(_0x35b3d3){if(_0x35b3d3){return _0x2331d6['sendStatus'](_0x4881d0);}return _0x2331d6[_0x7a77('0x1a')](_0x4881d0)[_0x7a77('0x1b')]();};}function respondWithResult(_0x4e11ea,_0x424d6e){_0x424d6e=_0x424d6e||0xc8;return function(_0x1af6d9){if(_0x1af6d9){return _0x4e11ea['status'](_0x424d6e)[_0x7a77('0x1c')](_0x1af6d9);}};}function respondWithFilteredResult(_0x361e30,_0x152398){return function(_0x3547db){if(_0x3547db){var _0x4f36d3=typeof _0x152398['offset']===_0x7a77('0x1d')&&typeof _0x152398['limit']==='undefined';var _0x51c288=_0x3547db[_0x7a77('0x1e')];var _0x51b6a0=_0x4f36d3?0x0:_0x152398[_0x7a77('0x1f')];var _0x4d0405=_0x4f36d3?_0x3547db[_0x7a77('0x1e')]:_0x152398[_0x7a77('0x1f')]+_0x152398[_0x7a77('0x20')];var _0x50f327;if(_0x4d0405>=_0x51c288){_0x4d0405=_0x51c288;_0x50f327=0xc8;}else{_0x50f327=0xce;}_0x361e30[_0x7a77('0x1a')](_0x50f327);return _0x361e30[_0x7a77('0x21')](_0x7a77('0x22'),_0x51b6a0+'-'+_0x4d0405+'/'+_0x51c288)[_0x7a77('0x1c')](_0x3547db);}return null;};}function patchUpdates(_0x15b568){return function(_0x2299bf){try{jsonpatch[_0x7a77('0x23')](_0x2299bf,_0x15b568,!![]);}catch(_0x195fda){return BPromise[_0x7a77('0x24')](_0x195fda);}return _0x2299bf[_0x7a77('0x25')]();};}function saveUpdates(_0x46cfa7,_0x17d91a){return function(_0x23be00){if(_0x23be00){return _0x23be00[_0x7a77('0x26')](_0x46cfa7)[_0x7a77('0x27')](function(_0x4e5f1d){return _0x4e5f1d;});}return null;};}function removeEntity(_0x599212,_0x178269){return function(_0x5e2018){if(_0x5e2018){return _0x5e2018['destroy']()[_0x7a77('0x27')](function(){_0x599212[_0x7a77('0x1a')](0xcc)[_0x7a77('0x1b')]();});}};}function handleEntityNotFound(_0x4dba0d,_0x5dbd4b){return function(_0x329c31){if(!_0x329c31){_0x4dba0d[_0x7a77('0x28')](0x194);}return _0x329c31;};}function handleError(_0x1dea01,_0x24a532){_0x24a532=_0x24a532||0x1f4;return function(_0x3d9c2c){logger[_0x7a77('0x29')](_0x3d9c2c[_0x7a77('0x2a')]);if(_0x3d9c2c[_0x7a77('0x2b')]){delete _0x3d9c2c['name'];}_0x1dea01['status'](_0x24a532)['send'](_0x3d9c2c);};}exports[_0x7a77('0x2c')]=function(_0x36a7c8,_0x443824){var _0x49ffe7={},_0x333a6e={},_0x50e3e0={'count':0x0,'rows':[]};var _0x13c695=_[_0x7a77('0x2d')](db[_0x7a77('0x2e')][_0x7a77('0x2f')],function(_0x219068){return{'name':_0x219068[_0x7a77('0x30')],'type':_0x219068[_0x7a77('0x31')][_0x7a77('0x32')]};});_0x333a6e[_0x7a77('0x33')]=_['map'](_0x13c695,_0x7a77('0x2b'));_0x333a6e[_0x7a77('0x34')]=_['keys'](_0x36a7c8[_0x7a77('0x34')]);_0x333a6e['filters']=_[_0x7a77('0x35')](_0x333a6e[_0x7a77('0x33')],_0x333a6e[_0x7a77('0x34')]);_0x49ffe7['attributes']=_['intersection'](_0x333a6e['model'],qs['fields'](_0x36a7c8[_0x7a77('0x34')]['fields']));_0x49ffe7['attributes']=_0x49ffe7['attributes'][_0x7a77('0x36')]?_0x49ffe7[_0x7a77('0x37')]:_0x333a6e[_0x7a77('0x33')];if(!_0x36a7c8[_0x7a77('0x34')][_0x7a77('0x38')]('nolimit')){_0x49ffe7['limit']=qs[_0x7a77('0x20')](_0x36a7c8[_0x7a77('0x34')]['limit']);_0x49ffe7[_0x7a77('0x1f')]=qs[_0x7a77('0x1f')](_0x36a7c8['query'][_0x7a77('0x1f')]);}_0x49ffe7[_0x7a77('0x39')]=qs[_0x7a77('0x3a')](_0x36a7c8[_0x7a77('0x34')][_0x7a77('0x3a')]);_0x49ffe7[_0x7a77('0x3b')]=qs[_0x7a77('0x3c')](_[_0x7a77('0x3d')](_0x36a7c8[_0x7a77('0x34')],_0x333a6e[_0x7a77('0x3c')]),_0x13c695);if(_0x36a7c8[_0x7a77('0x34')][_0x7a77('0x3e')]){_0x49ffe7[_0x7a77('0x3b')]=_[_0x7a77('0x3f')](_0x49ffe7['where'],{'$or':_[_0x7a77('0x2d')](_0x13c695,function(_0x1f73b2){if(_0x1f73b2[_0x7a77('0x31')]!==_0x7a77('0x40')){var _0x209094={};_0x209094[_0x1f73b2['name']]={'$like':'%'+_0x36a7c8[_0x7a77('0x34')]['filter']+'%'};return _0x209094;}})});}_0x49ffe7=_[_0x7a77('0x3f')]({},_0x49ffe7,_0x36a7c8[_0x7a77('0x41')]);var _0x48b1a5={'where':_0x49ffe7[_0x7a77('0x3b')]};return db['FreshsalesConfiguration'][_0x7a77('0x1e')](_0x48b1a5)['then'](function(_0x1b930f){_0x50e3e0[_0x7a77('0x1e')]=_0x1b930f;if(_0x36a7c8[_0x7a77('0x34')][_0x7a77('0x42')]){_0x49ffe7[_0x7a77('0x43')]=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0x7a77('0x44')](_0x49ffe7);})[_0x7a77('0x27')](function(_0x20d8cb){_0x50e3e0[_0x7a77('0x45')]=_0x20d8cb;return _0x50e3e0;})[_0x7a77('0x27')](respondWithFilteredResult(_0x443824,_0x49ffe7))[_0x7a77('0x46')](handleError(_0x443824,null));};exports[_0x7a77('0x47')]=function(_0x46c946,_0x3e2563){var _0x28730e={'raw':![],'where':{'id':_0x46c946['params']['id']}},_0x301982={};_0x301982[_0x7a77('0x33')]=_[_0x7a77('0x48')](db['FreshsalesConfiguration'][_0x7a77('0x2f')]);_0x301982[_0x7a77('0x34')]=_['keys'](_0x46c946[_0x7a77('0x34')]);_0x301982[_0x7a77('0x3c')]=_[_0x7a77('0x35')](_0x301982[_0x7a77('0x33')],_0x301982[_0x7a77('0x34')]);_0x28730e[_0x7a77('0x37')]=_['intersection'](_0x301982['model'],qs[_0x7a77('0x49')](_0x46c946['query'][_0x7a77('0x49')]));_0x28730e[_0x7a77('0x37')]=_0x28730e[_0x7a77('0x37')][_0x7a77('0x36')]?_0x28730e[_0x7a77('0x37')]:_0x301982[_0x7a77('0x33')];if(_0x46c946[_0x7a77('0x34')][_0x7a77('0x42')]){_0x28730e['include']=[{'all':!![]}];}_0x28730e=_[_0x7a77('0x3f')]({},_0x28730e,_0x46c946[_0x7a77('0x41')]);return db[_0x7a77('0x2e')]['find'](_0x28730e)['then'](handleEntityNotFound(_0x3e2563,null))[_0x7a77('0x27')](respondWithResult(_0x3e2563,null))[_0x7a77('0x46')](handleError(_0x3e2563,null));};exports[_0x7a77('0x4a')]=function(_0x202931,_0xdcb831){return db['FreshsalesConfiguration'][_0x7a77('0x4a')](_0x202931[_0x7a77('0x4b')],{})[_0x7a77('0x27')](respondWithResult(_0xdcb831,0xc9))[_0x7a77('0x46')](handleError(_0xdcb831,null));};exports[_0x7a77('0x26')]=function(_0x1516a5,_0x47c98c){if(_0x1516a5[_0x7a77('0x4b')]['id']){delete _0x1516a5[_0x7a77('0x4b')]['id'];}return db['FreshsalesConfiguration'][_0x7a77('0x4c')]({'where':{'id':_0x1516a5[_0x7a77('0x4d')]['id']}})[_0x7a77('0x27')](handleEntityNotFound(_0x47c98c,null))[_0x7a77('0x27')](saveUpdates(_0x1516a5[_0x7a77('0x4b')],null))['then'](respondWithResult(_0x47c98c,null))['catch'](handleError(_0x47c98c,null));};exports[_0x7a77('0x4e')]=function(_0x1125a7,_0x141387){return db[_0x7a77('0x2e')][_0x7a77('0x4c')]({'where':{'id':_0x1125a7[_0x7a77('0x4d')]['id']}})[_0x7a77('0x27')](handleEntityNotFound(_0x141387,null))[_0x7a77('0x27')](removeEntity(_0x141387,null))['catch'](handleError(_0x141387,null));};exports[_0x7a77('0x4f')]=function(_0x1a7375,_0x2b257d,_0x34bd9e){var _0x34de56={};var _0x3b28f2={};var _0x37b90f;var _0xbdbdda;return db[_0x7a77('0x2e')][_0x7a77('0x50')]({'where':{'id':_0x1a7375[_0x7a77('0x4d')]['id']}})[_0x7a77('0x27')](handleEntityNotFound(_0x2b257d,null))['then'](function(_0x563620){if(_0x563620){_0x37b90f=_0x563620;_0x3b28f2['model']=_[_0x7a77('0x48')](db[_0x7a77('0x51')][_0x7a77('0x2f')]);_0x3b28f2['query']=_['keys'](_0x1a7375['query']);_0x3b28f2[_0x7a77('0x3c')]=_[_0x7a77('0x35')](_0x3b28f2['model'],_0x3b28f2[_0x7a77('0x34')]);_0x34de56[_0x7a77('0x37')]=_[_0x7a77('0x35')](_0x3b28f2[_0x7a77('0x33')],qs['fields'](_0x1a7375[_0x7a77('0x34')]['fields']));_0x34de56['attributes']=_0x34de56[_0x7a77('0x37')]['length']?_0x34de56[_0x7a77('0x37')]:_0x3b28f2['model'];_0x34de56[_0x7a77('0x39')]=qs[_0x7a77('0x3a')](_0x1a7375['query'][_0x7a77('0x3a')]);_0x34de56[_0x7a77('0x3b')]=qs['filters'](_[_0x7a77('0x3d')](_0x1a7375[_0x7a77('0x34')],_0x3b28f2[_0x7a77('0x3c')]));if(_0x1a7375[_0x7a77('0x34')][_0x7a77('0x3e')]){_0x34de56['where']=_['merge'](_0x34de56[_0x7a77('0x3b')],{'$or':_[_0x7a77('0x2d')](_0x34de56[_0x7a77('0x37')],function(_0x151929){var _0x53dc74={};_0x53dc74[_0x151929]={'$like':'%'+_0x1a7375['query'][_0x7a77('0x3e')]+'%'};return _0x53dc74;})});}_0x34de56=_[_0x7a77('0x3f')]({},_0x34de56,_0x1a7375[_0x7a77('0x41')]);return _0x37b90f[_0x7a77('0x4f')](_0x34de56);}})[_0x7a77('0x27')](function(_0x37f959){if(_0x37f959){_0xbdbdda=_0x37f959[_0x7a77('0x36')];if(!_0x1a7375[_0x7a77('0x34')][_0x7a77('0x38')](_0x7a77('0x52'))){_0x34de56['limit']=qs['limit'](_0x1a7375[_0x7a77('0x34')][_0x7a77('0x20')]);_0x34de56['offset']=qs['offset'](_0x1a7375[_0x7a77('0x34')][_0x7a77('0x1f')]);}return _0x37b90f[_0x7a77('0x4f')](_0x34de56);}})[_0x7a77('0x27')](function(_0x41fa51){if(_0x41fa51){return _0x41fa51?{'count':_0xbdbdda,'rows':_0x41fa51}:null;}})[_0x7a77('0x27')](respondWithResult(_0x2b257d,null))[_0x7a77('0x46')](handleError(_0x2b257d,null));};exports[_0x7a77('0x53')]=function(_0x172951,_0x7335cb,_0x4f9a67){var _0x2a1550={};var _0x5132cf={};var _0x36e161;var _0x217d08;return db[_0x7a77('0x2e')][_0x7a77('0x50')]({'where':{'id':_0x172951[_0x7a77('0x4d')]['id']}})['then'](handleEntityNotFound(_0x7335cb,null))[_0x7a77('0x27')](function(_0x207cdc){if(_0x207cdc){_0x36e161=_0x207cdc;_0x5132cf[_0x7a77('0x33')]=_['keys'](db[_0x7a77('0x51')][_0x7a77('0x2f')]);_0x5132cf['query']=_[_0x7a77('0x48')](_0x172951[_0x7a77('0x34')]);_0x5132cf[_0x7a77('0x3c')]=_[_0x7a77('0x35')](_0x5132cf[_0x7a77('0x33')],_0x5132cf[_0x7a77('0x34')]);_0x2a1550[_0x7a77('0x37')]=_['intersection'](_0x5132cf['model'],qs[_0x7a77('0x49')](_0x172951[_0x7a77('0x34')][_0x7a77('0x49')]));_0x2a1550[_0x7a77('0x37')]=_0x2a1550[_0x7a77('0x37')][_0x7a77('0x36')]?_0x2a1550['attributes']:_0x5132cf[_0x7a77('0x33')];_0x2a1550[_0x7a77('0x39')]=qs[_0x7a77('0x3a')](_0x172951[_0x7a77('0x34')][_0x7a77('0x3a')]);_0x2a1550[_0x7a77('0x3b')]=qs[_0x7a77('0x3c')](_[_0x7a77('0x3d')](_0x172951[_0x7a77('0x34')],_0x5132cf[_0x7a77('0x3c')]));if(_0x172951[_0x7a77('0x34')][_0x7a77('0x3e')]){_0x2a1550[_0x7a77('0x3b')]=_['merge'](_0x2a1550[_0x7a77('0x3b')],{'$or':_['map'](_0x2a1550[_0x7a77('0x37')],function(_0x3a43e5){var _0x3f91c6={};_0x3f91c6[_0x3a43e5]={'$like':'%'+_0x172951[_0x7a77('0x34')]['filter']+'%'};return _0x3f91c6;})});}_0x2a1550=_['merge']({},_0x2a1550,_0x172951['options']);return _0x36e161[_0x7a77('0x53')](_0x2a1550);}})[_0x7a77('0x27')](function(_0x4bada1){if(_0x4bada1){_0x217d08=_0x4bada1['length'];if(!_0x172951[_0x7a77('0x34')][_0x7a77('0x38')](_0x7a77('0x52'))){_0x2a1550[_0x7a77('0x20')]=qs[_0x7a77('0x20')](_0x172951[_0x7a77('0x34')]['limit']);_0x2a1550[_0x7a77('0x1f')]=qs['offset'](_0x172951[_0x7a77('0x34')][_0x7a77('0x1f')]);}return _0x36e161[_0x7a77('0x53')](_0x2a1550);}})[_0x7a77('0x27')](function(_0x4c35bc){if(_0x4c35bc){return _0x4c35bc?{'count':_0x217d08,'rows':_0x4c35bc}:null;}})[_0x7a77('0x27')](respondWithResult(_0x7335cb,null))[_0x7a77('0x46')](handleError(_0x7335cb,null));};exports[_0x7a77('0x54')]=function(_0x464f9c,_0x150cbd,_0x171cfb){var _0x99ba80={};var _0x412455={};var _0xc501f8;var _0x4b5f68;return db[_0x7a77('0x2e')][_0x7a77('0x50')]({'where':{'id':_0x464f9c['params']['id']}})[_0x7a77('0x27')](handleEntityNotFound(_0x150cbd,null))[_0x7a77('0x27')](function(_0x3e2996){if(_0x3e2996){_0xc501f8=_0x3e2996;_0x412455['model']=_[_0x7a77('0x48')](db[_0x7a77('0x51')][_0x7a77('0x2f')]);_0x412455[_0x7a77('0x34')]=_[_0x7a77('0x48')](_0x464f9c[_0x7a77('0x34')]);_0x412455[_0x7a77('0x3c')]=_[_0x7a77('0x35')](_0x412455['model'],_0x412455[_0x7a77('0x34')]);_0x99ba80[_0x7a77('0x37')]=_[_0x7a77('0x35')](_0x412455[_0x7a77('0x33')],qs[_0x7a77('0x49')](_0x464f9c[_0x7a77('0x34')]['fields']));_0x99ba80[_0x7a77('0x37')]=_0x99ba80['attributes'][_0x7a77('0x36')]?_0x99ba80['attributes']:_0x412455[_0x7a77('0x33')];_0x99ba80[_0x7a77('0x39')]=qs['sort'](_0x464f9c[_0x7a77('0x34')]['sort']);_0x99ba80[_0x7a77('0x3b')]=qs[_0x7a77('0x3c')](_[_0x7a77('0x3d')](_0x464f9c[_0x7a77('0x34')],_0x412455['filters']));if(_0x464f9c['query'][_0x7a77('0x3e')]){_0x99ba80['where']=_[_0x7a77('0x3f')](_0x99ba80[_0x7a77('0x3b')],{'$or':_[_0x7a77('0x2d')](_0x99ba80['attributes'],function(_0x3d4c55){var _0x397856={};_0x397856[_0x3d4c55]={'$like':'%'+_0x464f9c['query'][_0x7a77('0x3e')]+'%'};return _0x397856;})});}_0x99ba80=_[_0x7a77('0x3f')]({},_0x99ba80,_0x464f9c['options']);return _0xc501f8[_0x7a77('0x54')](_0x99ba80);}})[_0x7a77('0x27')](function(_0x556c04){if(_0x556c04){_0x4b5f68=_0x556c04[_0x7a77('0x36')];if(!_0x464f9c[_0x7a77('0x34')][_0x7a77('0x38')](_0x7a77('0x52'))){_0x99ba80[_0x7a77('0x20')]=qs[_0x7a77('0x20')](_0x464f9c[_0x7a77('0x34')][_0x7a77('0x20')]);_0x99ba80[_0x7a77('0x1f')]=qs[_0x7a77('0x1f')](_0x464f9c[_0x7a77('0x34')][_0x7a77('0x1f')]);}return _0xc501f8[_0x7a77('0x54')](_0x99ba80);}})[_0x7a77('0x27')](function(_0x5a7c34){if(_0x5a7c34){return _0x5a7c34?{'count':_0x4b5f68,'rows':_0x5a7c34}:null;}})[_0x7a77('0x27')](respondWithResult(_0x150cbd,null))[_0x7a77('0x46')](handleError(_0x150cbd,null));};
\ No newline at end of file
+var _0x4f51=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','FreshsalesConfiguration','fieldName','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','where','pick','type','includeAll','include','findAll','rows','catch','show','params','model','rawAttributes','length','merge','options','find','create','body','update','getSubjects','findOne','sort','filter','getDescriptions','FreshsalesField','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x4f51,0x1ea));var _0x14f5=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x4f51[_0x47a7d0];return _0xb9bd08;};'use strict';var emlformat=require(_0x14f5('0x0'));var rimraf=require(_0x14f5('0x1'));var zipdir=require(_0x14f5('0x2'));var jsonpatch=require(_0x14f5('0x3'));var rp=require(_0x14f5('0x4'));var moment=require(_0x14f5('0x5'));var BPromise=require(_0x14f5('0x6'));var Mustache=require(_0x14f5('0x7'));var util=require(_0x14f5('0x8'));var path=require(_0x14f5('0x9'));var sox=require(_0x14f5('0xa'));var csv=require(_0x14f5('0xb'));var ejs=require(_0x14f5('0xc'));var fs=require('fs');var fs_extra=require(_0x14f5('0xd'));var _=require(_0x14f5('0xe'));var squel=require(_0x14f5('0xf'));var crypto=require('crypto');var jsforce=require(_0x14f5('0x10'));var deskjs=require(_0x14f5('0x11'));var toCsv=require(_0x14f5('0xb'));var querystring=require(_0x14f5('0x12'));var Papa=require(_0x14f5('0x13'));var Redis=require(_0x14f5('0x14'));var authService=require(_0x14f5('0x15'));var qs=require(_0x14f5('0x16'));var as=require(_0x14f5('0x17'));var hardwareService=require(_0x14f5('0x18'));var logger=require(_0x14f5('0x19'))(_0x14f5('0x1a'));var utils=require(_0x14f5('0x1b'));var config=require(_0x14f5('0x1c'));var licenseUtil=require(_0x14f5('0x1d'));var db=require(_0x14f5('0x1e'))['db'];function respondWithStatusCode(_0x36039e,_0x332766){_0x332766=_0x332766||0xcc;return function(_0x1e00b2){if(_0x1e00b2){return _0x36039e[_0x14f5('0x1f')](_0x332766);}return _0x36039e[_0x14f5('0x20')](_0x332766)['end']();};}function respondWithResult(_0x2e6893,_0x1b470b){_0x1b470b=_0x1b470b||0xc8;return function(_0x231476){if(_0x231476){return _0x2e6893[_0x14f5('0x20')](_0x1b470b)[_0x14f5('0x21')](_0x231476);}};}function respondWithFilteredResult(_0x12ee3c,_0x4a125a){return function(_0xbd8a17){if(_0xbd8a17){var _0x3cf0ba=typeof _0x4a125a[_0x14f5('0x22')]===_0x14f5('0x23')&&typeof _0x4a125a[_0x14f5('0x24')]==='undefined';var _0x3775bd=_0xbd8a17[_0x14f5('0x25')];var _0x4ba47e=_0x3cf0ba?0x0:_0x4a125a[_0x14f5('0x22')];var _0x1daa76=_0x3cf0ba?_0xbd8a17[_0x14f5('0x25')]:_0x4a125a[_0x14f5('0x22')]+_0x4a125a[_0x14f5('0x24')];var _0xc94310;if(_0x1daa76>=_0x3775bd){_0x1daa76=_0x3775bd;_0xc94310=0xc8;}else{_0xc94310=0xce;}_0x12ee3c[_0x14f5('0x20')](_0xc94310);return _0x12ee3c['set'](_0x14f5('0x26'),_0x4ba47e+'-'+_0x1daa76+'/'+_0x3775bd)[_0x14f5('0x21')](_0xbd8a17);}return null;};}function patchUpdates(_0x54f220){return function(_0x122556){try{jsonpatch[_0x14f5('0x27')](_0x122556,_0x54f220,!![]);}catch(_0x57a0cb){return BPromise[_0x14f5('0x28')](_0x57a0cb);}return _0x122556[_0x14f5('0x29')]();};}function saveUpdates(_0x34cc4a,_0xe26007){return function(_0x1c781e){if(_0x1c781e){return _0x1c781e['update'](_0x34cc4a)[_0x14f5('0x2a')](function(_0x1b8e3a){return _0x1b8e3a;});}return null;};}function removeEntity(_0x40cdc1,_0x1e6f46){return function(_0x1f88ff){if(_0x1f88ff){return _0x1f88ff[_0x14f5('0x2b')]()[_0x14f5('0x2a')](function(){_0x40cdc1[_0x14f5('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53fd66,_0x2c133c){return function(_0x2dc74a){if(!_0x2dc74a){_0x53fd66[_0x14f5('0x1f')](0x194);}return _0x2dc74a;};}function handleError(_0x388da1,_0x1ff9d3){_0x1ff9d3=_0x1ff9d3||0x1f4;return function(_0x58396f){logger[_0x14f5('0x2c')](_0x58396f[_0x14f5('0x2d')]);if(_0x58396f[_0x14f5('0x2e')]){delete _0x58396f[_0x14f5('0x2e')];}_0x388da1[_0x14f5('0x20')](_0x1ff9d3)['send'](_0x58396f);};}exports[_0x14f5('0x2f')]=function(_0x5085e4,_0x59003b){var _0x2acb8f={},_0xb16594={},_0x389829={'count':0x0,'rows':[]};var _0x528209=_[_0x14f5('0x30')](db[_0x14f5('0x31')]['rawAttributes'],function(_0xd8674f){return{'name':_0xd8674f[_0x14f5('0x32')],'type':_0xd8674f['type']['key']};});_0xb16594['model']=_[_0x14f5('0x30')](_0x528209,_0x14f5('0x2e'));_0xb16594[_0x14f5('0x33')]=_[_0x14f5('0x34')](_0x5085e4[_0x14f5('0x33')]);_0xb16594[_0x14f5('0x35')]=_['intersection'](_0xb16594['model'],_0xb16594[_0x14f5('0x33')]);_0x2acb8f['attributes']=_[_0x14f5('0x36')](_0xb16594['model'],qs['fields'](_0x5085e4[_0x14f5('0x33')][_0x14f5('0x37')]));_0x2acb8f['attributes']=_0x2acb8f[_0x14f5('0x38')]['length']?_0x2acb8f['attributes']:_0xb16594['model'];if(!_0x5085e4[_0x14f5('0x33')][_0x14f5('0x39')](_0x14f5('0x3a'))){_0x2acb8f[_0x14f5('0x24')]=qs['limit'](_0x5085e4[_0x14f5('0x33')][_0x14f5('0x24')]);_0x2acb8f['offset']=qs[_0x14f5('0x22')](_0x5085e4[_0x14f5('0x33')][_0x14f5('0x22')]);}_0x2acb8f[_0x14f5('0x3b')]=qs['sort'](_0x5085e4[_0x14f5('0x33')]['sort']);_0x2acb8f[_0x14f5('0x3c')]=qs[_0x14f5('0x35')](_[_0x14f5('0x3d')](_0x5085e4['query'],_0xb16594[_0x14f5('0x35')]),_0x528209);if(_0x5085e4[_0x14f5('0x33')]['filter']){_0x2acb8f['where']=_['merge'](_0x2acb8f['where'],{'$or':_['map'](_0x528209,function(_0x67b778){if(_0x67b778[_0x14f5('0x3e')]!=='VIRTUAL'){var _0x290371={};_0x290371[_0x67b778[_0x14f5('0x2e')]]={'$like':'%'+_0x5085e4[_0x14f5('0x33')]['filter']+'%'};return _0x290371;}})});}_0x2acb8f=_['merge']({},_0x2acb8f,_0x5085e4['options']);var _0x194a63={'where':_0x2acb8f[_0x14f5('0x3c')]};return db[_0x14f5('0x31')]['count'](_0x194a63)[_0x14f5('0x2a')](function(_0x21aeb1){_0x389829[_0x14f5('0x25')]=_0x21aeb1;if(_0x5085e4[_0x14f5('0x33')][_0x14f5('0x3f')]){_0x2acb8f[_0x14f5('0x40')]=[{'all':!![]}];}return db[_0x14f5('0x31')][_0x14f5('0x41')](_0x2acb8f);})[_0x14f5('0x2a')](function(_0x851691){_0x389829[_0x14f5('0x42')]=_0x851691;return _0x389829;})[_0x14f5('0x2a')](respondWithFilteredResult(_0x59003b,_0x2acb8f))[_0x14f5('0x43')](handleError(_0x59003b,null));};exports[_0x14f5('0x44')]=function(_0x43b9fb,_0x2104e5){var _0x75efef={'raw':![],'where':{'id':_0x43b9fb[_0x14f5('0x45')]['id']}},_0x464cb0={};_0x464cb0[_0x14f5('0x46')]=_[_0x14f5('0x34')](db[_0x14f5('0x31')][_0x14f5('0x47')]);_0x464cb0['query']=_[_0x14f5('0x34')](_0x43b9fb[_0x14f5('0x33')]);_0x464cb0[_0x14f5('0x35')]=_[_0x14f5('0x36')](_0x464cb0[_0x14f5('0x46')],_0x464cb0[_0x14f5('0x33')]);_0x75efef['attributes']=_['intersection'](_0x464cb0[_0x14f5('0x46')],qs[_0x14f5('0x37')](_0x43b9fb[_0x14f5('0x33')][_0x14f5('0x37')]));_0x75efef[_0x14f5('0x38')]=_0x75efef[_0x14f5('0x38')][_0x14f5('0x48')]?_0x75efef[_0x14f5('0x38')]:_0x464cb0[_0x14f5('0x46')];if(_0x43b9fb['query'][_0x14f5('0x3f')]){_0x75efef[_0x14f5('0x40')]=[{'all':!![]}];}_0x75efef=_[_0x14f5('0x49')]({},_0x75efef,_0x43b9fb[_0x14f5('0x4a')]);return db[_0x14f5('0x31')][_0x14f5('0x4b')](_0x75efef)[_0x14f5('0x2a')](handleEntityNotFound(_0x2104e5,null))[_0x14f5('0x2a')](respondWithResult(_0x2104e5,null))[_0x14f5('0x43')](handleError(_0x2104e5,null));};exports[_0x14f5('0x4c')]=function(_0x465767,_0x2ebbfd){return db[_0x14f5('0x31')][_0x14f5('0x4c')](_0x465767[_0x14f5('0x4d')],{})[_0x14f5('0x2a')](respondWithResult(_0x2ebbfd,0xc9))[_0x14f5('0x43')](handleError(_0x2ebbfd,null));};exports[_0x14f5('0x4e')]=function(_0x8c116d,_0x5ac596){if(_0x8c116d[_0x14f5('0x4d')]['id']){delete _0x8c116d['body']['id'];}return db[_0x14f5('0x31')]['find']({'where':{'id':_0x8c116d['params']['id']}})['then'](handleEntityNotFound(_0x5ac596,null))['then'](saveUpdates(_0x8c116d[_0x14f5('0x4d')],null))['then'](respondWithResult(_0x5ac596,null))['catch'](handleError(_0x5ac596,null));};exports['destroy']=function(_0x5adcdb,_0x9bbacf){return db[_0x14f5('0x31')]['find']({'where':{'id':_0x5adcdb[_0x14f5('0x45')]['id']}})['then'](handleEntityNotFound(_0x9bbacf,null))[_0x14f5('0x2a')](removeEntity(_0x9bbacf,null))[_0x14f5('0x43')](handleError(_0x9bbacf,null));};exports[_0x14f5('0x4f')]=function(_0x4f3a30,_0x2fcf78,_0x37eb75){var _0x5e2c6={};var _0x3192f4={};var _0xc687a9;var _0x5a6822;return db[_0x14f5('0x31')][_0x14f5('0x50')]({'where':{'id':_0x4f3a30[_0x14f5('0x45')]['id']}})[_0x14f5('0x2a')](handleEntityNotFound(_0x2fcf78,null))[_0x14f5('0x2a')](function(_0x43ec23){if(_0x43ec23){_0xc687a9=_0x43ec23;_0x3192f4[_0x14f5('0x46')]=_[_0x14f5('0x34')](db['FreshsalesField'][_0x14f5('0x47')]);_0x3192f4[_0x14f5('0x33')]=_[_0x14f5('0x34')](_0x4f3a30[_0x14f5('0x33')]);_0x3192f4[_0x14f5('0x35')]=_[_0x14f5('0x36')](_0x3192f4[_0x14f5('0x46')],_0x3192f4['query']);_0x5e2c6['attributes']=_[_0x14f5('0x36')](_0x3192f4[_0x14f5('0x46')],qs['fields'](_0x4f3a30[_0x14f5('0x33')][_0x14f5('0x37')]));_0x5e2c6['attributes']=_0x5e2c6[_0x14f5('0x38')][_0x14f5('0x48')]?_0x5e2c6[_0x14f5('0x38')]:_0x3192f4[_0x14f5('0x46')];_0x5e2c6[_0x14f5('0x3b')]=qs[_0x14f5('0x51')](_0x4f3a30[_0x14f5('0x33')][_0x14f5('0x51')]);_0x5e2c6['where']=qs[_0x14f5('0x35')](_[_0x14f5('0x3d')](_0x4f3a30['query'],_0x3192f4[_0x14f5('0x35')]));if(_0x4f3a30['query'][_0x14f5('0x52')]){_0x5e2c6[_0x14f5('0x3c')]=_[_0x14f5('0x49')](_0x5e2c6['where'],{'$or':_[_0x14f5('0x30')](_0x5e2c6['attributes'],function(_0x4ee6fb){var _0x8fa454={};_0x8fa454[_0x4ee6fb]={'$like':'%'+_0x4f3a30[_0x14f5('0x33')][_0x14f5('0x52')]+'%'};return _0x8fa454;})});}_0x5e2c6=_[_0x14f5('0x49')]({},_0x5e2c6,_0x4f3a30['options']);return _0xc687a9[_0x14f5('0x4f')](_0x5e2c6);}})[_0x14f5('0x2a')](function(_0x2928b4){if(_0x2928b4){_0x5a6822=_0x2928b4[_0x14f5('0x48')];if(!_0x4f3a30['query'][_0x14f5('0x39')](_0x14f5('0x3a'))){_0x5e2c6['limit']=qs[_0x14f5('0x24')](_0x4f3a30[_0x14f5('0x33')][_0x14f5('0x24')]);_0x5e2c6['offset']=qs['offset'](_0x4f3a30[_0x14f5('0x33')]['offset']);}return _0xc687a9[_0x14f5('0x4f')](_0x5e2c6);}})[_0x14f5('0x2a')](function(_0x14a915){if(_0x14a915){return _0x14a915?{'count':_0x5a6822,'rows':_0x14a915}:null;}})[_0x14f5('0x2a')](respondWithResult(_0x2fcf78,null))[_0x14f5('0x43')](handleError(_0x2fcf78,null));};exports[_0x14f5('0x53')]=function(_0x3efd55,_0x1b5f97,_0x166229){var _0x17f68f={};var _0x4408aa={};var _0x532909;var _0x51fc14;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x3efd55[_0x14f5('0x45')]['id']}})[_0x14f5('0x2a')](handleEntityNotFound(_0x1b5f97,null))[_0x14f5('0x2a')](function(_0x3076b4){if(_0x3076b4){_0x532909=_0x3076b4;_0x4408aa[_0x14f5('0x46')]=_[_0x14f5('0x34')](db[_0x14f5('0x54')][_0x14f5('0x47')]);_0x4408aa['query']=_[_0x14f5('0x34')](_0x3efd55[_0x14f5('0x33')]);_0x4408aa['filters']=_[_0x14f5('0x36')](_0x4408aa[_0x14f5('0x46')],_0x4408aa[_0x14f5('0x33')]);_0x17f68f[_0x14f5('0x38')]=_[_0x14f5('0x36')](_0x4408aa[_0x14f5('0x46')],qs['fields'](_0x3efd55['query'][_0x14f5('0x37')]));_0x17f68f[_0x14f5('0x38')]=_0x17f68f[_0x14f5('0x38')][_0x14f5('0x48')]?_0x17f68f[_0x14f5('0x38')]:_0x4408aa[_0x14f5('0x46')];_0x17f68f[_0x14f5('0x3b')]=qs[_0x14f5('0x51')](_0x3efd55[_0x14f5('0x33')][_0x14f5('0x51')]);_0x17f68f['where']=qs['filters'](_['pick'](_0x3efd55[_0x14f5('0x33')],_0x4408aa[_0x14f5('0x35')]));if(_0x3efd55[_0x14f5('0x33')]['filter']){_0x17f68f[_0x14f5('0x3c')]=_[_0x14f5('0x49')](_0x17f68f[_0x14f5('0x3c')],{'$or':_['map'](_0x17f68f[_0x14f5('0x38')],function(_0x2ff4e7){var _0x29ab25={};_0x29ab25[_0x2ff4e7]={'$like':'%'+_0x3efd55[_0x14f5('0x33')][_0x14f5('0x52')]+'%'};return _0x29ab25;})});}_0x17f68f=_[_0x14f5('0x49')]({},_0x17f68f,_0x3efd55['options']);return _0x532909[_0x14f5('0x53')](_0x17f68f);}})[_0x14f5('0x2a')](function(_0x257edd){if(_0x257edd){_0x51fc14=_0x257edd[_0x14f5('0x48')];if(!_0x3efd55[_0x14f5('0x33')][_0x14f5('0x39')]('nolimit')){_0x17f68f['limit']=qs['limit'](_0x3efd55['query']['limit']);_0x17f68f[_0x14f5('0x22')]=qs[_0x14f5('0x22')](_0x3efd55[_0x14f5('0x33')][_0x14f5('0x22')]);}return _0x532909[_0x14f5('0x53')](_0x17f68f);}})['then'](function(_0x353815){if(_0x353815){return _0x353815?{'count':_0x51fc14,'rows':_0x353815}:null;}})[_0x14f5('0x2a')](respondWithResult(_0x1b5f97,null))[_0x14f5('0x43')](handleError(_0x1b5f97,null));};exports[_0x14f5('0x55')]=function(_0x22994a,_0x500acc,_0x22fff3){var _0x57ead8={};var _0x4f7bd1={};var _0x1cdb99;var _0x3a920c;return db['FreshsalesConfiguration'][_0x14f5('0x50')]({'where':{'id':_0x22994a[_0x14f5('0x45')]['id']}})[_0x14f5('0x2a')](handleEntityNotFound(_0x500acc,null))[_0x14f5('0x2a')](function(_0x2a2441){if(_0x2a2441){_0x1cdb99=_0x2a2441;_0x4f7bd1[_0x14f5('0x46')]=_[_0x14f5('0x34')](db['FreshsalesField']['rawAttributes']);_0x4f7bd1[_0x14f5('0x33')]=_[_0x14f5('0x34')](_0x22994a[_0x14f5('0x33')]);_0x4f7bd1[_0x14f5('0x35')]=_['intersection'](_0x4f7bd1[_0x14f5('0x46')],_0x4f7bd1[_0x14f5('0x33')]);_0x57ead8['attributes']=_[_0x14f5('0x36')](_0x4f7bd1[_0x14f5('0x46')],qs[_0x14f5('0x37')](_0x22994a[_0x14f5('0x33')][_0x14f5('0x37')]));_0x57ead8['attributes']=_0x57ead8[_0x14f5('0x38')][_0x14f5('0x48')]?_0x57ead8['attributes']:_0x4f7bd1[_0x14f5('0x46')];_0x57ead8['order']=qs[_0x14f5('0x51')](_0x22994a['query']['sort']);_0x57ead8[_0x14f5('0x3c')]=qs[_0x14f5('0x35')](_[_0x14f5('0x3d')](_0x22994a[_0x14f5('0x33')],_0x4f7bd1['filters']));if(_0x22994a[_0x14f5('0x33')]['filter']){_0x57ead8[_0x14f5('0x3c')]=_[_0x14f5('0x49')](_0x57ead8['where'],{'$or':_['map'](_0x57ead8['attributes'],function(_0x5d583b){var _0x3a7070={};_0x3a7070[_0x5d583b]={'$like':'%'+_0x22994a[_0x14f5('0x33')]['filter']+'%'};return _0x3a7070;})});}_0x57ead8=_[_0x14f5('0x49')]({},_0x57ead8,_0x22994a['options']);return _0x1cdb99[_0x14f5('0x55')](_0x57ead8);}})['then'](function(_0x465185){if(_0x465185){_0x3a920c=_0x465185[_0x14f5('0x48')];if(!_0x22994a[_0x14f5('0x33')]['hasOwnProperty'](_0x14f5('0x3a'))){_0x57ead8['limit']=qs[_0x14f5('0x24')](_0x22994a[_0x14f5('0x33')][_0x14f5('0x24')]);_0x57ead8[_0x14f5('0x22')]=qs[_0x14f5('0x22')](_0x22994a[_0x14f5('0x33')][_0x14f5('0x22')]);}return _0x1cdb99[_0x14f5('0x55')](_0x57ead8);}})[_0x14f5('0x2a')](function(_0x22832b){if(_0x22832b){return _0x22832b?{'count':_0x3a920c,'rows':_0x22832b}:null;}})[_0x14f5('0x2a')](respondWithResult(_0x500acc,null))[_0x14f5('0x43')](handleError(_0x500acc,null));};
\ No newline at end of file
index c499edb..d5ca546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8773=['bluebird','../../config/environment','./intFreshsalesConfiguration.attributes','define','FreshsalesConfiguration','int_freshsales_configurations','util','../../config/logger','api','moment'];(function(_0x4f5108,_0x46a54b){var _0x2d56ca=function(_0x5b3c1e){while(--_0x5b3c1e){_0x4f5108['push'](_0x4f5108['shift']());}};_0x2d56ca(++_0x46a54b);}(_0x8773,0x6a));var _0x3877=function(_0x3c0a59,_0x2d7c3c){_0x3c0a59=_0x3c0a59-0x0;var _0x28c0dd=_0x8773[_0x3c0a59];return _0x28c0dd;};'use strict';var _=require('lodash');var util=require(_0x3877('0x0'));var logger=require(_0x3877('0x1'))(_0x3877('0x2'));var moment=require(_0x3877('0x3'));var BPromise=require(_0x3877('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3877('0x5'));var attributes=require(_0x3877('0x6'));module['exports']=function(_0xea3434,_0x5ee317){return _0xea3434[_0x3877('0x7')](_0x3877('0x8'),attributes,{'tableName':_0x3877('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc799=['rimraf','exports','define','FreshsalesConfiguration','util','../../config/logger','api','moment','bluebird','path'];(function(_0x51cacd,_0x2ecd85){var _0x5eaec6=function(_0x227e3e){while(--_0x227e3e){_0x51cacd['push'](_0x51cacd['shift']());}};_0x5eaec6(++_0x2ecd85);}(_0xc799,0xe0));var _0x9c79=function(_0x1f03fc,_0x5296e9){_0x1f03fc=_0x1f03fc-0x0;var _0x1d33b8=_0xc799[_0x1f03fc];return _0x1d33b8;};'use strict';var _=require('lodash');var util=require(_0x9c79('0x0'));var logger=require(_0x9c79('0x1'))(_0x9c79('0x2'));var moment=require(_0x9c79('0x3'));var BPromise=require(_0x9c79('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c79('0x5'));var rimraf=require(_0x9c79('0x6'));var config=require('../../config/environment');var attributes=require('./intFreshsalesConfiguration.attributes');module[_0x9c79('0x7')]=function(_0xbe56e9,_0x25e7df){return _0xbe56e9[_0x9c79('0x8')](_0x9c79('0x9'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 445fb51..4712ae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5bd=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','info','lodash','moment','bluebird'];(function(_0x53f218,_0x27514c){var _0x21890a=function(_0x445133){while(--_0x445133){_0x53f218['push'](_0x53f218['shift']());}};_0x21890a(++_0x27514c);}(_0xd5bd,0x129));var _0xdd5b=function(_0x3f32ca,_0x2212f2){_0x3f32ca=_0x3f32ca-0x0;var _0xf444d=_0xd5bd[_0x3f32ca];return _0xf444d;};'use strict';var _=require(_0xdd5b('0x0'));var util=require('util');var moment=require(_0xdd5b('0x1'));var BPromise=require(_0xdd5b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdd5b('0x3'));var db=require(_0xdd5b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xdd5b('0x5'))(_0xdd5b('0x6'));var config=require(_0xdd5b('0x7'));var jayson=require(_0xdd5b('0x8'));var client=jayson[_0xdd5b('0x9')][_0xdd5b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x75f194,_0x1a0bfe,_0x3a7a73){return new BPromise(function(_0x5552e3,_0x497180){return client['request'](_0x75f194,_0x3a7a73)['then'](function(_0x440f81){logger['info']('FreshsalesConfiguration,\x20%s,\x20%s',_0x1a0bfe,_0xdd5b('0xb'));logger[_0xdd5b('0xc')](_0xdd5b('0xd'),_0x1a0bfe,_0xdd5b('0xb'),JSON[_0xdd5b('0xe')](_0x440f81));if(_0x440f81[_0xdd5b('0xf')]){if(_0x440f81['error'][_0xdd5b('0x10')]===0x1f4){logger[_0xdd5b('0xf')](_0xdd5b('0x11'),_0x1a0bfe,_0x440f81[_0xdd5b('0xf')][_0xdd5b('0x12')]);return _0x497180(_0x440f81['error'][_0xdd5b('0x12')]);}logger[_0xdd5b('0xf')](_0xdd5b('0x11'),_0x1a0bfe,_0x440f81[_0xdd5b('0xf')][_0xdd5b('0x12')]);return _0x5552e3(_0x440f81[_0xdd5b('0xf')][_0xdd5b('0x12')]);}else{logger[_0xdd5b('0x13')](_0xdd5b('0x11'),_0x1a0bfe,_0xdd5b('0xb'));_0x5552e3(_0x440f81['result'][_0xdd5b('0x12')]);}})['catch'](function(_0x4f28a5){logger[_0xdd5b('0xf')](_0xdd5b('0x11'),_0x1a0bfe,_0x4f28a5);_0x497180(_0x4f28a5);});});}
\ No newline at end of file
+var _0x4eb7=['message','info','request\x20sent','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','FreshsalesConfiguration,\x20%s,\x20%s','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','code','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4eb7,0x1df));var _0x74eb=function(_0x455c6c,_0x1e78b7){_0x455c6c=_0x455c6c-0x0;var _0x488242=_0x4eb7[_0x455c6c];return _0x488242;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x74eb('0x0'));var BPromise=require(_0x74eb('0x1'));var rs=require(_0x74eb('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x74eb('0x3'))['db'];var utils=require(_0x74eb('0x4'));var logger=require(_0x74eb('0x5'))(_0x74eb('0x6'));var config=require('../../config/environment');var jayson=require(_0x74eb('0x7'));var client=jayson[_0x74eb('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x105aa7,_0x3c024f,_0x10dbbd){return new BPromise(function(_0x5f5842,_0xc13fac){return client[_0x74eb('0x9')](_0x105aa7,_0x10dbbd)['then'](function(_0x1e8471){logger['info'](_0x74eb('0xa'),_0x3c024f,'request\x20sent');logger[_0x74eb('0xb')](_0x74eb('0xc'),_0x3c024f,'request\x20sent',JSON['stringify'](_0x1e8471));if(_0x1e8471['error']){if(_0x1e8471['error'][_0x74eb('0xd')]===0x1f4){logger['error'](_0x74eb('0xa'),_0x3c024f,_0x1e8471[_0x74eb('0xe')][_0x74eb('0xf')]);return _0xc13fac(_0x1e8471[_0x74eb('0xe')][_0x74eb('0xf')]);}logger['error'](_0x74eb('0xa'),_0x3c024f,_0x1e8471['error'][_0x74eb('0xf')]);return _0x5f5842(_0x1e8471['error'][_0x74eb('0xf')]);}else{logger[_0x74eb('0x10')](_0x74eb('0xa'),_0x3c024f,_0x74eb('0x11'));_0x5f5842(_0x1e8471['result'][_0x74eb('0xf')]);}})[_0x74eb('0x12')](function(_0x5e3d7f){logger[_0x74eb('0xe')](_0x74eb('0xa'),_0x3c024f,_0x5e3d7f);_0xc13fac(_0x5e3d7f);});});}
\ No newline at end of file
index 5cfb32e..6922e60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9224=['isAuthenticated','index','get','/:id','show','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','./intFreshsalesField.controller'];(function(_0x3386fb,_0x10f475){var _0x3a14d5=function(_0x24ac19){while(--_0x24ac19){_0x3386fb['push'](_0x3386fb['shift']());}};_0x3a14d5(++_0x10f475);}(_0x9224,0xa3));var _0x4922=function(_0x417a2c,_0x803e19){_0x417a2c=_0x417a2c-0x0;var _0x1d9126=_0x9224[_0x417a2c];return _0x1d9126;};'use strict';var multer=require('multer');var util=require(_0x4922('0x0'));var path=require(_0x4922('0x1'));var timeout=require(_0x4922('0x2'));var express=require(_0x4922('0x3'));var router=express[_0x4922('0x4')]();var fs_extra=require(_0x4922('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4922('0x6'));router['get']('/',auth[_0x4922('0x7')](),controller[_0x4922('0x8')]);router[_0x4922('0x9')](_0x4922('0xa'),auth[_0x4922('0x7')](),controller[_0x4922('0xb')]);router['post']('/',auth[_0x4922('0x7')](),controller[_0x4922('0xc')]);router['put'](_0x4922('0xa'),auth[_0x4922('0x7')](),controller[_0x4922('0xd')]);router[_0x4922('0xe')](_0x4922('0xa'),auth[_0x4922('0x7')](),controller[_0x4922('0xf')]);module[_0x4922('0x10')]=router;
\ No newline at end of file
+var _0xfaa4=['post','create','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','isAuthenticated','index','get'];(function(_0x16dcc2,_0x1323f2){var _0x41d2ef=function(_0x4b3085){while(--_0x4b3085){_0x16dcc2['push'](_0x16dcc2['shift']());}};_0x41d2ef(++_0x1323f2);}(_0xfaa4,0x1a8));var _0x4faa=function(_0x54e23f,_0x5a9d4e){_0x54e23f=_0x54e23f-0x0;var _0x31f5d6=_0xfaa4[_0x54e23f];return _0x31f5d6;};'use strict';var multer=require(_0x4faa('0x0'));var util=require(_0x4faa('0x1'));var path=require(_0x4faa('0x2'));var timeout=require(_0x4faa('0x3'));var express=require(_0x4faa('0x4'));var router=express[_0x4faa('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4faa('0x6'));var interaction=require(_0x4faa('0x7'));var config=require(_0x4faa('0x8'));var controller=require(_0x4faa('0x9'));router['get']('/',auth[_0x4faa('0xa')](),controller[_0x4faa('0xb')]);router[_0x4faa('0xc')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x4faa('0xd')]('/',auth[_0x4faa('0xa')](),controller[_0x4faa('0xe')]);router['put'](_0x4faa('0xf'),auth[_0x4faa('0xa')](),controller[_0x4faa('0x10')]);router[_0x4faa('0x11')](_0x4faa('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x4faa('0x12')]=router;
\ No newline at end of file
index ace0e67..516ed66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41d7=['STRING','ENUM','BOOLEAN','sequelize','exports','string','variable','customVariable','keyValue','picklist'];(function(_0x15942a,_0x13b58c){var _0x36a9fb=function(_0x549c27){while(--_0x549c27){_0x15942a['push'](_0x15942a['shift']());}};_0x36a9fb(++_0x13b58c);}(_0x41d7,0x1e3));var _0x741d=function(_0x25656f,_0x286949){_0x25656f=_0x25656f-0x0;var _0xef4cf=_0x41d7[_0x25656f];return _0xef4cf;};'use strict';var Sequelize=require(_0x741d('0x0'));module[_0x741d('0x1')]={'type':{'type':Sequelize['ENUM'](_0x741d('0x2'),_0x741d('0x3'),_0x741d('0x4'),_0x741d('0x5'),_0x741d('0x6')),'defaultValue':_0x741d('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x741d('0x7')]},'keyType':{'type':Sequelize[_0x741d('0x8')](_0x741d('0x2'),'variable',_0x741d('0x4'))},'keyContent':{'type':Sequelize[_0x741d('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x741d('0x7')]},'customField':{'type':Sequelize[_0x741d('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x741d('0x7')]}};
\ No newline at end of file
+var _0x85db=['string','STRING','BOOLEAN','sequelize','exports','ENUM','variable','customVariable','keyValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x85db,0xe4));var _0xb85d=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x85db[_0x3e44fa];return _0x2a0aba;};'use strict';var Sequelize=require(_0xb85d('0x0'));module[_0xb85d('0x1')]={'type':{'type':Sequelize[_0xb85d('0x2')]('string',_0xb85d('0x3'),_0xb85d('0x4'),_0xb85d('0x5'),'picklist'),'defaultValue':_0xb85d('0x6')},'content':{'type':Sequelize[_0xb85d('0x7')]},'key':{'type':Sequelize[_0xb85d('0x7')]},'keyType':{'type':Sequelize[_0xb85d('0x2')](_0xb85d('0x6'),_0xb85d('0x3'),_0xb85d('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xb85d('0x7')]},'nameField':{'type':Sequelize[_0xb85d('0x7')]},'customField':{'type':Sequelize[_0xb85d('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb85d('0x7')]}};
\ No newline at end of file
index 60d18ca..e1a04a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfded=['FreshsalesField','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','includeAll','findAll','catch','show','params','include','options','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','lodash','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','apply','save','then','destroy','error','stack','name','send'];(function(_0x52ee38,_0x1446b9){var _0x598601=function(_0x177a2a){while(--_0x177a2a){_0x52ee38['push'](_0x52ee38['shift']());}};_0x598601(++_0x1446b9);}(_0xfded,0x12f));var _0xdfde=function(_0x40fede,_0x203a11){_0x40fede=_0x40fede-0x0;var _0x482694=_0xfded[_0x40fede];return _0x482694;};'use strict';var emlformat=require(_0xdfde('0x0'));var rimraf=require(_0xdfde('0x1'));var zipdir=require(_0xdfde('0x2'));var jsonpatch=require(_0xdfde('0x3'));var rp=require(_0xdfde('0x4'));var moment=require('moment');var BPromise=require(_0xdfde('0x5'));var Mustache=require(_0xdfde('0x6'));var util=require(_0xdfde('0x7'));var path=require('path');var sox=require(_0xdfde('0x8'));var csv=require('to-csv');var ejs=require(_0xdfde('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdfde('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdfde('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdfde('0xc'));var Redis=require('ioredis');var authService=require(_0xdfde('0xd'));var qs=require(_0xdfde('0xe'));var as=require(_0xdfde('0xf'));var hardwareService=require(_0xdfde('0x10'));var logger=require('../../config/logger')(_0xdfde('0x11'));var utils=require(_0xdfde('0x12'));var config=require(_0xdfde('0x13'));var licenseUtil=require(_0xdfde('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a7929,_0x512215){_0x512215=_0x512215||0xcc;return function(_0x3be040){if(_0x3be040){return _0x2a7929[_0xdfde('0x15')](_0x512215);}return _0x2a7929[_0xdfde('0x16')](_0x512215)[_0xdfde('0x17')]();};}function respondWithResult(_0x48a495,_0x42d4d8){_0x42d4d8=_0x42d4d8||0xc8;return function(_0x4e18db){if(_0x4e18db){return _0x48a495['status'](_0x42d4d8)[_0xdfde('0x18')](_0x4e18db);}};}function respondWithFilteredResult(_0x306ca4,_0x526bc0){return function(_0x308c15){if(_0x308c15){var _0x2f6d04=typeof _0x526bc0[_0xdfde('0x19')]===_0xdfde('0x1a')&&typeof _0x526bc0[_0xdfde('0x1b')]===_0xdfde('0x1a');var _0xd6ecf9=_0x308c15[_0xdfde('0x1c')];var _0x258ee4=_0x2f6d04?0x0:_0x526bc0['offset'];var _0x167952=_0x2f6d04?_0x308c15[_0xdfde('0x1c')]:_0x526bc0[_0xdfde('0x19')]+_0x526bc0['limit'];var _0x35d973;if(_0x167952>=_0xd6ecf9){_0x167952=_0xd6ecf9;_0x35d973=0xc8;}else{_0x35d973=0xce;}_0x306ca4[_0xdfde('0x16')](_0x35d973);return _0x306ca4['set']('Content-Range',_0x258ee4+'-'+_0x167952+'/'+_0xd6ecf9)[_0xdfde('0x18')](_0x308c15);}return null;};}function patchUpdates(_0x43d62a){return function(_0x4a419b){try{jsonpatch[_0xdfde('0x1d')](_0x4a419b,_0x43d62a,!![]);}catch(_0x547094){return BPromise['reject'](_0x547094);}return _0x4a419b[_0xdfde('0x1e')]();};}function saveUpdates(_0x445392,_0x1b147c){return function(_0x5c60d1){if(_0x5c60d1){return _0x5c60d1['update'](_0x445392)[_0xdfde('0x1f')](function(_0x456360){return _0x456360;});}return null;};}function removeEntity(_0x39c1e2,_0x107567){return function(_0x395263){if(_0x395263){return _0x395263[_0xdfde('0x20')]()[_0xdfde('0x1f')](function(){_0x39c1e2[_0xdfde('0x16')](0xcc)[_0xdfde('0x17')]();});}};}function handleEntityNotFound(_0x59a410,_0x25fae6){return function(_0x52c3a2){if(!_0x52c3a2){_0x59a410['sendStatus'](0x194);}return _0x52c3a2;};}function handleError(_0x1b07bd,_0x4679c5){_0x4679c5=_0x4679c5||0x1f4;return function(_0x20c62f){logger[_0xdfde('0x21')](_0x20c62f[_0xdfde('0x22')]);if(_0x20c62f[_0xdfde('0x23')]){delete _0x20c62f['name'];}_0x1b07bd[_0xdfde('0x16')](_0x4679c5)[_0xdfde('0x24')](_0x20c62f);};}exports['index']=function(_0x1fb2b3,_0xa00a46){var _0x88dd47={},_0x5582ff={},_0x4236c8={'count':0x0,'rows':[]};var _0x3518c2=_['map'](db[_0xdfde('0x25')][_0xdfde('0x26')],function(_0x2ea8bb){return{'name':_0x2ea8bb[_0xdfde('0x27')],'type':_0x2ea8bb['type']['key']};});_0x5582ff[_0xdfde('0x28')]=_[_0xdfde('0x29')](_0x3518c2,_0xdfde('0x23'));_0x5582ff[_0xdfde('0x2a')]=_[_0xdfde('0x2b')](_0x1fb2b3[_0xdfde('0x2a')]);_0x5582ff[_0xdfde('0x2c')]=_[_0xdfde('0x2d')](_0x5582ff[_0xdfde('0x28')],_0x5582ff['query']);_0x88dd47[_0xdfde('0x2e')]=_['intersection'](_0x5582ff[_0xdfde('0x28')],qs[_0xdfde('0x2f')](_0x1fb2b3['query'][_0xdfde('0x2f')]));_0x88dd47['attributes']=_0x88dd47[_0xdfde('0x2e')][_0xdfde('0x30')]?_0x88dd47[_0xdfde('0x2e')]:_0x5582ff[_0xdfde('0x28')];if(!_0x1fb2b3[_0xdfde('0x2a')][_0xdfde('0x31')](_0xdfde('0x32'))){_0x88dd47[_0xdfde('0x1b')]=qs[_0xdfde('0x1b')](_0x1fb2b3[_0xdfde('0x2a')][_0xdfde('0x1b')]);_0x88dd47[_0xdfde('0x19')]=qs[_0xdfde('0x19')](_0x1fb2b3['query'][_0xdfde('0x19')]);}_0x88dd47[_0xdfde('0x33')]=qs[_0xdfde('0x34')](_0x1fb2b3['query'][_0xdfde('0x34')]);_0x88dd47[_0xdfde('0x35')]=qs['filters'](_['pick'](_0x1fb2b3[_0xdfde('0x2a')],_0x5582ff[_0xdfde('0x2c')]),_0x3518c2);if(_0x1fb2b3[_0xdfde('0x2a')]['filter']){_0x88dd47[_0xdfde('0x35')]=_[_0xdfde('0x36')](_0x88dd47[_0xdfde('0x35')],{'$or':_[_0xdfde('0x29')](_0x3518c2,function(_0x1e47ff){if(_0x1e47ff[_0xdfde('0x37')]!==_0xdfde('0x38')){var _0x3ef6d1={};_0x3ef6d1[_0x1e47ff[_0xdfde('0x23')]]={'$like':'%'+_0x1fb2b3[_0xdfde('0x2a')]['filter']+'%'};return _0x3ef6d1;}})});}_0x88dd47=_[_0xdfde('0x36')]({},_0x88dd47,_0x1fb2b3['options']);var _0x4efd0a={'where':_0x88dd47['where']};return db[_0xdfde('0x25')][_0xdfde('0x1c')](_0x4efd0a)['then'](function(_0x22922e){_0x4236c8[_0xdfde('0x1c')]=_0x22922e;if(_0x1fb2b3[_0xdfde('0x2a')][_0xdfde('0x39')]){_0x88dd47['include']=[{'all':!![]}];}return db[_0xdfde('0x25')][_0xdfde('0x3a')](_0x88dd47);})['then'](function(_0x571b6f){_0x4236c8['rows']=_0x571b6f;return _0x4236c8;})[_0xdfde('0x1f')](respondWithFilteredResult(_0xa00a46,_0x88dd47))[_0xdfde('0x3b')](handleError(_0xa00a46,null));};exports[_0xdfde('0x3c')]=function(_0x5a157b,_0xde3538){var _0x5a40b6={'raw':!![],'where':{'id':_0x5a157b[_0xdfde('0x3d')]['id']}},_0x270cdc={};_0x270cdc['model']=_[_0xdfde('0x2b')](db[_0xdfde('0x25')]['rawAttributes']);_0x270cdc['query']=_[_0xdfde('0x2b')](_0x5a157b[_0xdfde('0x2a')]);_0x270cdc[_0xdfde('0x2c')]=_[_0xdfde('0x2d')](_0x270cdc['model'],_0x270cdc[_0xdfde('0x2a')]);_0x5a40b6['attributes']=_[_0xdfde('0x2d')](_0x270cdc[_0xdfde('0x28')],qs[_0xdfde('0x2f')](_0x5a157b[_0xdfde('0x2a')][_0xdfde('0x2f')]));_0x5a40b6[_0xdfde('0x2e')]=_0x5a40b6['attributes'][_0xdfde('0x30')]?_0x5a40b6[_0xdfde('0x2e')]:_0x270cdc[_0xdfde('0x28')];if(_0x5a157b[_0xdfde('0x2a')]['includeAll']){_0x5a40b6[_0xdfde('0x3e')]=[{'all':!![]}];}_0x5a40b6=_[_0xdfde('0x36')]({},_0x5a40b6,_0x5a157b[_0xdfde('0x3f')]);return db['FreshsalesField'][_0xdfde('0x40')](_0x5a40b6)['then'](handleEntityNotFound(_0xde3538,null))[_0xdfde('0x1f')](respondWithResult(_0xde3538,null))['catch'](handleError(_0xde3538,null));};exports[_0xdfde('0x41')]=function(_0x567d7d,_0x380db0){return db[_0xdfde('0x25')][_0xdfde('0x41')](_0x567d7d[_0xdfde('0x42')],{})[_0xdfde('0x1f')](respondWithResult(_0x380db0,0xc9))[_0xdfde('0x3b')](handleError(_0x380db0,null));};exports[_0xdfde('0x43')]=function(_0x2f5c91,_0x474ba4){if(_0x2f5c91[_0xdfde('0x42')]['id']){delete _0x2f5c91['body']['id'];}return db['FreshsalesField'][_0xdfde('0x40')]({'where':{'id':_0x2f5c91[_0xdfde('0x3d')]['id']}})[_0xdfde('0x1f')](handleEntityNotFound(_0x474ba4,null))['then'](saveUpdates(_0x2f5c91['body'],null))[_0xdfde('0x1f')](respondWithResult(_0x474ba4,null))[_0xdfde('0x3b')](handleError(_0x474ba4,null));};exports[_0xdfde('0x20')]=function(_0x44d7a8,_0x547f5b){return db['FreshsalesField'][_0xdfde('0x40')]({'where':{'id':_0x44d7a8['params']['id']}})['then'](handleEntityNotFound(_0x547f5b,null))[_0xdfde('0x1f')](removeEntity(_0x547f5b,null))[_0xdfde('0x3b')](handleError(_0x547f5b,null));};
\ No newline at end of file
+var _0xa875=['count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','catch','show','params','keys','FreshsalesField','includeAll','create','find','body','eml-format','zip-dir','moment','bluebird','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','end','status','json','undefined','limit'];(function(_0x5b4a98,_0x376257){var _0x222b95=function(_0x2013e6){while(--_0x2013e6){_0x5b4a98['push'](_0x5b4a98['shift']());}};_0x222b95(++_0x376257);}(_0xa875,0x154));var _0x5a87=function(_0x18f152,_0x41585a){_0x18f152=_0x18f152-0x0;var _0xa10b34=_0xa875[_0x18f152];return _0xa10b34;};'use strict';var emlformat=require(_0x5a87('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5a87('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5a87('0x2'));var BPromise=require(_0x5a87('0x3'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x5a87('0x4'));var csv=require(_0x5a87('0x5'));var ejs=require(_0x5a87('0x6'));var fs=require('fs');var fs_extra=require(_0x5a87('0x7'));var _=require(_0x5a87('0x8'));var squel=require(_0x5a87('0x9'));var crypto=require(_0x5a87('0xa'));var jsforce=require(_0x5a87('0xb'));var deskjs=require(_0x5a87('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5a87('0xd'));var Redis=require(_0x5a87('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x5a87('0xf'));var as=require(_0x5a87('0x10'));var hardwareService=require(_0x5a87('0x11'));var logger=require(_0x5a87('0x12'))(_0x5a87('0x13'));var utils=require(_0x5a87('0x14'));var config=require(_0x5a87('0x15'));var licenseUtil=require(_0x5a87('0x16'));var db=require(_0x5a87('0x17'))['db'];function respondWithStatusCode(_0x26adaf,_0x3fe735){_0x3fe735=_0x3fe735||0xcc;return function(_0x14aca9){if(_0x14aca9){return _0x26adaf[_0x5a87('0x18')](_0x3fe735);}return _0x26adaf['status'](_0x3fe735)[_0x5a87('0x19')]();};}function respondWithResult(_0x5265dc,_0x30eb8f){_0x30eb8f=_0x30eb8f||0xc8;return function(_0x2100d2){if(_0x2100d2){return _0x5265dc[_0x5a87('0x1a')](_0x30eb8f)[_0x5a87('0x1b')](_0x2100d2);}};}function respondWithFilteredResult(_0x3fba5a,_0x2dcd46){return function(_0x20ad62){if(_0x20ad62){var _0x31fade=typeof _0x2dcd46['offset']===_0x5a87('0x1c')&&typeof _0x2dcd46[_0x5a87('0x1d')]==='undefined';var _0x5a874d=_0x20ad62[_0x5a87('0x1e')];var _0x13a1fc=_0x31fade?0x0:_0x2dcd46[_0x5a87('0x1f')];var _0x3dfebc=_0x31fade?_0x20ad62['count']:_0x2dcd46[_0x5a87('0x1f')]+_0x2dcd46['limit'];var _0x1ab5e9;if(_0x3dfebc>=_0x5a874d){_0x3dfebc=_0x5a874d;_0x1ab5e9=0xc8;}else{_0x1ab5e9=0xce;}_0x3fba5a[_0x5a87('0x1a')](_0x1ab5e9);return _0x3fba5a[_0x5a87('0x20')](_0x5a87('0x21'),_0x13a1fc+'-'+_0x3dfebc+'/'+_0x5a874d)[_0x5a87('0x1b')](_0x20ad62);}return null;};}function patchUpdates(_0x52669f){return function(_0x3f61a2){try{jsonpatch[_0x5a87('0x22')](_0x3f61a2,_0x52669f,!![]);}catch(_0x130fdf){return BPromise[_0x5a87('0x23')](_0x130fdf);}return _0x3f61a2[_0x5a87('0x24')]();};}function saveUpdates(_0x2ea521,_0x21b2ae){return function(_0x2ce788){if(_0x2ce788){return _0x2ce788[_0x5a87('0x25')](_0x2ea521)[_0x5a87('0x26')](function(_0x25d3b3){return _0x25d3b3;});}return null;};}function removeEntity(_0x597cf4,_0x1a1d90){return function(_0x259212){if(_0x259212){return _0x259212[_0x5a87('0x27')]()['then'](function(){_0x597cf4[_0x5a87('0x1a')](0xcc)[_0x5a87('0x19')]();});}};}function handleEntityNotFound(_0x34a1ad,_0x4a6c70){return function(_0xba986){if(!_0xba986){_0x34a1ad[_0x5a87('0x18')](0x194);}return _0xba986;};}function handleError(_0x33112a,_0x1c2a80){_0x1c2a80=_0x1c2a80||0x1f4;return function(_0x442008){logger[_0x5a87('0x28')](_0x442008[_0x5a87('0x29')]);if(_0x442008[_0x5a87('0x2a')]){delete _0x442008[_0x5a87('0x2a')];}_0x33112a[_0x5a87('0x1a')](_0x1c2a80)['send'](_0x442008);};}exports['index']=function(_0x40bcfa,_0x2546a5){var _0x2aa51e={},_0x2eca15={},_0x571127={'count':0x0,'rows':[]};var _0x32d70a=_[_0x5a87('0x2b')](db['FreshsalesField'][_0x5a87('0x2c')],function(_0x31744b){return{'name':_0x31744b[_0x5a87('0x2d')],'type':_0x31744b['type'][_0x5a87('0x2e')]};});_0x2eca15[_0x5a87('0x2f')]=_[_0x5a87('0x2b')](_0x32d70a,'name');_0x2eca15[_0x5a87('0x30')]=_['keys'](_0x40bcfa[_0x5a87('0x30')]);_0x2eca15[_0x5a87('0x31')]=_[_0x5a87('0x32')](_0x2eca15[_0x5a87('0x2f')],_0x2eca15[_0x5a87('0x30')]);_0x2aa51e[_0x5a87('0x33')]=_[_0x5a87('0x32')](_0x2eca15[_0x5a87('0x2f')],qs[_0x5a87('0x34')](_0x40bcfa[_0x5a87('0x30')][_0x5a87('0x34')]));_0x2aa51e['attributes']=_0x2aa51e['attributes']['length']?_0x2aa51e['attributes']:_0x2eca15[_0x5a87('0x2f')];if(!_0x40bcfa[_0x5a87('0x30')]['hasOwnProperty'](_0x5a87('0x35'))){_0x2aa51e['limit']=qs[_0x5a87('0x1d')](_0x40bcfa[_0x5a87('0x30')][_0x5a87('0x1d')]);_0x2aa51e[_0x5a87('0x1f')]=qs[_0x5a87('0x1f')](_0x40bcfa[_0x5a87('0x30')]['offset']);}_0x2aa51e[_0x5a87('0x36')]=qs[_0x5a87('0x37')](_0x40bcfa[_0x5a87('0x30')][_0x5a87('0x37')]);_0x2aa51e[_0x5a87('0x38')]=qs[_0x5a87('0x31')](_[_0x5a87('0x39')](_0x40bcfa[_0x5a87('0x30')],_0x2eca15[_0x5a87('0x31')]),_0x32d70a);if(_0x40bcfa[_0x5a87('0x30')][_0x5a87('0x3a')]){_0x2aa51e[_0x5a87('0x38')]=_[_0x5a87('0x3b')](_0x2aa51e[_0x5a87('0x38')],{'$or':_['map'](_0x32d70a,function(_0x21af06){if(_0x21af06[_0x5a87('0x3c')]!==_0x5a87('0x3d')){var _0x4aae7c={};_0x4aae7c[_0x21af06['name']]={'$like':'%'+_0x40bcfa[_0x5a87('0x30')][_0x5a87('0x3a')]+'%'};return _0x4aae7c;}})});}_0x2aa51e=_[_0x5a87('0x3b')]({},_0x2aa51e,_0x40bcfa[_0x5a87('0x3e')]);var _0x344086={'where':_0x2aa51e[_0x5a87('0x38')]};return db['FreshsalesField'][_0x5a87('0x1e')](_0x344086)[_0x5a87('0x26')](function(_0x211e01){_0x571127[_0x5a87('0x1e')]=_0x211e01;if(_0x40bcfa['query']['includeAll']){_0x2aa51e[_0x5a87('0x3f')]=[{'all':!![]}];}return db['FreshsalesField'][_0x5a87('0x40')](_0x2aa51e);})[_0x5a87('0x26')](function(_0x4fe8b1){_0x571127['rows']=_0x4fe8b1;return _0x571127;})[_0x5a87('0x26')](respondWithFilteredResult(_0x2546a5,_0x2aa51e))[_0x5a87('0x41')](handleError(_0x2546a5,null));};exports[_0x5a87('0x42')]=function(_0x29c13e,_0x2ec049){var _0x225a6e={'raw':!![],'where':{'id':_0x29c13e[_0x5a87('0x43')]['id']}},_0x2224ac={};_0x2224ac[_0x5a87('0x2f')]=_[_0x5a87('0x44')](db[_0x5a87('0x45')][_0x5a87('0x2c')]);_0x2224ac[_0x5a87('0x30')]=_['keys'](_0x29c13e[_0x5a87('0x30')]);_0x2224ac[_0x5a87('0x31')]=_[_0x5a87('0x32')](_0x2224ac[_0x5a87('0x2f')],_0x2224ac[_0x5a87('0x30')]);_0x225a6e[_0x5a87('0x33')]=_[_0x5a87('0x32')](_0x2224ac[_0x5a87('0x2f')],qs[_0x5a87('0x34')](_0x29c13e[_0x5a87('0x30')][_0x5a87('0x34')]));_0x225a6e[_0x5a87('0x33')]=_0x225a6e[_0x5a87('0x33')]['length']?_0x225a6e['attributes']:_0x2224ac[_0x5a87('0x2f')];if(_0x29c13e[_0x5a87('0x30')][_0x5a87('0x46')]){_0x225a6e[_0x5a87('0x3f')]=[{'all':!![]}];}_0x225a6e=_[_0x5a87('0x3b')]({},_0x225a6e,_0x29c13e[_0x5a87('0x3e')]);return db[_0x5a87('0x45')]['find'](_0x225a6e)[_0x5a87('0x26')](handleEntityNotFound(_0x2ec049,null))[_0x5a87('0x26')](respondWithResult(_0x2ec049,null))[_0x5a87('0x41')](handleError(_0x2ec049,null));};exports[_0x5a87('0x47')]=function(_0x1cebdc,_0x1ded6d){return db[_0x5a87('0x45')]['create'](_0x1cebdc['body'],{})[_0x5a87('0x26')](respondWithResult(_0x1ded6d,0xc9))[_0x5a87('0x41')](handleError(_0x1ded6d,null));};exports[_0x5a87('0x25')]=function(_0x1a194d,_0x4d487d){if(_0x1a194d['body']['id']){delete _0x1a194d['body']['id'];}return db['FreshsalesField'][_0x5a87('0x48')]({'where':{'id':_0x1a194d[_0x5a87('0x43')]['id']}})[_0x5a87('0x26')](handleEntityNotFound(_0x4d487d,null))[_0x5a87('0x26')](saveUpdates(_0x1a194d[_0x5a87('0x49')],null))[_0x5a87('0x26')](respondWithResult(_0x4d487d,null))[_0x5a87('0x41')](handleError(_0x4d487d,null));};exports[_0x5a87('0x27')]=function(_0x501953,_0x2f692a){return db['FreshsalesField'][_0x5a87('0x48')]({'where':{'id':_0x501953['params']['id']}})[_0x5a87('0x26')](handleEntityNotFound(_0x2f692a,null))[_0x5a87('0x26')](removeEntity(_0x2f692a,null))[_0x5a87('0x41')](handleError(_0x2f692a,null));};
\ No newline at end of file
index 2f02faa..90f39be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf108=['define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','lodash','../../config/logger','api','moment','rimraf','../../config/environment','./intFreshsalesField.attributes','exports'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xf108,0x1d9));var _0x8f10=function(_0x1bfa69,_0x11d672){_0x1bfa69=_0x1bfa69-0x0;var _0x120018=_0xf108[_0x1bfa69];return _0x120018;};'use strict';var _=require(_0x8f10('0x0'));var util=require('util');var logger=require(_0x8f10('0x1'))(_0x8f10('0x2'));var moment=require(_0x8f10('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8f10('0x4'));var config=require(_0x8f10('0x5'));var attributes=require(_0x8f10('0x6'));module[_0x8f10('0x7')]=function(_0x2e3419,_0x235737){return _0x2e3419[_0x8f10('0x8')](_0x8f10('0x9'),attributes,{'tableName':_0x8f10('0xa'),'paranoid':![],'indexes':[{'name':_0x8f10('0xb'),'fields':[_0x8f10('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfb11=['bluebird','path','../../config/environment','./intFreshsalesField.attributes','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId','lodash','../../config/logger','api'];(function(_0x76453b,_0x5debe0){var _0x4c3dc3=function(_0x4a18d4){while(--_0x4a18d4){_0x76453b['push'](_0x76453b['shift']());}};_0x4c3dc3(++_0x5debe0);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xfb11[_0x5783f4];return _0x28e380;};'use strict';var _=require(_0x1fb1('0x0'));var util=require('util');var logger=require(_0x1fb1('0x1'))(_0x1fb1('0x2'));var moment=require('moment');var BPromise=require(_0x1fb1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1fb1('0x4'));var rimraf=require('rimraf');var config=require(_0x1fb1('0x5'));var attributes=require(_0x1fb1('0x6'));module['exports']=function(_0x25d44f,_0x133727){return _0x25d44f['define'](_0x1fb1('0x7'),attributes,{'tableName':_0x1fb1('0x8'),'paranoid':![],'indexes':[{'name':_0x1fb1('0x9'),'fields':[_0x1fb1('0xa'),_0x1fb1('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a79315c..b1002d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x30cafd,_0x501a5a){var _0x36dc26=function(_0x28695c){while(--_0x28695c){_0x30cafd['push'](_0x30cafd['shift']());}};_0x36dc26(++_0x501a5a);}(_0x326f,0xd1));var _0xf326=function(_0x2efaae,_0x17321e){_0x2efaae=_0x2efaae-0x0;var _0x3fe22c=_0x326f[_0x2efaae];return _0x3fe22c;};'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')]('FreshsalesField,\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')]('FreshsalesField,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}
\ No newline at end of file
+var _0xc1c6=['lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch'];(function(_0x396e82,_0x2c4c1a){var _0x2d927b=function(_0xd7ddb7){while(--_0xd7ddb7){_0x396e82['push'](_0x396e82['shift']());}};_0x2d927b(++_0x2c4c1a);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x36ae3a,_0x39d3e5){_0x36ae3a=_0x36ae3a-0x0;var _0x11cd9a=_0xc1c6[_0x36ae3a];return _0x11cd9a;};'use strict';var _=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var moment=require(_0x6c1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6c1c('0x7'));var client=jayson['client'][_0x6c1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x582bec,_0xe510ca,_0x2eb1ba){return new BPromise(function(_0x38369d,_0x2cec58){return client['request'](_0x582bec,_0x2eb1ba)[_0x6c1c('0x9')](function(_0x3ca985){logger['info'](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));logger[_0x6c1c('0xc')](_0x6c1c('0xd'),_0xe510ca,'request\x20sent',JSON[_0x6c1c('0xe')](_0x3ca985));if(_0x3ca985[_0x6c1c('0xf')]){if(_0x3ca985[_0x6c1c('0xf')]['code']===0x1f4){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')]['message']);return _0x2cec58(_0x3ca985[_0x6c1c('0xf')]['message']);}logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);return _0x38369d(_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);}else{logger[_0x6c1c('0x11')](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));_0x38369d(_0x3ca985['result'][_0x6c1c('0x10')]);}})[_0x6c1c('0x12')](function(_0x5214ee){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x5214ee);_0x2cec58(_0x5214ee);});});}
\ No newline at end of file
index 2d26e18..d9faa30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x2fbd41,_0x4e40c7){var _0x3ad9f1=function(_0x69a899){while(--_0x69a899){_0x2fbd41['push'](_0x2fbd41['shift']());}};_0x3ad9f1(++_0x4e40c7);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5dc0aa,_0xad3f41){var _0x4bbd2a=function(_0x51b2b4){while(--_0x51b2b4){_0x5dc0aa['push'](_0x5dc0aa['shift']());}};_0x4bbd2a(++_0xad3f41);}(_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/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 d517da0..a714efa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cd0=['sequelize','STRING','username','ENUM','integrationTab','newTab'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3cd0,0x8a));var _0x03cd=function(_0x5d8631,_0x44944b){_0x5d8631=_0x5d8631-0x0;var _0x34c15e=_0x3cd0[_0x5d8631];return _0x34c15e;};'use strict';var Sequelize=require(_0x03cd('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x03cd('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x03cd('0x2')},'remoteUri':{'type':Sequelize[_0x03cd('0x1')]},'password':{'type':Sequelize[_0x03cd('0x1')]},'clientId':{'type':Sequelize[_0x03cd('0x1')]},'clientSecret':{'type':Sequelize[_0x03cd('0x1')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x03cd('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x03cd('0x3')](_0x03cd('0x4'),_0x03cd('0x5')),'defaultValue':_0x03cd('0x4')}};
\ No newline at end of file
+var _0x65cb=['STRING','ENUM','integrationTab','newTab','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x65cb,0xa4));var _0xb65c=function(_0x1fafd5,_0x3a03a5){_0x1fafd5=_0x1fafd5-0x0;var _0x2ce5a6=_0x65cb[_0x1fafd5];return _0x2ce5a6;};'use strict';var Sequelize=require(_0xb65c('0x0'));module['exports']={'name':{'type':Sequelize[_0xb65c('0x1')]},'description':{'type':Sequelize[_0xb65c('0x1')]},'username':{'type':Sequelize[_0xb65c('0x1')],'unique':'username'},'remoteUri':{'type':Sequelize[_0xb65c('0x1')]},'password':{'type':Sequelize[_0xb65c('0x1')]},'clientId':{'type':Sequelize[_0xb65c('0x1')]},'clientSecret':{'type':Sequelize[_0xb65c('0x1')]},'securityToken':{'type':Sequelize[_0xb65c('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb65c('0x2')](_0xb65c('0x3'),_0xb65c('0x4')),'defaultValue':_0xb65c('0x3')}};
\ No newline at end of file
index 2a6decd..edc71ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb60=['SalesforceConfiguration','addConfiguration','getSubjects','channel','Descriptions','Subjects','SalesforceField','getFields','Task','remoteUri','clientSecret','username','password','securityToken','slice','Connection','clientId','concat','isNil','ticketType','describe','OwnerId','ActivityDate','IsReminderSet','Subject','Description','string','int','picklist','phone','remove','includes','label','custom','picklistValues','value','boolean','True','False','test','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','apply','reject','save','update','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','options','SalesforceAccount','then','includeAll','include','rows','catch','show','params','keys','create','body','find','getConfigurations','findOne'];(function(_0x3c26ee,_0x4f5c2d){var _0x1bf1d2=function(_0x177cf1){while(--_0x177cf1){_0x3c26ee['push'](_0x3c26ee['shift']());}};_0x1bf1d2(++_0x4f5c2d);}(_0xfb60,0x199));var _0x0fb6=function(_0x43b930,_0x1360b9){_0x43b930=_0x43b930-0x0;var _0x5c2d19=_0xfb60[_0x43b930];return _0x5c2d19;};'use strict';var emlformat=require(_0x0fb6('0x0'));var rimraf=require(_0x0fb6('0x1'));var zipdir=require(_0x0fb6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0fb6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0fb6('0x4'));var util=require(_0x0fb6('0x5'));var path=require(_0x0fb6('0x6'));var sox=require(_0x0fb6('0x7'));var csv=require(_0x0fb6('0x8'));var ejs=require(_0x0fb6('0x9'));var fs=require('fs');var fs_extra=require(_0x0fb6('0xa'));var _=require(_0x0fb6('0xb'));var squel=require(_0x0fb6('0xc'));var crypto=require(_0x0fb6('0xd'));var jsforce=require(_0x0fb6('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0fb6('0x8'));var querystring=require('querystring');var Papa=require(_0x0fb6('0xf'));var Redis=require(_0x0fb6('0x10'));var authService=require(_0x0fb6('0x11'));var qs=require(_0x0fb6('0x12'));var as=require(_0x0fb6('0x13'));var hardwareService=require(_0x0fb6('0x14'));var logger=require(_0x0fb6('0x15'))(_0x0fb6('0x16'));var utils=require(_0x0fb6('0x17'));var config=require(_0x0fb6('0x18'));var licenseUtil=require(_0x0fb6('0x19'));var db=require(_0x0fb6('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x37a513,_0x47bb7a){_0x47bb7a=_0x47bb7a||0xcc;return function(_0x12366c){if(_0x12366c){return _0x37a513[_0x0fb6('0x1b')](_0x47bb7a);}return _0x37a513['status'](_0x47bb7a)[_0x0fb6('0x1c')]();};}function respondWithResult(_0x876cab,_0x615c2e){_0x615c2e=_0x615c2e||0xc8;return function(_0x522279){if(_0x522279){return _0x876cab[_0x0fb6('0x1d')](_0x615c2e)[_0x0fb6('0x1e')](_0x522279);}};}function respondWithFilteredResult(_0xb6c8c8,_0x36ca04){return function(_0x40f82d){if(_0x40f82d){var _0x52517d=typeof _0x36ca04[_0x0fb6('0x1f')]==='undefined'&&typeof _0x36ca04[_0x0fb6('0x20')]===_0x0fb6('0x21');var _0x5db280=_0x40f82d[_0x0fb6('0x22')];var _0x44a614=_0x52517d?0x0:_0x36ca04[_0x0fb6('0x1f')];var _0xf84807=_0x52517d?_0x40f82d['count']:_0x36ca04[_0x0fb6('0x1f')]+_0x36ca04['limit'];var _0x3eeb87;if(_0xf84807>=_0x5db280){_0xf84807=_0x5db280;_0x3eeb87=0xc8;}else{_0x3eeb87=0xce;}_0xb6c8c8[_0x0fb6('0x1d')](_0x3eeb87);return _0xb6c8c8['set']('Content-Range',_0x44a614+'-'+_0xf84807+'/'+_0x5db280)[_0x0fb6('0x1e')](_0x40f82d);}return null;};}function patchUpdates(_0x2287a3){return function(_0x23a5b7){try{jsonpatch[_0x0fb6('0x23')](_0x23a5b7,_0x2287a3,!![]);}catch(_0xf9afc4){return BPromise[_0x0fb6('0x24')](_0xf9afc4);}return _0x23a5b7[_0x0fb6('0x25')]();};}function saveUpdates(_0x336670,_0x1383e1){return function(_0xdb9e5f){if(_0xdb9e5f){return _0xdb9e5f[_0x0fb6('0x26')](_0x336670)['then'](function(_0x2d1740){return _0x2d1740;});}return null;};}function removeEntity(_0x6dbc76,_0x25db09){return function(_0x4e52ad){if(_0x4e52ad){return _0x4e52ad[_0x0fb6('0x27')]()['then'](function(){_0x6dbc76[_0x0fb6('0x1d')](0xcc)[_0x0fb6('0x1c')]();});}};}function handleEntityNotFound(_0x485542,_0x399fc8){return function(_0x19799c){if(!_0x19799c){_0x485542['sendStatus'](0x194);}return _0x19799c;};}function handleError(_0x26a44c,_0x387cd1){_0x387cd1=_0x387cd1||0x1f4;return function(_0x50341c){logger[_0x0fb6('0x28')](_0x50341c[_0x0fb6('0x29')]);if(_0x50341c[_0x0fb6('0x2a')]){delete _0x50341c[_0x0fb6('0x2a')];}_0x26a44c[_0x0fb6('0x1d')](_0x387cd1)['send'](_0x50341c);};}exports[_0x0fb6('0x2b')]=function(_0x121f67,_0x2984ea){var _0x5447d5={},_0x3ca447={},_0x438589={'count':0x0,'rows':[]};var _0xe91d83=_[_0x0fb6('0x2c')](db['SalesforceAccount'][_0x0fb6('0x2d')],function(_0xc241f3){return{'name':_0xc241f3[_0x0fb6('0x2e')],'type':_0xc241f3[_0x0fb6('0x2f')][_0x0fb6('0x30')]};});_0x3ca447[_0x0fb6('0x31')]=_[_0x0fb6('0x2c')](_0xe91d83,_0x0fb6('0x2a'));_0x3ca447[_0x0fb6('0x32')]=_['keys'](_0x121f67[_0x0fb6('0x32')]);_0x3ca447[_0x0fb6('0x33')]=_[_0x0fb6('0x34')](_0x3ca447['model'],_0x3ca447[_0x0fb6('0x32')]);_0x5447d5[_0x0fb6('0x35')]=_[_0x0fb6('0x34')](_0x3ca447['model'],qs['fields'](_0x121f67[_0x0fb6('0x32')][_0x0fb6('0x36')]));_0x5447d5[_0x0fb6('0x35')]=_0x5447d5[_0x0fb6('0x35')][_0x0fb6('0x37')]?_0x5447d5['attributes']:_0x3ca447[_0x0fb6('0x31')];if(!_0x121f67['query'][_0x0fb6('0x38')](_0x0fb6('0x39'))){_0x5447d5[_0x0fb6('0x20')]=qs[_0x0fb6('0x20')](_0x121f67[_0x0fb6('0x32')][_0x0fb6('0x20')]);_0x5447d5['offset']=qs[_0x0fb6('0x1f')](_0x121f67[_0x0fb6('0x32')]['offset']);}_0x5447d5[_0x0fb6('0x3a')]=qs[_0x0fb6('0x3b')](_0x121f67['query'][_0x0fb6('0x3b')]);_0x5447d5['where']=qs['filters'](_[_0x0fb6('0x3c')](_0x121f67['query'],_0x3ca447['filters']),_0xe91d83);if(_0x121f67['query']['filter']){_0x5447d5[_0x0fb6('0x3d')]=_[_0x0fb6('0x3e')](_0x5447d5[_0x0fb6('0x3d')],{'$or':_[_0x0fb6('0x2c')](_0xe91d83,function(_0x25e298){if(_0x25e298[_0x0fb6('0x2f')]!==_0x0fb6('0x3f')){var _0x3815a0={};_0x3815a0[_0x25e298[_0x0fb6('0x2a')]]={'$like':'%'+_0x121f67[_0x0fb6('0x32')]['filter']+'%'};return _0x3815a0;}})});}_0x5447d5=_[_0x0fb6('0x3e')]({},_0x5447d5,_0x121f67[_0x0fb6('0x40')]);var _0x69a6d4={'where':_0x5447d5[_0x0fb6('0x3d')]};return db[_0x0fb6('0x41')][_0x0fb6('0x22')](_0x69a6d4)[_0x0fb6('0x42')](function(_0x50a31a){_0x438589[_0x0fb6('0x22')]=_0x50a31a;if(_0x121f67[_0x0fb6('0x32')][_0x0fb6('0x43')]){_0x5447d5[_0x0fb6('0x44')]=[{'all':!![]}];}return db[_0x0fb6('0x41')]['findAll'](_0x5447d5);})['then'](function(_0x4da942){_0x438589[_0x0fb6('0x45')]=_0x4da942;return _0x438589;})['then'](respondWithFilteredResult(_0x2984ea,_0x5447d5))[_0x0fb6('0x46')](handleError(_0x2984ea,null));};exports[_0x0fb6('0x47')]=function(_0xd78e20,_0x525b13){var _0x44524d={'raw':![],'where':{'id':_0xd78e20[_0x0fb6('0x48')]['id']}},_0x1a1dfa={};_0x1a1dfa[_0x0fb6('0x31')]=_['keys'](db[_0x0fb6('0x41')][_0x0fb6('0x2d')]);_0x1a1dfa['query']=_[_0x0fb6('0x49')](_0xd78e20[_0x0fb6('0x32')]);_0x1a1dfa[_0x0fb6('0x33')]=_[_0x0fb6('0x34')](_0x1a1dfa[_0x0fb6('0x31')],_0x1a1dfa[_0x0fb6('0x32')]);_0x44524d[_0x0fb6('0x35')]=_[_0x0fb6('0x34')](_0x1a1dfa[_0x0fb6('0x31')],qs[_0x0fb6('0x36')](_0xd78e20[_0x0fb6('0x32')][_0x0fb6('0x36')]));_0x44524d[_0x0fb6('0x35')]=_0x44524d[_0x0fb6('0x35')]['length']?_0x44524d['attributes']:_0x1a1dfa['model'];if(_0xd78e20[_0x0fb6('0x32')][_0x0fb6('0x43')]){_0x44524d[_0x0fb6('0x44')]=[{'all':!![]}];}_0x44524d=_[_0x0fb6('0x3e')]({},_0x44524d,_0xd78e20['options']);return db['SalesforceAccount']['find'](_0x44524d)[_0x0fb6('0x42')](handleEntityNotFound(_0x525b13,null))[_0x0fb6('0x42')](respondWithResult(_0x525b13,null))[_0x0fb6('0x46')](handleError(_0x525b13,null));};exports['create']=function(_0x33da81,_0x3aa6d7){return db[_0x0fb6('0x41')][_0x0fb6('0x4a')](_0x33da81[_0x0fb6('0x4b')],{})['then'](respondWithResult(_0x3aa6d7,0xc9))['catch'](handleError(_0x3aa6d7,null));};exports[_0x0fb6('0x26')]=function(_0x3751aa,_0x49fca1){if(_0x3751aa['body']['id']){delete _0x3751aa['body']['id'];}return db[_0x0fb6('0x41')][_0x0fb6('0x4c')]({'where':{'id':_0x3751aa[_0x0fb6('0x48')]['id']}})[_0x0fb6('0x42')](handleEntityNotFound(_0x49fca1,null))['then'](saveUpdates(_0x3751aa['body'],null))['then'](respondWithResult(_0x49fca1,null))['catch'](handleError(_0x49fca1,null));};exports['destroy']=function(_0x1be31e,_0x2cb6a6){return db[_0x0fb6('0x41')][_0x0fb6('0x4c')]({'where':{'id':_0x1be31e[_0x0fb6('0x48')]['id']}})['then'](handleEntityNotFound(_0x2cb6a6,null))[_0x0fb6('0x42')](removeEntity(_0x2cb6a6,null))['catch'](handleError(_0x2cb6a6,null));};exports[_0x0fb6('0x4d')]=function(_0x3b4d11,_0x9984cf,_0x24e1b6){var _0x25333f={};var _0x3fbc30={};var _0xef7022;var _0x240fd5;return db[_0x0fb6('0x41')][_0x0fb6('0x4e')]({'where':{'id':_0x3b4d11[_0x0fb6('0x48')]['id']}})['then'](handleEntityNotFound(_0x9984cf,null))['then'](function(_0x2e5f31){if(_0x2e5f31){_0xef7022=_0x2e5f31;_0x3fbc30[_0x0fb6('0x31')]=_['keys'](db[_0x0fb6('0x4f')]['rawAttributes']);_0x3fbc30[_0x0fb6('0x32')]=_[_0x0fb6('0x49')](_0x3b4d11[_0x0fb6('0x32')]);_0x3fbc30[_0x0fb6('0x33')]=_[_0x0fb6('0x34')](_0x3fbc30[_0x0fb6('0x31')],_0x3fbc30['query']);_0x25333f[_0x0fb6('0x35')]=_[_0x0fb6('0x34')](_0x3fbc30[_0x0fb6('0x31')],qs[_0x0fb6('0x36')](_0x3b4d11[_0x0fb6('0x32')]['fields']));_0x25333f['attributes']=_0x25333f[_0x0fb6('0x35')][_0x0fb6('0x37')]?_0x25333f[_0x0fb6('0x35')]:_0x3fbc30[_0x0fb6('0x31')];_0x25333f[_0x0fb6('0x3a')]=qs[_0x0fb6('0x3b')](_0x3b4d11[_0x0fb6('0x32')][_0x0fb6('0x3b')]);_0x25333f[_0x0fb6('0x3d')]=qs[_0x0fb6('0x33')](_[_0x0fb6('0x3c')](_0x3b4d11[_0x0fb6('0x32')],_0x3fbc30[_0x0fb6('0x33')]));if(_0x3b4d11[_0x0fb6('0x32')]['filter']){_0x25333f[_0x0fb6('0x3d')]=_['merge'](_0x25333f[_0x0fb6('0x3d')],{'$or':_['map'](_0x25333f[_0x0fb6('0x35')],function(_0xd5a684){var _0xac2ff2={};_0xac2ff2[_0xd5a684]={'$like':'%'+_0x3b4d11[_0x0fb6('0x32')]['filter']+'%'};return _0xac2ff2;})});}_0x25333f=_[_0x0fb6('0x3e')]({},_0x25333f,_0x3b4d11['options']);return _0xef7022[_0x0fb6('0x4d')](_0x25333f);}})[_0x0fb6('0x42')](function(_0x4d117f){if(_0x4d117f){_0x240fd5=_0x4d117f[_0x0fb6('0x37')];if(!_0x3b4d11[_0x0fb6('0x32')][_0x0fb6('0x38')](_0x0fb6('0x39'))){_0x25333f[_0x0fb6('0x20')]=qs['limit'](_0x3b4d11[_0x0fb6('0x32')]['limit']);_0x25333f[_0x0fb6('0x1f')]=qs['offset'](_0x3b4d11[_0x0fb6('0x32')][_0x0fb6('0x1f')]);}return _0xef7022[_0x0fb6('0x4d')](_0x25333f);}})[_0x0fb6('0x42')](function(_0x5f5892){if(_0x5f5892){return _0x5f5892?{'count':_0x240fd5,'rows':_0x5f5892}:null;}})['then'](respondWithResult(_0x9984cf,null))[_0x0fb6('0x46')](handleError(_0x9984cf,null));};exports[_0x0fb6('0x50')]=function(_0x4446ae,_0xf1e30a,_0x1a3a6d){if(_0x4446ae[_0x0fb6('0x4b')]['id']){delete _0x4446ae['body']['id'];}return db['SalesforceAccount'][_0x0fb6('0x4e')]({'where':{'id':_0x4446ae[_0x0fb6('0x48')]['id']}})['then'](handleEntityNotFound(_0xf1e30a,null))[_0x0fb6('0x42')](function(_0x442c6f){if(_0x442c6f){_0x4446ae[_0x0fb6('0x4b')]['AccountId']=_0x442c6f['id'];_0x4446ae[_0x0fb6('0x4b')]['Subjects']=integrations[_0x0fb6('0x51')](_0x4446ae['body'][_0x0fb6('0x52')],_0x4446ae['body'][_0x0fb6('0x2f')]);_0x4446ae['body'][_0x0fb6('0x53')]=integrations['getDescriptions'](_0x4446ae[_0x0fb6('0x4b')][_0x0fb6('0x52')],_0x4446ae[_0x0fb6('0x4b')]['type']);return db['SalesforceConfiguration'][_0x0fb6('0x4a')](_0x4446ae[_0x0fb6('0x4b')],{'include':[{'model':db['SalesforceField'],'as':_0x0fb6('0x54')},{'model':db[_0x0fb6('0x55')],'as':_0x0fb6('0x53')}]});}return null;})[_0x0fb6('0x42')](respondWithResult(_0xf1e30a,null))[_0x0fb6('0x46')](handleError(_0xf1e30a,null));};exports[_0x0fb6('0x56')]=function(_0x3a4a8c,_0x408cf8,_0x412b16){var _0x567f83;var _0x52adf3='';var _0x13062b=_0x0fb6('0x57');return db['SalesforceAccount'][_0x0fb6('0x4e')]({'where':{'id':_0x3a4a8c[_0x0fb6('0x48')]['id']},'attributes':['id',_0x0fb6('0x58'),'clientId',_0x0fb6('0x59'),_0x0fb6('0x5a'),_0x0fb6('0x5b'),_0x0fb6('0x5c')]})[_0x0fb6('0x42')](handleEntityNotFound(_0x408cf8,null))[_0x0fb6('0x42')](function(_0x3739c5){if(_0x3739c5){_0x52adf3=_0x3739c5[_0x0fb6('0x58')];var _0x2e24cc=_0x52adf3[_0x0fb6('0x5d')](-0x1);if(_0x2e24cc==='/'){_0x52adf3=_0x52adf3['substring'](0x0,_0x52adf3['lastIndexOf'](_0x2e24cc));}_0x567f83=new jsforce[(_0x0fb6('0x5e'))]({'oauth2':{'loginUrl':_0x52adf3,'clientId':_0x3739c5[_0x0fb6('0x5f')],'clientSecret':_0x3739c5[_0x0fb6('0x59')]}});return _0x567f83['login'](_0x3739c5['username'],_0x3739c5[_0x0fb6('0x5b')][_0x0fb6('0x60')](_0x3739c5['securityToken']));}})[_0x0fb6('0x42')](function(_0x450cea){if(_0x450cea){if(!_[_0x0fb6('0x61')](_0x3a4a8c[_0x0fb6('0x32')][_0x0fb6('0x62')])){_0x13062b=_0x3a4a8c['query'][_0x0fb6('0x62')];}return _0x567f83['sobject'](_0x13062b)[_0x0fb6('0x63')]();}})[_0x0fb6('0x42')](function(_0x2ae7a4){var _0x28d0c7=[_0x0fb6('0x64'),_0x0fb6('0x65'),_0x0fb6('0x66'),'IsRecurrence',_0x0fb6('0x67'),_0x0fb6('0x68')];var _0x5710bf=[_0x0fb6('0x69'),_0x0fb6('0x6a'),_0x0fb6('0x6b'),'boolean','email','textarea',_0x0fb6('0x6c')];if(_0x2ae7a4){_[_0x0fb6('0x6d')](_0x2ae7a4[_0x0fb6('0x36')],function(_0x59fb91){return _0x28d0c7[_0x0fb6('0x6e')](_0x59fb91[_0x0fb6('0x2a')])||!_0x5710bf[_0x0fb6('0x6e')](_0x59fb91[_0x0fb6('0x2f')]);});return{'count':_0x2ae7a4['fields']['length'],'rows':_[_0x0fb6('0x2c')](_0x2ae7a4[_0x0fb6('0x36')],function(_0x44f1c9){return{'id':_0x44f1c9['name'],'name':_0x44f1c9[_0x0fb6('0x6f')],'custom':_0x44f1c9[_0x0fb6('0x70')],'options':_0x44f1c9['picklistValues']['length']>0x0?_[_0x0fb6('0x2c')](_0x44f1c9[_0x0fb6('0x71')],function(_0xba2156){return{'name':_0xba2156[_0x0fb6('0x6f')],'value':_0xba2156[_0x0fb6('0x72')]};}):_0x44f1c9[_0x0fb6('0x2f')]==_0x0fb6('0x73')?[{'name':_0x0fb6('0x74'),'value':'true'},{'name':_0x0fb6('0x75'),'value':'false'}]:[]};})};}})[_0x0fb6('0x42')](respondWithResult(_0x408cf8,null))[_0x0fb6('0x46')](function(_0x1ecb25){var _0x44b86d=_0x3a4a8c['query'][_0x0fb6('0x76')]?0x1f4:_0x1ecb25['statusCode']||0x1f4;logger[_0x0fb6('0x28')](_0x0fb6('0x77'),_0x0fb6('0x56'),_0x44b86d,JSON[_0x0fb6('0x78')](_0x1ecb25));delete _0x1ecb25['name'];if(_0x44b86d===0x191){_0x44b86d=0x190;}_0x408cf8[_0x0fb6('0x1d')](_0x44b86d)[_0x0fb6('0x79')](_0x3a4a8c[_0x0fb6('0x32')][_0x0fb6('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x1ecb25['statusCode']}:_0x1ecb25);});};
\ No newline at end of file
+var _0xa3dc=['findOne','SalesforceConfiguration','rawAttributes','pick','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','remoteUri','clientId','username','password','securityToken','Connection','clientSecret','login','isNil','sobject','OwnerId','ActivityDate','IsReminderSet','Subject','Description','string','int','boolean','phone','remove','includes','label','custom','picklistValues','value','True','False','false','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','end','status','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','SalesforceAccount','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','includeAll','find','create','body','getConfigurations'];(function(_0x30bfba,_0xd6037c){var _0x259e95=function(_0x414a24){while(--_0x414a24){_0x30bfba['push'](_0x30bfba['shift']());}};_0x259e95(++_0xd6037c);}(_0xa3dc,0x192));var _0xca3d=function(_0x5a0f3e,_0x187a6e){_0x5a0f3e=_0x5a0f3e-0x0;var _0x52fffe=_0xa3dc[_0x5a0f3e];return _0x52fffe;};'use strict';var emlformat=require(_0xca3d('0x0'));var rimraf=require(_0xca3d('0x1'));var zipdir=require(_0xca3d('0x2'));var jsonpatch=require(_0xca3d('0x3'));var rp=require(_0xca3d('0x4'));var moment=require(_0xca3d('0x5'));var BPromise=require(_0xca3d('0x6'));var Mustache=require('mustache');var util=require(_0xca3d('0x7'));var path=require('path');var sox=require(_0xca3d('0x8'));var csv=require(_0xca3d('0x9'));var ejs=require(_0xca3d('0xa'));var fs=require('fs');var fs_extra=require(_0xca3d('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xca3d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xca3d('0xd'));var toCsv=require(_0xca3d('0x9'));var querystring=require(_0xca3d('0xe'));var Papa=require('papaparse');var Redis=require(_0xca3d('0xf'));var authService=require(_0xca3d('0x10'));var qs=require(_0xca3d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xca3d('0x12'));var logger=require(_0xca3d('0x13'))('api');var utils=require(_0xca3d('0x14'));var config=require(_0xca3d('0x15'));var licenseUtil=require(_0xca3d('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0xca3d('0x17'));function respondWithStatusCode(_0x3e3162,_0x503c03){_0x503c03=_0x503c03||0xcc;return function(_0x38745c){if(_0x38745c){return _0x3e3162['sendStatus'](_0x503c03);}return _0x3e3162['status'](_0x503c03)[_0xca3d('0x18')]();};}function respondWithResult(_0x30129f,_0x53ff4d){_0x53ff4d=_0x53ff4d||0xc8;return function(_0x19ea40){if(_0x19ea40){return _0x30129f[_0xca3d('0x19')](_0x53ff4d)[_0xca3d('0x1a')](_0x19ea40);}};}function respondWithFilteredResult(_0x4d13d3,_0x53b4f2){return function(_0x5d08aa){if(_0x5d08aa){var _0x3913ab=typeof _0x53b4f2['offset']===_0xca3d('0x1b')&&typeof _0x53b4f2['limit']===_0xca3d('0x1b');var _0x1a18a2=_0x5d08aa['count'];var _0x3cac2b=_0x3913ab?0x0:_0x53b4f2[_0xca3d('0x1c')];var _0x1274e5=_0x3913ab?_0x5d08aa[_0xca3d('0x1d')]:_0x53b4f2[_0xca3d('0x1c')]+_0x53b4f2[_0xca3d('0x1e')];var _0xadd7f5;if(_0x1274e5>=_0x1a18a2){_0x1274e5=_0x1a18a2;_0xadd7f5=0xc8;}else{_0xadd7f5=0xce;}_0x4d13d3['status'](_0xadd7f5);return _0x4d13d3[_0xca3d('0x1f')](_0xca3d('0x20'),_0x3cac2b+'-'+_0x1274e5+'/'+_0x1a18a2)['json'](_0x5d08aa);}return null;};}function patchUpdates(_0x4ad744){return function(_0x3a3658){try{jsonpatch[_0xca3d('0x21')](_0x3a3658,_0x4ad744,!![]);}catch(_0xeb14d6){return BPromise[_0xca3d('0x22')](_0xeb14d6);}return _0x3a3658[_0xca3d('0x23')]();};}function saveUpdates(_0x40e43a,_0x39d1ba){return function(_0x3919e4){if(_0x3919e4){return _0x3919e4['update'](_0x40e43a)[_0xca3d('0x24')](function(_0x25dec4){return _0x25dec4;});}return null;};}function removeEntity(_0x1534c9,_0x55e161){return function(_0x35925e){if(_0x35925e){return _0x35925e[_0xca3d('0x25')]()[_0xca3d('0x24')](function(){_0x1534c9[_0xca3d('0x19')](0xcc)[_0xca3d('0x18')]();});}};}function handleEntityNotFound(_0x3ea7ec,_0x43abc4){return function(_0xa0f514){if(!_0xa0f514){_0x3ea7ec['sendStatus'](0x194);}return _0xa0f514;};}function handleError(_0x643e9c,_0x429c73){_0x429c73=_0x429c73||0x1f4;return function(_0x521fe3){logger[_0xca3d('0x26')](_0x521fe3[_0xca3d('0x27')]);if(_0x521fe3['name']){delete _0x521fe3[_0xca3d('0x28')];}_0x643e9c['status'](_0x429c73)['send'](_0x521fe3);};}exports[_0xca3d('0x29')]=function(_0x490dcc,_0x52fa6d){var _0x557825={},_0x1748cf={},_0x25645f={'count':0x0,'rows':[]};var _0x380acf=_[_0xca3d('0x2a')](db[_0xca3d('0x2b')]['rawAttributes'],function(_0x3b23d2){return{'name':_0x3b23d2[_0xca3d('0x2c')],'type':_0x3b23d2[_0xca3d('0x2d')][_0xca3d('0x2e')]};});_0x1748cf[_0xca3d('0x2f')]=_[_0xca3d('0x2a')](_0x380acf,_0xca3d('0x28'));_0x1748cf['query']=_[_0xca3d('0x30')](_0x490dcc[_0xca3d('0x31')]);_0x1748cf[_0xca3d('0x32')]=_[_0xca3d('0x33')](_0x1748cf[_0xca3d('0x2f')],_0x1748cf['query']);_0x557825[_0xca3d('0x34')]=_['intersection'](_0x1748cf['model'],qs[_0xca3d('0x35')](_0x490dcc[_0xca3d('0x31')]['fields']));_0x557825[_0xca3d('0x34')]=_0x557825[_0xca3d('0x34')][_0xca3d('0x36')]?_0x557825['attributes']:_0x1748cf['model'];if(!_0x490dcc[_0xca3d('0x31')][_0xca3d('0x37')](_0xca3d('0x38'))){_0x557825[_0xca3d('0x1e')]=qs['limit'](_0x490dcc['query'][_0xca3d('0x1e')]);_0x557825[_0xca3d('0x1c')]=qs[_0xca3d('0x1c')](_0x490dcc[_0xca3d('0x31')][_0xca3d('0x1c')]);}_0x557825[_0xca3d('0x39')]=qs[_0xca3d('0x3a')](_0x490dcc[_0xca3d('0x31')][_0xca3d('0x3a')]);_0x557825[_0xca3d('0x3b')]=qs[_0xca3d('0x32')](_['pick'](_0x490dcc[_0xca3d('0x31')],_0x1748cf[_0xca3d('0x32')]),_0x380acf);if(_0x490dcc[_0xca3d('0x31')][_0xca3d('0x3c')]){_0x557825['where']=_[_0xca3d('0x3d')](_0x557825['where'],{'$or':_[_0xca3d('0x2a')](_0x380acf,function(_0x230316){if(_0x230316[_0xca3d('0x2d')]!==_0xca3d('0x3e')){var _0x251cd2={};_0x251cd2[_0x230316[_0xca3d('0x28')]]={'$like':'%'+_0x490dcc[_0xca3d('0x31')][_0xca3d('0x3c')]+'%'};return _0x251cd2;}})});}_0x557825=_[_0xca3d('0x3d')]({},_0x557825,_0x490dcc[_0xca3d('0x3f')]);var _0x5cdfb5={'where':_0x557825['where']};return db['SalesforceAccount'][_0xca3d('0x1d')](_0x5cdfb5)['then'](function(_0x20f2d5){_0x25645f['count']=_0x20f2d5;if(_0x490dcc[_0xca3d('0x31')]['includeAll']){_0x557825[_0xca3d('0x40')]=[{'all':!![]}];}return db[_0xca3d('0x2b')][_0xca3d('0x41')](_0x557825);})[_0xca3d('0x24')](function(_0x54175b){_0x25645f['rows']=_0x54175b;return _0x25645f;})[_0xca3d('0x24')](respondWithFilteredResult(_0x52fa6d,_0x557825))[_0xca3d('0x42')](handleError(_0x52fa6d,null));};exports[_0xca3d('0x43')]=function(_0x316fa5,_0x166d8f){var _0x324d02={'raw':![],'where':{'id':_0x316fa5[_0xca3d('0x44')]['id']}},_0x986404={};_0x986404[_0xca3d('0x2f')]=_[_0xca3d('0x30')](db[_0xca3d('0x2b')]['rawAttributes']);_0x986404[_0xca3d('0x31')]=_[_0xca3d('0x30')](_0x316fa5[_0xca3d('0x31')]);_0x986404[_0xca3d('0x32')]=_['intersection'](_0x986404['model'],_0x986404['query']);_0x324d02['attributes']=_[_0xca3d('0x33')](_0x986404['model'],qs[_0xca3d('0x35')](_0x316fa5[_0xca3d('0x31')]['fields']));_0x324d02[_0xca3d('0x34')]=_0x324d02['attributes'][_0xca3d('0x36')]?_0x324d02[_0xca3d('0x34')]:_0x986404[_0xca3d('0x2f')];if(_0x316fa5[_0xca3d('0x31')][_0xca3d('0x45')]){_0x324d02[_0xca3d('0x40')]=[{'all':!![]}];}_0x324d02=_['merge']({},_0x324d02,_0x316fa5[_0xca3d('0x3f')]);return db[_0xca3d('0x2b')][_0xca3d('0x46')](_0x324d02)[_0xca3d('0x24')](handleEntityNotFound(_0x166d8f,null))[_0xca3d('0x24')](respondWithResult(_0x166d8f,null))[_0xca3d('0x42')](handleError(_0x166d8f,null));};exports[_0xca3d('0x47')]=function(_0x5ea1cb,_0x1c4e27){return db[_0xca3d('0x2b')][_0xca3d('0x47')](_0x5ea1cb[_0xca3d('0x48')],{})[_0xca3d('0x24')](respondWithResult(_0x1c4e27,0xc9))[_0xca3d('0x42')](handleError(_0x1c4e27,null));};exports['update']=function(_0x214071,_0x18aeff){if(_0x214071[_0xca3d('0x48')]['id']){delete _0x214071[_0xca3d('0x48')]['id'];}return db[_0xca3d('0x2b')][_0xca3d('0x46')]({'where':{'id':_0x214071[_0xca3d('0x44')]['id']}})[_0xca3d('0x24')](handleEntityNotFound(_0x18aeff,null))[_0xca3d('0x24')](saveUpdates(_0x214071[_0xca3d('0x48')],null))['then'](respondWithResult(_0x18aeff,null))['catch'](handleError(_0x18aeff,null));};exports[_0xca3d('0x25')]=function(_0x35f824,_0x435b5d){return db['SalesforceAccount'][_0xca3d('0x46')]({'where':{'id':_0x35f824['params']['id']}})[_0xca3d('0x24')](handleEntityNotFound(_0x435b5d,null))['then'](removeEntity(_0x435b5d,null))['catch'](handleError(_0x435b5d,null));};exports[_0xca3d('0x49')]=function(_0x58d371,_0x3e1f54,_0x1ae285){var _0x3d3b7b={};var _0xea4ae0={};var _0x33352a;var _0x59cf7f;return db[_0xca3d('0x2b')][_0xca3d('0x4a')]({'where':{'id':_0x58d371[_0xca3d('0x44')]['id']}})[_0xca3d('0x24')](handleEntityNotFound(_0x3e1f54,null))[_0xca3d('0x24')](function(_0x27b4c4){if(_0x27b4c4){_0x33352a=_0x27b4c4;_0xea4ae0[_0xca3d('0x2f')]=_[_0xca3d('0x30')](db[_0xca3d('0x4b')][_0xca3d('0x4c')]);_0xea4ae0[_0xca3d('0x31')]=_[_0xca3d('0x30')](_0x58d371[_0xca3d('0x31')]);_0xea4ae0[_0xca3d('0x32')]=_[_0xca3d('0x33')](_0xea4ae0[_0xca3d('0x2f')],_0xea4ae0[_0xca3d('0x31')]);_0x3d3b7b[_0xca3d('0x34')]=_[_0xca3d('0x33')](_0xea4ae0['model'],qs[_0xca3d('0x35')](_0x58d371[_0xca3d('0x31')][_0xca3d('0x35')]));_0x3d3b7b[_0xca3d('0x34')]=_0x3d3b7b[_0xca3d('0x34')][_0xca3d('0x36')]?_0x3d3b7b[_0xca3d('0x34')]:_0xea4ae0['model'];_0x3d3b7b[_0xca3d('0x39')]=qs['sort'](_0x58d371[_0xca3d('0x31')][_0xca3d('0x3a')]);_0x3d3b7b[_0xca3d('0x3b')]=qs['filters'](_[_0xca3d('0x4d')](_0x58d371['query'],_0xea4ae0[_0xca3d('0x32')]));if(_0x58d371[_0xca3d('0x31')][_0xca3d('0x3c')]){_0x3d3b7b[_0xca3d('0x3b')]=_['merge'](_0x3d3b7b[_0xca3d('0x3b')],{'$or':_[_0xca3d('0x2a')](_0x3d3b7b[_0xca3d('0x34')],function(_0x5da206){var _0x457e70={};_0x457e70[_0x5da206]={'$like':'%'+_0x58d371['query'][_0xca3d('0x3c')]+'%'};return _0x457e70;})});}_0x3d3b7b=_[_0xca3d('0x3d')]({},_0x3d3b7b,_0x58d371[_0xca3d('0x3f')]);return _0x33352a[_0xca3d('0x49')](_0x3d3b7b);}})['then'](function(_0x47d3ec){if(_0x47d3ec){_0x59cf7f=_0x47d3ec[_0xca3d('0x36')];if(!_0x58d371[_0xca3d('0x31')][_0xca3d('0x37')](_0xca3d('0x38'))){_0x3d3b7b[_0xca3d('0x1e')]=qs[_0xca3d('0x1e')](_0x58d371[_0xca3d('0x31')][_0xca3d('0x1e')]);_0x3d3b7b[_0xca3d('0x1c')]=qs[_0xca3d('0x1c')](_0x58d371[_0xca3d('0x31')][_0xca3d('0x1c')]);}return _0x33352a[_0xca3d('0x49')](_0x3d3b7b);}})['then'](function(_0x398d09){if(_0x398d09){return _0x398d09?{'count':_0x59cf7f,'rows':_0x398d09}:null;}})[_0xca3d('0x24')](respondWithResult(_0x3e1f54,null))[_0xca3d('0x42')](handleError(_0x3e1f54,null));};exports[_0xca3d('0x4e')]=function(_0x24712a,_0x395096,_0x4d453b){if(_0x24712a[_0xca3d('0x48')]['id']){delete _0x24712a[_0xca3d('0x48')]['id'];}return db[_0xca3d('0x2b')]['findOne']({'where':{'id':_0x24712a[_0xca3d('0x44')]['id']}})[_0xca3d('0x24')](handleEntityNotFound(_0x395096,null))['then'](function(_0x2b83f1){if(_0x2b83f1){_0x24712a['body'][_0xca3d('0x4f')]=_0x2b83f1['id'];_0x24712a[_0xca3d('0x48')][_0xca3d('0x50')]=integrations['getSubjects'](_0x24712a[_0xca3d('0x48')][_0xca3d('0x51')],_0x24712a[_0xca3d('0x48')][_0xca3d('0x2d')]);_0x24712a[_0xca3d('0x48')][_0xca3d('0x52')]=integrations[_0xca3d('0x53')](_0x24712a['body'][_0xca3d('0x51')],_0x24712a[_0xca3d('0x48')]['type']);return db[_0xca3d('0x4b')][_0xca3d('0x47')](_0x24712a[_0xca3d('0x48')],{'include':[{'model':db[_0xca3d('0x54')],'as':_0xca3d('0x50')},{'model':db[_0xca3d('0x54')],'as':'Descriptions'}]});}return null;})[_0xca3d('0x24')](respondWithResult(_0x395096,null))[_0xca3d('0x42')](handleError(_0x395096,null));};exports[_0xca3d('0x55')]=function(_0x1a6e2e,_0x3036cc,_0x44fc62){var _0x43eb29;var _0x3f4d3b='';var _0x43b4b0=_0xca3d('0x56');return db['SalesforceAccount'][_0xca3d('0x4a')]({'where':{'id':_0x1a6e2e[_0xca3d('0x44')]['id']},'attributes':['id',_0xca3d('0x57'),_0xca3d('0x58'),'clientSecret',_0xca3d('0x59'),_0xca3d('0x5a'),_0xca3d('0x5b')]})[_0xca3d('0x24')](handleEntityNotFound(_0x3036cc,null))[_0xca3d('0x24')](function(_0x19253b){if(_0x19253b){_0x3f4d3b=_0x19253b[_0xca3d('0x57')];var _0x528303=_0x3f4d3b['slice'](-0x1);if(_0x528303==='/'){_0x3f4d3b=_0x3f4d3b['substring'](0x0,_0x3f4d3b['lastIndexOf'](_0x528303));}_0x43eb29=new jsforce[(_0xca3d('0x5c'))]({'oauth2':{'loginUrl':_0x3f4d3b,'clientId':_0x19253b[_0xca3d('0x58')],'clientSecret':_0x19253b[_0xca3d('0x5d')]}});return _0x43eb29[_0xca3d('0x5e')](_0x19253b[_0xca3d('0x59')],_0x19253b[_0xca3d('0x5a')]['concat'](_0x19253b[_0xca3d('0x5b')]));}})[_0xca3d('0x24')](function(_0x5819ce){if(_0x5819ce){if(!_[_0xca3d('0x5f')](_0x1a6e2e[_0xca3d('0x31')]['ticketType'])){_0x43b4b0=_0x1a6e2e[_0xca3d('0x31')]['ticketType'];}return _0x43eb29[_0xca3d('0x60')](_0x43b4b0)['describe']();}})['then'](function(_0x2a304e){var _0x1fbc9b=[_0xca3d('0x61'),_0xca3d('0x62'),_0xca3d('0x63'),'IsRecurrence',_0xca3d('0x64'),_0xca3d('0x65')];var _0x572159=[_0xca3d('0x66'),_0xca3d('0x67'),'picklist',_0xca3d('0x68'),'email','textarea',_0xca3d('0x69')];if(_0x2a304e){_[_0xca3d('0x6a')](_0x2a304e[_0xca3d('0x35')],function(_0x41f567){return _0x1fbc9b[_0xca3d('0x6b')](_0x41f567[_0xca3d('0x28')])||!_0x572159[_0xca3d('0x6b')](_0x41f567['type']);});return{'count':_0x2a304e[_0xca3d('0x35')][_0xca3d('0x36')],'rows':_[_0xca3d('0x2a')](_0x2a304e[_0xca3d('0x35')],function(_0x316824){return{'id':_0x316824[_0xca3d('0x28')],'name':_0x316824[_0xca3d('0x6c')],'custom':_0x316824[_0xca3d('0x6d')],'options':_0x316824[_0xca3d('0x6e')][_0xca3d('0x36')]>0x0?_['map'](_0x316824[_0xca3d('0x6e')],function(_0x21f77b){return{'name':_0x21f77b[_0xca3d('0x6c')],'value':_0x21f77b[_0xca3d('0x6f')]};}):_0x316824[_0xca3d('0x2d')]=='boolean'?[{'name':_0xca3d('0x70'),'value':'true'},{'name':_0xca3d('0x71'),'value':_0xca3d('0x72')}]:[]};})};}})[_0xca3d('0x24')](respondWithResult(_0x3036cc,null))[_0xca3d('0x42')](function(_0x25bf2f){var _0x572e9c=_0x1a6e2e[_0xca3d('0x31')]['test']?0x1f4:_0x25bf2f[_0xca3d('0x73')]||0x1f4;logger[_0xca3d('0x26')](_0xca3d('0x74'),_0xca3d('0x55'),_0x572e9c,JSON[_0xca3d('0x75')](_0x25bf2f));delete _0x25bf2f[_0xca3d('0x28')];if(_0x572e9c===0x191){_0x572e9c=0x190;}_0x3036cc['status'](_0x572e9c)['send'](_0x1a6e2e[_0xca3d('0x31')][_0xca3d('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x25bf2f[_0xca3d('0x73')]}:_0x25bf2f);});};
\ No newline at end of file
index 559292f..732a81f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x377e=['api','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','define','int_salesforce_accounts','lodash','util'];(function(_0x3d1d8e,_0x533b1c){var _0x175671=function(_0x4a9333){while(--_0x4a9333){_0x3d1d8e['push'](_0x3d1d8e['shift']());}};_0x175671(++_0x533b1c);}(_0x377e,0x1e2));var _0xe377=function(_0x2d566b,_0x47c52d){_0x2d566b=_0x2d566b-0x0;var _0xd90686=_0x377e[_0x2d566b];return _0xd90686;};'use strict';var _=require(_0xe377('0x0'));var util=require(_0xe377('0x1'));var logger=require('../../config/logger')(_0xe377('0x2'));var moment=require('moment');var BPromise=require(_0xe377('0x3'));var rp=require(_0xe377('0x4'));var fs=require('fs');var path=require(_0xe377('0x5'));var rimraf=require(_0xe377('0x6'));var config=require(_0xe377('0x7'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0xe377('0x8'));module['exports']=function(_0x33ae8e,_0x3fac41){return _0x33ae8e[_0xe377('0x9')]('SalesforceAccount',attributes,{'tableName':_0xe377('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4f3=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../components/integrations/configuration','exports','define','SalesforceAccount','lodash'];(function(_0x53a8d5,_0x207317){var _0x560194=function(_0x1a24ba){while(--_0x1a24ba){_0x53a8d5['push'](_0x53a8d5['shift']());}};_0x560194(++_0x207317);}(_0xf4f3,0x9b));var _0x3f4f=function(_0x42de57,_0x54ab83){_0x42de57=_0x42de57-0x0;var _0x54fc28=_0xf4f3[_0x42de57];return _0x54fc28;};'use strict';var _=require(_0x3f4f('0x0'));var util=require(_0x3f4f('0x1'));var logger=require(_0x3f4f('0x2'))(_0x3f4f('0x3'));var moment=require(_0x3f4f('0x4'));var BPromise=require('bluebird');var rp=require(_0x3f4f('0x5'));var fs=require('fs');var path=require(_0x3f4f('0x6'));var rimraf=require(_0x3f4f('0x7'));var config=require('../../config/environment');var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0x3f4f('0x8'));module[_0x3f4f('0x9')]=function(_0x1c7569,_0x565ea8){return _0x1c7569[_0x3f4f('0xa')](_0x3f4f('0xb'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9da4e73..c9dedc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2db5=['catch','SalesforceAccount','options','raw','where','attributes','include','map','model','GetSalesforceAccount','ShowSalesforceAccount','debug','util','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','SalesforceAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x2db5,0x168));var _0x52db=function(_0x31e94f,_0x42ecd6){_0x31e94f=_0x31e94f-0x0;var _0x1b8494=_0x2db5[_0x31e94f];return _0x1b8494;};'use strict';var _=require('lodash');var util=require(_0x52db('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x52db('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x52db('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x52db('0x3'))('rpc');var config=require(_0x52db('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x52db('0x5')][_0x52db('0x6')]({'port':0x232a});function respondWithRpcPromise(_0xf7506,_0x3253d5,_0x41caeb){return new BPromise(function(_0x2a7f2c,_0x3ccd8f){return client[_0x52db('0x7')](_0xf7506,_0x41caeb)[_0x52db('0x8')](function(_0x5e5a13){logger[_0x52db('0x9')](_0x52db('0xa'),_0x3253d5,'request\x20sent');logger['debug'](_0x52db('0xb'),_0x3253d5,_0x52db('0xc'),JSON[_0x52db('0xd')](_0x5e5a13));if(_0x5e5a13[_0x52db('0xe')]){if(_0x5e5a13[_0x52db('0xe')][_0x52db('0xf')]===0x1f4){logger['error'](_0x52db('0xa'),_0x3253d5,_0x5e5a13[_0x52db('0xe')][_0x52db('0x10')]);return _0x3ccd8f(_0x5e5a13[_0x52db('0xe')]['message']);}logger[_0x52db('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0x3253d5,_0x5e5a13['error']['message']);return _0x2a7f2c(_0x5e5a13[_0x52db('0xe')][_0x52db('0x10')]);}else{logger['info'](_0x52db('0xa'),_0x3253d5,_0x52db('0xc'));_0x2a7f2c(_0x5e5a13['result'][_0x52db('0x10')]);}})[_0x52db('0x11')](function(_0x494930){logger['error']('SalesforceAccount,\x20%s,\x20%s',_0x3253d5,_0x494930);_0x3ccd8f(_0x494930);});});}exports['GetSalesforceAccount']=function(_0x4efee7){var _0x2b937e=this;return new Promise(function(_0x49c6d8,_0x405706){return db[_0x52db('0x12')]['findAll']({'raw':_0x4efee7[_0x52db('0x13')]?_0x4efee7['options'][_0x52db('0x14')]===undefined?!![]:![]:!![],'where':_0x4efee7[_0x52db('0x13')]?_0x4efee7[_0x52db('0x13')][_0x52db('0x15')]||null:null,'attributes':_0x4efee7['options']?_0x4efee7[_0x52db('0x13')][_0x52db('0x16')]||null:null,'limit':_0x4efee7[_0x52db('0x13')]?_0x4efee7[_0x52db('0x13')]['limit']||null:null,'include':_0x4efee7[_0x52db('0x13')]?_0x4efee7[_0x52db('0x13')][_0x52db('0x17')]?_[_0x52db('0x18')](_0x4efee7[_0x52db('0x13')][_0x52db('0x17')],function(_0x2e967a){return{'model':db[_0x2e967a[_0x52db('0x19')]],'as':_0x2e967a['as'],'attributes':_0x2e967a[_0x52db('0x16')],'include':_0x2e967a[_0x52db('0x17')]?_[_0x52db('0x18')](_0x2e967a[_0x52db('0x17')],function(_0x57d8c6){return{'model':db[_0x57d8c6[_0x52db('0x19')]],'as':_0x57d8c6['as'],'attributes':_0x57d8c6[_0x52db('0x16')],'include':_0x57d8c6[_0x52db('0x17')]?_[_0x52db('0x18')](_0x57d8c6[_0x52db('0x17')],function(_0x4bb556){return{'model':db[_0x4bb556[_0x52db('0x19')]],'as':_0x4bb556['as'],'attributes':_0x4bb556[_0x52db('0x16')]};}):[]};}):[]};}):[]:[]})[_0x52db('0x8')](function(_0x574d27){logger['info'](_0x52db('0x1a'),_0x4efee7);logger['debug'](_0x52db('0x1a'),_0x4efee7,JSON[_0x52db('0xd')](_0x574d27));_0x49c6d8(_0x574d27);})['catch'](function(_0x332132){logger[_0x52db('0xe')](_0x52db('0x1a'),_0x332132['message'],_0x4efee7);_0x405706(_0x2b937e[_0x52db('0xe')](0x1f4,_0x332132[_0x52db('0x10')]));});});};exports['ShowSalesforceAccount']=function(_0x347264){var _0x41a006=this;return new Promise(function(_0x33cd9d,_0x3442fe){return db[_0x52db('0x12')]['find']({'raw':_0x347264[_0x52db('0x13')]?_0x347264['options']['raw']===undefined?!![]:![]:!![],'where':_0x347264[_0x52db('0x13')]?_0x347264['options']['where']||null:null,'attributes':_0x347264[_0x52db('0x13')]?_0x347264[_0x52db('0x13')][_0x52db('0x16')]||null:null,'include':_0x347264[_0x52db('0x13')]?_0x347264[_0x52db('0x13')][_0x52db('0x17')]?_[_0x52db('0x18')](_0x347264[_0x52db('0x13')][_0x52db('0x17')],function(_0x4089e2){return{'model':db[_0x4089e2['model']],'as':_0x4089e2['as'],'attributes':_0x4089e2[_0x52db('0x16')],'include':_0x4089e2[_0x52db('0x17')]?_[_0x52db('0x18')](_0x4089e2['include'],function(_0x197f5b){return{'model':db[_0x197f5b[_0x52db('0x19')]],'as':_0x197f5b['as'],'attributes':_0x197f5b[_0x52db('0x16')],'include':_0x197f5b['include']?_[_0x52db('0x18')](_0x197f5b['include'],function(_0x255cd5){return{'model':db[_0x255cd5[_0x52db('0x19')]],'as':_0x255cd5['as'],'attributes':_0x255cd5[_0x52db('0x16')]};}):[]};}):[]};}):[]:[]})[_0x52db('0x8')](function(_0x37c6db){logger['info'](_0x52db('0x1b'),_0x347264);logger[_0x52db('0x1c')]('ShowSalesforceAccount',_0x347264,JSON[_0x52db('0xd')](_0x37c6db));_0x33cd9d(_0x37c6db);})[_0x52db('0x11')](function(_0xc83f2e){logger[_0x52db('0xe')]('ShowSalesforceAccount',_0xc83f2e[_0x52db('0x10')],_0x347264);_0x3442fe(_0x41a006['error'](0x1f4,_0xc83f2e[_0x52db('0x10')]));});});};
\ No newline at end of file
+var _0xb37e=['raw','where','attributes','limit','include','map','model','ShowSalesforceAccount','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','SalesforceAccount,\x20%s,\x20%s','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetSalesforceAccount','SalesforceAccount','options'];(function(_0x54a284,_0x2c0d40){var _0x371aa5=function(_0x2a9e93){while(--_0x2a9e93){_0x54a284['push'](_0x54a284['shift']());}};_0x371aa5(++_0x2c0d40);}(_0xb37e,0x6f));var _0xeb37=function(_0x3b4596,_0x5ab4bb){_0x3b4596=_0x3b4596-0x0;var _0x314dec=_0xb37e[_0x3b4596];return _0x314dec;};'use strict';var _=require(_0xeb37('0x0'));var util=require(_0xeb37('0x1'));var moment=require('moment');var BPromise=require(_0xeb37('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb37('0x3'));var db=require(_0xeb37('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb37('0x5'))(_0xeb37('0x6'));var config=require(_0xeb37('0x7'));var jayson=require(_0xeb37('0x8'));var client=jayson['client'][_0xeb37('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2145d5,_0x30eede,_0x5047dc){return new BPromise(function(_0x165a4e,_0x89371a){return client['request'](_0x2145d5,_0x5047dc)[_0xeb37('0xa')](function(_0x424be6){logger[_0xeb37('0xb')](_0xeb37('0xc'),_0x30eede,'request\x20sent');logger[_0xeb37('0xd')](_0xeb37('0xe'),_0x30eede,_0xeb37('0xf'),JSON[_0xeb37('0x10')](_0x424be6));if(_0x424be6[_0xeb37('0x11')]){if(_0x424be6[_0xeb37('0x11')][_0xeb37('0x12')]===0x1f4){logger[_0xeb37('0x11')]('SalesforceAccount,\x20%s,\x20%s',_0x30eede,_0x424be6[_0xeb37('0x11')][_0xeb37('0x13')]);return _0x89371a(_0x424be6[_0xeb37('0x11')][_0xeb37('0x13')]);}logger[_0xeb37('0x11')]('SalesforceAccount,\x20%s,\x20%s',_0x30eede,_0x424be6['error'][_0xeb37('0x13')]);return _0x165a4e(_0x424be6[_0xeb37('0x11')][_0xeb37('0x13')]);}else{logger[_0xeb37('0xb')](_0xeb37('0xc'),_0x30eede,_0xeb37('0xf'));_0x165a4e(_0x424be6[_0xeb37('0x14')][_0xeb37('0x13')]);}})[_0xeb37('0x15')](function(_0x28a209){logger[_0xeb37('0x11')](_0xeb37('0xc'),_0x30eede,_0x28a209);_0x89371a(_0x28a209);});});}exports[_0xeb37('0x16')]=function(_0x4efa54){var _0x1232c8=this;return new Promise(function(_0x739f0,_0x23dbb7){return db[_0xeb37('0x17')]['findAll']({'raw':_0x4efa54[_0xeb37('0x18')]?_0x4efa54[_0xeb37('0x18')][_0xeb37('0x19')]===undefined?!![]:![]:!![],'where':_0x4efa54[_0xeb37('0x18')]?_0x4efa54[_0xeb37('0x18')][_0xeb37('0x1a')]||null:null,'attributes':_0x4efa54[_0xeb37('0x18')]?_0x4efa54[_0xeb37('0x18')][_0xeb37('0x1b')]||null:null,'limit':_0x4efa54[_0xeb37('0x18')]?_0x4efa54[_0xeb37('0x18')][_0xeb37('0x1c')]||null:null,'include':_0x4efa54[_0xeb37('0x18')]?_0x4efa54[_0xeb37('0x18')][_0xeb37('0x1d')]?_[_0xeb37('0x1e')](_0x4efa54[_0xeb37('0x18')][_0xeb37('0x1d')],function(_0x5d2dca){return{'model':db[_0x5d2dca[_0xeb37('0x1f')]],'as':_0x5d2dca['as'],'attributes':_0x5d2dca[_0xeb37('0x1b')],'include':_0x5d2dca[_0xeb37('0x1d')]?_['map'](_0x5d2dca[_0xeb37('0x1d')],function(_0x4ff01f){return{'model':db[_0x4ff01f[_0xeb37('0x1f')]],'as':_0x4ff01f['as'],'attributes':_0x4ff01f[_0xeb37('0x1b')],'include':_0x4ff01f['include']?_[_0xeb37('0x1e')](_0x4ff01f[_0xeb37('0x1d')],function(_0x5a207e){return{'model':db[_0x5a207e['model']],'as':_0x5a207e['as'],'attributes':_0x5a207e[_0xeb37('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2700b8){logger[_0xeb37('0xb')](_0xeb37('0x16'),_0x4efa54);logger['debug'](_0xeb37('0x16'),_0x4efa54,JSON[_0xeb37('0x10')](_0x2700b8));_0x739f0(_0x2700b8);})[_0xeb37('0x15')](function(_0x2f51ea){logger[_0xeb37('0x11')](_0xeb37('0x16'),_0x2f51ea[_0xeb37('0x13')],_0x4efa54);_0x23dbb7(_0x1232c8[_0xeb37('0x11')](0x1f4,_0x2f51ea[_0xeb37('0x13')]));});});};exports[_0xeb37('0x20')]=function(_0x3ca5b3){var _0x1d76e7=this;return new Promise(function(_0x192bb3,_0x218c32){return db[_0xeb37('0x17')][_0xeb37('0x21')]({'raw':_0x3ca5b3[_0xeb37('0x18')]?_0x3ca5b3['options'][_0xeb37('0x19')]===undefined?!![]:![]:!![],'where':_0x3ca5b3['options']?_0x3ca5b3['options'][_0xeb37('0x1a')]||null:null,'attributes':_0x3ca5b3[_0xeb37('0x18')]?_0x3ca5b3['options'][_0xeb37('0x1b')]||null:null,'include':_0x3ca5b3[_0xeb37('0x18')]?_0x3ca5b3['options']['include']?_[_0xeb37('0x1e')](_0x3ca5b3[_0xeb37('0x18')][_0xeb37('0x1d')],function(_0x5757d3){return{'model':db[_0x5757d3[_0xeb37('0x1f')]],'as':_0x5757d3['as'],'attributes':_0x5757d3[_0xeb37('0x1b')],'include':_0x5757d3[_0xeb37('0x1d')]?_[_0xeb37('0x1e')](_0x5757d3[_0xeb37('0x1d')],function(_0x178d9b){return{'model':db[_0x178d9b[_0xeb37('0x1f')]],'as':_0x178d9b['as'],'attributes':_0x178d9b['attributes'],'include':_0x178d9b[_0xeb37('0x1d')]?_['map'](_0x178d9b[_0xeb37('0x1d')],function(_0x11dfb9){return{'model':db[_0x11dfb9[_0xeb37('0x1f')]],'as':_0x11dfb9['as'],'attributes':_0x11dfb9[_0xeb37('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x189ad0){logger['info'](_0xeb37('0x20'),_0x3ca5b3);logger[_0xeb37('0xd')](_0xeb37('0x20'),_0x3ca5b3,JSON[_0xeb37('0x10')](_0x189ad0));_0x192bb3(_0x189ad0);})[_0xeb37('0x15')](function(_0x1f1be0){logger[_0xeb37('0x11')]('ShowSalesforceAccount',_0x1f1be0[_0xeb37('0x13')],_0x3ca5b3);_0x218c32(_0x1d76e7[_0xeb37('0x11')](0x1f4,_0x1f1be0[_0xeb37('0x13')]));});});};
\ No newline at end of file
index caf6b88..3ea23bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','exports','util','path','connect-timeout'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2032,0xd9));var _0x2203=function(_0x5d3547,_0x40bb2a){_0x5d3547=_0x5d3547-0x0;var _0x209d4c=_0x2032[_0x5d3547];return _0x209d4c;};'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/fields',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['get'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router['get'](_0x2203('0x10'),auth['isAuthenticated'](),controller[_0x2203('0x11')]);router['post']('/',auth[_0x2203('0x9')](),controller[_0x2203('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x2203('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x2203('0x13')]=router;
\ No newline at end of file
+var _0x0b0e=['post','create','put','/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0x2ef44b,_0x553359){var _0x2405b9=function(_0x278290){while(--_0x278290){_0x2ef44b['push'](_0x2ef44b['shift']());}};_0x2405b9(++_0x553359);}(_0x0b0e,0x187));var _0xe0b0=function(_0xf79bae,_0x263b2a){_0xf79bae=_0xf79bae-0x0;var _0x5d2cb7=_0x0b0e[_0xf79bae];return _0x5d2cb7;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['getFields']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/descriptions',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x13')](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x15')]);router['delete'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x16')]);module[_0xe0b0('0x17')]=router;
\ No newline at end of file
index 39d0f30..58a8a39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe469=['sequelize','exports','STRING','ENUM','Task','contact_lead','contact','lead','account','nothing'];(function(_0x58327a,_0x154b8f){var _0x164a8a=function(_0x532d98){while(--_0x532d98){_0x58327a['push'](_0x58327a['shift']());}};_0x164a8a(++_0x154b8f);}(_0xe469,0x1d6));var _0x9e46=function(_0xd2d138,_0x55d264){_0xd2d138=_0xd2d138-0x0;var _0x371ae0=_0xe469[_0xd2d138];return _0x371ae0;};'use strict';var Sequelize=require(_0x9e46('0x0'));module[_0x9e46('0x1')]={'name':{'type':Sequelize[_0x9e46('0x2')]},'description':{'type':Sequelize[_0x9e46('0x2')]},'ticketType':{'type':Sequelize[_0x9e46('0x3')]('Task','Case'),'defaultValue':_0x9e46('0x4')},'moduleSearch':{'type':Sequelize[_0x9e46('0x3')](_0x9e46('0x5'),_0x9e46('0x6'),_0x9e46('0x7'),'account_contact_lead',_0x9e46('0x8')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0x9e46('0x3')](_0x9e46('0x9'),_0x9e46('0x6'),_0x9e46('0x7'),_0x9e46('0x8')),'defaultValue':_0x9e46('0x7')},'leadId':{'type':Sequelize[_0x9e46('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x9e46('0x2')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0x9e46('0x2')]}};
\ No newline at end of file
+var _0xc336=['account','STRING','sequelize','exports','ENUM','Task','contact_lead','contact','lead'];(function(_0x20a5ac,_0x42c101){var _0x3dc266=function(_0x55b1c4){while(--_0x55b1c4){_0x20a5ac['push'](_0x20a5ac['shift']());}};_0x3dc266(++_0x42c101);}(_0xc336,0x1d6));var _0x6c33=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xc336[_0x18a79d];return _0x4f8848;};'use strict';var Sequelize=require(_0x6c33('0x0'));module[_0x6c33('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x6c33('0x2')]('Task','Case'),'defaultValue':_0x6c33('0x3')},'moduleSearch':{'type':Sequelize[_0x6c33('0x2')](_0x6c33('0x4'),_0x6c33('0x5'),_0x6c33('0x6'),'account_contact_lead','account'),'defaultValue':_0x6c33('0x4')},'moduleCreate':{'type':Sequelize[_0x6c33('0x2')]('nothing',_0x6c33('0x5'),_0x6c33('0x6'),_0x6c33('0x7')),'defaultValue':_0x6c33('0x6')},'leadId':{'type':Sequelize[_0x6c33('0x8')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x6c33('0x8')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d4b556b..e8918e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fed=['then','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','create','body','update','SalesforceField','pick','getFields','findOne','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','save'];(function(_0x40b051,_0x16035c){var _0x5b3752=function(_0x534e96){while(--_0x534e96){_0x40b051['push'](_0x40b051['shift']());}};_0x5b3752(++_0x16035c);}(_0x2fed,0x7c));var _0xd2fe=function(_0x532375,_0x50f57c){_0x532375=_0x532375-0x0;var _0x26a4ae=_0x2fed[_0x532375];return _0x26a4ae;};'use strict';var emlformat=require(_0xd2fe('0x0'));var rimraf=require(_0xd2fe('0x1'));var zipdir=require(_0xd2fe('0x2'));var jsonpatch=require(_0xd2fe('0x3'));var rp=require(_0xd2fe('0x4'));var moment=require('moment');var BPromise=require(_0xd2fe('0x5'));var Mustache=require(_0xd2fe('0x6'));var util=require('util');var path=require('path');var sox=require(_0xd2fe('0x7'));var csv=require(_0xd2fe('0x8'));var ejs=require(_0xd2fe('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd2fe('0xa'));var squel=require(_0xd2fe('0xb'));var crypto=require(_0xd2fe('0xc'));var jsforce=require(_0xd2fe('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd2fe('0x8'));var querystring=require(_0xd2fe('0xe'));var Papa=require(_0xd2fe('0xf'));var Redis=require(_0xd2fe('0x10'));var authService=require(_0xd2fe('0x11'));var qs=require(_0xd2fe('0x12'));var as=require(_0xd2fe('0x13'));var hardwareService=require(_0xd2fe('0x14'));var logger=require(_0xd2fe('0x15'))(_0xd2fe('0x16'));var utils=require(_0xd2fe('0x17'));var config=require(_0xd2fe('0x18'));var licenseUtil=require(_0xd2fe('0x19'));var db=require(_0xd2fe('0x1a'))['db'];function respondWithStatusCode(_0x72f7e0,_0x2431da){_0x2431da=_0x2431da||0xcc;return function(_0x22e414){if(_0x22e414){return _0x72f7e0[_0xd2fe('0x1b')](_0x2431da);}return _0x72f7e0['status'](_0x2431da)[_0xd2fe('0x1c')]();};}function respondWithResult(_0x30fad9,_0x2a9355){_0x2a9355=_0x2a9355||0xc8;return function(_0x5607a3){if(_0x5607a3){return _0x30fad9['status'](_0x2a9355)['json'](_0x5607a3);}};}function respondWithFilteredResult(_0x203bea,_0x54f4cc){return function(_0x458f87){if(_0x458f87){var _0x3085b4=typeof _0x54f4cc[_0xd2fe('0x1d')]===_0xd2fe('0x1e')&&typeof _0x54f4cc[_0xd2fe('0x1f')]===_0xd2fe('0x1e');var _0x588d03=_0x458f87['count'];var _0xe958a0=_0x3085b4?0x0:_0x54f4cc[_0xd2fe('0x1d')];var _0x57f517=_0x3085b4?_0x458f87[_0xd2fe('0x20')]:_0x54f4cc[_0xd2fe('0x1d')]+_0x54f4cc[_0xd2fe('0x1f')];var _0x29f69f;if(_0x57f517>=_0x588d03){_0x57f517=_0x588d03;_0x29f69f=0xc8;}else{_0x29f69f=0xce;}_0x203bea[_0xd2fe('0x21')](_0x29f69f);return _0x203bea[_0xd2fe('0x22')](_0xd2fe('0x23'),_0xe958a0+'-'+_0x57f517+'/'+_0x588d03)[_0xd2fe('0x24')](_0x458f87);}return null;};}function patchUpdates(_0x194749){return function(_0x235b01){try{jsonpatch['apply'](_0x235b01,_0x194749,!![]);}catch(_0x116823){return BPromise['reject'](_0x116823);}return _0x235b01[_0xd2fe('0x25')]();};}function saveUpdates(_0x118d45,_0x123187){return function(_0x285fe5){if(_0x285fe5){return _0x285fe5['update'](_0x118d45)[_0xd2fe('0x26')](function(_0x574e6d){return _0x574e6d;});}return null;};}function removeEntity(_0x39e7c,_0x39948a){return function(_0x251385){if(_0x251385){return _0x251385['destroy']()['then'](function(){_0x39e7c[_0xd2fe('0x21')](0xcc)[_0xd2fe('0x1c')]();});}};}function handleEntityNotFound(_0x236294,_0x28bef3){return function(_0x202531){if(!_0x202531){_0x236294['sendStatus'](0x194);}return _0x202531;};}function handleError(_0x487f8a,_0x516340){_0x516340=_0x516340||0x1f4;return function(_0x39e20a){logger[_0xd2fe('0x27')](_0x39e20a[_0xd2fe('0x28')]);if(_0x39e20a[_0xd2fe('0x29')]){delete _0x39e20a['name'];}_0x487f8a[_0xd2fe('0x21')](_0x516340)[_0xd2fe('0x2a')](_0x39e20a);};}exports[_0xd2fe('0x2b')]=function(_0x6bba0d,_0x49ab21){var _0x391e93={},_0x327730={},_0x3250c6={'count':0x0,'rows':[]};var _0x5a0ba4=_[_0xd2fe('0x2c')](db[_0xd2fe('0x2d')][_0xd2fe('0x2e')],function(_0x21f2ac){return{'name':_0x21f2ac['fieldName'],'type':_0x21f2ac[_0xd2fe('0x2f')][_0xd2fe('0x30')]};});_0x327730[_0xd2fe('0x31')]=_[_0xd2fe('0x2c')](_0x5a0ba4,'name');_0x327730[_0xd2fe('0x32')]=_[_0xd2fe('0x33')](_0x6bba0d[_0xd2fe('0x32')]);_0x327730[_0xd2fe('0x34')]=_[_0xd2fe('0x35')](_0x327730[_0xd2fe('0x31')],_0x327730['query']);_0x391e93[_0xd2fe('0x36')]=_[_0xd2fe('0x35')](_0x327730['model'],qs[_0xd2fe('0x37')](_0x6bba0d[_0xd2fe('0x32')][_0xd2fe('0x37')]));_0x391e93['attributes']=_0x391e93[_0xd2fe('0x36')][_0xd2fe('0x38')]?_0x391e93['attributes']:_0x327730[_0xd2fe('0x31')];if(!_0x6bba0d[_0xd2fe('0x32')][_0xd2fe('0x39')](_0xd2fe('0x3a'))){_0x391e93[_0xd2fe('0x1f')]=qs[_0xd2fe('0x1f')](_0x6bba0d['query']['limit']);_0x391e93[_0xd2fe('0x1d')]=qs['offset'](_0x6bba0d['query'][_0xd2fe('0x1d')]);}_0x391e93[_0xd2fe('0x3b')]=qs[_0xd2fe('0x3c')](_0x6bba0d[_0xd2fe('0x32')][_0xd2fe('0x3c')]);_0x391e93['where']=qs[_0xd2fe('0x34')](_['pick'](_0x6bba0d['query'],_0x327730[_0xd2fe('0x34')]),_0x5a0ba4);if(_0x6bba0d[_0xd2fe('0x32')][_0xd2fe('0x3d')]){_0x391e93[_0xd2fe('0x3e')]=_[_0xd2fe('0x3f')](_0x391e93[_0xd2fe('0x3e')],{'$or':_[_0xd2fe('0x2c')](_0x5a0ba4,function(_0x5ba9a6){if(_0x5ba9a6[_0xd2fe('0x2f')]!==_0xd2fe('0x40')){var _0x2346c6={};_0x2346c6[_0x5ba9a6['name']]={'$like':'%'+_0x6bba0d['query'][_0xd2fe('0x3d')]+'%'};return _0x2346c6;}})});}_0x391e93=_[_0xd2fe('0x3f')]({},_0x391e93,_0x6bba0d[_0xd2fe('0x41')]);var _0x1151e7={'where':_0x391e93[_0xd2fe('0x3e')]};return db[_0xd2fe('0x2d')][_0xd2fe('0x20')](_0x1151e7)['then'](function(_0x2eb74f){_0x3250c6[_0xd2fe('0x20')]=_0x2eb74f;if(_0x6bba0d['query'][_0xd2fe('0x42')]){_0x391e93[_0xd2fe('0x43')]=[{'all':!![]}];}return db[_0xd2fe('0x2d')][_0xd2fe('0x44')](_0x391e93);})['then'](function(_0x2a9b7f){_0x3250c6[_0xd2fe('0x45')]=_0x2a9b7f;return _0x3250c6;})[_0xd2fe('0x26')](respondWithFilteredResult(_0x49ab21,_0x391e93))[_0xd2fe('0x46')](handleError(_0x49ab21,null));};exports['show']=function(_0xe06ee2,_0x12a60c){var _0x475de3={'raw':![],'where':{'id':_0xe06ee2[_0xd2fe('0x47')]['id']}},_0x48d9c2={};_0x48d9c2[_0xd2fe('0x31')]=_[_0xd2fe('0x33')](db['SalesforceConfiguration'][_0xd2fe('0x2e')]);_0x48d9c2[_0xd2fe('0x32')]=_['keys'](_0xe06ee2['query']);_0x48d9c2['filters']=_[_0xd2fe('0x35')](_0x48d9c2[_0xd2fe('0x31')],_0x48d9c2['query']);_0x475de3[_0xd2fe('0x36')]=_[_0xd2fe('0x35')](_0x48d9c2[_0xd2fe('0x31')],qs['fields'](_0xe06ee2[_0xd2fe('0x32')][_0xd2fe('0x37')]));_0x475de3[_0xd2fe('0x36')]=_0x475de3[_0xd2fe('0x36')][_0xd2fe('0x38')]?_0x475de3[_0xd2fe('0x36')]:_0x48d9c2[_0xd2fe('0x31')];if(_0xe06ee2['query'][_0xd2fe('0x42')]){_0x475de3[_0xd2fe('0x43')]=[{'all':!![]}];}_0x475de3=_[_0xd2fe('0x3f')]({},_0x475de3,_0xe06ee2[_0xd2fe('0x41')]);return db[_0xd2fe('0x2d')]['find'](_0x475de3)['then'](handleEntityNotFound(_0x12a60c,null))[_0xd2fe('0x26')](respondWithResult(_0x12a60c,null))[_0xd2fe('0x46')](handleError(_0x12a60c,null));};exports[_0xd2fe('0x48')]=function(_0x481f50,_0x5c4956){return db[_0xd2fe('0x2d')][_0xd2fe('0x48')](_0x481f50[_0xd2fe('0x49')],{})[_0xd2fe('0x26')](respondWithResult(_0x5c4956,0xc9))[_0xd2fe('0x46')](handleError(_0x5c4956,null));};exports[_0xd2fe('0x4a')]=function(_0x377e88,_0x13ec7d){if(_0x377e88[_0xd2fe('0x49')]['id']){delete _0x377e88[_0xd2fe('0x49')]['id'];}return db[_0xd2fe('0x2d')]['find']({'where':{'id':_0x377e88[_0xd2fe('0x47')]['id']}})[_0xd2fe('0x26')](handleEntityNotFound(_0x13ec7d,null))[_0xd2fe('0x26')](saveUpdates(_0x377e88['body'],null))[_0xd2fe('0x26')](respondWithResult(_0x13ec7d,null))['catch'](handleError(_0x13ec7d,null));};exports['destroy']=function(_0x2238be,_0x4a9393){return db[_0xd2fe('0x2d')]['find']({'where':{'id':_0x2238be[_0xd2fe('0x47')]['id']}})['then'](handleEntityNotFound(_0x4a9393,null))[_0xd2fe('0x26')](removeEntity(_0x4a9393,null))[_0xd2fe('0x46')](handleError(_0x4a9393,null));};exports['getFields']=function(_0x5e0793,_0x11cb96,_0x36e489){var _0x4dbecf={};var _0x1e7d2a={};var _0x363015;var _0xd4ce24;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0x5e0793['params']['id']}})[_0xd2fe('0x26')](handleEntityNotFound(_0x11cb96,null))['then'](function(_0x23a59a){if(_0x23a59a){_0x363015=_0x23a59a;_0x1e7d2a[_0xd2fe('0x31')]=_[_0xd2fe('0x33')](db[_0xd2fe('0x4b')][_0xd2fe('0x2e')]);_0x1e7d2a['query']=_[_0xd2fe('0x33')](_0x5e0793[_0xd2fe('0x32')]);_0x1e7d2a['filters']=_[_0xd2fe('0x35')](_0x1e7d2a[_0xd2fe('0x31')],_0x1e7d2a['query']);_0x4dbecf[_0xd2fe('0x36')]=_[_0xd2fe('0x35')](_0x1e7d2a[_0xd2fe('0x31')],qs[_0xd2fe('0x37')](_0x5e0793['query']['fields']));_0x4dbecf[_0xd2fe('0x36')]=_0x4dbecf[_0xd2fe('0x36')][_0xd2fe('0x38')]?_0x4dbecf['attributes']:_0x1e7d2a[_0xd2fe('0x31')];_0x4dbecf['order']=qs[_0xd2fe('0x3c')](_0x5e0793['query'][_0xd2fe('0x3c')]);_0x4dbecf['where']=qs[_0xd2fe('0x34')](_[_0xd2fe('0x4c')](_0x5e0793[_0xd2fe('0x32')],_0x1e7d2a['filters']));if(_0x5e0793[_0xd2fe('0x32')]['filter']){_0x4dbecf[_0xd2fe('0x3e')]=_[_0xd2fe('0x3f')](_0x4dbecf[_0xd2fe('0x3e')],{'$or':_[_0xd2fe('0x2c')](_0x4dbecf['attributes'],function(_0x217192){var _0x52e516={};_0x52e516[_0x217192]={'$like':'%'+_0x5e0793[_0xd2fe('0x32')][_0xd2fe('0x3d')]+'%'};return _0x52e516;})});}_0x4dbecf=_[_0xd2fe('0x3f')]({},_0x4dbecf,_0x5e0793[_0xd2fe('0x41')]);return _0x363015[_0xd2fe('0x4d')](_0x4dbecf);}})[_0xd2fe('0x26')](function(_0x5e1b09){if(_0x5e1b09){_0xd4ce24=_0x5e1b09[_0xd2fe('0x38')];if(!_0x5e0793[_0xd2fe('0x32')]['hasOwnProperty']('nolimit')){_0x4dbecf[_0xd2fe('0x1f')]=qs['limit'](_0x5e0793[_0xd2fe('0x32')][_0xd2fe('0x1f')]);_0x4dbecf[_0xd2fe('0x1d')]=qs[_0xd2fe('0x1d')](_0x5e0793[_0xd2fe('0x32')]['offset']);}return _0x363015[_0xd2fe('0x4d')](_0x4dbecf);}})['then'](function(_0x5ef43d){if(_0x5ef43d){return _0x5ef43d?{'count':_0xd4ce24,'rows':_0x5ef43d}:null;}})[_0xd2fe('0x26')](respondWithResult(_0x11cb96,null))[_0xd2fe('0x46')](handleError(_0x11cb96,null));};exports['getSubjects']=function(_0x489c48,_0x291d88,_0x264d9d){var _0x10cb2f={};var _0x15e978={};var _0x1478e2;var _0x4371f6;return db['SalesforceConfiguration'][_0xd2fe('0x4e')]({'where':{'id':_0x489c48[_0xd2fe('0x47')]['id']}})[_0xd2fe('0x26')](handleEntityNotFound(_0x291d88,null))[_0xd2fe('0x26')](function(_0x356e63){if(_0x356e63){_0x1478e2=_0x356e63;_0x15e978[_0xd2fe('0x31')]=_[_0xd2fe('0x33')](db[_0xd2fe('0x4b')]['rawAttributes']);_0x15e978['query']=_[_0xd2fe('0x33')](_0x489c48[_0xd2fe('0x32')]);_0x15e978[_0xd2fe('0x34')]=_[_0xd2fe('0x35')](_0x15e978[_0xd2fe('0x31')],_0x15e978['query']);_0x10cb2f[_0xd2fe('0x36')]=_[_0xd2fe('0x35')](_0x15e978[_0xd2fe('0x31')],qs['fields'](_0x489c48[_0xd2fe('0x32')]['fields']));_0x10cb2f[_0xd2fe('0x36')]=_0x10cb2f['attributes'][_0xd2fe('0x38')]?_0x10cb2f[_0xd2fe('0x36')]:_0x15e978[_0xd2fe('0x31')];_0x10cb2f[_0xd2fe('0x3b')]=qs[_0xd2fe('0x3c')](_0x489c48[_0xd2fe('0x32')]['sort']);_0x10cb2f[_0xd2fe('0x3e')]=qs[_0xd2fe('0x34')](_[_0xd2fe('0x4c')](_0x489c48['query'],_0x15e978[_0xd2fe('0x34')]));if(_0x489c48['query'][_0xd2fe('0x3d')]){_0x10cb2f['where']=_[_0xd2fe('0x3f')](_0x10cb2f[_0xd2fe('0x3e')],{'$or':_[_0xd2fe('0x2c')](_0x10cb2f[_0xd2fe('0x36')],function(_0x5d7ae1){var _0x44d957={};_0x44d957[_0x5d7ae1]={'$like':'%'+_0x489c48[_0xd2fe('0x32')]['filter']+'%'};return _0x44d957;})});}_0x10cb2f=_[_0xd2fe('0x3f')]({},_0x10cb2f,_0x489c48[_0xd2fe('0x41')]);return _0x1478e2[_0xd2fe('0x4f')](_0x10cb2f);}})[_0xd2fe('0x26')](function(_0x241430){if(_0x241430){_0x4371f6=_0x241430[_0xd2fe('0x38')];if(!_0x489c48[_0xd2fe('0x32')][_0xd2fe('0x39')]('nolimit')){_0x10cb2f[_0xd2fe('0x1f')]=qs[_0xd2fe('0x1f')](_0x489c48['query']['limit']);_0x10cb2f['offset']=qs[_0xd2fe('0x1d')](_0x489c48[_0xd2fe('0x32')][_0xd2fe('0x1d')]);}return _0x1478e2[_0xd2fe('0x4f')](_0x10cb2f);}})['then'](function(_0x4db99){if(_0x4db99){return _0x4db99?{'count':_0x4371f6,'rows':_0x4db99}:null;}})['then'](respondWithResult(_0x291d88,null))['catch'](handleError(_0x291d88,null));};exports[_0xd2fe('0x50')]=function(_0x4f5e96,_0x22a007,_0x24a619){var _0x45546f={};var _0xe6d707={};var _0x524a29;var _0x1ead04;return db[_0xd2fe('0x2d')][_0xd2fe('0x4e')]({'where':{'id':_0x4f5e96[_0xd2fe('0x47')]['id']}})[_0xd2fe('0x26')](handleEntityNotFound(_0x22a007,null))[_0xd2fe('0x26')](function(_0x544bbf){if(_0x544bbf){_0x524a29=_0x544bbf;_0xe6d707['model']=_[_0xd2fe('0x33')](db[_0xd2fe('0x4b')][_0xd2fe('0x2e')]);_0xe6d707[_0xd2fe('0x32')]=_['keys'](_0x4f5e96[_0xd2fe('0x32')]);_0xe6d707[_0xd2fe('0x34')]=_['intersection'](_0xe6d707['model'],_0xe6d707[_0xd2fe('0x32')]);_0x45546f[_0xd2fe('0x36')]=_[_0xd2fe('0x35')](_0xe6d707[_0xd2fe('0x31')],qs[_0xd2fe('0x37')](_0x4f5e96[_0xd2fe('0x32')][_0xd2fe('0x37')]));_0x45546f[_0xd2fe('0x36')]=_0x45546f['attributes'][_0xd2fe('0x38')]?_0x45546f[_0xd2fe('0x36')]:_0xe6d707['model'];_0x45546f[_0xd2fe('0x3b')]=qs['sort'](_0x4f5e96['query']['sort']);_0x45546f[_0xd2fe('0x3e')]=qs['filters'](_[_0xd2fe('0x4c')](_0x4f5e96[_0xd2fe('0x32')],_0xe6d707[_0xd2fe('0x34')]));if(_0x4f5e96[_0xd2fe('0x32')][_0xd2fe('0x3d')]){_0x45546f['where']=_[_0xd2fe('0x3f')](_0x45546f[_0xd2fe('0x3e')],{'$or':_[_0xd2fe('0x2c')](_0x45546f[_0xd2fe('0x36')],function(_0x351e99){var _0x1651a0={};_0x1651a0[_0x351e99]={'$like':'%'+_0x4f5e96[_0xd2fe('0x32')]['filter']+'%'};return _0x1651a0;})});}_0x45546f=_[_0xd2fe('0x3f')]({},_0x45546f,_0x4f5e96['options']);return _0x524a29[_0xd2fe('0x50')](_0x45546f);}})[_0xd2fe('0x26')](function(_0x803450){if(_0x803450){_0x1ead04=_0x803450[_0xd2fe('0x38')];if(!_0x4f5e96['query'][_0xd2fe('0x39')](_0xd2fe('0x3a'))){_0x45546f[_0xd2fe('0x1f')]=qs[_0xd2fe('0x1f')](_0x4f5e96['query'][_0xd2fe('0x1f')]);_0x45546f[_0xd2fe('0x1d')]=qs[_0xd2fe('0x1d')](_0x4f5e96[_0xd2fe('0x32')][_0xd2fe('0x1d')]);}return _0x524a29[_0xd2fe('0x50')](_0x45546f);}})[_0xd2fe('0x26')](function(_0x59153c){if(_0x59153c){return _0x59153c?{'count':_0x1ead04,'rows':_0x59153c}:null;}})['then'](respondWithResult(_0x22a007,null))[_0xd2fe('0x46')](handleError(_0x22a007,null));};
\ No newline at end of file
+var _0x7ba0=['rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','status','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','includeAll','include','then','rows','catch','show','params','find','create','body','getFields','findOne','SalesforceField','pick','getSubjects','getDescriptions','eml-format'];(function(_0x2b7b56,_0x5dddcc){var _0x17bfbb=function(_0x5b9e1f){while(--_0x5b9e1f){_0x2b7b56['push'](_0x2b7b56['shift']());}};_0x17bfbb(++_0x5dddcc);}(_0x7ba0,0x1e5));var _0x07ba=function(_0x758927,_0x391d53){_0x758927=_0x758927-0x0;var _0x214a6a=_0x7ba0[_0x758927];return _0x214a6a;};'use strict';var emlformat=require(_0x07ba('0x0'));var rimraf=require(_0x07ba('0x1'));var zipdir=require(_0x07ba('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x07ba('0x3'));var moment=require(_0x07ba('0x4'));var BPromise=require(_0x07ba('0x5'));var Mustache=require('mustache');var util=require(_0x07ba('0x6'));var path=require('path');var sox=require(_0x07ba('0x7'));var csv=require(_0x07ba('0x8'));var ejs=require(_0x07ba('0x9'));var fs=require('fs');var fs_extra=require(_0x07ba('0xa'));var _=require(_0x07ba('0xb'));var squel=require(_0x07ba('0xc'));var crypto=require('crypto');var jsforce=require(_0x07ba('0xd'));var deskjs=require(_0x07ba('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x07ba('0xf'));var Redis=require(_0x07ba('0x10'));var authService=require(_0x07ba('0x11'));var qs=require(_0x07ba('0x12'));var as=require(_0x07ba('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x07ba('0x14'))(_0x07ba('0x15'));var utils=require(_0x07ba('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x07ba('0x17'));var db=require(_0x07ba('0x18'))['db'];function respondWithStatusCode(_0x9d511a,_0xf1f473){_0xf1f473=_0xf1f473||0xcc;return function(_0x28990e){if(_0x28990e){return _0x9d511a[_0x07ba('0x19')](_0xf1f473);}return _0x9d511a['status'](_0xf1f473)[_0x07ba('0x1a')]();};}function respondWithResult(_0xaf451b,_0x555e19){_0x555e19=_0x555e19||0xc8;return function(_0x32ac9a){if(_0x32ac9a){return _0xaf451b['status'](_0x555e19)['json'](_0x32ac9a);}};}function respondWithFilteredResult(_0x2bf9e7,_0x518459){return function(_0x1b2556){if(_0x1b2556){var _0x4a472e=typeof _0x518459[_0x07ba('0x1b')]===_0x07ba('0x1c')&&typeof _0x518459[_0x07ba('0x1d')]==='undefined';var _0x496a45=_0x1b2556[_0x07ba('0x1e')];var _0x3e0cc4=_0x4a472e?0x0:_0x518459[_0x07ba('0x1b')];var _0xa838a3=_0x4a472e?_0x1b2556[_0x07ba('0x1e')]:_0x518459['offset']+_0x518459['limit'];var _0x27f398;if(_0xa838a3>=_0x496a45){_0xa838a3=_0x496a45;_0x27f398=0xc8;}else{_0x27f398=0xce;}_0x2bf9e7['status'](_0x27f398);return _0x2bf9e7[_0x07ba('0x1f')](_0x07ba('0x20'),_0x3e0cc4+'-'+_0xa838a3+'/'+_0x496a45)[_0x07ba('0x21')](_0x1b2556);}return null;};}function patchUpdates(_0x4b3c23){return function(_0x59d4f2){try{jsonpatch['apply'](_0x59d4f2,_0x4b3c23,!![]);}catch(_0x55f0d){return BPromise[_0x07ba('0x22')](_0x55f0d);}return _0x59d4f2[_0x07ba('0x23')]();};}function saveUpdates(_0xc3ec29,_0x5ee961){return function(_0x3d3605){if(_0x3d3605){return _0x3d3605[_0x07ba('0x24')](_0xc3ec29)['then'](function(_0x477781){return _0x477781;});}return null;};}function removeEntity(_0xd8b1b2,_0x4fac10){return function(_0x111c8f){if(_0x111c8f){return _0x111c8f['destroy']()['then'](function(){_0xd8b1b2[_0x07ba('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x325a1b,_0x84fd7b){return function(_0x452768){if(!_0x452768){_0x325a1b[_0x07ba('0x19')](0x194);}return _0x452768;};}function handleError(_0xb8c028,_0x47af80){_0x47af80=_0x47af80||0x1f4;return function(_0x5678b5){logger[_0x07ba('0x26')](_0x5678b5[_0x07ba('0x27')]);if(_0x5678b5[_0x07ba('0x28')]){delete _0x5678b5[_0x07ba('0x28')];}_0xb8c028[_0x07ba('0x25')](_0x47af80)[_0x07ba('0x29')](_0x5678b5);};}exports[_0x07ba('0x2a')]=function(_0x36fea0,_0x534388){var _0x576ed2={},_0x30623d={},_0x3e0e3f={'count':0x0,'rows':[]};var _0xa2d275=_[_0x07ba('0x2b')](db[_0x07ba('0x2c')][_0x07ba('0x2d')],function(_0x313e85){return{'name':_0x313e85[_0x07ba('0x2e')],'type':_0x313e85[_0x07ba('0x2f')][_0x07ba('0x30')]};});_0x30623d['model']=_[_0x07ba('0x2b')](_0xa2d275,_0x07ba('0x28'));_0x30623d[_0x07ba('0x31')]=_[_0x07ba('0x32')](_0x36fea0[_0x07ba('0x31')]);_0x30623d[_0x07ba('0x33')]=_[_0x07ba('0x34')](_0x30623d['model'],_0x30623d[_0x07ba('0x31')]);_0x576ed2['attributes']=_[_0x07ba('0x34')](_0x30623d[_0x07ba('0x35')],qs['fields'](_0x36fea0[_0x07ba('0x31')][_0x07ba('0x36')]));_0x576ed2[_0x07ba('0x37')]=_0x576ed2[_0x07ba('0x37')][_0x07ba('0x38')]?_0x576ed2[_0x07ba('0x37')]:_0x30623d[_0x07ba('0x35')];if(!_0x36fea0[_0x07ba('0x31')][_0x07ba('0x39')](_0x07ba('0x3a'))){_0x576ed2[_0x07ba('0x1d')]=qs[_0x07ba('0x1d')](_0x36fea0[_0x07ba('0x31')]['limit']);_0x576ed2['offset']=qs['offset'](_0x36fea0[_0x07ba('0x31')]['offset']);}_0x576ed2[_0x07ba('0x3b')]=qs[_0x07ba('0x3c')](_0x36fea0[_0x07ba('0x31')][_0x07ba('0x3c')]);_0x576ed2[_0x07ba('0x3d')]=qs[_0x07ba('0x33')](_['pick'](_0x36fea0['query'],_0x30623d[_0x07ba('0x33')]),_0xa2d275);if(_0x36fea0[_0x07ba('0x31')]['filter']){_0x576ed2[_0x07ba('0x3d')]=_[_0x07ba('0x3e')](_0x576ed2[_0x07ba('0x3d')],{'$or':_['map'](_0xa2d275,function(_0x52d887){if(_0x52d887[_0x07ba('0x2f')]!=='VIRTUAL'){var _0x12aae7={};_0x12aae7[_0x52d887[_0x07ba('0x28')]]={'$like':'%'+_0x36fea0[_0x07ba('0x31')][_0x07ba('0x3f')]+'%'};return _0x12aae7;}})});}_0x576ed2=_[_0x07ba('0x3e')]({},_0x576ed2,_0x36fea0[_0x07ba('0x40')]);var _0x49efc8={'where':_0x576ed2[_0x07ba('0x3d')]};return db[_0x07ba('0x2c')][_0x07ba('0x1e')](_0x49efc8)['then'](function(_0x32abd4){_0x3e0e3f[_0x07ba('0x1e')]=_0x32abd4;if(_0x36fea0[_0x07ba('0x31')][_0x07ba('0x41')]){_0x576ed2[_0x07ba('0x42')]=[{'all':!![]}];}return db[_0x07ba('0x2c')]['findAll'](_0x576ed2);})[_0x07ba('0x43')](function(_0x331b9c){_0x3e0e3f[_0x07ba('0x44')]=_0x331b9c;return _0x3e0e3f;})['then'](respondWithFilteredResult(_0x534388,_0x576ed2))[_0x07ba('0x45')](handleError(_0x534388,null));};exports[_0x07ba('0x46')]=function(_0xa5cc4d,_0x2f540f){var _0x316554={'raw':![],'where':{'id':_0xa5cc4d[_0x07ba('0x47')]['id']}},_0x173c5b={};_0x173c5b['model']=_[_0x07ba('0x32')](db['SalesforceConfiguration']['rawAttributes']);_0x173c5b[_0x07ba('0x31')]=_[_0x07ba('0x32')](_0xa5cc4d[_0x07ba('0x31')]);_0x173c5b[_0x07ba('0x33')]=_[_0x07ba('0x34')](_0x173c5b[_0x07ba('0x35')],_0x173c5b[_0x07ba('0x31')]);_0x316554[_0x07ba('0x37')]=_[_0x07ba('0x34')](_0x173c5b[_0x07ba('0x35')],qs[_0x07ba('0x36')](_0xa5cc4d[_0x07ba('0x31')][_0x07ba('0x36')]));_0x316554['attributes']=_0x316554['attributes'][_0x07ba('0x38')]?_0x316554[_0x07ba('0x37')]:_0x173c5b[_0x07ba('0x35')];if(_0xa5cc4d[_0x07ba('0x31')]['includeAll']){_0x316554['include']=[{'all':!![]}];}_0x316554=_['merge']({},_0x316554,_0xa5cc4d[_0x07ba('0x40')]);return db[_0x07ba('0x2c')][_0x07ba('0x48')](_0x316554)[_0x07ba('0x43')](handleEntityNotFound(_0x2f540f,null))[_0x07ba('0x43')](respondWithResult(_0x2f540f,null))[_0x07ba('0x45')](handleError(_0x2f540f,null));};exports[_0x07ba('0x49')]=function(_0x4d241e,_0xecbc2f){return db[_0x07ba('0x2c')][_0x07ba('0x49')](_0x4d241e[_0x07ba('0x4a')],{})[_0x07ba('0x43')](respondWithResult(_0xecbc2f,0xc9))[_0x07ba('0x45')](handleError(_0xecbc2f,null));};exports[_0x07ba('0x24')]=function(_0x2b9b18,_0x2349a0){if(_0x2b9b18['body']['id']){delete _0x2b9b18['body']['id'];}return db[_0x07ba('0x2c')][_0x07ba('0x48')]({'where':{'id':_0x2b9b18['params']['id']}})[_0x07ba('0x43')](handleEntityNotFound(_0x2349a0,null))['then'](saveUpdates(_0x2b9b18[_0x07ba('0x4a')],null))[_0x07ba('0x43')](respondWithResult(_0x2349a0,null))[_0x07ba('0x45')](handleError(_0x2349a0,null));};exports['destroy']=function(_0x581de4,_0x25698e){return db['SalesforceConfiguration'][_0x07ba('0x48')]({'where':{'id':_0x581de4[_0x07ba('0x47')]['id']}})[_0x07ba('0x43')](handleEntityNotFound(_0x25698e,null))[_0x07ba('0x43')](removeEntity(_0x25698e,null))[_0x07ba('0x45')](handleError(_0x25698e,null));};exports[_0x07ba('0x4b')]=function(_0x471029,_0x5a417c,_0x343e3f){var _0x5adae2={};var _0x591193={};var _0x56f912;var _0x2ceb81;return db['SalesforceConfiguration'][_0x07ba('0x4c')]({'where':{'id':_0x471029[_0x07ba('0x47')]['id']}})[_0x07ba('0x43')](handleEntityNotFound(_0x5a417c,null))[_0x07ba('0x43')](function(_0x315d72){if(_0x315d72){_0x56f912=_0x315d72;_0x591193[_0x07ba('0x35')]=_[_0x07ba('0x32')](db[_0x07ba('0x4d')][_0x07ba('0x2d')]);_0x591193[_0x07ba('0x31')]=_[_0x07ba('0x32')](_0x471029[_0x07ba('0x31')]);_0x591193[_0x07ba('0x33')]=_['intersection'](_0x591193['model'],_0x591193[_0x07ba('0x31')]);_0x5adae2[_0x07ba('0x37')]=_['intersection'](_0x591193[_0x07ba('0x35')],qs[_0x07ba('0x36')](_0x471029[_0x07ba('0x31')][_0x07ba('0x36')]));_0x5adae2[_0x07ba('0x37')]=_0x5adae2[_0x07ba('0x37')][_0x07ba('0x38')]?_0x5adae2[_0x07ba('0x37')]:_0x591193[_0x07ba('0x35')];_0x5adae2['order']=qs[_0x07ba('0x3c')](_0x471029[_0x07ba('0x31')][_0x07ba('0x3c')]);_0x5adae2[_0x07ba('0x3d')]=qs[_0x07ba('0x33')](_[_0x07ba('0x4e')](_0x471029[_0x07ba('0x31')],_0x591193[_0x07ba('0x33')]));if(_0x471029['query'][_0x07ba('0x3f')]){_0x5adae2[_0x07ba('0x3d')]=_[_0x07ba('0x3e')](_0x5adae2['where'],{'$or':_[_0x07ba('0x2b')](_0x5adae2[_0x07ba('0x37')],function(_0x532ae1){var _0x2aab99={};_0x2aab99[_0x532ae1]={'$like':'%'+_0x471029[_0x07ba('0x31')][_0x07ba('0x3f')]+'%'};return _0x2aab99;})});}_0x5adae2=_[_0x07ba('0x3e')]({},_0x5adae2,_0x471029['options']);return _0x56f912[_0x07ba('0x4b')](_0x5adae2);}})[_0x07ba('0x43')](function(_0x562678){if(_0x562678){_0x2ceb81=_0x562678[_0x07ba('0x38')];if(!_0x471029[_0x07ba('0x31')]['hasOwnProperty'](_0x07ba('0x3a'))){_0x5adae2[_0x07ba('0x1d')]=qs[_0x07ba('0x1d')](_0x471029[_0x07ba('0x31')]['limit']);_0x5adae2[_0x07ba('0x1b')]=qs[_0x07ba('0x1b')](_0x471029['query'][_0x07ba('0x1b')]);}return _0x56f912[_0x07ba('0x4b')](_0x5adae2);}})[_0x07ba('0x43')](function(_0x38d7bd){if(_0x38d7bd){return _0x38d7bd?{'count':_0x2ceb81,'rows':_0x38d7bd}:null;}})[_0x07ba('0x43')](respondWithResult(_0x5a417c,null))['catch'](handleError(_0x5a417c,null));};exports['getSubjects']=function(_0x4d59c3,_0xcd308e,_0x274d07){var _0x5a5036={};var _0x165ab0={};var _0x338022;var _0x1267ff;return db[_0x07ba('0x2c')][_0x07ba('0x4c')]({'where':{'id':_0x4d59c3[_0x07ba('0x47')]['id']}})[_0x07ba('0x43')](handleEntityNotFound(_0xcd308e,null))[_0x07ba('0x43')](function(_0x1668f9){if(_0x1668f9){_0x338022=_0x1668f9;_0x165ab0[_0x07ba('0x35')]=_['keys'](db['SalesforceField'][_0x07ba('0x2d')]);_0x165ab0['query']=_['keys'](_0x4d59c3[_0x07ba('0x31')]);_0x165ab0[_0x07ba('0x33')]=_[_0x07ba('0x34')](_0x165ab0[_0x07ba('0x35')],_0x165ab0['query']);_0x5a5036[_0x07ba('0x37')]=_[_0x07ba('0x34')](_0x165ab0[_0x07ba('0x35')],qs[_0x07ba('0x36')](_0x4d59c3[_0x07ba('0x31')][_0x07ba('0x36')]));_0x5a5036[_0x07ba('0x37')]=_0x5a5036[_0x07ba('0x37')][_0x07ba('0x38')]?_0x5a5036[_0x07ba('0x37')]:_0x165ab0[_0x07ba('0x35')];_0x5a5036[_0x07ba('0x3b')]=qs[_0x07ba('0x3c')](_0x4d59c3[_0x07ba('0x31')][_0x07ba('0x3c')]);_0x5a5036[_0x07ba('0x3d')]=qs[_0x07ba('0x33')](_['pick'](_0x4d59c3['query'],_0x165ab0[_0x07ba('0x33')]));if(_0x4d59c3[_0x07ba('0x31')][_0x07ba('0x3f')]){_0x5a5036['where']=_[_0x07ba('0x3e')](_0x5a5036[_0x07ba('0x3d')],{'$or':_[_0x07ba('0x2b')](_0x5a5036[_0x07ba('0x37')],function(_0x43f84d){var _0x362d64={};_0x362d64[_0x43f84d]={'$like':'%'+_0x4d59c3[_0x07ba('0x31')][_0x07ba('0x3f')]+'%'};return _0x362d64;})});}_0x5a5036=_['merge']({},_0x5a5036,_0x4d59c3[_0x07ba('0x40')]);return _0x338022[_0x07ba('0x4f')](_0x5a5036);}})['then'](function(_0x26bf82){if(_0x26bf82){_0x1267ff=_0x26bf82[_0x07ba('0x38')];if(!_0x4d59c3['query']['hasOwnProperty'](_0x07ba('0x3a'))){_0x5a5036[_0x07ba('0x1d')]=qs[_0x07ba('0x1d')](_0x4d59c3[_0x07ba('0x31')][_0x07ba('0x1d')]);_0x5a5036[_0x07ba('0x1b')]=qs[_0x07ba('0x1b')](_0x4d59c3[_0x07ba('0x31')]['offset']);}return _0x338022[_0x07ba('0x4f')](_0x5a5036);}})[_0x07ba('0x43')](function(_0x5016ff){if(_0x5016ff){return _0x5016ff?{'count':_0x1267ff,'rows':_0x5016ff}:null;}})['then'](respondWithResult(_0xcd308e,null))[_0x07ba('0x45')](handleError(_0xcd308e,null));};exports[_0x07ba('0x50')]=function(_0xb91eb4,_0x28cb34,_0x2fc2cc){var _0x275c21={};var _0x1c172b={};var _0x5da1ed;var _0x296c7c;return db[_0x07ba('0x2c')]['findOne']({'where':{'id':_0xb91eb4['params']['id']}})[_0x07ba('0x43')](handleEntityNotFound(_0x28cb34,null))['then'](function(_0x345896){if(_0x345896){_0x5da1ed=_0x345896;_0x1c172b['model']=_[_0x07ba('0x32')](db[_0x07ba('0x4d')][_0x07ba('0x2d')]);_0x1c172b[_0x07ba('0x31')]=_[_0x07ba('0x32')](_0xb91eb4[_0x07ba('0x31')]);_0x1c172b[_0x07ba('0x33')]=_['intersection'](_0x1c172b[_0x07ba('0x35')],_0x1c172b[_0x07ba('0x31')]);_0x275c21[_0x07ba('0x37')]=_[_0x07ba('0x34')](_0x1c172b[_0x07ba('0x35')],qs[_0x07ba('0x36')](_0xb91eb4[_0x07ba('0x31')][_0x07ba('0x36')]));_0x275c21[_0x07ba('0x37')]=_0x275c21[_0x07ba('0x37')][_0x07ba('0x38')]?_0x275c21[_0x07ba('0x37')]:_0x1c172b[_0x07ba('0x35')];_0x275c21['order']=qs[_0x07ba('0x3c')](_0xb91eb4[_0x07ba('0x31')]['sort']);_0x275c21[_0x07ba('0x3d')]=qs[_0x07ba('0x33')](_[_0x07ba('0x4e')](_0xb91eb4[_0x07ba('0x31')],_0x1c172b[_0x07ba('0x33')]));if(_0xb91eb4[_0x07ba('0x31')][_0x07ba('0x3f')]){_0x275c21[_0x07ba('0x3d')]=_['merge'](_0x275c21['where'],{'$or':_['map'](_0x275c21[_0x07ba('0x37')],function(_0x3636ad){var _0x575a00={};_0x575a00[_0x3636ad]={'$like':'%'+_0xb91eb4[_0x07ba('0x31')][_0x07ba('0x3f')]+'%'};return _0x575a00;})});}_0x275c21=_['merge']({},_0x275c21,_0xb91eb4[_0x07ba('0x40')]);return _0x5da1ed[_0x07ba('0x50')](_0x275c21);}})['then'](function(_0x534044){if(_0x534044){_0x296c7c=_0x534044['length'];if(!_0xb91eb4[_0x07ba('0x31')][_0x07ba('0x39')](_0x07ba('0x3a'))){_0x275c21[_0x07ba('0x1d')]=qs[_0x07ba('0x1d')](_0xb91eb4[_0x07ba('0x31')][_0x07ba('0x1d')]);_0x275c21[_0x07ba('0x1b')]=qs['offset'](_0xb91eb4[_0x07ba('0x31')][_0x07ba('0x1b')]);}return _0x5da1ed['getDescriptions'](_0x275c21);}})[_0x07ba('0x43')](function(_0x38c63a){if(_0x38c63a){return _0x38c63a?{'count':_0x296c7c,'rows':_0x38c63a}:null;}})[_0x07ba('0x43')](respondWithResult(_0x28cb34,null))[_0x07ba('0x45')](handleError(_0x28cb34,null));};
\ No newline at end of file
index a7b03a2..ae1cc34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7376=['exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','api','bluebird','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes'];(function(_0x48c7e8,_0x2a4fee){var _0x5c0e0f=function(_0x2faa97){while(--_0x2faa97){_0x48c7e8['push'](_0x48c7e8['shift']());}};_0x5c0e0f(++_0x2a4fee);}(_0x7376,0x1e4));var _0x6737=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x7376[_0x51020b];return _0x371e47;};'use strict';var _=require(_0x6737('0x0'));var util=require(_0x6737('0x1'));var logger=require('../../config/logger')(_0x6737('0x2'));var moment=require('moment');var BPromise=require(_0x6737('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6737('0x4'));var rimraf=require(_0x6737('0x5'));var config=require(_0x6737('0x6'));var attributes=require(_0x6737('0x7'));module[_0x6737('0x8')]=function(_0x412c28,_0x240685){return _0x412c28[_0x6737('0x9')](_0x6737('0xa'),attributes,{'tableName':_0x6737('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf9c3=['../../config/environment','./intSalesforceConfiguration.attributes','exports','SalesforceConfiguration','lodash','api','moment','path','rimraf'];(function(_0x5c9d9e,_0xea8a64){var _0x43606e=function(_0x574cd1){while(--_0x574cd1){_0x5c9d9e['push'](_0x5c9d9e['shift']());}};_0x43606e(++_0xea8a64);}(_0xf9c3,0x1ab));var _0x3f9c=function(_0x547890,_0x593741){_0x547890=_0x547890-0x0;var _0x2c8daa=_0xf9c3[_0x547890];return _0x2c8daa;};'use strict';var _=require(_0x3f9c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3f9c('0x1'));var moment=require(_0x3f9c('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3f9c('0x3'));var rimraf=require(_0x3f9c('0x4'));var config=require(_0x3f9c('0x5'));var attributes=require(_0x3f9c('0x6'));module[_0x3f9c('0x7')]=function(_0x9307c6,_0x39ca3a){return _0x9307c6['define'](_0x3f9c('0x8'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0554066..2a8b32d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1958=['../../config/environment','client','http','request','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','error','code','SalesforceConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x55e076,_0x4b1933){var _0x374057=function(_0x24a176){while(--_0x24a176){_0x55e076['push'](_0x55e076['shift']());}};_0x374057(++_0x4b1933);}(_0x1958,0xea));var _0x8195=function(_0x294d96,_0x2a7812){_0x294d96=_0x294d96-0x0;var _0x5ceb37=_0x1958[_0x294d96];return _0x5ceb37;};'use strict';var _=require(_0x8195('0x0'));var util=require('util');var moment=require(_0x8195('0x1'));var BPromise=require(_0x8195('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8195('0x3'))['db'];var utils=require(_0x8195('0x4'));var logger=require(_0x8195('0x5'))('rpc');var config=require(_0x8195('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8195('0x7')][_0x8195('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4931e3,_0x871354,_0x11258d){return new BPromise(function(_0x165c30,_0x113f9e){return client[_0x8195('0x9')](_0x4931e3,_0x11258d)['then'](function(_0x4f94dd){logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0x871354,_0x8195('0xa'));logger[_0x8195('0xb')](_0x8195('0xc'),_0x871354,_0x8195('0xa'),JSON['stringify'](_0x4f94dd));if(_0x4f94dd['error']){if(_0x4f94dd[_0x8195('0xd')][_0x8195('0xe')]===0x1f4){logger[_0x8195('0xd')](_0x8195('0xf'),_0x871354,_0x4f94dd[_0x8195('0xd')][_0x8195('0x10')]);return _0x113f9e(_0x4f94dd[_0x8195('0xd')][_0x8195('0x10')]);}logger[_0x8195('0xd')](_0x8195('0xf'),_0x871354,_0x4f94dd[_0x8195('0xd')][_0x8195('0x10')]);return _0x165c30(_0x4f94dd['error'][_0x8195('0x10')]);}else{logger[_0x8195('0x11')](_0x8195('0xf'),_0x871354,'request\x20sent');_0x165c30(_0x4f94dd[_0x8195('0x12')][_0x8195('0x10')]);}})[_0x8195('0x13')](function(_0x116328){logger[_0x8195('0xd')](_0x8195('0xf'),_0x871354,_0x116328);_0x113f9e(_0x116328);});});}
\ No newline at end of file
+var _0x2c8b=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','SalesforceConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment'];(function(_0x37f67f,_0x33c870){var _0x15650c=function(_0x143ad3){while(--_0x143ad3){_0x37f67f['push'](_0x37f67f['shift']());}};_0x15650c(++_0x33c870);}(_0x2c8b,0x1b5));var _0xb2c8=function(_0x5ae8fd,_0x5014b0){_0x5ae8fd=_0x5ae8fd-0x0;var _0x4e5d72=_0x2c8b[_0x5ae8fd];return _0x4e5d72;};'use strict';var _=require(_0xb2c8('0x0'));var util=require(_0xb2c8('0x1'));var moment=require(_0xb2c8('0x2'));var BPromise=require('bluebird');var rs=require(_0xb2c8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb2c8('0x4'))['db'];var utils=require(_0xb2c8('0x5'));var logger=require(_0xb2c8('0x6'))(_0xb2c8('0x7'));var config=require('../../config/environment');var jayson=require(_0xb2c8('0x8'));var client=jayson[_0xb2c8('0x9')][_0xb2c8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe545,_0x376bc4,_0x53679c){return new BPromise(function(_0x1c43ce,_0x4b2986){return client['request'](_0xe545,_0x53679c)[_0xb2c8('0xb')](function(_0x9e8e9){logger['info'](_0xb2c8('0xc'),_0x376bc4,'request\x20sent');logger[_0xb2c8('0xd')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x376bc4,_0xb2c8('0xe'),JSON[_0xb2c8('0xf')](_0x9e8e9));if(_0x9e8e9[_0xb2c8('0x10')]){if(_0x9e8e9['error'][_0xb2c8('0x11')]===0x1f4){logger[_0xb2c8('0x10')](_0xb2c8('0xc'),_0x376bc4,_0x9e8e9['error'][_0xb2c8('0x12')]);return _0x4b2986(_0x9e8e9[_0xb2c8('0x10')][_0xb2c8('0x12')]);}logger[_0xb2c8('0x10')](_0xb2c8('0xc'),_0x376bc4,_0x9e8e9[_0xb2c8('0x10')][_0xb2c8('0x12')]);return _0x1c43ce(_0x9e8e9[_0xb2c8('0x10')][_0xb2c8('0x12')]);}else{logger[_0xb2c8('0x13')](_0xb2c8('0xc'),_0x376bc4,_0xb2c8('0xe'));_0x1c43ce(_0x9e8e9[_0xb2c8('0x14')]['message']);}})[_0xb2c8('0x15')](function(_0x38557b){logger[_0xb2c8('0x10')](_0xb2c8('0xc'),_0x376bc4,_0x38557b);_0x4b2986(_0x38557b);});});}
\ No newline at end of file
index 0b87f58..3bdfc95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa052=['get','isAuthenticated','show','create','put','update','/:id','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x123308,_0x51e2e5){var _0x35a107=function(_0x213609){while(--_0x213609){_0x123308['push'](_0x123308['shift']());}};_0x35a107(++_0x51e2e5);}(_0xa052,0x13b));var _0x2a05=function(_0x17b464,_0x2ca3d1){_0x17b464=_0x17b464-0x0;var _0x41e1a0=_0xa052[_0x17b464];return _0x41e1a0;};'use strict';var multer=require(_0x2a05('0x0'));var util=require('util');var path=require(_0x2a05('0x1'));var timeout=require(_0x2a05('0x2'));var express=require(_0x2a05('0x3'));var router=express[_0x2a05('0x4')]();var fs_extra=require(_0x2a05('0x5'));var auth=require(_0x2a05('0x6'));var interaction=require(_0x2a05('0x7'));var config=require(_0x2a05('0x8'));var controller=require('./intSalesforceField.controller');router[_0x2a05('0x9')]('/',auth[_0x2a05('0xa')](),controller['index']);router['get']('/:id',auth[_0x2a05('0xa')](),controller[_0x2a05('0xb')]);router['post']('/',auth[_0x2a05('0xa')](),controller[_0x2a05('0xc')]);router[_0x2a05('0xd')]('/:id',auth[_0x2a05('0xa')](),controller[_0x2a05('0xe')]);router['delete'](_0x2a05('0xf'),auth[_0x2a05('0xa')](),controller[_0x2a05('0x10')]);module[_0x2a05('0x11')]=router;
\ No newline at end of file
+var _0x2501=['show','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intSalesforceField.controller','isAuthenticated','index','get','/:id'];(function(_0x42763d,_0x3db4ce){var _0x256cb1=function(_0x3ffe40){while(--_0x3ffe40){_0x42763d['push'](_0x42763d['shift']());}};_0x256cb1(++_0x3db4ce);}(_0x2501,0x1bb));var _0x1250=function(_0x24f3d1,_0x22b158){_0x24f3d1=_0x24f3d1-0x0;var _0xd4e465=_0x2501[_0x24f3d1];return _0xd4e465;};'use strict';var multer=require(_0x1250('0x0'));var util=require(_0x1250('0x1'));var path=require(_0x1250('0x2'));var timeout=require(_0x1250('0x3'));var express=require(_0x1250('0x4'));var router=express[_0x1250('0x5')]();var fs_extra=require(_0x1250('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1250('0x7'));var controller=require(_0x1250('0x8'));router['get']('/',auth[_0x1250('0x9')](),controller[_0x1250('0xa')]);router[_0x1250('0xb')](_0x1250('0xc'),auth[_0x1250('0x9')](),controller[_0x1250('0xd')]);router[_0x1250('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x1250('0xc'),auth[_0x1250('0x9')](),controller[_0x1250('0xf')]);router[_0x1250('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x1250('0x11')]);module[_0x1250('0x12')]=router;
\ No newline at end of file
index 6a600c8..49a7c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd469=['ENUM','string','keyValue','picklist','STRING','variable','customVariable','sequelize'];(function(_0x1e416c,_0x14a3d5){var _0x34d312=function(_0x2f2ebd){while(--_0x2f2ebd){_0x1e416c['push'](_0x1e416c['shift']());}};_0x34d312(++_0x14a3d5);}(_0xd469,0x197));var _0x9d46=function(_0x25c19e,_0x2322d5){_0x25c19e=_0x25c19e-0x0;var _0x94148=_0xd469[_0x25c19e];return _0x94148;};'use strict';var Sequelize=require(_0x9d46('0x0'));module['exports']={'type':{'type':Sequelize[_0x9d46('0x1')](_0x9d46('0x2'),'variable','customVariable',_0x9d46('0x3'),_0x9d46('0x4')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x9d46('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x9d46('0x2'),_0x9d46('0x6'),_0x9d46('0x7'))},'keyContent':{'type':Sequelize[_0x9d46('0x5')]},'idField':{'type':Sequelize[_0x9d46('0x5')]},'variableName':{'type':Sequelize[_0x9d46('0x5')]}};
\ No newline at end of file
+var _0xdffb=['exports','string','variable','keyValue','picklist','STRING','sequelize'];(function(_0x3db260,_0x415b80){var _0x5b1ca8=function(_0x451b8a){while(--_0x451b8a){_0x3db260['push'](_0x3db260['shift']());}};_0x5b1ca8(++_0x415b80);}(_0xdffb,0x1b8));var _0xbdff=function(_0xfbb18b,_0x37f528){_0xfbb18b=_0xfbb18b-0x0;var _0x3aea74=_0xdffb[_0xfbb18b];return _0x3aea74;};'use strict';var Sequelize=require(_0xbdff('0x0'));module[_0xbdff('0x1')]={'type':{'type':Sequelize['ENUM'](_0xbdff('0x2'),_0xbdff('0x3'),'customVariable',_0xbdff('0x4'),_0xbdff('0x5')),'defaultValue':_0xbdff('0x2')},'content':{'type':Sequelize[_0xbdff('0x6')]},'key':{'type':Sequelize[_0xbdff('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0xbdff('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xbdff('0x6')]},'idField':{'type':Sequelize[_0xbdff('0x6')]},'variableName':{'type':Sequelize[_0xbdff('0x6')]}};
\ No newline at end of file
index 060738e..5c6ec8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22bc=['pick','filter','VIRTUAL','merge','SalesforceField','includeAll','include','rows','catch','show','options','find','create','body','update','params','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','destroy','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x550ef9,_0x3a9b13){var _0x252d95=function(_0x32e135){while(--_0x32e135){_0x550ef9['push'](_0x550ef9['shift']());}};_0x252d95(++_0x3a9b13);}(_0x22bc,0x17d));var _0xc22b=function(_0x4c53db,_0x361d7f){_0x4c53db=_0x4c53db-0x0;var _0x464b17=_0x22bc[_0x4c53db];return _0x464b17;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc22b('0x0'));var rp=require(_0xc22b('0x1'));var moment=require(_0xc22b('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc22b('0x3'));var util=require(_0xc22b('0x4'));var path=require(_0xc22b('0x5'));var sox=require(_0xc22b('0x6'));var csv=require(_0xc22b('0x7'));var ejs=require(_0xc22b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc22b('0x9'));var squel=require(_0xc22b('0xa'));var crypto=require(_0xc22b('0xb'));var jsforce=require(_0xc22b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc22b('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc22b('0xd'));var qs=require(_0xc22b('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc22b('0xf'));var logger=require(_0xc22b('0x10'))(_0xc22b('0x11'));var utils=require(_0xc22b('0x12'));var config=require(_0xc22b('0x13'));var licenseUtil=require(_0xc22b('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3f011f,_0x8cd3e1){_0x8cd3e1=_0x8cd3e1||0xcc;return function(_0x452370){if(_0x452370){return _0x3f011f[_0xc22b('0x15')](_0x8cd3e1);}return _0x3f011f['status'](_0x8cd3e1)[_0xc22b('0x16')]();};}function respondWithResult(_0x3c0dd9,_0xbbdc8e){_0xbbdc8e=_0xbbdc8e||0xc8;return function(_0x18fc0c){if(_0x18fc0c){return _0x3c0dd9[_0xc22b('0x17')](_0xbbdc8e)['json'](_0x18fc0c);}};}function respondWithFilteredResult(_0x471a27,_0x98a3c1){return function(_0x2bfeb9){if(_0x2bfeb9){var _0x1931bc=typeof _0x98a3c1['offset']===_0xc22b('0x18')&&typeof _0x98a3c1['limit']===_0xc22b('0x18');var _0x408f02=_0x2bfeb9[_0xc22b('0x19')];var _0x58277e=_0x1931bc?0x0:_0x98a3c1[_0xc22b('0x1a')];var _0x27cb7b=_0x1931bc?_0x2bfeb9[_0xc22b('0x19')]:_0x98a3c1[_0xc22b('0x1a')]+_0x98a3c1[_0xc22b('0x1b')];var _0x5a28e3;if(_0x27cb7b>=_0x408f02){_0x27cb7b=_0x408f02;_0x5a28e3=0xc8;}else{_0x5a28e3=0xce;}_0x471a27[_0xc22b('0x17')](_0x5a28e3);return _0x471a27[_0xc22b('0x1c')](_0xc22b('0x1d'),_0x58277e+'-'+_0x27cb7b+'/'+_0x408f02)[_0xc22b('0x1e')](_0x2bfeb9);}return null;};}function patchUpdates(_0x45a605){return function(_0x421be4){try{jsonpatch[_0xc22b('0x1f')](_0x421be4,_0x45a605,!![]);}catch(_0x2a0425){return BPromise[_0xc22b('0x20')](_0x2a0425);}return _0x421be4[_0xc22b('0x21')]();};}function saveUpdates(_0x3da564,_0x202955){return function(_0xe88a1e){if(_0xe88a1e){return _0xe88a1e['update'](_0x3da564)['then'](function(_0x387e5b){return _0x387e5b;});}return null;};}function removeEntity(_0x19ba12,_0x46d61b){return function(_0x9949){if(_0x9949){return _0x9949[_0xc22b('0x22')]()[_0xc22b('0x23')](function(){_0x19ba12['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3821a1,_0x5342f5){return function(_0x271277){if(!_0x271277){_0x3821a1['sendStatus'](0x194);}return _0x271277;};}function handleError(_0x3af7e4,_0x505741){_0x505741=_0x505741||0x1f4;return function(_0x120ca9){logger[_0xc22b('0x24')](_0x120ca9['stack']);if(_0x120ca9[_0xc22b('0x25')]){delete _0x120ca9[_0xc22b('0x25')];}_0x3af7e4[_0xc22b('0x17')](_0x505741)[_0xc22b('0x26')](_0x120ca9);};}exports[_0xc22b('0x27')]=function(_0x212a79,_0x343a6d){var _0x654b6b={},_0x228193={},_0x1ea378={'count':0x0,'rows':[]};var _0x1b9d2a=_[_0xc22b('0x28')](db['SalesforceField'][_0xc22b('0x29')],function(_0x4c4354){return{'name':_0x4c4354[_0xc22b('0x2a')],'type':_0x4c4354[_0xc22b('0x2b')][_0xc22b('0x2c')]};});_0x228193[_0xc22b('0x2d')]=_[_0xc22b('0x28')](_0x1b9d2a,_0xc22b('0x25'));_0x228193[_0xc22b('0x2e')]=_[_0xc22b('0x2f')](_0x212a79[_0xc22b('0x2e')]);_0x228193[_0xc22b('0x30')]=_[_0xc22b('0x31')](_0x228193[_0xc22b('0x2d')],_0x228193[_0xc22b('0x2e')]);_0x654b6b[_0xc22b('0x32')]=_[_0xc22b('0x31')](_0x228193[_0xc22b('0x2d')],qs['fields'](_0x212a79[_0xc22b('0x2e')][_0xc22b('0x33')]));_0x654b6b['attributes']=_0x654b6b[_0xc22b('0x32')]['length']?_0x654b6b[_0xc22b('0x32')]:_0x228193[_0xc22b('0x2d')];if(!_0x212a79[_0xc22b('0x2e')][_0xc22b('0x34')](_0xc22b('0x35'))){_0x654b6b[_0xc22b('0x1b')]=qs[_0xc22b('0x1b')](_0x212a79[_0xc22b('0x2e')][_0xc22b('0x1b')]);_0x654b6b[_0xc22b('0x1a')]=qs['offset'](_0x212a79[_0xc22b('0x2e')]['offset']);}_0x654b6b[_0xc22b('0x36')]=qs[_0xc22b('0x37')](_0x212a79[_0xc22b('0x2e')][_0xc22b('0x37')]);_0x654b6b[_0xc22b('0x38')]=qs[_0xc22b('0x30')](_[_0xc22b('0x39')](_0x212a79['query'],_0x228193[_0xc22b('0x30')]),_0x1b9d2a);if(_0x212a79['query'][_0xc22b('0x3a')]){_0x654b6b[_0xc22b('0x38')]=_['merge'](_0x654b6b[_0xc22b('0x38')],{'$or':_[_0xc22b('0x28')](_0x1b9d2a,function(_0x1615b7){if(_0x1615b7['type']!==_0xc22b('0x3b')){var _0x3c2375={};_0x3c2375[_0x1615b7[_0xc22b('0x25')]]={'$like':'%'+_0x212a79[_0xc22b('0x2e')][_0xc22b('0x3a')]+'%'};return _0x3c2375;}})});}_0x654b6b=_[_0xc22b('0x3c')]({},_0x654b6b,_0x212a79['options']);var _0x5be9a6={'where':_0x654b6b[_0xc22b('0x38')]};return db[_0xc22b('0x3d')][_0xc22b('0x19')](_0x5be9a6)[_0xc22b('0x23')](function(_0x167b78){_0x1ea378[_0xc22b('0x19')]=_0x167b78;if(_0x212a79['query'][_0xc22b('0x3e')]){_0x654b6b[_0xc22b('0x3f')]=[{'all':!![]}];}return db[_0xc22b('0x3d')]['findAll'](_0x654b6b);})[_0xc22b('0x23')](function(_0x2d6a12){_0x1ea378[_0xc22b('0x40')]=_0x2d6a12;return _0x1ea378;})['then'](respondWithFilteredResult(_0x343a6d,_0x654b6b))[_0xc22b('0x41')](handleError(_0x343a6d,null));};exports[_0xc22b('0x42')]=function(_0x2c55e7,_0x3005ad){var _0x177216={'raw':!![],'where':{'id':_0x2c55e7['params']['id']}},_0x2bfa0a={};_0x2bfa0a[_0xc22b('0x2d')]=_[_0xc22b('0x2f')](db['SalesforceField']['rawAttributes']);_0x2bfa0a[_0xc22b('0x2e')]=_[_0xc22b('0x2f')](_0x2c55e7['query']);_0x2bfa0a[_0xc22b('0x30')]=_[_0xc22b('0x31')](_0x2bfa0a[_0xc22b('0x2d')],_0x2bfa0a['query']);_0x177216[_0xc22b('0x32')]=_[_0xc22b('0x31')](_0x2bfa0a[_0xc22b('0x2d')],qs[_0xc22b('0x33')](_0x2c55e7['query'][_0xc22b('0x33')]));_0x177216['attributes']=_0x177216[_0xc22b('0x32')]['length']?_0x177216['attributes']:_0x2bfa0a[_0xc22b('0x2d')];if(_0x2c55e7['query'][_0xc22b('0x3e')]){_0x177216[_0xc22b('0x3f')]=[{'all':!![]}];}_0x177216=_['merge']({},_0x177216,_0x2c55e7[_0xc22b('0x43')]);return db[_0xc22b('0x3d')][_0xc22b('0x44')](_0x177216)[_0xc22b('0x23')](handleEntityNotFound(_0x3005ad,null))[_0xc22b('0x23')](respondWithResult(_0x3005ad,null))['catch'](handleError(_0x3005ad,null));};exports[_0xc22b('0x45')]=function(_0x73cb39,_0x4ec867){return db['SalesforceField'][_0xc22b('0x45')](_0x73cb39[_0xc22b('0x46')],{})[_0xc22b('0x23')](respondWithResult(_0x4ec867,0xc9))[_0xc22b('0x41')](handleError(_0x4ec867,null));};exports[_0xc22b('0x47')]=function(_0x1052e8,_0x194843){if(_0x1052e8[_0xc22b('0x46')]['id']){delete _0x1052e8[_0xc22b('0x46')]['id'];}return db['SalesforceField'][_0xc22b('0x44')]({'where':{'id':_0x1052e8[_0xc22b('0x48')]['id']}})[_0xc22b('0x23')](handleEntityNotFound(_0x194843,null))[_0xc22b('0x23')](saveUpdates(_0x1052e8[_0xc22b('0x46')],null))['then'](respondWithResult(_0x194843,null))[_0xc22b('0x41')](handleError(_0x194843,null));};exports[_0xc22b('0x22')]=function(_0x356be6,_0x111b60){return db[_0xc22b('0x3d')][_0xc22b('0x44')]({'where':{'id':_0x356be6[_0xc22b('0x48')]['id']}})[_0xc22b('0x23')](handleEntityNotFound(_0x111b60,null))[_0xc22b('0x23')](removeEntity(_0x111b60,null))[_0xc22b('0x41')](handleError(_0x111b60,null));};
\ No newline at end of file
+var _0x5603=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','update','then','error','stack','name','send','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x36ea5e,_0x8445d5){var _0x5bec0e=function(_0x7618a0){while(--_0x7618a0){_0x36ea5e['push'](_0x36ea5e['shift']());}};_0x5bec0e(++_0x8445d5);}(_0x5603,0x1aa));var _0x3560=function(_0x37dacf,_0x4ee16f){_0x37dacf=_0x37dacf-0x0;var _0xe407f2=_0x5603[_0x37dacf];return _0xe407f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3560('0x0'));var zipdir=require(_0x3560('0x1'));var jsonpatch=require(_0x3560('0x2'));var rp=require('request-promise');var moment=require(_0x3560('0x3'));var BPromise=require(_0x3560('0x4'));var Mustache=require(_0x3560('0x5'));var util=require(_0x3560('0x6'));var path=require(_0x3560('0x7'));var sox=require(_0x3560('0x8'));var csv=require(_0x3560('0x9'));var ejs=require(_0x3560('0xa'));var fs=require('fs');var fs_extra=require(_0x3560('0xb'));var _=require('lodash');var squel=require(_0x3560('0xc'));var crypto=require(_0x3560('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3560('0xe'));var toCsv=require(_0x3560('0x9'));var querystring=require(_0x3560('0xf'));var Papa=require(_0x3560('0x10'));var Redis=require(_0x3560('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3560('0x12'));var as=require(_0x3560('0x13'));var hardwareService=require(_0x3560('0x14'));var logger=require(_0x3560('0x15'))(_0x3560('0x16'));var utils=require(_0x3560('0x17'));var config=require(_0x3560('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x482c5f,_0x1d0c11){_0x1d0c11=_0x1d0c11||0xcc;return function(_0x211d1c){if(_0x211d1c){return _0x482c5f[_0x3560('0x19')](_0x1d0c11);}return _0x482c5f[_0x3560('0x1a')](_0x1d0c11)[_0x3560('0x1b')]();};}function respondWithResult(_0x4c4c21,_0x680648){_0x680648=_0x680648||0xc8;return function(_0x1c1362){if(_0x1c1362){return _0x4c4c21[_0x3560('0x1a')](_0x680648)['json'](_0x1c1362);}};}function respondWithFilteredResult(_0x3befbc,_0x484c84){return function(_0x318f3d){if(_0x318f3d){var _0x16b8cc=typeof _0x484c84[_0x3560('0x1c')]==='undefined'&&typeof _0x484c84[_0x3560('0x1d')]===_0x3560('0x1e');var _0x2926ea=_0x318f3d[_0x3560('0x1f')];var _0x3acdd7=_0x16b8cc?0x0:_0x484c84['offset'];var _0x14972f=_0x16b8cc?_0x318f3d[_0x3560('0x1f')]:_0x484c84['offset']+_0x484c84[_0x3560('0x1d')];var _0xcba14c;if(_0x14972f>=_0x2926ea){_0x14972f=_0x2926ea;_0xcba14c=0xc8;}else{_0xcba14c=0xce;}_0x3befbc['status'](_0xcba14c);return _0x3befbc['set'](_0x3560('0x20'),_0x3acdd7+'-'+_0x14972f+'/'+_0x2926ea)[_0x3560('0x21')](_0x318f3d);}return null;};}function patchUpdates(_0x4ddb24){return function(_0x29a7bb){try{jsonpatch[_0x3560('0x22')](_0x29a7bb,_0x4ddb24,!![]);}catch(_0x484c4c){return BPromise['reject'](_0x484c4c);}return _0x29a7bb['save']();};}function saveUpdates(_0xf0962,_0x210a30){return function(_0x2e6513){if(_0x2e6513){return _0x2e6513[_0x3560('0x23')](_0xf0962)[_0x3560('0x24')](function(_0x14abc8){return _0x14abc8;});}return null;};}function removeEntity(_0x50e7b0,_0x275fee){return function(_0x4e4841){if(_0x4e4841){return _0x4e4841['destroy']()['then'](function(){_0x50e7b0[_0x3560('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x579f5b,_0x230db2){return function(_0x4a8ed3){if(!_0x4a8ed3){_0x579f5b[_0x3560('0x19')](0x194);}return _0x4a8ed3;};}function handleError(_0x4cb784,_0xe1ad3a){_0xe1ad3a=_0xe1ad3a||0x1f4;return function(_0x48639c){logger[_0x3560('0x25')](_0x48639c[_0x3560('0x26')]);if(_0x48639c[_0x3560('0x27')]){delete _0x48639c['name'];}_0x4cb784[_0x3560('0x1a')](_0xe1ad3a)[_0x3560('0x28')](_0x48639c);};}exports['index']=function(_0xdfb532,_0x49b745){var _0x28aaf8={},_0x5f55c4={},_0x5128bc={'count':0x0,'rows':[]};var _0x13ee76=_[_0x3560('0x29')](db[_0x3560('0x2a')][_0x3560('0x2b')],function(_0x4626b1){return{'name':_0x4626b1[_0x3560('0x2c')],'type':_0x4626b1[_0x3560('0x2d')][_0x3560('0x2e')]};});_0x5f55c4[_0x3560('0x2f')]=_[_0x3560('0x29')](_0x13ee76,_0x3560('0x27'));_0x5f55c4[_0x3560('0x30')]=_['keys'](_0xdfb532[_0x3560('0x30')]);_0x5f55c4[_0x3560('0x31')]=_[_0x3560('0x32')](_0x5f55c4[_0x3560('0x2f')],_0x5f55c4[_0x3560('0x30')]);_0x28aaf8[_0x3560('0x33')]=_[_0x3560('0x32')](_0x5f55c4[_0x3560('0x2f')],qs[_0x3560('0x34')](_0xdfb532[_0x3560('0x30')]['fields']));_0x28aaf8['attributes']=_0x28aaf8[_0x3560('0x33')][_0x3560('0x35')]?_0x28aaf8[_0x3560('0x33')]:_0x5f55c4[_0x3560('0x2f')];if(!_0xdfb532[_0x3560('0x30')][_0x3560('0x36')](_0x3560('0x37'))){_0x28aaf8[_0x3560('0x1d')]=qs[_0x3560('0x1d')](_0xdfb532[_0x3560('0x30')][_0x3560('0x1d')]);_0x28aaf8[_0x3560('0x1c')]=qs[_0x3560('0x1c')](_0xdfb532[_0x3560('0x30')]['offset']);}_0x28aaf8[_0x3560('0x38')]=qs['sort'](_0xdfb532['query']['sort']);_0x28aaf8[_0x3560('0x39')]=qs[_0x3560('0x31')](_[_0x3560('0x3a')](_0xdfb532[_0x3560('0x30')],_0x5f55c4[_0x3560('0x31')]),_0x13ee76);if(_0xdfb532[_0x3560('0x30')][_0x3560('0x3b')]){_0x28aaf8[_0x3560('0x39')]=_['merge'](_0x28aaf8[_0x3560('0x39')],{'$or':_['map'](_0x13ee76,function(_0x79f47d){if(_0x79f47d['type']!==_0x3560('0x3c')){var _0x191bff={};_0x191bff[_0x79f47d[_0x3560('0x27')]]={'$like':'%'+_0xdfb532['query'][_0x3560('0x3b')]+'%'};return _0x191bff;}})});}_0x28aaf8=_[_0x3560('0x3d')]({},_0x28aaf8,_0xdfb532[_0x3560('0x3e')]);var _0x39dfee={'where':_0x28aaf8[_0x3560('0x39')]};return db[_0x3560('0x2a')][_0x3560('0x1f')](_0x39dfee)['then'](function(_0xd2c9c){_0x5128bc['count']=_0xd2c9c;if(_0xdfb532[_0x3560('0x30')][_0x3560('0x3f')]){_0x28aaf8[_0x3560('0x40')]=[{'all':!![]}];}return db['SalesforceField'][_0x3560('0x41')](_0x28aaf8);})['then'](function(_0x4fcc6d){_0x5128bc[_0x3560('0x42')]=_0x4fcc6d;return _0x5128bc;})[_0x3560('0x24')](respondWithFilteredResult(_0x49b745,_0x28aaf8))['catch'](handleError(_0x49b745,null));};exports[_0x3560('0x43')]=function(_0x58a975,_0x4e3259){var _0x34ec47={'raw':!![],'where':{'id':_0x58a975[_0x3560('0x44')]['id']}},_0xab3742={};_0xab3742[_0x3560('0x2f')]=_[_0x3560('0x45')](db['SalesforceField'][_0x3560('0x2b')]);_0xab3742['query']=_[_0x3560('0x45')](_0x58a975[_0x3560('0x30')]);_0xab3742[_0x3560('0x31')]=_[_0x3560('0x32')](_0xab3742['model'],_0xab3742['query']);_0x34ec47[_0x3560('0x33')]=_[_0x3560('0x32')](_0xab3742['model'],qs[_0x3560('0x34')](_0x58a975[_0x3560('0x30')]['fields']));_0x34ec47[_0x3560('0x33')]=_0x34ec47[_0x3560('0x33')][_0x3560('0x35')]?_0x34ec47[_0x3560('0x33')]:_0xab3742[_0x3560('0x2f')];if(_0x58a975[_0x3560('0x30')]['includeAll']){_0x34ec47[_0x3560('0x40')]=[{'all':!![]}];}_0x34ec47=_['merge']({},_0x34ec47,_0x58a975[_0x3560('0x3e')]);return db[_0x3560('0x2a')][_0x3560('0x46')](_0x34ec47)[_0x3560('0x24')](handleEntityNotFound(_0x4e3259,null))[_0x3560('0x24')](respondWithResult(_0x4e3259,null))[_0x3560('0x47')](handleError(_0x4e3259,null));};exports[_0x3560('0x48')]=function(_0x649ddf,_0x420c45){return db[_0x3560('0x2a')][_0x3560('0x48')](_0x649ddf[_0x3560('0x49')],{})[_0x3560('0x24')](respondWithResult(_0x420c45,0xc9))['catch'](handleError(_0x420c45,null));};exports[_0x3560('0x23')]=function(_0x3a5971,_0x344d0b){if(_0x3a5971[_0x3560('0x49')]['id']){delete _0x3a5971['body']['id'];}return db[_0x3560('0x2a')][_0x3560('0x46')]({'where':{'id':_0x3a5971[_0x3560('0x44')]['id']}})[_0x3560('0x24')](handleEntityNotFound(_0x344d0b,null))['then'](saveUpdates(_0x3a5971[_0x3560('0x49')],null))[_0x3560('0x24')](respondWithResult(_0x344d0b,null))[_0x3560('0x47')](handleError(_0x344d0b,null));};exports['destroy']=function(_0x57a998,_0x1e0da6){return db[_0x3560('0x2a')]['find']({'where':{'id':_0x57a998[_0x3560('0x44')]['id']}})[_0x3560('0x24')](handleEntityNotFound(_0x1e0da6,null))[_0x3560('0x24')](removeEntity(_0x1e0da6,null))['catch'](handleError(_0x1e0da6,null));};
\ No newline at end of file
index d4963da..292fa50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd62=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','define','SalesforceField','int_salesforce_fields','lodash'];(function(_0x8abb20,_0x5dbdd0){var _0x29056c=function(_0x389fe6){while(--_0x389fe6){_0x8abb20['push'](_0x8abb20['shift']());}};_0x29056c(++_0x5dbdd0);}(_0xcd62,0x1e0));var _0x2cd6=function(_0x195d8b,_0x161164){_0x195d8b=_0x195d8b-0x0;var _0x31b6c3=_0xcd62[_0x195d8b];return _0x31b6c3;};'use strict';var _=require(_0x2cd6('0x0'));var util=require('util');var logger=require(_0x2cd6('0x1'))(_0x2cd6('0x2'));var moment=require(_0x2cd6('0x3'));var BPromise=require(_0x2cd6('0x4'));var rp=require(_0x2cd6('0x5'));var fs=require('fs');var path=require(_0x2cd6('0x6'));var rimraf=require(_0x2cd6('0x7'));var config=require(_0x2cd6('0x8'));var attributes=require(_0x2cd6('0x9'));module['exports']=function(_0x224c44,_0x52099e){return _0x224c44[_0x2cd6('0xa')](_0x2cd6('0xb'),attributes,{'tableName':_0x2cd6('0xc'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5611=['exports','define','int_salesforce_fields','salesforce_unique_index','util','moment','request-promise','rimraf','../../config/environment'];(function(_0xf6aec0,_0x51ffd6){var _0x59a51b=function(_0x57adc6){while(--_0x57adc6){_0xf6aec0['push'](_0xf6aec0['shift']());}};_0x59a51b(++_0x51ffd6);}(_0x5611,0x1b4));var _0x1561=function(_0x366a13,_0x537fd7){_0x366a13=_0x366a13-0x0;var _0x348ac1=_0x5611[_0x366a13];return _0x348ac1;};'use strict';var _=require('lodash');var util=require(_0x1561('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x1561('0x1'));var BPromise=require('bluebird');var rp=require(_0x1561('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1561('0x3'));var config=require(_0x1561('0x4'));var attributes=require('./intSalesforceField.attributes');module[_0x1561('0x5')]=function(_0x3609fd,_0x993163){return _0x3609fd[_0x1561('0x6')]('SalesforceField',attributes,{'tableName':_0x1561('0x7'),'paranoid':![],'indexes':[{'name':_0x1561('0x8'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b2e8f33..d0c0a01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5bc=['info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf5bc,0x1d2));var _0xcf5b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf5bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xcf5b('0x0'));var util=require(_0xcf5b('0x1'));var moment=require(_0xcf5b('0x2'));var BPromise=require(_0xcf5b('0x3'));var rs=require(_0xcf5b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcf5b('0x5'))['db'];var utils=require(_0xcf5b('0x6'));var logger=require(_0xcf5b('0x7'))(_0xcf5b('0x8'));var config=require(_0xcf5b('0x9'));var jayson=require(_0xcf5b('0xa'));var client=jayson[_0xcf5b('0xb')][_0xcf5b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x11bb0d,_0x185ff9,_0x3a4a08){return new BPromise(function(_0x4134e0,_0x168801){return client['request'](_0x11bb0d,_0x3a4a08)[_0xcf5b('0xd')](function(_0x1c961f){logger[_0xcf5b('0xe')](_0xcf5b('0xf'),_0x185ff9,_0xcf5b('0x10'));logger[_0xcf5b('0x11')](_0xcf5b('0x12'),_0x185ff9,_0xcf5b('0x10'),JSON[_0xcf5b('0x13')](_0x1c961f));if(_0x1c961f[_0xcf5b('0x14')]){if(_0x1c961f[_0xcf5b('0x14')][_0xcf5b('0x15')]===0x1f4){logger['error'](_0xcf5b('0xf'),_0x185ff9,_0x1c961f[_0xcf5b('0x14')][_0xcf5b('0x16')]);return _0x168801(_0x1c961f[_0xcf5b('0x14')][_0xcf5b('0x16')]);}logger['error']('SalesforceField,\x20%s,\x20%s',_0x185ff9,_0x1c961f[_0xcf5b('0x14')][_0xcf5b('0x16')]);return _0x4134e0(_0x1c961f['error'][_0xcf5b('0x16')]);}else{logger[_0xcf5b('0xe')](_0xcf5b('0xf'),_0x185ff9,_0xcf5b('0x10'));_0x4134e0(_0x1c961f[_0xcf5b('0x17')][_0xcf5b('0x16')]);}})['catch'](function(_0x441175){logger[_0xcf5b('0x14')](_0xcf5b('0xf'),_0x185ff9,_0x441175);_0x168801(_0x441175);});});}
\ No newline at end of file
+var _0xbe75=['client','http','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise'];(function(_0x41375f,_0x362c5a){var _0x330d52=function(_0x2be416){while(--_0x2be416){_0x41375f['push'](_0x41375f['shift']());}};_0x330d52(++_0x362c5a);}(_0xbe75,0x98));var _0x5be7=function(_0x2210f4,_0x5512f1){_0x2210f4=_0x2210f4-0x0;var _0x318846=_0xbe75[_0x2210f4];return _0x318846;};'use strict';var _=require(_0x5be7('0x0'));var util=require(_0x5be7('0x1'));var moment=require(_0x5be7('0x2'));var BPromise=require('bluebird');var rs=require(_0x5be7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5be7('0x4'))['db'];var utils=require(_0x5be7('0x5'));var logger=require('../../config/logger')(_0x5be7('0x6'));var config=require('../../config/environment');var jayson=require(_0x5be7('0x7'));var client=jayson[_0x5be7('0x8')][_0x5be7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x127c51,_0x3578a2,_0x144e18){return new BPromise(function(_0x4b10a9,_0x377bce){return client['request'](_0x127c51,_0x144e18)[_0x5be7('0xa')](function(_0xa8852f){logger[_0x5be7('0xb')](_0x5be7('0xc'),_0x3578a2,_0x5be7('0xd'));logger[_0x5be7('0xe')](_0x5be7('0xf'),_0x3578a2,'request\x20sent',JSON[_0x5be7('0x10')](_0xa8852f));if(_0xa8852f[_0x5be7('0x11')]){if(_0xa8852f[_0x5be7('0x11')]['code']===0x1f4){logger[_0x5be7('0x11')](_0x5be7('0xc'),_0x3578a2,_0xa8852f[_0x5be7('0x11')][_0x5be7('0x12')]);return _0x377bce(_0xa8852f[_0x5be7('0x11')][_0x5be7('0x12')]);}logger[_0x5be7('0x11')](_0x5be7('0xc'),_0x3578a2,_0xa8852f['error']['message']);return _0x4b10a9(_0xa8852f[_0x5be7('0x11')]['message']);}else{logger['info'](_0x5be7('0xc'),_0x3578a2,_0x5be7('0xd'));_0x4b10a9(_0xa8852f['result'][_0x5be7('0x12')]);}})[_0x5be7('0x13')](function(_0x365055){logger['error'](_0x5be7('0xc'),_0x3578a2,_0x365055);_0x377bce(_0x365055);});});}
\ No newline at end of file
index 03d3a08..0b5e037 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f1a=['create','post','put','/:id','update','destroy','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','/:id/configurations','getConfigurations','/:id/fields'];(function(_0x370627,_0x2ba63d){var _0x391d54=function(_0x254205){while(--_0x254205){_0x370627['push'](_0x370627['shift']());}};_0x391d54(++_0x2ba63d);}(_0x6f1a,0x1f4));var _0xa6f1=function(_0xe5545b,_0x94cbde){_0xe5545b=_0xe5545b-0x0;var _0x89705e=_0x6f1a[_0xe5545b];return _0x89705e;};'use strict';var multer=require(_0xa6f1('0x0'));var util=require('util');var path=require(_0xa6f1('0x1'));var timeout=require(_0xa6f1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa6f1('0x3'));var auth=require(_0xa6f1('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa6f1('0x5'));var controller=require(_0xa6f1('0x6'));router[_0xa6f1('0x7')]('/',auth[_0xa6f1('0x8')](),controller[_0xa6f1('0x9')]);router['get']('/:id',auth[_0xa6f1('0x8')](),controller['show']);router[_0xa6f1('0x7')](_0xa6f1('0xa'),auth[_0xa6f1('0x8')](),controller[_0xa6f1('0xb')]);router['get'](_0xa6f1('0xc'),auth[_0xa6f1('0x8')](),controller['getFields']);router['post']('/',auth[_0xa6f1('0x8')](),controller[_0xa6f1('0xd')]);router[_0xa6f1('0xe')](_0xa6f1('0xa'),auth[_0xa6f1('0x8')](),controller['addConfiguration']);router[_0xa6f1('0xf')](_0xa6f1('0x10'),auth[_0xa6f1('0x8')](),controller[_0xa6f1('0x11')]);router['delete']('/:id',auth[_0xa6f1('0x8')](),controller[_0xa6f1('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x64e6=['addConfiguration','/:id','update','delete','destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','get','index','isAuthenticated','show','/:id/configurations','getConfigurations','getFields','post','create'];(function(_0x3819c3,_0x4c5e9a){var _0x1ce0f5=function(_0x3d1251){while(--_0x3d1251){_0x3819c3['push'](_0x3819c3['shift']());}};_0x1ce0f5(++_0x4c5e9a);}(_0x64e6,0xcd));var _0x664e=function(_0x3275e2,_0x26a574){_0x3275e2=_0x3275e2-0x0;var _0xce0d78=_0x64e6[_0x3275e2];return _0xce0d78;};'use strict';var multer=require('multer');var util=require(_0x664e('0x0'));var path=require(_0x664e('0x1'));var timeout=require(_0x664e('0x2'));var express=require(_0x664e('0x3'));var router=express['Router']();var fs_extra=require(_0x664e('0x4'));var auth=require(_0x664e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intServicenowAccount.controller');router[_0x664e('0x6')]('/',auth['isAuthenticated'](),controller[_0x664e('0x7')]);router[_0x664e('0x6')]('/:id',auth[_0x664e('0x8')](),controller[_0x664e('0x9')]);router[_0x664e('0x6')](_0x664e('0xa'),auth[_0x664e('0x8')](),controller[_0x664e('0xb')]);router['get']('/:id/fields',auth[_0x664e('0x8')](),controller[_0x664e('0xc')]);router[_0x664e('0xd')]('/',auth[_0x664e('0x8')](),controller[_0x664e('0xe')]);router[_0x664e('0xd')]('/:id/configurations',auth[_0x664e('0x8')](),controller[_0x664e('0xf')]);router['put'](_0x664e('0x10'),auth['isAuthenticated'](),controller[_0x664e('0x11')]);router[_0x664e('0x12')](_0x664e('0x10'),auth['isAuthenticated'](),controller[_0x664e('0x13')]);module['exports']=router;
\ No newline at end of file
index 2ce86a2..0c5074b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89bf=['username','exports','STRING'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x89bf,0x106));var _0xf89b=function(_0x111f8c,_0x5ba8f1){_0x111f8c=_0x111f8c-0x0;var _0x3ed398=_0x89bf[_0x111f8c];return _0x3ed398;};'use strict';var Sequelize=require('sequelize');module[_0xf89b('0x0')]={'name':{'type':Sequelize[_0xf89b('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xf89b('0x1')],'unique':_0xf89b('0x2')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xf89b('0x1')]},'remoteUri':{'type':Sequelize[_0xf89b('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xf89b('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x81fd=['STRING','username','remoteUri'];(function(_0x47d91e,_0x3e5da9){var _0x1be66b=function(_0x3fd2ca){while(--_0x3fd2ca){_0x47d91e['push'](_0x47d91e['shift']());}};_0x1be66b(++_0x3e5da9);}(_0x81fd,0xed));var _0xd81f=function(_0x177223,_0x10957e){_0x177223=_0x177223-0x0;var _0x5aefae=_0x81fd[_0x177223];return _0x5aefae;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd81f('0x0')]},'description':{'type':Sequelize[_0xd81f('0x0')]},'username':{'type':Sequelize[_0xd81f('0x0')],'unique':_0xd81f('0x1')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xd81f('0x0')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xd81f('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 98456f9..45050bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6c=['ServiceNow\x20error:\x20','error','stack','test','Wrong\x20credentials','statusCode','boolean','True','true','False','false','GET','inactive','value','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','name','send','index','map','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','VIRTUAL','filter','where','ServicenowAccount','include','rows','show','params','includeAll','options','find','catch','body','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','channel','getDescriptions','create','ServicenowField','Descriptions','getFields','made_sla','subcategory','close_code','notify','incident_state','severity','category','parent','watch_list','upon_reject','sys_updated_on','child_incidents','hold_reason','approval_history','sys_updated_by','opened_by','user_input','sys_created_on','state','knowledge','calendar_stc','cmdb_ci','delivery_plan','work_notes_list','priority','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','reopened_by','problem_id','company','assigned_to','sla_due','approval','comments_and_work_notes','sys_mod_count','sys_tags','escalation','upon_approval','correlation_id','username','password','email','serverUrl','remoteUri','lastIndexOf','%s/api/now/doc/table/schema/','%s/api/now/table/','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','includes','forEach','internalType','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat'];(function(_0x573c0d,_0x3fac81){var _0x22ac7c=function(_0x5dbc59){while(--_0x5dbc59){_0x573c0d['push'](_0x573c0d['shift']());}};_0x22ac7c(++_0x3fac81);}(_0x3a6c,0xc1));var _0xc3a6=function(_0x5a4828,_0x5ad17e){_0x5a4828=_0x5a4828-0x0;var _0x12e2e0=_0x3a6c[_0x5a4828];return _0x12e2e0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc3a6('0x0'));var rp=require(_0xc3a6('0x1'));var moment=require(_0xc3a6('0x2'));var BPromise=require(_0xc3a6('0x3'));var Mustache=require('mustache');var util=require(_0xc3a6('0x4'));var path=require(_0xc3a6('0x5'));var sox=require(_0xc3a6('0x6'));var csv=require(_0xc3a6('0x7'));var ejs=require(_0xc3a6('0x8'));var fs=require('fs');var fs_extra=require(_0xc3a6('0x9'));var _=require(_0xc3a6('0xa'));var squel=require(_0xc3a6('0xb'));var crypto=require(_0xc3a6('0xc'));var jsforce=require(_0xc3a6('0xd'));var deskjs=require(_0xc3a6('0xe'));var toCsv=require(_0xc3a6('0x7'));var querystring=require('querystring');var Papa=require(_0xc3a6('0xf'));var Redis=require(_0xc3a6('0x10'));var authService=require(_0xc3a6('0x11'));var qs=require(_0xc3a6('0x12'));var as=require(_0xc3a6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc3a6('0x14'))(_0xc3a6('0x15'));var utils=require(_0xc3a6('0x16'));var config=require(_0xc3a6('0x17'));var licenseUtil=require(_0xc3a6('0x18'));var db=require(_0xc3a6('0x19'))['db'];var integrations=require(_0xc3a6('0x1a'));function respondWithStatusCode(_0x5d0dc7,_0x3db3aa){_0x3db3aa=_0x3db3aa||0xcc;return function(_0x3a9694){if(_0x3a9694){return _0x5d0dc7[_0xc3a6('0x1b')](_0x3db3aa);}return _0x5d0dc7[_0xc3a6('0x1c')](_0x3db3aa)[_0xc3a6('0x1d')]();};}function respondWithResult(_0x3e1215,_0x230e64){_0x230e64=_0x230e64||0xc8;return function(_0x2181ac){if(_0x2181ac){return _0x3e1215[_0xc3a6('0x1c')](_0x230e64)['json'](_0x2181ac);}};}function respondWithFilteredResult(_0x1b7928,_0x3434aa){return function(_0x28bc0b){if(_0x28bc0b){var _0x147f52=typeof _0x3434aa[_0xc3a6('0x1e')]===_0xc3a6('0x1f')&&typeof _0x3434aa[_0xc3a6('0x20')]===_0xc3a6('0x1f');var _0x256c58=_0x28bc0b[_0xc3a6('0x21')];var _0x9c2a67=_0x147f52?0x0:_0x3434aa[_0xc3a6('0x1e')];var _0x3cf437=_0x147f52?_0x28bc0b['count']:_0x3434aa[_0xc3a6('0x1e')]+_0x3434aa['limit'];var _0x48cb45;if(_0x3cf437>=_0x256c58){_0x3cf437=_0x256c58;_0x48cb45=0xc8;}else{_0x48cb45=0xce;}_0x1b7928['status'](_0x48cb45);return _0x1b7928['set'](_0xc3a6('0x22'),_0x9c2a67+'-'+_0x3cf437+'/'+_0x256c58)['json'](_0x28bc0b);}return null;};}function patchUpdates(_0x28d066){return function(_0x5ad787){try{jsonpatch[_0xc3a6('0x23')](_0x5ad787,_0x28d066,!![]);}catch(_0x2e1349){return BPromise[_0xc3a6('0x24')](_0x2e1349);}return _0x5ad787['save']();};}function saveUpdates(_0x2f234f,_0xb715ab){return function(_0x1f543e){if(_0x1f543e){return _0x1f543e[_0xc3a6('0x25')](_0x2f234f)[_0xc3a6('0x26')](function(_0x4758f1){return _0x4758f1;});}return null;};}function removeEntity(_0xae81c4,_0xcbbbdd){return function(_0x5b1557){if(_0x5b1557){return _0x5b1557[_0xc3a6('0x27')]()[_0xc3a6('0x26')](function(){_0xae81c4[_0xc3a6('0x1c')](0xcc)[_0xc3a6('0x1d')]();});}};}function handleEntityNotFound(_0x185155,_0x308c9f){return function(_0x5cf708){if(!_0x5cf708){_0x185155[_0xc3a6('0x1b')](0x194);}return _0x5cf708;};}function handleError(_0x414c11,_0x3d4f74){_0x3d4f74=_0x3d4f74||0x1f4;return function(_0x2b7661){logger['error'](_0x2b7661['stack']);if(_0x2b7661[_0xc3a6('0x28')]){delete _0x2b7661['name'];}_0x414c11[_0xc3a6('0x1c')](_0x3d4f74)[_0xc3a6('0x29')](_0x2b7661);};}exports[_0xc3a6('0x2a')]=function(_0x23bd7f,_0x192997){var _0x482609={},_0xb1a405={},_0x4288c4={'count':0x0,'rows':[]};var _0x3a00c5=_[_0xc3a6('0x2b')](db['ServicenowAccount']['rawAttributes'],function(_0x6a6cc8){return{'name':_0x6a6cc8['fieldName'],'type':_0x6a6cc8[_0xc3a6('0x2c')][_0xc3a6('0x2d')]};});_0xb1a405[_0xc3a6('0x2e')]=_[_0xc3a6('0x2b')](_0x3a00c5,'name');_0xb1a405['query']=_[_0xc3a6('0x2f')](_0x23bd7f[_0xc3a6('0x30')]);_0xb1a405[_0xc3a6('0x31')]=_[_0xc3a6('0x32')](_0xb1a405[_0xc3a6('0x2e')],_0xb1a405[_0xc3a6('0x30')]);_0x482609[_0xc3a6('0x33')]=_['intersection'](_0xb1a405[_0xc3a6('0x2e')],qs['fields'](_0x23bd7f[_0xc3a6('0x30')][_0xc3a6('0x34')]));_0x482609[_0xc3a6('0x33')]=_0x482609[_0xc3a6('0x33')][_0xc3a6('0x35')]?_0x482609[_0xc3a6('0x33')]:_0xb1a405[_0xc3a6('0x2e')];if(!_0x23bd7f[_0xc3a6('0x30')][_0xc3a6('0x36')](_0xc3a6('0x37'))){_0x482609[_0xc3a6('0x20')]=qs['limit'](_0x23bd7f[_0xc3a6('0x30')][_0xc3a6('0x20')]);_0x482609[_0xc3a6('0x1e')]=qs['offset'](_0x23bd7f['query'][_0xc3a6('0x1e')]);}_0x482609[_0xc3a6('0x38')]=qs[_0xc3a6('0x39')](_0x23bd7f[_0xc3a6('0x30')][_0xc3a6('0x39')]);_0x482609['where']=qs[_0xc3a6('0x31')](_[_0xc3a6('0x3a')](_0x23bd7f[_0xc3a6('0x30')],_0xb1a405['filters']),_0x3a00c5);if(_0x23bd7f[_0xc3a6('0x30')]['filter']){_0x482609['where']=_[_0xc3a6('0x3b')](_0x482609['where'],{'$or':_['map'](_0x3a00c5,function(_0x296267){if(_0x296267[_0xc3a6('0x2c')]!==_0xc3a6('0x3c')){var _0x16fca3={};_0x16fca3[_0x296267['name']]={'$like':'%'+_0x23bd7f[_0xc3a6('0x30')][_0xc3a6('0x3d')]+'%'};return _0x16fca3;}})});}_0x482609=_['merge']({},_0x482609,_0x23bd7f['options']);var _0x2441da={'where':_0x482609[_0xc3a6('0x3e')]};return db[_0xc3a6('0x3f')][_0xc3a6('0x21')](_0x2441da)[_0xc3a6('0x26')](function(_0x5cc18f){_0x4288c4['count']=_0x5cc18f;if(_0x23bd7f['query']['includeAll']){_0x482609[_0xc3a6('0x40')]=[{'all':!![]}];}return db[_0xc3a6('0x3f')]['findAll'](_0x482609);})['then'](function(_0x595f76){_0x4288c4[_0xc3a6('0x41')]=_0x595f76;return _0x4288c4;})[_0xc3a6('0x26')](respondWithFilteredResult(_0x192997,_0x482609))['catch'](handleError(_0x192997,null));};exports[_0xc3a6('0x42')]=function(_0xe79ad3,_0x60ab7b){var _0x3ce1ed={'raw':![],'where':{'id':_0xe79ad3[_0xc3a6('0x43')]['id']}},_0x4224f3={};_0x4224f3[_0xc3a6('0x2e')]=_[_0xc3a6('0x2f')](db[_0xc3a6('0x3f')]['rawAttributes']);_0x4224f3[_0xc3a6('0x30')]=_[_0xc3a6('0x2f')](_0xe79ad3[_0xc3a6('0x30')]);_0x4224f3[_0xc3a6('0x31')]=_[_0xc3a6('0x32')](_0x4224f3['model'],_0x4224f3['query']);_0x3ce1ed['attributes']=_['intersection'](_0x4224f3[_0xc3a6('0x2e')],qs[_0xc3a6('0x34')](_0xe79ad3[_0xc3a6('0x30')][_0xc3a6('0x34')]));_0x3ce1ed[_0xc3a6('0x33')]=_0x3ce1ed['attributes'][_0xc3a6('0x35')]?_0x3ce1ed[_0xc3a6('0x33')]:_0x4224f3[_0xc3a6('0x2e')];if(_0xe79ad3['query'][_0xc3a6('0x44')]){_0x3ce1ed[_0xc3a6('0x40')]=[{'all':!![]}];}_0x3ce1ed=_[_0xc3a6('0x3b')]({},_0x3ce1ed,_0xe79ad3[_0xc3a6('0x45')]);return db[_0xc3a6('0x3f')][_0xc3a6('0x46')](_0x3ce1ed)['then'](handleEntityNotFound(_0x60ab7b,null))[_0xc3a6('0x26')](respondWithResult(_0x60ab7b,null))[_0xc3a6('0x47')](handleError(_0x60ab7b,null));};exports['create']=function(_0x9040b5,_0x2a11da){return db[_0xc3a6('0x3f')]['create'](_0x9040b5[_0xc3a6('0x48')],{})[_0xc3a6('0x26')](respondWithResult(_0x2a11da,0xc9))[_0xc3a6('0x47')](handleError(_0x2a11da,null));};exports[_0xc3a6('0x25')]=function(_0x15d447,_0x3eca89){if(_0x15d447[_0xc3a6('0x48')]['id']){delete _0x15d447[_0xc3a6('0x48')]['id'];}return db[_0xc3a6('0x3f')][_0xc3a6('0x46')]({'where':{'id':_0x15d447[_0xc3a6('0x43')]['id']}})[_0xc3a6('0x26')](handleEntityNotFound(_0x3eca89,null))[_0xc3a6('0x26')](saveUpdates(_0x15d447[_0xc3a6('0x48')],null))[_0xc3a6('0x26')](respondWithResult(_0x3eca89,null))[_0xc3a6('0x47')](handleError(_0x3eca89,null));};exports[_0xc3a6('0x27')]=function(_0x211737,_0x3ab5ac){return db[_0xc3a6('0x3f')]['find']({'where':{'id':_0x211737[_0xc3a6('0x43')]['id']}})[_0xc3a6('0x26')](handleEntityNotFound(_0x3ab5ac,null))[_0xc3a6('0x26')](removeEntity(_0x3ab5ac,null))[_0xc3a6('0x47')](handleError(_0x3ab5ac,null));};exports[_0xc3a6('0x49')]=function(_0x527c22,_0x321c43,_0x3277b5){var _0x303692={};var _0x1aa85e={};var _0x37d290;var _0x19bd7e;return db[_0xc3a6('0x3f')][_0xc3a6('0x4a')]({'where':{'id':_0x527c22[_0xc3a6('0x43')]['id']}})['then'](handleEntityNotFound(_0x321c43,null))[_0xc3a6('0x26')](function(_0x1d1435){if(_0x1d1435){_0x37d290=_0x1d1435;_0x1aa85e[_0xc3a6('0x2e')]=_[_0xc3a6('0x2f')](db[_0xc3a6('0x4b')]['rawAttributes']);_0x1aa85e['query']=_[_0xc3a6('0x2f')](_0x527c22[_0xc3a6('0x30')]);_0x1aa85e[_0xc3a6('0x31')]=_[_0xc3a6('0x32')](_0x1aa85e[_0xc3a6('0x2e')],_0x1aa85e[_0xc3a6('0x30')]);_0x303692['attributes']=_['intersection'](_0x1aa85e['model'],qs[_0xc3a6('0x34')](_0x527c22[_0xc3a6('0x30')][_0xc3a6('0x34')]));_0x303692['attributes']=_0x303692[_0xc3a6('0x33')]['length']?_0x303692[_0xc3a6('0x33')]:_0x1aa85e[_0xc3a6('0x2e')];_0x303692[_0xc3a6('0x38')]=qs[_0xc3a6('0x39')](_0x527c22[_0xc3a6('0x30')][_0xc3a6('0x39')]);_0x303692[_0xc3a6('0x3e')]=qs[_0xc3a6('0x31')](_[_0xc3a6('0x3a')](_0x527c22[_0xc3a6('0x30')],_0x1aa85e[_0xc3a6('0x31')]));if(_0x527c22[_0xc3a6('0x30')][_0xc3a6('0x3d')]){_0x303692[_0xc3a6('0x3e')]=_[_0xc3a6('0x3b')](_0x303692[_0xc3a6('0x3e')],{'$or':_['map'](_0x303692[_0xc3a6('0x33')],function(_0x23cd34){var _0x58d2d0={};_0x58d2d0[_0x23cd34]={'$like':'%'+_0x527c22['query']['filter']+'%'};return _0x58d2d0;})});}_0x303692=_[_0xc3a6('0x3b')]({},_0x303692,_0x527c22['options']);return _0x37d290[_0xc3a6('0x49')](_0x303692);}})['then'](function(_0x4ca9c5){if(_0x4ca9c5){_0x19bd7e=_0x4ca9c5[_0xc3a6('0x35')];if(!_0x527c22[_0xc3a6('0x30')][_0xc3a6('0x36')](_0xc3a6('0x37'))){_0x303692[_0xc3a6('0x20')]=qs[_0xc3a6('0x20')](_0x527c22['query'][_0xc3a6('0x20')]);_0x303692[_0xc3a6('0x1e')]=qs[_0xc3a6('0x1e')](_0x527c22[_0xc3a6('0x30')][_0xc3a6('0x1e')]);}return _0x37d290[_0xc3a6('0x49')](_0x303692);}})[_0xc3a6('0x26')](function(_0x157887){if(_0x157887){return _0x157887?{'count':_0x19bd7e,'rows':_0x157887}:null;}})[_0xc3a6('0x26')](respondWithResult(_0x321c43,null))['catch'](handleError(_0x321c43,null));};exports[_0xc3a6('0x4c')]=function(_0x306142,_0x5b8d27,_0x459bec){if(_0x306142[_0xc3a6('0x48')]['id']){delete _0x306142[_0xc3a6('0x48')]['id'];}return db[_0xc3a6('0x3f')][_0xc3a6('0x4a')]({'where':{'id':_0x306142[_0xc3a6('0x43')]['id']}})['then'](handleEntityNotFound(_0x5b8d27,null))[_0xc3a6('0x26')](function(_0x12a571){if(_0x12a571){_0x306142[_0xc3a6('0x48')][_0xc3a6('0x4d')]=_0x12a571['id'];_0x306142[_0xc3a6('0x48')][_0xc3a6('0x4e')]=integrations['getSubjects'](_0x306142[_0xc3a6('0x48')][_0xc3a6('0x4f')],_0x306142[_0xc3a6('0x48')][_0xc3a6('0x2c')]);_0x306142[_0xc3a6('0x48')]['Descriptions']=integrations[_0xc3a6('0x50')](_0x306142['body'][_0xc3a6('0x4f')],_0x306142[_0xc3a6('0x48')][_0xc3a6('0x2c')]);return db['ServicenowConfiguration'][_0xc3a6('0x51')](_0x306142['body'],{'include':[{'model':db['ServicenowField'],'as':'Subjects'},{'model':db[_0xc3a6('0x52')],'as':_0xc3a6('0x53')}]});}return null;})[_0xc3a6('0x26')](respondWithResult(_0x5b8d27,null))['catch'](handleError(_0x5b8d27,null));};exports[_0xc3a6('0x54')]=function(_0x775cc8,_0x49ca08,_0x55329e){var _0x27d8a3=[_0xc3a6('0x55'),'hold_reason','knowledge',_0xc3a6('0x56'),_0xc3a6('0x57'),_0xc3a6('0x58'),_0xc3a6('0x59'),_0xc3a6('0x5a'),_0xc3a6('0x5b')];var _0x8af77c=[_0xc3a6('0x5c'),_0xc3a6('0x55'),'caused_by',_0xc3a6('0x5d'),_0xc3a6('0x5e'),_0xc3a6('0x5f'),_0xc3a6('0x60'),_0xc3a6('0x61'),_0xc3a6('0x62'),'number','resolved_by',_0xc3a6('0x63'),_0xc3a6('0x64'),_0xc3a6('0x65'),_0xc3a6('0x66'),'sys_domain',_0xc3a6('0x67'),'sys_created_by',_0xc3a6('0x68'),_0xc3a6('0x38'),_0xc3a6('0x69'),'closed_at',_0xc3a6('0x6a'),_0xc3a6('0x6b'),'impact','active',_0xc3a6('0x6c'),'business_service',_0xc3a6('0x6d'),'sys_domain_path','rfc',_0xc3a6('0x6e'),_0xc3a6('0x6f'),_0xc3a6('0x70'),_0xc3a6('0x71'),_0xc3a6('0x72'),_0xc3a6('0x73'),_0xc3a6('0x74'),'resolved_at','caller_id',_0xc3a6('0x75'),_0xc3a6('0x56'),_0xc3a6('0x76'),_0xc3a6('0x77'),_0xc3a6('0x57'),_0xc3a6('0x78'),_0xc3a6('0x79'),_0xc3a6('0x7a'),_0xc3a6('0x7b'),'business_stc',_0xc3a6('0x7c'),'description',_0xc3a6('0x7d'),_0xc3a6('0x58'),_0xc3a6('0x7e'),_0xc3a6('0x7f'),_0xc3a6('0x80'),_0xc3a6('0x81'),_0xc3a6('0x82'),'sys_id','contact_type',_0xc3a6('0x83'),_0xc3a6('0x59'),'urgency',_0xc3a6('0x84'),_0xc3a6('0x85'),'reassignment_count','activity_due',_0xc3a6('0x86'),_0xc3a6('0x5a'),'comments',_0xc3a6('0x87'),_0xc3a6('0x88'),_0xc3a6('0x89'),'due_date',_0xc3a6('0x8a'),'reopen_count',_0xc3a6('0x8b'),_0xc3a6('0x8c'),_0xc3a6('0x8d'),_0xc3a6('0x8e'),'location',_0xc3a6('0x5b')];var _0x192d05='';var _0x45abee='';var _0x48ca52=[];var _0x117197='';var _0x2622ca='';var _0x3dcc36=[];var _0x59abd2='';var _0xbaee26='';var _0x819da1={};var _0x4e19f8='';return db[_0xc3a6('0x3f')][_0xc3a6('0x4a')]({'where':{'id':_0x775cc8[_0xc3a6('0x43')]['id']},'attributes':['id',_0xc3a6('0x8f'),_0xc3a6('0x90'),_0xc3a6('0x91'),'remoteUri',_0xc3a6('0x92')]})[_0xc3a6('0x26')](handleEntityNotFound(_0x49ca08,null))[_0xc3a6('0x26')](function(_0x2d7196){if(_0x2d7196){_0x4e19f8=_0x2d7196[_0xc3a6('0x93')];var _0x30d49d=_0x4e19f8['slice'](-0x1);if(_0x30d49d==='/'){_0x4e19f8=_0x4e19f8['substring'](0x0,_0x4e19f8[_0xc3a6('0x94')](_0x30d49d));}_0xbaee26=util['format'](_0xc3a6('0x95'),_0x4e19f8);_0x59abd2=util['format'](_0xc3a6('0x96'),_0x4e19f8);_0x819da1={'user':_0x2d7196[_0xc3a6('0x8f')],'pass':_0x2d7196['password']};var _0x385e29={'method':'GET','uri':_0xbaee26+_0xc3a6('0x97'),'auth':_0x819da1,'json':!![]};return rp(_0x385e29);}})[_0xc3a6('0x26')](function(_0x4ca4ea){if(_0x4ca4ea[_0xc3a6('0x98')][_0xc3a6('0x35')]>0x0){_0x192d05=_0x4ca4ea[_0xc3a6('0x98')];}console[_0xc3a6('0x99')](_0xc3a6('0x9a'),_0x192d05);_0x3dcc36=[];_0x45abee=Object[_0xc3a6('0x9b')]([],_0x192d05);_['remove'](_0x45abee,function(_0x24b3d2){return!_0x27d8a3[_0xc3a6('0x9c')](_0x24b3d2[_0xc3a6('0x28')]);});_0x45abee[_0xc3a6('0x9d')](function(_0x27b263){var _0x408079=createFieldObject(_0x59abd2,_0x819da1,_0x27b263[_0xc3a6('0x9e')],_0x27b263[_0xc3a6('0x28')],_0x27b263[_0xc3a6('0x9f')],![]);_0x3dcc36[_0xc3a6('0xa0')](_0x408079);});return Promise[_0xc3a6('0xa1')](_0x3dcc36);})['then'](function(_0x1af4e4){_0x48ca52=_0x1af4e4;_0x117197=Object[_0xc3a6('0x9b')]([],_0x192d05);console[_0xc3a6('0x99')](_0xc3a6('0xa2'),_0x192d05);_['remove'](_0x117197,function(_0x46b4c8){return _0x8af77c[_0xc3a6('0x9c')](_0x46b4c8[_0xc3a6('0x28')]);});console['log'](_0xc3a6('0xa3'),_0x117197);_0x3dcc36=[];_0x117197[_0xc3a6('0x9d')](function(_0x35b706){var _0x3ae8dd=createFieldObject(_0x59abd2,_0x819da1,_0x35b706['internalType'],_0x35b706[_0xc3a6('0x28')],_0x35b706[_0xc3a6('0x9f')],!![]);_0x3dcc36[_0xc3a6('0xa0')](_0x3ae8dd);});return Promise[_0xc3a6('0xa1')](_0x3dcc36);})[_0xc3a6('0x26')](function(_0xdb1cf9){_0x2622ca=_0xdb1cf9;var _0x299199=_0x48ca52[_0xc3a6('0xa4')](_0x2622ca);return{'count':_0x299199['length'],'rows':_0x299199};})['then'](respondWithResult(_0x49ca08,null))[_0xc3a6('0x47')](function(_0x84b44e){console['log'](_0xc3a6('0xa5')+_0x84b44e);var _0x1d781b=_0x775cc8['query']['test']?0x1f4:_0x84b44e['statusCode']||0x1f4;logger[_0xc3a6('0xa6')](_0x84b44e[_0xc3a6('0xa7')]);delete _0x84b44e[_0xc3a6('0x28')];if(_0x1d781b===0x191){_0x1d781b=0x190;}_0x49ca08['status'](_0x1d781b)[_0xc3a6('0x29')](_0x775cc8['query'][_0xc3a6('0xa8')]?{'message':_0xc3a6('0xa9'),'statusCode':_0x84b44e[_0xc3a6('0xaa')]}:_0x84b44e);});};function createFieldObject(_0xfbd51,_0x346d5c,_0x58e529,_0xa0f71e,_0x121864,_0x3d2db6){return new Promise(function(_0x20df19,_0x184622){var _0x1fb132={'id':_0xa0f71e,'name':_0x121864,'custom':_0x3d2db6};if(_0x58e529===_0xc3a6('0xab')){_0x1fb132[_0xc3a6('0x45')]=[{'name':_0xc3a6('0xac'),'value':_0xc3a6('0xad')},{'name':_0xc3a6('0xae'),'value':_0xc3a6('0xaf')}];_0x20df19(_0x1fb132);}else{var _0x5b38c={'method':_0xc3a6('0xb0'),'uri':_0xfbd51+'sys_choice?sysparm_query=name=incident^element='+_0xa0f71e,'auth':_0x346d5c,'json':!![]};return rp(_0x5b38c)[_0xc3a6('0x26')](function(_0x8d3ea6){var _0x527601=[];if(_0x8d3ea6[_0xc3a6('0x98')][_0xc3a6('0x35')]>0x0){_0x8d3ea6[_0xc3a6('0x98')]['forEach'](function(_0x3a9156){if(_0x3a9156[_0xc3a6('0xb1')]===_0xc3a6('0xaf')){var _0x16ca26={'name':_0x3a9156[_0xc3a6('0x9f')],'value':_0x3a9156[_0xc3a6('0xb2')]};_0x527601[_0xc3a6('0xa0')](_0x16ca26);}});}_0x1fb132[_0xc3a6('0x45')]=_0x527601;if(_0x1fb132[_0xc3a6('0x45')][_0xc3a6('0x35')]>0x0){_0x20df19(_0x1fb132);}else{if(_0x3d2db6==![]){_0x20df19();}else{_0x20df19(_0x1fb132);}}});}});}
\ No newline at end of file
+var _0x050f=['update','then','error','stack','name','send','index','map','ServicenowAccount','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','include','find','create','body','params','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','getSubjects','channel','Subjects','ServicenowField','Descriptions','getFields','made_sla','hold_reason','subcategory','notify','category','parent','watch_list','sys_updated_on','child_incidents','approval_history','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','sys_created_by','knowledge','calendar_stc','cmdb_ci','delivery_plan','active','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','opened_at','business_duration','work_end','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','close_code','correlation_display','delivery_task','work_start','business_stc','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','contact_type','reopened_by','incident_state','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','remoteUri','serverUrl','substring','lastIndexOf','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','assign','remove','includes','forEach','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','internalType','ServiceNow\x20error:\x20','statusCode','test','Wrong\x20credentials','boolean','True','true','false','inactive','value','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','save'];(function(_0x47b2ae,_0xe2b899){var _0x59aa34=function(_0x26e08d){while(--_0x26e08d){_0x47b2ae['push'](_0x47b2ae['shift']());}};_0x59aa34(++_0xe2b899);}(_0x050f,0x14a));var _0xf050=function(_0x393381,_0x48f453){_0x393381=_0x393381-0x0;var _0x4e1985=_0x050f[_0x393381];return _0x4e1985;};'use strict';var emlformat=require(_0xf050('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf050('0x1'));var jsonpatch=require(_0xf050('0x2'));var rp=require('request-promise');var moment=require(_0xf050('0x3'));var BPromise=require(_0xf050('0x4'));var Mustache=require('mustache');var util=require(_0xf050('0x5'));var path=require(_0xf050('0x6'));var sox=require(_0xf050('0x7'));var csv=require(_0xf050('0x8'));var ejs=require(_0xf050('0x9'));var fs=require('fs');var fs_extra=require(_0xf050('0xa'));var _=require(_0xf050('0xb'));var squel=require(_0xf050('0xc'));var crypto=require(_0xf050('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf050('0xe'));var toCsv=require(_0xf050('0x8'));var querystring=require('querystring');var Papa=require(_0xf050('0xf'));var Redis=require(_0xf050('0x10'));var authService=require(_0xf050('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xf050('0x12'));var hardwareService=require(_0xf050('0x13'));var logger=require(_0xf050('0x14'))(_0xf050('0x15'));var utils=require(_0xf050('0x16'));var config=require(_0xf050('0x17'));var licenseUtil=require(_0xf050('0x18'));var db=require(_0xf050('0x19'))['db'];var integrations=require(_0xf050('0x1a'));function respondWithStatusCode(_0x15c038,_0xe41732){_0xe41732=_0xe41732||0xcc;return function(_0xe6d10){if(_0xe6d10){return _0x15c038[_0xf050('0x1b')](_0xe41732);}return _0x15c038['status'](_0xe41732)[_0xf050('0x1c')]();};}function respondWithResult(_0x52aaae,_0x2f5ded){_0x2f5ded=_0x2f5ded||0xc8;return function(_0xcc8644){if(_0xcc8644){return _0x52aaae[_0xf050('0x1d')](_0x2f5ded)[_0xf050('0x1e')](_0xcc8644);}};}function respondWithFilteredResult(_0x16a5d9,_0xd8a746){return function(_0x8946ca){if(_0x8946ca){var _0x81b963=typeof _0xd8a746[_0xf050('0x1f')]===_0xf050('0x20')&&typeof _0xd8a746[_0xf050('0x21')]===_0xf050('0x20');var _0x503822=_0x8946ca[_0xf050('0x22')];var _0x1a44d0=_0x81b963?0x0:_0xd8a746['offset'];var _0x1f87e5=_0x81b963?_0x8946ca['count']:_0xd8a746[_0xf050('0x1f')]+_0xd8a746[_0xf050('0x21')];var _0xb414c9;if(_0x1f87e5>=_0x503822){_0x1f87e5=_0x503822;_0xb414c9=0xc8;}else{_0xb414c9=0xce;}_0x16a5d9[_0xf050('0x1d')](_0xb414c9);return _0x16a5d9[_0xf050('0x23')]('Content-Range',_0x1a44d0+'-'+_0x1f87e5+'/'+_0x503822)[_0xf050('0x1e')](_0x8946ca);}return null;};}function patchUpdates(_0x9cb35e){return function(_0x534eba){try{jsonpatch['apply'](_0x534eba,_0x9cb35e,!![]);}catch(_0x15e19b){return BPromise[_0xf050('0x24')](_0x15e19b);}return _0x534eba[_0xf050('0x25')]();};}function saveUpdates(_0x13a3e1,_0x508bd8){return function(_0x9edf72){if(_0x9edf72){return _0x9edf72[_0xf050('0x26')](_0x13a3e1)[_0xf050('0x27')](function(_0x1b1871){return _0x1b1871;});}return null;};}function removeEntity(_0x56a556,_0x5ef06d){return function(_0x1cef5d){if(_0x1cef5d){return _0x1cef5d['destroy']()['then'](function(){_0x56a556[_0xf050('0x1d')](0xcc)[_0xf050('0x1c')]();});}};}function handleEntityNotFound(_0x5561ff,_0xe2bbe3){return function(_0x1ab76a){if(!_0x1ab76a){_0x5561ff['sendStatus'](0x194);}return _0x1ab76a;};}function handleError(_0x40e484,_0x18939d){_0x18939d=_0x18939d||0x1f4;return function(_0x26ebc6){logger[_0xf050('0x28')](_0x26ebc6[_0xf050('0x29')]);if(_0x26ebc6[_0xf050('0x2a')]){delete _0x26ebc6[_0xf050('0x2a')];}_0x40e484[_0xf050('0x1d')](_0x18939d)[_0xf050('0x2b')](_0x26ebc6);};}exports[_0xf050('0x2c')]=function(_0x2fcdbf,_0x126ad6){var _0x519142={},_0x106e41={},_0x227285={'count':0x0,'rows':[]};var _0x204090=_[_0xf050('0x2d')](db[_0xf050('0x2e')][_0xf050('0x2f')],function(_0x6c5ebf){return{'name':_0x6c5ebf['fieldName'],'type':_0x6c5ebf[_0xf050('0x30')]['key']};});_0x106e41['model']=_['map'](_0x204090,_0xf050('0x2a'));_0x106e41[_0xf050('0x31')]=_[_0xf050('0x32')](_0x2fcdbf[_0xf050('0x31')]);_0x106e41[_0xf050('0x33')]=_[_0xf050('0x34')](_0x106e41[_0xf050('0x35')],_0x106e41[_0xf050('0x31')]);_0x519142[_0xf050('0x36')]=_['intersection'](_0x106e41[_0xf050('0x35')],qs[_0xf050('0x37')](_0x2fcdbf[_0xf050('0x31')][_0xf050('0x37')]));_0x519142[_0xf050('0x36')]=_0x519142[_0xf050('0x36')][_0xf050('0x38')]?_0x519142[_0xf050('0x36')]:_0x106e41[_0xf050('0x35')];if(!_0x2fcdbf['query'][_0xf050('0x39')](_0xf050('0x3a'))){_0x519142[_0xf050('0x21')]=qs[_0xf050('0x21')](_0x2fcdbf[_0xf050('0x31')]['limit']);_0x519142['offset']=qs[_0xf050('0x1f')](_0x2fcdbf[_0xf050('0x31')][_0xf050('0x1f')]);}_0x519142[_0xf050('0x3b')]=qs[_0xf050('0x3c')](_0x2fcdbf[_0xf050('0x31')][_0xf050('0x3c')]);_0x519142[_0xf050('0x3d')]=qs[_0xf050('0x33')](_[_0xf050('0x3e')](_0x2fcdbf['query'],_0x106e41[_0xf050('0x33')]),_0x204090);if(_0x2fcdbf[_0xf050('0x31')][_0xf050('0x3f')]){_0x519142[_0xf050('0x3d')]=_['merge'](_0x519142['where'],{'$or':_[_0xf050('0x2d')](_0x204090,function(_0x57dd03){if(_0x57dd03[_0xf050('0x30')]!=='VIRTUAL'){var _0x4afe57={};_0x4afe57[_0x57dd03[_0xf050('0x2a')]]={'$like':'%'+_0x2fcdbf[_0xf050('0x31')][_0xf050('0x3f')]+'%'};return _0x4afe57;}})});}_0x519142=_[_0xf050('0x40')]({},_0x519142,_0x2fcdbf[_0xf050('0x41')]);var _0x370e7c={'where':_0x519142[_0xf050('0x3d')]};return db[_0xf050('0x2e')][_0xf050('0x22')](_0x370e7c)[_0xf050('0x27')](function(_0x598fcc){_0x227285[_0xf050('0x22')]=_0x598fcc;if(_0x2fcdbf[_0xf050('0x31')][_0xf050('0x42')]){_0x519142['include']=[{'all':!![]}];}return db[_0xf050('0x2e')][_0xf050('0x43')](_0x519142);})[_0xf050('0x27')](function(_0x87d293){_0x227285[_0xf050('0x44')]=_0x87d293;return _0x227285;})[_0xf050('0x27')](respondWithFilteredResult(_0x126ad6,_0x519142))[_0xf050('0x45')](handleError(_0x126ad6,null));};exports[_0xf050('0x46')]=function(_0x1f685c,_0x36de09){var _0x26e3c8={'raw':![],'where':{'id':_0x1f685c['params']['id']}},_0x1b9b94={};_0x1b9b94[_0xf050('0x35')]=_[_0xf050('0x32')](db[_0xf050('0x2e')][_0xf050('0x2f')]);_0x1b9b94['query']=_[_0xf050('0x32')](_0x1f685c[_0xf050('0x31')]);_0x1b9b94[_0xf050('0x33')]=_[_0xf050('0x34')](_0x1b9b94[_0xf050('0x35')],_0x1b9b94[_0xf050('0x31')]);_0x26e3c8[_0xf050('0x36')]=_[_0xf050('0x34')](_0x1b9b94[_0xf050('0x35')],qs['fields'](_0x1f685c[_0xf050('0x31')][_0xf050('0x37')]));_0x26e3c8[_0xf050('0x36')]=_0x26e3c8[_0xf050('0x36')][_0xf050('0x38')]?_0x26e3c8[_0xf050('0x36')]:_0x1b9b94[_0xf050('0x35')];if(_0x1f685c[_0xf050('0x31')][_0xf050('0x42')]){_0x26e3c8[_0xf050('0x47')]=[{'all':!![]}];}_0x26e3c8=_['merge']({},_0x26e3c8,_0x1f685c[_0xf050('0x41')]);return db[_0xf050('0x2e')][_0xf050('0x48')](_0x26e3c8)['then'](handleEntityNotFound(_0x36de09,null))[_0xf050('0x27')](respondWithResult(_0x36de09,null))[_0xf050('0x45')](handleError(_0x36de09,null));};exports[_0xf050('0x49')]=function(_0x53ac31,_0x1fc4dd){return db['ServicenowAccount']['create'](_0x53ac31[_0xf050('0x4a')],{})[_0xf050('0x27')](respondWithResult(_0x1fc4dd,0xc9))[_0xf050('0x45')](handleError(_0x1fc4dd,null));};exports[_0xf050('0x26')]=function(_0x28eb3c,_0x34d205){if(_0x28eb3c['body']['id']){delete _0x28eb3c[_0xf050('0x4a')]['id'];}return db[_0xf050('0x2e')][_0xf050('0x48')]({'where':{'id':_0x28eb3c['params']['id']}})[_0xf050('0x27')](handleEntityNotFound(_0x34d205,null))[_0xf050('0x27')](saveUpdates(_0x28eb3c[_0xf050('0x4a')],null))[_0xf050('0x27')](respondWithResult(_0x34d205,null))[_0xf050('0x45')](handleError(_0x34d205,null));};exports['destroy']=function(_0x30582b,_0x20ed9a){return db[_0xf050('0x2e')]['find']({'where':{'id':_0x30582b[_0xf050('0x4b')]['id']}})[_0xf050('0x27')](handleEntityNotFound(_0x20ed9a,null))[_0xf050('0x27')](removeEntity(_0x20ed9a,null))[_0xf050('0x45')](handleError(_0x20ed9a,null));};exports[_0xf050('0x4c')]=function(_0x1f7a9e,_0xacbb64,_0x141b22){var _0x533610={};var _0x552c8={};var _0x27db1e;var _0xd6c75f;return db[_0xf050('0x2e')][_0xf050('0x4d')]({'where':{'id':_0x1f7a9e[_0xf050('0x4b')]['id']}})[_0xf050('0x27')](handleEntityNotFound(_0xacbb64,null))[_0xf050('0x27')](function(_0x5e7461){if(_0x5e7461){_0x27db1e=_0x5e7461;_0x552c8[_0xf050('0x35')]=_[_0xf050('0x32')](db[_0xf050('0x4e')][_0xf050('0x2f')]);_0x552c8[_0xf050('0x31')]=_[_0xf050('0x32')](_0x1f7a9e[_0xf050('0x31')]);_0x552c8[_0xf050('0x33')]=_[_0xf050('0x34')](_0x552c8['model'],_0x552c8[_0xf050('0x31')]);_0x533610['attributes']=_[_0xf050('0x34')](_0x552c8['model'],qs['fields'](_0x1f7a9e['query']['fields']));_0x533610[_0xf050('0x36')]=_0x533610[_0xf050('0x36')][_0xf050('0x38')]?_0x533610[_0xf050('0x36')]:_0x552c8[_0xf050('0x35')];_0x533610['order']=qs[_0xf050('0x3c')](_0x1f7a9e[_0xf050('0x31')]['sort']);_0x533610['where']=qs[_0xf050('0x33')](_['pick'](_0x1f7a9e[_0xf050('0x31')],_0x552c8[_0xf050('0x33')]));if(_0x1f7a9e['query'][_0xf050('0x3f')]){_0x533610['where']=_[_0xf050('0x40')](_0x533610[_0xf050('0x3d')],{'$or':_['map'](_0x533610['attributes'],function(_0x12ae07){var _0x3ddce2={};_0x3ddce2[_0x12ae07]={'$like':'%'+_0x1f7a9e[_0xf050('0x31')][_0xf050('0x3f')]+'%'};return _0x3ddce2;})});}_0x533610=_[_0xf050('0x40')]({},_0x533610,_0x1f7a9e['options']);return _0x27db1e['getConfigurations'](_0x533610);}})[_0xf050('0x27')](function(_0x4fcd8c){if(_0x4fcd8c){_0xd6c75f=_0x4fcd8c[_0xf050('0x38')];if(!_0x1f7a9e[_0xf050('0x31')][_0xf050('0x39')]('nolimit')){_0x533610['limit']=qs[_0xf050('0x21')](_0x1f7a9e[_0xf050('0x31')][_0xf050('0x21')]);_0x533610[_0xf050('0x1f')]=qs[_0xf050('0x1f')](_0x1f7a9e[_0xf050('0x31')][_0xf050('0x1f')]);}return _0x27db1e['getConfigurations'](_0x533610);}})[_0xf050('0x27')](function(_0x2e1eb3){if(_0x2e1eb3){return _0x2e1eb3?{'count':_0xd6c75f,'rows':_0x2e1eb3}:null;}})[_0xf050('0x27')](respondWithResult(_0xacbb64,null))['catch'](handleError(_0xacbb64,null));};exports[_0xf050('0x4f')]=function(_0x3e9dd3,_0x21f402,_0x1b3639){if(_0x3e9dd3[_0xf050('0x4a')]['id']){delete _0x3e9dd3['body']['id'];}return db[_0xf050('0x2e')]['findOne']({'where':{'id':_0x3e9dd3[_0xf050('0x4b')]['id']}})[_0xf050('0x27')](handleEntityNotFound(_0x21f402,null))[_0xf050('0x27')](function(_0xd6de79){if(_0xd6de79){_0x3e9dd3[_0xf050('0x4a')]['AccountId']=_0xd6de79['id'];_0x3e9dd3['body']['Subjects']=integrations[_0xf050('0x50')](_0x3e9dd3[_0xf050('0x4a')][_0xf050('0x51')],_0x3e9dd3[_0xf050('0x4a')]['type']);_0x3e9dd3[_0xf050('0x4a')]['Descriptions']=integrations['getDescriptions'](_0x3e9dd3[_0xf050('0x4a')][_0xf050('0x51')],_0x3e9dd3['body']['type']);return db[_0xf050('0x4e')][_0xf050('0x49')](_0x3e9dd3[_0xf050('0x4a')],{'include':[{'model':db['ServicenowField'],'as':_0xf050('0x52')},{'model':db[_0xf050('0x53')],'as':_0xf050('0x54')}]});}return null;})[_0xf050('0x27')](respondWithResult(_0x21f402,null))[_0xf050('0x45')](handleError(_0x21f402,null));};exports[_0xf050('0x55')]=function(_0x1475e6,_0x17f57b,_0x1d47c8){var _0x4dd5bd=[_0xf050('0x56'),_0xf050('0x57'),'knowledge',_0xf050('0x58'),'close_code',_0xf050('0x59'),'incident_state','severity',_0xf050('0x5a')];var _0xbbb915=[_0xf050('0x5b'),_0xf050('0x56'),'caused_by',_0xf050('0x5c'),'upon_reject',_0xf050('0x5d'),_0xf050('0x5e'),_0xf050('0x57'),_0xf050('0x5f'),'number','resolved_by',_0xf050('0x60'),_0xf050('0x61'),_0xf050('0x62'),_0xf050('0x63'),_0xf050('0x64'),'state',_0xf050('0x65'),_0xf050('0x66'),_0xf050('0x3b'),_0xf050('0x67'),'closed_at',_0xf050('0x68'),_0xf050('0x69'),'impact',_0xf050('0x6a'),_0xf050('0x6b'),_0xf050('0x6c'),_0xf050('0x6d'),_0xf050('0x6e'),_0xf050('0x6f'),_0xf050('0x70'),'expected_start',_0xf050('0x71'),_0xf050('0x72'),'group_list',_0xf050('0x73'),_0xf050('0x74'),_0xf050('0x75'),_0xf050('0x76'),_0xf050('0x77'),'subcategory',_0xf050('0x78'),_0xf050('0x79'),_0xf050('0x7a'),_0xf050('0x7b'),_0xf050('0x7c'),_0xf050('0x7d'),'assignment_group',_0xf050('0x7e'),'additional_assignee_list','description',_0xf050('0x7f'),'notify',_0xf050('0x80'),_0xf050('0x81'),_0xf050('0x82'),_0xf050('0x83'),_0xf050('0x84'),'sys_id',_0xf050('0x85'),_0xf050('0x86'),_0xf050('0x87'),'urgency',_0xf050('0x88'),_0xf050('0x89'),_0xf050('0x8a'),_0xf050('0x8b'),_0xf050('0x8c'),'severity',_0xf050('0x8d'),_0xf050('0x8e'),_0xf050('0x8f'),_0xf050('0x90'),'due_date',_0xf050('0x91'),_0xf050('0x92'),_0xf050('0x93'),_0xf050('0x94'),_0xf050('0x95'),_0xf050('0x96'),_0xf050('0x97'),_0xf050('0x5a')];var _0x3f2e74='';var _0x1628aa='';var _0x392a72=[];var _0x25b2a5='';var _0x582cc7='';var _0x3a25a3=[];var _0xebcd00='';var _0x1050c0='';var _0x5249e8={};var _0x27acf1='';return db[_0xf050('0x2e')][_0xf050('0x4d')]({'where':{'id':_0x1475e6['params']['id']},'attributes':['id',_0xf050('0x98'),_0xf050('0x99'),'email',_0xf050('0x9a'),_0xf050('0x9b')]})[_0xf050('0x27')](handleEntityNotFound(_0x17f57b,null))[_0xf050('0x27')](function(_0x395674){if(_0x395674){_0x27acf1=_0x395674['remoteUri'];var _0x3aa46d=_0x27acf1['slice'](-0x1);if(_0x3aa46d==='/'){_0x27acf1=_0x27acf1[_0xf050('0x9c')](0x0,_0x27acf1[_0xf050('0x9d')](_0x3aa46d));}_0x1050c0=util[_0xf050('0x9e')]('%s/api/now/doc/table/schema/',_0x27acf1);_0xebcd00=util[_0xf050('0x9e')](_0xf050('0x9f'),_0x27acf1);_0x5249e8={'user':_0x395674[_0xf050('0x98')],'pass':_0x395674[_0xf050('0x99')]};var _0x4fb5de={'method':_0xf050('0xa0'),'uri':_0x1050c0+_0xf050('0xa1'),'auth':_0x5249e8,'json':!![]};return rp(_0x4fb5de);}})[_0xf050('0x27')](function(_0x392f15){if(_0x392f15[_0xf050('0xa2')]['length']>0x0){_0x3f2e74=_0x392f15[_0xf050('0xa2')];}console[_0xf050('0xa3')]('incident\x20table\x20objects',_0x3f2e74);_0x3a25a3=[];_0x1628aa=Object[_0xf050('0xa4')]([],_0x3f2e74);_[_0xf050('0xa5')](_0x1628aa,function(_0x57b12c){return!_0x4dd5bd[_0xf050('0xa6')](_0x57b12c[_0xf050('0x2a')]);});_0x1628aa[_0xf050('0xa7')](function(_0x12334){var _0x12b6c2=createFieldObject(_0xebcd00,_0x5249e8,_0x12334['internalType'],_0x12334[_0xf050('0x2a')],_0x12334[_0xf050('0xa8')],![]);_0x3a25a3[_0xf050('0xa9')](_0x12b6c2);});return Promise[_0xf050('0xaa')](_0x3a25a3);})[_0xf050('0x27')](function(_0xce0500){_0x392a72=_0xce0500;_0x25b2a5=Object[_0xf050('0xa4')]([],_0x3f2e74);console['log'](_0xf050('0xab'),_0x3f2e74);_['remove'](_0x25b2a5,function(_0x42607e){return _0xbbb915['includes'](_0x42607e[_0xf050('0x2a')]);});console[_0xf050('0xa3')](_0xf050('0xac'),_0x25b2a5);_0x3a25a3=[];_0x25b2a5['forEach'](function(_0x4462ba){var _0xe6ae87=createFieldObject(_0xebcd00,_0x5249e8,_0x4462ba[_0xf050('0xad')],_0x4462ba[_0xf050('0x2a')],_0x4462ba[_0xf050('0xa8')],!![]);_0x3a25a3[_0xf050('0xa9')](_0xe6ae87);});return Promise['all'](_0x3a25a3);})[_0xf050('0x27')](function(_0x5bd8cf){_0x582cc7=_0x5bd8cf;var _0x36bc16=_0x392a72['concat'](_0x582cc7);return{'count':_0x36bc16[_0xf050('0x38')],'rows':_0x36bc16};})[_0xf050('0x27')](respondWithResult(_0x17f57b,null))[_0xf050('0x45')](function(_0x482ded){console['log'](_0xf050('0xae')+_0x482ded);var _0x542ba7=_0x1475e6[_0xf050('0x31')]['test']?0x1f4:_0x482ded[_0xf050('0xaf')]||0x1f4;logger[_0xf050('0x28')](_0x482ded['stack']);delete _0x482ded[_0xf050('0x2a')];if(_0x542ba7===0x191){_0x542ba7=0x190;}_0x17f57b['status'](_0x542ba7)[_0xf050('0x2b')](_0x1475e6[_0xf050('0x31')][_0xf050('0xb0')]?{'message':_0xf050('0xb1'),'statusCode':_0x482ded[_0xf050('0xaf')]}:_0x482ded);});};function createFieldObject(_0x39c22f,_0x4a05ef,_0x3197e5,_0x3db8fb,_0xdab274,_0x31fee5){return new Promise(function(_0x42fa85,_0x412a7a){var _0x45223e={'id':_0x3db8fb,'name':_0xdab274,'custom':_0x31fee5};if(_0x3197e5===_0xf050('0xb2')){_0x45223e[_0xf050('0x41')]=[{'name':_0xf050('0xb3'),'value':_0xf050('0xb4')},{'name':'False','value':_0xf050('0xb5')}];_0x42fa85(_0x45223e);}else{var _0x75f9a5={'method':_0xf050('0xa0'),'uri':_0x39c22f+'sys_choice?sysparm_query=name=incident^element='+_0x3db8fb,'auth':_0x4a05ef,'json':!![]};return rp(_0x75f9a5)[_0xf050('0x27')](function(_0x555468){var _0x3035ea=[];if(_0x555468[_0xf050('0xa2')][_0xf050('0x38')]>0x0){_0x555468['result'][_0xf050('0xa7')](function(_0x3d7658){if(_0x3d7658[_0xf050('0xb6')]===_0xf050('0xb5')){var _0x451e86={'name':_0x3d7658[_0xf050('0xa8')],'value':_0x3d7658[_0xf050('0xb7')]};_0x3035ea[_0xf050('0xa9')](_0x451e86);}});}_0x45223e['options']=_0x3035ea;if(_0x45223e['options']['length']>0x0){_0x42fa85(_0x45223e);}else{if(_0x31fee5==![]){_0x42fa85();}else{_0x42fa85(_0x45223e);}}});}});}
\ No newline at end of file
index 4085c79..9affd41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','ServicenowAccount','int_servicenow_accounts'];(function(_0xed4881,_0x45771c){var _0x7fcbd5=function(_0x36b960){while(--_0x36b960){_0xed4881['push'](_0xed4881['shift']());}};_0x7fcbd5(++_0x45771c);}(_0x5fc3,0xa8));var _0x35fc=function(_0x519c88,_0xb84103){_0x519c88=_0x519c88-0x0;var _0x4668d7=_0x5fc3[_0x519c88];return _0x4668d7;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));var integrations=require(_0x35fc('0x9'));module['exports']=function(_0x5754be,_0x19a0d1){return _0x5754be['define'](_0x35fc('0xa'),attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5075=['bluebird','request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x7cb955,_0x1f5509){var _0xef2fde=function(_0x2cfd64){while(--_0x2cfd64){_0x7cb955['push'](_0x7cb955['shift']());}};_0xef2fde(++_0x1f5509);}(_0x5075,0x73));var _0x5507=function(_0x1597e2,_0x388d3e){_0x1597e2=_0x1597e2-0x0;var _0x4c8c0a=_0x5075[_0x1597e2];return _0x4c8c0a;};'use strict';var _=require(_0x5507('0x0'));var util=require(_0x5507('0x1'));var logger=require(_0x5507('0x2'))(_0x5507('0x3'));var moment=require(_0x5507('0x4'));var BPromise=require(_0x5507('0x5'));var rp=require(_0x5507('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5507('0x7'));var config=require(_0x5507('0x8'));var attributes=require(_0x5507('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x2cd9ee,_0x773559){return _0x2cd9ee['define'](_0x5507('0xa'),attributes,{'tableName':_0x5507('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e7b603..d1981a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc5c=['message','result','catch','options','raw','attributes','limit','include','map','model','GetServicenowAccount','ShowServicenowAccount','ServicenowAccount','find','stringify','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error'];(function(_0x529c76,_0x10bd70){var _0x50aeca=function(_0x17178f){while(--_0x17178f){_0x529c76['push'](_0x529c76['shift']());}};_0x50aeca(++_0x10bd70);}(_0xbc5c,0x93));var _0xcbc5=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0xbc5c[_0x178e48];return _0x440d7e;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xcbc5('0x0'));var rs=require(_0xcbc5('0x1'));var fs=require('fs');var Redis=require(_0xcbc5('0x2'));var db=require(_0xcbc5('0x3'))['db'];var utils=require(_0xcbc5('0x4'));var logger=require(_0xcbc5('0x5'))(_0xcbc5('0x6'));var config=require(_0xcbc5('0x7'));var jayson=require(_0xcbc5('0x8'));var client=jayson[_0xcbc5('0x9')][_0xcbc5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28438c,_0x255197,_0x2b0c0f){return new BPromise(function(_0x38c695,_0x26ee90){return client[_0xcbc5('0xb')](_0x28438c,_0x2b0c0f)['then'](function(_0x43c997){logger[_0xcbc5('0xc')](_0xcbc5('0xd'),_0x255197,_0xcbc5('0xe'));logger[_0xcbc5('0xf')](_0xcbc5('0x10'),_0x255197,'request\x20sent',JSON['stringify'](_0x43c997));if(_0x43c997['error']){if(_0x43c997[_0xcbc5('0x11')]['code']===0x1f4){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x255197,_0x43c997[_0xcbc5('0x11')]['message']);return _0x26ee90(_0x43c997[_0xcbc5('0x11')]['message']);}logger[_0xcbc5('0x11')](_0xcbc5('0xd'),_0x255197,_0x43c997['error'][_0xcbc5('0x12')]);return _0x38c695(_0x43c997[_0xcbc5('0x11')][_0xcbc5('0x12')]);}else{logger[_0xcbc5('0xc')](_0xcbc5('0xd'),_0x255197,_0xcbc5('0xe'));_0x38c695(_0x43c997[_0xcbc5('0x13')][_0xcbc5('0x12')]);}})[_0xcbc5('0x14')](function(_0x13cbdc){logger[_0xcbc5('0x11')](_0xcbc5('0xd'),_0x255197,_0x13cbdc);_0x26ee90(_0x13cbdc);});});}exports['GetServicenowAccount']=function(_0x552e6c){var _0x35f0ae=this;return new Promise(function(_0x2db21a,_0x5894b9){return db['ServicenowAccount']['findAll']({'raw':_0x552e6c[_0xcbc5('0x15')]?_0x552e6c[_0xcbc5('0x15')][_0xcbc5('0x16')]===undefined?!![]:![]:!![],'where':_0x552e6c[_0xcbc5('0x15')]?_0x552e6c[_0xcbc5('0x15')]['where']||null:null,'attributes':_0x552e6c[_0xcbc5('0x15')]?_0x552e6c[_0xcbc5('0x15')][_0xcbc5('0x17')]||null:null,'limit':_0x552e6c[_0xcbc5('0x15')]?_0x552e6c['options'][_0xcbc5('0x18')]||null:null,'include':_0x552e6c[_0xcbc5('0x15')]?_0x552e6c[_0xcbc5('0x15')][_0xcbc5('0x19')]?_[_0xcbc5('0x1a')](_0x552e6c['options'][_0xcbc5('0x19')],function(_0x3de7ac){return{'model':db[_0x3de7ac['model']],'as':_0x3de7ac['as'],'attributes':_0x3de7ac['attributes'],'include':_0x3de7ac[_0xcbc5('0x19')]?_[_0xcbc5('0x1a')](_0x3de7ac[_0xcbc5('0x19')],function(_0x58ed1e){return{'model':db[_0x58ed1e[_0xcbc5('0x1b')]],'as':_0x58ed1e['as'],'attributes':_0x58ed1e[_0xcbc5('0x17')],'include':_0x58ed1e[_0xcbc5('0x19')]?_['map'](_0x58ed1e[_0xcbc5('0x19')],function(_0x341576){return{'model':db[_0x341576[_0xcbc5('0x1b')]],'as':_0x341576['as'],'attributes':_0x341576[_0xcbc5('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x116780){logger[_0xcbc5('0xc')](_0xcbc5('0x1c'),_0x552e6c);logger['debug']('GetServicenowAccount',_0x552e6c,JSON['stringify'](_0x116780));_0x2db21a(_0x116780);})[_0xcbc5('0x14')](function(_0x15f8d2){logger[_0xcbc5('0x11')](_0xcbc5('0x1c'),_0x15f8d2[_0xcbc5('0x12')],_0x552e6c);_0x5894b9(_0x35f0ae['error'](0x1f4,_0x15f8d2[_0xcbc5('0x12')]));});});};exports[_0xcbc5('0x1d')]=function(_0x4c9dcb){var _0x501c8d=this;return new Promise(function(_0x2400d0,_0x3e4eea){return db[_0xcbc5('0x1e')][_0xcbc5('0x1f')]({'raw':_0x4c9dcb['options']?_0x4c9dcb['options']['raw']===undefined?!![]:![]:!![],'where':_0x4c9dcb['options']?_0x4c9dcb[_0xcbc5('0x15')]['where']||null:null,'attributes':_0x4c9dcb[_0xcbc5('0x15')]?_0x4c9dcb[_0xcbc5('0x15')][_0xcbc5('0x17')]||null:null,'include':_0x4c9dcb['options']?_0x4c9dcb[_0xcbc5('0x15')][_0xcbc5('0x19')]?_[_0xcbc5('0x1a')](_0x4c9dcb[_0xcbc5('0x15')][_0xcbc5('0x19')],function(_0x48518b){return{'model':db[_0x48518b[_0xcbc5('0x1b')]],'as':_0x48518b['as'],'attributes':_0x48518b['attributes'],'include':_0x48518b[_0xcbc5('0x19')]?_[_0xcbc5('0x1a')](_0x48518b[_0xcbc5('0x19')],function(_0x31a387){return{'model':db[_0x31a387[_0xcbc5('0x1b')]],'as':_0x31a387['as'],'attributes':_0x31a387[_0xcbc5('0x17')],'include':_0x31a387['include']?_[_0xcbc5('0x1a')](_0x31a387[_0xcbc5('0x19')],function(_0x2bed27){return{'model':db[_0x2bed27[_0xcbc5('0x1b')]],'as':_0x2bed27['as'],'attributes':_0x2bed27[_0xcbc5('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x44658e){logger[_0xcbc5('0xc')](_0xcbc5('0x1d'),_0x4c9dcb);logger[_0xcbc5('0xf')](_0xcbc5('0x1d'),_0x4c9dcb,JSON[_0xcbc5('0x20')](_0x44658e));_0x2400d0(_0x44658e);})[_0xcbc5('0x14')](function(_0x38638e){logger[_0xcbc5('0x11')](_0xcbc5('0x1d'),_0x38638e[_0xcbc5('0x12')],_0x4c9dcb);_0x3e4eea(_0x501c8d[_0xcbc5('0x11')](0x1f4,_0x38638e[_0xcbc5('0x12')]));});});};
\ No newline at end of file
+var _0xe50a=['map','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','request','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','GetServicenowAccount','ServicenowAccount','findAll','options','where','include','attributes','model','then','catch','ShowServicenowAccount','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe50a,0x1c2));var _0xae50=function(_0x5a1a51,_0x144c79){_0x5a1a51=_0x5a1a51-0x0;var _0x47edd7=_0xe50a[_0x5a1a51];return _0x47edd7;};'use strict';var _=require(_0xae50('0x0'));var util=require(_0xae50('0x1'));var moment=require(_0xae50('0x2'));var BPromise=require(_0xae50('0x3'));var rs=require(_0xae50('0x4'));var fs=require('fs');var Redis=require(_0xae50('0x5'));var db=require(_0xae50('0x6'))['db'];var utils=require(_0xae50('0x7'));var logger=require(_0xae50('0x8'))('rpc');var config=require(_0xae50('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x201875,_0x48b1d9,_0x46cc96){return new BPromise(function(_0xfd1379,_0x465c45){return client[_0xae50('0xa')](_0x201875,_0x46cc96)['then'](function(_0x188740){logger[_0xae50('0xb')](_0xae50('0xc'),_0x48b1d9,_0xae50('0xd'));logger['debug'](_0xae50('0xe'),_0x48b1d9,_0xae50('0xd'),JSON[_0xae50('0xf')](_0x188740));if(_0x188740[_0xae50('0x10')]){if(_0x188740[_0xae50('0x10')]['code']===0x1f4){logger[_0xae50('0x10')](_0xae50('0xc'),_0x48b1d9,_0x188740[_0xae50('0x10')][_0xae50('0x11')]);return _0x465c45(_0x188740[_0xae50('0x10')][_0xae50('0x11')]);}logger[_0xae50('0x10')](_0xae50('0xc'),_0x48b1d9,_0x188740['error']['message']);return _0xfd1379(_0x188740[_0xae50('0x10')]['message']);}else{logger[_0xae50('0xb')](_0xae50('0xc'),_0x48b1d9,'request\x20sent');_0xfd1379(_0x188740['result'][_0xae50('0x11')]);}})['catch'](function(_0x3b8a13){logger[_0xae50('0x10')](_0xae50('0xc'),_0x48b1d9,_0x3b8a13);_0x465c45(_0x3b8a13);});});}exports[_0xae50('0x12')]=function(_0x44b274){var _0x3975ea=this;return new Promise(function(_0x4f3555,_0x37e714){return db[_0xae50('0x13')][_0xae50('0x14')]({'raw':_0x44b274[_0xae50('0x15')]?_0x44b274[_0xae50('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x44b274['options']?_0x44b274[_0xae50('0x15')][_0xae50('0x16')]||null:null,'attributes':_0x44b274[_0xae50('0x15')]?_0x44b274[_0xae50('0x15')]['attributes']||null:null,'limit':_0x44b274['options']?_0x44b274[_0xae50('0x15')]['limit']||null:null,'include':_0x44b274[_0xae50('0x15')]?_0x44b274[_0xae50('0x15')][_0xae50('0x17')]?_['map'](_0x44b274[_0xae50('0x15')]['include'],function(_0x482737){return{'model':db[_0x482737['model']],'as':_0x482737['as'],'attributes':_0x482737[_0xae50('0x18')],'include':_0x482737['include']?_['map'](_0x482737[_0xae50('0x17')],function(_0x5a7c7e){return{'model':db[_0x5a7c7e[_0xae50('0x19')]],'as':_0x5a7c7e['as'],'attributes':_0x5a7c7e['attributes'],'include':_0x5a7c7e['include']?_['map'](_0x5a7c7e['include'],function(_0x4460df){return{'model':db[_0x4460df['model']],'as':_0x4460df['as'],'attributes':_0x4460df[_0xae50('0x18')]};}):[]};}):[]};}):[]:[]})[_0xae50('0x1a')](function(_0x5c1530){logger['info'](_0xae50('0x12'),_0x44b274);logger['debug'](_0xae50('0x12'),_0x44b274,JSON[_0xae50('0xf')](_0x5c1530));_0x4f3555(_0x5c1530);})[_0xae50('0x1b')](function(_0x1f0d2a){logger[_0xae50('0x10')](_0xae50('0x12'),_0x1f0d2a[_0xae50('0x11')],_0x44b274);_0x37e714(_0x3975ea[_0xae50('0x10')](0x1f4,_0x1f0d2a[_0xae50('0x11')]));});});};exports[_0xae50('0x1c')]=function(_0x31e2aa){var _0x342bce=this;return new Promise(function(_0x2eeac2,_0x495bc1){return db[_0xae50('0x13')][_0xae50('0x1d')]({'raw':_0x31e2aa[_0xae50('0x15')]?_0x31e2aa['options']['raw']===undefined?!![]:![]:!![],'where':_0x31e2aa[_0xae50('0x15')]?_0x31e2aa[_0xae50('0x15')][_0xae50('0x16')]||null:null,'attributes':_0x31e2aa[_0xae50('0x15')]?_0x31e2aa[_0xae50('0x15')]['attributes']||null:null,'include':_0x31e2aa['options']?_0x31e2aa[_0xae50('0x15')][_0xae50('0x17')]?_[_0xae50('0x1e')](_0x31e2aa[_0xae50('0x15')]['include'],function(_0x1d305a){return{'model':db[_0x1d305a[_0xae50('0x19')]],'as':_0x1d305a['as'],'attributes':_0x1d305a[_0xae50('0x18')],'include':_0x1d305a[_0xae50('0x17')]?_[_0xae50('0x1e')](_0x1d305a[_0xae50('0x17')],function(_0x46c73e){return{'model':db[_0x46c73e[_0xae50('0x19')]],'as':_0x46c73e['as'],'attributes':_0x46c73e['attributes'],'include':_0x46c73e[_0xae50('0x17')]?_[_0xae50('0x1e')](_0x46c73e[_0xae50('0x17')],function(_0x2e86a2){return{'model':db[_0x2e86a2[_0xae50('0x19')]],'as':_0x2e86a2['as'],'attributes':_0x2e86a2[_0xae50('0x18')]};}):[]};}):[]};}):[]:[]})[_0xae50('0x1a')](function(_0x2f5471){logger[_0xae50('0xb')]('ShowServicenowAccount',_0x31e2aa);logger[_0xae50('0x1f')](_0xae50('0x1c'),_0x31e2aa,JSON['stringify'](_0x2f5471));_0x2eeac2(_0x2f5471);})['catch'](function(_0x46140d){logger[_0xae50('0x10')](_0xae50('0x1c'),_0x46140d[_0xae50('0x11')],_0x31e2aa);_0x495bc1(_0x342bce[_0xae50('0x10')](0x1f4,_0x46140d[_0xae50('0x11')]));});});};
\ No newline at end of file
index adf5772..cab8fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3abf=['/:id/fields','getFields','get','/:id/subjects','getSubjects','getDescriptions','post','create','put','update','destroy','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','/:id','show'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x3abf,0x1ae));var _0xf3ab=function(_0x3fbf11,_0x138cab){_0x3fbf11=_0x3fbf11-0x0;var _0x4ca197=_0x3abf[_0x3fbf11];return _0x4ca197;};'use strict';var multer=require(_0xf3ab('0x0'));var util=require(_0xf3ab('0x1'));var path=require(_0xf3ab('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf3ab('0x3')]();var fs_extra=require(_0xf3ab('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf3ab('0x5'));var config=require(_0xf3ab('0x6'));var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth[_0xf3ab('0x7')](),controller['index']);router['get'](_0xf3ab('0x8'),auth['isAuthenticated'](),controller[_0xf3ab('0x9')]);router['get'](_0xf3ab('0xa'),auth['isAuthenticated'](),controller[_0xf3ab('0xb')]);router[_0xf3ab('0xc')](_0xf3ab('0xd'),auth['isAuthenticated'](),controller[_0xf3ab('0xe')]);router[_0xf3ab('0xc')]('/:id/descriptions',auth[_0xf3ab('0x7')](),controller[_0xf3ab('0xf')]);router[_0xf3ab('0x10')]('/',auth[_0xf3ab('0x7')](),controller[_0xf3ab('0x11')]);router[_0xf3ab('0x12')](_0xf3ab('0x8'),auth[_0xf3ab('0x7')](),controller[_0xf3ab('0x13')]);router['delete'](_0xf3ab('0x8'),auth[_0xf3ab('0x7')](),controller[_0xf3ab('0x14')]);module[_0xf3ab('0x15')]=router;
\ No newline at end of file
+var _0xf5c6=['express','Router','../../components/auth/service','./intServicenowConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x443330,_0xbdd961){var _0x2c7914=function(_0x1f143a){while(--_0x1f143a){_0x443330['push'](_0x443330['shift']());}};_0x2c7914(++_0xbdd961);}(_0xf5c6,0xfb));var _0x6f5c=function(_0x143e5f,_0x5a1d9a){_0x143e5f=_0x143e5f-0x0;var _0x3d15c9=_0xf5c6[_0x143e5f];return _0x3d15c9;};'use strict';var multer=require(_0x6f5c('0x0'));var util=require(_0x6f5c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6f5c('0x2'));var router=express[_0x6f5c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6f5c('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6f5c('0x5'));router[_0x6f5c('0x6')]('/',auth['isAuthenticated'](),controller[_0x6f5c('0x7')]);router['get'](_0x6f5c('0x8'),auth[_0x6f5c('0x9')](),controller[_0x6f5c('0xa')]);router['get'](_0x6f5c('0xb'),auth[_0x6f5c('0x9')](),controller[_0x6f5c('0xc')]);router[_0x6f5c('0x6')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x6f5c('0xd')]);router[_0x6f5c('0x6')](_0x6f5c('0xe'),auth[_0x6f5c('0x9')](),controller[_0x6f5c('0xf')]);router[_0x6f5c('0x10')]('/',auth['isAuthenticated'](),controller[_0x6f5c('0x11')]);router[_0x6f5c('0x12')](_0x6f5c('0x8'),auth[_0x6f5c('0x9')](),controller[_0x6f5c('0x13')]);router[_0x6f5c('0x14')](_0x6f5c('0x8'),auth['isAuthenticated'](),controller[_0x6f5c('0x15')]);module[_0x6f5c('0x16')]=router;
\ No newline at end of file
index d072443..a52c95e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff80=['sequelize','STRING'];(function(_0x757161,_0x5a8a6c){var _0x8cb1c=function(_0x567f09){while(--_0x567f09){_0x757161['push'](_0x757161['shift']());}};_0x8cb1c(++_0x5a8a6c);}(_0xff80,0xce));var _0x0ff8=function(_0x317322,_0x5a3757){_0x317322=_0x317322-0x0;var _0x15af3e=_0xff80[_0x317322];return _0x15af3e;};'use strict';var Sequelize=require(_0x0ff8('0x0'));module['exports']={'name':{'type':Sequelize[_0x0ff8('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0b93=['STRING','exports'];(function(_0x1f6739,_0x160c84){var _0x21015b=function(_0x139b3c){while(--_0x139b3c){_0x1f6739['push'](_0x1f6739['shift']());}};_0x21015b(++_0x160c84);}(_0x0b93,0x1cb));var _0x30b9=function(_0xe4d157,_0x1010a8){_0xe4d157=_0xe4d157-0x0;var _0x45405b=_0x0b93[_0xe4d157];return _0x45405b;};'use strict';var Sequelize=require('sequelize');module[_0x30b9('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x30b9('0x1')]}};
\ No newline at end of file
index 25aa8aa..d7bf6bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b52=['getDescriptions','findOne','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','update','then','destroy','error','stack','name','index','map','ServicenowConfiguration','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','rawAttributes','find','body','getFields','getSubjects','ServicenowField'];(function(_0xc683f6,_0x525718){var _0x173a40=function(_0x501994){while(--_0x501994){_0xc683f6['push'](_0xc683f6['shift']());}};_0x173a40(++_0x525718);}(_0x8b52,0xec));var _0x28b5=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x8b52[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0x28b5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x28b5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x28b5('0x2'));var moment=require(_0x28b5('0x3'));var BPromise=require(_0x28b5('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x28b5('0x5'));var sox=require(_0x28b5('0x6'));var csv=require(_0x28b5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x28b5('0x8'));var _=require(_0x28b5('0x9'));var squel=require(_0x28b5('0xa'));var crypto=require(_0x28b5('0xb'));var jsforce=require(_0x28b5('0xc'));var deskjs=require(_0x28b5('0xd'));var toCsv=require(_0x28b5('0x7'));var querystring=require('querystring');var Papa=require(_0x28b5('0xe'));var Redis=require(_0x28b5('0xf'));var authService=require(_0x28b5('0x10'));var qs=require(_0x28b5('0x11'));var as=require(_0x28b5('0x12'));var hardwareService=require(_0x28b5('0x13'));var logger=require(_0x28b5('0x14'))(_0x28b5('0x15'));var utils=require(_0x28b5('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x28b5('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38edab,_0x34b7bd){_0x34b7bd=_0x34b7bd||0xcc;return function(_0x5246c8){if(_0x5246c8){return _0x38edab[_0x28b5('0x18')](_0x34b7bd);}return _0x38edab[_0x28b5('0x19')](_0x34b7bd)[_0x28b5('0x1a')]();};}function respondWithResult(_0x36196b,_0x1dd259){_0x1dd259=_0x1dd259||0xc8;return function(_0x2dada4){if(_0x2dada4){return _0x36196b[_0x28b5('0x19')](_0x1dd259)[_0x28b5('0x1b')](_0x2dada4);}};}function respondWithFilteredResult(_0x6f247a,_0x2db0d3){return function(_0x504918){if(_0x504918){var _0x4e7678=typeof _0x2db0d3['offset']===_0x28b5('0x1c')&&typeof _0x2db0d3[_0x28b5('0x1d')]===_0x28b5('0x1c');var _0x4124fc=_0x504918[_0x28b5('0x1e')];var _0x402a6b=_0x4e7678?0x0:_0x2db0d3[_0x28b5('0x1f')];var _0x219130=_0x4e7678?_0x504918[_0x28b5('0x1e')]:_0x2db0d3[_0x28b5('0x1f')]+_0x2db0d3[_0x28b5('0x1d')];var _0x17c2c9;if(_0x219130>=_0x4124fc){_0x219130=_0x4124fc;_0x17c2c9=0xc8;}else{_0x17c2c9=0xce;}_0x6f247a[_0x28b5('0x19')](_0x17c2c9);return _0x6f247a[_0x28b5('0x20')](_0x28b5('0x21'),_0x402a6b+'-'+_0x219130+'/'+_0x4124fc)[_0x28b5('0x1b')](_0x504918);}return null;};}function patchUpdates(_0x2b756f){return function(_0x553725){try{jsonpatch['apply'](_0x553725,_0x2b756f,!![]);}catch(_0x2b8c84){return BPromise[_0x28b5('0x22')](_0x2b8c84);}return _0x553725['save']();};}function saveUpdates(_0x10c349,_0x348711){return function(_0xe96341){if(_0xe96341){return _0xe96341[_0x28b5('0x23')](_0x10c349)[_0x28b5('0x24')](function(_0x36ff80){return _0x36ff80;});}return null;};}function removeEntity(_0xee9266,_0xb9a66f){return function(_0x3e9dae){if(_0x3e9dae){return _0x3e9dae[_0x28b5('0x25')]()[_0x28b5('0x24')](function(){_0xee9266[_0x28b5('0x19')](0xcc)[_0x28b5('0x1a')]();});}};}function handleEntityNotFound(_0x3a12fa,_0x1344aa){return function(_0xe5c5be){if(!_0xe5c5be){_0x3a12fa[_0x28b5('0x18')](0x194);}return _0xe5c5be;};}function handleError(_0x3f0f6f,_0x2452f1){_0x2452f1=_0x2452f1||0x1f4;return function(_0x2d33e3){logger[_0x28b5('0x26')](_0x2d33e3[_0x28b5('0x27')]);if(_0x2d33e3[_0x28b5('0x28')]){delete _0x2d33e3[_0x28b5('0x28')];}_0x3f0f6f[_0x28b5('0x19')](_0x2452f1)['send'](_0x2d33e3);};}exports[_0x28b5('0x29')]=function(_0x574be5,_0x2a15af){var _0x50251d={},_0x266610={},_0x2d8244={'count':0x0,'rows':[]};var _0x2e3e33=_[_0x28b5('0x2a')](db[_0x28b5('0x2b')]['rawAttributes'],function(_0x142b54){return{'name':_0x142b54['fieldName'],'type':_0x142b54[_0x28b5('0x2c')][_0x28b5('0x2d')]};});_0x266610[_0x28b5('0x2e')]=_[_0x28b5('0x2a')](_0x2e3e33,_0x28b5('0x28'));_0x266610[_0x28b5('0x2f')]=_['keys'](_0x574be5[_0x28b5('0x2f')]);_0x266610['filters']=_[_0x28b5('0x30')](_0x266610[_0x28b5('0x2e')],_0x266610[_0x28b5('0x2f')]);_0x50251d['attributes']=_[_0x28b5('0x30')](_0x266610[_0x28b5('0x2e')],qs[_0x28b5('0x31')](_0x574be5[_0x28b5('0x2f')][_0x28b5('0x31')]));_0x50251d['attributes']=_0x50251d[_0x28b5('0x32')][_0x28b5('0x33')]?_0x50251d[_0x28b5('0x32')]:_0x266610[_0x28b5('0x2e')];if(!_0x574be5[_0x28b5('0x2f')][_0x28b5('0x34')](_0x28b5('0x35'))){_0x50251d['limit']=qs[_0x28b5('0x1d')](_0x574be5['query'][_0x28b5('0x1d')]);_0x50251d['offset']=qs['offset'](_0x574be5[_0x28b5('0x2f')][_0x28b5('0x1f')]);}_0x50251d[_0x28b5('0x36')]=qs[_0x28b5('0x37')](_0x574be5[_0x28b5('0x2f')]['sort']);_0x50251d[_0x28b5('0x38')]=qs[_0x28b5('0x39')](_[_0x28b5('0x3a')](_0x574be5['query'],_0x266610[_0x28b5('0x39')]),_0x2e3e33);if(_0x574be5[_0x28b5('0x2f')][_0x28b5('0x3b')]){_0x50251d['where']=_[_0x28b5('0x3c')](_0x50251d[_0x28b5('0x38')],{'$or':_[_0x28b5('0x2a')](_0x2e3e33,function(_0x24be9d){if(_0x24be9d[_0x28b5('0x2c')]!==_0x28b5('0x3d')){var _0x18c47c={};_0x18c47c[_0x24be9d[_0x28b5('0x28')]]={'$like':'%'+_0x574be5[_0x28b5('0x2f')][_0x28b5('0x3b')]+'%'};return _0x18c47c;}})});}_0x50251d=_[_0x28b5('0x3c')]({},_0x50251d,_0x574be5[_0x28b5('0x3e')]);var _0x13eb25={'where':_0x50251d[_0x28b5('0x38')]};return db['ServicenowConfiguration'][_0x28b5('0x1e')](_0x13eb25)[_0x28b5('0x24')](function(_0x2eaabe){_0x2d8244[_0x28b5('0x1e')]=_0x2eaabe;if(_0x574be5['query'][_0x28b5('0x3f')]){_0x50251d[_0x28b5('0x40')]=[{'all':!![]}];}return db[_0x28b5('0x2b')][_0x28b5('0x41')](_0x50251d);})[_0x28b5('0x24')](function(_0x48ec87){_0x2d8244['rows']=_0x48ec87;return _0x2d8244;})[_0x28b5('0x24')](respondWithFilteredResult(_0x2a15af,_0x50251d))[_0x28b5('0x42')](handleError(_0x2a15af,null));};exports[_0x28b5('0x43')]=function(_0x34f16f,_0x5a9322){var _0x3ce6b9={'raw':![],'where':{'id':_0x34f16f[_0x28b5('0x44')]['id']}},_0x35bbf0={};_0x35bbf0[_0x28b5('0x2e')]=_[_0x28b5('0x45')](db['ServicenowConfiguration'][_0x28b5('0x46')]);_0x35bbf0[_0x28b5('0x2f')]=_[_0x28b5('0x45')](_0x34f16f[_0x28b5('0x2f')]);_0x35bbf0[_0x28b5('0x39')]=_[_0x28b5('0x30')](_0x35bbf0[_0x28b5('0x2e')],_0x35bbf0[_0x28b5('0x2f')]);_0x3ce6b9[_0x28b5('0x32')]=_[_0x28b5('0x30')](_0x35bbf0[_0x28b5('0x2e')],qs[_0x28b5('0x31')](_0x34f16f[_0x28b5('0x2f')]['fields']));_0x3ce6b9[_0x28b5('0x32')]=_0x3ce6b9[_0x28b5('0x32')][_0x28b5('0x33')]?_0x3ce6b9[_0x28b5('0x32')]:_0x35bbf0[_0x28b5('0x2e')];if(_0x34f16f[_0x28b5('0x2f')][_0x28b5('0x3f')]){_0x3ce6b9[_0x28b5('0x40')]=[{'all':!![]}];}_0x3ce6b9=_[_0x28b5('0x3c')]({},_0x3ce6b9,_0x34f16f[_0x28b5('0x3e')]);return db[_0x28b5('0x2b')][_0x28b5('0x47')](_0x3ce6b9)[_0x28b5('0x24')](handleEntityNotFound(_0x5a9322,null))[_0x28b5('0x24')](respondWithResult(_0x5a9322,null))['catch'](handleError(_0x5a9322,null));};exports['create']=function(_0x3fd027,_0x339a38){return db[_0x28b5('0x2b')]['create'](_0x3fd027[_0x28b5('0x48')],{})[_0x28b5('0x24')](respondWithResult(_0x339a38,0xc9))[_0x28b5('0x42')](handleError(_0x339a38,null));};exports[_0x28b5('0x23')]=function(_0x2cac6b,_0x57135a){if(_0x2cac6b['body']['id']){delete _0x2cac6b['body']['id'];}return db['ServicenowConfiguration'][_0x28b5('0x47')]({'where':{'id':_0x2cac6b[_0x28b5('0x44')]['id']}})['then'](handleEntityNotFound(_0x57135a,null))[_0x28b5('0x24')](saveUpdates(_0x2cac6b[_0x28b5('0x48')],null))[_0x28b5('0x24')](respondWithResult(_0x57135a,null))[_0x28b5('0x42')](handleError(_0x57135a,null));};exports['destroy']=function(_0x20f687,_0x4395f9){return db[_0x28b5('0x2b')][_0x28b5('0x47')]({'where':{'id':_0x20f687['params']['id']}})['then'](handleEntityNotFound(_0x4395f9,null))[_0x28b5('0x24')](removeEntity(_0x4395f9,null))[_0x28b5('0x42')](handleError(_0x4395f9,null));};exports[_0x28b5('0x49')]=function(_0x3dcc81,_0x3b5dbe,_0x2e3727){var _0x2e4037={};var _0x144751={};var _0x39e152;var _0x32afb0;return db[_0x28b5('0x2b')]['findOne']({'where':{'id':_0x3dcc81['params']['id']}})[_0x28b5('0x24')](handleEntityNotFound(_0x3b5dbe,null))[_0x28b5('0x24')](function(_0x4aa59f){if(_0x4aa59f){_0x39e152=_0x4aa59f;_0x144751[_0x28b5('0x2e')]=_[_0x28b5('0x45')](db['ServicenowField'][_0x28b5('0x46')]);_0x144751['query']=_[_0x28b5('0x45')](_0x3dcc81[_0x28b5('0x2f')]);_0x144751[_0x28b5('0x39')]=_[_0x28b5('0x30')](_0x144751[_0x28b5('0x2e')],_0x144751[_0x28b5('0x2f')]);_0x2e4037[_0x28b5('0x32')]=_['intersection'](_0x144751[_0x28b5('0x2e')],qs['fields'](_0x3dcc81[_0x28b5('0x2f')]['fields']));_0x2e4037[_0x28b5('0x32')]=_0x2e4037[_0x28b5('0x32')][_0x28b5('0x33')]?_0x2e4037[_0x28b5('0x32')]:_0x144751[_0x28b5('0x2e')];_0x2e4037['order']=qs[_0x28b5('0x37')](_0x3dcc81[_0x28b5('0x2f')][_0x28b5('0x37')]);_0x2e4037[_0x28b5('0x38')]=qs[_0x28b5('0x39')](_['pick'](_0x3dcc81[_0x28b5('0x2f')],_0x144751[_0x28b5('0x39')]));if(_0x3dcc81[_0x28b5('0x2f')]['filter']){_0x2e4037[_0x28b5('0x38')]=_['merge'](_0x2e4037[_0x28b5('0x38')],{'$or':_[_0x28b5('0x2a')](_0x2e4037['attributes'],function(_0x478331){var _0x23bccb={};_0x23bccb[_0x478331]={'$like':'%'+_0x3dcc81[_0x28b5('0x2f')][_0x28b5('0x3b')]+'%'};return _0x23bccb;})});}_0x2e4037=_[_0x28b5('0x3c')]({},_0x2e4037,_0x3dcc81[_0x28b5('0x3e')]);return _0x39e152['getFields'](_0x2e4037);}})[_0x28b5('0x24')](function(_0x51c066){if(_0x51c066){_0x32afb0=_0x51c066[_0x28b5('0x33')];if(!_0x3dcc81[_0x28b5('0x2f')]['hasOwnProperty'](_0x28b5('0x35'))){_0x2e4037[_0x28b5('0x1d')]=qs[_0x28b5('0x1d')](_0x3dcc81[_0x28b5('0x2f')][_0x28b5('0x1d')]);_0x2e4037[_0x28b5('0x1f')]=qs['offset'](_0x3dcc81[_0x28b5('0x2f')]['offset']);}return _0x39e152['getFields'](_0x2e4037);}})[_0x28b5('0x24')](function(_0xe41b70){if(_0xe41b70){return _0xe41b70?{'count':_0x32afb0,'rows':_0xe41b70}:null;}})[_0x28b5('0x24')](respondWithResult(_0x3b5dbe,null))[_0x28b5('0x42')](handleError(_0x3b5dbe,null));};exports[_0x28b5('0x4a')]=function(_0x5e2f8a,_0x4aae90,_0x25102f){var _0x327f91={};var _0x3dd419={};var _0x1d66d1;var _0x1a63ca;return db[_0x28b5('0x2b')]['findOne']({'where':{'id':_0x5e2f8a[_0x28b5('0x44')]['id']}})[_0x28b5('0x24')](handleEntityNotFound(_0x4aae90,null))[_0x28b5('0x24')](function(_0x211e46){if(_0x211e46){_0x1d66d1=_0x211e46;_0x3dd419['model']=_[_0x28b5('0x45')](db[_0x28b5('0x4b')][_0x28b5('0x46')]);_0x3dd419['query']=_[_0x28b5('0x45')](_0x5e2f8a[_0x28b5('0x2f')]);_0x3dd419[_0x28b5('0x39')]=_[_0x28b5('0x30')](_0x3dd419[_0x28b5('0x2e')],_0x3dd419[_0x28b5('0x2f')]);_0x327f91[_0x28b5('0x32')]=_[_0x28b5('0x30')](_0x3dd419[_0x28b5('0x2e')],qs[_0x28b5('0x31')](_0x5e2f8a[_0x28b5('0x2f')][_0x28b5('0x31')]));_0x327f91[_0x28b5('0x32')]=_0x327f91[_0x28b5('0x32')][_0x28b5('0x33')]?_0x327f91[_0x28b5('0x32')]:_0x3dd419['model'];_0x327f91['order']=qs['sort'](_0x5e2f8a['query'][_0x28b5('0x37')]);_0x327f91[_0x28b5('0x38')]=qs[_0x28b5('0x39')](_[_0x28b5('0x3a')](_0x5e2f8a[_0x28b5('0x2f')],_0x3dd419['filters']));if(_0x5e2f8a[_0x28b5('0x2f')][_0x28b5('0x3b')]){_0x327f91[_0x28b5('0x38')]=_[_0x28b5('0x3c')](_0x327f91[_0x28b5('0x38')],{'$or':_['map'](_0x327f91['attributes'],function(_0x37f94b){var _0x18cb9b={};_0x18cb9b[_0x37f94b]={'$like':'%'+_0x5e2f8a[_0x28b5('0x2f')][_0x28b5('0x3b')]+'%'};return _0x18cb9b;})});}_0x327f91=_[_0x28b5('0x3c')]({},_0x327f91,_0x5e2f8a[_0x28b5('0x3e')]);return _0x1d66d1[_0x28b5('0x4a')](_0x327f91);}})['then'](function(_0x58fe34){if(_0x58fe34){_0x1a63ca=_0x58fe34[_0x28b5('0x33')];if(!_0x5e2f8a['query'][_0x28b5('0x34')](_0x28b5('0x35'))){_0x327f91[_0x28b5('0x1d')]=qs[_0x28b5('0x1d')](_0x5e2f8a[_0x28b5('0x2f')]['limit']);_0x327f91[_0x28b5('0x1f')]=qs[_0x28b5('0x1f')](_0x5e2f8a[_0x28b5('0x2f')][_0x28b5('0x1f')]);}return _0x1d66d1['getSubjects'](_0x327f91);}})['then'](function(_0x542b29){if(_0x542b29){return _0x542b29?{'count':_0x1a63ca,'rows':_0x542b29}:null;}})[_0x28b5('0x24')](respondWithResult(_0x4aae90,null))[_0x28b5('0x42')](handleError(_0x4aae90,null));};exports[_0x28b5('0x4c')]=function(_0x2fe7a8,_0x501221,_0x57afa4){var _0x287be6={};var _0x3894bf={};var _0x21eebb;var _0x7942a0;return db[_0x28b5('0x2b')][_0x28b5('0x4d')]({'where':{'id':_0x2fe7a8['params']['id']}})[_0x28b5('0x24')](handleEntityNotFound(_0x501221,null))[_0x28b5('0x24')](function(_0x4509e5){if(_0x4509e5){_0x21eebb=_0x4509e5;_0x3894bf[_0x28b5('0x2e')]=_[_0x28b5('0x45')](db[_0x28b5('0x4b')][_0x28b5('0x46')]);_0x3894bf[_0x28b5('0x2f')]=_['keys'](_0x2fe7a8[_0x28b5('0x2f')]);_0x3894bf[_0x28b5('0x39')]=_['intersection'](_0x3894bf[_0x28b5('0x2e')],_0x3894bf[_0x28b5('0x2f')]);_0x287be6['attributes']=_['intersection'](_0x3894bf[_0x28b5('0x2e')],qs[_0x28b5('0x31')](_0x2fe7a8[_0x28b5('0x2f')][_0x28b5('0x31')]));_0x287be6[_0x28b5('0x32')]=_0x287be6[_0x28b5('0x32')][_0x28b5('0x33')]?_0x287be6[_0x28b5('0x32')]:_0x3894bf['model'];_0x287be6[_0x28b5('0x36')]=qs[_0x28b5('0x37')](_0x2fe7a8[_0x28b5('0x2f')][_0x28b5('0x37')]);_0x287be6[_0x28b5('0x38')]=qs[_0x28b5('0x39')](_[_0x28b5('0x3a')](_0x2fe7a8['query'],_0x3894bf[_0x28b5('0x39')]));if(_0x2fe7a8[_0x28b5('0x2f')][_0x28b5('0x3b')]){_0x287be6[_0x28b5('0x38')]=_['merge'](_0x287be6['where'],{'$or':_[_0x28b5('0x2a')](_0x287be6[_0x28b5('0x32')],function(_0x279dfa){var _0x147ddc={};_0x147ddc[_0x279dfa]={'$like':'%'+_0x2fe7a8[_0x28b5('0x2f')][_0x28b5('0x3b')]+'%'};return _0x147ddc;})});}_0x287be6=_['merge']({},_0x287be6,_0x2fe7a8[_0x28b5('0x3e')]);return _0x21eebb[_0x28b5('0x4c')](_0x287be6);}})[_0x28b5('0x24')](function(_0x1a7d25){if(_0x1a7d25){_0x7942a0=_0x1a7d25['length'];if(!_0x2fe7a8['query']['hasOwnProperty'](_0x28b5('0x35'))){_0x287be6['limit']=qs['limit'](_0x2fe7a8[_0x28b5('0x2f')][_0x28b5('0x1d')]);_0x287be6['offset']=qs['offset'](_0x2fe7a8[_0x28b5('0x2f')][_0x28b5('0x1f')]);}return _0x21eebb[_0x28b5('0x4c')](_0x287be6);}})[_0x28b5('0x24')](function(_0x12f97b){if(_0x12f97b){return _0x12f97b?{'count':_0x7942a0,'rows':_0x12f97b}:null;}})['then'](respondWithResult(_0x501221,null))[_0x28b5('0x42')](handleError(_0x501221,null));};
\ No newline at end of file
+var _0xc0a0=['model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','ServicenowConfiguration','include','findAll','rows','catch','show','params','keys','length','includeAll','create','body','find','findOne','ServicenowField','order','pick','getFields','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','then','stack','name','send','map','rawAttributes','key'];(function(_0x44c4e9,_0x3896fb){var _0x43dc2a=function(_0x5c2f96){while(--_0x5c2f96){_0x44c4e9['push'](_0x44c4e9['shift']());}};_0x43dc2a(++_0x3896fb);}(_0xc0a0,0x74));var _0x0c0a=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xc0a0[_0x5bd426];return _0x23a7eb;};'use strict';var emlformat=require(_0x0c0a('0x0'));var rimraf=require(_0x0c0a('0x1'));var zipdir=require(_0x0c0a('0x2'));var jsonpatch=require(_0x0c0a('0x3'));var rp=require(_0x0c0a('0x4'));var moment=require(_0x0c0a('0x5'));var BPromise=require(_0x0c0a('0x6'));var Mustache=require('mustache');var util=require(_0x0c0a('0x7'));var path=require(_0x0c0a('0x8'));var sox=require(_0x0c0a('0x9'));var csv=require(_0x0c0a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0c0a('0xb'));var _=require(_0x0c0a('0xc'));var squel=require(_0x0c0a('0xd'));var crypto=require(_0x0c0a('0xe'));var jsforce=require(_0x0c0a('0xf'));var deskjs=require(_0x0c0a('0x10'));var toCsv=require(_0x0c0a('0xa'));var querystring=require(_0x0c0a('0x11'));var Papa=require(_0x0c0a('0x12'));var Redis=require(_0x0c0a('0x13'));var authService=require(_0x0c0a('0x14'));var qs=require(_0x0c0a('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0c0a('0x16'));var logger=require(_0x0c0a('0x17'))(_0x0c0a('0x18'));var utils=require(_0x0c0a('0x19'));var config=require(_0x0c0a('0x1a'));var licenseUtil=require(_0x0c0a('0x1b'));var db=require(_0x0c0a('0x1c'))['db'];function respondWithStatusCode(_0x475c3d,_0x3cb04f){_0x3cb04f=_0x3cb04f||0xcc;return function(_0x38a3ff){if(_0x38a3ff){return _0x475c3d[_0x0c0a('0x1d')](_0x3cb04f);}return _0x475c3d[_0x0c0a('0x1e')](_0x3cb04f)[_0x0c0a('0x1f')]();};}function respondWithResult(_0x5156a4,_0x54fb93){_0x54fb93=_0x54fb93||0xc8;return function(_0x48fe9f){if(_0x48fe9f){return _0x5156a4[_0x0c0a('0x1e')](_0x54fb93)[_0x0c0a('0x20')](_0x48fe9f);}};}function respondWithFilteredResult(_0x5ecb68,_0x4c7470){return function(_0x446623){if(_0x446623){var _0x43dddf=typeof _0x4c7470[_0x0c0a('0x21')]==='undefined'&&typeof _0x4c7470[_0x0c0a('0x22')]===_0x0c0a('0x23');var _0x1e54c4=_0x446623[_0x0c0a('0x24')];var _0x1475ff=_0x43dddf?0x0:_0x4c7470[_0x0c0a('0x21')];var _0x28d465=_0x43dddf?_0x446623[_0x0c0a('0x24')]:_0x4c7470[_0x0c0a('0x21')]+_0x4c7470['limit'];var _0x2c0fa4;if(_0x28d465>=_0x1e54c4){_0x28d465=_0x1e54c4;_0x2c0fa4=0xc8;}else{_0x2c0fa4=0xce;}_0x5ecb68[_0x0c0a('0x1e')](_0x2c0fa4);return _0x5ecb68[_0x0c0a('0x25')](_0x0c0a('0x26'),_0x1475ff+'-'+_0x28d465+'/'+_0x1e54c4)[_0x0c0a('0x20')](_0x446623);}return null;};}function patchUpdates(_0x53f8b7){return function(_0x415a33){try{jsonpatch['apply'](_0x415a33,_0x53f8b7,!![]);}catch(_0x5881cf){return BPromise[_0x0c0a('0x27')](_0x5881cf);}return _0x415a33[_0x0c0a('0x28')]();};}function saveUpdates(_0x5a1e8a,_0x3f5ae7){return function(_0x37a338){if(_0x37a338){return _0x37a338[_0x0c0a('0x29')](_0x5a1e8a)['then'](function(_0x3c31fa){return _0x3c31fa;});}return null;};}function removeEntity(_0x14643f,_0xac5883){return function(_0x5d0d44){if(_0x5d0d44){return _0x5d0d44[_0x0c0a('0x2a')]()[_0x0c0a('0x2b')](function(){_0x14643f[_0x0c0a('0x1e')](0xcc)[_0x0c0a('0x1f')]();});}};}function handleEntityNotFound(_0x107f93,_0x181994){return function(_0x5e0c10){if(!_0x5e0c10){_0x107f93[_0x0c0a('0x1d')](0x194);}return _0x5e0c10;};}function handleError(_0x316d28,_0x35e710){_0x35e710=_0x35e710||0x1f4;return function(_0x3c1564){logger['error'](_0x3c1564[_0x0c0a('0x2c')]);if(_0x3c1564['name']){delete _0x3c1564[_0x0c0a('0x2d')];}_0x316d28[_0x0c0a('0x1e')](_0x35e710)[_0x0c0a('0x2e')](_0x3c1564);};}exports['index']=function(_0x43266a,_0x20669a){var _0x1a7ff3={},_0x566353={},_0x4e565f={'count':0x0,'rows':[]};var _0x52a601=_[_0x0c0a('0x2f')](db['ServicenowConfiguration'][_0x0c0a('0x30')],function(_0x5f6708){return{'name':_0x5f6708['fieldName'],'type':_0x5f6708['type'][_0x0c0a('0x31')]};});_0x566353[_0x0c0a('0x32')]=_[_0x0c0a('0x2f')](_0x52a601,_0x0c0a('0x2d'));_0x566353[_0x0c0a('0x33')]=_['keys'](_0x43266a[_0x0c0a('0x33')]);_0x566353[_0x0c0a('0x34')]=_[_0x0c0a('0x35')](_0x566353['model'],_0x566353[_0x0c0a('0x33')]);_0x1a7ff3[_0x0c0a('0x36')]=_['intersection'](_0x566353[_0x0c0a('0x32')],qs[_0x0c0a('0x37')](_0x43266a[_0x0c0a('0x33')][_0x0c0a('0x37')]));_0x1a7ff3[_0x0c0a('0x36')]=_0x1a7ff3['attributes']['length']?_0x1a7ff3[_0x0c0a('0x36')]:_0x566353[_0x0c0a('0x32')];if(!_0x43266a[_0x0c0a('0x33')][_0x0c0a('0x38')](_0x0c0a('0x39'))){_0x1a7ff3[_0x0c0a('0x22')]=qs[_0x0c0a('0x22')](_0x43266a['query']['limit']);_0x1a7ff3['offset']=qs['offset'](_0x43266a['query'][_0x0c0a('0x21')]);}_0x1a7ff3['order']=qs['sort'](_0x43266a['query'][_0x0c0a('0x3a')]);_0x1a7ff3[_0x0c0a('0x3b')]=qs['filters'](_['pick'](_0x43266a[_0x0c0a('0x33')],_0x566353[_0x0c0a('0x34')]),_0x52a601);if(_0x43266a[_0x0c0a('0x33')][_0x0c0a('0x3c')]){_0x1a7ff3[_0x0c0a('0x3b')]=_['merge'](_0x1a7ff3[_0x0c0a('0x3b')],{'$or':_['map'](_0x52a601,function(_0x562bd5){if(_0x562bd5['type']!==_0x0c0a('0x3d')){var _0x5b112e={};_0x5b112e[_0x562bd5[_0x0c0a('0x2d')]]={'$like':'%'+_0x43266a[_0x0c0a('0x33')]['filter']+'%'};return _0x5b112e;}})});}_0x1a7ff3=_[_0x0c0a('0x3e')]({},_0x1a7ff3,_0x43266a[_0x0c0a('0x3f')]);var _0x281a1d={'where':_0x1a7ff3['where']};return db[_0x0c0a('0x40')][_0x0c0a('0x24')](_0x281a1d)[_0x0c0a('0x2b')](function(_0x46a576){_0x4e565f[_0x0c0a('0x24')]=_0x46a576;if(_0x43266a[_0x0c0a('0x33')]['includeAll']){_0x1a7ff3[_0x0c0a('0x41')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0x0c0a('0x42')](_0x1a7ff3);})['then'](function(_0x57fe4a){_0x4e565f[_0x0c0a('0x43')]=_0x57fe4a;return _0x4e565f;})['then'](respondWithFilteredResult(_0x20669a,_0x1a7ff3))[_0x0c0a('0x44')](handleError(_0x20669a,null));};exports[_0x0c0a('0x45')]=function(_0x42b9af,_0x794919){var _0x3e597b={'raw':![],'where':{'id':_0x42b9af[_0x0c0a('0x46')]['id']}},_0x597563={};_0x597563[_0x0c0a('0x32')]=_[_0x0c0a('0x47')](db['ServicenowConfiguration'][_0x0c0a('0x30')]);_0x597563[_0x0c0a('0x33')]=_['keys'](_0x42b9af[_0x0c0a('0x33')]);_0x597563[_0x0c0a('0x34')]=_['intersection'](_0x597563[_0x0c0a('0x32')],_0x597563[_0x0c0a('0x33')]);_0x3e597b[_0x0c0a('0x36')]=_[_0x0c0a('0x35')](_0x597563[_0x0c0a('0x32')],qs[_0x0c0a('0x37')](_0x42b9af['query'][_0x0c0a('0x37')]));_0x3e597b['attributes']=_0x3e597b['attributes'][_0x0c0a('0x48')]?_0x3e597b[_0x0c0a('0x36')]:_0x597563[_0x0c0a('0x32')];if(_0x42b9af[_0x0c0a('0x33')][_0x0c0a('0x49')]){_0x3e597b[_0x0c0a('0x41')]=[{'all':!![]}];}_0x3e597b=_[_0x0c0a('0x3e')]({},_0x3e597b,_0x42b9af[_0x0c0a('0x3f')]);return db[_0x0c0a('0x40')]['find'](_0x3e597b)[_0x0c0a('0x2b')](handleEntityNotFound(_0x794919,null))['then'](respondWithResult(_0x794919,null))[_0x0c0a('0x44')](handleError(_0x794919,null));};exports[_0x0c0a('0x4a')]=function(_0x1b353e,_0x5f2e88){return db[_0x0c0a('0x40')][_0x0c0a('0x4a')](_0x1b353e[_0x0c0a('0x4b')],{})['then'](respondWithResult(_0x5f2e88,0xc9))[_0x0c0a('0x44')](handleError(_0x5f2e88,null));};exports[_0x0c0a('0x29')]=function(_0x3fa2b9,_0x12cdf9){if(_0x3fa2b9['body']['id']){delete _0x3fa2b9[_0x0c0a('0x4b')]['id'];}return db[_0x0c0a('0x40')][_0x0c0a('0x4c')]({'where':{'id':_0x3fa2b9[_0x0c0a('0x46')]['id']}})[_0x0c0a('0x2b')](handleEntityNotFound(_0x12cdf9,null))['then'](saveUpdates(_0x3fa2b9[_0x0c0a('0x4b')],null))[_0x0c0a('0x2b')](respondWithResult(_0x12cdf9,null))[_0x0c0a('0x44')](handleError(_0x12cdf9,null));};exports['destroy']=function(_0x42be92,_0x9e1e65){return db[_0x0c0a('0x40')][_0x0c0a('0x4c')]({'where':{'id':_0x42be92['params']['id']}})[_0x0c0a('0x2b')](handleEntityNotFound(_0x9e1e65,null))[_0x0c0a('0x2b')](removeEntity(_0x9e1e65,null))['catch'](handleError(_0x9e1e65,null));};exports['getFields']=function(_0x391eb1,_0x2f794e,_0xf91e15){var _0x417e0b={};var _0x390460={};var _0x2bc923;var _0x1030d3;return db['ServicenowConfiguration'][_0x0c0a('0x4d')]({'where':{'id':_0x391eb1[_0x0c0a('0x46')]['id']}})['then'](handleEntityNotFound(_0x2f794e,null))[_0x0c0a('0x2b')](function(_0x4a3957){if(_0x4a3957){_0x2bc923=_0x4a3957;_0x390460[_0x0c0a('0x32')]=_[_0x0c0a('0x47')](db[_0x0c0a('0x4e')][_0x0c0a('0x30')]);_0x390460['query']=_[_0x0c0a('0x47')](_0x391eb1['query']);_0x390460['filters']=_[_0x0c0a('0x35')](_0x390460['model'],_0x390460[_0x0c0a('0x33')]);_0x417e0b[_0x0c0a('0x36')]=_['intersection'](_0x390460[_0x0c0a('0x32')],qs[_0x0c0a('0x37')](_0x391eb1[_0x0c0a('0x33')][_0x0c0a('0x37')]));_0x417e0b[_0x0c0a('0x36')]=_0x417e0b[_0x0c0a('0x36')][_0x0c0a('0x48')]?_0x417e0b[_0x0c0a('0x36')]:_0x390460[_0x0c0a('0x32')];_0x417e0b[_0x0c0a('0x4f')]=qs[_0x0c0a('0x3a')](_0x391eb1['query'][_0x0c0a('0x3a')]);_0x417e0b[_0x0c0a('0x3b')]=qs[_0x0c0a('0x34')](_[_0x0c0a('0x50')](_0x391eb1[_0x0c0a('0x33')],_0x390460[_0x0c0a('0x34')]));if(_0x391eb1[_0x0c0a('0x33')]['filter']){_0x417e0b[_0x0c0a('0x3b')]=_[_0x0c0a('0x3e')](_0x417e0b[_0x0c0a('0x3b')],{'$or':_['map'](_0x417e0b[_0x0c0a('0x36')],function(_0x5c71a7){var _0x369130={};_0x369130[_0x5c71a7]={'$like':'%'+_0x391eb1[_0x0c0a('0x33')][_0x0c0a('0x3c')]+'%'};return _0x369130;})});}_0x417e0b=_[_0x0c0a('0x3e')]({},_0x417e0b,_0x391eb1[_0x0c0a('0x3f')]);return _0x2bc923[_0x0c0a('0x51')](_0x417e0b);}})[_0x0c0a('0x2b')](function(_0x547adc){if(_0x547adc){_0x1030d3=_0x547adc['length'];if(!_0x391eb1[_0x0c0a('0x33')][_0x0c0a('0x38')](_0x0c0a('0x39'))){_0x417e0b[_0x0c0a('0x22')]=qs[_0x0c0a('0x22')](_0x391eb1[_0x0c0a('0x33')]['limit']);_0x417e0b['offset']=qs[_0x0c0a('0x21')](_0x391eb1[_0x0c0a('0x33')]['offset']);}return _0x2bc923[_0x0c0a('0x51')](_0x417e0b);}})[_0x0c0a('0x2b')](function(_0x549ac8){if(_0x549ac8){return _0x549ac8?{'count':_0x1030d3,'rows':_0x549ac8}:null;}})[_0x0c0a('0x2b')](respondWithResult(_0x2f794e,null))['catch'](handleError(_0x2f794e,null));};exports['getSubjects']=function(_0x349054,_0x14eac4,_0x327e04){var _0x3b416b={};var _0x2057bd={};var _0x3a3af4;var _0x34201e;return db[_0x0c0a('0x40')]['findOne']({'where':{'id':_0x349054[_0x0c0a('0x46')]['id']}})[_0x0c0a('0x2b')](handleEntityNotFound(_0x14eac4,null))['then'](function(_0x54fa3d){if(_0x54fa3d){_0x3a3af4=_0x54fa3d;_0x2057bd[_0x0c0a('0x32')]=_[_0x0c0a('0x47')](db[_0x0c0a('0x4e')][_0x0c0a('0x30')]);_0x2057bd['query']=_[_0x0c0a('0x47')](_0x349054[_0x0c0a('0x33')]);_0x2057bd[_0x0c0a('0x34')]=_['intersection'](_0x2057bd[_0x0c0a('0x32')],_0x2057bd[_0x0c0a('0x33')]);_0x3b416b[_0x0c0a('0x36')]=_[_0x0c0a('0x35')](_0x2057bd['model'],qs['fields'](_0x349054[_0x0c0a('0x33')]['fields']));_0x3b416b[_0x0c0a('0x36')]=_0x3b416b[_0x0c0a('0x36')][_0x0c0a('0x48')]?_0x3b416b[_0x0c0a('0x36')]:_0x2057bd[_0x0c0a('0x32')];_0x3b416b[_0x0c0a('0x4f')]=qs[_0x0c0a('0x3a')](_0x349054['query'][_0x0c0a('0x3a')]);_0x3b416b['where']=qs[_0x0c0a('0x34')](_['pick'](_0x349054[_0x0c0a('0x33')],_0x2057bd['filters']));if(_0x349054[_0x0c0a('0x33')][_0x0c0a('0x3c')]){_0x3b416b['where']=_[_0x0c0a('0x3e')](_0x3b416b[_0x0c0a('0x3b')],{'$or':_[_0x0c0a('0x2f')](_0x3b416b['attributes'],function(_0x2538cc){var _0x45f569={};_0x45f569[_0x2538cc]={'$like':'%'+_0x349054['query'][_0x0c0a('0x3c')]+'%'};return _0x45f569;})});}_0x3b416b=_['merge']({},_0x3b416b,_0x349054[_0x0c0a('0x3f')]);return _0x3a3af4['getSubjects'](_0x3b416b);}})[_0x0c0a('0x2b')](function(_0x165143){if(_0x165143){_0x34201e=_0x165143['length'];if(!_0x349054[_0x0c0a('0x33')]['hasOwnProperty'](_0x0c0a('0x39'))){_0x3b416b['limit']=qs[_0x0c0a('0x22')](_0x349054[_0x0c0a('0x33')][_0x0c0a('0x22')]);_0x3b416b[_0x0c0a('0x21')]=qs[_0x0c0a('0x21')](_0x349054[_0x0c0a('0x33')][_0x0c0a('0x21')]);}return _0x3a3af4['getSubjects'](_0x3b416b);}})[_0x0c0a('0x2b')](function(_0x1d249f){if(_0x1d249f){return _0x1d249f?{'count':_0x34201e,'rows':_0x1d249f}:null;}})[_0x0c0a('0x2b')](respondWithResult(_0x14eac4,null))[_0x0c0a('0x44')](handleError(_0x14eac4,null));};exports[_0x0c0a('0x52')]=function(_0x7ebb00,_0x2c8384,_0x53840c){var _0x1048c9={};var _0x24b240={};var _0x1bc863;var _0x141a2b;return db[_0x0c0a('0x40')][_0x0c0a('0x4d')]({'where':{'id':_0x7ebb00[_0x0c0a('0x46')]['id']}})[_0x0c0a('0x2b')](handleEntityNotFound(_0x2c8384,null))[_0x0c0a('0x2b')](function(_0x15057c){if(_0x15057c){_0x1bc863=_0x15057c;_0x24b240[_0x0c0a('0x32')]=_[_0x0c0a('0x47')](db[_0x0c0a('0x4e')][_0x0c0a('0x30')]);_0x24b240[_0x0c0a('0x33')]=_[_0x0c0a('0x47')](_0x7ebb00[_0x0c0a('0x33')]);_0x24b240['filters']=_['intersection'](_0x24b240[_0x0c0a('0x32')],_0x24b240[_0x0c0a('0x33')]);_0x1048c9[_0x0c0a('0x36')]=_['intersection'](_0x24b240[_0x0c0a('0x32')],qs[_0x0c0a('0x37')](_0x7ebb00[_0x0c0a('0x33')]['fields']));_0x1048c9[_0x0c0a('0x36')]=_0x1048c9['attributes'][_0x0c0a('0x48')]?_0x1048c9['attributes']:_0x24b240['model'];_0x1048c9['order']=qs[_0x0c0a('0x3a')](_0x7ebb00['query'][_0x0c0a('0x3a')]);_0x1048c9[_0x0c0a('0x3b')]=qs[_0x0c0a('0x34')](_[_0x0c0a('0x50')](_0x7ebb00[_0x0c0a('0x33')],_0x24b240[_0x0c0a('0x34')]));if(_0x7ebb00['query']['filter']){_0x1048c9[_0x0c0a('0x3b')]=_['merge'](_0x1048c9['where'],{'$or':_[_0x0c0a('0x2f')](_0x1048c9[_0x0c0a('0x36')],function(_0x2bd03d){var _0x1302a5={};_0x1302a5[_0x2bd03d]={'$like':'%'+_0x7ebb00[_0x0c0a('0x33')]['filter']+'%'};return _0x1302a5;})});}_0x1048c9=_[_0x0c0a('0x3e')]({},_0x1048c9,_0x7ebb00[_0x0c0a('0x3f')]);return _0x1bc863[_0x0c0a('0x52')](_0x1048c9);}})[_0x0c0a('0x2b')](function(_0xa175a){if(_0xa175a){_0x141a2b=_0xa175a['length'];if(!_0x7ebb00['query'][_0x0c0a('0x38')](_0x0c0a('0x39'))){_0x1048c9[_0x0c0a('0x22')]=qs[_0x0c0a('0x22')](_0x7ebb00[_0x0c0a('0x33')]['limit']);_0x1048c9[_0x0c0a('0x21')]=qs[_0x0c0a('0x21')](_0x7ebb00['query']['offset']);}return _0x1bc863[_0x0c0a('0x52')](_0x1048c9);}})[_0x0c0a('0x2b')](function(_0x233f11){if(_0x233f11){return _0x233f11?{'count':_0x141a2b,'rows':_0x233f11}:null;}})['then'](respondWithResult(_0x2c8384,null))[_0x0c0a('0x44')](handleError(_0x2c8384,null));};
\ No newline at end of file
index 50a5477..7922d14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee0=['moment','bluebird','request-promise','path','rimraf','define','ServicenowConfiguration','util','../../config/logger','api'];(function(_0xfbe6b8,_0x2aeaa5){var _0x6858ad=function(_0x2603a6){while(--_0x2603a6){_0xfbe6b8['push'](_0xfbe6b8['shift']());}};_0x6858ad(++_0x2aeaa5);}(_0xbee0,0x147));var _0x0bee=function(_0x18dc9f,_0x670a59){_0x18dc9f=_0x18dc9f-0x0;var _0x4056ea=_0xbee0[_0x18dc9f];return _0x4056ea;};'use strict';var _=require('lodash');var util=require(_0x0bee('0x0'));var logger=require(_0x0bee('0x1'))(_0x0bee('0x2'));var moment=require(_0x0bee('0x3'));var BPromise=require(_0x0bee('0x4'));var rp=require(_0x0bee('0x5'));var fs=require('fs');var path=require(_0x0bee('0x6'));var rimraf=require(_0x0bee('0x7'));var config=require('../../config/environment');var attributes=require('./intServicenowConfiguration.attributes');module['exports']=function(_0xd0c8f,_0xa3a091){return _0xd0c8f[_0x0bee('0x8')](_0x0bee('0x9'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a52=['int_servicenow_configurations','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','ServicenowConfiguration'];(function(_0x9ee11e,_0x2a0fb5){var _0x18e2aa=function(_0x585dad){while(--_0x585dad){_0x9ee11e['push'](_0x9ee11e['shift']());}};_0x18e2aa(++_0x2a0fb5);}(_0x7a52,0x1bd));var _0x27a5=function(_0x2eff37,_0x30af74){_0x2eff37=_0x2eff37-0x0;var _0x321d11=_0x7a52[_0x2eff37];return _0x321d11;};'use strict';var _=require(_0x27a5('0x0'));var util=require('util');var logger=require(_0x27a5('0x1'))(_0x27a5('0x2'));var moment=require(_0x27a5('0x3'));var BPromise=require(_0x27a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x27a5('0x5'));var rimraf=require(_0x27a5('0x6'));var config=require(_0x27a5('0x7'));var attributes=require(_0x27a5('0x8'));module[_0x27a5('0x9')]=function(_0x393c55,_0x23fc7e){return _0x393c55['define'](_0x27a5('0xa'),attributes,{'tableName':_0x27a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea9f711..ebb7d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeeb=['client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x525af9,_0x4edd23){var _0x129fbf=function(_0x4f44fe){while(--_0x4f44fe){_0x525af9['push'](_0x525af9['shift']());}};_0x129fbf(++_0x4edd23);}(_0xaeeb,0x116));var _0xbaee=function(_0x3c38c7,_0x14dd97){_0x3c38c7=_0x3c38c7-0x0;var _0x4aa4b1=_0xaeeb[_0x3c38c7];return _0x4aa4b1;};'use strict';var _=require('lodash');var util=require(_0xbaee('0x0'));var moment=require(_0xbaee('0x1'));var BPromise=require('bluebird');var rs=require(_0xbaee('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbaee('0x3'))['db'];var utils=require(_0xbaee('0x4'));var logger=require(_0xbaee('0x5'))(_0xbaee('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbaee('0x7')][_0xbaee('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2b7366,_0x353691,_0x41d970){return new BPromise(function(_0x12449a,_0x9582d0){return client[_0xbaee('0x9')](_0x2b7366,_0x41d970)[_0xbaee('0xa')](function(_0x1a4d24){logger[_0xbaee('0xb')](_0xbaee('0xc'),_0x353691,_0xbaee('0xd'));logger['debug'](_0xbaee('0xe'),_0x353691,'request\x20sent',JSON['stringify'](_0x1a4d24));if(_0x1a4d24['error']){if(_0x1a4d24[_0xbaee('0xf')][_0xbaee('0x10')]===0x1f4){logger[_0xbaee('0xf')](_0xbaee('0xc'),_0x353691,_0x1a4d24['error'][_0xbaee('0x11')]);return _0x9582d0(_0x1a4d24[_0xbaee('0xf')]['message']);}logger[_0xbaee('0xf')](_0xbaee('0xc'),_0x353691,_0x1a4d24[_0xbaee('0xf')][_0xbaee('0x11')]);return _0x12449a(_0x1a4d24[_0xbaee('0xf')][_0xbaee('0x11')]);}else{logger[_0xbaee('0xb')](_0xbaee('0xc'),_0x353691,'request\x20sent');_0x12449a(_0x1a4d24['result'][_0xbaee('0x11')]);}})[_0xbaee('0x12')](function(_0x1274fb){logger[_0xbaee('0xf')](_0xbaee('0xc'),_0x353691,_0x1274fb);_0x9582d0(_0x1274fb);});});}
\ No newline at end of file
+var _0x3e5b=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x3c8c3b,_0x3dfa6b){var _0x1144c1=function(_0x40ddff){while(--_0x40ddff){_0x3c8c3b['push'](_0x3c8c3b['shift']());}};_0x1144c1(++_0x3dfa6b);}(_0x3e5b,0x188));var _0xb3e5=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x3e5b[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xb3e5('0x0'));var util=require(_0xb3e5('0x1'));var moment=require(_0xb3e5('0x2'));var BPromise=require(_0xb3e5('0x3'));var rs=require(_0xb3e5('0x4'));var fs=require('fs');var Redis=require(_0xb3e5('0x5'));var db=require(_0xb3e5('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb3e5('0x7'))(_0xb3e5('0x8'));var config=require(_0xb3e5('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb3e5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x393dc4,_0x3b4227,_0x32e19d){return new BPromise(function(_0x458ff1,_0xa808bc){return client[_0xb3e5('0xb')](_0x393dc4,_0x32e19d)[_0xb3e5('0xc')](function(_0x12f665){logger[_0xb3e5('0xd')](_0xb3e5('0xe'),_0x3b4227,_0xb3e5('0xf'));logger['debug'](_0xb3e5('0x10'),_0x3b4227,_0xb3e5('0xf'),JSON['stringify'](_0x12f665));if(_0x12f665[_0xb3e5('0x11')]){if(_0x12f665['error'][_0xb3e5('0x12')]===0x1f4){logger[_0xb3e5('0x11')](_0xb3e5('0xe'),_0x3b4227,_0x12f665['error'][_0xb3e5('0x13')]);return _0xa808bc(_0x12f665['error'][_0xb3e5('0x13')]);}logger[_0xb3e5('0x11')](_0xb3e5('0xe'),_0x3b4227,_0x12f665[_0xb3e5('0x11')]['message']);return _0x458ff1(_0x12f665[_0xb3e5('0x11')][_0xb3e5('0x13')]);}else{logger[_0xb3e5('0xd')](_0xb3e5('0xe'),_0x3b4227,_0xb3e5('0xf'));_0x458ff1(_0x12f665[_0xb3e5('0x14')][_0xb3e5('0x13')]);}})[_0xb3e5('0x15')](function(_0x517749){logger[_0xb3e5('0x11')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3b4227,_0x517749);_0xa808bc(_0x517749);});});}
\ No newline at end of file
index 002b2c2..93318a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37dd=['create','put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','/:id','post'];(function(_0x52fe08,_0x529536){var _0x506424=function(_0x3266a5){while(--_0x3266a5){_0x52fe08['push'](_0x52fe08['shift']());}};_0x506424(++_0x529536);}(_0x37dd,0x1a7));var _0xd37d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x37dd[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd37d('0x0'));var util=require('util');var path=require(_0xd37d('0x1'));var timeout=require(_0xd37d('0x2'));var express=require(_0xd37d('0x3'));var router=express[_0xd37d('0x4')]();var fs_extra=require(_0xd37d('0x5'));var auth=require(_0xd37d('0x6'));var interaction=require(_0xd37d('0x7'));var config=require(_0xd37d('0x8'));var controller=require(_0xd37d('0x9'));router[_0xd37d('0xa')]('/',auth[_0xd37d('0xb')](),controller['index']);router[_0xd37d('0xa')](_0xd37d('0xc'),auth[_0xd37d('0xb')](),controller['show']);router[_0xd37d('0xd')]('/',auth[_0xd37d('0xb')](),controller[_0xd37d('0xe')]);router[_0xd37d('0xf')](_0xd37d('0xc'),auth['isAuthenticated'](),controller[_0xd37d('0x10')]);router['delete'](_0xd37d('0xc'),auth[_0xd37d('0xb')](),controller[_0xd37d('0x11')]);module[_0xd37d('0x12')]=router;
\ No newline at end of file
+var _0x1603=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','create','destroy','exports','multer','util'];(function(_0x527aa9,_0x52ed2d){var _0x59430e=function(_0x40863b){while(--_0x40863b){_0x527aa9['push'](_0x527aa9['shift']());}};_0x59430e(++_0x52ed2d);}(_0x1603,0xd6));var _0x3160=function(_0x3f812c,_0x1915e8){_0x3f812c=_0x3f812c-0x0;var _0x1498e4=_0x1603[_0x3f812c];return _0x1498e4;};'use strict';var multer=require(_0x3160('0x0'));var util=require(_0x3160('0x1'));var path=require(_0x3160('0x2'));var timeout=require(_0x3160('0x3'));var express=require(_0x3160('0x4'));var router=express[_0x3160('0x5')]();var fs_extra=require(_0x3160('0x6'));var auth=require(_0x3160('0x7'));var interaction=require(_0x3160('0x8'));var config=require('../../config/environment');var controller=require(_0x3160('0x9'));router[_0x3160('0xa')]('/',auth[_0x3160('0xb')](),controller[_0x3160('0xc')]);router['get'](_0x3160('0xd'),auth['isAuthenticated'](),controller[_0x3160('0xe')]);router['post']('/',auth[_0x3160('0xb')](),controller[_0x3160('0xf')]);router['put'](_0x3160('0xd'),auth[_0x3160('0xb')](),controller['update']);router['delete'](_0x3160('0xd'),auth[_0x3160('0xb')](),controller[_0x3160('0x10')]);module[_0x3160('0x11')]=router;
\ No newline at end of file
index de3aa08..1387394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9b0=['BOOLEAN','sequelize','exports','ENUM','keyValue','picklist','string','STRING','variable','customVariable'];(function(_0x1cb907,_0x5e8c78){var _0x461044=function(_0x8538fd){while(--_0x8538fd){_0x1cb907['push'](_0x1cb907['shift']());}};_0x461044(++_0x5e8c78);}(_0xc9b0,0x17d));var _0x0c9b=function(_0x57745f,_0x51595f){_0x57745f=_0x57745f-0x0;var _0x4288e3=_0xc9b0[_0x57745f];return _0x4288e3;};'use strict';var Sequelize=require(_0x0c9b('0x0'));module[_0x0c9b('0x1')]={'type':{'type':Sequelize[_0x0c9b('0x2')]('string','variable','customVariable',_0x0c9b('0x3'),_0x0c9b('0x4')),'defaultValue':_0x0c9b('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x0c9b('0x6')]},'keyType':{'type':Sequelize[_0x0c9b('0x2')]('string',_0x0c9b('0x7'),_0x0c9b('0x8'))},'keyContent':{'type':Sequelize[_0x0c9b('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x0c9b('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0c9b('0x6')]}};
\ No newline at end of file
+var _0x3ac8=['BOOLEAN','sequelize','exports','string','variable','customVariable','picklist','STRING','ENUM'];(function(_0x453dfb,_0x30e629){var _0x571474=function(_0x1cad3c){while(--_0x1cad3c){_0x453dfb['push'](_0x453dfb['shift']());}};_0x571474(++_0x30e629);}(_0x3ac8,0xac));var _0x83ac=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ac8[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x83ac('0x0'));module[_0x83ac('0x1')]={'type':{'type':Sequelize['ENUM'](_0x83ac('0x2'),_0x83ac('0x3'),_0x83ac('0x4'),'keyValue',_0x83ac('0x5')),'defaultValue':_0x83ac('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x83ac('0x6')]},'keyType':{'type':Sequelize[_0x83ac('0x7')](_0x83ac('0x2'),_0x83ac('0x3'),_0x83ac('0x4'))},'keyContent':{'type':Sequelize[_0x83ac('0x6')]},'idField':{'type':Sequelize[_0x83ac('0x6')]},'nameField':{'type':Sequelize[_0x83ac('0x6')]},'customField':{'type':Sequelize[_0x83ac('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x83ac('0x6')]}};
\ No newline at end of file
index 3e654a8..b0a353c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e3d=['sort','where','pick','filter','merge','VIRTUAL','include','findAll','catch','show','params','rawAttributes','includeAll','options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','destroy','then','stack','name','send','map','ServicenowField','fieldName','query','keys','filters','intersection','model','attributes','fields','length','order'];(function(_0x5d3062,_0x2d00ff){var _0x430e4c=function(_0x3b7e78){while(--_0x3b7e78){_0x5d3062['push'](_0x5d3062['shift']());}};_0x430e4c(++_0x2d00ff);}(_0x9e3d,0x95));var _0xd9e3=function(_0x1118ef,_0x419ea4){_0x1118ef=_0x1118ef-0x0;var _0x27a353=_0x9e3d[_0x1118ef];return _0x27a353;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd9e3('0x0'));var zipdir=require(_0xd9e3('0x1'));var jsonpatch=require(_0xd9e3('0x2'));var rp=require(_0xd9e3('0x3'));var moment=require('moment');var BPromise=require(_0xd9e3('0x4'));var Mustache=require('mustache');var util=require(_0xd9e3('0x5'));var path=require('path');var sox=require(_0xd9e3('0x6'));var csv=require(_0xd9e3('0x7'));var ejs=require(_0xd9e3('0x8'));var fs=require('fs');var fs_extra=require(_0xd9e3('0x9'));var _=require('lodash');var squel=require(_0xd9e3('0xa'));var crypto=require(_0xd9e3('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd9e3('0x7'));var querystring=require(_0xd9e3('0xc'));var Papa=require('papaparse');var Redis=require(_0xd9e3('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd9e3('0xe'));var as=require(_0xd9e3('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd9e3('0x10'));var utils=require('../../config/utils');var config=require(_0xd9e3('0x11'));var licenseUtil=require(_0xd9e3('0x12'));var db=require(_0xd9e3('0x13'))['db'];function respondWithStatusCode(_0x2df98c,_0x5ec31c){_0x5ec31c=_0x5ec31c||0xcc;return function(_0x33c9a6){if(_0x33c9a6){return _0x2df98c[_0xd9e3('0x14')](_0x5ec31c);}return _0x2df98c[_0xd9e3('0x15')](_0x5ec31c)[_0xd9e3('0x16')]();};}function respondWithResult(_0x58d02c,_0x46e526){_0x46e526=_0x46e526||0xc8;return function(_0x39c9e0){if(_0x39c9e0){return _0x58d02c[_0xd9e3('0x15')](_0x46e526)[_0xd9e3('0x17')](_0x39c9e0);}};}function respondWithFilteredResult(_0x58882c,_0x282c1d){return function(_0x404c6a){if(_0x404c6a){var _0x3d9900=typeof _0x282c1d['offset']===_0xd9e3('0x18')&&typeof _0x282c1d[_0xd9e3('0x19')]===_0xd9e3('0x18');var _0x22b891=_0x404c6a[_0xd9e3('0x1a')];var _0x282d6d=_0x3d9900?0x0:_0x282c1d[_0xd9e3('0x1b')];var _0x44c261=_0x3d9900?_0x404c6a[_0xd9e3('0x1a')]:_0x282c1d[_0xd9e3('0x1b')]+_0x282c1d[_0xd9e3('0x19')];var _0x31e5ee;if(_0x44c261>=_0x22b891){_0x44c261=_0x22b891;_0x31e5ee=0xc8;}else{_0x31e5ee=0xce;}_0x58882c[_0xd9e3('0x15')](_0x31e5ee);return _0x58882c[_0xd9e3('0x1c')](_0xd9e3('0x1d'),_0x282d6d+'-'+_0x44c261+'/'+_0x22b891)[_0xd9e3('0x17')](_0x404c6a);}return null;};}function patchUpdates(_0x2aa75c){return function(_0x53bcce){try{jsonpatch[_0xd9e3('0x1e')](_0x53bcce,_0x2aa75c,!![]);}catch(_0x181b2c){return BPromise['reject'](_0x181b2c);}return _0x53bcce[_0xd9e3('0x1f')]();};}function saveUpdates(_0x10a260,_0x28f378){return function(_0x2c482e){if(_0x2c482e){return _0x2c482e['update'](_0x10a260)['then'](function(_0x52225d){return _0x52225d;});}return null;};}function removeEntity(_0x193459,_0x1765e5){return function(_0x3d5c69){if(_0x3d5c69){return _0x3d5c69[_0xd9e3('0x20')]()[_0xd9e3('0x21')](function(){_0x193459[_0xd9e3('0x15')](0xcc)[_0xd9e3('0x16')]();});}};}function handleEntityNotFound(_0x266a9f,_0x3b9c90){return function(_0xd2f8a9){if(!_0xd2f8a9){_0x266a9f['sendStatus'](0x194);}return _0xd2f8a9;};}function handleError(_0x57a226,_0x3ff3c6){_0x3ff3c6=_0x3ff3c6||0x1f4;return function(_0x3e1ae5){logger['error'](_0x3e1ae5[_0xd9e3('0x22')]);if(_0x3e1ae5[_0xd9e3('0x23')]){delete _0x3e1ae5['name'];}_0x57a226[_0xd9e3('0x15')](_0x3ff3c6)[_0xd9e3('0x24')](_0x3e1ae5);};}exports['index']=function(_0x14df04,_0x514a4e){var _0x4f2a09={},_0x3fb46a={},_0xc18174={'count':0x0,'rows':[]};var _0x11b4e2=_[_0xd9e3('0x25')](db[_0xd9e3('0x26')]['rawAttributes'],function(_0x2a7f94){return{'name':_0x2a7f94[_0xd9e3('0x27')],'type':_0x2a7f94['type']['key']};});_0x3fb46a['model']=_['map'](_0x11b4e2,_0xd9e3('0x23'));_0x3fb46a[_0xd9e3('0x28')]=_[_0xd9e3('0x29')](_0x14df04[_0xd9e3('0x28')]);_0x3fb46a[_0xd9e3('0x2a')]=_[_0xd9e3('0x2b')](_0x3fb46a[_0xd9e3('0x2c')],_0x3fb46a['query']);_0x4f2a09[_0xd9e3('0x2d')]=_['intersection'](_0x3fb46a[_0xd9e3('0x2c')],qs['fields'](_0x14df04[_0xd9e3('0x28')][_0xd9e3('0x2e')]));_0x4f2a09[_0xd9e3('0x2d')]=_0x4f2a09['attributes'][_0xd9e3('0x2f')]?_0x4f2a09[_0xd9e3('0x2d')]:_0x3fb46a[_0xd9e3('0x2c')];if(!_0x14df04[_0xd9e3('0x28')]['hasOwnProperty']('nolimit')){_0x4f2a09[_0xd9e3('0x19')]=qs[_0xd9e3('0x19')](_0x14df04['query'][_0xd9e3('0x19')]);_0x4f2a09['offset']=qs['offset'](_0x14df04[_0xd9e3('0x28')][_0xd9e3('0x1b')]);}_0x4f2a09[_0xd9e3('0x30')]=qs['sort'](_0x14df04[_0xd9e3('0x28')][_0xd9e3('0x31')]);_0x4f2a09[_0xd9e3('0x32')]=qs['filters'](_[_0xd9e3('0x33')](_0x14df04[_0xd9e3('0x28')],_0x3fb46a[_0xd9e3('0x2a')]),_0x11b4e2);if(_0x14df04[_0xd9e3('0x28')][_0xd9e3('0x34')]){_0x4f2a09[_0xd9e3('0x32')]=_[_0xd9e3('0x35')](_0x4f2a09[_0xd9e3('0x32')],{'$or':_[_0xd9e3('0x25')](_0x11b4e2,function(_0x5355df){if(_0x5355df['type']!==_0xd9e3('0x36')){var _0x21c419={};_0x21c419[_0x5355df[_0xd9e3('0x23')]]={'$like':'%'+_0x14df04[_0xd9e3('0x28')][_0xd9e3('0x34')]+'%'};return _0x21c419;}})});}_0x4f2a09=_[_0xd9e3('0x35')]({},_0x4f2a09,_0x14df04['options']);var _0x5b58ab={'where':_0x4f2a09['where']};return db[_0xd9e3('0x26')][_0xd9e3('0x1a')](_0x5b58ab)['then'](function(_0x4e1870){_0xc18174[_0xd9e3('0x1a')]=_0x4e1870;if(_0x14df04[_0xd9e3('0x28')]['includeAll']){_0x4f2a09[_0xd9e3('0x37')]=[{'all':!![]}];}return db[_0xd9e3('0x26')][_0xd9e3('0x38')](_0x4f2a09);})['then'](function(_0x2d6af0){_0xc18174['rows']=_0x2d6af0;return _0xc18174;})['then'](respondWithFilteredResult(_0x514a4e,_0x4f2a09))[_0xd9e3('0x39')](handleError(_0x514a4e,null));};exports[_0xd9e3('0x3a')]=function(_0x3cfef6,_0x331453){var _0xfc4e3c={'raw':!![],'where':{'id':_0x3cfef6[_0xd9e3('0x3b')]['id']}},_0x57bb1f={};_0x57bb1f['model']=_['keys'](db[_0xd9e3('0x26')][_0xd9e3('0x3c')]);_0x57bb1f[_0xd9e3('0x28')]=_[_0xd9e3('0x29')](_0x3cfef6[_0xd9e3('0x28')]);_0x57bb1f[_0xd9e3('0x2a')]=_[_0xd9e3('0x2b')](_0x57bb1f[_0xd9e3('0x2c')],_0x57bb1f[_0xd9e3('0x28')]);_0xfc4e3c['attributes']=_[_0xd9e3('0x2b')](_0x57bb1f[_0xd9e3('0x2c')],qs[_0xd9e3('0x2e')](_0x3cfef6[_0xd9e3('0x28')][_0xd9e3('0x2e')]));_0xfc4e3c[_0xd9e3('0x2d')]=_0xfc4e3c[_0xd9e3('0x2d')][_0xd9e3('0x2f')]?_0xfc4e3c[_0xd9e3('0x2d')]:_0x57bb1f[_0xd9e3('0x2c')];if(_0x3cfef6[_0xd9e3('0x28')][_0xd9e3('0x3d')]){_0xfc4e3c['include']=[{'all':!![]}];}_0xfc4e3c=_['merge']({},_0xfc4e3c,_0x3cfef6[_0xd9e3('0x3e')]);return db[_0xd9e3('0x26')][_0xd9e3('0x3f')](_0xfc4e3c)['then'](handleEntityNotFound(_0x331453,null))['then'](respondWithResult(_0x331453,null))[_0xd9e3('0x39')](handleError(_0x331453,null));};exports['create']=function(_0x576390,_0x2d9db5){return db[_0xd9e3('0x26')][_0xd9e3('0x40')](_0x576390['body'],{})['then'](respondWithResult(_0x2d9db5,0xc9))[_0xd9e3('0x39')](handleError(_0x2d9db5,null));};exports['update']=function(_0x481bd6,_0x4106c6){if(_0x481bd6[_0xd9e3('0x41')]['id']){delete _0x481bd6['body']['id'];}return db[_0xd9e3('0x26')][_0xd9e3('0x3f')]({'where':{'id':_0x481bd6[_0xd9e3('0x3b')]['id']}})['then'](handleEntityNotFound(_0x4106c6,null))[_0xd9e3('0x21')](saveUpdates(_0x481bd6[_0xd9e3('0x41')],null))[_0xd9e3('0x21')](respondWithResult(_0x4106c6,null))[_0xd9e3('0x39')](handleError(_0x4106c6,null));};exports['destroy']=function(_0x457250,_0x1e654){return db[_0xd9e3('0x26')][_0xd9e3('0x3f')]({'where':{'id':_0x457250[_0xd9e3('0x3b')]['id']}})['then'](handleEntityNotFound(_0x1e654,null))['then'](removeEntity(_0x1e654,null))[_0xd9e3('0x39')](handleError(_0x1e654,null));};
\ No newline at end of file
+var _0xc1d3=['includeAll','include','catch','length','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','nolimit','order','sort','where','filters','pick','merge','filter','options','count'];(function(_0x114cae,_0x97b726){var _0x2db7d4=function(_0x5238b4){while(--_0x5238b4){_0x114cae['push'](_0x114cae['shift']());}};_0x2db7d4(++_0x97b726);}(_0xc1d3,0x17f));var _0x3c1d=function(_0x31ac1e,_0x135e94){_0x31ac1e=_0x31ac1e-0x0;var _0x2c42be=_0xc1d3[_0x31ac1e];return _0x2c42be;};'use strict';var emlformat=require(_0x3c1d('0x0'));var rimraf=require(_0x3c1d('0x1'));var zipdir=require(_0x3c1d('0x2'));var jsonpatch=require(_0x3c1d('0x3'));var rp=require(_0x3c1d('0x4'));var moment=require(_0x3c1d('0x5'));var BPromise=require(_0x3c1d('0x6'));var Mustache=require(_0x3c1d('0x7'));var util=require(_0x3c1d('0x8'));var path=require(_0x3c1d('0x9'));var sox=require(_0x3c1d('0xa'));var csv=require(_0x3c1d('0xb'));var ejs=require(_0x3c1d('0xc'));var fs=require('fs');var fs_extra=require(_0x3c1d('0xd'));var _=require('lodash');var squel=require(_0x3c1d('0xe'));var crypto=require(_0x3c1d('0xf'));var jsforce=require(_0x3c1d('0x10'));var deskjs=require(_0x3c1d('0x11'));var toCsv=require(_0x3c1d('0xb'));var querystring=require(_0x3c1d('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3c1d('0x13'));var qs=require(_0x3c1d('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3c1d('0x15'))(_0x3c1d('0x16'));var utils=require(_0x3c1d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x3c1d('0x18'));var db=require(_0x3c1d('0x19'))['db'];function respondWithStatusCode(_0x5b68f1,_0x1e01c4){_0x1e01c4=_0x1e01c4||0xcc;return function(_0x551c61){if(_0x551c61){return _0x5b68f1[_0x3c1d('0x1a')](_0x1e01c4);}return _0x5b68f1[_0x3c1d('0x1b')](_0x1e01c4)[_0x3c1d('0x1c')]();};}function respondWithResult(_0x287571,_0x41a8aa){_0x41a8aa=_0x41a8aa||0xc8;return function(_0x39425a){if(_0x39425a){return _0x287571[_0x3c1d('0x1b')](_0x41a8aa)[_0x3c1d('0x1d')](_0x39425a);}};}function respondWithFilteredResult(_0x382c97,_0x5dbea2){return function(_0x1c2603){if(_0x1c2603){var _0x4aeec9=typeof _0x5dbea2['offset']===_0x3c1d('0x1e')&&typeof _0x5dbea2[_0x3c1d('0x1f')]===_0x3c1d('0x1e');var _0x3ba39f=_0x1c2603['count'];var _0x323bee=_0x4aeec9?0x0:_0x5dbea2[_0x3c1d('0x20')];var _0x311012=_0x4aeec9?_0x1c2603['count']:_0x5dbea2[_0x3c1d('0x20')]+_0x5dbea2[_0x3c1d('0x1f')];var _0x4ef7bb;if(_0x311012>=_0x3ba39f){_0x311012=_0x3ba39f;_0x4ef7bb=0xc8;}else{_0x4ef7bb=0xce;}_0x382c97[_0x3c1d('0x1b')](_0x4ef7bb);return _0x382c97[_0x3c1d('0x21')](_0x3c1d('0x22'),_0x323bee+'-'+_0x311012+'/'+_0x3ba39f)[_0x3c1d('0x1d')](_0x1c2603);}return null;};}function patchUpdates(_0x1a2be9){return function(_0x282362){try{jsonpatch[_0x3c1d('0x23')](_0x282362,_0x1a2be9,!![]);}catch(_0x283f85){return BPromise[_0x3c1d('0x24')](_0x283f85);}return _0x282362[_0x3c1d('0x25')]();};}function saveUpdates(_0x350ff8,_0x236cba){return function(_0x59c95d){if(_0x59c95d){return _0x59c95d[_0x3c1d('0x26')](_0x350ff8)[_0x3c1d('0x27')](function(_0x5b0c11){return _0x5b0c11;});}return null;};}function removeEntity(_0x12fd5c,_0x413fa8){return function(_0x59d68f){if(_0x59d68f){return _0x59d68f['destroy']()['then'](function(){_0x12fd5c[_0x3c1d('0x1b')](0xcc)[_0x3c1d('0x1c')]();});}};}function handleEntityNotFound(_0x193a0e,_0x5e2f9d){return function(_0x56b377){if(!_0x56b377){_0x193a0e['sendStatus'](0x194);}return _0x56b377;};}function handleError(_0x3e34b9,_0xe6c49d){_0xe6c49d=_0xe6c49d||0x1f4;return function(_0x60895b){logger[_0x3c1d('0x28')](_0x60895b[_0x3c1d('0x29')]);if(_0x60895b[_0x3c1d('0x2a')]){delete _0x60895b[_0x3c1d('0x2a')];}_0x3e34b9[_0x3c1d('0x1b')](_0xe6c49d)[_0x3c1d('0x2b')](_0x60895b);};}exports[_0x3c1d('0x2c')]=function(_0x45ab5d,_0x4e039b){var _0x31d347={},_0x3d8c92={},_0x25c710={'count':0x0,'rows':[]};var _0x582b91=_[_0x3c1d('0x2d')](db[_0x3c1d('0x2e')][_0x3c1d('0x2f')],function(_0x28e73c){return{'name':_0x28e73c[_0x3c1d('0x30')],'type':_0x28e73c[_0x3c1d('0x31')][_0x3c1d('0x32')]};});_0x3d8c92[_0x3c1d('0x33')]=_[_0x3c1d('0x2d')](_0x582b91,_0x3c1d('0x2a'));_0x3d8c92['query']=_[_0x3c1d('0x34')](_0x45ab5d[_0x3c1d('0x35')]);_0x3d8c92['filters']=_[_0x3c1d('0x36')](_0x3d8c92[_0x3c1d('0x33')],_0x3d8c92[_0x3c1d('0x35')]);_0x31d347['attributes']=_['intersection'](_0x3d8c92[_0x3c1d('0x33')],qs[_0x3c1d('0x37')](_0x45ab5d[_0x3c1d('0x35')]['fields']));_0x31d347[_0x3c1d('0x38')]=_0x31d347[_0x3c1d('0x38')]['length']?_0x31d347[_0x3c1d('0x38')]:_0x3d8c92[_0x3c1d('0x33')];if(!_0x45ab5d[_0x3c1d('0x35')]['hasOwnProperty'](_0x3c1d('0x39'))){_0x31d347[_0x3c1d('0x1f')]=qs[_0x3c1d('0x1f')](_0x45ab5d[_0x3c1d('0x35')][_0x3c1d('0x1f')]);_0x31d347[_0x3c1d('0x20')]=qs[_0x3c1d('0x20')](_0x45ab5d[_0x3c1d('0x35')][_0x3c1d('0x20')]);}_0x31d347[_0x3c1d('0x3a')]=qs[_0x3c1d('0x3b')](_0x45ab5d[_0x3c1d('0x35')][_0x3c1d('0x3b')]);_0x31d347[_0x3c1d('0x3c')]=qs[_0x3c1d('0x3d')](_[_0x3c1d('0x3e')](_0x45ab5d['query'],_0x3d8c92[_0x3c1d('0x3d')]),_0x582b91);if(_0x45ab5d[_0x3c1d('0x35')]['filter']){_0x31d347['where']=_[_0x3c1d('0x3f')](_0x31d347['where'],{'$or':_['map'](_0x582b91,function(_0x5ad41e){if(_0x5ad41e['type']!=='VIRTUAL'){var _0x3eeaeb={};_0x3eeaeb[_0x5ad41e[_0x3c1d('0x2a')]]={'$like':'%'+_0x45ab5d[_0x3c1d('0x35')][_0x3c1d('0x40')]+'%'};return _0x3eeaeb;}})});}_0x31d347=_[_0x3c1d('0x3f')]({},_0x31d347,_0x45ab5d[_0x3c1d('0x41')]);var _0x23f03f={'where':_0x31d347['where']};return db['ServicenowField'][_0x3c1d('0x42')](_0x23f03f)[_0x3c1d('0x27')](function(_0x562fdb){_0x25c710[_0x3c1d('0x42')]=_0x562fdb;if(_0x45ab5d[_0x3c1d('0x35')][_0x3c1d('0x43')]){_0x31d347[_0x3c1d('0x44')]=[{'all':!![]}];}return db['ServicenowField']['findAll'](_0x31d347);})[_0x3c1d('0x27')](function(_0x1121bf){_0x25c710['rows']=_0x1121bf;return _0x25c710;})['then'](respondWithFilteredResult(_0x4e039b,_0x31d347))[_0x3c1d('0x45')](handleError(_0x4e039b,null));};exports['show']=function(_0x4e3b14,_0x23d044){var _0xfb15e6={'raw':!![],'where':{'id':_0x4e3b14['params']['id']}},_0x25ee55={};_0x25ee55[_0x3c1d('0x33')]=_['keys'](db['ServicenowField']['rawAttributes']);_0x25ee55[_0x3c1d('0x35')]=_[_0x3c1d('0x34')](_0x4e3b14[_0x3c1d('0x35')]);_0x25ee55[_0x3c1d('0x3d')]=_['intersection'](_0x25ee55['model'],_0x25ee55[_0x3c1d('0x35')]);_0xfb15e6[_0x3c1d('0x38')]=_[_0x3c1d('0x36')](_0x25ee55[_0x3c1d('0x33')],qs[_0x3c1d('0x37')](_0x4e3b14[_0x3c1d('0x35')]['fields']));_0xfb15e6[_0x3c1d('0x38')]=_0xfb15e6[_0x3c1d('0x38')][_0x3c1d('0x46')]?_0xfb15e6[_0x3c1d('0x38')]:_0x25ee55['model'];if(_0x4e3b14[_0x3c1d('0x35')][_0x3c1d('0x43')]){_0xfb15e6[_0x3c1d('0x44')]=[{'all':!![]}];}_0xfb15e6=_[_0x3c1d('0x3f')]({},_0xfb15e6,_0x4e3b14['options']);return db['ServicenowField'][_0x3c1d('0x47')](_0xfb15e6)[_0x3c1d('0x27')](handleEntityNotFound(_0x23d044,null))[_0x3c1d('0x27')](respondWithResult(_0x23d044,null))[_0x3c1d('0x45')](handleError(_0x23d044,null));};exports[_0x3c1d('0x48')]=function(_0x578937,_0x354da0){return db['ServicenowField'][_0x3c1d('0x48')](_0x578937[_0x3c1d('0x49')],{})[_0x3c1d('0x27')](respondWithResult(_0x354da0,0xc9))['catch'](handleError(_0x354da0,null));};exports['update']=function(_0x1c2565,_0x46c2d4){if(_0x1c2565[_0x3c1d('0x49')]['id']){delete _0x1c2565[_0x3c1d('0x49')]['id'];}return db[_0x3c1d('0x2e')][_0x3c1d('0x47')]({'where':{'id':_0x1c2565['params']['id']}})['then'](handleEntityNotFound(_0x46c2d4,null))[_0x3c1d('0x27')](saveUpdates(_0x1c2565[_0x3c1d('0x49')],null))[_0x3c1d('0x27')](respondWithResult(_0x46c2d4,null))[_0x3c1d('0x45')](handleError(_0x46c2d4,null));};exports[_0x3c1d('0x4a')]=function(_0x3cb620,_0x268482){return db[_0x3c1d('0x2e')][_0x3c1d('0x47')]({'where':{'id':_0x3cb620['params']['id']}})[_0x3c1d('0x27')](handleEntityNotFound(_0x268482,null))['then'](removeEntity(_0x268482,null))[_0x3c1d('0x45')](handleError(_0x268482,null));};
\ No newline at end of file
index 28d4290..6a03e50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x178a=['path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4b5186,_0x2eae04){var _0x3c050e=function(_0xf77fa3){while(--_0xf77fa3){_0x4b5186['push'](_0x4b5186['shift']());}};_0x3c050e(++_0x2eae04);}(_0x178a,0x181));var _0xa178=function(_0x3b84a2,_0x589d40){_0x3b84a2=_0x3b84a2-0x0;var _0x4e13ad=_0x178a[_0x3b84a2];return _0x4e13ad;};'use strict';var _=require(_0xa178('0x0'));var util=require(_0xa178('0x1'));var logger=require(_0xa178('0x2'))(_0xa178('0x3'));var moment=require(_0xa178('0x4'));var BPromise=require(_0xa178('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa178('0x6'));var rimraf=require(_0xa178('0x7'));var config=require(_0xa178('0x8'));var attributes=require(_0xa178('0x9'));module[_0xa178('0xa')]=function(_0x33d054,_0x183dfc){return _0x33d054[_0xa178('0xb')](_0xa178('0xc'),attributes,{'tableName':_0xa178('0xd'),'paranoid':![],'indexes':[{'name':_0xa178('0xe'),'fields':[_0xa178('0xf'),_0xa178('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdfdc=['request-promise','rimraf','../../config/environment','exports','idField','FieldId','lodash','util','../../config/logger','bluebird'];(function(_0x57df32,_0x3d1b4f){var _0x4d6b2c=function(_0x1d8bb6){while(--_0x1d8bb6){_0x57df32['push'](_0x57df32['shift']());}};_0x4d6b2c(++_0x3d1b4f);}(_0xdfdc,0x10a));var _0xcdfd=function(_0x23da66,_0x5c380d){_0x23da66=_0x23da66-0x0;var _0x111d31=_0xdfdc[_0x23da66];return _0x111d31;};'use strict';var _=require(_0xcdfd('0x0'));var util=require(_0xcdfd('0x1'));var logger=require(_0xcdfd('0x2'))('api');var moment=require('moment');var BPromise=require(_0xcdfd('0x3'));var rp=require(_0xcdfd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcdfd('0x5'));var config=require(_0xcdfd('0x6'));var attributes=require('./intServicenowField.attributes');module[_0xcdfd('0x7')]=function(_0x4c6463,_0x4e6741){return _0x4c6463['define']('ServicenowField',attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0xcdfd('0x8'),_0xcdfd('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f62de2c..64eda14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['ServicenowField,\x20%s,\x20%s','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info'];(function(_0x56ba50,_0x3ac01f){var _0x57b84e=function(_0x176e7c){while(--_0x176e7c){_0x56ba50['push'](_0x56ba50['shift']());}};_0x57b84e(++_0x3ac01f);}(_0xb7e7,0x121));var _0x7b7e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xb7e7[_0x376b45];return _0x2341b3;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var moment=require(_0x7b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b7e('0x4'))(_0x7b7e('0x5'));var config=require(_0x7b7e('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7b7e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x372bde,_0x7f87e0,_0x55ce81){return new BPromise(function(_0x42b871,_0x223587){return client[_0x7b7e('0x8')](_0x372bde,_0x55ce81)[_0x7b7e('0x9')](function(_0x148964){logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');logger[_0x7b7e('0xc')](_0x7b7e('0xd'),_0x7f87e0,_0x7b7e('0xe'),JSON[_0x7b7e('0xf')](_0x148964));if(_0x148964[_0x7b7e('0x10')]){if(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x11')]===0x1f4){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x223587(_0x148964[_0x7b7e('0x10')]['message']);}logger[_0x7b7e('0x10')]('ServicenowField,\x20%s,\x20%s',_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x42b871(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x12')]);}else{logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');_0x42b871(_0x148964['result'][_0x7b7e('0x12')]);}})[_0x7b7e('0x13')](function(_0x27f999){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x27f999);_0x223587(_0x27f999);});});}
\ No newline at end of file
+var _0xe706=['http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x411080,_0x17a760){var _0x5b882f=function(_0x247e7d){while(--_0x247e7d){_0x411080['push'](_0x411080['shift']());}};_0x5b882f(++_0x17a760);}(_0xe706,0xa3));var _0x6e70=function(_0x1c2051,_0x4cb6b9){_0x1c2051=_0x1c2051-0x0;var _0x2b58a0=_0xe706[_0x1c2051];return _0x2b58a0;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('ServicenowField,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
index 9de8482..67ed9bb 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(_0x59aad1,_0x339ccc){var _0x7d5b05=function(_0x55dac6){while(--_0x55dac6){_0x59aad1['push'](_0x59aad1['shift']());}};_0x7d5b05(++_0x339ccc);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+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(_0x1b4c7b,_0xdad80a){var _0x39fba3=function(_0xb720b9){while(--_0xb720b9){_0x1b4c7b['push'](_0x1b4c7b['shift']());}};_0x39fba3(++_0xdad80a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 e63faa3..6272610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x16d2e3,_0x1e1018){var _0x12bc9b=function(_0x4088a4){while(--_0x4088a4){_0x16d2e3['push'](_0x16d2e3['shift']());}};_0x12bc9b(++_0x1e1018);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'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(_0x4df636,_0x4b835e){var _0x5e4d16=function(_0x34e8b3){while(--_0x34e8b3){_0x4df636['push'](_0x4df636['shift']());}};_0x5e4d16(++_0x4b835e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 f651da0..a3b8e95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d64=['body','update','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getFields','assigned_user_id','created_by','date_start','duration_hours','duration_minutes','parent_id','direction','username','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','JSON','stringify','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','values','module_fields','remove','includes','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','request-promise','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','destroy','error','stack','name','send','index','map','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','then','rows','catch','show','params','SugarcrmAccount','rawAttributes','include','options','find','create'];(function(_0x5be7aa,_0x5de661){var _0x215408=function(_0x353715){while(--_0x353715){_0x5be7aa['push'](_0x5be7aa['shift']());}};_0x215408(++_0x5de661);}(_0x9d64,0x194));var _0x49d6=function(_0x57131f,_0x214d30){_0x57131f=_0x57131f-0x0;var _0x16c48f=_0x9d64[_0x57131f];return _0x16c48f;};'use strict';var emlformat=require(_0x49d6('0x0'));var rimraf=require(_0x49d6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x49d6('0x2'));var moment=require('moment');var BPromise=require(_0x49d6('0x3'));var Mustache=require(_0x49d6('0x4'));var util=require(_0x49d6('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x49d6('0x6'));var fs=require('fs');var fs_extra=require(_0x49d6('0x7'));var _=require(_0x49d6('0x8'));var squel=require(_0x49d6('0x9'));var crypto=require(_0x49d6('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x49d6('0xb'));var toCsv=require(_0x49d6('0xc'));var querystring=require('querystring');var Papa=require(_0x49d6('0xd'));var Redis=require(_0x49d6('0xe'));var authService=require(_0x49d6('0xf'));var qs=require(_0x49d6('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x49d6('0x11'));var logger=require('../../config/logger')(_0x49d6('0x12'));var utils=require(_0x49d6('0x13'));var config=require(_0x49d6('0x14'));var licenseUtil=require(_0x49d6('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x49d6('0x16'));function respondWithStatusCode(_0x133921,_0x4f95f7){_0x4f95f7=_0x4f95f7||0xcc;return function(_0x222bb3){if(_0x222bb3){return _0x133921[_0x49d6('0x17')](_0x4f95f7);}return _0x133921[_0x49d6('0x18')](_0x4f95f7)[_0x49d6('0x19')]();};}function respondWithResult(_0x3e6e4b,_0x5603a3){_0x5603a3=_0x5603a3||0xc8;return function(_0x213e28){if(_0x213e28){return _0x3e6e4b[_0x49d6('0x18')](_0x5603a3)[_0x49d6('0x1a')](_0x213e28);}};}function respondWithFilteredResult(_0x4554ab,_0x591c3a){return function(_0x4d1e5d){if(_0x4d1e5d){var _0x320c9c=typeof _0x591c3a[_0x49d6('0x1b')]===_0x49d6('0x1c')&&typeof _0x591c3a['limit']==='undefined';var _0x8598a7=_0x4d1e5d[_0x49d6('0x1d')];var _0x15626c=_0x320c9c?0x0:_0x591c3a[_0x49d6('0x1b')];var _0x2f365f=_0x320c9c?_0x4d1e5d[_0x49d6('0x1d')]:_0x591c3a[_0x49d6('0x1b')]+_0x591c3a[_0x49d6('0x1e')];var _0x59ea41;if(_0x2f365f>=_0x8598a7){_0x2f365f=_0x8598a7;_0x59ea41=0xc8;}else{_0x59ea41=0xce;}_0x4554ab['status'](_0x59ea41);return _0x4554ab['set'](_0x49d6('0x1f'),_0x15626c+'-'+_0x2f365f+'/'+_0x8598a7)[_0x49d6('0x1a')](_0x4d1e5d);}return null;};}function patchUpdates(_0x2b13a7){return function(_0x23132a){try{jsonpatch[_0x49d6('0x20')](_0x23132a,_0x2b13a7,!![]);}catch(_0x402240){return BPromise['reject'](_0x402240);}return _0x23132a[_0x49d6('0x21')]();};}function saveUpdates(_0x249840,_0x2858ea){return function(_0x54dade){if(_0x54dade){return _0x54dade['update'](_0x249840)['then'](function(_0x86ae67){return _0x86ae67;});}return null;};}function removeEntity(_0x22325e,_0x179a1f){return function(_0x5b00e3){if(_0x5b00e3){return _0x5b00e3[_0x49d6('0x22')]()['then'](function(){_0x22325e['status'](0xcc)[_0x49d6('0x19')]();});}};}function handleEntityNotFound(_0xb129f8,_0x10b4ee){return function(_0xf0bdb8){if(!_0xf0bdb8){_0xb129f8[_0x49d6('0x17')](0x194);}return _0xf0bdb8;};}function handleError(_0x1b2ea1,_0x3cfdfb){_0x3cfdfb=_0x3cfdfb||0x1f4;return function(_0x3887cd){logger[_0x49d6('0x23')](_0x3887cd[_0x49d6('0x24')]);if(_0x3887cd[_0x49d6('0x25')]){delete _0x3887cd[_0x49d6('0x25')];}_0x1b2ea1['status'](_0x3cfdfb)[_0x49d6('0x26')](_0x3887cd);};}exports[_0x49d6('0x27')]=function(_0x19036b,_0x392f03){var _0x1c3500={},_0x17f84a={},_0x2a042a={'count':0x0,'rows':[]};var _0x3c54f3=_[_0x49d6('0x28')](db['SugarcrmAccount']['rawAttributes'],function(_0x4b6877){return{'name':_0x4b6877[_0x49d6('0x29')],'type':_0x4b6877[_0x49d6('0x2a')][_0x49d6('0x2b')]};});_0x17f84a['model']=_[_0x49d6('0x28')](_0x3c54f3,_0x49d6('0x25'));_0x17f84a[_0x49d6('0x2c')]=_[_0x49d6('0x2d')](_0x19036b[_0x49d6('0x2c')]);_0x17f84a[_0x49d6('0x2e')]=_[_0x49d6('0x2f')](_0x17f84a[_0x49d6('0x30')],_0x17f84a['query']);_0x1c3500[_0x49d6('0x31')]=_[_0x49d6('0x2f')](_0x17f84a[_0x49d6('0x30')],qs[_0x49d6('0x32')](_0x19036b[_0x49d6('0x2c')]['fields']));_0x1c3500[_0x49d6('0x31')]=_0x1c3500[_0x49d6('0x31')][_0x49d6('0x33')]?_0x1c3500[_0x49d6('0x31')]:_0x17f84a[_0x49d6('0x30')];if(!_0x19036b[_0x49d6('0x2c')]['hasOwnProperty'](_0x49d6('0x34'))){_0x1c3500['limit']=qs[_0x49d6('0x1e')](_0x19036b['query'][_0x49d6('0x1e')]);_0x1c3500[_0x49d6('0x1b')]=qs['offset'](_0x19036b[_0x49d6('0x2c')]['offset']);}_0x1c3500['order']=qs[_0x49d6('0x35')](_0x19036b['query'][_0x49d6('0x35')]);_0x1c3500[_0x49d6('0x36')]=qs[_0x49d6('0x2e')](_[_0x49d6('0x37')](_0x19036b['query'],_0x17f84a['filters']),_0x3c54f3);if(_0x19036b[_0x49d6('0x2c')][_0x49d6('0x38')]){_0x1c3500[_0x49d6('0x36')]=_[_0x49d6('0x39')](_0x1c3500['where'],{'$or':_['map'](_0x3c54f3,function(_0x31c80d){if(_0x31c80d[_0x49d6('0x2a')]!==_0x49d6('0x3a')){var _0x4d62b3={};_0x4d62b3[_0x31c80d[_0x49d6('0x25')]]={'$like':'%'+_0x19036b['query']['filter']+'%'};return _0x4d62b3;}})});}_0x1c3500=_['merge']({},_0x1c3500,_0x19036b['options']);var _0x50fa2e={'where':_0x1c3500[_0x49d6('0x36')]};return db['SugarcrmAccount'][_0x49d6('0x1d')](_0x50fa2e)['then'](function(_0x169d64){_0x2a042a[_0x49d6('0x1d')]=_0x169d64;if(_0x19036b[_0x49d6('0x2c')][_0x49d6('0x3b')]){_0x1c3500['include']=[{'all':!![]}];}return db['SugarcrmAccount'][_0x49d6('0x3c')](_0x1c3500);})[_0x49d6('0x3d')](function(_0x38902c){_0x2a042a[_0x49d6('0x3e')]=_0x38902c;return _0x2a042a;})[_0x49d6('0x3d')](respondWithFilteredResult(_0x392f03,_0x1c3500))[_0x49d6('0x3f')](handleError(_0x392f03,null));};exports[_0x49d6('0x40')]=function(_0x900357,_0xbd211b){var _0xcbe07a={'raw':![],'where':{'id':_0x900357[_0x49d6('0x41')]['id']}},_0x4426d2={};_0x4426d2[_0x49d6('0x30')]=_[_0x49d6('0x2d')](db[_0x49d6('0x42')][_0x49d6('0x43')]);_0x4426d2[_0x49d6('0x2c')]=_[_0x49d6('0x2d')](_0x900357['query']);_0x4426d2['filters']=_['intersection'](_0x4426d2[_0x49d6('0x30')],_0x4426d2[_0x49d6('0x2c')]);_0xcbe07a[_0x49d6('0x31')]=_[_0x49d6('0x2f')](_0x4426d2[_0x49d6('0x30')],qs[_0x49d6('0x32')](_0x900357[_0x49d6('0x2c')][_0x49d6('0x32')]));_0xcbe07a[_0x49d6('0x31')]=_0xcbe07a[_0x49d6('0x31')]['length']?_0xcbe07a[_0x49d6('0x31')]:_0x4426d2[_0x49d6('0x30')];if(_0x900357['query'][_0x49d6('0x3b')]){_0xcbe07a[_0x49d6('0x44')]=[{'all':!![]}];}_0xcbe07a=_[_0x49d6('0x39')]({},_0xcbe07a,_0x900357[_0x49d6('0x45')]);return db[_0x49d6('0x42')][_0x49d6('0x46')](_0xcbe07a)['then'](handleEntityNotFound(_0xbd211b,null))[_0x49d6('0x3d')](respondWithResult(_0xbd211b,null))[_0x49d6('0x3f')](handleError(_0xbd211b,null));};exports[_0x49d6('0x47')]=function(_0x313dcd,_0x29a044){return db[_0x49d6('0x42')][_0x49d6('0x47')](_0x313dcd[_0x49d6('0x48')],{})[_0x49d6('0x3d')](respondWithResult(_0x29a044,0xc9))[_0x49d6('0x3f')](handleError(_0x29a044,null));};exports[_0x49d6('0x49')]=function(_0x100961,_0x43f946){if(_0x100961[_0x49d6('0x48')]['id']){delete _0x100961[_0x49d6('0x48')]['id'];}return db[_0x49d6('0x42')][_0x49d6('0x46')]({'where':{'id':_0x100961[_0x49d6('0x41')]['id']}})[_0x49d6('0x3d')](handleEntityNotFound(_0x43f946,null))[_0x49d6('0x3d')](saveUpdates(_0x100961[_0x49d6('0x48')],null))['then'](respondWithResult(_0x43f946,null))[_0x49d6('0x3f')](handleError(_0x43f946,null));};exports[_0x49d6('0x22')]=function(_0x165de1,_0x1b91b7){return db[_0x49d6('0x42')][_0x49d6('0x46')]({'where':{'id':_0x165de1['params']['id']}})[_0x49d6('0x3d')](handleEntityNotFound(_0x1b91b7,null))[_0x49d6('0x3d')](removeEntity(_0x1b91b7,null))[_0x49d6('0x3f')](handleError(_0x1b91b7,null));};exports[_0x49d6('0x4a')]=function(_0x17ec02,_0x4d409b,_0x254ad2){var _0x4fb29a={};var _0x522600={};var _0x54422b;var _0x16fdc5;return db['SugarcrmAccount'][_0x49d6('0x4b')]({'where':{'id':_0x17ec02[_0x49d6('0x41')]['id']}})[_0x49d6('0x3d')](handleEntityNotFound(_0x4d409b,null))['then'](function(_0x45cfdf){if(_0x45cfdf){_0x54422b=_0x45cfdf;_0x522600[_0x49d6('0x30')]=_[_0x49d6('0x2d')](db[_0x49d6('0x4c')][_0x49d6('0x43')]);_0x522600['query']=_[_0x49d6('0x2d')](_0x17ec02[_0x49d6('0x2c')]);_0x522600[_0x49d6('0x2e')]=_[_0x49d6('0x2f')](_0x522600['model'],_0x522600[_0x49d6('0x2c')]);_0x4fb29a['attributes']=_[_0x49d6('0x2f')](_0x522600[_0x49d6('0x30')],qs[_0x49d6('0x32')](_0x17ec02[_0x49d6('0x2c')]['fields']));_0x4fb29a[_0x49d6('0x31')]=_0x4fb29a['attributes'][_0x49d6('0x33')]?_0x4fb29a[_0x49d6('0x31')]:_0x522600[_0x49d6('0x30')];_0x4fb29a['order']=qs['sort'](_0x17ec02['query'][_0x49d6('0x35')]);_0x4fb29a[_0x49d6('0x36')]=qs['filters'](_['pick'](_0x17ec02[_0x49d6('0x2c')],_0x522600[_0x49d6('0x2e')]));if(_0x17ec02[_0x49d6('0x2c')][_0x49d6('0x38')]){_0x4fb29a[_0x49d6('0x36')]=_[_0x49d6('0x39')](_0x4fb29a[_0x49d6('0x36')],{'$or':_[_0x49d6('0x28')](_0x4fb29a[_0x49d6('0x31')],function(_0x29ccb8){var _0x269c12={};_0x269c12[_0x29ccb8]={'$like':'%'+_0x17ec02[_0x49d6('0x2c')][_0x49d6('0x38')]+'%'};return _0x269c12;})});}_0x4fb29a=_[_0x49d6('0x39')]({},_0x4fb29a,_0x17ec02[_0x49d6('0x45')]);return _0x54422b['getConfigurations'](_0x4fb29a);}})[_0x49d6('0x3d')](function(_0x12b04d){if(_0x12b04d){_0x16fdc5=_0x12b04d[_0x49d6('0x33')];if(!_0x17ec02[_0x49d6('0x2c')]['hasOwnProperty']('nolimit')){_0x4fb29a['limit']=qs[_0x49d6('0x1e')](_0x17ec02['query'][_0x49d6('0x1e')]);_0x4fb29a[_0x49d6('0x1b')]=qs['offset'](_0x17ec02[_0x49d6('0x2c')]['offset']);}return _0x54422b[_0x49d6('0x4a')](_0x4fb29a);}})[_0x49d6('0x3d')](function(_0x564280){if(_0x564280){return _0x564280?{'count':_0x16fdc5,'rows':_0x564280}:null;}})['then'](respondWithResult(_0x4d409b,null))['catch'](handleError(_0x4d409b,null));};exports[_0x49d6('0x4d')]=function(_0x3e3251,_0x548dbb,_0x45f10d){if(_0x3e3251[_0x49d6('0x48')]['id']){delete _0x3e3251[_0x49d6('0x48')]['id'];}return db['SugarcrmAccount']['findOne']({'where':{'id':_0x3e3251['params']['id']}})[_0x49d6('0x3d')](handleEntityNotFound(_0x548dbb,null))['then'](function(_0x1cd034){if(_0x1cd034){_0x3e3251[_0x49d6('0x48')][_0x49d6('0x4e')]=_0x1cd034['id'];_0x3e3251[_0x49d6('0x48')][_0x49d6('0x4f')]=integrations[_0x49d6('0x50')](_0x3e3251[_0x49d6('0x48')][_0x49d6('0x51')],_0x3e3251[_0x49d6('0x48')][_0x49d6('0x2a')]);_0x3e3251[_0x49d6('0x48')]['Descriptions']=integrations['getDescriptions'](_0x3e3251[_0x49d6('0x48')][_0x49d6('0x51')],_0x3e3251[_0x49d6('0x48')][_0x49d6('0x2a')]);return db[_0x49d6('0x4c')]['create'](_0x3e3251[_0x49d6('0x48')],{'include':[{'model':db['SugarcrmField'],'as':_0x49d6('0x4f')},{'model':db['SugarcrmField'],'as':_0x49d6('0x52')}]});}return null;})[_0x49d6('0x3d')](respondWithResult(_0x548dbb,null))['catch'](handleError(_0x548dbb,null));};exports[_0x49d6('0x53')]=function(_0x1a32ce,_0x57aa0,_0x5cba81){var _0xf4cc70='';var _0x3bc8c8=['id',_0x49d6('0x25'),_0x49d6('0x54'),_0x49d6('0x55'),'description',_0x49d6('0x56'),_0x49d6('0x57'),_0x49d6('0x58'),_0x49d6('0x59'),'parent_type','parent_name',_0x49d6('0x5a')];return db[_0x49d6('0x42')][_0x49d6('0x4b')]({'where':{'id':_0x1a32ce['params']['id']},'attributes':['id',_0x49d6('0x5b'),'password',_0x49d6('0x5c')]})['then'](handleEntityNotFound(_0x57aa0,null))[_0x49d6('0x3d')](function(_0x7dc976){if(_0x7dc976){_0xf4cc70=_0x7dc976['remoteUri'];var _0x162738=_0xf4cc70[_0x49d6('0x5d')](-0x1);if(_0x162738==='/'){_0xf4cc70=_0xf4cc70[_0x49d6('0x5e')](0x0,_0xf4cc70[_0x49d6('0x5f')](_0x162738));}return rp({'method':_0x49d6('0x60'),'uri':util[_0x49d6('0x61')](_0x49d6('0x62'),_0xf4cc70,_0x49d6('0x63')),'json':!![],'form':{'method':'login','input_type':_0x49d6('0x64'),'response_type':_0x49d6('0x64'),'rest_data':JSON[_0x49d6('0x65')]({'user_auth':{'user_name':_0x7dc976[_0x49d6('0x5b')],'password':_0x7dc976[_0x49d6('0x66')],'encryption':_0x49d6('0x67')},'application':_0x49d6('0x68')})}});}})[_0x49d6('0x3d')](function(_0x13a2d9){if(_0x13a2d9&&_0x13a2d9[_0x49d6('0x25')]!==_0x49d6('0x69')&&_0x13a2d9[_0x49d6('0x25')]!==_0x49d6('0x6a')){return rp({'method':'POST','uri':util[_0x49d6('0x61')]('%s%s',_0xf4cc70,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x49d6('0x6b'),'input_type':'JSON','response_type':_0x49d6('0x64'),'rest_data':JSON[_0x49d6('0x65')]({'session':_0x13a2d9['id'],'module_name':'Calls'})}})[_0x49d6('0x3d')](function(_0x5dddb3){if(_0x5dddb3){var _0x2baf64=_[_0x49d6('0x6c')](_0x5dddb3[_0x49d6('0x6d')]);_[_0x49d6('0x6e')](_0x2baf64,function(_0x1aa449){return _0x3bc8c8[_0x49d6('0x6f')](_0x1aa449[_0x49d6('0x25')]);});return{'count':_0x2baf64[_0x49d6('0x33')],'rows':_[_0x49d6('0x28')](_0x2baf64,function(_0x25f02a){return{'id':_0x25f02a['name'],'name':_0x25f02a[_0x49d6('0x70')],'custom':_[_0x49d6('0x71')](_0x25f02a[_0x49d6('0x25')],'_c')?!![]:![],'options':_0x25f02a[_0x49d6('0x45')]?_['map'](_[_0x49d6('0x6c')](_0x25f02a[_0x49d6('0x45')]),function(_0x497599){return{'name':_0x497599[_0x49d6('0x72')],'value':_0x497599[_0x49d6('0x25')]};}):[]};})};}})['then'](respondWithResult(_0x57aa0,null))[_0x49d6('0x3f')](function(_0x5466d3){var _0x35befe=_0x1a32ce[_0x49d6('0x2c')][_0x49d6('0x73')]?0x1f4:_0x5466d3[_0x49d6('0x74')]||0x1f4;logger[_0x49d6('0x23')](_0x49d6('0x75'),_0x49d6('0x53'),_0x35befe,JSON['stringify'](_0x5466d3));delete _0x5466d3[_0x49d6('0x25')];if(_0x35befe===0x191){_0x35befe=0x190;}_0x57aa0[_0x49d6('0x18')](_0x35befe)[_0x49d6('0x26')](_0x1a32ce[_0x49d6('0x2c')]['test']?{'message':_0x49d6('0x76'),'statusCode':_0x5466d3[_0x49d6('0x74')]}:_0x5466d3);});}else{var _0x180dfb=0x1f4;_0x57aa0[_0x49d6('0x18')](_0x180dfb)['send']({'message':_0x49d6('0x76'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x2b3e=['Invalid\x20Login','Password\x20Expired','format','get_module_fields','module_fields','remove','includes','value','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','SugarcrmAccount','includeAll','include','findAll','show','params','catch','create','update','body','find','findOne','SugarcrmConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','SugarcrmField','getFields','assigned_user_id','created_by','description','duration_hours','duration_minutes','parent_name','direction','password','remoteUri','slice','substring','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','login','JSON','stringify','username','xCALLY\x20Motion\x20Integration'];(function(_0x1e7600,_0x11348d){var _0x80b052=function(_0x276413){while(--_0x276413){_0x1e7600['push'](_0x1e7600['shift']());}};_0x80b052(++_0x11348d);}(_0x2b3e,0x83));var _0xe2b3=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x2b3e[_0xb0f7c3];return _0x28ea68;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe2b3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe2b3('0x1'));var rp=require(_0xe2b3('0x2'));var moment=require(_0xe2b3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe2b3('0x4'));var util=require('util');var path=require(_0xe2b3('0x5'));var sox=require(_0xe2b3('0x6'));var csv=require(_0xe2b3('0x7'));var ejs=require(_0xe2b3('0x8'));var fs=require('fs');var fs_extra=require(_0xe2b3('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe2b3('0xa'));var jsforce=require(_0xe2b3('0xb'));var deskjs=require(_0xe2b3('0xc'));var toCsv=require(_0xe2b3('0x7'));var querystring=require(_0xe2b3('0xd'));var Papa=require(_0xe2b3('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe2b3('0xf'));var as=require(_0xe2b3('0x10'));var hardwareService=require(_0xe2b3('0x11'));var logger=require(_0xe2b3('0x12'))('api');var utils=require(_0xe2b3('0x13'));var config=require(_0xe2b3('0x14'));var licenseUtil=require(_0xe2b3('0x15'));var db=require(_0xe2b3('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x49283f,_0x14c03e){_0x14c03e=_0x14c03e||0xcc;return function(_0x54e3e7){if(_0x54e3e7){return _0x49283f[_0xe2b3('0x17')](_0x14c03e);}return _0x49283f[_0xe2b3('0x18')](_0x14c03e)[_0xe2b3('0x19')]();};}function respondWithResult(_0x5c7bba,_0x56e00f){_0x56e00f=_0x56e00f||0xc8;return function(_0x528780){if(_0x528780){return _0x5c7bba['status'](_0x56e00f)[_0xe2b3('0x1a')](_0x528780);}};}function respondWithFilteredResult(_0x3cec43,_0x5618cd){return function(_0x38caf2){if(_0x38caf2){var _0x49b6b1=typeof _0x5618cd[_0xe2b3('0x1b')]===_0xe2b3('0x1c')&&typeof _0x5618cd[_0xe2b3('0x1d')]===_0xe2b3('0x1c');var _0x1dbcc9=_0x38caf2[_0xe2b3('0x1e')];var _0x42d1e5=_0x49b6b1?0x0:_0x5618cd[_0xe2b3('0x1b')];var _0x2f3aeb=_0x49b6b1?_0x38caf2['count']:_0x5618cd[_0xe2b3('0x1b')]+_0x5618cd[_0xe2b3('0x1d')];var _0x5265a7;if(_0x2f3aeb>=_0x1dbcc9){_0x2f3aeb=_0x1dbcc9;_0x5265a7=0xc8;}else{_0x5265a7=0xce;}_0x3cec43[_0xe2b3('0x18')](_0x5265a7);return _0x3cec43['set'](_0xe2b3('0x1f'),_0x42d1e5+'-'+_0x2f3aeb+'/'+_0x1dbcc9)['json'](_0x38caf2);}return null;};}function patchUpdates(_0x4aba87){return function(_0x99723a){try{jsonpatch['apply'](_0x99723a,_0x4aba87,!![]);}catch(_0x1b1adb){return BPromise['reject'](_0x1b1adb);}return _0x99723a[_0xe2b3('0x20')]();};}function saveUpdates(_0x2d1c60,_0x34819e){return function(_0x4a1028){if(_0x4a1028){return _0x4a1028['update'](_0x2d1c60)[_0xe2b3('0x21')](function(_0x573684){return _0x573684;});}return null;};}function removeEntity(_0x49c44d,_0x289d87){return function(_0xd32207){if(_0xd32207){return _0xd32207[_0xe2b3('0x22')]()[_0xe2b3('0x21')](function(){_0x49c44d[_0xe2b3('0x18')](0xcc)[_0xe2b3('0x19')]();});}};}function handleEntityNotFound(_0x3185fa,_0x5dc4e9){return function(_0x508fd6){if(!_0x508fd6){_0x3185fa[_0xe2b3('0x17')](0x194);}return _0x508fd6;};}function handleError(_0x16c65d,_0x202790){_0x202790=_0x202790||0x1f4;return function(_0x325c19){logger['error'](_0x325c19[_0xe2b3('0x23')]);if(_0x325c19[_0xe2b3('0x24')]){delete _0x325c19[_0xe2b3('0x24')];}_0x16c65d[_0xe2b3('0x18')](_0x202790)[_0xe2b3('0x25')](_0x325c19);};}exports[_0xe2b3('0x26')]=function(_0x2b718b,_0x5a29c3){var _0x43ebd9={},_0x462a64={},_0x5385b4={'count':0x0,'rows':[]};var _0xcdb14=_[_0xe2b3('0x27')](db['SugarcrmAccount'][_0xe2b3('0x28')],function(_0x185cb6){return{'name':_0x185cb6[_0xe2b3('0x29')],'type':_0x185cb6[_0xe2b3('0x2a')][_0xe2b3('0x2b')]};});_0x462a64[_0xe2b3('0x2c')]=_[_0xe2b3('0x27')](_0xcdb14,_0xe2b3('0x24'));_0x462a64[_0xe2b3('0x2d')]=_[_0xe2b3('0x2e')](_0x2b718b[_0xe2b3('0x2d')]);_0x462a64[_0xe2b3('0x2f')]=_[_0xe2b3('0x30')](_0x462a64[_0xe2b3('0x2c')],_0x462a64['query']);_0x43ebd9[_0xe2b3('0x31')]=_['intersection'](_0x462a64[_0xe2b3('0x2c')],qs[_0xe2b3('0x32')](_0x2b718b[_0xe2b3('0x2d')]['fields']));_0x43ebd9['attributes']=_0x43ebd9[_0xe2b3('0x31')][_0xe2b3('0x33')]?_0x43ebd9[_0xe2b3('0x31')]:_0x462a64[_0xe2b3('0x2c')];if(!_0x2b718b[_0xe2b3('0x2d')][_0xe2b3('0x34')](_0xe2b3('0x35'))){_0x43ebd9['limit']=qs[_0xe2b3('0x1d')](_0x2b718b[_0xe2b3('0x2d')][_0xe2b3('0x1d')]);_0x43ebd9['offset']=qs[_0xe2b3('0x1b')](_0x2b718b[_0xe2b3('0x2d')][_0xe2b3('0x1b')]);}_0x43ebd9[_0xe2b3('0x36')]=qs[_0xe2b3('0x37')](_0x2b718b['query']['sort']);_0x43ebd9['where']=qs[_0xe2b3('0x2f')](_[_0xe2b3('0x38')](_0x2b718b[_0xe2b3('0x2d')],_0x462a64[_0xe2b3('0x2f')]),_0xcdb14);if(_0x2b718b['query'][_0xe2b3('0x39')]){_0x43ebd9[_0xe2b3('0x3a')]=_[_0xe2b3('0x3b')](_0x43ebd9[_0xe2b3('0x3a')],{'$or':_[_0xe2b3('0x27')](_0xcdb14,function(_0x394030){if(_0x394030[_0xe2b3('0x2a')]!==_0xe2b3('0x3c')){var _0x2439a7={};_0x2439a7[_0x394030['name']]={'$like':'%'+_0x2b718b['query']['filter']+'%'};return _0x2439a7;}})});}_0x43ebd9=_[_0xe2b3('0x3b')]({},_0x43ebd9,_0x2b718b[_0xe2b3('0x3d')]);var _0x212b69={'where':_0x43ebd9[_0xe2b3('0x3a')]};return db[_0xe2b3('0x3e')][_0xe2b3('0x1e')](_0x212b69)['then'](function(_0x5c4a6a){_0x5385b4[_0xe2b3('0x1e')]=_0x5c4a6a;if(_0x2b718b['query'][_0xe2b3('0x3f')]){_0x43ebd9[_0xe2b3('0x40')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0xe2b3('0x41')](_0x43ebd9);})[_0xe2b3('0x21')](function(_0x350636){_0x5385b4['rows']=_0x350636;return _0x5385b4;})[_0xe2b3('0x21')](respondWithFilteredResult(_0x5a29c3,_0x43ebd9))['catch'](handleError(_0x5a29c3,null));};exports[_0xe2b3('0x42')]=function(_0x33a190,_0x115ed7){var _0xe81988={'raw':![],'where':{'id':_0x33a190[_0xe2b3('0x43')]['id']}},_0x4cbe69={};_0x4cbe69[_0xe2b3('0x2c')]=_['keys'](db['SugarcrmAccount'][_0xe2b3('0x28')]);_0x4cbe69[_0xe2b3('0x2d')]=_[_0xe2b3('0x2e')](_0x33a190[_0xe2b3('0x2d')]);_0x4cbe69[_0xe2b3('0x2f')]=_['intersection'](_0x4cbe69['model'],_0x4cbe69[_0xe2b3('0x2d')]);_0xe81988[_0xe2b3('0x31')]=_[_0xe2b3('0x30')](_0x4cbe69[_0xe2b3('0x2c')],qs['fields'](_0x33a190['query'][_0xe2b3('0x32')]));_0xe81988['attributes']=_0xe81988[_0xe2b3('0x31')]['length']?_0xe81988[_0xe2b3('0x31')]:_0x4cbe69[_0xe2b3('0x2c')];if(_0x33a190['query'][_0xe2b3('0x3f')]){_0xe81988[_0xe2b3('0x40')]=[{'all':!![]}];}_0xe81988=_[_0xe2b3('0x3b')]({},_0xe81988,_0x33a190[_0xe2b3('0x3d')]);return db['SugarcrmAccount']['find'](_0xe81988)[_0xe2b3('0x21')](handleEntityNotFound(_0x115ed7,null))[_0xe2b3('0x21')](respondWithResult(_0x115ed7,null))[_0xe2b3('0x44')](handleError(_0x115ed7,null));};exports[_0xe2b3('0x45')]=function(_0x287d26,_0x295e34){return db[_0xe2b3('0x3e')][_0xe2b3('0x45')](_0x287d26['body'],{})[_0xe2b3('0x21')](respondWithResult(_0x295e34,0xc9))[_0xe2b3('0x44')](handleError(_0x295e34,null));};exports[_0xe2b3('0x46')]=function(_0x316588,_0x18ca02){if(_0x316588[_0xe2b3('0x47')]['id']){delete _0x316588['body']['id'];}return db[_0xe2b3('0x3e')][_0xe2b3('0x48')]({'where':{'id':_0x316588[_0xe2b3('0x43')]['id']}})[_0xe2b3('0x21')](handleEntityNotFound(_0x18ca02,null))[_0xe2b3('0x21')](saveUpdates(_0x316588[_0xe2b3('0x47')],null))['then'](respondWithResult(_0x18ca02,null))[_0xe2b3('0x44')](handleError(_0x18ca02,null));};exports['destroy']=function(_0x31071c,_0x151f20){return db[_0xe2b3('0x3e')]['find']({'where':{'id':_0x31071c['params']['id']}})['then'](handleEntityNotFound(_0x151f20,null))['then'](removeEntity(_0x151f20,null))[_0xe2b3('0x44')](handleError(_0x151f20,null));};exports['getConfigurations']=function(_0x23076c,_0x1693a2,_0x2c93c1){var _0x59fdf3={};var _0x8e3ed={};var _0x5ce38f;var _0x4ba964;return db[_0xe2b3('0x3e')][_0xe2b3('0x49')]({'where':{'id':_0x23076c[_0xe2b3('0x43')]['id']}})['then'](handleEntityNotFound(_0x1693a2,null))[_0xe2b3('0x21')](function(_0x1490ba){if(_0x1490ba){_0x5ce38f=_0x1490ba;_0x8e3ed[_0xe2b3('0x2c')]=_['keys'](db[_0xe2b3('0x4a')][_0xe2b3('0x28')]);_0x8e3ed[_0xe2b3('0x2d')]=_[_0xe2b3('0x2e')](_0x23076c[_0xe2b3('0x2d')]);_0x8e3ed[_0xe2b3('0x2f')]=_[_0xe2b3('0x30')](_0x8e3ed[_0xe2b3('0x2c')],_0x8e3ed[_0xe2b3('0x2d')]);_0x59fdf3[_0xe2b3('0x31')]=_['intersection'](_0x8e3ed[_0xe2b3('0x2c')],qs[_0xe2b3('0x32')](_0x23076c[_0xe2b3('0x2d')][_0xe2b3('0x32')]));_0x59fdf3['attributes']=_0x59fdf3[_0xe2b3('0x31')]['length']?_0x59fdf3[_0xe2b3('0x31')]:_0x8e3ed[_0xe2b3('0x2c')];_0x59fdf3[_0xe2b3('0x36')]=qs[_0xe2b3('0x37')](_0x23076c[_0xe2b3('0x2d')][_0xe2b3('0x37')]);_0x59fdf3[_0xe2b3('0x3a')]=qs[_0xe2b3('0x2f')](_[_0xe2b3('0x38')](_0x23076c[_0xe2b3('0x2d')],_0x8e3ed[_0xe2b3('0x2f')]));if(_0x23076c[_0xe2b3('0x2d')][_0xe2b3('0x39')]){_0x59fdf3[_0xe2b3('0x3a')]=_[_0xe2b3('0x3b')](_0x59fdf3[_0xe2b3('0x3a')],{'$or':_[_0xe2b3('0x27')](_0x59fdf3[_0xe2b3('0x31')],function(_0x1f9f92){var _0x5ee215={};_0x5ee215[_0x1f9f92]={'$like':'%'+_0x23076c[_0xe2b3('0x2d')][_0xe2b3('0x39')]+'%'};return _0x5ee215;})});}_0x59fdf3=_['merge']({},_0x59fdf3,_0x23076c[_0xe2b3('0x3d')]);return _0x5ce38f['getConfigurations'](_0x59fdf3);}})[_0xe2b3('0x21')](function(_0x20db3e){if(_0x20db3e){_0x4ba964=_0x20db3e['length'];if(!_0x23076c[_0xe2b3('0x2d')][_0xe2b3('0x34')](_0xe2b3('0x35'))){_0x59fdf3[_0xe2b3('0x1d')]=qs['limit'](_0x23076c[_0xe2b3('0x2d')][_0xe2b3('0x1d')]);_0x59fdf3[_0xe2b3('0x1b')]=qs[_0xe2b3('0x1b')](_0x23076c[_0xe2b3('0x2d')][_0xe2b3('0x1b')]);}return _0x5ce38f[_0xe2b3('0x4b')](_0x59fdf3);}})[_0xe2b3('0x21')](function(_0x460eda){if(_0x460eda){return _0x460eda?{'count':_0x4ba964,'rows':_0x460eda}:null;}})[_0xe2b3('0x21')](respondWithResult(_0x1693a2,null))[_0xe2b3('0x44')](handleError(_0x1693a2,null));};exports[_0xe2b3('0x4c')]=function(_0x5785c1,_0x4c8458,_0x394eeb){if(_0x5785c1[_0xe2b3('0x47')]['id']){delete _0x5785c1[_0xe2b3('0x47')]['id'];}return db[_0xe2b3('0x3e')][_0xe2b3('0x49')]({'where':{'id':_0x5785c1[_0xe2b3('0x43')]['id']}})['then'](handleEntityNotFound(_0x4c8458,null))[_0xe2b3('0x21')](function(_0x49e0d1){if(_0x49e0d1){_0x5785c1['body'][_0xe2b3('0x4d')]=_0x49e0d1['id'];_0x5785c1[_0xe2b3('0x47')][_0xe2b3('0x4e')]=integrations[_0xe2b3('0x4f')](_0x5785c1[_0xe2b3('0x47')]['channel'],_0x5785c1['body'][_0xe2b3('0x2a')]);_0x5785c1[_0xe2b3('0x47')][_0xe2b3('0x50')]=integrations[_0xe2b3('0x51')](_0x5785c1['body'][_0xe2b3('0x52')],_0x5785c1['body']['type']);return db[_0xe2b3('0x4a')][_0xe2b3('0x45')](_0x5785c1[_0xe2b3('0x47')],{'include':[{'model':db[_0xe2b3('0x53')],'as':_0xe2b3('0x4e')},{'model':db[_0xe2b3('0x53')],'as':_0xe2b3('0x50')}]});}return null;})[_0xe2b3('0x21')](respondWithResult(_0x4c8458,null))[_0xe2b3('0x44')](handleError(_0x4c8458,null));};exports[_0xe2b3('0x54')]=function(_0x3036a1,_0x2428e4,_0x137f00){var _0x1b2e5d='';var _0x31a224=['id',_0xe2b3('0x24'),_0xe2b3('0x55'),_0xe2b3('0x56'),_0xe2b3('0x57'),'date_start',_0xe2b3('0x58'),_0xe2b3('0x59'),'parent_id','parent_type',_0xe2b3('0x5a'),_0xe2b3('0x5b')];return db['SugarcrmAccount'][_0xe2b3('0x49')]({'where':{'id':_0x3036a1['params']['id']},'attributes':['id','username',_0xe2b3('0x5c'),_0xe2b3('0x5d')]})[_0xe2b3('0x21')](handleEntityNotFound(_0x2428e4,null))[_0xe2b3('0x21')](function(_0x40708b){if(_0x40708b){_0x1b2e5d=_0x40708b[_0xe2b3('0x5d')];var _0x212567=_0x1b2e5d[_0xe2b3('0x5e')](-0x1);if(_0x212567==='/'){_0x1b2e5d=_0x1b2e5d[_0xe2b3('0x5f')](0x0,_0x1b2e5d[_0xe2b3('0x60')](_0x212567));}return rp({'method':_0xe2b3('0x61'),'uri':util['format'](_0xe2b3('0x62'),_0x1b2e5d,_0xe2b3('0x63')),'json':!![],'form':{'method':_0xe2b3('0x64'),'input_type':'JSON','response_type':_0xe2b3('0x65'),'rest_data':JSON[_0xe2b3('0x66')]({'user_auth':{'user_name':_0x40708b[_0xe2b3('0x67')],'password':_0x40708b[_0xe2b3('0x5c')],'encryption':'PLAIN'},'application':_0xe2b3('0x68')})}});}})[_0xe2b3('0x21')](function(_0x3ee6da){if(_0x3ee6da&&_0x3ee6da[_0xe2b3('0x24')]!==_0xe2b3('0x69')&&_0x3ee6da['name']!==_0xe2b3('0x6a')){return rp({'method':'POST','uri':util[_0xe2b3('0x6b')](_0xe2b3('0x62'),_0x1b2e5d,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xe2b3('0x6c'),'input_type':_0xe2b3('0x65'),'response_type':'JSON','rest_data':JSON[_0xe2b3('0x66')]({'session':_0x3ee6da['id'],'module_name':'Calls'})}})[_0xe2b3('0x21')](function(_0x2b78d9){if(_0x2b78d9){var _0x56b993=_['values'](_0x2b78d9[_0xe2b3('0x6d')]);_[_0xe2b3('0x6e')](_0x56b993,function(_0x2a7a47){return _0x31a224[_0xe2b3('0x6f')](_0x2a7a47[_0xe2b3('0x24')]);});return{'count':_0x56b993[_0xe2b3('0x33')],'rows':_[_0xe2b3('0x27')](_0x56b993,function(_0x397ac2){return{'id':_0x397ac2[_0xe2b3('0x24')],'name':_0x397ac2['label'],'custom':_['endsWith'](_0x397ac2[_0xe2b3('0x24')],'_c')?!![]:![],'options':_0x397ac2['options']?_[_0xe2b3('0x27')](_['values'](_0x397ac2[_0xe2b3('0x3d')]),function(_0x5ddd81){return{'name':_0x5ddd81[_0xe2b3('0x70')],'value':_0x5ddd81[_0xe2b3('0x24')]};}):[]};})};}})[_0xe2b3('0x21')](respondWithResult(_0x2428e4,null))[_0xe2b3('0x44')](function(_0x537054){var _0xa74062=_0x3036a1[_0xe2b3('0x2d')][_0xe2b3('0x71')]?0x1f4:_0x537054[_0xe2b3('0x72')]||0x1f4;logger[_0xe2b3('0x73')](_0xe2b3('0x74'),'getFields',_0xa74062,JSON[_0xe2b3('0x66')](_0x537054));delete _0x537054[_0xe2b3('0x24')];if(_0xa74062===0x191){_0xa74062=0x190;}_0x2428e4[_0xe2b3('0x18')](_0xa74062)[_0xe2b3('0x25')](_0x3036a1[_0xe2b3('0x2d')][_0xe2b3('0x71')]?{'message':_0xe2b3('0x75'),'statusCode':_0x537054[_0xe2b3('0x72')]}:_0x537054);});}else{var _0x2a7387=0x1f4;_0x2428e4[_0xe2b3('0x18')](_0x2a7387)['send']({'message':_0xe2b3('0x75'),'statusCode':0x190});}});};
\ No newline at end of file
index 5443f97..afbf982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58b8=['../../config/logger','api','moment','request-promise','path','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','SugarcrmAccount','int_sugarcrm_accounts','lodash'];(function(_0x418863,_0x3ddf83){var _0x51dfa8=function(_0x14d962){while(--_0x14d962){_0x418863['push'](_0x418863['shift']());}};_0x51dfa8(++_0x3ddf83);}(_0x58b8,0x1eb));var _0x858b=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x58b8[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x858b('0x0'));var util=require('util');var logger=require(_0x858b('0x1'))(_0x858b('0x2'));var moment=require(_0x858b('0x3'));var BPromise=require('bluebird');var rp=require(_0x858b('0x4'));var fs=require('fs');var path=require(_0x858b('0x5'));var rimraf=require('rimraf');var config=require(_0x858b('0x6'));var attributes=require(_0x858b('0x7'));var integrations=require(_0x858b('0x8'));module[_0x858b('0x9')]=function(_0x128099,_0x31eb2f){return _0x128099['define'](_0x858b('0xa'),attributes,{'tableName':_0x858b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0767=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','SugarcrmAccount','int_sugarcrm_accounts','lodash'];(function(_0x564b1e,_0x4ec4df){var _0x1fcbd3=function(_0x5e5f93){while(--_0x5e5f93){_0x564b1e['push'](_0x564b1e['shift']());}};_0x1fcbd3(++_0x4ec4df);}(_0x0767,0x1bf));var _0x7076=function(_0x327dd3,_0x4b859c){_0x327dd3=_0x327dd3-0x0;var _0x286b7a=_0x0767[_0x327dd3];return _0x286b7a;};'use strict';var _=require(_0x7076('0x0'));var util=require(_0x7076('0x1'));var logger=require(_0x7076('0x2'))(_0x7076('0x3'));var moment=require(_0x7076('0x4'));var BPromise=require(_0x7076('0x5'));var rp=require(_0x7076('0x6'));var fs=require('fs');var path=require(_0x7076('0x7'));var rimraf=require(_0x7076('0x8'));var config=require(_0x7076('0x9'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0x7076('0xa'));module[_0x7076('0xb')]=function(_0x32d055,_0x4353be){return _0x32d055['define'](_0x7076('0xc'),attributes,{'tableName':_0x7076('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43fb9af..1c5e8ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceed=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','attributes','limit','include','map','catch','ShowSugarcrmAccount','find','where','model'];(function(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0xceed,0xbe));var _0xdcee=function(_0x1646fa,_0x4e5bd7){_0x1646fa=_0x1646fa-0x0;var _0x5a47a5=_0xceed[_0x1646fa];return _0x5a47a5;};'use strict';var _=require(_0xdcee('0x0'));var util=require(_0xdcee('0x1'));var moment=require(_0xdcee('0x2'));var BPromise=require('bluebird');var rs=require(_0xdcee('0x3'));var fs=require('fs');var Redis=require(_0xdcee('0x4'));var db=require(_0xdcee('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xdcee('0x6'))(_0xdcee('0x7'));var config=require(_0xdcee('0x8'));var jayson=require(_0xdcee('0x9'));var client=jayson[_0xdcee('0xa')][_0xdcee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x353162,_0x4b7c08,_0x4255e7){return new BPromise(function(_0x59c37d,_0x58f6dd){return client[_0xdcee('0xc')](_0x353162,_0x4255e7)[_0xdcee('0xd')](function(_0x24964d){logger[_0xdcee('0xe')](_0xdcee('0xf'),_0x4b7c08,_0xdcee('0x10'));logger[_0xdcee('0x11')](_0xdcee('0x12'),_0x4b7c08,'request\x20sent',JSON[_0xdcee('0x13')](_0x24964d));if(_0x24964d[_0xdcee('0x14')]){if(_0x24964d[_0xdcee('0x14')][_0xdcee('0x15')]===0x1f4){logger[_0xdcee('0x14')](_0xdcee('0xf'),_0x4b7c08,_0x24964d[_0xdcee('0x14')][_0xdcee('0x16')]);return _0x58f6dd(_0x24964d[_0xdcee('0x14')][_0xdcee('0x16')]);}logger[_0xdcee('0x14')](_0xdcee('0xf'),_0x4b7c08,_0x24964d['error'][_0xdcee('0x16')]);return _0x59c37d(_0x24964d[_0xdcee('0x14')]['message']);}else{logger[_0xdcee('0xe')](_0xdcee('0xf'),_0x4b7c08,_0xdcee('0x10'));_0x59c37d(_0x24964d[_0xdcee('0x17')]['message']);}})['catch'](function(_0x5e1e17){logger[_0xdcee('0x14')](_0xdcee('0xf'),_0x4b7c08,_0x5e1e17);_0x58f6dd(_0x5e1e17);});});}exports[_0xdcee('0x18')]=function(_0x5c30e4){var _0x485ae0=this;return new Promise(function(_0x50c9e5,_0x3bdec5){return db[_0xdcee('0x19')][_0xdcee('0x1a')]({'raw':_0x5c30e4[_0xdcee('0x1b')]?_0x5c30e4[_0xdcee('0x1b')][_0xdcee('0x1c')]===undefined?!![]:![]:!![],'where':_0x5c30e4[_0xdcee('0x1b')]?_0x5c30e4[_0xdcee('0x1b')]['where']||null:null,'attributes':_0x5c30e4[_0xdcee('0x1b')]?_0x5c30e4['options'][_0xdcee('0x1d')]||null:null,'limit':_0x5c30e4['options']?_0x5c30e4[_0xdcee('0x1b')][_0xdcee('0x1e')]||null:null,'include':_0x5c30e4[_0xdcee('0x1b')]?_0x5c30e4[_0xdcee('0x1b')]['include']?_['map'](_0x5c30e4[_0xdcee('0x1b')][_0xdcee('0x1f')],function(_0x460653){return{'model':db[_0x460653['model']],'as':_0x460653['as'],'attributes':_0x460653['attributes'],'include':_0x460653[_0xdcee('0x1f')]?_['map'](_0x460653[_0xdcee('0x1f')],function(_0x1954c5){return{'model':db[_0x1954c5['model']],'as':_0x1954c5['as'],'attributes':_0x1954c5[_0xdcee('0x1d')],'include':_0x1954c5[_0xdcee('0x1f')]?_[_0xdcee('0x20')](_0x1954c5[_0xdcee('0x1f')],function(_0xf8de0){return{'model':db[_0xf8de0['model']],'as':_0xf8de0['as'],'attributes':_0xf8de0[_0xdcee('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x171a7a){logger[_0xdcee('0xe')](_0xdcee('0x18'),_0x5c30e4);logger[_0xdcee('0x11')]('GetSugarcrmAccount',_0x5c30e4,JSON[_0xdcee('0x13')](_0x171a7a));_0x50c9e5(_0x171a7a);})[_0xdcee('0x21')](function(_0x763a9c){logger[_0xdcee('0x14')](_0xdcee('0x18'),_0x763a9c[_0xdcee('0x16')],_0x5c30e4);_0x3bdec5(_0x485ae0[_0xdcee('0x14')](0x1f4,_0x763a9c[_0xdcee('0x16')]));});});};exports[_0xdcee('0x22')]=function(_0x11a15e){var _0x7bd895=this;return new Promise(function(_0x4dc69d,_0x4e8afc){return db[_0xdcee('0x19')][_0xdcee('0x23')]({'raw':_0x11a15e[_0xdcee('0x1b')]?_0x11a15e['options'][_0xdcee('0x1c')]===undefined?!![]:![]:!![],'where':_0x11a15e[_0xdcee('0x1b')]?_0x11a15e['options'][_0xdcee('0x24')]||null:null,'attributes':_0x11a15e[_0xdcee('0x1b')]?_0x11a15e['options'][_0xdcee('0x1d')]||null:null,'include':_0x11a15e['options']?_0x11a15e[_0xdcee('0x1b')][_0xdcee('0x1f')]?_['map'](_0x11a15e[_0xdcee('0x1b')]['include'],function(_0x1137d1){return{'model':db[_0x1137d1[_0xdcee('0x25')]],'as':_0x1137d1['as'],'attributes':_0x1137d1[_0xdcee('0x1d')],'include':_0x1137d1['include']?_['map'](_0x1137d1[_0xdcee('0x1f')],function(_0x329f05){return{'model':db[_0x329f05[_0xdcee('0x25')]],'as':_0x329f05['as'],'attributes':_0x329f05[_0xdcee('0x1d')],'include':_0x329f05[_0xdcee('0x1f')]?_[_0xdcee('0x20')](_0x329f05[_0xdcee('0x1f')],function(_0x36cb63){return{'model':db[_0x36cb63[_0xdcee('0x25')]],'as':_0x36cb63['as'],'attributes':_0x36cb63[_0xdcee('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xdcee('0xd')](function(_0xcb6311){logger[_0xdcee('0xe')](_0xdcee('0x22'),_0x11a15e);logger[_0xdcee('0x11')](_0xdcee('0x22'),_0x11a15e,JSON['stringify'](_0xcb6311));_0x4dc69d(_0xcb6311);})[_0xdcee('0x21')](function(_0x541ede){logger[_0xdcee('0x14')]('ShowSugarcrmAccount',_0x541ede[_0xdcee('0x16')],_0x11a15e);_0x4e8afc(_0x7bd895[_0xdcee('0x14')](0x1f4,_0x541ede[_0xdcee('0x16')]));});});};
\ No newline at end of file
+var _0xde6c=['http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','where','include','map','model','attributes','debug','ShowSugarcrmAccount','raw','lodash','util','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x1185ce,_0x220ea1){var _0x1a62a7=function(_0x13b70a){while(--_0x13b70a){_0x1185ce['push'](_0x1185ce['shift']());}};_0x1a62a7(++_0x220ea1);}(_0xde6c,0x1d8));var _0xcde6=function(_0x34b64f,_0x2cbd48){_0x34b64f=_0x34b64f-0x0;var _0x40c2c7=_0xde6c[_0x34b64f];return _0x40c2c7;};'use strict';var _=require(_0xcde6('0x0'));var util=require(_0xcde6('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcde6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcde6('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xcde6('0x4'))('rpc');var config=require(_0xcde6('0x5'));var jayson=require(_0xcde6('0x6'));var client=jayson[_0xcde6('0x7')][_0xcde6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x29f9c7,_0x285fd6,_0x2e3106){return new BPromise(function(_0x2374a9,_0x42aa0e){return client[_0xcde6('0x9')](_0x29f9c7,_0x2e3106)[_0xcde6('0xa')](function(_0x3eddab){logger[_0xcde6('0xb')](_0xcde6('0xc'),_0x285fd6,_0xcde6('0xd'));logger['debug'](_0xcde6('0xe'),_0x285fd6,_0xcde6('0xd'),JSON[_0xcde6('0xf')](_0x3eddab));if(_0x3eddab[_0xcde6('0x10')]){if(_0x3eddab[_0xcde6('0x10')]['code']===0x1f4){logger['error'](_0xcde6('0xc'),_0x285fd6,_0x3eddab[_0xcde6('0x10')][_0xcde6('0x11')]);return _0x42aa0e(_0x3eddab[_0xcde6('0x10')][_0xcde6('0x11')]);}logger[_0xcde6('0x10')](_0xcde6('0xc'),_0x285fd6,_0x3eddab[_0xcde6('0x10')][_0xcde6('0x11')]);return _0x2374a9(_0x3eddab[_0xcde6('0x10')][_0xcde6('0x11')]);}else{logger[_0xcde6('0xb')](_0xcde6('0xc'),_0x285fd6,'request\x20sent');_0x2374a9(_0x3eddab[_0xcde6('0x12')][_0xcde6('0x11')]);}})[_0xcde6('0x13')](function(_0x502e7b){logger[_0xcde6('0x10')](_0xcde6('0xc'),_0x285fd6,_0x502e7b);_0x42aa0e(_0x502e7b);});});}exports[_0xcde6('0x14')]=function(_0x31ddc2){var _0x14a61a=this;return new Promise(function(_0x50fe7a,_0x167ac4){return db[_0xcde6('0x15')][_0xcde6('0x16')]({'raw':_0x31ddc2[_0xcde6('0x17')]?_0x31ddc2[_0xcde6('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x31ddc2['options']?_0x31ddc2[_0xcde6('0x17')][_0xcde6('0x18')]||null:null,'attributes':_0x31ddc2[_0xcde6('0x17')]?_0x31ddc2[_0xcde6('0x17')]['attributes']||null:null,'limit':_0x31ddc2[_0xcde6('0x17')]?_0x31ddc2[_0xcde6('0x17')]['limit']||null:null,'include':_0x31ddc2[_0xcde6('0x17')]?_0x31ddc2[_0xcde6('0x17')][_0xcde6('0x19')]?_[_0xcde6('0x1a')](_0x31ddc2[_0xcde6('0x17')]['include'],function(_0x46188c){return{'model':db[_0x46188c[_0xcde6('0x1b')]],'as':_0x46188c['as'],'attributes':_0x46188c[_0xcde6('0x1c')],'include':_0x46188c[_0xcde6('0x19')]?_[_0xcde6('0x1a')](_0x46188c[_0xcde6('0x19')],function(_0x50f241){return{'model':db[_0x50f241['model']],'as':_0x50f241['as'],'attributes':_0x50f241[_0xcde6('0x1c')],'include':_0x50f241[_0xcde6('0x19')]?_[_0xcde6('0x1a')](_0x50f241[_0xcde6('0x19')],function(_0x58bad3){return{'model':db[_0x58bad3[_0xcde6('0x1b')]],'as':_0x58bad3['as'],'attributes':_0x58bad3[_0xcde6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xcde6('0xa')](function(_0x5915af){logger[_0xcde6('0xb')](_0xcde6('0x14'),_0x31ddc2);logger[_0xcde6('0x1d')]('GetSugarcrmAccount',_0x31ddc2,JSON['stringify'](_0x5915af));_0x50fe7a(_0x5915af);})[_0xcde6('0x13')](function(_0x11eceb){logger[_0xcde6('0x10')](_0xcde6('0x14'),_0x11eceb['message'],_0x31ddc2);_0x167ac4(_0x14a61a[_0xcde6('0x10')](0x1f4,_0x11eceb[_0xcde6('0x11')]));});});};exports[_0xcde6('0x1e')]=function(_0x325ab8){var _0x5825ad=this;return new Promise(function(_0x1d8f41,_0x23b78e){return db[_0xcde6('0x15')]['find']({'raw':_0x325ab8['options']?_0x325ab8[_0xcde6('0x17')][_0xcde6('0x1f')]===undefined?!![]:![]:!![],'where':_0x325ab8[_0xcde6('0x17')]?_0x325ab8[_0xcde6('0x17')][_0xcde6('0x18')]||null:null,'attributes':_0x325ab8[_0xcde6('0x17')]?_0x325ab8[_0xcde6('0x17')]['attributes']||null:null,'include':_0x325ab8[_0xcde6('0x17')]?_0x325ab8[_0xcde6('0x17')][_0xcde6('0x19')]?_[_0xcde6('0x1a')](_0x325ab8[_0xcde6('0x17')][_0xcde6('0x19')],function(_0x16f579){return{'model':db[_0x16f579[_0xcde6('0x1b')]],'as':_0x16f579['as'],'attributes':_0x16f579[_0xcde6('0x1c')],'include':_0x16f579[_0xcde6('0x19')]?_[_0xcde6('0x1a')](_0x16f579[_0xcde6('0x19')],function(_0x158567){return{'model':db[_0x158567['model']],'as':_0x158567['as'],'attributes':_0x158567[_0xcde6('0x1c')],'include':_0x158567[_0xcde6('0x19')]?_[_0xcde6('0x1a')](_0x158567[_0xcde6('0x19')],function(_0x39bfa1){return{'model':db[_0x39bfa1[_0xcde6('0x1b')]],'as':_0x39bfa1['as'],'attributes':_0x39bfa1[_0xcde6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xcde6('0xa')](function(_0x29c3b3){logger['info']('ShowSugarcrmAccount',_0x325ab8);logger['debug'](_0xcde6('0x1e'),_0x325ab8,JSON[_0xcde6('0xf')](_0x29c3b3));_0x1d8f41(_0x29c3b3);})['catch'](function(_0x48d401){logger[_0xcde6('0x10')]('ShowSugarcrmAccount',_0x48d401[_0xcde6('0x11')],_0x325ab8);_0x23b78e(_0x5825ad[_0xcde6('0x10')](0x1f4,_0x48d401[_0xcde6('0x11')]));});});};
\ No newline at end of file
index ed2032d..57f18d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb3a=['getDescriptions','post','create','/:id','update','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmConfiguration.controller','isAuthenticated','index','show','get','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x6d5985,_0x3e8583){var _0x254610=function(_0x17967f){while(--_0x17967f){_0x6d5985['push'](_0x6d5985['shift']());}};_0x254610(++_0x3e8583);}(_0xdb3a,0x96));var _0xadb3=function(_0x503679,_0x1d99bf){_0x503679=_0x503679-0x0;var _0x2c6c2b=_0xdb3a[_0x503679];return _0x2c6c2b;};'use strict';var multer=require(_0xadb3('0x0'));var util=require(_0xadb3('0x1'));var path=require(_0xadb3('0x2'));var timeout=require(_0xadb3('0x3'));var express=require('express');var router=express[_0xadb3('0x4')]();var fs_extra=require(_0xadb3('0x5'));var auth=require(_0xadb3('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xadb3('0x7'));var controller=require(_0xadb3('0x8'));router['get']('/',auth[_0xadb3('0x9')](),controller[_0xadb3('0xa')]);router['get']('/:id',auth[_0xadb3('0x9')](),controller[_0xadb3('0xb')]);router[_0xadb3('0xc')](_0xadb3('0xd'),auth[_0xadb3('0x9')](),controller[_0xadb3('0xe')]);router[_0xadb3('0xc')](_0xadb3('0xf'),auth['isAuthenticated'](),controller[_0xadb3('0x10')]);router[_0xadb3('0xc')](_0xadb3('0x11'),auth[_0xadb3('0x9')](),controller[_0xadb3('0x12')]);router[_0xadb3('0x13')]('/',auth['isAuthenticated'](),controller[_0xadb3('0x14')]);router['put'](_0xadb3('0x15'),auth[_0xadb3('0x9')](),controller[_0xadb3('0x16')]);router[_0xadb3('0x17')](_0xadb3('0x15'),auth[_0xadb3('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0ce1=['isAuthenticated','index','/:id','show','/:id/descriptions','getDescriptions','post','create','update','multer','util','path','../../components/interaction/service','../../config/environment','get'];(function(_0x1ed544,_0x4bb547){var _0x29412d=function(_0x239274){while(--_0x239274){_0x1ed544['push'](_0x1ed544['shift']());}};_0x29412d(++_0x4bb547);}(_0x0ce1,0xae));var _0x10ce=function(_0x2f8431,_0x2850c8){_0x2f8431=_0x2f8431-0x0;var _0x313498=_0x0ce1[_0x2f8431];return _0x313498;};'use strict';var multer=require(_0x10ce('0x0'));var util=require(_0x10ce('0x1'));var path=require(_0x10ce('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x10ce('0x3'));var config=require(_0x10ce('0x4'));var controller=require('./intSugarcrmConfiguration.controller');router[_0x10ce('0x5')]('/',auth[_0x10ce('0x6')](),controller[_0x10ce('0x7')]);router[_0x10ce('0x5')](_0x10ce('0x8'),auth[_0x10ce('0x6')](),controller[_0x10ce('0x9')]);router[_0x10ce('0x5')]('/:id/fields',auth[_0x10ce('0x6')](),controller['getFields']);router['get']('/:id/subjects',auth[_0x10ce('0x6')](),controller['getSubjects']);router[_0x10ce('0x5')](_0x10ce('0xa'),auth['isAuthenticated'](),controller[_0x10ce('0xb')]);router[_0x10ce('0xc')]('/',auth[_0x10ce('0x6')](),controller[_0x10ce('0xd')]);router['put']('/:id',auth[_0x10ce('0x6')](),controller[_0x10ce('0xe')]);router['delete'](_0x10ce('0x8'),auth[_0x10ce('0x6')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index dbb7eea..17523ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x242e=['STRING','sequelize','exports'];(function(_0x24153c,_0x1dcb48){var _0x1edf6c=function(_0x293c21){while(--_0x293c21){_0x24153c['push'](_0x24153c['shift']());}};_0x1edf6c(++_0x1dcb48);}(_0x242e,0xc1));var _0xe242=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x242e[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require(_0xe242('0x0'));module[_0xe242('0x1')]={'name':{'type':Sequelize[_0xe242('0x2')]},'description':{'type':Sequelize[_0xe242('0x2')]}};
\ No newline at end of file
+var _0x11e1=['sequelize','exports','STRING'];(function(_0x11f6ea,_0x483106){var _0x3abbb3=function(_0x5c2d2c){while(--_0x5c2d2c){_0x11f6ea['push'](_0x11f6ea['shift']());}};_0x3abbb3(++_0x483106);}(_0x11e1,0x84));var _0x111e=function(_0x55c394,_0xedbf15){_0x55c394=_0x55c394-0x0;var _0x50678b=_0x11e1[_0x55c394];return _0x50678b;};'use strict';var Sequelize=require(_0x111e('0x0'));module[_0x111e('0x1')]={'name':{'type':Sequelize[_0x111e('0x2')]},'description':{'type':Sequelize[_0x111e('0x2')]}};
\ No newline at end of file
index 85c059b..c2b26b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c2a=['to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','status','send','map','SugarcrmConfiguration','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','catch','params','rawAttributes','length','include','find','create','body','getFields','findOne','SugarcrmField','options','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x2a4e76,_0x397254){var _0xeedbb8=function(_0x588468){while(--_0x588468){_0x2a4e76['push'](_0x2a4e76['shift']());}};_0xeedbb8(++_0x397254);}(_0x6c2a,0xe5));var _0xa6c2=function(_0x13b3f4,_0x51ab14){_0x13b3f4=_0x13b3f4-0x0;var _0x520926=_0x6c2a[_0x13b3f4];return _0x520926;};'use strict';var emlformat=require(_0xa6c2('0x0'));var rimraf=require(_0xa6c2('0x1'));var zipdir=require(_0xa6c2('0x2'));var jsonpatch=require(_0xa6c2('0x3'));var rp=require('request-promise');var moment=require(_0xa6c2('0x4'));var BPromise=require(_0xa6c2('0x5'));var Mustache=require(_0xa6c2('0x6'));var util=require(_0xa6c2('0x7'));var path=require(_0xa6c2('0x8'));var sox=require(_0xa6c2('0x9'));var csv=require('to-csv');var ejs=require(_0xa6c2('0xa'));var fs=require('fs');var fs_extra=require(_0xa6c2('0xb'));var _=require(_0xa6c2('0xc'));var squel=require(_0xa6c2('0xd'));var crypto=require(_0xa6c2('0xe'));var jsforce=require(_0xa6c2('0xf'));var deskjs=require(_0xa6c2('0x10'));var toCsv=require(_0xa6c2('0x11'));var querystring=require(_0xa6c2('0x12'));var Papa=require(_0xa6c2('0x13'));var Redis=require('ioredis');var authService=require(_0xa6c2('0x14'));var qs=require(_0xa6c2('0x15'));var as=require(_0xa6c2('0x16'));var hardwareService=require(_0xa6c2('0x17'));var logger=require('../../config/logger')(_0xa6c2('0x18'));var utils=require(_0xa6c2('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xa6c2('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39f521,_0x355346){_0x355346=_0x355346||0xcc;return function(_0x84c48d){if(_0x84c48d){return _0x39f521['sendStatus'](_0x355346);}return _0x39f521['status'](_0x355346)[_0xa6c2('0x1b')]();};}function respondWithResult(_0x26d1a4,_0x5c1577){_0x5c1577=_0x5c1577||0xc8;return function(_0x4cda29){if(_0x4cda29){return _0x26d1a4['status'](_0x5c1577)[_0xa6c2('0x1c')](_0x4cda29);}};}function respondWithFilteredResult(_0x1bbb0f,_0x443c8a){return function(_0x20947a){if(_0x20947a){var _0x208f9f=typeof _0x443c8a[_0xa6c2('0x1d')]===_0xa6c2('0x1e')&&typeof _0x443c8a[_0xa6c2('0x1f')]===_0xa6c2('0x1e');var _0x3fa1ae=_0x20947a['count'];var _0x3403f8=_0x208f9f?0x0:_0x443c8a[_0xa6c2('0x1d')];var _0x49dbb=_0x208f9f?_0x20947a[_0xa6c2('0x20')]:_0x443c8a['offset']+_0x443c8a[_0xa6c2('0x1f')];var _0x96517f;if(_0x49dbb>=_0x3fa1ae){_0x49dbb=_0x3fa1ae;_0x96517f=0xc8;}else{_0x96517f=0xce;}_0x1bbb0f['status'](_0x96517f);return _0x1bbb0f[_0xa6c2('0x21')](_0xa6c2('0x22'),_0x3403f8+'-'+_0x49dbb+'/'+_0x3fa1ae)[_0xa6c2('0x1c')](_0x20947a);}return null;};}function patchUpdates(_0x696c48){return function(_0xd887a2){try{jsonpatch[_0xa6c2('0x23')](_0xd887a2,_0x696c48,!![]);}catch(_0x1671e1){return BPromise[_0xa6c2('0x24')](_0x1671e1);}return _0xd887a2[_0xa6c2('0x25')]();};}function saveUpdates(_0x22070d,_0x48bdb2){return function(_0x550644){if(_0x550644){return _0x550644[_0xa6c2('0x26')](_0x22070d)[_0xa6c2('0x27')](function(_0x27d584){return _0x27d584;});}return null;};}function removeEntity(_0x1d22a3,_0x333d70){return function(_0x4bc30f){if(_0x4bc30f){return _0x4bc30f[_0xa6c2('0x28')]()['then'](function(){_0x1d22a3['status'](0xcc)[_0xa6c2('0x1b')]();});}};}function handleEntityNotFound(_0x4ef750,_0x4b9112){return function(_0x460159){if(!_0x460159){_0x4ef750['sendStatus'](0x194);}return _0x460159;};}function handleError(_0x3dbb09,_0x2118e0){_0x2118e0=_0x2118e0||0x1f4;return function(_0x3e7d9f){logger[_0xa6c2('0x29')](_0x3e7d9f[_0xa6c2('0x2a')]);if(_0x3e7d9f[_0xa6c2('0x2b')]){delete _0x3e7d9f['name'];}_0x3dbb09[_0xa6c2('0x2c')](_0x2118e0)[_0xa6c2('0x2d')](_0x3e7d9f);};}exports['index']=function(_0x27b4d6,_0x38ab42){var _0x4c3d00={},_0x5a12ee={},_0xedb16a={'count':0x0,'rows':[]};var _0x21c9e9=_[_0xa6c2('0x2e')](db[_0xa6c2('0x2f')]['rawAttributes'],function(_0xb12a1f){return{'name':_0xb12a1f[_0xa6c2('0x30')],'type':_0xb12a1f[_0xa6c2('0x31')]['key']};});_0x5a12ee[_0xa6c2('0x32')]=_[_0xa6c2('0x2e')](_0x21c9e9,_0xa6c2('0x2b'));_0x5a12ee[_0xa6c2('0x33')]=_[_0xa6c2('0x34')](_0x27b4d6[_0xa6c2('0x33')]);_0x5a12ee[_0xa6c2('0x35')]=_[_0xa6c2('0x36')](_0x5a12ee[_0xa6c2('0x32')],_0x5a12ee['query']);_0x4c3d00[_0xa6c2('0x37')]=_['intersection'](_0x5a12ee['model'],qs['fields'](_0x27b4d6[_0xa6c2('0x33')][_0xa6c2('0x38')]));_0x4c3d00[_0xa6c2('0x37')]=_0x4c3d00[_0xa6c2('0x37')]['length']?_0x4c3d00[_0xa6c2('0x37')]:_0x5a12ee[_0xa6c2('0x32')];if(!_0x27b4d6['query'][_0xa6c2('0x39')](_0xa6c2('0x3a'))){_0x4c3d00['limit']=qs[_0xa6c2('0x1f')](_0x27b4d6[_0xa6c2('0x33')][_0xa6c2('0x1f')]);_0x4c3d00[_0xa6c2('0x1d')]=qs[_0xa6c2('0x1d')](_0x27b4d6['query'][_0xa6c2('0x1d')]);}_0x4c3d00[_0xa6c2('0x3b')]=qs[_0xa6c2('0x3c')](_0x27b4d6[_0xa6c2('0x33')]['sort']);_0x4c3d00[_0xa6c2('0x3d')]=qs[_0xa6c2('0x35')](_[_0xa6c2('0x3e')](_0x27b4d6[_0xa6c2('0x33')],_0x5a12ee[_0xa6c2('0x35')]),_0x21c9e9);if(_0x27b4d6['query'][_0xa6c2('0x3f')]){_0x4c3d00[_0xa6c2('0x3d')]=_[_0xa6c2('0x40')](_0x4c3d00['where'],{'$or':_[_0xa6c2('0x2e')](_0x21c9e9,function(_0x3b92d6){if(_0x3b92d6[_0xa6c2('0x31')]!==_0xa6c2('0x41')){var _0x1d744a={};_0x1d744a[_0x3b92d6[_0xa6c2('0x2b')]]={'$like':'%'+_0x27b4d6[_0xa6c2('0x33')][_0xa6c2('0x3f')]+'%'};return _0x1d744a;}})});}_0x4c3d00=_[_0xa6c2('0x40')]({},_0x4c3d00,_0x27b4d6['options']);var _0x4f1b02={'where':_0x4c3d00[_0xa6c2('0x3d')]};return db['SugarcrmConfiguration'][_0xa6c2('0x20')](_0x4f1b02)[_0xa6c2('0x27')](function(_0x21ebc3){_0xedb16a['count']=_0x21ebc3;if(_0x27b4d6[_0xa6c2('0x33')][_0xa6c2('0x42')]){_0x4c3d00['include']=[{'all':!![]}];}return db[_0xa6c2('0x2f')][_0xa6c2('0x43')](_0x4c3d00);})[_0xa6c2('0x27')](function(_0x5118e7){_0xedb16a['rows']=_0x5118e7;return _0xedb16a;})[_0xa6c2('0x27')](respondWithFilteredResult(_0x38ab42,_0x4c3d00))[_0xa6c2('0x44')](handleError(_0x38ab42,null));};exports['show']=function(_0x3edb56,_0x2984af){var _0x17d176={'raw':![],'where':{'id':_0x3edb56[_0xa6c2('0x45')]['id']}},_0xe41547={};_0xe41547[_0xa6c2('0x32')]=_[_0xa6c2('0x34')](db[_0xa6c2('0x2f')][_0xa6c2('0x46')]);_0xe41547[_0xa6c2('0x33')]=_['keys'](_0x3edb56[_0xa6c2('0x33')]);_0xe41547[_0xa6c2('0x35')]=_['intersection'](_0xe41547['model'],_0xe41547[_0xa6c2('0x33')]);_0x17d176[_0xa6c2('0x37')]=_[_0xa6c2('0x36')](_0xe41547[_0xa6c2('0x32')],qs[_0xa6c2('0x38')](_0x3edb56['query'][_0xa6c2('0x38')]));_0x17d176[_0xa6c2('0x37')]=_0x17d176[_0xa6c2('0x37')][_0xa6c2('0x47')]?_0x17d176[_0xa6c2('0x37')]:_0xe41547[_0xa6c2('0x32')];if(_0x3edb56[_0xa6c2('0x33')][_0xa6c2('0x42')]){_0x17d176[_0xa6c2('0x48')]=[{'all':!![]}];}_0x17d176=_[_0xa6c2('0x40')]({},_0x17d176,_0x3edb56['options']);return db[_0xa6c2('0x2f')][_0xa6c2('0x49')](_0x17d176)['then'](handleEntityNotFound(_0x2984af,null))[_0xa6c2('0x27')](respondWithResult(_0x2984af,null))[_0xa6c2('0x44')](handleError(_0x2984af,null));};exports[_0xa6c2('0x4a')]=function(_0x200830,_0x519b55){return db[_0xa6c2('0x2f')][_0xa6c2('0x4a')](_0x200830[_0xa6c2('0x4b')],{})['then'](respondWithResult(_0x519b55,0xc9))[_0xa6c2('0x44')](handleError(_0x519b55,null));};exports[_0xa6c2('0x26')]=function(_0x40a32c,_0x248ef1){if(_0x40a32c[_0xa6c2('0x4b')]['id']){delete _0x40a32c[_0xa6c2('0x4b')]['id'];}return db[_0xa6c2('0x2f')]['find']({'where':{'id':_0x40a32c['params']['id']}})[_0xa6c2('0x27')](handleEntityNotFound(_0x248ef1,null))[_0xa6c2('0x27')](saveUpdates(_0x40a32c[_0xa6c2('0x4b')],null))[_0xa6c2('0x27')](respondWithResult(_0x248ef1,null))[_0xa6c2('0x44')](handleError(_0x248ef1,null));};exports[_0xa6c2('0x28')]=function(_0x432fea,_0x1779a0){return db[_0xa6c2('0x2f')]['find']({'where':{'id':_0x432fea['params']['id']}})['then'](handleEntityNotFound(_0x1779a0,null))[_0xa6c2('0x27')](removeEntity(_0x1779a0,null))[_0xa6c2('0x44')](handleError(_0x1779a0,null));};exports[_0xa6c2('0x4c')]=function(_0x5228d9,_0x132e50,_0x2b33be){var _0x300b28={};var _0x503550={};var _0x58ec52;var _0x28b94b;return db[_0xa6c2('0x2f')][_0xa6c2('0x4d')]({'where':{'id':_0x5228d9['params']['id']}})[_0xa6c2('0x27')](handleEntityNotFound(_0x132e50,null))[_0xa6c2('0x27')](function(_0x2e7693){if(_0x2e7693){_0x58ec52=_0x2e7693;_0x503550[_0xa6c2('0x32')]=_[_0xa6c2('0x34')](db[_0xa6c2('0x4e')][_0xa6c2('0x46')]);_0x503550[_0xa6c2('0x33')]=_['keys'](_0x5228d9['query']);_0x503550[_0xa6c2('0x35')]=_[_0xa6c2('0x36')](_0x503550[_0xa6c2('0x32')],_0x503550[_0xa6c2('0x33')]);_0x300b28[_0xa6c2('0x37')]=_[_0xa6c2('0x36')](_0x503550[_0xa6c2('0x32')],qs['fields'](_0x5228d9['query'][_0xa6c2('0x38')]));_0x300b28[_0xa6c2('0x37')]=_0x300b28[_0xa6c2('0x37')][_0xa6c2('0x47')]?_0x300b28[_0xa6c2('0x37')]:_0x503550[_0xa6c2('0x32')];_0x300b28[_0xa6c2('0x3b')]=qs[_0xa6c2('0x3c')](_0x5228d9[_0xa6c2('0x33')]['sort']);_0x300b28['where']=qs[_0xa6c2('0x35')](_[_0xa6c2('0x3e')](_0x5228d9['query'],_0x503550[_0xa6c2('0x35')]));if(_0x5228d9[_0xa6c2('0x33')]['filter']){_0x300b28['where']=_[_0xa6c2('0x40')](_0x300b28[_0xa6c2('0x3d')],{'$or':_['map'](_0x300b28[_0xa6c2('0x37')],function(_0x12e494){var _0x5f593c={};_0x5f593c[_0x12e494]={'$like':'%'+_0x5228d9[_0xa6c2('0x33')]['filter']+'%'};return _0x5f593c;})});}_0x300b28=_[_0xa6c2('0x40')]({},_0x300b28,_0x5228d9[_0xa6c2('0x4f')]);return _0x58ec52[_0xa6c2('0x4c')](_0x300b28);}})['then'](function(_0x4ae665){if(_0x4ae665){_0x28b94b=_0x4ae665['length'];if(!_0x5228d9[_0xa6c2('0x33')][_0xa6c2('0x39')]('nolimit')){_0x300b28['limit']=qs[_0xa6c2('0x1f')](_0x5228d9[_0xa6c2('0x33')][_0xa6c2('0x1f')]);_0x300b28[_0xa6c2('0x1d')]=qs[_0xa6c2('0x1d')](_0x5228d9[_0xa6c2('0x33')][_0xa6c2('0x1d')]);}return _0x58ec52[_0xa6c2('0x4c')](_0x300b28);}})[_0xa6c2('0x27')](function(_0x2c867f){if(_0x2c867f){return _0x2c867f?{'count':_0x28b94b,'rows':_0x2c867f}:null;}})[_0xa6c2('0x27')](respondWithResult(_0x132e50,null))[_0xa6c2('0x44')](handleError(_0x132e50,null));};exports[_0xa6c2('0x50')]=function(_0x3f66d7,_0x1a056c,_0x143425){var _0x1d84ed={};var _0x148263={};var _0x3913fd;var _0x1548ce;return db[_0xa6c2('0x2f')][_0xa6c2('0x4d')]({'where':{'id':_0x3f66d7[_0xa6c2('0x45')]['id']}})[_0xa6c2('0x27')](handleEntityNotFound(_0x1a056c,null))[_0xa6c2('0x27')](function(_0x53789f){if(_0x53789f){_0x3913fd=_0x53789f;_0x148263['model']=_[_0xa6c2('0x34')](db[_0xa6c2('0x4e')]['rawAttributes']);_0x148263[_0xa6c2('0x33')]=_[_0xa6c2('0x34')](_0x3f66d7['query']);_0x148263[_0xa6c2('0x35')]=_['intersection'](_0x148263[_0xa6c2('0x32')],_0x148263['query']);_0x1d84ed[_0xa6c2('0x37')]=_['intersection'](_0x148263[_0xa6c2('0x32')],qs[_0xa6c2('0x38')](_0x3f66d7['query'][_0xa6c2('0x38')]));_0x1d84ed[_0xa6c2('0x37')]=_0x1d84ed[_0xa6c2('0x37')][_0xa6c2('0x47')]?_0x1d84ed['attributes']:_0x148263[_0xa6c2('0x32')];_0x1d84ed['order']=qs[_0xa6c2('0x3c')](_0x3f66d7['query']['sort']);_0x1d84ed[_0xa6c2('0x3d')]=qs[_0xa6c2('0x35')](_['pick'](_0x3f66d7[_0xa6c2('0x33')],_0x148263[_0xa6c2('0x35')]));if(_0x3f66d7[_0xa6c2('0x33')][_0xa6c2('0x3f')]){_0x1d84ed[_0xa6c2('0x3d')]=_[_0xa6c2('0x40')](_0x1d84ed[_0xa6c2('0x3d')],{'$or':_[_0xa6c2('0x2e')](_0x1d84ed['attributes'],function(_0x5d808b){var _0x44a455={};_0x44a455[_0x5d808b]={'$like':'%'+_0x3f66d7['query'][_0xa6c2('0x3f')]+'%'};return _0x44a455;})});}_0x1d84ed=_[_0xa6c2('0x40')]({},_0x1d84ed,_0x3f66d7[_0xa6c2('0x4f')]);return _0x3913fd[_0xa6c2('0x50')](_0x1d84ed);}})[_0xa6c2('0x27')](function(_0x13ec9e){if(_0x13ec9e){_0x1548ce=_0x13ec9e[_0xa6c2('0x47')];if(!_0x3f66d7[_0xa6c2('0x33')][_0xa6c2('0x39')]('nolimit')){_0x1d84ed[_0xa6c2('0x1f')]=qs[_0xa6c2('0x1f')](_0x3f66d7[_0xa6c2('0x33')][_0xa6c2('0x1f')]);_0x1d84ed['offset']=qs['offset'](_0x3f66d7[_0xa6c2('0x33')]['offset']);}return _0x3913fd[_0xa6c2('0x50')](_0x1d84ed);}})[_0xa6c2('0x27')](function(_0x28a550){if(_0x28a550){return _0x28a550?{'count':_0x1548ce,'rows':_0x28a550}:null;}})[_0xa6c2('0x27')](respondWithResult(_0x1a056c,null))['catch'](handleError(_0x1a056c,null));};exports['getDescriptions']=function(_0x18a158,_0x63c727,_0x5d4554){var _0x1d4777={};var _0x54f163={};var _0xb3e09c;var _0xf57d33;return db[_0xa6c2('0x2f')]['findOne']({'where':{'id':_0x18a158[_0xa6c2('0x45')]['id']}})['then'](handleEntityNotFound(_0x63c727,null))[_0xa6c2('0x27')](function(_0x114381){if(_0x114381){_0xb3e09c=_0x114381;_0x54f163[_0xa6c2('0x32')]=_[_0xa6c2('0x34')](db[_0xa6c2('0x4e')]['rawAttributes']);_0x54f163[_0xa6c2('0x33')]=_['keys'](_0x18a158[_0xa6c2('0x33')]);_0x54f163[_0xa6c2('0x35')]=_[_0xa6c2('0x36')](_0x54f163[_0xa6c2('0x32')],_0x54f163['query']);_0x1d4777['attributes']=_[_0xa6c2('0x36')](_0x54f163[_0xa6c2('0x32')],qs[_0xa6c2('0x38')](_0x18a158['query'][_0xa6c2('0x38')]));_0x1d4777['attributes']=_0x1d4777[_0xa6c2('0x37')][_0xa6c2('0x47')]?_0x1d4777[_0xa6c2('0x37')]:_0x54f163[_0xa6c2('0x32')];_0x1d4777[_0xa6c2('0x3b')]=qs['sort'](_0x18a158[_0xa6c2('0x33')][_0xa6c2('0x3c')]);_0x1d4777[_0xa6c2('0x3d')]=qs[_0xa6c2('0x35')](_[_0xa6c2('0x3e')](_0x18a158['query'],_0x54f163[_0xa6c2('0x35')]));if(_0x18a158[_0xa6c2('0x33')]['filter']){_0x1d4777[_0xa6c2('0x3d')]=_[_0xa6c2('0x40')](_0x1d4777['where'],{'$or':_['map'](_0x1d4777[_0xa6c2('0x37')],function(_0x1e7490){var _0x35a3b3={};_0x35a3b3[_0x1e7490]={'$like':'%'+_0x18a158[_0xa6c2('0x33')][_0xa6c2('0x3f')]+'%'};return _0x35a3b3;})});}_0x1d4777=_[_0xa6c2('0x40')]({},_0x1d4777,_0x18a158[_0xa6c2('0x4f')]);return _0xb3e09c[_0xa6c2('0x51')](_0x1d4777);}})[_0xa6c2('0x27')](function(_0x33bc34){if(_0x33bc34){_0xf57d33=_0x33bc34[_0xa6c2('0x47')];if(!_0x18a158[_0xa6c2('0x33')][_0xa6c2('0x39')](_0xa6c2('0x3a'))){_0x1d4777[_0xa6c2('0x1f')]=qs['limit'](_0x18a158[_0xa6c2('0x33')]['limit']);_0x1d4777['offset']=qs[_0xa6c2('0x1d')](_0x18a158[_0xa6c2('0x33')][_0xa6c2('0x1d')]);}return _0xb3e09c[_0xa6c2('0x51')](_0x1d4777);}})[_0xa6c2('0x27')](function(_0x258449){if(_0x258449){return _0x258449?{'count':_0xf57d33,'rows':_0x258449}:null;}})[_0xa6c2('0x27')](respondWithResult(_0x63c727,null))['catch'](handleError(_0x63c727,null));};
\ No newline at end of file
+var _0xf12e=['findOne','getDescriptions','order','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','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','end','status','offset','undefined','limit','set','Content-Range','json','apply','save','then','destroy','error','stack','name','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','merge','options','count','findAll','catch','includeAll','include','find','create','body','params','SugarcrmField','filter','getFields','getSubjects'];(function(_0x270112,_0x210b9b){var _0x4fb276=function(_0x280b36){while(--_0x280b36){_0x270112['push'](_0x270112['shift']());}};_0x4fb276(++_0x210b9b);}(_0xf12e,0x1d7));var _0xef12=function(_0x5e4cd6,_0xfb732a){_0x5e4cd6=_0x5e4cd6-0x0;var _0xd7c226=_0xf12e[_0x5e4cd6];return _0xd7c226;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xef12('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xef12('0x1'));var rp=require(_0xef12('0x2'));var moment=require(_0xef12('0x3'));var BPromise=require(_0xef12('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xef12('0x5'));var sox=require(_0xef12('0x6'));var csv=require(_0xef12('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef12('0x8'));var _=require('lodash');var squel=require(_0xef12('0x9'));var crypto=require(_0xef12('0xa'));var jsforce=require(_0xef12('0xb'));var deskjs=require(_0xef12('0xc'));var toCsv=require('to-csv');var querystring=require(_0xef12('0xd'));var Papa=require(_0xef12('0xe'));var Redis=require(_0xef12('0xf'));var authService=require(_0xef12('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xef12('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef12('0x12'))(_0xef12('0x13'));var utils=require(_0xef12('0x14'));var config=require(_0xef12('0x15'));var licenseUtil=require(_0xef12('0x16'));var db=require(_0xef12('0x17'))['db'];function respondWithStatusCode(_0x3bbf6b,_0x3aebbf){_0x3aebbf=_0x3aebbf||0xcc;return function(_0x5b3096){if(_0x5b3096){return _0x3bbf6b['sendStatus'](_0x3aebbf);}return _0x3bbf6b['status'](_0x3aebbf)[_0xef12('0x18')]();};}function respondWithResult(_0x466821,_0x1ffba8){_0x1ffba8=_0x1ffba8||0xc8;return function(_0x60dbb2){if(_0x60dbb2){return _0x466821[_0xef12('0x19')](_0x1ffba8)['json'](_0x60dbb2);}};}function respondWithFilteredResult(_0x17b65c,_0x3248a7){return function(_0x4e2a17){if(_0x4e2a17){var _0x1de3d1=typeof _0x3248a7[_0xef12('0x1a')]===_0xef12('0x1b')&&typeof _0x3248a7[_0xef12('0x1c')]==='undefined';var _0x6fc6f=_0x4e2a17['count'];var _0x2e7ad3=_0x1de3d1?0x0:_0x3248a7[_0xef12('0x1a')];var _0x213be7=_0x1de3d1?_0x4e2a17['count']:_0x3248a7[_0xef12('0x1a')]+_0x3248a7[_0xef12('0x1c')];var _0x18571f;if(_0x213be7>=_0x6fc6f){_0x213be7=_0x6fc6f;_0x18571f=0xc8;}else{_0x18571f=0xce;}_0x17b65c[_0xef12('0x19')](_0x18571f);return _0x17b65c[_0xef12('0x1d')](_0xef12('0x1e'),_0x2e7ad3+'-'+_0x213be7+'/'+_0x6fc6f)[_0xef12('0x1f')](_0x4e2a17);}return null;};}function patchUpdates(_0x9b8a55){return function(_0xb0d8da){try{jsonpatch[_0xef12('0x20')](_0xb0d8da,_0x9b8a55,!![]);}catch(_0x1f5b90){return BPromise['reject'](_0x1f5b90);}return _0xb0d8da[_0xef12('0x21')]();};}function saveUpdates(_0x2eb1c5,_0x48bcf2){return function(_0x1733ff){if(_0x1733ff){return _0x1733ff['update'](_0x2eb1c5)[_0xef12('0x22')](function(_0x43ad77){return _0x43ad77;});}return null;};}function removeEntity(_0x14cf7d,_0x2734c8){return function(_0x3fcc84){if(_0x3fcc84){return _0x3fcc84[_0xef12('0x23')]()['then'](function(){_0x14cf7d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f2918,_0x45177f){return function(_0x397278){if(!_0x397278){_0x1f2918['sendStatus'](0x194);}return _0x397278;};}function handleError(_0x3a19ff,_0x3072c1){_0x3072c1=_0x3072c1||0x1f4;return function(_0x22c70e){logger[_0xef12('0x24')](_0x22c70e[_0xef12('0x25')]);if(_0x22c70e[_0xef12('0x26')]){delete _0x22c70e[_0xef12('0x26')];}_0x3a19ff['status'](_0x3072c1)['send'](_0x22c70e);};}exports[_0xef12('0x27')]=function(_0x4942e7,_0x55a604){var _0x443706={},_0x3e6c74={},_0x136242={'count':0x0,'rows':[]};var _0x32733f=_[_0xef12('0x28')](db[_0xef12('0x29')][_0xef12('0x2a')],function(_0x1aa15a){return{'name':_0x1aa15a[_0xef12('0x2b')],'type':_0x1aa15a[_0xef12('0x2c')][_0xef12('0x2d')]};});_0x3e6c74[_0xef12('0x2e')]=_['map'](_0x32733f,_0xef12('0x26'));_0x3e6c74['query']=_[_0xef12('0x2f')](_0x4942e7[_0xef12('0x30')]);_0x3e6c74[_0xef12('0x31')]=_['intersection'](_0x3e6c74[_0xef12('0x2e')],_0x3e6c74[_0xef12('0x30')]);_0x443706[_0xef12('0x32')]=_[_0xef12('0x33')](_0x3e6c74['model'],qs[_0xef12('0x34')](_0x4942e7[_0xef12('0x30')][_0xef12('0x34')]));_0x443706[_0xef12('0x32')]=_0x443706[_0xef12('0x32')][_0xef12('0x35')]?_0x443706['attributes']:_0x3e6c74[_0xef12('0x2e')];if(!_0x4942e7[_0xef12('0x30')][_0xef12('0x36')](_0xef12('0x37'))){_0x443706[_0xef12('0x1c')]=qs[_0xef12('0x1c')](_0x4942e7['query'][_0xef12('0x1c')]);_0x443706[_0xef12('0x1a')]=qs['offset'](_0x4942e7['query'][_0xef12('0x1a')]);}_0x443706['order']=qs[_0xef12('0x38')](_0x4942e7['query']['sort']);_0x443706[_0xef12('0x39')]=qs[_0xef12('0x31')](_[_0xef12('0x3a')](_0x4942e7['query'],_0x3e6c74[_0xef12('0x31')]),_0x32733f);if(_0x4942e7[_0xef12('0x30')]['filter']){_0x443706[_0xef12('0x39')]=_['merge'](_0x443706[_0xef12('0x39')],{'$or':_[_0xef12('0x28')](_0x32733f,function(_0x55e81d){if(_0x55e81d[_0xef12('0x2c')]!==_0xef12('0x3b')){var _0x5935bd={};_0x5935bd[_0x55e81d[_0xef12('0x26')]]={'$like':'%'+_0x4942e7[_0xef12('0x30')]['filter']+'%'};return _0x5935bd;}})});}_0x443706=_[_0xef12('0x3c')]({},_0x443706,_0x4942e7[_0xef12('0x3d')]);var _0x438543={'where':_0x443706[_0xef12('0x39')]};return db[_0xef12('0x29')][_0xef12('0x3e')](_0x438543)[_0xef12('0x22')](function(_0x4fc9e2){_0x136242[_0xef12('0x3e')]=_0x4fc9e2;if(_0x4942e7[_0xef12('0x30')]['includeAll']){_0x443706['include']=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0xef12('0x3f')](_0x443706);})['then'](function(_0x5b3b00){_0x136242['rows']=_0x5b3b00;return _0x136242;})['then'](respondWithFilteredResult(_0x55a604,_0x443706))[_0xef12('0x40')](handleError(_0x55a604,null));};exports['show']=function(_0x3a14d0,_0x27ae12){var _0x5b88b8={'raw':![],'where':{'id':_0x3a14d0['params']['id']}},_0x675e22={};_0x675e22[_0xef12('0x2e')]=_['keys'](db['SugarcrmConfiguration'][_0xef12('0x2a')]);_0x675e22['query']=_[_0xef12('0x2f')](_0x3a14d0[_0xef12('0x30')]);_0x675e22[_0xef12('0x31')]=_[_0xef12('0x33')](_0x675e22['model'],_0x675e22['query']);_0x5b88b8[_0xef12('0x32')]=_['intersection'](_0x675e22[_0xef12('0x2e')],qs['fields'](_0x3a14d0[_0xef12('0x30')][_0xef12('0x34')]));_0x5b88b8[_0xef12('0x32')]=_0x5b88b8['attributes'][_0xef12('0x35')]?_0x5b88b8[_0xef12('0x32')]:_0x675e22[_0xef12('0x2e')];if(_0x3a14d0['query'][_0xef12('0x41')]){_0x5b88b8[_0xef12('0x42')]=[{'all':!![]}];}_0x5b88b8=_['merge']({},_0x5b88b8,_0x3a14d0[_0xef12('0x3d')]);return db[_0xef12('0x29')][_0xef12('0x43')](_0x5b88b8)['then'](handleEntityNotFound(_0x27ae12,null))[_0xef12('0x22')](respondWithResult(_0x27ae12,null))[_0xef12('0x40')](handleError(_0x27ae12,null));};exports[_0xef12('0x44')]=function(_0x4155e7,_0x364f16){return db[_0xef12('0x29')]['create'](_0x4155e7['body'],{})[_0xef12('0x22')](respondWithResult(_0x364f16,0xc9))[_0xef12('0x40')](handleError(_0x364f16,null));};exports['update']=function(_0x4a696c,_0x15a76c){if(_0x4a696c[_0xef12('0x45')]['id']){delete _0x4a696c[_0xef12('0x45')]['id'];}return db[_0xef12('0x29')][_0xef12('0x43')]({'where':{'id':_0x4a696c['params']['id']}})[_0xef12('0x22')](handleEntityNotFound(_0x15a76c,null))[_0xef12('0x22')](saveUpdates(_0x4a696c[_0xef12('0x45')],null))[_0xef12('0x22')](respondWithResult(_0x15a76c,null))['catch'](handleError(_0x15a76c,null));};exports[_0xef12('0x23')]=function(_0x2adca0,_0x26de89){return db['SugarcrmConfiguration'][_0xef12('0x43')]({'where':{'id':_0x2adca0[_0xef12('0x46')]['id']}})[_0xef12('0x22')](handleEntityNotFound(_0x26de89,null))[_0xef12('0x22')](removeEntity(_0x26de89,null))['catch'](handleError(_0x26de89,null));};exports['getFields']=function(_0x2089fa,_0x16bd1b,_0x47a6f3){var _0x59d7fd={};var _0x5d2fb6={};var _0x4da50d;var _0x402b3b;return db[_0xef12('0x29')]['findOne']({'where':{'id':_0x2089fa[_0xef12('0x46')]['id']}})['then'](handleEntityNotFound(_0x16bd1b,null))[_0xef12('0x22')](function(_0x4f8da4){if(_0x4f8da4){_0x4da50d=_0x4f8da4;_0x5d2fb6[_0xef12('0x2e')]=_[_0xef12('0x2f')](db[_0xef12('0x47')][_0xef12('0x2a')]);_0x5d2fb6[_0xef12('0x30')]=_['keys'](_0x2089fa[_0xef12('0x30')]);_0x5d2fb6[_0xef12('0x31')]=_[_0xef12('0x33')](_0x5d2fb6['model'],_0x5d2fb6[_0xef12('0x30')]);_0x59d7fd[_0xef12('0x32')]=_[_0xef12('0x33')](_0x5d2fb6['model'],qs['fields'](_0x2089fa['query'][_0xef12('0x34')]));_0x59d7fd[_0xef12('0x32')]=_0x59d7fd[_0xef12('0x32')][_0xef12('0x35')]?_0x59d7fd[_0xef12('0x32')]:_0x5d2fb6[_0xef12('0x2e')];_0x59d7fd['order']=qs[_0xef12('0x38')](_0x2089fa['query'][_0xef12('0x38')]);_0x59d7fd[_0xef12('0x39')]=qs['filters'](_[_0xef12('0x3a')](_0x2089fa[_0xef12('0x30')],_0x5d2fb6['filters']));if(_0x2089fa[_0xef12('0x30')][_0xef12('0x48')]){_0x59d7fd[_0xef12('0x39')]=_[_0xef12('0x3c')](_0x59d7fd[_0xef12('0x39')],{'$or':_[_0xef12('0x28')](_0x59d7fd[_0xef12('0x32')],function(_0x4c0aa3){var _0x4f0331={};_0x4f0331[_0x4c0aa3]={'$like':'%'+_0x2089fa[_0xef12('0x30')][_0xef12('0x48')]+'%'};return _0x4f0331;})});}_0x59d7fd=_[_0xef12('0x3c')]({},_0x59d7fd,_0x2089fa['options']);return _0x4da50d[_0xef12('0x49')](_0x59d7fd);}})[_0xef12('0x22')](function(_0x2e6ad4){if(_0x2e6ad4){_0x402b3b=_0x2e6ad4[_0xef12('0x35')];if(!_0x2089fa['query'][_0xef12('0x36')](_0xef12('0x37'))){_0x59d7fd[_0xef12('0x1c')]=qs['limit'](_0x2089fa[_0xef12('0x30')][_0xef12('0x1c')]);_0x59d7fd['offset']=qs[_0xef12('0x1a')](_0x2089fa[_0xef12('0x30')][_0xef12('0x1a')]);}return _0x4da50d[_0xef12('0x49')](_0x59d7fd);}})['then'](function(_0x8e3225){if(_0x8e3225){return _0x8e3225?{'count':_0x402b3b,'rows':_0x8e3225}:null;}})[_0xef12('0x22')](respondWithResult(_0x16bd1b,null))[_0xef12('0x40')](handleError(_0x16bd1b,null));};exports[_0xef12('0x4a')]=function(_0x2f5ec6,_0x4863f6,_0x1c4307){var _0x454eec={};var _0x23812e={};var _0x491670;var _0x76e442;return db[_0xef12('0x29')][_0xef12('0x4b')]({'where':{'id':_0x2f5ec6[_0xef12('0x46')]['id']}})[_0xef12('0x22')](handleEntityNotFound(_0x4863f6,null))['then'](function(_0x53a581){if(_0x53a581){_0x491670=_0x53a581;_0x23812e['model']=_[_0xef12('0x2f')](db[_0xef12('0x47')]['rawAttributes']);_0x23812e[_0xef12('0x30')]=_[_0xef12('0x2f')](_0x2f5ec6[_0xef12('0x30')]);_0x23812e[_0xef12('0x31')]=_[_0xef12('0x33')](_0x23812e[_0xef12('0x2e')],_0x23812e[_0xef12('0x30')]);_0x454eec[_0xef12('0x32')]=_[_0xef12('0x33')](_0x23812e[_0xef12('0x2e')],qs[_0xef12('0x34')](_0x2f5ec6['query'][_0xef12('0x34')]));_0x454eec[_0xef12('0x32')]=_0x454eec[_0xef12('0x32')][_0xef12('0x35')]?_0x454eec[_0xef12('0x32')]:_0x23812e['model'];_0x454eec['order']=qs[_0xef12('0x38')](_0x2f5ec6[_0xef12('0x30')][_0xef12('0x38')]);_0x454eec[_0xef12('0x39')]=qs[_0xef12('0x31')](_[_0xef12('0x3a')](_0x2f5ec6[_0xef12('0x30')],_0x23812e['filters']));if(_0x2f5ec6[_0xef12('0x30')]['filter']){_0x454eec['where']=_['merge'](_0x454eec['where'],{'$or':_[_0xef12('0x28')](_0x454eec[_0xef12('0x32')],function(_0x5e8b75){var _0x20c6a7={};_0x20c6a7[_0x5e8b75]={'$like':'%'+_0x2f5ec6[_0xef12('0x30')][_0xef12('0x48')]+'%'};return _0x20c6a7;})});}_0x454eec=_[_0xef12('0x3c')]({},_0x454eec,_0x2f5ec6[_0xef12('0x3d')]);return _0x491670[_0xef12('0x4a')](_0x454eec);}})[_0xef12('0x22')](function(_0xec1507){if(_0xec1507){_0x76e442=_0xec1507[_0xef12('0x35')];if(!_0x2f5ec6[_0xef12('0x30')][_0xef12('0x36')](_0xef12('0x37'))){_0x454eec[_0xef12('0x1c')]=qs[_0xef12('0x1c')](_0x2f5ec6[_0xef12('0x30')][_0xef12('0x1c')]);_0x454eec['offset']=qs['offset'](_0x2f5ec6[_0xef12('0x30')][_0xef12('0x1a')]);}return _0x491670[_0xef12('0x4a')](_0x454eec);}})[_0xef12('0x22')](function(_0x3ed326){if(_0x3ed326){return _0x3ed326?{'count':_0x76e442,'rows':_0x3ed326}:null;}})[_0xef12('0x22')](respondWithResult(_0x4863f6,null))[_0xef12('0x40')](handleError(_0x4863f6,null));};exports[_0xef12('0x4c')]=function(_0x1cb113,_0x4f6a66,_0x2e7776){var _0x4d6708={};var _0xdb9a44={};var _0x2406c5;var _0x1088f3;return db[_0xef12('0x29')]['findOne']({'where':{'id':_0x1cb113[_0xef12('0x46')]['id']}})['then'](handleEntityNotFound(_0x4f6a66,null))[_0xef12('0x22')](function(_0x5df705){if(_0x5df705){_0x2406c5=_0x5df705;_0xdb9a44[_0xef12('0x2e')]=_[_0xef12('0x2f')](db[_0xef12('0x47')][_0xef12('0x2a')]);_0xdb9a44[_0xef12('0x30')]=_['keys'](_0x1cb113[_0xef12('0x30')]);_0xdb9a44[_0xef12('0x31')]=_[_0xef12('0x33')](_0xdb9a44[_0xef12('0x2e')],_0xdb9a44['query']);_0x4d6708['attributes']=_[_0xef12('0x33')](_0xdb9a44[_0xef12('0x2e')],qs[_0xef12('0x34')](_0x1cb113[_0xef12('0x30')][_0xef12('0x34')]));_0x4d6708[_0xef12('0x32')]=_0x4d6708[_0xef12('0x32')]['length']?_0x4d6708[_0xef12('0x32')]:_0xdb9a44[_0xef12('0x2e')];_0x4d6708[_0xef12('0x4d')]=qs[_0xef12('0x38')](_0x1cb113[_0xef12('0x30')][_0xef12('0x38')]);_0x4d6708[_0xef12('0x39')]=qs[_0xef12('0x31')](_['pick'](_0x1cb113['query'],_0xdb9a44[_0xef12('0x31')]));if(_0x1cb113[_0xef12('0x30')][_0xef12('0x48')]){_0x4d6708[_0xef12('0x39')]=_[_0xef12('0x3c')](_0x4d6708[_0xef12('0x39')],{'$or':_[_0xef12('0x28')](_0x4d6708[_0xef12('0x32')],function(_0x328b83){var _0x5e6a5a={};_0x5e6a5a[_0x328b83]={'$like':'%'+_0x1cb113['query'][_0xef12('0x48')]+'%'};return _0x5e6a5a;})});}_0x4d6708=_['merge']({},_0x4d6708,_0x1cb113[_0xef12('0x3d')]);return _0x2406c5['getDescriptions'](_0x4d6708);}})[_0xef12('0x22')](function(_0x1510e7){if(_0x1510e7){_0x1088f3=_0x1510e7[_0xef12('0x35')];if(!_0x1cb113[_0xef12('0x30')]['hasOwnProperty'](_0xef12('0x37'))){_0x4d6708[_0xef12('0x1c')]=qs[_0xef12('0x1c')](_0x1cb113[_0xef12('0x30')][_0xef12('0x1c')]);_0x4d6708[_0xef12('0x1a')]=qs[_0xef12('0x1a')](_0x1cb113[_0xef12('0x30')][_0xef12('0x1a')]);}return _0x2406c5[_0xef12('0x4c')](_0x4d6708);}})[_0xef12('0x22')](function(_0x9c6843){if(_0x9c6843){return _0x9c6843?{'count':_0x1088f3,'rows':_0x9c6843}:null;}})[_0xef12('0x22')](respondWithResult(_0x4f6a66,null))[_0xef12('0x40')](handleError(_0x4f6a66,null));};
\ No newline at end of file
index ec6e638..26824c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0829=['moment','request-promise','path','rimraf','../../config/environment','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger'];(function(_0x1de596,_0xb82409){var _0x3a195d=function(_0x5e5c3b){while(--_0x5e5c3b){_0x1de596['push'](_0x1de596['shift']());}};_0x3a195d(++_0xb82409);}(_0x0829,0xed));var _0x9082=function(_0x13e233,_0x43db29){_0x13e233=_0x13e233-0x0;var _0xed0701=_0x0829[_0x13e233];return _0xed0701;};'use strict';var _=require(_0x9082('0x0'));var util=require(_0x9082('0x1'));var logger=require(_0x9082('0x2'))('api');var moment=require(_0x9082('0x3'));var BPromise=require('bluebird');var rp=require(_0x9082('0x4'));var fs=require('fs');var path=require(_0x9082('0x5'));var rimraf=require(_0x9082('0x6'));var config=require(_0x9082('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x9082('0x8')]=function(_0x326d74,_0x449f5f){return _0x326d74[_0x9082('0x9')](_0x9082('0xa'),attributes,{'tableName':_0x9082('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x43e4=['rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','api','moment','bluebird','request-promise'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0x43e4,0x1be));var _0x443e=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x43e4[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0x443e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x443e('0x1'));var moment=require(_0x443e('0x2'));var BPromise=require(_0x443e('0x3'));var rp=require(_0x443e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x443e('0x5'));var config=require(_0x443e('0x6'));var attributes=require(_0x443e('0x7'));module[_0x443e('0x8')]=function(_0x5386f1,_0x17c4f6){return _0x5386f1['define'](_0x443e('0x9'),attributes,{'tableName':_0x443e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f2211e6..741daea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe899=['SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x364a01,_0x3dbc8d){var _0x4dab57=function(_0x4bc534){while(--_0x4bc534){_0x364a01['push'](_0x364a01['shift']());}};_0x4dab57(++_0x3dbc8d);}(_0xe899,0x112));var _0x9e89=function(_0x1709e7,_0x2ced21){_0x1709e7=_0x1709e7-0x0;var _0x402819=_0xe899[_0x1709e7];return _0x402819;};'use strict';var _=require(_0x9e89('0x0'));var util=require(_0x9e89('0x1'));var moment=require(_0x9e89('0x2'));var BPromise=require(_0x9e89('0x3'));var rs=require(_0x9e89('0x4'));var fs=require('fs');var Redis=require(_0x9e89('0x5'));var db=require(_0x9e89('0x6'))['db'];var utils=require(_0x9e89('0x7'));var logger=require('../../config/logger')(_0x9e89('0x8'));var config=require(_0x9e89('0x9'));var jayson=require(_0x9e89('0xa'));var client=jayson['client'][_0x9e89('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x189614,_0x53a532,_0x29b66e){return new BPromise(function(_0x59a6fd,_0x59c03f){return client[_0x9e89('0xc')](_0x189614,_0x29b66e)[_0x9e89('0xd')](function(_0x4fe9a9){logger['info'](_0x9e89('0xe'),_0x53a532,_0x9e89('0xf'));logger[_0x9e89('0x10')](_0x9e89('0x11'),_0x53a532,_0x9e89('0xf'),JSON[_0x9e89('0x12')](_0x4fe9a9));if(_0x4fe9a9[_0x9e89('0x13')]){if(_0x4fe9a9['error'][_0x9e89('0x14')]===0x1f4){logger['error'](_0x9e89('0xe'),_0x53a532,_0x4fe9a9[_0x9e89('0x13')]['message']);return _0x59c03f(_0x4fe9a9[_0x9e89('0x13')]['message']);}logger[_0x9e89('0x13')](_0x9e89('0xe'),_0x53a532,_0x4fe9a9[_0x9e89('0x13')][_0x9e89('0x15')]);return _0x59a6fd(_0x4fe9a9[_0x9e89('0x13')][_0x9e89('0x15')]);}else{logger['info'](_0x9e89('0xe'),_0x53a532,'request\x20sent');_0x59a6fd(_0x4fe9a9[_0x9e89('0x16')][_0x9e89('0x15')]);}})[_0x9e89('0x17')](function(_0x29c06a){logger[_0x9e89('0x13')](_0x9e89('0xe'),_0x53a532,_0x29c06a);_0x59c03f(_0x29c06a);});});}
\ No newline at end of file
+var _0x2c99=['error','message','result','catch','lodash','util','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5ee860,_0x16961f){var _0x115945=function(_0x397b02){while(--_0x397b02){_0x5ee860['push'](_0x5ee860['shift']());}};_0x115945(++_0x16961f);}(_0x2c99,0x194));var _0x92c9=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x2c99[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0x92c9('0x0'));var util=require(_0x92c9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x92c9('0x2'));var db=require(_0x92c9('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x92c9('0x4'))(_0x92c9('0x5'));var config=require(_0x92c9('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x92c9('0x7')][_0x92c9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2b147b,_0x1ecc28,_0xead99a){return new BPromise(function(_0x3bfb92,_0x4ccad3){return client['request'](_0x2b147b,_0xead99a)[_0x92c9('0x9')](function(_0x422747){logger[_0x92c9('0xa')](_0x92c9('0xb'),_0x1ecc28,_0x92c9('0xc'));logger[_0x92c9('0xd')](_0x92c9('0xe'),_0x1ecc28,_0x92c9('0xc'),JSON[_0x92c9('0xf')](_0x422747));if(_0x422747[_0x92c9('0x10')]){if(_0x422747[_0x92c9('0x10')]['code']===0x1f4){logger[_0x92c9('0x10')](_0x92c9('0xb'),_0x1ecc28,_0x422747[_0x92c9('0x10')][_0x92c9('0x11')]);return _0x4ccad3(_0x422747[_0x92c9('0x10')]['message']);}logger[_0x92c9('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1ecc28,_0x422747['error'][_0x92c9('0x11')]);return _0x3bfb92(_0x422747[_0x92c9('0x10')][_0x92c9('0x11')]);}else{logger['info'](_0x92c9('0xb'),_0x1ecc28,'request\x20sent');_0x3bfb92(_0x422747[_0x92c9('0x12')][_0x92c9('0x11')]);}})[_0x92c9('0x13')](function(_0xd3b479){logger['error'](_0x92c9('0xb'),_0x1ecc28,_0xd3b479);_0x4ccad3(_0xd3b479);});});}
\ No newline at end of file
index 2415e8a..06bb0c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf76a=['path','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','create','update','delete','multer'];(function(_0x1d7eda,_0x2d510e){var _0x3f87b6=function(_0x1a2a01){while(--_0x1a2a01){_0x1d7eda['push'](_0x1d7eda['shift']());}};_0x3f87b6(++_0x2d510e);}(_0xf76a,0x77));var _0xaf76=function(_0x3fb59a,_0x1791ed){_0x3fb59a=_0x3fb59a-0x0;var _0x15d126=_0xf76a[_0x3fb59a];return _0x15d126;};'use strict';var multer=require(_0xaf76('0x0'));var util=require('util');var path=require(_0xaf76('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xaf76('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xaf76('0x3'));var interaction=require(_0xaf76('0x4'));var config=require('../../config/environment');var controller=require('./intSugarcrmField.controller');router[_0xaf76('0x5')]('/',auth[_0xaf76('0x6')](),controller[_0xaf76('0x7')]);router[_0xaf76('0x5')]('/:id',auth['isAuthenticated'](),controller[_0xaf76('0x8')]);router['post']('/',auth['isAuthenticated'](),controller[_0xaf76('0x9')]);router['put']('/:id',auth[_0xaf76('0x6')](),controller[_0xaf76('0xa')]);router[_0xaf76('0xb')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x939a=['express','Router','fs-extra','../../config/environment','./intSugarcrmField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','exports','path','connect-timeout'];(function(_0x5ad5a3,_0x381e49){var _0x5e1f3b=function(_0x1a0154){while(--_0x1a0154){_0x5ad5a3['push'](_0x5ad5a3['shift']());}};_0x5e1f3b(++_0x381e49);}(_0x939a,0x185));var _0xa939=function(_0x5181c6,_0x5d8b26){_0x5181c6=_0x5181c6-0x0;var _0xa31280=_0x939a[_0x5181c6];return _0xa31280;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa939('0x0'));var timeout=require(_0xa939('0x1'));var express=require(_0xa939('0x2'));var router=express[_0xa939('0x3')]();var fs_extra=require(_0xa939('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa939('0x5'));var controller=require(_0xa939('0x6'));router['get']('/',auth[_0xa939('0x7')](),controller[_0xa939('0x8')]);router[_0xa939('0x9')](_0xa939('0xa'),auth['isAuthenticated'](),controller[_0xa939('0xb')]);router[_0xa939('0xc')]('/',auth[_0xa939('0x7')](),controller[_0xa939('0xd')]);router[_0xa939('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xa939('0xf')]);router['delete'](_0xa939('0xa'),auth[_0xa939('0x7')](),controller['destroy']);module[_0xa939('0x10')]=router;
\ No newline at end of file
index 1f760a7..cd59988 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadcc=['customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x59ccf6,_0x3c3af3){var _0x2aa8cd=function(_0x351ba2){while(--_0x351ba2){_0x59ccf6['push'](_0x59ccf6['shift']());}};_0x2aa8cd(++_0x3c3af3);}(_0xadcc,0x13b));var _0xcadc=function(_0x29d63e,_0x10626f){_0x29d63e=_0x29d63e-0x0;var _0x3dafef=_0xadcc[_0x29d63e];return _0x3dafef;};'use strict';var Sequelize=require(_0xcadc('0x0'));module[_0xcadc('0x1')]={'type':{'type':Sequelize[_0xcadc('0x2')](_0xcadc('0x3'),_0xcadc('0x4'),_0xcadc('0x5'),_0xcadc('0x6'),_0xcadc('0x7')),'defaultValue':_0xcadc('0x3')},'content':{'type':Sequelize[_0xcadc('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string',_0xcadc('0x4'),_0xcadc('0x5'))},'keyContent':{'type':Sequelize[_0xcadc('0x8')]},'idField':{'type':Sequelize[_0xcadc('0x8')]},'nameField':{'type':Sequelize[_0xcadc('0x8')]},'customField':{'type':Sequelize[_0xcadc('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcadc('0x8')]}};
\ No newline at end of file
+var _0x5a91=['ENUM','string','customVariable','keyValue','picklist','STRING','exports'];(function(_0x27a900,_0x1cc305){var _0xea9b1f=function(_0xaddd55){while(--_0xaddd55){_0x27a900['push'](_0x27a900['shift']());}};_0xea9b1f(++_0x1cc305);}(_0x5a91,0x99));var _0x15a9=function(_0x41521f,_0x3809ba){_0x41521f=_0x41521f-0x0;var _0x4c91a3=_0x5a91[_0x41521f];return _0x4c91a3;};'use strict';var Sequelize=require('sequelize');module[_0x15a9('0x0')]={'type':{'type':Sequelize[_0x15a9('0x1')](_0x15a9('0x2'),'variable',_0x15a9('0x3'),_0x15a9('0x4'),_0x15a9('0x5')),'defaultValue':_0x15a9('0x2')},'content':{'type':Sequelize[_0x15a9('0x6')]},'key':{'type':Sequelize[_0x15a9('0x6')]},'keyType':{'type':Sequelize[_0x15a9('0x1')](_0x15a9('0x2'),'variable',_0x15a9('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x15a9('0x6')]},'nameField':{'type':Sequelize[_0x15a9('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x15a9('0x6')]}};
\ No newline at end of file
index 887f890..08b01a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb735=['order','sort','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','keys','length','create','body','params','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','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','reject','save','update','then','destroy','error','stack','name','map','SugarcrmField','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','limit'];(function(_0x562f3b,_0x4c65ae){var _0x1edd55=function(_0xe67e06){while(--_0xe67e06){_0x562f3b['push'](_0x562f3b['shift']());}};_0x1edd55(++_0x4c65ae);}(_0xb735,0x1e0));var _0x5b73=function(_0x279f6d,_0x122316){_0x279f6d=_0x279f6d-0x0;var _0x5874a5=_0xb735[_0x279f6d];return _0x5874a5;};'use strict';var emlformat=require(_0x5b73('0x0'));var rimraf=require(_0x5b73('0x1'));var zipdir=require(_0x5b73('0x2'));var jsonpatch=require(_0x5b73('0x3'));var rp=require(_0x5b73('0x4'));var moment=require(_0x5b73('0x5'));var BPromise=require(_0x5b73('0x6'));var Mustache=require(_0x5b73('0x7'));var util=require(_0x5b73('0x8'));var path=require(_0x5b73('0x9'));var sox=require('sox');var csv=require(_0x5b73('0xa'));var ejs=require(_0x5b73('0xb'));var fs=require('fs');var fs_extra=require(_0x5b73('0xc'));var _=require(_0x5b73('0xd'));var squel=require(_0x5b73('0xe'));var crypto=require(_0x5b73('0xf'));var jsforce=require(_0x5b73('0x10'));var deskjs=require(_0x5b73('0x11'));var toCsv=require('to-csv');var querystring=require(_0x5b73('0x12'));var Papa=require(_0x5b73('0x13'));var Redis=require(_0x5b73('0x14'));var authService=require(_0x5b73('0x15'));var qs=require(_0x5b73('0x16'));var as=require(_0x5b73('0x17'));var hardwareService=require(_0x5b73('0x18'));var logger=require(_0x5b73('0x19'))(_0x5b73('0x1a'));var utils=require(_0x5b73('0x1b'));var config=require('../../config/environment');var licenseUtil=require(_0x5b73('0x1c'));var db=require(_0x5b73('0x1d'))['db'];function respondWithStatusCode(_0x1452ba,_0x398c65){_0x398c65=_0x398c65||0xcc;return function(_0x547032){if(_0x547032){return _0x1452ba[_0x5b73('0x1e')](_0x398c65);}return _0x1452ba[_0x5b73('0x1f')](_0x398c65)[_0x5b73('0x20')]();};}function respondWithResult(_0x1ca27d,_0x5a7fd8){_0x5a7fd8=_0x5a7fd8||0xc8;return function(_0x5e6dbe){if(_0x5e6dbe){return _0x1ca27d['status'](_0x5a7fd8)[_0x5b73('0x21')](_0x5e6dbe);}};}function respondWithFilteredResult(_0x13bdd4,_0x46222c){return function(_0x1cf033){if(_0x1cf033){var _0x1effbe=typeof _0x46222c[_0x5b73('0x22')]===_0x5b73('0x23')&&typeof _0x46222c['limit']==='undefined';var _0x2ba32e=_0x1cf033[_0x5b73('0x24')];var _0xd7e9cb=_0x1effbe?0x0:_0x46222c['offset'];var _0x44d52e=_0x1effbe?_0x1cf033[_0x5b73('0x24')]:_0x46222c['offset']+_0x46222c['limit'];var _0xb0134c;if(_0x44d52e>=_0x2ba32e){_0x44d52e=_0x2ba32e;_0xb0134c=0xc8;}else{_0xb0134c=0xce;}_0x13bdd4['status'](_0xb0134c);return _0x13bdd4['set']('Content-Range',_0xd7e9cb+'-'+_0x44d52e+'/'+_0x2ba32e)[_0x5b73('0x21')](_0x1cf033);}return null;};}function patchUpdates(_0x55dac6){return function(_0x343762){try{jsonpatch['apply'](_0x343762,_0x55dac6,!![]);}catch(_0x4a3334){return BPromise[_0x5b73('0x25')](_0x4a3334);}return _0x343762[_0x5b73('0x26')]();};}function saveUpdates(_0x445b7c,_0x36e5be){return function(_0x8d1d97){if(_0x8d1d97){return _0x8d1d97[_0x5b73('0x27')](_0x445b7c)[_0x5b73('0x28')](function(_0x48d465){return _0x48d465;});}return null;};}function removeEntity(_0x2a8586,_0x35ddbd){return function(_0x35a5fc){if(_0x35a5fc){return _0x35a5fc[_0x5b73('0x29')]()[_0x5b73('0x28')](function(){_0x2a8586[_0x5b73('0x1f')](0xcc)[_0x5b73('0x20')]();});}};}function handleEntityNotFound(_0x1676ec,_0x3d16c5){return function(_0x539f22){if(!_0x539f22){_0x1676ec[_0x5b73('0x1e')](0x194);}return _0x539f22;};}function handleError(_0xafc2aa,_0x12791b){_0x12791b=_0x12791b||0x1f4;return function(_0x3a7a0d){logger[_0x5b73('0x2a')](_0x3a7a0d[_0x5b73('0x2b')]);if(_0x3a7a0d[_0x5b73('0x2c')]){delete _0x3a7a0d[_0x5b73('0x2c')];}_0xafc2aa[_0x5b73('0x1f')](_0x12791b)['send'](_0x3a7a0d);};}exports['index']=function(_0x321ad2,_0x1f00ab){var _0x42b474={},_0x5a505={},_0x43b106={'count':0x0,'rows':[]};var _0x2abbba=_[_0x5b73('0x2d')](db[_0x5b73('0x2e')][_0x5b73('0x2f')],function(_0x1c189a){return{'name':_0x1c189a[_0x5b73('0x30')],'type':_0x1c189a[_0x5b73('0x31')][_0x5b73('0x32')]};});_0x5a505[_0x5b73('0x33')]=_[_0x5b73('0x2d')](_0x2abbba,'name');_0x5a505[_0x5b73('0x34')]=_['keys'](_0x321ad2[_0x5b73('0x34')]);_0x5a505[_0x5b73('0x35')]=_['intersection'](_0x5a505[_0x5b73('0x33')],_0x5a505[_0x5b73('0x34')]);_0x42b474['attributes']=_[_0x5b73('0x36')](_0x5a505[_0x5b73('0x33')],qs[_0x5b73('0x37')](_0x321ad2[_0x5b73('0x34')][_0x5b73('0x37')]));_0x42b474[_0x5b73('0x38')]=_0x42b474[_0x5b73('0x38')]['length']?_0x42b474[_0x5b73('0x38')]:_0x5a505[_0x5b73('0x33')];if(!_0x321ad2['query'][_0x5b73('0x39')]('nolimit')){_0x42b474[_0x5b73('0x3a')]=qs[_0x5b73('0x3a')](_0x321ad2['query'][_0x5b73('0x3a')]);_0x42b474[_0x5b73('0x22')]=qs[_0x5b73('0x22')](_0x321ad2['query'][_0x5b73('0x22')]);}_0x42b474[_0x5b73('0x3b')]=qs[_0x5b73('0x3c')](_0x321ad2[_0x5b73('0x34')][_0x5b73('0x3c')]);_0x42b474[_0x5b73('0x3d')]=qs[_0x5b73('0x35')](_['pick'](_0x321ad2['query'],_0x5a505['filters']),_0x2abbba);if(_0x321ad2[_0x5b73('0x34')]['filter']){_0x42b474['where']=_['merge'](_0x42b474[_0x5b73('0x3d')],{'$or':_[_0x5b73('0x2d')](_0x2abbba,function(_0x123bf3){if(_0x123bf3['type']!==_0x5b73('0x3e')){var _0x46c0bf={};_0x46c0bf[_0x123bf3[_0x5b73('0x2c')]]={'$like':'%'+_0x321ad2[_0x5b73('0x34')][_0x5b73('0x3f')]+'%'};return _0x46c0bf;}})});}_0x42b474=_[_0x5b73('0x40')]({},_0x42b474,_0x321ad2[_0x5b73('0x41')]);var _0x5a5aa9={'where':_0x42b474[_0x5b73('0x3d')]};return db[_0x5b73('0x2e')][_0x5b73('0x24')](_0x5a5aa9)[_0x5b73('0x28')](function(_0x36e5e4){_0x43b106['count']=_0x36e5e4;if(_0x321ad2[_0x5b73('0x34')][_0x5b73('0x42')]){_0x42b474[_0x5b73('0x43')]=[{'all':!![]}];}return db[_0x5b73('0x2e')][_0x5b73('0x44')](_0x42b474);})[_0x5b73('0x28')](function(_0x549868){_0x43b106[_0x5b73('0x45')]=_0x549868;return _0x43b106;})['then'](respondWithFilteredResult(_0x1f00ab,_0x42b474))[_0x5b73('0x46')](handleError(_0x1f00ab,null));};exports[_0x5b73('0x47')]=function(_0x4e66f4,_0x33bb08){var _0x2a2fd3={'raw':!![],'where':{'id':_0x4e66f4['params']['id']}},_0x4fd1ec={};_0x4fd1ec[_0x5b73('0x33')]=_[_0x5b73('0x48')](db[_0x5b73('0x2e')]['rawAttributes']);_0x4fd1ec['query']=_['keys'](_0x4e66f4['query']);_0x4fd1ec['filters']=_[_0x5b73('0x36')](_0x4fd1ec['model'],_0x4fd1ec[_0x5b73('0x34')]);_0x2a2fd3[_0x5b73('0x38')]=_[_0x5b73('0x36')](_0x4fd1ec[_0x5b73('0x33')],qs[_0x5b73('0x37')](_0x4e66f4[_0x5b73('0x34')][_0x5b73('0x37')]));_0x2a2fd3[_0x5b73('0x38')]=_0x2a2fd3[_0x5b73('0x38')][_0x5b73('0x49')]?_0x2a2fd3[_0x5b73('0x38')]:_0x4fd1ec[_0x5b73('0x33')];if(_0x4e66f4['query']['includeAll']){_0x2a2fd3[_0x5b73('0x43')]=[{'all':!![]}];}_0x2a2fd3=_[_0x5b73('0x40')]({},_0x2a2fd3,_0x4e66f4[_0x5b73('0x41')]);return db[_0x5b73('0x2e')]['find'](_0x2a2fd3)[_0x5b73('0x28')](handleEntityNotFound(_0x33bb08,null))[_0x5b73('0x28')](respondWithResult(_0x33bb08,null))['catch'](handleError(_0x33bb08,null));};exports[_0x5b73('0x4a')]=function(_0x400a5e,_0x165284){return db[_0x5b73('0x2e')]['create'](_0x400a5e[_0x5b73('0x4b')],{})[_0x5b73('0x28')](respondWithResult(_0x165284,0xc9))[_0x5b73('0x46')](handleError(_0x165284,null));};exports[_0x5b73('0x27')]=function(_0x73ddad,_0x467f2f){if(_0x73ddad[_0x5b73('0x4b')]['id']){delete _0x73ddad[_0x5b73('0x4b')]['id'];}return db[_0x5b73('0x2e')]['find']({'where':{'id':_0x73ddad[_0x5b73('0x4c')]['id']}})['then'](handleEntityNotFound(_0x467f2f,null))[_0x5b73('0x28')](saveUpdates(_0x73ddad[_0x5b73('0x4b')],null))['then'](respondWithResult(_0x467f2f,null))[_0x5b73('0x46')](handleError(_0x467f2f,null));};exports[_0x5b73('0x29')]=function(_0xaac722,_0x39076d){return db[_0x5b73('0x2e')]['find']({'where':{'id':_0xaac722[_0x5b73('0x4c')]['id']}})['then'](handleEntityNotFound(_0x39076d,null))[_0x5b73('0x28')](removeEntity(_0x39076d,null))[_0x5b73('0x46')](handleError(_0x39076d,null));};
\ No newline at end of file
+var _0x0ce5=['mustache','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','undefined','offset','count','limit','Content-Range','json','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','SugarcrmField','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','catch','params','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x116567,_0x1ddd43){var _0x233c6a=function(_0x51e3ce){while(--_0x51e3ce){_0x116567['push'](_0x116567['shift']());}};_0x233c6a(++_0x1ddd43);}(_0x0ce5,0x89));var _0x50ce=function(_0x39bf21,_0x5c2e3f){_0x39bf21=_0x39bf21-0x0;var _0x19c6e9=_0x0ce5[_0x39bf21];return _0x19c6e9;};'use strict';var emlformat=require(_0x50ce('0x0'));var rimraf=require(_0x50ce('0x1'));var zipdir=require(_0x50ce('0x2'));var jsonpatch=require(_0x50ce('0x3'));var rp=require(_0x50ce('0x4'));var moment=require(_0x50ce('0x5'));var BPromise=require(_0x50ce('0x6'));var Mustache=require(_0x50ce('0x7'));var util=require('util');var path=require(_0x50ce('0x8'));var sox=require(_0x50ce('0x9'));var csv=require(_0x50ce('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x50ce('0xb'));var _=require('lodash');var squel=require(_0x50ce('0xc'));var crypto=require('crypto');var jsforce=require(_0x50ce('0xd'));var deskjs=require(_0x50ce('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x50ce('0xf'));var Redis=require(_0x50ce('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x50ce('0x11'));var as=require(_0x50ce('0x12'));var hardwareService=require(_0x50ce('0x13'));var logger=require('../../config/logger')(_0x50ce('0x14'));var utils=require('../../config/utils');var config=require(_0x50ce('0x15'));var licenseUtil=require(_0x50ce('0x16'));var db=require(_0x50ce('0x17'))['db'];function respondWithStatusCode(_0x45a306,_0x26f05e){_0x26f05e=_0x26f05e||0xcc;return function(_0x4afca9){if(_0x4afca9){return _0x45a306['sendStatus'](_0x26f05e);}return _0x45a306['status'](_0x26f05e)[_0x50ce('0x18')]();};}function respondWithResult(_0x3b39d0,_0x4fdf29){_0x4fdf29=_0x4fdf29||0xc8;return function(_0x49ee96){if(_0x49ee96){return _0x3b39d0[_0x50ce('0x19')](_0x4fdf29)['json'](_0x49ee96);}};}function respondWithFilteredResult(_0x2609bc,_0x46ddf2){return function(_0x5a3241){if(_0x5a3241){var _0x743a7d=typeof _0x46ddf2['offset']===_0x50ce('0x1a')&&typeof _0x46ddf2['limit']==='undefined';var _0x2993ac=_0x5a3241['count'];var _0x4db8d9=_0x743a7d?0x0:_0x46ddf2[_0x50ce('0x1b')];var _0x7a534b=_0x743a7d?_0x5a3241[_0x50ce('0x1c')]:_0x46ddf2[_0x50ce('0x1b')]+_0x46ddf2[_0x50ce('0x1d')];var _0x399276;if(_0x7a534b>=_0x2993ac){_0x7a534b=_0x2993ac;_0x399276=0xc8;}else{_0x399276=0xce;}_0x2609bc[_0x50ce('0x19')](_0x399276);return _0x2609bc['set'](_0x50ce('0x1e'),_0x4db8d9+'-'+_0x7a534b+'/'+_0x2993ac)[_0x50ce('0x1f')](_0x5a3241);}return null;};}function patchUpdates(_0x2f7954){return function(_0x3aa403){try{jsonpatch[_0x50ce('0x20')](_0x3aa403,_0x2f7954,!![]);}catch(_0x4c45b5){return BPromise['reject'](_0x4c45b5);}return _0x3aa403[_0x50ce('0x21')]();};}function saveUpdates(_0x3b840f,_0x114951){return function(_0x2e1d0c){if(_0x2e1d0c){return _0x2e1d0c[_0x50ce('0x22')](_0x3b840f)[_0x50ce('0x23')](function(_0x44333d){return _0x44333d;});}return null;};}function removeEntity(_0x366b31,_0x48e7ac){return function(_0x27e1a0){if(_0x27e1a0){return _0x27e1a0[_0x50ce('0x24')]()[_0x50ce('0x23')](function(){_0x366b31[_0x50ce('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a3229,_0x5275b1){return function(_0x26db6e){if(!_0x26db6e){_0x5a3229[_0x50ce('0x25')](0x194);}return _0x26db6e;};}function handleError(_0x63d156,_0x21d741){_0x21d741=_0x21d741||0x1f4;return function(_0x7b395a){logger[_0x50ce('0x26')](_0x7b395a['stack']);if(_0x7b395a[_0x50ce('0x27')]){delete _0x7b395a[_0x50ce('0x27')];}_0x63d156[_0x50ce('0x19')](_0x21d741)[_0x50ce('0x28')](_0x7b395a);};}exports[_0x50ce('0x29')]=function(_0x811e1c,_0x1f8bad){var _0x43f767={},_0x37420e={},_0x25e929={'count':0x0,'rows':[]};var _0x193825=_[_0x50ce('0x2a')](db[_0x50ce('0x2b')][_0x50ce('0x2c')],function(_0x1c78cc){return{'name':_0x1c78cc[_0x50ce('0x2d')],'type':_0x1c78cc['type'][_0x50ce('0x2e')]};});_0x37420e['model']=_['map'](_0x193825,_0x50ce('0x27'));_0x37420e[_0x50ce('0x2f')]=_[_0x50ce('0x30')](_0x811e1c[_0x50ce('0x2f')]);_0x37420e[_0x50ce('0x31')]=_[_0x50ce('0x32')](_0x37420e[_0x50ce('0x33')],_0x37420e[_0x50ce('0x2f')]);_0x43f767[_0x50ce('0x34')]=_[_0x50ce('0x32')](_0x37420e[_0x50ce('0x33')],qs['fields'](_0x811e1c[_0x50ce('0x2f')][_0x50ce('0x35')]));_0x43f767[_0x50ce('0x34')]=_0x43f767[_0x50ce('0x34')]['length']?_0x43f767['attributes']:_0x37420e[_0x50ce('0x33')];if(!_0x811e1c[_0x50ce('0x2f')][_0x50ce('0x36')](_0x50ce('0x37'))){_0x43f767['limit']=qs[_0x50ce('0x1d')](_0x811e1c[_0x50ce('0x2f')]['limit']);_0x43f767[_0x50ce('0x1b')]=qs[_0x50ce('0x1b')](_0x811e1c[_0x50ce('0x2f')][_0x50ce('0x1b')]);}_0x43f767[_0x50ce('0x38')]=qs['sort'](_0x811e1c[_0x50ce('0x2f')][_0x50ce('0x39')]);_0x43f767[_0x50ce('0x3a')]=qs[_0x50ce('0x31')](_['pick'](_0x811e1c[_0x50ce('0x2f')],_0x37420e[_0x50ce('0x31')]),_0x193825);if(_0x811e1c[_0x50ce('0x2f')][_0x50ce('0x3b')]){_0x43f767[_0x50ce('0x3a')]=_[_0x50ce('0x3c')](_0x43f767[_0x50ce('0x3a')],{'$or':_[_0x50ce('0x2a')](_0x193825,function(_0x5aeef9){if(_0x5aeef9[_0x50ce('0x3d')]!==_0x50ce('0x3e')){var _0x7db1e8={};_0x7db1e8[_0x5aeef9[_0x50ce('0x27')]]={'$like':'%'+_0x811e1c[_0x50ce('0x2f')]['filter']+'%'};return _0x7db1e8;}})});}_0x43f767=_[_0x50ce('0x3c')]({},_0x43f767,_0x811e1c[_0x50ce('0x3f')]);var _0x5ad95b={'where':_0x43f767[_0x50ce('0x3a')]};return db['SugarcrmField'][_0x50ce('0x1c')](_0x5ad95b)[_0x50ce('0x23')](function(_0x5ea40d){_0x25e929[_0x50ce('0x1c')]=_0x5ea40d;if(_0x811e1c[_0x50ce('0x2f')][_0x50ce('0x40')]){_0x43f767[_0x50ce('0x41')]=[{'all':!![]}];}return db[_0x50ce('0x2b')]['findAll'](_0x43f767);})['then'](function(_0x5257ae){_0x25e929['rows']=_0x5257ae;return _0x25e929;})[_0x50ce('0x23')](respondWithFilteredResult(_0x1f8bad,_0x43f767))[_0x50ce('0x42')](handleError(_0x1f8bad,null));};exports['show']=function(_0x992261,_0x34c9be){var _0xee3126={'raw':!![],'where':{'id':_0x992261[_0x50ce('0x43')]['id']}},_0x105e7b={};_0x105e7b[_0x50ce('0x33')]=_[_0x50ce('0x30')](db[_0x50ce('0x2b')][_0x50ce('0x2c')]);_0x105e7b[_0x50ce('0x2f')]=_[_0x50ce('0x30')](_0x992261['query']);_0x105e7b[_0x50ce('0x31')]=_[_0x50ce('0x32')](_0x105e7b[_0x50ce('0x33')],_0x105e7b[_0x50ce('0x2f')]);_0xee3126['attributes']=_[_0x50ce('0x32')](_0x105e7b[_0x50ce('0x33')],qs['fields'](_0x992261[_0x50ce('0x2f')]['fields']));_0xee3126[_0x50ce('0x34')]=_0xee3126[_0x50ce('0x34')][_0x50ce('0x44')]?_0xee3126['attributes']:_0x105e7b[_0x50ce('0x33')];if(_0x992261['query'][_0x50ce('0x40')]){_0xee3126[_0x50ce('0x41')]=[{'all':!![]}];}_0xee3126=_[_0x50ce('0x3c')]({},_0xee3126,_0x992261[_0x50ce('0x3f')]);return db[_0x50ce('0x2b')][_0x50ce('0x45')](_0xee3126)[_0x50ce('0x23')](handleEntityNotFound(_0x34c9be,null))['then'](respondWithResult(_0x34c9be,null))['catch'](handleError(_0x34c9be,null));};exports['create']=function(_0x370f02,_0x1eb585){return db[_0x50ce('0x2b')][_0x50ce('0x46')](_0x370f02['body'],{})['then'](respondWithResult(_0x1eb585,0xc9))[_0x50ce('0x42')](handleError(_0x1eb585,null));};exports['update']=function(_0x455b0a,_0x37c61c){if(_0x455b0a[_0x50ce('0x47')]['id']){delete _0x455b0a[_0x50ce('0x47')]['id'];}return db[_0x50ce('0x2b')][_0x50ce('0x45')]({'where':{'id':_0x455b0a[_0x50ce('0x43')]['id']}})[_0x50ce('0x23')](handleEntityNotFound(_0x37c61c,null))[_0x50ce('0x23')](saveUpdates(_0x455b0a['body'],null))[_0x50ce('0x23')](respondWithResult(_0x37c61c,null))[_0x50ce('0x42')](handleError(_0x37c61c,null));};exports[_0x50ce('0x24')]=function(_0x53e98a,_0x495a93){return db['SugarcrmField'][_0x50ce('0x45')]({'where':{'id':_0x53e98a[_0x50ce('0x43')]['id']}})[_0x50ce('0x23')](handleEntityNotFound(_0x495a93,null))['then'](removeEntity(_0x495a93,null))[_0x50ce('0x42')](handleError(_0x495a93,null));};
\ No newline at end of file
index ae0acfe..d8aa8c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a6=['rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','int_sugarcrm_fields','sugarcrm_unique_index','FieldId','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x353feb,_0x413c31){var _0x276a49=function(_0xd8c90e){while(--_0xd8c90e){_0x353feb['push'](_0x353feb['shift']());}};_0x276a49(++_0x413c31);}(_0xd8a6,0x143));var _0x6d8a=function(_0x4390c7,_0x3a97b0){_0x4390c7=_0x4390c7-0x0;var _0x301fc6=_0xd8a6[_0x4390c7];return _0x301fc6;};'use strict';var _=require(_0x6d8a('0x0'));var util=require(_0x6d8a('0x1'));var logger=require('../../config/logger')(_0x6d8a('0x2'));var moment=require(_0x6d8a('0x3'));var BPromise=require(_0x6d8a('0x4'));var rp=require(_0x6d8a('0x5'));var fs=require('fs');var path=require(_0x6d8a('0x6'));var rimraf=require(_0x6d8a('0x7'));var config=require(_0x6d8a('0x8'));var attributes=require(_0x6d8a('0x9'));module[_0x6d8a('0xa')]=function(_0x5b62f3,_0x36487c){return _0x5b62f3[_0x6d8a('0xb')]('SugarcrmField',attributes,{'tableName':_0x6d8a('0xc'),'paranoid':![],'indexes':[{'name':_0x6d8a('0xd'),'fields':['idField',_0x6d8a('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x37bb=['sugarcrm_unique_index','idField','FieldId','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','SugarcrmField','int_sugarcrm_fields'];(function(_0x495344,_0x3bbfe5){var _0x2f3b52=function(_0x5ab18f){while(--_0x5ab18f){_0x495344['push'](_0x495344['shift']());}};_0x2f3b52(++_0x3bbfe5);}(_0x37bb,0x153));var _0xb37b=function(_0x129527,_0x43bfd2){_0x129527=_0x129527-0x0;var _0x434b37=_0x37bb[_0x129527];return _0x434b37;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xb37b('0x0'));var moment=require(_0xb37b('0x1'));var BPromise=require(_0xb37b('0x2'));var rp=require(_0xb37b('0x3'));var fs=require('fs');var path=require(_0xb37b('0x4'));var rimraf=require(_0xb37b('0x5'));var config=require(_0xb37b('0x6'));var attributes=require('./intSugarcrmField.attributes');module['exports']=function(_0x2d397b,_0x2930dc){return _0x2d397b['define'](_0xb37b('0x7'),attributes,{'tableName':_0xb37b('0x8'),'paranoid':![],'indexes':[{'name':_0xb37b('0x9'),'fields':[_0xb37b('0xa'),_0xb37b('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5b4fd05..dcf7cfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7932=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','SugarcrmField,\x20%s,\x20%s','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash'];(function(_0x2fb2a9,_0x5badf7){var _0x106844=function(_0x335669){while(--_0x335669){_0x2fb2a9['push'](_0x2fb2a9['shift']());}};_0x106844(++_0x5badf7);}(_0x7932,0x110));var _0x2793=function(_0x14ebc9,_0x5d9ff4){_0x14ebc9=_0x14ebc9-0x0;var _0x2e8063=_0x7932[_0x14ebc9];return _0x2e8063;};'use strict';var _=require(_0x2793('0x0'));var util=require('util');var moment=require(_0x2793('0x1'));var BPromise=require(_0x2793('0x2'));var rs=require(_0x2793('0x3'));var fs=require('fs');var Redis=require(_0x2793('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2793('0x5'));var logger=require(_0x2793('0x6'))('rpc');var config=require(_0x2793('0x7'));var jayson=require(_0x2793('0x8'));var client=jayson[_0x2793('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x42de3b,_0x53ddce,_0x27975e){return new BPromise(function(_0x1a9c17,_0x50b593){return client['request'](_0x42de3b,_0x27975e)[_0x2793('0xa')](function(_0x34ca6e){logger[_0x2793('0xb')](_0x2793('0xc'),_0x53ddce,'request\x20sent');logger[_0x2793('0xd')](_0x2793('0xe'),_0x53ddce,'request\x20sent',JSON['stringify'](_0x34ca6e));if(_0x34ca6e['error']){if(_0x34ca6e[_0x2793('0xf')][_0x2793('0x10')]===0x1f4){logger['error'](_0x2793('0xc'),_0x53ddce,_0x34ca6e[_0x2793('0xf')][_0x2793('0x11')]);return _0x50b593(_0x34ca6e['error']['message']);}logger[_0x2793('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x53ddce,_0x34ca6e['error'][_0x2793('0x11')]);return _0x1a9c17(_0x34ca6e[_0x2793('0xf')]['message']);}else{logger[_0x2793('0xb')](_0x2793('0xc'),_0x53ddce,_0x2793('0x12'));_0x1a9c17(_0x34ca6e[_0x2793('0x13')][_0x2793('0x11')]);}})[_0x2793('0x14')](function(_0x3f1cbf){logger[_0x2793('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x53ddce,_0x3f1cbf);_0x50b593(_0x3f1cbf);});});}
\ No newline at end of file
+var _0x3075=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x237602,_0x4311af){var _0x2052cc=function(_0x5c7ee0){while(--_0x5c7ee0){_0x237602['push'](_0x237602['shift']());}};_0x2052cc(++_0x4311af);}(_0x3075,0x157));var _0x5307=function(_0x36d802,_0x33129c){_0x36d802=_0x36d802-0x0;var _0x471df5=_0x3075[_0x36d802];return _0x471df5;};'use strict';var _=require(_0x5307('0x0'));var util=require(_0x5307('0x1'));var moment=require(_0x5307('0x2'));var BPromise=require(_0x5307('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5307('0x4'));var db=require(_0x5307('0x5'))['db'];var utils=require(_0x5307('0x6'));var logger=require(_0x5307('0x7'))(_0x5307('0x8'));var config=require(_0x5307('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5307('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x27707e,_0x40d290,_0x4bd020){return new BPromise(function(_0x16e0f2,_0x1aee66){return client['request'](_0x27707e,_0x4bd020)[_0x5307('0xb')](function(_0x439e46){logger[_0x5307('0xc')](_0x5307('0xd'),_0x40d290,_0x5307('0xe'));logger[_0x5307('0xf')](_0x5307('0x10'),_0x40d290,_0x5307('0xe'),JSON[_0x5307('0x11')](_0x439e46));if(_0x439e46[_0x5307('0x12')]){if(_0x439e46[_0x5307('0x12')][_0x5307('0x13')]===0x1f4){logger['error'](_0x5307('0xd'),_0x40d290,_0x439e46[_0x5307('0x12')]['message']);return _0x1aee66(_0x439e46['error']['message']);}logger[_0x5307('0x12')](_0x5307('0xd'),_0x40d290,_0x439e46[_0x5307('0x12')][_0x5307('0x14')]);return _0x16e0f2(_0x439e46[_0x5307('0x12')][_0x5307('0x14')]);}else{logger[_0x5307('0xc')](_0x5307('0xd'),_0x40d290,_0x5307('0xe'));_0x16e0f2(_0x439e46[_0x5307('0x15')][_0x5307('0x14')]);}})[_0x5307('0x16')](function(_0x535662){logger[_0x5307('0x12')](_0x5307('0xd'),_0x40d290,_0x535662);_0x1aee66(_0x535662);});});}
\ No newline at end of file
index 0d1b322..97ca1e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe94a=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','destroy','multer','util','path','express','Router'];(function(_0x33154d,_0x854047){var _0x3b2f03=function(_0x35f7a6){while(--_0x35f7a6){_0x33154d['push'](_0x33154d['shift']());}};_0x3b2f03(++_0x854047);}(_0xe94a,0x1c7));var _0xae94=function(_0x223461,_0x2bca70){_0x223461=_0x223461-0x0;var _0x4dbe0a=_0xe94a[_0x223461];return _0x4dbe0a;};'use strict';var multer=require(_0xae94('0x0'));var util=require(_0xae94('0x1'));var path=require(_0xae94('0x2'));var timeout=require('connect-timeout');var express=require(_0xae94('0x3'));var router=express[_0xae94('0x4')]();var fs_extra=require(_0xae94('0x5'));var auth=require(_0xae94('0x6'));var interaction=require(_0xae94('0x7'));var config=require(_0xae94('0x8'));var controller=require('./intVtigerAccount.controller');router[_0xae94('0x9')]('/',auth[_0xae94('0xa')](),controller[_0xae94('0xb')]);router[_0xae94('0x9')](_0xae94('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xae94('0x9')](_0xae94('0xd'),auth['isAuthenticated'](),controller[_0xae94('0xe')]);router[_0xae94('0x9')](_0xae94('0xf'),auth[_0xae94('0xa')](),controller[_0xae94('0x10')]);router[_0xae94('0x11')]('/',auth[_0xae94('0xa')](),controller[_0xae94('0x12')]);router['post']('/:id/configurations',auth[_0xae94('0xa')](),controller[_0xae94('0x13')]);router['put'](_0xae94('0xc'),auth['isAuthenticated'](),controller[_0xae94('0x14')]);router[_0xae94('0x15')](_0xae94('0xc'),auth[_0xae94('0xa')](),controller[_0xae94('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xd3c6=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','update'];(function(_0x250ed7,_0x3da8b0){var _0x362c1e=function(_0x349f07){while(--_0x349f07){_0x250ed7['push'](_0x250ed7['shift']());}};_0x362c1e(++_0x3da8b0);}(_0xd3c6,0x121));var _0x6d3c=function(_0x46a976,_0x27526d){_0x46a976=_0x46a976-0x0;var _0x3b1eaf=_0xd3c6[_0x46a976];return _0x3b1eaf;};'use strict';var multer=require(_0x6d3c('0x0'));var util=require(_0x6d3c('0x1'));var path=require(_0x6d3c('0x2'));var timeout=require(_0x6d3c('0x3'));var express=require(_0x6d3c('0x4'));var router=express[_0x6d3c('0x5')]();var fs_extra=require(_0x6d3c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x6d3c('0x7'));var config=require(_0x6d3c('0x8'));var controller=require('./intVtigerAccount.controller');router[_0x6d3c('0x9')]('/',auth[_0x6d3c('0xa')](),controller[_0x6d3c('0xb')]);router[_0x6d3c('0x9')](_0x6d3c('0xc'),auth[_0x6d3c('0xa')](),controller[_0x6d3c('0xd')]);router[_0x6d3c('0x9')](_0x6d3c('0xe'),auth[_0x6d3c('0xa')](),controller[_0x6d3c('0xf')]);router[_0x6d3c('0x9')](_0x6d3c('0x10'),auth[_0x6d3c('0xa')](),controller[_0x6d3c('0x11')]);router['post']('/',auth[_0x6d3c('0xa')](),controller[_0x6d3c('0x12')]);router[_0x6d3c('0x13')](_0x6d3c('0xe'),auth[_0x6d3c('0xa')](),controller[_0x6d3c('0x14')]);router[_0x6d3c('0x15')](_0x6d3c('0xc'),auth[_0x6d3c('0xa')](),controller[_0x6d3c('0x16')]);router[_0x6d3c('0x17')](_0x6d3c('0xc'),auth[_0x6d3c('0xa')](),controller[_0x6d3c('0x18')]);module[_0x6d3c('0x19')]=router;
\ No newline at end of file
index f9d996d..aad38dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa48c=['STRING','HelpDesk','sequelize','exports'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xa48c,0xca));var _0xca48=function(_0x338224,_0x1fb425){_0x338224=_0x338224-0x0;var _0x1d5fc5=_0xa48c[_0x338224];return _0x1d5fc5;};'use strict';var Sequelize=require(_0xca48('0x0'));module[_0xca48('0x1')]={'name':{'type':Sequelize[_0xca48('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xca48('0x2')]},'username':{'type':Sequelize[_0xca48('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xca48('0x3')},'remoteUri':{'type':Sequelize[_0xca48('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xca48('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xa70f=['STRING','HelpDesk'];(function(_0x4687df,_0x12099c){var _0x32eaef=function(_0x2387db){while(--_0x2387db){_0x4687df['push'](_0x4687df['shift']());}};_0x32eaef(++_0x12099c);}(_0xa70f,0x1a8));var _0xfa70=function(_0x5c3619,_0x5409fc){_0x5c3619=_0x5c3619-0x0;var _0xafd480=_0xa70f[_0x5c3619];return _0xafd480;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xfa70('0x0')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfa70('0x0')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xfa70('0x1')},'remoteUri':{'type':Sequelize[_0xfa70('0x0')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xfa70('0x0')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index b1f6146..183f11e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b72=['query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','options','include','findAll','rows','catch','params','keys','includeAll','find','create','body','update','getConfigurations','findOne','VtigerConfiguration','order','merge','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','md5','getFields','username','description','accessKey','moduleName','remoteUri','lastIndexOf','format','GET','POST','login','result','token','success','describe','autogenerated','owner','includes','remove','editable','false','label','startsWith','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','error','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','then','destroy','stack','name','send','map','VtigerAccount','rawAttributes','fieldName','type','key','model'];(function(_0xe75f84,_0x4915d0){var _0x590002=function(_0x58193c){while(--_0x58193c){_0xe75f84['push'](_0xe75f84['shift']());}};_0x590002(++_0x4915d0);}(_0x2b72,0x132));var _0x22b7=function(_0x4e08da,_0x596944){_0x4e08da=_0x4e08da-0x0;var _0x2193f0=_0x2b72[_0x4e08da];return _0x2193f0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x22b7('0x0'));var zipdir=require(_0x22b7('0x1'));var jsonpatch=require(_0x22b7('0x2'));var rp=require(_0x22b7('0x3'));var moment=require('moment');var BPromise=require(_0x22b7('0x4'));var Mustache=require(_0x22b7('0x5'));var util=require('util');var path=require('path');var sox=require(_0x22b7('0x6'));var csv=require(_0x22b7('0x7'));var ejs=require(_0x22b7('0x8'));var fs=require('fs');var fs_extra=require(_0x22b7('0x9'));var _=require(_0x22b7('0xa'));var squel=require('squel');var crypto=require(_0x22b7('0xb'));var jsforce=require(_0x22b7('0xc'));var deskjs=require(_0x22b7('0xd'));var toCsv=require('to-csv');var querystring=require(_0x22b7('0xe'));var Papa=require('papaparse');var Redis=require(_0x22b7('0xf'));var authService=require(_0x22b7('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x22b7('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x22b7('0x12'))(_0x22b7('0x13'));var utils=require(_0x22b7('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x22b7('0x15'))['db'];var integrations=require(_0x22b7('0x16'));function respondWithStatusCode(_0x1644e1,_0x52bfce){_0x52bfce=_0x52bfce||0xcc;return function(_0x39e4b4){if(_0x39e4b4){return _0x1644e1[_0x22b7('0x17')](_0x52bfce);}return _0x1644e1[_0x22b7('0x18')](_0x52bfce)[_0x22b7('0x19')]();};}function respondWithResult(_0x178c26,_0x4edca6){_0x4edca6=_0x4edca6||0xc8;return function(_0x4da84e){if(_0x4da84e){return _0x178c26[_0x22b7('0x18')](_0x4edca6)['json'](_0x4da84e);}};}function respondWithFilteredResult(_0x474ef0,_0x1de911){return function(_0x263b1c){if(_0x263b1c){var _0x2cf600=typeof _0x1de911['offset']===_0x22b7('0x1a')&&typeof _0x1de911[_0x22b7('0x1b')]===_0x22b7('0x1a');var _0x1cfd40=_0x263b1c[_0x22b7('0x1c')];var _0x58a6f6=_0x2cf600?0x0:_0x1de911[_0x22b7('0x1d')];var _0xf8693e=_0x2cf600?_0x263b1c[_0x22b7('0x1c')]:_0x1de911['offset']+_0x1de911['limit'];var _0x1eba76;if(_0xf8693e>=_0x1cfd40){_0xf8693e=_0x1cfd40;_0x1eba76=0xc8;}else{_0x1eba76=0xce;}_0x474ef0[_0x22b7('0x18')](_0x1eba76);return _0x474ef0[_0x22b7('0x1e')](_0x22b7('0x1f'),_0x58a6f6+'-'+_0xf8693e+'/'+_0x1cfd40)[_0x22b7('0x20')](_0x263b1c);}return null;};}function patchUpdates(_0x462702){return function(_0x25d8a5){try{jsonpatch[_0x22b7('0x21')](_0x25d8a5,_0x462702,!![]);}catch(_0x181129){return BPromise[_0x22b7('0x22')](_0x181129);}return _0x25d8a5[_0x22b7('0x23')]();};}function saveUpdates(_0x13e612,_0x28614f){return function(_0x1459ee){if(_0x1459ee){return _0x1459ee['update'](_0x13e612)[_0x22b7('0x24')](function(_0x27232c){return _0x27232c;});}return null;};}function removeEntity(_0x2d52cd,_0x409b72){return function(_0xc6ba1c){if(_0xc6ba1c){return _0xc6ba1c[_0x22b7('0x25')]()[_0x22b7('0x24')](function(){_0x2d52cd[_0x22b7('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a1ccb,_0x2110f4){return function(_0x438262){if(!_0x438262){_0x5a1ccb[_0x22b7('0x17')](0x194);}return _0x438262;};}function handleError(_0x534589,_0x2a2215){_0x2a2215=_0x2a2215||0x1f4;return function(_0x37f048){logger['error'](_0x37f048[_0x22b7('0x26')]);if(_0x37f048[_0x22b7('0x27')]){delete _0x37f048[_0x22b7('0x27')];}_0x534589['status'](_0x2a2215)[_0x22b7('0x28')](_0x37f048);};}exports['index']=function(_0x14f3a1,_0x9738fd){var _0x292968={},_0x423a41={},_0x12650f={'count':0x0,'rows':[]};var _0x88013f=_[_0x22b7('0x29')](db[_0x22b7('0x2a')][_0x22b7('0x2b')],function(_0x4e3c61){return{'name':_0x4e3c61[_0x22b7('0x2c')],'type':_0x4e3c61[_0x22b7('0x2d')][_0x22b7('0x2e')]};});_0x423a41[_0x22b7('0x2f')]=_['map'](_0x88013f,_0x22b7('0x27'));_0x423a41[_0x22b7('0x30')]=_['keys'](_0x14f3a1['query']);_0x423a41['filters']=_[_0x22b7('0x31')](_0x423a41['model'],_0x423a41[_0x22b7('0x30')]);_0x292968[_0x22b7('0x32')]=_[_0x22b7('0x31')](_0x423a41[_0x22b7('0x2f')],qs[_0x22b7('0x33')](_0x14f3a1[_0x22b7('0x30')]['fields']));_0x292968[_0x22b7('0x32')]=_0x292968[_0x22b7('0x32')][_0x22b7('0x34')]?_0x292968['attributes']:_0x423a41[_0x22b7('0x2f')];if(!_0x14f3a1['query'][_0x22b7('0x35')](_0x22b7('0x36'))){_0x292968['limit']=qs[_0x22b7('0x1b')](_0x14f3a1[_0x22b7('0x30')][_0x22b7('0x1b')]);_0x292968[_0x22b7('0x1d')]=qs[_0x22b7('0x1d')](_0x14f3a1[_0x22b7('0x30')][_0x22b7('0x1d')]);}_0x292968['order']=qs[_0x22b7('0x37')](_0x14f3a1[_0x22b7('0x30')]['sort']);_0x292968[_0x22b7('0x38')]=qs[_0x22b7('0x39')](_[_0x22b7('0x3a')](_0x14f3a1[_0x22b7('0x30')],_0x423a41['filters']),_0x88013f);if(_0x14f3a1[_0x22b7('0x30')][_0x22b7('0x3b')]){_0x292968['where']=_['merge'](_0x292968['where'],{'$or':_[_0x22b7('0x29')](_0x88013f,function(_0x575ad2){if(_0x575ad2['type']!==_0x22b7('0x3c')){var _0xf0c415={};_0xf0c415[_0x575ad2[_0x22b7('0x27')]]={'$like':'%'+_0x14f3a1[_0x22b7('0x30')][_0x22b7('0x3b')]+'%'};return _0xf0c415;}})});}_0x292968=_['merge']({},_0x292968,_0x14f3a1[_0x22b7('0x3d')]);var _0x4bf834={'where':_0x292968[_0x22b7('0x38')]};return db[_0x22b7('0x2a')][_0x22b7('0x1c')](_0x4bf834)['then'](function(_0x582754){_0x12650f[_0x22b7('0x1c')]=_0x582754;if(_0x14f3a1['query']['includeAll']){_0x292968[_0x22b7('0x3e')]=[{'all':!![]}];}return db[_0x22b7('0x2a')][_0x22b7('0x3f')](_0x292968);})[_0x22b7('0x24')](function(_0x3c6f2d){_0x12650f[_0x22b7('0x40')]=_0x3c6f2d;return _0x12650f;})['then'](respondWithFilteredResult(_0x9738fd,_0x292968))[_0x22b7('0x41')](handleError(_0x9738fd,null));};exports['show']=function(_0x316596,_0x5903d3){var _0x559c94={'raw':![],'where':{'id':_0x316596[_0x22b7('0x42')]['id']}},_0x4f92d8={};_0x4f92d8['model']=_['keys'](db['VtigerAccount']['rawAttributes']);_0x4f92d8[_0x22b7('0x30')]=_[_0x22b7('0x43')](_0x316596[_0x22b7('0x30')]);_0x4f92d8[_0x22b7('0x39')]=_[_0x22b7('0x31')](_0x4f92d8['model'],_0x4f92d8[_0x22b7('0x30')]);_0x559c94[_0x22b7('0x32')]=_[_0x22b7('0x31')](_0x4f92d8['model'],qs[_0x22b7('0x33')](_0x316596[_0x22b7('0x30')]['fields']));_0x559c94[_0x22b7('0x32')]=_0x559c94[_0x22b7('0x32')][_0x22b7('0x34')]?_0x559c94['attributes']:_0x4f92d8[_0x22b7('0x2f')];if(_0x316596[_0x22b7('0x30')][_0x22b7('0x44')]){_0x559c94[_0x22b7('0x3e')]=[{'all':!![]}];}_0x559c94=_['merge']({},_0x559c94,_0x316596[_0x22b7('0x3d')]);return db[_0x22b7('0x2a')][_0x22b7('0x45')](_0x559c94)[_0x22b7('0x24')](handleEntityNotFound(_0x5903d3,null))[_0x22b7('0x24')](respondWithResult(_0x5903d3,null))[_0x22b7('0x41')](handleError(_0x5903d3,null));};exports[_0x22b7('0x46')]=function(_0x32fa42,_0x1e113b){return db[_0x22b7('0x2a')][_0x22b7('0x46')](_0x32fa42[_0x22b7('0x47')],{})[_0x22b7('0x24')](respondWithResult(_0x1e113b,0xc9))[_0x22b7('0x41')](handleError(_0x1e113b,null));};exports[_0x22b7('0x48')]=function(_0x1904eb,_0xd0883d){if(_0x1904eb[_0x22b7('0x47')]['id']){delete _0x1904eb[_0x22b7('0x47')]['id'];}return db[_0x22b7('0x2a')]['find']({'where':{'id':_0x1904eb[_0x22b7('0x42')]['id']}})['then'](handleEntityNotFound(_0xd0883d,null))[_0x22b7('0x24')](saveUpdates(_0x1904eb[_0x22b7('0x47')],null))[_0x22b7('0x24')](respondWithResult(_0xd0883d,null))[_0x22b7('0x41')](handleError(_0xd0883d,null));};exports[_0x22b7('0x25')]=function(_0x3762b1,_0xbd8b64){return db[_0x22b7('0x2a')]['find']({'where':{'id':_0x3762b1['params']['id']}})[_0x22b7('0x24')](handleEntityNotFound(_0xbd8b64,null))[_0x22b7('0x24')](removeEntity(_0xbd8b64,null))[_0x22b7('0x41')](handleError(_0xbd8b64,null));};exports[_0x22b7('0x49')]=function(_0x155915,_0xb393e5,_0x4172ce){var _0x447be1={};var _0x2d8fe3={};var _0x11796f;var _0x20b3f8;return db[_0x22b7('0x2a')][_0x22b7('0x4a')]({'where':{'id':_0x155915[_0x22b7('0x42')]['id']}})[_0x22b7('0x24')](handleEntityNotFound(_0xb393e5,null))[_0x22b7('0x24')](function(_0x496696){if(_0x496696){_0x11796f=_0x496696;_0x2d8fe3[_0x22b7('0x2f')]=_[_0x22b7('0x43')](db[_0x22b7('0x4b')][_0x22b7('0x2b')]);_0x2d8fe3[_0x22b7('0x30')]=_[_0x22b7('0x43')](_0x155915[_0x22b7('0x30')]);_0x2d8fe3[_0x22b7('0x39')]=_[_0x22b7('0x31')](_0x2d8fe3[_0x22b7('0x2f')],_0x2d8fe3[_0x22b7('0x30')]);_0x447be1['attributes']=_['intersection'](_0x2d8fe3[_0x22b7('0x2f')],qs[_0x22b7('0x33')](_0x155915[_0x22b7('0x30')][_0x22b7('0x33')]));_0x447be1[_0x22b7('0x32')]=_0x447be1[_0x22b7('0x32')][_0x22b7('0x34')]?_0x447be1[_0x22b7('0x32')]:_0x2d8fe3[_0x22b7('0x2f')];_0x447be1[_0x22b7('0x4c')]=qs[_0x22b7('0x37')](_0x155915['query'][_0x22b7('0x37')]);_0x447be1[_0x22b7('0x38')]=qs['filters'](_['pick'](_0x155915[_0x22b7('0x30')],_0x2d8fe3[_0x22b7('0x39')]));if(_0x155915[_0x22b7('0x30')][_0x22b7('0x3b')]){_0x447be1[_0x22b7('0x38')]=_[_0x22b7('0x4d')](_0x447be1[_0x22b7('0x38')],{'$or':_[_0x22b7('0x29')](_0x447be1[_0x22b7('0x32')],function(_0xbdc59e){var _0x1b0308={};_0x1b0308[_0xbdc59e]={'$like':'%'+_0x155915[_0x22b7('0x30')][_0x22b7('0x3b')]+'%'};return _0x1b0308;})});}_0x447be1=_['merge']({},_0x447be1,_0x155915[_0x22b7('0x3d')]);return _0x11796f[_0x22b7('0x49')](_0x447be1);}})[_0x22b7('0x24')](function(_0x13d89b){if(_0x13d89b){_0x20b3f8=_0x13d89b[_0x22b7('0x34')];if(!_0x155915['query'][_0x22b7('0x35')]('nolimit')){_0x447be1[_0x22b7('0x1b')]=qs['limit'](_0x155915[_0x22b7('0x30')][_0x22b7('0x1b')]);_0x447be1[_0x22b7('0x1d')]=qs[_0x22b7('0x1d')](_0x155915[_0x22b7('0x30')][_0x22b7('0x1d')]);}return _0x11796f[_0x22b7('0x49')](_0x447be1);}})[_0x22b7('0x24')](function(_0x1a7f0b){if(_0x1a7f0b){return _0x1a7f0b?{'count':_0x20b3f8,'rows':_0x1a7f0b}:null;}})[_0x22b7('0x24')](respondWithResult(_0xb393e5,null))[_0x22b7('0x41')](handleError(_0xb393e5,null));};exports[_0x22b7('0x4e')]=function(_0x280bb2,_0x1a79b6,_0x491f6e){if(_0x280bb2['body']['id']){delete _0x280bb2['body']['id'];}return db[_0x22b7('0x2a')][_0x22b7('0x4a')]({'where':{'id':_0x280bb2[_0x22b7('0x42')]['id']}})[_0x22b7('0x24')](handleEntityNotFound(_0x1a79b6,null))[_0x22b7('0x24')](function(_0x2ddc5a){if(_0x2ddc5a){_0x280bb2['body']['AccountId']=_0x2ddc5a['id'];_0x280bb2[_0x22b7('0x47')]['Subjects']=integrations[_0x22b7('0x4f')](_0x280bb2['body'][_0x22b7('0x50')],_0x280bb2[_0x22b7('0x47')][_0x22b7('0x2d')]);_0x280bb2[_0x22b7('0x47')][_0x22b7('0x51')]=integrations[_0x22b7('0x52')](_0x280bb2[_0x22b7('0x47')][_0x22b7('0x50')],_0x280bb2[_0x22b7('0x47')][_0x22b7('0x2d')]);return db[_0x22b7('0x4b')]['create'](_0x280bb2[_0x22b7('0x47')],{'include':[{'model':db['VtigerField'],'as':'Subjects'},{'model':db['VtigerField'],'as':_0x22b7('0x51')}]});}return null;})[_0x22b7('0x24')](respondWithResult(_0x1a79b6,null))['catch'](handleError(_0x1a79b6,null));};var md5=require(_0x22b7('0x53'));exports[_0x22b7('0x54')]=function(_0x261a7f,_0x3c2fce,_0x3a35b6){var _0x523f46=null;var _0x300336=null;var _0x298d01=null;var _0x225f15=null;var _0x1d58ed='';return db['VtigerAccount'][_0x22b7('0x4a')]({'where':{'id':_0x261a7f[_0x22b7('0x42')]['id']},'attributes':['id',_0x22b7('0x27'),_0x22b7('0x55'),_0x22b7('0x56'),'moduleName','remoteUri','serverUrl',_0x22b7('0x57')]})[_0x22b7('0x24')](handleEntityNotFound(_0x3c2fce,null))[_0x22b7('0x24')](function(_0x599c42){if(_0x599c42){_0x523f46=_0x599c42['username'];_0x300336=_0x599c42[_0x22b7('0x57')];_0x298d01=_0x599c42[_0x22b7('0x58')];_0x1d58ed=_0x599c42[_0x22b7('0x59')];var _0x3f72fb=_0x1d58ed['slice'](-0x1);if(_0x3f72fb==='/'){_0x1d58ed=_0x1d58ed['substring'](0x0,_0x1d58ed[_0x22b7('0x5a')](_0x3f72fb));}_0x225f15=util[_0x22b7('0x5b')]('%s/webservice.php',_0x1d58ed);var _0x491fb0={'method':_0x22b7('0x5c'),'uri':_0x225f15,'qs':{'operation':'getchallenge','username':_0x599c42[_0x22b7('0x55')]},'json':!![]};return rp(_0x491fb0);}})[_0x22b7('0x24')](function(_0x25abe5){if(_0x25abe5['success']){var _0x2e2bec={'method':_0x22b7('0x5d'),'uri':_0x225f15,'form':{'operation':_0x22b7('0x5e'),'username':_0x523f46,'accessKey':md5(_0x25abe5[_0x22b7('0x5f')][_0x22b7('0x60')]+_0x300336)},'json':!![]};return rp(_0x2e2bec);}})['then'](function(_0x19bd6e){if(_0x19bd6e[_0x22b7('0x61')]){var _0x20b430={'method':_0x22b7('0x5c'),'uri':_0x225f15,'qs':{'operation':_0x22b7('0x62'),'username':_0x523f46,'sessionName':_0x19bd6e[_0x22b7('0x5f')]['sessionName'],'elementType':_0x298d01},'json':!![]};return rp(_0x20b430);}})['then'](function(_0x4a116e){if(_0x4a116e[_0x22b7('0x61')]){var _0x1ee512=[_0x22b7('0x63'),'reference',_0x22b7('0x64')];_['remove'](_0x4a116e[_0x22b7('0x5f')]['fields'],function(_0x350f66){return _0x1ee512[_0x22b7('0x65')](_0x350f66[_0x22b7('0x2d')][_0x22b7('0x27')]);});_[_0x22b7('0x66')](_0x4a116e['result'][_0x22b7('0x33')],function(_0x174094){return _0x174094[_0x22b7('0x67')]===_0x22b7('0x68');});return{'count':_0x4a116e[_0x22b7('0x5f')]['fields'][_0x22b7('0x34')],'rows':_['map'](_0x4a116e['result']['fields'],function(_0x2c06f3){return{'id':_0x2c06f3[_0x22b7('0x27')],'name':_0x2c06f3[_0x22b7('0x69')],'custom':_[_0x22b7('0x6a')](_0x2c06f3[_0x22b7('0x27')],_0x22b7('0x6b'))?!![]:![],'options':_0x2c06f3['type']['name']===_0x22b7('0x6c')&&_0x2c06f3[_0x22b7('0x2d')][_0x22b7('0x6d')][_0x22b7('0x34')]>0x0?_[_0x22b7('0x29')](_0x2c06f3[_0x22b7('0x2d')][_0x22b7('0x6d')],function(_0x1e82b4){return{'name':_0x1e82b4['label'],'value':_0x1e82b4[_0x22b7('0x6e')]};}):[]};})};}})[_0x22b7('0x24')](respondWithResult(_0x3c2fce,null))[_0x22b7('0x41')](function(_0x4835f1){console[_0x22b7('0x6f')](_0x22b7('0x70')+_0x4835f1);var _0xe1d6a6=_0x261a7f['query'][_0x22b7('0x71')]?0x1f4:_0x4835f1[_0x22b7('0x72')]||0x1f4;logger[_0x22b7('0x73')]('getFields,\x20%s,\x20%s,\x20%s',_0x22b7('0x54'),_0xe1d6a6,JSON[_0x22b7('0x74')](_0x4835f1));delete _0x4835f1[_0x22b7('0x27')];if(_0xe1d6a6===0x191){_0xe1d6a6=0x190;}_0x3c2fce['status'](_0xe1d6a6)['send'](_0x261a7f['query'][_0x22b7('0x71')]?{'message':_0x22b7('0x75'),'statusCode':_0x4835f1['statusCode']}:_0x4835f1);});};
\ No newline at end of file
+var _0xbe55=['offset','reject','save','then','error','stack','name','send','index','map','VtigerAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','merge','options','includeAll','findAll','catch','params','keys','include','find','create','body','update','destroy','getConfigurations','VtigerConfiguration','filter','addConfiguration','AccountId','Descriptions','getDescriptions','channel','VtigerField','Subjects','getFields','description','moduleName','remoteUri','accessKey','username','slice','substring','lastIndexOf','%s/webservice.php','success','POST','login','result','token','GET','describe','autogenerated','owner','remove','includes','editable','false','label','startsWith','picklist','picklistValues','value','log','vTiger\x20error:\x20','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0xbe55,0x149));var _0x5be5=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0xbe55[_0x55e08b];return _0xd1a7ff;};'use strict';var emlformat=require(_0x5be5('0x0'));var rimraf=require(_0x5be5('0x1'));var zipdir=require(_0x5be5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5be5('0x3'));var BPromise=require(_0x5be5('0x4'));var Mustache=require(_0x5be5('0x5'));var util=require(_0x5be5('0x6'));var path=require('path');var sox=require(_0x5be5('0x7'));var csv=require(_0x5be5('0x8'));var ejs=require(_0x5be5('0x9'));var fs=require('fs');var fs_extra=require(_0x5be5('0xa'));var _=require(_0x5be5('0xb'));var squel=require(_0x5be5('0xc'));var crypto=require(_0x5be5('0xd'));var jsforce=require(_0x5be5('0xe'));var deskjs=require(_0x5be5('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5be5('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5be5('0x11'));var as=require(_0x5be5('0x12'));var hardwareService=require(_0x5be5('0x13'));var logger=require(_0x5be5('0x14'))(_0x5be5('0x15'));var utils=require(_0x5be5('0x16'));var config=require(_0x5be5('0x17'));var licenseUtil=require(_0x5be5('0x18'));var db=require(_0x5be5('0x19'))['db'];var integrations=require(_0x5be5('0x1a'));function respondWithStatusCode(_0x360997,_0x1266d0){_0x1266d0=_0x1266d0||0xcc;return function(_0x1606f9){if(_0x1606f9){return _0x360997[_0x5be5('0x1b')](_0x1266d0);}return _0x360997[_0x5be5('0x1c')](_0x1266d0)[_0x5be5('0x1d')]();};}function respondWithResult(_0x259662,_0x497625){_0x497625=_0x497625||0xc8;return function(_0x3558f0){if(_0x3558f0){return _0x259662[_0x5be5('0x1c')](_0x497625)[_0x5be5('0x1e')](_0x3558f0);}};}function respondWithFilteredResult(_0x5c9479,_0x3a834e){return function(_0x3d67d2){if(_0x3d67d2){var _0x21fa8d=typeof _0x3a834e['offset']===_0x5be5('0x1f')&&typeof _0x3a834e[_0x5be5('0x20')]===_0x5be5('0x1f');var _0x2404ef=_0x3d67d2[_0x5be5('0x21')];var _0xcb8d86=_0x21fa8d?0x0:_0x3a834e['offset'];var _0x3e6899=_0x21fa8d?_0x3d67d2[_0x5be5('0x21')]:_0x3a834e[_0x5be5('0x22')]+_0x3a834e[_0x5be5('0x20')];var _0x54c4e8;if(_0x3e6899>=_0x2404ef){_0x3e6899=_0x2404ef;_0x54c4e8=0xc8;}else{_0x54c4e8=0xce;}_0x5c9479['status'](_0x54c4e8);return _0x5c9479['set']('Content-Range',_0xcb8d86+'-'+_0x3e6899+'/'+_0x2404ef)[_0x5be5('0x1e')](_0x3d67d2);}return null;};}function patchUpdates(_0x587a4e){return function(_0x598b89){try{jsonpatch['apply'](_0x598b89,_0x587a4e,!![]);}catch(_0x1a72c1){return BPromise[_0x5be5('0x23')](_0x1a72c1);}return _0x598b89[_0x5be5('0x24')]();};}function saveUpdates(_0x101627,_0x5239db){return function(_0x5c6930){if(_0x5c6930){return _0x5c6930['update'](_0x101627)[_0x5be5('0x25')](function(_0x19f498){return _0x19f498;});}return null;};}function removeEntity(_0x380260,_0x4caeac){return function(_0x31c92c){if(_0x31c92c){return _0x31c92c['destroy']()[_0x5be5('0x25')](function(){_0x380260[_0x5be5('0x1c')](0xcc)[_0x5be5('0x1d')]();});}};}function handleEntityNotFound(_0x5ef91e,_0x4e7629){return function(_0x5ade33){if(!_0x5ade33){_0x5ef91e[_0x5be5('0x1b')](0x194);}return _0x5ade33;};}function handleError(_0x414dbb,_0xdb3826){_0xdb3826=_0xdb3826||0x1f4;return function(_0x221f16){logger[_0x5be5('0x26')](_0x221f16[_0x5be5('0x27')]);if(_0x221f16[_0x5be5('0x28')]){delete _0x221f16[_0x5be5('0x28')];}_0x414dbb[_0x5be5('0x1c')](_0xdb3826)[_0x5be5('0x29')](_0x221f16);};}exports[_0x5be5('0x2a')]=function(_0x335120,_0x269478){var _0x25ee5b={},_0x212788={},_0x50e1df={'count':0x0,'rows':[]};var _0x181669=_[_0x5be5('0x2b')](db[_0x5be5('0x2c')][_0x5be5('0x2d')],function(_0x3f8432){return{'name':_0x3f8432[_0x5be5('0x2e')],'type':_0x3f8432[_0x5be5('0x2f')][_0x5be5('0x30')]};});_0x212788[_0x5be5('0x31')]=_[_0x5be5('0x2b')](_0x181669,'name');_0x212788[_0x5be5('0x32')]=_['keys'](_0x335120[_0x5be5('0x32')]);_0x212788[_0x5be5('0x33')]=_[_0x5be5('0x34')](_0x212788[_0x5be5('0x31')],_0x212788[_0x5be5('0x32')]);_0x25ee5b[_0x5be5('0x35')]=_[_0x5be5('0x34')](_0x212788[_0x5be5('0x31')],qs[_0x5be5('0x36')](_0x335120[_0x5be5('0x32')]['fields']));_0x25ee5b[_0x5be5('0x35')]=_0x25ee5b[_0x5be5('0x35')][_0x5be5('0x37')]?_0x25ee5b[_0x5be5('0x35')]:_0x212788['model'];if(!_0x335120[_0x5be5('0x32')][_0x5be5('0x38')](_0x5be5('0x39'))){_0x25ee5b['limit']=qs['limit'](_0x335120[_0x5be5('0x32')][_0x5be5('0x20')]);_0x25ee5b[_0x5be5('0x22')]=qs['offset'](_0x335120['query'][_0x5be5('0x22')]);}_0x25ee5b[_0x5be5('0x3a')]=qs[_0x5be5('0x3b')](_0x335120[_0x5be5('0x32')]['sort']);_0x25ee5b['where']=qs[_0x5be5('0x33')](_[_0x5be5('0x3c')](_0x335120['query'],_0x212788[_0x5be5('0x33')]),_0x181669);if(_0x335120[_0x5be5('0x32')]['filter']){_0x25ee5b[_0x5be5('0x3d')]=_['merge'](_0x25ee5b[_0x5be5('0x3d')],{'$or':_['map'](_0x181669,function(_0x3289a4){if(_0x3289a4[_0x5be5('0x2f')]!==_0x5be5('0x3e')){var _0x16d5d8={};_0x16d5d8[_0x3289a4[_0x5be5('0x28')]]={'$like':'%'+_0x335120['query']['filter']+'%'};return _0x16d5d8;}})});}_0x25ee5b=_[_0x5be5('0x3f')]({},_0x25ee5b,_0x335120[_0x5be5('0x40')]);var _0x1d3819={'where':_0x25ee5b[_0x5be5('0x3d')]};return db['VtigerAccount'][_0x5be5('0x21')](_0x1d3819)[_0x5be5('0x25')](function(_0x32cd9a){_0x50e1df[_0x5be5('0x21')]=_0x32cd9a;if(_0x335120['query'][_0x5be5('0x41')]){_0x25ee5b['include']=[{'all':!![]}];}return db[_0x5be5('0x2c')][_0x5be5('0x42')](_0x25ee5b);})[_0x5be5('0x25')](function(_0x303fae){_0x50e1df['rows']=_0x303fae;return _0x50e1df;})['then'](respondWithFilteredResult(_0x269478,_0x25ee5b))[_0x5be5('0x43')](handleError(_0x269478,null));};exports['show']=function(_0x3a96c4,_0x370dd9){var _0x5b37a1={'raw':![],'where':{'id':_0x3a96c4[_0x5be5('0x44')]['id']}},_0x462a95={};_0x462a95[_0x5be5('0x31')]=_[_0x5be5('0x45')](db[_0x5be5('0x2c')][_0x5be5('0x2d')]);_0x462a95[_0x5be5('0x32')]=_['keys'](_0x3a96c4[_0x5be5('0x32')]);_0x462a95['filters']=_[_0x5be5('0x34')](_0x462a95[_0x5be5('0x31')],_0x462a95['query']);_0x5b37a1[_0x5be5('0x35')]=_[_0x5be5('0x34')](_0x462a95[_0x5be5('0x31')],qs['fields'](_0x3a96c4[_0x5be5('0x32')][_0x5be5('0x36')]));_0x5b37a1[_0x5be5('0x35')]=_0x5b37a1[_0x5be5('0x35')][_0x5be5('0x37')]?_0x5b37a1[_0x5be5('0x35')]:_0x462a95[_0x5be5('0x31')];if(_0x3a96c4[_0x5be5('0x32')][_0x5be5('0x41')]){_0x5b37a1[_0x5be5('0x46')]=[{'all':!![]}];}_0x5b37a1=_[_0x5be5('0x3f')]({},_0x5b37a1,_0x3a96c4[_0x5be5('0x40')]);return db[_0x5be5('0x2c')][_0x5be5('0x47')](_0x5b37a1)[_0x5be5('0x25')](handleEntityNotFound(_0x370dd9,null))['then'](respondWithResult(_0x370dd9,null))['catch'](handleError(_0x370dd9,null));};exports[_0x5be5('0x48')]=function(_0x2d992e,_0x228c27){return db[_0x5be5('0x2c')][_0x5be5('0x48')](_0x2d992e[_0x5be5('0x49')],{})[_0x5be5('0x25')](respondWithResult(_0x228c27,0xc9))[_0x5be5('0x43')](handleError(_0x228c27,null));};exports[_0x5be5('0x4a')]=function(_0x4f8fac,_0x20f1ae){if(_0x4f8fac['body']['id']){delete _0x4f8fac[_0x5be5('0x49')]['id'];}return db[_0x5be5('0x2c')][_0x5be5('0x47')]({'where':{'id':_0x4f8fac['params']['id']}})['then'](handleEntityNotFound(_0x20f1ae,null))[_0x5be5('0x25')](saveUpdates(_0x4f8fac['body'],null))[_0x5be5('0x25')](respondWithResult(_0x20f1ae,null))[_0x5be5('0x43')](handleError(_0x20f1ae,null));};exports[_0x5be5('0x4b')]=function(_0x236154,_0x23dbf8){return db[_0x5be5('0x2c')][_0x5be5('0x47')]({'where':{'id':_0x236154[_0x5be5('0x44')]['id']}})[_0x5be5('0x25')](handleEntityNotFound(_0x23dbf8,null))[_0x5be5('0x25')](removeEntity(_0x23dbf8,null))['catch'](handleError(_0x23dbf8,null));};exports[_0x5be5('0x4c')]=function(_0x1173b7,_0x3ecbda,_0x33a2d7){var _0x2c6423={};var _0x12d7c8={};var _0x2a1f95;var _0x67288c;return db[_0x5be5('0x2c')]['findOne']({'where':{'id':_0x1173b7[_0x5be5('0x44')]['id']}})[_0x5be5('0x25')](handleEntityNotFound(_0x3ecbda,null))[_0x5be5('0x25')](function(_0x5ddad7){if(_0x5ddad7){_0x2a1f95=_0x5ddad7;_0x12d7c8[_0x5be5('0x31')]=_[_0x5be5('0x45')](db[_0x5be5('0x4d')][_0x5be5('0x2d')]);_0x12d7c8[_0x5be5('0x32')]=_[_0x5be5('0x45')](_0x1173b7[_0x5be5('0x32')]);_0x12d7c8['filters']=_[_0x5be5('0x34')](_0x12d7c8[_0x5be5('0x31')],_0x12d7c8[_0x5be5('0x32')]);_0x2c6423[_0x5be5('0x35')]=_['intersection'](_0x12d7c8[_0x5be5('0x31')],qs[_0x5be5('0x36')](_0x1173b7[_0x5be5('0x32')][_0x5be5('0x36')]));_0x2c6423[_0x5be5('0x35')]=_0x2c6423[_0x5be5('0x35')][_0x5be5('0x37')]?_0x2c6423['attributes']:_0x12d7c8[_0x5be5('0x31')];_0x2c6423[_0x5be5('0x3a')]=qs[_0x5be5('0x3b')](_0x1173b7['query'][_0x5be5('0x3b')]);_0x2c6423['where']=qs[_0x5be5('0x33')](_[_0x5be5('0x3c')](_0x1173b7[_0x5be5('0x32')],_0x12d7c8['filters']));if(_0x1173b7[_0x5be5('0x32')][_0x5be5('0x4e')]){_0x2c6423['where']=_['merge'](_0x2c6423[_0x5be5('0x3d')],{'$or':_[_0x5be5('0x2b')](_0x2c6423[_0x5be5('0x35')],function(_0x5349f4){var _0x5da6a4={};_0x5da6a4[_0x5349f4]={'$like':'%'+_0x1173b7[_0x5be5('0x32')][_0x5be5('0x4e')]+'%'};return _0x5da6a4;})});}_0x2c6423=_[_0x5be5('0x3f')]({},_0x2c6423,_0x1173b7[_0x5be5('0x40')]);return _0x2a1f95[_0x5be5('0x4c')](_0x2c6423);}})[_0x5be5('0x25')](function(_0x45081a){if(_0x45081a){_0x67288c=_0x45081a['length'];if(!_0x1173b7[_0x5be5('0x32')]['hasOwnProperty']('nolimit')){_0x2c6423['limit']=qs[_0x5be5('0x20')](_0x1173b7[_0x5be5('0x32')]['limit']);_0x2c6423['offset']=qs[_0x5be5('0x22')](_0x1173b7[_0x5be5('0x32')]['offset']);}return _0x2a1f95[_0x5be5('0x4c')](_0x2c6423);}})[_0x5be5('0x25')](function(_0x3b0e68){if(_0x3b0e68){return _0x3b0e68?{'count':_0x67288c,'rows':_0x3b0e68}:null;}})[_0x5be5('0x25')](respondWithResult(_0x3ecbda,null))['catch'](handleError(_0x3ecbda,null));};exports[_0x5be5('0x4f')]=function(_0x33f5a1,_0x2932cd,_0x238031){if(_0x33f5a1[_0x5be5('0x49')]['id']){delete _0x33f5a1[_0x5be5('0x49')]['id'];}return db[_0x5be5('0x2c')]['findOne']({'where':{'id':_0x33f5a1[_0x5be5('0x44')]['id']}})[_0x5be5('0x25')](handleEntityNotFound(_0x2932cd,null))[_0x5be5('0x25')](function(_0x5267c5){if(_0x5267c5){_0x33f5a1[_0x5be5('0x49')][_0x5be5('0x50')]=_0x5267c5['id'];_0x33f5a1['body']['Subjects']=integrations['getSubjects'](_0x33f5a1['body']['channel'],_0x33f5a1[_0x5be5('0x49')][_0x5be5('0x2f')]);_0x33f5a1['body'][_0x5be5('0x51')]=integrations[_0x5be5('0x52')](_0x33f5a1[_0x5be5('0x49')][_0x5be5('0x53')],_0x33f5a1[_0x5be5('0x49')]['type']);return db[_0x5be5('0x4d')][_0x5be5('0x48')](_0x33f5a1[_0x5be5('0x49')],{'include':[{'model':db[_0x5be5('0x54')],'as':_0x5be5('0x55')},{'model':db['VtigerField'],'as':_0x5be5('0x51')}]});}return null;})[_0x5be5('0x25')](respondWithResult(_0x2932cd,null))[_0x5be5('0x43')](handleError(_0x2932cd,null));};var md5=require('md5');exports[_0x5be5('0x56')]=function(_0x1a12ba,_0x4677ba,_0x5a8bae){var _0x3e9b18=null;var _0x34982f=null;var _0x4f0c66=null;var _0x51c35e=null;var _0x10f230='';return db[_0x5be5('0x2c')]['findOne']({'where':{'id':_0x1a12ba['params']['id']},'attributes':['id',_0x5be5('0x28'),'username',_0x5be5('0x57'),_0x5be5('0x58'),_0x5be5('0x59'),'serverUrl',_0x5be5('0x5a')]})[_0x5be5('0x25')](handleEntityNotFound(_0x4677ba,null))['then'](function(_0x19da4e){if(_0x19da4e){_0x3e9b18=_0x19da4e[_0x5be5('0x5b')];_0x34982f=_0x19da4e[_0x5be5('0x5a')];_0x4f0c66=_0x19da4e['moduleName'];_0x10f230=_0x19da4e[_0x5be5('0x59')];var _0xbcd4e1=_0x10f230[_0x5be5('0x5c')](-0x1);if(_0xbcd4e1==='/'){_0x10f230=_0x10f230[_0x5be5('0x5d')](0x0,_0x10f230[_0x5be5('0x5e')](_0xbcd4e1));}_0x51c35e=util['format'](_0x5be5('0x5f'),_0x10f230);var _0x491cce={'method':'GET','uri':_0x51c35e,'qs':{'operation':'getchallenge','username':_0x19da4e['username']},'json':!![]};return rp(_0x491cce);}})[_0x5be5('0x25')](function(_0xea46a0){if(_0xea46a0[_0x5be5('0x60')]){var _0x5eea11={'method':_0x5be5('0x61'),'uri':_0x51c35e,'form':{'operation':_0x5be5('0x62'),'username':_0x3e9b18,'accessKey':md5(_0xea46a0[_0x5be5('0x63')][_0x5be5('0x64')]+_0x34982f)},'json':!![]};return rp(_0x5eea11);}})['then'](function(_0xe07478){if(_0xe07478['success']){var _0x557a62={'method':_0x5be5('0x65'),'uri':_0x51c35e,'qs':{'operation':_0x5be5('0x66'),'username':_0x3e9b18,'sessionName':_0xe07478[_0x5be5('0x63')]['sessionName'],'elementType':_0x4f0c66},'json':!![]};return rp(_0x557a62);}})[_0x5be5('0x25')](function(_0x233331){if(_0x233331[_0x5be5('0x60')]){var _0x1e2c9b=[_0x5be5('0x67'),'reference',_0x5be5('0x68')];_[_0x5be5('0x69')](_0x233331[_0x5be5('0x63')][_0x5be5('0x36')],function(_0x246d41){return _0x1e2c9b[_0x5be5('0x6a')](_0x246d41[_0x5be5('0x2f')][_0x5be5('0x28')]);});_['remove'](_0x233331[_0x5be5('0x63')][_0x5be5('0x36')],function(_0x51a66e){return _0x51a66e[_0x5be5('0x6b')]===_0x5be5('0x6c');});return{'count':_0x233331['result'][_0x5be5('0x36')]['length'],'rows':_[_0x5be5('0x2b')](_0x233331['result']['fields'],function(_0xd90646){return{'id':_0xd90646['name'],'name':_0xd90646[_0x5be5('0x6d')],'custom':_[_0x5be5('0x6e')](_0xd90646[_0x5be5('0x28')],'cf_')?!![]:![],'options':_0xd90646[_0x5be5('0x2f')]['name']===_0x5be5('0x6f')&&_0xd90646[_0x5be5('0x2f')][_0x5be5('0x70')][_0x5be5('0x37')]>0x0?_[_0x5be5('0x2b')](_0xd90646['type'][_0x5be5('0x70')],function(_0x1c17a9){return{'name':_0x1c17a9[_0x5be5('0x6d')],'value':_0x1c17a9[_0x5be5('0x71')]};}):[]};})};}})[_0x5be5('0x25')](respondWithResult(_0x4677ba,null))['catch'](function(_0xfbd393){console[_0x5be5('0x72')](_0x5be5('0x73')+_0xfbd393);var _0x334571=_0x1a12ba['query']['test']?0x1f4:_0xfbd393[_0x5be5('0x74')]||0x1f4;logger['error'](_0x5be5('0x75'),'getFields',_0x334571,JSON[_0x5be5('0x76')](_0xfbd393));delete _0xfbd393[_0x5be5('0x28')];if(_0x334571===0x191){_0x334571=0x190;}_0x4677ba[_0x5be5('0x1c')](_0x334571)['send'](_0x1a12ba[_0x5be5('0x32')][_0x5be5('0x77')]?{'message':_0x5be5('0x78'),'statusCode':_0xfbd393[_0x5be5('0x74')]}:_0xfbd393);});};
\ No newline at end of file
index ff3862f..5f2d135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7172=['path','rimraf','exports','define','VtigerAccount','int_vtiger_accounts','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x21b706,_0x1022f4){var _0x13b94a=function(_0x3116da){while(--_0x3116da){_0x21b706['push'](_0x21b706['shift']());}};_0x13b94a(++_0x1022f4);}(_0x7172,0xd2));var _0x2717=function(_0x40c120,_0x945e7a){_0x40c120=_0x40c120-0x0;var _0xe9f0d=_0x7172[_0x40c120];return _0xe9f0d;};'use strict';var _=require('lodash');var util=require(_0x2717('0x0'));var logger=require(_0x2717('0x1'))(_0x2717('0x2'));var moment=require(_0x2717('0x3'));var BPromise=require(_0x2717('0x4'));var rp=require(_0x2717('0x5'));var fs=require('fs');var path=require(_0x2717('0x6'));var rimraf=require(_0x2717('0x7'));var config=require('../../config/environment');var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x2717('0x8')]=function(_0xba0ad5,_0x3e5eb1){return _0xba0ad5[_0x2717('0x9')](_0x2717('0xa'),attributes,{'tableName':_0x2717('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8212=['int_vtiger_accounts','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x171dd9,_0x143a71){var _0x937ee6=function(_0x4dbb3f){while(--_0x4dbb3f){_0x171dd9['push'](_0x171dd9['shift']());}};_0x937ee6(++_0x143a71);}(_0x8212,0x1d5));var _0x2821=function(_0x45fa67,_0x54f9c8){_0x45fa67=_0x45fa67-0x0;var _0x2eddaf=_0x8212[_0x45fa67];return _0x2eddaf;};'use strict';var _=require(_0x2821('0x0'));var util=require(_0x2821('0x1'));var logger=require(_0x2821('0x2'))(_0x2821('0x3'));var moment=require(_0x2821('0x4'));var BPromise=require(_0x2821('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2821('0x6'));var rimraf=require(_0x2821('0x7'));var config=require(_0x2821('0x8'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0x2821('0x9'));module[_0x2821('0xa')]=function(_0x14bc76,_0x8aa326){return _0x14bc76[_0x2821('0xb')]('VtigerAccount',attributes,{'tableName':_0x2821('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c698a09..8ea7d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x282b=['map','model','ShowVtigerAccount','VtigerAccount','debug','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','VtigerAccount,\x20%s,\x20%s','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetVtigerAccount','findAll','options','raw','where','attributes','include'];(function(_0x20b50b,_0xf1aa4f){var _0x6507ce=function(_0x3f67f6){while(--_0x3f67f6){_0x20b50b['push'](_0x20b50b['shift']());}};_0x6507ce(++_0xf1aa4f);}(_0x282b,0xec));var _0xb282=function(_0x3eb94f,_0x6b904a){_0x3eb94f=_0x3eb94f-0x0;var _0x4c9326=_0x282b[_0x3eb94f];return _0x4c9326;};'use strict';var _=require(_0xb282('0x0'));var util=require(_0xb282('0x1'));var moment=require(_0xb282('0x2'));var BPromise=require(_0xb282('0x3'));var rs=require(_0xb282('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb282('0x5'));var logger=require('../../config/logger')(_0xb282('0x6'));var config=require(_0xb282('0x7'));var jayson=require(_0xb282('0x8'));var client=jayson[_0xb282('0x9')][_0xb282('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33635f,_0x4f0410,_0x4a0d28){return new BPromise(function(_0x17fba1,_0x436eaa){return client['request'](_0x33635f,_0x4a0d28)[_0xb282('0xb')](function(_0x20f517){logger[_0xb282('0xc')](_0xb282('0xd'),_0x4f0410,'request\x20sent');logger['debug'](_0xb282('0xe'),_0x4f0410,_0xb282('0xf'),JSON[_0xb282('0x10')](_0x20f517));if(_0x20f517[_0xb282('0x11')]){if(_0x20f517[_0xb282('0x11')]['code']===0x1f4){logger['error'](_0xb282('0xd'),_0x4f0410,_0x20f517[_0xb282('0x11')][_0xb282('0x12')]);return _0x436eaa(_0x20f517[_0xb282('0x11')][_0xb282('0x12')]);}logger['error'](_0xb282('0xd'),_0x4f0410,_0x20f517['error'][_0xb282('0x12')]);return _0x17fba1(_0x20f517[_0xb282('0x11')]['message']);}else{logger['info']('VtigerAccount,\x20%s,\x20%s',_0x4f0410,_0xb282('0xf'));_0x17fba1(_0x20f517[_0xb282('0x13')][_0xb282('0x12')]);}})[_0xb282('0x14')](function(_0x438a05){logger['error'](_0xb282('0xd'),_0x4f0410,_0x438a05);_0x436eaa(_0x438a05);});});}exports[_0xb282('0x15')]=function(_0xca5f12){var _0x45b070=this;return new Promise(function(_0x3f8a3f,_0x492d20){return db['VtigerAccount'][_0xb282('0x16')]({'raw':_0xca5f12[_0xb282('0x17')]?_0xca5f12['options'][_0xb282('0x18')]===undefined?!![]:![]:!![],'where':_0xca5f12[_0xb282('0x17')]?_0xca5f12[_0xb282('0x17')][_0xb282('0x19')]||null:null,'attributes':_0xca5f12[_0xb282('0x17')]?_0xca5f12['options'][_0xb282('0x1a')]||null:null,'limit':_0xca5f12[_0xb282('0x17')]?_0xca5f12[_0xb282('0x17')]['limit']||null:null,'include':_0xca5f12[_0xb282('0x17')]?_0xca5f12[_0xb282('0x17')][_0xb282('0x1b')]?_[_0xb282('0x1c')](_0xca5f12[_0xb282('0x17')]['include'],function(_0x4d624f){return{'model':db[_0x4d624f[_0xb282('0x1d')]],'as':_0x4d624f['as'],'attributes':_0x4d624f[_0xb282('0x1a')],'include':_0x4d624f['include']?_['map'](_0x4d624f[_0xb282('0x1b')],function(_0x114f77){return{'model':db[_0x114f77[_0xb282('0x1d')]],'as':_0x114f77['as'],'attributes':_0x114f77[_0xb282('0x1a')],'include':_0x114f77[_0xb282('0x1b')]?_[_0xb282('0x1c')](_0x114f77['include'],function(_0xa0d7fb){return{'model':db[_0xa0d7fb[_0xb282('0x1d')]],'as':_0xa0d7fb['as'],'attributes':_0xa0d7fb['attributes']};}):[]};}):[]};}):[]:[]})[_0xb282('0xb')](function(_0x38a1f8){logger[_0xb282('0xc')](_0xb282('0x15'),_0xca5f12);logger['debug'](_0xb282('0x15'),_0xca5f12,JSON[_0xb282('0x10')](_0x38a1f8));_0x3f8a3f(_0x38a1f8);})[_0xb282('0x14')](function(_0x433ad5){logger[_0xb282('0x11')](_0xb282('0x15'),_0x433ad5[_0xb282('0x12')],_0xca5f12);_0x492d20(_0x45b070['error'](0x1f4,_0x433ad5[_0xb282('0x12')]));});});};exports[_0xb282('0x1e')]=function(_0x3eb294){var _0xd8780b=this;return new Promise(function(_0x42ef75,_0x5f3ddf){return db[_0xb282('0x1f')]['find']({'raw':_0x3eb294[_0xb282('0x17')]?_0x3eb294[_0xb282('0x17')][_0xb282('0x18')]===undefined?!![]:![]:!![],'where':_0x3eb294['options']?_0x3eb294[_0xb282('0x17')]['where']||null:null,'attributes':_0x3eb294[_0xb282('0x17')]?_0x3eb294[_0xb282('0x17')][_0xb282('0x1a')]||null:null,'include':_0x3eb294[_0xb282('0x17')]?_0x3eb294[_0xb282('0x17')][_0xb282('0x1b')]?_['map'](_0x3eb294[_0xb282('0x17')][_0xb282('0x1b')],function(_0x4ede9d){return{'model':db[_0x4ede9d['model']],'as':_0x4ede9d['as'],'attributes':_0x4ede9d[_0xb282('0x1a')],'include':_0x4ede9d[_0xb282('0x1b')]?_[_0xb282('0x1c')](_0x4ede9d['include'],function(_0x4a76ce){return{'model':db[_0x4a76ce['model']],'as':_0x4a76ce['as'],'attributes':_0x4a76ce[_0xb282('0x1a')],'include':_0x4a76ce[_0xb282('0x1b')]?_[_0xb282('0x1c')](_0x4a76ce[_0xb282('0x1b')],function(_0x17c1e4){return{'model':db[_0x17c1e4[_0xb282('0x1d')]],'as':_0x17c1e4['as'],'attributes':_0x17c1e4[_0xb282('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3dc171){logger['info'](_0xb282('0x1e'),_0x3eb294);logger[_0xb282('0x20')](_0xb282('0x1e'),_0x3eb294,JSON['stringify'](_0x3dc171));_0x42ef75(_0x3dc171);})[_0xb282('0x14')](function(_0x4beef2){logger[_0xb282('0x11')](_0xb282('0x1e'),_0x4beef2[_0xb282('0x12')],_0x3eb294);_0x5f3ddf(_0xd8780b[_0xb282('0x11')](0x1f4,_0x4beef2['message']));});});};
\ No newline at end of file
+var _0x34b7=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','VtigerAccount,\x20%s,\x20%s','message','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','map','include','model','then','ShowVtigerAccount','find','moment','bluebird'];(function(_0x1fe390,_0x166ff8){var _0x2fc907=function(_0x1c6bdf){while(--_0x1c6bdf){_0x1fe390['push'](_0x1fe390['shift']());}};_0x2fc907(++_0x166ff8);}(_0x34b7,0x196));var _0x734b=function(_0x24f66d,_0x261e88){_0x24f66d=_0x24f66d-0x0;var _0x147cdb=_0x34b7[_0x24f66d];return _0x147cdb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x734b('0x0'));var BPromise=require(_0x734b('0x1'));var rs=require(_0x734b('0x2'));var fs=require('fs');var Redis=require(_0x734b('0x3'));var db=require(_0x734b('0x4'))['db'];var utils=require(_0x734b('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x734b('0x6'));var jayson=require(_0x734b('0x7'));var client=jayson[_0x734b('0x8')][_0x734b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x28918a,_0x35d685,_0x58e2f1){return new BPromise(function(_0x1eb803,_0x2e7932){return client['request'](_0x28918a,_0x58e2f1)['then'](function(_0x5f4b3a){logger[_0x734b('0xa')]('VtigerAccount,\x20%s,\x20%s',_0x35d685,_0x734b('0xb'));logger[_0x734b('0xc')](_0x734b('0xd'),_0x35d685,_0x734b('0xb'),JSON[_0x734b('0xe')](_0x5f4b3a));if(_0x5f4b3a[_0x734b('0xf')]){if(_0x5f4b3a[_0x734b('0xf')][_0x734b('0x10')]===0x1f4){logger[_0x734b('0xf')](_0x734b('0x11'),_0x35d685,_0x5f4b3a[_0x734b('0xf')][_0x734b('0x12')]);return _0x2e7932(_0x5f4b3a[_0x734b('0xf')][_0x734b('0x12')]);}logger['error'](_0x734b('0x11'),_0x35d685,_0x5f4b3a[_0x734b('0xf')][_0x734b('0x12')]);return _0x1eb803(_0x5f4b3a[_0x734b('0xf')][_0x734b('0x12')]);}else{logger[_0x734b('0xa')](_0x734b('0x11'),_0x35d685,_0x734b('0xb'));_0x1eb803(_0x5f4b3a[_0x734b('0x13')][_0x734b('0x12')]);}})[_0x734b('0x14')](function(_0x4d2d23){logger[_0x734b('0xf')](_0x734b('0x11'),_0x35d685,_0x4d2d23);_0x2e7932(_0x4d2d23);});});}exports[_0x734b('0x15')]=function(_0x5edbe9){var _0x4d3b9c=this;return new Promise(function(_0x56a95c,_0xcd12a1){return db[_0x734b('0x16')][_0x734b('0x17')]({'raw':_0x5edbe9[_0x734b('0x18')]?_0x5edbe9[_0x734b('0x18')][_0x734b('0x19')]===undefined?!![]:![]:!![],'where':_0x5edbe9[_0x734b('0x18')]?_0x5edbe9[_0x734b('0x18')][_0x734b('0x1a')]||null:null,'attributes':_0x5edbe9[_0x734b('0x18')]?_0x5edbe9[_0x734b('0x18')][_0x734b('0x1b')]||null:null,'limit':_0x5edbe9[_0x734b('0x18')]?_0x5edbe9[_0x734b('0x18')]['limit']||null:null,'include':_0x5edbe9[_0x734b('0x18')]?_0x5edbe9[_0x734b('0x18')]['include']?_[_0x734b('0x1c')](_0x5edbe9[_0x734b('0x18')][_0x734b('0x1d')],function(_0x11fb8e){return{'model':db[_0x11fb8e[_0x734b('0x1e')]],'as':_0x11fb8e['as'],'attributes':_0x11fb8e[_0x734b('0x1b')],'include':_0x11fb8e[_0x734b('0x1d')]?_[_0x734b('0x1c')](_0x11fb8e[_0x734b('0x1d')],function(_0x3abbe6){return{'model':db[_0x3abbe6[_0x734b('0x1e')]],'as':_0x3abbe6['as'],'attributes':_0x3abbe6[_0x734b('0x1b')],'include':_0x3abbe6[_0x734b('0x1d')]?_['map'](_0x3abbe6['include'],function(_0x13cc5a){return{'model':db[_0x13cc5a[_0x734b('0x1e')]],'as':_0x13cc5a['as'],'attributes':_0x13cc5a['attributes']};}):[]};}):[]};}):[]:[]})[_0x734b('0x1f')](function(_0x2dd51a){logger[_0x734b('0xa')](_0x734b('0x15'),_0x5edbe9);logger[_0x734b('0xc')](_0x734b('0x15'),_0x5edbe9,JSON[_0x734b('0xe')](_0x2dd51a));_0x56a95c(_0x2dd51a);})['catch'](function(_0x1f3652){logger[_0x734b('0xf')](_0x734b('0x15'),_0x1f3652[_0x734b('0x12')],_0x5edbe9);_0xcd12a1(_0x4d3b9c[_0x734b('0xf')](0x1f4,_0x1f3652[_0x734b('0x12')]));});});};exports[_0x734b('0x20')]=function(_0x21ed3c){var _0x371ead=this;return new Promise(function(_0x3065b0,_0x5dcabf){return db[_0x734b('0x16')][_0x734b('0x21')]({'raw':_0x21ed3c['options']?_0x21ed3c[_0x734b('0x18')][_0x734b('0x19')]===undefined?!![]:![]:!![],'where':_0x21ed3c[_0x734b('0x18')]?_0x21ed3c[_0x734b('0x18')][_0x734b('0x1a')]||null:null,'attributes':_0x21ed3c[_0x734b('0x18')]?_0x21ed3c[_0x734b('0x18')][_0x734b('0x1b')]||null:null,'include':_0x21ed3c[_0x734b('0x18')]?_0x21ed3c[_0x734b('0x18')][_0x734b('0x1d')]?_[_0x734b('0x1c')](_0x21ed3c[_0x734b('0x18')][_0x734b('0x1d')],function(_0x4512fc){return{'model':db[_0x4512fc['model']],'as':_0x4512fc['as'],'attributes':_0x4512fc[_0x734b('0x1b')],'include':_0x4512fc['include']?_[_0x734b('0x1c')](_0x4512fc[_0x734b('0x1d')],function(_0x3413bf){return{'model':db[_0x3413bf[_0x734b('0x1e')]],'as':_0x3413bf['as'],'attributes':_0x3413bf[_0x734b('0x1b')],'include':_0x3413bf[_0x734b('0x1d')]?_['map'](_0x3413bf['include'],function(_0x3460a0){return{'model':db[_0x3460a0['model']],'as':_0x3460a0['as'],'attributes':_0x3460a0[_0x734b('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2de959){logger['info'](_0x734b('0x20'),_0x21ed3c);logger['debug'](_0x734b('0x20'),_0x21ed3c,JSON[_0x734b('0xe')](_0x2de959));_0x3065b0(_0x2de959);})[_0x734b('0x14')](function(_0x34a504){logger[_0x734b('0xf')](_0x734b('0x20'),_0x34a504[_0x734b('0x12')],_0x21ed3c);_0x5dcabf(_0x371ead['error'](0x1f4,_0x34a504[_0x734b('0x12')]));});});};
\ No newline at end of file
index f9bd399..7b5338f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8356=['index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','delete','exports','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated'];(function(_0x1602ea,_0x539b3a){var _0x2cc7ce=function(_0x517625){while(--_0x517625){_0x1602ea['push'](_0x1602ea['shift']());}};_0x2cc7ce(++_0x539b3a);}(_0x8356,0xb3));var _0x6835=function(_0x4d12c0,_0x19f3af){_0x4d12c0=_0x4d12c0-0x0;var _0x216508=_0x8356[_0x4d12c0];return _0x216508;};'use strict';var multer=require('multer');var util=require(_0x6835('0x0'));var path=require(_0x6835('0x1'));var timeout=require('connect-timeout');var express=require(_0x6835('0x2'));var router=express[_0x6835('0x3')]();var fs_extra=require(_0x6835('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6835('0x5'));var config=require(_0x6835('0x6'));var controller=require(_0x6835('0x7'));router[_0x6835('0x8')]('/',auth[_0x6835('0x9')](),controller[_0x6835('0xa')]);router[_0x6835('0x8')](_0x6835('0xb'),auth[_0x6835('0x9')](),controller[_0x6835('0xc')]);router['get'](_0x6835('0xd'),auth[_0x6835('0x9')](),controller[_0x6835('0xe')]);router['get'](_0x6835('0xf'),auth['isAuthenticated'](),controller[_0x6835('0x10')]);router[_0x6835('0x8')]('/:id/descriptions',auth[_0x6835('0x9')](),controller[_0x6835('0x11')]);router['post']('/',auth[_0x6835('0x9')](),controller[_0x6835('0x12')]);router['put']('/:id',auth[_0x6835('0x9')](),controller['update']);router[_0x6835('0x13')]('/:id',auth[_0x6835('0x9')](),controller['destroy']);module[_0x6835('0x14')]=router;
\ No newline at end of file
+var _0xfa74=['fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x203372,_0x26e9d6){var _0x12ae1c=function(_0x226d89){while(--_0x226d89){_0x203372['push'](_0x203372['shift']());}};_0x12ae1c(++_0x26e9d6);}(_0xfa74,0x126));var _0x4fa7=function(_0x99181b,_0x7ec23a){_0x99181b=_0x99181b-0x0;var _0x31eb30=_0xfa74[_0x99181b];return _0x31eb30;};'use strict';var multer=require(_0x4fa7('0x0'));var util=require(_0x4fa7('0x1'));var path=require('path');var timeout=require(_0x4fa7('0x2'));var express=require(_0x4fa7('0x3'));var router=express[_0x4fa7('0x4')]();var fs_extra=require(_0x4fa7('0x5'));var auth=require(_0x4fa7('0x6'));var interaction=require(_0x4fa7('0x7'));var config=require('../../config/environment');var controller=require(_0x4fa7('0x8'));router[_0x4fa7('0x9')]('/',auth[_0x4fa7('0xa')](),controller[_0x4fa7('0xb')]);router['get'](_0x4fa7('0xc'),auth[_0x4fa7('0xa')](),controller['show']);router['get'](_0x4fa7('0xd'),auth[_0x4fa7('0xa')](),controller[_0x4fa7('0xe')]);router[_0x4fa7('0x9')]('/:id/subjects',auth[_0x4fa7('0xa')](),controller['getSubjects']);router['get']('/:id/descriptions',auth[_0x4fa7('0xa')](),controller[_0x4fa7('0xf')]);router[_0x4fa7('0x10')]('/',auth[_0x4fa7('0xa')](),controller[_0x4fa7('0x11')]);router[_0x4fa7('0x12')](_0x4fa7('0xc'),auth['isAuthenticated'](),controller[_0x4fa7('0x13')]);router[_0x4fa7('0x14')](_0x4fa7('0xc'),auth[_0x4fa7('0xa')](),controller[_0x4fa7('0x15')]);module[_0x4fa7('0x16')]=router;
\ No newline at end of file
index 1cadf0c..a5d6219 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d6a=['sequelize','STRING'];(function(_0x3d9b73,_0x332c82){var _0x1684b0=function(_0x5ab46e){while(--_0x5ab46e){_0x3d9b73['push'](_0x3d9b73['shift']());}};_0x1684b0(++_0x332c82);}(_0x8d6a,0x1f2));var _0xa8d6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8d6a[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xa8d6('0x0'));module['exports']={'name':{'type':Sequelize[_0xa8d6('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0efe=['sequelize','STRING'];(function(_0x3c0c51,_0x120f20){var _0x2442fe=function(_0x5e3c91){while(--_0x5e3c91){_0x3c0c51['push'](_0x3c0c51['shift']());}};_0x2442fe(++_0x120f20);}(_0x0efe,0x10e));var _0xe0ef=function(_0x2c14d9,_0x4180dd){_0x2c14d9=_0x2c14d9-0x0;var _0x6906e=_0x0efe[_0x2c14d9];return _0x6906e;};'use strict';var Sequelize=require(_0xe0ef('0x0'));module['exports']={'name':{'type':Sequelize[_0xe0ef('0x1')]},'description':{'type':Sequelize[_0xe0ef('0x1')]}};
\ No newline at end of file
index 72d34dd..eca88b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed26=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','stack','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','type','filter','options','includeAll','include','findAll','rows','catch','show','params','intersection','merge','find','create','body','getFields','pick','findOne','VtigerField','getSubjects','nolimit','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x1805e2,_0x4b6d6d){var _0xce6398=function(_0x1e7a1a){while(--_0x1e7a1a){_0x1805e2['push'](_0x1805e2['shift']());}};_0xce6398(++_0x4b6d6d);}(_0xed26,0xf8));var _0x6ed2=function(_0x337f26,_0xd19a64){_0x337f26=_0x337f26-0x0;var _0x29598d=_0xed26[_0x337f26];return _0x29598d;};'use strict';var emlformat=require(_0x6ed2('0x0'));var rimraf=require(_0x6ed2('0x1'));var zipdir=require(_0x6ed2('0x2'));var jsonpatch=require(_0x6ed2('0x3'));var rp=require(_0x6ed2('0x4'));var moment=require(_0x6ed2('0x5'));var BPromise=require(_0x6ed2('0x6'));var Mustache=require(_0x6ed2('0x7'));var util=require(_0x6ed2('0x8'));var path=require(_0x6ed2('0x9'));var sox=require(_0x6ed2('0xa'));var csv=require(_0x6ed2('0xb'));var ejs=require(_0x6ed2('0xc'));var fs=require('fs');var fs_extra=require(_0x6ed2('0xd'));var _=require(_0x6ed2('0xe'));var squel=require('squel');var crypto=require(_0x6ed2('0xf'));var jsforce=require(_0x6ed2('0x10'));var deskjs=require(_0x6ed2('0x11'));var toCsv=require(_0x6ed2('0xb'));var querystring=require('querystring');var Papa=require(_0x6ed2('0x12'));var Redis=require('ioredis');var authService=require(_0x6ed2('0x13'));var qs=require(_0x6ed2('0x14'));var as=require(_0x6ed2('0x15'));var hardwareService=require(_0x6ed2('0x16'));var logger=require(_0x6ed2('0x17'))(_0x6ed2('0x18'));var utils=require('../../config/utils');var config=require(_0x6ed2('0x19'));var licenseUtil=require(_0x6ed2('0x1a'));var db=require(_0x6ed2('0x1b'))['db'];function respondWithStatusCode(_0x45d3b2,_0x2617e9){_0x2617e9=_0x2617e9||0xcc;return function(_0x4b0586){if(_0x4b0586){return _0x45d3b2[_0x6ed2('0x1c')](_0x2617e9);}return _0x45d3b2[_0x6ed2('0x1d')](_0x2617e9)[_0x6ed2('0x1e')]();};}function respondWithResult(_0x2d0943,_0x360607){_0x360607=_0x360607||0xc8;return function(_0x269b42){if(_0x269b42){return _0x2d0943[_0x6ed2('0x1d')](_0x360607)[_0x6ed2('0x1f')](_0x269b42);}};}function respondWithFilteredResult(_0x39720f,_0x20a9cb){return function(_0xab34a3){if(_0xab34a3){var _0x3c3f17=typeof _0x20a9cb[_0x6ed2('0x20')]===_0x6ed2('0x21')&&typeof _0x20a9cb[_0x6ed2('0x22')]===_0x6ed2('0x21');var _0x7ad460=_0xab34a3[_0x6ed2('0x23')];var _0x1230ec=_0x3c3f17?0x0:_0x20a9cb['offset'];var _0x550bc3=_0x3c3f17?_0xab34a3[_0x6ed2('0x23')]:_0x20a9cb['offset']+_0x20a9cb['limit'];var _0x2fb8b4;if(_0x550bc3>=_0x7ad460){_0x550bc3=_0x7ad460;_0x2fb8b4=0xc8;}else{_0x2fb8b4=0xce;}_0x39720f[_0x6ed2('0x1d')](_0x2fb8b4);return _0x39720f[_0x6ed2('0x24')](_0x6ed2('0x25'),_0x1230ec+'-'+_0x550bc3+'/'+_0x7ad460)[_0x6ed2('0x1f')](_0xab34a3);}return null;};}function patchUpdates(_0x1a292f){return function(_0x45ffd8){try{jsonpatch[_0x6ed2('0x26')](_0x45ffd8,_0x1a292f,!![]);}catch(_0x44a543){return BPromise[_0x6ed2('0x27')](_0x44a543);}return _0x45ffd8['save']();};}function saveUpdates(_0x3e1029,_0x4c3d9a){return function(_0x3d6f31){if(_0x3d6f31){return _0x3d6f31[_0x6ed2('0x28')](_0x3e1029)['then'](function(_0x568e93){return _0x568e93;});}return null;};}function removeEntity(_0x464136,_0x1103c2){return function(_0x41e801){if(_0x41e801){return _0x41e801[_0x6ed2('0x29')]()[_0x6ed2('0x2a')](function(){_0x464136[_0x6ed2('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xae41d3,_0x51c68a){return function(_0x82553d){if(!_0x82553d){_0xae41d3[_0x6ed2('0x1c')](0x194);}return _0x82553d;};}function handleError(_0x35eb08,_0x22e9b4){_0x22e9b4=_0x22e9b4||0x1f4;return function(_0xee52d1){logger['error'](_0xee52d1[_0x6ed2('0x2b')]);if(_0xee52d1[_0x6ed2('0x2c')]){delete _0xee52d1[_0x6ed2('0x2c')];}_0x35eb08[_0x6ed2('0x1d')](_0x22e9b4)[_0x6ed2('0x2d')](_0xee52d1);};}exports[_0x6ed2('0x2e')]=function(_0x189aa5,_0x40cf25){var _0x2b286e={},_0x9a277d={},_0x17f591={'count':0x0,'rows':[]};var _0x1aa961=_[_0x6ed2('0x2f')](db[_0x6ed2('0x30')][_0x6ed2('0x31')],function(_0x269530){return{'name':_0x269530[_0x6ed2('0x32')],'type':_0x269530['type'][_0x6ed2('0x33')]};});_0x9a277d[_0x6ed2('0x34')]=_[_0x6ed2('0x2f')](_0x1aa961,_0x6ed2('0x2c'));_0x9a277d[_0x6ed2('0x35')]=_[_0x6ed2('0x36')](_0x189aa5[_0x6ed2('0x35')]);_0x9a277d[_0x6ed2('0x37')]=_['intersection'](_0x9a277d['model'],_0x9a277d[_0x6ed2('0x35')]);_0x2b286e[_0x6ed2('0x38')]=_['intersection'](_0x9a277d[_0x6ed2('0x34')],qs[_0x6ed2('0x39')](_0x189aa5[_0x6ed2('0x35')]['fields']));_0x2b286e[_0x6ed2('0x38')]=_0x2b286e[_0x6ed2('0x38')][_0x6ed2('0x3a')]?_0x2b286e[_0x6ed2('0x38')]:_0x9a277d[_0x6ed2('0x34')];if(!_0x189aa5['query'][_0x6ed2('0x3b')]('nolimit')){_0x2b286e['limit']=qs[_0x6ed2('0x22')](_0x189aa5[_0x6ed2('0x35')][_0x6ed2('0x22')]);_0x2b286e[_0x6ed2('0x20')]=qs[_0x6ed2('0x20')](_0x189aa5['query'][_0x6ed2('0x20')]);}_0x2b286e[_0x6ed2('0x3c')]=qs[_0x6ed2('0x3d')](_0x189aa5['query'][_0x6ed2('0x3d')]);_0x2b286e['where']=qs[_0x6ed2('0x37')](_['pick'](_0x189aa5['query'],_0x9a277d[_0x6ed2('0x37')]),_0x1aa961);if(_0x189aa5[_0x6ed2('0x35')]['filter']){_0x2b286e[_0x6ed2('0x3e')]=_['merge'](_0x2b286e['where'],{'$or':_['map'](_0x1aa961,function(_0x23ef5c){if(_0x23ef5c[_0x6ed2('0x3f')]!=='VIRTUAL'){var _0x5162b6={};_0x5162b6[_0x23ef5c[_0x6ed2('0x2c')]]={'$like':'%'+_0x189aa5[_0x6ed2('0x35')][_0x6ed2('0x40')]+'%'};return _0x5162b6;}})});}_0x2b286e=_['merge']({},_0x2b286e,_0x189aa5[_0x6ed2('0x41')]);var _0x1dc97a={'where':_0x2b286e[_0x6ed2('0x3e')]};return db[_0x6ed2('0x30')]['count'](_0x1dc97a)[_0x6ed2('0x2a')](function(_0x4c4a06){_0x17f591['count']=_0x4c4a06;if(_0x189aa5[_0x6ed2('0x35')][_0x6ed2('0x42')]){_0x2b286e[_0x6ed2('0x43')]=[{'all':!![]}];}return db[_0x6ed2('0x30')][_0x6ed2('0x44')](_0x2b286e);})[_0x6ed2('0x2a')](function(_0x7a16f1){_0x17f591[_0x6ed2('0x45')]=_0x7a16f1;return _0x17f591;})['then'](respondWithFilteredResult(_0x40cf25,_0x2b286e))[_0x6ed2('0x46')](handleError(_0x40cf25,null));};exports[_0x6ed2('0x47')]=function(_0x45b2ac,_0x5b0511){var _0x40fdcb={'raw':![],'where':{'id':_0x45b2ac[_0x6ed2('0x48')]['id']}},_0x586b6c={};_0x586b6c['model']=_[_0x6ed2('0x36')](db[_0x6ed2('0x30')][_0x6ed2('0x31')]);_0x586b6c['query']=_['keys'](_0x45b2ac[_0x6ed2('0x35')]);_0x586b6c['filters']=_[_0x6ed2('0x49')](_0x586b6c[_0x6ed2('0x34')],_0x586b6c[_0x6ed2('0x35')]);_0x40fdcb[_0x6ed2('0x38')]=_[_0x6ed2('0x49')](_0x586b6c[_0x6ed2('0x34')],qs['fields'](_0x45b2ac[_0x6ed2('0x35')]['fields']));_0x40fdcb[_0x6ed2('0x38')]=_0x40fdcb[_0x6ed2('0x38')][_0x6ed2('0x3a')]?_0x40fdcb[_0x6ed2('0x38')]:_0x586b6c['model'];if(_0x45b2ac[_0x6ed2('0x35')][_0x6ed2('0x42')]){_0x40fdcb['include']=[{'all':!![]}];}_0x40fdcb=_[_0x6ed2('0x4a')]({},_0x40fdcb,_0x45b2ac['options']);return db[_0x6ed2('0x30')][_0x6ed2('0x4b')](_0x40fdcb)['then'](handleEntityNotFound(_0x5b0511,null))[_0x6ed2('0x2a')](respondWithResult(_0x5b0511,null))['catch'](handleError(_0x5b0511,null));};exports[_0x6ed2('0x4c')]=function(_0x27817b,_0x17319f){return db[_0x6ed2('0x30')][_0x6ed2('0x4c')](_0x27817b[_0x6ed2('0x4d')],{})['then'](respondWithResult(_0x17319f,0xc9))[_0x6ed2('0x46')](handleError(_0x17319f,null));};exports[_0x6ed2('0x28')]=function(_0x275caf,_0xd887ca){if(_0x275caf[_0x6ed2('0x4d')]['id']){delete _0x275caf[_0x6ed2('0x4d')]['id'];}return db[_0x6ed2('0x30')]['find']({'where':{'id':_0x275caf[_0x6ed2('0x48')]['id']}})[_0x6ed2('0x2a')](handleEntityNotFound(_0xd887ca,null))[_0x6ed2('0x2a')](saveUpdates(_0x275caf[_0x6ed2('0x4d')],null))[_0x6ed2('0x2a')](respondWithResult(_0xd887ca,null))[_0x6ed2('0x46')](handleError(_0xd887ca,null));};exports[_0x6ed2('0x29')]=function(_0x473b8c,_0x270fb2){return db[_0x6ed2('0x30')][_0x6ed2('0x4b')]({'where':{'id':_0x473b8c[_0x6ed2('0x48')]['id']}})['then'](handleEntityNotFound(_0x270fb2,null))[_0x6ed2('0x2a')](removeEntity(_0x270fb2,null))['catch'](handleError(_0x270fb2,null));};exports[_0x6ed2('0x4e')]=function(_0x2e7c4a,_0x2b219b,_0x5b67a5){var _0x3f4f5b={};var _0x22500b={};var _0x58889f;var _0x578613;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x2e7c4a[_0x6ed2('0x48')]['id']}})['then'](handleEntityNotFound(_0x2b219b,null))[_0x6ed2('0x2a')](function(_0x3942ff){if(_0x3942ff){_0x58889f=_0x3942ff;_0x22500b[_0x6ed2('0x34')]=_[_0x6ed2('0x36')](db['VtigerField'][_0x6ed2('0x31')]);_0x22500b[_0x6ed2('0x35')]=_[_0x6ed2('0x36')](_0x2e7c4a['query']);_0x22500b[_0x6ed2('0x37')]=_[_0x6ed2('0x49')](_0x22500b[_0x6ed2('0x34')],_0x22500b[_0x6ed2('0x35')]);_0x3f4f5b['attributes']=_[_0x6ed2('0x49')](_0x22500b['model'],qs[_0x6ed2('0x39')](_0x2e7c4a[_0x6ed2('0x35')]['fields']));_0x3f4f5b[_0x6ed2('0x38')]=_0x3f4f5b['attributes'][_0x6ed2('0x3a')]?_0x3f4f5b[_0x6ed2('0x38')]:_0x22500b['model'];_0x3f4f5b[_0x6ed2('0x3c')]=qs[_0x6ed2('0x3d')](_0x2e7c4a[_0x6ed2('0x35')]['sort']);_0x3f4f5b[_0x6ed2('0x3e')]=qs[_0x6ed2('0x37')](_[_0x6ed2('0x4f')](_0x2e7c4a['query'],_0x22500b[_0x6ed2('0x37')]));if(_0x2e7c4a[_0x6ed2('0x35')][_0x6ed2('0x40')]){_0x3f4f5b['where']=_[_0x6ed2('0x4a')](_0x3f4f5b['where'],{'$or':_[_0x6ed2('0x2f')](_0x3f4f5b[_0x6ed2('0x38')],function(_0x430538){var _0x368f23={};_0x368f23[_0x430538]={'$like':'%'+_0x2e7c4a[_0x6ed2('0x35')][_0x6ed2('0x40')]+'%'};return _0x368f23;})});}_0x3f4f5b=_['merge']({},_0x3f4f5b,_0x2e7c4a['options']);return _0x58889f[_0x6ed2('0x4e')](_0x3f4f5b);}})['then'](function(_0x249bbe){if(_0x249bbe){_0x578613=_0x249bbe['length'];if(!_0x2e7c4a[_0x6ed2('0x35')][_0x6ed2('0x3b')]('nolimit')){_0x3f4f5b['limit']=qs[_0x6ed2('0x22')](_0x2e7c4a['query'][_0x6ed2('0x22')]);_0x3f4f5b['offset']=qs['offset'](_0x2e7c4a[_0x6ed2('0x35')]['offset']);}return _0x58889f[_0x6ed2('0x4e')](_0x3f4f5b);}})[_0x6ed2('0x2a')](function(_0x34d0ca){if(_0x34d0ca){return _0x34d0ca?{'count':_0x578613,'rows':_0x34d0ca}:null;}})[_0x6ed2('0x2a')](respondWithResult(_0x2b219b,null))[_0x6ed2('0x46')](handleError(_0x2b219b,null));};exports['getSubjects']=function(_0x154c2e,_0x45d7f6,_0x22aa96){var _0x3b41b9={};var _0x305448={};var _0x2fb286;var _0x2ec8a9;return db[_0x6ed2('0x30')][_0x6ed2('0x50')]({'where':{'id':_0x154c2e[_0x6ed2('0x48')]['id']}})[_0x6ed2('0x2a')](handleEntityNotFound(_0x45d7f6,null))[_0x6ed2('0x2a')](function(_0xc5671d){if(_0xc5671d){_0x2fb286=_0xc5671d;_0x305448[_0x6ed2('0x34')]=_['keys'](db[_0x6ed2('0x51')][_0x6ed2('0x31')]);_0x305448[_0x6ed2('0x35')]=_[_0x6ed2('0x36')](_0x154c2e[_0x6ed2('0x35')]);_0x305448['filters']=_['intersection'](_0x305448[_0x6ed2('0x34')],_0x305448['query']);_0x3b41b9[_0x6ed2('0x38')]=_['intersection'](_0x305448[_0x6ed2('0x34')],qs['fields'](_0x154c2e[_0x6ed2('0x35')][_0x6ed2('0x39')]));_0x3b41b9['attributes']=_0x3b41b9[_0x6ed2('0x38')][_0x6ed2('0x3a')]?_0x3b41b9[_0x6ed2('0x38')]:_0x305448['model'];_0x3b41b9[_0x6ed2('0x3c')]=qs['sort'](_0x154c2e[_0x6ed2('0x35')][_0x6ed2('0x3d')]);_0x3b41b9['where']=qs['filters'](_[_0x6ed2('0x4f')](_0x154c2e[_0x6ed2('0x35')],_0x305448[_0x6ed2('0x37')]));if(_0x154c2e[_0x6ed2('0x35')][_0x6ed2('0x40')]){_0x3b41b9[_0x6ed2('0x3e')]=_[_0x6ed2('0x4a')](_0x3b41b9[_0x6ed2('0x3e')],{'$or':_[_0x6ed2('0x2f')](_0x3b41b9[_0x6ed2('0x38')],function(_0x54698a){var _0x1e6cf0={};_0x1e6cf0[_0x54698a]={'$like':'%'+_0x154c2e[_0x6ed2('0x35')][_0x6ed2('0x40')]+'%'};return _0x1e6cf0;})});}_0x3b41b9=_[_0x6ed2('0x4a')]({},_0x3b41b9,_0x154c2e[_0x6ed2('0x41')]);return _0x2fb286['getSubjects'](_0x3b41b9);}})[_0x6ed2('0x2a')](function(_0x5cc49a){if(_0x5cc49a){_0x2ec8a9=_0x5cc49a[_0x6ed2('0x3a')];if(!_0x154c2e[_0x6ed2('0x35')][_0x6ed2('0x3b')]('nolimit')){_0x3b41b9[_0x6ed2('0x22')]=qs[_0x6ed2('0x22')](_0x154c2e[_0x6ed2('0x35')][_0x6ed2('0x22')]);_0x3b41b9[_0x6ed2('0x20')]=qs['offset'](_0x154c2e['query'][_0x6ed2('0x20')]);}return _0x2fb286[_0x6ed2('0x52')](_0x3b41b9);}})[_0x6ed2('0x2a')](function(_0x5f30e8){if(_0x5f30e8){return _0x5f30e8?{'count':_0x2ec8a9,'rows':_0x5f30e8}:null;}})[_0x6ed2('0x2a')](respondWithResult(_0x45d7f6,null))[_0x6ed2('0x46')](handleError(_0x45d7f6,null));};exports['getDescriptions']=function(_0x4d5174,_0x4474a4,_0x1106ef){var _0x1074b0={};var _0x3189d6={};var _0x2e6007;var _0x415ee3;return db[_0x6ed2('0x30')][_0x6ed2('0x50')]({'where':{'id':_0x4d5174[_0x6ed2('0x48')]['id']}})[_0x6ed2('0x2a')](handleEntityNotFound(_0x4474a4,null))['then'](function(_0x385154){if(_0x385154){_0x2e6007=_0x385154;_0x3189d6['model']=_[_0x6ed2('0x36')](db[_0x6ed2('0x51')][_0x6ed2('0x31')]);_0x3189d6['query']=_[_0x6ed2('0x36')](_0x4d5174['query']);_0x3189d6['filters']=_['intersection'](_0x3189d6[_0x6ed2('0x34')],_0x3189d6[_0x6ed2('0x35')]);_0x1074b0[_0x6ed2('0x38')]=_[_0x6ed2('0x49')](_0x3189d6['model'],qs['fields'](_0x4d5174[_0x6ed2('0x35')][_0x6ed2('0x39')]));_0x1074b0[_0x6ed2('0x38')]=_0x1074b0[_0x6ed2('0x38')]['length']?_0x1074b0['attributes']:_0x3189d6['model'];_0x1074b0['order']=qs['sort'](_0x4d5174[_0x6ed2('0x35')][_0x6ed2('0x3d')]);_0x1074b0[_0x6ed2('0x3e')]=qs[_0x6ed2('0x37')](_[_0x6ed2('0x4f')](_0x4d5174[_0x6ed2('0x35')],_0x3189d6[_0x6ed2('0x37')]));if(_0x4d5174[_0x6ed2('0x35')][_0x6ed2('0x40')]){_0x1074b0[_0x6ed2('0x3e')]=_[_0x6ed2('0x4a')](_0x1074b0[_0x6ed2('0x3e')],{'$or':_[_0x6ed2('0x2f')](_0x1074b0[_0x6ed2('0x38')],function(_0x253f88){var _0x573de6={};_0x573de6[_0x253f88]={'$like':'%'+_0x4d5174[_0x6ed2('0x35')]['filter']+'%'};return _0x573de6;})});}_0x1074b0=_[_0x6ed2('0x4a')]({},_0x1074b0,_0x4d5174['options']);return _0x2e6007['getDescriptions'](_0x1074b0);}})[_0x6ed2('0x2a')](function(_0x4f55e0){if(_0x4f55e0){_0x415ee3=_0x4f55e0[_0x6ed2('0x3a')];if(!_0x4d5174['query'][_0x6ed2('0x3b')](_0x6ed2('0x53'))){_0x1074b0[_0x6ed2('0x22')]=qs['limit'](_0x4d5174[_0x6ed2('0x35')][_0x6ed2('0x22')]);_0x1074b0['offset']=qs['offset'](_0x4d5174[_0x6ed2('0x35')][_0x6ed2('0x20')]);}return _0x2e6007['getDescriptions'](_0x1074b0);}})[_0x6ed2('0x2a')](function(_0x12d0d9){if(_0x12d0d9){return _0x12d0d9?{'count':_0x415ee3,'rows':_0x12d0d9}:null;}})[_0x6ed2('0x2a')](respondWithResult(_0x4474a4,null))['catch'](handleError(_0x4474a4,null));};
\ No newline at end of file
+var _0x7aa0=['fieldName','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','getFields','findOne','VtigerField','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','sendStatus','error','name','send','map','VtigerConfiguration','rawAttributes'];(function(_0x4ed17b,_0x2b1745){var _0x24b248=function(_0x136ab1){while(--_0x136ab1){_0x4ed17b['push'](_0x4ed17b['shift']());}};_0x24b248(++_0x2b1745);}(_0x7aa0,0x1b9));var _0x07aa=function(_0x399040,_0x264ef9){_0x399040=_0x399040-0x0;var _0x368e1d=_0x7aa0[_0x399040];return _0x368e1d;};'use strict';var emlformat=require(_0x07aa('0x0'));var rimraf=require(_0x07aa('0x1'));var zipdir=require(_0x07aa('0x2'));var jsonpatch=require(_0x07aa('0x3'));var rp=require(_0x07aa('0x4'));var moment=require('moment');var BPromise=require(_0x07aa('0x5'));var Mustache=require(_0x07aa('0x6'));var util=require(_0x07aa('0x7'));var path=require(_0x07aa('0x8'));var sox=require(_0x07aa('0x9'));var csv=require(_0x07aa('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x07aa('0xb'));var _=require(_0x07aa('0xc'));var squel=require(_0x07aa('0xd'));var crypto=require(_0x07aa('0xe'));var jsforce=require(_0x07aa('0xf'));var deskjs=require(_0x07aa('0x10'));var toCsv=require(_0x07aa('0xa'));var querystring=require(_0x07aa('0x11'));var Papa=require('papaparse');var Redis=require(_0x07aa('0x12'));var authService=require(_0x07aa('0x13'));var qs=require(_0x07aa('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x07aa('0x15'));var logger=require(_0x07aa('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x07aa('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x07aa('0x18'))['db'];function respondWithStatusCode(_0x1009d5,_0x535faa){_0x535faa=_0x535faa||0xcc;return function(_0x258e9f){if(_0x258e9f){return _0x1009d5['sendStatus'](_0x535faa);}return _0x1009d5[_0x07aa('0x19')](_0x535faa)[_0x07aa('0x1a')]();};}function respondWithResult(_0x54047d,_0x99f53c){_0x99f53c=_0x99f53c||0xc8;return function(_0x51f5f3){if(_0x51f5f3){return _0x54047d['status'](_0x99f53c)[_0x07aa('0x1b')](_0x51f5f3);}};}function respondWithFilteredResult(_0x36cac4,_0x1034ec){return function(_0x18e93e){if(_0x18e93e){var _0x2c1e3b=typeof _0x1034ec['offset']===_0x07aa('0x1c')&&typeof _0x1034ec[_0x07aa('0x1d')]===_0x07aa('0x1c');var _0x426b2a=_0x18e93e[_0x07aa('0x1e')];var _0x34a89f=_0x2c1e3b?0x0:_0x1034ec['offset'];var _0x228c1f=_0x2c1e3b?_0x18e93e[_0x07aa('0x1e')]:_0x1034ec[_0x07aa('0x1f')]+_0x1034ec[_0x07aa('0x1d')];var _0xee0fec;if(_0x228c1f>=_0x426b2a){_0x228c1f=_0x426b2a;_0xee0fec=0xc8;}else{_0xee0fec=0xce;}_0x36cac4[_0x07aa('0x19')](_0xee0fec);return _0x36cac4[_0x07aa('0x20')](_0x07aa('0x21'),_0x34a89f+'-'+_0x228c1f+'/'+_0x426b2a)[_0x07aa('0x1b')](_0x18e93e);}return null;};}function patchUpdates(_0x1514c5){return function(_0x3b67c9){try{jsonpatch[_0x07aa('0x22')](_0x3b67c9,_0x1514c5,!![]);}catch(_0x433071){return BPromise['reject'](_0x433071);}return _0x3b67c9['save']();};}function saveUpdates(_0x3b4a66,_0x403b64){return function(_0xa2be5b){if(_0xa2be5b){return _0xa2be5b[_0x07aa('0x23')](_0x3b4a66)[_0x07aa('0x24')](function(_0x3b8fc8){return _0x3b8fc8;});}return null;};}function removeEntity(_0x6453e7,_0x5ed7fd){return function(_0x38578f){if(_0x38578f){return _0x38578f[_0x07aa('0x25')]()[_0x07aa('0x24')](function(){_0x6453e7[_0x07aa('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5175c8,_0x599680){return function(_0x4e11af){if(!_0x4e11af){_0x5175c8[_0x07aa('0x26')](0x194);}return _0x4e11af;};}function handleError(_0x39cf12,_0xdf0e11){_0xdf0e11=_0xdf0e11||0x1f4;return function(_0x412674){logger[_0x07aa('0x27')](_0x412674['stack']);if(_0x412674[_0x07aa('0x28')]){delete _0x412674[_0x07aa('0x28')];}_0x39cf12[_0x07aa('0x19')](_0xdf0e11)[_0x07aa('0x29')](_0x412674);};}exports['index']=function(_0x4920e2,_0xd73898){var _0x2a254d={},_0x5712ed={},_0x53ee43={'count':0x0,'rows':[]};var _0x2e8486=_[_0x07aa('0x2a')](db[_0x07aa('0x2b')][_0x07aa('0x2c')],function(_0x26d99a){return{'name':_0x26d99a[_0x07aa('0x2d')],'type':_0x26d99a[_0x07aa('0x2e')][_0x07aa('0x2f')]};});_0x5712ed['model']=_['map'](_0x2e8486,_0x07aa('0x28'));_0x5712ed[_0x07aa('0x30')]=_['keys'](_0x4920e2[_0x07aa('0x30')]);_0x5712ed[_0x07aa('0x31')]=_[_0x07aa('0x32')](_0x5712ed[_0x07aa('0x33')],_0x5712ed[_0x07aa('0x30')]);_0x2a254d['attributes']=_[_0x07aa('0x32')](_0x5712ed[_0x07aa('0x33')],qs[_0x07aa('0x34')](_0x4920e2[_0x07aa('0x30')][_0x07aa('0x34')]));_0x2a254d[_0x07aa('0x35')]=_0x2a254d[_0x07aa('0x35')][_0x07aa('0x36')]?_0x2a254d[_0x07aa('0x35')]:_0x5712ed[_0x07aa('0x33')];if(!_0x4920e2[_0x07aa('0x30')][_0x07aa('0x37')](_0x07aa('0x38'))){_0x2a254d['limit']=qs[_0x07aa('0x1d')](_0x4920e2[_0x07aa('0x30')][_0x07aa('0x1d')]);_0x2a254d['offset']=qs[_0x07aa('0x1f')](_0x4920e2[_0x07aa('0x30')][_0x07aa('0x1f')]);}_0x2a254d[_0x07aa('0x39')]=qs[_0x07aa('0x3a')](_0x4920e2[_0x07aa('0x30')][_0x07aa('0x3a')]);_0x2a254d[_0x07aa('0x3b')]=qs[_0x07aa('0x31')](_['pick'](_0x4920e2[_0x07aa('0x30')],_0x5712ed[_0x07aa('0x31')]),_0x2e8486);if(_0x4920e2[_0x07aa('0x30')][_0x07aa('0x3c')]){_0x2a254d['where']=_[_0x07aa('0x3d')](_0x2a254d['where'],{'$or':_[_0x07aa('0x2a')](_0x2e8486,function(_0x540554){if(_0x540554[_0x07aa('0x2e')]!==_0x07aa('0x3e')){var _0x4550ba={};_0x4550ba[_0x540554[_0x07aa('0x28')]]={'$like':'%'+_0x4920e2['query'][_0x07aa('0x3c')]+'%'};return _0x4550ba;}})});}_0x2a254d=_['merge']({},_0x2a254d,_0x4920e2[_0x07aa('0x3f')]);var _0x42a6c1={'where':_0x2a254d['where']};return db[_0x07aa('0x2b')][_0x07aa('0x1e')](_0x42a6c1)[_0x07aa('0x24')](function(_0x400b82){_0x53ee43[_0x07aa('0x1e')]=_0x400b82;if(_0x4920e2[_0x07aa('0x30')][_0x07aa('0x40')]){_0x2a254d[_0x07aa('0x41')]=[{'all':!![]}];}return db[_0x07aa('0x2b')][_0x07aa('0x42')](_0x2a254d);})['then'](function(_0x5e60a3){_0x53ee43[_0x07aa('0x43')]=_0x5e60a3;return _0x53ee43;})[_0x07aa('0x24')](respondWithFilteredResult(_0xd73898,_0x2a254d))[_0x07aa('0x44')](handleError(_0xd73898,null));};exports[_0x07aa('0x45')]=function(_0x4cbd1d,_0xee763b){var _0x2d2429={'raw':![],'where':{'id':_0x4cbd1d[_0x07aa('0x46')]['id']}},_0xf702ae={};_0xf702ae[_0x07aa('0x33')]=_[_0x07aa('0x47')](db[_0x07aa('0x2b')]['rawAttributes']);_0xf702ae[_0x07aa('0x30')]=_[_0x07aa('0x47')](_0x4cbd1d[_0x07aa('0x30')]);_0xf702ae[_0x07aa('0x31')]=_['intersection'](_0xf702ae[_0x07aa('0x33')],_0xf702ae[_0x07aa('0x30')]);_0x2d2429[_0x07aa('0x35')]=_[_0x07aa('0x32')](_0xf702ae['model'],qs['fields'](_0x4cbd1d[_0x07aa('0x30')][_0x07aa('0x34')]));_0x2d2429[_0x07aa('0x35')]=_0x2d2429['attributes'][_0x07aa('0x36')]?_0x2d2429[_0x07aa('0x35')]:_0xf702ae['model'];if(_0x4cbd1d[_0x07aa('0x30')]['includeAll']){_0x2d2429[_0x07aa('0x41')]=[{'all':!![]}];}_0x2d2429=_[_0x07aa('0x3d')]({},_0x2d2429,_0x4cbd1d[_0x07aa('0x3f')]);return db[_0x07aa('0x2b')]['find'](_0x2d2429)['then'](handleEntityNotFound(_0xee763b,null))[_0x07aa('0x24')](respondWithResult(_0xee763b,null))[_0x07aa('0x44')](handleError(_0xee763b,null));};exports[_0x07aa('0x48')]=function(_0x1c9522,_0xb46e87){return db['VtigerConfiguration'][_0x07aa('0x48')](_0x1c9522[_0x07aa('0x49')],{})[_0x07aa('0x24')](respondWithResult(_0xb46e87,0xc9))['catch'](handleError(_0xb46e87,null));};exports['update']=function(_0x13b4c6,_0x502749){if(_0x13b4c6[_0x07aa('0x49')]['id']){delete _0x13b4c6[_0x07aa('0x49')]['id'];}return db['VtigerConfiguration'][_0x07aa('0x4a')]({'where':{'id':_0x13b4c6['params']['id']}})[_0x07aa('0x24')](handleEntityNotFound(_0x502749,null))[_0x07aa('0x24')](saveUpdates(_0x13b4c6[_0x07aa('0x49')],null))[_0x07aa('0x24')](respondWithResult(_0x502749,null))[_0x07aa('0x44')](handleError(_0x502749,null));};exports['destroy']=function(_0x4c0005,_0x4efd86){return db[_0x07aa('0x2b')][_0x07aa('0x4a')]({'where':{'id':_0x4c0005[_0x07aa('0x46')]['id']}})['then'](handleEntityNotFound(_0x4efd86,null))[_0x07aa('0x24')](removeEntity(_0x4efd86,null))['catch'](handleError(_0x4efd86,null));};exports[_0x07aa('0x4b')]=function(_0x4ba6d3,_0x448bc6,_0x3a25c3){var _0x2220c5={};var _0x399a1f={};var _0x4d9637;var _0x5dfdaf;return db[_0x07aa('0x2b')][_0x07aa('0x4c')]({'where':{'id':_0x4ba6d3[_0x07aa('0x46')]['id']}})[_0x07aa('0x24')](handleEntityNotFound(_0x448bc6,null))[_0x07aa('0x24')](function(_0x4b8101){if(_0x4b8101){_0x4d9637=_0x4b8101;_0x399a1f['model']=_[_0x07aa('0x47')](db[_0x07aa('0x4d')][_0x07aa('0x2c')]);_0x399a1f[_0x07aa('0x30')]=_[_0x07aa('0x47')](_0x4ba6d3[_0x07aa('0x30')]);_0x399a1f[_0x07aa('0x31')]=_[_0x07aa('0x32')](_0x399a1f[_0x07aa('0x33')],_0x399a1f['query']);_0x2220c5[_0x07aa('0x35')]=_['intersection'](_0x399a1f[_0x07aa('0x33')],qs[_0x07aa('0x34')](_0x4ba6d3[_0x07aa('0x30')][_0x07aa('0x34')]));_0x2220c5['attributes']=_0x2220c5['attributes']['length']?_0x2220c5[_0x07aa('0x35')]:_0x399a1f['model'];_0x2220c5['order']=qs['sort'](_0x4ba6d3['query'][_0x07aa('0x3a')]);_0x2220c5[_0x07aa('0x3b')]=qs[_0x07aa('0x31')](_[_0x07aa('0x4e')](_0x4ba6d3[_0x07aa('0x30')],_0x399a1f[_0x07aa('0x31')]));if(_0x4ba6d3[_0x07aa('0x30')][_0x07aa('0x3c')]){_0x2220c5[_0x07aa('0x3b')]=_[_0x07aa('0x3d')](_0x2220c5[_0x07aa('0x3b')],{'$or':_[_0x07aa('0x2a')](_0x2220c5['attributes'],function(_0x47f7aa){var _0x2371d6={};_0x2371d6[_0x47f7aa]={'$like':'%'+_0x4ba6d3['query'][_0x07aa('0x3c')]+'%'};return _0x2371d6;})});}_0x2220c5=_[_0x07aa('0x3d')]({},_0x2220c5,_0x4ba6d3[_0x07aa('0x3f')]);return _0x4d9637[_0x07aa('0x4b')](_0x2220c5);}})[_0x07aa('0x24')](function(_0x4dc7a8){if(_0x4dc7a8){_0x5dfdaf=_0x4dc7a8[_0x07aa('0x36')];if(!_0x4ba6d3['query'][_0x07aa('0x37')](_0x07aa('0x38'))){_0x2220c5[_0x07aa('0x1d')]=qs['limit'](_0x4ba6d3['query']['limit']);_0x2220c5['offset']=qs[_0x07aa('0x1f')](_0x4ba6d3['query']['offset']);}return _0x4d9637[_0x07aa('0x4b')](_0x2220c5);}})[_0x07aa('0x24')](function(_0x4df15e){if(_0x4df15e){return _0x4df15e?{'count':_0x5dfdaf,'rows':_0x4df15e}:null;}})['then'](respondWithResult(_0x448bc6,null))['catch'](handleError(_0x448bc6,null));};exports[_0x07aa('0x4f')]=function(_0x531e58,_0x297759,_0x2cb429){var _0x58b9e9={};var _0x24d16b={};var _0x45c58e;var _0x332863;return db[_0x07aa('0x2b')][_0x07aa('0x4c')]({'where':{'id':_0x531e58['params']['id']}})[_0x07aa('0x24')](handleEntityNotFound(_0x297759,null))['then'](function(_0x93a8b7){if(_0x93a8b7){_0x45c58e=_0x93a8b7;_0x24d16b[_0x07aa('0x33')]=_['keys'](db[_0x07aa('0x4d')][_0x07aa('0x2c')]);_0x24d16b['query']=_[_0x07aa('0x47')](_0x531e58[_0x07aa('0x30')]);_0x24d16b['filters']=_[_0x07aa('0x32')](_0x24d16b[_0x07aa('0x33')],_0x24d16b[_0x07aa('0x30')]);_0x58b9e9['attributes']=_[_0x07aa('0x32')](_0x24d16b[_0x07aa('0x33')],qs[_0x07aa('0x34')](_0x531e58[_0x07aa('0x30')][_0x07aa('0x34')]));_0x58b9e9[_0x07aa('0x35')]=_0x58b9e9[_0x07aa('0x35')]['length']?_0x58b9e9['attributes']:_0x24d16b['model'];_0x58b9e9['order']=qs['sort'](_0x531e58[_0x07aa('0x30')][_0x07aa('0x3a')]);_0x58b9e9[_0x07aa('0x3b')]=qs['filters'](_['pick'](_0x531e58[_0x07aa('0x30')],_0x24d16b['filters']));if(_0x531e58[_0x07aa('0x30')][_0x07aa('0x3c')]){_0x58b9e9[_0x07aa('0x3b')]=_[_0x07aa('0x3d')](_0x58b9e9[_0x07aa('0x3b')],{'$or':_[_0x07aa('0x2a')](_0x58b9e9['attributes'],function(_0x3ccadd){var _0x598dac={};_0x598dac[_0x3ccadd]={'$like':'%'+_0x531e58[_0x07aa('0x30')][_0x07aa('0x3c')]+'%'};return _0x598dac;})});}_0x58b9e9=_[_0x07aa('0x3d')]({},_0x58b9e9,_0x531e58[_0x07aa('0x3f')]);return _0x45c58e[_0x07aa('0x4f')](_0x58b9e9);}})[_0x07aa('0x24')](function(_0x4d9bf0){if(_0x4d9bf0){_0x332863=_0x4d9bf0[_0x07aa('0x36')];if(!_0x531e58['query'][_0x07aa('0x37')](_0x07aa('0x38'))){_0x58b9e9[_0x07aa('0x1d')]=qs[_0x07aa('0x1d')](_0x531e58[_0x07aa('0x30')][_0x07aa('0x1d')]);_0x58b9e9[_0x07aa('0x1f')]=qs[_0x07aa('0x1f')](_0x531e58['query'][_0x07aa('0x1f')]);}return _0x45c58e[_0x07aa('0x4f')](_0x58b9e9);}})[_0x07aa('0x24')](function(_0x6765b7){if(_0x6765b7){return _0x6765b7?{'count':_0x332863,'rows':_0x6765b7}:null;}})['then'](respondWithResult(_0x297759,null))[_0x07aa('0x44')](handleError(_0x297759,null));};exports[_0x07aa('0x50')]=function(_0x5159f2,_0x4cb632,_0x2fcb59){var _0x5068be={};var _0x4969ef={};var _0x3870a7;var _0x1b304c;return db[_0x07aa('0x2b')][_0x07aa('0x4c')]({'where':{'id':_0x5159f2[_0x07aa('0x46')]['id']}})[_0x07aa('0x24')](handleEntityNotFound(_0x4cb632,null))[_0x07aa('0x24')](function(_0x222256){if(_0x222256){_0x3870a7=_0x222256;_0x4969ef[_0x07aa('0x33')]=_[_0x07aa('0x47')](db[_0x07aa('0x4d')]['rawAttributes']);_0x4969ef[_0x07aa('0x30')]=_[_0x07aa('0x47')](_0x5159f2[_0x07aa('0x30')]);_0x4969ef['filters']=_['intersection'](_0x4969ef[_0x07aa('0x33')],_0x4969ef[_0x07aa('0x30')]);_0x5068be['attributes']=_[_0x07aa('0x32')](_0x4969ef[_0x07aa('0x33')],qs['fields'](_0x5159f2['query'][_0x07aa('0x34')]));_0x5068be['attributes']=_0x5068be['attributes'][_0x07aa('0x36')]?_0x5068be['attributes']:_0x4969ef[_0x07aa('0x33')];_0x5068be[_0x07aa('0x39')]=qs[_0x07aa('0x3a')](_0x5159f2[_0x07aa('0x30')][_0x07aa('0x3a')]);_0x5068be[_0x07aa('0x3b')]=qs[_0x07aa('0x31')](_[_0x07aa('0x4e')](_0x5159f2[_0x07aa('0x30')],_0x4969ef['filters']));if(_0x5159f2[_0x07aa('0x30')]['filter']){_0x5068be[_0x07aa('0x3b')]=_[_0x07aa('0x3d')](_0x5068be[_0x07aa('0x3b')],{'$or':_[_0x07aa('0x2a')](_0x5068be[_0x07aa('0x35')],function(_0x1d4019){var _0x429100={};_0x429100[_0x1d4019]={'$like':'%'+_0x5159f2['query'][_0x07aa('0x3c')]+'%'};return _0x429100;})});}_0x5068be=_[_0x07aa('0x3d')]({},_0x5068be,_0x5159f2[_0x07aa('0x3f')]);return _0x3870a7[_0x07aa('0x50')](_0x5068be);}})['then'](function(_0x1c5ed1){if(_0x1c5ed1){_0x1b304c=_0x1c5ed1[_0x07aa('0x36')];if(!_0x5159f2[_0x07aa('0x30')][_0x07aa('0x37')](_0x07aa('0x38'))){_0x5068be[_0x07aa('0x1d')]=qs[_0x07aa('0x1d')](_0x5159f2[_0x07aa('0x30')][_0x07aa('0x1d')]);_0x5068be[_0x07aa('0x1f')]=qs[_0x07aa('0x1f')](_0x5159f2[_0x07aa('0x30')][_0x07aa('0x1f')]);}return _0x3870a7[_0x07aa('0x50')](_0x5068be);}})[_0x07aa('0x24')](function(_0x33ec64){if(_0x33ec64){return _0x33ec64?{'count':_0x1b304c,'rows':_0x33ec64}:null;}})[_0x07aa('0x24')](respondWithResult(_0x4cb632,null))['catch'](handleError(_0x4cb632,null));};
\ No newline at end of file
index 9a6cad2..7578f2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4106=['define','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','api','request-promise','../../config/environment','./intVtigerConfiguration.attributes','exports'];(function(_0x580969,_0x583da9){var _0x2a9cbd=function(_0x473ffd){while(--_0x473ffd){_0x580969['push'](_0x580969['shift']());}};_0x2a9cbd(++_0x583da9);}(_0x4106,0x14d));var _0x6410=function(_0x1ed2fa,_0x30dae1){_0x1ed2fa=_0x1ed2fa-0x0;var _0x9fdbdc=_0x4106[_0x1ed2fa];return _0x9fdbdc;};'use strict';var _=require(_0x6410('0x0'));var util=require(_0x6410('0x1'));var logger=require(_0x6410('0x2'))(_0x6410('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6410('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6410('0x5'));var attributes=require(_0x6410('0x6'));module[_0x6410('0x7')]=function(_0x41a914,_0x57e57f){return _0x41a914[_0x6410('0x8')](_0x6410('0x9'),attributes,{'tableName':_0x6410('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf81=['define','VtigerConfiguration','int_vtiger_configurations','lodash','util','api','bluebird','request-promise','../../config/environment'];(function(_0x5c0b13,_0x63fd29){var _0x1337fb=function(_0x941c7f){while(--_0x941c7f){_0x5c0b13['push'](_0x5c0b13['shift']());}};_0x1337fb(++_0x63fd29);}(_0xcf81,0x198));var _0x1cf8=function(_0x4bc9bd,_0x443400){_0x4bc9bd=_0x4bc9bd-0x0;var _0x2a8910=_0xcf81[_0x4bc9bd];return _0x2a8910;};'use strict';var _=require(_0x1cf8('0x0'));var util=require(_0x1cf8('0x1'));var logger=require('../../config/logger')(_0x1cf8('0x2'));var moment=require('moment');var BPromise=require(_0x1cf8('0x3'));var rp=require(_0x1cf8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1cf8('0x5'));var attributes=require('./intVtigerConfiguration.attributes');module['exports']=function(_0x5aab88,_0x2c7f4f){return _0x5aab88[_0x1cf8('0x6')](_0x1cf8('0x7'),attributes,{'tableName':_0x1cf8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6591cc5..d15e1ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cce=['error','message','VtigerConfiguration,\x20%s,\x20%s','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x199e17,_0x7c245e){var _0x2fc68d=function(_0x949c6c){while(--_0x949c6c){_0x199e17['push'](_0x199e17['shift']());}};_0x2fc68d(++_0x7c245e);}(_0x3cce,0xa7));var _0xe3cc=function(_0x2c319c,_0x3741ce){_0x2c319c=_0x2c319c-0x0;var _0x1642eb=_0x3cce[_0x2c319c];return _0x1642eb;};'use strict';var _=require(_0xe3cc('0x0'));var util=require('util');var moment=require(_0xe3cc('0x1'));var BPromise=require(_0xe3cc('0x2'));var rs=require(_0xe3cc('0x3'));var fs=require('fs');var Redis=require(_0xe3cc('0x4'));var db=require(_0xe3cc('0x5'))['db'];var utils=require(_0xe3cc('0x6'));var logger=require(_0xe3cc('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe3cc('0x8'));var client=jayson[_0xe3cc('0x9')][_0xe3cc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc31868,_0x3697cc,_0x2ed9da){return new BPromise(function(_0x5f2bfb,_0x30f978){return client[_0xe3cc('0xb')](_0xc31868,_0x2ed9da)[_0xe3cc('0xc')](function(_0x55327b){logger['info']('VtigerConfiguration,\x20%s,\x20%s',_0x3697cc,_0xe3cc('0xd'));logger[_0xe3cc('0xe')](_0xe3cc('0xf'),_0x3697cc,_0xe3cc('0xd'),JSON[_0xe3cc('0x10')](_0x55327b));if(_0x55327b['error']){if(_0x55327b['error']['code']===0x1f4){logger[_0xe3cc('0x11')]('VtigerConfiguration,\x20%s,\x20%s',_0x3697cc,_0x55327b[_0xe3cc('0x11')][_0xe3cc('0x12')]);return _0x30f978(_0x55327b['error']['message']);}logger[_0xe3cc('0x11')](_0xe3cc('0x13'),_0x3697cc,_0x55327b[_0xe3cc('0x11')][_0xe3cc('0x12')]);return _0x5f2bfb(_0x55327b[_0xe3cc('0x11')][_0xe3cc('0x12')]);}else{logger[_0xe3cc('0x14')](_0xe3cc('0x13'),_0x3697cc,_0xe3cc('0xd'));_0x5f2bfb(_0x55327b[_0xe3cc('0x15')][_0xe3cc('0x12')]);}})[_0xe3cc('0x16')](function(_0x4139bc){logger[_0xe3cc('0x11')](_0xe3cc('0x13'),_0x3697cc,_0x4139bc);_0x30f978(_0x4139bc);});});}
\ No newline at end of file
+var _0x446d=['VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0x446d,0x71));var _0xd446=function(_0x24853d,_0x16931f){_0x24853d=_0x24853d-0x0;var _0x4c5cff=_0x446d[_0x24853d];return _0x4c5cff;};'use strict';var _=require(_0xd446('0x0'));var util=require(_0xd446('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd446('0x2'));var fs=require('fs');var Redis=require(_0xd446('0x3'));var db=require(_0xd446('0x4'))['db'];var utils=require(_0xd446('0x5'));var logger=require(_0xd446('0x6'))(_0xd446('0x7'));var config=require(_0xd446('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd446('0x9')][_0xd446('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x346359,_0x4c9de5,_0x28fa3e){return new BPromise(function(_0x4cf8ee,_0x345415){return client[_0xd446('0xb')](_0x346359,_0x28fa3e)['then'](function(_0x296522){logger[_0xd446('0xc')](_0xd446('0xd'),_0x4c9de5,_0xd446('0xe'));logger[_0xd446('0xf')](_0xd446('0x10'),_0x4c9de5,_0xd446('0xe'),JSON['stringify'](_0x296522));if(_0x296522['error']){if(_0x296522[_0xd446('0x11')][_0xd446('0x12')]===0x1f4){logger['error'](_0xd446('0xd'),_0x4c9de5,_0x296522[_0xd446('0x11')][_0xd446('0x13')]);return _0x345415(_0x296522['error'][_0xd446('0x13')]);}logger[_0xd446('0x11')](_0xd446('0xd'),_0x4c9de5,_0x296522[_0xd446('0x11')][_0xd446('0x13')]);return _0x4cf8ee(_0x296522[_0xd446('0x11')]['message']);}else{logger[_0xd446('0xc')](_0xd446('0xd'),_0x4c9de5,_0xd446('0xe'));_0x4cf8ee(_0x296522['result'][_0xd446('0x13')]);}})[_0xd446('0x14')](function(_0x403ae9){logger['error'](_0xd446('0xd'),_0x4c9de5,_0x403ae9);_0x345415(_0x403ae9);});});}
\ No newline at end of file
index d83df26..941bd03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44cd=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','/:id','show','post','create','delete','destroy','multer','util','path'];(function(_0x480b6b,_0x16e1fc){var _0x4c86f1=function(_0xc3d012){while(--_0xc3d012){_0x480b6b['push'](_0x480b6b['shift']());}};_0x4c86f1(++_0x16e1fc);}(_0x44cd,0x107));var _0xd44c=function(_0x59b9d3,_0x384472){_0x59b9d3=_0x59b9d3-0x0;var _0x171163=_0x44cd[_0x59b9d3];return _0x171163;};'use strict';var multer=require(_0xd44c('0x0'));var util=require(_0xd44c('0x1'));var path=require(_0xd44c('0x2'));var timeout=require(_0xd44c('0x3'));var express=require(_0xd44c('0x4'));var router=express[_0xd44c('0x5')]();var fs_extra=require(_0xd44c('0x6'));var auth=require(_0xd44c('0x7'));var interaction=require(_0xd44c('0x8'));var config=require(_0xd44c('0x9'));var controller=require(_0xd44c('0xa'));router[_0xd44c('0xb')]('/',auth[_0xd44c('0xc')](),controller['index']);router[_0xd44c('0xb')](_0xd44c('0xd'),auth['isAuthenticated'](),controller[_0xd44c('0xe')]);router[_0xd44c('0xf')]('/',auth[_0xd44c('0xc')](),controller[_0xd44c('0x10')]);router['put'](_0xd44c('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xd44c('0x11')](_0xd44c('0xd'),auth[_0xd44c('0xc')](),controller[_0xd44c('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xb6f4=['post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','index','/:id','isAuthenticated','show'];(function(_0x1a9e2c,_0x790e8f){var _0x3cbe5e=function(_0x154f9f){while(--_0x154f9f){_0x1a9e2c['push'](_0x1a9e2c['shift']());}};_0x3cbe5e(++_0x790e8f);}(_0xb6f4,0xd9));var _0x4b6f=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xb6f4[_0x1b828b];return _0x98da1a;};'use strict';var multer=require('multer');var util=require(_0x4b6f('0x0'));var path=require(_0x4b6f('0x1'));var timeout=require('connect-timeout');var express=require(_0x4b6f('0x2'));var router=express[_0x4b6f('0x3')]();var fs_extra=require(_0x4b6f('0x4'));var auth=require(_0x4b6f('0x5'));var interaction=require(_0x4b6f('0x6'));var config=require(_0x4b6f('0x7'));var controller=require(_0x4b6f('0x8'));router[_0x4b6f('0x9')]('/',auth['isAuthenticated'](),controller[_0x4b6f('0xa')]);router['get'](_0x4b6f('0xb'),auth[_0x4b6f('0xc')](),controller[_0x4b6f('0xd')]);router[_0x4b6f('0xe')]('/',auth['isAuthenticated'](),controller[_0x4b6f('0xf')]);router[_0x4b6f('0x10')](_0x4b6f('0xb'),auth[_0x4b6f('0xc')](),controller[_0x4b6f('0x11')]);router[_0x4b6f('0x12')]('/:id',auth[_0x4b6f('0xc')](),controller[_0x4b6f('0x13')]);module[_0x4b6f('0x14')]=router;
\ No newline at end of file
index 14f9fb8..b567410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa91e=['BOOLEAN','sequelize','ENUM','variable','customVariable','picklist','string','STRING'];(function(_0x2776b4,_0x581498){var _0x205313=function(_0x2152a4){while(--_0x2152a4){_0x2776b4['push'](_0x2776b4['shift']());}};_0x205313(++_0x581498);}(_0xa91e,0x161));var _0xea91=function(_0x2168ed,_0x268efb){_0x2168ed=_0x2168ed-0x0;var _0x2dedce=_0xa91e[_0x2168ed];return _0x2dedce;};'use strict';var Sequelize=require(_0xea91('0x0'));module['exports']={'type':{'type':Sequelize[_0xea91('0x1')]('string',_0xea91('0x2'),_0xea91('0x3'),'keyValue',_0xea91('0x4')),'defaultValue':_0xea91('0x5')},'content':{'type':Sequelize[_0xea91('0x6')]},'key':{'type':Sequelize[_0xea91('0x6')]},'keyType':{'type':Sequelize[_0xea91('0x1')](_0xea91('0x5'),_0xea91('0x2'),_0xea91('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xea91('0x6')]},'nameField':{'type':Sequelize[_0xea91('0x6')]},'customField':{'type':Sequelize[_0xea91('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xea91('0x6')]}};
\ No newline at end of file
+var _0x6ea6=['string','variable','customVariable','keyValue','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x562d1d,_0x3a7512){var _0x419147=function(_0x496a37){while(--_0x496a37){_0x562d1d['push'](_0x562d1d['shift']());}};_0x419147(++_0x3a7512);}(_0x6ea6,0x6e));var _0x66ea=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x6ea6[_0x29d94e];return _0x106237;};'use strict';var Sequelize=require(_0x66ea('0x0'));module['exports']={'type':{'type':Sequelize[_0x66ea('0x1')](_0x66ea('0x2'),_0x66ea('0x3'),_0x66ea('0x4'),_0x66ea('0x5'),'picklist'),'defaultValue':_0x66ea('0x2')},'content':{'type':Sequelize[_0x66ea('0x6')]},'key':{'type':Sequelize[_0x66ea('0x6')]},'keyType':{'type':Sequelize[_0x66ea('0x1')]('string',_0x66ea('0x3'),_0x66ea('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x66ea('0x6')]},'nameField':{'type':Sequelize[_0x66ea('0x6')]},'customField':{'type':Sequelize[_0x66ea('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x66ea('0x6')]}};
\ No newline at end of file
index 157af9a..b532662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4e5=['send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','catch','show','keys','create','body','find','params','eml-format','rimraf','zip-dir','request-promise','moment','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/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','offset','undefined','limit','count','status','Content-Range','json','then','sendStatus','error','stack','name'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0xe4e5,0x189));var _0x5e4e=function(_0x5da27b,_0x4e073a){_0x5da27b=_0x5da27b-0x0;var _0x3e9317=_0xe4e5[_0x5da27b];return _0x3e9317;};'use strict';var emlformat=require(_0x5e4e('0x0'));var rimraf=require(_0x5e4e('0x1'));var zipdir=require(_0x5e4e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5e4e('0x3'));var moment=require(_0x5e4e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5e4e('0x5'));var util=require(_0x5e4e('0x6'));var path=require('path');var sox=require(_0x5e4e('0x7'));var csv=require('to-csv');var ejs=require(_0x5e4e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5e4e('0x9'));var squel=require(_0x5e4e('0xa'));var crypto=require(_0x5e4e('0xb'));var jsforce=require(_0x5e4e('0xc'));var deskjs=require(_0x5e4e('0xd'));var toCsv=require(_0x5e4e('0xe'));var querystring=require(_0x5e4e('0xf'));var Papa=require(_0x5e4e('0x10'));var Redis=require(_0x5e4e('0x11'));var authService=require(_0x5e4e('0x12'));var qs=require(_0x5e4e('0x13'));var as=require(_0x5e4e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e4e('0x15'))(_0x5e4e('0x16'));var utils=require(_0x5e4e('0x17'));var config=require(_0x5e4e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x5e4e('0x19'))['db'];function respondWithStatusCode(_0x14f949,_0x2f1f3d){_0x2f1f3d=_0x2f1f3d||0xcc;return function(_0x503a4b){if(_0x503a4b){return _0x14f949['sendStatus'](_0x2f1f3d);}return _0x14f949['status'](_0x2f1f3d)[_0x5e4e('0x1a')]();};}function respondWithResult(_0x430eb8,_0x2d7790){_0x2d7790=_0x2d7790||0xc8;return function(_0x126eec){if(_0x126eec){return _0x430eb8['status'](_0x2d7790)['json'](_0x126eec);}};}function respondWithFilteredResult(_0x1e1d9e,_0x33c8c2){return function(_0x186a5b){if(_0x186a5b){var _0x2be685=typeof _0x33c8c2[_0x5e4e('0x1b')]===_0x5e4e('0x1c')&&typeof _0x33c8c2[_0x5e4e('0x1d')]==='undefined';var _0x33dfa0=_0x186a5b[_0x5e4e('0x1e')];var _0x15dea0=_0x2be685?0x0:_0x33c8c2['offset'];var _0x6754f5=_0x2be685?_0x186a5b['count']:_0x33c8c2['offset']+_0x33c8c2['limit'];var _0x100ba5;if(_0x6754f5>=_0x33dfa0){_0x6754f5=_0x33dfa0;_0x100ba5=0xc8;}else{_0x100ba5=0xce;}_0x1e1d9e[_0x5e4e('0x1f')](_0x100ba5);return _0x1e1d9e['set'](_0x5e4e('0x20'),_0x15dea0+'-'+_0x6754f5+'/'+_0x33dfa0)[_0x5e4e('0x21')](_0x186a5b);}return null;};}function patchUpdates(_0x31929d){return function(_0x80f9e3){try{jsonpatch['apply'](_0x80f9e3,_0x31929d,!![]);}catch(_0x59bcee){return BPromise['reject'](_0x59bcee);}return _0x80f9e3['save']();};}function saveUpdates(_0x55a7d0,_0x4ad86f){return function(_0x9def10){if(_0x9def10){return _0x9def10['update'](_0x55a7d0)[_0x5e4e('0x22')](function(_0x245978){return _0x245978;});}return null;};}function removeEntity(_0x1cf93d,_0xea93f5){return function(_0x4f45bb){if(_0x4f45bb){return _0x4f45bb['destroy']()[_0x5e4e('0x22')](function(){_0x1cf93d['status'](0xcc)[_0x5e4e('0x1a')]();});}};}function handleEntityNotFound(_0x10ee7d,_0x17a6eb){return function(_0x56357a){if(!_0x56357a){_0x10ee7d[_0x5e4e('0x23')](0x194);}return _0x56357a;};}function handleError(_0x5ef2d0,_0x105013){_0x105013=_0x105013||0x1f4;return function(_0x2d16b6){logger[_0x5e4e('0x24')](_0x2d16b6[_0x5e4e('0x25')]);if(_0x2d16b6[_0x5e4e('0x26')]){delete _0x2d16b6[_0x5e4e('0x26')];}_0x5ef2d0[_0x5e4e('0x1f')](_0x105013)[_0x5e4e('0x27')](_0x2d16b6);};}exports[_0x5e4e('0x28')]=function(_0x262b89,_0x2260d4){var _0x2e3712={},_0xd5dbdb={},_0x5aacb1={'count':0x0,'rows':[]};var _0x2e2956=_[_0x5e4e('0x29')](db[_0x5e4e('0x2a')][_0x5e4e('0x2b')],function(_0x30629a){return{'name':_0x30629a[_0x5e4e('0x2c')],'type':_0x30629a[_0x5e4e('0x2d')][_0x5e4e('0x2e')]};});_0xd5dbdb[_0x5e4e('0x2f')]=_[_0x5e4e('0x29')](_0x2e2956,_0x5e4e('0x26'));_0xd5dbdb[_0x5e4e('0x30')]=_['keys'](_0x262b89[_0x5e4e('0x30')]);_0xd5dbdb[_0x5e4e('0x31')]=_[_0x5e4e('0x32')](_0xd5dbdb[_0x5e4e('0x2f')],_0xd5dbdb['query']);_0x2e3712['attributes']=_['intersection'](_0xd5dbdb[_0x5e4e('0x2f')],qs[_0x5e4e('0x33')](_0x262b89[_0x5e4e('0x30')]['fields']));_0x2e3712[_0x5e4e('0x34')]=_0x2e3712[_0x5e4e('0x34')][_0x5e4e('0x35')]?_0x2e3712[_0x5e4e('0x34')]:_0xd5dbdb[_0x5e4e('0x2f')];if(!_0x262b89[_0x5e4e('0x30')][_0x5e4e('0x36')](_0x5e4e('0x37'))){_0x2e3712[_0x5e4e('0x1d')]=qs['limit'](_0x262b89[_0x5e4e('0x30')]['limit']);_0x2e3712[_0x5e4e('0x1b')]=qs[_0x5e4e('0x1b')](_0x262b89[_0x5e4e('0x30')]['offset']);}_0x2e3712[_0x5e4e('0x38')]=qs['sort'](_0x262b89[_0x5e4e('0x30')][_0x5e4e('0x39')]);_0x2e3712['where']=qs['filters'](_['pick'](_0x262b89[_0x5e4e('0x30')],_0xd5dbdb['filters']),_0x2e2956);if(_0x262b89[_0x5e4e('0x30')]['filter']){_0x2e3712[_0x5e4e('0x3a')]=_[_0x5e4e('0x3b')](_0x2e3712['where'],{'$or':_['map'](_0x2e2956,function(_0x230016){if(_0x230016[_0x5e4e('0x2d')]!==_0x5e4e('0x3c')){var _0x43d8a9={};_0x43d8a9[_0x230016['name']]={'$like':'%'+_0x262b89[_0x5e4e('0x30')][_0x5e4e('0x3d')]+'%'};return _0x43d8a9;}})});}_0x2e3712=_[_0x5e4e('0x3b')]({},_0x2e3712,_0x262b89[_0x5e4e('0x3e')]);var _0x58e6de={'where':_0x2e3712['where']};return db[_0x5e4e('0x2a')][_0x5e4e('0x1e')](_0x58e6de)[_0x5e4e('0x22')](function(_0x5e8f7c){_0x5aacb1[_0x5e4e('0x1e')]=_0x5e8f7c;if(_0x262b89['query'][_0x5e4e('0x3f')]){_0x2e3712[_0x5e4e('0x40')]=[{'all':!![]}];}return db[_0x5e4e('0x2a')]['findAll'](_0x2e3712);})[_0x5e4e('0x22')](function(_0x24eb1f){_0x5aacb1['rows']=_0x24eb1f;return _0x5aacb1;})['then'](respondWithFilteredResult(_0x2260d4,_0x2e3712))[_0x5e4e('0x41')](handleError(_0x2260d4,null));};exports[_0x5e4e('0x42')]=function(_0x248319,_0x508e9b){var _0x57dbce={'raw':!![],'where':{'id':_0x248319['params']['id']}},_0x3c6eb4={};_0x3c6eb4[_0x5e4e('0x2f')]=_[_0x5e4e('0x43')](db[_0x5e4e('0x2a')]['rawAttributes']);_0x3c6eb4[_0x5e4e('0x30')]=_[_0x5e4e('0x43')](_0x248319[_0x5e4e('0x30')]);_0x3c6eb4['filters']=_[_0x5e4e('0x32')](_0x3c6eb4[_0x5e4e('0x2f')],_0x3c6eb4[_0x5e4e('0x30')]);_0x57dbce[_0x5e4e('0x34')]=_[_0x5e4e('0x32')](_0x3c6eb4[_0x5e4e('0x2f')],qs['fields'](_0x248319[_0x5e4e('0x30')][_0x5e4e('0x33')]));_0x57dbce[_0x5e4e('0x34')]=_0x57dbce[_0x5e4e('0x34')][_0x5e4e('0x35')]?_0x57dbce[_0x5e4e('0x34')]:_0x3c6eb4[_0x5e4e('0x2f')];if(_0x248319[_0x5e4e('0x30')]['includeAll']){_0x57dbce[_0x5e4e('0x40')]=[{'all':!![]}];}_0x57dbce=_[_0x5e4e('0x3b')]({},_0x57dbce,_0x248319['options']);return db[_0x5e4e('0x2a')]['find'](_0x57dbce)[_0x5e4e('0x22')](handleEntityNotFound(_0x508e9b,null))['then'](respondWithResult(_0x508e9b,null))['catch'](handleError(_0x508e9b,null));};exports[_0x5e4e('0x44')]=function(_0x40adc0,_0x4a45c6){return db[_0x5e4e('0x2a')][_0x5e4e('0x44')](_0x40adc0[_0x5e4e('0x45')],{})[_0x5e4e('0x22')](respondWithResult(_0x4a45c6,0xc9))[_0x5e4e('0x41')](handleError(_0x4a45c6,null));};exports['update']=function(_0x41d4d7,_0x8249c4){if(_0x41d4d7[_0x5e4e('0x45')]['id']){delete _0x41d4d7[_0x5e4e('0x45')]['id'];}return db['VtigerField'][_0x5e4e('0x46')]({'where':{'id':_0x41d4d7[_0x5e4e('0x47')]['id']}})[_0x5e4e('0x22')](handleEntityNotFound(_0x8249c4,null))['then'](saveUpdates(_0x41d4d7[_0x5e4e('0x45')],null))[_0x5e4e('0x22')](respondWithResult(_0x8249c4,null))[_0x5e4e('0x41')](handleError(_0x8249c4,null));};exports['destroy']=function(_0x398dcd,_0x4b8b16){return db[_0x5e4e('0x2a')][_0x5e4e('0x46')]({'where':{'id':_0x398dcd[_0x5e4e('0x47')]['id']}})[_0x5e4e('0x22')](handleEntityNotFound(_0x4b8b16,null))[_0x5e4e('0x22')](removeEntity(_0x4b8b16,null))['catch'](handleError(_0x4b8b16,null));};
\ No newline at end of file
+var _0x9378=['rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','VIRTUAL','merge','options','findAll','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','destroy','end','error','stack','name','index','VtigerField'];(function(_0x2bf66e,_0xfb08f0){var _0x10179b=function(_0x2da9cb){while(--_0x2da9cb){_0x2bf66e['push'](_0x2bf66e['shift']());}};_0x10179b(++_0xfb08f0);}(_0x9378,0xa9));var _0x8937=function(_0x483354,_0x139dd1){_0x483354=_0x483354-0x0;var _0x34b5ba=_0x9378[_0x483354];return _0x34b5ba;};'use strict';var emlformat=require(_0x8937('0x0'));var rimraf=require(_0x8937('0x1'));var zipdir=require(_0x8937('0x2'));var jsonpatch=require(_0x8937('0x3'));var rp=require(_0x8937('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8937('0x5'));var util=require(_0x8937('0x6'));var path=require(_0x8937('0x7'));var sox=require(_0x8937('0x8'));var csv=require(_0x8937('0x9'));var ejs=require(_0x8937('0xa'));var fs=require('fs');var fs_extra=require(_0x8937('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8937('0xc'));var jsforce=require(_0x8937('0xd'));var deskjs=require(_0x8937('0xe'));var toCsv=require(_0x8937('0x9'));var querystring=require('querystring');var Papa=require(_0x8937('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8937('0x10'));var as=require(_0x8937('0x11'));var hardwareService=require(_0x8937('0x12'));var logger=require(_0x8937('0x13'))(_0x8937('0x14'));var utils=require(_0x8937('0x15'));var config=require(_0x8937('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8937('0x17'))['db'];function respondWithStatusCode(_0x54ab5c,_0x25c5f5){_0x25c5f5=_0x25c5f5||0xcc;return function(_0x5379bc){if(_0x5379bc){return _0x54ab5c[_0x8937('0x18')](_0x25c5f5);}return _0x54ab5c[_0x8937('0x19')](_0x25c5f5)['end']();};}function respondWithResult(_0x2092d5,_0x5b1508){_0x5b1508=_0x5b1508||0xc8;return function(_0x38a552){if(_0x38a552){return _0x2092d5[_0x8937('0x19')](_0x5b1508)['json'](_0x38a552);}};}function respondWithFilteredResult(_0x400ecc,_0x29351d){return function(_0x211525){if(_0x211525){var _0x4f7dc7=typeof _0x29351d[_0x8937('0x1a')]===_0x8937('0x1b')&&typeof _0x29351d['limit']===_0x8937('0x1b');var _0x21f37d=_0x211525[_0x8937('0x1c')];var _0x5b25b2=_0x4f7dc7?0x0:_0x29351d[_0x8937('0x1a')];var _0x2b4437=_0x4f7dc7?_0x211525['count']:_0x29351d[_0x8937('0x1a')]+_0x29351d[_0x8937('0x1d')];var _0x26ca18;if(_0x2b4437>=_0x21f37d){_0x2b4437=_0x21f37d;_0x26ca18=0xc8;}else{_0x26ca18=0xce;}_0x400ecc[_0x8937('0x19')](_0x26ca18);return _0x400ecc[_0x8937('0x1e')](_0x8937('0x1f'),_0x5b25b2+'-'+_0x2b4437+'/'+_0x21f37d)[_0x8937('0x20')](_0x211525);}return null;};}function patchUpdates(_0xf53efa){return function(_0xe2da4f){try{jsonpatch['apply'](_0xe2da4f,_0xf53efa,!![]);}catch(_0x225019){return BPromise[_0x8937('0x21')](_0x225019);}return _0xe2da4f[_0x8937('0x22')]();};}function saveUpdates(_0x1eefda,_0x47ff9a){return function(_0x19462f){if(_0x19462f){return _0x19462f[_0x8937('0x23')](_0x1eefda)[_0x8937('0x24')](function(_0x24f964){return _0x24f964;});}return null;};}function removeEntity(_0xfe8639,_0x34f7ea){return function(_0xc9078e){if(_0xc9078e){return _0xc9078e[_0x8937('0x25')]()['then'](function(){_0xfe8639[_0x8937('0x19')](0xcc)[_0x8937('0x26')]();});}};}function handleEntityNotFound(_0x552f0b,_0x2a32a6){return function(_0x55572f){if(!_0x55572f){_0x552f0b[_0x8937('0x18')](0x194);}return _0x55572f;};}function handleError(_0x2a579e,_0x455c53){_0x455c53=_0x455c53||0x1f4;return function(_0xf74fb3){logger[_0x8937('0x27')](_0xf74fb3[_0x8937('0x28')]);if(_0xf74fb3[_0x8937('0x29')]){delete _0xf74fb3['name'];}_0x2a579e[_0x8937('0x19')](_0x455c53)['send'](_0xf74fb3);};}exports[_0x8937('0x2a')]=function(_0x506741,_0x6d5710){var _0x23bc99={},_0x20dd6d={},_0x323fac={'count':0x0,'rows':[]};var _0x11848b=_['map'](db[_0x8937('0x2b')][_0x8937('0x2c')],function(_0x1e3b5b){return{'name':_0x1e3b5b[_0x8937('0x2d')],'type':_0x1e3b5b[_0x8937('0x2e')]['key']};});_0x20dd6d[_0x8937('0x2f')]=_[_0x8937('0x30')](_0x11848b,_0x8937('0x29'));_0x20dd6d['query']=_[_0x8937('0x31')](_0x506741[_0x8937('0x32')]);_0x20dd6d[_0x8937('0x33')]=_[_0x8937('0x34')](_0x20dd6d[_0x8937('0x2f')],_0x20dd6d[_0x8937('0x32')]);_0x23bc99['attributes']=_['intersection'](_0x20dd6d[_0x8937('0x2f')],qs[_0x8937('0x35')](_0x506741['query'][_0x8937('0x35')]));_0x23bc99[_0x8937('0x36')]=_0x23bc99[_0x8937('0x36')][_0x8937('0x37')]?_0x23bc99[_0x8937('0x36')]:_0x20dd6d[_0x8937('0x2f')];if(!_0x506741[_0x8937('0x32')]['hasOwnProperty'](_0x8937('0x38'))){_0x23bc99[_0x8937('0x1d')]=qs[_0x8937('0x1d')](_0x506741['query'][_0x8937('0x1d')]);_0x23bc99['offset']=qs[_0x8937('0x1a')](_0x506741['query'][_0x8937('0x1a')]);}_0x23bc99[_0x8937('0x39')]=qs[_0x8937('0x3a')](_0x506741[_0x8937('0x32')][_0x8937('0x3a')]);_0x23bc99[_0x8937('0x3b')]=qs[_0x8937('0x33')](_[_0x8937('0x3c')](_0x506741[_0x8937('0x32')],_0x20dd6d['filters']),_0x11848b);if(_0x506741[_0x8937('0x32')]['filter']){_0x23bc99[_0x8937('0x3b')]=_['merge'](_0x23bc99[_0x8937('0x3b')],{'$or':_[_0x8937('0x30')](_0x11848b,function(_0x3dd49b){if(_0x3dd49b[_0x8937('0x2e')]!==_0x8937('0x3d')){var _0x2602af={};_0x2602af[_0x3dd49b['name']]={'$like':'%'+_0x506741[_0x8937('0x32')]['filter']+'%'};return _0x2602af;}})});}_0x23bc99=_[_0x8937('0x3e')]({},_0x23bc99,_0x506741[_0x8937('0x3f')]);var _0x23e42b={'where':_0x23bc99['where']};return db[_0x8937('0x2b')][_0x8937('0x1c')](_0x23e42b)[_0x8937('0x24')](function(_0x5166b9){_0x323fac[_0x8937('0x1c')]=_0x5166b9;if(_0x506741[_0x8937('0x32')]['includeAll']){_0x23bc99['include']=[{'all':!![]}];}return db[_0x8937('0x2b')][_0x8937('0x40')](_0x23bc99);})[_0x8937('0x24')](function(_0x4438b5){_0x323fac['rows']=_0x4438b5;return _0x323fac;})[_0x8937('0x24')](respondWithFilteredResult(_0x6d5710,_0x23bc99))[_0x8937('0x41')](handleError(_0x6d5710,null));};exports[_0x8937('0x42')]=function(_0x165515,_0x20e545){var _0x14d959={'raw':!![],'where':{'id':_0x165515[_0x8937('0x43')]['id']}},_0x2220d8={};_0x2220d8['model']=_[_0x8937('0x31')](db[_0x8937('0x2b')][_0x8937('0x2c')]);_0x2220d8['query']=_[_0x8937('0x31')](_0x165515['query']);_0x2220d8[_0x8937('0x33')]=_[_0x8937('0x34')](_0x2220d8[_0x8937('0x2f')],_0x2220d8[_0x8937('0x32')]);_0x14d959[_0x8937('0x36')]=_['intersection'](_0x2220d8[_0x8937('0x2f')],qs[_0x8937('0x35')](_0x165515[_0x8937('0x32')][_0x8937('0x35')]));_0x14d959[_0x8937('0x36')]=_0x14d959[_0x8937('0x36')][_0x8937('0x37')]?_0x14d959[_0x8937('0x36')]:_0x2220d8[_0x8937('0x2f')];if(_0x165515[_0x8937('0x32')]['includeAll']){_0x14d959['include']=[{'all':!![]}];}_0x14d959=_[_0x8937('0x3e')]({},_0x14d959,_0x165515[_0x8937('0x3f')]);return db['VtigerField'][_0x8937('0x44')](_0x14d959)[_0x8937('0x24')](handleEntityNotFound(_0x20e545,null))['then'](respondWithResult(_0x20e545,null))[_0x8937('0x41')](handleError(_0x20e545,null));};exports[_0x8937('0x45')]=function(_0x206b7f,_0x1e4810){return db[_0x8937('0x2b')][_0x8937('0x45')](_0x206b7f[_0x8937('0x46')],{})[_0x8937('0x24')](respondWithResult(_0x1e4810,0xc9))['catch'](handleError(_0x1e4810,null));};exports[_0x8937('0x23')]=function(_0x591215,_0x43374f){if(_0x591215[_0x8937('0x46')]['id']){delete _0x591215[_0x8937('0x46')]['id'];}return db[_0x8937('0x2b')][_0x8937('0x44')]({'where':{'id':_0x591215['params']['id']}})[_0x8937('0x24')](handleEntityNotFound(_0x43374f,null))[_0x8937('0x24')](saveUpdates(_0x591215[_0x8937('0x46')],null))[_0x8937('0x24')](respondWithResult(_0x43374f,null))[_0x8937('0x41')](handleError(_0x43374f,null));};exports['destroy']=function(_0x28ecfd,_0x2492ca){return db[_0x8937('0x2b')][_0x8937('0x44')]({'where':{'id':_0x28ecfd[_0x8937('0x43')]['id']}})[_0x8937('0x24')](handleEntityNotFound(_0x2492ca,null))[_0x8937('0x24')](removeEntity(_0x2492ca,null))[_0x8937('0x41')](handleError(_0x2492ca,null));};
\ No newline at end of file
index 741ff69..d1092b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0b4=['VtigerField','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports','define'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe0b4,0xe4));var _0x4e0b=function(_0x3ec87d,_0x55635d){_0x3ec87d=_0x3ec87d-0x0;var _0x444f9a=_0xe0b4[_0x3ec87d];return _0x444f9a;};'use strict';var _=require(_0x4e0b('0x0'));var util=require(_0x4e0b('0x1'));var logger=require(_0x4e0b('0x2'))('api');var moment=require(_0x4e0b('0x3'));var BPromise=require(_0x4e0b('0x4'));var rp=require(_0x4e0b('0x5'));var fs=require('fs');var path=require(_0x4e0b('0x6'));var rimraf=require(_0x4e0b('0x7'));var config=require(_0x4e0b('0x8'));var attributes=require(_0x4e0b('0x9'));module[_0x4e0b('0xa')]=function(_0x5c5804,_0x4e459c){return _0x5c5804[_0x4e0b('0xb')](_0x4e0b('0xc'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x4e0b('0xd'),'fields':[_0x4e0b('0xe'),_0x4e0b('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3540=['VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','rimraf','./intVtigerField.attributes','exports','define'];(function(_0x1261ac,_0x357a74){var _0x363168=function(_0x45c05c){while(--_0x45c05c){_0x1261ac['push'](_0x1261ac['shift']());}};_0x363168(++_0x357a74);}(_0x3540,0x1d6));var _0x0354=function(_0x125a8a,_0x490d31){_0x125a8a=_0x125a8a-0x0;var _0xe767a5=_0x3540[_0x125a8a];return _0xe767a5;};'use strict';var _=require(_0x0354('0x0'));var util=require(_0x0354('0x1'));var logger=require(_0x0354('0x2'))(_0x0354('0x3'));var moment=require(_0x0354('0x4'));var BPromise=require(_0x0354('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0354('0x6'));var config=require('../../config/environment');var attributes=require(_0x0354('0x7'));module[_0x0354('0x8')]=function(_0x58654c,_0x40bad3){return _0x58654c[_0x0354('0x9')](_0x0354('0xa'),attributes,{'tableName':_0x0354('0xb'),'paranoid':![],'indexes':[{'name':_0x0354('0xc'),'fields':[_0x0354('0xd'),_0x0354('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5c4df0d..474c449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4084=['catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','VtigerField,\x20%s,\x20%s','request\x20sent','VtigerField,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x4084,0x1e1));var _0x4408=function(_0x390dbf,_0x323351){_0x390dbf=_0x390dbf-0x0;var _0x2ae552=_0x4084[_0x390dbf];return _0x2ae552;};'use strict';var _=require('lodash');var util=require(_0x4408('0x0'));var moment=require(_0x4408('0x1'));var BPromise=require('bluebird');var rs=require(_0x4408('0x2'));var fs=require('fs');var Redis=require(_0x4408('0x3'));var db=require(_0x4408('0x4'))['db'];var utils=require(_0x4408('0x5'));var logger=require(_0x4408('0x6'))(_0x4408('0x7'));var config=require(_0x4408('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4408('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1221c2,_0x9b4422,_0x39fae2){return new BPromise(function(_0x9bcc29,_0x40c364){return client[_0x4408('0xa')](_0x1221c2,_0x39fae2)['then'](function(_0x398203){logger[_0x4408('0xb')](_0x4408('0xc'),_0x9b4422,_0x4408('0xd'));logger['debug'](_0x4408('0xe'),_0x9b4422,_0x4408('0xd'),JSON['stringify'](_0x398203));if(_0x398203[_0x4408('0xf')]){if(_0x398203['error'][_0x4408('0x10')]===0x1f4){logger[_0x4408('0xf')](_0x4408('0xc'),_0x9b4422,_0x398203[_0x4408('0xf')]['message']);return _0x40c364(_0x398203[_0x4408('0xf')]['message']);}logger[_0x4408('0xf')](_0x4408('0xc'),_0x9b4422,_0x398203['error'][_0x4408('0x11')]);return _0x9bcc29(_0x398203[_0x4408('0xf')][_0x4408('0x11')]);}else{logger[_0x4408('0xb')](_0x4408('0xc'),_0x9b4422,_0x4408('0xd'));_0x9bcc29(_0x398203[_0x4408('0x12')][_0x4408('0x11')]);}})[_0x4408('0x13')](function(_0x1797ad){logger[_0x4408('0xf')](_0x4408('0xc'),_0x9b4422,_0x1797ad);_0x40c364(_0x1797ad);});});}
\ No newline at end of file
+var _0xa052=['info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1e3c04,_0x25efd9){var _0x230ba9=function(_0x54212e){while(--_0x54212e){_0x1e3c04['push'](_0x1e3c04['shift']());}};_0x230ba9(++_0x25efd9);}(_0xa052,0x99));var _0x2a05=function(_0x54e085,_0x2e1b67){_0x54e085=_0x54e085-0x0;var _0x5d262c=_0xa052[_0x54e085];return _0x5d262c;};'use strict';var _=require(_0x2a05('0x0'));var util=require(_0x2a05('0x1'));var moment=require(_0x2a05('0x2'));var BPromise=require('bluebird');var rs=require(_0x2a05('0x3'));var fs=require('fs');var Redis=require(_0x2a05('0x4'));var db=require(_0x2a05('0x5'))['db'];var utils=require(_0x2a05('0x6'));var logger=require(_0x2a05('0x7'))(_0x2a05('0x8'));var config=require(_0x2a05('0x9'));var jayson=require(_0x2a05('0xa'));var client=jayson[_0x2a05('0xb')][_0x2a05('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3db819,_0xbafe7e,_0x5562cd){return new BPromise(function(_0x156d30,_0x270f43){return client[_0x2a05('0xd')](_0x3db819,_0x5562cd)['then'](function(_0x4759f3){logger['info'](_0x2a05('0xe'),_0xbafe7e,_0x2a05('0xf'));logger[_0x2a05('0x10')](_0x2a05('0x11'),_0xbafe7e,_0x2a05('0xf'),JSON[_0x2a05('0x12')](_0x4759f3));if(_0x4759f3['error']){if(_0x4759f3[_0x2a05('0x13')][_0x2a05('0x14')]===0x1f4){logger['error'](_0x2a05('0xe'),_0xbafe7e,_0x4759f3[_0x2a05('0x13')][_0x2a05('0x15')]);return _0x270f43(_0x4759f3[_0x2a05('0x13')][_0x2a05('0x15')]);}logger[_0x2a05('0x13')](_0x2a05('0xe'),_0xbafe7e,_0x4759f3[_0x2a05('0x13')][_0x2a05('0x15')]);return _0x156d30(_0x4759f3[_0x2a05('0x13')][_0x2a05('0x15')]);}else{logger[_0x2a05('0x16')](_0x2a05('0xe'),_0xbafe7e,_0x2a05('0xf'));_0x156d30(_0x4759f3[_0x2a05('0x17')][_0x2a05('0x15')]);}})[_0x2a05('0x18')](function(_0xa9c86d){logger[_0x2a05('0x13')](_0x2a05('0xe'),_0xbafe7e,_0xa9c86d);_0x270f43(_0xa9c86d);});});}
\ No newline at end of file
index 6837450..f23dd75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1342=['getFields','create','addConfiguration','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','index','/:id','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields'];(function(_0x12724c,_0x21b628){var _0xd51227=function(_0x390a1c){while(--_0x390a1c){_0x12724c['push'](_0x12724c['shift']());}};_0xd51227(++_0x21b628);}(_0x1342,0xdf));var _0x2134=function(_0x24597b,_0x2f57d6){_0x24597b=_0x24597b-0x0;var _0x2706e8=_0x1342[_0x24597b];return _0x2706e8;};'use strict';var multer=require('multer');var util=require(_0x2134('0x0'));var path=require(_0x2134('0x1'));var timeout=require(_0x2134('0x2'));var express=require(_0x2134('0x3'));var router=express[_0x2134('0x4')]();var fs_extra=require(_0x2134('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2134('0x6'));var config=require(_0x2134('0x7'));var controller=require(_0x2134('0x8'));router[_0x2134('0x9')]('/',auth['isAuthenticated'](),controller[_0x2134('0xa')]);router['get'](_0x2134('0xb'),auth['isAuthenticated'](),controller[_0x2134('0xc')]);router[_0x2134('0x9')](_0x2134('0xd'),auth[_0x2134('0xe')](),controller[_0x2134('0xf')]);router[_0x2134('0x9')](_0x2134('0x10'),auth['isAuthenticated'](),controller[_0x2134('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2134('0x12')]);router['post'](_0x2134('0xd'),auth['isAuthenticated'](),controller[_0x2134('0x13')]);router[_0x2134('0x14')]('/:id',auth[_0x2134('0xe')](),controller[_0x2134('0x15')]);router[_0x2134('0x16')](_0x2134('0xb'),auth[_0x2134('0xe')](),controller[_0x2134('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x7ee1=['post','create','put','/:id','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','index','isAuthenticated','/:id/configurations'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0x7ee1,0x8d));var _0x17ee=function(_0x63b888,_0x5a7464){_0x63b888=_0x63b888-0x0;var _0x47c897=_0x7ee1[_0x63b888];return _0x47c897;};'use strict';var multer=require(_0x17ee('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x17ee('0x1'));var router=express[_0x17ee('0x2')]();var fs_extra=require(_0x17ee('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x17ee('0x4'));var config=require(_0x17ee('0x5'));var controller=require(_0x17ee('0x6'));router[_0x17ee('0x7')]('/',auth['isAuthenticated'](),controller[_0x17ee('0x8')]);router[_0x17ee('0x7')]('/:id',auth[_0x17ee('0x9')](),controller['show']);router[_0x17ee('0x7')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0x17ee('0x9')](),controller['getFields']);router[_0x17ee('0xb')]('/',auth[_0x17ee('0x9')](),controller[_0x17ee('0xc')]);router[_0x17ee('0xb')]('/:id/configurations',auth[_0x17ee('0x9')](),controller['addConfiguration']);router[_0x17ee('0xd')](_0x17ee('0xe'),auth[_0x17ee('0x9')](),controller[_0x17ee('0xf')]);router[_0x17ee('0x10')](_0x17ee('0xe'),auth[_0x17ee('0x9')](),controller[_0x17ee('0x11')]);module[_0x17ee('0x12')]=router;
\ No newline at end of file
index e4b9c25..f00f545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d91=['newTab','sequelize','exports','STRING','username','remoteUri','ENUM','password','integrationTab'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x0d91,0x76));var _0x10d9=function(_0x27a9cc,_0x1b1b55){_0x27a9cc=_0x27a9cc-0x0;var _0x412f06=_0x0d91[_0x27a9cc];return _0x412f06;};'use strict';var Sequelize=require(_0x10d9('0x0'));module[_0x10d9('0x1')]={'name':{'type':Sequelize[_0x10d9('0x2')]},'description':{'type':Sequelize[_0x10d9('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x10d9('0x3')},'password':{'type':Sequelize[_0x10d9('0x2')]},'token':{'type':Sequelize[_0x10d9('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x10d9('0x4')},'authType':{'type':Sequelize[_0x10d9('0x5')](_0x10d9('0x6'),'token'),'defaultValue':_0x10d9('0x6')},'serverUrl':{'type':Sequelize[_0x10d9('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x10d9('0x5')](_0x10d9('0x7'),_0x10d9('0x8')),'defaultValue':_0x10d9('0x7')}};
\ No newline at end of file
+var _0xe2bc=['username','ENUM','password','token','integrationTab','newTab','sequelize','STRING'];(function(_0x5beed7,_0x169e03){var _0x51deb2=function(_0x20e948){while(--_0x20e948){_0x5beed7['push'](_0x5beed7['shift']());}};_0x51deb2(++_0x169e03);}(_0xe2bc,0x1a6));var _0xce2b=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0xe2bc[_0x56916d];return _0x2b7f1f;};'use strict';var Sequelize=require(_0xce2b('0x0'));module['exports']={'name':{'type':Sequelize[_0xce2b('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xce2b('0x1')],'unique':_0xce2b('0x2')},'password':{'type':Sequelize[_0xce2b('0x1')]},'token':{'type':Sequelize[_0xce2b('0x1')]},'remoteUri':{'type':Sequelize[_0xce2b('0x1')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0xce2b('0x3')](_0xce2b('0x4'),_0xce2b('0x5')),'defaultValue':_0xce2b('0x4')},'serverUrl':{'type':Sequelize[_0xce2b('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xce2b('0x6'),_0xce2b('0x7')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index acbfa52..95a68b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a3=['save','update','then','error','stack','name','send','index','map','ZendeskAccount','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','destroy','getConfigurations','ZendeskConfiguration','addConfiguration','Subjects','getSubjects','Descriptions','ZendeskField','getFields','username','password','token','remoteUri','slice','substring','GET','format','%s/%s','ticket_fields','authType','headers','Basic\x20%s','%s:%s','toString','base64','%s/token:%s','Sequelize','Unknown\x20authentication\x20type','subject','description','assignee','remove','includes','position','title','custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x44a3,0x1a9));var _0x344a=function(_0x562ec5,_0x36b5a4){_0x562ec5=_0x562ec5-0x0;var _0x279c8c=_0x44a3[_0x562ec5];return _0x279c8c;};'use strict';var emlformat=require(_0x344a('0x0'));var rimraf=require(_0x344a('0x1'));var zipdir=require(_0x344a('0x2'));var jsonpatch=require(_0x344a('0x3'));var rp=require(_0x344a('0x4'));var moment=require(_0x344a('0x5'));var BPromise=require(_0x344a('0x6'));var Mustache=require(_0x344a('0x7'));var util=require('util');var path=require(_0x344a('0x8'));var sox=require(_0x344a('0x9'));var csv=require(_0x344a('0xa'));var ejs=require(_0x344a('0xb'));var fs=require('fs');var fs_extra=require(_0x344a('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x344a('0xd'));var toCsv=require(_0x344a('0xa'));var querystring=require(_0x344a('0xe'));var Papa=require(_0x344a('0xf'));var Redis=require(_0x344a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x344a('0x11'));var as=require(_0x344a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x344a('0x13'))('api');var utils=require(_0x344a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x344a('0x15'));var db=require(_0x344a('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4a69ea,_0x304b70){_0x304b70=_0x304b70||0xcc;return function(_0x2ad7eb){if(_0x2ad7eb){return _0x4a69ea[_0x344a('0x17')](_0x304b70);}return _0x4a69ea[_0x344a('0x18')](_0x304b70)[_0x344a('0x19')]();};}function respondWithResult(_0x133ad4,_0x4ee562){_0x4ee562=_0x4ee562||0xc8;return function(_0x4032d7){if(_0x4032d7){return _0x133ad4[_0x344a('0x18')](_0x4ee562)[_0x344a('0x1a')](_0x4032d7);}};}function respondWithFilteredResult(_0x6e1639,_0x58c8cd){return function(_0x54a643){if(_0x54a643){var _0x3609ce=typeof _0x58c8cd[_0x344a('0x1b')]===_0x344a('0x1c')&&typeof _0x58c8cd[_0x344a('0x1d')]==='undefined';var _0x397de6=_0x54a643[_0x344a('0x1e')];var _0x49b55f=_0x3609ce?0x0:_0x58c8cd[_0x344a('0x1b')];var _0x274016=_0x3609ce?_0x54a643[_0x344a('0x1e')]:_0x58c8cd[_0x344a('0x1b')]+_0x58c8cd[_0x344a('0x1d')];var _0x43fa0f;if(_0x274016>=_0x397de6){_0x274016=_0x397de6;_0x43fa0f=0xc8;}else{_0x43fa0f=0xce;}_0x6e1639[_0x344a('0x18')](_0x43fa0f);return _0x6e1639[_0x344a('0x1f')](_0x344a('0x20'),_0x49b55f+'-'+_0x274016+'/'+_0x397de6)[_0x344a('0x1a')](_0x54a643);}return null;};}function patchUpdates(_0x4b3552){return function(_0x16c0fe){try{jsonpatch[_0x344a('0x21')](_0x16c0fe,_0x4b3552,!![]);}catch(_0xe0bdd4){return BPromise[_0x344a('0x22')](_0xe0bdd4);}return _0x16c0fe[_0x344a('0x23')]();};}function saveUpdates(_0x80ae12,_0x185303){return function(_0x976bcf){if(_0x976bcf){return _0x976bcf[_0x344a('0x24')](_0x80ae12)[_0x344a('0x25')](function(_0x90070c){return _0x90070c;});}return null;};}function removeEntity(_0x3b2ab9,_0x5ce9da){return function(_0x266fce){if(_0x266fce){return _0x266fce['destroy']()[_0x344a('0x25')](function(){_0x3b2ab9['status'](0xcc)[_0x344a('0x19')]();});}};}function handleEntityNotFound(_0x484f97,_0x36c920){return function(_0x8bf0b0){if(!_0x8bf0b0){_0x484f97[_0x344a('0x17')](0x194);}return _0x8bf0b0;};}function handleError(_0x16d404,_0x26f059){_0x26f059=_0x26f059||0x1f4;return function(_0x28749b){logger[_0x344a('0x26')](_0x28749b[_0x344a('0x27')]);if(_0x28749b['name']){delete _0x28749b[_0x344a('0x28')];}_0x16d404[_0x344a('0x18')](_0x26f059)[_0x344a('0x29')](_0x28749b);};}exports[_0x344a('0x2a')]=function(_0x14bd54,_0x2d72c9){var _0x5b877d={},_0x3d25fe={},_0x49bbf8={'count':0x0,'rows':[]};var _0x593cf6=_[_0x344a('0x2b')](db[_0x344a('0x2c')][_0x344a('0x2d')],function(_0x4803db){return{'name':_0x4803db['fieldName'],'type':_0x4803db['type'][_0x344a('0x2e')]};});_0x3d25fe[_0x344a('0x2f')]=_[_0x344a('0x2b')](_0x593cf6,'name');_0x3d25fe[_0x344a('0x30')]=_[_0x344a('0x31')](_0x14bd54[_0x344a('0x30')]);_0x3d25fe[_0x344a('0x32')]=_[_0x344a('0x33')](_0x3d25fe[_0x344a('0x2f')],_0x3d25fe[_0x344a('0x30')]);_0x5b877d['attributes']=_[_0x344a('0x33')](_0x3d25fe['model'],qs['fields'](_0x14bd54['query'][_0x344a('0x34')]));_0x5b877d[_0x344a('0x35')]=_0x5b877d[_0x344a('0x35')][_0x344a('0x36')]?_0x5b877d[_0x344a('0x35')]:_0x3d25fe[_0x344a('0x2f')];if(!_0x14bd54['query'][_0x344a('0x37')](_0x344a('0x38'))){_0x5b877d[_0x344a('0x1d')]=qs['limit'](_0x14bd54[_0x344a('0x30')][_0x344a('0x1d')]);_0x5b877d[_0x344a('0x1b')]=qs[_0x344a('0x1b')](_0x14bd54[_0x344a('0x30')]['offset']);}_0x5b877d[_0x344a('0x39')]=qs[_0x344a('0x3a')](_0x14bd54[_0x344a('0x30')][_0x344a('0x3a')]);_0x5b877d[_0x344a('0x3b')]=qs['filters'](_[_0x344a('0x3c')](_0x14bd54[_0x344a('0x30')],_0x3d25fe[_0x344a('0x32')]),_0x593cf6);if(_0x14bd54[_0x344a('0x30')][_0x344a('0x3d')]){_0x5b877d['where']=_[_0x344a('0x3e')](_0x5b877d[_0x344a('0x3b')],{'$or':_[_0x344a('0x2b')](_0x593cf6,function(_0x3356fb){if(_0x3356fb[_0x344a('0x3f')]!==_0x344a('0x40')){var _0x335a0a={};_0x335a0a[_0x3356fb[_0x344a('0x28')]]={'$like':'%'+_0x14bd54['query'][_0x344a('0x3d')]+'%'};return _0x335a0a;}})});}_0x5b877d=_[_0x344a('0x3e')]({},_0x5b877d,_0x14bd54[_0x344a('0x41')]);var _0x28bad9={'where':_0x5b877d[_0x344a('0x3b')]};return db['ZendeskAccount'][_0x344a('0x1e')](_0x28bad9)[_0x344a('0x25')](function(_0x7a33d7){_0x49bbf8[_0x344a('0x1e')]=_0x7a33d7;if(_0x14bd54[_0x344a('0x30')][_0x344a('0x42')]){_0x5b877d[_0x344a('0x43')]=[{'all':!![]}];}return db[_0x344a('0x2c')][_0x344a('0x44')](_0x5b877d);})['then'](function(_0x115a9c){_0x49bbf8[_0x344a('0x45')]=_0x115a9c;return _0x49bbf8;})[_0x344a('0x25')](respondWithFilteredResult(_0x2d72c9,_0x5b877d))[_0x344a('0x46')](handleError(_0x2d72c9,null));};exports['show']=function(_0x32bfa6,_0x3069ca){var _0x2b0ee9={'raw':![],'where':{'id':_0x32bfa6[_0x344a('0x47')]['id']}},_0x41f25b={};_0x41f25b[_0x344a('0x2f')]=_[_0x344a('0x31')](db[_0x344a('0x2c')][_0x344a('0x2d')]);_0x41f25b[_0x344a('0x30')]=_[_0x344a('0x31')](_0x32bfa6['query']);_0x41f25b[_0x344a('0x32')]=_[_0x344a('0x33')](_0x41f25b['model'],_0x41f25b[_0x344a('0x30')]);_0x2b0ee9[_0x344a('0x35')]=_['intersection'](_0x41f25b[_0x344a('0x2f')],qs[_0x344a('0x34')](_0x32bfa6['query'][_0x344a('0x34')]));_0x2b0ee9[_0x344a('0x35')]=_0x2b0ee9[_0x344a('0x35')]['length']?_0x2b0ee9[_0x344a('0x35')]:_0x41f25b['model'];if(_0x32bfa6[_0x344a('0x30')][_0x344a('0x42')]){_0x2b0ee9[_0x344a('0x43')]=[{'all':!![]}];}_0x2b0ee9=_[_0x344a('0x3e')]({},_0x2b0ee9,_0x32bfa6['options']);return db['ZendeskAccount'][_0x344a('0x48')](_0x2b0ee9)[_0x344a('0x25')](handleEntityNotFound(_0x3069ca,null))[_0x344a('0x25')](respondWithResult(_0x3069ca,null))[_0x344a('0x46')](handleError(_0x3069ca,null));};exports[_0x344a('0x49')]=function(_0xa3c8f0,_0x44962b){return db[_0x344a('0x2c')][_0x344a('0x49')](_0xa3c8f0[_0x344a('0x4a')],{})['then'](respondWithResult(_0x44962b,0xc9))[_0x344a('0x46')](handleError(_0x44962b,null));};exports[_0x344a('0x24')]=function(_0x6fad37,_0xbad7ca){if(_0x6fad37['body']['id']){delete _0x6fad37[_0x344a('0x4a')]['id'];}return db['ZendeskAccount']['find']({'where':{'id':_0x6fad37[_0x344a('0x47')]['id']}})[_0x344a('0x25')](handleEntityNotFound(_0xbad7ca,null))['then'](saveUpdates(_0x6fad37[_0x344a('0x4a')],null))[_0x344a('0x25')](respondWithResult(_0xbad7ca,null))[_0x344a('0x46')](handleError(_0xbad7ca,null));};exports[_0x344a('0x4b')]=function(_0x51e411,_0x225fce){return db[_0x344a('0x2c')][_0x344a('0x48')]({'where':{'id':_0x51e411[_0x344a('0x47')]['id']}})[_0x344a('0x25')](handleEntityNotFound(_0x225fce,null))[_0x344a('0x25')](removeEntity(_0x225fce,null))[_0x344a('0x46')](handleError(_0x225fce,null));};exports[_0x344a('0x4c')]=function(_0x292357,_0x1911d0,_0x5e0885){var _0x15928a={};var _0x47ce9c={};var _0x1b7f6c;var _0xb744c6;return db[_0x344a('0x2c')]['findOne']({'where':{'id':_0x292357[_0x344a('0x47')]['id']}})[_0x344a('0x25')](handleEntityNotFound(_0x1911d0,null))[_0x344a('0x25')](function(_0x14921e){if(_0x14921e){_0x1b7f6c=_0x14921e;_0x47ce9c[_0x344a('0x2f')]=_[_0x344a('0x31')](db[_0x344a('0x4d')][_0x344a('0x2d')]);_0x47ce9c[_0x344a('0x30')]=_['keys'](_0x292357[_0x344a('0x30')]);_0x47ce9c[_0x344a('0x32')]=_[_0x344a('0x33')](_0x47ce9c[_0x344a('0x2f')],_0x47ce9c[_0x344a('0x30')]);_0x15928a['attributes']=_[_0x344a('0x33')](_0x47ce9c[_0x344a('0x2f')],qs[_0x344a('0x34')](_0x292357[_0x344a('0x30')]['fields']));_0x15928a[_0x344a('0x35')]=_0x15928a[_0x344a('0x35')]['length']?_0x15928a[_0x344a('0x35')]:_0x47ce9c[_0x344a('0x2f')];_0x15928a[_0x344a('0x39')]=qs[_0x344a('0x3a')](_0x292357[_0x344a('0x30')][_0x344a('0x3a')]);_0x15928a[_0x344a('0x3b')]=qs['filters'](_['pick'](_0x292357['query'],_0x47ce9c[_0x344a('0x32')]));if(_0x292357[_0x344a('0x30')][_0x344a('0x3d')]){_0x15928a[_0x344a('0x3b')]=_['merge'](_0x15928a[_0x344a('0x3b')],{'$or':_['map'](_0x15928a['attributes'],function(_0x57241e){var _0x56b562={};_0x56b562[_0x57241e]={'$like':'%'+_0x292357[_0x344a('0x30')][_0x344a('0x3d')]+'%'};return _0x56b562;})});}_0x15928a=_[_0x344a('0x3e')]({},_0x15928a,_0x292357[_0x344a('0x41')]);return _0x1b7f6c['getConfigurations'](_0x15928a);}})['then'](function(_0x56e76e){if(_0x56e76e){_0xb744c6=_0x56e76e[_0x344a('0x36')];if(!_0x292357[_0x344a('0x30')][_0x344a('0x37')](_0x344a('0x38'))){_0x15928a[_0x344a('0x1d')]=qs['limit'](_0x292357[_0x344a('0x30')][_0x344a('0x1d')]);_0x15928a[_0x344a('0x1b')]=qs['offset'](_0x292357[_0x344a('0x30')]['offset']);}return _0x1b7f6c['getConfigurations'](_0x15928a);}})[_0x344a('0x25')](function(_0x532bcf){if(_0x532bcf){return _0x532bcf?{'count':_0xb744c6,'rows':_0x532bcf}:null;}})['then'](respondWithResult(_0x1911d0,null))[_0x344a('0x46')](handleError(_0x1911d0,null));};exports[_0x344a('0x4e')]=function(_0x4f2e35,_0x1bf894,_0x5808f2){if(_0x4f2e35[_0x344a('0x4a')]['id']){delete _0x4f2e35[_0x344a('0x4a')]['id'];}return db[_0x344a('0x2c')]['findOne']({'where':{'id':_0x4f2e35['params']['id']}})[_0x344a('0x25')](handleEntityNotFound(_0x1bf894,null))[_0x344a('0x25')](function(_0xb4ddd7){if(_0xb4ddd7){_0x4f2e35[_0x344a('0x4a')]['AccountId']=_0xb4ddd7['id'];_0x4f2e35['body'][_0x344a('0x4f')]=integrations[_0x344a('0x50')](_0x4f2e35[_0x344a('0x4a')]['channel'],_0x4f2e35[_0x344a('0x4a')][_0x344a('0x3f')]);_0x4f2e35['body'][_0x344a('0x51')]=integrations['getDescriptions'](_0x4f2e35[_0x344a('0x4a')]['channel'],_0x4f2e35['body']['type']);return db[_0x344a('0x4d')][_0x344a('0x49')](_0x4f2e35[_0x344a('0x4a')],{'include':[{'model':db[_0x344a('0x52')],'as':_0x344a('0x4f')},{'model':db[_0x344a('0x52')],'as':'Descriptions'}]});}return null;})[_0x344a('0x25')](respondWithResult(_0x1bf894,null))[_0x344a('0x46')](handleError(_0x1bf894,null));};exports[_0x344a('0x53')]=function(_0x1c4284,_0x26688e,_0x523774){var _0x23a761='';return db[_0x344a('0x2c')]['findOne']({'where':{'id':_0x1c4284[_0x344a('0x47')]['id']},'attributes':['id',_0x344a('0x54'),_0x344a('0x55'),_0x344a('0x56'),'authType',_0x344a('0x57')]})[_0x344a('0x25')](handleEntityNotFound(_0x26688e,null))[_0x344a('0x25')](function(_0x42e1c0){if(_0x42e1c0){_0x23a761=_0x42e1c0[_0x344a('0x57')];var _0x421a09=_0x23a761[_0x344a('0x58')](-0x1);if(_0x421a09==='/'){_0x23a761=_0x23a761[_0x344a('0x59')](0x0,_0x23a761['lastIndexOf'](_0x421a09));}var _0x33113e={'method':_0x344a('0x5a'),'uri':util[_0x344a('0x5b')](_0x344a('0x5c'),_0x23a761,_0x344a('0x5d')),'json':!![]};switch(_0x42e1c0[_0x344a('0x5e')]){case _0x344a('0x55'):_0x33113e[_0x344a('0x5f')]={'Authorization':util['format'](_0x344a('0x60'),new Buffer(util[_0x344a('0x5b')](_0x344a('0x61'),_0x42e1c0[_0x344a('0x54')],_0x42e1c0['password']))[_0x344a('0x62')](_0x344a('0x63')))};break;case _0x344a('0x56'):_0x33113e[_0x344a('0x5f')]={'Authorization':util[_0x344a('0x5b')](_0x344a('0x60'),new Buffer(util[_0x344a('0x5b')](_0x344a('0x64'),_0x42e1c0['username'],_0x42e1c0[_0x344a('0x56')]))[_0x344a('0x62')](_0x344a('0x63')))};break;default:throw new db[(_0x344a('0x65'))]['ValidationError'](_0x344a('0x66'));}return rp(_0x33113e);}})[_0x344a('0x25')](function(_0x1d0025){if(_0x1d0025){var _0x2ff11d=[_0x344a('0x67'),_0x344a('0x68'),'group',_0x344a('0x69')];_[_0x344a('0x6a')](_0x1d0025[_0x344a('0x5d')],function(_0x5584d5){return _0x2ff11d[_0x344a('0x6b')](_0x5584d5[_0x344a('0x3f')]);});return{'count':_0x1d0025[_0x344a('0x5d')][_0x344a('0x36')],'rows':_[_0x344a('0x2b')](_0x1d0025['ticket_fields'],function(_0x15aadb){return{'id':_0x15aadb['id'],'name':_0x15aadb[_0x344a('0x6c')]>0x7?_0x15aadb[_0x344a('0x6d')]:_0x15aadb['type'],'custom':_0x15aadb[_0x344a('0x6c')]>0x7?!![]:![],'options':_0x15aadb['system_field_options']?_0x15aadb['system_field_options']:_0x15aadb[_0x344a('0x6e')]?_0x15aadb[_0x344a('0x6e')]:[]};})};}})[_0x344a('0x25')](respondWithResult(_0x26688e,null))[_0x344a('0x46')](function(_0x375c34){var _0x5e8df4=_0x1c4284[_0x344a('0x30')][_0x344a('0x6f')]?0x1f4:_0x375c34['statusCode']||0x1f4;logger[_0x344a('0x26')](_0x344a('0x70'),'getFields',_0x5e8df4,JSON['stringify'](_0x375c34));delete _0x375c34[_0x344a('0x28')];if(_0x5e8df4===0x191){_0x5e8df4=0x190;}_0x26688e[_0x344a('0x18')](_0x5e8df4)[_0x344a('0x29')](_0x1c4284[_0x344a('0x30')]['test']?{'message':_0x344a('0x71'),'statusCode':_0x375c34[_0x344a('0x72')]}:_0x375c34);});};
\ No newline at end of file
+var _0x1d2d=['position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','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','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','save','update','then','destroy','error','stack','send','index','ZendeskAccount','rawAttributes','type','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','order','sort','where','merge','filter','options','findAll','catch','includeAll','find','create','body','params','getConfigurations','ZendeskConfiguration','hasOwnProperty','findOne','AccountId','Subjects','getSubjects','channel','ZendeskField','Descriptions','username','token','substring','lastIndexOf','GET','format','%s/%s','authType','password','headers','Basic\x20%s','%s:%s','toString','%s/token:%s','base64','Sequelize','subject','description','group','assignee','ticket_fields','includes'];(function(_0x788fd3,_0x3def7c){var _0x3cb706=function(_0x3306a9){while(--_0x3306a9){_0x788fd3['push'](_0x788fd3['shift']());}};_0x3cb706(++_0x3def7c);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x4536e3,_0xbe4d32){_0x4536e3=_0x4536e3-0x0;var _0x3e59bd=_0x1d2d[_0x4536e3];return _0x3e59bd;};'use strict';var emlformat=require(_0xd1d2('0x0'));var rimraf=require(_0xd1d2('0x1'));var zipdir=require(_0xd1d2('0x2'));var jsonpatch=require(_0xd1d2('0x3'));var rp=require(_0xd1d2('0x4'));var moment=require('moment');var BPromise=require(_0xd1d2('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd1d2('0x6'));var sox=require(_0xd1d2('0x7'));var csv=require(_0xd1d2('0x8'));var ejs=require(_0xd1d2('0x9'));var fs=require('fs');var fs_extra=require(_0xd1d2('0xa'));var _=require(_0xd1d2('0xb'));var squel=require('squel');var crypto=require(_0xd1d2('0xc'));var jsforce=require(_0xd1d2('0xd'));var deskjs=require(_0xd1d2('0xe'));var toCsv=require(_0xd1d2('0x8'));var querystring=require(_0xd1d2('0xf'));var Papa=require(_0xd1d2('0x10'));var Redis=require(_0xd1d2('0x11'));var authService=require(_0xd1d2('0x12'));var qs=require(_0xd1d2('0x13'));var as=require(_0xd1d2('0x14'));var hardwareService=require(_0xd1d2('0x15'));var logger=require(_0xd1d2('0x16'))(_0xd1d2('0x17'));var utils=require('../../config/utils');var config=require(_0xd1d2('0x18'));var licenseUtil=require(_0xd1d2('0x19'));var db=require(_0xd1d2('0x1a'))['db'];var integrations=require(_0xd1d2('0x1b'));function respondWithStatusCode(_0x129d8f,_0xc3ee82){_0xc3ee82=_0xc3ee82||0xcc;return function(_0x2df8a5){if(_0x2df8a5){return _0x129d8f[_0xd1d2('0x1c')](_0xc3ee82);}return _0x129d8f[_0xd1d2('0x1d')](_0xc3ee82)[_0xd1d2('0x1e')]();};}function respondWithResult(_0x4cf702,_0x2e7fec){_0x2e7fec=_0x2e7fec||0xc8;return function(_0x3c0296){if(_0x3c0296){return _0x4cf702[_0xd1d2('0x1d')](_0x2e7fec)['json'](_0x3c0296);}};}function respondWithFilteredResult(_0x35381b,_0xc36ce){return function(_0x208425){if(_0x208425){var _0x2f4cf9=typeof _0xc36ce[_0xd1d2('0x1f')]===_0xd1d2('0x20')&&typeof _0xc36ce[_0xd1d2('0x21')]==='undefined';var _0x539d5a=_0x208425[_0xd1d2('0x22')];var _0x55320b=_0x2f4cf9?0x0:_0xc36ce[_0xd1d2('0x1f')];var _0x42565b=_0x2f4cf9?_0x208425[_0xd1d2('0x22')]:_0xc36ce[_0xd1d2('0x1f')]+_0xc36ce['limit'];var _0x4f1201;if(_0x42565b>=_0x539d5a){_0x42565b=_0x539d5a;_0x4f1201=0xc8;}else{_0x4f1201=0xce;}_0x35381b[_0xd1d2('0x1d')](_0x4f1201);return _0x35381b['set']('Content-Range',_0x55320b+'-'+_0x42565b+'/'+_0x539d5a)[_0xd1d2('0x23')](_0x208425);}return null;};}function patchUpdates(_0x27e26b){return function(_0x3414ce){try{jsonpatch[_0xd1d2('0x24')](_0x3414ce,_0x27e26b,!![]);}catch(_0x596cd8){return BPromise[_0xd1d2('0x25')](_0x596cd8);}return _0x3414ce[_0xd1d2('0x26')]();};}function saveUpdates(_0x24b8db,_0x4eb082){return function(_0x59e72c){if(_0x59e72c){return _0x59e72c[_0xd1d2('0x27')](_0x24b8db)[_0xd1d2('0x28')](function(_0x19d535){return _0x19d535;});}return null;};}function removeEntity(_0x2f92ee,_0x3f229c){return function(_0x33a171){if(_0x33a171){return _0x33a171[_0xd1d2('0x29')]()['then'](function(){_0x2f92ee[_0xd1d2('0x1d')](0xcc)[_0xd1d2('0x1e')]();});}};}function handleEntityNotFound(_0x41330f,_0x2e1709){return function(_0x5d3ee1){if(!_0x5d3ee1){_0x41330f[_0xd1d2('0x1c')](0x194);}return _0x5d3ee1;};}function handleError(_0x28b8be,_0x34faf7){_0x34faf7=_0x34faf7||0x1f4;return function(_0xe6ef3c){logger[_0xd1d2('0x2a')](_0xe6ef3c[_0xd1d2('0x2b')]);if(_0xe6ef3c['name']){delete _0xe6ef3c['name'];}_0x28b8be[_0xd1d2('0x1d')](_0x34faf7)[_0xd1d2('0x2c')](_0xe6ef3c);};}exports[_0xd1d2('0x2d')]=function(_0x2b4c1f,_0xc815ea){var _0x48ade1={},_0x39d694={},_0x41171c={'count':0x0,'rows':[]};var _0x383947=_['map'](db[_0xd1d2('0x2e')][_0xd1d2('0x2f')],function(_0xbd855a){return{'name':_0xbd855a['fieldName'],'type':_0xbd855a[_0xd1d2('0x30')][_0xd1d2('0x31')]};});_0x39d694[_0xd1d2('0x32')]=_[_0xd1d2('0x33')](_0x383947,_0xd1d2('0x34'));_0x39d694[_0xd1d2('0x35')]=_[_0xd1d2('0x36')](_0x2b4c1f[_0xd1d2('0x35')]);_0x39d694[_0xd1d2('0x37')]=_[_0xd1d2('0x38')](_0x39d694[_0xd1d2('0x32')],_0x39d694[_0xd1d2('0x35')]);_0x48ade1[_0xd1d2('0x39')]=_[_0xd1d2('0x38')](_0x39d694[_0xd1d2('0x32')],qs[_0xd1d2('0x3a')](_0x2b4c1f[_0xd1d2('0x35')][_0xd1d2('0x3a')]));_0x48ade1['attributes']=_0x48ade1[_0xd1d2('0x39')][_0xd1d2('0x3b')]?_0x48ade1[_0xd1d2('0x39')]:_0x39d694['model'];if(!_0x2b4c1f[_0xd1d2('0x35')]['hasOwnProperty']('nolimit')){_0x48ade1[_0xd1d2('0x21')]=qs[_0xd1d2('0x21')](_0x2b4c1f[_0xd1d2('0x35')][_0xd1d2('0x21')]);_0x48ade1[_0xd1d2('0x1f')]=qs[_0xd1d2('0x1f')](_0x2b4c1f['query'][_0xd1d2('0x1f')]);}_0x48ade1[_0xd1d2('0x3c')]=qs['sort'](_0x2b4c1f[_0xd1d2('0x35')][_0xd1d2('0x3d')]);_0x48ade1[_0xd1d2('0x3e')]=qs[_0xd1d2('0x37')](_['pick'](_0x2b4c1f['query'],_0x39d694[_0xd1d2('0x37')]),_0x383947);if(_0x2b4c1f['query']['filter']){_0x48ade1['where']=_[_0xd1d2('0x3f')](_0x48ade1['where'],{'$or':_[_0xd1d2('0x33')](_0x383947,function(_0x4e7640){if(_0x4e7640['type']!=='VIRTUAL'){var _0x2dabfa={};_0x2dabfa[_0x4e7640[_0xd1d2('0x34')]]={'$like':'%'+_0x2b4c1f[_0xd1d2('0x35')][_0xd1d2('0x40')]+'%'};return _0x2dabfa;}})});}_0x48ade1=_[_0xd1d2('0x3f')]({},_0x48ade1,_0x2b4c1f[_0xd1d2('0x41')]);var _0x178f8b={'where':_0x48ade1[_0xd1d2('0x3e')]};return db[_0xd1d2('0x2e')][_0xd1d2('0x22')](_0x178f8b)[_0xd1d2('0x28')](function(_0x1fb5b5){_0x41171c[_0xd1d2('0x22')]=_0x1fb5b5;if(_0x2b4c1f[_0xd1d2('0x35')]['includeAll']){_0x48ade1['include']=[{'all':!![]}];}return db[_0xd1d2('0x2e')][_0xd1d2('0x42')](_0x48ade1);})[_0xd1d2('0x28')](function(_0x4d0fd9){_0x41171c['rows']=_0x4d0fd9;return _0x41171c;})[_0xd1d2('0x28')](respondWithFilteredResult(_0xc815ea,_0x48ade1))[_0xd1d2('0x43')](handleError(_0xc815ea,null));};exports['show']=function(_0x2fe92a,_0x4c5d49){var _0x5a3790={'raw':![],'where':{'id':_0x2fe92a['params']['id']}},_0x21eb24={};_0x21eb24['model']=_[_0xd1d2('0x36')](db[_0xd1d2('0x2e')][_0xd1d2('0x2f')]);_0x21eb24['query']=_[_0xd1d2('0x36')](_0x2fe92a[_0xd1d2('0x35')]);_0x21eb24[_0xd1d2('0x37')]=_[_0xd1d2('0x38')](_0x21eb24['model'],_0x21eb24[_0xd1d2('0x35')]);_0x5a3790[_0xd1d2('0x39')]=_['intersection'](_0x21eb24[_0xd1d2('0x32')],qs['fields'](_0x2fe92a[_0xd1d2('0x35')][_0xd1d2('0x3a')]));_0x5a3790[_0xd1d2('0x39')]=_0x5a3790[_0xd1d2('0x39')][_0xd1d2('0x3b')]?_0x5a3790['attributes']:_0x21eb24['model'];if(_0x2fe92a[_0xd1d2('0x35')][_0xd1d2('0x44')]){_0x5a3790['include']=[{'all':!![]}];}_0x5a3790=_[_0xd1d2('0x3f')]({},_0x5a3790,_0x2fe92a[_0xd1d2('0x41')]);return db[_0xd1d2('0x2e')][_0xd1d2('0x45')](_0x5a3790)[_0xd1d2('0x28')](handleEntityNotFound(_0x4c5d49,null))[_0xd1d2('0x28')](respondWithResult(_0x4c5d49,null))[_0xd1d2('0x43')](handleError(_0x4c5d49,null));};exports['create']=function(_0xed9e9,_0xc10c10){return db['ZendeskAccount'][_0xd1d2('0x46')](_0xed9e9[_0xd1d2('0x47')],{})['then'](respondWithResult(_0xc10c10,0xc9))['catch'](handleError(_0xc10c10,null));};exports[_0xd1d2('0x27')]=function(_0x182ea8,_0x4cb376){if(_0x182ea8[_0xd1d2('0x47')]['id']){delete _0x182ea8[_0xd1d2('0x47')]['id'];}return db[_0xd1d2('0x2e')][_0xd1d2('0x45')]({'where':{'id':_0x182ea8[_0xd1d2('0x48')]['id']}})['then'](handleEntityNotFound(_0x4cb376,null))['then'](saveUpdates(_0x182ea8[_0xd1d2('0x47')],null))['then'](respondWithResult(_0x4cb376,null))[_0xd1d2('0x43')](handleError(_0x4cb376,null));};exports[_0xd1d2('0x29')]=function(_0x4f4cb9,_0x389fcb){return db[_0xd1d2('0x2e')]['find']({'where':{'id':_0x4f4cb9['params']['id']}})[_0xd1d2('0x28')](handleEntityNotFound(_0x389fcb,null))[_0xd1d2('0x28')](removeEntity(_0x389fcb,null))[_0xd1d2('0x43')](handleError(_0x389fcb,null));};exports[_0xd1d2('0x49')]=function(_0xa013ce,_0x34a793,_0x1f6150){var _0x3411c8={};var _0x33e332={};var _0x5e15cb;var _0x1958f3;return db['ZendeskAccount']['findOne']({'where':{'id':_0xa013ce[_0xd1d2('0x48')]['id']}})[_0xd1d2('0x28')](handleEntityNotFound(_0x34a793,null))[_0xd1d2('0x28')](function(_0x47417f){if(_0x47417f){_0x5e15cb=_0x47417f;_0x33e332[_0xd1d2('0x32')]=_[_0xd1d2('0x36')](db[_0xd1d2('0x4a')][_0xd1d2('0x2f')]);_0x33e332[_0xd1d2('0x35')]=_[_0xd1d2('0x36')](_0xa013ce[_0xd1d2('0x35')]);_0x33e332[_0xd1d2('0x37')]=_[_0xd1d2('0x38')](_0x33e332['model'],_0x33e332['query']);_0x3411c8[_0xd1d2('0x39')]=_[_0xd1d2('0x38')](_0x33e332[_0xd1d2('0x32')],qs[_0xd1d2('0x3a')](_0xa013ce[_0xd1d2('0x35')][_0xd1d2('0x3a')]));_0x3411c8[_0xd1d2('0x39')]=_0x3411c8[_0xd1d2('0x39')][_0xd1d2('0x3b')]?_0x3411c8[_0xd1d2('0x39')]:_0x33e332[_0xd1d2('0x32')];_0x3411c8['order']=qs['sort'](_0xa013ce[_0xd1d2('0x35')][_0xd1d2('0x3d')]);_0x3411c8[_0xd1d2('0x3e')]=qs[_0xd1d2('0x37')](_['pick'](_0xa013ce[_0xd1d2('0x35')],_0x33e332[_0xd1d2('0x37')]));if(_0xa013ce[_0xd1d2('0x35')][_0xd1d2('0x40')]){_0x3411c8[_0xd1d2('0x3e')]=_[_0xd1d2('0x3f')](_0x3411c8[_0xd1d2('0x3e')],{'$or':_['map'](_0x3411c8[_0xd1d2('0x39')],function(_0x24d92c){var _0x1d8788={};_0x1d8788[_0x24d92c]={'$like':'%'+_0xa013ce['query']['filter']+'%'};return _0x1d8788;})});}_0x3411c8=_[_0xd1d2('0x3f')]({},_0x3411c8,_0xa013ce[_0xd1d2('0x41')]);return _0x5e15cb[_0xd1d2('0x49')](_0x3411c8);}})[_0xd1d2('0x28')](function(_0x598e6c){if(_0x598e6c){_0x1958f3=_0x598e6c[_0xd1d2('0x3b')];if(!_0xa013ce[_0xd1d2('0x35')][_0xd1d2('0x4b')]('nolimit')){_0x3411c8[_0xd1d2('0x21')]=qs[_0xd1d2('0x21')](_0xa013ce['query'][_0xd1d2('0x21')]);_0x3411c8[_0xd1d2('0x1f')]=qs[_0xd1d2('0x1f')](_0xa013ce[_0xd1d2('0x35')]['offset']);}return _0x5e15cb[_0xd1d2('0x49')](_0x3411c8);}})[_0xd1d2('0x28')](function(_0xd82d10){if(_0xd82d10){return _0xd82d10?{'count':_0x1958f3,'rows':_0xd82d10}:null;}})[_0xd1d2('0x28')](respondWithResult(_0x34a793,null))[_0xd1d2('0x43')](handleError(_0x34a793,null));};exports['addConfiguration']=function(_0x47aa13,_0x500465,_0x541676){if(_0x47aa13['body']['id']){delete _0x47aa13[_0xd1d2('0x47')]['id'];}return db[_0xd1d2('0x2e')][_0xd1d2('0x4c')]({'where':{'id':_0x47aa13['params']['id']}})[_0xd1d2('0x28')](handleEntityNotFound(_0x500465,null))[_0xd1d2('0x28')](function(_0x22d617){if(_0x22d617){_0x47aa13['body'][_0xd1d2('0x4d')]=_0x22d617['id'];_0x47aa13[_0xd1d2('0x47')][_0xd1d2('0x4e')]=integrations[_0xd1d2('0x4f')](_0x47aa13[_0xd1d2('0x47')][_0xd1d2('0x50')],_0x47aa13['body'][_0xd1d2('0x30')]);_0x47aa13[_0xd1d2('0x47')]['Descriptions']=integrations['getDescriptions'](_0x47aa13[_0xd1d2('0x47')][_0xd1d2('0x50')],_0x47aa13[_0xd1d2('0x47')][_0xd1d2('0x30')]);return db['ZendeskConfiguration'][_0xd1d2('0x46')](_0x47aa13[_0xd1d2('0x47')],{'include':[{'model':db[_0xd1d2('0x51')],'as':_0xd1d2('0x4e')},{'model':db['ZendeskField'],'as':_0xd1d2('0x52')}]});}return null;})[_0xd1d2('0x28')](respondWithResult(_0x500465,null))[_0xd1d2('0x43')](handleError(_0x500465,null));};exports['getFields']=function(_0x46ff4d,_0x1ae9af,_0x4c35cb){var _0x2175ab='';return db[_0xd1d2('0x2e')][_0xd1d2('0x4c')]({'where':{'id':_0x46ff4d[_0xd1d2('0x48')]['id']},'attributes':['id',_0xd1d2('0x53'),'password',_0xd1d2('0x54'),'authType','remoteUri']})['then'](handleEntityNotFound(_0x1ae9af,null))['then'](function(_0x89ec63){if(_0x89ec63){_0x2175ab=_0x89ec63['remoteUri'];var _0x37591f=_0x2175ab['slice'](-0x1);if(_0x37591f==='/'){_0x2175ab=_0x2175ab[_0xd1d2('0x55')](0x0,_0x2175ab[_0xd1d2('0x56')](_0x37591f));}var _0x16cc6c={'method':_0xd1d2('0x57'),'uri':util[_0xd1d2('0x58')](_0xd1d2('0x59'),_0x2175ab,'ticket_fields'),'json':!![]};switch(_0x89ec63[_0xd1d2('0x5a')]){case _0xd1d2('0x5b'):_0x16cc6c[_0xd1d2('0x5c')]={'Authorization':util[_0xd1d2('0x58')](_0xd1d2('0x5d'),new Buffer(util[_0xd1d2('0x58')](_0xd1d2('0x5e'),_0x89ec63[_0xd1d2('0x53')],_0x89ec63[_0xd1d2('0x5b')]))[_0xd1d2('0x5f')]('base64'))};break;case _0xd1d2('0x54'):_0x16cc6c[_0xd1d2('0x5c')]={'Authorization':util[_0xd1d2('0x58')](_0xd1d2('0x5d'),new Buffer(util['format'](_0xd1d2('0x60'),_0x89ec63[_0xd1d2('0x53')],_0x89ec63[_0xd1d2('0x54')]))['toString'](_0xd1d2('0x61')))};break;default:throw new db[(_0xd1d2('0x62'))]['ValidationError']('Unknown\x20authentication\x20type');}return rp(_0x16cc6c);}})[_0xd1d2('0x28')](function(_0x268d6d){if(_0x268d6d){var _0x3fbd87=[_0xd1d2('0x63'),_0xd1d2('0x64'),_0xd1d2('0x65'),_0xd1d2('0x66')];_['remove'](_0x268d6d[_0xd1d2('0x67')],function(_0x9a98d4){return _0x3fbd87[_0xd1d2('0x68')](_0x9a98d4[_0xd1d2('0x30')]);});return{'count':_0x268d6d[_0xd1d2('0x67')][_0xd1d2('0x3b')],'rows':_[_0xd1d2('0x33')](_0x268d6d[_0xd1d2('0x67')],function(_0x44409e){return{'id':_0x44409e['id'],'name':_0x44409e[_0xd1d2('0x69')]>0x7?_0x44409e[_0xd1d2('0x6a')]:_0x44409e[_0xd1d2('0x30')],'custom':_0x44409e[_0xd1d2('0x69')]>0x7?!![]:![],'options':_0x44409e[_0xd1d2('0x6b')]?_0x44409e['system_field_options']:_0x44409e[_0xd1d2('0x6c')]?_0x44409e[_0xd1d2('0x6c')]:[]};})};}})[_0xd1d2('0x28')](respondWithResult(_0x1ae9af,null))[_0xd1d2('0x43')](function(_0x20a3f0){var _0x32c294=_0x46ff4d[_0xd1d2('0x35')][_0xd1d2('0x6d')]?0x1f4:_0x20a3f0[_0xd1d2('0x6e')]||0x1f4;logger[_0xd1d2('0x2a')](_0xd1d2('0x6f'),_0xd1d2('0x70'),_0x32c294,JSON[_0xd1d2('0x71')](_0x20a3f0));delete _0x20a3f0['name'];if(_0x32c294===0x191){_0x32c294=0x190;}_0x1ae9af[_0xd1d2('0x1d')](_0x32c294)[_0xd1d2('0x2c')](_0x46ff4d[_0xd1d2('0x35')][_0xd1d2('0x6d')]?{'message':_0xd1d2('0x72'),'statusCode':_0x20a3f0[_0xd1d2('0x6e')]}:_0x20a3f0);});};
\ No newline at end of file
index 5717a46..6901693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaab=['request-promise','path','rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','bluebird'];(function(_0x16b13d,_0x2faf09){var _0x1f1e77=function(_0x2c4d2a){while(--_0x2c4d2a){_0x16b13d['push'](_0x16b13d['shift']());}};_0x1f1e77(++_0x2faf09);}(_0xaaab,0x121));var _0xbaaa=function(_0x4ac2a8,_0x1a5daa){_0x4ac2a8=_0x4ac2a8-0x0;var _0x1db39c=_0xaaab[_0x4ac2a8];return _0x1db39c;};'use strict';var _=require(_0xbaaa('0x0'));var util=require(_0xbaaa('0x1'));var logger=require(_0xbaaa('0x2'))(_0xbaaa('0x3'));var moment=require('moment');var BPromise=require(_0xbaaa('0x4'));var rp=require(_0xbaaa('0x5'));var fs=require('fs');var path=require(_0xbaaa('0x6'));var rimraf=require(_0xbaaa('0x7'));var config=require('../../config/environment');var attributes=require(_0xbaaa('0x8'));var integrations=require(_0xbaaa('0x9'));module[_0xbaaa('0xa')]=function(_0x19f0d9,_0x49671a){return _0x19f0d9[_0xbaaa('0xb')](_0xbaaa('0xc'),attributes,{'tableName':_0xbaaa('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1ceb=['int_zendesk_accounts','lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount'];(function(_0x41982d,_0x3e9af4){var _0x48d4c4=function(_0x5baf59){while(--_0x5baf59){_0x41982d['push'](_0x41982d['shift']());}};_0x48d4c4(++_0x3e9af4);}(_0x1ceb,0xde));var _0xb1ce=function(_0x3f47ec,_0x453adc){_0x3f47ec=_0x3f47ec-0x0;var _0x39696c=_0x1ceb[_0x3f47ec];return _0x39696c;};'use strict';var _=require(_0xb1ce('0x0'));var util=require('util');var logger=require(_0xb1ce('0x1'))('api');var moment=require(_0xb1ce('0x2'));var BPromise=require(_0xb1ce('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb1ce('0x4'));var rimraf=require(_0xb1ce('0x5'));var config=require(_0xb1ce('0x6'));var attributes=require(_0xb1ce('0x7'));var integrations=require(_0xb1ce('0x8'));module[_0xb1ce('0x9')]=function(_0x5f133d,_0xc814b7){return _0x5f133d[_0xb1ce('0xa')](_0xb1ce('0xb'),attributes,{'tableName':_0xb1ce('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 419660d..0773c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7560=['limit','include','model','map','info','debug','catch','ZendeskAccount','find','raw','ShowZendeskAccount','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetZendeskAccount','findAll','options','where','attributes'];(function(_0x95942,_0x85da80){var _0x6d7f81=function(_0x510549){while(--_0x510549){_0x95942['push'](_0x95942['shift']());}};_0x6d7f81(++_0x85da80);}(_0x7560,0x18c));var _0x0756=function(_0x438874,_0x50bced){_0x438874=_0x438874-0x0;var _0x3a51c1=_0x7560[_0x438874];return _0x3a51c1;};'use strict';var _=require(_0x0756('0x0'));var util=require(_0x0756('0x1'));var moment=require(_0x0756('0x2'));var BPromise=require(_0x0756('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0756('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0756('0x5'));var logger=require(_0x0756('0x6'))(_0x0756('0x7'));var config=require(_0x0756('0x8'));var jayson=require(_0x0756('0x9'));var client=jayson[_0x0756('0xa')][_0x0756('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x258449,_0x5b85b0,_0x951a7a){return new BPromise(function(_0x7a4378,_0x1abb79){return client['request'](_0x258449,_0x951a7a)[_0x0756('0xc')](function(_0x2f5d45){logger['info'](_0x0756('0xd'),_0x5b85b0,'request\x20sent');logger['debug']('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x5b85b0,_0x0756('0xe'),JSON[_0x0756('0xf')](_0x2f5d45));if(_0x2f5d45[_0x0756('0x10')]){if(_0x2f5d45[_0x0756('0x10')]['code']===0x1f4){logger['error'](_0x0756('0xd'),_0x5b85b0,_0x2f5d45[_0x0756('0x10')][_0x0756('0x11')]);return _0x1abb79(_0x2f5d45[_0x0756('0x10')]['message']);}logger['error'](_0x0756('0xd'),_0x5b85b0,_0x2f5d45['error'][_0x0756('0x11')]);return _0x7a4378(_0x2f5d45[_0x0756('0x10')][_0x0756('0x11')]);}else{logger['info'](_0x0756('0xd'),_0x5b85b0,_0x0756('0xe'));_0x7a4378(_0x2f5d45[_0x0756('0x12')]['message']);}})['catch'](function(_0x268b98){logger[_0x0756('0x10')](_0x0756('0xd'),_0x5b85b0,_0x268b98);_0x1abb79(_0x268b98);});});}exports[_0x0756('0x13')]=function(_0x42a9c2){var _0x4b6804=this;return new Promise(function(_0x5822e7,_0x28c6da){return db['ZendeskAccount'][_0x0756('0x14')]({'raw':_0x42a9c2['options']?_0x42a9c2[_0x0756('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x42a9c2[_0x0756('0x15')]?_0x42a9c2[_0x0756('0x15')][_0x0756('0x16')]||null:null,'attributes':_0x42a9c2[_0x0756('0x15')]?_0x42a9c2[_0x0756('0x15')][_0x0756('0x17')]||null:null,'limit':_0x42a9c2[_0x0756('0x15')]?_0x42a9c2[_0x0756('0x15')][_0x0756('0x18')]||null:null,'include':_0x42a9c2[_0x0756('0x15')]?_0x42a9c2['options'][_0x0756('0x19')]?_['map'](_0x42a9c2[_0x0756('0x15')]['include'],function(_0x20d1dc){return{'model':db[_0x20d1dc[_0x0756('0x1a')]],'as':_0x20d1dc['as'],'attributes':_0x20d1dc[_0x0756('0x17')],'include':_0x20d1dc[_0x0756('0x19')]?_[_0x0756('0x1b')](_0x20d1dc[_0x0756('0x19')],function(_0x4980e0){return{'model':db[_0x4980e0[_0x0756('0x1a')]],'as':_0x4980e0['as'],'attributes':_0x4980e0[_0x0756('0x17')],'include':_0x4980e0[_0x0756('0x19')]?_[_0x0756('0x1b')](_0x4980e0['include'],function(_0x407766){return{'model':db[_0x407766[_0x0756('0x1a')]],'as':_0x407766['as'],'attributes':_0x407766[_0x0756('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c2735){logger[_0x0756('0x1c')](_0x0756('0x13'),_0x42a9c2);logger[_0x0756('0x1d')](_0x0756('0x13'),_0x42a9c2,JSON[_0x0756('0xf')](_0x1c2735));_0x5822e7(_0x1c2735);})[_0x0756('0x1e')](function(_0x10f52a){logger[_0x0756('0x10')](_0x0756('0x13'),_0x10f52a[_0x0756('0x11')],_0x42a9c2);_0x28c6da(_0x4b6804[_0x0756('0x10')](0x1f4,_0x10f52a[_0x0756('0x11')]));});});};exports['ShowZendeskAccount']=function(_0xfb93c5){var _0x221eb5=this;return new Promise(function(_0x596fff,_0x2bc673){return db[_0x0756('0x1f')][_0x0756('0x20')]({'raw':_0xfb93c5[_0x0756('0x15')]?_0xfb93c5[_0x0756('0x15')][_0x0756('0x21')]===undefined?!![]:![]:!![],'where':_0xfb93c5[_0x0756('0x15')]?_0xfb93c5[_0x0756('0x15')][_0x0756('0x16')]||null:null,'attributes':_0xfb93c5[_0x0756('0x15')]?_0xfb93c5[_0x0756('0x15')][_0x0756('0x17')]||null:null,'include':_0xfb93c5['options']?_0xfb93c5[_0x0756('0x15')][_0x0756('0x19')]?_[_0x0756('0x1b')](_0xfb93c5[_0x0756('0x15')][_0x0756('0x19')],function(_0x4f0007){return{'model':db[_0x4f0007['model']],'as':_0x4f0007['as'],'attributes':_0x4f0007[_0x0756('0x17')],'include':_0x4f0007[_0x0756('0x19')]?_[_0x0756('0x1b')](_0x4f0007[_0x0756('0x19')],function(_0x11a73f){return{'model':db[_0x11a73f[_0x0756('0x1a')]],'as':_0x11a73f['as'],'attributes':_0x11a73f[_0x0756('0x17')],'include':_0x11a73f[_0x0756('0x19')]?_[_0x0756('0x1b')](_0x11a73f[_0x0756('0x19')],function(_0x8f0b31){return{'model':db[_0x8f0b31['model']],'as':_0x8f0b31['as'],'attributes':_0x8f0b31[_0x0756('0x17')]};}):[]};}):[]};}):[]:[]})[_0x0756('0xc')](function(_0x3d1020){logger[_0x0756('0x1c')](_0x0756('0x22'),_0xfb93c5);logger[_0x0756('0x1d')]('ShowZendeskAccount',_0xfb93c5,JSON[_0x0756('0xf')](_0x3d1020));_0x596fff(_0x3d1020);})[_0x0756('0x1e')](function(_0xc6226b){logger[_0x0756('0x10')](_0x0756('0x22'),_0xc6226b[_0x0756('0x11')],_0xfb93c5);_0x2bc673(_0x221eb5['error'](0x1f4,_0xc6226b[_0x0756('0x11')]));});});};
\ No newline at end of file
+var _0xa8d8=['moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','ZendeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ZendeskAccount','options','where','attributes','limit','map','include','model','GetZendeskAccount','debug','stringify','find','raw','ShowZendeskAccount','lodash'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0xa8d8,0x1c6));var _0x8a8d=function(_0x27a824,_0x50dc82){_0x27a824=_0x27a824-0x0;var _0x5a1a7b=_0xa8d8[_0x27a824];return _0x5a1a7b;};'use strict';var _=require(_0x8a8d('0x0'));var util=require('util');var moment=require(_0x8a8d('0x1'));var BPromise=require('bluebird');var rs=require(_0x8a8d('0x2'));var fs=require('fs');var Redis=require(_0x8a8d('0x3'));var db=require(_0x8a8d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8a8d('0x5'))(_0x8a8d('0x6'));var config=require(_0x8a8d('0x7'));var jayson=require(_0x8a8d('0x8'));var client=jayson[_0x8a8d('0x9')][_0x8a8d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35f3ef,_0x3bccbe,_0x27140c){return new BPromise(function(_0x37884a,_0x2a8cc1){return client['request'](_0x35f3ef,_0x27140c)[_0x8a8d('0xb')](function(_0x83a24d){logger[_0x8a8d('0xc')](_0x8a8d('0xd'),_0x3bccbe,_0x8a8d('0xe'));logger['debug'](_0x8a8d('0xf'),_0x3bccbe,_0x8a8d('0xe'),JSON['stringify'](_0x83a24d));if(_0x83a24d[_0x8a8d('0x10')]){if(_0x83a24d[_0x8a8d('0x10')][_0x8a8d('0x11')]===0x1f4){logger['error'](_0x8a8d('0xd'),_0x3bccbe,_0x83a24d[_0x8a8d('0x10')][_0x8a8d('0x12')]);return _0x2a8cc1(_0x83a24d[_0x8a8d('0x10')]['message']);}logger[_0x8a8d('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0x3bccbe,_0x83a24d[_0x8a8d('0x10')][_0x8a8d('0x12')]);return _0x37884a(_0x83a24d['error'][_0x8a8d('0x12')]);}else{logger[_0x8a8d('0xc')](_0x8a8d('0xd'),_0x3bccbe,_0x8a8d('0xe'));_0x37884a(_0x83a24d[_0x8a8d('0x13')][_0x8a8d('0x12')]);}})[_0x8a8d('0x14')](function(_0x12d976){logger[_0x8a8d('0x10')](_0x8a8d('0xd'),_0x3bccbe,_0x12d976);_0x2a8cc1(_0x12d976);});});}exports['GetZendeskAccount']=function(_0x3076c9){var _0x4a5172=this;return new Promise(function(_0x5e11c5,_0x479b06){return db[_0x8a8d('0x15')]['findAll']({'raw':_0x3076c9[_0x8a8d('0x16')]?_0x3076c9['options']['raw']===undefined?!![]:![]:!![],'where':_0x3076c9[_0x8a8d('0x16')]?_0x3076c9[_0x8a8d('0x16')][_0x8a8d('0x17')]||null:null,'attributes':_0x3076c9[_0x8a8d('0x16')]?_0x3076c9[_0x8a8d('0x16')][_0x8a8d('0x18')]||null:null,'limit':_0x3076c9['options']?_0x3076c9['options'][_0x8a8d('0x19')]||null:null,'include':_0x3076c9[_0x8a8d('0x16')]?_0x3076c9['options']['include']?_[_0x8a8d('0x1a')](_0x3076c9['options'][_0x8a8d('0x1b')],function(_0x3312f1){return{'model':db[_0x3312f1[_0x8a8d('0x1c')]],'as':_0x3312f1['as'],'attributes':_0x3312f1[_0x8a8d('0x18')],'include':_0x3312f1[_0x8a8d('0x1b')]?_['map'](_0x3312f1['include'],function(_0x15a733){return{'model':db[_0x15a733[_0x8a8d('0x1c')]],'as':_0x15a733['as'],'attributes':_0x15a733['attributes'],'include':_0x15a733[_0x8a8d('0x1b')]?_[_0x8a8d('0x1a')](_0x15a733[_0x8a8d('0x1b')],function(_0x1c7625){return{'model':db[_0x1c7625['model']],'as':_0x1c7625['as'],'attributes':_0x1c7625['attributes']};}):[]};}):[]};}):[]:[]})[_0x8a8d('0xb')](function(_0x5e5dfb){logger[_0x8a8d('0xc')](_0x8a8d('0x1d'),_0x3076c9);logger[_0x8a8d('0x1e')](_0x8a8d('0x1d'),_0x3076c9,JSON[_0x8a8d('0x1f')](_0x5e5dfb));_0x5e11c5(_0x5e5dfb);})[_0x8a8d('0x14')](function(_0x2df574){logger['error']('GetZendeskAccount',_0x2df574['message'],_0x3076c9);_0x479b06(_0x4a5172[_0x8a8d('0x10')](0x1f4,_0x2df574[_0x8a8d('0x12')]));});});};exports['ShowZendeskAccount']=function(_0x2237b7){var _0x13d995=this;return new Promise(function(_0x3cc074,_0x479d50){return db[_0x8a8d('0x15')][_0x8a8d('0x20')]({'raw':_0x2237b7[_0x8a8d('0x16')]?_0x2237b7[_0x8a8d('0x16')][_0x8a8d('0x21')]===undefined?!![]:![]:!![],'where':_0x2237b7[_0x8a8d('0x16')]?_0x2237b7[_0x8a8d('0x16')][_0x8a8d('0x17')]||null:null,'attributes':_0x2237b7[_0x8a8d('0x16')]?_0x2237b7[_0x8a8d('0x16')]['attributes']||null:null,'include':_0x2237b7[_0x8a8d('0x16')]?_0x2237b7[_0x8a8d('0x16')][_0x8a8d('0x1b')]?_[_0x8a8d('0x1a')](_0x2237b7['options'][_0x8a8d('0x1b')],function(_0x3930e8){return{'model':db[_0x3930e8[_0x8a8d('0x1c')]],'as':_0x3930e8['as'],'attributes':_0x3930e8['attributes'],'include':_0x3930e8['include']?_[_0x8a8d('0x1a')](_0x3930e8[_0x8a8d('0x1b')],function(_0x2ddfed){return{'model':db[_0x2ddfed[_0x8a8d('0x1c')]],'as':_0x2ddfed['as'],'attributes':_0x2ddfed[_0x8a8d('0x18')],'include':_0x2ddfed['include']?_[_0x8a8d('0x1a')](_0x2ddfed['include'],function(_0x156add){return{'model':db[_0x156add[_0x8a8d('0x1c')]],'as':_0x156add['as'],'attributes':_0x156add['attributes']};}):[]};}):[]};}):[]:[]})[_0x8a8d('0xb')](function(_0x3a1431){logger['info'](_0x8a8d('0x22'),_0x2237b7);logger['debug'](_0x8a8d('0x22'),_0x2237b7,JSON['stringify'](_0x3a1431));_0x3cc074(_0x3a1431);})['catch'](function(_0xd0a4c5){logger[_0x8a8d('0x10')](_0x8a8d('0x22'),_0xd0a4c5[_0x8a8d('0x12')],_0x2237b7);_0x479d50(_0x13d995[_0x8a8d('0x10')](0x1f4,_0xd0a4c5['message']));});});};
\ No newline at end of file
index 1ec1173..1288a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','isAuthenticated','get','show','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','setTags','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3ceb24,_0x2c273a){var _0x2d1b86=function(_0x526786){while(--_0x526786){_0x3ceb24['push'](_0x3ceb24['shift']());}};_0x2d1b86(++_0x2c273a);}(_0xac4a,0x13f));var _0xaac4=function(_0x1661a0,_0x4bc6a2){_0x1661a0=_0x1661a0-0x0;var _0x23ebbe=_0xac4a[_0x1661a0];return _0x23ebbe;};'use strict';var multer=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var path=require(_0xaac4('0x2'));var timeout=require(_0xaac4('0x3'));var express=require(_0xaac4('0x4'));var router=express[_0xaac4('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaac4('0x6'));var config=require(_0xaac4('0x7'));var controller=require(_0xaac4('0x8'));router['get']('/',auth[_0xaac4('0x9')](),controller['index']);router[_0xaac4('0xa')]('/:id',auth[_0xaac4('0x9')](),controller[_0xaac4('0xb')]);router['get']('/:id/fields',auth[_0xaac4('0x9')](),controller['getFields']);router[_0xaac4('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller[_0xaac4('0xc')]);router[_0xaac4('0xa')](_0xaac4('0xd'),auth[_0xaac4('0x9')](),controller[_0xaac4('0xe')]);router['get']('/:id/tags',auth[_0xaac4('0x9')](),controller[_0xaac4('0xf')]);router[_0xaac4('0x10')]('/',auth['isAuthenticated'](),controller[_0xaac4('0x11')]);router[_0xaac4('0x10')]('/:id/tags',auth[_0xaac4('0x9')](),controller[_0xaac4('0x12')]);router[_0xaac4('0x13')](_0xaac4('0x14'),auth[_0xaac4('0x9')](),controller[_0xaac4('0x15')]);router[_0xaac4('0x16')](_0xaac4('0x14'),auth[_0xaac4('0x9')](),controller[_0xaac4('0x17')]);module[_0xaac4('0x18')]=router;
\ No newline at end of file
+var _0x4fc2=['get','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskConfiguration.controller','isAuthenticated','index','/:id','show'];(function(_0x3fc01f,_0x40857c){var _0x484473=function(_0x29b1ee){while(--_0x29b1ee){_0x3fc01f['push'](_0x3fc01f['shift']());}};_0x484473(++_0x40857c);}(_0x4fc2,0x111));var _0x24fc=function(_0x56aa6c,_0x360d1c){_0x56aa6c=_0x56aa6c-0x0;var _0x580b72=_0x4fc2[_0x56aa6c];return _0x580b72;};'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')](_0x24fc('0xe'),auth[_0x24fc('0x9')](),controller['getFields']);router[_0x24fc('0xd')](_0x24fc('0xf'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x10')]);router[_0x24fc('0xd')](_0x24fc('0x11'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x12')]);router['get'](_0x24fc('0x13'),auth[_0x24fc('0x9')](),controller['getTags']);router[_0x24fc('0x14')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0x15')]);router[_0x24fc('0x14')](_0x24fc('0x13'),auth[_0x24fc('0x9')](),controller['setTags']);router[_0x24fc('0x16')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x17')]);router['delete'](_0x24fc('0xb'),auth['isAuthenticated'](),controller[_0x24fc('0x18')]);module[_0x24fc('0x19')]=router;
\ No newline at end of file
index b37968b..aa1bc6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aa5=['STRING','sequelize','exports'];(function(_0x10dd56,_0x3abdc2){var _0x4c4b4e=function(_0x4f8d0f){while(--_0x4f8d0f){_0x10dd56['push'](_0x10dd56['shift']());}};_0x4c4b4e(++_0x3abdc2);}(_0x4aa5,0x73));var _0x54aa=function(_0x136860,_0x2c148d){_0x136860=_0x136860-0x0;var _0x4dc0be=_0x4aa5[_0x136860];return _0x4dc0be;};'use strict';var Sequelize=require(_0x54aa('0x0'));module[_0x54aa('0x1')]={'name':{'type':Sequelize[_0x54aa('0x2')]},'description':{'type':Sequelize[_0x54aa('0x2')]}};
\ No newline at end of file
+var _0x7e2e=['sequelize','STRING'];(function(_0xeed318,_0x860c42){var _0x38e1f9=function(_0x20daa4){while(--_0x20daa4){_0xeed318['push'](_0xeed318['shift']());}};_0x38e1f9(++_0x860c42);}(_0x7e2e,0x1f0));var _0xe7e2=function(_0x1a01b0,_0x4c393f){_0x1a01b0=_0x1a01b0-0x0;var _0x23f44b=_0x7e2e[_0x1a01b0];return _0x23f44b;};'use strict';var Sequelize=require(_0xe7e2('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe7e2('0x1')]}};
\ No newline at end of file
index db4b33e..acecf2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7fc=['sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','index','map','ZendeskConfiguration','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','rawAttributes','find','create','body','params','getFields','findOne','ZendeskField','filter','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa7fc,0xe1));var _0xca7f=function(_0x27c068,_0x342981){_0x27c068=_0x27c068-0x0;var _0xe5a67f=_0xa7fc[_0x27c068];return _0xe5a67f;};'use strict';var emlformat=require(_0xca7f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xca7f('0x1'));var moment=require(_0xca7f('0x2'));var BPromise=require(_0xca7f('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xca7f('0x4'));var sox=require(_0xca7f('0x5'));var csv=require(_0xca7f('0x6'));var ejs=require(_0xca7f('0x7'));var fs=require('fs');var fs_extra=require(_0xca7f('0x8'));var _=require(_0xca7f('0x9'));var squel=require(_0xca7f('0xa'));var crypto=require(_0xca7f('0xb'));var jsforce=require(_0xca7f('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xca7f('0x6'));var querystring=require('querystring');var Papa=require(_0xca7f('0xd'));var Redis=require(_0xca7f('0xe'));var authService=require(_0xca7f('0xf'));var qs=require(_0xca7f('0x10'));var as=require(_0xca7f('0x11'));var hardwareService=require(_0xca7f('0x12'));var logger=require(_0xca7f('0x13'))(_0xca7f('0x14'));var utils=require(_0xca7f('0x15'));var config=require(_0xca7f('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xca7f('0x17'))['db'];function respondWithStatusCode(_0x1ccc4c,_0x3eb395){_0x3eb395=_0x3eb395||0xcc;return function(_0x575980){if(_0x575980){return _0x1ccc4c[_0xca7f('0x18')](_0x3eb395);}return _0x1ccc4c[_0xca7f('0x19')](_0x3eb395)[_0xca7f('0x1a')]();};}function respondWithResult(_0x8caf20,_0x247f60){_0x247f60=_0x247f60||0xc8;return function(_0x24a96a){if(_0x24a96a){return _0x8caf20[_0xca7f('0x19')](_0x247f60)[_0xca7f('0x1b')](_0x24a96a);}};}function respondWithFilteredResult(_0x1609ab,_0x1b8fe8){return function(_0x3d5db6){if(_0x3d5db6){var _0x5cdcaf=typeof _0x1b8fe8[_0xca7f('0x1c')]==='undefined'&&typeof _0x1b8fe8[_0xca7f('0x1d')]===_0xca7f('0x1e');var _0x119bc1=_0x3d5db6[_0xca7f('0x1f')];var _0x5312bd=_0x5cdcaf?0x0:_0x1b8fe8['offset'];var _0x5d4117=_0x5cdcaf?_0x3d5db6[_0xca7f('0x1f')]:_0x1b8fe8['offset']+_0x1b8fe8[_0xca7f('0x1d')];var _0x2f4e83;if(_0x5d4117>=_0x119bc1){_0x5d4117=_0x119bc1;_0x2f4e83=0xc8;}else{_0x2f4e83=0xce;}_0x1609ab[_0xca7f('0x19')](_0x2f4e83);return _0x1609ab[_0xca7f('0x20')](_0xca7f('0x21'),_0x5312bd+'-'+_0x5d4117+'/'+_0x119bc1)['json'](_0x3d5db6);}return null;};}function patchUpdates(_0x5b2f73){return function(_0xa72e92){try{jsonpatch[_0xca7f('0x22')](_0xa72e92,_0x5b2f73,!![]);}catch(_0x594348){return BPromise['reject'](_0x594348);}return _0xa72e92[_0xca7f('0x23')]();};}function saveUpdates(_0x19565a,_0x50eb21){return function(_0x548a72){if(_0x548a72){return _0x548a72[_0xca7f('0x24')](_0x19565a)[_0xca7f('0x25')](function(_0x12d8fb){return _0x12d8fb;});}return null;};}function removeEntity(_0xd73202,_0x5a2277){return function(_0x2c1899){if(_0x2c1899){return _0x2c1899[_0xca7f('0x26')]()[_0xca7f('0x25')](function(){_0xd73202[_0xca7f('0x19')](0xcc)[_0xca7f('0x1a')]();});}};}function handleEntityNotFound(_0x3720b0,_0x40445a){return function(_0x2973d0){if(!_0x2973d0){_0x3720b0[_0xca7f('0x18')](0x194);}return _0x2973d0;};}function handleError(_0x2aaf53,_0x30e1fa){_0x30e1fa=_0x30e1fa||0x1f4;return function(_0x36e22c){logger[_0xca7f('0x27')](_0x36e22c['stack']);if(_0x36e22c[_0xca7f('0x28')]){delete _0x36e22c['name'];}_0x2aaf53['status'](_0x30e1fa)['send'](_0x36e22c);};}exports[_0xca7f('0x29')]=function(_0x240bed,_0xf656fe){var _0x112b4b={},_0x3fc58a={},_0x41a379={'count':0x0,'rows':[]};var _0x365fa5=_[_0xca7f('0x2a')](db[_0xca7f('0x2b')]['rawAttributes'],function(_0x516c11){return{'name':_0x516c11[_0xca7f('0x2c')],'type':_0x516c11[_0xca7f('0x2d')]['key']};});_0x3fc58a[_0xca7f('0x2e')]=_[_0xca7f('0x2a')](_0x365fa5,_0xca7f('0x28'));_0x3fc58a[_0xca7f('0x2f')]=_[_0xca7f('0x30')](_0x240bed[_0xca7f('0x2f')]);_0x3fc58a[_0xca7f('0x31')]=_[_0xca7f('0x32')](_0x3fc58a['model'],_0x3fc58a[_0xca7f('0x2f')]);_0x112b4b[_0xca7f('0x33')]=_['intersection'](_0x3fc58a[_0xca7f('0x2e')],qs['fields'](_0x240bed[_0xca7f('0x2f')][_0xca7f('0x34')]));_0x112b4b[_0xca7f('0x33')]=_0x112b4b[_0xca7f('0x33')][_0xca7f('0x35')]?_0x112b4b[_0xca7f('0x33')]:_0x3fc58a['model'];if(!_0x240bed[_0xca7f('0x2f')][_0xca7f('0x36')](_0xca7f('0x37'))){_0x112b4b[_0xca7f('0x1d')]=qs[_0xca7f('0x1d')](_0x240bed[_0xca7f('0x2f')]['limit']);_0x112b4b[_0xca7f('0x1c')]=qs[_0xca7f('0x1c')](_0x240bed[_0xca7f('0x2f')]['offset']);}_0x112b4b[_0xca7f('0x38')]=qs[_0xca7f('0x39')](_0x240bed[_0xca7f('0x2f')]['sort']);_0x112b4b[_0xca7f('0x3a')]=qs[_0xca7f('0x31')](_[_0xca7f('0x3b')](_0x240bed[_0xca7f('0x2f')],_0x3fc58a['filters']),_0x365fa5);if(_0x240bed[_0xca7f('0x2f')]['filter']){_0x112b4b[_0xca7f('0x3a')]=_[_0xca7f('0x3c')](_0x112b4b[_0xca7f('0x3a')],{'$or':_[_0xca7f('0x2a')](_0x365fa5,function(_0x1d864f){if(_0x1d864f[_0xca7f('0x2d')]!==_0xca7f('0x3d')){var _0x5be8b9={};_0x5be8b9[_0x1d864f[_0xca7f('0x28')]]={'$like':'%'+_0x240bed[_0xca7f('0x2f')]['filter']+'%'};return _0x5be8b9;}})});}_0x112b4b=_[_0xca7f('0x3c')]({},_0x112b4b,_0x240bed[_0xca7f('0x3e')]);var _0x355c92={'where':_0x112b4b[_0xca7f('0x3a')]};return db[_0xca7f('0x2b')][_0xca7f('0x1f')](_0x355c92)[_0xca7f('0x25')](function(_0x22ca33){_0x41a379[_0xca7f('0x1f')]=_0x22ca33;if(_0x240bed[_0xca7f('0x2f')][_0xca7f('0x3f')]){_0x112b4b['include']=[{'all':!![]}];}return db['ZendeskConfiguration'][_0xca7f('0x40')](_0x112b4b);})[_0xca7f('0x25')](function(_0x397219){_0x41a379[_0xca7f('0x41')]=_0x397219;return _0x41a379;})[_0xca7f('0x25')](respondWithFilteredResult(_0xf656fe,_0x112b4b))[_0xca7f('0x42')](handleError(_0xf656fe,null));};exports[_0xca7f('0x43')]=function(_0x434ed3,_0x59030){var _0x45f56a={'raw':![],'where':{'id':_0x434ed3['params']['id']}},_0x4a43a7={};_0x4a43a7[_0xca7f('0x2e')]=_[_0xca7f('0x30')](db[_0xca7f('0x2b')][_0xca7f('0x44')]);_0x4a43a7[_0xca7f('0x2f')]=_[_0xca7f('0x30')](_0x434ed3[_0xca7f('0x2f')]);_0x4a43a7['filters']=_[_0xca7f('0x32')](_0x4a43a7[_0xca7f('0x2e')],_0x4a43a7[_0xca7f('0x2f')]);_0x45f56a[_0xca7f('0x33')]=_[_0xca7f('0x32')](_0x4a43a7[_0xca7f('0x2e')],qs[_0xca7f('0x34')](_0x434ed3[_0xca7f('0x2f')]['fields']));_0x45f56a[_0xca7f('0x33')]=_0x45f56a[_0xca7f('0x33')][_0xca7f('0x35')]?_0x45f56a['attributes']:_0x4a43a7[_0xca7f('0x2e')];if(_0x434ed3['query'][_0xca7f('0x3f')]){_0x45f56a['include']=[{'all':!![]}];}_0x45f56a=_[_0xca7f('0x3c')]({},_0x45f56a,_0x434ed3['options']);return db[_0xca7f('0x2b')][_0xca7f('0x45')](_0x45f56a)[_0xca7f('0x25')](handleEntityNotFound(_0x59030,null))[_0xca7f('0x25')](respondWithResult(_0x59030,null))[_0xca7f('0x42')](handleError(_0x59030,null));};exports[_0xca7f('0x46')]=function(_0x3de40d,_0x59de27){return db[_0xca7f('0x2b')]['create'](_0x3de40d[_0xca7f('0x47')],{})[_0xca7f('0x25')](respondWithResult(_0x59de27,0xc9))[_0xca7f('0x42')](handleError(_0x59de27,null));};exports[_0xca7f('0x24')]=function(_0x3bb3b4,_0x150e02){if(_0x3bb3b4[_0xca7f('0x47')]['id']){delete _0x3bb3b4['body']['id'];}return db[_0xca7f('0x2b')][_0xca7f('0x45')]({'where':{'id':_0x3bb3b4[_0xca7f('0x48')]['id']}})['then'](handleEntityNotFound(_0x150e02,null))[_0xca7f('0x25')](saveUpdates(_0x3bb3b4[_0xca7f('0x47')],null))[_0xca7f('0x25')](respondWithResult(_0x150e02,null))[_0xca7f('0x42')](handleError(_0x150e02,null));};exports[_0xca7f('0x26')]=function(_0x44708d,_0x3247c2){return db[_0xca7f('0x2b')]['find']({'where':{'id':_0x44708d['params']['id']}})['then'](handleEntityNotFound(_0x3247c2,null))['then'](removeEntity(_0x3247c2,null))[_0xca7f('0x42')](handleError(_0x3247c2,null));};exports[_0xca7f('0x49')]=function(_0x1f93f7,_0x14f500,_0x411afc){var _0x1646cd={};var _0x46bb28={};var _0x1f51bf;var _0x206c74;return db[_0xca7f('0x2b')][_0xca7f('0x4a')]({'where':{'id':_0x1f93f7[_0xca7f('0x48')]['id']}})[_0xca7f('0x25')](handleEntityNotFound(_0x14f500,null))['then'](function(_0x27d43e){if(_0x27d43e){_0x1f51bf=_0x27d43e;_0x46bb28[_0xca7f('0x2e')]=_[_0xca7f('0x30')](db[_0xca7f('0x4b')][_0xca7f('0x44')]);_0x46bb28['query']=_[_0xca7f('0x30')](_0x1f93f7['query']);_0x46bb28[_0xca7f('0x31')]=_[_0xca7f('0x32')](_0x46bb28['model'],_0x46bb28[_0xca7f('0x2f')]);_0x1646cd[_0xca7f('0x33')]=_['intersection'](_0x46bb28[_0xca7f('0x2e')],qs[_0xca7f('0x34')](_0x1f93f7['query'][_0xca7f('0x34')]));_0x1646cd[_0xca7f('0x33')]=_0x1646cd[_0xca7f('0x33')][_0xca7f('0x35')]?_0x1646cd[_0xca7f('0x33')]:_0x46bb28['model'];_0x1646cd[_0xca7f('0x38')]=qs[_0xca7f('0x39')](_0x1f93f7['query'][_0xca7f('0x39')]);_0x1646cd[_0xca7f('0x3a')]=qs[_0xca7f('0x31')](_['pick'](_0x1f93f7['query'],_0x46bb28[_0xca7f('0x31')]));if(_0x1f93f7[_0xca7f('0x2f')][_0xca7f('0x4c')]){_0x1646cd[_0xca7f('0x3a')]=_[_0xca7f('0x3c')](_0x1646cd[_0xca7f('0x3a')],{'$or':_['map'](_0x1646cd[_0xca7f('0x33')],function(_0x849d8c){var _0x31c4fe={};_0x31c4fe[_0x849d8c]={'$like':'%'+_0x1f93f7[_0xca7f('0x2f')][_0xca7f('0x4c')]+'%'};return _0x31c4fe;})});}_0x1646cd=_['merge']({},_0x1646cd,_0x1f93f7[_0xca7f('0x3e')]);return _0x1f51bf[_0xca7f('0x49')](_0x1646cd);}})[_0xca7f('0x25')](function(_0x429324){if(_0x429324){_0x206c74=_0x429324[_0xca7f('0x35')];if(!_0x1f93f7[_0xca7f('0x2f')][_0xca7f('0x36')](_0xca7f('0x37'))){_0x1646cd[_0xca7f('0x1d')]=qs['limit'](_0x1f93f7[_0xca7f('0x2f')][_0xca7f('0x1d')]);_0x1646cd[_0xca7f('0x1c')]=qs['offset'](_0x1f93f7[_0xca7f('0x2f')][_0xca7f('0x1c')]);}return _0x1f51bf['getFields'](_0x1646cd);}})[_0xca7f('0x25')](function(_0x5f4d05){if(_0x5f4d05){return _0x5f4d05?{'count':_0x206c74,'rows':_0x5f4d05}:null;}})[_0xca7f('0x25')](respondWithResult(_0x14f500,null))[_0xca7f('0x42')](handleError(_0x14f500,null));};exports[_0xca7f('0x4d')]=function(_0x2764ce,_0x19b5e5,_0x38eefb){var _0x10afe9={};var _0x1e6dfc={};var _0x4ce1ff;var _0x28b0e1;return db[_0xca7f('0x2b')][_0xca7f('0x4a')]({'where':{'id':_0x2764ce[_0xca7f('0x48')]['id']}})[_0xca7f('0x25')](handleEntityNotFound(_0x19b5e5,null))[_0xca7f('0x25')](function(_0xa2b847){if(_0xa2b847){_0x4ce1ff=_0xa2b847;_0x1e6dfc[_0xca7f('0x2e')]=_['keys'](db['ZendeskField'][_0xca7f('0x44')]);_0x1e6dfc['query']=_[_0xca7f('0x30')](_0x2764ce[_0xca7f('0x2f')]);_0x1e6dfc[_0xca7f('0x31')]=_[_0xca7f('0x32')](_0x1e6dfc[_0xca7f('0x2e')],_0x1e6dfc[_0xca7f('0x2f')]);_0x10afe9[_0xca7f('0x33')]=_[_0xca7f('0x32')](_0x1e6dfc['model'],qs[_0xca7f('0x34')](_0x2764ce[_0xca7f('0x2f')][_0xca7f('0x34')]));_0x10afe9[_0xca7f('0x33')]=_0x10afe9[_0xca7f('0x33')][_0xca7f('0x35')]?_0x10afe9['attributes']:_0x1e6dfc['model'];_0x10afe9['order']=qs[_0xca7f('0x39')](_0x2764ce[_0xca7f('0x2f')][_0xca7f('0x39')]);_0x10afe9[_0xca7f('0x3a')]=qs[_0xca7f('0x31')](_[_0xca7f('0x3b')](_0x2764ce[_0xca7f('0x2f')],_0x1e6dfc[_0xca7f('0x31')]));if(_0x2764ce[_0xca7f('0x2f')][_0xca7f('0x4c')]){_0x10afe9[_0xca7f('0x3a')]=_[_0xca7f('0x3c')](_0x10afe9['where'],{'$or':_[_0xca7f('0x2a')](_0x10afe9[_0xca7f('0x33')],function(_0x13dca5){var _0x52b93d={};_0x52b93d[_0x13dca5]={'$like':'%'+_0x2764ce['query'][_0xca7f('0x4c')]+'%'};return _0x52b93d;})});}_0x10afe9=_[_0xca7f('0x3c')]({},_0x10afe9,_0x2764ce[_0xca7f('0x3e')]);return _0x4ce1ff['getSubjects'](_0x10afe9);}})[_0xca7f('0x25')](function(_0x5db993){if(_0x5db993){_0x28b0e1=_0x5db993[_0xca7f('0x35')];if(!_0x2764ce[_0xca7f('0x2f')][_0xca7f('0x36')](_0xca7f('0x37'))){_0x10afe9[_0xca7f('0x1d')]=qs[_0xca7f('0x1d')](_0x2764ce['query'][_0xca7f('0x1d')]);_0x10afe9[_0xca7f('0x1c')]=qs['offset'](_0x2764ce[_0xca7f('0x2f')][_0xca7f('0x1c')]);}return _0x4ce1ff[_0xca7f('0x4d')](_0x10afe9);}})[_0xca7f('0x25')](function(_0x3d85db){if(_0x3d85db){return _0x3d85db?{'count':_0x28b0e1,'rows':_0x3d85db}:null;}})[_0xca7f('0x25')](respondWithResult(_0x19b5e5,null))[_0xca7f('0x42')](handleError(_0x19b5e5,null));};exports[_0xca7f('0x4e')]=function(_0x1de5d1,_0xbeb2f9,_0x3518e2){var _0x55d882={};var _0x4e67d9={};var _0x34da76;var _0x20aa17;return db[_0xca7f('0x2b')]['findOne']({'where':{'id':_0x1de5d1[_0xca7f('0x48')]['id']}})['then'](handleEntityNotFound(_0xbeb2f9,null))[_0xca7f('0x25')](function(_0x314fa4){if(_0x314fa4){_0x34da76=_0x314fa4;_0x4e67d9['model']=_[_0xca7f('0x30')](db['ZendeskField'][_0xca7f('0x44')]);_0x4e67d9[_0xca7f('0x2f')]=_[_0xca7f('0x30')](_0x1de5d1['query']);_0x4e67d9[_0xca7f('0x31')]=_[_0xca7f('0x32')](_0x4e67d9['model'],_0x4e67d9['query']);_0x55d882[_0xca7f('0x33')]=_[_0xca7f('0x32')](_0x4e67d9[_0xca7f('0x2e')],qs['fields'](_0x1de5d1[_0xca7f('0x2f')][_0xca7f('0x34')]));_0x55d882[_0xca7f('0x33')]=_0x55d882['attributes'][_0xca7f('0x35')]?_0x55d882[_0xca7f('0x33')]:_0x4e67d9[_0xca7f('0x2e')];_0x55d882['order']=qs[_0xca7f('0x39')](_0x1de5d1[_0xca7f('0x2f')][_0xca7f('0x39')]);_0x55d882[_0xca7f('0x3a')]=qs[_0xca7f('0x31')](_[_0xca7f('0x3b')](_0x1de5d1['query'],_0x4e67d9['filters']));if(_0x1de5d1[_0xca7f('0x2f')][_0xca7f('0x4c')]){_0x55d882[_0xca7f('0x3a')]=_[_0xca7f('0x3c')](_0x55d882[_0xca7f('0x3a')],{'$or':_[_0xca7f('0x2a')](_0x55d882[_0xca7f('0x33')],function(_0x3f9d11){var _0x4cd194={};_0x4cd194[_0x3f9d11]={'$like':'%'+_0x1de5d1[_0xca7f('0x2f')]['filter']+'%'};return _0x4cd194;})});}_0x55d882=_[_0xca7f('0x3c')]({},_0x55d882,_0x1de5d1[_0xca7f('0x3e')]);return _0x34da76['getDescriptions'](_0x55d882);}})[_0xca7f('0x25')](function(_0x2149c0){if(_0x2149c0){_0x20aa17=_0x2149c0[_0xca7f('0x35')];if(!_0x1de5d1[_0xca7f('0x2f')][_0xca7f('0x36')]('nolimit')){_0x55d882[_0xca7f('0x1d')]=qs[_0xca7f('0x1d')](_0x1de5d1[_0xca7f('0x2f')][_0xca7f('0x1d')]);_0x55d882[_0xca7f('0x1c')]=qs[_0xca7f('0x1c')](_0x1de5d1[_0xca7f('0x2f')][_0xca7f('0x1c')]);}return _0x34da76[_0xca7f('0x4e')](_0x55d882);}})[_0xca7f('0x25')](function(_0x39d6db){if(_0x39d6db){return _0x39d6db?{'count':_0x20aa17,'rows':_0x39d6db}:null;}})[_0xca7f('0x25')](respondWithResult(_0xbeb2f9,null))[_0xca7f('0x42')](handleError(_0xbeb2f9,null));};exports[_0xca7f('0x4f')]=function(_0x2423fc,_0x3b57c2,_0x2b6ec1){var _0x3d4f35={};var _0x4d6994={};var _0x51a99c;var _0x421c4a;return db[_0xca7f('0x2b')][_0xca7f('0x4a')]({'where':{'id':_0x2423fc['params']['id']}})[_0xca7f('0x25')](handleEntityNotFound(_0x3b57c2,null))['then'](function(_0x2b3095){if(_0x2b3095){_0x51a99c=_0x2b3095;_0x4d6994['model']=_[_0xca7f('0x30')](db[_0xca7f('0x50')][_0xca7f('0x44')]);_0x4d6994[_0xca7f('0x2f')]=_[_0xca7f('0x30')](_0x2423fc[_0xca7f('0x2f')]);_0x4d6994[_0xca7f('0x31')]=_['intersection'](_0x4d6994[_0xca7f('0x2e')],_0x4d6994[_0xca7f('0x2f')]);_0x3d4f35[_0xca7f('0x33')]=_[_0xca7f('0x32')](_0x4d6994[_0xca7f('0x2e')],qs[_0xca7f('0x34')](_0x2423fc[_0xca7f('0x2f')][_0xca7f('0x34')]));_0x3d4f35[_0xca7f('0x33')]=_0x3d4f35[_0xca7f('0x33')][_0xca7f('0x35')]?_0x3d4f35[_0xca7f('0x33')]:_0x4d6994[_0xca7f('0x2e')];_0x3d4f35[_0xca7f('0x38')]=qs['sort'](_0x2423fc[_0xca7f('0x2f')]['sort']);_0x3d4f35[_0xca7f('0x3a')]=qs['filters'](_[_0xca7f('0x3b')](_0x2423fc[_0xca7f('0x2f')],_0x4d6994[_0xca7f('0x31')]));if(_0x2423fc['query'][_0xca7f('0x4c')]){_0x3d4f35['where']=_['merge'](_0x3d4f35['where'],{'$or':_[_0xca7f('0x2a')](_0x3d4f35[_0xca7f('0x33')],function(_0x5c70cf){var _0x3be4a9={};_0x3be4a9[_0x5c70cf]={'$like':'%'+_0x2423fc[_0xca7f('0x2f')][_0xca7f('0x4c')]+'%'};return _0x3be4a9;})});}_0x3d4f35=_['merge']({},_0x3d4f35,_0x2423fc[_0xca7f('0x3e')]);return _0x51a99c[_0xca7f('0x4f')](_0x3d4f35);}})[_0xca7f('0x25')](function(_0x72538b){if(_0x72538b){_0x421c4a=_0x72538b[_0xca7f('0x35')];if(!_0x2423fc[_0xca7f('0x2f')][_0xca7f('0x36')](_0xca7f('0x37'))){_0x3d4f35[_0xca7f('0x1d')]=qs[_0xca7f('0x1d')](_0x2423fc['query'][_0xca7f('0x1d')]);_0x3d4f35[_0xca7f('0x1c')]=qs[_0xca7f('0x1c')](_0x2423fc[_0xca7f('0x2f')][_0xca7f('0x1c')]);}return _0x51a99c[_0xca7f('0x4f')](_0x3d4f35);}})[_0xca7f('0x25')](function(_0x3d1ec0){if(_0x3d1ec0){return _0x3d1ec0?{'count':_0x421c4a,'rows':_0x3d1ec0}:null;}})[_0xca7f('0x25')](respondWithResult(_0x3b57c2,null))[_0xca7f('0x42')](handleError(_0x3b57c2,null));};exports['setTags']=function(_0x32e6c3,_0x1ecd9a,_0x487d6e){if(_0x32e6c3['body']['id']){delete _0x32e6c3[_0xca7f('0x47')]['id'];}return db['ZendeskConfiguration'][_0xca7f('0x4a')]({'where':{'id':_0x32e6c3[_0xca7f('0x48')]['id']}})[_0xca7f('0x25')](handleEntityNotFound(_0x1ecd9a,null))[_0xca7f('0x25')](function(_0x3c2336){if(_0x3c2336){return _0x3c2336[_0xca7f('0x51')](_0x32e6c3[_0xca7f('0x47')][_0xca7f('0x52')]||[]);}return null;})[_0xca7f('0x25')](respondWithResult(_0x1ecd9a,null))[_0xca7f('0x42')](handleError(_0x1ecd9a,null));};
\ No newline at end of file
+var _0x9678=['attributes','length','hasOwnProperty','order','sort','where','pick','merge','filter','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','intersection','getFields','nolimit','findOne','ZendeskField','getSubjects','getDescriptions','Tag','getTags','setTags','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','index','ZendeskConfiguration','rawAttributes','fieldName','type','model','map','query','keys','filters','fields'];(function(_0x470a29,_0x5c33fd){var _0x1f98d9=function(_0x5f5d52){while(--_0x5f5d52){_0x470a29['push'](_0x470a29['shift']());}};_0x1f98d9(++_0x5c33fd);}(_0x9678,0x1b3));var _0x8967=function(_0x32d004,_0x17e605){_0x32d004=_0x32d004-0x0;var _0x787d39=_0x9678[_0x32d004];return _0x787d39;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8967('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8967('0x1'));var moment=require('moment');var BPromise=require(_0x8967('0x2'));var Mustache=require(_0x8967('0x3'));var util=require(_0x8967('0x4'));var path=require(_0x8967('0x5'));var sox=require(_0x8967('0x6'));var csv=require(_0x8967('0x7'));var ejs=require(_0x8967('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8967('0x9'));var squel=require(_0x8967('0xa'));var crypto=require(_0x8967('0xb'));var jsforce=require(_0x8967('0xc'));var deskjs=require(_0x8967('0xd'));var toCsv=require(_0x8967('0x7'));var querystring=require(_0x8967('0xe'));var Papa=require(_0x8967('0xf'));var Redis=require(_0x8967('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8967('0x11'));var as=require(_0x8967('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8967('0x13'));var utils=require(_0x8967('0x14'));var config=require(_0x8967('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33fa6d,_0x36de03){_0x36de03=_0x36de03||0xcc;return function(_0xa5efad){if(_0xa5efad){return _0x33fa6d[_0x8967('0x16')](_0x36de03);}return _0x33fa6d['status'](_0x36de03)[_0x8967('0x17')]();};}function respondWithResult(_0x1bc0da,_0x52289a){_0x52289a=_0x52289a||0xc8;return function(_0x3603dd){if(_0x3603dd){return _0x1bc0da[_0x8967('0x18')](_0x52289a)[_0x8967('0x19')](_0x3603dd);}};}function respondWithFilteredResult(_0x23d943,_0x5d8efa){return function(_0x26b10b){if(_0x26b10b){var _0x1c8e51=typeof _0x5d8efa[_0x8967('0x1a')]===_0x8967('0x1b')&&typeof _0x5d8efa[_0x8967('0x1c')]===_0x8967('0x1b');var _0x606ef7=_0x26b10b[_0x8967('0x1d')];var _0x4ab11c=_0x1c8e51?0x0:_0x5d8efa['offset'];var _0x282a47=_0x1c8e51?_0x26b10b[_0x8967('0x1d')]:_0x5d8efa['offset']+_0x5d8efa['limit'];var _0x2fe0c9;if(_0x282a47>=_0x606ef7){_0x282a47=_0x606ef7;_0x2fe0c9=0xc8;}else{_0x2fe0c9=0xce;}_0x23d943['status'](_0x2fe0c9);return _0x23d943[_0x8967('0x1e')](_0x8967('0x1f'),_0x4ab11c+'-'+_0x282a47+'/'+_0x606ef7)[_0x8967('0x19')](_0x26b10b);}return null;};}function patchUpdates(_0x5c6647){return function(_0x453ecb){try{jsonpatch[_0x8967('0x20')](_0x453ecb,_0x5c6647,!![]);}catch(_0xe8680e){return BPromise[_0x8967('0x21')](_0xe8680e);}return _0x453ecb[_0x8967('0x22')]();};}function saveUpdates(_0x10a487,_0x4d6baa){return function(_0x424341){if(_0x424341){return _0x424341[_0x8967('0x23')](_0x10a487)[_0x8967('0x24')](function(_0x442984){return _0x442984;});}return null;};}function removeEntity(_0x4e7f8b,_0x19cd70){return function(_0xa24c16){if(_0xa24c16){return _0xa24c16[_0x8967('0x25')]()['then'](function(){_0x4e7f8b['status'](0xcc)[_0x8967('0x17')]();});}};}function handleEntityNotFound(_0x2c6ea0,_0x589219){return function(_0x3f035b){if(!_0x3f035b){_0x2c6ea0[_0x8967('0x16')](0x194);}return _0x3f035b;};}function handleError(_0xf95c31,_0x4d61f3){_0x4d61f3=_0x4d61f3||0x1f4;return function(_0x30ac68){logger['error'](_0x30ac68[_0x8967('0x26')]);if(_0x30ac68['name']){delete _0x30ac68[_0x8967('0x27')];}_0xf95c31['status'](_0x4d61f3)['send'](_0x30ac68);};}exports[_0x8967('0x28')]=function(_0x300d36,_0x1da382){var _0x5ba116={},_0x81b606={},_0x949711={'count':0x0,'rows':[]};var _0x50e59f=_['map'](db[_0x8967('0x29')][_0x8967('0x2a')],function(_0x544eec){return{'name':_0x544eec[_0x8967('0x2b')],'type':_0x544eec[_0x8967('0x2c')]['key']};});_0x81b606[_0x8967('0x2d')]=_[_0x8967('0x2e')](_0x50e59f,_0x8967('0x27'));_0x81b606[_0x8967('0x2f')]=_[_0x8967('0x30')](_0x300d36[_0x8967('0x2f')]);_0x81b606[_0x8967('0x31')]=_['intersection'](_0x81b606[_0x8967('0x2d')],_0x81b606[_0x8967('0x2f')]);_0x5ba116['attributes']=_['intersection'](_0x81b606['model'],qs[_0x8967('0x32')](_0x300d36[_0x8967('0x2f')][_0x8967('0x32')]));_0x5ba116[_0x8967('0x33')]=_0x5ba116['attributes'][_0x8967('0x34')]?_0x5ba116[_0x8967('0x33')]:_0x81b606[_0x8967('0x2d')];if(!_0x300d36[_0x8967('0x2f')][_0x8967('0x35')]('nolimit')){_0x5ba116[_0x8967('0x1c')]=qs[_0x8967('0x1c')](_0x300d36[_0x8967('0x2f')][_0x8967('0x1c')]);_0x5ba116[_0x8967('0x1a')]=qs[_0x8967('0x1a')](_0x300d36[_0x8967('0x2f')][_0x8967('0x1a')]);}_0x5ba116[_0x8967('0x36')]=qs['sort'](_0x300d36[_0x8967('0x2f')][_0x8967('0x37')]);_0x5ba116[_0x8967('0x38')]=qs[_0x8967('0x31')](_[_0x8967('0x39')](_0x300d36[_0x8967('0x2f')],_0x81b606[_0x8967('0x31')]),_0x50e59f);if(_0x300d36['query']['filter']){_0x5ba116['where']=_[_0x8967('0x3a')](_0x5ba116[_0x8967('0x38')],{'$or':_[_0x8967('0x2e')](_0x50e59f,function(_0x472dce){if(_0x472dce['type']!=='VIRTUAL'){var _0x4e3cc5={};_0x4e3cc5[_0x472dce[_0x8967('0x27')]]={'$like':'%'+_0x300d36[_0x8967('0x2f')][_0x8967('0x3b')]+'%'};return _0x4e3cc5;}})});}_0x5ba116=_[_0x8967('0x3a')]({},_0x5ba116,_0x300d36['options']);var _0xed92e0={'where':_0x5ba116[_0x8967('0x38')]};return db[_0x8967('0x29')][_0x8967('0x1d')](_0xed92e0)[_0x8967('0x24')](function(_0x28b335){_0x949711[_0x8967('0x1d')]=_0x28b335;if(_0x300d36[_0x8967('0x2f')]['includeAll']){_0x5ba116[_0x8967('0x3c')]=[{'all':!![]}];}return db[_0x8967('0x29')][_0x8967('0x3d')](_0x5ba116);})['then'](function(_0x7abbd4){_0x949711[_0x8967('0x3e')]=_0x7abbd4;return _0x949711;})['then'](respondWithFilteredResult(_0x1da382,_0x5ba116))[_0x8967('0x3f')](handleError(_0x1da382,null));};exports[_0x8967('0x40')]=function(_0x172a8a,_0x2ab50b){var _0x2a6761={'raw':![],'where':{'id':_0x172a8a[_0x8967('0x41')]['id']}},_0x5ca6c1={};_0x5ca6c1[_0x8967('0x2d')]=_[_0x8967('0x30')](db[_0x8967('0x29')]['rawAttributes']);_0x5ca6c1[_0x8967('0x2f')]=_[_0x8967('0x30')](_0x172a8a[_0x8967('0x2f')]);_0x5ca6c1[_0x8967('0x31')]=_['intersection'](_0x5ca6c1[_0x8967('0x2d')],_0x5ca6c1[_0x8967('0x2f')]);_0x2a6761[_0x8967('0x33')]=_['intersection'](_0x5ca6c1[_0x8967('0x2d')],qs[_0x8967('0x32')](_0x172a8a[_0x8967('0x2f')]['fields']));_0x2a6761[_0x8967('0x33')]=_0x2a6761[_0x8967('0x33')][_0x8967('0x34')]?_0x2a6761[_0x8967('0x33')]:_0x5ca6c1[_0x8967('0x2d')];if(_0x172a8a[_0x8967('0x2f')][_0x8967('0x42')]){_0x2a6761[_0x8967('0x3c')]=[{'all':!![]}];}_0x2a6761=_[_0x8967('0x3a')]({},_0x2a6761,_0x172a8a[_0x8967('0x43')]);return db[_0x8967('0x29')][_0x8967('0x44')](_0x2a6761)['then'](handleEntityNotFound(_0x2ab50b,null))[_0x8967('0x24')](respondWithResult(_0x2ab50b,null))[_0x8967('0x3f')](handleError(_0x2ab50b,null));};exports['create']=function(_0x388dc5,_0x2a1532){return db[_0x8967('0x29')][_0x8967('0x45')](_0x388dc5[_0x8967('0x46')],{})['then'](respondWithResult(_0x2a1532,0xc9))[_0x8967('0x3f')](handleError(_0x2a1532,null));};exports[_0x8967('0x23')]=function(_0x210e92,_0xd7c929){if(_0x210e92[_0x8967('0x46')]['id']){delete _0x210e92[_0x8967('0x46')]['id'];}return db[_0x8967('0x29')][_0x8967('0x44')]({'where':{'id':_0x210e92[_0x8967('0x41')]['id']}})[_0x8967('0x24')](handleEntityNotFound(_0xd7c929,null))[_0x8967('0x24')](saveUpdates(_0x210e92['body'],null))[_0x8967('0x24')](respondWithResult(_0xd7c929,null))[_0x8967('0x3f')](handleError(_0xd7c929,null));};exports[_0x8967('0x25')]=function(_0xc10cd2,_0x287384){return db[_0x8967('0x29')]['find']({'where':{'id':_0xc10cd2['params']['id']}})[_0x8967('0x24')](handleEntityNotFound(_0x287384,null))[_0x8967('0x24')](removeEntity(_0x287384,null))['catch'](handleError(_0x287384,null));};exports['getFields']=function(_0x3c03d7,_0x4b7c02,_0x346ed8){var _0x279f63={};var _0x417814={};var _0x41271c;var _0x5e0d33;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x3c03d7['params']['id']}})[_0x8967('0x24')](handleEntityNotFound(_0x4b7c02,null))['then'](function(_0x2bd05c){if(_0x2bd05c){_0x41271c=_0x2bd05c;_0x417814[_0x8967('0x2d')]=_['keys'](db['ZendeskField'][_0x8967('0x2a')]);_0x417814['query']=_[_0x8967('0x30')](_0x3c03d7['query']);_0x417814[_0x8967('0x31')]=_['intersection'](_0x417814[_0x8967('0x2d')],_0x417814['query']);_0x279f63['attributes']=_[_0x8967('0x47')](_0x417814[_0x8967('0x2d')],qs[_0x8967('0x32')](_0x3c03d7['query'][_0x8967('0x32')]));_0x279f63[_0x8967('0x33')]=_0x279f63['attributes'][_0x8967('0x34')]?_0x279f63[_0x8967('0x33')]:_0x417814[_0x8967('0x2d')];_0x279f63['order']=qs[_0x8967('0x37')](_0x3c03d7['query'][_0x8967('0x37')]);_0x279f63[_0x8967('0x38')]=qs[_0x8967('0x31')](_[_0x8967('0x39')](_0x3c03d7[_0x8967('0x2f')],_0x417814['filters']));if(_0x3c03d7[_0x8967('0x2f')]['filter']){_0x279f63[_0x8967('0x38')]=_[_0x8967('0x3a')](_0x279f63['where'],{'$or':_[_0x8967('0x2e')](_0x279f63[_0x8967('0x33')],function(_0x43ace5){var _0x3d7023={};_0x3d7023[_0x43ace5]={'$like':'%'+_0x3c03d7[_0x8967('0x2f')][_0x8967('0x3b')]+'%'};return _0x3d7023;})});}_0x279f63=_['merge']({},_0x279f63,_0x3c03d7[_0x8967('0x43')]);return _0x41271c[_0x8967('0x48')](_0x279f63);}})[_0x8967('0x24')](function(_0x384235){if(_0x384235){_0x5e0d33=_0x384235['length'];if(!_0x3c03d7[_0x8967('0x2f')][_0x8967('0x35')](_0x8967('0x49'))){_0x279f63[_0x8967('0x1c')]=qs[_0x8967('0x1c')](_0x3c03d7['query'][_0x8967('0x1c')]);_0x279f63['offset']=qs[_0x8967('0x1a')](_0x3c03d7[_0x8967('0x2f')][_0x8967('0x1a')]);}return _0x41271c[_0x8967('0x48')](_0x279f63);}})[_0x8967('0x24')](function(_0x3492bb){if(_0x3492bb){return _0x3492bb?{'count':_0x5e0d33,'rows':_0x3492bb}:null;}})[_0x8967('0x24')](respondWithResult(_0x4b7c02,null))['catch'](handleError(_0x4b7c02,null));};exports['getSubjects']=function(_0x38a45b,_0x10cfc2,_0x39f815){var _0x15336c={};var _0x114218={};var _0x523501;var _0x2a59de;return db[_0x8967('0x29')][_0x8967('0x4a')]({'where':{'id':_0x38a45b['params']['id']}})['then'](handleEntityNotFound(_0x10cfc2,null))[_0x8967('0x24')](function(_0x5971c4){if(_0x5971c4){_0x523501=_0x5971c4;_0x114218[_0x8967('0x2d')]=_[_0x8967('0x30')](db[_0x8967('0x4b')]['rawAttributes']);_0x114218[_0x8967('0x2f')]=_['keys'](_0x38a45b['query']);_0x114218['filters']=_[_0x8967('0x47')](_0x114218[_0x8967('0x2d')],_0x114218['query']);_0x15336c[_0x8967('0x33')]=_[_0x8967('0x47')](_0x114218[_0x8967('0x2d')],qs[_0x8967('0x32')](_0x38a45b[_0x8967('0x2f')][_0x8967('0x32')]));_0x15336c[_0x8967('0x33')]=_0x15336c[_0x8967('0x33')][_0x8967('0x34')]?_0x15336c[_0x8967('0x33')]:_0x114218[_0x8967('0x2d')];_0x15336c[_0x8967('0x36')]=qs['sort'](_0x38a45b[_0x8967('0x2f')][_0x8967('0x37')]);_0x15336c['where']=qs[_0x8967('0x31')](_['pick'](_0x38a45b['query'],_0x114218[_0x8967('0x31')]));if(_0x38a45b[_0x8967('0x2f')]['filter']){_0x15336c[_0x8967('0x38')]=_[_0x8967('0x3a')](_0x15336c[_0x8967('0x38')],{'$or':_[_0x8967('0x2e')](_0x15336c[_0x8967('0x33')],function(_0x143f9d){var _0x100332={};_0x100332[_0x143f9d]={'$like':'%'+_0x38a45b[_0x8967('0x2f')][_0x8967('0x3b')]+'%'};return _0x100332;})});}_0x15336c=_[_0x8967('0x3a')]({},_0x15336c,_0x38a45b[_0x8967('0x43')]);return _0x523501['getSubjects'](_0x15336c);}})[_0x8967('0x24')](function(_0x3b69bd){if(_0x3b69bd){_0x2a59de=_0x3b69bd[_0x8967('0x34')];if(!_0x38a45b['query']['hasOwnProperty'](_0x8967('0x49'))){_0x15336c[_0x8967('0x1c')]=qs[_0x8967('0x1c')](_0x38a45b[_0x8967('0x2f')][_0x8967('0x1c')]);_0x15336c['offset']=qs[_0x8967('0x1a')](_0x38a45b[_0x8967('0x2f')][_0x8967('0x1a')]);}return _0x523501[_0x8967('0x4c')](_0x15336c);}})[_0x8967('0x24')](function(_0x59cbea){if(_0x59cbea){return _0x59cbea?{'count':_0x2a59de,'rows':_0x59cbea}:null;}})[_0x8967('0x24')](respondWithResult(_0x10cfc2,null))[_0x8967('0x3f')](handleError(_0x10cfc2,null));};exports['getDescriptions']=function(_0x58f956,_0x3b128f,_0x10ab2c){var _0x2bd84c={};var _0x1d2285={};var _0x8664de;var _0x2afd1b;return db[_0x8967('0x29')][_0x8967('0x4a')]({'where':{'id':_0x58f956['params']['id']}})[_0x8967('0x24')](handleEntityNotFound(_0x3b128f,null))[_0x8967('0x24')](function(_0xd8f9b0){if(_0xd8f9b0){_0x8664de=_0xd8f9b0;_0x1d2285[_0x8967('0x2d')]=_[_0x8967('0x30')](db[_0x8967('0x4b')]['rawAttributes']);_0x1d2285['query']=_[_0x8967('0x30')](_0x58f956[_0x8967('0x2f')]);_0x1d2285[_0x8967('0x31')]=_['intersection'](_0x1d2285['model'],_0x1d2285[_0x8967('0x2f')]);_0x2bd84c[_0x8967('0x33')]=_[_0x8967('0x47')](_0x1d2285[_0x8967('0x2d')],qs[_0x8967('0x32')](_0x58f956[_0x8967('0x2f')][_0x8967('0x32')]));_0x2bd84c['attributes']=_0x2bd84c[_0x8967('0x33')]['length']?_0x2bd84c[_0x8967('0x33')]:_0x1d2285[_0x8967('0x2d')];_0x2bd84c[_0x8967('0x36')]=qs[_0x8967('0x37')](_0x58f956['query'][_0x8967('0x37')]);_0x2bd84c[_0x8967('0x38')]=qs[_0x8967('0x31')](_[_0x8967('0x39')](_0x58f956[_0x8967('0x2f')],_0x1d2285[_0x8967('0x31')]));if(_0x58f956[_0x8967('0x2f')]['filter']){_0x2bd84c[_0x8967('0x38')]=_[_0x8967('0x3a')](_0x2bd84c[_0x8967('0x38')],{'$or':_[_0x8967('0x2e')](_0x2bd84c[_0x8967('0x33')],function(_0x5588d3){var _0x14a6aa={};_0x14a6aa[_0x5588d3]={'$like':'%'+_0x58f956[_0x8967('0x2f')][_0x8967('0x3b')]+'%'};return _0x14a6aa;})});}_0x2bd84c=_[_0x8967('0x3a')]({},_0x2bd84c,_0x58f956[_0x8967('0x43')]);return _0x8664de[_0x8967('0x4d')](_0x2bd84c);}})['then'](function(_0x2915d4){if(_0x2915d4){_0x2afd1b=_0x2915d4['length'];if(!_0x58f956[_0x8967('0x2f')]['hasOwnProperty'](_0x8967('0x49'))){_0x2bd84c[_0x8967('0x1c')]=qs[_0x8967('0x1c')](_0x58f956['query'][_0x8967('0x1c')]);_0x2bd84c[_0x8967('0x1a')]=qs[_0x8967('0x1a')](_0x58f956[_0x8967('0x2f')][_0x8967('0x1a')]);}return _0x8664de[_0x8967('0x4d')](_0x2bd84c);}})[_0x8967('0x24')](function(_0x1dc8d4){if(_0x1dc8d4){return _0x1dc8d4?{'count':_0x2afd1b,'rows':_0x1dc8d4}:null;}})[_0x8967('0x24')](respondWithResult(_0x3b128f,null))[_0x8967('0x3f')](handleError(_0x3b128f,null));};exports['getTags']=function(_0x63b4e8,_0x4e8949,_0x500d9c){var _0x51cd2d={};var _0x16ba9e={};var _0x5b9dd0;var _0x1d8ea9;return db['ZendeskConfiguration'][_0x8967('0x4a')]({'where':{'id':_0x63b4e8['params']['id']}})[_0x8967('0x24')](handleEntityNotFound(_0x4e8949,null))[_0x8967('0x24')](function(_0x5d142c){if(_0x5d142c){_0x5b9dd0=_0x5d142c;_0x16ba9e[_0x8967('0x2d')]=_[_0x8967('0x30')](db[_0x8967('0x4e')]['rawAttributes']);_0x16ba9e[_0x8967('0x2f')]=_[_0x8967('0x30')](_0x63b4e8[_0x8967('0x2f')]);_0x16ba9e['filters']=_['intersection'](_0x16ba9e[_0x8967('0x2d')],_0x16ba9e[_0x8967('0x2f')]);_0x51cd2d[_0x8967('0x33')]=_[_0x8967('0x47')](_0x16ba9e['model'],qs[_0x8967('0x32')](_0x63b4e8['query']['fields']));_0x51cd2d[_0x8967('0x33')]=_0x51cd2d[_0x8967('0x33')]['length']?_0x51cd2d[_0x8967('0x33')]:_0x16ba9e[_0x8967('0x2d')];_0x51cd2d[_0x8967('0x36')]=qs[_0x8967('0x37')](_0x63b4e8[_0x8967('0x2f')][_0x8967('0x37')]);_0x51cd2d[_0x8967('0x38')]=qs[_0x8967('0x31')](_[_0x8967('0x39')](_0x63b4e8[_0x8967('0x2f')],_0x16ba9e[_0x8967('0x31')]));if(_0x63b4e8[_0x8967('0x2f')]['filter']){_0x51cd2d[_0x8967('0x38')]=_['merge'](_0x51cd2d[_0x8967('0x38')],{'$or':_[_0x8967('0x2e')](_0x51cd2d['attributes'],function(_0x2bd9a8){var _0x79d53e={};_0x79d53e[_0x2bd9a8]={'$like':'%'+_0x63b4e8['query'][_0x8967('0x3b')]+'%'};return _0x79d53e;})});}_0x51cd2d=_['merge']({},_0x51cd2d,_0x63b4e8[_0x8967('0x43')]);return _0x5b9dd0[_0x8967('0x4f')](_0x51cd2d);}})['then'](function(_0x29ff60){if(_0x29ff60){_0x1d8ea9=_0x29ff60[_0x8967('0x34')];if(!_0x63b4e8[_0x8967('0x2f')][_0x8967('0x35')](_0x8967('0x49'))){_0x51cd2d[_0x8967('0x1c')]=qs[_0x8967('0x1c')](_0x63b4e8[_0x8967('0x2f')][_0x8967('0x1c')]);_0x51cd2d['offset']=qs[_0x8967('0x1a')](_0x63b4e8['query'][_0x8967('0x1a')]);}return _0x5b9dd0[_0x8967('0x4f')](_0x51cd2d);}})['then'](function(_0x4fac89){if(_0x4fac89){return _0x4fac89?{'count':_0x1d8ea9,'rows':_0x4fac89}:null;}})[_0x8967('0x24')](respondWithResult(_0x4e8949,null))['catch'](handleError(_0x4e8949,null));};exports[_0x8967('0x50')]=function(_0x3f55ec,_0x27d24d,_0x1eda10){if(_0x3f55ec[_0x8967('0x46')]['id']){delete _0x3f55ec[_0x8967('0x46')]['id'];}return db[_0x8967('0x29')]['findOne']({'where':{'id':_0x3f55ec['params']['id']}})[_0x8967('0x24')](handleEntityNotFound(_0x27d24d,null))['then'](function(_0x310945){if(_0x310945){return _0x310945['setTags'](_0x3f55ec[_0x8967('0x46')]['ids']||[]);}return null;})[_0x8967('0x24')](respondWithResult(_0x27d24d,null))[_0x8967('0x3f')](handleError(_0x27d24d,null));};
\ No newline at end of file
index efa4cba..3975e30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae60=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash'];(function(_0x1895a7,_0x4c6074){var _0x2f9d99=function(_0x1b5857){while(--_0x1b5857){_0x1895a7['push'](_0x1895a7['shift']());}};_0x2f9d99(++_0x4c6074);}(_0xae60,0x1c7));var _0x0ae6=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xae60[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x0ae6('0x0'));var util=require(_0x0ae6('0x1'));var logger=require(_0x0ae6('0x2'))('api');var moment=require(_0x0ae6('0x3'));var BPromise=require(_0x0ae6('0x4'));var rp=require(_0x0ae6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0ae6('0x6'));var config=require(_0x0ae6('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module[_0x0ae6('0x8')]=function(_0x25ac7c,_0x30e000){return _0x25ac7c[_0x0ae6('0x9')](_0x0ae6('0xa'),attributes,{'tableName':_0x0ae6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x80ed=['api','moment','request-promise','path','rimraf','../../config/environment','exports','ZendeskConfiguration','int_zendesk_configurations','lodash','../../config/logger'];(function(_0x332699,_0xe10120){var _0x3efa4a=function(_0x3679a8){while(--_0x3679a8){_0x332699['push'](_0x332699['shift']());}};_0x3efa4a(++_0xe10120);}(_0x80ed,0x11c));var _0xd80e=function(_0x344ab4,_0x48b8b7){_0x344ab4=_0x344ab4-0x0;var _0x3c1b77=_0x80ed[_0x344ab4];return _0x3c1b77;};'use strict';var _=require(_0xd80e('0x0'));var util=require('util');var logger=require(_0xd80e('0x1'))(_0xd80e('0x2'));var moment=require(_0xd80e('0x3'));var BPromise=require('bluebird');var rp=require(_0xd80e('0x4'));var fs=require('fs');var path=require(_0xd80e('0x5'));var rimraf=require(_0xd80e('0x6'));var config=require(_0xd80e('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module[_0xd80e('0x8')]=function(_0x2b4742,_0x252fec){return _0x2b4742['define'](_0xd80e('0x9'),attributes,{'tableName':_0xd80e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fbb4758..ee4e065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf77=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','moment','bluebird'];(function(_0x102026,_0x24c81d){var _0x56b770=function(_0x3f350e){while(--_0x3f350e){_0x102026['push'](_0x102026['shift']());}};_0x56b770(++_0x24c81d);}(_0xdf77,0x11c));var _0x7df7=function(_0x42fb1c,_0xaee030){_0x42fb1c=_0x42fb1c-0x0;var _0x2879e9=_0xdf77[_0x42fb1c];return _0x2879e9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7df7('0x0'));var BPromise=require(_0x7df7('0x1'));var rs=require(_0x7df7('0x2'));var fs=require('fs');var Redis=require(_0x7df7('0x3'));var db=require(_0x7df7('0x4'))['db'];var utils=require(_0x7df7('0x5'));var logger=require(_0x7df7('0x6'))(_0x7df7('0x7'));var config=require('../../config/environment');var jayson=require(_0x7df7('0x8'));var client=jayson[_0x7df7('0x9')][_0x7df7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x426b27,_0x1ef951,_0x28e42a){return new BPromise(function(_0x19e921,_0x22f9fe){return client[_0x7df7('0xb')](_0x426b27,_0x28e42a)[_0x7df7('0xc')](function(_0x46ea8a){logger[_0x7df7('0xd')](_0x7df7('0xe'),_0x1ef951,'request\x20sent');logger['debug'](_0x7df7('0xf'),_0x1ef951,'request\x20sent',JSON['stringify'](_0x46ea8a));if(_0x46ea8a[_0x7df7('0x10')]){if(_0x46ea8a['error'][_0x7df7('0x11')]===0x1f4){logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x1ef951,_0x46ea8a[_0x7df7('0x10')][_0x7df7('0x12')]);return _0x22f9fe(_0x46ea8a[_0x7df7('0x10')][_0x7df7('0x12')]);}logger[_0x7df7('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1ef951,_0x46ea8a[_0x7df7('0x10')][_0x7df7('0x12')]);return _0x19e921(_0x46ea8a[_0x7df7('0x10')][_0x7df7('0x12')]);}else{logger[_0x7df7('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1ef951,_0x7df7('0x13'));_0x19e921(_0x46ea8a[_0x7df7('0x14')][_0x7df7('0x12')]);}})[_0x7df7('0x15')](function(_0x3479af){logger[_0x7df7('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1ef951,_0x3479af);_0x22f9fe(_0x3479af);});});}
\ No newline at end of file
+var _0x8a9e=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x20e214,_0x3afe50){var _0x2661ed=function(_0x41b276){while(--_0x41b276){_0x20e214['push'](_0x20e214['shift']());}};_0x2661ed(++_0x3afe50);}(_0x8a9e,0x159));var _0xe8a9=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x8a9e[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xe8a9('0x0'));var util=require('util');var moment=require(_0xe8a9('0x1'));var BPromise=require(_0xe8a9('0x2'));var rs=require(_0xe8a9('0x3'));var fs=require('fs');var Redis=require(_0xe8a9('0x4'));var db=require(_0xe8a9('0x5'))['db'];var utils=require(_0xe8a9('0x6'));var logger=require(_0xe8a9('0x7'))(_0xe8a9('0x8'));var config=require(_0xe8a9('0x9'));var jayson=require(_0xe8a9('0xa'));var client=jayson['client'][_0xe8a9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xa0a5d1,_0xc5ef9f,_0x4665d0){return new BPromise(function(_0x4c4198,_0x537cf8){return client[_0xe8a9('0xc')](_0xa0a5d1,_0x4665d0)[_0xe8a9('0xd')](function(_0x589813){logger[_0xe8a9('0xe')](_0xe8a9('0xf'),_0xc5ef9f,_0xe8a9('0x10'));logger[_0xe8a9('0x11')](_0xe8a9('0x12'),_0xc5ef9f,_0xe8a9('0x10'),JSON[_0xe8a9('0x13')](_0x589813));if(_0x589813[_0xe8a9('0x14')]){if(_0x589813[_0xe8a9('0x14')][_0xe8a9('0x15')]===0x1f4){logger[_0xe8a9('0x14')](_0xe8a9('0xf'),_0xc5ef9f,_0x589813['error']['message']);return _0x537cf8(_0x589813['error'][_0xe8a9('0x16')]);}logger[_0xe8a9('0x14')](_0xe8a9('0xf'),_0xc5ef9f,_0x589813['error'][_0xe8a9('0x16')]);return _0x4c4198(_0x589813[_0xe8a9('0x14')]['message']);}else{logger['info'](_0xe8a9('0xf'),_0xc5ef9f,'request\x20sent');_0x4c4198(_0x589813[_0xe8a9('0x17')][_0xe8a9('0x16')]);}})[_0xe8a9('0x18')](function(_0x352272){logger[_0xe8a9('0x14')](_0xe8a9('0xf'),_0xc5ef9f,_0x352272);_0x537cf8(_0x352272);});});}
\ No newline at end of file
index ee37984..36fbb8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb6d=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','/:id','update','delete','destroy','multer'];(function(_0x4443c4,_0x59b7fa){var _0x219c7a=function(_0x3a29f1){while(--_0x3a29f1){_0x4443c4['push'](_0x4443c4['shift']());}};_0x219c7a(++_0x59b7fa);}(_0xcb6d,0x1af));var _0xdcb6=function(_0x2ff4bd,_0x4780a6){_0x2ff4bd=_0x2ff4bd-0x0;var _0x28edc6=_0xcb6d[_0x2ff4bd];return _0x28edc6;};'use strict';var multer=require(_0xdcb6('0x0'));var util=require(_0xdcb6('0x1'));var path=require(_0xdcb6('0x2'));var timeout=require(_0xdcb6('0x3'));var express=require(_0xdcb6('0x4'));var router=express[_0xdcb6('0x5')]();var fs_extra=require(_0xdcb6('0x6'));var auth=require(_0xdcb6('0x7'));var interaction=require(_0xdcb6('0x8'));var config=require(_0xdcb6('0x9'));var controller=require(_0xdcb6('0xa'));router[_0xdcb6('0xb')]('/',auth[_0xdcb6('0xc')](),controller[_0xdcb6('0xd')]);router[_0xdcb6('0xb')](_0xdcb6('0xe'),auth[_0xdcb6('0xc')](),controller['show']);router['post']('/',auth[_0xdcb6('0xc')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xdcb6('0xf')]);router[_0xdcb6('0x10')](_0xdcb6('0xe'),auth['isAuthenticated'](),controller[_0xdcb6('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x8358=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskField.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x277d6c,_0x1a8963){var _0x5a67d2=function(_0x5cdbc3){while(--_0x5cdbc3){_0x277d6c['push'](_0x277d6c['shift']());}};_0x5a67d2(++_0x1a8963);}(_0x8358,0xcc));var _0x8835=function(_0x197672,_0x549267){_0x197672=_0x197672-0x0;var _0x2b81d9=_0x8358[_0x197672];return _0x2b81d9;};'use strict';var multer=require(_0x8835('0x0'));var util=require(_0x8835('0x1'));var path=require(_0x8835('0x2'));var timeout=require(_0x8835('0x3'));var express=require(_0x8835('0x4'));var router=express[_0x8835('0x5')]();var fs_extra=require(_0x8835('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x8835('0x7'));var config=require(_0x8835('0x8'));var controller=require(_0x8835('0x9'));router['get']('/',auth[_0x8835('0xa')](),controller[_0x8835('0xb')]);router[_0x8835('0xc')](_0x8835('0xd'),auth[_0x8835('0xa')](),controller[_0x8835('0xe')]);router[_0x8835('0xf')]('/',auth[_0x8835('0xa')](),controller[_0x8835('0x10')]);router[_0x8835('0x11')](_0x8835('0xd'),auth[_0x8835('0xa')](),controller[_0x8835('0x12')]);router[_0x8835('0x13')](_0x8835('0xd'),auth['isAuthenticated'](),controller[_0x8835('0x14')]);module[_0x8835('0x15')]=router;
\ No newline at end of file
index 0d664a7..28f81aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa6c=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x4bf96c,_0x4d24fd){var _0x281d09=function(_0x56538e){while(--_0x56538e){_0x4bf96c['push'](_0x4bf96c['shift']());}};_0x281d09(++_0x4d24fd);}(_0xfa6c,0x158));var _0xcfa6=function(_0x226d88,_0x1fe8a3){_0x226d88=_0x226d88-0x0;var _0x3d37bc=_0xfa6c[_0x226d88];return _0x3d37bc;};'use strict';var Sequelize=require(_0xcfa6('0x0'));module[_0xcfa6('0x1')]={'type':{'type':Sequelize[_0xcfa6('0x2')](_0xcfa6('0x3'),_0xcfa6('0x4'),_0xcfa6('0x5'),_0xcfa6('0x6'),_0xcfa6('0x7')),'defaultValue':_0xcfa6('0x3')},'content':{'type':Sequelize[_0xcfa6('0x8')]},'key':{'type':Sequelize[_0xcfa6('0x8')]},'keyType':{'type':Sequelize[_0xcfa6('0x2')](_0xcfa6('0x3'),_0xcfa6('0x4'),_0xcfa6('0x5'))},'keyContent':{'type':Sequelize[_0xcfa6('0x8')]},'idField':{'type':Sequelize[_0xcfa6('0x8')]},'nameField':{'type':Sequelize[_0xcfa6('0x8')]},'customField':{'type':Sequelize[_0xcfa6('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcfa6('0x8')]}};
\ No newline at end of file
+var _0xab2c=['customVariable','keyValue','string','STRING','variable','BOOLEAN','sequelize','exports','ENUM'];(function(_0x2fac71,_0x2ae81d){var _0x28cb27=function(_0x348dc6){while(--_0x348dc6){_0x2fac71['push'](_0x2fac71['shift']());}};_0x28cb27(++_0x2ae81d);}(_0xab2c,0x7b));var _0xcab2=function(_0x44e016,_0x2a4ac3){_0x44e016=_0x44e016-0x0;var _0x5bc0a0=_0xab2c[_0x44e016];return _0x5bc0a0;};'use strict';var Sequelize=require(_0xcab2('0x0'));module[_0xcab2('0x1')]={'type':{'type':Sequelize[_0xcab2('0x2')]('string','variable',_0xcab2('0x3'),_0xcab2('0x4'),'picklist'),'defaultValue':_0xcab2('0x5')},'content':{'type':Sequelize[_0xcab2('0x6')]},'key':{'type':Sequelize[_0xcab2('0x6')]},'keyType':{'type':Sequelize[_0xcab2('0x2')](_0xcab2('0x5'),_0xcab2('0x7'),_0xcab2('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xcab2('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xcab2('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcab2('0x6')]}};
\ No newline at end of file
index a24a12a..99e8499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1b=['../../config/utils','../../config/environment','../../config/license/util','status','offset','undefined','limit','count','set','apply','reject','update','destroy','then','end','error','stack','name','index','map','ZendeskField','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','keys','length','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x457d66,_0xde44ff){var _0x3b9b1e=function(_0x1fb19f){while(--_0x1fb19f){_0x457d66['push'](_0x457d66['shift']());}};_0x3b9b1e(++_0xde44ff);}(_0x1d1b,0x110));var _0xb1d1=function(_0x4f1961,_0x3b06b2){_0x4f1961=_0x4f1961-0x0;var _0x1388c3=_0x1d1b[_0x4f1961];return _0x1388c3;};'use strict';var emlformat=require(_0xb1d1('0x0'));var rimraf=require(_0xb1d1('0x1'));var zipdir=require(_0xb1d1('0x2'));var jsonpatch=require(_0xb1d1('0x3'));var rp=require(_0xb1d1('0x4'));var moment=require(_0xb1d1('0x5'));var BPromise=require(_0xb1d1('0x6'));var Mustache=require('mustache');var util=require(_0xb1d1('0x7'));var path=require(_0xb1d1('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb1d1('0x9'));var fs=require('fs');var fs_extra=require(_0xb1d1('0xa'));var _=require(_0xb1d1('0xb'));var squel=require(_0xb1d1('0xc'));var crypto=require(_0xb1d1('0xd'));var jsforce=require(_0xb1d1('0xe'));var deskjs=require(_0xb1d1('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb1d1('0x10'));var Papa=require(_0xb1d1('0x11'));var Redis=require(_0xb1d1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb1d1('0x13'));var as=require(_0xb1d1('0x14'));var hardwareService=require(_0xb1d1('0x15'));var logger=require(_0xb1d1('0x16'))(_0xb1d1('0x17'));var utils=require(_0xb1d1('0x18'));var config=require(_0xb1d1('0x19'));var licenseUtil=require(_0xb1d1('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51298d,_0x3af21e){_0x3af21e=_0x3af21e||0xcc;return function(_0x5a273b){if(_0x5a273b){return _0x51298d['sendStatus'](_0x3af21e);}return _0x51298d[_0xb1d1('0x1b')](_0x3af21e)['end']();};}function respondWithResult(_0x340188,_0x390318){_0x390318=_0x390318||0xc8;return function(_0x333b41){if(_0x333b41){return _0x340188[_0xb1d1('0x1b')](_0x390318)['json'](_0x333b41);}};}function respondWithFilteredResult(_0x78c813,_0x2f8c8e){return function(_0x135c0d){if(_0x135c0d){var _0x482703=typeof _0x2f8c8e[_0xb1d1('0x1c')]===_0xb1d1('0x1d')&&typeof _0x2f8c8e[_0xb1d1('0x1e')]===_0xb1d1('0x1d');var _0x37b636=_0x135c0d['count'];var _0x1a2891=_0x482703?0x0:_0x2f8c8e[_0xb1d1('0x1c')];var _0x29ea0c=_0x482703?_0x135c0d[_0xb1d1('0x1f')]:_0x2f8c8e[_0xb1d1('0x1c')]+_0x2f8c8e[_0xb1d1('0x1e')];var _0x2f6e2e;if(_0x29ea0c>=_0x37b636){_0x29ea0c=_0x37b636;_0x2f6e2e=0xc8;}else{_0x2f6e2e=0xce;}_0x78c813[_0xb1d1('0x1b')](_0x2f6e2e);return _0x78c813[_0xb1d1('0x20')]('Content-Range',_0x1a2891+'-'+_0x29ea0c+'/'+_0x37b636)['json'](_0x135c0d);}return null;};}function patchUpdates(_0x3c1dc2){return function(_0x25e968){try{jsonpatch[_0xb1d1('0x21')](_0x25e968,_0x3c1dc2,!![]);}catch(_0x3828b6){return BPromise[_0xb1d1('0x22')](_0x3828b6);}return _0x25e968['save']();};}function saveUpdates(_0x27ec8c,_0x1ed21a){return function(_0x50e89c){if(_0x50e89c){return _0x50e89c[_0xb1d1('0x23')](_0x27ec8c)['then'](function(_0x49fb0a){return _0x49fb0a;});}return null;};}function removeEntity(_0x3ce368,_0x4a24b3){return function(_0x36f5f8){if(_0x36f5f8){return _0x36f5f8[_0xb1d1('0x24')]()[_0xb1d1('0x25')](function(){_0x3ce368[_0xb1d1('0x1b')](0xcc)[_0xb1d1('0x26')]();});}};}function handleEntityNotFound(_0x1aec14,_0x3c50c8){return function(_0x3d7cb9){if(!_0x3d7cb9){_0x1aec14['sendStatus'](0x194);}return _0x3d7cb9;};}function handleError(_0x4a5d91,_0x3ae4b7){_0x3ae4b7=_0x3ae4b7||0x1f4;return function(_0x523315){logger[_0xb1d1('0x27')](_0x523315[_0xb1d1('0x28')]);if(_0x523315[_0xb1d1('0x29')]){delete _0x523315['name'];}_0x4a5d91[_0xb1d1('0x1b')](_0x3ae4b7)['send'](_0x523315);};}exports[_0xb1d1('0x2a')]=function(_0x1cf2d0,_0x12a765){var _0xd51718={},_0x584a88={},_0x27d019={'count':0x0,'rows':[]};var _0x500884=_[_0xb1d1('0x2b')](db[_0xb1d1('0x2c')][_0xb1d1('0x2d')],function(_0x593a8a){return{'name':_0x593a8a[_0xb1d1('0x2e')],'type':_0x593a8a[_0xb1d1('0x2f')][_0xb1d1('0x30')]};});_0x584a88['model']=_[_0xb1d1('0x2b')](_0x500884,_0xb1d1('0x29'));_0x584a88[_0xb1d1('0x31')]=_['keys'](_0x1cf2d0[_0xb1d1('0x31')]);_0x584a88[_0xb1d1('0x32')]=_[_0xb1d1('0x33')](_0x584a88[_0xb1d1('0x34')],_0x584a88[_0xb1d1('0x31')]);_0xd51718[_0xb1d1('0x35')]=_['intersection'](_0x584a88[_0xb1d1('0x34')],qs[_0xb1d1('0x36')](_0x1cf2d0['query'][_0xb1d1('0x36')]));_0xd51718[_0xb1d1('0x35')]=_0xd51718['attributes']['length']?_0xd51718[_0xb1d1('0x35')]:_0x584a88[_0xb1d1('0x34')];if(!_0x1cf2d0['query'][_0xb1d1('0x37')](_0xb1d1('0x38'))){_0xd51718['limit']=qs[_0xb1d1('0x1e')](_0x1cf2d0[_0xb1d1('0x31')]['limit']);_0xd51718['offset']=qs[_0xb1d1('0x1c')](_0x1cf2d0[_0xb1d1('0x31')]['offset']);}_0xd51718['order']=qs['sort'](_0x1cf2d0[_0xb1d1('0x31')][_0xb1d1('0x39')]);_0xd51718[_0xb1d1('0x3a')]=qs[_0xb1d1('0x32')](_[_0xb1d1('0x3b')](_0x1cf2d0[_0xb1d1('0x31')],_0x584a88[_0xb1d1('0x32')]),_0x500884);if(_0x1cf2d0[_0xb1d1('0x31')]['filter']){_0xd51718['where']=_[_0xb1d1('0x3c')](_0xd51718[_0xb1d1('0x3a')],{'$or':_[_0xb1d1('0x2b')](_0x500884,function(_0x3eb4b2){if(_0x3eb4b2[_0xb1d1('0x2f')]!==_0xb1d1('0x3d')){var _0x44bd48={};_0x44bd48[_0x3eb4b2[_0xb1d1('0x29')]]={'$like':'%'+_0x1cf2d0['query']['filter']+'%'};return _0x44bd48;}})});}_0xd51718=_[_0xb1d1('0x3c')]({},_0xd51718,_0x1cf2d0[_0xb1d1('0x3e')]);var _0x4334a2={'where':_0xd51718['where']};return db['ZendeskField'][_0xb1d1('0x1f')](_0x4334a2)[_0xb1d1('0x25')](function(_0x3b2407){_0x27d019[_0xb1d1('0x1f')]=_0x3b2407;if(_0x1cf2d0[_0xb1d1('0x31')][_0xb1d1('0x3f')]){_0xd51718['include']=[{'all':!![]}];}return db['ZendeskField'][_0xb1d1('0x40')](_0xd51718);})[_0xb1d1('0x25')](function(_0x3fa843){_0x27d019['rows']=_0x3fa843;return _0x27d019;})[_0xb1d1('0x25')](respondWithFilteredResult(_0x12a765,_0xd51718))[_0xb1d1('0x41')](handleError(_0x12a765,null));};exports[_0xb1d1('0x42')]=function(_0x369530,_0x54cd8f){var _0x4f3eab={'raw':!![],'where':{'id':_0x369530[_0xb1d1('0x43')]['id']}},_0x59d4e8={};_0x59d4e8[_0xb1d1('0x34')]=_[_0xb1d1('0x44')](db['ZendeskField'][_0xb1d1('0x2d')]);_0x59d4e8[_0xb1d1('0x31')]=_[_0xb1d1('0x44')](_0x369530['query']);_0x59d4e8[_0xb1d1('0x32')]=_[_0xb1d1('0x33')](_0x59d4e8[_0xb1d1('0x34')],_0x59d4e8[_0xb1d1('0x31')]);_0x4f3eab[_0xb1d1('0x35')]=_[_0xb1d1('0x33')](_0x59d4e8[_0xb1d1('0x34')],qs[_0xb1d1('0x36')](_0x369530[_0xb1d1('0x31')]['fields']));_0x4f3eab['attributes']=_0x4f3eab[_0xb1d1('0x35')][_0xb1d1('0x45')]?_0x4f3eab[_0xb1d1('0x35')]:_0x59d4e8[_0xb1d1('0x34')];if(_0x369530[_0xb1d1('0x31')][_0xb1d1('0x3f')]){_0x4f3eab[_0xb1d1('0x46')]=[{'all':!![]}];}_0x4f3eab=_[_0xb1d1('0x3c')]({},_0x4f3eab,_0x369530[_0xb1d1('0x3e')]);return db[_0xb1d1('0x2c')][_0xb1d1('0x47')](_0x4f3eab)['then'](handleEntityNotFound(_0x54cd8f,null))['then'](respondWithResult(_0x54cd8f,null))[_0xb1d1('0x41')](handleError(_0x54cd8f,null));};exports['create']=function(_0x1c333c,_0x113d7c){return db[_0xb1d1('0x2c')][_0xb1d1('0x48')](_0x1c333c[_0xb1d1('0x49')],{})[_0xb1d1('0x25')](respondWithResult(_0x113d7c,0xc9))[_0xb1d1('0x41')](handleError(_0x113d7c,null));};exports[_0xb1d1('0x23')]=function(_0x3bdfb6,_0x2d624c){if(_0x3bdfb6[_0xb1d1('0x49')]['id']){delete _0x3bdfb6[_0xb1d1('0x49')]['id'];}return db[_0xb1d1('0x2c')][_0xb1d1('0x47')]({'where':{'id':_0x3bdfb6[_0xb1d1('0x43')]['id']}})[_0xb1d1('0x25')](handleEntityNotFound(_0x2d624c,null))[_0xb1d1('0x25')](saveUpdates(_0x3bdfb6[_0xb1d1('0x49')],null))[_0xb1d1('0x25')](respondWithResult(_0x2d624c,null))['catch'](handleError(_0x2d624c,null));};exports[_0xb1d1('0x24')]=function(_0x20d6e1,_0x1c8431){return db[_0xb1d1('0x2c')]['find']({'where':{'id':_0x20d6e1[_0xb1d1('0x43')]['id']}})['then'](handleEntityNotFound(_0x1c8431,null))[_0xb1d1('0x25')](removeEntity(_0x1c8431,null))[_0xb1d1('0x41')](handleError(_0x1c8431,null));};
\ No newline at end of file
+var _0x3385=['path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','ZendeskField','rawAttributes','fieldName','key','model','map','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','include','catch','params','keys','intersection','includeAll','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x915439,_0x15543c){var _0x4e1ea6=function(_0x404bcb){while(--_0x404bcb){_0x915439['push'](_0x915439['shift']());}};_0x4e1ea6(++_0x15543c);}(_0x3385,0x1ae));var _0x5338=function(_0x36909d,_0x2795f1){_0x36909d=_0x36909d-0x0;var _0x1fd29d=_0x3385[_0x36909d];return _0x1fd29d;};'use strict';var emlformat=require(_0x5338('0x0'));var rimraf=require(_0x5338('0x1'));var zipdir=require(_0x5338('0x2'));var jsonpatch=require(_0x5338('0x3'));var rp=require(_0x5338('0x4'));var moment=require(_0x5338('0x5'));var BPromise=require(_0x5338('0x6'));var Mustache=require(_0x5338('0x7'));var util=require('util');var path=require(_0x5338('0x8'));var sox=require(_0x5338('0x9'));var csv=require(_0x5338('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5338('0xb'));var _=require(_0x5338('0xc'));var squel=require('squel');var crypto=require(_0x5338('0xd'));var jsforce=require(_0x5338('0xe'));var deskjs=require(_0x5338('0xf'));var toCsv=require(_0x5338('0xa'));var querystring=require(_0x5338('0x10'));var Papa=require(_0x5338('0x11'));var Redis=require(_0x5338('0x12'));var authService=require(_0x5338('0x13'));var qs=require(_0x5338('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5338('0x15'));var utils=require('../../config/utils');var config=require(_0x5338('0x16'));var licenseUtil=require(_0x5338('0x17'));var db=require(_0x5338('0x18'))['db'];function respondWithStatusCode(_0x4a0625,_0x1c243e){_0x1c243e=_0x1c243e||0xcc;return function(_0x303db0){if(_0x303db0){return _0x4a0625[_0x5338('0x19')](_0x1c243e);}return _0x4a0625[_0x5338('0x1a')](_0x1c243e)[_0x5338('0x1b')]();};}function respondWithResult(_0x1af914,_0xba9bac){_0xba9bac=_0xba9bac||0xc8;return function(_0x55c0b7){if(_0x55c0b7){return _0x1af914[_0x5338('0x1a')](_0xba9bac)[_0x5338('0x1c')](_0x55c0b7);}};}function respondWithFilteredResult(_0x50b3c3,_0x4765e4){return function(_0x3857f5){if(_0x3857f5){var _0x4b3eb0=typeof _0x4765e4['offset']===_0x5338('0x1d')&&typeof _0x4765e4['limit']==='undefined';var _0x5cef72=_0x3857f5[_0x5338('0x1e')];var _0x5e7e21=_0x4b3eb0?0x0:_0x4765e4['offset'];var _0x4c17b2=_0x4b3eb0?_0x3857f5['count']:_0x4765e4[_0x5338('0x1f')]+_0x4765e4[_0x5338('0x20')];var _0x8bf017;if(_0x4c17b2>=_0x5cef72){_0x4c17b2=_0x5cef72;_0x8bf017=0xc8;}else{_0x8bf017=0xce;}_0x50b3c3[_0x5338('0x1a')](_0x8bf017);return _0x50b3c3[_0x5338('0x21')]('Content-Range',_0x5e7e21+'-'+_0x4c17b2+'/'+_0x5cef72)[_0x5338('0x1c')](_0x3857f5);}return null;};}function patchUpdates(_0x5ef9d3){return function(_0x2dd28e){try{jsonpatch[_0x5338('0x22')](_0x2dd28e,_0x5ef9d3,!![]);}catch(_0x372408){return BPromise[_0x5338('0x23')](_0x372408);}return _0x2dd28e[_0x5338('0x24')]();};}function saveUpdates(_0x4a1f33,_0x3515ac){return function(_0x399feb){if(_0x399feb){return _0x399feb[_0x5338('0x25')](_0x4a1f33)[_0x5338('0x26')](function(_0x51ea07){return _0x51ea07;});}return null;};}function removeEntity(_0xb48ce4,_0x3bd1ae){return function(_0x2463af){if(_0x2463af){return _0x2463af[_0x5338('0x27')]()[_0x5338('0x26')](function(){_0xb48ce4[_0x5338('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe6d6e,_0x4170fb){return function(_0x530fd7){if(!_0x530fd7){_0xe6d6e[_0x5338('0x19')](0x194);}return _0x530fd7;};}function handleError(_0x1f48b0,_0x31f303){_0x31f303=_0x31f303||0x1f4;return function(_0xbe6c2f){logger[_0x5338('0x28')](_0xbe6c2f[_0x5338('0x29')]);if(_0xbe6c2f[_0x5338('0x2a')]){delete _0xbe6c2f[_0x5338('0x2a')];}_0x1f48b0[_0x5338('0x1a')](_0x31f303)['send'](_0xbe6c2f);};}exports['index']=function(_0x36aba2,_0x6fc0fc){var _0x3eea26={},_0x5d24b2={},_0x205186={'count':0x0,'rows':[]};var _0x5879de=_['map'](db[_0x5338('0x2b')][_0x5338('0x2c')],function(_0x28911c){return{'name':_0x28911c[_0x5338('0x2d')],'type':_0x28911c['type'][_0x5338('0x2e')]};});_0x5d24b2[_0x5338('0x2f')]=_[_0x5338('0x30')](_0x5879de,_0x5338('0x2a'));_0x5d24b2['query']=_['keys'](_0x36aba2[_0x5338('0x31')]);_0x5d24b2[_0x5338('0x32')]=_['intersection'](_0x5d24b2[_0x5338('0x2f')],_0x5d24b2['query']);_0x3eea26[_0x5338('0x33')]=_['intersection'](_0x5d24b2[_0x5338('0x2f')],qs['fields'](_0x36aba2[_0x5338('0x31')][_0x5338('0x34')]));_0x3eea26[_0x5338('0x33')]=_0x3eea26['attributes'][_0x5338('0x35')]?_0x3eea26[_0x5338('0x33')]:_0x5d24b2[_0x5338('0x2f')];if(!_0x36aba2[_0x5338('0x31')][_0x5338('0x36')](_0x5338('0x37'))){_0x3eea26[_0x5338('0x20')]=qs['limit'](_0x36aba2['query'][_0x5338('0x20')]);_0x3eea26['offset']=qs['offset'](_0x36aba2[_0x5338('0x31')][_0x5338('0x1f')]);}_0x3eea26[_0x5338('0x38')]=qs[_0x5338('0x39')](_0x36aba2[_0x5338('0x31')]['sort']);_0x3eea26[_0x5338('0x3a')]=qs['filters'](_['pick'](_0x36aba2[_0x5338('0x31')],_0x5d24b2[_0x5338('0x32')]),_0x5879de);if(_0x36aba2[_0x5338('0x31')][_0x5338('0x3b')]){_0x3eea26[_0x5338('0x3a')]=_[_0x5338('0x3c')](_0x3eea26[_0x5338('0x3a')],{'$or':_[_0x5338('0x30')](_0x5879de,function(_0x3708bb){if(_0x3708bb[_0x5338('0x3d')]!==_0x5338('0x3e')){var _0x30b4a7={};_0x30b4a7[_0x3708bb['name']]={'$like':'%'+_0x36aba2[_0x5338('0x31')][_0x5338('0x3b')]+'%'};return _0x30b4a7;}})});}_0x3eea26=_[_0x5338('0x3c')]({},_0x3eea26,_0x36aba2[_0x5338('0x3f')]);var _0x69e392={'where':_0x3eea26[_0x5338('0x3a')]};return db[_0x5338('0x2b')]['count'](_0x69e392)['then'](function(_0x1be80b){_0x205186[_0x5338('0x1e')]=_0x1be80b;if(_0x36aba2[_0x5338('0x31')]['includeAll']){_0x3eea26[_0x5338('0x40')]=[{'all':!![]}];}return db['ZendeskField']['findAll'](_0x3eea26);})[_0x5338('0x26')](function(_0x37bed4){_0x205186['rows']=_0x37bed4;return _0x205186;})[_0x5338('0x26')](respondWithFilteredResult(_0x6fc0fc,_0x3eea26))[_0x5338('0x41')](handleError(_0x6fc0fc,null));};exports['show']=function(_0x42ce7a,_0x5ccfdf){var _0x151ebc={'raw':!![],'where':{'id':_0x42ce7a[_0x5338('0x42')]['id']}},_0x19c31e={};_0x19c31e[_0x5338('0x2f')]=_[_0x5338('0x43')](db[_0x5338('0x2b')]['rawAttributes']);_0x19c31e[_0x5338('0x31')]=_['keys'](_0x42ce7a[_0x5338('0x31')]);_0x19c31e[_0x5338('0x32')]=_[_0x5338('0x44')](_0x19c31e[_0x5338('0x2f')],_0x19c31e[_0x5338('0x31')]);_0x151ebc[_0x5338('0x33')]=_[_0x5338('0x44')](_0x19c31e['model'],qs[_0x5338('0x34')](_0x42ce7a[_0x5338('0x31')][_0x5338('0x34')]));_0x151ebc['attributes']=_0x151ebc[_0x5338('0x33')][_0x5338('0x35')]?_0x151ebc[_0x5338('0x33')]:_0x19c31e[_0x5338('0x2f')];if(_0x42ce7a[_0x5338('0x31')][_0x5338('0x45')]){_0x151ebc[_0x5338('0x40')]=[{'all':!![]}];}_0x151ebc=_[_0x5338('0x3c')]({},_0x151ebc,_0x42ce7a[_0x5338('0x3f')]);return db['ZendeskField'][_0x5338('0x46')](_0x151ebc)[_0x5338('0x26')](handleEntityNotFound(_0x5ccfdf,null))['then'](respondWithResult(_0x5ccfdf,null))[_0x5338('0x41')](handleError(_0x5ccfdf,null));};exports[_0x5338('0x47')]=function(_0x3e8c83,_0x57f9cb){return db[_0x5338('0x2b')][_0x5338('0x47')](_0x3e8c83['body'],{})[_0x5338('0x26')](respondWithResult(_0x57f9cb,0xc9))[_0x5338('0x41')](handleError(_0x57f9cb,null));};exports['update']=function(_0x10e411,_0x57fb9c){if(_0x10e411[_0x5338('0x48')]['id']){delete _0x10e411[_0x5338('0x48')]['id'];}return db['ZendeskField'][_0x5338('0x46')]({'where':{'id':_0x10e411[_0x5338('0x42')]['id']}})[_0x5338('0x26')](handleEntityNotFound(_0x57fb9c,null))[_0x5338('0x26')](saveUpdates(_0x10e411[_0x5338('0x48')],null))[_0x5338('0x26')](respondWithResult(_0x57fb9c,null))[_0x5338('0x41')](handleError(_0x57fb9c,null));};exports['destroy']=function(_0x32e87c,_0x2f576c){return db['ZendeskField'][_0x5338('0x46')]({'where':{'id':_0x32e87c[_0x5338('0x42')]['id']}})[_0x5338('0x26')](handleEntityNotFound(_0x2f576c,null))['then'](removeEntity(_0x2f576c,null))['catch'](handleError(_0x2f576c,null));};
\ No newline at end of file
index 4699012..b6a19ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85af=['exports','define','ZendeskField','idField','FieldId','lodash','api','moment','bluebird','rimraf','../../config/environment','./intZendeskField.attributes'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x85af,0x1b5));var _0xf85a=function(_0x84dd64,_0x496596){_0x84dd64=_0x84dd64-0x0;var _0xb9bb2c=_0x85af[_0x84dd64];return _0xb9bb2c;};'use strict';var _=require(_0xf85a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf85a('0x1'));var moment=require(_0xf85a('0x2'));var BPromise=require(_0xf85a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf85a('0x4'));var config=require(_0xf85a('0x5'));var attributes=require(_0xf85a('0x6'));module[_0xf85a('0x7')]=function(_0x516787,_0x4c3cce){return _0x516787[_0xf85a('0x8')](_0xf85a('0x9'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0xf85a('0xa'),_0xf85a('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa2b=['lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','zendesk_unique_index','FieldId'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xfa2b,0x75));var _0xbfa2=function(_0x175127,_0x1207b1){_0x175127=_0x175127-0x0;var _0x4374f1=_0xfa2b[_0x175127];return _0x4374f1;};'use strict';var _=require(_0xbfa2('0x0'));var util=require('util');var logger=require(_0xbfa2('0x1'))('api');var moment=require(_0xbfa2('0x2'));var BPromise=require(_0xbfa2('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbfa2('0x4'));var rimraf=require(_0xbfa2('0x5'));var config=require(_0xbfa2('0x6'));var attributes=require(_0xbfa2('0x7'));module[_0xbfa2('0x8')]=function(_0x5dcecf,_0x29c47d){return _0x5dcecf[_0xbfa2('0x9')](_0xbfa2('0xa'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0xbfa2('0xb'),'fields':['idField',_0xbfa2('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 50c5abb..4601c3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f3=['rpc','../../config/environment','client','http','request','info','ZendeskField,\x20%s,\x20%s','debug','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x3d6333,_0x579ba0){var _0x23fa2c=function(_0x18da32){while(--_0x18da32){_0x3d6333['push'](_0x3d6333['shift']());}};_0x23fa2c(++_0x579ba0);}(_0x32f3,0xe1));var _0x332f=function(_0x521720,_0x4f80a1){_0x521720=_0x521720-0x0;var _0x52be15=_0x32f3[_0x521720];return _0x52be15;};'use strict';var _=require(_0x332f('0x0'));var util=require(_0x332f('0x1'));var moment=require(_0x332f('0x2'));var BPromise=require(_0x332f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x332f('0x4'));var db=require(_0x332f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x332f('0x6'));var config=require(_0x332f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x332f('0x8')][_0x332f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23ad6f,_0x8bbbeb,_0x316696){return new BPromise(function(_0x2deee3,_0x5cbd1a){return client[_0x332f('0xa')](_0x23ad6f,_0x316696)['then'](function(_0x5be766){logger[_0x332f('0xb')](_0x332f('0xc'),_0x8bbbeb,'request\x20sent');logger[_0x332f('0xd')](_0x332f('0xe'),_0x8bbbeb,_0x332f('0xf'),JSON[_0x332f('0x10')](_0x5be766));if(_0x5be766[_0x332f('0x11')]){if(_0x5be766['error'][_0x332f('0x12')]===0x1f4){logger[_0x332f('0x11')](_0x332f('0xc'),_0x8bbbeb,_0x5be766[_0x332f('0x11')][_0x332f('0x13')]);return _0x5cbd1a(_0x5be766[_0x332f('0x11')]['message']);}logger[_0x332f('0x11')](_0x332f('0xc'),_0x8bbbeb,_0x5be766[_0x332f('0x11')][_0x332f('0x13')]);return _0x2deee3(_0x5be766[_0x332f('0x11')][_0x332f('0x13')]);}else{logger[_0x332f('0xb')]('ZendeskField,\x20%s,\x20%s',_0x8bbbeb,_0x332f('0xf'));_0x2deee3(_0x5be766[_0x332f('0x14')][_0x332f('0x13')]);}})['catch'](function(_0x2035cb){logger[_0x332f('0x11')](_0x332f('0xc'),_0x8bbbeb,_0x2035cb);_0x5cbd1a(_0x2035cb);});});}
\ No newline at end of file
+var _0xc3ef=['then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','error','code','message','info','result','lodash','util','moment','bluebird','client','http'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xc3ef,0x9a));var _0xfc3e=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc3ef[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0xfc3e('0x0'));var util=require(_0xfc3e('0x1'));var moment=require(_0xfc3e('0x2'));var BPromise=require(_0xfc3e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xfc3e('0x4')][_0xfc3e('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x15d3bf,_0x4ce2cc,_0x54a5f8){return new BPromise(function(_0x5cfc68,_0x148cf9){return client['request'](_0x15d3bf,_0x54a5f8)[_0xfc3e('0x6')](function(_0x275bc8){logger['info'](_0xfc3e('0x7'),_0x4ce2cc,_0xfc3e('0x8'));logger[_0xfc3e('0x9')](_0xfc3e('0xa'),_0x4ce2cc,_0xfc3e('0x8'),JSON['stringify'](_0x275bc8));if(_0x275bc8[_0xfc3e('0xb')]){if(_0x275bc8[_0xfc3e('0xb')][_0xfc3e('0xc')]===0x1f4){logger['error'](_0xfc3e('0x7'),_0x4ce2cc,_0x275bc8[_0xfc3e('0xb')][_0xfc3e('0xd')]);return _0x148cf9(_0x275bc8[_0xfc3e('0xb')][_0xfc3e('0xd')]);}logger['error'](_0xfc3e('0x7'),_0x4ce2cc,_0x275bc8['error'][_0xfc3e('0xd')]);return _0x5cfc68(_0x275bc8[_0xfc3e('0xb')][_0xfc3e('0xd')]);}else{logger[_0xfc3e('0xe')](_0xfc3e('0x7'),_0x4ce2cc,_0xfc3e('0x8'));_0x5cfc68(_0x275bc8[_0xfc3e('0xf')][_0xfc3e('0xd')]);}})['catch'](function(_0xc74332){logger['error'](_0xfc3e('0x7'),_0x4ce2cc,_0xc74332);_0x148cf9(_0xc74332);});});}
\ No newline at end of file
index a7e4f85..fd0228b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eec=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x36f184,_0x2a70dc){var _0x4c69da=function(_0x19c765){while(--_0x19c765){_0x36f184['push'](_0x36f184['shift']());}};_0x4c69da(++_0x2a70dc);}(_0x1eec,0xde));var _0xc1ee=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0x1eec[_0x1deb03];return _0x189fe7;};'use strict';var multer=require('multer');var util=require(_0xc1ee('0x0'));var path=require('path');var timeout=require(_0xc1ee('0x1'));var express=require(_0xc1ee('0x2'));var router=express['Router']();var fs_extra=require(_0xc1ee('0x3'));var auth=require(_0xc1ee('0x4'));var interaction=require(_0xc1ee('0x5'));var config=require(_0xc1ee('0x6'));var controller=require(_0xc1ee('0x7'));router['get']('/',auth[_0xc1ee('0x8')](),controller[_0xc1ee('0x9')]);router[_0xc1ee('0xa')](_0xc1ee('0xb'),auth['isAuthenticated'](),controller[_0xc1ee('0xc')]);router['get'](_0xc1ee('0xd'),auth[_0xc1ee('0x8')](),controller[_0xc1ee('0xe')]);router[_0xc1ee('0xa')](_0xc1ee('0xf'),auth[_0xc1ee('0x8')](),controller[_0xc1ee('0x10')]);router[_0xc1ee('0x11')]('/',auth[_0xc1ee('0x8')](),controller[_0xc1ee('0x12')]);router['post'](_0xc1ee('0xd'),auth['isAuthenticated'](),controller[_0xc1ee('0x13')]);router[_0xc1ee('0x14')](_0xc1ee('0xb'),auth['isAuthenticated'](),controller[_0xc1ee('0x15')]);router[_0xc1ee('0x16')](_0xc1ee('0xb'),auth[_0xc1ee('0x8')](),controller[_0xc1ee('0x17')]);module[_0xc1ee('0x18')]=router;
\ No newline at end of file
+var _0xf14b=['post','create','addConfiguration','put','update','delete','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0xf14b,0xb8));var _0xbf14=function(_0x60290f,_0x1da37a){_0x60290f=_0x60290f-0x0;var _0x38eaa0=_0xf14b[_0x60290f];return _0x38eaa0;};'use strict';var multer=require('multer');var util=require(_0xbf14('0x0'));var path=require('path');var timeout=require(_0xbf14('0x1'));var express=require(_0xbf14('0x2'));var router=express['Router']();var fs_extra=require(_0xbf14('0x3'));var auth=require(_0xbf14('0x4'));var interaction=require(_0xbf14('0x5'));var config=require(_0xbf14('0x6'));var controller=require(_0xbf14('0x7'));router['get']('/',auth[_0xbf14('0x8')](),controller[_0xbf14('0x9')]);router[_0xbf14('0xa')](_0xbf14('0xb'),auth['isAuthenticated'](),controller[_0xbf14('0xc')]);router[_0xbf14('0xa')](_0xbf14('0xd'),auth['isAuthenticated'](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xbf14('0x8')](),controller['getFields']);router[_0xbf14('0xe')]('/',auth[_0xbf14('0x8')](),controller[_0xbf14('0xf')]);router[_0xbf14('0xe')](_0xbf14('0xd'),auth[_0xbf14('0x8')](),controller[_0xbf14('0x10')]);router[_0xbf14('0x11')](_0xbf14('0xb'),auth[_0xbf14('0x8')](),controller[_0xbf14('0x12')]);router[_0xbf14('0x13')](_0xbf14('0xb'),auth[_0xbf14('0x8')](),controller[_0xbf14('0x14')]);module[_0xbf14('0x15')]=router;
\ No newline at end of file
index 2953ec7..0b4147f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['exports','STRING'];(function(_0x450988,_0x278a26){var _0x446324=function(_0x3212d7){while(--_0x3212d7){_0x450988['push'](_0x450988['shift']());}};_0x446324(++_0x278a26);}(_0x99e9,0xb4));var _0x999e=function(_0xabbd2f,_0x44d05a){_0xabbd2f=_0xabbd2f-0x0;var _0x34a040=_0x99e9[_0xabbd2f];return _0x34a040;};'use strict';var Sequelize=require('sequelize');module[_0x999e('0x0')]={'name':{'type':Sequelize[_0x999e('0x1')]},'description':{'type':Sequelize[_0x999e('0x1')]},'host':{'type':Sequelize[_0x999e('0x1')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x999e('0x1')]},'clientSecret':{'type':Sequelize[_0x999e('0x1')]},'serverUrl':{'type':Sequelize[_0x999e('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x999e('0x1')]}};
\ No newline at end of file
+var _0xedd9=['exports','STRING'];(function(_0x134061,_0x4a7337){var _0x4f0ff5=function(_0x47dc5b){while(--_0x47dc5b){_0x134061['push'](_0x134061['shift']());}};_0x4f0ff5(++_0x4a7337);}(_0xedd9,0xfc));var _0x9edd=function(_0x4584f1,_0x566d68){_0x4584f1=_0x4584f1-0x0;var _0x34fe53=_0xedd9[_0x4584f1];return _0x34fe53;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'name':{'type':Sequelize[_0x9edd('0x1')]},'description':{'type':Sequelize[_0x9edd('0x1')]},'host':{'type':Sequelize[_0x9edd('0x1')]},'zone':{'type':Sequelize[_0x9edd('0x1')]},'clientId':{'type':Sequelize[_0x9edd('0x1')]},'clientSecret':{'type':Sequelize[_0x9edd('0x1')]},'serverUrl':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x9edd('0x1')]}};
\ No newline at end of file
index ea3892f..f5fde87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98db=['lodash','squel','crypto','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZohoAccount','includeAll','include','findAll','rows','show','params','find','create','body','catch','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ZohoField','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','zone','serverUrl','zoho.eu','com','slice','substring','lastIndexOf','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','system_mandatory','push','display_label','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x383356,_0x33d2f5){var _0x32ee5a=function(_0x2741db){while(--_0x2741db){_0x383356['push'](_0x383356['shift']());}};_0x32ee5a(++_0x33d2f5);}(_0x98db,0x77));var _0xb98d=function(_0x4ad0f7,_0x1920b0){_0x4ad0f7=_0x4ad0f7-0x0;var _0x30f5c8=_0x98db[_0x4ad0f7];return _0x30f5c8;};'use strict';var emlformat=require(_0xb98d('0x0'));var rimraf=require(_0xb98d('0x1'));var zipdir=require(_0xb98d('0x2'));var jsonpatch=require(_0xb98d('0x3'));var rp=require(_0xb98d('0x4'));var moment=require(_0xb98d('0x5'));var BPromise=require(_0xb98d('0x6'));var Mustache=require(_0xb98d('0x7'));var util=require(_0xb98d('0x8'));var path=require(_0xb98d('0x9'));var sox=require(_0xb98d('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb98d('0xb'));var squel=require(_0xb98d('0xc'));var crypto=require(_0xb98d('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb98d('0xe'));var querystring=require(_0xb98d('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb98d('0x10'));var qs=require(_0xb98d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb98d('0x12'))(_0xb98d('0x13'));var utils=require(_0xb98d('0x14'));var config=require(_0xb98d('0x15'));var licenseUtil=require(_0xb98d('0x16'));var db=require(_0xb98d('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x329628,_0x565b5d){_0x565b5d=_0x565b5d||0xcc;return function(_0x16c72d){if(_0x16c72d){return _0x329628[_0xb98d('0x18')](_0x565b5d);}return _0x329628[_0xb98d('0x19')](_0x565b5d)[_0xb98d('0x1a')]();};}function respondWithResult(_0x2062b6,_0x5348e9){_0x5348e9=_0x5348e9||0xc8;return function(_0x6cb999){if(_0x6cb999){return _0x2062b6[_0xb98d('0x19')](_0x5348e9)[_0xb98d('0x1b')](_0x6cb999);}};}function respondWithFilteredResult(_0x42d9b4,_0x1f3d2f){return function(_0x5e86a8){if(_0x5e86a8){var _0x6fa8e6=typeof _0x1f3d2f[_0xb98d('0x1c')]==='undefined'&&typeof _0x1f3d2f[_0xb98d('0x1d')]===_0xb98d('0x1e');var _0x504b12=_0x5e86a8['count'];var _0x59bf8c=_0x6fa8e6?0x0:_0x1f3d2f[_0xb98d('0x1c')];var _0x15d8ac=_0x6fa8e6?_0x5e86a8[_0xb98d('0x1f')]:_0x1f3d2f[_0xb98d('0x1c')]+_0x1f3d2f[_0xb98d('0x1d')];var _0x170b4f;if(_0x15d8ac>=_0x504b12){_0x15d8ac=_0x504b12;_0x170b4f=0xc8;}else{_0x170b4f=0xce;}_0x42d9b4['status'](_0x170b4f);return _0x42d9b4['set'](_0xb98d('0x20'),_0x59bf8c+'-'+_0x15d8ac+'/'+_0x504b12)[_0xb98d('0x1b')](_0x5e86a8);}return null;};}function patchUpdates(_0x278c9f){return function(_0x51a5ff){try{jsonpatch[_0xb98d('0x21')](_0x51a5ff,_0x278c9f,!![]);}catch(_0x23d709){return BPromise['reject'](_0x23d709);}return _0x51a5ff['save']();};}function saveUpdates(_0x3b54bf,_0x805316){return function(_0x1f4648){if(_0x1f4648){return _0x1f4648[_0xb98d('0x22')](_0x3b54bf)[_0xb98d('0x23')](function(_0x17734f){return _0x17734f;});}return null;};}function removeEntity(_0x183f40,_0x139c0c){return function(_0x52f097){if(_0x52f097){return _0x52f097[_0xb98d('0x24')]()[_0xb98d('0x23')](function(){_0x183f40[_0xb98d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d16ea,_0x2d90fd){return function(_0x2da15b){if(!_0x2da15b){_0x4d16ea[_0xb98d('0x18')](0x194);}return _0x2da15b;};}function handleError(_0x426c56,_0x5eae0b){_0x5eae0b=_0x5eae0b||0x1f4;return function(_0x527e34){logger[_0xb98d('0x25')](_0x527e34[_0xb98d('0x26')]);if(_0x527e34['name']){delete _0x527e34[_0xb98d('0x27')];}_0x426c56[_0xb98d('0x19')](_0x5eae0b)['send'](_0x527e34);};}exports[_0xb98d('0x28')]=function(_0x135121,_0x2d83a7){var _0x25f771={},_0x3b76ce={},_0x5e7036={'count':0x0,'rows':[]};var _0x365049=_[_0xb98d('0x29')](db['ZohoAccount'][_0xb98d('0x2a')],function(_0x26d11c){return{'name':_0x26d11c[_0xb98d('0x2b')],'type':_0x26d11c[_0xb98d('0x2c')][_0xb98d('0x2d')]};});_0x3b76ce['model']=_['map'](_0x365049,_0xb98d('0x27'));_0x3b76ce[_0xb98d('0x2e')]=_[_0xb98d('0x2f')](_0x135121['query']);_0x3b76ce[_0xb98d('0x30')]=_[_0xb98d('0x31')](_0x3b76ce[_0xb98d('0x32')],_0x3b76ce['query']);_0x25f771['attributes']=_[_0xb98d('0x31')](_0x3b76ce[_0xb98d('0x32')],qs[_0xb98d('0x33')](_0x135121['query'][_0xb98d('0x33')]));_0x25f771['attributes']=_0x25f771['attributes'][_0xb98d('0x34')]?_0x25f771[_0xb98d('0x35')]:_0x3b76ce[_0xb98d('0x32')];if(!_0x135121[_0xb98d('0x2e')][_0xb98d('0x36')](_0xb98d('0x37'))){_0x25f771[_0xb98d('0x1d')]=qs[_0xb98d('0x1d')](_0x135121[_0xb98d('0x2e')][_0xb98d('0x1d')]);_0x25f771[_0xb98d('0x1c')]=qs['offset'](_0x135121['query'][_0xb98d('0x1c')]);}_0x25f771[_0xb98d('0x38')]=qs[_0xb98d('0x39')](_0x135121['query'][_0xb98d('0x39')]);_0x25f771[_0xb98d('0x3a')]=qs['filters'](_[_0xb98d('0x3b')](_0x135121[_0xb98d('0x2e')],_0x3b76ce['filters']),_0x365049);if(_0x135121['query'][_0xb98d('0x3c')]){_0x25f771[_0xb98d('0x3a')]=_[_0xb98d('0x3d')](_0x25f771[_0xb98d('0x3a')],{'$or':_[_0xb98d('0x29')](_0x365049,function(_0x2d5160){if(_0x2d5160[_0xb98d('0x2c')]!==_0xb98d('0x3e')){var _0x22436e={};_0x22436e[_0x2d5160[_0xb98d('0x27')]]={'$like':'%'+_0x135121[_0xb98d('0x2e')][_0xb98d('0x3c')]+'%'};return _0x22436e;}})});}_0x25f771=_[_0xb98d('0x3d')]({},_0x25f771,_0x135121[_0xb98d('0x3f')]);var _0x1206bd={'where':_0x25f771[_0xb98d('0x3a')]};return db[_0xb98d('0x40')][_0xb98d('0x1f')](_0x1206bd)['then'](function(_0x5db3d6){_0x5e7036[_0xb98d('0x1f')]=_0x5db3d6;if(_0x135121['query'][_0xb98d('0x41')]){_0x25f771[_0xb98d('0x42')]=[{'all':!![]}];}return db[_0xb98d('0x40')][_0xb98d('0x43')](_0x25f771);})[_0xb98d('0x23')](function(_0x371045){_0x5e7036[_0xb98d('0x44')]=_0x371045;return _0x5e7036;})[_0xb98d('0x23')](respondWithFilteredResult(_0x2d83a7,_0x25f771))['catch'](handleError(_0x2d83a7,null));};exports[_0xb98d('0x45')]=function(_0x5cf3b7,_0x1028a1){var _0x5050a1={'raw':![],'where':{'id':_0x5cf3b7[_0xb98d('0x46')]['id']}},_0x45ec6d={};_0x45ec6d['model']=_[_0xb98d('0x2f')](db[_0xb98d('0x40')][_0xb98d('0x2a')]);_0x45ec6d[_0xb98d('0x2e')]=_[_0xb98d('0x2f')](_0x5cf3b7[_0xb98d('0x2e')]);_0x45ec6d[_0xb98d('0x30')]=_['intersection'](_0x45ec6d[_0xb98d('0x32')],_0x45ec6d[_0xb98d('0x2e')]);_0x5050a1['attributes']=_['intersection'](_0x45ec6d['model'],qs['fields'](_0x5cf3b7[_0xb98d('0x2e')]['fields']));_0x5050a1['attributes']=_0x5050a1['attributes'][_0xb98d('0x34')]?_0x5050a1['attributes']:_0x45ec6d['model'];if(_0x5cf3b7[_0xb98d('0x2e')][_0xb98d('0x41')]){_0x5050a1['include']=[{'all':!![]}];}_0x5050a1=_['merge']({},_0x5050a1,_0x5cf3b7['options']);return db[_0xb98d('0x40')][_0xb98d('0x47')](_0x5050a1)['then'](handleEntityNotFound(_0x1028a1,null))[_0xb98d('0x23')](respondWithResult(_0x1028a1,null))['catch'](handleError(_0x1028a1,null));};exports['create']=function(_0x2b5e38,_0x5de7a9){return db[_0xb98d('0x40')][_0xb98d('0x48')](_0x2b5e38[_0xb98d('0x49')],{})['then'](respondWithResult(_0x5de7a9,0xc9))['catch'](handleError(_0x5de7a9,null));};exports['update']=function(_0xed99ee,_0x4683e5){if(_0xed99ee[_0xb98d('0x49')]['id']){delete _0xed99ee[_0xb98d('0x49')]['id'];}return db[_0xb98d('0x40')][_0xb98d('0x47')]({'where':{'id':_0xed99ee[_0xb98d('0x46')]['id']}})[_0xb98d('0x23')](handleEntityNotFound(_0x4683e5,null))[_0xb98d('0x23')](saveUpdates(_0xed99ee[_0xb98d('0x49')],null))['then'](respondWithResult(_0x4683e5,null))[_0xb98d('0x4a')](handleError(_0x4683e5,null));};exports['destroy']=function(_0x57917e,_0x1879f0){return db[_0xb98d('0x40')]['find']({'where':{'id':_0x57917e['params']['id']}})[_0xb98d('0x23')](handleEntityNotFound(_0x1879f0,null))[_0xb98d('0x23')](removeEntity(_0x1879f0,null))[_0xb98d('0x4a')](handleError(_0x1879f0,null));};exports[_0xb98d('0x4b')]=function(_0x527a62,_0x5f4b0b,_0x12166b){var _0x108f8f={};var _0x46fbca={};var _0x191767;var _0x2d7048;return db[_0xb98d('0x40')][_0xb98d('0x4c')]({'where':{'id':_0x527a62[_0xb98d('0x46')]['id']}})[_0xb98d('0x23')](handleEntityNotFound(_0x5f4b0b,null))[_0xb98d('0x23')](function(_0x1c540f){if(_0x1c540f){_0x191767=_0x1c540f;_0x46fbca[_0xb98d('0x32')]=_['keys'](db[_0xb98d('0x4d')]['rawAttributes']);_0x46fbca[_0xb98d('0x2e')]=_[_0xb98d('0x2f')](_0x527a62[_0xb98d('0x2e')]);_0x46fbca[_0xb98d('0x30')]=_[_0xb98d('0x31')](_0x46fbca['model'],_0x46fbca[_0xb98d('0x2e')]);_0x108f8f[_0xb98d('0x35')]=_['intersection'](_0x46fbca[_0xb98d('0x32')],qs[_0xb98d('0x33')](_0x527a62[_0xb98d('0x2e')][_0xb98d('0x33')]));_0x108f8f[_0xb98d('0x35')]=_0x108f8f['attributes']['length']?_0x108f8f[_0xb98d('0x35')]:_0x46fbca[_0xb98d('0x32')];_0x108f8f[_0xb98d('0x38')]=qs['sort'](_0x527a62[_0xb98d('0x2e')][_0xb98d('0x39')]);_0x108f8f[_0xb98d('0x3a')]=qs[_0xb98d('0x30')](_[_0xb98d('0x3b')](_0x527a62[_0xb98d('0x2e')],_0x46fbca[_0xb98d('0x30')]));if(_0x527a62[_0xb98d('0x2e')][_0xb98d('0x3c')]){_0x108f8f['where']=_[_0xb98d('0x3d')](_0x108f8f[_0xb98d('0x3a')],{'$or':_['map'](_0x108f8f[_0xb98d('0x35')],function(_0x5cac6c){var _0x525ad5={};_0x525ad5[_0x5cac6c]={'$like':'%'+_0x527a62[_0xb98d('0x2e')][_0xb98d('0x3c')]+'%'};return _0x525ad5;})});}_0x108f8f=_[_0xb98d('0x3d')]({},_0x108f8f,_0x527a62['options']);return _0x191767['getConfigurations'](_0x108f8f);}})['then'](function(_0x588f21){if(_0x588f21){_0x2d7048=_0x588f21[_0xb98d('0x34')];if(!_0x527a62[_0xb98d('0x2e')]['hasOwnProperty'](_0xb98d('0x37'))){_0x108f8f[_0xb98d('0x1d')]=qs['limit'](_0x527a62[_0xb98d('0x2e')][_0xb98d('0x1d')]);_0x108f8f[_0xb98d('0x1c')]=qs[_0xb98d('0x1c')](_0x527a62[_0xb98d('0x2e')][_0xb98d('0x1c')]);}return _0x191767[_0xb98d('0x4b')](_0x108f8f);}})[_0xb98d('0x23')](function(_0x16e85d){if(_0x16e85d){return _0x16e85d?{'count':_0x2d7048,'rows':_0x16e85d}:null;}})[_0xb98d('0x23')](respondWithResult(_0x5f4b0b,null))[_0xb98d('0x4a')](handleError(_0x5f4b0b,null));};exports[_0xb98d('0x4e')]=function(_0xeed422,_0xa232f8,_0x207fed){if(_0xeed422['body']['id']){delete _0xeed422['body']['id'];}return db[_0xb98d('0x40')][_0xb98d('0x4c')]({'where':{'id':_0xeed422['params']['id']}})['then'](handleEntityNotFound(_0xa232f8,null))['then'](function(_0x11c529){if(_0x11c529){_0xeed422[_0xb98d('0x49')][_0xb98d('0x4f')]=_0x11c529['id'];_0xeed422[_0xb98d('0x49')][_0xb98d('0x50')]=integrations[_0xb98d('0x51')](_0xeed422[_0xb98d('0x49')][_0xb98d('0x52')],_0xeed422[_0xb98d('0x49')][_0xb98d('0x2c')]);_0xeed422[_0xb98d('0x49')][_0xb98d('0x53')]=integrations['getDescriptions'](_0xeed422[_0xb98d('0x49')][_0xb98d('0x52')],_0xeed422[_0xb98d('0x49')][_0xb98d('0x2c')]);return db['ZohoConfiguration']['create'](_0xeed422[_0xb98d('0x49')],{'include':[{'model':db[_0xb98d('0x54')],'as':'Subjects'},{'model':db[_0xb98d('0x54')],'as':_0xb98d('0x53')}]});}return null;})['then'](respondWithResult(_0xa232f8,null))[_0xb98d('0x4a')](handleError(_0xa232f8,null));};function getAccessToken(_0x585e02){return new Promise(function(_0x1cc356,_0x1fcf90){var _0x593ea3;switch(_0x585e02['zone']){case'US':_0x593ea3='https://accounts.zoho.com';break;case'AU':_0x593ea3=_0xb98d('0x55');break;case'EU':_0x593ea3='https://accounts.zoho.eu';break;case'IN':_0x593ea3=_0xb98d('0x56');break;case'CN':_0x593ea3=_0xb98d('0x57');break;default:_0x593ea3='https://accounts.zoho.eu';break;}var _0xf50b49={'method':'POST','uri':_0x593ea3+_0xb98d('0x58'),'qs':{'refresh_token':_0x585e02[_0xb98d('0x59')],'client_id':_0x585e02[_0xb98d('0x5a')],'client_secret':_0x585e02[_0xb98d('0x5b')],'grant_type':_0xb98d('0x5c')},'json':!![]};return rp(_0xf50b49)[_0xb98d('0x23')](function(_0xcd4ea3){if(_0xcd4ea3[_0xb98d('0x5d')]){_0x1cc356(_0xcd4ea3[_0xb98d('0x5d')]);}else{_0x1fcf90(_0xb98d('0x5e'));}})[_0xb98d('0x4a')](function(_0x121664){_0x1fcf90(_0x121664);});});}exports[_0xb98d('0x5f')]=function(_0x5b91d7,_0x4b037e,_0x4e6630){var _0x24cce1,_0x6b6958,_0x604e40,_0x124aed,_0x1098d8;return db[_0xb98d('0x40')][_0xb98d('0x4c')]({'where':{'id':_0x5b91d7[_0xb98d('0x46')]['id']},'attributes':['id',_0xb98d('0x60'),_0xb98d('0x61'),'clientId','clientSecret',_0xb98d('0x62'),'code',_0xb98d('0x59')]})[_0xb98d('0x23')](handleEntityNotFound(_0x4b037e,null))[_0xb98d('0x23')](function(_0x56f7f0){_0x1098d8=_0x56f7f0;_0x24cce1=_0x1098d8[_0xb98d('0x60')];_0x6b6958=_0x24cce1===_0xb98d('0x63')?'eu':_0xb98d('0x64');_0x604e40=_0x1098d8[_0xb98d('0x62')];var _0x34097b=_0x604e40[_0xb98d('0x65')](-0x1);if(_0x34097b==='/'||_0x34097b==='\x5c'||_0x34097b===':'){_0x604e40=_0x604e40[_0xb98d('0x66')](0x0,_0x604e40[_0xb98d('0x67')](_0x34097b));}if(!_0x1098d8[_0xb98d('0x59')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x1098d8);})[_0xb98d('0x23')](function(_0x22722b){if(_0x22722b){return rp({'method':_0xb98d('0x68'),'uri':util[_0xb98d('0x69')](_0xb98d('0x6a'),_0x6b6958),'qs':{'module':'Calls'},'headers':{'Authorization':_0xb98d('0x6b')+_0x22722b},'json':!![]});}})[_0xb98d('0x23')](function(_0x31bdb5){if(_0x31bdb5){if(_0x31bdb5[_0xb98d('0x6c')]&&_0x31bdb5['response']['error']){throw new Error(_0x31bdb5[_0xb98d('0x6c')]['error'][_0xb98d('0x6d')]);}var _0x425202=[];var _0x572f9a=[];var _0x4fc46e=[_0xb98d('0x6e'),_0xb98d('0x6f'),_0xb98d('0x70'),'WhoId',_0xb98d('0x71'),_0xb98d('0x72'),_0xb98d('0x73'),_0xb98d('0x74')];_0x572f9a=_[_0xb98d('0x75')](_0x31bdb5['fields'],function(_0x19aba0){return _0x4fc46e[_0xb98d('0x76')](_0x19aba0['api_name']);});for(var _0x169821=0x0;_0x169821<_0x572f9a[_0xb98d('0x34')];_0x169821++){if(_0x572f9a[_0x169821][_0xb98d('0x77')]===![]){_0x425202[_0xb98d('0x78')]({'id':_0x572f9a[_0x169821]['id'],'name':_0x572f9a[_0x169821][_0xb98d('0x79')],'custom':_0x572f9a[_0x169821]['custom_field'],'options':_0x572f9a[_0x169821][_0xb98d('0x7a')]===_0xb98d('0x7b')&&_0x572f9a[_0x169821][_0xb98d('0x7c')][_0xb98d('0x34')]>-0x1?_[_0xb98d('0x29')](_0x572f9a[_0x169821][_0xb98d('0x7c')],function(_0x120f0e){return{'name':_0x120f0e,'value':_0x120f0e};}):[]});}}return{'count':_0x425202[_0xb98d('0x34')],'rows':_0x425202};}else{return{'count':0x0,'rows':[]};}})[_0xb98d('0x23')](respondWithResult(_0x4b037e,null))[_0xb98d('0x4a')](function(_0x582ea4){var _0x2bc3d5=_0x5b91d7[_0xb98d('0x2e')][_0xb98d('0x7d')]?0x1f4:_0x582ea4[_0xb98d('0x7e')]||0x1f4;logger[_0xb98d('0x25')](_0xb98d('0x7f'),'getFields',_0x2bc3d5,JSON[_0xb98d('0x80')](_0x582ea4));delete _0x582ea4[_0xb98d('0x27')];if(_0x2bc3d5===0x191){_0x2bc3d5=0x190;}_0x4b037e[_0xb98d('0x19')](_0x2bc3d5)['send'](_0x5b91d7[_0xb98d('0x2e')]['test']?{'message':_0xb98d('0x81'),'statusCode':_0x582ea4[_0xb98d('0x7e')]}:_0x582ea4);});};
\ No newline at end of file
+var _0x4aad=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','undefined','limit','count','offset','status','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','ZohoAccount','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','findOne','getConfigurations','hasOwnProperty','AccountId','Subjects','getSubjects','getDescriptions','ZohoConfiguration','ZohoField','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','host','zone','serverUrl','code','zoho.eu','com','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Owner','Subject','Description','Call_Duration','Call_Result','remove','includes','push','display_label','custom_field','data_type','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','statusCode','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x160b87,_0x53a09a){var _0x3ff5a6=function(_0x1b14d2){while(--_0x1b14d2){_0x160b87['push'](_0x160b87['shift']());}};_0x3ff5a6(++_0x53a09a);}(_0x4aad,0x69));var _0xd4aa=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x4aad[_0x363ef8];return _0x148822;};'use strict';var emlformat=require(_0xd4aa('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd4aa('0x1'));var rp=require('request-promise');var moment=require(_0xd4aa('0x2'));var BPromise=require(_0xd4aa('0x3'));var Mustache=require(_0xd4aa('0x4'));var util=require(_0xd4aa('0x5'));var path=require(_0xd4aa('0x6'));var sox=require('sox');var csv=require(_0xd4aa('0x7'));var ejs=require(_0xd4aa('0x8'));var fs=require('fs');var fs_extra=require(_0xd4aa('0x9'));var _=require('lodash');var squel=require(_0xd4aa('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd4aa('0xb'));var toCsv=require('to-csv');var querystring=require(_0xd4aa('0xc'));var Papa=require(_0xd4aa('0xd'));var Redis=require('ioredis');var authService=require(_0xd4aa('0xe'));var qs=require(_0xd4aa('0xf'));var as=require(_0xd4aa('0x10'));var hardwareService=require(_0xd4aa('0x11'));var logger=require(_0xd4aa('0x12'))(_0xd4aa('0x13'));var utils=require(_0xd4aa('0x14'));var config=require(_0xd4aa('0x15'));var licenseUtil=require(_0xd4aa('0x16'));var db=require(_0xd4aa('0x17'))['db'];var integrations=require(_0xd4aa('0x18'));function respondWithStatusCode(_0x5ec86c,_0xbc951f){_0xbc951f=_0xbc951f||0xcc;return function(_0x36c90a){if(_0x36c90a){return _0x5ec86c[_0xd4aa('0x19')](_0xbc951f);}return _0x5ec86c['status'](_0xbc951f)[_0xd4aa('0x1a')]();};}function respondWithResult(_0x237b09,_0x1d3e22){_0x1d3e22=_0x1d3e22||0xc8;return function(_0x5aed30){if(_0x5aed30){return _0x237b09['status'](_0x1d3e22)['json'](_0x5aed30);}};}function respondWithFilteredResult(_0x23180a,_0x5d885e){return function(_0x52cecf){if(_0x52cecf){var _0x59e434=typeof _0x5d885e['offset']===_0xd4aa('0x1b')&&typeof _0x5d885e[_0xd4aa('0x1c')]==='undefined';var _0xecc728=_0x52cecf[_0xd4aa('0x1d')];var _0x32790c=_0x59e434?0x0:_0x5d885e[_0xd4aa('0x1e')];var _0x12e557=_0x59e434?_0x52cecf['count']:_0x5d885e['offset']+_0x5d885e[_0xd4aa('0x1c')];var _0x3a0f27;if(_0x12e557>=_0xecc728){_0x12e557=_0xecc728;_0x3a0f27=0xc8;}else{_0x3a0f27=0xce;}_0x23180a[_0xd4aa('0x1f')](_0x3a0f27);return _0x23180a['set'](_0xd4aa('0x20'),_0x32790c+'-'+_0x12e557+'/'+_0xecc728)['json'](_0x52cecf);}return null;};}function patchUpdates(_0x4286b1){return function(_0x3dd3e6){try{jsonpatch[_0xd4aa('0x21')](_0x3dd3e6,_0x4286b1,!![]);}catch(_0x3e44a8){return BPromise[_0xd4aa('0x22')](_0x3e44a8);}return _0x3dd3e6['save']();};}function saveUpdates(_0x38f7f9,_0x1ebfd6){return function(_0x35b077){if(_0x35b077){return _0x35b077[_0xd4aa('0x23')](_0x38f7f9)[_0xd4aa('0x24')](function(_0x48deb5){return _0x48deb5;});}return null;};}function removeEntity(_0x7b72e,_0x2dbc93){return function(_0x2cebfb){if(_0x2cebfb){return _0x2cebfb[_0xd4aa('0x25')]()[_0xd4aa('0x24')](function(){_0x7b72e[_0xd4aa('0x1f')](0xcc)[_0xd4aa('0x1a')]();});}};}function handleEntityNotFound(_0x471e54,_0x3a49c5){return function(_0x3d5381){if(!_0x3d5381){_0x471e54[_0xd4aa('0x19')](0x194);}return _0x3d5381;};}function handleError(_0x456001,_0x16af48){_0x16af48=_0x16af48||0x1f4;return function(_0x250553){logger[_0xd4aa('0x26')](_0x250553['stack']);if(_0x250553[_0xd4aa('0x27')]){delete _0x250553[_0xd4aa('0x27')];}_0x456001[_0xd4aa('0x1f')](_0x16af48)[_0xd4aa('0x28')](_0x250553);};}exports[_0xd4aa('0x29')]=function(_0x5d0038,_0x55b4d1){var _0x220f2c={},_0x3f8525={},_0x222b93={'count':0x0,'rows':[]};var _0x35390b=_[_0xd4aa('0x2a')](db[_0xd4aa('0x2b')][_0xd4aa('0x2c')],function(_0x2c01ad){return{'name':_0x2c01ad[_0xd4aa('0x2d')],'type':_0x2c01ad['type'][_0xd4aa('0x2e')]};});_0x3f8525[_0xd4aa('0x2f')]=_[_0xd4aa('0x2a')](_0x35390b,_0xd4aa('0x27'));_0x3f8525[_0xd4aa('0x30')]=_[_0xd4aa('0x31')](_0x5d0038[_0xd4aa('0x30')]);_0x3f8525['filters']=_[_0xd4aa('0x32')](_0x3f8525[_0xd4aa('0x2f')],_0x3f8525['query']);_0x220f2c['attributes']=_['intersection'](_0x3f8525[_0xd4aa('0x2f')],qs[_0xd4aa('0x33')](_0x5d0038[_0xd4aa('0x30')][_0xd4aa('0x33')]));_0x220f2c[_0xd4aa('0x34')]=_0x220f2c[_0xd4aa('0x34')][_0xd4aa('0x35')]?_0x220f2c['attributes']:_0x3f8525['model'];if(!_0x5d0038[_0xd4aa('0x30')]['hasOwnProperty'](_0xd4aa('0x36'))){_0x220f2c[_0xd4aa('0x1c')]=qs[_0xd4aa('0x1c')](_0x5d0038[_0xd4aa('0x30')][_0xd4aa('0x1c')]);_0x220f2c['offset']=qs[_0xd4aa('0x1e')](_0x5d0038[_0xd4aa('0x30')][_0xd4aa('0x1e')]);}_0x220f2c[_0xd4aa('0x37')]=qs[_0xd4aa('0x38')](_0x5d0038['query'][_0xd4aa('0x38')]);_0x220f2c[_0xd4aa('0x39')]=qs[_0xd4aa('0x3a')](_[_0xd4aa('0x3b')](_0x5d0038[_0xd4aa('0x30')],_0x3f8525[_0xd4aa('0x3a')]),_0x35390b);if(_0x5d0038[_0xd4aa('0x30')][_0xd4aa('0x3c')]){_0x220f2c[_0xd4aa('0x39')]=_[_0xd4aa('0x3d')](_0x220f2c['where'],{'$or':_[_0xd4aa('0x2a')](_0x35390b,function(_0x5c7e0b){if(_0x5c7e0b[_0xd4aa('0x3e')]!==_0xd4aa('0x3f')){var _0x5ebd52={};_0x5ebd52[_0x5c7e0b[_0xd4aa('0x27')]]={'$like':'%'+_0x5d0038[_0xd4aa('0x30')][_0xd4aa('0x3c')]+'%'};return _0x5ebd52;}})});}_0x220f2c=_[_0xd4aa('0x3d')]({},_0x220f2c,_0x5d0038[_0xd4aa('0x40')]);var _0x3baa02={'where':_0x220f2c['where']};return db[_0xd4aa('0x2b')]['count'](_0x3baa02)[_0xd4aa('0x24')](function(_0x5378cc){_0x222b93[_0xd4aa('0x1d')]=_0x5378cc;if(_0x5d0038[_0xd4aa('0x30')][_0xd4aa('0x41')]){_0x220f2c[_0xd4aa('0x42')]=[{'all':!![]}];}return db[_0xd4aa('0x2b')][_0xd4aa('0x43')](_0x220f2c);})['then'](function(_0x3b056e){_0x222b93['rows']=_0x3b056e;return _0x222b93;})[_0xd4aa('0x24')](respondWithFilteredResult(_0x55b4d1,_0x220f2c))[_0xd4aa('0x44')](handleError(_0x55b4d1,null));};exports['show']=function(_0x1f40ad,_0x4bcb6d){var _0x4e9cd3={'raw':![],'where':{'id':_0x1f40ad[_0xd4aa('0x45')]['id']}},_0x4a72f7={};_0x4a72f7['model']=_[_0xd4aa('0x31')](db['ZohoAccount']['rawAttributes']);_0x4a72f7[_0xd4aa('0x30')]=_[_0xd4aa('0x31')](_0x1f40ad[_0xd4aa('0x30')]);_0x4a72f7[_0xd4aa('0x3a')]=_[_0xd4aa('0x32')](_0x4a72f7[_0xd4aa('0x2f')],_0x4a72f7[_0xd4aa('0x30')]);_0x4e9cd3[_0xd4aa('0x34')]=_[_0xd4aa('0x32')](_0x4a72f7[_0xd4aa('0x2f')],qs[_0xd4aa('0x33')](_0x1f40ad['query'][_0xd4aa('0x33')]));_0x4e9cd3[_0xd4aa('0x34')]=_0x4e9cd3[_0xd4aa('0x34')][_0xd4aa('0x35')]?_0x4e9cd3[_0xd4aa('0x34')]:_0x4a72f7[_0xd4aa('0x2f')];if(_0x1f40ad['query'][_0xd4aa('0x41')]){_0x4e9cd3[_0xd4aa('0x42')]=[{'all':!![]}];}_0x4e9cd3=_[_0xd4aa('0x3d')]({},_0x4e9cd3,_0x1f40ad['options']);return db['ZohoAccount'][_0xd4aa('0x46')](_0x4e9cd3)[_0xd4aa('0x24')](handleEntityNotFound(_0x4bcb6d,null))['then'](respondWithResult(_0x4bcb6d,null))[_0xd4aa('0x44')](handleError(_0x4bcb6d,null));};exports[_0xd4aa('0x47')]=function(_0x341f9f,_0x3efa7a){return db[_0xd4aa('0x2b')][_0xd4aa('0x47')](_0x341f9f[_0xd4aa('0x48')],{})['then'](respondWithResult(_0x3efa7a,0xc9))[_0xd4aa('0x44')](handleError(_0x3efa7a,null));};exports[_0xd4aa('0x23')]=function(_0x390781,_0x25c17e){if(_0x390781['body']['id']){delete _0x390781[_0xd4aa('0x48')]['id'];}return db['ZohoAccount'][_0xd4aa('0x46')]({'where':{'id':_0x390781[_0xd4aa('0x45')]['id']}})['then'](handleEntityNotFound(_0x25c17e,null))[_0xd4aa('0x24')](saveUpdates(_0x390781['body'],null))[_0xd4aa('0x24')](respondWithResult(_0x25c17e,null))[_0xd4aa('0x44')](handleError(_0x25c17e,null));};exports['destroy']=function(_0x1d9a61,_0x3a35aa){return db['ZohoAccount'][_0xd4aa('0x46')]({'where':{'id':_0x1d9a61[_0xd4aa('0x45')]['id']}})[_0xd4aa('0x24')](handleEntityNotFound(_0x3a35aa,null))[_0xd4aa('0x24')](removeEntity(_0x3a35aa,null))['catch'](handleError(_0x3a35aa,null));};exports['getConfigurations']=function(_0x45a8ef,_0x1e1e28,_0x38f1a3){var _0x134844={};var _0x41f37f={};var _0x1b53da;var _0x3bcb6c;return db[_0xd4aa('0x2b')][_0xd4aa('0x49')]({'where':{'id':_0x45a8ef[_0xd4aa('0x45')]['id']}})[_0xd4aa('0x24')](handleEntityNotFound(_0x1e1e28,null))[_0xd4aa('0x24')](function(_0x279165){if(_0x279165){_0x1b53da=_0x279165;_0x41f37f[_0xd4aa('0x2f')]=_['keys'](db['ZohoConfiguration'][_0xd4aa('0x2c')]);_0x41f37f['query']=_['keys'](_0x45a8ef[_0xd4aa('0x30')]);_0x41f37f[_0xd4aa('0x3a')]=_['intersection'](_0x41f37f[_0xd4aa('0x2f')],_0x41f37f['query']);_0x134844[_0xd4aa('0x34')]=_[_0xd4aa('0x32')](_0x41f37f['model'],qs[_0xd4aa('0x33')](_0x45a8ef['query']['fields']));_0x134844[_0xd4aa('0x34')]=_0x134844[_0xd4aa('0x34')][_0xd4aa('0x35')]?_0x134844[_0xd4aa('0x34')]:_0x41f37f['model'];_0x134844[_0xd4aa('0x37')]=qs[_0xd4aa('0x38')](_0x45a8ef[_0xd4aa('0x30')][_0xd4aa('0x38')]);_0x134844[_0xd4aa('0x39')]=qs[_0xd4aa('0x3a')](_[_0xd4aa('0x3b')](_0x45a8ef['query'],_0x41f37f[_0xd4aa('0x3a')]));if(_0x45a8ef[_0xd4aa('0x30')]['filter']){_0x134844[_0xd4aa('0x39')]=_[_0xd4aa('0x3d')](_0x134844['where'],{'$or':_['map'](_0x134844['attributes'],function(_0x31017b){var _0xb25cac={};_0xb25cac[_0x31017b]={'$like':'%'+_0x45a8ef['query'][_0xd4aa('0x3c')]+'%'};return _0xb25cac;})});}_0x134844=_['merge']({},_0x134844,_0x45a8ef['options']);return _0x1b53da[_0xd4aa('0x4a')](_0x134844);}})['then'](function(_0x10efe3){if(_0x10efe3){_0x3bcb6c=_0x10efe3[_0xd4aa('0x35')];if(!_0x45a8ef['query'][_0xd4aa('0x4b')](_0xd4aa('0x36'))){_0x134844[_0xd4aa('0x1c')]=qs[_0xd4aa('0x1c')](_0x45a8ef[_0xd4aa('0x30')][_0xd4aa('0x1c')]);_0x134844[_0xd4aa('0x1e')]=qs[_0xd4aa('0x1e')](_0x45a8ef[_0xd4aa('0x30')][_0xd4aa('0x1e')]);}return _0x1b53da[_0xd4aa('0x4a')](_0x134844);}})[_0xd4aa('0x24')](function(_0x533cb5){if(_0x533cb5){return _0x533cb5?{'count':_0x3bcb6c,'rows':_0x533cb5}:null;}})[_0xd4aa('0x24')](respondWithResult(_0x1e1e28,null))['catch'](handleError(_0x1e1e28,null));};exports['addConfiguration']=function(_0x3017f5,_0x485a05,_0x2d78bc){if(_0x3017f5[_0xd4aa('0x48')]['id']){delete _0x3017f5[_0xd4aa('0x48')]['id'];}return db[_0xd4aa('0x2b')][_0xd4aa('0x49')]({'where':{'id':_0x3017f5[_0xd4aa('0x45')]['id']}})['then'](handleEntityNotFound(_0x485a05,null))['then'](function(_0x3fdd3c){if(_0x3fdd3c){_0x3017f5[_0xd4aa('0x48')][_0xd4aa('0x4c')]=_0x3fdd3c['id'];_0x3017f5[_0xd4aa('0x48')][_0xd4aa('0x4d')]=integrations[_0xd4aa('0x4e')](_0x3017f5[_0xd4aa('0x48')]['channel'],_0x3017f5['body'][_0xd4aa('0x3e')]);_0x3017f5['body']['Descriptions']=integrations[_0xd4aa('0x4f')](_0x3017f5['body']['channel'],_0x3017f5[_0xd4aa('0x48')][_0xd4aa('0x3e')]);return db[_0xd4aa('0x50')][_0xd4aa('0x47')](_0x3017f5[_0xd4aa('0x48')],{'include':[{'model':db[_0xd4aa('0x51')],'as':_0xd4aa('0x4d')},{'model':db[_0xd4aa('0x51')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x485a05,null))['catch'](handleError(_0x485a05,null));};function getAccessToken(_0x405939){return new Promise(function(_0x1a1262,_0x378211){var _0x197dc9;switch(_0x405939['zone']){case'US':_0x197dc9=_0xd4aa('0x52');break;case'AU':_0x197dc9='https://accounts.zoho.com.au';break;case'EU':_0x197dc9=_0xd4aa('0x53');break;case'IN':_0x197dc9='https://accounts.zoho.in';break;case'CN':_0x197dc9=_0xd4aa('0x54');break;default:_0x197dc9=_0xd4aa('0x53');break;}var _0x1c4725={'method':'POST','uri':_0x197dc9+_0xd4aa('0x55'),'qs':{'refresh_token':_0x405939[_0xd4aa('0x56')],'client_id':_0x405939[_0xd4aa('0x57')],'client_secret':_0x405939[_0xd4aa('0x58')],'grant_type':_0xd4aa('0x59')},'json':!![]};return rp(_0x1c4725)[_0xd4aa('0x24')](function(_0x1697af){if(_0x1697af[_0xd4aa('0x5a')]){_0x1a1262(_0x1697af['access_token']);}else{_0x378211('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xd4aa('0x44')](function(_0x23fd27){_0x378211(_0x23fd27);});});}exports['getFields']=function(_0x2d6fed,_0x35cddc,_0x52e513){var _0x5925ce,_0x3ee9e6,_0x43f2f7,_0x2c1e93,_0x354892;return db[_0xd4aa('0x2b')][_0xd4aa('0x49')]({'where':{'id':_0x2d6fed[_0xd4aa('0x45')]['id']},'attributes':['id',_0xd4aa('0x5b'),_0xd4aa('0x5c'),_0xd4aa('0x57'),_0xd4aa('0x58'),_0xd4aa('0x5d'),_0xd4aa('0x5e'),'refreshToken']})[_0xd4aa('0x24')](handleEntityNotFound(_0x35cddc,null))[_0xd4aa('0x24')](function(_0x415fe2){_0x354892=_0x415fe2;_0x5925ce=_0x354892[_0xd4aa('0x5b')];_0x3ee9e6=_0x5925ce===_0xd4aa('0x5f')?'eu':_0xd4aa('0x60');_0x43f2f7=_0x354892['serverUrl'];var _0x564df8=_0x43f2f7['slice'](-0x1);if(_0x564df8==='/'||_0x564df8==='\x5c'||_0x564df8===':'){_0x43f2f7=_0x43f2f7[_0xd4aa('0x61')](0x0,_0x43f2f7[_0xd4aa('0x62')](_0x564df8));}if(!_0x354892['refreshToken']){throw new Error(_0xd4aa('0x63'));}return getAccessToken(_0x354892);})['then'](function(_0x3b8993){if(_0x3b8993){return rp({'method':'GET','uri':util['format'](_0xd4aa('0x64'),_0x3ee9e6),'qs':{'module':_0xd4aa('0x65')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3b8993},'json':!![]});}})['then'](function(_0x1cd865){if(_0x1cd865){if(_0x1cd865[_0xd4aa('0x66')]&&_0x1cd865[_0xd4aa('0x66')][_0xd4aa('0x26')]){throw new Error(_0x1cd865[_0xd4aa('0x66')]['error'][_0xd4aa('0x67')]);}var _0x56cb91=[];var _0x5b6ba1=[];var _0x17246e=[_0xd4aa('0x68'),_0xd4aa('0x69'),_0xd4aa('0x6a'),'WhoId',_0xd4aa('0x6b'),_0xd4aa('0x6c'),'Call_Start_Time','Call_Type'];_0x5b6ba1=_[_0xd4aa('0x6d')](_0x1cd865['fields'],function(_0x50b852){return _0x17246e[_0xd4aa('0x6e')](_0x50b852['api_name']);});for(var _0x1a095c=0x0;_0x1a095c<_0x5b6ba1[_0xd4aa('0x35')];_0x1a095c++){if(_0x5b6ba1[_0x1a095c]['system_mandatory']===![]){_0x56cb91[_0xd4aa('0x6f')]({'id':_0x5b6ba1[_0x1a095c]['id'],'name':_0x5b6ba1[_0x1a095c][_0xd4aa('0x70')],'custom':_0x5b6ba1[_0x1a095c][_0xd4aa('0x71')],'options':_0x5b6ba1[_0x1a095c][_0xd4aa('0x72')]==='picklist'&&_0x5b6ba1[_0x1a095c][_0xd4aa('0x73')][_0xd4aa('0x35')]>-0x1?_['map'](_0x5b6ba1[_0x1a095c][_0xd4aa('0x73')],function(_0x1a3c74){return{'name':_0x1a3c74,'value':_0x1a3c74};}):[]});}}return{'count':_0x56cb91[_0xd4aa('0x35')],'rows':_0x56cb91};}else{return{'count':0x0,'rows':[]};}})[_0xd4aa('0x24')](respondWithResult(_0x35cddc,null))[_0xd4aa('0x44')](function(_0x18d500){var _0x16bb3a=_0x2d6fed['query'][_0xd4aa('0x74')]?0x1f4:_0x18d500['statusCode']||0x1f4;logger[_0xd4aa('0x26')](_0xd4aa('0x75'),_0xd4aa('0x76'),_0x16bb3a,JSON[_0xd4aa('0x77')](_0x18d500));delete _0x18d500[_0xd4aa('0x27')];if(_0x16bb3a===0x191){_0x16bb3a=0x190;}_0x35cddc[_0xd4aa('0x1f')](_0x16bb3a)[_0xd4aa('0x28')](_0x2d6fed[_0xd4aa('0x30')][_0xd4aa('0x74')]?{'message':_0xd4aa('0x78'),'statusCode':_0x18d500[_0xd4aa('0x79')]}:_0x18d500);});};
\ No newline at end of file
index 71481d7..4879c2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74c9=['ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','slice','zone','https://accounts.zoho.in','info','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','serverUrl','clientId','code','host','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientSecret','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name'];(function(_0x25b31d,_0x34726){var _0x4992d5=function(_0x43068b){while(--_0x43068b){_0x25b31d['push'](_0x25b31d['shift']());}};_0x4992d5(++_0x34726);}(_0x74c9,0x1a6));var _0x974c=function(_0x16d6b9,_0x42f2bf){_0x16d6b9=_0x16d6b9-0x0;var _0x4b1182=_0x74c9[_0x16d6b9];return _0x4b1182;};'use strict';var _=require(_0x974c('0x0'));var util=require(_0x974c('0x1'));var logger=require(_0x974c('0x2'))(_0x974c('0x3'));var moment=require('moment');var BPromise=require(_0x974c('0x4'));var rp=require(_0x974c('0x5'));var fs=require('fs');var path=require(_0x974c('0x6'));var rimraf=require(_0x974c('0x7'));var config=require(_0x974c('0x8'));var attributes=require(_0x974c('0x9'));var integrations=require(_0x974c('0xa'));module[_0x974c('0xb')]=function(_0x4aa672,_0x3d729d){return _0x4aa672[_0x974c('0xc')](_0x974c('0xd'),attributes,{'tableName':_0x974c('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3f1ca2,_0xe7274b,_0x5a5d37){if(_0x3f1ca2[_0x974c('0xf')]('zone')||_0x3f1ca2[_0x974c('0xf')](_0x974c('0x10'))||_0x3f1ca2['changed'](_0x974c('0x11'))||_0x3f1ca2['changed']('clientSecret')||_0x3f1ca2['changed'](_0x974c('0x12'))||_0x3f1ca2[_0x974c('0xf')](_0x974c('0x13'))){var _0x23b841,_0x18d2e0;_0x23b841=_0x3f1ca2[_0x974c('0x10')];var _0x41ba0f=_0x23b841['slice'](-0x1);if(_0x41ba0f==='/'||_0x41ba0f==='\x5c'||_0x41ba0f===':'){_0x23b841=_0x23b841[_0x974c('0x14')](0x0,_0x23b841[_0x974c('0x15')](_0x41ba0f));}switch(_0x3f1ca2['zone']){case'US':_0x18d2e0=_0x974c('0x16');break;case'AU':_0x18d2e0=_0x974c('0x17');break;case'IN':_0x18d2e0='https://accounts.zoho.in';break;case'CN':_0x18d2e0=_0x974c('0x18');break;default:_0x18d2e0=_0x974c('0x19');break;}var _0x170530={'method':_0x974c('0x1a'),'uri':_0x18d2e0+_0x974c('0x1b'),'form':{'grant_type':_0x974c('0x1c'),'client_id':_0x3f1ca2[_0x974c('0x11')],'client_secret':_0x3f1ca2[_0x974c('0x1d')],'redirect_uri':_0x3f1ca2[_0x974c('0x10')],'code':_0x3f1ca2[_0x974c('0x12')]},'headers':{'Content-Type':_0x974c('0x1e')}};return rp(_0x170530)[_0x974c('0x1f')](function(_0x59b522){var _0xe872ef=JSON[_0x974c('0x20')](_0x59b522);if(_0xe872ef[_0x974c('0x21')]){_0x3f1ca2[_0x974c('0x22')]=_0xe872ef[_0x974c('0x21')];logger['info'](util[_0x974c('0x23')](_0x974c('0x24'),_0x3f1ca2[_0x974c('0x25')],_0x3f1ca2['id']));}else{logger['error'](util[_0x974c('0x23')](_0x974c('0x26'),_0x3f1ca2['name'],_0x3f1ca2['id']),util[_0x974c('0x27')](_0xe872ef,{'showHidden':![],'depth':null}));}return _0x5a5d37(null,_0xe7274b);})[_0x974c('0x28')](function(_0x5afdd1){logger[_0x974c('0x29')](util[_0x974c('0x23')](_0x974c('0x26'),_0x3f1ca2[_0x974c('0x25')],_0x3f1ca2['id']),util[_0x974c('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x5a5d37(_0x5afdd1);});}else{return _0x5a5d37(null,_0xe7274b);}},'beforeUpdate':function(_0x2daa7b,_0x2bc019,_0x282012){if(_0x2daa7b[_0x974c('0xf')]('zone')||_0x2daa7b['changed'](_0x974c('0x10'))||_0x2daa7b['changed'](_0x974c('0x11'))||_0x2daa7b[_0x974c('0xf')](_0x974c('0x1d'))||_0x2daa7b[_0x974c('0xf')](_0x974c('0x12'))||_0x2daa7b['changed'](_0x974c('0x13'))){var _0x2c471b,_0xe1bb83;_0x2c471b=_0x2daa7b['serverUrl'];var _0x3b59bc=_0x2c471b[_0x974c('0x2a')](-0x1);if(_0x3b59bc==='/'||_0x3b59bc==='\x5c'||_0x3b59bc===':'){_0x2c471b=_0x2c471b[_0x974c('0x14')](0x0,_0x2c471b[_0x974c('0x15')](_0x3b59bc));}switch(_0x2daa7b[_0x974c('0x2b')]){case'US':_0xe1bb83=_0x974c('0x16');break;case'AU':_0xe1bb83=_0x974c('0x17');break;case'IN':_0xe1bb83=_0x974c('0x2c');break;case'CN':_0xe1bb83='https://accounts.zoho.com.cn';break;default:_0xe1bb83=_0x974c('0x19');break;}var _0x203c0a={'method':_0x974c('0x1a'),'uri':_0xe1bb83+_0x974c('0x1b'),'form':{'grant_type':_0x974c('0x1c'),'client_id':_0x2daa7b['clientId'],'client_secret':_0x2daa7b['clientSecret'],'redirect_uri':_0x2daa7b['serverUrl'],'code':_0x2daa7b[_0x974c('0x12')]},'headers':{'Content-Type':_0x974c('0x1e')}};return rp(_0x203c0a)[_0x974c('0x1f')](function(_0x43ed82){var _0x29cfd5=JSON['parse'](_0x43ed82);if(_0x29cfd5[_0x974c('0x21')]){_0x2daa7b['refreshToken']=_0x29cfd5[_0x974c('0x21')];logger[_0x974c('0x2d')](util[_0x974c('0x23')](_0x974c('0x24'),_0x2daa7b['name'],_0x2daa7b['id']));}else{logger[_0x974c('0x29')](util[_0x974c('0x23')](_0x974c('0x26'),_0x2daa7b[_0x974c('0x25')],_0x2daa7b['id']),util[_0x974c('0x27')](_0x29cfd5,{'showHidden':![],'depth':null}));}return _0x282012(null,_0x2bc019);})[_0x974c('0x28')](function(_0xd76ddf){logger[_0x974c('0x29')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2daa7b[_0x974c('0x25')],_0x2daa7b['id']),util[_0x974c('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x282012(_0xd76ddf);});}else{return _0x282012(null,_0x2bc019);}}}});};
\ No newline at end of file
+var _0xf1c6=['../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','define','ZohoAccount','int_zoho_accounts','zone','changed','serverUrl','clientId','code','host','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','authorization_code','clientSecret','application/x-www-form-urlencoded','parse','refresh_token','info','format','name','error','inspect','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','substring','/oauth/v2/token','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','catch','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x4a5806,_0x4d2c4f){var _0xbd7bc0=function(_0x3a302b){while(--_0x3a302b){_0x4a5806['push'](_0x4a5806['shift']());}};_0xbd7bc0(++_0x4d2c4f);}(_0xf1c6,0xf4));var _0x6f1c=function(_0x556b0b,_0x2433e2){_0x556b0b=_0x556b0b-0x0;var _0x148456=_0xf1c6[_0x556b0b];return _0x148456;};'use strict';var _=require(_0x6f1c('0x0'));var util=require(_0x6f1c('0x1'));var logger=require(_0x6f1c('0x2'))(_0x6f1c('0x3'));var moment=require(_0x6f1c('0x4'));var BPromise=require(_0x6f1c('0x5'));var rp=require(_0x6f1c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6f1c('0x7'));var config=require(_0x6f1c('0x8'));var attributes=require(_0x6f1c('0x9'));var integrations=require(_0x6f1c('0xa'));module['exports']=function(_0x57bb67,_0x1a3460){return _0x57bb67[_0x6f1c('0xb')](_0x6f1c('0xc'),attributes,{'tableName':_0x6f1c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x10f531,_0x316e0e,_0x52a2a6){if(_0x10f531['changed'](_0x6f1c('0xe'))||_0x10f531[_0x6f1c('0xf')](_0x6f1c('0x10'))||_0x10f531[_0x6f1c('0xf')](_0x6f1c('0x11'))||_0x10f531[_0x6f1c('0xf')]('clientSecret')||_0x10f531[_0x6f1c('0xf')](_0x6f1c('0x12'))||_0x10f531['changed'](_0x6f1c('0x13'))){var _0x5b3e91,_0x5aa99e;_0x5b3e91=_0x10f531[_0x6f1c('0x10')];var _0x2d5956=_0x5b3e91['slice'](-0x1);if(_0x2d5956==='/'||_0x2d5956==='\x5c'||_0x2d5956===':'){_0x5b3e91=_0x5b3e91['substring'](0x0,_0x5b3e91[_0x6f1c('0x14')](_0x2d5956));}switch(_0x10f531['zone']){case'US':_0x5aa99e=_0x6f1c('0x15');break;case'AU':_0x5aa99e=_0x6f1c('0x16');break;case'IN':_0x5aa99e=_0x6f1c('0x17');break;case'CN':_0x5aa99e=_0x6f1c('0x18');break;default:_0x5aa99e=_0x6f1c('0x19');break;}var _0x229e31={'method':_0x6f1c('0x1a'),'uri':_0x5aa99e+'/oauth/v2/token','form':{'grant_type':_0x6f1c('0x1b'),'client_id':_0x10f531['clientId'],'client_secret':_0x10f531[_0x6f1c('0x1c')],'redirect_uri':_0x10f531['serverUrl'],'code':_0x10f531[_0x6f1c('0x12')]},'headers':{'Content-Type':_0x6f1c('0x1d')}};return rp(_0x229e31)['then'](function(_0x5475d6){var _0x317686=JSON[_0x6f1c('0x1e')](_0x5475d6);if(_0x317686[_0x6f1c('0x1f')]){_0x10f531['refreshToken']=_0x317686[_0x6f1c('0x1f')];logger[_0x6f1c('0x20')](util[_0x6f1c('0x21')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x10f531[_0x6f1c('0x22')],_0x10f531['id']));}else{logger[_0x6f1c('0x23')](util[_0x6f1c('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x10f531[_0x6f1c('0x22')],_0x10f531['id']),util[_0x6f1c('0x24')](_0x317686,{'showHidden':![],'depth':null}));}return _0x52a2a6(null,_0x316e0e);})['catch'](function(_0x20fd66){logger[_0x6f1c('0x23')](util[_0x6f1c('0x21')](_0x6f1c('0x25'),_0x10f531['name'],_0x10f531['id']),util[_0x6f1c('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x52a2a6(_0x20fd66);});}else{return _0x52a2a6(null,_0x316e0e);}},'beforeUpdate':function(_0xd19a62,_0x235773,_0x241ee7){if(_0xd19a62[_0x6f1c('0xf')](_0x6f1c('0xe'))||_0xd19a62['changed'](_0x6f1c('0x10'))||_0xd19a62[_0x6f1c('0xf')](_0x6f1c('0x11'))||_0xd19a62[_0x6f1c('0xf')](_0x6f1c('0x1c'))||_0xd19a62['changed'](_0x6f1c('0x12'))||_0xd19a62[_0x6f1c('0xf')](_0x6f1c('0x13'))){var _0x1faa4a,_0x31e829;_0x1faa4a=_0xd19a62[_0x6f1c('0x10')];var _0x4d120d=_0x1faa4a['slice'](-0x1);if(_0x4d120d==='/'||_0x4d120d==='\x5c'||_0x4d120d===':'){_0x1faa4a=_0x1faa4a[_0x6f1c('0x26')](0x0,_0x1faa4a[_0x6f1c('0x14')](_0x4d120d));}switch(_0xd19a62[_0x6f1c('0xe')]){case'US':_0x31e829='https://accounts.zoho.com';break;case'AU':_0x31e829=_0x6f1c('0x16');break;case'IN':_0x31e829=_0x6f1c('0x17');break;case'CN':_0x31e829=_0x6f1c('0x18');break;default:_0x31e829=_0x6f1c('0x19');break;}var _0x4d38ad={'method':_0x6f1c('0x1a'),'uri':_0x31e829+_0x6f1c('0x27'),'form':{'grant_type':'authorization_code','client_id':_0xd19a62[_0x6f1c('0x11')],'client_secret':_0xd19a62[_0x6f1c('0x1c')],'redirect_uri':_0xd19a62[_0x6f1c('0x10')],'code':_0xd19a62['code']},'headers':{'Content-Type':_0x6f1c('0x1d')}};return rp(_0x4d38ad)['then'](function(_0x41adda){var _0x2ee3e7=JSON[_0x6f1c('0x1e')](_0x41adda);if(_0x2ee3e7['refresh_token']){_0xd19a62['refreshToken']=_0x2ee3e7[_0x6f1c('0x1f')];logger[_0x6f1c('0x20')](util[_0x6f1c('0x21')](_0x6f1c('0x28'),_0xd19a62[_0x6f1c('0x22')],_0xd19a62['id']));}else{logger[_0x6f1c('0x23')](util[_0x6f1c('0x21')](_0x6f1c('0x25'),_0xd19a62[_0x6f1c('0x22')],_0xd19a62['id']),util[_0x6f1c('0x24')](_0x2ee3e7,{'showHidden':![],'depth':null}));}return _0x241ee7(null,_0x235773);})[_0x6f1c('0x29')](function(_0x2ad9a6){logger[_0x6f1c('0x23')](util[_0x6f1c('0x21')](_0x6f1c('0x25'),_0xd19a62['name'],_0xd19a62['id']),util[_0x6f1c('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x241ee7(_0x2ad9a6);});}else{return _0x241ee7(null,_0x235773);}}}});};
\ No newline at end of file
index 321eeee..7d01fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ae9=['rpc','jayson/promise','client','http','request','then','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount','options','where','attributes','limit','map','include','model','info','stringify','raw','ShowZohoAccount','lodash','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x4f1ca0,_0x31ff13){var _0x543532=function(_0x4fc621){while(--_0x4fc621){_0x4f1ca0['push'](_0x4f1ca0['shift']());}};_0x543532(++_0x31ff13);}(_0x5ae9,0x19b));var _0x95ae=function(_0x1a5a53,_0x598a8c){_0x1a5a53=_0x1a5a53-0x0;var _0xf75355=_0x5ae9[_0x1a5a53];return _0xf75355;};'use strict';var _=require(_0x95ae('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x95ae('0x1'));var rs=require(_0x95ae('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x95ae('0x3'))['db'];var utils=require(_0x95ae('0x4'));var logger=require('../../config/logger')(_0x95ae('0x5'));var config=require('../../config/environment');var jayson=require(_0x95ae('0x6'));var client=jayson[_0x95ae('0x7')][_0x95ae('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xec2c41,_0x3c4cda,_0x4df142){return new BPromise(function(_0x588bab,_0x19ba28){return client[_0x95ae('0x9')](_0xec2c41,_0x4df142)[_0x95ae('0xa')](function(_0x25b2ec){logger['info']('ZohoAccount,\x20%s,\x20%s',_0x3c4cda,_0x95ae('0xb'));logger[_0x95ae('0xc')](_0x95ae('0xd'),_0x3c4cda,_0x95ae('0xb'),JSON['stringify'](_0x25b2ec));if(_0x25b2ec['error']){if(_0x25b2ec[_0x95ae('0xe')]['code']===0x1f4){logger[_0x95ae('0xe')](_0x95ae('0xf'),_0x3c4cda,_0x25b2ec['error'][_0x95ae('0x10')]);return _0x19ba28(_0x25b2ec[_0x95ae('0xe')][_0x95ae('0x10')]);}logger['error'](_0x95ae('0xf'),_0x3c4cda,_0x25b2ec[_0x95ae('0xe')][_0x95ae('0x10')]);return _0x588bab(_0x25b2ec['error'][_0x95ae('0x10')]);}else{logger['info'](_0x95ae('0xf'),_0x3c4cda,'request\x20sent');_0x588bab(_0x25b2ec[_0x95ae('0x11')][_0x95ae('0x10')]);}})[_0x95ae('0x12')](function(_0x11e960){logger[_0x95ae('0xe')](_0x95ae('0xf'),_0x3c4cda,_0x11e960);_0x19ba28(_0x11e960);});});}exports[_0x95ae('0x13')]=function(_0x24d5d2){var _0x3e1afc=this;return new Promise(function(_0x47ed05,_0x4ef50f){return db[_0x95ae('0x14')]['findAll']({'raw':_0x24d5d2[_0x95ae('0x15')]?_0x24d5d2[_0x95ae('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x24d5d2['options']?_0x24d5d2[_0x95ae('0x15')][_0x95ae('0x16')]||null:null,'attributes':_0x24d5d2[_0x95ae('0x15')]?_0x24d5d2[_0x95ae('0x15')][_0x95ae('0x17')]||null:null,'limit':_0x24d5d2['options']?_0x24d5d2[_0x95ae('0x15')][_0x95ae('0x18')]||null:null,'include':_0x24d5d2[_0x95ae('0x15')]?_0x24d5d2[_0x95ae('0x15')]['include']?_[_0x95ae('0x19')](_0x24d5d2['options'][_0x95ae('0x1a')],function(_0x59f88a){return{'model':db[_0x59f88a[_0x95ae('0x1b')]],'as':_0x59f88a['as'],'attributes':_0x59f88a[_0x95ae('0x17')],'include':_0x59f88a[_0x95ae('0x1a')]?_['map'](_0x59f88a[_0x95ae('0x1a')],function(_0x25d81c){return{'model':db[_0x25d81c[_0x95ae('0x1b')]],'as':_0x25d81c['as'],'attributes':_0x25d81c[_0x95ae('0x17')],'include':_0x25d81c[_0x95ae('0x1a')]?_['map'](_0x25d81c[_0x95ae('0x1a')],function(_0x4e2436){return{'model':db[_0x4e2436[_0x95ae('0x1b')]],'as':_0x4e2436['as'],'attributes':_0x4e2436[_0x95ae('0x17')]};}):[]};}):[]};}):[]:[]})[_0x95ae('0xa')](function(_0x51ba5d){logger[_0x95ae('0x1c')]('GetZohoAccount',_0x24d5d2);logger[_0x95ae('0xc')](_0x95ae('0x13'),_0x24d5d2,JSON[_0x95ae('0x1d')](_0x51ba5d));_0x47ed05(_0x51ba5d);})[_0x95ae('0x12')](function(_0x4fa625){logger[_0x95ae('0xe')](_0x95ae('0x13'),_0x4fa625[_0x95ae('0x10')],_0x24d5d2);_0x4ef50f(_0x3e1afc['error'](0x1f4,_0x4fa625[_0x95ae('0x10')]));});});};exports['ShowZohoAccount']=function(_0x4c44f4){var _0x4ab2db=this;return new Promise(function(_0x1820b4,_0x1e893e){return db[_0x95ae('0x14')]['find']({'raw':_0x4c44f4[_0x95ae('0x15')]?_0x4c44f4['options'][_0x95ae('0x1e')]===undefined?!![]:![]:!![],'where':_0x4c44f4[_0x95ae('0x15')]?_0x4c44f4['options'][_0x95ae('0x16')]||null:null,'attributes':_0x4c44f4['options']?_0x4c44f4[_0x95ae('0x15')][_0x95ae('0x17')]||null:null,'include':_0x4c44f4['options']?_0x4c44f4[_0x95ae('0x15')][_0x95ae('0x1a')]?_[_0x95ae('0x19')](_0x4c44f4[_0x95ae('0x15')][_0x95ae('0x1a')],function(_0xd0ce8){return{'model':db[_0xd0ce8[_0x95ae('0x1b')]],'as':_0xd0ce8['as'],'attributes':_0xd0ce8['attributes'],'include':_0xd0ce8['include']?_[_0x95ae('0x19')](_0xd0ce8[_0x95ae('0x1a')],function(_0x8ce95d){return{'model':db[_0x8ce95d[_0x95ae('0x1b')]],'as':_0x8ce95d['as'],'attributes':_0x8ce95d[_0x95ae('0x17')],'include':_0x8ce95d['include']?_[_0x95ae('0x19')](_0x8ce95d[_0x95ae('0x1a')],function(_0x5d58f3){return{'model':db[_0x5d58f3[_0x95ae('0x1b')]],'as':_0x5d58f3['as'],'attributes':_0x5d58f3[_0x95ae('0x17')]};}):[]};}):[]};}):[]:[]})[_0x95ae('0xa')](function(_0x4ebdbb){logger[_0x95ae('0x1c')](_0x95ae('0x1f'),_0x4c44f4);logger[_0x95ae('0xc')](_0x95ae('0x1f'),_0x4c44f4,JSON['stringify'](_0x4ebdbb));_0x1820b4(_0x4ebdbb);})[_0x95ae('0x12')](function(_0x50783e){logger[_0x95ae('0xe')](_0x95ae('0x1f'),_0x50783e[_0x95ae('0x10')],_0x4c44f4);_0x1e893e(_0x4ab2db[_0x95ae('0xe')](0x1f4,_0x50783e[_0x95ae('0x10')]));});});};
\ No newline at end of file
+var _0xc74c=['catch','GetZohoAccount','ZohoAccount','findAll','options','raw','where','attributes','include','map','model','debug','find','then','ShowZohoAccount','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xc74c,0x163));var _0xcc74=function(_0xf98b63,_0x338484){_0xf98b63=_0xf98b63-0x0;var _0x390363=_0xc74c[_0xf98b63];return _0x390363;};'use strict';var _=require(_0xcc74('0x0'));var util=require(_0xcc74('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcc74('0x2'));var fs=require('fs');var Redis=require(_0xcc74('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcc74('0x4'));var logger=require(_0xcc74('0x5'))(_0xcc74('0x6'));var config=require(_0xcc74('0x7'));var jayson=require(_0xcc74('0x8'));var client=jayson[_0xcc74('0x9')][_0xcc74('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d46a6,_0x15248f,_0x86f429){return new BPromise(function(_0x1eb886,_0x473308){return client[_0xcc74('0xb')](_0x5d46a6,_0x86f429)['then'](function(_0x4b4534){logger[_0xcc74('0xc')](_0xcc74('0xd'),_0x15248f,_0xcc74('0xe'));logger['debug'](_0xcc74('0xf'),_0x15248f,_0xcc74('0xe'),JSON[_0xcc74('0x10')](_0x4b4534));if(_0x4b4534['error']){if(_0x4b4534[_0xcc74('0x11')]['code']===0x1f4){logger[_0xcc74('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x15248f,_0x4b4534['error']['message']);return _0x473308(_0x4b4534[_0xcc74('0x11')][_0xcc74('0x12')]);}logger[_0xcc74('0x11')](_0xcc74('0xd'),_0x15248f,_0x4b4534[_0xcc74('0x11')]['message']);return _0x1eb886(_0x4b4534[_0xcc74('0x11')][_0xcc74('0x12')]);}else{logger[_0xcc74('0xc')](_0xcc74('0xd'),_0x15248f,_0xcc74('0xe'));_0x1eb886(_0x4b4534['result'][_0xcc74('0x12')]);}})[_0xcc74('0x13')](function(_0xe44014){logger[_0xcc74('0x11')](_0xcc74('0xd'),_0x15248f,_0xe44014);_0x473308(_0xe44014);});});}exports[_0xcc74('0x14')]=function(_0x170583){var _0x45d9bd=this;return new Promise(function(_0x30101f,_0x5a18b3){return db[_0xcc74('0x15')][_0xcc74('0x16')]({'raw':_0x170583[_0xcc74('0x17')]?_0x170583[_0xcc74('0x17')][_0xcc74('0x18')]===undefined?!![]:![]:!![],'where':_0x170583[_0xcc74('0x17')]?_0x170583['options'][_0xcc74('0x19')]||null:null,'attributes':_0x170583[_0xcc74('0x17')]?_0x170583['options'][_0xcc74('0x1a')]||null:null,'limit':_0x170583[_0xcc74('0x17')]?_0x170583[_0xcc74('0x17')]['limit']||null:null,'include':_0x170583[_0xcc74('0x17')]?_0x170583[_0xcc74('0x17')][_0xcc74('0x1b')]?_[_0xcc74('0x1c')](_0x170583['options'][_0xcc74('0x1b')],function(_0x11811d){return{'model':db[_0x11811d[_0xcc74('0x1d')]],'as':_0x11811d['as'],'attributes':_0x11811d['attributes'],'include':_0x11811d[_0xcc74('0x1b')]?_[_0xcc74('0x1c')](_0x11811d[_0xcc74('0x1b')],function(_0x5a9fa6){return{'model':db[_0x5a9fa6['model']],'as':_0x5a9fa6['as'],'attributes':_0x5a9fa6['attributes'],'include':_0x5a9fa6[_0xcc74('0x1b')]?_[_0xcc74('0x1c')](_0x5a9fa6[_0xcc74('0x1b')],function(_0x311cc2){return{'model':db[_0x311cc2[_0xcc74('0x1d')]],'as':_0x311cc2['as'],'attributes':_0x311cc2[_0xcc74('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x393e56){logger[_0xcc74('0xc')](_0xcc74('0x14'),_0x170583);logger[_0xcc74('0x1e')]('GetZohoAccount',_0x170583,JSON[_0xcc74('0x10')](_0x393e56));_0x30101f(_0x393e56);})[_0xcc74('0x13')](function(_0x46e47f){logger[_0xcc74('0x11')](_0xcc74('0x14'),_0x46e47f[_0xcc74('0x12')],_0x170583);_0x5a18b3(_0x45d9bd['error'](0x1f4,_0x46e47f[_0xcc74('0x12')]));});});};exports['ShowZohoAccount']=function(_0x3faeab){var _0x380134=this;return new Promise(function(_0x424718,_0x43513b){return db[_0xcc74('0x15')][_0xcc74('0x1f')]({'raw':_0x3faeab['options']?_0x3faeab['options'][_0xcc74('0x18')]===undefined?!![]:![]:!![],'where':_0x3faeab[_0xcc74('0x17')]?_0x3faeab[_0xcc74('0x17')]['where']||null:null,'attributes':_0x3faeab[_0xcc74('0x17')]?_0x3faeab[_0xcc74('0x17')]['attributes']||null:null,'include':_0x3faeab['options']?_0x3faeab[_0xcc74('0x17')][_0xcc74('0x1b')]?_['map'](_0x3faeab[_0xcc74('0x17')][_0xcc74('0x1b')],function(_0x1a8b20){return{'model':db[_0x1a8b20[_0xcc74('0x1d')]],'as':_0x1a8b20['as'],'attributes':_0x1a8b20[_0xcc74('0x1a')],'include':_0x1a8b20[_0xcc74('0x1b')]?_['map'](_0x1a8b20[_0xcc74('0x1b')],function(_0x2a4634){return{'model':db[_0x2a4634[_0xcc74('0x1d')]],'as':_0x2a4634['as'],'attributes':_0x2a4634[_0xcc74('0x1a')],'include':_0x2a4634[_0xcc74('0x1b')]?_[_0xcc74('0x1c')](_0x2a4634[_0xcc74('0x1b')],function(_0x5a361f){return{'model':db[_0x5a361f[_0xcc74('0x1d')]],'as':_0x5a361f['as'],'attributes':_0x5a361f['attributes']};}):[]};}):[]};}):[]:[]})[_0xcc74('0x20')](function(_0xe7c08b){logger[_0xcc74('0xc')](_0xcc74('0x21'),_0x3faeab);logger[_0xcc74('0x1e')](_0xcc74('0x21'),_0x3faeab,JSON[_0xcc74('0x10')](_0xe7c08b));_0x424718(_0xe7c08b);})[_0xcc74('0x13')](function(_0x11d7d7){logger[_0xcc74('0x11')](_0xcc74('0x21'),_0x11d7d7[_0xcc74('0x12')],_0x3faeab);_0x43513b(_0x380134['error'](0x1f4,_0x11d7d7[_0xcc74('0x12')]));});});};
\ No newline at end of file
index d302307..7583f72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb024=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','update','/:id','exports','multer','util','path','connect-timeout'];(function(_0x54c10d,_0x2f2251){var _0x1fa703=function(_0x508eb4){while(--_0x508eb4){_0x54c10d['push'](_0x54c10d['shift']());}};_0x1fa703(++_0x2f2251);}(_0xb024,0xd4));var _0x4b02=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb024[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x4b02('0x0'));var util=require(_0x4b02('0x1'));var path=require(_0x4b02('0x2'));var timeout=require(_0x4b02('0x3'));var express=require(_0x4b02('0x4'));var router=express['Router']();var fs_extra=require(_0x4b02('0x5'));var auth=require(_0x4b02('0x6'));var interaction=require(_0x4b02('0x7'));var config=require(_0x4b02('0x8'));var controller=require(_0x4b02('0x9'));router[_0x4b02('0xa')]('/',auth[_0x4b02('0xb')](),controller[_0x4b02('0xc')]);router[_0x4b02('0xa')]('/:id',auth[_0x4b02('0xb')](),controller[_0x4b02('0xd')]);router['get'](_0x4b02('0xe'),auth[_0x4b02('0xb')](),controller[_0x4b02('0xf')]);router[_0x4b02('0xa')](_0x4b02('0x10'),auth[_0x4b02('0xb')](),controller['getSubjects']);router[_0x4b02('0xa')](_0x4b02('0x11'),auth[_0x4b02('0xb')](),controller[_0x4b02('0x12')]);router[_0x4b02('0x13')]('/',auth['isAuthenticated'](),controller[_0x4b02('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x4b02('0x15')]);router['delete'](_0x4b02('0x16'),auth[_0x4b02('0xb')](),controller['destroy']);module[_0x4b02('0x17')]=router;
\ No newline at end of file
+var _0xaf84=['Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','isAuthenticated','index','/:id','get','/:id/fields','getFields','/:id/subjects','getDescriptions','create','put','update','delete','destroy','multer','util','path','connect-timeout'];(function(_0x575479,_0x515c31){var _0x367a3f=function(_0x3eccc1){while(--_0x3eccc1){_0x575479['push'](_0x575479['shift']());}};_0x367a3f(++_0x515c31);}(_0xaf84,0x172));var _0x4af8=function(_0x1d87fc,_0x1e5321){_0x1d87fc=_0x1d87fc-0x0;var _0x492b56=_0xaf84[_0x1d87fc];return _0x492b56;};'use strict';var multer=require(_0x4af8('0x0'));var util=require(_0x4af8('0x1'));var path=require(_0x4af8('0x2'));var timeout=require(_0x4af8('0x3'));var express=require('express');var router=express[_0x4af8('0x4')]();var fs_extra=require(_0x4af8('0x5'));var auth=require(_0x4af8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4af8('0x7'));var controller=require(_0x4af8('0x8'));router['get']('/',auth[_0x4af8('0x9')](),controller[_0x4af8('0xa')]);router['get'](_0x4af8('0xb'),auth[_0x4af8('0x9')](),controller['show']);router[_0x4af8('0xc')](_0x4af8('0xd'),auth['isAuthenticated'](),controller[_0x4af8('0xe')]);router[_0x4af8('0xc')](_0x4af8('0xf'),auth[_0x4af8('0x9')](),controller['getSubjects']);router[_0x4af8('0xc')]('/:id/descriptions',auth[_0x4af8('0x9')](),controller[_0x4af8('0x10')]);router['post']('/',auth[_0x4af8('0x9')](),controller[_0x4af8('0x11')]);router[_0x4af8('0x12')](_0x4af8('0xb'),auth['isAuthenticated'](),controller[_0x4af8('0x13')]);router[_0x4af8('0x14')](_0x4af8('0xb'),auth['isAuthenticated'](),controller[_0x4af8('0x15')]);module['exports']=router;
\ No newline at end of file
index 0fc8b63..2291130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8524=['contact_lead','sequelize','exports','STRING','ENUM','lead','nothing','contact'];(function(_0x3ba924,_0x3b99f0){var _0x4cc1df=function(_0x15bf28){while(--_0x15bf28){_0x3ba924['push'](_0x3ba924['shift']());}};_0x4cc1df(++_0x3b99f0);}(_0x8524,0xb9));var _0x4852=function(_0x4ca0b7,_0xb99335){_0x4ca0b7=_0x4ca0b7-0x0;var _0x29e26d=_0x8524[_0x4ca0b7];return _0x29e26d;};'use strict';var Sequelize=require(_0x4852('0x0'));module[_0x4852('0x1')]={'name':{'type':Sequelize[_0x4852('0x2')]},'moduleCreate':{'type':Sequelize[_0x4852('0x3')](_0x4852('0x4'),'contact',_0x4852('0x5')),'defaultValue':_0x4852('0x4')},'moduleSearch':{'type':Sequelize[_0x4852('0x3')]('contact_lead',_0x4852('0x6'),_0x4852('0x4')),'defaultValue':_0x4852('0x7')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x045a=['STRING','sequelize','exports','ENUM','lead','contact','nothing','contact_lead'];(function(_0x3dfdd2,_0x51e9d2){var _0x5675b9=function(_0x38e1e8){while(--_0x38e1e8){_0x3dfdd2['push'](_0x3dfdd2['shift']());}};_0x5675b9(++_0x51e9d2);}(_0x045a,0xf1));var _0xa045=function(_0x1b9c91,_0x25d623){_0x1b9c91=_0x1b9c91-0x0;var _0x36ac06=_0x045a[_0x1b9c91];return _0x36ac06;};'use strict';var Sequelize=require(_0xa045('0x0'));module[_0xa045('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xa045('0x2')](_0xa045('0x3'),_0xa045('0x4'),_0xa045('0x5')),'defaultValue':_0xa045('0x3')},'moduleSearch':{'type':Sequelize[_0xa045('0x2')](_0xa045('0x6'),_0xa045('0x4'),_0xa045('0x3')),'defaultValue':_0xa045('0x6')},'description':{'type':Sequelize[_0xa045('0x7')]}};
\ No newline at end of file
index 6f42d3e..5667519 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46c3=['to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','status','end','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','options','includeAll','include','ZohoConfiguration','findAll','catch','show','params','create','body','destroy','getFields','findOne','order','hasOwnProperty','getSubjects','ZohoField','getDescriptions','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox'];(function(_0x13c484,_0x42e942){var _0x56bade=function(_0x5b5807){while(--_0x5b5807){_0x13c484['push'](_0x13c484['shift']());}};_0x56bade(++_0x42e942);}(_0x46c3,0x1c7));var _0x346c=function(_0x19ced6,_0x210f9b){_0x19ced6=_0x19ced6-0x0;var _0x331a2e=_0x46c3[_0x19ced6];return _0x331a2e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x346c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x346c('0x1'));var rp=require(_0x346c('0x2'));var moment=require(_0x346c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x346c('0x4'));var util=require('util');var path=require(_0x346c('0x5'));var sox=require(_0x346c('0x6'));var csv=require(_0x346c('0x7'));var ejs=require(_0x346c('0x8'));var fs=require('fs');var fs_extra=require(_0x346c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x346c('0xa'));var jsforce=require(_0x346c('0xb'));var deskjs=require(_0x346c('0xc'));var toCsv=require(_0x346c('0x7'));var querystring=require(_0x346c('0xd'));var Papa=require(_0x346c('0xe'));var Redis=require(_0x346c('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x346c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x346c('0x11'));var logger=require(_0x346c('0x12'))(_0x346c('0x13'));var utils=require('../../config/utils');var config=require(_0x346c('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x346c('0x15'))['db'];function respondWithStatusCode(_0x16d026,_0x1c0ef1){_0x1c0ef1=_0x1c0ef1||0xcc;return function(_0x35eda7){if(_0x35eda7){return _0x16d026[_0x346c('0x16')](_0x1c0ef1);}return _0x16d026['status'](_0x1c0ef1)['end']();};}function respondWithResult(_0x37f478,_0x460d5b){_0x460d5b=_0x460d5b||0xc8;return function(_0x1e9b31){if(_0x1e9b31){return _0x37f478['status'](_0x460d5b)[_0x346c('0x17')](_0x1e9b31);}};}function respondWithFilteredResult(_0x2ed487,_0x53805c){return function(_0x41dda6){if(_0x41dda6){var _0x365eca=typeof _0x53805c[_0x346c('0x18')]===_0x346c('0x19')&&typeof _0x53805c[_0x346c('0x1a')]===_0x346c('0x19');var _0x475e6d=_0x41dda6['count'];var _0x438400=_0x365eca?0x0:_0x53805c['offset'];var _0x3bc3a9=_0x365eca?_0x41dda6[_0x346c('0x1b')]:_0x53805c[_0x346c('0x18')]+_0x53805c[_0x346c('0x1a')];var _0x24d69b;if(_0x3bc3a9>=_0x475e6d){_0x3bc3a9=_0x475e6d;_0x24d69b=0xc8;}else{_0x24d69b=0xce;}_0x2ed487['status'](_0x24d69b);return _0x2ed487[_0x346c('0x1c')](_0x346c('0x1d'),_0x438400+'-'+_0x3bc3a9+'/'+_0x475e6d)[_0x346c('0x17')](_0x41dda6);}return null;};}function patchUpdates(_0xe19741){return function(_0x281e81){try{jsonpatch[_0x346c('0x1e')](_0x281e81,_0xe19741,!![]);}catch(_0x2dc735){return BPromise[_0x346c('0x1f')](_0x2dc735);}return _0x281e81['save']();};}function saveUpdates(_0x52afa4,_0x284f99){return function(_0x2e4447){if(_0x2e4447){return _0x2e4447[_0x346c('0x20')](_0x52afa4)[_0x346c('0x21')](function(_0x1b6909){return _0x1b6909;});}return null;};}function removeEntity(_0x557dfa,_0x5a69c5){return function(_0x620cff){if(_0x620cff){return _0x620cff['destroy']()['then'](function(){_0x557dfa[_0x346c('0x22')](0xcc)[_0x346c('0x23')]();});}};}function handleEntityNotFound(_0x219944,_0x2deec5){return function(_0xff289){if(!_0xff289){_0x219944[_0x346c('0x16')](0x194);}return _0xff289;};}function handleError(_0x3739ec,_0x3917f9){_0x3917f9=_0x3917f9||0x1f4;return function(_0x522593){logger[_0x346c('0x24')](_0x522593[_0x346c('0x25')]);if(_0x522593[_0x346c('0x26')]){delete _0x522593[_0x346c('0x26')];}_0x3739ec[_0x346c('0x22')](_0x3917f9)[_0x346c('0x27')](_0x522593);};}exports['index']=function(_0x40d488,_0x54dc91){var _0x29d925={},_0x1a17eb={},_0x206fdc={'count':0x0,'rows':[]};var _0x219bc8=_[_0x346c('0x28')](db['ZohoConfiguration'][_0x346c('0x29')],function(_0x22b667){return{'name':_0x22b667[_0x346c('0x2a')],'type':_0x22b667[_0x346c('0x2b')][_0x346c('0x2c')]};});_0x1a17eb[_0x346c('0x2d')]=_[_0x346c('0x28')](_0x219bc8,_0x346c('0x26'));_0x1a17eb[_0x346c('0x2e')]=_[_0x346c('0x2f')](_0x40d488[_0x346c('0x2e')]);_0x1a17eb[_0x346c('0x30')]=_[_0x346c('0x31')](_0x1a17eb[_0x346c('0x2d')],_0x1a17eb[_0x346c('0x2e')]);_0x29d925[_0x346c('0x32')]=_['intersection'](_0x1a17eb[_0x346c('0x2d')],qs['fields'](_0x40d488['query'][_0x346c('0x33')]));_0x29d925['attributes']=_0x29d925[_0x346c('0x32')][_0x346c('0x34')]?_0x29d925[_0x346c('0x32')]:_0x1a17eb[_0x346c('0x2d')];if(!_0x40d488[_0x346c('0x2e')]['hasOwnProperty'](_0x346c('0x35'))){_0x29d925[_0x346c('0x1a')]=qs[_0x346c('0x1a')](_0x40d488[_0x346c('0x2e')]['limit']);_0x29d925[_0x346c('0x18')]=qs[_0x346c('0x18')](_0x40d488[_0x346c('0x2e')][_0x346c('0x18')]);}_0x29d925['order']=qs[_0x346c('0x36')](_0x40d488[_0x346c('0x2e')][_0x346c('0x36')]);_0x29d925[_0x346c('0x37')]=qs[_0x346c('0x30')](_[_0x346c('0x38')](_0x40d488['query'],_0x1a17eb[_0x346c('0x30')]),_0x219bc8);if(_0x40d488[_0x346c('0x2e')][_0x346c('0x39')]){_0x29d925[_0x346c('0x37')]=_[_0x346c('0x3a')](_0x29d925[_0x346c('0x37')],{'$or':_[_0x346c('0x28')](_0x219bc8,function(_0x5153f0){if(_0x5153f0[_0x346c('0x2b')]!=='VIRTUAL'){var _0x2216b4={};_0x2216b4[_0x5153f0[_0x346c('0x26')]]={'$like':'%'+_0x40d488[_0x346c('0x2e')][_0x346c('0x39')]+'%'};return _0x2216b4;}})});}_0x29d925=_['merge']({},_0x29d925,_0x40d488[_0x346c('0x3b')]);var _0x5a859c={'where':_0x29d925[_0x346c('0x37')]};return db['ZohoConfiguration']['count'](_0x5a859c)[_0x346c('0x21')](function(_0xecd891){_0x206fdc[_0x346c('0x1b')]=_0xecd891;if(_0x40d488[_0x346c('0x2e')][_0x346c('0x3c')]){_0x29d925[_0x346c('0x3d')]=[{'all':!![]}];}return db[_0x346c('0x3e')][_0x346c('0x3f')](_0x29d925);})['then'](function(_0x46e427){_0x206fdc['rows']=_0x46e427;return _0x206fdc;})[_0x346c('0x21')](respondWithFilteredResult(_0x54dc91,_0x29d925))[_0x346c('0x40')](handleError(_0x54dc91,null));};exports[_0x346c('0x41')]=function(_0x554a2f,_0x2d629a){var _0x546e44={'raw':![],'where':{'id':_0x554a2f[_0x346c('0x42')]['id']}},_0x47dbda={};_0x47dbda[_0x346c('0x2d')]=_[_0x346c('0x2f')](db[_0x346c('0x3e')][_0x346c('0x29')]);_0x47dbda[_0x346c('0x2e')]=_[_0x346c('0x2f')](_0x554a2f[_0x346c('0x2e')]);_0x47dbda[_0x346c('0x30')]=_[_0x346c('0x31')](_0x47dbda[_0x346c('0x2d')],_0x47dbda[_0x346c('0x2e')]);_0x546e44['attributes']=_[_0x346c('0x31')](_0x47dbda[_0x346c('0x2d')],qs[_0x346c('0x33')](_0x554a2f[_0x346c('0x2e')][_0x346c('0x33')]));_0x546e44['attributes']=_0x546e44['attributes'][_0x346c('0x34')]?_0x546e44['attributes']:_0x47dbda['model'];if(_0x554a2f[_0x346c('0x2e')]['includeAll']){_0x546e44[_0x346c('0x3d')]=[{'all':!![]}];}_0x546e44=_[_0x346c('0x3a')]({},_0x546e44,_0x554a2f['options']);return db[_0x346c('0x3e')]['find'](_0x546e44)[_0x346c('0x21')](handleEntityNotFound(_0x2d629a,null))[_0x346c('0x21')](respondWithResult(_0x2d629a,null))[_0x346c('0x40')](handleError(_0x2d629a,null));};exports['create']=function(_0x1895c9,_0x50a6eb){return db[_0x346c('0x3e')][_0x346c('0x43')](_0x1895c9['body'],{})[_0x346c('0x21')](respondWithResult(_0x50a6eb,0xc9))['catch'](handleError(_0x50a6eb,null));};exports[_0x346c('0x20')]=function(_0x17f536,_0x5421da){if(_0x17f536['body']['id']){delete _0x17f536['body']['id'];}return db['ZohoConfiguration']['find']({'where':{'id':_0x17f536[_0x346c('0x42')]['id']}})[_0x346c('0x21')](handleEntityNotFound(_0x5421da,null))['then'](saveUpdates(_0x17f536[_0x346c('0x44')],null))['then'](respondWithResult(_0x5421da,null))[_0x346c('0x40')](handleError(_0x5421da,null));};exports[_0x346c('0x45')]=function(_0x47d157,_0x576962){return db['ZohoConfiguration']['find']({'where':{'id':_0x47d157['params']['id']}})[_0x346c('0x21')](handleEntityNotFound(_0x576962,null))[_0x346c('0x21')](removeEntity(_0x576962,null))[_0x346c('0x40')](handleError(_0x576962,null));};exports[_0x346c('0x46')]=function(_0x4437f1,_0x2db9e8,_0x46367e){var _0x3aea98={};var _0x3654a7={};var _0x3e51d3;var _0x3b168b;return db[_0x346c('0x3e')][_0x346c('0x47')]({'where':{'id':_0x4437f1[_0x346c('0x42')]['id']}})[_0x346c('0x21')](handleEntityNotFound(_0x2db9e8,null))[_0x346c('0x21')](function(_0xc3ed8b){if(_0xc3ed8b){_0x3e51d3=_0xc3ed8b;_0x3654a7['model']=_[_0x346c('0x2f')](db['ZohoField']['rawAttributes']);_0x3654a7[_0x346c('0x2e')]=_['keys'](_0x4437f1[_0x346c('0x2e')]);_0x3654a7[_0x346c('0x30')]=_[_0x346c('0x31')](_0x3654a7[_0x346c('0x2d')],_0x3654a7[_0x346c('0x2e')]);_0x3aea98['attributes']=_[_0x346c('0x31')](_0x3654a7['model'],qs['fields'](_0x4437f1[_0x346c('0x2e')][_0x346c('0x33')]));_0x3aea98[_0x346c('0x32')]=_0x3aea98[_0x346c('0x32')][_0x346c('0x34')]?_0x3aea98[_0x346c('0x32')]:_0x3654a7[_0x346c('0x2d')];_0x3aea98[_0x346c('0x48')]=qs[_0x346c('0x36')](_0x4437f1['query']['sort']);_0x3aea98[_0x346c('0x37')]=qs[_0x346c('0x30')](_['pick'](_0x4437f1[_0x346c('0x2e')],_0x3654a7[_0x346c('0x30')]));if(_0x4437f1['query']['filter']){_0x3aea98['where']=_[_0x346c('0x3a')](_0x3aea98[_0x346c('0x37')],{'$or':_['map'](_0x3aea98['attributes'],function(_0x4f4faf){var _0x1516d3={};_0x1516d3[_0x4f4faf]={'$like':'%'+_0x4437f1['query'][_0x346c('0x39')]+'%'};return _0x1516d3;})});}_0x3aea98=_['merge']({},_0x3aea98,_0x4437f1[_0x346c('0x3b')]);return _0x3e51d3[_0x346c('0x46')](_0x3aea98);}})[_0x346c('0x21')](function(_0x2a4d61){if(_0x2a4d61){_0x3b168b=_0x2a4d61['length'];if(!_0x4437f1[_0x346c('0x2e')][_0x346c('0x49')]('nolimit')){_0x3aea98[_0x346c('0x1a')]=qs[_0x346c('0x1a')](_0x4437f1[_0x346c('0x2e')]['limit']);_0x3aea98[_0x346c('0x18')]=qs[_0x346c('0x18')](_0x4437f1[_0x346c('0x2e')][_0x346c('0x18')]);}return _0x3e51d3[_0x346c('0x46')](_0x3aea98);}})['then'](function(_0x4ce460){if(_0x4ce460){return _0x4ce460?{'count':_0x3b168b,'rows':_0x4ce460}:null;}})[_0x346c('0x21')](respondWithResult(_0x2db9e8,null))[_0x346c('0x40')](handleError(_0x2db9e8,null));};exports[_0x346c('0x4a')]=function(_0x298015,_0x294ea0,_0x119833){var _0x1c0052={};var _0x80c3b4={};var _0x5ee983;var _0x234343;return db[_0x346c('0x3e')][_0x346c('0x47')]({'where':{'id':_0x298015[_0x346c('0x42')]['id']}})[_0x346c('0x21')](handleEntityNotFound(_0x294ea0,null))['then'](function(_0x3b61df){if(_0x3b61df){_0x5ee983=_0x3b61df;_0x80c3b4[_0x346c('0x2d')]=_['keys'](db[_0x346c('0x4b')][_0x346c('0x29')]);_0x80c3b4[_0x346c('0x2e')]=_[_0x346c('0x2f')](_0x298015[_0x346c('0x2e')]);_0x80c3b4[_0x346c('0x30')]=_['intersection'](_0x80c3b4[_0x346c('0x2d')],_0x80c3b4[_0x346c('0x2e')]);_0x1c0052['attributes']=_[_0x346c('0x31')](_0x80c3b4[_0x346c('0x2d')],qs[_0x346c('0x33')](_0x298015['query'][_0x346c('0x33')]));_0x1c0052['attributes']=_0x1c0052[_0x346c('0x32')][_0x346c('0x34')]?_0x1c0052[_0x346c('0x32')]:_0x80c3b4[_0x346c('0x2d')];_0x1c0052[_0x346c('0x48')]=qs[_0x346c('0x36')](_0x298015['query'][_0x346c('0x36')]);_0x1c0052['where']=qs[_0x346c('0x30')](_['pick'](_0x298015[_0x346c('0x2e')],_0x80c3b4['filters']));if(_0x298015[_0x346c('0x2e')][_0x346c('0x39')]){_0x1c0052['where']=_[_0x346c('0x3a')](_0x1c0052[_0x346c('0x37')],{'$or':_['map'](_0x1c0052['attributes'],function(_0x2c8109){var _0xfc535d={};_0xfc535d[_0x2c8109]={'$like':'%'+_0x298015[_0x346c('0x2e')][_0x346c('0x39')]+'%'};return _0xfc535d;})});}_0x1c0052=_[_0x346c('0x3a')]({},_0x1c0052,_0x298015['options']);return _0x5ee983[_0x346c('0x4a')](_0x1c0052);}})[_0x346c('0x21')](function(_0x5dbff8){if(_0x5dbff8){_0x234343=_0x5dbff8['length'];if(!_0x298015[_0x346c('0x2e')][_0x346c('0x49')]('nolimit')){_0x1c0052[_0x346c('0x1a')]=qs[_0x346c('0x1a')](_0x298015[_0x346c('0x2e')]['limit']);_0x1c0052['offset']=qs[_0x346c('0x18')](_0x298015[_0x346c('0x2e')][_0x346c('0x18')]);}return _0x5ee983['getSubjects'](_0x1c0052);}})[_0x346c('0x21')](function(_0x131adc){if(_0x131adc){return _0x131adc?{'count':_0x234343,'rows':_0x131adc}:null;}})[_0x346c('0x21')](respondWithResult(_0x294ea0,null))['catch'](handleError(_0x294ea0,null));};exports[_0x346c('0x4c')]=function(_0x3d545f,_0x540851,_0xb9970b){var _0x1a0688={};var _0x58e845={};var _0x53bc83;var _0x3992d2;return db[_0x346c('0x3e')][_0x346c('0x47')]({'where':{'id':_0x3d545f[_0x346c('0x42')]['id']}})[_0x346c('0x21')](handleEntityNotFound(_0x540851,null))[_0x346c('0x21')](function(_0x216a4a){if(_0x216a4a){_0x53bc83=_0x216a4a;_0x58e845[_0x346c('0x2d')]=_[_0x346c('0x2f')](db['ZohoField'][_0x346c('0x29')]);_0x58e845[_0x346c('0x2e')]=_[_0x346c('0x2f')](_0x3d545f[_0x346c('0x2e')]);_0x58e845[_0x346c('0x30')]=_['intersection'](_0x58e845[_0x346c('0x2d')],_0x58e845[_0x346c('0x2e')]);_0x1a0688['attributes']=_[_0x346c('0x31')](_0x58e845['model'],qs[_0x346c('0x33')](_0x3d545f[_0x346c('0x2e')][_0x346c('0x33')]));_0x1a0688['attributes']=_0x1a0688[_0x346c('0x32')][_0x346c('0x34')]?_0x1a0688[_0x346c('0x32')]:_0x58e845[_0x346c('0x2d')];_0x1a0688[_0x346c('0x48')]=qs[_0x346c('0x36')](_0x3d545f[_0x346c('0x2e')][_0x346c('0x36')]);_0x1a0688['where']=qs[_0x346c('0x30')](_[_0x346c('0x38')](_0x3d545f[_0x346c('0x2e')],_0x58e845[_0x346c('0x30')]));if(_0x3d545f[_0x346c('0x2e')][_0x346c('0x39')]){_0x1a0688[_0x346c('0x37')]=_[_0x346c('0x3a')](_0x1a0688[_0x346c('0x37')],{'$or':_['map'](_0x1a0688[_0x346c('0x32')],function(_0x1c85cf){var _0x20dcab={};_0x20dcab[_0x1c85cf]={'$like':'%'+_0x3d545f[_0x346c('0x2e')]['filter']+'%'};return _0x20dcab;})});}_0x1a0688=_[_0x346c('0x3a')]({},_0x1a0688,_0x3d545f['options']);return _0x53bc83[_0x346c('0x4c')](_0x1a0688);}})['then'](function(_0x55d7b8){if(_0x55d7b8){_0x3992d2=_0x55d7b8[_0x346c('0x34')];if(!_0x3d545f[_0x346c('0x2e')][_0x346c('0x49')](_0x346c('0x35'))){_0x1a0688['limit']=qs[_0x346c('0x1a')](_0x3d545f[_0x346c('0x2e')][_0x346c('0x1a')]);_0x1a0688['offset']=qs[_0x346c('0x18')](_0x3d545f[_0x346c('0x2e')][_0x346c('0x18')]);}return _0x53bc83['getDescriptions'](_0x1a0688);}})[_0x346c('0x21')](function(_0xa23a5e){if(_0xa23a5e){return _0xa23a5e?{'count':_0x3992d2,'rows':_0xa23a5e}:null;}})[_0x346c('0x21')](respondWithResult(_0x540851,null))[_0x346c('0x40')](handleError(_0x540851,null));};
\ No newline at end of file
+var _0x7e82=['count','set','Content-Range','apply','reject','update','end','sendStatus','error','name','index','map','ZohoConfiguration','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','type','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','length','merge','find','create','body','destroy','getFields','findOne','hasOwnProperty','getSubjects','ZohoField','nolimit','getDescriptions','rimraf','zip-dir','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','status','json','offset','undefined','limit'];(function(_0x3b9859,_0x52b534){var _0x3bc080=function(_0x5c4e2e){while(--_0x5c4e2e){_0x3b9859['push'](_0x3b9859['shift']());}};_0x3bc080(++_0x52b534);}(_0x7e82,0x11a));var _0x27e8=function(_0x5b00b0,_0x486fa3){_0x5b00b0=_0x5b00b0-0x0;var _0x4f7c9c=_0x7e82[_0x5b00b0];return _0x4f7c9c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x27e8('0x0'));var zipdir=require(_0x27e8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x27e8('0x2'));var moment=require(_0x27e8('0x3'));var BPromise=require(_0x27e8('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x27e8('0x5'));var csv=require(_0x27e8('0x6'));var ejs=require(_0x27e8('0x7'));var fs=require('fs');var fs_extra=require(_0x27e8('0x8'));var _=require(_0x27e8('0x9'));var squel=require('squel');var crypto=require(_0x27e8('0xa'));var jsforce=require(_0x27e8('0xb'));var deskjs=require(_0x27e8('0xc'));var toCsv=require(_0x27e8('0x6'));var querystring=require(_0x27e8('0xd'));var Papa=require('papaparse');var Redis=require(_0x27e8('0xe'));var authService=require(_0x27e8('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x27e8('0x10'));var hardwareService=require(_0x27e8('0x11'));var logger=require('../../config/logger')(_0x27e8('0x12'));var utils=require(_0x27e8('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x27e8('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2d690a,_0x45db1e){_0x45db1e=_0x45db1e||0xcc;return function(_0x57032d){if(_0x57032d){return _0x2d690a['sendStatus'](_0x45db1e);}return _0x2d690a[_0x27e8('0x15')](_0x45db1e)['end']();};}function respondWithResult(_0x52a4da,_0x1fcb60){_0x1fcb60=_0x1fcb60||0xc8;return function(_0x4ba54e){if(_0x4ba54e){return _0x52a4da[_0x27e8('0x15')](_0x1fcb60)[_0x27e8('0x16')](_0x4ba54e);}};}function respondWithFilteredResult(_0x1f18bf,_0x419343){return function(_0x4df4f2){if(_0x4df4f2){var _0x165f4e=typeof _0x419343[_0x27e8('0x17')]===_0x27e8('0x18')&&typeof _0x419343[_0x27e8('0x19')]===_0x27e8('0x18');var _0x4e6e77=_0x4df4f2['count'];var _0x50738d=_0x165f4e?0x0:_0x419343['offset'];var _0x358e05=_0x165f4e?_0x4df4f2[_0x27e8('0x1a')]:_0x419343[_0x27e8('0x17')]+_0x419343[_0x27e8('0x19')];var _0x484637;if(_0x358e05>=_0x4e6e77){_0x358e05=_0x4e6e77;_0x484637=0xc8;}else{_0x484637=0xce;}_0x1f18bf[_0x27e8('0x15')](_0x484637);return _0x1f18bf[_0x27e8('0x1b')](_0x27e8('0x1c'),_0x50738d+'-'+_0x358e05+'/'+_0x4e6e77)[_0x27e8('0x16')](_0x4df4f2);}return null;};}function patchUpdates(_0x311ce4){return function(_0x5e8fc1){try{jsonpatch[_0x27e8('0x1d')](_0x5e8fc1,_0x311ce4,!![]);}catch(_0x33f20c){return BPromise[_0x27e8('0x1e')](_0x33f20c);}return _0x5e8fc1['save']();};}function saveUpdates(_0x4542c7,_0x2c28e7){return function(_0x49a8cc){if(_0x49a8cc){return _0x49a8cc[_0x27e8('0x1f')](_0x4542c7)['then'](function(_0x2cda69){return _0x2cda69;});}return null;};}function removeEntity(_0x393d5c,_0x538552){return function(_0x189d83){if(_0x189d83){return _0x189d83['destroy']()['then'](function(){_0x393d5c[_0x27e8('0x15')](0xcc)[_0x27e8('0x20')]();});}};}function handleEntityNotFound(_0x4ee8d3,_0x7e44d7){return function(_0x25b1ff){if(!_0x25b1ff){_0x4ee8d3[_0x27e8('0x21')](0x194);}return _0x25b1ff;};}function handleError(_0x2b64d2,_0x4d9c1a){_0x4d9c1a=_0x4d9c1a||0x1f4;return function(_0x295210){logger[_0x27e8('0x22')](_0x295210['stack']);if(_0x295210[_0x27e8('0x23')]){delete _0x295210['name'];}_0x2b64d2[_0x27e8('0x15')](_0x4d9c1a)['send'](_0x295210);};}exports[_0x27e8('0x24')]=function(_0xc9593f,_0x431105){var _0x3a1327={},_0x1e7ccf={},_0x5b01d5={'count':0x0,'rows':[]};var _0x5088be=_[_0x27e8('0x25')](db[_0x27e8('0x26')][_0x27e8('0x27')],function(_0x199ce9){return{'name':_0x199ce9[_0x27e8('0x28')],'type':_0x199ce9['type']['key']};});_0x1e7ccf[_0x27e8('0x29')]=_[_0x27e8('0x25')](_0x5088be,_0x27e8('0x23'));_0x1e7ccf[_0x27e8('0x2a')]=_[_0x27e8('0x2b')](_0xc9593f[_0x27e8('0x2a')]);_0x1e7ccf[_0x27e8('0x2c')]=_[_0x27e8('0x2d')](_0x1e7ccf[_0x27e8('0x29')],_0x1e7ccf[_0x27e8('0x2a')]);_0x3a1327[_0x27e8('0x2e')]=_[_0x27e8('0x2d')](_0x1e7ccf[_0x27e8('0x29')],qs[_0x27e8('0x2f')](_0xc9593f[_0x27e8('0x2a')]['fields']));_0x3a1327[_0x27e8('0x2e')]=_0x3a1327[_0x27e8('0x2e')]['length']?_0x3a1327[_0x27e8('0x2e')]:_0x1e7ccf[_0x27e8('0x29')];if(!_0xc9593f['query']['hasOwnProperty']('nolimit')){_0x3a1327['limit']=qs[_0x27e8('0x19')](_0xc9593f[_0x27e8('0x2a')][_0x27e8('0x19')]);_0x3a1327[_0x27e8('0x17')]=qs[_0x27e8('0x17')](_0xc9593f[_0x27e8('0x2a')][_0x27e8('0x17')]);}_0x3a1327[_0x27e8('0x30')]=qs[_0x27e8('0x31')](_0xc9593f['query'][_0x27e8('0x31')]);_0x3a1327[_0x27e8('0x32')]=qs[_0x27e8('0x2c')](_[_0x27e8('0x33')](_0xc9593f[_0x27e8('0x2a')],_0x1e7ccf[_0x27e8('0x2c')]),_0x5088be);if(_0xc9593f[_0x27e8('0x2a')][_0x27e8('0x34')]){_0x3a1327[_0x27e8('0x32')]=_['merge'](_0x3a1327[_0x27e8('0x32')],{'$or':_[_0x27e8('0x25')](_0x5088be,function(_0x4003d8){if(_0x4003d8[_0x27e8('0x35')]!==_0x27e8('0x36')){var _0x410992={};_0x410992[_0x4003d8['name']]={'$like':'%'+_0xc9593f[_0x27e8('0x2a')][_0x27e8('0x34')]+'%'};return _0x410992;}})});}_0x3a1327=_['merge']({},_0x3a1327,_0xc9593f[_0x27e8('0x37')]);var _0x3868ab={'where':_0x3a1327[_0x27e8('0x32')]};return db[_0x27e8('0x26')][_0x27e8('0x1a')](_0x3868ab)[_0x27e8('0x38')](function(_0x415ae9){_0x5b01d5['count']=_0x415ae9;if(_0xc9593f['query'][_0x27e8('0x39')]){_0x3a1327[_0x27e8('0x3a')]=[{'all':!![]}];}return db[_0x27e8('0x26')][_0x27e8('0x3b')](_0x3a1327);})[_0x27e8('0x38')](function(_0x5c91cd){_0x5b01d5[_0x27e8('0x3c')]=_0x5c91cd;return _0x5b01d5;})[_0x27e8('0x38')](respondWithFilteredResult(_0x431105,_0x3a1327))[_0x27e8('0x3d')](handleError(_0x431105,null));};exports[_0x27e8('0x3e')]=function(_0x2d0efa,_0x1d2a85){var _0x2658b5={'raw':![],'where':{'id':_0x2d0efa[_0x27e8('0x3f')]['id']}},_0x5953c5={};_0x5953c5[_0x27e8('0x29')]=_['keys'](db['ZohoConfiguration'][_0x27e8('0x27')]);_0x5953c5[_0x27e8('0x2a')]=_['keys'](_0x2d0efa[_0x27e8('0x2a')]);_0x5953c5[_0x27e8('0x2c')]=_['intersection'](_0x5953c5['model'],_0x5953c5[_0x27e8('0x2a')]);_0x2658b5['attributes']=_[_0x27e8('0x2d')](_0x5953c5['model'],qs[_0x27e8('0x2f')](_0x2d0efa['query'][_0x27e8('0x2f')]));_0x2658b5[_0x27e8('0x2e')]=_0x2658b5[_0x27e8('0x2e')][_0x27e8('0x40')]?_0x2658b5[_0x27e8('0x2e')]:_0x5953c5[_0x27e8('0x29')];if(_0x2d0efa[_0x27e8('0x2a')][_0x27e8('0x39')]){_0x2658b5[_0x27e8('0x3a')]=[{'all':!![]}];}_0x2658b5=_[_0x27e8('0x41')]({},_0x2658b5,_0x2d0efa[_0x27e8('0x37')]);return db[_0x27e8('0x26')][_0x27e8('0x42')](_0x2658b5)[_0x27e8('0x38')](handleEntityNotFound(_0x1d2a85,null))[_0x27e8('0x38')](respondWithResult(_0x1d2a85,null))[_0x27e8('0x3d')](handleError(_0x1d2a85,null));};exports[_0x27e8('0x43')]=function(_0x5ec857,_0x29fc41){return db['ZohoConfiguration'][_0x27e8('0x43')](_0x5ec857[_0x27e8('0x44')],{})[_0x27e8('0x38')](respondWithResult(_0x29fc41,0xc9))[_0x27e8('0x3d')](handleError(_0x29fc41,null));};exports[_0x27e8('0x1f')]=function(_0x468c52,_0x3b75e1){if(_0x468c52['body']['id']){delete _0x468c52[_0x27e8('0x44')]['id'];}return db['ZohoConfiguration'][_0x27e8('0x42')]({'where':{'id':_0x468c52[_0x27e8('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3b75e1,null))['then'](saveUpdates(_0x468c52[_0x27e8('0x44')],null))[_0x27e8('0x38')](respondWithResult(_0x3b75e1,null))[_0x27e8('0x3d')](handleError(_0x3b75e1,null));};exports[_0x27e8('0x45')]=function(_0x15a973,_0x51cade){return db['ZohoConfiguration'][_0x27e8('0x42')]({'where':{'id':_0x15a973[_0x27e8('0x3f')]['id']}})['then'](handleEntityNotFound(_0x51cade,null))[_0x27e8('0x38')](removeEntity(_0x51cade,null))['catch'](handleError(_0x51cade,null));};exports[_0x27e8('0x46')]=function(_0x456494,_0x25f6ed,_0x5b1b25){var _0x3678ab={};var _0x2e4135={};var _0xe89622;var _0x486b87;return db['ZohoConfiguration'][_0x27e8('0x47')]({'where':{'id':_0x456494['params']['id']}})['then'](handleEntityNotFound(_0x25f6ed,null))[_0x27e8('0x38')](function(_0x3d149b){if(_0x3d149b){_0xe89622=_0x3d149b;_0x2e4135[_0x27e8('0x29')]=_[_0x27e8('0x2b')](db['ZohoField'][_0x27e8('0x27')]);_0x2e4135[_0x27e8('0x2a')]=_[_0x27e8('0x2b')](_0x456494[_0x27e8('0x2a')]);_0x2e4135[_0x27e8('0x2c')]=_[_0x27e8('0x2d')](_0x2e4135[_0x27e8('0x29')],_0x2e4135[_0x27e8('0x2a')]);_0x3678ab['attributes']=_[_0x27e8('0x2d')](_0x2e4135[_0x27e8('0x29')],qs[_0x27e8('0x2f')](_0x456494[_0x27e8('0x2a')][_0x27e8('0x2f')]));_0x3678ab['attributes']=_0x3678ab[_0x27e8('0x2e')][_0x27e8('0x40')]?_0x3678ab[_0x27e8('0x2e')]:_0x2e4135[_0x27e8('0x29')];_0x3678ab['order']=qs['sort'](_0x456494[_0x27e8('0x2a')][_0x27e8('0x31')]);_0x3678ab[_0x27e8('0x32')]=qs[_0x27e8('0x2c')](_['pick'](_0x456494[_0x27e8('0x2a')],_0x2e4135[_0x27e8('0x2c')]));if(_0x456494[_0x27e8('0x2a')][_0x27e8('0x34')]){_0x3678ab[_0x27e8('0x32')]=_[_0x27e8('0x41')](_0x3678ab[_0x27e8('0x32')],{'$or':_[_0x27e8('0x25')](_0x3678ab[_0x27e8('0x2e')],function(_0x540d61){var _0x2c2000={};_0x2c2000[_0x540d61]={'$like':'%'+_0x456494[_0x27e8('0x2a')]['filter']+'%'};return _0x2c2000;})});}_0x3678ab=_[_0x27e8('0x41')]({},_0x3678ab,_0x456494['options']);return _0xe89622[_0x27e8('0x46')](_0x3678ab);}})[_0x27e8('0x38')](function(_0x39f0db){if(_0x39f0db){_0x486b87=_0x39f0db[_0x27e8('0x40')];if(!_0x456494['query'][_0x27e8('0x48')]('nolimit')){_0x3678ab['limit']=qs[_0x27e8('0x19')](_0x456494['query'][_0x27e8('0x19')]);_0x3678ab[_0x27e8('0x17')]=qs[_0x27e8('0x17')](_0x456494[_0x27e8('0x2a')][_0x27e8('0x17')]);}return _0xe89622[_0x27e8('0x46')](_0x3678ab);}})[_0x27e8('0x38')](function(_0x187d86){if(_0x187d86){return _0x187d86?{'count':_0x486b87,'rows':_0x187d86}:null;}})[_0x27e8('0x38')](respondWithResult(_0x25f6ed,null))[_0x27e8('0x3d')](handleError(_0x25f6ed,null));};exports[_0x27e8('0x49')]=function(_0x5db548,_0x35a488,_0xb2ddb7){var _0x51c516={};var _0xbc419e={};var _0x546f6d;var _0xddc2dd;return db[_0x27e8('0x26')]['findOne']({'where':{'id':_0x5db548[_0x27e8('0x3f')]['id']}})[_0x27e8('0x38')](handleEntityNotFound(_0x35a488,null))[_0x27e8('0x38')](function(_0x308138){if(_0x308138){_0x546f6d=_0x308138;_0xbc419e[_0x27e8('0x29')]=_[_0x27e8('0x2b')](db[_0x27e8('0x4a')]['rawAttributes']);_0xbc419e['query']=_[_0x27e8('0x2b')](_0x5db548[_0x27e8('0x2a')]);_0xbc419e[_0x27e8('0x2c')]=_['intersection'](_0xbc419e[_0x27e8('0x29')],_0xbc419e[_0x27e8('0x2a')]);_0x51c516[_0x27e8('0x2e')]=_[_0x27e8('0x2d')](_0xbc419e[_0x27e8('0x29')],qs['fields'](_0x5db548[_0x27e8('0x2a')][_0x27e8('0x2f')]));_0x51c516[_0x27e8('0x2e')]=_0x51c516[_0x27e8('0x2e')]['length']?_0x51c516[_0x27e8('0x2e')]:_0xbc419e['model'];_0x51c516[_0x27e8('0x30')]=qs[_0x27e8('0x31')](_0x5db548['query'][_0x27e8('0x31')]);_0x51c516['where']=qs['filters'](_[_0x27e8('0x33')](_0x5db548['query'],_0xbc419e[_0x27e8('0x2c')]));if(_0x5db548['query'][_0x27e8('0x34')]){_0x51c516[_0x27e8('0x32')]=_[_0x27e8('0x41')](_0x51c516[_0x27e8('0x32')],{'$or':_[_0x27e8('0x25')](_0x51c516['attributes'],function(_0xa6213){var _0x3cf3cb={};_0x3cf3cb[_0xa6213]={'$like':'%'+_0x5db548[_0x27e8('0x2a')][_0x27e8('0x34')]+'%'};return _0x3cf3cb;})});}_0x51c516=_['merge']({},_0x51c516,_0x5db548[_0x27e8('0x37')]);return _0x546f6d[_0x27e8('0x49')](_0x51c516);}})[_0x27e8('0x38')](function(_0x2cfc76){if(_0x2cfc76){_0xddc2dd=_0x2cfc76[_0x27e8('0x40')];if(!_0x5db548['query'][_0x27e8('0x48')](_0x27e8('0x4b'))){_0x51c516[_0x27e8('0x19')]=qs[_0x27e8('0x19')](_0x5db548[_0x27e8('0x2a')][_0x27e8('0x19')]);_0x51c516[_0x27e8('0x17')]=qs['offset'](_0x5db548[_0x27e8('0x2a')][_0x27e8('0x17')]);}return _0x546f6d[_0x27e8('0x49')](_0x51c516);}})[_0x27e8('0x38')](function(_0x113320){if(_0x113320){return _0x113320?{'count':_0xddc2dd,'rows':_0x113320}:null;}})[_0x27e8('0x38')](respondWithResult(_0x35a488,null))[_0x27e8('0x3d')](handleError(_0x35a488,null));};exports[_0x27e8('0x4c')]=function(_0x2effe4,_0x1cfd47,_0x9a552){var _0x22da8a={};var _0x52385f={};var _0x3e6a9e;var _0x49d2e6;return db[_0x27e8('0x26')][_0x27e8('0x47')]({'where':{'id':_0x2effe4[_0x27e8('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1cfd47,null))['then'](function(_0x14125e){if(_0x14125e){_0x3e6a9e=_0x14125e;_0x52385f[_0x27e8('0x29')]=_[_0x27e8('0x2b')](db['ZohoField'][_0x27e8('0x27')]);_0x52385f['query']=_[_0x27e8('0x2b')](_0x2effe4[_0x27e8('0x2a')]);_0x52385f[_0x27e8('0x2c')]=_[_0x27e8('0x2d')](_0x52385f['model'],_0x52385f[_0x27e8('0x2a')]);_0x22da8a[_0x27e8('0x2e')]=_['intersection'](_0x52385f['model'],qs[_0x27e8('0x2f')](_0x2effe4['query'][_0x27e8('0x2f')]));_0x22da8a[_0x27e8('0x2e')]=_0x22da8a[_0x27e8('0x2e')][_0x27e8('0x40')]?_0x22da8a[_0x27e8('0x2e')]:_0x52385f[_0x27e8('0x29')];_0x22da8a[_0x27e8('0x30')]=qs[_0x27e8('0x31')](_0x2effe4[_0x27e8('0x2a')][_0x27e8('0x31')]);_0x22da8a[_0x27e8('0x32')]=qs[_0x27e8('0x2c')](_[_0x27e8('0x33')](_0x2effe4[_0x27e8('0x2a')],_0x52385f[_0x27e8('0x2c')]));if(_0x2effe4[_0x27e8('0x2a')]['filter']){_0x22da8a[_0x27e8('0x32')]=_[_0x27e8('0x41')](_0x22da8a[_0x27e8('0x32')],{'$or':_['map'](_0x22da8a['attributes'],function(_0x256674){var _0x1ef232={};_0x1ef232[_0x256674]={'$like':'%'+_0x2effe4[_0x27e8('0x2a')][_0x27e8('0x34')]+'%'};return _0x1ef232;})});}_0x22da8a=_[_0x27e8('0x41')]({},_0x22da8a,_0x2effe4[_0x27e8('0x37')]);return _0x3e6a9e[_0x27e8('0x4c')](_0x22da8a);}})['then'](function(_0x33ec64){if(_0x33ec64){_0x49d2e6=_0x33ec64[_0x27e8('0x40')];if(!_0x2effe4[_0x27e8('0x2a')][_0x27e8('0x48')](_0x27e8('0x4b'))){_0x22da8a[_0x27e8('0x19')]=qs[_0x27e8('0x19')](_0x2effe4[_0x27e8('0x2a')][_0x27e8('0x19')]);_0x22da8a[_0x27e8('0x17')]=qs[_0x27e8('0x17')](_0x2effe4[_0x27e8('0x2a')][_0x27e8('0x17')]);}return _0x3e6a9e['getDescriptions'](_0x22da8a);}})[_0x27e8('0x38')](function(_0x4133a0){if(_0x4133a0){return _0x4133a0?{'count':_0x49d2e6,'rows':_0x4133a0}:null;}})[_0x27e8('0x38')](respondWithResult(_0x1cfd47,null))[_0x27e8('0x3d')](handleError(_0x1cfd47,null));};
\ No newline at end of file
index fceca59..3b61710 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7983=['./intZohoConfiguration.attributes','exports','define','int_zoho_configurations','lodash','util','../../config/logger','api','moment','rimraf'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x7983,0x86));var _0x3798=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x7983[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x3798('0x0'));var util=require(_0x3798('0x1'));var logger=require(_0x3798('0x2'))(_0x3798('0x3'));var moment=require(_0x3798('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3798('0x5'));var config=require('../../config/environment');var attributes=require(_0x3798('0x6'));module[_0x3798('0x7')]=function(_0x2ad633,_0x34e808){return _0x2ad633[_0x3798('0x8')]('ZohoConfiguration',attributes,{'tableName':_0x3798('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34f9=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','lodash'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x34f9,0x113));var _0x934f=function(_0x4998e9,_0xf83748){_0x4998e9=_0x4998e9-0x0;var _0x436a60=_0x34f9[_0x4998e9];return _0x436a60;};'use strict';var _=require(_0x934f('0x0'));var util=require(_0x934f('0x1'));var logger=require(_0x934f('0x2'))(_0x934f('0x3'));var moment=require(_0x934f('0x4'));var BPromise=require(_0x934f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x934f('0x6'));var rimraf=require(_0x934f('0x7'));var config=require(_0x934f('0x8'));var attributes=require(_0x934f('0x9'));module[_0x934f('0xa')]=function(_0x45e355,_0x3d6050){return _0x45e355[_0x934f('0xb')]('ZohoConfiguration',attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3dc999c..dbdfcb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c04=['ZohoConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5c04,0x13e));var _0x45c0=function(_0x1cbbba,_0x52ecd4){_0x1cbbba=_0x1cbbba-0x0;var _0x18e20f=_0x5c04[_0x1cbbba];return _0x18e20f;};'use strict';var _=require(_0x45c0('0x0'));var util=require(_0x45c0('0x1'));var moment=require(_0x45c0('0x2'));var BPromise=require(_0x45c0('0x3'));var rs=require(_0x45c0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45c0('0x5'))['db'];var utils=require(_0x45c0('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x45c0('0x7'));var jayson=require(_0x45c0('0x8'));var client=jayson['client'][_0x45c0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3d20a8,_0x36f1eb,_0xd32a70){return new BPromise(function(_0x3728e4,_0x1c8df3){return client[_0x45c0('0xa')](_0x3d20a8,_0xd32a70)[_0x45c0('0xb')](function(_0x132a57){logger[_0x45c0('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x36f1eb,_0x45c0('0xd'));logger[_0x45c0('0xe')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x36f1eb,'request\x20sent',JSON['stringify'](_0x132a57));if(_0x132a57[_0x45c0('0xf')]){if(_0x132a57['error'][_0x45c0('0x10')]===0x1f4){logger[_0x45c0('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x36f1eb,_0x132a57['error'][_0x45c0('0x11')]);return _0x1c8df3(_0x132a57['error'][_0x45c0('0x11')]);}logger[_0x45c0('0xf')]('ZohoConfiguration,\x20%s,\x20%s',_0x36f1eb,_0x132a57[_0x45c0('0xf')][_0x45c0('0x11')]);return _0x3728e4(_0x132a57[_0x45c0('0xf')][_0x45c0('0x11')]);}else{logger['info'](_0x45c0('0x12'),_0x36f1eb,'request\x20sent');_0x3728e4(_0x132a57[_0x45c0('0x13')][_0x45c0('0x11')]);}})[_0x45c0('0x14')](function(_0x111269){logger[_0x45c0('0xf')](_0x45c0('0x12'),_0x36f1eb,_0x111269);_0x1c8df3(_0x111269);});});}
\ No newline at end of file
+var _0xc2b9=['then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request'];(function(_0x136a6b,_0x5f267a){var _0xeff99d=function(_0x5d48af){while(--_0x5d48af){_0x136a6b['push'](_0x136a6b['shift']());}};_0xeff99d(++_0x5f267a);}(_0xc2b9,0x184));var _0x9c2b=function(_0x3ff8e3,_0x263fb0){_0x3ff8e3=_0x3ff8e3-0x0;var _0x1940a5=_0xc2b9[_0x3ff8e3];return _0x1940a5;};'use strict';var _=require(_0x9c2b('0x0'));var util=require(_0x9c2b('0x1'));var moment=require(_0x9c2b('0x2'));var BPromise=require(_0x9c2b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9c2b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9c2b('0x5'));var logger=require(_0x9c2b('0x6'))('rpc');var config=require(_0x9c2b('0x7'));var jayson=require(_0x9c2b('0x8'));var client=jayson[_0x9c2b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x83f5ce,_0x269fd6,_0x116e1a){return new BPromise(function(_0x16a0c9,_0x5ee7c3){return client[_0x9c2b('0xa')](_0x83f5ce,_0x116e1a)[_0x9c2b('0xb')](function(_0x2cc9a3){logger[_0x9c2b('0xc')](_0x9c2b('0xd'),_0x269fd6,_0x9c2b('0xe'));logger['debug']('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x269fd6,_0x9c2b('0xe'),JSON[_0x9c2b('0xf')](_0x2cc9a3));if(_0x2cc9a3[_0x9c2b('0x10')]){if(_0x2cc9a3[_0x9c2b('0x10')][_0x9c2b('0x11')]===0x1f4){logger[_0x9c2b('0x10')](_0x9c2b('0xd'),_0x269fd6,_0x2cc9a3[_0x9c2b('0x10')][_0x9c2b('0x12')]);return _0x5ee7c3(_0x2cc9a3['error']['message']);}logger[_0x9c2b('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x269fd6,_0x2cc9a3[_0x9c2b('0x10')][_0x9c2b('0x12')]);return _0x16a0c9(_0x2cc9a3['error']['message']);}else{logger['info'](_0x9c2b('0xd'),_0x269fd6,_0x9c2b('0xe'));_0x16a0c9(_0x2cc9a3[_0x9c2b('0x13')][_0x9c2b('0x12')]);}})[_0x9c2b('0x14')](function(_0x41a747){logger[_0x9c2b('0x10')](_0x9c2b('0xd'),_0x269fd6,_0x41a747);_0x5ee7c3(_0x41a747);});});}
\ No newline at end of file
index ab23ba9..61c6f7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd091=['../../config/environment','./intZohoField.controller','index','get','/:id','isAuthenticated','post','put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xd091,0xee));var _0x1d09=function(_0x2c5ff3,_0xf7e6b2){_0x2c5ff3=_0x2c5ff3-0x0;var _0x131838=_0xd091[_0x2c5ff3];return _0x131838;};'use strict';var multer=require(_0x1d09('0x0'));var util=require(_0x1d09('0x1'));var path=require(_0x1d09('0x2'));var timeout=require(_0x1d09('0x3'));var express=require(_0x1d09('0x4'));var router=express[_0x1d09('0x5')]();var fs_extra=require(_0x1d09('0x6'));var auth=require(_0x1d09('0x7'));var interaction=require(_0x1d09('0x8'));var config=require(_0x1d09('0x9'));var controller=require(_0x1d09('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x1d09('0xb')]);router[_0x1d09('0xc')](_0x1d09('0xd'),auth[_0x1d09('0xe')](),controller['show']);router[_0x1d09('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1d09('0x10')](_0x1d09('0xd'),auth[_0x1d09('0xe')](),controller[_0x1d09('0x11')]);router['delete'](_0x1d09('0xd'),auth[_0x1d09('0xe')](),controller[_0x1d09('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x96ef=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','destroy','exports','path','connect-timeout','express','Router','fs-extra'];(function(_0xcf5436,_0x4632c3){var _0xc4f5c8=function(_0x567528){while(--_0x567528){_0xcf5436['push'](_0xcf5436['shift']());}};_0xc4f5c8(++_0x4632c3);}(_0x96ef,0x109));var _0xf96e=function(_0x2bb1d8,_0x3e6566){_0x2bb1d8=_0x2bb1d8-0x0;var _0x3b6df4=_0x96ef[_0x2bb1d8];return _0x3b6df4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf96e('0x0'));var timeout=require(_0xf96e('0x1'));var express=require(_0xf96e('0x2'));var router=express[_0xf96e('0x3')]();var fs_extra=require(_0xf96e('0x4'));var auth=require(_0xf96e('0x5'));var interaction=require(_0xf96e('0x6'));var config=require(_0xf96e('0x7'));var controller=require('./intZohoField.controller');router[_0xf96e('0x8')]('/',auth[_0xf96e('0x9')](),controller[_0xf96e('0xa')]);router[_0xf96e('0x8')](_0xf96e('0xb'),auth[_0xf96e('0x9')](),controller[_0xf96e('0xc')]);router[_0xf96e('0xd')]('/',auth[_0xf96e('0x9')](),controller[_0xf96e('0xe')]);router[_0xf96e('0xf')](_0xf96e('0xb'),auth[_0xf96e('0x9')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xf96e('0x10')]);module[_0xf96e('0x11')]=router;
\ No newline at end of file
index ca03de7..da5a610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb0b=['ENUM','string','variable','keyValue','picklist','STRING','customVariable','sequelize','exports'];(function(_0x2af110,_0x2dc6ee){var _0x3ac41f=function(_0xee19ef){while(--_0xee19ef){_0x2af110['push'](_0x2af110['shift']());}};_0x3ac41f(++_0x2dc6ee);}(_0xdb0b,0x115));var _0xbdb0=function(_0x5a1578,_0x30b5bc){_0x5a1578=_0x5a1578-0x0;var _0xca4839=_0xdb0b[_0x5a1578];return _0xca4839;};'use strict';var Sequelize=require(_0xbdb0('0x0'));module[_0xbdb0('0x1')]={'type':{'type':Sequelize[_0xbdb0('0x2')](_0xbdb0('0x3'),_0xbdb0('0x4'),'customVariable',_0xbdb0('0x5'),_0xbdb0('0x6')),'defaultValue':_0xbdb0('0x3')},'content':{'type':Sequelize[_0xbdb0('0x7')]},'key':{'type':Sequelize[_0xbdb0('0x7')]},'keyType':{'type':Sequelize[_0xbdb0('0x2')](_0xbdb0('0x3'),_0xbdb0('0x4'),_0xbdb0('0x8'))},'keyContent':{'type':Sequelize[_0xbdb0('0x7')]},'idField':{'type':Sequelize[_0xbdb0('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbdb0('0x7')]}};
\ No newline at end of file
+var _0xd1a7=['keyValue','picklist','STRING','ENUM','string','BOOLEAN','sequelize','variable','customVariable'];(function(_0x435592,_0x363aed){var _0x2d544d=function(_0x57dc9f){while(--_0x57dc9f){_0x435592['push'](_0x435592['shift']());}};_0x2d544d(++_0x363aed);}(_0xd1a7,0x165));var _0x7d1a=function(_0x1dde5c,_0x41f5ad){_0x1dde5c=_0x1dde5c-0x0;var _0x1b9252=_0xd1a7[_0x1dde5c];return _0x1b9252;};'use strict';var Sequelize=require(_0x7d1a('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string',_0x7d1a('0x1'),_0x7d1a('0x2'),_0x7d1a('0x3'),_0x7d1a('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x7d1a('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7d1a('0x6')](_0x7d1a('0x7'),_0x7d1a('0x1'),_0x7d1a('0x2'))},'keyContent':{'type':Sequelize[_0x7d1a('0x5')]},'idField':{'type':Sequelize[_0x7d1a('0x5')]},'nameField':{'type':Sequelize[_0x7d1a('0x5')]},'customField':{'type':Sequelize[_0x7d1a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7d1a('0x5')]}};
\ No newline at end of file
index 5407d57..99d9584 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7574=['destroy','then','error','name','send','index','ZohoField','fieldName','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','map','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update'];(function(_0x4ef372,_0xcd724a){var _0x58a84a=function(_0x36f1bb){while(--_0x36f1bb){_0x4ef372['push'](_0x4ef372['shift']());}};_0x58a84a(++_0xcd724a);}(_0x7574,0x1ec));var _0x4757=function(_0x184aea,_0x116e97){_0x184aea=_0x184aea-0x0;var _0x4b261d=_0x7574[_0x184aea];return _0x4b261d;};'use strict';var emlformat=require(_0x4757('0x0'));var rimraf=require(_0x4757('0x1'));var zipdir=require(_0x4757('0x2'));var jsonpatch=require(_0x4757('0x3'));var rp=require(_0x4757('0x4'));var moment=require(_0x4757('0x5'));var BPromise=require(_0x4757('0x6'));var Mustache=require(_0x4757('0x7'));var util=require(_0x4757('0x8'));var path=require('path');var sox=require(_0x4757('0x9'));var csv=require('to-csv');var ejs=require(_0x4757('0xa'));var fs=require('fs');var fs_extra=require(_0x4757('0xb'));var _=require(_0x4757('0xc'));var squel=require(_0x4757('0xd'));var crypto=require('crypto');var jsforce=require(_0x4757('0xe'));var deskjs=require(_0x4757('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4757('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4757('0x11'));var qs=require(_0x4757('0x12'));var as=require(_0x4757('0x13'));var hardwareService=require(_0x4757('0x14'));var logger=require(_0x4757('0x15'))(_0x4757('0x16'));var utils=require(_0x4757('0x17'));var config=require(_0x4757('0x18'));var licenseUtil=require(_0x4757('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1419ab,_0x59e608){_0x59e608=_0x59e608||0xcc;return function(_0x224b7b){if(_0x224b7b){return _0x1419ab[_0x4757('0x1a')](_0x59e608);}return _0x1419ab['status'](_0x59e608)[_0x4757('0x1b')]();};}function respondWithResult(_0x301ff9,_0x54ec12){_0x54ec12=_0x54ec12||0xc8;return function(_0x36bf83){if(_0x36bf83){return _0x301ff9[_0x4757('0x1c')](_0x54ec12)[_0x4757('0x1d')](_0x36bf83);}};}function respondWithFilteredResult(_0x187090,_0xfa3306){return function(_0x5993fe){if(_0x5993fe){var _0x3fe6f2=typeof _0xfa3306[_0x4757('0x1e')]===_0x4757('0x1f')&&typeof _0xfa3306['limit']===_0x4757('0x1f');var _0x16b097=_0x5993fe[_0x4757('0x20')];var _0x2641f7=_0x3fe6f2?0x0:_0xfa3306[_0x4757('0x1e')];var _0x206b81=_0x3fe6f2?_0x5993fe[_0x4757('0x20')]:_0xfa3306[_0x4757('0x1e')]+_0xfa3306[_0x4757('0x21')];var _0xc817fc;if(_0x206b81>=_0x16b097){_0x206b81=_0x16b097;_0xc817fc=0xc8;}else{_0xc817fc=0xce;}_0x187090[_0x4757('0x1c')](_0xc817fc);return _0x187090[_0x4757('0x22')](_0x4757('0x23'),_0x2641f7+'-'+_0x206b81+'/'+_0x16b097)['json'](_0x5993fe);}return null;};}function patchUpdates(_0x49a7b1){return function(_0x2e44d6){try{jsonpatch[_0x4757('0x24')](_0x2e44d6,_0x49a7b1,!![]);}catch(_0x38e777){return BPromise[_0x4757('0x25')](_0x38e777);}return _0x2e44d6[_0x4757('0x26')]();};}function saveUpdates(_0x376ad4,_0xb0a7e2){return function(_0x587de2){if(_0x587de2){return _0x587de2[_0x4757('0x27')](_0x376ad4)['then'](function(_0xcb96fc){return _0xcb96fc;});}return null;};}function removeEntity(_0x37f168,_0x2ef147){return function(_0x59698c){if(_0x59698c){return _0x59698c[_0x4757('0x28')]()[_0x4757('0x29')](function(){_0x37f168[_0x4757('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49f6ae,_0x488151){return function(_0x442a82){if(!_0x442a82){_0x49f6ae['sendStatus'](0x194);}return _0x442a82;};}function handleError(_0xcf4f17,_0x13e716){_0x13e716=_0x13e716||0x1f4;return function(_0x355f58){logger[_0x4757('0x2a')](_0x355f58['stack']);if(_0x355f58[_0x4757('0x2b')]){delete _0x355f58[_0x4757('0x2b')];}_0xcf4f17[_0x4757('0x1c')](_0x13e716)[_0x4757('0x2c')](_0x355f58);};}exports[_0x4757('0x2d')]=function(_0x3574c0,_0x39d8fc){var _0x2ab770={},_0x448dd5={},_0x2842ec={'count':0x0,'rows':[]};var _0x7d0bf5=_['map'](db[_0x4757('0x2e')]['rawAttributes'],function(_0x487491){return{'name':_0x487491[_0x4757('0x2f')],'type':_0x487491['type']['key']};});_0x448dd5['model']=_['map'](_0x7d0bf5,'name');_0x448dd5['query']=_['keys'](_0x3574c0[_0x4757('0x30')]);_0x448dd5[_0x4757('0x31')]=_['intersection'](_0x448dd5[_0x4757('0x32')],_0x448dd5['query']);_0x2ab770[_0x4757('0x33')]=_[_0x4757('0x34')](_0x448dd5['model'],qs['fields'](_0x3574c0[_0x4757('0x30')][_0x4757('0x35')]));_0x2ab770[_0x4757('0x33')]=_0x2ab770[_0x4757('0x33')][_0x4757('0x36')]?_0x2ab770[_0x4757('0x33')]:_0x448dd5['model'];if(!_0x3574c0[_0x4757('0x30')][_0x4757('0x37')]('nolimit')){_0x2ab770['limit']=qs[_0x4757('0x21')](_0x3574c0['query'][_0x4757('0x21')]);_0x2ab770['offset']=qs[_0x4757('0x1e')](_0x3574c0[_0x4757('0x30')][_0x4757('0x1e')]);}_0x2ab770[_0x4757('0x38')]=qs[_0x4757('0x39')](_0x3574c0[_0x4757('0x30')][_0x4757('0x39')]);_0x2ab770[_0x4757('0x3a')]=qs[_0x4757('0x31')](_[_0x4757('0x3b')](_0x3574c0[_0x4757('0x30')],_0x448dd5[_0x4757('0x31')]),_0x7d0bf5);if(_0x3574c0[_0x4757('0x30')]['filter']){_0x2ab770[_0x4757('0x3a')]=_[_0x4757('0x3c')](_0x2ab770[_0x4757('0x3a')],{'$or':_[_0x4757('0x3d')](_0x7d0bf5,function(_0x422e23){if(_0x422e23['type']!=='VIRTUAL'){var _0x1bc497={};_0x1bc497[_0x422e23[_0x4757('0x2b')]]={'$like':'%'+_0x3574c0[_0x4757('0x30')][_0x4757('0x3e')]+'%'};return _0x1bc497;}})});}_0x2ab770=_['merge']({},_0x2ab770,_0x3574c0[_0x4757('0x3f')]);var _0x31d562={'where':_0x2ab770[_0x4757('0x3a')]};return db[_0x4757('0x2e')]['count'](_0x31d562)[_0x4757('0x29')](function(_0x15ded1){_0x2842ec[_0x4757('0x20')]=_0x15ded1;if(_0x3574c0['query'][_0x4757('0x40')]){_0x2ab770[_0x4757('0x41')]=[{'all':!![]}];}return db[_0x4757('0x2e')][_0x4757('0x42')](_0x2ab770);})[_0x4757('0x29')](function(_0x1b6378){_0x2842ec[_0x4757('0x43')]=_0x1b6378;return _0x2842ec;})[_0x4757('0x29')](respondWithFilteredResult(_0x39d8fc,_0x2ab770))[_0x4757('0x44')](handleError(_0x39d8fc,null));};exports[_0x4757('0x45')]=function(_0x55572b,_0x3a8306){var _0x18de05={'raw':!![],'where':{'id':_0x55572b[_0x4757('0x46')]['id']}},_0x5696e8={};_0x5696e8[_0x4757('0x32')]=_[_0x4757('0x47')](db[_0x4757('0x2e')][_0x4757('0x48')]);_0x5696e8['query']=_[_0x4757('0x47')](_0x55572b[_0x4757('0x30')]);_0x5696e8[_0x4757('0x31')]=_[_0x4757('0x34')](_0x5696e8[_0x4757('0x32')],_0x5696e8[_0x4757('0x30')]);_0x18de05[_0x4757('0x33')]=_['intersection'](_0x5696e8['model'],qs[_0x4757('0x35')](_0x55572b['query'][_0x4757('0x35')]));_0x18de05[_0x4757('0x33')]=_0x18de05[_0x4757('0x33')]['length']?_0x18de05[_0x4757('0x33')]:_0x5696e8[_0x4757('0x32')];if(_0x55572b[_0x4757('0x30')][_0x4757('0x40')]){_0x18de05[_0x4757('0x41')]=[{'all':!![]}];}_0x18de05=_[_0x4757('0x3c')]({},_0x18de05,_0x55572b[_0x4757('0x3f')]);return db[_0x4757('0x2e')]['find'](_0x18de05)['then'](handleEntityNotFound(_0x3a8306,null))[_0x4757('0x29')](respondWithResult(_0x3a8306,null))[_0x4757('0x44')](handleError(_0x3a8306,null));};exports[_0x4757('0x49')]=function(_0x30e606,_0x2684f0){return db['ZohoField'][_0x4757('0x49')](_0x30e606['body'],{})['then'](respondWithResult(_0x2684f0,0xc9))['catch'](handleError(_0x2684f0,null));};exports[_0x4757('0x27')]=function(_0x43b8f0,_0x3fbedf){if(_0x43b8f0[_0x4757('0x4a')]['id']){delete _0x43b8f0[_0x4757('0x4a')]['id'];}return db[_0x4757('0x2e')][_0x4757('0x4b')]({'where':{'id':_0x43b8f0[_0x4757('0x46')]['id']}})[_0x4757('0x29')](handleEntityNotFound(_0x3fbedf,null))[_0x4757('0x29')](saveUpdates(_0x43b8f0[_0x4757('0x4a')],null))[_0x4757('0x29')](respondWithResult(_0x3fbedf,null))[_0x4757('0x44')](handleError(_0x3fbedf,null));};exports[_0x4757('0x28')]=function(_0x2c3bf0,_0x2c41f3){return db['ZohoField'][_0x4757('0x4b')]({'where':{'id':_0x2c3bf0['params']['id']}})[_0x4757('0x29')](handleEntityNotFound(_0x2c41f3,null))[_0x4757('0x29')](removeEntity(_0x2c41f3,null))['catch'](handleError(_0x2c41f3,null));};
\ No newline at end of file
+var _0xf5a1=['options','includeAll','include','findAll','rows','catch','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','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','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','map','ZohoField','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge'];(function(_0x5cd989,_0x59c67e){var _0x18787f=function(_0x570316){while(--_0x570316){_0x5cd989['push'](_0x5cd989['shift']());}};_0x18787f(++_0x59c67e);}(_0xf5a1,0x1bf));var _0x1f5a=function(_0x2a3e90,_0x281229){_0x2a3e90=_0x2a3e90-0x0;var _0x122b4c=_0xf5a1[_0x2a3e90];return _0x122b4c;};'use strict';var emlformat=require(_0x1f5a('0x0'));var rimraf=require(_0x1f5a('0x1'));var zipdir=require(_0x1f5a('0x2'));var jsonpatch=require(_0x1f5a('0x3'));var rp=require('request-promise');var moment=require(_0x1f5a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1f5a('0x5'));var util=require('util');var path=require(_0x1f5a('0x6'));var sox=require(_0x1f5a('0x7'));var csv=require('to-csv');var ejs=require(_0x1f5a('0x8'));var fs=require('fs');var fs_extra=require(_0x1f5a('0x9'));var _=require(_0x1f5a('0xa'));var squel=require('squel');var crypto=require(_0x1f5a('0xb'));var jsforce=require(_0x1f5a('0xc'));var deskjs=require(_0x1f5a('0xd'));var toCsv=require(_0x1f5a('0xe'));var querystring=require(_0x1f5a('0xf'));var Papa=require(_0x1f5a('0x10'));var Redis=require('ioredis');var authService=require(_0x1f5a('0x11'));var qs=require(_0x1f5a('0x12'));var as=require(_0x1f5a('0x13'));var hardwareService=require(_0x1f5a('0x14'));var logger=require(_0x1f5a('0x15'))(_0x1f5a('0x16'));var utils=require(_0x1f5a('0x17'));var config=require(_0x1f5a('0x18'));var licenseUtil=require(_0x1f5a('0x19'));var db=require(_0x1f5a('0x1a'))['db'];function respondWithStatusCode(_0x337555,_0x182a17){_0x182a17=_0x182a17||0xcc;return function(_0x58bc32){if(_0x58bc32){return _0x337555[_0x1f5a('0x1b')](_0x182a17);}return _0x337555[_0x1f5a('0x1c')](_0x182a17)[_0x1f5a('0x1d')]();};}function respondWithResult(_0x5c8139,_0x334cba){_0x334cba=_0x334cba||0xc8;return function(_0x43cd3b){if(_0x43cd3b){return _0x5c8139[_0x1f5a('0x1c')](_0x334cba)[_0x1f5a('0x1e')](_0x43cd3b);}};}function respondWithFilteredResult(_0x2a1eac,_0x49f3aa){return function(_0x3539ba){if(_0x3539ba){var _0x53896f=typeof _0x49f3aa[_0x1f5a('0x1f')]===_0x1f5a('0x20')&&typeof _0x49f3aa[_0x1f5a('0x21')]==='undefined';var _0x4e7b1a=_0x3539ba['count'];var _0x2b50e8=_0x53896f?0x0:_0x49f3aa[_0x1f5a('0x1f')];var _0x5143c9=_0x53896f?_0x3539ba[_0x1f5a('0x22')]:_0x49f3aa['offset']+_0x49f3aa[_0x1f5a('0x21')];var _0x33b9e9;if(_0x5143c9>=_0x4e7b1a){_0x5143c9=_0x4e7b1a;_0x33b9e9=0xc8;}else{_0x33b9e9=0xce;}_0x2a1eac['status'](_0x33b9e9);return _0x2a1eac[_0x1f5a('0x23')](_0x1f5a('0x24'),_0x2b50e8+'-'+_0x5143c9+'/'+_0x4e7b1a)[_0x1f5a('0x1e')](_0x3539ba);}return null;};}function patchUpdates(_0x28c4e0){return function(_0x5985b9){try{jsonpatch['apply'](_0x5985b9,_0x28c4e0,!![]);}catch(_0x5609c9){return BPromise[_0x1f5a('0x25')](_0x5609c9);}return _0x5985b9[_0x1f5a('0x26')]();};}function saveUpdates(_0x8e39d,_0x5d7a42){return function(_0xd6a75e){if(_0xd6a75e){return _0xd6a75e[_0x1f5a('0x27')](_0x8e39d)['then'](function(_0x240d7d){return _0x240d7d;});}return null;};}function removeEntity(_0x815d30,_0x4a2c4a){return function(_0x2347fc){if(_0x2347fc){return _0x2347fc[_0x1f5a('0x28')]()[_0x1f5a('0x29')](function(){_0x815d30[_0x1f5a('0x1c')](0xcc)[_0x1f5a('0x1d')]();});}};}function handleEntityNotFound(_0x509e08,_0x173acb){return function(_0x5a2235){if(!_0x5a2235){_0x509e08[_0x1f5a('0x1b')](0x194);}return _0x5a2235;};}function handleError(_0x10b617,_0x1caa78){_0x1caa78=_0x1caa78||0x1f4;return function(_0x246d12){logger[_0x1f5a('0x2a')](_0x246d12[_0x1f5a('0x2b')]);if(_0x246d12[_0x1f5a('0x2c')]){delete _0x246d12['name'];}_0x10b617[_0x1f5a('0x1c')](_0x1caa78)[_0x1f5a('0x2d')](_0x246d12);};}exports['index']=function(_0x4a6e68,_0x11259c){var _0x411e8e={},_0x24d445={},_0x3b315d={'count':0x0,'rows':[]};var _0x12bc99=_[_0x1f5a('0x2e')](db[_0x1f5a('0x2f')][_0x1f5a('0x30')],function(_0x33868e){return{'name':_0x33868e[_0x1f5a('0x31')],'type':_0x33868e[_0x1f5a('0x32')]['key']};});_0x24d445[_0x1f5a('0x33')]=_[_0x1f5a('0x2e')](_0x12bc99,_0x1f5a('0x2c'));_0x24d445[_0x1f5a('0x34')]=_['keys'](_0x4a6e68[_0x1f5a('0x34')]);_0x24d445[_0x1f5a('0x35')]=_[_0x1f5a('0x36')](_0x24d445[_0x1f5a('0x33')],_0x24d445[_0x1f5a('0x34')]);_0x411e8e['attributes']=_[_0x1f5a('0x36')](_0x24d445[_0x1f5a('0x33')],qs['fields'](_0x4a6e68['query']['fields']));_0x411e8e[_0x1f5a('0x37')]=_0x411e8e[_0x1f5a('0x37')][_0x1f5a('0x38')]?_0x411e8e[_0x1f5a('0x37')]:_0x24d445['model'];if(!_0x4a6e68['query'][_0x1f5a('0x39')](_0x1f5a('0x3a'))){_0x411e8e[_0x1f5a('0x21')]=qs[_0x1f5a('0x21')](_0x4a6e68[_0x1f5a('0x34')]['limit']);_0x411e8e[_0x1f5a('0x1f')]=qs['offset'](_0x4a6e68[_0x1f5a('0x34')][_0x1f5a('0x1f')]);}_0x411e8e[_0x1f5a('0x3b')]=qs[_0x1f5a('0x3c')](_0x4a6e68[_0x1f5a('0x34')][_0x1f5a('0x3c')]);_0x411e8e[_0x1f5a('0x3d')]=qs[_0x1f5a('0x35')](_['pick'](_0x4a6e68[_0x1f5a('0x34')],_0x24d445[_0x1f5a('0x35')]),_0x12bc99);if(_0x4a6e68[_0x1f5a('0x34')][_0x1f5a('0x3e')]){_0x411e8e['where']=_['merge'](_0x411e8e[_0x1f5a('0x3d')],{'$or':_[_0x1f5a('0x2e')](_0x12bc99,function(_0x25c376){if(_0x25c376[_0x1f5a('0x32')]!=='VIRTUAL'){var _0x30dc9c={};_0x30dc9c[_0x25c376[_0x1f5a('0x2c')]]={'$like':'%'+_0x4a6e68[_0x1f5a('0x34')]['filter']+'%'};return _0x30dc9c;}})});}_0x411e8e=_[_0x1f5a('0x3f')]({},_0x411e8e,_0x4a6e68[_0x1f5a('0x40')]);var _0x4e3007={'where':_0x411e8e['where']};return db[_0x1f5a('0x2f')]['count'](_0x4e3007)[_0x1f5a('0x29')](function(_0x39e32e){_0x3b315d[_0x1f5a('0x22')]=_0x39e32e;if(_0x4a6e68[_0x1f5a('0x34')][_0x1f5a('0x41')]){_0x411e8e[_0x1f5a('0x42')]=[{'all':!![]}];}return db[_0x1f5a('0x2f')][_0x1f5a('0x43')](_0x411e8e);})['then'](function(_0xcacb80){_0x3b315d[_0x1f5a('0x44')]=_0xcacb80;return _0x3b315d;})[_0x1f5a('0x29')](respondWithFilteredResult(_0x11259c,_0x411e8e))[_0x1f5a('0x45')](handleError(_0x11259c,null));};exports['show']=function(_0x3655a1,_0xf30114){var _0x421e62={'raw':!![],'where':{'id':_0x3655a1['params']['id']}},_0x78462b={};_0x78462b[_0x1f5a('0x33')]=_['keys'](db[_0x1f5a('0x2f')][_0x1f5a('0x30')]);_0x78462b[_0x1f5a('0x34')]=_['keys'](_0x3655a1[_0x1f5a('0x34')]);_0x78462b[_0x1f5a('0x35')]=_['intersection'](_0x78462b[_0x1f5a('0x33')],_0x78462b[_0x1f5a('0x34')]);_0x421e62['attributes']=_[_0x1f5a('0x36')](_0x78462b[_0x1f5a('0x33')],qs['fields'](_0x3655a1[_0x1f5a('0x34')]['fields']));_0x421e62[_0x1f5a('0x37')]=_0x421e62[_0x1f5a('0x37')]['length']?_0x421e62[_0x1f5a('0x37')]:_0x78462b['model'];if(_0x3655a1[_0x1f5a('0x34')][_0x1f5a('0x41')]){_0x421e62[_0x1f5a('0x42')]=[{'all':!![]}];}_0x421e62=_[_0x1f5a('0x3f')]({},_0x421e62,_0x3655a1[_0x1f5a('0x40')]);return db[_0x1f5a('0x2f')][_0x1f5a('0x46')](_0x421e62)[_0x1f5a('0x29')](handleEntityNotFound(_0xf30114,null))['then'](respondWithResult(_0xf30114,null))[_0x1f5a('0x45')](handleError(_0xf30114,null));};exports[_0x1f5a('0x47')]=function(_0x230819,_0x845cd6){return db[_0x1f5a('0x2f')][_0x1f5a('0x47')](_0x230819[_0x1f5a('0x48')],{})['then'](respondWithResult(_0x845cd6,0xc9))[_0x1f5a('0x45')](handleError(_0x845cd6,null));};exports[_0x1f5a('0x27')]=function(_0x43fc7a,_0x4e0383){if(_0x43fc7a[_0x1f5a('0x48')]['id']){delete _0x43fc7a['body']['id'];}return db['ZohoField'][_0x1f5a('0x46')]({'where':{'id':_0x43fc7a['params']['id']}})[_0x1f5a('0x29')](handleEntityNotFound(_0x4e0383,null))[_0x1f5a('0x29')](saveUpdates(_0x43fc7a[_0x1f5a('0x48')],null))[_0x1f5a('0x29')](respondWithResult(_0x4e0383,null))[_0x1f5a('0x45')](handleError(_0x4e0383,null));};exports[_0x1f5a('0x28')]=function(_0x200709,_0x4f8be8){return db['ZohoField'][_0x1f5a('0x46')]({'where':{'id':_0x200709['params']['id']}})[_0x1f5a('0x29')](handleEntityNotFound(_0x4f8be8,null))[_0x1f5a('0x29')](removeEntity(_0x4f8be8,null))['catch'](handleError(_0x4f8be8,null));};
\ No newline at end of file
index 3b44127..fda5365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./intZohoField.attributes','exports','define'];(function(_0x3ab52f,_0x195d89){var _0x5ee3ca=function(_0x8f1279){while(--_0x8f1279){_0x3ab52f['push'](_0x3ab52f['shift']());}};_0x5ee3ca(++_0x195d89);}(_0x47c5,0x165));var _0x547c=function(_0xfe9e3d,_0x587758){_0xfe9e3d=_0xfe9e3d-0x0;var _0x33c751=_0x47c5[_0xfe9e3d];return _0x33c751;};'use strict';var _=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var logger=require(_0x547c('0x2'))(_0x547c('0x3'));var moment=require(_0x547c('0x4'));var BPromise=require(_0x547c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x547c('0x6'));var rimraf=require(_0x547c('0x7'));var config=require('../../config/environment');var attributes=require(_0x547c('0x8'));module[_0x547c('0x9')]=function(_0x51ab7f,_0x2e5b57){return _0x51ab7f[_0x547c('0xa')](_0x547c('0xb'),attributes,{'tableName':_0x547c('0xc'),'paranoid':![],'indexes':[{'name':_0x547c('0xd'),'fields':[_0x547c('0xe'),_0x547c('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0295=['rimraf','../../config/environment','./intZohoField.attributes','exports','define','idField','lodash','api','request-promise','path'];(function(_0x143ff6,_0x31edbf){var _0x36322b=function(_0x2e9e54){while(--_0x2e9e54){_0x143ff6['push'](_0x143ff6['shift']());}};_0x36322b(++_0x31edbf);}(_0x0295,0x1f0));var _0x5029=function(_0x5665b7,_0x634f29){_0x5665b7=_0x5665b7-0x0;var _0x21418c=_0x0295[_0x5665b7];return _0x21418c;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5029('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5029('0x2'));var fs=require('fs');var path=require(_0x5029('0x3'));var rimraf=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var attributes=require(_0x5029('0x6'));module[_0x5029('0x7')]=function(_0x200217,_0x215955){return _0x200217[_0x5029('0x8')]('ZohoField',attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x5029('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 8008b4f..818ff89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d93=['client','http','request','then','info','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x536eb2,_0x14a440){var _0x27436e=function(_0x4b5118){while(--_0x4b5118){_0x536eb2['push'](_0x536eb2['shift']());}};_0x27436e(++_0x14a440);}(_0x9d93,0x86));var _0x39d9=function(_0x30ab6c,_0x938081){_0x30ab6c=_0x30ab6c-0x0;var _0x5ae0e9=_0x9d93[_0x30ab6c];return _0x5ae0e9;};'use strict';var _=require(_0x39d9('0x0'));var util=require(_0x39d9('0x1'));var moment=require(_0x39d9('0x2'));var BPromise=require('bluebird');var rs=require(_0x39d9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x39d9('0x4'))['db'];var utils=require(_0x39d9('0x5'));var logger=require(_0x39d9('0x6'))(_0x39d9('0x7'));var config=require(_0x39d9('0x8'));var jayson=require(_0x39d9('0x9'));var client=jayson[_0x39d9('0xa')][_0x39d9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe94f10,_0xcf3643,_0x51daf7){return new BPromise(function(_0x29de2a,_0x227d8a){return client[_0x39d9('0xc')](_0xe94f10,_0x51daf7)[_0x39d9('0xd')](function(_0x48f54c){logger[_0x39d9('0xe')](_0x39d9('0xf'),_0xcf3643,'request\x20sent');logger[_0x39d9('0x10')](_0x39d9('0x11'),_0xcf3643,'request\x20sent',JSON[_0x39d9('0x12')](_0x48f54c));if(_0x48f54c['error']){if(_0x48f54c[_0x39d9('0x13')][_0x39d9('0x14')]===0x1f4){logger[_0x39d9('0x13')]('ZohoField,\x20%s,\x20%s',_0xcf3643,_0x48f54c['error'][_0x39d9('0x15')]);return _0x227d8a(_0x48f54c[_0x39d9('0x13')][_0x39d9('0x15')]);}logger[_0x39d9('0x13')]('ZohoField,\x20%s,\x20%s',_0xcf3643,_0x48f54c['error']['message']);return _0x29de2a(_0x48f54c[_0x39d9('0x13')]['message']);}else{logger[_0x39d9('0xe')]('ZohoField,\x20%s,\x20%s',_0xcf3643,_0x39d9('0x16'));_0x29de2a(_0x48f54c['result'][_0x39d9('0x15')]);}})[_0x39d9('0x17')](function(_0xd9186b){logger[_0x39d9('0x13')](_0x39d9('0xf'),_0xcf3643,_0xd9186b);_0x227d8a(_0xd9186b);});});}
\ No newline at end of file
+var _0x6074=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','moment','bluebird','randomstring','ioredis'];(function(_0x42acb0,_0x636052){var _0x18f6d8=function(_0x3ec1be){while(--_0x3ec1be){_0x42acb0['push'](_0x42acb0['shift']());}};_0x18f6d8(++_0x636052);}(_0x6074,0x161));var _0x4607=function(_0xbf5e16,_0x146ce3){_0xbf5e16=_0xbf5e16-0x0;var _0x5975a5=_0x6074[_0xbf5e16];return _0x5975a5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4607('0x0'));var BPromise=require(_0x4607('0x1'));var rs=require(_0x4607('0x2'));var fs=require('fs');var Redis=require(_0x4607('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4607('0x4'))(_0x4607('0x5'));var config=require(_0x4607('0x6'));var jayson=require(_0x4607('0x7'));var client=jayson[_0x4607('0x8')][_0x4607('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x188537,_0xefde6e,_0x5a3698){return new BPromise(function(_0x549974,_0x372e23){return client[_0x4607('0xa')](_0x188537,_0x5a3698)[_0x4607('0xb')](function(_0x39e8b1){logger[_0x4607('0xc')](_0x4607('0xd'),_0xefde6e,_0x4607('0xe'));logger['debug'](_0x4607('0xf'),_0xefde6e,_0x4607('0xe'),JSON[_0x4607('0x10')](_0x39e8b1));if(_0x39e8b1['error']){if(_0x39e8b1[_0x4607('0x11')][_0x4607('0x12')]===0x1f4){logger['error'](_0x4607('0xd'),_0xefde6e,_0x39e8b1[_0x4607('0x11')]['message']);return _0x372e23(_0x39e8b1[_0x4607('0x11')][_0x4607('0x13')]);}logger['error'](_0x4607('0xd'),_0xefde6e,_0x39e8b1['error']['message']);return _0x549974(_0x39e8b1[_0x4607('0x11')][_0x4607('0x13')]);}else{logger[_0x4607('0xc')](_0x4607('0xd'),_0xefde6e,'request\x20sent');_0x549974(_0x39e8b1[_0x4607('0x14')][_0x4607('0x13')]);}})['catch'](function(_0x799a53){logger[_0x4607('0x11')](_0x4607('0xd'),_0xefde6e,_0x799a53);_0x372e23(_0x799a53);});});}
\ No newline at end of file
index b99b801..45435b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2f5023,_0x4a2b21){var _0x32c5f9=function(_0x2ae6ff){while(--_0x2ae6ff){_0x2f5023['push'](_0x2f5023['shift']());}};_0x32c5f9(++_0x4a2b21);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1bd7a9,_0x24d836){var _0xad8b4c=function(_0x2b5be9){while(--_0x2b5be9){_0x1bd7a9['push'](_0x1bd7a9['shift']());}};_0xad8b4c(++_0x24d836);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index b64f431..688d475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaf6=['state','sequelize','exports','STRING','unique_name_and_version','app.js','BOOLEAN'];(function(_0x4ee9cd,_0xd375b0){var _0x328a5b=function(_0x3ad1f4){while(--_0x3ad1f4){_0x4ee9cd['push'](_0x4ee9cd['shift']());}};_0x328a5b(++_0xd375b0);}(_0xaaf6,0x182));var _0x6aaf=function(_0x2a4125,_0x3644ae){_0x2a4125=_0x2a4125-0x0;var _0xc223d9=_0xaaf6[_0x2a4125];return _0xc223d9;};'use strict';var Sequelize=require(_0x6aaf('0x0'));module[_0x6aaf('0x1')]={'name':{'type':Sequelize[_0x6aaf('0x2')],'allowNull':![],'unique':_0x6aaf('0x3')},'version':{'type':Sequelize[_0x6aaf('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x6aaf('0x2')],'defaultValue':_0x6aaf('0x4')},'filename':{'type':Sequelize[_0x6aaf('0x2')]},'path':{'type':Sequelize[_0x6aaf('0x2')]},'type':{'type':Sequelize[_0x6aaf('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x6aaf('0x5')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x6aaf('0x2')],'unique':_0x6aaf('0x6')},'description':{'type':Sequelize[_0x6aaf('0x2')]},'title':{'type':Sequelize[_0x6aaf('0x2')]},'remoteUri':{'type':Sequelize[_0x6aaf('0x2')]},'link':{'type':Sequelize[_0x6aaf('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x99e8=['INTEGER','BOOLEAN','state','sequelize','exports','STRING','unique_name_and_version','app.js'];(function(_0x3a5648,_0x58054e){var _0x34126d=function(_0x3a6476){while(--_0x3a6476){_0x3a5648['push'](_0x3a5648['shift']());}};_0x34126d(++_0x58054e);}(_0x99e8,0x11b));var _0x899e=function(_0x2d4d4d,_0x3f0f17){_0x2d4d4d=_0x2d4d4d-0x0;var _0x533e32=_0x99e8[_0x2d4d4d];return _0x533e32;};'use strict';var Sequelize=require(_0x899e('0x0'));module[_0x899e('0x1')]={'name':{'type':Sequelize[_0x899e('0x2')],'allowNull':![],'unique':_0x899e('0x3')},'version':{'type':Sequelize[_0x899e('0x2')],'allowNull':![],'unique':_0x899e('0x3')},'main':{'type':Sequelize[_0x899e('0x2')],'defaultValue':_0x899e('0x4')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x899e('0x2')]},'type':{'type':Sequelize[_0x899e('0x2')]},'size':{'type':Sequelize[_0x899e('0x5')]},'active':{'type':Sequelize[_0x899e('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0x899e('0x2')]},'logo':{'type':Sequelize[_0x899e('0x2')]},'state':{'type':Sequelize[_0x899e('0x2')],'unique':_0x899e('0x7')},'description':{'type':Sequelize[_0x899e('0x2')]},'title':{'type':Sequelize[_0x899e('0x2')]},'remoteUri':{'type':Sequelize[_0x899e('0x2')]},'link':{'type':Sequelize[_0x899e('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index e504238..0fe0867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','then','error','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','Integration','include','findAll','rows','show','params','rawAttributes','keys','length','includeAll','merge','create','update','find','catch','destroy','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x322461,_0x38641b){var _0xd02a85=function(_0x200f4f){while(--_0x200f4f){_0x322461['push'](_0x322461['shift']());}};_0xd02a85(++_0x38641b);}(_0x5d58,0x187));var _0x85d5=function(_0x41122a,_0x2773b2){_0x41122a=_0x41122a-0x0;var _0x3359c4=_0x5d58[_0x41122a];return _0x3359c4;};'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(_0x85d5('0x0'));var BPromise=require(_0x85d5('0x1'));var Mustache=require('mustache');var util=require(_0x85d5('0x2'));var path=require(_0x85d5('0x3'));var sox=require('sox');var csv=require(_0x85d5('0x4'));var ejs=require(_0x85d5('0x5'));var fs=require('fs');var fs_extra=require(_0x85d5('0x6'));var _=require(_0x85d5('0x7'));var squel=require('squel');var crypto=require(_0x85d5('0x8'));var jsforce=require(_0x85d5('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x85d5('0x4'));var querystring=require('querystring');var Papa=require(_0x85d5('0xa'));var Redis=require(_0x85d5('0xb'));var authService=require(_0x85d5('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x85d5('0xd'))(_0x85d5('0xe'));var utils=require(_0x85d5('0xf'));var config=require(_0x85d5('0x10'));var licenseUtil=require(_0x85d5('0x11'));var db=require(_0x85d5('0x12'))['db'];function respondWithStatusCode(_0x31409d,_0x5897af){_0x5897af=_0x5897af||0xcc;return function(_0x4bbf2a){if(_0x4bbf2a){return _0x31409d['sendStatus'](_0x5897af);}return _0x31409d[_0x85d5('0x13')](_0x5897af)[_0x85d5('0x14')]();};}function respondWithResult(_0x339d4f,_0x1704f0){_0x1704f0=_0x1704f0||0xc8;return function(_0x18a20c){if(_0x18a20c){return _0x339d4f[_0x85d5('0x13')](_0x1704f0)[_0x85d5('0x15')](_0x18a20c);}};}function respondWithFilteredResult(_0x586382,_0x18e977){return function(_0x2d7c95){if(_0x2d7c95){var _0x1621ed=typeof _0x18e977[_0x85d5('0x16')]===_0x85d5('0x17')&&typeof _0x18e977[_0x85d5('0x18')]===_0x85d5('0x17');var _0x12bef9=_0x2d7c95[_0x85d5('0x19')];var _0x17acb0=_0x1621ed?0x0:_0x18e977[_0x85d5('0x16')];var _0x432bd6=_0x1621ed?_0x2d7c95[_0x85d5('0x19')]:_0x18e977[_0x85d5('0x16')]+_0x18e977[_0x85d5('0x18')];var _0x26981b;if(_0x432bd6>=_0x12bef9){_0x432bd6=_0x12bef9;_0x26981b=0xc8;}else{_0x26981b=0xce;}_0x586382[_0x85d5('0x13')](_0x26981b);return _0x586382[_0x85d5('0x1a')]('Content-Range',_0x17acb0+'-'+_0x432bd6+'/'+_0x12bef9)[_0x85d5('0x15')](_0x2d7c95);}return null;};}function patchUpdates(_0x133fa9){return function(_0x5f5755){try{jsonpatch[_0x85d5('0x1b')](_0x5f5755,_0x133fa9,!![]);}catch(_0x1264ca){return BPromise['reject'](_0x1264ca);}return _0x5f5755['save']();};}function saveUpdates(_0x347337,_0x5a1b9a){return function(_0x2f2bae){if(_0x2f2bae){return _0x2f2bae['update'](_0x347337)[_0x85d5('0x1c')](function(_0x1f8d27){return _0x1f8d27;});}return null;};}function removeEntity(_0x560b3a,_0x4e11c4){return function(_0x4da71b){if(_0x4da71b){return _0x4da71b['destroy']()[_0x85d5('0x1c')](function(){_0x560b3a[_0x85d5('0x13')](0xcc)[_0x85d5('0x14')]();});}};}function handleEntityNotFound(_0x466bbd,_0x12fea3){return function(_0xef2405){if(!_0xef2405){_0x466bbd['sendStatus'](0x194);}return _0xef2405;};}function handleError(_0x7e9a11,_0x4f8c66){_0x4f8c66=_0x4f8c66||0x1f4;return function(_0x1b3fae){logger[_0x85d5('0x1d')](_0x1b3fae[_0x85d5('0x1e')]);if(_0x1b3fae['name']){delete _0x1b3fae[_0x85d5('0x1f')];}_0x7e9a11[_0x85d5('0x13')](_0x4f8c66)[_0x85d5('0x20')](_0x1b3fae);};}exports[_0x85d5('0x21')]=function(_0x4605c5,_0x56031f){var _0x1cbef1={},_0x476c8b={},_0x330f8a={'count':0x0,'rows':[]};var _0x22a961=_[_0x85d5('0x22')](db['Integration']['rawAttributes'],function(_0x2ce7a9){return{'name':_0x2ce7a9[_0x85d5('0x23')],'type':_0x2ce7a9[_0x85d5('0x24')][_0x85d5('0x25')]};});_0x476c8b[_0x85d5('0x26')]=_['map'](_0x22a961,_0x85d5('0x1f'));_0x476c8b[_0x85d5('0x27')]=_['keys'](_0x4605c5['query']);_0x476c8b[_0x85d5('0x28')]=_[_0x85d5('0x29')](_0x476c8b['model'],_0x476c8b[_0x85d5('0x27')]);_0x1cbef1['attributes']=_[_0x85d5('0x29')](_0x476c8b[_0x85d5('0x26')],qs['fields'](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2a')]));_0x1cbef1[_0x85d5('0x2b')]=_0x1cbef1[_0x85d5('0x2b')]['length']?_0x1cbef1['attributes']:_0x476c8b[_0x85d5('0x26')];if(!_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2c')](_0x85d5('0x2d'))){_0x1cbef1[_0x85d5('0x18')]=qs[_0x85d5('0x18')](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x18')]);_0x1cbef1[_0x85d5('0x16')]=qs['offset'](_0x4605c5['query'][_0x85d5('0x16')]);}_0x1cbef1[_0x85d5('0x2e')]=qs[_0x85d5('0x2f')](_0x4605c5[_0x85d5('0x27')][_0x85d5('0x2f')]);_0x1cbef1[_0x85d5('0x30')]=qs[_0x85d5('0x28')](_[_0x85d5('0x31')](_0x4605c5['query'],_0x476c8b[_0x85d5('0x28')]),_0x22a961);if(_0x4605c5[_0x85d5('0x27')][_0x85d5('0x32')]){_0x1cbef1[_0x85d5('0x30')]=_['merge'](_0x1cbef1[_0x85d5('0x30')],{'$or':_[_0x85d5('0x22')](_0x22a961,function(_0x3282d3){if(_0x3282d3[_0x85d5('0x24')]!=='VIRTUAL'){var _0x34caed={};_0x34caed[_0x3282d3['name']]={'$like':'%'+_0x4605c5['query'][_0x85d5('0x32')]+'%'};return _0x34caed;}})});}_0x1cbef1=_['merge']({},_0x1cbef1,_0x4605c5[_0x85d5('0x33')]);var _0x5ddba7={'where':_0x1cbef1['where']};return db[_0x85d5('0x34')][_0x85d5('0x19')](_0x5ddba7)[_0x85d5('0x1c')](function(_0x1beffc){_0x330f8a[_0x85d5('0x19')]=_0x1beffc;if(_0x4605c5['query']['includeAll']){_0x1cbef1[_0x85d5('0x35')]=[{'all':!![]}];}return db[_0x85d5('0x34')][_0x85d5('0x36')](_0x1cbef1);})[_0x85d5('0x1c')](function(_0xdd8b3e){_0x330f8a[_0x85d5('0x37')]=_0xdd8b3e;return _0x330f8a;})['then'](respondWithFilteredResult(_0x56031f,_0x1cbef1))['catch'](handleError(_0x56031f,null));};exports[_0x85d5('0x38')]=function(_0x52c99b,_0xfbf466){var _0x18e94d={'raw':![],'where':{'id':_0x52c99b[_0x85d5('0x39')]['id']}},_0x7dd430={};_0x7dd430[_0x85d5('0x26')]=_['keys'](db['Integration'][_0x85d5('0x3a')]);_0x7dd430[_0x85d5('0x27')]=_[_0x85d5('0x3b')](_0x52c99b[_0x85d5('0x27')]);_0x7dd430[_0x85d5('0x28')]=_[_0x85d5('0x29')](_0x7dd430[_0x85d5('0x26')],_0x7dd430[_0x85d5('0x27')]);_0x18e94d[_0x85d5('0x2b')]=_[_0x85d5('0x29')](_0x7dd430[_0x85d5('0x26')],qs[_0x85d5('0x2a')](_0x52c99b[_0x85d5('0x27')][_0x85d5('0x2a')]));_0x18e94d[_0x85d5('0x2b')]=_0x18e94d[_0x85d5('0x2b')][_0x85d5('0x3c')]?_0x18e94d['attributes']:_0x7dd430['model'];if(_0x52c99b[_0x85d5('0x27')][_0x85d5('0x3d')]){_0x18e94d[_0x85d5('0x35')]=[{'all':!![]}];}_0x18e94d=_[_0x85d5('0x3e')]({},_0x18e94d,_0x52c99b[_0x85d5('0x33')]);return db[_0x85d5('0x34')]['find'](_0x18e94d)[_0x85d5('0x1c')](handleEntityNotFound(_0xfbf466,null))['then'](respondWithResult(_0xfbf466,null))['catch'](handleError(_0xfbf466,null));};exports[_0x85d5('0x3f')]=function(_0x13ab32,_0x12a03){return db[_0x85d5('0x34')][_0x85d5('0x3f')](_0x13ab32['body'],{})[_0x85d5('0x1c')](respondWithResult(_0x12a03,0xc9))['catch'](handleError(_0x12a03,null));};exports[_0x85d5('0x40')]=function(_0xd8db57,_0x219154){if(_0xd8db57['body']['id']){delete _0xd8db57['body']['id'];}return db['Integration'][_0x85d5('0x41')]({'where':{'id':_0xd8db57[_0x85d5('0x39')]['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x219154,null))['then'](saveUpdates(_0xd8db57['body'],null))[_0x85d5('0x1c')](respondWithResult(_0x219154,null))[_0x85d5('0x42')](handleError(_0x219154,null));};exports[_0x85d5('0x43')]=function(_0x288b56,_0x4b2dce){return db[_0x85d5('0x34')][_0x85d5('0x41')]({'where':{'id':_0x288b56[_0x85d5('0x39')]['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x4b2dce,null))[_0x85d5('0x1c')](removeEntity(_0x4b2dce,null))[_0x85d5('0x42')](handleError(_0x4b2dce,null));};
\ No newline at end of file
+var _0x7880=['set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','Integration','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','keys','options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit'];(function(_0x2c4298,_0x27a466){var _0x22f175=function(_0x1d0477){while(--_0x1d0477){_0x2c4298['push'](_0x2c4298['shift']());}};_0x22f175(++_0x27a466);}(_0x7880,0x1f4));var _0x0788=function(_0x54e9cd,_0x16ae73){_0x54e9cd=_0x54e9cd-0x0;var _0x343ae7=_0x7880[_0x54e9cd];return _0x343ae7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0788('0x0'));var zipdir=require(_0x0788('0x1'));var jsonpatch=require(_0x0788('0x2'));var rp=require(_0x0788('0x3'));var moment=require(_0x0788('0x4'));var BPromise=require(_0x0788('0x5'));var Mustache=require('mustache');var util=require(_0x0788('0x6'));var path=require(_0x0788('0x7'));var sox=require(_0x0788('0x8'));var csv=require(_0x0788('0x9'));var ejs=require(_0x0788('0xa'));var fs=require('fs');var fs_extra=require(_0x0788('0xb'));var _=require(_0x0788('0xc'));var squel=require(_0x0788('0xd'));var crypto=require(_0x0788('0xe'));var jsforce=require(_0x0788('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0788('0x9'));var querystring=require('querystring');var Papa=require(_0x0788('0x10'));var Redis=require('ioredis');var authService=require(_0x0788('0x11'));var qs=require(_0x0788('0x12'));var as=require(_0x0788('0x13'));var hardwareService=require(_0x0788('0x14'));var logger=require(_0x0788('0x15'))('api');var utils=require(_0x0788('0x16'));var config=require(_0x0788('0x17'));var licenseUtil=require(_0x0788('0x18'));var db=require(_0x0788('0x19'))['db'];function respondWithStatusCode(_0x311729,_0xce4342){_0xce4342=_0xce4342||0xcc;return function(_0x261ebc){if(_0x261ebc){return _0x311729['sendStatus'](_0xce4342);}return _0x311729[_0x0788('0x1a')](_0xce4342)[_0x0788('0x1b')]();};}function respondWithResult(_0x3bdcdf,_0x13cf07){_0x13cf07=_0x13cf07||0xc8;return function(_0x51e5d3){if(_0x51e5d3){return _0x3bdcdf[_0x0788('0x1a')](_0x13cf07)['json'](_0x51e5d3);}};}function respondWithFilteredResult(_0x195f14,_0x170d56){return function(_0x3fd1e4){if(_0x3fd1e4){var _0xb406fb=typeof _0x170d56[_0x0788('0x1c')]===_0x0788('0x1d')&&typeof _0x170d56['limit']==='undefined';var _0x17d805=_0x3fd1e4[_0x0788('0x1e')];var _0x5b2bdc=_0xb406fb?0x0:_0x170d56[_0x0788('0x1c')];var _0x415f19=_0xb406fb?_0x3fd1e4[_0x0788('0x1e')]:_0x170d56['offset']+_0x170d56[_0x0788('0x1f')];var _0x3fb723;if(_0x415f19>=_0x17d805){_0x415f19=_0x17d805;_0x3fb723=0xc8;}else{_0x3fb723=0xce;}_0x195f14['status'](_0x3fb723);return _0x195f14[_0x0788('0x20')]('Content-Range',_0x5b2bdc+'-'+_0x415f19+'/'+_0x17d805)[_0x0788('0x21')](_0x3fd1e4);}return null;};}function patchUpdates(_0x48bc5f){return function(_0x17cca3){try{jsonpatch[_0x0788('0x22')](_0x17cca3,_0x48bc5f,!![]);}catch(_0x18ff22){return BPromise[_0x0788('0x23')](_0x18ff22);}return _0x17cca3[_0x0788('0x24')]();};}function saveUpdates(_0x4f0005,_0x48ec43){return function(_0x2270d4){if(_0x2270d4){return _0x2270d4[_0x0788('0x25')](_0x4f0005)[_0x0788('0x26')](function(_0x7a99a1){return _0x7a99a1;});}return null;};}function removeEntity(_0x5ba1da,_0x4d5c93){return function(_0x79204e){if(_0x79204e){return _0x79204e[_0x0788('0x27')]()[_0x0788('0x26')](function(){_0x5ba1da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x240459,_0xa1f7dc){return function(_0x5f2dda){if(!_0x5f2dda){_0x240459['sendStatus'](0x194);}return _0x5f2dda;};}function handleError(_0x5a54a5,_0x44798c){_0x44798c=_0x44798c||0x1f4;return function(_0x57fda1){logger[_0x0788('0x28')](_0x57fda1[_0x0788('0x29')]);if(_0x57fda1[_0x0788('0x2a')]){delete _0x57fda1[_0x0788('0x2a')];}_0x5a54a5[_0x0788('0x1a')](_0x44798c)[_0x0788('0x2b')](_0x57fda1);};}exports[_0x0788('0x2c')]=function(_0x3ffe4f,_0x5b7594){var _0x5a5178={},_0x3c5246={},_0x40d345={'count':0x0,'rows':[]};var _0x54979a=_['map'](db[_0x0788('0x2d')][_0x0788('0x2e')],function(_0x20fcd8){return{'name':_0x20fcd8[_0x0788('0x2f')],'type':_0x20fcd8[_0x0788('0x30')][_0x0788('0x31')]};});_0x3c5246[_0x0788('0x32')]=_[_0x0788('0x33')](_0x54979a,_0x0788('0x2a'));_0x3c5246[_0x0788('0x34')]=_['keys'](_0x3ffe4f[_0x0788('0x34')]);_0x3c5246[_0x0788('0x35')]=_[_0x0788('0x36')](_0x3c5246[_0x0788('0x32')],_0x3c5246[_0x0788('0x34')]);_0x5a5178[_0x0788('0x37')]=_[_0x0788('0x36')](_0x3c5246[_0x0788('0x32')],qs[_0x0788('0x38')](_0x3ffe4f[_0x0788('0x34')]['fields']));_0x5a5178['attributes']=_0x5a5178['attributes']['length']?_0x5a5178['attributes']:_0x3c5246['model'];if(!_0x3ffe4f[_0x0788('0x34')][_0x0788('0x39')](_0x0788('0x3a'))){_0x5a5178['limit']=qs[_0x0788('0x1f')](_0x3ffe4f[_0x0788('0x34')][_0x0788('0x1f')]);_0x5a5178[_0x0788('0x1c')]=qs['offset'](_0x3ffe4f[_0x0788('0x34')]['offset']);}_0x5a5178[_0x0788('0x3b')]=qs['sort'](_0x3ffe4f[_0x0788('0x34')][_0x0788('0x3c')]);_0x5a5178['where']=qs[_0x0788('0x35')](_[_0x0788('0x3d')](_0x3ffe4f['query'],_0x3c5246[_0x0788('0x35')]),_0x54979a);if(_0x3ffe4f['query'][_0x0788('0x3e')]){_0x5a5178['where']=_[_0x0788('0x3f')](_0x5a5178['where'],{'$or':_[_0x0788('0x33')](_0x54979a,function(_0x57fec9){if(_0x57fec9['type']!==_0x0788('0x40')){var _0x68d9d4={};_0x68d9d4[_0x57fec9[_0x0788('0x2a')]]={'$like':'%'+_0x3ffe4f[_0x0788('0x34')][_0x0788('0x3e')]+'%'};return _0x68d9d4;}})});}_0x5a5178=_['merge']({},_0x5a5178,_0x3ffe4f['options']);var _0x530d83={'where':_0x5a5178['where']};return db[_0x0788('0x2d')][_0x0788('0x1e')](_0x530d83)[_0x0788('0x26')](function(_0x358a22){_0x40d345[_0x0788('0x1e')]=_0x358a22;if(_0x3ffe4f['query']['includeAll']){_0x5a5178[_0x0788('0x41')]=[{'all':!![]}];}return db[_0x0788('0x2d')][_0x0788('0x42')](_0x5a5178);})[_0x0788('0x26')](function(_0x236b63){_0x40d345[_0x0788('0x43')]=_0x236b63;return _0x40d345;})[_0x0788('0x26')](respondWithFilteredResult(_0x5b7594,_0x5a5178))[_0x0788('0x44')](handleError(_0x5b7594,null));};exports[_0x0788('0x45')]=function(_0x50e8f5,_0x5581e6){var _0x441aec={'raw':![],'where':{'id':_0x50e8f5[_0x0788('0x46')]['id']}},_0x1d579d={};_0x1d579d['model']=_['keys'](db['Integration'][_0x0788('0x2e')]);_0x1d579d[_0x0788('0x34')]=_[_0x0788('0x47')](_0x50e8f5[_0x0788('0x34')]);_0x1d579d[_0x0788('0x35')]=_[_0x0788('0x36')](_0x1d579d[_0x0788('0x32')],_0x1d579d[_0x0788('0x34')]);_0x441aec['attributes']=_[_0x0788('0x36')](_0x1d579d[_0x0788('0x32')],qs[_0x0788('0x38')](_0x50e8f5[_0x0788('0x34')]['fields']));_0x441aec[_0x0788('0x37')]=_0x441aec[_0x0788('0x37')]['length']?_0x441aec['attributes']:_0x1d579d['model'];if(_0x50e8f5[_0x0788('0x34')]['includeAll']){_0x441aec[_0x0788('0x41')]=[{'all':!![]}];}_0x441aec=_[_0x0788('0x3f')]({},_0x441aec,_0x50e8f5[_0x0788('0x48')]);return db[_0x0788('0x2d')][_0x0788('0x49')](_0x441aec)[_0x0788('0x26')](handleEntityNotFound(_0x5581e6,null))[_0x0788('0x26')](respondWithResult(_0x5581e6,null))[_0x0788('0x44')](handleError(_0x5581e6,null));};exports['create']=function(_0x4c6366,_0x39c3cc){return db[_0x0788('0x2d')][_0x0788('0x4a')](_0x4c6366['body'],{})[_0x0788('0x26')](respondWithResult(_0x39c3cc,0xc9))[_0x0788('0x44')](handleError(_0x39c3cc,null));};exports[_0x0788('0x25')]=function(_0x4563cd,_0x2395ad){if(_0x4563cd['body']['id']){delete _0x4563cd['body']['id'];}return db[_0x0788('0x2d')][_0x0788('0x49')]({'where':{'id':_0x4563cd['params']['id']}})[_0x0788('0x26')](handleEntityNotFound(_0x2395ad,null))['then'](saveUpdates(_0x4563cd[_0x0788('0x4b')],null))[_0x0788('0x26')](respondWithResult(_0x2395ad,null))[_0x0788('0x44')](handleError(_0x2395ad,null));};exports[_0x0788('0x27')]=function(_0x3c757a,_0x379928){return db[_0x0788('0x2d')][_0x0788('0x49')]({'where':{'id':_0x3c757a['params']['id']}})[_0x0788('0x26')](handleEntityNotFound(_0x379928,null))[_0x0788('0x26')](removeEntity(_0x379928,null))[_0x0788('0x44')](handleError(_0x379928,null));};
\ No newline at end of file
index f8497f8..d4e330e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f42=['api','moment','bluebird','request-promise','path','../../config/environment','./integration.attributes','exports','define','Integration','integrations','lodash','util','../../config/logger'];(function(_0x488a55,_0x5948ae){var _0x2f842a=function(_0x56d73e){while(--_0x56d73e){_0x488a55['push'](_0x488a55['shift']());}};_0x2f842a(++_0x5948ae);}(_0x8f42,0xdd));var _0x28f4=function(_0x565dfa,_0x5ca74b){_0x565dfa=_0x565dfa-0x0;var _0x3d8102=_0x8f42[_0x565dfa];return _0x3d8102;};'use strict';var _=require(_0x28f4('0x0'));var util=require(_0x28f4('0x1'));var logger=require(_0x28f4('0x2'))(_0x28f4('0x3'));var moment=require(_0x28f4('0x4'));var BPromise=require(_0x28f4('0x5'));var rp=require(_0x28f4('0x6'));var fs=require('fs');var path=require(_0x28f4('0x7'));var rimraf=require('rimraf');var config=require(_0x28f4('0x8'));var attributes=require(_0x28f4('0x9'));module[_0x28f4('0xa')]=function(_0x13bba9,_0x11a8d9){return _0x13bba9[_0x28f4('0xb')](_0x28f4('0xc'),attributes,{'tableName':_0x28f4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed17=['util','api','moment','bluebird','request-promise','rimraf','./integration.attributes','exports','define','Integration','integrations'];(function(_0x47febd,_0x293e09){var _0x58b6f1=function(_0x5d33bf){while(--_0x5d33bf){_0x47febd['push'](_0x47febd['shift']());}};_0x58b6f1(++_0x293e09);}(_0xed17,0x1c3));var _0x7ed1=function(_0x353bbb,_0x56e1ab){_0x353bbb=_0x353bbb-0x0;var _0x4e6a0e=_0xed17[_0x353bbb];return _0x4e6a0e;};'use strict';var _=require('lodash');var util=require(_0x7ed1('0x0'));var logger=require('../../config/logger')(_0x7ed1('0x1'));var moment=require(_0x7ed1('0x2'));var BPromise=require(_0x7ed1('0x3'));var rp=require(_0x7ed1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7ed1('0x5'));var config=require('../../config/environment');var attributes=require(_0x7ed1('0x6'));module[_0x7ed1('0x7')]=function(_0x41d01c,_0xb3042a){return _0x41d01c[_0x7ed1('0x8')](_0x7ed1('0x9'),attributes,{'tableName':_0x7ed1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c2b3fef..99ac0df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','Integration,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x4d4b57,_0x3be19f){var _0x3b2c02=function(_0x49ded5){while(--_0x49ded5){_0x4d4b57['push'](_0x4d4b57['shift']());}};_0x3b2c02(++_0x3be19f);}(_0x5f2f,0x73));var _0xf5f2=function(_0x140980,_0x59d70d){_0x140980=_0x140980-0x0;var _0x133636=_0x5f2f[_0x140980];return _0x133636;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('Integration,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0x2542=['info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x21b7f5,_0x30e1d9){var _0x12727e=function(_0x1a92ce){while(--_0x1a92ce){_0x21b7f5['push'](_0x21b7f5['shift']());}};_0x12727e(++_0x30e1d9);}(_0x2542,0x169));var _0x2254=function(_0x3e9416,_0x19b129){_0x3e9416=_0x3e9416-0x0;var _0x3b2898=_0x2542[_0x3e9416];return _0x3b2898;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var moment=require(_0x2254('0x2'));var BPromise=require(_0x2254('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2254('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2254('0x5'));var logger=require(_0x2254('0x6'))(_0x2254('0x7'));var config=require(_0x2254('0x8'));var jayson=require(_0x2254('0x9'));var client=jayson['client'][_0x2254('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe8ca50,_0x2ee7ee,_0x3c45ec){return new BPromise(function(_0x1637ad,_0x477b47){return client[_0x2254('0xb')](_0xe8ca50,_0x3c45ec)[_0x2254('0xc')](function(_0xb395da){logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,'request\x20sent');logger[_0x2254('0xf')](_0x2254('0x10'),_0x2ee7ee,_0x2254('0x11'),JSON[_0x2254('0x12')](_0xb395da));if(_0xb395da['error']){if(_0xb395da['error'][_0x2254('0x13')]===0x1f4){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);return _0x477b47(_0xb395da[_0x2254('0x14')]['message']);}logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da['error'][_0x2254('0x15')]);return _0x1637ad(_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);}else{logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,_0x2254('0x11'));_0x1637ad(_0xb395da['result'][_0x2254('0x15')]);}})['catch'](function(_0x327d6d){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0x327d6d);_0x477b47(_0x327d6d);});});}
\ No newline at end of file
index ffb1ffe..ff0c2a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4a45e8,_0x21a256){var _0x2625fd=function(_0x5e2f67){while(--_0x5e2f67){_0x4a45e8['push'](_0x4a45e8['shift']());}};_0x2625fd(++_0x21a256);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x5891f8,_0x17cb98){_0x5891f8=_0x5891f8-0x0;var _0x4657c9=_0xc6ac[_0x5891f8];return _0x4657c9;};'use strict';var multer=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var path=require(_0xcc6a('0x2'));var timeout=require(_0xcc6a('0x3'));var express=require(_0xcc6a('0x4'));var router=express[_0xcc6a('0x5')]();var fs_extra=require(_0xcc6a('0x6'));var auth=require(_0xcc6a('0x7'));var interaction=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var controller=require(_0xcc6a('0xa'));router[_0xcc6a('0xb')]('/',auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xd')]);router['get'](_0xcc6a('0xe'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xf')]);router['get'](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0x11')]);router[_0xcc6a('0x12')]('/',auth[_0xcc6a('0xc')](),controller['create']);router[_0xcc6a('0x13')](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller['update']);router[_0xcc6a('0x14')](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xba34=['exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete'];(function(_0x4dcc75,_0x82e80d){var _0xe3cb6=function(_0x3bd63c){while(--_0x3bd63c){_0x4dcc75['push'](_0x4dcc75['shift']());}};_0xe3cb6(++_0x82e80d);}(_0xba34,0x119));var _0x4ba3=function(_0x3f39b6,_0x3fe3e4){_0x3f39b6=_0x3f39b6-0x0;var _0xe15baa=_0xba34[_0x3f39b6];return _0xe15baa;};'use strict';var multer=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var path=require(_0x4ba3('0x2'));var timeout=require(_0x4ba3('0x3'));var express=require(_0x4ba3('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4ba3('0x5'));var config=require(_0x4ba3('0x6'));var controller=require(_0x4ba3('0x7'));router[_0x4ba3('0x8')]('/',auth[_0x4ba3('0x9')](),controller[_0x4ba3('0xa')]);router[_0x4ba3('0x8')]('/describe',auth[_0x4ba3('0x9')](),controller[_0x4ba3('0xb')]);router[_0x4ba3('0x8')](_0x4ba3('0xc'),auth[_0x4ba3('0x9')](),controller[_0x4ba3('0xd')]);router[_0x4ba3('0xe')]('/',auth[_0x4ba3('0x9')](),controller[_0x4ba3('0xf')]);router[_0x4ba3('0x10')](_0x4ba3('0xc'),auth['isAuthenticated'](),controller[_0x4ba3('0x11')]);router[_0x4ba3('0x12')]('/:id',auth[_0x4ba3('0x9')](),controller['destroy']);module[_0x4ba3('0x13')]=router;
\ No newline at end of file
index b43404a..a81d36e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9adf=['RECEIVED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x9adf,0x1c4));var _0xf9ad=function(_0x1716ac,_0x245897){_0x1716ac=_0x1716ac-0x0;var _0xa54aaa=_0x9adf[_0x1716ac];return _0xa54aaa;};'use strict';var Sequelize=require(_0xf9ad('0x0'));module[_0xf9ad('0x1')]={'integration':{'type':Sequelize[_0xf9ad('0x2')]},'eventChannel':{'type':Sequelize[_0xf9ad('0x2')]},'exitStatus':{'type':Sequelize[_0xf9ad('0x2')]},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0xf9ad('0x3')]},'contacts':{'type':Sequelize[_0xf9ad('0x2')]},'uniqueid':{'type':Sequelize[_0xf9ad('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xf9ad('0x2')]},'queue':{'type':Sequelize[_0xf9ad('0x2')]},'interface':{'type':Sequelize[_0xf9ad('0x2')]},'membername':{'type':Sequelize[_0xf9ad('0x2')]},'agentcalledAt':{'type':Sequelize[_0xf9ad('0x4')]},'agentconnectAt':{'type':Sequelize[_0xf9ad('0x4')]},'holdtime':{'type':Sequelize[_0xf9ad('0x3')]},'agentcomplete':{'type':Sequelize[_0xf9ad('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0xf9ad('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf9ad('0x3')]},'reason':{'type':Sequelize[_0xf9ad('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xf9ad('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xf9ad('0x4')]},'agentdump':{'type':Sequelize[_0xf9ad('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xf9ad('0x2')]},'channel':{'type':Sequelize[_0xf9ad('0x2')]},'channelstate':{'type':Sequelize[_0xf9ad('0x3')]},'channelstatedesc':{'type':Sequelize[_0xf9ad('0x2')]},'connectedlinenum':{'type':Sequelize[_0xf9ad('0x2')]},'connectedlinename':{'type':Sequelize[_0xf9ad('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xf9ad('0x2')]},'context':{'type':Sequelize[_0xf9ad('0x2')]},'exten':{'type':Sequelize[_0xf9ad('0x2')]},'priority':{'type':Sequelize[_0xf9ad('0x2')]},'destchannel':{'type':Sequelize[_0xf9ad('0x2')]},'destchannelstate':{'type':Sequelize[_0xf9ad('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xf9ad('0x2')]},'destcalleridnum':{'type':Sequelize[_0xf9ad('0x2')]},'destcalleridname':{'type':Sequelize[_0xf9ad('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xf9ad('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xf9ad('0x2')]},'destlanguage':{'type':Sequelize[_0xf9ad('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xf9ad('0x2')]},'destexten':{'type':Sequelize[_0xf9ad('0x2')]},'destpriority':{'type':Sequelize[_0xf9ad('0x2')]},'destuniqueid':{'type':Sequelize[_0xf9ad('0x2')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0xf9ad('0x2')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xf9ad('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0xf9ad('0x6')]},'html':{'type':Sequelize[_0xf9ad('0x6')]},'text':{'type':Sequelize[_0xf9ad('0x6')]},'status':{'type':Sequelize[_0xf9ad('0x7')](_0xf9ad('0x8'),_0xf9ad('0x9'),_0xf9ad('0xa'),'FAILED')},'url':{'type':Sequelize[_0xf9ad('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0xf9ad('0x2')]},'projectId':{'type':Sequelize[_0xf9ad('0x3')]}};
\ No newline at end of file
+var _0x04f9=['DATE','BOOLEAN','TEXT','ENUM','SENT','FAILED','sequelize','STRING','INTEGER'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x04f9,0xd5));var _0x904f=function(_0x2f0d60,_0x5df10b){_0x2f0d60=_0x2f0d60-0x0;var _0x3c4400=_0x04f9[_0x2f0d60];return _0x3c4400;};'use strict';var Sequelize=require(_0x904f('0x0'));module['exports']={'integration':{'type':Sequelize[_0x904f('0x1')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x904f('0x1')]},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0x904f('0x2')]},'contacts':{'type':Sequelize[_0x904f('0x1')]},'uniqueid':{'type':Sequelize[_0x904f('0x1')]},'calleridnum':{'type':Sequelize[_0x904f('0x1')]},'calleridname':{'type':Sequelize[_0x904f('0x1')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x904f('0x3')]},'agentconnectAt':{'type':Sequelize[_0x904f('0x3')]},'holdtime':{'type':Sequelize[_0x904f('0x2')]},'agentcomplete':{'type':Sequelize[_0x904f('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x904f('0x3')]},'talktime':{'type':Sequelize[_0x904f('0x2')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x904f('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x904f('0x3')]},'agentdump':{'type':Sequelize[_0x904f('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x904f('0x3')]},'lastevent':{'type':Sequelize[_0x904f('0x1')]},'channel':{'type':Sequelize[_0x904f('0x1')]},'channelstate':{'type':Sequelize[_0x904f('0x2')]},'channelstatedesc':{'type':Sequelize[_0x904f('0x1')]},'connectedlinenum':{'type':Sequelize[_0x904f('0x1')]},'connectedlinename':{'type':Sequelize[_0x904f('0x1')]},'language':{'type':Sequelize[_0x904f('0x1')]},'accountcode':{'type':Sequelize[_0x904f('0x1')]},'context':{'type':Sequelize[_0x904f('0x1')]},'exten':{'type':Sequelize[_0x904f('0x1')]},'priority':{'type':Sequelize[_0x904f('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x904f('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x904f('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x904f('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x904f('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x904f('0x1')]},'destlanguage':{'type':Sequelize[_0x904f('0x1')]},'destaccountcode':{'type':Sequelize[_0x904f('0x1')]},'destcontext':{'type':Sequelize[_0x904f('0x1')]},'destexten':{'type':Sequelize[_0x904f('0x1')]},'destpriority':{'type':Sequelize[_0x904f('0x1')]},'destuniqueid':{'type':Sequelize[_0x904f('0x1')]},'messageId':{'type':Sequelize[_0x904f('0x1')]},'inReplyTo':{'type':Sequelize[_0x904f('0x1')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x904f('0x1')]},'cc':{'type':Sequelize[_0x904f('0x1')]},'attachment':{'type':Sequelize[_0x904f('0x5')]},'html':{'type':Sequelize[_0x904f('0x5')]},'text':{'type':Sequelize[_0x904f('0x5')]},'status':{'type':Sequelize[_0x904f('0x6')](_0x904f('0x7'),'SENDING','RECEIVED',_0x904f('0x8'))},'url':{'type':Sequelize[_0x904f('0x1')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index dbceda9..df87c5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03f3=['rows','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','IntegrationReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','VIRTUAL','merge','options','where','includeAll','include'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0x03f3,0x198));var _0x303f=function(_0x365b01,_0x4d1cb4){_0x365b01=_0x365b01-0x0;var _0x4235f5=_0x03f3[_0x365b01];return _0x4235f5;};'use strict';var emlformat=require(_0x303f('0x0'));var rimraf=require(_0x303f('0x1'));var zipdir=require(_0x303f('0x2'));var jsonpatch=require(_0x303f('0x3'));var rp=require(_0x303f('0x4'));var moment=require(_0x303f('0x5'));var BPromise=require(_0x303f('0x6'));var Mustache=require(_0x303f('0x7'));var util=require('util');var path=require(_0x303f('0x8'));var sox=require(_0x303f('0x9'));var csv=require(_0x303f('0xa'));var ejs=require(_0x303f('0xb'));var fs=require('fs');var fs_extra=require(_0x303f('0xc'));var _=require(_0x303f('0xd'));var squel=require(_0x303f('0xe'));var crypto=require(_0x303f('0xf'));var jsforce=require(_0x303f('0x10'));var deskjs=require(_0x303f('0x11'));var toCsv=require(_0x303f('0xa'));var querystring=require('querystring');var Papa=require(_0x303f('0x12'));var Redis=require(_0x303f('0x13'));var authService=require(_0x303f('0x14'));var qs=require(_0x303f('0x15'));var as=require(_0x303f('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x303f('0x17'))(_0x303f('0x18'));var utils=require(_0x303f('0x19'));var config=require(_0x303f('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31a399,_0x2d9ba0){_0x2d9ba0=_0x2d9ba0||0xcc;return function(_0x3fa036){if(_0x3fa036){return _0x31a399[_0x303f('0x1b')](_0x2d9ba0);}return _0x31a399[_0x303f('0x1c')](_0x2d9ba0)['end']();};}function respondWithResult(_0x48430b,_0x169cb4){_0x169cb4=_0x169cb4||0xc8;return function(_0x1d2b4e){if(_0x1d2b4e){return _0x48430b[_0x303f('0x1c')](_0x169cb4)[_0x303f('0x1d')](_0x1d2b4e);}};}function respondWithFilteredResult(_0x273291,_0x1277a6){return function(_0x590a7f){if(_0x590a7f){var _0xcfb554=typeof _0x1277a6[_0x303f('0x1e')]===_0x303f('0x1f')&&typeof _0x1277a6[_0x303f('0x20')]===_0x303f('0x1f');var _0x4d1ad3=_0x590a7f['count'];var _0x599568=_0xcfb554?0x0:_0x1277a6[_0x303f('0x1e')];var _0x434392=_0xcfb554?_0x590a7f[_0x303f('0x21')]:_0x1277a6[_0x303f('0x1e')]+_0x1277a6[_0x303f('0x20')];var _0x1f30b1;if(_0x434392>=_0x4d1ad3){_0x434392=_0x4d1ad3;_0x1f30b1=0xc8;}else{_0x1f30b1=0xce;}_0x273291[_0x303f('0x1c')](_0x1f30b1);return _0x273291[_0x303f('0x22')](_0x303f('0x23'),_0x599568+'-'+_0x434392+'/'+_0x4d1ad3)['json'](_0x590a7f);}return null;};}function patchUpdates(_0xf416b5){return function(_0x40a51d){try{jsonpatch[_0x303f('0x24')](_0x40a51d,_0xf416b5,!![]);}catch(_0x274907){return BPromise[_0x303f('0x25')](_0x274907);}return _0x40a51d[_0x303f('0x26')]();};}function saveUpdates(_0x5e6229,_0x57f6f4){return function(_0x380fc4){if(_0x380fc4){return _0x380fc4[_0x303f('0x27')](_0x5e6229)[_0x303f('0x28')](function(_0x12b468){return _0x12b468;});}return null;};}function removeEntity(_0xe09463,_0x39bae6){return function(_0x2a7946){if(_0x2a7946){return _0x2a7946[_0x303f('0x29')]()[_0x303f('0x28')](function(){_0xe09463[_0x303f('0x1c')](0xcc)[_0x303f('0x2a')]();});}};}function handleEntityNotFound(_0xfccd7f,_0x582117){return function(_0x1d689b){if(!_0x1d689b){_0xfccd7f[_0x303f('0x1b')](0x194);}return _0x1d689b;};}function handleError(_0x34facf,_0x5004a4){_0x5004a4=_0x5004a4||0x1f4;return function(_0x4f80c5){logger[_0x303f('0x2b')](_0x4f80c5[_0x303f('0x2c')]);if(_0x4f80c5[_0x303f('0x2d')]){delete _0x4f80c5['name'];}_0x34facf[_0x303f('0x1c')](_0x5004a4)[_0x303f('0x2e')](_0x4f80c5);};}exports[_0x303f('0x2f')]=function(_0x8ac5bf,_0x38deba){var _0x52c4cd={},_0x3e6a4e={},_0x5eca83={'count':0x0,'rows':[]};var _0x3debcf=_[_0x303f('0x30')](db[_0x303f('0x31')][_0x303f('0x32')],function(_0x93e172){return{'name':_0x93e172[_0x303f('0x33')],'type':_0x93e172[_0x303f('0x34')][_0x303f('0x35')]};});_0x3e6a4e[_0x303f('0x36')]=_[_0x303f('0x30')](_0x3debcf,_0x303f('0x2d'));_0x3e6a4e[_0x303f('0x37')]=_[_0x303f('0x38')](_0x8ac5bf[_0x303f('0x37')]);_0x3e6a4e[_0x303f('0x39')]=_[_0x303f('0x3a')](_0x3e6a4e[_0x303f('0x36')],_0x3e6a4e['query']);_0x52c4cd[_0x303f('0x3b')]=_[_0x303f('0x3a')](_0x3e6a4e[_0x303f('0x36')],qs[_0x303f('0x3c')](_0x8ac5bf['query'][_0x303f('0x3c')]));_0x52c4cd[_0x303f('0x3b')]=_0x52c4cd['attributes']['length']?_0x52c4cd[_0x303f('0x3b')]:_0x3e6a4e[_0x303f('0x36')];if(!_0x8ac5bf[_0x303f('0x37')][_0x303f('0x3d')](_0x303f('0x3e'))){_0x52c4cd[_0x303f('0x20')]=qs[_0x303f('0x20')](_0x8ac5bf['query'][_0x303f('0x20')]);_0x52c4cd[_0x303f('0x1e')]=qs[_0x303f('0x1e')](_0x8ac5bf[_0x303f('0x37')][_0x303f('0x1e')]);}_0x52c4cd[_0x303f('0x3f')]=qs[_0x303f('0x40')](_0x8ac5bf['query']['sort']);_0x52c4cd['where']=qs[_0x303f('0x39')](_['pick'](_0x8ac5bf[_0x303f('0x37')],_0x3e6a4e['filters']),_0x3debcf);if(_0x8ac5bf[_0x303f('0x37')][_0x303f('0x41')]){_0x52c4cd['where']=_['merge'](_0x52c4cd['where'],{'$or':_[_0x303f('0x30')](_0x3debcf,function(_0x52e092){if(_0x52e092[_0x303f('0x34')]!==_0x303f('0x42')){var _0x4b6bfa={};_0x4b6bfa[_0x52e092[_0x303f('0x2d')]]={'$like':'%'+_0x8ac5bf[_0x303f('0x37')][_0x303f('0x41')]+'%'};return _0x4b6bfa;}})});}_0x52c4cd=_[_0x303f('0x43')]({},_0x52c4cd,_0x8ac5bf[_0x303f('0x44')]);var _0x197677={'where':_0x52c4cd[_0x303f('0x45')]};return db[_0x303f('0x31')]['count'](_0x197677)['then'](function(_0x243e3b){_0x5eca83[_0x303f('0x21')]=_0x243e3b;if(_0x8ac5bf[_0x303f('0x37')][_0x303f('0x46')]){_0x52c4cd[_0x303f('0x47')]=[{'all':!![]}];}return db[_0x303f('0x31')]['findAll'](_0x52c4cd);})[_0x303f('0x28')](function(_0x8d4357){_0x5eca83[_0x303f('0x48')]=_0x8d4357;return _0x5eca83;})['then'](respondWithFilteredResult(_0x38deba,_0x52c4cd))[_0x303f('0x49')](handleError(_0x38deba,null));};exports[_0x303f('0x4a')]=function(_0x19c404,_0x349a61){var _0x3b2f72={'raw':![],'where':{'id':_0x19c404[_0x303f('0x4b')]['id']}},_0x26a0cb={};_0x26a0cb[_0x303f('0x36')]=_[_0x303f('0x38')](db[_0x303f('0x31')][_0x303f('0x32')]);_0x26a0cb['query']=_['keys'](_0x19c404[_0x303f('0x37')]);_0x26a0cb['filters']=_[_0x303f('0x3a')](_0x26a0cb['model'],_0x26a0cb['query']);_0x3b2f72[_0x303f('0x3b')]=_[_0x303f('0x3a')](_0x26a0cb[_0x303f('0x36')],qs[_0x303f('0x3c')](_0x19c404['query'][_0x303f('0x3c')]));_0x3b2f72[_0x303f('0x3b')]=_0x3b2f72[_0x303f('0x3b')]['length']?_0x3b2f72['attributes']:_0x26a0cb[_0x303f('0x36')];if(_0x19c404['query']['includeAll']){_0x3b2f72[_0x303f('0x47')]=[{'all':!![]}];}_0x3b2f72=_[_0x303f('0x43')]({},_0x3b2f72,_0x19c404['options']);return db['IntegrationReport']['find'](_0x3b2f72)[_0x303f('0x28')](handleEntityNotFound(_0x349a61,null))[_0x303f('0x28')](respondWithResult(_0x349a61,null))['catch'](handleError(_0x349a61,null));};exports[_0x303f('0x4c')]=function(_0x5a4f56,_0x2b6812){return db['IntegrationReport'][_0x303f('0x4c')](_0x5a4f56[_0x303f('0x4d')],{})[_0x303f('0x28')](respondWithResult(_0x2b6812,0xc9))['catch'](handleError(_0x2b6812,null));};exports[_0x303f('0x27')]=function(_0x2dea48,_0x365e50){if(_0x2dea48['body']['id']){delete _0x2dea48['body']['id'];}return db[_0x303f('0x31')][_0x303f('0x4e')]({'where':{'id':_0x2dea48[_0x303f('0x4b')]['id']}})[_0x303f('0x28')](handleEntityNotFound(_0x365e50,null))[_0x303f('0x28')](saveUpdates(_0x2dea48[_0x303f('0x4d')],null))[_0x303f('0x28')](respondWithResult(_0x365e50,null))[_0x303f('0x49')](handleError(_0x365e50,null));};exports['destroy']=function(_0x3341bb,_0x316daf){return db['IntegrationReport'][_0x303f('0x4e')]({'where':{'id':_0x3341bb[_0x303f('0x4b')]['id']}})[_0x303f('0x28')](handleEntityNotFound(_0x316daf,null))[_0x303f('0x28')](removeEntity(_0x316daf,null))['catch'](handleError(_0x316daf,null));};exports[_0x303f('0x4f')]=function(_0x385566,_0x26c6e6){return db[_0x303f('0x31')][_0x303f('0x4f')]()[_0x303f('0x28')](respondWithResult(_0x26c6e6,null))[_0x303f('0x49')](handleError(_0x26c6e6,null));};
\ No newline at end of file
+var _0xac27=['map','rawAttributes','type','key','model','intersection','attributes','length','query','hasOwnProperty','nolimit','limit','sort','where','filters','pick','filter','merge','VIRTUAL','IntegrationReport','includeAll','include','findAll','rows','catch','params','keys','options','create','body','find','describe','eml-format','rimraf','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index'];(function(_0x506401,_0x49d3c8){var _0x3370d0=function(_0x422bc9){while(--_0x422bc9){_0x506401['push'](_0x506401['shift']());}};_0x3370d0(++_0x49d3c8);}(_0xac27,0x1e8));var _0x7ac2=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xac27[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0x7ac2('0x0'));var rimraf=require(_0x7ac2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7ac2('0x2'));var moment=require(_0x7ac2('0x3'));var BPromise=require(_0x7ac2('0x4'));var Mustache=require('mustache');var util=require(_0x7ac2('0x5'));var path=require('path');var sox=require(_0x7ac2('0x6'));var csv=require('to-csv');var ejs=require(_0x7ac2('0x7'));var fs=require('fs');var fs_extra=require(_0x7ac2('0x8'));var _=require(_0x7ac2('0x9'));var squel=require(_0x7ac2('0xa'));var crypto=require(_0x7ac2('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7ac2('0xc'));var toCsv=require(_0x7ac2('0xd'));var querystring=require(_0x7ac2('0xe'));var Papa=require(_0x7ac2('0xf'));var Redis=require(_0x7ac2('0x10'));var authService=require(_0x7ac2('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7ac2('0x12'));var hardwareService=require(_0x7ac2('0x13'));var logger=require(_0x7ac2('0x14'))(_0x7ac2('0x15'));var utils=require(_0x7ac2('0x16'));var config=require(_0x7ac2('0x17'));var licenseUtil=require(_0x7ac2('0x18'));var db=require(_0x7ac2('0x19'))['db'];function respondWithStatusCode(_0x17a036,_0x49b61a){_0x49b61a=_0x49b61a||0xcc;return function(_0xa2925e){if(_0xa2925e){return _0x17a036[_0x7ac2('0x1a')](_0x49b61a);}return _0x17a036[_0x7ac2('0x1b')](_0x49b61a)[_0x7ac2('0x1c')]();};}function respondWithResult(_0x1a0a4e,_0x50763d){_0x50763d=_0x50763d||0xc8;return function(_0x3f5bda){if(_0x3f5bda){return _0x1a0a4e[_0x7ac2('0x1b')](_0x50763d)[_0x7ac2('0x1d')](_0x3f5bda);}};}function respondWithFilteredResult(_0xde92b9,_0x460fa3){return function(_0x3585cb){if(_0x3585cb){var _0xab57e3=typeof _0x460fa3[_0x7ac2('0x1e')]===_0x7ac2('0x1f')&&typeof _0x460fa3['limit']===_0x7ac2('0x1f');var _0x216fbc=_0x3585cb['count'];var _0x5767e8=_0xab57e3?0x0:_0x460fa3[_0x7ac2('0x1e')];var _0x4a856e=_0xab57e3?_0x3585cb[_0x7ac2('0x20')]:_0x460fa3[_0x7ac2('0x1e')]+_0x460fa3['limit'];var _0x3853ce;if(_0x4a856e>=_0x216fbc){_0x4a856e=_0x216fbc;_0x3853ce=0xc8;}else{_0x3853ce=0xce;}_0xde92b9[_0x7ac2('0x1b')](_0x3853ce);return _0xde92b9['set'](_0x7ac2('0x21'),_0x5767e8+'-'+_0x4a856e+'/'+_0x216fbc)[_0x7ac2('0x1d')](_0x3585cb);}return null;};}function patchUpdates(_0x1bd9b4){return function(_0x477710){try{jsonpatch[_0x7ac2('0x22')](_0x477710,_0x1bd9b4,!![]);}catch(_0x2a602e){return BPromise[_0x7ac2('0x23')](_0x2a602e);}return _0x477710[_0x7ac2('0x24')]();};}function saveUpdates(_0x418aac,_0x378b89){return function(_0x5124df){if(_0x5124df){return _0x5124df[_0x7ac2('0x25')](_0x418aac)[_0x7ac2('0x26')](function(_0x509fc2){return _0x509fc2;});}return null;};}function removeEntity(_0x1541e4,_0x482768){return function(_0x77c5dc){if(_0x77c5dc){return _0x77c5dc[_0x7ac2('0x27')]()['then'](function(){_0x1541e4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x53b300,_0xeae080){return function(_0x1c4ad2){if(!_0x1c4ad2){_0x53b300['sendStatus'](0x194);}return _0x1c4ad2;};}function handleError(_0x115dfc,_0x142023){_0x142023=_0x142023||0x1f4;return function(_0x551bec){logger[_0x7ac2('0x28')](_0x551bec['stack']);if(_0x551bec[_0x7ac2('0x29')]){delete _0x551bec[_0x7ac2('0x29')];}_0x115dfc[_0x7ac2('0x1b')](_0x142023)[_0x7ac2('0x2a')](_0x551bec);};}exports[_0x7ac2('0x2b')]=function(_0x5284fa,_0x4281e9){var _0x231cf8={},_0x4483e5={},_0x1965c2={'count':0x0,'rows':[]};var _0x4e2b64=_[_0x7ac2('0x2c')](db['IntegrationReport'][_0x7ac2('0x2d')],function(_0x4f8a1c){return{'name':_0x4f8a1c['fieldName'],'type':_0x4f8a1c[_0x7ac2('0x2e')][_0x7ac2('0x2f')]};});_0x4483e5[_0x7ac2('0x30')]=_['map'](_0x4e2b64,_0x7ac2('0x29'));_0x4483e5['query']=_['keys'](_0x5284fa['query']);_0x4483e5['filters']=_[_0x7ac2('0x31')](_0x4483e5['model'],_0x4483e5['query']);_0x231cf8[_0x7ac2('0x32')]=_['intersection'](_0x4483e5['model'],qs['fields'](_0x5284fa['query']['fields']));_0x231cf8[_0x7ac2('0x32')]=_0x231cf8[_0x7ac2('0x32')][_0x7ac2('0x33')]?_0x231cf8[_0x7ac2('0x32')]:_0x4483e5['model'];if(!_0x5284fa[_0x7ac2('0x34')][_0x7ac2('0x35')](_0x7ac2('0x36'))){_0x231cf8[_0x7ac2('0x37')]=qs['limit'](_0x5284fa[_0x7ac2('0x34')]['limit']);_0x231cf8[_0x7ac2('0x1e')]=qs[_0x7ac2('0x1e')](_0x5284fa[_0x7ac2('0x34')][_0x7ac2('0x1e')]);}_0x231cf8['order']=qs[_0x7ac2('0x38')](_0x5284fa['query'][_0x7ac2('0x38')]);_0x231cf8[_0x7ac2('0x39')]=qs[_0x7ac2('0x3a')](_[_0x7ac2('0x3b')](_0x5284fa[_0x7ac2('0x34')],_0x4483e5['filters']),_0x4e2b64);if(_0x5284fa[_0x7ac2('0x34')][_0x7ac2('0x3c')]){_0x231cf8[_0x7ac2('0x39')]=_[_0x7ac2('0x3d')](_0x231cf8[_0x7ac2('0x39')],{'$or':_[_0x7ac2('0x2c')](_0x4e2b64,function(_0x5ba22d){if(_0x5ba22d[_0x7ac2('0x2e')]!==_0x7ac2('0x3e')){var _0xf6f95e={};_0xf6f95e[_0x5ba22d['name']]={'$like':'%'+_0x5284fa['query'][_0x7ac2('0x3c')]+'%'};return _0xf6f95e;}})});}_0x231cf8=_[_0x7ac2('0x3d')]({},_0x231cf8,_0x5284fa['options']);var _0x3d2363={'where':_0x231cf8['where']};return db[_0x7ac2('0x3f')][_0x7ac2('0x20')](_0x3d2363)[_0x7ac2('0x26')](function(_0x2bf0c2){_0x1965c2[_0x7ac2('0x20')]=_0x2bf0c2;if(_0x5284fa[_0x7ac2('0x34')][_0x7ac2('0x40')]){_0x231cf8[_0x7ac2('0x41')]=[{'all':!![]}];}return db[_0x7ac2('0x3f')][_0x7ac2('0x42')](_0x231cf8);})[_0x7ac2('0x26')](function(_0x3e4180){_0x1965c2[_0x7ac2('0x43')]=_0x3e4180;return _0x1965c2;})['then'](respondWithFilteredResult(_0x4281e9,_0x231cf8))[_0x7ac2('0x44')](handleError(_0x4281e9,null));};exports['show']=function(_0x1f210d,_0x1dd242){var _0x168b2d={'raw':![],'where':{'id':_0x1f210d[_0x7ac2('0x45')]['id']}},_0x36c677={};_0x36c677[_0x7ac2('0x30')]=_[_0x7ac2('0x46')](db['IntegrationReport'][_0x7ac2('0x2d')]);_0x36c677['query']=_[_0x7ac2('0x46')](_0x1f210d[_0x7ac2('0x34')]);_0x36c677[_0x7ac2('0x3a')]=_['intersection'](_0x36c677[_0x7ac2('0x30')],_0x36c677[_0x7ac2('0x34')]);_0x168b2d[_0x7ac2('0x32')]=_[_0x7ac2('0x31')](_0x36c677[_0x7ac2('0x30')],qs['fields'](_0x1f210d['query']['fields']));_0x168b2d[_0x7ac2('0x32')]=_0x168b2d['attributes']['length']?_0x168b2d[_0x7ac2('0x32')]:_0x36c677[_0x7ac2('0x30')];if(_0x1f210d['query']['includeAll']){_0x168b2d[_0x7ac2('0x41')]=[{'all':!![]}];}_0x168b2d=_[_0x7ac2('0x3d')]({},_0x168b2d,_0x1f210d[_0x7ac2('0x47')]);return db[_0x7ac2('0x3f')]['find'](_0x168b2d)[_0x7ac2('0x26')](handleEntityNotFound(_0x1dd242,null))[_0x7ac2('0x26')](respondWithResult(_0x1dd242,null))[_0x7ac2('0x44')](handleError(_0x1dd242,null));};exports[_0x7ac2('0x48')]=function(_0x36e33c,_0x17a0c5){return db[_0x7ac2('0x3f')][_0x7ac2('0x48')](_0x36e33c['body'],{})[_0x7ac2('0x26')](respondWithResult(_0x17a0c5,0xc9))[_0x7ac2('0x44')](handleError(_0x17a0c5,null));};exports[_0x7ac2('0x25')]=function(_0x24145e,_0x2bb94a){if(_0x24145e[_0x7ac2('0x49')]['id']){delete _0x24145e[_0x7ac2('0x49')]['id'];}return db[_0x7ac2('0x3f')][_0x7ac2('0x4a')]({'where':{'id':_0x24145e[_0x7ac2('0x45')]['id']}})[_0x7ac2('0x26')](handleEntityNotFound(_0x2bb94a,null))[_0x7ac2('0x26')](saveUpdates(_0x24145e[_0x7ac2('0x49')],null))[_0x7ac2('0x26')](respondWithResult(_0x2bb94a,null))[_0x7ac2('0x44')](handleError(_0x2bb94a,null));};exports[_0x7ac2('0x27')]=function(_0x5a5f44,_0x5f52b5){return db['IntegrationReport'][_0x7ac2('0x4a')]({'where':{'id':_0x5a5f44['params']['id']}})[_0x7ac2('0x26')](handleEntityNotFound(_0x5f52b5,null))[_0x7ac2('0x26')](removeEntity(_0x5f52b5,null))['catch'](handleError(_0x5f52b5,null));};exports[_0x7ac2('0x4b')]=function(_0x3c5524,_0x51790d){return db['IntegrationReport'][_0x7ac2('0x4b')]()[_0x7ac2('0x26')](respondWithResult(_0x51790d,null))[_0x7ac2('0x44')](handleError(_0x51790d,null));};
\ No newline at end of file
index bb9c6b1..778da72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf89=['report_integration','lodash','util','../../config/logger','api','moment','bluebird','rimraf','./integrationReport.attributes','exports'];(function(_0xd90097,_0x59ee76){var _0x570239=function(_0x2606d2){while(--_0x2606d2){_0xd90097['push'](_0xd90097['shift']());}};_0x570239(++_0x59ee76);}(_0xcf89,0xbf));var _0x9cf8=function(_0x396ebb,_0x31fce6){_0x396ebb=_0x396ebb-0x0;var _0x27720f=_0xcf89[_0x396ebb];return _0x27720f;};'use strict';var _=require(_0x9cf8('0x0'));var util=require(_0x9cf8('0x1'));var logger=require(_0x9cf8('0x2'))(_0x9cf8('0x3'));var moment=require(_0x9cf8('0x4'));var BPromise=require(_0x9cf8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9cf8('0x6'));var config=require('../../config/environment');var attributes=require(_0x9cf8('0x7'));module[_0x9cf8('0x8')]=function(_0x1814a5,_0x1d295f){return _0x1814a5['define']('IntegrationReport',attributes,{'tableName':_0x9cf8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x414f=['request-promise','path','rimraf','../../config/environment','exports','define','IntegrationReport','lodash','util','api','moment','bluebird'];(function(_0x2b0690,_0x9b49a6){var _0x3826f5=function(_0x1b17cc){while(--_0x1b17cc){_0x2b0690['push'](_0x2b0690['shift']());}};_0x3826f5(++_0x9b49a6);}(_0x414f,0xd3));var _0xf414=function(_0x25662e,_0x4cec68){_0x25662e=_0x25662e-0x0;var _0x59b7bc=_0x414f[_0x25662e];return _0x59b7bc;};'use strict';var _=require(_0xf414('0x0'));var util=require(_0xf414('0x1'));var logger=require('../../config/logger')(_0xf414('0x2'));var moment=require(_0xf414('0x3'));var BPromise=require(_0xf414('0x4'));var rp=require(_0xf414('0x5'));var fs=require('fs');var path=require(_0xf414('0x6'));var rimraf=require(_0xf414('0x7'));var config=require(_0xf414('0x8'));var attributes=require('./integrationReport.attributes');module[_0xf414('0x9')]=function(_0x2abaf3,_0x32fe13){return _0x2abaf3[_0xf414('0xa')](_0xf414('0xb'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c2c88e8..e173296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['info','IntegrationReport,\x20%s,\x20%s','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x5205ab,_0x9c6aed){var _0x226ed2=function(_0x483332){while(--_0x483332){_0x5205ab['push'](_0x5205ab['shift']());}};_0x226ed2(++_0x9c6aed);}(_0x2542,0x169));var _0x2254=function(_0x40230c,_0x3b8944){_0x40230c=_0x40230c-0x0;var _0x1af540=_0x2542[_0x40230c];return _0x1af540;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var moment=require(_0x2254('0x2'));var BPromise=require(_0x2254('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2254('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2254('0x5'));var logger=require(_0x2254('0x6'))(_0x2254('0x7'));var config=require(_0x2254('0x8'));var jayson=require(_0x2254('0x9'));var client=jayson['client'][_0x2254('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe8ca50,_0x2ee7ee,_0x3c45ec){return new BPromise(function(_0x1637ad,_0x477b47){return client[_0x2254('0xb')](_0xe8ca50,_0x3c45ec)[_0x2254('0xc')](function(_0xb395da){logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,'request\x20sent');logger[_0x2254('0xf')](_0x2254('0x10'),_0x2ee7ee,_0x2254('0x11'),JSON[_0x2254('0x12')](_0xb395da));if(_0xb395da['error']){if(_0xb395da['error'][_0x2254('0x13')]===0x1f4){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);return _0x477b47(_0xb395da[_0x2254('0x14')]['message']);}logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da['error'][_0x2254('0x15')]);return _0x1637ad(_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);}else{logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,_0x2254('0x11'));_0x1637ad(_0xb395da['result'][_0x2254('0x15')]);}})['catch'](function(_0x327d6d){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0x327d6d);_0x477b47(_0x327d6d);});});}
\ No newline at end of file
+var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','IntegrationReport,\x20%s,\x20%s','IntegrationReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x2881e2,_0x341293){var _0x5c1e1f=function(_0x10ba61){while(--_0x10ba61){_0x2881e2['push'](_0x2881e2['shift']());}};_0x5c1e1f(++_0x341293);}(_0x2ef3,0xba));var _0x32ef=function(_0x21f5aa,_0x184cd1){_0x21f5aa=_0x21f5aa-0x0;var _0x418585=_0x2ef3[_0x21f5aa];return _0x418585;};'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')]('IntegrationReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('IntegrationReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
index db91523..d97d9d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96fd=['../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0xf29843,_0x386cc5){var _0x2a8b16=function(_0x4cb9ca){while(--_0x4cb9ca){_0xf29843['push'](_0xf29843['shift']());}};_0x2a8b16(++_0x386cc5);}(_0x96fd,0x1e9));var _0xd96f=function(_0x4fe5ad,_0x4a889e){_0x4fe5ad=_0x4fe5ad-0x0;var _0x182629=_0x96fd[_0x4fe5ad];return _0x182629;};'use strict';var multer=require('multer');var util=require(_0xd96f('0x0'));var path=require('path');var timeout=require(_0xd96f('0x1'));var express=require(_0xd96f('0x2'));var router=express['Router']();var fs_extra=require(_0xd96f('0x3'));var auth=require(_0xd96f('0x4'));var interaction=require(_0xd96f('0x5'));var config=require(_0xd96f('0x6'));var controller=require('./interval.controller');router[_0xd96f('0x7')]('/',auth[_0xd96f('0x8')](),controller['index']);router[_0xd96f('0x7')](_0xd96f('0x9'),auth[_0xd96f('0x8')](),controller[_0xd96f('0xa')]);router[_0xd96f('0x7')](_0xd96f('0xb'),auth[_0xd96f('0x8')](),controller[_0xd96f('0xc')]);router[_0xd96f('0xd')]('/',auth[_0xd96f('0x8')](),controller[_0xd96f('0xe')]);router[_0xd96f('0xd')](_0xd96f('0xb'),auth[_0xd96f('0x8')](),controller[_0xd96f('0xf')]);router[_0xd96f('0xd')](_0xd96f('0x10'),auth[_0xd96f('0x8')](),controller['addIntervals']);router['put'](_0xd96f('0x9'),auth[_0xd96f('0x8')](),controller['update']);router['delete'](_0xd96f('0x9'),auth[_0xd96f('0x8')](),controller[_0xd96f('0x11')]);module[_0xd96f('0x12')]=router;
\ No newline at end of file
+var _0xa29a=['/:id/sub_intervals','getIntervals','create','post','addInterval','/:id/sub_intervals/create_many','addIntervals','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./interval.controller','get','index','/:id','isAuthenticated','show'];(function(_0x57c540,_0x3bb8fd){var _0x272959=function(_0x5550c7){while(--_0x5550c7){_0x57c540['push'](_0x57c540['shift']());}};_0x272959(++_0x3bb8fd);}(_0xa29a,0x1ee));var _0xaa29=function(_0x54b931,_0x162050){_0x54b931=_0x54b931-0x0;var _0xca41df=_0xa29a[_0x54b931];return _0xca41df;};'use strict';var multer=require(_0xaa29('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaa29('0x1'));var express=require(_0xaa29('0x2'));var router=express[_0xaa29('0x3')]();var fs_extra=require(_0xaa29('0x4'));var auth=require(_0xaa29('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xaa29('0x6'));router[_0xaa29('0x7')]('/',auth['isAuthenticated'](),controller[_0xaa29('0x8')]);router[_0xaa29('0x7')](_0xaa29('0x9'),auth[_0xaa29('0xa')](),controller[_0xaa29('0xb')]);router[_0xaa29('0x7')](_0xaa29('0xc'),auth[_0xaa29('0xa')](),controller[_0xaa29('0xd')]);router['post']('/',auth[_0xaa29('0xa')](),controller[_0xaa29('0xe')]);router[_0xaa29('0xf')]('/:id/sub_intervals',auth[_0xaa29('0xa')](),controller[_0xaa29('0x10')]);router[_0xaa29('0xf')](_0xaa29('0x11'),auth['isAuthenticated'](),controller[_0xaa29('0x12')]);router['put']('/:id',auth[_0xaa29('0xa')](),controller['update']);router[_0xaa29('0x13')](_0xaa29('0x9'),auth[_0xaa29('0xa')](),controller[_0xaa29('0x14')]);module[_0xaa29('0x15')]=router;
\ No newline at end of file
index 9cc8d79..a29c0f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12ba=['STRING','exports'];(function(_0x3e3605,_0x1f455c){var _0x4c0eb3=function(_0x23f03a){while(--_0x23f03a){_0x3e3605['push'](_0x3e3605['shift']());}};_0x4c0eb3(++_0x1f455c);}(_0x12ba,0x159));var _0xa12b=function(_0xb6247f,_0x1be91e){_0xb6247f=_0xb6247f-0x0;var _0x5afc24=_0x12ba[_0xb6247f];return _0x5afc24;};'use strict';var Sequelize=require('sequelize');module[_0xa12b('0x0')]={'name':{'type':Sequelize[_0xa12b('0x1')]},'description':{'type':Sequelize[_0xa12b('0x1')]},'interval':{'type':Sequelize[_0xa12b('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x3d40=['STRING','sequelize'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x3d40,0xcb));var _0x03d4=function(_0x3eb52d,_0x1bf13e){_0x3eb52d=_0x3eb52d-0x0;var _0x2d748c=_0x3d40[_0x3eb52d];return _0x2d748c;};'use strict';var Sequelize=require(_0x03d4('0x0'));module['exports']={'name':{'type':Sequelize[_0x03d4('0x1')]},'description':{'type':Sequelize[_0x03d4('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 9b54a44..fd89383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a1e=['ejs','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','destroy','then','get','UserProfileResource','error','stack','name','send','index','map','Interval','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','include','catch','show','params','keys','rawAttributes','filters','includeAll','create','user','role','Intervals','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','IntervalId','findOne','getIntervals','addIntervals','bulkCreate','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','to-csv'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5a1e,0x191));var _0xe5a1=function(_0xeb9ff0,_0x26e7ea){_0xeb9ff0=_0xeb9ff0-0x0;var _0x6698f3=_0x5a1e[_0xeb9ff0];return _0x6698f3;};'use strict';var emlformat=require(_0xe5a1('0x0'));var rimraf=require(_0xe5a1('0x1'));var zipdir=require(_0xe5a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe5a1('0x3'));var moment=require(_0xe5a1('0x4'));var BPromise=require(_0xe5a1('0x5'));var Mustache=require('mustache');var util=require(_0xe5a1('0x6'));var path=require(_0xe5a1('0x7'));var sox=require('sox');var csv=require(_0xe5a1('0x8'));var ejs=require(_0xe5a1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xe5a1('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xe5a1('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe5a1('0xc'));var Redis=require('ioredis');var authService=require(_0xe5a1('0xd'));var qs=require(_0xe5a1('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe5a1('0xf'));var logger=require(_0xe5a1('0x10'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe5a1('0x11'));var db=require(_0xe5a1('0x12'))['db'];var extensions=require(_0xe5a1('0x13'));function respondWithStatusCode(_0x3c2e85,_0x546d9d){_0x546d9d=_0x546d9d||0xcc;return function(_0x445b01){if(_0x445b01){return _0x3c2e85[_0xe5a1('0x14')](_0x546d9d);}return _0x3c2e85[_0xe5a1('0x15')](_0x546d9d)[_0xe5a1('0x16')]();};}function respondWithResult(_0x5deab5,_0x58f314){_0x58f314=_0x58f314||0xc8;return function(_0x3a98a7){if(_0x3a98a7){return _0x5deab5[_0xe5a1('0x15')](_0x58f314)['json'](_0x3a98a7);}};}function respondWithFilteredResult(_0x3a414c,_0x212dfd){return function(_0x40e339){if(_0x40e339){var _0x302ae1=typeof _0x212dfd[_0xe5a1('0x17')]==='undefined'&&typeof _0x212dfd['limit']===_0xe5a1('0x18');var _0x16310f=_0x40e339[_0xe5a1('0x19')];var _0x1cf8d5=_0x302ae1?0x0:_0x212dfd[_0xe5a1('0x17')];var _0x4c8ea6=_0x302ae1?_0x40e339['count']:_0x212dfd[_0xe5a1('0x17')]+_0x212dfd[_0xe5a1('0x1a')];var _0x2ae276;if(_0x4c8ea6>=_0x16310f){_0x4c8ea6=_0x16310f;_0x2ae276=0xc8;}else{_0x2ae276=0xce;}_0x3a414c['status'](_0x2ae276);return _0x3a414c[_0xe5a1('0x1b')](_0xe5a1('0x1c'),_0x1cf8d5+'-'+_0x4c8ea6+'/'+_0x16310f)[_0xe5a1('0x1d')](_0x40e339);}return null;};}function patchUpdates(_0x503ae8){return function(_0x4281f0){try{jsonpatch['apply'](_0x4281f0,_0x503ae8,!![]);}catch(_0x10b197){return BPromise[_0xe5a1('0x1e')](_0x10b197);}return _0x4281f0[_0xe5a1('0x1f')]();};}function saveUpdates(_0x535ff3,_0x5be321){return function(_0x56be99){if(_0x56be99){return _0x56be99[_0xe5a1('0x20')](_0x535ff3)['then'](function(_0x23bc3e){return _0x23bc3e;});}return null;};}function removeEntity(_0x530dd2,_0x353957){return function(_0x3bb480){if(_0x3bb480){return _0x3bb480[_0xe5a1('0x21')]()[_0xe5a1('0x22')](function(){var _0x21b75d=_0x3bb480[_0xe5a1('0x23')]({'plain':!![]});var _0x5f3065='Intervals';return db[_0xe5a1('0x24')][_0xe5a1('0x21')]({'where':{'type':_0x5f3065,'resourceId':_0x21b75d['id']}})[_0xe5a1('0x22')](function(){return _0x3bb480;});})[_0xe5a1('0x22')](function(){_0x530dd2[_0xe5a1('0x15')](0xcc)[_0xe5a1('0x16')]();});}};}function handleEntityNotFound(_0x1f1412,_0x19f4d8){return function(_0x1f0edb){if(!_0x1f0edb){_0x1f1412[_0xe5a1('0x14')](0x194);}return _0x1f0edb;};}function handleError(_0x202031,_0x26f42a){_0x26f42a=_0x26f42a||0x1f4;return function(_0x4836cb){logger[_0xe5a1('0x25')](_0x4836cb[_0xe5a1('0x26')]);if(_0x4836cb[_0xe5a1('0x27')]){delete _0x4836cb['name'];}_0x202031['status'](_0x26f42a)[_0xe5a1('0x28')](_0x4836cb);};}exports[_0xe5a1('0x29')]=function(_0x22796d,_0x6e74b8){var _0xff64b9={},_0x283c1b={},_0xe8681f={'count':0x0,'rows':[]};var _0x45a9e2=_[_0xe5a1('0x2a')](db[_0xe5a1('0x2b')]['rawAttributes'],function(_0x15638b){return{'name':_0x15638b[_0xe5a1('0x2c')],'type':_0x15638b[_0xe5a1('0x2d')][_0xe5a1('0x2e')]};});_0x283c1b[_0xe5a1('0x2f')]=_['map'](_0x45a9e2,_0xe5a1('0x27'));_0x283c1b[_0xe5a1('0x30')]=_['keys'](_0x22796d['query']);_0x283c1b['filters']=_[_0xe5a1('0x31')](_0x283c1b[_0xe5a1('0x2f')],_0x283c1b[_0xe5a1('0x30')]);_0xff64b9[_0xe5a1('0x32')]=_[_0xe5a1('0x31')](_0x283c1b[_0xe5a1('0x2f')],qs[_0xe5a1('0x33')](_0x22796d['query'][_0xe5a1('0x33')]));_0xff64b9['attributes']=_0xff64b9[_0xe5a1('0x32')][_0xe5a1('0x34')]?_0xff64b9['attributes']:_0x283c1b['model'];if(!_0x22796d[_0xe5a1('0x30')][_0xe5a1('0x35')](_0xe5a1('0x36'))){_0xff64b9[_0xe5a1('0x1a')]=qs[_0xe5a1('0x1a')](_0x22796d[_0xe5a1('0x30')]['limit']);_0xff64b9[_0xe5a1('0x17')]=qs[_0xe5a1('0x17')](_0x22796d[_0xe5a1('0x30')][_0xe5a1('0x17')]);}_0xff64b9['order']=qs['sort'](_0x22796d[_0xe5a1('0x30')][_0xe5a1('0x37')]);_0xff64b9[_0xe5a1('0x38')]=qs['filters'](_[_0xe5a1('0x39')](_0x22796d[_0xe5a1('0x30')],_0x283c1b['filters']),_0x45a9e2);if(_0x22796d[_0xe5a1('0x30')][_0xe5a1('0x3a')]){_0xff64b9[_0xe5a1('0x38')]=_['merge'](_0xff64b9[_0xe5a1('0x38')],{'$or':_['map'](_0x45a9e2,function(_0xb9abd1){if(_0xb9abd1[_0xe5a1('0x2d')]!=='VIRTUAL'){var _0x7b1568={};_0x7b1568[_0xb9abd1[_0xe5a1('0x27')]]={'$like':'%'+_0x22796d[_0xe5a1('0x30')][_0xe5a1('0x3a')]+'%'};return _0x7b1568;}})});}_0xff64b9=_[_0xe5a1('0x3b')]({},_0xff64b9,_0x22796d[_0xe5a1('0x3c')]);var _0x71082a={'where':_0xff64b9['where']};return db['Interval'][_0xe5a1('0x19')](_0x71082a)[_0xe5a1('0x22')](function(_0x23bd1a){_0xe8681f[_0xe5a1('0x19')]=_0x23bd1a;if(_0x22796d[_0xe5a1('0x30')]['includeAll']){_0xff64b9[_0xe5a1('0x3d')]=[{'all':!![]}];}return db['Interval']['findAll'](_0xff64b9);})['then'](function(_0x466bb6){_0xe8681f['rows']=_0x466bb6;return _0xe8681f;})[_0xe5a1('0x22')](respondWithFilteredResult(_0x6e74b8,_0xff64b9))[_0xe5a1('0x3e')](handleError(_0x6e74b8,null));};exports[_0xe5a1('0x3f')]=function(_0x578a93,_0x3a5d57){var _0x5ad4a7={'raw':!![],'where':{'id':_0x578a93[_0xe5a1('0x40')]['id']}},_0x4146e7={};_0x4146e7[_0xe5a1('0x2f')]=_[_0xe5a1('0x41')](db['Interval'][_0xe5a1('0x42')]);_0x4146e7[_0xe5a1('0x30')]=_['keys'](_0x578a93[_0xe5a1('0x30')]);_0x4146e7[_0xe5a1('0x43')]=_[_0xe5a1('0x31')](_0x4146e7[_0xe5a1('0x2f')],_0x4146e7['query']);_0x5ad4a7[_0xe5a1('0x32')]=_[_0xe5a1('0x31')](_0x4146e7['model'],qs[_0xe5a1('0x33')](_0x578a93[_0xe5a1('0x30')][_0xe5a1('0x33')]));_0x5ad4a7[_0xe5a1('0x32')]=_0x5ad4a7[_0xe5a1('0x32')]['length']?_0x5ad4a7[_0xe5a1('0x32')]:_0x4146e7[_0xe5a1('0x2f')];if(_0x578a93[_0xe5a1('0x30')][_0xe5a1('0x44')]){_0x5ad4a7[_0xe5a1('0x3d')]=[{'all':!![]}];}_0x5ad4a7=_[_0xe5a1('0x3b')]({},_0x5ad4a7,_0x578a93['options']);return db[_0xe5a1('0x2b')]['find'](_0x5ad4a7)[_0xe5a1('0x22')](handleEntityNotFound(_0x3a5d57,null))[_0xe5a1('0x22')](respondWithResult(_0x3a5d57,null))[_0xe5a1('0x3e')](handleError(_0x3a5d57,null));};exports[_0xe5a1('0x45')]=function(_0x7a0819,_0x2be5ad){return db[_0xe5a1('0x2b')]['create'](_0x7a0819['body'],{})[_0xe5a1('0x22')](function(_0x1ad4db){var _0x1f1f80=_0x7a0819[_0xe5a1('0x46')][_0xe5a1('0x23')]({'plain':!![]});if(!_0x1f1f80)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f1f80[_0xe5a1('0x47')]===_0xe5a1('0x46')){var _0x55ddec=_0x1ad4db[_0xe5a1('0x23')]({'plain':!![]});var _0x44fe92=_0xe5a1('0x48');return db['UserProfileSection'][_0xe5a1('0x49')]({'where':{'name':_0x44fe92,'userProfileId':_0x1f1f80[_0xe5a1('0x4a')]},'raw':!![]})[_0xe5a1('0x22')](function(_0x453bd8){if(_0x453bd8&&_0x453bd8['autoAssociation']===0x0){return db[_0xe5a1('0x24')][_0xe5a1('0x45')]({'name':_0x55ddec['name'],'resourceId':_0x55ddec['id'],'type':_0x453bd8[_0xe5a1('0x27')],'sectionId':_0x453bd8['id']},{})[_0xe5a1('0x22')](function(){return _0x1ad4db;});}else{return _0x1ad4db;}})[_0xe5a1('0x3e')](function(_0x59f194){logger['error'](_0xe5a1('0x4b'),_0x59f194);throw _0x59f194;});}return _0x1ad4db;})[_0xe5a1('0x22')](respondWithResult(_0x2be5ad,0xc9))[_0xe5a1('0x3e')](handleError(_0x2be5ad,null));};exports['update']=function(_0xccf17a,_0x5663e7){if(_0xccf17a[_0xe5a1('0x4c')]['id']){delete _0xccf17a[_0xe5a1('0x4c')]['id'];}return db[_0xe5a1('0x2b')][_0xe5a1('0x49')]({'where':{'id':_0xccf17a['params']['id']}})[_0xe5a1('0x22')](handleEntityNotFound(_0x5663e7,null))['then'](saveUpdates(_0xccf17a[_0xe5a1('0x4c')],null))['then'](respondWithResult(_0x5663e7,null))['catch'](handleError(_0x5663e7,null));};exports[_0xe5a1('0x21')]=function(_0xc12ffa,_0xfd815f){return db[_0xe5a1('0x2b')][_0xe5a1('0x49')]({'where':{'id':_0xc12ffa['params']['id']}})[_0xe5a1('0x22')](handleEntityNotFound(_0xfd815f,null))['then'](removeEntity(_0xfd815f,null))[_0xe5a1('0x3e')](handleError(_0xfd815f,null));};exports['addInterval']=function(_0x4fa0c2,_0x1c31eb,_0x3ab26d){if(_0x4fa0c2[_0xe5a1('0x4c')]['id']){delete _0x4fa0c2[_0xe5a1('0x4c')]['id'];}return db[_0xe5a1('0x2b')]['find']({'where':{'id':_0x4fa0c2[_0xe5a1('0x40')]['id']}})['then'](handleEntityNotFound(_0x1c31eb,null))[_0xe5a1('0x22')](function(_0x377811){if(_0x377811){_0x4fa0c2[_0xe5a1('0x4c')][_0xe5a1('0x4d')]=_0x377811['id'];return db[_0xe5a1('0x2b')][_0xe5a1('0x45')](_0x4fa0c2['body']);}})['then'](respondWithResult(_0x1c31eb,null))[_0xe5a1('0x3e')](handleError(_0x1c31eb,null));};exports['getIntervals']=function(_0x913cc4,_0x5e3bcd,_0x4c2364){var _0x3185c5={};var _0x5cfe54={};var _0x5d18e2;var _0x435c18;return db['Interval'][_0xe5a1('0x4e')]({'where':{'id':_0x913cc4[_0xe5a1('0x40')]['id']}})['then'](handleEntityNotFound(_0x5e3bcd,null))[_0xe5a1('0x22')](function(_0x4f30b6){if(_0x4f30b6){_0x5d18e2=_0x4f30b6;_0x5cfe54[_0xe5a1('0x2f')]=_['keys'](db['Interval']['rawAttributes']);_0x5cfe54['query']=_[_0xe5a1('0x41')](_0x913cc4['query']);_0x5cfe54[_0xe5a1('0x43')]=_[_0xe5a1('0x31')](_0x5cfe54['model'],_0x5cfe54[_0xe5a1('0x30')]);_0x3185c5['attributes']=_['intersection'](_0x5cfe54[_0xe5a1('0x2f')],qs['fields'](_0x913cc4[_0xe5a1('0x30')][_0xe5a1('0x33')]));_0x3185c5[_0xe5a1('0x32')]=_0x3185c5['attributes'][_0xe5a1('0x34')]?_0x3185c5[_0xe5a1('0x32')]:_0x5cfe54[_0xe5a1('0x2f')];_0x3185c5['order']=qs['sort'](_0x913cc4['query']['sort']);_0x3185c5[_0xe5a1('0x38')]=qs[_0xe5a1('0x43')](_[_0xe5a1('0x39')](_0x913cc4[_0xe5a1('0x30')],_0x5cfe54['filters']));if(_0x913cc4[_0xe5a1('0x30')]['filter']){_0x3185c5[_0xe5a1('0x38')]=_[_0xe5a1('0x3b')](_0x3185c5[_0xe5a1('0x38')],{'$or':_[_0xe5a1('0x2a')](_0x3185c5['attributes'],function(_0x1a95d2){var _0x45bb34={};_0x45bb34[_0x1a95d2]={'$like':'%'+_0x913cc4['query'][_0xe5a1('0x3a')]+'%'};return _0x45bb34;})});}_0x3185c5=_[_0xe5a1('0x3b')]({},_0x3185c5,_0x913cc4[_0xe5a1('0x3c')]);return _0x5d18e2[_0xe5a1('0x4f')](_0x3185c5);}})[_0xe5a1('0x22')](function(_0x3e35b1){if(_0x3e35b1){_0x435c18=_0x3e35b1[_0xe5a1('0x34')];if(!_0x913cc4[_0xe5a1('0x30')][_0xe5a1('0x35')](_0xe5a1('0x36'))){_0x3185c5[_0xe5a1('0x1a')]=qs['limit'](_0x913cc4[_0xe5a1('0x30')][_0xe5a1('0x1a')]);_0x3185c5[_0xe5a1('0x17')]=qs['offset'](_0x913cc4['query'][_0xe5a1('0x17')]);}return _0x5d18e2[_0xe5a1('0x4f')](_0x3185c5);}})[_0xe5a1('0x22')](function(_0x507eaf){if(_0x507eaf){return _0x507eaf?{'count':_0x435c18,'rows':_0x507eaf}:null;}})['then'](respondWithResult(_0x5e3bcd,null))['catch'](handleError(_0x5e3bcd,null));};exports[_0xe5a1('0x50')]=function(_0x5b858c,_0x42ca3c,_0x15c43c){return db[_0xe5a1('0x2b')][_0xe5a1('0x4e')]({'where':{'id':_0x5b858c[_0xe5a1('0x40')]['id']}})[_0xe5a1('0x22')](handleEntityNotFound(_0x42ca3c,null))['then'](function(_0x10c1b7){if(_0x10c1b7){return db['sequelize']['transaction'](function(_0x252e9e){return db['Interval']['destroy']({'where':{'IntervalId':_0x5b858c[_0xe5a1('0x40')]['id']},'transaction':_0x252e9e})[_0xe5a1('0x22')](function(_0x454e36){var _0x5775b0=_[_0xe5a1('0x2a')](_0x5b858c[_0xe5a1('0x4c')],function(_0x298c54){delete _0x298c54['id'];_0x298c54['IntervalId']=_0x5b858c['params']['id'];return _0x298c54;});return db[_0xe5a1('0x2b')][_0xe5a1('0x51')](_0x5775b0,{'transaction':_0x252e9e});});})[_0xe5a1('0x22')](function(){return db['Interval']['findAll']({'where':{'IntervalId':_0x5b858c[_0xe5a1('0x40')]['id']}});});}})[_0xe5a1('0x22')](respondWithResult(_0x42ca3c,null))[_0xe5a1('0x3e')](handleError(_0x42ca3c,null));};
\ No newline at end of file
+var _0x8cba=['then','destroy','get','Intervals','UserProfileResource','stack','name','send','index','map','Interval','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','length','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','addInterval','IntervalId','getIntervals','order','filter','addIntervals','findOne','sequelize','transaction','bulkCreate','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','ejs','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update'];(function(_0x3161d5,_0x11a27f){var _0x147680=function(_0x27d4d9){while(--_0x27d4d9){_0x3161d5['push'](_0x3161d5['shift']());}};_0x147680(++_0x11a27f);}(_0x8cba,0x154));var _0xa8cb=function(_0x448bab,_0x25517b){_0x448bab=_0x448bab-0x0;var _0x5dc534=_0x8cba[_0x448bab];return _0x5dc534;};'use strict';var emlformat=require(_0xa8cb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa8cb('0x1'));var jsonpatch=require(_0xa8cb('0x2'));var rp=require(_0xa8cb('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa8cb('0x4'));var util=require('util');var path=require(_0xa8cb('0x5'));var sox=require(_0xa8cb('0x6'));var csv=require('to-csv');var ejs=require(_0xa8cb('0x7'));var fs=require('fs');var fs_extra=require(_0xa8cb('0x8'));var _=require('lodash');var squel=require(_0xa8cb('0x9'));var crypto=require(_0xa8cb('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa8cb('0xb'));var Papa=require(_0xa8cb('0xc'));var Redis=require('ioredis');var authService=require(_0xa8cb('0xd'));var qs=require(_0xa8cb('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8cb('0xf'));var logger=require(_0xa8cb('0x10'))(_0xa8cb('0x11'));var utils=require(_0xa8cb('0x12'));var config=require(_0xa8cb('0x13'));var licenseUtil=require(_0xa8cb('0x14'));var db=require(_0xa8cb('0x15'))['db'];var extensions=require(_0xa8cb('0x16'));function respondWithStatusCode(_0x125fdb,_0x15b790){_0x15b790=_0x15b790||0xcc;return function(_0x1826fe){if(_0x1826fe){return _0x125fdb[_0xa8cb('0x17')](_0x15b790);}return _0x125fdb[_0xa8cb('0x18')](_0x15b790)[_0xa8cb('0x19')]();};}function respondWithResult(_0x114257,_0x39ee7c){_0x39ee7c=_0x39ee7c||0xc8;return function(_0x3ee9fb){if(_0x3ee9fb){return _0x114257[_0xa8cb('0x18')](_0x39ee7c)[_0xa8cb('0x1a')](_0x3ee9fb);}};}function respondWithFilteredResult(_0x1f2db0,_0x2bc39f){return function(_0x4fb0ee){if(_0x4fb0ee){var _0x333d42=typeof _0x2bc39f[_0xa8cb('0x1b')]===_0xa8cb('0x1c')&&typeof _0x2bc39f[_0xa8cb('0x1d')]==='undefined';var _0x14a2af=_0x4fb0ee[_0xa8cb('0x1e')];var _0x5d9a92=_0x333d42?0x0:_0x2bc39f[_0xa8cb('0x1b')];var _0x9411e6=_0x333d42?_0x4fb0ee['count']:_0x2bc39f[_0xa8cb('0x1b')]+_0x2bc39f[_0xa8cb('0x1d')];var _0x5ef63d;if(_0x9411e6>=_0x14a2af){_0x9411e6=_0x14a2af;_0x5ef63d=0xc8;}else{_0x5ef63d=0xce;}_0x1f2db0[_0xa8cb('0x18')](_0x5ef63d);return _0x1f2db0[_0xa8cb('0x1f')]('Content-Range',_0x5d9a92+'-'+_0x9411e6+'/'+_0x14a2af)[_0xa8cb('0x1a')](_0x4fb0ee);}return null;};}function patchUpdates(_0x344100){return function(_0x2403ee){try{jsonpatch[_0xa8cb('0x20')](_0x2403ee,_0x344100,!![]);}catch(_0x1eafd3){return BPromise[_0xa8cb('0x21')](_0x1eafd3);}return _0x2403ee[_0xa8cb('0x22')]();};}function saveUpdates(_0x7eeba6,_0x39d329){return function(_0x5ad771){if(_0x5ad771){return _0x5ad771[_0xa8cb('0x23')](_0x7eeba6)[_0xa8cb('0x24')](function(_0x3cf74c){return _0x3cf74c;});}return null;};}function removeEntity(_0x161dce,_0x5ddf82){return function(_0x69fb0d){if(_0x69fb0d){return _0x69fb0d[_0xa8cb('0x25')]()[_0xa8cb('0x24')](function(){var _0x444aa9=_0x69fb0d[_0xa8cb('0x26')]({'plain':!![]});var _0x2b45fe=_0xa8cb('0x27');return db[_0xa8cb('0x28')][_0xa8cb('0x25')]({'where':{'type':_0x2b45fe,'resourceId':_0x444aa9['id']}})[_0xa8cb('0x24')](function(){return _0x69fb0d;});})[_0xa8cb('0x24')](function(){_0x161dce[_0xa8cb('0x18')](0xcc)[_0xa8cb('0x19')]();});}};}function handleEntityNotFound(_0x16909f,_0x416ed0){return function(_0x269270){if(!_0x269270){_0x16909f[_0xa8cb('0x17')](0x194);}return _0x269270;};}function handleError(_0x28d143,_0x50a5f0){_0x50a5f0=_0x50a5f0||0x1f4;return function(_0x1fc920){logger['error'](_0x1fc920[_0xa8cb('0x29')]);if(_0x1fc920[_0xa8cb('0x2a')]){delete _0x1fc920[_0xa8cb('0x2a')];}_0x28d143[_0xa8cb('0x18')](_0x50a5f0)[_0xa8cb('0x2b')](_0x1fc920);};}exports[_0xa8cb('0x2c')]=function(_0x469269,_0x1cb9fe){var _0x24bdc1={},_0x332fd5={},_0x3b778c={'count':0x0,'rows':[]};var _0x247ac4=_[_0xa8cb('0x2d')](db[_0xa8cb('0x2e')][_0xa8cb('0x2f')],function(_0x1421e0){return{'name':_0x1421e0[_0xa8cb('0x30')],'type':_0x1421e0[_0xa8cb('0x31')][_0xa8cb('0x32')]};});_0x332fd5[_0xa8cb('0x33')]=_[_0xa8cb('0x2d')](_0x247ac4,'name');_0x332fd5[_0xa8cb('0x34')]=_['keys'](_0x469269[_0xa8cb('0x34')]);_0x332fd5['filters']=_[_0xa8cb('0x35')](_0x332fd5[_0xa8cb('0x33')],_0x332fd5[_0xa8cb('0x34')]);_0x24bdc1['attributes']=_['intersection'](_0x332fd5[_0xa8cb('0x33')],qs[_0xa8cb('0x36')](_0x469269[_0xa8cb('0x34')][_0xa8cb('0x36')]));_0x24bdc1[_0xa8cb('0x37')]=_0x24bdc1[_0xa8cb('0x37')]['length']?_0x24bdc1[_0xa8cb('0x37')]:_0x332fd5[_0xa8cb('0x33')];if(!_0x469269[_0xa8cb('0x34')][_0xa8cb('0x38')](_0xa8cb('0x39'))){_0x24bdc1[_0xa8cb('0x1d')]=qs[_0xa8cb('0x1d')](_0x469269['query'][_0xa8cb('0x1d')]);_0x24bdc1[_0xa8cb('0x1b')]=qs[_0xa8cb('0x1b')](_0x469269[_0xa8cb('0x34')][_0xa8cb('0x1b')]);}_0x24bdc1['order']=qs[_0xa8cb('0x3a')](_0x469269[_0xa8cb('0x34')]['sort']);_0x24bdc1[_0xa8cb('0x3b')]=qs[_0xa8cb('0x3c')](_[_0xa8cb('0x3d')](_0x469269[_0xa8cb('0x34')],_0x332fd5[_0xa8cb('0x3c')]),_0x247ac4);if(_0x469269[_0xa8cb('0x34')]['filter']){_0x24bdc1[_0xa8cb('0x3b')]=_[_0xa8cb('0x3e')](_0x24bdc1[_0xa8cb('0x3b')],{'$or':_[_0xa8cb('0x2d')](_0x247ac4,function(_0x5e6c45){if(_0x5e6c45['type']!==_0xa8cb('0x3f')){var _0x2f2060={};_0x2f2060[_0x5e6c45[_0xa8cb('0x2a')]]={'$like':'%'+_0x469269[_0xa8cb('0x34')]['filter']+'%'};return _0x2f2060;}})});}_0x24bdc1=_[_0xa8cb('0x3e')]({},_0x24bdc1,_0x469269[_0xa8cb('0x40')]);var _0xbbeaa1={'where':_0x24bdc1[_0xa8cb('0x3b')]};return db[_0xa8cb('0x2e')][_0xa8cb('0x1e')](_0xbbeaa1)[_0xa8cb('0x24')](function(_0xe1b54d){_0x3b778c[_0xa8cb('0x1e')]=_0xe1b54d;if(_0x469269[_0xa8cb('0x34')][_0xa8cb('0x41')]){_0x24bdc1['include']=[{'all':!![]}];}return db[_0xa8cb('0x2e')][_0xa8cb('0x42')](_0x24bdc1);})['then'](function(_0x1232b8){_0x3b778c[_0xa8cb('0x43')]=_0x1232b8;return _0x3b778c;})[_0xa8cb('0x24')](respondWithFilteredResult(_0x1cb9fe,_0x24bdc1))[_0xa8cb('0x44')](handleError(_0x1cb9fe,null));};exports[_0xa8cb('0x45')]=function(_0x5ce281,_0x2d28ea){var _0x2ab6bd={'raw':!![],'where':{'id':_0x5ce281[_0xa8cb('0x46')]['id']}},_0x5dc777={};_0x5dc777[_0xa8cb('0x33')]=_['keys'](db[_0xa8cb('0x2e')][_0xa8cb('0x2f')]);_0x5dc777[_0xa8cb('0x34')]=_[_0xa8cb('0x47')](_0x5ce281[_0xa8cb('0x34')]);_0x5dc777[_0xa8cb('0x3c')]=_['intersection'](_0x5dc777['model'],_0x5dc777['query']);_0x2ab6bd['attributes']=_[_0xa8cb('0x35')](_0x5dc777['model'],qs[_0xa8cb('0x36')](_0x5ce281[_0xa8cb('0x34')][_0xa8cb('0x36')]));_0x2ab6bd[_0xa8cb('0x37')]=_0x2ab6bd[_0xa8cb('0x37')][_0xa8cb('0x48')]?_0x2ab6bd[_0xa8cb('0x37')]:_0x5dc777['model'];if(_0x5ce281[_0xa8cb('0x34')]['includeAll']){_0x2ab6bd[_0xa8cb('0x49')]=[{'all':!![]}];}_0x2ab6bd=_[_0xa8cb('0x3e')]({},_0x2ab6bd,_0x5ce281['options']);return db[_0xa8cb('0x2e')][_0xa8cb('0x4a')](_0x2ab6bd)['then'](handleEntityNotFound(_0x2d28ea,null))[_0xa8cb('0x24')](respondWithResult(_0x2d28ea,null))['catch'](handleError(_0x2d28ea,null));};exports['create']=function(_0x5c662f,_0x1e2d84){return db['Interval'][_0xa8cb('0x4b')](_0x5c662f[_0xa8cb('0x4c')],{})[_0xa8cb('0x24')](function(_0x5b9f8c){var _0xa9d557=_0x5c662f[_0xa8cb('0x4d')][_0xa8cb('0x26')]({'plain':!![]});if(!_0xa9d557)throw new Error(_0xa8cb('0x4e'));if(_0xa9d557[_0xa8cb('0x4f')]==='user'){var _0x2713e3=_0x5b9f8c[_0xa8cb('0x26')]({'plain':!![]});var _0x3cb78c='Intervals';return db[_0xa8cb('0x50')]['find']({'where':{'name':_0x3cb78c,'userProfileId':_0xa9d557[_0xa8cb('0x51')]},'raw':!![]})['then'](function(_0x12dfd8){if(_0x12dfd8&&_0x12dfd8[_0xa8cb('0x52')]===0x0){return db[_0xa8cb('0x28')][_0xa8cb('0x4b')]({'name':_0x2713e3['name'],'resourceId':_0x2713e3['id'],'type':_0x12dfd8[_0xa8cb('0x2a')],'sectionId':_0x12dfd8['id']},{})['then'](function(){return _0x5b9f8c;});}else{return _0x5b9f8c;}})[_0xa8cb('0x44')](function(_0x14e630){logger[_0xa8cb('0x53')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x14e630);throw _0x14e630;});}return _0x5b9f8c;})[_0xa8cb('0x24')](respondWithResult(_0x1e2d84,0xc9))['catch'](handleError(_0x1e2d84,null));};exports[_0xa8cb('0x23')]=function(_0x39aa3b,_0xad5c3f){if(_0x39aa3b['body']['id']){delete _0x39aa3b[_0xa8cb('0x4c')]['id'];}return db[_0xa8cb('0x2e')]['find']({'where':{'id':_0x39aa3b[_0xa8cb('0x46')]['id']}})[_0xa8cb('0x24')](handleEntityNotFound(_0xad5c3f,null))[_0xa8cb('0x24')](saveUpdates(_0x39aa3b['body'],null))[_0xa8cb('0x24')](respondWithResult(_0xad5c3f,null))[_0xa8cb('0x44')](handleError(_0xad5c3f,null));};exports[_0xa8cb('0x25')]=function(_0x5ae772,_0x562c1b){return db['Interval'][_0xa8cb('0x4a')]({'where':{'id':_0x5ae772['params']['id']}})[_0xa8cb('0x24')](handleEntityNotFound(_0x562c1b,null))[_0xa8cb('0x24')](removeEntity(_0x562c1b,null))['catch'](handleError(_0x562c1b,null));};exports[_0xa8cb('0x54')]=function(_0x1fcf49,_0xdc50de,_0x3ed445){if(_0x1fcf49[_0xa8cb('0x4c')]['id']){delete _0x1fcf49[_0xa8cb('0x4c')]['id'];}return db['Interval'][_0xa8cb('0x4a')]({'where':{'id':_0x1fcf49[_0xa8cb('0x46')]['id']}})[_0xa8cb('0x24')](handleEntityNotFound(_0xdc50de,null))[_0xa8cb('0x24')](function(_0x2d4ce3){if(_0x2d4ce3){_0x1fcf49[_0xa8cb('0x4c')][_0xa8cb('0x55')]=_0x2d4ce3['id'];return db[_0xa8cb('0x2e')][_0xa8cb('0x4b')](_0x1fcf49[_0xa8cb('0x4c')]);}})[_0xa8cb('0x24')](respondWithResult(_0xdc50de,null))['catch'](handleError(_0xdc50de,null));};exports[_0xa8cb('0x56')]=function(_0x4f4d15,_0x3693a9,_0x5725c){var _0x6c49d9={};var _0x3d7aa0={};var _0x543c0d;var _0x1de272;return db[_0xa8cb('0x2e')]['findOne']({'where':{'id':_0x4f4d15[_0xa8cb('0x46')]['id']}})[_0xa8cb('0x24')](handleEntityNotFound(_0x3693a9,null))['then'](function(_0x49f1e3){if(_0x49f1e3){_0x543c0d=_0x49f1e3;_0x3d7aa0[_0xa8cb('0x33')]=_[_0xa8cb('0x47')](db['Interval']['rawAttributes']);_0x3d7aa0[_0xa8cb('0x34')]=_[_0xa8cb('0x47')](_0x4f4d15[_0xa8cb('0x34')]);_0x3d7aa0[_0xa8cb('0x3c')]=_[_0xa8cb('0x35')](_0x3d7aa0[_0xa8cb('0x33')],_0x3d7aa0[_0xa8cb('0x34')]);_0x6c49d9[_0xa8cb('0x37')]=_['intersection'](_0x3d7aa0[_0xa8cb('0x33')],qs[_0xa8cb('0x36')](_0x4f4d15[_0xa8cb('0x34')][_0xa8cb('0x36')]));_0x6c49d9[_0xa8cb('0x37')]=_0x6c49d9[_0xa8cb('0x37')][_0xa8cb('0x48')]?_0x6c49d9[_0xa8cb('0x37')]:_0x3d7aa0[_0xa8cb('0x33')];_0x6c49d9[_0xa8cb('0x57')]=qs[_0xa8cb('0x3a')](_0x4f4d15['query'][_0xa8cb('0x3a')]);_0x6c49d9[_0xa8cb('0x3b')]=qs[_0xa8cb('0x3c')](_['pick'](_0x4f4d15['query'],_0x3d7aa0['filters']));if(_0x4f4d15['query'][_0xa8cb('0x58')]){_0x6c49d9['where']=_[_0xa8cb('0x3e')](_0x6c49d9['where'],{'$or':_[_0xa8cb('0x2d')](_0x6c49d9[_0xa8cb('0x37')],function(_0x57ffed){var _0x12aec9={};_0x12aec9[_0x57ffed]={'$like':'%'+_0x4f4d15[_0xa8cb('0x34')][_0xa8cb('0x58')]+'%'};return _0x12aec9;})});}_0x6c49d9=_[_0xa8cb('0x3e')]({},_0x6c49d9,_0x4f4d15[_0xa8cb('0x40')]);return _0x543c0d[_0xa8cb('0x56')](_0x6c49d9);}})['then'](function(_0x18c904){if(_0x18c904){_0x1de272=_0x18c904['length'];if(!_0x4f4d15[_0xa8cb('0x34')][_0xa8cb('0x38')](_0xa8cb('0x39'))){_0x6c49d9[_0xa8cb('0x1d')]=qs['limit'](_0x4f4d15['query']['limit']);_0x6c49d9[_0xa8cb('0x1b')]=qs['offset'](_0x4f4d15[_0xa8cb('0x34')][_0xa8cb('0x1b')]);}return _0x543c0d[_0xa8cb('0x56')](_0x6c49d9);}})[_0xa8cb('0x24')](function(_0x4ea9ee){if(_0x4ea9ee){return _0x4ea9ee?{'count':_0x1de272,'rows':_0x4ea9ee}:null;}})['then'](respondWithResult(_0x3693a9,null))[_0xa8cb('0x44')](handleError(_0x3693a9,null));};exports[_0xa8cb('0x59')]=function(_0x4e474f,_0x1e5edf,_0x3ba706){return db['Interval'][_0xa8cb('0x5a')]({'where':{'id':_0x4e474f[_0xa8cb('0x46')]['id']}})[_0xa8cb('0x24')](handleEntityNotFound(_0x1e5edf,null))['then'](function(_0x24a009){if(_0x24a009){return db[_0xa8cb('0x5b')][_0xa8cb('0x5c')](function(_0x256291){return db[_0xa8cb('0x2e')][_0xa8cb('0x25')]({'where':{'IntervalId':_0x4e474f['params']['id']},'transaction':_0x256291})[_0xa8cb('0x24')](function(_0x3097d6){var _0x5b3591=_['map'](_0x4e474f[_0xa8cb('0x4c')],function(_0x55923b){delete _0x55923b['id'];_0x55923b[_0xa8cb('0x55')]=_0x4e474f[_0xa8cb('0x46')]['id'];return _0x55923b;});return db['Interval'][_0xa8cb('0x5d')](_0x5b3591,{'transaction':_0x256291});});})[_0xa8cb('0x24')](function(){return db[_0xa8cb('0x2e')][_0xa8cb('0x42')]({'where':{'IntervalId':_0x4e474f[_0xa8cb('0x46')]['id']}});});}})[_0xa8cb('0x24')](respondWithResult(_0x1e5edf,null))[_0xa8cb('0x44')](handleError(_0x1e5edf,null));};
\ No newline at end of file
index 01f9394..bb68c3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3348=['map','ifTime','reduce','../../components/extensions/rewrite','iftime','exports','define','tools_intervals','rewrite','string','interval','getIntervals','then'];(function(_0x13594e,_0x6f0ed0){var _0x1a4f42=function(_0x30b064){while(--_0x30b064){_0x13594e['push'](_0x13594e['shift']());}};_0x1a4f42(++_0x6f0ed0);}(_0x3348,0x121));var _0x8334=function(_0x30b29c,_0x648629){_0x30b29c=_0x30b29c-0x0;var _0x768fe0=_0x3348[_0x30b29c];return _0x768fe0;};'use strict';var attributes=require('./interval.attributes');var extensions=require(_0x8334('0x0'));var iftime=require('../../utils/iftime')[_0x8334('0x1')];module[_0x8334('0x2')]=function(_0x20de32){return _0x20de32[_0x8334('0x3')]('Interval',attributes,{'tableName':_0x8334('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x295e6c){extensions['rewrite'](_0x20de32,_0x295e6c);},'afterBulkCreate':function(_0x84c4b5,_0x170522,_0x7d2f59){_0x7d2f59();extensions[_0x8334('0x5')](_0x20de32,_0x84c4b5[0x0]);},'afterUpdate':function(_0x4a9a1d){extensions[_0x8334('0x5')](_0x20de32,_0x4a9a1d);},'afterDestroy':function(_0x2d3342){extensions[_0x8334('0x5')](_0x20de32,_0x2d3342);}},'instanceMethods':{'ifTime':function(_0x2a0ca2=undefined,_0x2af3cf=new Date()){if(typeof this['interval']===_0x8334('0x6')){return iftime(this[_0x8334('0x7')],_0x2a0ca2,_0x2af3cf);}else{return this[_0x8334('0x8')]()[_0x8334('0x9')](function(_0x4dea18){return Promise['all'](_0x4dea18[_0x8334('0xa')](function(_0x3b08e4){return _0x3b08e4[_0x8334('0xb')](_0x2a0ca2,_0x2af3cf);}));})[_0x8334('0x9')](function(_0x888e20){return _0x888e20[_0x8334('0xc')](function(_0x560cba,_0xb63f14){return _0x560cba||_0xb63f14;},![]);});}}}});};
\ No newline at end of file
+var _0xe1ff=['then','all','map','ifTime','reduce','./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','iftime','exports','define','tools_intervals','rewrite','interval','string'];(function(_0x48b00c,_0x16690b){var _0x55d181=function(_0x58b5bd){while(--_0x58b5bd){_0x48b00c['push'](_0x48b00c['shift']());}};_0x55d181(++_0x16690b);}(_0xe1ff,0x131));var _0xfe1f=function(_0x53233d,_0x302cb0){_0x53233d=_0x53233d-0x0;var _0x5356ee=_0xe1ff[_0x53233d];return _0x5356ee;};'use strict';var attributes=require(_0xfe1f('0x0'));var extensions=require(_0xfe1f('0x1'));var iftime=require(_0xfe1f('0x2'))[_0xfe1f('0x3')];module[_0xfe1f('0x4')]=function(_0x2c7d3d){return _0x2c7d3d[_0xfe1f('0x5')]('Interval',attributes,{'tableName':_0xfe1f('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x31ca1e){extensions[_0xfe1f('0x7')](_0x2c7d3d,_0x31ca1e);},'afterBulkCreate':function(_0x1fb36d,_0x26ad21,_0x171803){_0x171803();extensions[_0xfe1f('0x7')](_0x2c7d3d,_0x1fb36d[0x0]);},'afterUpdate':function(_0x25e44c){extensions['rewrite'](_0x2c7d3d,_0x25e44c);},'afterDestroy':function(_0x707f03){extensions[_0xfe1f('0x7')](_0x2c7d3d,_0x707f03);}},'instanceMethods':{'ifTime':function(_0x32f215=undefined,_0x39ab6b=new Date()){if(typeof this[_0xfe1f('0x8')]===_0xfe1f('0x9')){return iftime(this[_0xfe1f('0x8')],_0x32f215,_0x39ab6b);}else{return this['getIntervals']()[_0xfe1f('0xa')](function(_0x483e1f){return Promise[_0xfe1f('0xb')](_0x483e1f[_0xfe1f('0xc')](function(_0x5473c1){return _0x5473c1[_0xfe1f('0xd')](_0x32f215,_0x39ab6b);}));})[_0xfe1f('0xa')](function(_0x4a4c2d){return _0x4a4c2d[_0xfe1f('0xe')](function(_0x11bbfc,_0x316750){return _0x11bbfc||_0x316750;},![]);});}}}});};
\ No newline at end of file
index df1cd80..3ad89f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c29=['join','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)','name','IntervalIftime','intervalIds','isArray','intervals','string','timezone','length','IntervalIftime:\x20interval\x20strings\x20=\x20%s','IntervalIftime:\x20timezone\x20=\x20%s','Iftime','silly','resolve','lodash','util','../../utils/iftime','../../config/logger','GetInterval','Interval','findAll','options','raw','where','attributes','limit','include','map','model','info','debug','stringify','catch','message','error','find','then','ShowInterval','all','ifTime','reduce','format','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)'];(function(_0xbf2053,_0x165700){var _0x3966da=function(_0x3de16e){while(--_0x3de16e){_0xbf2053['push'](_0xbf2053['shift']());}};_0x3966da(++_0x165700);}(_0x5c29,0x1f3));var _0x95c2=function(_0x50df67,_0x45ebd0){_0x50df67=_0x50df67-0x0;var _0x531a9d=_0x5c29[_0x50df67];return _0x531a9d;};'use strict';var _=require(_0x95c2('0x0'));var util=require(_0x95c2('0x1'));var db=require('../../mysqldb')['db'];var iftime=require(_0x95c2('0x2'))['iftime'];var logger=require(_0x95c2('0x3'))('rpc');exports[_0x95c2('0x4')]=function(_0x5dbce2){var _0x2ce043=this;return new Promise(function(_0x45516b,_0xddc9b9){return db[_0x95c2('0x5')][_0x95c2('0x6')]({'raw':_0x5dbce2['options']?_0x5dbce2[_0x95c2('0x7')][_0x95c2('0x8')]===undefined?!![]:![]:!![],'where':_0x5dbce2['options']?_0x5dbce2[_0x95c2('0x7')][_0x95c2('0x9')]||null:null,'attributes':_0x5dbce2[_0x95c2('0x7')]?_0x5dbce2[_0x95c2('0x7')][_0x95c2('0xa')]||null:null,'limit':_0x5dbce2[_0x95c2('0x7')]?_0x5dbce2[_0x95c2('0x7')][_0x95c2('0xb')]||null:null,'include':_0x5dbce2[_0x95c2('0x7')]?_0x5dbce2[_0x95c2('0x7')][_0x95c2('0xc')]?_[_0x95c2('0xd')](_0x5dbce2['options']['include'],function(_0x2bb272){return{'model':db[_0x2bb272[_0x95c2('0xe')]],'as':_0x2bb272['as'],'attributes':_0x2bb272[_0x95c2('0xa')],'include':_0x2bb272['include']?_[_0x95c2('0xd')](_0x2bb272[_0x95c2('0xc')],function(_0x2e6a30){return{'model':db[_0x2e6a30['model']],'as':_0x2e6a30['as'],'attributes':_0x2e6a30[_0x95c2('0xa')],'include':_0x2e6a30[_0x95c2('0xc')]?_['map'](_0x2e6a30[_0x95c2('0xc')],function(_0x296c78){return{'model':db[_0x296c78[_0x95c2('0xe')]],'as':_0x296c78['as'],'attributes':_0x296c78['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x106304){logger[_0x95c2('0xf')](_0x95c2('0x4'),_0x5dbce2);logger[_0x95c2('0x10')](_0x95c2('0x4'),_0x5dbce2,JSON[_0x95c2('0x11')](_0x106304));_0x45516b(_0x106304);})[_0x95c2('0x12')](function(_0x45a00a){logger['error'](_0x95c2('0x4'),_0x45a00a[_0x95c2('0x13')],_0x5dbce2);_0xddc9b9(_0x2ce043[_0x95c2('0x14')](0x1f4,_0x45a00a['message']));});});};exports['ShowInterval']=function(_0x43f3da){var _0x4ab330=this;return new Promise(function(_0x3609f4,_0x3c4658){return db['Interval'][_0x95c2('0x15')]({'raw':_0x43f3da[_0x95c2('0x7')]?_0x43f3da[_0x95c2('0x7')][_0x95c2('0x8')]===undefined?!![]:![]:!![],'where':_0x43f3da[_0x95c2('0x7')]?_0x43f3da[_0x95c2('0x7')]['where']||null:null,'attributes':_0x43f3da[_0x95c2('0x7')]?_0x43f3da[_0x95c2('0x7')][_0x95c2('0xa')]||null:null,'include':_0x43f3da[_0x95c2('0x7')]?_0x43f3da[_0x95c2('0x7')][_0x95c2('0xc')]?_[_0x95c2('0xd')](_0x43f3da[_0x95c2('0x7')][_0x95c2('0xc')],function(_0x4c4cbc){return{'model':db[_0x4c4cbc[_0x95c2('0xe')]],'as':_0x4c4cbc['as'],'attributes':_0x4c4cbc[_0x95c2('0xa')],'include':_0x4c4cbc[_0x95c2('0xc')]?_['map'](_0x4c4cbc[_0x95c2('0xc')],function(_0x586776){return{'model':db[_0x586776[_0x95c2('0xe')]],'as':_0x586776['as'],'attributes':_0x586776[_0x95c2('0xa')],'include':_0x586776['include']?_[_0x95c2('0xd')](_0x586776['include'],function(_0x1236b7){return{'model':db[_0x1236b7['model']],'as':_0x1236b7['as'],'attributes':_0x1236b7['attributes']};}):[]};}):[]};}):[]:[]})[_0x95c2('0x16')](function(_0x3710f4){logger[_0x95c2('0xf')]('ShowInterval',_0x43f3da);logger[_0x95c2('0x10')](_0x95c2('0x17'),_0x43f3da,JSON[_0x95c2('0x11')](_0x3710f4));_0x3609f4(_0x3710f4);})[_0x95c2('0x12')](function(_0xbffe69){logger[_0x95c2('0x14')]('ShowInterval',_0xbffe69[_0x95c2('0x13')],_0x43f3da);_0x3c4658(_0x4ab330[_0x95c2('0x14')](0x1f4,_0xbffe69[_0x95c2('0x13')]));});});};function checkArrayOfIntervals(_0x3173fa,_0xec5d61){var _0x834c02=[];return db[_0x95c2('0x5')]['findAll']({'where':{'id':_0x3173fa}})[_0x95c2('0x16')](function(_0x1585ef){_0x834c02=_0x1585ef;return Promise[_0x95c2('0x18')](_0x834c02[_0x95c2('0xd')](function(_0x195122){return _0x195122[_0x95c2('0x19')](_0xec5d61);}));})[_0x95c2('0x16')](function(_0x1baa65){var _0x10d3cd=_0x1baa65[_0x95c2('0x1a')](function(_0x356366,_0x3d475b){return _0x356366||_0x3d475b;},![]);logger[_0x95c2('0xf')](util[_0x95c2('0x1b')](_0x95c2('0x1c'),_0x834c02[_0x95c2('0xd')](function(_0x49cddc){return _0x49cddc['name'];})[_0x95c2('0x1d')](',\x20'),_0x834c02['map'](function(_0x466c8a){return _0x466c8a['id'];})[_0x95c2('0x1d')](',\x20')));return _0x10d3cd;});}function checkSingleInterval(_0x806a91,_0x329fee){return db[_0x95c2('0x5')]['findById'](_0x806a91)[_0x95c2('0x16')](function(_0x33488c){if(_0x33488c){logger['info'](util[_0x95c2('0x1b')](_0x95c2('0x1e'),_0x33488c[_0x95c2('0x1f')],_0x33488c['id']));return _0x33488c[_0x95c2('0x19')](_0x329fee);}});}exports[_0x95c2('0x20')]=function(_0x293a45){var _0x99b69c=_0x293a45[_0x95c2('0x21')];var _0x7732c3=Array[_0x95c2('0x22')](_0x293a45[_0x95c2('0x23')])?_0x293a45[_0x95c2('0x23')]:typeof _0x293a45[_0x95c2('0x23')]===_0x95c2('0x24')?[_0x293a45[_0x95c2('0x23')]]:[];var _0x35e3ae=_0x293a45[_0x95c2('0x25')]||undefined;var _0x5d39dc=![];if(_0x7732c3[_0x95c2('0x26')]){logger[_0x95c2('0xf')](util[_0x95c2('0x1b')](_0x95c2('0x27'),_0x7732c3[_0x95c2('0x1d')](';\x20')));}if(_0x35e3ae){logger[_0x95c2('0xf')](util['format'](_0x95c2('0x28'),_0x35e3ae));}logger[_0x95c2('0x10')](_0x95c2('0x29'),_0x5d39dc);logger[_0x95c2('0x2a')](_0x95c2('0x20'),_0x293a45);return Promise[_0x95c2('0x2b')]()[_0x95c2('0x16')](function(){if(Array['isArray'](_0x99b69c)){return checkArrayOfIntervals(_0x99b69c,_0x35e3ae);}else if(_0x99b69c){return checkSingleInterval(_0x99b69c,_0x35e3ae);}})[_0x95c2('0x16')](function(_0x480fd5){var _0x29864f=_0x7732c3[_0x95c2('0x1a')](function(_0x3275fd,_0x641199){return _0x3275fd||iftime(_0x641199,_0x35e3ae);},![]);_0x5d39dc=_0x480fd5||_0x29864f;return _0x5d39dc;})[_0x95c2('0x12')](function(_0x3b77b5){logger[_0x95c2('0x14')]('IntervalIftime',_0x293a45,_0x3b77b5);throw this['error'](0x1f4,_0x3b77b5[_0x95c2('0x13')]);});};
\ No newline at end of file
+var _0x494c=['options','attributes','include','map','model','then','info','debug','stringify','catch','error','message','ShowInterval','find','where','all','ifTime','reduce','format','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','name','join','findById','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)','IntervalIftime','intervalIds','isArray','intervals','string','timezone','length','IntervalIftime:\x20timezone\x20=\x20%s','Iftime','silly','resolve','lodash','util','../../mysqldb','../../utils/iftime','../../config/logger','rpc','GetInterval','Interval','findAll','raw'];(function(_0x28d81b,_0x229856){var _0x4213f2=function(_0x860863){while(--_0x860863){_0x28d81b['push'](_0x28d81b['shift']());}};_0x4213f2(++_0x229856);}(_0x494c,0x131));var _0xc494=function(_0x2d3bb8,_0x547b60){_0x2d3bb8=_0x2d3bb8-0x0;var _0x442cf2=_0x494c[_0x2d3bb8];return _0x442cf2;};'use strict';var _=require(_0xc494('0x0'));var util=require(_0xc494('0x1'));var db=require(_0xc494('0x2'))['db'];var iftime=require(_0xc494('0x3'))['iftime'];var logger=require(_0xc494('0x4'))(_0xc494('0x5'));exports[_0xc494('0x6')]=function(_0x295d10){var _0x3a64b7=this;return new Promise(function(_0x3a6deb,_0x1f79bf){return db[_0xc494('0x7')][_0xc494('0x8')]({'raw':_0x295d10['options']?_0x295d10['options'][_0xc494('0x9')]===undefined?!![]:![]:!![],'where':_0x295d10[_0xc494('0xa')]?_0x295d10['options']['where']||null:null,'attributes':_0x295d10['options']?_0x295d10['options'][_0xc494('0xb')]||null:null,'limit':_0x295d10['options']?_0x295d10[_0xc494('0xa')]['limit']||null:null,'include':_0x295d10[_0xc494('0xa')]?_0x295d10['options'][_0xc494('0xc')]?_[_0xc494('0xd')](_0x295d10[_0xc494('0xa')]['include'],function(_0xdcdbcf){return{'model':db[_0xdcdbcf['model']],'as':_0xdcdbcf['as'],'attributes':_0xdcdbcf[_0xc494('0xb')],'include':_0xdcdbcf[_0xc494('0xc')]?_[_0xc494('0xd')](_0xdcdbcf[_0xc494('0xc')],function(_0x187681){return{'model':db[_0x187681[_0xc494('0xe')]],'as':_0x187681['as'],'attributes':_0x187681[_0xc494('0xb')],'include':_0x187681[_0xc494('0xc')]?_[_0xc494('0xd')](_0x187681['include'],function(_0x6ef27d){return{'model':db[_0x6ef27d[_0xc494('0xe')]],'as':_0x6ef27d['as'],'attributes':_0x6ef27d[_0xc494('0xb')]};}):[]};}):[]};}):[]:[]})[_0xc494('0xf')](function(_0xe71d41){logger[_0xc494('0x10')](_0xc494('0x6'),_0x295d10);logger[_0xc494('0x11')](_0xc494('0x6'),_0x295d10,JSON[_0xc494('0x12')](_0xe71d41));_0x3a6deb(_0xe71d41);})[_0xc494('0x13')](function(_0x340dfc){logger[_0xc494('0x14')](_0xc494('0x6'),_0x340dfc['message'],_0x295d10);_0x1f79bf(_0x3a64b7[_0xc494('0x14')](0x1f4,_0x340dfc[_0xc494('0x15')]));});});};exports[_0xc494('0x16')]=function(_0x1fa4df){var _0x46ce71=this;return new Promise(function(_0x14ef75,_0x5cce26){return db['Interval'][_0xc494('0x17')]({'raw':_0x1fa4df[_0xc494('0xa')]?_0x1fa4df[_0xc494('0xa')][_0xc494('0x9')]===undefined?!![]:![]:!![],'where':_0x1fa4df[_0xc494('0xa')]?_0x1fa4df[_0xc494('0xa')][_0xc494('0x18')]||null:null,'attributes':_0x1fa4df[_0xc494('0xa')]?_0x1fa4df[_0xc494('0xa')][_0xc494('0xb')]||null:null,'include':_0x1fa4df[_0xc494('0xa')]?_0x1fa4df[_0xc494('0xa')][_0xc494('0xc')]?_['map'](_0x1fa4df[_0xc494('0xa')]['include'],function(_0x4a40a2){return{'model':db[_0x4a40a2[_0xc494('0xe')]],'as':_0x4a40a2['as'],'attributes':_0x4a40a2['attributes'],'include':_0x4a40a2['include']?_[_0xc494('0xd')](_0x4a40a2['include'],function(_0x2b3946){return{'model':db[_0x2b3946[_0xc494('0xe')]],'as':_0x2b3946['as'],'attributes':_0x2b3946[_0xc494('0xb')],'include':_0x2b3946[_0xc494('0xc')]?_[_0xc494('0xd')](_0x2b3946[_0xc494('0xc')],function(_0x5bc7b1){return{'model':db[_0x5bc7b1[_0xc494('0xe')]],'as':_0x5bc7b1['as'],'attributes':_0x5bc7b1[_0xc494('0xb')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b72ba){logger[_0xc494('0x10')](_0xc494('0x16'),_0x1fa4df);logger[_0xc494('0x11')]('ShowInterval',_0x1fa4df,JSON[_0xc494('0x12')](_0x4b72ba));_0x14ef75(_0x4b72ba);})['catch'](function(_0x57eabb){logger[_0xc494('0x14')]('ShowInterval',_0x57eabb[_0xc494('0x15')],_0x1fa4df);_0x5cce26(_0x46ce71[_0xc494('0x14')](0x1f4,_0x57eabb[_0xc494('0x15')]));});});};function checkArrayOfIntervals(_0x304b1d,_0x4dd98b){var _0x56b5be=[];return db[_0xc494('0x7')][_0xc494('0x8')]({'where':{'id':_0x304b1d}})[_0xc494('0xf')](function(_0x18b99b){_0x56b5be=_0x18b99b;return Promise[_0xc494('0x19')](_0x56b5be['map'](function(_0x7d2194){return _0x7d2194[_0xc494('0x1a')](_0x4dd98b);}));})['then'](function(_0x4e87f1){var _0x301880=_0x4e87f1[_0xc494('0x1b')](function(_0x1ae0ec,_0xe3e10b){return _0x1ae0ec||_0xe3e10b;},![]);logger[_0xc494('0x10')](util[_0xc494('0x1c')](_0xc494('0x1d'),_0x56b5be[_0xc494('0xd')](function(_0x313453){return _0x313453[_0xc494('0x1e')];})['join'](',\x20'),_0x56b5be[_0xc494('0xd')](function(_0x182968){return _0x182968['id'];})[_0xc494('0x1f')](',\x20')));return _0x301880;});}function checkSingleInterval(_0x296d4f,_0x29f9a9){return db[_0xc494('0x7')][_0xc494('0x20')](_0x296d4f)[_0xc494('0xf')](function(_0x14d3cc){if(_0x14d3cc){logger[_0xc494('0x10')](util[_0xc494('0x1c')](_0xc494('0x21'),_0x14d3cc[_0xc494('0x1e')],_0x14d3cc['id']));return _0x14d3cc[_0xc494('0x1a')](_0x29f9a9);}});}exports[_0xc494('0x22')]=function(_0x1f0d93){var _0x492347=_0x1f0d93[_0xc494('0x23')];var _0x4ddaf9=Array[_0xc494('0x24')](_0x1f0d93['intervals'])?_0x1f0d93[_0xc494('0x25')]:typeof _0x1f0d93[_0xc494('0x25')]===_0xc494('0x26')?[_0x1f0d93['intervals']]:[];var _0x4dd812=_0x1f0d93[_0xc494('0x27')]||undefined;var _0x243a3b=![];if(_0x4ddaf9[_0xc494('0x28')]){logger[_0xc494('0x10')](util[_0xc494('0x1c')]('IntervalIftime:\x20interval\x20strings\x20=\x20%s',_0x4ddaf9[_0xc494('0x1f')](';\x20')));}if(_0x4dd812){logger[_0xc494('0x10')](util['format'](_0xc494('0x29'),_0x4dd812));}logger[_0xc494('0x11')](_0xc494('0x2a'),_0x243a3b);logger[_0xc494('0x2b')]('IntervalIftime',_0x1f0d93);return Promise[_0xc494('0x2c')]()[_0xc494('0xf')](function(){if(Array[_0xc494('0x24')](_0x492347)){return checkArrayOfIntervals(_0x492347,_0x4dd812);}else if(_0x492347){return checkSingleInterval(_0x492347,_0x4dd812);}})['then'](function(_0x33bab5){var _0x575f83=_0x4ddaf9[_0xc494('0x1b')](function(_0x586b6f,_0x59950c){return _0x586b6f||iftime(_0x59950c,_0x4dd812);},![]);_0x243a3b=_0x33bab5||_0x575f83;return _0x243a3b;})[_0xc494('0x13')](function(_0x2963bb){logger[_0xc494('0x14')]('IntervalIftime',_0x1f0d93,_0x2963bb);throw this[_0xc494('0x14')](0x1f4,_0x2963bb[_0xc494('0x15')]);});};
\ No newline at end of file
index 7551cc0..06d6e54 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(_0x1e4d76,_0x227cfc){var _0x51dc81=function(_0x580bc5){while(--_0x580bc5){_0x1e4d76['push'](_0x1e4d76['shift']());}};_0x51dc81(++_0x227cfc);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5b7103,_0xb3b9a8){_0x5b7103=_0x5b7103-0x0;var _0x55db80=_0x5f2f[_0x5b7103];return _0x55db80;};'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 _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x340348,_0x3a83f8){var _0x151c2a=function(_0x54e944){while(--_0x54e944){_0x340348['push'](_0x340348['shift']());}};_0x151c2a(++_0x3a83f8);}(_0xdb28,0x106));var _0x8db2=function(_0x4125d4,_0x2a8255){_0x4125d4=_0x4125d4-0x0;var _0x4668a7=_0xdb28[_0x4125d4];return _0x4668a7;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
index 07250e1..9fdd27f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51f=['utf8','end','status','statusCode','json','parse','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','openIssue','body','headers','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','key','MOTGUI','Report','\x20from\x20','description','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','name','customfield_11504','reason','customfield_10102','application/json','Basic\x20','toString','stringify','setEncoding'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf51f,0x134));var _0xff51=function(_0x4b7b69,_0x3ab075){_0x4b7b69=_0x4b7b69-0x0;var _0x173b4c=_0xf51f[_0x4b7b69];return _0x173b4c;};'use strict';var BPromise=require(_0xff51('0x0'));var https=require(_0xff51('0x1'));var logger=require(_0xff51('0x2'))(_0xff51('0x3'));var USERNAME=_0xff51('0x4');var PASSWORD='3eAmWpBVP0';function openIssue(_0x462f59,_0x35fc89){var _0x31cd16={'fields':{'project':{'key':_0x462f59[_0xff51('0x5')]||_0xff51('0x6')},'summary':(_0x462f59['summary']||_0xff51('0x7'))+_0xff51('0x8')+_0x462f59['ip'],'description':_0x462f59[_0xff51('0x9')]||JSON['stringify'](_0x462f59),'issuetype':{'name':_0x462f59[_0xff51('0xa')]||_0xff51('0xb')}}};_0x31cd16[_0xff51('0xc')][_0xff51('0xd')]=_0x462f59[_0xff51('0xe')];_0x31cd16[_0xff51('0xc')][_0xff51('0xf')]=_0x462f59[_0xff51('0x10')];_0x31cd16[_0xff51('0xc')][_0xff51('0x11')]=_0x462f59['newToken'];_0x31cd16[_0xff51('0xc')][_0xff51('0x12')]=_0x462f59[_0xff51('0x13')];_0x31cd16[_0xff51('0xc')][_0xff51('0x14')]=_0x462f59[_0xff51('0x15')];_0x31cd16[_0xff51('0xc')][_0xff51('0x16')]=_0x462f59['ip'];var _0x53d5c8={'host':'track.xcallymotion.com','port':0x1bb,'path':'/rest/api/2/issue','method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0xff51('0x17'),'Authorization':_0xff51('0x18')+new Buffer(USERNAME+':'+PASSWORD)[_0xff51('0x19')]('base64')}};var _0x468439=JSON[_0xff51('0x1a')](_0x31cd16);var _0x406ff8=https['request'](_0x53d5c8,function(_0x459586){_0x459586[_0xff51('0x1b')](_0xff51('0x1c'));var _0x62e72e='';_0x459586['on']('data',function(_0x58c61f){_0x62e72e+=_0x58c61f;});_0x459586['on'](_0xff51('0x1d'),function(){if(_0x35fc89){return _0x35fc89[_0xff51('0x1e')](_0x459586[_0xff51('0x1f')])[_0xff51('0x20')](JSON[_0xff51('0x21')](_0x62e72e));}});});_0x406ff8['on']('error',function(_0x220095){if(_0x35fc89){return _0x35fc89[_0xff51('0x1e')](0x1f4)[_0xff51('0x20')]({'errors':[{'message':_0xff51('0x22'),'type':_0xff51('0x23')}]});}});_0x406ff8['write'](_0x468439);_0x406ff8[_0xff51('0x1d')]();}exports[_0xff51('0x24')]=openIssue;exports['send']=function(_0x1b8599,_0x287bfc){_0x1b8599[_0xff51('0x25')]['ip']=_0x1b8599[_0xff51('0x26')]['x-forwarded-for']||_0x1b8599[_0xff51('0x27')][_0xff51('0x28')]||_0x1b8599[_0xff51('0x29')][_0xff51('0x28')]||_0x1b8599[_0xff51('0x27')]['socket']['remoteAddress'];return openIssue(_0x1b8599[_0xff51('0x25')],_0x287bfc);};
\ No newline at end of file
+var _0x0a16=['email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','customfield_11504','customfield_10102','/rest/api/2/issue','application/json','Basic\x20','toString','request','utf8','data','end','status','statusCode','parse','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','send','body','headers','x-forwarded-for','socket','remoteAddress','../../config/logger','api','MOTGUI','summary','Report','\x20from\x20','stringify','issuetype','Bug','fields','customfield_11500'];(function(_0x5ff027,_0x451702){var _0x2ca147=function(_0x54f4c0){while(--_0x54f4c0){_0x5ff027['push'](_0x5ff027['shift']());}};_0x2ca147(++_0x451702);}(_0x0a16,0x1bd));var _0x60a1=function(_0x3d0cb2,_0x9bcf7c){_0x3d0cb2=_0x3d0cb2-0x0;var _0x579dc8=_0x0a16[_0x3d0cb2];return _0x579dc8;};'use strict';var BPromise=require('bluebird');var https=require('https');var logger=require(_0x60a1('0x0'))(_0x60a1('0x1'));var USERNAME='support';var PASSWORD='3eAmWpBVP0';function openIssue(_0x3454a9,_0x2338a1){var _0x5c8e40={'fields':{'project':{'key':_0x3454a9['key']||_0x60a1('0x2')},'summary':(_0x3454a9[_0x60a1('0x3')]||_0x60a1('0x4'))+_0x60a1('0x5')+_0x3454a9['ip'],'description':_0x3454a9['description']||JSON[_0x60a1('0x6')](_0x3454a9),'issuetype':{'name':_0x3454a9[_0x60a1('0x7')]||_0x60a1('0x8')}}};_0x5c8e40[_0x60a1('0x9')][_0x60a1('0xa')]=_0x3454a9[_0x60a1('0xb')];_0x5c8e40[_0x60a1('0x9')][_0x60a1('0xc')]=_0x3454a9[_0x60a1('0xd')];_0x5c8e40[_0x60a1('0x9')][_0x60a1('0xe')]=_0x3454a9[_0x60a1('0xf')];_0x5c8e40['fields'][_0x60a1('0x10')]=_0x3454a9['name'];_0x5c8e40[_0x60a1('0x9')][_0x60a1('0x11')]=_0x3454a9['reason'];_0x5c8e40[_0x60a1('0x9')][_0x60a1('0x12')]=_0x3454a9['ip'];var _0x9c602c={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x60a1('0x13'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x60a1('0x14'),'Authorization':_0x60a1('0x15')+new Buffer(USERNAME+':'+PASSWORD)[_0x60a1('0x16')]('base64')}};var _0x3c4023=JSON['stringify'](_0x5c8e40);var _0x49553a=https[_0x60a1('0x17')](_0x9c602c,function(_0x1d1743){_0x1d1743['setEncoding'](_0x60a1('0x18'));var _0x104932='';_0x1d1743['on'](_0x60a1('0x19'),function(_0x5aed80){_0x104932+=_0x5aed80;});_0x1d1743['on'](_0x60a1('0x1a'),function(){if(_0x2338a1){return _0x2338a1[_0x60a1('0x1b')](_0x1d1743[_0x60a1('0x1c')])['json'](JSON[_0x60a1('0x1d')](_0x104932));}});});_0x49553a['on']('error',function(_0xf857ae){if(_0x2338a1){return _0x2338a1['status'](0x1f4)['json']({'errors':[{'message':_0x60a1('0x1e'),'type':_0x60a1('0x1f')}]});}});_0x49553a['write'](_0x3c4023);_0x49553a[_0x60a1('0x1a')]();}exports['openIssue']=openIssue;exports[_0x60a1('0x20')]=function(_0xc79a56,_0x567959){_0xc79a56[_0x60a1('0x21')]['ip']=_0xc79a56[_0x60a1('0x22')][_0x60a1('0x23')]||_0xc79a56['connection']['remoteAddress']||_0xc79a56[_0x60a1('0x24')][_0x60a1('0x25')]||_0xc79a56['connection'][_0x60a1('0x24')][_0x60a1('0x25')];return openIssue(_0xc79a56[_0x60a1('0x21')],_0x567959);};
\ No newline at end of file
index d6a486e..6c90599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b02=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','/describe','describe','show','post','create','put','/:id','update','delete'];(function(_0x3cfb83,_0x5d0cae){var _0x573b95=function(_0x1a8d71){while(--_0x1a8d71){_0x3cfb83['push'](_0x3cfb83['shift']());}};_0x573b95(++_0x5d0cae);}(_0x5b02,0xe9));var _0x25b0=function(_0x1c7e42,_0x4f7c13){_0x1c7e42=_0x1c7e42-0x0;var _0xdc7aa5=_0x5b02[_0x1c7e42];return _0xdc7aa5;};'use strict';var multer=require(_0x25b0('0x0'));var util=require(_0x25b0('0x1'));var path=require(_0x25b0('0x2'));var timeout=require(_0x25b0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x25b0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x25b0('0x5'));var config=require(_0x25b0('0x6'));var controller=require(_0x25b0('0x7'));router[_0x25b0('0x8')]('/',auth[_0x25b0('0x9')](),controller['index']);router[_0x25b0('0x8')](_0x25b0('0xa'),auth['isAuthenticated'](),controller[_0x25b0('0xb')]);router['get']('/:id',auth[_0x25b0('0x9')](),controller[_0x25b0('0xc')]);router[_0x25b0('0xd')]('/',auth['isAuthenticated'](),controller[_0x25b0('0xe')]);router[_0x25b0('0xf')](_0x25b0('0x10'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x11')]);router[_0x25b0('0x12')](_0x25b0('0x10'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x13')]);module[_0x25b0('0x14')]=router;
\ No newline at end of file
+var _0x9bde=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','put','delete','destroy','util','connect-timeout','Router'];(function(_0x4dc076,_0x5a92bf){var _0x2a695c=function(_0x201c63){while(--_0x201c63){_0x4dc076['push'](_0x4dc076['shift']());}};_0x2a695c(++_0x5a92bf);}(_0x9bde,0xe1));var _0xe9bd=function(_0x1431f1,_0x385f19){_0x1431f1=_0x1431f1-0x0;var _0x428053=_0x9bde[_0x1431f1];return _0x428053;};'use strict';var multer=require('multer');var util=require(_0xe9bd('0x0'));var path=require('path');var timeout=require(_0xe9bd('0x1'));var express=require('express');var router=express[_0xe9bd('0x2')]();var fs_extra=require(_0xe9bd('0x3'));var auth=require(_0xe9bd('0x4'));var interaction=require(_0xe9bd('0x5'));var config=require(_0xe9bd('0x6'));var controller=require(_0xe9bd('0x7'));router[_0xe9bd('0x8')]('/',auth['isAuthenticated'](),controller[_0xe9bd('0x9')]);router[_0xe9bd('0x8')](_0xe9bd('0xa'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0xc')]);router[_0xe9bd('0x8')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0xe')]);router[_0xe9bd('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe9bd('0x10')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller['update']);router[_0xe9bd('0x11')](_0xe9bd('0xd'),auth[_0xe9bd('0xb')](),controller[_0xe9bd('0x12')]);module['exports']=router;
\ No newline at end of file
index 6dd71f0..b63df7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x7a54,0x106));var _0x47a5=function(_0xe3ba7d,_0x3acd12){_0xe3ba7d=_0xe3ba7d-0x0;var _0x28487c=_0x7a54[_0xe3ba7d];return _0x28487c;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x7a54,0x106));var _0x47a5=function(_0x143ec5,_0x32c441){_0x143ec5=_0x143ec5-0x0;var _0x1dfd54=_0x7a54[_0x143ec5];return _0x1dfd54;};'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 90e2798..891015f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf52f=['offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','length','nolimit','order','pick','filter','where','merge','VIRTUAL','options','JscriptyAnswerReport','includeAll','include','findAll','catch','show','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0xf52f,0x113));var _0xff52=function(_0x11c4f2,_0x5dd7a1){_0x11c4f2=_0x11c4f2-0x0;var _0x3b2c0b=_0xf52f[_0x11c4f2];return _0x3b2c0b;};'use strict';var emlformat=require(_0xff52('0x0'));var rimraf=require(_0xff52('0x1'));var zipdir=require(_0xff52('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xff52('0x3'));var moment=require(_0xff52('0x4'));var BPromise=require(_0xff52('0x5'));var Mustache=require('mustache');var util=require(_0xff52('0x6'));var path=require(_0xff52('0x7'));var sox=require('sox');var csv=require(_0xff52('0x8'));var ejs=require(_0xff52('0x9'));var fs=require('fs');var fs_extra=require(_0xff52('0xa'));var _=require(_0xff52('0xb'));var squel=require(_0xff52('0xc'));var crypto=require(_0xff52('0xd'));var jsforce=require(_0xff52('0xe'));var deskjs=require(_0xff52('0xf'));var toCsv=require(_0xff52('0x8'));var querystring=require(_0xff52('0x10'));var Papa=require(_0xff52('0x11'));var Redis=require(_0xff52('0x12'));var authService=require(_0xff52('0x13'));var qs=require(_0xff52('0x14'));var as=require(_0xff52('0x15'));var hardwareService=require(_0xff52('0x16'));var logger=require(_0xff52('0x17'))(_0xff52('0x18'));var utils=require(_0xff52('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xff52('0x1a'))['db'];function respondWithStatusCode(_0x53f40b,_0x2cd3ca){_0x2cd3ca=_0x2cd3ca||0xcc;return function(_0x1c0f10){if(_0x1c0f10){return _0x53f40b[_0xff52('0x1b')](_0x2cd3ca);}return _0x53f40b[_0xff52('0x1c')](_0x2cd3ca)['end']();};}function respondWithResult(_0x54eccf,_0x5bc4dd){_0x5bc4dd=_0x5bc4dd||0xc8;return function(_0x32f7e5){if(_0x32f7e5){return _0x54eccf['status'](_0x5bc4dd)['json'](_0x32f7e5);}};}function respondWithFilteredResult(_0x219294,_0x1e1818){return function(_0x3fc985){if(_0x3fc985){var _0x440701=typeof _0x1e1818[_0xff52('0x1d')]==='undefined'&&typeof _0x1e1818[_0xff52('0x1e')]==='undefined';var _0xc8d493=_0x3fc985['count'];var _0x568cad=_0x440701?0x0:_0x1e1818[_0xff52('0x1d')];var _0x28601f=_0x440701?_0x3fc985[_0xff52('0x1f')]:_0x1e1818['offset']+_0x1e1818['limit'];var _0x163326;if(_0x28601f>=_0xc8d493){_0x28601f=_0xc8d493;_0x163326=0xc8;}else{_0x163326=0xce;}_0x219294[_0xff52('0x1c')](_0x163326);return _0x219294[_0xff52('0x20')](_0xff52('0x21'),_0x568cad+'-'+_0x28601f+'/'+_0xc8d493)['json'](_0x3fc985);}return null;};}function patchUpdates(_0x147db2){return function(_0x45fe57){try{jsonpatch[_0xff52('0x22')](_0x45fe57,_0x147db2,!![]);}catch(_0x434a9f){return BPromise[_0xff52('0x23')](_0x434a9f);}return _0x45fe57[_0xff52('0x24')]();};}function saveUpdates(_0x78d437,_0x176c10){return function(_0x5eb3f9){if(_0x5eb3f9){return _0x5eb3f9[_0xff52('0x25')](_0x78d437)[_0xff52('0x26')](function(_0x517eb4){return _0x517eb4;});}return null;};}function removeEntity(_0x313ee0,_0x3cf849){return function(_0x4b8157){if(_0x4b8157){return _0x4b8157[_0xff52('0x27')]()['then'](function(){_0x313ee0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x363857,_0x234516){return function(_0x16b121){if(!_0x16b121){_0x363857[_0xff52('0x1b')](0x194);}return _0x16b121;};}function handleError(_0x18a08e,_0x1fe1cc){_0x1fe1cc=_0x1fe1cc||0x1f4;return function(_0x25225b){logger[_0xff52('0x28')](_0x25225b[_0xff52('0x29')]);if(_0x25225b[_0xff52('0x2a')]){delete _0x25225b['name'];}_0x18a08e[_0xff52('0x1c')](_0x1fe1cc)[_0xff52('0x2b')](_0x25225b);};}exports['index']=function(_0x2822c0,_0x32df90){var _0x208753={},_0x1cb50f={},_0x30fd72={'count':0x0,'rows':[]};var _0x51d708=_[_0xff52('0x2c')](db['JscriptyAnswerReport'][_0xff52('0x2d')],function(_0x35aaf7){return{'name':_0x35aaf7[_0xff52('0x2e')],'type':_0x35aaf7[_0xff52('0x2f')][_0xff52('0x30')]};});_0x1cb50f['model']=_['map'](_0x51d708,_0xff52('0x2a'));_0x1cb50f[_0xff52('0x31')]=_[_0xff52('0x32')](_0x2822c0['query']);_0x1cb50f[_0xff52('0x33')]=_['intersection'](_0x1cb50f[_0xff52('0x34')],_0x1cb50f[_0xff52('0x31')]);_0x208753['attributes']=_[_0xff52('0x35')](_0x1cb50f[_0xff52('0x34')],qs[_0xff52('0x36')](_0x2822c0[_0xff52('0x31')][_0xff52('0x36')]));_0x208753[_0xff52('0x37')]=_0x208753[_0xff52('0x37')][_0xff52('0x38')]?_0x208753[_0xff52('0x37')]:_0x1cb50f[_0xff52('0x34')];if(!_0x2822c0[_0xff52('0x31')]['hasOwnProperty'](_0xff52('0x39'))){_0x208753[_0xff52('0x1e')]=qs['limit'](_0x2822c0[_0xff52('0x31')][_0xff52('0x1e')]);_0x208753[_0xff52('0x1d')]=qs[_0xff52('0x1d')](_0x2822c0[_0xff52('0x31')][_0xff52('0x1d')]);}_0x208753[_0xff52('0x3a')]=qs['sort'](_0x2822c0[_0xff52('0x31')]['sort']);_0x208753['where']=qs[_0xff52('0x33')](_[_0xff52('0x3b')](_0x2822c0['query'],_0x1cb50f[_0xff52('0x33')]),_0x51d708);if(_0x2822c0[_0xff52('0x31')][_0xff52('0x3c')]){_0x208753[_0xff52('0x3d')]=_[_0xff52('0x3e')](_0x208753[_0xff52('0x3d')],{'$or':_[_0xff52('0x2c')](_0x51d708,function(_0xcb2a24){if(_0xcb2a24[_0xff52('0x2f')]!==_0xff52('0x3f')){var _0x5c48fa={};_0x5c48fa[_0xcb2a24[_0xff52('0x2a')]]={'$like':'%'+_0x2822c0[_0xff52('0x31')][_0xff52('0x3c')]+'%'};return _0x5c48fa;}})});}_0x208753=_[_0xff52('0x3e')]({},_0x208753,_0x2822c0[_0xff52('0x40')]);var _0x388613={'where':_0x208753[_0xff52('0x3d')]};return db[_0xff52('0x41')]['count'](_0x388613)[_0xff52('0x26')](function(_0x5937da){_0x30fd72[_0xff52('0x1f')]=_0x5937da;if(_0x2822c0['query'][_0xff52('0x42')]){_0x208753[_0xff52('0x43')]=[{'all':!![]}];}return db[_0xff52('0x41')][_0xff52('0x44')](_0x208753);})[_0xff52('0x26')](function(_0x1d3fc8){_0x30fd72['rows']=_0x1d3fc8;return _0x30fd72;})[_0xff52('0x26')](respondWithFilteredResult(_0x32df90,_0x208753))[_0xff52('0x45')](handleError(_0x32df90,null));};exports[_0xff52('0x46')]=function(_0x194e32,_0x16c2e4){var _0x56f535={'raw':!![],'where':{'id':_0x194e32['params']['id']}},_0x236d4f={};_0x236d4f[_0xff52('0x34')]=_[_0xff52('0x32')](db[_0xff52('0x41')][_0xff52('0x2d')]);_0x236d4f['query']=_[_0xff52('0x32')](_0x194e32[_0xff52('0x31')]);_0x236d4f[_0xff52('0x33')]=_[_0xff52('0x35')](_0x236d4f[_0xff52('0x34')],_0x236d4f[_0xff52('0x31')]);_0x56f535[_0xff52('0x37')]=_[_0xff52('0x35')](_0x236d4f[_0xff52('0x34')],qs[_0xff52('0x36')](_0x194e32[_0xff52('0x31')]['fields']));_0x56f535[_0xff52('0x37')]=_0x56f535[_0xff52('0x37')][_0xff52('0x38')]?_0x56f535['attributes']:_0x236d4f[_0xff52('0x34')];if(_0x194e32[_0xff52('0x31')][_0xff52('0x42')]){_0x56f535[_0xff52('0x43')]=[{'all':!![]}];}_0x56f535=_[_0xff52('0x3e')]({},_0x56f535,_0x194e32['options']);return db['JscriptyAnswerReport'][_0xff52('0x47')](_0x56f535)[_0xff52('0x26')](handleEntityNotFound(_0x16c2e4,null))[_0xff52('0x26')](respondWithResult(_0x16c2e4,null))['catch'](handleError(_0x16c2e4,null));};exports[_0xff52('0x48')]=function(_0x3dfb1a,_0x397a60){return db[_0xff52('0x41')][_0xff52('0x48')](_0x3dfb1a[_0xff52('0x49')],{})['then'](respondWithResult(_0x397a60,0xc9))[_0xff52('0x45')](handleError(_0x397a60,null));};exports[_0xff52('0x25')]=function(_0x314ed0,_0x2874f1){if(_0x314ed0['body']['id']){delete _0x314ed0[_0xff52('0x49')]['id'];}return db[_0xff52('0x41')][_0xff52('0x47')]({'where':{'id':_0x314ed0[_0xff52('0x4a')]['id']}})[_0xff52('0x26')](handleEntityNotFound(_0x2874f1,null))[_0xff52('0x26')](saveUpdates(_0x314ed0[_0xff52('0x49')],null))[_0xff52('0x26')](respondWithResult(_0x2874f1,null))[_0xff52('0x45')](handleError(_0x2874f1,null));};exports[_0xff52('0x27')]=function(_0x208b92,_0x12b43d){return db['JscriptyAnswerReport'][_0xff52('0x47')]({'where':{'id':_0x208b92[_0xff52('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12b43d,null))[_0xff52('0x26')](removeEntity(_0x12b43d,null))[_0xff52('0x45')](handleError(_0x12b43d,null));};exports[_0xff52('0x4b')]=function(_0x11001a,_0x45c3fb){return db[_0xff52('0x41')][_0xff52('0x4b')]()['then'](respondWithResult(_0x45c3fb,null))[_0xff52('0x45')](handleError(_0x45c3fb,null));};
\ No newline at end of file
+var _0x3bd7=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','stack','name','send','index','map','rawAttributes','key','model','keys','filters','intersection','query','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','JscriptyAnswerReport','includeAll','include','findAll','rows','catch','show','params','create','update','body','find','describe','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','to-csv'];(function(_0x225a8,_0x193460){var _0x2da65c=function(_0xf8c447){while(--_0xf8c447){_0x225a8['push'](_0x225a8['shift']());}};_0x2da65c(++_0x193460);}(_0x3bd7,0x199));var _0x73bd=function(_0x154192,_0x2d360f){_0x154192=_0x154192-0x0;var _0x3c2792=_0x3bd7[_0x154192];return _0x3c2792;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x73bd('0x0'));var jsonpatch=require(_0x73bd('0x1'));var rp=require(_0x73bd('0x2'));var moment=require('moment');var BPromise=require(_0x73bd('0x3'));var Mustache=require(_0x73bd('0x4'));var util=require(_0x73bd('0x5'));var path=require('path');var sox=require(_0x73bd('0x6'));var csv=require('to-csv');var ejs=require(_0x73bd('0x7'));var fs=require('fs');var fs_extra=require(_0x73bd('0x8'));var _=require('lodash');var squel=require(_0x73bd('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x73bd('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x73bd('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x73bd('0xc'));var as=require(_0x73bd('0xd'));var hardwareService=require(_0x73bd('0xe'));var logger=require(_0x73bd('0xf'))(_0x73bd('0x10'));var utils=require(_0x73bd('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x73bd('0x12'));var db=require(_0x73bd('0x13'))['db'];function respondWithStatusCode(_0x31c882,_0x41f324){_0x41f324=_0x41f324||0xcc;return function(_0x2a5dea){if(_0x2a5dea){return _0x31c882[_0x73bd('0x14')](_0x41f324);}return _0x31c882['status'](_0x41f324)[_0x73bd('0x15')]();};}function respondWithResult(_0x5c4bc8,_0x189007){_0x189007=_0x189007||0xc8;return function(_0x3eab86){if(_0x3eab86){return _0x5c4bc8[_0x73bd('0x16')](_0x189007)[_0x73bd('0x17')](_0x3eab86);}};}function respondWithFilteredResult(_0x3e628a,_0x5ea8db){return function(_0x41663e){if(_0x41663e){var _0xfdf66=typeof _0x5ea8db[_0x73bd('0x18')]===_0x73bd('0x19')&&typeof _0x5ea8db[_0x73bd('0x1a')]===_0x73bd('0x19');var _0x10e371=_0x41663e[_0x73bd('0x1b')];var _0x21787b=_0xfdf66?0x0:_0x5ea8db['offset'];var _0x1e559b=_0xfdf66?_0x41663e[_0x73bd('0x1b')]:_0x5ea8db[_0x73bd('0x18')]+_0x5ea8db[_0x73bd('0x1a')];var _0x1cb0e3;if(_0x1e559b>=_0x10e371){_0x1e559b=_0x10e371;_0x1cb0e3=0xc8;}else{_0x1cb0e3=0xce;}_0x3e628a[_0x73bd('0x16')](_0x1cb0e3);return _0x3e628a[_0x73bd('0x1c')](_0x73bd('0x1d'),_0x21787b+'-'+_0x1e559b+'/'+_0x10e371)[_0x73bd('0x17')](_0x41663e);}return null;};}function patchUpdates(_0x57d1ec){return function(_0x459965){try{jsonpatch[_0x73bd('0x1e')](_0x459965,_0x57d1ec,!![]);}catch(_0x292f8c){return BPromise['reject'](_0x292f8c);}return _0x459965['save']();};}function saveUpdates(_0x4f23e6,_0x10b388){return function(_0x269e84){if(_0x269e84){return _0x269e84['update'](_0x4f23e6)[_0x73bd('0x1f')](function(_0x22574c){return _0x22574c;});}return null;};}function removeEntity(_0x5b7bbb,_0x325cc1){return function(_0x1e22c5){if(_0x1e22c5){return _0x1e22c5[_0x73bd('0x20')]()[_0x73bd('0x1f')](function(){_0x5b7bbb[_0x73bd('0x16')](0xcc)[_0x73bd('0x15')]();});}};}function handleEntityNotFound(_0x2dd70b,_0x36f7e0){return function(_0x840215){if(!_0x840215){_0x2dd70b[_0x73bd('0x14')](0x194);}return _0x840215;};}function handleError(_0x473527,_0x388698){_0x388698=_0x388698||0x1f4;return function(_0x52e910){logger['error'](_0x52e910[_0x73bd('0x21')]);if(_0x52e910[_0x73bd('0x22')]){delete _0x52e910['name'];}_0x473527[_0x73bd('0x16')](_0x388698)[_0x73bd('0x23')](_0x52e910);};}exports[_0x73bd('0x24')]=function(_0x5ada8d,_0x5ae04e){var _0x2f38fe={},_0x3f15f8={},_0x315318={'count':0x0,'rows':[]};var _0x5be8d6=_[_0x73bd('0x25')](db['JscriptyAnswerReport'][_0x73bd('0x26')],function(_0x2701da){return{'name':_0x2701da['fieldName'],'type':_0x2701da['type'][_0x73bd('0x27')]};});_0x3f15f8[_0x73bd('0x28')]=_[_0x73bd('0x25')](_0x5be8d6,_0x73bd('0x22'));_0x3f15f8['query']=_[_0x73bd('0x29')](_0x5ada8d['query']);_0x3f15f8[_0x73bd('0x2a')]=_[_0x73bd('0x2b')](_0x3f15f8[_0x73bd('0x28')],_0x3f15f8[_0x73bd('0x2c')]);_0x2f38fe['attributes']=_[_0x73bd('0x2b')](_0x3f15f8[_0x73bd('0x28')],qs[_0x73bd('0x2d')](_0x5ada8d[_0x73bd('0x2c')][_0x73bd('0x2d')]));_0x2f38fe[_0x73bd('0x2e')]=_0x2f38fe[_0x73bd('0x2e')][_0x73bd('0x2f')]?_0x2f38fe['attributes']:_0x3f15f8[_0x73bd('0x28')];if(!_0x5ada8d[_0x73bd('0x2c')]['hasOwnProperty'](_0x73bd('0x30'))){_0x2f38fe[_0x73bd('0x1a')]=qs['limit'](_0x5ada8d[_0x73bd('0x2c')]['limit']);_0x2f38fe[_0x73bd('0x18')]=qs['offset'](_0x5ada8d[_0x73bd('0x2c')][_0x73bd('0x18')]);}_0x2f38fe[_0x73bd('0x31')]=qs[_0x73bd('0x32')](_0x5ada8d[_0x73bd('0x2c')][_0x73bd('0x32')]);_0x2f38fe[_0x73bd('0x33')]=qs['filters'](_[_0x73bd('0x34')](_0x5ada8d[_0x73bd('0x2c')],_0x3f15f8['filters']),_0x5be8d6);if(_0x5ada8d[_0x73bd('0x2c')]['filter']){_0x2f38fe[_0x73bd('0x33')]=_[_0x73bd('0x35')](_0x2f38fe[_0x73bd('0x33')],{'$or':_[_0x73bd('0x25')](_0x5be8d6,function(_0x367597){if(_0x367597['type']!==_0x73bd('0x36')){var _0x2de851={};_0x2de851[_0x367597[_0x73bd('0x22')]]={'$like':'%'+_0x5ada8d['query'][_0x73bd('0x37')]+'%'};return _0x2de851;}})});}_0x2f38fe=_[_0x73bd('0x35')]({},_0x2f38fe,_0x5ada8d[_0x73bd('0x38')]);var _0x30e148={'where':_0x2f38fe[_0x73bd('0x33')]};return db[_0x73bd('0x39')][_0x73bd('0x1b')](_0x30e148)[_0x73bd('0x1f')](function(_0x519c3c){_0x315318[_0x73bd('0x1b')]=_0x519c3c;if(_0x5ada8d[_0x73bd('0x2c')][_0x73bd('0x3a')]){_0x2f38fe[_0x73bd('0x3b')]=[{'all':!![]}];}return db[_0x73bd('0x39')][_0x73bd('0x3c')](_0x2f38fe);})[_0x73bd('0x1f')](function(_0x48fed7){_0x315318[_0x73bd('0x3d')]=_0x48fed7;return _0x315318;})[_0x73bd('0x1f')](respondWithFilteredResult(_0x5ae04e,_0x2f38fe))[_0x73bd('0x3e')](handleError(_0x5ae04e,null));};exports[_0x73bd('0x3f')]=function(_0x532afd,_0x142532){var _0x234de7={'raw':!![],'where':{'id':_0x532afd[_0x73bd('0x40')]['id']}},_0xe91596={};_0xe91596[_0x73bd('0x28')]=_['keys'](db[_0x73bd('0x39')]['rawAttributes']);_0xe91596[_0x73bd('0x2c')]=_['keys'](_0x532afd[_0x73bd('0x2c')]);_0xe91596[_0x73bd('0x2a')]=_['intersection'](_0xe91596[_0x73bd('0x28')],_0xe91596[_0x73bd('0x2c')]);_0x234de7[_0x73bd('0x2e')]=_[_0x73bd('0x2b')](_0xe91596[_0x73bd('0x28')],qs['fields'](_0x532afd[_0x73bd('0x2c')][_0x73bd('0x2d')]));_0x234de7[_0x73bd('0x2e')]=_0x234de7[_0x73bd('0x2e')][_0x73bd('0x2f')]?_0x234de7[_0x73bd('0x2e')]:_0xe91596[_0x73bd('0x28')];if(_0x532afd[_0x73bd('0x2c')]['includeAll']){_0x234de7['include']=[{'all':!![]}];}_0x234de7=_[_0x73bd('0x35')]({},_0x234de7,_0x532afd[_0x73bd('0x38')]);return db[_0x73bd('0x39')]['find'](_0x234de7)[_0x73bd('0x1f')](handleEntityNotFound(_0x142532,null))['then'](respondWithResult(_0x142532,null))[_0x73bd('0x3e')](handleError(_0x142532,null));};exports[_0x73bd('0x41')]=function(_0x57df9e,_0x4905a4){return db['JscriptyAnswerReport'][_0x73bd('0x41')](_0x57df9e['body'],{})[_0x73bd('0x1f')](respondWithResult(_0x4905a4,0xc9))['catch'](handleError(_0x4905a4,null));};exports[_0x73bd('0x42')]=function(_0x1e2e28,_0x7b4baf){if(_0x1e2e28[_0x73bd('0x43')]['id']){delete _0x1e2e28['body']['id'];}return db[_0x73bd('0x39')][_0x73bd('0x44')]({'where':{'id':_0x1e2e28[_0x73bd('0x40')]['id']}})[_0x73bd('0x1f')](handleEntityNotFound(_0x7b4baf,null))[_0x73bd('0x1f')](saveUpdates(_0x1e2e28[_0x73bd('0x43')],null))[_0x73bd('0x1f')](respondWithResult(_0x7b4baf,null))[_0x73bd('0x3e')](handleError(_0x7b4baf,null));};exports['destroy']=function(_0x8b88f5,_0x47397d){return db['JscriptyAnswerReport'][_0x73bd('0x44')]({'where':{'id':_0x8b88f5[_0x73bd('0x40')]['id']}})[_0x73bd('0x1f')](handleEntityNotFound(_0x47397d,null))['then'](removeEntity(_0x47397d,null))[_0x73bd('0x3e')](handleError(_0x47397d,null));};exports[_0x73bd('0x45')]=function(_0x23b5ad,_0x2201c7){return db[_0x73bd('0x39')]['describe']()['then'](respondWithResult(_0x2201c7,null))['catch'](handleError(_0x2201c7,null));};
\ No newline at end of file
index 8109f45..d359ec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x156f=['../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','lodash','../../config/logger','moment','path','rimraf'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x156f,0x1b3));var _0xf156=function(_0x229663,_0x5cf711){_0x229663=_0x229663-0x0;var _0x1694cd=_0x156f[_0x229663];return _0x1694cd;};'use strict';var _=require(_0xf156('0x0'));var util=require('util');var logger=require(_0xf156('0x1'))('api');var moment=require(_0xf156('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf156('0x3'));var rimraf=require(_0xf156('0x4'));var config=require(_0xf156('0x5'));var attributes=require(_0xf156('0x6'));module[_0xf156('0x7')]=function(_0x2ba1d0,_0x5ce5da){return _0x2ba1d0[_0xf156('0x8')](_0xf156('0x9'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xee3a=['./jscriptyAnswerReport.attributes','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xee3a,0x93));var _0xaee3=function(_0x1f8f4e,_0x100d83){_0x1f8f4e=_0x1f8f4e-0x0;var _0x4708fb=_0xee3a[_0x1f8f4e];return _0x4708fb;};'use strict';var _=require(_0xaee3('0x0'));var util=require(_0xaee3('0x1'));var logger=require('../../config/logger')(_0xaee3('0x2'));var moment=require(_0xaee3('0x3'));var BPromise=require(_0xaee3('0x4'));var rp=require(_0xaee3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaee3('0x6'));var attributes=require(_0xaee3('0x7'));module['exports']=function(_0x27409c,_0x1cfbf5){return _0x27409c[_0xaee3('0x8')](_0xaee3('0x9'),attributes,{'tableName':_0xaee3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7a2251d..53a3812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae33=['info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x37eca3,_0x24cdad){var _0x241c4b=function(_0xa4531d){while(--_0xa4531d){_0x37eca3['push'](_0x37eca3['shift']());}};_0x241c4b(++_0x24cdad);}(_0xae33,0x1d1));var _0x3ae3=function(_0x57b8f5,_0x1b49d7){_0x57b8f5=_0x57b8f5-0x0;var _0x2c4eab=_0xae33[_0x57b8f5];return _0x2c4eab;};'use strict';var _=require('lodash');var util=require(_0x3ae3('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3ae3('0x1'));var fs=require('fs');var Redis=require(_0x3ae3('0x2'));var db=require(_0x3ae3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x3ae3('0x4'))('rpc');var config=require(_0x3ae3('0x5'));var jayson=require(_0x3ae3('0x6'));var client=jayson[_0x3ae3('0x7')][_0x3ae3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1493c3,_0x203333,_0x710df3){return new BPromise(function(_0xa6db1a,_0x1caf1e){return client[_0x3ae3('0x9')](_0x1493c3,_0x710df3)['then'](function(_0x174cf0){logger[_0x3ae3('0xa')](_0x3ae3('0xb'),_0x203333,_0x3ae3('0xc'));logger['debug'](_0x3ae3('0xd'),_0x203333,_0x3ae3('0xc'),JSON[_0x3ae3('0xe')](_0x174cf0));if(_0x174cf0[_0x3ae3('0xf')]){if(_0x174cf0[_0x3ae3('0xf')][_0x3ae3('0x10')]===0x1f4){logger[_0x3ae3('0xf')](_0x3ae3('0xb'),_0x203333,_0x174cf0[_0x3ae3('0xf')][_0x3ae3('0x11')]);return _0x1caf1e(_0x174cf0[_0x3ae3('0xf')][_0x3ae3('0x11')]);}logger[_0x3ae3('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x203333,_0x174cf0[_0x3ae3('0xf')][_0x3ae3('0x11')]);return _0xa6db1a(_0x174cf0[_0x3ae3('0xf')][_0x3ae3('0x11')]);}else{logger[_0x3ae3('0xa')](_0x3ae3('0xb'),_0x203333,_0x3ae3('0xc'));_0xa6db1a(_0x174cf0['result'][_0x3ae3('0x11')]);}})[_0x3ae3('0x12')](function(_0x1d6c0a){logger[_0x3ae3('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x203333,_0x1d6c0a);_0x1caf1e(_0x1d6c0a);});});}
\ No newline at end of file
+var _0xa24d=['http','request','then','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x155774,_0x3e0b67){var _0x3fe156=function(_0x23bad8){while(--_0x23bad8){_0x155774['push'](_0x155774['shift']());}};_0x3fe156(++_0x3e0b67);}(_0xa24d,0x1c1));var _0xda24=function(_0x2ffee8,_0x126cdd){_0x2ffee8=_0x2ffee8-0x0;var _0x432ebf=_0xa24d[_0x2ffee8];return _0x432ebf;};'use strict';var _=require(_0xda24('0x0'));var util=require(_0xda24('0x1'));var moment=require(_0xda24('0x2'));var BPromise=require(_0xda24('0x3'));var rs=require(_0xda24('0x4'));var fs=require('fs');var Redis=require(_0xda24('0x5'));var db=require(_0xda24('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xda24('0x7'))(_0xda24('0x8'));var config=require(_0xda24('0x9'));var jayson=require(_0xda24('0xa'));var client=jayson['client'][_0xda24('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xdba54e,_0x5868af,_0x3d0ec5){return new BPromise(function(_0x48117a,_0x446e2e){return client[_0xda24('0xc')](_0xdba54e,_0x3d0ec5)[_0xda24('0xd')](function(_0x1dccb2){logger['info'](_0xda24('0xe'),_0x5868af,_0xda24('0xf'));logger[_0xda24('0x10')](_0xda24('0x11'),_0x5868af,_0xda24('0xf'),JSON['stringify'](_0x1dccb2));if(_0x1dccb2[_0xda24('0x12')]){if(_0x1dccb2['error'][_0xda24('0x13')]===0x1f4){logger[_0xda24('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x5868af,_0x1dccb2['error'][_0xda24('0x14')]);return _0x446e2e(_0x1dccb2[_0xda24('0x12')][_0xda24('0x14')]);}logger[_0xda24('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x5868af,_0x1dccb2[_0xda24('0x12')]['message']);return _0x48117a(_0x1dccb2[_0xda24('0x12')][_0xda24('0x14')]);}else{logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x5868af,_0xda24('0xf'));_0x48117a(_0x1dccb2[_0xda24('0x15')][_0xda24('0x14')]);}})[_0xda24('0x16')](function(_0x3348e0){logger[_0xda24('0x12')](_0xda24('0xe'),_0x5868af,_0x3348e0);_0x446e2e(_0x3348e0);});});}
\ No newline at end of file
index 6ce5f61..b5b73fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe35b=['multer','path','express','fs-extra','../../components/interaction/service','./jscriptyProject.controller','index','/:id','isAuthenticated','show','get','/:id/sessions','getSessions','/:id/answers','/:id/summary','getSummary','post','create','/:id/clone','clone','put','update','delete'];(function(_0x39bfb6,_0x4272c8){var _0x23fef9=function(_0x5f83c1){while(--_0x5f83c1){_0x39bfb6['push'](_0x39bfb6['shift']());}};_0x23fef9(++_0x4272c8);}(_0xe35b,0xb8));var _0xbe35=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xe35b[_0xc6be3a];return _0x56a310;};'use strict';var multer=require(_0xbe35('0x0'));var util=require('util');var path=require(_0xbe35('0x1'));var timeout=require('connect-timeout');var express=require(_0xbe35('0x2'));var router=express['Router']();var fs_extra=require(_0xbe35('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xbe35('0x4'));var config=require('../../config/environment');var controller=require(_0xbe35('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xbe35('0x6')]);router['get'](_0xbe35('0x7'),auth[_0xbe35('0x8')](),controller[_0xbe35('0x9')]);router[_0xbe35('0xa')](_0xbe35('0xb'),auth[_0xbe35('0x8')](),controller[_0xbe35('0xc')]);router['get'](_0xbe35('0xd'),auth[_0xbe35('0x8')](),controller['getAnswers']);router[_0xbe35('0xa')](_0xbe35('0xe'),auth[_0xbe35('0x8')](),timeout('30s'),controller[_0xbe35('0xf')]);router[_0xbe35('0x10')]('/',auth[_0xbe35('0x8')](),controller[_0xbe35('0x11')]);router['post'](_0xbe35('0x12'),auth[_0xbe35('0x8')](),controller[_0xbe35('0x13')]);router[_0xbe35('0x14')]('/:id',auth[_0xbe35('0x8')](),controller[_0xbe35('0x15')]);router[_0xbe35('0x16')](_0xbe35('0x7'),auth[_0xbe35('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x13b8=['getSessions','/:id/answers','getAnswers','/:id/summary','30s','create','/:id/clone','clone','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions'];(function(_0x2701d0,_0x337692){var _0x2382a2=function(_0x23f159){while(--_0x23f159){_0x2701d0['push'](_0x2701d0['shift']());}};_0x2382a2(++_0x337692);}(_0x13b8,0x12f));var _0x813b=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0x13b8[_0x3a6efd];return _0x487b9a;};'use strict';var multer=require(_0x813b('0x0'));var util=require(_0x813b('0x1'));var path=require('path');var timeout=require(_0x813b('0x2'));var express=require(_0x813b('0x3'));var router=express[_0x813b('0x4')]();var fs_extra=require(_0x813b('0x5'));var auth=require(_0x813b('0x6'));var interaction=require(_0x813b('0x7'));var config=require(_0x813b('0x8'));var controller=require(_0x813b('0x9'));router[_0x813b('0xa')]('/',auth[_0x813b('0xb')](),controller[_0x813b('0xc')]);router[_0x813b('0xa')](_0x813b('0xd'),auth[_0x813b('0xb')](),controller[_0x813b('0xe')]);router['get'](_0x813b('0xf'),auth[_0x813b('0xb')](),controller[_0x813b('0x10')]);router['get'](_0x813b('0x11'),auth[_0x813b('0xb')](),controller[_0x813b('0x12')]);router[_0x813b('0xa')](_0x813b('0x13'),auth[_0x813b('0xb')](),timeout(_0x813b('0x14')),controller['getSummary']);router['post']('/',auth[_0x813b('0xb')](),controller[_0x813b('0x15')]);router['post'](_0x813b('0x16'),auth['isAuthenticated'](),controller[_0x813b('0x17')]);router[_0x813b('0x18')](_0x813b('0xd'),auth[_0x813b('0xb')](),controller[_0x813b('0x19')]);router[_0x813b('0x1a')]('/:id',auth[_0x813b('0xb')](),controller[_0x813b('0x1b')]);module[_0x813b('0x1c')]=router;
\ No newline at end of file
index 8994287..770cfa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa784=['STRING','TEXT','long','isObjectLike','formData','stringify','isString','setDataValue','format','getDataValue','description','BOOLEAN','sequelize','util','name'];(function(_0x1c7386,_0x30edec){var _0x263544=function(_0x4d57fd){while(--_0x4d57fd){_0x1c7386['push'](_0x1c7386['shift']());}};_0x263544(++_0x30edec);}(_0xa784,0x75));var _0x4a78=function(_0x147903,_0x2440e2){_0x147903=_0x147903-0x0;var _0x3650b8=_0xa784[_0x147903];return _0x3650b8;};'use strict';var Sequelize=require(_0x4a78('0x0'));var _=require('lodash');var util=require(_0x4a78('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x4a78('0x2')},'description':{'type':Sequelize[_0x4a78('0x3')]},'formData':{'type':Sequelize[_0x4a78('0x4')](_0x4a78('0x5')),'set':function(_0x105db8){if(_[_0x4a78('0x6')](_0x105db8)){this['setDataValue'](_0x4a78('0x7'),JSON[_0x4a78('0x8')](_0x105db8));}else if(_[_0x4a78('0x9')](_0x105db8)){this[_0x4a78('0xa')]('formData',_0x105db8);}else{this[_0x4a78('0xa')](_0x4a78('0x7'),util[_0x4a78('0xb')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0x4a78('0xc')](_0x4a78('0x2'))||'',this[_0x4a78('0xc')](_0x4a78('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x4a78('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x1549=['formData','stringify','isString','setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','STRING','name','long','isObjectLike'];(function(_0x4104ca,_0x2eaf1b){var _0x3a0fd0=function(_0xe642ee){while(--_0xe642ee){_0x4104ca['push'](_0x4104ca['shift']());}};_0x3a0fd0(++_0x2eaf1b);}(_0x1549,0x119));var _0x9154=function(_0x57d370,_0x3ed0f6){_0x57d370=_0x57d370-0x0;var _0x550fd2=_0x1549[_0x57d370];return _0x550fd2;};'use strict';var Sequelize=require(_0x9154('0x0'));var _=require(_0x9154('0x1'));var util=require(_0x9154('0x2'));module[_0x9154('0x3')]={'name':{'type':Sequelize[_0x9154('0x4')],'unique':_0x9154('0x5')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize['TEXT'](_0x9154('0x6')),'set':function(_0x6e0a66){if(_[_0x9154('0x7')](_0x6e0a66)){this['setDataValue'](_0x9154('0x8'),JSON[_0x9154('0x9')](_0x6e0a66));}else if(_[_0x9154('0xa')](_0x6e0a66)){this[_0x9154('0xb')]('formData',_0x6e0a66);}else{this[_0x9154('0xb')](_0x9154('0x8'),util[_0x9154('0xc')](_0x9154('0xd'),this['getDataValue'](_0x9154('0x5'))||'',this[_0x9154('0xe')](_0x9154('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x9154('0x10')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 3d36581..1f59cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a5=['now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','format','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','Projects','UserProfileResource','error','name','send','index','map','JscriptyProject','rawAttributes','fieldName','type','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','getSessions','JscriptySessionReport','ProjectId','getAnswers','findOne','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty'];(function(_0x5b21a2,_0x2c6461){var _0x57166b=function(_0x2c0c1a){while(--_0x2c0c1a){_0x5b21a2['push'](_0x5b21a2['shift']());}};_0x57166b(++_0x2c6461);}(_0x68a5,0xfc));var _0x568a=function(_0x325e25,_0x25e559){_0x325e25=_0x325e25-0x0;var _0x4f9bd5=_0x68a5[_0x325e25];return _0x4f9bd5;};'use strict';var emlformat=require(_0x568a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x568a('0x1'));var jsonpatch=require(_0x568a('0x2'));var rp=require('request-promise');var moment=require(_0x568a('0x3'));var BPromise=require(_0x568a('0x4'));var Mustache=require(_0x568a('0x5'));var util=require(_0x568a('0x6'));var path=require('path');var sox=require(_0x568a('0x7'));var csv=require('to-csv');var ejs=require(_0x568a('0x8'));var fs=require('fs');var fs_extra=require(_0x568a('0x9'));var _=require(_0x568a('0xa'));var squel=require(_0x568a('0xb'));var crypto=require('crypto');var jsforce=require(_0x568a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x568a('0xd'));var querystring=require(_0x568a('0xe'));var Papa=require(_0x568a('0xf'));var Redis=require(_0x568a('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x568a('0x11'));var hardwareService=require(_0x568a('0x12'));var logger=require('../../config/logger')(_0x568a('0x13'));var utils=require('../../config/utils');var config=require(_0x568a('0x14'));var licenseUtil=require(_0x568a('0x15'));var db=require(_0x568a('0x16'))['db'];function respondWithStatusCode(_0x22bc5b,_0x365871){_0x365871=_0x365871||0xcc;return function(_0x26901e){if(_0x26901e){return _0x22bc5b[_0x568a('0x17')](_0x365871);}return _0x22bc5b[_0x568a('0x18')](_0x365871)[_0x568a('0x19')]();};}function respondWithResult(_0x37903b,_0x3dd9af){_0x3dd9af=_0x3dd9af||0xc8;return function(_0x3be5fe){if(_0x3be5fe){return _0x37903b[_0x568a('0x18')](_0x3dd9af)[_0x568a('0x1a')](_0x3be5fe);}};}function respondWithFilteredResult(_0x110ac2,_0x1f9cc4){return function(_0x375bac){if(_0x375bac){var _0x4e6f9a=typeof _0x1f9cc4[_0x568a('0x1b')]==='undefined'&&typeof _0x1f9cc4[_0x568a('0x1c')]===_0x568a('0x1d');var _0x497ee0=_0x375bac[_0x568a('0x1e')];var _0x561ae1=_0x4e6f9a?0x0:_0x1f9cc4[_0x568a('0x1b')];var _0x1c8e3a=_0x4e6f9a?_0x375bac[_0x568a('0x1e')]:_0x1f9cc4[_0x568a('0x1b')]+_0x1f9cc4['limit'];var _0x859a7b;if(_0x1c8e3a>=_0x497ee0){_0x1c8e3a=_0x497ee0;_0x859a7b=0xc8;}else{_0x859a7b=0xce;}_0x110ac2['status'](_0x859a7b);return _0x110ac2[_0x568a('0x1f')](_0x568a('0x20'),_0x561ae1+'-'+_0x1c8e3a+'/'+_0x497ee0)[_0x568a('0x1a')](_0x375bac);}return null;};}function patchUpdates(_0x3b9968){return function(_0x252bb8){try{jsonpatch[_0x568a('0x21')](_0x252bb8,_0x3b9968,!![]);}catch(_0x2d649b){return BPromise[_0x568a('0x22')](_0x2d649b);}return _0x252bb8['save']();};}function saveUpdates(_0x3171d8,_0x1f12b5){return function(_0x5f5dd1){if(_0x5f5dd1){return _0x5f5dd1[_0x568a('0x23')](_0x3171d8)[_0x568a('0x24')](function(_0x1ad112){return _0x1ad112;});}return null;};}function removeEntity(_0x4f5c30,_0x1826aa){return function(_0x378f0e){if(_0x378f0e){return _0x378f0e[_0x568a('0x25')]()[_0x568a('0x24')](function(){var _0xdb83a1=_0x378f0e[_0x568a('0x26')]({'plain':!![]});var _0x1dcda2=_0x568a('0x27');return db[_0x568a('0x28')]['destroy']({'where':{'type':_0x1dcda2,'resourceId':_0xdb83a1['id']}})[_0x568a('0x24')](function(){return _0x378f0e;});})[_0x568a('0x24')](function(){_0x4f5c30[_0x568a('0x18')](0xcc)[_0x568a('0x19')]();});}};}function handleEntityNotFound(_0x45f7e8,_0x438402){return function(_0x5d8c2e){if(!_0x5d8c2e){_0x45f7e8[_0x568a('0x17')](0x194);}return _0x5d8c2e;};}function handleError(_0x3d14ab,_0x1575d6){_0x1575d6=_0x1575d6||0x1f4;return function(_0x23d444){logger[_0x568a('0x29')](_0x23d444['stack']);if(_0x23d444[_0x568a('0x2a')]){delete _0x23d444[_0x568a('0x2a')];}_0x3d14ab[_0x568a('0x18')](_0x1575d6)[_0x568a('0x2b')](_0x23d444);};}exports[_0x568a('0x2c')]=function(_0x153e1a,_0x398cae){var _0x396ee9={},_0xec2388={},_0x464d34={'count':0x0,'rows':[]};var _0x4fa7b5=_[_0x568a('0x2d')](db[_0x568a('0x2e')][_0x568a('0x2f')],function(_0x21702d){return{'name':_0x21702d[_0x568a('0x30')],'type':_0x21702d[_0x568a('0x31')]['key']};});_0xec2388['model']=_['map'](_0x4fa7b5,_0x568a('0x2a'));_0xec2388[_0x568a('0x32')]=_[_0x568a('0x33')](_0x153e1a[_0x568a('0x32')]);_0xec2388[_0x568a('0x34')]=_['intersection'](_0xec2388['model'],_0xec2388[_0x568a('0x32')]);_0x396ee9[_0x568a('0x35')]=_[_0x568a('0x36')](_0xec2388[_0x568a('0x37')],qs[_0x568a('0x38')](_0x153e1a['query'][_0x568a('0x38')]));_0x396ee9['attributes']=_0x396ee9[_0x568a('0x35')][_0x568a('0x39')]?_0x396ee9['attributes']:_0xec2388[_0x568a('0x37')];if(!_0x153e1a['query'][_0x568a('0x3a')](_0x568a('0x3b'))){_0x396ee9[_0x568a('0x1c')]=qs['limit'](_0x153e1a['query'][_0x568a('0x1c')]);_0x396ee9[_0x568a('0x1b')]=qs[_0x568a('0x1b')](_0x153e1a[_0x568a('0x32')][_0x568a('0x1b')]);}_0x396ee9[_0x568a('0x3c')]=qs[_0x568a('0x3d')](_0x153e1a['query']['sort']);_0x396ee9[_0x568a('0x3e')]=qs[_0x568a('0x34')](_[_0x568a('0x3f')](_0x153e1a['query'],_0xec2388['filters']),_0x4fa7b5);if(_0x153e1a[_0x568a('0x32')][_0x568a('0x40')]){_0x396ee9['where']=_[_0x568a('0x41')](_0x396ee9[_0x568a('0x3e')],{'$or':_['map'](_0x4fa7b5,function(_0x2e9eca){if(_0x2e9eca[_0x568a('0x31')]!==_0x568a('0x42')){var _0x29ec29={};_0x29ec29[_0x2e9eca[_0x568a('0x2a')]]={'$like':'%'+_0x153e1a[_0x568a('0x32')]['filter']+'%'};return _0x29ec29;}})});}_0x396ee9=_['merge']({},_0x396ee9,_0x153e1a[_0x568a('0x43')]);var _0x3f56e8={'where':_0x396ee9[_0x568a('0x3e')]};return db[_0x568a('0x2e')][_0x568a('0x1e')](_0x3f56e8)[_0x568a('0x24')](function(_0x3ba483){_0x464d34[_0x568a('0x1e')]=_0x3ba483;if(_0x153e1a['query'][_0x568a('0x44')]){_0x396ee9[_0x568a('0x45')]=[{'all':!![]}];}return db[_0x568a('0x2e')][_0x568a('0x46')](_0x396ee9);})[_0x568a('0x24')](function(_0x5adee0){_0x464d34[_0x568a('0x47')]=_0x5adee0;return _0x464d34;})['then'](respondWithFilteredResult(_0x398cae,_0x396ee9))[_0x568a('0x48')](handleError(_0x398cae,null));};exports[_0x568a('0x49')]=function(_0x425a64,_0x238644){var _0x3079c2={'raw':![],'where':{'id':_0x425a64[_0x568a('0x4a')]['id']}},_0x1d4c36={};_0x1d4c36['model']=_[_0x568a('0x33')](db[_0x568a('0x2e')][_0x568a('0x2f')]);_0x1d4c36['query']=_[_0x568a('0x33')](_0x425a64['query']);_0x1d4c36['filters']=_[_0x568a('0x36')](_0x1d4c36['model'],_0x1d4c36[_0x568a('0x32')]);_0x3079c2[_0x568a('0x35')]=_['intersection'](_0x1d4c36[_0x568a('0x37')],qs[_0x568a('0x38')](_0x425a64[_0x568a('0x32')][_0x568a('0x38')]));_0x3079c2[_0x568a('0x35')]=_0x3079c2['attributes'][_0x568a('0x39')]?_0x3079c2[_0x568a('0x35')]:_0x1d4c36['model'];if(_0x425a64[_0x568a('0x32')][_0x568a('0x44')]){_0x3079c2[_0x568a('0x45')]=[{'all':!![]}];}_0x3079c2=_[_0x568a('0x41')]({},_0x3079c2,_0x425a64[_0x568a('0x43')]);return db[_0x568a('0x2e')][_0x568a('0x4b')](_0x3079c2)['then'](handleEntityNotFound(_0x238644,null))[_0x568a('0x24')](respondWithResult(_0x238644,null))[_0x568a('0x48')](handleError(_0x238644,null));};exports['create']=function(_0x387c29,_0x2ce092){return db['JscriptyProject'][_0x568a('0x4c')](_0x387c29['body'],{})[_0x568a('0x24')](function(_0x3b21ac){var _0x2e3dc7=_0x387c29[_0x568a('0x4d')][_0x568a('0x26')]({'plain':!![]});if(!_0x2e3dc7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2e3dc7[_0x568a('0x4e')]===_0x568a('0x4d')){var _0x48a906=_0x3b21ac[_0x568a('0x26')]({'plain':!![]});var _0xc5f51a=_0x568a('0x27');return db[_0x568a('0x4f')]['find']({'where':{'name':_0xc5f51a,'userProfileId':_0x2e3dc7[_0x568a('0x50')]},'raw':!![]})[_0x568a('0x24')](function(_0x314b77){if(_0x314b77&&_0x314b77[_0x568a('0x51')]===0x0){return db[_0x568a('0x28')][_0x568a('0x4c')]({'name':_0x48a906[_0x568a('0x2a')],'resourceId':_0x48a906['id'],'type':_0x314b77[_0x568a('0x2a')],'sectionId':_0x314b77['id']},{})['then'](function(){return _0x3b21ac;});}else{return _0x3b21ac;}})[_0x568a('0x48')](function(_0x1a153b){logger[_0x568a('0x29')](_0x568a('0x52'),_0x1a153b);throw _0x1a153b;});}return _0x3b21ac;})[_0x568a('0x24')](respondWithResult(_0x2ce092,0xc9))['catch'](handleError(_0x2ce092,null));};exports[_0x568a('0x53')]=function(_0x4a5cd7,_0x2edcf8){var _0x3ad506={'where':{'id':_0x4a5cd7[_0x568a('0x4a')]['id']}},_0x459f28={};_0x459f28['model']=_[_0x568a('0x33')](db[_0x568a('0x2e')][_0x568a('0x2f')]);_0x3ad506[_0x568a('0x35')]=_[_0x568a('0x36')](_0x459f28[_0x568a('0x37')],qs[_0x568a('0x38')](_0x4a5cd7[_0x568a('0x32')][_0x568a('0x38')]));_0x3ad506[_0x568a('0x35')]=_0x3ad506[_0x568a('0x35')][_0x568a('0x39')]?_0x3ad506[_0x568a('0x35')]:_0x459f28[_0x568a('0x37')];if(_0x4a5cd7[_0x568a('0x32')][_0x568a('0x44')]){_0x3ad506[_0x568a('0x45')]=[{'all':!![]}];}_0x3ad506=_['merge']({},_0x3ad506,_0x4a5cd7[_0x568a('0x43')]);return db['JscriptyProject'][_0x568a('0x4b')](_0x3ad506)['then'](handleEntityNotFound(_0x2edcf8,null))['then'](function(_0x15ecc7){if(_0x15ecc7){var _0x501d32=_0x15ecc7['get']({'plain':!![]});_0x501d32=qs[_0x568a('0x54')](_0x501d32,['id','createdAt',_0x568a('0x55')]);_0x4a5cd7[_0x568a('0x56')]=_[_0x568a('0x54')](_0x4a5cd7[_0x568a('0x56')],['id','createdAt',_0x568a('0x55')]);return db[_0x568a('0x2e')][_0x568a('0x4c')](_[_0x568a('0x41')](_0x501d32,_0x4a5cd7['body']),{'include':_0x4a5cd7[_0x568a('0x32')][_0x568a('0x44')]?[{'all':!![]}]:undefined})[_0x568a('0x24')](function(_0x50b1ed){var _0x5eee74=_0x4a5cd7[_0x568a('0x4d')][_0x568a('0x26')]({'plain':!![]});if(!_0x5eee74)throw new Error(_0x568a('0x57'));if(_0x5eee74['role']==='user'){var _0x350e2d=_0x50b1ed['get']({'plain':!![]});var _0x2a0bd1=_0x568a('0x27');return db['UserProfileSection'][_0x568a('0x4b')]({'where':{'name':_0x2a0bd1,'userProfileId':_0x5eee74[_0x568a('0x50')]},'raw':!![]})[_0x568a('0x24')](function(_0x4eee2e){if(_0x4eee2e&&_0x4eee2e[_0x568a('0x51')]===0x0){return db[_0x568a('0x28')][_0x568a('0x4c')]({'name':_0x350e2d[_0x568a('0x2a')],'resourceId':_0x350e2d['id'],'type':_0x4eee2e[_0x568a('0x2a')],'sectionId':_0x4eee2e['id']},{})[_0x568a('0x24')](function(){return _0x50b1ed;});}else{return _0x50b1ed;}})[_0x568a('0x48')](function(_0x573f81){logger[_0x568a('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x573f81);throw _0x573f81;});}return _0x50b1ed;});}})['then'](respondWithResult(_0x2edcf8,0xc9))[_0x568a('0x48')](handleError(_0x2edcf8,null));};exports[_0x568a('0x23')]=function(_0x57e4b7,_0x553ff5){if(_0x57e4b7[_0x568a('0x56')]['id']){delete _0x57e4b7['body']['id'];}return db['JscriptyProject'][_0x568a('0x4b')]({'where':{'id':_0x57e4b7[_0x568a('0x4a')]['id']}})[_0x568a('0x24')](handleEntityNotFound(_0x553ff5,null))[_0x568a('0x24')](saveUpdates(_0x57e4b7[_0x568a('0x56')],null))['then'](respondWithResult(_0x553ff5,null))[_0x568a('0x48')](handleError(_0x553ff5,null));};exports['destroy']=function(_0x1f0754,_0x502e05){return db[_0x568a('0x2e')][_0x568a('0x4b')]({'where':{'id':_0x1f0754['params']['id']}})[_0x568a('0x24')](handleEntityNotFound(_0x502e05,null))[_0x568a('0x24')](removeEntity(_0x502e05,null))[_0x568a('0x48')](handleError(_0x502e05,null));};exports[_0x568a('0x58')]=function(_0x5d0c80,_0x17c09c,_0x205425){var _0x4340e4={'raw':!![],'where':{}};var _0x183597={};var _0x1840e7={'count':0x0,'rows':[]};return db[_0x568a('0x2e')]['findOne']({'where':{'id':_0x5d0c80['params']['id']}})['then'](handleEntityNotFound(_0x17c09c,null))[_0x568a('0x24')](function(_0x972ab1){if(_0x972ab1){_0x183597[_0x568a('0x37')]=_[_0x568a('0x33')](db[_0x568a('0x59')][_0x568a('0x2f')]);_0x183597[_0x568a('0x32')]=_[_0x568a('0x33')](_0x5d0c80[_0x568a('0x32')]);_0x183597[_0x568a('0x34')]=_[_0x568a('0x36')](_0x183597[_0x568a('0x37')],_0x183597[_0x568a('0x32')]);_0x4340e4['attributes']=_[_0x568a('0x36')](_0x183597[_0x568a('0x37')],qs['fields'](_0x5d0c80['query'][_0x568a('0x38')]));_0x4340e4[_0x568a('0x35')]=_0x4340e4['attributes'][_0x568a('0x39')]?_0x4340e4[_0x568a('0x35')]:_0x183597['model'];if(!_0x5d0c80['query'][_0x568a('0x3a')](_0x568a('0x3b'))){_0x4340e4[_0x568a('0x1c')]=qs[_0x568a('0x1c')](_0x5d0c80[_0x568a('0x32')][_0x568a('0x1c')]);_0x4340e4[_0x568a('0x1b')]=qs[_0x568a('0x1b')](_0x5d0c80[_0x568a('0x32')][_0x568a('0x1b')]);}_0x4340e4[_0x568a('0x3c')]=qs[_0x568a('0x3d')](_0x5d0c80[_0x568a('0x32')][_0x568a('0x3d')]);_0x4340e4[_0x568a('0x3e')]=qs[_0x568a('0x34')](_[_0x568a('0x3f')](_0x5d0c80[_0x568a('0x32')],_0x183597[_0x568a('0x34')]));_0x4340e4[_0x568a('0x3e')][_0x568a('0x5a')]=_0x972ab1['id'];if(_0x5d0c80[_0x568a('0x32')][_0x568a('0x40')]){_0x4340e4[_0x568a('0x3e')]=_[_0x568a('0x41')](_0x4340e4['where'],{'$or':_['map'](_0x4340e4[_0x568a('0x35')],function(_0x51243d){var _0xa9ba7d={};_0xa9ba7d[_0x51243d]={'$like':'%'+_0x5d0c80[_0x568a('0x32')][_0x568a('0x40')]+'%'};return _0xa9ba7d;})});}_0x4340e4=_['merge']({},_0x4340e4,_0x5d0c80[_0x568a('0x43')]);return db['JscriptySessionReport'][_0x568a('0x1e')]({'where':_0x4340e4[_0x568a('0x3e')]})[_0x568a('0x24')](function(_0x3f3242){_0x1840e7[_0x568a('0x1e')]=_0x3f3242;if(_0x5d0c80[_0x568a('0x32')]['includeAll']){_0x4340e4[_0x568a('0x45')]=[{'all':!![]}];}return db[_0x568a('0x59')][_0x568a('0x46')](_0x4340e4);})['then'](function(_0x2a25b2){_0x1840e7[_0x568a('0x47')]=_0x2a25b2;return _0x1840e7;});}})[_0x568a('0x24')](respondWithFilteredResult(_0x17c09c,_0x4340e4))['catch'](handleError(_0x17c09c,null));};exports[_0x568a('0x5b')]=function(_0xa334de,_0x4fa3b2,_0x244c18){var _0x3e4942={'raw':!![],'where':{}};var _0xeb6b77={};var _0x146283={'count':0x0,'rows':[]};return db[_0x568a('0x2e')][_0x568a('0x5c')]({'where':{'id':_0xa334de[_0x568a('0x4a')]['id']}})[_0x568a('0x24')](handleEntityNotFound(_0x4fa3b2,null))[_0x568a('0x24')](function(_0x2a1d67){if(_0x2a1d67){_0xeb6b77[_0x568a('0x37')]=_[_0x568a('0x33')](db[_0x568a('0x5d')][_0x568a('0x2f')]);_0xeb6b77[_0x568a('0x32')]=_['keys'](_0xa334de[_0x568a('0x32')]);_0xeb6b77[_0x568a('0x34')]=_[_0x568a('0x36')](_0xeb6b77[_0x568a('0x37')],_0xeb6b77['query']);_0x3e4942[_0x568a('0x35')]=_[_0x568a('0x36')](_0xeb6b77['model'],qs[_0x568a('0x38')](_0xa334de[_0x568a('0x32')]['fields']));_0x3e4942['attributes']=_0x3e4942[_0x568a('0x35')][_0x568a('0x39')]?_0x3e4942[_0x568a('0x35')]:_0xeb6b77[_0x568a('0x37')];if(!_0xa334de['query'][_0x568a('0x3a')](_0x568a('0x3b'))){_0x3e4942[_0x568a('0x1c')]=qs[_0x568a('0x1c')](_0xa334de['query'][_0x568a('0x1c')]);_0x3e4942[_0x568a('0x1b')]=qs[_0x568a('0x1b')](_0xa334de[_0x568a('0x32')]['offset']);}_0x3e4942[_0x568a('0x3c')]=qs['sort'](_0xa334de[_0x568a('0x32')][_0x568a('0x3d')]);_0x3e4942[_0x568a('0x3e')]=qs[_0x568a('0x34')](_[_0x568a('0x3f')](_0xa334de[_0x568a('0x32')],_0xeb6b77[_0x568a('0x34')]));_0x3e4942[_0x568a('0x3e')][_0x568a('0x5a')]=_0x2a1d67['id'];if(_0xa334de[_0x568a('0x32')][_0x568a('0x40')]){_0x3e4942[_0x568a('0x3e')]=_[_0x568a('0x41')](_0x3e4942[_0x568a('0x3e')],{'$or':_['map'](_0x3e4942['attributes'],function(_0x1ef9db){var _0x46a0e6={};_0x46a0e6[_0x1ef9db]={'$like':'%'+_0xa334de[_0x568a('0x32')][_0x568a('0x40')]+'%'};return _0x46a0e6;})});}_0x3e4942=_[_0x568a('0x41')]({},_0x3e4942,_0xa334de[_0x568a('0x43')]);return db[_0x568a('0x5d')][_0x568a('0x1e')]({'where':_0x3e4942[_0x568a('0x3e')]})[_0x568a('0x24')](function(_0x432ab2){_0x146283[_0x568a('0x1e')]=_0x432ab2;if(_0xa334de[_0x568a('0x32')][_0x568a('0x44')]){_0x3e4942[_0x568a('0x45')]=[{'all':!![]}];}return db[_0x568a('0x5d')]['findAll'](_0x3e4942);})[_0x568a('0x24')](function(_0x5b17e6){_0x146283['rows']=_0x5b17e6;return _0x146283;});}})[_0x568a('0x24')](respondWithFilteredResult(_0x4fa3b2,_0x3e4942))['catch'](handleError(_0x4fa3b2,null));};function char(_0xf9ceab){return _0x568a('0x5e')===typeof _0xf9ceab?String[_0x568a('0x5f')][_0x568a('0x21')](null,arguments):_0xf9ceab;}function needsEncapsulation(_0x3554ca){return!!_0x3554ca&&(_0x3554ca['toString']()['indexOf'](char(0xd))>=0x0||_0x3554ca[_0x568a('0x60')]()[_0x568a('0x61')](char(0xa))>=0x0||_0x3554ca[_0x568a('0x60')]()[_0x568a('0x61')](char(0x2c))>=0x0||_0x3554ca['toString']()[_0x568a('0x61')](char(0x22))>=0x0);}function encapsulate(_0x180718){var _0x52967f=char(0x22),_0x568944='\x5c'+char(0x22),_0x5237e5=_0x180718[_0x568a('0x60')]()[_0x568a('0x62')](new RegExp(_0x52967f,'g'),_0x568944);return _0x52967f+_0x5237e5+_0x52967f;}exports[_0x568a('0x63')]=function(_0x4e91ec,_0x289d98,_0x7f23a8){var _0x5d8e5e,_0x1c29a1;var _0x3c5aed={'where':{'ProjectId':_0x4e91ec['params']['id']}};if(_0x4e91ec[_0x568a('0x32')][_0x568a('0x64')]){_0x3c5aed[_0x568a('0x3e')][_0x568a('0x65')]=JSON[_0x568a('0x66')](_0x4e91ec[_0x568a('0x32')][_0x568a('0x64')]);}return db[_0x568a('0x59')][_0x568a('0x46')](_0x3c5aed)['then'](handleEntityNotFound(_0x289d98,null))[_0x568a('0x24')](function(_0x5958b4){if(_0x5958b4){_0x5d8e5e=_0x5958b4;return db[_0x568a('0x67')][_0x568a('0x46')]({'where':{'SessionId':{'$in':_[_0x568a('0x2d')](_0x5d8e5e,'id')},'ProjectId':_0x4e91ec[_0x568a('0x4a')]['id']},'order':_0x568a('0x68')});}})[_0x568a('0x24')](handleEntityNotFound(_0x289d98,null))[_0x568a('0x24')](function(_0x3ee5b2){if(_0x3ee5b2){_0x1c29a1=_0x3ee5b2;var _0x142d8b={};for(var _0x128996=0x0,_0x52facb=_0x1c29a1[_0x568a('0x39')];_0x128996<_0x52facb;_0x128996++){if(!_0x142d8b[_0x568a('0x3a')](_0x1c29a1[_0x128996][_0x568a('0x69')])){_0x142d8b[_0x1c29a1[_0x128996][_0x568a('0x69')]]=needsEncapsulation(_0x1c29a1[_0x128996][_0x568a('0x6a')])?encapsulate(_0x1c29a1[_0x128996][_0x568a('0x6a')]):_0x1c29a1[_0x128996][_0x568a('0x6a')];}}var _0x32c0f8=[],_0x3a64b8={};for(var _0x50a9a4=0x0,_0x4d91a1=_0x5d8e5e[_0x568a('0x39')];_0x50a9a4<_0x4d91a1;_0x50a9a4++){_0x3a64b8={'ProjectId':_0x4e91ec[_0x568a('0x4a')]['id'],'SessionId':_0x5d8e5e[_0x50a9a4]['id'],'StartTime':moment(_0x5d8e5e[_0x50a9a4][_0x568a('0x65')])['format'](_0x568a('0x6b'))};for(var _0x4fd635=0x0,_0x22502d=_0x1c29a1[_0x568a('0x39')];_0x4fd635<_0x22502d;_0x4fd635++){if(_0x1c29a1[_0x4fd635][_0x568a('0x6c')]==_0x5d8e5e[_0x50a9a4]['id']&&_0x142d8b[_0x568a('0x3a')](_0x1c29a1[_0x4fd635][_0x568a('0x69')])){_0x3a64b8[_0x142d8b[_0x1c29a1[_0x4fd635][_0x568a('0x69')]]]=_0x1c29a1[_0x4fd635][_0x568a('0x6d')];}}for(var _0x5b02b9 in _0x142d8b){if(!_0x3a64b8[_0x568a('0x3a')](_0x142d8b[_0x5b02b9])){_0x3a64b8[_0x142d8b[_0x5b02b9]]=null;}}_0x32c0f8['push'](_0x3a64b8);}return _0x32c0f8;}})[_0x568a('0x24')](function(_0xef2ebc){if(!_[_0x568a('0x6e')](_0xef2ebc)){var _0x82a55=toCsv(_0xef2ebc);var _0x2e28f9=Date[_0x568a('0x6f')]();fs['writeFileSync'](util['format'](_0x568a('0x70'),_0x4e91ec['params']['id'],_0x2e28f9),_0x82a55);_0x289d98[_0x568a('0x71')](_0x568a('0x72'),_0x568a('0x73')+util[_0x568a('0x74')](_0x568a('0x75'),_0x4e91ec['params']['id'],_0x2e28f9));_0x289d98[_0x568a('0x71')](_0x568a('0x76'),_0x568a('0x77'));return _0x289d98[_0x568a('0x78')](util[_0x568a('0x74')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x4e91ec[_0x568a('0x4a')]['id'],_0x2e28f9));}else{return _0x289d98[_0x568a('0x17')](0xcc);}})[_0x568a('0x48')](handleError(_0x289d98,null));};
\ No newline at end of file
+var _0xd142=['show','params','includeAll','create','user','get','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','body','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','getSessions','findOne','ProjectId','JscriptySessionReport','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','starttime','startTime','JscriptyQuestionReport','-createdAt','questionId','question','answer','push','now','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','Projects','UserProfileResource','destroy','error','stack','name','send','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows'];(function(_0x43ad18,_0x21f334){var _0x3bdc6a=function(_0x16fbd5){while(--_0x16fbd5){_0x43ad18['push'](_0x43ad18['shift']());}};_0x3bdc6a(++_0x21f334);}(_0xd142,0x11a));var _0x2d14=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xd142[_0x2576d7];return _0x16a08c;};'use strict';var emlformat=require(_0x2d14('0x0'));var rimraf=require(_0x2d14('0x1'));var zipdir=require(_0x2d14('0x2'));var jsonpatch=require(_0x2d14('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2d14('0x4'));var Mustache=require(_0x2d14('0x5'));var util=require(_0x2d14('0x6'));var path=require(_0x2d14('0x7'));var sox=require(_0x2d14('0x8'));var csv=require(_0x2d14('0x9'));var ejs=require(_0x2d14('0xa'));var fs=require('fs');var fs_extra=require(_0x2d14('0xb'));var _=require(_0x2d14('0xc'));var squel=require(_0x2d14('0xd'));var crypto=require(_0x2d14('0xe'));var jsforce=require(_0x2d14('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2d14('0x9'));var querystring=require(_0x2d14('0x10'));var Papa=require('papaparse');var Redis=require(_0x2d14('0x11'));var authService=require(_0x2d14('0x12'));var qs=require(_0x2d14('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2d14('0x14'));var logger=require(_0x2d14('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x2d14('0x16'));var licenseUtil=require(_0x2d14('0x17'));var db=require(_0x2d14('0x18'))['db'];function respondWithStatusCode(_0x4d8969,_0x19f79d){_0x19f79d=_0x19f79d||0xcc;return function(_0x227293){if(_0x227293){return _0x4d8969[_0x2d14('0x19')](_0x19f79d);}return _0x4d8969[_0x2d14('0x1a')](_0x19f79d)['end']();};}function respondWithResult(_0x142617,_0x30dfeb){_0x30dfeb=_0x30dfeb||0xc8;return function(_0x488250){if(_0x488250){return _0x142617[_0x2d14('0x1a')](_0x30dfeb)[_0x2d14('0x1b')](_0x488250);}};}function respondWithFilteredResult(_0x2e3302,_0xe9aadc){return function(_0x2dfcd4){if(_0x2dfcd4){var _0x5e6095=typeof _0xe9aadc[_0x2d14('0x1c')]===_0x2d14('0x1d')&&typeof _0xe9aadc[_0x2d14('0x1e')]===_0x2d14('0x1d');var _0x27b6a3=_0x2dfcd4['count'];var _0x427c26=_0x5e6095?0x0:_0xe9aadc[_0x2d14('0x1c')];var _0x449b73=_0x5e6095?_0x2dfcd4[_0x2d14('0x1f')]:_0xe9aadc['offset']+_0xe9aadc['limit'];var _0x21385a;if(_0x449b73>=_0x27b6a3){_0x449b73=_0x27b6a3;_0x21385a=0xc8;}else{_0x21385a=0xce;}_0x2e3302['status'](_0x21385a);return _0x2e3302['set'](_0x2d14('0x20'),_0x427c26+'-'+_0x449b73+'/'+_0x27b6a3)[_0x2d14('0x1b')](_0x2dfcd4);}return null;};}function patchUpdates(_0x17d686){return function(_0x5ca8fa){try{jsonpatch[_0x2d14('0x21')](_0x5ca8fa,_0x17d686,!![]);}catch(_0x3be304){return BPromise['reject'](_0x3be304);}return _0x5ca8fa[_0x2d14('0x22')]();};}function saveUpdates(_0x268d7a,_0x5b117a){return function(_0x18c2b4){if(_0x18c2b4){return _0x18c2b4[_0x2d14('0x23')](_0x268d7a)[_0x2d14('0x24')](function(_0x1ca76f){return _0x1ca76f;});}return null;};}function removeEntity(_0x2c2858,_0x5ecbc0){return function(_0x334ff7){if(_0x334ff7){return _0x334ff7['destroy']()[_0x2d14('0x24')](function(){var _0x5235a7=_0x334ff7['get']({'plain':!![]});var _0x2af2cf=_0x2d14('0x25');return db[_0x2d14('0x26')][_0x2d14('0x27')]({'where':{'type':_0x2af2cf,'resourceId':_0x5235a7['id']}})['then'](function(){return _0x334ff7;});})[_0x2d14('0x24')](function(){_0x2c2858[_0x2d14('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16fa67,_0x35ace8){return function(_0x572720){if(!_0x572720){_0x16fa67[_0x2d14('0x19')](0x194);}return _0x572720;};}function handleError(_0x429c97,_0x5988f1){_0x5988f1=_0x5988f1||0x1f4;return function(_0x2813b1){logger[_0x2d14('0x28')](_0x2813b1[_0x2d14('0x29')]);if(_0x2813b1[_0x2d14('0x2a')]){delete _0x2813b1[_0x2d14('0x2a')];}_0x429c97[_0x2d14('0x1a')](_0x5988f1)[_0x2d14('0x2b')](_0x2813b1);};}exports[_0x2d14('0x2c')]=function(_0x4eee8a,_0xd4edb0){var _0x1415dd={},_0x1a086a={},_0x1da82a={'count':0x0,'rows':[]};var _0x55ccb5=_[_0x2d14('0x2d')](db[_0x2d14('0x2e')][_0x2d14('0x2f')],function(_0x4e8980){return{'name':_0x4e8980[_0x2d14('0x30')],'type':_0x4e8980[_0x2d14('0x31')][_0x2d14('0x32')]};});_0x1a086a[_0x2d14('0x33')]=_[_0x2d14('0x2d')](_0x55ccb5,_0x2d14('0x2a'));_0x1a086a[_0x2d14('0x34')]=_[_0x2d14('0x35')](_0x4eee8a['query']);_0x1a086a[_0x2d14('0x36')]=_[_0x2d14('0x37')](_0x1a086a[_0x2d14('0x33')],_0x1a086a[_0x2d14('0x34')]);_0x1415dd[_0x2d14('0x38')]=_['intersection'](_0x1a086a[_0x2d14('0x33')],qs[_0x2d14('0x39')](_0x4eee8a[_0x2d14('0x34')][_0x2d14('0x39')]));_0x1415dd[_0x2d14('0x38')]=_0x1415dd['attributes'][_0x2d14('0x3a')]?_0x1415dd[_0x2d14('0x38')]:_0x1a086a[_0x2d14('0x33')];if(!_0x4eee8a[_0x2d14('0x34')][_0x2d14('0x3b')](_0x2d14('0x3c'))){_0x1415dd['limit']=qs[_0x2d14('0x1e')](_0x4eee8a['query'][_0x2d14('0x1e')]);_0x1415dd[_0x2d14('0x1c')]=qs[_0x2d14('0x1c')](_0x4eee8a[_0x2d14('0x34')][_0x2d14('0x1c')]);}_0x1415dd[_0x2d14('0x3d')]=qs[_0x2d14('0x3e')](_0x4eee8a['query'][_0x2d14('0x3e')]);_0x1415dd[_0x2d14('0x3f')]=qs[_0x2d14('0x36')](_[_0x2d14('0x40')](_0x4eee8a[_0x2d14('0x34')],_0x1a086a['filters']),_0x55ccb5);if(_0x4eee8a[_0x2d14('0x34')][_0x2d14('0x41')]){_0x1415dd[_0x2d14('0x3f')]=_[_0x2d14('0x42')](_0x1415dd[_0x2d14('0x3f')],{'$or':_[_0x2d14('0x2d')](_0x55ccb5,function(_0x2324d9){if(_0x2324d9[_0x2d14('0x31')]!==_0x2d14('0x43')){var _0xc61860={};_0xc61860[_0x2324d9[_0x2d14('0x2a')]]={'$like':'%'+_0x4eee8a[_0x2d14('0x34')][_0x2d14('0x41')]+'%'};return _0xc61860;}})});}_0x1415dd=_[_0x2d14('0x42')]({},_0x1415dd,_0x4eee8a[_0x2d14('0x44')]);var _0x5f2ef6={'where':_0x1415dd[_0x2d14('0x3f')]};return db[_0x2d14('0x2e')][_0x2d14('0x1f')](_0x5f2ef6)[_0x2d14('0x24')](function(_0x5e106c){_0x1da82a[_0x2d14('0x1f')]=_0x5e106c;if(_0x4eee8a[_0x2d14('0x34')]['includeAll']){_0x1415dd[_0x2d14('0x45')]=[{'all':!![]}];}return db[_0x2d14('0x2e')][_0x2d14('0x46')](_0x1415dd);})[_0x2d14('0x24')](function(_0x27e50e){_0x1da82a[_0x2d14('0x47')]=_0x27e50e;return _0x1da82a;})['then'](respondWithFilteredResult(_0xd4edb0,_0x1415dd))['catch'](handleError(_0xd4edb0,null));};exports[_0x2d14('0x48')]=function(_0x925531,_0x9eec0e){var _0x9b4ab={'raw':![],'where':{'id':_0x925531[_0x2d14('0x49')]['id']}},_0x533220={};_0x533220[_0x2d14('0x33')]=_[_0x2d14('0x35')](db[_0x2d14('0x2e')][_0x2d14('0x2f')]);_0x533220[_0x2d14('0x34')]=_[_0x2d14('0x35')](_0x925531[_0x2d14('0x34')]);_0x533220[_0x2d14('0x36')]=_[_0x2d14('0x37')](_0x533220['model'],_0x533220[_0x2d14('0x34')]);_0x9b4ab[_0x2d14('0x38')]=_[_0x2d14('0x37')](_0x533220[_0x2d14('0x33')],qs['fields'](_0x925531['query'][_0x2d14('0x39')]));_0x9b4ab['attributes']=_0x9b4ab['attributes']['length']?_0x9b4ab[_0x2d14('0x38')]:_0x533220['model'];if(_0x925531[_0x2d14('0x34')][_0x2d14('0x4a')]){_0x9b4ab[_0x2d14('0x45')]=[{'all':!![]}];}_0x9b4ab=_[_0x2d14('0x42')]({},_0x9b4ab,_0x925531['options']);return db[_0x2d14('0x2e')]['find'](_0x9b4ab)[_0x2d14('0x24')](handleEntityNotFound(_0x9eec0e,null))[_0x2d14('0x24')](respondWithResult(_0x9eec0e,null))['catch'](handleError(_0x9eec0e,null));};exports['create']=function(_0x293723,_0x2c16b0){return db[_0x2d14('0x2e')][_0x2d14('0x4b')](_0x293723['body'],{})['then'](function(_0x2691b8){var _0x3920c3=_0x293723[_0x2d14('0x4c')]['get']({'plain':!![]});if(!_0x3920c3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3920c3['role']===_0x2d14('0x4c')){var _0x5c5ec7=_0x2691b8[_0x2d14('0x4d')]({'plain':!![]});var _0xdba428=_0x2d14('0x25');return db[_0x2d14('0x4e')]['find']({'where':{'name':_0xdba428,'userProfileId':_0x3920c3[_0x2d14('0x4f')]},'raw':!![]})['then'](function(_0x4c9655){if(_0x4c9655&&_0x4c9655['autoAssociation']===0x0){return db[_0x2d14('0x26')][_0x2d14('0x4b')]({'name':_0x5c5ec7['name'],'resourceId':_0x5c5ec7['id'],'type':_0x4c9655[_0x2d14('0x2a')],'sectionId':_0x4c9655['id']},{})['then'](function(){return _0x2691b8;});}else{return _0x2691b8;}})[_0x2d14('0x50')](function(_0xa214ea){logger[_0x2d14('0x28')](_0x2d14('0x51'),_0xa214ea);throw _0xa214ea;});}return _0x2691b8;})[_0x2d14('0x24')](respondWithResult(_0x2c16b0,0xc9))['catch'](handleError(_0x2c16b0,null));};exports['clone']=function(_0x41770f,_0x515396){var _0x168bb6={'where':{'id':_0x41770f[_0x2d14('0x49')]['id']}},_0x551c83={};_0x551c83['model']=_[_0x2d14('0x35')](db[_0x2d14('0x2e')]['rawAttributes']);_0x168bb6[_0x2d14('0x38')]=_['intersection'](_0x551c83[_0x2d14('0x33')],qs['fields'](_0x41770f[_0x2d14('0x34')]['fields']));_0x168bb6[_0x2d14('0x38')]=_0x168bb6[_0x2d14('0x38')]['length']?_0x168bb6['attributes']:_0x551c83[_0x2d14('0x33')];if(_0x41770f[_0x2d14('0x34')][_0x2d14('0x4a')]){_0x168bb6[_0x2d14('0x45')]=[{'all':!![]}];}_0x168bb6=_[_0x2d14('0x42')]({},_0x168bb6,_0x41770f[_0x2d14('0x44')]);return db['JscriptyProject']['find'](_0x168bb6)[_0x2d14('0x24')](handleEntityNotFound(_0x515396,null))[_0x2d14('0x24')](function(_0x1a349e){if(_0x1a349e){var _0x48f7f3=_0x1a349e['get']({'plain':!![]});_0x48f7f3=qs[_0x2d14('0x52')](_0x48f7f3,['id',_0x2d14('0x53'),'updatedAt']);_0x41770f[_0x2d14('0x54')]=_[_0x2d14('0x52')](_0x41770f['body'],['id',_0x2d14('0x53'),_0x2d14('0x55')]);return db[_0x2d14('0x2e')][_0x2d14('0x4b')](_[_0x2d14('0x42')](_0x48f7f3,_0x41770f[_0x2d14('0x54')]),{'include':_0x41770f['query'][_0x2d14('0x4a')]?[{'all':!![]}]:undefined})[_0x2d14('0x24')](function(_0x365ae9){var _0x132c8b=_0x41770f[_0x2d14('0x4c')][_0x2d14('0x4d')]({'plain':!![]});if(!_0x132c8b)throw new Error(_0x2d14('0x56'));if(_0x132c8b[_0x2d14('0x57')]==='user'){var _0x5cebfc=_0x365ae9[_0x2d14('0x4d')]({'plain':!![]});var _0x242061=_0x2d14('0x25');return db[_0x2d14('0x4e')][_0x2d14('0x58')]({'where':{'name':_0x242061,'userProfileId':_0x132c8b['userProfileId']},'raw':!![]})['then'](function(_0xe58047){if(_0xe58047&&_0xe58047[_0x2d14('0x59')]===0x0){return db[_0x2d14('0x26')][_0x2d14('0x4b')]({'name':_0x5cebfc[_0x2d14('0x2a')],'resourceId':_0x5cebfc['id'],'type':_0xe58047['name'],'sectionId':_0xe58047['id']},{})[_0x2d14('0x24')](function(){return _0x365ae9;});}else{return _0x365ae9;}})['catch'](function(_0x54bcb1){logger[_0x2d14('0x28')](_0x2d14('0x51'),_0x54bcb1);throw _0x54bcb1;});}return _0x365ae9;});}})[_0x2d14('0x24')](respondWithResult(_0x515396,0xc9))[_0x2d14('0x50')](handleError(_0x515396,null));};exports[_0x2d14('0x23')]=function(_0x4669b6,_0x17e6bc){if(_0x4669b6[_0x2d14('0x54')]['id']){delete _0x4669b6[_0x2d14('0x54')]['id'];}return db[_0x2d14('0x2e')][_0x2d14('0x58')]({'where':{'id':_0x4669b6[_0x2d14('0x49')]['id']}})[_0x2d14('0x24')](handleEntityNotFound(_0x17e6bc,null))[_0x2d14('0x24')](saveUpdates(_0x4669b6[_0x2d14('0x54')],null))[_0x2d14('0x24')](respondWithResult(_0x17e6bc,null))[_0x2d14('0x50')](handleError(_0x17e6bc,null));};exports[_0x2d14('0x27')]=function(_0x2b9295,_0x53765c){return db['JscriptyProject'][_0x2d14('0x58')]({'where':{'id':_0x2b9295[_0x2d14('0x49')]['id']}})[_0x2d14('0x24')](handleEntityNotFound(_0x53765c,null))[_0x2d14('0x24')](removeEntity(_0x53765c,null))['catch'](handleError(_0x53765c,null));};exports[_0x2d14('0x5a')]=function(_0x44d15d,_0x541442,_0x5ca3b1){var _0x2844a4={'raw':!![],'where':{}};var _0x240d9d={};var _0xd8b74={'count':0x0,'rows':[]};return db[_0x2d14('0x2e')][_0x2d14('0x5b')]({'where':{'id':_0x44d15d[_0x2d14('0x49')]['id']}})[_0x2d14('0x24')](handleEntityNotFound(_0x541442,null))['then'](function(_0x1d73f7){if(_0x1d73f7){_0x240d9d[_0x2d14('0x33')]=_[_0x2d14('0x35')](db['JscriptySessionReport'][_0x2d14('0x2f')]);_0x240d9d[_0x2d14('0x34')]=_['keys'](_0x44d15d[_0x2d14('0x34')]);_0x240d9d[_0x2d14('0x36')]=_['intersection'](_0x240d9d['model'],_0x240d9d[_0x2d14('0x34')]);_0x2844a4[_0x2d14('0x38')]=_[_0x2d14('0x37')](_0x240d9d[_0x2d14('0x33')],qs[_0x2d14('0x39')](_0x44d15d[_0x2d14('0x34')][_0x2d14('0x39')]));_0x2844a4['attributes']=_0x2844a4[_0x2d14('0x38')][_0x2d14('0x3a')]?_0x2844a4['attributes']:_0x240d9d['model'];if(!_0x44d15d[_0x2d14('0x34')]['hasOwnProperty'](_0x2d14('0x3c'))){_0x2844a4['limit']=qs['limit'](_0x44d15d[_0x2d14('0x34')][_0x2d14('0x1e')]);_0x2844a4[_0x2d14('0x1c')]=qs[_0x2d14('0x1c')](_0x44d15d[_0x2d14('0x34')]['offset']);}_0x2844a4[_0x2d14('0x3d')]=qs[_0x2d14('0x3e')](_0x44d15d[_0x2d14('0x34')]['sort']);_0x2844a4['where']=qs['filters'](_['pick'](_0x44d15d['query'],_0x240d9d['filters']));_0x2844a4[_0x2d14('0x3f')][_0x2d14('0x5c')]=_0x1d73f7['id'];if(_0x44d15d['query'][_0x2d14('0x41')]){_0x2844a4['where']=_[_0x2d14('0x42')](_0x2844a4[_0x2d14('0x3f')],{'$or':_[_0x2d14('0x2d')](_0x2844a4['attributes'],function(_0x4d3ada){var _0x6f56de={};_0x6f56de[_0x4d3ada]={'$like':'%'+_0x44d15d[_0x2d14('0x34')]['filter']+'%'};return _0x6f56de;})});}_0x2844a4=_[_0x2d14('0x42')]({},_0x2844a4,_0x44d15d['options']);return db[_0x2d14('0x5d')][_0x2d14('0x1f')]({'where':_0x2844a4[_0x2d14('0x3f')]})[_0x2d14('0x24')](function(_0x2e4890){_0xd8b74[_0x2d14('0x1f')]=_0x2e4890;if(_0x44d15d['query'][_0x2d14('0x4a')]){_0x2844a4[_0x2d14('0x45')]=[{'all':!![]}];}return db[_0x2d14('0x5d')][_0x2d14('0x46')](_0x2844a4);})['then'](function(_0x288df1){_0xd8b74[_0x2d14('0x47')]=_0x288df1;return _0xd8b74;});}})[_0x2d14('0x24')](respondWithFilteredResult(_0x541442,_0x2844a4))[_0x2d14('0x50')](handleError(_0x541442,null));};exports['getAnswers']=function(_0x14e6ca,_0x1468c5,_0x5ebc7b){var _0x38524a={'raw':!![],'where':{}};var _0x17e3b2={};var _0x19d24c={'count':0x0,'rows':[]};return db[_0x2d14('0x2e')]['findOne']({'where':{'id':_0x14e6ca[_0x2d14('0x49')]['id']}})['then'](handleEntityNotFound(_0x1468c5,null))['then'](function(_0x4daddf){if(_0x4daddf){_0x17e3b2[_0x2d14('0x33')]=_[_0x2d14('0x35')](db[_0x2d14('0x5e')][_0x2d14('0x2f')]);_0x17e3b2['query']=_['keys'](_0x14e6ca[_0x2d14('0x34')]);_0x17e3b2[_0x2d14('0x36')]=_[_0x2d14('0x37')](_0x17e3b2['model'],_0x17e3b2[_0x2d14('0x34')]);_0x38524a[_0x2d14('0x38')]=_[_0x2d14('0x37')](_0x17e3b2[_0x2d14('0x33')],qs['fields'](_0x14e6ca['query'][_0x2d14('0x39')]));_0x38524a[_0x2d14('0x38')]=_0x38524a['attributes'][_0x2d14('0x3a')]?_0x38524a[_0x2d14('0x38')]:_0x17e3b2[_0x2d14('0x33')];if(!_0x14e6ca[_0x2d14('0x34')]['hasOwnProperty'](_0x2d14('0x3c'))){_0x38524a['limit']=qs['limit'](_0x14e6ca[_0x2d14('0x34')][_0x2d14('0x1e')]);_0x38524a[_0x2d14('0x1c')]=qs[_0x2d14('0x1c')](_0x14e6ca[_0x2d14('0x34')][_0x2d14('0x1c')]);}_0x38524a['order']=qs['sort'](_0x14e6ca[_0x2d14('0x34')][_0x2d14('0x3e')]);_0x38524a[_0x2d14('0x3f')]=qs[_0x2d14('0x36')](_[_0x2d14('0x40')](_0x14e6ca['query'],_0x17e3b2[_0x2d14('0x36')]));_0x38524a[_0x2d14('0x3f')]['ProjectId']=_0x4daddf['id'];if(_0x14e6ca[_0x2d14('0x34')][_0x2d14('0x41')]){_0x38524a[_0x2d14('0x3f')]=_[_0x2d14('0x42')](_0x38524a[_0x2d14('0x3f')],{'$or':_[_0x2d14('0x2d')](_0x38524a[_0x2d14('0x38')],function(_0x384738){var _0x606afe={};_0x606afe[_0x384738]={'$like':'%'+_0x14e6ca['query']['filter']+'%'};return _0x606afe;})});}_0x38524a=_[_0x2d14('0x42')]({},_0x38524a,_0x14e6ca[_0x2d14('0x44')]);return db[_0x2d14('0x5e')][_0x2d14('0x1f')]({'where':_0x38524a[_0x2d14('0x3f')]})['then'](function(_0x1de1a7){_0x19d24c[_0x2d14('0x1f')]=_0x1de1a7;if(_0x14e6ca[_0x2d14('0x34')][_0x2d14('0x4a')]){_0x38524a[_0x2d14('0x45')]=[{'all':!![]}];}return db[_0x2d14('0x5e')][_0x2d14('0x46')](_0x38524a);})[_0x2d14('0x24')](function(_0x53678b){_0x19d24c[_0x2d14('0x47')]=_0x53678b;return _0x19d24c;});}})[_0x2d14('0x24')](respondWithFilteredResult(_0x1468c5,_0x38524a))[_0x2d14('0x50')](handleError(_0x1468c5,null));};function char(_0x15849b){return _0x2d14('0x5f')===typeof _0x15849b?String[_0x2d14('0x60')]['apply'](null,arguments):_0x15849b;}function needsEncapsulation(_0x122b05){return!!_0x122b05&&(_0x122b05[_0x2d14('0x61')]()['indexOf'](char(0xd))>=0x0||_0x122b05[_0x2d14('0x61')]()[_0x2d14('0x62')](char(0xa))>=0x0||_0x122b05[_0x2d14('0x61')]()[_0x2d14('0x62')](char(0x2c))>=0x0||_0x122b05[_0x2d14('0x61')]()[_0x2d14('0x62')](char(0x22))>=0x0);}function encapsulate(_0x55f5fa){var _0x4c803e=char(0x22),_0x2656b5='\x5c'+char(0x22),_0x5889dd=_0x55f5fa[_0x2d14('0x61')]()[_0x2d14('0x63')](new RegExp(_0x4c803e,'g'),_0x2656b5);return _0x4c803e+_0x5889dd+_0x4c803e;}exports[_0x2d14('0x64')]=function(_0x3746ed,_0x22623d,_0x4e9843){var _0x6eb941,_0x18a151;var _0x45a43d={'where':{'ProjectId':_0x3746ed['params']['id']}};if(_0x3746ed['query']['startTime']){_0x45a43d[_0x2d14('0x3f')][_0x2d14('0x65')]=JSON['parse'](_0x3746ed[_0x2d14('0x34')][_0x2d14('0x66')]);}return db[_0x2d14('0x5d')][_0x2d14('0x46')](_0x45a43d)[_0x2d14('0x24')](handleEntityNotFound(_0x22623d,null))[_0x2d14('0x24')](function(_0x2df7a2){if(_0x2df7a2){_0x6eb941=_0x2df7a2;return db[_0x2d14('0x67')][_0x2d14('0x46')]({'where':{'SessionId':{'$in':_[_0x2d14('0x2d')](_0x6eb941,'id')},'ProjectId':_0x3746ed[_0x2d14('0x49')]['id']},'order':_0x2d14('0x68')});}})[_0x2d14('0x24')](handleEntityNotFound(_0x22623d,null))[_0x2d14('0x24')](function(_0x11266f){if(_0x11266f){_0x18a151=_0x11266f;var _0x5b24e4={};for(var _0x28411e=0x0,_0x4c67f6=_0x18a151[_0x2d14('0x3a')];_0x28411e<_0x4c67f6;_0x28411e++){if(!_0x5b24e4[_0x2d14('0x3b')](_0x18a151[_0x28411e]['questionId'])){_0x5b24e4[_0x18a151[_0x28411e][_0x2d14('0x69')]]=needsEncapsulation(_0x18a151[_0x28411e][_0x2d14('0x6a')])?encapsulate(_0x18a151[_0x28411e][_0x2d14('0x6a')]):_0x18a151[_0x28411e]['question'];}}var _0x596ed6=[],_0xbf1156={};for(var _0x4451d8=0x0,_0x50ce28=_0x6eb941['length'];_0x4451d8<_0x50ce28;_0x4451d8++){_0xbf1156={'ProjectId':_0x3746ed[_0x2d14('0x49')]['id'],'SessionId':_0x6eb941[_0x4451d8]['id'],'StartTime':moment(_0x6eb941[_0x4451d8]['starttime'])['format']('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x21ff18=0x0,_0x46ee6d=_0x18a151[_0x2d14('0x3a')];_0x21ff18<_0x46ee6d;_0x21ff18++){if(_0x18a151[_0x21ff18]['SessionId']==_0x6eb941[_0x4451d8]['id']&&_0x5b24e4[_0x2d14('0x3b')](_0x18a151[_0x21ff18]['questionId'])){_0xbf1156[_0x5b24e4[_0x18a151[_0x21ff18]['questionId']]]=_0x18a151[_0x21ff18][_0x2d14('0x6b')];}}for(var _0x8611aa in _0x5b24e4){if(!_0xbf1156[_0x2d14('0x3b')](_0x5b24e4[_0x8611aa])){_0xbf1156[_0x5b24e4[_0x8611aa]]=null;}}_0x596ed6[_0x2d14('0x6c')](_0xbf1156);}return _0x596ed6;}})['then'](function(_0x150056){if(!_['isEmpty'](_0x150056)){var _0x24dd27=toCsv(_0x150056);var _0x1160d7=Date[_0x2d14('0x6d')]();fs['writeFileSync'](util[_0x2d14('0x6e')](_0x2d14('0x6f'),_0x3746ed[_0x2d14('0x49')]['id'],_0x1160d7),_0x24dd27);_0x22623d[_0x2d14('0x70')](_0x2d14('0x71'),_0x2d14('0x72')+util[_0x2d14('0x6e')](_0x2d14('0x73'),_0x3746ed[_0x2d14('0x49')]['id'],_0x1160d7));_0x22623d[_0x2d14('0x70')](_0x2d14('0x74'),'text/csv');return _0x22623d[_0x2d14('0x75')](util[_0x2d14('0x6e')](_0x2d14('0x6f'),_0x3746ed['params']['id'],_0x1160d7));}else{return _0x22623d['sendStatus'](0xcc);}})[_0x2d14('0x50')](handleError(_0x22623d,null));};
\ No newline at end of file
index 8ff069a..5f3e5f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa48=['jscripty_projects','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0xaa48,0x15a));var _0x8aa4=function(_0x1e3d45,_0x506ecf){_0x1e3d45=_0x1e3d45-0x0;var _0x593b5a=_0xaa48[_0x1e3d45];return _0x593b5a;};'use strict';var _=require(_0x8aa4('0x0'));var util=require(_0x8aa4('0x1'));var logger=require(_0x8aa4('0x2'))(_0x8aa4('0x3'));var moment=require(_0x8aa4('0x4'));var BPromise=require(_0x8aa4('0x5'));var rp=require(_0x8aa4('0x6'));var fs=require('fs');var path=require(_0x8aa4('0x7'));var rimraf=require(_0x8aa4('0x8'));var config=require(_0x8aa4('0x9'));var attributes=require(_0x8aa4('0xa'));module[_0x8aa4('0xb')]=function(_0x141d8b,_0x14614c){return _0x141d8b[_0x8aa4('0xc')](_0x8aa4('0xd'),attributes,{'tableName':_0x8aa4('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3379=['exports','JscriptyProject','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./jscriptyProject.attributes'];(function(_0x4bfaf,_0x3cb3c7){var _0x247a83=function(_0x1ceb28){while(--_0x1ceb28){_0x4bfaf['push'](_0x4bfaf['shift']());}};_0x247a83(++_0x3cb3c7);}(_0x3379,0x115));var _0x9337=function(_0x21ab82,_0x255bb9){_0x21ab82=_0x21ab82-0x0;var _0x1fae6f=_0x3379[_0x21ab82];return _0x1fae6f;};'use strict';var _=require(_0x9337('0x0'));var util=require(_0x9337('0x1'));var logger=require(_0x9337('0x2'))(_0x9337('0x3'));var moment=require('moment');var BPromise=require(_0x9337('0x4'));var rp=require(_0x9337('0x5'));var fs=require('fs');var path=require(_0x9337('0x6'));var rimraf=require(_0x9337('0x7'));var config=require('../../config/environment');var attributes=require(_0x9337('0x8'));module[_0x9337('0x9')]=function(_0x390772,_0x677c38){return _0x390772['define'](_0x9337('0xa'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bad7025..6b5823d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['JscriptyProject,\x20%s,\x20%s','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info'];(function(_0x4b8735,_0x325413){var _0x5659de=function(_0x488f98){while(--_0x488f98){_0x4b8735['push'](_0x4b8735['shift']());}};_0x5659de(++_0x325413);}(_0xb7e7,0x121));var _0x7b7e=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xb7e7[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var moment=require(_0x7b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b7e('0x4'))(_0x7b7e('0x5'));var config=require(_0x7b7e('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7b7e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x372bde,_0x7f87e0,_0x55ce81){return new BPromise(function(_0x42b871,_0x223587){return client[_0x7b7e('0x8')](_0x372bde,_0x55ce81)[_0x7b7e('0x9')](function(_0x148964){logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');logger[_0x7b7e('0xc')](_0x7b7e('0xd'),_0x7f87e0,_0x7b7e('0xe'),JSON[_0x7b7e('0xf')](_0x148964));if(_0x148964[_0x7b7e('0x10')]){if(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x11')]===0x1f4){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x223587(_0x148964[_0x7b7e('0x10')]['message']);}logger[_0x7b7e('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x42b871(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x12')]);}else{logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');_0x42b871(_0x148964['result'][_0x7b7e('0x12')]);}})[_0x7b7e('0x13')](function(_0x27f999){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x27f999);_0x223587(_0x27f999);});});}
\ No newline at end of file
+var _0x9bde=['code','message','JscriptyProject,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x37c488,_0xd26f8d){var _0x1ea973=function(_0x201b46){while(--_0x201b46){_0x37c488['push'](_0x37c488['shift']());}};_0x1ea973(++_0xd26f8d);}(_0x9bde,0xe1));var _0xe9bd=function(_0x129709,_0x130d27){_0x129709=_0x129709-0x0;var _0xe4715f=_0x9bde[_0x129709];return _0xe4715f;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}
\ No newline at end of file
index bc1e749..49b2c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76f5=['./jscriptyQuestionReport.controller','isAuthenticated','index','get','describe','/:id','show','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x136575,_0x1fd342){var _0x320aaa=function(_0x2ddef9){while(--_0x2ddef9){_0x136575['push'](_0x136575['shift']());}};_0x320aaa(++_0x1fd342);}(_0x76f5,0xfa));var _0x576f=function(_0x1b9e21,_0x2cda72){_0x1b9e21=_0x1b9e21-0x0;var _0x6e19e1=_0x76f5[_0x1b9e21];return _0x6e19e1;};'use strict';var multer=require(_0x576f('0x0'));var util=require(_0x576f('0x1'));var path=require(_0x576f('0x2'));var timeout=require(_0x576f('0x3'));var express=require(_0x576f('0x4'));var router=express[_0x576f('0x5')]();var fs_extra=require(_0x576f('0x6'));var auth=require(_0x576f('0x7'));var interaction=require(_0x576f('0x8'));var config=require(_0x576f('0x9'));var controller=require(_0x576f('0xa'));router['get']('/',auth[_0x576f('0xb')](),controller[_0x576f('0xc')]);router[_0x576f('0xd')]('/describe',auth['isAuthenticated'](),controller[_0x576f('0xe')]);router[_0x576f('0xd')](_0x576f('0xf'),auth['isAuthenticated'](),controller[_0x576f('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x576f('0xf'),auth[_0x576f('0xb')](),controller[_0x576f('0x11')]);router[_0x576f('0x12')](_0x576f('0xf'),auth['isAuthenticated'](),controller[_0x576f('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xb033=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','connect-timeout'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0xb033,0xc5));var _0x3b03=function(_0xaa99e0,_0x54ec2a){_0xaa99e0=_0xaa99e0-0x0;var _0x655a07=_0xb033[_0xaa99e0];return _0x655a07;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x3b03('0x0'));var express=require(_0x3b03('0x1'));var router=express[_0x3b03('0x2')]();var fs_extra=require(_0x3b03('0x3'));var auth=require(_0x3b03('0x4'));var interaction=require(_0x3b03('0x5'));var config=require(_0x3b03('0x6'));var controller=require(_0x3b03('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x3b03('0x8')]);router[_0x3b03('0x9')](_0x3b03('0xa'),auth[_0x3b03('0xb')](),controller[_0x3b03('0xc')]);router['get'](_0x3b03('0xd'),auth[_0x3b03('0xb')](),controller[_0x3b03('0xe')]);router[_0x3b03('0xf')]('/',auth[_0x3b03('0xb')](),controller[_0x3b03('0x10')]);router[_0x3b03('0x11')]('/:id',auth[_0x3b03('0xb')](),controller[_0x3b03('0x12')]);router[_0x3b03('0x13')](_0x3b03('0xd'),auth[_0x3b03('0xb')](),controller[_0x3b03('0x14')]);module[_0x3b03('0x15')]=router;
\ No newline at end of file
index 6fe02e5..d259bc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x7a54,0x106));var _0x47a5=function(_0x3bff0d,_0x1daa56){_0x3bff0d=_0x3bff0d-0x0;var _0x1b8125=_0x7a54[_0x3bff0d];return _0x1b8125;};'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(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x7a54,0x106));var _0x47a5=function(_0x4a5887,_0x1aa1a3){_0x4a5887=_0x4a5887-0x0;var _0x155dd7=_0x7a54[_0x4a5887];return _0x155dd7;};'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 ebc66f5..a5586fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7867=['find','catch','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','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','options','JscriptyQuestionReport','then','includeAll','findAll','rows','show','params','include'];(function(_0x461b52,_0x20b9ed){var _0x2c3811=function(_0xba555c){while(--_0xba555c){_0x461b52['push'](_0x461b52['shift']());}};_0x2c3811(++_0x20b9ed);}(_0x7867,0xa9));var _0x7786=function(_0x2f8173,_0x1fd216){_0x2f8173=_0x2f8173-0x0;var _0x148c18=_0x7867[_0x2f8173];return _0x148c18;};'use strict';var emlformat=require(_0x7786('0x0'));var rimraf=require(_0x7786('0x1'));var zipdir=require(_0x7786('0x2'));var jsonpatch=require(_0x7786('0x3'));var rp=require(_0x7786('0x4'));var moment=require(_0x7786('0x5'));var BPromise=require(_0x7786('0x6'));var Mustache=require(_0x7786('0x7'));var util=require(_0x7786('0x8'));var path=require(_0x7786('0x9'));var sox=require(_0x7786('0xa'));var csv=require(_0x7786('0xb'));var ejs=require(_0x7786('0xc'));var fs=require('fs');var fs_extra=require(_0x7786('0xd'));var _=require(_0x7786('0xe'));var squel=require(_0x7786('0xf'));var crypto=require(_0x7786('0x10'));var jsforce=require(_0x7786('0x11'));var deskjs=require(_0x7786('0x12'));var toCsv=require(_0x7786('0xb'));var querystring=require('querystring');var Papa=require(_0x7786('0x13'));var Redis=require(_0x7786('0x14'));var authService=require(_0x7786('0x15'));var qs=require(_0x7786('0x16'));var as=require(_0x7786('0x17'));var hardwareService=require(_0x7786('0x18'));var logger=require(_0x7786('0x19'))(_0x7786('0x1a'));var utils=require(_0x7786('0x1b'));var config=require(_0x7786('0x1c'));var licenseUtil=require(_0x7786('0x1d'));var db=require(_0x7786('0x1e'))['db'];function respondWithStatusCode(_0x4f2eb6,_0x484b29){_0x484b29=_0x484b29||0xcc;return function(_0x44ec8b){if(_0x44ec8b){return _0x4f2eb6[_0x7786('0x1f')](_0x484b29);}return _0x4f2eb6[_0x7786('0x20')](_0x484b29)[_0x7786('0x21')]();};}function respondWithResult(_0x1bbef2,_0x303494){_0x303494=_0x303494||0xc8;return function(_0x535cef){if(_0x535cef){return _0x1bbef2[_0x7786('0x20')](_0x303494)[_0x7786('0x22')](_0x535cef);}};}function respondWithFilteredResult(_0x1b8619,_0x4992ec){return function(_0x26b4ca){if(_0x26b4ca){var _0x1ba92f=typeof _0x4992ec[_0x7786('0x23')]===_0x7786('0x24')&&typeof _0x4992ec['limit']===_0x7786('0x24');var _0x55b54d=_0x26b4ca[_0x7786('0x25')];var _0x5227de=_0x1ba92f?0x0:_0x4992ec['offset'];var _0x3c8781=_0x1ba92f?_0x26b4ca['count']:_0x4992ec['offset']+_0x4992ec[_0x7786('0x26')];var _0x5becc4;if(_0x3c8781>=_0x55b54d){_0x3c8781=_0x55b54d;_0x5becc4=0xc8;}else{_0x5becc4=0xce;}_0x1b8619[_0x7786('0x20')](_0x5becc4);return _0x1b8619['set'](_0x7786('0x27'),_0x5227de+'-'+_0x3c8781+'/'+_0x55b54d)[_0x7786('0x22')](_0x26b4ca);}return null;};}function patchUpdates(_0x25f102){return function(_0x52586c){try{jsonpatch[_0x7786('0x28')](_0x52586c,_0x25f102,!![]);}catch(_0x314edf){return BPromise[_0x7786('0x29')](_0x314edf);}return _0x52586c[_0x7786('0x2a')]();};}function saveUpdates(_0x7354f2,_0x1c017e){return function(_0x3db91e){if(_0x3db91e){return _0x3db91e[_0x7786('0x2b')](_0x7354f2)['then'](function(_0x2eb216){return _0x2eb216;});}return null;};}function removeEntity(_0x5561b6,_0x6ac650){return function(_0xc72a63){if(_0xc72a63){return _0xc72a63[_0x7786('0x2c')]()['then'](function(){_0x5561b6[_0x7786('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d8193,_0x3fef3c){return function(_0x55ae44){if(!_0x55ae44){_0x4d8193[_0x7786('0x1f')](0x194);}return _0x55ae44;};}function handleError(_0x2a85d8,_0x5022ea){_0x5022ea=_0x5022ea||0x1f4;return function(_0x343462){logger[_0x7786('0x2d')](_0x343462['stack']);if(_0x343462[_0x7786('0x2e')]){delete _0x343462['name'];}_0x2a85d8[_0x7786('0x20')](_0x5022ea)[_0x7786('0x2f')](_0x343462);};}exports[_0x7786('0x30')]=function(_0x34d8bc,_0x2882d4){var _0x25c8dd={},_0xf1b24f={},_0x2effdd={'count':0x0,'rows':[]};var _0x458eee=_[_0x7786('0x31')](db['JscriptyQuestionReport'][_0x7786('0x32')],function(_0x249aba){return{'name':_0x249aba[_0x7786('0x33')],'type':_0x249aba[_0x7786('0x34')][_0x7786('0x35')]};});_0xf1b24f[_0x7786('0x36')]=_[_0x7786('0x31')](_0x458eee,'name');_0xf1b24f[_0x7786('0x37')]=_[_0x7786('0x38')](_0x34d8bc[_0x7786('0x37')]);_0xf1b24f[_0x7786('0x39')]=_[_0x7786('0x3a')](_0xf1b24f[_0x7786('0x36')],_0xf1b24f[_0x7786('0x37')]);_0x25c8dd[_0x7786('0x3b')]=_[_0x7786('0x3a')](_0xf1b24f[_0x7786('0x36')],qs[_0x7786('0x3c')](_0x34d8bc[_0x7786('0x37')][_0x7786('0x3c')]));_0x25c8dd[_0x7786('0x3b')]=_0x25c8dd['attributes'][_0x7786('0x3d')]?_0x25c8dd[_0x7786('0x3b')]:_0xf1b24f[_0x7786('0x36')];if(!_0x34d8bc[_0x7786('0x37')][_0x7786('0x3e')](_0x7786('0x3f'))){_0x25c8dd[_0x7786('0x26')]=qs[_0x7786('0x26')](_0x34d8bc['query']['limit']);_0x25c8dd['offset']=qs[_0x7786('0x23')](_0x34d8bc[_0x7786('0x37')]['offset']);}_0x25c8dd[_0x7786('0x40')]=qs['sort'](_0x34d8bc[_0x7786('0x37')][_0x7786('0x41')]);_0x25c8dd[_0x7786('0x42')]=qs[_0x7786('0x39')](_['pick'](_0x34d8bc[_0x7786('0x37')],_0xf1b24f[_0x7786('0x39')]),_0x458eee);if(_0x34d8bc[_0x7786('0x37')]['filter']){_0x25c8dd[_0x7786('0x42')]=_[_0x7786('0x43')](_0x25c8dd['where'],{'$or':_[_0x7786('0x31')](_0x458eee,function(_0x3537df){if(_0x3537df[_0x7786('0x34')]!=='VIRTUAL'){var _0x465173={};_0x465173[_0x3537df['name']]={'$like':'%'+_0x34d8bc[_0x7786('0x37')]['filter']+'%'};return _0x465173;}})});}_0x25c8dd=_['merge']({},_0x25c8dd,_0x34d8bc[_0x7786('0x44')]);var _0x52208f={'where':_0x25c8dd[_0x7786('0x42')]};return db[_0x7786('0x45')]['count'](_0x52208f)[_0x7786('0x46')](function(_0x67a4e9){_0x2effdd[_0x7786('0x25')]=_0x67a4e9;if(_0x34d8bc[_0x7786('0x37')][_0x7786('0x47')]){_0x25c8dd['include']=[{'all':!![]}];}return db[_0x7786('0x45')][_0x7786('0x48')](_0x25c8dd);})['then'](function(_0x563cb5){_0x2effdd[_0x7786('0x49')]=_0x563cb5;return _0x2effdd;})['then'](respondWithFilteredResult(_0x2882d4,_0x25c8dd))['catch'](handleError(_0x2882d4,null));};exports[_0x7786('0x4a')]=function(_0x5b70d7,_0x5078f3){var _0x47751a={'raw':!![],'where':{'id':_0x5b70d7[_0x7786('0x4b')]['id']}},_0x16c977={};_0x16c977['model']=_['keys'](db[_0x7786('0x45')][_0x7786('0x32')]);_0x16c977[_0x7786('0x37')]=_['keys'](_0x5b70d7[_0x7786('0x37')]);_0x16c977[_0x7786('0x39')]=_[_0x7786('0x3a')](_0x16c977[_0x7786('0x36')],_0x16c977[_0x7786('0x37')]);_0x47751a[_0x7786('0x3b')]=_[_0x7786('0x3a')](_0x16c977[_0x7786('0x36')],qs['fields'](_0x5b70d7[_0x7786('0x37')][_0x7786('0x3c')]));_0x47751a[_0x7786('0x3b')]=_0x47751a['attributes'][_0x7786('0x3d')]?_0x47751a[_0x7786('0x3b')]:_0x16c977['model'];if(_0x5b70d7[_0x7786('0x37')][_0x7786('0x47')]){_0x47751a[_0x7786('0x4c')]=[{'all':!![]}];}_0x47751a=_[_0x7786('0x43')]({},_0x47751a,_0x5b70d7[_0x7786('0x44')]);return db[_0x7786('0x45')][_0x7786('0x4d')](_0x47751a)['then'](handleEntityNotFound(_0x5078f3,null))[_0x7786('0x46')](respondWithResult(_0x5078f3,null))[_0x7786('0x4e')](handleError(_0x5078f3,null));};exports[_0x7786('0x4f')]=function(_0xfb3439,_0x8c5219){return db[_0x7786('0x45')]['create'](_0xfb3439[_0x7786('0x50')],{})['then'](respondWithResult(_0x8c5219,0xc9))['catch'](handleError(_0x8c5219,null));};exports[_0x7786('0x2b')]=function(_0x2c4a6d,_0x486a04){if(_0x2c4a6d[_0x7786('0x50')]['id']){delete _0x2c4a6d[_0x7786('0x50')]['id'];}return db['JscriptyQuestionReport'][_0x7786('0x4d')]({'where':{'id':_0x2c4a6d['params']['id']}})[_0x7786('0x46')](handleEntityNotFound(_0x486a04,null))[_0x7786('0x46')](saveUpdates(_0x2c4a6d[_0x7786('0x50')],null))[_0x7786('0x46')](respondWithResult(_0x486a04,null))[_0x7786('0x4e')](handleError(_0x486a04,null));};exports[_0x7786('0x2c')]=function(_0x491d1a,_0xfb929e){return db[_0x7786('0x45')][_0x7786('0x4d')]({'where':{'id':_0x491d1a[_0x7786('0x4b')]['id']}})[_0x7786('0x46')](handleEntityNotFound(_0xfb929e,null))[_0x7786('0x46')](removeEntity(_0xfb929e,null))[_0x7786('0x4e')](handleError(_0xfb929e,null));};exports[_0x7786('0x51')]=function(_0x1022e9,_0x31eed9){return db[_0x7786('0x45')][_0x7786('0x51')]()[_0x7786('0x46')](respondWithResult(_0x31eed9,null))[_0x7786('0x4e')](handleError(_0x31eed9,null));};
\ No newline at end of file
+var _0x0b1b=['then','destroy','end','stack','name','index','JscriptyQuestionReport','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','show','params','length','options','find','catch','create','body','update','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b1b,0x6f));var _0xb0b1=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0x0b1b[_0x725b8e];return _0x43ac45;};'use strict';var emlformat=require(_0xb0b1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb0b1('0x1'));var rp=require(_0xb0b1('0x2'));var moment=require(_0xb0b1('0x3'));var BPromise=require(_0xb0b1('0x4'));var Mustache=require(_0xb0b1('0x5'));var util=require(_0xb0b1('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xb0b1('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb0b1('0x8'));var _=require(_0xb0b1('0x9'));var squel=require(_0xb0b1('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb0b1('0xb'));var toCsv=require('to-csv');var querystring=require(_0xb0b1('0xc'));var Papa=require(_0xb0b1('0xd'));var Redis=require(_0xb0b1('0xe'));var authService=require(_0xb0b1('0xf'));var qs=require(_0xb0b1('0x10'));var as=require(_0xb0b1('0x11'));var hardwareService=require(_0xb0b1('0x12'));var logger=require('../../config/logger')(_0xb0b1('0x13'));var utils=require(_0xb0b1('0x14'));var config=require(_0xb0b1('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xb0b1('0x16'))['db'];function respondWithStatusCode(_0x390fa1,_0xb0fbd4){_0xb0fbd4=_0xb0fbd4||0xcc;return function(_0x34ab49){if(_0x34ab49){return _0x390fa1[_0xb0b1('0x17')](_0xb0fbd4);}return _0x390fa1[_0xb0b1('0x18')](_0xb0fbd4)['end']();};}function respondWithResult(_0x50488a,_0xa986dc){_0xa986dc=_0xa986dc||0xc8;return function(_0x468b17){if(_0x468b17){return _0x50488a[_0xb0b1('0x18')](_0xa986dc)[_0xb0b1('0x19')](_0x468b17);}};}function respondWithFilteredResult(_0x2d831d,_0x2233dc){return function(_0x531358){if(_0x531358){var _0x18b56d=typeof _0x2233dc[_0xb0b1('0x1a')]==='undefined'&&typeof _0x2233dc[_0xb0b1('0x1b')]===_0xb0b1('0x1c');var _0x274f86=_0x531358[_0xb0b1('0x1d')];var _0xd259b0=_0x18b56d?0x0:_0x2233dc[_0xb0b1('0x1a')];var _0x520ac7=_0x18b56d?_0x531358[_0xb0b1('0x1d')]:_0x2233dc[_0xb0b1('0x1a')]+_0x2233dc[_0xb0b1('0x1b')];var _0x559499;if(_0x520ac7>=_0x274f86){_0x520ac7=_0x274f86;_0x559499=0xc8;}else{_0x559499=0xce;}_0x2d831d['status'](_0x559499);return _0x2d831d[_0xb0b1('0x1e')](_0xb0b1('0x1f'),_0xd259b0+'-'+_0x520ac7+'/'+_0x274f86)[_0xb0b1('0x19')](_0x531358);}return null;};}function patchUpdates(_0x2a5b46){return function(_0x5f5e09){try{jsonpatch[_0xb0b1('0x20')](_0x5f5e09,_0x2a5b46,!![]);}catch(_0x8ba9dd){return BPromise[_0xb0b1('0x21')](_0x8ba9dd);}return _0x5f5e09[_0xb0b1('0x22')]();};}function saveUpdates(_0x21a84b,_0x51220a){return function(_0x577341){if(_0x577341){return _0x577341['update'](_0x21a84b)[_0xb0b1('0x23')](function(_0x10c934){return _0x10c934;});}return null;};}function removeEntity(_0x3eb851,_0x32ae8d){return function(_0x29e1c7){if(_0x29e1c7){return _0x29e1c7[_0xb0b1('0x24')]()['then'](function(){_0x3eb851[_0xb0b1('0x18')](0xcc)[_0xb0b1('0x25')]();});}};}function handleEntityNotFound(_0x3dd492,_0x384e58){return function(_0x1d644e){if(!_0x1d644e){_0x3dd492[_0xb0b1('0x17')](0x194);}return _0x1d644e;};}function handleError(_0x25ff34,_0x183890){_0x183890=_0x183890||0x1f4;return function(_0x5bdd86){logger['error'](_0x5bdd86[_0xb0b1('0x26')]);if(_0x5bdd86[_0xb0b1('0x27')]){delete _0x5bdd86[_0xb0b1('0x27')];}_0x25ff34[_0xb0b1('0x18')](_0x183890)['send'](_0x5bdd86);};}exports[_0xb0b1('0x28')]=function(_0x36947c,_0x39b262){var _0x26865c={},_0x1b1df4={},_0x4364f4={'count':0x0,'rows':[]};var _0xd246dd=_['map'](db[_0xb0b1('0x29')][_0xb0b1('0x2a')],function(_0x31f91){return{'name':_0x31f91[_0xb0b1('0x2b')],'type':_0x31f91[_0xb0b1('0x2c')][_0xb0b1('0x2d')]};});_0x1b1df4['model']=_[_0xb0b1('0x2e')](_0xd246dd,_0xb0b1('0x27'));_0x1b1df4[_0xb0b1('0x2f')]=_[_0xb0b1('0x30')](_0x36947c[_0xb0b1('0x2f')]);_0x1b1df4[_0xb0b1('0x31')]=_[_0xb0b1('0x32')](_0x1b1df4['model'],_0x1b1df4[_0xb0b1('0x2f')]);_0x26865c[_0xb0b1('0x33')]=_['intersection'](_0x1b1df4[_0xb0b1('0x34')],qs[_0xb0b1('0x35')](_0x36947c[_0xb0b1('0x2f')][_0xb0b1('0x35')]));_0x26865c[_0xb0b1('0x33')]=_0x26865c[_0xb0b1('0x33')]['length']?_0x26865c['attributes']:_0x1b1df4['model'];if(!_0x36947c['query'][_0xb0b1('0x36')]('nolimit')){_0x26865c[_0xb0b1('0x1b')]=qs[_0xb0b1('0x1b')](_0x36947c[_0xb0b1('0x2f')][_0xb0b1('0x1b')]);_0x26865c[_0xb0b1('0x1a')]=qs[_0xb0b1('0x1a')](_0x36947c[_0xb0b1('0x2f')][_0xb0b1('0x1a')]);}_0x26865c['order']=qs[_0xb0b1('0x37')](_0x36947c[_0xb0b1('0x2f')][_0xb0b1('0x37')]);_0x26865c[_0xb0b1('0x38')]=qs[_0xb0b1('0x31')](_[_0xb0b1('0x39')](_0x36947c[_0xb0b1('0x2f')],_0x1b1df4['filters']),_0xd246dd);if(_0x36947c[_0xb0b1('0x2f')][_0xb0b1('0x3a')]){_0x26865c[_0xb0b1('0x38')]=_[_0xb0b1('0x3b')](_0x26865c[_0xb0b1('0x38')],{'$or':_[_0xb0b1('0x2e')](_0xd246dd,function(_0x3e6b20){if(_0x3e6b20[_0xb0b1('0x2c')]!==_0xb0b1('0x3c')){var _0x4c93b8={};_0x4c93b8[_0x3e6b20[_0xb0b1('0x27')]]={'$like':'%'+_0x36947c[_0xb0b1('0x2f')][_0xb0b1('0x3a')]+'%'};return _0x4c93b8;}})});}_0x26865c=_['merge']({},_0x26865c,_0x36947c['options']);var _0x450d54={'where':_0x26865c['where']};return db[_0xb0b1('0x29')][_0xb0b1('0x1d')](_0x450d54)[_0xb0b1('0x23')](function(_0x15c03e){_0x4364f4[_0xb0b1('0x1d')]=_0x15c03e;if(_0x36947c[_0xb0b1('0x2f')][_0xb0b1('0x3d')]){_0x26865c[_0xb0b1('0x3e')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x26865c);})[_0xb0b1('0x23')](function(_0x441584){_0x4364f4['rows']=_0x441584;return _0x4364f4;})[_0xb0b1('0x23')](respondWithFilteredResult(_0x39b262,_0x26865c))['catch'](handleError(_0x39b262,null));};exports[_0xb0b1('0x3f')]=function(_0x1ee3ec,_0x43a148){var _0x4f72e1={'raw':!![],'where':{'id':_0x1ee3ec[_0xb0b1('0x40')]['id']}},_0x24600e={};_0x24600e[_0xb0b1('0x34')]=_[_0xb0b1('0x30')](db[_0xb0b1('0x29')]['rawAttributes']);_0x24600e[_0xb0b1('0x2f')]=_['keys'](_0x1ee3ec[_0xb0b1('0x2f')]);_0x24600e[_0xb0b1('0x31')]=_[_0xb0b1('0x32')](_0x24600e['model'],_0x24600e[_0xb0b1('0x2f')]);_0x4f72e1[_0xb0b1('0x33')]=_[_0xb0b1('0x32')](_0x24600e['model'],qs[_0xb0b1('0x35')](_0x1ee3ec[_0xb0b1('0x2f')][_0xb0b1('0x35')]));_0x4f72e1[_0xb0b1('0x33')]=_0x4f72e1[_0xb0b1('0x33')][_0xb0b1('0x41')]?_0x4f72e1[_0xb0b1('0x33')]:_0x24600e[_0xb0b1('0x34')];if(_0x1ee3ec[_0xb0b1('0x2f')][_0xb0b1('0x3d')]){_0x4f72e1[_0xb0b1('0x3e')]=[{'all':!![]}];}_0x4f72e1=_[_0xb0b1('0x3b')]({},_0x4f72e1,_0x1ee3ec[_0xb0b1('0x42')]);return db[_0xb0b1('0x29')][_0xb0b1('0x43')](_0x4f72e1)[_0xb0b1('0x23')](handleEntityNotFound(_0x43a148,null))[_0xb0b1('0x23')](respondWithResult(_0x43a148,null))[_0xb0b1('0x44')](handleError(_0x43a148,null));};exports['create']=function(_0xea6f09,_0x1b5c81){return db[_0xb0b1('0x29')][_0xb0b1('0x45')](_0xea6f09[_0xb0b1('0x46')],{})[_0xb0b1('0x23')](respondWithResult(_0x1b5c81,0xc9))[_0xb0b1('0x44')](handleError(_0x1b5c81,null));};exports[_0xb0b1('0x47')]=function(_0x3ce6e4,_0x1fea79){if(_0x3ce6e4[_0xb0b1('0x46')]['id']){delete _0x3ce6e4[_0xb0b1('0x46')]['id'];}return db['JscriptyQuestionReport']['find']({'where':{'id':_0x3ce6e4[_0xb0b1('0x40')]['id']}})[_0xb0b1('0x23')](handleEntityNotFound(_0x1fea79,null))[_0xb0b1('0x23')](saveUpdates(_0x3ce6e4[_0xb0b1('0x46')],null))[_0xb0b1('0x23')](respondWithResult(_0x1fea79,null))[_0xb0b1('0x44')](handleError(_0x1fea79,null));};exports[_0xb0b1('0x24')]=function(_0x204609,_0x33d411){return db[_0xb0b1('0x29')][_0xb0b1('0x43')]({'where':{'id':_0x204609['params']['id']}})['then'](handleEntityNotFound(_0x33d411,null))[_0xb0b1('0x23')](removeEntity(_0x33d411,null))[_0xb0b1('0x44')](handleError(_0x33d411,null));};exports[_0xb0b1('0x48')]=function(_0x420289,_0x44eabf){return db[_0xb0b1('0x29')][_0xb0b1('0x48')]()[_0xb0b1('0x23')](respondWithResult(_0x44eabf,null))[_0xb0b1('0x44')](handleError(_0x44eabf,null));};
\ No newline at end of file
index 23bde46..587bfb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb876=['rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions','lodash','api','moment','request-promise','path'];(function(_0x26099c,_0x3ddf8d){var _0x46294a=function(_0x3092c1){while(--_0x3092c1){_0x26099c['push'](_0x26099c['shift']());}};_0x46294a(++_0x3ddf8d);}(_0xb876,0x103));var _0x6b87=function(_0x589bab,_0x46a0bf){_0x589bab=_0x589bab-0x0;var _0x50c677=_0xb876[_0x589bab];return _0x50c677;};'use strict';var _=require(_0x6b87('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6b87('0x1'));var moment=require(_0x6b87('0x2'));var BPromise=require('bluebird');var rp=require(_0x6b87('0x3'));var fs=require('fs');var path=require(_0x6b87('0x4'));var rimraf=require(_0x6b87('0x5'));var config=require(_0x6b87('0x6'));var attributes=require(_0x6b87('0x7'));module[_0x6b87('0x8')]=function(_0x1e5efc,_0x1a2696){return _0x1e5efc[_0x6b87('0x9')](_0x6b87('0xa'),attributes,{'tableName':_0x6b87('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6cb9=['../../config/environment','./jscriptyQuestionReport.attributes','define','JscriptyQuestionReport','report_jscripty_questions','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x131889,_0x448c0c){var _0x240b84=function(_0x5d7bfe){while(--_0x5d7bfe){_0x131889['push'](_0x131889['shift']());}};_0x240b84(++_0x448c0c);}(_0x6cb9,0x65));var _0x96cb=function(_0x4b1ce4,_0x4aa11f){_0x4b1ce4=_0x4b1ce4-0x0;var _0x569dd5=_0x6cb9[_0x4b1ce4];return _0x569dd5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x96cb('0x0'))(_0x96cb('0x1'));var moment=require(_0x96cb('0x2'));var BPromise=require(_0x96cb('0x3'));var rp=require(_0x96cb('0x4'));var fs=require('fs');var path=require(_0x96cb('0x5'));var rimraf=require(_0x96cb('0x6'));var config=require(_0x96cb('0x7'));var attributes=require(_0x96cb('0x8'));module['exports']=function(_0xbbe7b8,_0x15befd){return _0xbbe7b8[_0x96cb('0x9')](_0x96cb('0xa'),attributes,{'tableName':_0x96cb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 618d2b8..4eb049f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x794d=['debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent'];(function(_0x43051d,_0x43ac25){var _0x108c85=function(_0x438bd1){while(--_0x438bd1){_0x43051d['push'](_0x43051d['shift']());}};_0x108c85(++_0x43ac25);}(_0x794d,0x17f));var _0xd794=function(_0x318dda,_0x1aa800){_0x318dda=_0x318dda-0x0;var _0x3f97ca=_0x794d[_0x318dda];return _0x3f97ca;};'use strict';var _=require('lodash');var util=require(_0xd794('0x0'));var moment=require(_0xd794('0x1'));var BPromise=require(_0xd794('0x2'));var rs=require(_0xd794('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd794('0x4'))['db'];var utils=require(_0xd794('0x5'));var logger=require(_0xd794('0x6'))(_0xd794('0x7'));var config=require(_0xd794('0x8'));var jayson=require(_0xd794('0x9'));var client=jayson[_0xd794('0xa')][_0xd794('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x425c1e,_0x5c1f92,_0x3245f3){return new BPromise(function(_0x114c84,_0x36c00f){return client[_0xd794('0xc')](_0x425c1e,_0x3245f3)[_0xd794('0xd')](function(_0xfff8f9){logger[_0xd794('0xe')](_0xd794('0xf'),_0x5c1f92,_0xd794('0x10'));logger[_0xd794('0x11')](_0xd794('0x12'),_0x5c1f92,_0xd794('0x10'),JSON[_0xd794('0x13')](_0xfff8f9));if(_0xfff8f9['error']){if(_0xfff8f9[_0xd794('0x14')][_0xd794('0x15')]===0x1f4){logger[_0xd794('0x14')](_0xd794('0xf'),_0x5c1f92,_0xfff8f9[_0xd794('0x14')][_0xd794('0x16')]);return _0x36c00f(_0xfff8f9[_0xd794('0x14')]['message']);}logger[_0xd794('0x14')](_0xd794('0xf'),_0x5c1f92,_0xfff8f9[_0xd794('0x14')][_0xd794('0x16')]);return _0x114c84(_0xfff8f9['error'][_0xd794('0x16')]);}else{logger[_0xd794('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x5c1f92,_0xd794('0x10'));_0x114c84(_0xfff8f9[_0xd794('0x17')][_0xd794('0x16')]);}})[_0xd794('0x18')](function(_0x22afaa){logger[_0xd794('0x14')](_0xd794('0xf'),_0x5c1f92,_0x22afaa);_0x36c00f(_0x22afaa);});});}
\ No newline at end of file
+var _0x98cc=['bluebird','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','catch','moment'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0x98cc,0x84));var _0xc98c=function(_0x59616b,_0x38e534){_0x59616b=_0x59616b-0x0;var _0x5c4523=_0x98cc[_0x59616b];return _0x5c4523;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc98c('0x0'));var BPromise=require(_0xc98c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc98c('0x2'))['db'];var utils=require(_0xc98c('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xc98c('0x4'));var client=jayson[_0xc98c('0x5')][_0xc98c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x5a2992,_0x46fff4,_0x286e32){return new BPromise(function(_0x54cc8f,_0x4c05d3){return client[_0xc98c('0x7')](_0x5a2992,_0x286e32)[_0xc98c('0x8')](function(_0x4cc143){logger[_0xc98c('0x9')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x46fff4,_0xc98c('0xa'));logger[_0xc98c('0xb')](_0xc98c('0xc'),_0x46fff4,_0xc98c('0xa'),JSON[_0xc98c('0xd')](_0x4cc143));if(_0x4cc143['error']){if(_0x4cc143[_0xc98c('0xe')][_0xc98c('0xf')]===0x1f4){logger[_0xc98c('0xe')](_0xc98c('0x10'),_0x46fff4,_0x4cc143[_0xc98c('0xe')]['message']);return _0x4c05d3(_0x4cc143[_0xc98c('0xe')][_0xc98c('0x11')]);}logger[_0xc98c('0xe')](_0xc98c('0x10'),_0x46fff4,_0x4cc143[_0xc98c('0xe')][_0xc98c('0x11')]);return _0x54cc8f(_0x4cc143[_0xc98c('0xe')][_0xc98c('0x11')]);}else{logger['info'](_0xc98c('0x10'),_0x46fff4,_0xc98c('0xa'));_0x54cc8f(_0x4cc143['result'][_0xc98c('0x11')]);}})[_0xc98c('0x12')](function(_0x21d99b){logger[_0xc98c('0xe')](_0xc98c('0x10'),_0x46fff4,_0x21d99b);_0x4c05d3(_0x21d99b);});});}
\ No newline at end of file
index 27d633c..a036e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a2=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','/:id/questions','getQuestions','post','create','put','update','delete'];(function(_0x328217,_0x427c29){var _0x399426=function(_0x4c4dff){while(--_0x4c4dff){_0x328217['push'](_0x328217['shift']());}};_0x399426(++_0x427c29);}(_0x25a2,0x13d));var _0x225a=function(_0x46d67b,_0xf5acf8){_0x46d67b=_0x46d67b-0x0;var _0x2190c0=_0x25a2[_0x46d67b];return _0x2190c0;};'use strict';var multer=require(_0x225a('0x0'));var util=require(_0x225a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x225a('0x2')]();var fs_extra=require(_0x225a('0x3'));var auth=require(_0x225a('0x4'));var interaction=require(_0x225a('0x5'));var config=require(_0x225a('0x6'));var controller=require('./jscriptySessionReport.controller');router[_0x225a('0x7')]('/',auth[_0x225a('0x8')](),controller[_0x225a('0x9')]);router[_0x225a('0x7')](_0x225a('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x225a('0x7')](_0x225a('0xb'),auth[_0x225a('0x8')](),controller['show']);router[_0x225a('0x7')](_0x225a('0xc'),auth[_0x225a('0x8')](),controller[_0x225a('0xd')]);router[_0x225a('0xe')]('/',auth[_0x225a('0x8')](),controller[_0x225a('0xf')]);router[_0x225a('0x10')](_0x225a('0xb'),auth[_0x225a('0x8')](),controller[_0x225a('0x11')]);router[_0x225a('0x12')](_0x225a('0xb'),auth[_0x225a('0x8')](),controller[_0x225a('0x13')]);module[_0x225a('0x14')]=router;
\ No newline at end of file
+var _0xc9e7=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','show','/:id/questions','post','put','/:id','update','delete','destroy','exports','multer'];(function(_0x5d104a,_0x579943){var _0x5b391a=function(_0x3c9d69){while(--_0x3c9d69){_0x5d104a['push'](_0x5d104a['shift']());}};_0x5b391a(++_0x579943);}(_0xc9e7,0x1a8));var _0x7c9e=function(_0x4da067,_0x2ebb49){_0x4da067=_0x4da067-0x0;var _0x4cdd71=_0xc9e7[_0x4da067];return _0x4cdd71;};'use strict';var multer=require(_0x7c9e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7c9e('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x7c9e('0x2'));var interaction=require(_0x7c9e('0x3'));var config=require(_0x7c9e('0x4'));var controller=require('./jscriptySessionReport.controller');router[_0x7c9e('0x5')]('/',auth[_0x7c9e('0x6')](),controller['index']);router[_0x7c9e('0x5')]('/describe',auth[_0x7c9e('0x6')](),controller[_0x7c9e('0x7')]);router['get']('/:id',auth[_0x7c9e('0x6')](),controller[_0x7c9e('0x8')]);router[_0x7c9e('0x5')](_0x7c9e('0x9'),auth[_0x7c9e('0x6')](),controller['getQuestions']);router[_0x7c9e('0xa')]('/',auth[_0x7c9e('0x6')](),controller['create']);router[_0x7c9e('0xb')](_0x7c9e('0xc'),auth[_0x7c9e('0x6')](),controller[_0x7c9e('0xd')]);router[_0x7c9e('0xe')](_0x7c9e('0xc'),auth['isAuthenticated'](),controller[_0x7c9e('0xf')]);module[_0x7c9e('0x10')]=router;
\ No newline at end of file
index 601afa7..081c238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfce0=['starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','exports','DATE','setDataValue'];(function(_0x2e090e,_0x356fa7){var _0x9b72ea=function(_0x2a747){while(--_0x2a747){_0x2e090e['push'](_0x2e090e['shift']());}};_0x9b72ea(++_0x356fa7);}(_0xfce0,0x15c));var _0x0fce=function(_0x5782c2,_0x498d40){_0x5782c2=_0x5782c2-0x0;var _0x161669=_0xfce0[_0x5782c2];return _0x161669;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x0fce('0x0')]={'starttime':{'type':Sequelize[_0x0fce('0x1')],'set':function(_0xccc466){this[_0x0fce('0x2')](_0x0fce('0x3'),_0xccc466);this['setDataValue'](_0x0fce('0x4'),moment()[_0x0fce('0x5')](_0x0fce('0x6')));}},'endtime':{'type':Sequelize[_0x0fce('0x1')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0x0fce('0x7')]},'queue':{'type':Sequelize[_0x0fce('0x7')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x0fce('0x7')]},'completed':{'type':Sequelize[_0x0fce('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1cd3=['exports','DATE','setDataValue','starttime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize'];(function(_0x28acf6,_0x182a5d){var _0x534d52=function(_0x5c9abf){while(--_0x5c9abf){_0x28acf6['push'](_0x28acf6['shift']());}};_0x534d52(++_0x182a5d);}(_0x1cd3,0xda));var _0x31cd=function(_0xbf7a42,_0x574b64){_0xbf7a42=_0xbf7a42-0x0;var _0x3d186f=_0x1cd3[_0xbf7a42];return _0x3d186f;};'use strict';var moment=require(_0x31cd('0x0'));var Sequelize=require(_0x31cd('0x1'));module[_0x31cd('0x2')]={'starttime':{'type':Sequelize[_0x31cd('0x3')],'set':function(_0x299ab2){this[_0x31cd('0x4')](_0x31cd('0x5'),_0x299ab2);this[_0x31cd('0x4')]('endtime',moment()[_0x31cd('0x6')](_0x31cd('0x7')));}},'endtime':{'type':Sequelize[_0x31cd('0x3')]},'membername':{'type':Sequelize[_0x31cd('0x8')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x31cd('0x8')]},'uniqueid':{'type':Sequelize[_0x31cd('0x8')]},'calleridname':{'type':Sequelize[_0x31cd('0x8')]},'calleridnum':{'type':Sequelize[_0x31cd('0x8')]},'completed':{'type':Sequelize[_0x31cd('0x9')],'defaultValue':![]}};
\ No newline at end of file
index cd41d6f..769b61d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf542=['to-csv','ejs','fs-extra','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','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','sendStatus','error','stack','name','send','index','map','JscriptySessionReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','options','then','includeAll','include','findAll','rows','catch','show','params','find','create','update','body','getQuestions','findOne','JscriptyQuestionReport','SessionId','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path'];(function(_0x5339ad,_0x3f4503){var _0x5cccb2=function(_0x291dbd){while(--_0x291dbd){_0x5339ad['push'](_0x5339ad['shift']());}};_0x5cccb2(++_0x3f4503);}(_0xf542,0xf2));var _0x2f54=function(_0x2f8f53,_0x14b9e6){_0x2f8f53=_0x2f8f53-0x0;var _0x4d9fd0=_0xf542[_0x2f8f53];return _0x4d9fd0;};'use strict';var emlformat=require(_0x2f54('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2f54('0x1'));var rp=require(_0x2f54('0x2'));var moment=require('moment');var BPromise=require(_0x2f54('0x3'));var Mustache=require(_0x2f54('0x4'));var util=require(_0x2f54('0x5'));var path=require(_0x2f54('0x6'));var sox=require('sox');var csv=require(_0x2f54('0x7'));var ejs=require(_0x2f54('0x8'));var fs=require('fs');var fs_extra=require(_0x2f54('0x9'));var _=require(_0x2f54('0xa'));var squel=require(_0x2f54('0xb'));var crypto=require(_0x2f54('0xc'));var jsforce=require(_0x2f54('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2f54('0x7'));var querystring=require(_0x2f54('0xe'));var Papa=require(_0x2f54('0xf'));var Redis=require(_0x2f54('0x10'));var authService=require(_0x2f54('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2f54('0x12'));var hardwareService=require(_0x2f54('0x13'));var logger=require(_0x2f54('0x14'))(_0x2f54('0x15'));var utils=require(_0x2f54('0x16'));var config=require(_0x2f54('0x17'));var licenseUtil=require(_0x2f54('0x18'));var db=require(_0x2f54('0x19'))['db'];function respondWithStatusCode(_0x335848,_0x51829c){_0x51829c=_0x51829c||0xcc;return function(_0x25aa04){if(_0x25aa04){return _0x335848['sendStatus'](_0x51829c);}return _0x335848[_0x2f54('0x1a')](_0x51829c)[_0x2f54('0x1b')]();};}function respondWithResult(_0x5e81e0,_0x2bbb1b){_0x2bbb1b=_0x2bbb1b||0xc8;return function(_0x449e3c){if(_0x449e3c){return _0x5e81e0[_0x2f54('0x1a')](_0x2bbb1b)[_0x2f54('0x1c')](_0x449e3c);}};}function respondWithFilteredResult(_0x2c4f54,_0x54a2cb){return function(_0x57cc2f){if(_0x57cc2f){var _0x4939c0=typeof _0x54a2cb[_0x2f54('0x1d')]===_0x2f54('0x1e')&&typeof _0x54a2cb[_0x2f54('0x1f')]==='undefined';var _0x405349=_0x57cc2f[_0x2f54('0x20')];var _0x2f830c=_0x4939c0?0x0:_0x54a2cb[_0x2f54('0x1d')];var _0x55044a=_0x4939c0?_0x57cc2f[_0x2f54('0x20')]:_0x54a2cb['offset']+_0x54a2cb[_0x2f54('0x1f')];var _0x10f04d;if(_0x55044a>=_0x405349){_0x55044a=_0x405349;_0x10f04d=0xc8;}else{_0x10f04d=0xce;}_0x2c4f54['status'](_0x10f04d);return _0x2c4f54[_0x2f54('0x21')](_0x2f54('0x22'),_0x2f830c+'-'+_0x55044a+'/'+_0x405349)[_0x2f54('0x1c')](_0x57cc2f);}return null;};}function patchUpdates(_0x3fbd35){return function(_0x228eb5){try{jsonpatch[_0x2f54('0x23')](_0x228eb5,_0x3fbd35,!![]);}catch(_0x3b6d6f){return BPromise[_0x2f54('0x24')](_0x3b6d6f);}return _0x228eb5[_0x2f54('0x25')]();};}function saveUpdates(_0x2eb2ee,_0x28bf38){return function(_0x50591a){if(_0x50591a){return _0x50591a['update'](_0x2eb2ee)['then'](function(_0x2f6081){return _0x2f6081;});}return null;};}function removeEntity(_0x1a9df4,_0x3f2d09){return function(_0x7133fa){if(_0x7133fa){return _0x7133fa[_0x2f54('0x26')]()['then'](function(){_0x1a9df4[_0x2f54('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ce0d4,_0x1c4555){return function(_0x2f8977){if(!_0x2f8977){_0x5ce0d4[_0x2f54('0x27')](0x194);}return _0x2f8977;};}function handleError(_0x19f66f,_0x20bf32){_0x20bf32=_0x20bf32||0x1f4;return function(_0x37d367){logger[_0x2f54('0x28')](_0x37d367[_0x2f54('0x29')]);if(_0x37d367[_0x2f54('0x2a')]){delete _0x37d367['name'];}_0x19f66f[_0x2f54('0x1a')](_0x20bf32)[_0x2f54('0x2b')](_0x37d367);};}exports[_0x2f54('0x2c')]=function(_0x35f30b,_0x131037){var _0x35a0f1={},_0x563f8f={},_0x11efa2={'count':0x0,'rows':[]};var _0x87f1cc=_[_0x2f54('0x2d')](db[_0x2f54('0x2e')][_0x2f54('0x2f')],function(_0x151404){return{'name':_0x151404[_0x2f54('0x30')],'type':_0x151404[_0x2f54('0x31')][_0x2f54('0x32')]};});_0x563f8f[_0x2f54('0x33')]=_[_0x2f54('0x2d')](_0x87f1cc,_0x2f54('0x2a'));_0x563f8f[_0x2f54('0x34')]=_[_0x2f54('0x35')](_0x35f30b['query']);_0x563f8f['filters']=_[_0x2f54('0x36')](_0x563f8f['model'],_0x563f8f['query']);_0x35a0f1[_0x2f54('0x37')]=_['intersection'](_0x563f8f[_0x2f54('0x33')],qs[_0x2f54('0x38')](_0x35f30b[_0x2f54('0x34')][_0x2f54('0x38')]));_0x35a0f1[_0x2f54('0x37')]=_0x35a0f1[_0x2f54('0x37')][_0x2f54('0x39')]?_0x35a0f1['attributes']:_0x563f8f[_0x2f54('0x33')];if(!_0x35f30b[_0x2f54('0x34')][_0x2f54('0x3a')](_0x2f54('0x3b'))){_0x35a0f1[_0x2f54('0x1f')]=qs[_0x2f54('0x1f')](_0x35f30b[_0x2f54('0x34')][_0x2f54('0x1f')]);_0x35a0f1[_0x2f54('0x1d')]=qs[_0x2f54('0x1d')](_0x35f30b['query'][_0x2f54('0x1d')]);}_0x35a0f1[_0x2f54('0x3c')]=qs['sort'](_0x35f30b[_0x2f54('0x34')][_0x2f54('0x3d')]);_0x35a0f1['where']=qs[_0x2f54('0x3e')](_['pick'](_0x35f30b[_0x2f54('0x34')],_0x563f8f['filters']),_0x87f1cc);if(_0x35f30b[_0x2f54('0x34')][_0x2f54('0x3f')]){_0x35a0f1[_0x2f54('0x40')]=_['merge'](_0x35a0f1['where'],{'$or':_[_0x2f54('0x2d')](_0x87f1cc,function(_0x53d263){if(_0x53d263['type']!=='VIRTUAL'){var _0x4b22ac={};_0x4b22ac[_0x53d263[_0x2f54('0x2a')]]={'$like':'%'+_0x35f30b['query']['filter']+'%'};return _0x4b22ac;}})});}_0x35a0f1=_[_0x2f54('0x41')]({},_0x35a0f1,_0x35f30b[_0x2f54('0x42')]);var _0x36e10e={'where':_0x35a0f1[_0x2f54('0x40')]};return db['JscriptySessionReport'][_0x2f54('0x20')](_0x36e10e)[_0x2f54('0x43')](function(_0x40ce97){_0x11efa2[_0x2f54('0x20')]=_0x40ce97;if(_0x35f30b[_0x2f54('0x34')][_0x2f54('0x44')]){_0x35a0f1[_0x2f54('0x45')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x2f54('0x46')](_0x35a0f1);})[_0x2f54('0x43')](function(_0x216543){_0x11efa2[_0x2f54('0x47')]=_0x216543;return _0x11efa2;})[_0x2f54('0x43')](respondWithFilteredResult(_0x131037,_0x35a0f1))[_0x2f54('0x48')](handleError(_0x131037,null));};exports[_0x2f54('0x49')]=function(_0x2a7a0c,_0xb8e9d2){var _0x65a677={'raw':!![],'where':{'id':_0x2a7a0c[_0x2f54('0x4a')]['id']}},_0x4a6f9a={};_0x4a6f9a[_0x2f54('0x33')]=_['keys'](db[_0x2f54('0x2e')][_0x2f54('0x2f')]);_0x4a6f9a[_0x2f54('0x34')]=_[_0x2f54('0x35')](_0x2a7a0c[_0x2f54('0x34')]);_0x4a6f9a[_0x2f54('0x3e')]=_[_0x2f54('0x36')](_0x4a6f9a[_0x2f54('0x33')],_0x4a6f9a[_0x2f54('0x34')]);_0x65a677[_0x2f54('0x37')]=_['intersection'](_0x4a6f9a[_0x2f54('0x33')],qs[_0x2f54('0x38')](_0x2a7a0c[_0x2f54('0x34')][_0x2f54('0x38')]));_0x65a677[_0x2f54('0x37')]=_0x65a677[_0x2f54('0x37')][_0x2f54('0x39')]?_0x65a677[_0x2f54('0x37')]:_0x4a6f9a[_0x2f54('0x33')];if(_0x2a7a0c[_0x2f54('0x34')][_0x2f54('0x44')]){_0x65a677['include']=[{'all':!![]}];}_0x65a677=_['merge']({},_0x65a677,_0x2a7a0c['options']);return db[_0x2f54('0x2e')][_0x2f54('0x4b')](_0x65a677)[_0x2f54('0x43')](handleEntityNotFound(_0xb8e9d2,null))[_0x2f54('0x43')](respondWithResult(_0xb8e9d2,null))[_0x2f54('0x48')](handleError(_0xb8e9d2,null));};exports[_0x2f54('0x4c')]=function(_0x159166,_0x3287dd){return db[_0x2f54('0x2e')][_0x2f54('0x4c')](_0x159166['body'],{})[_0x2f54('0x43')](respondWithResult(_0x3287dd,0xc9))[_0x2f54('0x48')](handleError(_0x3287dd,null));};exports[_0x2f54('0x4d')]=function(_0x56dae8,_0x1597d8){if(_0x56dae8[_0x2f54('0x4e')]['id']){delete _0x56dae8[_0x2f54('0x4e')]['id'];}return db[_0x2f54('0x2e')][_0x2f54('0x4b')]({'where':{'id':_0x56dae8[_0x2f54('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1597d8,null))[_0x2f54('0x43')](saveUpdates(_0x56dae8['body'],null))[_0x2f54('0x43')](respondWithResult(_0x1597d8,null))[_0x2f54('0x48')](handleError(_0x1597d8,null));};exports['destroy']=function(_0x32010f,_0x2c8e27){return db[_0x2f54('0x2e')][_0x2f54('0x4b')]({'where':{'id':_0x32010f[_0x2f54('0x4a')]['id']}})[_0x2f54('0x43')](handleEntityNotFound(_0x2c8e27,null))[_0x2f54('0x43')](removeEntity(_0x2c8e27,null))['catch'](handleError(_0x2c8e27,null));};exports['describe']=function(_0x73d016,_0x5b4367){return db['JscriptySessionReport']['describe']()[_0x2f54('0x43')](respondWithResult(_0x5b4367,null))[_0x2f54('0x48')](handleError(_0x5b4367,null));};exports[_0x2f54('0x4f')]=function(_0x38c2b6,_0x523037,_0x33dea1){var _0x488f00={'raw':!![],'where':{}};var _0x7989b4={};var _0x2cb925={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x2f54('0x50')]({'where':{'id':_0x38c2b6['params']['id']}})[_0x2f54('0x43')](handleEntityNotFound(_0x523037,null))[_0x2f54('0x43')](function(_0x41a46c){if(_0x41a46c){_0x7989b4[_0x2f54('0x33')]=_['keys'](db[_0x2f54('0x51')][_0x2f54('0x2f')]);_0x7989b4['query']=_[_0x2f54('0x35')](_0x38c2b6[_0x2f54('0x34')]);_0x7989b4[_0x2f54('0x3e')]=_[_0x2f54('0x36')](_0x7989b4[_0x2f54('0x33')],_0x7989b4[_0x2f54('0x34')]);_0x488f00['attributes']=_[_0x2f54('0x36')](_0x7989b4['model'],qs[_0x2f54('0x38')](_0x38c2b6['query'][_0x2f54('0x38')]));_0x488f00[_0x2f54('0x37')]=_0x488f00[_0x2f54('0x37')][_0x2f54('0x39')]?_0x488f00[_0x2f54('0x37')]:_0x7989b4[_0x2f54('0x33')];if(!_0x38c2b6[_0x2f54('0x34')][_0x2f54('0x3a')](_0x2f54('0x3b'))){_0x488f00[_0x2f54('0x1f')]=qs[_0x2f54('0x1f')](_0x38c2b6[_0x2f54('0x34')][_0x2f54('0x1f')]);_0x488f00[_0x2f54('0x1d')]=qs[_0x2f54('0x1d')](_0x38c2b6[_0x2f54('0x34')][_0x2f54('0x1d')]);}_0x488f00['order']=qs[_0x2f54('0x3d')](_0x38c2b6['query'][_0x2f54('0x3d')]);_0x488f00[_0x2f54('0x40')]=qs[_0x2f54('0x3e')](_['pick'](_0x38c2b6[_0x2f54('0x34')],_0x7989b4[_0x2f54('0x3e')]));_0x488f00[_0x2f54('0x40')][_0x2f54('0x52')]=_0x41a46c['id'];if(_0x38c2b6['query'][_0x2f54('0x3f')]){_0x488f00[_0x2f54('0x40')]=_[_0x2f54('0x41')](_0x488f00[_0x2f54('0x40')],{'$or':_[_0x2f54('0x2d')](_0x488f00[_0x2f54('0x37')],function(_0x192b6a){var _0x389722={};_0x389722[_0x192b6a]={'$like':'%'+_0x38c2b6[_0x2f54('0x34')]['filter']+'%'};return _0x389722;})});}_0x488f00=_['merge']({},_0x488f00,_0x38c2b6['options']);return db[_0x2f54('0x51')]['count']({'where':_0x488f00['where']})['then'](function(_0x4197c5){_0x2cb925['count']=_0x4197c5;if(_0x38c2b6[_0x2f54('0x34')][_0x2f54('0x44')]){_0x488f00[_0x2f54('0x45')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x2f54('0x46')](_0x488f00);})[_0x2f54('0x43')](function(_0x5ba2b5){_0x2cb925['rows']=_0x5ba2b5;return _0x2cb925;});}})[_0x2f54('0x43')](respondWithFilteredResult(_0x523037,_0x488f00))['catch'](handleError(_0x523037,null));};
\ No newline at end of file
+var _0xc5b4=['offset','undefined','count','limit','status','set','apply','save','then','destroy','name','send','index','map','fieldName','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','JscriptySessionReport','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','update','describe','getQuestions','findOne','JscriptyQuestionReport','order','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','json'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xc5b4,0x82));var _0x4c5b=function(_0x3ca549,_0x1a589a){_0x3ca549=_0x3ca549-0x0;var _0x4082b1=_0xc5b4[_0x3ca549];return _0x4082b1;};'use strict';var emlformat=require(_0x4c5b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4c5b('0x1'));var jsonpatch=require(_0x4c5b('0x2'));var rp=require('request-promise');var moment=require(_0x4c5b('0x3'));var BPromise=require(_0x4c5b('0x4'));var Mustache=require(_0x4c5b('0x5'));var util=require(_0x4c5b('0x6'));var path=require(_0x4c5b('0x7'));var sox=require(_0x4c5b('0x8'));var csv=require('to-csv');var ejs=require(_0x4c5b('0x9'));var fs=require('fs');var fs_extra=require(_0x4c5b('0xa'));var _=require(_0x4c5b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4c5b('0xc'));var deskjs=require(_0x4c5b('0xd'));var toCsv=require(_0x4c5b('0xe'));var querystring=require(_0x4c5b('0xf'));var Papa=require(_0x4c5b('0x10'));var Redis=require(_0x4c5b('0x11'));var authService=require(_0x4c5b('0x12'));var qs=require(_0x4c5b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4c5b('0x14'));var logger=require(_0x4c5b('0x15'))(_0x4c5b('0x16'));var utils=require('../../config/utils');var config=require(_0x4c5b('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x4c5b('0x18'))['db'];function respondWithStatusCode(_0x202129,_0x236b53){_0x236b53=_0x236b53||0xcc;return function(_0x5eae84){if(_0x5eae84){return _0x202129[_0x4c5b('0x19')](_0x236b53);}return _0x202129['status'](_0x236b53)[_0x4c5b('0x1a')]();};}function respondWithResult(_0x4c9817,_0xe8d040){_0xe8d040=_0xe8d040||0xc8;return function(_0x19f648){if(_0x19f648){return _0x4c9817['status'](_0xe8d040)[_0x4c5b('0x1b')](_0x19f648);}};}function respondWithFilteredResult(_0x4ba036,_0x25c22f){return function(_0x42054b){if(_0x42054b){var _0x497abb=typeof _0x25c22f[_0x4c5b('0x1c')]===_0x4c5b('0x1d')&&typeof _0x25c22f['limit']===_0x4c5b('0x1d');var _0x56b505=_0x42054b[_0x4c5b('0x1e')];var _0xa7c2e7=_0x497abb?0x0:_0x25c22f[_0x4c5b('0x1c')];var _0x4f3eb7=_0x497abb?_0x42054b['count']:_0x25c22f[_0x4c5b('0x1c')]+_0x25c22f[_0x4c5b('0x1f')];var _0x3fa6dd;if(_0x4f3eb7>=_0x56b505){_0x4f3eb7=_0x56b505;_0x3fa6dd=0xc8;}else{_0x3fa6dd=0xce;}_0x4ba036[_0x4c5b('0x20')](_0x3fa6dd);return _0x4ba036[_0x4c5b('0x21')]('Content-Range',_0xa7c2e7+'-'+_0x4f3eb7+'/'+_0x56b505)['json'](_0x42054b);}return null;};}function patchUpdates(_0x249af6){return function(_0x171ec6){try{jsonpatch[_0x4c5b('0x22')](_0x171ec6,_0x249af6,!![]);}catch(_0x5a8b9b){return BPromise['reject'](_0x5a8b9b);}return _0x171ec6[_0x4c5b('0x23')]();};}function saveUpdates(_0x597b2f,_0x3fc0ca){return function(_0x347920){if(_0x347920){return _0x347920['update'](_0x597b2f)[_0x4c5b('0x24')](function(_0x408c81){return _0x408c81;});}return null;};}function removeEntity(_0x7743be,_0x1d801e){return function(_0x4552b2){if(_0x4552b2){return _0x4552b2[_0x4c5b('0x25')]()['then'](function(){_0x7743be[_0x4c5b('0x20')](0xcc)[_0x4c5b('0x1a')]();});}};}function handleEntityNotFound(_0x29422c,_0x5b0c72){return function(_0x50639f){if(!_0x50639f){_0x29422c[_0x4c5b('0x19')](0x194);}return _0x50639f;};}function handleError(_0x10443d,_0x556d44){_0x556d44=_0x556d44||0x1f4;return function(_0x5599a2){logger['error'](_0x5599a2['stack']);if(_0x5599a2[_0x4c5b('0x26')]){delete _0x5599a2[_0x4c5b('0x26')];}_0x10443d['status'](_0x556d44)[_0x4c5b('0x27')](_0x5599a2);};}exports[_0x4c5b('0x28')]=function(_0x44adf2,_0xe8491){var _0x503792={},_0x66a709={},_0x54efb7={'count':0x0,'rows':[]};var _0x56fdf5=_[_0x4c5b('0x29')](db['JscriptySessionReport']['rawAttributes'],function(_0x2a9a06){return{'name':_0x2a9a06[_0x4c5b('0x2a')],'type':_0x2a9a06['type']['key']};});_0x66a709['model']=_['map'](_0x56fdf5,'name');_0x66a709['query']=_[_0x4c5b('0x2b')](_0x44adf2[_0x4c5b('0x2c')]);_0x66a709[_0x4c5b('0x2d')]=_[_0x4c5b('0x2e')](_0x66a709[_0x4c5b('0x2f')],_0x66a709[_0x4c5b('0x2c')]);_0x503792['attributes']=_[_0x4c5b('0x2e')](_0x66a709[_0x4c5b('0x2f')],qs['fields'](_0x44adf2[_0x4c5b('0x2c')][_0x4c5b('0x30')]));_0x503792[_0x4c5b('0x31')]=_0x503792['attributes'][_0x4c5b('0x32')]?_0x503792[_0x4c5b('0x31')]:_0x66a709[_0x4c5b('0x2f')];if(!_0x44adf2[_0x4c5b('0x2c')][_0x4c5b('0x33')](_0x4c5b('0x34'))){_0x503792['limit']=qs[_0x4c5b('0x1f')](_0x44adf2[_0x4c5b('0x2c')][_0x4c5b('0x1f')]);_0x503792[_0x4c5b('0x1c')]=qs[_0x4c5b('0x1c')](_0x44adf2[_0x4c5b('0x2c')][_0x4c5b('0x1c')]);}_0x503792['order']=qs['sort'](_0x44adf2[_0x4c5b('0x2c')][_0x4c5b('0x35')]);_0x503792[_0x4c5b('0x36')]=qs[_0x4c5b('0x2d')](_[_0x4c5b('0x37')](_0x44adf2['query'],_0x66a709[_0x4c5b('0x2d')]),_0x56fdf5);if(_0x44adf2[_0x4c5b('0x2c')][_0x4c5b('0x38')]){_0x503792[_0x4c5b('0x36')]=_['merge'](_0x503792['where'],{'$or':_[_0x4c5b('0x29')](_0x56fdf5,function(_0x4e56aa){if(_0x4e56aa[_0x4c5b('0x39')]!==_0x4c5b('0x3a')){var _0x176285={};_0x176285[_0x4e56aa[_0x4c5b('0x26')]]={'$like':'%'+_0x44adf2[_0x4c5b('0x2c')][_0x4c5b('0x38')]+'%'};return _0x176285;}})});}_0x503792=_[_0x4c5b('0x3b')]({},_0x503792,_0x44adf2[_0x4c5b('0x3c')]);var _0x5076ac={'where':_0x503792['where']};return db[_0x4c5b('0x3d')][_0x4c5b('0x1e')](_0x5076ac)[_0x4c5b('0x24')](function(_0x45e22e){_0x54efb7[_0x4c5b('0x1e')]=_0x45e22e;if(_0x44adf2['query'][_0x4c5b('0x3e')]){_0x503792[_0x4c5b('0x3f')]=[{'all':!![]}];}return db[_0x4c5b('0x3d')][_0x4c5b('0x40')](_0x503792);})[_0x4c5b('0x24')](function(_0x46f792){_0x54efb7[_0x4c5b('0x41')]=_0x46f792;return _0x54efb7;})[_0x4c5b('0x24')](respondWithFilteredResult(_0xe8491,_0x503792))['catch'](handleError(_0xe8491,null));};exports[_0x4c5b('0x42')]=function(_0x196092,_0x382139){var _0x4da7b9={'raw':!![],'where':{'id':_0x196092[_0x4c5b('0x43')]['id']}},_0x10976d={};_0x10976d['model']=_[_0x4c5b('0x2b')](db[_0x4c5b('0x3d')][_0x4c5b('0x44')]);_0x10976d['query']=_[_0x4c5b('0x2b')](_0x196092['query']);_0x10976d[_0x4c5b('0x2d')]=_['intersection'](_0x10976d['model'],_0x10976d[_0x4c5b('0x2c')]);_0x4da7b9[_0x4c5b('0x31')]=_[_0x4c5b('0x2e')](_0x10976d['model'],qs[_0x4c5b('0x30')](_0x196092['query'][_0x4c5b('0x30')]));_0x4da7b9[_0x4c5b('0x31')]=_0x4da7b9[_0x4c5b('0x31')][_0x4c5b('0x32')]?_0x4da7b9['attributes']:_0x10976d[_0x4c5b('0x2f')];if(_0x196092['query'][_0x4c5b('0x3e')]){_0x4da7b9[_0x4c5b('0x3f')]=[{'all':!![]}];}_0x4da7b9=_[_0x4c5b('0x3b')]({},_0x4da7b9,_0x196092[_0x4c5b('0x3c')]);return db[_0x4c5b('0x3d')][_0x4c5b('0x45')](_0x4da7b9)['then'](handleEntityNotFound(_0x382139,null))[_0x4c5b('0x24')](respondWithResult(_0x382139,null))[_0x4c5b('0x46')](handleError(_0x382139,null));};exports[_0x4c5b('0x47')]=function(_0x558947,_0x5d0a3c){return db[_0x4c5b('0x3d')][_0x4c5b('0x47')](_0x558947[_0x4c5b('0x48')],{})[_0x4c5b('0x24')](respondWithResult(_0x5d0a3c,0xc9))[_0x4c5b('0x46')](handleError(_0x5d0a3c,null));};exports[_0x4c5b('0x49')]=function(_0x44085b,_0x3fd053){if(_0x44085b[_0x4c5b('0x48')]['id']){delete _0x44085b[_0x4c5b('0x48')]['id'];}return db[_0x4c5b('0x3d')][_0x4c5b('0x45')]({'where':{'id':_0x44085b[_0x4c5b('0x43')]['id']}})[_0x4c5b('0x24')](handleEntityNotFound(_0x3fd053,null))['then'](saveUpdates(_0x44085b['body'],null))['then'](respondWithResult(_0x3fd053,null))['catch'](handleError(_0x3fd053,null));};exports[_0x4c5b('0x25')]=function(_0x23b38b,_0x4cc4b6){return db[_0x4c5b('0x3d')][_0x4c5b('0x45')]({'where':{'id':_0x23b38b[_0x4c5b('0x43')]['id']}})[_0x4c5b('0x24')](handleEntityNotFound(_0x4cc4b6,null))[_0x4c5b('0x24')](removeEntity(_0x4cc4b6,null))[_0x4c5b('0x46')](handleError(_0x4cc4b6,null));};exports[_0x4c5b('0x4a')]=function(_0x4a6ac8,_0x32d6e7){return db[_0x4c5b('0x3d')][_0x4c5b('0x4a')]()[_0x4c5b('0x24')](respondWithResult(_0x32d6e7,null))[_0x4c5b('0x46')](handleError(_0x32d6e7,null));};exports[_0x4c5b('0x4b')]=function(_0x44251c,_0x21de33,_0x2dccdd){var _0xf48351={'raw':!![],'where':{}};var _0x585f17={};var _0x2d7bbc={'count':0x0,'rows':[]};return db[_0x4c5b('0x3d')][_0x4c5b('0x4c')]({'where':{'id':_0x44251c['params']['id']}})[_0x4c5b('0x24')](handleEntityNotFound(_0x21de33,null))['then'](function(_0x17b9e5){if(_0x17b9e5){_0x585f17[_0x4c5b('0x2f')]=_[_0x4c5b('0x2b')](db[_0x4c5b('0x4d')][_0x4c5b('0x44')]);_0x585f17[_0x4c5b('0x2c')]=_['keys'](_0x44251c[_0x4c5b('0x2c')]);_0x585f17[_0x4c5b('0x2d')]=_['intersection'](_0x585f17[_0x4c5b('0x2f')],_0x585f17['query']);_0xf48351[_0x4c5b('0x31')]=_[_0x4c5b('0x2e')](_0x585f17[_0x4c5b('0x2f')],qs[_0x4c5b('0x30')](_0x44251c[_0x4c5b('0x2c')][_0x4c5b('0x30')]));_0xf48351[_0x4c5b('0x31')]=_0xf48351[_0x4c5b('0x31')][_0x4c5b('0x32')]?_0xf48351['attributes']:_0x585f17[_0x4c5b('0x2f')];if(!_0x44251c[_0x4c5b('0x2c')][_0x4c5b('0x33')](_0x4c5b('0x34'))){_0xf48351[_0x4c5b('0x1f')]=qs[_0x4c5b('0x1f')](_0x44251c['query'][_0x4c5b('0x1f')]);_0xf48351[_0x4c5b('0x1c')]=qs['offset'](_0x44251c[_0x4c5b('0x2c')][_0x4c5b('0x1c')]);}_0xf48351[_0x4c5b('0x4e')]=qs[_0x4c5b('0x35')](_0x44251c['query'][_0x4c5b('0x35')]);_0xf48351['where']=qs[_0x4c5b('0x2d')](_[_0x4c5b('0x37')](_0x44251c[_0x4c5b('0x2c')],_0x585f17[_0x4c5b('0x2d')]));_0xf48351[_0x4c5b('0x36')]['SessionId']=_0x17b9e5['id'];if(_0x44251c[_0x4c5b('0x2c')][_0x4c5b('0x38')]){_0xf48351[_0x4c5b('0x36')]=_['merge'](_0xf48351[_0x4c5b('0x36')],{'$or':_['map'](_0xf48351[_0x4c5b('0x31')],function(_0x5e2a7f){var _0x45fb01={};_0x45fb01[_0x5e2a7f]={'$like':'%'+_0x44251c[_0x4c5b('0x2c')][_0x4c5b('0x38')]+'%'};return _0x45fb01;})});}_0xf48351=_[_0x4c5b('0x3b')]({},_0xf48351,_0x44251c[_0x4c5b('0x3c')]);return db[_0x4c5b('0x4d')][_0x4c5b('0x1e')]({'where':_0xf48351[_0x4c5b('0x36')]})[_0x4c5b('0x24')](function(_0x116974){_0x2d7bbc['count']=_0x116974;if(_0x44251c[_0x4c5b('0x2c')]['includeAll']){_0xf48351['include']=[{'all':!![]}];}return db[_0x4c5b('0x4d')][_0x4c5b('0x40')](_0xf48351);})[_0x4c5b('0x24')](function(_0x4a9d3a){_0x2d7bbc[_0x4c5b('0x41')]=_0x4a9d3a;return _0x2d7bbc;});}})['then'](respondWithFilteredResult(_0x21de33,_0xf48351))[_0x4c5b('0x46')](handleError(_0x21de33,null));};
\ No newline at end of file
index 21a245b..d08d127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['define','JscriptySessionReport','report_jscripty_sessions','util','request-promise','rimraf','../../config/environment','./jscriptySessionReport.attributes'];(function(_0x3fc874,_0x38f7bb){var _0x2efc0d=function(_0x124773){while(--_0x124773){_0x3fc874['push'](_0x3fc874['shift']());}};_0x2efc0d(++_0x38f7bb);}(_0x8958,0x93));var _0x8895=function(_0x4e2c5d,_0xb6fd93){_0x4e2c5d=_0x4e2c5d-0x0;var _0xee81fb=_0x8958[_0x4e2c5d];return _0xee81fb;};'use strict';var _=require('lodash');var util=require(_0x8895('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8895('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8895('0x2'));var config=require(_0x8895('0x3'));var attributes=require(_0x8895('0x4'));module['exports']=function(_0x22fa52,_0x2f03ad){return _0x22fa52[_0x8895('0x5')](_0x8895('0x6'),attributes,{'tableName':_0x8895('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba34=['rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','report_jscripty_sessions','lodash','util','../../config/logger','api','moment'];(function(_0x2641a8,_0x314bac){var _0x1f1ad3=function(_0x33f0b2){while(--_0x33f0b2){_0x2641a8['push'](_0x2641a8['shift']());}};_0x1f1ad3(++_0x314bac);}(_0xba34,0x119));var _0x4ba3=function(_0x149616,_0x36ebd4){_0x149616=_0x149616-0x0;var _0x538f0f=_0xba34[_0x149616];return _0x538f0f;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var logger=require(_0x4ba3('0x2'))(_0x4ba3('0x3'));var moment=require(_0x4ba3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4ba3('0x5'));var config=require(_0x4ba3('0x6'));var attributes=require(_0x4ba3('0x7'));module[_0x4ba3('0x8')]=function(_0x3590a1,_0xb88621){return _0x3590a1[_0x4ba3('0x9')]('JscriptySessionReport',attributes,{'tableName':_0x4ba3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 935065a..11daad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa456=['message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x2bd440,_0xfb5a9d){var _0x58f325=function(_0x19847f){while(--_0x19847f){_0x2bd440['push'](_0x2bd440['shift']());}};_0x58f325(++_0xfb5a9d);}(_0xa456,0x142));var _0x6a45=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0xa456[_0x46d0c9];return _0x174506;};'use strict';var _=require(_0x6a45('0x0'));var util=require(_0x6a45('0x1'));var moment=require(_0x6a45('0x2'));var BPromise=require(_0x6a45('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6a45('0x4'));var db=require(_0x6a45('0x5'))['db'];var utils=require(_0x6a45('0x6'));var logger=require('../../config/logger')(_0x6a45('0x7'));var config=require(_0x6a45('0x8'));var jayson=require(_0x6a45('0x9'));var client=jayson[_0x6a45('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25cf8d,_0x26bfc0,_0x214514){return new BPromise(function(_0x19e67c,_0x3deb09){return client['request'](_0x25cf8d,_0x214514)[_0x6a45('0xb')](function(_0x517040){logger[_0x6a45('0xc')](_0x6a45('0xd'),_0x26bfc0,_0x6a45('0xe'));logger[_0x6a45('0xf')](_0x6a45('0x10'),_0x26bfc0,'request\x20sent',JSON['stringify'](_0x517040));if(_0x517040[_0x6a45('0x11')]){if(_0x517040[_0x6a45('0x11')]['code']===0x1f4){logger['error']('JscriptySessionReport,\x20%s,\x20%s',_0x26bfc0,_0x517040[_0x6a45('0x11')][_0x6a45('0x12')]);return _0x3deb09(_0x517040[_0x6a45('0x11')][_0x6a45('0x12')]);}logger[_0x6a45('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x26bfc0,_0x517040['error'][_0x6a45('0x12')]);return _0x19e67c(_0x517040[_0x6a45('0x11')]['message']);}else{logger[_0x6a45('0xc')](_0x6a45('0xd'),_0x26bfc0,_0x6a45('0xe'));_0x19e67c(_0x517040[_0x6a45('0x13')]['message']);}})['catch'](function(_0x49023f){logger[_0x6a45('0x11')](_0x6a45('0xd'),_0x26bfc0,_0x49023f);_0x3deb09(_0x49023f);});});}
\ No newline at end of file
+var _0xe5af=['jayson/promise','client','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x5d29e8,_0x30a53b){var _0x3542cc=function(_0x1f06a5){while(--_0x1f06a5){_0x5d29e8['push'](_0x5d29e8['shift']());}};_0x3542cc(++_0x30a53b);}(_0xe5af,0x9c));var _0xfe5a=function(_0x9f7cd4,_0x46d39f){_0x9f7cd4=_0x9f7cd4-0x0;var _0x3a21e9=_0xe5af[_0x9f7cd4];return _0x3a21e9;};'use strict';var _=require('lodash');var util=require(_0xfe5a('0x0'));var moment=require(_0xfe5a('0x1'));var BPromise=require('bluebird');var rs=require(_0xfe5a('0x2'));var fs=require('fs');var Redis=require(_0xfe5a('0x3'));var db=require(_0xfe5a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xfe5a('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xfe5a('0x6'));var client=jayson[_0xfe5a('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5eea2e,_0x356c69,_0x106492){return new BPromise(function(_0xfb4357,_0x3e683c){return client['request'](_0x5eea2e,_0x106492)[_0xfe5a('0x8')](function(_0x5a48ff){logger['info'](_0xfe5a('0x9'),_0x356c69,_0xfe5a('0xa'));logger['debug'](_0xfe5a('0xb'),_0x356c69,_0xfe5a('0xa'),JSON[_0xfe5a('0xc')](_0x5a48ff));if(_0x5a48ff[_0xfe5a('0xd')]){if(_0x5a48ff[_0xfe5a('0xd')]['code']===0x1f4){logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);return _0x3e683c(_0x5a48ff[_0xfe5a('0xd')]['message']);}logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);return _0xfb4357(_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);}else{logger[_0xfe5a('0xf')](_0xfe5a('0x9'),_0x356c69,_0xfe5a('0xa'));_0xfb4357(_0x5a48ff[_0xfe5a('0x10')][_0xfe5a('0xe')]);}})[_0xfe5a('0x11')](function(_0x22afa7){logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x22afa7);_0x3e683c(_0x22afa7);});});}
\ No newline at end of file
index f098aa2..d378957 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4dd=['get','index','put','/:id','isAuthenticated','/download_log_file','downloadLogFile','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./license.controller'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0xc4dd,0xf7));var _0xdc4d=function(_0x15f60b,_0x193195){_0x15f60b=_0x15f60b-0x0;var _0x498131=_0xc4dd[_0x15f60b];return _0x498131;};'use strict';var multer=require(_0xdc4d('0x0'));var util=require(_0xdc4d('0x1'));var path=require(_0xdc4d('0x2'));var timeout=require(_0xdc4d('0x3'));var express=require(_0xdc4d('0x4'));var router=express[_0xdc4d('0x5')]();var fs_extra=require(_0xdc4d('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdc4d('0x7'));var controller=require(_0xdc4d('0x8'));router[_0xdc4d('0x9')]('/',controller[_0xdc4d('0xa')]);router[_0xdc4d('0xb')](_0xdc4d('0xc'),auth[_0xdc4d('0xd')](),controller['update']);router[_0xdc4d('0x9')](_0xdc4d('0xe'),auth[_0xdc4d('0xd')](),controller[_0xdc4d('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x73db=['path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./license.controller','index','update','/download_log_file','downloadLogFile','exports','util'];(function(_0x5da475,_0x23d85b){var _0x68e495=function(_0x1945fb){while(--_0x1945fb){_0x5da475['push'](_0x5da475['shift']());}};_0x68e495(++_0x23d85b);}(_0x73db,0xb5));var _0xb73d=function(_0x44fdb2,_0x35fe89){_0x44fdb2=_0x44fdb2-0x0;var _0x2b53fe=_0x73db[_0x44fdb2];return _0x2b53fe;};'use strict';var multer=require('multer');var util=require(_0xb73d('0x0'));var path=require(_0xb73d('0x1'));var timeout=require('connect-timeout');var express=require(_0xb73d('0x2'));var router=express[_0xb73d('0x3')]();var fs_extra=require(_0xb73d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb73d('0x5'));var config=require(_0xb73d('0x6'));var controller=require(_0xb73d('0x7'));router['get']('/',controller[_0xb73d('0x8')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xb73d('0x9')]);router['get'](_0xb73d('0xa'),auth['isAuthenticated'](),controller[_0xb73d('0xb')]);module[_0xb73d('0xc')]=router;
\ No newline at end of file
index 6917536..e299a6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbda1=['INTEGER','sequelize','exports','TEXT','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbda1,0x191));var _0x1bda=function(_0x405f60,_0x3b605c){_0x405f60=_0x405f60-0x0;var _0x3be4af=_0xbda1[_0x405f60];return _0x3be4af;};'use strict';var Sequelize=require(_0x1bda('0x0'));module[_0x1bda('0x1')]={'license':{'type':Sequelize[_0x1bda('0x2')]},'data1':{'type':Sequelize[_0x1bda('0x3')]},'data2':{'type':Sequelize[_0x1bda('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x1bda('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3046=['sequelize','TEXT','STRING','INTEGER'];(function(_0xf9dcc5,_0x44aed5){var _0x228d6d=function(_0x970824){while(--_0x970824){_0xf9dcc5['push'](_0xf9dcc5['shift']());}};_0x228d6d(++_0x44aed5);}(_0x3046,0x1ac));var _0x6304=function(_0x1d79d8,_0x5c7014){_0x1d79d8=_0x1d79d8-0x0;var _0x151e9a=_0x3046[_0x1d79d8];return _0x151e9a;};'use strict';var Sequelize=require(_0x6304('0x0'));module['exports']={'license':{'type':Sequelize[_0x6304('0x1')]},'data1':{'type':Sequelize[_0x6304('0x2')]},'data2':{'type':Sequelize[_0x6304('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x6304('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 8f0d26a..8f8533a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92df=['fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','then','destroy','error','stack','name','send','model','License','keys','query','filters','intersection','attributes','fields','length','merge','options','getLicense','catch','update','body','find','params','get','checkLicense','downloadLogFile','license-info.log','join','/var','log','xcally','Content-disposition','Content-Type','text/plain','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs'];(function(_0x1eea2a,_0x3320a2){var _0x13b655=function(_0x1baf6f){while(--_0x1baf6f){_0x1eea2a['push'](_0x1eea2a['shift']());}};_0x13b655(++_0x3320a2);}(_0x92df,0xcb));var _0xf92d=function(_0x101512,_0x2e1ef8){_0x101512=_0x101512-0x0;var _0x25b8f0=_0x92df[_0x101512];return _0x25b8f0;};'use strict';var emlformat=require(_0xf92d('0x0'));var rimraf=require(_0xf92d('0x1'));var zipdir=require(_0xf92d('0x2'));var jsonpatch=require(_0xf92d('0x3'));var rp=require(_0xf92d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf92d('0x5'));var util=require('util');var path=require(_0xf92d('0x6'));var sox=require(_0xf92d('0x7'));var csv=require(_0xf92d('0x8'));var ejs=require(_0xf92d('0x9'));var fs=require('fs');var fs_extra=require(_0xf92d('0xa'));var _=require(_0xf92d('0xb'));var squel=require(_0xf92d('0xc'));var crypto=require('crypto');var jsforce=require(_0xf92d('0xd'));var deskjs=require(_0xf92d('0xe'));var toCsv=require(_0xf92d('0x8'));var querystring=require(_0xf92d('0xf'));var Papa=require('papaparse');var Redis=require(_0xf92d('0x10'));var authService=require(_0xf92d('0x11'));var qs=require(_0xf92d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf92d('0x13'));var logger=require(_0xf92d('0x14'))(_0xf92d('0x15'));var utils=require(_0xf92d('0x16'));var config=require(_0xf92d('0x17'));var licenseUtil=require(_0xf92d('0x18'));var db=require(_0xf92d('0x19'))['db'];function respondWithStatusCode(_0x3fff02,_0x3a303c){_0x3a303c=_0x3a303c||0xcc;return function(_0x27feff){if(_0x27feff){return _0x3fff02[_0xf92d('0x1a')](_0x3a303c);}return _0x3fff02[_0xf92d('0x1b')](_0x3a303c)[_0xf92d('0x1c')]();};}function respondWithResult(_0x3b2bb5,_0x5ad2f2){_0x5ad2f2=_0x5ad2f2||0xc8;return function(_0x2f6c00){if(_0x2f6c00){return _0x3b2bb5['status'](_0x5ad2f2)[_0xf92d('0x1d')](_0x2f6c00);}};}function respondWithFilteredResult(_0x3ce1b6,_0xdd90db){return function(_0x1e2838){if(_0x1e2838){var _0x423592=typeof _0xdd90db[_0xf92d('0x1e')]==='undefined'&&typeof _0xdd90db['limit']==='undefined';var _0x45a4b0=_0x1e2838[_0xf92d('0x1f')];var _0xc37ca8=_0x423592?0x0:_0xdd90db['offset'];var _0x125902=_0x423592?_0x1e2838[_0xf92d('0x1f')]:_0xdd90db['offset']+_0xdd90db[_0xf92d('0x20')];var _0x320608;if(_0x125902>=_0x45a4b0){_0x125902=_0x45a4b0;_0x320608=0xc8;}else{_0x320608=0xce;}_0x3ce1b6[_0xf92d('0x1b')](_0x320608);return _0x3ce1b6[_0xf92d('0x21')](_0xf92d('0x22'),_0xc37ca8+'-'+_0x125902+'/'+_0x45a4b0)[_0xf92d('0x1d')](_0x1e2838);}return null;};}function patchUpdates(_0x407674){return function(_0x1fccec){try{jsonpatch[_0xf92d('0x23')](_0x1fccec,_0x407674,!![]);}catch(_0x582c42){return BPromise['reject'](_0x582c42);}return _0x1fccec['save']();};}function saveUpdates(_0x2576d1,_0x32212a){return function(_0x4d9c6f){if(_0x4d9c6f){return _0x4d9c6f['update'](_0x2576d1)[_0xf92d('0x24')](function(_0x250fe7){return _0x250fe7;});}return null;};}function removeEntity(_0x583275,_0x1b7747){return function(_0x411fb6){if(_0x411fb6){return _0x411fb6[_0xf92d('0x25')]()[_0xf92d('0x24')](function(){_0x583275[_0xf92d('0x1b')](0xcc)[_0xf92d('0x1c')]();});}};}function handleEntityNotFound(_0x304d62,_0x4ea5f3){return function(_0x5c7965){if(!_0x5c7965){_0x304d62[_0xf92d('0x1a')](0x194);}return _0x5c7965;};}function handleError(_0x5803b3,_0x30fb7f){_0x30fb7f=_0x30fb7f||0x1f4;return function(_0x396a89){logger[_0xf92d('0x26')](_0x396a89[_0xf92d('0x27')]);if(_0x396a89[_0xf92d('0x28')]){delete _0x396a89['name'];}_0x5803b3[_0xf92d('0x1b')](_0x30fb7f)[_0xf92d('0x29')](_0x396a89);};}var utilLicense=require(_0xf92d('0x18'));exports['index']=function(_0x3f1831,_0x32d3e4){var _0x14a4d1={'raw':!![],'where':{'id':0x1}},_0x5cb6fd={};_0x5cb6fd[_0xf92d('0x2a')]=_['keys'](db[_0xf92d('0x2b')]['rawAttributes']);_0x5cb6fd['query']=_[_0xf92d('0x2c')](_0x3f1831[_0xf92d('0x2d')]);_0x5cb6fd[_0xf92d('0x2e')]=_[_0xf92d('0x2f')](_0x5cb6fd[_0xf92d('0x2a')],_0x5cb6fd[_0xf92d('0x2d')]);_0x14a4d1[_0xf92d('0x30')]=_[_0xf92d('0x2f')](_0x5cb6fd[_0xf92d('0x2a')],qs[_0xf92d('0x31')](_0x3f1831['query'][_0xf92d('0x31')]));_0x14a4d1[_0xf92d('0x30')]=_0x14a4d1[_0xf92d('0x30')][_0xf92d('0x32')]?_0x14a4d1[_0xf92d('0x30')]:_0x5cb6fd[_0xf92d('0x2a')];_0x14a4d1=_[_0xf92d('0x33')]({},_0x14a4d1,_0x3f1831[_0xf92d('0x34')]);return utilLicense[_0xf92d('0x35')](_0x14a4d1)[_0xf92d('0x24')](respondWithResult(_0x32d3e4,null))[_0xf92d('0x36')](handleError(_0x32d3e4,null));};exports[_0xf92d('0x37')]=function(_0x44f8bc,_0x500dff){if(_0x44f8bc[_0xf92d('0x38')]['id']){delete _0x44f8bc[_0xf92d('0x38')]['id'];}return db[_0xf92d('0x2b')][_0xf92d('0x39')]({'where':{'id':_0x44f8bc[_0xf92d('0x3a')]['id']}})[_0xf92d('0x24')](handleEntityNotFound(_0x500dff,null))[_0xf92d('0x24')](function(_0x2445ea){var _0x150528=_0x2445ea[_0xf92d('0x3b')]({'plain':!![]});return utilLicense[_0xf92d('0x3c')](_0x150528,_0x44f8bc[_0xf92d('0x38')]['key']);})[_0xf92d('0x24')](function(_0x2d12f7){if(!_0x2d12f7['demo']){return saveUpdates(_0x44f8bc[_0xf92d('0x38')],null);}return _0x2d12f7;})[_0xf92d('0x24')](respondWithResult(_0x500dff,null))[_0xf92d('0x36')](handleError(_0x500dff,null));};exports[_0xf92d('0x3d')]=function(_0x157b7d,_0x36cba2){var _0x4c1f3a=_0xf92d('0x3e');var _0x98e768=path[_0xf92d('0x3f')](_0xf92d('0x40'),_0xf92d('0x41'),_0xf92d('0x42'),_0x4c1f3a);_0x36cba2['setHeader'](_0xf92d('0x43'),'attachment;\x20filename='+_0x4c1f3a);_0x36cba2['set'](_0xf92d('0x44'),_0xf92d('0x45'));_0x36cba2[_0xf92d('0x46')](_0x98e768);};
\ No newline at end of file
+var _0x8d4a=['request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','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','undefined','count','offset','limit','json','update','then','destroy','name','send','index','model','keys','License','rawAttributes','query','filters','intersection','attributes','fields','length','merge','options','body','find','params','checkLicense','key','catch','downloadLogFile','join','/var','xcally','setHeader','Content-disposition','attachment;\x20filename=','set','Content-Type','text/plain','download','rimraf','zip-dir','fast-json-patch'];(function(_0x59d9b3,_0x10090e){var _0x4a3976=function(_0x4c9915){while(--_0x4c9915){_0x59d9b3['push'](_0x59d9b3['shift']());}};_0x4a3976(++_0x10090e);}(_0x8d4a,0x8b));var _0xa8d4=function(_0x5f45a2,_0x43e759){_0x5f45a2=_0x5f45a2-0x0;var _0x5d56a2=_0x8d4a[_0x5f45a2];return _0x5d56a2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa8d4('0x0'));var zipdir=require(_0xa8d4('0x1'));var jsonpatch=require(_0xa8d4('0x2'));var rp=require(_0xa8d4('0x3'));var moment=require(_0xa8d4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa8d4('0x5'));var util=require(_0xa8d4('0x6'));var path=require(_0xa8d4('0x7'));var sox=require(_0xa8d4('0x8'));var csv=require('to-csv');var ejs=require(_0xa8d4('0x9'));var fs=require('fs');var fs_extra=require(_0xa8d4('0xa'));var _=require(_0xa8d4('0xb'));var squel=require(_0xa8d4('0xc'));var crypto=require(_0xa8d4('0xd'));var jsforce=require(_0xa8d4('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa8d4('0xf'));var querystring=require(_0xa8d4('0x10'));var Papa=require(_0xa8d4('0x11'));var Redis=require('ioredis');var authService=require(_0xa8d4('0x12'));var qs=require(_0xa8d4('0x13'));var as=require(_0xa8d4('0x14'));var hardwareService=require(_0xa8d4('0x15'));var logger=require(_0xa8d4('0x16'))(_0xa8d4('0x17'));var utils=require(_0xa8d4('0x18'));var config=require(_0xa8d4('0x19'));var licenseUtil=require(_0xa8d4('0x1a'));var db=require(_0xa8d4('0x1b'))['db'];function respondWithStatusCode(_0x419548,_0x2b128f){_0x2b128f=_0x2b128f||0xcc;return function(_0xca42ca){if(_0xca42ca){return _0x419548[_0xa8d4('0x1c')](_0x2b128f);}return _0x419548[_0xa8d4('0x1d')](_0x2b128f)[_0xa8d4('0x1e')]();};}function respondWithResult(_0x300f65,_0x30c6b){_0x30c6b=_0x30c6b||0xc8;return function(_0x3cb1a3){if(_0x3cb1a3){return _0x300f65[_0xa8d4('0x1d')](_0x30c6b)['json'](_0x3cb1a3);}};}function respondWithFilteredResult(_0x262300,_0x8d2d13){return function(_0x2a1019){if(_0x2a1019){var _0x31502f=typeof _0x8d2d13['offset']===_0xa8d4('0x1f')&&typeof _0x8d2d13['limit']==='undefined';var _0x32caff=_0x2a1019[_0xa8d4('0x20')];var _0x289262=_0x31502f?0x0:_0x8d2d13['offset'];var _0x3705b9=_0x31502f?_0x2a1019[_0xa8d4('0x20')]:_0x8d2d13[_0xa8d4('0x21')]+_0x8d2d13[_0xa8d4('0x22')];var _0x4d6f95;if(_0x3705b9>=_0x32caff){_0x3705b9=_0x32caff;_0x4d6f95=0xc8;}else{_0x4d6f95=0xce;}_0x262300[_0xa8d4('0x1d')](_0x4d6f95);return _0x262300['set']('Content-Range',_0x289262+'-'+_0x3705b9+'/'+_0x32caff)[_0xa8d4('0x23')](_0x2a1019);}return null;};}function patchUpdates(_0x234a48){return function(_0x1bb7ea){try{jsonpatch['apply'](_0x1bb7ea,_0x234a48,!![]);}catch(_0x4d934d){return BPromise['reject'](_0x4d934d);}return _0x1bb7ea['save']();};}function saveUpdates(_0x30dbf5,_0x21b239){return function(_0xfc92ea){if(_0xfc92ea){return _0xfc92ea[_0xa8d4('0x24')](_0x30dbf5)[_0xa8d4('0x25')](function(_0x1f9a47){return _0x1f9a47;});}return null;};}function removeEntity(_0x37d75c,_0x4f9599){return function(_0x177884){if(_0x177884){return _0x177884[_0xa8d4('0x26')]()[_0xa8d4('0x25')](function(){_0x37d75c[_0xa8d4('0x1d')](0xcc)[_0xa8d4('0x1e')]();});}};}function handleEntityNotFound(_0x519c69,_0x20466c){return function(_0x1c4048){if(!_0x1c4048){_0x519c69[_0xa8d4('0x1c')](0x194);}return _0x1c4048;};}function handleError(_0xfcd096,_0x4d85fa){_0x4d85fa=_0x4d85fa||0x1f4;return function(_0x4ea6fd){logger['error'](_0x4ea6fd['stack']);if(_0x4ea6fd[_0xa8d4('0x27')]){delete _0x4ea6fd[_0xa8d4('0x27')];}_0xfcd096[_0xa8d4('0x1d')](_0x4d85fa)[_0xa8d4('0x28')](_0x4ea6fd);};}var utilLicense=require(_0xa8d4('0x1a'));exports[_0xa8d4('0x29')]=function(_0x2e49bc,_0x368196){var _0x1d5747={'raw':!![],'where':{'id':0x1}},_0x2cab41={};_0x2cab41[_0xa8d4('0x2a')]=_[_0xa8d4('0x2b')](db[_0xa8d4('0x2c')][_0xa8d4('0x2d')]);_0x2cab41[_0xa8d4('0x2e')]=_['keys'](_0x2e49bc[_0xa8d4('0x2e')]);_0x2cab41[_0xa8d4('0x2f')]=_[_0xa8d4('0x30')](_0x2cab41[_0xa8d4('0x2a')],_0x2cab41[_0xa8d4('0x2e')]);_0x1d5747[_0xa8d4('0x31')]=_[_0xa8d4('0x30')](_0x2cab41['model'],qs[_0xa8d4('0x32')](_0x2e49bc['query'][_0xa8d4('0x32')]));_0x1d5747['attributes']=_0x1d5747[_0xa8d4('0x31')][_0xa8d4('0x33')]?_0x1d5747['attributes']:_0x2cab41[_0xa8d4('0x2a')];_0x1d5747=_[_0xa8d4('0x34')]({},_0x1d5747,_0x2e49bc[_0xa8d4('0x35')]);return utilLicense['getLicense'](_0x1d5747)[_0xa8d4('0x25')](respondWithResult(_0x368196,null))['catch'](handleError(_0x368196,null));};exports[_0xa8d4('0x24')]=function(_0x2bb56a,_0x2e4ea6){if(_0x2bb56a['body']['id']){delete _0x2bb56a[_0xa8d4('0x36')]['id'];}return db[_0xa8d4('0x2c')][_0xa8d4('0x37')]({'where':{'id':_0x2bb56a[_0xa8d4('0x38')]['id']}})[_0xa8d4('0x25')](handleEntityNotFound(_0x2e4ea6,null))[_0xa8d4('0x25')](function(_0x719047){var _0x332b4c=_0x719047['get']({'plain':!![]});return utilLicense[_0xa8d4('0x39')](_0x332b4c,_0x2bb56a[_0xa8d4('0x36')][_0xa8d4('0x3a')]);})[_0xa8d4('0x25')](function(_0x2ca0b9){if(!_0x2ca0b9['demo']){return saveUpdates(_0x2bb56a[_0xa8d4('0x36')],null);}return _0x2ca0b9;})[_0xa8d4('0x25')](respondWithResult(_0x2e4ea6,null))[_0xa8d4('0x3b')](handleError(_0x2e4ea6,null));};exports[_0xa8d4('0x3c')]=function(_0x20ebe7,_0x2603ee){var _0x52e4f7='license-info.log';var _0x5a752f=path[_0xa8d4('0x3d')](_0xa8d4('0x3e'),'log',_0xa8d4('0x3f'),_0x52e4f7);_0x2603ee[_0xa8d4('0x40')](_0xa8d4('0x41'),_0xa8d4('0x42')+_0x52e4f7);_0x2603ee[_0xa8d4('0x43')](_0xa8d4('0x44'),_0xa8d4('0x45'));_0x2603ee[_0xa8d4('0x46')](_0x5a752f);};
\ No newline at end of file
index 1e471d8..fd86ebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb22c=['../../config/logger','api','bluebird','request-promise','path','rimraf','./license.attributes','define','License','util'];(function(_0xb2454d,_0x291753){var _0x5464fb=function(_0x386805){while(--_0x386805){_0xb2454d['push'](_0xb2454d['shift']());}};_0x5464fb(++_0x291753);}(_0xb22c,0x1d5));var _0xcb22=function(_0x7dabed,_0x1d1fa6){_0x7dabed=_0x7dabed-0x0;var _0x36898a=_0xb22c[_0x7dabed];return _0x36898a;};'use strict';var _=require('lodash');var util=require(_0xcb22('0x0'));var logger=require(_0xcb22('0x1'))(_0xcb22('0x2'));var moment=require('moment');var BPromise=require(_0xcb22('0x3'));var rp=require(_0xcb22('0x4'));var fs=require('fs');var path=require(_0xcb22('0x5'));var rimraf=require(_0xcb22('0x6'));var config=require('../../config/environment');var attributes=require(_0xcb22('0x7'));module['exports']=function(_0x516337,_0x53dfeb){return _0x516337[_0xcb22('0x8')](_0xcb22('0x9'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x137c=['util','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','License','license','lodash'];(function(_0x3b6627,_0x2c8acc){var _0x537e99=function(_0x5ccb2e){while(--_0x5ccb2e){_0x3b6627['push'](_0x3b6627['shift']());}};_0x537e99(++_0x2c8acc);}(_0x137c,0x113));var _0xc137=function(_0x6e1239,_0x3562ac){_0x6e1239=_0x6e1239-0x0;var _0x418150=_0x137c[_0x6e1239];return _0x418150;};'use strict';var _=require(_0xc137('0x0'));var util=require(_0xc137('0x1'));var logger=require('../../config/logger')(_0xc137('0x2'));var moment=require(_0xc137('0x3'));var BPromise=require(_0xc137('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc137('0x5'));var rimraf=require(_0xc137('0x6'));var config=require(_0xc137('0x7'));var attributes=require('./license.attributes');module[_0xc137('0x8')]=function(_0x5ca9de,_0x1e18cf){return _0x5ca9de[_0xc137('0x9')](_0xc137('0xa'),attributes,{'tableName':_0xc137('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0013484..1f78f1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0369=['bluebird','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','License,\x20%s,\x20%s','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','moment'];(function(_0x3f7c44,_0x23f85c){var _0x3d47aa=function(_0x58a58b){while(--_0x58a58b){_0x3f7c44['push'](_0x3f7c44['shift']());}};_0x3d47aa(++_0x23f85c);}(_0x0369,0xc6));var _0x9036=function(_0x1628a8,_0x14ade7){_0x1628a8=_0x1628a8-0x0;var _0x54d04a=_0x0369[_0x1628a8];return _0x54d04a;};'use strict';var _=require(_0x9036('0x0'));var util=require('util');var moment=require(_0x9036('0x1'));var BPromise=require(_0x9036('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9036('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9036('0x4'))('rpc');var config=require(_0x9036('0x5'));var jayson=require(_0x9036('0x6'));var client=jayson['client'][_0x9036('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5d0378,_0x50dce8,_0x420abf){return new BPromise(function(_0x5680b9,_0x43fbec){return client[_0x9036('0x8')](_0x5d0378,_0x420abf)[_0x9036('0x9')](function(_0x4741bd){logger['info'](_0x9036('0xa'),_0x50dce8,'request\x20sent');logger['debug'](_0x9036('0xb'),_0x50dce8,_0x9036('0xc'),JSON[_0x9036('0xd')](_0x4741bd));if(_0x4741bd['error']){if(_0x4741bd[_0x9036('0xe')][_0x9036('0xf')]===0x1f4){logger[_0x9036('0xe')](_0x9036('0xa'),_0x50dce8,_0x4741bd[_0x9036('0xe')][_0x9036('0x10')]);return _0x43fbec(_0x4741bd[_0x9036('0xe')][_0x9036('0x10')]);}logger[_0x9036('0xe')](_0x9036('0xa'),_0x50dce8,_0x4741bd['error'][_0x9036('0x10')]);return _0x5680b9(_0x4741bd['error'][_0x9036('0x10')]);}else{logger[_0x9036('0x11')](_0x9036('0xa'),_0x50dce8,_0x9036('0xc'));_0x5680b9(_0x4741bd[_0x9036('0x12')][_0x9036('0x10')]);}})[_0x9036('0x13')](function(_0x47288e){logger['error'](_0x9036('0xa'),_0x50dce8,_0x47288e);_0x43fbec(_0x47288e);});});}
\ No newline at end of file
+var _0x74ee=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','randomstring','ioredis'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x74ee,0x13c));var _0xe74e=function(_0x5b5189,_0x57912e){_0x5b5189=_0x5b5189-0x0;var _0x3d9d03=_0x74ee[_0x5b5189];return _0x3d9d03;};'use strict';var _=require(_0xe74e('0x0'));var util=require('util');var moment=require(_0xe74e('0x1'));var BPromise=require('bluebird');var rs=require(_0xe74e('0x2'));var fs=require('fs');var Redis=require(_0xe74e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe74e('0x4'));var logger=require(_0xe74e('0x5'))('rpc');var config=require(_0xe74e('0x6'));var jayson=require(_0xe74e('0x7'));var client=jayson['client'][_0xe74e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x55c88a,_0x443778,_0x3f4079){return new BPromise(function(_0x2cf4e8,_0x2e97b3){return client[_0xe74e('0x9')](_0x55c88a,_0x3f4079)[_0xe74e('0xa')](function(_0x19aa6b){logger[_0xe74e('0xb')](_0xe74e('0xc'),_0x443778,_0xe74e('0xd'));logger[_0xe74e('0xe')](_0xe74e('0xf'),_0x443778,_0xe74e('0xd'),JSON['stringify'](_0x19aa6b));if(_0x19aa6b[_0xe74e('0x10')]){if(_0x19aa6b[_0xe74e('0x10')][_0xe74e('0x11')]===0x1f4){logger[_0xe74e('0x10')](_0xe74e('0xc'),_0x443778,_0x19aa6b[_0xe74e('0x10')][_0xe74e('0x12')]);return _0x2e97b3(_0x19aa6b[_0xe74e('0x10')][_0xe74e('0x12')]);}logger[_0xe74e('0x10')]('License,\x20%s,\x20%s',_0x443778,_0x19aa6b[_0xe74e('0x10')]['message']);return _0x2cf4e8(_0x19aa6b[_0xe74e('0x10')][_0xe74e('0x12')]);}else{logger['info']('License,\x20%s,\x20%s',_0x443778,_0xe74e('0xd'));_0x2cf4e8(_0x19aa6b['result'][_0xe74e('0x12')]);}})[_0xe74e('0x13')](function(_0x425b30){logger[_0xe74e('0x10')]('License,\x20%s,\x20%s',_0x443778,_0x425b30);_0x2e97b3(_0x425b30);});});}
\ No newline at end of file
index a400a61..f98b5ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c6e=['getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/interactions','getInteractions','getApplications','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','addDisposition','addAnswer','post','create','addImap','addSmtp','addInteraction','/:id/applications','addApplications','/:id/send','send','addAgents','put','/:id','delete','removeAnswers','removeImap','/:id/out_servers','removeSmtp','destroy','removeAgents','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','/describe','isAuthenticated','show','/:id/dispositions'];(function(_0x2373f5,_0x55fbde){var _0x31cf35=function(_0x4c1cec){while(--_0x4c1cec){_0x2373f5['push'](_0x2373f5['shift']());}};_0x31cf35(++_0x55fbde);}(_0x6c6e,0xaf));var _0xe6c6=function(_0x37d543,_0x17da96){_0x37d543=_0x37d543-0x0;var _0x3e3a28=_0x6c6e[_0x37d543];return _0x3e3a28;};'use strict';var multer=require(_0xe6c6('0x0'));var util=require(_0xe6c6('0x1'));var path=require('path');var timeout=require(_0xe6c6('0x2'));var express=require('express');var router=express[_0xe6c6('0x3')]();var fs_extra=require(_0xe6c6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe6c6('0x5'));var config=require(_0xe6c6('0x6'));var controller=require(_0xe6c6('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xe6c6('0x8')](_0xe6c6('0x9'),auth[_0xe6c6('0xa')](),controller['describe']);router['get']('/:id',auth[_0xe6c6('0xa')](),controller[_0xe6c6('0xb')]);router[_0xe6c6('0x8')](_0xe6c6('0xc'),auth['isAuthenticated'](),controller[_0xe6c6('0xd')]);router['get'](_0xe6c6('0xe'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xe6c6('0x8')](_0xe6c6('0xf'),auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x10')]);router[_0xe6c6('0x8')]('/:id/out_servers',auth['isAuthenticated'](),controller['getSmtp']);router[_0xe6c6('0x8')](_0xe6c6('0x11'),auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x12')]);router['get']('/:id/applications',auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x13')]);router[_0xe6c6('0x8')]('/:id/messages',auth['isAuthenticated'](),controller[_0xe6c6('0x14')]);router['get'](_0xe6c6('0x15'),auth['isAuthenticated'](),controller[_0xe6c6('0x16')]);router[_0xe6c6('0x8')](_0xe6c6('0x17'),auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x18')]);router['post']('/:id/dispositions',auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x19')]);router['post']('/:id/canned_answers',auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x1a')]);router[_0xe6c6('0x1b')]('/',auth['isAuthenticated'](),controller[_0xe6c6('0x1c')]);router[_0xe6c6('0x1b')](_0xe6c6('0xf'),auth['isAuthenticated'](),controller[_0xe6c6('0x1d')]);router[_0xe6c6('0x1b')]('/:id/out_servers',auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x1e')]);router[_0xe6c6('0x1b')](_0xe6c6('0x11'),auth['isAuthenticated'](),controller[_0xe6c6('0x1f')]);router['post'](_0xe6c6('0x20'),auth['isAuthenticated'](),controller[_0xe6c6('0x21')]);router[_0xe6c6('0x1b')](_0xe6c6('0x22'),auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x23')]);router[_0xe6c6('0x1b')](_0xe6c6('0x17'),auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x24')]);router[_0xe6c6('0x25')](_0xe6c6('0x26'),auth[_0xe6c6('0xa')](),controller['update']);router[_0xe6c6('0x27')]('/:id/dispositions',auth[_0xe6c6('0xa')](),controller['removeDispositions']);router[_0xe6c6('0x27')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0xe6c6('0x28')]);router[_0xe6c6('0x27')](_0xe6c6('0xf'),auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x29')]);router[_0xe6c6('0x27')](_0xe6c6('0x2a'),auth[_0xe6c6('0xa')](),controller[_0xe6c6('0x2b')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe6c6('0x2c')]);router[_0xe6c6('0x27')]('/:id/users',auth['isAuthenticated'](),controller[_0xe6c6('0x2d')]);module[_0xe6c6('0x2e')]=router;
\ No newline at end of file
+var _0x726c=['removeDispositions','delete','removeImap','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getImap','/:id/interactions','getInteractions','getApplications','verifySmtp','/:id/users','getAgents','/:id/dispositions','post','addAnswer','/:id/in_servers','addImap','/:id/out_servers','addInteraction','/:id/applications','/:id/send','send','addAgents','put','update'];(function(_0x29472a,_0x46b6c4){var _0x2d8911=function(_0x11c91a){while(--_0x11c91a){_0x29472a['push'](_0x29472a['shift']());}};_0x2d8911(++_0x46b6c4);}(_0x726c,0xb1));var _0xc726=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x726c[_0x3d42d8];return _0x27fc41;};'use strict';var multer=require('multer');var util=require(_0xc726('0x0'));var path=require(_0xc726('0x1'));var timeout=require(_0xc726('0x2'));var express=require(_0xc726('0x3'));var router=express[_0xc726('0x4')]();var fs_extra=require(_0xc726('0x5'));var auth=require(_0xc726('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc726('0x7'));var controller=require(_0xc726('0x8'));router[_0xc726('0x9')]('/',auth[_0xc726('0xa')](),controller[_0xc726('0xb')]);router[_0xc726('0x9')](_0xc726('0xc'),auth[_0xc726('0xa')](),controller[_0xc726('0xd')]);router['get'](_0xc726('0xe'),auth['isAuthenticated'](),controller[_0xc726('0xf')]);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xc726('0x10')]);router['get'](_0xc726('0x11'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xc726('0x9')]('/:id/in_servers',auth[_0xc726('0xa')](),controller[_0xc726('0x12')]);router[_0xc726('0x9')]('/:id/out_servers',auth[_0xc726('0xa')](),controller['getSmtp']);router['get'](_0xc726('0x13'),auth[_0xc726('0xa')](),controller[_0xc726('0x14')]);router['get']('/:id/applications',auth[_0xc726('0xa')](),controller[_0xc726('0x15')]);router[_0xc726('0x9')]('/:id/messages',auth[_0xc726('0xa')](),controller['getMessages']);router['get']('/:id/verify',auth[_0xc726('0xa')](),controller[_0xc726('0x16')]);router['get'](_0xc726('0x17'),auth[_0xc726('0xa')](),controller[_0xc726('0x18')]);router['post'](_0xc726('0x19'),auth[_0xc726('0xa')](),controller['addDisposition']);router[_0xc726('0x1a')](_0xc726('0x11'),auth[_0xc726('0xa')](),controller[_0xc726('0x1b')]);router['post']('/',auth[_0xc726('0xa')](),controller['create']);router[_0xc726('0x1a')](_0xc726('0x1c'),auth[_0xc726('0xa')](),controller[_0xc726('0x1d')]);router[_0xc726('0x1a')](_0xc726('0x1e'),auth[_0xc726('0xa')](),controller['addSmtp']);router[_0xc726('0x1a')](_0xc726('0x13'),auth['isAuthenticated'](),controller[_0xc726('0x1f')]);router['post'](_0xc726('0x20'),auth['isAuthenticated'](),controller['addApplications']);router[_0xc726('0x1a')](_0xc726('0x21'),auth[_0xc726('0xa')](),controller[_0xc726('0x22')]);router[_0xc726('0x1a')](_0xc726('0x17'),auth[_0xc726('0xa')](),controller[_0xc726('0x23')]);router[_0xc726('0x24')](_0xc726('0xe'),auth[_0xc726('0xa')](),controller[_0xc726('0x25')]);router['delete'](_0xc726('0x19'),auth['isAuthenticated'](),controller[_0xc726('0x26')]);router['delete'](_0xc726('0x11'),auth[_0xc726('0xa')](),controller['removeAnswers']);router[_0xc726('0x27')]('/:id/in_servers',auth[_0xc726('0xa')](),controller[_0xc726('0x28')]);router[_0xc726('0x27')](_0xc726('0x1e'),auth[_0xc726('0xa')](),controller['removeSmtp']);router[_0xc726('0x27')](_0xc726('0xe'),auth[_0xc726('0xa')](),controller['destroy']);router[_0xc726('0x27')](_0xc726('0x17'),auth[_0xc726('0xa')](),controller[_0xc726('0x29')]);module[_0xc726('0x2a')]=router;
\ No newline at end of file
index 8c448a6..25a9f62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98ac=['BOOLEAN','TEXT','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','gmail','hotmail','outlook365','sequelize','exports','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x98ac,0x147));var _0xc98a=function(_0x3af7fb,_0x247538){_0x3af7fb=_0x3af7fb-0x0;var _0x5a65ec=_0x98ac[_0x3af7fb];return _0x5a65ec;};'use strict';var Sequelize=require(_0xc98a('0x0'));module[_0xc98a('0x1')]={'description':{'type':Sequelize[_0xc98a('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xc98a('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0xc98a('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0xc98a('0x4')]},'markAsUnread':{'type':Sequelize[_0xc98a('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xc98a('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0xc98a('0x5')](0x2)[_0xc98a('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xc98a('0x4')],'defaultValue':function(){return _0xc98a('0x7');}},'notificationSound':{'type':Sequelize[_0xc98a('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc98a('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc98a('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xc98a('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc98a('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc98a('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc98a('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xc98a('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xc98a('0x3')],'defaultValue':![],'comment':_0xc98a('0x9'),'set':function(_0x2509ad){if(!_0x2509ad)this[_0xc98a('0xa')](_0xc98a('0xb'),null);this[_0xc98a('0xa')]('mandatoryDisposition',_0x2509ad);}},'provider':{'type':Sequelize['ENUM'](_0xc98a('0xc'),_0xc98a('0xd'),'yahoo',_0xc98a('0xe')),'defaultValue':null,'get':function(){var _0x5c3e4f=this['getDataValue']('provider');return _0x5c3e4f||'custom';},'set':function(_0x5efb10){if(_0x5efb10==='custom'){_0x5efb10=null;}return this[_0xc98a('0xa')]('provider',_0x5efb10);}}};
\ No newline at end of file
+var _0x4115=['setDataValue','sequelize','exports','STRING','BOOLEAN','TEXT','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','gmail','yahoo','outlook365','getDataValue','provider','custom'];(function(_0x1c5417,_0x21b96c){var _0x5b2ec0=function(_0x17bdf2){while(--_0x17bdf2){_0x1c5417['push'](_0x1c5417['shift']());}};_0x5b2ec0(++_0x21b96c);}(_0x4115,0xfd));var _0x5411=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0x4115[_0x1deb03];return _0x189fe7;};'use strict';var Sequelize=require(_0x5411('0x0'));module[_0x5411('0x1')]={'description':{'type':Sequelize[_0x5411('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x5411('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x5411('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x5411('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x5411('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x5411('0x4')]},'markAsUnread':{'type':Sequelize[_0x5411('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x5411('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x5411('0x5')](0x2)[_0x5411('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x5411('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['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5411('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5411('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x5411('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5411('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5411('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5411('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5411('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x5411('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x5411('0x3')],'defaultValue':![],'comment':_0x5411('0x8'),'set':function(_0xab2f52){if(!_0xab2f52)this['setDataValue'](_0x5411('0x9'),null);this['setDataValue'](_0x5411('0xa'),_0xab2f52);}},'provider':{'type':Sequelize['ENUM'](_0x5411('0xb'),'hotmail',_0x5411('0xc'),_0x5411('0xd')),'defaultValue':null,'get':function(){var _0x1a7271=this[_0x5411('0xe')](_0x5411('0xf'));return _0x1a7271||_0x5411('0x10');},'set':function(_0xed1515){if(_0xed1515==='custom'){_0xed1515=null;}return this[_0x5411('0x11')](_0x5411('0xf'),_0xed1515);}}};
\ No newline at end of file
index ec325dc..f5ae4bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97a0=['pass','password','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','MailServerIn','Pause','map','MailAccount','rawAttributes','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','MailServerOut','mandatoryDispositionPause','body','provider','custom','Mail\x20Account\x20not\x20found','describe','addDisposition','find','MailAccountId','Disposition','create','getDispositions','findOne','sort','include','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','email','ListId','isNil','active','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','MailInteraction','addInteraction','CmContact','Contact','User','Owner','internal','Tag','Tags','tag','addApplications','transaction','sequelize','ISOLATION_LEVELS','MailApplication','bulkCreate','priority','stack','finally','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','true','List','Contacts','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','root','server/files/attachments','basename','getSmtpOptions','SendMail','defaults','messageId','subject','attach','out','Interaction','Messages','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','omit','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','moment','bluebird','util','path','lodash','juice','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./mailAccount.socket','jayson/promise','client','http','then','info','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','MailAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','destroy','name','send','gmail','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.mail.yahoo.com','smtp-mail.outlook.com','smtp.office365.com','user','username'];(function(_0x325ed6,_0x41a996){var _0x127734=function(_0x29a85d){while(--_0x29a85d){_0x325ed6['push'](_0x325ed6['shift']());}};_0x127734(++_0x41a996);}(_0x97a0,0x14f));var _0x097a=function(_0x45bc46,_0x7d7f5d){_0x45bc46=_0x45bc46-0x0;var _0x4849ac=_0x97a0[_0x45bc46];return _0x4849ac;};'use strict';var moment=require(_0x097a('0x0'));var BPromise=require(_0x097a('0x1'));var util=require(_0x097a('0x2'));var path=require(_0x097a('0x3'));var _=require(_0x097a('0x4'));var juice=require(_0x097a('0x5'));var Redis=require(_0x097a('0x6'));var qs=require(_0x097a('0x7'));var logger=require('../../config/logger')(_0x097a('0x8'));var config=require(_0x097a('0x9'));var db=require(_0x097a('0xa'))['db'];config[_0x097a('0xb')]=_['defaults'](config['redis'],{'host':_0x097a('0xc'),'port':0x18eb});var socket=require(_0x097a('0xd'))(new Redis(config[_0x097a('0xb')]));require(_0x097a('0xe'))['register'](socket);var jayson=require(_0x097a('0xf'));var client=jayson[_0x097a('0x10')][_0x097a('0x11')]({'port':0x232b});function respondWithRpcPromise(_0x1e4429,_0xa43148,_0x38d486,_0x5add42){return new BPromise(function(_0x9e824e,_0x57f66f){var _0x92d713=_0x5add42||client;return _0x92d713['request'](_0x1e4429,_0x38d486)[_0x097a('0x12')](function(_0x7535df){logger[_0x097a('0x13')]('MailAccount,\x20%s,\x20%s',_0xa43148,_0x097a('0x14'));logger[_0x097a('0x15')](_0x097a('0x16'),_0xa43148,_0x097a('0x14'),JSON[_0x097a('0x17')](_0x7535df));if(_0x7535df[_0x097a('0x18')]){if(_0x7535df[_0x097a('0x18')]['code']===0x1f4){logger[_0x097a('0x18')](_0x097a('0x19'),_0xa43148,_0x7535df[_0x097a('0x18')][_0x097a('0x1a')]);return _0x57f66f(_0x7535df['error'][_0x097a('0x1a')]);}logger[_0x097a('0x18')](_0x097a('0x19'),_0xa43148,_0x7535df[_0x097a('0x18')][_0x097a('0x1a')]);return _0x9e824e(_0x7535df[_0x097a('0x18')][_0x097a('0x1a')]);}else{logger['info'](_0x097a('0x19'),_0xa43148,'request\x20sent');_0x9e824e(_0x7535df[_0x097a('0x1b')][_0x097a('0x1a')]);}})[_0x097a('0x1c')](function(_0x255be8){logger[_0x097a('0x18')]('MailAccount,\x20%s,\x20%s',_0xa43148,_0x255be8);_0x57f66f(_0x255be8);});});}function respondWithStatusCode(_0x3e3e3e,_0x588318){_0x588318=_0x588318||0xcc;return function(_0x1bc1e4){if(_0x1bc1e4){return _0x3e3e3e[_0x097a('0x1d')](_0x588318);}return _0x3e3e3e[_0x097a('0x1e')](_0x588318)[_0x097a('0x1f')]();};}function respondWithResult(_0x31a765,_0x597ad1){_0x597ad1=_0x597ad1||0xc8;return function(_0x5d80e8){if(_0x5d80e8){return _0x31a765[_0x097a('0x1e')](_0x597ad1)[_0x097a('0x20')](_0x5d80e8);}};}function respondWithFilteredResult(_0x360e82,_0x4e1b41){return function(_0x5a643e){if(_0x5a643e){var _0x3dbeda=typeof _0x4e1b41[_0x097a('0x21')]===_0x097a('0x22')&&typeof _0x4e1b41[_0x097a('0x23')]===_0x097a('0x22');var _0x768bfa=_0x5a643e[_0x097a('0x24')];var _0x575e8c=_0x3dbeda?0x0:_0x4e1b41['offset'];var _0x59baa1=_0x3dbeda?_0x5a643e[_0x097a('0x24')]:_0x4e1b41[_0x097a('0x21')]+_0x4e1b41['limit'];var _0x338cb1;if(_0x59baa1>=_0x768bfa){_0x59baa1=_0x768bfa;_0x338cb1=0xc8;}else{_0x338cb1=0xce;}_0x360e82[_0x097a('0x1e')](_0x338cb1);return _0x360e82['set'](_0x097a('0x25'),_0x575e8c+'-'+_0x59baa1+'/'+_0x768bfa)[_0x097a('0x20')](_0x5a643e);}return null;};}function saveUpdates(_0x168c9e){return function(_0x3f564d){if(_0x3f564d){return _0x3f564d[_0x097a('0x26')](_0x168c9e)[_0x097a('0x12')](function(_0x345ebc){return _0x345ebc;});}return null;};}function removeEntity(_0x1e686e){return function(_0x1357da){if(_0x1357da){return _0x1357da[_0x097a('0x27')]()[_0x097a('0x12')](function(){var _0x4116d2=_0x1357da['get']({'plain':!![]});var _0x3535a7='MailAccounts';return db['UserProfileResource']['destroy']({'where':{'type':_0x3535a7,'resourceId':_0x4116d2['id']}})[_0x097a('0x12')](function(){return _0x1357da;});})['then'](function(){_0x1e686e[_0x097a('0x1e')](0xcc)[_0x097a('0x1f')]();});}};}function handleEntityNotFound(_0x319aff){return function(_0x1ecf9e){if(!_0x1ecf9e){_0x319aff[_0x097a('0x1d')](0x194);}return _0x1ecf9e;};}function handleError(_0x40519c,_0x1d36e1){_0x1d36e1=_0x1d36e1||0x1f4;return function(_0x30a268){logger[_0x097a('0x18')](_0x30a268['stack']);if(_0x30a268[_0x097a('0x28')]){delete _0x30a268[_0x097a('0x28')];}_0x40519c['status'](_0x1d36e1)[_0x097a('0x29')](_0x30a268);};}function getImapHost(_0x285d31){switch(_0x285d31){case _0x097a('0x2a'):return'imap.gmail.com';case _0x097a('0x2b'):return _0x097a('0x2c');case _0x097a('0x2d'):return _0x097a('0x2e');case _0x097a('0x2f'):return _0x097a('0x30');}throw new Error(_0x097a('0x31'),_0x285d31);}function getSmtpHost(_0x4e473e){switch(_0x4e473e){case _0x097a('0x2a'):return'smtp.gmail.com';case'yahoo':return _0x097a('0x32');case _0x097a('0x2d'):return _0x097a('0x33');case _0x097a('0x2f'):return _0x097a('0x34');}throw new Error('Unknown\x20email\x20service\x20provider',_0x4e473e);}function getAuthenticationOptions(_0x2dd393,_0x611954){var _0x51fbfe={};var _0x13d8d9={};if(_0x2dd393){_0x51fbfe[_0x097a('0x35')]=_0x13d8d9[_0x097a('0x35')]=_0x611954[_0x097a('0x36')];_0x51fbfe['password']=_0x13d8d9[_0x097a('0x37')]=_0x611954[_0x097a('0x38')];if(_0x611954[_0x097a('0x39')]){_0x51fbfe['modernAuthentication']=_0x13d8d9[_0x097a('0x39')]=!![];_0x51fbfe[_0x097a('0x3a')]=_0x13d8d9['CloudProviderId']=_0x611954['CloudProviderId'];_0x51fbfe[_0x097a('0x38')]=_0x13d8d9[_0x097a('0x37')]=null;}else{_0x51fbfe[_0x097a('0x3a')]=_0x13d8d9[_0x097a('0x3a')]=null;}_0x51fbfe[_0x097a('0x3b')]=getImapHost(_0x2dd393);_0x51fbfe['port']=0x3e1;_0x13d8d9['host']=getSmtpHost(_0x2dd393);_0x13d8d9[_0x097a('0x3c')]=0x24b;_0x13d8d9[_0x097a('0x3d')]=![];_0x51fbfe[_0x097a('0x3e')]=_0x13d8d9[_0x097a('0x3e')]=null;}else{if(_0x611954[_0x097a('0x3f')]){_0x51fbfe[_0x097a('0x35')]=_0x13d8d9['user']=_0x611954[_0x097a('0x36')];_0x51fbfe[_0x097a('0x38')]=_0x13d8d9[_0x097a('0x37')]=_0x611954[_0x097a('0x38')];}else{_0x51fbfe[_0x097a('0x3f')]=_0x13d8d9[_0x097a('0x3f')]=![];_0x51fbfe[_0x097a('0x35')]=_0x13d8d9[_0x097a('0x35')]=null;_0x51fbfe[_0x097a('0x38')]=_0x13d8d9['pass']=null;}_0x51fbfe['host']=_0x611954[_0x097a('0x40')][_0x097a('0x3b')];_0x51fbfe['port']=_0x611954['Imap'][_0x097a('0x3c')];_0x13d8d9[_0x097a('0x3b')]=_0x611954[_0x097a('0x41')][_0x097a('0x3b')];_0x13d8d9[_0x097a('0x3c')]=_0x611954[_0x097a('0x41')][_0x097a('0x3c')];}return{'Imap':_0x51fbfe,'Smtp':_0x13d8d9};}exports['index']=function(_0xf82261,_0x1d833f){var _0x1b5dca={'include':[{'model':db[_0x097a('0x42')],'as':_0x097a('0x40')},{'model':db['MailServerOut'],'as':_0x097a('0x41')},{'model':db[_0x097a('0x43')],'as':'mandatoryDispositionPause'}]},_0x3b41dc={},_0x43200e={'count':0x0,'rows':[]};var _0x1e9b8d=_[_0x097a('0x44')](db[_0x097a('0x45')][_0x097a('0x46')],function(_0x168c28){return{'name':_0x168c28['fieldName'],'type':_0x168c28[_0x097a('0x47')][_0x097a('0x48')]};});_0x3b41dc[_0x097a('0x49')]=_['map'](_0x1e9b8d,'name');_0x3b41dc['query']=_[_0x097a('0x4a')](_0xf82261[_0x097a('0x4b')]);_0x3b41dc[_0x097a('0x4c')]=_['intersection'](_0x3b41dc[_0x097a('0x49')],_0x3b41dc[_0x097a('0x4b')]);_0x1b5dca[_0x097a('0x4d')]=_[_0x097a('0x4e')](_0x3b41dc[_0x097a('0x49')],qs[_0x097a('0x4f')](_0xf82261['query'][_0x097a('0x4f')]));_0x1b5dca[_0x097a('0x4d')]=_0x1b5dca[_0x097a('0x4d')][_0x097a('0x50')]?_0x1b5dca[_0x097a('0x4d')]:_0x3b41dc[_0x097a('0x49')];if(!_0xf82261['query'][_0x097a('0x51')](_0x097a('0x52'))){_0x1b5dca['limit']=qs['limit'](_0xf82261[_0x097a('0x4b')][_0x097a('0x23')]);_0x1b5dca['offset']=qs[_0x097a('0x21')](_0xf82261[_0x097a('0x4b')][_0x097a('0x21')]);}_0x1b5dca[_0x097a('0x53')]=qs['sort'](_0xf82261['query']['sort']);_0x1b5dca[_0x097a('0x54')]=qs[_0x097a('0x4c')](_[_0x097a('0x55')](_0xf82261[_0x097a('0x4b')],_0x3b41dc[_0x097a('0x4c')]),_0x1e9b8d);if(_0xf82261[_0x097a('0x4b')][_0x097a('0x56')]){_0x1b5dca['where']=_[_0x097a('0x57')](_0x1b5dca['where'],{'$or':_[_0x097a('0x44')](_0x1e9b8d,function(_0x30d5d2){if(_0x30d5d2[_0x097a('0x47')]!==_0x097a('0x58')){var _0xecb35b={};_0xecb35b[_0x30d5d2[_0x097a('0x28')]]={'$like':'%'+_0xf82261[_0x097a('0x4b')][_0x097a('0x56')]+'%'};return _0xecb35b;}})});}_0x1b5dca=_[_0x097a('0x57')]({},_0x1b5dca,_0xf82261[_0x097a('0x59')]);var _0x5d23bf={'where':_0x1b5dca['where']};return db[_0x097a('0x45')]['count'](_0x5d23bf)[_0x097a('0x12')](function(_0x2f6dc8){_0x43200e[_0x097a('0x24')]=_0x2f6dc8;if(_0xf82261['query'][_0x097a('0x5a')]){_0x1b5dca['include']=[{'all':!![]}];}return db['MailAccount'][_0x097a('0x5b')](_0x1b5dca);})['then'](function(_0x5c642c){_0x43200e[_0x097a('0x5c')]=_0x5c642c;return _0x43200e;})[_0x097a('0x12')](respondWithFilteredResult(_0x1d833f,_0x1b5dca))[_0x097a('0x1c')](handleError(_0x1d833f,null));};exports[_0x097a('0x5d')]=function(_0x17afe6,_0x539801){var _0x368371={'raw':![],'where':{'id':_0x17afe6[_0x097a('0x5e')]['id']},'include':[{'model':db[_0x097a('0x42')],'as':_0x097a('0x40')},{'model':db[_0x097a('0x5f')],'as':_0x097a('0x41')},{'model':db[_0x097a('0x43')],'as':_0x097a('0x60')}]},_0x3a659e={};_0x3a659e[_0x097a('0x49')]=_[_0x097a('0x4a')](db[_0x097a('0x45')][_0x097a('0x46')]);_0x3a659e[_0x097a('0x4b')]=_[_0x097a('0x4a')](_0x17afe6[_0x097a('0x4b')]);_0x3a659e[_0x097a('0x4c')]=_[_0x097a('0x4e')](_0x3a659e[_0x097a('0x49')],_0x3a659e[_0x097a('0x4b')]);_0x368371[_0x097a('0x4d')]=_[_0x097a('0x4e')](_0x3a659e[_0x097a('0x49')],qs[_0x097a('0x4f')](_0x17afe6[_0x097a('0x4b')][_0x097a('0x4f')]));_0x368371[_0x097a('0x4d')]=_0x368371[_0x097a('0x4d')][_0x097a('0x50')]?_0x368371[_0x097a('0x4d')]:_0x3a659e[_0x097a('0x49')];if(_0x17afe6[_0x097a('0x4b')]['includeAll']){_0x368371['include']=[{'all':!![]}];}_0x368371=_[_0x097a('0x57')]({},_0x368371,_0x17afe6['options']);return db[_0x097a('0x45')]['find'](_0x368371)['then'](handleEntityNotFound(_0x539801,null))['then'](respondWithResult(_0x539801,null))[_0x097a('0x1c')](handleError(_0x539801,null));};exports[_0x097a('0x26')]=function(_0x1261eb,_0x1f3721){if(_0x1261eb[_0x097a('0x61')]['id']){delete _0x1261eb[_0x097a('0x61')]['id'];}var _0x10040f=_0x1261eb[_0x097a('0x61')][_0x097a('0x62')]===_0x097a('0x63')?null:_0x1261eb['body'][_0x097a('0x62')];var _0x31ab2b=_0x1261eb[_0x097a('0x61')]['Imap']||{};var _0x5d0e81=_0x1261eb[_0x097a('0x61')][_0x097a('0x41')]||{};if(_0x10040f){_0x31ab2b[_0x097a('0x3b')]=getImapHost(_0x10040f);_0x31ab2b['port']=0x3e1;_0x5d0e81['host']=getSmtpHost(_0x10040f);_0x5d0e81[_0x097a('0x3c')]=0x24b;_0x5d0e81['secure']=![];}if(_0x5d0e81[_0x097a('0x39')]){_0x5d0e81[_0x097a('0x3d')]=![];}else{_0x5d0e81[_0x097a('0x3a')]=null;}if(!_0x31ab2b['modernAuthentication'])_0x31ab2b[_0x097a('0x3a')]=null;_0x1261eb[_0x097a('0x61')][_0x097a('0x40')]=_0x31ab2b;_0x1261eb[_0x097a('0x61')][_0x097a('0x41')]=_0x5d0e81;return db['MailAccount']['find']({'where':{'id':_0x1261eb['params']['id']},'include':[{'model':db[_0x097a('0x42')],'as':_0x097a('0x40')},{'model':db[_0x097a('0x5f')],'as':_0x097a('0x41')},{'model':db[_0x097a('0x43')],'as':_0x097a('0x60')}]})['then'](handleEntityNotFound(_0x1f3721,null))[_0x097a('0x12')](function(_0x509b33){if(!_0x509b33)throw new Error(_0x097a('0x64'));if(_0x509b33[_0x097a('0x3e')])delete _0x1261eb[_0x097a('0x61')][_0x097a('0x40')];return _0x509b33;})['then'](saveUpdates(_0x1261eb[_0x097a('0x61')],null))[_0x097a('0x12')](function(_0x424402){if(!_0x1261eb[_0x097a('0x61')][_0x097a('0x40')])return _0x424402;return db[_0x097a('0x42')][_0x097a('0x26')](_0x1261eb[_0x097a('0x61')]['Imap'],{'where':{'MailAccountId':_0x424402['id']}})[_0x097a('0x12')](function(){return _0x424402;});})['then'](function(_0xc7a7eb){if(!_0x1261eb[_0x097a('0x61')]['Smtp'])return _0xc7a7eb;return db[_0x097a('0x5f')][_0x097a('0x26')](_0x1261eb[_0x097a('0x61')][_0x097a('0x41')],{'where':{'MailAccountId':_0xc7a7eb['id']}})[_0x097a('0x12')](function(){return _0xc7a7eb;});})[_0x097a('0x12')](respondWithResult(_0x1f3721,null))['catch'](handleError(_0x1f3721,null));};exports['describe']=function(_0x36c2c1,_0x3d145b){return db[_0x097a('0x45')][_0x097a('0x65')]()['then'](respondWithResult(_0x3d145b,null))[_0x097a('0x1c')](handleError(_0x3d145b,null));};exports[_0x097a('0x66')]=function(_0x501363,_0x446155){if(_0x501363[_0x097a('0x61')]['id']){delete _0x501363['body']['id'];}return db[_0x097a('0x45')][_0x097a('0x67')]({'where':{'id':_0x501363[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x446155,null))['then'](function(_0x15de95){if(_0x15de95){_0x501363[_0x097a('0x61')][_0x097a('0x68')]=_0x15de95['id'];return db[_0x097a('0x69')][_0x097a('0x6a')](_0x501363['body']);}})['then'](respondWithResult(_0x446155,null))[_0x097a('0x1c')](handleError(_0x446155,null));};exports[_0x097a('0x6b')]=function(_0x3a2bc3,_0x4fa44a){var _0x1c9040={'raw':![],'where':{}};var _0x243a1a={};var _0xa7a018={'count':0x0,'rows':[]};return db[_0x097a('0x45')][_0x097a('0x6c')]({'where':{'id':_0x3a2bc3[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x4fa44a,null))[_0x097a('0x12')](function(_0x282451){if(_0x282451){_0x243a1a['model']=_[_0x097a('0x4a')](db['Disposition'][_0x097a('0x46')]);_0x243a1a[_0x097a('0x4b')]=_[_0x097a('0x4a')](_0x3a2bc3[_0x097a('0x4b')]);_0x243a1a[_0x097a('0x4c')]=_[_0x097a('0x4e')](_0x243a1a[_0x097a('0x49')],_0x243a1a[_0x097a('0x4b')]);_0x1c9040[_0x097a('0x4d')]=_[_0x097a('0x4e')](_0x243a1a[_0x097a('0x49')],qs[_0x097a('0x4f')](_0x3a2bc3[_0x097a('0x4b')][_0x097a('0x4f')]));_0x1c9040[_0x097a('0x4d')]=_0x1c9040[_0x097a('0x4d')][_0x097a('0x50')]?_0x1c9040[_0x097a('0x4d')]:_0x243a1a[_0x097a('0x49')];if(!_0x3a2bc3[_0x097a('0x4b')][_0x097a('0x51')](_0x097a('0x52'))){_0x1c9040[_0x097a('0x23')]=qs[_0x097a('0x23')](_0x3a2bc3[_0x097a('0x4b')][_0x097a('0x23')]);_0x1c9040[_0x097a('0x21')]=qs[_0x097a('0x21')](_0x3a2bc3['query'][_0x097a('0x21')]);}_0x1c9040['order']=qs[_0x097a('0x6d')](_0x3a2bc3[_0x097a('0x4b')]['sort']);_0x1c9040[_0x097a('0x54')]=qs['filters'](_[_0x097a('0x55')](_0x3a2bc3[_0x097a('0x4b')],_0x243a1a[_0x097a('0x4c')]));_0x1c9040['where'][_0x097a('0x68')]=_0x282451['id'];if(_0x3a2bc3[_0x097a('0x4b')][_0x097a('0x56')]){_0x1c9040[_0x097a('0x54')]=_[_0x097a('0x57')](_0x1c9040[_0x097a('0x54')],{'$or':_[_0x097a('0x44')](_0x1c9040[_0x097a('0x4d')],function(_0x3aece5){var _0x54c66a={};_0x54c66a[_0x3aece5]={'$like':'%'+_0x3a2bc3[_0x097a('0x4b')][_0x097a('0x56')]+'%'};return _0x54c66a;})});}_0x1c9040=_[_0x097a('0x57')]({},_0x1c9040,_0x3a2bc3[_0x097a('0x59')]);return db[_0x097a('0x69')][_0x097a('0x24')]({'where':_0x1c9040[_0x097a('0x54')]})[_0x097a('0x12')](function(_0x35223f){_0xa7a018[_0x097a('0x24')]=_0x35223f;if(_0x3a2bc3[_0x097a('0x4b')][_0x097a('0x5a')]){_0x1c9040[_0x097a('0x6e')]=[{'all':!![]}];}return db[_0x097a('0x69')][_0x097a('0x5b')](_0x1c9040);})[_0x097a('0x12')](function(_0x33bcfa){_0xa7a018[_0x097a('0x5c')]=_0x33bcfa;return _0xa7a018;});}})[_0x097a('0x12')](respondWithFilteredResult(_0x4fa44a,_0x1c9040))[_0x097a('0x1c')](handleError(_0x4fa44a,null));};exports[_0x097a('0x6f')]=function(_0x4c1353,_0x93ba7c){return db[_0x097a('0x45')][_0x097a('0x67')]({'where':{'id':_0x4c1353['params']['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x93ba7c,null))[_0x097a('0x12')](function(_0x5c6489){if(_0x5c6489){return _0x5c6489[_0x097a('0x6f')](_0x4c1353['query'][_0x097a('0x70')]);}})[_0x097a('0x12')](respondWithStatusCode(_0x93ba7c,null))[_0x097a('0x1c')](handleError(_0x93ba7c,null));};exports[_0x097a('0x71')]=function(_0x16f695,_0xe16120){if(_0x16f695[_0x097a('0x61')]['id']){delete _0x16f695[_0x097a('0x61')]['id'];}return db[_0x097a('0x45')][_0x097a('0x67')]({'where':{'id':_0x16f695[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0xe16120,null))['then'](function(_0xc6e5e9){if(_0xc6e5e9){_0x16f695['body'][_0x097a('0x68')]=_0xc6e5e9['id'];return db['CannedAnswer'][_0x097a('0x6a')](_0x16f695[_0x097a('0x61')]);}})[_0x097a('0x12')](respondWithResult(_0xe16120,null))[_0x097a('0x1c')](handleError(_0xe16120,null));};exports[_0x097a('0x72')]=function(_0x4bb6b5,_0x59028a){var _0xbaac1c={'raw':![],'where':{}};var _0x1b831e={};var _0x216a7d={'count':0x0,'rows':[]};return db[_0x097a('0x45')]['findOne']({'where':{'id':_0x4bb6b5[_0x097a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x59028a,null))[_0x097a('0x12')](function(_0xb30681){if(_0xb30681){_0x1b831e['model']=_['keys'](db[_0x097a('0x73')][_0x097a('0x46')]);_0x1b831e[_0x097a('0x4b')]=_[_0x097a('0x4a')](_0x4bb6b5[_0x097a('0x4b')]);_0x1b831e[_0x097a('0x4c')]=_[_0x097a('0x4e')](_0x1b831e[_0x097a('0x49')],_0x1b831e[_0x097a('0x4b')]);_0xbaac1c[_0x097a('0x4d')]=_[_0x097a('0x4e')](_0x1b831e[_0x097a('0x49')],qs[_0x097a('0x4f')](_0x4bb6b5[_0x097a('0x4b')][_0x097a('0x4f')]));_0xbaac1c[_0x097a('0x4d')]=_0xbaac1c[_0x097a('0x4d')]['length']?_0xbaac1c[_0x097a('0x4d')]:_0x1b831e[_0x097a('0x49')];if(!_0x4bb6b5['query'][_0x097a('0x51')](_0x097a('0x52'))){_0xbaac1c[_0x097a('0x23')]=qs[_0x097a('0x23')](_0x4bb6b5[_0x097a('0x4b')][_0x097a('0x23')]);_0xbaac1c[_0x097a('0x21')]=qs[_0x097a('0x21')](_0x4bb6b5[_0x097a('0x4b')]['offset']);}_0xbaac1c[_0x097a('0x53')]=qs[_0x097a('0x6d')](_0x4bb6b5[_0x097a('0x4b')][_0x097a('0x6d')]);_0xbaac1c['where']=qs['filters'](_[_0x097a('0x55')](_0x4bb6b5[_0x097a('0x4b')],_0x1b831e['filters']));_0xbaac1c[_0x097a('0x54')][_0x097a('0x68')]=_0xb30681['id'];if(_0x4bb6b5[_0x097a('0x4b')][_0x097a('0x56')]){_0xbaac1c[_0x097a('0x54')]=_['merge'](_0xbaac1c[_0x097a('0x54')],{'$or':_['map'](_0xbaac1c['attributes'],function(_0x526f9c){var _0x443d6d={};_0x443d6d[_0x526f9c]={'$like':'%'+_0x4bb6b5[_0x097a('0x4b')]['filter']+'%'};return _0x443d6d;})});}_0xbaac1c=_[_0x097a('0x57')]({},_0xbaac1c,_0x4bb6b5['options']);return db['CannedAnswer'][_0x097a('0x24')]({'where':_0xbaac1c[_0x097a('0x54')]})[_0x097a('0x12')](function(_0xdf6815){_0x216a7d[_0x097a('0x24')]=_0xdf6815;if(_0x4bb6b5['query'][_0x097a('0x5a')]){_0xbaac1c['include']=[{'all':!![]}];}return db[_0x097a('0x73')][_0x097a('0x5b')](_0xbaac1c);})[_0x097a('0x12')](function(_0x6c7a7f){_0x216a7d[_0x097a('0x5c')]=_0x6c7a7f;return _0x216a7d;});}})[_0x097a('0x12')](respondWithFilteredResult(_0x59028a,_0xbaac1c))[_0x097a('0x1c')](handleError(_0x59028a,null));};exports['removeAnswers']=function(_0x4bb1cf,_0x1095dc){return db['MailAccount'][_0x097a('0x67')]({'where':{'id':_0x4bb1cf['params']['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x1095dc,null))[_0x097a('0x12')](function(_0x5b66af){if(_0x5b66af){return _0x5b66af[_0x097a('0x74')](_0x4bb1cf['query'][_0x097a('0x70')]);}})[_0x097a('0x12')](respondWithStatusCode(_0x1095dc,null))[_0x097a('0x1c')](handleError(_0x1095dc,null));};exports['create']=function(_0x3a8df,_0x381487){var _0x3224d7={'name':_0x3a8df[_0x097a('0x61')][_0x097a('0x28')],'key':_0x3a8df[_0x097a('0x61')]['key'],'provider':_0x3a8df['body'][_0x097a('0x62')]===_0x097a('0x63')?null:_0x3a8df[_0x097a('0x61')]['provider'],'email':_0x3a8df[_0x097a('0x61')][_0x097a('0x75')],'ListId':_0x3a8df['body'][_0x097a('0x76')],'active':!_[_0x097a('0x77')](_0x3a8df['body']['active'])?_0x3a8df['body'][_0x097a('0x78')]:!![],'description':_0x3a8df[_0x097a('0x61')]['description']||null};var _0x1552fe=getAuthenticationOptions(_0x3224d7[_0x097a('0x62')],_0x3a8df[_0x097a('0x61')]);_0x3224d7[_0x097a('0x40')]=_0x1552fe[_0x097a('0x40')];_0x3224d7[_0x097a('0x41')]=_0x1552fe[_0x097a('0x41')];return db['MailAccount']['create'](_0x3224d7,{'include':[{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0x097a('0x42')],'as':_0x097a('0x40')}]})['then'](function(_0x3597e6){var _0x149533=_0x3a8df['user'][_0x097a('0x79')]({'plain':!![]});if(!_0x149533)throw new Error(_0x097a('0x7a'));if(_0x149533[_0x097a('0x7b')]===_0x097a('0x35')){var _0x419046=_0x3597e6[_0x097a('0x79')]({'plain':!![]});return db[_0x097a('0x7c')][_0x097a('0x67')]({'where':{'name':_0x097a('0x7d'),'userProfileId':_0x149533[_0x097a('0x7e')]},'raw':!![]})[_0x097a('0x12')](function(_0x60d123){if(_0x60d123&&_0x60d123[_0x097a('0x7f')]===0x0){return db['UserProfileResource'][_0x097a('0x6a')]({'name':_0x419046[_0x097a('0x28')],'resourceId':_0x419046['id'],'type':_0x60d123[_0x097a('0x28')],'sectionId':_0x60d123['id']},{})['then'](function(){return _0x3597e6;});}else{return _0x3597e6;}})[_0x097a('0x1c')](function(_0x2fc80e){logger[_0x097a('0x18')](_0x097a('0x80'),_0x2fc80e);throw _0x2fc80e;});}return _0x3597e6;})[_0x097a('0x12')](respondWithResult(_0x381487,0xc9))[_0x097a('0x1c')](handleError(_0x381487,null));};exports['getImap']=function(_0x3eb906,_0x31da85){return db[_0x097a('0x45')][_0x097a('0x6c')]({'where':{'id':_0x3eb906[_0x097a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x31da85,null))['then'](function(_0x61cf80){if(_0x61cf80){return _0x61cf80[_0x097a('0x81')]();}return null;})[_0x097a('0x12')](respondWithResult(_0x31da85,null))[_0x097a('0x1c')](handleError(_0x31da85,null));};exports[_0x097a('0x82')]=function(_0x21fe0a,_0x28f82f){if(_0x21fe0a[_0x097a('0x61')]['id']){delete _0x21fe0a[_0x097a('0x61')]['id'];}return db[_0x097a('0x45')][_0x097a('0x67')]({'where':{'id':_0x21fe0a[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x28f82f,null))[_0x097a('0x12')](function(_0x558dd4){if(_0x558dd4){_0x21fe0a[_0x097a('0x61')][_0x097a('0x68')]=_0x558dd4['id'];return db[_0x097a('0x42')]['create'](_0x21fe0a['body']);}})[_0x097a('0x12')](respondWithResult(_0x28f82f,null))['catch'](handleError(_0x28f82f,null));};exports[_0x097a('0x83')]=function(_0x2d0326,_0x9e422d){return db[_0x097a('0x45')]['findOne']({'where':{'id':_0x2d0326[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x9e422d,null))[_0x097a('0x12')](function(_0x34eba8){if(_0x34eba8){return _0x34eba8[_0x097a('0x84')](null);}return null;})[_0x097a('0x12')](respondWithStatusCode(_0x9e422d,null))['catch'](handleError(_0x9e422d,null));};exports['getSmtp']=function(_0x210c42,_0x5bc70a){return db[_0x097a('0x45')][_0x097a('0x6c')]({'where':{'id':_0x210c42[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x5bc70a,null))[_0x097a('0x12')](function(_0x326204){if(_0x326204){return _0x326204[_0x097a('0x85')]();}return null;})[_0x097a('0x12')](respondWithResult(_0x5bc70a,null))['catch'](handleError(_0x5bc70a,null));};exports[_0x097a('0x86')]=function(_0xc714d1,_0x29bdb4){if(_0xc714d1[_0x097a('0x61')]['id']){delete _0xc714d1[_0x097a('0x61')]['id'];}return db['MailAccount'][_0x097a('0x67')]({'where':{'id':_0xc714d1['params']['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x29bdb4,null))[_0x097a('0x12')](function(_0x5e1725){if(_0x5e1725){_0xc714d1[_0x097a('0x61')]['MailAccountId']=_0x5e1725['id'];return db['MailServerOut'][_0x097a('0x6a')](_0xc714d1['body']);}})[_0x097a('0x12')](respondWithResult(_0x29bdb4,null))[_0x097a('0x1c')](handleError(_0x29bdb4,null));};exports[_0x097a('0x87')]=function(_0x1da9a1,_0x20d6a8){return db[_0x097a('0x45')][_0x097a('0x6c')]({'where':{'id':_0x1da9a1[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x20d6a8,null))['then'](function(_0x2745ba){if(_0x2745ba){return _0x2745ba[_0x097a('0x88')](null);}return null;})['then'](respondWithStatusCode(_0x20d6a8,null))['catch'](handleError(_0x20d6a8,null));};exports['addInteraction']=function(_0x2fb871,_0x127d50){return db[_0x097a('0x89')][_0x097a('0x67')]({'where':{'id':_0x2fb871[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x127d50,null))[_0x097a('0x12')](function(_0x5f5c53){if(_0x5f5c53){return _0x5f5c53[_0x097a('0x8a')](_0x2fb871[_0x097a('0x61')][_0x097a('0x70')],_['omit'](_0x2fb871[_0x097a('0x61')],[_0x097a('0x70'),'id'])||{});}})['then'](respondWithResult(_0x127d50,null))[_0x097a('0x1c')](handleError(_0x127d50,null));};exports['getInteractions']=function(_0x1c4d9e,_0x2ff71b){var _0x384452={'raw':![],'where':{}};var _0xca081={};var _0x1ab4bc={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x1c4d9e[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x2ff71b,null))['then'](function(_0x380777){if(_0x380777){_0xca081[_0x097a('0x49')]=_[_0x097a('0x4a')](db['MailInteraction'][_0x097a('0x46')]);_0xca081[_0x097a('0x4b')]=_['keys'](_0x1c4d9e['query']);_0xca081[_0x097a('0x4c')]=_[_0x097a('0x4e')](_0xca081[_0x097a('0x49')],_0xca081[_0x097a('0x4b')]);_0x384452['attributes']=_['intersection'](_0xca081['model'],qs[_0x097a('0x4f')](_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x4f')]));_0x384452[_0x097a('0x4d')]=_0x384452[_0x097a('0x4d')]['length']?_0x384452[_0x097a('0x4d')]:_0xca081[_0x097a('0x49')];if(!_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x51')]('nolimit')){_0x384452[_0x097a('0x23')]=qs[_0x097a('0x23')](_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x23')]);_0x384452['offset']=qs[_0x097a('0x21')](_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x21')]);}_0x384452[_0x097a('0x53')]=qs[_0x097a('0x6d')](_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x6d')]);_0x384452[_0x097a('0x54')]=qs[_0x097a('0x4c')](_[_0x097a('0x55')](_0x1c4d9e['query'],_0xca081[_0x097a('0x4c')]));_0x384452[_0x097a('0x54')]['MailAccountId']=_0x380777['id'];if(_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x56')]){_0x384452[_0x097a('0x54')]=_[_0x097a('0x57')](_0x384452['where'],{'$or':_['map'](_0x384452['attributes'],function(_0x3208fd){var _0x423532={};_0x423532[_0x3208fd]={'$like':'%'+_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x56')]+'%'};return _0x423532;})});}_0x384452=_['merge']({},_0x384452,_0x1c4d9e['options']);return db['MailInteraction'][_0x097a('0x24')]({'where':_0x384452[_0x097a('0x54')]})[_0x097a('0x12')](function(_0x463cca){_0x1ab4bc[_0x097a('0x24')]=_0x463cca;if(_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x5a')]){_0x384452[_0x097a('0x6e')]=[{'model':db[_0x097a('0x8b')],'as':_0x097a('0x8c'),'required':![]},{'model':db[_0x097a('0x8d')],'as':_0x097a('0x8e'),'attributes':['name','fullname',_0x097a('0x8f')],'required':![]},{'model':db[_0x097a('0x90')],'as':_0x097a('0x91'),'attributes':['id',_0x097a('0x28'),'color'],'where':_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x92')]?{'id':_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x92')]}:undefined,'required':_0x1c4d9e[_0x097a('0x4b')][_0x097a('0x92')]?!![]:![]}];}return db[_0x097a('0x89')][_0x097a('0x5b')](_0x384452);})['then'](function(_0x162ca4){_0x1ab4bc['rows']=_0x162ca4;return _0x1ab4bc;});}})['then'](respondWithFilteredResult(_0x2ff71b,_0x384452))[_0x097a('0x1c')](handleError(_0x2ff71b,null));};exports[_0x097a('0x93')]=function addApplications(_0x30eada,_0x51584b){var _0x431aee=_0x30eada[_0x097a('0x5e')]['id'];var _0x506bd0=_0x30eada[_0x097a('0x61')];var _0x16df5b=0xc8;var _0x350c5f=null;return db['sequelize'][_0x097a('0x94')]({'isolationLevel':db[_0x097a('0x95')]['Transaction'][_0x097a('0x96')]['READ_COMMITTED']},function(_0x2becb4){return db[_0x097a('0x45')][_0x097a('0x6c')]({'where':{'id':_0x431aee},'transaction':_0x2becb4})[_0x097a('0x12')](function(_0x2c380a){if(_0x2c380a){return db[_0x097a('0x97')]['destroy']({'where':{'MailAccountId':_0x431aee},'transaction':_0x2becb4})[_0x097a('0x12')](function(){var _0x3b672a=_[_0x097a('0x44')](_0x506bd0,function(_0x2cd4bb){_0x2cd4bb[_0x097a('0x68')]=_0x431aee;return _0x2cd4bb;});return db[_0x097a('0x97')][_0x097a('0x98')](_0x3b672a,{'transaction':_0x2becb4});});}else{_0x16df5b=0x194;_0x350c5f=[];}});})['then'](function(){if(_0x16df5b!==0x194){return db['MailApplication']['findAndCountAll']({'where':{'MailAccountId':_0x431aee},'order':_0x097a('0x99')})[_0x097a('0x12')](function(_0x3ab422){_0x350c5f=_0x3ab422;});}})['catch'](function(_0xf405db){_0x16df5b=0x1f4;logger[_0x097a('0x18')](_0xf405db[_0x097a('0x9a')]);if(_0xf405db[_0x097a('0x28')]){delete _0xf405db['name'];}_0x350c5f=_0xf405db;})[_0x097a('0x9b')](function(){if(_0x350c5f===null){_0x51584b[_0x097a('0x1d')](_0x16df5b);}else{if(_0x16df5b===0x1f4){_0x51584b[_0x097a('0x1e')](_0x16df5b)[_0x097a('0x29')](_0x350c5f);}else{_0x51584b[_0x097a('0x1e')](_0x16df5b)[_0x097a('0x20')](_0x350c5f);}}});};exports['getApplications']=function(_0x1dfab5,_0x289110){var _0x43f18b={};var _0x544415={};var _0x16bcfc;var _0x175983;return db[_0x097a('0x45')][_0x097a('0x6c')]({'where':{'id':_0x1dfab5['params']['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x289110,null))[_0x097a('0x12')](function(_0x2087ed){if(_0x2087ed){_0x16bcfc=_0x2087ed;_0x544415[_0x097a('0x49')]=_[_0x097a('0x4a')](db[_0x097a('0x97')]['rawAttributes']);_0x544415[_0x097a('0x4b')]=_[_0x097a('0x4a')](_0x1dfab5['query']);_0x544415[_0x097a('0x4c')]=_[_0x097a('0x4e')](_0x544415[_0x097a('0x49')],_0x544415[_0x097a('0x4b')]);_0x43f18b[_0x097a('0x4d')]=_[_0x097a('0x4e')](_0x544415['model'],qs['fields'](_0x1dfab5['query']['fields']));_0x43f18b[_0x097a('0x4d')]=_0x43f18b[_0x097a('0x4d')][_0x097a('0x50')]?_0x43f18b[_0x097a('0x4d')]:_0x544415[_0x097a('0x49')];_0x43f18b[_0x097a('0x53')]=qs[_0x097a('0x6d')](_0x1dfab5[_0x097a('0x4b')][_0x097a('0x6d')]);_0x43f18b[_0x097a('0x54')]=qs[_0x097a('0x4c')](_[_0x097a('0x55')](_0x1dfab5[_0x097a('0x4b')],_0x544415[_0x097a('0x4c')]));if(_0x1dfab5[_0x097a('0x4b')][_0x097a('0x56')]){_0x43f18b[_0x097a('0x54')]=_[_0x097a('0x57')](_0x43f18b[_0x097a('0x54')],{'$or':_['map'](_0x43f18b[_0x097a('0x4d')],function(_0xd54595){var _0x4e6673={};_0x4e6673[_0xd54595]={'$like':'%'+_0x1dfab5[_0x097a('0x4b')][_0x097a('0x56')]+'%'};return _0x4e6673;})});}_0x43f18b=_[_0x097a('0x57')]({},_0x43f18b,_0x1dfab5[_0x097a('0x59')]);return _0x16bcfc[_0x097a('0x9c')](_0x43f18b);}})['then'](function(_0x2e31cb){if(_0x2e31cb){_0x175983=_0x2e31cb[_0x097a('0x50')];if(!_0x1dfab5[_0x097a('0x4b')][_0x097a('0x51')]('nolimit')){_0x43f18b[_0x097a('0x23')]=qs[_0x097a('0x23')](_0x1dfab5[_0x097a('0x4b')][_0x097a('0x23')]);_0x43f18b[_0x097a('0x21')]=qs['offset'](_0x1dfab5[_0x097a('0x4b')][_0x097a('0x21')]);}return _0x16bcfc['getApplications'](_0x43f18b);}})[_0x097a('0x12')](function(_0x1edc29){if(_0x1edc29){return _0x1edc29?{'count':_0x175983,'rows':_0x1edc29}:null;}})['then'](respondWithResult(_0x289110,null))['catch'](handleError(_0x289110,null));};exports[_0x097a('0x9d')]=function(_0x373543,_0x497362){var _0x3cfe6e={'raw':!![],'where':{}};var _0x4b4fcd={};var _0x263f77={'count':0x0,'rows':[]};return db[_0x097a('0x45')]['findOne']({'where':{'id':_0x373543[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x497362,null))[_0x097a('0x12')](function(_0x3f3cd2){if(_0x3f3cd2){_0x4b4fcd[_0x097a('0x49')]=_[_0x097a('0x4a')](db[_0x097a('0x9e')][_0x097a('0x46')]);_0x4b4fcd[_0x097a('0x4b')]=_[_0x097a('0x4a')](_0x373543[_0x097a('0x4b')]);_0x4b4fcd['filters']=_['intersection'](_0x4b4fcd[_0x097a('0x49')],_0x4b4fcd[_0x097a('0x4b')]);_0x3cfe6e[_0x097a('0x4d')]=_[_0x097a('0x4e')](_0x4b4fcd['model'],qs[_0x097a('0x4f')](_0x373543[_0x097a('0x4b')]['fields']));_0x3cfe6e[_0x097a('0x4d')]=_0x3cfe6e['attributes']['length']?_0x3cfe6e[_0x097a('0x4d')]:_0x4b4fcd[_0x097a('0x49')];if(!_0x373543[_0x097a('0x4b')][_0x097a('0x51')](_0x097a('0x52'))){_0x3cfe6e[_0x097a('0x23')]=qs[_0x097a('0x23')](_0x373543[_0x097a('0x4b')][_0x097a('0x23')]);_0x3cfe6e[_0x097a('0x21')]=qs[_0x097a('0x21')](_0x373543['query'][_0x097a('0x21')]);}_0x3cfe6e[_0x097a('0x53')]=qs[_0x097a('0x6d')](_0x373543[_0x097a('0x4b')][_0x097a('0x6d')]);_0x3cfe6e[_0x097a('0x54')]=qs[_0x097a('0x4c')](_['pick'](_0x373543[_0x097a('0x4b')],_0x4b4fcd['filters']));_0x3cfe6e[_0x097a('0x54')]['MailAccountId']=_0x3f3cd2['id'];if(_0x373543['query'][_0x097a('0x56')]){_0x3cfe6e[_0x097a('0x54')]=_[_0x097a('0x57')](_0x3cfe6e[_0x097a('0x54')],{'$or':_[_0x097a('0x44')](_0x3cfe6e[_0x097a('0x4d')],function(_0x1a9868){var _0xa42e57={};_0xa42e57[_0x1a9868]={'$like':'%'+_0x373543[_0x097a('0x4b')][_0x097a('0x56')]+'%'};return _0xa42e57;})});}if(_0x373543[_0x097a('0x4b')][_0x097a('0x9f')]){var _0x39dbbf=_0x373543[_0x097a('0x4b')][_0x097a('0x9f')][_0x097a('0xa0')](',');var _0x2844ac={};_0x2844ac[_0x39dbbf[0x0]]={'$gte':moment(_0x39dbbf[0x1])[_0x097a('0xa1')](_0x097a('0xa2'))};_0x3cfe6e[_0x097a('0x54')]=_['merge'](_0x3cfe6e[_0x097a('0x54')],_0x2844ac);}_0x3cfe6e=_[_0x097a('0x57')]({},_0x3cfe6e,_0x373543[_0x097a('0x59')]);return db[_0x097a('0x9e')][_0x097a('0x24')]({'where':_0x3cfe6e[_0x097a('0x54')]})[_0x097a('0x12')](function(_0x5e45d8){_0x263f77[_0x097a('0x24')]=_0x5e45d8;if(_0x373543[_0x097a('0x4b')][_0x097a('0x5a')]){_0x3cfe6e['include']=[{'all':!![]}];}return db[_0x097a('0x9e')][_0x097a('0x5b')](_0x3cfe6e);})[_0x097a('0x12')](function(_0x208006){if(_0x373543[_0x097a('0x4b')]['inlineCss']===_0x097a('0xa3')){for(var _0x5a9af4=0x0;_0x5a9af4<_0x208006[_0x097a('0x50')];_0x5a9af4++){_0x208006[_0x5a9af4][_0x097a('0x61')]=juice(_0x208006[_0x5a9af4]['body']);}}_0x263f77[_0x097a('0x5c')]=_0x208006;return _0x263f77;});}})[_0x097a('0x12')](respondWithFilteredResult(_0x497362,_0x3cfe6e))['catch'](handleError(_0x497362,null));};exports[_0x097a('0x29')]=function(_0x1f524b,_0x2b2d50){var _0x2de4a5,_0x17c1ef={},_0x3855d9;if(_0x1f524b[_0x097a('0x61')]['to']){_0x3855d9=_0x1f524b[_0x097a('0x61')]['to'][_0x097a('0xa0')](',')[0x0];}return db[_0x097a('0x45')][_0x097a('0x67')]({'where':{'id':_0x1f524b['params']['id']},'include':[{'model':db['CmList'],'as':_0x097a('0xa4'),'include':[{'model':db[_0x097a('0x8b')],'as':_0x097a('0xa5'),'where':{'email':_0x3855d9},'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x097a('0x5f')],'as':_0x097a('0x41'),'raw':!![],'include':[{'model':db[_0x097a('0xa6')],'as':'CloudProvider','raw':!![]}]}]})[_0x097a('0x12')](handleEntityNotFound(_0x2b2d50,null))[_0x097a('0x12')](function(_0x2e566f){if(!_0x2e566f)return;_0x2de4a5=_0x2e566f;if(!_0x2e566f[_0x097a('0x41')])throw new Error(_0x097a('0xa7'));if(_[_0x097a('0x77')](_0x1f524b[_0x097a('0x61')][_0x097a('0xa8')])){_0x1f524b[_0x097a('0x61')][_0x097a('0xa8')]=util[_0x097a('0xa1')](_0x097a('0xa9'),_0x2e566f[_0x097a('0x28')],_0x2e566f['email']||_0x2e566f[_0x097a('0x41')][_0x097a('0x35')]);}if(_0x1f524b[_0x097a('0x61')][_0x097a('0xaa')]&&_0x1f524b['body']['attachments'][_0x097a('0x50')]){for(var _0x1da16d=0x0;_0x1da16d<_0x1f524b[_0x097a('0x61')][_0x097a('0xaa')]['length'];_0x1da16d+=0x1){_0x1f524b['body'][_0x097a('0xaa')][_0x1da16d]={'filename':_0x1f524b[_0x097a('0x61')]['attachments'][_0x1da16d][_0x097a('0x28')],'path':path['join'](config[_0x097a('0xab')],_0x097a('0xac'),_0x1f524b[_0x097a('0x61')][_0x097a('0xaa')][_0x1da16d][_0x097a('0xad')])};}}var _0x4dcaf1=_0x2e566f[_0x097a('0xae')]();return respondWithRpcPromise(_0x097a('0xaf'),'sendMail',{'account':_0x4dcaf1,'message':_0x1f524b['body']});})['then'](function(_0x42be4a){if(!_0x42be4a)return;_0x17c1ef=_0x42be4a;if(!_0x2de4a5['List'])throw new Error('List\x20not\x20found');if(_0x2de4a5[_0x097a('0xa4')][_0x097a('0xa5')][_0x097a('0x50')])return _0x2de4a5[_0x097a('0xa4')][_0x097a('0xa5')][0x0];return db[_0x097a('0x8b')][_0x097a('0x6a')](_[_0x097a('0xb0')](_0x1f524b[_0x097a('0x61')],{'firstName':_0x1f524b[_0x097a('0x61')]['to'],'email':_0x1f524b[_0x097a('0x61')]['to'],'phone':_0x1f524b[_0x097a('0x61')]['to'],'ListId':_0x2de4a5['ListId']}));})[_0x097a('0x12')](function(_0x4b4748){if(!_0x4b4748)return;var _0x455430={'UserId':_0x1f524b[_0x097a('0x35')]['id'],'ContactId':_0x4b4748['id'],'MailAccountId':_0x2de4a5['id'],'inReplyTo':_0x17c1ef[_0x097a('0xb1')],'to':_0x1f524b[_0x097a('0x61')][_0x097a('0xa8')],'cc':_0x1f524b[_0x097a('0x61')]['cc'],'subject':_0x1f524b[_0x097a('0x61')][_0x097a('0xb2')],'attach':_0x1f524b[_0x097a('0x61')][_0x097a('0xb3')],'firstMsgDirection':'out','lastMsgAt':moment()['format'](_0x097a('0xa2')),'lastMsgDirection':_0x097a('0xb4'),'Messages':[_[_0x097a('0x57')](_0x1f524b[_0x097a('0x61')],{'messageId':_0x17c1ef[_0x097a('0xb1')],'sentAt':moment()[_0x097a('0xa1')](_0x097a('0xa2')),'read':!![],'MailAccountId':_0x2de4a5['id'],'UserId':_0x1f524b[_0x097a('0x35')]['id'],'ContactId':_0x4b4748['id']})]};if(_0x1f524b[_0x097a('0x61')][_0x097a('0xb5')]){_0x455430=_['merge'](_0x455430,_0x1f524b[_0x097a('0x61')][_0x097a('0xb5')]);}return db['MailInteraction']['create'](_0x455430,{'include':[{'model':db['MailMessage'],'as':_0x097a('0xb6')}]});})['then'](respondWithResult(_0x2b2d50,null))[_0x097a('0x1c')](handleError(_0x2b2d50,null));};exports[_0x097a('0xb7')]=function(_0x1de210,_0x3cbe51){return db['MailAccount'][_0x097a('0x67')]({'where':{'id':_0x1de210[_0x097a('0x5e')]['id']},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![],'include':[{'model':db[_0x097a('0xa6')],'as':_0x097a('0xa6'),'raw':!![]}]}]})[_0x097a('0x12')](handleEntityNotFound(_0x3cbe51,null))[_0x097a('0x12')](function(_0x351c5a){if(!_0x351c5a[_0x097a('0x41')])return;var _0x4e7780=_0x351c5a[_0x097a('0xae')]();return respondWithRpcPromise('VerifySmtp','verifySmtp',{'account':_0x4e7780});})[_0x097a('0x12')](respondWithResult(_0x3cbe51,null))['catch'](handleError(_0x3cbe51,null));};exports[_0x097a('0x27')]=function(_0x337aff,_0x2fb06b){return db[_0x097a('0x45')][_0x097a('0x67')]({'where':{'id':_0x337aff[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x2fb06b,null))['then'](function(_0x522ad8){if(_0x522ad8&&_0x522ad8[_0x097a('0x3e')]){throw new db[(_0x097a('0xb8'))][(_0x097a('0xb9'))](_0x097a('0xba'));}return _0x522ad8;})[_0x097a('0x12')](removeEntity(_0x2fb06b,null))[_0x097a('0x1c')](handleError(_0x2fb06b,null));};exports[_0x097a('0xbb')]=function(_0x5618f0,_0x1d5d87){return db['MailAccount']['find']({'where':{'id':_0x5618f0['params']['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x1d5d87,null))['then'](function(_0x563a71){if(_0x563a71){return _0x563a71['addAgents'](_0x5618f0[_0x097a('0x61')]['ids'],_[_0x097a('0xbc')](_0x5618f0['body'],[_0x097a('0x70'),'id'])||{})['spread'](function(_0x477f50){for(var _0x143d75=0x0;_0x143d75<_0x5618f0[_0x097a('0x61')][_0x097a('0x70')][_0x097a('0x50')];_0x143d75+=0x1){socket[_0x097a('0xbd')](_0x097a('0xbe'),{'UserId':Number(_0x5618f0[_0x097a('0x61')][_0x097a('0x70')][_0x143d75]),'MailAccountId':Number(_0x5618f0[_0x097a('0x5e')]['id'])});}return _0x477f50;});}})['then'](respondWithResult(_0x1d5d87,null))[_0x097a('0x1c')](handleError(_0x1d5d87,null));};exports[_0x097a('0xbf')]=function(_0x574eb0,_0x1d18bd){return db[_0x097a('0x45')][_0x097a('0x67')]({'where':{'id':_0x574eb0[_0x097a('0x5e')]['id']}})[_0x097a('0x12')](handleEntityNotFound(_0x1d18bd,null))['then'](function(_0x4157f8){if(_0x4157f8){return _0x4157f8[_0x097a('0xbf')](_0x574eb0[_0x097a('0x4b')][_0x097a('0x70')])[_0x097a('0x12')](function(){if(_[_0x097a('0xc0')](_0x574eb0[_0x097a('0x4b')]['ids'])){for(var _0x2ef155=0x0;_0x2ef155<_0x574eb0[_0x097a('0x4b')][_0x097a('0x70')]['length'];_0x2ef155+=0x1){socket[_0x097a('0xbd')](_0x097a('0xc1'),{'UserId':Number(_0x574eb0[_0x097a('0x4b')][_0x097a('0x70')][_0x2ef155]),'MailAccountId':Number(_0x574eb0[_0x097a('0x5e')]['id'])});}}else{socket['emit']('userMailAccount:remove',{'UserId':Number(_0x574eb0[_0x097a('0x4b')]['ids']),'MailAccountId':Number(_0x574eb0[_0x097a('0x5e')]['id'])});}});}})[_0x097a('0x12')](respondWithStatusCode(_0x1d18bd,null))[_0x097a('0x1c')](handleError(_0x1d18bd,null));};exports[_0x097a('0xc2')]=function(_0x5744db,_0xb6ab76){var _0x41e4df={};var _0x358c09={};var _0x23d1f7;var _0xf06dc9;return db[_0x097a('0x45')][_0x097a('0x6c')]({'where':{'id':_0x5744db['params']['id']}})['then'](handleEntityNotFound(_0xb6ab76,null))['then'](function(_0x2b9c07){if(_0x2b9c07){_0x23d1f7=_0x2b9c07;_0x358c09[_0x097a('0x49')]=_[_0x097a('0x4a')](db['User'][_0x097a('0x46')]);_0x358c09['query']=_[_0x097a('0x4a')](_0x5744db[_0x097a('0x4b')]);_0x358c09['filters']=_['intersection'](_0x358c09['model'],_0x358c09[_0x097a('0x4b')]);_0x41e4df[_0x097a('0x4d')]=_[_0x097a('0x4e')](_0x358c09['model'],qs[_0x097a('0x4f')](_0x5744db['query'][_0x097a('0x4f')]));_0x41e4df[_0x097a('0x4d')]=_0x41e4df[_0x097a('0x4d')]['length']?_0x41e4df[_0x097a('0x4d')]:_0x358c09['model'];_0x41e4df[_0x097a('0x53')]=qs[_0x097a('0x6d')](_0x5744db[_0x097a('0x4b')][_0x097a('0x6d')]);_0x41e4df[_0x097a('0x54')]=qs[_0x097a('0x4c')](_['pick'](_0x5744db['query'],_0x358c09[_0x097a('0x4c')]));if(_0x5744db[_0x097a('0x4b')]['filter']){_0x41e4df['where']=_[_0x097a('0x57')](_0x41e4df['where'],{'$or':_[_0x097a('0x44')](_0x41e4df[_0x097a('0x4d')],function(_0x3be13d){var _0x186eee={};_0x186eee[_0x3be13d]={'$like':'%'+_0x5744db[_0x097a('0x4b')][_0x097a('0x56')]+'%'};return _0x186eee;})});}_0x41e4df=_['merge']({},_0x41e4df,_0x5744db[_0x097a('0x59')]);return _0x23d1f7[_0x097a('0xc2')](_0x41e4df);}})[_0x097a('0x12')](function(_0x5a527c){if(_0x5a527c){_0xf06dc9=_0x5a527c[_0x097a('0x50')];if(!_0x5744db['query'][_0x097a('0x51')](_0x097a('0x52'))){_0x41e4df[_0x097a('0x23')]=qs[_0x097a('0x23')](_0x5744db[_0x097a('0x4b')][_0x097a('0x23')]);_0x41e4df[_0x097a('0x21')]=qs['offset'](_0x5744db[_0x097a('0x4b')][_0x097a('0x21')]);}return _0x23d1f7[_0x097a('0xc2')](_0x41e4df);}})['then'](function(_0x9afaa5){if(_0x9afaa5){return _0x9afaa5?{'count':_0xf06dc9,'rows':_0x9afaa5}:null;}})[_0x097a('0x12')](respondWithResult(_0xb6ab76,null))[_0x097a('0x1c')](handleError(_0xb6ab76,null));};
\ No newline at end of file
+var _0xdaa5=['removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Owner','Tag','Tags','tag','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','MailMessage','$gte','split','inlineCss','true','Contacts','updatedAt','DESC','CloudProvider','from','format','%s\x20<%s>','attachments','basename','getSmtpOptions','SendMail','sendMail','List','List\x20not\x20found','messageId','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','removeAgents','isArray','userMailAccount:remove','getAgents','User','bluebird','util','path','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','defaults','redis','./mailAccount.socket','register','jayson/promise','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','update','destroy','get','MailAccounts','UserProfileResource','stack','name','send','gmail','imap.gmail.com','yahoo','outlook365','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.mail.yahoo.com','smtp-mail.outlook.com','user','username','pass','password','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Smtp','index','MailServerIn','Imap','MailServerOut','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','params','length','includeAll','find','body','provider','custom','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','Disposition','findOne','removeDispositions','ids','addAnswer','create','getAnswers','CannedAnswer','removeAnswers','key','email','ListId','isNil','active','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp'];(function(_0x4a1868,_0x4ffa3e){var _0x3c53b7=function(_0x3b1799){while(--_0x3b1799){_0x4a1868['push'](_0x4a1868['shift']());}};_0x3c53b7(++_0x4ffa3e);}(_0xdaa5,0x1b6));var _0x5daa=function(_0x90141a,_0x257662){_0x90141a=_0x90141a-0x0;var _0x1e5b34=_0xdaa5[_0x90141a];return _0x1e5b34;};'use strict';var moment=require('moment');var BPromise=require(_0x5daa('0x0'));var util=require(_0x5daa('0x1'));var path=require(_0x5daa('0x2'));var _=require(_0x5daa('0x3'));var juice=require(_0x5daa('0x4'));var Redis=require(_0x5daa('0x5'));var qs=require(_0x5daa('0x6'));var logger=require(_0x5daa('0x7'))(_0x5daa('0x8'));var config=require('../../config/environment');var db=require(_0x5daa('0x9'))['db'];config['redis']=_[_0x5daa('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5daa('0xb')]));require(_0x5daa('0xc'))[_0x5daa('0xd')](socket);var jayson=require(_0x5daa('0xe'));var client=jayson['client'][_0x5daa('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x2764b3,_0x446a72,_0x5423f1,_0x5a9eb4){return new BPromise(function(_0x1b8c5d,_0x1029d2){var _0x52f7ac=_0x5a9eb4||client;return _0x52f7ac[_0x5daa('0x10')](_0x2764b3,_0x5423f1)[_0x5daa('0x11')](function(_0x369823){logger[_0x5daa('0x12')](_0x5daa('0x13'),_0x446a72,_0x5daa('0x14'));logger[_0x5daa('0x15')](_0x5daa('0x16'),_0x446a72,'request\x20sent',JSON[_0x5daa('0x17')](_0x369823));if(_0x369823['error']){if(_0x369823[_0x5daa('0x18')][_0x5daa('0x19')]===0x1f4){logger[_0x5daa('0x18')](_0x5daa('0x13'),_0x446a72,_0x369823[_0x5daa('0x18')]['message']);return _0x1029d2(_0x369823[_0x5daa('0x18')][_0x5daa('0x1a')]);}logger[_0x5daa('0x18')](_0x5daa('0x13'),_0x446a72,_0x369823[_0x5daa('0x18')][_0x5daa('0x1a')]);return _0x1b8c5d(_0x369823[_0x5daa('0x18')][_0x5daa('0x1a')]);}else{logger[_0x5daa('0x12')](_0x5daa('0x13'),_0x446a72,'request\x20sent');_0x1b8c5d(_0x369823[_0x5daa('0x1b')][_0x5daa('0x1a')]);}})[_0x5daa('0x1c')](function(_0x36fcf5){logger[_0x5daa('0x18')](_0x5daa('0x13'),_0x446a72,_0x36fcf5);_0x1029d2(_0x36fcf5);});});}function respondWithStatusCode(_0x30064f,_0x236767){_0x236767=_0x236767||0xcc;return function(_0x3f2658){if(_0x3f2658){return _0x30064f[_0x5daa('0x1d')](_0x236767);}return _0x30064f[_0x5daa('0x1e')](_0x236767)[_0x5daa('0x1f')]();};}function respondWithResult(_0x3e1ecb,_0x5b0b36){_0x5b0b36=_0x5b0b36||0xc8;return function(_0x2e6dba){if(_0x2e6dba){return _0x3e1ecb[_0x5daa('0x1e')](_0x5b0b36)[_0x5daa('0x20')](_0x2e6dba);}};}function respondWithFilteredResult(_0x5efc78,_0x1afaf7){return function(_0xa9afd1){if(_0xa9afd1){var _0x5cee2c=typeof _0x1afaf7['offset']==='undefined'&&typeof _0x1afaf7[_0x5daa('0x21')]===_0x5daa('0x22');var _0x4178a9=_0xa9afd1[_0x5daa('0x23')];var _0x4d2b83=_0x5cee2c?0x0:_0x1afaf7[_0x5daa('0x24')];var _0x47b705=_0x5cee2c?_0xa9afd1[_0x5daa('0x23')]:_0x1afaf7[_0x5daa('0x24')]+_0x1afaf7[_0x5daa('0x21')];var _0x1e57ef;if(_0x47b705>=_0x4178a9){_0x47b705=_0x4178a9;_0x1e57ef=0xc8;}else{_0x1e57ef=0xce;}_0x5efc78[_0x5daa('0x1e')](_0x1e57ef);return _0x5efc78['set'](_0x5daa('0x25'),_0x4d2b83+'-'+_0x47b705+'/'+_0x4178a9)[_0x5daa('0x20')](_0xa9afd1);}return null;};}function saveUpdates(_0x55e582){return function(_0x36d022){if(_0x36d022){return _0x36d022[_0x5daa('0x26')](_0x55e582)['then'](function(_0x26e1c6){return _0x26e1c6;});}return null;};}function removeEntity(_0x121050){return function(_0x340787){if(_0x340787){return _0x340787[_0x5daa('0x27')]()[_0x5daa('0x11')](function(){var _0x10a98e=_0x340787[_0x5daa('0x28')]({'plain':!![]});var _0x52503d=_0x5daa('0x29');return db[_0x5daa('0x2a')]['destroy']({'where':{'type':_0x52503d,'resourceId':_0x10a98e['id']}})[_0x5daa('0x11')](function(){return _0x340787;});})[_0x5daa('0x11')](function(){_0x121050[_0x5daa('0x1e')](0xcc)[_0x5daa('0x1f')]();});}};}function handleEntityNotFound(_0x324bec){return function(_0x562adc){if(!_0x562adc){_0x324bec[_0x5daa('0x1d')](0x194);}return _0x562adc;};}function handleError(_0x590888,_0x3e9cea){_0x3e9cea=_0x3e9cea||0x1f4;return function(_0x2de0f6){logger[_0x5daa('0x18')](_0x2de0f6[_0x5daa('0x2b')]);if(_0x2de0f6[_0x5daa('0x2c')]){delete _0x2de0f6[_0x5daa('0x2c')];}_0x590888[_0x5daa('0x1e')](_0x3e9cea)[_0x5daa('0x2d')](_0x2de0f6);};}function getImapHost(_0x1d02ca){switch(_0x1d02ca){case _0x5daa('0x2e'):return _0x5daa('0x2f');case _0x5daa('0x30'):return'imap.mail.yahoo.com';case'hotmail':return'imap-mail.outlook.com';case _0x5daa('0x31'):return'outlook.office365.com';}throw new Error(_0x5daa('0x32'),_0x1d02ca);}function getSmtpHost(_0x50db24){switch(_0x50db24){case _0x5daa('0x2e'):return _0x5daa('0x33');case _0x5daa('0x30'):return _0x5daa('0x34');case'hotmail':return _0x5daa('0x35');case _0x5daa('0x31'):return'smtp.office365.com';}throw new Error(_0x5daa('0x32'),_0x50db24);}function getAuthenticationOptions(_0x116bb7,_0x1e6222){var _0x5cdffb={};var _0x1d3c6b={};if(_0x116bb7){_0x5cdffb[_0x5daa('0x36')]=_0x1d3c6b[_0x5daa('0x36')]=_0x1e6222[_0x5daa('0x37')];_0x5cdffb['password']=_0x1d3c6b[_0x5daa('0x38')]=_0x1e6222[_0x5daa('0x39')];if(_0x1e6222[_0x5daa('0x3a')]){_0x5cdffb[_0x5daa('0x3a')]=_0x1d3c6b[_0x5daa('0x3a')]=!![];_0x5cdffb[_0x5daa('0x3b')]=_0x1d3c6b[_0x5daa('0x3b')]=_0x1e6222[_0x5daa('0x3b')];_0x5cdffb[_0x5daa('0x39')]=_0x1d3c6b[_0x5daa('0x38')]=null;}else{_0x5cdffb[_0x5daa('0x3b')]=_0x1d3c6b[_0x5daa('0x3b')]=null;}_0x5cdffb[_0x5daa('0x3c')]=getImapHost(_0x116bb7);_0x5cdffb[_0x5daa('0x3d')]=0x3e1;_0x1d3c6b['host']=getSmtpHost(_0x116bb7);_0x1d3c6b[_0x5daa('0x3d')]=0x24b;_0x1d3c6b[_0x5daa('0x3e')]=![];_0x5cdffb[_0x5daa('0x3f')]=_0x1d3c6b[_0x5daa('0x3f')]=null;}else{if(_0x1e6222[_0x5daa('0x40')]){_0x5cdffb['user']=_0x1d3c6b[_0x5daa('0x36')]=_0x1e6222['username'];_0x5cdffb[_0x5daa('0x39')]=_0x1d3c6b[_0x5daa('0x38')]=_0x1e6222[_0x5daa('0x39')];}else{_0x5cdffb[_0x5daa('0x40')]=_0x1d3c6b[_0x5daa('0x40')]=![];_0x5cdffb['user']=_0x1d3c6b[_0x5daa('0x36')]=null;_0x5cdffb[_0x5daa('0x39')]=_0x1d3c6b['pass']=null;}_0x5cdffb[_0x5daa('0x3c')]=_0x1e6222['Imap'][_0x5daa('0x3c')];_0x5cdffb[_0x5daa('0x3d')]=_0x1e6222['Imap'][_0x5daa('0x3d')];_0x1d3c6b['host']=_0x1e6222[_0x5daa('0x41')]['host'];_0x1d3c6b[_0x5daa('0x3d')]=_0x1e6222[_0x5daa('0x41')][_0x5daa('0x3d')];}return{'Imap':_0x5cdffb,'Smtp':_0x1d3c6b};}exports[_0x5daa('0x42')]=function(_0x56559a,_0x47799d){var _0x4d1f38={'include':[{'model':db[_0x5daa('0x43')],'as':_0x5daa('0x44')},{'model':db[_0x5daa('0x45')],'as':'Smtp'},{'model':db[_0x5daa('0x46')],'as':_0x5daa('0x47')}]},_0x1d0b4b={},_0x503f0a={'count':0x0,'rows':[]};var _0x1c970d=_[_0x5daa('0x48')](db[_0x5daa('0x49')][_0x5daa('0x4a')],function(_0x6a639d){return{'name':_0x6a639d[_0x5daa('0x4b')],'type':_0x6a639d[_0x5daa('0x4c')]['key']};});_0x1d0b4b[_0x5daa('0x4d')]=_[_0x5daa('0x48')](_0x1c970d,_0x5daa('0x2c'));_0x1d0b4b[_0x5daa('0x4e')]=_[_0x5daa('0x4f')](_0x56559a[_0x5daa('0x4e')]);_0x1d0b4b[_0x5daa('0x50')]=_[_0x5daa('0x51')](_0x1d0b4b[_0x5daa('0x4d')],_0x1d0b4b[_0x5daa('0x4e')]);_0x4d1f38[_0x5daa('0x52')]=_[_0x5daa('0x51')](_0x1d0b4b[_0x5daa('0x4d')],qs[_0x5daa('0x53')](_0x56559a[_0x5daa('0x4e')][_0x5daa('0x53')]));_0x4d1f38[_0x5daa('0x52')]=_0x4d1f38[_0x5daa('0x52')]['length']?_0x4d1f38[_0x5daa('0x52')]:_0x1d0b4b[_0x5daa('0x4d')];if(!_0x56559a['query'][_0x5daa('0x54')](_0x5daa('0x55'))){_0x4d1f38['limit']=qs['limit'](_0x56559a['query'][_0x5daa('0x21')]);_0x4d1f38[_0x5daa('0x24')]=qs[_0x5daa('0x24')](_0x56559a[_0x5daa('0x4e')][_0x5daa('0x24')]);}_0x4d1f38[_0x5daa('0x56')]=qs[_0x5daa('0x57')](_0x56559a[_0x5daa('0x4e')][_0x5daa('0x57')]);_0x4d1f38[_0x5daa('0x58')]=qs[_0x5daa('0x50')](_[_0x5daa('0x59')](_0x56559a[_0x5daa('0x4e')],_0x1d0b4b['filters']),_0x1c970d);if(_0x56559a['query'][_0x5daa('0x5a')]){_0x4d1f38[_0x5daa('0x58')]=_[_0x5daa('0x5b')](_0x4d1f38[_0x5daa('0x58')],{'$or':_[_0x5daa('0x48')](_0x1c970d,function(_0x1cf1ff){if(_0x1cf1ff['type']!=='VIRTUAL'){var _0x50a4b1={};_0x50a4b1[_0x1cf1ff[_0x5daa('0x2c')]]={'$like':'%'+_0x56559a[_0x5daa('0x4e')]['filter']+'%'};return _0x50a4b1;}})});}_0x4d1f38=_[_0x5daa('0x5b')]({},_0x4d1f38,_0x56559a[_0x5daa('0x5c')]);var _0x399dc6={'where':_0x4d1f38[_0x5daa('0x58')]};return db[_0x5daa('0x49')][_0x5daa('0x23')](_0x399dc6)[_0x5daa('0x11')](function(_0x5b5d73){_0x503f0a[_0x5daa('0x23')]=_0x5b5d73;if(_0x56559a[_0x5daa('0x4e')]['includeAll']){_0x4d1f38[_0x5daa('0x5d')]=[{'all':!![]}];}return db['MailAccount'][_0x5daa('0x5e')](_0x4d1f38);})['then'](function(_0x4fc38c){_0x503f0a[_0x5daa('0x5f')]=_0x4fc38c;return _0x503f0a;})[_0x5daa('0x11')](respondWithFilteredResult(_0x47799d,_0x4d1f38))[_0x5daa('0x1c')](handleError(_0x47799d,null));};exports['show']=function(_0x52992c,_0xc30b00){var _0x521721={'raw':![],'where':{'id':_0x52992c[_0x5daa('0x60')]['id']},'include':[{'model':db[_0x5daa('0x43')],'as':'Imap'},{'model':db[_0x5daa('0x45')],'as':'Smtp'},{'model':db[_0x5daa('0x46')],'as':_0x5daa('0x47')}]},_0xfd8e30={};_0xfd8e30['model']=_[_0x5daa('0x4f')](db['MailAccount'][_0x5daa('0x4a')]);_0xfd8e30[_0x5daa('0x4e')]=_[_0x5daa('0x4f')](_0x52992c[_0x5daa('0x4e')]);_0xfd8e30[_0x5daa('0x50')]=_[_0x5daa('0x51')](_0xfd8e30['model'],_0xfd8e30[_0x5daa('0x4e')]);_0x521721['attributes']=_[_0x5daa('0x51')](_0xfd8e30[_0x5daa('0x4d')],qs[_0x5daa('0x53')](_0x52992c['query']['fields']));_0x521721[_0x5daa('0x52')]=_0x521721[_0x5daa('0x52')][_0x5daa('0x61')]?_0x521721[_0x5daa('0x52')]:_0xfd8e30['model'];if(_0x52992c[_0x5daa('0x4e')][_0x5daa('0x62')]){_0x521721[_0x5daa('0x5d')]=[{'all':!![]}];}_0x521721=_[_0x5daa('0x5b')]({},_0x521721,_0x52992c['options']);return db['MailAccount'][_0x5daa('0x63')](_0x521721)[_0x5daa('0x11')](handleEntityNotFound(_0xc30b00,null))['then'](respondWithResult(_0xc30b00,null))[_0x5daa('0x1c')](handleError(_0xc30b00,null));};exports[_0x5daa('0x26')]=function(_0x1c2780,_0x1d8abc){if(_0x1c2780[_0x5daa('0x64')]['id']){delete _0x1c2780[_0x5daa('0x64')]['id'];}var _0x185d9b=_0x1c2780[_0x5daa('0x64')][_0x5daa('0x65')]===_0x5daa('0x66')?null:_0x1c2780['body'][_0x5daa('0x65')];var _0x5a4ce3=_0x1c2780[_0x5daa('0x64')][_0x5daa('0x44')]||{};var _0x21e5d5=_0x1c2780['body']['Smtp']||{};if(_0x185d9b){_0x5a4ce3['host']=getImapHost(_0x185d9b);_0x5a4ce3[_0x5daa('0x3d')]=0x3e1;_0x21e5d5['host']=getSmtpHost(_0x185d9b);_0x21e5d5[_0x5daa('0x3d')]=0x24b;_0x21e5d5[_0x5daa('0x3e')]=![];}if(_0x21e5d5[_0x5daa('0x3a')]){_0x21e5d5[_0x5daa('0x3e')]=![];}else{_0x21e5d5[_0x5daa('0x3b')]=null;}if(!_0x5a4ce3[_0x5daa('0x3a')])_0x5a4ce3[_0x5daa('0x3b')]=null;_0x1c2780['body']['Imap']=_0x5a4ce3;_0x1c2780[_0x5daa('0x64')][_0x5daa('0x41')]=_0x21e5d5;return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x1c2780['params']['id']},'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0x5daa('0x45')],'as':_0x5daa('0x41')},{'model':db[_0x5daa('0x46')],'as':_0x5daa('0x47')}]})[_0x5daa('0x11')](handleEntityNotFound(_0x1d8abc,null))[_0x5daa('0x11')](function(_0xa914fb){if(!_0xa914fb)throw new Error(_0x5daa('0x67'));if(_0xa914fb[_0x5daa('0x3f')])delete _0x1c2780['body'][_0x5daa('0x44')];return _0xa914fb;})[_0x5daa('0x11')](saveUpdates(_0x1c2780[_0x5daa('0x64')],null))[_0x5daa('0x11')](function(_0x1dac3f){if(!_0x1c2780[_0x5daa('0x64')][_0x5daa('0x44')])return _0x1dac3f;return db[_0x5daa('0x43')][_0x5daa('0x26')](_0x1c2780['body'][_0x5daa('0x44')],{'where':{'MailAccountId':_0x1dac3f['id']}})[_0x5daa('0x11')](function(){return _0x1dac3f;});})[_0x5daa('0x11')](function(_0x1b805a){if(!_0x1c2780[_0x5daa('0x64')]['Smtp'])return _0x1b805a;return db['MailServerOut'][_0x5daa('0x26')](_0x1c2780[_0x5daa('0x64')][_0x5daa('0x41')],{'where':{'MailAccountId':_0x1b805a['id']}})[_0x5daa('0x11')](function(){return _0x1b805a;});})['then'](respondWithResult(_0x1d8abc,null))[_0x5daa('0x1c')](handleError(_0x1d8abc,null));};exports[_0x5daa('0x68')]=function(_0x5747fc,_0x4f5654){return db[_0x5daa('0x49')][_0x5daa('0x68')]()['then'](respondWithResult(_0x4f5654,null))['catch'](handleError(_0x4f5654,null));};exports[_0x5daa('0x69')]=function(_0x5583c9,_0x1b0af1){if(_0x5583c9['body']['id']){delete _0x5583c9['body']['id'];}return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x5583c9[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x1b0af1,null))[_0x5daa('0x11')](function(_0x2c419){if(_0x2c419){_0x5583c9[_0x5daa('0x64')][_0x5daa('0x6a')]=_0x2c419['id'];return db[_0x5daa('0x6b')]['create'](_0x5583c9[_0x5daa('0x64')]);}})[_0x5daa('0x11')](respondWithResult(_0x1b0af1,null))['catch'](handleError(_0x1b0af1,null));};exports['getDispositions']=function(_0x30a840,_0x36739a){var _0x43d3cd={'raw':![],'where':{}};var _0x51c643={};var _0x398142={'count':0x0,'rows':[]};return db['MailAccount'][_0x5daa('0x6c')]({'where':{'id':_0x30a840[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x36739a,null))[_0x5daa('0x11')](function(_0x2721f9){if(_0x2721f9){_0x51c643['model']=_[_0x5daa('0x4f')](db[_0x5daa('0x6b')][_0x5daa('0x4a')]);_0x51c643[_0x5daa('0x4e')]=_[_0x5daa('0x4f')](_0x30a840[_0x5daa('0x4e')]);_0x51c643[_0x5daa('0x50')]=_['intersection'](_0x51c643['model'],_0x51c643[_0x5daa('0x4e')]);_0x43d3cd[_0x5daa('0x52')]=_[_0x5daa('0x51')](_0x51c643[_0x5daa('0x4d')],qs['fields'](_0x30a840[_0x5daa('0x4e')]['fields']));_0x43d3cd[_0x5daa('0x52')]=_0x43d3cd[_0x5daa('0x52')]['length']?_0x43d3cd[_0x5daa('0x52')]:_0x51c643[_0x5daa('0x4d')];if(!_0x30a840[_0x5daa('0x4e')]['hasOwnProperty'](_0x5daa('0x55'))){_0x43d3cd[_0x5daa('0x21')]=qs['limit'](_0x30a840[_0x5daa('0x4e')][_0x5daa('0x21')]);_0x43d3cd[_0x5daa('0x24')]=qs[_0x5daa('0x24')](_0x30a840[_0x5daa('0x4e')][_0x5daa('0x24')]);}_0x43d3cd[_0x5daa('0x56')]=qs[_0x5daa('0x57')](_0x30a840[_0x5daa('0x4e')][_0x5daa('0x57')]);_0x43d3cd[_0x5daa('0x58')]=qs['filters'](_[_0x5daa('0x59')](_0x30a840[_0x5daa('0x4e')],_0x51c643['filters']));_0x43d3cd[_0x5daa('0x58')]['MailAccountId']=_0x2721f9['id'];if(_0x30a840[_0x5daa('0x4e')][_0x5daa('0x5a')]){_0x43d3cd[_0x5daa('0x58')]=_['merge'](_0x43d3cd[_0x5daa('0x58')],{'$or':_['map'](_0x43d3cd[_0x5daa('0x52')],function(_0x71a78f){var _0x5aa82d={};_0x5aa82d[_0x71a78f]={'$like':'%'+_0x30a840[_0x5daa('0x4e')]['filter']+'%'};return _0x5aa82d;})});}_0x43d3cd=_[_0x5daa('0x5b')]({},_0x43d3cd,_0x30a840[_0x5daa('0x5c')]);return db[_0x5daa('0x6b')][_0x5daa('0x23')]({'where':_0x43d3cd[_0x5daa('0x58')]})[_0x5daa('0x11')](function(_0xa85431){_0x398142['count']=_0xa85431;if(_0x30a840[_0x5daa('0x4e')][_0x5daa('0x62')]){_0x43d3cd[_0x5daa('0x5d')]=[{'all':!![]}];}return db[_0x5daa('0x6b')][_0x5daa('0x5e')](_0x43d3cd);})[_0x5daa('0x11')](function(_0x592c7a){_0x398142[_0x5daa('0x5f')]=_0x592c7a;return _0x398142;});}})['then'](respondWithFilteredResult(_0x36739a,_0x43d3cd))[_0x5daa('0x1c')](handleError(_0x36739a,null));};exports[_0x5daa('0x6d')]=function(_0x4cc875,_0x2455a6){return db['MailAccount'][_0x5daa('0x63')]({'where':{'id':_0x4cc875[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x2455a6,null))[_0x5daa('0x11')](function(_0x1e96b7){if(_0x1e96b7){return _0x1e96b7[_0x5daa('0x6d')](_0x4cc875[_0x5daa('0x4e')][_0x5daa('0x6e')]);}})[_0x5daa('0x11')](respondWithStatusCode(_0x2455a6,null))[_0x5daa('0x1c')](handleError(_0x2455a6,null));};exports[_0x5daa('0x6f')]=function(_0x14367d,_0x509d07){if(_0x14367d[_0x5daa('0x64')]['id']){delete _0x14367d['body']['id'];}return db['MailAccount']['find']({'where':{'id':_0x14367d[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x509d07,null))[_0x5daa('0x11')](function(_0x2fcd94){if(_0x2fcd94){_0x14367d[_0x5daa('0x64')]['MailAccountId']=_0x2fcd94['id'];return db['CannedAnswer'][_0x5daa('0x70')](_0x14367d[_0x5daa('0x64')]);}})[_0x5daa('0x11')](respondWithResult(_0x509d07,null))[_0x5daa('0x1c')](handleError(_0x509d07,null));};exports[_0x5daa('0x71')]=function(_0xb32778,_0xa6e504){var _0xf077db={'raw':![],'where':{}};var _0x421dab={};var _0x256de8={'count':0x0,'rows':[]};return db['MailAccount'][_0x5daa('0x6c')]({'where':{'id':_0xb32778['params']['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0xa6e504,null))[_0x5daa('0x11')](function(_0x3c95b2){if(_0x3c95b2){_0x421dab['model']=_[_0x5daa('0x4f')](db[_0x5daa('0x72')]['rawAttributes']);_0x421dab[_0x5daa('0x4e')]=_[_0x5daa('0x4f')](_0xb32778[_0x5daa('0x4e')]);_0x421dab['filters']=_[_0x5daa('0x51')](_0x421dab[_0x5daa('0x4d')],_0x421dab[_0x5daa('0x4e')]);_0xf077db[_0x5daa('0x52')]=_[_0x5daa('0x51')](_0x421dab[_0x5daa('0x4d')],qs[_0x5daa('0x53')](_0xb32778[_0x5daa('0x4e')][_0x5daa('0x53')]));_0xf077db[_0x5daa('0x52')]=_0xf077db[_0x5daa('0x52')][_0x5daa('0x61')]?_0xf077db[_0x5daa('0x52')]:_0x421dab[_0x5daa('0x4d')];if(!_0xb32778[_0x5daa('0x4e')][_0x5daa('0x54')](_0x5daa('0x55'))){_0xf077db['limit']=qs['limit'](_0xb32778[_0x5daa('0x4e')][_0x5daa('0x21')]);_0xf077db[_0x5daa('0x24')]=qs[_0x5daa('0x24')](_0xb32778['query']['offset']);}_0xf077db['order']=qs[_0x5daa('0x57')](_0xb32778[_0x5daa('0x4e')]['sort']);_0xf077db[_0x5daa('0x58')]=qs[_0x5daa('0x50')](_[_0x5daa('0x59')](_0xb32778[_0x5daa('0x4e')],_0x421dab[_0x5daa('0x50')]));_0xf077db[_0x5daa('0x58')][_0x5daa('0x6a')]=_0x3c95b2['id'];if(_0xb32778['query'][_0x5daa('0x5a')]){_0xf077db[_0x5daa('0x58')]=_[_0x5daa('0x5b')](_0xf077db[_0x5daa('0x58')],{'$or':_[_0x5daa('0x48')](_0xf077db[_0x5daa('0x52')],function(_0x39351b){var _0x23c635={};_0x23c635[_0x39351b]={'$like':'%'+_0xb32778[_0x5daa('0x4e')]['filter']+'%'};return _0x23c635;})});}_0xf077db=_['merge']({},_0xf077db,_0xb32778[_0x5daa('0x5c')]);return db[_0x5daa('0x72')][_0x5daa('0x23')]({'where':_0xf077db[_0x5daa('0x58')]})[_0x5daa('0x11')](function(_0x4e8b70){_0x256de8[_0x5daa('0x23')]=_0x4e8b70;if(_0xb32778[_0x5daa('0x4e')][_0x5daa('0x62')]){_0xf077db['include']=[{'all':!![]}];}return db['CannedAnswer'][_0x5daa('0x5e')](_0xf077db);})[_0x5daa('0x11')](function(_0x5c8877){_0x256de8[_0x5daa('0x5f')]=_0x5c8877;return _0x256de8;});}})[_0x5daa('0x11')](respondWithFilteredResult(_0xa6e504,_0xf077db))[_0x5daa('0x1c')](handleError(_0xa6e504,null));};exports[_0x5daa('0x73')]=function(_0xb9b3ca,_0x6e4151){return db['MailAccount']['find']({'where':{'id':_0xb9b3ca[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x6e4151,null))[_0x5daa('0x11')](function(_0x11e9a3){if(_0x11e9a3){return _0x11e9a3['removeAnswers'](_0xb9b3ca[_0x5daa('0x4e')][_0x5daa('0x6e')]);}})[_0x5daa('0x11')](respondWithStatusCode(_0x6e4151,null))[_0x5daa('0x1c')](handleError(_0x6e4151,null));};exports[_0x5daa('0x70')]=function(_0x40df28,_0x5284d3){var _0x2b8eb8={'name':_0x40df28[_0x5daa('0x64')][_0x5daa('0x2c')],'key':_0x40df28['body'][_0x5daa('0x74')],'provider':_0x40df28[_0x5daa('0x64')][_0x5daa('0x65')]===_0x5daa('0x66')?null:_0x40df28[_0x5daa('0x64')][_0x5daa('0x65')],'email':_0x40df28[_0x5daa('0x64')][_0x5daa('0x75')],'ListId':_0x40df28[_0x5daa('0x64')][_0x5daa('0x76')],'active':!_[_0x5daa('0x77')](_0x40df28[_0x5daa('0x64')][_0x5daa('0x78')])?_0x40df28[_0x5daa('0x64')]['active']:!![],'description':_0x40df28['body']['description']||null};var _0x2a68ce=getAuthenticationOptions(_0x2b8eb8['provider'],_0x40df28[_0x5daa('0x64')]);_0x2b8eb8['Imap']=_0x2a68ce[_0x5daa('0x44')];_0x2b8eb8[_0x5daa('0x41')]=_0x2a68ce[_0x5daa('0x41')];return db['MailAccount']['create'](_0x2b8eb8,{'include':[{'model':db[_0x5daa('0x45')],'as':_0x5daa('0x41')},{'model':db[_0x5daa('0x43')],'as':_0x5daa('0x44')}]})['then'](function(_0x2597d8){var _0x1928c6=_0x40df28[_0x5daa('0x36')][_0x5daa('0x28')]({'plain':!![]});if(!_0x1928c6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1928c6[_0x5daa('0x79')]===_0x5daa('0x36')){var _0x3eb130=_0x2597d8[_0x5daa('0x28')]({'plain':!![]});return db['UserProfileSection'][_0x5daa('0x63')]({'where':{'name':_0x5daa('0x29'),'userProfileId':_0x1928c6[_0x5daa('0x7a')]},'raw':!![]})[_0x5daa('0x11')](function(_0x5e844c){if(_0x5e844c&&_0x5e844c['autoAssociation']===0x0){return db[_0x5daa('0x2a')][_0x5daa('0x70')]({'name':_0x3eb130['name'],'resourceId':_0x3eb130['id'],'type':_0x5e844c['name'],'sectionId':_0x5e844c['id']},{})[_0x5daa('0x11')](function(){return _0x2597d8;});}else{return _0x2597d8;}})[_0x5daa('0x1c')](function(_0xd7b013){logger[_0x5daa('0x18')](_0x5daa('0x7b'),_0xd7b013);throw _0xd7b013;});}return _0x2597d8;})[_0x5daa('0x11')](respondWithResult(_0x5284d3,0xc9))[_0x5daa('0x1c')](handleError(_0x5284d3,null));};exports[_0x5daa('0x7c')]=function(_0x19306a,_0x1b572d){return db['MailAccount'][_0x5daa('0x6c')]({'where':{'id':_0x19306a[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x1b572d,null))[_0x5daa('0x11')](function(_0x1ae64f){if(_0x1ae64f){return _0x1ae64f[_0x5daa('0x7c')]();}return null;})[_0x5daa('0x11')](respondWithResult(_0x1b572d,null))[_0x5daa('0x1c')](handleError(_0x1b572d,null));};exports[_0x5daa('0x7d')]=function(_0x14719b,_0x2b0e51){if(_0x14719b[_0x5daa('0x64')]['id']){delete _0x14719b[_0x5daa('0x64')]['id'];}return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x14719b['params']['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x2b0e51,null))[_0x5daa('0x11')](function(_0x2aa06d){if(_0x2aa06d){_0x14719b[_0x5daa('0x64')]['MailAccountId']=_0x2aa06d['id'];return db[_0x5daa('0x43')][_0x5daa('0x70')](_0x14719b['body']);}})['then'](respondWithResult(_0x2b0e51,null))[_0x5daa('0x1c')](handleError(_0x2b0e51,null));};exports[_0x5daa('0x7e')]=function(_0x1f24ab,_0xec7149){return db[_0x5daa('0x49')][_0x5daa('0x6c')]({'where':{'id':_0x1f24ab[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0xec7149,null))[_0x5daa('0x11')](function(_0x48f754){if(_0x48f754){return _0x48f754[_0x5daa('0x7f')](null);}return null;})[_0x5daa('0x11')](respondWithStatusCode(_0xec7149,null))['catch'](handleError(_0xec7149,null));};exports[_0x5daa('0x80')]=function(_0x562f74,_0x408515){return db['MailAccount'][_0x5daa('0x6c')]({'where':{'id':_0x562f74[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x408515,null))[_0x5daa('0x11')](function(_0x47777d){if(_0x47777d){return _0x47777d[_0x5daa('0x80')]();}return null;})[_0x5daa('0x11')](respondWithResult(_0x408515,null))['catch'](handleError(_0x408515,null));};exports['addSmtp']=function(_0x49a786,_0x16374b){if(_0x49a786[_0x5daa('0x64')]['id']){delete _0x49a786[_0x5daa('0x64')]['id'];}return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x49a786[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x16374b,null))[_0x5daa('0x11')](function(_0x41e60d){if(_0x41e60d){_0x49a786['body'][_0x5daa('0x6a')]=_0x41e60d['id'];return db['MailServerOut'][_0x5daa('0x70')](_0x49a786['body']);}})[_0x5daa('0x11')](respondWithResult(_0x16374b,null))[_0x5daa('0x1c')](handleError(_0x16374b,null));};exports[_0x5daa('0x81')]=function(_0x393d52,_0x362e8b){return db['MailAccount'][_0x5daa('0x6c')]({'where':{'id':_0x393d52[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x362e8b,null))[_0x5daa('0x11')](function(_0x1b6b3f){if(_0x1b6b3f){return _0x1b6b3f[_0x5daa('0x82')](null);}return null;})[_0x5daa('0x11')](respondWithStatusCode(_0x362e8b,null))['catch'](handleError(_0x362e8b,null));};exports[_0x5daa('0x83')]=function(_0x569c43,_0x14823e){return db[_0x5daa('0x84')][_0x5daa('0x63')]({'where':{'id':_0x569c43[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x14823e,null))['then'](function(_0x9be4c4){if(_0x9be4c4){return _0x9be4c4[_0x5daa('0x83')](_0x569c43[_0x5daa('0x64')][_0x5daa('0x6e')],_[_0x5daa('0x85')](_0x569c43[_0x5daa('0x64')],[_0x5daa('0x6e'),'id'])||{});}})[_0x5daa('0x11')](respondWithResult(_0x14823e,null))[_0x5daa('0x1c')](handleError(_0x14823e,null));};exports[_0x5daa('0x86')]=function(_0x3e11d5,_0x1b92ce){var _0x420ae2={'raw':![],'where':{}};var _0x2359bb={};var _0x35b5f4={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x3e11d5['params']['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x1b92ce,null))['then'](function(_0x20d02b){if(_0x20d02b){_0x2359bb['model']=_[_0x5daa('0x4f')](db[_0x5daa('0x84')][_0x5daa('0x4a')]);_0x2359bb['query']=_[_0x5daa('0x4f')](_0x3e11d5[_0x5daa('0x4e')]);_0x2359bb[_0x5daa('0x50')]=_[_0x5daa('0x51')](_0x2359bb[_0x5daa('0x4d')],_0x2359bb[_0x5daa('0x4e')]);_0x420ae2['attributes']=_['intersection'](_0x2359bb[_0x5daa('0x4d')],qs[_0x5daa('0x53')](_0x3e11d5[_0x5daa('0x4e')][_0x5daa('0x53')]));_0x420ae2['attributes']=_0x420ae2[_0x5daa('0x52')][_0x5daa('0x61')]?_0x420ae2['attributes']:_0x2359bb[_0x5daa('0x4d')];if(!_0x3e11d5[_0x5daa('0x4e')][_0x5daa('0x54')]('nolimit')){_0x420ae2['limit']=qs[_0x5daa('0x21')](_0x3e11d5[_0x5daa('0x4e')][_0x5daa('0x21')]);_0x420ae2[_0x5daa('0x24')]=qs['offset'](_0x3e11d5[_0x5daa('0x4e')][_0x5daa('0x24')]);}_0x420ae2[_0x5daa('0x56')]=qs[_0x5daa('0x57')](_0x3e11d5[_0x5daa('0x4e')]['sort']);_0x420ae2[_0x5daa('0x58')]=qs['filters'](_[_0x5daa('0x59')](_0x3e11d5[_0x5daa('0x4e')],_0x2359bb[_0x5daa('0x50')]));_0x420ae2['where']['MailAccountId']=_0x20d02b['id'];if(_0x3e11d5[_0x5daa('0x4e')][_0x5daa('0x5a')]){_0x420ae2[_0x5daa('0x58')]=_[_0x5daa('0x5b')](_0x420ae2[_0x5daa('0x58')],{'$or':_[_0x5daa('0x48')](_0x420ae2['attributes'],function(_0x5bf1b5){var _0x2e7226={};_0x2e7226[_0x5bf1b5]={'$like':'%'+_0x3e11d5[_0x5daa('0x4e')][_0x5daa('0x5a')]+'%'};return _0x2e7226;})});}_0x420ae2=_[_0x5daa('0x5b')]({},_0x420ae2,_0x3e11d5[_0x5daa('0x5c')]);return db[_0x5daa('0x84')]['count']({'where':_0x420ae2[_0x5daa('0x58')]})['then'](function(_0x3f91eb){_0x35b5f4[_0x5daa('0x23')]=_0x3f91eb;if(_0x3e11d5['query'][_0x5daa('0x62')]){_0x420ae2['include']=[{'model':db[_0x5daa('0x87')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x5daa('0x88'),'attributes':[_0x5daa('0x2c'),'fullname','internal'],'required':![]},{'model':db[_0x5daa('0x89')],'as':_0x5daa('0x8a'),'attributes':['id',_0x5daa('0x2c'),'color'],'where':_0x3e11d5[_0x5daa('0x4e')][_0x5daa('0x8b')]?{'id':_0x3e11d5[_0x5daa('0x4e')][_0x5daa('0x8b')]}:undefined,'required':_0x3e11d5[_0x5daa('0x4e')]['tag']?!![]:![]}];}return db[_0x5daa('0x84')]['findAll'](_0x420ae2);})[_0x5daa('0x11')](function(_0x4c17bf){_0x35b5f4[_0x5daa('0x5f')]=_0x4c17bf;return _0x35b5f4;});}})[_0x5daa('0x11')](respondWithFilteredResult(_0x1b92ce,_0x420ae2))['catch'](handleError(_0x1b92ce,null));};exports[_0x5daa('0x8c')]=function addApplications(_0x45b572,_0x19e273){var _0x24a993=_0x45b572[_0x5daa('0x60')]['id'];var _0x4adff9=_0x45b572[_0x5daa('0x64')];var _0x11cbf9=0xc8;var _0x4bbb36=null;return db[_0x5daa('0x8d')][_0x5daa('0x8e')]({'isolationLevel':db[_0x5daa('0x8d')]['Transaction'][_0x5daa('0x8f')][_0x5daa('0x90')]},function(_0x59fd7a){return db[_0x5daa('0x49')][_0x5daa('0x6c')]({'where':{'id':_0x24a993},'transaction':_0x59fd7a})[_0x5daa('0x11')](function(_0x5788bf){if(_0x5788bf){return db[_0x5daa('0x91')][_0x5daa('0x27')]({'where':{'MailAccountId':_0x24a993},'transaction':_0x59fd7a})[_0x5daa('0x11')](function(){var _0x17d9d2=_[_0x5daa('0x48')](_0x4adff9,function(_0xe83e5b){_0xe83e5b[_0x5daa('0x6a')]=_0x24a993;return _0xe83e5b;});return db[_0x5daa('0x91')][_0x5daa('0x92')](_0x17d9d2,{'transaction':_0x59fd7a});});}else{_0x11cbf9=0x194;_0x4bbb36=[];}});})[_0x5daa('0x11')](function(){if(_0x11cbf9!==0x194){return db[_0x5daa('0x91')][_0x5daa('0x93')]({'where':{'MailAccountId':_0x24a993},'order':_0x5daa('0x94')})[_0x5daa('0x11')](function(_0x5eefcb){_0x4bbb36=_0x5eefcb;});}})[_0x5daa('0x1c')](function(_0x3aedc4){_0x11cbf9=0x1f4;logger[_0x5daa('0x18')](_0x3aedc4[_0x5daa('0x2b')]);if(_0x3aedc4['name']){delete _0x3aedc4[_0x5daa('0x2c')];}_0x4bbb36=_0x3aedc4;})[_0x5daa('0x95')](function(){if(_0x4bbb36===null){_0x19e273[_0x5daa('0x1d')](_0x11cbf9);}else{if(_0x11cbf9===0x1f4){_0x19e273[_0x5daa('0x1e')](_0x11cbf9)[_0x5daa('0x2d')](_0x4bbb36);}else{_0x19e273[_0x5daa('0x1e')](_0x11cbf9)[_0x5daa('0x20')](_0x4bbb36);}}});};exports[_0x5daa('0x96')]=function(_0x5a45b2,_0x2613e3){var _0x3fc73d={};var _0x124497={};var _0x253a7c;var _0x427271;return db[_0x5daa('0x49')][_0x5daa('0x6c')]({'where':{'id':_0x5a45b2[_0x5daa('0x60')]['id']}})['then'](handleEntityNotFound(_0x2613e3,null))['then'](function(_0x54be3a){if(_0x54be3a){_0x253a7c=_0x54be3a;_0x124497[_0x5daa('0x4d')]=_['keys'](db[_0x5daa('0x91')]['rawAttributes']);_0x124497[_0x5daa('0x4e')]=_[_0x5daa('0x4f')](_0x5a45b2['query']);_0x124497[_0x5daa('0x50')]=_[_0x5daa('0x51')](_0x124497[_0x5daa('0x4d')],_0x124497[_0x5daa('0x4e')]);_0x3fc73d[_0x5daa('0x52')]=_['intersection'](_0x124497[_0x5daa('0x4d')],qs[_0x5daa('0x53')](_0x5a45b2[_0x5daa('0x4e')][_0x5daa('0x53')]));_0x3fc73d[_0x5daa('0x52')]=_0x3fc73d[_0x5daa('0x52')][_0x5daa('0x61')]?_0x3fc73d[_0x5daa('0x52')]:_0x124497[_0x5daa('0x4d')];_0x3fc73d['order']=qs['sort'](_0x5a45b2[_0x5daa('0x4e')]['sort']);_0x3fc73d[_0x5daa('0x58')]=qs['filters'](_[_0x5daa('0x59')](_0x5a45b2[_0x5daa('0x4e')],_0x124497['filters']));if(_0x5a45b2[_0x5daa('0x4e')][_0x5daa('0x5a')]){_0x3fc73d['where']=_[_0x5daa('0x5b')](_0x3fc73d[_0x5daa('0x58')],{'$or':_['map'](_0x3fc73d['attributes'],function(_0x2b9660){var _0x335a85={};_0x335a85[_0x2b9660]={'$like':'%'+_0x5a45b2['query'][_0x5daa('0x5a')]+'%'};return _0x335a85;})});}_0x3fc73d=_[_0x5daa('0x5b')]({},_0x3fc73d,_0x5a45b2[_0x5daa('0x5c')]);return _0x253a7c[_0x5daa('0x96')](_0x3fc73d);}})[_0x5daa('0x11')](function(_0x3b4e08){if(_0x3b4e08){_0x427271=_0x3b4e08[_0x5daa('0x61')];if(!_0x5a45b2[_0x5daa('0x4e')][_0x5daa('0x54')](_0x5daa('0x55'))){_0x3fc73d[_0x5daa('0x21')]=qs['limit'](_0x5a45b2[_0x5daa('0x4e')][_0x5daa('0x21')]);_0x3fc73d[_0x5daa('0x24')]=qs['offset'](_0x5a45b2[_0x5daa('0x4e')][_0x5daa('0x24')]);}return _0x253a7c[_0x5daa('0x96')](_0x3fc73d);}})[_0x5daa('0x11')](function(_0x1b9b76){if(_0x1b9b76){return _0x1b9b76?{'count':_0x427271,'rows':_0x1b9b76}:null;}})[_0x5daa('0x11')](respondWithResult(_0x2613e3,null))['catch'](handleError(_0x2613e3,null));};exports['getMessages']=function(_0x184bb9,_0x58df2a){var _0x378b9f={'raw':!![],'where':{}};var _0x3dd012={};var _0xf1e56c={'count':0x0,'rows':[]};return db[_0x5daa('0x49')]['findOne']({'where':{'id':_0x184bb9[_0x5daa('0x60')]['id']}})['then'](handleEntityNotFound(_0x58df2a,null))['then'](function(_0x24bfcd){if(_0x24bfcd){_0x3dd012['model']=_['keys'](db[_0x5daa('0x97')]['rawAttributes']);_0x3dd012[_0x5daa('0x4e')]=_[_0x5daa('0x4f')](_0x184bb9[_0x5daa('0x4e')]);_0x3dd012[_0x5daa('0x50')]=_[_0x5daa('0x51')](_0x3dd012[_0x5daa('0x4d')],_0x3dd012[_0x5daa('0x4e')]);_0x378b9f['attributes']=_[_0x5daa('0x51')](_0x3dd012[_0x5daa('0x4d')],qs[_0x5daa('0x53')](_0x184bb9[_0x5daa('0x4e')][_0x5daa('0x53')]));_0x378b9f[_0x5daa('0x52')]=_0x378b9f['attributes'][_0x5daa('0x61')]?_0x378b9f[_0x5daa('0x52')]:_0x3dd012[_0x5daa('0x4d')];if(!_0x184bb9[_0x5daa('0x4e')]['hasOwnProperty'](_0x5daa('0x55'))){_0x378b9f[_0x5daa('0x21')]=qs[_0x5daa('0x21')](_0x184bb9[_0x5daa('0x4e')]['limit']);_0x378b9f[_0x5daa('0x24')]=qs[_0x5daa('0x24')](_0x184bb9['query'][_0x5daa('0x24')]);}_0x378b9f[_0x5daa('0x56')]=qs['sort'](_0x184bb9['query'][_0x5daa('0x57')]);_0x378b9f[_0x5daa('0x58')]=qs[_0x5daa('0x50')](_[_0x5daa('0x59')](_0x184bb9['query'],_0x3dd012[_0x5daa('0x50')]));_0x378b9f['where'][_0x5daa('0x6a')]=_0x24bfcd['id'];if(_0x184bb9['query'][_0x5daa('0x5a')]){_0x378b9f[_0x5daa('0x58')]=_[_0x5daa('0x5b')](_0x378b9f[_0x5daa('0x58')],{'$or':_[_0x5daa('0x48')](_0x378b9f[_0x5daa('0x52')],function(_0xab79d8){var _0x2320ea={};_0x2320ea[_0xab79d8]={'$like':'%'+_0x184bb9[_0x5daa('0x4e')][_0x5daa('0x5a')]+'%'};return _0x2320ea;})});}if(_0x184bb9['query'][_0x5daa('0x98')]){var _0x209949=_0x184bb9[_0x5daa('0x4e')][_0x5daa('0x98')][_0x5daa('0x99')](',');var _0x355c52={};_0x355c52[_0x209949[0x0]]={'$gte':moment(_0x209949[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x378b9f[_0x5daa('0x58')]=_[_0x5daa('0x5b')](_0x378b9f[_0x5daa('0x58')],_0x355c52);}_0x378b9f=_[_0x5daa('0x5b')]({},_0x378b9f,_0x184bb9[_0x5daa('0x5c')]);return db[_0x5daa('0x97')][_0x5daa('0x23')]({'where':_0x378b9f[_0x5daa('0x58')]})['then'](function(_0x34ad0e){_0xf1e56c[_0x5daa('0x23')]=_0x34ad0e;if(_0x184bb9[_0x5daa('0x4e')][_0x5daa('0x62')]){_0x378b9f[_0x5daa('0x5d')]=[{'all':!![]}];}return db['MailMessage'][_0x5daa('0x5e')](_0x378b9f);})['then'](function(_0x12da1e){if(_0x184bb9[_0x5daa('0x4e')][_0x5daa('0x9a')]===_0x5daa('0x9b')){for(var _0x124356=0x0;_0x124356<_0x12da1e['length'];_0x124356++){_0x12da1e[_0x124356][_0x5daa('0x64')]=juice(_0x12da1e[_0x124356][_0x5daa('0x64')]);}}_0xf1e56c[_0x5daa('0x5f')]=_0x12da1e;return _0xf1e56c;});}})['then'](respondWithFilteredResult(_0x58df2a,_0x378b9f))[_0x5daa('0x1c')](handleError(_0x58df2a,null));};exports['send']=function(_0x5026c6,_0x14fa1b){var _0x5e6505,_0x1548f2={},_0x50ba55;if(_0x5026c6[_0x5daa('0x64')]['to']){_0x50ba55=_0x5026c6[_0x5daa('0x64')]['to']['split'](',')[0x0];}return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x5026c6[_0x5daa('0x60')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x5daa('0x87')],'as':_0x5daa('0x9c'),'where':{'email':_0x50ba55},'limit':0x1,'order':[[_0x5daa('0x9d'),_0x5daa('0x9e')]]}]},{'model':db['MailServerOut'],'as':_0x5daa('0x41'),'raw':!![],'include':[{'model':db[_0x5daa('0x9f')],'as':_0x5daa('0x9f'),'raw':!![]}]}]})[_0x5daa('0x11')](handleEntityNotFound(_0x14fa1b,null))[_0x5daa('0x11')](function(_0xd2f91f){if(!_0xd2f91f)return;_0x5e6505=_0xd2f91f;if(!_0xd2f91f[_0x5daa('0x41')])throw new Error('Smtp\x20configuration\x20not\x20found');if(_[_0x5daa('0x77')](_0x5026c6[_0x5daa('0x64')][_0x5daa('0xa0')])){_0x5026c6[_0x5daa('0x64')]['from']=util[_0x5daa('0xa1')](_0x5daa('0xa2'),_0xd2f91f['name'],_0xd2f91f[_0x5daa('0x75')]||_0xd2f91f[_0x5daa('0x41')][_0x5daa('0x36')]);}if(_0x5026c6[_0x5daa('0x64')][_0x5daa('0xa3')]&&_0x5026c6[_0x5daa('0x64')][_0x5daa('0xa3')][_0x5daa('0x61')]){for(var _0x169fbf=0x0;_0x169fbf<_0x5026c6[_0x5daa('0x64')][_0x5daa('0xa3')][_0x5daa('0x61')];_0x169fbf+=0x1){_0x5026c6[_0x5daa('0x64')]['attachments'][_0x169fbf]={'filename':_0x5026c6[_0x5daa('0x64')][_0x5daa('0xa3')][_0x169fbf]['name'],'path':path['join'](config['root'],'server/files/attachments',_0x5026c6[_0x5daa('0x64')][_0x5daa('0xa3')][_0x169fbf][_0x5daa('0xa4')])};}}var _0x3f58e7=_0xd2f91f[_0x5daa('0xa5')]();return respondWithRpcPromise(_0x5daa('0xa6'),_0x5daa('0xa7'),{'account':_0x3f58e7,'message':_0x5026c6[_0x5daa('0x64')]});})[_0x5daa('0x11')](function(_0x3d2623){if(!_0x3d2623)return;_0x1548f2=_0x3d2623;if(!_0x5e6505[_0x5daa('0xa8')])throw new Error(_0x5daa('0xa9'));if(_0x5e6505[_0x5daa('0xa8')][_0x5daa('0x9c')]['length'])return _0x5e6505[_0x5daa('0xa8')]['Contacts'][0x0];return db[_0x5daa('0x87')][_0x5daa('0x70')](_[_0x5daa('0xa')](_0x5026c6[_0x5daa('0x64')],{'firstName':_0x5026c6['body']['to'],'email':_0x5026c6[_0x5daa('0x64')]['to'],'phone':_0x5026c6['body']['to'],'ListId':_0x5e6505[_0x5daa('0x76')]}));})[_0x5daa('0x11')](function(_0x5ed143){if(!_0x5ed143)return;var _0x461c1a={'UserId':_0x5026c6['user']['id'],'ContactId':_0x5ed143['id'],'MailAccountId':_0x5e6505['id'],'inReplyTo':_0x1548f2[_0x5daa('0xaa')],'to':_0x5026c6['body']['from'],'cc':_0x5026c6[_0x5daa('0x64')]['cc'],'subject':_0x5026c6[_0x5daa('0x64')]['subject'],'attach':_0x5026c6[_0x5daa('0x64')][_0x5daa('0xab')],'firstMsgDirection':_0x5daa('0xac'),'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0x5daa('0xac'),'Messages':[_[_0x5daa('0x5b')](_0x5026c6[_0x5daa('0x64')],{'messageId':_0x1548f2['messageId'],'sentAt':moment()['format'](_0x5daa('0xad')),'read':!![],'MailAccountId':_0x5e6505['id'],'UserId':_0x5026c6[_0x5daa('0x36')]['id'],'ContactId':_0x5ed143['id']})]};if(_0x5026c6[_0x5daa('0x64')]['Interaction']){_0x461c1a=_[_0x5daa('0x5b')](_0x461c1a,_0x5026c6[_0x5daa('0x64')][_0x5daa('0xae')]);}return db['MailInteraction'][_0x5daa('0x70')](_0x461c1a,{'include':[{'model':db[_0x5daa('0x97')],'as':_0x5daa('0xaf')}]});})['then'](respondWithResult(_0x14fa1b,null))[_0x5daa('0x1c')](handleError(_0x14fa1b,null));};exports[_0x5daa('0xb0')]=function(_0x8d2eb7,_0x2295e0){return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x8d2eb7[_0x5daa('0x60')]['id']},'include':[{'model':db['MailServerOut'],'as':_0x5daa('0x41'),'raw':!![],'include':[{'model':db[_0x5daa('0x9f')],'as':_0x5daa('0x9f'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x2295e0,null))['then'](function(_0x4d1ed7){if(!_0x4d1ed7[_0x5daa('0x41')])return;var _0x46e41b=_0x4d1ed7[_0x5daa('0xa5')]();return respondWithRpcPromise(_0x5daa('0xb1'),_0x5daa('0xb0'),{'account':_0x46e41b});})['then'](respondWithResult(_0x2295e0,null))[_0x5daa('0x1c')](handleError(_0x2295e0,null));};exports[_0x5daa('0x27')]=function(_0x1f5c56,_0x47f52d){return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x1f5c56[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x47f52d,null))[_0x5daa('0x11')](function(_0x18b93a){if(_0x18b93a&&_0x18b93a[_0x5daa('0x3f')]){throw new db[(_0x5daa('0xb2'))][(_0x5daa('0xb3'))](_0x5daa('0xb4'));}return _0x18b93a;})[_0x5daa('0x11')](removeEntity(_0x47f52d,null))['catch'](handleError(_0x47f52d,null));};exports[_0x5daa('0xb5')]=function(_0x1f01ac,_0x48f96b){return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x1f01ac[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x48f96b,null))[_0x5daa('0x11')](function(_0x56cbdc){if(_0x56cbdc){return _0x56cbdc[_0x5daa('0xb5')](_0x1f01ac['body'][_0x5daa('0x6e')],_[_0x5daa('0x85')](_0x1f01ac['body'],['ids','id'])||{})[_0x5daa('0xb6')](function(_0x197b1a){for(var _0x4334af=0x0;_0x4334af<_0x1f01ac[_0x5daa('0x64')][_0x5daa('0x6e')]['length'];_0x4334af+=0x1){socket[_0x5daa('0xb7')]('userMailAccount:save',{'UserId':Number(_0x1f01ac[_0x5daa('0x64')]['ids'][_0x4334af]),'MailAccountId':Number(_0x1f01ac['params']['id'])});}return _0x197b1a;});}})[_0x5daa('0x11')](respondWithResult(_0x48f96b,null))['catch'](handleError(_0x48f96b,null));};exports['removeAgents']=function(_0x40878e,_0x3655b1){return db[_0x5daa('0x49')][_0x5daa('0x63')]({'where':{'id':_0x40878e['params']['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x3655b1,null))[_0x5daa('0x11')](function(_0x4f45aa){if(_0x4f45aa){return _0x4f45aa[_0x5daa('0xb8')](_0x40878e[_0x5daa('0x4e')]['ids'])[_0x5daa('0x11')](function(){if(_[_0x5daa('0xb9')](_0x40878e[_0x5daa('0x4e')][_0x5daa('0x6e')])){for(var _0x25c65c=0x0;_0x25c65c<_0x40878e[_0x5daa('0x4e')][_0x5daa('0x6e')][_0x5daa('0x61')];_0x25c65c+=0x1){socket['emit']('userMailAccount:remove',{'UserId':Number(_0x40878e[_0x5daa('0x4e')][_0x5daa('0x6e')][_0x25c65c]),'MailAccountId':Number(_0x40878e['params']['id'])});}}else{socket[_0x5daa('0xb7')](_0x5daa('0xba'),{'UserId':Number(_0x40878e['query'][_0x5daa('0x6e')]),'MailAccountId':Number(_0x40878e[_0x5daa('0x60')]['id'])});}});}})['then'](respondWithStatusCode(_0x3655b1,null))[_0x5daa('0x1c')](handleError(_0x3655b1,null));};exports[_0x5daa('0xbb')]=function(_0x14824c,_0x57c3ac){var _0x11e2bf={};var _0x585898={};var _0x3d47df;var _0x348718;return db[_0x5daa('0x49')][_0x5daa('0x6c')]({'where':{'id':_0x14824c[_0x5daa('0x60')]['id']}})[_0x5daa('0x11')](handleEntityNotFound(_0x57c3ac,null))[_0x5daa('0x11')](function(_0x4e4ebf){if(_0x4e4ebf){_0x3d47df=_0x4e4ebf;_0x585898[_0x5daa('0x4d')]=_[_0x5daa('0x4f')](db[_0x5daa('0xbc')][_0x5daa('0x4a')]);_0x585898[_0x5daa('0x4e')]=_[_0x5daa('0x4f')](_0x14824c[_0x5daa('0x4e')]);_0x585898[_0x5daa('0x50')]=_[_0x5daa('0x51')](_0x585898[_0x5daa('0x4d')],_0x585898[_0x5daa('0x4e')]);_0x11e2bf[_0x5daa('0x52')]=_[_0x5daa('0x51')](_0x585898['model'],qs[_0x5daa('0x53')](_0x14824c['query'][_0x5daa('0x53')]));_0x11e2bf[_0x5daa('0x52')]=_0x11e2bf['attributes'][_0x5daa('0x61')]?_0x11e2bf['attributes']:_0x585898[_0x5daa('0x4d')];_0x11e2bf[_0x5daa('0x56')]=qs[_0x5daa('0x57')](_0x14824c[_0x5daa('0x4e')]['sort']);_0x11e2bf['where']=qs[_0x5daa('0x50')](_[_0x5daa('0x59')](_0x14824c[_0x5daa('0x4e')],_0x585898[_0x5daa('0x50')]));if(_0x14824c[_0x5daa('0x4e')][_0x5daa('0x5a')]){_0x11e2bf['where']=_[_0x5daa('0x5b')](_0x11e2bf['where'],{'$or':_[_0x5daa('0x48')](_0x11e2bf['attributes'],function(_0x36263c){var _0x3bd4cd={};_0x3bd4cd[_0x36263c]={'$like':'%'+_0x14824c[_0x5daa('0x4e')][_0x5daa('0x5a')]+'%'};return _0x3bd4cd;})});}_0x11e2bf=_['merge']({},_0x11e2bf,_0x14824c[_0x5daa('0x5c')]);return _0x3d47df[_0x5daa('0xbb')](_0x11e2bf);}})['then'](function(_0x7e4a06){if(_0x7e4a06){_0x348718=_0x7e4a06[_0x5daa('0x61')];if(!_0x14824c[_0x5daa('0x4e')][_0x5daa('0x54')]('nolimit')){_0x11e2bf[_0x5daa('0x21')]=qs[_0x5daa('0x21')](_0x14824c['query']['limit']);_0x11e2bf['offset']=qs[_0x5daa('0x24')](_0x14824c[_0x5daa('0x4e')][_0x5daa('0x24')]);}return _0x3d47df['getAgents'](_0x11e2bf);}})[_0x5daa('0x11')](function(_0x2738b8){if(_0x2738b8){return _0x2738b8?{'count':_0x348718,'rows':_0x2738b8}:null;}})['then'](respondWithResult(_0x57c3ac,null))[_0x5daa('0x1c')](handleError(_0x57c3ac,null));};
\ No newline at end of file
index 27d0959..8babdb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51f=['exports','events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x8f3d07,_0x19b171){var _0x230432=function(_0x109858){while(--_0x109858){_0x8f3d07['push'](_0x8f3d07['shift']());}};_0x230432(++_0x19b171);}(_0xf51f,0x19f));var _0xff51=function(_0x38b14f,_0xd08fa8){_0x38b14f=_0x38b14f-0x0;var _0x22a324=_0xf51f[_0x38b14f];return _0x22a324;};'use strict';var EventEmitter=require(_0xff51('0x0'));var MailAccount=require(_0xff51('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xff51('0x2')](0x0);var events={'afterCreate':_0xff51('0x3'),'afterUpdate':'update','afterDestroy':_0xff51('0x4')};function emitEvent(_0x136229){return function(_0x1a8ecb,_0x1b0cb9,_0x43dd1f){MailAccountEvents[_0xff51('0x5')](_0x136229+':'+_0x1a8ecb['id'],_0x1a8ecb);MailAccountEvents[_0xff51('0x5')](_0x136229,_0x1a8ecb);_0x43dd1f(null);};}for(var e in events){if(events[_0xff51('0x6')](e)){var event=events[e];MailAccount[_0xff51('0x7')](e,emitEvent(event));}}module[_0xff51('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0x40f3=['MailAccount','save','update','emit','hook','exports','../../mysqldb'];(function(_0x423c33,_0x42ec5e){var _0x1e2f06=function(_0x4585cb){while(--_0x4585cb){_0x423c33['push'](_0x423c33['shift']());}};_0x1e2f06(++_0x42ec5e);}(_0x40f3,0x8b));var _0x340f=function(_0x585d81,_0xf6d74f){_0x585d81=_0x585d81-0x0;var _0x1aca0d=_0x40f3[_0x585d81];return _0x1aca0d;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0x340f('0x0'))['db'][_0x340f('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x340f('0x2'),'afterUpdate':_0x340f('0x3'),'afterDestroy':'remove'};function emitEvent(_0x541841){return function(_0x42b102,_0x3380ba,_0x5b331a){MailAccountEvents[_0x340f('0x4')](_0x541841+':'+_0x42b102['id'],_0x42b102);MailAccountEvents['emit'](_0x541841,_0x42b102);_0x5b331a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0x340f('0x5')](e,emitEvent(event));}}module[_0x340f('0x6')]=MailAccountEvents;
\ No newline at end of file
index 80578a4..04ad1dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31b3=['secure','authentication','Cloud\x20Provider\x20configuration\x20not\x20found','auth','OAuth2','user','CloudProvider','data5','pass','./mailAccount.attributes','define','MailAccount','custom','service','provider','host','Smtp','port'];(function(_0x4c00c2,_0x1554df){var _0x556f26=function(_0x1c4b0a){while(--_0x1c4b0a){_0x4c00c2['push'](_0x4c00c2['shift']());}};_0x556f26(++_0x1554df);}(_0x31b3,0xbd));var _0x331b=function(_0x120bc0,_0x40e780){_0x120bc0=_0x120bc0-0x0;var _0x49d52a=_0x31b3[_0x120bc0];return _0x49d52a;};'use strict';var attributes=require(_0x331b('0x0'));module['exports']=function(_0x2b3da0){return _0x2b3da0[_0x331b('0x1')](_0x331b('0x2'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x171706=this;var _0x64f494={'id':_0x171706['id'],'tls':{'rejectUnauthorized':![]}};if(_0x171706['provider']!==_0x331b('0x3')){_0x64f494[_0x331b('0x4')]=_0x171706[_0x331b('0x5')];}else{_0x64f494[_0x331b('0x6')]=_0x171706[_0x331b('0x7')]['host'];_0x64f494[_0x331b('0x8')]=_0x171706['Smtp'][_0x331b('0x8')];_0x64f494[_0x331b('0x9')]=_0x171706['Smtp'][_0x331b('0x9')];}if(_0x171706[_0x331b('0x7')][_0x331b('0xa')]){if(_0x171706[_0x331b('0x7')]['modernAuthentication']){if(!_0x171706[_0x331b('0x7')]['CloudProvider'])throw new Error(_0x331b('0xb'));_0x64f494[_0x331b('0xc')]={'type':_0x331b('0xd'),'user':_0x171706[_0x331b('0x7')][_0x331b('0xe')],'accessToken':_0x171706['Smtp'][_0x331b('0xf')][_0x331b('0x10')]};}else{_0x64f494[_0x331b('0xc')]={'user':_0x171706[_0x331b('0x7')][_0x331b('0xe')],'pass':_0x171706[_0x331b('0x7')][_0x331b('0x11')]};}}return _0x64f494;}}});};
\ No newline at end of file
+var _0xcf94=['OAuth2','user','./mailAccount.attributes','MailAccount','provider','host','Smtp','port','secure','authentication','modernAuthentication','CloudProvider','auth'];(function(_0x4528cf,_0x3b1892){var _0x4bca53=function(_0x47d77b){while(--_0x47d77b){_0x4528cf['push'](_0x4528cf['shift']());}};_0x4bca53(++_0x3b1892);}(_0xcf94,0x120));var _0x4cf9=function(_0x16a607,_0xeb8320){_0x16a607=_0x16a607-0x0;var _0x38422a=_0xcf94[_0x16a607];return _0x38422a;};'use strict';var attributes=require(_0x4cf9('0x0'));module['exports']=function(_0x4f7629){return _0x4f7629['define'](_0x4cf9('0x1'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x3caf95=this;var _0x280b7d={'id':_0x3caf95['id'],'tls':{'rejectUnauthorized':![]}};if(_0x3caf95[_0x4cf9('0x2')]!=='custom'){_0x280b7d['service']=_0x3caf95[_0x4cf9('0x2')];}else{_0x280b7d[_0x4cf9('0x3')]=_0x3caf95[_0x4cf9('0x4')][_0x4cf9('0x3')];_0x280b7d[_0x4cf9('0x5')]=_0x3caf95[_0x4cf9('0x4')]['port'];_0x280b7d[_0x4cf9('0x6')]=_0x3caf95['Smtp']['secure'];}if(_0x3caf95[_0x4cf9('0x4')][_0x4cf9('0x7')]){if(_0x3caf95[_0x4cf9('0x4')][_0x4cf9('0x8')]){if(!_0x3caf95[_0x4cf9('0x4')][_0x4cf9('0x9')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x280b7d[_0x4cf9('0xa')]={'type':_0x4cf9('0xb'),'user':_0x3caf95[_0x4cf9('0x4')][_0x4cf9('0xc')],'accessToken':_0x3caf95[_0x4cf9('0x4')][_0x4cf9('0x9')]['data5']};}else{_0x280b7d[_0x4cf9('0xa')]={'user':_0x3caf95[_0x4cf9('0x4')][_0x4cf9('0xc')],'pass':_0x3caf95[_0x4cf9('0x4')]['pass']};}}return _0x280b7d;}}});};
\ No newline at end of file
index bbcceca..4a134a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa37=['Messages','inReplyTo','MailInteraction','Contact\x20not\x20found','spread','update','interaction','created','attachments','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','waitForTheAssignedAgent','MailQueue','queueId','queue','waitForTheAssignedQueue','*,*,*,*','Start','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./mailAccount.socket','request','info','request\x20sent','debug','stringify','error','MailAccount,\x20%s,\x20%s','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowMailAccount','find','smtp','setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','get','Applications','List','smtpOptions','applications','list','priority','asc','autoclose','length','close','create','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailMessage'];(function(_0x356851,_0x531c61){var _0xf07858=function(_0x3b4d18){while(--_0x3b4d18){_0x356851['push'](_0x356851['shift']());}};_0xf07858(++_0x531c61);}(_0xaa37,0x1d3));var _0x7aa3=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0xaa37[_0x24061a];return _0x82054e;};'use strict';var _=require(_0x7aa3('0x0'));var moment=require(_0x7aa3('0x1'));var BPromise=require(_0x7aa3('0x2'));var rs=require(_0x7aa3('0x3'));var Redis=require('ioredis');var db=require(_0x7aa3('0x4'))['db'];var logger=require(_0x7aa3('0x5'))(_0x7aa3('0x6'));var config=require(_0x7aa3('0x7'));var jayson=require(_0x7aa3('0x8'));var client=jayson[_0x7aa3('0x9')][_0x7aa3('0xa')]({'port':0x232c});config['redis']=_[_0x7aa3('0xb')](config[_0x7aa3('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x7aa3('0xd'))(new Redis(config[_0x7aa3('0xc')]));require(_0x7aa3('0xe'))['register'](socket);function respondWithRpcPromise(_0x36e783,_0xd0fe4,_0x321fd3){return new BPromise(function(_0x1725d1,_0x10aa91){return client[_0x7aa3('0xf')](_0x36e783,_0x321fd3)['then'](function(_0x4c8ac8){logger[_0x7aa3('0x10')]('MailAccount,\x20%s,\x20%s',_0xd0fe4,_0x7aa3('0x11'));logger[_0x7aa3('0x12')]('MailAccount,\x20%s,\x20%s,\x20%s',_0xd0fe4,_0x7aa3('0x11'),JSON[_0x7aa3('0x13')](_0x4c8ac8));if(_0x4c8ac8['error']){if(_0x4c8ac8['error']['code']===0x1f4){logger[_0x7aa3('0x14')](_0x7aa3('0x15'),_0xd0fe4,_0x4c8ac8[_0x7aa3('0x14')][_0x7aa3('0x16')]);return _0x10aa91(_0x4c8ac8[_0x7aa3('0x14')]['message']);}logger[_0x7aa3('0x14')](_0x7aa3('0x15'),_0xd0fe4,_0x4c8ac8[_0x7aa3('0x14')][_0x7aa3('0x16')]);return _0x1725d1(_0x4c8ac8['error']['message']);}else{logger[_0x7aa3('0x10')]('MailAccount,\x20%s,\x20%s',_0xd0fe4,_0x7aa3('0x11'));_0x1725d1(_0x4c8ac8[_0x7aa3('0x17')]['message']);}})[_0x7aa3('0x18')](function(_0xe5e683){logger[_0x7aa3('0x14')](_0x7aa3('0x15'),_0xd0fe4,_0xe5e683);_0x10aa91(_0xe5e683);});});}exports[_0x7aa3('0x19')]=function(_0x5994b6){var _0x22e93b=this;return new Promise(function(_0x266529,_0x5defea){return db[_0x7aa3('0x1a')][_0x7aa3('0x1b')]({'raw':_0x5994b6[_0x7aa3('0x1c')]?_0x5994b6['options'][_0x7aa3('0x1d')]===undefined?!![]:![]:!![],'where':_0x5994b6[_0x7aa3('0x1c')]?_0x5994b6[_0x7aa3('0x1c')][_0x7aa3('0x1e')]||null:null,'attributes':_0x5994b6[_0x7aa3('0x1c')]?_0x5994b6['options'][_0x7aa3('0x1f')]||null:null,'limit':_0x5994b6[_0x7aa3('0x1c')]?_0x5994b6[_0x7aa3('0x1c')][_0x7aa3('0x20')]||null:null,'include':_0x5994b6[_0x7aa3('0x1c')]?_0x5994b6[_0x7aa3('0x1c')][_0x7aa3('0x21')]?_[_0x7aa3('0x22')](_0x5994b6[_0x7aa3('0x1c')][_0x7aa3('0x21')],function(_0x44377a){return{'model':db[_0x44377a[_0x7aa3('0x23')]],'as':_0x44377a['as'],'attributes':_0x44377a[_0x7aa3('0x1f')],'include':_0x44377a['include']?_[_0x7aa3('0x22')](_0x44377a[_0x7aa3('0x21')],function(_0x3c1422){return{'model':db[_0x3c1422[_0x7aa3('0x23')]],'as':_0x3c1422['as'],'attributes':_0x3c1422[_0x7aa3('0x1f')],'include':_0x3c1422[_0x7aa3('0x21')]?_['map'](_0x3c1422[_0x7aa3('0x21')],function(_0x183567){return{'model':db[_0x183567[_0x7aa3('0x23')]],'as':_0x183567['as'],'attributes':_0x183567['attributes']};}):[]};}):[]};}):[]:[]})[_0x7aa3('0x24')](function(_0x25c611){logger['info'](_0x7aa3('0x19'),_0x5994b6);logger[_0x7aa3('0x12')](_0x7aa3('0x19'),_0x5994b6,JSON[_0x7aa3('0x13')](_0x25c611));_0x266529(_0x25c611);})[_0x7aa3('0x18')](function(_0x24a38d){logger[_0x7aa3('0x14')](_0x7aa3('0x19'),_0x24a38d[_0x7aa3('0x16')],_0x5994b6);_0x5defea(_0x22e93b[_0x7aa3('0x14')](0x1f4,_0x24a38d[_0x7aa3('0x16')]));});});};exports[_0x7aa3('0x25')]=function(_0xb8d253){var _0xc3976c=this;return new Promise(function(_0x260caf,_0x1e5b7b){return db[_0x7aa3('0x1a')][_0x7aa3('0x26')]({'raw':_0xb8d253[_0x7aa3('0x1c')]?_0xb8d253[_0x7aa3('0x1c')][_0x7aa3('0x1d')]===undefined?!![]:![]:!![],'where':_0xb8d253['options']?_0xb8d253[_0x7aa3('0x1c')][_0x7aa3('0x1e')]||null:null,'attributes':_0xb8d253[_0x7aa3('0x1c')]?_0xb8d253[_0x7aa3('0x1c')][_0x7aa3('0x1f')]||null:null,'include':_0xb8d253[_0x7aa3('0x1c')]?_0xb8d253[_0x7aa3('0x1c')][_0x7aa3('0x21')]?_[_0x7aa3('0x22')](_0xb8d253[_0x7aa3('0x1c')][_0x7aa3('0x21')],function(_0x589abc){return{'model':db[_0x589abc[_0x7aa3('0x23')]],'as':_0x589abc['as'],'attributes':_0x589abc[_0x7aa3('0x1f')],'include':_0x589abc[_0x7aa3('0x21')]?_[_0x7aa3('0x22')](_0x589abc[_0x7aa3('0x21')],function(_0x1029eb){return{'model':db[_0x1029eb[_0x7aa3('0x23')]],'as':_0x1029eb['as'],'attributes':_0x1029eb[_0x7aa3('0x1f')],'include':_0x1029eb[_0x7aa3('0x21')]?_[_0x7aa3('0x22')](_0x1029eb[_0x7aa3('0x21')],function(_0x287572){return{'model':db[_0x287572[_0x7aa3('0x23')]],'as':_0x287572['as'],'attributes':_0x287572[_0x7aa3('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1effcb){if(_0xb8d253[_0x7aa3('0x1c')][_0x7aa3('0x27')]===!![])_0x1effcb[_0x7aa3('0x28')]('smtpOptions',_0x1effcb[_0x7aa3('0x29')]());logger['info'](_0x7aa3('0x25'),_0xb8d253);logger[_0x7aa3('0x12')](_0x7aa3('0x25'),_0xb8d253,JSON[_0x7aa3('0x13')](_0x1effcb));_0x260caf(_0x1effcb);})[_0x7aa3('0x18')](function(_0x20ae76){logger[_0x7aa3('0x14')](_0x7aa3('0x25'),_0x20ae76[_0x7aa3('0x16')],_0xb8d253);_0x1e5b7b(_0xc3976c[_0x7aa3('0x14')](0x1f4,_0x20ae76['message']));});});};exports[_0x7aa3('0x2a')]=function(_0x1062f4){var _0x119098=this;return new Promise(function(_0x11111a,_0x3d41bf){var _0x143d77={'body':_0x1062f4[_0x7aa3('0x2b')],'channel':_0x7aa3('0x2c')};var _0x5202ed=_[_0x7aa3('0x2d')](_[_0x7aa3('0x2e')](db[_0x7aa3('0x2f')][_0x7aa3('0x30')]),[_0x7aa3('0x31'),'updatedAt',_0x7aa3('0x32'),_0x7aa3('0x33')]);var _0x4999d5=![];if(_0x1062f4[_0x7aa3('0x2b')]['id']){delete _0x1062f4[_0x7aa3('0x2b')]['id'];}if(_['isNil'](_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x34')])){return _0x3d41bf(_0x119098[_0x7aa3('0x14')](0x1f4,_0x7aa3('0x35')));}if(_['isNil'](_0x1062f4['body'][_0x7aa3('0x2b')])||_0x1062f4['body'][_0x7aa3('0x2b')]===''){return _0x3d41bf(_0x119098['error'](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x7aa3('0x36')](_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x37')])){return _0x3d41bf(_0x119098[_0x7aa3('0x14')](0x1f4,_0x7aa3('0x38')+_0x5202ed));}if(!_['includes'](_0x5202ed,_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x37')])){return _0x3d41bf(_0x119098['error'](0x1f4,_0x7aa3('0x39')+_0x5202ed));}var _0xcf97e0={};_0xcf97e0[_0x1062f4[_0x7aa3('0x2b')]['mapKey']]=_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x34')];return db['MailAccount'][_0x7aa3('0x26')]({'where':{'id':_0x1062f4[_0x7aa3('0x3a')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x7aa3('0x2f')],'as':_0x7aa3('0x3b'),'where':_0xcf97e0,'limit':0x1,'order':[[_0x7aa3('0x3c'),_0x7aa3('0x3d')]]}]},{'model':db['MailApplication'],'as':'Applications'},{'model':db[_0x7aa3('0x3e')],'as':_0x7aa3('0x3f'),'include':[{'model':db[_0x7aa3('0x40')],'as':_0x7aa3('0x40')}]}]})['then'](function(_0x49b1e2){if(_0x49b1e2&&_0x49b1e2['List']){var _0x3e9d63=_0x49b1e2[_0x7aa3('0x41')]({'plain':!![]});_0x143d77[_0x7aa3('0x3a')]=_['omit'](_0x3e9d63,[_0x7aa3('0x42'),_0x7aa3('0x43')]);_0x143d77[_0x7aa3('0x3a')][_0x7aa3('0x44')]=_0x49b1e2[_0x7aa3('0x29')]();_0x143d77[_0x7aa3('0x45')]=_0x3e9d63['Applications'];_0x143d77[_0x7aa3('0x46')]=_0x3e9d63['List'];_0x143d77['applications']=_['orderBy'](_0x143d77['applications'],[_0x7aa3('0x47')],[_0x7aa3('0x48')]);if(_0x143d77['account']&&_0x143d77[_0x7aa3('0x3a')][_0x7aa3('0x49')]){_0x143d77[_0x7aa3('0x45')]['push']({'id':0x0,'priority':_0x143d77['applications'][_0x7aa3('0x4a')]+0x1,'app':_0x7aa3('0x4b'),'appdata':_0x7aa3('0x49'),'interval':'*,*,*,*'});}if(_0x143d77['account']['Applications']){delete _0x143d77['account'][_0x7aa3('0x42')];}if(_0x143d77[_0x7aa3('0x3a')][_0x7aa3('0x43')]){delete _0x143d77[_0x7aa3('0x3a')]['List'];}if(_0x3e9d63[_0x7aa3('0x43')][_0x7aa3('0x3b')][_0x7aa3('0x4a')]){return _0x3e9d63[_0x7aa3('0x43')][_0x7aa3('0x3b')][0x0];}var _0x572f97=_[_0x7aa3('0xb')](_0x1062f4[_0x7aa3('0x2b')],{'firstName':_0x1062f4['body'][_0x7aa3('0x34')],'ListId':_0x3e9d63[_0x7aa3('0x33')]});_0x572f97[_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x37')]]=_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x34')];return db[_0x7aa3('0x2f')][_0x7aa3('0x4c')](_0x572f97);}else{throw new Error('List\x20not\x20found');}})[_0x7aa3('0x24')](function(_0xcc67fd){_0x143d77['contact']=_0xcc67fd;if(_0xcc67fd){if(!_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x4d')]){_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x4d')]=rs[_0x7aa3('0x4e')]()+'\x20'+_0x1062f4[_0x7aa3('0x2b')]['message'][_0x7aa3('0x34')];}var _0x13eabe={'ContactId':_0xcc67fd['id'],'MailAccountId':_0x1062f4[_0x7aa3('0x3a')]['id'],'inReplyTo':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x4d')],'to':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x34')],'cc':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')]['cc'],'subject':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x4f')],'attach':_0x1062f4['body']['message'][_0x7aa3('0x50')],'lastMsgAt':moment()['format'](_0x7aa3('0x51')),'lastMsgDirection':'in'};return db['MailInteraction']['find']({'where':{'closed':![],'MailAccountId':_0x1062f4['account']['id']},'include':[{'model':db[_0x7aa3('0x52')],'as':_0x7aa3('0x53'),'attributes':[_0x7aa3('0x4d')],'where':{'messageId':_0x1062f4[_0x7aa3('0x2b')]['message'][_0x7aa3('0x54')]}}]})['then'](function(_0x546b13){if(_0x546b13){return[_0x546b13,![]];}return db[_0x7aa3('0x55')][_0x7aa3('0x4c')](_0x13eabe)[_0x7aa3('0x24')](function(_0xcb6180){return[_0xcb6180,!![]];});});}else{throw new Error(_0x7aa3('0x56'));}})[_0x7aa3('0x57')](function(_0x44d400,_0x16724c){if(_0x44d400){_0x4999d5=_0x16724c;if(!_0x16724c){return _0x44d400[_0x7aa3('0x58')]({'inReplyTo':_0x1062f4['body'][_0x7aa3('0x16')][_0x7aa3('0x4d')],'to':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x34')],'cc':_0x1062f4['body'][_0x7aa3('0x16')]['cc'],'subject':_0x1062f4['body']['message'][_0x7aa3('0x4f')],'attach':_0x44d400[_0x7aa3('0x50')]?_0x44d400['attach']:_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x50')],'substatus':null,'substatusAt':moment()['format'](_0x7aa3('0x51')),'lastMsgAt':moment()['format'](_0x7aa3('0x51')),'lastMsgDirection':'in'});}else{return _0x44d400;}}})[_0x7aa3('0x24')](function(_0x48d2f0){_0x143d77[_0x7aa3('0x59')]=_0x48d2f0[_0x7aa3('0x41')]({'plain':!![]});_0x143d77[_0x7aa3('0x59')][_0x7aa3('0x5a')]=_0x4999d5;return db['MailMessage'][_0x7aa3('0x4c')]({'body':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x2b')],'MailAccountId':_0x1062f4[_0x7aa3('0x3a')]['id'],'MailInteractionId':_0x48d2f0['id'],'direction':'in','ContactId':_0x143d77['contact']['id'],'messageId':_0x1062f4[_0x7aa3('0x2b')]['message'][_0x7aa3('0x4d')],'from':_0x1062f4['body'][_0x7aa3('0x16')][_0x7aa3('0x34')],'to':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')]['to'],'cc':_0x1062f4['body']['message']['cc'],'subject':_0x1062f4['body']['message'][_0x7aa3('0x4f')],'attach':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x50')],'Attachments':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x5b')],'originTo':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')]['originTo'],'originCc':_0x1062f4['body'][_0x7aa3('0x16')]['originCc'],'bcc':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x5c')],'ChatWebsiteId':_0x1062f4['body'][_0x7aa3('0x16')][_0x7aa3('0x5d')]||null,'originChannel':_0x1062f4['body']['message'][_0x7aa3('0x5e')]||_0x7aa3('0x5f'),'ChatOfflineMessageId':_0x1062f4[_0x7aa3('0x2b')][_0x7aa3('0x16')][_0x7aa3('0x60')]||null},{'include':[{'model':db[_0x7aa3('0x61')],'as':_0x7aa3('0x62')}]});})[_0x7aa3('0x24')](function(_0x43bd8b){_0x143d77[_0x7aa3('0x16')]=_0x43bd8b;if(!_0x143d77[_0x7aa3('0x59')][_0x7aa3('0x63')]){return;}return db[_0x7aa3('0x64')][_0x7aa3('0x26')]({'attributes':['id',_0x7aa3('0x65')],'where':{'id':_0x143d77['interaction'][_0x7aa3('0x63')]}});})[_0x7aa3('0x24')](function(_0x42ef94){if(_0x42ef94){_0x143d77[_0x7aa3('0x45')][_0x7aa3('0x66')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x42ef94[_0x7aa3('0x65')]+','+(_0x143d77[_0x7aa3('0x3a')][_0x7aa3('0x67')]||0xa),'interval':'*,*,*,*'});}if(!_0x143d77[_0x7aa3('0x59')]['queueId']){return;}return db[_0x7aa3('0x68')][_0x7aa3('0x26')]({'attributes':['id',_0x7aa3('0x65')],'where':{'id':_0x143d77[_0x7aa3('0x59')][_0x7aa3('0x69')]}});})[_0x7aa3('0x24')](function(_0x1db954){if(_0x1db954){_0x143d77[_0x7aa3('0x45')][_0x7aa3('0x66')]({'id':0x0,'priority':0x1,'app':_0x7aa3('0x6a'),'appdata':_0x1db954['name']+','+(_0x143d77[_0x7aa3('0x3a')][_0x7aa3('0x6b')]||0x12c),'interval':_0x7aa3('0x6c')});}return respondWithRpcPromise(_0x7aa3('0x6d'),'startRouting',_0x143d77);})[_0x7aa3('0x24')](function(_0x419d70){_0x11111a(_0x419d70);})[_0x7aa3('0x18')](function(_0x3bb4d8){_0x3d41bf(_0x119098[_0x7aa3('0x14')](0x1f4,_0x3bb4d8[_0x7aa3('0x16')]));});});};
\ No newline at end of file
+var _0x1c9a=['./mailAccount.socket','register','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','limit','map','include','model','attributes','then','ShowMailAccount','find','where','smtp','setDataValue','smtpOptions','NotifyMailAccount','body','keys','createdAt','CompanyId','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','from','account','CmList','CmContact','Contacts','updatedAt','DESC','Applications','Smtp','CloudProvider','List','get','omit','getSmtpOptions','applications','orderBy','asc','autoclose','push','length','close','*,*,*,*','create','List\x20not\x20found','messageId','generate','subject','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','spread','attach','format','created','attachments','originTo','originCc','bcc','ChatWebsiteId','ChatOfflineMessageId','Attachment','Attachments','interaction','UserId','name','unshift','waitForTheAssignedAgent','MailQueue','queue','waitForTheAssignedQueue','Start','startRouting','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x16248b,_0x335f27){var _0x4c7749=function(_0x1a2fee){while(--_0x1a2fee){_0x16248b['push'](_0x16248b['shift']());}};_0x4c7749(++_0x335f27);}(_0x1c9a,0x1a7));var _0xa1c9=function(_0x497fc7,_0x3fb07d){_0x497fc7=_0x497fc7-0x0;var _0x45c0f2=_0x1c9a[_0x497fc7];return _0x45c0f2;};'use strict';var _=require(_0xa1c9('0x0'));var moment=require(_0xa1c9('0x1'));var BPromise=require('bluebird');var rs=require(_0xa1c9('0x2'));var Redis=require(_0xa1c9('0x3'));var db=require(_0xa1c9('0x4'))['db'];var logger=require(_0xa1c9('0x5'))(_0xa1c9('0x6'));var config=require('../../config/environment');var jayson=require(_0xa1c9('0x7'));var client=jayson['client'][_0xa1c9('0x8')]({'port':0x232c});config[_0xa1c9('0x9')]=_[_0xa1c9('0xa')](config[_0xa1c9('0x9')],{'host':_0xa1c9('0xb'),'port':0x18eb});var socket=require(_0xa1c9('0xc'))(new Redis(config[_0xa1c9('0x9')]));require(_0xa1c9('0xd'))[_0xa1c9('0xe')](socket);function respondWithRpcPromise(_0xfab70b,_0x2fcbcd,_0xb96573){return new BPromise(function(_0x55c191,_0x53140c){return client[_0xa1c9('0xf')](_0xfab70b,_0xb96573)['then'](function(_0x26b475){logger[_0xa1c9('0x10')](_0xa1c9('0x11'),_0x2fcbcd,_0xa1c9('0x12'));logger[_0xa1c9('0x13')](_0xa1c9('0x14'),_0x2fcbcd,_0xa1c9('0x12'),JSON[_0xa1c9('0x15')](_0x26b475));if(_0x26b475[_0xa1c9('0x16')]){if(_0x26b475[_0xa1c9('0x16')][_0xa1c9('0x17')]===0x1f4){logger[_0xa1c9('0x16')](_0xa1c9('0x11'),_0x2fcbcd,_0x26b475[_0xa1c9('0x16')][_0xa1c9('0x18')]);return _0x53140c(_0x26b475[_0xa1c9('0x16')][_0xa1c9('0x18')]);}logger[_0xa1c9('0x16')](_0xa1c9('0x11'),_0x2fcbcd,_0x26b475[_0xa1c9('0x16')]['message']);return _0x55c191(_0x26b475[_0xa1c9('0x16')]['message']);}else{logger[_0xa1c9('0x10')](_0xa1c9('0x11'),_0x2fcbcd,_0xa1c9('0x12'));_0x55c191(_0x26b475[_0xa1c9('0x19')][_0xa1c9('0x18')]);}})[_0xa1c9('0x1a')](function(_0x223932){logger[_0xa1c9('0x16')](_0xa1c9('0x11'),_0x2fcbcd,_0x223932);_0x53140c(_0x223932);});});}exports[_0xa1c9('0x1b')]=function(_0x278ba6){var _0x18c22d=this;return new Promise(function(_0x58b01f,_0x1a5b8e){return db[_0xa1c9('0x1c')][_0xa1c9('0x1d')]({'raw':_0x278ba6[_0xa1c9('0x1e')]?_0x278ba6[_0xa1c9('0x1e')][_0xa1c9('0x1f')]===undefined?!![]:![]:!![],'where':_0x278ba6[_0xa1c9('0x1e')]?_0x278ba6[_0xa1c9('0x1e')]['where']||null:null,'attributes':_0x278ba6[_0xa1c9('0x1e')]?_0x278ba6[_0xa1c9('0x1e')]['attributes']||null:null,'limit':_0x278ba6[_0xa1c9('0x1e')]?_0x278ba6[_0xa1c9('0x1e')][_0xa1c9('0x20')]||null:null,'include':_0x278ba6[_0xa1c9('0x1e')]?_0x278ba6[_0xa1c9('0x1e')]['include']?_[_0xa1c9('0x21')](_0x278ba6[_0xa1c9('0x1e')][_0xa1c9('0x22')],function(_0x484a6b){return{'model':db[_0x484a6b[_0xa1c9('0x23')]],'as':_0x484a6b['as'],'attributes':_0x484a6b[_0xa1c9('0x24')],'include':_0x484a6b[_0xa1c9('0x22')]?_[_0xa1c9('0x21')](_0x484a6b[_0xa1c9('0x22')],function(_0x339dee){return{'model':db[_0x339dee[_0xa1c9('0x23')]],'as':_0x339dee['as'],'attributes':_0x339dee[_0xa1c9('0x24')],'include':_0x339dee[_0xa1c9('0x22')]?_[_0xa1c9('0x21')](_0x339dee[_0xa1c9('0x22')],function(_0x364e70){return{'model':db[_0x364e70[_0xa1c9('0x23')]],'as':_0x364e70['as'],'attributes':_0x364e70[_0xa1c9('0x24')]};}):[]};}):[]};}):[]:[]})[_0xa1c9('0x25')](function(_0xf584e2){logger['info'](_0xa1c9('0x1b'),_0x278ba6);logger[_0xa1c9('0x13')](_0xa1c9('0x1b'),_0x278ba6,JSON[_0xa1c9('0x15')](_0xf584e2));_0x58b01f(_0xf584e2);})[_0xa1c9('0x1a')](function(_0x4c6dd4){logger[_0xa1c9('0x16')](_0xa1c9('0x1b'),_0x4c6dd4['message'],_0x278ba6);_0x1a5b8e(_0x18c22d[_0xa1c9('0x16')](0x1f4,_0x4c6dd4[_0xa1c9('0x18')]));});});};exports[_0xa1c9('0x26')]=function(_0x1339fd){var _0xd1f98e=this;return new Promise(function(_0x386b64,_0x220b63){return db[_0xa1c9('0x1c')][_0xa1c9('0x27')]({'raw':_0x1339fd[_0xa1c9('0x1e')]?_0x1339fd[_0xa1c9('0x1e')][_0xa1c9('0x1f')]===undefined?!![]:![]:!![],'where':_0x1339fd[_0xa1c9('0x1e')]?_0x1339fd[_0xa1c9('0x1e')][_0xa1c9('0x28')]||null:null,'attributes':_0x1339fd['options']?_0x1339fd[_0xa1c9('0x1e')][_0xa1c9('0x24')]||null:null,'include':_0x1339fd[_0xa1c9('0x1e')]?_0x1339fd[_0xa1c9('0x1e')]['include']?_[_0xa1c9('0x21')](_0x1339fd[_0xa1c9('0x1e')]['include'],function(_0x5ab2f2){return{'model':db[_0x5ab2f2[_0xa1c9('0x23')]],'as':_0x5ab2f2['as'],'attributes':_0x5ab2f2[_0xa1c9('0x24')],'include':_0x5ab2f2[_0xa1c9('0x22')]?_[_0xa1c9('0x21')](_0x5ab2f2[_0xa1c9('0x22')],function(_0x2c1825){return{'model':db[_0x2c1825[_0xa1c9('0x23')]],'as':_0x2c1825['as'],'attributes':_0x2c1825[_0xa1c9('0x24')],'include':_0x2c1825[_0xa1c9('0x22')]?_[_0xa1c9('0x21')](_0x2c1825[_0xa1c9('0x22')],function(_0x549afc){return{'model':db[_0x549afc[_0xa1c9('0x23')]],'as':_0x549afc['as'],'attributes':_0x549afc[_0xa1c9('0x24')]};}):[]};}):[]};}):[]:[]})[_0xa1c9('0x25')](function(_0x3df11a){if(_0x1339fd[_0xa1c9('0x1e')][_0xa1c9('0x29')]===!![])_0x3df11a[_0xa1c9('0x2a')](_0xa1c9('0x2b'),_0x3df11a['getSmtpOptions']());logger[_0xa1c9('0x10')](_0xa1c9('0x26'),_0x1339fd);logger[_0xa1c9('0x13')]('ShowMailAccount',_0x1339fd,JSON[_0xa1c9('0x15')](_0x3df11a));_0x386b64(_0x3df11a);})[_0xa1c9('0x1a')](function(_0x23cab5){logger[_0xa1c9('0x16')](_0xa1c9('0x26'),_0x23cab5[_0xa1c9('0x18')],_0x1339fd);_0x220b63(_0xd1f98e[_0xa1c9('0x16')](0x1f4,_0x23cab5['message']));});});};exports[_0xa1c9('0x2c')]=function(_0x5f3084){var _0x1562f8=this;return new Promise(function(_0x4c1a9e,_0x114a21){var _0x313ec7={'body':_0x5f3084[_0xa1c9('0x2d')],'channel':'mail'};var _0x19d1aa=_['difference'](_[_0xa1c9('0x2e')](db['CmContact']['rawAttributes']),[_0xa1c9('0x2f'),'updatedAt',_0xa1c9('0x30'),'ListId']);var _0x550872=![];if(_0x5f3084[_0xa1c9('0x2d')]['id']){delete _0x5f3084[_0xa1c9('0x2d')]['id'];}if(_[_0xa1c9('0x31')](_0x5f3084[_0xa1c9('0x2d')]['from'])){return _0x114a21(_0x1562f8[_0xa1c9('0x16')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xa1c9('0x31')](_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x2d')])||_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x2d')]===''){return _0x114a21(_0x1562f8[_0xa1c9('0x16')](0x1f4,_0xa1c9('0x32')));}if(_[_0xa1c9('0x31')](_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x33')])){return _0x114a21(_0x1562f8['error'](0x1f4,_0xa1c9('0x34')+_0x19d1aa));}if(!_[_0xa1c9('0x35')](_0x19d1aa,_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x33')])){return _0x114a21(_0x1562f8[_0xa1c9('0x16')](0x1f4,_0xa1c9('0x36')+_0x19d1aa));}var _0x227e94={};_0x227e94[_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x33')]]=_0x5f3084['body'][_0xa1c9('0x37')];return db[_0xa1c9('0x1c')]['find']({'where':{'id':_0x5f3084[_0xa1c9('0x38')]['id']},'include':[{'model':db[_0xa1c9('0x39')],'as':'List','include':[{'model':db[_0xa1c9('0x3a')],'as':_0xa1c9('0x3b'),'where':_0x227e94,'limit':0x1,'order':[[_0xa1c9('0x3c'),_0xa1c9('0x3d')]]}]},{'model':db['MailApplication'],'as':_0xa1c9('0x3e')},{'model':db['MailServerOut'],'as':_0xa1c9('0x3f'),'include':[{'model':db['CloudProvider'],'as':_0xa1c9('0x40')}]}]})[_0xa1c9('0x25')](function(_0x6d28a1){if(_0x6d28a1&&_0x6d28a1[_0xa1c9('0x41')]){var _0x226a65=_0x6d28a1[_0xa1c9('0x42')]({'plain':!![]});_0x313ec7[_0xa1c9('0x38')]=_[_0xa1c9('0x43')](_0x226a65,[_0xa1c9('0x3e'),_0xa1c9('0x41')]);_0x313ec7[_0xa1c9('0x38')][_0xa1c9('0x2b')]=_0x6d28a1[_0xa1c9('0x44')]();_0x313ec7[_0xa1c9('0x45')]=_0x226a65[_0xa1c9('0x3e')];_0x313ec7['list']=_0x226a65[_0xa1c9('0x41')];_0x313ec7[_0xa1c9('0x45')]=_[_0xa1c9('0x46')](_0x313ec7[_0xa1c9('0x45')],['priority'],[_0xa1c9('0x47')]);if(_0x313ec7[_0xa1c9('0x38')]&&_0x313ec7[_0xa1c9('0x38')][_0xa1c9('0x48')]){_0x313ec7['applications'][_0xa1c9('0x49')]({'id':0x0,'priority':_0x313ec7[_0xa1c9('0x45')][_0xa1c9('0x4a')]+0x1,'app':_0xa1c9('0x4b'),'appdata':_0xa1c9('0x48'),'interval':_0xa1c9('0x4c')});}if(_0x313ec7['account'][_0xa1c9('0x3e')]){delete _0x313ec7[_0xa1c9('0x38')][_0xa1c9('0x3e')];}if(_0x313ec7[_0xa1c9('0x38')][_0xa1c9('0x41')]){delete _0x313ec7[_0xa1c9('0x38')]['List'];}if(_0x226a65['List'][_0xa1c9('0x3b')]['length']){return _0x226a65['List'][_0xa1c9('0x3b')][0x0];}var _0xe162c1=_[_0xa1c9('0xa')](_0x5f3084['body'],{'firstName':_0x5f3084['body'][_0xa1c9('0x37')],'ListId':_0x226a65['ListId']});_0xe162c1[_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x33')]]=_0x5f3084[_0xa1c9('0x2d')]['from'];return db[_0xa1c9('0x3a')][_0xa1c9('0x4d')](_0xe162c1);}else{throw new Error(_0xa1c9('0x4e'));}})[_0xa1c9('0x25')](function(_0x5ea7be){_0x313ec7['contact']=_0x5ea7be;if(_0x5ea7be){if(!_0x5f3084[_0xa1c9('0x2d')]['message'][_0xa1c9('0x4f')]){_0x5f3084['body'][_0xa1c9('0x18')][_0xa1c9('0x4f')]=rs[_0xa1c9('0x50')]()+'\x20'+_0x5f3084[_0xa1c9('0x2d')]['message'][_0xa1c9('0x37')];}var _0x519d0f={'ContactId':_0x5ea7be['id'],'MailAccountId':_0x5f3084[_0xa1c9('0x38')]['id'],'inReplyTo':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x4f')],'to':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x37')],'cc':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')]['cc'],'subject':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x51')],'attach':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')]['attach'],'lastMsgAt':moment()['format'](_0xa1c9('0x52')),'lastMsgDirection':'in'};return db[_0xa1c9('0x53')][_0xa1c9('0x27')]({'where':{'closed':![],'MailAccountId':_0x5f3084[_0xa1c9('0x38')]['id']},'include':[{'model':db[_0xa1c9('0x54')],'as':_0xa1c9('0x55'),'attributes':[_0xa1c9('0x4f')],'where':{'messageId':_0x5f3084[_0xa1c9('0x2d')]['message'][_0xa1c9('0x56')]}}]})[_0xa1c9('0x25')](function(_0x8e6b90){if(_0x8e6b90){return[_0x8e6b90,![]];}return db[_0xa1c9('0x53')]['create'](_0x519d0f)[_0xa1c9('0x25')](function(_0x423a34){return[_0x423a34,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xa1c9('0x57')](function(_0x13f428,_0x25bc30){if(_0x13f428){_0x550872=_0x25bc30;if(!_0x25bc30){return _0x13f428['update']({'inReplyTo':_0x5f3084[_0xa1c9('0x2d')]['message'][_0xa1c9('0x4f')],'to':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x37')],'cc':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')]['cc'],'subject':_0x5f3084['body'][_0xa1c9('0x18')]['subject'],'attach':_0x13f428[_0xa1c9('0x58')]?_0x13f428['attach']:_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x58')],'substatus':null,'substatusAt':moment()[_0xa1c9('0x59')](_0xa1c9('0x52')),'lastMsgAt':moment()[_0xa1c9('0x59')](_0xa1c9('0x52')),'lastMsgDirection':'in'});}else{return _0x13f428;}}})[_0xa1c9('0x25')](function(_0x2852ae){_0x313ec7['interaction']=_0x2852ae['get']({'plain':!![]});_0x313ec7['interaction'][_0xa1c9('0x5a')]=_0x550872;return db[_0xa1c9('0x54')][_0xa1c9('0x4d')]({'body':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x2d')],'MailAccountId':_0x5f3084['account']['id'],'MailInteractionId':_0x2852ae['id'],'direction':'in','ContactId':_0x313ec7['contact']['id'],'messageId':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x4f')],'from':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x37')],'to':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')]['to'],'cc':_0x5f3084['body']['message']['cc'],'subject':_0x5f3084['body'][_0xa1c9('0x18')][_0xa1c9('0x51')],'attach':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x58')],'Attachments':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x5b')],'originTo':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x5c')],'originCc':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x5d')],'bcc':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x5e')],'ChatWebsiteId':_0x5f3084[_0xa1c9('0x2d')]['message'][_0xa1c9('0x5f')]||null,'originChannel':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')]['originChannel']||'Email','ChatOfflineMessageId':_0x5f3084[_0xa1c9('0x2d')][_0xa1c9('0x18')][_0xa1c9('0x60')]||null},{'include':[{'model':db[_0xa1c9('0x61')],'as':_0xa1c9('0x62')}]});})[_0xa1c9('0x25')](function(_0x21099a){_0x313ec7['message']=_0x21099a;if(!_0x313ec7[_0xa1c9('0x63')][_0xa1c9('0x64')]){return;}return db['User']['find']({'attributes':['id',_0xa1c9('0x65')],'where':{'id':_0x313ec7[_0xa1c9('0x63')][_0xa1c9('0x64')]}});})['then'](function(_0x168d20){if(_0x168d20){_0x313ec7[_0xa1c9('0x45')][_0xa1c9('0x66')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x168d20['name']+','+(_0x313ec7[_0xa1c9('0x38')][_0xa1c9('0x67')]||0xa),'interval':'*,*,*,*'});}if(!_0x313ec7['interaction']['queueId']){return;}return db[_0xa1c9('0x68')]['find']({'attributes':['id',_0xa1c9('0x65')],'where':{'id':_0x313ec7[_0xa1c9('0x63')]['queueId']}});})[_0xa1c9('0x25')](function(_0x3ca392){if(_0x3ca392){_0x313ec7['applications'][_0xa1c9('0x66')]({'id':0x0,'priority':0x1,'app':_0xa1c9('0x69'),'appdata':_0x3ca392[_0xa1c9('0x65')]+','+(_0x313ec7[_0xa1c9('0x38')][_0xa1c9('0x6a')]||0x12c),'interval':_0xa1c9('0x4c')});}return respondWithRpcPromise(_0xa1c9('0x6b'),_0xa1c9('0x6c'),_0x313ec7);})['then'](function(_0x51ef57){_0x4c1a9e(_0x51ef57);})[_0xa1c9('0x1a')](function(_0x5b7df9){_0x114a21(_0x1562f8[_0xa1c9('0x16')](0x1f4,_0x5b7df9[_0xa1c9('0x18')]));});});};
\ No newline at end of file
index 4911092..49d2a1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e94=['mailAccount:','./mailAccount.events','save','remove','update','emit','removeListener','register','length'];(function(_0x184842,_0x522104){var _0x574731=function(_0x37df84){while(--_0x37df84){_0x184842['push'](_0x184842['shift']());}};_0x574731(++_0x522104);}(_0x0e94,0x88));var _0x40e9=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x0e94[_0x42cae2];return _0x5f256f;};'use strict';var MailAccountEvents=require(_0x40e9('0x0'));var events=[_0x40e9('0x1'),_0x40e9('0x2'),_0x40e9('0x3')];function createListener(_0x3498fd,_0xbbf461){return function(_0x362f96){_0xbbf461[_0x40e9('0x4')](_0x3498fd,_0x362f96);};}function removeListener(_0x426328,_0x156a78){return function(){MailAccountEvents[_0x40e9('0x5')](_0x426328,_0x156a78);};}exports[_0x40e9('0x6')]=function(_0x2ae17b){for(var _0x4b2b58=0x0,_0x31e353=events[_0x40e9('0x7')];_0x4b2b58<_0x31e353;_0x4b2b58++){var _0x47ff0f=events[_0x4b2b58];var _0x158d9b=createListener(_0x40e9('0x8')+_0x47ff0f,_0x2ae17b);MailAccountEvents['on'](_0x47ff0f,_0x158d9b);}};
\ No newline at end of file
+var _0xa203=['register','length','mailAccount:','./mailAccount.events','save','remove','update','emit','removeListener'];(function(_0x3eb972,_0xf0a068){var _0x35af78=function(_0x1faacd){while(--_0x1faacd){_0x3eb972['push'](_0x3eb972['shift']());}};_0x35af78(++_0xf0a068);}(_0xa203,0xdb));var _0x3a20=function(_0xa825a3,_0x294848){_0xa825a3=_0xa825a3-0x0;var _0x1383b2=_0xa203[_0xa825a3];return _0x1383b2;};'use strict';var MailAccountEvents=require(_0x3a20('0x0'));var events=[_0x3a20('0x1'),_0x3a20('0x2'),_0x3a20('0x3')];function createListener(_0x5c4af3,_0x119794){return function(_0x9cb59e){_0x119794[_0x3a20('0x4')](_0x5c4af3,_0x9cb59e);};}function removeListener(_0x5ab836,_0x1608b6){return function(){MailAccountEvents[_0x3a20('0x5')](_0x5ab836,_0x1608b6);};}exports[_0x3a20('0x6')]=function(_0x16efb3){for(var _0x4018a7=0x0,_0xd8d9fa=events[_0x3a20('0x7')];_0x4018a7<_0xd8d9fa;_0x4018a7++){var _0x3370c7=events[_0x4018a7];var _0x56c175=createListener(_0x3a20('0x8')+_0x3370c7,_0x16efb3);MailAccountEvents['on'](_0x3370c7,_0x56c175);}};
\ No newline at end of file
index 58c5587..14bcaeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5ae=['delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','show','put','/:id','update'];(function(_0x5d5eba,_0x31053b){var _0x34921c=function(_0x1c7d10){while(--_0x1c7d10){_0x5d5eba['push'](_0x5d5eba['shift']());}};_0x34921c(++_0x31053b);}(_0xd5ae,0xc6));var _0xed5a=function(_0x1dc777,_0x27b139){_0x1dc777=_0x1dc777-0x0;var _0x551387=_0xd5ae[_0x1dc777];return _0x551387;};'use strict';var multer=require('multer');var util=require(_0xed5a('0x0'));var path=require(_0xed5a('0x1'));var timeout=require('connect-timeout');var express=require(_0xed5a('0x2'));var router=express[_0xed5a('0x3')]();var fs_extra=require(_0xed5a('0x4'));var auth=require(_0xed5a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xed5a('0x6'));var controller=require('./mailApplication.controller');router['get']('/:id',auth[_0xed5a('0x7')](),controller[_0xed5a('0x8')]);router[_0xed5a('0x9')](_0xed5a('0xa'),auth[_0xed5a('0x7')](),controller[_0xed5a('0xb')]);router[_0xed5a('0xc')](_0xed5a('0xa'),auth[_0xed5a('0x7')](),controller[_0xed5a('0xd')]);module[_0xed5a('0xe')]=router;
\ No newline at end of file
+var _0x684f=['/:id','delete','isAuthenticated','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailApplication.controller','show','put'];(function(_0x164db8,_0x3fb7ce){var _0x1aa718=function(_0xfa68b0){while(--_0xfa68b0){_0x164db8['push'](_0x164db8['shift']());}};_0x1aa718(++_0x3fb7ce);}(_0x684f,0xa8));var _0xf684=function(_0x17bdab,_0x199650){_0x17bdab=_0x17bdab-0x0;var _0x4e2989=_0x684f[_0x17bdab];return _0x4e2989;};'use strict';var multer=require(_0xf684('0x0'));var util=require(_0xf684('0x1'));var path=require(_0xf684('0x2'));var timeout=require(_0xf684('0x3'));var express=require(_0xf684('0x4'));var router=express[_0xf684('0x5')]();var fs_extra=require(_0xf684('0x6'));var auth=require(_0xf684('0x7'));var interaction=require(_0xf684('0x8'));var config=require('../../config/environment');var controller=require(_0xf684('0x9'));router['get']('/:id',auth['isAuthenticated'](),controller[_0xf684('0xa')]);router[_0xf684('0xb')](_0xf684('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xf684('0xd')](_0xf684('0xc'),auth[_0xf684('0xe')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c56c4e2..078ba43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78d=['noop','TEXT','sequelize','exports','STRING'];(function(_0x2de940,_0x54a3bc){var _0x4f2f1e=function(_0x349985){while(--_0x349985){_0x2de940['push'](_0x2de940['shift']());}};_0x4f2f1e(++_0x54a3bc);}(_0xb78d,0x1e2));var _0xdb78=function(_0x359b1e,_0x8036ad){_0x359b1e=_0x359b1e-0x0;var _0x32923a=_0xb78d[_0x359b1e];return _0x32923a;};'use strict';var Sequelize=require(_0xdb78('0x0'));module[_0xdb78('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xdb78('0x2')],'allowNull':![],'defaultValue':_0xdb78('0x3')},'appdata':{'type':Sequelize[_0xdb78('0x4')]()},'description':{'type':Sequelize[_0xdb78('0x2')]},'interval':{'type':Sequelize[_0xdb78('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x197c=['sequelize','exports','INTEGER','STRING','noop'];(function(_0x5502d4,_0x4cf776){var _0x282ff4=function(_0x248944){while(--_0x248944){_0x5502d4['push'](_0x5502d4['shift']());}};_0x282ff4(++_0x4cf776);}(_0x197c,0x13b));var _0xc197=function(_0x29cc96,_0x39d612){_0x29cc96=_0x29cc96-0x0;var _0xd403ae=_0x197c[_0x29cc96];return _0xd403ae;};'use strict';var Sequelize=require(_0xc197('0x0'));module[_0xc197('0x1')]={'priority':{'type':Sequelize[_0xc197('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc197('0x3')],'allowNull':![],'defaultValue':_0xc197('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xc197('0x3')]},'interval':{'type':Sequelize[_0xc197('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 8be900c..3728ad3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','show','params','model','keys','MailApplication','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','body','catch','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined'];(function(_0x5ab951,_0x2513ca){var _0x1e4abd=function(_0x1ad259){while(--_0x1ad259){_0x5ab951['push'](_0x5ab951['shift']());}};_0x1e4abd(++_0x2513ca);}(_0xe706,0xa3));var _0x6e70=function(_0x1879a4,_0x581a4a){_0x1879a4=_0x1879a4-0x0;var _0x38e837=_0xe706[_0x1879a4];return _0x38e837;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={'raw':!![],'where':{'id':_0x5d772a[_0x6e70('0x2e')]['id']}},_0xecf336={};_0xecf336[_0x6e70('0x2f')]=_[_0x6e70('0x30')](db[_0x6e70('0x31')][_0x6e70('0x32')]);_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x30')](_0x5d772a['query']);_0xecf336[_0x6e70('0x34')]=_['intersection'](_0xecf336[_0x6e70('0x2f')],_0xecf336['query']);_0x406f29[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0xecf336[_0x6e70('0x2f')],qs['fields'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x37')]));_0x406f29['attributes']=_0x406f29[_0x6e70('0x35')][_0x6e70('0x38')]?_0x406f29['attributes']:_0xecf336[_0x6e70('0x2f')];if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x39')]){_0x406f29[_0x6e70('0x3a')]=[{'all':!![]}];}_0x406f29=_[_0x6e70('0x3b')]({},_0x406f29,_0x5d772a[_0x6e70('0x3c')]);return db[_0x6e70('0x31')][_0x6e70('0x3d')](_0x406f29)[_0x6e70('0x29')](handleEntityNotFound(_0x1952ea,null))[_0x6e70('0x29')](respondWithResult(_0x1952ea,null))['catch'](handleError(_0x1952ea,null));};exports[_0x6e70('0x28')]=function(_0x4795a0,_0x23cd1a){if(_0x4795a0[_0x6e70('0x3e')]['id']){delete _0x4795a0[_0x6e70('0x3e')]['id'];}return db[_0x6e70('0x31')][_0x6e70('0x3d')]({'where':{'id':_0x4795a0[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x23cd1a,null))[_0x6e70('0x29')](saveUpdates(_0x4795a0[_0x6e70('0x3e')],null))[_0x6e70('0x29')](respondWithResult(_0x23cd1a,null))[_0x6e70('0x3f')](handleError(_0x23cd1a,null));};exports[_0x6e70('0x40')]=function(_0x5594d3,_0x501b53){return db['MailApplication']['find']({'where':{'id':_0x5594d3[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x501b53,null))[_0x6e70('0x29')](removeEntity(_0x501b53,null))[_0x6e70('0x3f')](handleError(_0x501b53,null));};
\ No newline at end of file
+var _0x9c44=['Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','show','params','model','keys','MailApplication','rawAttributes','query','attributes','intersection','fields','length','includeAll','include','merge','options','find','then','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x2caf41,_0x5b398e){var _0x5ca4de=function(_0x5ae652){while(--_0x5ae652){_0x2caf41['push'](_0x2caf41['shift']());}};_0x5ca4de(++_0x5b398e);}(_0x9c44,0x178));var _0x49c4=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x9c44[_0x543084];return _0x306a57;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={'raw':!![],'where':{'id':_0x5987ae[_0x49c4('0x29')]['id']}},_0x46e04d={};_0x46e04d[_0x49c4('0x2a')]=_[_0x49c4('0x2b')](db[_0x49c4('0x2c')][_0x49c4('0x2d')]);_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2b')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d['filters']=_['intersection'](_0x46e04d['model'],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x2f')]=_[_0x49c4('0x30')](_0x46e04d[_0x49c4('0x2a')],qs[_0x49c4('0x31')](_0x5987ae['query'][_0x49c4('0x31')]));_0x2b2793[_0x49c4('0x2f')]=_0x2b2793[_0x49c4('0x2f')][_0x49c4('0x32')]?_0x2b2793['attributes']:_0x46e04d['model'];if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x33')]){_0x2b2793[_0x49c4('0x34')]=[{'all':!![]}];}_0x2b2793=_[_0x49c4('0x35')]({},_0x2b2793,_0x5987ae[_0x49c4('0x36')]);return db['MailApplication'][_0x49c4('0x37')](_0x2b2793)[_0x49c4('0x38')](handleEntityNotFound(_0x889909,null))[_0x49c4('0x38')](respondWithResult(_0x889909,null))['catch'](handleError(_0x889909,null));};exports['update']=function(_0x85dce2,_0x1991e9){if(_0x85dce2[_0x49c4('0x39')]['id']){delete _0x85dce2[_0x49c4('0x39')]['id'];}return db[_0x49c4('0x2c')][_0x49c4('0x37')]({'where':{'id':_0x85dce2[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x1991e9,null))[_0x49c4('0x38')](saveUpdates(_0x85dce2['body'],null))[_0x49c4('0x38')](respondWithResult(_0x1991e9,null))['catch'](handleError(_0x1991e9,null));};exports[_0x49c4('0x23')]=function(_0x349791,_0x2625a6){return db[_0x49c4('0x2c')]['find']({'where':{'id':_0x349791[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x2625a6,null))[_0x49c4('0x38')](removeEntity(_0x2625a6,null))['catch'](handleError(_0x2625a6,null));};
\ No newline at end of file
index 0b4f0bd..b3412ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c91=['rimraf','../../config/environment','./mailApplication.attributes','define','MailApplication','mail_applications','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x146a85,_0x529b52){var _0x1b59bf=function(_0x4af0fd){while(--_0x4af0fd){_0x146a85['push'](_0x146a85['shift']());}};_0x1b59bf(++_0x529b52);}(_0x4c91,0x1a6));var _0x14c9=function(_0x503fd9,_0x250779){_0x503fd9=_0x503fd9-0x0;var _0x370720=_0x4c91[_0x503fd9];return _0x370720;};'use strict';var _=require(_0x14c9('0x0'));var util=require(_0x14c9('0x1'));var logger=require(_0x14c9('0x2'))('api');var moment=require(_0x14c9('0x3'));var BPromise=require(_0x14c9('0x4'));var rp=require(_0x14c9('0x5'));var fs=require('fs');var path=require(_0x14c9('0x6'));var rimraf=require(_0x14c9('0x7'));var config=require(_0x14c9('0x8'));var attributes=require(_0x14c9('0x9'));module['exports']=function(_0x12f9b5,_0x3322d0){return _0x12f9b5[_0x14c9('0xa')](_0x14c9('0xb'),attributes,{'tableName':_0x14c9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x8f15=['request-promise','path','rimraf','./mailApplication.attributes','define','MailApplication','mail_applications','utf8mb4','util','../../config/logger','api','moment','bluebird'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x8f15,0x97));var _0x58f1=function(_0x17c3bb,_0x20327b){_0x17c3bb=_0x17c3bb-0x0;var _0x4faddc=_0x8f15[_0x17c3bb];return _0x4faddc;};'use strict';var _=require('lodash');var util=require(_0x58f1('0x0'));var logger=require(_0x58f1('0x1'))(_0x58f1('0x2'));var moment=require(_0x58f1('0x3'));var BPromise=require(_0x58f1('0x4'));var rp=require(_0x58f1('0x5'));var fs=require('fs');var path=require(_0x58f1('0x6'));var rimraf=require(_0x58f1('0x7'));var config=require('../../config/environment');var attributes=require(_0x58f1('0x8'));module['exports']=function(_0x6d62c9,_0x57a15c){return _0x6d62c9[_0x58f1('0x9')](_0x58f1('0xa'),attributes,{'tableName':_0x58f1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x58f1('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index b94b8c3..0ebb94f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19ec=['MailApplication','options','raw','where','attributes','UpdateMailApplication','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','error','message','info','MailApplication,\x20%s,\x20%s','result','catch'];(function(_0x36c5d9,_0x228005){var _0x185f60=function(_0x1b13ab){while(--_0x1b13ab){_0x36c5d9['push'](_0x36c5d9['shift']());}};_0x185f60(++_0x228005);}(_0x19ec,0x72));var _0xc19e=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x19ec[_0x36c5b0];return _0xf19333;};'use strict';var _=require('lodash');var util=require(_0xc19e('0x0'));var moment=require(_0xc19e('0x1'));var BPromise=require(_0xc19e('0x2'));var rs=require(_0xc19e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc19e('0x4'))['db'];var utils=require(_0xc19e('0x5'));var logger=require(_0xc19e('0x6'))(_0xc19e('0x7'));var config=require('../../config/environment');var jayson=require(_0xc19e('0x8'));var client=jayson[_0xc19e('0x9')][_0xc19e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f3888,_0xffd539,_0x4887c4){return new BPromise(function(_0xdeb1b,_0x297605){return client['request'](_0x5f3888,_0x4887c4)[_0xc19e('0xb')](function(_0xea7c74){logger['info']('MailApplication,\x20%s,\x20%s',_0xffd539,_0xc19e('0xc'));logger[_0xc19e('0xd')](_0xc19e('0xe'),_0xffd539,_0xc19e('0xc'),JSON['stringify'](_0xea7c74));if(_0xea7c74[_0xc19e('0xf')]){if(_0xea7c74[_0xc19e('0xf')]['code']===0x1f4){logger['error']('MailApplication,\x20%s,\x20%s',_0xffd539,_0xea7c74[_0xc19e('0xf')]['message']);return _0x297605(_0xea7c74['error'][_0xc19e('0x10')]);}logger[_0xc19e('0xf')]('MailApplication,\x20%s,\x20%s',_0xffd539,_0xea7c74[_0xc19e('0xf')][_0xc19e('0x10')]);return _0xdeb1b(_0xea7c74[_0xc19e('0xf')][_0xc19e('0x10')]);}else{logger[_0xc19e('0x11')](_0xc19e('0x12'),_0xffd539,_0xc19e('0xc'));_0xdeb1b(_0xea7c74[_0xc19e('0x13')]['message']);}})[_0xc19e('0x14')](function(_0x324ae1){logger[_0xc19e('0xf')](_0xc19e('0x12'),_0xffd539,_0x324ae1);_0x297605(_0x324ae1);});});}exports['UpdateMailApplication']=function(_0x531772){var _0x554f5d=this;return new Promise(function(_0x3260cb,_0x7f211f){return db[_0xc19e('0x15')]['update'](_0x531772['body'],{'raw':_0x531772[_0xc19e('0x16')]?_0x531772[_0xc19e('0x16')][_0xc19e('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x531772[_0xc19e('0x16')]?_0x531772[_0xc19e('0x16')][_0xc19e('0x18')]||null:null,'attributes':_0x531772['options']?_0x531772[_0xc19e('0x16')][_0xc19e('0x19')]||null:null,'limit':_0x531772[_0xc19e('0x16')]?_0x531772[_0xc19e('0x16')]['limit']||null:null})['then'](function(_0x48defd){logger[_0xc19e('0x11')]('UpdateMailApplication',_0x531772);logger[_0xc19e('0xd')](_0xc19e('0x1a'),_0x531772,JSON['stringify'](_0x48defd));_0x3260cb(_0x48defd);})[_0xc19e('0x14')](function(_0x1074e5){logger[_0xc19e('0xf')](_0xc19e('0x1a'),_0x1074e5[_0xc19e('0x10')],_0x531772);_0x7f211f(_0x554f5d[_0xc19e('0xf')](0x1f4,_0x1074e5[_0xc19e('0x10')]));});});};
\ No newline at end of file
+var _0x511f=['debug','code','error','message','MailApplication','update','body','options','raw','where','limit','UpdateMailApplication','stringify','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x40988c,_0x162b7c){var _0x360c95=function(_0x301d04){while(--_0x301d04){_0x40988c['push'](_0x40988c['shift']());}};_0x360c95(++_0x162b7c);}(_0x511f,0x1de));var _0xf511=function(_0x4d4a7d,_0x216f61){_0x4d4a7d=_0x4d4a7d-0x0;var _0xa058e3=_0x511f[_0x4d4a7d];return _0xa058e3;};'use strict';var _=require(_0xf511('0x0'));var util=require('util');var moment=require(_0xf511('0x1'));var BPromise=require(_0xf511('0x2'));var rs=require(_0xf511('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf511('0x4'))['db'];var utils=require(_0xf511('0x5'));var logger=require(_0xf511('0x6'))(_0xf511('0x7'));var config=require(_0xf511('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf511('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x477b8b,_0x1507bc,_0x4eab5d){return new BPromise(function(_0x5bf030,_0x4bfbaa){return client[_0xf511('0xa')](_0x477b8b,_0x4eab5d)[_0xf511('0xb')](function(_0x453917){logger[_0xf511('0xc')](_0xf511('0xd'),_0x1507bc,_0xf511('0xe'));logger[_0xf511('0xf')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x1507bc,_0xf511('0xe'),JSON['stringify'](_0x453917));if(_0x453917['error']){if(_0x453917['error'][_0xf511('0x10')]===0x1f4){logger[_0xf511('0x11')](_0xf511('0xd'),_0x1507bc,_0x453917[_0xf511('0x11')][_0xf511('0x12')]);return _0x4bfbaa(_0x453917[_0xf511('0x11')][_0xf511('0x12')]);}logger[_0xf511('0x11')]('MailApplication,\x20%s,\x20%s',_0x1507bc,_0x453917['error'][_0xf511('0x12')]);return _0x5bf030(_0x453917[_0xf511('0x11')][_0xf511('0x12')]);}else{logger[_0xf511('0xc')](_0xf511('0xd'),_0x1507bc,_0xf511('0xe'));_0x5bf030(_0x453917['result'][_0xf511('0x12')]);}})['catch'](function(_0x4c1d43){logger['error'](_0xf511('0xd'),_0x1507bc,_0x4c1d43);_0x4bfbaa(_0x4c1d43);});});}exports['UpdateMailApplication']=function(_0x5085f2){var _0x377142=this;return new Promise(function(_0x59415f,_0x294696){return db[_0xf511('0x13')][_0xf511('0x14')](_0x5085f2[_0xf511('0x15')],{'raw':_0x5085f2[_0xf511('0x16')]?_0x5085f2[_0xf511('0x16')][_0xf511('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5085f2[_0xf511('0x16')]?_0x5085f2['options'][_0xf511('0x18')]||null:null,'attributes':_0x5085f2[_0xf511('0x16')]?_0x5085f2['options']['attributes']||null:null,'limit':_0x5085f2['options']?_0x5085f2[_0xf511('0x16')][_0xf511('0x19')]||null:null})['then'](function(_0x558866){logger['info'](_0xf511('0x1a'),_0x5085f2);logger['debug']('UpdateMailApplication',_0x5085f2,JSON[_0xf511('0x1b')](_0x558866));_0x59415f(_0x558866);})[_0xf511('0x1c')](function(_0x2c3a4c){logger[_0xf511('0x11')](_0xf511('0x1a'),_0x2c3a4c[_0xf511('0x12')],_0x5085f2);_0x294696(_0x377142[_0xf511('0x11')](0x1f4,_0x2c3a4c['message']));});});};
\ No newline at end of file
index 618cc8a..d1e7ad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb8=['removeTags','exports','express','Router','../../components/auth/service','./mailInteraction.controller','isAuthenticated','get','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','tracked','mail','mailinteraction:addtags','addTags','mailinteraction:update','delete','mailinteraction:destroy','destroy','/:id/tags'];(function(_0x5eae08,_0x37fccf){var _0xdaaab0=function(_0x5b3eaa){while(--_0x5b3eaa){_0x5eae08['push'](_0x5eae08['shift']());}};_0xdaaab0(++_0x37fccf);}(_0x7eb8,0xd2));var _0x87eb=function(_0x28ec72,_0x1a2d21){_0x28ec72=_0x28ec72-0x0;var _0x5cff14=_0x7eb8[_0x28ec72];return _0x5cff14;};'use strict';var express=require(_0x87eb('0x0'));var router=express[_0x87eb('0x1')]();var auth=require(_0x87eb('0x2'));var interaction=require('../../components/interaction/service');var controller=require(_0x87eb('0x3'));router['get']('/',auth[_0x87eb('0x4')](),controller['index']);router[_0x87eb('0x5')](_0x87eb('0x6'),auth[_0x87eb('0x4')](),controller['describe']);router[_0x87eb('0x5')](_0x87eb('0x7'),auth[_0x87eb('0x4')](),controller[_0x87eb('0x8')]);router[_0x87eb('0x5')](_0x87eb('0x9'),auth[_0x87eb('0x4')](),controller[_0x87eb('0xa')]);router[_0x87eb('0x5')](_0x87eb('0xb'),auth[_0x87eb('0x4')](),controller[_0x87eb('0xc')]);router[_0x87eb('0xd')]('/',auth[_0x87eb('0x4')](),controller[_0x87eb('0xe')]);router[_0x87eb('0xd')](_0x87eb('0x9'),auth['isAuthenticated'](),controller['addMessage']);router['post']('/:id/tags',auth['isAuthenticated'](),interaction[_0x87eb('0xf')](_0x87eb('0x10'),_0x87eb('0x11')),controller[_0x87eb('0x12')]);router['put']('/:id',auth['isAuthenticated'](),interaction['tracked']('mail',_0x87eb('0x13')),controller['update']);router[_0x87eb('0x14')](_0x87eb('0x7'),auth[_0x87eb('0x4')](),interaction[_0x87eb('0xf')](_0x87eb('0x10'),_0x87eb('0x15')),controller[_0x87eb('0x16')]);router[_0x87eb('0x14')](_0x87eb('0x17'),auth[_0x87eb('0x4')](),controller[_0x87eb('0x18')]);module[_0x87eb('0x19')]=router;
\ No newline at end of file
+var _0x2f99=['/:id/messages','download','create','addMessage','post','/:id/tags','tracked','mail','mailinteraction:addtags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','index','get','/describe','isAuthenticated','describe','/:id'];(function(_0x5d01ec,_0x17d179){var _0x10112e=function(_0x4176db){while(--_0x4176db){_0x5d01ec['push'](_0x5d01ec['shift']());}};_0x10112e(++_0x17d179);}(_0x2f99,0x7d));var _0x92f9=function(_0x3729c,_0x1b1faf){_0x3729c=_0x3729c-0x0;var _0x20ce1f=_0x2f99[_0x3729c];return _0x20ce1f;};'use strict';var express=require(_0x92f9('0x0'));var router=express['Router']();var auth=require(_0x92f9('0x1'));var interaction=require(_0x92f9('0x2'));var controller=require(_0x92f9('0x3'));router['get']('/',auth['isAuthenticated'](),controller[_0x92f9('0x4')]);router[_0x92f9('0x5')](_0x92f9('0x6'),auth[_0x92f9('0x7')](),controller[_0x92f9('0x8')]);router[_0x92f9('0x5')](_0x92f9('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x92f9('0x5')](_0x92f9('0xa'),auth['isAuthenticated'](),controller['getMessages']);router[_0x92f9('0x5')]('/:id/download',auth['isAuthenticated'](),controller[_0x92f9('0xb')]);router['post']('/',auth[_0x92f9('0x7')](),controller[_0x92f9('0xc')]);router['post'](_0x92f9('0xa'),auth['isAuthenticated'](),controller[_0x92f9('0xd')]);router[_0x92f9('0xe')](_0x92f9('0xf'),auth['isAuthenticated'](),interaction[_0x92f9('0x10')](_0x92f9('0x11'),_0x92f9('0x12')),controller['addTags']);router[_0x92f9('0x13')]('/:id',auth[_0x92f9('0x7')](),interaction[_0x92f9('0x10')](_0x92f9('0x11'),_0x92f9('0x14')),controller[_0x92f9('0x15')]);router[_0x92f9('0x16')](_0x92f9('0x9'),auth['isAuthenticated'](),interaction[_0x92f9('0x10')](_0x92f9('0x11'),_0x92f9('0x17')),controller[_0x92f9('0x18')]);router[_0x92f9('0x16')](_0x92f9('0xf'),auth[_0x92f9('0x7')](),controller[_0x92f9('0x19')]);module[_0x92f9('0x1a')]=router;
\ No newline at end of file
index 7178686..79ce82a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c18=['DATE','STRING','TEXT','ENUM','out','BOOLEAN','sequelize','iconv','exports'];(function(_0xf6c510,_0x38658f){var _0x18fa72=function(_0x22bb6b){while(--_0x22bb6b){_0xf6c510['push'](_0xf6c510['shift']());}};_0x18fa72(++_0x38658f);}(_0x1c18,0x192));var _0x81c1=function(_0x414b51,_0x2418e0){_0x414b51=_0x414b51-0x0;var _0x23f66a=_0x1c18[_0x414b51];return _0x23f66a;};'use strict';var Sequelize=require(_0x81c1('0x0'));var iconv=require(_0x81c1('0x1'));module[_0x81c1('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x81c1('0x3')]},'disposition':{'type':Sequelize[_0x81c1('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x81c1('0x4')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x81c1('0x4')](0x1fe)},'to':{'type':Sequelize[_0x81c1('0x4')]},'cc':{'type':Sequelize[_0x81c1('0x5')]('long')},'subject':{'type':Sequelize[_0x81c1('0x5')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x81c1('0x3')]},'substatus':{'type':Sequelize[_0x81c1('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x81c1('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x81c1('0x6')]('in',_0x81c1('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x81c1('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x81c1('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x81c1('0x8')],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x8600=['DATE','STRING','TEXT','long','ENUM','out','sequelize','iconv','exports','BOOLEAN'];(function(_0xf382e5,_0x4c8690){var _0x3272b6=function(_0x42a6d2){while(--_0x42a6d2){_0xf382e5['push'](_0xf382e5['shift']());}};_0x3272b6(++_0x4c8690);}(_0x8600,0x6a));var _0x0860=function(_0xb26065,_0x36df08){_0xb26065=_0xb26065-0x0;var _0x974dce=_0x8600[_0xb26065];return _0x974dce;};'use strict';var Sequelize=require(_0x0860('0x0'));var iconv=require(_0x0860('0x1'));module[_0x0860('0x2')]={'closed':{'type':Sequelize[_0x0860('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0860('0x4')]},'disposition':{'type':Sequelize[_0x0860('0x5')]},'secondDisposition':{'type':Sequelize[_0x0860('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x0860('0x5')](0x1fe)},'to':{'type':Sequelize[_0x0860('0x5')]},'cc':{'type':Sequelize[_0x0860('0x6')](_0x0860('0x7'))},'subject':{'type':Sequelize[_0x0860('0x6')]()},'attach':{'type':Sequelize[_0x0860('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x0860('0x4')]},'substatus':{'type':Sequelize[_0x0860('0x5')](0x3c)},'substatusAt':{'type':Sequelize[_0x0860('0x4')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x0860('0x8')]('in',_0x0860('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x0860('0x3')],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 89783f4..9bdb458 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09b2=['user','catch','params','model','keys','rawAttributes','filters','attributes','intersection','fields','length','includeAll','include','merge','options','create','body','find','describe','MailMessage','ids','findOne','nolimit','order','where','MailInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','addTags','setTags','omit','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','join','root','server','files','tmp','attachments','push','Attachment','Attachments','bcc','subject','createdAt','Messages','get','mkdirSync','each','from','decode','headers','Bcc','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','zip-dir','moment','util','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','defaults','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','index','map','MailInteraction','fieldName','type','getOptions','findAll','mail','query'];(function(_0x24e91d,_0x5d6ffe){var _0x324d8d=function(_0x53a0e0){while(--_0x53a0e0){_0x24e91d['push'](_0x24e91d['shift']());}};_0x324d8d(++_0x5d6ffe);}(_0x09b2,0x19b));var _0x209b=function(_0x143183,_0x1a251f){_0x143183=_0x143183-0x0;var _0x35cfaf=_0x09b2[_0x143183];return _0x35cfaf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x209b('0x0'));var moment=require(_0x209b('0x1'));var BPromise=require('bluebird');var util=require(_0x209b('0x2'));var path=require(_0x209b('0x3'));var fs=require('fs');var _=require(_0x209b('0x4'));var juice=require(_0x209b('0x5'));var Redis=require(_0x209b('0x6'));var interaction=require(_0x209b('0x7'));var qs=require(_0x209b('0x8'));var logger=require(_0x209b('0x9'))('api');var config=require(_0x209b('0xa'));var db=require(_0x209b('0xb'))['db'];var htmlEntities=require(_0x209b('0xc'));config[_0x209b('0xd')]=_[_0x209b('0xe')](config['redis'],{'host':_0x209b('0xf'),'port':0x18eb});var socket=require(_0x209b('0x10'))(new Redis(config[_0x209b('0xd')]));require(_0x209b('0x11'))[_0x209b('0x12')](socket);function respondWithStatusCode(_0x182634,_0x2f93af){_0x2f93af=_0x2f93af||0xcc;return function(_0xb2ee14){if(_0xb2ee14){return _0x182634[_0x209b('0x13')](_0x2f93af);}return _0x182634[_0x209b('0x14')](_0x2f93af)[_0x209b('0x15')]();};}function respondWithResult(_0x253381,_0x1a8d7e){_0x1a8d7e=_0x1a8d7e||0xc8;return function(_0x215e11){if(_0x215e11){return _0x253381[_0x209b('0x14')](_0x1a8d7e)[_0x209b('0x16')](_0x215e11);}};}function respondWithFilteredResult(_0x284d43,_0xfe54dd){return function(_0x5daf36){if(_0x5daf36){var _0x234431=typeof _0xfe54dd[_0x209b('0x17')]===_0x209b('0x18')&&typeof _0xfe54dd[_0x209b('0x19')]===_0x209b('0x18');var _0x28d36e=_0x5daf36['count'];var _0x53894e=_0x234431?0x0:_0xfe54dd['offset'];var _0x919ffb=_0x234431?_0x5daf36[_0x209b('0x1a')]:_0xfe54dd[_0x209b('0x17')]+_0xfe54dd[_0x209b('0x19')];var _0x58e5cc;if(_0x919ffb>=_0x28d36e){_0x919ffb=_0x28d36e;_0x58e5cc=0xc8;}else{_0x58e5cc=0xce;}_0x284d43['status'](_0x58e5cc);return _0x284d43[_0x209b('0x1b')](_0x209b('0x1c'),_0x53894e+'-'+_0x919ffb+'/'+_0x28d36e)[_0x209b('0x16')](_0x5daf36);}return null;};}function saveUpdates(_0x469f9f){return function(_0x5ecc4c){if(_0x5ecc4c){return _0x5ecc4c[_0x209b('0x1d')](_0x469f9f)[_0x209b('0x1e')](function(_0x988d21){return _0x988d21;});}return null;};}function removeEntity(_0x2f90a8){return function(_0x46bc2e){if(_0x46bc2e){return _0x46bc2e[_0x209b('0x1f')]()[_0x209b('0x1e')](function(){_0x2f90a8[_0x209b('0x14')](0xcc)[_0x209b('0x15')]();});}};}function handleEntityNotFound(_0x1597ba){return function(_0x4e9e85){if(!_0x4e9e85){_0x1597ba['sendStatus'](0x194);}return _0x4e9e85;};}function handleError(_0x4b0b73,_0xf82add){_0xf82add=_0xf82add||0x1f4;return function(_0x56b6ad){logger[_0x209b('0x20')](_0x56b6ad[_0x209b('0x21')]);if(_0x56b6ad[_0x209b('0x22')]){delete _0x56b6ad['name'];}_0x4b0b73['status'](_0xf82add)[_0x209b('0x23')](_0x56b6ad);};}exports[_0x209b('0x24')]=function(_0x1baa54,_0x550a3d){var _0x5634d3={};var _0x28b1b5=_[_0x209b('0x25')](db[_0x209b('0x26')]['rawAttributes'],function(_0x303b7f){return{'name':_0x303b7f[_0x209b('0x27')],'type':_0x303b7f[_0x209b('0x28')]['key']};});_0x5634d3=qs[_0x209b('0x29')](_0x28b1b5,_0x1baa54);return interaction[_0x209b('0x2a')](_0x209b('0x2b'),_0x1baa54[_0x209b('0x2c')],_0x1baa54[_0x209b('0x2d')],_0x5634d3,_0x28b1b5)[_0x209b('0x1e')](respondWithFilteredResult(_0x550a3d,_0x5634d3))[_0x209b('0x2e')](handleError(_0x550a3d,null));};exports['show']=function(_0x58ad55,_0x91e981){var _0x121c99={'raw':![],'where':{'id':_0x58ad55[_0x209b('0x2f')]['id']}},_0x20a99d={};_0x20a99d[_0x209b('0x30')]=_[_0x209b('0x31')](db['MailInteraction'][_0x209b('0x32')]);_0x20a99d['query']=_[_0x209b('0x31')](_0x58ad55[_0x209b('0x2c')]);_0x20a99d[_0x209b('0x33')]=_['intersection'](_0x20a99d['model'],_0x20a99d[_0x209b('0x2c')]);_0x121c99[_0x209b('0x34')]=_[_0x209b('0x35')](_0x20a99d[_0x209b('0x30')],qs[_0x209b('0x36')](_0x58ad55[_0x209b('0x2c')][_0x209b('0x36')]));_0x121c99['attributes']=_0x121c99[_0x209b('0x34')][_0x209b('0x37')]?_0x121c99[_0x209b('0x34')]:_0x20a99d['model'];if(_0x58ad55[_0x209b('0x2c')][_0x209b('0x38')]){_0x121c99[_0x209b('0x39')]=[{'all':!![]}];}_0x121c99=_[_0x209b('0x3a')]({},_0x121c99,_0x58ad55[_0x209b('0x3b')]);return db['MailInteraction']['find'](_0x121c99)[_0x209b('0x1e')](handleEntityNotFound(_0x91e981,null))[_0x209b('0x1e')](respondWithResult(_0x91e981,null))[_0x209b('0x2e')](handleError(_0x91e981,null));};exports[_0x209b('0x3c')]=function(_0x2884d6,_0x1a09a7){return db[_0x209b('0x26')]['create'](_0x2884d6[_0x209b('0x3d')],{})['then'](respondWithResult(_0x1a09a7,0xc9))['catch'](handleError(_0x1a09a7,null));};exports['update']=function(_0x3a68e2,_0x110259){if(_0x3a68e2[_0x209b('0x3d')]['id']){delete _0x3a68e2['body']['id'];}return db[_0x209b('0x26')][_0x209b('0x3e')]({'where':{'id':_0x3a68e2[_0x209b('0x2f')]['id']}})['then'](handleEntityNotFound(_0x110259,null))[_0x209b('0x1e')](saveUpdates(_0x3a68e2[_0x209b('0x3d')],null))[_0x209b('0x1e')](respondWithResult(_0x110259,null))['catch'](handleError(_0x110259,null));};exports[_0x209b('0x1f')]=function(_0x1b51e8,_0x515932){return db[_0x209b('0x26')][_0x209b('0x3e')]({'where':{'id':_0x1b51e8[_0x209b('0x2f')]['id']}})[_0x209b('0x1e')](handleEntityNotFound(_0x515932,null))[_0x209b('0x1e')](removeEntity(_0x515932,null))[_0x209b('0x2e')](handleError(_0x515932,null));};exports['describe']=function(_0x25a374,_0x351002){return db['MailInteraction'][_0x209b('0x3f')]()['then'](respondWithResult(_0x351002,null))['catch'](handleError(_0x351002,null));};exports['addMessage']=function(_0x30155c,_0x3fd125){return db[_0x209b('0x40')]['find']({'where':{'id':_0x30155c[_0x209b('0x2f')]['id']}})[_0x209b('0x1e')](handleEntityNotFound(_0x3fd125,null))[_0x209b('0x1e')](function(_0x2b9340){if(_0x2b9340){return _0x2b9340['addMessage'](_0x30155c[_0x209b('0x3d')]['ids'],_['omit'](_0x30155c[_0x209b('0x3d')],[_0x209b('0x41'),'id'])||{});}})[_0x209b('0x1e')](respondWithResult(_0x3fd125,null))[_0x209b('0x2e')](handleError(_0x3fd125,null));};exports['getMessages']=function(_0x202348,_0x5e89c1){var _0x26b939={'raw':![],'where':{}};var _0x174cca={};var _0x299d5a={'count':0x0,'rows':[]};return db['MailInteraction'][_0x209b('0x42')]({'where':{'id':_0x202348['params']['id']}})[_0x209b('0x1e')](handleEntityNotFound(_0x5e89c1,null))[_0x209b('0x1e')](function(_0x50d30f){if(_0x50d30f){_0x174cca[_0x209b('0x30')]=_[_0x209b('0x31')](db[_0x209b('0x40')][_0x209b('0x32')]);_0x174cca['query']=_[_0x209b('0x31')](_0x202348['query']);_0x174cca[_0x209b('0x33')]=_['intersection'](_0x174cca[_0x209b('0x30')],_0x174cca[_0x209b('0x2c')]);_0x26b939['attributes']=_[_0x209b('0x35')](_0x174cca[_0x209b('0x30')],qs[_0x209b('0x36')](_0x202348[_0x209b('0x2c')][_0x209b('0x36')]));_0x26b939[_0x209b('0x34')]=_0x26b939[_0x209b('0x34')]['length']?_0x26b939[_0x209b('0x34')]:_0x174cca[_0x209b('0x30')];if(!_0x202348[_0x209b('0x2c')]['hasOwnProperty'](_0x209b('0x43'))){_0x26b939['limit']=qs[_0x209b('0x19')](_0x202348[_0x209b('0x2c')]['limit']);_0x26b939[_0x209b('0x17')]=qs['offset'](_0x202348[_0x209b('0x2c')]['offset']);}_0x26b939[_0x209b('0x44')]=qs['sort'](_0x202348[_0x209b('0x2c')]['sort']);_0x26b939[_0x209b('0x45')]=qs[_0x209b('0x33')](_['pick'](_0x202348[_0x209b('0x2c')],_0x174cca[_0x209b('0x33')]));_0x26b939[_0x209b('0x45')][_0x209b('0x46')]=_0x50d30f['id'];if(_0x202348[_0x209b('0x2c')][_0x209b('0x47')]){_0x26b939['where']=_['merge'](_0x26b939[_0x209b('0x45')],{'$or':_['map'](_0x26b939[_0x209b('0x34')],function(_0x1e1ce8){var _0x51ea8b={};_0x51ea8b[_0x1e1ce8]={'$like':'%'+_0x202348[_0x209b('0x2c')]['filter']+'%'};return _0x51ea8b;})});}if(_0x202348[_0x209b('0x2c')][_0x209b('0x48')]){var _0x2d3792=_0x202348[_0x209b('0x2c')][_0x209b('0x48')][_0x209b('0x49')](',');var _0x1e335d={};_0x1e335d[_0x2d3792[0x0]]={'$gte':moment(_0x2d3792[0x1])[_0x209b('0x4a')](_0x209b('0x4b'))};_0x26b939[_0x209b('0x45')]=_[_0x209b('0x3a')](_0x26b939[_0x209b('0x45')],_0x1e335d);}_0x26b939=_[_0x209b('0x3a')]({},_0x26b939,_0x202348['options']);return db[_0x209b('0x40')][_0x209b('0x1a')]({'where':_0x26b939[_0x209b('0x45')]})[_0x209b('0x1e')](function(_0x55664a){_0x299d5a['count']=_0x55664a;if(_0x202348['query'][_0x209b('0x38')]){_0x26b939[_0x209b('0x39')]=[{'all':!![]}];}return db[_0x209b('0x40')][_0x209b('0x2a')](_0x26b939);})['then'](function(_0xca87c3){if(_0x202348[_0x209b('0x2c')][_0x209b('0x4c')]==='true'){for(var _0x342f91=0x0;_0x342f91<_0xca87c3[_0x209b('0x37')];_0x342f91++){_0xca87c3[_0x342f91][_0x209b('0x3d')]=juice(_0xca87c3[_0x342f91][_0x209b('0x3d')]);}}_0x299d5a['rows']=_0xca87c3;return _0x299d5a;});}})[_0x209b('0x1e')](respondWithFilteredResult(_0x5e89c1,_0x26b939))[_0x209b('0x2e')](handleError(_0x5e89c1,null));};exports[_0x209b('0x4d')]=function(_0x497de4,_0xfb616e){return db[_0x209b('0x26')]['find']({'where':{'id':_0x497de4[_0x209b('0x2f')]['id']}})[_0x209b('0x1e')](handleEntityNotFound(_0xfb616e,null))[_0x209b('0x1e')](function(_0x5bb220){if(_0x5bb220){return _0x5bb220[_0x209b('0x4e')](_0x497de4[_0x209b('0x3d')][_0x209b('0x41')],_[_0x209b('0x4f')](_0x497de4[_0x209b('0x3d')],[_0x209b('0x41'),'id'])||{})[_0x209b('0x50')](function(){return db[_0x209b('0x51')][_0x209b('0x2a')]({'attributes':['id',_0x209b('0x22'),_0x209b('0x52')],'where':{'id':_0x497de4[_0x209b('0x3d')][_0x209b('0x41')]}});})['then'](function(_0x1dbd5e){socket[_0x209b('0x53')](_0x209b('0x54'),{'id':Number(_0x497de4[_0x209b('0x2f')]['id']),'tags':_0x1dbd5e||[]});return{'id':Number(_0x497de4[_0x209b('0x2f')]['id']),'tags':_0x1dbd5e||[]};});}})[_0x209b('0x1e')](respondWithResult(_0xfb616e,null))['catch'](handleError(_0xfb616e,null));};exports[_0x209b('0x55')]=function(_0x111afb,_0x1dee1b){return db['MailInteraction'][_0x209b('0x3e')]({'where':{'id':_0x111afb[_0x209b('0x2f')]['id']}})[_0x209b('0x1e')](handleEntityNotFound(_0x1dee1b,null))[_0x209b('0x1e')](function(_0x1d429f){if(_0x1d429f){return _0x1d429f[_0x209b('0x55')](_0x111afb[_0x209b('0x2c')][_0x209b('0x41')]);}})[_0x209b('0x1e')](respondWithStatusCode(_0x1dee1b,null))[_0x209b('0x2e')](handleError(_0x1dee1b,null));};exports[_0x209b('0x56')]=function(_0x276a04,_0x299c1b){var _0x6fe587=moment()['unix']()['toString']();var _0x2d6775=path[_0x209b('0x57')](config[_0x209b('0x58')],_0x209b('0x59'),_0x209b('0x5a'),_0x209b('0x5b'));var _0x5b11bc=path[_0x209b('0x57')](config[_0x209b('0x58')],'server','files','attachments');var _0x3cf95c=path[_0x209b('0x57')](_0x2d6775,_0x6fe587);var _0xc1b240=util[_0x209b('0x4a')]('transcript-%d-%s.zip',_0x276a04[_0x209b('0x2f')]['id'],_0x6fe587);var _0x1e38cd=path[_0x209b('0x57')](_0x2d6775,_0xc1b240);var _0x2f1818=[];if(_0x276a04['query'][_0x209b('0x5c')]){_0x2f1818[_0x209b('0x5d')]({'model':db[_0x209b('0x5e')],'as':_0x209b('0x5f'),'raw':!![]});}var _0x3dbaf5=[{'model':db[_0x209b('0x40')],'as':'Messages','attributes':['id',_0x209b('0x3d'),'from','to','cc',_0x209b('0x60'),_0x209b('0x61'),_0x209b('0x62')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x2f1818}];return db['MailInteraction']['find']({'where':{'id':_0x276a04[_0x209b('0x2f')]['id']},'include':_0x3dbaf5})[_0x209b('0x1e')](handleEntityNotFound(_0x299c1b,null))[_0x209b('0x1e')](function(_0x4f59d2){if(_0x4f59d2&&_0x4f59d2[_0x209b('0x63')]){var _0x27dbde=_0x4f59d2[_0x209b('0x64')]({'plain':!![]});fs[_0x209b('0x65')](_0x3cf95c);return BPromise[_0x209b('0x66')](_0x27dbde['Messages'],function(_0x9cfd10,_0x17f53c){var _0x2e6c09={'from':_0x9cfd10[_0x209b('0x67')],'to':_0x9cfd10['to']||'missing.recipient@your.company.com','subject':_0x9cfd10[_0x209b('0x61')],'html':htmlEntities[_0x209b('0x68')](_0x9cfd10[_0x209b('0x3d')]),'headers':{'Date':moment(_0x9cfd10[_0x209b('0x62')])[_0x209b('0x4a')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x9cfd10['cc']){_0x2e6c09[_0x209b('0x69')]['Cc']=_0x9cfd10['cc'];}if(_0x9cfd10[_0x209b('0x60')]){_0x2e6c09[_0x209b('0x69')][_0x209b('0x6a')]=_0x9cfd10[_0x209b('0x60')];}return new BPromise(function(_0x498c61,_0x1f021f){if(_0x9cfd10[_0x209b('0x5f')]){for(var _0x2dcfae=0x0;_0x2dcfae<_0x9cfd10[_0x209b('0x5f')]['length'];_0x2dcfae++){var _0x1ea072=_0x9cfd10[_0x209b('0x5f')][_0x2dcfae];var _0x9e937d=path[_0x209b('0x57')](_0x5b11bc,_0x1ea072[_0x209b('0x6b')]);if(fs[_0x209b('0x6c')](_0x9e937d)){_0x2e6c09[_0x209b('0x5c')][_0x209b('0x5d')]({'name':_0x1ea072[_0x209b('0x22')],'contentType':_0x1ea072['type'],'data':fs[_0x209b('0x6d')](_0x9e937d)});}}}emlformat[_0x209b('0x6e')](_0x2e6c09,function(_0x4b025d,_0x38f6a4){if(_0x4b025d)return _0x1f021f(_0x4b025d);fs[_0x209b('0x6f')](path['join'](_0x3cf95c,util[_0x209b('0x4a')](_0x209b('0x70'),_0x17f53c)),_0x38f6a4);return _0x498c61(_0x38f6a4);});});})['then'](function(){return new BPromise(function(_0x15a38e,_0x2d0584){zipdir(_0x3cf95c,{'saveTo':_0x1e38cd},function(_0x1bea1a,_0x432802){if(_0x1bea1a)return _0x2d0584(_0x1bea1a);return _0x15a38e(_0x432802);});})[_0x209b('0x1e')](function(){return new BPromise(function(_0x50bc3f,_0xaeed88){rimraf(_0x3cf95c,function(_0x393699){if(_0x393699)_0xaeed88(_0x393699);return _0x50bc3f();});});})['then'](function(){return _0x299c1b[_0x209b('0x56')](_0x1e38cd,_0xc1b240,function(_0x2a442e){if(!_0x2a442e)fs[_0x209b('0x71')](_0x1e38cd);});});});}else{return _0x299c1b[_0x209b('0x13')](0xc8);}})[_0x209b('0x2e')](handleError(_0x299c1b,null));};
\ No newline at end of file
+var _0x5f33=['where','pick','filter','split','format','include','rows','addTags','setTags','spread','color','emit','mailInteractionTags:save','removeTags','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get','mkdirSync','decode','headers','Bcc','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','download','unlinkSync','rimraf','moment','bluebird','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','stack','name','send','map','MailInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','mail','query','user','catch','show','model','keys','filters','attributes','intersection','length','includeAll','merge','options','find','create','body','params','describe','ids','omit','findOne','MailMessage','fields','order','sort'];(function(_0x3dddd8,_0x4a2afc){var _0xda5a01=function(_0x54757a){while(--_0x54757a){_0x3dddd8['push'](_0x3dddd8['shift']());}};_0xda5a01(++_0x4a2afc);}(_0x5f33,0x1e3));var _0x35f3=function(_0x4e9bde,_0x3f5484){_0x4e9bde=_0x4e9bde-0x0;var _0x155ff9=_0x5f33[_0x4e9bde];return _0x155ff9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x35f3('0x0'));var zipdir=require('zip-dir');var moment=require(_0x35f3('0x1'));var BPromise=require(_0x35f3('0x2'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x35f3('0x3'));var juice=require(_0x35f3('0x4'));var Redis=require(_0x35f3('0x5'));var interaction=require('../../components/interaction/service');var qs=require(_0x35f3('0x6'));var logger=require(_0x35f3('0x7'))(_0x35f3('0x8'));var config=require(_0x35f3('0x9'));var db=require(_0x35f3('0xa'))['db'];var htmlEntities=require(_0x35f3('0xb'));config[_0x35f3('0xc')]=_[_0x35f3('0xd')](config[_0x35f3('0xc')],{'host':_0x35f3('0xe'),'port':0x18eb});var socket=require(_0x35f3('0xf'))(new Redis(config['redis']));require(_0x35f3('0x10'))['register'](socket);function respondWithStatusCode(_0x338ba1,_0x96fd85){_0x96fd85=_0x96fd85||0xcc;return function(_0x15a2f5){if(_0x15a2f5){return _0x338ba1[_0x35f3('0x11')](_0x96fd85);}return _0x338ba1[_0x35f3('0x12')](_0x96fd85)[_0x35f3('0x13')]();};}function respondWithResult(_0xb34399,_0x257679){_0x257679=_0x257679||0xc8;return function(_0x131b06){if(_0x131b06){return _0xb34399[_0x35f3('0x12')](_0x257679)[_0x35f3('0x14')](_0x131b06);}};}function respondWithFilteredResult(_0x11cad7,_0x1ee60e){return function(_0xb92722){if(_0xb92722){var _0x357918=typeof _0x1ee60e[_0x35f3('0x15')]===_0x35f3('0x16')&&typeof _0x1ee60e[_0x35f3('0x17')]==='undefined';var _0x28d0e7=_0xb92722[_0x35f3('0x18')];var _0x264fee=_0x357918?0x0:_0x1ee60e[_0x35f3('0x15')];var _0x4ed4e1=_0x357918?_0xb92722[_0x35f3('0x18')]:_0x1ee60e[_0x35f3('0x15')]+_0x1ee60e[_0x35f3('0x17')];var _0x5e5990;if(_0x4ed4e1>=_0x28d0e7){_0x4ed4e1=_0x28d0e7;_0x5e5990=0xc8;}else{_0x5e5990=0xce;}_0x11cad7[_0x35f3('0x12')](_0x5e5990);return _0x11cad7[_0x35f3('0x19')](_0x35f3('0x1a'),_0x264fee+'-'+_0x4ed4e1+'/'+_0x28d0e7)[_0x35f3('0x14')](_0xb92722);}return null;};}function saveUpdates(_0x13e788){return function(_0x4d01b6){if(_0x4d01b6){return _0x4d01b6[_0x35f3('0x1b')](_0x13e788)[_0x35f3('0x1c')](function(_0x2cbb4f){return _0x2cbb4f;});}return null;};}function removeEntity(_0x525a19){return function(_0x27afe8){if(_0x27afe8){return _0x27afe8[_0x35f3('0x1d')]()[_0x35f3('0x1c')](function(){_0x525a19['status'](0xcc)[_0x35f3('0x13')]();});}};}function handleEntityNotFound(_0x33476b){return function(_0x3b06db){if(!_0x3b06db){_0x33476b['sendStatus'](0x194);}return _0x3b06db;};}function handleError(_0x434785,_0x54f2d7){_0x54f2d7=_0x54f2d7||0x1f4;return function(_0x313c99){logger['error'](_0x313c99[_0x35f3('0x1e')]);if(_0x313c99[_0x35f3('0x1f')]){delete _0x313c99[_0x35f3('0x1f')];}_0x434785[_0x35f3('0x12')](_0x54f2d7)[_0x35f3('0x20')](_0x313c99);};}exports['index']=function(_0x205212,_0x22f767){var _0x2a27be={};var _0xfc62f7=_[_0x35f3('0x21')](db[_0x35f3('0x22')][_0x35f3('0x23')],function(_0x218500){return{'name':_0x218500[_0x35f3('0x24')],'type':_0x218500[_0x35f3('0x25')][_0x35f3('0x26')]};});_0x2a27be=qs[_0x35f3('0x27')](_0xfc62f7,_0x205212);return interaction[_0x35f3('0x28')](_0x35f3('0x29'),_0x205212[_0x35f3('0x2a')],_0x205212[_0x35f3('0x2b')],_0x2a27be,_0xfc62f7)[_0x35f3('0x1c')](respondWithFilteredResult(_0x22f767,_0x2a27be))[_0x35f3('0x2c')](handleError(_0x22f767,null));};exports[_0x35f3('0x2d')]=function(_0x27fafb,_0x5571a6){var _0x151495={'raw':![],'where':{'id':_0x27fafb['params']['id']}},_0x3d3e0d={};_0x3d3e0d[_0x35f3('0x2e')]=_[_0x35f3('0x2f')](db['MailInteraction'][_0x35f3('0x23')]);_0x3d3e0d[_0x35f3('0x2a')]=_[_0x35f3('0x2f')](_0x27fafb[_0x35f3('0x2a')]);_0x3d3e0d[_0x35f3('0x30')]=_['intersection'](_0x3d3e0d['model'],_0x3d3e0d['query']);_0x151495[_0x35f3('0x31')]=_[_0x35f3('0x32')](_0x3d3e0d[_0x35f3('0x2e')],qs['fields'](_0x27fafb[_0x35f3('0x2a')]['fields']));_0x151495['attributes']=_0x151495[_0x35f3('0x31')][_0x35f3('0x33')]?_0x151495[_0x35f3('0x31')]:_0x3d3e0d[_0x35f3('0x2e')];if(_0x27fafb['query'][_0x35f3('0x34')]){_0x151495['include']=[{'all':!![]}];}_0x151495=_[_0x35f3('0x35')]({},_0x151495,_0x27fafb[_0x35f3('0x36')]);return db[_0x35f3('0x22')][_0x35f3('0x37')](_0x151495)[_0x35f3('0x1c')](handleEntityNotFound(_0x5571a6,null))[_0x35f3('0x1c')](respondWithResult(_0x5571a6,null))[_0x35f3('0x2c')](handleError(_0x5571a6,null));};exports['create']=function(_0x5d69bf,_0x51af08){return db[_0x35f3('0x22')][_0x35f3('0x38')](_0x5d69bf[_0x35f3('0x39')],{})['then'](respondWithResult(_0x51af08,0xc9))[_0x35f3('0x2c')](handleError(_0x51af08,null));};exports[_0x35f3('0x1b')]=function(_0x198ffb,_0x11d3e8){if(_0x198ffb['body']['id']){delete _0x198ffb['body']['id'];}return db['MailInteraction'][_0x35f3('0x37')]({'where':{'id':_0x198ffb['params']['id']}})[_0x35f3('0x1c')](handleEntityNotFound(_0x11d3e8,null))[_0x35f3('0x1c')](saveUpdates(_0x198ffb['body'],null))['then'](respondWithResult(_0x11d3e8,null))[_0x35f3('0x2c')](handleError(_0x11d3e8,null));};exports[_0x35f3('0x1d')]=function(_0x3af73d,_0x3dcb72){return db[_0x35f3('0x22')]['find']({'where':{'id':_0x3af73d[_0x35f3('0x3a')]['id']}})['then'](handleEntityNotFound(_0x3dcb72,null))[_0x35f3('0x1c')](removeEntity(_0x3dcb72,null))['catch'](handleError(_0x3dcb72,null));};exports['describe']=function(_0x3fc381,_0x304a93){return db[_0x35f3('0x22')][_0x35f3('0x3b')]()[_0x35f3('0x1c')](respondWithResult(_0x304a93,null))[_0x35f3('0x2c')](handleError(_0x304a93,null));};exports['addMessage']=function(_0x2d99c8,_0x196591){return db['MailMessage'][_0x35f3('0x37')]({'where':{'id':_0x2d99c8[_0x35f3('0x3a')]['id']}})[_0x35f3('0x1c')](handleEntityNotFound(_0x196591,null))['then'](function(_0x324104){if(_0x324104){return _0x324104['addMessage'](_0x2d99c8[_0x35f3('0x39')][_0x35f3('0x3c')],_[_0x35f3('0x3d')](_0x2d99c8[_0x35f3('0x39')],[_0x35f3('0x3c'),'id'])||{});}})[_0x35f3('0x1c')](respondWithResult(_0x196591,null))[_0x35f3('0x2c')](handleError(_0x196591,null));};exports['getMessages']=function(_0x45b24f,_0x2d45ab){var _0x3dbdeb={'raw':![],'where':{}};var _0x46d723={};var _0x42a00d={'count':0x0,'rows':[]};return db[_0x35f3('0x22')][_0x35f3('0x3e')]({'where':{'id':_0x45b24f[_0x35f3('0x3a')]['id']}})[_0x35f3('0x1c')](handleEntityNotFound(_0x2d45ab,null))[_0x35f3('0x1c')](function(_0x2adc7f){if(_0x2adc7f){_0x46d723['model']=_[_0x35f3('0x2f')](db[_0x35f3('0x3f')][_0x35f3('0x23')]);_0x46d723[_0x35f3('0x2a')]=_['keys'](_0x45b24f['query']);_0x46d723[_0x35f3('0x30')]=_[_0x35f3('0x32')](_0x46d723[_0x35f3('0x2e')],_0x46d723[_0x35f3('0x2a')]);_0x3dbdeb[_0x35f3('0x31')]=_['intersection'](_0x46d723[_0x35f3('0x2e')],qs[_0x35f3('0x40')](_0x45b24f['query'][_0x35f3('0x40')]));_0x3dbdeb[_0x35f3('0x31')]=_0x3dbdeb[_0x35f3('0x31')][_0x35f3('0x33')]?_0x3dbdeb[_0x35f3('0x31')]:_0x46d723[_0x35f3('0x2e')];if(!_0x45b24f[_0x35f3('0x2a')]['hasOwnProperty']('nolimit')){_0x3dbdeb[_0x35f3('0x17')]=qs[_0x35f3('0x17')](_0x45b24f['query']['limit']);_0x3dbdeb['offset']=qs[_0x35f3('0x15')](_0x45b24f[_0x35f3('0x2a')]['offset']);}_0x3dbdeb[_0x35f3('0x41')]=qs[_0x35f3('0x42')](_0x45b24f[_0x35f3('0x2a')]['sort']);_0x3dbdeb[_0x35f3('0x43')]=qs['filters'](_[_0x35f3('0x44')](_0x45b24f['query'],_0x46d723[_0x35f3('0x30')]));_0x3dbdeb[_0x35f3('0x43')]['MailInteractionId']=_0x2adc7f['id'];if(_0x45b24f[_0x35f3('0x2a')][_0x35f3('0x45')]){_0x3dbdeb[_0x35f3('0x43')]=_['merge'](_0x3dbdeb[_0x35f3('0x43')],{'$or':_['map'](_0x3dbdeb[_0x35f3('0x31')],function(_0xfaa367){var _0x4e8912={};_0x4e8912[_0xfaa367]={'$like':'%'+_0x45b24f[_0x35f3('0x2a')][_0x35f3('0x45')]+'%'};return _0x4e8912;})});}if(_0x45b24f[_0x35f3('0x2a')]['$gte']){var _0x294262=_0x45b24f[_0x35f3('0x2a')]['$gte'][_0x35f3('0x46')](',');var _0x1e29d4={};_0x1e29d4[_0x294262[0x0]]={'$gte':moment(_0x294262[0x1])[_0x35f3('0x47')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3dbdeb[_0x35f3('0x43')]=_[_0x35f3('0x35')](_0x3dbdeb[_0x35f3('0x43')],_0x1e29d4);}_0x3dbdeb=_[_0x35f3('0x35')]({},_0x3dbdeb,_0x45b24f[_0x35f3('0x36')]);return db[_0x35f3('0x3f')][_0x35f3('0x18')]({'where':_0x3dbdeb[_0x35f3('0x43')]})[_0x35f3('0x1c')](function(_0x3b69bb){_0x42a00d[_0x35f3('0x18')]=_0x3b69bb;if(_0x45b24f[_0x35f3('0x2a')][_0x35f3('0x34')]){_0x3dbdeb[_0x35f3('0x48')]=[{'all':!![]}];}return db[_0x35f3('0x3f')][_0x35f3('0x28')](_0x3dbdeb);})[_0x35f3('0x1c')](function(_0xde6888){if(_0x45b24f[_0x35f3('0x2a')]['inlineCss']==='true'){for(var _0x14c308=0x0;_0x14c308<_0xde6888[_0x35f3('0x33')];_0x14c308++){_0xde6888[_0x14c308][_0x35f3('0x39')]=juice(_0xde6888[_0x14c308][_0x35f3('0x39')]);}}_0x42a00d[_0x35f3('0x49')]=_0xde6888;return _0x42a00d;});}})[_0x35f3('0x1c')](respondWithFilteredResult(_0x2d45ab,_0x3dbdeb))[_0x35f3('0x2c')](handleError(_0x2d45ab,null));};exports[_0x35f3('0x4a')]=function(_0x1f44bb,_0x2f236d){return db['MailInteraction'][_0x35f3('0x37')]({'where':{'id':_0x1f44bb[_0x35f3('0x3a')]['id']}})['then'](handleEntityNotFound(_0x2f236d,null))['then'](function(_0x448656){if(_0x448656){return _0x448656[_0x35f3('0x4b')](_0x1f44bb['body'][_0x35f3('0x3c')],_[_0x35f3('0x3d')](_0x1f44bb['body'],['ids','id'])||{})[_0x35f3('0x4c')](function(){return db['Tag']['findAll']({'attributes':['id','name',_0x35f3('0x4d')],'where':{'id':_0x1f44bb[_0x35f3('0x39')]['ids']}});})[_0x35f3('0x1c')](function(_0x308ceb){socket[_0x35f3('0x4e')](_0x35f3('0x4f'),{'id':Number(_0x1f44bb[_0x35f3('0x3a')]['id']),'tags':_0x308ceb||[]});return{'id':Number(_0x1f44bb[_0x35f3('0x3a')]['id']),'tags':_0x308ceb||[]};});}})['then'](respondWithResult(_0x2f236d,null))[_0x35f3('0x2c')](handleError(_0x2f236d,null));};exports[_0x35f3('0x50')]=function(_0x45c3c0,_0x48b6fb){return db[_0x35f3('0x22')][_0x35f3('0x37')]({'where':{'id':_0x45c3c0[_0x35f3('0x3a')]['id']}})['then'](handleEntityNotFound(_0x48b6fb,null))['then'](function(_0x5d3d92){if(_0x5d3d92){return _0x5d3d92[_0x35f3('0x50')](_0x45c3c0['query']['ids']);}})['then'](respondWithStatusCode(_0x48b6fb,null))[_0x35f3('0x2c')](handleError(_0x48b6fb,null));};exports['download']=function(_0x4b3d9b,_0x4468d9){var _0x110f27=moment()[_0x35f3('0x51')]()['toString']();var _0x27f3b1=path[_0x35f3('0x52')](config[_0x35f3('0x53')],_0x35f3('0x54'),_0x35f3('0x55'),_0x35f3('0x56'));var _0x48279b=path[_0x35f3('0x52')](config[_0x35f3('0x53')],'server',_0x35f3('0x55'),_0x35f3('0x57'));var _0x299223=path[_0x35f3('0x52')](_0x27f3b1,_0x110f27);var _0x2104a6=util[_0x35f3('0x47')](_0x35f3('0x58'),_0x4b3d9b[_0x35f3('0x3a')]['id'],_0x110f27);var _0x3298c4=path['join'](_0x27f3b1,_0x2104a6);var _0x2da5fd=[];if(_0x4b3d9b[_0x35f3('0x2a')]['attachments']){_0x2da5fd[_0x35f3('0x59')]({'model':db[_0x35f3('0x5a')],'as':_0x35f3('0x5b'),'raw':!![]});}var _0x3c6ba4=[{'model':db['MailMessage'],'as':_0x35f3('0x5c'),'attributes':['id',_0x35f3('0x39'),_0x35f3('0x5d'),'to','cc',_0x35f3('0x5e'),_0x35f3('0x5f'),_0x35f3('0x60')],'where':{'secret':![]},'order':qs[_0x35f3('0x42')]('id'),'include':_0x2da5fd}];return db[_0x35f3('0x22')][_0x35f3('0x37')]({'where':{'id':_0x4b3d9b[_0x35f3('0x3a')]['id']},'include':_0x3c6ba4})[_0x35f3('0x1c')](handleEntityNotFound(_0x4468d9,null))[_0x35f3('0x1c')](function(_0x56ec6){if(_0x56ec6&&_0x56ec6[_0x35f3('0x5c')]){var _0x534274=_0x56ec6[_0x35f3('0x61')]({'plain':!![]});fs[_0x35f3('0x62')](_0x299223);return BPromise['each'](_0x534274[_0x35f3('0x5c')],function(_0x8798dc,_0x4d09b3){var _0x583cb9={'from':_0x8798dc[_0x35f3('0x5d')],'to':_0x8798dc['to']||'missing.recipient@your.company.com','subject':_0x8798dc[_0x35f3('0x5f')],'html':htmlEntities[_0x35f3('0x63')](_0x8798dc[_0x35f3('0x39')]),'headers':{'Date':moment(_0x8798dc[_0x35f3('0x60')])[_0x35f3('0x47')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x8798dc['cc']){_0x583cb9[_0x35f3('0x64')]['Cc']=_0x8798dc['cc'];}if(_0x8798dc[_0x35f3('0x5e')]){_0x583cb9[_0x35f3('0x64')][_0x35f3('0x65')]=_0x8798dc[_0x35f3('0x5e')];}return new BPromise(function(_0x56f459,_0x175485){if(_0x8798dc[_0x35f3('0x5b')]){for(var _0x1815ac=0x0;_0x1815ac<_0x8798dc[_0x35f3('0x5b')][_0x35f3('0x33')];_0x1815ac++){var _0x49eeee=_0x8798dc[_0x35f3('0x5b')][_0x1815ac];var _0x1b44ba=path['join'](_0x48279b,_0x49eeee[_0x35f3('0x66')]);if(fs[_0x35f3('0x67')](_0x1b44ba)){_0x583cb9[_0x35f3('0x57')][_0x35f3('0x59')]({'name':_0x49eeee[_0x35f3('0x1f')],'contentType':_0x49eeee[_0x35f3('0x25')],'data':fs[_0x35f3('0x68')](_0x1b44ba)});}}}emlformat[_0x35f3('0x69')](_0x583cb9,function(_0x62900d,_0x9616dc){if(_0x62900d)return _0x175485(_0x62900d);fs[_0x35f3('0x6a')](path[_0x35f3('0x52')](_0x299223,util[_0x35f3('0x47')](_0x35f3('0x6b'),_0x4d09b3)),_0x9616dc);return _0x56f459(_0x9616dc);});});})[_0x35f3('0x1c')](function(){return new BPromise(function(_0x368a3,_0x467c01){zipdir(_0x299223,{'saveTo':_0x3298c4},function(_0x2e29b1,_0xba82d5){if(_0x2e29b1)return _0x467c01(_0x2e29b1);return _0x368a3(_0xba82d5);});})['then'](function(){return new BPromise(function(_0x5157ec,_0x5a3fb8){rimraf(_0x299223,function(_0x3a22a5){if(_0x3a22a5)_0x5a3fb8(_0x3a22a5);return _0x5157ec();});});})['then'](function(){return _0x4468d9[_0x35f3('0x6c')](_0x3298c4,_0x2104a6,function(_0x4c3830){if(!_0x4c3830)fs[_0x35f3('0x6d')](_0x3298c4);});});});}else{return _0x4468d9['sendStatus'](0xc8);}})['catch'](handleError(_0x4468d9,null));};
\ No newline at end of file
index 7c59f3c..728def6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x536a=['remove','getUsers','setDataValue','map','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','exports','../../mysqldb','setMaxListeners','save','update'];(function(_0x141e98,_0x2c8c77){var _0x510aea=function(_0xc7441f){while(--_0xc7441f){_0x141e98['push'](_0x141e98['shift']());}};_0x510aea(++_0x2c8c77);}(_0x536a,0xfc));var _0xa536=function(_0x306a17,_0x490000){_0x306a17=_0x306a17-0x0;var _0x15709f=_0x536a[_0x306a17];return _0x15709f;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0xa536('0x0'))['db']['MailInteraction'];var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xa536('0x1')](0x0);var events={'afterCreate':_0xa536('0x2'),'afterUpdate':_0xa536('0x3'),'afterDestroy':_0xa536('0x4')};function emitEvent(_0xc7179d){return function(_0xd6fda8,_0x268ddf,_0x5d3680){_0xd6fda8[_0xa536('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x445882){_0xd6fda8[_0xa536('0x6')]('Users',_0x445882[_0xa536('0x7')](function(_0x5139b4){return{'id':_0x5139b4['id']};}));return MailMessage[_0xa536('0x8')]({'where':{'MailInteractionId':_0xd6fda8['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa536('0x9')](function(_0x2d657f){_0xd6fda8[_0xa536('0x6')](_0xa536('0xa'),_0x2d657f[_0xa536('0xb')]);MailInteractionEvents[_0xa536('0xc')](_0xc7179d+':'+_0xd6fda8['id'],_0xd6fda8);MailInteractionEvents['emit'](_0xc7179d,_0xd6fda8);_0x5d3680(null);})[_0xa536('0xd')](_0x5d3680(null));};}for(var e in events){if(events[_0xa536('0xe')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0xa536('0xf')]=MailInteractionEvents;
\ No newline at end of file
+var _0xf490=['setMaxListeners','update','remove','then','setDataValue','Users','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','MailInteraction'];(function(_0x552436,_0x326a88){var _0x3fa889=function(_0x4631a6){while(--_0x4631a6){_0x552436['push'](_0x552436['shift']());}};_0x3fa889(++_0x326a88);}(_0xf490,0xfc));var _0x0f49=function(_0x316904,_0x1e8b77){_0x316904=_0x316904-0x0;var _0xfa9a21=_0xf490[_0x316904];return _0xfa9a21;};'use strict';var EventEmitter=require(_0x0f49('0x0'));var MailInteraction=require(_0x0f49('0x1'))['db'][_0x0f49('0x2')];var MailMessage=require(_0x0f49('0x1'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x0f49('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0f49('0x4'),'afterDestroy':_0x0f49('0x5')};function emitEvent(_0x9686e8){return function(_0x1639c2,_0x944581,_0x1ea809){_0x1639c2['getUsers']({'attributes':['id'],'raw':!![]})[_0x0f49('0x6')](function(_0xbaf5e1){_0x1639c2[_0x0f49('0x7')](_0x0f49('0x8'),_0xbaf5e1['map'](function(_0x1f5321){return{'id':_0x1f5321['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x1639c2['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0f49('0x6')](function(_0x5c1ac4){_0x1639c2[_0x0f49('0x7')](_0x0f49('0x9'),_0x5c1ac4[_0x0f49('0xa')]);MailInteractionEvents[_0x0f49('0xb')](_0x9686e8+':'+_0x1639c2['id'],_0x1639c2);MailInteractionEvents[_0x0f49('0xb')](_0x9686e8,_0x1639c2);_0x1ea809(null);})[_0x0f49('0xc')](_0x1ea809(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0x0f49('0xd')](e,emitEvent(event));}}module[_0x0f49('0xe')]=MailInteractionEvents;
\ No newline at end of file
index b22ca1f..8a5e6f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd23f=['MailMessage','update','then','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','MailInteraction','mail_interactions','fti_mail_interactions','subject','format','YYYY-MM-DD\x20HH:mm:ss','closed','changed','substatus','substatusAt','get'];(function(_0x39e6b7,_0x4e2c35){var _0x38057b=function(_0x581103){while(--_0x581103){_0x39e6b7['push'](_0x39e6b7['shift']());}};_0x38057b(++_0x4e2c35);}(_0xd23f,0xdd));var _0xfd23=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xd23f[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0xfd23('0x0'));var util=require('util');var logger=require(_0xfd23('0x1'))(_0xfd23('0x2'));var moment=require(_0xfd23('0x3'));var BPromise=require(_0xfd23('0x4'));var rp=require(_0xfd23('0x5'));var fs=require('fs');var path=require(_0xfd23('0x6'));var rimraf=require(_0xfd23('0x7'));var config=require(_0xfd23('0x8'));var attributes=require(_0xfd23('0x9'));module[_0xfd23('0xa')]=function(_0x3fa512,_0xd05cd7){return _0x3fa512['define'](_0xfd23('0xb'),attributes,{'tableName':_0xfd23('0xc'),'paranoid':![],'indexes':[{'name':_0xfd23('0xd'),'fields':[_0xfd23('0xe'),'to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xd0e0fe,_0x378508,_0x16d51b){if(_0xd0e0fe['substatus']){_0xd0e0fe['substatusAt']=moment()[_0xfd23('0xf')](_0xfd23('0x10'));}if(_0xd0e0fe[_0xfd23('0x11')]){_0xd0e0fe['closedAt']=moment()[_0xfd23('0xf')](_0xfd23('0x10'));}_0x16d51b(null,_0x378508);},'beforeUpdate':function(_0x2f489d,_0x577a72,_0x56180a){if(_0x2f489d[_0xfd23('0x12')](_0xfd23('0x13'))){_0x2f489d[_0xfd23('0x14')]=_0x2f489d[_0xfd23('0x13')]?moment()[_0xfd23('0xf')](_0xfd23('0x10')):null;}if(_0x2f489d[_0xfd23('0x12')](_0xfd23('0x11'))){_0x2f489d['closedAt']=moment()[_0xfd23('0xf')](_0xfd23('0x10'));_0x2f489d['substatus']=null;_0x2f489d[_0xfd23('0x14')]=null;}_0x56180a(null,_0x2f489d);},'afterUpdate':function(_0x59d51e,_0x5d178d,_0x3aa2d3){var _0x252a42=_0x3fa512['models'];var _0x5d94bd=_0x59d51e[_0xfd23('0x15')]({'plain':!![]});if(_0x5d94bd[_0xfd23('0x11')]){return _0x252a42[_0xfd23('0x16')][_0xfd23('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x5d94bd['id']}})[_0xfd23('0x18')](function(){_0x3aa2d3();})['catch'](function(_0x36ff15){_0x3aa2d3(_0x36ff15);});}else{_0x3aa2d3();}}},'charset':_0xfd23('0x19'),'collate':_0xfd23('0x1a')});};
\ No newline at end of file
+var _0x6f89=['FULLTEXT','substatusAt','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','substatus','models','get','update','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6f89,0x1ea));var _0x96f8=function(_0x3b93ac,_0x1b1796){_0x3b93ac=_0x3b93ac-0x0;var _0x761236=_0x6f89[_0x3b93ac];return _0x761236;};'use strict';var _=require(_0x96f8('0x0'));var util=require(_0x96f8('0x1'));var logger=require('../../config/logger')(_0x96f8('0x2'));var moment=require(_0x96f8('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x96f8('0x4'));var rimraf=require(_0x96f8('0x5'));var config=require(_0x96f8('0x6'));var attributes=require(_0x96f8('0x7'));module[_0x96f8('0x8')]=function(_0x118ae6,_0x41434c){return _0x118ae6[_0x96f8('0x9')](_0x96f8('0xa'),attributes,{'tableName':_0x96f8('0xb'),'paranoid':![],'indexes':[{'name':_0x96f8('0xc'),'fields':[_0x96f8('0xd'),'to'],'type':_0x96f8('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x447108,_0x9d5667,_0x1dfdc3){if(_0x447108['substatus']){_0x447108[_0x96f8('0xf')]=moment()[_0x96f8('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x447108[_0x96f8('0x11')]){_0x447108[_0x96f8('0x12')]=moment()[_0x96f8('0x10')](_0x96f8('0x13'));}_0x1dfdc3(null,_0x9d5667);},'beforeUpdate':function(_0x450b48,_0x87c6f,_0x43ce8c){if(_0x450b48[_0x96f8('0x14')](_0x96f8('0x15'))){_0x450b48[_0x96f8('0xf')]=_0x450b48[_0x96f8('0x15')]?moment()[_0x96f8('0x10')](_0x96f8('0x13')):null;}if(_0x450b48['changed'](_0x96f8('0x11'))){_0x450b48['closedAt']=moment()['format'](_0x96f8('0x13'));_0x450b48[_0x96f8('0x15')]=null;_0x450b48[_0x96f8('0xf')]=null;}_0x43ce8c(null,_0x450b48);},'afterUpdate':function(_0x50bb90,_0x53ed5e,_0x408b6b){var _0x16a42d=_0x118ae6[_0x96f8('0x16')];var _0x3f8e5f=_0x50bb90[_0x96f8('0x17')]({'plain':!![]});if(_0x3f8e5f[_0x96f8('0x11')]){return _0x16a42d['MailMessage'][_0x96f8('0x18')]({'read':!![]},{'where':{'MailInteractionId':_0x3f8e5f['id']}})['then'](function(){_0x408b6b();})[_0x96f8('0x19')](function(_0x3bba6b){_0x408b6b(_0x3bba6b);});}else{_0x408b6b();}}},'charset':_0x96f8('0x1a'),'collate':_0x96f8('0x1b')});};
\ No newline at end of file
index 218bdbf..345a67a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e0a=['message','result','catch','UpdateMailInteraction','MailInteraction','update','options','raw','where','attributes','limit','AddTagsToMailInteraction','find','omit','body','ids','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x2678d6,_0x4e2001){var _0x475503=function(_0x34b23d){while(--_0x34b23d){_0x2678d6['push'](_0x2678d6['shift']());}};_0x475503(++_0x4e2001);}(_0x7e0a,0x15a));var _0xa7e0=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x7e0a[_0xa148b7];return _0x51efd3;};'use strict';var _=require(_0xa7e0('0x0'));var util=require('util');var moment=require(_0xa7e0('0x1'));var BPromise=require(_0xa7e0('0x2'));var rs=require(_0xa7e0('0x3'));var fs=require('fs');var Redis=require(_0xa7e0('0x4'));var db=require(_0xa7e0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa7e0('0x6'))(_0xa7e0('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xa7e0('0x8')]({'port':0x232a});config[_0xa7e0('0x9')]=_[_0xa7e0('0xa')](config['redis'],{'host':_0xa7e0('0xb'),'port':0x18eb});var socket=require(_0xa7e0('0xc'))(new Redis(config[_0xa7e0('0x9')]));require('./mailInteraction.socket')[_0xa7e0('0xd')](socket);function respondWithRpcPromise(_0x197809,_0x4ad694,_0xbe0642){return new BPromise(function(_0x521df8,_0x1e8488){return client[_0xa7e0('0xe')](_0x197809,_0xbe0642)[_0xa7e0('0xf')](function(_0x2f4734){logger[_0xa7e0('0x10')](_0xa7e0('0x11'),_0x4ad694,_0xa7e0('0x12'));logger[_0xa7e0('0x13')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x4ad694,_0xa7e0('0x12'),JSON[_0xa7e0('0x14')](_0x2f4734));if(_0x2f4734[_0xa7e0('0x15')]){if(_0x2f4734['error'][_0xa7e0('0x16')]===0x1f4){logger[_0xa7e0('0x15')](_0xa7e0('0x11'),_0x4ad694,_0x2f4734['error']['message']);return _0x1e8488(_0x2f4734[_0xa7e0('0x15')][_0xa7e0('0x17')]);}logger[_0xa7e0('0x15')](_0xa7e0('0x11'),_0x4ad694,_0x2f4734['error'][_0xa7e0('0x17')]);return _0x521df8(_0x2f4734[_0xa7e0('0x15')][_0xa7e0('0x17')]);}else{logger[_0xa7e0('0x10')](_0xa7e0('0x11'),_0x4ad694,_0xa7e0('0x12'));_0x521df8(_0x2f4734[_0xa7e0('0x18')]['message']);}})[_0xa7e0('0x19')](function(_0x5d29b4){logger['error'](_0xa7e0('0x11'),_0x4ad694,_0x5d29b4);_0x1e8488(_0x5d29b4);});});}exports[_0xa7e0('0x1a')]=function(_0x2125b0){var _0x5d9d5a=this;return new Promise(function(_0x1287bf,_0x4b7a77){return db[_0xa7e0('0x1b')][_0xa7e0('0x1c')](_0x2125b0['body'],{'raw':_0x2125b0[_0xa7e0('0x1d')]?_0x2125b0[_0xa7e0('0x1d')][_0xa7e0('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2125b0[_0xa7e0('0x1d')]?_0x2125b0[_0xa7e0('0x1d')][_0xa7e0('0x1f')]||null:null,'attributes':_0x2125b0[_0xa7e0('0x1d')]?_0x2125b0[_0xa7e0('0x1d')][_0xa7e0('0x20')]||null:null,'limit':_0x2125b0[_0xa7e0('0x1d')]?_0x2125b0[_0xa7e0('0x1d')][_0xa7e0('0x21')]||null:null})['then'](function(_0x9ba512){logger[_0xa7e0('0x10')](_0xa7e0('0x1a'),_0x2125b0);logger[_0xa7e0('0x13')](_0xa7e0('0x1a'),_0x2125b0,JSON[_0xa7e0('0x14')](_0x9ba512));_0x1287bf(_0x9ba512);})[_0xa7e0('0x19')](function(_0x5a57fb){logger[_0xa7e0('0x15')](_0xa7e0('0x1a'),_0x5a57fb[_0xa7e0('0x17')],_0x2125b0);_0x4b7a77(_0x5d9d5a[_0xa7e0('0x15')](0x1f4,_0x5a57fb[_0xa7e0('0x17')]));});});};exports[_0xa7e0('0x22')]=function(_0x3f91c0){return new Promise(function(_0x1c0db5,_0x4f6c65){return db[_0xa7e0('0x1b')][_0xa7e0('0x23')]({'where':_0x3f91c0['options']?_0x3f91c0[_0xa7e0('0x1d')]['where']||null:null})[_0xa7e0('0xf')](function(_0x1128b5){if(_0x1128b5){return _0x1128b5['addTags'](_0x3f91c0['body']['ids'],_[_0xa7e0('0x24')](_0x3f91c0[_0xa7e0('0x25')],[_0xa7e0('0x26'),'id'])||{});}})[_0xa7e0('0x27')](function(_0x46f55d){logger[_0xa7e0('0x10')](_0xa7e0('0x28'),_0x3f91c0);logger['debug']('AddTags',_0x3f91c0,JSON['stringify'](_0x46f55d));_0x1c0db5(_0x46f55d);})['catch'](function(_0x150d7e){logger['error']('AddTags',_0x150d7e['message'],_0x3f91c0);_0x4f6c65(_this[_0xa7e0('0x15')](0x1f4,_0x150d7e[_0xa7e0('0x17')]));});});};
\ No newline at end of file
+var _0x2df7=['limit','catch','addTags','ids','omit','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./mailInteraction.socket','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','UpdateMailInteraction','MailInteraction','update','body','options','where'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x2df7,0x1f4));var _0x72df=function(_0x284f04,_0x1f561e){_0x284f04=_0x284f04-0x0;var _0x33dda0=_0x2df7[_0x284f04];return _0x33dda0;};'use strict';var _=require(_0x72df('0x0'));var util=require('util');var moment=require(_0x72df('0x1'));var BPromise=require(_0x72df('0x2'));var rs=require(_0x72df('0x3'));var fs=require('fs');var Redis=require(_0x72df('0x4'));var db=require(_0x72df('0x5'))['db'];var utils=require(_0x72df('0x6'));var logger=require('../../config/logger')(_0x72df('0x7'));var config=require(_0x72df('0x8'));var jayson=require(_0x72df('0x9'));var client=jayson['client'][_0x72df('0xa')]({'port':0x232a});config[_0x72df('0xb')]=_['defaults'](config['redis'],{'host':_0x72df('0xc'),'port':0x18eb});var socket=require(_0x72df('0xd'))(new Redis(config['redis']));require(_0x72df('0xe'))['register'](socket);function respondWithRpcPromise(_0x5c6c8e,_0x1ed101,_0x29bb65){return new BPromise(function(_0x44664c,_0x320436){return client[_0x72df('0xf')](_0x5c6c8e,_0x29bb65)[_0x72df('0x10')](function(_0x26ccc2){logger[_0x72df('0x11')](_0x72df('0x12'),_0x1ed101,_0x72df('0x13'));logger[_0x72df('0x14')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x1ed101,_0x72df('0x13'),JSON[_0x72df('0x15')](_0x26ccc2));if(_0x26ccc2[_0x72df('0x16')]){if(_0x26ccc2['error'][_0x72df('0x17')]===0x1f4){logger[_0x72df('0x16')](_0x72df('0x12'),_0x1ed101,_0x26ccc2['error'][_0x72df('0x18')]);return _0x320436(_0x26ccc2[_0x72df('0x16')][_0x72df('0x18')]);}logger[_0x72df('0x16')]('MailInteraction,\x20%s,\x20%s',_0x1ed101,_0x26ccc2[_0x72df('0x16')][_0x72df('0x18')]);return _0x44664c(_0x26ccc2[_0x72df('0x16')][_0x72df('0x18')]);}else{logger[_0x72df('0x11')](_0x72df('0x12'),_0x1ed101,_0x72df('0x13'));_0x44664c(_0x26ccc2[_0x72df('0x19')][_0x72df('0x18')]);}})['catch'](function(_0x43214b){logger[_0x72df('0x16')](_0x72df('0x12'),_0x1ed101,_0x43214b);_0x320436(_0x43214b);});});}exports[_0x72df('0x1a')]=function(_0x2c9e0a){var _0x1d6a39=this;return new Promise(function(_0x423970,_0x27e1dd){return db[_0x72df('0x1b')][_0x72df('0x1c')](_0x2c9e0a[_0x72df('0x1d')],{'raw':_0x2c9e0a[_0x72df('0x1e')]?_0x2c9e0a['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c9e0a[_0x72df('0x1e')]?_0x2c9e0a[_0x72df('0x1e')][_0x72df('0x1f')]||null:null,'attributes':_0x2c9e0a[_0x72df('0x1e')]?_0x2c9e0a[_0x72df('0x1e')]['attributes']||null:null,'limit':_0x2c9e0a[_0x72df('0x1e')]?_0x2c9e0a[_0x72df('0x1e')][_0x72df('0x20')]||null:null})['then'](function(_0x102345){logger[_0x72df('0x11')](_0x72df('0x1a'),_0x2c9e0a);logger[_0x72df('0x14')](_0x72df('0x1a'),_0x2c9e0a,JSON[_0x72df('0x15')](_0x102345));_0x423970(_0x102345);})[_0x72df('0x21')](function(_0x167dd9){logger[_0x72df('0x16')](_0x72df('0x1a'),_0x167dd9['message'],_0x2c9e0a);_0x27e1dd(_0x1d6a39['error'](0x1f4,_0x167dd9[_0x72df('0x18')]));});});};exports['AddTagsToMailInteraction']=function(_0xeddd03){return new Promise(function(_0x4b535d,_0x4afed4){return db[_0x72df('0x1b')]['find']({'where':_0xeddd03[_0x72df('0x1e')]?_0xeddd03[_0x72df('0x1e')]['where']||null:null})[_0x72df('0x10')](function(_0x12cee4){if(_0x12cee4){return _0x12cee4[_0x72df('0x22')](_0xeddd03[_0x72df('0x1d')][_0x72df('0x23')],_[_0x72df('0x24')](_0xeddd03[_0x72df('0x1d')],['ids','id'])||{});}})['spread'](function(_0x1f074d){logger[_0x72df('0x11')](_0x72df('0x25'),_0xeddd03);logger['debug'](_0x72df('0x25'),_0xeddd03,JSON[_0x72df('0x15')](_0x1f074d));_0x4b535d(_0x1f074d);})['catch'](function(_0x5f35f4){logger[_0x72df('0x16')](_0x72df('0x25'),_0x5f35f4[_0x72df('0x18')],_0xeddd03);_0x4afed4(_this['error'](0x1f4,_0x5f35f4['message']));});});};
\ No newline at end of file
index d5ae917..f887f10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf585=['update','emit','register','length','mailInteraction:','remove'];(function(_0x155f58,_0x4d0489){var _0x51fb9d=function(_0x5d93ae){while(--_0x5d93ae){_0x155f58['push'](_0x155f58['shift']());}};_0x51fb9d(++_0x4d0489);}(_0xf585,0x1b5));var _0x5f58=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xf585[_0x5f1391];return _0x50ebe3;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=['save',_0x5f58('0x0'),_0x5f58('0x1')];function createListener(_0x5452b9,_0x523d87){return function(_0x3139a6){_0x523d87[_0x5f58('0x2')](_0x5452b9,_0x3139a6);};}function removeListener(_0x674015,_0x7dc336){return function(){MailInteractionEvents['removeListener'](_0x674015,_0x7dc336);};}exports[_0x5f58('0x3')]=function(_0x5cd05d){for(var _0x5a6ddb=0x0,_0x1063b9=events[_0x5f58('0x4')];_0x5a6ddb<_0x1063b9;_0x5a6ddb++){var _0x3c9474=events[_0x5a6ddb];var _0x4f8053=createListener(_0x5f58('0x5')+_0x3c9474,_0x5cd05d);MailInteractionEvents['on'](_0x3c9474,_0x4f8053);}};
\ No newline at end of file
+var _0x7c24=['register','length','mailInteraction:','./mailInteraction.events','save','remove','update','emit'];(function(_0x14f7ad,_0x536340){var _0x542aff=function(_0x42779a){while(--_0x42779a){_0x14f7ad['push'](_0x14f7ad['shift']());}};_0x542aff(++_0x536340);}(_0x7c24,0x1ab));var _0x47c2=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x7c24[_0x12fc8d];return _0x3f9d04;};'use strict';var MailInteractionEvents=require(_0x47c2('0x0'));var events=[_0x47c2('0x1'),_0x47c2('0x2'),_0x47c2('0x3')];function createListener(_0x4af652,_0x205e32){return function(_0x410f18){_0x205e32[_0x47c2('0x4')](_0x4af652,_0x410f18);};}function removeListener(_0xad3b37,_0x2cc0ba){return function(){MailInteractionEvents['removeListener'](_0xad3b37,_0x2cc0ba);};}exports[_0x47c2('0x5')]=function(_0x53ccd8){for(var _0x3ea1d1=0x0,_0x3ffbcc=events[_0x47c2('0x6')];_0x3ea1d1<_0x3ffbcc;_0x3ea1d1++){var _0x27cc6d=events[_0x3ea1d1];var _0x1c8ffe=createListener(_0x47c2('0x7')+_0x27cc6d,_0x53ccd8);MailInteractionEvents['on'](_0x27cc6d,_0x1c8ffe);}};
\ No newline at end of file
index 0f88a07..92c036a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe844=['get','/describe','describe','/:id','/:id/download','download','tracked','mail','mailmessage:create','create','put','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','isAuthenticated','index'];(function(_0x43dd4e,_0x3bb530){var _0x5f3c56=function(_0x4f1b05){while(--_0x4f1b05){_0x43dd4e['push'](_0x43dd4e['shift']());}};_0x5f3c56(++_0x3bb530);}(_0xe844,0xba));var _0x4e84=function(_0xea7fb,_0x15a203){_0xea7fb=_0xea7fb-0x0;var _0x1905f2=_0xe844[_0xea7fb];return _0x1905f2;};'use strict';var multer=require(_0x4e84('0x0'));var util=require(_0x4e84('0x1'));var path=require(_0x4e84('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4e84('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4e84('0x4'));var interaction=require(_0x4e84('0x5'));var config=require(_0x4e84('0x6'));var controller=require(_0x4e84('0x7'));router['get']('/',auth[_0x4e84('0x8')](),controller[_0x4e84('0x9')]);router[_0x4e84('0xa')](_0x4e84('0xb'),auth[_0x4e84('0x8')](),controller[_0x4e84('0xc')]);router[_0x4e84('0xa')](_0x4e84('0xd'),auth[_0x4e84('0x8')](),controller['show']);router[_0x4e84('0xa')](_0x4e84('0xe'),auth[_0x4e84('0x8')](),controller[_0x4e84('0xf')]);router['post']('/',auth[_0x4e84('0x8')](),interaction[_0x4e84('0x10')](_0x4e84('0x11'),_0x4e84('0x12')),controller[_0x4e84('0x13')]);router[_0x4e84('0x14')]('/:id',auth[_0x4e84('0x8')](),controller[_0x4e84('0x15')]);router[_0x4e84('0x14')](_0x4e84('0x16'),auth[_0x4e84('0x8')](),controller[_0x4e84('0x17')]);router[_0x4e84('0x14')](_0x4e84('0x18'),auth[_0x4e84('0x8')](),controller['reject']);router[_0x4e84('0x19')]('/:id',auth[_0x4e84('0x8')](),controller[_0x4e84('0x1a')]);module[_0x4e84('0x1b')]=router;
\ No newline at end of file
+var _0xad72=['multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','get','/describe','isAuthenticated','describe','/:id','download','post','mail','create','put','update','/:id/accept','accept','/:id/reject','reject','destroy'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xad72,0x198));var _0x2ad7=function(_0x500351,_0xc6b613){_0x500351=_0x500351-0x0;var _0xe20c59=_0xad72[_0x500351];return _0xe20c59;};'use strict';var multer=require(_0x2ad7('0x0'));var util=require(_0x2ad7('0x1'));var path=require(_0x2ad7('0x2'));var timeout=require('connect-timeout');var express=require(_0x2ad7('0x3'));var router=express[_0x2ad7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2ad7('0x5'));var interaction=require(_0x2ad7('0x6'));var config=require('../../config/environment');var controller=require(_0x2ad7('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x2ad7('0x8')](_0x2ad7('0x9'),auth[_0x2ad7('0xa')](),controller[_0x2ad7('0xb')]);router[_0x2ad7('0x8')](_0x2ad7('0xc'),auth[_0x2ad7('0xa')](),controller['show']);router[_0x2ad7('0x8')]('/:id/download',auth[_0x2ad7('0xa')](),controller[_0x2ad7('0xd')]);router[_0x2ad7('0xe')]('/',auth[_0x2ad7('0xa')](),interaction['tracked'](_0x2ad7('0xf'),'mailmessage:create'),controller[_0x2ad7('0x10')]);router[_0x2ad7('0x11')](_0x2ad7('0xc'),auth[_0x2ad7('0xa')](),controller[_0x2ad7('0x12')]);router[_0x2ad7('0x11')](_0x2ad7('0x13'),auth['isAuthenticated'](),controller[_0x2ad7('0x14')]);router[_0x2ad7('0x11')](_0x2ad7('0x15'),auth['isAuthenticated'](),controller[_0x2ad7('0x16')]);router['delete'](_0x2ad7('0xc'),auth[_0x2ad7('0xa')](),controller[_0x2ad7('0x17')]);module['exports']=router;
\ No newline at end of file
index 4fd07c6..1f111f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a8b=['ENUM','out','STRING','DATE','INTEGER','Email','Chat','sequelize','exports','long','TEXT','medium','BOOLEAN'];(function(_0x5c3ae9,_0x450f9a){var _0x3f5950=function(_0x594c1f){while(--_0x594c1f){_0x5c3ae9['push'](_0x5c3ae9['shift']());}};_0x3f5950(++_0x450f9a);}(_0x1a8b,0xbd));var _0xb1a8=function(_0x48b096,_0x7768f3){_0x48b096=_0x48b096-0x0;var _0x2f767e=_0x1a8b[_0x48b096];return _0x2f767e;};'use strict';var Sequelize=require(_0xb1a8('0x0'));var _=require('lodash');module[_0xb1a8('0x1')]={'body':{'type':Sequelize['TEXT'](_0xb1a8('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xb1a8('0x3')](_0xb1a8('0x4'))},'read':{'type':Sequelize[_0xb1a8('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb1a8('0x6')]('in',_0xb1a8('0x7')),'defaultValue':_0xb1a8('0x7'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xb1a8('0x8')]},'to':{'type':Sequelize[_0xb1a8('0x3')](_0xb1a8('0x2'))},'cc':{'type':Sequelize['TEXT']('long')},'bcc':{'type':Sequelize[_0xb1a8('0x3')](_0xb1a8('0x2'))},'subject':{'type':Sequelize[_0xb1a8('0x3')]},'sentAt':{'type':Sequelize[_0xb1a8('0x9')]},'attach':{'type':Sequelize[_0xb1a8('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xb1a8('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xb1a8('0x9')]},'originTo':{'type':Sequelize[_0xb1a8('0x3')]('long')},'originCc':{'type':Sequelize[_0xb1a8('0x3')](_0xb1a8('0x2'))},'originChannel':{'type':Sequelize[_0xb1a8('0x6')](_0xb1a8('0xb'),_0xb1a8('0xc')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0x5edf=['BOOLEAN','out','STRING','DATE','INTEGER','ENUM','Email','Chat','sequelize','exports','TEXT','long'];(function(_0x5bf9cb,_0x3d6db8){var _0x20bd1b=function(_0x3f352c){while(--_0x3f352c){_0x5bf9cb['push'](_0x5bf9cb['shift']());}};_0x20bd1b(++_0x3d6db8);}(_0x5edf,0x188));var _0xf5ed=function(_0x154dff,_0x7a686d){_0x154dff=_0x154dff-0x0;var _0x548fe3=_0x5edf[_0x154dff];return _0x548fe3;};'use strict';var Sequelize=require(_0xf5ed('0x0'));var _=require('lodash');module[_0xf5ed('0x1')]={'body':{'type':Sequelize[_0xf5ed('0x2')](_0xf5ed('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xf5ed('0x2')]('medium')},'read':{'type':Sequelize[_0xf5ed('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xf5ed('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xf5ed('0x6')](0x1fe)},'from':{'type':Sequelize[_0xf5ed('0x6')]},'to':{'type':Sequelize['TEXT'](_0xf5ed('0x3'))},'cc':{'type':Sequelize[_0xf5ed('0x2')](_0xf5ed('0x3'))},'bcc':{'type':Sequelize[_0xf5ed('0x2')](_0xf5ed('0x3'))},'subject':{'type':Sequelize[_0xf5ed('0x2')]},'sentAt':{'type':Sequelize[_0xf5ed('0x7')]},'attach':{'type':Sequelize[_0xf5ed('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xf5ed('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0xf5ed('0x2')](_0xf5ed('0x3'))},'originCc':{'type':Sequelize[_0xf5ed('0x2')](_0xf5ed('0x3'))},'originChannel':{'type':Sequelize[_0xf5ed('0x9')](_0xf5ed('0xa'),_0xf5ed('0xb')),'defaultValue':_0xf5ed('0xa'),'allowNull':![]}};
\ No newline at end of file
index acd2039..545fb17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98f8=['limit','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','MailMessage','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','include','findAll','catch','length','includeAll','find','body','params','describe','create','direction','out','split','findOne','MailAccountId','List','CmContact','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','server/files/attachments','basename','defaults','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','read','readAt','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname','email','SIP/%s','channel','motionChannel','fromString','EventManager','acceptmessage','RejectMessage','rejectMessage','internal','event','reject','download','unix','toString','root','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','join','existsSync','readFileSync','build','writeFileSync','unlinkSync','moment','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','redis','localhost','html-entities','./mailMessage.socket','register','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','status','json','offset','undefined','count'];(function(_0x26793a,_0x49cf51){var _0x575efb=function(_0x2f4db7){while(--_0x2f4db7){_0x26793a['push'](_0x26793a['shift']());}};_0x575efb(++_0x49cf51);}(_0x98f8,0x1b6));var _0x898f=function(_0x38042e,_0x336135){_0x38042e=_0x38042e-0x0;var _0x3de5f6=_0x98f8[_0x38042e];return _0x3de5f6;};'use strict';var emlformat=require('eml-format');var moment=require(_0x898f('0x0'));var BPromise=require('bluebird');var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x898f('0x1'));var Redis=require(_0x898f('0x2'));var htmlToText=require(_0x898f('0x3'));var qs=require(_0x898f('0x4'));var logger=require(_0x898f('0x5'))(_0x898f('0x6'));var interaction_log=require(_0x898f('0x5'))(_0x898f('0x7'));var config=require(_0x898f('0x8'));var db=require('../../mysqldb')['db'];config[_0x898f('0x9')]=_['defaults'](config[_0x898f('0x9')],{'host':_0x898f('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x898f('0x9')]));var htmlEntities=require(_0x898f('0xb'));require(_0x898f('0xc'))[_0x898f('0xd')](socket);var jayson=require(_0x898f('0xe'));var client=jayson[_0x898f('0xf')]['http']({'port':0x232c});var client9003=jayson[_0x898f('0xf')][_0x898f('0x10')]({'port':0x232b});var client9002=jayson[_0x898f('0xf')][_0x898f('0x10')]({'port':0x232a});function respondWithRpcPromise(_0x3cb37c,_0x5afa95,_0xf61851,_0x17b0d3){return new BPromise(function(_0x2cbca8,_0x196946){var _0x2fe247=_0x17b0d3||client;return _0x2fe247[_0x898f('0x11')](_0x3cb37c,_0xf61851)[_0x898f('0x12')](function(_0x4cd7c1){logger[_0x898f('0x13')](_0x898f('0x14'),_0x5afa95,_0x898f('0x15'));logger[_0x898f('0x16')](_0x898f('0x17'),_0x5afa95,_0x898f('0x15'),JSON[_0x898f('0x18')](_0x4cd7c1));if(_0x4cd7c1[_0x898f('0x19')]){if(_0x4cd7c1[_0x898f('0x19')][_0x898f('0x1a')]===0x1f4){logger[_0x898f('0x19')](_0x898f('0x14'),_0x5afa95,_0x4cd7c1[_0x898f('0x19')]['message']);return _0x196946(_0x4cd7c1[_0x898f('0x19')][_0x898f('0x1b')]);}logger['error'](_0x898f('0x14'),_0x5afa95,_0x4cd7c1['error'][_0x898f('0x1b')]);return _0x2cbca8(_0x4cd7c1[_0x898f('0x19')]['message']);}else{logger[_0x898f('0x13')](_0x898f('0x14'),_0x5afa95,'request\x20sent');_0x2cbca8(_0x4cd7c1['result']['message']);}})['catch'](function(_0x498e03){logger[_0x898f('0x19')](_0x898f('0x14'),_0x5afa95,_0x498e03);_0x196946(_0x498e03);});});}function respondWithResult(_0xa6166a,_0x44291d){_0x44291d=_0x44291d||0xc8;return function(_0x28d45c){if(_0x28d45c){return _0xa6166a[_0x898f('0x1c')](_0x44291d)[_0x898f('0x1d')](_0x28d45c);}};}function respondWithFilteredResult(_0x30b083,_0xb8c7cf){return function(_0x359f1f){if(_0x359f1f){var _0x56e8f5=typeof _0xb8c7cf[_0x898f('0x1e')]===_0x898f('0x1f')&&typeof _0xb8c7cf['limit']===_0x898f('0x1f');var _0x3fd0d3=_0x359f1f[_0x898f('0x20')];var _0x3599fb=_0x56e8f5?0x0:_0xb8c7cf[_0x898f('0x1e')];var _0x45e4fa=_0x56e8f5?_0x359f1f['count']:_0xb8c7cf[_0x898f('0x1e')]+_0xb8c7cf[_0x898f('0x21')];var _0x12e755;if(_0x45e4fa>=_0x3fd0d3){_0x45e4fa=_0x3fd0d3;_0x12e755=0xc8;}else{_0x12e755=0xce;}_0x30b083[_0x898f('0x1c')](_0x12e755);return _0x30b083[_0x898f('0x22')](_0x898f('0x23'),_0x3599fb+'-'+_0x45e4fa+'/'+_0x3fd0d3)[_0x898f('0x1d')](_0x359f1f);}return null;};}function saveUpdates(_0x4c73fb){return function(_0x148ba7){if(_0x148ba7){return _0x148ba7[_0x898f('0x24')](_0x4c73fb)[_0x898f('0x12')](function(_0x171a49){return _0x171a49;});}return null;};}function removeEntity(_0x1e9572){return function(_0x4ca807){if(_0x4ca807){return _0x4ca807[_0x898f('0x25')]()[_0x898f('0x12')](function(){_0x1e9572[_0x898f('0x1c')](0xcc)[_0x898f('0x26')]();});}};}function handleEntityNotFound(_0x458cb7){return function(_0x110ecd){if(!_0x110ecd){_0x458cb7[_0x898f('0x27')](0x194);}return _0x110ecd;};}function handleError(_0x4bdaba,_0x4a541a){_0x4a541a=_0x4a541a||0x1f4;return function(_0x4925e1){logger[_0x898f('0x19')](_0x4925e1[_0x898f('0x28')]);if(_0x4925e1['name']){delete _0x4925e1[_0x898f('0x29')];}_0x4bdaba[_0x898f('0x1c')](_0x4a541a)[_0x898f('0x2a')](_0x4925e1);};}exports[_0x898f('0x2b')]=function(_0x325467,_0x2e0400){var _0x481b0f={},_0x1c26ea={},_0x479ffd={'count':0x0,'rows':[]};var _0x585525=_['map'](db[_0x898f('0x2c')][_0x898f('0x2d')],function(_0xe6ddb3){return{'name':_0xe6ddb3[_0x898f('0x2e')],'type':_0xe6ddb3[_0x898f('0x2f')][_0x898f('0x30')]};});_0x1c26ea[_0x898f('0x31')]=_[_0x898f('0x32')](_0x585525,_0x898f('0x29'));_0x1c26ea[_0x898f('0x33')]=_[_0x898f('0x34')](_0x325467[_0x898f('0x33')]);_0x1c26ea[_0x898f('0x35')]=_['intersection'](_0x1c26ea[_0x898f('0x31')],_0x1c26ea['query']);_0x481b0f[_0x898f('0x36')]=_[_0x898f('0x37')](_0x1c26ea[_0x898f('0x31')],qs[_0x898f('0x38')](_0x325467[_0x898f('0x33')][_0x898f('0x38')]));_0x481b0f[_0x898f('0x36')]=_0x481b0f[_0x898f('0x36')]['length']?_0x481b0f[_0x898f('0x36')]:_0x1c26ea[_0x898f('0x31')];if(!_0x325467['query'][_0x898f('0x39')](_0x898f('0x3a'))){_0x481b0f[_0x898f('0x21')]=qs[_0x898f('0x21')](_0x325467[_0x898f('0x33')][_0x898f('0x21')]);_0x481b0f[_0x898f('0x1e')]=qs[_0x898f('0x1e')](_0x325467[_0x898f('0x33')][_0x898f('0x1e')]);}_0x481b0f[_0x898f('0x3b')]=qs['sort'](_0x325467[_0x898f('0x33')]['sort']);_0x481b0f[_0x898f('0x3c')]=qs[_0x898f('0x35')](_[_0x898f('0x3d')](_0x325467[_0x898f('0x33')],_0x1c26ea['filters']),_0x585525);if(_0x325467[_0x898f('0x33')][_0x898f('0x3e')]){_0x481b0f['where']=_[_0x898f('0x3f')](_0x481b0f[_0x898f('0x3c')],{'$or':_['map'](_0x585525,function(_0x5e4d3b){if(_0x5e4d3b[_0x898f('0x2f')]!==_0x898f('0x40')){var _0x686bde={};_0x686bde[_0x5e4d3b['name']]={'$like':'%'+_0x325467['query'][_0x898f('0x3e')]+'%'};return _0x686bde;}})});}_0x481b0f=_[_0x898f('0x3f')]({},_0x481b0f,_0x325467[_0x898f('0x41')]);var _0x2d690b={'where':_0x481b0f[_0x898f('0x3c')]};return db[_0x898f('0x2c')][_0x898f('0x20')](_0x2d690b)[_0x898f('0x12')](function(_0x42aaaa){_0x479ffd['count']=_0x42aaaa;if(_0x325467[_0x898f('0x33')]['includeAll']){_0x481b0f[_0x898f('0x42')]=[{'all':!![]}];}return db[_0x898f('0x2c')][_0x898f('0x43')](_0x481b0f);})[_0x898f('0x12')](function(_0x1a4fae){_0x479ffd['rows']=_0x1a4fae;return _0x479ffd;})['then'](respondWithFilteredResult(_0x2e0400,_0x481b0f))[_0x898f('0x44')](handleError(_0x2e0400,null));};exports['show']=function(_0x596b09,_0x46082c){var _0x23ff3c={'raw':!![],'where':{'id':_0x596b09['params']['id']}},_0x1bd7bb={};_0x1bd7bb[_0x898f('0x31')]=_['keys'](db['MailMessage'][_0x898f('0x2d')]);_0x1bd7bb[_0x898f('0x33')]=_[_0x898f('0x34')](_0x596b09[_0x898f('0x33')]);_0x1bd7bb[_0x898f('0x35')]=_[_0x898f('0x37')](_0x1bd7bb[_0x898f('0x31')],_0x1bd7bb[_0x898f('0x33')]);_0x23ff3c[_0x898f('0x36')]=_[_0x898f('0x37')](_0x1bd7bb[_0x898f('0x31')],qs[_0x898f('0x38')](_0x596b09[_0x898f('0x33')]['fields']));_0x23ff3c[_0x898f('0x36')]=_0x23ff3c[_0x898f('0x36')][_0x898f('0x45')]?_0x23ff3c[_0x898f('0x36')]:_0x1bd7bb[_0x898f('0x31')];if(_0x596b09[_0x898f('0x33')][_0x898f('0x46')]){_0x23ff3c[_0x898f('0x42')]=[{'all':!![]}];}_0x23ff3c=_[_0x898f('0x3f')]({},_0x23ff3c,_0x596b09[_0x898f('0x41')]);return db['MailMessage'][_0x898f('0x47')](_0x23ff3c)['then'](handleEntityNotFound(_0x46082c,null))[_0x898f('0x12')](respondWithResult(_0x46082c,null))['catch'](handleError(_0x46082c,null));};exports[_0x898f('0x24')]=function(_0x598db7,_0x28534d){if(_0x598db7[_0x898f('0x48')]['id']){delete _0x598db7['body']['id'];}return db['MailMessage'][_0x898f('0x47')]({'where':{'id':_0x598db7[_0x898f('0x49')]['id']}})[_0x898f('0x12')](handleEntityNotFound(_0x28534d,null))['then'](saveUpdates(_0x598db7[_0x898f('0x48')],null))[_0x898f('0x12')](respondWithResult(_0x28534d,null))[_0x898f('0x44')](handleError(_0x28534d,null));};exports['destroy']=function(_0x116587,_0x6b3515){return db['MailMessage'][_0x898f('0x47')]({'where':{'id':_0x116587['params']['id']}})[_0x898f('0x12')](handleEntityNotFound(_0x6b3515,null))[_0x898f('0x12')](removeEntity(_0x6b3515,null))[_0x898f('0x44')](handleError(_0x6b3515,null));};exports[_0x898f('0x4a')]=function(_0x35c95a,_0x5aa253){return db['MailMessage'][_0x898f('0x4a')]()[_0x898f('0x12')](respondWithResult(_0x5aa253,null))[_0x898f('0x44')](handleError(_0x5aa253,null));};exports[_0x898f('0x4b')]=function(_0x2c3bd1,_0x429305){return db[_0x898f('0x2c')]['create'](_0x2c3bd1['body'])[_0x898f('0x12')](function(_0x37d9e9){if(_0x37d9e9){if(_0x37d9e9[_0x898f('0x4c')]===_0x898f('0x4d')&&!_0x37d9e9['secret']){var _0x151ab8,_0x10fc3c,_0xc8630a;if(_0x2c3bd1[_0x898f('0x48')]['to']){_0x10fc3c=_0x2c3bd1[_0x898f('0x48')]['to'][_0x898f('0x4e')](',')[0x0];}return db['MailAccount'][_0x898f('0x4f')]({'where':{'id':_0x37d9e9[_0x898f('0x50')]},'include':[{'model':db['CmList'],'as':_0x898f('0x51'),'include':[{'model':db[_0x898f('0x52')],'as':'Contacts','where':{'email':_0x10fc3c},'limit':0x1,'order':[['updatedAt',_0x898f('0x53')]]}]},{'model':db[_0x898f('0x54')],'as':_0x898f('0x55'),'raw':!![],'include':[{'model':db[_0x898f('0x56')],'as':_0x898f('0x56'),'raw':!![]}]}]})[_0x898f('0x12')](function(_0xde5139){_0x151ab8=_0xde5139;if(!_0x151ab8||!_0x151ab8[_0x898f('0x55')])return;var _0x367273=_0x151ab8[_0x898f('0x57')]();if(_0x2c3bd1[_0x898f('0x48')]['attachments']&&_0x2c3bd1[_0x898f('0x48')][_0x898f('0x58')]['length']){for(var _0x4b5b58=0x0;_0x4b5b58<_0x2c3bd1[_0x898f('0x48')][_0x898f('0x58')][_0x898f('0x45')];_0x4b5b58+=0x1){_0x2c3bd1[_0x898f('0x48')][_0x898f('0x58')][_0x4b5b58]={'filename':_0x2c3bd1['body'][_0x898f('0x58')][_0x4b5b58][_0x898f('0x29')],'path':path['join'](config['root'],_0x898f('0x59'),_0x2c3bd1[_0x898f('0x48')][_0x898f('0x58')][_0x4b5b58][_0x898f('0x5a')])};}}_0xc8630a={'account':_0x367273,'message':_0x2c3bd1[_0x898f('0x48')]};return;})[_0x898f('0x12')](function(){if(_0x151ab8['List']){if(_0x151ab8[_0x898f('0x51')]['Contacts']['length']){return _0x151ab8[_0x898f('0x51')]['Contacts'][0x0];}else{return db['CmContact'][_0x898f('0x4b')](_[_0x898f('0x5b')](_0x2c3bd1[_0x898f('0x48')],{'firstName':_0x2c3bd1[_0x898f('0x48')]['to'],'email':_0x2c3bd1[_0x898f('0x48')]['to'],'phone':_0x2c3bd1[_0x898f('0x48')]['to'],'ListId':_0x151ab8['ListId']}));}}else{throw new Error('List\x20not\x20found');}})[_0x898f('0x12')](function(){if(_0xc8630a){return respondWithRpcPromise(_0x898f('0x5c'),_0x898f('0x5d'),_0xc8630a,client9003)[_0x898f('0x12')](function(_0x207ef1){return _0x37d9e9[_0x898f('0x24')]({'read':!![],'messageId':_0x207ef1[_0x898f('0x5e')],'sentAt':moment()[_0x898f('0x5f')](_0x898f('0x60'))});})[_0x898f('0x44')](function(_0x1c3724){logger[_0x898f('0x19')]('%s',JSON['stringify'](_0x1c3724));return _0x37d9e9;});}return _0x37d9e9;});}return _0x37d9e9;}})[_0x898f('0x12')](respondWithResult(_0x429305,0xc9))['catch'](handleError(_0x429305,null));};exports[_0x898f('0x61')]=function(_0x40434e,_0xb65f74){var _0x506728={'agent':{},'channel':'mail'};if(_0x40434e[_0x898f('0x48')]['id']){delete _0x40434e[_0x898f('0x48')]['id'];}_0x40434e[_0x898f('0x48')][_0x898f('0x62')]=!![];_0x40434e['body'][_0x898f('0x63')]=moment()[_0x898f('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x40434e['body'][_0x898f('0x64')]=_0x40434e[_0x898f('0x48')][_0x898f('0x64')]||_0x40434e[_0x898f('0x65')]['id'];_0x506728[_0x898f('0x66')]['id']=_0x40434e['body'][_0x898f('0x64')];return db['MailMessage']['find']({'where':{'id':_0x40434e[_0x898f('0x49')]['id'],'UserId':null}})[_0x898f('0x12')](handleEntityNotFound(_0xb65f74,null))[_0x898f('0x12')](saveUpdates(_0x40434e[_0x898f('0x48')],null))[_0x898f('0x12')](function(_0x31ff24){if(_0x31ff24){_0x506728[_0x898f('0x1b')]=_0x31ff24[_0x898f('0x67')]({'plain':!![]});return db[_0x898f('0x68')][_0x898f('0x47')]({'where':{'id':_0x31ff24[_0x898f('0x69')]}});}return null;})[_0x898f('0x12')](handleEntityNotFound(_0xb65f74,null))[_0x898f('0x12')](function(_0x1525fd){if(_0x1525fd){return _0x1525fd[_0x898f('0x24')]({'UserId':_0x40434e[_0x898f('0x48')][_0x898f('0x64')],'read1stAt':_[_0x898f('0x6a')](_0x1525fd[_0x898f('0x6b')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x898f('0x12')](function(_0x4cb9c2){if(_0x4cb9c2){_0x506728['interaction']=_0x4cb9c2[_0x898f('0x67')]({'plain':!![]});interaction_log['info'](_0x898f('0x6c'),_0x40434e[_0x898f('0x65')]['id'],_0x40434e[_0x898f('0x65')][_0x898f('0x29')],_0x40434e[_0x898f('0x65')][_0x898f('0x6d')],_0x506728[_0x898f('0x6e')]['id'],_0x40434e[_0x898f('0x48')]?JSON['stringify'](_0x40434e[_0x898f('0x48')]):'null');return respondWithRpcPromise(_0x898f('0x6f'),_0x898f('0x70'),_0x506728);}return null;})['then'](function(_0x58e574){var _0x50a2d8=_0x898f('0x71')+_0x58e574[_0x898f('0x1b')][_0x898f('0x72')];return db[_0x898f('0x73')][_0x898f('0x33')](_0x50a2d8,{'type':db[_0x898f('0x74')]['QueryTypes'][_0x898f('0x75')],'raw':!![]})[_0x898f('0x12')](function(_0x5ce526){return _0x5ce526;});})[_0x898f('0x12')](function(_0x170510){if(_0x170510){_0x506728[_0x898f('0x1b')][_0x898f('0x76')]=_0x170510[0x0];if(!_0x40434e[_0x898f('0x48')]['UserId'])return;return db[_0x898f('0x77')]['find']({'where':{'id':_0x40434e[_0x898f('0x48')][_0x898f('0x64')],'role':_0x898f('0x66')},'attributes':['id',_0x898f('0x29'),_0x898f('0x78'),_0x898f('0x79'),'internal'],'raw':!![]});}return null;})['then'](function(_0x2c890a){if(!_0x2c890a)return null;_0x506728[_0x898f('0x1b')]['agent']=_0x2c890a;return _0x506728;})[_0x898f('0x12')](function(_0x23738a){if(_0x23738a){if(_0x40434e[_0x898f('0x48')]['manual']){_0x506728[_0x898f('0x1b')]['interface']=util[_0x898f('0x5f')](_0x898f('0x7a'),_0x40434e[_0x898f('0x65')]['name']);_0x506728[_0x898f('0x1b')][_0x898f('0x7b')]=_0x506728[_0x898f('0x7b')];_0x506728[_0x898f('0x1b')][_0x898f('0x7c')]=_0x506728[_0x898f('0x7b')];_0x506728[_0x898f('0x1b')]['event']=_0x898f('0x61');_0x506728[_0x898f('0x1b')][_0x898f('0x48')]=htmlToText[_0x898f('0x7d')](_0x506728[_0x898f('0x1b')]['body']);return respondWithRpcPromise(_0x898f('0x7e'),'EventManager',{'event':_0x898f('0x7f'),'message':_0x506728[_0x898f('0x1b')]},client9002)[_0x898f('0x12')](function(){return _0x506728;});}return _0x506728;}return null;})['then'](respondWithResult(_0xb65f74,null))[_0x898f('0x44')](handleError(_0xb65f74,null));};exports['reject']=function(_0x16924f,_0x4edc39){var _0x300368={'agent':{},'channel':'mail'};if(_0x16924f[_0x898f('0x48')]['id']){delete _0x16924f['body']['id'];}_0x16924f[_0x898f('0x48')][_0x898f('0x64')]=_0x16924f[_0x898f('0x48')][_0x898f('0x64')]||_0x16924f[_0x898f('0x65')]['id'];_0x300368['agent']['id']=_0x16924f[_0x898f('0x48')][_0x898f('0x64')];return db[_0x898f('0x2c')][_0x898f('0x47')]({'where':{'id':_0x16924f[_0x898f('0x49')]['id'],'UserId':null}})[_0x898f('0x12')](handleEntityNotFound(_0x4edc39,null))[_0x898f('0x12')](function(_0x219ec4){if(_0x219ec4){_0x300368[_0x898f('0x1b')]=_0x219ec4[_0x898f('0x67')]({'plain':!![]});return db[_0x898f('0x68')][_0x898f('0x47')]({'where':{'id':_0x219ec4[_0x898f('0x69')]}});}return null;})[_0x898f('0x12')](handleEntityNotFound(_0x4edc39,null))[_0x898f('0x12')](function(_0x238c17){if(_0x238c17){_0x300368[_0x898f('0x6e')]=_0x238c17[_0x898f('0x67')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x16924f[_0x898f('0x65')]['id'],_0x16924f[_0x898f('0x65')][_0x898f('0x29')],_0x16924f['user']['role'],_0x300368[_0x898f('0x6e')]['id'],_0x16924f[_0x898f('0x48')]?JSON['stringify'](_0x16924f[_0x898f('0x48')]):'null');return respondWithRpcPromise(_0x898f('0x80'),_0x898f('0x81'),_0x300368);}return null;})['then'](function(_0x2f5a4a){var _0x111087=_0x898f('0x71')+_0x2f5a4a[_0x898f('0x1b')][_0x898f('0x72')];return db[_0x898f('0x73')][_0x898f('0x33')](_0x111087,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x898f('0x12')](function(_0x285334){return _0x285334;});})[_0x898f('0x12')](function(_0x468599){if(_0x468599){_0x300368[_0x898f('0x1b')][_0x898f('0x76')]=_0x468599[0x0];if(!_0x16924f[_0x898f('0x48')][_0x898f('0x64')])return;return db[_0x898f('0x77')]['find']({'where':{'id':_0x16924f['body'][_0x898f('0x64')],'role':'agent'},'attributes':['id','name',_0x898f('0x78'),_0x898f('0x79'),_0x898f('0x82')],'raw':!![]});}return null;})[_0x898f('0x12')](function(_0xbcce53){if(!_0xbcce53)return null;_0x300368[_0x898f('0x1b')][_0x898f('0x66')]=_0xbcce53;return _0x300368;})['then'](function(_0x288e86){if(_0x288e86){_0x288e86[_0x898f('0x1b')]['interface']=util['format'](_0x898f('0x7a'),_0x16924f[_0x898f('0x65')][_0x898f('0x29')]);_0x288e86[_0x898f('0x1b')]['channel']=_0x300368['channel'];_0x288e86[_0x898f('0x1b')]['motionChannel']=_0x300368[_0x898f('0x7b')];_0x288e86[_0x898f('0x1b')][_0x898f('0x83')]=_0x898f('0x84');_0x288e86['message'][_0x898f('0x48')]=htmlToText[_0x898f('0x7d')](_0x300368[_0x898f('0x1b')][_0x898f('0x48')]);respondWithRpcPromise(_0x898f('0x7e'),_0x898f('0x7e'),{'event':'rejectmessage','message':_0x288e86[_0x898f('0x1b')]},client9002);return _0x300368;}return null;})['then'](respondWithResult(_0x4edc39,null))['catch'](handleError(_0x4edc39,null));};exports[_0x898f('0x85')]=function(_0x277663,_0x877a20){var _0x358f48=moment()[_0x898f('0x86')]()[_0x898f('0x87')]();var _0x4b0847=path['join'](config[_0x898f('0x88')],_0x898f('0x89'),_0x898f('0x8a'),_0x898f('0x8b'));var _0x22f8ae=path['join'](config[_0x898f('0x88')],'server','files',_0x898f('0x58'));var _0x206565=util[_0x898f('0x5f')](_0x898f('0x8c'),_0x358f48);return db['MailMessage'][_0x898f('0x47')]({'where':{'id':_0x277663[_0x898f('0x49')]['id']},'attributes':['id',_0x898f('0x48'),_0x898f('0x8d'),'to','cc',_0x898f('0x8e'),_0x898f('0x8f'),_0x898f('0x90')],'include':_0x277663[_0x898f('0x33')]['attachments']?[{'model':db[_0x898f('0x91')],'as':'Attachments'}]:undefined})[_0x898f('0x12')](handleEntityNotFound(_0x877a20,null))['then'](function(_0x56e96c){if(_0x56e96c){var _0x129784=_0x56e96c;var _0x1d6962={'from':_0x129784['from'],'to':_0x129784['to'],'subject':_0x129784['subject'],'html':htmlEntities[_0x898f('0x92')](_0x129784['body']),'headers':{'Date':moment(_0x129784[_0x898f('0x90')])[_0x898f('0x5f')](_0x898f('0x93'))},'attachments':[]};if(_0x56e96c['cc']){_0x1d6962['headers']['Cc']=_0x56e96c['cc'];}if(_0x56e96c[_0x898f('0x8e')]){_0x1d6962[_0x898f('0x94')][_0x898f('0x95')]=_0x56e96c['bcc'];}return new BPromise(function(_0x2e443a,_0x229bac){if(_0x56e96c[_0x898f('0x96')]){for(var _0x836db9=0x0;_0x836db9<_0x56e96c[_0x898f('0x96')][_0x898f('0x45')];_0x836db9++){var _0x465006=_0x56e96c[_0x898f('0x96')][_0x836db9];var _0x4f1eca=path[_0x898f('0x97')](_0x22f8ae,_0x465006[_0x898f('0x5a')]);if(fs[_0x898f('0x98')](_0x4f1eca)){_0x1d6962['attachments']['push']({'name':_0x465006[_0x898f('0x29')],'contentType':_0x465006['type'],'data':fs[_0x898f('0x99')](_0x4f1eca)});}}}emlformat[_0x898f('0x9a')](_0x1d6962,function(_0x2c0d3c,_0x28a8ed){if(_0x2c0d3c)return _0x229bac(_0x2c0d3c);fs[_0x898f('0x9b')](path['join'](_0x4b0847,_0x206565),_0x28a8ed);return _0x2e443a(_0x28a8ed);});});}})[_0x898f('0x12')](function(_0x4fcd6c){if(_0x4fcd6c){return _0x877a20[_0x898f('0x85')](path[_0x898f('0x97')](_0x4b0847,_0x206565),_0x206565,function(_0x303b6f){if(!_0x303b6f)fs[_0x898f('0x9c')](path[_0x898f('0x97')](_0x4b0847,_0x206565));});}})[_0x898f('0x44')](handleError(_0x877a20,null));};
\ No newline at end of file
+var _0x3b02=['get','MailInteraction','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','User','email','internal','SIP/%s','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','MailInteractionId','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SELECT','fullname','download','unix','toString','join','server','files','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','writeFileSync','eml-format','path','lodash','html-to-text','../../components/parsers/qs','api','../../config/logger','mail-interactions','../../config/environment','redis','defaults','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','status','json','limit','undefined','count','offset','update','sendStatus','stack','name','index','map','MailMessage','rawAttributes','fieldName','query','keys','filters','intersection','attributes','model','fields','length','nolimit','sort','pick','filter','merge','type','include','findAll','show','find','body','params','describe','create','direction','out','secret','MailAccount','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','root','server/files/attachments','basename','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','UserId','user','agent'];(function(_0x5a8d21,_0x463828){var _0x4ddaa7=function(_0x10f309){while(--_0x10f309){_0x5a8d21['push'](_0x5a8d21['shift']());}};_0x4ddaa7(++_0x463828);}(_0x3b02,0x1e4));var _0x23b0=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x3b02[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require(_0x23b0('0x0'));var moment=require('moment');var BPromise=require('bluebird');var util=require('util');var path=require(_0x23b0('0x1'));var fs=require('fs');var _=require(_0x23b0('0x2'));var Redis=require('ioredis');var htmlToText=require(_0x23b0('0x3'));var qs=require(_0x23b0('0x4'));var logger=require('../../config/logger')(_0x23b0('0x5'));var interaction_log=require(_0x23b0('0x6'))(_0x23b0('0x7'));var config=require(_0x23b0('0x8'));var db=require('../../mysqldb')['db'];config[_0x23b0('0x9')]=_[_0x23b0('0xa')](config[_0x23b0('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x23b0('0xb'))(new Redis(config[_0x23b0('0x9')]));var htmlEntities=require(_0x23b0('0xc'));require(_0x23b0('0xd'))[_0x23b0('0xe')](socket);var jayson=require(_0x23b0('0xf'));var client=jayson[_0x23b0('0x10')][_0x23b0('0x11')]({'port':0x232c});var client9003=jayson[_0x23b0('0x10')][_0x23b0('0x11')]({'port':0x232b});var client9002=jayson[_0x23b0('0x10')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4f1d2a,_0x4b0196,_0x35d72f,_0x230418){return new BPromise(function(_0x316f67,_0x343f3e){var _0x3c3695=_0x230418||client;return _0x3c3695[_0x23b0('0x12')](_0x4f1d2a,_0x35d72f)[_0x23b0('0x13')](function(_0x26e330){logger[_0x23b0('0x14')]('MailMessage,\x20%s,\x20%s',_0x4b0196,_0x23b0('0x15'));logger[_0x23b0('0x16')](_0x23b0('0x17'),_0x4b0196,_0x23b0('0x15'),JSON[_0x23b0('0x18')](_0x26e330));if(_0x26e330[_0x23b0('0x19')]){if(_0x26e330['error'][_0x23b0('0x1a')]===0x1f4){logger['error'](_0x23b0('0x1b'),_0x4b0196,_0x26e330['error'][_0x23b0('0x1c')]);return _0x343f3e(_0x26e330[_0x23b0('0x19')][_0x23b0('0x1c')]);}logger[_0x23b0('0x19')](_0x23b0('0x1b'),_0x4b0196,_0x26e330['error']['message']);return _0x316f67(_0x26e330['error'][_0x23b0('0x1c')]);}else{logger[_0x23b0('0x14')]('MailMessage,\x20%s,\x20%s',_0x4b0196,'request\x20sent');_0x316f67(_0x26e330[_0x23b0('0x1d')][_0x23b0('0x1c')]);}})[_0x23b0('0x1e')](function(_0x39f0be){logger[_0x23b0('0x19')](_0x23b0('0x1b'),_0x4b0196,_0x39f0be);_0x343f3e(_0x39f0be);});});}function respondWithResult(_0x1c0b95,_0x17db65){_0x17db65=_0x17db65||0xc8;return function(_0x594c31){if(_0x594c31){return _0x1c0b95[_0x23b0('0x1f')](_0x17db65)[_0x23b0('0x20')](_0x594c31);}};}function respondWithFilteredResult(_0x56d627,_0x1965ec){return function(_0x572362){if(_0x572362){var _0x2d4409=typeof _0x1965ec['offset']==='undefined'&&typeof _0x1965ec[_0x23b0('0x21')]===_0x23b0('0x22');var _0x530633=_0x572362[_0x23b0('0x23')];var _0x395ed5=_0x2d4409?0x0:_0x1965ec[_0x23b0('0x24')];var _0x54e0bd=_0x2d4409?_0x572362['count']:_0x1965ec[_0x23b0('0x24')]+_0x1965ec[_0x23b0('0x21')];var _0x25057f;if(_0x54e0bd>=_0x530633){_0x54e0bd=_0x530633;_0x25057f=0xc8;}else{_0x25057f=0xce;}_0x56d627[_0x23b0('0x1f')](_0x25057f);return _0x56d627['set']('Content-Range',_0x395ed5+'-'+_0x54e0bd+'/'+_0x530633)[_0x23b0('0x20')](_0x572362);}return null;};}function saveUpdates(_0x560afc){return function(_0x135000){if(_0x135000){return _0x135000[_0x23b0('0x25')](_0x560afc)[_0x23b0('0x13')](function(_0x390f6a){return _0x390f6a;});}return null;};}function removeEntity(_0x54fe0a){return function(_0x4e1306){if(_0x4e1306){return _0x4e1306['destroy']()[_0x23b0('0x13')](function(){_0x54fe0a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1bb8ed){return function(_0x3ea0a0){if(!_0x3ea0a0){_0x1bb8ed[_0x23b0('0x26')](0x194);}return _0x3ea0a0;};}function handleError(_0x3913fd,_0x7c3113){_0x7c3113=_0x7c3113||0x1f4;return function(_0x5dc201){logger[_0x23b0('0x19')](_0x5dc201[_0x23b0('0x27')]);if(_0x5dc201[_0x23b0('0x28')]){delete _0x5dc201[_0x23b0('0x28')];}_0x3913fd['status'](_0x7c3113)['send'](_0x5dc201);};}exports[_0x23b0('0x29')]=function(_0xec0ab2,_0x3d83d8){var _0x55c0fd={},_0x33cc59={},_0x4daeef={'count':0x0,'rows':[]};var _0x47f4d4=_[_0x23b0('0x2a')](db[_0x23b0('0x2b')][_0x23b0('0x2c')],function(_0x37bd9f){return{'name':_0x37bd9f[_0x23b0('0x2d')],'type':_0x37bd9f['type']['key']};});_0x33cc59['model']=_[_0x23b0('0x2a')](_0x47f4d4,'name');_0x33cc59[_0x23b0('0x2e')]=_[_0x23b0('0x2f')](_0xec0ab2[_0x23b0('0x2e')]);_0x33cc59[_0x23b0('0x30')]=_[_0x23b0('0x31')](_0x33cc59['model'],_0x33cc59['query']);_0x55c0fd[_0x23b0('0x32')]=_[_0x23b0('0x31')](_0x33cc59[_0x23b0('0x33')],qs[_0x23b0('0x34')](_0xec0ab2[_0x23b0('0x2e')][_0x23b0('0x34')]));_0x55c0fd[_0x23b0('0x32')]=_0x55c0fd['attributes'][_0x23b0('0x35')]?_0x55c0fd['attributes']:_0x33cc59[_0x23b0('0x33')];if(!_0xec0ab2['query']['hasOwnProperty'](_0x23b0('0x36'))){_0x55c0fd[_0x23b0('0x21')]=qs[_0x23b0('0x21')](_0xec0ab2[_0x23b0('0x2e')][_0x23b0('0x21')]);_0x55c0fd['offset']=qs['offset'](_0xec0ab2[_0x23b0('0x2e')]['offset']);}_0x55c0fd['order']=qs[_0x23b0('0x37')](_0xec0ab2[_0x23b0('0x2e')][_0x23b0('0x37')]);_0x55c0fd['where']=qs['filters'](_[_0x23b0('0x38')](_0xec0ab2[_0x23b0('0x2e')],_0x33cc59[_0x23b0('0x30')]),_0x47f4d4);if(_0xec0ab2[_0x23b0('0x2e')][_0x23b0('0x39')]){_0x55c0fd['where']=_[_0x23b0('0x3a')](_0x55c0fd['where'],{'$or':_[_0x23b0('0x2a')](_0x47f4d4,function(_0x52d8c0){if(_0x52d8c0[_0x23b0('0x3b')]!=='VIRTUAL'){var _0x317cec={};_0x317cec[_0x52d8c0[_0x23b0('0x28')]]={'$like':'%'+_0xec0ab2[_0x23b0('0x2e')]['filter']+'%'};return _0x317cec;}})});}_0x55c0fd=_[_0x23b0('0x3a')]({},_0x55c0fd,_0xec0ab2['options']);var _0x3385bc={'where':_0x55c0fd['where']};return db['MailMessage'][_0x23b0('0x23')](_0x3385bc)[_0x23b0('0x13')](function(_0x5d5d42){_0x4daeef[_0x23b0('0x23')]=_0x5d5d42;if(_0xec0ab2[_0x23b0('0x2e')]['includeAll']){_0x55c0fd[_0x23b0('0x3c')]=[{'all':!![]}];}return db[_0x23b0('0x2b')][_0x23b0('0x3d')](_0x55c0fd);})[_0x23b0('0x13')](function(_0x436224){_0x4daeef['rows']=_0x436224;return _0x4daeef;})['then'](respondWithFilteredResult(_0x3d83d8,_0x55c0fd))[_0x23b0('0x1e')](handleError(_0x3d83d8,null));};exports[_0x23b0('0x3e')]=function(_0x2a9862,_0x408df7){var _0x28a94e={'raw':!![],'where':{'id':_0x2a9862['params']['id']}},_0x3caa52={};_0x3caa52[_0x23b0('0x33')]=_[_0x23b0('0x2f')](db[_0x23b0('0x2b')]['rawAttributes']);_0x3caa52[_0x23b0('0x2e')]=_[_0x23b0('0x2f')](_0x2a9862['query']);_0x3caa52[_0x23b0('0x30')]=_[_0x23b0('0x31')](_0x3caa52['model'],_0x3caa52[_0x23b0('0x2e')]);_0x28a94e[_0x23b0('0x32')]=_[_0x23b0('0x31')](_0x3caa52['model'],qs[_0x23b0('0x34')](_0x2a9862[_0x23b0('0x2e')]['fields']));_0x28a94e[_0x23b0('0x32')]=_0x28a94e[_0x23b0('0x32')][_0x23b0('0x35')]?_0x28a94e[_0x23b0('0x32')]:_0x3caa52['model'];if(_0x2a9862[_0x23b0('0x2e')]['includeAll']){_0x28a94e[_0x23b0('0x3c')]=[{'all':!![]}];}_0x28a94e=_['merge']({},_0x28a94e,_0x2a9862['options']);return db[_0x23b0('0x2b')][_0x23b0('0x3f')](_0x28a94e)[_0x23b0('0x13')](handleEntityNotFound(_0x408df7,null))[_0x23b0('0x13')](respondWithResult(_0x408df7,null))[_0x23b0('0x1e')](handleError(_0x408df7,null));};exports[_0x23b0('0x25')]=function(_0x201744,_0x213ad4){if(_0x201744[_0x23b0('0x40')]['id']){delete _0x201744[_0x23b0('0x40')]['id'];}return db['MailMessage'][_0x23b0('0x3f')]({'where':{'id':_0x201744[_0x23b0('0x41')]['id']}})['then'](handleEntityNotFound(_0x213ad4,null))[_0x23b0('0x13')](saveUpdates(_0x201744[_0x23b0('0x40')],null))[_0x23b0('0x13')](respondWithResult(_0x213ad4,null))[_0x23b0('0x1e')](handleError(_0x213ad4,null));};exports['destroy']=function(_0x544d47,_0x527418){return db[_0x23b0('0x2b')][_0x23b0('0x3f')]({'where':{'id':_0x544d47[_0x23b0('0x41')]['id']}})[_0x23b0('0x13')](handleEntityNotFound(_0x527418,null))['then'](removeEntity(_0x527418,null))[_0x23b0('0x1e')](handleError(_0x527418,null));};exports['describe']=function(_0x573333,_0x33bad1){return db['MailMessage'][_0x23b0('0x42')]()[_0x23b0('0x13')](respondWithResult(_0x33bad1,null))[_0x23b0('0x1e')](handleError(_0x33bad1,null));};exports['create']=function(_0x3a0b87,_0x681be8){return db[_0x23b0('0x2b')][_0x23b0('0x43')](_0x3a0b87[_0x23b0('0x40')])[_0x23b0('0x13')](function(_0x49c520){if(_0x49c520){if(_0x49c520[_0x23b0('0x44')]===_0x23b0('0x45')&&!_0x49c520[_0x23b0('0x46')]){var _0x10676e,_0x4e16eb,_0x5d4c47;if(_0x3a0b87[_0x23b0('0x40')]['to']){_0x4e16eb=_0x3a0b87[_0x23b0('0x40')]['to']['split'](',')[0x0];}return db[_0x23b0('0x47')]['findOne']({'where':{'id':_0x49c520[_0x23b0('0x48')]},'include':[{'model':db[_0x23b0('0x49')],'as':_0x23b0('0x4a'),'include':[{'model':db[_0x23b0('0x4b')],'as':_0x23b0('0x4c'),'where':{'email':_0x4e16eb},'limit':0x1,'order':[[_0x23b0('0x4d'),_0x23b0('0x4e')]]}]},{'model':db[_0x23b0('0x4f')],'as':_0x23b0('0x50'),'raw':!![],'include':[{'model':db[_0x23b0('0x51')],'as':'CloudProvider','raw':!![]}]}]})['then'](function(_0x31d833){_0x10676e=_0x31d833;if(!_0x10676e||!_0x10676e['Smtp'])return;var _0x53325a=_0x10676e[_0x23b0('0x52')]();if(_0x3a0b87['body'][_0x23b0('0x53')]&&_0x3a0b87['body'][_0x23b0('0x53')][_0x23b0('0x35')]){for(var _0x694a6a=0x0;_0x694a6a<_0x3a0b87['body'][_0x23b0('0x53')]['length'];_0x694a6a+=0x1){_0x3a0b87[_0x23b0('0x40')]['attachments'][_0x694a6a]={'filename':_0x3a0b87['body'][_0x23b0('0x53')][_0x694a6a]['name'],'path':path['join'](config[_0x23b0('0x54')],_0x23b0('0x55'),_0x3a0b87['body'][_0x23b0('0x53')][_0x694a6a][_0x23b0('0x56')])};}}_0x5d4c47={'account':_0x53325a,'message':_0x3a0b87['body']};return;})['then'](function(){if(_0x10676e[_0x23b0('0x4a')]){if(_0x10676e['List'][_0x23b0('0x4c')][_0x23b0('0x35')]){return _0x10676e[_0x23b0('0x4a')]['Contacts'][0x0];}else{return db[_0x23b0('0x4b')][_0x23b0('0x43')](_[_0x23b0('0xa')](_0x3a0b87[_0x23b0('0x40')],{'firstName':_0x3a0b87[_0x23b0('0x40')]['to'],'email':_0x3a0b87[_0x23b0('0x40')]['to'],'phone':_0x3a0b87[_0x23b0('0x40')]['to'],'ListId':_0x10676e[_0x23b0('0x57')]}));}}else{throw new Error(_0x23b0('0x58'));}})['then'](function(){if(_0x5d4c47){return respondWithRpcPromise(_0x23b0('0x59'),_0x23b0('0x5a'),_0x5d4c47,client9003)['then'](function(_0x5c5aa3){return _0x49c520['update']({'read':!![],'messageId':_0x5c5aa3[_0x23b0('0x5b')],'sentAt':moment()[_0x23b0('0x5c')](_0x23b0('0x5d'))});})[_0x23b0('0x1e')](function(_0x28de3a){logger[_0x23b0('0x19')]('%s',JSON['stringify'](_0x28de3a));return _0x49c520;});}return _0x49c520;});}return _0x49c520;}})['then'](respondWithResult(_0x681be8,0xc9))[_0x23b0('0x1e')](handleError(_0x681be8,null));};exports[_0x23b0('0x5e')]=function(_0xd3ae5f,_0x2b4b5e){var _0x3e948d={'agent':{},'channel':_0x23b0('0x5f')};if(_0xd3ae5f[_0x23b0('0x40')]['id']){delete _0xd3ae5f[_0x23b0('0x40')]['id'];}_0xd3ae5f[_0x23b0('0x40')]['read']=!![];_0xd3ae5f[_0x23b0('0x40')][_0x23b0('0x60')]=moment()[_0x23b0('0x5c')](_0x23b0('0x5d'));_0xd3ae5f[_0x23b0('0x40')]['UserId']=_0xd3ae5f[_0x23b0('0x40')][_0x23b0('0x61')]||_0xd3ae5f[_0x23b0('0x62')]['id'];_0x3e948d[_0x23b0('0x63')]['id']=_0xd3ae5f[_0x23b0('0x40')][_0x23b0('0x61')];return db['MailMessage'][_0x23b0('0x3f')]({'where':{'id':_0xd3ae5f[_0x23b0('0x41')]['id'],'UserId':null}})[_0x23b0('0x13')](handleEntityNotFound(_0x2b4b5e,null))[_0x23b0('0x13')](saveUpdates(_0xd3ae5f[_0x23b0('0x40')],null))[_0x23b0('0x13')](function(_0x2c7761){if(_0x2c7761){_0x3e948d[_0x23b0('0x1c')]=_0x2c7761[_0x23b0('0x64')]({'plain':!![]});return db[_0x23b0('0x65')][_0x23b0('0x3f')]({'where':{'id':_0x2c7761['MailInteractionId']}});}return null;})[_0x23b0('0x13')](handleEntityNotFound(_0x2b4b5e,null))[_0x23b0('0x13')](function(_0x3f0448){if(_0x3f0448){return _0x3f0448['update']({'UserId':_0xd3ae5f[_0x23b0('0x40')][_0x23b0('0x61')],'read1stAt':_['isNil'](_0x3f0448[_0x23b0('0x66')])?moment()[_0x23b0('0x5c')](_0x23b0('0x5d')):undefined});}return null;})['then'](function(_0x377b84){if(_0x377b84){_0x3e948d[_0x23b0('0x67')]=_0x377b84[_0x23b0('0x64')]({'plain':!![]});interaction_log[_0x23b0('0x14')](_0x23b0('0x68'),_0xd3ae5f[_0x23b0('0x62')]['id'],_0xd3ae5f[_0x23b0('0x62')][_0x23b0('0x28')],_0xd3ae5f['user'][_0x23b0('0x69')],_0x3e948d['interaction']['id'],_0xd3ae5f[_0x23b0('0x40')]?JSON[_0x23b0('0x18')](_0xd3ae5f[_0x23b0('0x40')]):_0x23b0('0x6a'));return respondWithRpcPromise('AcceptMessage',_0x23b0('0x6b'),_0x3e948d);}return null;})[_0x23b0('0x13')](function(_0x27c21d){var _0xb7f611=_0x23b0('0x6c')+_0x27c21d[_0x23b0('0x1c')]['ContactId'];return db[_0x23b0('0x6d')][_0x23b0('0x2e')](_0xb7f611,{'type':db[_0x23b0('0x6e')][_0x23b0('0x6f')]['SELECT'],'raw':!![]})[_0x23b0('0x13')](function(_0x5ece95){return _0x5ece95;});})['then'](function(_0x17a605){if(_0x17a605){_0x3e948d[_0x23b0('0x1c')]['contact']=_0x17a605[0x0];if(!_0xd3ae5f[_0x23b0('0x40')]['UserId'])return;return db[_0x23b0('0x70')][_0x23b0('0x3f')]({'where':{'id':_0xd3ae5f[_0x23b0('0x40')][_0x23b0('0x61')],'role':_0x23b0('0x63')},'attributes':['id',_0x23b0('0x28'),'fullname',_0x23b0('0x71'),_0x23b0('0x72')],'raw':!![]});}return null;})[_0x23b0('0x13')](function(_0x43404b){if(!_0x43404b)return null;_0x3e948d[_0x23b0('0x1c')][_0x23b0('0x63')]=_0x43404b;return _0x3e948d;})[_0x23b0('0x13')](function(_0x4c5489){if(_0x4c5489){if(_0xd3ae5f[_0x23b0('0x40')]['manual']){_0x3e948d[_0x23b0('0x1c')]['interface']=util['format'](_0x23b0('0x73'),_0xd3ae5f['user'][_0x23b0('0x28')]);_0x3e948d[_0x23b0('0x1c')]['channel']=_0x3e948d[_0x23b0('0x74')];_0x3e948d[_0x23b0('0x1c')][_0x23b0('0x75')]=_0x3e948d[_0x23b0('0x74')];_0x3e948d[_0x23b0('0x1c')][_0x23b0('0x76')]=_0x23b0('0x5e');_0x3e948d[_0x23b0('0x1c')]['body']=htmlToText[_0x23b0('0x77')](_0x3e948d['message']['body']);return respondWithRpcPromise('EventManager',_0x23b0('0x78'),{'event':_0x23b0('0x79'),'message':_0x3e948d['message']},client9002)[_0x23b0('0x13')](function(){return _0x3e948d;});}return _0x3e948d;}return null;})[_0x23b0('0x13')](respondWithResult(_0x2b4b5e,null))['catch'](handleError(_0x2b4b5e,null));};exports[_0x23b0('0x7a')]=function(_0x2b0b7e,_0x21fbba){var _0x4ae9d0={'agent':{},'channel':'mail'};if(_0x2b0b7e[_0x23b0('0x40')]['id']){delete _0x2b0b7e[_0x23b0('0x40')]['id'];}_0x2b0b7e[_0x23b0('0x40')]['UserId']=_0x2b0b7e[_0x23b0('0x40')][_0x23b0('0x61')]||_0x2b0b7e[_0x23b0('0x62')]['id'];_0x4ae9d0[_0x23b0('0x63')]['id']=_0x2b0b7e['body'][_0x23b0('0x61')];return db[_0x23b0('0x2b')][_0x23b0('0x3f')]({'where':{'id':_0x2b0b7e[_0x23b0('0x41')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x21fbba,null))[_0x23b0('0x13')](function(_0x579eab){if(_0x579eab){_0x4ae9d0[_0x23b0('0x1c')]=_0x579eab[_0x23b0('0x64')]({'plain':!![]});return db[_0x23b0('0x65')]['find']({'where':{'id':_0x579eab[_0x23b0('0x7b')]}});}return null;})[_0x23b0('0x13')](handleEntityNotFound(_0x21fbba,null))[_0x23b0('0x13')](function(_0x4ec564){if(_0x4ec564){_0x4ae9d0[_0x23b0('0x67')]=_0x4ec564['get']({'plain':!![]});interaction_log['info'](_0x23b0('0x7c'),_0x2b0b7e['user']['id'],_0x2b0b7e[_0x23b0('0x62')]['name'],_0x2b0b7e[_0x23b0('0x62')][_0x23b0('0x69')],_0x4ae9d0[_0x23b0('0x67')]['id'],_0x2b0b7e[_0x23b0('0x40')]?JSON['stringify'](_0x2b0b7e['body']):_0x23b0('0x6a'));return respondWithRpcPromise(_0x23b0('0x7d'),'rejectMessage',_0x4ae9d0);}return null;})[_0x23b0('0x13')](function(_0x253107){var _0x360695=_0x23b0('0x6c')+_0x253107[_0x23b0('0x1c')]['ContactId'];return db[_0x23b0('0x6d')][_0x23b0('0x2e')](_0x360695,{'type':db[_0x23b0('0x6e')][_0x23b0('0x6f')][_0x23b0('0x7e')],'raw':!![]})[_0x23b0('0x13')](function(_0x6f3958){return _0x6f3958;});})[_0x23b0('0x13')](function(_0x289af1){if(_0x289af1){_0x4ae9d0['message']['contact']=_0x289af1[0x0];if(!_0x2b0b7e[_0x23b0('0x40')]['UserId'])return;return db[_0x23b0('0x70')][_0x23b0('0x3f')]({'where':{'id':_0x2b0b7e[_0x23b0('0x40')][_0x23b0('0x61')],'role':_0x23b0('0x63')},'attributes':['id',_0x23b0('0x28'),_0x23b0('0x7f'),_0x23b0('0x71'),_0x23b0('0x72')],'raw':!![]});}return null;})[_0x23b0('0x13')](function(_0x36ff19){if(!_0x36ff19)return null;_0x4ae9d0[_0x23b0('0x1c')]['agent']=_0x36ff19;return _0x4ae9d0;})[_0x23b0('0x13')](function(_0x2baa20){if(_0x2baa20){_0x2baa20[_0x23b0('0x1c')]['interface']=util[_0x23b0('0x5c')](_0x23b0('0x73'),_0x2b0b7e['user'][_0x23b0('0x28')]);_0x2baa20[_0x23b0('0x1c')][_0x23b0('0x74')]=_0x4ae9d0['channel'];_0x2baa20[_0x23b0('0x1c')][_0x23b0('0x75')]=_0x4ae9d0[_0x23b0('0x74')];_0x2baa20[_0x23b0('0x1c')][_0x23b0('0x76')]=_0x23b0('0x7a');_0x2baa20['message'][_0x23b0('0x40')]=htmlToText['fromString'](_0x4ae9d0[_0x23b0('0x1c')][_0x23b0('0x40')]);respondWithRpcPromise('EventManager',_0x23b0('0x78'),{'event':'rejectmessage','message':_0x2baa20[_0x23b0('0x1c')]},client9002);return _0x4ae9d0;}return null;})[_0x23b0('0x13')](respondWithResult(_0x21fbba,null))['catch'](handleError(_0x21fbba,null));};exports[_0x23b0('0x80')]=function(_0x1f7df2,_0x354498){var _0x5db86c=moment()[_0x23b0('0x81')]()[_0x23b0('0x82')]();var _0x1ef15b=path[_0x23b0('0x83')](config[_0x23b0('0x54')],_0x23b0('0x84'),_0x23b0('0x85'),'tmp');var _0x4b9f39=path['join'](config[_0x23b0('0x54')],_0x23b0('0x84'),_0x23b0('0x85'),_0x23b0('0x53'));var _0x3bbc69=util['format'](_0x23b0('0x86'),_0x5db86c);return db[_0x23b0('0x2b')][_0x23b0('0x3f')]({'where':{'id':_0x1f7df2['params']['id']},'attributes':['id','body',_0x23b0('0x87'),'to','cc',_0x23b0('0x88'),_0x23b0('0x89'),_0x23b0('0x8a')],'include':_0x1f7df2['query']['attachments']?[{'model':db[_0x23b0('0x8b')],'as':_0x23b0('0x8c')}]:undefined})[_0x23b0('0x13')](handleEntityNotFound(_0x354498,null))[_0x23b0('0x13')](function(_0x4ae1c6){if(_0x4ae1c6){var _0x1838b0=_0x4ae1c6;var _0x524f1a={'from':_0x1838b0[_0x23b0('0x87')],'to':_0x1838b0['to'],'subject':_0x1838b0[_0x23b0('0x89')],'html':htmlEntities[_0x23b0('0x8d')](_0x1838b0[_0x23b0('0x40')]),'headers':{'Date':moment(_0x1838b0[_0x23b0('0x8a')])[_0x23b0('0x5c')](_0x23b0('0x8e'))},'attachments':[]};if(_0x4ae1c6['cc']){_0x524f1a[_0x23b0('0x8f')]['Cc']=_0x4ae1c6['cc'];}if(_0x4ae1c6[_0x23b0('0x88')]){_0x524f1a[_0x23b0('0x8f')][_0x23b0('0x90')]=_0x4ae1c6[_0x23b0('0x88')];}return new BPromise(function(_0x668fca,_0x346e06){if(_0x4ae1c6['Attachments']){for(var _0x2e3583=0x0;_0x2e3583<_0x4ae1c6[_0x23b0('0x8c')][_0x23b0('0x35')];_0x2e3583++){var _0x297b70=_0x4ae1c6[_0x23b0('0x8c')][_0x2e3583];var _0x1797ef=path[_0x23b0('0x83')](_0x4b9f39,_0x297b70[_0x23b0('0x56')]);if(fs['existsSync'](_0x1797ef)){_0x524f1a[_0x23b0('0x53')]['push']({'name':_0x297b70[_0x23b0('0x28')],'contentType':_0x297b70[_0x23b0('0x3b')],'data':fs['readFileSync'](_0x1797ef)});}}}emlformat['build'](_0x524f1a,function(_0x50b1d2,_0x2e37b7){if(_0x50b1d2)return _0x346e06(_0x50b1d2);fs[_0x23b0('0x91')](path['join'](_0x1ef15b,_0x3bbc69),_0x2e37b7);return _0x668fca(_0x2e37b7);});});}})[_0x23b0('0x13')](function(_0x5432d3){if(_0x5432d3){return _0x354498[_0x23b0('0x80')](path['join'](_0x1ef15b,_0x3bbc69),_0x3bbc69,function(_0x560ea1){if(!_0x560ea1)fs['unlinkSync'](path[_0x23b0('0x83')](_0x1ef15b,_0x3bbc69));});}})['catch'](handleError(_0x354498,null));};
\ No newline at end of file
index 0563d32..ca665bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc00=['emit','events','../../mysqldb','MailMessage','setMaxListeners','update','remove'];(function(_0x3a0c4f,_0x5dd1a3){var _0x247049=function(_0x144695){while(--_0x144695){_0x3a0c4f['push'](_0x3a0c4f['shift']());}};_0x247049(++_0x5dd1a3);}(_0xdc00,0x190));var _0x0dc0=function(_0x360129,_0x383ba8){_0x360129=_0x360129-0x0;var _0x43fca9=_0xdc00[_0x360129];return _0x43fca9;};'use strict';var EventEmitter=require(_0x0dc0('0x0'));var MailMessage=require(_0x0dc0('0x1'))['db'][_0x0dc0('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x0dc0('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0dc0('0x4'),'afterDestroy':_0x0dc0('0x5')};function emitEvent(_0x43c530){return function(_0x33192e,_0x5d5cec,_0x20055d){MailMessageEvents[_0x0dc0('0x6')](_0x43c530+':'+_0x33192e['id'],_0x33192e);MailMessageEvents[_0x0dc0('0x6')](_0x43c530,_0x33192e);_0x20055d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
+var _0x2a3e=['exports','events','../../mysqldb','MailMessage','setMaxListeners','remove','emit','hasOwnProperty'];(function(_0x304242,_0x53276b){var _0x4f6cb3=function(_0x17f1a7){while(--_0x17f1a7){_0x304242['push'](_0x304242['shift']());}};_0x4f6cb3(++_0x53276b);}(_0x2a3e,0x1c1));var _0xe2a3=function(_0x36157b,_0x19dc36){_0x36157b=_0x36157b-0x0;var _0x16aff4=_0x2a3e[_0x36157b];return _0x16aff4;};'use strict';var EventEmitter=require(_0xe2a3('0x0'));var MailMessage=require(_0xe2a3('0x1'))['db'][_0xe2a3('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xe2a3('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xe2a3('0x4')};function emitEvent(_0x230ede){return function(_0x127cbb,_0x477d57,_0x432c2c){MailMessageEvents[_0xe2a3('0x5')](_0x230ede+':'+_0x127cbb['id'],_0x127cbb);MailMessageEvents['emit'](_0x230ede,_0x127cbb);_0x432c2c(null);};}for(var e in events){if(events[_0xe2a3('0x6')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0xe2a3('0x7')]=MailMessageEvents;
\ No newline at end of file
index 92dde2f..b93dc59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a03=['./mailMessage.attributes','exports','define','MailMessage','messageId','subject','body','plainBody','fromString','models','get','direction','toLowerCase','out','secret','isNil','MailInteraction','then','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','rimraf'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0a03,0x97));var _0x30a0=function(_0xa049bf,_0x18278d){_0xa049bf=_0xa049bf-0x0;var _0x10dfbe=_0x0a03[_0xa049bf];return _0x10dfbe;};'use strict';var _=require(_0x30a0('0x0'));var util=require(_0x30a0('0x1'));var logger=require(_0x30a0('0x2'))(_0x30a0('0x3'));var moment=require(_0x30a0('0x4'));var BPromise=require(_0x30a0('0x5'));var rp=require(_0x30a0('0x6'));var htmlToText=require(_0x30a0('0x7'));var fs=require('fs');var path=require('path');var rimraf=require(_0x30a0('0x8'));var config=require('../../config/environment');var attributes=require(_0x30a0('0x9'));module[_0x30a0('0xa')]=function(_0x31cfbf,_0x4174d2){return _0x31cfbf[_0x30a0('0xb')](_0x30a0('0xc'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x30a0('0xd'),'fields':[_0x30a0('0xd')]},{'name':'fti_mail_messages','fields':['plainBody',_0x30a0('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x597de7,_0x1105e8,_0x101893){if(_0x597de7[_0x30a0('0xf')]){_0x597de7[_0x30a0('0x10')]=htmlToText[_0x30a0('0x11')](_0x597de7[_0x30a0('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x101893(null,_0x1105e8);},'afterCreate':function(_0x5dd893,_0x2ad67f,_0x5bfbd2){var _0x32db74=_0x31cfbf[_0x30a0('0x12')];var _0x4db4c0=_0x5dd893[_0x30a0('0x13')]({'plain':!![]});if(_0x4db4c0[_0x30a0('0x14')]['toLowerCase']()==='in'||_0x4db4c0['direction'][_0x30a0('0x15')]()===_0x30a0('0x16')&&!_0x4db4c0[_0x30a0('0x17')]&&!_[_0x30a0('0x18')](_0x4db4c0['UserId'])){_0x32db74[_0x30a0('0x19')]['findOne']({'where':{'id':_0x4db4c0['MailInteractionId']}})[_0x30a0('0x1a')](function(_0x23108a){if(_0x23108a){_0x23108a['update']({'lastMsgAt':_0x4db4c0[_0x30a0('0x1b')],'lastMsgDirection':_0x4db4c0[_0x30a0('0x14')]['toLowerCase']()});}})[_0x30a0('0x1c')](function(_0x36f95e){console[_0x30a0('0x1d')](_0x36f95e);});}_0x5bfbd2();}},'charset':_0x30a0('0x1e'),'collate':_0x30a0('0x1f')});};
\ No newline at end of file
+var _0xe0a5=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','exports','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','body','models','toLowerCase','out','isNil','UserId','findOne','MailInteractionId','then','update','createdAt','direction','catch','error'];(function(_0x2f8c26,_0x1f6fad){var _0x563995=function(_0x2f6e7f){while(--_0x2f6e7f){_0x2f8c26['push'](_0x2f8c26['shift']());}};_0x563995(++_0x1f6fad);}(_0xe0a5,0x1b3));var _0x5e0a=function(_0x436827,_0x570104){_0x436827=_0x436827-0x0;var _0x22434d=_0xe0a5[_0x436827];return _0x22434d;};'use strict';var _=require(_0x5e0a('0x0'));var util=require(_0x5e0a('0x1'));var logger=require(_0x5e0a('0x2'))(_0x5e0a('0x3'));var moment=require('moment');var BPromise=require(_0x5e0a('0x4'));var rp=require(_0x5e0a('0x5'));var htmlToText=require(_0x5e0a('0x6'));var fs=require('fs');var path=require(_0x5e0a('0x7'));var rimraf=require(_0x5e0a('0x8'));var config=require(_0x5e0a('0x9'));var attributes=require('./mailMessage.attributes');module[_0x5e0a('0xa')]=function(_0x15adf4,_0x3c16e6){return _0x15adf4['define'](_0x5e0a('0xb'),attributes,{'tableName':_0x5e0a('0xc'),'paranoid':![],'indexes':[{'name':_0x5e0a('0xd'),'fields':['messageId']},{'name':_0x5e0a('0xe'),'fields':[_0x5e0a('0xf'),'subject'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x18fa98,_0x213365,_0x3f3f7b){if(_0x18fa98['body']){_0x18fa98[_0x5e0a('0xf')]=htmlToText['fromString'](_0x18fa98[_0x5e0a('0x10')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3f3f7b(null,_0x213365);},'afterCreate':function(_0x37b417,_0x1a51c6,_0x1d4410){var _0x240e8f=_0x15adf4[_0x5e0a('0x11')];var _0x164615=_0x37b417['get']({'plain':!![]});if(_0x164615['direction'][_0x5e0a('0x12')]()==='in'||_0x164615['direction'][_0x5e0a('0x12')]()===_0x5e0a('0x13')&&!_0x164615['secret']&&!_[_0x5e0a('0x14')](_0x164615[_0x5e0a('0x15')])){_0x240e8f['MailInteraction'][_0x5e0a('0x16')]({'where':{'id':_0x164615[_0x5e0a('0x17')]}})[_0x5e0a('0x18')](function(_0x30a3eb){if(_0x30a3eb){_0x30a3eb[_0x5e0a('0x19')]({'lastMsgAt':_0x164615[_0x5e0a('0x1a')],'lastMsgDirection':_0x164615[_0x5e0a('0x1b')][_0x5e0a('0x12')]()});}})[_0x5e0a('0x1c')](function(_0x157377){console[_0x5e0a('0x1d')](_0x157377);});}_0x1d4410();}},'charset':'utf8mb4','collate':_0x5e0a('0x1e')});};
\ No newline at end of file
index e7a3751..acfdb63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd824=['request\x20sent','stringify','error','code','message','MailMessage,\x20%s,\x20%s','result','CreateMailMessage','MailMessage','create','body','options','raw','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','defaults','redis','localhost','then','info','debug','MailMessage,\x20%s,\x20%s,\x20%s'];(function(_0x92ab6e,_0xc92551){var _0x37f9c5=function(_0x4c6361){while(--_0x4c6361){_0x92ab6e['push'](_0x92ab6e['shift']());}};_0x37f9c5(++_0xc92551);}(_0xd824,0xc2));var _0x4d82=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xd824[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x4d82('0x0'));var util=require(_0x4d82('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4d82('0x2'));var fs=require('fs');var Redis=require(_0x4d82('0x3'));var db=require(_0x4d82('0x4'))['db'];var utils=require(_0x4d82('0x5'));var logger=require(_0x4d82('0x6'))(_0x4d82('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4d82('0x8')]['http']({'port':0x232a});config['redis']=_[_0x4d82('0x9')](config[_0x4d82('0xa')],{'host':_0x4d82('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4d82('0xa')]));require('./mailMessage.socket')['register'](socket);function respondWithRpcPromise(_0x580bbd,_0x27b777,_0x392f17){return new BPromise(function(_0x480c05,_0x318d1d){return client['request'](_0x580bbd,_0x392f17)[_0x4d82('0xc')](function(_0x303645){logger[_0x4d82('0xd')]('MailMessage,\x20%s,\x20%s',_0x27b777,'request\x20sent');logger[_0x4d82('0xe')](_0x4d82('0xf'),_0x27b777,_0x4d82('0x10'),JSON[_0x4d82('0x11')](_0x303645));if(_0x303645['error']){if(_0x303645[_0x4d82('0x12')][_0x4d82('0x13')]===0x1f4){logger[_0x4d82('0x12')]('MailMessage,\x20%s,\x20%s',_0x27b777,_0x303645[_0x4d82('0x12')]['message']);return _0x318d1d(_0x303645[_0x4d82('0x12')]['message']);}logger[_0x4d82('0x12')]('MailMessage,\x20%s,\x20%s',_0x27b777,_0x303645[_0x4d82('0x12')][_0x4d82('0x14')]);return _0x480c05(_0x303645[_0x4d82('0x12')][_0x4d82('0x14')]);}else{logger[_0x4d82('0xd')](_0x4d82('0x15'),_0x27b777,_0x4d82('0x10'));_0x480c05(_0x303645[_0x4d82('0x16')][_0x4d82('0x14')]);}})['catch'](function(_0x2919b0){logger[_0x4d82('0x12')](_0x4d82('0x15'),_0x27b777,_0x2919b0);_0x318d1d(_0x2919b0);});});}exports[_0x4d82('0x17')]=function(_0xe6260){var _0xd5f47=this;return new Promise(function(_0x1a513d,_0x64669c){return db[_0x4d82('0x18')][_0x4d82('0x19')](_0xe6260[_0x4d82('0x1a')],{'raw':_0xe6260['options']?_0xe6260[_0x4d82('0x1b')][_0x4d82('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x1a419f){logger[_0x4d82('0xd')](_0x4d82('0x17'),_0xe6260);logger[_0x4d82('0xe')](_0x4d82('0x17'),_0xe6260,JSON[_0x4d82('0x11')](_0x1a419f));_0x1a513d(_0x1a419f);})[_0x4d82('0x1d')](function(_0x462258){logger[_0x4d82('0x12')](_0x4d82('0x17'),_0x462258[_0x4d82('0x14')],_0xe6260);_0x64669c(_0xd5f47[_0x4d82('0x12')](0x1f4,_0x462258[_0x4d82('0x14')]));});});};
\ No newline at end of file
+var _0x160f=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateMailMessage','MailMessage','create','options','raw'];(function(_0x45313f,_0x46caf4){var _0x402910=function(_0x4883d8){while(--_0x4883d8){_0x45313f['push'](_0x45313f['shift']());}};_0x402910(++_0x46caf4);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf160('0x0'));var util=require(_0xf160('0x1'));var moment=require(_0xf160('0x2'));var BPromise=require(_0xf160('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf160('0x4'));var db=require(_0xf160('0x5'))['db'];var utils=require(_0xf160('0x6'));var logger=require(_0xf160('0x7'))(_0xf160('0x8'));var config=require(_0xf160('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf160('0xa')][_0xf160('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xf160('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf160('0xd'))[_0xf160('0xe')](socket);function respondWithRpcPromise(_0x393f70,_0x2736b8,_0x5e09c6){return new BPromise(function(_0x4a0639,_0xf8ec3d){return client[_0xf160('0xf')](_0x393f70,_0x5e09c6)[_0xf160('0x10')](function(_0x56072f){logger[_0xf160('0x11')](_0xf160('0x12'),_0x2736b8,_0xf160('0x13'));logger[_0xf160('0x14')](_0xf160('0x15'),_0x2736b8,'request\x20sent',JSON[_0xf160('0x16')](_0x56072f));if(_0x56072f['error']){if(_0x56072f[_0xf160('0x17')][_0xf160('0x18')]===0x1f4){logger[_0xf160('0x17')](_0xf160('0x12'),_0x2736b8,_0x56072f[_0xf160('0x17')][_0xf160('0x19')]);return _0xf8ec3d(_0x56072f[_0xf160('0x17')][_0xf160('0x19')]);}logger[_0xf160('0x17')]('MailMessage,\x20%s,\x20%s',_0x2736b8,_0x56072f[_0xf160('0x17')][_0xf160('0x19')]);return _0x4a0639(_0x56072f[_0xf160('0x17')][_0xf160('0x19')]);}else{logger['info'](_0xf160('0x12'),_0x2736b8,'request\x20sent');_0x4a0639(_0x56072f[_0xf160('0x1a')][_0xf160('0x19')]);}})[_0xf160('0x1b')](function(_0x1e09f3){logger[_0xf160('0x17')](_0xf160('0x12'),_0x2736b8,_0x1e09f3);_0xf8ec3d(_0x1e09f3);});});}exports[_0xf160('0x1c')]=function(_0x2a8cb4){var _0x1fdb38=this;return new Promise(function(_0x4a58d9,_0x40ccf0){return db[_0xf160('0x1d')][_0xf160('0x1e')](_0x2a8cb4['body'],{'raw':_0x2a8cb4[_0xf160('0x1f')]?_0x2a8cb4[_0xf160('0x1f')][_0xf160('0x20')]===undefined?!![]:![]:!![]})[_0xf160('0x10')](function(_0x2e03c8){logger[_0xf160('0x11')](_0xf160('0x1c'),_0x2a8cb4);logger['debug'](_0xf160('0x1c'),_0x2a8cb4,JSON[_0xf160('0x16')](_0x2e03c8));_0x4a58d9(_0x2e03c8);})[_0xf160('0x1b')](function(_0x49bb5c){logger['error'](_0xf160('0x1c'),_0x49bb5c[_0xf160('0x19')],_0x2a8cb4);_0x40ccf0(_0x1fdb38['error'](0x1f4,_0x49bb5c['message']));});});};
\ No newline at end of file
index 28c41fd..f59dce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe735=['removeListener','register','length','mailMessage:','./mailMessage.events','update'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xe735,0xc4));var _0x5e73=function(_0xdd2bfa,_0x5bd304){_0xdd2bfa=_0xdd2bfa-0x0;var _0x55397e=_0xe735[_0xdd2bfa];return _0x55397e;};'use strict';var MailMessageEvents=require(_0x5e73('0x0'));var events=['save','remove',_0x5e73('0x1')];function createListener(_0x17cffe,_0x1b900b){return function(_0x310564){_0x1b900b['emit'](_0x17cffe,_0x310564);};}function removeListener(_0x43c6c7,_0x662a8d){return function(){MailMessageEvents[_0x5e73('0x2')](_0x43c6c7,_0x662a8d);};}exports[_0x5e73('0x3')]=function(_0x2f0157){for(var _0x5833da=0x0,_0x17e271=events[_0x5e73('0x4')];_0x5833da<_0x17e271;_0x5833da++){var _0xeeb8ac=events[_0x5833da];var _0x4bc989=createListener(_0x5e73('0x5')+_0xeeb8ac,_0x2f0157);MailMessageEvents['on'](_0xeeb8ac,_0x4bc989);}};
\ No newline at end of file
+var _0xd984=['removeListener','register','length','mailMessage:','remove','update','emit'];(function(_0x3315f6,_0x1a67a5){var _0x5f1c18=function(_0x4bf3e2){while(--_0x4bf3e2){_0x3315f6['push'](_0x3315f6['shift']());}};_0x5f1c18(++_0x1a67a5);}(_0xd984,0x10e));var _0x4d98=function(_0x1142da,_0x4ee9cb){_0x1142da=_0x1142da-0x0;var _0x234ff9=_0xd984[_0x1142da];return _0x234ff9;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=['save',_0x4d98('0x0'),_0x4d98('0x1')];function createListener(_0x216a6b,_0x3ca317){return function(_0xb5b1cd){_0x3ca317[_0x4d98('0x2')](_0x216a6b,_0xb5b1cd);};}function removeListener(_0x112c89,_0x242e15){return function(){MailMessageEvents[_0x4d98('0x3')](_0x112c89,_0x242e15);};}exports[_0x4d98('0x4')]=function(_0xcf1401){for(var _0x16c1b9=0x0,_0x512a13=events[_0x4d98('0x5')];_0x16c1b9<_0x512a13;_0x16c1b9++){var _0x3aafd7=events[_0x16c1b9];var _0x5e127d=createListener(_0x4d98('0x6')+_0x3aafd7,_0xcf1401);MailMessageEvents['on'](_0x3aafd7,_0x5e127d);}};
\ No newline at end of file
index 8efcc7b..8c2ed5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x738f=['post','/:id/teams','addAgents','put','/:id','delete','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','./mailQueue.controller','get','isAuthenticated','index','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x738f,0x1c3));var _0xf738=function(_0x46ce9d,_0xa564b0){_0x46ce9d=_0x46ce9d-0x0;var _0x1639c4=_0x738f[_0x46ce9d];return _0x1639c4;};'use strict';var multer=require(_0xf738('0x0'));var util=require(_0xf738('0x1'));var path=require('path');var timeout=require(_0xf738('0x2'));var express=require(_0xf738('0x3'));var router=express[_0xf738('0x4')]();var fs_extra=require(_0xf738('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf738('0x6'));router[_0xf738('0x7')]('/',auth[_0xf738('0x8')](),controller[_0xf738('0x9')]);router[_0xf738('0x7')]('/describe',auth[_0xf738('0x8')](),controller[_0xf738('0xa')]);router[_0xf738('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xf738('0xb')]);router[_0xf738('0x7')](_0xf738('0xc'),auth[_0xf738('0x8')](),controller[_0xf738('0xd')]);router[_0xf738('0x7')]('/:id/teams',auth[_0xf738('0x8')](),controller[_0xf738('0xe')]);router[_0xf738('0x7')](_0xf738('0xf'),auth[_0xf738('0x8')](),controller[_0xf738('0x10')]);router['post']('/',auth[_0xf738('0x8')](),controller['create']);router[_0xf738('0x11')](_0xf738('0x12'),auth[_0xf738('0x8')](),controller['addTeams']);router[_0xf738('0x11')](_0xf738('0xf'),auth[_0xf738('0x8')](),controller[_0xf738('0x13')]);router[_0xf738('0x14')](_0xf738('0x15'),auth[_0xf738('0x8')](),controller['update']);router[_0xf738('0x16')](_0xf738('0x15'),auth[_0xf738('0x8')](),controller['destroy']);router[_0xf738('0x16')](_0xf738('0x12'),auth[_0xf738('0x8')](),controller[_0xf738('0x17')]);router['delete'](_0xf738('0xf'),auth[_0xf738('0x8')](),controller[_0xf738('0x18')]);module[_0xf738('0x19')]=router;
\ No newline at end of file
+var _0x8235=['/describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index'];(function(_0x20d122,_0x176428){var _0x3c8233=function(_0x4dd81c){while(--_0x4dd81c){_0x20d122['push'](_0x20d122['shift']());}};_0x3c8233(++_0x176428);}(_0x8235,0x13a));var _0x5823=function(_0x272149,_0x1de4d5){_0x272149=_0x272149-0x0;var _0x1166de=_0x8235[_0x272149];return _0x1166de;};'use strict';var multer=require(_0x5823('0x0'));var util=require(_0x5823('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5823('0x2')]();var fs_extra=require(_0x5823('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5823('0x4'));var config=require(_0x5823('0x5'));var controller=require(_0x5823('0x6'));router[_0x5823('0x7')]('/',auth[_0x5823('0x8')](),controller[_0x5823('0x9')]);router['get'](_0x5823('0xa'),auth[_0x5823('0x8')](),controller['describe']);router[_0x5823('0x7')](_0x5823('0xb'),auth['isAuthenticated'](),controller[_0x5823('0xc')]);router[_0x5823('0x7')](_0x5823('0xd'),auth[_0x5823('0x8')](),controller[_0x5823('0xe')]);router[_0x5823('0x7')](_0x5823('0xf'),auth[_0x5823('0x8')](),controller[_0x5823('0x10')]);router[_0x5823('0x7')](_0x5823('0x11'),auth[_0x5823('0x8')](),controller[_0x5823('0x12')]);router[_0x5823('0x13')]('/',auth[_0x5823('0x8')](),controller['create']);router[_0x5823('0x13')](_0x5823('0xf'),auth['isAuthenticated'](),controller['addTeams']);router[_0x5823('0x13')](_0x5823('0x11'),auth[_0x5823('0x8')](),controller['addAgents']);router[_0x5823('0x14')](_0x5823('0xb'),auth['isAuthenticated'](),controller[_0x5823('0x15')]);router[_0x5823('0x16')](_0x5823('0xb'),auth[_0x5823('0x8')](),controller[_0x5823('0x17')]);router['delete'](_0x5823('0xf'),auth[_0x5823('0x8')](),controller[_0x5823('0x18')]);router[_0x5823('0x16')](_0x5823('0x11'),auth['isAuthenticated'](),controller[_0x5823('0x19')]);module[_0x5823('0x1a')]=router;
\ No newline at end of file
index 3ae8110..d882e23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3df3=['INTEGER','roundrobin','sequelize','name','STRING'];(function(_0x1c2051,_0x4cb6b9){var _0x2b58a0=function(_0x4308df){while(--_0x4308df){_0x1c2051['push'](_0x1c2051['shift']());}};_0x2b58a0(++_0x4cb6b9);}(_0x3df3,0xa7));var _0x33df=function(_0x1bc013,_0x7771c6){_0x1bc013=_0x1bc013-0x0;var _0x55df36=_0x3df3[_0x1bc013];return _0x55df36;};'use strict';var Sequelize=require(_0x33df('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x33df('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x33df('0x2')]},'timeout':{'type':Sequelize[_0x33df('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory','beepall',_0x33df('0x4'))}};
\ No newline at end of file
+var _0x8a77=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x2fa316,_0x276ef7){var _0x505189=function(_0x26b8da){while(--_0x26b8da){_0x2fa316['push'](_0x2fa316['shift']());}};_0x505189(++_0x276ef7);}(_0x8a77,0x16d));var _0x78a7=function(_0x5d5de2,_0x2b80fe){_0x5d5de2=_0x5d5de2-0x0;var _0x2e0bee=_0x8a77[_0x5d5de2];return _0x2e0bee;};'use strict';var Sequelize=require(_0x78a7('0x0'));module[_0x78a7('0x1')]={'name':{'type':Sequelize[_0x78a7('0x2')],'unique':_0x78a7('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x78a7('0x2')]},'timeout':{'type':Sequelize[_0x78a7('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x78a7('0x5')](_0x78a7('0x6'),_0x78a7('0x7'),_0x78a7('0x8'))}};
\ No newline at end of file
index eb8a71b..4b0d712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8d4=['from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','union','compact','transaction','removeTeams','emit','userMailQueue:remove','addAgents','removeAgents','getAgents','bluebird','lodash','squel','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','get','MailQueues','UserProfileResource','error','stack','name','index','MailQueue','rawAttributes','fieldName','type','key','getOptions','where','include','query','findAll','rows','catch','show','params','model','keys','intersection','attributes','fields','includeAll','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','filters','length','hasOwnProperty','order','sort','MailQueueId','map','filter','options','UserMailQueue','User','findAndCountAll','UserId','updatedAt','createdAt','format','SIP','getTeams','pick','nolimit','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','addTeams','each','findOrCreate','userMailQueue:save','select','field','tq.TeamId'];(function(_0x36d25e,_0x1a047d){var _0x4b95b8=function(_0x74da3){while(--_0x74da3){_0x36d25e['push'](_0x36d25e['shift']());}};_0x4b95b8(++_0x1a047d);}(_0xd8d4,0x91));var _0x4d8d=function(_0x2d7e1f,_0x1c079a){_0x2d7e1f=_0x2d7e1f-0x0;var _0x254680=_0xd8d4[_0x2d7e1f];return _0x254680;};'use strict';var BPromise=require(_0x4d8d('0x0'));var util=require('util');var _=require(_0x4d8d('0x1'));var squel=require(_0x4d8d('0x2'));var Redis=require(_0x4d8d('0x3'));var qs=require(_0x4d8d('0x4'));var logger=require('../../config/logger')(_0x4d8d('0x5'));var config=require(_0x4d8d('0x6'));var db=require(_0x4d8d('0x7'))['db'];config[_0x4d8d('0x8')]=_['defaults'](config[_0x4d8d('0x8')],{'host':_0x4d8d('0x9'),'port':0x18eb});var socket=require(_0x4d8d('0xa'))(new Redis(config[_0x4d8d('0x8')]));require('./mailQueue.socket')[_0x4d8d('0xb')](socket);function respondWithStatusCode(_0x3b35e5,_0x176d7e){_0x176d7e=_0x176d7e||0xcc;return function(_0x1828db){if(_0x1828db){return _0x3b35e5[_0x4d8d('0xc')](_0x176d7e);}return _0x3b35e5[_0x4d8d('0xd')](_0x176d7e)[_0x4d8d('0xe')]();};}function respondWithResult(_0x13f49f,_0x1d2199){_0x1d2199=_0x1d2199||0xc8;return function(_0x51921b){if(_0x51921b){return _0x13f49f['status'](_0x1d2199)['json'](_0x51921b);}};}function respondWithFilteredResult(_0x549660,_0xabb0c7){return function(_0x5305a8){if(_0x5305a8){var _0x30c09d=typeof _0xabb0c7[_0x4d8d('0xf')]===_0x4d8d('0x10')&&typeof _0xabb0c7[_0x4d8d('0x11')]===_0x4d8d('0x10');var _0x3990db=_0x5305a8[_0x4d8d('0x12')];var _0x2fd179=_0x30c09d?0x0:_0xabb0c7[_0x4d8d('0xf')];var _0x496787=_0x30c09d?_0x5305a8[_0x4d8d('0x12')]:_0xabb0c7[_0x4d8d('0xf')]+_0xabb0c7[_0x4d8d('0x11')];var _0x38116c;if(_0x496787>=_0x3990db){_0x496787=_0x3990db;_0x38116c=0xc8;}else{_0x38116c=0xce;}_0x549660['status'](_0x38116c);return _0x549660[_0x4d8d('0x13')](_0x4d8d('0x14'),_0x2fd179+'-'+_0x496787+'/'+_0x3990db)[_0x4d8d('0x15')](_0x5305a8);}return null;};}function saveUpdates(_0x3d4106){return function(_0xf9ef72){if(_0xf9ef72){return _0xf9ef72[_0x4d8d('0x16')](_0x3d4106)[_0x4d8d('0x17')](function(_0x3765b5){return _0x3765b5;});}return null;};}function removeEntity(_0x4d3620){return function(_0x47545b){if(_0x47545b){return _0x47545b[_0x4d8d('0x18')]()[_0x4d8d('0x17')](function(){var _0x3d9cde=_0x47545b[_0x4d8d('0x19')]({'plain':!![]});var _0x1f10b7=_0x4d8d('0x1a');return db[_0x4d8d('0x1b')][_0x4d8d('0x18')]({'where':{'type':_0x1f10b7,'resourceId':_0x3d9cde['id']}})[_0x4d8d('0x17')](function(){return _0x47545b;});})[_0x4d8d('0x17')](function(){_0x4d3620['status'](0xcc)[_0x4d8d('0xe')]();});}};}function handleEntityNotFound(_0x10b67f){return function(_0x7996ca){if(!_0x7996ca){_0x10b67f[_0x4d8d('0xc')](0x194);}return _0x7996ca;};}function handleError(_0x3698f0,_0x3b4ba5){_0x3b4ba5=_0x3b4ba5||0x1f4;return function(_0x35f4b4){logger[_0x4d8d('0x1c')](_0x35f4b4[_0x4d8d('0x1d')]);if(_0x35f4b4[_0x4d8d('0x1e')]){delete _0x35f4b4[_0x4d8d('0x1e')];}_0x3698f0[_0x4d8d('0xd')](_0x3b4ba5)['send'](_0x35f4b4);};}exports[_0x4d8d('0x1f')]=function(_0x39982d,_0x49fb38){var _0x5bd915={};var _0x1c3edf={'count':0x0,'rows':[]};var _0x50d3fb=_['map'](db[_0x4d8d('0x20')][_0x4d8d('0x21')],function(_0x443fb3){return{'name':_0x443fb3[_0x4d8d('0x22')],'type':_0x443fb3[_0x4d8d('0x23')][_0x4d8d('0x24')]};});_0x5bd915=qs[_0x4d8d('0x25')](_0x50d3fb,_0x39982d);var _0x1a9558={'where':_0x5bd915[_0x4d8d('0x26')]};return db[_0x4d8d('0x20')][_0x4d8d('0x12')](_0x1a9558)[_0x4d8d('0x17')](function(_0x44b542){_0x1c3edf['count']=_0x44b542;_0x5bd915[_0x4d8d('0x27')]=qs[_0x4d8d('0x27')](_0x39982d[_0x4d8d('0x28')]);return db[_0x4d8d('0x20')][_0x4d8d('0x29')](_0x5bd915);})['then'](function(_0x3cf96e){_0x1c3edf[_0x4d8d('0x2a')]=_0x3cf96e;return _0x1c3edf;})[_0x4d8d('0x17')](respondWithFilteredResult(_0x49fb38,_0x5bd915))[_0x4d8d('0x2b')](handleError(_0x49fb38,null));};exports[_0x4d8d('0x2c')]=function(_0x1e1910,_0x5b8398){var _0x736f70={'raw':!![],'where':{'id':_0x1e1910[_0x4d8d('0x2d')]['id']}},_0x4c6193={};_0x4c6193[_0x4d8d('0x2e')]=_[_0x4d8d('0x2f')](db['MailQueue'][_0x4d8d('0x21')]);_0x4c6193['query']=_[_0x4d8d('0x2f')](_0x1e1910[_0x4d8d('0x28')]);_0x4c6193['filters']=_[_0x4d8d('0x30')](_0x4c6193[_0x4d8d('0x2e')],_0x4c6193['query']);_0x736f70[_0x4d8d('0x31')]=_[_0x4d8d('0x30')](_0x4c6193[_0x4d8d('0x2e')],qs[_0x4d8d('0x32')](_0x1e1910[_0x4d8d('0x28')][_0x4d8d('0x32')]));_0x736f70[_0x4d8d('0x31')]=_0x736f70[_0x4d8d('0x31')]['length']?_0x736f70['attributes']:_0x4c6193[_0x4d8d('0x2e')];if(_0x1e1910['query'][_0x4d8d('0x33')]){_0x736f70[_0x4d8d('0x27')]=[{'all':!![]}];}_0x736f70=_[_0x4d8d('0x34')]({},_0x736f70,_0x1e1910['options']);return db[_0x4d8d('0x20')][_0x4d8d('0x35')](_0x736f70)[_0x4d8d('0x17')](handleEntityNotFound(_0x5b8398,null))['then'](respondWithResult(_0x5b8398,null))[_0x4d8d('0x2b')](handleError(_0x5b8398,null));};exports[_0x4d8d('0x36')]=function(_0x309308,_0x233948){return db['MailQueue'][_0x4d8d('0x36')](_0x309308[_0x4d8d('0x37')],{})['then'](function(_0xa12ce3){var _0x350d9f=_0x309308[_0x4d8d('0x38')][_0x4d8d('0x19')]({'plain':!![]});if(!_0x350d9f)throw new Error(_0x4d8d('0x39'));if(_0x350d9f[_0x4d8d('0x3a')]===_0x4d8d('0x38')){var _0x199c33=_0xa12ce3[_0x4d8d('0x19')]({'plain':!![]});var _0x1c35ab=_0x4d8d('0x1a');return db[_0x4d8d('0x3b')][_0x4d8d('0x35')]({'where':{'name':_0x1c35ab,'userProfileId':_0x350d9f[_0x4d8d('0x3c')]},'raw':!![]})[_0x4d8d('0x17')](function(_0x2a8bd4){if(_0x2a8bd4&&_0x2a8bd4[_0x4d8d('0x3d')]===0x0){return db['UserProfileResource'][_0x4d8d('0x36')]({'name':_0x199c33[_0x4d8d('0x1e')],'resourceId':_0x199c33['id'],'type':_0x2a8bd4[_0x4d8d('0x1e')],'sectionId':_0x2a8bd4['id']},{})[_0x4d8d('0x17')](function(){return _0xa12ce3;});}else{return _0xa12ce3;}})[_0x4d8d('0x2b')](function(_0x59b9f0){logger[_0x4d8d('0x1c')](_0x4d8d('0x3e'),_0x59b9f0);throw _0x59b9f0;});}return _0xa12ce3;})[_0x4d8d('0x17')](respondWithResult(_0x233948,0xc9))[_0x4d8d('0x2b')](handleError(_0x233948,null));};exports[_0x4d8d('0x16')]=function(_0x1daf91,_0x29a60c){if(_0x1daf91[_0x4d8d('0x37')]['id']){delete _0x1daf91['body']['id'];}return db['MailQueue'][_0x4d8d('0x35')]({'where':{'id':_0x1daf91[_0x4d8d('0x2d')]['id']}})[_0x4d8d('0x17')](handleEntityNotFound(_0x29a60c,null))[_0x4d8d('0x17')](saveUpdates(_0x1daf91[_0x4d8d('0x37')],null))[_0x4d8d('0x17')](respondWithResult(_0x29a60c,null))[_0x4d8d('0x2b')](handleError(_0x29a60c,null));};exports['destroy']=function(_0x187f64,_0x230995){return db[_0x4d8d('0x20')][_0x4d8d('0x35')]({'where':{'id':_0x187f64['params']['id']}})[_0x4d8d('0x17')](handleEntityNotFound(_0x230995,null))[_0x4d8d('0x17')](removeEntity(_0x230995,null))[_0x4d8d('0x2b')](handleError(_0x230995,null));};exports['describe']=function(_0x1d7ea5,_0x4eb509){return db[_0x4d8d('0x20')][_0x4d8d('0x3f')]()[_0x4d8d('0x17')](respondWithResult(_0x4eb509,null))[_0x4d8d('0x2b')](handleError(_0x4eb509,null));};exports[_0x4d8d('0x40')]=function(_0xc9549f,_0x95cb2b){var _0x13ebb2={'raw':!![],'where':{}},_0x543fe6={},_0x4e0dbd;return db[_0x4d8d('0x20')][_0x4d8d('0x41')]({'where':{'id':_0xc9549f[_0x4d8d('0x2d')]['id']}})[_0x4d8d('0x17')](handleEntityNotFound(_0x95cb2b,null))[_0x4d8d('0x17')](function(_0x951aee){if(_0x951aee){_0x4e0dbd=_0x951aee[_0x4d8d('0x19')]({'plain':!![]});_0x543fe6['model']=_[_0x4d8d('0x2f')](db['UserMailQueue']['rawAttributes']);_0x543fe6[_0x4d8d('0x28')]=_[_0x4d8d('0x2f')](_0xc9549f[_0x4d8d('0x28')]);_0x543fe6[_0x4d8d('0x42')]=_[_0x4d8d('0x30')](_0x543fe6[_0x4d8d('0x2e')],_0x543fe6[_0x4d8d('0x28')]);_0x13ebb2[_0x4d8d('0x31')]=_[_0x4d8d('0x30')](_0x543fe6[_0x4d8d('0x2e')],qs[_0x4d8d('0x32')](_0xc9549f[_0x4d8d('0x28')][_0x4d8d('0x32')]));_0x13ebb2[_0x4d8d('0x31')]=_0x13ebb2[_0x4d8d('0x31')][_0x4d8d('0x43')]?_0x13ebb2[_0x4d8d('0x31')]:_0x543fe6[_0x4d8d('0x2e')];if(!_0xc9549f[_0x4d8d('0x28')][_0x4d8d('0x44')]('nolimit')){_0x13ebb2[_0x4d8d('0x11')]=qs['limit'](_0xc9549f['query'][_0x4d8d('0x11')]);_0x13ebb2[_0x4d8d('0xf')]=qs[_0x4d8d('0xf')](_0xc9549f[_0x4d8d('0x28')][_0x4d8d('0xf')]);}_0x13ebb2[_0x4d8d('0x45')]=qs['sort'](_0xc9549f['query'][_0x4d8d('0x46')]);_0x13ebb2[_0x4d8d('0x26')]=qs[_0x4d8d('0x42')](_['pick'](_0xc9549f['query'],_0x543fe6['filters']));_0x13ebb2[_0x4d8d('0x26')][_0x4d8d('0x47')]=_0x951aee['id'];if(_0xc9549f['query']['filter']){_0x13ebb2['where']=_[_0x4d8d('0x34')](_0x13ebb2[_0x4d8d('0x26')],{'$or':_[_0x4d8d('0x48')](_0x13ebb2[_0x4d8d('0x31')],function(_0x43cdb7){var _0x254944={};_0x254944[_0x43cdb7]={'$like':'%'+_0xc9549f[_0x4d8d('0x28')][_0x4d8d('0x49')]+'%'};return _0x254944;})});}_0x13ebb2=_[_0x4d8d('0x34')]({},_0x13ebb2,_0xc9549f[_0x4d8d('0x4a')]);return db[_0x4d8d('0x4b')]['findAll'](_0x13ebb2);}})[_0x4d8d('0x17')](function(_0x391041){if(_0x391041){return db[_0x4d8d('0x4c')][_0x4d8d('0x4d')]({'where':{'id':_[_0x4d8d('0x48')](_0x391041,_0x4d8d('0x4e')),'role':'agent'},'attributes':['id',_0x4d8d('0x1e'),'mailPause',_0x4d8d('0x4f'),_0x4d8d('0x50')]});}})['then'](function(_0x2d4889){if(_0x2d4889){return{'count':_0x2d4889[_0x4d8d('0x12')],'rows':_[_0x4d8d('0x48')](_0x2d4889[_0x4d8d('0x2a')],function(_0x539cad){return{'membername':_0x539cad[_0x4d8d('0x1e')],'UserId':_0x539cad['id'],'queue_name':_0x4e0dbd[_0x4d8d('0x1e')],'MailQueueId':_0x4e0dbd['id'],'interface':util[_0x4d8d('0x51')]('%s/%s',_0x4d8d('0x52'),_0x539cad[_0x4d8d('0x1e')]),'penalty':0x0,'paused':_0x539cad['mailPause'],'createdAt':_0x539cad['createdAt'],'updatedAt':_0x539cad[_0x4d8d('0x4f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4d8d('0x17')](respondWithFilteredResult(_0x95cb2b,_0x13ebb2))[_0x4d8d('0x2b')](handleError(_0x95cb2b,null));};exports[_0x4d8d('0x53')]=function(_0x3ed40c,_0x5b7139){var _0x213328={};var _0x39d51b={};var _0x1e04cc;var _0x14e41b;return db['MailQueue'][_0x4d8d('0x41')]({'where':{'id':_0x3ed40c['params']['id']}})[_0x4d8d('0x17')](handleEntityNotFound(_0x5b7139,null))[_0x4d8d('0x17')](function(_0x28f69f){if(_0x28f69f){_0x1e04cc=_0x28f69f;_0x39d51b['model']=_[_0x4d8d('0x2f')](db['Team'][_0x4d8d('0x21')]);_0x39d51b['query']=_[_0x4d8d('0x2f')](_0x3ed40c['query']);_0x39d51b[_0x4d8d('0x42')]=_[_0x4d8d('0x30')](_0x39d51b[_0x4d8d('0x2e')],_0x39d51b['query']);_0x213328['attributes']=_[_0x4d8d('0x30')](_0x39d51b[_0x4d8d('0x2e')],qs['fields'](_0x3ed40c[_0x4d8d('0x28')][_0x4d8d('0x32')]));_0x213328[_0x4d8d('0x31')]=_0x213328[_0x4d8d('0x31')]['length']?_0x213328[_0x4d8d('0x31')]:_0x39d51b['model'];_0x213328[_0x4d8d('0x45')]=qs[_0x4d8d('0x46')](_0x3ed40c[_0x4d8d('0x28')][_0x4d8d('0x46')]);_0x213328[_0x4d8d('0x26')]=qs[_0x4d8d('0x42')](_[_0x4d8d('0x54')](_0x3ed40c[_0x4d8d('0x28')],_0x39d51b['filters']));if(_0x3ed40c[_0x4d8d('0x28')][_0x4d8d('0x49')]){_0x213328['where']=_[_0x4d8d('0x34')](_0x213328['where'],{'$or':_[_0x4d8d('0x48')](_0x213328[_0x4d8d('0x31')],function(_0xc03656){var _0x142d01={};_0x142d01[_0xc03656]={'$like':'%'+_0x3ed40c['query'][_0x4d8d('0x49')]+'%'};return _0x142d01;})});}_0x213328=_[_0x4d8d('0x34')]({},_0x213328,_0x3ed40c[_0x4d8d('0x4a')]);return _0x1e04cc[_0x4d8d('0x53')](_0x213328);}})[_0x4d8d('0x17')](function(_0x51f1bc){if(_0x51f1bc){_0x14e41b=_0x51f1bc['length'];if(!_0x3ed40c[_0x4d8d('0x28')][_0x4d8d('0x44')](_0x4d8d('0x55'))){_0x213328[_0x4d8d('0x11')]=qs[_0x4d8d('0x11')](_0x3ed40c[_0x4d8d('0x28')][_0x4d8d('0x11')]);_0x213328[_0x4d8d('0xf')]=qs['offset'](_0x3ed40c[_0x4d8d('0x28')][_0x4d8d('0xf')]);}return _0x1e04cc['getTeams'](_0x213328);}})[_0x4d8d('0x17')](function(_0x52663e){if(_0x52663e){return _0x52663e?{'count':_0x14e41b,'rows':_0x52663e}:null;}})['then'](respondWithResult(_0x5b7139,null))[_0x4d8d('0x2b')](handleError(_0x5b7139,null));};exports['addTeams']=function(_0x157187,_0x486c01){var _0x6821e2=_0x157187[_0x4d8d('0x37')][_0x4d8d('0x56')];return db[_0x4d8d('0x57')][_0x4d8d('0x29')]({'where':{'id':_0x6821e2},'attributes':['id'],'include':[{'model':db[_0x4d8d('0x4c')],'as':_0x4d8d('0x58'),'attributes':['id',_0x4d8d('0x1e'),_0x4d8d('0x59'),_0x4d8d('0x5a'),_0x4d8d('0x5b')],'raw':!![]}]})['then'](function(_0x2d2ed1){if(_0x2d2ed1){var _0x1ac6d4=_[_0x4d8d('0x5c')](_0x2d2ed1,function(_0xc708ac){var _0x4c5b3f=_0xc708ac[_0x4d8d('0x19')]({'plain':!![]});return _0x4c5b3f[_0x4d8d('0x58')];});return db[_0x4d8d('0x20')]['find']({'where':{'id':_0x157187['params']['id']}})['then'](function(_0xea2e05){return db[_0x4d8d('0x5d')]['transaction'](function(_0x141a21){return _0xea2e05[_0x4d8d('0x5e')](_0x6821e2,{'transaction':_0x141a21})['then'](function(){return BPromise[_0x4d8d('0x5f')](_0x1ac6d4,function(_0x566f16){return db['UserMailQueue'][_0x4d8d('0x60')]({'where':{'UserId':_0x566f16['id'],'MailQueueId':_0x157187['params']['id']},'transaction':_0x141a21});});})[_0x4d8d('0x17')](function(){_0x1ac6d4['forEach'](function(_0x1bd2c1){socket['emit'](_0x4d8d('0x61'),{'UserId':_0x1bd2c1['id'],'MailQueueId':_0xea2e05['id']});});});});});}})[_0x4d8d('0x17')](respondWithStatusCode(_0x486c01,null))[_0x4d8d('0x2b')](handleError(_0x486c01,null));};exports['removeTeams']=function(_0x45146f,_0xb0987c){return db['Team']['findAll']({'where':{'id':_0x45146f['query'][_0x4d8d('0x56')]},'attributes':['id'],'include':[{'model':db[_0x4d8d('0x4c')],'as':_0x4d8d('0x58'),'attributes':['id'],'raw':!![]}]})[_0x4d8d('0x17')](handleEntityNotFound(_0xb0987c,null))[_0x4d8d('0x17')](function(_0x528dd6){var _0x3cc6ff=_[_0x4d8d('0x48')](_0x528dd6,'id');var _0x4773e8=[];var _0x3a2d6b=[];var _0x17d92b=squel[_0x4d8d('0x62')]();_0x17d92b[_0x4d8d('0x63')](_0x4d8d('0x64'))[_0x4d8d('0x65')](_0x4d8d('0x66'),'tq')[_0x4d8d('0x67')](_0x4d8d('0x68'),'ut',_0x4d8d('0x69'))[_0x4d8d('0x26')]('MailQueueId\x20=\x20?',_0x45146f[_0x4d8d('0x2d')]['id']);for(var _0x3a55b8=0x0;_0x3a55b8<_0x528dd6[_0x4d8d('0x43')];_0x3a55b8+=0x1){let _0x517ad3=_0x528dd6[_0x3a55b8];for(var _0xf6c15c=0x0;_0xf6c15c<_0x517ad3[_0x4d8d('0x58')][_0x4d8d('0x43')];_0xf6c15c+=0x1){let _0x160f6d=_0x517ad3['Agents'][_0xf6c15c];var _0x2bc89a=_0x17d92b[_0x4d8d('0x6a')]();_0x2bc89a[_0x4d8d('0x26')](_0x4d8d('0x6b'),_0x160f6d['id']);_0x3a2d6b[_0x4d8d('0x6c')](db[_0x4d8d('0x5d')][_0x4d8d('0x28')](_0x2bc89a['toString'](),{'type':db['sequelize'][_0x4d8d('0x6d')][_0x4d8d('0x6e')]})[_0x4d8d('0x17')](function(_0x52422a){if(_0x52422a[_0x4d8d('0x43')]===0x1){return _0x160f6d['id'];}else{var _0x2377b1=_[_0x4d8d('0x6f')](_[_0x4d8d('0x48')](_0x52422a,_0x4d8d('0x70')),function(_0x51aec0){return _[_0x4d8d('0x71')](_0x3cc6ff,_0x51aec0);});if(_0x2377b1){return _0x160f6d['id'];}}}));}}return BPromise['all'](_0x3a2d6b)[_0x4d8d('0x17')](function(_0x2a6ba2){_0x4773e8=_(_0x4773e8)[_0x4d8d('0x72')](_0x2a6ba2)[_0x4d8d('0x73')]()['value']();return db['MailQueue'][_0x4d8d('0x35')]({'where':{'id':_0x45146f[_0x4d8d('0x2d')]['id']}})[_0x4d8d('0x17')](function(_0x318cc8){return db[_0x4d8d('0x5d')][_0x4d8d('0x74')](function(_0x48cddb){return _0x318cc8[_0x4d8d('0x75')](_0x45146f[_0x4d8d('0x28')][_0x4d8d('0x56')],{'transaction':_0x48cddb})['then'](function(){if(!_['isEmpty'](_0x4773e8)){return _0x318cc8['removeAgents'](_0x4773e8,{'transaction':_0x48cddb});}})[_0x4d8d('0x17')](function(){_0x4773e8['forEach'](function(_0xe41bea){socket[_0x4d8d('0x76')](_0x4d8d('0x77'),{'UserId':_0xe41bea,'MailQueueId':_0x318cc8['id']});});});});});});})[_0x4d8d('0x17')](respondWithStatusCode(_0xb0987c,null))[_0x4d8d('0x2b')](handleError(_0xb0987c,null));};exports['addAgents']=function(_0x9a2dbe,_0x27b8a8){return db[_0x4d8d('0x20')][_0x4d8d('0x35')]({'where':{'id':_0x9a2dbe['params']['id']}})[_0x4d8d('0x17')](handleEntityNotFound(_0x27b8a8,null))['then'](function(_0x31a557){if(_0x31a557){return _0x31a557[_0x4d8d('0x78')](_0x9a2dbe[_0x4d8d('0x37')]['ids'],_['omit'](_0x9a2dbe[_0x4d8d('0x37')],[_0x4d8d('0x56'),'id'])||{})['spread'](function(_0x4363c0){for(var _0xde6a5c=0x0;_0xde6a5c<_0x9a2dbe[_0x4d8d('0x37')][_0x4d8d('0x56')][_0x4d8d('0x43')];_0xde6a5c+=0x1){socket['emit'](_0x4d8d('0x61'),{'UserId':Number(_0x9a2dbe[_0x4d8d('0x37')][_0x4d8d('0x56')][_0xde6a5c]),'MailQueueId':Number(_0x9a2dbe[_0x4d8d('0x2d')]['id'])});}return _0x4363c0;});}})[_0x4d8d('0x17')](respondWithResult(_0x27b8a8,null))[_0x4d8d('0x2b')](handleError(_0x27b8a8,null));};exports[_0x4d8d('0x79')]=function(_0x254b9d,_0xe3cc35){return db[_0x4d8d('0x20')][_0x4d8d('0x35')]({'where':{'id':_0x254b9d[_0x4d8d('0x2d')]['id']}})[_0x4d8d('0x17')](handleEntityNotFound(_0xe3cc35,null))[_0x4d8d('0x17')](function(_0x5ab092){if(_0x5ab092){return _0x5ab092['removeAgents'](_0x254b9d[_0x4d8d('0x28')][_0x4d8d('0x56')])[_0x4d8d('0x17')](function(){if(_['isArray'](_0x254b9d[_0x4d8d('0x28')][_0x4d8d('0x56')])){for(var _0x346914=0x0;_0x346914<_0x254b9d[_0x4d8d('0x28')]['ids']['length'];_0x346914+=0x1){socket[_0x4d8d('0x76')]('userMailQueue:remove',{'UserId':Number(_0x254b9d[_0x4d8d('0x28')][_0x4d8d('0x56')][_0x346914]),'MailQueueId':Number(_0x254b9d[_0x4d8d('0x2d')]['id'])});}}else{socket['emit'](_0x4d8d('0x77'),{'UserId':Number(_0x254b9d[_0x4d8d('0x28')][_0x4d8d('0x56')]),'MailQueueId':Number(_0x254b9d[_0x4d8d('0x2d')]['id'])});}});}})[_0x4d8d('0x17')](respondWithStatusCode(_0xe3cc35,null))[_0x4d8d('0x2b')](handleError(_0xe3cc35,null));};exports[_0x4d8d('0x7a')]=function(_0x32f117,_0x3645b5){var _0x379c5c={};var _0x12fa4f={};var _0xb42904;var _0x11773b;return db[_0x4d8d('0x20')][_0x4d8d('0x41')]({'where':{'id':_0x32f117['params']['id']}})['then'](handleEntityNotFound(_0x3645b5,null))[_0x4d8d('0x17')](function(_0x1b1772){if(_0x1b1772){_0xb42904=_0x1b1772;_0x12fa4f['model']=_[_0x4d8d('0x2f')](db[_0x4d8d('0x4c')][_0x4d8d('0x21')]);_0x12fa4f['query']=_[_0x4d8d('0x2f')](_0x32f117[_0x4d8d('0x28')]);_0x12fa4f[_0x4d8d('0x42')]=_[_0x4d8d('0x30')](_0x12fa4f[_0x4d8d('0x2e')],_0x12fa4f[_0x4d8d('0x28')]);_0x379c5c[_0x4d8d('0x31')]=_[_0x4d8d('0x30')](_0x12fa4f[_0x4d8d('0x2e')],qs['fields'](_0x32f117[_0x4d8d('0x28')][_0x4d8d('0x32')]));_0x379c5c['attributes']=_0x379c5c['attributes'][_0x4d8d('0x43')]?_0x379c5c[_0x4d8d('0x31')]:_0x12fa4f['model'];_0x379c5c[_0x4d8d('0x45')]=qs['sort'](_0x32f117[_0x4d8d('0x28')][_0x4d8d('0x46')]);_0x379c5c['where']=qs['filters'](_[_0x4d8d('0x54')](_0x32f117['query'],_0x12fa4f['filters']));if(_0x32f117[_0x4d8d('0x28')][_0x4d8d('0x49')]){_0x379c5c[_0x4d8d('0x26')]=_['merge'](_0x379c5c[_0x4d8d('0x26')],{'$or':_[_0x4d8d('0x48')](_0x379c5c[_0x4d8d('0x31')],function(_0x5d6e46){var _0x12d08c={};_0x12d08c[_0x5d6e46]={'$like':'%'+_0x32f117[_0x4d8d('0x28')][_0x4d8d('0x49')]+'%'};return _0x12d08c;})});}_0x379c5c=_['merge']({},_0x379c5c,_0x32f117['options']);return _0xb42904[_0x4d8d('0x7a')](_0x379c5c);}})[_0x4d8d('0x17')](function(_0x40a03a){if(_0x40a03a){_0x11773b=_0x40a03a[_0x4d8d('0x43')];if(!_0x32f117[_0x4d8d('0x28')]['hasOwnProperty']('nolimit')){_0x379c5c[_0x4d8d('0x11')]=qs[_0x4d8d('0x11')](_0x32f117[_0x4d8d('0x28')][_0x4d8d('0x11')]);_0x379c5c[_0x4d8d('0xf')]=qs[_0x4d8d('0xf')](_0x32f117[_0x4d8d('0x28')][_0x4d8d('0xf')]);}return _0xb42904['getAgents'](_0x379c5c);}})[_0x4d8d('0x17')](function(_0x1375ba){if(_0x1375ba){return _0x1375ba?{'count':_0x11773b,'rows':_0x1375ba}:null;}})[_0x4d8d('0x17')](respondWithResult(_0x3645b5,null))[_0x4d8d('0x2b')](handleError(_0x3645b5,null));};
\ No newline at end of file
+var _0xaa73=['join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','includes','all','union','compact','removeTeams','isEmpty','removeAgents','forEach','userMailQueue:remove','addAgents','omit','getAgents','bluebird','lodash','squel','../../components/parsers/qs','api','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','then','destroy','get','MailQueues','error','stack','name','index','map','MailQueue','rawAttributes','fieldName','type','key','getOptions','where','include','query','findAll','filters','intersection','attributes','model','fields','length','includeAll','merge','options','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','findOne','keys','UserMailQueue','hasOwnProperty','nolimit','order','sort','pick','filter','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','emit','userMailQueue:save','select','field','tq.TeamId','from'];(function(_0x2c534a,_0x18a19e){var _0x3f5c99=function(_0x4c085f){while(--_0x4c085f){_0x2c534a['push'](_0x2c534a['shift']());}};_0x3f5c99(++_0x18a19e);}(_0xaa73,0x87));var _0x3aa7=function(_0x5aa06d,_0x3b2247){_0x5aa06d=_0x5aa06d-0x0;var _0xc1a570=_0xaa73[_0x5aa06d];return _0xc1a570;};'use strict';var BPromise=require(_0x3aa7('0x0'));var util=require('util');var _=require(_0x3aa7('0x1'));var squel=require(_0x3aa7('0x2'));var Redis=require('ioredis');var qs=require(_0x3aa7('0x3'));var logger=require('../../config/logger')(_0x3aa7('0x4'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x3aa7('0x5')]=_[_0x3aa7('0x6')](config[_0x3aa7('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0x3aa7('0x7'))(new Redis(config[_0x3aa7('0x5')]));require(_0x3aa7('0x8'))[_0x3aa7('0x9')](socket);function respondWithStatusCode(_0x3285fb,_0x2cc6c4){_0x2cc6c4=_0x2cc6c4||0xcc;return function(_0x2ab209){if(_0x2ab209){return _0x3285fb[_0x3aa7('0xa')](_0x2cc6c4);}return _0x3285fb[_0x3aa7('0xb')](_0x2cc6c4)[_0x3aa7('0xc')]();};}function respondWithResult(_0x406137,_0x58b9c7){_0x58b9c7=_0x58b9c7||0xc8;return function(_0x213f8a){if(_0x213f8a){return _0x406137[_0x3aa7('0xb')](_0x58b9c7)[_0x3aa7('0xd')](_0x213f8a);}};}function respondWithFilteredResult(_0x33ff2a,_0x58455e){return function(_0xb0679){if(_0xb0679){var _0xad6ca8=typeof _0x58455e[_0x3aa7('0xe')]===_0x3aa7('0xf')&&typeof _0x58455e[_0x3aa7('0x10')]===_0x3aa7('0xf');var _0x105375=_0xb0679[_0x3aa7('0x11')];var _0x2ae8d=_0xad6ca8?0x0:_0x58455e['offset'];var _0x1e37a4=_0xad6ca8?_0xb0679['count']:_0x58455e['offset']+_0x58455e[_0x3aa7('0x10')];var _0x1462c0;if(_0x1e37a4>=_0x105375){_0x1e37a4=_0x105375;_0x1462c0=0xc8;}else{_0x1462c0=0xce;}_0x33ff2a[_0x3aa7('0xb')](_0x1462c0);return _0x33ff2a[_0x3aa7('0x12')](_0x3aa7('0x13'),_0x2ae8d+'-'+_0x1e37a4+'/'+_0x105375)[_0x3aa7('0xd')](_0xb0679);}return null;};}function saveUpdates(_0x5bd7d9){return function(_0x3d4dc2){if(_0x3d4dc2){return _0x3d4dc2['update'](_0x5bd7d9)[_0x3aa7('0x14')](function(_0x3a67d6){return _0x3a67d6;});}return null;};}function removeEntity(_0x456eb1){return function(_0x2411c5){if(_0x2411c5){return _0x2411c5[_0x3aa7('0x15')]()[_0x3aa7('0x14')](function(){var _0x28b22d=_0x2411c5[_0x3aa7('0x16')]({'plain':!![]});var _0x5bbc24=_0x3aa7('0x17');return db['UserProfileResource'][_0x3aa7('0x15')]({'where':{'type':_0x5bbc24,'resourceId':_0x28b22d['id']}})[_0x3aa7('0x14')](function(){return _0x2411c5;});})[_0x3aa7('0x14')](function(){_0x456eb1[_0x3aa7('0xb')](0xcc)[_0x3aa7('0xc')]();});}};}function handleEntityNotFound(_0x5fcf34){return function(_0x9bee72){if(!_0x9bee72){_0x5fcf34[_0x3aa7('0xa')](0x194);}return _0x9bee72;};}function handleError(_0x4d20c6,_0x383e5a){_0x383e5a=_0x383e5a||0x1f4;return function(_0x9877a){logger[_0x3aa7('0x18')](_0x9877a[_0x3aa7('0x19')]);if(_0x9877a[_0x3aa7('0x1a')]){delete _0x9877a[_0x3aa7('0x1a')];}_0x4d20c6['status'](_0x383e5a)['send'](_0x9877a);};}exports[_0x3aa7('0x1b')]=function(_0x533b37,_0x2dd2b3){var _0x328782={};var _0x3ce90d={'count':0x0,'rows':[]};var _0x2b584a=_[_0x3aa7('0x1c')](db[_0x3aa7('0x1d')][_0x3aa7('0x1e')],function(_0x4caaee){return{'name':_0x4caaee[_0x3aa7('0x1f')],'type':_0x4caaee[_0x3aa7('0x20')][_0x3aa7('0x21')]};});_0x328782=qs[_0x3aa7('0x22')](_0x2b584a,_0x533b37);var _0xea3516={'where':_0x328782[_0x3aa7('0x23')]};return db[_0x3aa7('0x1d')][_0x3aa7('0x11')](_0xea3516)[_0x3aa7('0x14')](function(_0x4e7869){_0x3ce90d[_0x3aa7('0x11')]=_0x4e7869;_0x328782[_0x3aa7('0x24')]=qs[_0x3aa7('0x24')](_0x533b37[_0x3aa7('0x25')]);return db[_0x3aa7('0x1d')][_0x3aa7('0x26')](_0x328782);})[_0x3aa7('0x14')](function(_0xa3ec59){_0x3ce90d['rows']=_0xa3ec59;return _0x3ce90d;})[_0x3aa7('0x14')](respondWithFilteredResult(_0x2dd2b3,_0x328782))['catch'](handleError(_0x2dd2b3,null));};exports['show']=function(_0x5b4c61,_0x3ad5fa){var _0x2dd8ee={'raw':!![],'where':{'id':_0x5b4c61['params']['id']}},_0x154db5={};_0x154db5['model']=_['keys'](db[_0x3aa7('0x1d')][_0x3aa7('0x1e')]);_0x154db5[_0x3aa7('0x25')]=_['keys'](_0x5b4c61['query']);_0x154db5[_0x3aa7('0x27')]=_[_0x3aa7('0x28')](_0x154db5['model'],_0x154db5[_0x3aa7('0x25')]);_0x2dd8ee[_0x3aa7('0x29')]=_[_0x3aa7('0x28')](_0x154db5[_0x3aa7('0x2a')],qs['fields'](_0x5b4c61[_0x3aa7('0x25')][_0x3aa7('0x2b')]));_0x2dd8ee[_0x3aa7('0x29')]=_0x2dd8ee[_0x3aa7('0x29')][_0x3aa7('0x2c')]?_0x2dd8ee['attributes']:_0x154db5[_0x3aa7('0x2a')];if(_0x5b4c61[_0x3aa7('0x25')][_0x3aa7('0x2d')]){_0x2dd8ee[_0x3aa7('0x24')]=[{'all':!![]}];}_0x2dd8ee=_[_0x3aa7('0x2e')]({},_0x2dd8ee,_0x5b4c61[_0x3aa7('0x2f')]);return db[_0x3aa7('0x1d')]['find'](_0x2dd8ee)[_0x3aa7('0x14')](handleEntityNotFound(_0x3ad5fa,null))[_0x3aa7('0x14')](respondWithResult(_0x3ad5fa,null))[_0x3aa7('0x30')](handleError(_0x3ad5fa,null));};exports[_0x3aa7('0x31')]=function(_0x5a79b0,_0xd16a7b){return db[_0x3aa7('0x1d')][_0x3aa7('0x31')](_0x5a79b0[_0x3aa7('0x32')],{})['then'](function(_0x402899){var _0x17c70e=_0x5a79b0[_0x3aa7('0x33')]['get']({'plain':!![]});if(!_0x17c70e)throw new Error(_0x3aa7('0x34'));if(_0x17c70e[_0x3aa7('0x35')]==='user'){var _0x590d5c=_0x402899[_0x3aa7('0x16')]({'plain':!![]});var _0x10dd59=_0x3aa7('0x17');return db['UserProfileSection'][_0x3aa7('0x36')]({'where':{'name':_0x10dd59,'userProfileId':_0x17c70e['userProfileId']},'raw':!![]})[_0x3aa7('0x14')](function(_0x5df933){if(_0x5df933&&_0x5df933['autoAssociation']===0x0){return db[_0x3aa7('0x37')][_0x3aa7('0x31')]({'name':_0x590d5c['name'],'resourceId':_0x590d5c['id'],'type':_0x5df933[_0x3aa7('0x1a')],'sectionId':_0x5df933['id']},{})[_0x3aa7('0x14')](function(){return _0x402899;});}else{return _0x402899;}})['catch'](function(_0x147fd5){logger[_0x3aa7('0x18')](_0x3aa7('0x38'),_0x147fd5);throw _0x147fd5;});}return _0x402899;})[_0x3aa7('0x14')](respondWithResult(_0xd16a7b,0xc9))[_0x3aa7('0x30')](handleError(_0xd16a7b,null));};exports[_0x3aa7('0x39')]=function(_0x149440,_0x3d8bfe){if(_0x149440[_0x3aa7('0x32')]['id']){delete _0x149440[_0x3aa7('0x32')]['id'];}return db['MailQueue'][_0x3aa7('0x36')]({'where':{'id':_0x149440[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](handleEntityNotFound(_0x3d8bfe,null))[_0x3aa7('0x14')](saveUpdates(_0x149440[_0x3aa7('0x32')],null))['then'](respondWithResult(_0x3d8bfe,null))['catch'](handleError(_0x3d8bfe,null));};exports[_0x3aa7('0x15')]=function(_0x136293,_0x318c05){return db[_0x3aa7('0x1d')]['find']({'where':{'id':_0x136293[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](handleEntityNotFound(_0x318c05,null))['then'](removeEntity(_0x318c05,null))[_0x3aa7('0x30')](handleError(_0x318c05,null));};exports[_0x3aa7('0x3b')]=function(_0x5a2093,_0x37d851){return db[_0x3aa7('0x1d')][_0x3aa7('0x3b')]()[_0x3aa7('0x14')](respondWithResult(_0x37d851,null))[_0x3aa7('0x30')](handleError(_0x37d851,null));};exports['getMembers']=function(_0x5140b1,_0x313e52){var _0x574a2a={'raw':!![],'where':{}},_0x566ae8={},_0x2a7c58;return db[_0x3aa7('0x1d')][_0x3aa7('0x3c')]({'where':{'id':_0x5140b1[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](handleEntityNotFound(_0x313e52,null))[_0x3aa7('0x14')](function(_0x20b291){if(_0x20b291){_0x2a7c58=_0x20b291['get']({'plain':!![]});_0x566ae8[_0x3aa7('0x2a')]=_[_0x3aa7('0x3d')](db[_0x3aa7('0x3e')][_0x3aa7('0x1e')]);_0x566ae8[_0x3aa7('0x25')]=_[_0x3aa7('0x3d')](_0x5140b1[_0x3aa7('0x25')]);_0x566ae8[_0x3aa7('0x27')]=_[_0x3aa7('0x28')](_0x566ae8['model'],_0x566ae8[_0x3aa7('0x25')]);_0x574a2a[_0x3aa7('0x29')]=_[_0x3aa7('0x28')](_0x566ae8[_0x3aa7('0x2a')],qs['fields'](_0x5140b1[_0x3aa7('0x25')][_0x3aa7('0x2b')]));_0x574a2a[_0x3aa7('0x29')]=_0x574a2a[_0x3aa7('0x29')][_0x3aa7('0x2c')]?_0x574a2a[_0x3aa7('0x29')]:_0x566ae8[_0x3aa7('0x2a')];if(!_0x5140b1[_0x3aa7('0x25')][_0x3aa7('0x3f')](_0x3aa7('0x40'))){_0x574a2a[_0x3aa7('0x10')]=qs[_0x3aa7('0x10')](_0x5140b1[_0x3aa7('0x25')][_0x3aa7('0x10')]);_0x574a2a[_0x3aa7('0xe')]=qs['offset'](_0x5140b1[_0x3aa7('0x25')]['offset']);}_0x574a2a[_0x3aa7('0x41')]=qs['sort'](_0x5140b1['query'][_0x3aa7('0x42')]);_0x574a2a[_0x3aa7('0x23')]=qs[_0x3aa7('0x27')](_[_0x3aa7('0x43')](_0x5140b1[_0x3aa7('0x25')],_0x566ae8[_0x3aa7('0x27')]));_0x574a2a['where']['MailQueueId']=_0x20b291['id'];if(_0x5140b1[_0x3aa7('0x25')]['filter']){_0x574a2a[_0x3aa7('0x23')]=_[_0x3aa7('0x2e')](_0x574a2a[_0x3aa7('0x23')],{'$or':_[_0x3aa7('0x1c')](_0x574a2a['attributes'],function(_0x1aba52){var _0x56f108={};_0x56f108[_0x1aba52]={'$like':'%'+_0x5140b1['query'][_0x3aa7('0x44')]+'%'};return _0x56f108;})});}_0x574a2a=_['merge']({},_0x574a2a,_0x5140b1['options']);return db[_0x3aa7('0x3e')][_0x3aa7('0x26')](_0x574a2a);}})[_0x3aa7('0x14')](function(_0x145ed0){if(_0x145ed0){return db[_0x3aa7('0x45')][_0x3aa7('0x46')]({'where':{'id':_[_0x3aa7('0x1c')](_0x145ed0,_0x3aa7('0x47')),'role':_0x3aa7('0x48')},'attributes':['id','name',_0x3aa7('0x49'),_0x3aa7('0x4a'),_0x3aa7('0x4b')]});}})['then'](function(_0x2f8171){if(_0x2f8171){return{'count':_0x2f8171[_0x3aa7('0x11')],'rows':_[_0x3aa7('0x1c')](_0x2f8171['rows'],function(_0xe10305){return{'membername':_0xe10305['name'],'UserId':_0xe10305['id'],'queue_name':_0x2a7c58[_0x3aa7('0x1a')],'MailQueueId':_0x2a7c58['id'],'interface':util[_0x3aa7('0x4c')](_0x3aa7('0x4d'),_0x3aa7('0x4e'),_0xe10305['name']),'penalty':0x0,'paused':_0xe10305[_0x3aa7('0x49')],'createdAt':_0xe10305[_0x3aa7('0x4b')],'updatedAt':_0xe10305[_0x3aa7('0x4a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3aa7('0x14')](respondWithFilteredResult(_0x313e52,_0x574a2a))['catch'](handleError(_0x313e52,null));};exports[_0x3aa7('0x4f')]=function(_0x132001,_0x3ea22b){var _0x5de951={};var _0x5d8e74={};var _0x58c461;var _0x13feba;return db['MailQueue'][_0x3aa7('0x3c')]({'where':{'id':_0x132001[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](handleEntityNotFound(_0x3ea22b,null))[_0x3aa7('0x14')](function(_0x37ed97){if(_0x37ed97){_0x58c461=_0x37ed97;_0x5d8e74[_0x3aa7('0x2a')]=_[_0x3aa7('0x3d')](db[_0x3aa7('0x50')][_0x3aa7('0x1e')]);_0x5d8e74['query']=_[_0x3aa7('0x3d')](_0x132001[_0x3aa7('0x25')]);_0x5d8e74[_0x3aa7('0x27')]=_[_0x3aa7('0x28')](_0x5d8e74['model'],_0x5d8e74[_0x3aa7('0x25')]);_0x5de951[_0x3aa7('0x29')]=_[_0x3aa7('0x28')](_0x5d8e74[_0x3aa7('0x2a')],qs[_0x3aa7('0x2b')](_0x132001['query'][_0x3aa7('0x2b')]));_0x5de951[_0x3aa7('0x29')]=_0x5de951['attributes']['length']?_0x5de951[_0x3aa7('0x29')]:_0x5d8e74['model'];_0x5de951[_0x3aa7('0x41')]=qs[_0x3aa7('0x42')](_0x132001[_0x3aa7('0x25')][_0x3aa7('0x42')]);_0x5de951[_0x3aa7('0x23')]=qs[_0x3aa7('0x27')](_['pick'](_0x132001['query'],_0x5d8e74[_0x3aa7('0x27')]));if(_0x132001['query'][_0x3aa7('0x44')]){_0x5de951['where']=_[_0x3aa7('0x2e')](_0x5de951[_0x3aa7('0x23')],{'$or':_['map'](_0x5de951['attributes'],function(_0x335333){var _0x160e2c={};_0x160e2c[_0x335333]={'$like':'%'+_0x132001[_0x3aa7('0x25')]['filter']+'%'};return _0x160e2c;})});}_0x5de951=_[_0x3aa7('0x2e')]({},_0x5de951,_0x132001['options']);return _0x58c461[_0x3aa7('0x4f')](_0x5de951);}})[_0x3aa7('0x14')](function(_0x554b4c){if(_0x554b4c){_0x13feba=_0x554b4c[_0x3aa7('0x2c')];if(!_0x132001[_0x3aa7('0x25')][_0x3aa7('0x3f')](_0x3aa7('0x40'))){_0x5de951['limit']=qs['limit'](_0x132001[_0x3aa7('0x25')][_0x3aa7('0x10')]);_0x5de951[_0x3aa7('0xe')]=qs[_0x3aa7('0xe')](_0x132001['query']['offset']);}return _0x58c461[_0x3aa7('0x4f')](_0x5de951);}})[_0x3aa7('0x14')](function(_0x1bfaf1){if(_0x1bfaf1){return _0x1bfaf1?{'count':_0x13feba,'rows':_0x1bfaf1}:null;}})[_0x3aa7('0x14')](respondWithResult(_0x3ea22b,null))[_0x3aa7('0x30')](handleError(_0x3ea22b,null));};exports[_0x3aa7('0x51')]=function(_0x5b50bb,_0x57c113){var _0x27e470=_0x5b50bb[_0x3aa7('0x32')][_0x3aa7('0x52')];return db['Team']['findAll']({'where':{'id':_0x27e470},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3aa7('0x53'),'attributes':['id','name',_0x3aa7('0x54'),_0x3aa7('0x55'),_0x3aa7('0x56')],'raw':!![]}]})[_0x3aa7('0x14')](function(_0x228d84){if(_0x228d84){var _0x3e4873=_[_0x3aa7('0x57')](_0x228d84,function(_0xd9be40){var _0x465b87=_0xd9be40['get']({'plain':!![]});return _0x465b87['Agents'];});return db['MailQueue'][_0x3aa7('0x36')]({'where':{'id':_0x5b50bb[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](function(_0x3c7765){return db[_0x3aa7('0x58')][_0x3aa7('0x59')](function(_0x28ad0f){return _0x3c7765[_0x3aa7('0x51')](_0x27e470,{'transaction':_0x28ad0f})[_0x3aa7('0x14')](function(){return BPromise['each'](_0x3e4873,function(_0x1bac8f){return db[_0x3aa7('0x3e')][_0x3aa7('0x5a')]({'where':{'UserId':_0x1bac8f['id'],'MailQueueId':_0x5b50bb[_0x3aa7('0x3a')]['id']},'transaction':_0x28ad0f});});})[_0x3aa7('0x14')](function(){_0x3e4873['forEach'](function(_0x1e69c2){socket[_0x3aa7('0x5b')](_0x3aa7('0x5c'),{'UserId':_0x1e69c2['id'],'MailQueueId':_0x3c7765['id']});});});});});}})[_0x3aa7('0x14')](respondWithStatusCode(_0x57c113,null))['catch'](handleError(_0x57c113,null));};exports['removeTeams']=function(_0x360dea,_0x561397){return db[_0x3aa7('0x50')]['findAll']({'where':{'id':_0x360dea[_0x3aa7('0x25')][_0x3aa7('0x52')]},'attributes':['id'],'include':[{'model':db[_0x3aa7('0x45')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x3aa7('0x14')](handleEntityNotFound(_0x561397,null))[_0x3aa7('0x14')](function(_0x199bb1){var _0x9c7cd2=_[_0x3aa7('0x1c')](_0x199bb1,'id');var _0x1dd2f4=[];var _0x61bb4f=[];var _0x5834c2=squel[_0x3aa7('0x5d')]();_0x5834c2[_0x3aa7('0x5e')](_0x3aa7('0x5f'))[_0x3aa7('0x60')]('team_has_mail_queues','tq')[_0x3aa7('0x61')](_0x3aa7('0x62'),'ut',_0x3aa7('0x63'))[_0x3aa7('0x23')]('MailQueueId\x20=\x20?',_0x360dea[_0x3aa7('0x3a')]['id']);for(var _0x57f707=0x0;_0x57f707<_0x199bb1['length'];_0x57f707+=0x1){let _0xa21637=_0x199bb1[_0x57f707];for(var _0x112a34=0x0;_0x112a34<_0xa21637[_0x3aa7('0x53')][_0x3aa7('0x2c')];_0x112a34+=0x1){let _0x422963=_0xa21637[_0x3aa7('0x53')][_0x112a34];var _0x5817f4=_0x5834c2['clone']();_0x5817f4[_0x3aa7('0x23')](_0x3aa7('0x64'),_0x422963['id']);_0x61bb4f[_0x3aa7('0x65')](db[_0x3aa7('0x58')]['query'](_0x5817f4['toString'](),{'type':db[_0x3aa7('0x58')][_0x3aa7('0x66')][_0x3aa7('0x67')]})['then'](function(_0x20fbe5){if(_0x20fbe5[_0x3aa7('0x2c')]===0x1){return _0x422963['id'];}else{var _0x4923fb=_['every'](_['map'](_0x20fbe5,'TeamId'),function(_0x30aa55){return _[_0x3aa7('0x68')](_0x9c7cd2,_0x30aa55);});if(_0x4923fb){return _0x422963['id'];}}}));}}return BPromise[_0x3aa7('0x69')](_0x61bb4f)[_0x3aa7('0x14')](function(_0x34e46e){_0x1dd2f4=_(_0x1dd2f4)[_0x3aa7('0x6a')](_0x34e46e)[_0x3aa7('0x6b')]()['value']();return db['MailQueue'][_0x3aa7('0x36')]({'where':{'id':_0x360dea[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](function(_0x552845){return db[_0x3aa7('0x58')][_0x3aa7('0x59')](function(_0xc591fd){return _0x552845[_0x3aa7('0x6c')](_0x360dea[_0x3aa7('0x25')]['ids'],{'transaction':_0xc591fd})['then'](function(){if(!_[_0x3aa7('0x6d')](_0x1dd2f4)){return _0x552845[_0x3aa7('0x6e')](_0x1dd2f4,{'transaction':_0xc591fd});}})[_0x3aa7('0x14')](function(){_0x1dd2f4[_0x3aa7('0x6f')](function(_0x3180eb){socket[_0x3aa7('0x5b')](_0x3aa7('0x70'),{'UserId':_0x3180eb,'MailQueueId':_0x552845['id']});});});});});});})[_0x3aa7('0x14')](respondWithStatusCode(_0x561397,null))[_0x3aa7('0x30')](handleError(_0x561397,null));};exports[_0x3aa7('0x71')]=function(_0x4b7167,_0x3ddbd6){return db[_0x3aa7('0x1d')][_0x3aa7('0x36')]({'where':{'id':_0x4b7167[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](handleEntityNotFound(_0x3ddbd6,null))[_0x3aa7('0x14')](function(_0x542f03){if(_0x542f03){return _0x542f03[_0x3aa7('0x71')](_0x4b7167[_0x3aa7('0x32')][_0x3aa7('0x52')],_[_0x3aa7('0x72')](_0x4b7167[_0x3aa7('0x32')],[_0x3aa7('0x52'),'id'])||{})['spread'](function(_0x52e3ed){for(var _0x11076e=0x0;_0x11076e<_0x4b7167['body'][_0x3aa7('0x52')][_0x3aa7('0x2c')];_0x11076e+=0x1){socket[_0x3aa7('0x5b')](_0x3aa7('0x5c'),{'UserId':Number(_0x4b7167[_0x3aa7('0x32')][_0x3aa7('0x52')][_0x11076e]),'MailQueueId':Number(_0x4b7167[_0x3aa7('0x3a')]['id'])});}return _0x52e3ed;});}})['then'](respondWithResult(_0x3ddbd6,null))['catch'](handleError(_0x3ddbd6,null));};exports[_0x3aa7('0x6e')]=function(_0x53b126,_0x485609){return db['MailQueue'][_0x3aa7('0x36')]({'where':{'id':_0x53b126[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](handleEntityNotFound(_0x485609,null))['then'](function(_0x21b3ab){if(_0x21b3ab){return _0x21b3ab['removeAgents'](_0x53b126[_0x3aa7('0x25')]['ids'])['then'](function(){if(_['isArray'](_0x53b126[_0x3aa7('0x25')]['ids'])){for(var _0x4619c7=0x0;_0x4619c7<_0x53b126['query'][_0x3aa7('0x52')][_0x3aa7('0x2c')];_0x4619c7+=0x1){socket['emit'](_0x3aa7('0x70'),{'UserId':Number(_0x53b126[_0x3aa7('0x25')]['ids'][_0x4619c7]),'MailQueueId':Number(_0x53b126['params']['id'])});}}else{socket[_0x3aa7('0x5b')](_0x3aa7('0x70'),{'UserId':Number(_0x53b126[_0x3aa7('0x25')][_0x3aa7('0x52')]),'MailQueueId':Number(_0x53b126[_0x3aa7('0x3a')]['id'])});}});}})[_0x3aa7('0x14')](respondWithStatusCode(_0x485609,null))[_0x3aa7('0x30')](handleError(_0x485609,null));};exports[_0x3aa7('0x73')]=function(_0x314c07,_0x44f92d){var _0x1d73f5={};var _0x36d4ad={};var _0x14f0d3;var _0xdd7317;return db['MailQueue'][_0x3aa7('0x3c')]({'where':{'id':_0x314c07[_0x3aa7('0x3a')]['id']}})[_0x3aa7('0x14')](handleEntityNotFound(_0x44f92d,null))[_0x3aa7('0x14')](function(_0x4cbcef){if(_0x4cbcef){_0x14f0d3=_0x4cbcef;_0x36d4ad[_0x3aa7('0x2a')]=_[_0x3aa7('0x3d')](db['User']['rawAttributes']);_0x36d4ad[_0x3aa7('0x25')]=_[_0x3aa7('0x3d')](_0x314c07[_0x3aa7('0x25')]);_0x36d4ad['filters']=_[_0x3aa7('0x28')](_0x36d4ad['model'],_0x36d4ad[_0x3aa7('0x25')]);_0x1d73f5['attributes']=_[_0x3aa7('0x28')](_0x36d4ad[_0x3aa7('0x2a')],qs['fields'](_0x314c07['query'][_0x3aa7('0x2b')]));_0x1d73f5[_0x3aa7('0x29')]=_0x1d73f5[_0x3aa7('0x29')][_0x3aa7('0x2c')]?_0x1d73f5[_0x3aa7('0x29')]:_0x36d4ad[_0x3aa7('0x2a')];_0x1d73f5[_0x3aa7('0x41')]=qs[_0x3aa7('0x42')](_0x314c07[_0x3aa7('0x25')][_0x3aa7('0x42')]);_0x1d73f5['where']=qs[_0x3aa7('0x27')](_['pick'](_0x314c07[_0x3aa7('0x25')],_0x36d4ad[_0x3aa7('0x27')]));if(_0x314c07[_0x3aa7('0x25')][_0x3aa7('0x44')]){_0x1d73f5[_0x3aa7('0x23')]=_[_0x3aa7('0x2e')](_0x1d73f5[_0x3aa7('0x23')],{'$or':_[_0x3aa7('0x1c')](_0x1d73f5['attributes'],function(_0x5d8236){var _0x10389c={};_0x10389c[_0x5d8236]={'$like':'%'+_0x314c07[_0x3aa7('0x25')][_0x3aa7('0x44')]+'%'};return _0x10389c;})});}_0x1d73f5=_['merge']({},_0x1d73f5,_0x314c07[_0x3aa7('0x2f')]);return _0x14f0d3['getAgents'](_0x1d73f5);}})[_0x3aa7('0x14')](function(_0x531b8b){if(_0x531b8b){_0xdd7317=_0x531b8b[_0x3aa7('0x2c')];if(!_0x314c07['query'][_0x3aa7('0x3f')]('nolimit')){_0x1d73f5[_0x3aa7('0x10')]=qs[_0x3aa7('0x10')](_0x314c07['query'][_0x3aa7('0x10')]);_0x1d73f5['offset']=qs[_0x3aa7('0xe')](_0x314c07[_0x3aa7('0x25')][_0x3aa7('0xe')]);}return _0x14f0d3[_0x3aa7('0x73')](_0x1d73f5);}})[_0x3aa7('0x14')](function(_0x5da6ee){if(_0x5da6ee){return _0x5da6ee?{'count':_0xdd7317,'rows':_0x5da6ee}:null;}})['then'](respondWithResult(_0x44f92d,null))[_0x3aa7('0x30')](handleError(_0x44f92d,null));};
\ No newline at end of file
index 170acc6..caefcf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa98=['events','../../mysqldb','MailQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x5741a7,_0x5e1c18){var _0x17a601=function(_0x49ee4b){while(--_0x49ee4b){_0x5741a7['push'](_0x5741a7['shift']());}};_0x17a601(++_0x5e1c18);}(_0xaa98,0x1d9));var _0x8aa9=function(_0x4a695f,_0x5bbfc1){_0x4a695f=_0x4a695f-0x0;var _0x1b7498=_0xaa98[_0x4a695f];return _0x1b7498;};'use strict';var EventEmitter=require(_0x8aa9('0x0'));var MailQueue=require(_0x8aa9('0x1'))['db'][_0x8aa9('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x8aa9('0x3')](0x0);var events={'afterCreate':_0x8aa9('0x4'),'afterUpdate':_0x8aa9('0x5'),'afterDestroy':_0x8aa9('0x6')};function emitEvent(_0xa73bd2){return function(_0x2afb33,_0x4ade34,_0x4c44f2){MailQueueEvents[_0x8aa9('0x7')](_0xa73bd2+':'+_0x2afb33['id'],_0x2afb33);MailQueueEvents[_0x8aa9('0x7')](_0xa73bd2,_0x2afb33);_0x4c44f2(null);};}for(var e in events){if(events[_0x8aa9('0x8')](e)){var event=events[e];MailQueue[_0x8aa9('0x9')](e,emitEvent(event));}}module[_0x8aa9('0xa')]=MailQueueEvents;
\ No newline at end of file
+var _0x0a68=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailQueue','setMaxListeners','save','update'];(function(_0x5674fc,_0x2b623b){var _0x2444a5=function(_0x19774c){while(--_0x19774c){_0x5674fc['push'](_0x5674fc['shift']());}};_0x2444a5(++_0x2b623b);}(_0x0a68,0x112));var _0x80a6=function(_0x3fb365,_0x5aa992){_0x3fb365=_0x3fb365-0x0;var _0x14fe71=_0x0a68[_0x3fb365];return _0x14fe71;};'use strict';var EventEmitter=require(_0x80a6('0x0'));var MailQueue=require(_0x80a6('0x1'))['db'][_0x80a6('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x80a6('0x3')](0x0);var events={'afterCreate':_0x80a6('0x4'),'afterUpdate':_0x80a6('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4f0f71){return function(_0x4e9248,_0x5df718,_0x5373ac){MailQueueEvents[_0x80a6('0x6')](_0x4f0f71+':'+_0x4e9248['id'],_0x4e9248);MailQueueEvents[_0x80a6('0x6')](_0x4f0f71,_0x4e9248);_0x5373ac(null);};}for(var e in events){if(events[_0x80a6('0x7')](e)){var event=events[e];MailQueue[_0x80a6('0x8')](e,emitEvent(event));}}module[_0x80a6('0x9')]=MailQueueEvents;
\ No newline at end of file
index a58a36a..328cf84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0238=['../../config/environment','exports','define','MailQueue','mail_queues','lodash','util','api','moment','bluebird','path','rimraf'];(function(_0x5a23d4,_0x243995){var _0x21a72c=function(_0x1d44e9){while(--_0x1d44e9){_0x5a23d4['push'](_0x5a23d4['shift']());}};_0x21a72c(++_0x243995);}(_0x0238,0x1f1));var _0x8023=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x0238[_0x1203f];return _0x365f0a;};'use strict';var _=require(_0x8023('0x0'));var util=require(_0x8023('0x1'));var logger=require('../../config/logger')(_0x8023('0x2'));var moment=require(_0x8023('0x3'));var BPromise=require(_0x8023('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8023('0x5'));var rimraf=require(_0x8023('0x6'));var config=require(_0x8023('0x7'));var attributes=require('./mailQueue.attributes');module[_0x8023('0x8')]=function(_0x5c4f4b,_0x4ac12c){return _0x5c4f4b[_0x8023('0x9')](_0x8023('0xa'),attributes,{'tableName':_0x8023('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe955=['../../config/environment','./mailQueue.attributes','MailQueue','mail_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0xda0909,_0x1e6466){var _0x1bb656=function(_0x3c63b8){while(--_0x3c63b8){_0xda0909['push'](_0xda0909['shift']());}};_0x1bb656(++_0x1e6466);}(_0xe955,0x130));var _0x5e95=function(_0x3f5167,_0x2456ab){_0x3f5167=_0x3f5167-0x0;var _0x33e4af=_0xe955[_0x3f5167];return _0x33e4af;};'use strict';var _=require(_0x5e95('0x0'));var util=require(_0x5e95('0x1'));var logger=require('../../config/logger')(_0x5e95('0x2'));var moment=require(_0x5e95('0x3'));var BPromise=require(_0x5e95('0x4'));var rp=require(_0x5e95('0x5'));var fs=require('fs');var path=require(_0x5e95('0x6'));var rimraf=require(_0x5e95('0x7'));var config=require(_0x5e95('0x8'));var attributes=require(_0x5e95('0x9'));module['exports']=function(_0x4f241f,_0x2d6e2d){return _0x4f241f['define'](_0x5e95('0xa'),attributes,{'tableName':_0x5e95('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfe9753..d94e0bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cef=['info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','code','message','error','catch','GetMailQueue','MailQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowMailQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','then'];(function(_0xeb643b,_0x54f296){var _0x48330a=function(_0x4ae973){while(--_0x4ae973){_0xeb643b['push'](_0xeb643b['shift']());}};_0x48330a(++_0x54f296);}(_0x6cef,0xe8));var _0xf6ce=function(_0x8f371d,_0x5b146a){_0x8f371d=_0x8f371d-0x0;var _0x3bcc37=_0x6cef[_0x8f371d];return _0x3bcc37;};'use strict';var _=require('lodash');var util=require(_0xf6ce('0x0'));var moment=require(_0xf6ce('0x1'));var BPromise=require(_0xf6ce('0x2'));var rs=require(_0xf6ce('0x3'));var fs=require('fs');var Redis=require(_0xf6ce('0x4'));var db=require(_0xf6ce('0x5'))['db'];var utils=require(_0xf6ce('0x6'));var logger=require(_0xf6ce('0x7'))('rpc');var config=require(_0xf6ce('0x8'));var jayson=require(_0xf6ce('0x9'));var client=jayson[_0xf6ce('0xa')][_0xf6ce('0xb')]({'port':0x232a});config[_0xf6ce('0xc')]=_[_0xf6ce('0xd')](config[_0xf6ce('0xc')],{'host':_0xf6ce('0xe'),'port':0x18eb});var socket=require(_0xf6ce('0xf'))(new Redis(config[_0xf6ce('0xc')]));require(_0xf6ce('0x10'))[_0xf6ce('0x11')](socket);function respondWithRpcPromise(_0x5e9286,_0x18a996,_0xd96dfd){return new BPromise(function(_0x147a53,_0x507d56){return client[_0xf6ce('0x12')](_0x5e9286,_0xd96dfd)[_0xf6ce('0x13')](function(_0x1162ee){logger[_0xf6ce('0x14')](_0xf6ce('0x15'),_0x18a996,_0xf6ce('0x16'));logger[_0xf6ce('0x17')](_0xf6ce('0x18'),_0x18a996,'request\x20sent',JSON[_0xf6ce('0x19')](_0x1162ee));if(_0x1162ee['error']){if(_0x1162ee['error'][_0xf6ce('0x1a')]===0x1f4){logger['error'](_0xf6ce('0x15'),_0x18a996,_0x1162ee['error'][_0xf6ce('0x1b')]);return _0x507d56(_0x1162ee[_0xf6ce('0x1c')]['message']);}logger['error'](_0xf6ce('0x15'),_0x18a996,_0x1162ee[_0xf6ce('0x1c')][_0xf6ce('0x1b')]);return _0x147a53(_0x1162ee[_0xf6ce('0x1c')][_0xf6ce('0x1b')]);}else{logger[_0xf6ce('0x14')](_0xf6ce('0x15'),_0x18a996,_0xf6ce('0x16'));_0x147a53(_0x1162ee['result'][_0xf6ce('0x1b')]);}})[_0xf6ce('0x1d')](function(_0xa94ed6){logger[_0xf6ce('0x1c')](_0xf6ce('0x15'),_0x18a996,_0xa94ed6);_0x507d56(_0xa94ed6);});});}exports[_0xf6ce('0x1e')]=function(_0x4b0856){var _0x984674=this;return new Promise(function(_0x15bd76,_0xb06cdd){return db[_0xf6ce('0x1f')][_0xf6ce('0x20')]({'raw':_0x4b0856[_0xf6ce('0x21')]?_0x4b0856[_0xf6ce('0x21')][_0xf6ce('0x22')]===undefined?!![]:![]:!![],'where':_0x4b0856[_0xf6ce('0x21')]?_0x4b0856[_0xf6ce('0x21')][_0xf6ce('0x23')]||null:null,'attributes':_0x4b0856[_0xf6ce('0x21')]?_0x4b0856[_0xf6ce('0x21')][_0xf6ce('0x24')]||null:null,'limit':_0x4b0856[_0xf6ce('0x21')]?_0x4b0856[_0xf6ce('0x21')][_0xf6ce('0x25')]||null:null,'include':_0x4b0856[_0xf6ce('0x21')]?_0x4b0856[_0xf6ce('0x21')][_0xf6ce('0x26')]?_[_0xf6ce('0x27')](_0x4b0856[_0xf6ce('0x21')][_0xf6ce('0x26')],function(_0x966a09){return{'model':db[_0x966a09[_0xf6ce('0x28')]],'as':_0x966a09['as'],'attributes':_0x966a09[_0xf6ce('0x24')],'include':_0x966a09['include']?_[_0xf6ce('0x27')](_0x966a09['include'],function(_0x53b09a){return{'model':db[_0x53b09a[_0xf6ce('0x28')]],'as':_0x53b09a['as'],'attributes':_0x53b09a[_0xf6ce('0x24')],'include':_0x53b09a[_0xf6ce('0x26')]?_[_0xf6ce('0x27')](_0x53b09a[_0xf6ce('0x26')],function(_0x566c22){return{'model':db[_0x566c22['model']],'as':_0x566c22['as'],'attributes':_0x566c22[_0xf6ce('0x24')]};}):[]};}):[]};}):[]:[]})[_0xf6ce('0x13')](function(_0x2f7be7){logger['info']('GetMailQueue',_0x4b0856);logger[_0xf6ce('0x17')]('GetMailQueue',_0x4b0856,JSON[_0xf6ce('0x19')](_0x2f7be7));_0x15bd76(_0x2f7be7);})[_0xf6ce('0x1d')](function(_0x32063c){logger[_0xf6ce('0x1c')](_0xf6ce('0x1e'),_0x32063c[_0xf6ce('0x1b')],_0x4b0856);_0xb06cdd(_0x984674[_0xf6ce('0x1c')](0x1f4,_0x32063c['message']));});});};exports[_0xf6ce('0x29')]=function(_0x28efb){var _0x16585f=this;return new Promise(function(_0x51819f,_0x53de1a){return db[_0xf6ce('0x1f')]['find']({'raw':_0x28efb[_0xf6ce('0x21')]?_0x28efb['options'][_0xf6ce('0x22')]===undefined?!![]:![]:!![],'where':_0x28efb[_0xf6ce('0x21')]?_0x28efb[_0xf6ce('0x21')][_0xf6ce('0x23')]||null:null,'attributes':_0x28efb['options']?_0x28efb[_0xf6ce('0x21')]['attributes']||null:null,'include':_0x28efb[_0xf6ce('0x21')]?_0x28efb[_0xf6ce('0x21')][_0xf6ce('0x26')]?_[_0xf6ce('0x27')](_0x28efb['options'][_0xf6ce('0x26')],function(_0x4f1a9a){return{'model':db[_0x4f1a9a[_0xf6ce('0x28')]],'as':_0x4f1a9a['as'],'attributes':_0x4f1a9a['attributes'],'include':_0x4f1a9a['include']?_['map'](_0x4f1a9a[_0xf6ce('0x26')],function(_0x48a30a){return{'model':db[_0x48a30a['model']],'as':_0x48a30a['as'],'attributes':_0x48a30a['attributes'],'include':_0x48a30a[_0xf6ce('0x26')]?_[_0xf6ce('0x27')](_0x48a30a[_0xf6ce('0x26')],function(_0x82a9af){return{'model':db[_0x82a9af['model']],'as':_0x82a9af['as'],'attributes':_0x82a9af[_0xf6ce('0x24')]};}):[]};}):[]};}):[]:[]})[_0xf6ce('0x13')](function(_0x2aa8fa){logger[_0xf6ce('0x14')](_0xf6ce('0x29'),_0x28efb);logger[_0xf6ce('0x17')](_0xf6ce('0x29'),_0x28efb,JSON[_0xf6ce('0x19')](_0x2aa8fa));_0x51819f(_0x2aa8fa);})[_0xf6ce('0x1d')](function(_0xdb9229){logger['error'](_0xf6ce('0x29'),_0xdb9229[_0xf6ce('0x1b')],_0x28efb);_0x53de1a(_0x16585f[_0xf6ce('0x1c')](0x1f4,_0xdb9229['message']));});});};
\ No newline at end of file
+var _0x3fb7=['then','MailQueue,\x20%s,\x20%s','debug','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetMailQueue','MailQueue','findAll','options','raw','attributes','limit','include','map','model','info','find','where','ShowMailQueue','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request'];(function(_0x5580ca,_0x48fbd2){var _0x4012db=function(_0x2366ce){while(--_0x2366ce){_0x5580ca['push'](_0x5580ca['shift']());}};_0x4012db(++_0x48fbd2);}(_0x3fb7,0x189));var _0x73fb=function(_0x1903bb,_0x5723a5){_0x1903bb=_0x1903bb-0x0;var _0x529098=_0x3fb7[_0x1903bb];return _0x529098;};'use strict';var _=require('lodash');var util=require(_0x73fb('0x0'));var moment=require('moment');var BPromise=require(_0x73fb('0x1'));var rs=require(_0x73fb('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x73fb('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x73fb('0x4'))(_0x73fb('0x5'));var config=require(_0x73fb('0x6'));var jayson=require(_0x73fb('0x7'));var client=jayson[_0x73fb('0x8')][_0x73fb('0x9')]({'port':0x232a});config[_0x73fb('0xa')]=_[_0x73fb('0xb')](config[_0x73fb('0xa')],{'host':_0x73fb('0xc'),'port':0x18eb});var socket=require(_0x73fb('0xd'))(new Redis(config[_0x73fb('0xa')]));require(_0x73fb('0xe'))[_0x73fb('0xf')](socket);function respondWithRpcPromise(_0x435d63,_0x419445,_0x3652cd){return new BPromise(function(_0x1052e1,_0x1fbaf1){return client[_0x73fb('0x10')](_0x435d63,_0x3652cd)[_0x73fb('0x11')](function(_0x52d74e){logger['info'](_0x73fb('0x12'),_0x419445,'request\x20sent');logger[_0x73fb('0x13')](_0x73fb('0x14'),_0x419445,_0x73fb('0x15'),JSON[_0x73fb('0x16')](_0x52d74e));if(_0x52d74e[_0x73fb('0x17')]){if(_0x52d74e[_0x73fb('0x17')][_0x73fb('0x18')]===0x1f4){logger[_0x73fb('0x17')](_0x73fb('0x12'),_0x419445,_0x52d74e[_0x73fb('0x17')][_0x73fb('0x19')]);return _0x1fbaf1(_0x52d74e[_0x73fb('0x17')][_0x73fb('0x19')]);}logger['error'](_0x73fb('0x12'),_0x419445,_0x52d74e['error']['message']);return _0x1052e1(_0x52d74e[_0x73fb('0x17')][_0x73fb('0x19')]);}else{logger['info'](_0x73fb('0x12'),_0x419445,_0x73fb('0x15'));_0x1052e1(_0x52d74e[_0x73fb('0x1a')][_0x73fb('0x19')]);}})['catch'](function(_0x518d53){logger[_0x73fb('0x17')](_0x73fb('0x12'),_0x419445,_0x518d53);_0x1fbaf1(_0x518d53);});});}exports[_0x73fb('0x1b')]=function(_0x5da53c){var _0x2de79f=this;return new Promise(function(_0x667a79,_0x25b409){return db[_0x73fb('0x1c')][_0x73fb('0x1d')]({'raw':_0x5da53c[_0x73fb('0x1e')]?_0x5da53c['options'][_0x73fb('0x1f')]===undefined?!![]:![]:!![],'where':_0x5da53c[_0x73fb('0x1e')]?_0x5da53c[_0x73fb('0x1e')]['where']||null:null,'attributes':_0x5da53c['options']?_0x5da53c[_0x73fb('0x1e')][_0x73fb('0x20')]||null:null,'limit':_0x5da53c['options']?_0x5da53c[_0x73fb('0x1e')][_0x73fb('0x21')]||null:null,'include':_0x5da53c[_0x73fb('0x1e')]?_0x5da53c[_0x73fb('0x1e')][_0x73fb('0x22')]?_[_0x73fb('0x23')](_0x5da53c[_0x73fb('0x1e')][_0x73fb('0x22')],function(_0x3d213f){return{'model':db[_0x3d213f['model']],'as':_0x3d213f['as'],'attributes':_0x3d213f['attributes'],'include':_0x3d213f[_0x73fb('0x22')]?_[_0x73fb('0x23')](_0x3d213f[_0x73fb('0x22')],function(_0x302bdb){return{'model':db[_0x302bdb[_0x73fb('0x24')]],'as':_0x302bdb['as'],'attributes':_0x302bdb[_0x73fb('0x20')],'include':_0x302bdb[_0x73fb('0x22')]?_['map'](_0x302bdb[_0x73fb('0x22')],function(_0x281449){return{'model':db[_0x281449[_0x73fb('0x24')]],'as':_0x281449['as'],'attributes':_0x281449[_0x73fb('0x20')]};}):[]};}):[]};}):[]:[]})[_0x73fb('0x11')](function(_0xc3894e){logger[_0x73fb('0x25')](_0x73fb('0x1b'),_0x5da53c);logger['debug'](_0x73fb('0x1b'),_0x5da53c,JSON[_0x73fb('0x16')](_0xc3894e));_0x667a79(_0xc3894e);})['catch'](function(_0x4ae16f){logger[_0x73fb('0x17')](_0x73fb('0x1b'),_0x4ae16f[_0x73fb('0x19')],_0x5da53c);_0x25b409(_0x2de79f[_0x73fb('0x17')](0x1f4,_0x4ae16f[_0x73fb('0x19')]));});});};exports['ShowMailQueue']=function(_0x87c631){var _0x1b9797=this;return new Promise(function(_0xf396df,_0x3bccbb){return db[_0x73fb('0x1c')][_0x73fb('0x26')]({'raw':_0x87c631[_0x73fb('0x1e')]?_0x87c631[_0x73fb('0x1e')][_0x73fb('0x1f')]===undefined?!![]:![]:!![],'where':_0x87c631[_0x73fb('0x1e')]?_0x87c631['options'][_0x73fb('0x27')]||null:null,'attributes':_0x87c631[_0x73fb('0x1e')]?_0x87c631[_0x73fb('0x1e')][_0x73fb('0x20')]||null:null,'include':_0x87c631[_0x73fb('0x1e')]?_0x87c631['options'][_0x73fb('0x22')]?_[_0x73fb('0x23')](_0x87c631['options'][_0x73fb('0x22')],function(_0x512db5){return{'model':db[_0x512db5[_0x73fb('0x24')]],'as':_0x512db5['as'],'attributes':_0x512db5['attributes'],'include':_0x512db5['include']?_[_0x73fb('0x23')](_0x512db5[_0x73fb('0x22')],function(_0x2f29c8){return{'model':db[_0x2f29c8['model']],'as':_0x2f29c8['as'],'attributes':_0x2f29c8[_0x73fb('0x20')],'include':_0x2f29c8[_0x73fb('0x22')]?_[_0x73fb('0x23')](_0x2f29c8[_0x73fb('0x22')],function(_0x3901a9){return{'model':db[_0x3901a9[_0x73fb('0x24')]],'as':_0x3901a9['as'],'attributes':_0x3901a9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x219eea){logger[_0x73fb('0x25')](_0x73fb('0x28'),_0x87c631);logger[_0x73fb('0x13')](_0x73fb('0x28'),_0x87c631,JSON[_0x73fb('0x16')](_0x219eea));_0xf396df(_0x219eea);})['catch'](function(_0x33a3b3){logger['error'](_0x73fb('0x28'),_0x33a3b3[_0x73fb('0x19')],_0x87c631);_0x3bccbb(_0x1b9797[_0x73fb('0x17')](0x1f4,_0x33a3b3['message']));});});};
\ No newline at end of file
index 677c35f..6424b84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a5=['save','update','emit','removeListener','register','length','./mailQueue.events'];(function(_0x2d2007,_0x5c4939){var _0x5090bd=function(_0x24f981){while(--_0x24f981){_0x2d2007['push'](_0x2d2007['shift']());}};_0x5090bd(++_0x5c4939);}(_0x15a5,0x148));var _0x515a=function(_0x42f111,_0x1c9ffc){_0x42f111=_0x42f111-0x0;var _0x20d298=_0x15a5[_0x42f111];return _0x20d298;};'use strict';var MailQueueEvents=require(_0x515a('0x0'));var events=[_0x515a('0x1'),'remove',_0x515a('0x2')];function createListener(_0x467e8f,_0x913958){return function(_0x60cb5b){_0x913958[_0x515a('0x3')](_0x467e8f,_0x60cb5b);};}function removeListener(_0x33911d,_0x1740cb){return function(){MailQueueEvents[_0x515a('0x4')](_0x33911d,_0x1740cb);};}exports[_0x515a('0x5')]=function(_0x58da7d){for(var _0xeec4a4=0x0,_0x94d3e9=events[_0x515a('0x6')];_0xeec4a4<_0x94d3e9;_0xeec4a4++){var _0xc67e74=events[_0xeec4a4];var _0x8b9dee=createListener('mailQueue:'+_0xc67e74,_0x58da7d);MailQueueEvents['on'](_0xc67e74,_0x8b9dee);}};
\ No newline at end of file
+var _0xb0ca=['removeListener','register','./mailQueue.events','update'];(function(_0x2ec5b9,_0x56e0a3){var _0x10dcea=function(_0x1d403d){while(--_0x1d403d){_0x2ec5b9['push'](_0x2ec5b9['shift']());}};_0x10dcea(++_0x56e0a3);}(_0xb0ca,0x72));var _0xab0c=function(_0x1694f3,_0x58d6ba){_0x1694f3=_0x1694f3-0x0;var _0x27372c=_0xb0ca[_0x1694f3];return _0x27372c;};'use strict';var MailQueueEvents=require(_0xab0c('0x0'));var events=['save','remove',_0xab0c('0x1')];function createListener(_0x34030b,_0x1c38c0){return function(_0x33188c){_0x1c38c0['emit'](_0x34030b,_0x33188c);};}function removeListener(_0x5b140a,_0x3077a3){return function(){MailQueueEvents[_0xab0c('0x2')](_0x5b140a,_0x3077a3);};}exports[_0xab0c('0x3')]=function(_0x56de77){for(var _0x33b5b7=0x0,_0x1ed468=events['length'];_0x33b5b7<_0x1ed468;_0x33b5b7++){var _0x32f979=events[_0x33b5b7];var _0x13137b=createListener('mailQueue:'+_0x32f979,_0x56de77);MailQueueEvents['on'](_0x32f979,_0x13137b);}};
\ No newline at end of file
index 695b8ee..fb7f749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0142=['describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./mailQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x447c13,_0x294cfc){var _0x46a0dc=function(_0x19316c){while(--_0x19316c){_0x447c13['push'](_0x447c13['shift']());}};_0x46a0dc(++_0x294cfc);}(_0x0142,0x14c));var _0x2014=function(_0x287a20,_0x48a46a){_0x287a20=_0x287a20-0x0;var _0x3070e8=_0x0142[_0x287a20];return _0x3070e8;};'use strict';var multer=require(_0x2014('0x0'));var util=require(_0x2014('0x1'));var path=require(_0x2014('0x2'));var timeout=require(_0x2014('0x3'));var express=require(_0x2014('0x4'));var router=express[_0x2014('0x5')]();var fs_extra=require(_0x2014('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2014('0x7'));var config=require('../../config/environment');var controller=require(_0x2014('0x8'));router[_0x2014('0x9')]('/',auth[_0x2014('0xa')](),controller[_0x2014('0xb')]);router[_0x2014('0x9')](_0x2014('0xc'),auth[_0x2014('0xa')](),controller[_0x2014('0xd')]);router[_0x2014('0x9')](_0x2014('0xe'),auth[_0x2014('0xa')](),controller[_0x2014('0xf')]);router[_0x2014('0x10')]('/',auth[_0x2014('0xa')](),controller[_0x2014('0x11')]);router[_0x2014('0x12')]('/:id',auth[_0x2014('0xa')](),controller[_0x2014('0x13')]);router[_0x2014('0x14')](_0x2014('0xe'),auth[_0x2014('0xa')](),controller[_0x2014('0x15')]);module[_0x2014('0x16')]=router;
\ No newline at end of file
+var _0xf79f=['update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','put'];(function(_0x304c09,_0xdea075){var _0x5c0e5d=function(_0x40c0f0){while(--_0x40c0f0){_0x304c09['push'](_0x304c09['shift']());}};_0x5c0e5d(++_0xdea075);}(_0xf79f,0x192));var _0xff79=function(_0x1e0b23,_0x447f13){_0x1e0b23=_0x1e0b23-0x0;var _0x9e049c=_0xf79f[_0x1e0b23];return _0x9e049c;};'use strict';var multer=require(_0xff79('0x0'));var util=require('util');var path=require(_0xff79('0x1'));var timeout=require(_0xff79('0x2'));var express=require(_0xff79('0x3'));var router=express['Router']();var fs_extra=require(_0xff79('0x4'));var auth=require(_0xff79('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xff79('0x6'));var controller=require(_0xff79('0x7'));router[_0xff79('0x8')]('/',auth[_0xff79('0x9')](),controller[_0xff79('0xa')]);router[_0xff79('0x8')]('/describe',auth[_0xff79('0x9')](),controller[_0xff79('0xb')]);router[_0xff79('0x8')](_0xff79('0xc'),auth['isAuthenticated'](),controller[_0xff79('0xd')]);router[_0xff79('0xe')]('/',auth[_0xff79('0x9')](),controller['create']);router[_0xff79('0xf')](_0xff79('0xc'),auth[_0xff79('0x9')](),controller[_0xff79('0x10')]);router[_0xff79('0x11')](_0xff79('0xc'),auth[_0xff79('0x9')](),controller[_0xff79('0x12')]);module['exports']=router;
\ No newline at end of file
index 8cbfb7f..b20b4be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaab2=['STRING','DATE','sequelize','exports'];(function(_0x4f9948,_0x2ac7f9){var _0x3f2552=function(_0x40f9f2){while(--_0x40f9f2){_0x4f9948['push'](_0x4f9948['shift']());}};_0x3f2552(++_0x2ac7f9);}(_0xaab2,0xca));var _0x2aab=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xaab2[_0x4709c0];return _0x13348b;};'use strict';var moment=require('moment');var Sequelize=require(_0x2aab('0x0'));module[_0x2aab('0x1')]={'uniqueid':{'type':Sequelize[_0x2aab('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x2aab('0x3')]},'leaveAt':{'type':Sequelize[_0x2aab('0x3')]},'acceptAt':{'type':Sequelize[_0x2aab('0x3')]},'exitAt':{'type':Sequelize[_0x2aab('0x3')]},'reason':{'type':Sequelize[_0x2aab('0x2')]}};
\ No newline at end of file
+var _0xcefd=['DATE','moment','sequelize','exports','STRING'];(function(_0xbdb69f,_0x4c318f){var _0x4265ff=function(_0x53a8c8){while(--_0x53a8c8){_0xbdb69f['push'](_0xbdb69f['shift']());}};_0x4265ff(++_0x4c318f);}(_0xcefd,0x1e1));var _0xdcef=function(_0x43d701,_0x4bb2e9){_0x43d701=_0x43d701-0x0;var _0x2ec4c6=_0xcefd[_0x43d701];return _0x2ec4c6;};'use strict';var moment=require(_0xdcef('0x0'));var Sequelize=require(_0xdcef('0x1'));module[_0xdcef('0x2')]={'uniqueid':{'type':Sequelize[_0xdcef('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xdcef('0x3')]},'joinAt':{'type':Sequelize[_0xdcef('0x4')]},'leaveAt':{'type':Sequelize[_0xdcef('0x4')]},'acceptAt':{'type':Sequelize[_0xdcef('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xdcef('0x3')]}};
\ No newline at end of file
index 97c6765..5de6bc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','merge','where','type','options','MailQueueReport','includeAll','rows','include','find','catch','body','params','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','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','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','then','destroy','error','name','send','index','map','rawAttributes','fieldName','key','keys','query','filters'];(function(_0x28d046,_0x316754){var _0x5e32a1=function(_0x148e63){while(--_0x148e63){_0x28d046['push'](_0x28d046['shift']());}};_0x5e32a1(++_0x316754);}(_0x90b1,0x1bb));var _0x190b=function(_0x2224bf,_0x40e44d){_0x2224bf=_0x2224bf-0x0;var _0x4dc9bf=_0x90b1[_0x2224bf];return _0x4dc9bf;};'use strict';var emlformat=require(_0x190b('0x0'));var rimraf=require(_0x190b('0x1'));var zipdir=require(_0x190b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x190b('0x3'));var BPromise=require(_0x190b('0x4'));var Mustache=require(_0x190b('0x5'));var util=require(_0x190b('0x6'));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(_0x190b('0x7'));var _=require(_0x190b('0x8'));var squel=require(_0x190b('0x9'));var crypto=require(_0x190b('0xa'));var jsforce=require(_0x190b('0xb'));var deskjs=require(_0x190b('0xc'));var toCsv=require(_0x190b('0xd'));var querystring=require('querystring');var Papa=require(_0x190b('0xe'));var Redis=require(_0x190b('0xf'));var authService=require(_0x190b('0x10'));var qs=require(_0x190b('0x11'));var as=require(_0x190b('0x12'));var hardwareService=require(_0x190b('0x13'));var logger=require(_0x190b('0x14'))(_0x190b('0x15'));var utils=require('../../config/utils');var config=require(_0x190b('0x16'));var licenseUtil=require(_0x190b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d63ac,_0x596c48){_0x596c48=_0x596c48||0xcc;return function(_0x286c81){if(_0x286c81){return _0x4d63ac[_0x190b('0x18')](_0x596c48);}return _0x4d63ac[_0x190b('0x19')](_0x596c48)[_0x190b('0x1a')]();};}function respondWithResult(_0x2e12d4,_0x13544c){_0x13544c=_0x13544c||0xc8;return function(_0x1ff180){if(_0x1ff180){return _0x2e12d4[_0x190b('0x19')](_0x13544c)[_0x190b('0x1b')](_0x1ff180);}};}function respondWithFilteredResult(_0x1a046f,_0xab346){return function(_0x3e8781){if(_0x3e8781){var _0x3fbfc3=typeof _0xab346[_0x190b('0x1c')]===_0x190b('0x1d')&&typeof _0xab346['limit']===_0x190b('0x1d');var _0x5efbed=_0x3e8781[_0x190b('0x1e')];var _0x21e458=_0x3fbfc3?0x0:_0xab346[_0x190b('0x1c')];var _0x16c009=_0x3fbfc3?_0x3e8781['count']:_0xab346[_0x190b('0x1c')]+_0xab346[_0x190b('0x1f')];var _0x441a2b;if(_0x16c009>=_0x5efbed){_0x16c009=_0x5efbed;_0x441a2b=0xc8;}else{_0x441a2b=0xce;}_0x1a046f[_0x190b('0x19')](_0x441a2b);return _0x1a046f[_0x190b('0x20')](_0x190b('0x21'),_0x21e458+'-'+_0x16c009+'/'+_0x5efbed)['json'](_0x3e8781);}return null;};}function patchUpdates(_0x3ed24c){return function(_0x14f0a5){try{jsonpatch['apply'](_0x14f0a5,_0x3ed24c,!![]);}catch(_0xb4c32b){return BPromise['reject'](_0xb4c32b);}return _0x14f0a5['save']();};}function saveUpdates(_0xcd15e5,_0x42e7f2){return function(_0x332006){if(_0x332006){return _0x332006['update'](_0xcd15e5)[_0x190b('0x22')](function(_0x2e633e){return _0x2e633e;});}return null;};}function removeEntity(_0x16e989,_0x292ce3){return function(_0x3b8c74){if(_0x3b8c74){return _0x3b8c74[_0x190b('0x23')]()[_0x190b('0x22')](function(){_0x16e989['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x262a63,_0x1a5f86){return function(_0x50605b){if(!_0x50605b){_0x262a63['sendStatus'](0x194);}return _0x50605b;};}function handleError(_0x3260d5,_0x4e2a93){_0x4e2a93=_0x4e2a93||0x1f4;return function(_0x328e5e){logger[_0x190b('0x24')](_0x328e5e['stack']);if(_0x328e5e[_0x190b('0x25')]){delete _0x328e5e[_0x190b('0x25')];}_0x3260d5['status'](_0x4e2a93)[_0x190b('0x26')](_0x328e5e);};}exports[_0x190b('0x27')]=function(_0x359b4a,_0x494f3f){var _0x536d7b={},_0x3730cc={},_0x4d5f3f={'count':0x0,'rows':[]};var _0x14be2c=_[_0x190b('0x28')](db['MailQueueReport'][_0x190b('0x29')],function(_0x580b92){return{'name':_0x580b92[_0x190b('0x2a')],'type':_0x580b92['type'][_0x190b('0x2b')]};});_0x3730cc['model']=_[_0x190b('0x28')](_0x14be2c,_0x190b('0x25'));_0x3730cc['query']=_[_0x190b('0x2c')](_0x359b4a[_0x190b('0x2d')]);_0x3730cc[_0x190b('0x2e')]=_[_0x190b('0x2f')](_0x3730cc[_0x190b('0x30')],_0x3730cc[_0x190b('0x2d')]);_0x536d7b[_0x190b('0x31')]=_[_0x190b('0x2f')](_0x3730cc['model'],qs['fields'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x32')]));_0x536d7b['attributes']=_0x536d7b[_0x190b('0x31')][_0x190b('0x33')]?_0x536d7b[_0x190b('0x31')]:_0x3730cc[_0x190b('0x30')];if(!_0x359b4a[_0x190b('0x2d')][_0x190b('0x34')](_0x190b('0x35'))){_0x536d7b['limit']=qs['limit'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x1f')]);_0x536d7b[_0x190b('0x1c')]=qs['offset'](_0x359b4a[_0x190b('0x2d')][_0x190b('0x1c')]);}_0x536d7b[_0x190b('0x36')]=qs['sort'](_0x359b4a[_0x190b('0x2d')]['sort']);_0x536d7b['where']=qs[_0x190b('0x2e')](_[_0x190b('0x37')](_0x359b4a['query'],_0x3730cc[_0x190b('0x2e')]),_0x14be2c);if(_0x359b4a[_0x190b('0x2d')][_0x190b('0x38')]){_0x536d7b['where']=_[_0x190b('0x39')](_0x536d7b[_0x190b('0x3a')],{'$or':_['map'](_0x14be2c,function(_0x5d006d){if(_0x5d006d[_0x190b('0x3b')]!=='VIRTUAL'){var _0x46bdba={};_0x46bdba[_0x5d006d[_0x190b('0x25')]]={'$like':'%'+_0x359b4a[_0x190b('0x2d')][_0x190b('0x38')]+'%'};return _0x46bdba;}})});}_0x536d7b=_['merge']({},_0x536d7b,_0x359b4a[_0x190b('0x3c')]);var _0x5f118c={'where':_0x536d7b[_0x190b('0x3a')]};return db[_0x190b('0x3d')]['count'](_0x5f118c)[_0x190b('0x22')](function(_0x2a75d2){_0x4d5f3f[_0x190b('0x1e')]=_0x2a75d2;if(_0x359b4a['query'][_0x190b('0x3e')]){_0x536d7b['include']=[{'all':!![]}];}return db['MailQueueReport']['findAll'](_0x536d7b);})[_0x190b('0x22')](function(_0x3aef1d){_0x4d5f3f[_0x190b('0x3f')]=_0x3aef1d;return _0x4d5f3f;})[_0x190b('0x22')](respondWithFilteredResult(_0x494f3f,_0x536d7b))['catch'](handleError(_0x494f3f,null));};exports['show']=function(_0x4045b7,_0x492240){var _0x110891={'raw':!![],'where':{'id':_0x4045b7['params']['id']}},_0x3d67f0={};_0x3d67f0[_0x190b('0x30')]=_[_0x190b('0x2c')](db[_0x190b('0x3d')]['rawAttributes']);_0x3d67f0[_0x190b('0x2d')]=_[_0x190b('0x2c')](_0x4045b7['query']);_0x3d67f0[_0x190b('0x2e')]=_['intersection'](_0x3d67f0[_0x190b('0x30')],_0x3d67f0[_0x190b('0x2d')]);_0x110891[_0x190b('0x31')]=_['intersection'](_0x3d67f0[_0x190b('0x30')],qs['fields'](_0x4045b7[_0x190b('0x2d')][_0x190b('0x32')]));_0x110891[_0x190b('0x31')]=_0x110891[_0x190b('0x31')][_0x190b('0x33')]?_0x110891[_0x190b('0x31')]:_0x3d67f0[_0x190b('0x30')];if(_0x4045b7['query'][_0x190b('0x3e')]){_0x110891[_0x190b('0x40')]=[{'all':!![]}];}_0x110891=_[_0x190b('0x39')]({},_0x110891,_0x4045b7['options']);return db[_0x190b('0x3d')][_0x190b('0x41')](_0x110891)[_0x190b('0x22')](handleEntityNotFound(_0x492240,null))[_0x190b('0x22')](respondWithResult(_0x492240,null))[_0x190b('0x42')](handleError(_0x492240,null));};exports['create']=function(_0x1f2262,_0xadc789){return db[_0x190b('0x3d')]['create'](_0x1f2262[_0x190b('0x43')],{})[_0x190b('0x22')](respondWithResult(_0xadc789,0xc9))[_0x190b('0x42')](handleError(_0xadc789,null));};exports['update']=function(_0x4cb561,_0x14958e){if(_0x4cb561[_0x190b('0x43')]['id']){delete _0x4cb561[_0x190b('0x43')]['id'];}return db[_0x190b('0x3d')][_0x190b('0x41')]({'where':{'id':_0x4cb561[_0x190b('0x44')]['id']}})['then'](handleEntityNotFound(_0x14958e,null))[_0x190b('0x22')](saveUpdates(_0x4cb561[_0x190b('0x43')],null))[_0x190b('0x22')](respondWithResult(_0x14958e,null))['catch'](handleError(_0x14958e,null));};exports[_0x190b('0x23')]=function(_0x38c135,_0x215ab6){return db['MailQueueReport'][_0x190b('0x41')]({'where':{'id':_0x38c135[_0x190b('0x44')]['id']}})[_0x190b('0x22')](handleEntityNotFound(_0x215ab6,null))[_0x190b('0x22')](removeEntity(_0x215ab6,null))[_0x190b('0x42')](handleError(_0x215ab6,null));};exports[_0x190b('0x45')]=function(_0x33cc78,_0x2ea1c8){return db[_0x190b('0x3d')][_0x190b('0x45')]()[_0x190b('0x22')](respondWithResult(_0x2ea1c8,null))['catch'](handleError(_0x2ea1c8,null));};
\ No newline at end of file
+var _0xe5af=['length','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','MailQueueReport','includeAll','include','findAll','catch','params','create','body','find','describe','rimraf','zip-dir','request-promise','moment','bluebird','util','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','rawAttributes','key','model','map','query','keys','filters','intersection','fields','attributes'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xe5af,0x9c));var _0xfe5a=function(_0x370b64,_0x23ac51){_0x370b64=_0x370b64-0x0;var _0x92fcf=_0xe5af[_0x370b64];return _0x92fcf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe5a('0x0'));var zipdir=require(_0xfe5a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfe5a('0x2'));var moment=require(_0xfe5a('0x3'));var BPromise=require(_0xfe5a('0x4'));var Mustache=require('mustache');var util=require(_0xfe5a('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xfe5a('0x6'));var ejs=require(_0xfe5a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe5a('0x8'));var crypto=require(_0xfe5a('0x9'));var jsforce=require(_0xfe5a('0xa'));var deskjs=require(_0xfe5a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xfe5a('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfe5a('0xd'));var qs=require(_0xfe5a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe5a('0xf'));var logger=require(_0xfe5a('0x10'))(_0xfe5a('0x11'));var utils=require(_0xfe5a('0x12'));var config=require(_0xfe5a('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe5a('0x14'))['db'];function respondWithStatusCode(_0x9d1f4f,_0x20b206){_0x20b206=_0x20b206||0xcc;return function(_0x374ded){if(_0x374ded){return _0x9d1f4f[_0xfe5a('0x15')](_0x20b206);}return _0x9d1f4f['status'](_0x20b206)[_0xfe5a('0x16')]();};}function respondWithResult(_0x17bbbe,_0x42969b){_0x42969b=_0x42969b||0xc8;return function(_0x362115){if(_0x362115){return _0x17bbbe[_0xfe5a('0x17')](_0x42969b)[_0xfe5a('0x18')](_0x362115);}};}function respondWithFilteredResult(_0x375380,_0xeb454){return function(_0x111d4d){if(_0x111d4d){var _0x18c57b=typeof _0xeb454[_0xfe5a('0x19')]===_0xfe5a('0x1a')&&typeof _0xeb454[_0xfe5a('0x1b')]===_0xfe5a('0x1a');var _0x3edcab=_0x111d4d[_0xfe5a('0x1c')];var _0x5bf597=_0x18c57b?0x0:_0xeb454[_0xfe5a('0x19')];var _0x456707=_0x18c57b?_0x111d4d['count']:_0xeb454[_0xfe5a('0x19')]+_0xeb454[_0xfe5a('0x1b')];var _0x39d905;if(_0x456707>=_0x3edcab){_0x456707=_0x3edcab;_0x39d905=0xc8;}else{_0x39d905=0xce;}_0x375380['status'](_0x39d905);return _0x375380['set'](_0xfe5a('0x1d'),_0x5bf597+'-'+_0x456707+'/'+_0x3edcab)[_0xfe5a('0x18')](_0x111d4d);}return null;};}function patchUpdates(_0xded538){return function(_0x3b3022){try{jsonpatch[_0xfe5a('0x1e')](_0x3b3022,_0xded538,!![]);}catch(_0x355869){return BPromise['reject'](_0x355869);}return _0x3b3022[_0xfe5a('0x1f')]();};}function saveUpdates(_0x592521,_0x3dfa57){return function(_0x39d825){if(_0x39d825){return _0x39d825[_0xfe5a('0x20')](_0x592521)['then'](function(_0x4bbef1){return _0x4bbef1;});}return null;};}function removeEntity(_0x247be4,_0x3e55fd){return function(_0x494df3){if(_0x494df3){return _0x494df3[_0xfe5a('0x21')]()[_0xfe5a('0x22')](function(){_0x247be4['status'](0xcc)[_0xfe5a('0x16')]();});}};}function handleEntityNotFound(_0x3a4f3c,_0x31cc60){return function(_0x2b4f1c){if(!_0x2b4f1c){_0x3a4f3c['sendStatus'](0x194);}return _0x2b4f1c;};}function handleError(_0x42136e,_0x2f5d04){_0x2f5d04=_0x2f5d04||0x1f4;return function(_0x24481f){logger[_0xfe5a('0x23')](_0x24481f[_0xfe5a('0x24')]);if(_0x24481f[_0xfe5a('0x25')]){delete _0x24481f[_0xfe5a('0x25')];}_0x42136e[_0xfe5a('0x17')](_0x2f5d04)['send'](_0x24481f);};}exports['index']=function(_0x712b44,_0x485f9d){var _0xc53869={},_0xfcb05b={},_0x11bf97={'count':0x0,'rows':[]};var _0x482a35=_['map'](db['MailQueueReport'][_0xfe5a('0x26')],function(_0x582f2d){return{'name':_0x582f2d['fieldName'],'type':_0x582f2d['type'][_0xfe5a('0x27')]};});_0xfcb05b[_0xfe5a('0x28')]=_[_0xfe5a('0x29')](_0x482a35,_0xfe5a('0x25'));_0xfcb05b[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x712b44[_0xfe5a('0x2a')]);_0xfcb05b[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],_0xfcb05b[_0xfe5a('0x2a')]);_0xc53869['attributes']=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],qs['fields'](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0xc53869[_0xfe5a('0x2f')]=_0xc53869[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0xc53869['attributes']:_0xfcb05b['model'];if(!_0x712b44[_0xfe5a('0x2a')]['hasOwnProperty'](_0xfe5a('0x31'))){_0xc53869[_0xfe5a('0x1b')]=qs[_0xfe5a('0x1b')](_0x712b44[_0xfe5a('0x2a')]['limit']);_0xc53869[_0xfe5a('0x19')]=qs[_0xfe5a('0x19')](_0x712b44[_0xfe5a('0x2a')]['offset']);}_0xc53869[_0xfe5a('0x32')]=qs[_0xfe5a('0x33')](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x33')]);_0xc53869['where']=qs[_0xfe5a('0x2c')](_['pick'](_0x712b44[_0xfe5a('0x2a')],_0xfcb05b[_0xfe5a('0x2c')]),_0x482a35);if(_0x712b44['query'][_0xfe5a('0x34')]){_0xc53869[_0xfe5a('0x35')]=_[_0xfe5a('0x36')](_0xc53869[_0xfe5a('0x35')],{'$or':_['map'](_0x482a35,function(_0x193ce0){if(_0x193ce0[_0xfe5a('0x37')]!==_0xfe5a('0x38')){var _0x560088={};_0x560088[_0x193ce0[_0xfe5a('0x25')]]={'$like':'%'+_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x34')]+'%'};return _0x560088;}})});}_0xc53869=_[_0xfe5a('0x36')]({},_0xc53869,_0x712b44[_0xfe5a('0x39')]);var _0x162c48={'where':_0xc53869[_0xfe5a('0x35')]};return db[_0xfe5a('0x3a')][_0xfe5a('0x1c')](_0x162c48)[_0xfe5a('0x22')](function(_0x20da14){_0x11bf97['count']=_0x20da14;if(_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0xc53869[_0xfe5a('0x3c')]=[{'all':!![]}];}return db[_0xfe5a('0x3a')][_0xfe5a('0x3d')](_0xc53869);})[_0xfe5a('0x22')](function(_0x3475fb){_0x11bf97['rows']=_0x3475fb;return _0x11bf97;})[_0xfe5a('0x22')](respondWithFilteredResult(_0x485f9d,_0xc53869))[_0xfe5a('0x3e')](handleError(_0x485f9d,null));};exports['show']=function(_0x59caa1,_0x252904){var _0x4c17fd={'raw':!![],'where':{'id':_0x59caa1[_0xfe5a('0x3f')]['id']}},_0x54096d={};_0x54096d[_0xfe5a('0x28')]=_['keys'](db[_0xfe5a('0x3a')]['rawAttributes']);_0x54096d[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x59caa1[_0xfe5a('0x2a')]);_0x54096d[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],_0x54096d['query']);_0x4c17fd[_0xfe5a('0x2f')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],qs[_0xfe5a('0x2e')](_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0x4c17fd[_0xfe5a('0x2f')]=_0x4c17fd[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0x4c17fd[_0xfe5a('0x2f')]:_0x54096d[_0xfe5a('0x28')];if(_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0x4c17fd[_0xfe5a('0x3c')]=[{'all':!![]}];}_0x4c17fd=_['merge']({},_0x4c17fd,_0x59caa1[_0xfe5a('0x39')]);return db[_0xfe5a('0x3a')]['find'](_0x4c17fd)['then'](handleEntityNotFound(_0x252904,null))[_0xfe5a('0x22')](respondWithResult(_0x252904,null))[_0xfe5a('0x3e')](handleError(_0x252904,null));};exports[_0xfe5a('0x40')]=function(_0x3ccf98,_0x3cf1b5){return db[_0xfe5a('0x3a')][_0xfe5a('0x40')](_0x3ccf98['body'],{})[_0xfe5a('0x22')](respondWithResult(_0x3cf1b5,0xc9))['catch'](handleError(_0x3cf1b5,null));};exports[_0xfe5a('0x20')]=function(_0x5a807e,_0x433562){if(_0x5a807e[_0xfe5a('0x41')]['id']){delete _0x5a807e[_0xfe5a('0x41')]['id'];}return db[_0xfe5a('0x3a')]['find']({'where':{'id':_0x5a807e[_0xfe5a('0x3f')]['id']}})[_0xfe5a('0x22')](handleEntityNotFound(_0x433562,null))['then'](saveUpdates(_0x5a807e[_0xfe5a('0x41')],null))['then'](respondWithResult(_0x433562,null))['catch'](handleError(_0x433562,null));};exports[_0xfe5a('0x21')]=function(_0x4e02c9,_0x374ce5){return db[_0xfe5a('0x3a')][_0xfe5a('0x42')]({'where':{'id':_0x4e02c9[_0xfe5a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x374ce5,null))[_0xfe5a('0x22')](removeEntity(_0x374ce5,null))['catch'](handleError(_0x374ce5,null));};exports[_0xfe5a('0x43')]=function(_0x38409b,_0x149132){return db['MailQueueReport'][_0xfe5a('0x43')]()[_0xfe5a('0x22')](respondWithResult(_0x149132,null))['catch'](handleError(_0x149132,null));};
\ No newline at end of file
index f18dbf5..fa42876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc324=['./mailQueueReport.attributes','define','MailQueueReport','uniqueid','lodash','util','moment','request-promise','path','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc324,0x1e4));var _0x4c32=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc324[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4c32('0x0'));var util=require(_0x4c32('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4c32('0x2'));var BPromise=require('bluebird');var rp=require(_0x4c32('0x3'));var fs=require('fs');var path=require(_0x4c32('0x4'));var rimraf=require('rimraf');var config=require(_0x4c32('0x5'));var attributes=require(_0x4c32('0x6'));module['exports']=function(_0x34ed2f,_0x298ec6){return _0x34ed2f[_0x4c32('0x7')](_0x4c32('0x8'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x4c32('0x9'),'fields':[_0x4c32('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6e67=['report_mail_queue','uniqueid','lodash','util','api','path','rimraf','./mailQueueReport.attributes','exports','define','MailQueueReport'];(function(_0x2e236e,_0x16a5ae){var _0x361d5b=function(_0x2c7064){while(--_0x2c7064){_0x2e236e['push'](_0x2e236e['shift']());}};_0x361d5b(++_0x16a5ae);}(_0x6e67,0x136));var _0x76e6=function(_0x5aa0a1,_0x58d7d4){_0x5aa0a1=_0x5aa0a1-0x0;var _0x38934b=_0x6e67[_0x5aa0a1];return _0x38934b;};'use strict';var _=require(_0x76e6('0x0'));var util=require(_0x76e6('0x1'));var logger=require('../../config/logger')(_0x76e6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x76e6('0x3'));var rimraf=require(_0x76e6('0x4'));var config=require('../../config/environment');var attributes=require(_0x76e6('0x5'));module[_0x76e6('0x6')]=function(_0xc94e72,_0x4f9761){return _0xc94e72[_0x76e6('0x7')](_0x76e6('0x8'),attributes,{'tableName':_0x76e6('0x9'),'paranoid':![],'indexes':[{'name':_0x76e6('0xa'),'fields':[_0x76e6('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index e3dee84..fc4420b 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(_0x22a51b,_0x586857){var _0x341412=function(_0x121533){while(--_0x121533){_0x22a51b['push'](_0x22a51b['shift']());}};_0x341412(++_0x586857);}(_0xadb5,0xad));var _0x5adb=function(_0x2492e0,_0x357241){_0x2492e0=_0x2492e0-0x0;var _0x569a3b=_0xadb5[_0x2492e0];return _0x569a3b;};'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 _0xdb28=['UpdateMailQueueReport','MailQueueReport','update','raw','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','CreateMailQueueReport','create','body','options'];(function(_0x350744,_0x7d9b13){var _0x14ad39=function(_0x1306dd){while(--_0x1306dd){_0x350744['push'](_0x350744['shift']());}};_0x14ad39(++_0x7d9b13);}(_0xdb28,0x106));var _0x8db2=function(_0x47dd0f,_0x1c192a){_0x47dd0f=_0x47dd0f-0x0;var _0x27508b=_0xdb28[_0x47dd0f];return _0x27508b;};'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')]('MailQueueReport,\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);});});}exports[_0x8db2('0x16')]=function(_0x3fddc2){var _0x2efd06=this;return new Promise(function(_0x46ce14,_0x51d60d){return db['MailQueueReport'][_0x8db2('0x17')](_0x3fddc2[_0x8db2('0x18')],{'raw':_0x3fddc2[_0x8db2('0x19')]?_0x3fddc2[_0x8db2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8db2('0xc')](function(_0x36a9ff){logger[_0x8db2('0x14')](_0x8db2('0x16'),_0x3fddc2);logger[_0x8db2('0xf')]('CreateMailQueueReport',_0x3fddc2,JSON[_0x8db2('0x10')](_0x36a9ff));_0x46ce14(_0x36a9ff);})[_0x8db2('0x15')](function(_0x18f69c){logger[_0x8db2('0x11')](_0x8db2('0x16'),_0x18f69c[_0x8db2('0x13')],_0x3fddc2);_0x51d60d(_0x2efd06[_0x8db2('0x11')](0x1f4,_0x18f69c['message']));});});};exports[_0x8db2('0x1a')]=function(_0x4f6516){var _0x5725f0=this;return new Promise(function(_0x52a9ca,_0x4d923c){return db[_0x8db2('0x1b')][_0x8db2('0x1c')](_0x4f6516[_0x8db2('0x18')],{'raw':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6516['options']?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1e')]||null:null,'attributes':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')]['attributes']||null:null,'limit':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1f')]||null:null})[_0x8db2('0xc')](function(_0xbe5ece){logger[_0x8db2('0x14')](_0x8db2('0x1a'),_0x4f6516);logger[_0x8db2('0xf')](_0x8db2('0x1a'),_0x4f6516,JSON['stringify'](_0xbe5ece));_0x52a9ca(_0xbe5ece);})[_0x8db2('0x15')](function(_0x50b28d){logger['error'](_0x8db2('0x1a'),_0x50b28d[_0x8db2('0x13')],_0x4f6516);_0x4d923c(_0x5725f0[_0x8db2('0x11')](0x1f4,_0x50b28d['message']));});});};
\ No newline at end of file
index 352808f..aa7ad24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x4e17e5,_0x5619e2){var _0x2d2d0e=function(_0x4ab18){while(--_0x4ab18){_0x4e17e5['push'](_0x4e17e5['shift']());}};_0x2d2d0e(++_0x5619e2);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x437dc2,_0x1d4df0){var _0xfd6a99=function(_0x361431){while(--_0x361431){_0x437dc2['push'](_0x437dc2['shift']());}};_0xfd6a99(++_0x1d4df0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1cd47d,_0x55bc75){_0x1cd47d=_0x1cd47d-0x0;var _0x29d52f=_0xcb91[_0x1cd47d];return _0x29d52f;};'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 31b1768..f33ca8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a5a=['STRING','BOOLEAN','INBOX','INTEGER','exports'];(function(_0x1a0e55,_0x2615b0){var _0x544b65=function(_0x5bebe0){while(--_0x5bebe0){_0x1a0e55['push'](_0x1a0e55['shift']());}};_0x544b65(++_0x2615b0);}(_0x4a5a,0xe0));var _0xa4a5=function(_0x176815,_0xc6ed87){_0x176815=_0x176815-0x0;var _0x5f50fa=_0x4a5a[_0x176815];return _0x5f50fa;};'use strict';var Sequelize=require('sequelize');module[_0xa4a5('0x0')]={'description':{'type':Sequelize[_0xa4a5('0x1')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xa4a5('0x1')]},'password':{'type':Sequelize[_0xa4a5('0x1')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize[_0xa4a5('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xa4a5('0x1')],'defaultValue':_0xa4a5('0x3')},'connTimeout':{'type':Sequelize[_0xa4a5('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xa4a5('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0xa4a5('0x1')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x7893=['sequelize','exports','STRING','BOOLEAN','INTEGER','INBOX'];(function(_0x1168a1,_0xa0d8c9){var _0xcc5ad8=function(_0x217dc3){while(--_0x217dc3){_0x1168a1['push'](_0x1168a1['shift']());}};_0xcc5ad8(++_0xa0d8c9);}(_0x7893,0x1b0));var _0x3789=function(_0xa12e10,_0x1ca99d){_0xa12e10=_0xa12e10-0x0;var _0xecfec5=_0x7893[_0xa12e10];return _0xecfec5;};'use strict';var Sequelize=require(_0x3789('0x0'));module[_0x3789('0x1')]={'description':{'type':Sequelize[_0x3789('0x2')]},'host':{'type':Sequelize[_0x3789('0x2')]},'authentication':{'type':Sequelize[_0x3789('0x3')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x3789('0x4')]},'tls':{'type':Sequelize[_0x3789('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3789('0x2')],'defaultValue':_0x3789('0x5')},'connTimeout':{'type':Sequelize[_0x3789('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3789('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0x3789('0x2')]},'modernAuthentication':{'type':Sequelize[_0x3789('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 7abf812..084c408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a33=['mail_servers_in','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn'];(function(_0x486333,_0x13533b){var _0x388549=function(_0x5ad684){while(--_0x5ad684){_0x486333['push'](_0x486333['shift']());}};_0x388549(++_0x13533b);}(_0x6a33,0xf8));var _0x36a3=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0x6a33[_0x500419];return _0x241c1a;};'use strict';var _=require(_0x36a3('0x0'));var util=require(_0x36a3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x36a3('0x2'));var BPromise=require(_0x36a3('0x3'));var rp=require(_0x36a3('0x4'));var fs=require('fs');var path=require(_0x36a3('0x5'));var rimraf=require(_0x36a3('0x6'));var config=require(_0x36a3('0x7'));var attributes=require(_0x36a3('0x8'));module[_0x36a3('0x9')]=function(_0x5daef2,_0x1ea7d0){return _0x5daef2[_0x36a3('0xa')](_0x36a3('0xb'),attributes,{'tableName':_0x36a3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4bb8=['mail_servers_in','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./mailServerIn.attributes','define','MailServerIn'];(function(_0x4c37d6,_0x11f378){var _0x1aea04=function(_0x39df5b){while(--_0x39df5b){_0x4c37d6['push'](_0x4c37d6['shift']());}};_0x1aea04(++_0x11f378);}(_0x4bb8,0x199));var _0x84bb=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x4bb8[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x84bb('0x0'));var util=require(_0x84bb('0x1'));var logger=require(_0x84bb('0x2'))(_0x84bb('0x3'));var moment=require(_0x84bb('0x4'));var BPromise=require('bluebird');var rp=require(_0x84bb('0x5'));var fs=require('fs');var path=require(_0x84bb('0x6'));var rimraf=require(_0x84bb('0x7'));var config=require('../../config/environment');var attributes=require(_0x84bb('0x8'));module['exports']=function(_0x7e2d3,_0x3a6fc3){return _0x7e2d3[_0x84bb('0x9')](_0x84bb('0xa'),attributes,{'tableName':_0x84bb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f5a59fe..e0b8e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cba=['info','findAll','options','raw','where','attributes','limit','include','map','model','then','GetMailServerIn','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x4d1ee9,_0x394a78){var _0x9a5456=function(_0x224f3b){while(--_0x224f3b){_0x4d1ee9['push'](_0x4d1ee9['shift']());}};_0x9a5456(++_0x394a78);}(_0x5cba,0x1cd));var _0xa5cb=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x5cba[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0xa5cb('0x0'));var util=require(_0xa5cb('0x1'));var moment=require(_0xa5cb('0x2'));var BPromise=require('bluebird');var rs=require(_0xa5cb('0x3'));var fs=require('fs');var Redis=require(_0xa5cb('0x4'));var db=require(_0xa5cb('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa5cb('0x6'));var config=require(_0xa5cb('0x7'));var jayson=require(_0xa5cb('0x8'));var client=jayson['client'][_0xa5cb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xce273d,_0x40092c,_0x359c49){return new BPromise(function(_0x73b227,_0x3ef71f){return client[_0xa5cb('0xa')](_0xce273d,_0x359c49)['then'](function(_0x29e162){logger['info'](_0xa5cb('0xb'),_0x40092c,_0xa5cb('0xc'));logger[_0xa5cb('0xd')](_0xa5cb('0xe'),_0x40092c,_0xa5cb('0xc'),JSON[_0xa5cb('0xf')](_0x29e162));if(_0x29e162[_0xa5cb('0x10')]){if(_0x29e162[_0xa5cb('0x10')][_0xa5cb('0x11')]===0x1f4){logger[_0xa5cb('0x10')]('MailServerIn,\x20%s,\x20%s',_0x40092c,_0x29e162[_0xa5cb('0x10')]['message']);return _0x3ef71f(_0x29e162[_0xa5cb('0x10')]['message']);}logger[_0xa5cb('0x10')](_0xa5cb('0xb'),_0x40092c,_0x29e162[_0xa5cb('0x10')][_0xa5cb('0x12')]);return _0x73b227(_0x29e162['error']['message']);}else{logger[_0xa5cb('0x13')](_0xa5cb('0xb'),_0x40092c,_0xa5cb('0xc'));_0x73b227(_0x29e162['result']['message']);}})['catch'](function(_0xce2b43){logger[_0xa5cb('0x10')](_0xa5cb('0xb'),_0x40092c,_0xce2b43);_0x3ef71f(_0xce2b43);});});}exports['GetMailServerIn']=function(_0x1a002a){var _0x549b8c=this;return new Promise(function(_0x53e4cf,_0x9ce104){return db['MailServerIn'][_0xa5cb('0x14')]({'raw':_0x1a002a[_0xa5cb('0x15')]?_0x1a002a['options'][_0xa5cb('0x16')]===undefined?!![]:![]:!![],'where':_0x1a002a['options']?_0x1a002a['options'][_0xa5cb('0x17')]||null:null,'attributes':_0x1a002a[_0xa5cb('0x15')]?_0x1a002a[_0xa5cb('0x15')][_0xa5cb('0x18')]||null:null,'limit':_0x1a002a[_0xa5cb('0x15')]?_0x1a002a[_0xa5cb('0x15')][_0xa5cb('0x19')]||null:null,'include':_0x1a002a['options']?_0x1a002a[_0xa5cb('0x15')][_0xa5cb('0x1a')]?_[_0xa5cb('0x1b')](_0x1a002a['options'][_0xa5cb('0x1a')],function(_0x271b54){return{'model':db[_0x271b54[_0xa5cb('0x1c')]],'as':_0x271b54['as'],'attributes':_0x271b54['attributes'],'include':_0x271b54[_0xa5cb('0x1a')]?_['map'](_0x271b54[_0xa5cb('0x1a')],function(_0x33bc4f){return{'model':db[_0x33bc4f[_0xa5cb('0x1c')]],'as':_0x33bc4f['as'],'attributes':_0x33bc4f[_0xa5cb('0x18')],'include':_0x33bc4f[_0xa5cb('0x1a')]?_['map'](_0x33bc4f[_0xa5cb('0x1a')],function(_0x12ac61){return{'model':db[_0x12ac61[_0xa5cb('0x1c')]],'as':_0x12ac61['as'],'attributes':_0x12ac61['attributes']};}):[]};}):[]};}):[]:[]})[_0xa5cb('0x1d')](function(_0x5f2970){logger[_0xa5cb('0x13')](_0xa5cb('0x1e'),_0x1a002a);logger[_0xa5cb('0xd')](_0xa5cb('0x1e'),_0x1a002a,JSON[_0xa5cb('0xf')](_0x5f2970));_0x53e4cf(_0x5f2970);})[_0xa5cb('0x1f')](function(_0x5a0d6c){logger[_0xa5cb('0x10')]('GetMailServerIn',_0x5a0d6c[_0xa5cb('0x12')],_0x1a002a);_0x9ce104(_0x549b8c[_0xa5cb('0x10')](0x1f4,_0x5a0d6c[_0xa5cb('0x12')]));});});};
\ No newline at end of file
+var _0xb9a0=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','message','result','MailServerIn','findAll','options','raw','limit','include','map','model','attributes','GetMailServerIn','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x2cf0ef,_0x3cd5c3){var _0x46a33b=function(_0x26f4a6){while(--_0x26f4a6){_0x2cf0ef['push'](_0x2cf0ef['shift']());}};_0x46a33b(++_0x3cd5c3);}(_0xb9a0,0x186));var _0x0b9a=function(_0x335d51,_0x4f48a1){_0x335d51=_0x335d51-0x0;var _0x54e66d=_0xb9a0[_0x335d51];return _0x54e66d;};'use strict';var _=require(_0x0b9a('0x0'));var util=require(_0x0b9a('0x1'));var moment=require(_0x0b9a('0x2'));var BPromise=require('bluebird');var rs=require(_0x0b9a('0x3'));var fs=require('fs');var Redis=require(_0x0b9a('0x4'));var db=require(_0x0b9a('0x5'))['db'];var utils=require(_0x0b9a('0x6'));var logger=require(_0x0b9a('0x7'))(_0x0b9a('0x8'));var config=require(_0x0b9a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0b9a('0xa')][_0x0b9a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x131a2c,_0x457e80,_0xe430f6){return new BPromise(function(_0x33ce5a,_0x1cec71){return client[_0x0b9a('0xc')](_0x131a2c,_0xe430f6)[_0x0b9a('0xd')](function(_0x2f78b8){logger[_0x0b9a('0xe')](_0x0b9a('0xf'),_0x457e80,_0x0b9a('0x10'));logger['debug'](_0x0b9a('0x11'),_0x457e80,'request\x20sent',JSON[_0x0b9a('0x12')](_0x2f78b8));if(_0x2f78b8['error']){if(_0x2f78b8[_0x0b9a('0x13')]['code']===0x1f4){logger['error'](_0x0b9a('0xf'),_0x457e80,_0x2f78b8[_0x0b9a('0x13')][_0x0b9a('0x14')]);return _0x1cec71(_0x2f78b8[_0x0b9a('0x13')]['message']);}logger[_0x0b9a('0x13')](_0x0b9a('0xf'),_0x457e80,_0x2f78b8[_0x0b9a('0x13')][_0x0b9a('0x14')]);return _0x33ce5a(_0x2f78b8[_0x0b9a('0x13')][_0x0b9a('0x14')]);}else{logger[_0x0b9a('0xe')](_0x0b9a('0xf'),_0x457e80,_0x0b9a('0x10'));_0x33ce5a(_0x2f78b8[_0x0b9a('0x15')][_0x0b9a('0x14')]);}})['catch'](function(_0x102d2e){logger[_0x0b9a('0x13')](_0x0b9a('0xf'),_0x457e80,_0x102d2e);_0x1cec71(_0x102d2e);});});}exports['GetMailServerIn']=function(_0x3fb823){var _0x5f0fd9=this;return new Promise(function(_0x47b9e1,_0x1df5d9){return db[_0x0b9a('0x16')][_0x0b9a('0x17')]({'raw':_0x3fb823[_0x0b9a('0x18')]?_0x3fb823[_0x0b9a('0x18')][_0x0b9a('0x19')]===undefined?!![]:![]:!![],'where':_0x3fb823[_0x0b9a('0x18')]?_0x3fb823[_0x0b9a('0x18')]['where']||null:null,'attributes':_0x3fb823['options']?_0x3fb823[_0x0b9a('0x18')]['attributes']||null:null,'limit':_0x3fb823[_0x0b9a('0x18')]?_0x3fb823[_0x0b9a('0x18')][_0x0b9a('0x1a')]||null:null,'include':_0x3fb823[_0x0b9a('0x18')]?_0x3fb823[_0x0b9a('0x18')][_0x0b9a('0x1b')]?_[_0x0b9a('0x1c')](_0x3fb823[_0x0b9a('0x18')]['include'],function(_0x3e80c2){return{'model':db[_0x3e80c2[_0x0b9a('0x1d')]],'as':_0x3e80c2['as'],'attributes':_0x3e80c2[_0x0b9a('0x1e')],'include':_0x3e80c2[_0x0b9a('0x1b')]?_[_0x0b9a('0x1c')](_0x3e80c2[_0x0b9a('0x1b')],function(_0x535e40){return{'model':db[_0x535e40[_0x0b9a('0x1d')]],'as':_0x535e40['as'],'attributes':_0x535e40['attributes'],'include':_0x535e40['include']?_[_0x0b9a('0x1c')](_0x535e40['include'],function(_0x2cca68){return{'model':db[_0x2cca68[_0x0b9a('0x1d')]],'as':_0x2cca68['as'],'attributes':_0x2cca68[_0x0b9a('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2232d8){logger[_0x0b9a('0xe')](_0x0b9a('0x1f'),_0x3fb823);logger[_0x0b9a('0x20')](_0x0b9a('0x1f'),_0x3fb823,JSON[_0x0b9a('0x12')](_0x2232d8));_0x47b9e1(_0x2232d8);})['catch'](function(_0x3bfe08){logger[_0x0b9a('0x13')](_0x0b9a('0x1f'),_0x3bfe08[_0x0b9a('0x14')],_0x3fb823);_0x1df5d9(_0x5f0fd9[_0x0b9a('0x13')](0x1f4,_0x3bfe08[_0x0b9a('0x14')]));});});};
\ No newline at end of file
index 48033a9..778c6e7 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(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x7a54,0x106));var _0x47a5=function(_0x4e3c84,_0x26d5c0){_0x4e3c84=_0x4e3c84-0x0;var _0x20c2f7=_0x7a54[_0x4e3c84];return _0x20c2f7;};'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(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x7a54,0x106));var _0x47a5=function(_0x16fbb3,_0xc2e7c6){_0x16fbb3=_0x16fbb3-0x0;var _0x21fab7=_0x7a54[_0x16fbb3];return _0x21fab7;};'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 38f8ba2..2fb6117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1399=['exports','STRING','INTEGER','BOOLEAN','sequelize'];(function(_0x16e1ab,_0x2aa823){var _0x2d311e=function(_0x3f08bb){while(--_0x3f08bb){_0x16e1ab['push'](_0x16e1ab['shift']());}};_0x2d311e(++_0x2aa823);}(_0x1399,0x16c));var _0x9139=function(_0x4b62db,_0x1b18d3){_0x4b62db=_0x4b62db-0x0;var _0x2935a0=_0x1399[_0x4b62db];return _0x2935a0;};'use strict';var Sequelize=require(_0x9139('0x0'));module[_0x9139('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x9139('0x2')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x9139('0x2')]},'port':{'type':Sequelize[_0x9139('0x3')]},'secure':{'type':Sequelize[_0x9139('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x9139('0x2')]},'authentication':{'type':Sequelize[_0x9139('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x9139('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5ec6=['INTEGER','BOOLEAN','sequelize','exports','STRING'];(function(_0x5948dd,_0x1f6ac8){var _0xb1f8be=function(_0x31a8d2){while(--_0x31a8d2){_0x5948dd['push'](_0x5948dd['shift']());}};_0xb1f8be(++_0x1f6ac8);}(_0x5ec6,0x7f));var _0x65ec=function(_0x499fed,_0x38b12c){_0x499fed=_0x499fed-0x0;var _0x14ed10=_0x5ec6[_0x499fed];return _0x14ed10;};'use strict';var Sequelize=require(_0x65ec('0x0'));module[_0x65ec('0x1')]={'description':{'type':Sequelize[_0x65ec('0x2')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0x65ec('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x65ec('0x3')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0x65ec('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x65ec('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 36198f6..e14306e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93fc=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','destroy','then','end','stack','name','send','index','map','rawAttributes','model','keys','query','filters','attributes','intersection','fields','length','order','sort','where','filter','merge','MailServerOut','include','findAll','rows','show','params','includeAll','options','find','catch','create','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service'];(function(_0x22f98b,_0x57edc7){var _0x4e0b5a=function(_0x4e4277){while(--_0x4e4277){_0x22f98b['push'](_0x22f98b['shift']());}};_0x4e0b5a(++_0x57edc7);}(_0x93fc,0x1df));var _0xc93f=function(_0x459f03,_0xf8caeb){_0x459f03=_0x459f03-0x0;var _0x3636e1=_0x93fc[_0x459f03];return _0x3636e1;};'use strict';var emlformat=require(_0xc93f('0x0'));var rimraf=require(_0xc93f('0x1'));var zipdir=require(_0xc93f('0x2'));var jsonpatch=require(_0xc93f('0x3'));var rp=require('request-promise');var moment=require(_0xc93f('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc93f('0x5'));var path=require('path');var sox=require(_0xc93f('0x6'));var csv=require('to-csv');var ejs=require(_0xc93f('0x7'));var fs=require('fs');var fs_extra=require(_0xc93f('0x8'));var _=require(_0xc93f('0x9'));var squel=require(_0xc93f('0xa'));var crypto=require(_0xc93f('0xb'));var jsforce=require(_0xc93f('0xc'));var deskjs=require(_0xc93f('0xd'));var toCsv=require(_0xc93f('0xe'));var querystring=require('querystring');var Papa=require(_0xc93f('0xf'));var Redis=require(_0xc93f('0x10'));var authService=require(_0xc93f('0x11'));var qs=require(_0xc93f('0x12'));var as=require(_0xc93f('0x13'));var hardwareService=require(_0xc93f('0x14'));var logger=require(_0xc93f('0x15'))('api');var utils=require(_0xc93f('0x16'));var config=require(_0xc93f('0x17'));var licenseUtil=require(_0xc93f('0x18'));var db=require(_0xc93f('0x19'))['db'];function respondWithStatusCode(_0x52606e,_0xa40b0e){_0xa40b0e=_0xa40b0e||0xcc;return function(_0x3b34bd){if(_0x3b34bd){return _0x52606e[_0xc93f('0x1a')](_0xa40b0e);}return _0x52606e[_0xc93f('0x1b')](_0xa40b0e)['end']();};}function respondWithResult(_0x47999d,_0x517123){_0x517123=_0x517123||0xc8;return function(_0x318a7f){if(_0x318a7f){return _0x47999d[_0xc93f('0x1b')](_0x517123)['json'](_0x318a7f);}};}function respondWithFilteredResult(_0x16f0ec,_0x531167){return function(_0x2b6b0e){if(_0x2b6b0e){var _0x302650=typeof _0x531167['offset']===_0xc93f('0x1c')&&typeof _0x531167[_0xc93f('0x1d')]===_0xc93f('0x1c');var _0x278591=_0x2b6b0e[_0xc93f('0x1e')];var _0x405113=_0x302650?0x0:_0x531167[_0xc93f('0x1f')];var _0x33de4e=_0x302650?_0x2b6b0e[_0xc93f('0x1e')]:_0x531167[_0xc93f('0x1f')]+_0x531167[_0xc93f('0x1d')];var _0x59bb45;if(_0x33de4e>=_0x278591){_0x33de4e=_0x278591;_0x59bb45=0xc8;}else{_0x59bb45=0xce;}_0x16f0ec[_0xc93f('0x1b')](_0x59bb45);return _0x16f0ec[_0xc93f('0x20')](_0xc93f('0x21'),_0x405113+'-'+_0x33de4e+'/'+_0x278591)[_0xc93f('0x22')](_0x2b6b0e);}return null;};}function patchUpdates(_0x4245ce){return function(_0x3ab76b){try{jsonpatch[_0xc93f('0x23')](_0x3ab76b,_0x4245ce,!![]);}catch(_0x46dcaa){return BPromise[_0xc93f('0x24')](_0x46dcaa);}return _0x3ab76b['save']();};}function saveUpdates(_0x59fa93,_0x2fd266){return function(_0x2fa884){if(_0x2fa884){return _0x2fa884[_0xc93f('0x25')](_0x59fa93)['then'](function(_0x11aa5a){return _0x11aa5a;});}return null;};}function removeEntity(_0x34b95c,_0x4e2d43){return function(_0x13dafa){if(_0x13dafa){return _0x13dafa[_0xc93f('0x26')]()[_0xc93f('0x27')](function(){_0x34b95c[_0xc93f('0x1b')](0xcc)[_0xc93f('0x28')]();});}};}function handleEntityNotFound(_0x55b779,_0x4f2ac3){return function(_0x28b4b7){if(!_0x28b4b7){_0x55b779[_0xc93f('0x1a')](0x194);}return _0x28b4b7;};}function handleError(_0x5d8817,_0x1bd7e8){_0x1bd7e8=_0x1bd7e8||0x1f4;return function(_0x2b0ad0){logger['error'](_0x2b0ad0[_0xc93f('0x29')]);if(_0x2b0ad0[_0xc93f('0x2a')]){delete _0x2b0ad0[_0xc93f('0x2a')];}_0x5d8817[_0xc93f('0x1b')](_0x1bd7e8)[_0xc93f('0x2b')](_0x2b0ad0);};}exports[_0xc93f('0x2c')]=function(_0x341074,_0xa3bb82){var _0x4c7e36={},_0x24f060={},_0x3783e3={'count':0x0,'rows':[]};var _0x17c729=_[_0xc93f('0x2d')](db['MailServerOut'][_0xc93f('0x2e')],function(_0x58ac0d){return{'name':_0x58ac0d['fieldName'],'type':_0x58ac0d['type']['key']};});_0x24f060[_0xc93f('0x2f')]=_[_0xc93f('0x2d')](_0x17c729,_0xc93f('0x2a'));_0x24f060['query']=_[_0xc93f('0x30')](_0x341074[_0xc93f('0x31')]);_0x24f060[_0xc93f('0x32')]=_['intersection'](_0x24f060['model'],_0x24f060[_0xc93f('0x31')]);_0x4c7e36[_0xc93f('0x33')]=_[_0xc93f('0x34')](_0x24f060[_0xc93f('0x2f')],qs['fields'](_0x341074['query'][_0xc93f('0x35')]));_0x4c7e36[_0xc93f('0x33')]=_0x4c7e36['attributes'][_0xc93f('0x36')]?_0x4c7e36[_0xc93f('0x33')]:_0x24f060[_0xc93f('0x2f')];if(!_0x341074['query']['hasOwnProperty']('nolimit')){_0x4c7e36[_0xc93f('0x1d')]=qs[_0xc93f('0x1d')](_0x341074[_0xc93f('0x31')][_0xc93f('0x1d')]);_0x4c7e36[_0xc93f('0x1f')]=qs[_0xc93f('0x1f')](_0x341074[_0xc93f('0x31')]['offset']);}_0x4c7e36[_0xc93f('0x37')]=qs[_0xc93f('0x38')](_0x341074[_0xc93f('0x31')]['sort']);_0x4c7e36[_0xc93f('0x39')]=qs[_0xc93f('0x32')](_['pick'](_0x341074[_0xc93f('0x31')],_0x24f060[_0xc93f('0x32')]),_0x17c729);if(_0x341074['query'][_0xc93f('0x3a')]){_0x4c7e36[_0xc93f('0x39')]=_[_0xc93f('0x3b')](_0x4c7e36[_0xc93f('0x39')],{'$or':_[_0xc93f('0x2d')](_0x17c729,function(_0x37818d){if(_0x37818d['type']!=='VIRTUAL'){var _0x55a232={};_0x55a232[_0x37818d[_0xc93f('0x2a')]]={'$like':'%'+_0x341074[_0xc93f('0x31')][_0xc93f('0x3a')]+'%'};return _0x55a232;}})});}_0x4c7e36=_['merge']({},_0x4c7e36,_0x341074['options']);var _0x1fa136={'where':_0x4c7e36[_0xc93f('0x39')]};return db[_0xc93f('0x3c')]['count'](_0x1fa136)[_0xc93f('0x27')](function(_0x4ac55c){_0x3783e3['count']=_0x4ac55c;if(_0x341074['query']['includeAll']){_0x4c7e36[_0xc93f('0x3d')]=[{'all':!![]}];}return db[_0xc93f('0x3c')][_0xc93f('0x3e')](_0x4c7e36);})['then'](function(_0x35f05c){_0x3783e3[_0xc93f('0x3f')]=_0x35f05c;return _0x3783e3;})[_0xc93f('0x27')](respondWithFilteredResult(_0xa3bb82,_0x4c7e36))['catch'](handleError(_0xa3bb82,null));};exports[_0xc93f('0x40')]=function(_0x3f0f99,_0x372f70){var _0x329171={'raw':!![],'where':{'id':_0x3f0f99[_0xc93f('0x41')]['id']}},_0x416204={};_0x416204[_0xc93f('0x2f')]=_[_0xc93f('0x30')](db[_0xc93f('0x3c')]['rawAttributes']);_0x416204['query']=_[_0xc93f('0x30')](_0x3f0f99['query']);_0x416204[_0xc93f('0x32')]=_[_0xc93f('0x34')](_0x416204[_0xc93f('0x2f')],_0x416204[_0xc93f('0x31')]);_0x329171[_0xc93f('0x33')]=_['intersection'](_0x416204[_0xc93f('0x2f')],qs['fields'](_0x3f0f99['query'][_0xc93f('0x35')]));_0x329171[_0xc93f('0x33')]=_0x329171['attributes'][_0xc93f('0x36')]?_0x329171['attributes']:_0x416204[_0xc93f('0x2f')];if(_0x3f0f99['query'][_0xc93f('0x42')]){_0x329171['include']=[{'all':!![]}];}_0x329171=_[_0xc93f('0x3b')]({},_0x329171,_0x3f0f99[_0xc93f('0x43')]);return db[_0xc93f('0x3c')][_0xc93f('0x44')](_0x329171)[_0xc93f('0x27')](handleEntityNotFound(_0x372f70,null))['then'](respondWithResult(_0x372f70,null))[_0xc93f('0x45')](handleError(_0x372f70,null));};exports[_0xc93f('0x46')]=function(_0x420534,_0x385fb0){return db['MailServerOut'][_0xc93f('0x46')](_0x420534['body'],{})['then'](respondWithResult(_0x385fb0,0xc9))[_0xc93f('0x45')](handleError(_0x385fb0,null));};exports[_0xc93f('0x25')]=function(_0x14dc3e,_0xb2ee2e){if(_0x14dc3e['body']['id']){delete _0x14dc3e['body']['id'];}return db[_0xc93f('0x3c')][_0xc93f('0x44')]({'where':{'id':_0x14dc3e['params']['id']}})[_0xc93f('0x27')](handleEntityNotFound(_0xb2ee2e,null))[_0xc93f('0x27')](saveUpdates(_0x14dc3e['body'],null))[_0xc93f('0x27')](respondWithResult(_0xb2ee2e,null))[_0xc93f('0x45')](handleError(_0xb2ee2e,null));};exports[_0xc93f('0x26')]=function(_0x1d1d3e,_0x2e587c){return db['MailServerOut']['find']({'where':{'id':_0x1d1d3e[_0xc93f('0x41')]['id']}})[_0xc93f('0x27')](handleEntityNotFound(_0x2e587c,null))[_0xc93f('0x27')](removeEntity(_0x2e587c,null))[_0xc93f('0x45')](handleError(_0x2e587c,null));};
\ No newline at end of file
+var _0x5d93=['key','query','keys','filters','fields','attributes','length','model','nolimit','order','sort','where','pick','filter','merge','options','MailServerOut','include','findAll','rows','catch','show','params','intersection','includeAll','find','create','body','eml-format','rimraf','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','json','reject','save','then','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x39a7a6,_0x3935a5){var _0xf74786=function(_0x3c2cdc){while(--_0x3c2cdc){_0x39a7a6['push'](_0x39a7a6['shift']());}};_0xf74786(++_0x3935a5);}(_0x5d93,0x1ba));var _0x35d9=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x5d93[_0x178e48];return _0x440d7e;};'use strict';var emlformat=require(_0x35d9('0x0'));var rimraf=require(_0x35d9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x35d9('0x2'));var rp=require('request-promise');var moment=require(_0x35d9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x35d9('0x4'));var util=require(_0x35d9('0x5'));var path=require('path');var sox=require(_0x35d9('0x6'));var csv=require(_0x35d9('0x7'));var ejs=require(_0x35d9('0x8'));var fs=require('fs');var fs_extra=require(_0x35d9('0x9'));var _=require(_0x35d9('0xa'));var squel=require(_0x35d9('0xb'));var crypto=require(_0x35d9('0xc'));var jsforce=require(_0x35d9('0xd'));var deskjs=require(_0x35d9('0xe'));var toCsv=require(_0x35d9('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x35d9('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x35d9('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x35d9('0x11'));var utils=require('../../config/utils');var config=require(_0x35d9('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x35d9('0x13'))['db'];function respondWithStatusCode(_0x4036e8,_0x57e1c7){_0x57e1c7=_0x57e1c7||0xcc;return function(_0x13be1d){if(_0x13be1d){return _0x4036e8[_0x35d9('0x14')](_0x57e1c7);}return _0x4036e8['status'](_0x57e1c7)['end']();};}function respondWithResult(_0x10439f,_0x5af640){_0x5af640=_0x5af640||0xc8;return function(_0x5f166b){if(_0x5f166b){return _0x10439f[_0x35d9('0x15')](_0x5af640)['json'](_0x5f166b);}};}function respondWithFilteredResult(_0xa49bed,_0x170a3e){return function(_0x40c2bd){if(_0x40c2bd){var _0x2fb30d=typeof _0x170a3e[_0x35d9('0x16')]===_0x35d9('0x17')&&typeof _0x170a3e['limit']===_0x35d9('0x17');var _0x4c20b8=_0x40c2bd[_0x35d9('0x18')];var _0xd0daaa=_0x2fb30d?0x0:_0x170a3e[_0x35d9('0x16')];var _0x4cf92a=_0x2fb30d?_0x40c2bd['count']:_0x170a3e[_0x35d9('0x16')]+_0x170a3e[_0x35d9('0x19')];var _0x4c54ea;if(_0x4cf92a>=_0x4c20b8){_0x4cf92a=_0x4c20b8;_0x4c54ea=0xc8;}else{_0x4c54ea=0xce;}_0xa49bed[_0x35d9('0x15')](_0x4c54ea);return _0xa49bed[_0x35d9('0x1a')]('Content-Range',_0xd0daaa+'-'+_0x4cf92a+'/'+_0x4c20b8)[_0x35d9('0x1b')](_0x40c2bd);}return null;};}function patchUpdates(_0x2ce824){return function(_0x47ea3a){try{jsonpatch['apply'](_0x47ea3a,_0x2ce824,!![]);}catch(_0x2aed8b){return BPromise[_0x35d9('0x1c')](_0x2aed8b);}return _0x47ea3a[_0x35d9('0x1d')]();};}function saveUpdates(_0x1c7fa1,_0x65da7d){return function(_0x598969){if(_0x598969){return _0x598969['update'](_0x1c7fa1)[_0x35d9('0x1e')](function(_0x50dbc9){return _0x50dbc9;});}return null;};}function removeEntity(_0x2deecd,_0x45d456){return function(_0xd655ff){if(_0xd655ff){return _0xd655ff[_0x35d9('0x1f')]()['then'](function(){_0x2deecd['status'](0xcc)[_0x35d9('0x20')]();});}};}function handleEntityNotFound(_0x17e46a,_0x3977a9){return function(_0x794ab5){if(!_0x794ab5){_0x17e46a[_0x35d9('0x14')](0x194);}return _0x794ab5;};}function handleError(_0x2b6f6b,_0x42ae70){_0x42ae70=_0x42ae70||0x1f4;return function(_0x52bb9b){logger['error'](_0x52bb9b[_0x35d9('0x21')]);if(_0x52bb9b[_0x35d9('0x22')]){delete _0x52bb9b['name'];}_0x2b6f6b[_0x35d9('0x15')](_0x42ae70)[_0x35d9('0x23')](_0x52bb9b);};}exports[_0x35d9('0x24')]=function(_0x243a5a,_0x3be52a){var _0x5bce88={},_0xf98fa8={},_0x2599b3={'count':0x0,'rows':[]};var _0x54e3b8=_[_0x35d9('0x25')](db['MailServerOut'][_0x35d9('0x26')],function(_0x415686){return{'name':_0x415686[_0x35d9('0x27')],'type':_0x415686[_0x35d9('0x28')][_0x35d9('0x29')]};});_0xf98fa8['model']=_[_0x35d9('0x25')](_0x54e3b8,'name');_0xf98fa8[_0x35d9('0x2a')]=_[_0x35d9('0x2b')](_0x243a5a[_0x35d9('0x2a')]);_0xf98fa8[_0x35d9('0x2c')]=_['intersection'](_0xf98fa8['model'],_0xf98fa8[_0x35d9('0x2a')]);_0x5bce88['attributes']=_['intersection'](_0xf98fa8['model'],qs[_0x35d9('0x2d')](_0x243a5a[_0x35d9('0x2a')][_0x35d9('0x2d')]));_0x5bce88[_0x35d9('0x2e')]=_0x5bce88['attributes'][_0x35d9('0x2f')]?_0x5bce88[_0x35d9('0x2e')]:_0xf98fa8[_0x35d9('0x30')];if(!_0x243a5a[_0x35d9('0x2a')]['hasOwnProperty'](_0x35d9('0x31'))){_0x5bce88[_0x35d9('0x19')]=qs['limit'](_0x243a5a[_0x35d9('0x2a')]['limit']);_0x5bce88[_0x35d9('0x16')]=qs['offset'](_0x243a5a[_0x35d9('0x2a')]['offset']);}_0x5bce88[_0x35d9('0x32')]=qs[_0x35d9('0x33')](_0x243a5a['query'][_0x35d9('0x33')]);_0x5bce88[_0x35d9('0x34')]=qs['filters'](_[_0x35d9('0x35')](_0x243a5a[_0x35d9('0x2a')],_0xf98fa8[_0x35d9('0x2c')]),_0x54e3b8);if(_0x243a5a[_0x35d9('0x2a')][_0x35d9('0x36')]){_0x5bce88[_0x35d9('0x34')]=_[_0x35d9('0x37')](_0x5bce88[_0x35d9('0x34')],{'$or':_[_0x35d9('0x25')](_0x54e3b8,function(_0x1a10b6){if(_0x1a10b6[_0x35d9('0x28')]!=='VIRTUAL'){var _0xacf8b5={};_0xacf8b5[_0x1a10b6[_0x35d9('0x22')]]={'$like':'%'+_0x243a5a[_0x35d9('0x2a')][_0x35d9('0x36')]+'%'};return _0xacf8b5;}})});}_0x5bce88=_[_0x35d9('0x37')]({},_0x5bce88,_0x243a5a[_0x35d9('0x38')]);var _0x7c0234={'where':_0x5bce88[_0x35d9('0x34')]};return db[_0x35d9('0x39')][_0x35d9('0x18')](_0x7c0234)[_0x35d9('0x1e')](function(_0x66a673){_0x2599b3[_0x35d9('0x18')]=_0x66a673;if(_0x243a5a[_0x35d9('0x2a')]['includeAll']){_0x5bce88[_0x35d9('0x3a')]=[{'all':!![]}];}return db['MailServerOut'][_0x35d9('0x3b')](_0x5bce88);})[_0x35d9('0x1e')](function(_0x5a0f9b){_0x2599b3[_0x35d9('0x3c')]=_0x5a0f9b;return _0x2599b3;})[_0x35d9('0x1e')](respondWithFilteredResult(_0x3be52a,_0x5bce88))[_0x35d9('0x3d')](handleError(_0x3be52a,null));};exports[_0x35d9('0x3e')]=function(_0x58078a,_0x3e5517){var _0x34798b={'raw':!![],'where':{'id':_0x58078a[_0x35d9('0x3f')]['id']}},_0xf65d06={};_0xf65d06[_0x35d9('0x30')]=_[_0x35d9('0x2b')](db['MailServerOut'][_0x35d9('0x26')]);_0xf65d06[_0x35d9('0x2a')]=_[_0x35d9('0x2b')](_0x58078a[_0x35d9('0x2a')]);_0xf65d06[_0x35d9('0x2c')]=_['intersection'](_0xf65d06['model'],_0xf65d06[_0x35d9('0x2a')]);_0x34798b[_0x35d9('0x2e')]=_[_0x35d9('0x40')](_0xf65d06['model'],qs[_0x35d9('0x2d')](_0x58078a[_0x35d9('0x2a')][_0x35d9('0x2d')]));_0x34798b[_0x35d9('0x2e')]=_0x34798b[_0x35d9('0x2e')][_0x35d9('0x2f')]?_0x34798b[_0x35d9('0x2e')]:_0xf65d06[_0x35d9('0x30')];if(_0x58078a[_0x35d9('0x2a')][_0x35d9('0x41')]){_0x34798b[_0x35d9('0x3a')]=[{'all':!![]}];}_0x34798b=_[_0x35d9('0x37')]({},_0x34798b,_0x58078a[_0x35d9('0x38')]);return db[_0x35d9('0x39')][_0x35d9('0x42')](_0x34798b)[_0x35d9('0x1e')](handleEntityNotFound(_0x3e5517,null))[_0x35d9('0x1e')](respondWithResult(_0x3e5517,null))[_0x35d9('0x3d')](handleError(_0x3e5517,null));};exports[_0x35d9('0x43')]=function(_0x5e1f71,_0x3b285f){return db[_0x35d9('0x39')][_0x35d9('0x43')](_0x5e1f71[_0x35d9('0x44')],{})['then'](respondWithResult(_0x3b285f,0xc9))[_0x35d9('0x3d')](handleError(_0x3b285f,null));};exports['update']=function(_0x140aac,_0x2afb01){if(_0x140aac[_0x35d9('0x44')]['id']){delete _0x140aac[_0x35d9('0x44')]['id'];}return db['MailServerOut'][_0x35d9('0x42')]({'where':{'id':_0x140aac[_0x35d9('0x3f')]['id']}})[_0x35d9('0x1e')](handleEntityNotFound(_0x2afb01,null))[_0x35d9('0x1e')](saveUpdates(_0x140aac[_0x35d9('0x44')],null))[_0x35d9('0x1e')](respondWithResult(_0x2afb01,null))[_0x35d9('0x3d')](handleError(_0x2afb01,null));};exports['destroy']=function(_0x49cfce,_0x59a998){return db[_0x35d9('0x39')][_0x35d9('0x42')]({'where':{'id':_0x49cfce['params']['id']}})[_0x35d9('0x1e')](handleEntityNotFound(_0x59a998,null))[_0x35d9('0x1e')](removeEntity(_0x59a998,null))[_0x35d9('0x3d')](handleError(_0x59a998,null));};
\ No newline at end of file
index 7feab20..1546df2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d59=['path','rimraf','./mailServerOut.attributes','exports','define','mail_servers_out','util','../../config/logger','bluebird','request-promise'];(function(_0x4313d2,_0x3dc89e){var _0x4b449f=function(_0x30dc97){while(--_0x30dc97){_0x4313d2['push'](_0x4313d2['shift']());}};_0x4b449f(++_0x3dc89e);}(_0x6d59,0xe2));var _0x96d5=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x6d59[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var util=require(_0x96d5('0x0'));var logger=require(_0x96d5('0x1'))('api');var moment=require('moment');var BPromise=require(_0x96d5('0x2'));var rp=require(_0x96d5('0x3'));var fs=require('fs');var path=require(_0x96d5('0x4'));var rimraf=require(_0x96d5('0x5'));var config=require('../../config/environment');var attributes=require(_0x96d5('0x6'));module[_0x96d5('0x7')]=function(_0x3bf9f7,_0x20adae){return _0x3bf9f7[_0x96d5('0x8')]('MailServerOut',attributes,{'tableName':_0x96d5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe65=['MailServerOut','mail_servers_out','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./mailServerOut.attributes'];(function(_0x592b99,_0x9dce93){var _0x282cd3=function(_0x9fcb0c){while(--_0x9fcb0c){_0x592b99['push'](_0x592b99['shift']());}};_0x282cd3(++_0x9dce93);}(_0xfe65,0x1a4));var _0x5fe6=function(_0x32d21e,_0x2c451f){_0x32d21e=_0x32d21e-0x0;var _0x14dd81=_0xfe65[_0x32d21e];return _0x14dd81;};'use strict';var _=require(_0x5fe6('0x0'));var util=require(_0x5fe6('0x1'));var logger=require(_0x5fe6('0x2'))(_0x5fe6('0x3'));var moment=require(_0x5fe6('0x4'));var BPromise=require(_0x5fe6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5fe6('0x6'));var config=require(_0x5fe6('0x7'));var attributes=require(_0x5fe6('0x8'));module['exports']=function(_0x24c187,_0x3412ff){return _0x24c187['define'](_0x5fe6('0x9'),attributes,{'tableName':_0x5fe6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 99aeddb..ccdea20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7a54,0x106));var _0x47a5=function(_0x229877,_0x8b7e9){_0x229877=_0x229877-0x0;var _0x5f1e3a=_0x7a54[_0x229877];return _0x5f1e3a;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x4bcf38,_0x3c12be){var _0x4a89be=function(_0x3215a6){while(--_0x3215a6){_0x4bcf38['push'](_0x4bcf38['shift']());}};_0x4a89be(++_0x3c12be);}(_0xadb5,0xad));var _0x5adb=function(_0x3164f1,_0x211af0){_0x3164f1=_0x3164f1-0x0;var _0x8e4faa=_0xadb5[_0x3164f1];return _0x8e4faa;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailServerOut,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index a3c089c..b831c8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05f0=['create','delete','destroy','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/:id','post'];(function(_0x149660,_0x5c7368){var _0x20abc4=function(_0x199b62){while(--_0x199b62){_0x149660['push'](_0x149660['shift']());}};_0x20abc4(++_0x5c7368);}(_0x05f0,0x102));var _0x005f=function(_0x172747,_0x1732bd){_0x172747=_0x172747-0x0;var _0x509692=_0x05f0[_0x172747];return _0x509692;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x005f('0x0'));var timeout=require('connect-timeout');var express=require(_0x005f('0x1'));var router=express[_0x005f('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x005f('0x3'));var interaction=require(_0x005f('0x4'));var config=require(_0x005f('0x5'));var controller=require(_0x005f('0x6'));router[_0x005f('0x7')]('/',auth[_0x005f('0x8')](),controller[_0x005f('0x9')]);router[_0x005f('0x7')]('/describe',auth[_0x005f('0x8')](),controller['describe']);router[_0x005f('0x7')](_0x005f('0xa'),auth[_0x005f('0x8')](),controller['show']);router[_0x005f('0xb')]('/',auth[_0x005f('0x8')](),controller[_0x005f('0xc')]);router['put'](_0x005f('0xa'),auth[_0x005f('0x8')](),controller['update']);router[_0x005f('0xd')](_0x005f('0xa'),auth['isAuthenticated'](),controller[_0x005f('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x0505=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','index','/describe','describe','/:id','show','post','isAuthenticated','create','update','delete','destroy','exports','multer','util','path','express'];(function(_0x5aee83,_0x2b6cf9){var _0x9d657c=function(_0x189e50){while(--_0x189e50){_0x5aee83['push'](_0x5aee83['shift']());}};_0x9d657c(++_0x2b6cf9);}(_0x0505,0xe3));var _0x5050=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x0505[_0xb0f7c3];return _0x28ea68;};'use strict';var multer=require(_0x5050('0x0'));var util=require(_0x5050('0x1'));var path=require(_0x5050('0x2'));var timeout=require('connect-timeout');var express=require(_0x5050('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5050('0x4'));var interaction=require(_0x5050('0x5'));var config=require(_0x5050('0x6'));var controller=require(_0x5050('0x7'));router[_0x5050('0x8')]('/',auth['isAuthenticated'](),controller[_0x5050('0x9')]);router[_0x5050('0x8')](_0x5050('0xa'),auth['isAuthenticated'](),controller[_0x5050('0xb')]);router[_0x5050('0x8')](_0x5050('0xc'),auth['isAuthenticated'](),controller[_0x5050('0xd')]);router[_0x5050('0xe')]('/',auth[_0x5050('0xf')](),controller[_0x5050('0x10')]);router['put'](_0x5050('0xc'),auth[_0x5050('0xf')](),controller[_0x5050('0x11')]);router[_0x5050('0x12')](_0x5050('0xc'),auth[_0x5050('0xf')](),controller[_0x5050('0x13')]);module[_0x5050('0x14')]=router;
\ No newline at end of file
index 7640687..bdf6a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce68=['name','sequelize','STRING'];(function(_0x4ae086,_0x3af41e){var _0x2f27c9=function(_0x2e9daa){while(--_0x2e9daa){_0x4ae086['push'](_0x4ae086['shift']());}};_0x2f27c9(++_0x3af41e);}(_0xce68,0x10c));var _0x8ce6=function(_0x2e49ed,_0x47342b){_0x2e49ed=_0x2e49ed-0x0;var _0x4195dc=_0xce68[_0x2e49ed];return _0x4195dc;};'use strict';var Sequelize=require(_0x8ce6('0x0'));module['exports']={'name':{'type':Sequelize[_0x8ce6('0x1')],'unique':_0x8ce6('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8ce6('0x1')]}};
\ No newline at end of file
+var _0x3831=['STRING','name','sequelize'];(function(_0x4fdbcc,_0xfd5871){var _0x2e6adc=function(_0x3552a2){while(--_0x3552a2){_0x4fdbcc['push'](_0x4fdbcc['shift']());}};_0x2e6adc(++_0xfd5871);}(_0x3831,0x14c));var _0x1383=function(_0x5f52e4,_0x5a69b3){_0x5f52e4=_0x5f52e4-0x0;var _0x25148b=_0x3831[_0x5f52e4];return _0x25148b;};'use strict';var Sequelize=require(_0x1383('0x0'));module['exports']={'name':{'type':Sequelize[_0x1383('0x1')],'unique':_0x1383('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x1383('0x1')]}};
\ No newline at end of file
index 7c25bac..545eaa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc645=['merge','MailSubstatus','includeAll','include','findAll','rows','catch','show','params','keys','fields','options','find','create','body','describe','rimraf','zip-dir','request-promise','moment','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','length','hasOwnProperty','order','sort','where','filter','VIRTUAL'];(function(_0x369f8c,_0x22dafe){var _0x27797c=function(_0x18ce49){while(--_0x18ce49){_0x369f8c['push'](_0x369f8c['shift']());}};_0x27797c(++_0x22dafe);}(_0xc645,0xae));var _0x5c64=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xc645[_0x5c2e3e];return _0x53f64a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5c64('0x0'));var zipdir=require(_0x5c64('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5c64('0x2'));var moment=require(_0x5c64('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5c64('0x4'));var util=require(_0x5c64('0x5'));var path=require('path');var sox=require(_0x5c64('0x6'));var csv=require('to-csv');var ejs=require(_0x5c64('0x7'));var fs=require('fs');var fs_extra=require(_0x5c64('0x8'));var _=require('lodash');var squel=require(_0x5c64('0x9'));var crypto=require(_0x5c64('0xa'));var jsforce=require(_0x5c64('0xb'));var deskjs=require(_0x5c64('0xc'));var toCsv=require(_0x5c64('0xd'));var querystring=require(_0x5c64('0xe'));var Papa=require(_0x5c64('0xf'));var Redis=require(_0x5c64('0x10'));var authService=require(_0x5c64('0x11'));var qs=require(_0x5c64('0x12'));var as=require(_0x5c64('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5c64('0x14'));var utils=require(_0x5c64('0x15'));var config=require(_0x5c64('0x16'));var licenseUtil=require(_0x5c64('0x17'));var db=require(_0x5c64('0x18'))['db'];function respondWithStatusCode(_0x296b21,_0x2cd963){_0x2cd963=_0x2cd963||0xcc;return function(_0x1899be){if(_0x1899be){return _0x296b21[_0x5c64('0x19')](_0x2cd963);}return _0x296b21['status'](_0x2cd963)[_0x5c64('0x1a')]();};}function respondWithResult(_0x30a0d8,_0xaf5246){_0xaf5246=_0xaf5246||0xc8;return function(_0x225fcd){if(_0x225fcd){return _0x30a0d8[_0x5c64('0x1b')](_0xaf5246)[_0x5c64('0x1c')](_0x225fcd);}};}function respondWithFilteredResult(_0x566ce,_0x137a93){return function(_0x26c76c){if(_0x26c76c){var _0x12c8cb=typeof _0x137a93[_0x5c64('0x1d')]===_0x5c64('0x1e')&&typeof _0x137a93[_0x5c64('0x1f')]===_0x5c64('0x1e');var _0x5bf7dc=_0x26c76c[_0x5c64('0x20')];var _0x29effa=_0x12c8cb?0x0:_0x137a93[_0x5c64('0x1d')];var _0x8f1be8=_0x12c8cb?_0x26c76c['count']:_0x137a93[_0x5c64('0x1d')]+_0x137a93[_0x5c64('0x1f')];var _0x149b73;if(_0x8f1be8>=_0x5bf7dc){_0x8f1be8=_0x5bf7dc;_0x149b73=0xc8;}else{_0x149b73=0xce;}_0x566ce[_0x5c64('0x1b')](_0x149b73);return _0x566ce[_0x5c64('0x21')](_0x5c64('0x22'),_0x29effa+'-'+_0x8f1be8+'/'+_0x5bf7dc)[_0x5c64('0x1c')](_0x26c76c);}return null;};}function patchUpdates(_0x11d4d2){return function(_0x31292e){try{jsonpatch[_0x5c64('0x23')](_0x31292e,_0x11d4d2,!![]);}catch(_0x32adbc){return BPromise[_0x5c64('0x24')](_0x32adbc);}return _0x31292e[_0x5c64('0x25')]();};}function saveUpdates(_0x4cf3cf,_0x1ac468){return function(_0x442809){if(_0x442809){return _0x442809[_0x5c64('0x26')](_0x4cf3cf)[_0x5c64('0x27')](function(_0x57b660){return _0x57b660;});}return null;};}function removeEntity(_0x353cfc,_0x1a0cec){return function(_0x10a2e0){if(_0x10a2e0){return _0x10a2e0[_0x5c64('0x28')]()['then'](function(){_0x353cfc[_0x5c64('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x142dc1,_0x1cd59f){return function(_0x32ab8b){if(!_0x32ab8b){_0x142dc1[_0x5c64('0x19')](0x194);}return _0x32ab8b;};}function handleError(_0x2ad23a,_0x510a95){_0x510a95=_0x510a95||0x1f4;return function(_0x2fa35a){logger[_0x5c64('0x29')](_0x2fa35a[_0x5c64('0x2a')]);if(_0x2fa35a[_0x5c64('0x2b')]){delete _0x2fa35a['name'];}_0x2ad23a[_0x5c64('0x1b')](_0x510a95)[_0x5c64('0x2c')](_0x2fa35a);};}exports[_0x5c64('0x2d')]=function(_0x345844,_0x52e2c8){var _0x507037={},_0x198f70={},_0x2e5b6d={'count':0x0,'rows':[]};var _0x544894=_[_0x5c64('0x2e')](db['MailSubstatus'][_0x5c64('0x2f')],function(_0x40255b){return{'name':_0x40255b[_0x5c64('0x30')],'type':_0x40255b[_0x5c64('0x31')][_0x5c64('0x32')]};});_0x198f70[_0x5c64('0x33')]=_[_0x5c64('0x2e')](_0x544894,_0x5c64('0x2b'));_0x198f70['query']=_['keys'](_0x345844['query']);_0x198f70[_0x5c64('0x34')]=_[_0x5c64('0x35')](_0x198f70[_0x5c64('0x33')],_0x198f70[_0x5c64('0x36')]);_0x507037['attributes']=_[_0x5c64('0x35')](_0x198f70[_0x5c64('0x33')],qs['fields'](_0x345844['query']['fields']));_0x507037[_0x5c64('0x37')]=_0x507037[_0x5c64('0x37')][_0x5c64('0x38')]?_0x507037[_0x5c64('0x37')]:_0x198f70['model'];if(!_0x345844['query'][_0x5c64('0x39')]('nolimit')){_0x507037['limit']=qs[_0x5c64('0x1f')](_0x345844[_0x5c64('0x36')]['limit']);_0x507037[_0x5c64('0x1d')]=qs[_0x5c64('0x1d')](_0x345844[_0x5c64('0x36')][_0x5c64('0x1d')]);}_0x507037[_0x5c64('0x3a')]=qs[_0x5c64('0x3b')](_0x345844[_0x5c64('0x36')][_0x5c64('0x3b')]);_0x507037[_0x5c64('0x3c')]=qs[_0x5c64('0x34')](_['pick'](_0x345844[_0x5c64('0x36')],_0x198f70[_0x5c64('0x34')]),_0x544894);if(_0x345844[_0x5c64('0x36')][_0x5c64('0x3d')]){_0x507037[_0x5c64('0x3c')]=_['merge'](_0x507037[_0x5c64('0x3c')],{'$or':_['map'](_0x544894,function(_0x1d5c3c){if(_0x1d5c3c[_0x5c64('0x31')]!==_0x5c64('0x3e')){var _0x54a0f8={};_0x54a0f8[_0x1d5c3c[_0x5c64('0x2b')]]={'$like':'%'+_0x345844[_0x5c64('0x36')][_0x5c64('0x3d')]+'%'};return _0x54a0f8;}})});}_0x507037=_[_0x5c64('0x3f')]({},_0x507037,_0x345844['options']);var _0xee8ab7={'where':_0x507037[_0x5c64('0x3c')]};return db[_0x5c64('0x40')][_0x5c64('0x20')](_0xee8ab7)[_0x5c64('0x27')](function(_0x136fcc){_0x2e5b6d[_0x5c64('0x20')]=_0x136fcc;if(_0x345844[_0x5c64('0x36')][_0x5c64('0x41')]){_0x507037[_0x5c64('0x42')]=[{'all':!![]}];}return db[_0x5c64('0x40')][_0x5c64('0x43')](_0x507037);})['then'](function(_0x1f88c0){_0x2e5b6d[_0x5c64('0x44')]=_0x1f88c0;return _0x2e5b6d;})[_0x5c64('0x27')](respondWithFilteredResult(_0x52e2c8,_0x507037))[_0x5c64('0x45')](handleError(_0x52e2c8,null));};exports[_0x5c64('0x46')]=function(_0x2f6fff,_0x570984){var _0x3f5543={'raw':!![],'where':{'id':_0x2f6fff[_0x5c64('0x47')]['id']}},_0x25f5cf={};_0x25f5cf[_0x5c64('0x33')]=_[_0x5c64('0x48')](db[_0x5c64('0x40')]['rawAttributes']);_0x25f5cf[_0x5c64('0x36')]=_[_0x5c64('0x48')](_0x2f6fff[_0x5c64('0x36')]);_0x25f5cf[_0x5c64('0x34')]=_[_0x5c64('0x35')](_0x25f5cf['model'],_0x25f5cf[_0x5c64('0x36')]);_0x3f5543[_0x5c64('0x37')]=_[_0x5c64('0x35')](_0x25f5cf[_0x5c64('0x33')],qs[_0x5c64('0x49')](_0x2f6fff['query'][_0x5c64('0x49')]));_0x3f5543[_0x5c64('0x37')]=_0x3f5543['attributes'][_0x5c64('0x38')]?_0x3f5543[_0x5c64('0x37')]:_0x25f5cf['model'];if(_0x2f6fff[_0x5c64('0x36')]['includeAll']){_0x3f5543['include']=[{'all':!![]}];}_0x3f5543=_['merge']({},_0x3f5543,_0x2f6fff[_0x5c64('0x4a')]);return db['MailSubstatus'][_0x5c64('0x4b')](_0x3f5543)[_0x5c64('0x27')](handleEntityNotFound(_0x570984,null))[_0x5c64('0x27')](respondWithResult(_0x570984,null))['catch'](handleError(_0x570984,null));};exports[_0x5c64('0x4c')]=function(_0x2f1219,_0x17015f){return db[_0x5c64('0x40')]['create'](_0x2f1219['body'],{})[_0x5c64('0x27')](respondWithResult(_0x17015f,0xc9))['catch'](handleError(_0x17015f,null));};exports[_0x5c64('0x26')]=function(_0x5a0a6e,_0xf87480){if(_0x5a0a6e['body']['id']){delete _0x5a0a6e[_0x5c64('0x4d')]['id'];}return db[_0x5c64('0x40')]['find']({'where':{'id':_0x5a0a6e[_0x5c64('0x47')]['id']}})[_0x5c64('0x27')](handleEntityNotFound(_0xf87480,null))[_0x5c64('0x27')](saveUpdates(_0x5a0a6e['body'],null))[_0x5c64('0x27')](respondWithResult(_0xf87480,null))[_0x5c64('0x45')](handleError(_0xf87480,null));};exports[_0x5c64('0x28')]=function(_0xc55742,_0x5f0ecb){return db[_0x5c64('0x40')][_0x5c64('0x4b')]({'where':{'id':_0xc55742[_0x5c64('0x47')]['id']}})[_0x5c64('0x27')](handleEntityNotFound(_0x5f0ecb,null))[_0x5c64('0x27')](removeEntity(_0x5f0ecb,null))['catch'](handleError(_0x5f0ecb,null));};exports[_0x5c64('0x4e')]=function(_0x54c23d,_0x22a049){return db[_0x5c64('0x40')]['describe']()['then'](respondWithResult(_0x22a049,null))['catch'](handleError(_0x22a049,null));};
\ No newline at end of file
+var _0xc5aa=['sort','where','filters','pick','VIRTUAL','filter','merge','options','includeAll','include','rows','show','find','create','catch','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','Content-Range','apply','reject','then','destroy','error','stack','send','index','map','MailSubstatus','rawAttributes','fieldName','type','model','name','query','keys','intersection','attributes','fields','length','nolimit','order'];(function(_0x3b3a60,_0x5d8d33){var _0x5f5120=function(_0x146644){while(--_0x146644){_0x3b3a60['push'](_0x3b3a60['shift']());}};_0x5f5120(++_0x5d8d33);}(_0xc5aa,0x1e0));var _0xac5a=function(_0xdc8f4d,_0x1029f8){_0xdc8f4d=_0xdc8f4d-0x0;var _0x2a1cd7=_0xc5aa[_0xdc8f4d];return _0x2a1cd7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xac5a('0x0'));var zipdir=require(_0xac5a('0x1'));var jsonpatch=require(_0xac5a('0x2'));var rp=require(_0xac5a('0x3'));var moment=require(_0xac5a('0x4'));var BPromise=require(_0xac5a('0x5'));var Mustache=require(_0xac5a('0x6'));var util=require(_0xac5a('0x7'));var path=require(_0xac5a('0x8'));var sox=require(_0xac5a('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xac5a('0xa'));var _=require(_0xac5a('0xb'));var squel=require('squel');var crypto=require(_0xac5a('0xc'));var jsforce=require(_0xac5a('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xac5a('0xe'));var Papa=require(_0xac5a('0xf'));var Redis=require(_0xac5a('0x10'));var authService=require(_0xac5a('0x11'));var qs=require(_0xac5a('0x12'));var as=require(_0xac5a('0x13'));var hardwareService=require(_0xac5a('0x14'));var logger=require(_0xac5a('0x15'))(_0xac5a('0x16'));var utils=require(_0xac5a('0x17'));var config=require(_0xac5a('0x18'));var licenseUtil=require(_0xac5a('0x19'));var db=require(_0xac5a('0x1a'))['db'];function respondWithStatusCode(_0x5490c9,_0x1721b3){_0x1721b3=_0x1721b3||0xcc;return function(_0x4bd23c){if(_0x4bd23c){return _0x5490c9[_0xac5a('0x1b')](_0x1721b3);}return _0x5490c9['status'](_0x1721b3)[_0xac5a('0x1c')]();};}function respondWithResult(_0x23393a,_0x10c75a){_0x10c75a=_0x10c75a||0xc8;return function(_0xb967ef){if(_0xb967ef){return _0x23393a['status'](_0x10c75a)[_0xac5a('0x1d')](_0xb967ef);}};}function respondWithFilteredResult(_0x594300,_0x5bff6e){return function(_0x10dcac){if(_0x10dcac){var _0xbf3d64=typeof _0x5bff6e[_0xac5a('0x1e')]===_0xac5a('0x1f')&&typeof _0x5bff6e['limit']===_0xac5a('0x1f');var _0x4dcf17=_0x10dcac['count'];var _0x1a69d5=_0xbf3d64?0x0:_0x5bff6e['offset'];var _0xdd5c36=_0xbf3d64?_0x10dcac[_0xac5a('0x20')]:_0x5bff6e[_0xac5a('0x1e')]+_0x5bff6e[_0xac5a('0x21')];var _0x46bbc8;if(_0xdd5c36>=_0x4dcf17){_0xdd5c36=_0x4dcf17;_0x46bbc8=0xc8;}else{_0x46bbc8=0xce;}_0x594300[_0xac5a('0x22')](_0x46bbc8);return _0x594300['set'](_0xac5a('0x23'),_0x1a69d5+'-'+_0xdd5c36+'/'+_0x4dcf17)[_0xac5a('0x1d')](_0x10dcac);}return null;};}function patchUpdates(_0x534bf4){return function(_0x109eeb){try{jsonpatch[_0xac5a('0x24')](_0x109eeb,_0x534bf4,!![]);}catch(_0x1edb8f){return BPromise[_0xac5a('0x25')](_0x1edb8f);}return _0x109eeb['save']();};}function saveUpdates(_0x21da58,_0x2dff6e){return function(_0x2cfb2d){if(_0x2cfb2d){return _0x2cfb2d['update'](_0x21da58)[_0xac5a('0x26')](function(_0x46cd8d){return _0x46cd8d;});}return null;};}function removeEntity(_0x52cd96,_0x3fdbd6){return function(_0x506c20){if(_0x506c20){return _0x506c20[_0xac5a('0x27')]()['then'](function(){_0x52cd96[_0xac5a('0x22')](0xcc)[_0xac5a('0x1c')]();});}};}function handleEntityNotFound(_0x198582,_0x2025f7){return function(_0x2a423e){if(!_0x2a423e){_0x198582['sendStatus'](0x194);}return _0x2a423e;};}function handleError(_0x1307e8,_0x38f7c0){_0x38f7c0=_0x38f7c0||0x1f4;return function(_0x2d4fa5){logger[_0xac5a('0x28')](_0x2d4fa5[_0xac5a('0x29')]);if(_0x2d4fa5['name']){delete _0x2d4fa5['name'];}_0x1307e8[_0xac5a('0x22')](_0x38f7c0)[_0xac5a('0x2a')](_0x2d4fa5);};}exports[_0xac5a('0x2b')]=function(_0x2b857a,_0x474ee4){var _0x43b5cd={},_0x2b03c1={},_0x626d56={'count':0x0,'rows':[]};var _0x37ee85=_[_0xac5a('0x2c')](db[_0xac5a('0x2d')][_0xac5a('0x2e')],function(_0xb4f4ef){return{'name':_0xb4f4ef[_0xac5a('0x2f')],'type':_0xb4f4ef[_0xac5a('0x30')]['key']};});_0x2b03c1[_0xac5a('0x31')]=_['map'](_0x37ee85,_0xac5a('0x32'));_0x2b03c1[_0xac5a('0x33')]=_[_0xac5a('0x34')](_0x2b857a[_0xac5a('0x33')]);_0x2b03c1['filters']=_[_0xac5a('0x35')](_0x2b03c1[_0xac5a('0x31')],_0x2b03c1['query']);_0x43b5cd[_0xac5a('0x36')]=_[_0xac5a('0x35')](_0x2b03c1[_0xac5a('0x31')],qs[_0xac5a('0x37')](_0x2b857a[_0xac5a('0x33')][_0xac5a('0x37')]));_0x43b5cd[_0xac5a('0x36')]=_0x43b5cd[_0xac5a('0x36')][_0xac5a('0x38')]?_0x43b5cd[_0xac5a('0x36')]:_0x2b03c1['model'];if(!_0x2b857a[_0xac5a('0x33')]['hasOwnProperty'](_0xac5a('0x39'))){_0x43b5cd[_0xac5a('0x21')]=qs[_0xac5a('0x21')](_0x2b857a['query'][_0xac5a('0x21')]);_0x43b5cd[_0xac5a('0x1e')]=qs['offset'](_0x2b857a[_0xac5a('0x33')][_0xac5a('0x1e')]);}_0x43b5cd[_0xac5a('0x3a')]=qs['sort'](_0x2b857a[_0xac5a('0x33')][_0xac5a('0x3b')]);_0x43b5cd[_0xac5a('0x3c')]=qs[_0xac5a('0x3d')](_[_0xac5a('0x3e')](_0x2b857a['query'],_0x2b03c1[_0xac5a('0x3d')]),_0x37ee85);if(_0x2b857a[_0xac5a('0x33')]['filter']){_0x43b5cd[_0xac5a('0x3c')]=_['merge'](_0x43b5cd['where'],{'$or':_[_0xac5a('0x2c')](_0x37ee85,function(_0x3180b8){if(_0x3180b8[_0xac5a('0x30')]!==_0xac5a('0x3f')){var _0x3088ee={};_0x3088ee[_0x3180b8['name']]={'$like':'%'+_0x2b857a[_0xac5a('0x33')][_0xac5a('0x40')]+'%'};return _0x3088ee;}})});}_0x43b5cd=_[_0xac5a('0x41')]({},_0x43b5cd,_0x2b857a[_0xac5a('0x42')]);var _0x452470={'where':_0x43b5cd['where']};return db[_0xac5a('0x2d')][_0xac5a('0x20')](_0x452470)[_0xac5a('0x26')](function(_0xe284fe){_0x626d56[_0xac5a('0x20')]=_0xe284fe;if(_0x2b857a[_0xac5a('0x33')][_0xac5a('0x43')]){_0x43b5cd[_0xac5a('0x44')]=[{'all':!![]}];}return db[_0xac5a('0x2d')]['findAll'](_0x43b5cd);})[_0xac5a('0x26')](function(_0x5196f){_0x626d56[_0xac5a('0x45')]=_0x5196f;return _0x626d56;})[_0xac5a('0x26')](respondWithFilteredResult(_0x474ee4,_0x43b5cd))['catch'](handleError(_0x474ee4,null));};exports[_0xac5a('0x46')]=function(_0x2ac458,_0x1ec44d){var _0x52a799={'raw':!![],'where':{'id':_0x2ac458['params']['id']}},_0xc8837d={};_0xc8837d[_0xac5a('0x31')]=_[_0xac5a('0x34')](db[_0xac5a('0x2d')][_0xac5a('0x2e')]);_0xc8837d['query']=_[_0xac5a('0x34')](_0x2ac458[_0xac5a('0x33')]);_0xc8837d[_0xac5a('0x3d')]=_[_0xac5a('0x35')](_0xc8837d[_0xac5a('0x31')],_0xc8837d[_0xac5a('0x33')]);_0x52a799['attributes']=_[_0xac5a('0x35')](_0xc8837d['model'],qs[_0xac5a('0x37')](_0x2ac458[_0xac5a('0x33')][_0xac5a('0x37')]));_0x52a799[_0xac5a('0x36')]=_0x52a799[_0xac5a('0x36')][_0xac5a('0x38')]?_0x52a799[_0xac5a('0x36')]:_0xc8837d[_0xac5a('0x31')];if(_0x2ac458[_0xac5a('0x33')][_0xac5a('0x43')]){_0x52a799[_0xac5a('0x44')]=[{'all':!![]}];}_0x52a799=_[_0xac5a('0x41')]({},_0x52a799,_0x2ac458[_0xac5a('0x42')]);return db[_0xac5a('0x2d')][_0xac5a('0x47')](_0x52a799)[_0xac5a('0x26')](handleEntityNotFound(_0x1ec44d,null))[_0xac5a('0x26')](respondWithResult(_0x1ec44d,null))['catch'](handleError(_0x1ec44d,null));};exports[_0xac5a('0x48')]=function(_0x36e6f3,_0x5bf76a){return db[_0xac5a('0x2d')][_0xac5a('0x48')](_0x36e6f3['body'],{})['then'](respondWithResult(_0x5bf76a,0xc9))[_0xac5a('0x49')](handleError(_0x5bf76a,null));};exports['update']=function(_0x14c1ee,_0x3a2234){if(_0x14c1ee['body']['id']){delete _0x14c1ee[_0xac5a('0x4a')]['id'];}return db[_0xac5a('0x2d')]['find']({'where':{'id':_0x14c1ee['params']['id']}})[_0xac5a('0x26')](handleEntityNotFound(_0x3a2234,null))['then'](saveUpdates(_0x14c1ee[_0xac5a('0x4a')],null))[_0xac5a('0x26')](respondWithResult(_0x3a2234,null))[_0xac5a('0x49')](handleError(_0x3a2234,null));};exports[_0xac5a('0x27')]=function(_0x398577,_0x46ea34){return db[_0xac5a('0x2d')][_0xac5a('0x47')]({'where':{'id':_0x398577[_0xac5a('0x4b')]['id']}})[_0xac5a('0x26')](handleEntityNotFound(_0x46ea34,null))[_0xac5a('0x26')](removeEntity(_0x46ea34,null))[_0xac5a('0x49')](handleError(_0x46ea34,null));};exports[_0xac5a('0x4c')]=function(_0x153024,_0x576e36){return db[_0xac5a('0x2d')][_0xac5a('0x4c')]()['then'](respondWithResult(_0x576e36,null))[_0xac5a('0x49')](handleError(_0x576e36,null));};
\ No newline at end of file
index 1c593d2..d89fc41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea3f=['MailSubstatus','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x2fbb95,_0x3a9af6){var _0x2b9ecb=function(_0x3f73d9){while(--_0x3f73d9){_0x2fbb95['push'](_0x2fbb95['shift']());}};_0x2b9ecb(++_0x3a9af6);}(_0xea3f,0x1e8));var _0xfea3=function(_0x1bda6c,_0x5440b1){_0x1bda6c=_0x1bda6c-0x0;var _0x501a86=_0xea3f[_0x1bda6c];return _0x501a86;};'use strict';var EventEmitter=require(_0xfea3('0x0'));var MailSubstatus=require(_0xfea3('0x1'))['db'][_0xfea3('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents['setMaxListeners'](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x33c1ab){return function(_0x32e7b8,_0x20e36a,_0x45ae95){MailSubstatusEvents[_0xfea3('0x3')](_0x33c1ab+':'+_0x32e7b8['id'],_0x32e7b8);MailSubstatusEvents[_0xfea3('0x3')](_0x33c1ab,_0x32e7b8);_0x45ae95(null);};}for(var e in events){if(events[_0xfea3('0x4')](e)){var event=events[e];MailSubstatus[_0xfea3('0x5')](e,emitEvent(event));}}module[_0xfea3('0x6')]=MailSubstatusEvents;
\ No newline at end of file
+var _0xeae4=['hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','update','emit'];(function(_0x5c66fc,_0x353e52){var _0x4c2fd7=function(_0x4c5a8a){while(--_0x4c5a8a){_0x5c66fc['push'](_0x5c66fc['shift']());}};_0x4c2fd7(++_0x353e52);}(_0xeae4,0x1d8));var _0x4eae=function(_0x10eeec,_0x410923){_0x10eeec=_0x10eeec-0x0;var _0x1b5c2c=_0xeae4[_0x10eeec];return _0x1b5c2c;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0x4eae('0x0'))['db']['MailSubstatus'];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x4eae('0x1')](0x0);var events={'afterUpdate':_0x4eae('0x2')};function emitEvent(_0x204f6a){return function(_0x46af09,_0x492291,_0x3a22c0){MailSubstatusEvents[_0x4eae('0x3')](_0x204f6a+':'+_0x46af09['id'],_0x46af09);MailSubstatusEvents[_0x4eae('0x3')](_0x204f6a,_0x46af09);_0x3a22c0(null);};}for(var e in events){if(events[_0x4eae('0x4')](e)){var event=events[e];MailSubstatus[_0x4eae('0x5')](e,emitEvent(event));}}module[_0x4eae('0x6')]=MailSubstatusEvents;
\ No newline at end of file
index f20c77e..a4f2554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2d7=['Condition','_previousDataValues','name','then','catch','./mailSubstatus.attributes','models','define','MailSubstatus','mail_substatuses'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa2d7,0x195));var _0x7a2d=function(_0x3b57f8,_0x5bfd89){_0x3b57f8=_0x3b57f8-0x0;var _0x6feb67=_0xa2d7[_0x3b57f8];return _0x6feb67;};'use strict';var attributes=require(_0x7a2d('0x0'));module['exports']=function(_0x1c7728){var _0x4be81d=_0x1c7728[_0x7a2d('0x1')];return _0x1c7728[_0x7a2d('0x2')](_0x7a2d('0x3'),attributes,{'tableName':_0x7a2d('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x12ca03,_0x3f065e,_0x3b1ad9){return _0x4be81d[_0x7a2d('0x5')]['update']({'value':_0x12ca03['name']},{'where':{'field':'mailSubstatus','value':_0x12ca03[_0x7a2d('0x6')][_0x7a2d('0x7')]}})[_0x7a2d('0x8')](function(){_0x3b1ad9();})[_0x7a2d('0x9')](function(_0x34847e){_0x3b1ad9(_0x34847e);});}}});};
\ No newline at end of file
+var _0x0d71=['Condition','update','name','mailSubstatus','_previousDataValues','then','catch','./mailSubstatus.attributes','exports','MailSubstatus'];(function(_0x55d298,_0x4492ce){var _0x320d96=function(_0x19f9b6){while(--_0x19f9b6){_0x55d298['push'](_0x55d298['shift']());}};_0x320d96(++_0x4492ce);}(_0x0d71,0x1a1));var _0x10d7=function(_0x7ce5cc,_0x346fb1){_0x7ce5cc=_0x7ce5cc-0x0;var _0x3ff529=_0x0d71[_0x7ce5cc];return _0x3ff529;};'use strict';var attributes=require(_0x10d7('0x0'));module[_0x10d7('0x1')]=function(_0x5d1a90){var _0x57420e=_0x5d1a90['models'];return _0x5d1a90['define'](_0x10d7('0x2'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x33d680,_0x45dec8,_0x2941fa){return _0x57420e[_0x10d7('0x3')][_0x10d7('0x4')]({'value':_0x33d680[_0x10d7('0x5')]},{'where':{'field':_0x10d7('0x6'),'value':_0x33d680[_0x10d7('0x7')][_0x10d7('0x5')]}})[_0x10d7('0x8')](function(){_0x2941fa();})[_0x10d7('0x9')](function(_0x4141ae){_0x2941fa(_0x4141ae);});}}});};
\ No newline at end of file
index b5c9772..6c3a2ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b7b=['code','message','result','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0b7b,0x114));var _0xb0b7=function(_0x397dab,_0x20ded8){_0x397dab=_0x397dab-0x0;var _0x3a61aa=_0x0b7b[_0x397dab];return _0x3a61aa;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xb0b7('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb0b7('0x1'));var db=require(_0xb0b7('0x2'))['db'];var utils=require(_0xb0b7('0x3'));var logger=require(_0xb0b7('0x4'))(_0xb0b7('0x5'));var config=require('../../config/environment');var jayson=require(_0xb0b7('0x6'));var client=jayson[_0xb0b7('0x7')][_0xb0b7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b4927,_0x3bd5f6,_0x3c63e1){return new BPromise(function(_0x225db0,_0x42a728){return client[_0xb0b7('0x9')](_0x1b4927,_0x3c63e1)[_0xb0b7('0xa')](function(_0x59cbb9){logger[_0xb0b7('0xb')](_0xb0b7('0xc'),_0x3bd5f6,_0xb0b7('0xd'));logger[_0xb0b7('0xe')](_0xb0b7('0xf'),_0x3bd5f6,_0xb0b7('0xd'),JSON[_0xb0b7('0x10')](_0x59cbb9));if(_0x59cbb9[_0xb0b7('0x11')]){if(_0x59cbb9[_0xb0b7('0x11')][_0xb0b7('0x12')]===0x1f4){logger[_0xb0b7('0x11')](_0xb0b7('0xc'),_0x3bd5f6,_0x59cbb9[_0xb0b7('0x11')][_0xb0b7('0x13')]);return _0x42a728(_0x59cbb9['error'][_0xb0b7('0x13')]);}logger[_0xb0b7('0x11')]('MailSubstatus,\x20%s,\x20%s',_0x3bd5f6,_0x59cbb9[_0xb0b7('0x11')]['message']);return _0x225db0(_0x59cbb9[_0xb0b7('0x11')][_0xb0b7('0x13')]);}else{logger[_0xb0b7('0xb')]('MailSubstatus,\x20%s,\x20%s',_0x3bd5f6,_0xb0b7('0xd'));_0x225db0(_0x59cbb9[_0xb0b7('0x14')][_0xb0b7('0x13')]);}})['catch'](function(_0x5fc015){logger['error'](_0xb0b7('0xc'),_0x3bd5f6,_0x5fc015);_0x42a728(_0x5fc015);});});}
\ No newline at end of file
+var _0x495f=['bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailSubstatus,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x332df6,_0x4dd5d9){var _0x264c45=function(_0x57de9e){while(--_0x57de9e){_0x332df6['push'](_0x332df6['shift']());}};_0x264c45(++_0x4dd5d9);}(_0x495f,0x111));var _0xf495=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x495f[_0x18ab2a];return _0x16dcee;};'use strict';var _=require(_0xf495('0x0'));var util=require(_0xf495('0x1'));var moment=require(_0xf495('0x2'));var BPromise=require(_0xf495('0x3'));var rs=require(_0xf495('0x4'));var fs=require('fs');var Redis=require(_0xf495('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf495('0x6'))(_0xf495('0x7'));var config=require(_0xf495('0x8'));var jayson=require(_0xf495('0x9'));var client=jayson[_0xf495('0xa')][_0xf495('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2cc589,_0x2cce5c,_0x467785){return new BPromise(function(_0x2b370b,_0x7e663f){return client['request'](_0x2cc589,_0x467785)['then'](function(_0x2355eb){logger[_0xf495('0xc')]('MailSubstatus,\x20%s,\x20%s',_0x2cce5c,'request\x20sent');logger[_0xf495('0xd')](_0xf495('0xe'),_0x2cce5c,_0xf495('0xf'),JSON[_0xf495('0x10')](_0x2355eb));if(_0x2355eb[_0xf495('0x11')]){if(_0x2355eb[_0xf495('0x11')][_0xf495('0x12')]===0x1f4){logger[_0xf495('0x11')](_0xf495('0x13'),_0x2cce5c,_0x2355eb[_0xf495('0x11')][_0xf495('0x14')]);return _0x7e663f(_0x2355eb[_0xf495('0x11')][_0xf495('0x14')]);}logger[_0xf495('0x11')](_0xf495('0x13'),_0x2cce5c,_0x2355eb[_0xf495('0x11')][_0xf495('0x14')]);return _0x2b370b(_0x2355eb[_0xf495('0x11')][_0xf495('0x14')]);}else{logger[_0xf495('0xc')](_0xf495('0x13'),_0x2cce5c,_0xf495('0xf'));_0x2b370b(_0x2355eb[_0xf495('0x15')][_0xf495('0x14')]);}})[_0xf495('0x16')](function(_0x4f87b1){logger[_0xf495('0x11')](_0xf495('0x13'),_0x2cce5c,_0x4f87b1);_0x7e663f(_0x4f87b1);});});}
\ No newline at end of file
index fc5a394..4c7a41f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcfd=['isAuthenticated','index','/describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdcfd,0x108));var _0xddcf=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xdcfd[_0x47a7d0];return _0xb9bd08;};'use strict';var multer=require('multer');var util=require(_0xddcf('0x0'));var path=require(_0xddcf('0x1'));var timeout=require(_0xddcf('0x2'));var express=require(_0xddcf('0x3'));var router=express['Router']();var fs_extra=require(_0xddcf('0x4'));var auth=require(_0xddcf('0x5'));var interaction=require(_0xddcf('0x6'));var config=require(_0xddcf('0x7'));var controller=require('./mailTransferReport.controller');router[_0xddcf('0x8')]('/',auth[_0xddcf('0x9')](),controller[_0xddcf('0xa')]);router[_0xddcf('0x8')](_0xddcf('0xb'),auth[_0xddcf('0x9')](),controller['describe']);router[_0xddcf('0x8')](_0xddcf('0xc'),auth[_0xddcf('0x9')](),controller[_0xddcf('0xd')]);router[_0xddcf('0xe')]('/',auth[_0xddcf('0x9')](),controller[_0xddcf('0xf')]);router[_0xddcf('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xddcf('0x11')]);router[_0xddcf('0x12')]('/:id',auth[_0xddcf('0x9')](),controller[_0xddcf('0x13')]);module[_0xddcf('0x14')]=router;
\ No newline at end of file
+var _0x8014=['./mailTransferReport.controller','isAuthenticated','get','show','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4c5be3,_0x7747da){var _0x2c9979=function(_0x8d5ec6){while(--_0x8d5ec6){_0x4c5be3['push'](_0x4c5be3['shift']());}};_0x2c9979(++_0x7747da);}(_0x8014,0x161));var _0x4801=function(_0x5a2d95,_0xb362e5){_0x5a2d95=_0x5a2d95-0x0;var _0x2c3986=_0x8014[_0x5a2d95];return _0x2c3986;};'use strict';var multer=require(_0x4801('0x0'));var util=require(_0x4801('0x1'));var path=require(_0x4801('0x2'));var timeout=require(_0x4801('0x3'));var express=require('express');var router=express[_0x4801('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4801('0x5'));var interaction=require(_0x4801('0x6'));var config=require(_0x4801('0x7'));var controller=require(_0x4801('0x8'));router['get']('/',auth[_0x4801('0x9')](),controller['index']);router[_0x4801('0xa')]('/describe',auth[_0x4801('0x9')](),controller['describe']);router[_0x4801('0xa')]('/:id',auth[_0x4801('0x9')](),controller[_0x4801('0xb')]);router['post']('/',auth[_0x4801('0x9')](),controller[_0x4801('0xc')]);router[_0x4801('0xd')](_0x4801('0xe'),auth['isAuthenticated'](),controller[_0x4801('0xf')]);router[_0x4801('0x10')](_0x4801('0xe'),auth['isAuthenticated'](),controller[_0x4801('0x11')]);module[_0x4801('0x12')]=router;
\ No newline at end of file
index 48e1f2c..061dc38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x2cf37f,_0x2217b7){var _0x1bd369=function(_0x12d071){while(--_0x12d071){_0x2cf37f['push'](_0x2cf37f['shift']());}};_0x1bd369(++_0x2217b7);}(_0x008c,0x188));var _0xc008=function(_0x3f4891,_0x4e6f62){_0x3f4891=_0x3f4891-0x0;var _0x54f2d8=_0x008c[_0x3f4891];return _0x54f2d8;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x5c914d,_0x4fa524){var _0x4d1492=function(_0x2ead94){while(--_0x2ead94){_0x5c914d['push'](_0x5c914d['shift']());}};_0x4d1492(++_0x4fa524);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4cce65,_0x40021e){_0x4cce65=_0x4cce65-0x0;var _0x4d1b45=_0xcb91[_0x4cce65];return _0x4d1b45;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 34a5100..ae068ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe297=['rows','show','include','merge','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','error','name','send','index','MailTransferReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','includeAll','findAll'];(function(_0x5aedd0,_0x4fa65a){var _0xd3939c=function(_0x402cd4){while(--_0x402cd4){_0x5aedd0['push'](_0x5aedd0['shift']());}};_0xd3939c(++_0x4fa65a);}(_0xe297,0x126));var _0x7e29=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe297[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x7e29('0x0'));var rimraf=require(_0x7e29('0x1'));var zipdir=require(_0x7e29('0x2'));var jsonpatch=require(_0x7e29('0x3'));var rp=require('request-promise');var moment=require(_0x7e29('0x4'));var BPromise=require(_0x7e29('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7e29('0x6'));var sox=require('sox');var csv=require(_0x7e29('0x7'));var ejs=require(_0x7e29('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e29('0x9'));var squel=require(_0x7e29('0xa'));var crypto=require('crypto');var jsforce=require(_0x7e29('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x7e29('0x7'));var querystring=require(_0x7e29('0xc'));var Papa=require(_0x7e29('0xd'));var Redis=require(_0x7e29('0xe'));var authService=require(_0x7e29('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x7e29('0x10'));var hardwareService=require(_0x7e29('0x11'));var logger=require(_0x7e29('0x12'))(_0x7e29('0x13'));var utils=require('../../config/utils');var config=require(_0x7e29('0x14'));var licenseUtil=require(_0x7e29('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x208733,_0x3091bc){_0x3091bc=_0x3091bc||0xcc;return function(_0x2ecd6d){if(_0x2ecd6d){return _0x208733[_0x7e29('0x16')](_0x3091bc);}return _0x208733[_0x7e29('0x17')](_0x3091bc)['end']();};}function respondWithResult(_0xf3b57e,_0x389853){_0x389853=_0x389853||0xc8;return function(_0x2d18a0){if(_0x2d18a0){return _0xf3b57e[_0x7e29('0x17')](_0x389853)[_0x7e29('0x18')](_0x2d18a0);}};}function respondWithFilteredResult(_0x2c4e7d,_0x2fe0af){return function(_0x419e15){if(_0x419e15){var _0x2384ca=typeof _0x2fe0af[_0x7e29('0x19')]===_0x7e29('0x1a')&&typeof _0x2fe0af[_0x7e29('0x1b')]===_0x7e29('0x1a');var _0x33b78b=_0x419e15[_0x7e29('0x1c')];var _0x122dc3=_0x2384ca?0x0:_0x2fe0af['offset'];var _0x1bf551=_0x2384ca?_0x419e15['count']:_0x2fe0af[_0x7e29('0x19')]+_0x2fe0af[_0x7e29('0x1b')];var _0x3bc358;if(_0x1bf551>=_0x33b78b){_0x1bf551=_0x33b78b;_0x3bc358=0xc8;}else{_0x3bc358=0xce;}_0x2c4e7d[_0x7e29('0x17')](_0x3bc358);return _0x2c4e7d['set'](_0x7e29('0x1d'),_0x122dc3+'-'+_0x1bf551+'/'+_0x33b78b)[_0x7e29('0x18')](_0x419e15);}return null;};}function patchUpdates(_0xc429a4){return function(_0x3ffdac){try{jsonpatch['apply'](_0x3ffdac,_0xc429a4,!![]);}catch(_0xdc7abf){return BPromise['reject'](_0xdc7abf);}return _0x3ffdac[_0x7e29('0x1e')]();};}function saveUpdates(_0x139838,_0x381314){return function(_0x4578b5){if(_0x4578b5){return _0x4578b5[_0x7e29('0x1f')](_0x139838)[_0x7e29('0x20')](function(_0x196b4e){return _0x196b4e;});}return null;};}function removeEntity(_0x27d369,_0x3be366){return function(_0x4dd6c2){if(_0x4dd6c2){return _0x4dd6c2[_0x7e29('0x21')]()[_0x7e29('0x20')](function(){_0x27d369['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c7644,_0x430f98){return function(_0x48dfa6){if(!_0x48dfa6){_0x2c7644[_0x7e29('0x16')](0x194);}return _0x48dfa6;};}function handleError(_0x172439,_0x3bd6b5){_0x3bd6b5=_0x3bd6b5||0x1f4;return function(_0x2b7d4f){logger[_0x7e29('0x22')](_0x2b7d4f['stack']);if(_0x2b7d4f[_0x7e29('0x23')]){delete _0x2b7d4f[_0x7e29('0x23')];}_0x172439[_0x7e29('0x17')](_0x3bd6b5)[_0x7e29('0x24')](_0x2b7d4f);};}exports[_0x7e29('0x25')]=function(_0x320c11,_0x10d729){var _0x34ef82={},_0x16b901={},_0x1ac0f9={'count':0x0,'rows':[]};var _0x5b81b3=_['map'](db[_0x7e29('0x26')][_0x7e29('0x27')],function(_0x20f8e8){return{'name':_0x20f8e8[_0x7e29('0x28')],'type':_0x20f8e8[_0x7e29('0x29')][_0x7e29('0x2a')]};});_0x16b901[_0x7e29('0x2b')]=_[_0x7e29('0x2c')](_0x5b81b3,_0x7e29('0x23'));_0x16b901[_0x7e29('0x2d')]=_[_0x7e29('0x2e')](_0x320c11[_0x7e29('0x2d')]);_0x16b901[_0x7e29('0x2f')]=_[_0x7e29('0x30')](_0x16b901[_0x7e29('0x2b')],_0x16b901[_0x7e29('0x2d')]);_0x34ef82[_0x7e29('0x31')]=_[_0x7e29('0x30')](_0x16b901[_0x7e29('0x2b')],qs[_0x7e29('0x32')](_0x320c11[_0x7e29('0x2d')][_0x7e29('0x32')]));_0x34ef82[_0x7e29('0x31')]=_0x34ef82['attributes'][_0x7e29('0x33')]?_0x34ef82['attributes']:_0x16b901[_0x7e29('0x2b')];if(!_0x320c11[_0x7e29('0x2d')][_0x7e29('0x34')](_0x7e29('0x35'))){_0x34ef82['limit']=qs[_0x7e29('0x1b')](_0x320c11[_0x7e29('0x2d')][_0x7e29('0x1b')]);_0x34ef82[_0x7e29('0x19')]=qs[_0x7e29('0x19')](_0x320c11[_0x7e29('0x2d')][_0x7e29('0x19')]);}_0x34ef82['order']=qs[_0x7e29('0x36')](_0x320c11[_0x7e29('0x2d')]['sort']);_0x34ef82[_0x7e29('0x37')]=qs[_0x7e29('0x2f')](_[_0x7e29('0x38')](_0x320c11[_0x7e29('0x2d')],_0x16b901[_0x7e29('0x2f')]),_0x5b81b3);if(_0x320c11[_0x7e29('0x2d')][_0x7e29('0x39')]){_0x34ef82[_0x7e29('0x37')]=_['merge'](_0x34ef82[_0x7e29('0x37')],{'$or':_[_0x7e29('0x2c')](_0x5b81b3,function(_0x2fe417){if(_0x2fe417['type']!==_0x7e29('0x3a')){var _0x1737c2={};_0x1737c2[_0x2fe417['name']]={'$like':'%'+_0x320c11[_0x7e29('0x2d')]['filter']+'%'};return _0x1737c2;}})});}_0x34ef82=_['merge']({},_0x34ef82,_0x320c11['options']);var _0x2f4a33={'where':_0x34ef82['where']};return db['MailTransferReport'][_0x7e29('0x1c')](_0x2f4a33)['then'](function(_0x3f2a67){_0x1ac0f9[_0x7e29('0x1c')]=_0x3f2a67;if(_0x320c11[_0x7e29('0x2d')][_0x7e29('0x3b')]){_0x34ef82['include']=[{'all':!![]}];}return db[_0x7e29('0x26')][_0x7e29('0x3c')](_0x34ef82);})[_0x7e29('0x20')](function(_0x3d07e1){_0x1ac0f9[_0x7e29('0x3d')]=_0x3d07e1;return _0x1ac0f9;})[_0x7e29('0x20')](respondWithFilteredResult(_0x10d729,_0x34ef82))['catch'](handleError(_0x10d729,null));};exports[_0x7e29('0x3e')]=function(_0x1778e0,_0x16e87c){var _0x2b04c3={'raw':!![],'where':{'id':_0x1778e0['params']['id']}},_0x17427c={};_0x17427c[_0x7e29('0x2b')]=_[_0x7e29('0x2e')](db[_0x7e29('0x26')][_0x7e29('0x27')]);_0x17427c[_0x7e29('0x2d')]=_[_0x7e29('0x2e')](_0x1778e0['query']);_0x17427c['filters']=_[_0x7e29('0x30')](_0x17427c['model'],_0x17427c[_0x7e29('0x2d')]);_0x2b04c3[_0x7e29('0x31')]=_['intersection'](_0x17427c[_0x7e29('0x2b')],qs[_0x7e29('0x32')](_0x1778e0[_0x7e29('0x2d')]['fields']));_0x2b04c3['attributes']=_0x2b04c3[_0x7e29('0x31')]['length']?_0x2b04c3[_0x7e29('0x31')]:_0x17427c[_0x7e29('0x2b')];if(_0x1778e0['query'][_0x7e29('0x3b')]){_0x2b04c3[_0x7e29('0x3f')]=[{'all':!![]}];}_0x2b04c3=_[_0x7e29('0x40')]({},_0x2b04c3,_0x1778e0['options']);return db['MailTransferReport']['find'](_0x2b04c3)[_0x7e29('0x20')](handleEntityNotFound(_0x16e87c,null))[_0x7e29('0x20')](respondWithResult(_0x16e87c,null))[_0x7e29('0x41')](handleError(_0x16e87c,null));};exports[_0x7e29('0x42')]=function(_0x593052,_0x34fe8f){return db[_0x7e29('0x26')][_0x7e29('0x42')](_0x593052[_0x7e29('0x43')],{})[_0x7e29('0x20')](respondWithResult(_0x34fe8f,0xc9))[_0x7e29('0x41')](handleError(_0x34fe8f,null));};exports[_0x7e29('0x1f')]=function(_0x371dea,_0x5b233b){if(_0x371dea['body']['id']){delete _0x371dea[_0x7e29('0x43')]['id'];}return db[_0x7e29('0x26')][_0x7e29('0x44')]({'where':{'id':_0x371dea[_0x7e29('0x45')]['id']}})[_0x7e29('0x20')](handleEntityNotFound(_0x5b233b,null))['then'](saveUpdates(_0x371dea['body'],null))[_0x7e29('0x20')](respondWithResult(_0x5b233b,null))['catch'](handleError(_0x5b233b,null));};exports[_0x7e29('0x21')]=function(_0x784ac9,_0x127a35){return db[_0x7e29('0x26')][_0x7e29('0x44')]({'where':{'id':_0x784ac9[_0x7e29('0x45')]['id']}})['then'](handleEntityNotFound(_0x127a35,null))[_0x7e29('0x20')](removeEntity(_0x127a35,null))[_0x7e29('0x41')](handleError(_0x127a35,null));};exports[_0x7e29('0x46')]=function(_0x4cc8b2,_0x70230d){return db['MailTransferReport'][_0x7e29('0x46')]()[_0x7e29('0x20')](respondWithResult(_0x70230d,null))[_0x7e29('0x41')](handleError(_0x70230d,null));};
\ No newline at end of file
+var _0xc6c2=['index','map','MailTransferReport','fieldName','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','catch','params','length','find','body','update','destroy','describe','eml-format','rimraf','zip-dir','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/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','then','sendStatus','error','stack','name'];(function(_0x4a4d48,_0x3adad){var _0x2ed623=function(_0x51fe2e){while(--_0x51fe2e){_0x4a4d48['push'](_0x4a4d48['shift']());}};_0x2ed623(++_0x3adad);}(_0xc6c2,0x147));var _0x2c6c=function(_0x3a6e4b,_0x118cd9){_0x3a6e4b=_0x3a6e4b-0x0;var _0x36572d=_0xc6c2[_0x3a6e4b];return _0x36572d;};'use strict';var emlformat=require(_0x2c6c('0x0'));var rimraf=require(_0x2c6c('0x1'));var zipdir=require(_0x2c6c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2c6c('0x3'));var moment=require(_0x2c6c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2c6c('0x5'));var util=require(_0x2c6c('0x6'));var path=require(_0x2c6c('0x7'));var sox=require(_0x2c6c('0x8'));var csv=require(_0x2c6c('0x9'));var ejs=require(_0x2c6c('0xa'));var fs=require('fs');var fs_extra=require(_0x2c6c('0xb'));var _=require(_0x2c6c('0xc'));var squel=require(_0x2c6c('0xd'));var crypto=require(_0x2c6c('0xe'));var jsforce=require(_0x2c6c('0xf'));var deskjs=require(_0x2c6c('0x10'));var toCsv=require(_0x2c6c('0x9'));var querystring=require('querystring');var Papa=require(_0x2c6c('0x11'));var Redis=require(_0x2c6c('0x12'));var authService=require(_0x2c6c('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2c6c('0x14'));var hardwareService=require(_0x2c6c('0x15'));var logger=require(_0x2c6c('0x16'))(_0x2c6c('0x17'));var utils=require(_0x2c6c('0x18'));var config=require(_0x2c6c('0x19'));var licenseUtil=require(_0x2c6c('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e4689,_0x17528f){_0x17528f=_0x17528f||0xcc;return function(_0x1378a8){if(_0x1378a8){return _0x1e4689['sendStatus'](_0x17528f);}return _0x1e4689[_0x2c6c('0x1b')](_0x17528f)[_0x2c6c('0x1c')]();};}function respondWithResult(_0x1e2679,_0x5112f5){_0x5112f5=_0x5112f5||0xc8;return function(_0x346aa6){if(_0x346aa6){return _0x1e2679[_0x2c6c('0x1b')](_0x5112f5)['json'](_0x346aa6);}};}function respondWithFilteredResult(_0x555c57,_0x44bb96){return function(_0x52eabc){if(_0x52eabc){var _0x5d96d5=typeof _0x44bb96[_0x2c6c('0x1d')]===_0x2c6c('0x1e')&&typeof _0x44bb96['limit']===_0x2c6c('0x1e');var _0x5b1cbc=_0x52eabc['count'];var _0x361ffb=_0x5d96d5?0x0:_0x44bb96[_0x2c6c('0x1d')];var _0x5629d8=_0x5d96d5?_0x52eabc[_0x2c6c('0x1f')]:_0x44bb96[_0x2c6c('0x1d')]+_0x44bb96[_0x2c6c('0x20')];var _0x5c14fe;if(_0x5629d8>=_0x5b1cbc){_0x5629d8=_0x5b1cbc;_0x5c14fe=0xc8;}else{_0x5c14fe=0xce;}_0x555c57['status'](_0x5c14fe);return _0x555c57['set'](_0x2c6c('0x21'),_0x361ffb+'-'+_0x5629d8+'/'+_0x5b1cbc)[_0x2c6c('0x22')](_0x52eabc);}return null;};}function patchUpdates(_0x283704){return function(_0x3ae38e){try{jsonpatch[_0x2c6c('0x23')](_0x3ae38e,_0x283704,!![]);}catch(_0x538b68){return BPromise[_0x2c6c('0x24')](_0x538b68);}return _0x3ae38e[_0x2c6c('0x25')]();};}function saveUpdates(_0x333167,_0x4e721d){return function(_0x1aee33){if(_0x1aee33){return _0x1aee33['update'](_0x333167)[_0x2c6c('0x26')](function(_0x2de4f5){return _0x2de4f5;});}return null;};}function removeEntity(_0x4ba4cb,_0x1457c4){return function(_0x3f055c){if(_0x3f055c){return _0x3f055c['destroy']()[_0x2c6c('0x26')](function(){_0x4ba4cb['status'](0xcc)[_0x2c6c('0x1c')]();});}};}function handleEntityNotFound(_0x51ce86,_0x1c2e3f){return function(_0x2e84c5){if(!_0x2e84c5){_0x51ce86[_0x2c6c('0x27')](0x194);}return _0x2e84c5;};}function handleError(_0x19d163,_0x171dba){_0x171dba=_0x171dba||0x1f4;return function(_0x154c68){logger[_0x2c6c('0x28')](_0x154c68[_0x2c6c('0x29')]);if(_0x154c68[_0x2c6c('0x2a')]){delete _0x154c68[_0x2c6c('0x2a')];}_0x19d163[_0x2c6c('0x1b')](_0x171dba)['send'](_0x154c68);};}exports[_0x2c6c('0x2b')]=function(_0x8175f0,_0x146d52){var _0xebaf3f={},_0x296a3b={},_0xf543f3={'count':0x0,'rows':[]};var _0x4be8b7=_[_0x2c6c('0x2c')](db[_0x2c6c('0x2d')]['rawAttributes'],function(_0x51ec59){return{'name':_0x51ec59[_0x2c6c('0x2e')],'type':_0x51ec59['type']['key']};});_0x296a3b[_0x2c6c('0x2f')]=_['map'](_0x4be8b7,_0x2c6c('0x2a'));_0x296a3b['query']=_[_0x2c6c('0x30')](_0x8175f0[_0x2c6c('0x31')]);_0x296a3b[_0x2c6c('0x32')]=_[_0x2c6c('0x33')](_0x296a3b['model'],_0x296a3b[_0x2c6c('0x31')]);_0xebaf3f[_0x2c6c('0x34')]=_[_0x2c6c('0x33')](_0x296a3b[_0x2c6c('0x2f')],qs[_0x2c6c('0x35')](_0x8175f0[_0x2c6c('0x31')][_0x2c6c('0x35')]));_0xebaf3f[_0x2c6c('0x34')]=_0xebaf3f[_0x2c6c('0x34')]['length']?_0xebaf3f[_0x2c6c('0x34')]:_0x296a3b[_0x2c6c('0x2f')];if(!_0x8175f0['query'][_0x2c6c('0x36')](_0x2c6c('0x37'))){_0xebaf3f['limit']=qs[_0x2c6c('0x20')](_0x8175f0[_0x2c6c('0x31')][_0x2c6c('0x20')]);_0xebaf3f[_0x2c6c('0x1d')]=qs[_0x2c6c('0x1d')](_0x8175f0[_0x2c6c('0x31')]['offset']);}_0xebaf3f['order']=qs[_0x2c6c('0x38')](_0x8175f0[_0x2c6c('0x31')][_0x2c6c('0x38')]);_0xebaf3f['where']=qs[_0x2c6c('0x32')](_[_0x2c6c('0x39')](_0x8175f0[_0x2c6c('0x31')],_0x296a3b[_0x2c6c('0x32')]),_0x4be8b7);if(_0x8175f0[_0x2c6c('0x31')][_0x2c6c('0x3a')]){_0xebaf3f['where']=_[_0x2c6c('0x3b')](_0xebaf3f[_0x2c6c('0x3c')],{'$or':_[_0x2c6c('0x2c')](_0x4be8b7,function(_0x29ebf6){if(_0x29ebf6[_0x2c6c('0x3d')]!==_0x2c6c('0x3e')){var _0x300a86={};_0x300a86[_0x29ebf6[_0x2c6c('0x2a')]]={'$like':'%'+_0x8175f0[_0x2c6c('0x31')][_0x2c6c('0x3a')]+'%'};return _0x300a86;}})});}_0xebaf3f=_[_0x2c6c('0x3b')]({},_0xebaf3f,_0x8175f0[_0x2c6c('0x3f')]);var _0x27735f={'where':_0xebaf3f['where']};return db[_0x2c6c('0x2d')][_0x2c6c('0x1f')](_0x27735f)[_0x2c6c('0x26')](function(_0x39d4f0){_0xf543f3[_0x2c6c('0x1f')]=_0x39d4f0;if(_0x8175f0[_0x2c6c('0x31')][_0x2c6c('0x40')]){_0xebaf3f[_0x2c6c('0x41')]=[{'all':!![]}];}return db['MailTransferReport']['findAll'](_0xebaf3f);})['then'](function(_0x306d8e){_0xf543f3['rows']=_0x306d8e;return _0xf543f3;})[_0x2c6c('0x26')](respondWithFilteredResult(_0x146d52,_0xebaf3f))[_0x2c6c('0x42')](handleError(_0x146d52,null));};exports['show']=function(_0x49546e,_0xba908){var _0x3bd788={'raw':!![],'where':{'id':_0x49546e[_0x2c6c('0x43')]['id']}},_0x2f493f={};_0x2f493f['model']=_[_0x2c6c('0x30')](db[_0x2c6c('0x2d')]['rawAttributes']);_0x2f493f[_0x2c6c('0x31')]=_[_0x2c6c('0x30')](_0x49546e[_0x2c6c('0x31')]);_0x2f493f['filters']=_[_0x2c6c('0x33')](_0x2f493f[_0x2c6c('0x2f')],_0x2f493f['query']);_0x3bd788[_0x2c6c('0x34')]=_[_0x2c6c('0x33')](_0x2f493f['model'],qs[_0x2c6c('0x35')](_0x49546e['query'][_0x2c6c('0x35')]));_0x3bd788[_0x2c6c('0x34')]=_0x3bd788[_0x2c6c('0x34')][_0x2c6c('0x44')]?_0x3bd788[_0x2c6c('0x34')]:_0x2f493f[_0x2c6c('0x2f')];if(_0x49546e['query']['includeAll']){_0x3bd788[_0x2c6c('0x41')]=[{'all':!![]}];}_0x3bd788=_[_0x2c6c('0x3b')]({},_0x3bd788,_0x49546e[_0x2c6c('0x3f')]);return db[_0x2c6c('0x2d')][_0x2c6c('0x45')](_0x3bd788)[_0x2c6c('0x26')](handleEntityNotFound(_0xba908,null))[_0x2c6c('0x26')](respondWithResult(_0xba908,null))[_0x2c6c('0x42')](handleError(_0xba908,null));};exports['create']=function(_0x270a11,_0x2d8596){return db[_0x2c6c('0x2d')]['create'](_0x270a11[_0x2c6c('0x46')],{})[_0x2c6c('0x26')](respondWithResult(_0x2d8596,0xc9))[_0x2c6c('0x42')](handleError(_0x2d8596,null));};exports[_0x2c6c('0x47')]=function(_0x1ae719,_0x2f20a0){if(_0x1ae719['body']['id']){delete _0x1ae719[_0x2c6c('0x46')]['id'];}return db[_0x2c6c('0x2d')][_0x2c6c('0x45')]({'where':{'id':_0x1ae719[_0x2c6c('0x43')]['id']}})['then'](handleEntityNotFound(_0x2f20a0,null))['then'](saveUpdates(_0x1ae719[_0x2c6c('0x46')],null))[_0x2c6c('0x26')](respondWithResult(_0x2f20a0,null))[_0x2c6c('0x42')](handleError(_0x2f20a0,null));};exports[_0x2c6c('0x48')]=function(_0x3fd8f1,_0x4f7344){return db[_0x2c6c('0x2d')][_0x2c6c('0x45')]({'where':{'id':_0x3fd8f1[_0x2c6c('0x43')]['id']}})[_0x2c6c('0x26')](handleEntityNotFound(_0x4f7344,null))[_0x2c6c('0x26')](removeEntity(_0x4f7344,null))['catch'](handleError(_0x4f7344,null));};exports[_0x2c6c('0x49')]=function(_0x10b478,_0x928e13){return db[_0x2c6c('0x2d')][_0x2c6c('0x49')]()['then'](respondWithResult(_0x928e13,null))[_0x2c6c('0x42')](handleError(_0x928e13,null));};
\ No newline at end of file
index 31bdb6c..73bbb25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe105=['rimraf','./mailTransferReport.attributes','exports','report_mail_transfer','uniqueid','lodash','bluebird','request-promise','path'];(function(_0x3564d6,_0x37d1cb){var _0x1f2267=function(_0xbf7dfb){while(--_0xbf7dfb){_0x3564d6['push'](_0x3564d6['shift']());}};_0x1f2267(++_0x37d1cb);}(_0xe105,0xef));var _0x5e10=function(_0x14bbde,_0x4d210f){_0x14bbde=_0x14bbde-0x0;var _0x4748c3=_0xe105[_0x14bbde];return _0x4748c3;};'use strict';var _=require(_0x5e10('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x5e10('0x1'));var rp=require(_0x5e10('0x2'));var fs=require('fs');var path=require(_0x5e10('0x3'));var rimraf=require(_0x5e10('0x4'));var config=require('../../config/environment');var attributes=require(_0x5e10('0x5'));module[_0x5e10('0x6')]=function(_0x4b8ff2,_0x1f3fc6){return _0x4b8ff2['define']('MailTransferReport',attributes,{'tableName':_0x5e10('0x7'),'paranoid':![],'indexes':[{'name':_0x5e10('0x8'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf15e=['MailTransferReport','report_mail_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define'];(function(_0x25aaaf,_0x1d2c78){var _0x4a8b96=function(_0x1c0eb){while(--_0x1c0eb){_0x25aaaf['push'](_0x25aaaf['shift']());}};_0x4a8b96(++_0x1d2c78);}(_0xf15e,0xb9));var _0xef15=function(_0x2b4b57,_0x558363){_0x2b4b57=_0x2b4b57-0x0;var _0x42dd14=_0xf15e[_0x2b4b57];return _0x42dd14;};'use strict';var _=require(_0xef15('0x0'));var util=require('util');var logger=require(_0xef15('0x1'))(_0xef15('0x2'));var moment=require(_0xef15('0x3'));var BPromise=require(_0xef15('0x4'));var rp=require(_0xef15('0x5'));var fs=require('fs');var path=require(_0xef15('0x6'));var rimraf=require('rimraf');var config=require(_0xef15('0x7'));var attributes=require(_0xef15('0x8'));module[_0xef15('0x9')]=function(_0x177b89,_0x58d919){return _0x177b89[_0xef15('0xa')](_0xef15('0xb'),attributes,{'tableName':_0xef15('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xef15('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index cfea924..2449bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x906c=['error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x906c,0xad));var _0xc906=function(_0x18e80c,_0x198a99){_0x18e80c=_0x18e80c-0x0;var _0x523b82=_0x906c[_0x18e80c];return _0x523b82;};'use strict';var _=require(_0xc906('0x0'));var util=require(_0xc906('0x1'));var moment=require(_0xc906('0x2'));var BPromise=require('bluebird');var rs=require(_0xc906('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc906('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc906('0x5'))(_0xc906('0x6'));var config=require(_0xc906('0x7'));var jayson=require(_0xc906('0x8'));var client=jayson[_0xc906('0x9')][_0xc906('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2797e6,_0x1bb4a4,_0x5466ba){return new BPromise(function(_0x35e286,_0x2d3df5){return client['request'](_0x2797e6,_0x5466ba)[_0xc906('0xb')](function(_0x8efd2d){logger[_0xc906('0xc')](_0xc906('0xd'),_0x1bb4a4,_0xc906('0xe'));logger[_0xc906('0xf')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x1bb4a4,_0xc906('0xe'),JSON['stringify'](_0x8efd2d));if(_0x8efd2d[_0xc906('0x10')]){if(_0x8efd2d[_0xc906('0x10')][_0xc906('0x11')]===0x1f4){logger[_0xc906('0x10')](_0xc906('0xd'),_0x1bb4a4,_0x8efd2d[_0xc906('0x10')]['message']);return _0x2d3df5(_0x8efd2d['error'][_0xc906('0x12')]);}logger['error'](_0xc906('0xd'),_0x1bb4a4,_0x8efd2d[_0xc906('0x10')][_0xc906('0x12')]);return _0x35e286(_0x8efd2d[_0xc906('0x10')][_0xc906('0x12')]);}else{logger[_0xc906('0xc')]('MailTransferReport,\x20%s,\x20%s',_0x1bb4a4,'request\x20sent');_0x35e286(_0x8efd2d[_0xc906('0x13')][_0xc906('0x12')]);}})[_0xc906('0x14')](function(_0x2428fc){logger[_0xc906('0x10')](_0xc906('0xd'),_0x1bb4a4,_0x2428fc);_0x2d3df5(_0x2428fc);});});}
\ No newline at end of file
+var _0xefa2=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailTransferReport,\x20%s,\x20%s','result','catch','lodash','randomstring','ioredis'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0xefa2,0x123));var _0x2efa=function(_0x3fffb3,_0x202e38){_0x3fffb3=_0x3fffb3-0x0;var _0xb587b=_0xefa2[_0x3fffb3];return _0xb587b;};'use strict';var _=require(_0x2efa('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2efa('0x1'));var fs=require('fs');var Redis=require(_0x2efa('0x2'));var db=require(_0x2efa('0x3'))['db'];var utils=require(_0x2efa('0x4'));var logger=require('../../config/logger')(_0x2efa('0x5'));var config=require('../../config/environment');var jayson=require(_0x2efa('0x6'));var client=jayson[_0x2efa('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b278b,_0x56ee81,_0x39e952){return new BPromise(function(_0x18d85f,_0x11b97c){return client[_0x2efa('0x8')](_0x5b278b,_0x39e952)[_0x2efa('0x9')](function(_0x54130b){logger[_0x2efa('0xa')]('MailTransferReport,\x20%s,\x20%s',_0x56ee81,_0x2efa('0xb'));logger[_0x2efa('0xc')](_0x2efa('0xd'),_0x56ee81,_0x2efa('0xb'),JSON[_0x2efa('0xe')](_0x54130b));if(_0x54130b[_0x2efa('0xf')]){if(_0x54130b[_0x2efa('0xf')][_0x2efa('0x10')]===0x1f4){logger[_0x2efa('0xf')]('MailTransferReport,\x20%s,\x20%s',_0x56ee81,_0x54130b[_0x2efa('0xf')][_0x2efa('0x11')]);return _0x11b97c(_0x54130b['error'][_0x2efa('0x11')]);}logger['error'](_0x2efa('0x12'),_0x56ee81,_0x54130b[_0x2efa('0xf')][_0x2efa('0x11')]);return _0x18d85f(_0x54130b[_0x2efa('0xf')][_0x2efa('0x11')]);}else{logger[_0x2efa('0xa')](_0x2efa('0x12'),_0x56ee81,'request\x20sent');_0x18d85f(_0x54130b[_0x2efa('0x13')]['message']);}})[_0x2efa('0x14')](function(_0x25dd59){logger[_0x2efa('0xf')](_0x2efa('0x12'),_0x56ee81,_0x25dd59);_0x11b97c(_0x25dd59);});});}
\ No newline at end of file
index 8614db0..a385f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5566=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x29e2af,_0x15e2b1){var _0x1ea06a=function(_0x34d736){while(--_0x34d736){_0x29e2af['push'](_0x29e2af['shift']());}};_0x1ea06a(++_0x15e2b1);}(_0x5566,0x100));var _0x6556=function(_0x35bf8e,_0x522f58){_0x35bf8e=_0x35bf8e-0x0;var _0x5c67e6=_0x5566[_0x35bf8e];return _0x5c67e6;};'use strict';var multer=require(_0x6556('0x0'));var util=require(_0x6556('0x1'));var path=require(_0x6556('0x2'));var timeout=require(_0x6556('0x3'));var express=require('express');var router=express[_0x6556('0x4')]();var fs_extra=require(_0x6556('0x5'));var auth=require(_0x6556('0x6'));var interaction=require(_0x6556('0x7'));var config=require('../../config/environment');var controller=require(_0x6556('0x8'));router[_0x6556('0x9')]('/',auth[_0x6556('0xa')](),controller[_0x6556('0xb')]);router[_0x6556('0x9')](_0x6556('0xc'),auth[_0x6556('0xa')](),controller[_0x6556('0xd')]);router[_0x6556('0x9')](_0x6556('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x6556('0xf')]('/',auth[_0x6556('0xa')](),controller[_0x6556('0x10')]);router['put'](_0x6556('0xe'),auth[_0x6556('0xa')](),controller[_0x6556('0x11')]);router[_0x6556('0x12')](_0x6556('0xe'),auth[_0x6556('0xa')](),controller['destroy']);module[_0x6556('0x13')]=router;
\ No newline at end of file
+var _0x433b=['/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/interaction/service','./memberReport.controller','get','isAuthenticated','index','/describe'];(function(_0x345ac6,_0x43a5de){var _0x4c6fe6=function(_0x433e61){while(--_0x433e61){_0x345ac6['push'](_0x345ac6['shift']());}};_0x4c6fe6(++_0x43a5de);}(_0x433b,0x185));var _0xb433=function(_0x431807,_0x187385){_0x431807=_0x431807-0x0;var _0x51d062=_0x433b[_0x431807];return _0x51d062;};'use strict';var multer=require('multer');var util=require(_0xb433('0x0'));var path=require(_0xb433('0x1'));var timeout=require(_0xb433('0x2'));var express=require('express');var router=express[_0xb433('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb433('0x4'));var config=require('../../config/environment');var controller=require(_0xb433('0x5'));router[_0xb433('0x6')]('/',auth[_0xb433('0x7')](),controller[_0xb433('0x8')]);router['get'](_0xb433('0x9'),auth[_0xb433('0x7')](),controller['describe']);router[_0xb433('0x6')](_0xb433('0xa'),auth[_0xb433('0x7')](),controller[_0xb433('0xb')]);router[_0xb433('0xc')]('/',auth[_0xb433('0x7')](),controller[_0xb433('0xd')]);router[_0xb433('0xe')]('/:id',auth[_0xb433('0x7')](),controller[_0xb433('0xf')]);router[_0xb433('0x10')](_0xb433('0xa'),auth[_0xb433('0x7')](),controller[_0xb433('0x11')]);module[_0xb433('0x12')]=router;
\ No newline at end of file
index e86ee6d..1e634ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92b3=['DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','enterAt','diff','seconds','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[dial\x20string]','talk:[queue]','INTEGER','sequelize','moment','exports','STRING'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0x92b3,0x10c));var _0x392b=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x92b3[_0xc6be3a];return _0x56a310;};'use strict';var Sequelize=require(_0x392b('0x0'));var moment=require(_0x392b('0x1'));module[_0x392b('0x2')]={'channel':{'type':Sequelize[_0x392b('0x3')]},'membername':{'type':Sequelize[_0x392b('0x3')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x392b('0x3')],'defaultValue':_0x392b('0x4'),'comment':_0x392b('0x5')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x392b('0x6')],'set':function(_0x44b136){var _0x2b8ce8=moment(_0x44b136);var _0x318d42=moment(this['getDataValue'](_0x392b('0x7')));var _0xc84b4a=_0x2b8ce8[_0x392b('0x8')](_0x318d42,_0x392b('0x9'));this['setDataValue']('exitAt',_0x44b136);this[_0x392b('0xa')](_0x392b('0xb'),_0xc84b4a>=0x0?_0xc84b4a:null);}},'data1':{'type':Sequelize[_0x392b('0x3')],'comment':_0x392b('0xc')},'data2':{'type':Sequelize[_0x392b('0x3')],'comment':_0x392b('0xd')},'data3':{'type':Sequelize['STRING'],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0x392b('0x3')],'comment':_0x392b('0xe')},'data5':{'type':Sequelize[_0x392b('0x3')],'comment':_0x392b('0xf')},'role':{'type':Sequelize[_0x392b('0x3')]},'internal':{'type':Sequelize[_0x392b('0x10')]},'uniqueid':{'type':Sequelize[_0x392b('0x3')]}};
\ No newline at end of file
+var _0xae0d=['talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[dial\x20string]','talk:[queue]','INTEGER','sequelize','exports','STRING','DEFAULT\x20PAUSE','DATE','enterAt','diff','seconds','exitAt','setDataValue','duration'];(function(_0x85d5a8,_0x1977be){var _0x20479b=function(_0x125248){while(--_0x125248){_0x85d5a8['push'](_0x85d5a8['shift']());}};_0x20479b(++_0x1977be);}(_0xae0d,0x16c));var _0xdae0=function(_0x56da9c,_0x2af28e){_0x56da9c=_0x56da9c-0x0;var _0x1c11b5=_0xae0d[_0x56da9c];return _0x1c11b5;};'use strict';var Sequelize=require(_0xdae0('0x0'));var moment=require('moment');module[_0xdae0('0x1')]={'channel':{'type':Sequelize[_0xdae0('0x2')]},'membername':{'type':Sequelize[_0xdae0('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xdae0('0x2')],'defaultValue':_0xdae0('0x3'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xdae0('0x4')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x120464){var _0x1fb44e=moment(_0x120464);var _0xa61d7e=moment(this['getDataValue'](_0xdae0('0x5')));var _0x2a5f14=_0x1fb44e[_0xdae0('0x6')](_0xa61d7e,_0xdae0('0x7'));this['setDataValue'](_0xdae0('0x8'),_0x120464);this[_0xdae0('0x9')](_0xdae0('0xa'),_0x2a5f14>=0x0?_0x2a5f14:null);}},'data1':{'type':Sequelize[_0xdae0('0x2')],'comment':_0xdae0('0xb')},'data2':{'type':Sequelize[_0xdae0('0x2')],'comment':'talk:[start]'},'data3':{'type':Sequelize['STRING'],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xdae0('0x2')],'comment':_0xdae0('0xc')},'data5':{'type':Sequelize[_0xdae0('0x2')],'comment':_0xdae0('0xd')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0xdae0('0xe')]},'uniqueid':{'type':Sequelize[_0xdae0('0x2')]}};
\ No newline at end of file
index 89fb3d5..b36c120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x4f8722,_0x47e4ae){var _0x1430eb=function(_0x2c8812){while(--_0x2c8812){_0x4f8722['push'](_0x4f8722['shift']());}};_0x1430eb(++_0x47e4ae);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['MemberReport']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['MemberReport'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['MemberReport'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
+var _0x3e74=['show','params','options','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','offset','count','status','set','Content-Range','apply','save','update','then','destroy','sendStatus','name','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows'];(function(_0x4109e1,_0x57aa37){var _0x2f33c6=function(_0xc98a59){while(--_0xc98a59){_0x4109e1['push'](_0x4109e1['shift']());}};_0x2f33c6(++_0x57aa37);}(_0x3e74,0x175));var _0x43e7=function(_0x2ffd0d,_0x4b0415){_0x2ffd0d=_0x2ffd0d-0x0;var _0x58078c=_0x3e74[_0x2ffd0d];return _0x58078c;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];function respondWithStatusCode(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xcc;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['sendStatus'](_0x2718d3);}return _0xc960ea['status'](_0x2718d3)[_0x43e7('0x15')]();};}function respondWithResult(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0xc8;return function(_0x51b974){if(_0x51b974){return _0x21fdd3['status'](_0x44b0bd)[_0x43e7('0x16')](_0x51b974);}};}function respondWithFilteredResult(_0x14c146,_0x203378){return function(_0x328445){if(_0x328445){var _0x4de324=typeof _0x203378['offset']===_0x43e7('0x17')&&typeof _0x203378[_0x43e7('0x18')]===_0x43e7('0x17');var _0x5d346f=_0x328445['count'];var _0x446986=_0x4de324?0x0:_0x203378[_0x43e7('0x19')];var _0x9037d3=_0x4de324?_0x328445[_0x43e7('0x1a')]:_0x203378[_0x43e7('0x19')]+_0x203378[_0x43e7('0x18')];var _0x619236;if(_0x9037d3>=_0x5d346f){_0x9037d3=_0x5d346f;_0x619236=0xc8;}else{_0x619236=0xce;}_0x14c146[_0x43e7('0x1b')](_0x619236);return _0x14c146[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x446986+'-'+_0x9037d3+'/'+_0x5d346f)[_0x43e7('0x16')](_0x328445);}return null;};}function patchUpdates(_0x177ee1){return function(_0x4b5d64){try{jsonpatch[_0x43e7('0x1e')](_0x4b5d64,_0x177ee1,!![]);}catch(_0x3c6625){return BPromise['reject'](_0x3c6625);}return _0x4b5d64[_0x43e7('0x1f')]();};}function saveUpdates(_0x3e281e,_0x3945bb){return function(_0x28aacc){if(_0x28aacc){return _0x28aacc[_0x43e7('0x20')](_0x3e281e)[_0x43e7('0x21')](function(_0x54a9e7){return _0x54a9e7;});}return null;};}function removeEntity(_0x454359,_0x4eea52){return function(_0x4c9df3){if(_0x4c9df3){return _0x4c9df3[_0x43e7('0x22')]()[_0x43e7('0x21')](function(){_0x454359['status'](0xcc)[_0x43e7('0x15')]();});}};}function handleEntityNotFound(_0x4ca5cf,_0x326dab){return function(_0x5c5e67){if(!_0x5c5e67){_0x4ca5cf[_0x43e7('0x23')](0x194);}return _0x5c5e67;};}function handleError(_0x1b5f50,_0x20888b){_0x20888b=_0x20888b||0x1f4;return function(_0x405f85){logger['error'](_0x405f85['stack']);if(_0x405f85[_0x43e7('0x24')]){delete _0x405f85['name'];}_0x1b5f50[_0x43e7('0x1b')](_0x20888b)[_0x43e7('0x25')](_0x405f85);};}exports[_0x43e7('0x26')]=function(_0xb1fc63,_0x5087d7){var _0x33a1a5={},_0x4690a6={},_0x45b675={'count':0x0,'rows':[]};var _0x50f9f5=_[_0x43e7('0x27')](db[_0x43e7('0x28')][_0x43e7('0x29')],function(_0x31b2a6){return{'name':_0x31b2a6[_0x43e7('0x2a')],'type':_0x31b2a6[_0x43e7('0x2b')][_0x43e7('0x2c')]};});_0x4690a6[_0x43e7('0x2d')]=_[_0x43e7('0x27')](_0x50f9f5,_0x43e7('0x24'));_0x4690a6['query']=_[_0x43e7('0x2e')](_0xb1fc63[_0x43e7('0x2f')]);_0x4690a6[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],_0x4690a6['query']);_0x33a1a5[_0x43e7('0x32')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],qs[_0x43e7('0x33')](_0xb1fc63['query']['fields']));_0x33a1a5['attributes']=_0x33a1a5[_0x43e7('0x32')][_0x43e7('0x34')]?_0x33a1a5[_0x43e7('0x32')]:_0x4690a6[_0x43e7('0x2d')];if(!_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x35')]('nolimit')){_0x33a1a5['limit']=qs['limit'](_0xb1fc63['query']['limit']);_0x33a1a5['offset']=qs['offset'](_0xb1fc63[_0x43e7('0x2f')]['offset']);}_0x33a1a5[_0x43e7('0x36')]=qs[_0x43e7('0x37')](_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x37')]);_0x33a1a5[_0x43e7('0x38')]=qs[_0x43e7('0x30')](_[_0x43e7('0x39')](_0xb1fc63['query'],_0x4690a6['filters']),_0x50f9f5);if(_0xb1fc63['query'][_0x43e7('0x3a')]){_0x33a1a5[_0x43e7('0x38')]=_[_0x43e7('0x3b')](_0x33a1a5[_0x43e7('0x38')],{'$or':_[_0x43e7('0x27')](_0x50f9f5,function(_0x1ed538){if(_0x1ed538[_0x43e7('0x2b')]!==_0x43e7('0x3c')){var _0x55c798={};_0x55c798[_0x1ed538[_0x43e7('0x24')]]={'$like':'%'+_0xb1fc63[_0x43e7('0x2f')]['filter']+'%'};return _0x55c798;}})});}_0x33a1a5=_[_0x43e7('0x3b')]({},_0x33a1a5,_0xb1fc63['options']);var _0x44d8e4={'where':_0x33a1a5[_0x43e7('0x38')]};return db[_0x43e7('0x28')][_0x43e7('0x1a')](_0x44d8e4)[_0x43e7('0x21')](function(_0x234d8f){_0x45b675['count']=_0x234d8f;if(_0xb1fc63['query'][_0x43e7('0x3d')]){_0x33a1a5[_0x43e7('0x3e')]=[{'all':!![]}];}return db[_0x43e7('0x28')][_0x43e7('0x3f')](_0x33a1a5);})[_0x43e7('0x21')](function(_0x4a4a85){_0x45b675[_0x43e7('0x40')]=_0x4a4a85;return _0x45b675;})[_0x43e7('0x21')](respondWithFilteredResult(_0x5087d7,_0x33a1a5))['catch'](handleError(_0x5087d7,null));};exports[_0x43e7('0x41')]=function(_0x51a69c,_0x2ad8ef){var _0x504101={'raw':!![],'where':{'id':_0x51a69c[_0x43e7('0x42')]['id']}},_0x3d81ae={};_0x3d81ae[_0x43e7('0x2d')]=_[_0x43e7('0x2e')](db['MemberReport']['rawAttributes']);_0x3d81ae[_0x43e7('0x2f')]=_[_0x43e7('0x2e')](_0x51a69c[_0x43e7('0x2f')]);_0x3d81ae[_0x43e7('0x30')]=_['intersection'](_0x3d81ae['model'],_0x3d81ae['query']);_0x504101[_0x43e7('0x32')]=_['intersection'](_0x3d81ae[_0x43e7('0x2d')],qs['fields'](_0x51a69c['query'][_0x43e7('0x33')]));_0x504101['attributes']=_0x504101[_0x43e7('0x32')][_0x43e7('0x34')]?_0x504101[_0x43e7('0x32')]:_0x3d81ae[_0x43e7('0x2d')];if(_0x51a69c['query'][_0x43e7('0x3d')]){_0x504101[_0x43e7('0x3e')]=[{'all':!![]}];}_0x504101=_[_0x43e7('0x3b')]({},_0x504101,_0x51a69c[_0x43e7('0x43')]);return db[_0x43e7('0x28')][_0x43e7('0x44')](_0x504101)['then'](handleEntityNotFound(_0x2ad8ef,null))['then'](respondWithResult(_0x2ad8ef,null))[_0x43e7('0x45')](handleError(_0x2ad8ef,null));};exports[_0x43e7('0x46')]=function(_0x212841,_0x4c00a8){return db['MemberReport']['create'](_0x212841[_0x43e7('0x47')],{})[_0x43e7('0x21')](respondWithResult(_0x4c00a8,0xc9))['catch'](handleError(_0x4c00a8,null));};exports[_0x43e7('0x20')]=function(_0x47686e,_0x3c96fe){if(_0x47686e['body']['id']){delete _0x47686e['body']['id'];}return db['MemberReport']['find']({'where':{'id':_0x47686e[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x3c96fe,null))['then'](saveUpdates(_0x47686e[_0x43e7('0x47')],null))[_0x43e7('0x21')](respondWithResult(_0x3c96fe,null))[_0x43e7('0x45')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x22')]=function(_0x4a0ce5,_0x2718d5){return db['MemberReport']['find']({'where':{'id':_0x4a0ce5[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x2718d5,null))[_0x43e7('0x21')](removeEntity(_0x2718d5,null))[_0x43e7('0x45')](handleError(_0x2718d5,null));};exports[_0x43e7('0x48')]=function(_0x2351cf,_0x1cd87c){return db[_0x43e7('0x28')][_0x43e7('0x48')]()[_0x43e7('0x21')](respondWithResult(_0x1cd87c,null))['catch'](handleError(_0x1cd87c,null));};
\ No newline at end of file
index f8aa50d..d712c10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e1c=['define','report_member','membername_interface','membername','interface','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x51007f,_0x5988ec){var _0x219ba6=function(_0x43d930){while(--_0x43d930){_0x51007f['push'](_0x51007f['shift']());}};_0x219ba6(++_0x5988ec);}(_0x0e1c,0x140));var _0xc0e1=function(_0x504a31,_0x202503){_0x504a31=_0x504a31-0x0;var _0x505432=_0x0e1c[_0x504a31];return _0x505432;};'use strict';var _=require(_0xc0e1('0x0'));var util=require(_0xc0e1('0x1'));var logger=require(_0xc0e1('0x2'))('api');var moment=require(_0xc0e1('0x3'));var BPromise=require(_0xc0e1('0x4'));var rp=require(_0xc0e1('0x5'));var fs=require('fs');var path=require(_0xc0e1('0x6'));var rimraf=require(_0xc0e1('0x7'));var config=require(_0xc0e1('0x8'));var attributes=require('./memberReport.attributes');module[_0xc0e1('0x9')]=function(_0x538266,_0xcfdb23){return _0x538266[_0xc0e1('0xa')]('MemberReport',attributes,{'tableName':_0xc0e1('0xb'),'paranoid':![],'indexes':[{'name':_0xc0e1('0xc'),'fields':[_0xc0e1('0xd'),_0xc0e1('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9de8=['MemberReport','membername_interface','membername','interface','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','exports'];(function(_0x41c580,_0x1784b1){var _0x55ae0f=function(_0x33f72a){while(--_0x33f72a){_0x41c580['push'](_0x41c580['shift']());}};_0x55ae0f(++_0x1784b1);}(_0x9de8,0x88));var _0x89de=function(_0x5b0a81,_0x1000f3){_0x5b0a81=_0x5b0a81-0x0;var _0x127e6e=_0x9de8[_0x5b0a81];return _0x127e6e;};'use strict';var _=require(_0x89de('0x0'));var util=require('util');var logger=require(_0x89de('0x1'))(_0x89de('0x2'));var moment=require('moment');var BPromise=require(_0x89de('0x3'));var rp=require(_0x89de('0x4'));var fs=require('fs');var path=require(_0x89de('0x5'));var rimraf=require(_0x89de('0x6'));var config=require('../../config/environment');var attributes=require('./memberReport.attributes');module[_0x89de('0x7')]=function(_0x5247ae,_0x510e1a){return _0x5247ae['define'](_0x89de('0x8'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x89de('0x9'),'fields':[_0x89de('0xa'),_0x89de('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 870c448..18a1578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0a1=['attributes','limit','map','include','model','info','GetMemberReport','stringify','CreateMemberReport','MemberReport','create','body','UpdateMemberReport','update','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','debug','MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','MemberReport,\x20%s,\x20%s','message','result','catch','options','raw','where'];(function(_0x28611e,_0x586726){var _0x530f69=function(_0x407906){while(--_0x407906){_0x28611e['push'](_0x28611e['shift']());}};_0x530f69(++_0x586726);}(_0xa0a1,0x15b));var _0x1a0a=function(_0x14a8c4,_0x3ff392){_0x14a8c4=_0x14a8c4-0x0;var _0x3e3a53=_0xa0a1[_0x14a8c4];return _0x3e3a53;};'use strict';var _=require(_0x1a0a('0x0'));var util=require('util');var moment=require(_0x1a0a('0x1'));var BPromise=require(_0x1a0a('0x2'));var rs=require(_0x1a0a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1a0a('0x4'));var logger=require(_0x1a0a('0x5'))('rpc');var config=require(_0x1a0a('0x6'));var jayson=require(_0x1a0a('0x7'));var client=jayson['client'][_0x1a0a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe59f97,_0x3fe29f,_0x245f3d){return new BPromise(function(_0x9da67c,_0x48d604){return client[_0x1a0a('0x9')](_0xe59f97,_0x245f3d)[_0x1a0a('0xa')](function(_0x8165a1){logger['info']('MemberReport,\x20%s,\x20%s',_0x3fe29f,'request\x20sent');logger[_0x1a0a('0xb')](_0x1a0a('0xc'),_0x3fe29f,_0x1a0a('0xd'),JSON['stringify'](_0x8165a1));if(_0x8165a1[_0x1a0a('0xe')]){if(_0x8165a1['error'][_0x1a0a('0xf')]===0x1f4){logger[_0x1a0a('0xe')](_0x1a0a('0x10'),_0x3fe29f,_0x8165a1[_0x1a0a('0xe')][_0x1a0a('0x11')]);return _0x48d604(_0x8165a1[_0x1a0a('0xe')][_0x1a0a('0x11')]);}logger['error'](_0x1a0a('0x10'),_0x3fe29f,_0x8165a1[_0x1a0a('0xe')][_0x1a0a('0x11')]);return _0x9da67c(_0x8165a1[_0x1a0a('0xe')][_0x1a0a('0x11')]);}else{logger['info'](_0x1a0a('0x10'),_0x3fe29f,_0x1a0a('0xd'));_0x9da67c(_0x8165a1[_0x1a0a('0x12')]['message']);}})[_0x1a0a('0x13')](function(_0x57c942){logger[_0x1a0a('0xe')]('MemberReport,\x20%s,\x20%s',_0x3fe29f,_0x57c942);_0x48d604(_0x57c942);});});}exports['GetMemberReport']=function(_0x3a988c){var _0x2a66b8=this;return new Promise(function(_0x307fdc,_0x2ee613){return db['MemberReport']['findAll']({'raw':_0x3a988c[_0x1a0a('0x14')]?_0x3a988c[_0x1a0a('0x14')][_0x1a0a('0x15')]===undefined?!![]:![]:!![],'where':_0x3a988c['options']?_0x3a988c[_0x1a0a('0x14')][_0x1a0a('0x16')]||null:null,'attributes':_0x3a988c['options']?_0x3a988c[_0x1a0a('0x14')][_0x1a0a('0x17')]||null:null,'limit':_0x3a988c[_0x1a0a('0x14')]?_0x3a988c['options'][_0x1a0a('0x18')]||null:null,'include':_0x3a988c[_0x1a0a('0x14')]?_0x3a988c[_0x1a0a('0x14')]['include']?_[_0x1a0a('0x19')](_0x3a988c['options'][_0x1a0a('0x1a')],function(_0x2d426d){return{'model':db[_0x2d426d[_0x1a0a('0x1b')]],'as':_0x2d426d['as'],'attributes':_0x2d426d[_0x1a0a('0x17')],'include':_0x2d426d[_0x1a0a('0x1a')]?_['map'](_0x2d426d[_0x1a0a('0x1a')],function(_0x8e4151){return{'model':db[_0x8e4151['model']],'as':_0x8e4151['as'],'attributes':_0x8e4151['attributes'],'include':_0x8e4151[_0x1a0a('0x1a')]?_[_0x1a0a('0x19')](_0x8e4151[_0x1a0a('0x1a')],function(_0x365ab5){return{'model':db[_0x365ab5[_0x1a0a('0x1b')]],'as':_0x365ab5['as'],'attributes':_0x365ab5[_0x1a0a('0x17')]};}):[]};}):[]};}):[]:[]})[_0x1a0a('0xa')](function(_0x18e676){logger[_0x1a0a('0x1c')](_0x1a0a('0x1d'),_0x3a988c);logger[_0x1a0a('0xb')](_0x1a0a('0x1d'),_0x3a988c,JSON[_0x1a0a('0x1e')](_0x18e676));_0x307fdc(_0x18e676);})[_0x1a0a('0x13')](function(_0x396c01){logger[_0x1a0a('0xe')](_0x1a0a('0x1d'),_0x396c01['message'],_0x3a988c);_0x2ee613(_0x2a66b8[_0x1a0a('0xe')](0x1f4,_0x396c01[_0x1a0a('0x11')]));});});};exports[_0x1a0a('0x1f')]=function(_0x39fb79){var _0x133bb8=this;return new Promise(function(_0x28ad86,_0x236e78){return db[_0x1a0a('0x20')][_0x1a0a('0x21')](_0x39fb79[_0x1a0a('0x22')],{'raw':_0x39fb79['options']?_0x39fb79[_0x1a0a('0x14')][_0x1a0a('0x15')]===undefined?!![]:![]:!![]})['then'](function(_0x14cdbf){logger['info']('CreateMemberReport',_0x39fb79);logger[_0x1a0a('0xb')](_0x1a0a('0x1f'),_0x39fb79,JSON['stringify'](_0x14cdbf));_0x28ad86(_0x14cdbf);})[_0x1a0a('0x13')](function(_0xd4d066){logger[_0x1a0a('0xe')]('CreateMemberReport',_0xd4d066[_0x1a0a('0x11')],_0x39fb79);_0x236e78(_0x133bb8[_0x1a0a('0xe')](0x1f4,_0xd4d066['message']));});});};exports[_0x1a0a('0x23')]=function(_0x20084d){var _0x5e8da2=this;return new Promise(function(_0x87d28e,_0x2a0fc5){return db[_0x1a0a('0x20')][_0x1a0a('0x24')](_0x20084d['body'],{'raw':_0x20084d[_0x1a0a('0x14')]?_0x20084d[_0x1a0a('0x14')][_0x1a0a('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20084d[_0x1a0a('0x14')]?_0x20084d[_0x1a0a('0x14')][_0x1a0a('0x16')]||null:null,'attributes':_0x20084d[_0x1a0a('0x14')]?_0x20084d[_0x1a0a('0x14')][_0x1a0a('0x17')]||null:null,'limit':_0x20084d['options']?_0x20084d['options']['limit']||null:null})['then'](function(_0x3be113){logger['info'](_0x1a0a('0x23'),_0x20084d);logger[_0x1a0a('0xb')]('UpdateMemberReport',_0x20084d,JSON['stringify'](_0x3be113));_0x87d28e(_0x3be113);})[_0x1a0a('0x13')](function(_0x4156cd){logger[_0x1a0a('0xe')](_0x1a0a('0x23'),_0x4156cd['message'],_0x20084d);_0x2a0fc5(_0x5e8da2[_0x1a0a('0xe')](0x1f4,_0x4156cd['message']));});});};
\ No newline at end of file
+var _0x7c1a=['create','body','UpdateMemberReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','MemberReport','findAll','options','raw','where','attributes','limit','map','include','model','GetMemberReport','debug','stringify','CreateMemberReport'];(function(_0x428f39,_0x352a3d){var _0x20135a=function(_0xb9aef8){while(--_0xb9aef8){_0x428f39['push'](_0x428f39['shift']());}};_0x20135a(++_0x352a3d);}(_0x7c1a,0x159));var _0xa7c1=function(_0x24f59c,_0x151e3c){_0x24f59c=_0x24f59c-0x0;var _0x53990e=_0x7c1a[_0x24f59c];return _0x53990e;};'use strict';var _=require(_0xa7c1('0x0'));var util=require(_0xa7c1('0x1'));var moment=require(_0xa7c1('0x2'));var BPromise=require(_0xa7c1('0x3'));var rs=require(_0xa7c1('0x4'));var fs=require('fs');var Redis=require(_0xa7c1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa7c1('0x6'));var logger=require(_0xa7c1('0x7'))('rpc');var config=require(_0xa7c1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa7c1('0x9')][_0xa7c1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3dcfe3,_0x300db9,_0x4fc287){return new BPromise(function(_0x4f97c0,_0x117323){return client[_0xa7c1('0xb')](_0x3dcfe3,_0x4fc287)[_0xa7c1('0xc')](function(_0x5bc155){logger[_0xa7c1('0xd')](_0xa7c1('0xe'),_0x300db9,_0xa7c1('0xf'));logger['debug'](_0xa7c1('0x10'),_0x300db9,_0xa7c1('0xf'),JSON['stringify'](_0x5bc155));if(_0x5bc155[_0xa7c1('0x11')]){if(_0x5bc155[_0xa7c1('0x11')]['code']===0x1f4){logger[_0xa7c1('0x11')](_0xa7c1('0xe'),_0x300db9,_0x5bc155[_0xa7c1('0x11')][_0xa7c1('0x12')]);return _0x117323(_0x5bc155[_0xa7c1('0x11')][_0xa7c1('0x12')]);}logger[_0xa7c1('0x11')](_0xa7c1('0xe'),_0x300db9,_0x5bc155[_0xa7c1('0x11')][_0xa7c1('0x12')]);return _0x4f97c0(_0x5bc155[_0xa7c1('0x11')][_0xa7c1('0x12')]);}else{logger[_0xa7c1('0xd')]('MemberReport,\x20%s,\x20%s',_0x300db9,_0xa7c1('0xf'));_0x4f97c0(_0x5bc155[_0xa7c1('0x13')][_0xa7c1('0x12')]);}})[_0xa7c1('0x14')](function(_0x84244a){logger['error'](_0xa7c1('0xe'),_0x300db9,_0x84244a);_0x117323(_0x84244a);});});}exports['GetMemberReport']=function(_0x440251){var _0x337db4=this;return new Promise(function(_0x5dc8e3,_0x2e23f8){return db[_0xa7c1('0x15')][_0xa7c1('0x16')]({'raw':_0x440251['options']?_0x440251[_0xa7c1('0x17')][_0xa7c1('0x18')]===undefined?!![]:![]:!![],'where':_0x440251[_0xa7c1('0x17')]?_0x440251[_0xa7c1('0x17')][_0xa7c1('0x19')]||null:null,'attributes':_0x440251[_0xa7c1('0x17')]?_0x440251[_0xa7c1('0x17')][_0xa7c1('0x1a')]||null:null,'limit':_0x440251[_0xa7c1('0x17')]?_0x440251['options'][_0xa7c1('0x1b')]||null:null,'include':_0x440251[_0xa7c1('0x17')]?_0x440251[_0xa7c1('0x17')]['include']?_[_0xa7c1('0x1c')](_0x440251[_0xa7c1('0x17')][_0xa7c1('0x1d')],function(_0x2dc42b){return{'model':db[_0x2dc42b[_0xa7c1('0x1e')]],'as':_0x2dc42b['as'],'attributes':_0x2dc42b[_0xa7c1('0x1a')],'include':_0x2dc42b[_0xa7c1('0x1d')]?_['map'](_0x2dc42b['include'],function(_0x48280a){return{'model':db[_0x48280a[_0xa7c1('0x1e')]],'as':_0x48280a['as'],'attributes':_0x48280a[_0xa7c1('0x1a')],'include':_0x48280a[_0xa7c1('0x1d')]?_[_0xa7c1('0x1c')](_0x48280a[_0xa7c1('0x1d')],function(_0x5d62cb){return{'model':db[_0x5d62cb['model']],'as':_0x5d62cb['as'],'attributes':_0x5d62cb[_0xa7c1('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa7c1('0xc')](function(_0xc60f7c){logger['info'](_0xa7c1('0x1f'),_0x440251);logger[_0xa7c1('0x20')](_0xa7c1('0x1f'),_0x440251,JSON[_0xa7c1('0x21')](_0xc60f7c));_0x5dc8e3(_0xc60f7c);})[_0xa7c1('0x14')](function(_0x1cc05c){logger[_0xa7c1('0x11')](_0xa7c1('0x1f'),_0x1cc05c[_0xa7c1('0x12')],_0x440251);_0x2e23f8(_0x337db4[_0xa7c1('0x11')](0x1f4,_0x1cc05c['message']));});});};exports[_0xa7c1('0x22')]=function(_0x924b93){var _0x2a5d5c=this;return new Promise(function(_0x40ad2b,_0x216fd5){return db[_0xa7c1('0x15')][_0xa7c1('0x23')](_0x924b93[_0xa7c1('0x24')],{'raw':_0x924b93[_0xa7c1('0x17')]?_0x924b93['options'][_0xa7c1('0x18')]===undefined?!![]:![]:!![]})[_0xa7c1('0xc')](function(_0x6533b2){logger[_0xa7c1('0xd')]('CreateMemberReport',_0x924b93);logger['debug'](_0xa7c1('0x22'),_0x924b93,JSON[_0xa7c1('0x21')](_0x6533b2));_0x40ad2b(_0x6533b2);})[_0xa7c1('0x14')](function(_0x57b905){logger['error'](_0xa7c1('0x22'),_0x57b905[_0xa7c1('0x12')],_0x924b93);_0x216fd5(_0x2a5d5c['error'](0x1f4,_0x57b905[_0xa7c1('0x12')]));});});};exports['UpdateMemberReport']=function(_0x2c1569){var _0x55b3ea=this;return new Promise(function(_0x46bdb1,_0x44e732){return db['MemberReport']['update'](_0x2c1569[_0xa7c1('0x24')],{'raw':_0x2c1569[_0xa7c1('0x17')]?_0x2c1569[_0xa7c1('0x17')][_0xa7c1('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c1569[_0xa7c1('0x17')]?_0x2c1569[_0xa7c1('0x17')][_0xa7c1('0x19')]||null:null,'attributes':_0x2c1569['options']?_0x2c1569[_0xa7c1('0x17')][_0xa7c1('0x1a')]||null:null,'limit':_0x2c1569[_0xa7c1('0x17')]?_0x2c1569[_0xa7c1('0x17')][_0xa7c1('0x1b')]||null:null})[_0xa7c1('0xc')](function(_0x4b88d4){logger[_0xa7c1('0xd')](_0xa7c1('0x25'),_0x2c1569);logger[_0xa7c1('0x20')](_0xa7c1('0x25'),_0x2c1569,JSON[_0xa7c1('0x21')](_0x4b88d4));_0x46bdb1(_0x4b88d4);})[_0xa7c1('0x14')](function(_0x3b6f7f){logger[_0xa7c1('0x11')]('UpdateMemberReport',_0x3b6f7f[_0xa7c1('0x12')],_0x2c1569);_0x44e732(_0x55b3ea[_0xa7c1('0x11')](0x1f4,_0x3b6f7f[_0xa7c1('0x12')]));});});};
\ No newline at end of file
index 3c5ee0a..df759e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea7e=['./migration.controller','get','index','exports','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xea7e,0x143));var _0xeea7=function(_0x12ad4e,_0x2db848){_0x12ad4e=_0x12ad4e-0x0;var _0xa23be7=_0xea7e[_0x12ad4e];return _0xa23be7;};'use strict';var multer=require('multer');var util=require(_0xeea7('0x0'));var path=require(_0xeea7('0x1'));var timeout=require('connect-timeout');var express=require(_0xeea7('0x2'));var router=express[_0xeea7('0x3')]();var fs_extra=require(_0xeea7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xeea7('0x5'));var config=require(_0xeea7('0x6'));var controller=require(_0xeea7('0x7'));router[_0xeea7('0x8')]('/',controller[_0xeea7('0x9')]);module[_0xeea7('0xa')]=router;
\ No newline at end of file
+var _0x3568=['../../config/environment','./migration.controller','index','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x5e4acd,_0x5454d6){var _0x4ef74f=function(_0x4b4c9e){while(--_0x4b4c9e){_0x5e4acd['push'](_0x5e4acd['shift']());}};_0x4ef74f(++_0x5454d6);}(_0x3568,0xc2));var _0x8356=function(_0xfde480,_0xd95748){_0xfde480=_0xfde480-0x0;var _0xbe99d4=_0x3568[_0xfde480];return _0xbe99d4;};'use strict';var multer=require(_0x8356('0x0'));var util=require(_0x8356('0x1'));var path=require('path');var timeout=require(_0x8356('0x2'));var express=require(_0x8356('0x3'));var router=express['Router']();var fs_extra=require(_0x8356('0x4'));var auth=require(_0x8356('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8356('0x6'));var controller=require(_0x8356('0x7'));router['get']('/',controller[_0x8356('0x8')]);module[_0x8356('0x9')]=router;
\ No newline at end of file
index 250602b..1cc4de0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1445=['STRING','version','sequelize','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x1445,0x176));var _0x5144=function(_0x2fd12e,_0x2cd58b){_0x2fd12e=_0x2fd12e-0x0;var _0x3f9968=_0x1445[_0x2fd12e];return _0x3f9968;};'use strict';var Sequelize=require(_0x5144('0x0'));module[_0x5144('0x1')]={'version':{'type':Sequelize[_0x5144('0x2')],'unique':_0x5144('0x3')}};
\ No newline at end of file
+var _0x7bc5=['version','exports','STRING'];(function(_0x64a3b0,_0x3d9dfb){var _0x5af140=function(_0x1cc6e3){while(--_0x1cc6e3){_0x64a3b0['push'](_0x64a3b0['shift']());}};_0x5af140(++_0x3d9dfb);}(_0x7bc5,0x121));var _0x57bc=function(_0x12b683,_0x124186){_0x12b683=_0x12b683-0x0;var _0xfb150b=_0x7bc5[_0x12b683];return _0xfb150b;};'use strict';var Sequelize=require('sequelize');module[_0x57bc('0x0')]={'version':{'type':Sequelize[_0x57bc('0x1')],'unique':_0x57bc('0x2')}};
\ No newline at end of file
index 13b86e9..6bf2ec2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b4c=['order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','offset','count','set','apply','reject','update','then','destroy','error','stack','index','map','Migration','rawAttributes','fieldName','type','key','model','keys','filters','fields','query','attributes','length','hasOwnProperty','nolimit','limit'];(function(_0x5cc30e,_0x2646b6){var _0x208c6d=function(_0x1abc53){while(--_0x1abc53){_0x5cc30e['push'](_0x5cc30e['shift']());}};_0x208c6d(++_0x2646b6);}(_0x8b4c,0x1b7));var _0xc8b4=function(_0x39832a,_0x594548){_0x39832a=_0x39832a-0x0;var _0x4aec05=_0x8b4c[_0x39832a];return _0x4aec05;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc8b4('0x0'));var jsonpatch=require(_0xc8b4('0x1'));var rp=require(_0xc8b4('0x2'));var moment=require(_0xc8b4('0x3'));var BPromise=require(_0xc8b4('0x4'));var Mustache=require(_0xc8b4('0x5'));var util=require(_0xc8b4('0x6'));var path=require(_0xc8b4('0x7'));var sox=require('sox');var csv=require(_0xc8b4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc8b4('0x9'));var _=require(_0xc8b4('0xa'));var squel=require(_0xc8b4('0xb'));var crypto=require(_0xc8b4('0xc'));var jsforce=require(_0xc8b4('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc8b4('0x8'));var querystring=require(_0xc8b4('0xe'));var Papa=require(_0xc8b4('0xf'));var Redis=require(_0xc8b4('0x10'));var authService=require(_0xc8b4('0x11'));var qs=require(_0xc8b4('0x12'));var as=require(_0xc8b4('0x13'));var hardwareService=require(_0xc8b4('0x14'));var logger=require(_0xc8b4('0x15'))(_0xc8b4('0x16'));var utils=require(_0xc8b4('0x17'));var config=require(_0xc8b4('0x18'));var licenseUtil=require(_0xc8b4('0x19'));var db=require(_0xc8b4('0x1a'))['db'];function respondWithStatusCode(_0x5714a4,_0x43ca44){_0x43ca44=_0x43ca44||0xcc;return function(_0x45735d){if(_0x45735d){return _0x5714a4['sendStatus'](_0x43ca44);}return _0x5714a4[_0xc8b4('0x1b')](_0x43ca44)[_0xc8b4('0x1c')]();};}function respondWithResult(_0x2ac0bc,_0x94f445){_0x94f445=_0x94f445||0xc8;return function(_0x1454c9){if(_0x1454c9){return _0x2ac0bc[_0xc8b4('0x1b')](_0x94f445)[_0xc8b4('0x1d')](_0x1454c9);}};}function respondWithFilteredResult(_0x208395,_0x33e53b){return function(_0x38aed8){if(_0x38aed8){var _0x5b819e=typeof _0x33e53b['offset']===_0xc8b4('0x1e')&&typeof _0x33e53b['limit']===_0xc8b4('0x1e');var _0x4d9ee5=_0x38aed8['count'];var _0x56514a=_0x5b819e?0x0:_0x33e53b[_0xc8b4('0x1f')];var _0x5f32e4=_0x5b819e?_0x38aed8[_0xc8b4('0x20')]:_0x33e53b[_0xc8b4('0x1f')]+_0x33e53b['limit'];var _0x54da43;if(_0x5f32e4>=_0x4d9ee5){_0x5f32e4=_0x4d9ee5;_0x54da43=0xc8;}else{_0x54da43=0xce;}_0x208395[_0xc8b4('0x1b')](_0x54da43);return _0x208395[_0xc8b4('0x21')]('Content-Range',_0x56514a+'-'+_0x5f32e4+'/'+_0x4d9ee5)[_0xc8b4('0x1d')](_0x38aed8);}return null;};}function patchUpdates(_0x30bfce){return function(_0x56970e){try{jsonpatch[_0xc8b4('0x22')](_0x56970e,_0x30bfce,!![]);}catch(_0x403a4f){return BPromise[_0xc8b4('0x23')](_0x403a4f);}return _0x56970e['save']();};}function saveUpdates(_0x23284e,_0x3102a6){return function(_0x2ab553){if(_0x2ab553){return _0x2ab553[_0xc8b4('0x24')](_0x23284e)[_0xc8b4('0x25')](function(_0x1459a8){return _0x1459a8;});}return null;};}function removeEntity(_0x543e5b,_0x1b053a){return function(_0x318100){if(_0x318100){return _0x318100[_0xc8b4('0x26')]()[_0xc8b4('0x25')](function(){_0x543e5b['status'](0xcc)[_0xc8b4('0x1c')]();});}};}function handleEntityNotFound(_0x122e25,_0x10cc10){return function(_0x213c98){if(!_0x213c98){_0x122e25['sendStatus'](0x194);}return _0x213c98;};}function handleError(_0x2b1c30,_0x565d97){_0x565d97=_0x565d97||0x1f4;return function(_0x8b3c34){logger[_0xc8b4('0x27')](_0x8b3c34[_0xc8b4('0x28')]);if(_0x8b3c34['name']){delete _0x8b3c34['name'];}_0x2b1c30[_0xc8b4('0x1b')](_0x565d97)['send'](_0x8b3c34);};}exports[_0xc8b4('0x29')]=function(_0x129d29,_0x3b2cb1){var _0x102357={},_0x15383b={},_0x10b682={'count':0x0,'rows':[]};var _0x17a099=_[_0xc8b4('0x2a')](db[_0xc8b4('0x2b')][_0xc8b4('0x2c')],function(_0x52547a){return{'name':_0x52547a[_0xc8b4('0x2d')],'type':_0x52547a[_0xc8b4('0x2e')][_0xc8b4('0x2f')]};});_0x15383b[_0xc8b4('0x30')]=_['map'](_0x17a099,'name');_0x15383b['query']=_[_0xc8b4('0x31')](_0x129d29['query']);_0x15383b[_0xc8b4('0x32')]=_['intersection'](_0x15383b[_0xc8b4('0x30')],_0x15383b['query']);_0x102357['attributes']=_['intersection'](_0x15383b['model'],qs[_0xc8b4('0x33')](_0x129d29[_0xc8b4('0x34')][_0xc8b4('0x33')]));_0x102357[_0xc8b4('0x35')]=_0x102357[_0xc8b4('0x35')][_0xc8b4('0x36')]?_0x102357[_0xc8b4('0x35')]:_0x15383b[_0xc8b4('0x30')];if(!_0x129d29[_0xc8b4('0x34')][_0xc8b4('0x37')](_0xc8b4('0x38'))){_0x102357[_0xc8b4('0x39')]=qs[_0xc8b4('0x39')](_0x129d29[_0xc8b4('0x34')][_0xc8b4('0x39')]);_0x102357[_0xc8b4('0x1f')]=qs[_0xc8b4('0x1f')](_0x129d29['query'][_0xc8b4('0x1f')]);}_0x102357[_0xc8b4('0x3a')]=qs[_0xc8b4('0x3b')](_0x129d29[_0xc8b4('0x34')][_0xc8b4('0x3b')]);_0x102357[_0xc8b4('0x3c')]=qs[_0xc8b4('0x32')](_[_0xc8b4('0x3d')](_0x129d29[_0xc8b4('0x34')],_0x15383b[_0xc8b4('0x32')]),_0x17a099);if(_0x129d29[_0xc8b4('0x34')]['filter']){_0x102357[_0xc8b4('0x3c')]=_[_0xc8b4('0x3e')](_0x102357[_0xc8b4('0x3c')],{'$or':_[_0xc8b4('0x2a')](_0x17a099,function(_0x322d75){if(_0x322d75[_0xc8b4('0x2e')]!==_0xc8b4('0x3f')){var _0x486cb0={};_0x486cb0[_0x322d75['name']]={'$like':'%'+_0x129d29['query'][_0xc8b4('0x40')]+'%'};return _0x486cb0;}})});}_0x102357=_[_0xc8b4('0x3e')]({},_0x102357,_0x129d29[_0xc8b4('0x41')]);var _0x2cd9e0={'where':_0x102357['where']};return db[_0xc8b4('0x2b')][_0xc8b4('0x20')](_0x2cd9e0)[_0xc8b4('0x25')](function(_0x23b4dd){_0x10b682[_0xc8b4('0x20')]=_0x23b4dd;if(_0x129d29[_0xc8b4('0x34')][_0xc8b4('0x42')]){_0x102357[_0xc8b4('0x43')]=[{'all':!![]}];}return db[_0xc8b4('0x2b')][_0xc8b4('0x44')](_0x102357);})[_0xc8b4('0x25')](function(_0x36137c){_0x10b682[_0xc8b4('0x45')]=_0x36137c;return _0x10b682;})[_0xc8b4('0x25')](respondWithFilteredResult(_0x3b2cb1,_0x102357))[_0xc8b4('0x46')](handleError(_0x3b2cb1,null));};
\ No newline at end of file
+var _0xbac8=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','error','stack','name','send','map','Migration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbac8,0x8e));var _0x8bac=function(_0x55747a,_0x2d49a6){_0x55747a=_0x55747a-0x0;var _0x567ba0=_0xbac8[_0x55747a];return _0x567ba0;};'use strict';var emlformat=require(_0x8bac('0x0'));var rimraf=require(_0x8bac('0x1'));var zipdir=require(_0x8bac('0x2'));var jsonpatch=require(_0x8bac('0x3'));var rp=require('request-promise');var moment=require(_0x8bac('0x4'));var BPromise=require(_0x8bac('0x5'));var Mustache=require(_0x8bac('0x6'));var util=require(_0x8bac('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8bac('0x8'));var fs=require('fs');var fs_extra=require(_0x8bac('0x9'));var _=require(_0x8bac('0xa'));var squel=require(_0x8bac('0xb'));var crypto=require(_0x8bac('0xc'));var jsforce=require(_0x8bac('0xd'));var deskjs=require(_0x8bac('0xe'));var toCsv=require(_0x8bac('0xf'));var querystring=require(_0x8bac('0x10'));var Papa=require(_0x8bac('0x11'));var Redis=require(_0x8bac('0x12'));var authService=require(_0x8bac('0x13'));var qs=require(_0x8bac('0x14'));var as=require(_0x8bac('0x15'));var hardwareService=require(_0x8bac('0x16'));var logger=require(_0x8bac('0x17'))(_0x8bac('0x18'));var utils=require(_0x8bac('0x19'));var config=require(_0x8bac('0x1a'));var licenseUtil=require(_0x8bac('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0123,_0x376f56){_0x376f56=_0x376f56||0xcc;return function(_0x156ddf){if(_0x156ddf){return _0x2a0123[_0x8bac('0x1c')](_0x376f56);}return _0x2a0123['status'](_0x376f56)[_0x8bac('0x1d')]();};}function respondWithResult(_0xd7cd75,_0x523b2d){_0x523b2d=_0x523b2d||0xc8;return function(_0x3787f0){if(_0x3787f0){return _0xd7cd75[_0x8bac('0x1e')](_0x523b2d)[_0x8bac('0x1f')](_0x3787f0);}};}function respondWithFilteredResult(_0x4e78ef,_0x44c799){return function(_0x16479f){if(_0x16479f){var _0x575aac=typeof _0x44c799[_0x8bac('0x20')]===_0x8bac('0x21')&&typeof _0x44c799[_0x8bac('0x22')]==='undefined';var _0x1709d5=_0x16479f[_0x8bac('0x23')];var _0x125af0=_0x575aac?0x0:_0x44c799[_0x8bac('0x20')];var _0x3cd8e4=_0x575aac?_0x16479f[_0x8bac('0x23')]:_0x44c799[_0x8bac('0x20')]+_0x44c799[_0x8bac('0x22')];var _0x1830f5;if(_0x3cd8e4>=_0x1709d5){_0x3cd8e4=_0x1709d5;_0x1830f5=0xc8;}else{_0x1830f5=0xce;}_0x4e78ef[_0x8bac('0x1e')](_0x1830f5);return _0x4e78ef[_0x8bac('0x24')](_0x8bac('0x25'),_0x125af0+'-'+_0x3cd8e4+'/'+_0x1709d5)[_0x8bac('0x1f')](_0x16479f);}return null;};}function patchUpdates(_0x34309d){return function(_0x47aec7){try{jsonpatch[_0x8bac('0x26')](_0x47aec7,_0x34309d,!![]);}catch(_0x35b3a4){return BPromise[_0x8bac('0x27')](_0x35b3a4);}return _0x47aec7['save']();};}function saveUpdates(_0x1f3a3b,_0x3dfdb9){return function(_0x40d0fe){if(_0x40d0fe){return _0x40d0fe['update'](_0x1f3a3b)[_0x8bac('0x28')](function(_0xc6624e){return _0xc6624e;});}return null;};}function removeEntity(_0x5ab925,_0x3aef14){return function(_0xd607ce){if(_0xd607ce){return _0xd607ce['destroy']()['then'](function(){_0x5ab925[_0x8bac('0x1e')](0xcc)[_0x8bac('0x1d')]();});}};}function handleEntityNotFound(_0x2f01a0,_0x5ed563){return function(_0x1f82d0){if(!_0x1f82d0){_0x2f01a0[_0x8bac('0x1c')](0x194);}return _0x1f82d0;};}function handleError(_0x25af27,_0x28b667){_0x28b667=_0x28b667||0x1f4;return function(_0x19fa0c){logger[_0x8bac('0x29')](_0x19fa0c[_0x8bac('0x2a')]);if(_0x19fa0c['name']){delete _0x19fa0c[_0x8bac('0x2b')];}_0x25af27[_0x8bac('0x1e')](_0x28b667)[_0x8bac('0x2c')](_0x19fa0c);};}exports['index']=function(_0xfe023d,_0x15c310){var _0x438eb9={},_0x2caacb={},_0x529260={'count':0x0,'rows':[]};var _0x2d7448=_[_0x8bac('0x2d')](db[_0x8bac('0x2e')]['rawAttributes'],function(_0x738235){return{'name':_0x738235[_0x8bac('0x2f')],'type':_0x738235[_0x8bac('0x30')][_0x8bac('0x31')]};});_0x2caacb[_0x8bac('0x32')]=_[_0x8bac('0x2d')](_0x2d7448,'name');_0x2caacb[_0x8bac('0x33')]=_[_0x8bac('0x34')](_0xfe023d[_0x8bac('0x33')]);_0x2caacb[_0x8bac('0x35')]=_[_0x8bac('0x36')](_0x2caacb[_0x8bac('0x32')],_0x2caacb['query']);_0x438eb9[_0x8bac('0x37')]=_[_0x8bac('0x36')](_0x2caacb['model'],qs[_0x8bac('0x38')](_0xfe023d[_0x8bac('0x33')]['fields']));_0x438eb9[_0x8bac('0x37')]=_0x438eb9[_0x8bac('0x37')][_0x8bac('0x39')]?_0x438eb9[_0x8bac('0x37')]:_0x2caacb[_0x8bac('0x32')];if(!_0xfe023d[_0x8bac('0x33')][_0x8bac('0x3a')](_0x8bac('0x3b'))){_0x438eb9['limit']=qs['limit'](_0xfe023d[_0x8bac('0x33')][_0x8bac('0x22')]);_0x438eb9['offset']=qs[_0x8bac('0x20')](_0xfe023d[_0x8bac('0x33')][_0x8bac('0x20')]);}_0x438eb9[_0x8bac('0x3c')]=qs['sort'](_0xfe023d[_0x8bac('0x33')][_0x8bac('0x3d')]);_0x438eb9[_0x8bac('0x3e')]=qs[_0x8bac('0x35')](_[_0x8bac('0x3f')](_0xfe023d['query'],_0x2caacb[_0x8bac('0x35')]),_0x2d7448);if(_0xfe023d[_0x8bac('0x33')][_0x8bac('0x40')]){_0x438eb9[_0x8bac('0x3e')]=_[_0x8bac('0x41')](_0x438eb9['where'],{'$or':_[_0x8bac('0x2d')](_0x2d7448,function(_0xd68ab0){if(_0xd68ab0[_0x8bac('0x30')]!==_0x8bac('0x42')){var _0x58abd={};_0x58abd[_0xd68ab0[_0x8bac('0x2b')]]={'$like':'%'+_0xfe023d[_0x8bac('0x33')][_0x8bac('0x40')]+'%'};return _0x58abd;}})});}_0x438eb9=_['merge']({},_0x438eb9,_0xfe023d[_0x8bac('0x43')]);var _0x26a8e8={'where':_0x438eb9[_0x8bac('0x3e')]};return db['Migration'][_0x8bac('0x23')](_0x26a8e8)[_0x8bac('0x28')](function(_0x4cf659){_0x529260[_0x8bac('0x23')]=_0x4cf659;if(_0xfe023d[_0x8bac('0x33')]['includeAll']){_0x438eb9['include']=[{'all':!![]}];}return db[_0x8bac('0x2e')][_0x8bac('0x44')](_0x438eb9);})[_0x8bac('0x28')](function(_0x33955a){_0x529260[_0x8bac('0x45')]=_0x33955a;return _0x529260;})[_0x8bac('0x28')](respondWithFilteredResult(_0x15c310,_0x438eb9))[_0x8bac('0x46')](handleError(_0x15c310,null));};
\ No newline at end of file
index e28abd6..ebc2e2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdec2=['./migration.attributes','exports','define','Migration','migrations','lodash','../../config/logger','api','bluebird','path','../../config/environment'];(function(_0x2964e2,_0x1dbe2d){var _0x4c16cc=function(_0x213d02){while(--_0x213d02){_0x2964e2['push'](_0x2964e2['shift']());}};_0x4c16cc(++_0x1dbe2d);}(_0xdec2,0xf7));var _0x2dec=function(_0x192fd7,_0xff89ba){_0x192fd7=_0x192fd7-0x0;var _0x3c3847=_0xdec2[_0x192fd7];return _0x3c3847;};'use strict';var _=require(_0x2dec('0x0'));var util=require('util');var logger=require(_0x2dec('0x1'))(_0x2dec('0x2'));var moment=require('moment');var BPromise=require(_0x2dec('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2dec('0x4'));var rimraf=require('rimraf');var config=require(_0x2dec('0x5'));var attributes=require(_0x2dec('0x6'));module[_0x2dec('0x7')]=function(_0x20f941,_0x2b778b){return _0x20f941[_0x2dec('0x8')](_0x2dec('0x9'),attributes,{'tableName':_0x2dec('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdab1=['rimraf','../../config/environment','define','Migration','migrations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x50fdf5,_0x192c48){var _0x212b05=function(_0x101cd8){while(--_0x101cd8){_0x50fdf5['push'](_0x50fdf5['shift']());}};_0x212b05(++_0x192c48);}(_0xdab1,0x1f3));var _0x1dab=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0xdab1[_0x39c734];return _0xb2a2f9;};'use strict';var _=require(_0x1dab('0x0'));var util=require(_0x1dab('0x1'));var logger=require(_0x1dab('0x2'))(_0x1dab('0x3'));var moment=require(_0x1dab('0x4'));var BPromise=require(_0x1dab('0x5'));var rp=require(_0x1dab('0x6'));var fs=require('fs');var path=require(_0x1dab('0x7'));var rimraf=require(_0x1dab('0x8'));var config=require(_0x1dab('0x9'));var attributes=require('./migration.attributes');module['exports']=function(_0x2cef2c,_0x3e1e9e){return _0x2cef2c[_0x1dab('0xa')](_0x1dab('0xb'),attributes,{'tableName':_0x1dab('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d5cd4f0..2ae53d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x636f=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis'];(function(_0x16e57d,_0x2cb7ba){var _0x40239c=function(_0x3cc8f0){while(--_0x3cc8f0){_0x16e57d['push'](_0x16e57d['shift']());}};_0x40239c(++_0x2cb7ba);}(_0x636f,0x188));var _0xf636=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x636f[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf636('0x0'));var BPromise=require(_0xf636('0x1'));var rs=require(_0xf636('0x2'));var fs=require('fs');var Redis=require(_0xf636('0x3'));var db=require(_0xf636('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf636('0x5'))(_0xf636('0x6'));var config=require(_0xf636('0x7'));var jayson=require(_0xf636('0x8'));var client=jayson[_0xf636('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xdae985,_0x46a395,_0x2da859){return new BPromise(function(_0x3f6dfb,_0xf58b26){return client[_0xf636('0xa')](_0xdae985,_0x2da859)[_0xf636('0xb')](function(_0x219baa){logger[_0xf636('0xc')](_0xf636('0xd'),_0x46a395,'request\x20sent');logger[_0xf636('0xe')](_0xf636('0xf'),_0x46a395,'request\x20sent',JSON[_0xf636('0x10')](_0x219baa));if(_0x219baa[_0xf636('0x11')]){if(_0x219baa[_0xf636('0x11')][_0xf636('0x12')]===0x1f4){logger[_0xf636('0x11')](_0xf636('0xd'),_0x46a395,_0x219baa['error'][_0xf636('0x13')]);return _0xf58b26(_0x219baa[_0xf636('0x11')][_0xf636('0x13')]);}logger['error'](_0xf636('0xd'),_0x46a395,_0x219baa['error'][_0xf636('0x13')]);return _0x3f6dfb(_0x219baa[_0xf636('0x11')]['message']);}else{logger[_0xf636('0xc')](_0xf636('0xd'),_0x46a395,'request\x20sent');_0x3f6dfb(_0x219baa[_0xf636('0x14')][_0xf636('0x13')]);}})[_0xf636('0x15')](function(_0x2f6da8){logger[_0xf636('0x11')]('Migration,\x20%s,\x20%s',_0x46a395,_0x2f6da8);_0xf58b26(_0x2f6da8);});});}
\ No newline at end of file
+var _0xa900=['../../config/environment','jayson/promise','client','http','request','then','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x40f46f,_0x16bba2){var _0x9d21a=function(_0x2ad948){while(--_0x2ad948){_0x40f46f['push'](_0x40f46f['shift']());}};_0x9d21a(++_0x16bba2);}(_0xa900,0x101));var _0x0a90=function(_0x16d793,_0x22f0f7){_0x16d793=_0x16d793-0x0;var _0x444f4f=_0xa900[_0x16d793];return _0x444f4f;};'use strict';var _=require(_0x0a90('0x0'));var util=require(_0x0a90('0x1'));var moment=require(_0x0a90('0x2'));var BPromise=require(_0x0a90('0x3'));var rs=require(_0x0a90('0x4'));var fs=require('fs');var Redis=require(_0x0a90('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a90('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x0a90('0x7'));var jayson=require(_0x0a90('0x8'));var client=jayson[_0x0a90('0x9')][_0x0a90('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56a1e5,_0x3909ac,_0x4718e9){return new BPromise(function(_0x33e3cf,_0x4f2b58){return client[_0x0a90('0xb')](_0x56a1e5,_0x4718e9)[_0x0a90('0xc')](function(_0x36c82f){logger['info'](_0x0a90('0xd'),_0x3909ac,'request\x20sent');logger[_0x0a90('0xe')](_0x0a90('0xf'),_0x3909ac,'request\x20sent',JSON[_0x0a90('0x10')](_0x36c82f));if(_0x36c82f[_0x0a90('0x11')]){if(_0x36c82f[_0x0a90('0x11')][_0x0a90('0x12')]===0x1f4){logger[_0x0a90('0x11')](_0x0a90('0xd'),_0x3909ac,_0x36c82f[_0x0a90('0x11')][_0x0a90('0x13')]);return _0x4f2b58(_0x36c82f[_0x0a90('0x11')][_0x0a90('0x13')]);}logger[_0x0a90('0x11')](_0x0a90('0xd'),_0x3909ac,_0x36c82f[_0x0a90('0x11')]['message']);return _0x33e3cf(_0x36c82f['error'][_0x0a90('0x13')]);}else{logger[_0x0a90('0x14')](_0x0a90('0xd'),_0x3909ac,_0x0a90('0x15'));_0x33e3cf(_0x36c82f[_0x0a90('0x16')][_0x0a90('0x13')]);}})[_0x0a90('0x17')](function(_0x4c5979){logger[_0x0a90('0x11')](_0x0a90('0xd'),_0x3909ac,_0x4c5979);_0x4f2b58(_0x4c5979);});});}
\ No newline at end of file
index ea054ff..7d77b2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb93=['update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','./network.controller','get','isAuthenticated','index','show','post','create','put','/:id'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfb93,0x111));var _0x3fb9=function(_0x4e25cb,_0x289964){_0x4e25cb=_0x4e25cb-0x0;var _0x5968c9=_0xfb93[_0x4e25cb];return _0x5968c9;};'use strict';var multer=require(_0x3fb9('0x0'));var util=require(_0x3fb9('0x1'));var path=require(_0x3fb9('0x2'));var timeout=require(_0x3fb9('0x3'));var express=require('express');var router=express[_0x3fb9('0x4')]();var fs_extra=require(_0x3fb9('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3fb9('0x6'));router[_0x3fb9('0x7')]('/',auth[_0x3fb9('0x8')](),controller[_0x3fb9('0x9')]);router['get']('/:id',auth[_0x3fb9('0x8')](),controller[_0x3fb9('0xa')]);router[_0x3fb9('0xb')]('/',auth[_0x3fb9('0x8')](),controller[_0x3fb9('0xc')]);router[_0x3fb9('0xd')](_0x3fb9('0xe'),auth[_0x3fb9('0x8')](),controller[_0x3fb9('0xf')]);router[_0x3fb9('0x10')]('/:id',auth[_0x3fb9('0x8')](),controller[_0x3fb9('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x0295=['delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','index','post','create','/:id','update'];(function(_0x41886e,_0x2f9b3e){var _0x10e7f4=function(_0x267c43){while(--_0x267c43){_0x41886e['push'](_0x41886e['shift']());}};_0x10e7f4(++_0x2f9b3e);}(_0x0295,0x1f0));var _0x5029=function(_0x237340,_0x39b15d){_0x237340=_0x237340-0x0;var _0x5542c8=_0x0295[_0x237340];return _0x5542c8;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5029('0xa')]('/',auth['isAuthenticated'](),controller[_0x5029('0xb')]);router['put'](_0x5029('0xc'),auth['isAuthenticated'](),controller[_0x5029('0xd')]);router[_0x5029('0xe')](_0x5029('0xc'),auth['isAuthenticated'](),controller[_0x5029('0xf')]);module[_0x5029('0x10')]=router;
\ No newline at end of file
index 920d6c0..7032b96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd206=['STRING','sequelize','exports','ENUM','externip','stun','turn'];(function(_0x17e1f7,_0x2894ad){var _0x1ac7ea=function(_0x504c10){while(--_0x504c10){_0x17e1f7['push'](_0x17e1f7['shift']());}};_0x1ac7ea(++_0x2894ad);}(_0xd206,0x14a));var _0x6d20=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0xd206[_0x1b6c6d];return _0x290d9d;};'use strict';var Sequelize=require(_0x6d20('0x0'));module[_0x6d20('0x1')]={'type':{'type':Sequelize[_0x6d20('0x2')]('localnet',_0x6d20('0x3'),_0x6d20('0x4'),_0x6d20('0x5'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x6d20('0x6')]}};
\ No newline at end of file
+var _0xaf08=['ENUM','localnet','externip','stun','turn','STRING'];(function(_0x40ab41,_0x5d535e){var _0x36962d=function(_0x3300e7){while(--_0x3300e7){_0x40ab41['push'](_0x40ab41['shift']());}};_0x36962d(++_0x5d535e);}(_0xaf08,0x1c2));var _0x8af0=function(_0x420513,_0x30eae3){_0x420513=_0x420513-0x0;var _0x1b44ec=_0xaf08[_0x420513];return _0x1b44ec;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x8af0('0x0')](_0x8af0('0x1'),_0x8af0('0x2'),_0x8af0('0x3'),_0x8af0('0x4'))},'value':{'type':Sequelize[_0x8af0('0x5')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x8af0('0x5')]}};
\ No newline at end of file
index b447b0f..25852b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f62=['send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','Network','includeAll','findAll','rows','show','include','find','create','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','Reload','res_stun_monitor.so','TURN','render','writeFileSync','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','params','server/files/templates/turn_multiple.ejs','format','chan_sip.so','destroy','/etc/asterisk/stun_xcally.conf','util','path','ejs','lodash','../../config/logger','api','../../mysqldb','http','request','then','info','request\x20sent','stringify','error','Network,\x20%s,\x20%s','message','catch','status','json','offset','undefined','limit','count','set','update','end','stack','name'];(function(_0x755813,_0x5b49d1){var _0x7ce26f=function(_0x240feb){while(--_0x240feb){_0x755813['push'](_0x755813['shift']());}};_0x7ce26f(++_0x5b49d1);}(_0x2f62,0x183));var _0x22f6=function(_0xea07b7,_0x5ddea3){_0xea07b7=_0xea07b7-0x0;var _0x3cc299=_0x2f62[_0xea07b7];return _0x3cc299;};'use strict';var util=require(_0x22f6('0x0'));var path=require(_0x22f6('0x1'));var ejs=require(_0x22f6('0x2'));var fs=require('fs');var _=require(_0x22f6('0x3'));var qs=require('../../components/parsers/qs');var logger=require(_0x22f6('0x4'))(_0x22f6('0x5'));var config=require('../../config/environment');var db=require(_0x22f6('0x6'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x22f6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x35dd16,_0x240965,_0x4f39f7,_0x2cc8c8){return new Promise(function(_0x4760f2,_0x5ff53a){var _0x473398=_0x2cc8c8||client;return _0x473398[_0x22f6('0x8')](_0x35dd16,_0x4f39f7)[_0x22f6('0x9')](function(_0x5f2c01){logger[_0x22f6('0xa')]('Network,\x20%s,\x20%s',_0x240965,'request\x20sent');logger['debug']('Network,\x20%s,\x20%s,\x20%s',_0x240965,_0x22f6('0xb'),JSON[_0x22f6('0xc')](_0x5f2c01));if(_0x5f2c01[_0x22f6('0xd')]){if(_0x5f2c01[_0x22f6('0xd')]['code']===0x1f4){logger[_0x22f6('0xd')](_0x22f6('0xe'),_0x240965,_0x5f2c01[_0x22f6('0xd')][_0x22f6('0xf')]);return _0x5ff53a(_0x5f2c01['error'][_0x22f6('0xf')]);}logger[_0x22f6('0xd')](_0x22f6('0xe'),_0x240965,_0x5f2c01['error'][_0x22f6('0xf')]);return _0x4760f2(_0x5f2c01[_0x22f6('0xd')][_0x22f6('0xf')]);}else{logger[_0x22f6('0xa')]('Network,\x20%s,\x20%s',_0x240965,_0x22f6('0xb'));_0x4760f2(_0x5f2c01['result'][_0x22f6('0xf')]);}})[_0x22f6('0x10')](function(_0x51df0c){logger[_0x22f6('0xd')](_0x22f6('0xe'),_0x240965,_0x51df0c);_0x5ff53a(_0x51df0c);});});}function respondWithResult(_0x13c6bd,_0x4ff3b4){_0x4ff3b4=_0x4ff3b4||0xc8;return function(_0x499c72){if(_0x499c72){return _0x13c6bd[_0x22f6('0x11')](_0x4ff3b4)[_0x22f6('0x12')](_0x499c72);}};}function respondWithFilteredResult(_0x54c9e7,_0x133bcc){return function(_0x56f65e){if(_0x56f65e){var _0x16aaa0=typeof _0x133bcc[_0x22f6('0x13')]===_0x22f6('0x14')&&typeof _0x133bcc[_0x22f6('0x15')]===_0x22f6('0x14');var _0x29bcc9=_0x56f65e['count'];var _0x5da21b=_0x16aaa0?0x0:_0x133bcc['offset'];var _0x50a81c=_0x16aaa0?_0x56f65e[_0x22f6('0x16')]:_0x133bcc[_0x22f6('0x13')]+_0x133bcc[_0x22f6('0x15')];var _0x44a865;if(_0x50a81c>=_0x29bcc9){_0x50a81c=_0x29bcc9;_0x44a865=0xc8;}else{_0x44a865=0xce;}_0x54c9e7[_0x22f6('0x11')](_0x44a865);return _0x54c9e7[_0x22f6('0x17')]('Content-Range',_0x5da21b+'-'+_0x50a81c+'/'+_0x29bcc9)[_0x22f6('0x12')](_0x56f65e);}return null;};}function saveUpdates(_0xe127a4){return function(_0x589f52){if(_0x589f52){return _0x589f52[_0x22f6('0x18')](_0xe127a4)[_0x22f6('0x9')](function(_0x1e82f4){return _0x1e82f4;});}return null;};}function removeEntity(_0x33d682){return function(_0x4831b1){if(_0x4831b1){return _0x4831b1['destroy']()['then'](function(){_0x33d682[_0x22f6('0x11')](0xcc)[_0x22f6('0x19')]();});}};}function handleEntityNotFound(_0x50c28d){return function(_0x503aa1){if(!_0x503aa1){_0x50c28d['sendStatus'](0x194);}return _0x503aa1;};}function handleError(_0x4c2ed9,_0x1e604c){_0x1e604c=_0x1e604c||0x1f4;return function(_0x3ed89b){logger[_0x22f6('0xd')](_0x3ed89b[_0x22f6('0x1a')]);if(_0x3ed89b[_0x22f6('0x1b')]){delete _0x3ed89b[_0x22f6('0x1b')];}_0x4c2ed9[_0x22f6('0x11')](_0x1e604c)[_0x22f6('0x1c')](_0x3ed89b);};}exports['index']=function(_0x5cd843,_0x1b3fb6){var _0x4f62d1={},_0x1c9892={},_0x5e0624={'count':0x0,'rows':[]};var _0x5ce687=_[_0x22f6('0x1d')](db['Network'][_0x22f6('0x1e')],function(_0x57b107){return{'name':_0x57b107[_0x22f6('0x1f')],'type':_0x57b107[_0x22f6('0x20')][_0x22f6('0x21')]};});_0x1c9892[_0x22f6('0x22')]=_[_0x22f6('0x1d')](_0x5ce687,_0x22f6('0x1b'));_0x1c9892[_0x22f6('0x23')]=_[_0x22f6('0x24')](_0x5cd843[_0x22f6('0x23')]);_0x1c9892[_0x22f6('0x25')]=_[_0x22f6('0x26')](_0x1c9892['model'],_0x1c9892[_0x22f6('0x23')]);_0x4f62d1[_0x22f6('0x27')]=_[_0x22f6('0x26')](_0x1c9892[_0x22f6('0x22')],qs[_0x22f6('0x28')](_0x5cd843['query'][_0x22f6('0x28')]));_0x4f62d1['attributes']=_0x4f62d1['attributes'][_0x22f6('0x29')]?_0x4f62d1[_0x22f6('0x27')]:_0x1c9892['model'];if(!_0x5cd843['query'][_0x22f6('0x2a')](_0x22f6('0x2b'))){_0x4f62d1[_0x22f6('0x15')]=qs['limit'](_0x5cd843[_0x22f6('0x23')][_0x22f6('0x15')]);_0x4f62d1[_0x22f6('0x13')]=qs['offset'](_0x5cd843['query'][_0x22f6('0x13')]);}_0x4f62d1[_0x22f6('0x2c')]=qs[_0x22f6('0x2d')](_0x5cd843['query']['sort']);_0x4f62d1['where']=qs[_0x22f6('0x25')](_[_0x22f6('0x2e')](_0x5cd843[_0x22f6('0x23')],_0x1c9892[_0x22f6('0x25')]),_0x5ce687);if(_0x5cd843[_0x22f6('0x23')]['filter']){_0x4f62d1[_0x22f6('0x2f')]=_[_0x22f6('0x30')](_0x4f62d1[_0x22f6('0x2f')],{'$or':_['map'](_0x5ce687,function(_0x51abf8){if(_0x51abf8[_0x22f6('0x20')]!==_0x22f6('0x31')){var _0x213343={};_0x213343[_0x51abf8[_0x22f6('0x1b')]]={'$like':'%'+_0x5cd843['query'][_0x22f6('0x32')]+'%'};return _0x213343;}})});}_0x4f62d1=_[_0x22f6('0x30')]({},_0x4f62d1,_0x5cd843[_0x22f6('0x33')]);var _0xf0da3f={'where':_0x4f62d1['where']};return db[_0x22f6('0x34')][_0x22f6('0x16')](_0xf0da3f)[_0x22f6('0x9')](function(_0x11ecbb){_0x5e0624[_0x22f6('0x16')]=_0x11ecbb;if(_0x5cd843[_0x22f6('0x23')][_0x22f6('0x35')]){_0x4f62d1['include']=[{'all':!![]}];}return db[_0x22f6('0x34')][_0x22f6('0x36')](_0x4f62d1);})[_0x22f6('0x9')](function(_0x1d6545){_0x5e0624[_0x22f6('0x37')]=_0x1d6545;return _0x5e0624;})[_0x22f6('0x9')](respondWithFilteredResult(_0x1b3fb6,_0x4f62d1))[_0x22f6('0x10')](handleError(_0x1b3fb6,null));};exports[_0x22f6('0x38')]=function(_0x8f5567,_0xbb0888){var _0x411f42={'raw':!![],'where':{'id':_0x8f5567['params']['id']}},_0x18e267={};_0x18e267[_0x22f6('0x22')]=_[_0x22f6('0x24')](db[_0x22f6('0x34')][_0x22f6('0x1e')]);_0x18e267[_0x22f6('0x23')]=_[_0x22f6('0x24')](_0x8f5567[_0x22f6('0x23')]);_0x18e267[_0x22f6('0x25')]=_[_0x22f6('0x26')](_0x18e267[_0x22f6('0x22')],_0x18e267[_0x22f6('0x23')]);_0x411f42[_0x22f6('0x27')]=_[_0x22f6('0x26')](_0x18e267['model'],qs[_0x22f6('0x28')](_0x8f5567[_0x22f6('0x23')][_0x22f6('0x28')]));_0x411f42[_0x22f6('0x27')]=_0x411f42[_0x22f6('0x27')][_0x22f6('0x29')]?_0x411f42[_0x22f6('0x27')]:_0x18e267[_0x22f6('0x22')];if(_0x8f5567[_0x22f6('0x23')][_0x22f6('0x35')]){_0x411f42[_0x22f6('0x39')]=[{'all':!![]}];}_0x411f42=_[_0x22f6('0x30')]({},_0x411f42,_0x8f5567['options']);return db[_0x22f6('0x34')][_0x22f6('0x3a')](_0x411f42)['then'](handleEntityNotFound(_0xbb0888,null))[_0x22f6('0x9')](respondWithResult(_0xbb0888,null))[_0x22f6('0x10')](handleError(_0xbb0888,null));};exports[_0x22f6('0x3b')]=function(_0x32633d,_0x4975bb){var _0x427114;return db[_0x22f6('0x34')][_0x22f6('0x3b')](_0x32633d[_0x22f6('0x3c')],{'raw':!![]})[_0x22f6('0x9')](function(_0x58e492){_0x427114=_0x58e492;return db[_0x22f6('0x34')][_0x22f6('0x36')]({'where':{'type':_0x32633d[_0x22f6('0x3c')]['type']},'raw':!![]});})[_0x22f6('0x9')](function(_0x4f68ef){if(_0x427114[_0x22f6('0x20')][_0x22f6('0x3d')]()==_0x22f6('0x3e')){var _0x458cf6=fs[_0x22f6('0x3f')](path[_0x22f6('0x40')](config[_0x22f6('0x41')],_0x22f6('0x42')),_0x22f6('0x43'));var _0x3e7f1c=ejs['render'](_0x458cf6,{'networks':_0x4f68ef||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x3e7f1c);return respondWithRpcPromise(_0x22f6('0x44'),_0x22f6('0x3b'),{'module':_0x22f6('0x45')});}else if(_0x427114[_0x22f6('0x20')][_0x22f6('0x3d')]()==_0x22f6('0x46')){var _0x30664e=fs[_0x22f6('0x3f')](path[_0x22f6('0x40')](config[_0x22f6('0x41')],'server/files/templates/turn_multiple.ejs'),_0x22f6('0x43'));var _0x3d2ca4=ejs[_0x22f6('0x47')](_0x30664e,{'networks':_0x4f68ef||[]});fs[_0x22f6('0x48')](_0x22f6('0x49'),_0x3d2ca4);return respondWithRpcPromise(_0x22f6('0x44'),_0x22f6('0x3b'),{'module':_0x22f6('0x45')});}else{var _0x519c3b=fs['readFileSync'](path[_0x22f6('0x40')](config[_0x22f6('0x41')],_0x22f6('0x4a')),_0x22f6('0x43'));var _0xe30d7b=ejs[_0x22f6('0x47')](_0x519c3b,{'networks':_0x4f68ef||[]});fs[_0x22f6('0x48')](util['format'](_0x22f6('0x4b'),_0x32633d[_0x22f6('0x3c')][_0x22f6('0x20')][_0x22f6('0x4c')]()),_0xe30d7b);return respondWithRpcPromise('Reload',_0x22f6('0x3b'),{'module':'chan_sip.so'});}})['then'](function(){return _0x427114;})[_0x22f6('0x9')](respondWithResult(_0x4975bb,0xc9))[_0x22f6('0x10')](handleError(_0x4975bb,null));};exports[_0x22f6('0x18')]=function(_0x13a512,_0x476e6f){var _0x504151;return db[_0x22f6('0x34')][_0x22f6('0x3a')]({'where':{'id':_0x13a512[_0x22f6('0x4d')]['id']}})[_0x22f6('0x9')](handleEntityNotFound(_0x476e6f,null))[_0x22f6('0x9')](saveUpdates(_0x13a512[_0x22f6('0x3c')],null))['then'](function(_0x37e192){if(_0x37e192){_0x504151=_0x37e192;return db['Network'][_0x22f6('0x36')]({'where':{'type':_0x504151['type']},'raw':!![]});}return null;})[_0x22f6('0x9')](function(_0x1f906e){if(_0x504151[_0x22f6('0x20')]['toUpperCase']()==_0x22f6('0x3e')){var _0x74893d=fs[_0x22f6('0x3f')](path[_0x22f6('0x40')](config['root'],_0x22f6('0x42')),_0x22f6('0x43'));var _0xac0b2d=ejs[_0x22f6('0x47')](_0x74893d,{'networks':_0x1f906e||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0xac0b2d);return respondWithRpcPromise(_0x22f6('0x44'),_0x22f6('0x18'),{'module':'res_stun_monitor.so'});}else if(_0x504151['type'][_0x22f6('0x3d')]()==_0x22f6('0x46')){var _0x2436c8=fs[_0x22f6('0x3f')](path[_0x22f6('0x40')](config[_0x22f6('0x41')],_0x22f6('0x4e')),_0x22f6('0x43'));var _0xf4f8c4=ejs[_0x22f6('0x47')](_0x2436c8,{'networks':_0x1f906e||[]});fs[_0x22f6('0x48')](_0x22f6('0x49'),_0xf4f8c4);return respondWithRpcPromise(_0x22f6('0x44'),_0x22f6('0x18'),{'module':_0x22f6('0x45')});}else{var _0x1e6cfd=fs['readFileSync'](path[_0x22f6('0x40')](config[_0x22f6('0x41')],_0x22f6('0x4a')),_0x22f6('0x43'));var _0x17c475=ejs[_0x22f6('0x47')](_0x1e6cfd,{'networks':_0x1f906e||[]});fs[_0x22f6('0x48')](util[_0x22f6('0x4f')](_0x22f6('0x4b'),_0x13a512['body'][_0x22f6('0x20')][_0x22f6('0x4c')]()),_0x17c475);return respondWithRpcPromise('Reload',_0x22f6('0x18'),{'module':_0x22f6('0x50')});}})[_0x22f6('0x9')](function(_0x1e6324){if(_0x1e6324){return _0x504151;}return null;})[_0x22f6('0x9')](respondWithResult(_0x476e6f,null))[_0x22f6('0x10')](handleError(_0x476e6f,null));};exports[_0x22f6('0x51')]=function(_0x5f26d1,_0x2ae191){var _0x2b0a17;return db[_0x22f6('0x34')][_0x22f6('0x3a')]({'where':{'id':_0x5f26d1[_0x22f6('0x4d')]['id']}})['then'](function(_0x39a4d3){_0x2b0a17=_0x39a4d3;return _0x39a4d3;})[_0x22f6('0x9')](handleEntityNotFound(_0x2ae191,null))[_0x22f6('0x9')](removeEntity(_0x2ae191,null))[_0x22f6('0x9')](function(){if(_0x2b0a17){return db[_0x22f6('0x34')][_0x22f6('0x36')]({'where':{'type':_0x2b0a17[_0x22f6('0x20')]},'raw':!![]});}})['then'](function(_0x2d43c7){if(_0x2b0a17['type'][_0x22f6('0x3d')]()==_0x22f6('0x3e')){var _0x5a2dd3=fs[_0x22f6('0x3f')](path['join'](config[_0x22f6('0x41')],_0x22f6('0x42')),_0x22f6('0x43'));var _0x466bf9=ejs[_0x22f6('0x47')](_0x5a2dd3,{'networks':_0x2d43c7||[]});fs[_0x22f6('0x48')](_0x22f6('0x52'),_0x466bf9);return respondWithRpcPromise(_0x22f6('0x44'),_0x22f6('0x51'),{'module':_0x22f6('0x45')});}else if(_0x2b0a17['type']['toUpperCase']()=='TURN'){var _0x84deeb=fs['readFileSync'](path['join'](config[_0x22f6('0x41')],_0x22f6('0x4e')),_0x22f6('0x43'));var _0x3a6c43=ejs[_0x22f6('0x47')](_0x84deeb,{'networks':_0x2d43c7||[]});fs['writeFileSync'](_0x22f6('0x49'),_0x3a6c43);return respondWithRpcPromise(_0x22f6('0x44'),_0x22f6('0x51'),{'module':_0x22f6('0x45')});}else{var _0x57cc38=fs[_0x22f6('0x3f')](path[_0x22f6('0x40')](config[_0x22f6('0x41')],_0x22f6('0x4a')),_0x22f6('0x43'));var _0x4e4bab=ejs[_0x22f6('0x47')](_0x57cc38,{'networks':_0x2d43c7||[]});fs[_0x22f6('0x48')](util[_0x22f6('0x4f')](_0x22f6('0x4b'),_0x2b0a17['type'][_0x22f6('0x4c')]()),_0x4e4bab);return respondWithRpcPromise('Reload',_0x22f6('0x51'),{'module':_0x22f6('0x50')});}})[_0x22f6('0x10')](handleError(_0x2ae191,null));};
\ No newline at end of file
+var _0xf7e7=['model','query','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','Network','findAll','rows','show','params','keys','find','create','body','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','writeFileSync','/etc/asterisk/turn_xcally.conf','render','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','toUpperCase','STUN','server/files/templates/network.ejs','format','ejs','lodash','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','request','then','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','json','offset','limit','undefined','count','status','set','Content-Range','update','destroy','end','stack','name','send','index','map','fieldName','type','key'];(function(_0x4dab58,_0x78bb16){var _0x552cec=function(_0x3f2611){while(--_0x3f2611){_0x4dab58['push'](_0x4dab58['shift']());}};_0x552cec(++_0x78bb16);}(_0xf7e7,0x183));var _0x7f7e=function(_0x349871,_0xfbe9e9){_0x349871=_0x349871-0x0;var _0x12583d=_0xf7e7[_0x349871];return _0x12583d;};'use strict';var util=require('util');var path=require('path');var ejs=require(_0x7f7e('0x0'));var fs=require('fs');var _=require(_0x7f7e('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x7f7e('0x2'))(_0x7f7e('0x3'));var config=require(_0x7f7e('0x4'));var db=require(_0x7f7e('0x5'))['db'];var jayson=require(_0x7f7e('0x6'));var client=jayson[_0x7f7e('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2057c3,_0x218f22,_0x3ca7c3,_0x1ccd64){return new Promise(function(_0x4ea1ec,_0x7e51b8){var _0x57da38=_0x1ccd64||client;return _0x57da38[_0x7f7e('0x8')](_0x2057c3,_0x3ca7c3)[_0x7f7e('0x9')](function(_0x3e2869){logger[_0x7f7e('0xa')](_0x7f7e('0xb'),_0x218f22,'request\x20sent');logger[_0x7f7e('0xc')](_0x7f7e('0xd'),_0x218f22,_0x7f7e('0xe'),JSON['stringify'](_0x3e2869));if(_0x3e2869[_0x7f7e('0xf')]){if(_0x3e2869[_0x7f7e('0xf')][_0x7f7e('0x10')]===0x1f4){logger['error'](_0x7f7e('0xb'),_0x218f22,_0x3e2869[_0x7f7e('0xf')][_0x7f7e('0x11')]);return _0x7e51b8(_0x3e2869[_0x7f7e('0xf')][_0x7f7e('0x11')]);}logger[_0x7f7e('0xf')](_0x7f7e('0xb'),_0x218f22,_0x3e2869[_0x7f7e('0xf')][_0x7f7e('0x11')]);return _0x4ea1ec(_0x3e2869[_0x7f7e('0xf')][_0x7f7e('0x11')]);}else{logger[_0x7f7e('0xa')](_0x7f7e('0xb'),_0x218f22,_0x7f7e('0xe'));_0x4ea1ec(_0x3e2869['result'][_0x7f7e('0x11')]);}})[_0x7f7e('0x12')](function(_0x53539f){logger[_0x7f7e('0xf')](_0x7f7e('0xb'),_0x218f22,_0x53539f);_0x7e51b8(_0x53539f);});});}function respondWithResult(_0x4e7b4a,_0x1fc8d2){_0x1fc8d2=_0x1fc8d2||0xc8;return function(_0x32d038){if(_0x32d038){return _0x4e7b4a['status'](_0x1fc8d2)[_0x7f7e('0x13')](_0x32d038);}};}function respondWithFilteredResult(_0x55fed3,_0xa26587){return function(_0x3df391){if(_0x3df391){var _0x26da0f=typeof _0xa26587[_0x7f7e('0x14')]==='undefined'&&typeof _0xa26587[_0x7f7e('0x15')]===_0x7f7e('0x16');var _0x2ba233=_0x3df391[_0x7f7e('0x17')];var _0x58420d=_0x26da0f?0x0:_0xa26587[_0x7f7e('0x14')];var _0x241eb2=_0x26da0f?_0x3df391['count']:_0xa26587[_0x7f7e('0x14')]+_0xa26587[_0x7f7e('0x15')];var _0x5dfc20;if(_0x241eb2>=_0x2ba233){_0x241eb2=_0x2ba233;_0x5dfc20=0xc8;}else{_0x5dfc20=0xce;}_0x55fed3[_0x7f7e('0x18')](_0x5dfc20);return _0x55fed3[_0x7f7e('0x19')](_0x7f7e('0x1a'),_0x58420d+'-'+_0x241eb2+'/'+_0x2ba233)[_0x7f7e('0x13')](_0x3df391);}return null;};}function saveUpdates(_0x2b7e90){return function(_0x2246ec){if(_0x2246ec){return _0x2246ec[_0x7f7e('0x1b')](_0x2b7e90)[_0x7f7e('0x9')](function(_0x2e9d50){return _0x2e9d50;});}return null;};}function removeEntity(_0x156afc){return function(_0x43438e){if(_0x43438e){return _0x43438e[_0x7f7e('0x1c')]()[_0x7f7e('0x9')](function(){_0x156afc[_0x7f7e('0x18')](0xcc)[_0x7f7e('0x1d')]();});}};}function handleEntityNotFound(_0x12a745){return function(_0x86a219){if(!_0x86a219){_0x12a745['sendStatus'](0x194);}return _0x86a219;};}function handleError(_0x190239,_0x5348e5){_0x5348e5=_0x5348e5||0x1f4;return function(_0x2ed6c0){logger[_0x7f7e('0xf')](_0x2ed6c0[_0x7f7e('0x1e')]);if(_0x2ed6c0['name']){delete _0x2ed6c0[_0x7f7e('0x1f')];}_0x190239[_0x7f7e('0x18')](_0x5348e5)[_0x7f7e('0x20')](_0x2ed6c0);};}exports[_0x7f7e('0x21')]=function(_0x570df6,_0x1223cf){var _0x373bd8={},_0x458472={},_0x207433={'count':0x0,'rows':[]};var _0x4d7582=_[_0x7f7e('0x22')](db['Network']['rawAttributes'],function(_0x3cb5e0){return{'name':_0x3cb5e0[_0x7f7e('0x23')],'type':_0x3cb5e0[_0x7f7e('0x24')][_0x7f7e('0x25')]};});_0x458472[_0x7f7e('0x26')]=_[_0x7f7e('0x22')](_0x4d7582,_0x7f7e('0x1f'));_0x458472[_0x7f7e('0x27')]=_['keys'](_0x570df6[_0x7f7e('0x27')]);_0x458472['filters']=_[_0x7f7e('0x28')](_0x458472[_0x7f7e('0x26')],_0x458472[_0x7f7e('0x27')]);_0x373bd8[_0x7f7e('0x29')]=_['intersection'](_0x458472[_0x7f7e('0x26')],qs[_0x7f7e('0x2a')](_0x570df6[_0x7f7e('0x27')]['fields']));_0x373bd8['attributes']=_0x373bd8['attributes'][_0x7f7e('0x2b')]?_0x373bd8[_0x7f7e('0x29')]:_0x458472[_0x7f7e('0x26')];if(!_0x570df6[_0x7f7e('0x27')]['hasOwnProperty'](_0x7f7e('0x2c'))){_0x373bd8[_0x7f7e('0x15')]=qs['limit'](_0x570df6[_0x7f7e('0x27')][_0x7f7e('0x15')]);_0x373bd8[_0x7f7e('0x14')]=qs[_0x7f7e('0x14')](_0x570df6['query']['offset']);}_0x373bd8[_0x7f7e('0x2d')]=qs[_0x7f7e('0x2e')](_0x570df6[_0x7f7e('0x27')]['sort']);_0x373bd8['where']=qs[_0x7f7e('0x2f')](_[_0x7f7e('0x30')](_0x570df6['query'],_0x458472[_0x7f7e('0x2f')]),_0x4d7582);if(_0x570df6[_0x7f7e('0x27')]['filter']){_0x373bd8[_0x7f7e('0x31')]=_[_0x7f7e('0x32')](_0x373bd8[_0x7f7e('0x31')],{'$or':_[_0x7f7e('0x22')](_0x4d7582,function(_0x358386){if(_0x358386[_0x7f7e('0x24')]!==_0x7f7e('0x33')){var _0x2bff48={};_0x2bff48[_0x358386[_0x7f7e('0x1f')]]={'$like':'%'+_0x570df6[_0x7f7e('0x27')][_0x7f7e('0x34')]+'%'};return _0x2bff48;}})});}_0x373bd8=_['merge']({},_0x373bd8,_0x570df6[_0x7f7e('0x35')]);var _0x514169={'where':_0x373bd8['where']};return db['Network'][_0x7f7e('0x17')](_0x514169)[_0x7f7e('0x9')](function(_0x2868df){_0x207433[_0x7f7e('0x17')]=_0x2868df;if(_0x570df6[_0x7f7e('0x27')][_0x7f7e('0x36')]){_0x373bd8[_0x7f7e('0x37')]=[{'all':!![]}];}return db[_0x7f7e('0x38')][_0x7f7e('0x39')](_0x373bd8);})[_0x7f7e('0x9')](function(_0x3e3760){_0x207433[_0x7f7e('0x3a')]=_0x3e3760;return _0x207433;})[_0x7f7e('0x9')](respondWithFilteredResult(_0x1223cf,_0x373bd8))[_0x7f7e('0x12')](handleError(_0x1223cf,null));};exports[_0x7f7e('0x3b')]=function(_0x8137f4,_0x4b5d5a){var _0x4868de={'raw':!![],'where':{'id':_0x8137f4[_0x7f7e('0x3c')]['id']}},_0x153d98={};_0x153d98['model']=_['keys'](db['Network']['rawAttributes']);_0x153d98[_0x7f7e('0x27')]=_[_0x7f7e('0x3d')](_0x8137f4['query']);_0x153d98[_0x7f7e('0x2f')]=_['intersection'](_0x153d98[_0x7f7e('0x26')],_0x153d98[_0x7f7e('0x27')]);_0x4868de[_0x7f7e('0x29')]=_['intersection'](_0x153d98[_0x7f7e('0x26')],qs[_0x7f7e('0x2a')](_0x8137f4['query'][_0x7f7e('0x2a')]));_0x4868de[_0x7f7e('0x29')]=_0x4868de[_0x7f7e('0x29')][_0x7f7e('0x2b')]?_0x4868de['attributes']:_0x153d98['model'];if(_0x8137f4[_0x7f7e('0x27')][_0x7f7e('0x36')]){_0x4868de[_0x7f7e('0x37')]=[{'all':!![]}];}_0x4868de=_[_0x7f7e('0x32')]({},_0x4868de,_0x8137f4[_0x7f7e('0x35')]);return db[_0x7f7e('0x38')][_0x7f7e('0x3e')](_0x4868de)['then'](handleEntityNotFound(_0x4b5d5a,null))[_0x7f7e('0x9')](respondWithResult(_0x4b5d5a,null))[_0x7f7e('0x12')](handleError(_0x4b5d5a,null));};exports[_0x7f7e('0x3f')]=function(_0x3481d3,_0x3e8913){var _0x397bd8;return db[_0x7f7e('0x38')]['create'](_0x3481d3[_0x7f7e('0x40')],{'raw':!![]})[_0x7f7e('0x9')](function(_0x26dab5){_0x397bd8=_0x26dab5;return db[_0x7f7e('0x38')][_0x7f7e('0x39')]({'where':{'type':_0x3481d3[_0x7f7e('0x40')][_0x7f7e('0x24')]},'raw':!![]});})[_0x7f7e('0x9')](function(_0x488ceb){if(_0x397bd8[_0x7f7e('0x24')]['toUpperCase']()=='STUN'){var _0x4bdc5d=fs[_0x7f7e('0x41')](path[_0x7f7e('0x42')](config[_0x7f7e('0x43')],_0x7f7e('0x44')),_0x7f7e('0x45'));var _0x323b59=ejs['render'](_0x4bdc5d,{'networks':_0x488ceb||[]});fs['writeFileSync'](_0x7f7e('0x46'),_0x323b59);return respondWithRpcPromise(_0x7f7e('0x47'),_0x7f7e('0x3f'),{'module':_0x7f7e('0x48')});}else if(_0x397bd8[_0x7f7e('0x24')]['toUpperCase']()==_0x7f7e('0x49')){var _0x3e3850=fs[_0x7f7e('0x41')](path[_0x7f7e('0x42')](config[_0x7f7e('0x43')],_0x7f7e('0x4a')),_0x7f7e('0x45'));var _0xe1538b=ejs['render'](_0x3e3850,{'networks':_0x488ceb||[]});fs[_0x7f7e('0x4b')](_0x7f7e('0x4c'),_0xe1538b);return respondWithRpcPromise('Reload',_0x7f7e('0x3f'),{'module':_0x7f7e('0x48')});}else{var _0x57cf81=fs['readFileSync'](path[_0x7f7e('0x42')](config[_0x7f7e('0x43')],'server/files/templates/network.ejs'),'utf8');var _0x3398a9=ejs[_0x7f7e('0x4d')](_0x57cf81,{'networks':_0x488ceb||[]});fs[_0x7f7e('0x4b')](util['format'](_0x7f7e('0x4e'),_0x3481d3[_0x7f7e('0x40')][_0x7f7e('0x24')][_0x7f7e('0x4f')]()),_0x3398a9);return respondWithRpcPromise(_0x7f7e('0x47'),_0x7f7e('0x3f'),{'module':_0x7f7e('0x50')});}})[_0x7f7e('0x9')](function(){return _0x397bd8;})['then'](respondWithResult(_0x3e8913,0xc9))[_0x7f7e('0x12')](handleError(_0x3e8913,null));};exports['update']=function(_0x32e998,_0x372359){var _0x38aca4;return db[_0x7f7e('0x38')][_0x7f7e('0x3e')]({'where':{'id':_0x32e998[_0x7f7e('0x3c')]['id']}})['then'](handleEntityNotFound(_0x372359,null))[_0x7f7e('0x9')](saveUpdates(_0x32e998[_0x7f7e('0x40')],null))[_0x7f7e('0x9')](function(_0x57d4ea){if(_0x57d4ea){_0x38aca4=_0x57d4ea;return db[_0x7f7e('0x38')][_0x7f7e('0x39')]({'where':{'type':_0x38aca4['type']},'raw':!![]});}return null;})[_0x7f7e('0x9')](function(_0x263796){if(_0x38aca4[_0x7f7e('0x24')][_0x7f7e('0x51')]()==_0x7f7e('0x52')){var _0x5063a8=fs[_0x7f7e('0x41')](path[_0x7f7e('0x42')](config[_0x7f7e('0x43')],'server/files/templates/stun_multiple.ejs'),_0x7f7e('0x45'));var _0x2b22e6=ejs['render'](_0x5063a8,{'networks':_0x263796||[]});fs[_0x7f7e('0x4b')]('/etc/asterisk/stun_xcally.conf',_0x2b22e6);return respondWithRpcPromise(_0x7f7e('0x47'),'update',{'module':_0x7f7e('0x48')});}else if(_0x38aca4[_0x7f7e('0x24')][_0x7f7e('0x51')]()==_0x7f7e('0x49')){var _0x27383e=fs[_0x7f7e('0x41')](path['join'](config['root'],_0x7f7e('0x4a')),_0x7f7e('0x45'));var _0x30f01d=ejs[_0x7f7e('0x4d')](_0x27383e,{'networks':_0x263796||[]});fs[_0x7f7e('0x4b')](_0x7f7e('0x4c'),_0x30f01d);return respondWithRpcPromise('Reload',_0x7f7e('0x1b'),{'module':_0x7f7e('0x48')});}else{var _0x100a67=fs[_0x7f7e('0x41')](path[_0x7f7e('0x42')](config['root'],_0x7f7e('0x53')),_0x7f7e('0x45'));var _0x2c2cc7=ejs['render'](_0x100a67,{'networks':_0x263796||[]});fs[_0x7f7e('0x4b')](util[_0x7f7e('0x54')](_0x7f7e('0x4e'),_0x32e998[_0x7f7e('0x40')][_0x7f7e('0x24')][_0x7f7e('0x4f')]()),_0x2c2cc7);return respondWithRpcPromise(_0x7f7e('0x47'),_0x7f7e('0x1b'),{'module':'chan_sip.so'});}})[_0x7f7e('0x9')](function(_0x2e5e38){if(_0x2e5e38){return _0x38aca4;}return null;})[_0x7f7e('0x9')](respondWithResult(_0x372359,null))['catch'](handleError(_0x372359,null));};exports[_0x7f7e('0x1c')]=function(_0x2bc697,_0x4efd7a){var _0x43bd95;return db[_0x7f7e('0x38')][_0x7f7e('0x3e')]({'where':{'id':_0x2bc697['params']['id']}})[_0x7f7e('0x9')](function(_0x21d598){_0x43bd95=_0x21d598;return _0x21d598;})[_0x7f7e('0x9')](handleEntityNotFound(_0x4efd7a,null))[_0x7f7e('0x9')](removeEntity(_0x4efd7a,null))[_0x7f7e('0x9')](function(){if(_0x43bd95){return db[_0x7f7e('0x38')][_0x7f7e('0x39')]({'where':{'type':_0x43bd95[_0x7f7e('0x24')]},'raw':!![]});}})[_0x7f7e('0x9')](function(_0x470043){if(_0x43bd95[_0x7f7e('0x24')][_0x7f7e('0x51')]()==_0x7f7e('0x52')){var _0x1b8366=fs[_0x7f7e('0x41')](path[_0x7f7e('0x42')](config[_0x7f7e('0x43')],_0x7f7e('0x44')),_0x7f7e('0x45'));var _0x36b454=ejs[_0x7f7e('0x4d')](_0x1b8366,{'networks':_0x470043||[]});fs[_0x7f7e('0x4b')](_0x7f7e('0x46'),_0x36b454);return respondWithRpcPromise(_0x7f7e('0x47'),'destroy',{'module':'res_stun_monitor.so'});}else if(_0x43bd95[_0x7f7e('0x24')][_0x7f7e('0x51')]()==_0x7f7e('0x49')){var _0x23ee91=fs[_0x7f7e('0x41')](path[_0x7f7e('0x42')](config[_0x7f7e('0x43')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x4b3259=ejs[_0x7f7e('0x4d')](_0x23ee91,{'networks':_0x470043||[]});fs[_0x7f7e('0x4b')]('/etc/asterisk/turn_xcally.conf',_0x4b3259);return respondWithRpcPromise(_0x7f7e('0x47'),_0x7f7e('0x1c'),{'module':_0x7f7e('0x48')});}else{var _0x4f272d=fs[_0x7f7e('0x41')](path[_0x7f7e('0x42')](config[_0x7f7e('0x43')],_0x7f7e('0x53')),_0x7f7e('0x45'));var _0x4ddf89=ejs['render'](_0x4f272d,{'networks':_0x470043||[]});fs[_0x7f7e('0x4b')](util[_0x7f7e('0x54')]('/etc/asterisk/sip_xcally_%s.conf',_0x43bd95[_0x7f7e('0x24')][_0x7f7e('0x4f')]()),_0x4ddf89);return respondWithRpcPromise(_0x7f7e('0x47'),_0x7f7e('0x1c'),{'module':_0x7f7e('0x50')});}})[_0x7f7e('0x12')](handleError(_0x4efd7a,null));};
\ No newline at end of file
index 07b1bd0..ac5572f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad8a=['path','rimraf','./network.attributes','exports','define','Network','network','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xad8a,0xb0));var _0xaad8=function(_0x465ecb,_0x4d6f18){_0x465ecb=_0x465ecb-0x0;var _0x221f9d=_0xad8a[_0x465ecb];return _0x221f9d;};'use strict';var _=require(_0xaad8('0x0'));var util=require(_0xaad8('0x1'));var logger=require(_0xaad8('0x2'))(_0xaad8('0x3'));var moment=require(_0xaad8('0x4'));var BPromise=require('bluebird');var rp=require(_0xaad8('0x5'));var fs=require('fs');var path=require(_0xaad8('0x6'));var rimraf=require(_0xaad8('0x7'));var config=require('../../config/environment');var attributes=require(_0xaad8('0x8'));module[_0xaad8('0x9')]=function(_0x22c799,_0xeb5d15){return _0x22c799[_0xaad8('0xa')](_0xaad8('0xb'),attributes,{'tableName':_0xaad8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x68fc=['bluebird','path','./network.attributes','exports','network','lodash','util','../../config/logger'];(function(_0x4a01b2,_0x5ebc4){var _0x55b9ba=function(_0x4ed1ae){while(--_0x4ed1ae){_0x4a01b2['push'](_0x4a01b2['shift']());}};_0x55b9ba(++_0x5ebc4);}(_0x68fc,0xa5));var _0xc68f=function(_0x3d3b1a,_0x4e47ae){_0x3d3b1a=_0x3d3b1a-0x0;var _0x83a068=_0x68fc[_0x3d3b1a];return _0x83a068;};'use strict';var _=require(_0xc68f('0x0'));var util=require(_0xc68f('0x1'));var logger=require(_0xc68f('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc68f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc68f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc68f('0x5'));module[_0xc68f('0x6')]=function(_0x1c6df9,_0x363cdf){return _0x1c6df9['define']('Network',attributes,{'tableName':_0xc68f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1f759fb..b129f6e 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(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7a54,0x106));var _0x47a5=function(_0x8456e0,_0x3878dd){_0x8456e0=_0x8456e0-0x0;var _0x12c916=_0x7a54[_0x8456e0];return _0x12c916;};'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(_0x218cc7,_0x4f0ccb){_0x218cc7=_0x218cc7-0x0;var _0x32852f=_0x7a54[_0x218cc7];return _0x32852f;};'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 3ca8525..84d13d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e87=['path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getApplications','/:id/interactions','getInteractions','/:id/users','create','addDisposition','post','/:id/notify','/:id/applications','/:id/send','send','put','update','delete','destroy','removeDispositions','removeAnswers','exports','util'];(function(_0x3f6cb7,_0x1ee07b){var _0x3ff407=function(_0x320724){while(--_0x320724){_0x3f6cb7['push'](_0x3f6cb7['shift']());}};_0x3ff407(++_0x1ee07b);}(_0x0e87,0xd1));var _0x70e8=function(_0x19e57a,_0x5f28e1){_0x19e57a=_0x19e57a-0x0;var _0x588b8b=_0x0e87[_0x19e57a];return _0x588b8b;};'use strict';var multer=require('multer');var util=require(_0x70e8('0x0'));var path=require(_0x70e8('0x1'));var timeout=require(_0x70e8('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x70e8('0x3'));var interaction=require(_0x70e8('0x4'));var config=require(_0x70e8('0x5'));var controller=require(_0x70e8('0x6'));router['get']('/',auth[_0x70e8('0x7')](),controller[_0x70e8('0x8')]);router[_0x70e8('0x9')](_0x70e8('0xa'),auth[_0x70e8('0x7')](),controller[_0x70e8('0xb')]);router[_0x70e8('0x9')](_0x70e8('0xc'),auth['isAuthenticated'](),controller[_0x70e8('0xd')]);router[_0x70e8('0x9')](_0x70e8('0xe'),auth[_0x70e8('0x7')](),controller[_0x70e8('0xf')]);router[_0x70e8('0x9')](_0x70e8('0x10'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x70e8('0x9')]('/:id/applications',auth[_0x70e8('0x7')](),controller[_0x70e8('0x11')]);router[_0x70e8('0x9')](_0x70e8('0x12'),auth[_0x70e8('0x7')](),controller[_0x70e8('0x13')]);router[_0x70e8('0x9')](_0x70e8('0x14'),auth[_0x70e8('0x7')](),controller['getAgents']);router['post']('/',auth[_0x70e8('0x7')](),controller[_0x70e8('0x15')]);router['post'](_0x70e8('0xe'),auth['isAuthenticated'](),controller[_0x70e8('0x16')]);router[_0x70e8('0x17')](_0x70e8('0x10'),auth[_0x70e8('0x7')](),controller['addAnswer']);router['post'](_0x70e8('0x18'),controller['notify']);router['post'](_0x70e8('0x19'),auth[_0x70e8('0x7')](),controller['addApplications']);router[_0x70e8('0x17')](_0x70e8('0x14'),auth[_0x70e8('0x7')](),controller['addAgents']);router[_0x70e8('0x17')](_0x70e8('0x1a'),auth['isAuthenticated'](),controller[_0x70e8('0x1b')]);router[_0x70e8('0x1c')]('/:id',auth[_0x70e8('0x7')](),controller[_0x70e8('0x1d')]);router[_0x70e8('0x1e')]('/:id',auth[_0x70e8('0x7')](),controller[_0x70e8('0x1f')]);router[_0x70e8('0x1e')](_0x70e8('0xe'),auth[_0x70e8('0x7')](),controller[_0x70e8('0x20')]);router[_0x70e8('0x1e')](_0x70e8('0x10'),auth[_0x70e8('0x7')](),controller[_0x70e8('0x21')]);router[_0x70e8('0x1e')](_0x70e8('0x14'),auth[_0x70e8('0x7')](),controller['removeAgents']);module[_0x70e8('0x22')]=router;
\ No newline at end of file
+var _0xda2d=['getDispositions','/:id/canned_answers','getAnswers','/:id/interactions','getInteractions','/:id/users','post','create','addDisposition','/:id/notify','notify','/:id/applications','addApplications','addAgents','put','/:id','delete','destroy','removeDispositions','removeAnswers','util','path','connect-timeout','express','Router','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions'];(function(_0x2bd9db,_0x2f6076){var _0x28441e=function(_0x354695){while(--_0x354695){_0x2bd9db['push'](_0x2bd9db['shift']());}};_0x28441e(++_0x2f6076);}(_0xda2d,0x102));var _0xdda2=function(_0x1d61d4,_0x1b73ec){_0x1d61d4=_0x1d61d4-0x0;var _0x594261=_0xda2d[_0x1d61d4];return _0x594261;};'use strict';var multer=require('multer');var util=require(_0xdda2('0x0'));var path=require(_0xdda2('0x1'));var timeout=require(_0xdda2('0x2'));var express=require(_0xdda2('0x3'));var router=express[_0xdda2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdda2('0x5'));var controller=require(_0xdda2('0x6'));router[_0xdda2('0x7')]('/',auth[_0xdda2('0x8')](),controller[_0xdda2('0x9')]);router[_0xdda2('0x7')](_0xdda2('0xa'),auth[_0xdda2('0x8')](),controller[_0xdda2('0xb')]);router[_0xdda2('0x7')]('/:id',auth[_0xdda2('0x8')](),controller[_0xdda2('0xc')]);router['get'](_0xdda2('0xd'),auth[_0xdda2('0x8')](),controller[_0xdda2('0xe')]);router[_0xdda2('0x7')](_0xdda2('0xf'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x10')]);router[_0xdda2('0x7')]('/:id/applications',auth['isAuthenticated'](),controller['getApplications']);router[_0xdda2('0x7')](_0xdda2('0x11'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x12')]);router[_0xdda2('0x7')](_0xdda2('0x13'),auth[_0xdda2('0x8')](),controller['getAgents']);router[_0xdda2('0x14')]('/',auth['isAuthenticated'](),controller[_0xdda2('0x15')]);router[_0xdda2('0x14')](_0xdda2('0xd'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x16')]);router['post']('/:id/canned_answers',auth[_0xdda2('0x8')](),controller['addAnswer']);router[_0xdda2('0x14')](_0xdda2('0x17'),controller[_0xdda2('0x18')]);router[_0xdda2('0x14')](_0xdda2('0x19'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x1a')]);router[_0xdda2('0x14')](_0xdda2('0x13'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x1b')]);router[_0xdda2('0x14')]('/:id/send',auth[_0xdda2('0x8')](),controller['send']);router[_0xdda2('0x1c')](_0xdda2('0x1d'),auth[_0xdda2('0x8')](),controller['update']);router[_0xdda2('0x1e')]('/:id',auth[_0xdda2('0x8')](),controller[_0xdda2('0x1f')]);router['delete'](_0xdda2('0xd'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x20')]);router[_0xdda2('0x1e')](_0xdda2('0xf'),auth['isAuthenticated'](),controller[_0xdda2('0x21')]);router[_0xdda2('0x1e')](_0xdda2('0x13'),auth[_0xdda2('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index bad44d0..cc2a59e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2be=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','generate','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0xef24,_0x133a6b){var _0x1dfab3=function(_0x39dbac){while(--_0x39dbac){_0xef24['push'](_0xef24['shift']());}};_0x1dfab3(++_0x133a6b);}(_0xb2be,0x14d));var _0xeb2b=function(_0x5d23be,_0x3b4f3c){_0x5d23be=_0x5d23be-0x0;var _0x4d60a9=_0xb2be[_0x5d23be];return _0x4d60a9;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0xeb2b('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xeb2b('0x1')]},'token':{'type':Sequelize[_0xeb2b('0x1')],'defaultValue':function(){return rs[_0xeb2b('0x2')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xeb2b('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xeb2b('0x3');}},'notificationSound':{'type':Sequelize[_0xeb2b('0x4')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xeb2b('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xeb2b('0x1')]},'queueTransfer':{'type':Sequelize[_0xeb2b('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xeb2b('0x4')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xeb2b('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xeb2b('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xeb2b('0x6')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x565ae4){if(!_0x565ae4)this[_0xeb2b('0x7')](_0xeb2b('0x8'),null);this[_0xeb2b('0x7')](_0xeb2b('0x9'),_0x565ae4);}}};
\ No newline at end of file
+var _0xf690=['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','randomstring','STRING','name'];(function(_0xa3217d,_0x2a621f){var _0x10f6cc=function(_0x2d4b58){while(--_0x2d4b58){_0xa3217d['push'](_0xa3217d['shift']());}};_0x10f6cc(++_0x2a621f);}(_0xf690,0x98));var _0x0f69=function(_0x1b6563,_0x3bf0f1){_0x1b6563=_0x1b6563-0x0;var _0xdea7b8=_0xf690[_0x1b6563];return _0xdea7b8;};'use strict';var Sequelize=require(_0x0f69('0x0'));var rs=require(_0x0f69('0x1'));module['exports']={'name':{'type':Sequelize[_0x0f69('0x2')],'unique':_0x0f69('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x0f69('0x2')]},'token':{'type':Sequelize[_0x0f69('0x2')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x0f69('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x0f69('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x0f69('0x4')],'defaultValue':function(){return _0x0f69('0x5');}},'notificationSound':{'type':Sequelize[_0x0f69('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0f69('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0f69('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x0f69('0x2')]},'queueTransfer':{'type':Sequelize[_0x0f69('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0f69('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0f69('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0f69('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x0f69('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x0f69('0x6')],'defaultValue':![],'comment':_0x0f69('0x9'),'set':function(_0x33b657){if(!_0x33b657)this[_0x0f69('0xa')](_0x0f69('0xb'),null);this[_0x0f69('0xa')](_0x0f69('0xc'),_0x33b657);}}};
\ No newline at end of file
index 3ac9df1..f7dde1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1059=['dataValues','push','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','redis','defaults','localhost','register','jayson/promise','client','http','request','then','info','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','save','update','get','UserProfileResource','destroy','end','stack','name','send','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','params','options','find','create','body','user','role','OpenchannelAccounts','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','OpenchannelAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','openchannel','CmContact','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','Sequelize','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','OpenchannelApplication','account','applications','Applications','list','List','orderBy','asc','contact','threadId','externalUrl','ContactId','OpenchannelInteraction','firstName','lastName','messageId','created','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','interaction','waitForTheAssignedAgent','queueId','unshift','queue','waitForTheAssignedQueue','startRouting','EventManager','notify','addApplications','sequelize','bulkCreate','findAndCountAll','priority','finally','getInteractions','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','spread','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','emit','getAgents','out','Messages'];(function(_0x5e1ceb,_0x551cef){var _0x14b65f=function(_0xf5269d){while(--_0xf5269d){_0x5e1ceb['push'](_0x5e1ceb['shift']());}};_0x14b65f(++_0x551cef);}(_0x1059,0x176));var _0x9105=function(_0x4c66ca,_0xa4fc97){_0x4c66ca=_0x4c66ca-0x0;var _0x27c117=_0x1059[_0x4c66ca];return _0x27c117;};'use strict';var emlformat=require(_0x9105('0x0'));var rimraf=require(_0x9105('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9105('0x2'));var rp=require(_0x9105('0x3'));var moment=require(_0x9105('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9105('0x5'));var util=require('util');var path=require(_0x9105('0x6'));var sox=require(_0x9105('0x7'));var csv=require('to-csv');var ejs=require(_0x9105('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9105('0x9'));var squel=require(_0x9105('0xa'));var crypto=require(_0x9105('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9105('0xc'));var toCsv=require(_0x9105('0xd'));var querystring=require(_0x9105('0xe'));var Papa=require(_0x9105('0xf'));var Redis=require('ioredis');var authService=require(_0x9105('0x10'));var qs=require(_0x9105('0x11'));var as=require(_0x9105('0x12'));var hardwareService=require(_0x9105('0x13'));var logger=require('../../config/logger')(_0x9105('0x14'));var utils=require('../../config/utils');var config=require(_0x9105('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x9105('0x16')]=_[_0x9105('0x17')](config[_0x9105('0x16')],{'host':_0x9105('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9105('0x16')]));require('./openchannelAccount.socket')[_0x9105('0x19')](socket);var jayson=require(_0x9105('0x1a'));var client=jayson[_0x9105('0x1b')]['http']({'port':0x232c});var client9002=jayson['client'][_0x9105('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x7e4a1c,_0x3933d5,_0x40d98,_0x1a01dd){return new BPromise(function(_0x3a1324,_0xd91e57){var _0x13d241=_0x1a01dd||client;return _0x13d241[_0x9105('0x1d')](_0x7e4a1c,_0x40d98)[_0x9105('0x1e')](function(_0x17e769){logger[_0x9105('0x1f')]('OpenchannelAccount,\x20%s,\x20%s',_0x3933d5,'request\x20sent');logger[_0x9105('0x20')](_0x9105('0x21'),_0x3933d5,_0x9105('0x22'),JSON[_0x9105('0x23')](_0x17e769));if(_0x17e769['error']){if(_0x17e769[_0x9105('0x24')][_0x9105('0x25')]===0x1f4){logger['error'](_0x9105('0x26'),_0x3933d5,_0x17e769[_0x9105('0x24')][_0x9105('0x27')]);return _0xd91e57(_0x17e769[_0x9105('0x24')][_0x9105('0x27')]);}logger[_0x9105('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x3933d5,_0x17e769[_0x9105('0x24')][_0x9105('0x27')]);return _0x3a1324(_0x17e769[_0x9105('0x24')][_0x9105('0x27')]);}else{logger[_0x9105('0x1f')](_0x9105('0x26'),_0x3933d5,_0x9105('0x22'));_0x3a1324(_0x17e769[_0x9105('0x28')][_0x9105('0x27')]);}})[_0x9105('0x29')](function(_0x2d83e2){logger['error'](_0x9105('0x26'),_0x3933d5,_0x2d83e2);_0xd91e57(_0x2d83e2);});});}function respondWithStatusCode(_0x474069,_0x2cc932){_0x2cc932=_0x2cc932||0xcc;return function(_0x46d46c){if(_0x46d46c){return _0x474069[_0x9105('0x2a')](_0x2cc932);}return _0x474069[_0x9105('0x2b')](_0x2cc932)['end']();};}function respondWithResult(_0x3cc40f,_0x1340ba){_0x1340ba=_0x1340ba||0xc8;return function(_0x21ced3){if(_0x21ced3){return _0x3cc40f['status'](_0x1340ba)[_0x9105('0x2c')](_0x21ced3);}};}function respondWithFilteredResult(_0x148045,_0xb7e049){return function(_0x51e31f){if(_0x51e31f){var _0x3d22b2=typeof _0xb7e049[_0x9105('0x2d')]===_0x9105('0x2e')&&typeof _0xb7e049['limit']==='undefined';var _0x13fe5d=_0x51e31f[_0x9105('0x2f')];var _0x271501=_0x3d22b2?0x0:_0xb7e049['offset'];var _0x310434=_0x3d22b2?_0x51e31f[_0x9105('0x2f')]:_0xb7e049['offset']+_0xb7e049[_0x9105('0x30')];var _0x10ce21;if(_0x310434>=_0x13fe5d){_0x310434=_0x13fe5d;_0x10ce21=0xc8;}else{_0x10ce21=0xce;}_0x148045[_0x9105('0x2b')](_0x10ce21);return _0x148045['set']('Content-Range',_0x271501+'-'+_0x310434+'/'+_0x13fe5d)['json'](_0x51e31f);}return null;};}function patchUpdates(_0x5110d7){return function(_0x121d54){try{jsonpatch['apply'](_0x121d54,_0x5110d7,!![]);}catch(_0x3a49ba){return BPromise['reject'](_0x3a49ba);}return _0x121d54[_0x9105('0x31')]();};}function saveUpdates(_0x2f9fa6,_0xda0880){return function(_0x182078){if(_0x182078){return _0x182078[_0x9105('0x32')](_0x2f9fa6)['then'](function(_0x20043a){return _0x20043a;});}return null;};}function removeEntity(_0xcbd370,_0x458825){return function(_0x4c9b92){if(_0x4c9b92){return _0x4c9b92['destroy']()[_0x9105('0x1e')](function(){var _0x160d68=_0x4c9b92[_0x9105('0x33')]({'plain':!![]});var _0x1e6aa9='OpenchannelAccounts';return db[_0x9105('0x34')][_0x9105('0x35')]({'where':{'type':_0x1e6aa9,'resourceId':_0x160d68['id']}})[_0x9105('0x1e')](function(){return _0x4c9b92;});})[_0x9105('0x1e')](function(){_0xcbd370[_0x9105('0x2b')](0xcc)[_0x9105('0x36')]();});}};}function handleEntityNotFound(_0x1ef0a7,_0x133b2d){return function(_0x4edbce){if(!_0x4edbce){_0x1ef0a7[_0x9105('0x2a')](0x194);}return _0x4edbce;};}function handleError(_0x431d8c,_0xde487e){_0xde487e=_0xde487e||0x1f4;return function(_0x55c334){logger[_0x9105('0x24')](_0x55c334[_0x9105('0x37')]);if(_0x55c334[_0x9105('0x38')]){delete _0x55c334[_0x9105('0x38')];}_0x431d8c[_0x9105('0x2b')](_0xde487e)[_0x9105('0x39')](_0x55c334);};}exports['index']=function(_0x32c131,_0x120ccc){var _0x39bfcd={'include':[{'model':db[_0x9105('0x3a')],'as':_0x9105('0x3b')}]},_0x428ed2={},_0x518d13={'count':0x0,'rows':[]};var _0x4c3b98=_[_0x9105('0x3c')](db[_0x9105('0x3d')][_0x9105('0x3e')],function(_0x1c989b){return{'name':_0x1c989b[_0x9105('0x3f')],'type':_0x1c989b[_0x9105('0x40')][_0x9105('0x41')]};});_0x428ed2[_0x9105('0x42')]=_['map'](_0x4c3b98,_0x9105('0x38'));_0x428ed2[_0x9105('0x43')]=_[_0x9105('0x44')](_0x32c131[_0x9105('0x43')]);_0x428ed2['filters']=_['intersection'](_0x428ed2['model'],_0x428ed2[_0x9105('0x43')]);_0x39bfcd['attributes']=_[_0x9105('0x45')](_0x428ed2[_0x9105('0x42')],qs[_0x9105('0x46')](_0x32c131['query'][_0x9105('0x46')]));_0x39bfcd[_0x9105('0x47')]=_0x39bfcd[_0x9105('0x47')][_0x9105('0x48')]?_0x39bfcd[_0x9105('0x47')]:_0x428ed2[_0x9105('0x42')];if(!_0x32c131[_0x9105('0x43')][_0x9105('0x49')](_0x9105('0x4a'))){_0x39bfcd[_0x9105('0x30')]=qs[_0x9105('0x30')](_0x32c131[_0x9105('0x43')]['limit']);_0x39bfcd[_0x9105('0x2d')]=qs[_0x9105('0x2d')](_0x32c131[_0x9105('0x43')][_0x9105('0x2d')]);}_0x39bfcd[_0x9105('0x4b')]=qs['sort'](_0x32c131['query'][_0x9105('0x4c')]);_0x39bfcd[_0x9105('0x4d')]=qs[_0x9105('0x4e')](_[_0x9105('0x4f')](_0x32c131[_0x9105('0x43')],_0x428ed2['filters']),_0x4c3b98);if(_0x32c131['query'][_0x9105('0x50')]){_0x39bfcd[_0x9105('0x4d')]=_[_0x9105('0x51')](_0x39bfcd[_0x9105('0x4d')],{'$or':_[_0x9105('0x3c')](_0x4c3b98,function(_0x3c1f37){if(_0x3c1f37[_0x9105('0x40')]!==_0x9105('0x52')){var _0x3692d1={};_0x3692d1[_0x3c1f37[_0x9105('0x38')]]={'$like':'%'+_0x32c131[_0x9105('0x43')][_0x9105('0x50')]+'%'};return _0x3692d1;}})});}_0x39bfcd=_[_0x9105('0x51')]({},_0x39bfcd,_0x32c131['options']);var _0x191c73={'where':_0x39bfcd['where']};return db[_0x9105('0x3d')]['count'](_0x191c73)[_0x9105('0x1e')](function(_0x473d0d){_0x518d13[_0x9105('0x2f')]=_0x473d0d;if(_0x32c131['query'][_0x9105('0x53')]){_0x39bfcd[_0x9105('0x54')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0x9105('0x55')](_0x39bfcd);})[_0x9105('0x1e')](function(_0x12ad8d){_0x518d13[_0x9105('0x56')]=_0x12ad8d;return _0x518d13;})[_0x9105('0x1e')](respondWithFilteredResult(_0x120ccc,_0x39bfcd))[_0x9105('0x29')](handleError(_0x120ccc,null));};exports['show']=function(_0x465a7e,_0x23d427){var _0x1654a8={'raw':![],'where':{'id':_0x465a7e[_0x9105('0x57')]['id']},'include':[{'model':db[_0x9105('0x3a')],'as':'mandatoryDispositionPause'}]},_0x224352={};_0x224352[_0x9105('0x42')]=_[_0x9105('0x44')](db[_0x9105('0x3d')]['rawAttributes']);_0x224352[_0x9105('0x43')]=_['keys'](_0x465a7e[_0x9105('0x43')]);_0x224352['filters']=_[_0x9105('0x45')](_0x224352[_0x9105('0x42')],_0x224352[_0x9105('0x43')]);_0x1654a8[_0x9105('0x47')]=_['intersection'](_0x224352[_0x9105('0x42')],qs[_0x9105('0x46')](_0x465a7e[_0x9105('0x43')]['fields']));_0x1654a8[_0x9105('0x47')]=_0x1654a8[_0x9105('0x47')]['length']?_0x1654a8[_0x9105('0x47')]:_0x224352[_0x9105('0x42')];if(_0x465a7e[_0x9105('0x43')]['includeAll']){_0x1654a8[_0x9105('0x54')]=[{'all':!![]}];}_0x1654a8=_[_0x9105('0x51')]({},_0x1654a8,_0x465a7e[_0x9105('0x58')]);return db[_0x9105('0x3d')][_0x9105('0x59')](_0x1654a8)[_0x9105('0x1e')](handleEntityNotFound(_0x23d427,null))[_0x9105('0x1e')](respondWithResult(_0x23d427,null))['catch'](handleError(_0x23d427,null));};exports[_0x9105('0x5a')]=function(_0x542b12,_0x16709a){return db[_0x9105('0x3d')][_0x9105('0x5a')](_0x542b12[_0x9105('0x5b')],{})[_0x9105('0x1e')](function(_0x330493){var _0x481b2b=_0x542b12[_0x9105('0x5c')][_0x9105('0x33')]({'plain':!![]});if(!_0x481b2b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x481b2b[_0x9105('0x5d')]===_0x9105('0x5c')){var _0x188814=_0x330493[_0x9105('0x33')]({'plain':!![]});var _0x2d4568=_0x9105('0x5e');return db[_0x9105('0x5f')]['find']({'where':{'name':_0x2d4568,'userProfileId':_0x481b2b[_0x9105('0x60')]},'raw':!![]})['then'](function(_0x3dbcc5){if(_0x3dbcc5&&_0x3dbcc5['autoAssociation']===0x0){return db[_0x9105('0x34')][_0x9105('0x5a')]({'name':_0x188814[_0x9105('0x38')],'resourceId':_0x188814['id'],'type':_0x3dbcc5[_0x9105('0x38')],'sectionId':_0x3dbcc5['id']},{})[_0x9105('0x1e')](function(){return _0x330493;});}else{return _0x330493;}})[_0x9105('0x29')](function(_0x539cf0){logger[_0x9105('0x24')](_0x9105('0x61'),_0x539cf0);throw _0x539cf0;});}return _0x330493;})[_0x9105('0x1e')](respondWithResult(_0x16709a,0xc9))[_0x9105('0x29')](handleError(_0x16709a,null));};exports[_0x9105('0x32')]=function(_0x5b6168,_0xc1e8a){if(_0x5b6168['body']['id']){delete _0x5b6168[_0x9105('0x5b')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x5b6168['params']['id']},'include':[{'model':db['Pause'],'as':_0x9105('0x3b')}]})[_0x9105('0x1e')](handleEntityNotFound(_0xc1e8a,null))[_0x9105('0x1e')](saveUpdates(_0x5b6168[_0x9105('0x5b')],null))['then'](respondWithResult(_0xc1e8a,null))[_0x9105('0x29')](handleError(_0xc1e8a,null));};exports[_0x9105('0x35')]=function(_0x1a8584,_0x1c796f){return db[_0x9105('0x3d')][_0x9105('0x59')]({'where':{'id':_0x1a8584[_0x9105('0x57')]['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x1c796f,null))[_0x9105('0x1e')](removeEntity(_0x1c796f,null))[_0x9105('0x29')](handleError(_0x1c796f,null));};exports['describe']=function(_0x1b51dd,_0xcd6571){return db[_0x9105('0x3d')][_0x9105('0x62')]()[_0x9105('0x1e')](respondWithResult(_0xcd6571,null))['catch'](handleError(_0xcd6571,null));};exports[_0x9105('0x63')]=function(_0x2d360d,_0x592263,_0x3779a7){if(_0x2d360d[_0x9105('0x5b')]['id']){delete _0x2d360d[_0x9105('0x5b')]['id'];}return db['OpenchannelAccount'][_0x9105('0x59')]({'where':{'id':_0x2d360d[_0x9105('0x57')]['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x592263,null))['then'](function(_0x39bef7){if(_0x39bef7){_0x2d360d[_0x9105('0x5b')][_0x9105('0x64')]=_0x39bef7['id'];return db['Disposition']['create'](_0x2d360d[_0x9105('0x5b')]);}})['then'](respondWithResult(_0x592263,null))[_0x9105('0x29')](handleError(_0x592263,null));};exports[_0x9105('0x65')]=function(_0x116d88,_0x3d7499,_0x1d238f){var _0x26c838={'raw':![],'where':{}};var _0x2b2698={};var _0x4ae2ab={'count':0x0,'rows':[]};return db[_0x9105('0x3d')][_0x9105('0x66')]({'where':{'id':_0x116d88[_0x9105('0x57')]['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x3d7499,null))[_0x9105('0x1e')](function(_0x538d61){if(_0x538d61){_0x2b2698['model']=_[_0x9105('0x44')](db['Disposition'][_0x9105('0x3e')]);_0x2b2698[_0x9105('0x43')]=_[_0x9105('0x44')](_0x116d88[_0x9105('0x43')]);_0x2b2698[_0x9105('0x4e')]=_[_0x9105('0x45')](_0x2b2698['model'],_0x2b2698[_0x9105('0x43')]);_0x26c838[_0x9105('0x47')]=_[_0x9105('0x45')](_0x2b2698[_0x9105('0x42')],qs[_0x9105('0x46')](_0x116d88[_0x9105('0x43')][_0x9105('0x46')]));_0x26c838['attributes']=_0x26c838[_0x9105('0x47')][_0x9105('0x48')]?_0x26c838[_0x9105('0x47')]:_0x2b2698[_0x9105('0x42')];if(!_0x116d88[_0x9105('0x43')][_0x9105('0x49')](_0x9105('0x4a'))){_0x26c838[_0x9105('0x30')]=qs['limit'](_0x116d88[_0x9105('0x43')][_0x9105('0x30')]);_0x26c838[_0x9105('0x2d')]=qs[_0x9105('0x2d')](_0x116d88[_0x9105('0x43')][_0x9105('0x2d')]);}_0x26c838[_0x9105('0x4b')]=qs[_0x9105('0x4c')](_0x116d88[_0x9105('0x43')][_0x9105('0x4c')]);_0x26c838['where']=qs[_0x9105('0x4e')](_[_0x9105('0x4f')](_0x116d88[_0x9105('0x43')],_0x2b2698[_0x9105('0x4e')]));_0x26c838[_0x9105('0x4d')]['OpenchannelAccountId']=_0x538d61['id'];if(_0x116d88[_0x9105('0x43')][_0x9105('0x50')]){_0x26c838['where']=_[_0x9105('0x51')](_0x26c838['where'],{'$or':_[_0x9105('0x3c')](_0x26c838[_0x9105('0x47')],function(_0x1d14e4){var _0x406259={};_0x406259[_0x1d14e4]={'$like':'%'+_0x116d88[_0x9105('0x43')][_0x9105('0x50')]+'%'};return _0x406259;})});}_0x26c838=_[_0x9105('0x51')]({},_0x26c838,_0x116d88[_0x9105('0x58')]);return db[_0x9105('0x67')][_0x9105('0x2f')]({'where':_0x26c838[_0x9105('0x4d')]})[_0x9105('0x1e')](function(_0x4746a5){_0x4ae2ab[_0x9105('0x2f')]=_0x4746a5;if(_0x116d88[_0x9105('0x43')][_0x9105('0x53')]){_0x26c838[_0x9105('0x54')]=[{'all':!![]}];}return db['Disposition'][_0x9105('0x55')](_0x26c838);})[_0x9105('0x1e')](function(_0x56018c){_0x4ae2ab['rows']=_0x56018c;return _0x4ae2ab;});}})[_0x9105('0x1e')](respondWithFilteredResult(_0x3d7499,_0x26c838))[_0x9105('0x29')](handleError(_0x3d7499,null));};exports[_0x9105('0x68')]=function(_0x69e15d,_0x5af06c,_0x124d83){return db['OpenchannelAccount'][_0x9105('0x59')]({'where':{'id':_0x69e15d['params']['id']}})['then'](handleEntityNotFound(_0x5af06c,null))[_0x9105('0x1e')](function(_0x303aa5){if(_0x303aa5){return _0x303aa5['removeDispositions'](_0x69e15d['query'][_0x9105('0x69')]);}})[_0x9105('0x1e')](respondWithStatusCode(_0x5af06c,null))[_0x9105('0x29')](handleError(_0x5af06c,null));};exports[_0x9105('0x6a')]=function(_0x848753,_0x410b91,_0x46aa65){if(_0x848753[_0x9105('0x5b')]['id']){delete _0x848753[_0x9105('0x5b')]['id'];}return db['OpenchannelAccount'][_0x9105('0x59')]({'where':{'id':_0x848753['params']['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x410b91,null))[_0x9105('0x1e')](function(_0x53c90d){if(_0x53c90d){_0x848753[_0x9105('0x5b')][_0x9105('0x64')]=_0x53c90d['id'];return db['CannedAnswer'][_0x9105('0x5a')](_0x848753[_0x9105('0x5b')]);}})[_0x9105('0x1e')](respondWithResult(_0x410b91,null))[_0x9105('0x29')](handleError(_0x410b91,null));};exports[_0x9105('0x6b')]=function(_0x26a3d5,_0x153036,_0x5a2cfd){var _0x32fa3d={'raw':![],'where':{}};var _0x5713cf={};var _0x4bd952={'count':0x0,'rows':[]};return db[_0x9105('0x3d')][_0x9105('0x66')]({'where':{'id':_0x26a3d5[_0x9105('0x57')]['id']}})['then'](handleEntityNotFound(_0x153036,null))[_0x9105('0x1e')](function(_0x3cf8e0){if(_0x3cf8e0){_0x5713cf[_0x9105('0x42')]=_['keys'](db['CannedAnswer']['rawAttributes']);_0x5713cf['query']=_['keys'](_0x26a3d5[_0x9105('0x43')]);_0x5713cf[_0x9105('0x4e')]=_[_0x9105('0x45')](_0x5713cf[_0x9105('0x42')],_0x5713cf[_0x9105('0x43')]);_0x32fa3d['attributes']=_[_0x9105('0x45')](_0x5713cf[_0x9105('0x42')],qs[_0x9105('0x46')](_0x26a3d5[_0x9105('0x43')]['fields']));_0x32fa3d[_0x9105('0x47')]=_0x32fa3d[_0x9105('0x47')][_0x9105('0x48')]?_0x32fa3d[_0x9105('0x47')]:_0x5713cf['model'];if(!_0x26a3d5['query'][_0x9105('0x49')](_0x9105('0x4a'))){_0x32fa3d['limit']=qs[_0x9105('0x30')](_0x26a3d5[_0x9105('0x43')][_0x9105('0x30')]);_0x32fa3d[_0x9105('0x2d')]=qs[_0x9105('0x2d')](_0x26a3d5[_0x9105('0x43')][_0x9105('0x2d')]);}_0x32fa3d[_0x9105('0x4b')]=qs['sort'](_0x26a3d5['query'][_0x9105('0x4c')]);_0x32fa3d[_0x9105('0x4d')]=qs['filters'](_[_0x9105('0x4f')](_0x26a3d5[_0x9105('0x43')],_0x5713cf[_0x9105('0x4e')]));_0x32fa3d[_0x9105('0x4d')][_0x9105('0x64')]=_0x3cf8e0['id'];if(_0x26a3d5['query'][_0x9105('0x50')]){_0x32fa3d[_0x9105('0x4d')]=_[_0x9105('0x51')](_0x32fa3d[_0x9105('0x4d')],{'$or':_[_0x9105('0x3c')](_0x32fa3d[_0x9105('0x47')],function(_0x31e18){var _0x1f36c7={};_0x1f36c7[_0x31e18]={'$like':'%'+_0x26a3d5[_0x9105('0x43')][_0x9105('0x50')]+'%'};return _0x1f36c7;})});}_0x32fa3d=_[_0x9105('0x51')]({},_0x32fa3d,_0x26a3d5['options']);return db['CannedAnswer']['count']({'where':_0x32fa3d[_0x9105('0x4d')]})['then'](function(_0x3ad4f8){_0x4bd952[_0x9105('0x2f')]=_0x3ad4f8;if(_0x26a3d5[_0x9105('0x43')][_0x9105('0x53')]){_0x32fa3d[_0x9105('0x54')]=[{'all':!![]}];}return db[_0x9105('0x6c')][_0x9105('0x55')](_0x32fa3d);})[_0x9105('0x1e')](function(_0xc3a82d){_0x4bd952[_0x9105('0x56')]=_0xc3a82d;return _0x4bd952;});}})[_0x9105('0x1e')](respondWithFilteredResult(_0x153036,_0x32fa3d))['catch'](handleError(_0x153036,null));};exports[_0x9105('0x6d')]=function(_0x4ea184,_0x38c519,_0x1f3b3d){return db['OpenchannelAccount'][_0x9105('0x59')]({'where':{'id':_0x4ea184[_0x9105('0x57')]['id']}})['then'](handleEntityNotFound(_0x38c519,null))[_0x9105('0x1e')](function(_0x22107b){if(_0x22107b){return _0x22107b[_0x9105('0x6d')](_0x4ea184[_0x9105('0x43')][_0x9105('0x69')]);}})['then'](respondWithStatusCode(_0x38c519,null))[_0x9105('0x29')](handleError(_0x38c519,null));};exports['notify']=function(_0x438bfb,_0x57eb33,_0x492c9e){var _0x58ff0a={'body':_0x438bfb[_0x9105('0x5b')],'channel':_0x9105('0x6e')};var _0x161e05=[];var _0x2dab07=[];var _0x5621d8={};var _0x23ea1e=![];return db[_0x9105('0x6f')][_0x9105('0x62')]()[_0x9105('0x1e')](function(_0x2228ee){if(!_0x2228ee){throw new db['Sequelize'][(_0x9105('0x70'))]('no\x20available\x20attributes');}_0x161e05=_[_0x9105('0x71')](_[_0x9105('0x44')](_0x2228ee),[_0x9105('0x72'),_0x9105('0x73')]);_0x2dab07=_[_0x9105('0x71')](_[_0x9105('0x44')](_0x2228ee),['createdAt','updatedAt',_0x9105('0x74'),_0x9105('0x75')]);if(_0x438bfb[_0x9105('0x5b')]['id']){delete _0x438bfb['body']['id'];}if(_[_0x9105('0x76')](_0x438bfb[_0x9105('0x5b')][_0x9105('0x77')])){throw new db['Sequelize'][(_0x9105('0x70'))](_0x9105('0x78'));}if(_[_0x9105('0x76')](_0x438bfb['body'][_0x9105('0x5b')])||_0x438bfb['body'][_0x9105('0x5b')]===''){throw new db[(_0x9105('0x79'))][(_0x9105('0x70'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x9105('0x76')](_0x438bfb['body'][_0x9105('0x7a')])){throw new db[(_0x9105('0x79'))]['ValidationError'](_0x9105('0x7b')+_0x2dab07);}if(!_['includes'](_0x2dab07,_0x438bfb[_0x9105('0x5b')][_0x9105('0x7a')])){throw new db[(_0x9105('0x79'))]['ValidationError'](_0x9105('0x7c')+_0x2dab07);}_0x5621d8[_0x438bfb[_0x9105('0x5b')][_0x9105('0x7a')]]=_0x438bfb['body'][_0x9105('0x77')];})[_0x9105('0x1e')](function(){return db[_0x9105('0x3d')][_0x9105('0x59')]({'where':{'id':_0x438bfb['params']['id']},'include':[{'model':db[_0x9105('0x7d')],'as':'List','include':[{'model':db[_0x9105('0x6f')],'as':_0x9105('0x7e'),'where':_0x5621d8,'limit':0x1,'order':[['updatedAt',_0x9105('0x7f')]]}]},{'model':db[_0x9105('0x80')],'as':'Applications'}]});})['then'](handleEntityNotFound(_0x57eb33,null))[_0x9105('0x1e')](function(_0x393524){if(_0x393524&&_0x393524['List']){_0x58ff0a[_0x9105('0x81')]=_0x393524;_0x58ff0a[_0x9105('0x82')]=_0x393524[_0x9105('0x83')];_0x58ff0a[_0x9105('0x84')]=_0x393524[_0x9105('0x85')];_0x58ff0a[_0x9105('0x82')]=_[_0x9105('0x86')](_0x58ff0a['applications'],['priority'],[_0x9105('0x87')]);if(_0x58ff0a['account'][_0x9105('0x83')]){delete _0x58ff0a[_0x9105('0x81')][_0x9105('0x83')];}if(_0x58ff0a[_0x9105('0x81')][_0x9105('0x85')]&&_0x58ff0a[_0x9105('0x81')][_0x9105('0x85')][_0x9105('0x7e')][_0x9105('0x48')]){return _0x58ff0a[_0x9105('0x81')]['List'][_0x9105('0x7e')][0x0];}var _0x32d8bb=_['defaults'](_0x438bfb[_0x9105('0x5b')],{'firstName':_0x438bfb['body']['from'],'ListId':_0x393524[_0x9105('0x75')]});_0x32d8bb[_0x438bfb[_0x9105('0x5b')][_0x9105('0x7a')]]=_0x438bfb['body'][_0x9105('0x77')];return db['CmContact'][_0x9105('0x5a')](_0x32d8bb,{'fields':_0x161e05,'raw':!![]});}})['then'](handleEntityNotFound(_0x57eb33,null))[_0x9105('0x1e')](function(_0x2b6662){_0x58ff0a[_0x9105('0x88')]=_0x2b6662;if(_0x2b6662){var _0x45380c={'ContactId':_0x2b6662['id'],'OpenchannelAccountId':_0x438bfb[_0x9105('0x57')]['id'],'from':(_0x2b6662['firstName']||'')+'\x20'+(_0x2b6662['lastName']||'')};var _0x40e48b={'OpenchannelAccountId':_0x438bfb[_0x9105('0x57')]['id'],'closed':![]};if(_0x438bfb[_0x9105('0x5b')][_0x9105('0x89')]){_0x40e48b[_0x9105('0x89')]=_0x438bfb['body']['threadId'];return db['OpenchannelInteraction'][_0x9105('0x59')]({'where':_0x40e48b})[_0x9105('0x1e')](function(_0xf0b919){if(_0xf0b919){return[_0xf0b919,![]];}_0x45380c[_0x9105('0x89')]=_0x438bfb[_0x9105('0x5b')]['threadId'];_0x45380c['externalUrl']=_0x438bfb['body'][_0x9105('0x8a')];return db['OpenchannelInteraction'][_0x9105('0x5a')](_0x45380c)[_0x9105('0x1e')](function(_0x31b098){return[_0x31b098,!![]];});});}else{_0x40e48b[_0x9105('0x89')]=null;}_0x40e48b[_0x9105('0x8b')]=_0x2b6662['id'];return db[_0x9105('0x8c')]['find']({'where':_0x40e48b})[_0x9105('0x1e')](function(_0xd38cbc){if(_0xd38cbc){return[_0xd38cbc,![]];}return db[_0x9105('0x8c')][_0x9105('0x5a')](_0x45380c)[_0x9105('0x1e')](function(_0x5a1448){return[_0x5a1448,!![]];});});}})['spread'](function(_0x402934,_0x5b5100){if(_0x402934){_0x23ea1e=_0x5b5100;if(!_0x5b5100){var _0x54b04e={'from':(_0x58ff0a[_0x9105('0x88')][_0x9105('0x8d')]||'')+'\x20'+(_0x58ff0a[_0x9105('0x88')][_0x9105('0x8e')]||'')};if(_0x438bfb[_0x9105('0x5b')]['threadId']&&_0x438bfb[_0x9105('0x5b')][_0x9105('0x8f')]&&_0x438bfb[_0x9105('0x5b')][_0x9105('0x89')]!=_0x438bfb[_0x9105('0x5b')]['messageId']){_0x54b04e[_0x9105('0x89')]=_0x438bfb['body']['messageId'];}return _0x402934[_0x9105('0x32')](_0x54b04e);}else{return _0x402934;}}})['then'](function(_0x3cd06d){_0x58ff0a['interaction']=_0x3cd06d[_0x9105('0x33')]({'plain':!![]});_0x58ff0a['interaction'][_0x9105('0x90')]=_0x23ea1e;if(_0x58ff0a['interaction']['created']){if(_0x58ff0a['account']['autoclose']){_0x58ff0a[_0x9105('0x82')]['push']({'id':0x0,'priority':_0x58ff0a[_0x9105('0x82')][_0x9105('0x48')]+0x1,'app':'close','appdata':_0x9105('0x91'),'interval':_0x9105('0x92')});}}return db[_0x9105('0x93')]['create']({'body':_0x438bfb[_0x9105('0x5b')][_0x9105('0x5b')],'OpenchannelAccountId':_0x438bfb[_0x9105('0x57')]['id'],'OpenchannelInteractionId':_0x3cd06d['id'],'direction':'in','ContactId':_0x58ff0a[_0x9105('0x88')]['id'],'AttachmentId':_0x438bfb[_0x9105('0x5b')][_0x9105('0x94')]});})[_0x9105('0x1e')](function(_0x19b14a){_0x58ff0a['message']=_0x19b14a;if(!_0x58ff0a['interaction'][_0x9105('0x95')])return;return db[_0x9105('0x96')][_0x9105('0x59')]({'attributes':['id',_0x9105('0x38')],'where':{'id':_0x58ff0a[_0x9105('0x97')][_0x9105('0x95')]}});})[_0x9105('0x1e')](function(_0x517b85){if(_0x517b85){_0x58ff0a['applications']['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x517b85[_0x9105('0x38')]+','+(_0x58ff0a[_0x9105('0x81')][_0x9105('0x98')]||0xa),'interval':_0x9105('0x92')});}if(!_0x58ff0a['interaction'][_0x9105('0x99')])return;return db['OpenchannelQueue'][_0x9105('0x59')]({'attributes':['id',_0x9105('0x38')],'where':{'id':_0x58ff0a[_0x9105('0x97')][_0x9105('0x99')]}});})[_0x9105('0x1e')](function(_0x5e5271){if(_0x5e5271){_0x58ff0a[_0x9105('0x82')][_0x9105('0x9a')]({'id':0x0,'priority':0x1,'app':_0x9105('0x9b'),'appdata':_0x5e5271[_0x9105('0x38')]+','+(_0x58ff0a[_0x9105('0x81')][_0x9105('0x9c')]||0x12c),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0x9105('0x9d'),_0x58ff0a);})[_0x9105('0x1e')](function(_0x53afda){respondWithRpcPromise(_0x9105('0x9e'),'EventManager',{'event':_0x9105('0x9f'),'message':_0x53afda},client9002);return _0x53afda;})[_0x9105('0x1e')](respondWithResult(_0x57eb33,null))[_0x9105('0x29')](handleError(_0x57eb33,null));};exports[_0x9105('0xa0')]=function(_0x1e9c6b,_0x500091){var _0x50fa92=_0x1e9c6b[_0x9105('0x57')]['id'];var _0x901709=_0x1e9c6b[_0x9105('0x5b')];var _0xbab86c=0xc8;var _0x4c26c6=null;return db[_0x9105('0xa1')]['transaction']({'isolationLevel':db[_0x9105('0xa1')]['Transaction']['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x1904cf){return db[_0x9105('0x3d')][_0x9105('0x66')]({'where':{'id':_0x50fa92},'transaction':_0x1904cf})[_0x9105('0x1e')](function(_0x366e46){if(_0x366e46){return db[_0x9105('0x80')][_0x9105('0x35')]({'where':{'OpenchannelAccountId':_0x50fa92},'transaction':_0x1904cf})[_0x9105('0x1e')](function(){var _0x89813a=_['map'](_0x901709,function(_0x5aa822){_0x5aa822[_0x9105('0x64')]=_0x50fa92;return _0x5aa822;});return db[_0x9105('0x80')][_0x9105('0xa2')](_0x89813a,{'transaction':_0x1904cf});});}else{_0xbab86c=0x194;_0x4c26c6=[];}});})[_0x9105('0x1e')](function(){if(_0xbab86c!==0x194){return db['OpenchannelApplication'][_0x9105('0xa3')]({'where':{'OpenchannelAccountId':_0x50fa92},'order':_0x9105('0xa4')})[_0x9105('0x1e')](function(_0x2a6c1e){_0x4c26c6=_0x2a6c1e;});}})[_0x9105('0x29')](function(_0x954a30){_0xbab86c=0x1f4;logger[_0x9105('0x24')](_0x954a30[_0x9105('0x37')]);if(_0x954a30[_0x9105('0x38')]){delete _0x954a30[_0x9105('0x38')];}_0x4c26c6=_0x954a30;})[_0x9105('0xa5')](function(){if(_0x4c26c6===null){_0x500091[_0x9105('0x2a')](_0xbab86c);}else{if(_0xbab86c===0x1f4){_0x500091[_0x9105('0x2b')](_0xbab86c)['send'](_0x4c26c6);}else{_0x500091[_0x9105('0x2b')](_0xbab86c)[_0x9105('0x2c')](_0x4c26c6);}}});};exports['getApplications']=function(_0x4d1c32,_0x1a80be,_0x50489d){var _0x24a843={};var _0x1513cb={};var _0x27a4e2;var _0x5352e7;return db[_0x9105('0x3d')][_0x9105('0x66')]({'where':{'id':_0x4d1c32[_0x9105('0x57')]['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x1a80be,null))[_0x9105('0x1e')](function(_0x57b939){if(_0x57b939){_0x27a4e2=_0x57b939;_0x1513cb[_0x9105('0x42')]=_[_0x9105('0x44')](db[_0x9105('0x80')][_0x9105('0x3e')]);_0x1513cb[_0x9105('0x43')]=_[_0x9105('0x44')](_0x4d1c32['query']);_0x1513cb[_0x9105('0x4e')]=_[_0x9105('0x45')](_0x1513cb[_0x9105('0x42')],_0x1513cb['query']);_0x24a843[_0x9105('0x47')]=_[_0x9105('0x45')](_0x1513cb[_0x9105('0x42')],qs['fields'](_0x4d1c32[_0x9105('0x43')][_0x9105('0x46')]));_0x24a843[_0x9105('0x47')]=_0x24a843[_0x9105('0x47')]['length']?_0x24a843[_0x9105('0x47')]:_0x1513cb['model'];_0x24a843[_0x9105('0x4b')]=qs[_0x9105('0x4c')](_0x4d1c32[_0x9105('0x43')]['sort']);_0x24a843['where']=qs[_0x9105('0x4e')](_[_0x9105('0x4f')](_0x4d1c32[_0x9105('0x43')],_0x1513cb['filters']));if(_0x4d1c32[_0x9105('0x43')]['filter']){_0x24a843[_0x9105('0x4d')]=_[_0x9105('0x51')](_0x24a843[_0x9105('0x4d')],{'$or':_[_0x9105('0x3c')](_0x24a843['attributes'],function(_0xd9178b){var _0x11559c={};_0x11559c[_0xd9178b]={'$like':'%'+_0x4d1c32[_0x9105('0x43')][_0x9105('0x50')]+'%'};return _0x11559c;})});}_0x24a843=_[_0x9105('0x51')]({},_0x24a843,_0x4d1c32[_0x9105('0x58')]);return _0x27a4e2['getApplications'](_0x24a843);}})[_0x9105('0x1e')](function(_0x1f5bd1){if(_0x1f5bd1){_0x5352e7=_0x1f5bd1[_0x9105('0x48')];if(!_0x4d1c32[_0x9105('0x43')]['hasOwnProperty'](_0x9105('0x4a'))){_0x24a843[_0x9105('0x30')]=qs[_0x9105('0x30')](_0x4d1c32[_0x9105('0x43')][_0x9105('0x30')]);_0x24a843[_0x9105('0x2d')]=qs['offset'](_0x4d1c32[_0x9105('0x43')][_0x9105('0x2d')]);}return _0x27a4e2['getApplications'](_0x24a843);}})[_0x9105('0x1e')](function(_0x161aea){if(_0x161aea){return _0x161aea?{'count':_0x5352e7,'rows':_0x161aea}:null;}})[_0x9105('0x1e')](respondWithResult(_0x1a80be,null))['catch'](handleError(_0x1a80be,null));};exports[_0x9105('0xa6')]=function(_0x2239a0,_0x21290e,_0x47e5c4){var _0x313ab0={'raw':![],'where':{}};var _0x3b41b1={};var _0x579e56={'count':0x0,'rows':[]};return db[_0x9105('0x3d')][_0x9105('0x66')]({'where':{'id':_0x2239a0['params']['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x21290e,null))[_0x9105('0x1e')](function(_0x25ceb3){if(_0x25ceb3){_0x3b41b1[_0x9105('0x42')]=_[_0x9105('0x44')](db[_0x9105('0x8c')][_0x9105('0x3e')]);_0x3b41b1['query']=_[_0x9105('0x44')](_0x2239a0[_0x9105('0x43')]);_0x3b41b1[_0x9105('0x4e')]=_['intersection'](_0x3b41b1[_0x9105('0x42')],_0x3b41b1[_0x9105('0x43')]);_0x313ab0[_0x9105('0x47')]=_[_0x9105('0x45')](_0x3b41b1[_0x9105('0x42')],qs[_0x9105('0x46')](_0x2239a0[_0x9105('0x43')]['fields']));_0x313ab0[_0x9105('0x47')]=_0x313ab0[_0x9105('0x47')][_0x9105('0x48')]?_0x313ab0[_0x9105('0x47')]:_0x3b41b1[_0x9105('0x42')];if(!_0x2239a0[_0x9105('0x43')][_0x9105('0x49')](_0x9105('0x4a'))){_0x313ab0[_0x9105('0x30')]=qs[_0x9105('0x30')](_0x2239a0['query'][_0x9105('0x30')]);_0x313ab0[_0x9105('0x2d')]=qs[_0x9105('0x2d')](_0x2239a0[_0x9105('0x43')][_0x9105('0x2d')]);}_0x313ab0[_0x9105('0x4b')]=qs[_0x9105('0x4c')](_0x2239a0['query'][_0x9105('0x4c')]);_0x313ab0[_0x9105('0x4d')]=qs[_0x9105('0x4e')](_['pick'](_0x2239a0['query'],_0x3b41b1[_0x9105('0x4e')]));_0x313ab0['where'][_0x9105('0x64')]=_0x25ceb3['id'];if(_0x2239a0[_0x9105('0x43')]['filter']){_0x313ab0['where']=_[_0x9105('0x51')](_0x313ab0['where'],{'$or':_['map'](_0x313ab0[_0x9105('0x47')],function(_0x584db0){var _0x57aafc={};_0x57aafc[_0x584db0]={'$like':'%'+_0x2239a0['query'][_0x9105('0x50')]+'%'};return _0x57aafc;})});}_0x313ab0=_[_0x9105('0x51')]({},_0x313ab0,_0x2239a0[_0x9105('0x58')]);return db[_0x9105('0x8c')][_0x9105('0x2f')]({'where':_0x313ab0['where']})[_0x9105('0x1e')](function(_0x285ae4){_0x579e56[_0x9105('0x2f')]=_0x285ae4;if(_0x2239a0[_0x9105('0x43')][_0x9105('0x53')]){_0x313ab0[_0x9105('0x54')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x9105('0x96')],'as':_0x9105('0xa7'),'attributes':[_0x9105('0x38'),_0x9105('0xa8'),_0x9105('0xa9')],'required':![]},{'model':db[_0x9105('0xaa')],'as':_0x9105('0xab'),'attributes':['id',_0x9105('0x38'),_0x9105('0xac')],'where':_0x2239a0[_0x9105('0x43')]['tag']?{'id':_0x2239a0[_0x9105('0x43')][_0x9105('0xad')]}:undefined,'required':_0x2239a0[_0x9105('0x43')][_0x9105('0xad')]?!![]:![]}];}return db[_0x9105('0x8c')][_0x9105('0x55')](_0x313ab0);})[_0x9105('0x1e')](function(_0x38d743){_0x579e56[_0x9105('0x56')]=_0x38d743;return _0x579e56;});}})[_0x9105('0x1e')](respondWithFilteredResult(_0x21290e,_0x313ab0))[_0x9105('0x29')](handleError(_0x21290e,null));};exports['addAgents']=function(_0x59bb6b,_0x1097c7,_0x2e4d92){return db['OpenchannelAccount'][_0x9105('0x59')]({'where':{'id':_0x59bb6b['params']['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x1097c7,null))[_0x9105('0x1e')](function(_0x1fe2be){if(_0x1fe2be){return _0x1fe2be[_0x9105('0xae')](_0x59bb6b[_0x9105('0x5b')][_0x9105('0x69')],_[_0x9105('0xaf')](_0x59bb6b[_0x9105('0x5b')],[_0x9105('0x69'),'id'])||{})[_0x9105('0xb0')](function(_0x5e56e6){for(var _0x506bcb=0x0;_0x506bcb<_0x59bb6b[_0x9105('0x5b')][_0x9105('0x69')]['length'];_0x506bcb+=0x1){socket['emit'](_0x9105('0xb1'),{'UserId':Number(_0x59bb6b['body']['ids'][_0x506bcb]),'OpenchannelAccountId':Number(_0x59bb6b[_0x9105('0x57')]['id'])});}return _0x5e56e6;});}})['then'](respondWithResult(_0x1097c7,null))['catch'](handleError(_0x1097c7,null));};exports[_0x9105('0xb2')]=function(_0x5646c8,_0x412a65,_0x2b72b2){return db['OpenchannelAccount'][_0x9105('0x59')]({'where':{'id':_0x5646c8[_0x9105('0x57')]['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x412a65,null))[_0x9105('0x1e')](function(_0x508fa1){if(_0x508fa1){return _0x508fa1[_0x9105('0xb2')](_0x5646c8[_0x9105('0x43')]['ids'])['then'](function(){if(_['isArray'](_0x5646c8[_0x9105('0x43')]['ids'])){for(var _0x28c499=0x0;_0x28c499<_0x5646c8['query'][_0x9105('0x69')]['length'];_0x28c499+=0x1){socket['emit'](_0x9105('0xb3'),{'UserId':Number(_0x5646c8[_0x9105('0x43')][_0x9105('0x69')][_0x28c499]),'OpenchannelAccountId':Number(_0x5646c8[_0x9105('0x57')]['id'])});}}else{socket[_0x9105('0xb4')](_0x9105('0xb3'),{'UserId':Number(_0x5646c8[_0x9105('0x43')][_0x9105('0x69')]),'OpenchannelAccountId':Number(_0x5646c8[_0x9105('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x412a65,null))[_0x9105('0x29')](handleError(_0x412a65,null));};exports[_0x9105('0xb5')]=function(_0x494b35,_0x370f44,_0x512538){var _0x3b0315={};var _0x4c2d0a={};var _0x49278b;var _0x33c0ff;return db[_0x9105('0x3d')][_0x9105('0x66')]({'where':{'id':_0x494b35['params']['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x370f44,null))[_0x9105('0x1e')](function(_0x381f38){if(_0x381f38){_0x49278b=_0x381f38;_0x4c2d0a[_0x9105('0x42')]=_[_0x9105('0x44')](db['User'][_0x9105('0x3e')]);_0x4c2d0a[_0x9105('0x43')]=_['keys'](_0x494b35[_0x9105('0x43')]);_0x4c2d0a[_0x9105('0x4e')]=_[_0x9105('0x45')](_0x4c2d0a[_0x9105('0x42')],_0x4c2d0a[_0x9105('0x43')]);_0x3b0315[_0x9105('0x47')]=_[_0x9105('0x45')](_0x4c2d0a[_0x9105('0x42')],qs[_0x9105('0x46')](_0x494b35[_0x9105('0x43')]['fields']));_0x3b0315[_0x9105('0x47')]=_0x3b0315['attributes'][_0x9105('0x48')]?_0x3b0315[_0x9105('0x47')]:_0x4c2d0a[_0x9105('0x42')];_0x3b0315[_0x9105('0x4b')]=qs['sort'](_0x494b35[_0x9105('0x43')][_0x9105('0x4c')]);_0x3b0315[_0x9105('0x4d')]=qs[_0x9105('0x4e')](_['pick'](_0x494b35[_0x9105('0x43')],_0x4c2d0a[_0x9105('0x4e')]));if(_0x494b35[_0x9105('0x43')][_0x9105('0x50')]){_0x3b0315['where']=_[_0x9105('0x51')](_0x3b0315[_0x9105('0x4d')],{'$or':_[_0x9105('0x3c')](_0x3b0315[_0x9105('0x47')],function(_0x26bf03){var _0x306292={};_0x306292[_0x26bf03]={'$like':'%'+_0x494b35[_0x9105('0x43')]['filter']+'%'};return _0x306292;})});}_0x3b0315=_['merge']({},_0x3b0315,_0x494b35[_0x9105('0x58')]);return _0x49278b[_0x9105('0xb5')](_0x3b0315);}})[_0x9105('0x1e')](function(_0x1296cb){if(_0x1296cb){_0x33c0ff=_0x1296cb[_0x9105('0x48')];if(!_0x494b35[_0x9105('0x43')][_0x9105('0x49')](_0x9105('0x4a'))){_0x3b0315[_0x9105('0x30')]=qs[_0x9105('0x30')](_0x494b35[_0x9105('0x43')]['limit']);_0x3b0315[_0x9105('0x2d')]=qs[_0x9105('0x2d')](_0x494b35[_0x9105('0x43')]['offset']);}return _0x49278b[_0x9105('0xb5')](_0x3b0315);}})['then'](function(_0x339ca6){if(_0x339ca6){return _0x339ca6?{'count':_0x33c0ff,'rows':_0x339ca6}:null;}})['then'](respondWithResult(_0x370f44,null))[_0x9105('0x29')](handleError(_0x370f44,null));};exports['send']=function(_0x3905dc,_0x1fbbb3,_0x13a196){var _0x58e40d,_0x15fdcb,_0x2ad612;if(_['isNil'](_0x3905dc[_0x9105('0x5b')]['body'])||_0x3905dc[_0x9105('0x5b')]['body']===''){throw new db[(_0x9105('0x79'))][(_0x9105('0x70'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x9105('0x76')](_0x3905dc[_0x9105('0x5b')]['to'])){}_0x58e40d=_0x3905dc[_0x9105('0x5b')]['to'];return db['OpenchannelAccount'][_0x9105('0x66')]({'where':{'id':_0x3905dc[_0x9105('0x57')]['id']}})[_0x9105('0x1e')](handleEntityNotFound(_0x1fbbb3,null))[_0x9105('0x1e')](function(_0x2782b8){if(_0x2782b8){return db[_0x9105('0x3d')][_0x9105('0x59')]({'where':{'id':_0x2782b8['id']},'include':[{'model':db[_0x9105('0x7d')],'as':'List','include':[{'model':db[_0x9105('0x6f')],'as':'Contacts','where':{[_0x2782b8[_0x9105('0x7a')]]:_0x58e40d},'limit':0x1,'order':[[_0x9105('0x73'),_0x9105('0x7f')]]}]}]})[_0x9105('0x1e')](handleEntityNotFound(_0x1fbbb3,null))[_0x9105('0x1e')](function(_0x2603e7){if(_0x2603e7&&_0x2603e7['List']){_0x15fdcb=_0x2603e7[_0x9105('0x33')]({'plain':!![]});if(_0x15fdcb[_0x9105('0x85')]&&_0x15fdcb[_0x9105('0x85')][_0x9105('0x7e')][_0x9105('0x48')]){return _0x15fdcb[_0x9105('0x85')]['Contacts'][0x0];}return db[_0x9105('0x6f')]['create'](_[_0x9105('0x17')](_0x3905dc['body'],{'firstName':_0x58e40d,[_0x2603e7[_0x9105('0x7a')]]:_0x58e40d,'phone':_0x58e40d,'ListId':_0x15fdcb['ListId']}));}})['then'](handleEntityNotFound(_0x1fbbb3,null))[_0x9105('0x1e')](function(_0xd45c3e){if(_0xd45c3e){_0x2ad612=_0xd45c3e;return db[_0x9105('0x8c')][_0x9105('0x59')]({'where':{'ContactId':_0x2ad612['id'],'closed':![],'OpenchannelAccountId':_0x15fdcb['id']}})[_0x9105('0x1e')](function(_0x2d2942){if(_0x2d2942){return[_0x2d2942,![]];}return db[_0x9105('0x8c')]['create']({'UserId':_0x3905dc['user']['id'],'ContactId':_0x2ad612['id'],'OpenchannelAccountId':_0x15fdcb['id'],'lastMsgDirection':_0x9105('0xb6'),'firstMsgDirection':_0x9105('0xb6'),'Messages':[_[_0x9105('0x51')](_0x3905dc['body'],{'read':![],'body':_0x3905dc['body'][_0x9105('0x5b')],'OpenchannelAccountId':_0x15fdcb['id'],'UserId':_0x3905dc[_0x9105('0x5c')]['id'],'ContactId':_0x2ad612['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x9105('0xb7')}]})['then'](function(_0x32f62f){return[_0x32f62f,!![]];});});}})['spread'](function(_0xadf492,_0x2acc0e){if(_0x2acc0e){return _0xadf492;}return db[_0x9105('0x93')][_0x9105('0x5a')](_[_0x9105('0x51')](_0x3905dc['body'],{'read':![],'body':_0x3905dc[_0x9105('0x5b')][_0x9105('0x5b')],'OpenchannelAccountId':_0x15fdcb['id'],'OpenchannelInteractionId':_0xadf492['id'],'UserId':_0x3905dc[_0x9105('0x5c')]['id'],'ContactId':_0x2ad612['id']}))[_0x9105('0x1e')](function(_0x5c3f74){_0xadf492[_0x9105('0xb8')][_0x9105('0xb7')]=[];_0xadf492[_0x9105('0xb8')][_0x9105('0xb7')][_0x9105('0xb9')](_0x5c3f74[_0x9105('0xb8')]);return _0xadf492;});});}})[_0x9105('0x1e')](respondWithResult(_0x1fbbb3,null))[_0x9105('0x29')](handleError(_0x1fbbb3,null));};
\ No newline at end of file
+var _0x5162=['createdAt','updatedAt','CompanyId','ListId','isNil','from','Sequelize','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','List','CmContact','Contacts','DESC','OpenchannelApplication','account','applications','Applications','list','orderBy','asc','defaults','contact','lastName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','queueId','queue','Start','EventManager','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','getApplications','getInteractions','fullname','internal','Tags','tag','addAgents','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','User','getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','out','Messages','dataValues','eml-format','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','info','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','get','destroy','end','stack','send','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','name','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','notify','ValidationError','no\x20available\x20attributes'];(function(_0x5d221c,_0x18378f){var _0x4dcdea=function(_0x392604){while(--_0x392604){_0x5d221c['push'](_0x5d221c['shift']());}};_0x4dcdea(++_0x18378f);}(_0x5162,0x103));var _0x2516=function(_0x45dafa,_0x171e29){_0x45dafa=_0x45dafa-0x0;var _0xeb385a=_0x5162[_0x45dafa];return _0xeb385a;};'use strict';var emlformat=require(_0x2516('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2516('0x1'));var BPromise=require(_0x2516('0x2'));var Mustache=require(_0x2516('0x3'));var util=require(_0x2516('0x4'));var path=require(_0x2516('0x5'));var sox=require(_0x2516('0x6'));var csv=require(_0x2516('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2516('0x8'));var crypto=require(_0x2516('0x9'));var jsforce=require(_0x2516('0xa'));var deskjs=require(_0x2516('0xb'));var toCsv=require(_0x2516('0x7'));var querystring=require(_0x2516('0xc'));var Papa=require(_0x2516('0xd'));var Redis=require('ioredis');var authService=require(_0x2516('0xe'));var qs=require(_0x2516('0xf'));var as=require(_0x2516('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x2516('0x11'));var licenseUtil=require(_0x2516('0x12'));var db=require(_0x2516('0x13'))['db'];config[_0x2516('0x14')]=_['defaults'](config[_0x2516('0x14')],{'host':_0x2516('0x15'),'port':0x18eb});var socket=require(_0x2516('0x16'))(new Redis(config[_0x2516('0x14')]));require(_0x2516('0x17'))[_0x2516('0x18')](socket);var jayson=require(_0x2516('0x19'));var client=jayson[_0x2516('0x1a')][_0x2516('0x1b')]({'port':0x232c});var client9002=jayson[_0x2516('0x1a')][_0x2516('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x2ec31f,_0x19aacb,_0x5dee15,_0x3543d){return new BPromise(function(_0x5623be,_0x1fdd73){var _0x1ced29=_0x3543d||client;return _0x1ced29[_0x2516('0x1c')](_0x2ec31f,_0x5dee15)['then'](function(_0x1979d7){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x19aacb,_0x2516('0x1d'));logger[_0x2516('0x1e')](_0x2516('0x1f'),_0x19aacb,_0x2516('0x1d'),JSON[_0x2516('0x20')](_0x1979d7));if(_0x1979d7[_0x2516('0x21')]){if(_0x1979d7[_0x2516('0x21')][_0x2516('0x22')]===0x1f4){logger[_0x2516('0x21')](_0x2516('0x23'),_0x19aacb,_0x1979d7[_0x2516('0x21')][_0x2516('0x24')]);return _0x1fdd73(_0x1979d7[_0x2516('0x21')]['message']);}logger['error'](_0x2516('0x23'),_0x19aacb,_0x1979d7[_0x2516('0x21')][_0x2516('0x24')]);return _0x5623be(_0x1979d7[_0x2516('0x21')][_0x2516('0x24')]);}else{logger[_0x2516('0x25')](_0x2516('0x23'),_0x19aacb,_0x2516('0x1d'));_0x5623be(_0x1979d7['result'][_0x2516('0x24')]);}})[_0x2516('0x26')](function(_0x774b60){logger[_0x2516('0x21')]('OpenchannelAccount,\x20%s,\x20%s',_0x19aacb,_0x774b60);_0x1fdd73(_0x774b60);});});}function respondWithStatusCode(_0x399c16,_0x30eeb9){_0x30eeb9=_0x30eeb9||0xcc;return function(_0x1f722c){if(_0x1f722c){return _0x399c16[_0x2516('0x27')](_0x30eeb9);}return _0x399c16[_0x2516('0x28')](_0x30eeb9)['end']();};}function respondWithResult(_0x3c5c3c,_0x1750e7){_0x1750e7=_0x1750e7||0xc8;return function(_0x935035){if(_0x935035){return _0x3c5c3c[_0x2516('0x28')](_0x1750e7)[_0x2516('0x29')](_0x935035);}};}function respondWithFilteredResult(_0x285e67,_0x556f01){return function(_0x136893){if(_0x136893){var _0x20dc9f=typeof _0x556f01['offset']===_0x2516('0x2a')&&typeof _0x556f01[_0x2516('0x2b')]===_0x2516('0x2a');var _0x3b1aa6=_0x136893[_0x2516('0x2c')];var _0x170324=_0x20dc9f?0x0:_0x556f01[_0x2516('0x2d')];var _0x3c1daf=_0x20dc9f?_0x136893[_0x2516('0x2c')]:_0x556f01[_0x2516('0x2d')]+_0x556f01[_0x2516('0x2b')];var _0x2978b2;if(_0x3c1daf>=_0x3b1aa6){_0x3c1daf=_0x3b1aa6;_0x2978b2=0xc8;}else{_0x2978b2=0xce;}_0x285e67[_0x2516('0x28')](_0x2978b2);return _0x285e67[_0x2516('0x2e')](_0x2516('0x2f'),_0x170324+'-'+_0x3c1daf+'/'+_0x3b1aa6)['json'](_0x136893);}return null;};}function patchUpdates(_0x3e7a55){return function(_0x54147b){try{jsonpatch[_0x2516('0x30')](_0x54147b,_0x3e7a55,!![]);}catch(_0x4dff85){return BPromise[_0x2516('0x31')](_0x4dff85);}return _0x54147b['save']();};}function saveUpdates(_0x420219,_0x9133f8){return function(_0x1c26ca){if(_0x1c26ca){return _0x1c26ca[_0x2516('0x32')](_0x420219)[_0x2516('0x33')](function(_0x3947e7){return _0x3947e7;});}return null;};}function removeEntity(_0x38e50a,_0x1c74ca){return function(_0x1ad634){if(_0x1ad634){return _0x1ad634['destroy']()[_0x2516('0x33')](function(){var _0x4578c7=_0x1ad634[_0x2516('0x34')]({'plain':!![]});var _0x22868a='OpenchannelAccounts';return db['UserProfileResource'][_0x2516('0x35')]({'where':{'type':_0x22868a,'resourceId':_0x4578c7['id']}})[_0x2516('0x33')](function(){return _0x1ad634;});})[_0x2516('0x33')](function(){_0x38e50a[_0x2516('0x28')](0xcc)[_0x2516('0x36')]();});}};}function handleEntityNotFound(_0x164f07,_0x1979b5){return function(_0x1bc9ee){if(!_0x1bc9ee){_0x164f07[_0x2516('0x27')](0x194);}return _0x1bc9ee;};}function handleError(_0x3e524c,_0x541d69){_0x541d69=_0x541d69||0x1f4;return function(_0x4844a1){logger[_0x2516('0x21')](_0x4844a1[_0x2516('0x37')]);if(_0x4844a1['name']){delete _0x4844a1['name'];}_0x3e524c[_0x2516('0x28')](_0x541d69)[_0x2516('0x38')](_0x4844a1);};}exports['index']=function(_0x3982ca,_0x52ef6b){var _0x322fb7={'include':[{'model':db[_0x2516('0x39')],'as':_0x2516('0x3a')}]},_0x4412cf={},_0x550ca5={'count':0x0,'rows':[]};var _0x155cf7=_[_0x2516('0x3b')](db[_0x2516('0x3c')][_0x2516('0x3d')],function(_0x2137a4){return{'name':_0x2137a4[_0x2516('0x3e')],'type':_0x2137a4[_0x2516('0x3f')][_0x2516('0x40')]};});_0x4412cf[_0x2516('0x41')]=_[_0x2516('0x3b')](_0x155cf7,_0x2516('0x42'));_0x4412cf['query']=_[_0x2516('0x43')](_0x3982ca[_0x2516('0x44')]);_0x4412cf['filters']=_[_0x2516('0x45')](_0x4412cf[_0x2516('0x41')],_0x4412cf[_0x2516('0x44')]);_0x322fb7[_0x2516('0x46')]=_[_0x2516('0x45')](_0x4412cf['model'],qs[_0x2516('0x47')](_0x3982ca[_0x2516('0x44')][_0x2516('0x47')]));_0x322fb7[_0x2516('0x46')]=_0x322fb7[_0x2516('0x46')][_0x2516('0x48')]?_0x322fb7['attributes']:_0x4412cf[_0x2516('0x41')];if(!_0x3982ca[_0x2516('0x44')][_0x2516('0x49')](_0x2516('0x4a'))){_0x322fb7[_0x2516('0x2b')]=qs[_0x2516('0x2b')](_0x3982ca[_0x2516('0x44')]['limit']);_0x322fb7[_0x2516('0x2d')]=qs['offset'](_0x3982ca[_0x2516('0x44')]['offset']);}_0x322fb7[_0x2516('0x4b')]=qs[_0x2516('0x4c')](_0x3982ca[_0x2516('0x44')]['sort']);_0x322fb7['where']=qs[_0x2516('0x4d')](_[_0x2516('0x4e')](_0x3982ca['query'],_0x4412cf['filters']),_0x155cf7);if(_0x3982ca[_0x2516('0x44')][_0x2516('0x4f')]){_0x322fb7[_0x2516('0x50')]=_['merge'](_0x322fb7[_0x2516('0x50')],{'$or':_['map'](_0x155cf7,function(_0x2c7e2d){if(_0x2c7e2d[_0x2516('0x3f')]!==_0x2516('0x51')){var _0x3af4c9={};_0x3af4c9[_0x2c7e2d['name']]={'$like':'%'+_0x3982ca[_0x2516('0x44')][_0x2516('0x4f')]+'%'};return _0x3af4c9;}})});}_0x322fb7=_[_0x2516('0x52')]({},_0x322fb7,_0x3982ca[_0x2516('0x53')]);var _0x43874c={'where':_0x322fb7['where']};return db[_0x2516('0x3c')][_0x2516('0x2c')](_0x43874c)[_0x2516('0x33')](function(_0x2e359e){_0x550ca5['count']=_0x2e359e;if(_0x3982ca[_0x2516('0x44')][_0x2516('0x54')]){_0x322fb7[_0x2516('0x55')]=[{'all':!![]}];}return db[_0x2516('0x3c')][_0x2516('0x56')](_0x322fb7);})['then'](function(_0x1c4be3){_0x550ca5[_0x2516('0x57')]=_0x1c4be3;return _0x550ca5;})[_0x2516('0x33')](respondWithFilteredResult(_0x52ef6b,_0x322fb7))[_0x2516('0x26')](handleError(_0x52ef6b,null));};exports[_0x2516('0x58')]=function(_0x23875b,_0x52f7f7){var _0x4f3eba={'raw':![],'where':{'id':_0x23875b[_0x2516('0x59')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x54e8df={};_0x54e8df['model']=_[_0x2516('0x43')](db[_0x2516('0x3c')][_0x2516('0x3d')]);_0x54e8df[_0x2516('0x44')]=_[_0x2516('0x43')](_0x23875b['query']);_0x54e8df[_0x2516('0x4d')]=_[_0x2516('0x45')](_0x54e8df[_0x2516('0x41')],_0x54e8df['query']);_0x4f3eba[_0x2516('0x46')]=_[_0x2516('0x45')](_0x54e8df['model'],qs[_0x2516('0x47')](_0x23875b[_0x2516('0x44')][_0x2516('0x47')]));_0x4f3eba[_0x2516('0x46')]=_0x4f3eba[_0x2516('0x46')]['length']?_0x4f3eba['attributes']:_0x54e8df[_0x2516('0x41')];if(_0x23875b['query'][_0x2516('0x54')]){_0x4f3eba['include']=[{'all':!![]}];}_0x4f3eba=_[_0x2516('0x52')]({},_0x4f3eba,_0x23875b[_0x2516('0x53')]);return db[_0x2516('0x3c')][_0x2516('0x5a')](_0x4f3eba)[_0x2516('0x33')](handleEntityNotFound(_0x52f7f7,null))[_0x2516('0x33')](respondWithResult(_0x52f7f7,null))[_0x2516('0x26')](handleError(_0x52f7f7,null));};exports[_0x2516('0x5b')]=function(_0x424027,_0xe6bfc7){return db[_0x2516('0x3c')]['create'](_0x424027[_0x2516('0x5c')],{})[_0x2516('0x33')](function(_0x3adc8c){var _0x48dc96=_0x424027[_0x2516('0x5d')]['get']({'plain':!![]});if(!_0x48dc96)throw new Error(_0x2516('0x5e'));if(_0x48dc96[_0x2516('0x5f')]===_0x2516('0x5d')){var _0x505ccd=_0x3adc8c['get']({'plain':!![]});var _0x5a51c6=_0x2516('0x60');return db[_0x2516('0x61')][_0x2516('0x5a')]({'where':{'name':_0x5a51c6,'userProfileId':_0x48dc96[_0x2516('0x62')]},'raw':!![]})['then'](function(_0x45588d){if(_0x45588d&&_0x45588d[_0x2516('0x63')]===0x0){return db[_0x2516('0x64')]['create']({'name':_0x505ccd[_0x2516('0x42')],'resourceId':_0x505ccd['id'],'type':_0x45588d[_0x2516('0x42')],'sectionId':_0x45588d['id']},{})[_0x2516('0x33')](function(){return _0x3adc8c;});}else{return _0x3adc8c;}})[_0x2516('0x26')](function(_0x27b2ee){logger[_0x2516('0x21')](_0x2516('0x65'),_0x27b2ee);throw _0x27b2ee;});}return _0x3adc8c;})[_0x2516('0x33')](respondWithResult(_0xe6bfc7,0xc9))[_0x2516('0x26')](handleError(_0xe6bfc7,null));};exports[_0x2516('0x32')]=function(_0x4a7054,_0x2de12e){if(_0x4a7054[_0x2516('0x5c')]['id']){delete _0x4a7054['body']['id'];}return db[_0x2516('0x3c')][_0x2516('0x5a')]({'where':{'id':_0x4a7054[_0x2516('0x59')]['id']},'include':[{'model':db[_0x2516('0x39')],'as':_0x2516('0x3a')}]})[_0x2516('0x33')](handleEntityNotFound(_0x2de12e,null))[_0x2516('0x33')](saveUpdates(_0x4a7054['body'],null))[_0x2516('0x33')](respondWithResult(_0x2de12e,null))[_0x2516('0x26')](handleError(_0x2de12e,null));};exports[_0x2516('0x35')]=function(_0x1533ae,_0x6faa52){return db[_0x2516('0x3c')]['find']({'where':{'id':_0x1533ae['params']['id']}})['then'](handleEntityNotFound(_0x6faa52,null))[_0x2516('0x33')](removeEntity(_0x6faa52,null))[_0x2516('0x26')](handleError(_0x6faa52,null));};exports[_0x2516('0x66')]=function(_0x2cc379,_0x58730b){return db['OpenchannelAccount'][_0x2516('0x66')]()['then'](respondWithResult(_0x58730b,null))[_0x2516('0x26')](handleError(_0x58730b,null));};exports[_0x2516('0x67')]=function(_0x572441,_0x1b7769,_0x1bf796){if(_0x572441[_0x2516('0x5c')]['id']){delete _0x572441[_0x2516('0x5c')]['id'];}return db[_0x2516('0x3c')][_0x2516('0x5a')]({'where':{'id':_0x572441[_0x2516('0x59')]['id']}})[_0x2516('0x33')](handleEntityNotFound(_0x1b7769,null))[_0x2516('0x33')](function(_0x4c86a3){if(_0x4c86a3){_0x572441['body'][_0x2516('0x68')]=_0x4c86a3['id'];return db[_0x2516('0x69')][_0x2516('0x5b')](_0x572441['body']);}})[_0x2516('0x33')](respondWithResult(_0x1b7769,null))['catch'](handleError(_0x1b7769,null));};exports[_0x2516('0x6a')]=function(_0x3f6601,_0x1b8c97,_0x274420){var _0xfa4038={'raw':![],'where':{}};var _0x66bf4c={};var _0x3d0d99={'count':0x0,'rows':[]};return db[_0x2516('0x3c')][_0x2516('0x6b')]({'where':{'id':_0x3f6601[_0x2516('0x59')]['id']}})['then'](handleEntityNotFound(_0x1b8c97,null))['then'](function(_0x317942){if(_0x317942){_0x66bf4c['model']=_['keys'](db[_0x2516('0x69')][_0x2516('0x3d')]);_0x66bf4c[_0x2516('0x44')]=_[_0x2516('0x43')](_0x3f6601[_0x2516('0x44')]);_0x66bf4c[_0x2516('0x4d')]=_[_0x2516('0x45')](_0x66bf4c[_0x2516('0x41')],_0x66bf4c[_0x2516('0x44')]);_0xfa4038['attributes']=_[_0x2516('0x45')](_0x66bf4c[_0x2516('0x41')],qs[_0x2516('0x47')](_0x3f6601[_0x2516('0x44')]['fields']));_0xfa4038[_0x2516('0x46')]=_0xfa4038[_0x2516('0x46')][_0x2516('0x48')]?_0xfa4038[_0x2516('0x46')]:_0x66bf4c[_0x2516('0x41')];if(!_0x3f6601[_0x2516('0x44')]['hasOwnProperty'](_0x2516('0x4a'))){_0xfa4038['limit']=qs['limit'](_0x3f6601[_0x2516('0x44')][_0x2516('0x2b')]);_0xfa4038[_0x2516('0x2d')]=qs['offset'](_0x3f6601[_0x2516('0x44')][_0x2516('0x2d')]);}_0xfa4038[_0x2516('0x4b')]=qs[_0x2516('0x4c')](_0x3f6601['query'][_0x2516('0x4c')]);_0xfa4038[_0x2516('0x50')]=qs[_0x2516('0x4d')](_[_0x2516('0x4e')](_0x3f6601['query'],_0x66bf4c[_0x2516('0x4d')]));_0xfa4038[_0x2516('0x50')][_0x2516('0x68')]=_0x317942['id'];if(_0x3f6601['query'][_0x2516('0x4f')]){_0xfa4038['where']=_[_0x2516('0x52')](_0xfa4038[_0x2516('0x50')],{'$or':_[_0x2516('0x3b')](_0xfa4038[_0x2516('0x46')],function(_0x322df6){var _0x502cbf={};_0x502cbf[_0x322df6]={'$like':'%'+_0x3f6601['query']['filter']+'%'};return _0x502cbf;})});}_0xfa4038=_[_0x2516('0x52')]({},_0xfa4038,_0x3f6601[_0x2516('0x53')]);return db['Disposition'][_0x2516('0x2c')]({'where':_0xfa4038[_0x2516('0x50')]})[_0x2516('0x33')](function(_0x44a023){_0x3d0d99[_0x2516('0x2c')]=_0x44a023;if(_0x3f6601[_0x2516('0x44')]['includeAll']){_0xfa4038[_0x2516('0x55')]=[{'all':!![]}];}return db[_0x2516('0x69')][_0x2516('0x56')](_0xfa4038);})['then'](function(_0x51308d){_0x3d0d99['rows']=_0x51308d;return _0x3d0d99;});}})[_0x2516('0x33')](respondWithFilteredResult(_0x1b8c97,_0xfa4038))[_0x2516('0x26')](handleError(_0x1b8c97,null));};exports[_0x2516('0x6c')]=function(_0x1fee50,_0x5bc6ed,_0x4a2158){return db['OpenchannelAccount'][_0x2516('0x5a')]({'where':{'id':_0x1fee50[_0x2516('0x59')]['id']}})[_0x2516('0x33')](handleEntityNotFound(_0x5bc6ed,null))[_0x2516('0x33')](function(_0x30376e){if(_0x30376e){return _0x30376e[_0x2516('0x6c')](_0x1fee50[_0x2516('0x44')][_0x2516('0x6d')]);}})['then'](respondWithStatusCode(_0x5bc6ed,null))[_0x2516('0x26')](handleError(_0x5bc6ed,null));};exports[_0x2516('0x6e')]=function(_0x417f7f,_0x320d38,_0x3e1a27){if(_0x417f7f['body']['id']){delete _0x417f7f[_0x2516('0x5c')]['id'];}return db[_0x2516('0x3c')]['find']({'where':{'id':_0x417f7f[_0x2516('0x59')]['id']}})[_0x2516('0x33')](handleEntityNotFound(_0x320d38,null))[_0x2516('0x33')](function(_0x1b517c){if(_0x1b517c){_0x417f7f[_0x2516('0x5c')][_0x2516('0x68')]=_0x1b517c['id'];return db['CannedAnswer'][_0x2516('0x5b')](_0x417f7f[_0x2516('0x5c')]);}})[_0x2516('0x33')](respondWithResult(_0x320d38,null))[_0x2516('0x26')](handleError(_0x320d38,null));};exports[_0x2516('0x6f')]=function(_0xe93655,_0x43a2ed,_0x4254ad){var _0x33a71f={'raw':![],'where':{}};var _0x559f5d={};var _0x57b13b={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x2516('0x6b')]({'where':{'id':_0xe93655[_0x2516('0x59')]['id']}})['then'](handleEntityNotFound(_0x43a2ed,null))['then'](function(_0x40efc6){if(_0x40efc6){_0x559f5d[_0x2516('0x41')]=_[_0x2516('0x43')](db[_0x2516('0x70')][_0x2516('0x3d')]);_0x559f5d[_0x2516('0x44')]=_[_0x2516('0x43')](_0xe93655[_0x2516('0x44')]);_0x559f5d[_0x2516('0x4d')]=_[_0x2516('0x45')](_0x559f5d[_0x2516('0x41')],_0x559f5d[_0x2516('0x44')]);_0x33a71f[_0x2516('0x46')]=_[_0x2516('0x45')](_0x559f5d[_0x2516('0x41')],qs['fields'](_0xe93655['query'][_0x2516('0x47')]));_0x33a71f[_0x2516('0x46')]=_0x33a71f[_0x2516('0x46')]['length']?_0x33a71f[_0x2516('0x46')]:_0x559f5d[_0x2516('0x41')];if(!_0xe93655[_0x2516('0x44')][_0x2516('0x49')](_0x2516('0x4a'))){_0x33a71f[_0x2516('0x2b')]=qs['limit'](_0xe93655[_0x2516('0x44')][_0x2516('0x2b')]);_0x33a71f[_0x2516('0x2d')]=qs[_0x2516('0x2d')](_0xe93655[_0x2516('0x44')][_0x2516('0x2d')]);}_0x33a71f[_0x2516('0x4b')]=qs[_0x2516('0x4c')](_0xe93655[_0x2516('0x44')][_0x2516('0x4c')]);_0x33a71f[_0x2516('0x50')]=qs[_0x2516('0x4d')](_[_0x2516('0x4e')](_0xe93655[_0x2516('0x44')],_0x559f5d[_0x2516('0x4d')]));_0x33a71f[_0x2516('0x50')]['OpenchannelAccountId']=_0x40efc6['id'];if(_0xe93655['query'][_0x2516('0x4f')]){_0x33a71f[_0x2516('0x50')]=_[_0x2516('0x52')](_0x33a71f[_0x2516('0x50')],{'$or':_[_0x2516('0x3b')](_0x33a71f[_0x2516('0x46')],function(_0x46dbff){var _0x3f25b5={};_0x3f25b5[_0x46dbff]={'$like':'%'+_0xe93655['query'][_0x2516('0x4f')]+'%'};return _0x3f25b5;})});}_0x33a71f=_[_0x2516('0x52')]({},_0x33a71f,_0xe93655[_0x2516('0x53')]);return db['CannedAnswer'][_0x2516('0x2c')]({'where':_0x33a71f['where']})[_0x2516('0x33')](function(_0x48863e){_0x57b13b[_0x2516('0x2c')]=_0x48863e;if(_0xe93655[_0x2516('0x44')]['includeAll']){_0x33a71f[_0x2516('0x55')]=[{'all':!![]}];}return db['CannedAnswer'][_0x2516('0x56')](_0x33a71f);})[_0x2516('0x33')](function(_0x177106){_0x57b13b[_0x2516('0x57')]=_0x177106;return _0x57b13b;});}})[_0x2516('0x33')](respondWithFilteredResult(_0x43a2ed,_0x33a71f))[_0x2516('0x26')](handleError(_0x43a2ed,null));};exports[_0x2516('0x71')]=function(_0x30d6f4,_0x1e40f0,_0x5a6f3d){return db[_0x2516('0x3c')][_0x2516('0x5a')]({'where':{'id':_0x30d6f4[_0x2516('0x59')]['id']}})[_0x2516('0x33')](handleEntityNotFound(_0x1e40f0,null))['then'](function(_0x1c5c46){if(_0x1c5c46){return _0x1c5c46[_0x2516('0x71')](_0x30d6f4[_0x2516('0x44')][_0x2516('0x6d')]);}})[_0x2516('0x33')](respondWithStatusCode(_0x1e40f0,null))['catch'](handleError(_0x1e40f0,null));};exports[_0x2516('0x72')]=function(_0x2e2dac,_0x39d344,_0x1f29d7){var _0x25e35a={'body':_0x2e2dac[_0x2516('0x5c')],'channel':'openchannel'};var _0x8fead9=[];var _0x49a464=[];var _0x17ae1b={};var _0x5f42ff=![];return db['CmContact'][_0x2516('0x66')]()[_0x2516('0x33')](function(_0x2750e4){if(!_0x2750e4){throw new db['Sequelize'][(_0x2516('0x73'))](_0x2516('0x74'));}_0x8fead9=_['difference'](_[_0x2516('0x43')](_0x2750e4),[_0x2516('0x75'),'updatedAt']);_0x49a464=_['difference'](_[_0x2516('0x43')](_0x2750e4),[_0x2516('0x75'),_0x2516('0x76'),_0x2516('0x77'),_0x2516('0x78')]);if(_0x2e2dac[_0x2516('0x5c')]['id']){delete _0x2e2dac['body']['id'];}if(_[_0x2516('0x79')](_0x2e2dac[_0x2516('0x5c')][_0x2516('0x7a')])){throw new db[(_0x2516('0x7b'))]['ValidationError'](_0x2516('0x7c'));}if(_[_0x2516('0x79')](_0x2e2dac[_0x2516('0x5c')][_0x2516('0x5c')])||_0x2e2dac['body'][_0x2516('0x5c')]===''){throw new db[(_0x2516('0x7b'))][(_0x2516('0x73'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x2516('0x79')](_0x2e2dac[_0x2516('0x5c')][_0x2516('0x7d')])){throw new db[(_0x2516('0x7b'))]['ValidationError'](_0x2516('0x7e')+_0x49a464);}if(!_[_0x2516('0x7f')](_0x49a464,_0x2e2dac[_0x2516('0x5c')][_0x2516('0x7d')])){throw new db[(_0x2516('0x7b'))][(_0x2516('0x73'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49a464);}_0x17ae1b[_0x2e2dac[_0x2516('0x5c')][_0x2516('0x7d')]]=_0x2e2dac[_0x2516('0x5c')]['from'];})[_0x2516('0x33')](function(){return db[_0x2516('0x3c')]['find']({'where':{'id':_0x2e2dac['params']['id']},'include':[{'model':db[_0x2516('0x80')],'as':_0x2516('0x81'),'include':[{'model':db[_0x2516('0x82')],'as':_0x2516('0x83'),'where':_0x17ae1b,'limit':0x1,'order':[[_0x2516('0x76'),_0x2516('0x84')]]}]},{'model':db[_0x2516('0x85')],'as':'Applications'}]});})[_0x2516('0x33')](handleEntityNotFound(_0x39d344,null))[_0x2516('0x33')](function(_0x1354d3){if(_0x1354d3&&_0x1354d3[_0x2516('0x81')]){_0x25e35a[_0x2516('0x86')]=_0x1354d3;_0x25e35a[_0x2516('0x87')]=_0x1354d3[_0x2516('0x88')];_0x25e35a[_0x2516('0x89')]=_0x1354d3[_0x2516('0x81')];_0x25e35a[_0x2516('0x87')]=_[_0x2516('0x8a')](_0x25e35a[_0x2516('0x87')],['priority'],[_0x2516('0x8b')]);if(_0x25e35a[_0x2516('0x86')]['Applications']){delete _0x25e35a[_0x2516('0x86')][_0x2516('0x88')];}if(_0x25e35a[_0x2516('0x86')][_0x2516('0x81')]&&_0x25e35a[_0x2516('0x86')]['List'][_0x2516('0x83')][_0x2516('0x48')]){return _0x25e35a['account'][_0x2516('0x81')]['Contacts'][0x0];}var _0x4cf81d=_[_0x2516('0x8c')](_0x2e2dac[_0x2516('0x5c')],{'firstName':_0x2e2dac[_0x2516('0x5c')]['from'],'ListId':_0x1354d3[_0x2516('0x78')]});_0x4cf81d[_0x2e2dac[_0x2516('0x5c')]['mapKey']]=_0x2e2dac['body'][_0x2516('0x7a')];return db[_0x2516('0x82')][_0x2516('0x5b')](_0x4cf81d,{'fields':_0x8fead9,'raw':!![]});}})[_0x2516('0x33')](handleEntityNotFound(_0x39d344,null))[_0x2516('0x33')](function(_0x21f81c){_0x25e35a[_0x2516('0x8d')]=_0x21f81c;if(_0x21f81c){var _0x324b71={'ContactId':_0x21f81c['id'],'OpenchannelAccountId':_0x2e2dac[_0x2516('0x59')]['id'],'from':(_0x21f81c['firstName']||'')+'\x20'+(_0x21f81c[_0x2516('0x8e')]||'')};var _0x4272ae={'OpenchannelAccountId':_0x2e2dac[_0x2516('0x59')]['id'],'closed':![]};if(_0x2e2dac[_0x2516('0x5c')][_0x2516('0x8f')]){_0x4272ae[_0x2516('0x8f')]=_0x2e2dac['body'][_0x2516('0x8f')];return db[_0x2516('0x90')][_0x2516('0x5a')]({'where':_0x4272ae})[_0x2516('0x33')](function(_0x307987){if(_0x307987){return[_0x307987,![]];}_0x324b71[_0x2516('0x8f')]=_0x2e2dac[_0x2516('0x5c')][_0x2516('0x8f')];_0x324b71[_0x2516('0x91')]=_0x2e2dac[_0x2516('0x5c')][_0x2516('0x91')];return db[_0x2516('0x90')][_0x2516('0x5b')](_0x324b71)['then'](function(_0x304bb8){return[_0x304bb8,!![]];});});}else{_0x4272ae[_0x2516('0x8f')]=null;}_0x4272ae['ContactId']=_0x21f81c['id'];return db['OpenchannelInteraction'][_0x2516('0x5a')]({'where':_0x4272ae})[_0x2516('0x33')](function(_0x2fb9c1){if(_0x2fb9c1){return[_0x2fb9c1,![]];}return db[_0x2516('0x90')][_0x2516('0x5b')](_0x324b71)['then'](function(_0x1800c1){return[_0x1800c1,!![]];});});}})[_0x2516('0x92')](function(_0x433def,_0x109029){if(_0x433def){_0x5f42ff=_0x109029;if(!_0x109029){var _0x59eb11={'from':(_0x25e35a['contact']['firstName']||'')+'\x20'+(_0x25e35a[_0x2516('0x8d')][_0x2516('0x8e')]||'')};if(_0x2e2dac[_0x2516('0x5c')][_0x2516('0x8f')]&&_0x2e2dac['body'][_0x2516('0x93')]&&_0x2e2dac['body'][_0x2516('0x8f')]!=_0x2e2dac[_0x2516('0x5c')]['messageId']){_0x59eb11[_0x2516('0x8f')]=_0x2e2dac[_0x2516('0x5c')][_0x2516('0x93')];}return _0x433def[_0x2516('0x32')](_0x59eb11);}else{return _0x433def;}}})[_0x2516('0x33')](function(_0x320029){_0x25e35a[_0x2516('0x94')]=_0x320029[_0x2516('0x34')]({'plain':!![]});_0x25e35a[_0x2516('0x94')][_0x2516('0x95')]=_0x5f42ff;if(_0x25e35a[_0x2516('0x94')][_0x2516('0x95')]){if(_0x25e35a[_0x2516('0x86')]['autoclose']){_0x25e35a[_0x2516('0x87')][_0x2516('0x96')]({'id':0x0,'priority':_0x25e35a[_0x2516('0x87')]['length']+0x1,'app':_0x2516('0x97'),'appdata':_0x2516('0x98'),'interval':_0x2516('0x99')});}}return db[_0x2516('0x9a')][_0x2516('0x5b')]({'body':_0x2e2dac[_0x2516('0x5c')][_0x2516('0x5c')],'OpenchannelAccountId':_0x2e2dac['params']['id'],'OpenchannelInteractionId':_0x320029['id'],'direction':'in','ContactId':_0x25e35a['contact']['id'],'AttachmentId':_0x2e2dac[_0x2516('0x5c')][_0x2516('0x9b')]});})[_0x2516('0x33')](function(_0x1ab886){_0x25e35a[_0x2516('0x24')]=_0x1ab886;if(!_0x25e35a[_0x2516('0x94')]['UserId'])return;return db['User'][_0x2516('0x5a')]({'attributes':['id',_0x2516('0x42')],'where':{'id':_0x25e35a[_0x2516('0x94')][_0x2516('0x9c')]}});})[_0x2516('0x33')](function(_0x599831){if(_0x599831){_0x25e35a[_0x2516('0x87')][_0x2516('0x9d')]({'id':0x0,'priority':0x0,'app':_0x2516('0x9e'),'appdata':_0x599831[_0x2516('0x42')]+','+(_0x25e35a['account'][_0x2516('0x9f')]||0xa),'interval':'*,*,*,*'});}if(!_0x25e35a[_0x2516('0x94')]['queueId'])return;return db['OpenchannelQueue'][_0x2516('0x5a')]({'attributes':['id',_0x2516('0x42')],'where':{'id':_0x25e35a['interaction'][_0x2516('0xa0')]}});})['then'](function(_0x2b7b53){if(_0x2b7b53){_0x25e35a[_0x2516('0x87')]['unshift']({'id':0x0,'priority':0x1,'app':_0x2516('0xa1'),'appdata':_0x2b7b53[_0x2516('0x42')]+','+(_0x25e35a['account']['waitForTheAssignedQueue']||0x12c),'interval':_0x2516('0x99')});}return respondWithRpcPromise(_0x2516('0xa2'),'startRouting',_0x25e35a);})[_0x2516('0x33')](function(_0x2ea445){respondWithRpcPromise(_0x2516('0xa3'),_0x2516('0xa3'),{'event':_0x2516('0x72'),'message':_0x2ea445},client9002);return _0x2ea445;})[_0x2516('0x33')](respondWithResult(_0x39d344,null))[_0x2516('0x26')](handleError(_0x39d344,null));};exports[_0x2516('0xa4')]=function(_0x1bc708,_0x3a059b){var _0x492a99=_0x1bc708['params']['id'];var _0x5d9331=_0x1bc708[_0x2516('0x5c')];var _0x35bb7c=0xc8;var _0x550e26=null;return db[_0x2516('0xa5')][_0x2516('0xa6')]({'isolationLevel':db[_0x2516('0xa5')]['Transaction'][_0x2516('0xa7')][_0x2516('0xa8')]},function(_0x59043e){return db[_0x2516('0x3c')][_0x2516('0x6b')]({'where':{'id':_0x492a99},'transaction':_0x59043e})[_0x2516('0x33')](function(_0x134256){if(_0x134256){return db[_0x2516('0x85')][_0x2516('0x35')]({'where':{'OpenchannelAccountId':_0x492a99},'transaction':_0x59043e})['then'](function(){var _0xddc88=_[_0x2516('0x3b')](_0x5d9331,function(_0x38e016){_0x38e016[_0x2516('0x68')]=_0x492a99;return _0x38e016;});return db[_0x2516('0x85')][_0x2516('0xa9')](_0xddc88,{'transaction':_0x59043e});});}else{_0x35bb7c=0x194;_0x550e26=[];}});})[_0x2516('0x33')](function(){if(_0x35bb7c!==0x194){return db[_0x2516('0x85')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x492a99},'order':'priority'})[_0x2516('0x33')](function(_0x4621e8){_0x550e26=_0x4621e8;});}})[_0x2516('0x26')](function(_0x253acd){_0x35bb7c=0x1f4;logger['error'](_0x253acd[_0x2516('0x37')]);if(_0x253acd['name']){delete _0x253acd[_0x2516('0x42')];}_0x550e26=_0x253acd;})['finally'](function(){if(_0x550e26===null){_0x3a059b[_0x2516('0x27')](_0x35bb7c);}else{if(_0x35bb7c===0x1f4){_0x3a059b[_0x2516('0x28')](_0x35bb7c)[_0x2516('0x38')](_0x550e26);}else{_0x3a059b[_0x2516('0x28')](_0x35bb7c)[_0x2516('0x29')](_0x550e26);}}});};exports[_0x2516('0xaa')]=function(_0x4586b5,_0x76fed0,_0x45cd5f){var _0x1937bf={};var _0x3dc659={};var _0x4eb308;var _0x788dee;return db[_0x2516('0x3c')][_0x2516('0x6b')]({'where':{'id':_0x4586b5[_0x2516('0x59')]['id']}})['then'](handleEntityNotFound(_0x76fed0,null))[_0x2516('0x33')](function(_0x24887e){if(_0x24887e){_0x4eb308=_0x24887e;_0x3dc659[_0x2516('0x41')]=_[_0x2516('0x43')](db['OpenchannelApplication'][_0x2516('0x3d')]);_0x3dc659[_0x2516('0x44')]=_[_0x2516('0x43')](_0x4586b5[_0x2516('0x44')]);_0x3dc659[_0x2516('0x4d')]=_[_0x2516('0x45')](_0x3dc659[_0x2516('0x41')],_0x3dc659[_0x2516('0x44')]);_0x1937bf[_0x2516('0x46')]=_[_0x2516('0x45')](_0x3dc659[_0x2516('0x41')],qs[_0x2516('0x47')](_0x4586b5[_0x2516('0x44')][_0x2516('0x47')]));_0x1937bf[_0x2516('0x46')]=_0x1937bf[_0x2516('0x46')]['length']?_0x1937bf[_0x2516('0x46')]:_0x3dc659[_0x2516('0x41')];_0x1937bf['order']=qs[_0x2516('0x4c')](_0x4586b5[_0x2516('0x44')][_0x2516('0x4c')]);_0x1937bf[_0x2516('0x50')]=qs[_0x2516('0x4d')](_[_0x2516('0x4e')](_0x4586b5[_0x2516('0x44')],_0x3dc659['filters']));if(_0x4586b5[_0x2516('0x44')]['filter']){_0x1937bf[_0x2516('0x50')]=_[_0x2516('0x52')](_0x1937bf['where'],{'$or':_[_0x2516('0x3b')](_0x1937bf[_0x2516('0x46')],function(_0x7ba682){var _0x479f81={};_0x479f81[_0x7ba682]={'$like':'%'+_0x4586b5[_0x2516('0x44')][_0x2516('0x4f')]+'%'};return _0x479f81;})});}_0x1937bf=_[_0x2516('0x52')]({},_0x1937bf,_0x4586b5[_0x2516('0x53')]);return _0x4eb308[_0x2516('0xaa')](_0x1937bf);}})[_0x2516('0x33')](function(_0x31f6f2){if(_0x31f6f2){_0x788dee=_0x31f6f2[_0x2516('0x48')];if(!_0x4586b5[_0x2516('0x44')]['hasOwnProperty']('nolimit')){_0x1937bf[_0x2516('0x2b')]=qs[_0x2516('0x2b')](_0x4586b5[_0x2516('0x44')][_0x2516('0x2b')]);_0x1937bf[_0x2516('0x2d')]=qs['offset'](_0x4586b5[_0x2516('0x44')][_0x2516('0x2d')]);}return _0x4eb308[_0x2516('0xaa')](_0x1937bf);}})['then'](function(_0x14f121){if(_0x14f121){return _0x14f121?{'count':_0x788dee,'rows':_0x14f121}:null;}})[_0x2516('0x33')](respondWithResult(_0x76fed0,null))[_0x2516('0x26')](handleError(_0x76fed0,null));};exports[_0x2516('0xab')]=function(_0x5a6439,_0x4e3d72,_0x5e62c0){var _0x5c27ff={'raw':![],'where':{}};var _0x12fb58={};var _0x59b6dd={'count':0x0,'rows':[]};return db[_0x2516('0x3c')][_0x2516('0x6b')]({'where':{'id':_0x5a6439['params']['id']}})[_0x2516('0x33')](handleEntityNotFound(_0x4e3d72,null))[_0x2516('0x33')](function(_0x372494){if(_0x372494){_0x12fb58[_0x2516('0x41')]=_[_0x2516('0x43')](db[_0x2516('0x90')][_0x2516('0x3d')]);_0x12fb58['query']=_[_0x2516('0x43')](_0x5a6439[_0x2516('0x44')]);_0x12fb58[_0x2516('0x4d')]=_['intersection'](_0x12fb58[_0x2516('0x41')],_0x12fb58['query']);_0x5c27ff[_0x2516('0x46')]=_[_0x2516('0x45')](_0x12fb58[_0x2516('0x41')],qs['fields'](_0x5a6439[_0x2516('0x44')][_0x2516('0x47')]));_0x5c27ff['attributes']=_0x5c27ff[_0x2516('0x46')][_0x2516('0x48')]?_0x5c27ff[_0x2516('0x46')]:_0x12fb58[_0x2516('0x41')];if(!_0x5a6439['query'][_0x2516('0x49')]('nolimit')){_0x5c27ff[_0x2516('0x2b')]=qs[_0x2516('0x2b')](_0x5a6439[_0x2516('0x44')][_0x2516('0x2b')]);_0x5c27ff[_0x2516('0x2d')]=qs[_0x2516('0x2d')](_0x5a6439['query'][_0x2516('0x2d')]);}_0x5c27ff['order']=qs[_0x2516('0x4c')](_0x5a6439['query'][_0x2516('0x4c')]);_0x5c27ff[_0x2516('0x50')]=qs[_0x2516('0x4d')](_[_0x2516('0x4e')](_0x5a6439[_0x2516('0x44')],_0x12fb58[_0x2516('0x4d')]));_0x5c27ff['where'][_0x2516('0x68')]=_0x372494['id'];if(_0x5a6439[_0x2516('0x44')][_0x2516('0x4f')]){_0x5c27ff[_0x2516('0x50')]=_['merge'](_0x5c27ff[_0x2516('0x50')],{'$or':_['map'](_0x5c27ff['attributes'],function(_0x5c44fd){var _0x48261d={};_0x48261d[_0x5c44fd]={'$like':'%'+_0x5a6439['query']['filter']+'%'};return _0x48261d;})});}_0x5c27ff=_['merge']({},_0x5c27ff,_0x5a6439[_0x2516('0x53')]);return db[_0x2516('0x90')]['count']({'where':_0x5c27ff[_0x2516('0x50')]})[_0x2516('0x33')](function(_0x197ba3){_0x59b6dd['count']=_0x197ba3;if(_0x5a6439['query']['includeAll']){_0x5c27ff[_0x2516('0x55')]=[{'model':db[_0x2516('0x82')],'as':'Contact','required':![]},{'model':db['User'],'as':'Owner','attributes':['name',_0x2516('0xac'),_0x2516('0xad')],'required':![]},{'model':db['Tag'],'as':_0x2516('0xae'),'attributes':['id',_0x2516('0x42'),'color'],'where':_0x5a6439[_0x2516('0x44')]['tag']?{'id':_0x5a6439[_0x2516('0x44')]['tag']}:undefined,'required':_0x5a6439['query'][_0x2516('0xaf')]?!![]:![]}];}return db[_0x2516('0x90')]['findAll'](_0x5c27ff);})[_0x2516('0x33')](function(_0x4ed2bd){_0x59b6dd[_0x2516('0x57')]=_0x4ed2bd;return _0x59b6dd;});}})[_0x2516('0x33')](respondWithFilteredResult(_0x4e3d72,_0x5c27ff))[_0x2516('0x26')](handleError(_0x4e3d72,null));};exports[_0x2516('0xb0')]=function(_0x9a7f5a,_0x575ec8,_0x149da0){return db['OpenchannelAccount'][_0x2516('0x5a')]({'where':{'id':_0x9a7f5a[_0x2516('0x59')]['id']}})[_0x2516('0x33')](handleEntityNotFound(_0x575ec8,null))[_0x2516('0x33')](function(_0x1b71da){if(_0x1b71da){return _0x1b71da['addAgents'](_0x9a7f5a['body'][_0x2516('0x6d')],_['omit'](_0x9a7f5a[_0x2516('0x5c')],[_0x2516('0x6d'),'id'])||{})[_0x2516('0x92')](function(_0x479dae){for(var _0x232ac0=0x0;_0x232ac0<_0x9a7f5a[_0x2516('0x5c')][_0x2516('0x6d')][_0x2516('0x48')];_0x232ac0+=0x1){socket[_0x2516('0xb1')](_0x2516('0xb2'),{'UserId':Number(_0x9a7f5a[_0x2516('0x5c')][_0x2516('0x6d')][_0x232ac0]),'OpenchannelAccountId':Number(_0x9a7f5a[_0x2516('0x59')]['id'])});}return _0x479dae;});}})[_0x2516('0x33')](respondWithResult(_0x575ec8,null))[_0x2516('0x26')](handleError(_0x575ec8,null));};exports[_0x2516('0xb3')]=function(_0x4c1cd8,_0x2db19d,_0x50caaa){return db[_0x2516('0x3c')][_0x2516('0x5a')]({'where':{'id':_0x4c1cd8[_0x2516('0x59')]['id']}})[_0x2516('0x33')](handleEntityNotFound(_0x2db19d,null))['then'](function(_0x5d3435){if(_0x5d3435){return _0x5d3435['removeAgents'](_0x4c1cd8[_0x2516('0x44')][_0x2516('0x6d')])[_0x2516('0x33')](function(){if(_[_0x2516('0xb4')](_0x4c1cd8[_0x2516('0x44')][_0x2516('0x6d')])){for(var _0x2427da=0x0;_0x2427da<_0x4c1cd8[_0x2516('0x44')]['ids'][_0x2516('0x48')];_0x2427da+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x4c1cd8['query'][_0x2516('0x6d')][_0x2427da]),'OpenchannelAccountId':Number(_0x4c1cd8[_0x2516('0x59')]['id'])});}}else{socket['emit'](_0x2516('0xb5'),{'UserId':Number(_0x4c1cd8[_0x2516('0x44')][_0x2516('0x6d')]),'OpenchannelAccountId':Number(_0x4c1cd8['params']['id'])});}});}})[_0x2516('0x33')](respondWithStatusCode(_0x2db19d,null))[_0x2516('0x26')](handleError(_0x2db19d,null));};exports['getAgents']=function(_0x49738b,_0x4214fc,_0x6017cd){var _0x57b5f6={};var _0x5ee24b={};var _0x31b27f;var _0x3a95b8;return db['OpenchannelAccount'][_0x2516('0x6b')]({'where':{'id':_0x49738b[_0x2516('0x59')]['id']}})[_0x2516('0x33')](handleEntityNotFound(_0x4214fc,null))['then'](function(_0x57457c){if(_0x57457c){_0x31b27f=_0x57457c;_0x5ee24b[_0x2516('0x41')]=_['keys'](db[_0x2516('0xb6')][_0x2516('0x3d')]);_0x5ee24b[_0x2516('0x44')]=_['keys'](_0x49738b[_0x2516('0x44')]);_0x5ee24b[_0x2516('0x4d')]=_[_0x2516('0x45')](_0x5ee24b[_0x2516('0x41')],_0x5ee24b[_0x2516('0x44')]);_0x57b5f6[_0x2516('0x46')]=_[_0x2516('0x45')](_0x5ee24b[_0x2516('0x41')],qs[_0x2516('0x47')](_0x49738b[_0x2516('0x44')][_0x2516('0x47')]));_0x57b5f6[_0x2516('0x46')]=_0x57b5f6[_0x2516('0x46')]['length']?_0x57b5f6[_0x2516('0x46')]:_0x5ee24b[_0x2516('0x41')];_0x57b5f6[_0x2516('0x4b')]=qs['sort'](_0x49738b[_0x2516('0x44')][_0x2516('0x4c')]);_0x57b5f6[_0x2516('0x50')]=qs['filters'](_[_0x2516('0x4e')](_0x49738b['query'],_0x5ee24b['filters']));if(_0x49738b[_0x2516('0x44')][_0x2516('0x4f')]){_0x57b5f6['where']=_[_0x2516('0x52')](_0x57b5f6[_0x2516('0x50')],{'$or':_[_0x2516('0x3b')](_0x57b5f6[_0x2516('0x46')],function(_0x543ac8){var _0x116f67={};_0x116f67[_0x543ac8]={'$like':'%'+_0x49738b['query'][_0x2516('0x4f')]+'%'};return _0x116f67;})});}_0x57b5f6=_[_0x2516('0x52')]({},_0x57b5f6,_0x49738b[_0x2516('0x53')]);return _0x31b27f[_0x2516('0xb7')](_0x57b5f6);}})[_0x2516('0x33')](function(_0x2093b1){if(_0x2093b1){_0x3a95b8=_0x2093b1[_0x2516('0x48')];if(!_0x49738b['query'][_0x2516('0x49')](_0x2516('0x4a'))){_0x57b5f6[_0x2516('0x2b')]=qs[_0x2516('0x2b')](_0x49738b['query'][_0x2516('0x2b')]);_0x57b5f6[_0x2516('0x2d')]=qs[_0x2516('0x2d')](_0x49738b['query'][_0x2516('0x2d')]);}return _0x31b27f[_0x2516('0xb7')](_0x57b5f6);}})['then'](function(_0x1c9eae){if(_0x1c9eae){return _0x1c9eae?{'count':_0x3a95b8,'rows':_0x1c9eae}:null;}})[_0x2516('0x33')](respondWithResult(_0x4214fc,null))[_0x2516('0x26')](handleError(_0x4214fc,null));};exports[_0x2516('0x38')]=function(_0x26053c,_0xafed84,_0x2e7bd4){var _0x509137,_0x6c5ed5,_0x4e7598;if(_[_0x2516('0x79')](_0x26053c[_0x2516('0x5c')]['body'])||_0x26053c[_0x2516('0x5c')][_0x2516('0x5c')]===''){throw new db[(_0x2516('0x7b'))]['ValidationError'](_0x2516('0xb8'));}if(_[_0x2516('0x79')](_0x26053c[_0x2516('0x5c')]['to'])){}_0x509137=_0x26053c[_0x2516('0x5c')]['to'];return db[_0x2516('0x3c')]['findOne']({'where':{'id':_0x26053c[_0x2516('0x59')]['id']}})[_0x2516('0x33')](handleEntityNotFound(_0xafed84,null))[_0x2516('0x33')](function(_0x259fbf){if(_0x259fbf){return db[_0x2516('0x3c')]['find']({'where':{'id':_0x259fbf['id']},'include':[{'model':db[_0x2516('0x80')],'as':_0x2516('0x81'),'include':[{'model':db[_0x2516('0x82')],'as':_0x2516('0x83'),'where':{[_0x259fbf[_0x2516('0x7d')]]:_0x509137},'limit':0x1,'order':[[_0x2516('0x76'),_0x2516('0x84')]]}]}]})[_0x2516('0x33')](handleEntityNotFound(_0xafed84,null))[_0x2516('0x33')](function(_0x2988c5){if(_0x2988c5&&_0x2988c5[_0x2516('0x81')]){_0x6c5ed5=_0x2988c5[_0x2516('0x34')]({'plain':!![]});if(_0x6c5ed5[_0x2516('0x81')]&&_0x6c5ed5['List'][_0x2516('0x83')][_0x2516('0x48')]){return _0x6c5ed5[_0x2516('0x81')][_0x2516('0x83')][0x0];}return db['CmContact'][_0x2516('0x5b')](_[_0x2516('0x8c')](_0x26053c[_0x2516('0x5c')],{'firstName':_0x509137,[_0x2988c5['mapKey']]:_0x509137,'phone':_0x509137,'ListId':_0x6c5ed5['ListId']}));}})['then'](handleEntityNotFound(_0xafed84,null))['then'](function(_0x49506e){if(_0x49506e){_0x4e7598=_0x49506e;return db[_0x2516('0x90')]['find']({'where':{'ContactId':_0x4e7598['id'],'closed':![],'OpenchannelAccountId':_0x6c5ed5['id']}})['then'](function(_0x463318){if(_0x463318){return[_0x463318,![]];}return db[_0x2516('0x90')][_0x2516('0x5b')]({'UserId':_0x26053c[_0x2516('0x5d')]['id'],'ContactId':_0x4e7598['id'],'OpenchannelAccountId':_0x6c5ed5['id'],'lastMsgDirection':'out','firstMsgDirection':_0x2516('0xb9'),'Messages':[_[_0x2516('0x52')](_0x26053c[_0x2516('0x5c')],{'read':![],'body':_0x26053c[_0x2516('0x5c')][_0x2516('0x5c')],'OpenchannelAccountId':_0x6c5ed5['id'],'UserId':_0x26053c[_0x2516('0x5d')]['id'],'ContactId':_0x4e7598['id']})]},{'include':[{'model':db[_0x2516('0x9a')],'as':_0x2516('0xba')}]})[_0x2516('0x33')](function(_0x1a905a){return[_0x1a905a,!![]];});});}})[_0x2516('0x92')](function(_0x464632,_0x5c276b){if(_0x5c276b){return _0x464632;}return db[_0x2516('0x9a')][_0x2516('0x5b')](_['merge'](_0x26053c[_0x2516('0x5c')],{'read':![],'body':_0x26053c['body'][_0x2516('0x5c')],'OpenchannelAccountId':_0x6c5ed5['id'],'OpenchannelInteractionId':_0x464632['id'],'UserId':_0x26053c[_0x2516('0x5d')]['id'],'ContactId':_0x4e7598['id']}))[_0x2516('0x33')](function(_0x576b57){_0x464632[_0x2516('0xbb')][_0x2516('0xba')]=[];_0x464632['dataValues'][_0x2516('0xba')][_0x2516('0x96')](_0x576b57['dataValues']);return _0x464632;});});}})['then'](respondWithResult(_0xafed84,null))[_0x2516('0x26')](handleError(_0xafed84,null));};
\ No newline at end of file
index dfe9bc3..1c9b0ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['update','remove','emit','hook','exports','events','../../mysqldb','save'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xda55,0x6d));var _0x5da5=function(_0x5c17d8,_0x51cc20){_0x5c17d8=_0x5c17d8-0x0;var _0x1841de=_0xda55[_0x5c17d8];return _0x1841de;};'use strict';var EventEmitter=require(_0x5da5('0x0'));var OpenchannelAccount=require(_0x5da5('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5da5('0x2'),'afterUpdate':_0x5da5('0x3'),'afterDestroy':_0x5da5('0x4')};function emitEvent(_0x50cf9f){return function(_0x1c3afd,_0x5da254,_0x3400e9){OpenchannelAccountEvents['emit'](_0x50cf9f+':'+_0x1c3afd['id'],_0x1c3afd);OpenchannelAccountEvents[_0x5da5('0x5')](_0x50cf9f,_0x1c3afd);_0x3400e9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0x5da5('0x6')](e,emitEvent(event));}}module[_0x5da5('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x668b=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x5ce15c,_0x19c917){var _0x36e4f5=function(_0x50fa90){while(--_0x50fa90){_0x5ce15c['push'](_0x5ce15c['shift']());}};_0x36e4f5(++_0x19c917);}(_0x668b,0x140));var _0xb668=function(_0x54c10d,_0x2f2251){_0x54c10d=_0x54c10d-0x0;var _0x1fa703=_0x668b[_0x54c10d];return _0x1fa703;};'use strict';var EventEmitter=require(_0xb668('0x0'));var OpenchannelAccount=require(_0xb668('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xb668('0x2')](0x0);var events={'afterCreate':_0xb668('0x3'),'afterUpdate':'update','afterDestroy':_0xb668('0x4')};function emitEvent(_0x5e2e83){return function(_0x2fab11,_0x4092a6,_0x2960f5){OpenchannelAccountEvents['emit'](_0x5e2e83+':'+_0x2fab11['id'],_0x2fab11);OpenchannelAccountEvents[_0xb668('0x5')](_0x5e2e83,_0x2fab11);_0x2960f5(null);};}for(var e in events){if(events[_0xb668('0x6')](e)){var event=events[e];OpenchannelAccount[_0xb668('0x7')](e,emitEvent(event));}}module[_0xb668('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index 1a8b955..0112bb2 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(_0x4a29d7,_0x19e311){var _0x44556c=function(_0x10eb8b){while(--_0x10eb8b){_0x4a29d7['push'](_0x4a29d7['shift']());}};_0x44556c(++_0x19e311);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x2b0c31,_0x27563e){var _0x503780=function(_0x43cb51){while(--_0x43cb51){_0x2b0c31['push'](_0x2b0c31['shift']());}};_0x503780(++_0x27563e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 faaaf7d..751d98b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ea=['request','then','info','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x55ea,0xc9));var _0xa55e=function(_0x1dd4ef,_0x3c063d){_0x1dd4ef=_0x1dd4ef-0x0;var _0x5462dc=_0x55ea[_0x1dd4ef];return _0x5462dc;};'use strict';var _=require(_0xa55e('0x0'));var util=require(_0xa55e('0x1'));var moment=require(_0xa55e('0x2'));var BPromise=require('bluebird');var rs=require(_0xa55e('0x3'));var fs=require('fs');var Redis=require(_0xa55e('0x4'));var db=require(_0xa55e('0x5'))['db'];var utils=require(_0xa55e('0x6'));var logger=require(_0xa55e('0x7'))('rpc');var config=require(_0xa55e('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xa55e('0x9')](config[_0xa55e('0xa')],{'host':_0xa55e('0xb'),'port':0x18eb});var socket=require(_0xa55e('0xc'))(new Redis(config[_0xa55e('0xa')]));require(_0xa55e('0xd'))[_0xa55e('0xe')](socket);function respondWithRpcPromise(_0x3020cc,_0xe58ede,_0x5da3d0){return new BPromise(function(_0x5e38fa,_0x13f6d7){return client[_0xa55e('0xf')](_0x3020cc,_0x5da3d0)[_0xa55e('0x10')](function(_0x8cdcf0){logger[_0xa55e('0x11')]('OpenchannelAccount,\x20%s,\x20%s',_0xe58ede,_0xa55e('0x12'));logger['debug'](_0xa55e('0x13'),_0xe58ede,_0xa55e('0x12'),JSON[_0xa55e('0x14')](_0x8cdcf0));if(_0x8cdcf0[_0xa55e('0x15')]){if(_0x8cdcf0[_0xa55e('0x15')][_0xa55e('0x16')]===0x1f4){logger[_0xa55e('0x15')](_0xa55e('0x17'),_0xe58ede,_0x8cdcf0[_0xa55e('0x15')]['message']);return _0x13f6d7(_0x8cdcf0[_0xa55e('0x15')][_0xa55e('0x18')]);}logger[_0xa55e('0x15')](_0xa55e('0x17'),_0xe58ede,_0x8cdcf0[_0xa55e('0x15')][_0xa55e('0x18')]);return _0x5e38fa(_0x8cdcf0['error'][_0xa55e('0x18')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0xe58ede,_0xa55e('0x12'));_0x5e38fa(_0x8cdcf0[_0xa55e('0x19')][_0xa55e('0x18')]);}})[_0xa55e('0x1a')](function(_0x3980b4){logger['error'](_0xa55e('0x17'),_0xe58ede,_0x3980b4);_0x13f6d7(_0x3980b4);});});}
\ No newline at end of file
+var _0x94df=['register','request','then','info','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelAccount.socket'];(function(_0x5bbae4,_0x2a4a4e){var _0x338a50=function(_0x478845){while(--_0x478845){_0x5bbae4['push'](_0x5bbae4['shift']());}};_0x338a50(++_0x2a4a4e);}(_0x94df,0xa3));var _0xf94d=function(_0x137629,_0x3abdcb){_0x137629=_0x137629-0x0;var _0x1b2511=_0x94df[_0x137629];return _0x1b2511;};'use strict';var _=require(_0xf94d('0x0'));var util=require(_0xf94d('0x1'));var moment=require(_0xf94d('0x2'));var BPromise=require(_0xf94d('0x3'));var rs=require(_0xf94d('0x4'));var fs=require('fs');var Redis=require(_0xf94d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf94d('0x6'));var logger=require(_0xf94d('0x7'))(_0xf94d('0x8'));var config=require(_0xf94d('0x9'));var jayson=require(_0xf94d('0xa'));var client=jayson[_0xf94d('0xb')][_0xf94d('0xc')]({'port':0x232a});config[_0xf94d('0xd')]=_[_0xf94d('0xe')](config[_0xf94d('0xd')],{'host':_0xf94d('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf94d('0xd')]));require(_0xf94d('0x10'))[_0xf94d('0x11')](socket);function respondWithRpcPromise(_0x1bde05,_0xdaa8d6,_0x45739c){return new BPromise(function(_0x47efc6,_0x25c68e){return client[_0xf94d('0x12')](_0x1bde05,_0x45739c)[_0xf94d('0x13')](function(_0x19b1de){logger[_0xf94d('0x14')]('OpenchannelAccount,\x20%s,\x20%s',_0xdaa8d6,'request\x20sent');logger[_0xf94d('0x15')](_0xf94d('0x16'),_0xdaa8d6,_0xf94d('0x17'),JSON[_0xf94d('0x18')](_0x19b1de));if(_0x19b1de[_0xf94d('0x19')]){if(_0x19b1de[_0xf94d('0x19')]['code']===0x1f4){logger[_0xf94d('0x19')](_0xf94d('0x1a'),_0xdaa8d6,_0x19b1de[_0xf94d('0x19')][_0xf94d('0x1b')]);return _0x25c68e(_0x19b1de[_0xf94d('0x19')][_0xf94d('0x1b')]);}logger[_0xf94d('0x19')](_0xf94d('0x1a'),_0xdaa8d6,_0x19b1de['error'][_0xf94d('0x1b')]);return _0x47efc6(_0x19b1de['error'][_0xf94d('0x1b')]);}else{logger['info'](_0xf94d('0x1a'),_0xdaa8d6,'request\x20sent');_0x47efc6(_0x19b1de[_0xf94d('0x1c')][_0xf94d('0x1b')]);}})[_0xf94d('0x1d')](function(_0x349de5){logger['error'](_0xf94d('0x1a'),_0xdaa8d6,_0x349de5);_0x25c68e(_0x349de5);});});}
\ No newline at end of file
index 5a7fbff..3a00e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35ba=['emit','removeListener','length','openchannelAccount:','./openchannelAccount.events','save','remove','update'];(function(_0x20076b,_0x4f218e){var _0x1ae3de=function(_0x545d7a){while(--_0x545d7a){_0x20076b['push'](_0x20076b['shift']());}};_0x1ae3de(++_0x4f218e);}(_0x35ba,0x8c));var _0xa35b=function(_0x473e3f,_0x2f0947){_0x473e3f=_0x473e3f-0x0;var _0x59399b=_0x35ba[_0x473e3f];return _0x59399b;};'use strict';var OpenchannelAccountEvents=require(_0xa35b('0x0'));var events=[_0xa35b('0x1'),_0xa35b('0x2'),_0xa35b('0x3')];function createListener(_0x4b2e01,_0x1bd11e){return function(_0x1eb695){_0x1bd11e[_0xa35b('0x4')](_0x4b2e01,_0x1eb695);};}function removeListener(_0x1b54c1,_0x26742f){return function(){OpenchannelAccountEvents[_0xa35b('0x5')](_0x1b54c1,_0x26742f);};}exports['register']=function(_0x3b342a){for(var _0x5e6bf7=0x0,_0x7f0063=events[_0xa35b('0x6')];_0x5e6bf7<_0x7f0063;_0x5e6bf7++){var _0x2be599=events[_0x5e6bf7];var _0x42da91=createListener(_0xa35b('0x7')+_0x2be599,_0x3b342a);OpenchannelAccountEvents['on'](_0x2be599,_0x42da91);}};
\ No newline at end of file
+var _0x2504=['remove','update','emit','removeListener','register','openchannelAccount:','./openchannelAccount.events','save'];(function(_0x1bce91,_0x2b6500){var _0x3c20c2=function(_0x1eeb06){while(--_0x1eeb06){_0x1bce91['push'](_0x1bce91['shift']());}};_0x3c20c2(++_0x2b6500);}(_0x2504,0xee));var _0x4250=function(_0x41d4ce,_0x2aa719){_0x41d4ce=_0x41d4ce-0x0;var _0x1525c0=_0x2504[_0x41d4ce];return _0x1525c0;};'use strict';var OpenchannelAccountEvents=require(_0x4250('0x0'));var events=[_0x4250('0x1'),_0x4250('0x2'),_0x4250('0x3')];function createListener(_0x307ca9,_0x67c47b){return function(_0x41d71d){_0x67c47b[_0x4250('0x4')](_0x307ca9,_0x41d71d);};}function removeListener(_0x17d2d8,_0xc31f3a){return function(){OpenchannelAccountEvents[_0x4250('0x5')](_0x17d2d8,_0xc31f3a);};}exports[_0x4250('0x6')]=function(_0x493da9){for(var _0x473cb8=0x0,_0x4e177e=events['length'];_0x473cb8<_0x4e177e;_0x473cb8++){var _0x370998=events[_0x473cb8];var _0x477312=createListener(_0x4250('0x7')+_0x370998,_0x493da9);OpenchannelAccountEvents['on'](_0x370998,_0x477312);}};
\ No newline at end of file
index 92ca251..e312464 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfea5=['./openchannelApplication.controller','get','/:id','show','isAuthenticated','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x2cfd06,_0xd2237d){var _0x2a62c8=function(_0x2dc001){while(--_0x2dc001){_0x2cfd06['push'](_0x2cfd06['shift']());}};_0x2a62c8(++_0xd2237d);}(_0xfea5,0x1c3));var _0x5fea=function(_0x29a332,_0x100c94){_0x29a332=_0x29a332-0x0;var _0x8b59d0=_0xfea5[_0x29a332];return _0x8b59d0;};'use strict';var multer=require(_0x5fea('0x0'));var util=require(_0x5fea('0x1'));var path=require(_0x5fea('0x2'));var timeout=require(_0x5fea('0x3'));var express=require(_0x5fea('0x4'));var router=express[_0x5fea('0x5')]();var fs_extra=require(_0x5fea('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5fea('0x7'));var config=require(_0x5fea('0x8'));var controller=require(_0x5fea('0x9'));router[_0x5fea('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5fea('0xa')](_0x5fea('0xb'),auth['isAuthenticated'](),controller[_0x5fea('0xc')]);router['post']('/',auth[_0x5fea('0xd')](),controller[_0x5fea('0xe')]);router[_0x5fea('0xf')]('/:id',auth[_0x5fea('0xd')](),controller[_0x5fea('0x10')]);router[_0x5fea('0x11')](_0x5fea('0xb'),auth[_0x5fea('0xd')](),controller[_0x5fea('0x12')]);module[_0x5fea('0x13')]=router;
\ No newline at end of file
+var _0xa0f0=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','/:id','post','create','put','update','delete','multer','util','path'];(function(_0x3846e4,_0x4be843){var _0x549068=function(_0x5beb84){while(--_0x5beb84){_0x3846e4['push'](_0x3846e4['shift']());}};_0x549068(++_0x4be843);}(_0xa0f0,0x1e3));var _0x0a0f=function(_0x334eb0,_0x3f192d){_0x334eb0=_0x334eb0-0x0;var _0x20f534=_0xa0f0[_0x334eb0];return _0x20f534;};'use strict';var multer=require(_0x0a0f('0x0'));var util=require(_0x0a0f('0x1'));var path=require(_0x0a0f('0x2'));var timeout=require('connect-timeout');var express=require(_0x0a0f('0x3'));var router=express[_0x0a0f('0x4')]();var fs_extra=require(_0x0a0f('0x5'));var auth=require(_0x0a0f('0x6'));var interaction=require(_0x0a0f('0x7'));var config=require(_0x0a0f('0x8'));var controller=require(_0x0a0f('0x9'));router[_0x0a0f('0xa')]('/',auth[_0x0a0f('0xb')](),controller['index']);router['get'](_0x0a0f('0xc'),auth[_0x0a0f('0xb')](),controller['show']);router[_0x0a0f('0xd')]('/',auth[_0x0a0f('0xb')](),controller[_0x0a0f('0xe')]);router[_0x0a0f('0xf')]('/:id',auth[_0x0a0f('0xb')](),controller[_0x0a0f('0x10')]);router[_0x0a0f('0x11')](_0x0a0f('0xc'),auth[_0x0a0f('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 30538ff..c32b0e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa3=['STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x4b33d1,_0x2414e1){var _0x9e7221=function(_0x476ecc){while(--_0x476ecc){_0x4b33d1['push'](_0x4b33d1['shift']());}};_0x9e7221(++_0x2414e1);}(_0x0aa3,0x1d0));var _0x30aa=function(_0x4c0a5b,_0xbda0e2){_0x4c0a5b=_0x4c0a5b-0x0;var _0x3ddd8d=_0x0aa3[_0x4c0a5b];return _0x3ddd8d;};'use strict';var Sequelize=require(_0x30aa('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x30aa('0x1')],'allowNull':![],'defaultValue':_0x30aa('0x2')},'appdata':{'type':Sequelize[_0x30aa('0x3')]()},'description':{'type':Sequelize[_0x30aa('0x1')]},'interval':{'type':Sequelize[_0x30aa('0x1')],'defaultValue':_0x30aa('0x4')}};
\ No newline at end of file
+var _0xc0f8=['TEXT','STRING','*,*,*,*','sequelize','noop'];(function(_0x63e3cd,_0x1e71b5){var _0xfe9dba=function(_0x4ba38b){while(--_0x4ba38b){_0x63e3cd['push'](_0x63e3cd['shift']());}};_0xfe9dba(++_0x1e71b5);}(_0xc0f8,0x1ac));var _0x8c0f=function(_0x4fffc0,_0x2341ec){_0x4fffc0=_0x4fffc0-0x0;var _0x39713e=_0xc0f8[_0x4fffc0];return _0x39713e;};'use strict';var Sequelize=require(_0x8c0f('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8c0f('0x1')},'appdata':{'type':Sequelize[_0x8c0f('0x2')]()},'description':{'type':Sequelize[_0x8c0f('0x3')]},'interval':{'type':Sequelize[_0x8c0f('0x3')],'defaultValue':_0x8c0f('0x4')}};
\ No newline at end of file
index a28060a..c7e4db9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df2=['destroy','error','stack','name','send','index','OpenchannelApplication','rawAttributes','type','key','model','map','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','includeAll','include','params','options','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then'];(function(_0xab897c,_0x45ab3e){var _0x50962c=function(_0x1f3028){while(--_0x1f3028){_0xab897c['push'](_0xab897c['shift']());}};_0x50962c(++_0x45ab3e);}(_0x1df2,0xc1));var _0x21df=function(_0xb23d4e,_0x48abec){_0xb23d4e=_0xb23d4e-0x0;var _0x9308a8=_0x1df2[_0xb23d4e];return _0x9308a8;};'use strict';var emlformat=require(_0x21df('0x0'));var rimraf=require(_0x21df('0x1'));var zipdir=require(_0x21df('0x2'));var jsonpatch=require(_0x21df('0x3'));var rp=require(_0x21df('0x4'));var moment=require(_0x21df('0x5'));var BPromise=require(_0x21df('0x6'));var Mustache=require(_0x21df('0x7'));var util=require(_0x21df('0x8'));var path=require(_0x21df('0x9'));var sox=require(_0x21df('0xa'));var csv=require('to-csv');var ejs=require(_0x21df('0xb'));var fs=require('fs');var fs_extra=require(_0x21df('0xc'));var _=require(_0x21df('0xd'));var squel=require(_0x21df('0xe'));var crypto=require(_0x21df('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x21df('0x10'));var toCsv=require(_0x21df('0x11'));var querystring=require(_0x21df('0x12'));var Papa=require(_0x21df('0x13'));var Redis=require(_0x21df('0x14'));var authService=require(_0x21df('0x15'));var qs=require(_0x21df('0x16'));var as=require(_0x21df('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x21df('0x18'))(_0x21df('0x19'));var utils=require(_0x21df('0x1a'));var config=require(_0x21df('0x1b'));var licenseUtil=require(_0x21df('0x1c'));var db=require(_0x21df('0x1d'))['db'];function respondWithStatusCode(_0x3618fe,_0x4cb80a){_0x4cb80a=_0x4cb80a||0xcc;return function(_0x56fc6c){if(_0x56fc6c){return _0x3618fe[_0x21df('0x1e')](_0x4cb80a);}return _0x3618fe[_0x21df('0x1f')](_0x4cb80a)[_0x21df('0x20')]();};}function respondWithResult(_0x1c0715,_0x52b5ce){_0x52b5ce=_0x52b5ce||0xc8;return function(_0x4262b4){if(_0x4262b4){return _0x1c0715[_0x21df('0x1f')](_0x52b5ce)[_0x21df('0x21')](_0x4262b4);}};}function respondWithFilteredResult(_0x43e95f,_0x312515){return function(_0x1519e3){if(_0x1519e3){var _0x46b6e8=typeof _0x312515[_0x21df('0x22')]===_0x21df('0x23')&&typeof _0x312515[_0x21df('0x24')]===_0x21df('0x23');var _0x29e7fc=_0x1519e3[_0x21df('0x25')];var _0x12f257=_0x46b6e8?0x0:_0x312515['offset'];var _0x490d05=_0x46b6e8?_0x1519e3['count']:_0x312515['offset']+_0x312515[_0x21df('0x24')];var _0x358c6a;if(_0x490d05>=_0x29e7fc){_0x490d05=_0x29e7fc;_0x358c6a=0xc8;}else{_0x358c6a=0xce;}_0x43e95f['status'](_0x358c6a);return _0x43e95f[_0x21df('0x26')](_0x21df('0x27'),_0x12f257+'-'+_0x490d05+'/'+_0x29e7fc)[_0x21df('0x21')](_0x1519e3);}return null;};}function patchUpdates(_0xadb986){return function(_0x154b30){try{jsonpatch[_0x21df('0x28')](_0x154b30,_0xadb986,!![]);}catch(_0x4d27bd){return BPromise[_0x21df('0x29')](_0x4d27bd);}return _0x154b30['save']();};}function saveUpdates(_0x1d7311,_0x47f8cb){return function(_0x3280e6){if(_0x3280e6){return _0x3280e6[_0x21df('0x2a')](_0x1d7311)[_0x21df('0x2b')](function(_0x2409a5){return _0x2409a5;});}return null;};}function removeEntity(_0x1880bb,_0x1b7932){return function(_0xfb43f1){if(_0xfb43f1){return _0xfb43f1[_0x21df('0x2c')]()[_0x21df('0x2b')](function(){_0x1880bb[_0x21df('0x1f')](0xcc)[_0x21df('0x20')]();});}};}function handleEntityNotFound(_0x4fb7b7,_0x1dd5fd){return function(_0x4bbbe2){if(!_0x4bbbe2){_0x4fb7b7[_0x21df('0x1e')](0x194);}return _0x4bbbe2;};}function handleError(_0x4a651b,_0x4b4ced){_0x4b4ced=_0x4b4ced||0x1f4;return function(_0x117a87){logger[_0x21df('0x2d')](_0x117a87[_0x21df('0x2e')]);if(_0x117a87[_0x21df('0x2f')]){delete _0x117a87['name'];}_0x4a651b['status'](_0x4b4ced)[_0x21df('0x30')](_0x117a87);};}exports[_0x21df('0x31')]=function(_0x437ef2,_0x6f3347){var _0x33c22d={},_0x633979={},_0x515d47={'count':0x0,'rows':[]};var _0x26c0f4=_['map'](db[_0x21df('0x32')][_0x21df('0x33')],function(_0x104b07){return{'name':_0x104b07['fieldName'],'type':_0x104b07[_0x21df('0x34')][_0x21df('0x35')]};});_0x633979[_0x21df('0x36')]=_[_0x21df('0x37')](_0x26c0f4,_0x21df('0x2f'));_0x633979['query']=_[_0x21df('0x38')](_0x437ef2['query']);_0x633979['filters']=_[_0x21df('0x39')](_0x633979[_0x21df('0x36')],_0x633979[_0x21df('0x3a')]);_0x33c22d[_0x21df('0x3b')]=_[_0x21df('0x39')](_0x633979[_0x21df('0x36')],qs[_0x21df('0x3c')](_0x437ef2[_0x21df('0x3a')][_0x21df('0x3c')]));_0x33c22d[_0x21df('0x3b')]=_0x33c22d[_0x21df('0x3b')][_0x21df('0x3d')]?_0x33c22d['attributes']:_0x633979[_0x21df('0x36')];if(!_0x437ef2[_0x21df('0x3a')][_0x21df('0x3e')](_0x21df('0x3f'))){_0x33c22d['limit']=qs[_0x21df('0x24')](_0x437ef2[_0x21df('0x3a')][_0x21df('0x24')]);_0x33c22d['offset']=qs[_0x21df('0x22')](_0x437ef2['query']['offset']);}_0x33c22d[_0x21df('0x40')]=qs[_0x21df('0x41')](_0x437ef2[_0x21df('0x3a')]['sort']);_0x33c22d[_0x21df('0x42')]=qs[_0x21df('0x43')](_[_0x21df('0x44')](_0x437ef2['query'],_0x633979['filters']),_0x26c0f4);if(_0x437ef2['query']['filter']){_0x33c22d['where']=_[_0x21df('0x45')](_0x33c22d[_0x21df('0x42')],{'$or':_[_0x21df('0x37')](_0x26c0f4,function(_0x2ebf51){if(_0x2ebf51[_0x21df('0x34')]!==_0x21df('0x46')){var _0x15c4a4={};_0x15c4a4[_0x2ebf51['name']]={'$like':'%'+_0x437ef2[_0x21df('0x3a')]['filter']+'%'};return _0x15c4a4;}})});}_0x33c22d=_['merge']({},_0x33c22d,_0x437ef2['options']);var _0x1f48ff={'where':_0x33c22d[_0x21df('0x42')]};return db['OpenchannelApplication'][_0x21df('0x25')](_0x1f48ff)[_0x21df('0x2b')](function(_0x2422c7){_0x515d47[_0x21df('0x25')]=_0x2422c7;if(_0x437ef2[_0x21df('0x3a')][_0x21df('0x47')]){_0x33c22d[_0x21df('0x48')]=[{'all':!![]}];}return db['OpenchannelApplication']['findAll'](_0x33c22d);})[_0x21df('0x2b')](function(_0x12b1f9){_0x515d47['rows']=_0x12b1f9;return _0x515d47;})[_0x21df('0x2b')](respondWithFilteredResult(_0x6f3347,_0x33c22d))['catch'](handleError(_0x6f3347,null));};exports['show']=function(_0x9442e9,_0x72ea6a){var _0x3d8fa3={'raw':!![],'where':{'id':_0x9442e9[_0x21df('0x49')]['id']}},_0x562394={};_0x562394['model']=_[_0x21df('0x38')](db[_0x21df('0x32')]['rawAttributes']);_0x562394[_0x21df('0x3a')]=_['keys'](_0x9442e9[_0x21df('0x3a')]);_0x562394[_0x21df('0x43')]=_[_0x21df('0x39')](_0x562394[_0x21df('0x36')],_0x562394[_0x21df('0x3a')]);_0x3d8fa3[_0x21df('0x3b')]=_['intersection'](_0x562394[_0x21df('0x36')],qs[_0x21df('0x3c')](_0x9442e9[_0x21df('0x3a')]['fields']));_0x3d8fa3[_0x21df('0x3b')]=_0x3d8fa3[_0x21df('0x3b')][_0x21df('0x3d')]?_0x3d8fa3['attributes']:_0x562394[_0x21df('0x36')];if(_0x9442e9[_0x21df('0x3a')][_0x21df('0x47')]){_0x3d8fa3['include']=[{'all':!![]}];}_0x3d8fa3=_[_0x21df('0x45')]({},_0x3d8fa3,_0x9442e9[_0x21df('0x4a')]);return db['OpenchannelApplication'][_0x21df('0x4b')](_0x3d8fa3)[_0x21df('0x2b')](handleEntityNotFound(_0x72ea6a,null))[_0x21df('0x2b')](respondWithResult(_0x72ea6a,null))[_0x21df('0x4c')](handleError(_0x72ea6a,null));};exports[_0x21df('0x4d')]=function(_0x56de79,_0x45418c){return db[_0x21df('0x32')]['create'](_0x56de79[_0x21df('0x4e')],{})[_0x21df('0x2b')](respondWithResult(_0x45418c,0xc9))[_0x21df('0x4c')](handleError(_0x45418c,null));};exports[_0x21df('0x2a')]=function(_0x4ae10f,_0x2499cb){if(_0x4ae10f['body']['id']){delete _0x4ae10f[_0x21df('0x4e')]['id'];}return db[_0x21df('0x32')][_0x21df('0x4b')]({'where':{'id':_0x4ae10f[_0x21df('0x49')]['id']}})[_0x21df('0x2b')](handleEntityNotFound(_0x2499cb,null))[_0x21df('0x2b')](saveUpdates(_0x4ae10f[_0x21df('0x4e')],null))[_0x21df('0x2b')](respondWithResult(_0x2499cb,null))[_0x21df('0x4c')](handleError(_0x2499cb,null));};exports[_0x21df('0x2c')]=function(_0x409f38,_0x1768b3){return db['OpenchannelApplication'][_0x21df('0x4b')]({'where':{'id':_0x409f38[_0x21df('0x49')]['id']}})['then'](handleEntityNotFound(_0x1768b3,null))[_0x21df('0x2b')](removeEntity(_0x1768b3,null))[_0x21df('0x4c')](handleError(_0x1768b3,null));};
\ No newline at end of file
+var _0xbb13=['Content-Range','json','save','update','then','stack','index','OpenchannelApplication','fieldName','type','key','model','map','name','query','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','where','merge','VIRTUAL','count','includeAll','findAll','rows','catch','show','keys','rawAttributes','include','options','find','create','body','destroy','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set'];(function(_0x261a4a,_0x389a4f){var _0xc8d5b4=function(_0x5084e9){while(--_0x5084e9){_0x261a4a['push'](_0x261a4a['shift']());}};_0xc8d5b4(++_0x389a4f);}(_0xbb13,0x1da));var _0x3bb1=function(_0x254c42,_0x3ffe09){_0x254c42=_0x254c42-0x0;var _0x381cb7=_0xbb13[_0x254c42];return _0x381cb7;};'use strict';var emlformat=require(_0x3bb1('0x0'));var rimraf=require(_0x3bb1('0x1'));var zipdir=require(_0x3bb1('0x2'));var jsonpatch=require(_0x3bb1('0x3'));var rp=require(_0x3bb1('0x4'));var moment=require('moment');var BPromise=require(_0x3bb1('0x5'));var Mustache=require(_0x3bb1('0x6'));var util=require(_0x3bb1('0x7'));var path=require(_0x3bb1('0x8'));var sox=require('sox');var csv=require(_0x3bb1('0x9'));var ejs=require(_0x3bb1('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bb1('0xb'));var squel=require(_0x3bb1('0xc'));var crypto=require('crypto');var jsforce=require(_0x3bb1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3bb1('0x9'));var querystring=require(_0x3bb1('0xe'));var Papa=require(_0x3bb1('0xf'));var Redis=require(_0x3bb1('0x10'));var authService=require(_0x3bb1('0x11'));var qs=require(_0x3bb1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3bb1('0x13'))('api');var utils=require(_0x3bb1('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3bb1('0x15'));var db=require(_0x3bb1('0x16'))['db'];function respondWithStatusCode(_0x359fff,_0x48af7d){_0x48af7d=_0x48af7d||0xcc;return function(_0x281b34){if(_0x281b34){return _0x359fff[_0x3bb1('0x17')](_0x48af7d);}return _0x359fff[_0x3bb1('0x18')](_0x48af7d)[_0x3bb1('0x19')]();};}function respondWithResult(_0x5d8398,_0x20621a){_0x20621a=_0x20621a||0xc8;return function(_0xff5662){if(_0xff5662){return _0x5d8398[_0x3bb1('0x18')](_0x20621a)['json'](_0xff5662);}};}function respondWithFilteredResult(_0x5002b9,_0x516823){return function(_0x28d2d8){if(_0x28d2d8){var _0x5d937e=typeof _0x516823[_0x3bb1('0x1a')]===_0x3bb1('0x1b')&&typeof _0x516823[_0x3bb1('0x1c')]===_0x3bb1('0x1b');var _0x142e22=_0x28d2d8['count'];var _0x60234a=_0x5d937e?0x0:_0x516823[_0x3bb1('0x1a')];var _0x91be9e=_0x5d937e?_0x28d2d8['count']:_0x516823['offset']+_0x516823['limit'];var _0x5ec9f4;if(_0x91be9e>=_0x142e22){_0x91be9e=_0x142e22;_0x5ec9f4=0xc8;}else{_0x5ec9f4=0xce;}_0x5002b9['status'](_0x5ec9f4);return _0x5002b9[_0x3bb1('0x1d')](_0x3bb1('0x1e'),_0x60234a+'-'+_0x91be9e+'/'+_0x142e22)[_0x3bb1('0x1f')](_0x28d2d8);}return null;};}function patchUpdates(_0x2808e6){return function(_0x3bce59){try{jsonpatch['apply'](_0x3bce59,_0x2808e6,!![]);}catch(_0x1b4f7d){return BPromise['reject'](_0x1b4f7d);}return _0x3bce59[_0x3bb1('0x20')]();};}function saveUpdates(_0x3a330b,_0x4aebf5){return function(_0x4a943a){if(_0x4a943a){return _0x4a943a[_0x3bb1('0x21')](_0x3a330b)[_0x3bb1('0x22')](function(_0x2a4a6e){return _0x2a4a6e;});}return null;};}function removeEntity(_0x2ecbc8,_0x1f1311){return function(_0x34b6af){if(_0x34b6af){return _0x34b6af['destroy']()[_0x3bb1('0x22')](function(){_0x2ecbc8['status'](0xcc)[_0x3bb1('0x19')]();});}};}function handleEntityNotFound(_0x80cabd,_0x2105f5){return function(_0x75b526){if(!_0x75b526){_0x80cabd[_0x3bb1('0x17')](0x194);}return _0x75b526;};}function handleError(_0x294008,_0x3ea9e8){_0x3ea9e8=_0x3ea9e8||0x1f4;return function(_0x2fd452){logger['error'](_0x2fd452[_0x3bb1('0x23')]);if(_0x2fd452['name']){delete _0x2fd452['name'];}_0x294008[_0x3bb1('0x18')](_0x3ea9e8)['send'](_0x2fd452);};}exports[_0x3bb1('0x24')]=function(_0x811819,_0x3f5107){var _0x4b2e04={},_0x5151f8={},_0x52c702={'count':0x0,'rows':[]};var _0x322d87=_['map'](db[_0x3bb1('0x25')]['rawAttributes'],function(_0x47480c){return{'name':_0x47480c[_0x3bb1('0x26')],'type':_0x47480c[_0x3bb1('0x27')][_0x3bb1('0x28')]};});_0x5151f8[_0x3bb1('0x29')]=_[_0x3bb1('0x2a')](_0x322d87,_0x3bb1('0x2b'));_0x5151f8[_0x3bb1('0x2c')]=_['keys'](_0x811819[_0x3bb1('0x2c')]);_0x5151f8[_0x3bb1('0x2d')]=_[_0x3bb1('0x2e')](_0x5151f8[_0x3bb1('0x29')],_0x5151f8[_0x3bb1('0x2c')]);_0x4b2e04[_0x3bb1('0x2f')]=_[_0x3bb1('0x2e')](_0x5151f8[_0x3bb1('0x29')],qs[_0x3bb1('0x30')](_0x811819['query'][_0x3bb1('0x30')]));_0x4b2e04['attributes']=_0x4b2e04[_0x3bb1('0x2f')][_0x3bb1('0x31')]?_0x4b2e04[_0x3bb1('0x2f')]:_0x5151f8[_0x3bb1('0x29')];if(!_0x811819[_0x3bb1('0x2c')]['hasOwnProperty'](_0x3bb1('0x32'))){_0x4b2e04[_0x3bb1('0x1c')]=qs['limit'](_0x811819['query'][_0x3bb1('0x1c')]);_0x4b2e04[_0x3bb1('0x1a')]=qs[_0x3bb1('0x1a')](_0x811819['query'][_0x3bb1('0x1a')]);}_0x4b2e04['order']=qs[_0x3bb1('0x33')](_0x811819[_0x3bb1('0x2c')][_0x3bb1('0x33')]);_0x4b2e04['where']=qs[_0x3bb1('0x2d')](_[_0x3bb1('0x34')](_0x811819['query'],_0x5151f8[_0x3bb1('0x2d')]),_0x322d87);if(_0x811819['query'][_0x3bb1('0x35')]){_0x4b2e04[_0x3bb1('0x36')]=_[_0x3bb1('0x37')](_0x4b2e04[_0x3bb1('0x36')],{'$or':_[_0x3bb1('0x2a')](_0x322d87,function(_0x3682b9){if(_0x3682b9[_0x3bb1('0x27')]!==_0x3bb1('0x38')){var _0x350046={};_0x350046[_0x3682b9[_0x3bb1('0x2b')]]={'$like':'%'+_0x811819[_0x3bb1('0x2c')][_0x3bb1('0x35')]+'%'};return _0x350046;}})});}_0x4b2e04=_['merge']({},_0x4b2e04,_0x811819['options']);var _0x5cfae1={'where':_0x4b2e04[_0x3bb1('0x36')]};return db[_0x3bb1('0x25')][_0x3bb1('0x39')](_0x5cfae1)[_0x3bb1('0x22')](function(_0x3e838c){_0x52c702['count']=_0x3e838c;if(_0x811819[_0x3bb1('0x2c')][_0x3bb1('0x3a')]){_0x4b2e04['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0x3bb1('0x3b')](_0x4b2e04);})[_0x3bb1('0x22')](function(_0x5ed344){_0x52c702[_0x3bb1('0x3c')]=_0x5ed344;return _0x52c702;})[_0x3bb1('0x22')](respondWithFilteredResult(_0x3f5107,_0x4b2e04))[_0x3bb1('0x3d')](handleError(_0x3f5107,null));};exports[_0x3bb1('0x3e')]=function(_0x531753,_0x2ccdeb){var _0x4210f6={'raw':!![],'where':{'id':_0x531753['params']['id']}},_0x20aea8={};_0x20aea8[_0x3bb1('0x29')]=_[_0x3bb1('0x3f')](db[_0x3bb1('0x25')][_0x3bb1('0x40')]);_0x20aea8['query']=_['keys'](_0x531753[_0x3bb1('0x2c')]);_0x20aea8['filters']=_['intersection'](_0x20aea8[_0x3bb1('0x29')],_0x20aea8[_0x3bb1('0x2c')]);_0x4210f6['attributes']=_[_0x3bb1('0x2e')](_0x20aea8[_0x3bb1('0x29')],qs['fields'](_0x531753[_0x3bb1('0x2c')][_0x3bb1('0x30')]));_0x4210f6[_0x3bb1('0x2f')]=_0x4210f6[_0x3bb1('0x2f')]['length']?_0x4210f6['attributes']:_0x20aea8['model'];if(_0x531753[_0x3bb1('0x2c')][_0x3bb1('0x3a')]){_0x4210f6[_0x3bb1('0x41')]=[{'all':!![]}];}_0x4210f6=_['merge']({},_0x4210f6,_0x531753[_0x3bb1('0x42')]);return db[_0x3bb1('0x25')][_0x3bb1('0x43')](_0x4210f6)[_0x3bb1('0x22')](handleEntityNotFound(_0x2ccdeb,null))[_0x3bb1('0x22')](respondWithResult(_0x2ccdeb,null))['catch'](handleError(_0x2ccdeb,null));};exports['create']=function(_0xb39f45,_0x5abf0a){return db['OpenchannelApplication'][_0x3bb1('0x44')](_0xb39f45['body'],{})[_0x3bb1('0x22')](respondWithResult(_0x5abf0a,0xc9))[_0x3bb1('0x3d')](handleError(_0x5abf0a,null));};exports['update']=function(_0x2ab9f1,_0x3f4df2){if(_0x2ab9f1[_0x3bb1('0x45')]['id']){delete _0x2ab9f1['body']['id'];}return db['OpenchannelApplication'][_0x3bb1('0x43')]({'where':{'id':_0x2ab9f1['params']['id']}})['then'](handleEntityNotFound(_0x3f4df2,null))[_0x3bb1('0x22')](saveUpdates(_0x2ab9f1[_0x3bb1('0x45')],null))['then'](respondWithResult(_0x3f4df2,null))[_0x3bb1('0x3d')](handleError(_0x3f4df2,null));};exports[_0x3bb1('0x46')]=function(_0x34ce29,_0x155ec1){return db[_0x3bb1('0x25')][_0x3bb1('0x43')]({'where':{'id':_0x34ce29[_0x3bb1('0x47')]['id']}})[_0x3bb1('0x22')](handleEntityNotFound(_0x155ec1,null))[_0x3bb1('0x22')](removeEntity(_0x155ec1,null))[_0x3bb1('0x3d')](handleError(_0x155ec1,null));};
\ No newline at end of file
index 21bde10..60a919c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d37=['bluebird','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9d37,0x8c));var _0x79d3=function(_0xae7e8b,_0x4fb553){_0xae7e8b=_0xae7e8b-0x0;var _0xe3cb53=_0x9d37[_0xae7e8b];return _0xe3cb53;};'use strict';var _=require(_0x79d3('0x0'));var util=require('util');var logger=require(_0x79d3('0x1'))(_0x79d3('0x2'));var moment=require(_0x79d3('0x3'));var BPromise=require(_0x79d3('0x4'));var rp=require(_0x79d3('0x5'));var fs=require('fs');var path=require(_0x79d3('0x6'));var rimraf=require(_0x79d3('0x7'));var config=require(_0x79d3('0x8'));var attributes=require(_0x79d3('0x9'));module[_0x79d3('0xa')]=function(_0x375421,_0x822699){return _0x375421[_0x79d3('0xb')](_0x79d3('0xc'),attributes,{'tableName':_0x79d3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x79d3('0xe'),'collate':_0x79d3('0xf')});};
\ No newline at end of file
+var _0x3a7f=['utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','OpenchannelApplication','openchannel_applications'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x3a7f,0x181));var _0xf3a7=function(_0x1cc740,_0x2a6bc){_0x1cc740=_0x1cc740-0x0;var _0x103b21=_0x3a7f[_0x1cc740];return _0x103b21;};'use strict';var _=require('lodash');var util=require(_0xf3a7('0x0'));var logger=require(_0xf3a7('0x1'))(_0xf3a7('0x2'));var moment=require(_0xf3a7('0x3'));var BPromise=require(_0xf3a7('0x4'));var rp=require(_0xf3a7('0x5'));var fs=require('fs');var path=require(_0xf3a7('0x6'));var rimraf=require(_0xf3a7('0x7'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module['exports']=function(_0x5ec78e,_0x1b791b){return _0x5ec78e[_0xf3a7('0x8')](_0xf3a7('0x9'),attributes,{'tableName':_0xf3a7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xf3a7('0xb')});};
\ No newline at end of file
index d91192b..85de568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc74f=['request','then','info','OpenchannelApplication,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','raw','options','where','attributes','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x475e63,_0x30ae36){var _0x492895=function(_0x4fed9f){while(--_0x4fed9f){_0x475e63['push'](_0x475e63['shift']());}};_0x492895(++_0x30ae36);}(_0xc74f,0xd4));var _0xfc74=function(_0x127e30,_0x5a3ca3){_0x127e30=_0x127e30-0x0;var _0x260a7b=_0xc74f[_0x127e30];return _0x260a7b;};'use strict';var _=require(_0xfc74('0x0'));var util=require(_0xfc74('0x1'));var moment=require(_0xfc74('0x2'));var BPromise=require(_0xfc74('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfc74('0x4'));var db=require(_0xfc74('0x5'))['db'];var utils=require(_0xfc74('0x6'));var logger=require(_0xfc74('0x7'))(_0xfc74('0x8'));var config=require(_0xfc74('0x9'));var jayson=require(_0xfc74('0xa'));var client=jayson['client'][_0xfc74('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x426757,_0x3362f5,_0x1e2e33){return new BPromise(function(_0x48eeda,_0x183382){return client[_0xfc74('0xc')](_0x426757,_0x1e2e33)[_0xfc74('0xd')](function(_0x3197d9){logger[_0xfc74('0xe')](_0xfc74('0xf'),_0x3362f5,'request\x20sent');logger[_0xfc74('0x10')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x3362f5,_0xfc74('0x11'),JSON[_0xfc74('0x12')](_0x3197d9));if(_0x3197d9[_0xfc74('0x13')]){if(_0x3197d9['error'][_0xfc74('0x14')]===0x1f4){logger['error'](_0xfc74('0xf'),_0x3362f5,_0x3197d9['error'][_0xfc74('0x15')]);return _0x183382(_0x3197d9[_0xfc74('0x13')][_0xfc74('0x15')]);}logger[_0xfc74('0x13')](_0xfc74('0xf'),_0x3362f5,_0x3197d9[_0xfc74('0x13')]['message']);return _0x48eeda(_0x3197d9[_0xfc74('0x13')]['message']);}else{logger[_0xfc74('0xe')](_0xfc74('0xf'),_0x3362f5,_0xfc74('0x11'));_0x48eeda(_0x3197d9[_0xfc74('0x16')]['message']);}})[_0xfc74('0x17')](function(_0x3fe39e){logger[_0xfc74('0x13')](_0xfc74('0xf'),_0x3362f5,_0x3fe39e);_0x183382(_0x3fe39e);});});}exports[_0xfc74('0x18')]=function(_0x372e9f){var _0x4dee3b=this;return new Promise(function(_0x59bd74,_0x116d69){return db[_0xfc74('0x19')][_0xfc74('0x1a')](_0x372e9f[_0xfc74('0x1b')],{'raw':_0x372e9f['options']?_0x372e9f['options'][_0xfc74('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x372e9f[_0xfc74('0x1d')]?_0x372e9f[_0xfc74('0x1d')][_0xfc74('0x1e')]||null:null,'attributes':_0x372e9f['options']?_0x372e9f[_0xfc74('0x1d')][_0xfc74('0x1f')]||null:null,'limit':_0x372e9f[_0xfc74('0x1d')]?_0x372e9f['options']['limit']||null:null})[_0xfc74('0xd')](function(_0x5534e5){logger[_0xfc74('0xe')](_0xfc74('0x18'),_0x372e9f);logger[_0xfc74('0x10')](_0xfc74('0x18'),_0x372e9f,JSON[_0xfc74('0x12')](_0x5534e5));_0x59bd74(_0x5534e5);})[_0xfc74('0x17')](function(_0x191864){logger[_0xfc74('0x13')](_0xfc74('0x18'),_0x191864[_0xfc74('0x15')],_0x372e9f);_0x116d69(_0x4dee3b[_0xfc74('0x13')](0x1f4,_0x191864[_0xfc74('0x15')]));});});};
\ No newline at end of file
+var _0xeead=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','options','where','attributes','lodash','moment','bluebird','../../mysqldb'];(function(_0x48c2ac,_0x444cb0){var _0x2f3648=function(_0x44c071){while(--_0x44c071){_0x48c2ac['push'](_0x48c2ac['shift']());}};_0x2f3648(++_0x444cb0);}(_0xeead,0x125));var _0xdeea=function(_0x3fc035,_0x78f4cc){_0x3fc035=_0x3fc035-0x0;var _0x2d1dd8=_0xeead[_0x3fc035];return _0x2d1dd8;};'use strict';var _=require(_0xdeea('0x0'));var util=require('util');var moment=require(_0xdeea('0x1'));var BPromise=require(_0xdeea('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdeea('0x3'))['db'];var utils=require(_0xdeea('0x4'));var logger=require(_0xdeea('0x5'))(_0xdeea('0x6'));var config=require('../../config/environment');var jayson=require(_0xdeea('0x7'));var client=jayson[_0xdeea('0x8')][_0xdeea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x16b857,_0x55c5dd,_0x34a027){return new BPromise(function(_0x276f5f,_0x472507){return client['request'](_0x16b857,_0x34a027)[_0xdeea('0xa')](function(_0x319a45){logger[_0xdeea('0xb')](_0xdeea('0xc'),_0x55c5dd,_0xdeea('0xd'));logger[_0xdeea('0xe')](_0xdeea('0xf'),_0x55c5dd,_0xdeea('0xd'),JSON[_0xdeea('0x10')](_0x319a45));if(_0x319a45['error']){if(_0x319a45[_0xdeea('0x11')]['code']===0x1f4){logger['error'](_0xdeea('0xc'),_0x55c5dd,_0x319a45[_0xdeea('0x11')][_0xdeea('0x12')]);return _0x472507(_0x319a45[_0xdeea('0x11')]['message']);}logger[_0xdeea('0x11')](_0xdeea('0xc'),_0x55c5dd,_0x319a45['error'][_0xdeea('0x12')]);return _0x276f5f(_0x319a45['error'][_0xdeea('0x12')]);}else{logger[_0xdeea('0xb')](_0xdeea('0xc'),_0x55c5dd,_0xdeea('0xd'));_0x276f5f(_0x319a45[_0xdeea('0x13')][_0xdeea('0x12')]);}})[_0xdeea('0x14')](function(_0xf0a945){logger[_0xdeea('0x11')](_0xdeea('0xc'),_0x55c5dd,_0xf0a945);_0x472507(_0xf0a945);});});}exports[_0xdeea('0x15')]=function(_0x3bbd67){var _0x3be747=this;return new Promise(function(_0x403c5d,_0x3a3452){return db[_0xdeea('0x16')][_0xdeea('0x17')](_0x3bbd67['body'],{'raw':_0x3bbd67[_0xdeea('0x18')]?_0x3bbd67[_0xdeea('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3bbd67[_0xdeea('0x18')]?_0x3bbd67['options'][_0xdeea('0x19')]||null:null,'attributes':_0x3bbd67[_0xdeea('0x18')]?_0x3bbd67[_0xdeea('0x18')][_0xdeea('0x1a')]||null:null,'limit':_0x3bbd67['options']?_0x3bbd67[_0xdeea('0x18')]['limit']||null:null})[_0xdeea('0xa')](function(_0x52dbad){logger[_0xdeea('0xb')](_0xdeea('0x15'),_0x3bbd67);logger[_0xdeea('0xe')](_0xdeea('0x15'),_0x3bbd67,JSON[_0xdeea('0x10')](_0x52dbad));_0x403c5d(_0x52dbad);})[_0xdeea('0x14')](function(_0x3f1464){logger['error'](_0xdeea('0x15'),_0x3f1464[_0xdeea('0x12')],_0x3bbd67);_0x3a3452(_0x3be747[_0xdeea('0x11')](0x1f4,_0x3f1464[_0xdeea('0x12')]));});});};
\ No newline at end of file
index 3df9086..76ab9c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc4a=['./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','openchannelinteraction:addtags','addTags','put','openchannel','openchannelinteraction:update','delete','openchannelinteraction:destroy','destroy','removeTags','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xdc4a,0xb4));var _0xadc4=function(_0x35a050,_0x98e572){_0x35a050=_0x35a050-0x0;var _0x499507=_0xdc4a[_0x35a050];return _0x499507;};'use strict';var multer=require('multer');var util=require(_0xadc4('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xadc4('0x1')]();var fs_extra=require(_0xadc4('0x2'));var auth=require(_0xadc4('0x3'));var interaction=require(_0xadc4('0x4'));var config=require(_0xadc4('0x5'));var controller=require(_0xadc4('0x6'));router[_0xadc4('0x7')]('/',auth[_0xadc4('0x8')](),controller[_0xadc4('0x9')]);router[_0xadc4('0x7')](_0xadc4('0xa'),auth[_0xadc4('0x8')](),controller[_0xadc4('0xb')]);router[_0xadc4('0x7')](_0xadc4('0xc'),auth['isAuthenticated'](),controller[_0xadc4('0xd')]);router[_0xadc4('0x7')](_0xadc4('0xe'),auth[_0xadc4('0x8')](),controller[_0xadc4('0xf')]);router[_0xadc4('0x7')](_0xadc4('0x10'),auth[_0xadc4('0x8')](),controller['download']);router[_0xadc4('0x11')]('/',auth[_0xadc4('0x8')](),controller[_0xadc4('0x12')]);router[_0xadc4('0x11')](_0xadc4('0xe'),auth['isAuthenticated'](),controller[_0xadc4('0x13')]);router[_0xadc4('0x11')](_0xadc4('0x14'),auth['isAuthenticated'](),interaction[_0xadc4('0x15')]('openchannel',_0xadc4('0x16')),controller[_0xadc4('0x17')]);router[_0xadc4('0x18')](_0xadc4('0xc'),auth[_0xadc4('0x8')](),interaction[_0xadc4('0x15')](_0xadc4('0x19'),_0xadc4('0x1a')),controller['update']);router[_0xadc4('0x1b')]('/:id',auth[_0xadc4('0x8')](),interaction[_0xadc4('0x15')](_0xadc4('0x19'),_0xadc4('0x1c')),controller[_0xadc4('0x1d')]);router[_0xadc4('0x1b')](_0xadc4('0x14'),auth[_0xadc4('0x8')](),controller[_0xadc4('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x845d=['create','addMessage','/:id/tags','tracked','openchannel','put','openchannelinteraction:update','update','openchannelinteraction:destroy','destroy','delete','removeTags','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x845d,0xc7));var _0xd845=function(_0x36d80d,_0x3183be){_0x36d80d=_0x36d80d-0x0;var _0x4b96ed=_0x845d[_0x36d80d];return _0x4b96ed;};'use strict';var multer=require(_0xd845('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd845('0x1'));var express=require(_0xd845('0x2'));var router=express['Router']();var fs_extra=require(_0xd845('0x3'));var auth=require(_0xd845('0x4'));var interaction=require(_0xd845('0x5'));var config=require('../../config/environment');var controller=require('./openchannelInteraction.controller');router[_0xd845('0x6')]('/',auth[_0xd845('0x7')](),controller[_0xd845('0x8')]);router[_0xd845('0x6')](_0xd845('0x9'),auth['isAuthenticated'](),controller[_0xd845('0xa')]);router[_0xd845('0x6')](_0xd845('0xb'),auth[_0xd845('0x7')](),controller[_0xd845('0xc')]);router[_0xd845('0x6')](_0xd845('0xd'),auth['isAuthenticated'](),controller[_0xd845('0xe')]);router['get'](_0xd845('0xf'),auth[_0xd845('0x7')](),controller[_0xd845('0x10')]);router[_0xd845('0x11')]('/',auth[_0xd845('0x7')](),controller[_0xd845('0x12')]);router['post'](_0xd845('0xd'),auth[_0xd845('0x7')](),controller[_0xd845('0x13')]);router['post'](_0xd845('0x14'),auth[_0xd845('0x7')](),interaction[_0xd845('0x15')](_0xd845('0x16'),'openchannelinteraction:addtags'),controller['addTags']);router[_0xd845('0x17')]('/:id',auth[_0xd845('0x7')](),interaction[_0xd845('0x15')](_0xd845('0x16'),_0xd845('0x18')),controller[_0xd845('0x19')]);router['delete'](_0xd845('0xb'),auth[_0xd845('0x7')](),interaction[_0xd845('0x15')](_0xd845('0x16'),_0xd845('0x1a')),controller[_0xd845('0x1b')]);router[_0xd845('0x1c')](_0xd845('0x14'),auth[_0xd845('0x7')](),controller[_0xd845('0x1d')]);module[_0xd845('0x1e')]=router;
\ No newline at end of file
index 43068be..0949dcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4e9=['STRING','out','BOOLEAN','INTEGER','sequelize','exports'];(function(_0x4b90b3,_0x164fb2){var _0x45472e=function(_0x4580d3){while(--_0x4580d3){_0x4b90b3['push'](_0x4b90b3['shift']());}};_0x45472e(++_0x164fb2);}(_0xa4e9,0x1c6));var _0x9a4e=function(_0x227378,_0x2073f2){_0x227378=_0x227378-0x0;var _0x502efe=_0xa4e9[_0x227378];return _0x502efe;};'use strict';var Sequelize=require(_0x9a4e('0x0'));module[_0x9a4e('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x9a4e('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x9a4e('0x2')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x9a4e('0x2')]},'externalUrl':{'type':Sequelize[_0x9a4e('0x2')]},'lastMsgAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x9a4e('0x3')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x9a4e('0x4')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x9a4e('0x5')]}};
\ No newline at end of file
+var _0xcbde=['BOOLEAN','DATE','STRING','ENUM','out','INTEGER','sequelize'];(function(_0x355a4f,_0x34994c){var _0x2d235a=function(_0x2d2b75){while(--_0x2d2b75){_0x355a4f['push'](_0x355a4f['shift']());}};_0x2d235a(++_0x34994c);}(_0xcbde,0x141));var _0xecbd=function(_0x594992,_0x427a78){_0x594992=_0x594992-0x0;var _0x246b93=_0xcbde[_0x594992];return _0x246b93;};'use strict';var Sequelize=require(_0xecbd('0x0'));module['exports']={'closed':{'type':Sequelize[_0xecbd('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xecbd('0x2')]},'disposition':{'type':Sequelize[_0xecbd('0x3')]},'secondDisposition':{'type':Sequelize[_0xecbd('0x3')]},'thirdDisposition':{'type':Sequelize[_0xecbd('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xecbd('0x3')]},'externalUrl':{'type':Sequelize[_0xecbd('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xecbd('0x4')]('in',_0xecbd('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xecbd('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0xecbd('0x1')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xecbd('0x6')]}};
\ No newline at end of file
index cf87eed..7b4e11a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc42=['ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','end','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','getOptions','findAll','query','catch','show','from','params','model','keys','filters','attributes','intersection','fields','include','merge','options','find','create','body','update','describe','addMessage','ids','omit','getMessages','findOne','OpenchannelMessage','length','hasOwnProperty','nolimit','order','sort','where','pick','OpenchannelInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','addTags','setTags','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','join','root','server','files','attachments','transcript-%d-%s.zip','fullname','push','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','OpenchannelAccount','User','Owner','get','mkdirSync','Openchannel','toString','closed','disposition','threadId','Public','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','secret','read','value','renderFile','views','downloadInteraction.ejs','.pdf','Unable\x20to\x20delete\x20zip\x20file','rimraf','zip-dir','util','ejs','lodash'];(function(_0x25bff4,_0x5dab4a){var _0x4c816f=function(_0x18ef69){while(--_0x18ef69){_0x25bff4['push'](_0x25bff4['shift']());}};_0x4c816f(++_0x5dab4a);}(_0xdc42,0x184));var _0x2dc4=function(_0x1daa4f,_0x16a1bb){_0x1daa4f=_0x1daa4f-0x0;var _0x38460f=_0xdc42[_0x1daa4f];return _0x38460f;};'use strict';var rimraf=require(_0x2dc4('0x0'));var zipdir=require(_0x2dc4('0x1'));var moment=require('moment');var util=require(_0x2dc4('0x2'));var path=require('path');var ejs=require(_0x2dc4('0x3'));var fs=require('fs');var _=require(_0x2dc4('0x4'));var Redis=require(_0x2dc4('0x5'));var interaction=require(_0x2dc4('0x6'));var qs=require(_0x2dc4('0x7'));var pdf=require(_0x2dc4('0x8'));var logger=require('../../config/logger')('api');var config=require(_0x2dc4('0x9'));var db=require(_0x2dc4('0xa'))['db'];config[_0x2dc4('0xb')]=_[_0x2dc4('0xc')](config[_0x2dc4('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x2dc4('0xd'))(new Redis(config[_0x2dc4('0xb')]));require(_0x2dc4('0xe'))[_0x2dc4('0xf')](socket);function respondWithStatusCode(_0x257f32,_0x24ddde){_0x24ddde=_0x24ddde||0xcc;return function(_0x4bc702){if(_0x4bc702){return _0x257f32[_0x2dc4('0x10')](_0x24ddde);}return _0x257f32[_0x2dc4('0x11')](_0x24ddde)['end']();};}function respondWithResult(_0x366dfe,_0x59a943){_0x59a943=_0x59a943||0xc8;return function(_0x1e9442){if(_0x1e9442){return _0x366dfe[_0x2dc4('0x11')](_0x59a943)[_0x2dc4('0x12')](_0x1e9442);}};}function respondWithFilteredResult(_0x388e68,_0x115d00){return function(_0x49c2f6){if(_0x49c2f6){var _0x3aeb79=typeof _0x115d00[_0x2dc4('0x13')]===_0x2dc4('0x14')&&typeof _0x115d00[_0x2dc4('0x15')]==='undefined';var _0x1ec986=_0x49c2f6[_0x2dc4('0x16')];var _0x2b00a8=_0x3aeb79?0x0:_0x115d00[_0x2dc4('0x13')];var _0x446fb7=_0x3aeb79?_0x49c2f6['count']:_0x115d00[_0x2dc4('0x13')]+_0x115d00[_0x2dc4('0x15')];var _0x1af6c3;if(_0x446fb7>=_0x1ec986){_0x446fb7=_0x1ec986;_0x1af6c3=0xc8;}else{_0x1af6c3=0xce;}_0x388e68[_0x2dc4('0x11')](_0x1af6c3);return _0x388e68[_0x2dc4('0x17')](_0x2dc4('0x18'),_0x2b00a8+'-'+_0x446fb7+'/'+_0x1ec986)[_0x2dc4('0x12')](_0x49c2f6);}return null;};}function saveUpdates(_0x14010b){return function(_0x36d969){if(_0x36d969){return _0x36d969['update'](_0x14010b)[_0x2dc4('0x19')](function(_0x3f2432){return _0x3f2432;});}return null;};}function removeEntity(_0xcc4c4){return function(_0x372dc1){if(_0x372dc1){return _0x372dc1[_0x2dc4('0x1a')]()[_0x2dc4('0x19')](function(){_0xcc4c4[_0x2dc4('0x11')](0xcc)[_0x2dc4('0x1b')]();});}};}function handleEntityNotFound(_0x4ee198){return function(_0x3ebcdb){if(!_0x3ebcdb){_0x4ee198[_0x2dc4('0x10')](0x194);}return _0x3ebcdb;};}function handleError(_0x5313d0,_0x23ae40){_0x23ae40=_0x23ae40||0x1f4;return function(_0x3d646b){logger[_0x2dc4('0x1c')](_0x3d646b[_0x2dc4('0x1d')]);if(_0x3d646b[_0x2dc4('0x1e')]){delete _0x3d646b[_0x2dc4('0x1e')];}_0x5313d0[_0x2dc4('0x11')](_0x23ae40)[_0x2dc4('0x1f')](_0x3d646b);};}exports[_0x2dc4('0x20')]=function(_0x5e01e2,_0xb65c5d){var _0x229b46={};var _0x376fa4=_[_0x2dc4('0x21')](db[_0x2dc4('0x22')][_0x2dc4('0x23')],function(_0xea8ea8){return{'name':_0xea8ea8[_0x2dc4('0x24')],'type':_0xea8ea8[_0x2dc4('0x25')]['key']};});_0x229b46=qs[_0x2dc4('0x26')](_0x376fa4,_0x5e01e2);return interaction[_0x2dc4('0x27')]('openchannel',_0x5e01e2[_0x2dc4('0x28')],_0x5e01e2['user'],_0x229b46,_0x376fa4)[_0x2dc4('0x19')](respondWithFilteredResult(_0xb65c5d,_0x229b46))[_0x2dc4('0x29')](handleError(_0xb65c5d,null));};exports[_0x2dc4('0x2a')]=function(_0x57529c,_0x5a351a){var _0x263416={};if(_0x57529c[_0x2dc4('0x28')]['type']&&_0x57529c[_0x2dc4('0x28')][_0x2dc4('0x25')]===_0x2dc4('0x2b')){_0x263416[_0x2dc4('0x2b')]=_0x57529c[_0x2dc4('0x2c')]['id'];}else{_0x263416['id']=_0x57529c[_0x2dc4('0x2c')]['id'];}var _0x5a44ef={'raw':![],'where':_0x263416},_0x45e808={};_0x45e808[_0x2dc4('0x2d')]=_[_0x2dc4('0x2e')](db[_0x2dc4('0x22')]['rawAttributes']);_0x45e808[_0x2dc4('0x28')]=_[_0x2dc4('0x2e')](_0x57529c[_0x2dc4('0x28')]);_0x45e808[_0x2dc4('0x2f')]=_['intersection'](_0x45e808[_0x2dc4('0x2d')],_0x45e808[_0x2dc4('0x28')]);_0x5a44ef[_0x2dc4('0x30')]=_[_0x2dc4('0x31')](_0x45e808[_0x2dc4('0x2d')],qs[_0x2dc4('0x32')](_0x57529c[_0x2dc4('0x28')][_0x2dc4('0x32')]));_0x5a44ef['attributes']=_0x5a44ef[_0x2dc4('0x30')]['length']?_0x5a44ef[_0x2dc4('0x30')]:_0x45e808['model'];if(_0x57529c['query']['includeAll']){_0x5a44ef[_0x2dc4('0x33')]=[{'all':!![]}];}_0x5a44ef=_[_0x2dc4('0x34')]({},_0x5a44ef,_0x57529c[_0x2dc4('0x35')]);return db['OpenchannelInteraction'][_0x2dc4('0x36')](_0x5a44ef)[_0x2dc4('0x19')](handleEntityNotFound(_0x5a351a,null))[_0x2dc4('0x19')](respondWithResult(_0x5a351a,null))[_0x2dc4('0x29')](handleError(_0x5a351a,null));};exports[_0x2dc4('0x37')]=function(_0x2c04bf,_0x4654a3){return db[_0x2dc4('0x22')][_0x2dc4('0x37')](_0x2c04bf[_0x2dc4('0x38')],{})[_0x2dc4('0x19')](respondWithResult(_0x4654a3,0xc9))[_0x2dc4('0x29')](handleError(_0x4654a3,null));};exports[_0x2dc4('0x39')]=function(_0x4e6dc9,_0xee1e8c){if(_0x4e6dc9['body']['id']){delete _0x4e6dc9[_0x2dc4('0x38')]['id'];}return db[_0x2dc4('0x22')][_0x2dc4('0x36')]({'where':{'id':_0x4e6dc9['params']['id']}})[_0x2dc4('0x19')](handleEntityNotFound(_0xee1e8c,null))[_0x2dc4('0x19')](saveUpdates(_0x4e6dc9['body'],null))[_0x2dc4('0x19')](respondWithResult(_0xee1e8c,null))[_0x2dc4('0x29')](handleError(_0xee1e8c,null));};exports[_0x2dc4('0x1a')]=function(_0x11bd66,_0x2f7d1d){return db[_0x2dc4('0x22')][_0x2dc4('0x36')]({'where':{'id':_0x11bd66['params']['id']}})[_0x2dc4('0x19')](handleEntityNotFound(_0x2f7d1d,null))['then'](removeEntity(_0x2f7d1d,null))[_0x2dc4('0x29')](handleError(_0x2f7d1d,null));};exports['describe']=function(_0x55bbd1,_0x4cbb92){return db[_0x2dc4('0x22')][_0x2dc4('0x3a')]()['then'](respondWithResult(_0x4cbb92,null))[_0x2dc4('0x29')](handleError(_0x4cbb92,null));};exports[_0x2dc4('0x3b')]=function(_0x3ca44a,_0x441071){return db['OpenchannelMessage']['find']({'where':{'id':_0x3ca44a[_0x2dc4('0x2c')]['id']}})[_0x2dc4('0x19')](handleEntityNotFound(_0x441071,null))[_0x2dc4('0x19')](function(_0x10f774){if(_0x10f774){return _0x10f774['addMessage'](_0x3ca44a[_0x2dc4('0x38')][_0x2dc4('0x3c')],_[_0x2dc4('0x3d')](_0x3ca44a[_0x2dc4('0x38')],[_0x2dc4('0x3c'),'id'])||{});}})['then'](respondWithResult(_0x441071,null))[_0x2dc4('0x29')](handleError(_0x441071,null));};exports[_0x2dc4('0x3e')]=function(_0x5d4b2b,_0x38375a){var _0x2dd86f={'raw':![],'where':{}};var _0x268f77={};var _0x54fa18={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x2dc4('0x3f')]({'where':{'id':_0x5d4b2b[_0x2dc4('0x2c')]['id']}})[_0x2dc4('0x19')](handleEntityNotFound(_0x38375a,null))[_0x2dc4('0x19')](function(_0x362e89){if(_0x362e89){_0x268f77[_0x2dc4('0x2d')]=_[_0x2dc4('0x2e')](db[_0x2dc4('0x40')][_0x2dc4('0x23')]);_0x268f77[_0x2dc4('0x28')]=_[_0x2dc4('0x2e')](_0x5d4b2b[_0x2dc4('0x28')]);_0x268f77[_0x2dc4('0x2f')]=_[_0x2dc4('0x31')](_0x268f77[_0x2dc4('0x2d')],_0x268f77[_0x2dc4('0x28')]);_0x2dd86f[_0x2dc4('0x30')]=_[_0x2dc4('0x31')](_0x268f77['model'],qs[_0x2dc4('0x32')](_0x5d4b2b[_0x2dc4('0x28')]['fields']));_0x2dd86f[_0x2dc4('0x30')]=_0x2dd86f['attributes'][_0x2dc4('0x41')]?_0x2dd86f[_0x2dc4('0x30')]:_0x268f77['model'];if(!_0x5d4b2b[_0x2dc4('0x28')][_0x2dc4('0x42')](_0x2dc4('0x43'))){_0x2dd86f[_0x2dc4('0x15')]=qs[_0x2dc4('0x15')](_0x5d4b2b[_0x2dc4('0x28')][_0x2dc4('0x15')]);_0x2dd86f[_0x2dc4('0x13')]=qs[_0x2dc4('0x13')](_0x5d4b2b[_0x2dc4('0x28')][_0x2dc4('0x13')]);}_0x2dd86f[_0x2dc4('0x44')]=qs[_0x2dc4('0x45')](_0x5d4b2b[_0x2dc4('0x28')][_0x2dc4('0x45')]);_0x2dd86f[_0x2dc4('0x46')]=qs[_0x2dc4('0x2f')](_[_0x2dc4('0x47')](_0x5d4b2b[_0x2dc4('0x28')],_0x268f77[_0x2dc4('0x2f')]));_0x2dd86f[_0x2dc4('0x46')][_0x2dc4('0x48')]=_0x362e89['id'];if(_0x5d4b2b['query'][_0x2dc4('0x49')]){_0x2dd86f['where']=_[_0x2dc4('0x34')](_0x2dd86f[_0x2dc4('0x46')],{'$or':_[_0x2dc4('0x21')](_0x2dd86f[_0x2dc4('0x30')],function(_0x5bf0a2){var _0x34a90c={};_0x34a90c[_0x5bf0a2]={'$like':'%'+_0x5d4b2b[_0x2dc4('0x28')]['filter']+'%'};return _0x34a90c;})});}if(_0x5d4b2b['query']['$gte']){var _0x29ef51=_0x5d4b2b[_0x2dc4('0x28')][_0x2dc4('0x4a')][_0x2dc4('0x4b')](',');var _0x3bb6de={};_0x3bb6de[_0x29ef51[0x0]]={'$gte':moment(_0x29ef51[0x1])[_0x2dc4('0x4c')](_0x2dc4('0x4d'))};_0x2dd86f[_0x2dc4('0x46')]=_['merge'](_0x2dd86f['where'],_0x3bb6de);}_0x2dd86f=_[_0x2dc4('0x34')]({},_0x2dd86f,_0x5d4b2b['options']);return db[_0x2dc4('0x40')][_0x2dc4('0x16')]({'where':_0x2dd86f[_0x2dc4('0x46')]})[_0x2dc4('0x19')](function(_0x540b99){_0x54fa18[_0x2dc4('0x16')]=_0x540b99;if(_0x5d4b2b[_0x2dc4('0x28')][_0x2dc4('0x4e')]){_0x2dd86f[_0x2dc4('0x33')]=[{'all':!![]}];}return db[_0x2dc4('0x40')]['findAll'](_0x2dd86f);})['then'](function(_0xf6dd7d){_0x54fa18[_0x2dc4('0x4f')]=_0xf6dd7d;return _0x54fa18;});}})['then'](respondWithFilteredResult(_0x38375a,_0x2dd86f))[_0x2dc4('0x29')](handleError(_0x38375a,null));};exports[_0x2dc4('0x50')]=function(_0x384218,_0x48ae0f){return db['OpenchannelInteraction'][_0x2dc4('0x36')]({'where':{'id':_0x384218[_0x2dc4('0x2c')]['id']}})[_0x2dc4('0x19')](handleEntityNotFound(_0x48ae0f,null))[_0x2dc4('0x19')](function(_0x3c9495){if(_0x3c9495){return _0x3c9495[_0x2dc4('0x51')](_0x384218[_0x2dc4('0x38')]['ids'],_[_0x2dc4('0x3d')](_0x384218[_0x2dc4('0x38')],['ids','id'])||{})[_0x2dc4('0x52')](function(){return db[_0x2dc4('0x53')][_0x2dc4('0x27')]({'attributes':['id','name',_0x2dc4('0x54')],'where':{'id':_0x384218[_0x2dc4('0x38')][_0x2dc4('0x3c')]}});})[_0x2dc4('0x19')](function(_0x5783aa){socket[_0x2dc4('0x55')](_0x2dc4('0x56'),{'id':Number(_0x384218['params']['id']),'tags':_0x5783aa||[]});return{'id':Number(_0x384218['params']['id']),'tags':_0x5783aa||[]};});}})[_0x2dc4('0x19')](respondWithResult(_0x48ae0f,null))[_0x2dc4('0x29')](handleError(_0x48ae0f,null));};exports[_0x2dc4('0x57')]=function(_0x546932,_0x13c0b3){return db['OpenchannelInteraction'][_0x2dc4('0x36')]({'where':{'id':_0x546932[_0x2dc4('0x2c')]['id']}})[_0x2dc4('0x19')](handleEntityNotFound(_0x13c0b3,null))[_0x2dc4('0x19')](function(_0x6b0155){if(_0x6b0155){return _0x6b0155[_0x2dc4('0x57')](_0x546932['query'][_0x2dc4('0x3c')]);}})['then'](respondWithStatusCode(_0x13c0b3,null))[_0x2dc4('0x29')](handleError(_0x13c0b3,null));};exports[_0x2dc4('0x58')]=function(_0x7bda4d,_0x3015bd){var _0x3aff05=moment()['unix']()['toString']();var _0x20d1a9=path[_0x2dc4('0x59')](config[_0x2dc4('0x5a')],_0x2dc4('0x5b'),_0x2dc4('0x5c'),'tmp');var _0x5ad3a7=path[_0x2dc4('0x59')](config[_0x2dc4('0x5a')],_0x2dc4('0x5b'),_0x2dc4('0x5c'),_0x2dc4('0x5d'));var _0xb6942e=path[_0x2dc4('0x59')](_0x20d1a9,_0x3aff05);var _0x1aef6f=util[_0x2dc4('0x4c')](_0x2dc4('0x5e'),_0x7bda4d[_0x2dc4('0x2c')]['id'],_0x3aff05);var _0x505bb9=path[_0x2dc4('0x59')](_0x20d1a9,_0x1aef6f);var _0x5f0277=[];_0x5f0277['push']({'model':db['User'],'as':'User','attributes':['id',_0x2dc4('0x5f')],'raw':!![]});_0x5f0277[_0x2dc4('0x60')]({'model':db[_0x2dc4('0x61')],'as':_0x2dc4('0x62'),'attributes':['id',_0x2dc4('0x63'),_0x2dc4('0x64')],'raw':!![]});if(_0x7bda4d[_0x2dc4('0x28')][_0x2dc4('0x5d')]){_0x5f0277[_0x2dc4('0x60')]({'model':db[_0x2dc4('0x65')],'as':_0x2dc4('0x65'),'raw':!![]});}var _0x346bc0=[{'model':db['OpenchannelMessage'],'as':_0x2dc4('0x66'),'attributes':['id',_0x2dc4('0x38'),_0x2dc4('0x67'),_0x2dc4('0x68'),'secret','read'],'include':_0x5f0277}];_0x346bc0[_0x2dc4('0x60')]({'model':db[_0x2dc4('0x69')],'as':'Account','attributes':['id',_0x2dc4('0x1e')]});_0x346bc0[_0x2dc4('0x60')]({'model':db[_0x2dc4('0x6a')],'as':_0x2dc4('0x6b'),'attributes':['id',_0x2dc4('0x5f')]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x7bda4d[_0x2dc4('0x2c')]['id']},'include':_0x346bc0})['then'](handleEntityNotFound(_0x3015bd,null))[_0x2dc4('0x19')](function(_0x19d946){if(_0x19d946){var _0x457e00=_0x19d946[_0x2dc4('0x6c')]({'plain':!![]});fs[_0x2dc4('0x6d')](_0xb6942e);var _0x3c92a1={'channel':_0x2dc4('0x6e'),'account':_0x457e00['Account'][_0x2dc4('0x1e')],'agent':_0x457e00[_0x2dc4('0x6b')]?_0x457e00['Owner'][_0x2dc4('0x5f')]:'N.A.','createdAt':moment(_0x457e00[_0x2dc4('0x67')])[_0x2dc4('0x4c')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2dc4('0x6f')](),'closedAt':_0x457e00[_0x2dc4('0x70')]?moment(_0x457e00['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x457e00[_0x2dc4('0x71')],'visibility':_0x457e00[_0x2dc4('0x72')]?_0x2dc4('0x73'):'Private','messages':_(_0x457e00[_0x2dc4('0x66')])['filter']({'secret':![]})[_0x2dc4('0x21')](function(_0x2b8d0a){if(_0x2b8d0a[_0x2dc4('0x65')]){var _0x1c7067=path['join'](_0x5ad3a7,_0x2b8d0a[_0x2dc4('0x65')][_0x2dc4('0x74')]);if(fs[_0x2dc4('0x75')](_0x1c7067)){fs[_0x2dc4('0x76')](_0x1c7067)[_0x2dc4('0x77')](fs[_0x2dc4('0x78')](path[_0x2dc4('0x59')](_0xb6942e,_0x2b8d0a[_0x2dc4('0x65')][_0x2dc4('0x74')])));}}return{'date':moment(_0x2b8d0a['createdAt'])[_0x2dc4('0x4c')](_0x2dc4('0x4d'))[_0x2dc4('0x6f')](),'sender':_0x2b8d0a[_0x2dc4('0x68')]===_0x2dc4('0x79')?_0x2b8d0a[_0x2dc4('0x6a')]?_0x2b8d0a[_0x2dc4('0x6a')][_0x2dc4('0x5f')]:_0x2dc4('0x7a'):_0x2b8d0a[_0x2dc4('0x62')][_0x2dc4('0x63')]+(_0x2b8d0a[_0x2dc4('0x62')][_0x2dc4('0x64')]?'\x20'+_0x2b8d0a[_0x2dc4('0x62')]['lastName']:''),'body':_0x2b8d0a[_0x2dc4('0x65')]?_0x2b8d0a[_0x2dc4('0x65')][_0x2dc4('0x74')]:_0x2b8d0a[_0x2dc4('0x38')],'direction':_0x2b8d0a[_0x2dc4('0x68')]===_0x2dc4('0x79')?'A':'C','secret':_0x2b8d0a[_0x2dc4('0x7b')],'read':_0x2b8d0a[_0x2dc4('0x7c')],'attachment':_0x2b8d0a[_0x2dc4('0x65')]};})[_0x2dc4('0x7d')]()};return ejs[_0x2dc4('0x7e')](path[_0x2dc4('0x59')](config[_0x2dc4('0x5a')],_0x2dc4('0x5b'),_0x2dc4('0x7f'),_0x2dc4('0x80')),{'interaction':_0x3c92a1})[_0x2dc4('0x19')](function(_0x23c4f5){var _0x25e08b=path['join'](_0xb6942e,'transcript-'+_0x457e00['id']+'-'+_0x3aff05+_0x2dc4('0x81'));var _0x4fb15b={'path':_0x25e08b,'channel':_0x2dc4('0x6e'),'interactionId':_0x457e00['id']};return pdf['createPdfFromHTML'](_0x23c4f5,_0x4fb15b);})[_0x2dc4('0x19')](function(){return new Promise(function(_0x5f5c17,_0x44043a){zipdir(_0xb6942e,{'saveTo':_0x505bb9},function(_0x1fa43f,_0x24c8e7){if(_0x1fa43f)return _0x44043a(_0x1fa43f);return _0x5f5c17(_0x24c8e7);});})[_0x2dc4('0x19')](function(){return new Promise(function(_0x524e92,_0x3f2d51){rimraf(_0xb6942e,function(_0x2989b5){if(_0x2989b5)_0x3f2d51(_0x2989b5);return _0x524e92();});});})[_0x2dc4('0x19')](function(){return _0x3015bd[_0x2dc4('0x58')](_0x505bb9,_0x1aef6f,function(_0x454085){if(_0x454085){logger[_0x2dc4('0x1c')](_0x2dc4('0x82'),_0x454085);}else{fs['unlinkSync'](_0x505bb9);}});});});}else{return _0x3015bd[_0x2dc4('0x10')](0xc8);}})['catch'](handleError(_0x3015bd,null));};
\ No newline at end of file
+var _0x0162=['set','Content-Range','json','update','destroy','then','sendStatus','stack','name','send','OpenchannelInteraction','rawAttributes','type','key','getOptions','findAll','openchannel','catch','show','query','from','params','model','keys','intersection','attributes','fields','length','include','merge','options','find','create','body','describe','addMessage','ids','omit','findOne','OpenchannelMessage','filters','hasOwnProperty','nolimit','order','sort','where','pick','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','push','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','read','Owner','fullname','get','Openchannel','Account','N.A.','createdAt','closedAt','disposition','threadId','Private','map','basename','existsSync','createReadStream','createWriteStream','out','System','secret','renderFile','downloadInteraction.ejs','transcript-','.pdf','error','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','rimraf','zip-dir','moment','util','ejs','lodash','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','status','end','undefined','limit','count','offset'];(function(_0x4584e2,_0x4c9dfe){var _0x526b80=function(_0x3c3424){while(--_0x3c3424){_0x4584e2['push'](_0x4584e2['shift']());}};_0x526b80(++_0x4c9dfe);}(_0x0162,0x68));var _0x2016=function(_0x21e8d5,_0x4dc503){_0x21e8d5=_0x21e8d5-0x0;var _0x48c160=_0x0162[_0x21e8d5];return _0x48c160;};'use strict';var rimraf=require(_0x2016('0x0'));var zipdir=require(_0x2016('0x1'));var moment=require(_0x2016('0x2'));var util=require(_0x2016('0x3'));var path=require('path');var ejs=require(_0x2016('0x4'));var fs=require('fs');var _=require(_0x2016('0x5'));var Redis=require(_0x2016('0x6'));var interaction=require('../../components/interaction/service');var qs=require(_0x2016('0x7'));var pdf=require(_0x2016('0x8'));var logger=require(_0x2016('0x9'))(_0x2016('0xa'));var config=require(_0x2016('0xb'));var db=require('../../mysqldb')['db'];config[_0x2016('0xc')]=_[_0x2016('0xd')](config[_0x2016('0xc')],{'host':_0x2016('0xe'),'port':0x18eb});var socket=require(_0x2016('0xf'))(new Redis(config[_0x2016('0xc')]));require(_0x2016('0x10'))['register'](socket);function respondWithStatusCode(_0x5331eb,_0x40006b){_0x40006b=_0x40006b||0xcc;return function(_0x3f7303){if(_0x3f7303){return _0x5331eb['sendStatus'](_0x40006b);}return _0x5331eb[_0x2016('0x11')](_0x40006b)[_0x2016('0x12')]();};}function respondWithResult(_0x16a644,_0x191151){_0x191151=_0x191151||0xc8;return function(_0xa30fce){if(_0xa30fce){return _0x16a644[_0x2016('0x11')](_0x191151)['json'](_0xa30fce);}};}function respondWithFilteredResult(_0x2018d0,_0x4c431b){return function(_0x28e34e){if(_0x28e34e){var _0x1b61ce=typeof _0x4c431b['offset']===_0x2016('0x13')&&typeof _0x4c431b[_0x2016('0x14')]===_0x2016('0x13');var _0x211cbb=_0x28e34e[_0x2016('0x15')];var _0x405346=_0x1b61ce?0x0:_0x4c431b[_0x2016('0x16')];var _0x438e19=_0x1b61ce?_0x28e34e[_0x2016('0x15')]:_0x4c431b['offset']+_0x4c431b['limit'];var _0x55d640;if(_0x438e19>=_0x211cbb){_0x438e19=_0x211cbb;_0x55d640=0xc8;}else{_0x55d640=0xce;}_0x2018d0[_0x2016('0x11')](_0x55d640);return _0x2018d0[_0x2016('0x17')](_0x2016('0x18'),_0x405346+'-'+_0x438e19+'/'+_0x211cbb)[_0x2016('0x19')](_0x28e34e);}return null;};}function saveUpdates(_0x4133b2){return function(_0x1b7bdf){if(_0x1b7bdf){return _0x1b7bdf[_0x2016('0x1a')](_0x4133b2)['then'](function(_0x1388a9){return _0x1388a9;});}return null;};}function removeEntity(_0x13f6a6){return function(_0x35cb2c){if(_0x35cb2c){return _0x35cb2c[_0x2016('0x1b')]()[_0x2016('0x1c')](function(){_0x13f6a6[_0x2016('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2de6ff){return function(_0x1217ec){if(!_0x1217ec){_0x2de6ff[_0x2016('0x1d')](0x194);}return _0x1217ec;};}function handleError(_0xe44d9f,_0x8d8b44){_0x8d8b44=_0x8d8b44||0x1f4;return function(_0x5ec98f){logger['error'](_0x5ec98f[_0x2016('0x1e')]);if(_0x5ec98f[_0x2016('0x1f')]){delete _0x5ec98f['name'];}_0xe44d9f[_0x2016('0x11')](_0x8d8b44)[_0x2016('0x20')](_0x5ec98f);};}exports['index']=function(_0x3da2ba,_0x2a0e30){var _0x412daf={};var _0x2b7b63=_['map'](db[_0x2016('0x21')][_0x2016('0x22')],function(_0x24f79e){return{'name':_0x24f79e['fieldName'],'type':_0x24f79e[_0x2016('0x23')][_0x2016('0x24')]};});_0x412daf=qs[_0x2016('0x25')](_0x2b7b63,_0x3da2ba);return interaction[_0x2016('0x26')](_0x2016('0x27'),_0x3da2ba['query'],_0x3da2ba['user'],_0x412daf,_0x2b7b63)[_0x2016('0x1c')](respondWithFilteredResult(_0x2a0e30,_0x412daf))[_0x2016('0x28')](handleError(_0x2a0e30,null));};exports[_0x2016('0x29')]=function(_0x76acc0,_0x569db8){var _0x2b3441={};if(_0x76acc0[_0x2016('0x2a')][_0x2016('0x23')]&&_0x76acc0['query'][_0x2016('0x23')]===_0x2016('0x2b')){_0x2b3441[_0x2016('0x2b')]=_0x76acc0[_0x2016('0x2c')]['id'];}else{_0x2b3441['id']=_0x76acc0[_0x2016('0x2c')]['id'];}var _0x3d6ea9={'raw':![],'where':_0x2b3441},_0xf63098={};_0xf63098[_0x2016('0x2d')]=_[_0x2016('0x2e')](db[_0x2016('0x21')][_0x2016('0x22')]);_0xf63098[_0x2016('0x2a')]=_[_0x2016('0x2e')](_0x76acc0[_0x2016('0x2a')]);_0xf63098['filters']=_[_0x2016('0x2f')](_0xf63098[_0x2016('0x2d')],_0xf63098[_0x2016('0x2a')]);_0x3d6ea9[_0x2016('0x30')]=_[_0x2016('0x2f')](_0xf63098['model'],qs[_0x2016('0x31')](_0x76acc0[_0x2016('0x2a')]['fields']));_0x3d6ea9[_0x2016('0x30')]=_0x3d6ea9[_0x2016('0x30')][_0x2016('0x32')]?_0x3d6ea9[_0x2016('0x30')]:_0xf63098['model'];if(_0x76acc0[_0x2016('0x2a')]['includeAll']){_0x3d6ea9[_0x2016('0x33')]=[{'all':!![]}];}_0x3d6ea9=_[_0x2016('0x34')]({},_0x3d6ea9,_0x76acc0[_0x2016('0x35')]);return db[_0x2016('0x21')][_0x2016('0x36')](_0x3d6ea9)[_0x2016('0x1c')](handleEntityNotFound(_0x569db8,null))[_0x2016('0x1c')](respondWithResult(_0x569db8,null))['catch'](handleError(_0x569db8,null));};exports[_0x2016('0x37')]=function(_0xa564c5,_0x4902cc){return db['OpenchannelInteraction'][_0x2016('0x37')](_0xa564c5[_0x2016('0x38')],{})[_0x2016('0x1c')](respondWithResult(_0x4902cc,0xc9))[_0x2016('0x28')](handleError(_0x4902cc,null));};exports['update']=function(_0x389174,_0x33b513){if(_0x389174[_0x2016('0x38')]['id']){delete _0x389174[_0x2016('0x38')]['id'];}return db[_0x2016('0x21')][_0x2016('0x36')]({'where':{'id':_0x389174['params']['id']}})['then'](handleEntityNotFound(_0x33b513,null))[_0x2016('0x1c')](saveUpdates(_0x389174[_0x2016('0x38')],null))['then'](respondWithResult(_0x33b513,null))[_0x2016('0x28')](handleError(_0x33b513,null));};exports['destroy']=function(_0x2d3474,_0x2d1ed3){return db['OpenchannelInteraction'][_0x2016('0x36')]({'where':{'id':_0x2d3474[_0x2016('0x2c')]['id']}})[_0x2016('0x1c')](handleEntityNotFound(_0x2d1ed3,null))[_0x2016('0x1c')](removeEntity(_0x2d1ed3,null))[_0x2016('0x28')](handleError(_0x2d1ed3,null));};exports[_0x2016('0x39')]=function(_0x3c01fe,_0x91fc9){return db['OpenchannelInteraction'][_0x2016('0x39')]()[_0x2016('0x1c')](respondWithResult(_0x91fc9,null))[_0x2016('0x28')](handleError(_0x91fc9,null));};exports[_0x2016('0x3a')]=function(_0x32d891,_0x34cd7a){return db['OpenchannelMessage'][_0x2016('0x36')]({'where':{'id':_0x32d891[_0x2016('0x2c')]['id']}})['then'](handleEntityNotFound(_0x34cd7a,null))[_0x2016('0x1c')](function(_0x12c2b6){if(_0x12c2b6){return _0x12c2b6[_0x2016('0x3a')](_0x32d891[_0x2016('0x38')][_0x2016('0x3b')],_[_0x2016('0x3c')](_0x32d891[_0x2016('0x38')],['ids','id'])||{});}})[_0x2016('0x1c')](respondWithResult(_0x34cd7a,null))['catch'](handleError(_0x34cd7a,null));};exports['getMessages']=function(_0x528b61,_0x13a2bb){var _0xea60af={'raw':![],'where':{}};var _0x6ca53f={};var _0x5c1ee6={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x2016('0x3d')]({'where':{'id':_0x528b61[_0x2016('0x2c')]['id']}})['then'](handleEntityNotFound(_0x13a2bb,null))['then'](function(_0x2fc7d7){if(_0x2fc7d7){_0x6ca53f['model']=_[_0x2016('0x2e')](db[_0x2016('0x3e')][_0x2016('0x22')]);_0x6ca53f[_0x2016('0x2a')]=_['keys'](_0x528b61['query']);_0x6ca53f[_0x2016('0x3f')]=_['intersection'](_0x6ca53f[_0x2016('0x2d')],_0x6ca53f[_0x2016('0x2a')]);_0xea60af[_0x2016('0x30')]=_[_0x2016('0x2f')](_0x6ca53f[_0x2016('0x2d')],qs[_0x2016('0x31')](_0x528b61[_0x2016('0x2a')][_0x2016('0x31')]));_0xea60af[_0x2016('0x30')]=_0xea60af[_0x2016('0x30')][_0x2016('0x32')]?_0xea60af[_0x2016('0x30')]:_0x6ca53f[_0x2016('0x2d')];if(!_0x528b61['query'][_0x2016('0x40')](_0x2016('0x41'))){_0xea60af['limit']=qs['limit'](_0x528b61[_0x2016('0x2a')][_0x2016('0x14')]);_0xea60af[_0x2016('0x16')]=qs[_0x2016('0x16')](_0x528b61['query']['offset']);}_0xea60af[_0x2016('0x42')]=qs[_0x2016('0x43')](_0x528b61[_0x2016('0x2a')][_0x2016('0x43')]);_0xea60af[_0x2016('0x44')]=qs[_0x2016('0x3f')](_[_0x2016('0x45')](_0x528b61[_0x2016('0x2a')],_0x6ca53f[_0x2016('0x3f')]));_0xea60af['where']['OpenchannelInteractionId']=_0x2fc7d7['id'];if(_0x528b61[_0x2016('0x2a')][_0x2016('0x46')]){_0xea60af[_0x2016('0x44')]=_[_0x2016('0x34')](_0xea60af[_0x2016('0x44')],{'$or':_['map'](_0xea60af[_0x2016('0x30')],function(_0x3ff964){var _0x37f1d0={};_0x37f1d0[_0x3ff964]={'$like':'%'+_0x528b61['query'][_0x2016('0x46')]+'%'};return _0x37f1d0;})});}if(_0x528b61[_0x2016('0x2a')]['$gte']){var _0x3d1f3d=_0x528b61['query'][_0x2016('0x47')]['split'](',');var _0x5cbbad={};_0x5cbbad[_0x3d1f3d[0x0]]={'$gte':moment(_0x3d1f3d[0x1])[_0x2016('0x48')](_0x2016('0x49'))};_0xea60af[_0x2016('0x44')]=_[_0x2016('0x34')](_0xea60af[_0x2016('0x44')],_0x5cbbad);}_0xea60af=_[_0x2016('0x34')]({},_0xea60af,_0x528b61[_0x2016('0x35')]);return db[_0x2016('0x3e')][_0x2016('0x15')]({'where':_0xea60af[_0x2016('0x44')]})[_0x2016('0x1c')](function(_0x4922bf){_0x5c1ee6[_0x2016('0x15')]=_0x4922bf;if(_0x528b61[_0x2016('0x2a')]['includeAll']){_0xea60af[_0x2016('0x33')]=[{'all':!![]}];}return db[_0x2016('0x3e')][_0x2016('0x26')](_0xea60af);})[_0x2016('0x1c')](function(_0x42fc28){_0x5c1ee6[_0x2016('0x4a')]=_0x42fc28;return _0x5c1ee6;});}})[_0x2016('0x1c')](respondWithFilteredResult(_0x13a2bb,_0xea60af))[_0x2016('0x28')](handleError(_0x13a2bb,null));};exports[_0x2016('0x4b')]=function(_0x5c9267,_0x46a543){return db[_0x2016('0x21')][_0x2016('0x36')]({'where':{'id':_0x5c9267[_0x2016('0x2c')]['id']}})[_0x2016('0x1c')](handleEntityNotFound(_0x46a543,null))['then'](function(_0x3f9fca){if(_0x3f9fca){return _0x3f9fca[_0x2016('0x4c')](_0x5c9267[_0x2016('0x38')]['ids'],_[_0x2016('0x3c')](_0x5c9267[_0x2016('0x38')],['ids','id'])||{})[_0x2016('0x4d')](function(){return db['Tag'][_0x2016('0x26')]({'attributes':['id',_0x2016('0x1f'),'color'],'where':{'id':_0x5c9267[_0x2016('0x38')]['ids']}});})[_0x2016('0x1c')](function(_0x29d918){socket[_0x2016('0x4e')](_0x2016('0x4f'),{'id':Number(_0x5c9267[_0x2016('0x2c')]['id']),'tags':_0x29d918||[]});return{'id':Number(_0x5c9267[_0x2016('0x2c')]['id']),'tags':_0x29d918||[]};});}})['then'](respondWithResult(_0x46a543,null))[_0x2016('0x28')](handleError(_0x46a543,null));};exports[_0x2016('0x50')]=function(_0x3194c7,_0x58e33c){return db[_0x2016('0x21')]['find']({'where':{'id':_0x3194c7['params']['id']}})[_0x2016('0x1c')](handleEntityNotFound(_0x58e33c,null))[_0x2016('0x1c')](function(_0x194549){if(_0x194549){return _0x194549['removeTags'](_0x3194c7[_0x2016('0x2a')][_0x2016('0x3b')]);}})[_0x2016('0x1c')](respondWithStatusCode(_0x58e33c,null))['catch'](handleError(_0x58e33c,null));};exports[_0x2016('0x51')]=function(_0x314d03,_0x1a30c6){var _0x4c6b0f=moment()[_0x2016('0x52')]()[_0x2016('0x53')]();var _0x1adcdd=path[_0x2016('0x54')](config[_0x2016('0x55')],_0x2016('0x56'),_0x2016('0x57'),_0x2016('0x58'));var _0x56a226=path[_0x2016('0x54')](config[_0x2016('0x55')],_0x2016('0x56'),'files',_0x2016('0x59'));var _0x5d76c8=path[_0x2016('0x54')](_0x1adcdd,_0x4c6b0f);var _0x29d412=util[_0x2016('0x48')](_0x2016('0x5a'),_0x314d03[_0x2016('0x2c')]['id'],_0x4c6b0f);var _0x588675=path[_0x2016('0x54')](_0x1adcdd,_0x29d412);var _0xef684c=[];_0xef684c['push']({'model':db[_0x2016('0x5b')],'as':_0x2016('0x5b'),'attributes':['id','fullname'],'raw':!![]});_0xef684c[_0x2016('0x5c')]({'model':db[_0x2016('0x5d')],'as':_0x2016('0x5e'),'attributes':['id',_0x2016('0x5f'),_0x2016('0x60')],'raw':!![]});if(_0x314d03[_0x2016('0x2a')][_0x2016('0x59')]){_0xef684c[_0x2016('0x5c')]({'model':db['Attachment'],'as':_0x2016('0x61'),'raw':!![]});}var _0x2e99f1=[{'model':db[_0x2016('0x3e')],'as':_0x2016('0x62'),'attributes':['id',_0x2016('0x38'),'createdAt',_0x2016('0x63'),'secret',_0x2016('0x64')],'include':_0xef684c}];_0x2e99f1[_0x2016('0x5c')]({'model':db['OpenchannelAccount'],'as':'Account','attributes':['id',_0x2016('0x1f')]});_0x2e99f1[_0x2016('0x5c')]({'model':db['User'],'as':_0x2016('0x65'),'attributes':['id',_0x2016('0x66')]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x314d03[_0x2016('0x2c')]['id']},'include':_0x2e99f1})[_0x2016('0x1c')](handleEntityNotFound(_0x1a30c6,null))[_0x2016('0x1c')](function(_0x51f68e){if(_0x51f68e){var _0x2ca7e0=_0x51f68e[_0x2016('0x67')]({'plain':!![]});fs['mkdirSync'](_0x5d76c8);var _0x1ce6b0={'channel':_0x2016('0x68'),'account':_0x2ca7e0[_0x2016('0x69')][_0x2016('0x1f')],'agent':_0x2ca7e0['Owner']?_0x2ca7e0[_0x2016('0x65')][_0x2016('0x66')]:_0x2016('0x6a'),'createdAt':moment(_0x2ca7e0[_0x2016('0x6b')])[_0x2016('0x48')](_0x2016('0x49'))[_0x2016('0x53')](),'closedAt':_0x2ca7e0['closed']?moment(_0x2ca7e0[_0x2016('0x6c')])['format'](_0x2016('0x49'))[_0x2016('0x53')]():'','disposition':_0x2ca7e0[_0x2016('0x6d')],'visibility':_0x2ca7e0[_0x2016('0x6e')]?'Public':_0x2016('0x6f'),'messages':_(_0x2ca7e0[_0x2016('0x62')])['filter']({'secret':![]})[_0x2016('0x70')](function(_0x58e6a0){if(_0x58e6a0[_0x2016('0x61')]){var _0x2dade6=path[_0x2016('0x54')](_0x56a226,_0x58e6a0[_0x2016('0x61')][_0x2016('0x71')]);if(fs[_0x2016('0x72')](_0x2dade6)){fs[_0x2016('0x73')](_0x2dade6)['pipe'](fs[_0x2016('0x74')](path[_0x2016('0x54')](_0x5d76c8,_0x58e6a0['Attachment'][_0x2016('0x71')])));}}return{'date':moment(_0x58e6a0[_0x2016('0x6b')])[_0x2016('0x48')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2016('0x53')](),'sender':_0x58e6a0[_0x2016('0x63')]===_0x2016('0x75')?_0x58e6a0[_0x2016('0x5b')]?_0x58e6a0[_0x2016('0x5b')][_0x2016('0x66')]:_0x2016('0x76'):_0x58e6a0[_0x2016('0x5e')]['firstName']+(_0x58e6a0['Contact'][_0x2016('0x60')]?'\x20'+_0x58e6a0['Contact']['lastName']:''),'body':_0x58e6a0[_0x2016('0x61')]?_0x58e6a0[_0x2016('0x61')]['basename']:_0x58e6a0[_0x2016('0x38')],'direction':_0x58e6a0['direction']===_0x2016('0x75')?'A':'C','secret':_0x58e6a0[_0x2016('0x77')],'read':_0x58e6a0['read'],'attachment':_0x58e6a0[_0x2016('0x61')]};})['value']()};return ejs[_0x2016('0x78')](path['join'](config[_0x2016('0x55')],_0x2016('0x56'),'views',_0x2016('0x79')),{'interaction':_0x1ce6b0})[_0x2016('0x1c')](function(_0x1e358c){var _0x56fd8e=path[_0x2016('0x54')](_0x5d76c8,_0x2016('0x7a')+_0x2ca7e0['id']+'-'+_0x4c6b0f+_0x2016('0x7b'));var _0x1401c1={'path':_0x56fd8e,'channel':_0x2016('0x68'),'interactionId':_0x2ca7e0['id']};return pdf['createPdfFromHTML'](_0x1e358c,_0x1401c1);})[_0x2016('0x1c')](function(){return new Promise(function(_0x1edf15,_0x138559){zipdir(_0x5d76c8,{'saveTo':_0x588675},function(_0x1e52a0,_0x4d450c){if(_0x1e52a0)return _0x138559(_0x1e52a0);return _0x1edf15(_0x4d450c);});})[_0x2016('0x1c')](function(){return new Promise(function(_0x490446,_0x14acfa){rimraf(_0x5d76c8,function(_0x2ca8c7){if(_0x2ca8c7)_0x14acfa(_0x2ca8c7);return _0x490446();});});})[_0x2016('0x1c')](function(){return _0x1a30c6['download'](_0x588675,_0x29d412,function(_0x2eae5d){if(_0x2eae5d){logger[_0x2016('0x7c')](_0x2016('0x7d'),_0x2eae5d);}else{fs[_0x2016('0x7e')](_0x588675);}});});});}else{return _0x1a30c6[_0x2016('0x1d')](0xc8);}})[_0x2016('0x28')](handleError(_0x1a30c6,null));};
\ No newline at end of file
index a6e336f..2083b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5550=['findAll','setDataValue','unreadMessages','catch','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','update','getUsers','then','Users','map'];(function(_0x4af01e,_0x543f5c){var _0x178c11=function(_0x2c2f76){while(--_0x2c2f76){_0x4af01e['push'](_0x4af01e['shift']());}};_0x178c11(++_0x543f5c);}(_0x5550,0x124));var _0x0555=function(_0x34e4fe,_0x2bec12){_0x34e4fe=_0x34e4fe-0x0;var _0x585201=_0x5550[_0x34e4fe];return _0x585201;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0x0555('0x0'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x0555('0x1')](0x0);var events={'afterCreate':_0x0555('0x2'),'afterUpdate':_0x0555('0x3'),'afterDestroy':'remove'};function emitEvent(_0x43c062){return function(_0x4ec9d7,_0x2f44b7,_0x33968a){_0x4ec9d7[_0x0555('0x4')]({'attributes':['id'],'raw':!![]})[_0x0555('0x5')](function(_0x2ea8de){_0x4ec9d7['setDataValue'](_0x0555('0x6'),_0x2ea8de[_0x0555('0x7')](function(_0x4b182e){return{'id':_0x4b182e['id']};}));return OpenchannelMessage[_0x0555('0x8')]({'where':{'OpenchannelInteractionId':_0x4ec9d7['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0555('0x5')](function(_0x494e0e){_0x4ec9d7[_0x0555('0x9')](_0x0555('0xa'),_0x494e0e['length']);OpenchannelInteractionEvents['emit'](_0x43c062+':'+_0x4ec9d7['id'],_0x4ec9d7);OpenchannelInteractionEvents['emit'](_0x43c062,_0x4ec9d7);_0x33968a(null);})[_0x0555('0xb')](_0x33968a(null));};}for(var e in events){if(events[_0x0555('0xc')](e)){var event=events[e];OpenchannelInteraction[_0x0555('0xd')](e,emitEvent(event));}}module[_0x0555('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x00a3=['unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','setMaxListeners','save','remove','getUsers','setDataValue','map','findAll'];(function(_0x3c0dcc,_0x18c419){var _0x1a224c=function(_0x238ae7){while(--_0x238ae7){_0x3c0dcc['push'](_0x3c0dcc['shift']());}};_0x1a224c(++_0x18c419);}(_0x00a3,0x15f));var _0x300a=function(_0x36458e,_0x129970){_0x36458e=_0x36458e-0x0;var _0xd759c5=_0x00a3[_0x36458e];return _0xd759c5;};'use strict';var EventEmitter=require(_0x300a('0x0'));var OpenchannelInteraction=require(_0x300a('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x300a('0x1'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x300a('0x2')](0x0);var events={'afterCreate':_0x300a('0x3'),'afterUpdate':'update','afterDestroy':_0x300a('0x4')};function emitEvent(_0x4ca382){return function(_0xd120f,_0x2de492,_0x5ca938){_0xd120f[_0x300a('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4d8250){_0xd120f[_0x300a('0x6')]('Users',_0x4d8250[_0x300a('0x7')](function(_0x3793c1){return{'id':_0x3793c1['id']};}));return OpenchannelMessage[_0x300a('0x8')]({'where':{'OpenchannelInteractionId':_0xd120f['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x19af78){_0xd120f[_0x300a('0x6')](_0x300a('0x9'),_0x19af78[_0x300a('0xa')]);OpenchannelInteractionEvents[_0x300a('0xb')](_0x4ca382+':'+_0xd120f['id'],_0xd120f);OpenchannelInteractionEvents['emit'](_0x4ca382,_0xd120f);_0x5ca938(null);})[_0x300a('0xc')](_0x5ca938(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x300a('0xd')](e,emitEvent(event));}}module[_0x300a('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 7f289f1..0c56307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd383=['rimraf','../../config/environment','define','OpenchannelInteraction','openchannel_interactions','utf8mb4_unicode_ci','changed','closed','closedAt','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0xd383,0x1c4));var _0x3d38=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0xd383[_0x485b5a];return _0xd2b34d;};'use strict';var _=require(_0x3d38('0x0'));var util=require(_0x3d38('0x1'));var logger=require(_0x3d38('0x2'))(_0x3d38('0x3'));var moment=require(_0x3d38('0x4'));var BPromise=require(_0x3d38('0x5'));var rp=require(_0x3d38('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3d38('0x7'));var config=require(_0x3d38('0x8'));var attributes=require('./openchannelInteraction.attributes');module['exports']=function(_0x53fa41,_0x111ef4){return _0x53fa41[_0x3d38('0x9')](_0x3d38('0xa'),attributes,{'tableName':_0x3d38('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x3d38('0xc'),'hooks':{'beforeUpdate':function(_0x16d22d,_0x254675,_0x4912c8){if(_0x16d22d[_0x3d38('0xd')](_0x3d38('0xe'))){_0x16d22d[_0x3d38('0xf')]=moment()[_0x3d38('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4912c8(null,_0x16d22d);}}});};
\ No newline at end of file
+var _0x01ef=['exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','format','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelInteraction.attributes'];(function(_0xeb71f6,_0x2eba0e){var _0x37cac4=function(_0x3203c5){while(--_0x3203c5){_0xeb71f6['push'](_0xeb71f6['shift']());}};_0x37cac4(++_0x2eba0e);}(_0x01ef,0x1dd));var _0xf01e=function(_0x115480,_0x2a41b9){_0x115480=_0x115480-0x0;var _0x5d3fbd=_0x01ef[_0x115480];return _0x5d3fbd;};'use strict';var _=require(_0xf01e('0x0'));var util=require('util');var logger=require(_0xf01e('0x1'))(_0xf01e('0x2'));var moment=require(_0xf01e('0x3'));var BPromise=require(_0xf01e('0x4'));var rp=require(_0xf01e('0x5'));var fs=require('fs');var path=require(_0xf01e('0x6'));var rimraf=require('rimraf');var config=require(_0xf01e('0x7'));var attributes=require(_0xf01e('0x8'));module[_0xf01e('0x9')]=function(_0x374762,_0x2a3c36){return _0x374762[_0xf01e('0xa')](_0xf01e('0xb'),attributes,{'tableName':_0xf01e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf01e('0xd'),'collate':_0xf01e('0xe'),'hooks':{'beforeUpdate':function(_0x3969fa,_0x2dd39a,_0x340051){if(_0x3969fa[_0xf01e('0xf')](_0xf01e('0x10'))){_0x3969fa['closedAt']=moment()[_0xf01e('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}_0x340051(null,_0x3969fa);}}});};
\ No newline at end of file
index 84afc98..11e7794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x455f=['where','attributes','limit','AddTagsToOpenchannelInteraction','addTags','omit','body','spread','AddTags','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','options','raw'];(function(_0x51eb40,_0x14b007){var _0x2999fc=function(_0x4097bb){while(--_0x4097bb){_0x51eb40['push'](_0x51eb40['shift']());}};_0x2999fc(++_0x14b007);}(_0x455f,0x11a));var _0xf455=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x455f[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0xf455('0x0'));var moment=require('moment');var BPromise=require(_0xf455('0x1'));var rs=require(_0xf455('0x2'));var fs=require('fs');var Redis=require(_0xf455('0x3'));var db=require(_0xf455('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf455('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf455('0x6'));var client=jayson[_0xf455('0x7')][_0xf455('0x8')]({'port':0x232a});config[_0xf455('0x9')]=_[_0xf455('0xa')](config[_0xf455('0x9')],{'host':_0xf455('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf455('0x9')]));require(_0xf455('0xc'))[_0xf455('0xd')](socket);function respondWithRpcPromise(_0x56d5a3,_0x632fcf,_0x591afa){return new BPromise(function(_0x17b200,_0x27bf68){return client[_0xf455('0xe')](_0x56d5a3,_0x591afa)[_0xf455('0xf')](function(_0x2cb100){logger[_0xf455('0x10')](_0xf455('0x11'),_0x632fcf,_0xf455('0x12'));logger[_0xf455('0x13')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x632fcf,'request\x20sent',JSON[_0xf455('0x14')](_0x2cb100));if(_0x2cb100[_0xf455('0x15')]){if(_0x2cb100[_0xf455('0x15')][_0xf455('0x16')]===0x1f4){logger[_0xf455('0x15')](_0xf455('0x11'),_0x632fcf,_0x2cb100[_0xf455('0x15')][_0xf455('0x17')]);return _0x27bf68(_0x2cb100[_0xf455('0x15')][_0xf455('0x17')]);}logger[_0xf455('0x15')](_0xf455('0x11'),_0x632fcf,_0x2cb100[_0xf455('0x15')]['message']);return _0x17b200(_0x2cb100[_0xf455('0x15')][_0xf455('0x17')]);}else{logger[_0xf455('0x10')](_0xf455('0x11'),_0x632fcf,_0xf455('0x12'));_0x17b200(_0x2cb100[_0xf455('0x18')][_0xf455('0x17')]);}})[_0xf455('0x19')](function(_0x3e4cfc){logger['error'](_0xf455('0x11'),_0x632fcf,_0x3e4cfc);_0x27bf68(_0x3e4cfc);});});}exports[_0xf455('0x1a')]=function(_0x3ca99d){var _0x52d963=this;return new Promise(function(_0x34b3f9,_0x514c09){return db[_0xf455('0x1b')]['update'](_0x3ca99d['body'],{'raw':_0x3ca99d['options']?_0x3ca99d[_0xf455('0x1c')][_0xf455('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ca99d[_0xf455('0x1c')]?_0x3ca99d['options'][_0xf455('0x1e')]||null:null,'attributes':_0x3ca99d[_0xf455('0x1c')]?_0x3ca99d['options'][_0xf455('0x1f')]||null:null,'limit':_0x3ca99d[_0xf455('0x1c')]?_0x3ca99d[_0xf455('0x1c')][_0xf455('0x20')]||null:null})[_0xf455('0xf')](function(_0x48ed40){logger[_0xf455('0x10')](_0xf455('0x1a'),_0x3ca99d);logger[_0xf455('0x13')](_0xf455('0x1a'),_0x3ca99d,JSON[_0xf455('0x14')](_0x48ed40));_0x34b3f9(_0x48ed40);})[_0xf455('0x19')](function(_0x1e05c5){logger[_0xf455('0x15')](_0xf455('0x1a'),_0x1e05c5[_0xf455('0x17')],_0x3ca99d);_0x514c09(_0x52d963[_0xf455('0x15')](0x1f4,_0x1e05c5[_0xf455('0x17')]));});});};exports[_0xf455('0x21')]=function(_0x4b1eaa){return new Promise(function(_0x5caf14,_0x3e0efe){return db[_0xf455('0x1b')]['find']({'where':_0x4b1eaa[_0xf455('0x1c')]?_0x4b1eaa[_0xf455('0x1c')]['where']||null:null})[_0xf455('0xf')](function(_0x26b746){if(_0x26b746){return _0x26b746[_0xf455('0x22')](_0x4b1eaa['body']['ids'],_[_0xf455('0x23')](_0x4b1eaa[_0xf455('0x24')],['ids','id'])||{});}})[_0xf455('0x25')](function(_0x666812){logger[_0xf455('0x10')]('AddTags',_0x4b1eaa);logger[_0xf455('0x13')](_0xf455('0x26'),_0x4b1eaa,JSON[_0xf455('0x14')](_0x666812));_0x5caf14(_0x666812);})[_0xf455('0x19')](function(_0x140f8a){logger[_0xf455('0x15')](_0xf455('0x26'),_0x140f8a[_0xf455('0x17')],_0x4b1eaa);_0x3e0efe(_this['error'](0x1f4,_0x140f8a['message']));});});};
\ No newline at end of file
+var _0x021b=['options','raw','where','attributes','limit','catch','AddTagsToOpenchannelInteraction','find','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body'];(function(_0x8c6c90,_0x34b62d){var _0x14d235=function(_0x3074c3){while(--_0x3074c3){_0x8c6c90['push'](_0x8c6c90['shift']());}};_0x14d235(++_0x34b62d);}(_0x021b,0x1af));var _0xb021=function(_0x2af692,_0x30438e){_0x2af692=_0x2af692-0x0;var _0x26a3a8=_0x021b[_0x2af692];return _0x26a3a8;};'use strict';var _=require(_0xb021('0x0'));var util=require(_0xb021('0x1'));var moment=require(_0xb021('0x2'));var BPromise=require(_0xb021('0x3'));var rs=require(_0xb021('0x4'));var fs=require('fs');var Redis=require(_0xb021('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb021('0x6'));var logger=require(_0xb021('0x7'))(_0xb021('0x8'));var config=require(_0xb021('0x9'));var jayson=require(_0xb021('0xa'));var client=jayson[_0xb021('0xb')][_0xb021('0xc')]({'port':0x232a});config[_0xb021('0xd')]=_[_0xb021('0xe')](config[_0xb021('0xd')],{'host':_0xb021('0xf'),'port':0x18eb});var socket=require(_0xb021('0x10'))(new Redis(config['redis']));require('./openchannelInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x15cc84,_0x1a2da,_0x486400){return new BPromise(function(_0x35085d,_0x28adb0){return client[_0xb021('0x11')](_0x15cc84,_0x486400)[_0xb021('0x12')](function(_0x59eef3){logger[_0xb021('0x13')](_0xb021('0x14'),_0x1a2da,_0xb021('0x15'));logger[_0xb021('0x16')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x1a2da,_0xb021('0x15'),JSON[_0xb021('0x17')](_0x59eef3));if(_0x59eef3[_0xb021('0x18')]){if(_0x59eef3[_0xb021('0x18')]['code']===0x1f4){logger[_0xb021('0x18')](_0xb021('0x14'),_0x1a2da,_0x59eef3['error'][_0xb021('0x19')]);return _0x28adb0(_0x59eef3['error'][_0xb021('0x19')]);}logger[_0xb021('0x18')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1a2da,_0x59eef3[_0xb021('0x18')]['message']);return _0x35085d(_0x59eef3[_0xb021('0x18')][_0xb021('0x19')]);}else{logger[_0xb021('0x13')](_0xb021('0x14'),_0x1a2da,_0xb021('0x15'));_0x35085d(_0x59eef3[_0xb021('0x1a')]['message']);}})['catch'](function(_0x5516f3){logger['error'](_0xb021('0x14'),_0x1a2da,_0x5516f3);_0x28adb0(_0x5516f3);});});}exports[_0xb021('0x1b')]=function(_0x4e0360){var _0x119080=this;return new Promise(function(_0x28243d,_0x18306b){return db[_0xb021('0x1c')][_0xb021('0x1d')](_0x4e0360[_0xb021('0x1e')],{'raw':_0x4e0360[_0xb021('0x1f')]?_0x4e0360[_0xb021('0x1f')][_0xb021('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e0360[_0xb021('0x1f')]?_0x4e0360['options'][_0xb021('0x21')]||null:null,'attributes':_0x4e0360[_0xb021('0x1f')]?_0x4e0360['options'][_0xb021('0x22')]||null:null,'limit':_0x4e0360[_0xb021('0x1f')]?_0x4e0360['options'][_0xb021('0x23')]||null:null})['then'](function(_0x58300e){logger[_0xb021('0x13')](_0xb021('0x1b'),_0x4e0360);logger[_0xb021('0x16')](_0xb021('0x1b'),_0x4e0360,JSON['stringify'](_0x58300e));_0x28243d(_0x58300e);})[_0xb021('0x24')](function(_0x4a60ce){logger['error']('UpdateOpenchannelInteraction',_0x4a60ce['message'],_0x4e0360);_0x18306b(_0x119080[_0xb021('0x18')](0x1f4,_0x4a60ce['message']));});});};exports[_0xb021('0x25')]=function(_0x2b61c3){return new Promise(function(_0x40507d,_0x24b443){return db[_0xb021('0x1c')][_0xb021('0x26')]({'where':_0x2b61c3['options']?_0x2b61c3[_0xb021('0x1f')][_0xb021('0x21')]||null:null})[_0xb021('0x12')](function(_0x16a919){if(_0x16a919){return _0x16a919['addTags'](_0x2b61c3[_0xb021('0x1e')][_0xb021('0x27')],_[_0xb021('0x28')](_0x2b61c3[_0xb021('0x1e')],[_0xb021('0x27'),'id'])||{});}})['spread'](function(_0x1b8404){logger['info'](_0xb021('0x29'),_0x2b61c3);logger[_0xb021('0x16')](_0xb021('0x29'),_0x2b61c3,JSON[_0xb021('0x17')](_0x1b8404));_0x40507d(_0x1b8404);})[_0xb021('0x24')](function(_0x1d6f63){logger['error'](_0xb021('0x29'),_0x1d6f63[_0xb021('0x19')],_0x2b61c3);_0x24b443(_this[_0xb021('0x18')](0x1f4,_0x1d6f63[_0xb021('0x19')]));});});};
\ No newline at end of file
index 418a36f..ac90c97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bbf=['update','emit','removeListener','register','length','openchannelInteraction:','./openchannelInteraction.events','save','remove'];(function(_0x423889,_0x2fbff){var _0x55888d=function(_0x2af68a){while(--_0x2af68a){_0x423889['push'](_0x423889['shift']());}};_0x55888d(++_0x2fbff);}(_0x6bbf,0x11d));var _0xf6bb=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0x6bbf[_0x5317b5];return _0x3b7ce2;};'use strict';var OpenchannelInteractionEvents=require(_0xf6bb('0x0'));var events=[_0xf6bb('0x1'),_0xf6bb('0x2'),_0xf6bb('0x3')];function createListener(_0xdc8f42,_0x2433ef){return function(_0x1e6037){_0x2433ef[_0xf6bb('0x4')](_0xdc8f42,_0x1e6037);};}function removeListener(_0x5d054a,_0x26c206){return function(){OpenchannelInteractionEvents[_0xf6bb('0x5')](_0x5d054a,_0x26c206);};}exports[_0xf6bb('0x6')]=function(_0x2bac43){for(var _0x2fa63d=0x0,_0x1d4415=events[_0xf6bb('0x7')];_0x2fa63d<_0x1d4415;_0x2fa63d++){var _0x5d05f4=events[_0x2fa63d];var _0x5bd8a9=createListener(_0xf6bb('0x8')+_0x5d05f4,_0x2bac43);OpenchannelInteractionEvents['on'](_0x5d05f4,_0x5bd8a9);}};
\ No newline at end of file
+var _0xb593=['update','emit','removeListener','register','length','./openchannelInteraction.events','remove'];(function(_0x484976,_0x450694){var _0x407cd8=function(_0xcefea9){while(--_0xcefea9){_0x484976['push'](_0x484976['shift']());}};_0x407cd8(++_0x450694);}(_0xb593,0x7c));var _0x3b59=function(_0x547587,_0x48cbd9){_0x547587=_0x547587-0x0;var _0x3d7777=_0xb593[_0x547587];return _0x3d7777;};'use strict';var OpenchannelInteractionEvents=require(_0x3b59('0x0'));var events=['save',_0x3b59('0x1'),_0x3b59('0x2')];function createListener(_0x22e1ae,_0x4a0340){return function(_0x20c571){_0x4a0340[_0x3b59('0x3')](_0x22e1ae,_0x20c571);};}function removeListener(_0x50ca3b,_0x490ebd){return function(){OpenchannelInteractionEvents[_0x3b59('0x4')](_0x50ca3b,_0x490ebd);};}exports[_0x3b59('0x5')]=function(_0x50397d){for(var _0x3de5c7=0x0,_0x3b1660=events[_0x3b59('0x6')];_0x3de5c7<_0x3b1660;_0x3de5c7++){var _0x40a934=events[_0x3de5c7];var _0x24117a=createListener('openchannelInteraction:'+_0x40a934,_0x50397d);OpenchannelInteractionEvents['on'](_0x40a934,_0x24117a);}};
\ No newline at end of file
index 283bfcb..e771690 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x51733c,_0x448082){var _0x5f50f9=function(_0x20a479){while(--_0x20a479){_0x51733c['push'](_0x51733c['shift']());}};_0x5f50f9(++_0x448082);}(_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
+var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','create','update','put','/:id/accept','accept','/:id/reject','exports','multer','util','path','express','Router'];(function(_0x3a9008,_0x402eea){var _0x2c7e15=function(_0x5bb359){while(--_0x5bb359){_0x3a9008['push'](_0x3a9008['shift']());}};_0x2c7e15(++_0x402eea);}(_0xe706,0xa3));var _0x6e70=function(_0x527c39,_0x3ea2a6){_0x527c39=_0x527c39-0x0;var _0x3f4dd6=_0xe706[_0x527c39];return _0x3f4dd6;};'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')](),interaction[_0x6e70('0x12')](_0x6e70('0x13'),_0x6e70('0x14')),controller[_0x6e70('0x15')]);router['put']('/:id',auth[_0x6e70('0xb')](),controller[_0x6e70('0x16')]);router[_0x6e70('0x17')](_0x6e70('0x18'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x19')]);router[_0x6e70('0x17')](_0x6e70('0x1a'),auth['isAuthenticated'](),controller['reject']);router['delete'](_0x6e70('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
index 64f3d56..87bb602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f59=['BOOLEAN','ENUM','out','DATE','STRING','sequelize','exports','TEXT','medium'];(function(_0x12aa33,_0x3f67ea){var _0x11d5f3=function(_0x400418){while(--_0x400418){_0x12aa33['push'](_0x12aa33['shift']());}};_0x11d5f3(++_0x3f67ea);}(_0x6f59,0x1be));var _0x96f5=function(_0x3ec9df,_0x481cce){_0x3ec9df=_0x3ec9df-0x0;var _0x207891=_0x6f59[_0x3ec9df];return _0x207891;};'use strict';var Sequelize=require(_0x96f5('0x0'));module[_0x96f5('0x1')]={'body':{'type':Sequelize[_0x96f5('0x2')](_0x96f5('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x96f5('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x96f5('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x96f5('0x5')]('in',_0x96f5('0x6')),'defaultValue':_0x96f5('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x96f5('0x7')]},'providerName':{'type':Sequelize[_0x96f5('0x8')]},'providerResponse':{'type':Sequelize[_0x96f5('0x2')]}};
\ No newline at end of file
+var _0xbbdd=['out','TEXT','exports','medium','BOOLEAN'];(function(_0x52b9c4,_0x1985af){var _0x3a6901=function(_0x4d55d4){while(--_0x4d55d4){_0x52b9c4['push'](_0x52b9c4['shift']());}};_0x3a6901(++_0x1985af);}(_0xbbdd,0x1ba));var _0xdbbd=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xbbdd[_0x346737];return _0x1ade2e;};'use strict';var Sequelize=require('sequelize');module[_0xdbbd('0x0')]={'body':{'type':Sequelize['TEXT'](_0xdbbd('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xdbbd('0x2')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xdbbd('0x3'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xdbbd('0x4')]}};
\ No newline at end of file
index 88d2ffc..15e0b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3ac=['debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','OpenchannelMessage,\x20%s,\x20%s','message','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','destroy','sendStatus','name','send','index','map','rawAttributes','key','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','OpenchannelMessage','include','findAll','rows','show','params','includeAll','find','create','update','body','describe','../../config/logger','openchannel-interactions','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','null','AcceptMessage','acceptMessage','sequelize','Sequelize','contact','User','agent','fullname','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','email','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelMessage.socket','register','http','client','request','then','info','request\x20sent'];(function(_0x37869b,_0x349cfa){var _0x430811=function(_0x50c0d8){while(--_0x50c0d8){_0x37869b['push'](_0x37869b['shift']());}};_0x430811(++_0x349cfa);}(_0xe3ac,0x1ec));var _0xce3a=function(_0x4eee27,_0x3d1f82){_0x4eee27=_0x4eee27-0x0;var _0x589873=_0xe3ac[_0x4eee27];return _0x589873;};'use strict';var emlformat=require(_0xce3a('0x0'));var rimraf=require(_0xce3a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xce3a('0x2'));var moment=require(_0xce3a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xce3a('0x4'));var util=require(_0xce3a('0x5'));var path=require(_0xce3a('0x6'));var sox=require(_0xce3a('0x7'));var csv=require(_0xce3a('0x8'));var ejs=require(_0xce3a('0x9'));var fs=require('fs');var fs_extra=require(_0xce3a('0xa'));var _=require(_0xce3a('0xb'));var squel=require(_0xce3a('0xc'));var crypto=require(_0xce3a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xce3a('0xe'));var toCsv=require(_0xce3a('0x8'));var querystring=require('querystring');var Papa=require(_0xce3a('0xf'));var Redis=require('ioredis');var authService=require(_0xce3a('0x10'));var qs=require(_0xce3a('0x11'));var as=require(_0xce3a('0x12'));var hardwareService=require(_0xce3a('0x13'));var logger=require('../../config/logger')(_0xce3a('0x14'));var utils=require(_0xce3a('0x15'));var config=require(_0xce3a('0x16'));var licenseUtil=require(_0xce3a('0x17'));var db=require(_0xce3a('0x18'))['db'];config[_0xce3a('0x19')]=_[_0xce3a('0x1a')](config[_0xce3a('0x19')],{'host':_0xce3a('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xce3a('0x19')]));require(_0xce3a('0x1c'))[_0xce3a('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xce3a('0x1e')]({'port':0x232c});var client9002=jayson[_0xce3a('0x1f')][_0xce3a('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x52480b,_0x132477,_0x2d538e,_0x554503){return new BPromise(function(_0x4c8347,_0x1ecdcc){var _0x571834=_0x554503||client;return _0x571834[_0xce3a('0x20')](_0x52480b,_0x2d538e)[_0xce3a('0x21')](function(_0x3f80e6){logger[_0xce3a('0x22')]('OpenchannelMessage,\x20%s,\x20%s',_0x132477,_0xce3a('0x23'));logger[_0xce3a('0x24')](_0xce3a('0x25'),_0x132477,_0xce3a('0x23'),JSON['stringify'](_0x3f80e6));if(_0x3f80e6[_0xce3a('0x26')]){if(_0x3f80e6[_0xce3a('0x26')][_0xce3a('0x27')]===0x1f4){logger[_0xce3a('0x26')](_0xce3a('0x28'),_0x132477,_0x3f80e6['error'][_0xce3a('0x29')]);return _0x1ecdcc(_0x3f80e6[_0xce3a('0x26')][_0xce3a('0x29')]);}logger[_0xce3a('0x26')](_0xce3a('0x28'),_0x132477,_0x3f80e6[_0xce3a('0x26')]['message']);return _0x4c8347(_0x3f80e6['error'][_0xce3a('0x29')]);}else{logger['info'](_0xce3a('0x28'),_0x132477,_0xce3a('0x23'));_0x4c8347(_0x3f80e6['result'][_0xce3a('0x29')]);}})[_0xce3a('0x2a')](function(_0x2f301a){logger[_0xce3a('0x26')](_0xce3a('0x28'),_0x132477,_0x2f301a);_0x1ecdcc(_0x2f301a);});});}function respondWithStatusCode(_0x388ffa,_0x4f9b1b){_0x4f9b1b=_0x4f9b1b||0xcc;return function(_0x3c27ad){if(_0x3c27ad){return _0x388ffa['sendStatus'](_0x4f9b1b);}return _0x388ffa[_0xce3a('0x2b')](_0x4f9b1b)[_0xce3a('0x2c')]();};}function respondWithResult(_0x25e3a4,_0x45ec73){_0x45ec73=_0x45ec73||0xc8;return function(_0x1318f0){if(_0x1318f0){return _0x25e3a4[_0xce3a('0x2b')](_0x45ec73)[_0xce3a('0x2d')](_0x1318f0);}};}function respondWithFilteredResult(_0x2de389,_0x2e81e0){return function(_0x1ffa93){if(_0x1ffa93){var _0x444538=typeof _0x2e81e0[_0xce3a('0x2e')]===_0xce3a('0x2f')&&typeof _0x2e81e0[_0xce3a('0x30')]===_0xce3a('0x2f');var _0xeb30d2=_0x1ffa93[_0xce3a('0x31')];var _0x2a7e84=_0x444538?0x0:_0x2e81e0['offset'];var _0x50b70e=_0x444538?_0x1ffa93[_0xce3a('0x31')]:_0x2e81e0[_0xce3a('0x2e')]+_0x2e81e0[_0xce3a('0x30')];var _0x2c3fbb;if(_0x50b70e>=_0xeb30d2){_0x50b70e=_0xeb30d2;_0x2c3fbb=0xc8;}else{_0x2c3fbb=0xce;}_0x2de389[_0xce3a('0x2b')](_0x2c3fbb);return _0x2de389['set'](_0xce3a('0x32'),_0x2a7e84+'-'+_0x50b70e+'/'+_0xeb30d2)[_0xce3a('0x2d')](_0x1ffa93);}return null;};}function patchUpdates(_0x476723){return function(_0x22eb69){try{jsonpatch[_0xce3a('0x33')](_0x22eb69,_0x476723,!![]);}catch(_0x48fd4c){return BPromise['reject'](_0x48fd4c);}return _0x22eb69[_0xce3a('0x34')]();};}function saveUpdates(_0x5a362a,_0x46be73){return function(_0x1ff037){if(_0x1ff037){return _0x1ff037['update'](_0x5a362a)['then'](function(_0x42a63a){return _0x42a63a;});}return null;};}function removeEntity(_0x437ccf,_0x406403){return function(_0x68c0e0){if(_0x68c0e0){return _0x68c0e0[_0xce3a('0x35')]()['then'](function(){_0x437ccf[_0xce3a('0x2b')](0xcc)[_0xce3a('0x2c')]();});}};}function handleEntityNotFound(_0x30393d,_0x2217e1){return function(_0x4c3f34){if(!_0x4c3f34){_0x30393d[_0xce3a('0x36')](0x194);}return _0x4c3f34;};}function handleError(_0x2cd91d,_0x572d78){_0x572d78=_0x572d78||0x1f4;return function(_0x369292){logger[_0xce3a('0x26')](_0x369292['stack']);if(_0x369292['name']){delete _0x369292[_0xce3a('0x37')];}_0x2cd91d[_0xce3a('0x2b')](_0x572d78)[_0xce3a('0x38')](_0x369292);};}exports[_0xce3a('0x39')]=function(_0x393154,_0x55b9fa){var _0x1532f6={},_0x246179={},_0x68e5f7={'count':0x0,'rows':[]};var _0xdd4b3e=_[_0xce3a('0x3a')](db['OpenchannelMessage'][_0xce3a('0x3b')],function(_0x5b2e6f){return{'name':_0x5b2e6f['fieldName'],'type':_0x5b2e6f['type'][_0xce3a('0x3c')]};});_0x246179['model']=_[_0xce3a('0x3a')](_0xdd4b3e,_0xce3a('0x37'));_0x246179[_0xce3a('0x3d')]=_[_0xce3a('0x3e')](_0x393154['query']);_0x246179[_0xce3a('0x3f')]=_['intersection'](_0x246179[_0xce3a('0x40')],_0x246179[_0xce3a('0x3d')]);_0x1532f6['attributes']=_[_0xce3a('0x41')](_0x246179[_0xce3a('0x40')],qs[_0xce3a('0x42')](_0x393154[_0xce3a('0x3d')][_0xce3a('0x42')]));_0x1532f6[_0xce3a('0x43')]=_0x1532f6['attributes'][_0xce3a('0x44')]?_0x1532f6[_0xce3a('0x43')]:_0x246179[_0xce3a('0x40')];if(!_0x393154[_0xce3a('0x3d')][_0xce3a('0x45')](_0xce3a('0x46'))){_0x1532f6[_0xce3a('0x30')]=qs['limit'](_0x393154[_0xce3a('0x3d')][_0xce3a('0x30')]);_0x1532f6[_0xce3a('0x2e')]=qs[_0xce3a('0x2e')](_0x393154[_0xce3a('0x3d')][_0xce3a('0x2e')]);}_0x1532f6[_0xce3a('0x47')]=qs[_0xce3a('0x48')](_0x393154[_0xce3a('0x3d')][_0xce3a('0x48')]);_0x1532f6[_0xce3a('0x49')]=qs['filters'](_[_0xce3a('0x4a')](_0x393154['query'],_0x246179['filters']),_0xdd4b3e);if(_0x393154[_0xce3a('0x3d')][_0xce3a('0x4b')]){_0x1532f6[_0xce3a('0x49')]=_[_0xce3a('0x4c')](_0x1532f6[_0xce3a('0x49')],{'$or':_[_0xce3a('0x3a')](_0xdd4b3e,function(_0x17de75){if(_0x17de75['type']!=='VIRTUAL'){var _0xf602c7={};_0xf602c7[_0x17de75[_0xce3a('0x37')]]={'$like':'%'+_0x393154[_0xce3a('0x3d')][_0xce3a('0x4b')]+'%'};return _0xf602c7;}})});}_0x1532f6=_[_0xce3a('0x4c')]({},_0x1532f6,_0x393154[_0xce3a('0x4d')]);var _0x2c15ab={'where':_0x1532f6[_0xce3a('0x49')]};return db[_0xce3a('0x4e')]['count'](_0x2c15ab)[_0xce3a('0x21')](function(_0x5575b2){_0x68e5f7[_0xce3a('0x31')]=_0x5575b2;if(_0x393154[_0xce3a('0x3d')]['includeAll']){_0x1532f6[_0xce3a('0x4f')]=[{'all':!![]}];}return db[_0xce3a('0x4e')][_0xce3a('0x50')](_0x1532f6);})[_0xce3a('0x21')](function(_0x214f62){_0x68e5f7[_0xce3a('0x51')]=_0x214f62;return _0x68e5f7;})[_0xce3a('0x21')](respondWithFilteredResult(_0x55b9fa,_0x1532f6))[_0xce3a('0x2a')](handleError(_0x55b9fa,null));};exports[_0xce3a('0x52')]=function(_0x5abd1a,_0x3c8f6a){var _0x4fd7d1={'raw':!![],'where':{'id':_0x5abd1a[_0xce3a('0x53')]['id']}},_0x1c707c={};_0x1c707c['model']=_['keys'](db[_0xce3a('0x4e')]['rawAttributes']);_0x1c707c['query']=_['keys'](_0x5abd1a[_0xce3a('0x3d')]);_0x1c707c[_0xce3a('0x3f')]=_[_0xce3a('0x41')](_0x1c707c[_0xce3a('0x40')],_0x1c707c[_0xce3a('0x3d')]);_0x4fd7d1[_0xce3a('0x43')]=_[_0xce3a('0x41')](_0x1c707c[_0xce3a('0x40')],qs['fields'](_0x5abd1a[_0xce3a('0x3d')][_0xce3a('0x42')]));_0x4fd7d1['attributes']=_0x4fd7d1[_0xce3a('0x43')][_0xce3a('0x44')]?_0x4fd7d1[_0xce3a('0x43')]:_0x1c707c[_0xce3a('0x40')];if(_0x5abd1a[_0xce3a('0x3d')][_0xce3a('0x54')]){_0x4fd7d1['include']=[{'all':!![]}];}_0x4fd7d1=_[_0xce3a('0x4c')]({},_0x4fd7d1,_0x5abd1a[_0xce3a('0x4d')]);return db[_0xce3a('0x4e')][_0xce3a('0x55')](_0x4fd7d1)['then'](handleEntityNotFound(_0x3c8f6a,null))['then'](respondWithResult(_0x3c8f6a,null))[_0xce3a('0x2a')](handleError(_0x3c8f6a,null));};exports[_0xce3a('0x56')]=function(_0x1c2f29,_0x7064fd){return db[_0xce3a('0x4e')][_0xce3a('0x56')](_0x1c2f29['body'],{})[_0xce3a('0x21')](respondWithResult(_0x7064fd,0xc9))[_0xce3a('0x2a')](handleError(_0x7064fd,null));};exports[_0xce3a('0x57')]=function(_0x10d928,_0x358380){if(_0x10d928[_0xce3a('0x58')]['id']){delete _0x10d928[_0xce3a('0x58')]['id'];}return db[_0xce3a('0x4e')][_0xce3a('0x55')]({'where':{'id':_0x10d928[_0xce3a('0x53')]['id']}})['then'](handleEntityNotFound(_0x358380,null))[_0xce3a('0x21')](saveUpdates(_0x10d928['body'],null))[_0xce3a('0x21')](respondWithResult(_0x358380,null))[_0xce3a('0x2a')](handleError(_0x358380,null));};exports[_0xce3a('0x35')]=function(_0x497b42,_0x246ee1){return db['OpenchannelMessage'][_0xce3a('0x55')]({'where':{'id':_0x497b42['params']['id']}})[_0xce3a('0x21')](handleEntityNotFound(_0x246ee1,null))[_0xce3a('0x21')](removeEntity(_0x246ee1,null))[_0xce3a('0x2a')](handleError(_0x246ee1,null));};exports[_0xce3a('0x59')]=function(_0x4febe8,_0x298530){return db['OpenchannelMessage'][_0xce3a('0x59')]()[_0xce3a('0x21')](respondWithResult(_0x298530,null))['catch'](handleError(_0x298530,null));};var interaction_log=require(_0xce3a('0x5a'))(_0xce3a('0x5b'));exports[_0xce3a('0x5c')]=function(_0x4db675,_0x56e5f5,_0x990377){var _0x560b5d={'agent':{},'channel':_0xce3a('0x5d')};if(_0x4db675[_0xce3a('0x58')]['id']){delete _0x4db675[_0xce3a('0x58')]['id'];}_0x4db675[_0xce3a('0x58')][_0xce3a('0x5e')]=!![];_0x4db675['body'][_0xce3a('0x5f')]=moment()[_0xce3a('0x60')](_0xce3a('0x61'));_0x4db675[_0xce3a('0x58')][_0xce3a('0x62')]=_0x4db675[_0xce3a('0x58')]['UserId']||_0x4db675['user']['id'];_0x560b5d['agent']['id']=_0x4db675['body']['UserId'];return db[_0xce3a('0x4e')][_0xce3a('0x55')]({'where':{'id':_0x4db675[_0xce3a('0x53')]['id'],'UserId':null}})[_0xce3a('0x21')](handleEntityNotFound(_0x56e5f5,null))[_0xce3a('0x21')](saveUpdates(_0x4db675[_0xce3a('0x58')],null))[_0xce3a('0x21')](function(_0x3cc0a1){if(_0x3cc0a1){_0x560b5d[_0xce3a('0x29')]=_0x3cc0a1[_0xce3a('0x63')]({'plain':!![]});return db[_0xce3a('0x64')]['find']({'where':{'id':_0x3cc0a1[_0xce3a('0x65')]}});}return null;})[_0xce3a('0x21')](handleEntityNotFound(_0x56e5f5,null))['then'](function(_0x1c0e16){if(_0x1c0e16){return _0x1c0e16[_0xce3a('0x57')]({'UserId':_0x4db675[_0xce3a('0x58')]['UserId'],'read1stAt':_[_0xce3a('0x66')](_0x1c0e16['read1stAt'])?moment()[_0xce3a('0x60')](_0xce3a('0x61')):undefined});}return null;})[_0xce3a('0x21')](function(_0x30988b){if(_0x30988b){_0x560b5d[_0xce3a('0x67')]=_0x30988b[_0xce3a('0x63')]({'plain':!![]});interaction_log[_0xce3a('0x22')](_0xce3a('0x68'),_0x4db675['user']['id'],_0x4db675[_0xce3a('0x69')][_0xce3a('0x37')],_0x4db675['user'][_0xce3a('0x6a')],_0x560b5d[_0xce3a('0x67')]['id'],_0x4db675[_0xce3a('0x58')]?JSON[_0xce3a('0x6b')](_0x4db675[_0xce3a('0x58')]):_0xce3a('0x6c'));return respondWithRpcPromise(_0xce3a('0x6d'),_0xce3a('0x6e'),_0x560b5d);}return null;})[_0xce3a('0x21')](function(_0x2123e9){var _0xfdbd17='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2123e9['message']['ContactId'];return db[_0xce3a('0x6f')][_0xce3a('0x3d')](_0xfdbd17,{'type':db[_0xce3a('0x70')]['QueryTypes']['SELECT'],'raw':!![]})[_0xce3a('0x21')](function(_0x3e86f7){return _0x3e86f7;});})[_0xce3a('0x21')](function(_0x45bd56){if(_0x45bd56){_0x560b5d[_0xce3a('0x29')][_0xce3a('0x71')]=_0x45bd56[0x0];if(!_0x4db675[_0xce3a('0x58')]['UserId'])return;return db[_0xce3a('0x72')][_0xce3a('0x55')]({'where':{'id':_0x4db675[_0xce3a('0x58')][_0xce3a('0x62')],'role':_0xce3a('0x73')},'attributes':['id','name',_0xce3a('0x74'),'email',_0xce3a('0x75')],'raw':!![]});}return null;})['then'](function(_0x25270e){if(!_0x25270e)return null;_0x560b5d[_0xce3a('0x29')][_0xce3a('0x73')]=_0x25270e;return _0x560b5d;})[_0xce3a('0x21')](function(_0x41c669){if(_0x41c669){if(_0x4db675[_0xce3a('0x58')]['manual']){_0x560b5d[_0xce3a('0x29')][_0xce3a('0x76')]=util[_0xce3a('0x60')](_0xce3a('0x77'),_0x4db675[_0xce3a('0x69')][_0xce3a('0x37')]);_0x560b5d[_0xce3a('0x29')][_0xce3a('0x78')]=_0x560b5d[_0xce3a('0x78')];_0x560b5d[_0xce3a('0x29')][_0xce3a('0x79')]=_0x560b5d[_0xce3a('0x78')];_0x560b5d[_0xce3a('0x29')][_0xce3a('0x7a')]=_0xce3a('0x5c');return respondWithRpcPromise(_0xce3a('0x7b'),_0xce3a('0x7b'),{'event':_0xce3a('0x7c'),'message':_0x560b5d['message']},client9002)['then'](function(){return _0x560b5d;});}return _0x560b5d;}return null;})[_0xce3a('0x21')](respondWithResult(_0x56e5f5,null))[_0xce3a('0x2a')](handleError(_0x56e5f5,null));};var interaction_log=require(_0xce3a('0x5a'))('openchannel-interactions');exports[_0xce3a('0x7d')]=function(_0x348b9b,_0x44f292,_0x1bd79f){var _0x1f867d={'agent':{},'channel':_0xce3a('0x5d')};if(_0x348b9b[_0xce3a('0x58')]['id']){delete _0x348b9b[_0xce3a('0x58')]['id'];}_0x348b9b['body']['UserId']=_0x348b9b[_0xce3a('0x58')][_0xce3a('0x62')]||_0x348b9b['user']['id'];_0x1f867d[_0xce3a('0x73')]['id']=_0x348b9b[_0xce3a('0x58')]['UserId'];return db[_0xce3a('0x4e')]['find']({'where':{'id':_0x348b9b[_0xce3a('0x53')]['id'],'UserId':null}})[_0xce3a('0x21')](handleEntityNotFound(_0x44f292,null))[_0xce3a('0x21')](function(_0x20d707){if(_0x20d707){_0x1f867d[_0xce3a('0x29')]=_0x20d707[_0xce3a('0x63')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x20d707['OpenchannelInteractionId']}});}return null;})[_0xce3a('0x21')](handleEntityNotFound(_0x44f292,null))['then'](function(_0x225f43){if(_0x225f43){_0x1f867d[_0xce3a('0x67')]=_0x225f43[_0xce3a('0x63')]({'plain':!![]});interaction_log[_0xce3a('0x22')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x348b9b[_0xce3a('0x69')]['id'],_0x348b9b['user']['name'],_0x348b9b[_0xce3a('0x69')][_0xce3a('0x6a')],_0x1f867d[_0xce3a('0x67')]['id'],_0x348b9b[_0xce3a('0x58')]?JSON[_0xce3a('0x6b')](_0x348b9b[_0xce3a('0x58')]):_0xce3a('0x6c'));return respondWithRpcPromise('RejectMessage',_0xce3a('0x7e'),_0x1f867d);}return null;})[_0xce3a('0x21')](function(_0x2f162d){var _0x269f6f=_0xce3a('0x7f')+_0x2f162d[_0xce3a('0x29')][_0xce3a('0x80')];return db['sequelize'][_0xce3a('0x3d')](_0x269f6f,{'type':db[_0xce3a('0x70')][_0xce3a('0x81')][_0xce3a('0x82')],'raw':!![]})['then'](function(_0x3e09a6){return _0x3e09a6;});})[_0xce3a('0x21')](function(_0x54b6a8){if(_0x54b6a8){_0x1f867d[_0xce3a('0x29')][_0xce3a('0x71')]=_0x54b6a8[0x0];if(!_0x348b9b[_0xce3a('0x58')][_0xce3a('0x62')])return;return db[_0xce3a('0x72')]['find']({'where':{'id':_0x348b9b[_0xce3a('0x58')][_0xce3a('0x62')],'role':_0xce3a('0x73')},'attributes':['id',_0xce3a('0x37'),'fullname',_0xce3a('0x83'),_0xce3a('0x75')],'raw':!![]});}return null;})['then'](function(_0x413ec0){if(!_0x413ec0)return null;_0x1f867d[_0xce3a('0x29')]['agent']=_0x413ec0;return _0x1f867d;})[_0xce3a('0x21')](function(_0x283f51){if(_0x283f51){_0x283f51[_0xce3a('0x29')][_0xce3a('0x76')]=util[_0xce3a('0x60')](_0xce3a('0x77'),_0x348b9b[_0xce3a('0x69')][_0xce3a('0x37')]);_0x283f51[_0xce3a('0x29')]['channel']=_0x1f867d[_0xce3a('0x78')];_0x283f51['message'][_0xce3a('0x79')]=_0x1f867d[_0xce3a('0x78')];_0x283f51[_0xce3a('0x29')][_0xce3a('0x7a')]=_0xce3a('0x7d');respondWithRpcPromise('EventManager',_0xce3a('0x7b'),{'event':'rejectmessage','message':_0x283f51[_0xce3a('0x29')]},client9002);return _0x1f867d;}return null;})[_0xce3a('0x21')](respondWithResult(_0x44f292,null))['catch'](handleError(_0x44f292,null));};
\ No newline at end of file
+var _0x597a=['EventManager','acceptmessage','../../config/logger','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','SELECT','interface','SIP/%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','jayson/promise','http','client','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','update','destroy','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','pick','filter','VIRTUAL','options','OpenchannelMessage','include','findAll','rows','show','params','length','merge','find','create','body','describe','openchannel-interactions','accept','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','interaction','null','AcceptMessage','acceptMessage','sequelize','QueryTypes','contact','User','fullname','email','internal','channel','motionChannel','event'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x597a,0x10e));var _0xa597=function(_0x2b55b5,_0x78505e){_0x2b55b5=_0x2b55b5-0x0;var _0x103d28=_0x597a[_0x2b55b5];return _0x103d28;};'use strict';var emlformat=require(_0xa597('0x0'));var rimraf=require(_0xa597('0x1'));var zipdir=require(_0xa597('0x2'));var jsonpatch=require(_0xa597('0x3'));var rp=require('request-promise');var moment=require(_0xa597('0x4'));var BPromise=require(_0xa597('0x5'));var Mustache=require(_0xa597('0x6'));var util=require('util');var path=require(_0xa597('0x7'));var sox=require(_0xa597('0x8'));var csv=require(_0xa597('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa597('0xa'));var _=require(_0xa597('0xb'));var squel=require('squel');var crypto=require(_0xa597('0xc'));var jsforce=require(_0xa597('0xd'));var deskjs=require(_0xa597('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa597('0xf'));var Papa=require(_0xa597('0x10'));var Redis=require(_0xa597('0x11'));var authService=require(_0xa597('0x12'));var qs=require(_0xa597('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa597('0x14'));var logger=require('../../config/logger')(_0xa597('0x15'));var utils=require('../../config/utils');var config=require(_0xa597('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa597('0x17'))['db'];config[_0xa597('0x18')]=_['defaults'](config[_0xa597('0x18')],{'host':_0xa597('0x19'),'port':0x18eb});var socket=require(_0xa597('0x1a'))(new Redis(config[_0xa597('0x18')]));require('./openchannelMessage.socket')[_0xa597('0x1b')](socket);var jayson=require(_0xa597('0x1c'));var client=jayson['client'][_0xa597('0x1d')]({'port':0x232c});var client9002=jayson[_0xa597('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34e167,_0x1cdef2,_0x1d2631,_0x5e958d){return new BPromise(function(_0x4a2514,_0xf54b6f){var _0x43e25f=_0x5e958d||client;return _0x43e25f[_0xa597('0x1f')](_0x34e167,_0x1d2631)[_0xa597('0x20')](function(_0x84811f){logger[_0xa597('0x21')](_0xa597('0x22'),_0x1cdef2,_0xa597('0x23'));logger['debug'](_0xa597('0x24'),_0x1cdef2,_0xa597('0x23'),JSON[_0xa597('0x25')](_0x84811f));if(_0x84811f[_0xa597('0x26')]){if(_0x84811f[_0xa597('0x26')]['code']===0x1f4){logger[_0xa597('0x26')]('OpenchannelMessage,\x20%s,\x20%s',_0x1cdef2,_0x84811f[_0xa597('0x26')][_0xa597('0x27')]);return _0xf54b6f(_0x84811f[_0xa597('0x26')][_0xa597('0x27')]);}logger[_0xa597('0x26')](_0xa597('0x22'),_0x1cdef2,_0x84811f[_0xa597('0x26')][_0xa597('0x27')]);return _0x4a2514(_0x84811f[_0xa597('0x26')][_0xa597('0x27')]);}else{logger[_0xa597('0x21')]('OpenchannelMessage,\x20%s,\x20%s',_0x1cdef2,_0xa597('0x23'));_0x4a2514(_0x84811f[_0xa597('0x28')][_0xa597('0x27')]);}})[_0xa597('0x29')](function(_0x3c5971){logger[_0xa597('0x26')](_0xa597('0x22'),_0x1cdef2,_0x3c5971);_0xf54b6f(_0x3c5971);});});}function respondWithStatusCode(_0x38d06c,_0x423a95){_0x423a95=_0x423a95||0xcc;return function(_0x481418){if(_0x481418){return _0x38d06c[_0xa597('0x2a')](_0x423a95);}return _0x38d06c[_0xa597('0x2b')](_0x423a95)[_0xa597('0x2c')]();};}function respondWithResult(_0x3d68a4,_0x27560d){_0x27560d=_0x27560d||0xc8;return function(_0xfaed4e){if(_0xfaed4e){return _0x3d68a4[_0xa597('0x2b')](_0x27560d)[_0xa597('0x2d')](_0xfaed4e);}};}function respondWithFilteredResult(_0xfd6429,_0x1a7a55){return function(_0x3a8903){if(_0x3a8903){var _0x28c54d=typeof _0x1a7a55[_0xa597('0x2e')]===_0xa597('0x2f')&&typeof _0x1a7a55['limit']===_0xa597('0x2f');var _0x5e6693=_0x3a8903['count'];var _0xd13805=_0x28c54d?0x0:_0x1a7a55['offset'];var _0x2b3c08=_0x28c54d?_0x3a8903[_0xa597('0x30')]:_0x1a7a55[_0xa597('0x2e')]+_0x1a7a55['limit'];var _0x5f1d6c;if(_0x2b3c08>=_0x5e6693){_0x2b3c08=_0x5e6693;_0x5f1d6c=0xc8;}else{_0x5f1d6c=0xce;}_0xfd6429[_0xa597('0x2b')](_0x5f1d6c);return _0xfd6429[_0xa597('0x31')](_0xa597('0x32'),_0xd13805+'-'+_0x2b3c08+'/'+_0x5e6693)[_0xa597('0x2d')](_0x3a8903);}return null;};}function patchUpdates(_0x388023){return function(_0x2d95f6){try{jsonpatch[_0xa597('0x33')](_0x2d95f6,_0x388023,!![]);}catch(_0x4c5f69){return BPromise[_0xa597('0x34')](_0x4c5f69);}return _0x2d95f6['save']();};}function saveUpdates(_0x14de91,_0x264475){return function(_0x4035d4){if(_0x4035d4){return _0x4035d4[_0xa597('0x35')](_0x14de91)['then'](function(_0x87c933){return _0x87c933;});}return null;};}function removeEntity(_0x5d7c38,_0x4e0c6c){return function(_0xb30fb0){if(_0xb30fb0){return _0xb30fb0[_0xa597('0x36')]()[_0xa597('0x20')](function(){_0x5d7c38[_0xa597('0x2b')](0xcc)[_0xa597('0x2c')]();});}};}function handleEntityNotFound(_0x1e4a0d,_0x3d512e){return function(_0x1ee4f7){if(!_0x1ee4f7){_0x1e4a0d['sendStatus'](0x194);}return _0x1ee4f7;};}function handleError(_0x10a97d,_0x4bad7d){_0x4bad7d=_0x4bad7d||0x1f4;return function(_0x48df8f){logger[_0xa597('0x26')](_0x48df8f[_0xa597('0x37')]);if(_0x48df8f[_0xa597('0x38')]){delete _0x48df8f[_0xa597('0x38')];}_0x10a97d[_0xa597('0x2b')](_0x4bad7d)[_0xa597('0x39')](_0x48df8f);};}exports[_0xa597('0x3a')]=function(_0x4f628b,_0xc73386){var _0x3e63db={},_0x2c2052={},_0x163b7b={'count':0x0,'rows':[]};var _0x594000=_[_0xa597('0x3b')](db['OpenchannelMessage'][_0xa597('0x3c')],function(_0x27b9d1){return{'name':_0x27b9d1['fieldName'],'type':_0x27b9d1[_0xa597('0x3d')][_0xa597('0x3e')]};});_0x2c2052[_0xa597('0x3f')]=_['map'](_0x594000,_0xa597('0x38'));_0x2c2052[_0xa597('0x40')]=_[_0xa597('0x41')](_0x4f628b[_0xa597('0x40')]);_0x2c2052[_0xa597('0x42')]=_[_0xa597('0x43')](_0x2c2052['model'],_0x2c2052[_0xa597('0x40')]);_0x3e63db[_0xa597('0x44')]=_['intersection'](_0x2c2052[_0xa597('0x3f')],qs[_0xa597('0x45')](_0x4f628b[_0xa597('0x40')][_0xa597('0x45')]));_0x3e63db[_0xa597('0x44')]=_0x3e63db[_0xa597('0x44')]['length']?_0x3e63db['attributes']:_0x2c2052['model'];if(!_0x4f628b['query'][_0xa597('0x46')](_0xa597('0x47'))){_0x3e63db[_0xa597('0x48')]=qs[_0xa597('0x48')](_0x4f628b[_0xa597('0x40')][_0xa597('0x48')]);_0x3e63db[_0xa597('0x2e')]=qs[_0xa597('0x2e')](_0x4f628b[_0xa597('0x40')][_0xa597('0x2e')]);}_0x3e63db['order']=qs[_0xa597('0x49')](_0x4f628b['query']['sort']);_0x3e63db[_0xa597('0x4a')]=qs['filters'](_[_0xa597('0x4b')](_0x4f628b[_0xa597('0x40')],_0x2c2052[_0xa597('0x42')]),_0x594000);if(_0x4f628b[_0xa597('0x40')][_0xa597('0x4c')]){_0x3e63db[_0xa597('0x4a')]=_['merge'](_0x3e63db[_0xa597('0x4a')],{'$or':_['map'](_0x594000,function(_0x300f40){if(_0x300f40[_0xa597('0x3d')]!==_0xa597('0x4d')){var _0x48df69={};_0x48df69[_0x300f40[_0xa597('0x38')]]={'$like':'%'+_0x4f628b[_0xa597('0x40')][_0xa597('0x4c')]+'%'};return _0x48df69;}})});}_0x3e63db=_['merge']({},_0x3e63db,_0x4f628b[_0xa597('0x4e')]);var _0x2081b2={'where':_0x3e63db[_0xa597('0x4a')]};return db[_0xa597('0x4f')][_0xa597('0x30')](_0x2081b2)[_0xa597('0x20')](function(_0x39889b){_0x163b7b[_0xa597('0x30')]=_0x39889b;if(_0x4f628b[_0xa597('0x40')]['includeAll']){_0x3e63db[_0xa597('0x50')]=[{'all':!![]}];}return db[_0xa597('0x4f')][_0xa597('0x51')](_0x3e63db);})[_0xa597('0x20')](function(_0x1050fe){_0x163b7b[_0xa597('0x52')]=_0x1050fe;return _0x163b7b;})[_0xa597('0x20')](respondWithFilteredResult(_0xc73386,_0x3e63db))[_0xa597('0x29')](handleError(_0xc73386,null));};exports[_0xa597('0x53')]=function(_0x3070fd,_0x1e339a){var _0x1acbc6={'raw':!![],'where':{'id':_0x3070fd[_0xa597('0x54')]['id']}},_0x557576={};_0x557576['model']=_['keys'](db[_0xa597('0x4f')]['rawAttributes']);_0x557576[_0xa597('0x40')]=_[_0xa597('0x41')](_0x3070fd[_0xa597('0x40')]);_0x557576[_0xa597('0x42')]=_[_0xa597('0x43')](_0x557576[_0xa597('0x3f')],_0x557576['query']);_0x1acbc6[_0xa597('0x44')]=_[_0xa597('0x43')](_0x557576[_0xa597('0x3f')],qs['fields'](_0x3070fd[_0xa597('0x40')][_0xa597('0x45')]));_0x1acbc6[_0xa597('0x44')]=_0x1acbc6['attributes'][_0xa597('0x55')]?_0x1acbc6[_0xa597('0x44')]:_0x557576[_0xa597('0x3f')];if(_0x3070fd[_0xa597('0x40')]['includeAll']){_0x1acbc6[_0xa597('0x50')]=[{'all':!![]}];}_0x1acbc6=_[_0xa597('0x56')]({},_0x1acbc6,_0x3070fd[_0xa597('0x4e')]);return db[_0xa597('0x4f')][_0xa597('0x57')](_0x1acbc6)[_0xa597('0x20')](handleEntityNotFound(_0x1e339a,null))[_0xa597('0x20')](respondWithResult(_0x1e339a,null))[_0xa597('0x29')](handleError(_0x1e339a,null));};exports['create']=function(_0x42dac9,_0x3f1c07){return db[_0xa597('0x4f')][_0xa597('0x58')](_0x42dac9[_0xa597('0x59')],{})[_0xa597('0x20')](respondWithResult(_0x3f1c07,0xc9))[_0xa597('0x29')](handleError(_0x3f1c07,null));};exports[_0xa597('0x35')]=function(_0x3c7a4c,_0x1343d2){if(_0x3c7a4c[_0xa597('0x59')]['id']){delete _0x3c7a4c[_0xa597('0x59')]['id'];}return db[_0xa597('0x4f')]['find']({'where':{'id':_0x3c7a4c[_0xa597('0x54')]['id']}})['then'](handleEntityNotFound(_0x1343d2,null))[_0xa597('0x20')](saveUpdates(_0x3c7a4c['body'],null))['then'](respondWithResult(_0x1343d2,null))['catch'](handleError(_0x1343d2,null));};exports[_0xa597('0x36')]=function(_0x514c40,_0x27fd39){return db[_0xa597('0x4f')][_0xa597('0x57')]({'where':{'id':_0x514c40[_0xa597('0x54')]['id']}})[_0xa597('0x20')](handleEntityNotFound(_0x27fd39,null))[_0xa597('0x20')](removeEntity(_0x27fd39,null))['catch'](handleError(_0x27fd39,null));};exports[_0xa597('0x5a')]=function(_0x5edd16,_0x2061f1){return db[_0xa597('0x4f')][_0xa597('0x5a')]()['then'](respondWithResult(_0x2061f1,null))[_0xa597('0x29')](handleError(_0x2061f1,null));};var interaction_log=require('../../config/logger')(_0xa597('0x5b'));exports[_0xa597('0x5c')]=function(_0x508729,_0x30dfec,_0x2d78f0){var _0x54fbc8={'agent':{},'channel':_0xa597('0x5d')};if(_0x508729['body']['id']){delete _0x508729['body']['id'];}_0x508729['body']['read']=!![];_0x508729[_0xa597('0x59')][_0xa597('0x5e')]=moment()[_0xa597('0x5f')](_0xa597('0x60'));_0x508729[_0xa597('0x59')]['UserId']=_0x508729[_0xa597('0x59')][_0xa597('0x61')]||_0x508729['user']['id'];_0x54fbc8[_0xa597('0x62')]['id']=_0x508729[_0xa597('0x59')][_0xa597('0x61')];return db[_0xa597('0x4f')][_0xa597('0x57')]({'where':{'id':_0x508729[_0xa597('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x30dfec,null))[_0xa597('0x20')](saveUpdates(_0x508729['body'],null))[_0xa597('0x20')](function(_0x182874){if(_0x182874){_0x54fbc8[_0xa597('0x27')]=_0x182874['get']({'plain':!![]});return db[_0xa597('0x63')]['find']({'where':{'id':_0x182874[_0xa597('0x64')]}});}return null;})[_0xa597('0x20')](handleEntityNotFound(_0x30dfec,null))['then'](function(_0x39dc52){if(_0x39dc52){return _0x39dc52['update']({'UserId':_0x508729[_0xa597('0x59')]['UserId'],'read1stAt':_[_0xa597('0x65')](_0x39dc52[_0xa597('0x66')])?moment()[_0xa597('0x5f')](_0xa597('0x60')):undefined});}return null;})['then'](function(_0x52098a){if(_0x52098a){_0x54fbc8['interaction']=_0x52098a[_0xa597('0x67')]({'plain':!![]});interaction_log[_0xa597('0x21')](_0xa597('0x68'),_0x508729[_0xa597('0x69')]['id'],_0x508729[_0xa597('0x69')][_0xa597('0x38')],_0x508729[_0xa597('0x69')]['role'],_0x54fbc8[_0xa597('0x6a')]['id'],_0x508729[_0xa597('0x59')]?JSON[_0xa597('0x25')](_0x508729[_0xa597('0x59')]):_0xa597('0x6b'));return respondWithRpcPromise(_0xa597('0x6c'),_0xa597('0x6d'),_0x54fbc8);}return null;})['then'](function(_0x384b48){var _0x12ebbf='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x384b48[_0xa597('0x27')]['ContactId'];return db[_0xa597('0x6e')][_0xa597('0x40')](_0x12ebbf,{'type':db['Sequelize'][_0xa597('0x6f')]['SELECT'],'raw':!![]})[_0xa597('0x20')](function(_0x53422d){return _0x53422d;});})[_0xa597('0x20')](function(_0x3dadb9){if(_0x3dadb9){_0x54fbc8['message'][_0xa597('0x70')]=_0x3dadb9[0x0];if(!_0x508729[_0xa597('0x59')]['UserId'])return;return db[_0xa597('0x71')][_0xa597('0x57')]({'where':{'id':_0x508729[_0xa597('0x59')][_0xa597('0x61')],'role':_0xa597('0x62')},'attributes':['id',_0xa597('0x38'),_0xa597('0x72'),_0xa597('0x73'),_0xa597('0x74')],'raw':!![]});}return null;})[_0xa597('0x20')](function(_0x3ae77d){if(!_0x3ae77d)return null;_0x54fbc8[_0xa597('0x27')][_0xa597('0x62')]=_0x3ae77d;return _0x54fbc8;})[_0xa597('0x20')](function(_0xf57fa0){if(_0xf57fa0){if(_0x508729[_0xa597('0x59')]['manual']){_0x54fbc8[_0xa597('0x27')]['interface']=util['format']('SIP/%s',_0x508729['user'][_0xa597('0x38')]);_0x54fbc8[_0xa597('0x27')][_0xa597('0x75')]=_0x54fbc8[_0xa597('0x75')];_0x54fbc8[_0xa597('0x27')][_0xa597('0x76')]=_0x54fbc8[_0xa597('0x75')];_0x54fbc8[_0xa597('0x27')][_0xa597('0x77')]='accept';return respondWithRpcPromise(_0xa597('0x78'),_0xa597('0x78'),{'event':_0xa597('0x79'),'message':_0x54fbc8[_0xa597('0x27')]},client9002)[_0xa597('0x20')](function(){return _0x54fbc8;});}return _0x54fbc8;}return null;})[_0xa597('0x20')](respondWithResult(_0x30dfec,null))[_0xa597('0x29')](handleError(_0x30dfec,null));};var interaction_log=require(_0xa597('0x7a'))(_0xa597('0x5b'));exports[_0xa597('0x34')]=function(_0x462e3c,_0x2ea9b8,_0x2512e6){var _0x8cf6d8={'agent':{},'channel':_0xa597('0x5d')};if(_0x462e3c[_0xa597('0x59')]['id']){delete _0x462e3c['body']['id'];}_0x462e3c[_0xa597('0x59')]['UserId']=_0x462e3c['body'][_0xa597('0x61')]||_0x462e3c[_0xa597('0x69')]['id'];_0x8cf6d8['agent']['id']=_0x462e3c[_0xa597('0x59')][_0xa597('0x61')];return db[_0xa597('0x4f')][_0xa597('0x57')]({'where':{'id':_0x462e3c['params']['id'],'UserId':null}})[_0xa597('0x20')](handleEntityNotFound(_0x2ea9b8,null))[_0xa597('0x20')](function(_0x206b29){if(_0x206b29){_0x8cf6d8[_0xa597('0x27')]=_0x206b29['get']({'plain':!![]});return db[_0xa597('0x63')]['find']({'where':{'id':_0x206b29['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x2ea9b8,null))['then'](function(_0x3f043a){if(_0x3f043a){_0x8cf6d8[_0xa597('0x6a')]=_0x3f043a[_0xa597('0x67')]({'plain':!![]});interaction_log[_0xa597('0x21')](_0xa597('0x7b'),_0x462e3c[_0xa597('0x69')]['id'],_0x462e3c[_0xa597('0x69')][_0xa597('0x38')],_0x462e3c['user']['role'],_0x8cf6d8['interaction']['id'],_0x462e3c[_0xa597('0x59')]?JSON[_0xa597('0x25')](_0x462e3c[_0xa597('0x59')]):_0xa597('0x6b'));return respondWithRpcPromise(_0xa597('0x7c'),_0xa597('0x7d'),_0x8cf6d8);}return null;})[_0xa597('0x20')](function(_0xd1628d){var _0x400a99='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xd1628d[_0xa597('0x27')]['ContactId'];return db['sequelize']['query'](_0x400a99,{'type':db[_0xa597('0x7e')][_0xa597('0x6f')][_0xa597('0x7f')],'raw':!![]})['then'](function(_0x2d9aa0){return _0x2d9aa0;});})[_0xa597('0x20')](function(_0x596958){if(_0x596958){_0x8cf6d8[_0xa597('0x27')]['contact']=_0x596958[0x0];if(!_0x462e3c[_0xa597('0x59')][_0xa597('0x61')])return;return db[_0xa597('0x71')][_0xa597('0x57')]({'where':{'id':_0x462e3c[_0xa597('0x59')][_0xa597('0x61')],'role':'agent'},'attributes':['id','name',_0xa597('0x72'),'email',_0xa597('0x74')],'raw':!![]});}return null;})[_0xa597('0x20')](function(_0x3624fe){if(!_0x3624fe)return null;_0x8cf6d8[_0xa597('0x27')][_0xa597('0x62')]=_0x3624fe;return _0x8cf6d8;})[_0xa597('0x20')](function(_0x472602){if(_0x472602){_0x472602['message'][_0xa597('0x80')]=util[_0xa597('0x5f')](_0xa597('0x81'),_0x462e3c[_0xa597('0x69')][_0xa597('0x38')]);_0x472602['message'][_0xa597('0x75')]=_0x8cf6d8[_0xa597('0x75')];_0x472602[_0xa597('0x27')][_0xa597('0x76')]=_0x8cf6d8[_0xa597('0x75')];_0x472602[_0xa597('0x27')][_0xa597('0x77')]=_0xa597('0x34');respondWithRpcPromise(_0xa597('0x78'),_0xa597('0x78'),{'event':'rejectmessage','message':_0x472602[_0xa597('0x27')]},client9002);return _0x8cf6d8;}return null;})[_0xa597('0x20')](respondWithResult(_0x2ea9b8,null))[_0xa597('0x29')](handleError(_0x2ea9b8,null));};
\ No newline at end of file
index 115e6d8..3a19cf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x414e=['emit','hasOwnProperty','save','update','remove'];(function(_0x7821b6,_0x47ce5f){var _0x3258c7=function(_0x436a61){while(--_0x436a61){_0x7821b6['push'](_0x7821b6['shift']());}};_0x3258c7(++_0x47ce5f);}(_0x414e,0x183));var _0xe414=function(_0x858382,_0xda09c9){_0x858382=_0x858382-0x0;var _0xca7a0b=_0x414e[_0x858382];return _0xca7a0b;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe414('0x0'),'afterUpdate':_0xe414('0x1'),'afterDestroy':_0xe414('0x2')};function emitEvent(_0x30b014){return function(_0xdc6bb6,_0x384876,_0x244198){OpenchannelMessageEvents[_0xe414('0x3')](_0x30b014+':'+_0xdc6bb6['id'],_0xdc6bb6);OpenchannelMessageEvents[_0xe414('0x3')](_0x30b014,_0xdc6bb6);_0x244198(null);};}for(var e in events){if(events[_0xe414('0x4')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xd63e=['emit','hasOwnProperty','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x79cd47,_0x16102d){var _0x3b9484=function(_0x23db95){while(--_0x23db95){_0x79cd47['push'](_0x79cd47['shift']());}};_0x3b9484(++_0x16102d);}(_0xd63e,0x122));var _0xed63=function(_0xc1fc6e,_0x4ad9c3){_0xc1fc6e=_0xc1fc6e-0x0;var _0x163610=_0xd63e[_0xc1fc6e];return _0x163610;};'use strict';var EventEmitter=require(_0xed63('0x0'));var OpenchannelMessage=require(_0xed63('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xed63('0x2')](0x0);var events={'afterCreate':_0xed63('0x3'),'afterUpdate':_0xed63('0x4'),'afterDestroy':_0xed63('0x5')};function emitEvent(_0x316abe){return function(_0x36ded7,_0x30f4bd,_0x32c739){OpenchannelMessageEvents['emit'](_0x316abe+':'+_0x36ded7['id'],_0x36ded7);OpenchannelMessageEvents[_0xed63('0x6')](_0x316abe,_0x36ded7);_0x32c739(null);};}for(var e in events){if(events[_0xed63('0x7')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
index 16fcda1..a0c4307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2c2=['lodash','util','../../config/logger','moment','bluebird','path','rimraf','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','models','get','direction','toLowerCase','secret','isNil','UserId','findOne','OpenchannelInteractionId','then','update','createdAt','catch','error','out','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','OpenchannelInteraction','Interactions','Contact','keys','info','afterCreate','replyUri','length','Interaction','method','GET','OpenchannelMessage,\x20%s,\x20%s','format','threadId','inspect','finally','utf8mb4'];(function(_0x3104dd,_0x524bba){var _0x239ad8=function(_0x466f93){while(--_0x466f93){_0x3104dd['push'](_0x3104dd['shift']());}};_0x239ad8(++_0x524bba);}(_0xe2c2,0x96));var _0x2e2c=function(_0x113fb2,_0x4e4666){_0x113fb2=_0x113fb2-0x0;var _0xce5ef=_0xe2c2[_0x113fb2];return _0xce5ef;};'use strict';var _=require(_0x2e2c('0x0'));var util=require(_0x2e2c('0x1'));var logger=require(_0x2e2c('0x2'))('api');var moment=require(_0x2e2c('0x3'));var BPromise=require(_0x2e2c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2e2c('0x5'));var rimraf=require(_0x2e2c('0x6'));var config=require('../../config/environment');var attributes=require(_0x2e2c('0x7'));module[_0x2e2c('0x8')]=function(_0x1c3a9c,_0x5cc90a){return _0x1c3a9c['define'](_0x2e2c('0x9'),attributes,{'tableName':_0x2e2c('0xa'),'paranoid':![],'indexes':[{'name':_0x2e2c('0xb'),'fields':[_0x2e2c('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1de41c,_0x2c8af3,_0x14ec20){var _0x5a9f1c=_0x1c3a9c[_0x2e2c('0xd')];var _0x1a9960=_0x1de41c[_0x2e2c('0xe')]({'plain':!![]});if(_0x1a9960[_0x2e2c('0xf')]['toLowerCase']()==='in'||_0x1a9960[_0x2e2c('0xf')][_0x2e2c('0x10')]()==='out'&&!_0x1a9960[_0x2e2c('0x11')]&&!_[_0x2e2c('0x12')](_0x1a9960[_0x2e2c('0x13')])){_0x5a9f1c['OpenchannelInteraction'][_0x2e2c('0x14')]({'where':{'id':_0x1a9960[_0x2e2c('0x15')]}})[_0x2e2c('0x16')](function(_0x383a08){if(_0x383a08){_0x383a08[_0x2e2c('0x17')]({'lastMsgAt':_0x1a9960[_0x2e2c('0x18')],'lastMsgDirection':_0x1a9960[_0x2e2c('0xf')][_0x2e2c('0x10')]()});}})[_0x2e2c('0x19')](function(_0x39b2ea){console[_0x2e2c('0x1a')](_0x39b2ea);});}if(_0x1a9960[_0x2e2c('0xf')]===_0x2e2c('0x1b')&&!_0x1a9960[_0x2e2c('0x11')]){var _0xca1533;_0x5a9f1c[_0x2e2c('0x1c')][_0x2e2c('0x1d')]()['then'](function(_0x53da3c){return _0x5a9f1c[_0x2e2c('0x1e')][_0x2e2c('0x1f')]({'where':{'id':_0x1a9960[_0x2e2c('0x20')]},'include':[{'model':_0x5a9f1c[_0x2e2c('0x21')],'as':_0x2e2c('0x22'),'where':{'id':_0x1a9960[_0x2e2c('0x15')]},'limit':0x1,'include':[{'model':_0x5a9f1c[_0x2e2c('0x1c')],'as':_0x2e2c('0x23'),'attributes':_[_0x2e2c('0x24')](_0x53da3c)}]}]});})[_0x2e2c('0x16')](function(_0x33e5f1){_0xca1533=_0x33e5f1[_0x2e2c('0xe')]({'plain':!![]});if(_0xca1533&&_0xca1533['replyUri']){logger[_0x2e2c('0x25')]('OpenchannelMessage,\x20%s,\x20%s',_0x2e2c('0x26'),util['format']('Forwarding\x20message\x20%d\x20to\x20%s',_0x1a9960['id'],_0xca1533[_0x2e2c('0x27')]));if(_0xca1533[_0x2e2c('0x22')]&&_0xca1533[_0x2e2c('0x22')][_0x2e2c('0x28')]){_0x1a9960[_0x2e2c('0x29')]=_['omit'](_0xca1533[_0x2e2c('0x22')][0x0],_0x2e2c('0x23'));_0x1a9960['Contact']=_0xca1533['Interactions'][0x0][_0x2e2c('0x23')];}var _0x2c8af3={'method':'POST','uri':encodeURI(_0xca1533[_0x2e2c('0x27')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x2c8af3[_0x2e2c('0x2a')]){case _0x2e2c('0x2b'):_0x2c8af3['qs']=_0x1a9960;break;case'POST':_0x2c8af3[_0x2e2c('0xc')]=_0x1a9960;break;}return rp(_0x2c8af3)[_0x2e2c('0x16')](function(_0x2d23ba){logger['info'](_0x2e2c('0x2c'),_0x2e2c('0x26'),util[_0x2e2c('0x2d')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x1a9960['id'],_0xca1533[_0x2e2c('0x27')]));if(_0x2d23ba['body'][_0x2e2c('0x2e')]&&_0x2d23ba[_0x2e2c('0xc')][_0x2e2c('0x2e')]!=_0x1a9960[_0x2e2c('0x29')][_0x2e2c('0x2e')]){return _0x5a9f1c[_0x2e2c('0x21')]['update']({'threadId':_0x2d23ba[_0x2e2c('0xc')][_0x2e2c('0x2e')]},{'where':{'id':_0x1a9960[_0x2e2c('0x29')]['id']}});}else{return;}})[_0x2e2c('0x16')](function(){return _0x1de41c['update']({'read':!![]});})[_0x2e2c('0x19')](function(_0x9faf04){logger[_0x2e2c('0x1a')](_0x2e2c('0x2c'),_0x2e2c('0x26'),util[_0x2e2c('0x2f')](_0x9faf04,{'showHidden':![],'depth':null}));_0x14ec20();});}else{_0x14ec20();}})[_0x2e2c('0x30')](function(){_0x14ec20();});}else{_0x14ec20();}}},'charset':_0x2e2c('0x31'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x11f4=['replyUri','OpenchannelMessage,\x20%s,\x20%s','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length','Interaction','omit','POST','method','info','afterCreate','format','threadId','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','define','OpenchannelMessage','openchannel_messages','body','FULLTEXT','direction','out','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','update','createdAt','catch','CmContact','describe','then','Contact','keys','get'];(function(_0x1d6768,_0x45c63f){var _0x2b3383=function(_0x3de615){while(--_0x3de615){_0x1d6768['push'](_0x1d6768['shift']());}};_0x2b3383(++_0x45c63f);}(_0x11f4,0x14b));var _0x411f=function(_0x44d62d,_0x128717){_0x44d62d=_0x44d62d-0x0;var _0xd4383f=_0x11f4[_0x44d62d];return _0xd4383f;};'use strict';var _=require(_0x411f('0x0'));var util=require(_0x411f('0x1'));var logger=require(_0x411f('0x2'))(_0x411f('0x3'));var moment=require('moment');var BPromise=require(_0x411f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x411f('0x5'));var rimraf=require(_0x411f('0x6'));var config=require(_0x411f('0x7'));var attributes=require('./openchannelMessage.attributes');module['exports']=function(_0xa456ce,_0x6a01ab){return _0xa456ce[_0x411f('0x8')](_0x411f('0x9'),attributes,{'tableName':_0x411f('0xa'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x411f('0xb')],'type':_0x411f('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xcf1ac1,_0x150d01,_0x574180){var _0x2938e4=_0xa456ce['models'];var _0x24208f=_0xcf1ac1['get']({'plain':!![]});if(_0x24208f[_0x411f('0xd')]['toLowerCase']()==='in'||_0x24208f[_0x411f('0xd')]['toLowerCase']()===_0x411f('0xe')&&!_0x24208f['secret']&&!_[_0x411f('0xf')](_0x24208f[_0x411f('0x10')])){_0x2938e4[_0x411f('0x11')][_0x411f('0x12')]({'where':{'id':_0x24208f[_0x411f('0x13')]}})['then'](function(_0x4764b6){if(_0x4764b6){_0x4764b6[_0x411f('0x14')]({'lastMsgAt':_0x24208f[_0x411f('0x15')],'lastMsgDirection':_0x24208f['direction']['toLowerCase']()});}})[_0x411f('0x16')](function(_0xc1e34c){console['error'](_0xc1e34c);});}if(_0x24208f[_0x411f('0xd')]===_0x411f('0xe')&&!_0x24208f['secret']){var _0xc7409e;_0x2938e4[_0x411f('0x17')][_0x411f('0x18')]()[_0x411f('0x19')](function(_0x49018a){return _0x2938e4['OpenchannelAccount']['find']({'where':{'id':_0x24208f['OpenchannelAccountId']},'include':[{'model':_0x2938e4[_0x411f('0x11')],'as':'Interactions','where':{'id':_0x24208f[_0x411f('0x13')]},'limit':0x1,'include':[{'model':_0x2938e4[_0x411f('0x17')],'as':_0x411f('0x1a'),'attributes':_[_0x411f('0x1b')](_0x49018a)}]}]});})[_0x411f('0x19')](function(_0x24f201){_0xc7409e=_0x24f201[_0x411f('0x1c')]({'plain':!![]});if(_0xc7409e&&_0xc7409e[_0x411f('0x1d')]){logger['info'](_0x411f('0x1e'),'afterCreate',util['format'](_0x411f('0x1f'),_0x24208f['id'],_0xc7409e[_0x411f('0x1d')]));if(_0xc7409e[_0x411f('0x20')]&&_0xc7409e['Interactions'][_0x411f('0x21')]){_0x24208f[_0x411f('0x22')]=_[_0x411f('0x23')](_0xc7409e[_0x411f('0x20')][0x0],_0x411f('0x1a'));_0x24208f[_0x411f('0x1a')]=_0xc7409e['Interactions'][0x0][_0x411f('0x1a')];}var _0x150d01={'method':_0x411f('0x24'),'uri':encodeURI(_0xc7409e['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x150d01[_0x411f('0x25')]){case'GET':_0x150d01['qs']=_0x24208f;break;case'POST':_0x150d01[_0x411f('0xb')]=_0x24208f;break;}return rp(_0x150d01)['then'](function(_0x2b8943){logger[_0x411f('0x26')](_0x411f('0x1e'),_0x411f('0x27'),util[_0x411f('0x28')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x24208f['id'],_0xc7409e[_0x411f('0x1d')]));if(_0x2b8943[_0x411f('0xb')][_0x411f('0x29')]&&_0x2b8943['body'][_0x411f('0x29')]!=_0x24208f[_0x411f('0x22')][_0x411f('0x29')]){return _0x2938e4[_0x411f('0x11')]['update']({'threadId':_0x2b8943[_0x411f('0xb')]['threadId']},{'where':{'id':_0x24208f[_0x411f('0x22')]['id']}});}else{return;}})[_0x411f('0x19')](function(){return _0xcf1ac1[_0x411f('0x14')]({'read':!![]});})[_0x411f('0x16')](function(_0x2826ac){logger[_0x411f('0x2a')]('OpenchannelMessage,\x20%s,\x20%s',_0x411f('0x27'),util['inspect'](_0x2826ac,{'showHidden':![],'depth':null}));_0x574180();});}else{_0x574180();}})['finally'](function(){_0x574180();});}else{_0x574180();}}},'charset':_0x411f('0x2b'),'collate':_0x411f('0x2c')});};
\ No newline at end of file
index 3b8287d..7cfe6e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','request'];(function(_0xbcea1,_0x469f9f){var _0x17fb47=function(_0x48f5e7){while(--_0x48f5e7){_0xbcea1['push'](_0xbcea1['shift']());}};_0x17fb47(++_0x469f9f);}(_0xdb28,0x106));var _0x8db2=function(_0x4cea9c,_0x5d47a3){_0x4cea9c=_0x4cea9c-0x0;var _0x3badc9=_0xdb28[_0x4cea9c];return _0x3badc9;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});config['redis']=_[_0x8db2('0xb')](config[_0x8db2('0xc')],{'host':_0x8db2('0xd'),'port':0x18eb});var socket=require(_0x8db2('0xe'))(new Redis(config[_0x8db2('0xc')]));require(_0x8db2('0xf'))[_0x8db2('0x10')](socket);function respondWithRpcPromise(_0x4ba340,_0x30dc90,_0x476216){return new BPromise(function(_0x1f62af,_0x57015f){return client[_0x8db2('0x11')](_0x4ba340,_0x476216)[_0x8db2('0x12')](function(_0x576475){logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));logger[_0x8db2('0x16')](_0x8db2('0x17'),_0x30dc90,'request\x20sent',JSON['stringify'](_0x576475));if(_0x576475[_0x8db2('0x18')]){if(_0x576475[_0x8db2('0x18')][_0x8db2('0x19')]===0x1f4){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x57015f(_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);}logger[_0x8db2('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x1f62af(_0x576475['error'][_0x8db2('0x1a')]);}else{logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));_0x1f62af(_0x576475[_0x8db2('0x1b')][_0x8db2('0x1a')]);}})['catch'](function(_0x5df464){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x5df464);_0x57015f(_0x5df464);});});}exports[_0x8db2('0x1c')]=function(_0x1b64e4){var _0x58562e=this;return new Promise(function(_0x431d60,_0x36a9ff){return db[_0x8db2('0x1d')][_0x8db2('0x1e')](_0x1b64e4[_0x8db2('0x1f')],{'raw':_0x1b64e4['options']?_0x1b64e4[_0x8db2('0x20')][_0x8db2('0x21')]===undefined?!![]:![]:!![]})[_0x8db2('0x12')](function(_0x125be2){logger[_0x8db2('0x13')](_0x8db2('0x1c'),_0x1b64e4);logger[_0x8db2('0x16')]('CreateOpenchannelMessage',_0x1b64e4,JSON[_0x8db2('0x22')](_0x125be2));_0x431d60(_0x125be2);})['catch'](function(_0x5725f0){logger['error']('CreateOpenchannelMessage',_0x5725f0[_0x8db2('0x1a')],_0x1b64e4);_0x36a9ff(_0x58562e[_0x8db2('0x18')](0x1f4,_0x5725f0[_0x8db2('0x1a')]));});});};
\ No newline at end of file
+var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xd6569e,_0x1d3bf1){var _0x1eb282=function(_0x39c282){while(--_0x39c282){_0xd6569e['push'](_0xd6569e['shift']());}};_0x1eb282(++_0x1d3bf1);}(_0x5f2f,0x73));var _0xf5f2=function(_0x13b110,_0xaed0f2){_0x13b110=_0x13b110-0x0;var _0xd52387=_0x5f2f[_0x13b110];return _0xd52387;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
index 393390f..00c4f87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f26=['save','remove','removeListener','register','length','openchannelMessage:','./openchannelMessage.events'];(function(_0x20d55d,_0x57bfba){var _0x390647=function(_0x15207b){while(--_0x15207b){_0x20d55d['push'](_0x20d55d['shift']());}};_0x390647(++_0x57bfba);}(_0x1f26,0xb5));var _0x61f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1f26[_0x3dd15e];return _0x231fd0;};'use strict';var OpenchannelMessageEvents=require(_0x61f2('0x0'));var events=[_0x61f2('0x1'),_0x61f2('0x2'),'update'];function createListener(_0x1d98a0,_0x41f9f4){return function(_0x230a1b){_0x41f9f4['emit'](_0x1d98a0,_0x230a1b);};}function removeListener(_0xeb21ac,_0x16bb5f){return function(){OpenchannelMessageEvents[_0x61f2('0x3')](_0xeb21ac,_0x16bb5f);};}exports[_0x61f2('0x4')]=function(_0x5e2e5a){for(var _0x22777b=0x0,_0x26eda4=events[_0x61f2('0x5')];_0x22777b<_0x26eda4;_0x22777b++){var _0x550c88=events[_0x22777b];var _0x2f0a4f=createListener(_0x61f2('0x6')+_0x550c88,_0x5e2e5a);OpenchannelMessageEvents['on'](_0x550c88,_0x2f0a4f);}};
\ No newline at end of file
+var _0x187d=['./openchannelMessage.events','remove','update','emit','removeListener','length','openchannelMessage:'];(function(_0x37a4cc,_0x1531a8){var _0x4ffbbf=function(_0x5d7be5){while(--_0x5d7be5){_0x37a4cc['push'](_0x37a4cc['shift']());}};_0x4ffbbf(++_0x1531a8);}(_0x187d,0x93));var _0xd187=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x187d[_0x46aff0];return _0x9d78cf;};'use strict';var OpenchannelMessageEvents=require(_0xd187('0x0'));var events=['save',_0xd187('0x1'),_0xd187('0x2')];function createListener(_0x44d5f6,_0x1cb41f){return function(_0x18498b){_0x1cb41f[_0xd187('0x3')](_0x44d5f6,_0x18498b);};}function removeListener(_0x58622a,_0x28fa0b){return function(){OpenchannelMessageEvents[_0xd187('0x4')](_0x58622a,_0x28fa0b);};}exports['register']=function(_0x1d2533){for(var _0x58ee7=0x0,_0x444a60=events[_0xd187('0x5')];_0x58ee7<_0x444a60;_0x58ee7++){var _0x28ce2f=events[_0x58ee7];var _0x2d6992=createListener(_0xd187('0x6')+_0x28ce2f,_0x1d2533);OpenchannelMessageEvents['on'](_0x28ce2f,_0x2d6992);}};
\ No newline at end of file
index 3720219..bd4e423 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5642=['util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','isAuthenticated','index','get','/describe','describe','show','/:id/teams','getAgents','post','create','/:id/users','addAgents','/:id','delete','removeTeams','removeAgents','multer'];(function(_0x5e848e,_0x287c69){var _0x1b4c4c=function(_0x47c3b8){while(--_0x47c3b8){_0x5e848e['push'](_0x5e848e['shift']());}};_0x1b4c4c(++_0x287c69);}(_0x5642,0x112));var _0x2564=function(_0x9e71c3,_0x221810){_0x9e71c3=_0x9e71c3-0x0;var _0x2fdd34=_0x5642[_0x9e71c3];return _0x2fdd34;};'use strict';var multer=require(_0x2564('0x0'));var util=require(_0x2564('0x1'));var path=require(_0x2564('0x2'));var timeout=require('connect-timeout');var express=require(_0x2564('0x3'));var router=express[_0x2564('0x4')]();var fs_extra=require(_0x2564('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2564('0x6'));var config=require(_0x2564('0x7'));var controller=require(_0x2564('0x8'));router['get']('/',auth[_0x2564('0x9')](),controller[_0x2564('0xa')]);router[_0x2564('0xb')](_0x2564('0xc'),auth[_0x2564('0x9')](),controller[_0x2564('0xd')]);router[_0x2564('0xb')]('/:id',auth[_0x2564('0x9')](),controller[_0x2564('0xe')]);router['get']('/:id/members',auth[_0x2564('0x9')](),controller['getMembers']);router['get'](_0x2564('0xf'),auth[_0x2564('0x9')](),controller['getTeams']);router[_0x2564('0xb')]('/:id/users',auth['isAuthenticated'](),controller[_0x2564('0x10')]);router[_0x2564('0x11')]('/',auth[_0x2564('0x9')](),controller[_0x2564('0x12')]);router[_0x2564('0x11')](_0x2564('0xf'),auth[_0x2564('0x9')](),controller['addTeams']);router[_0x2564('0x11')](_0x2564('0x13'),auth[_0x2564('0x9')](),controller[_0x2564('0x14')]);router['put'](_0x2564('0x15'),auth[_0x2564('0x9')](),controller['update']);router[_0x2564('0x16')](_0x2564('0x15'),auth[_0x2564('0x9')](),controller['destroy']);router[_0x2564('0x16')]('/:id/teams',auth[_0x2564('0x9')](),controller[_0x2564('0x17')]);router[_0x2564('0x16')](_0x2564('0x13'),auth[_0x2564('0x9')](),controller[_0x2564('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x0049=['removeTeams','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','/:id','update','delete'];(function(_0x146bc8,_0x20ebda){var _0x325eff=function(_0x22bc00){while(--_0x22bc00){_0x146bc8['push'](_0x146bc8['shift']());}};_0x325eff(++_0x20ebda);}(_0x0049,0xe3));var _0x9004=function(_0x13dc99,_0x2e7821){_0x13dc99=_0x13dc99-0x0;var _0x4c8451=_0x0049[_0x13dc99];return _0x4c8451;};'use strict';var multer=require(_0x9004('0x0'));var util=require(_0x9004('0x1'));var path=require(_0x9004('0x2'));var timeout=require(_0x9004('0x3'));var express=require('express');var router=express[_0x9004('0x4')]();var fs_extra=require(_0x9004('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9004('0x6'));var config=require(_0x9004('0x7'));var controller=require(_0x9004('0x8'));router[_0x9004('0x9')]('/',auth[_0x9004('0xa')](),controller[_0x9004('0xb')]);router['get']('/describe',auth[_0x9004('0xa')](),controller['describe']);router['get']('/:id',auth[_0x9004('0xa')](),controller[_0x9004('0xc')]);router[_0x9004('0x9')](_0x9004('0xd'),auth[_0x9004('0xa')](),controller['getMembers']);router[_0x9004('0x9')](_0x9004('0xe'),auth[_0x9004('0xa')](),controller[_0x9004('0xf')]);router['get'](_0x9004('0x10'),auth['isAuthenticated'](),controller[_0x9004('0x11')]);router[_0x9004('0x12')]('/',auth['isAuthenticated'](),controller[_0x9004('0x13')]);router[_0x9004('0x12')](_0x9004('0xe'),auth[_0x9004('0xa')](),controller[_0x9004('0x14')]);router[_0x9004('0x12')](_0x9004('0x10'),auth[_0x9004('0xa')](),controller['addAgents']);router[_0x9004('0x15')](_0x9004('0x16'),auth[_0x9004('0xa')](),controller[_0x9004('0x17')]);router[_0x9004('0x18')](_0x9004('0x16'),auth[_0x9004('0xa')](),controller['destroy']);router[_0x9004('0x18')](_0x9004('0xe'),auth['isAuthenticated'](),controller[_0x9004('0x19')]);router[_0x9004('0x18')](_0x9004('0x10'),auth[_0x9004('0xa')](),controller[_0x9004('0x1a')]);module[_0x9004('0x1b')]=router;
\ No newline at end of file
index a677016..225e65f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5808=['rrmemory','roundrobin','sequelize','exports','STRING','ENUM'];(function(_0x43dfcf,_0x31721d){var _0x4366aa=function(_0x3da937){while(--_0x3da937){_0x43dfcf['push'](_0x43dfcf['shift']());}};_0x4366aa(++_0x31721d);}(_0x5808,0xd4));var _0x8580=function(_0x10c51f,_0x11270f){_0x10c51f=_0x10c51f-0x0;var _0x56a0cd=_0x5808[_0x10c51f];return _0x56a0cd;};'use strict';var Sequelize=require(_0x8580('0x0'));module[_0x8580('0x1')]={'name':{'type':Sequelize[_0x8580('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8580('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8580('0x3')](_0x8580('0x4'),'beepall',_0x8580('0x5'))}};
\ No newline at end of file
+var _0x2908=['name','ENUM','rrmemory','beepall','exports','STRING'];(function(_0x42c9a8,_0x269ad8){var _0xd8d52e=function(_0x1fefdb){while(--_0x1fefdb){_0x42c9a8['push'](_0x42c9a8['shift']());}};_0xd8d52e(++_0x269ad8);}(_0x2908,0x1e4));var _0x8290=function(_0x22d510,_0xd2e473){_0x22d510=_0x22d510-0x0;var _0x506efd=_0x2908[_0x22d510];return _0x506efd;};'use strict';var Sequelize=require('sequelize');module[_0x8290('0x0')]={'name':{'type':Sequelize[_0x8290('0x1')],'unique':_0x8290('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8290('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8290('0x3')](_0x8290('0x4'),_0x8290('0x5'),'roundrobin')}};
\ No newline at end of file
index 4239ecf..1390a06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f3f=['userOpenchannelQueue:save','field','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','sequelize','QueryTypes','every','TeamId','includes','all','union','compact','value','transaction','isEmpty','userOpenchannelQueue:remove','addAgents','omit','spread','removeAgents','isArray','order','getAgents','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','getOptions','where','include','query','rows','show','params','keys','intersection','model','attributes','fields','length','includeAll','merge','options','find','catch','create','body','user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMembers','findOne','UserOpenchannelQueue','filters','hasOwnProperty','nolimit','sort','OpenchannelQueueId','filter','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','SIP','getTeams','Team','pick','addTeams','ids','Agents','online','flatMap','each','findOrCreate','emit'];(function(_0x5c75f4,_0x460729){var _0x27c531=function(_0x69d34b){while(--_0x69d34b){_0x5c75f4['push'](_0x5c75f4['shift']());}};_0x27c531(++_0x460729);}(_0x2f3f,0x19c));var _0xf2f3=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x2f3f[_0x4b055c];return _0x4b62bb;};'use strict';var BPromise=require('bluebird');var util=require(_0xf2f3('0x0'));var _=require(_0xf2f3('0x1'));var squel=require(_0xf2f3('0x2'));var Redis=require(_0xf2f3('0x3'));var qs=require(_0xf2f3('0x4'));var logger=require(_0xf2f3('0x5'))(_0xf2f3('0x6'));var config=require(_0xf2f3('0x7'));var db=require(_0xf2f3('0x8'))['db'];config[_0xf2f3('0x9')]=_[_0xf2f3('0xa')](config[_0xf2f3('0x9')],{'host':_0xf2f3('0xb'),'port':0x18eb});var socket=require(_0xf2f3('0xc'))(new Redis(config[_0xf2f3('0x9')]));require(_0xf2f3('0xd'))[_0xf2f3('0xe')](socket);function respondWithStatusCode(_0x10aff4,_0x546cde){_0x546cde=_0x546cde||0xcc;return function(_0x2b1ca2){if(_0x2b1ca2){return _0x10aff4[_0xf2f3('0xf')](_0x546cde);}return _0x10aff4['status'](_0x546cde)[_0xf2f3('0x10')]();};}function respondWithResult(_0x3cbf3f,_0x1c054a){_0x1c054a=_0x1c054a||0xc8;return function(_0xfb724b){if(_0xfb724b){return _0x3cbf3f[_0xf2f3('0x11')](_0x1c054a)[_0xf2f3('0x12')](_0xfb724b);}};}function respondWithFilteredResult(_0x86a012,_0x26a7a0){return function(_0x4e1554){if(_0x4e1554){var _0x2eaafb=typeof _0x26a7a0[_0xf2f3('0x13')]===_0xf2f3('0x14')&&typeof _0x26a7a0[_0xf2f3('0x15')]===_0xf2f3('0x14');var _0x4a05d2=_0x4e1554['count'];var _0x587ee4=_0x2eaafb?0x0:_0x26a7a0['offset'];var _0x1bc995=_0x2eaafb?_0x4e1554[_0xf2f3('0x16')]:_0x26a7a0['offset']+_0x26a7a0[_0xf2f3('0x15')];var _0x356b0a;if(_0x1bc995>=_0x4a05d2){_0x1bc995=_0x4a05d2;_0x356b0a=0xc8;}else{_0x356b0a=0xce;}_0x86a012['status'](_0x356b0a);return _0x86a012[_0xf2f3('0x17')](_0xf2f3('0x18'),_0x587ee4+'-'+_0x1bc995+'/'+_0x4a05d2)[_0xf2f3('0x12')](_0x4e1554);}return null;};}function saveUpdates(_0xa74854){return function(_0x29ef67){if(_0x29ef67){return _0x29ef67[_0xf2f3('0x19')](_0xa74854)[_0xf2f3('0x1a')](function(_0x42795b){return _0x42795b;});}return null;};}function removeEntity(_0x1f6313){return function(_0x144456){if(_0x144456){return _0x144456[_0xf2f3('0x1b')]()[_0xf2f3('0x1a')](function(){var _0x323ca3=_0x144456['get']({'plain':!![]});var _0x57aae6=_0xf2f3('0x1c');return db[_0xf2f3('0x1d')][_0xf2f3('0x1b')]({'where':{'type':_0x57aae6,'resourceId':_0x323ca3['id']}})[_0xf2f3('0x1a')](function(){return _0x144456;});})[_0xf2f3('0x1a')](function(){_0x1f6313['status'](0xcc)[_0xf2f3('0x10')]();});}};}function handleEntityNotFound(_0x11dda4){return function(_0x3eaa3e){if(!_0x3eaa3e){_0x11dda4['sendStatus'](0x194);}return _0x3eaa3e;};}function handleError(_0x72e64b,_0x29ad65){_0x29ad65=_0x29ad65||0x1f4;return function(_0x5b3bff){logger[_0xf2f3('0x1e')](_0x5b3bff[_0xf2f3('0x1f')]);if(_0x5b3bff[_0xf2f3('0x20')]){delete _0x5b3bff['name'];}_0x72e64b[_0xf2f3('0x11')](_0x29ad65)[_0xf2f3('0x21')](_0x5b3bff);};}exports[_0xf2f3('0x22')]=function(_0x2386fa,_0x40003b){var _0x2629b0={};var _0x29449a={'count':0x0,'rows':[]};var _0x157445=_[_0xf2f3('0x23')](db[_0xf2f3('0x24')][_0xf2f3('0x25')],function(_0x368c69){return{'name':_0x368c69[_0xf2f3('0x26')],'type':_0x368c69[_0xf2f3('0x27')]['key']};});_0x2629b0=qs[_0xf2f3('0x28')](_0x157445,_0x2386fa);var _0x5e791c={'where':_0x2629b0[_0xf2f3('0x29')]};return db[_0xf2f3('0x24')]['count'](_0x5e791c)[_0xf2f3('0x1a')](function(_0x445d73){_0x29449a[_0xf2f3('0x16')]=_0x445d73;_0x2629b0[_0xf2f3('0x2a')]=qs[_0xf2f3('0x2a')](_0x2386fa[_0xf2f3('0x2b')]);return db[_0xf2f3('0x24')]['findAll'](_0x2629b0);})[_0xf2f3('0x1a')](function(_0x10037){_0x29449a[_0xf2f3('0x2c')]=_0x10037;return _0x29449a;})[_0xf2f3('0x1a')](respondWithFilteredResult(_0x40003b,_0x2629b0))['catch'](handleError(_0x40003b,null));};exports[_0xf2f3('0x2d')]=function(_0x4f5109,_0x1c6ad0){var _0x17e666={'raw':!![],'where':{'id':_0x4f5109[_0xf2f3('0x2e')]['id']}},_0x3c59f4={};_0x3c59f4['model']=_['keys'](db['OpenchannelQueue'][_0xf2f3('0x25')]);_0x3c59f4[_0xf2f3('0x2b')]=_[_0xf2f3('0x2f')](_0x4f5109['query']);_0x3c59f4['filters']=_[_0xf2f3('0x30')](_0x3c59f4[_0xf2f3('0x31')],_0x3c59f4[_0xf2f3('0x2b')]);_0x17e666[_0xf2f3('0x32')]=_[_0xf2f3('0x30')](_0x3c59f4[_0xf2f3('0x31')],qs[_0xf2f3('0x33')](_0x4f5109[_0xf2f3('0x2b')][_0xf2f3('0x33')]));_0x17e666[_0xf2f3('0x32')]=_0x17e666['attributes'][_0xf2f3('0x34')]?_0x17e666[_0xf2f3('0x32')]:_0x3c59f4[_0xf2f3('0x31')];if(_0x4f5109[_0xf2f3('0x2b')][_0xf2f3('0x35')]){_0x17e666[_0xf2f3('0x2a')]=[{'all':!![]}];}_0x17e666=_[_0xf2f3('0x36')]({},_0x17e666,_0x4f5109[_0xf2f3('0x37')]);return db[_0xf2f3('0x24')][_0xf2f3('0x38')](_0x17e666)[_0xf2f3('0x1a')](handleEntityNotFound(_0x1c6ad0,null))[_0xf2f3('0x1a')](respondWithResult(_0x1c6ad0,null))[_0xf2f3('0x39')](handleError(_0x1c6ad0,null));};exports[_0xf2f3('0x3a')]=function(_0x34e343,_0x3fa1da){return db[_0xf2f3('0x24')][_0xf2f3('0x3a')](_0x34e343[_0xf2f3('0x3b')],{})['then'](function(_0xf34712){var _0x2ee688=_0x34e343[_0xf2f3('0x3c')][_0xf2f3('0x3d')]({'plain':!![]});if(!_0x2ee688)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2ee688['role']===_0xf2f3('0x3c')){var _0x535f8f=_0xf34712[_0xf2f3('0x3d')]({'plain':!![]});var _0x2c7977='OpenchannelQueues';return db[_0xf2f3('0x3e')]['find']({'where':{'name':_0x2c7977,'userProfileId':_0x2ee688[_0xf2f3('0x3f')]},'raw':!![]})[_0xf2f3('0x1a')](function(_0x295f78){if(_0x295f78&&_0x295f78[_0xf2f3('0x40')]===0x0){return db[_0xf2f3('0x1d')]['create']({'name':_0x535f8f[_0xf2f3('0x20')],'resourceId':_0x535f8f['id'],'type':_0x295f78[_0xf2f3('0x20')],'sectionId':_0x295f78['id']},{})[_0xf2f3('0x1a')](function(){return _0xf34712;});}else{return _0xf34712;}})[_0xf2f3('0x39')](function(_0x5419ee){logger[_0xf2f3('0x1e')](_0xf2f3('0x41'),_0x5419ee);throw _0x5419ee;});}return _0xf34712;})[_0xf2f3('0x1a')](respondWithResult(_0x3fa1da,0xc9))['catch'](handleError(_0x3fa1da,null));};exports['update']=function(_0x2773fa,_0xe84acf){if(_0x2773fa[_0xf2f3('0x3b')]['id']){delete _0x2773fa[_0xf2f3('0x3b')]['id'];}return db['OpenchannelQueue'][_0xf2f3('0x38')]({'where':{'id':_0x2773fa[_0xf2f3('0x2e')]['id']}})[_0xf2f3('0x1a')](handleEntityNotFound(_0xe84acf,null))[_0xf2f3('0x1a')](saveUpdates(_0x2773fa['body'],null))[_0xf2f3('0x1a')](respondWithResult(_0xe84acf,null))['catch'](handleError(_0xe84acf,null));};exports[_0xf2f3('0x1b')]=function(_0x5d855d,_0x3f25ca){return db[_0xf2f3('0x24')][_0xf2f3('0x38')]({'where':{'id':_0x5d855d[_0xf2f3('0x2e')]['id']}})[_0xf2f3('0x1a')](handleEntityNotFound(_0x3f25ca,null))[_0xf2f3('0x1a')](removeEntity(_0x3f25ca,null))[_0xf2f3('0x39')](handleError(_0x3f25ca,null));};exports['describe']=function(_0x250b59,_0x3e189c){return db['OpenchannelQueue']['describe']()['then'](respondWithResult(_0x3e189c,null))[_0xf2f3('0x39')](handleError(_0x3e189c,null));};exports[_0xf2f3('0x42')]=function(_0x173bc4,_0x17584d){var _0x21edcf={'raw':!![],'where':{}},_0x57d970={},_0x40c5b7;return db[_0xf2f3('0x24')][_0xf2f3('0x43')]({'where':{'id':_0x173bc4['params']['id']}})[_0xf2f3('0x1a')](handleEntityNotFound(_0x17584d,null))[_0xf2f3('0x1a')](function(_0x5390db){if(_0x5390db){_0x40c5b7=_0x5390db['get']({'plain':!![]});_0x57d970[_0xf2f3('0x31')]=_[_0xf2f3('0x2f')](db[_0xf2f3('0x44')][_0xf2f3('0x25')]);_0x57d970['query']=_[_0xf2f3('0x2f')](_0x173bc4['query']);_0x57d970[_0xf2f3('0x45')]=_['intersection'](_0x57d970['model'],_0x57d970[_0xf2f3('0x2b')]);_0x21edcf[_0xf2f3('0x32')]=_[_0xf2f3('0x30')](_0x57d970[_0xf2f3('0x31')],qs[_0xf2f3('0x33')](_0x173bc4[_0xf2f3('0x2b')][_0xf2f3('0x33')]));_0x21edcf[_0xf2f3('0x32')]=_0x21edcf[_0xf2f3('0x32')]['length']?_0x21edcf[_0xf2f3('0x32')]:_0x57d970[_0xf2f3('0x31')];if(!_0x173bc4[_0xf2f3('0x2b')][_0xf2f3('0x46')](_0xf2f3('0x47'))){_0x21edcf[_0xf2f3('0x15')]=qs['limit'](_0x173bc4[_0xf2f3('0x2b')][_0xf2f3('0x15')]);_0x21edcf[_0xf2f3('0x13')]=qs[_0xf2f3('0x13')](_0x173bc4['query'][_0xf2f3('0x13')]);}_0x21edcf['order']=qs[_0xf2f3('0x48')](_0x173bc4[_0xf2f3('0x2b')][_0xf2f3('0x48')]);_0x21edcf[_0xf2f3('0x29')]=qs[_0xf2f3('0x45')](_['pick'](_0x173bc4[_0xf2f3('0x2b')],_0x57d970[_0xf2f3('0x45')]));_0x21edcf[_0xf2f3('0x29')][_0xf2f3('0x49')]=_0x5390db['id'];if(_0x173bc4[_0xf2f3('0x2b')]['filter']){_0x21edcf[_0xf2f3('0x29')]=_[_0xf2f3('0x36')](_0x21edcf[_0xf2f3('0x29')],{'$or':_[_0xf2f3('0x23')](_0x21edcf[_0xf2f3('0x32')],function(_0x3d46d4){var _0x2fbc4e={};_0x2fbc4e[_0x3d46d4]={'$like':'%'+_0x173bc4['query'][_0xf2f3('0x4a')]+'%'};return _0x2fbc4e;})});}_0x21edcf=_[_0xf2f3('0x36')]({},_0x21edcf,_0x173bc4['options']);return db[_0xf2f3('0x44')][_0xf2f3('0x4b')](_0x21edcf);}})[_0xf2f3('0x1a')](function(_0xfc15b5){if(_0xfc15b5){return db[_0xf2f3('0x4c')][_0xf2f3('0x4d')]({'where':{'id':_[_0xf2f3('0x23')](_0xfc15b5,_0xf2f3('0x4e')),'role':_0xf2f3('0x4f')},'attributes':['id',_0xf2f3('0x20'),_0xf2f3('0x50'),_0xf2f3('0x51'),_0xf2f3('0x52')]});}})[_0xf2f3('0x1a')](function(_0x3b6bea){if(_0x3b6bea){return{'count':_0x3b6bea['count'],'rows':_[_0xf2f3('0x23')](_0x3b6bea[_0xf2f3('0x2c')],function(_0x40cb34){return{'membername':_0x40cb34[_0xf2f3('0x20')],'UserId':_0x40cb34['id'],'queue_name':_0x40c5b7[_0xf2f3('0x20')],'OpenchannelQueueId':_0x40c5b7['id'],'interface':util[_0xf2f3('0x53')]('%s/%s',_0xf2f3('0x54'),_0x40cb34[_0xf2f3('0x20')]),'penalty':0x0,'paused':_0x40cb34['openchannelPause'],'createdAt':_0x40cb34[_0xf2f3('0x52')],'updatedAt':_0x40cb34[_0xf2f3('0x51')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf2f3('0x1a')](respondWithFilteredResult(_0x17584d,_0x21edcf))[_0xf2f3('0x39')](handleError(_0x17584d,null));};exports[_0xf2f3('0x55')]=function(_0x2d8228,_0x185ca3){var _0x468a9b={};var _0x62e4ad={};var _0x1cb787;var _0x5c0b6c;return db['OpenchannelQueue'][_0xf2f3('0x43')]({'where':{'id':_0x2d8228['params']['id']}})[_0xf2f3('0x1a')](handleEntityNotFound(_0x185ca3,null))[_0xf2f3('0x1a')](function(_0x50eb51){if(_0x50eb51){_0x1cb787=_0x50eb51;_0x62e4ad[_0xf2f3('0x31')]=_[_0xf2f3('0x2f')](db[_0xf2f3('0x56')][_0xf2f3('0x25')]);_0x62e4ad[_0xf2f3('0x2b')]=_['keys'](_0x2d8228[_0xf2f3('0x2b')]);_0x62e4ad[_0xf2f3('0x45')]=_['intersection'](_0x62e4ad[_0xf2f3('0x31')],_0x62e4ad[_0xf2f3('0x2b')]);_0x468a9b[_0xf2f3('0x32')]=_[_0xf2f3('0x30')](_0x62e4ad[_0xf2f3('0x31')],qs['fields'](_0x2d8228[_0xf2f3('0x2b')][_0xf2f3('0x33')]));_0x468a9b[_0xf2f3('0x32')]=_0x468a9b[_0xf2f3('0x32')][_0xf2f3('0x34')]?_0x468a9b[_0xf2f3('0x32')]:_0x62e4ad['model'];_0x468a9b['order']=qs[_0xf2f3('0x48')](_0x2d8228['query'][_0xf2f3('0x48')]);_0x468a9b['where']=qs[_0xf2f3('0x45')](_[_0xf2f3('0x57')](_0x2d8228['query'],_0x62e4ad['filters']));if(_0x2d8228[_0xf2f3('0x2b')][_0xf2f3('0x4a')]){_0x468a9b[_0xf2f3('0x29')]=_[_0xf2f3('0x36')](_0x468a9b[_0xf2f3('0x29')],{'$or':_[_0xf2f3('0x23')](_0x468a9b[_0xf2f3('0x32')],function(_0x298757){var _0x38c636={};_0x38c636[_0x298757]={'$like':'%'+_0x2d8228[_0xf2f3('0x2b')][_0xf2f3('0x4a')]+'%'};return _0x38c636;})});}_0x468a9b=_['merge']({},_0x468a9b,_0x2d8228[_0xf2f3('0x37')]);return _0x1cb787[_0xf2f3('0x55')](_0x468a9b);}})[_0xf2f3('0x1a')](function(_0x4b05cf){if(_0x4b05cf){_0x5c0b6c=_0x4b05cf[_0xf2f3('0x34')];if(!_0x2d8228[_0xf2f3('0x2b')][_0xf2f3('0x46')](_0xf2f3('0x47'))){_0x468a9b[_0xf2f3('0x15')]=qs[_0xf2f3('0x15')](_0x2d8228[_0xf2f3('0x2b')][_0xf2f3('0x15')]);_0x468a9b[_0xf2f3('0x13')]=qs[_0xf2f3('0x13')](_0x2d8228[_0xf2f3('0x2b')][_0xf2f3('0x13')]);}return _0x1cb787[_0xf2f3('0x55')](_0x468a9b);}})[_0xf2f3('0x1a')](function(_0x1800eb){if(_0x1800eb){return _0x1800eb?{'count':_0x5c0b6c,'rows':_0x1800eb}:null;}})[_0xf2f3('0x1a')](respondWithResult(_0x185ca3,null))[_0xf2f3('0x39')](handleError(_0x185ca3,null));};exports[_0xf2f3('0x58')]=function(_0x321be3,_0x32f972){var _0x458518=_0x321be3[_0xf2f3('0x3b')][_0xf2f3('0x59')];return db[_0xf2f3('0x56')][_0xf2f3('0x4b')]({'where':{'id':_0x458518},'attributes':['id'],'include':[{'model':db['User'],'as':_0xf2f3('0x5a'),'attributes':['id',_0xf2f3('0x20'),_0xf2f3('0x5b'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x3d439a){if(_0x3d439a){var _0x231ca9=_[_0xf2f3('0x5c')](_0x3d439a,function(_0x169a26){var _0x243fdc=_0x169a26['get']({'plain':!![]});return _0x243fdc['Agents'];});return db[_0xf2f3('0x24')][_0xf2f3('0x38')]({'where':{'id':_0x321be3[_0xf2f3('0x2e')]['id']}})[_0xf2f3('0x1a')](function(_0x1efcf2){return db['sequelize']['transaction'](function(_0x13c67f){return _0x1efcf2[_0xf2f3('0x58')](_0x458518,{'transaction':_0x13c67f})[_0xf2f3('0x1a')](function(){return BPromise[_0xf2f3('0x5d')](_0x231ca9,function(_0x354406){return db[_0xf2f3('0x44')][_0xf2f3('0x5e')]({'where':{'UserId':_0x354406['id'],'OpenchannelQueueId':_0x321be3[_0xf2f3('0x2e')]['id']},'transaction':_0x13c67f});});})['then'](function(){_0x231ca9['forEach'](function(_0x4bf124){socket[_0xf2f3('0x5f')](_0xf2f3('0x60'),{'UserId':_0x4bf124['id'],'OpenchannelQueueId':_0x1efcf2['id']});});});});});}})[_0xf2f3('0x1a')](respondWithStatusCode(_0x32f972,null))[_0xf2f3('0x39')](handleError(_0x32f972,null));};exports['removeTeams']=function(_0x2f4cdb,_0x5dd1fd){return db[_0xf2f3('0x56')][_0xf2f3('0x4b')]({'where':{'id':_0x2f4cdb[_0xf2f3('0x2b')][_0xf2f3('0x59')]},'attributes':['id'],'include':[{'model':db[_0xf2f3('0x4c')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5dd1fd,null))[_0xf2f3('0x1a')](function(_0x4c60e1){var _0xe375b9=_['map'](_0x4c60e1,'id');var _0x2e443a=[];var _0x2d2920=[];var _0x14d8ab=squel['select']();_0x14d8ab[_0xf2f3('0x61')]('tq.TeamId')[_0xf2f3('0x62')](_0xf2f3('0x63'),'tq')[_0xf2f3('0x64')](_0xf2f3('0x65'),'ut',_0xf2f3('0x66'))[_0xf2f3('0x29')](_0xf2f3('0x67'),_0x2f4cdb['params']['id']);for(var _0x2bae07=0x0;_0x2bae07<_0x4c60e1['length'];_0x2bae07+=0x1){let _0x23f349=_0x4c60e1[_0x2bae07];for(var _0x343adf=0x0;_0x343adf<_0x23f349[_0xf2f3('0x5a')][_0xf2f3('0x34')];_0x343adf+=0x1){let _0x30f55a=_0x23f349[_0xf2f3('0x5a')][_0x343adf];var _0xdde07e=_0x14d8ab[_0xf2f3('0x68')]();_0xdde07e[_0xf2f3('0x29')](_0xf2f3('0x69'),_0x30f55a['id']);_0x2d2920[_0xf2f3('0x6a')](db['sequelize'][_0xf2f3('0x2b')](_0xdde07e[_0xf2f3('0x6b')](),{'type':db[_0xf2f3('0x6c')][_0xf2f3('0x6d')]['SELECT']})[_0xf2f3('0x1a')](function(_0x143d07){if(_0x143d07[_0xf2f3('0x34')]===0x1){return _0x30f55a['id'];}else{var _0xca084a=_[_0xf2f3('0x6e')](_[_0xf2f3('0x23')](_0x143d07,_0xf2f3('0x6f')),function(_0x4b5457){return _[_0xf2f3('0x70')](_0xe375b9,_0x4b5457);});if(_0xca084a){return _0x30f55a['id'];}}}));}}return BPromise[_0xf2f3('0x71')](_0x2d2920)['then'](function(_0x5a3ca9){_0x2e443a=_(_0x2e443a)[_0xf2f3('0x72')](_0x5a3ca9)[_0xf2f3('0x73')]()[_0xf2f3('0x74')]();return db[_0xf2f3('0x24')][_0xf2f3('0x38')]({'where':{'id':_0x2f4cdb[_0xf2f3('0x2e')]['id']}})['then'](function(_0x1d5ac2){return db[_0xf2f3('0x6c')][_0xf2f3('0x75')](function(_0x1a3f6d){return _0x1d5ac2['removeTeams'](_0x2f4cdb['query'][_0xf2f3('0x59')],{'transaction':_0x1a3f6d})[_0xf2f3('0x1a')](function(){if(!_[_0xf2f3('0x76')](_0x2e443a)){return _0x1d5ac2['removeAgents'](_0x2e443a,{'transaction':_0x1a3f6d});}})[_0xf2f3('0x1a')](function(){_0x2e443a['forEach'](function(_0x202bf1){socket[_0xf2f3('0x5f')](_0xf2f3('0x77'),{'UserId':_0x202bf1,'OpenchannelQueueId':_0x1d5ac2['id']});});});});});});})[_0xf2f3('0x1a')](respondWithStatusCode(_0x5dd1fd,null))[_0xf2f3('0x39')](handleError(_0x5dd1fd,null));};exports['addAgents']=function(_0x202fd4,_0x32ed96){return db[_0xf2f3('0x24')][_0xf2f3('0x38')]({'where':{'id':_0x202fd4[_0xf2f3('0x2e')]['id']}})[_0xf2f3('0x1a')](handleEntityNotFound(_0x32ed96,null))[_0xf2f3('0x1a')](function(_0x12b005){if(_0x12b005){return _0x12b005[_0xf2f3('0x78')](_0x202fd4[_0xf2f3('0x3b')][_0xf2f3('0x59')],_[_0xf2f3('0x79')](_0x202fd4[_0xf2f3('0x3b')],[_0xf2f3('0x59'),'id'])||{})[_0xf2f3('0x7a')](function(_0x4eaaee){for(var _0x72733=0x0;_0x72733<_0x202fd4[_0xf2f3('0x3b')]['ids'][_0xf2f3('0x34')];_0x72733+=0x1){socket[_0xf2f3('0x5f')]('userOpenchannelQueue:save',{'UserId':Number(_0x202fd4[_0xf2f3('0x3b')][_0xf2f3('0x59')][_0x72733]),'OpenchannelQueueId':Number(_0x202fd4[_0xf2f3('0x2e')]['id'])});}return _0x4eaaee;});}})[_0xf2f3('0x1a')](respondWithResult(_0x32ed96,null))[_0xf2f3('0x39')](handleError(_0x32ed96,null));};exports[_0xf2f3('0x7b')]=function(_0x18016d,_0x3cc796){return db['OpenchannelQueue']['find']({'where':{'id':_0x18016d[_0xf2f3('0x2e')]['id']}})[_0xf2f3('0x1a')](handleEntityNotFound(_0x3cc796,null))[_0xf2f3('0x1a')](function(_0x543b04){if(_0x543b04){return _0x543b04[_0xf2f3('0x7b')](_0x18016d[_0xf2f3('0x2b')][_0xf2f3('0x59')])[_0xf2f3('0x1a')](function(){if(_[_0xf2f3('0x7c')](_0x18016d[_0xf2f3('0x2b')][_0xf2f3('0x59')])){for(var _0x3044d8=0x0;_0x3044d8<_0x18016d['query'][_0xf2f3('0x59')][_0xf2f3('0x34')];_0x3044d8+=0x1){socket['emit'](_0xf2f3('0x77'),{'UserId':Number(_0x18016d[_0xf2f3('0x2b')][_0xf2f3('0x59')][_0x3044d8]),'OpenchannelQueueId':Number(_0x18016d[_0xf2f3('0x2e')]['id'])});}}else{socket['emit'](_0xf2f3('0x77'),{'UserId':Number(_0x18016d[_0xf2f3('0x2b')][_0xf2f3('0x59')]),'OpenchannelQueueId':Number(_0x18016d[_0xf2f3('0x2e')]['id'])});}});}})[_0xf2f3('0x1a')](respondWithStatusCode(_0x3cc796,null))[_0xf2f3('0x39')](handleError(_0x3cc796,null));};exports['getAgents']=function(_0xceef0f,_0x5d4f75){var _0x3fc614={};var _0x3ac3a2={};var _0x1df1f7;var _0x5e972e;return db[_0xf2f3('0x24')][_0xf2f3('0x43')]({'where':{'id':_0xceef0f[_0xf2f3('0x2e')]['id']}})[_0xf2f3('0x1a')](handleEntityNotFound(_0x5d4f75,null))['then'](function(_0x57ac5b){if(_0x57ac5b){_0x1df1f7=_0x57ac5b;_0x3ac3a2[_0xf2f3('0x31')]=_[_0xf2f3('0x2f')](db['User'][_0xf2f3('0x25')]);_0x3ac3a2['query']=_[_0xf2f3('0x2f')](_0xceef0f[_0xf2f3('0x2b')]);_0x3ac3a2['filters']=_[_0xf2f3('0x30')](_0x3ac3a2[_0xf2f3('0x31')],_0x3ac3a2[_0xf2f3('0x2b')]);_0x3fc614['attributes']=_['intersection'](_0x3ac3a2[_0xf2f3('0x31')],qs[_0xf2f3('0x33')](_0xceef0f[_0xf2f3('0x2b')]['fields']));_0x3fc614[_0xf2f3('0x32')]=_0x3fc614['attributes']['length']?_0x3fc614[_0xf2f3('0x32')]:_0x3ac3a2[_0xf2f3('0x31')];_0x3fc614[_0xf2f3('0x7d')]=qs['sort'](_0xceef0f['query'][_0xf2f3('0x48')]);_0x3fc614[_0xf2f3('0x29')]=qs[_0xf2f3('0x45')](_[_0xf2f3('0x57')](_0xceef0f[_0xf2f3('0x2b')],_0x3ac3a2[_0xf2f3('0x45')]));if(_0xceef0f[_0xf2f3('0x2b')]['filter']){_0x3fc614[_0xf2f3('0x29')]=_[_0xf2f3('0x36')](_0x3fc614[_0xf2f3('0x29')],{'$or':_[_0xf2f3('0x23')](_0x3fc614[_0xf2f3('0x32')],function(_0x541239){var _0x4750da={};_0x4750da[_0x541239]={'$like':'%'+_0xceef0f[_0xf2f3('0x2b')][_0xf2f3('0x4a')]+'%'};return _0x4750da;})});}_0x3fc614=_[_0xf2f3('0x36')]({},_0x3fc614,_0xceef0f['options']);return _0x1df1f7['getAgents'](_0x3fc614);}})[_0xf2f3('0x1a')](function(_0x4fb047){if(_0x4fb047){_0x5e972e=_0x4fb047[_0xf2f3('0x34')];if(!_0xceef0f[_0xf2f3('0x2b')]['hasOwnProperty']('nolimit')){_0x3fc614['limit']=qs[_0xf2f3('0x15')](_0xceef0f['query'][_0xf2f3('0x15')]);_0x3fc614[_0xf2f3('0x13')]=qs[_0xf2f3('0x13')](_0xceef0f[_0xf2f3('0x2b')][_0xf2f3('0x13')]);}return _0x1df1f7[_0xf2f3('0x7e')](_0x3fc614);}})[_0xf2f3('0x1a')](function(_0x236dd1){if(_0x236dd1){return _0x236dd1?{'count':_0x5e972e,'rows':_0x236dd1}:null;}})[_0xf2f3('0x1a')](respondWithResult(_0x5d4f75,null))[_0xf2f3('0x39')](handleError(_0x5d4f75,null));};
\ No newline at end of file
+var _0x8673=['createdAt','findOne','Team','length','pick','hasOwnProperty','nolimit','getTeams','addTeams','ids','Agents','voicePause','flatMap','sequelize','findOrCreate','forEach','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','push','SELECT','every','TeamId','compact','value','isEmpty','removeAgents','addAgents','spread','isArray','userOpenchannelQueue:remove','getAgents','bluebird','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','get','OpenchannelQueues','UserProfileResource','end','name','send','index','map','OpenchannelQueue','rawAttributes','type','key','where','include','query','rows','show','params','keys','filters','intersection','model','attributes','fields','includeAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserOpenchannelQueue','order','sort','filter','merge','options','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','format','%s/%s','SIP'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8673,0x117));var _0x3867=function(_0x278b17,_0x5c2384){_0x278b17=_0x278b17-0x0;var _0x2e9822=_0x8673[_0x278b17];return _0x2e9822;};'use strict';var BPromise=require(_0x3867('0x0'));var util=require(_0x3867('0x1'));var _=require(_0x3867('0x2'));var squel=require(_0x3867('0x3'));var Redis=require(_0x3867('0x4'));var qs=require(_0x3867('0x5'));var logger=require(_0x3867('0x6'))(_0x3867('0x7'));var config=require(_0x3867('0x8'));var db=require(_0x3867('0x9'))['db'];config[_0x3867('0xa')]=_[_0x3867('0xb')](config[_0x3867('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x3867('0xc'))(new Redis(config[_0x3867('0xa')]));require('./openchannelQueue.socket')['register'](socket);function respondWithStatusCode(_0x4a9718,_0x324a6b){_0x324a6b=_0x324a6b||0xcc;return function(_0x286e1d){if(_0x286e1d){return _0x4a9718['sendStatus'](_0x324a6b);}return _0x4a9718['status'](_0x324a6b)['end']();};}function respondWithResult(_0x3e745d,_0x37afcf){_0x37afcf=_0x37afcf||0xc8;return function(_0x455d25){if(_0x455d25){return _0x3e745d[_0x3867('0xd')](_0x37afcf)[_0x3867('0xe')](_0x455d25);}};}function respondWithFilteredResult(_0xbd314f,_0x2e0a10){return function(_0x4287ce){if(_0x4287ce){var _0x28e984=typeof _0x2e0a10[_0x3867('0xf')]===_0x3867('0x10')&&typeof _0x2e0a10[_0x3867('0x11')]===_0x3867('0x10');var _0x124df4=_0x4287ce[_0x3867('0x12')];var _0x25c244=_0x28e984?0x0:_0x2e0a10[_0x3867('0xf')];var _0x29cba3=_0x28e984?_0x4287ce[_0x3867('0x12')]:_0x2e0a10[_0x3867('0xf')]+_0x2e0a10[_0x3867('0x11')];var _0x46e716;if(_0x29cba3>=_0x124df4){_0x29cba3=_0x124df4;_0x46e716=0xc8;}else{_0x46e716=0xce;}_0xbd314f[_0x3867('0xd')](_0x46e716);return _0xbd314f[_0x3867('0x13')](_0x3867('0x14'),_0x25c244+'-'+_0x29cba3+'/'+_0x124df4)['json'](_0x4287ce);}return null;};}function saveUpdates(_0x12c834){return function(_0x421543){if(_0x421543){return _0x421543[_0x3867('0x15')](_0x12c834)[_0x3867('0x16')](function(_0x9b3648){return _0x9b3648;});}return null;};}function removeEntity(_0x5e9b36){return function(_0x3f4ed2){if(_0x3f4ed2){return _0x3f4ed2[_0x3867('0x17')]()[_0x3867('0x16')](function(){var _0x1bdfa1=_0x3f4ed2[_0x3867('0x18')]({'plain':!![]});var _0x1a1376=_0x3867('0x19');return db[_0x3867('0x1a')][_0x3867('0x17')]({'where':{'type':_0x1a1376,'resourceId':_0x1bdfa1['id']}})['then'](function(){return _0x3f4ed2;});})[_0x3867('0x16')](function(){_0x5e9b36[_0x3867('0xd')](0xcc)[_0x3867('0x1b')]();});}};}function handleEntityNotFound(_0x37515e){return function(_0x38bda6){if(!_0x38bda6){_0x37515e['sendStatus'](0x194);}return _0x38bda6;};}function handleError(_0x5bb7c0,_0x25ccec){_0x25ccec=_0x25ccec||0x1f4;return function(_0x296286){logger['error'](_0x296286['stack']);if(_0x296286[_0x3867('0x1c')]){delete _0x296286[_0x3867('0x1c')];}_0x5bb7c0[_0x3867('0xd')](_0x25ccec)[_0x3867('0x1d')](_0x296286);};}exports[_0x3867('0x1e')]=function(_0x5f3547,_0x404966){var _0x5e0d58={};var _0x51eb2a={'count':0x0,'rows':[]};var _0x3daae4=_[_0x3867('0x1f')](db[_0x3867('0x20')][_0x3867('0x21')],function(_0x2ec7e4){return{'name':_0x2ec7e4['fieldName'],'type':_0x2ec7e4[_0x3867('0x22')][_0x3867('0x23')]};});_0x5e0d58=qs['getOptions'](_0x3daae4,_0x5f3547);var _0x2909a2={'where':_0x5e0d58[_0x3867('0x24')]};return db[_0x3867('0x20')][_0x3867('0x12')](_0x2909a2)[_0x3867('0x16')](function(_0x465873){_0x51eb2a[_0x3867('0x12')]=_0x465873;_0x5e0d58[_0x3867('0x25')]=qs[_0x3867('0x25')](_0x5f3547[_0x3867('0x26')]);return db[_0x3867('0x20')]['findAll'](_0x5e0d58);})[_0x3867('0x16')](function(_0x2f2cbd){_0x51eb2a[_0x3867('0x27')]=_0x2f2cbd;return _0x51eb2a;})['then'](respondWithFilteredResult(_0x404966,_0x5e0d58))['catch'](handleError(_0x404966,null));};exports[_0x3867('0x28')]=function(_0x44b59c,_0x2887c7){var _0x409364={'raw':!![],'where':{'id':_0x44b59c[_0x3867('0x29')]['id']}},_0x59f19d={};_0x59f19d['model']=_[_0x3867('0x2a')](db[_0x3867('0x20')][_0x3867('0x21')]);_0x59f19d[_0x3867('0x26')]=_[_0x3867('0x2a')](_0x44b59c[_0x3867('0x26')]);_0x59f19d[_0x3867('0x2b')]=_[_0x3867('0x2c')](_0x59f19d[_0x3867('0x2d')],_0x59f19d[_0x3867('0x26')]);_0x409364[_0x3867('0x2e')]=_[_0x3867('0x2c')](_0x59f19d[_0x3867('0x2d')],qs[_0x3867('0x2f')](_0x44b59c[_0x3867('0x26')]['fields']));_0x409364[_0x3867('0x2e')]=_0x409364[_0x3867('0x2e')]['length']?_0x409364['attributes']:_0x59f19d[_0x3867('0x2d')];if(_0x44b59c[_0x3867('0x26')][_0x3867('0x30')]){_0x409364[_0x3867('0x25')]=[{'all':!![]}];}_0x409364=_['merge']({},_0x409364,_0x44b59c['options']);return db['OpenchannelQueue'][_0x3867('0x31')](_0x409364)['then'](handleEntityNotFound(_0x2887c7,null))[_0x3867('0x16')](respondWithResult(_0x2887c7,null))[_0x3867('0x32')](handleError(_0x2887c7,null));};exports[_0x3867('0x33')]=function(_0x35a3a3,_0x142914){return db[_0x3867('0x20')][_0x3867('0x33')](_0x35a3a3[_0x3867('0x34')],{})[_0x3867('0x16')](function(_0x5d832b){var _0x245a2c=_0x35a3a3[_0x3867('0x35')][_0x3867('0x18')]({'plain':!![]});if(!_0x245a2c)throw new Error(_0x3867('0x36'));if(_0x245a2c[_0x3867('0x37')]===_0x3867('0x35')){var _0x4b235c=_0x5d832b[_0x3867('0x18')]({'plain':!![]});var _0x1a427e='OpenchannelQueues';return db['UserProfileSection']['find']({'where':{'name':_0x1a427e,'userProfileId':_0x245a2c[_0x3867('0x38')]},'raw':!![]})[_0x3867('0x16')](function(_0x3b6da5){if(_0x3b6da5&&_0x3b6da5[_0x3867('0x39')]===0x0){return db['UserProfileResource'][_0x3867('0x33')]({'name':_0x4b235c[_0x3867('0x1c')],'resourceId':_0x4b235c['id'],'type':_0x3b6da5[_0x3867('0x1c')],'sectionId':_0x3b6da5['id']},{})[_0x3867('0x16')](function(){return _0x5d832b;});}else{return _0x5d832b;}})['catch'](function(_0x1321ef){logger[_0x3867('0x3a')](_0x3867('0x3b'),_0x1321ef);throw _0x1321ef;});}return _0x5d832b;})[_0x3867('0x16')](respondWithResult(_0x142914,0xc9))[_0x3867('0x32')](handleError(_0x142914,null));};exports[_0x3867('0x15')]=function(_0x2e6ba7,_0x353e58){if(_0x2e6ba7[_0x3867('0x34')]['id']){delete _0x2e6ba7[_0x3867('0x34')]['id'];}return db['OpenchannelQueue'][_0x3867('0x31')]({'where':{'id':_0x2e6ba7[_0x3867('0x29')]['id']}})[_0x3867('0x16')](handleEntityNotFound(_0x353e58,null))[_0x3867('0x16')](saveUpdates(_0x2e6ba7['body'],null))[_0x3867('0x16')](respondWithResult(_0x353e58,null))[_0x3867('0x32')](handleError(_0x353e58,null));};exports[_0x3867('0x17')]=function(_0x558211,_0x3130ac){return db[_0x3867('0x20')]['find']({'where':{'id':_0x558211[_0x3867('0x29')]['id']}})[_0x3867('0x16')](handleEntityNotFound(_0x3130ac,null))['then'](removeEntity(_0x3130ac,null))[_0x3867('0x32')](handleError(_0x3130ac,null));};exports[_0x3867('0x3c')]=function(_0x5c4c4c,_0x1a6f1e){return db['OpenchannelQueue']['describe']()[_0x3867('0x16')](respondWithResult(_0x1a6f1e,null))[_0x3867('0x32')](handleError(_0x1a6f1e,null));};exports[_0x3867('0x3d')]=function(_0x18061b,_0x372078){var _0x5d6872={'raw':!![],'where':{}},_0x27d10f={},_0x3962a8;return db[_0x3867('0x20')]['findOne']({'where':{'id':_0x18061b[_0x3867('0x29')]['id']}})['then'](handleEntityNotFound(_0x372078,null))[_0x3867('0x16')](function(_0x22a19e){if(_0x22a19e){_0x3962a8=_0x22a19e[_0x3867('0x18')]({'plain':!![]});_0x27d10f[_0x3867('0x2d')]=_['keys'](db[_0x3867('0x3e')][_0x3867('0x21')]);_0x27d10f[_0x3867('0x26')]=_['keys'](_0x18061b[_0x3867('0x26')]);_0x27d10f[_0x3867('0x2b')]=_[_0x3867('0x2c')](_0x27d10f[_0x3867('0x2d')],_0x27d10f[_0x3867('0x26')]);_0x5d6872[_0x3867('0x2e')]=_[_0x3867('0x2c')](_0x27d10f[_0x3867('0x2d')],qs[_0x3867('0x2f')](_0x18061b[_0x3867('0x26')]['fields']));_0x5d6872[_0x3867('0x2e')]=_0x5d6872['attributes']['length']?_0x5d6872[_0x3867('0x2e')]:_0x27d10f[_0x3867('0x2d')];if(!_0x18061b[_0x3867('0x26')]['hasOwnProperty']('nolimit')){_0x5d6872[_0x3867('0x11')]=qs[_0x3867('0x11')](_0x18061b[_0x3867('0x26')]['limit']);_0x5d6872[_0x3867('0xf')]=qs['offset'](_0x18061b[_0x3867('0x26')]['offset']);}_0x5d6872[_0x3867('0x3f')]=qs[_0x3867('0x40')](_0x18061b[_0x3867('0x26')][_0x3867('0x40')]);_0x5d6872[_0x3867('0x24')]=qs[_0x3867('0x2b')](_['pick'](_0x18061b[_0x3867('0x26')],_0x27d10f[_0x3867('0x2b')]));_0x5d6872[_0x3867('0x24')]['OpenchannelQueueId']=_0x22a19e['id'];if(_0x18061b[_0x3867('0x26')][_0x3867('0x41')]){_0x5d6872[_0x3867('0x24')]=_[_0x3867('0x42')](_0x5d6872[_0x3867('0x24')],{'$or':_[_0x3867('0x1f')](_0x5d6872[_0x3867('0x2e')],function(_0x431422){var _0x1e4985={};_0x1e4985[_0x431422]={'$like':'%'+_0x18061b['query'][_0x3867('0x41')]+'%'};return _0x1e4985;})});}_0x5d6872=_[_0x3867('0x42')]({},_0x5d6872,_0x18061b[_0x3867('0x43')]);return db[_0x3867('0x3e')][_0x3867('0x44')](_0x5d6872);}})[_0x3867('0x16')](function(_0x42b61d){if(_0x42b61d){return db[_0x3867('0x45')][_0x3867('0x46')]({'where':{'id':_['map'](_0x42b61d,_0x3867('0x47')),'role':_0x3867('0x48')},'attributes':['id',_0x3867('0x1c'),_0x3867('0x49'),_0x3867('0x4a'),'createdAt']});}})[_0x3867('0x16')](function(_0x2c7dc0){if(_0x2c7dc0){return{'count':_0x2c7dc0[_0x3867('0x12')],'rows':_[_0x3867('0x1f')](_0x2c7dc0[_0x3867('0x27')],function(_0x32c6d3){return{'membername':_0x32c6d3[_0x3867('0x1c')],'UserId':_0x32c6d3['id'],'queue_name':_0x3962a8[_0x3867('0x1c')],'OpenchannelQueueId':_0x3962a8['id'],'interface':util[_0x3867('0x4b')](_0x3867('0x4c'),_0x3867('0x4d'),_0x32c6d3['name']),'penalty':0x0,'paused':_0x32c6d3[_0x3867('0x49')],'createdAt':_0x32c6d3[_0x3867('0x4e')],'updatedAt':_0x32c6d3[_0x3867('0x4a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3867('0x16')](respondWithFilteredResult(_0x372078,_0x5d6872))[_0x3867('0x32')](handleError(_0x372078,null));};exports['getTeams']=function(_0x4b11e0,_0x357a27){var _0xee5a3a={};var _0x17deb3={};var _0x248fc3;var _0x38b384;return db[_0x3867('0x20')][_0x3867('0x4f')]({'where':{'id':_0x4b11e0[_0x3867('0x29')]['id']}})[_0x3867('0x16')](handleEntityNotFound(_0x357a27,null))['then'](function(_0x5856d2){if(_0x5856d2){_0x248fc3=_0x5856d2;_0x17deb3[_0x3867('0x2d')]=_[_0x3867('0x2a')](db[_0x3867('0x50')][_0x3867('0x21')]);_0x17deb3[_0x3867('0x26')]=_[_0x3867('0x2a')](_0x4b11e0[_0x3867('0x26')]);_0x17deb3[_0x3867('0x2b')]=_['intersection'](_0x17deb3[_0x3867('0x2d')],_0x17deb3[_0x3867('0x26')]);_0xee5a3a['attributes']=_[_0x3867('0x2c')](_0x17deb3[_0x3867('0x2d')],qs[_0x3867('0x2f')](_0x4b11e0[_0x3867('0x26')][_0x3867('0x2f')]));_0xee5a3a[_0x3867('0x2e')]=_0xee5a3a['attributes'][_0x3867('0x51')]?_0xee5a3a[_0x3867('0x2e')]:_0x17deb3[_0x3867('0x2d')];_0xee5a3a['order']=qs[_0x3867('0x40')](_0x4b11e0[_0x3867('0x26')][_0x3867('0x40')]);_0xee5a3a['where']=qs[_0x3867('0x2b')](_[_0x3867('0x52')](_0x4b11e0[_0x3867('0x26')],_0x17deb3[_0x3867('0x2b')]));if(_0x4b11e0[_0x3867('0x26')][_0x3867('0x41')]){_0xee5a3a[_0x3867('0x24')]=_[_0x3867('0x42')](_0xee5a3a['where'],{'$or':_[_0x3867('0x1f')](_0xee5a3a[_0x3867('0x2e')],function(_0x23e2b6){var _0x194964={};_0x194964[_0x23e2b6]={'$like':'%'+_0x4b11e0['query'][_0x3867('0x41')]+'%'};return _0x194964;})});}_0xee5a3a=_[_0x3867('0x42')]({},_0xee5a3a,_0x4b11e0[_0x3867('0x43')]);return _0x248fc3['getTeams'](_0xee5a3a);}})[_0x3867('0x16')](function(_0x5976e0){if(_0x5976e0){_0x38b384=_0x5976e0['length'];if(!_0x4b11e0[_0x3867('0x26')][_0x3867('0x53')](_0x3867('0x54'))){_0xee5a3a[_0x3867('0x11')]=qs[_0x3867('0x11')](_0x4b11e0['query'][_0x3867('0x11')]);_0xee5a3a[_0x3867('0xf')]=qs[_0x3867('0xf')](_0x4b11e0[_0x3867('0x26')]['offset']);}return _0x248fc3[_0x3867('0x55')](_0xee5a3a);}})[_0x3867('0x16')](function(_0x1d5638){if(_0x1d5638){return _0x1d5638?{'count':_0x38b384,'rows':_0x1d5638}:null;}})['then'](respondWithResult(_0x357a27,null))['catch'](handleError(_0x357a27,null));};exports[_0x3867('0x56')]=function(_0x12aad5,_0x404fce){var _0x1eeb8b=_0x12aad5[_0x3867('0x34')][_0x3867('0x57')];return db[_0x3867('0x50')][_0x3867('0x44')]({'where':{'id':_0x1eeb8b},'attributes':['id'],'include':[{'model':db[_0x3867('0x45')],'as':_0x3867('0x58'),'attributes':['id',_0x3867('0x1c'),'online',_0x3867('0x59'),'interface'],'raw':!![]}]})['then'](function(_0x5babe9){if(_0x5babe9){var _0x451240=_[_0x3867('0x5a')](_0x5babe9,function(_0x5f4e0e){var _0x17e66c=_0x5f4e0e['get']({'plain':!![]});return _0x17e66c[_0x3867('0x58')];});return db[_0x3867('0x20')][_0x3867('0x31')]({'where':{'id':_0x12aad5[_0x3867('0x29')]['id']}})['then'](function(_0x1e6578){return db[_0x3867('0x5b')]['transaction'](function(_0x4679ae){return _0x1e6578[_0x3867('0x56')](_0x1eeb8b,{'transaction':_0x4679ae})[_0x3867('0x16')](function(){return BPromise['each'](_0x451240,function(_0x483041){return db[_0x3867('0x3e')][_0x3867('0x5c')]({'where':{'UserId':_0x483041['id'],'OpenchannelQueueId':_0x12aad5[_0x3867('0x29')]['id']},'transaction':_0x4679ae});});})[_0x3867('0x16')](function(){_0x451240[_0x3867('0x5d')](function(_0x47e081){socket[_0x3867('0x5e')](_0x3867('0x5f'),{'UserId':_0x47e081['id'],'OpenchannelQueueId':_0x1e6578['id']});});});});});}})[_0x3867('0x16')](respondWithStatusCode(_0x404fce,null))[_0x3867('0x32')](handleError(_0x404fce,null));};exports[_0x3867('0x60')]=function(_0x504f70,_0x462b5c){return db[_0x3867('0x50')][_0x3867('0x44')]({'where':{'id':_0x504f70['query'][_0x3867('0x57')]},'attributes':['id'],'include':[{'model':db[_0x3867('0x45')],'as':_0x3867('0x58'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x462b5c,null))[_0x3867('0x16')](function(_0x5c5281){var _0x4075c1=_[_0x3867('0x1f')](_0x5c5281,'id');var _0x33c4c6=[];var _0x7a1d59=[];var _0x4d23ad=squel[_0x3867('0x61')]();_0x4d23ad[_0x3867('0x62')](_0x3867('0x63'))['from'](_0x3867('0x64'),'tq')[_0x3867('0x65')](_0x3867('0x66'),'ut',_0x3867('0x67'))['where'](_0x3867('0x68'),_0x504f70[_0x3867('0x29')]['id']);for(var _0x223335=0x0;_0x223335<_0x5c5281[_0x3867('0x51')];_0x223335+=0x1){let _0x3c5d27=_0x5c5281[_0x223335];for(var _0x22c29f=0x0;_0x22c29f<_0x3c5d27[_0x3867('0x58')][_0x3867('0x51')];_0x22c29f+=0x1){let _0x34a0e4=_0x3c5d27[_0x3867('0x58')][_0x22c29f];var _0x413392=_0x4d23ad[_0x3867('0x69')]();_0x413392[_0x3867('0x24')]('ut.UserId\x20=\x20?',_0x34a0e4['id']);_0x7a1d59[_0x3867('0x6a')](db[_0x3867('0x5b')][_0x3867('0x26')](_0x413392['toString'](),{'type':db[_0x3867('0x5b')]['QueryTypes'][_0x3867('0x6b')]})[_0x3867('0x16')](function(_0x253b1b){if(_0x253b1b[_0x3867('0x51')]===0x1){return _0x34a0e4['id'];}else{var _0x18043f=_[_0x3867('0x6c')](_['map'](_0x253b1b,_0x3867('0x6d')),function(_0x17f4c5){return _['includes'](_0x4075c1,_0x17f4c5);});if(_0x18043f){return _0x34a0e4['id'];}}}));}}return BPromise['all'](_0x7a1d59)[_0x3867('0x16')](function(_0x2f827a){_0x33c4c6=_(_0x33c4c6)['union'](_0x2f827a)[_0x3867('0x6e')]()[_0x3867('0x6f')]();return db[_0x3867('0x20')][_0x3867('0x31')]({'where':{'id':_0x504f70[_0x3867('0x29')]['id']}})[_0x3867('0x16')](function(_0xfd1a5e){return db[_0x3867('0x5b')]['transaction'](function(_0x3a9773){return _0xfd1a5e[_0x3867('0x60')](_0x504f70[_0x3867('0x26')][_0x3867('0x57')],{'transaction':_0x3a9773})[_0x3867('0x16')](function(){if(!_[_0x3867('0x70')](_0x33c4c6)){return _0xfd1a5e[_0x3867('0x71')](_0x33c4c6,{'transaction':_0x3a9773});}})['then'](function(){_0x33c4c6[_0x3867('0x5d')](function(_0x34b832){socket[_0x3867('0x5e')]('userOpenchannelQueue:remove',{'UserId':_0x34b832,'OpenchannelQueueId':_0xfd1a5e['id']});});});});});});})[_0x3867('0x16')](respondWithStatusCode(_0x462b5c,null))[_0x3867('0x32')](handleError(_0x462b5c,null));};exports[_0x3867('0x72')]=function(_0x2e0aab,_0x4e020d){return db[_0x3867('0x20')]['find']({'where':{'id':_0x2e0aab[_0x3867('0x29')]['id']}})[_0x3867('0x16')](handleEntityNotFound(_0x4e020d,null))['then'](function(_0x5aed3f){if(_0x5aed3f){return _0x5aed3f['addAgents'](_0x2e0aab['body'][_0x3867('0x57')],_['omit'](_0x2e0aab[_0x3867('0x34')],[_0x3867('0x57'),'id'])||{})[_0x3867('0x73')](function(_0xb5a0bd){for(var _0x8910f0=0x0;_0x8910f0<_0x2e0aab[_0x3867('0x34')]['ids'][_0x3867('0x51')];_0x8910f0+=0x1){socket['emit'](_0x3867('0x5f'),{'UserId':Number(_0x2e0aab['body'][_0x3867('0x57')][_0x8910f0]),'OpenchannelQueueId':Number(_0x2e0aab[_0x3867('0x29')]['id'])});}return _0xb5a0bd;});}})['then'](respondWithResult(_0x4e020d,null))[_0x3867('0x32')](handleError(_0x4e020d,null));};exports['removeAgents']=function(_0x200b55,_0x56021a){return db[_0x3867('0x20')][_0x3867('0x31')]({'where':{'id':_0x200b55[_0x3867('0x29')]['id']}})[_0x3867('0x16')](handleEntityNotFound(_0x56021a,null))[_0x3867('0x16')](function(_0x451729){if(_0x451729){return _0x451729[_0x3867('0x71')](_0x200b55['query']['ids'])[_0x3867('0x16')](function(){if(_[_0x3867('0x74')](_0x200b55[_0x3867('0x26')][_0x3867('0x57')])){for(var _0x326375=0x0;_0x326375<_0x200b55['query'][_0x3867('0x57')][_0x3867('0x51')];_0x326375+=0x1){socket[_0x3867('0x5e')](_0x3867('0x75'),{'UserId':Number(_0x200b55['query']['ids'][_0x326375]),'OpenchannelQueueId':Number(_0x200b55[_0x3867('0x29')]['id'])});}}else{socket[_0x3867('0x5e')](_0x3867('0x75'),{'UserId':Number(_0x200b55['query'][_0x3867('0x57')]),'OpenchannelQueueId':Number(_0x200b55[_0x3867('0x29')]['id'])});}});}})[_0x3867('0x16')](respondWithStatusCode(_0x56021a,null))[_0x3867('0x32')](handleError(_0x56021a,null));};exports[_0x3867('0x76')]=function(_0x313237,_0x47413e){var _0x1da72b={};var _0x1a1f02={};var _0x213f07;var _0x1c3e25;return db['OpenchannelQueue'][_0x3867('0x4f')]({'where':{'id':_0x313237[_0x3867('0x29')]['id']}})[_0x3867('0x16')](handleEntityNotFound(_0x47413e,null))[_0x3867('0x16')](function(_0x2b6a78){if(_0x2b6a78){_0x213f07=_0x2b6a78;_0x1a1f02[_0x3867('0x2d')]=_[_0x3867('0x2a')](db['User'][_0x3867('0x21')]);_0x1a1f02[_0x3867('0x26')]=_[_0x3867('0x2a')](_0x313237[_0x3867('0x26')]);_0x1a1f02[_0x3867('0x2b')]=_[_0x3867('0x2c')](_0x1a1f02[_0x3867('0x2d')],_0x1a1f02[_0x3867('0x26')]);_0x1da72b[_0x3867('0x2e')]=_[_0x3867('0x2c')](_0x1a1f02[_0x3867('0x2d')],qs[_0x3867('0x2f')](_0x313237[_0x3867('0x26')][_0x3867('0x2f')]));_0x1da72b[_0x3867('0x2e')]=_0x1da72b['attributes'][_0x3867('0x51')]?_0x1da72b[_0x3867('0x2e')]:_0x1a1f02['model'];_0x1da72b[_0x3867('0x3f')]=qs['sort'](_0x313237[_0x3867('0x26')][_0x3867('0x40')]);_0x1da72b[_0x3867('0x24')]=qs[_0x3867('0x2b')](_['pick'](_0x313237[_0x3867('0x26')],_0x1a1f02[_0x3867('0x2b')]));if(_0x313237[_0x3867('0x26')][_0x3867('0x41')]){_0x1da72b[_0x3867('0x24')]=_['merge'](_0x1da72b[_0x3867('0x24')],{'$or':_[_0x3867('0x1f')](_0x1da72b[_0x3867('0x2e')],function(_0x127c12){var _0x1df6e4={};_0x1df6e4[_0x127c12]={'$like':'%'+_0x313237['query']['filter']+'%'};return _0x1df6e4;})});}_0x1da72b=_['merge']({},_0x1da72b,_0x313237[_0x3867('0x43')]);return _0x213f07[_0x3867('0x76')](_0x1da72b);}})['then'](function(_0x55c68){if(_0x55c68){_0x1c3e25=_0x55c68[_0x3867('0x51')];if(!_0x313237[_0x3867('0x26')][_0x3867('0x53')](_0x3867('0x54'))){_0x1da72b[_0x3867('0x11')]=qs[_0x3867('0x11')](_0x313237[_0x3867('0x26')][_0x3867('0x11')]);_0x1da72b[_0x3867('0xf')]=qs[_0x3867('0xf')](_0x313237[_0x3867('0x26')][_0x3867('0xf')]);}return _0x213f07[_0x3867('0x76')](_0x1da72b);}})[_0x3867('0x16')](function(_0x5038a4){if(_0x5038a4){return _0x5038a4?{'count':_0x1c3e25,'rows':_0x5038a4}:null;}})[_0x3867('0x16')](respondWithResult(_0x47413e,null))[_0x3867('0x32')](handleError(_0x47413e,null));};
\ No newline at end of file
index dd5ecaf..2ca5f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3930=['exports','events','OpenchannelQueue','setMaxListeners','update','remove','emit','hook'];(function(_0x414af5,_0x1c5e8c){var _0x30ebf3=function(_0x18c7ef){while(--_0x18c7ef){_0x414af5['push'](_0x414af5['shift']());}};_0x30ebf3(++_0x1c5e8c);}(_0x3930,0x69));var _0x0393=function(_0x1cf629,_0x4a070a){_0x1cf629=_0x1cf629-0x0;var _0x581d42=_0x3930[_0x1cf629];return _0x581d42;};'use strict';var EventEmitter=require(_0x0393('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0x0393('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x0393('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0393('0x3'),'afterDestroy':_0x0393('0x4')};function emitEvent(_0x49fb6e){return function(_0x5583a2,_0x1beba5,_0x41537b){OpenchannelQueueEvents[_0x0393('0x5')](_0x49fb6e+':'+_0x5583a2['id'],_0x5583a2);OpenchannelQueueEvents[_0x0393('0x5')](_0x49fb6e,_0x5583a2);_0x41537b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0x0393('0x6')](e,emitEvent(event));}}module[_0x0393('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xce15=['emit','hasOwnProperty','hook','events','OpenchannelQueue','setMaxListeners','save','update','remove'];(function(_0xbd94fa,_0x4eaa10){var _0x475184=function(_0x15a739){while(--_0x15a739){_0xbd94fa['push'](_0xbd94fa['shift']());}};_0x475184(++_0x4eaa10);}(_0xce15,0xa5));var _0x5ce1=function(_0x2e71ba,_0x4e04f4){_0x2e71ba=_0x2e71ba-0x0;var _0x4715d4=_0xce15[_0x2e71ba];return _0x4715d4;};'use strict';var EventEmitter=require(_0x5ce1('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0x5ce1('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x5ce1('0x2')](0x0);var events={'afterCreate':_0x5ce1('0x3'),'afterUpdate':_0x5ce1('0x4'),'afterDestroy':_0x5ce1('0x5')};function emitEvent(_0x5a7973){return function(_0x376938,_0x5c9e4f,_0x1e172f){OpenchannelQueueEvents[_0x5ce1('0x6')](_0x5a7973+':'+_0x376938['id'],_0x376938);OpenchannelQueueEvents['emit'](_0x5a7973,_0x376938);_0x1e172f(null);};}for(var e in events){if(events[_0x5ce1('0x7')](e)){var event=events[e];OpenchannelQueue[_0x5ce1('0x8')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index 55c00cd..ab705d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa086=['../../config/environment','./openchannelQueue.attributes','OpenchannelQueue','openchannel_queues','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x40f9ca,_0x41e00f){var _0x1d069a=function(_0xaaf47b){while(--_0xaaf47b){_0x40f9ca['push'](_0x40f9ca['shift']());}};_0x1d069a(++_0x41e00f);}(_0xa086,0x1bd));var _0x6a08=function(_0x195134,_0x59270a){_0x195134=_0x195134-0x0;var _0x2b941b=_0xa086[_0x195134];return _0x2b941b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6a08('0x0'))('api');var moment=require('moment');var BPromise=require(_0x6a08('0x1'));var rp=require(_0x6a08('0x2'));var fs=require('fs');var path=require(_0x6a08('0x3'));var rimraf=require(_0x6a08('0x4'));var config=require(_0x6a08('0x5'));var attributes=require(_0x6a08('0x6'));module['exports']=function(_0x5e1435,_0x6cf681){return _0x5e1435['define'](_0x6a08('0x7'),attributes,{'tableName':_0x6a08('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d0f=['OpenchannelQueue','openchannel_queues','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x3d0f,0x10a));var _0xf3d0=function(_0x55fb83,_0x1d3856){_0x55fb83=_0x55fb83-0x0;var _0x59a87a=_0x3d0f[_0x55fb83];return _0x59a87a;};'use strict';var _=require(_0xf3d0('0x0'));var util=require(_0xf3d0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf3d0('0x2'));var BPromise=require(_0xf3d0('0x3'));var rp=require(_0xf3d0('0x4'));var fs=require('fs');var path=require(_0xf3d0('0x5'));var rimraf=require(_0xf3d0('0x6'));var config=require(_0xf3d0('0x7'));var attributes=require('./openchannelQueue.attributes');module[_0xf3d0('0x8')]=function(_0xe0533d,_0x2cda66){return _0xe0533d['define'](_0xf3d0('0x9'),attributes,{'tableName':_0xf3d0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5d8320..9ac3a13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x956d=['options','raw','where','limit','include','map','model','attributes','ShowOpenchannelQueue','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll'];(function(_0x1ffd80,_0x2ca191){var _0x486a29=function(_0x286c30){while(--_0x286c30){_0x1ffd80['push'](_0x1ffd80['shift']());}};_0x486a29(++_0x2ca191);}(_0x956d,0x1ad));var _0xd956=function(_0x5d3475,_0x4bf132){_0x5d3475=_0x5d3475-0x0;var _0x1bde41=_0x956d[_0x5d3475];return _0x1bde41;};'use strict';var _=require(_0xd956('0x0'));var util=require('util');var moment=require(_0xd956('0x1'));var BPromise=require(_0xd956('0x2'));var rs=require(_0xd956('0x3'));var fs=require('fs');var Redis=require(_0xd956('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd956('0x5'));var logger=require(_0xd956('0x6'))(_0xd956('0x7'));var config=require(_0xd956('0x8'));var jayson=require(_0xd956('0x9'));var client=jayson[_0xd956('0xa')][_0xd956('0xb')]({'port':0x232a});config[_0xd956('0xc')]=_[_0xd956('0xd')](config[_0xd956('0xc')],{'host':_0xd956('0xe'),'port':0x18eb});var socket=require(_0xd956('0xf'))(new Redis(config[_0xd956('0xc')]));require(_0xd956('0x10'))[_0xd956('0x11')](socket);function respondWithRpcPromise(_0x2e0e02,_0x15e106,_0x1c8253){return new BPromise(function(_0x6320a4,_0x9b3969){return client[_0xd956('0x12')](_0x2e0e02,_0x1c8253)[_0xd956('0x13')](function(_0xae6f6b){logger['info'](_0xd956('0x14'),_0x15e106,_0xd956('0x15'));logger[_0xd956('0x16')](_0xd956('0x17'),_0x15e106,_0xd956('0x15'),JSON[_0xd956('0x18')](_0xae6f6b));if(_0xae6f6b[_0xd956('0x19')]){if(_0xae6f6b[_0xd956('0x19')]['code']===0x1f4){logger[_0xd956('0x19')](_0xd956('0x14'),_0x15e106,_0xae6f6b[_0xd956('0x19')]['message']);return _0x9b3969(_0xae6f6b[_0xd956('0x19')][_0xd956('0x1a')]);}logger[_0xd956('0x19')]('OpenchannelQueue,\x20%s,\x20%s',_0x15e106,_0xae6f6b['error'][_0xd956('0x1a')]);return _0x6320a4(_0xae6f6b[_0xd956('0x19')][_0xd956('0x1a')]);}else{logger[_0xd956('0x1b')](_0xd956('0x14'),_0x15e106,_0xd956('0x15'));_0x6320a4(_0xae6f6b[_0xd956('0x1c')][_0xd956('0x1a')]);}})[_0xd956('0x1d')](function(_0x852dfb){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x15e106,_0x852dfb);_0x9b3969(_0x852dfb);});});}exports[_0xd956('0x1e')]=function(_0x1641b2){var _0x4b4af7=this;return new Promise(function(_0x4e151a,_0x57e396){return db[_0xd956('0x1f')][_0xd956('0x20')]({'raw':_0x1641b2['options']?_0x1641b2[_0xd956('0x21')][_0xd956('0x22')]===undefined?!![]:![]:!![],'where':_0x1641b2['options']?_0x1641b2[_0xd956('0x21')][_0xd956('0x23')]||null:null,'attributes':_0x1641b2['options']?_0x1641b2[_0xd956('0x21')]['attributes']||null:null,'limit':_0x1641b2[_0xd956('0x21')]?_0x1641b2[_0xd956('0x21')][_0xd956('0x24')]||null:null,'include':_0x1641b2[_0xd956('0x21')]?_0x1641b2['options'][_0xd956('0x25')]?_[_0xd956('0x26')](_0x1641b2['options'][_0xd956('0x25')],function(_0x24f77f){return{'model':db[_0x24f77f[_0xd956('0x27')]],'as':_0x24f77f['as'],'attributes':_0x24f77f['attributes'],'include':_0x24f77f['include']?_[_0xd956('0x26')](_0x24f77f[_0xd956('0x25')],function(_0x369502){return{'model':db[_0x369502[_0xd956('0x27')]],'as':_0x369502['as'],'attributes':_0x369502['attributes'],'include':_0x369502[_0xd956('0x25')]?_[_0xd956('0x26')](_0x369502[_0xd956('0x25')],function(_0x16a7f3){return{'model':db[_0x16a7f3[_0xd956('0x27')]],'as':_0x16a7f3['as'],'attributes':_0x16a7f3[_0xd956('0x28')]};}):[]};}):[]};}):[]:[]})[_0xd956('0x13')](function(_0x5362c3){logger[_0xd956('0x1b')](_0xd956('0x1e'),_0x1641b2);logger[_0xd956('0x16')]('GetOpenchannelQueue',_0x1641b2,JSON[_0xd956('0x18')](_0x5362c3));_0x4e151a(_0x5362c3);})[_0xd956('0x1d')](function(_0x20ab2e){logger[_0xd956('0x19')]('GetOpenchannelQueue',_0x20ab2e['message'],_0x1641b2);_0x57e396(_0x4b4af7[_0xd956('0x19')](0x1f4,_0x20ab2e['message']));});});};exports[_0xd956('0x29')]=function(_0x177d65){var _0x1ffff9=this;return new Promise(function(_0x3f54e4,_0x503154){return db[_0xd956('0x1f')]['find']({'raw':_0x177d65[_0xd956('0x21')]?_0x177d65[_0xd956('0x21')][_0xd956('0x22')]===undefined?!![]:![]:!![],'where':_0x177d65[_0xd956('0x21')]?_0x177d65[_0xd956('0x21')][_0xd956('0x23')]||null:null,'attributes':_0x177d65[_0xd956('0x21')]?_0x177d65['options']['attributes']||null:null,'include':_0x177d65[_0xd956('0x21')]?_0x177d65['options'][_0xd956('0x25')]?_[_0xd956('0x26')](_0x177d65[_0xd956('0x21')]['include'],function(_0x4e490b){return{'model':db[_0x4e490b[_0xd956('0x27')]],'as':_0x4e490b['as'],'attributes':_0x4e490b['attributes'],'include':_0x4e490b[_0xd956('0x25')]?_[_0xd956('0x26')](_0x4e490b[_0xd956('0x25')],function(_0x495821){return{'model':db[_0x495821['model']],'as':_0x495821['as'],'attributes':_0x495821['attributes'],'include':_0x495821[_0xd956('0x25')]?_[_0xd956('0x26')](_0x495821['include'],function(_0x4fd56f){return{'model':db[_0x4fd56f['model']],'as':_0x4fd56f['as'],'attributes':_0x4fd56f[_0xd956('0x28')]};}):[]};}):[]};}):[]:[]})[_0xd956('0x13')](function(_0x2638ac){logger[_0xd956('0x1b')]('ShowOpenchannelQueue',_0x177d65);logger[_0xd956('0x16')]('ShowOpenchannelQueue',_0x177d65,JSON['stringify'](_0x2638ac));_0x3f54e4(_0x2638ac);})['catch'](function(_0x19c960){logger[_0xd956('0x19')](_0xd956('0x29'),_0x19c960[_0xd956('0x1a')],_0x177d65);_0x503154(_0x1ffff9['error'](0x1f4,_0x19c960[_0xd956('0x1a')]));});});};
\ No newline at end of file
+var _0xe699=['then','ShowOpenchannelQueue','find','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','localhost','socket.io-emitter','request','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','options','raw','where','attributes','limit','include','model','map'];(function(_0x504c88,_0x28d52f){var _0x23d152=function(_0x194084){while(--_0x194084){_0x504c88['push'](_0x504c88['shift']());}};_0x23d152(++_0x28d52f);}(_0xe699,0x1bf));var _0x9e69=function(_0x1f9e35,_0x5497e2){_0x1f9e35=_0x1f9e35-0x0;var _0x55fc95=_0xe699[_0x1f9e35];return _0x55fc95;};'use strict';var _=require('lodash');var util=require(_0x9e69('0x0'));var moment=require(_0x9e69('0x1'));var BPromise=require(_0x9e69('0x2'));var rs=require(_0x9e69('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e69('0x4'))['db'];var utils=require(_0x9e69('0x5'));var logger=require(_0x9e69('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9e69('0x7'));var client=jayson['client'][_0x9e69('0x8')]({'port':0x232a});config[_0x9e69('0x9')]=_['defaults'](config[_0x9e69('0x9')],{'host':_0x9e69('0xa'),'port':0x18eb});var socket=require(_0x9e69('0xb'))(new Redis(config[_0x9e69('0x9')]));require('./openchannelQueue.socket')['register'](socket);function respondWithRpcPromise(_0x389deb,_0xf84c46,_0x39062a){return new BPromise(function(_0x326a85,_0x3fe7aa){return client[_0x9e69('0xc')](_0x389deb,_0x39062a)['then'](function(_0x271a63){logger[_0x9e69('0xd')](_0x9e69('0xe'),_0xf84c46,_0x9e69('0xf'));logger[_0x9e69('0x10')](_0x9e69('0x11'),_0xf84c46,_0x9e69('0xf'),JSON[_0x9e69('0x12')](_0x271a63));if(_0x271a63[_0x9e69('0x13')]){if(_0x271a63[_0x9e69('0x13')][_0x9e69('0x14')]===0x1f4){logger[_0x9e69('0x13')](_0x9e69('0xe'),_0xf84c46,_0x271a63['error'][_0x9e69('0x15')]);return _0x3fe7aa(_0x271a63['error'][_0x9e69('0x15')]);}logger[_0x9e69('0x13')](_0x9e69('0xe'),_0xf84c46,_0x271a63[_0x9e69('0x13')][_0x9e69('0x15')]);return _0x326a85(_0x271a63[_0x9e69('0x13')][_0x9e69('0x15')]);}else{logger[_0x9e69('0xd')]('OpenchannelQueue,\x20%s,\x20%s',_0xf84c46,_0x9e69('0xf'));_0x326a85(_0x271a63[_0x9e69('0x16')][_0x9e69('0x15')]);}})[_0x9e69('0x17')](function(_0x31fa77){logger[_0x9e69('0x13')](_0x9e69('0xe'),_0xf84c46,_0x31fa77);_0x3fe7aa(_0x31fa77);});});}exports[_0x9e69('0x18')]=function(_0x39924e){var _0x1af791=this;return new Promise(function(_0x539865,_0x194f6c){return db[_0x9e69('0x19')]['findAll']({'raw':_0x39924e['options']?_0x39924e[_0x9e69('0x1a')][_0x9e69('0x1b')]===undefined?!![]:![]:!![],'where':_0x39924e[_0x9e69('0x1a')]?_0x39924e[_0x9e69('0x1a')][_0x9e69('0x1c')]||null:null,'attributes':_0x39924e[_0x9e69('0x1a')]?_0x39924e[_0x9e69('0x1a')][_0x9e69('0x1d')]||null:null,'limit':_0x39924e[_0x9e69('0x1a')]?_0x39924e['options'][_0x9e69('0x1e')]||null:null,'include':_0x39924e['options']?_0x39924e['options'][_0x9e69('0x1f')]?_['map'](_0x39924e[_0x9e69('0x1a')][_0x9e69('0x1f')],function(_0x1bdf60){return{'model':db[_0x1bdf60[_0x9e69('0x20')]],'as':_0x1bdf60['as'],'attributes':_0x1bdf60['attributes'],'include':_0x1bdf60[_0x9e69('0x1f')]?_[_0x9e69('0x21')](_0x1bdf60[_0x9e69('0x1f')],function(_0x586a01){return{'model':db[_0x586a01[_0x9e69('0x20')]],'as':_0x586a01['as'],'attributes':_0x586a01[_0x9e69('0x1d')],'include':_0x586a01[_0x9e69('0x1f')]?_[_0x9e69('0x21')](_0x586a01['include'],function(_0x5bf072){return{'model':db[_0x5bf072[_0x9e69('0x20')]],'as':_0x5bf072['as'],'attributes':_0x5bf072['attributes']};}):[]};}):[]};}):[]:[]})[_0x9e69('0x22')](function(_0x44521a){logger[_0x9e69('0xd')](_0x9e69('0x18'),_0x39924e);logger[_0x9e69('0x10')](_0x9e69('0x18'),_0x39924e,JSON[_0x9e69('0x12')](_0x44521a));_0x539865(_0x44521a);})[_0x9e69('0x17')](function(_0x35f2c5){logger[_0x9e69('0x13')](_0x9e69('0x18'),_0x35f2c5[_0x9e69('0x15')],_0x39924e);_0x194f6c(_0x1af791['error'](0x1f4,_0x35f2c5[_0x9e69('0x15')]));});});};exports[_0x9e69('0x23')]=function(_0x3fe323){var _0x54b345=this;return new Promise(function(_0x75b201,_0x3407db){return db[_0x9e69('0x19')][_0x9e69('0x24')]({'raw':_0x3fe323[_0x9e69('0x1a')]?_0x3fe323[_0x9e69('0x1a')][_0x9e69('0x1b')]===undefined?!![]:![]:!![],'where':_0x3fe323[_0x9e69('0x1a')]?_0x3fe323[_0x9e69('0x1a')][_0x9e69('0x1c')]||null:null,'attributes':_0x3fe323['options']?_0x3fe323[_0x9e69('0x1a')]['attributes']||null:null,'include':_0x3fe323[_0x9e69('0x1a')]?_0x3fe323[_0x9e69('0x1a')][_0x9e69('0x1f')]?_[_0x9e69('0x21')](_0x3fe323[_0x9e69('0x1a')][_0x9e69('0x1f')],function(_0x46a539){return{'model':db[_0x46a539[_0x9e69('0x20')]],'as':_0x46a539['as'],'attributes':_0x46a539[_0x9e69('0x1d')],'include':_0x46a539[_0x9e69('0x1f')]?_[_0x9e69('0x21')](_0x46a539['include'],function(_0x56fcb4){return{'model':db[_0x56fcb4[_0x9e69('0x20')]],'as':_0x56fcb4['as'],'attributes':_0x56fcb4[_0x9e69('0x1d')],'include':_0x56fcb4['include']?_['map'](_0x56fcb4[_0x9e69('0x1f')],function(_0x39eaef){return{'model':db[_0x39eaef[_0x9e69('0x20')]],'as':_0x39eaef['as'],'attributes':_0x39eaef['attributes']};}):[]};}):[]};}):[]:[]})[_0x9e69('0x22')](function(_0x49e55a){logger[_0x9e69('0xd')](_0x9e69('0x23'),_0x3fe323);logger['debug'](_0x9e69('0x23'),_0x3fe323,JSON[_0x9e69('0x12')](_0x49e55a));_0x75b201(_0x49e55a);})[_0x9e69('0x17')](function(_0x19846f){logger[_0x9e69('0x13')](_0x9e69('0x23'),_0x19846f['message'],_0x3fe323);_0x3407db(_0x54b345[_0x9e69('0x13')](0x1f4,_0x19846f['message']));});});};
\ No newline at end of file
index a96a86a..4e9700f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9428=['removeListener','register','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit'];(function(_0x56e5a4,_0x3378ff){var _0x446855=function(_0x4a791f){while(--_0x4a791f){_0x56e5a4['push'](_0x56e5a4['shift']());}};_0x446855(++_0x3378ff);}(_0x9428,0xa3));var _0x8942=function(_0x1b8d87,_0x4168fb){_0x1b8d87=_0x1b8d87-0x0;var _0x182b74=_0x9428[_0x1b8d87];return _0x182b74;};'use strict';var OpenchannelQueueEvents=require(_0x8942('0x0'));var events=[_0x8942('0x1'),_0x8942('0x2'),_0x8942('0x3')];function createListener(_0x2611ba,_0x5050c1){return function(_0x489cab){_0x5050c1[_0x8942('0x4')](_0x2611ba,_0x489cab);};}function removeListener(_0x1e0fc6,_0x1e985e){return function(){OpenchannelQueueEvents[_0x8942('0x5')](_0x1e0fc6,_0x1e985e);};}exports[_0x8942('0x6')]=function(_0x5a8e33){for(var _0x2664e5=0x0,_0x459ab7=events['length'];_0x2664e5<_0x459ab7;_0x2664e5++){var _0x3531c6=events[_0x2664e5];var _0x30d632=createListener(_0x8942('0x7')+_0x3531c6,_0x5a8e33);OpenchannelQueueEvents['on'](_0x3531c6,_0x30d632);}};
\ No newline at end of file
+var _0xd115=['length','save','update','removeListener'];(function(_0x53abe5,_0x33a9e5){var _0xc1c37e=function(_0xd53c6e){while(--_0xd53c6e){_0x53abe5['push'](_0x53abe5['shift']());}};_0xc1c37e(++_0x33a9e5);}(_0xd115,0x195));var _0x5d11=function(_0x31d287,_0x1ea903){_0x31d287=_0x31d287-0x0;var _0x3448e5=_0xd115[_0x31d287];return _0x3448e5;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0x5d11('0x0'),'remove',_0x5d11('0x1')];function createListener(_0x421c39,_0x855c34){return function(_0x22f085){_0x855c34['emit'](_0x421c39,_0x22f085);};}function removeListener(_0x39bfb1,_0x5e692a){return function(){OpenchannelQueueEvents[_0x5d11('0x2')](_0x39bfb1,_0x5e692a);};}exports['register']=function(_0x35a779){for(var _0x128e9f=0x0,_0x2d9021=events[_0x5d11('0x3')];_0x128e9f<_0x2d9021;_0x128e9f++){var _0x39d49f=events[_0x128e9f];var _0x4a0e75=createListener('openchannelQueue:'+_0x39d49f,_0x35a779);OpenchannelQueueEvents['on'](_0x39d49f,_0x4a0e75);}};
\ No newline at end of file
index 77b35b2..3b8842f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ab8=['create','put','update','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','/:id','show','post'];(function(_0x3bc048,_0x9ed707){var _0x55f1b2=function(_0x4edfae){while(--_0x4edfae){_0x3bc048['push'](_0x3bc048['shift']());}};_0x55f1b2(++_0x9ed707);}(_0x0ab8,0x89));var _0x80ab=function(_0x3d5608,_0x338845){_0x3d5608=_0x3d5608-0x0;var _0xd3e0d4=_0x0ab8[_0x3d5608];return _0xd3e0d4;};'use strict';var multer=require(_0x80ab('0x0'));var util=require(_0x80ab('0x1'));var path=require(_0x80ab('0x2'));var timeout=require('connect-timeout');var express=require(_0x80ab('0x3'));var router=express[_0x80ab('0x4')]();var fs_extra=require(_0x80ab('0x5'));var auth=require(_0x80ab('0x6'));var interaction=require(_0x80ab('0x7'));var config=require(_0x80ab('0x8'));var controller=require(_0x80ab('0x9'));router[_0x80ab('0xa')]('/',auth[_0x80ab('0xb')](),controller['index']);router[_0x80ab('0xa')]('/describe',auth[_0x80ab('0xb')](),controller['describe']);router[_0x80ab('0xa')](_0x80ab('0xc'),auth[_0x80ab('0xb')](),controller[_0x80ab('0xd')]);router[_0x80ab('0xe')]('/',auth['isAuthenticated'](),controller[_0x80ab('0xf')]);router[_0x80ab('0x10')](_0x80ab('0xc'),auth[_0x80ab('0xb')](),controller[_0x80ab('0x11')]);router[_0x80ab('0x12')](_0x80ab('0xc'),auth[_0x80ab('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7b95=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','post','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x19212f,_0x2307be){var _0x4fc573=function(_0x55827f){while(--_0x55827f){_0x19212f['push'](_0x19212f['shift']());}};_0x4fc573(++_0x2307be);}(_0x7b95,0xaf));var _0x57b9=function(_0x885fba,_0x32bcda){_0x885fba=_0x885fba-0x0;var _0x5a2c7f=_0x7b95[_0x885fba];return _0x5a2c7f;};'use strict';var multer=require(_0x57b9('0x0'));var util=require(_0x57b9('0x1'));var path=require('path');var timeout=require(_0x57b9('0x2'));var express=require(_0x57b9('0x3'));var router=express[_0x57b9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x57b9('0x5'));var interaction=require(_0x57b9('0x6'));var config=require(_0x57b9('0x7'));var controller=require('./openchannelQueueReport.controller');router[_0x57b9('0x8')]('/',auth['isAuthenticated'](),controller[_0x57b9('0x9')]);router[_0x57b9('0x8')](_0x57b9('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x57b9('0x8')]('/:id',auth[_0x57b9('0xb')](),controller['show']);router[_0x57b9('0xc')]('/',auth[_0x57b9('0xb')](),controller['create']);router['put'](_0x57b9('0xd'),auth[_0x57b9('0xb')](),controller[_0x57b9('0xe')]);router[_0x57b9('0xf')](_0x57b9('0xd'),auth[_0x57b9('0xb')](),controller[_0x57b9('0x10')]);module[_0x57b9('0x11')]=router;
\ No newline at end of file
index d7eb1a8..2e94b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6841=['exports','STRING','DATE','moment','sequelize'];(function(_0x5c4b53,_0x4e8a){var _0x38f76c=function(_0x5e3648){while(--_0x5e3648){_0x5c4b53['push'](_0x5c4b53['shift']());}};_0x38f76c(++_0x4e8a);}(_0x6841,0xc6));var _0x1684=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x6841[_0x6c993a];return _0x27f547;};'use strict';var moment=require(_0x1684('0x0'));var Sequelize=require(_0x1684('0x1'));module[_0x1684('0x2')]={'uniqueid':{'type':Sequelize[_0x1684('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x1684('0x4')]},'leaveAt':{'type':Sequelize[_0x1684('0x4')]},'acceptAt':{'type':Sequelize[_0x1684('0x4')]},'exitAt':{'type':Sequelize[_0x1684('0x4')]},'reason':{'type':Sequelize[_0x1684('0x3')]}};
\ No newline at end of file
+var _0x0223=['moment','sequelize','exports','STRING','DATE'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0x0223,0xaf));var _0x3022=function(_0x1808b2,_0x35f5a6){_0x1808b2=_0x1808b2-0x0;var _0x498147=_0x0223[_0x1808b2];return _0x498147;};'use strict';var moment=require(_0x3022('0x0'));var Sequelize=require(_0x3022('0x1'));module[_0x3022('0x2')]={'uniqueid':{'type':Sequelize[_0x3022('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x3022('0x4')]},'leaveAt':{'type':Sequelize[_0x3022('0x4')]},'acceptAt':{'type':Sequelize[_0x3022('0x4')]},'exitAt':{'type':Sequelize[_0x3022('0x4')]},'reason':{'type':Sequelize[_0x3022('0x3')]}};
\ No newline at end of file
index c969b4a..a8de101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d48=['intersection','attributes','fields','length','hasOwnProperty','nolimit','pick','filter','where','merge','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../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','offset','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','model','query','keys','filters'];(function(_0x298dcd,_0x286229){var _0x1589c4=function(_0x7b3543){while(--_0x7b3543){_0x298dcd['push'](_0x298dcd['shift']());}};_0x1589c4(++_0x286229);}(_0x1d48,0xb9));var _0x81d4=function(_0x4eb31d,_0x2d2c7c){_0x4eb31d=_0x4eb31d-0x0;var _0x540d17=_0x1d48[_0x4eb31d];return _0x540d17;};'use strict';var emlformat=require(_0x81d4('0x0'));var rimraf=require(_0x81d4('0x1'));var zipdir=require(_0x81d4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x81d4('0x3'));var moment=require(_0x81d4('0x4'));var BPromise=require(_0x81d4('0x5'));var Mustache=require('mustache');var util=require(_0x81d4('0x6'));var path=require(_0x81d4('0x7'));var sox=require(_0x81d4('0x8'));var csv=require(_0x81d4('0x9'));var ejs=require(_0x81d4('0xa'));var fs=require('fs');var fs_extra=require(_0x81d4('0xb'));var _=require(_0x81d4('0xc'));var squel=require(_0x81d4('0xd'));var crypto=require(_0x81d4('0xe'));var jsforce=require(_0x81d4('0xf'));var deskjs=require(_0x81d4('0x10'));var toCsv=require('to-csv');var querystring=require(_0x81d4('0x11'));var Papa=require(_0x81d4('0x12'));var Redis=require('ioredis');var authService=require(_0x81d4('0x13'));var qs=require(_0x81d4('0x14'));var as=require(_0x81d4('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x81d4('0x16'))(_0x81d4('0x17'));var utils=require(_0x81d4('0x18'));var config=require(_0x81d4('0x19'));var licenseUtil=require(_0x81d4('0x1a'));var db=require(_0x81d4('0x1b'))['db'];function respondWithStatusCode(_0x802ab6,_0x441b09){_0x441b09=_0x441b09||0xcc;return function(_0x3b32df){if(_0x3b32df){return _0x802ab6[_0x81d4('0x1c')](_0x441b09);}return _0x802ab6[_0x81d4('0x1d')](_0x441b09)[_0x81d4('0x1e')]();};}function respondWithResult(_0x3a7e29,_0x276157){_0x276157=_0x276157||0xc8;return function(_0x571632){if(_0x571632){return _0x3a7e29['status'](_0x276157)[_0x81d4('0x1f')](_0x571632);}};}function respondWithFilteredResult(_0xee87a9,_0x21f0a3){return function(_0x30c860){if(_0x30c860){var _0x4d8f78=typeof _0x21f0a3['offset']===_0x81d4('0x20')&&typeof _0x21f0a3[_0x81d4('0x21')]===_0x81d4('0x20');var _0x2d6ef2=_0x30c860['count'];var _0x2138b8=_0x4d8f78?0x0:_0x21f0a3['offset'];var _0x3f0c4d=_0x4d8f78?_0x30c860[_0x81d4('0x22')]:_0x21f0a3[_0x81d4('0x23')]+_0x21f0a3[_0x81d4('0x21')];var _0x61efb8;if(_0x3f0c4d>=_0x2d6ef2){_0x3f0c4d=_0x2d6ef2;_0x61efb8=0xc8;}else{_0x61efb8=0xce;}_0xee87a9[_0x81d4('0x1d')](_0x61efb8);return _0xee87a9[_0x81d4('0x24')](_0x81d4('0x25'),_0x2138b8+'-'+_0x3f0c4d+'/'+_0x2d6ef2)[_0x81d4('0x1f')](_0x30c860);}return null;};}function patchUpdates(_0x3e4b78){return function(_0x37b7e6){try{jsonpatch[_0x81d4('0x26')](_0x37b7e6,_0x3e4b78,!![]);}catch(_0x149e56){return BPromise[_0x81d4('0x27')](_0x149e56);}return _0x37b7e6[_0x81d4('0x28')]();};}function saveUpdates(_0x46eb30,_0x2c34bb){return function(_0x496287){if(_0x496287){return _0x496287[_0x81d4('0x29')](_0x46eb30)['then'](function(_0x10134c){return _0x10134c;});}return null;};}function removeEntity(_0x42a3a7,_0x772e0f){return function(_0x22e4f8){if(_0x22e4f8){return _0x22e4f8[_0x81d4('0x2a')]()[_0x81d4('0x2b')](function(){_0x42a3a7[_0x81d4('0x1d')](0xcc)[_0x81d4('0x1e')]();});}};}function handleEntityNotFound(_0x384373,_0x33774f){return function(_0x3fdef3){if(!_0x3fdef3){_0x384373['sendStatus'](0x194);}return _0x3fdef3;};}function handleError(_0x5813a5,_0x5e71ed){_0x5e71ed=_0x5e71ed||0x1f4;return function(_0x23d55b){logger[_0x81d4('0x2c')](_0x23d55b[_0x81d4('0x2d')]);if(_0x23d55b[_0x81d4('0x2e')]){delete _0x23d55b[_0x81d4('0x2e')];}_0x5813a5[_0x81d4('0x1d')](_0x5e71ed)[_0x81d4('0x2f')](_0x23d55b);};}exports[_0x81d4('0x30')]=function(_0x1ed102,_0x5d6009){var _0x51433d={},_0x1c8303={},_0x1c847a={'count':0x0,'rows':[]};var _0x374905=_[_0x81d4('0x31')](db[_0x81d4('0x32')][_0x81d4('0x33')],function(_0x979ae8){return{'name':_0x979ae8[_0x81d4('0x34')],'type':_0x979ae8[_0x81d4('0x35')]['key']};});_0x1c8303[_0x81d4('0x36')]=_['map'](_0x374905,'name');_0x1c8303[_0x81d4('0x37')]=_[_0x81d4('0x38')](_0x1ed102[_0x81d4('0x37')]);_0x1c8303[_0x81d4('0x39')]=_[_0x81d4('0x3a')](_0x1c8303[_0x81d4('0x36')],_0x1c8303[_0x81d4('0x37')]);_0x51433d[_0x81d4('0x3b')]=_[_0x81d4('0x3a')](_0x1c8303[_0x81d4('0x36')],qs[_0x81d4('0x3c')](_0x1ed102[_0x81d4('0x37')]['fields']));_0x51433d[_0x81d4('0x3b')]=_0x51433d[_0x81d4('0x3b')][_0x81d4('0x3d')]?_0x51433d['attributes']:_0x1c8303['model'];if(!_0x1ed102['query'][_0x81d4('0x3e')](_0x81d4('0x3f'))){_0x51433d[_0x81d4('0x21')]=qs[_0x81d4('0x21')](_0x1ed102[_0x81d4('0x37')][_0x81d4('0x21')]);_0x51433d[_0x81d4('0x23')]=qs[_0x81d4('0x23')](_0x1ed102[_0x81d4('0x37')][_0x81d4('0x23')]);}_0x51433d['order']=qs['sort'](_0x1ed102[_0x81d4('0x37')]['sort']);_0x51433d['where']=qs['filters'](_[_0x81d4('0x40')](_0x1ed102[_0x81d4('0x37')],_0x1c8303[_0x81d4('0x39')]),_0x374905);if(_0x1ed102['query'][_0x81d4('0x41')]){_0x51433d[_0x81d4('0x42')]=_[_0x81d4('0x43')](_0x51433d[_0x81d4('0x42')],{'$or':_[_0x81d4('0x31')](_0x374905,function(_0x145465){if(_0x145465['type']!==_0x81d4('0x44')){var _0x656801={};_0x656801[_0x145465[_0x81d4('0x2e')]]={'$like':'%'+_0x1ed102['query'][_0x81d4('0x41')]+'%'};return _0x656801;}})});}_0x51433d=_[_0x81d4('0x43')]({},_0x51433d,_0x1ed102[_0x81d4('0x45')]);var _0x4ab336={'where':_0x51433d['where']};return db['OpenchannelQueueReport'][_0x81d4('0x22')](_0x4ab336)['then'](function(_0x5108ed){_0x1c847a[_0x81d4('0x22')]=_0x5108ed;if(_0x1ed102[_0x81d4('0x37')]['includeAll']){_0x51433d['include']=[{'all':!![]}];}return db[_0x81d4('0x32')][_0x81d4('0x46')](_0x51433d);})[_0x81d4('0x2b')](function(_0x3ba417){_0x1c847a[_0x81d4('0x47')]=_0x3ba417;return _0x1c847a;})['then'](respondWithFilteredResult(_0x5d6009,_0x51433d))[_0x81d4('0x48')](handleError(_0x5d6009,null));};exports[_0x81d4('0x49')]=function(_0x4f1bf7,_0x4443d4){var _0x35b0c0={'raw':!![],'where':{'id':_0x4f1bf7[_0x81d4('0x4a')]['id']}},_0xc19dee={};_0xc19dee[_0x81d4('0x36')]=_[_0x81d4('0x38')](db[_0x81d4('0x32')][_0x81d4('0x33')]);_0xc19dee[_0x81d4('0x37')]=_[_0x81d4('0x38')](_0x4f1bf7[_0x81d4('0x37')]);_0xc19dee[_0x81d4('0x39')]=_[_0x81d4('0x3a')](_0xc19dee[_0x81d4('0x36')],_0xc19dee[_0x81d4('0x37')]);_0x35b0c0['attributes']=_['intersection'](_0xc19dee['model'],qs[_0x81d4('0x3c')](_0x4f1bf7[_0x81d4('0x37')][_0x81d4('0x3c')]));_0x35b0c0['attributes']=_0x35b0c0[_0x81d4('0x3b')][_0x81d4('0x3d')]?_0x35b0c0[_0x81d4('0x3b')]:_0xc19dee[_0x81d4('0x36')];if(_0x4f1bf7[_0x81d4('0x37')][_0x81d4('0x4b')]){_0x35b0c0[_0x81d4('0x4c')]=[{'all':!![]}];}_0x35b0c0=_['merge']({},_0x35b0c0,_0x4f1bf7[_0x81d4('0x45')]);return db[_0x81d4('0x32')][_0x81d4('0x4d')](_0x35b0c0)[_0x81d4('0x2b')](handleEntityNotFound(_0x4443d4,null))[_0x81d4('0x2b')](respondWithResult(_0x4443d4,null))[_0x81d4('0x48')](handleError(_0x4443d4,null));};exports['create']=function(_0x4b91da,_0x2eb95b){return db['OpenchannelQueueReport'][_0x81d4('0x4e')](_0x4b91da[_0x81d4('0x4f')],{})[_0x81d4('0x2b')](respondWithResult(_0x2eb95b,0xc9))[_0x81d4('0x48')](handleError(_0x2eb95b,null));};exports[_0x81d4('0x29')]=function(_0x2fb58b,_0x1c5f5f){if(_0x2fb58b[_0x81d4('0x4f')]['id']){delete _0x2fb58b[_0x81d4('0x4f')]['id'];}return db[_0x81d4('0x32')]['find']({'where':{'id':_0x2fb58b[_0x81d4('0x4a')]['id']}})[_0x81d4('0x2b')](handleEntityNotFound(_0x1c5f5f,null))[_0x81d4('0x2b')](saveUpdates(_0x2fb58b['body'],null))[_0x81d4('0x2b')](respondWithResult(_0x1c5f5f,null))[_0x81d4('0x48')](handleError(_0x1c5f5f,null));};exports[_0x81d4('0x2a')]=function(_0x5324a0,_0x7eb2a3){return db['OpenchannelQueueReport'][_0x81d4('0x4d')]({'where':{'id':_0x5324a0[_0x81d4('0x4a')]['id']}})[_0x81d4('0x2b')](handleEntityNotFound(_0x7eb2a3,null))[_0x81d4('0x2b')](removeEntity(_0x7eb2a3,null))['catch'](handleError(_0x7eb2a3,null));};exports[_0x81d4('0x50')]=function(_0xc11be6,_0x456a9f){return db['OpenchannelQueueReport'][_0x81d4('0x50')]()[_0x81d4('0x2b')](respondWithResult(_0x456a9f,null))[_0x81d4('0x48')](handleError(_0x456a9f,null));};
\ No newline at end of file
+var _0xa1a6=['reject','save','then','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','find','catch','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply'];(function(_0xc7f23c,_0x2be758){var _0x4b4def=function(_0x1b3aab){while(--_0x1b3aab){_0xc7f23c['push'](_0xc7f23c['shift']());}};_0x4b4def(++_0x2be758);}(_0xa1a6,0xc2));var _0x6a1a=function(_0x372515,_0xdd11f){_0x372515=_0x372515-0x0;var _0xa3bf4e=_0xa1a6[_0x372515];return _0xa3bf4e;};'use strict';var emlformat=require(_0x6a1a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6a1a('0x1'));var jsonpatch=require(_0x6a1a('0x2'));var rp=require(_0x6a1a('0x3'));var moment=require(_0x6a1a('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x6a1a('0x5'));var sox=require(_0x6a1a('0x6'));var csv=require(_0x6a1a('0x7'));var ejs=require(_0x6a1a('0x8'));var fs=require('fs');var fs_extra=require(_0x6a1a('0x9'));var _=require(_0x6a1a('0xa'));var squel=require(_0x6a1a('0xb'));var crypto=require(_0x6a1a('0xc'));var jsforce=require(_0x6a1a('0xd'));var deskjs=require(_0x6a1a('0xe'));var toCsv=require(_0x6a1a('0x7'));var querystring=require('querystring');var Papa=require(_0x6a1a('0xf'));var Redis=require(_0x6a1a('0x10'));var authService=require(_0x6a1a('0x11'));var qs=require(_0x6a1a('0x12'));var as=require(_0x6a1a('0x13'));var hardwareService=require(_0x6a1a('0x14'));var logger=require(_0x6a1a('0x15'))(_0x6a1a('0x16'));var utils=require(_0x6a1a('0x17'));var config=require(_0x6a1a('0x18'));var licenseUtil=require(_0x6a1a('0x19'));var db=require(_0x6a1a('0x1a'))['db'];function respondWithStatusCode(_0x8d4d9e,_0x353a3e){_0x353a3e=_0x353a3e||0xcc;return function(_0x33cd66){if(_0x33cd66){return _0x8d4d9e[_0x6a1a('0x1b')](_0x353a3e);}return _0x8d4d9e[_0x6a1a('0x1c')](_0x353a3e)[_0x6a1a('0x1d')]();};}function respondWithResult(_0x31051c,_0x163124){_0x163124=_0x163124||0xc8;return function(_0x768d87){if(_0x768d87){return _0x31051c[_0x6a1a('0x1c')](_0x163124)[_0x6a1a('0x1e')](_0x768d87);}};}function respondWithFilteredResult(_0x2bddea,_0x5c2bad){return function(_0x15c607){if(_0x15c607){var _0x44b5b7=typeof _0x5c2bad[_0x6a1a('0x1f')]===_0x6a1a('0x20')&&typeof _0x5c2bad[_0x6a1a('0x21')]==='undefined';var _0x32080b=_0x15c607['count'];var _0x476042=_0x44b5b7?0x0:_0x5c2bad['offset'];var _0x21ad5c=_0x44b5b7?_0x15c607[_0x6a1a('0x22')]:_0x5c2bad[_0x6a1a('0x1f')]+_0x5c2bad[_0x6a1a('0x21')];var _0x3b1481;if(_0x21ad5c>=_0x32080b){_0x21ad5c=_0x32080b;_0x3b1481=0xc8;}else{_0x3b1481=0xce;}_0x2bddea[_0x6a1a('0x1c')](_0x3b1481);return _0x2bddea['set'](_0x6a1a('0x23'),_0x476042+'-'+_0x21ad5c+'/'+_0x32080b)[_0x6a1a('0x1e')](_0x15c607);}return null;};}function patchUpdates(_0x259937){return function(_0x223f83){try{jsonpatch[_0x6a1a('0x24')](_0x223f83,_0x259937,!![]);}catch(_0x162ae4){return BPromise[_0x6a1a('0x25')](_0x162ae4);}return _0x223f83[_0x6a1a('0x26')]();};}function saveUpdates(_0x14cf4b,_0x4b71b1){return function(_0x23666e){if(_0x23666e){return _0x23666e['update'](_0x14cf4b)[_0x6a1a('0x27')](function(_0x5bc1bc){return _0x5bc1bc;});}return null;};}function removeEntity(_0x1415ab,_0x1fac9d){return function(_0xb23fa){if(_0xb23fa){return _0xb23fa['destroy']()[_0x6a1a('0x27')](function(){_0x1415ab[_0x6a1a('0x1c')](0xcc)[_0x6a1a('0x1d')]();});}};}function handleEntityNotFound(_0xdddc13,_0x49e597){return function(_0x5a3903){if(!_0x5a3903){_0xdddc13['sendStatus'](0x194);}return _0x5a3903;};}function handleError(_0x144ee4,_0x4f6f9e){_0x4f6f9e=_0x4f6f9e||0x1f4;return function(_0x243bed){logger[_0x6a1a('0x28')](_0x243bed[_0x6a1a('0x29')]);if(_0x243bed[_0x6a1a('0x2a')]){delete _0x243bed[_0x6a1a('0x2a')];}_0x144ee4[_0x6a1a('0x1c')](_0x4f6f9e)[_0x6a1a('0x2b')](_0x243bed);};}exports[_0x6a1a('0x2c')]=function(_0x39a7c9,_0x4afde7){var _0x591fc8={},_0x21b5c8={},_0x52e0d1={'count':0x0,'rows':[]};var _0x10cadf=_[_0x6a1a('0x2d')](db[_0x6a1a('0x2e')][_0x6a1a('0x2f')],function(_0x3914e0){return{'name':_0x3914e0['fieldName'],'type':_0x3914e0[_0x6a1a('0x30')]['key']};});_0x21b5c8[_0x6a1a('0x31')]=_[_0x6a1a('0x2d')](_0x10cadf,_0x6a1a('0x2a'));_0x21b5c8[_0x6a1a('0x32')]=_[_0x6a1a('0x33')](_0x39a7c9[_0x6a1a('0x32')]);_0x21b5c8[_0x6a1a('0x34')]=_[_0x6a1a('0x35')](_0x21b5c8[_0x6a1a('0x31')],_0x21b5c8[_0x6a1a('0x32')]);_0x591fc8[_0x6a1a('0x36')]=_[_0x6a1a('0x35')](_0x21b5c8['model'],qs[_0x6a1a('0x37')](_0x39a7c9[_0x6a1a('0x32')][_0x6a1a('0x37')]));_0x591fc8['attributes']=_0x591fc8[_0x6a1a('0x36')][_0x6a1a('0x38')]?_0x591fc8[_0x6a1a('0x36')]:_0x21b5c8[_0x6a1a('0x31')];if(!_0x39a7c9[_0x6a1a('0x32')][_0x6a1a('0x39')]('nolimit')){_0x591fc8[_0x6a1a('0x21')]=qs[_0x6a1a('0x21')](_0x39a7c9['query'][_0x6a1a('0x21')]);_0x591fc8['offset']=qs['offset'](_0x39a7c9['query'][_0x6a1a('0x1f')]);}_0x591fc8[_0x6a1a('0x3a')]=qs['sort'](_0x39a7c9[_0x6a1a('0x32')][_0x6a1a('0x3b')]);_0x591fc8[_0x6a1a('0x3c')]=qs['filters'](_[_0x6a1a('0x3d')](_0x39a7c9[_0x6a1a('0x32')],_0x21b5c8[_0x6a1a('0x34')]),_0x10cadf);if(_0x39a7c9['query'][_0x6a1a('0x3e')]){_0x591fc8[_0x6a1a('0x3c')]=_[_0x6a1a('0x3f')](_0x591fc8[_0x6a1a('0x3c')],{'$or':_['map'](_0x10cadf,function(_0x3e073e){if(_0x3e073e['type']!==_0x6a1a('0x40')){var _0x395320={};_0x395320[_0x3e073e[_0x6a1a('0x2a')]]={'$like':'%'+_0x39a7c9[_0x6a1a('0x32')][_0x6a1a('0x3e')]+'%'};return _0x395320;}})});}_0x591fc8=_[_0x6a1a('0x3f')]({},_0x591fc8,_0x39a7c9[_0x6a1a('0x41')]);var _0x3062cb={'where':_0x591fc8[_0x6a1a('0x3c')]};return db[_0x6a1a('0x2e')][_0x6a1a('0x22')](_0x3062cb)['then'](function(_0x1cb3cb){_0x52e0d1['count']=_0x1cb3cb;if(_0x39a7c9[_0x6a1a('0x32')][_0x6a1a('0x42')]){_0x591fc8['include']=[{'all':!![]}];}return db[_0x6a1a('0x2e')][_0x6a1a('0x43')](_0x591fc8);})[_0x6a1a('0x27')](function(_0x11604d){_0x52e0d1[_0x6a1a('0x44')]=_0x11604d;return _0x52e0d1;})[_0x6a1a('0x27')](respondWithFilteredResult(_0x4afde7,_0x591fc8))['catch'](handleError(_0x4afde7,null));};exports[_0x6a1a('0x45')]=function(_0x566bd1,_0x2bc2ed){var _0x123e43={'raw':!![],'where':{'id':_0x566bd1[_0x6a1a('0x46')]['id']}},_0x5c6363={};_0x5c6363[_0x6a1a('0x31')]=_[_0x6a1a('0x33')](db[_0x6a1a('0x2e')]['rawAttributes']);_0x5c6363[_0x6a1a('0x32')]=_[_0x6a1a('0x33')](_0x566bd1[_0x6a1a('0x32')]);_0x5c6363[_0x6a1a('0x34')]=_['intersection'](_0x5c6363['model'],_0x5c6363['query']);_0x123e43['attributes']=_['intersection'](_0x5c6363[_0x6a1a('0x31')],qs['fields'](_0x566bd1['query'][_0x6a1a('0x37')]));_0x123e43[_0x6a1a('0x36')]=_0x123e43[_0x6a1a('0x36')][_0x6a1a('0x38')]?_0x123e43[_0x6a1a('0x36')]:_0x5c6363['model'];if(_0x566bd1[_0x6a1a('0x32')]['includeAll']){_0x123e43['include']=[{'all':!![]}];}_0x123e43=_[_0x6a1a('0x3f')]({},_0x123e43,_0x566bd1[_0x6a1a('0x41')]);return db['OpenchannelQueueReport'][_0x6a1a('0x47')](_0x123e43)[_0x6a1a('0x27')](handleEntityNotFound(_0x2bc2ed,null))['then'](respondWithResult(_0x2bc2ed,null))[_0x6a1a('0x48')](handleError(_0x2bc2ed,null));};exports[_0x6a1a('0x49')]=function(_0x233f0c,_0x44b083){return db[_0x6a1a('0x2e')][_0x6a1a('0x49')](_0x233f0c[_0x6a1a('0x4a')],{})[_0x6a1a('0x27')](respondWithResult(_0x44b083,0xc9))[_0x6a1a('0x48')](handleError(_0x44b083,null));};exports['update']=function(_0x44b96a,_0xc97a8c){if(_0x44b96a[_0x6a1a('0x4a')]['id']){delete _0x44b96a[_0x6a1a('0x4a')]['id'];}return db['OpenchannelQueueReport'][_0x6a1a('0x47')]({'where':{'id':_0x44b96a[_0x6a1a('0x46')]['id']}})[_0x6a1a('0x27')](handleEntityNotFound(_0xc97a8c,null))['then'](saveUpdates(_0x44b96a[_0x6a1a('0x4a')],null))[_0x6a1a('0x27')](respondWithResult(_0xc97a8c,null))[_0x6a1a('0x48')](handleError(_0xc97a8c,null));};exports[_0x6a1a('0x4b')]=function(_0x2e4ceb,_0x4f4f02){return db[_0x6a1a('0x2e')][_0x6a1a('0x47')]({'where':{'id':_0x2e4ceb[_0x6a1a('0x46')]['id']}})[_0x6a1a('0x27')](handleEntityNotFound(_0x4f4f02,null))[_0x6a1a('0x27')](removeEntity(_0x4f4f02,null))[_0x6a1a('0x48')](handleError(_0x4f4f02,null));};exports['describe']=function(_0x398157,_0x4d6594){return db['OpenchannelQueueReport'][_0x6a1a('0x4c')]()[_0x6a1a('0x27')](respondWithResult(_0x4d6594,null))['catch'](handleError(_0x4d6594,null));};
\ No newline at end of file
index ec49e6c..ac18b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x46d885,_0x3e3bcb){var _0x172a22=function(_0x4057){while(--_0x4057){_0x46d885['push'](_0x46d885['shift']());}};_0x172a22(++_0x3e3bcb);}(_0x1261,0x144));var _0x1126=function(_0x324496,_0x3a4cdd){_0x324496=_0x324496-0x0;var _0x899545=_0x1261[_0x324496];return _0x899545;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ef3=['define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelQueueReport.attributes','exports'];(function(_0x437118,_0x4119ff){var _0x28b7e9=function(_0xc34b52){while(--_0xc34b52){_0x437118['push'](_0x437118['shift']());}};_0x28b7e9(++_0x4119ff);}(_0x2ef3,0xba));var _0x32ef=function(_0x191bd8,_0x40dd35){_0x191bd8=_0x191bd8-0x0;var _0x2e5e97=_0x2ef3[_0x191bd8];return _0x2e5e97;};'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 a5a88be..b082104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d25=['create','body','options','raw','then','UpdateOpenchannelQueueReport','update','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','request','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport'];(function(_0x1521e3,_0x352ee9){var _0x28d274=function(_0x5549f5){while(--_0x5549f5){_0x1521e3['push'](_0x1521e3['shift']());}};_0x28d274(++_0x352ee9);}(_0x7d25,0x8a));var _0x57d2=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x7d25[_0x4e676e];return _0x336a3c;};'use strict';var _=require('lodash');var util=require(_0x57d2('0x0'));var moment=require(_0x57d2('0x1'));var BPromise=require(_0x57d2('0x2'));var rs=require(_0x57d2('0x3'));var fs=require('fs');var Redis=require(_0x57d2('0x4'));var db=require(_0x57d2('0x5'))['db'];var utils=require(_0x57d2('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x57d2('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f43b2,_0x263d35,_0x147194){return new BPromise(function(_0x59ae87,_0x49e3e5){return client[_0x57d2('0x8')](_0x1f43b2,_0x147194)['then'](function(_0x3a1ec5){logger[_0x57d2('0x9')](_0x57d2('0xa'),_0x263d35,'request\x20sent');logger[_0x57d2('0xb')](_0x57d2('0xc'),_0x263d35,_0x57d2('0xd'),JSON[_0x57d2('0xe')](_0x3a1ec5));if(_0x3a1ec5[_0x57d2('0xf')]){if(_0x3a1ec5[_0x57d2('0xf')][_0x57d2('0x10')]===0x1f4){logger[_0x57d2('0xf')](_0x57d2('0xa'),_0x263d35,_0x3a1ec5[_0x57d2('0xf')][_0x57d2('0x11')]);return _0x49e3e5(_0x3a1ec5[_0x57d2('0xf')][_0x57d2('0x11')]);}logger[_0x57d2('0xf')](_0x57d2('0xa'),_0x263d35,_0x3a1ec5[_0x57d2('0xf')]['message']);return _0x59ae87(_0x3a1ec5['error'][_0x57d2('0x11')]);}else{logger[_0x57d2('0x9')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x263d35,_0x57d2('0xd'));_0x59ae87(_0x3a1ec5[_0x57d2('0x12')]['message']);}})[_0x57d2('0x13')](function(_0x4986ad){logger[_0x57d2('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x263d35,_0x4986ad);_0x49e3e5(_0x4986ad);});});}exports[_0x57d2('0x14')]=function(_0x7d4cf1){var _0x2ecfdf=this;return new Promise(function(_0x4a94e3,_0x525cfc){return db[_0x57d2('0x15')][_0x57d2('0x16')](_0x7d4cf1[_0x57d2('0x17')],{'raw':_0x7d4cf1[_0x57d2('0x18')]?_0x7d4cf1['options'][_0x57d2('0x19')]===undefined?!![]:![]:!![]})[_0x57d2('0x1a')](function(_0x55191e){logger['info'](_0x57d2('0x14'),_0x7d4cf1);logger[_0x57d2('0xb')](_0x57d2('0x14'),_0x7d4cf1,JSON[_0x57d2('0xe')](_0x55191e));_0x4a94e3(_0x55191e);})[_0x57d2('0x13')](function(_0x803c25){logger[_0x57d2('0xf')](_0x57d2('0x14'),_0x803c25[_0x57d2('0x11')],_0x7d4cf1);_0x525cfc(_0x2ecfdf[_0x57d2('0xf')](0x1f4,_0x803c25[_0x57d2('0x11')]));});});};exports[_0x57d2('0x1b')]=function(_0x12ff19){var _0x473df2=this;return new Promise(function(_0x5327ea,_0x424ddc){return db[_0x57d2('0x15')][_0x57d2('0x1c')](_0x12ff19[_0x57d2('0x17')],{'raw':_0x12ff19[_0x57d2('0x18')]?_0x12ff19['options'][_0x57d2('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x12ff19[_0x57d2('0x18')]?_0x12ff19[_0x57d2('0x18')][_0x57d2('0x1d')]||null:null,'attributes':_0x12ff19[_0x57d2('0x18')]?_0x12ff19[_0x57d2('0x18')][_0x57d2('0x1e')]||null:null,'limit':_0x12ff19['options']?_0x12ff19[_0x57d2('0x18')][_0x57d2('0x1f')]||null:null})[_0x57d2('0x1a')](function(_0x1fe383){logger[_0x57d2('0x9')](_0x57d2('0x1b'),_0x12ff19);logger[_0x57d2('0xb')](_0x57d2('0x1b'),_0x12ff19,JSON[_0x57d2('0xe')](_0x1fe383));_0x5327ea(_0x1fe383);})[_0x57d2('0x13')](function(_0x574589){logger[_0x57d2('0xf')](_0x57d2('0x1b'),_0x574589[_0x57d2('0x11')],_0x12ff19);_0x424ddc(_0x473df2[_0x57d2('0xf')](0x1f4,_0x574589['message']));});});};
\ No newline at end of file
+var _0x3495=['attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','stringify','UpdateOpenchannelQueueReport','update','where'];(function(_0x46a38b,_0x16ffb5){var _0x346e75=function(_0x34f8d0){while(--_0x34f8d0){_0x46a38b['push'](_0x46a38b['shift']());}};_0x346e75(++_0x16ffb5);}(_0x3495,0x1de));var _0x5349=function(_0x21a647,_0x2305bb){_0x21a647=_0x21a647-0x0;var _0x382f22=_0x3495[_0x21a647];return _0x382f22;};'use strict';var _=require(_0x5349('0x0'));var util=require(_0x5349('0x1'));var moment=require(_0x5349('0x2'));var BPromise=require(_0x5349('0x3'));var rs=require(_0x5349('0x4'));var fs=require('fs');var Redis=require(_0x5349('0x5'));var db=require(_0x5349('0x6'))['db'];var utils=require(_0x5349('0x7'));var logger=require(_0x5349('0x8'))('rpc');var config=require(_0x5349('0x9'));var jayson=require(_0x5349('0xa'));var client=jayson['client'][_0x5349('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x538385,_0x6fb5dc,_0x529323){return new BPromise(function(_0x393873,_0x583cee){return client[_0x5349('0xc')](_0x538385,_0x529323)[_0x5349('0xd')](function(_0x22a3d3){logger[_0x5349('0xe')](_0x5349('0xf'),_0x6fb5dc,_0x5349('0x10'));logger[_0x5349('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x6fb5dc,_0x5349('0x10'),JSON['stringify'](_0x22a3d3));if(_0x22a3d3[_0x5349('0x12')]){if(_0x22a3d3[_0x5349('0x12')][_0x5349('0x13')]===0x1f4){logger[_0x5349('0x12')](_0x5349('0xf'),_0x6fb5dc,_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);return _0x583cee(_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);}logger[_0x5349('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x6fb5dc,_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);return _0x393873(_0x22a3d3['error'][_0x5349('0x14')]);}else{logger[_0x5349('0xe')](_0x5349('0xf'),_0x6fb5dc,'request\x20sent');_0x393873(_0x22a3d3['result']['message']);}})[_0x5349('0x15')](function(_0x5c873d){logger[_0x5349('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x6fb5dc,_0x5c873d);_0x583cee(_0x5c873d);});});}exports[_0x5349('0x16')]=function(_0x2c1f1){var _0x1f5747=this;return new Promise(function(_0x132639,_0x4e128c){return db[_0x5349('0x17')][_0x5349('0x18')](_0x2c1f1[_0x5349('0x19')],{'raw':_0x2c1f1[_0x5349('0x1a')]?_0x2c1f1['options'][_0x5349('0x1b')]===undefined?!![]:![]:!![]})[_0x5349('0xd')](function(_0x4f2cb6){logger['info']('CreateOpenchannelQueueReport',_0x2c1f1);logger[_0x5349('0x11')]('CreateOpenchannelQueueReport',_0x2c1f1,JSON[_0x5349('0x1c')](_0x4f2cb6));_0x132639(_0x4f2cb6);})[_0x5349('0x15')](function(_0x164978){logger[_0x5349('0x12')](_0x5349('0x16'),_0x164978[_0x5349('0x14')],_0x2c1f1);_0x4e128c(_0x1f5747[_0x5349('0x12')](0x1f4,_0x164978[_0x5349('0x14')]));});});};exports[_0x5349('0x1d')]=function(_0x34353f){var _0x1a84ce=this;return new Promise(function(_0x52520,_0x57af6c){return db[_0x5349('0x17')][_0x5349('0x1e')](_0x34353f[_0x5349('0x19')],{'raw':_0x34353f['options']?_0x34353f[_0x5349('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34353f[_0x5349('0x1a')]?_0x34353f[_0x5349('0x1a')][_0x5349('0x1f')]||null:null,'attributes':_0x34353f['options']?_0x34353f[_0x5349('0x1a')][_0x5349('0x20')]||null:null,'limit':_0x34353f[_0x5349('0x1a')]?_0x34353f[_0x5349('0x1a')][_0x5349('0x21')]||null:null})[_0x5349('0xd')](function(_0x3b6faa){logger[_0x5349('0xe')](_0x5349('0x1d'),_0x34353f);logger['debug'](_0x5349('0x1d'),_0x34353f,JSON[_0x5349('0x1c')](_0x3b6faa));_0x52520(_0x3b6faa);})['catch'](function(_0x3cad49){logger['error'](_0x5349('0x1d'),_0x3cad49[_0x5349('0x14')],_0x34353f);_0x57af6c(_0x1a84ce[_0x5349('0x12')](0x1f4,_0x3cad49[_0x5349('0x14')]));});});};
\ No newline at end of file
index 59c44a1..ec92af4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa973=['./openchannelTransferReport.controller','get','isAuthenticated','describe','/:id','show','create','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x1d08c9,_0x301014){var _0x332944=function(_0x51e416){while(--_0x51e416){_0x1d08c9['push'](_0x1d08c9['shift']());}};_0x332944(++_0x301014);}(_0xa973,0x13b));var _0x3a97=function(_0x53b07e,_0x3bc254){_0x53b07e=_0x53b07e-0x0;var _0x5490b7=_0xa973[_0x53b07e];return _0x5490b7;};'use strict';var multer=require(_0x3a97('0x0'));var util=require(_0x3a97('0x1'));var path=require('path');var timeout=require(_0x3a97('0x2'));var express=require(_0x3a97('0x3'));var router=express[_0x3a97('0x4')]();var fs_extra=require(_0x3a97('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3a97('0x6'));var config=require(_0x3a97('0x7'));var controller=require(_0x3a97('0x8'));router[_0x3a97('0x9')]('/',auth[_0x3a97('0xa')](),controller['index']);router['get']('/describe',auth[_0x3a97('0xa')](),controller[_0x3a97('0xb')]);router['get'](_0x3a97('0xc'),auth[_0x3a97('0xa')](),controller[_0x3a97('0xd')]);router['post']('/',auth[_0x3a97('0xa')](),controller[_0x3a97('0xe')]);router['put']('/:id',auth[_0x3a97('0xa')](),controller['update']);router[_0x3a97('0xf')](_0x3a97('0xc'),auth['isAuthenticated'](),controller[_0x3a97('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x11a9=['update','delete','destroy','multer','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','describe','show','create','/:id'];(function(_0xb7ccdb,_0x42e36b){var _0x4aa9c3=function(_0x401941){while(--_0x401941){_0xb7ccdb['push'](_0xb7ccdb['shift']());}};_0x4aa9c3(++_0x42e36b);}(_0x11a9,0x120));var _0x911a=function(_0x46ec3f,_0x72fe5e){_0x46ec3f=_0x46ec3f-0x0;var _0x303e71=_0x11a9[_0x46ec3f];return _0x303e71;};'use strict';var multer=require(_0x911a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x911a('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x911a('0x2'));var auth=require(_0x911a('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x911a('0x4'));var controller=require(_0x911a('0x5'));router[_0x911a('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x911a('0x6')]('/describe',auth[_0x911a('0x7')](),controller[_0x911a('0x8')]);router['get']('/:id',auth[_0x911a('0x7')](),controller[_0x911a('0x9')]);router['post']('/',auth[_0x911a('0x7')](),controller[_0x911a('0xa')]);router['put'](_0x911a('0xb'),auth['isAuthenticated'](),controller[_0x911a('0xc')]);router[_0x911a('0xd')](_0x911a('0xb'),auth[_0x911a('0x7')](),controller[_0x911a('0xe')]);module['exports']=router;
\ No newline at end of file
index 8425aca..e308fac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x592690,_0xe97b30){var _0x2be5e3=function(_0x385b0c){while(--_0x385b0c){_0x592690['push'](_0x592690['shift']());}};_0x2be5e3(++_0xe97b30);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x191154,_0x56f74c){_0x191154=_0x191154-0x0;var _0x3dcd73=_0xcb91[_0x191154];return _0x3dcd73;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
+var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x465d12,_0x1b8e5a){var _0x8aa1d3=function(_0x331219){while(--_0x331219){_0x465d12['push'](_0x465d12['shift']());}};_0x8aa1d3(++_0x1b8e5a);}(_0x00bb,0x1d8));var _0xb00b=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x00bb[_0x5ddb1c];return _0x354adc;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
index 1aea028..7a24493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ce=['undefined','limit','count','Content-Range','apply','then','destroy','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x4222f2,_0x562479){var _0x37b11d=function(_0x373365){while(--_0x373365){_0x4222f2['push'](_0x4222f2['shift']());}};_0x37b11d(++_0x562479);}(_0x82ce,0xc7));var _0xe82c=function(_0x5c3875,_0x2833ab){_0x5c3875=_0x5c3875-0x0;var _0x65b36a=_0x82ce[_0x5c3875];return _0x65b36a;};'use strict';var emlformat=require(_0xe82c('0x0'));var rimraf=require(_0xe82c('0x1'));var zipdir=require(_0xe82c('0x2'));var jsonpatch=require(_0xe82c('0x3'));var rp=require(_0xe82c('0x4'));var moment=require(_0xe82c('0x5'));var BPromise=require(_0xe82c('0x6'));var Mustache=require(_0xe82c('0x7'));var util=require('util');var path=require('path');var sox=require(_0xe82c('0x8'));var csv=require(_0xe82c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe82c('0xa'));var _=require('lodash');var squel=require(_0xe82c('0xb'));var crypto=require(_0xe82c('0xc'));var jsforce=require(_0xe82c('0xd'));var deskjs=require(_0xe82c('0xe'));var toCsv=require(_0xe82c('0x9'));var querystring=require(_0xe82c('0xf'));var Papa=require(_0xe82c('0x10'));var Redis=require(_0xe82c('0x11'));var authService=require(_0xe82c('0x12'));var qs=require(_0xe82c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe82c('0x14'));var logger=require(_0xe82c('0x15'))(_0xe82c('0x16'));var utils=require(_0xe82c('0x17'));var config=require(_0xe82c('0x18'));var licenseUtil=require(_0xe82c('0x19'));var db=require(_0xe82c('0x1a'))['db'];function respondWithStatusCode(_0x274a7b,_0x20a845){_0x20a845=_0x20a845||0xcc;return function(_0x144b99){if(_0x144b99){return _0x274a7b[_0xe82c('0x1b')](_0x20a845);}return _0x274a7b[_0xe82c('0x1c')](_0x20a845)[_0xe82c('0x1d')]();};}function respondWithResult(_0x4ddb08,_0x5a4c8c){_0x5a4c8c=_0x5a4c8c||0xc8;return function(_0x4c9a1c){if(_0x4c9a1c){return _0x4ddb08[_0xe82c('0x1c')](_0x5a4c8c)[_0xe82c('0x1e')](_0x4c9a1c);}};}function respondWithFilteredResult(_0x19f55b,_0x7f9e37){return function(_0x5eb04c){if(_0x5eb04c){var _0x15f3d7=typeof _0x7f9e37[_0xe82c('0x1f')]===_0xe82c('0x20')&&typeof _0x7f9e37[_0xe82c('0x21')]===_0xe82c('0x20');var _0x57d42b=_0x5eb04c[_0xe82c('0x22')];var _0x145280=_0x15f3d7?0x0:_0x7f9e37[_0xe82c('0x1f')];var _0x4e0e8d=_0x15f3d7?_0x5eb04c[_0xe82c('0x22')]:_0x7f9e37[_0xe82c('0x1f')]+_0x7f9e37[_0xe82c('0x21')];var _0x136b32;if(_0x4e0e8d>=_0x57d42b){_0x4e0e8d=_0x57d42b;_0x136b32=0xc8;}else{_0x136b32=0xce;}_0x19f55b['status'](_0x136b32);return _0x19f55b['set'](_0xe82c('0x23'),_0x145280+'-'+_0x4e0e8d+'/'+_0x57d42b)['json'](_0x5eb04c);}return null;};}function patchUpdates(_0x55b561){return function(_0x1c3579){try{jsonpatch[_0xe82c('0x24')](_0x1c3579,_0x55b561,!![]);}catch(_0x501f44){return BPromise['reject'](_0x501f44);}return _0x1c3579['save']();};}function saveUpdates(_0x535c21,_0x1d45cb){return function(_0x1d6049){if(_0x1d6049){return _0x1d6049['update'](_0x535c21)[_0xe82c('0x25')](function(_0x2b75ed){return _0x2b75ed;});}return null;};}function removeEntity(_0x452614,_0x546c18){return function(_0x312c24){if(_0x312c24){return _0x312c24[_0xe82c('0x26')]()[_0xe82c('0x25')](function(){_0x452614[_0xe82c('0x1c')](0xcc)[_0xe82c('0x1d')]();});}};}function handleEntityNotFound(_0x31c65c,_0x3e57db){return function(_0x213f45){if(!_0x213f45){_0x31c65c[_0xe82c('0x1b')](0x194);}return _0x213f45;};}function handleError(_0x363175,_0x32c211){_0x32c211=_0x32c211||0x1f4;return function(_0x25bc4f){logger['error'](_0x25bc4f[_0xe82c('0x27')]);if(_0x25bc4f[_0xe82c('0x28')]){delete _0x25bc4f[_0xe82c('0x28')];}_0x363175[_0xe82c('0x1c')](_0x32c211)[_0xe82c('0x29')](_0x25bc4f);};}exports['index']=function(_0xa98684,_0x51d1bb){var _0x2eb81f={},_0x182926={},_0x410b0e={'count':0x0,'rows':[]};var _0x4c692d=_[_0xe82c('0x2a')](db[_0xe82c('0x2b')][_0xe82c('0x2c')],function(_0x590d89){return{'name':_0x590d89[_0xe82c('0x2d')],'type':_0x590d89[_0xe82c('0x2e')][_0xe82c('0x2f')]};});_0x182926['model']=_[_0xe82c('0x2a')](_0x4c692d,_0xe82c('0x28'));_0x182926['query']=_[_0xe82c('0x30')](_0xa98684[_0xe82c('0x31')]);_0x182926[_0xe82c('0x32')]=_[_0xe82c('0x33')](_0x182926['model'],_0x182926['query']);_0x2eb81f[_0xe82c('0x34')]=_[_0xe82c('0x33')](_0x182926[_0xe82c('0x35')],qs[_0xe82c('0x36')](_0xa98684[_0xe82c('0x31')][_0xe82c('0x36')]));_0x2eb81f[_0xe82c('0x34')]=_0x2eb81f['attributes'][_0xe82c('0x37')]?_0x2eb81f[_0xe82c('0x34')]:_0x182926['model'];if(!_0xa98684[_0xe82c('0x31')][_0xe82c('0x38')](_0xe82c('0x39'))){_0x2eb81f['limit']=qs[_0xe82c('0x21')](_0xa98684[_0xe82c('0x31')][_0xe82c('0x21')]);_0x2eb81f[_0xe82c('0x1f')]=qs['offset'](_0xa98684[_0xe82c('0x31')]['offset']);}_0x2eb81f['order']=qs[_0xe82c('0x3a')](_0xa98684[_0xe82c('0x31')][_0xe82c('0x3a')]);_0x2eb81f[_0xe82c('0x3b')]=qs[_0xe82c('0x32')](_[_0xe82c('0x3c')](_0xa98684[_0xe82c('0x31')],_0x182926[_0xe82c('0x32')]),_0x4c692d);if(_0xa98684[_0xe82c('0x31')][_0xe82c('0x3d')]){_0x2eb81f[_0xe82c('0x3b')]=_[_0xe82c('0x3e')](_0x2eb81f['where'],{'$or':_[_0xe82c('0x2a')](_0x4c692d,function(_0x1eddb4){if(_0x1eddb4[_0xe82c('0x2e')]!==_0xe82c('0x3f')){var _0x7c8bd6={};_0x7c8bd6[_0x1eddb4[_0xe82c('0x28')]]={'$like':'%'+_0xa98684[_0xe82c('0x31')]['filter']+'%'};return _0x7c8bd6;}})});}_0x2eb81f=_[_0xe82c('0x3e')]({},_0x2eb81f,_0xa98684['options']);var _0x39b080={'where':_0x2eb81f[_0xe82c('0x3b')]};return db[_0xe82c('0x2b')][_0xe82c('0x22')](_0x39b080)['then'](function(_0x594460){_0x410b0e['count']=_0x594460;if(_0xa98684[_0xe82c('0x31')][_0xe82c('0x40')]){_0x2eb81f[_0xe82c('0x41')]=[{'all':!![]}];}return db[_0xe82c('0x2b')][_0xe82c('0x42')](_0x2eb81f);})[_0xe82c('0x25')](function(_0x560f4c){_0x410b0e[_0xe82c('0x43')]=_0x560f4c;return _0x410b0e;})[_0xe82c('0x25')](respondWithFilteredResult(_0x51d1bb,_0x2eb81f))[_0xe82c('0x44')](handleError(_0x51d1bb,null));};exports[_0xe82c('0x45')]=function(_0x564dbd,_0x18f86c){var _0x21dc24={'raw':!![],'where':{'id':_0x564dbd[_0xe82c('0x46')]['id']}},_0xcdcaf9={};_0xcdcaf9[_0xe82c('0x35')]=_[_0xe82c('0x30')](db[_0xe82c('0x2b')]['rawAttributes']);_0xcdcaf9[_0xe82c('0x31')]=_['keys'](_0x564dbd[_0xe82c('0x31')]);_0xcdcaf9[_0xe82c('0x32')]=_[_0xe82c('0x33')](_0xcdcaf9[_0xe82c('0x35')],_0xcdcaf9['query']);_0x21dc24[_0xe82c('0x34')]=_[_0xe82c('0x33')](_0xcdcaf9[_0xe82c('0x35')],qs[_0xe82c('0x36')](_0x564dbd[_0xe82c('0x31')][_0xe82c('0x36')]));_0x21dc24[_0xe82c('0x34')]=_0x21dc24[_0xe82c('0x34')][_0xe82c('0x37')]?_0x21dc24[_0xe82c('0x34')]:_0xcdcaf9[_0xe82c('0x35')];if(_0x564dbd[_0xe82c('0x31')][_0xe82c('0x40')]){_0x21dc24[_0xe82c('0x41')]=[{'all':!![]}];}_0x21dc24=_[_0xe82c('0x3e')]({},_0x21dc24,_0x564dbd[_0xe82c('0x47')]);return db[_0xe82c('0x2b')][_0xe82c('0x48')](_0x21dc24)[_0xe82c('0x25')](handleEntityNotFound(_0x18f86c,null))[_0xe82c('0x25')](respondWithResult(_0x18f86c,null))[_0xe82c('0x44')](handleError(_0x18f86c,null));};exports[_0xe82c('0x49')]=function(_0x252fdf,_0x41e8d4){return db[_0xe82c('0x2b')][_0xe82c('0x49')](_0x252fdf[_0xe82c('0x4a')],{})[_0xe82c('0x25')](respondWithResult(_0x41e8d4,0xc9))[_0xe82c('0x44')](handleError(_0x41e8d4,null));};exports[_0xe82c('0x4b')]=function(_0x15043b,_0x3fb579){if(_0x15043b[_0xe82c('0x4a')]['id']){delete _0x15043b[_0xe82c('0x4a')]['id'];}return db['OpenchannelTransferReport'][_0xe82c('0x48')]({'where':{'id':_0x15043b[_0xe82c('0x46')]['id']}})[_0xe82c('0x25')](handleEntityNotFound(_0x3fb579,null))[_0xe82c('0x25')](saveUpdates(_0x15043b['body'],null))['then'](respondWithResult(_0x3fb579,null))['catch'](handleError(_0x3fb579,null));};exports['destroy']=function(_0x35358a,_0xc016f5){return db['OpenchannelTransferReport'][_0xe82c('0x48')]({'where':{'id':_0x35358a[_0xe82c('0x46')]['id']}})[_0xe82c('0x25')](handleEntityNotFound(_0xc016f5,null))[_0xe82c('0x25')](removeEntity(_0xc016f5,null))['catch'](handleError(_0xc016f5,null));};exports[_0xe82c('0x4c')]=function(_0x7d949e,_0x5c5172){return db[_0xe82c('0x2b')][_0xe82c('0x4c')]()[_0xe82c('0x25')](respondWithResult(_0x5c5172,null))[_0xe82c('0x44')](handleError(_0x5c5172,null));};
\ No newline at end of file
+var _0x83b4=['options','OpenchannelTransferReport','includeAll','rows','catch','show','keys','find','create','body','params','destroy','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','sendStatus','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL'];(function(_0x3fbecb,_0x29c9e4){var _0x5dc6b8=function(_0x2bbe8a){while(--_0x2bbe8a){_0x3fbecb['push'](_0x3fbecb['shift']());}};_0x5dc6b8(++_0x29c9e4);}(_0x83b4,0x1c9));var _0x483b=function(_0x4f4a16,_0x778220){_0x4f4a16=_0x4f4a16-0x0;var _0x5f20ba=_0x83b4[_0x4f4a16];return _0x5f20ba;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x483b('0x0'));var jsonpatch=require(_0x483b('0x1'));var rp=require(_0x483b('0x2'));var moment=require(_0x483b('0x3'));var BPromise=require(_0x483b('0x4'));var Mustache=require(_0x483b('0x5'));var util=require(_0x483b('0x6'));var path=require(_0x483b('0x7'));var sox=require(_0x483b('0x8'));var csv=require(_0x483b('0x9'));var ejs=require(_0x483b('0xa'));var fs=require('fs');var fs_extra=require(_0x483b('0xb'));var _=require('lodash');var squel=require(_0x483b('0xc'));var crypto=require(_0x483b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x483b('0xe'));var toCsv=require(_0x483b('0x9'));var querystring=require(_0x483b('0xf'));var Papa=require(_0x483b('0x10'));var Redis=require('ioredis');var authService=require(_0x483b('0x11'));var qs=require(_0x483b('0x12'));var as=require(_0x483b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x483b('0x14'));var utils=require('../../config/utils');var config=require(_0x483b('0x15'));var licenseUtil=require(_0x483b('0x16'));var db=require(_0x483b('0x17'))['db'];function respondWithStatusCode(_0x15e4e8,_0x111ea3){_0x111ea3=_0x111ea3||0xcc;return function(_0x508293){if(_0x508293){return _0x15e4e8['sendStatus'](_0x111ea3);}return _0x15e4e8[_0x483b('0x18')](_0x111ea3)[_0x483b('0x19')]();};}function respondWithResult(_0xe01564,_0x6627d2){_0x6627d2=_0x6627d2||0xc8;return function(_0x105097){if(_0x105097){return _0xe01564[_0x483b('0x18')](_0x6627d2)['json'](_0x105097);}};}function respondWithFilteredResult(_0x5f1b03,_0x15e636){return function(_0x1b2ea5){if(_0x1b2ea5){var _0x25d2ff=typeof _0x15e636[_0x483b('0x1a')]===_0x483b('0x1b')&&typeof _0x15e636[_0x483b('0x1c')]===_0x483b('0x1b');var _0x44fdbd=_0x1b2ea5[_0x483b('0x1d')];var _0x161e01=_0x25d2ff?0x0:_0x15e636[_0x483b('0x1a')];var _0x270764=_0x25d2ff?_0x1b2ea5[_0x483b('0x1d')]:_0x15e636[_0x483b('0x1a')]+_0x15e636['limit'];var _0x212be7;if(_0x270764>=_0x44fdbd){_0x270764=_0x44fdbd;_0x212be7=0xc8;}else{_0x212be7=0xce;}_0x5f1b03[_0x483b('0x18')](_0x212be7);return _0x5f1b03[_0x483b('0x1e')](_0x483b('0x1f'),_0x161e01+'-'+_0x270764+'/'+_0x44fdbd)[_0x483b('0x20')](_0x1b2ea5);}return null;};}function patchUpdates(_0x31fe76){return function(_0x16090b){try{jsonpatch['apply'](_0x16090b,_0x31fe76,!![]);}catch(_0x924f28){return BPromise[_0x483b('0x21')](_0x924f28);}return _0x16090b[_0x483b('0x22')]();};}function saveUpdates(_0x475b1c,_0x33712a){return function(_0x184d98){if(_0x184d98){return _0x184d98[_0x483b('0x23')](_0x475b1c)[_0x483b('0x24')](function(_0x1560ab){return _0x1560ab;});}return null;};}function removeEntity(_0x5e2603,_0x259c62){return function(_0x432dd7){if(_0x432dd7){return _0x432dd7['destroy']()[_0x483b('0x24')](function(){_0x5e2603[_0x483b('0x18')](0xcc)[_0x483b('0x19')]();});}};}function handleEntityNotFound(_0x49a4e9,_0x1af080){return function(_0x27e380){if(!_0x27e380){_0x49a4e9[_0x483b('0x25')](0x194);}return _0x27e380;};}function handleError(_0x5d4380,_0x40417f){_0x40417f=_0x40417f||0x1f4;return function(_0x2179df){logger[_0x483b('0x26')](_0x2179df['stack']);if(_0x2179df[_0x483b('0x27')]){delete _0x2179df[_0x483b('0x27')];}_0x5d4380[_0x483b('0x18')](_0x40417f)[_0x483b('0x28')](_0x2179df);};}exports[_0x483b('0x29')]=function(_0x30981f,_0x457db2){var _0x44698f={},_0x2855ec={},_0x546e50={'count':0x0,'rows':[]};var _0x534e2a=_['map'](db['OpenchannelTransferReport'][_0x483b('0x2a')],function(_0x5f1a87){return{'name':_0x5f1a87[_0x483b('0x2b')],'type':_0x5f1a87[_0x483b('0x2c')][_0x483b('0x2d')]};});_0x2855ec[_0x483b('0x2e')]=_[_0x483b('0x2f')](_0x534e2a,_0x483b('0x27'));_0x2855ec[_0x483b('0x30')]=_['keys'](_0x30981f[_0x483b('0x30')]);_0x2855ec[_0x483b('0x31')]=_[_0x483b('0x32')](_0x2855ec[_0x483b('0x2e')],_0x2855ec[_0x483b('0x30')]);_0x44698f[_0x483b('0x33')]=_['intersection'](_0x2855ec['model'],qs[_0x483b('0x34')](_0x30981f[_0x483b('0x30')][_0x483b('0x34')]));_0x44698f[_0x483b('0x33')]=_0x44698f['attributes'][_0x483b('0x35')]?_0x44698f[_0x483b('0x33')]:_0x2855ec['model'];if(!_0x30981f[_0x483b('0x30')][_0x483b('0x36')](_0x483b('0x37'))){_0x44698f[_0x483b('0x1c')]=qs[_0x483b('0x1c')](_0x30981f[_0x483b('0x30')][_0x483b('0x1c')]);_0x44698f['offset']=qs['offset'](_0x30981f[_0x483b('0x30')]['offset']);}_0x44698f[_0x483b('0x38')]=qs[_0x483b('0x39')](_0x30981f[_0x483b('0x30')][_0x483b('0x39')]);_0x44698f['where']=qs[_0x483b('0x31')](_['pick'](_0x30981f[_0x483b('0x30')],_0x2855ec[_0x483b('0x31')]),_0x534e2a);if(_0x30981f['query']['filter']){_0x44698f[_0x483b('0x3a')]=_[_0x483b('0x3b')](_0x44698f['where'],{'$or':_[_0x483b('0x2f')](_0x534e2a,function(_0x36aa50){if(_0x36aa50['type']!==_0x483b('0x3c')){var _0x2da9b5={};_0x2da9b5[_0x36aa50[_0x483b('0x27')]]={'$like':'%'+_0x30981f['query']['filter']+'%'};return _0x2da9b5;}})});}_0x44698f=_[_0x483b('0x3b')]({},_0x44698f,_0x30981f[_0x483b('0x3d')]);var _0x35d023={'where':_0x44698f[_0x483b('0x3a')]};return db[_0x483b('0x3e')][_0x483b('0x1d')](_0x35d023)[_0x483b('0x24')](function(_0x1d0bf5){_0x546e50[_0x483b('0x1d')]=_0x1d0bf5;if(_0x30981f[_0x483b('0x30')][_0x483b('0x3f')]){_0x44698f['include']=[{'all':!![]}];}return db[_0x483b('0x3e')]['findAll'](_0x44698f);})[_0x483b('0x24')](function(_0x332a69){_0x546e50[_0x483b('0x40')]=_0x332a69;return _0x546e50;})[_0x483b('0x24')](respondWithFilteredResult(_0x457db2,_0x44698f))[_0x483b('0x41')](handleError(_0x457db2,null));};exports[_0x483b('0x42')]=function(_0x5233b9,_0x2c5c11){var _0x3cbc17={'raw':!![],'where':{'id':_0x5233b9['params']['id']}},_0x1aa906={};_0x1aa906[_0x483b('0x2e')]=_['keys'](db[_0x483b('0x3e')][_0x483b('0x2a')]);_0x1aa906['query']=_[_0x483b('0x43')](_0x5233b9[_0x483b('0x30')]);_0x1aa906[_0x483b('0x31')]=_[_0x483b('0x32')](_0x1aa906['model'],_0x1aa906[_0x483b('0x30')]);_0x3cbc17['attributes']=_[_0x483b('0x32')](_0x1aa906['model'],qs['fields'](_0x5233b9['query'][_0x483b('0x34')]));_0x3cbc17['attributes']=_0x3cbc17[_0x483b('0x33')][_0x483b('0x35')]?_0x3cbc17[_0x483b('0x33')]:_0x1aa906[_0x483b('0x2e')];if(_0x5233b9[_0x483b('0x30')][_0x483b('0x3f')]){_0x3cbc17['include']=[{'all':!![]}];}_0x3cbc17=_['merge']({},_0x3cbc17,_0x5233b9[_0x483b('0x3d')]);return db[_0x483b('0x3e')][_0x483b('0x44')](_0x3cbc17)[_0x483b('0x24')](handleEntityNotFound(_0x2c5c11,null))[_0x483b('0x24')](respondWithResult(_0x2c5c11,null))[_0x483b('0x41')](handleError(_0x2c5c11,null));};exports[_0x483b('0x45')]=function(_0x2430de,_0x48d824){return db['OpenchannelTransferReport']['create'](_0x2430de['body'],{})[_0x483b('0x24')](respondWithResult(_0x48d824,0xc9))[_0x483b('0x41')](handleError(_0x48d824,null));};exports['update']=function(_0x44a2f3,_0x5c995d){if(_0x44a2f3[_0x483b('0x46')]['id']){delete _0x44a2f3['body']['id'];}return db[_0x483b('0x3e')][_0x483b('0x44')]({'where':{'id':_0x44a2f3[_0x483b('0x47')]['id']}})[_0x483b('0x24')](handleEntityNotFound(_0x5c995d,null))[_0x483b('0x24')](saveUpdates(_0x44a2f3[_0x483b('0x46')],null))[_0x483b('0x24')](respondWithResult(_0x5c995d,null))[_0x483b('0x41')](handleError(_0x5c995d,null));};exports[_0x483b('0x48')]=function(_0x45b4e9,_0x5baa9d){return db[_0x483b('0x3e')][_0x483b('0x44')]({'where':{'id':_0x45b4e9[_0x483b('0x47')]['id']}})[_0x483b('0x24')](handleEntityNotFound(_0x5baa9d,null))[_0x483b('0x24')](removeEntity(_0x5baa9d,null))[_0x483b('0x41')](handleError(_0x5baa9d,null));};exports[_0x483b('0x49')]=function(_0x2cabd3,_0x2f0510){return db[_0x483b('0x3e')]['describe']()[_0x483b('0x24')](respondWithResult(_0x2f0510,null))[_0x483b('0x41')](handleError(_0x2f0510,null));};
\ No newline at end of file
index 86583d5..e4aed3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6968=['exports','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes'];(function(_0x3a4593,_0x1283dc){var _0x31af22=function(_0x346858){while(--_0x346858){_0x3a4593['push'](_0x3a4593['shift']());}};_0x31af22(++_0x1283dc);}(_0x6968,0x6c));var _0x8696=function(_0x553150,_0x589ff3){_0x553150=_0x553150-0x0;var _0x18193d=_0x6968[_0x553150];return _0x18193d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8696('0x0'))(_0x8696('0x1'));var moment=require(_0x8696('0x2'));var BPromise=require(_0x8696('0x3'));var rp=require(_0x8696('0x4'));var fs=require('fs');var path=require(_0x8696('0x5'));var rimraf=require(_0x8696('0x6'));var config=require(_0x8696('0x7'));var attributes=require(_0x8696('0x8'));module[_0x8696('0x9')]=function(_0x164397,_0x474a15){return _0x164397['define'](_0x8696('0xa'),attributes,{'tableName':_0x8696('0xb'),'paranoid':![],'indexes':[{'name':_0x8696('0xc'),'fields':[_0x8696('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb84=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','OpenchannelTransferReport','report_openchannel_transfer','uniqueid'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xcb84,0x1a4));var _0x4cb8=function(_0x4099ee,_0x38495a){_0x4099ee=_0x4099ee-0x0;var _0x1b7bfc=_0xcb84[_0x4099ee];return _0x1b7bfc;};'use strict';var _=require(_0x4cb8('0x0'));var util=require(_0x4cb8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4cb8('0x2'));var BPromise=require(_0x4cb8('0x3'));var rp=require(_0x4cb8('0x4'));var fs=require('fs');var path=require(_0x4cb8('0x5'));var rimraf=require(_0x4cb8('0x6'));var config=require(_0x4cb8('0x7'));var attributes=require(_0x4cb8('0x8'));module['exports']=function(_0x114a4b,_0x398acb){return _0x114a4b['define'](_0x4cb8('0x9'),attributes,{'tableName':_0x4cb8('0xa'),'paranoid':![],'indexes':[{'name':_0x4cb8('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 239d799..d295cb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c09=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','then','info','OpenchannelTransferReport,\x20%s,\x20%s','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment'];(function(_0x32f3bc,_0x2b5218){var _0x3f8cc2=function(_0x5dca80){while(--_0x5dca80){_0x32f3bc['push'](_0x32f3bc['shift']());}};_0x3f8cc2(++_0x2b5218);}(_0x7c09,0x102));var _0x97c0=function(_0x29fd4b,_0x3a56c2){_0x29fd4b=_0x29fd4b-0x0;var _0x4a3d37=_0x7c09[_0x29fd4b];return _0x4a3d37;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var moment=require(_0x97c0('0x1'));var BPromise=require('bluebird');var rs=require(_0x97c0('0x2'));var fs=require('fs');var Redis=require(_0x97c0('0x3'));var db=require(_0x97c0('0x4'))['db'];var utils=require(_0x97c0('0x5'));var logger=require(_0x97c0('0x6'))(_0x97c0('0x7'));var config=require(_0x97c0('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x46fdd9,_0x42c6c7,_0x2c19fa){return new BPromise(function(_0x109bc8,_0x293785){return client['request'](_0x46fdd9,_0x2c19fa)[_0x97c0('0x9')](function(_0x4ac5f1){logger[_0x97c0('0xa')](_0x97c0('0xb'),_0x42c6c7,'request\x20sent');logger['debug'](_0x97c0('0xc'),_0x42c6c7,_0x97c0('0xd'),JSON[_0x97c0('0xe')](_0x4ac5f1));if(_0x4ac5f1[_0x97c0('0xf')]){if(_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x10')]===0x1f4){logger[_0x97c0('0xf')](_0x97c0('0xb'),_0x42c6c7,_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);return _0x293785(_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);}logger[_0x97c0('0xf')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x42c6c7,_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);return _0x109bc8(_0x4ac5f1[_0x97c0('0xf')]['message']);}else{logger[_0x97c0('0xa')](_0x97c0('0xb'),_0x42c6c7,_0x97c0('0xd'));_0x109bc8(_0x4ac5f1[_0x97c0('0x12')][_0x97c0('0x11')]);}})[_0x97c0('0x13')](function(_0x49c0d9){logger[_0x97c0('0xf')](_0x97c0('0xb'),_0x42c6c7,_0x49c0d9);_0x293785(_0x49c0d9);});});}
\ No newline at end of file
+var _0x2bd8=['info','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','OpenchannelTransferReport,\x20%s,\x20%s','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x48141d,_0x40c99e){var _0x3fd137=function(_0x31562d){while(--_0x31562d){_0x48141d['push'](_0x48141d['shift']());}};_0x3fd137(++_0x40c99e);}(_0x2bd8,0x130));var _0x82bd=function(_0x2632b8,_0x3fbb75){_0x2632b8=_0x2632b8-0x0;var _0x201eb2=_0x2bd8[_0x2632b8];return _0x201eb2;};'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')]('OpenchannelTransferReport,\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')]('OpenchannelTransferReport,\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
index 87bed21..ad392a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7235=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index'];(function(_0x36fa25,_0x4f8598){var _0x45ce32=function(_0x1b3875){while(--_0x1b3875){_0x36fa25['push'](_0x36fa25['shift']());}};_0x45ce32(++_0x4f8598);}(_0x7235,0x77));var _0x5723=function(_0x122ae5,_0x15258f){_0x122ae5=_0x122ae5-0x0;var _0x33a92d=_0x7235[_0x122ae5];return _0x33a92d;};'use strict';var multer=require(_0x5723('0x0'));var util=require(_0x5723('0x1'));var path=require(_0x5723('0x2'));var timeout=require(_0x5723('0x3'));var express=require('express');var router=express[_0x5723('0x4')]();var fs_extra=require(_0x5723('0x5'));var auth=require(_0x5723('0x6'));var interaction=require(_0x5723('0x7'));var config=require(_0x5723('0x8'));var controller=require(_0x5723('0x9'));router[_0x5723('0xa')]('/',auth[_0x5723('0xb')](),controller[_0x5723('0xc')]);router[_0x5723('0xa')](_0x5723('0xd'),auth[_0x5723('0xb')](),controller[_0x5723('0xe')]);router[_0x5723('0xf')]('/',auth[_0x5723('0xb')](),controller[_0x5723('0x10')]);router[_0x5723('0x11')]('/:id',auth[_0x5723('0xb')](),controller[_0x5723('0x12')]);router[_0x5723('0x13')]('/:id',auth[_0x5723('0xb')](),controller[_0x5723('0x14')]);module[_0x5723('0x15')]=router;
\ No newline at end of file
+var _0x5da6=['create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','index','/:id','isAuthenticated'];(function(_0x540ec8,_0x2dec3f){var _0x5dec32=function(_0x3287b4){while(--_0x3287b4){_0x540ec8['push'](_0x540ec8['shift']());}};_0x5dec32(++_0x2dec3f);}(_0x5da6,0x1ec));var _0x65da=function(_0x353fb6,_0x4f8fcd){_0x353fb6=_0x353fb6-0x0;var _0x288c33=_0x5da6[_0x353fb6];return _0x288c33;};'use strict';var multer=require(_0x65da('0x0'));var util=require(_0x65da('0x1'));var path=require(_0x65da('0x2'));var timeout=require('connect-timeout');var express=require(_0x65da('0x3'));var router=express[_0x65da('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x65da('0x5'));var interaction=require(_0x65da('0x6'));var config=require(_0x65da('0x7'));var controller=require(_0x65da('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x65da('0x9')]);router['get'](_0x65da('0xa'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x65da('0xb')](),controller[_0x65da('0xc')]);router[_0x65da('0xd')](_0x65da('0xa'),auth[_0x65da('0xb')](),controller[_0x65da('0xe')]);router[_0x65da('0xf')](_0x65da('0xa'),auth[_0x65da('0xb')](),controller[_0x65da('0x10')]);module[_0x65da('0x11')]=router;
\ No newline at end of file
index a1a78a5..80ba211 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb713=['sequelize','exports','STRING','name'];(function(_0x5519a9,_0x1c5147){var _0x32f2cc=function(_0x52ed58){while(--_0x52ed58){_0x5519a9['push'](_0x5519a9['shift']());}};_0x32f2cc(++_0x1c5147);}(_0xb713,0x170));var _0x3b71=function(_0x207a02,_0x278c56){_0x207a02=_0x207a02-0x0;var _0xd995c3=_0xb713[_0x207a02];return _0xd995c3;};'use strict';var Sequelize=require(_0x3b71('0x0'));module[_0x3b71('0x1')]={'name':{'type':Sequelize[_0x3b71('0x2')],'unique':_0x3b71('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x3b71('0x2')]}};
\ No newline at end of file
+var _0x8996=['STRING','name','sequelize','exports'];(function(_0x24679e,_0x22d9d7){var _0x291f21=function(_0x329529){while(--_0x329529){_0x24679e['push'](_0x24679e['shift']());}};_0x291f21(++_0x22d9d7);}(_0x8996,0x146));var _0x6899=function(_0x15a2d8,_0x18f226){_0x15a2d8=_0x15a2d8-0x0;var _0x34c3f8=_0x8996[_0x15a2d8];return _0x34c3f8;};'use strict';var Sequelize=require(_0x6899('0x0'));module[_0x6899('0x1')]={'name':{'type':Sequelize[_0x6899('0x2')],'unique':_0x6899('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x6899('0x2')]}};
\ No newline at end of file
index 23d2cb8..7a7fe27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d21=['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','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','UserProfileResource','status','sendStatus','error','send','index','map','Pause','rawAttributes','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','name','merge','options','includeAll','include','rows','catch','show','params','keys','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Pauses','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x277a8a,_0x16cf01){var _0x531463=function(_0xa1bfac){while(--_0xa1bfac){_0x277a8a['push'](_0x277a8a['shift']());}};_0x531463(++_0x16cf01);}(_0x7d21,0x98));var _0x17d2=function(_0x20ae9d,_0x77e369){_0x20ae9d=_0x20ae9d-0x0;var _0x1a616f=_0x7d21[_0x20ae9d];return _0x1a616f;};'use strict';var emlformat=require(_0x17d2('0x0'));var rimraf=require(_0x17d2('0x1'));var zipdir=require(_0x17d2('0x2'));var jsonpatch=require(_0x17d2('0x3'));var rp=require(_0x17d2('0x4'));var moment=require(_0x17d2('0x5'));var BPromise=require(_0x17d2('0x6'));var Mustache=require('mustache');var util=require(_0x17d2('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x17d2('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x17d2('0x9'));var _=require(_0x17d2('0xa'));var squel=require(_0x17d2('0xb'));var crypto=require(_0x17d2('0xc'));var jsforce=require(_0x17d2('0xd'));var deskjs=require(_0x17d2('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x17d2('0xf'));var Redis=require(_0x17d2('0x10'));var authService=require(_0x17d2('0x11'));var qs=require(_0x17d2('0x12'));var as=require(_0x17d2('0x13'));var hardwareService=require(_0x17d2('0x14'));var logger=require(_0x17d2('0x15'))(_0x17d2('0x16'));var utils=require(_0x17d2('0x17'));var config=require(_0x17d2('0x18'));var licenseUtil=require(_0x17d2('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x457871,_0xd2cf77){_0xd2cf77=_0xd2cf77||0xcc;return function(_0xb056d4){if(_0xb056d4){return _0x457871['sendStatus'](_0xd2cf77);}return _0x457871['status'](_0xd2cf77)[_0x17d2('0x1a')]();};}function respondWithResult(_0x55cf7b,_0x4fc8c8){_0x4fc8c8=_0x4fc8c8||0xc8;return function(_0x54a5c5){if(_0x54a5c5){return _0x55cf7b['status'](_0x4fc8c8)[_0x17d2('0x1b')](_0x54a5c5);}};}function respondWithFilteredResult(_0x10d063,_0x319df1){return function(_0x226fbb){if(_0x226fbb){var _0x42a93f=typeof _0x319df1[_0x17d2('0x1c')]==='undefined'&&typeof _0x319df1['limit']===_0x17d2('0x1d');var _0xf8e65b=_0x226fbb[_0x17d2('0x1e')];var _0x24d1ee=_0x42a93f?0x0:_0x319df1['offset'];var _0x5e2d9d=_0x42a93f?_0x226fbb[_0x17d2('0x1e')]:_0x319df1[_0x17d2('0x1c')]+_0x319df1[_0x17d2('0x1f')];var _0x1f7f58;if(_0x5e2d9d>=_0xf8e65b){_0x5e2d9d=_0xf8e65b;_0x1f7f58=0xc8;}else{_0x1f7f58=0xce;}_0x10d063['status'](_0x1f7f58);return _0x10d063[_0x17d2('0x20')](_0x17d2('0x21'),_0x24d1ee+'-'+_0x5e2d9d+'/'+_0xf8e65b)['json'](_0x226fbb);}return null;};}function patchUpdates(_0x4ac576){return function(_0x4f8ba1){try{jsonpatch[_0x17d2('0x22')](_0x4f8ba1,_0x4ac576,!![]);}catch(_0x2f60e2){return BPromise[_0x17d2('0x23')](_0x2f60e2);}return _0x4f8ba1['save']();};}function saveUpdates(_0x27747a,_0x534b4e){return function(_0x155217){if(_0x155217){return _0x155217[_0x17d2('0x24')](_0x27747a)[_0x17d2('0x25')](function(_0x3cb5fc){return _0x3cb5fc;});}return null;};}function removeEntity(_0x2958a6,_0x14226c){return function(_0x567993){if(_0x567993){return _0x567993[_0x17d2('0x26')]()['then'](function(){var _0x371226=_0x567993['get']({'plain':!![]});var _0x152616='Pauses';return db[_0x17d2('0x27')]['destroy']({'where':{'type':_0x152616,'resourceId':_0x371226['id']}})['then'](function(){return _0x567993;});})[_0x17d2('0x25')](function(){_0x2958a6[_0x17d2('0x28')](0xcc)[_0x17d2('0x1a')]();});}};}function handleEntityNotFound(_0x2ffa85,_0x14e681){return function(_0x50868f){if(!_0x50868f){_0x2ffa85[_0x17d2('0x29')](0x194);}return _0x50868f;};}function handleError(_0xcc9fbe,_0x3cb049){_0x3cb049=_0x3cb049||0x1f4;return function(_0x200edd){logger[_0x17d2('0x2a')](_0x200edd['stack']);if(_0x200edd['name']){delete _0x200edd['name'];}_0xcc9fbe[_0x17d2('0x28')](_0x3cb049)[_0x17d2('0x2b')](_0x200edd);};}exports[_0x17d2('0x2c')]=function(_0x31edc4,_0x2d07c8){var _0x358bb9={},_0x5185c8={},_0x2ef2ad={'count':0x0,'rows':[]};var _0x13f1c1=_[_0x17d2('0x2d')](db[_0x17d2('0x2e')][_0x17d2('0x2f')],function(_0x149005){return{'name':_0x149005['fieldName'],'type':_0x149005['type'][_0x17d2('0x30')]};});_0x5185c8['model']=_[_0x17d2('0x2d')](_0x13f1c1,'name');_0x5185c8[_0x17d2('0x31')]=_['keys'](_0x31edc4[_0x17d2('0x31')]);_0x5185c8[_0x17d2('0x32')]=_[_0x17d2('0x33')](_0x5185c8[_0x17d2('0x34')],_0x5185c8[_0x17d2('0x31')]);_0x358bb9[_0x17d2('0x35')]=_[_0x17d2('0x33')](_0x5185c8[_0x17d2('0x34')],qs['fields'](_0x31edc4[_0x17d2('0x31')][_0x17d2('0x36')]));_0x358bb9['attributes']=_0x358bb9[_0x17d2('0x35')][_0x17d2('0x37')]?_0x358bb9[_0x17d2('0x35')]:_0x5185c8['model'];if(!_0x31edc4[_0x17d2('0x31')][_0x17d2('0x38')](_0x17d2('0x39'))){_0x358bb9[_0x17d2('0x1f')]=qs[_0x17d2('0x1f')](_0x31edc4[_0x17d2('0x31')]['limit']);_0x358bb9[_0x17d2('0x1c')]=qs[_0x17d2('0x1c')](_0x31edc4[_0x17d2('0x31')][_0x17d2('0x1c')]);}_0x358bb9['order']=qs[_0x17d2('0x3a')](_0x31edc4[_0x17d2('0x31')][_0x17d2('0x3a')]);_0x358bb9[_0x17d2('0x3b')]=qs[_0x17d2('0x32')](_[_0x17d2('0x3c')](_0x31edc4['query'],_0x5185c8[_0x17d2('0x32')]),_0x13f1c1);if(_0x31edc4['query'][_0x17d2('0x3d')]){_0x358bb9['where']=_['merge'](_0x358bb9[_0x17d2('0x3b')],{'$or':_[_0x17d2('0x2d')](_0x13f1c1,function(_0x59a124){if(_0x59a124[_0x17d2('0x3e')]!==_0x17d2('0x3f')){var _0x140466={};_0x140466[_0x59a124[_0x17d2('0x40')]]={'$like':'%'+_0x31edc4[_0x17d2('0x31')][_0x17d2('0x3d')]+'%'};return _0x140466;}})});}_0x358bb9=_[_0x17d2('0x41')]({},_0x358bb9,_0x31edc4[_0x17d2('0x42')]);var _0x1048bc={'where':_0x358bb9['where']};return db[_0x17d2('0x2e')][_0x17d2('0x1e')](_0x1048bc)[_0x17d2('0x25')](function(_0x367b9b){_0x2ef2ad[_0x17d2('0x1e')]=_0x367b9b;if(_0x31edc4[_0x17d2('0x31')][_0x17d2('0x43')]){_0x358bb9[_0x17d2('0x44')]=[{'all':!![]}];}return db[_0x17d2('0x2e')]['findAll'](_0x358bb9);})[_0x17d2('0x25')](function(_0x6ad41b){_0x2ef2ad[_0x17d2('0x45')]=_0x6ad41b;return _0x2ef2ad;})[_0x17d2('0x25')](respondWithFilteredResult(_0x2d07c8,_0x358bb9))[_0x17d2('0x46')](handleError(_0x2d07c8,null));};exports[_0x17d2('0x47')]=function(_0x54ed28,_0x330d11){var _0x4781bf={'raw':!![],'where':{'id':_0x54ed28[_0x17d2('0x48')]['id']}},_0x4d120b={};_0x4d120b['model']=_[_0x17d2('0x49')](db['Pause'][_0x17d2('0x2f')]);_0x4d120b['query']=_[_0x17d2('0x49')](_0x54ed28['query']);_0x4d120b['filters']=_[_0x17d2('0x33')](_0x4d120b[_0x17d2('0x34')],_0x4d120b[_0x17d2('0x31')]);_0x4781bf[_0x17d2('0x35')]=_['intersection'](_0x4d120b[_0x17d2('0x34')],qs['fields'](_0x54ed28[_0x17d2('0x31')][_0x17d2('0x36')]));_0x4781bf[_0x17d2('0x35')]=_0x4781bf[_0x17d2('0x35')][_0x17d2('0x37')]?_0x4781bf[_0x17d2('0x35')]:_0x4d120b[_0x17d2('0x34')];if(_0x54ed28[_0x17d2('0x31')][_0x17d2('0x43')]){_0x4781bf[_0x17d2('0x44')]=[{'all':!![]}];}_0x4781bf=_['merge']({},_0x4781bf,_0x54ed28[_0x17d2('0x42')]);return db['Pause'][_0x17d2('0x4a')](_0x4781bf)[_0x17d2('0x25')](handleEntityNotFound(_0x330d11,null))[_0x17d2('0x25')](respondWithResult(_0x330d11,null))[_0x17d2('0x46')](handleError(_0x330d11,null));};exports[_0x17d2('0x4b')]=function(_0x4889b4,_0x2d1bea){return db[_0x17d2('0x2e')][_0x17d2('0x4b')](_0x4889b4[_0x17d2('0x4c')],{})['then'](function(_0x334004){var _0x30fb8e=_0x4889b4['user'][_0x17d2('0x4d')]({'plain':!![]});if(!_0x30fb8e)throw new Error(_0x17d2('0x4e'));if(_0x30fb8e['role']===_0x17d2('0x4f')){var _0x1d41de=_0x334004['get']({'plain':!![]});var _0x14a494=_0x17d2('0x50');return db['UserProfileSection'][_0x17d2('0x4a')]({'where':{'name':_0x14a494,'userProfileId':_0x30fb8e['userProfileId']},'raw':!![]})[_0x17d2('0x25')](function(_0x2d4271){if(_0x2d4271&&_0x2d4271[_0x17d2('0x51')]===0x0){return db[_0x17d2('0x27')]['create']({'name':_0x1d41de['name'],'resourceId':_0x1d41de['id'],'type':_0x2d4271[_0x17d2('0x40')],'sectionId':_0x2d4271['id']},{})[_0x17d2('0x25')](function(){return _0x334004;});}else{return _0x334004;}})['catch'](function(_0x438232){logger[_0x17d2('0x2a')](_0x17d2('0x52'),_0x438232);throw _0x438232;});}return _0x334004;})[_0x17d2('0x25')](respondWithResult(_0x2d1bea,0xc9))[_0x17d2('0x46')](handleError(_0x2d1bea,null));};exports[_0x17d2('0x24')]=function(_0x366dc4,_0x42212f){if(_0x366dc4[_0x17d2('0x4c')]['id']){delete _0x366dc4[_0x17d2('0x4c')]['id'];}return db['Pause'][_0x17d2('0x4a')]({'where':{'id':_0x366dc4['params']['id']}})[_0x17d2('0x25')](handleEntityNotFound(_0x42212f,null))[_0x17d2('0x25')](saveUpdates(_0x366dc4[_0x17d2('0x4c')],null))[_0x17d2('0x25')](respondWithResult(_0x42212f,null))[_0x17d2('0x46')](handleError(_0x42212f,null));};exports['destroy']=function(_0x585e14,_0x1bfdab){return db['Pause']['find']({'where':{'id':_0x585e14['params']['id']}})['then'](handleEntityNotFound(_0x1bfdab,null))[_0x17d2('0x25')](removeEntity(_0x1bfdab,null))[_0x17d2('0x46')](handleError(_0x1bfdab,null));};
\ No newline at end of file
+var _0x5a3b=['util','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy','Pauses','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','Pause','includeAll','findAll','rows','catch','show','params','include','find','body','user','get','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x3d6b05,_0x377cb7){var _0x3b58b7=function(_0x4af5e5){while(--_0x4af5e5){_0x3d6b05['push'](_0x3d6b05['shift']());}};_0x3b58b7(++_0x377cb7);}(_0x5a3b,0xf5));var _0xb5a3=function(_0x1f1af6,_0x3ac33a){_0x1f1af6=_0x1f1af6-0x0;var _0x423343=_0x5a3b[_0x1f1af6];return _0x423343;};'use strict';var emlformat=require(_0xb5a3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb5a3('0x1'));var jsonpatch=require(_0xb5a3('0x2'));var rp=require(_0xb5a3('0x3'));var moment=require(_0xb5a3('0x4'));var BPromise=require(_0xb5a3('0x5'));var Mustache=require(_0xb5a3('0x6'));var util=require(_0xb5a3('0x7'));var path=require('path');var sox=require(_0xb5a3('0x8'));var csv=require(_0xb5a3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb5a3('0xa'));var squel=require(_0xb5a3('0xb'));var crypto=require(_0xb5a3('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb5a3('0xd'));var toCsv=require(_0xb5a3('0x9'));var querystring=require(_0xb5a3('0xe'));var Papa=require(_0xb5a3('0xf'));var Redis=require(_0xb5a3('0x10'));var authService=require(_0xb5a3('0x11'));var qs=require(_0xb5a3('0x12'));var as=require(_0xb5a3('0x13'));var hardwareService=require(_0xb5a3('0x14'));var logger=require(_0xb5a3('0x15'))(_0xb5a3('0x16'));var utils=require('../../config/utils');var config=require(_0xb5a3('0x17'));var licenseUtil=require(_0xb5a3('0x18'));var db=require(_0xb5a3('0x19'))['db'];function respondWithStatusCode(_0x40c146,_0x4f9ceb){_0x4f9ceb=_0x4f9ceb||0xcc;return function(_0x1d2058){if(_0x1d2058){return _0x40c146[_0xb5a3('0x1a')](_0x4f9ceb);}return _0x40c146[_0xb5a3('0x1b')](_0x4f9ceb)[_0xb5a3('0x1c')]();};}function respondWithResult(_0x67ce0d,_0x4dd0a0){_0x4dd0a0=_0x4dd0a0||0xc8;return function(_0x35c1d7){if(_0x35c1d7){return _0x67ce0d[_0xb5a3('0x1b')](_0x4dd0a0)['json'](_0x35c1d7);}};}function respondWithFilteredResult(_0x1c0d71,_0x562260){return function(_0xaff143){if(_0xaff143){var _0x4bf4ef=typeof _0x562260[_0xb5a3('0x1d')]===_0xb5a3('0x1e')&&typeof _0x562260[_0xb5a3('0x1f')]===_0xb5a3('0x1e');var _0x593439=_0xaff143[_0xb5a3('0x20')];var _0x38ecd0=_0x4bf4ef?0x0:_0x562260['offset'];var _0x3a6ca5=_0x4bf4ef?_0xaff143[_0xb5a3('0x20')]:_0x562260['offset']+_0x562260['limit'];var _0x3aab08;if(_0x3a6ca5>=_0x593439){_0x3a6ca5=_0x593439;_0x3aab08=0xc8;}else{_0x3aab08=0xce;}_0x1c0d71[_0xb5a3('0x1b')](_0x3aab08);return _0x1c0d71[_0xb5a3('0x21')]('Content-Range',_0x38ecd0+'-'+_0x3a6ca5+'/'+_0x593439)[_0xb5a3('0x22')](_0xaff143);}return null;};}function patchUpdates(_0x18a4d3){return function(_0x23f539){try{jsonpatch[_0xb5a3('0x23')](_0x23f539,_0x18a4d3,!![]);}catch(_0x490308){return BPromise[_0xb5a3('0x24')](_0x490308);}return _0x23f539['save']();};}function saveUpdates(_0x299e21,_0x5c4052){return function(_0x3984f7){if(_0x3984f7){return _0x3984f7[_0xb5a3('0x25')](_0x299e21)[_0xb5a3('0x26')](function(_0x316f33){return _0x316f33;});}return null;};}function removeEntity(_0x35cfe3,_0x343e1f){return function(_0x276c20){if(_0x276c20){return _0x276c20[_0xb5a3('0x27')]()[_0xb5a3('0x26')](function(){var _0xc06586=_0x276c20['get']({'plain':!![]});var _0x1ae271=_0xb5a3('0x28');return db['UserProfileResource'][_0xb5a3('0x27')]({'where':{'type':_0x1ae271,'resourceId':_0xc06586['id']}})[_0xb5a3('0x26')](function(){return _0x276c20;});})[_0xb5a3('0x26')](function(){_0x35cfe3['status'](0xcc)[_0xb5a3('0x1c')]();});}};}function handleEntityNotFound(_0x5c8e7a,_0x46ea42){return function(_0x24f2d2){if(!_0x24f2d2){_0x5c8e7a[_0xb5a3('0x1a')](0x194);}return _0x24f2d2;};}function handleError(_0x4d9651,_0x4241b4){_0x4241b4=_0x4241b4||0x1f4;return function(_0x27f5d2){logger[_0xb5a3('0x29')](_0x27f5d2[_0xb5a3('0x2a')]);if(_0x27f5d2[_0xb5a3('0x2b')]){delete _0x27f5d2[_0xb5a3('0x2b')];}_0x4d9651[_0xb5a3('0x1b')](_0x4241b4)[_0xb5a3('0x2c')](_0x27f5d2);};}exports[_0xb5a3('0x2d')]=function(_0x1a0a81,_0x2d883f){var _0x3a89ad={},_0x437090={},_0x4a5e75={'count':0x0,'rows':[]};var _0x501267=_[_0xb5a3('0x2e')](db['Pause'][_0xb5a3('0x2f')],function(_0x35e37b){return{'name':_0x35e37b[_0xb5a3('0x30')],'type':_0x35e37b['type'][_0xb5a3('0x31')]};});_0x437090[_0xb5a3('0x32')]=_[_0xb5a3('0x2e')](_0x501267,_0xb5a3('0x2b'));_0x437090[_0xb5a3('0x33')]=_[_0xb5a3('0x34')](_0x1a0a81[_0xb5a3('0x33')]);_0x437090['filters']=_[_0xb5a3('0x35')](_0x437090['model'],_0x437090['query']);_0x3a89ad[_0xb5a3('0x36')]=_[_0xb5a3('0x35')](_0x437090[_0xb5a3('0x32')],qs[_0xb5a3('0x37')](_0x1a0a81['query']['fields']));_0x3a89ad[_0xb5a3('0x36')]=_0x3a89ad[_0xb5a3('0x36')][_0xb5a3('0x38')]?_0x3a89ad[_0xb5a3('0x36')]:_0x437090[_0xb5a3('0x32')];if(!_0x1a0a81['query'][_0xb5a3('0x39')](_0xb5a3('0x3a'))){_0x3a89ad['limit']=qs[_0xb5a3('0x1f')](_0x1a0a81[_0xb5a3('0x33')][_0xb5a3('0x1f')]);_0x3a89ad[_0xb5a3('0x1d')]=qs[_0xb5a3('0x1d')](_0x1a0a81[_0xb5a3('0x33')][_0xb5a3('0x1d')]);}_0x3a89ad[_0xb5a3('0x3b')]=qs[_0xb5a3('0x3c')](_0x1a0a81[_0xb5a3('0x33')][_0xb5a3('0x3c')]);_0x3a89ad[_0xb5a3('0x3d')]=qs[_0xb5a3('0x3e')](_[_0xb5a3('0x3f')](_0x1a0a81[_0xb5a3('0x33')],_0x437090[_0xb5a3('0x3e')]),_0x501267);if(_0x1a0a81[_0xb5a3('0x33')][_0xb5a3('0x40')]){_0x3a89ad[_0xb5a3('0x3d')]=_[_0xb5a3('0x41')](_0x3a89ad[_0xb5a3('0x3d')],{'$or':_[_0xb5a3('0x2e')](_0x501267,function(_0x1fe88c){if(_0x1fe88c['type']!==_0xb5a3('0x42')){var _0x28e82b={};_0x28e82b[_0x1fe88c[_0xb5a3('0x2b')]]={'$like':'%'+_0x1a0a81['query'][_0xb5a3('0x40')]+'%'};return _0x28e82b;}})});}_0x3a89ad=_[_0xb5a3('0x41')]({},_0x3a89ad,_0x1a0a81[_0xb5a3('0x43')]);var _0x2e794c={'where':_0x3a89ad[_0xb5a3('0x3d')]};return db[_0xb5a3('0x44')][_0xb5a3('0x20')](_0x2e794c)[_0xb5a3('0x26')](function(_0x1180fb){_0x4a5e75[_0xb5a3('0x20')]=_0x1180fb;if(_0x1a0a81[_0xb5a3('0x33')][_0xb5a3('0x45')]){_0x3a89ad['include']=[{'all':!![]}];}return db['Pause'][_0xb5a3('0x46')](_0x3a89ad);})[_0xb5a3('0x26')](function(_0xfd87ed){_0x4a5e75[_0xb5a3('0x47')]=_0xfd87ed;return _0x4a5e75;})[_0xb5a3('0x26')](respondWithFilteredResult(_0x2d883f,_0x3a89ad))[_0xb5a3('0x48')](handleError(_0x2d883f,null));};exports[_0xb5a3('0x49')]=function(_0x1ea5b6,_0x33319c){var _0x17274d={'raw':!![],'where':{'id':_0x1ea5b6[_0xb5a3('0x4a')]['id']}},_0x5999a4={};_0x5999a4['model']=_[_0xb5a3('0x34')](db[_0xb5a3('0x44')]['rawAttributes']);_0x5999a4[_0xb5a3('0x33')]=_[_0xb5a3('0x34')](_0x1ea5b6[_0xb5a3('0x33')]);_0x5999a4[_0xb5a3('0x3e')]=_[_0xb5a3('0x35')](_0x5999a4[_0xb5a3('0x32')],_0x5999a4[_0xb5a3('0x33')]);_0x17274d[_0xb5a3('0x36')]=_[_0xb5a3('0x35')](_0x5999a4[_0xb5a3('0x32')],qs['fields'](_0x1ea5b6[_0xb5a3('0x33')][_0xb5a3('0x37')]));_0x17274d['attributes']=_0x17274d['attributes']['length']?_0x17274d[_0xb5a3('0x36')]:_0x5999a4[_0xb5a3('0x32')];if(_0x1ea5b6['query'][_0xb5a3('0x45')]){_0x17274d[_0xb5a3('0x4b')]=[{'all':!![]}];}_0x17274d=_[_0xb5a3('0x41')]({},_0x17274d,_0x1ea5b6[_0xb5a3('0x43')]);return db[_0xb5a3('0x44')][_0xb5a3('0x4c')](_0x17274d)[_0xb5a3('0x26')](handleEntityNotFound(_0x33319c,null))[_0xb5a3('0x26')](respondWithResult(_0x33319c,null))['catch'](handleError(_0x33319c,null));};exports['create']=function(_0x30a202,_0x2cf18a){return db[_0xb5a3('0x44')]['create'](_0x30a202[_0xb5a3('0x4d')],{})[_0xb5a3('0x26')](function(_0x5a82d2){var _0x23ae88=_0x30a202[_0xb5a3('0x4e')][_0xb5a3('0x4f')]({'plain':!![]});if(!_0x23ae88)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23ae88['role']===_0xb5a3('0x4e')){var _0x12a106=_0x5a82d2['get']({'plain':!![]});var _0x427cdb=_0xb5a3('0x28');return db[_0xb5a3('0x50')][_0xb5a3('0x4c')]({'where':{'name':_0x427cdb,'userProfileId':_0x23ae88['userProfileId']},'raw':!![]})[_0xb5a3('0x26')](function(_0x4dcf2a){if(_0x4dcf2a&&_0x4dcf2a[_0xb5a3('0x51')]===0x0){return db[_0xb5a3('0x52')]['create']({'name':_0x12a106[_0xb5a3('0x2b')],'resourceId':_0x12a106['id'],'type':_0x4dcf2a[_0xb5a3('0x2b')],'sectionId':_0x4dcf2a['id']},{})[_0xb5a3('0x26')](function(){return _0x5a82d2;});}else{return _0x5a82d2;}})[_0xb5a3('0x48')](function(_0xf2feef){logger[_0xb5a3('0x29')](_0xb5a3('0x53'),_0xf2feef);throw _0xf2feef;});}return _0x5a82d2;})[_0xb5a3('0x26')](respondWithResult(_0x2cf18a,0xc9))['catch'](handleError(_0x2cf18a,null));};exports['update']=function(_0x4b920a,_0x396470){if(_0x4b920a[_0xb5a3('0x4d')]['id']){delete _0x4b920a[_0xb5a3('0x4d')]['id'];}return db[_0xb5a3('0x44')][_0xb5a3('0x4c')]({'where':{'id':_0x4b920a['params']['id']}})[_0xb5a3('0x26')](handleEntityNotFound(_0x396470,null))['then'](saveUpdates(_0x4b920a[_0xb5a3('0x4d')],null))[_0xb5a3('0x26')](respondWithResult(_0x396470,null))[_0xb5a3('0x48')](handleError(_0x396470,null));};exports['destroy']=function(_0x2aaf65,_0x55dc05){return db['Pause'][_0xb5a3('0x4c')]({'where':{'id':_0x2aaf65[_0xb5a3('0x4a')]['id']}})[_0xb5a3('0x26')](handleEntityNotFound(_0x55dc05,null))['then'](removeEntity(_0x55dc05,null))['catch'](handleError(_0x55dc05,null));};
\ No newline at end of file
index 5ec638b..4867f38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./pause.attributes','exports','define','Pause','tools_pauses','lodash','util','moment'];(function(_0x477aeb,_0x52f9fb){var _0x20a7bf=function(_0x29fcf9){while(--_0x29fcf9){_0x477aeb['push'](_0x477aeb['shift']());}};_0x20a7bf(++_0x52f9fb);}(_0xe14b,0x93));var _0xbe14=function(_0xb638a8,_0x3b4597){_0xb638a8=_0xb638a8-0x0;var _0x538e2b=_0xe14b[_0xb638a8];return _0x538e2b;};'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 _0x814b=['define','Pause','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./pause.attributes','exports'];(function(_0x2ec55d,_0xa889f8){var _0x24fe9f=function(_0x10b074){while(--_0x10b074){_0x2ec55d['push'](_0x2ec55d['shift']());}};_0x24fe9f(++_0xa889f8);}(_0x814b,0x1a2));var _0xb814=function(_0x1f0724,_0x3a58bf){_0x1f0724=_0x1f0724-0x0;var _0x253ffb=_0x814b[_0x1f0724];return _0x253ffb;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1037bc1..ff5b3d8 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(_0x41dabb,_0x5afa1a){var _0x1c78bb=function(_0x5b3f21){while(--_0x5b3f21){_0x41dabb['push'](_0x41dabb['shift']());}};_0x1c78bb(++_0x5afa1a);}(_0x7a54,0x106));var _0x47a5=function(_0x17d9a9,_0x2d432b){_0x17d9a9=_0x17d9a9-0x0;var _0x489bf4=_0x7a54[_0x17d9a9];return _0x489bf4;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x918ed6,_0xc297c8){var _0x1cd32e=function(_0x577381){while(--_0x577381){_0x918ed6['push'](_0x918ed6['shift']());}};_0x1cd32e(++_0xc297c8);}(_0xb10b,0x12a));var _0xbb10=function(_0x7033ad,_0x4f191a){_0x7033ad=_0x7033ad-0x0;var _0x4117fb=_0xb10b[_0x7033ad];return _0x4117fb;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 8801f80..530100d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb8=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','isAuthenticated','index','get','/webhook','webhookGet','/:id','/:id/download','join','root','server/files/plugins','originalname','%s-%s%s','extname','post','single','file','upload','webhookPost','update','delete','exports'];(function(_0x443053,_0x3d9002){var _0x14cc88=function(_0x36f18f){while(--_0x36f18f){_0x443053['push'](_0x443053['shift']());}};_0x14cc88(++_0x3d9002);}(_0xadb8,0x1d0));var _0x8adb=function(_0x551b0a,_0x41348c){_0x551b0a=_0x551b0a-0x0;var _0x5dacb8=_0xadb8[_0x551b0a];return _0x5dacb8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8adb('0x0'));var timeout=require('connect-timeout');var express=require(_0x8adb('0x1'));var router=express[_0x8adb('0x2')]();var fs_extra=require(_0x8adb('0x3'));var auth=require(_0x8adb('0x4'));var interaction=require(_0x8adb('0x5'));var config=require(_0x8adb('0x6'));var controller=require(_0x8adb('0x7'));router['get']('/',auth[_0x8adb('0x8')](),controller[_0x8adb('0x9')]);router[_0x8adb('0xa')](_0x8adb('0xb'),controller[_0x8adb('0xc')]);router[_0x8adb('0xa')](_0x8adb('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0x8adb('0xe'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xa095e1,_0x628c45,_0x46c6fb){_0x46c6fb(null,path[_0x8adb('0xf')](config[_0x8adb('0x10')],_0x8adb('0x11')));},'filename':function(_0x2a6574,_0x2828f1,_0x2d6b55){_0x2828f1[_0x8adb('0x12')]=_0x2828f1['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2d6b55(null,util['format'](_0x8adb('0x13'),path['basename'](_0x2828f1[_0x8adb('0x12')],path[_0x8adb('0x14')](_0x2828f1[_0x8adb('0x12')])),Date['now'](),path[_0x8adb('0x14')](_0x2828f1[_0x8adb('0x12')])));}})});router[_0x8adb('0x15')]('/',upload[_0x8adb('0x16')](_0x8adb('0x17')),controller[_0x8adb('0x18')]);router['post'](_0x8adb('0xb'),controller[_0x8adb('0x19')]);router['put']('/:id',auth[_0x8adb('0x8')](),controller[_0x8adb('0x1a')]);router[_0x8adb('0x1b')](_0x8adb('0xd'),auth[_0x8adb('0x8')](),controller[_0x8adb('0x1b')]);module[_0x8adb('0x1c')]=router;
\ No newline at end of file
+var _0x4c6d=['delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','get','index','/webhook','/:id','isAuthenticated','/:id/download','diskStorage','join','root','originalname','replace','format','%s-%s%s','basename','now','extname','post','single','file','upload','webhookPost','put'];(function(_0x50ef88,_0x5a1ecc){var _0x4ef9a1=function(_0x53b8cd){while(--_0x53b8cd){_0x50ef88['push'](_0x50ef88['shift']());}};_0x4ef9a1(++_0x5a1ecc);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x314ba5,_0x359dac){_0x314ba5=_0x314ba5-0x0;var _0x81ae10=_0x4c6d[_0x314ba5];return _0x81ae10;};'use strict';var multer=require(_0xd4c6('0x0'));var util=require(_0xd4c6('0x1'));var path=require(_0xd4c6('0x2'));var timeout=require(_0xd4c6('0x3'));var express=require(_0xd4c6('0x4'));var router=express['Router']();var fs_extra=require(_0xd4c6('0x5'));var auth=require(_0xd4c6('0x6'));var interaction=require(_0xd4c6('0x7'));var config=require('../../config/environment');var controller=require(_0xd4c6('0x8'));router[_0xd4c6('0x9')]('/',auth['isAuthenticated'](),controller[_0xd4c6('0xa')]);router[_0xd4c6('0x9')](_0xd4c6('0xb'),controller['webhookGet']);router[_0xd4c6('0x9')](_0xd4c6('0xc'),auth[_0xd4c6('0xd')](),controller['show']);router[_0xd4c6('0x9')](_0xd4c6('0xe'),auth[_0xd4c6('0xd')](),controller['download']);var upload=multer({'storage':multer[_0xd4c6('0xf')]({'destination':function(_0x38f0a6,_0x3eaa96,_0x2790e7){_0x2790e7(null,path[_0xd4c6('0x10')](config[_0xd4c6('0x11')],'server/files/plugins'));},'filename':function(_0x52bbc9,_0x35b902,_0x489171){_0x35b902[_0xd4c6('0x12')]=_0x35b902[_0xd4c6('0x12')][_0xd4c6('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x489171(null,util[_0xd4c6('0x14')](_0xd4c6('0x15'),path[_0xd4c6('0x16')](_0x35b902[_0xd4c6('0x12')],path['extname'](_0x35b902['originalname'])),Date[_0xd4c6('0x17')](),path[_0xd4c6('0x18')](_0x35b902[_0xd4c6('0x12')])));}})});router[_0xd4c6('0x19')]('/',upload[_0xd4c6('0x1a')](_0xd4c6('0x1b')),controller[_0xd4c6('0x1c')]);router['post'](_0xd4c6('0xb'),controller[_0xd4c6('0x1d')]);router[_0xd4c6('0x1e')](_0xd4c6('0xc'),auth[_0xd4c6('0xd')](),controller['update']);router[_0xd4c6('0x1f')](_0xd4c6('0xc'),auth[_0xd4c6('0xd')](),controller['delete']);module[_0xd4c6('0x20')]=router;
\ No newline at end of file
index aed7fd6..f896edc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7227=['exports','STRING','TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM','adminOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'];(function(_0x471481,_0x2574c5){var _0x533b0a=function(_0x4af81c){while(--_0x4af81c){_0x471481['push'](_0x471481['shift']());}};_0x533b0a(++_0x2574c5);}(_0x7227,0x172));var _0x7722=function(_0x330412,_0xfeadf4){_0x330412=_0x330412-0x0;var _0x3f18b4=_0x7227[_0x330412];return _0x3f18b4;};'use strict';var Sequelize=require('sequelize');module[_0x7722('0x0')]={'name':{'type':Sequelize[_0x7722('0x1')]},'type':{'type':Sequelize['ENUM']('html','script')},'description':{'type':Sequelize[_0x7722('0x2')]},'version':{'type':Sequelize[_0x7722('0x2')]},'path':{'type':Sequelize[_0x7722('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x7722('0x3')],'defaultValue':0x0,'comment':_0x7722('0x4')},'sidebar':{'type':Sequelize[_0x7722('0x5')](_0x7722('0x6'),'agentOnly',_0x7722('0x7'),_0x7722('0x8')),'defaultValue':_0x7722('0x7'),'comment':_0x7722('0x9')},'icon':{'type':Sequelize[_0x7722('0x1')]},'adminUrl':{'type':Sequelize[_0x7722('0x1')]},'agentUrl':{'type':Sequelize[_0x7722('0x1')]},'scriptName':{'type':Sequelize[_0x7722('0x1')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2966=['Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','html','script','TEXT','BOOLEAN','ENUM','adminOnly','agentOnly','always','never'];(function(_0x2fc00c,_0x2e893b){var _0x53b391=function(_0x381aa4){while(--_0x381aa4){_0x2fc00c['push'](_0x2fc00c['shift']());}};_0x53b391(++_0x2e893b);}(_0x2966,0xaa));var _0x6296=function(_0x4dd8d7,_0x45f407){_0x4dd8d7=_0x4dd8d7-0x0;var _0x179917=_0x2966[_0x4dd8d7];return _0x179917;};'use strict';var Sequelize=require(_0x6296('0x0'));module[_0x6296('0x1')]={'name':{'type':Sequelize[_0x6296('0x2')]},'type':{'type':Sequelize['ENUM'](_0x6296('0x3'),_0x6296('0x4'))},'description':{'type':Sequelize[_0x6296('0x5')]},'version':{'type':Sequelize[_0x6296('0x5')]},'path':{'type':Sequelize['STRING'],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x6296('0x6')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0x6296('0x7')](_0x6296('0x8'),_0x6296('0x9'),_0x6296('0xa'),_0x6296('0xb')),'defaultValue':'always','comment':_0x6296('0xc')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0x6296('0x2')]},'scriptPath':{'type':Sequelize[_0x6296('0x2')]}};
\ No newline at end of file
index fac50c6..b12a2cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa1=['offset','limit','count','set','Content-Range','apply','save','update','then','destroy','get','name','map','Plugin','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','params','rawAttributes','length','download','find','server/files/plugins','format','basename','path','createWriteStream','warning','ENOENT','error','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','join','root','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','info','Temporary\x20file\x20removed','upload','filename','file','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','undefined','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','admin','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','plugins','Warning:\x20admin\x20view\x20not\x20specified','agent','test','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Plugins','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','statusCode','webhookPost','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','extract-zip','archiver','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json'];(function(_0x105557,_0x5cf175){var _0x245b0c=function(_0x59ebc4){while(--_0x59ebc4){_0x105557['push'](_0x105557['shift']());}};_0x245b0c(++_0x5cf175);}(_0x0aa1,0x8d));var _0x10aa=function(_0x461875,_0x407e30){_0x461875=_0x461875-0x0;var _0x31c3ef=_0x0aa1[_0x461875];return _0x31c3ef;};'use strict';var emlformat=require(_0x10aa('0x0'));var rimraf=require(_0x10aa('0x1'));var zipdir=require(_0x10aa('0x2'));var jsonpatch=require(_0x10aa('0x3'));var rp=require(_0x10aa('0x4'));var moment=require(_0x10aa('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x10aa('0x6'));var util=require(_0x10aa('0x7'));var path=require('path');var sox=require(_0x10aa('0x8'));var csv=require('to-csv');var ejs=require(_0x10aa('0x9'));var fs=require('fs');var fs_extra=require(_0x10aa('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x10aa('0xb'));var deskjs=require(_0x10aa('0xc'));var toCsv=require(_0x10aa('0xd'));var querystring=require(_0x10aa('0xe'));var Papa=require('papaparse');var extract=require(_0x10aa('0xf'));var rimraf=require(_0x10aa('0x1'));var archiver=require(_0x10aa('0x10'));var Redis=require('ioredis');var authService=require(_0x10aa('0x11'));var qs=require(_0x10aa('0x12'));var as=require(_0x10aa('0x13'));var hardwareService=require(_0x10aa('0x14'));var logger=require(_0x10aa('0x15'))(_0x10aa('0x16'));var utils=require(_0x10aa('0x17'));var config=require(_0x10aa('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x10aa('0x19'))['db'];config['redis']=_[_0x10aa('0x1a')](config['redis'],{'host':_0x10aa('0x1b'),'port':0x18eb});var socket=require(_0x10aa('0x1c'))(new Redis(config['redis']));require('./plugin.socket')[_0x10aa('0x1d')](socket);function respondWithStatusCode(_0x7e883e,_0x2ede78){_0x2ede78=_0x2ede78||0xcc;return function(_0x29c2ed){if(_0x29c2ed){return _0x7e883e[_0x10aa('0x1e')](_0x2ede78);}return _0x7e883e[_0x10aa('0x1f')](_0x2ede78)[_0x10aa('0x20')]();};}function respondWithResult(_0x30c29e,_0x3fece7){_0x3fece7=_0x3fece7||0xc8;return function(_0x59332f){if(_0x59332f){return _0x30c29e['status'](_0x3fece7)[_0x10aa('0x21')](_0x59332f);}};}function respondWithFilteredResult(_0x3e66f1,_0x5cd2e0){return function(_0x453482){if(_0x453482){var _0x5ba1f8=typeof _0x5cd2e0[_0x10aa('0x22')]==='undefined'&&typeof _0x5cd2e0[_0x10aa('0x23')]==='undefined';var _0x413268=_0x453482['count'];var _0x2c143e=_0x5ba1f8?0x0:_0x5cd2e0[_0x10aa('0x22')];var _0x23050b=_0x5ba1f8?_0x453482[_0x10aa('0x24')]:_0x5cd2e0['offset']+_0x5cd2e0[_0x10aa('0x23')];var _0x58b49e;if(_0x23050b>=_0x413268){_0x23050b=_0x413268;_0x58b49e=0xc8;}else{_0x58b49e=0xce;}_0x3e66f1[_0x10aa('0x1f')](_0x58b49e);return _0x3e66f1[_0x10aa('0x25')](_0x10aa('0x26'),_0x2c143e+'-'+_0x23050b+'/'+_0x413268)[_0x10aa('0x21')](_0x453482);}return null;};}function patchUpdates(_0x520fcc){return function(_0x2c963e){try{jsonpatch[_0x10aa('0x27')](_0x2c963e,_0x520fcc,!![]);}catch(_0x121448){return BPromise['reject'](_0x121448);}return _0x2c963e[_0x10aa('0x28')]();};}function saveUpdates(_0x145455,_0x363129){return function(_0x3df441){if(_0x3df441){return _0x3df441[_0x10aa('0x29')](_0x145455)[_0x10aa('0x2a')](function(_0x14df86){return _0x14df86;});}return null;};}function removeEntity(_0x2402dd,_0x6c28ef){return function(_0x41dc68){if(_0x41dc68){return _0x41dc68[_0x10aa('0x2b')]()[_0x10aa('0x2a')](function(){var _0x4b919f=_0x41dc68[_0x10aa('0x2c')]({'plain':!![]});var _0xe19d77='Plugins';return db['UserProfileResource']['destroy']({'where':{'type':_0xe19d77,'resourceId':_0x4b919f['id']}})[_0x10aa('0x2a')](function(){return _0x41dc68;});})[_0x10aa('0x2a')](function(){_0x2402dd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e7e28,_0x5c889b){return function(_0x13b258){if(!_0x13b258){_0x3e7e28[_0x10aa('0x1e')](0x194);}return _0x13b258;};}function handleError(_0x2fe630,_0x594f02){_0x594f02=_0x594f02||0x1f4;return function(_0x283ca3){logger['error'](_0x283ca3['stack']);if(_0x283ca3['name']){delete _0x283ca3[_0x10aa('0x2d')];}_0x2fe630['status'](_0x594f02)['send'](_0x283ca3);};}exports['index']=function(_0x13cdc7,_0x104d7a){var _0x483a9b={},_0x15b071={},_0x430429={'count':0x0,'rows':[]};var _0x4a0d3a=_[_0x10aa('0x2e')](db[_0x10aa('0x2f')]['rawAttributes'],function(_0x170be3){return{'name':_0x170be3[_0x10aa('0x30')],'type':_0x170be3[_0x10aa('0x31')][_0x10aa('0x32')]};});_0x15b071[_0x10aa('0x33')]=_[_0x10aa('0x2e')](_0x4a0d3a,_0x10aa('0x2d'));_0x15b071[_0x10aa('0x34')]=_[_0x10aa('0x35')](_0x13cdc7[_0x10aa('0x34')]);_0x15b071[_0x10aa('0x36')]=_[_0x10aa('0x37')](_0x15b071['model'],_0x15b071[_0x10aa('0x34')]);_0x483a9b['attributes']=_[_0x10aa('0x37')](_0x15b071[_0x10aa('0x33')],qs[_0x10aa('0x38')](_0x13cdc7[_0x10aa('0x34')]['fields']));_0x483a9b[_0x10aa('0x39')]=_0x483a9b['attributes']['length']?_0x483a9b[_0x10aa('0x39')]:_0x15b071[_0x10aa('0x33')];if(!_0x13cdc7[_0x10aa('0x34')][_0x10aa('0x3a')](_0x10aa('0x3b'))){_0x483a9b[_0x10aa('0x23')]=qs[_0x10aa('0x23')](_0x13cdc7['query']['limit']);_0x483a9b[_0x10aa('0x22')]=qs[_0x10aa('0x22')](_0x13cdc7['query'][_0x10aa('0x22')]);}_0x483a9b[_0x10aa('0x3c')]=qs['sort'](_0x13cdc7['query'][_0x10aa('0x3d')]);_0x483a9b[_0x10aa('0x3e')]=qs[_0x10aa('0x36')](_[_0x10aa('0x3f')](_0x13cdc7[_0x10aa('0x34')],_0x15b071['filters']),_0x4a0d3a);if(_0x13cdc7['query'][_0x10aa('0x40')]){_0x483a9b[_0x10aa('0x3e')]=_[_0x10aa('0x41')](_0x483a9b[_0x10aa('0x3e')],{'$or':_[_0x10aa('0x2e')](_0x4a0d3a,function(_0x3131ce){if(_0x3131ce[_0x10aa('0x31')]!==_0x10aa('0x42')){var _0x186d29={};_0x186d29[_0x3131ce[_0x10aa('0x2d')]]={'$like':'%'+_0x13cdc7[_0x10aa('0x34')][_0x10aa('0x40')]+'%'};return _0x186d29;}})});}_0x483a9b=_[_0x10aa('0x41')]({},_0x483a9b,_0x13cdc7[_0x10aa('0x43')]);var _0x379d0d={'where':_0x483a9b[_0x10aa('0x3e')]};return db['Plugin'][_0x10aa('0x24')](_0x379d0d)[_0x10aa('0x2a')](function(_0x4ce067){_0x430429[_0x10aa('0x24')]=_0x4ce067;if(_0x13cdc7[_0x10aa('0x34')][_0x10aa('0x44')]){_0x483a9b[_0x10aa('0x45')]=[{'all':!![]}];}return db[_0x10aa('0x2f')]['findAll'](_0x483a9b);})[_0x10aa('0x2a')](function(_0x5e84fc){_0x430429[_0x10aa('0x46')]=_0x5e84fc;return _0x430429;})[_0x10aa('0x2a')](respondWithFilteredResult(_0x104d7a,_0x483a9b))['catch'](handleError(_0x104d7a,null));};exports['show']=function(_0x568d13,_0x4408b2){var _0x5d0617={'raw':!![],'where':{'id':_0x568d13[_0x10aa('0x47')]['id']}},_0x547647={};_0x547647['model']=_[_0x10aa('0x35')](db[_0x10aa('0x2f')][_0x10aa('0x48')]);_0x547647['query']=_[_0x10aa('0x35')](_0x568d13['query']);_0x547647[_0x10aa('0x36')]=_[_0x10aa('0x37')](_0x547647[_0x10aa('0x33')],_0x547647[_0x10aa('0x34')]);_0x5d0617[_0x10aa('0x39')]=_[_0x10aa('0x37')](_0x547647[_0x10aa('0x33')],qs[_0x10aa('0x38')](_0x568d13[_0x10aa('0x34')][_0x10aa('0x38')]));_0x5d0617[_0x10aa('0x39')]=_0x5d0617[_0x10aa('0x39')][_0x10aa('0x49')]?_0x5d0617[_0x10aa('0x39')]:_0x547647[_0x10aa('0x33')];if(_0x568d13[_0x10aa('0x34')]['includeAll']){_0x5d0617[_0x10aa('0x45')]=[{'all':!![]}];}_0x5d0617=_['merge']({},_0x5d0617,_0x568d13[_0x10aa('0x43')]);return db['Plugin']['find'](_0x5d0617)[_0x10aa('0x2a')](handleEntityNotFound(_0x4408b2,null))[_0x10aa('0x2a')](respondWithResult(_0x4408b2,null))['catch'](handleError(_0x4408b2,null));};exports[_0x10aa('0x4a')]=function(_0x41a53a,_0x564dcd,_0x3be488){return db['Plugin'][_0x10aa('0x4b')]({'where':{'id':_0x41a53a['params']['id']},'attributes':[_0x10aa('0x2d'),'path'],'raw':!![]})[_0x10aa('0x2a')](handleEntityNotFound(_0x564dcd,null))[_0x10aa('0x2a')](function(_0x2fbb56){if(_0x2fbb56){var _0x42cc5b=path['join'](config['root'],_0x10aa('0x4c'),util[_0x10aa('0x4d')]('%s.zip',path[_0x10aa('0x4e')](_0x2fbb56[_0x10aa('0x4f')])));var _0x5a40bb=fs[_0x10aa('0x50')](_0x42cc5b);var _0x16cd25=archiver('zip',{'zlib':{'level':0x9}});_0x16cd25['on'](_0x10aa('0x51'),function(_0x4c574c){if(_0x4c574c['code']===_0x10aa('0x52')){logger[_0x10aa('0x53')](_0x4c574c);}else{throw new db[(_0x10aa('0x54'))][(_0x10aa('0x55'))](_0x10aa('0x56'));}});_0x16cd25['on'](_0x10aa('0x53'),function(_0x29dc75){throw new db['Sequelize'][(_0x10aa('0x55'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x16cd25[_0x10aa('0x57')](_0x5a40bb);_0x16cd25[_0x10aa('0x58')](_0x10aa('0x59'),{'cwd':path[_0x10aa('0x5a')](config[_0x10aa('0x5b')],'server/files/plugins',path['dirname'](_0x2fbb56[_0x10aa('0x4f')])),'ignore':[path[_0x10aa('0x5a')](path[_0x10aa('0x4e')](_0x2fbb56['path']),'node_modules/**/*'),path[_0x10aa('0x5a')](path[_0x10aa('0x4e')](_0x2fbb56[_0x10aa('0x4f')]),_0x10aa('0x5c'))],'nodir':!![]})[_0x10aa('0x5d')]();_0x5a40bb['on'](_0x10aa('0x5e'),function(){if(!fs[_0x10aa('0x5f')](_0x42cc5b)){throw new db[(_0x10aa('0x54'))]['Error'](_0x10aa('0x60'));}return _0x564dcd[_0x10aa('0x4a')](_0x42cc5b,util[_0x10aa('0x4d')](_0x10aa('0x61'),path[_0x10aa('0x4e')](_0x2fbb56[_0x10aa('0x4f')])),function(_0x1dc961){if(_0x1dc961){throw new db['Sequelize'][(_0x10aa('0x55'))](_0x10aa('0x62'));}fs[_0x10aa('0x63')](_0x42cc5b);logger['info'](_0x10aa('0x64'));logger[_0x10aa('0x65')](_0x10aa('0x66'));});});}return null;})['catch'](handleError(_0x564dcd,null));};exports[_0x10aa('0x67')]=function(_0x4ae69b,_0x445dad,_0x538bdd){var _0x41bebd=path['basename'](_0x4ae69b['file'][_0x10aa('0x68')],path['extname'](_0x4ae69b[_0x10aa('0x69')][_0x10aa('0x68')]));var _0x3201dc=path['join'](config[_0x10aa('0x5b')],_0x10aa('0x4c'),_0x4ae69b[_0x10aa('0x69')][_0x10aa('0x68')]);var _0x52b545=path[_0x10aa('0x5a')](config[_0x10aa('0x5b')],_0x10aa('0x4c'),_0x41bebd);logger[_0x10aa('0x65')](_0x10aa('0x6a'),_0x3201dc);logger[_0x10aa('0x65')](_0x10aa('0x6b'),_0x52b545);try{fs[_0x10aa('0x6c')](_0x3201dc,parseInt('0777',0x8));extract(_0x3201dc,{'dir':_0x52b545},function(_0xca469a){if(_0xca469a){logger[_0x10aa('0x53')](_0xca469a);handleError(_0xca469a,!![]);};var _0x3311a0=fs[_0x10aa('0x6d')](_0x52b545);if(_0x3311a0[_0x10aa('0x49')]>0x1){removeReferences(_0x3201dc,_0x52b545);logger[_0x10aa('0x53')](_0x10aa('0x6e'));return _0x538bdd(new Error(_0x10aa('0x6e')));}var _0x3cc05d=fs[_0x10aa('0x6f')](path[_0x10aa('0x5a')](_0x52b545,_0x3311a0[0x0]));if(_0x3cc05d[_0x10aa('0x70')]()){removeReferences(_0x3201dc,_0x52b545);logger[_0x10aa('0x53')](_0x10aa('0x6e'));return _0x538bdd(new Error('Invalid\x20plugin\x20structure'));}if(_0x3cc05d[_0x10aa('0x71')]()){var _0x4df7d3=fs['readdirSync'](path[_0x10aa('0x5a')](_0x52b545,_0x3311a0[0x0]));if(_0x4df7d3[_0x10aa('0x49')]===0x0){removeReferences(_0x3201dc,_0x52b545);logger[_0x10aa('0x53')](_0x10aa('0x6e'));return _0x538bdd(new Error(_0x10aa('0x6e')));}var _0x119e71=_0x4df7d3[_0x10aa('0x72')](function(_0x2c2646){return _0x2c2646===_0x10aa('0x73');});if(!_0x119e71){return _0x538bdd(new Error(_0x10aa('0x74')));}var _0x4369b0=fs[_0x10aa('0x75')](path[_0x10aa('0x5a')](_0x52b545,_0x3311a0[0x0],_0x10aa('0x73')));var _0x19556d=JSON[_0x10aa('0x76')](_0x4369b0);if(_0x10aa('0x77')==typeof _0x19556d[_0x10aa('0x2d')]){return _0x538bdd(new Error(_0x10aa('0x78')));}if(_0x10aa('0x77')==typeof _0x19556d[_0x10aa('0x31')]){return _0x538bdd(new Error(_0x10aa('0x79')));}if(_0x10aa('0x77')==typeof _0x19556d[_0x10aa('0x7a')]){return _0x538bdd(new Error(_0x10aa('0x7b')));}if('undefined'==typeof _0x19556d[_0x10aa('0x7c')]){return _0x538bdd(new Error(_0x10aa('0x7d')));}if(_0x19556d[_0x10aa('0x31')]===_0x10aa('0x7e')){if(_0x10aa('0x77')==typeof _0x19556d['parameters'][_0x10aa('0x7f')]){return _0x538bdd(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x10aa('0x77')==typeof _0x19556d[_0x10aa('0x7c')][_0x10aa('0x7f')][_0x10aa('0x80')]&&'undefined'==typeof _0x19556d[_0x10aa('0x7c')][_0x10aa('0x7f')]['agent']){return _0x538bdd(new Error(_0x10aa('0x81')));}}else if(_0x19556d['type']===_0x10aa('0x82')){if(_0x10aa('0x77')==typeof _0x19556d[_0x10aa('0x7c')][_0x10aa('0x83')]){return _0x538bdd(new Error(_0x10aa('0x84')));}if(_0x10aa('0x77')==typeof _0x19556d[_0x10aa('0x7c')][_0x10aa('0x85')]){return _0x538bdd(new Error(_0x10aa('0x86')));}}else{return _0x538bdd(new Error(_0x10aa('0x87')));}var _0x44e1ed=_0x19556d[_0x10aa('0x2d')];var _0x411bdb=_0x19556d[_0x10aa('0x88')];var _0x434560=_0x19556d[_0x10aa('0x31')];var _0x195fe1=_0x19556d[_0x10aa('0x89')]?_0x19556d['sidebar']:_0x10aa('0x8a');var _0x55490d=_0x19556d[_0x10aa('0x8b')]?_0x19556d[_0x10aa('0x8b')]:'icon-apps';var _0x8226f6='';var _0x7e376b='';var _0x163437='';var _0x23c82d='';var _0x53d159=_0x19556d['version'];if(_0x434560===_0x10aa('0x7e')){if(_0x10aa('0x77')!=typeof _0x19556d[_0x10aa('0x7c')][_0x10aa('0x7f')][_0x10aa('0x80')]){var _0x5477c0=_0x19556d['parameters'][_0x10aa('0x7f')][_0x10aa('0x80')];if(!/^(f|ht)tps?:\/\//i['test'](_0x5477c0)){_0x8226f6=path['join'](_0x10aa('0x8c'),_0x41bebd,_0x3311a0[0x0],_0x5477c0);}else{_0x8226f6=_0x5477c0;}}else{logger['info'](_0x10aa('0x8d'));}if(_0x10aa('0x77')!=typeof _0x19556d[_0x10aa('0x7c')][_0x10aa('0x7f')][_0x10aa('0x8e')]){var _0x3b2b8e=_0x19556d['parameters'][_0x10aa('0x7f')][_0x10aa('0x8e')];if(!/^(f|ht)tps?:\/\//i[_0x10aa('0x8f')](_0x3b2b8e)){_0x7e376b=path[_0x10aa('0x5a')](_0x10aa('0x8c'),_0x41bebd,_0x3311a0[0x0],_0x3b2b8e);}else{_0x7e376b=_0x3b2b8e;}}else{logger[_0x10aa('0x65')](_0x10aa('0x90'));}}else if(_0x434560==='script'){_0x163437=_0x19556d['parameters']['scriptName'];_0x23c82d=_0x19556d['parameters']['scriptPath'];if(_0x10aa('0x77')!=typeof _0x19556d['parameters'][_0x10aa('0x7f')]){if('undefined'!=typeof _0x19556d[_0x10aa('0x7c')][_0x10aa('0x7f')][_0x10aa('0x80')]){var _0x5477c0=_0x19556d[_0x10aa('0x7c')][_0x10aa('0x7f')][_0x10aa('0x80')];if(!/^(f|ht)tps?:\/\//i[_0x10aa('0x8f')](_0x5477c0)){_0x8226f6=path['join'](_0x10aa('0x8c'),_0x41bebd,_0x3311a0[0x0],_0x5477c0);}else{_0x8226f6=_0x5477c0;}}if(_0x10aa('0x77')!=typeof _0x19556d['parameters'][_0x10aa('0x7f')][_0x10aa('0x8e')]){var _0x3b2b8e=_0x19556d[_0x10aa('0x7c')][_0x10aa('0x7f')][_0x10aa('0x8e')];if(!/^(f|ht)tps?:\/\//i[_0x10aa('0x8f')](_0x3b2b8e)){_0x7e376b=path[_0x10aa('0x5a')]('plugins',_0x41bebd,_0x3311a0[0x0],_0x3b2b8e);}else{_0x7e376b=_0x3b2b8e;}}}}var _0x14bb6a={'name':_0x44e1ed,'description':_0x411bdb,'path':path[_0x10aa('0x5a')](_0x41bebd,_0x3311a0[0x0]),'type':_0x434560,'sidebar':_0x195fe1,'icon':_0x55490d,'adminUrl':_0x8226f6,'agentUrl':_0x7e376b,'scriptName':_0x163437,'scriptPath':_0x23c82d,'version':_0x53d159};removeReferences(_0x3201dc,null);return db[_0x10aa('0x2f')][_0x10aa('0x91')](_0x14bb6a)[_0x10aa('0x2a')](function(_0x1cca23){var _0x41ad58={'role':_0x4ae69b[_0x10aa('0x92')][_0x10aa('0x93')],'userProfileId':_0x4ae69b[_0x10aa('0x92')][_0x10aa('0x94')]};if(!_0x41ad58)throw new Error(_0x10aa('0x95'));if(_0x41ad58['role']===_0x10aa('0x96')){var _0x430a57=_0x1cca23[_0x10aa('0x2c')]({'plain':!![]});return db['UserProfileSection'][_0x10aa('0x4b')]({'where':{'name':_0x10aa('0x97'),'userProfileId':_0x41ad58[_0x10aa('0x94')]},'raw':!![]})[_0x10aa('0x2a')](function(_0x2f1ddd){if(_0x2f1ddd&&_0x2f1ddd[_0x10aa('0x98')]===0x0){return db[_0x10aa('0x99')][_0x10aa('0x91')]({'name':_0x430a57[_0x10aa('0x2d')],'resourceId':_0x430a57['id'],'type':_0x2f1ddd[_0x10aa('0x2d')],'sectionId':_0x2f1ddd['id']},{})['then'](function(){return _0x1cca23;});}else{return _0x1cca23;}})[_0x10aa('0x9a')](function(_0x3d81b5){logger['error'](_0x10aa('0x9b'),_0x3d81b5);throw _0x3d81b5;});}return _0x1cca23;})[_0x10aa('0x2a')](respondWithResult(_0x445dad,null))[_0x10aa('0x9a')](handleError(_0x445dad,null));}});}catch(_0x251360){_0x445dad[_0x10aa('0x1f')](0x1f4)['send'](_0x251360);}};function removeReferences(_0x16858c,_0x1619e6){try{if(_0x16858c){fs['unlinkSync'](_0x16858c);logger['info'](_0x10aa('0x9c'));}if(_0x1619e6){rimraf(_0x1619e6,function(){});logger['info'](_0x10aa('0x9d'));}}catch(_0x4ad319){logger['error'](_0x4ad319);}}exports[_0x10aa('0x29')]=function(_0x38432c,_0xbf6200,_0x21fef2){return db[_0x10aa('0x2f')][_0x10aa('0x4b')]({'where':{'id':_0x38432c[_0x10aa('0x47')]['id']}})[_0x10aa('0x2a')](handleEntityNotFound(_0xbf6200,null))[_0x10aa('0x2a')](saveUpdates(_0x38432c['body'],null))[_0x10aa('0x2a')](respondWithResult(_0xbf6200,null))[_0x10aa('0x9a')](handleError(_0xbf6200,null));};exports['delete']=function(_0x200ed4,_0x7f2edf,_0xbf65e4){return db['Plugin'][_0x10aa('0x4b')]({'where':{'id':_0x200ed4[_0x10aa('0x47')]['id']}})['then'](function(_0x1e486d){if(_0x1e486d){return _0x1e486d['destroy']();}})[_0x10aa('0x2a')](function(_0x2fe159){rimraf(path['join'](config['root'],'server/files/plugins',path[_0x10aa('0x9e')](_0x2fe159[_0x10aa('0x4f')])),function(){});return _0x2fe159;})[_0x10aa('0x2a')](handleEntityNotFound(_0x7f2edf,null))[_0x10aa('0x2a')](respondWithStatusCode(_0x7f2edf,null))[_0x10aa('0x9a')](handleError(_0x7f2edf,null));};exports[_0x10aa('0x9f')]=function(_0x12dcd8,_0x59a838,_0x11bc53){return BPromise[_0x10aa('0xa0')]()['then'](function(){if(!_0x12dcd8[_0x10aa('0x34')]['path']){throw new Error(_0x10aa('0xa1'));}if(!_0x12dcd8['query'][_0x10aa('0xa2')]){throw new Error(_0x10aa('0xa3'));}var _0x4639a4=_0x12dcd8[_0x10aa('0x34')]['hostname']?_0x12dcd8[_0x10aa('0x34')][_0x10aa('0xa4')]+':'+_0x12dcd8['query'][_0x10aa('0xa2')]:_0x10aa('0xa5')+_0x12dcd8[_0x10aa('0x34')]['port'];var _0x135212=_0x12dcd8[_0x10aa('0x34')]['json']?_0x12dcd8[_0x10aa('0x34')][_0x10aa('0x21')]:!![];var _0x26fbca=_0x12dcd8['query'][_0x10aa('0xa6')]?_0x12dcd8['query'][_0x10aa('0xa6')]:null;var _0x4575f5={'method':_0x12dcd8[_0x10aa('0xa7')],'uri':util[_0x10aa('0x4d')](_0x10aa('0xa8'),_0x4639a4,_0x12dcd8[_0x10aa('0x34')][_0x10aa('0x4f')]),'json':_0x135212,'resolveWithFullResponse':!![],'encoding':_0x26fbca,'qs':_0x12dcd8[_0x10aa('0x34')]};if(_0x12dcd8[_0x10aa('0xa9')]){_0x4575f5[_0x10aa('0xa9')]=_0x12dcd8[_0x10aa('0xa9')];if(_0x4575f5[_0x10aa('0xa9')]['content-length']){delete _0x4575f5[_0x10aa('0xa9')][_0x10aa('0xaa')];}}if(_0x4575f5[_0x10aa('0xa9')]['content-type']){delete _0x4575f5[_0x10aa('0xa9')][_0x10aa('0xab')];}return rp(_0x4575f5);})[_0x10aa('0x2a')](function(_0x267380){if(_0x267380){_0x59a838[_0x10aa('0x25')](_0x267380[_0x10aa('0xa9')]);logger[_0x10aa('0x65')](_0x267380[_0x10aa('0x92')]);if(_['endsWith'](_0x12dcd8[_0x10aa('0x34')][_0x10aa('0x4f')],_0x10aa('0x4a'))&&_0x267380[_0x10aa('0xac')]==0x1f4){return _0x59a838[_0x10aa('0x1e')](_0x267380['statusCode']);}else{return _0x59a838[_0x10aa('0x1f')](_0x267380[_0x10aa('0xac')])['send'](_0x267380[_0x10aa('0x92')]);}}else{return _0x59a838[_0x10aa('0x1e')](0xc8);}})[_0x10aa('0x9a')](handleError(_0x59a838,null));};exports[_0x10aa('0xad')]=function(_0x3ba96e,_0x695dd6,_0xf9a82c){return BPromise[_0x10aa('0xa0')]()['then'](function(){if(!_0x3ba96e[_0x10aa('0x34')][_0x10aa('0x4f')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x3ba96e['query'][_0x10aa('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x13481d=_0x3ba96e[_0x10aa('0x34')][_0x10aa('0xa4')]?_0x3ba96e[_0x10aa('0x34')][_0x10aa('0xa4')]+':'+_0x3ba96e[_0x10aa('0x34')][_0x10aa('0xa2')]:_0x10aa('0xa5')+_0x3ba96e[_0x10aa('0x34')][_0x10aa('0xa2')];var _0x4f6f73=_0x3ba96e['query'][_0x10aa('0x21')]?_0x3ba96e[_0x10aa('0x34')][_0x10aa('0x21')]:!![];var _0xd0e1d1=_0x3ba96e[_0x10aa('0x34')]['encoding']?_0x3ba96e['query']['encoding']:null;var _0x322b24={'method':_0x3ba96e[_0x10aa('0xa7')],'uri':util['format'](_0x10aa('0xa8'),_0x13481d,_0x3ba96e[_0x10aa('0x34')][_0x10aa('0x4f')]),'json':_0x4f6f73,'resolveWithFullResponse':!![],'encoding':_0xd0e1d1,'body':_0x3ba96e['body']};if(_0x3ba96e[_0x10aa('0xa9')]){_0x322b24[_0x10aa('0xa9')]=_0x3ba96e['headers'];if(_0x322b24['headers']['content-length']){delete _0x322b24[_0x10aa('0xa9')][_0x10aa('0xaa')];}}if(_0x322b24[_0x10aa('0xa9')]['content-type']){delete _0x322b24[_0x10aa('0xa9')][_0x10aa('0xab')];}return rp(_0x322b24);})[_0x10aa('0x2a')](function(_0x5295e1){if(_0x5295e1){_0x695dd6[_0x10aa('0x25')](_0x5295e1[_0x10aa('0xa9')]);logger[_0x10aa('0x65')](_0x5295e1[_0x10aa('0x92')]);return _0x695dd6[_0x10aa('0x1f')](_0x5295e1['statusCode'])[_0x10aa('0xae')](_0x5295e1[_0x10aa('0x92')]);}else{return _0x695dd6['sendStatus'](0xc8);}})[_0x10aa('0x9a')](handleError(_0x695dd6,null));};
\ No newline at end of file
+var _0xb3d1=['zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','extract-zip','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','destroy','get','Plugins','stack','name','send','index','map','fieldName','type','key','keys','query','intersection','fields','attributes','model','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','VIRTUAL','options','Plugin','includeAll','include','findAll','rows','catch','show','rawAttributes','length','download','find','params','join','root','server/files/plugins','format','%s.zip','createWriteStream','zip','warning','code','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','error','pipe','glob','**/*','dirname','node_modules/**/*','finalize','close','existsSync','Sequelize','Plugin\x20not\x20found','basename','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','Temporary\x20file\x20removed','upload','filename','file','info','Plugin\x20upload\x20destination:\x20%s','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','readdirSync','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','version','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','script','scriptName','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','Warning:\x20admin\x20view\x20not\x20specified','agent','plugins','Warning:\x20agent\x20view\x20not\x20specified','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','eml-format','rimraf'];(function(_0x1c2450,_0x6de8b4){var _0x5b5d4d=function(_0xe003b){while(--_0xe003b){_0x1c2450['push'](_0x1c2450['shift']());}};_0x5b5d4d(++_0x6de8b4);}(_0xb3d1,0x160));var _0x1b3d=function(_0x10a212,_0x579d85){_0x10a212=_0x10a212-0x0;var _0x23c82b=_0xb3d1[_0x10a212];return _0x23c82b;};'use strict';var emlformat=require(_0x1b3d('0x0'));var rimraf=require(_0x1b3d('0x1'));var zipdir=require(_0x1b3d('0x2'));var jsonpatch=require(_0x1b3d('0x3'));var rp=require(_0x1b3d('0x4'));var moment=require('moment');var BPromise=require(_0x1b3d('0x5'));var Mustache=require(_0x1b3d('0x6'));var util=require(_0x1b3d('0x7'));var path=require(_0x1b3d('0x8'));var sox=require(_0x1b3d('0x9'));var csv=require(_0x1b3d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1b3d('0xb'));var _=require('lodash');var squel=require(_0x1b3d('0xc'));var crypto=require(_0x1b3d('0xd'));var jsforce=require(_0x1b3d('0xe'));var deskjs=require(_0x1b3d('0xf'));var toCsv=require(_0x1b3d('0xa'));var querystring=require(_0x1b3d('0x10'));var Papa=require('papaparse');var extract=require(_0x1b3d('0x11'));var rimraf=require('rimraf');var archiver=require('archiver');var Redis=require(_0x1b3d('0x12'));var authService=require(_0x1b3d('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x1b3d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b3d('0x15'))('api');var utils=require(_0x1b3d('0x16'));var config=require(_0x1b3d('0x17'));var licenseUtil=require(_0x1b3d('0x18'));var db=require(_0x1b3d('0x19'))['db'];config[_0x1b3d('0x1a')]=_[_0x1b3d('0x1b')](config[_0x1b3d('0x1a')],{'host':_0x1b3d('0x1c'),'port':0x18eb});var socket=require(_0x1b3d('0x1d'))(new Redis(config[_0x1b3d('0x1a')]));require(_0x1b3d('0x1e'))['register'](socket);function respondWithStatusCode(_0x319604,_0x2248e0){_0x2248e0=_0x2248e0||0xcc;return function(_0x526ec3){if(_0x526ec3){return _0x319604[_0x1b3d('0x1f')](_0x2248e0);}return _0x319604[_0x1b3d('0x20')](_0x2248e0)[_0x1b3d('0x21')]();};}function respondWithResult(_0x1f211d,_0x2a5d81){_0x2a5d81=_0x2a5d81||0xc8;return function(_0x43f40a){if(_0x43f40a){return _0x1f211d[_0x1b3d('0x20')](_0x2a5d81)['json'](_0x43f40a);}};}function respondWithFilteredResult(_0x25e7e5,_0x4cd3b7){return function(_0x59155b){if(_0x59155b){var _0x1841fc=typeof _0x4cd3b7['offset']===_0x1b3d('0x22')&&typeof _0x4cd3b7[_0x1b3d('0x23')]===_0x1b3d('0x22');var _0x2076db=_0x59155b[_0x1b3d('0x24')];var _0x175ac9=_0x1841fc?0x0:_0x4cd3b7[_0x1b3d('0x25')];var _0xf9080=_0x1841fc?_0x59155b[_0x1b3d('0x24')]:_0x4cd3b7[_0x1b3d('0x25')]+_0x4cd3b7[_0x1b3d('0x23')];var _0x12b164;if(_0xf9080>=_0x2076db){_0xf9080=_0x2076db;_0x12b164=0xc8;}else{_0x12b164=0xce;}_0x25e7e5[_0x1b3d('0x20')](_0x12b164);return _0x25e7e5[_0x1b3d('0x26')](_0x1b3d('0x27'),_0x175ac9+'-'+_0xf9080+'/'+_0x2076db)[_0x1b3d('0x28')](_0x59155b);}return null;};}function patchUpdates(_0x5710d1){return function(_0x32ecb1){try{jsonpatch[_0x1b3d('0x29')](_0x32ecb1,_0x5710d1,!![]);}catch(_0x1d16aa){return BPromise[_0x1b3d('0x2a')](_0x1d16aa);}return _0x32ecb1['save']();};}function saveUpdates(_0x742c04,_0x46519d){return function(_0x1a7146){if(_0x1a7146){return _0x1a7146[_0x1b3d('0x2b')](_0x742c04)[_0x1b3d('0x2c')](function(_0x308b0c){return _0x308b0c;});}return null;};}function removeEntity(_0x2dfa4f,_0x2899ad){return function(_0x5155a7){if(_0x5155a7){return _0x5155a7[_0x1b3d('0x2d')]()[_0x1b3d('0x2c')](function(){var _0x994cb2=_0x5155a7[_0x1b3d('0x2e')]({'plain':!![]});var _0x1f8b1d=_0x1b3d('0x2f');return db['UserProfileResource']['destroy']({'where':{'type':_0x1f8b1d,'resourceId':_0x994cb2['id']}})['then'](function(){return _0x5155a7;});})[_0x1b3d('0x2c')](function(){_0x2dfa4f[_0x1b3d('0x20')](0xcc)[_0x1b3d('0x21')]();});}};}function handleEntityNotFound(_0x5795bb,_0x19532e){return function(_0x298e13){if(!_0x298e13){_0x5795bb['sendStatus'](0x194);}return _0x298e13;};}function handleError(_0x47fae2,_0x1d65af){_0x1d65af=_0x1d65af||0x1f4;return function(_0x21a956){logger['error'](_0x21a956[_0x1b3d('0x30')]);if(_0x21a956[_0x1b3d('0x31')]){delete _0x21a956[_0x1b3d('0x31')];}_0x47fae2['status'](_0x1d65af)[_0x1b3d('0x32')](_0x21a956);};}exports[_0x1b3d('0x33')]=function(_0x1ca7ac,_0x3076fc){var _0x2f12fc={},_0x23ed79={},_0x352324={'count':0x0,'rows':[]};var _0x42f11c=_[_0x1b3d('0x34')](db['Plugin']['rawAttributes'],function(_0x5e0f16){return{'name':_0x5e0f16[_0x1b3d('0x35')],'type':_0x5e0f16[_0x1b3d('0x36')][_0x1b3d('0x37')]};});_0x23ed79['model']=_[_0x1b3d('0x34')](_0x42f11c,_0x1b3d('0x31'));_0x23ed79['query']=_[_0x1b3d('0x38')](_0x1ca7ac[_0x1b3d('0x39')]);_0x23ed79['filters']=_[_0x1b3d('0x3a')](_0x23ed79['model'],_0x23ed79[_0x1b3d('0x39')]);_0x2f12fc['attributes']=_[_0x1b3d('0x3a')](_0x23ed79['model'],qs[_0x1b3d('0x3b')](_0x1ca7ac[_0x1b3d('0x39')][_0x1b3d('0x3b')]));_0x2f12fc[_0x1b3d('0x3c')]=_0x2f12fc[_0x1b3d('0x3c')]['length']?_0x2f12fc['attributes']:_0x23ed79[_0x1b3d('0x3d')];if(!_0x1ca7ac[_0x1b3d('0x39')][_0x1b3d('0x3e')](_0x1b3d('0x3f'))){_0x2f12fc[_0x1b3d('0x23')]=qs[_0x1b3d('0x23')](_0x1ca7ac['query']['limit']);_0x2f12fc[_0x1b3d('0x25')]=qs[_0x1b3d('0x25')](_0x1ca7ac[_0x1b3d('0x39')][_0x1b3d('0x25')]);}_0x2f12fc[_0x1b3d('0x40')]=qs['sort'](_0x1ca7ac[_0x1b3d('0x39')]['sort']);_0x2f12fc[_0x1b3d('0x41')]=qs[_0x1b3d('0x42')](_[_0x1b3d('0x43')](_0x1ca7ac[_0x1b3d('0x39')],_0x23ed79[_0x1b3d('0x42')]),_0x42f11c);if(_0x1ca7ac[_0x1b3d('0x39')][_0x1b3d('0x44')]){_0x2f12fc['where']=_[_0x1b3d('0x45')](_0x2f12fc[_0x1b3d('0x41')],{'$or':_['map'](_0x42f11c,function(_0x17f4f8){if(_0x17f4f8[_0x1b3d('0x36')]!==_0x1b3d('0x46')){var _0x28d27f={};_0x28d27f[_0x17f4f8[_0x1b3d('0x31')]]={'$like':'%'+_0x1ca7ac[_0x1b3d('0x39')]['filter']+'%'};return _0x28d27f;}})});}_0x2f12fc=_['merge']({},_0x2f12fc,_0x1ca7ac[_0x1b3d('0x47')]);var _0xfe5ed9={'where':_0x2f12fc[_0x1b3d('0x41')]};return db[_0x1b3d('0x48')][_0x1b3d('0x24')](_0xfe5ed9)[_0x1b3d('0x2c')](function(_0x131bc2){_0x352324[_0x1b3d('0x24')]=_0x131bc2;if(_0x1ca7ac['query'][_0x1b3d('0x49')]){_0x2f12fc[_0x1b3d('0x4a')]=[{'all':!![]}];}return db[_0x1b3d('0x48')][_0x1b3d('0x4b')](_0x2f12fc);})[_0x1b3d('0x2c')](function(_0x3ef8ba){_0x352324[_0x1b3d('0x4c')]=_0x3ef8ba;return _0x352324;})[_0x1b3d('0x2c')](respondWithFilteredResult(_0x3076fc,_0x2f12fc))[_0x1b3d('0x4d')](handleError(_0x3076fc,null));};exports[_0x1b3d('0x4e')]=function(_0x397580,_0x2e9ff0){var _0x44b204={'raw':!![],'where':{'id':_0x397580['params']['id']}},_0xe35275={};_0xe35275['model']=_[_0x1b3d('0x38')](db[_0x1b3d('0x48')][_0x1b3d('0x4f')]);_0xe35275[_0x1b3d('0x39')]=_[_0x1b3d('0x38')](_0x397580['query']);_0xe35275[_0x1b3d('0x42')]=_[_0x1b3d('0x3a')](_0xe35275[_0x1b3d('0x3d')],_0xe35275[_0x1b3d('0x39')]);_0x44b204['attributes']=_[_0x1b3d('0x3a')](_0xe35275['model'],qs[_0x1b3d('0x3b')](_0x397580[_0x1b3d('0x39')][_0x1b3d('0x3b')]));_0x44b204[_0x1b3d('0x3c')]=_0x44b204[_0x1b3d('0x3c')][_0x1b3d('0x50')]?_0x44b204['attributes']:_0xe35275['model'];if(_0x397580[_0x1b3d('0x39')][_0x1b3d('0x49')]){_0x44b204['include']=[{'all':!![]}];}_0x44b204=_[_0x1b3d('0x45')]({},_0x44b204,_0x397580[_0x1b3d('0x47')]);return db[_0x1b3d('0x48')]['find'](_0x44b204)[_0x1b3d('0x2c')](handleEntityNotFound(_0x2e9ff0,null))[_0x1b3d('0x2c')](respondWithResult(_0x2e9ff0,null))['catch'](handleError(_0x2e9ff0,null));};exports[_0x1b3d('0x51')]=function(_0xaddcd8,_0x550b95,_0x39ca62){return db['Plugin'][_0x1b3d('0x52')]({'where':{'id':_0xaddcd8[_0x1b3d('0x53')]['id']},'attributes':[_0x1b3d('0x31'),'path'],'raw':!![]})[_0x1b3d('0x2c')](handleEntityNotFound(_0x550b95,null))[_0x1b3d('0x2c')](function(_0x298851){if(_0x298851){var _0xda34e9=path[_0x1b3d('0x54')](config[_0x1b3d('0x55')],_0x1b3d('0x56'),util[_0x1b3d('0x57')](_0x1b3d('0x58'),path['basename'](_0x298851[_0x1b3d('0x8')])));var _0x417d58=fs[_0x1b3d('0x59')](_0xda34e9);var _0x52ca28=archiver(_0x1b3d('0x5a'),{'zlib':{'level':0x9}});_0x52ca28['on'](_0x1b3d('0x5b'),function(_0x5eb3a5){if(_0x5eb3a5[_0x1b3d('0x5c')]===_0x1b3d('0x5d')){logger['error'](_0x5eb3a5);}else{throw new db['Sequelize'][(_0x1b3d('0x5e'))](_0x1b3d('0x5f'));}});_0x52ca28['on'](_0x1b3d('0x60'),function(_0x3560f1){throw new db['Sequelize'][(_0x1b3d('0x5e'))](_0x1b3d('0x5f'));});_0x52ca28[_0x1b3d('0x61')](_0x417d58);_0x52ca28[_0x1b3d('0x62')](_0x1b3d('0x63'),{'cwd':path[_0x1b3d('0x54')](config['root'],'server/files/plugins',path[_0x1b3d('0x64')](_0x298851[_0x1b3d('0x8')])),'ignore':[path['join'](path['basename'](_0x298851[_0x1b3d('0x8')]),_0x1b3d('0x65')),path[_0x1b3d('0x54')](path['basename'](_0x298851[_0x1b3d('0x8')]),'attachments/**/*')],'nodir':!![]})[_0x1b3d('0x66')]();_0x417d58['on'](_0x1b3d('0x67'),function(){if(!fs[_0x1b3d('0x68')](_0xda34e9)){throw new db[(_0x1b3d('0x69'))]['Error'](_0x1b3d('0x6a'));}return _0x550b95[_0x1b3d('0x51')](_0xda34e9,util['format'](_0x1b3d('0x58'),path[_0x1b3d('0x6b')](_0x298851[_0x1b3d('0x8')])),function(_0x400ddd){if(_0x400ddd){throw new db['Sequelize']['Error'](_0x1b3d('0x6c'));}fs[_0x1b3d('0x6d')](_0xda34e9);logger['info'](_0x1b3d('0x6e'));logger['info'](_0x1b3d('0x6f'));});});}return null;})[_0x1b3d('0x4d')](handleError(_0x550b95,null));};exports[_0x1b3d('0x70')]=function(_0x176af0,_0x3b8580,_0x4c917a){var _0x1079dc=path[_0x1b3d('0x6b')](_0x176af0['file'][_0x1b3d('0x71')],path['extname'](_0x176af0[_0x1b3d('0x72')][_0x1b3d('0x71')]));var _0x46e71e=path['join'](config[_0x1b3d('0x55')],_0x1b3d('0x56'),_0x176af0[_0x1b3d('0x72')][_0x1b3d('0x71')]);var _0x22a90d=path[_0x1b3d('0x54')](config[_0x1b3d('0x55')],_0x1b3d('0x56'),_0x1079dc);logger['info']('Plugin\x20upload\x20filepath:\x20%s',_0x46e71e);logger[_0x1b3d('0x73')](_0x1b3d('0x74'),_0x22a90d);try{fs['chmodSync'](_0x46e71e,parseInt(_0x1b3d('0x75'),0x8));extract(_0x46e71e,{'dir':_0x22a90d},function(_0x28bde8){if(_0x28bde8){logger[_0x1b3d('0x60')](_0x28bde8);handleError(_0x28bde8,!![]);};var _0xf87fd7=fs['readdirSync'](_0x22a90d);if(_0xf87fd7[_0x1b3d('0x50')]>0x1){removeReferences(_0x46e71e,_0x22a90d);logger[_0x1b3d('0x60')](_0x1b3d('0x76'));return _0x4c917a(new Error(_0x1b3d('0x76')));}var _0x4c8e4f=fs[_0x1b3d('0x77')](path[_0x1b3d('0x54')](_0x22a90d,_0xf87fd7[0x0]));if(_0x4c8e4f[_0x1b3d('0x78')]()){removeReferences(_0x46e71e,_0x22a90d);logger[_0x1b3d('0x60')](_0x1b3d('0x76'));return _0x4c917a(new Error(_0x1b3d('0x76')));}if(_0x4c8e4f[_0x1b3d('0x79')]()){var _0x3b558a=fs[_0x1b3d('0x7a')](path[_0x1b3d('0x54')](_0x22a90d,_0xf87fd7[0x0]));if(_0x3b558a['length']===0x0){removeReferences(_0x46e71e,_0x22a90d);logger[_0x1b3d('0x60')]('Invalid\x20plugin\x20structure');return _0x4c917a(new Error(_0x1b3d('0x76')));}var _0x580237=_0x3b558a[_0x1b3d('0x7b')](function(_0x361c6f){return _0x361c6f===_0x1b3d('0x7c');});if(!_0x580237){return _0x4c917a(new Error(_0x1b3d('0x7d')));}var _0x1802d7=fs[_0x1b3d('0x7e')](path[_0x1b3d('0x54')](_0x22a90d,_0xf87fd7[0x0],_0x1b3d('0x7c')));var _0x447355=JSON['parse'](_0x1802d7);if('undefined'==typeof _0x447355[_0x1b3d('0x31')]){return _0x4c917a(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x1b3d('0x22')==typeof _0x447355[_0x1b3d('0x36')]){return _0x4c917a(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0x1b3d('0x22')==typeof _0x447355[_0x1b3d('0x7f')]){return _0x4c917a(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x1b3d('0x22')==typeof _0x447355[_0x1b3d('0x80')]){return _0x4c917a(new Error(_0x1b3d('0x81')));}if(_0x447355[_0x1b3d('0x36')]===_0x1b3d('0x82')){if(_0x1b3d('0x22')==typeof _0x447355[_0x1b3d('0x80')][_0x1b3d('0x83')]){return _0x4c917a(new Error(_0x1b3d('0x84')));}if(_0x1b3d('0x22')==typeof _0x447355[_0x1b3d('0x80')][_0x1b3d('0x83')][_0x1b3d('0x85')]&&_0x1b3d('0x22')==typeof _0x447355[_0x1b3d('0x80')]['views']['agent']){return _0x4c917a(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x447355['type']===_0x1b3d('0x86')){if(_0x1b3d('0x22')==typeof _0x447355['parameters'][_0x1b3d('0x87')]){return _0x4c917a(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0x1b3d('0x22')==typeof _0x447355[_0x1b3d('0x80')][_0x1b3d('0x88')]){return _0x4c917a(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x4c917a(new Error(_0x1b3d('0x89')));}var _0x4f375e=_0x447355[_0x1b3d('0x31')];var _0x5a44b8=_0x447355[_0x1b3d('0x8a')];var _0x239e34=_0x447355['type'];var _0x4298c6=_0x447355[_0x1b3d('0x8b')]?_0x447355[_0x1b3d('0x8b')]:_0x1b3d('0x8c');var _0x2cf76e=_0x447355['icon']?_0x447355[_0x1b3d('0x8d')]:_0x1b3d('0x8e');var _0x400907='';var _0x1e5840='';var _0x321fee='';var _0x4f097c='';var _0x3fc542=_0x447355[_0x1b3d('0x7f')];if(_0x239e34===_0x1b3d('0x82')){if(_0x1b3d('0x22')!=typeof _0x447355[_0x1b3d('0x80')][_0x1b3d('0x83')]['admin']){var _0x13e20e=_0x447355['parameters'][_0x1b3d('0x83')][_0x1b3d('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x1b3d('0x8f')](_0x13e20e)){_0x400907=path[_0x1b3d('0x54')]('plugins',_0x1079dc,_0xf87fd7[0x0],_0x13e20e);}else{_0x400907=_0x13e20e;}}else{logger['info'](_0x1b3d('0x90'));}if(_0x1b3d('0x22')!=typeof _0x447355[_0x1b3d('0x80')]['views']['agent']){var _0x14adee=_0x447355[_0x1b3d('0x80')][_0x1b3d('0x83')][_0x1b3d('0x91')];if(!/^(f|ht)tps?:\/\//i[_0x1b3d('0x8f')](_0x14adee)){_0x1e5840=path['join'](_0x1b3d('0x92'),_0x1079dc,_0xf87fd7[0x0],_0x14adee);}else{_0x1e5840=_0x14adee;}}else{logger[_0x1b3d('0x73')](_0x1b3d('0x93'));}}else if(_0x239e34==='script'){_0x321fee=_0x447355['parameters'][_0x1b3d('0x87')];_0x4f097c=_0x447355[_0x1b3d('0x80')]['scriptPath'];if(_0x1b3d('0x22')!=typeof _0x447355[_0x1b3d('0x80')]['views']){if('undefined'!=typeof _0x447355['parameters'][_0x1b3d('0x83')][_0x1b3d('0x85')]){var _0x13e20e=_0x447355[_0x1b3d('0x80')][_0x1b3d('0x83')][_0x1b3d('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x1b3d('0x8f')](_0x13e20e)){_0x400907=path[_0x1b3d('0x54')](_0x1b3d('0x92'),_0x1079dc,_0xf87fd7[0x0],_0x13e20e);}else{_0x400907=_0x13e20e;}}if(_0x1b3d('0x22')!=typeof _0x447355['parameters'][_0x1b3d('0x83')][_0x1b3d('0x91')]){var _0x14adee=_0x447355['parameters']['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0x1b3d('0x8f')](_0x14adee)){_0x1e5840=path[_0x1b3d('0x54')](_0x1b3d('0x92'),_0x1079dc,_0xf87fd7[0x0],_0x14adee);}else{_0x1e5840=_0x14adee;}}}}var _0x20e668={'name':_0x4f375e,'description':_0x5a44b8,'path':path[_0x1b3d('0x54')](_0x1079dc,_0xf87fd7[0x0]),'type':_0x239e34,'sidebar':_0x4298c6,'icon':_0x2cf76e,'adminUrl':_0x400907,'agentUrl':_0x1e5840,'scriptName':_0x321fee,'scriptPath':_0x4f097c,'version':_0x3fc542};removeReferences(_0x46e71e,null);return db[_0x1b3d('0x48')][_0x1b3d('0x94')](_0x20e668)[_0x1b3d('0x2c')](function(_0x5db0dc){var _0x27398e={'role':_0x176af0[_0x1b3d('0x95')]['role'],'userProfileId':_0x176af0[_0x1b3d('0x95')][_0x1b3d('0x96')]};if(!_0x27398e)throw new Error(_0x1b3d('0x97'));if(_0x27398e[_0x1b3d('0x98')]===_0x1b3d('0x99')){var _0x31da6e=_0x5db0dc[_0x1b3d('0x2e')]({'plain':!![]});return db[_0x1b3d('0x9a')][_0x1b3d('0x52')]({'where':{'name':'Plugins','userProfileId':_0x27398e[_0x1b3d('0x96')]},'raw':!![]})[_0x1b3d('0x2c')](function(_0x279545){if(_0x279545&&_0x279545[_0x1b3d('0x9b')]===0x0){return db[_0x1b3d('0x9c')][_0x1b3d('0x94')]({'name':_0x31da6e['name'],'resourceId':_0x31da6e['id'],'type':_0x279545[_0x1b3d('0x31')],'sectionId':_0x279545['id']},{})[_0x1b3d('0x2c')](function(){return _0x5db0dc;});}else{return _0x5db0dc;}})[_0x1b3d('0x4d')](function(_0x4588fd){logger['error'](_0x1b3d('0x9d'),_0x4588fd);throw _0x4588fd;});}return _0x5db0dc;})[_0x1b3d('0x2c')](respondWithResult(_0x3b8580,null))[_0x1b3d('0x4d')](handleError(_0x3b8580,null));}});}catch(_0x33e6cf){_0x3b8580[_0x1b3d('0x20')](0x1f4)[_0x1b3d('0x32')](_0x33e6cf);}};function removeReferences(_0x110d41,_0x3b1573){try{if(_0x110d41){fs[_0x1b3d('0x6d')](_0x110d41);logger[_0x1b3d('0x73')](_0x1b3d('0x9e'));}if(_0x3b1573){rimraf(_0x3b1573,function(){});logger[_0x1b3d('0x73')](_0x1b3d('0x9f'));}}catch(_0x564556){logger[_0x1b3d('0x60')](_0x564556);}}exports[_0x1b3d('0x2b')]=function(_0x49f1b6,_0x1c12ec,_0x25974e){return db[_0x1b3d('0x48')][_0x1b3d('0x52')]({'where':{'id':_0x49f1b6[_0x1b3d('0x53')]['id']}})[_0x1b3d('0x2c')](handleEntityNotFound(_0x1c12ec,null))[_0x1b3d('0x2c')](saveUpdates(_0x49f1b6['body'],null))[_0x1b3d('0x2c')](respondWithResult(_0x1c12ec,null))[_0x1b3d('0x4d')](handleError(_0x1c12ec,null));};exports[_0x1b3d('0xa0')]=function(_0x4933e7,_0x12b0bc,_0x580682){return db['Plugin'][_0x1b3d('0x52')]({'where':{'id':_0x4933e7[_0x1b3d('0x53')]['id']}})['then'](function(_0x1e23f0){if(_0x1e23f0){return _0x1e23f0[_0x1b3d('0x2d')]();}})[_0x1b3d('0x2c')](function(_0x53f000){rimraf(path[_0x1b3d('0x54')](config['root'],_0x1b3d('0x56'),path[_0x1b3d('0x64')](_0x53f000[_0x1b3d('0x8')])),function(){});return _0x53f000;})[_0x1b3d('0x2c')](handleEntityNotFound(_0x12b0bc,null))[_0x1b3d('0x2c')](respondWithStatusCode(_0x12b0bc,null))['catch'](handleError(_0x12b0bc,null));};exports[_0x1b3d('0xa1')]=function(_0x2c7eb7,_0x31fcfc,_0x17bf37){return BPromise[_0x1b3d('0xa2')]()['then'](function(){if(!_0x2c7eb7[_0x1b3d('0x39')][_0x1b3d('0x8')]){throw new Error(_0x1b3d('0xa3'));}if(!_0x2c7eb7[_0x1b3d('0x39')]['port']){throw new Error(_0x1b3d('0xa4'));}var _0x2a2f68=_0x2c7eb7[_0x1b3d('0x39')][_0x1b3d('0xa5')]?_0x2c7eb7[_0x1b3d('0x39')][_0x1b3d('0xa5')]+':'+_0x2c7eb7[_0x1b3d('0x39')][_0x1b3d('0xa6')]:_0x1b3d('0xa7')+_0x2c7eb7['query'][_0x1b3d('0xa6')];var _0x569c8d=_0x2c7eb7[_0x1b3d('0x39')][_0x1b3d('0x28')]?_0x2c7eb7[_0x1b3d('0x39')][_0x1b3d('0x28')]:!![];var _0x24fe2a=_0x2c7eb7['query']['encoding']?_0x2c7eb7['query'][_0x1b3d('0xa8')]:null;var _0x5c5834={'method':_0x2c7eb7[_0x1b3d('0xa9')],'uri':util['format'](_0x1b3d('0xaa'),_0x2a2f68,_0x2c7eb7[_0x1b3d('0x39')][_0x1b3d('0x8')]),'json':_0x569c8d,'resolveWithFullResponse':!![],'encoding':_0x24fe2a,'qs':_0x2c7eb7[_0x1b3d('0x39')]};if(_0x2c7eb7[_0x1b3d('0xab')]){_0x5c5834[_0x1b3d('0xab')]=_0x2c7eb7[_0x1b3d('0xab')];if(_0x5c5834[_0x1b3d('0xab')]['content-length']){delete _0x5c5834[_0x1b3d('0xab')][_0x1b3d('0xac')];}}if(_0x5c5834['headers'][_0x1b3d('0xad')]){delete _0x5c5834[_0x1b3d('0xab')][_0x1b3d('0xad')];}return rp(_0x5c5834);})[_0x1b3d('0x2c')](function(_0x45aae8){if(_0x45aae8){_0x31fcfc[_0x1b3d('0x26')](_0x45aae8[_0x1b3d('0xab')]);logger[_0x1b3d('0x73')](_0x45aae8['body']);if(_[_0x1b3d('0xae')](_0x2c7eb7['query']['path'],_0x1b3d('0x51'))&&_0x45aae8[_0x1b3d('0xaf')]==0x1f4){return _0x31fcfc[_0x1b3d('0x1f')](_0x45aae8[_0x1b3d('0xaf')]);}else{return _0x31fcfc['status'](_0x45aae8[_0x1b3d('0xaf')])[_0x1b3d('0x32')](_0x45aae8[_0x1b3d('0x95')]);}}else{return _0x31fcfc['sendStatus'](0xc8);}})[_0x1b3d('0x4d')](handleError(_0x31fcfc,null));};exports[_0x1b3d('0xb0')]=function(_0x3aa445,_0x162361,_0x4f77c8){return BPromise['resolve']()[_0x1b3d('0x2c')](function(){if(!_0x3aa445['query']['path']){throw new Error(_0x1b3d('0xa3'));}if(!_0x3aa445[_0x1b3d('0x39')][_0x1b3d('0xa6')]){throw new Error(_0x1b3d('0xa4'));}var _0x2a840f=_0x3aa445[_0x1b3d('0x39')][_0x1b3d('0xa5')]?_0x3aa445['query'][_0x1b3d('0xa5')]+':'+_0x3aa445[_0x1b3d('0x39')][_0x1b3d('0xa6')]:_0x1b3d('0xa7')+_0x3aa445['query'][_0x1b3d('0xa6')];var _0x1cb394=_0x3aa445[_0x1b3d('0x39')][_0x1b3d('0x28')]?_0x3aa445[_0x1b3d('0x39')][_0x1b3d('0x28')]:!![];var _0x28a473=_0x3aa445['query'][_0x1b3d('0xa8')]?_0x3aa445[_0x1b3d('0x39')]['encoding']:null;var _0x348c12={'method':_0x3aa445[_0x1b3d('0xa9')],'uri':util[_0x1b3d('0x57')](_0x1b3d('0xaa'),_0x2a840f,_0x3aa445['query']['path']),'json':_0x1cb394,'resolveWithFullResponse':!![],'encoding':_0x28a473,'body':_0x3aa445[_0x1b3d('0x95')]};if(_0x3aa445[_0x1b3d('0xab')]){_0x348c12[_0x1b3d('0xab')]=_0x3aa445[_0x1b3d('0xab')];if(_0x348c12[_0x1b3d('0xab')][_0x1b3d('0xac')]){delete _0x348c12[_0x1b3d('0xab')]['content-length'];}}if(_0x348c12[_0x1b3d('0xab')][_0x1b3d('0xad')]){delete _0x348c12[_0x1b3d('0xab')][_0x1b3d('0xad')];}return rp(_0x348c12);})[_0x1b3d('0x2c')](function(_0x16d5b3){if(_0x16d5b3){_0x162361[_0x1b3d('0x26')](_0x16d5b3[_0x1b3d('0xab')]);logger[_0x1b3d('0x73')](_0x16d5b3['body']);return _0x162361['status'](_0x16d5b3[_0x1b3d('0xaf')])[_0x1b3d('0x32')](_0x16d5b3['body']);}else{return _0x162361[_0x1b3d('0x1f')](0xc8);}})['catch'](handleError(_0x162361,null));};
\ No newline at end of file
index 35d7f73..ea67726 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb82=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Plugin','save'];(function(_0x17ea2b,_0x5b958f){var _0x5c0f3b=function(_0x222112){while(--_0x222112){_0x17ea2b['push'](_0x17ea2b['shift']());}};_0x5c0f3b(++_0x5b958f);}(_0xfb82,0x17f));var _0x2fb8=function(_0x260aaf,_0x2ad167){_0x260aaf=_0x260aaf-0x0;var _0x5014ee=_0xfb82[_0x260aaf];return _0x5014ee;};'use strict';var EventEmitter=require(_0x2fb8('0x0'));var Plugin=require(_0x2fb8('0x1'))['db'][_0x2fb8('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2fb8('0x3'),'afterUpdate':_0x2fb8('0x4'),'afterDestroy':'remove'};function emitEvent(_0x283c81){return function(_0x8d8257,_0x34535f,_0x2dffe6){PluginEvents[_0x2fb8('0x5')](_0x283c81+':'+_0x8d8257['id'],_0x8d8257);PluginEvents[_0x2fb8('0x5')](_0x283c81,_0x8d8257);_0x2dffe6(null);};}for(var e in events){if(events[_0x2fb8('0x6')](e)){var event=events[e];Plugin[_0x2fb8('0x7')](e,emitEvent(event));}}module[_0x2fb8('0x8')]=PluginEvents;
\ No newline at end of file
+var _0x96aa=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit'];(function(_0xd05a3e,_0x349ad9){var _0x5e870d=function(_0x124920){while(--_0x124920){_0xd05a3e['push'](_0xd05a3e['shift']());}};_0x5e870d(++_0x349ad9);}(_0x96aa,0x67));var _0xa96a=function(_0x498a0b,_0x59008b){_0x498a0b=_0x498a0b-0x0;var _0x2e432c=_0x96aa[_0x498a0b];return _0x2e432c;};'use strict';var EventEmitter=require(_0xa96a('0x0'));var Plugin=require(_0xa96a('0x1'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0xa96a('0x2')](0x0);var events={'afterCreate':_0xa96a('0x3'),'afterUpdate':_0xa96a('0x4'),'afterDestroy':_0xa96a('0x5')};function emitEvent(_0x10a117){return function(_0x4911c8,_0x1ce4a1,_0x1079a5){PluginEvents['emit'](_0x10a117+':'+_0x4911c8['id'],_0x4911c8);PluginEvents[_0xa96a('0x6')](_0x10a117,_0x4911c8);_0x1079a5(null);};}for(var e in events){if(events[_0xa96a('0x7')](e)){var event=events[e];Plugin[_0xa96a('0x8')](e,emitEvent(event));}}module[_0xa96a('0x9')]=PluginEvents;
\ No newline at end of file
index a1c3d5e..07e48b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf505=['plugins','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./plugin.attributes','exports','define'];(function(_0x364471,_0x302e8a){var _0x59236f=function(_0x524944){while(--_0x524944){_0x364471['push'](_0x364471['shift']());}};_0x59236f(++_0x302e8a);}(_0xf505,0x14b));var _0x5f50=function(_0x3b5e02,_0x535469){_0x3b5e02=_0x3b5e02-0x0;var _0x59464c=_0xf505[_0x3b5e02];return _0x59464c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5f50('0x0'))(_0x5f50('0x1'));var moment=require(_0x5f50('0x2'));var BPromise=require(_0x5f50('0x3'));var rp=require(_0x5f50('0x4'));var fs=require('fs');var path=require(_0x5f50('0x5'));var rimraf=require('rimraf');var config=require(_0x5f50('0x6'));var attributes=require(_0x5f50('0x7'));module[_0x5f50('0x8')]=function(_0x128f82,_0x4ab2c7){return _0x128f82[_0x5f50('0x9')]('Plugin',attributes,{'tableName':_0x5f50('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a47=['lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','plugins'];(function(_0x125d7f,_0x4bb659){var _0x476b38=function(_0x3935a7){while(--_0x3935a7){_0x125d7f['push'](_0x125d7f['shift']());}};_0x476b38(++_0x4bb659);}(_0x5a47,0x12c));var _0x75a4=function(_0x19155f,_0x1716c4){_0x19155f=_0x19155f-0x0;var _0x4fa447=_0x5a47[_0x19155f];return _0x4fa447;};'use strict';var _=require(_0x75a4('0x0'));var util=require('util');var logger=require(_0x75a4('0x1'))(_0x75a4('0x2'));var moment=require('moment');var BPromise=require(_0x75a4('0x3'));var rp=require(_0x75a4('0x4'));var fs=require('fs');var path=require(_0x75a4('0x5'));var rimraf=require(_0x75a4('0x6'));var config=require(_0x75a4('0x7'));var attributes=require(_0x75a4('0x8'));module[_0x75a4('0x9')]=function(_0x1616a2,_0x179fa2){return _0x1616a2[_0x75a4('0xa')]('Plugin',attributes,{'tableName':_0x75a4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a07140..b714f8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef6a=['localhost','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreatePlugin','Plugin','body','options','raw','debug','util','moment','bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults'];(function(_0x1a00f5,_0xdbe993){var _0x37593b=function(_0x1d5e5a){while(--_0x1d5e5a){_0x1a00f5['push'](_0x1a00f5['shift']());}};_0x37593b(++_0xdbe993);}(_0xef6a,0x1b8));var _0xaef6=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xef6a[_0x51020b];return _0x371e47;};'use strict';var _=require('lodash');var util=require(_0xaef6('0x0'));var moment=require(_0xaef6('0x1'));var BPromise=require(_0xaef6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xaef6('0x3'));var logger=require(_0xaef6('0x4'))('rpc');var config=require(_0xaef6('0x5'));var jayson=require(_0xaef6('0x6'));var client=jayson[_0xaef6('0x7')]['http']({'port':0x232a});config[_0xaef6('0x8')]=_[_0xaef6('0x9')](config[_0xaef6('0x8')],{'host':_0xaef6('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xaef6('0xb'))[_0xaef6('0xc')](socket);function respondWithRpcPromise(_0xd0e31,_0x55db5d,_0x49f822){return new BPromise(function(_0x4917db,_0x1b3f48){return client[_0xaef6('0xd')](_0xd0e31,_0x49f822)[_0xaef6('0xe')](function(_0x12ffb4){logger[_0xaef6('0xf')](_0xaef6('0x10'),_0x55db5d,_0xaef6('0x11'));logger['debug']('Plugin,\x20%s,\x20%s,\x20%s',_0x55db5d,'request\x20sent',JSON[_0xaef6('0x12')](_0x12ffb4));if(_0x12ffb4[_0xaef6('0x13')]){if(_0x12ffb4[_0xaef6('0x13')][_0xaef6('0x14')]===0x1f4){logger[_0xaef6('0x13')](_0xaef6('0x10'),_0x55db5d,_0x12ffb4[_0xaef6('0x13')][_0xaef6('0x15')]);return _0x1b3f48(_0x12ffb4['error'][_0xaef6('0x15')]);}logger[_0xaef6('0x13')](_0xaef6('0x10'),_0x55db5d,_0x12ffb4['error'][_0xaef6('0x15')]);return _0x4917db(_0x12ffb4[_0xaef6('0x13')][_0xaef6('0x15')]);}else{logger[_0xaef6('0xf')](_0xaef6('0x10'),_0x55db5d,_0xaef6('0x11'));_0x4917db(_0x12ffb4[_0xaef6('0x16')][_0xaef6('0x15')]);}})[_0xaef6('0x17')](function(_0x4d49e8){logger[_0xaef6('0x13')](_0xaef6('0x10'),_0x55db5d,_0x4d49e8);_0x1b3f48(_0x4d49e8);});});}exports[_0xaef6('0x18')]=function(_0x202f67){var _0x28b2e7=this;return new Promise(function(_0x44e151,_0x27f9ee){return db[_0xaef6('0x19')]['create'](_0x202f67[_0xaef6('0x1a')],{'raw':_0x202f67[_0xaef6('0x1b')]?_0x202f67[_0xaef6('0x1b')][_0xaef6('0x1c')]===undefined?!![]:![]:!![]})[_0xaef6('0xe')](function(_0x5c2e03){logger[_0xaef6('0xf')](_0xaef6('0x18'),_0x202f67);logger[_0xaef6('0x1d')](_0xaef6('0x18'),_0x202f67,JSON[_0xaef6('0x12')](_0x5c2e03));_0x44e151(_0x5c2e03);})[_0xaef6('0x17')](function(_0x9a8bab){logger['error']('CreatePlugin',_0x9a8bab[_0xaef6('0x15')],_0x202f67);_0x27f9ee(_0x28b2e7[_0xaef6('0x13')](0x1f4,_0x9a8bab[_0xaef6('0x15')]));});});};
\ No newline at end of file
+var _0x6bb0=['defaults','socket.io-emitter','./plugin.socket','register','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','CreatePlugin','Plugin','create','body','options','raw','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis'];(function(_0x4186fa,_0x26a01c){var _0x136990=function(_0x13324f){while(--_0x13324f){_0x4186fa['push'](_0x4186fa['shift']());}};_0x136990(++_0x26a01c);}(_0x6bb0,0x10c));var _0x06bb=function(_0x251ab0,_0x46e532){_0x251ab0=_0x251ab0-0x0;var _0x11848c=_0x6bb0[_0x251ab0];return _0x11848c;};'use strict';var _=require(_0x06bb('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x06bb('0x1'));var rs=require(_0x06bb('0x2'));var fs=require('fs');var Redis=require(_0x06bb('0x3'));var db=require(_0x06bb('0x4'))['db'];var utils=require(_0x06bb('0x5'));var logger=require(_0x06bb('0x6'))(_0x06bb('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x06bb('0x8')][_0x06bb('0x9')]({'port':0x232a});config[_0x06bb('0xa')]=_[_0x06bb('0xb')](config[_0x06bb('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x06bb('0xc'))(new Redis(config['redis']));require(_0x06bb('0xd'))[_0x06bb('0xe')](socket);function respondWithRpcPromise(_0x41d9e0,_0x5db15a,_0x354afd){return new BPromise(function(_0x3e1967,_0x34bba1){return client['request'](_0x41d9e0,_0x354afd)[_0x06bb('0xf')](function(_0x43643d){logger[_0x06bb('0x10')](_0x06bb('0x11'),_0x5db15a,_0x06bb('0x12'));logger[_0x06bb('0x13')](_0x06bb('0x14'),_0x5db15a,'request\x20sent',JSON[_0x06bb('0x15')](_0x43643d));if(_0x43643d['error']){if(_0x43643d[_0x06bb('0x16')]['code']===0x1f4){logger[_0x06bb('0x16')](_0x06bb('0x11'),_0x5db15a,_0x43643d[_0x06bb('0x16')][_0x06bb('0x17')]);return _0x34bba1(_0x43643d[_0x06bb('0x16')][_0x06bb('0x17')]);}logger[_0x06bb('0x16')]('Plugin,\x20%s,\x20%s',_0x5db15a,_0x43643d['error'][_0x06bb('0x17')]);return _0x3e1967(_0x43643d['error'][_0x06bb('0x17')]);}else{logger[_0x06bb('0x10')]('Plugin,\x20%s,\x20%s',_0x5db15a,_0x06bb('0x12'));_0x3e1967(_0x43643d['result'][_0x06bb('0x17')]);}})['catch'](function(_0x45e2a3){logger[_0x06bb('0x16')](_0x06bb('0x11'),_0x5db15a,_0x45e2a3);_0x34bba1(_0x45e2a3);});});}exports[_0x06bb('0x18')]=function(_0x581168){var _0x4c8fc0=this;return new Promise(function(_0x2414fa,_0xfc0078){return db[_0x06bb('0x19')][_0x06bb('0x1a')](_0x581168[_0x06bb('0x1b')],{'raw':_0x581168[_0x06bb('0x1c')]?_0x581168[_0x06bb('0x1c')][_0x06bb('0x1d')]===undefined?!![]:![]:!![]})[_0x06bb('0xf')](function(_0xc70dd8){logger[_0x06bb('0x10')](_0x06bb('0x18'),_0x581168);logger[_0x06bb('0x13')]('CreatePlugin',_0x581168,JSON[_0x06bb('0x15')](_0xc70dd8));_0x2414fa(_0xc70dd8);})[_0x06bb('0x1e')](function(_0x477e97){logger[_0x06bb('0x16')](_0x06bb('0x18'),_0x477e97['message'],_0x581168);_0xfc0078(_0x4c8fc0[_0x06bb('0x16')](0x1f4,_0x477e97[_0x06bb('0x17')]));});});};
\ No newline at end of file
index 8ecbd16..fdd16b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb733=['register','length','plugin:','./plugin.events','emit'];(function(_0x2442dc,_0x44eecd){var _0x45dd52=function(_0x52dc66){while(--_0x52dc66){_0x2442dc['push'](_0x2442dc['shift']());}};_0x45dd52(++_0x44eecd);}(_0xb733,0x1ed));var _0x3b73=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xb733[_0x2dafbe];return _0x58a45a;};'use strict';var PluginEvents=require(_0x3b73('0x0'));var events=['save','remove','update'];function createListener(_0x1c228d,_0x3c9637){return function(_0x3870b5){_0x3c9637[_0x3b73('0x1')](_0x1c228d,_0x3870b5);};}function removeListener(_0x5a9b7b,_0x33f339){return function(){PluginEvents['removeListener'](_0x5a9b7b,_0x33f339);};}exports[_0x3b73('0x2')]=function(_0x1c7eeb){for(var _0x43c382=0x0,_0x3d4c8e=events[_0x3b73('0x3')];_0x43c382<_0x3d4c8e;_0x43c382++){var _0x46e0ae=events[_0x43c382];var _0x4a5409=createListener(_0x3b73('0x4')+_0x46e0ae,_0x1c7eeb);PluginEvents['on'](_0x46e0ae,_0x4a5409);}};
\ No newline at end of file
+var _0xddd5=['emit','removeListener','register','plugin:','./plugin.events','save','remove','update'];(function(_0x24b446,_0x41cde1){var _0x2a1295=function(_0x658ea8){while(--_0x658ea8){_0x24b446['push'](_0x24b446['shift']());}};_0x2a1295(++_0x41cde1);}(_0xddd5,0x1bc));var _0x5ddd=function(_0x560a68,_0x40a583){_0x560a68=_0x560a68-0x0;var _0x1cdb95=_0xddd5[_0x560a68];return _0x1cdb95;};'use strict';var PluginEvents=require(_0x5ddd('0x0'));var events=[_0x5ddd('0x1'),_0x5ddd('0x2'),_0x5ddd('0x3')];function createListener(_0x104f72,_0x40c47f){return function(_0x36280c){_0x40c47f[_0x5ddd('0x4')](_0x104f72,_0x36280c);};}function removeListener(_0x561f47,_0x35b7cc){return function(){PluginEvents[_0x5ddd('0x5')](_0x561f47,_0x35b7cc);};}exports[_0x5ddd('0x6')]=function(_0x5e773f){for(var _0x20be82=0x0,_0x157761=events['length'];_0x20be82<_0x157761;_0x20be82++){var _0x5acdfd=events[_0x20be82];var _0xff54ee=createListener(_0x5ddd('0x7')+_0x5acdfd,_0x5e773f);PluginEvents['on'](_0x5acdfd,_0xff54ee);}};
\ No newline at end of file
index 3d4ffb1..2f46792 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(_0xae6f07,_0x109831){var _0x5d4bd4=function(_0x1f9d53){while(--_0x1f9d53){_0xae6f07['push'](_0xae6f07['shift']());}};_0x5d4bd4(++_0x109831);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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(_0xec7a27,_0x47c037){var _0x85982a=function(_0x7cc5){while(--_0x7cc5){_0xec7a27['push'](_0xec7a27['shift']());}};_0x85982a(++_0x47c037);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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 9efa6d9..f01ac65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['info','index','list','then','reject','express','motion2','length','show','describe','params','catch','body','script','join','dirname','chdir','start','update','restart','hasOwnProperty','Unknown\x20status','destroy','dump','Unknown\x20id','lodash','../../config/pm2','child_process','exec','bluebird','json','error','stack','name','status','send','npm\x20install'];(function(_0x3686f4,_0xd4a373){var _0x168f2b=function(_0x352038){while(--_0x352038){_0x3686f4['push'](_0x3686f4['shift']());}};_0x168f2b(++_0xd4a373);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var pm2=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var path=require('path');var exec=require(_0x0d8b('0x2'))[_0x0d8b('0x3')];var BPromise=require(_0x0d8b('0x4'));function handleEntityNotFound(_0x364286,_0x8196ed){return function(_0x577834){if(!_0x577834){_0x364286['sendStatus'](0x194);;}return _0x577834;};}function respondWithResult(_0x3f8b6f,_0x227c63){_0x227c63=_0x227c63||0xc8;return function(_0x39f43a){if(_0x39f43a){return _0x3f8b6f['status'](_0x227c63)[_0x0d8b('0x5')](_0x39f43a);}return null;};}function handleError(_0x284169,_0x58e4e2){_0x58e4e2=_0x58e4e2||0x1f4;return function(_0x129310){logger[_0x0d8b('0x6')](_0x129310[_0x0d8b('0x7')]);if(_0x129310[_0x0d8b('0x8')]){delete _0x129310[_0x0d8b('0x8')];}_0x284169[_0x0d8b('0x9')](_0x58e4e2)[_0x0d8b('0xa')](_0x129310);};}function execChildProcess(){return new BPromise(function(_0x28f87c,_0x48fa16){exec(_0x0d8b('0xb'),function(_0x4e0269,_0x4225c4,_0xc574a3){logger[_0x0d8b('0xc')](_0x4225c4);logger[_0x0d8b('0xc')](_0xc574a3);if(_0x4e0269){logger[_0x0d8b('0x6')](_0x4e0269);return _0x48fa16(_0x4e0269);}return _0x28f87c(_0x4225c4);});});}exports[_0x0d8b('0xd')]=function(_0x15dd0f,_0x31a8cc){return pm2[_0x0d8b('0xe')]()[_0x0d8b('0xf')](function(_0x5ad086){if(_0x5ad086){var _0xe65334=_[_0x0d8b('0x10')](_0x5ad086,function(_0x2d4e1c){return _0x2d4e1c['name']===_0x0d8b('0x11')||_0x2d4e1c[_0x0d8b('0x8')]===_0x0d8b('0x12');});return{'rows':_0xe65334,'count':_0xe65334[_0x0d8b('0x13')]};}return null;})[_0x0d8b('0xf')](respondWithResult(_0x31a8cc,null))['catch'](handleError(_0x31a8cc,null));};exports[_0x0d8b('0x14')]=function(_0x4586c2,_0x2fd0fc){return pm2[_0x0d8b('0x15')](_0x4586c2[_0x0d8b('0x16')]['id'])[_0x0d8b('0xf')](respondWithResult(_0x2fd0fc,null))[_0x0d8b('0xf')](handleEntityNotFound(_0x2fd0fc,null))[_0x0d8b('0x17')](handleError(_0x2fd0fc,null));};exports['create']=function(_0x27512e,_0x23d58f){if(_0x27512e[_0x0d8b('0x18')][_0x0d8b('0x8')]&&_0x27512e[_0x0d8b('0x18')][_0x0d8b('0x19')]){var _0x393beb=path[_0x0d8b('0x1a')](__dirname,'../../files/plugins',_0x27512e['body'][_0x0d8b('0x19')]);var _0x54a9a7=process['cwd']();process['chdir'](path[_0x0d8b('0x1b')](_0x393beb));return execChildProcess()[_0x0d8b('0xf')](function(_0x214778){process[_0x0d8b('0x1c')](_0x54a9a7);return pm2[_0x0d8b('0x1d')]({'name':_0x27512e[_0x0d8b('0x18')][_0x0d8b('0x8')],'script':_0x393beb});})[_0x0d8b('0xf')](function(_0x27b695){pm2['dump']();return _0x27b695[0x0];})[_0x0d8b('0xf')](respondWithResult(_0x23d58f,0xc9))[_0x0d8b('0x17')](handleError(_0x23d58f,null));}else{return _0x23d58f['status'](0x1f4)[_0x0d8b('0xa')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x0d8b('0x1e')]=function(_0x234bdd,_0xa2af02){if(_0x234bdd['body']['id']){delete _0x234bdd['body']['id'];}var _0x28f639={'online':_0x0d8b('0x1f'),'stopped':'stop'};if(_0x28f639[_0x0d8b('0x20')](_0x234bdd['body'][_0x0d8b('0x9')])){return pm2[_0x28f639[_0x234bdd['body'][_0x0d8b('0x9')]]](_0x234bdd['params']['id'])[_0x0d8b('0xf')](respondWithResult(_0xa2af02,0xc8))['catch'](handleError(_0xa2af02,null));}else{return _0xa2af02[_0x0d8b('0x9')](0x1f4)['send']({'message':_0x0d8b('0x21')});}};exports[_0x0d8b('0x22')]=function(_0x2c058d,_0x56120a){if(_0x2c058d['body']['id']){delete _0x2c058d['body']['id'];}if(_0x2c058d[_0x0d8b('0x16')]['id']){return pm2['delete'](_0x2c058d[_0x0d8b('0x16')]['id'])['then'](function(_0x5d05fc){pm2[_0x0d8b('0x23')]();return _0x5d05fc[0x0];})[_0x0d8b('0xf')](respondWithResult(_0x56120a,null))[_0x0d8b('0x17')](handleError(_0x56120a,null));}else{return _0x56120a[_0x0d8b('0x9')](0x1f4)[_0x0d8b('0xa')]({'message':_0x0d8b('0x24')});}};
\ No newline at end of file
+var _0x4fdb=['lodash','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','status','json','error','stack','name','send','npm\x20install','info','index','then','reject','express','motion2','length','catch','show','describe','params','body','script','join','../../files/plugins','cwd','chdir','dump','restart','stop','hasOwnProperty','Unknown\x20status','destroy','Unknown\x20id'];(function(_0x43f8e9,_0x50c6c2){var _0x44cc6a=function(_0x510cbc){while(--_0x510cbc){_0x43f8e9['push'](_0x43f8e9['shift']());}};_0x44cc6a(++_0x50c6c2);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x33040f,_0x3cb23c){_0x33040f=_0x33040f-0x0;var _0x26bc21=_0x4fdb[_0x33040f];return _0x26bc21;};'use strict';var _=require(_0xb4fd('0x0'));var pm2=require(_0xb4fd('0x1'));var logger=require(_0xb4fd('0x2'))(_0xb4fd('0x3'));var path=require(_0xb4fd('0x4'));var exec=require(_0xb4fd('0x5'))[_0xb4fd('0x6')];var BPromise=require(_0xb4fd('0x7'));function handleEntityNotFound(_0x1c0b08,_0x5b73bb){return function(_0x308de6){if(!_0x308de6){_0x1c0b08['sendStatus'](0x194);;}return _0x308de6;};}function respondWithResult(_0x14052b,_0x5d8b39){_0x5d8b39=_0x5d8b39||0xc8;return function(_0x53273f){if(_0x53273f){return _0x14052b[_0xb4fd('0x8')](_0x5d8b39)[_0xb4fd('0x9')](_0x53273f);}return null;};}function handleError(_0x1151b5,_0x52dca2){_0x52dca2=_0x52dca2||0x1f4;return function(_0x526d3b){logger[_0xb4fd('0xa')](_0x526d3b[_0xb4fd('0xb')]);if(_0x526d3b[_0xb4fd('0xc')]){delete _0x526d3b['name'];}_0x1151b5[_0xb4fd('0x8')](_0x52dca2)[_0xb4fd('0xd')](_0x526d3b);};}function execChildProcess(){return new BPromise(function(_0x2148db,_0x23b08f){exec(_0xb4fd('0xe'),function(_0x502379,_0xd05458,_0x1f3e30){logger[_0xb4fd('0xf')](_0xd05458);logger[_0xb4fd('0xf')](_0x1f3e30);if(_0x502379){logger['error'](_0x502379);return _0x23b08f(_0x502379);}return _0x2148db(_0xd05458);});});}exports[_0xb4fd('0x10')]=function(_0x65f08a,_0x345d35){return pm2['list']()[_0xb4fd('0x11')](function(_0x1234d7){if(_0x1234d7){var _0xc35d8d=_[_0xb4fd('0x12')](_0x1234d7,function(_0x36e88f){return _0x36e88f[_0xb4fd('0xc')]===_0xb4fd('0x13')||_0x36e88f['name']===_0xb4fd('0x14');});return{'rows':_0xc35d8d,'count':_0xc35d8d[_0xb4fd('0x15')]};}return null;})[_0xb4fd('0x11')](respondWithResult(_0x345d35,null))[_0xb4fd('0x16')](handleError(_0x345d35,null));};exports[_0xb4fd('0x17')]=function(_0x137e51,_0x1d0812){return pm2[_0xb4fd('0x18')](_0x137e51[_0xb4fd('0x19')]['id'])[_0xb4fd('0x11')](respondWithResult(_0x1d0812,null))[_0xb4fd('0x11')](handleEntityNotFound(_0x1d0812,null))['catch'](handleError(_0x1d0812,null));};exports['create']=function(_0x504e80,_0x5c14c0){if(_0x504e80[_0xb4fd('0x1a')][_0xb4fd('0xc')]&&_0x504e80[_0xb4fd('0x1a')][_0xb4fd('0x1b')]){var _0x458133=path[_0xb4fd('0x1c')](__dirname,_0xb4fd('0x1d'),_0x504e80['body']['script']);var _0x216307=process[_0xb4fd('0x1e')]();process[_0xb4fd('0x1f')](path['dirname'](_0x458133));return execChildProcess()[_0xb4fd('0x11')](function(_0x49d42c){process[_0xb4fd('0x1f')](_0x216307);return pm2['start']({'name':_0x504e80[_0xb4fd('0x1a')][_0xb4fd('0xc')],'script':_0x458133});})[_0xb4fd('0x11')](function(_0x261eda){pm2[_0xb4fd('0x20')]();return _0x261eda[0x0];})[_0xb4fd('0x11')](respondWithResult(_0x5c14c0,0xc9))[_0xb4fd('0x16')](handleError(_0x5c14c0,null));}else{return _0x5c14c0[_0xb4fd('0x8')](0x1f4)['send']({'message':'Missing\x20name\x20and/or\x20path'});}};exports['update']=function(_0x453982,_0x4bad85){if(_0x453982[_0xb4fd('0x1a')]['id']){delete _0x453982['body']['id'];}var _0x5738c2={'online':_0xb4fd('0x21'),'stopped':_0xb4fd('0x22')};if(_0x5738c2[_0xb4fd('0x23')](_0x453982['body'][_0xb4fd('0x8')])){return pm2[_0x5738c2[_0x453982[_0xb4fd('0x1a')][_0xb4fd('0x8')]]](_0x453982[_0xb4fd('0x19')]['id'])['then'](respondWithResult(_0x4bad85,0xc8))[_0xb4fd('0x16')](handleError(_0x4bad85,null));}else{return _0x4bad85[_0xb4fd('0x8')](0x1f4)['send']({'message':_0xb4fd('0x24')});}};exports[_0xb4fd('0x25')]=function(_0xbe7d2c,_0x597874){if(_0xbe7d2c[_0xb4fd('0x1a')]['id']){delete _0xbe7d2c[_0xb4fd('0x1a')]['id'];}if(_0xbe7d2c[_0xb4fd('0x19')]['id']){return pm2['delete'](_0xbe7d2c['params']['id'])['then'](function(_0x5f36e4){pm2[_0xb4fd('0x20')]();return _0x5f36e4[0x0];})[_0xb4fd('0x11')](respondWithResult(_0x597874,null))[_0xb4fd('0x16')](handleError(_0x597874,null));}else{return _0x597874[_0xb4fd('0x8')](0x1f4)[_0xb4fd('0xd')]({'message':_0xb4fd('0x26')});}};
\ No newline at end of file
index fc2a19a..39f3654 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5662=['get','/queues','exports','express','./realtime.controller','/agents','isAuthenticated','getAgents'];(function(_0x4db382,_0x148b4a){var _0x589490=function(_0x48ae81){while(--_0x48ae81){_0x4db382['push'](_0x4db382['shift']());}};_0x589490(++_0x148b4a);}(_0x5662,0x10b));var _0x2566=function(_0x2bedb0,_0x2d52ce){_0x2bedb0=_0x2bedb0-0x0;var _0x45b4e7=_0x5662[_0x2bedb0];return _0x45b4e7;};'use strict';var express=require(_0x2566('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x2566('0x1'));router['get'](_0x2566('0x2'),auth[_0x2566('0x3')](),controller[_0x2566('0x4')]);router[_0x2566('0x5')](_0x2566('0x6'),auth['isAuthenticated'](),controller['getQueues']);module[_0x2566('0x7')]=router;
\ No newline at end of file
+var _0xea6f=['../../components/auth/service','./realtime.controller','get','/agents','isAuthenticated','getAgents','/queues','getQueues','exports','express'];(function(_0x4c6e4f,_0x99171f){var _0x391f82=function(_0x5840e6){while(--_0x5840e6){_0x4c6e4f['push'](_0x4c6e4f['shift']());}};_0x391f82(++_0x99171f);}(_0xea6f,0x135));var _0xfea6=function(_0x3ceb2d,_0x2cd2ac){_0x3ceb2d=_0x3ceb2d-0x0;var _0x49e709=_0xea6f[_0x3ceb2d];return _0x49e709;};'use strict';var express=require(_0xfea6('0x0'));var router=express['Router']();var auth=require(_0xfea6('0x1'));var controller=require(_0xfea6('0x2'));router[_0xfea6('0x3')](_0xfea6('0x4'),auth[_0xfea6('0x5')](),controller[_0xfea6('0x6')]);router[_0xfea6('0x3')](_0xfea6('0x7'),auth[_0xfea6('0x5')](),controller[_0xfea6('0x8')]);module[_0xfea6('0x9')]=router;
\ No newline at end of file
index 7707fe8..99a8853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86f4=['talking','Status','sortAgentsByStatus','getRealtimeAgentsQueryFields','getQueues','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','startCase','Queue','rawAttributes','key','name','outbound','dialMethod','getOptions','QueueCampaigns','filter','UserProfile','getRealtimeQueues','initializeQueues','catch','lodash','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','APIBadRequestError','../../errors/api','handleError','offset','undefined','limit','count','Content-Range','json','getAgents','getChannels','globalQueueFilter','query','globalStatusFilter','pauseTypeFilter','pause','resolve','then','channel','isValidChannel','format','sort','includes','globalStatus','validateSortParameter','getUpdatedSortOptions','fields','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','User','fieldName','type','role','raw','sequelize','literal','FIELD(id,','forEach','*pause','push','Pause','where','user','userProfileId','agent','online','extraQueryConditions','assign','getResources','findAndCountAll','map','find','filterAgentAttributes','merge','getAgentStatus','voice','voiceStatus'];(function(_0x195bb2,_0x472d5e){var _0xfe8ea7=function(_0x8edbd3){while(--_0x8edbd3){_0x195bb2['push'](_0x195bb2['shift']());}};_0xfe8ea7(++_0x472d5e);}(_0x86f4,0xc5));var _0x486f=function(_0x329e94,_0x261619){_0x329e94=_0x329e94-0x0;var _0x43f92c=_0x86f4[_0x329e94];return _0x43f92c;};'use strict';var _=require(_0x486f('0x0'));var util=require('util');var rta=require(_0x486f('0x1'));var rtq=require(_0x486f('0x2'));var qs=require(_0x486f('0x3'));var utils=require('../../config/utils');var db=require('../../mysqldb')['db'];var APIBadRequestError=require('../../errors/api')[_0x486f('0x4')];var APIHandleError=require(_0x486f('0x5'))[_0x486f('0x6')];function respondWithFilteredResult(_0x21d194,_0x52c7cd){return function(_0x48ba2){if(_0x48ba2){var _0x2752f6=typeof _0x52c7cd[_0x486f('0x7')]===_0x486f('0x8')&&typeof _0x52c7cd[_0x486f('0x9')]===_0x486f('0x8');var _0x5f78d1=_0x48ba2[_0x486f('0xa')];var _0x57a4aa=_0x2752f6?0x0:_0x52c7cd[_0x486f('0x7')];var _0x414495=_0x2752f6?_0x48ba2[_0x486f('0xa')]:_0x52c7cd[_0x486f('0x7')]+_0x52c7cd['limit'];var _0x5a226a;if(_0x414495>=_0x5f78d1){_0x414495=_0x5f78d1;_0x5a226a=0xc8;}else{_0x5a226a=0xce;}_0x21d194['status'](_0x5a226a);return _0x21d194['set'](_0x486f('0xb'),_0x57a4aa+'-'+_0x414495+'/'+_0x5f78d1)[_0x486f('0xc')](_0x48ba2);}return null;};}exports[_0x486f('0xd')]=function(_0x461e8b,_0x41cad4){var _0xa5eb8c={'count':0x0,'rows':[]};var _0x17f681={};var _0x41d928;var _0x24e6fb=utils[_0x486f('0xe')]();var _0x1963c9;var _0x44e929;var _0x6c16af=_0x461e8b['query'][_0x486f('0xf')];var _0x40b64b=_0x461e8b[_0x486f('0x10')][_0x486f('0x11')];var _0x1e4a7a=_0x461e8b[_0x486f('0x10')][_0x486f('0x12')];var _0x431f9f=_0x40b64b===_0x486f('0x13')||_0x40b64b==='*pause'?!![]:![];var _0x4f3f07=[];var _0x8631be;var _0x182227;Promise[_0x486f('0x14')]()[_0x486f('0x15')](function(){if(_0x461e8b['query'][_0x486f('0x16')]){if(!utils[_0x486f('0x17')](_0x461e8b[_0x486f('0x10')][_0x486f('0x16')])){throw new APIBadRequestError(util[_0x486f('0x18')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x461e8b[_0x486f('0x10')][_0x486f('0x16')]));}_0x41d928=_0x461e8b[_0x486f('0x10')][_0x486f('0x16')]['toLowerCase']();}if(!_0x461e8b['query'][_0x486f('0x19')]||!_0x461e8b[_0x486f('0x10')][_0x486f('0x19')][_0x486f('0x1a')](_0x486f('0x1b'))){_0x461e8b['query'][_0x486f('0x19')]=rta[_0x486f('0x1c')](_0x461e8b['query'][_0x486f('0x19')]);return;}var _0xa43f8=rta[_0x486f('0x1d')](_0x461e8b[_0x486f('0x10')][_0x486f('0x19')]);_0x461e8b[_0x486f('0x10')][_0x486f('0x19')]=_0xa43f8[_0x486f('0x1e')][_0x486f('0x1f')](',');_0x8631be=_0xa43f8[_0x486f('0x20')];})[_0x486f('0x15')](function(){if(!_0x6c16af){return[];}return rta[_0x486f('0x21')](_0x6c16af,_0x41d928);})[_0x486f('0x15')](function(_0x293661){_0x4f3f07=_0x293661;return rta[_0x486f('0x22')]();})['then'](function(_0xf753d4){_0x44e929=_0xf753d4[_0x486f('0x23')];if((!_0x40b64b||_0x431f9f)&&!_0x8631be){return _0x4f3f07;}if(_0x8631be&&!_0x40b64b){return rta[_0x486f('0x24')](_0x44e929,_0x4f3f07,_0x8631be);}else{return rta[_0x486f('0x25')](_0x44e929,_0x4f3f07,_0x40b64b);}})[_0x486f('0x15')](function(_0x6345a3){_0x4f3f07=_0x6345a3;var _0x3fb904=![];if(_0x4f3f07[_0x486f('0x26')]===0x0){if(_0x6c16af||_0x40b64b){_0x3fb904=!![];}if(_0x431f9f){_0x3fb904=![];}}if(_0x3fb904){return _0xa5eb8c;}var _0x4af3e3=_['map'](db[_0x486f('0x27')]['rawAttributes'],function(_0x512ab8){return{'name':_0x512ab8[_0x486f('0x28')],'type':_0x512ab8[_0x486f('0x29')]['key']};});_0x461e8b['query'][_0x486f('0x2a')]='agent';_0x17f681=qs['getOptions'](_0x4af3e3,_0x461e8b);_0x17f681[_0x486f('0x2b')]=!![];var _0x2bbcfc=[];if(_0x4f3f07['length']>0x0){_0x2bbcfc['push']({'id':{'$in':_0x4f3f07}});if(_0x8631be&&!_0x40b64b){_0x182227=[db[_0x486f('0x2c')][_0x486f('0x2d')](_0x486f('0x2e')+_0x4f3f07+')')];_0x17f681['order']=_0x182227;}}if(_0x431f9f){_0x24e6fb[_0x486f('0x2f')](function(_0x613f61){var _0x4e43c2=!![];if(_0x40b64b===_0x486f('0x30')&&_0x41d928!==_0x613f61){_0x4e43c2=![];}_0x2bbcfc[_0x486f('0x31')]({[_0x613f61+_0x486f('0x32')]:_0x4e43c2});});if(_0x1e4a7a){_0x2bbcfc[_0x486f('0x31')]({'pauseType':_0x1e4a7a});}}else if(_0x40b64b){_0x24e6fb[_0x486f('0x2f')](function(_0xf88200){_0x2bbcfc[_0x486f('0x31')]({[_0xf88200+_0x486f('0x32')]:![]});});}_0x17f681[_0x486f('0x33')]=_['merge'](_0x17f681[_0x486f('0x33')],{'$and':_0x2bbcfc});if(_0x461e8b['user'][_0x486f('0x2a')]===_0x486f('0x34')){var _0x35b262={'params':{'id':_0x461e8b[_0x486f('0x34')][_0x486f('0x35')]},'query':{'section':'Agents','role':_0x486f('0x36'),'raw':!![],'ids':_0x4f3f07,'customSorting':_0x182227}};if(_0x461e8b[_0x486f('0x10')][_0x486f('0x37')]){_0x35b262['query'][_0x486f('0x37')]=!![];}if(_0x431f9f){_0x35b262['query'][_0x486f('0x38')]=_0x2bbcfc;}_0x35b262['query']=Object[_0x486f('0x39')](_0x35b262['query'],_0x461e8b[_0x486f('0x10')]);return db['UserProfile'][_0x486f('0x3a')](_0x35b262);}return db[_0x486f('0x27')][_0x486f('0x3b')](_0x17f681);})[_0x486f('0x15')](function(_0x5a0fbb){_0xa5eb8c['count']=_0x5a0fbb[_0x486f('0xa')];_0x1963c9=_0x5a0fbb[_0x486f('0x23')];return _0x1963c9[_0x486f('0x3c')](function(_0x50ac20){var _0x49b2d3=_[_0x486f('0x3d')](_0x44e929,['id',_0x50ac20['id']]);if(_0x49b2d3){var _0x53689b=rta[_0x486f('0x3e')](_0x49b2d3);_[_0x486f('0x3f')](_0x50ac20,_0x53689b);}_0x50ac20[_0x486f('0x1b')]=rta[_0x486f('0x40')](_0x50ac20);if(_0x50ac20['globalStatus'][_0x486f('0x1a')](_0x486f('0x13'))){_0x24e6fb[_0x486f('0x2f')](function(_0x1810f9){if(_0x50ac20[_0x1810f9+_0x486f('0x32')]){if(_0x1810f9===_0x486f('0x41')){if(_0x50ac20[_0x486f('0x42')]!==_0x486f('0x43')){_0x50ac20[_0x486f('0x42')]=_0x486f('0x13');}}else{_0x50ac20[_0x1810f9+_0x486f('0x44')]=_0x486f('0x13');}}});}return _0x50ac20;});})['then'](function(_0x25fab7){if(!_0x8631be||_0x182227){return _0x25fab7;}return rta[_0x486f('0x45')](_0x25fab7,_0x8631be);})[_0x486f('0x15')](function(_0x32323f){var _0x1ff8ae=rta[_0x486f('0x46')]();_0xa5eb8c['rows']=_0x32323f['map'](function(_0x2efd45){return _['pick'](_0x2efd45,_0x1ff8ae);});return _0xa5eb8c;})[_0x486f('0x15')](respondWithFilteredResult(_0x41cad4,_0x17f681))['catch'](APIHandleError(_0x41cad4));};exports[_0x486f('0x47')]=function(_0x5052b7,_0x3045e8){var _0x4ca0bf={'count':0x0,'rows':[]};var _0x2db5fe={};var _0x1fd6dd;var _0x578f38;var _0x18f8f0;Promise[_0x486f('0x14')]()[_0x486f('0x15')](function(){if(_0x5052b7[_0x486f('0x10')][_0x486f('0x16')]){if(!utils['isValidChannel'](_0x5052b7[_0x486f('0x10')][_0x486f('0x16')])){throw new APIBadRequestError(util['format'](_0x486f('0x48'),_0x5052b7[_0x486f('0x10')][_0x486f('0x16')]));}_0x1fd6dd=_0x5052b7[_0x486f('0x10')]['channel'][_0x486f('0x49')]();}var _0x38fe47=_[_0x486f('0x4a')](_0x1fd6dd)+_0x486f('0x4b');var _0x5d987e=_['map'](db[_0x38fe47][_0x486f('0x4c')],function(_0x4a11a1){return{'name':_0x4a11a1[_0x486f('0x28')],'type':_0x4a11a1[_0x486f('0x29')][_0x486f('0x4d')]};});if(!_0x5052b7['query'][_0x486f('0x1e')]){var _0x50cace=['id',_0x486f('0x4e')];if(_0x1fd6dd===_0x486f('0x41')){_0x50cace[_0x486f('0x31')](_0x486f('0x29'));if(_0x5052b7[_0x486f('0x10')][_0x486f('0x29')]===_0x486f('0x4f')){_0x50cace[_0x486f('0x31')](['dialActive',_0x486f('0x50')]);}}_0x5052b7['query']['fields']=_0x50cace[_0x486f('0x1f')](',');}_0x2db5fe=qs[_0x486f('0x51')](_0x5d987e,_0x5052b7);if(_0x5052b7[_0x486f('0x34')][_0x486f('0x2a')]==='user'){var _0x5219cf={'params':{'id':_0x5052b7[_0x486f('0x34')]['userProfileId']},'query':{'section':_0x1fd6dd===_0x486f('0x41')&&_0x5052b7['query'][_0x486f('0x29')]===_0x486f('0x4f')?_0x486f('0x52'):_[_0x486f('0x4a')](_0x1fd6dd)+'Queues','type':_0x5052b7[_0x486f('0x10')][_0x486f('0x29')],'nolimit':!![],'sort':'name','filter':_0x5052b7[_0x486f('0x10')][_0x486f('0x53')]}};_0x5219cf[_0x486f('0x10')]=Object[_0x486f('0x39')](_0x5219cf[_0x486f('0x10')],_0x5052b7[_0x486f('0x10')]);delete _0x5219cf[_0x486f('0x10')]['id'];return db[_0x486f('0x54')][_0x486f('0x3a')](_0x5219cf);}return db[_0x38fe47][_0x486f('0x3b')](_0x2db5fe);})[_0x486f('0x15')](function(_0x510e0f){_0x4ca0bf[_0x486f('0xa')]=_0x510e0f[_0x486f('0xa')];_0x578f38=_0x510e0f['rows'];return rtq[_0x486f('0x55')](_0x5052b7,_0x1fd6dd);})[_0x486f('0x15')](function(_0x166f7a){_0x18f8f0=_0x166f7a['rows'];return rtq[_0x486f('0x56')](_0x578f38,_0x18f8f0,_0x1fd6dd,_0x5052b7[_0x486f('0x10')]['type']);})['then'](function(_0x53e252){_0x4ca0bf[_0x486f('0x23')]=_0x53e252;return _0x4ca0bf;})[_0x486f('0x15')](respondWithFilteredResult(_0x3045e8,_0x2db5fe))[_0x486f('0x57')](APIHandleError(_0x3045e8));};
\ No newline at end of file
+var _0x0508=['talking','Status','getRealtimeAgentsQueryFields','pick','catch','getQueues','startCase','name','voice','dialActive','dialMethod','QueueCampaigns','filter','assign','getRealtimeQueues','initializeQueues','lodash','util','../../components/realtime/agents','../../components/parsers/qs','../../config/utils','../../errors/api','APIBadRequestError','handleError','offset','undefined','limit','count','json','getAgents','getChannels','pauseTypeFilter','pause','resolve','then','query','channel','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','includes','validateSortParameter','fields','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','map','rawAttributes','fieldName','type','key','role','agent','getOptions','length','literal','FIELD(id,','forEach','*pause','push','Pause','where','merge','user','userProfileId','Agents','online','extraQueryConditions','UserProfile','getResources','findAndCountAll','filterAgentAttributes','globalStatus','getAgentStatus','voiceStatus'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x0508,0x1a0));var _0x8050=function(_0x43a0c3,_0x55b4a1){_0x43a0c3=_0x43a0c3-0x0;var _0x35fc39=_0x0508[_0x43a0c3];return _0x35fc39;};'use strict';var _=require(_0x8050('0x0'));var util=require(_0x8050('0x1'));var rta=require(_0x8050('0x2'));var rtq=require('../../components/realtime/queues');var qs=require(_0x8050('0x3'));var utils=require(_0x8050('0x4'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0x8050('0x5'))[_0x8050('0x6')];var APIHandleError=require(_0x8050('0x5'))[_0x8050('0x7')];function respondWithFilteredResult(_0x219101,_0x3778d6){return function(_0x15f4c9){if(_0x15f4c9){var _0x47e2d8=typeof _0x3778d6[_0x8050('0x8')]===_0x8050('0x9')&&typeof _0x3778d6[_0x8050('0xa')]==='undefined';var _0x159165=_0x15f4c9[_0x8050('0xb')];var _0x398f9f=_0x47e2d8?0x0:_0x3778d6[_0x8050('0x8')];var _0x4f7f6b=_0x47e2d8?_0x15f4c9['count']:_0x3778d6[_0x8050('0x8')]+_0x3778d6[_0x8050('0xa')];var _0x577d16;if(_0x4f7f6b>=_0x159165){_0x4f7f6b=_0x159165;_0x577d16=0xc8;}else{_0x577d16=0xce;}_0x219101['status'](_0x577d16);return _0x219101['set']('Content-Range',_0x398f9f+'-'+_0x4f7f6b+'/'+_0x159165)[_0x8050('0xc')](_0x15f4c9);}return null;};}exports[_0x8050('0xd')]=function(_0xa490dd,_0x47af04){var _0x3549db={'count':0x0,'rows':[]};var _0x1665a6={};var _0x5493f3;var _0x3128c7=utils[_0x8050('0xe')]();var _0x53b3f5;var _0x217a03;var _0xfbb2d6=_0xa490dd['query']['globalQueueFilter'];var _0xe84dcd=_0xa490dd['query']['globalStatusFilter'];var _0x4d0c85=_0xa490dd['query'][_0x8050('0xf')];var _0x2c39c4=_0xe84dcd===_0x8050('0x10')||_0xe84dcd==='*pause'?!![]:![];var _0x4b36f7=[];var _0x2fcc02;var _0x5af447;Promise[_0x8050('0x11')]()[_0x8050('0x12')](function(){if(_0xa490dd[_0x8050('0x13')][_0x8050('0x14')]){if(!utils[_0x8050('0x15')](_0xa490dd['query'][_0x8050('0x14')])){throw new APIBadRequestError(util[_0x8050('0x16')](_0x8050('0x17'),_0xa490dd[_0x8050('0x13')][_0x8050('0x14')]));}_0x5493f3=_0xa490dd[_0x8050('0x13')][_0x8050('0x14')][_0x8050('0x18')]();}if(!_0xa490dd[_0x8050('0x13')]['sort']||!_0xa490dd[_0x8050('0x13')][_0x8050('0x19')][_0x8050('0x1a')]('globalStatus')){_0xa490dd[_0x8050('0x13')][_0x8050('0x19')]=rta[_0x8050('0x1b')](_0xa490dd['query'][_0x8050('0x19')]);return;}var _0x56e9d3=rta['getUpdatedSortOptions'](_0xa490dd['query'][_0x8050('0x19')]);_0xa490dd[_0x8050('0x13')][_0x8050('0x19')]=_0x56e9d3[_0x8050('0x1c')][_0x8050('0x1d')](',');_0x2fcc02=_0x56e9d3[_0x8050('0x1e')];})['then'](function(){if(!_0xfbb2d6){return[];}return rta[_0x8050('0x1f')](_0xfbb2d6,_0x5493f3);})[_0x8050('0x12')](function(_0x4bd816){_0x4b36f7=_0x4bd816;return rta[_0x8050('0x20')]();})['then'](function(_0x169253){_0x217a03=_0x169253[_0x8050('0x21')];if((!_0xe84dcd||_0x2c39c4)&&!_0x2fcc02){return _0x4b36f7;}if(_0x2fcc02&&!_0xe84dcd){return rta[_0x8050('0x22')](_0x217a03,_0x4b36f7,_0x2fcc02);}else{return rta['getAgentIdsByStatus'](_0x217a03,_0x4b36f7,_0xe84dcd);}})['then'](function(_0x3bbe23){_0x4b36f7=_0x3bbe23;var _0x18eee6=![];if(_0x4b36f7['length']===0x0){if(_0xfbb2d6||_0xe84dcd){_0x18eee6=!![];}if(_0x2c39c4){_0x18eee6=![];}}if(_0x18eee6){return _0x3549db;}var _0x574712=_[_0x8050('0x23')](db['User'][_0x8050('0x24')],function(_0x9fc35e){return{'name':_0x9fc35e[_0x8050('0x25')],'type':_0x9fc35e[_0x8050('0x26')][_0x8050('0x27')]};});_0xa490dd[_0x8050('0x13')][_0x8050('0x28')]=_0x8050('0x29');_0x1665a6=qs[_0x8050('0x2a')](_0x574712,_0xa490dd);_0x1665a6['raw']=!![];var _0x3f197d=[];if(_0x4b36f7[_0x8050('0x2b')]>0x0){_0x3f197d['push']({'id':{'$in':_0x4b36f7}});if(_0x2fcc02&&!_0xe84dcd){_0x5af447=[db['sequelize'][_0x8050('0x2c')](_0x8050('0x2d')+_0x4b36f7+')')];_0x1665a6[_0x8050('0x1e')]=_0x5af447;}}if(_0x2c39c4){_0x3128c7[_0x8050('0x2e')](function(_0x346ac0){var _0x114e26=!![];if(_0xe84dcd===_0x8050('0x2f')&&_0x5493f3!==_0x346ac0){_0x114e26=![];}_0x3f197d[_0x8050('0x30')]({[_0x346ac0+_0x8050('0x31')]:_0x114e26});});if(_0x4d0c85){_0x3f197d['push']({'pauseType':_0x4d0c85});}}else if(_0xe84dcd){_0x3128c7[_0x8050('0x2e')](function(_0x9872a0){_0x3f197d[_0x8050('0x30')]({[_0x9872a0+_0x8050('0x31')]:![]});});}_0x1665a6[_0x8050('0x32')]=_[_0x8050('0x33')](_0x1665a6[_0x8050('0x32')],{'$and':_0x3f197d});if(_0xa490dd['user'][_0x8050('0x28')]===_0x8050('0x34')){var _0x589e9b={'params':{'id':_0xa490dd['user'][_0x8050('0x35')]},'query':{'section':_0x8050('0x36'),'role':_0x8050('0x29'),'raw':!![],'ids':_0x4b36f7,'customSorting':_0x5af447}};if(_0xa490dd[_0x8050('0x13')][_0x8050('0x37')]){_0x589e9b[_0x8050('0x13')][_0x8050('0x37')]=!![];}if(_0x2c39c4){_0x589e9b[_0x8050('0x13')][_0x8050('0x38')]=_0x3f197d;}_0x589e9b[_0x8050('0x13')]=Object['assign'](_0x589e9b[_0x8050('0x13')],_0xa490dd['query']);return db[_0x8050('0x39')][_0x8050('0x3a')](_0x589e9b);}return db['User'][_0x8050('0x3b')](_0x1665a6);})[_0x8050('0x12')](function(_0x4aeb9f){_0x3549db[_0x8050('0xb')]=_0x4aeb9f['count'];_0x53b3f5=_0x4aeb9f['rows'];return _0x53b3f5[_0x8050('0x23')](function(_0x5eb63d){var _0x509541=_['find'](_0x217a03,['id',_0x5eb63d['id']]);if(_0x509541){var _0x520b16=rta[_0x8050('0x3c')](_0x509541);_[_0x8050('0x33')](_0x5eb63d,_0x520b16);}_0x5eb63d[_0x8050('0x3d')]=rta[_0x8050('0x3e')](_0x5eb63d);if(_0x5eb63d['globalStatus'][_0x8050('0x1a')](_0x8050('0x10'))){_0x3128c7[_0x8050('0x2e')](function(_0x446463){if(_0x5eb63d[_0x446463+_0x8050('0x31')]){if(_0x446463==='voice'){if(_0x5eb63d[_0x8050('0x3f')]!==_0x8050('0x40')){_0x5eb63d[_0x8050('0x3f')]=_0x8050('0x10');}}else{_0x5eb63d[_0x446463+_0x8050('0x41')]=_0x8050('0x10');}}});}return _0x5eb63d;});})[_0x8050('0x12')](function(_0x4ca547){if(!_0x2fcc02||_0x5af447){return _0x4ca547;}return rta['sortAgentsByStatus'](_0x4ca547,_0x2fcc02);})[_0x8050('0x12')](function(_0x40f1e7){var _0x5aaea4=rta[_0x8050('0x42')]();_0x3549db['rows']=_0x40f1e7[_0x8050('0x23')](function(_0x4db050){return _[_0x8050('0x43')](_0x4db050,_0x5aaea4);});return _0x3549db;})[_0x8050('0x12')](respondWithFilteredResult(_0x47af04,_0x1665a6))[_0x8050('0x44')](APIHandleError(_0x47af04));};exports[_0x8050('0x45')]=function(_0x26d737,_0x4528be){var _0x32febe={'count':0x0,'rows':[]};var _0x2de7bc={};var _0x26af83;var _0x3769a2;var _0x3abc68;Promise[_0x8050('0x11')]()['then'](function(){if(_0x26d737[_0x8050('0x13')]['channel']){if(!utils[_0x8050('0x15')](_0x26d737[_0x8050('0x13')]['channel'])){throw new APIBadRequestError(util[_0x8050('0x16')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x26d737[_0x8050('0x13')]['channel']));}_0x26af83=_0x26d737[_0x8050('0x13')][_0x8050('0x14')]['toLowerCase']();}var _0x52f240=_[_0x8050('0x46')](_0x26af83)+'Queue';var _0x210e19=_[_0x8050('0x23')](db[_0x52f240][_0x8050('0x24')],function(_0x525a45){return{'name':_0x525a45['fieldName'],'type':_0x525a45[_0x8050('0x26')][_0x8050('0x27')]};});if(!_0x26d737[_0x8050('0x13')][_0x8050('0x1c')]){var _0xa50a41=['id',_0x8050('0x47')];if(_0x26af83===_0x8050('0x48')){_0xa50a41['push'](_0x8050('0x26'));if(_0x26d737[_0x8050('0x13')][_0x8050('0x26')]==='outbound'){_0xa50a41[_0x8050('0x30')]([_0x8050('0x49'),_0x8050('0x4a')]);}}_0x26d737['query'][_0x8050('0x1c')]=_0xa50a41[_0x8050('0x1d')](',');}_0x2de7bc=qs['getOptions'](_0x210e19,_0x26d737);if(_0x26d737['user'][_0x8050('0x28')]===_0x8050('0x34')){var _0x4b4abf={'params':{'id':_0x26d737['user'][_0x8050('0x35')]},'query':{'section':_0x26af83===_0x8050('0x48')&&_0x26d737['query'][_0x8050('0x26')]==='outbound'?_0x8050('0x4b'):_['startCase'](_0x26af83)+'Queues','type':_0x26d737[_0x8050('0x13')][_0x8050('0x26')],'nolimit':!![],'sort':_0x8050('0x47'),'filter':_0x26d737['query'][_0x8050('0x4c')]}};_0x4b4abf[_0x8050('0x13')]=Object[_0x8050('0x4d')](_0x4b4abf['query'],_0x26d737['query']);delete _0x4b4abf['query']['id'];return db['UserProfile']['getResources'](_0x4b4abf);}return db[_0x52f240][_0x8050('0x3b')](_0x2de7bc);})[_0x8050('0x12')](function(_0x80bf8b){_0x32febe[_0x8050('0xb')]=_0x80bf8b[_0x8050('0xb')];_0x3769a2=_0x80bf8b['rows'];return rtq[_0x8050('0x4e')](_0x26d737,_0x26af83);})['then'](function(_0x50cbfa){_0x3abc68=_0x50cbfa[_0x8050('0x21')];return rtq[_0x8050('0x4f')](_0x3769a2,_0x3abc68,_0x26af83,_0x26d737[_0x8050('0x13')][_0x8050('0x26')]);})[_0x8050('0x12')](function(_0x12148f){_0x32febe[_0x8050('0x21')]=_0x12148f;return _0x32febe;})['then'](respondWithFilteredResult(_0x4528be,_0x2de7bc))[_0x8050('0x44')](APIHandleError(_0x4528be));};
\ No newline at end of file
index 842778f..47a87be 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(_0x163bc9,_0x4b6796){var _0xb94e42=function(_0x3529e3){while(--_0x3529e3){_0x163bc9['push'](_0x163bc9['shift']());}};_0xb94e42(++_0x4b6796);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x20076b,_0x4f218e){var _0x1ae3de=function(_0x545d7a){while(--_0x545d7a){_0x20076b['push'](_0x20076b['shift']());}};_0x1ae3de(++_0x4f218e);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index dae15dd..7b6e99a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a8b=['DATE','INTEGER','sequelize','STRING'];(function(_0x1f0a14,_0x327542){var _0x2763b4=function(_0x523888){while(--_0x523888){_0x1f0a14['push'](_0x1f0a14['shift']());}};_0x2763b4(++_0x327542);}(_0x8a8b,0xae));var _0xb8a8=function(_0xe940a9,_0x32d374){_0xe940a9=_0xe940a9-0x0;var _0x5964b2=_0x8a8b[_0xe940a9];return _0x5964b2;};'use strict';var Sequelize=require(_0xb8a8('0x0'));module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xb8a8('0x1')]},'scheduledat':{'type':Sequelize[_0xb8a8('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xb8a8('0x2')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xb8a8('0x3')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xb8a8('0x1')]},'membername':{'type':Sequelize[_0xb8a8('0x1')]}};
\ No newline at end of file
+var _0xeda8=['sequelize','exports','STRING','DATE','INTEGER'];(function(_0x164ba9,_0x5f1df1){var _0x364ca7=function(_0x43d226){while(--_0x43d226){_0x164ba9['push'](_0x164ba9['shift']());}};_0x364ca7(++_0x5f1df1);}(_0xeda8,0x104));var _0x8eda=function(_0x59de73,_0xad36e1){_0x59de73=_0x59de73-0x0;var _0x269162=_0xeda8[_0x59de73];return _0x269162;};'use strict';var Sequelize=require(_0x8eda('0x0'));module[_0x8eda('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x8eda('0x2')]},'scheduledat':{'type':Sequelize[_0x8eda('0x3')]},'uniqueid':{'type':Sequelize[_0x8eda('0x2')]},'starttime':{'type':Sequelize[_0x8eda('0x3')]},'responsetime':{'type':Sequelize[_0x8eda('0x3')]},'ringtime':{'type':Sequelize[_0x8eda('0x4')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x8eda('0x2')]},'campaigntype':{'type':Sequelize[_0x8eda('0x2')]},'membername':{'type':Sequelize[_0x8eda('0x2')]}};
\ No newline at end of file
index 23c67ac..51316a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbadf=['path','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','util','../../config/logger','api','moment','bluebird'];(function(_0x4deff,_0x42c328){var _0x440123=function(_0x2d7dde){while(--_0x2d7dde){_0x4deff['push'](_0x4deff['shift']());}};_0x440123(++_0x42c328);}(_0xbadf,0xb6));var _0xfbad=function(_0x75ce5b,_0x3b582f){_0x75ce5b=_0x75ce5b-0x0;var _0x22195e=_0xbadf[_0x75ce5b];return _0x22195e;};'use strict';var _=require('lodash');var util=require(_0xfbad('0x0'));var logger=require(_0xfbad('0x1'))(_0xfbad('0x2'));var moment=require(_0xfbad('0x3'));var BPromise=require(_0xfbad('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfbad('0x5'));var rimraf=require('rimraf');var config=require(_0xfbad('0x6'));var attributes=require(_0xfbad('0x7'));module[_0xfbad('0x8')]=function(_0x2c81c9,_0x5d6a18){return _0x2c81c9[_0xfbad('0x9')](_0xfbad('0xa'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9369=['exports','define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','moment','path','../../config/environment','./reportAgentPreview.attributes'];(function(_0x287410,_0x452572){var _0x27becb=function(_0x4832c4){while(--_0x4832c4){_0x287410['push'](_0x287410['shift']());}};_0x27becb(++_0x452572);}(_0x9369,0x93));var _0x9936=function(_0x21c3b2,_0x4e79c2){_0x21c3b2=_0x21c3b2-0x0;var _0x41474f=_0x9369[_0x21c3b2];return _0x41474f;};'use strict';var _=require(_0x9936('0x0'));var util=require(_0x9936('0x1'));var logger=require(_0x9936('0x2'))('api');var moment=require(_0x9936('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9936('0x4'));var rimraf=require('rimraf');var config=require(_0x9936('0x5'));var attributes=require(_0x9936('0x6'));module[_0x9936('0x7')]=function(_0x140000,_0x39b52a){return _0x140000[_0x9936('0x8')](_0x9936('0x9'),attributes,{'tableName':_0x9936('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63a352e..6b1c8cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5926=['ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateReportAgentPreview','create','body','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info'];(function(_0x529466,_0x253b81){var _0x578157=function(_0x12291a){while(--_0x12291a){_0x529466['push'](_0x529466['shift']());}};_0x578157(++_0x253b81);}(_0x5926,0x82));var _0x6592=function(_0xf573ec,_0xfa0234){_0xf573ec=_0xf573ec-0x0;var _0x45d6aa=_0x5926[_0xf573ec];return _0x45d6aa;};'use strict';var _=require(_0x6592('0x0'));var util=require(_0x6592('0x1'));var moment=require(_0x6592('0x2'));var BPromise=require(_0x6592('0x3'));var rs=require(_0x6592('0x4'));var fs=require('fs');var Redis=require(_0x6592('0x5'));var db=require(_0x6592('0x6'))['db'];var utils=require(_0x6592('0x7'));var logger=require(_0x6592('0x8'))(_0x6592('0x9'));var config=require(_0x6592('0xa'));var jayson=require(_0x6592('0xb'));var client=jayson[_0x6592('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x526fc8,_0x1c42b2,_0x47ce59){return new BPromise(function(_0x7d75,_0x25c4bc){return client['request'](_0x526fc8,_0x47ce59)[_0x6592('0xd')](function(_0x2de0b5){logger[_0x6592('0xe')](_0x6592('0xf'),_0x1c42b2,_0x6592('0x10'));logger[_0x6592('0x11')](_0x6592('0x12'),_0x1c42b2,_0x6592('0x10'),JSON[_0x6592('0x13')](_0x2de0b5));if(_0x2de0b5[_0x6592('0x14')]){if(_0x2de0b5[_0x6592('0x14')][_0x6592('0x15')]===0x1f4){logger[_0x6592('0x14')](_0x6592('0xf'),_0x1c42b2,_0x2de0b5['error'][_0x6592('0x16')]);return _0x25c4bc(_0x2de0b5['error'][_0x6592('0x16')]);}logger[_0x6592('0x14')](_0x6592('0xf'),_0x1c42b2,_0x2de0b5[_0x6592('0x14')]['message']);return _0x7d75(_0x2de0b5[_0x6592('0x14')][_0x6592('0x16')]);}else{logger[_0x6592('0xe')](_0x6592('0xf'),_0x1c42b2,_0x6592('0x10'));_0x7d75(_0x2de0b5[_0x6592('0x17')]['message']);}})[_0x6592('0x18')](function(_0x4f5aac){logger['error'](_0x6592('0xf'),_0x1c42b2,_0x4f5aac);_0x25c4bc(_0x4f5aac);});});}exports[_0x6592('0x19')]=function(_0x6b6ee2){var _0x32f0d4=this;return new Promise(function(_0x502cd8,_0xa0b473){return db['ReportAgentPreview'][_0x6592('0x1a')](_0x6b6ee2[_0x6592('0x1b')],{'raw':_0x6b6ee2['options']?_0x6b6ee2['options'][_0x6592('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x3c8588){logger[_0x6592('0xe')](_0x6592('0x19'),_0x6b6ee2);logger[_0x6592('0x11')](_0x6592('0x19'),_0x6b6ee2,JSON['stringify'](_0x3c8588));_0x502cd8(_0x3c8588);})[_0x6592('0x18')](function(_0x275830){logger[_0x6592('0x14')]('CreateReportAgentPreview',_0x275830[_0x6592('0x16')],_0x6b6ee2);_0xa0b473(_0x32f0d4['error'](0x1f4,_0x275830[_0x6592('0x16')]));});});};
\ No newline at end of file
+var _0x70df=['result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','then','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','info','ReportAgentPreview,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70df,0xea));var _0xf70d=function(_0x72628e,_0x21f21d){_0x72628e=_0x72628e-0x0;var _0x5b3fde=_0x70df[_0x72628e];return _0x5b3fde;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xf70d('0x0'));var rs=require(_0xf70d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf70d('0x2'))['db'];var utils=require(_0xf70d('0x3'));var logger=require(_0xf70d('0x4'))(_0xf70d('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf70d('0x6')][_0xf70d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x349020,_0x2b07b9,_0x3a56e7){return new BPromise(function(_0x2012e4,_0x8cb424){return client[_0xf70d('0x8')](_0x349020,_0x3a56e7)['then'](function(_0x2f359d){logger[_0xf70d('0x9')](_0xf70d('0xa'),_0x2b07b9,'request\x20sent');logger[_0xf70d('0xb')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x2b07b9,_0xf70d('0xc'),JSON[_0xf70d('0xd')](_0x2f359d));if(_0x2f359d[_0xf70d('0xe')]){if(_0x2f359d['error']['code']===0x1f4){logger[_0xf70d('0xe')](_0xf70d('0xa'),_0x2b07b9,_0x2f359d[_0xf70d('0xe')]['message']);return _0x8cb424(_0x2f359d[_0xf70d('0xe')][_0xf70d('0xf')]);}logger[_0xf70d('0xe')](_0xf70d('0xa'),_0x2b07b9,_0x2f359d[_0xf70d('0xe')][_0xf70d('0xf')]);return _0x2012e4(_0x2f359d['error'][_0xf70d('0xf')]);}else{logger['info'](_0xf70d('0xa'),_0x2b07b9,'request\x20sent');_0x2012e4(_0x2f359d[_0xf70d('0x10')][_0xf70d('0xf')]);}})[_0xf70d('0x11')](function(_0x5bf507){logger[_0xf70d('0xe')](_0xf70d('0xa'),_0x2b07b9,_0x5bf507);_0x8cb424(_0x5bf507);});});}exports[_0xf70d('0x12')]=function(_0x2fe233){var _0x11d42e=this;return new Promise(function(_0x4ce380,_0x4502e4){return db[_0xf70d('0x13')][_0xf70d('0x14')](_0x2fe233[_0xf70d('0x15')],{'raw':_0x2fe233[_0xf70d('0x16')]?_0x2fe233['options'][_0xf70d('0x17')]===undefined?!![]:![]:!![]})[_0xf70d('0x18')](function(_0xb3b11c){logger[_0xf70d('0x9')](_0xf70d('0x12'),_0x2fe233);logger[_0xf70d('0xb')](_0xf70d('0x12'),_0x2fe233,JSON[_0xf70d('0xd')](_0xb3b11c));_0x4ce380(_0xb3b11c);})[_0xf70d('0x11')](function(_0x3ff4f3){logger[_0xf70d('0xe')](_0xf70d('0x12'),_0x3ff4f3[_0xf70d('0xf')],_0x2fe233);_0x4502e4(_0x11d42e['error'](0x1f4,_0x3ff4f3['message']));});});};
\ No newline at end of file
index 4a32c75..e765f07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd90f=['/mail/queues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','/whatsapp/queues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outbound','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','telephones','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/openchannel/queues/:id/notify','/openchannel/queues/:id','showOpenchannelQueues','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','path','Router','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues'];(function(_0x40f31d,_0x27ded7){var _0x2a249c=function(_0x141c77){while(--_0x141c77){_0x40f31d['push'](_0x40f31d['shift']());}};_0x2a249c(++_0x27ded7);}(_0xd90f,0x16f));var _0xfd90=function(_0x384762,_0x56f97a){_0x384762=_0x384762-0x0;var _0x5015ce=_0xd90f[_0x384762];return _0x5015ce;};'use strict';var multer=require(_0xfd90('0x0'));var util=require('util');var path=require(_0xfd90('0x1'));var express=require('express');var router=express[_0xfd90('0x2')]();var auth=require('../../components/auth/service');var controller=require(_0xfd90('0x3'));router[_0xfd90('0x4')](_0xfd90('0x5'),auth[_0xfd90('0x6')](),controller['voiceChannels']);router['get']('/voice/channels/:uniqueid/mixmonitor',auth[_0xfd90('0x6')](),controller[_0xfd90('0x7')]);router[_0xfd90('0x4')](_0xfd90('0x8'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x9')]);router['get'](_0xfd90('0xa'),auth[_0xfd90('0x6')](),controller[_0xfd90('0xb')]);router[_0xfd90('0x4')](_0xfd90('0xc'),auth[_0xfd90('0x6')](),controller['chatQueues']);router[_0xfd90('0x4')](_0xfd90('0xd'),auth[_0xfd90('0x6')](),controller['mailQueues']);router[_0xfd90('0x4')](_0xfd90('0xe'),auth[_0xfd90('0x6')](),controller[_0xfd90('0xf')]);router[_0xfd90('0x4')](_0xfd90('0x10'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x11')]);router['get'](_0xfd90('0x12'),auth[_0xfd90('0x6')](),controller['smsQueues']);router[_0xfd90('0x4')](_0xfd90('0x13'),auth[_0xfd90('0x6')](),controller['whatsappQueues']);router['get'](_0xfd90('0x14'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x15')]);router['get'](_0xfd90('0x16'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x17')]);router[_0xfd90('0x4')](_0xfd90('0x18'),auth['isAuthenticated'](),controller[_0xfd90('0x19')]);router[_0xfd90('0x4')]('/voice/queues/channels/:uniqueid',auth[_0xfd90('0x6')](),controller['voiceQueuesChannel']);router[_0xfd90('0x4')]('/voice/queues/channels/:uniqueid/hangup',auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router[_0xfd90('0x4')](_0xfd90('0x1a'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x1b')]);router['get'](_0xfd90('0x1c'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x1d')]);router[_0xfd90('0x1e')](_0xfd90('0x1c'),auth['isAuthenticated'](),controller[_0xfd90('0x1f')]);router[_0xfd90('0x4')]('/outbound',auth[_0xfd90('0x6')](),controller[_0xfd90('0x20')]);router[_0xfd90('0x4')]('/outbound/channels',auth[_0xfd90('0x6')](),controller[_0xfd90('0x21')]);router['get'](_0xfd90('0x22'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x23')]);router[_0xfd90('0x1e')](_0xfd90('0x24'),auth['isAuthenticated'](),controller[_0xfd90('0x25')]);router[_0xfd90('0x4')]('/telephones',auth[_0xfd90('0x6')](),controller[_0xfd90('0x26')]);router[_0xfd90('0x4')]('/trunks',auth['isAuthenticated'](),controller['trunks']);router[_0xfd90('0x4')]('/campaigns',auth[_0xfd90('0x6')](),controller['campaigns']);router[_0xfd90('0x4')](_0xfd90('0x27'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x28')]);router[_0xfd90('0x4')](_0xfd90('0x29'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x2a')]);router[_0xfd90('0x4')](_0xfd90('0x2b'),auth['isAuthenticated'](),controller[_0xfd90('0x2c')]);router[_0xfd90('0x4')](_0xfd90('0x2d'),auth[_0xfd90('0x6')](),controller['openchannelQueuesWaitingInteractions']);router[_0xfd90('0x4')]('/openchannel/queues/:id/waitinginteractions',auth['isAuthenticated'](),controller[_0xfd90('0x2e')]);router[_0xfd90('0x4')](_0xfd90('0x2f'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x30')]);router[_0xfd90('0x4')](_0xfd90('0x31'),auth[_0xfd90('0x6')](),controller['whatsappQueuesWaitingInteractions']);router[_0xfd90('0x4')](_0xfd90('0x32'),auth['isAuthenticated'](),controller[_0xfd90('0x33')]);router[_0xfd90('0x34')](_0xfd90('0x35'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x36')](_0xfd90('0x37')));router[_0xfd90('0x4')](_0xfd90('0x38'),auth['isAuthenticated'](),controller[_0xfd90('0x39')]);router[_0xfd90('0x34')](_0xfd90('0x3a'),auth[_0xfd90('0x6')](),controller['queueNotify'](_0xfd90('0x3b')));router[_0xfd90('0x4')](_0xfd90('0x3c'),auth['isAuthenticated'](),controller[_0xfd90('0x3d')]);router[_0xfd90('0x34')](_0xfd90('0x3e'),auth[_0xfd90('0x6')](),controller['queueNotify'](_0xfd90('0x3f')));router[_0xfd90('0x4')]('/fax/queues/:id',auth['isAuthenticated'](),controller['showFaxQueues']);router['post'](_0xfd90('0x40'),auth['isAuthenticated'](),controller[_0xfd90('0x36')]('openchannel'));router['get'](_0xfd90('0x41'),auth['isAuthenticated'](),controller[_0xfd90('0x42')]);router['post']('/sms/queues/:id/notify',auth[_0xfd90('0x6')](),controller['queueNotify']('sms'));router['post'](_0xfd90('0x43'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x36')](_0xfd90('0x44')));router[_0xfd90('0x4')](_0xfd90('0x45'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x46')]);router['get'](_0xfd90('0x47'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x48')]);router[_0xfd90('0x34')](_0xfd90('0x49'),auth[_0xfd90('0x6')](),controller[_0xfd90('0x4a')]);module[_0xfd90('0x4b')]=router;
\ No newline at end of file
+var _0x3a8d=['/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','outboundChannels','/agents','agents','agentCapacity','/telephones','telephones','/trunks','trunks','campaigns','chatQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','mail','queueNotify','chat','/chat/queues/:id','/fax/queues/:id/notify','fax','showFaxQueues','openchannel','/openchannel/queues/:id','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','util','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup'];(function(_0x5e07cb,_0x1b9bfb){var _0xa136ef=function(_0x503308){while(--_0x503308){_0x5e07cb['push'](_0x5e07cb['shift']());}};_0xa136ef(++_0x1b9bfb);}(_0x3a8d,0xcb));var _0xd3a8=function(_0x52096b,_0x20bab4){_0x52096b=_0x52096b-0x0;var _0x2b1cc7=_0x3a8d[_0x52096b];return _0x2b1cc7;};'use strict';var multer=require('multer');var util=require(_0xd3a8('0x0'));var path=require('path');var express=require(_0xd3a8('0x1'));var router=express[_0xd3a8('0x2')]();var auth=require(_0xd3a8('0x3'));var controller=require(_0xd3a8('0x4'));router[_0xd3a8('0x5')](_0xd3a8('0x6'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x8')]);router[_0xd3a8('0x5')]('/voice/channels/:uniqueid/mixmonitor',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x9')]);router[_0xd3a8('0x5')](_0xd3a8('0xa'),auth['isAuthenticated'](),controller['voiceChannelStopMixMonitor']);router[_0xd3a8('0x5')](_0xd3a8('0xb'),auth['isAuthenticated'](),controller[_0xd3a8('0xc')]);router['get'](_0xd3a8('0xd'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0xe')]);router[_0xd3a8('0x5')](_0xd3a8('0xf'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x10')]);router[_0xd3a8('0x5')](_0xd3a8('0x11'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x12')]);router['get'](_0xd3a8('0x13'),auth['isAuthenticated'](),controller[_0xd3a8('0x14')]);router[_0xd3a8('0x5')](_0xd3a8('0x15'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x16')]);router[_0xd3a8('0x5')](_0xd3a8('0x17'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x18')]);router[_0xd3a8('0x5')](_0xd3a8('0x19'),auth[_0xd3a8('0x7')](),controller['faxQueues']);router[_0xd3a8('0x5')](_0xd3a8('0x1a'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x1b')]);router[_0xd3a8('0x5')](_0xd3a8('0x1c'),auth['isAuthenticated'](),controller['voiceQueuesChannels']);router[_0xd3a8('0x5')]('/voice/queues/channels/:uniqueid',auth[_0xd3a8('0x7')](),controller['voiceQueuesChannel']);router[_0xd3a8('0x5')](_0xd3a8('0x1d'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x1e')]);router[_0xd3a8('0x5')](_0xd3a8('0x1f'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x20')]);router[_0xd3a8('0x5')](_0xd3a8('0x21'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x22')]);router[_0xd3a8('0x23')](_0xd3a8('0x21'),auth['isAuthenticated'](),controller[_0xd3a8('0x24')]);router[_0xd3a8('0x5')](_0xd3a8('0x25'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x26')]);router[_0xd3a8('0x5')]('/outbound/channels',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x27')]);router[_0xd3a8('0x5')](_0xd3a8('0x28'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x29')]);router[_0xd3a8('0x23')]('/agents/:id/capacity',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x2a')]);router[_0xd3a8('0x5')](_0xd3a8('0x2b'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x2c')]);router['get'](_0xd3a8('0x2d'),auth['isAuthenticated'](),controller[_0xd3a8('0x2e')]);router[_0xd3a8('0x5')]('/campaigns',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x2f')]);router[_0xd3a8('0x5')]('/fax/accounts',auth[_0xd3a8('0x7')](),controller['faxAccounts']);router[_0xd3a8('0x5')]('/chat/queues/waitinginteractions',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x30')]);router[_0xd3a8('0x5')]('/mail/queues/waitinginteractions',auth[_0xd3a8('0x7')](),controller['mailQueuesWaitingInteractions']);router[_0xd3a8('0x5')](_0xd3a8('0x31'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x32')]);router[_0xd3a8('0x5')](_0xd3a8('0x33'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x34')]);router[_0xd3a8('0x5')](_0xd3a8('0x35'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x36')]);router[_0xd3a8('0x5')]('/whatsapp/queues/waitinginteractions',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x37')]);router['get'](_0xd3a8('0x38'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x39')]);router[_0xd3a8('0x3a')]('/mail/queues/:id/notify',auth[_0xd3a8('0x7')](),controller['queueNotify'](_0xd3a8('0x3b')));router['get']('/mail/queues/:id',auth[_0xd3a8('0x7')](),controller['showMailQueues']);router[_0xd3a8('0x3a')]('/chat/queues/:id/notify',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x3c')](_0xd3a8('0x3d')));router[_0xd3a8('0x5')](_0xd3a8('0x3e'),auth[_0xd3a8('0x7')](),controller['showChatQueues']);router[_0xd3a8('0x3a')](_0xd3a8('0x3f'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x3c')](_0xd3a8('0x40')));router[_0xd3a8('0x5')]('/fax/queues/:id',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x41')]);router[_0xd3a8('0x3a')]('/openchannel/queues/:id/notify',auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x3c')](_0xd3a8('0x42')));router[_0xd3a8('0x5')](_0xd3a8('0x43'),auth['isAuthenticated'](),controller['showOpenchannelQueues']);router[_0xd3a8('0x3a')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller[_0xd3a8('0x3c')](_0xd3a8('0x44')));router['post'](_0xd3a8('0x45'),auth[_0xd3a8('0x7')](),controller['queueNotify'](_0xd3a8('0x46')));router[_0xd3a8('0x5')](_0xd3a8('0x47'),auth['isAuthenticated'](),controller[_0xd3a8('0x48')]);router[_0xd3a8('0x5')](_0xd3a8('0x49'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x4a')]);router[_0xd3a8('0x3a')](_0xd3a8('0x4b'),auth[_0xd3a8('0x7')](),controller[_0xd3a8('0x4c')]);module[_0xd3a8('0x4d')]=router;
\ No newline at end of file
index 4a0554f..79aa699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','FaxAccounts','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','map','queue_id','uniq','value','filter','indexOf','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found','update','MessageId','InteractionId','From','QueueId','TransferReport','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','capitalize','chat','agent','Message','create','Start','agentTransferTimeout','bluebird','moment','../../config/logger','api','jayson/promise','client','http','request','then','error','code','result','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','params','VoiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','findAll','user','length','format','updateAttributes','MemberReport','findOrCreate','INTERACTION','interface','SIP/%s','internal','capacity','campaigns','showChatQueues','ChatQueues','MailQueues','showMailQueues','mailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues'];(function(_0x4f5162,_0x391654){var _0x229205=function(_0x134477){while(--_0x134477){_0x4f5162['push'](_0x4f5162['shift']());}};_0x229205(++_0x391654);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var BPromise=require(_0x0d8b('0x0'));var moment=require(_0x0d8b('0x1'));var _=require('lodash');var util=require('util');var db=require('../../mysqldb')['db'];var logger=require(_0x0d8b('0x2'))(_0x0d8b('0x3'));var jayson=require(_0x0d8b('0x4'));var amiClient=jayson[_0x0d8b('0x5')][_0x0d8b('0x6')]({'port':0x232a});var mailClient=jayson['client']['http']({'port':0x232b});var routingClient=jayson[_0x0d8b('0x5')][_0x0d8b('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){var _0x129310=_0x413284?_0x413284:amiClient;return _0x129310[_0x0d8b('0x7')](_0x39f43a,_0x4a4470)[_0x0d8b('0x8')](function(_0x1f4800){if(_0x1f4800[_0x0d8b('0x9')]){if(_0x1f4800[_0x0d8b('0x9')][_0x0d8b('0xa')]===0x1f4){return _0x58e4e2(_0x1f4800[_0x0d8b('0x9')]['message']);}return _0x284169(_0x1f4800[_0x0d8b('0x9')]['message']);}else{_0x284169(_0x1f4800[_0x0d8b('0xb')]);}})[_0x0d8b('0xc')](function(_0x340cc4){_0x58e4e2(_0x340cc4);});});}function respondWithResult(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xc8;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0xd')](_0x35a07b)[_0x0d8b('0xe')](_0x32bb1a);}return _0x92cdd8[_0x0d8b('0xf')](0x194);};}function handleError(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0x1f4;return function(_0xe65334){logger[_0x0d8b('0x9')](_0xe65334[_0x0d8b('0x10')]);if(_0xe65334['name']){delete _0xe65334[_0x0d8b('0x11')];}_0x2ce75e[_0x0d8b('0xd')](_0x5ad086)[_0x0d8b('0x12')](_0xe65334);};}function findById(_0xe2e167){return function(_0x2cb03c){if(!_['isNil'](_0xe2e167)&&!_[_0x0d8b('0x13')](_0x2cb03c)&&!_[_0x0d8b('0x13')](_0x2cb03c[_0x0d8b('0x14')])){return _[_0x0d8b('0x15')](_0x2cb03c[_0x0d8b('0x14')],function(_0x18dd2d){return _0x18dd2d['id']==_0xe2e167;});}return null;};}exports[_0x0d8b('0x16')]=function(_0xa3612a,_0x4a15bf){return respondWithRpcPromise(_0x0d8b('0x17'),_0xa3612a[_0x0d8b('0x18')])[_0x0d8b('0x8')](respondWithResult(_0x4a15bf,null))[_0x0d8b('0xc')](handleError(_0x4a15bf,null));};exports[_0x0d8b('0x19')]=function(_0x5b709c,_0x393beb){return respondWithRpcPromise(_0x0d8b('0x1a'),_['merge'](_0x5b709c['query'],_0x5b709c[_0x0d8b('0x1b')]))['then'](respondWithResult(_0x393beb,null))['catch'](handleError(_0x393beb,null));};exports['voiceChannelStopMixMonitor']=function(_0x238728,_0x2b924f){return respondWithRpcPromise(_0x0d8b('0x1c'),_[_0x0d8b('0x1d')](_0x238728[_0x0d8b('0x18')],_0x238728[_0x0d8b('0x1b')]))[_0x0d8b('0x8')](respondWithResult(_0x2b924f,null))[_0x0d8b('0xc')](handleError(_0x2b924f,null));};exports[_0x0d8b('0x1e')]=function(_0x5e5bc3,_0xe8bbee){return respondWithRpcPromise(_0x0d8b('0x1f'),_0x5e5bc3['query'])[_0x0d8b('0x8')](respondWithResult(_0xe8bbee,null))['catch'](handleError(_0xe8bbee,null));};exports[_0x0d8b('0x20')]=function(_0x234bdd,_0xa2af02){return respondWithRpcPromise('VoiceQueues',_0x234bdd['query'])[_0x0d8b('0x8')](findById(_0x234bdd[_0x0d8b('0x1b')]['id']))['then'](respondWithResult(_0xa2af02,null))[_0x0d8b('0xc')](handleError(_0xa2af02,null));};exports['updateVoiceQueue']=function(_0x1b2b59,_0x4b59e5){return respondWithRpcPromise(_0x0d8b('0x21'),_['merge'](_0x1b2b59[_0x0d8b('0x22')],_0x1b2b59['params']))[_0x0d8b('0x8')](respondWithResult(_0x4b59e5,null))['catch'](handleError(_0x4b59e5,null));};exports[_0x0d8b('0x23')]=function(_0x106e4c,_0x2c058d){return respondWithRpcPromise('VoiceQueuesPreview',_['merge'](_0x106e4c['query'],_0x106e4c[_0x0d8b('0x1b')]))['then'](respondWithResult(_0x2c058d,null))[_0x0d8b('0xc')](handleError(_0x2c058d,null));};exports['voiceQueuesChannels']=function(_0x5d05fc,_0x36017a){return respondWithRpcPromise(_0x0d8b('0x24'),_0x5d05fc[_0x0d8b('0x18')])[_0x0d8b('0x8')](respondWithResult(_0x36017a,null))[_0x0d8b('0xc')](handleError(_0x36017a,null));};exports[_0x0d8b('0x25')]=function(_0x4a99d3,_0x6f93c7){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x0d8b('0x1d')](_0x4a99d3[_0x0d8b('0x18')],_0x4a99d3['params']))[_0x0d8b('0x8')](respondWithResult(_0x6f93c7,null))[_0x0d8b('0xc')](handleError(_0x6f93c7,null));};exports[_0x0d8b('0x26')]=function(_0x4f2ed2,_0x113318){return respondWithRpcPromise(_0x0d8b('0x27'),_[_0x0d8b('0x1d')](_0x4f2ed2[_0x0d8b('0x18')],_0x4f2ed2[_0x0d8b('0x1b')]))['then'](respondWithResult(_0x113318,null))[_0x0d8b('0xc')](handleError(_0x113318,null));};exports[_0x0d8b('0x28')]=function(_0x5ad0fe,_0x1180ac){return respondWithRpcPromise(_0x0d8b('0x29'),_[_0x0d8b('0x1d')](_0x5ad0fe[_0x0d8b('0x18')],_0x5ad0fe[_0x0d8b('0x1b')]))['then'](respondWithResult(_0x1180ac,null))['catch'](handleError(_0x1180ac,null));};exports[_0x0d8b('0x2a')]=function(_0x5c2c04,_0x531c55){return respondWithRpcPromise(_0x0d8b('0x2b'),_0x5c2c04[_0x0d8b('0x18')])[_0x0d8b('0x8')](respondWithResult(_0x531c55,null))[_0x0d8b('0xc')](handleError(_0x531c55,null));};exports[_0x0d8b('0x2c')]=function(_0x24c789,_0x579324){return respondWithRpcPromise(_0x0d8b('0x2d'),_0x24c789[_0x0d8b('0x18')])[_0x0d8b('0x8')](respondWithResult(_0x579324,null))[_0x0d8b('0xc')](handleError(_0x579324,null));};exports[_0x0d8b('0x2e')]=function(_0x1a39ad,_0xf1680e){var _0x5c980b;return respondWithRpcPromise(_0x0d8b('0x2f'),_0x1a39ad[_0x0d8b('0x18')])[_0x0d8b('0x8')](function(_0x1f196d){_0x5c980b=_0x1f196d;return respondWithRpcPromise('Agents',_0x1a39ad[_0x0d8b('0x18')],routingClient);})['then'](function(_0x37b26c){return _[_0x0d8b('0x1d')]({},_0x37b26c,_0x5c980b);})[_0x0d8b('0x8')](respondWithResult(_0xf1680e,null))[_0x0d8b('0xc')](handleError(_0xf1680e,null));};exports[_0x0d8b('0x30')]=function(_0x3e632e,_0x1ff17d){if(_0x3e632e[_0x0d8b('0x22')]&&_0x3e632e[_0x0d8b('0x22')][_0x0d8b('0x31')]&&_0x3e632e['user']&&_0x3e632e['user']['name']){for(var _0x4d0811 in _0x3e632e['body'][_0x0d8b('0x31')]){if(_0x3e632e[_0x0d8b('0x22')][_0x0d8b('0x31')]['hasOwnProperty'](_0x4d0811)){db['MemberReport'][_0x0d8b('0x32')]({'where':{'channel':_0x4d0811,'membername':_0x3e632e[_0x0d8b('0x33')][_0x0d8b('0x11')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x3e632e[_0x0d8b('0x22')][_0x0d8b('0x31')][_0x4d0811]&&_0x3e632e['body']['interaction'][_0x4d0811][_0x0d8b('0x34')]?{'$notIn':_0x3e632e['body'][_0x0d8b('0x31')][_0x4d0811]}:{'$ne':null}}})['then'](function(_0x53f643){var _0x30ccee=moment()[_0x0d8b('0x35')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x5ebe8a=0x0,_0x59b8e9=_0x53f643['length'];_0x5ebe8a<_0x59b8e9;_0x5ebe8a+=0x1){_0x53f643[_0x5ebe8a][_0x0d8b('0x36')]({'exitAt':_0x30ccee});}});for(var _0x1e0498=0x0;_0x1e0498<_0x3e632e[_0x0d8b('0x22')]['interaction'][_0x4d0811][_0x0d8b('0x34')];_0x1e0498+=0x1){db[_0x0d8b('0x37')][_0x0d8b('0x38')]({'where':{'channel':_0x4d0811,'membername':_0x3e632e[_0x0d8b('0x33')][_0x0d8b('0x11')],'type':_0x0d8b('0x39'),'uniqueid':_0x3e632e[_0x0d8b('0x22')][_0x0d8b('0x31')][_0x4d0811][_0x1e0498],'exitAt':null},'defaults':{'channel':_0x4d0811,'membername':_0x3e632e[_0x0d8b('0x33')][_0x0d8b('0x11')],'interface':_[_0x0d8b('0x13')](_0x3e632e[_0x0d8b('0x33')][_0x0d8b('0x3a')])?util[_0x0d8b('0x35')](_0x0d8b('0x3b'),_0x3e632e[_0x0d8b('0x33')][_0x0d8b('0x11')]):_0x3e632e[_0x0d8b('0x33')][_0x0d8b('0x3a')],'type':'INTERACTION','enterAt':moment()[_0x0d8b('0x35')]('YYYY-MM-DD\x20HH:mm:ss'),'role':'agent','internal':_0x3e632e[_0x0d8b('0x33')][_0x0d8b('0x3c')],'uniqueid':_0x3e632e[_0x0d8b('0x22')][_0x0d8b('0x31')][_0x4d0811][_0x1e0498]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x3e632e[_0x0d8b('0x1b')]['id'],'capacity':_0x3e632e[_0x0d8b('0x22')][_0x0d8b('0x3d')]},routingClient)[_0x0d8b('0x8')](respondWithResult(_0x1ff17d,null))[_0x0d8b('0xc')](handleError(_0x1ff17d,null));};exports['telephones']=function(_0x5c0824,_0x4e4d5f){return respondWithRpcPromise('Telephones',_0x5c0824[_0x0d8b('0x18')])[_0x0d8b('0x8')](respondWithResult(_0x4e4d5f,null))['catch'](handleError(_0x4e4d5f,null));};exports['trunks']=function(_0x44c5c1,_0x3d3cb6){return respondWithRpcPromise('Trunks',_0x44c5c1['query'])[_0x0d8b('0x8')](respondWithResult(_0x3d3cb6,null))[_0x0d8b('0xc')](handleError(_0x3d3cb6,null));};exports[_0x0d8b('0x3e')]=function(_0x346c0d,_0x2d5519){return respondWithRpcPromise('Campaigns',_0x346c0d[_0x0d8b('0x18')])[_0x0d8b('0x8')](respondWithResult(_0x2d5519,null))['catch'](handleError(_0x2d5519,null));};exports['chatQueues']=function(_0xf6a773,_0x3f2d95){return respondWithRpcPromise('ChatQueues',_0xf6a773['query'],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x3f2d95,null))[_0x0d8b('0xc')](handleError(_0x3f2d95,null));};exports[_0x0d8b('0x3f')]=function(_0xb58818,_0x4a2989){return respondWithRpcPromise(_0x0d8b('0x40'),_0xb58818['query'],routingClient)['then'](findById(_0xb58818[_0x0d8b('0x1b')]['id']))[_0x0d8b('0x8')](respondWithResult(_0x4a2989,null))['catch'](handleError(_0x4a2989,null));};exports['mailQueues']=function(_0x44ed23,_0x3d7161){return respondWithRpcPromise(_0x0d8b('0x41'),_0x44ed23[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x3d7161,null))[_0x0d8b('0xc')](handleError(_0x3d7161,null));};exports[_0x0d8b('0x42')]=function(_0x3bead7,_0x5418d8){return respondWithRpcPromise(_0x0d8b('0x41'),_0x3bead7[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](findById(_0x3bead7[_0x0d8b('0x1b')]['id']))[_0x0d8b('0x8')](respondWithResult(_0x5418d8,null))[_0x0d8b('0xc')](handleError(_0x5418d8,null));};exports[_0x0d8b('0x43')]=function(_0x1c78b6,_0x375684){return respondWithRpcPromise('MailAccounts',_0x1c78b6[_0x0d8b('0x18')],mailClient)[_0x0d8b('0x8')](respondWithResult(_0x375684,null))[_0x0d8b('0xc')](handleError(_0x375684,null));};exports[_0x0d8b('0x44')]=function(_0x43ad22,_0x577951){return respondWithRpcPromise(_0x0d8b('0x45'),_0x43ad22[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x577951,null))[_0x0d8b('0xc')](handleError(_0x577951,null));};exports[_0x0d8b('0x46')]=function(_0x59ada2,_0x4d0e7c){return respondWithRpcPromise(_0x0d8b('0x45'),_0x59ada2[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](findById(_0x59ada2[_0x0d8b('0x1b')]['id']))['then'](respondWithResult(_0x4d0e7c,null))[_0x0d8b('0xc')](handleError(_0x4d0e7c,null));};exports[_0x0d8b('0x47')]=function(_0x8c0bbe,_0x5952dd){return respondWithRpcPromise(_0x0d8b('0x48'),_0x8c0bbe['query'],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x5952dd,null))[_0x0d8b('0xc')](handleError(_0x5952dd,null));};exports[_0x0d8b('0x49')]=function(_0x26ccf0,_0x2b6eb6){return respondWithRpcPromise(_0x0d8b('0x48'),_0x26ccf0['query'],routingClient)[_0x0d8b('0x8')](findById(_0x26ccf0['params']['id']))[_0x0d8b('0x8')](respondWithResult(_0x2b6eb6,null))[_0x0d8b('0xc')](handleError(_0x2b6eb6,null));};exports[_0x0d8b('0x4a')]=function(_0x33a614,_0x48025e){return respondWithRpcPromise(_0x0d8b('0x4b'),_0x33a614[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x48025e,null))[_0x0d8b('0xc')](handleError(_0x48025e,null));};exports[_0x0d8b('0x4c')]=function(_0x273aef,_0x223fd8){return respondWithRpcPromise(_0x0d8b('0x4b'),_0x273aef[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](findById(_0x273aef['params']['id']))['then'](respondWithResult(_0x223fd8,null))[_0x0d8b('0xc')](handleError(_0x223fd8,null));};exports[_0x0d8b('0x4d')]=function(_0x53e399,_0xb1aa96){return respondWithRpcPromise('FaxQueues',_0x53e399['query'],routingClient)[_0x0d8b('0x8')](respondWithResult(_0xb1aa96,null))[_0x0d8b('0xc')](handleError(_0xb1aa96,null));};exports['showFaxQueues']=function(_0x587128,_0x1900e3){return respondWithRpcPromise(_0x0d8b('0x4e'),_0x587128[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](findById(_0x587128[_0x0d8b('0x1b')]['id']))[_0x0d8b('0x8')](respondWithResult(_0x1900e3,null))[_0x0d8b('0xc')](handleError(_0x1900e3,null));};exports['faxAccounts']=function(_0x1ca60c,_0x5878c2){return respondWithRpcPromise(_0x0d8b('0x4f'),_0x1ca60c[_0x0d8b('0x18')])[_0x0d8b('0x8')](respondWithResult(_0x5878c2,null))[_0x0d8b('0xc')](handleError(_0x5878c2,null));};exports['chatQueuesWaitingInteractions']=function(_0x3fe47d,_0x4a1c4a){return respondWithRpcPromise(_0x0d8b('0x50'),_0x3fe47d[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x4a1c4a,null))[_0x0d8b('0xc')](handleError(_0x4a1c4a,null));};exports[_0x0d8b('0x51')]=function(_0x2b44e5,_0x3e927c){return respondWithRpcPromise(_0x0d8b('0x52'),_0x2b44e5[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x3e927c,null))['catch'](handleError(_0x3e927c,null));};exports[_0x0d8b('0x53')]=function(_0x54c28b,_0x3e4121){return respondWithRpcPromise(_0x0d8b('0x54'),_0x54c28b['query'],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x3e4121,null))['catch'](handleError(_0x3e4121,null));};exports[_0x0d8b('0x55')]=function(_0x445a00,_0x24f75){return respondWithRpcPromise(_0x0d8b('0x54'),_0x445a00[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](function(_0x3a073b){if(_0x445a00[_0x0d8b('0x18')]['type']!==undefined){var _0x10eca6=_(_0x3a073b[_0x0d8b('0x14')])['filter']([_0x445a00[_0x0d8b('0x18')][_0x0d8b('0x56')],_0x445a00[_0x0d8b('0x1b')]['id']])[_0x0d8b('0x57')](_0x0d8b('0x58'))[_0x0d8b('0x59')]()[_0x0d8b('0x5a')]();return _0x3a073b[_0x0d8b('0x14')][_0x0d8b('0x5b')](function(_0x5007c0){return _0x10eca6[_0x0d8b('0x5c')](_0x5007c0[_0x0d8b('0x58')])>-0x1;});}else{return _0x3a073b['rows'][_0x0d8b('0x5b')](function(_0x93fc55){return _0x93fc55[_0x0d8b('0x58')]===parseInt(_0x445a00['params']['id']);});}})['then'](respondWithResult(_0x24f75,null))[_0x0d8b('0xc')](handleError(_0x24f75,null));};exports[_0x0d8b('0x5d')]=function(_0x2c55bc,_0x5b76af){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x2c55bc[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x5b76af,null))[_0x0d8b('0xc')](handleError(_0x5b76af,null));};exports[_0x0d8b('0x5e')]=function(_0x2a2b58,_0x3f7895){return respondWithRpcPromise(_0x0d8b('0x5f'),_0x2a2b58[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x3f7895,null))[_0x0d8b('0xc')](handleError(_0x3f7895,null));};exports[_0x0d8b('0x60')]=function(_0x291336,_0x3b060e){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x291336[_0x0d8b('0x18')],routingClient)[_0x0d8b('0x8')](respondWithResult(_0x3b060e,null))['catch'](handleError(_0x3b060e,null));};exports['queueNotify']=function(_0x1a1029){return function(_0x1dad9f,_0x3573b4){var _0x14b1b8,_0x23e2e0;var _0x354208=_['capitalize'](_0x1a1029);var _0x502715=_0x1a1029==='chat'?_0x0d8b('0x61'):_0x0d8b('0x62');return db[_0x354208+_0x0d8b('0x63')][_0x0d8b('0x64')]({'raw':!![],'where':{'id':_0x1dad9f[_0x0d8b('0x1b')]['id']}})[_0x0d8b('0x8')](function(_0x5ef461){if(_[_0x0d8b('0x13')](_0x5ef461)){throw new Error(_0x354208+_0x0d8b('0x65'));}_0x14b1b8=_0x5ef461;return db[_0x354208+'Message'][_0x0d8b('0x64')]({'where':{'id':_0x1dad9f['body'][_0x0d8b('0x66')]},'include':[{'model':db[_0x354208+_0x0d8b('0x67')],'as':_0x0d8b('0x67')},{'model':db[_0x354208+_0x502715],'as':_0x0d8b('0x62')}]});})[_0x0d8b('0x8')](function(_0x8fae7f){if(_[_0x0d8b('0x13')](_0x8fae7f)){throw new Error(_0x354208+_0x0d8b('0x68'));}_0x23e2e0=_0x8fae7f;return _0x8fae7f[_0x0d8b('0x69')]({'read':0x0,'readAt':null,'UserId':null});})[_0x0d8b('0x8')](function(){var _0x276558={'uniqueid':_0x1a1029+'.'+_0x23e2e0['id']+'.'+_0x23e2e0[_0x0d8b('0x67')]['id'],'FromUserId':_0x1dad9f['user']['id'],'type':'queue'};_0x276558[_0x354208+_0x0d8b('0x6a')]=_0x23e2e0['id'];_0x276558[_0x354208+_0x0d8b('0x6b')]=_0x23e2e0[_0x0d8b('0x67')]['id'];_0x276558[_0x0d8b('0x6c')+_0x354208+_0x502715+'Id']=_0x23e2e0[_0x0d8b('0x62')]['id'];_0x276558['To'+_0x354208+_0x0d8b('0x6d')]=_0x14b1b8['id'];return db[_0x354208+_0x0d8b('0x6e')]['create'](_0x276558);})[_0x0d8b('0x8')](function(){return respondWithRpcPromise('Start',{'channel':_0x1a1029,'interaction':_0x23e2e0[_0x0d8b('0x67')],'message':_0x23e2e0,'account':_0x23e2e0['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x14b1b8[_0x0d8b('0x11')]+','+(_0x23e2e0[_0x0d8b('0x62')][_0x0d8b('0x6f')]||0x12c),'interval':_0x0d8b('0x70')}],'transfer':!![]},routingClient);})[_0x0d8b('0x8')](respondWithResult(_0x3573b4,null))[_0x0d8b('0xc')](handleError(_0x3573b4,null));};};exports[_0x0d8b('0x71')]=function(_0x180eda,_0x35267a){var _0x20a8b6,_0x3a6014;if(_[_0x0d8b('0x13')](_0x180eda['body'][_0x0d8b('0x72')])){throw new Error(_0x0d8b('0x73'));}var _0x8be77c=_0x180eda['body']['channel'];var _0x2db144=_[_0x0d8b('0x74')](_0x8be77c);var _0x36d6ca=_0x8be77c===_0x0d8b('0x75')?_0x0d8b('0x61'):_0x0d8b('0x62');return db['User'][_0x0d8b('0x64')]({'raw':!![],'where':{'id':_0x180eda[_0x0d8b('0x1b')]['id'],'role':_0x0d8b('0x76')}})[_0x0d8b('0x8')](function(_0x4350ee){if(_['isNil'](_0x4350ee)){throw new Error('Agent\x20not\x20found');}_0x20a8b6=_0x4350ee;return db[_0x2db144+_0x0d8b('0x77')][_0x0d8b('0x64')]({'where':{'id':_0x180eda[_0x0d8b('0x22')]['messageId']},'include':[{'model':db[_0x2db144+_0x0d8b('0x67')],'as':_0x0d8b('0x67')},{'model':db[_0x2db144+_0x36d6ca],'as':_0x0d8b('0x62')}]});})['then'](function(_0xb61d4b){if(_[_0x0d8b('0x13')](_0xb61d4b)){throw new Error(_0x2db144+_0x0d8b('0x68'));}_0x3a6014=_0xb61d4b;return _0xb61d4b[_0x0d8b('0x69')]({'read':0x0,'readAt':null,'UserId':null});})[_0x0d8b('0x8')](function(){var _0x150e9f={'uniqueid':_0x8be77c+'.'+_0x3a6014['id']+'.'+_0x3a6014[_0x0d8b('0x67')]['id'],'FromUserId':_0x180eda[_0x0d8b('0x33')]['id'],'type':_0x0d8b('0x76'),'ToUserId':_0x20a8b6['id']};_0x150e9f[_0x2db144+'MessageId']=_0x3a6014['id'];_0x150e9f[_0x2db144+_0x0d8b('0x6b')]=_0x3a6014[_0x0d8b('0x67')]['id'];_0x150e9f[_0x0d8b('0x6c')+_0x2db144+_0x36d6ca+'Id']=_0x3a6014[_0x0d8b('0x62')]['id'];return db[_0x2db144+_0x0d8b('0x6e')][_0x0d8b('0x78')](_0x150e9f);})[_0x0d8b('0x8')](function(){return respondWithRpcPromise(_0x0d8b('0x79'),{'channel':_0x8be77c,'interaction':_0x3a6014[_0x0d8b('0x67')],'message':_0x3a6014,'account':_0x3a6014['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x20a8b6[_0x0d8b('0x11')]+','+(_0x3a6014[_0x0d8b('0x62')][_0x0d8b('0x7a')]||0x12c),'interval':_0x0d8b('0x70')}],'transfer':!![]},routingClient);})['then'](respondWithResult(_0x35267a,null))[_0x0d8b('0xc')](handleError(_0x35267a,null));};
\ No newline at end of file
+var _0xb10b=['showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','Website','Account','Queue','\x20Queue\x20not\x20found','Message','findOne','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','QueueId','TransferReport','create','*,*,*,*','agentNotify','channel','chat','User','Agent\x20not\x20found','Start','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','api','jayson/promise','client','http','request','then','error','message','result','status','json','stack','name','send','isNil','rows','find','voiceChannels','query','catch','voiceChannelMixMonitor','merge','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','params','voiceQueues','showVoiceQueues','VoiceQueues','UpdateVoiceQueue','body','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','MemberReport','findOrCreate','SIP/%s','interface','agent','AgentCapacity','capacity','telephones','Telephones','trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','faxQueues','FaxQueues'];(function(_0x39531c,_0x4e4dfb){var _0x9dfc07=function(_0x419fb9){while(--_0x419fb9){_0x39531c['push'](_0x39531c['shift']());}};_0x9dfc07(++_0x4e4dfb);}(_0xb10b,0x12a));var _0xbb10=function(_0x15d21f,_0x10997d){_0x15d21f=_0x15d21f-0x0;var _0x50b48d=_0xb10b[_0x15d21f];return _0x50b48d;};'use strict';var BPromise=require(_0xbb10('0x0'));var moment=require('moment');var _=require(_0xbb10('0x1'));var util=require(_0xbb10('0x2'));var db=require(_0xbb10('0x3'))['db'];var logger=require('../../config/logger')(_0xbb10('0x4'));var jayson=require(_0xbb10('0x5'));var amiClient=jayson[_0xbb10('0x6')][_0xbb10('0x7')]({'port':0x232a});var mailClient=jayson[_0xbb10('0x6')][_0xbb10('0x7')]({'port':0x232b});var routingClient=jayson['client'][_0xbb10('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){var _0x1c3ee5=_0x1b9e94?_0x1b9e94:amiClient;return _0x1c3ee5[_0xbb10('0x8')](_0x3cdd53,_0x513741)[_0xbb10('0x9')](function(_0x229887){if(_0x229887[_0xbb10('0xa')]){if(_0x229887['error']['code']===0x1f4){return _0x21370f(_0x229887[_0xbb10('0xa')][_0xbb10('0xb')]);}return _0x3fb675(_0x229887[_0xbb10('0xa')]['message']);}else{_0x3fb675(_0x229887[_0xbb10('0xc')]);}})['catch'](function(_0x44fb19){_0x21370f(_0x44fb19);});});}function respondWithResult(_0x916a32,_0x285009){_0x285009=_0x285009||0xc8;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0xd')](_0x285009)[_0xbb10('0xe')](_0x193a27);}return _0x916a32['sendStatus'](0x194);};}function handleError(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0x1f4;return function(_0x45b9d6){logger[_0xbb10('0xa')](_0x45b9d6[_0xbb10('0xf')]);if(_0x45b9d6[_0xbb10('0x10')]){delete _0x45b9d6[_0xbb10('0x10')];}_0x26e021[_0xbb10('0xd')](_0x42d7e4)[_0xbb10('0x11')](_0x45b9d6);};}function findById(_0x2b184e){return function(_0x4a2bfc){if(!_[_0xbb10('0x12')](_0x2b184e)&&!_[_0xbb10('0x12')](_0x4a2bfc)&&!_[_0xbb10('0x12')](_0x4a2bfc[_0xbb10('0x13')])){return _[_0xbb10('0x14')](_0x4a2bfc[_0xbb10('0x13')],function(_0x575cca){return _0x575cca['id']==_0x2b184e;});}return null;};}exports[_0xbb10('0x15')]=function(_0xbf2906,_0xe1c665){return respondWithRpcPromise('VoiceChannels',_0xbf2906[_0xbb10('0x16')])[_0xbb10('0x9')](respondWithResult(_0xe1c665,null))[_0xbb10('0x17')](handleError(_0xe1c665,null));};exports[_0xbb10('0x18')]=function(_0xdf237d,_0x44e563){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0xbb10('0x19')](_0xdf237d[_0xbb10('0x16')],_0xdf237d['params']))['then'](respondWithResult(_0x44e563,null))[_0xbb10('0x17')](handleError(_0x44e563,null));};exports[_0xbb10('0x1a')]=function(_0x2e911d,_0x317da4){return respondWithRpcPromise(_0xbb10('0x1b'),_[_0xbb10('0x19')](_0x2e911d[_0xbb10('0x16')],_0x2e911d[_0xbb10('0x1c')]))[_0xbb10('0x9')](respondWithResult(_0x317da4,null))[_0xbb10('0x17')](handleError(_0x317da4,null));};exports[_0xbb10('0x1d')]=function(_0x26ad93,_0x537898){return respondWithRpcPromise('VoiceQueues',_0x26ad93['query'])[_0xbb10('0x9')](respondWithResult(_0x537898,null))[_0xbb10('0x17')](handleError(_0x537898,null));};exports[_0xbb10('0x1e')]=function(_0x4e25ff,_0x2fdde9){return respondWithRpcPromise(_0xbb10('0x1f'),_0x4e25ff[_0xbb10('0x16')])[_0xbb10('0x9')](findById(_0x4e25ff[_0xbb10('0x1c')]['id']))[_0xbb10('0x9')](respondWithResult(_0x2fdde9,null))[_0xbb10('0x17')](handleError(_0x2fdde9,null));};exports['updateVoiceQueue']=function(_0x3796c7,_0x21ac54){return respondWithRpcPromise(_0xbb10('0x20'),_[_0xbb10('0x19')](_0x3796c7[_0xbb10('0x21')],_0x3796c7[_0xbb10('0x1c')]))['then'](respondWithResult(_0x21ac54,null))[_0xbb10('0x17')](handleError(_0x21ac54,null));};exports['voiceQueuesPreview']=function(_0x448d5c,_0x56f2da){return respondWithRpcPromise(_0xbb10('0x22'),_[_0xbb10('0x19')](_0x448d5c[_0xbb10('0x16')],_0x448d5c['params']))['then'](respondWithResult(_0x56f2da,null))[_0xbb10('0x17')](handleError(_0x56f2da,null));};exports[_0xbb10('0x23')]=function(_0x4f590d,_0x359ad4){return respondWithRpcPromise(_0xbb10('0x24'),_0x4f590d[_0xbb10('0x16')])[_0xbb10('0x9')](respondWithResult(_0x359ad4,null))[_0xbb10('0x17')](handleError(_0x359ad4,null));};exports[_0xbb10('0x25')]=function(_0xf85197,_0x4975f5){return respondWithRpcPromise(_0xbb10('0x26'),_[_0xbb10('0x19')](_0xf85197[_0xbb10('0x16')],_0xf85197[_0xbb10('0x1c')]))[_0xbb10('0x9')](respondWithResult(_0x4975f5,null))[_0xbb10('0x17')](handleError(_0x4975f5,null));};exports[_0xbb10('0x27')]=function(_0x10202c,_0x3c8d7d){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0xbb10('0x19')](_0x10202c[_0xbb10('0x16')],_0x10202c[_0xbb10('0x1c')]))[_0xbb10('0x9')](respondWithResult(_0x3c8d7d,null))['catch'](handleError(_0x3c8d7d,null));};exports[_0xbb10('0x28')]=function(_0x5de37b,_0x4e2754){return respondWithRpcPromise(_0xbb10('0x29'),_[_0xbb10('0x19')](_0x5de37b[_0xbb10('0x16')],_0x5de37b[_0xbb10('0x1c')]))[_0xbb10('0x9')](respondWithResult(_0x4e2754,null))[_0xbb10('0x17')](handleError(_0x4e2754,null));};exports['outbound']=function(_0x1e5bbd,_0x25d72f){return respondWithRpcPromise('Outbound',_0x1e5bbd['query'])['then'](respondWithResult(_0x25d72f,null))[_0xbb10('0x17')](handleError(_0x25d72f,null));};exports[_0xbb10('0x2a')]=function(_0x2b658a,_0x4d5a9b){return respondWithRpcPromise(_0xbb10('0x2b'),_0x2b658a[_0xbb10('0x16')])[_0xbb10('0x9')](respondWithResult(_0x4d5a9b,null))['catch'](handleError(_0x4d5a9b,null));};exports[_0xbb10('0x2c')]=function(_0x12238a,_0x1dcd38){var _0x446f49;return respondWithRpcPromise('Agents',_0x12238a[_0xbb10('0x16')])[_0xbb10('0x9')](function(_0x5835fd){_0x446f49=_0x5835fd;return respondWithRpcPromise(_0xbb10('0x2d'),_0x12238a[_0xbb10('0x16')],routingClient);})[_0xbb10('0x9')](function(_0x3a9934){return _[_0xbb10('0x19')]({},_0x3a9934,_0x446f49);})[_0xbb10('0x9')](respondWithResult(_0x1dcd38,null))['catch'](handleError(_0x1dcd38,null));};exports[_0xbb10('0x2e')]=function(_0x1c7fae,_0x3e7b4c){if(_0x1c7fae[_0xbb10('0x21')]&&_0x1c7fae['body'][_0xbb10('0x2f')]&&_0x1c7fae[_0xbb10('0x30')]&&_0x1c7fae[_0xbb10('0x30')][_0xbb10('0x10')]){for(var _0x5e2cfa in _0x1c7fae[_0xbb10('0x21')][_0xbb10('0x2f')]){if(_0x1c7fae['body']['interaction'][_0xbb10('0x31')](_0x5e2cfa)){db['MemberReport'][_0xbb10('0x32')]({'where':{'channel':_0x5e2cfa,'membername':_0x1c7fae[_0xbb10('0x30')]['name'],'type':_0xbb10('0x33'),'exitAt':null,'uniqueid':_0x1c7fae[_0xbb10('0x21')][_0xbb10('0x2f')][_0x5e2cfa]&&_0x1c7fae['body'][_0xbb10('0x2f')][_0x5e2cfa][_0xbb10('0x34')]?{'$notIn':_0x1c7fae[_0xbb10('0x21')][_0xbb10('0x2f')][_0x5e2cfa]}:{'$ne':null}}})[_0xbb10('0x9')](function(_0x19f94d){var _0x190781=moment()[_0xbb10('0x35')](_0xbb10('0x36'));for(var _0x43b948=0x0,_0x197871=_0x19f94d[_0xbb10('0x34')];_0x43b948<_0x197871;_0x43b948+=0x1){_0x19f94d[_0x43b948]['updateAttributes']({'exitAt':_0x190781});}});for(var _0x426b95=0x0;_0x426b95<_0x1c7fae[_0xbb10('0x21')]['interaction'][_0x5e2cfa][_0xbb10('0x34')];_0x426b95+=0x1){db[_0xbb10('0x37')][_0xbb10('0x38')]({'where':{'channel':_0x5e2cfa,'membername':_0x1c7fae[_0xbb10('0x30')][_0xbb10('0x10')],'type':_0xbb10('0x33'),'uniqueid':_0x1c7fae[_0xbb10('0x21')]['interaction'][_0x5e2cfa][_0x426b95],'exitAt':null},'defaults':{'channel':_0x5e2cfa,'membername':_0x1c7fae['user'][_0xbb10('0x10')],'interface':_[_0xbb10('0x12')](_0x1c7fae[_0xbb10('0x30')]['interface'])?util['format'](_0xbb10('0x39'),_0x1c7fae[_0xbb10('0x30')][_0xbb10('0x10')]):_0x1c7fae[_0xbb10('0x30')][_0xbb10('0x3a')],'type':_0xbb10('0x33'),'enterAt':moment()[_0xbb10('0x35')](_0xbb10('0x36')),'role':_0xbb10('0x3b'),'internal':_0x1c7fae[_0xbb10('0x30')]['internal'],'uniqueid':_0x1c7fae['body'][_0xbb10('0x2f')][_0x5e2cfa][_0x426b95]}});}}}}return respondWithRpcPromise(_0xbb10('0x3c'),{'id':_0x1c7fae[_0xbb10('0x1c')]['id'],'capacity':_0x1c7fae[_0xbb10('0x21')][_0xbb10('0x3d')]},routingClient)[_0xbb10('0x9')](respondWithResult(_0x3e7b4c,null))[_0xbb10('0x17')](handleError(_0x3e7b4c,null));};exports[_0xbb10('0x3e')]=function(_0x1c0d8f,_0x1214f7){return respondWithRpcPromise(_0xbb10('0x3f'),_0x1c0d8f[_0xbb10('0x16')])[_0xbb10('0x9')](respondWithResult(_0x1214f7,null))[_0xbb10('0x17')](handleError(_0x1214f7,null));};exports[_0xbb10('0x40')]=function(_0x547a7a,_0x124052){return respondWithRpcPromise('Trunks',_0x547a7a[_0xbb10('0x16')])[_0xbb10('0x9')](respondWithResult(_0x124052,null))[_0xbb10('0x17')](handleError(_0x124052,null));};exports[_0xbb10('0x41')]=function(_0x26e66e,_0x32d8e9){return respondWithRpcPromise(_0xbb10('0x42'),_0x26e66e[_0xbb10('0x16')])[_0xbb10('0x9')](respondWithResult(_0x32d8e9,null))[_0xbb10('0x17')](handleError(_0x32d8e9,null));};exports[_0xbb10('0x43')]=function(_0x1c2dce,_0x1d49e1){return respondWithRpcPromise(_0xbb10('0x44'),_0x1c2dce[_0xbb10('0x16')],routingClient)['then'](respondWithResult(_0x1d49e1,null))[_0xbb10('0x17')](handleError(_0x1d49e1,null));};exports[_0xbb10('0x45')]=function(_0x1b83a9,_0x4ce8e7){return respondWithRpcPromise(_0xbb10('0x44'),_0x1b83a9[_0xbb10('0x16')],routingClient)['then'](findById(_0x1b83a9[_0xbb10('0x1c')]['id']))[_0xbb10('0x9')](respondWithResult(_0x4ce8e7,null))[_0xbb10('0x17')](handleError(_0x4ce8e7,null));};exports[_0xbb10('0x46')]=function(_0x432728,_0x22de7f){return respondWithRpcPromise(_0xbb10('0x47'),_0x432728[_0xbb10('0x16')],routingClient)[_0xbb10('0x9')](respondWithResult(_0x22de7f,null))[_0xbb10('0x17')](handleError(_0x22de7f,null));};exports[_0xbb10('0x48')]=function(_0x2a1ce1,_0x16932f){return respondWithRpcPromise('MailQueues',_0x2a1ce1['query'],routingClient)[_0xbb10('0x9')](findById(_0x2a1ce1[_0xbb10('0x1c')]['id']))[_0xbb10('0x9')](respondWithResult(_0x16932f,null))[_0xbb10('0x17')](handleError(_0x16932f,null));};exports['mailAccounts']=function(_0x506498,_0x79411e){return respondWithRpcPromise(_0xbb10('0x49'),_0x506498[_0xbb10('0x16')],mailClient)[_0xbb10('0x9')](respondWithResult(_0x79411e,null))[_0xbb10('0x17')](handleError(_0x79411e,null));};exports[_0xbb10('0x4a')]=function(_0x45c0dc,_0x4a5fb9){return respondWithRpcPromise(_0xbb10('0x4b'),_0x45c0dc[_0xbb10('0x16')],routingClient)['then'](respondWithResult(_0x4a5fb9,null))['catch'](handleError(_0x4a5fb9,null));};exports['showOpenchannelQueues']=function(_0x32c1e8,_0x31c727){return respondWithRpcPromise(_0xbb10('0x4b'),_0x32c1e8['query'],routingClient)['then'](findById(_0x32c1e8['params']['id']))[_0xbb10('0x9')](respondWithResult(_0x31c727,null))[_0xbb10('0x17')](handleError(_0x31c727,null));};exports[_0xbb10('0x4c')]=function(_0x4e9fbd,_0xa1bbd9){return respondWithRpcPromise(_0xbb10('0x4d'),_0x4e9fbd['query'],routingClient)['then'](respondWithResult(_0xa1bbd9,null))[_0xbb10('0x17')](handleError(_0xa1bbd9,null));};exports[_0xbb10('0x4e')]=function(_0xd77753,_0x237246){return respondWithRpcPromise('SmsQueues',_0xd77753[_0xbb10('0x16')],routingClient)[_0xbb10('0x9')](findById(_0xd77753[_0xbb10('0x1c')]['id']))['then'](respondWithResult(_0x237246,null))[_0xbb10('0x17')](handleError(_0x237246,null));};exports[_0xbb10('0x4f')]=function(_0x3e3617,_0x5b2bd4){return respondWithRpcPromise(_0xbb10('0x50'),_0x3e3617[_0xbb10('0x16')],routingClient)[_0xbb10('0x9')](respondWithResult(_0x5b2bd4,null))[_0xbb10('0x17')](handleError(_0x5b2bd4,null));};exports['showWhatsappQueues']=function(_0x251417,_0x258e55){return respondWithRpcPromise(_0xbb10('0x50'),_0x251417[_0xbb10('0x16')],routingClient)['then'](findById(_0x251417[_0xbb10('0x1c')]['id']))[_0xbb10('0x9')](respondWithResult(_0x258e55,null))[_0xbb10('0x17')](handleError(_0x258e55,null));};exports[_0xbb10('0x51')]=function(_0x12f750,_0x17807e){return respondWithRpcPromise(_0xbb10('0x52'),_0x12f750['query'],routingClient)['then'](respondWithResult(_0x17807e,null))['catch'](handleError(_0x17807e,null));};exports[_0xbb10('0x53')]=function(_0x9c672d,_0x3eda96){return respondWithRpcPromise('FaxQueues',_0x9c672d['query'],routingClient)[_0xbb10('0x9')](findById(_0x9c672d[_0xbb10('0x1c')]['id']))[_0xbb10('0x9')](respondWithResult(_0x3eda96,null))[_0xbb10('0x17')](handleError(_0x3eda96,null));};exports[_0xbb10('0x54')]=function(_0x1ad2ed,_0x4cf2f3){return respondWithRpcPromise(_0xbb10('0x55'),_0x1ad2ed[_0xbb10('0x16')])[_0xbb10('0x9')](respondWithResult(_0x4cf2f3,null))[_0xbb10('0x17')](handleError(_0x4cf2f3,null));};exports[_0xbb10('0x56')]=function(_0x5bfc68,_0x56094a){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x5bfc68[_0xbb10('0x16')],routingClient)[_0xbb10('0x9')](respondWithResult(_0x56094a,null))[_0xbb10('0x17')](handleError(_0x56094a,null));};exports[_0xbb10('0x57')]=function(_0x2f7d2a,_0x1d40b8){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x2f7d2a[_0xbb10('0x16')],routingClient)['then'](respondWithResult(_0x1d40b8,null))['catch'](handleError(_0x1d40b8,null));};exports['openchannelQueuesWaitingInteractions']=function(_0xdf634f,_0x13040d){return respondWithRpcPromise(_0xbb10('0x58'),_0xdf634f[_0xbb10('0x16')],routingClient)['then'](respondWithResult(_0x13040d,null))[_0xbb10('0x17')](handleError(_0x13040d,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x576179,_0x165fe9){return respondWithRpcPromise(_0xbb10('0x58'),_0x576179[_0xbb10('0x16')],routingClient)[_0xbb10('0x9')](function(_0xfa3c7c){if(_0x576179['query'][_0xbb10('0x59')]!==undefined){var _0x19fcec=_(_0xfa3c7c[_0xbb10('0x13')])[_0xbb10('0x5a')]([_0x576179[_0xbb10('0x16')][_0xbb10('0x59')],_0x576179[_0xbb10('0x1c')]['id']])['map'](_0xbb10('0x5b'))[_0xbb10('0x5c')]()[_0xbb10('0x5d')]();return _0xfa3c7c[_0xbb10('0x13')][_0xbb10('0x5a')](function(_0x172be3){return _0x19fcec[_0xbb10('0x5e')](_0x172be3[_0xbb10('0x5b')])>-0x1;});}else{return _0xfa3c7c['rows'][_0xbb10('0x5a')](function(_0x218690){return _0x218690[_0xbb10('0x5b')]===parseInt(_0x576179['params']['id']);});}})['then'](respondWithResult(_0x165fe9,null))['catch'](handleError(_0x165fe9,null));};exports[_0xbb10('0x5f')]=function(_0x5a3c44,_0x4e3d6a){return respondWithRpcPromise(_0xbb10('0x60'),_0x5a3c44[_0xbb10('0x16')],routingClient)[_0xbb10('0x9')](respondWithResult(_0x4e3d6a,null))[_0xbb10('0x17')](handleError(_0x4e3d6a,null));};exports[_0xbb10('0x61')]=function(_0x24dca6,_0x33116){return respondWithRpcPromise(_0xbb10('0x62'),_0x24dca6[_0xbb10('0x16')],routingClient)['then'](respondWithResult(_0x33116,null))[_0xbb10('0x17')](handleError(_0x33116,null));};exports[_0xbb10('0x63')]=function(_0x46b6d2,_0x35b811){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x46b6d2['query'],routingClient)[_0xbb10('0x9')](respondWithResult(_0x35b811,null))[_0xbb10('0x17')](handleError(_0x35b811,null));};exports[_0xbb10('0x64')]=function(_0x32bb25){return function(_0x5ee705,_0x17d596){var _0x275bce,_0x3f0d74;var _0xf7b3e1=_[_0xbb10('0x65')](_0x32bb25);var _0x517185=_0x32bb25==='chat'?_0xbb10('0x66'):_0xbb10('0x67');return db[_0xf7b3e1+_0xbb10('0x68')]['findOne']({'raw':!![],'where':{'id':_0x5ee705[_0xbb10('0x1c')]['id']}})[_0xbb10('0x9')](function(_0x50bcc9){if(_['isNil'](_0x50bcc9)){throw new Error(_0xf7b3e1+_0xbb10('0x69'));}_0x275bce=_0x50bcc9;return db[_0xf7b3e1+_0xbb10('0x6a')][_0xbb10('0x6b')]({'where':{'id':_0x5ee705['body'][_0xbb10('0x6c')]},'include':[{'model':db[_0xf7b3e1+_0xbb10('0x6d')],'as':_0xbb10('0x6d')},{'model':db[_0xf7b3e1+_0x517185],'as':_0xbb10('0x67')}]});})[_0xbb10('0x9')](function(_0x5de006){if(_[_0xbb10('0x12')](_0x5de006)){throw new Error(_0xf7b3e1+_0xbb10('0x6e'));}_0x3f0d74=_0x5de006;return _0x5de006[_0xbb10('0x6f')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x3367d4={'uniqueid':_0x32bb25+'.'+_0x3f0d74['id']+'.'+_0x3f0d74[_0xbb10('0x6d')]['id'],'FromUserId':_0x5ee705[_0xbb10('0x30')]['id'],'type':_0xbb10('0x70')};_0x3367d4[_0xf7b3e1+_0xbb10('0x71')]=_0x3f0d74['id'];_0x3367d4[_0xf7b3e1+_0xbb10('0x72')]=_0x3f0d74[_0xbb10('0x6d')]['id'];_0x3367d4[_0xbb10('0x73')+_0xf7b3e1+_0x517185+'Id']=_0x3f0d74[_0xbb10('0x67')]['id'];_0x3367d4['To'+_0xf7b3e1+_0xbb10('0x74')]=_0x275bce['id'];return db[_0xf7b3e1+_0xbb10('0x75')][_0xbb10('0x76')](_0x3367d4);})['then'](function(){return respondWithRpcPromise('Start',{'channel':_0x32bb25,'interaction':_0x3f0d74[_0xbb10('0x6d')],'message':_0x3f0d74,'account':_0x3f0d74[_0xbb10('0x67')],'applications':[{'id':0x0,'priority':0x1,'app':_0xbb10('0x70'),'appdata':_0x275bce[_0xbb10('0x10')]+','+(_0x3f0d74[_0xbb10('0x67')]['queueTransferTimeout']||0x12c),'interval':_0xbb10('0x77')}],'transfer':!![]},routingClient);})[_0xbb10('0x9')](respondWithResult(_0x17d596,null))[_0xbb10('0x17')](handleError(_0x17d596,null));};};exports[_0xbb10('0x78')]=function(_0x19694d,_0x379d49){var _0x546db5,_0xb25e71;if(_[_0xbb10('0x12')](_0x19694d['body'][_0xbb10('0x79')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0xc53c87=_0x19694d[_0xbb10('0x21')][_0xbb10('0x79')];var _0xa99bf5=_[_0xbb10('0x65')](_0xc53c87);var _0x556d7b=_0xc53c87===_0xbb10('0x7a')?'Website':_0xbb10('0x67');return db[_0xbb10('0x7b')]['findOne']({'raw':!![],'where':{'id':_0x19694d['params']['id'],'role':_0xbb10('0x3b')}})[_0xbb10('0x9')](function(_0x1b77c2){if(_[_0xbb10('0x12')](_0x1b77c2)){throw new Error(_0xbb10('0x7c'));}_0x546db5=_0x1b77c2;return db[_0xa99bf5+_0xbb10('0x6a')][_0xbb10('0x6b')]({'where':{'id':_0x19694d[_0xbb10('0x21')][_0xbb10('0x6c')]},'include':[{'model':db[_0xa99bf5+_0xbb10('0x6d')],'as':_0xbb10('0x6d')},{'model':db[_0xa99bf5+_0x556d7b],'as':'Account'}]});})[_0xbb10('0x9')](function(_0x3eeceb){if(_[_0xbb10('0x12')](_0x3eeceb)){throw new Error(_0xa99bf5+_0xbb10('0x6e'));}_0xb25e71=_0x3eeceb;return _0x3eeceb[_0xbb10('0x6f')]({'read':0x0,'readAt':null,'UserId':null});})[_0xbb10('0x9')](function(){var _0xfefa17={'uniqueid':_0xc53c87+'.'+_0xb25e71['id']+'.'+_0xb25e71[_0xbb10('0x6d')]['id'],'FromUserId':_0x19694d[_0xbb10('0x30')]['id'],'type':_0xbb10('0x3b'),'ToUserId':_0x546db5['id']};_0xfefa17[_0xa99bf5+_0xbb10('0x71')]=_0xb25e71['id'];_0xfefa17[_0xa99bf5+_0xbb10('0x72')]=_0xb25e71['Interaction']['id'];_0xfefa17[_0xbb10('0x73')+_0xa99bf5+_0x556d7b+'Id']=_0xb25e71['Account']['id'];return db[_0xa99bf5+_0xbb10('0x75')][_0xbb10('0x76')](_0xfefa17);})[_0xbb10('0x9')](function(){return respondWithRpcPromise(_0xbb10('0x7d'),{'channel':_0xc53c87,'interaction':_0xb25e71[_0xbb10('0x6d')],'message':_0xb25e71,'account':_0xb25e71['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0xbb10('0x3b'),'appdata':_0x546db5[_0xbb10('0x10')]+','+(_0xb25e71[_0xbb10('0x67')][_0xbb10('0x7e')]||0x12c),'interval':_0xbb10('0x77')}],'transfer':!![]},routingClient);})[_0xbb10('0x9')](respondWithResult(_0x379d49,null))['catch'](handleError(_0x379d49,null));};
\ No newline at end of file
index d31505e..9cb8533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5119=['util','path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','show','/:id/run','run','post','create','put','/:id','update','delete','exports','multer'];(function(_0x36f243,_0x188505){var _0x426436=function(_0x1c8622){while(--_0x1c8622){_0x36f243['push'](_0x36f243['shift']());}};_0x426436(++_0x188505);}(_0x5119,0x153));var _0x9511=function(_0x4ed786,_0x74f270){_0x4ed786=_0x4ed786-0x0;var _0x2f0243=_0x5119[_0x4ed786];return _0x2f0243;};'use strict';var multer=require(_0x9511('0x0'));var util=require(_0x9511('0x1'));var path=require(_0x9511('0x2'));var timeout=require('connect-timeout');var express=require(_0x9511('0x3'));var router=express[_0x9511('0x4')]();var fs_extra=require(_0x9511('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9511('0x6'));var config=require('../../config/environment');var controller=require('./schedule.controller');router[_0x9511('0x7')]('/',auth[_0x9511('0x8')](),controller[_0x9511('0x9')]);router[_0x9511('0x7')]('/:id',auth[_0x9511('0x8')](),controller[_0x9511('0xa')]);router[_0x9511('0x7')](_0x9511('0xb'),auth[_0x9511('0x8')](),controller[_0x9511('0xc')]);router[_0x9511('0xd')]('/',auth[_0x9511('0x8')](),controller[_0x9511('0xe')]);router[_0x9511('0xf')](_0x9511('0x10'),auth[_0x9511('0x8')](),controller[_0x9511('0x11')]);router[_0x9511('0x12')](_0x9511('0x10'),auth[_0x9511('0x8')](),controller['destroy']);module[_0x9511('0x13')]=router;
\ No newline at end of file
+var _0x97d9=['post','create','put','/:id','delete','destroy','multer','util','path','connect-timeout','express','../../components/interaction/service','./schedule.controller','isAuthenticated','index','show','get','/:id/run','run'];(function(_0x36977a,_0x163325){var _0x12d782=function(_0x3e84f1){while(--_0x3e84f1){_0x36977a['push'](_0x36977a['shift']());}};_0x12d782(++_0x163325);}(_0x97d9,0x123));var _0x997d=function(_0x3994fb,_0x3568b7){_0x3994fb=_0x3994fb-0x0;var _0x5dadac=_0x97d9[_0x3994fb];return _0x5dadac;};'use strict';var multer=require(_0x997d('0x0'));var util=require(_0x997d('0x1'));var path=require(_0x997d('0x2'));var timeout=require(_0x997d('0x3'));var express=require(_0x997d('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x997d('0x5'));var config=require('../../config/environment');var controller=require(_0x997d('0x6'));router['get']('/',auth[_0x997d('0x7')](),controller[_0x997d('0x8')]);router['get']('/:id',auth[_0x997d('0x7')](),controller[_0x997d('0x9')]);router[_0x997d('0xa')](_0x997d('0xb'),auth['isAuthenticated'](),controller[_0x997d('0xc')]);router[_0x997d('0xd')]('/',auth[_0x997d('0x7')](),controller[_0x997d('0xe')]);router[_0x997d('0xf')](_0x997d('0x10'),auth['isAuthenticated'](),controller['update']);router[_0x997d('0x11')](_0x997d('0x10'),auth[_0x997d('0x7')](),controller[_0x997d('0x12')]);module['exports']=router;
\ No newline at end of file
index d2ce6fd..ff15f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb94c=['STRING','BOOLEAN','DATE','ENUM','quarters','months','weeks','days','hours','minutes','csv','xlsx','custom','default','TEXT','sequelize','exports'];(function(_0x53473d,_0x2dbd22){var _0x251f3b=function(_0x2a9799){while(--_0x2a9799){_0x53473d['push'](_0x53473d['shift']());}};_0x251f3b(++_0x2dbd22);}(_0xb94c,0x163));var _0xcb94=function(_0x28ec4b,_0x26ad3c){_0x28ec4b=_0x28ec4b-0x0;var _0x331c9e=_0xb94c[_0x28ec4b];return _0x331c9e;};'use strict';var Sequelize=require(_0xcb94('0x0'));module[_0xcb94('0x1')]={'name':{'type':Sequelize[_0xcb94('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xcb94('0x2')]},'active':{'type':Sequelize[_0xcb94('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xcb94('0x2')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0xcb94('0x4')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xcb94('0x5')]('years',_0xcb94('0x6'),_0xcb94('0x7'),_0xcb94('0x8'),_0xcb94('0x9'),_0xcb94('0xa'),_0xcb94('0xb')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0xcb94('0x5')](_0xcb94('0xc'),'pdf',_0xcb94('0xd')),'allowNull':![],'defaultValue':_0xcb94('0xc')},'type':{'type':Sequelize[_0xcb94('0x5')](_0xcb94('0xe'),_0xcb94('0xf')),'allowNull':![],'defaultValue':_0xcb94('0xe')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xcb94('0x10')]},'bcc':{'type':Sequelize[_0xcb94('0x10')]},'sendIfEmpty':{'type':Sequelize[_0xcb94('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xba31=['INTEGER','years','quarters','months','days','hours','minutes','ENUM','csv','pdf','xlsx','custom','default','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE'];(function(_0x312366,_0x424610){var _0x58fc7a=function(_0x20243d){while(--_0x20243d){_0x312366['push'](_0x312366['shift']());}};_0x58fc7a(++_0x424610);}(_0xba31,0x176));var _0x1ba3=function(_0x22c684,_0x753309){_0x22c684=_0x22c684-0x0;var _0x39fcbb=_0xba31[_0x22c684];return _0x39fcbb;};'use strict';var Sequelize=require(_0x1ba3('0x0'));module[_0x1ba3('0x1')]={'name':{'type':Sequelize[_0x1ba3('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x1ba3('0x2')]},'active':{'type':Sequelize[_0x1ba3('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x1ba3('0x2')],'allowNull':![],'defaultValue':_0x1ba3('0x4')},'startAt':{'type':Sequelize[_0x1ba3('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x1ba3('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x1ba3('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x1ba3('0x7'),_0x1ba3('0x8'),_0x1ba3('0x9'),'weeks',_0x1ba3('0xa'),_0x1ba3('0xb'),_0x1ba3('0xc')),'allowNull':![],'defaultValue':_0x1ba3('0xa')},'output':{'type':Sequelize[_0x1ba3('0xd')](_0x1ba3('0xe'),_0x1ba3('0xf'),_0x1ba3('0x10')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x1ba3('0xd')](_0x1ba3('0x11'),_0x1ba3('0x12')),'allowNull':![],'defaultValue':_0x1ba3('0x11')},'sendMail':{'type':Sequelize[_0x1ba3('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x1ba3('0x13')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index dd89ea7..7176cba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb984=['type','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','rows','show','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','params','../../config/schedule','run','eml-format','rimraf','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','Scheduler','UserProfileResource','name','send','map','Schedule','rawAttributes','fieldName'];(function(_0x245c42,_0x1953e7){var _0x243649=function(_0x41d30e){while(--_0x41d30e){_0x245c42['push'](_0x245c42['shift']());}};_0x243649(++_0x1953e7);}(_0xb984,0xca));var _0x4b98=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xb984[_0x4154a6];return _0x3b2786;};'use strict';var emlformat=require(_0x4b98('0x0'));var rimraf=require(_0x4b98('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4b98('0x2'));var moment=require('moment');var BPromise=require(_0x4b98('0x3'));var Mustache=require(_0x4b98('0x4'));var util=require(_0x4b98('0x5'));var path=require('path');var sox=require(_0x4b98('0x6'));var csv=require(_0x4b98('0x7'));var ejs=require(_0x4b98('0x8'));var fs=require('fs');var fs_extra=require(_0x4b98('0x9'));var _=require(_0x4b98('0xa'));var squel=require(_0x4b98('0xb'));var crypto=require('crypto');var jsforce=require(_0x4b98('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4b98('0xd'));var Papa=require(_0x4b98('0xe'));var Redis=require(_0x4b98('0xf'));var authService=require(_0x4b98('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x4b98('0x11'));var hardwareService=require(_0x4b98('0x12'));var logger=require(_0x4b98('0x13'))(_0x4b98('0x14'));var utils=require(_0x4b98('0x15'));var config=require(_0x4b98('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x4b98('0x17'))['db'];function respondWithStatusCode(_0x2a393b,_0x273133){_0x273133=_0x273133||0xcc;return function(_0x188466){if(_0x188466){return _0x2a393b[_0x4b98('0x18')](_0x273133);}return _0x2a393b[_0x4b98('0x19')](_0x273133)[_0x4b98('0x1a')]();};}function respondWithResult(_0x25b656,_0x20fdb3){_0x20fdb3=_0x20fdb3||0xc8;return function(_0x151385){if(_0x151385){return _0x25b656['status'](_0x20fdb3)[_0x4b98('0x1b')](_0x151385);}};}function respondWithFilteredResult(_0x8049cd,_0x263608){return function(_0x3b4971){if(_0x3b4971){var _0x26d112=typeof _0x263608[_0x4b98('0x1c')]===_0x4b98('0x1d')&&typeof _0x263608[_0x4b98('0x1e')]===_0x4b98('0x1d');var _0x5a5435=_0x3b4971[_0x4b98('0x1f')];var _0x171d3e=_0x26d112?0x0:_0x263608[_0x4b98('0x1c')];var _0x47a17d=_0x26d112?_0x3b4971[_0x4b98('0x1f')]:_0x263608[_0x4b98('0x1c')]+_0x263608['limit'];var _0x35f5cc;if(_0x47a17d>=_0x5a5435){_0x47a17d=_0x5a5435;_0x35f5cc=0xc8;}else{_0x35f5cc=0xce;}_0x8049cd[_0x4b98('0x19')](_0x35f5cc);return _0x8049cd[_0x4b98('0x20')](_0x4b98('0x21'),_0x171d3e+'-'+_0x47a17d+'/'+_0x5a5435)[_0x4b98('0x1b')](_0x3b4971);}return null;};}function patchUpdates(_0xeff60b){return function(_0x11923f){try{jsonpatch['apply'](_0x11923f,_0xeff60b,!![]);}catch(_0x5a2ee0){return BPromise[_0x4b98('0x22')](_0x5a2ee0);}return _0x11923f[_0x4b98('0x23')]();};}function saveUpdates(_0x55f4a4,_0x40869b){return function(_0x322fc1){if(_0x322fc1){return _0x322fc1[_0x4b98('0x24')](_0x55f4a4)[_0x4b98('0x25')](function(_0xa292e4){return _0xa292e4;});}return null;};}function removeEntity(_0x2ddb8d,_0xe6dfc9){return function(_0x416f67){if(_0x416f67){return _0x416f67[_0x4b98('0x26')]()['then'](function(){var _0x2b52ed=_0x416f67['get']({'plain':!![]});var _0x37c2a2=_0x4b98('0x27');return db[_0x4b98('0x28')][_0x4b98('0x26')]({'where':{'type':_0x37c2a2,'resourceId':_0x2b52ed['id']}})[_0x4b98('0x25')](function(){return _0x416f67;});})[_0x4b98('0x25')](function(){_0x2ddb8d[_0x4b98('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x351d9c,_0xce13c5){return function(_0x1ab7d4){if(!_0x1ab7d4){_0x351d9c['sendStatus'](0x194);}return _0x1ab7d4;};}function handleError(_0x34fa32,_0xbe38c0){_0xbe38c0=_0xbe38c0||0x1f4;return function(_0x43acdc){logger['error'](_0x43acdc['stack']);if(_0x43acdc[_0x4b98('0x29')]){delete _0x43acdc['name'];}_0x34fa32['status'](_0xbe38c0)[_0x4b98('0x2a')](_0x43acdc);};}exports['index']=function(_0x32026f,_0x3a629c){var _0x56c5c1={},_0x51b6b3={},_0x4bba3e={'count':0x0,'rows':[]};var _0x4c6b67=_[_0x4b98('0x2b')](db[_0x4b98('0x2c')][_0x4b98('0x2d')],function(_0xc159ca){return{'name':_0xc159ca[_0x4b98('0x2e')],'type':_0xc159ca[_0x4b98('0x2f')]['key']};});_0x51b6b3[_0x4b98('0x30')]=_[_0x4b98('0x2b')](_0x4c6b67,'name');_0x51b6b3['query']=_[_0x4b98('0x31')](_0x32026f[_0x4b98('0x32')]);_0x51b6b3['filters']=_['intersection'](_0x51b6b3['model'],_0x51b6b3['query']);_0x56c5c1[_0x4b98('0x33')]=_[_0x4b98('0x34')](_0x51b6b3['model'],qs[_0x4b98('0x35')](_0x32026f[_0x4b98('0x32')][_0x4b98('0x35')]));_0x56c5c1[_0x4b98('0x33')]=_0x56c5c1[_0x4b98('0x33')][_0x4b98('0x36')]?_0x56c5c1[_0x4b98('0x33')]:_0x51b6b3[_0x4b98('0x30')];if(!_0x32026f[_0x4b98('0x32')][_0x4b98('0x37')](_0x4b98('0x38'))){_0x56c5c1[_0x4b98('0x1e')]=qs[_0x4b98('0x1e')](_0x32026f[_0x4b98('0x32')][_0x4b98('0x1e')]);_0x56c5c1[_0x4b98('0x1c')]=qs[_0x4b98('0x1c')](_0x32026f[_0x4b98('0x32')][_0x4b98('0x1c')]);}_0x56c5c1[_0x4b98('0x39')]=qs[_0x4b98('0x3a')](_0x32026f[_0x4b98('0x32')]['sort']);_0x56c5c1[_0x4b98('0x3b')]=qs[_0x4b98('0x3c')](_['pick'](_0x32026f[_0x4b98('0x32')],_0x51b6b3[_0x4b98('0x3c')]),_0x4c6b67);if(_0x32026f['query'][_0x4b98('0x3d')]){_0x56c5c1[_0x4b98('0x3b')]=_[_0x4b98('0x3e')](_0x56c5c1[_0x4b98('0x3b')],{'$or':_['map'](_0x4c6b67,function(_0x5e844d){if(_0x5e844d['type']!==_0x4b98('0x3f')){var _0x2bdfe3={};_0x2bdfe3[_0x5e844d[_0x4b98('0x29')]]={'$like':'%'+_0x32026f[_0x4b98('0x32')]['filter']+'%'};return _0x2bdfe3;}})});}_0x56c5c1=_['merge']({},_0x56c5c1,_0x32026f[_0x4b98('0x40')]);var _0x55ed5d={'where':_0x56c5c1[_0x4b98('0x3b')]};return db['Schedule'][_0x4b98('0x1f')](_0x55ed5d)[_0x4b98('0x25')](function(_0x3dde23){_0x4bba3e[_0x4b98('0x1f')]=_0x3dde23;if(_0x32026f[_0x4b98('0x32')][_0x4b98('0x41')]){_0x56c5c1[_0x4b98('0x42')]=[{'all':!![]}];}return db['Schedule']['findAll'](_0x56c5c1);})[_0x4b98('0x25')](function(_0x408d77){_0x4bba3e[_0x4b98('0x43')]=_0x408d77;return _0x4bba3e;})[_0x4b98('0x25')](respondWithFilteredResult(_0x3a629c,_0x56c5c1))['catch'](handleError(_0x3a629c,null));};exports[_0x4b98('0x44')]=function(_0x493d38,_0x5a739f){var _0xcf7f1={'raw':![],'where':{'id':_0x493d38['params']['id']}},_0x339e3f={};_0x339e3f[_0x4b98('0x30')]=_[_0x4b98('0x31')](db['Schedule']['rawAttributes']);_0x339e3f[_0x4b98('0x32')]=_[_0x4b98('0x31')](_0x493d38[_0x4b98('0x32')]);_0x339e3f[_0x4b98('0x3c')]=_[_0x4b98('0x34')](_0x339e3f[_0x4b98('0x30')],_0x339e3f[_0x4b98('0x32')]);_0xcf7f1[_0x4b98('0x33')]=_[_0x4b98('0x34')](_0x339e3f[_0x4b98('0x30')],qs[_0x4b98('0x35')](_0x493d38['query'][_0x4b98('0x35')]));_0xcf7f1[_0x4b98('0x33')]=_0xcf7f1[_0x4b98('0x33')][_0x4b98('0x36')]?_0xcf7f1[_0x4b98('0x33')]:_0x339e3f[_0x4b98('0x30')];if(_0x493d38[_0x4b98('0x32')][_0x4b98('0x41')]){_0xcf7f1['include']=[{'all':!![]}];}_0xcf7f1=_[_0x4b98('0x3e')]({},_0xcf7f1,_0x493d38['options']);return db[_0x4b98('0x2c')][_0x4b98('0x45')](_0xcf7f1)[_0x4b98('0x25')](handleEntityNotFound(_0x5a739f,null))[_0x4b98('0x25')](respondWithResult(_0x5a739f,null))[_0x4b98('0x46')](handleError(_0x5a739f,null));};exports[_0x4b98('0x47')]=function(_0x2fa3a7,_0x509b08){return db[_0x4b98('0x2c')][_0x4b98('0x47')](_0x2fa3a7[_0x4b98('0x48')],{})[_0x4b98('0x25')](function(_0x416bf2){var _0x5128a6=_0x2fa3a7[_0x4b98('0x49')][_0x4b98('0x4a')]({'plain':!![]});if(!_0x5128a6)throw new Error(_0x4b98('0x4b'));if(_0x5128a6[_0x4b98('0x4c')]===_0x4b98('0x49')){var _0x3c83a8=_0x416bf2[_0x4b98('0x4a')]({'plain':!![]});var _0x14e243='Scheduler';return db[_0x4b98('0x4d')]['find']({'where':{'name':_0x14e243,'userProfileId':_0x5128a6[_0x4b98('0x4e')]},'raw':!![]})['then'](function(_0x5d8c60){if(_0x5d8c60&&_0x5d8c60['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x3c83a8[_0x4b98('0x29')],'resourceId':_0x3c83a8['id'],'type':_0x5d8c60[_0x4b98('0x29')],'sectionId':_0x5d8c60['id']},{})['then'](function(){return _0x416bf2;});}else{return _0x416bf2;}})['catch'](function(_0x551256){logger[_0x4b98('0x4f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x551256);throw _0x551256;});}return _0x416bf2;})['then'](respondWithResult(_0x509b08,0xc9))[_0x4b98('0x46')](handleError(_0x509b08,null));};exports['update']=function(_0x17a77a,_0x470c57){if(_0x17a77a[_0x4b98('0x48')]['id']){delete _0x17a77a[_0x4b98('0x48')]['id'];}return db[_0x4b98('0x2c')][_0x4b98('0x45')]({'where':{'id':_0x17a77a[_0x4b98('0x50')]['id']}})[_0x4b98('0x25')](handleEntityNotFound(_0x470c57,null))[_0x4b98('0x25')](saveUpdates(_0x17a77a[_0x4b98('0x48')],null))[_0x4b98('0x25')](respondWithResult(_0x470c57,null))[_0x4b98('0x46')](handleError(_0x470c57,null));};exports[_0x4b98('0x26')]=function(_0x3b3b50,_0x1e1f8e){return db[_0x4b98('0x2c')][_0x4b98('0x45')]({'where':{'id':_0x3b3b50[_0x4b98('0x50')]['id']}})[_0x4b98('0x25')](handleEntityNotFound(_0x1e1f8e,null))['then'](removeEntity(_0x1e1f8e,null))['catch'](handleError(_0x1e1f8e,null));};exports['run']=function(_0x5b97a1,_0x1b935f,_0x219973){var _0x1d57f8=require(_0x4b98('0x51'));return db['Schedule'][_0x4b98('0x45')]({'where':{'id':_0x5b97a1['params']['id']},'raw':!![]})[_0x4b98('0x25')](handleEntityNotFound(_0x1b935f,null))[_0x4b98('0x25')](function(){_0x1d57f8[_0x4b98('0x52')](_0x5b97a1[_0x4b98('0x50')]['id']);})[_0x4b98('0x25')](respondWithStatusCode(_0x1b935f,null))['catch'](handleError(_0x1b935f,null));};
\ No newline at end of file
+var _0x0b47=['Schedule','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','run','eml-format','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','then','destroy','UserProfileResource','error','stack','name','send','index','map'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x0b47,0x120));var _0x70b4=function(_0x2f863c,_0x5e0b57){_0x2f863c=_0x2f863c-0x0;var _0x395146=_0x0b47[_0x2f863c];return _0x395146;};'use strict';var emlformat=require(_0x70b4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x70b4('0x1'));var rp=require('request-promise');var moment=require(_0x70b4('0x2'));var BPromise=require(_0x70b4('0x3'));var Mustache=require(_0x70b4('0x4'));var util=require(_0x70b4('0x5'));var path=require('path');var sox=require(_0x70b4('0x6'));var csv=require('to-csv');var ejs=require(_0x70b4('0x7'));var fs=require('fs');var fs_extra=require(_0x70b4('0x8'));var _=require(_0x70b4('0x9'));var squel=require(_0x70b4('0xa'));var crypto=require('crypto');var jsforce=require(_0x70b4('0xb'));var deskjs=require(_0x70b4('0xc'));var toCsv=require(_0x70b4('0xd'));var querystring=require(_0x70b4('0xe'));var Papa=require(_0x70b4('0xf'));var Redis=require('ioredis');var authService=require(_0x70b4('0x10'));var qs=require(_0x70b4('0x11'));var as=require(_0x70b4('0x12'));var hardwareService=require(_0x70b4('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x70b4('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x70b4('0x15'));var db=require(_0x70b4('0x16'))['db'];function respondWithStatusCode(_0x363148,_0x3959d0){_0x3959d0=_0x3959d0||0xcc;return function(_0x5ae3b2){if(_0x5ae3b2){return _0x363148[_0x70b4('0x17')](_0x3959d0);}return _0x363148[_0x70b4('0x18')](_0x3959d0)[_0x70b4('0x19')]();};}function respondWithResult(_0x368ca2,_0x251cf2){_0x251cf2=_0x251cf2||0xc8;return function(_0x31fb99){if(_0x31fb99){return _0x368ca2[_0x70b4('0x18')](_0x251cf2)[_0x70b4('0x1a')](_0x31fb99);}};}function respondWithFilteredResult(_0x2db193,_0x5e0393){return function(_0x5c80e5){if(_0x5c80e5){var _0x2c322d=typeof _0x5e0393['offset']===_0x70b4('0x1b')&&typeof _0x5e0393[_0x70b4('0x1c')]===_0x70b4('0x1b');var _0x4e8f08=_0x5c80e5['count'];var _0x2244f8=_0x2c322d?0x0:_0x5e0393[_0x70b4('0x1d')];var _0x4b730b=_0x2c322d?_0x5c80e5[_0x70b4('0x1e')]:_0x5e0393[_0x70b4('0x1d')]+_0x5e0393['limit'];var _0x3dac59;if(_0x4b730b>=_0x4e8f08){_0x4b730b=_0x4e8f08;_0x3dac59=0xc8;}else{_0x3dac59=0xce;}_0x2db193[_0x70b4('0x18')](_0x3dac59);return _0x2db193[_0x70b4('0x1f')](_0x70b4('0x20'),_0x2244f8+'-'+_0x4b730b+'/'+_0x4e8f08)[_0x70b4('0x1a')](_0x5c80e5);}return null;};}function patchUpdates(_0x4a4694){return function(_0x4a225c){try{jsonpatch[_0x70b4('0x21')](_0x4a225c,_0x4a4694,!![]);}catch(_0x1333dc){return BPromise[_0x70b4('0x22')](_0x1333dc);}return _0x4a225c['save']();};}function saveUpdates(_0x12e477,_0x244b15){return function(_0x2dfa45){if(_0x2dfa45){return _0x2dfa45['update'](_0x12e477)[_0x70b4('0x23')](function(_0x4b0372){return _0x4b0372;});}return null;};}function removeEntity(_0x1d5130,_0x31ab2f){return function(_0x8ba9dc){if(_0x8ba9dc){return _0x8ba9dc[_0x70b4('0x24')]()[_0x70b4('0x23')](function(){var _0x42bd3f=_0x8ba9dc['get']({'plain':!![]});var _0x5921f9='Scheduler';return db[_0x70b4('0x25')][_0x70b4('0x24')]({'where':{'type':_0x5921f9,'resourceId':_0x42bd3f['id']}})[_0x70b4('0x23')](function(){return _0x8ba9dc;});})['then'](function(){_0x1d5130[_0x70b4('0x18')](0xcc)[_0x70b4('0x19')]();});}};}function handleEntityNotFound(_0x4b0a89,_0x510650){return function(_0x3cd004){if(!_0x3cd004){_0x4b0a89['sendStatus'](0x194);}return _0x3cd004;};}function handleError(_0x4e455c,_0x5d64c0){_0x5d64c0=_0x5d64c0||0x1f4;return function(_0x25d583){logger[_0x70b4('0x26')](_0x25d583[_0x70b4('0x27')]);if(_0x25d583[_0x70b4('0x28')]){delete _0x25d583[_0x70b4('0x28')];}_0x4e455c[_0x70b4('0x18')](_0x5d64c0)[_0x70b4('0x29')](_0x25d583);};}exports[_0x70b4('0x2a')]=function(_0x27af05,_0x5b0789){var _0x52abd0={},_0x418f74={},_0x5f1c48={'count':0x0,'rows':[]};var _0x74e047=_[_0x70b4('0x2b')](db[_0x70b4('0x2c')]['rawAttributes'],function(_0x249a02){return{'name':_0x249a02[_0x70b4('0x2d')],'type':_0x249a02[_0x70b4('0x2e')][_0x70b4('0x2f')]};});_0x418f74[_0x70b4('0x30')]=_['map'](_0x74e047,_0x70b4('0x28'));_0x418f74[_0x70b4('0x31')]=_[_0x70b4('0x32')](_0x27af05[_0x70b4('0x31')]);_0x418f74[_0x70b4('0x33')]=_['intersection'](_0x418f74[_0x70b4('0x30')],_0x418f74[_0x70b4('0x31')]);_0x52abd0['attributes']=_[_0x70b4('0x34')](_0x418f74[_0x70b4('0x30')],qs[_0x70b4('0x35')](_0x27af05[_0x70b4('0x31')][_0x70b4('0x35')]));_0x52abd0['attributes']=_0x52abd0['attributes'][_0x70b4('0x36')]?_0x52abd0[_0x70b4('0x37')]:_0x418f74['model'];if(!_0x27af05[_0x70b4('0x31')][_0x70b4('0x38')](_0x70b4('0x39'))){_0x52abd0[_0x70b4('0x1c')]=qs[_0x70b4('0x1c')](_0x27af05[_0x70b4('0x31')]['limit']);_0x52abd0['offset']=qs[_0x70b4('0x1d')](_0x27af05['query']['offset']);}_0x52abd0['order']=qs[_0x70b4('0x3a')](_0x27af05[_0x70b4('0x31')][_0x70b4('0x3a')]);_0x52abd0[_0x70b4('0x3b')]=qs[_0x70b4('0x33')](_[_0x70b4('0x3c')](_0x27af05[_0x70b4('0x31')],_0x418f74[_0x70b4('0x33')]),_0x74e047);if(_0x27af05[_0x70b4('0x31')][_0x70b4('0x3d')]){_0x52abd0[_0x70b4('0x3b')]=_[_0x70b4('0x3e')](_0x52abd0[_0x70b4('0x3b')],{'$or':_[_0x70b4('0x2b')](_0x74e047,function(_0x570abe){if(_0x570abe['type']!==_0x70b4('0x3f')){var _0x3950b8={};_0x3950b8[_0x570abe[_0x70b4('0x28')]]={'$like':'%'+_0x27af05[_0x70b4('0x31')]['filter']+'%'};return _0x3950b8;}})});}_0x52abd0=_[_0x70b4('0x3e')]({},_0x52abd0,_0x27af05[_0x70b4('0x40')]);var _0x1b192b={'where':_0x52abd0[_0x70b4('0x3b')]};return db['Schedule'][_0x70b4('0x1e')](_0x1b192b)[_0x70b4('0x23')](function(_0x4f8e39){_0x5f1c48[_0x70b4('0x1e')]=_0x4f8e39;if(_0x27af05['query'][_0x70b4('0x41')]){_0x52abd0['include']=[{'all':!![]}];}return db['Schedule'][_0x70b4('0x42')](_0x52abd0);})[_0x70b4('0x23')](function(_0x4aa404){_0x5f1c48[_0x70b4('0x43')]=_0x4aa404;return _0x5f1c48;})[_0x70b4('0x23')](respondWithFilteredResult(_0x5b0789,_0x52abd0))[_0x70b4('0x44')](handleError(_0x5b0789,null));};exports[_0x70b4('0x45')]=function(_0x220c82,_0x9daf9d){var _0x4cc740={'raw':![],'where':{'id':_0x220c82[_0x70b4('0x46')]['id']}},_0x3a1242={};_0x3a1242[_0x70b4('0x30')]=_['keys'](db[_0x70b4('0x2c')][_0x70b4('0x47')]);_0x3a1242[_0x70b4('0x31')]=_['keys'](_0x220c82[_0x70b4('0x31')]);_0x3a1242[_0x70b4('0x33')]=_['intersection'](_0x3a1242[_0x70b4('0x30')],_0x3a1242[_0x70b4('0x31')]);_0x4cc740[_0x70b4('0x37')]=_[_0x70b4('0x34')](_0x3a1242[_0x70b4('0x30')],qs[_0x70b4('0x35')](_0x220c82['query'][_0x70b4('0x35')]));_0x4cc740['attributes']=_0x4cc740[_0x70b4('0x37')][_0x70b4('0x36')]?_0x4cc740['attributes']:_0x3a1242[_0x70b4('0x30')];if(_0x220c82[_0x70b4('0x31')]['includeAll']){_0x4cc740[_0x70b4('0x48')]=[{'all':!![]}];}_0x4cc740=_[_0x70b4('0x3e')]({},_0x4cc740,_0x220c82[_0x70b4('0x40')]);return db['Schedule'][_0x70b4('0x49')](_0x4cc740)[_0x70b4('0x23')](handleEntityNotFound(_0x9daf9d,null))['then'](respondWithResult(_0x9daf9d,null))[_0x70b4('0x44')](handleError(_0x9daf9d,null));};exports[_0x70b4('0x4a')]=function(_0x354585,_0x365856){return db[_0x70b4('0x2c')][_0x70b4('0x4a')](_0x354585['body'],{})['then'](function(_0x4316dc){var _0x1bbe32=_0x354585['user'][_0x70b4('0x4b')]({'plain':!![]});if(!_0x1bbe32)throw new Error(_0x70b4('0x4c'));if(_0x1bbe32['role']==='user'){var _0x424b58=_0x4316dc['get']({'plain':!![]});var _0x1ef644='Scheduler';return db[_0x70b4('0x4d')][_0x70b4('0x49')]({'where':{'name':_0x1ef644,'userProfileId':_0x1bbe32[_0x70b4('0x4e')]},'raw':!![]})['then'](function(_0x1d875e){if(_0x1d875e&&_0x1d875e['autoAssociation']===0x0){return db['UserProfileResource'][_0x70b4('0x4a')]({'name':_0x424b58[_0x70b4('0x28')],'resourceId':_0x424b58['id'],'type':_0x1d875e['name'],'sectionId':_0x1d875e['id']},{})['then'](function(){return _0x4316dc;});}else{return _0x4316dc;}})[_0x70b4('0x44')](function(_0x3cf1a8){logger[_0x70b4('0x26')](_0x70b4('0x4f'),_0x3cf1a8);throw _0x3cf1a8;});}return _0x4316dc;})[_0x70b4('0x23')](respondWithResult(_0x365856,0xc9))['catch'](handleError(_0x365856,null));};exports[_0x70b4('0x50')]=function(_0x39ed66,_0x4fbf69){if(_0x39ed66[_0x70b4('0x51')]['id']){delete _0x39ed66[_0x70b4('0x51')]['id'];}return db[_0x70b4('0x2c')][_0x70b4('0x49')]({'where':{'id':_0x39ed66[_0x70b4('0x46')]['id']}})[_0x70b4('0x23')](handleEntityNotFound(_0x4fbf69,null))[_0x70b4('0x23')](saveUpdates(_0x39ed66['body'],null))['then'](respondWithResult(_0x4fbf69,null))[_0x70b4('0x44')](handleError(_0x4fbf69,null));};exports[_0x70b4('0x24')]=function(_0x1a8ac7,_0x5a5d5a){return db[_0x70b4('0x2c')][_0x70b4('0x49')]({'where':{'id':_0x1a8ac7[_0x70b4('0x46')]['id']}})[_0x70b4('0x23')](handleEntityNotFound(_0x5a5d5a,null))[_0x70b4('0x23')](removeEntity(_0x5a5d5a,null))[_0x70b4('0x44')](handleError(_0x5a5d5a,null));};exports['run']=function(_0x3ca529,_0x8e7635,_0xb568ad){var _0x362d64=require('../../config/schedule');return db['Schedule'][_0x70b4('0x49')]({'where':{'id':_0x3ca529[_0x70b4('0x46')]['id']},'raw':!![]})[_0x70b4('0x23')](handleEntityNotFound(_0x8e7635,null))[_0x70b4('0x23')](function(){_0x362d64[_0x70b4('0x52')](_0x3ca529[_0x70b4('0x46')]['id']);})['then'](respondWithStatusCode(_0x8e7635,null))[_0x70b4('0x44')](handleError(_0x8e7635,null));};
\ No newline at end of file
index 7bd9c98..6dc8b5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95c8=['./schedule.attributes','exports','define','Schedule','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x2375e1,_0x3d125a){var _0x2ccc7d=function(_0x343bb6){while(--_0x343bb6){_0x2375e1['push'](_0x2375e1['shift']());}};_0x2ccc7d(++_0x3d125a);}(_0x95c8,0xb8));var _0x895c=function(_0x2b9a03,_0x5925a9){_0x2b9a03=_0x2b9a03-0x0;var _0x5a7cc=_0x95c8[_0x2b9a03];return _0x5a7cc;};'use strict';var _=require(_0x895c('0x0'));var util=require('util');var logger=require(_0x895c('0x1'))(_0x895c('0x2'));var moment=require(_0x895c('0x3'));var BPromise=require(_0x895c('0x4'));var rp=require(_0x895c('0x5'));var fs=require('fs');var path=require(_0x895c('0x6'));var rimraf=require('rimraf');var config=require(_0x895c('0x7'));var attributes=require(_0x895c('0x8'));module[_0x895c('0x9')]=function(_0x4a4f60,_0x26a6fa){return _0x4a4f60[_0x895c('0xa')](_0x895c('0xb'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf255=['bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes','Schedule','tools_schedules','lodash','util','../../config/logger','api','moment'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xf255,0xcb));var _0x5f25=function(_0x52089d,_0x407abf){_0x52089d=_0x52089d-0x0;var _0x33314c=_0xf255[_0x52089d];return _0x33314c;};'use strict';var _=require(_0x5f25('0x0'));var util=require(_0x5f25('0x1'));var logger=require(_0x5f25('0x2'))(_0x5f25('0x3'));var moment=require(_0x5f25('0x4'));var BPromise=require(_0x5f25('0x5'));var rp=require(_0x5f25('0x6'));var fs=require('fs');var path=require(_0x5f25('0x7'));var rimraf=require(_0x5f25('0x8'));var config=require(_0x5f25('0x9'));var attributes=require(_0x5f25('0xa'));module['exports']=function(_0xd7c18a,_0xd8a8e8){return _0xd7c18a['define'](_0x5f25('0xb'),attributes,{'tableName':_0x5f25('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c9a73e..e0c08d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x369b=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','moment','bluebird'];(function(_0x4fbffe,_0x4c69d1){var _0x2bbd73=function(_0x6078b4){while(--_0x6078b4){_0x4fbffe['push'](_0x4fbffe['shift']());}};_0x2bbd73(++_0x4c69d1);}(_0x369b,0x148));var _0xb369=function(_0x2cf2e9,_0xd58ea1){_0x2cf2e9=_0x2cf2e9-0x0;var _0xd3670d=_0x369b[_0x2cf2e9];return _0xd3670d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb369('0x0'));var BPromise=require(_0xb369('0x1'));var rs=require(_0xb369('0x2'));var fs=require('fs');var Redis=require(_0xb369('0x3'));var db=require(_0xb369('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb369('0x5'))(_0xb369('0x6'));var config=require('../../config/environment');var jayson=require(_0xb369('0x7'));var client=jayson[_0xb369('0x8')][_0xb369('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x48d833,_0x3bbc99,_0x4ac1af){return new BPromise(function(_0xc5f5af,_0x1f31f9){return client[_0xb369('0xa')](_0x48d833,_0x4ac1af)[_0xb369('0xb')](function(_0xd56ad0){logger['info'](_0xb369('0xc'),_0x3bbc99,_0xb369('0xd'));logger[_0xb369('0xe')](_0xb369('0xf'),_0x3bbc99,_0xb369('0xd'),JSON['stringify'](_0xd56ad0));if(_0xd56ad0[_0xb369('0x10')]){if(_0xd56ad0[_0xb369('0x10')][_0xb369('0x11')]===0x1f4){logger[_0xb369('0x10')](_0xb369('0xc'),_0x3bbc99,_0xd56ad0[_0xb369('0x10')][_0xb369('0x12')]);return _0x1f31f9(_0xd56ad0[_0xb369('0x10')][_0xb369('0x12')]);}logger['error'](_0xb369('0xc'),_0x3bbc99,_0xd56ad0[_0xb369('0x10')][_0xb369('0x12')]);return _0xc5f5af(_0xd56ad0['error'][_0xb369('0x12')]);}else{logger[_0xb369('0x13')](_0xb369('0xc'),_0x3bbc99,_0xb369('0xd'));_0xc5f5af(_0xd56ad0[_0xb369('0x14')][_0xb369('0x12')]);}})[_0xb369('0x15')](function(_0x3a91c2){logger[_0xb369('0x10')](_0xb369('0xc'),_0x3bbc99,_0x3a91c2);_0x1f31f9(_0x3a91c2);});});}
\ No newline at end of file
+var _0x0fe9=['request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','../../config/utils','../../config/environment','jayson/promise','client','http'];(function(_0x45a980,_0x3b4f78){var _0x49b3a0=function(_0x2ccced){while(--_0x2ccced){_0x45a980['push'](_0x45a980['shift']());}};_0x49b3a0(++_0x3b4f78);}(_0x0fe9,0x15f));var _0x90fe=function(_0x59d23a,_0x9693c9){_0x59d23a=_0x59d23a-0x0;var _0xfb8bee=_0x0fe9[_0x59d23a];return _0xfb8bee;};'use strict';var _=require(_0x90fe('0x0'));var util=require(_0x90fe('0x1'));var moment=require(_0x90fe('0x2'));var BPromise=require('bluebird');var rs=require(_0x90fe('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x90fe('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x90fe('0x5'));var jayson=require(_0x90fe('0x6'));var client=jayson[_0x90fe('0x7')][_0x90fe('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3aca8d,_0x469810,_0x11b6bf){return new BPromise(function(_0x19df30,_0x20ba67){return client[_0x90fe('0x9')](_0x3aca8d,_0x11b6bf)[_0x90fe('0xa')](function(_0xbedb69){logger[_0x90fe('0xb')](_0x90fe('0xc'),_0x469810,_0x90fe('0xd'));logger['debug'](_0x90fe('0xe'),_0x469810,'request\x20sent',JSON[_0x90fe('0xf')](_0xbedb69));if(_0xbedb69[_0x90fe('0x10')]){if(_0xbedb69[_0x90fe('0x10')]['code']===0x1f4){logger[_0x90fe('0x10')](_0x90fe('0xc'),_0x469810,_0xbedb69[_0x90fe('0x10')][_0x90fe('0x11')]);return _0x20ba67(_0xbedb69[_0x90fe('0x10')][_0x90fe('0x11')]);}logger[_0x90fe('0x10')](_0x90fe('0xc'),_0x469810,_0xbedb69[_0x90fe('0x10')][_0x90fe('0x11')]);return _0x19df30(_0xbedb69['error'][_0x90fe('0x11')]);}else{logger['info'](_0x90fe('0xc'),_0x469810,'request\x20sent');_0x19df30(_0xbedb69[_0x90fe('0x12')][_0x90fe('0x11')]);}})[_0x90fe('0x13')](function(_0x4050b6){logger[_0x90fe('0x10')]('Schedule,\x20%s,\x20%s',_0x469810,_0x4050b6);_0x20ba67(_0x4050b6);});});}
\ No newline at end of file
index 237dd4c..2ec4e0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd9b=['create','/:id','update','delete','destroy','util','path','express','Router','../../components/interaction/service','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x23d62d,_0x42bcf5){var _0x599dec=function(_0x54aad1){while(--_0x54aad1){_0x23d62d['push'](_0x23d62d['shift']());}};_0x599dec(++_0x42bcf5);}(_0xbd9b,0x19d));var _0xbbd9=function(_0x2f61a5,_0x4e1710){_0x2f61a5=_0x2f61a5-0x0;var _0x33642a=_0xbd9b[_0x2f61a5];return _0x33642a;};'use strict';var multer=require('multer');var util=require(_0xbbd9('0x0'));var path=require(_0xbbd9('0x1'));var timeout=require('connect-timeout');var express=require(_0xbbd9('0x2'));var router=express[_0xbbd9('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbbd9('0x4'));var config=require('../../config/environment');var controller=require(_0xbbd9('0x5'));router[_0xbbd9('0x6')]('/',auth[_0xbbd9('0x7')](),controller[_0xbbd9('0x8')]);router[_0xbbd9('0x6')](_0xbbd9('0x9'),auth[_0xbbd9('0x7')](),controller[_0xbbd9('0xa')]);router[_0xbbd9('0x6')]('/:id',auth[_0xbbd9('0x7')](),controller[_0xbbd9('0xb')]);router['get']('/:id/download',auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0xbbd9('0x7')](),controller[_0xbbd9('0xc')]);router['put'](_0xbbd9('0xd'),auth['isAuthenticated'](),controller[_0xbbd9('0xe')]);router[_0xbbd9('0xf')](_0xbbd9('0xd'),auth[_0xbbd9('0x7')](),controller[_0xbbd9('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xfcfa=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','index','/describe','isAuthenticated','describe','/:id','show','download','put','update','delete','destroy'];(function(_0xf40252,_0x488947){var _0x1bfd48=function(_0x52961e){while(--_0x52961e){_0xf40252['push'](_0xf40252['shift']());}};_0x1bfd48(++_0x488947);}(_0xfcfa,0xe7));var _0xafcf=function(_0x4ca7ea,_0x1dc29f){_0x4ca7ea=_0x4ca7ea-0x0;var _0x4efe98=_0xfcfa[_0x4ca7ea];return _0x4efe98;};'use strict';var multer=require(_0xafcf('0x0'));var util=require(_0xafcf('0x1'));var path=require(_0xafcf('0x2'));var timeout=require('connect-timeout');var express=require(_0xafcf('0x3'));var router=express[_0xafcf('0x4')]();var fs_extra=require(_0xafcf('0x5'));var auth=require(_0xafcf('0x6'));var interaction=require(_0xafcf('0x7'));var config=require(_0xafcf('0x8'));var controller=require(_0xafcf('0x9'));router[_0xafcf('0xa')]('/',auth['isAuthenticated'](),controller[_0xafcf('0xb')]);router[_0xafcf('0xa')](_0xafcf('0xc'),auth[_0xafcf('0xd')](),controller[_0xafcf('0xe')]);router[_0xafcf('0xa')](_0xafcf('0xf'),auth[_0xafcf('0xd')](),controller[_0xafcf('0x10')]);router[_0xafcf('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0xafcf('0x11')]);router['post']('/',auth[_0xafcf('0xd')](),controller['create']);router[_0xafcf('0x12')](_0xafcf('0xf'),auth[_0xafcf('0xd')](),controller[_0xafcf('0x13')]);router[_0xafcf('0x14')](_0xafcf('0xf'),auth['isAuthenticated'](),controller[_0xafcf('0x15')]);module[_0xafcf('0x16')]=router;
\ No newline at end of file
index 6152a6a..1f6d223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5386=['path','../../config/environment','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','duration','DATE','MM-DD-YYYY\x20HH:mm','toString','closedAt','createdAt','format','sequelize','moment'];(function(_0x44f74b,_0x471f8f){var _0x1948e1=function(_0x261baf){while(--_0x261baf){_0x44f74b['push'](_0x44f74b['shift']());}};_0x1948e1(++_0x471f8f);}(_0x5386,0x1e1));var _0x6538=function(_0xb60674,_0xa4e08a){_0xb60674=_0xb60674-0x0;var _0x2514a0=_0x5386[_0xb60674];return _0x2514a0;};'use strict';var Sequelize=require(_0x6538('0x0'));var moment=require(_0x6538('0x1'));var path=require(_0x6538('0x2'));var config=require(_0x6538('0x3'));module['exports']={'format':{'type':Sequelize[_0x6538('0x4')],'get':function(){return this[_0x6538('0x5')](_0x6538('0x6'))?path[_0x6538('0x7')](this[_0x6538('0x5')](_0x6538('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x6538('0x8')]},'channel':{'type':Sequelize[_0x6538('0x8')]},'value':{'type':Sequelize['STRING'],'set':function(_0x16c291){var _0x4b0e05=_0x16c291[_0x6538('0x9')](/\\/g,'/');this[_0x6538('0xa')](_0x6538('0x6'),_0x4b0e05);}},'rating':{'type':Sequelize[_0x6538('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x6538('0xb')],'set':function(_0x2bce05){this[_0x6538('0xa')](_0x6538('0xc'),moment()[_0x6538('0xd')](_0x2bce05,'ms'));this[_0x6538('0xa')]('closedAt',moment());this[_0x6538('0xa')](_0x6538('0xe'),_0x2bce05);}},'startedAt':{'type':Sequelize[_0x6538('0xf')],'get':function(){return moment(this['getDataValue'](_0x6538('0xc')))['format'](_0x6538('0x10'))[_0x6538('0x11')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x6538('0x5')](_0x6538('0x12')))['format'](_0x6538('0x10'))[_0x6538('0x11')]();}},'createdAt':{'type':Sequelize[_0x6538('0xf')],'get':function(){return moment(this['getDataValue'](_0x6538('0x13')))['format'](_0x6538('0x10'))[_0x6538('0x11')]();}},'updatedAt':{'type':Sequelize[_0x6538('0xf')],'get':function(){return moment(this[_0x6538('0x5')]('updatedAt'))[_0x6538('0x14')](_0x6538('0x10'))['toString']();}}};
\ No newline at end of file
+var _0xdef9=['startedAt','subtract','closedAt','duration','DATE','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','format','sequelize','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER'];(function(_0x5f2920,_0x12e236){var _0x42a70f=function(_0x4dd2b6){while(--_0x4dd2b6){_0x5f2920['push'](_0x5f2920['shift']());}};_0x42a70f(++_0x12e236);}(_0xdef9,0x1ed));var _0x9def=function(_0x1d0b74,_0x2b9295){_0x1d0b74=_0x1d0b74-0x0;var _0x1c18e7=_0xdef9[_0x1d0b74];return _0x1c18e7;};'use strict';var Sequelize=require(_0x9def('0x0'));var moment=require(_0x9def('0x1'));var path=require(_0x9def('0x2'));var config=require(_0x9def('0x3'));module[_0x9def('0x4')]={'format':{'type':Sequelize[_0x9def('0x5')],'get':function(){return this[_0x9def('0x6')](_0x9def('0x7'))?path[_0x9def('0x8')](this[_0x9def('0x6')](_0x9def('0x7'))):undefined;}},'interactionid':{'type':Sequelize[_0x9def('0x9')]},'channel':{'type':Sequelize[_0x9def('0x9')]},'value':{'type':Sequelize[_0x9def('0x9')],'set':function(_0x40c607){var _0x25a03e=_0x40c607[_0x9def('0xa')](/\\/g,'/');this[_0x9def('0xb')](_0x9def('0x7'),_0x25a03e);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x9def('0xc')],'set':function(_0x4f0a0d){this['setDataValue'](_0x9def('0xd'),moment()[_0x9def('0xe')](_0x4f0a0d,'ms'));this[_0x9def('0xb')](_0x9def('0xf'),moment());this['setDataValue'](_0x9def('0x10'),_0x4f0a0d);}},'startedAt':{'type':Sequelize[_0x9def('0x11')],'get':function(){return moment(this[_0x9def('0x6')](_0x9def('0xd')))['format'](_0x9def('0x12'))[_0x9def('0x13')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x9def('0x6')]('closedAt'))['format'](_0x9def('0x12'))[_0x9def('0x13')]();}},'createdAt':{'type':Sequelize[_0x9def('0x11')],'get':function(){return moment(this['getDataValue'](_0x9def('0x14')))['format']('MM-DD-YYYY\x20HH:mm')[_0x9def('0x13')]();}},'updatedAt':{'type':Sequelize[_0x9def('0x11')],'get':function(){return moment(this[_0x9def('0x6')](_0x9def('0x15')))[_0x9def('0x16')](_0x9def('0x12'))[_0x9def('0x13')]();}}};
\ No newline at end of file
index 961e659..617602c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','include','findAll','catch','find','create','body','duration','createdAt','closedAt','value','params','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','Entity\x20not\x20found','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','isNil','File:\x20\x22','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x1e5694,_0x24e0ff){var _0x1809c2=function(_0x108707){while(--_0x108707){_0x1e5694['push'](_0x1e5694['shift']());}};_0x1809c2(++_0x24e0ff);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x1296ea,_0x5a0e10){_0x1296ea=_0x1296ea-0x0;var _0x425e14=_0xd6d6[_0x1296ea];return _0x425e14;};'use strict';var emlformat=require(_0x6d6d('0x0'));var rimraf=require(_0x6d6d('0x1'));var zipdir=require(_0x6d6d('0x2'));var jsonpatch=require(_0x6d6d('0x3'));var rp=require('request-promise');var moment=require(_0x6d6d('0x4'));var BPromise=require(_0x6d6d('0x5'));var Mustache=require(_0x6d6d('0x6'));var util=require(_0x6d6d('0x7'));var path=require(_0x6d6d('0x8'));var sox=require(_0x6d6d('0x9'));var csv=require(_0x6d6d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d6d('0xb'));var _=require(_0x6d6d('0xc'));var squel=require(_0x6d6d('0xd'));var crypto=require(_0x6d6d('0xe'));var jsforce=require(_0x6d6d('0xf'));var deskjs=require(_0x6d6d('0x10'));var toCsv=require(_0x6d6d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6d6d('0x11'));var authService=require(_0x6d6d('0x12'));var qs=require(_0x6d6d('0x13'));var as=require(_0x6d6d('0x14'));var hardwareService=require(_0x6d6d('0x15'));var logger=require('../../config/logger')(_0x6d6d('0x16'));var utils=require(_0x6d6d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6d6d('0x18'))['db'];function respondWithStatusCode(_0x32146d,_0xe61c36){_0xe61c36=_0xe61c36||0xcc;return function(_0x3f8542){if(_0x3f8542){return _0x32146d[_0x6d6d('0x19')](_0xe61c36);}return _0x32146d[_0x6d6d('0x1a')](_0xe61c36)[_0x6d6d('0x1b')]();};}function respondWithResult(_0x2cb2dd,_0x5f4154){_0x5f4154=_0x5f4154||0xc8;return function(_0xd09ea7){if(_0xd09ea7){return _0x2cb2dd[_0x6d6d('0x1a')](_0x5f4154)[_0x6d6d('0x1c')](_0xd09ea7);}};}function respondWithFilteredResult(_0xa3b05d,_0x29cbd8){return function(_0x5d80c0){if(_0x5d80c0){var _0x2e6fdb=typeof _0x29cbd8['offset']===_0x6d6d('0x1d')&&typeof _0x29cbd8[_0x6d6d('0x1e')]===_0x6d6d('0x1d');var _0x4bb3d1=_0x5d80c0['count'];var _0x9e1e18=_0x2e6fdb?0x0:_0x29cbd8[_0x6d6d('0x1f')];var _0x2b59d4=_0x2e6fdb?_0x5d80c0[_0x6d6d('0x20')]:_0x29cbd8['offset']+_0x29cbd8['limit'];var _0x474873;if(_0x2b59d4>=_0x4bb3d1){_0x2b59d4=_0x4bb3d1;_0x474873=0xc8;}else{_0x474873=0xce;}_0xa3b05d['status'](_0x474873);return _0xa3b05d[_0x6d6d('0x21')](_0x6d6d('0x22'),_0x9e1e18+'-'+_0x2b59d4+'/'+_0x4bb3d1)[_0x6d6d('0x1c')](_0x5d80c0);}return null;};}function patchUpdates(_0x450352){return function(_0x40d35b){try{jsonpatch[_0x6d6d('0x23')](_0x40d35b,_0x450352,!![]);}catch(_0x164c67){return BPromise[_0x6d6d('0x24')](_0x164c67);}return _0x40d35b[_0x6d6d('0x25')]();};}function saveUpdates(_0x6f64e3,_0x24b10d){return function(_0x6e58e3){if(_0x6e58e3){return _0x6e58e3[_0x6d6d('0x26')](_0x6f64e3)[_0x6d6d('0x27')](function(_0x1f7f88){return _0x1f7f88;});}return null;};}function removeEntity(_0x25a02e,_0xced622){return function(_0x583b10){if(_0x583b10){return _0x583b10[_0x6d6d('0x28')]()[_0x6d6d('0x27')](function(){_0x25a02e[_0x6d6d('0x1a')](0xcc)[_0x6d6d('0x1b')]();});}};}function handleEntityNotFound(_0xf0df7f,_0x12fab2){return function(_0x554f8e){if(!_0x554f8e){_0xf0df7f[_0x6d6d('0x19')](0x194);}return _0x554f8e;};}function handleError(_0x2b5e31,_0x235451){_0x235451=_0x235451||0x1f4;return function(_0x126ac8){logger[_0x6d6d('0x29')](_0x126ac8[_0x6d6d('0x2a')]);if(_0x126ac8[_0x6d6d('0x2b')]){delete _0x126ac8['name'];}_0x2b5e31[_0x6d6d('0x1a')](_0x235451)[_0x6d6d('0x2c')](_0x126ac8);};}exports['index']=function(_0x553645,_0x3edcce){var _0x5273cd={},_0x8a9a84={},_0x57341f={'count':0x0,'rows':[]};var _0xde3272=_[_0x6d6d('0x2d')](db[_0x6d6d('0x2e')][_0x6d6d('0x2f')],function(_0x64d1f7){return{'name':_0x64d1f7[_0x6d6d('0x30')],'type':_0x64d1f7[_0x6d6d('0x31')][_0x6d6d('0x32')]};});_0x8a9a84[_0x6d6d('0x33')]=_[_0x6d6d('0x34')](_['map'](_0xde3272,_0x6d6d('0x2b')),['format']);_0x8a9a84[_0x6d6d('0x35')]=_[_0x6d6d('0x36')](_0x553645[_0x6d6d('0x35')]);_0x8a9a84[_0x6d6d('0x37')]=_['intersection'](_0x8a9a84[_0x6d6d('0x33')],_0x8a9a84['query']);_0x5273cd[_0x6d6d('0x38')]=_[_0x6d6d('0x39')](_0x8a9a84['model'],qs[_0x6d6d('0x3a')](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3a')]));_0x5273cd[_0x6d6d('0x38')]=_0x5273cd[_0x6d6d('0x38')][_0x6d6d('0x3b')]?_0x5273cd[_0x6d6d('0x38')]:_0x8a9a84[_0x6d6d('0x33')];if(!_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3c')](_0x6d6d('0x3d'))){_0x5273cd[_0x6d6d('0x1e')]=qs[_0x6d6d('0x1e')](_0x553645[_0x6d6d('0x35')]['limit']);_0x5273cd[_0x6d6d('0x1f')]=qs[_0x6d6d('0x1f')](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x1f')]);}_0x5273cd['order']=qs['sort'](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3e')]);_0x5273cd[_0x6d6d('0x3f')]=qs['filters'](_[_0x6d6d('0x40')](_0x553645[_0x6d6d('0x35')],_0x8a9a84[_0x6d6d('0x37')]),_0xde3272);if(_0x553645[_0x6d6d('0x35')]['filter']){_0x5273cd['where']=_['merge'](_0x5273cd[_0x6d6d('0x3f')],{'$or':_[_0x6d6d('0x2d')](_0xde3272,function(_0x33c8f2){if(_0x33c8f2[_0x6d6d('0x31')]!=='VIRTUAL'){var _0x253416={};_0x253416[_0x33c8f2[_0x6d6d('0x2b')]]={'$like':'%'+_0x553645[_0x6d6d('0x35')][_0x6d6d('0x41')]+'%'};return _0x253416;}})});}_0x5273cd=_[_0x6d6d('0x42')]({},_0x5273cd,_0x553645[_0x6d6d('0x43')]);var _0x4b457d={'where':_0x5273cd[_0x6d6d('0x3f')]};return db[_0x6d6d('0x2e')][_0x6d6d('0x20')](_0x4b457d)[_0x6d6d('0x27')](function(_0x32275b){_0x57341f[_0x6d6d('0x20')]=_0x32275b;if(_0x553645[_0x6d6d('0x35')]['includeAll']){_0x5273cd[_0x6d6d('0x44')]=[{'all':!![]}];}return db[_0x6d6d('0x2e')][_0x6d6d('0x45')](_0x5273cd);})[_0x6d6d('0x27')](function(_0xe1aa77){_0x57341f['rows']=_0xe1aa77;return _0x57341f;})[_0x6d6d('0x27')](respondWithFilteredResult(_0x3edcce,_0x5273cd))[_0x6d6d('0x46')](handleError(_0x3edcce,null));};exports['show']=function(_0x452de2,_0x50dc17){var _0x15bf62={'raw':![],'where':{'id':_0x452de2['params']['id']}},_0x43c03c={};_0x43c03c[_0x6d6d('0x33')]=_[_0x6d6d('0x36')](db[_0x6d6d('0x2e')][_0x6d6d('0x2f')]);_0x43c03c[_0x6d6d('0x35')]=_['keys'](_0x452de2['query']);_0x43c03c[_0x6d6d('0x37')]=_['intersection'](_0x43c03c['model'],_0x43c03c[_0x6d6d('0x35')]);_0x15bf62[_0x6d6d('0x38')]=_[_0x6d6d('0x39')](_0x43c03c['model'],qs[_0x6d6d('0x3a')](_0x452de2['query'][_0x6d6d('0x3a')]));_0x15bf62[_0x6d6d('0x38')]=_0x15bf62[_0x6d6d('0x38')][_0x6d6d('0x3b')]?_0x15bf62[_0x6d6d('0x38')]:_0x43c03c[_0x6d6d('0x33')];if(_0x452de2[_0x6d6d('0x35')]['includeAll']){_0x15bf62[_0x6d6d('0x44')]=[{'all':!![]}];}_0x15bf62=_[_0x6d6d('0x42')]({},_0x15bf62,_0x452de2[_0x6d6d('0x43')]);return db[_0x6d6d('0x2e')][_0x6d6d('0x47')](_0x15bf62)[_0x6d6d('0x27')](handleEntityNotFound(_0x50dc17,null))[_0x6d6d('0x27')](respondWithResult(_0x50dc17,null))[_0x6d6d('0x46')](handleError(_0x50dc17,null));};exports[_0x6d6d('0x48')]=function(_0x5e4c04,_0x4d78bb){return db[_0x6d6d('0x2e')][_0x6d6d('0x48')](_0x5e4c04[_0x6d6d('0x49')],{})[_0x6d6d('0x27')](respondWithResult(_0x4d78bb,0xc9))[_0x6d6d('0x46')](handleError(_0x4d78bb,null));};exports['update']=function(_0x47170d,_0x27b396){if(_0x47170d[_0x6d6d('0x49')]['id']){delete _0x47170d[_0x6d6d('0x49')]['id'];}delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4a')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4b')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4c')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4d')];return db['ScreenRecording'][_0x6d6d('0x47')]({'where':{'id':_0x47170d[_0x6d6d('0x4e')]['id']}})[_0x6d6d('0x27')](handleEntityNotFound(_0x27b396,null))[_0x6d6d('0x27')](saveUpdates(_0x47170d[_0x6d6d('0x49')],null))['then'](respondWithResult(_0x27b396,null))[_0x6d6d('0x46')](handleError(_0x27b396,null));};exports[_0x6d6d('0x4f')]=function(_0x45340b,_0x4e4c3e){return db['ScreenRecording'][_0x6d6d('0x4f')]()['then'](respondWithResult(_0x4e4c3e,null))[_0x6d6d('0x46')](handleError(_0x4e4c3e,null));};exports[_0x6d6d('0x50')]=function(_0x32aaae,_0x268361,_0x4777a5){var _0x18e2de=require(_0x6d6d('0x51'));var _0x26c23a=![];var _0x1a8f33={};if(_0x32aaae[_0x6d6d('0x35')]['type']&&_0x32aaae[_0x6d6d('0x35')][_0x6d6d('0x31')]===_0x6d6d('0x52')){_0x1a8f33[_0x6d6d('0x52')]=_0x32aaae[_0x6d6d('0x4e')]['id'];}else{_0x1a8f33['id']=_0x32aaae[_0x6d6d('0x4e')]['id'];}return db[_0x6d6d('0x2e')]['find']({'where':_0x1a8f33,'attributes':['id','value'],'raw':!![]})[_0x6d6d('0x27')](handleEntityNotFound(_0x268361,null))[_0x6d6d('0x27')](function(_0x5cc644){if(_0x5cc644){var _0x3e98a0=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],_0x6d6d('0x55'),_0x5cc644[_0x6d6d('0x4d')]);var _0xc6b96e=util[_0x6d6d('0x56')](_0x6d6d('0x57'),_0x3e98a0);if(fs[_0x6d6d('0x58')](_0xc6b96e)){_0x26c23a=!![];return _0x18e2de[_0x6d6d('0x59')](_0xc6b96e,_0x3e98a0,config[_0x6d6d('0x5a')][_0x6d6d('0x5b')])[_0x6d6d('0x27')](function(){return _0x5cc644;});}return _0x5cc644;}})[_0x6d6d('0x27')](function(_0x3065ea){if(_0x3065ea){var _0x50d8dd=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],'server/files/screen_recordings',_0x3065ea[_0x6d6d('0x4d')]);if(!fs[_0x6d6d('0x58')](_0x50d8dd)){throw new db[(_0x6d6d('0x5c'))][(_0x6d6d('0x5d'))](_0x6d6d('0x5e'));}if(_0x3065ea[_0x6d6d('0x5f')]){return _0x268361[_0x6d6d('0x50')](_0x50d8dd,_0x3065ea[_0x6d6d('0x5f')]+path[_0x6d6d('0x60')](_0x50d8dd),function(){if(_0x26c23a){fs['unlink'](_0x50d8dd);}});}else{return _0x268361['download'](_0x50d8dd,function(_0x22c3a1){if(_0x26c23a){fs[_0x6d6d('0x61')](_0x50d8dd);}});}}})[_0x6d6d('0x46')](function(_0x5de33f){if(_0x5de33f['message']===_0x6d6d('0x5e')){_0x268361['status'](0x194)[_0x6d6d('0x2c')]('Not\x20found');}else{return handleError(_0x268361,null);}});};exports[_0x6d6d('0x28')]=function(_0x367a6f,_0x21f14c){return db[_0x6d6d('0x2e')][_0x6d6d('0x47')]({'where':{'id':_0x367a6f[_0x6d6d('0x4e')]['id']}})['then'](function(_0x41e576){if(_['isNil'](_0x41e576)){throw new ReferenceError(_0x6d6d('0x62'));}return _0x41e576;})['then'](function(_0x2a21d8){var _0x3e48f7=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],_0x6d6d('0x55'),_0x2a21d8[_0x6d6d('0x4d')]);logger[_0x6d6d('0x63')]('cancellazione\x20fisica\x20documento\x20%s',_0x3e48f7);if(!_['isNil'](_0x2a21d8[_0x6d6d('0x4d')])&&fs['existsSync'](_0x3e48f7)){logger[_0x6d6d('0x63')]('File:\x20\x22'+_0x3e48f7+_0x6d6d('0x64'));fs[_0x6d6d('0x65')](_0x3e48f7);}_0x3e48f7=_0x3e48f7+_0x6d6d('0x66');if(!_[_0x6d6d('0x67')](_0x2a21d8[_0x6d6d('0x4d')])&&fs[_0x6d6d('0x58')](_0x3e48f7)){logger['info'](_0x6d6d('0x68')+_0x3e48f7+_0x6d6d('0x64'));fs[_0x6d6d('0x65')](_0x3e48f7);}return _0x2a21d8;})[_0x6d6d('0x27')](function(_0x1ba731){if(!_0x1ba731)throw new InternalError();return _0x1ba731[_0x6d6d('0x28')]();})[_0x6d6d('0x27')](function(){_0x21f14c['status'](0xcc)[_0x6d6d('0x1b')]();})[_0x6d6d('0x46')](handleError(_0x21f14c,null));};
\ No newline at end of file
+var _0xeec6=['options','includeAll','include','findAll','rows','catch','show','params','keys','length','create','body','duration','createdAt','value','describe','../../components/encryptor','uniqueid','find','join','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','recording','root','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','download','message','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','ScreenRecording','rawAttributes','fieldName','type','model','format','filters','intersection','query','attributes','fields','nolimit','order','sort','where','pick','filter','merge'];(function(_0x4c8833,_0x14e755){var _0x30df54=function(_0x197811){while(--_0x197811){_0x4c8833['push'](_0x4c8833['shift']());}};_0x30df54(++_0x14e755);}(_0xeec6,0x1c2));var _0x6eec=function(_0x57486e,_0x32283b){_0x57486e=_0x57486e-0x0;var _0x5f110b=_0xeec6[_0x57486e];return _0x5f110b;};'use strict';var emlformat=require(_0x6eec('0x0'));var rimraf=require(_0x6eec('0x1'));var zipdir=require(_0x6eec('0x2'));var jsonpatch=require(_0x6eec('0x3'));var rp=require('request-promise');var moment=require(_0x6eec('0x4'));var BPromise=require(_0x6eec('0x5'));var Mustache=require(_0x6eec('0x6'));var util=require(_0x6eec('0x7'));var path=require(_0x6eec('0x8'));var sox=require(_0x6eec('0x9'));var csv=require('to-csv');var ejs=require(_0x6eec('0xa'));var fs=require('fs');var fs_extra=require(_0x6eec('0xb'));var _=require('lodash');var squel=require(_0x6eec('0xc'));var crypto=require(_0x6eec('0xd'));var jsforce=require(_0x6eec('0xe'));var deskjs=require(_0x6eec('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6eec('0x10'));var Papa=require(_0x6eec('0x11'));var Redis=require(_0x6eec('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6eec('0x13'));var logger=require(_0x6eec('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x6eec('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6eec('0x16'))['db'];function respondWithStatusCode(_0x3387c2,_0x162db1){_0x162db1=_0x162db1||0xcc;return function(_0x3fe94b){if(_0x3fe94b){return _0x3387c2[_0x6eec('0x17')](_0x162db1);}return _0x3387c2['status'](_0x162db1)[_0x6eec('0x18')]();};}function respondWithResult(_0x3b2972,_0x462dbb){_0x462dbb=_0x462dbb||0xc8;return function(_0xc35914){if(_0xc35914){return _0x3b2972[_0x6eec('0x19')](_0x462dbb)[_0x6eec('0x1a')](_0xc35914);}};}function respondWithFilteredResult(_0x345852,_0x393271){return function(_0x34a7fc){if(_0x34a7fc){var _0x2ac797=typeof _0x393271['offset']===_0x6eec('0x1b')&&typeof _0x393271['limit']===_0x6eec('0x1b');var _0x45aa3f=_0x34a7fc['count'];var _0x3ee353=_0x2ac797?0x0:_0x393271[_0x6eec('0x1c')];var _0xb1eab7=_0x2ac797?_0x34a7fc['count']:_0x393271[_0x6eec('0x1c')]+_0x393271[_0x6eec('0x1d')];var _0x3c7152;if(_0xb1eab7>=_0x45aa3f){_0xb1eab7=_0x45aa3f;_0x3c7152=0xc8;}else{_0x3c7152=0xce;}_0x345852[_0x6eec('0x19')](_0x3c7152);return _0x345852[_0x6eec('0x1e')](_0x6eec('0x1f'),_0x3ee353+'-'+_0xb1eab7+'/'+_0x45aa3f)['json'](_0x34a7fc);}return null;};}function patchUpdates(_0x328693){return function(_0x2f843e){try{jsonpatch[_0x6eec('0x20')](_0x2f843e,_0x328693,!![]);}catch(_0x34522a){return BPromise[_0x6eec('0x21')](_0x34522a);}return _0x2f843e[_0x6eec('0x22')]();};}function saveUpdates(_0x52f941,_0x6e40b3){return function(_0x852d08){if(_0x852d08){return _0x852d08[_0x6eec('0x23')](_0x52f941)[_0x6eec('0x24')](function(_0x409b26){return _0x409b26;});}return null;};}function removeEntity(_0x13863c,_0x573249){return function(_0x384586){if(_0x384586){return _0x384586[_0x6eec('0x25')]()[_0x6eec('0x24')](function(){_0x13863c[_0x6eec('0x19')](0xcc)[_0x6eec('0x18')]();});}};}function handleEntityNotFound(_0x1f386c,_0x29879c){return function(_0x20bed3){if(!_0x20bed3){_0x1f386c[_0x6eec('0x17')](0x194);}return _0x20bed3;};}function handleError(_0x58f95c,_0x1d750c){_0x1d750c=_0x1d750c||0x1f4;return function(_0x44b31c){logger[_0x6eec('0x26')](_0x44b31c[_0x6eec('0x27')]);if(_0x44b31c['name']){delete _0x44b31c[_0x6eec('0x28')];}_0x58f95c[_0x6eec('0x19')](_0x1d750c)['send'](_0x44b31c);};}exports['index']=function(_0x3240c3,_0x47ed95){var _0x20a130={},_0xede270={},_0x3bbdf8={'count':0x0,'rows':[]};var _0x34bdea=_[_0x6eec('0x29')](db[_0x6eec('0x2a')][_0x6eec('0x2b')],function(_0x33e4a1){return{'name':_0x33e4a1[_0x6eec('0x2c')],'type':_0x33e4a1[_0x6eec('0x2d')]['key']};});_0xede270[_0x6eec('0x2e')]=_['differenceBy'](_[_0x6eec('0x29')](_0x34bdea,_0x6eec('0x28')),[_0x6eec('0x2f')]);_0xede270['query']=_['keys'](_0x3240c3['query']);_0xede270[_0x6eec('0x30')]=_[_0x6eec('0x31')](_0xede270[_0x6eec('0x2e')],_0xede270[_0x6eec('0x32')]);_0x20a130[_0x6eec('0x33')]=_[_0x6eec('0x31')](_0xede270[_0x6eec('0x2e')],qs[_0x6eec('0x34')](_0x3240c3[_0x6eec('0x32')][_0x6eec('0x34')]));_0x20a130[_0x6eec('0x33')]=_0x20a130[_0x6eec('0x33')]['length']?_0x20a130[_0x6eec('0x33')]:_0xede270[_0x6eec('0x2e')];if(!_0x3240c3[_0x6eec('0x32')]['hasOwnProperty'](_0x6eec('0x35'))){_0x20a130[_0x6eec('0x1d')]=qs[_0x6eec('0x1d')](_0x3240c3[_0x6eec('0x32')][_0x6eec('0x1d')]);_0x20a130[_0x6eec('0x1c')]=qs['offset'](_0x3240c3[_0x6eec('0x32')][_0x6eec('0x1c')]);}_0x20a130[_0x6eec('0x36')]=qs['sort'](_0x3240c3['query'][_0x6eec('0x37')]);_0x20a130[_0x6eec('0x38')]=qs[_0x6eec('0x30')](_[_0x6eec('0x39')](_0x3240c3[_0x6eec('0x32')],_0xede270['filters']),_0x34bdea);if(_0x3240c3[_0x6eec('0x32')][_0x6eec('0x3a')]){_0x20a130[_0x6eec('0x38')]=_[_0x6eec('0x3b')](_0x20a130[_0x6eec('0x38')],{'$or':_[_0x6eec('0x29')](_0x34bdea,function(_0x36cfe1){if(_0x36cfe1[_0x6eec('0x2d')]!=='VIRTUAL'){var _0x2f7a75={};_0x2f7a75[_0x36cfe1[_0x6eec('0x28')]]={'$like':'%'+_0x3240c3['query']['filter']+'%'};return _0x2f7a75;}})});}_0x20a130=_[_0x6eec('0x3b')]({},_0x20a130,_0x3240c3[_0x6eec('0x3c')]);var _0xf056e0={'where':_0x20a130[_0x6eec('0x38')]};return db['ScreenRecording']['count'](_0xf056e0)[_0x6eec('0x24')](function(_0x48fbf6){_0x3bbdf8['count']=_0x48fbf6;if(_0x3240c3[_0x6eec('0x32')][_0x6eec('0x3d')]){_0x20a130[_0x6eec('0x3e')]=[{'all':!![]}];}return db[_0x6eec('0x2a')][_0x6eec('0x3f')](_0x20a130);})['then'](function(_0x931bcf){_0x3bbdf8[_0x6eec('0x40')]=_0x931bcf;return _0x3bbdf8;})['then'](respondWithFilteredResult(_0x47ed95,_0x20a130))[_0x6eec('0x41')](handleError(_0x47ed95,null));};exports[_0x6eec('0x42')]=function(_0x5028a2,_0x2d39bf){var _0x44d75d={'raw':![],'where':{'id':_0x5028a2[_0x6eec('0x43')]['id']}},_0x4e3b1e={};_0x4e3b1e[_0x6eec('0x2e')]=_[_0x6eec('0x44')](db[_0x6eec('0x2a')]['rawAttributes']);_0x4e3b1e[_0x6eec('0x32')]=_[_0x6eec('0x44')](_0x5028a2[_0x6eec('0x32')]);_0x4e3b1e[_0x6eec('0x30')]=_[_0x6eec('0x31')](_0x4e3b1e['model'],_0x4e3b1e['query']);_0x44d75d[_0x6eec('0x33')]=_[_0x6eec('0x31')](_0x4e3b1e[_0x6eec('0x2e')],qs[_0x6eec('0x34')](_0x5028a2[_0x6eec('0x32')]['fields']));_0x44d75d[_0x6eec('0x33')]=_0x44d75d['attributes'][_0x6eec('0x45')]?_0x44d75d[_0x6eec('0x33')]:_0x4e3b1e[_0x6eec('0x2e')];if(_0x5028a2['query'][_0x6eec('0x3d')]){_0x44d75d[_0x6eec('0x3e')]=[{'all':!![]}];}_0x44d75d=_[_0x6eec('0x3b')]({},_0x44d75d,_0x5028a2[_0x6eec('0x3c')]);return db[_0x6eec('0x2a')]['find'](_0x44d75d)[_0x6eec('0x24')](handleEntityNotFound(_0x2d39bf,null))['then'](respondWithResult(_0x2d39bf,null))['catch'](handleError(_0x2d39bf,null));};exports[_0x6eec('0x46')]=function(_0x535d96,_0x245a1b){return db[_0x6eec('0x2a')][_0x6eec('0x46')](_0x535d96['body'],{})['then'](respondWithResult(_0x245a1b,0xc9))[_0x6eec('0x41')](handleError(_0x245a1b,null));};exports[_0x6eec('0x23')]=function(_0x1d6626,_0x2d0fc0){if(_0x1d6626[_0x6eec('0x47')]['id']){delete _0x1d6626[_0x6eec('0x47')]['id'];}delete _0x1d6626[_0x6eec('0x47')][_0x6eec('0x48')];delete _0x1d6626[_0x6eec('0x47')][_0x6eec('0x49')];delete _0x1d6626['body']['closedAt'];delete _0x1d6626[_0x6eec('0x47')][_0x6eec('0x4a')];return db[_0x6eec('0x2a')]['find']({'where':{'id':_0x1d6626[_0x6eec('0x43')]['id']}})[_0x6eec('0x24')](handleEntityNotFound(_0x2d0fc0,null))[_0x6eec('0x24')](saveUpdates(_0x1d6626[_0x6eec('0x47')],null))[_0x6eec('0x24')](respondWithResult(_0x2d0fc0,null))[_0x6eec('0x41')](handleError(_0x2d0fc0,null));};exports[_0x6eec('0x4b')]=function(_0x413de9,_0x5a6e05){return db[_0x6eec('0x2a')][_0x6eec('0x4b')]()[_0x6eec('0x24')](respondWithResult(_0x5a6e05,null))[_0x6eec('0x41')](handleError(_0x5a6e05,null));};exports['download']=function(_0x51fd37,_0x50436d,_0x36c49b){var _0x32b289=require(_0x6eec('0x4c'));var _0x1de626=![];var _0x5178f5={};if(_0x51fd37['query'][_0x6eec('0x2d')]&&_0x51fd37[_0x6eec('0x32')][_0x6eec('0x2d')]==='uniqueid'){_0x5178f5[_0x6eec('0x4d')]=_0x51fd37[_0x6eec('0x43')]['id'];}else{_0x5178f5['id']=_0x51fd37[_0x6eec('0x43')]['id'];}return db[_0x6eec('0x2a')][_0x6eec('0x4e')]({'where':_0x5178f5,'attributes':['id',_0x6eec('0x4a')],'raw':!![]})[_0x6eec('0x24')](handleEntityNotFound(_0x50436d,null))[_0x6eec('0x24')](function(_0x45fed3){if(_0x45fed3){var _0x4e921a=path[_0x6eec('0x4f')](config['root'],_0x6eec('0x50'),_0x45fed3[_0x6eec('0x4a')]);var _0x424962=util[_0x6eec('0x2f')](_0x6eec('0x51'),_0x4e921a);if(fs[_0x6eec('0x52')](_0x424962)){_0x1de626=!![];return _0x32b289[_0x6eec('0x53')](_0x424962,_0x4e921a,config['secrets'][_0x6eec('0x54')])['then'](function(){return _0x45fed3;});}return _0x45fed3;}})[_0x6eec('0x24')](function(_0x5c905f){if(_0x5c905f){var _0x237324=path[_0x6eec('0x4f')](config[_0x6eec('0x55')],_0x6eec('0x50'),_0x5c905f[_0x6eec('0x4a')]);if(!fs[_0x6eec('0x52')](_0x237324)){throw new db[(_0x6eec('0x56'))][(_0x6eec('0x57'))](_0x6eec('0x58'));}if(_0x5c905f[_0x6eec('0x59')]){return _0x50436d['download'](_0x237324,_0x5c905f['filename']+path[_0x6eec('0x5a')](_0x237324),function(){if(_0x1de626){fs[_0x6eec('0x5b')](_0x237324);}});}else{return _0x50436d[_0x6eec('0x5c')](_0x237324,function(_0x2c0644){if(_0x1de626){fs[_0x6eec('0x5b')](_0x237324);}});}}})['catch'](function(_0x1d8fb1){if(_0x1d8fb1[_0x6eec('0x5d')]==='ScreenRecording\x20not\x20found'){_0x50436d['status'](0x194)['send'](_0x6eec('0x5e'));}else{return handleError(_0x50436d,null);}});};exports[_0x6eec('0x25')]=function(_0x4cf859,_0x1d2baf){return db[_0x6eec('0x2a')]['find']({'where':{'id':_0x4cf859[_0x6eec('0x43')]['id']}})[_0x6eec('0x24')](function(_0xc852b3){if(_[_0x6eec('0x5f')](_0xc852b3)){throw new ReferenceError('Entity\x20not\x20found');}return _0xc852b3;})['then'](function(_0x54fcd0){var _0x1230fc=path[_0x6eec('0x4f')](config[_0x6eec('0x55')],_0x6eec('0x50'),_0x54fcd0[_0x6eec('0x4a')]);logger[_0x6eec('0x60')](_0x6eec('0x61'),_0x1230fc);if(!_[_0x6eec('0x5f')](_0x54fcd0[_0x6eec('0x4a')])&&fs[_0x6eec('0x52')](_0x1230fc)){logger[_0x6eec('0x60')](_0x6eec('0x62')+_0x1230fc+_0x6eec('0x63'));fs[_0x6eec('0x64')](_0x1230fc);}_0x1230fc=_0x1230fc+_0x6eec('0x65');if(!_[_0x6eec('0x5f')](_0x54fcd0['value'])&&fs[_0x6eec('0x52')](_0x1230fc)){logger[_0x6eec('0x60')]('File:\x20\x22'+_0x1230fc+_0x6eec('0x63'));fs[_0x6eec('0x64')](_0x1230fc);}return _0x54fcd0;})['then'](function(_0x7dd727){if(!_0x7dd727)throw new InternalError();return _0x7dd727[_0x6eec('0x25')]();})[_0x6eec('0x24')](function(){_0x1d2baf[_0x6eec('0x19')](0xcc)['end']();})[_0x6eec('0x41')](handleError(_0x1d2baf,null));};
\ No newline at end of file
index 327b209..7b4f839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba25=['api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','screen_recordings','interactionid','lodash','util','../../config/logger'];(function(_0x4360f0,_0x39d82c){var _0x12aeac=function(_0x2a0892){while(--_0x2a0892){_0x4360f0['push'](_0x4360f0['shift']());}};_0x12aeac(++_0x39d82c);}(_0xba25,0x8c));var _0x5ba2=function(_0x13c80e,_0x14e62b){_0x13c80e=_0x13c80e-0x0;var _0x23a96e=_0xba25[_0x13c80e];return _0x23a96e;};'use strict';var _=require(_0x5ba2('0x0'));var util=require(_0x5ba2('0x1'));var logger=require(_0x5ba2('0x2'))(_0x5ba2('0x3'));var moment=require(_0x5ba2('0x4'));var BPromise=require(_0x5ba2('0x5'));var rp=require(_0x5ba2('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5ba2('0x7'));var config=require(_0x5ba2('0x8'));var attributes=require('./screenRecording.attributes');module[_0x5ba2('0x9')]=function(_0x2a5f6c,_0x123685){return _0x2a5f6c[_0x5ba2('0xa')]('ScreenRecording',attributes,{'tableName':_0x5ba2('0xb'),'paranoid':![],'indexes':[{'name':_0x5ba2('0xc'),'fields':[_0x5ba2('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4280=['exports','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x4651ae,_0x3d2bc0){var _0x29a97c=function(_0xf05c25){while(--_0xf05c25){_0x4651ae['push'](_0x4651ae['shift']());}};_0x29a97c(++_0x3d2bc0);}(_0x4280,0x1b1));var _0x0428=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4280[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0428('0x0'));var util=require(_0x0428('0x1'));var logger=require(_0x0428('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0428('0x3'));var rp=require(_0x0428('0x4'));var fs=require('fs');var path=require(_0x0428('0x5'));var rimraf=require(_0x0428('0x6'));var config=require(_0x0428('0x7'));var attributes=require(_0x0428('0x8'));module[_0x0428('0x9')]=function(_0x197e0f,_0x372914){return _0x197e0f['define'](_0x0428('0xa'),attributes,{'tableName':_0x0428('0xb'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0x0428('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 2a8e715..1177cfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3a8=['ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info'];(function(_0x173f5c,_0x2c526){var _0x32c9ae=function(_0x3f7ed5){while(--_0x3f7ed5){_0x173f5c['push'](_0x173f5c['shift']());}};_0x32c9ae(++_0x2c526);}(_0xd3a8,0x16a));var _0x8d3a=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xd3a8[_0x8c43de];return _0xa6591b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8d3a('0x0'));var BPromise=require(_0x8d3a('0x1'));var rs=require(_0x8d3a('0x2'));var fs=require('fs');var Redis=require(_0x8d3a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8d3a('0x4'));var logger=require(_0x8d3a('0x5'))(_0x8d3a('0x6'));var config=require(_0x8d3a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8d3a('0x8')][_0x8d3a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8441cf,_0x4fb2a3,_0x44bb67){return new BPromise(function(_0x3ceb65,_0x432729){return client[_0x8d3a('0xa')](_0x8441cf,_0x44bb67)['then'](function(_0xea7a2e){logger[_0x8d3a('0xb')](_0x8d3a('0xc'),_0x4fb2a3,_0x8d3a('0xd'));logger[_0x8d3a('0xe')](_0x8d3a('0xf'),_0x4fb2a3,_0x8d3a('0xd'),JSON[_0x8d3a('0x10')](_0xea7a2e));if(_0xea7a2e['error']){if(_0xea7a2e[_0x8d3a('0x11')][_0x8d3a('0x12')]===0x1f4){logger[_0x8d3a('0x11')](_0x8d3a('0xc'),_0x4fb2a3,_0xea7a2e[_0x8d3a('0x11')]['message']);return _0x432729(_0xea7a2e[_0x8d3a('0x11')][_0x8d3a('0x13')]);}logger[_0x8d3a('0x11')](_0x8d3a('0xc'),_0x4fb2a3,_0xea7a2e['error'][_0x8d3a('0x13')]);return _0x3ceb65(_0xea7a2e[_0x8d3a('0x11')][_0x8d3a('0x13')]);}else{logger['info'](_0x8d3a('0xc'),_0x4fb2a3,_0x8d3a('0xd'));_0x3ceb65(_0xea7a2e[_0x8d3a('0x14')][_0x8d3a('0x13')]);}})[_0x8d3a('0x15')](function(_0x309d3d){logger[_0x8d3a('0x11')](_0x8d3a('0xc'),_0x4fb2a3,_0x309d3d);_0x432729(_0x309d3d);});});}
\ No newline at end of file
+var _0x5352=['jayson/promise','http','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','ScreenRecording,\x20%s,\x20%s,\x20%s','error','code','message','result','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x39cbdd,_0x32b179){var _0x53bbe8=function(_0x4f66ef){while(--_0x4f66ef){_0x39cbdd['push'](_0x39cbdd['shift']());}};_0x53bbe8(++_0x32b179);}(_0x5352,0x77));var _0x2535=function(_0x50783d,_0x1d4c75){_0x50783d=_0x50783d-0x0;var _0x3c16bc=_0x5352[_0x50783d];return _0x3c16bc;};'use strict';var _=require('lodash');var util=require(_0x2535('0x0'));var moment=require(_0x2535('0x1'));var BPromise=require('bluebird');var rs=require(_0x2535('0x2'));var fs=require('fs');var Redis=require(_0x2535('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2535('0x4'));var logger=require(_0x2535('0x5'))(_0x2535('0x6'));var config=require('../../config/environment');var jayson=require(_0x2535('0x7'));var client=jayson['client'][_0x2535('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x19cafe,_0xb2ddc3,_0x17c642){return new BPromise(function(_0x59d5e6,_0x5264c7){return client['request'](_0x19cafe,_0x17c642)[_0x2535('0x9')](function(_0x1e1327){logger[_0x2535('0xa')](_0x2535('0xb'),_0xb2ddc3,_0x2535('0xc'));logger['debug'](_0x2535('0xd'),_0xb2ddc3,_0x2535('0xc'),JSON['stringify'](_0x1e1327));if(_0x1e1327['error']){if(_0x1e1327[_0x2535('0xe')][_0x2535('0xf')]===0x1f4){logger[_0x2535('0xe')](_0x2535('0xb'),_0xb2ddc3,_0x1e1327['error'][_0x2535('0x10')]);return _0x5264c7(_0x1e1327[_0x2535('0xe')][_0x2535('0x10')]);}logger[_0x2535('0xe')](_0x2535('0xb'),_0xb2ddc3,_0x1e1327[_0x2535('0xe')]['message']);return _0x59d5e6(_0x1e1327[_0x2535('0xe')][_0x2535('0x10')]);}else{logger[_0x2535('0xa')]('ScreenRecording,\x20%s,\x20%s',_0xb2ddc3,_0x2535('0xc'));_0x59d5e6(_0x1e1327[_0x2535('0x11')]['message']);}})['catch'](function(_0x160475){logger[_0x2535('0xe')]('ScreenRecording,\x20%s,\x20%s',_0xb2ddc3,_0x160475);_0x5264c7(_0x160475);});});}
\ No newline at end of file
index 87291c6..3c9daab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6a9=['multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','/:id','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','getPreferred','getFavicon','diskStorage','server/files/images/logos/','format','%s%s','logo','originalname','post','/:id/logo','single','file','addLogo','join','root','logologin','extname','addLogoLogin','preferred','/:id/preferred','favicon','/:id/favicon','addFavicon','put','update','exports'];(function(_0x21bad5,_0x23a39d){var _0x235106=function(_0x281b1f){while(--_0x281b1f){_0x21bad5['push'](_0x21bad5['shift']());}};_0x235106(++_0x23a39d);}(_0xc6a9,0x160));var _0x9c6a=function(_0x279368,_0x41c002){_0x279368=_0x279368-0x0;var _0x40b6d0=_0xc6a9[_0x279368];return _0x40b6d0;};'use strict';var multer=require(_0x9c6a('0x0'));var util=require(_0x9c6a('0x1'));var path=require(_0x9c6a('0x2'));var timeout=require(_0x9c6a('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9c6a('0x4'));var auth=require(_0x9c6a('0x5'));var interaction=require(_0x9c6a('0x6'));var config=require(_0x9c6a('0x7'));var controller=require(_0x9c6a('0x8'));router[_0x9c6a('0x9')]('/',auth[_0x9c6a('0xa')](),controller[_0x9c6a('0xb')]);router['get'](_0x9c6a('0xc'),controller['getDate']);router[_0x9c6a('0x9')](_0x9c6a('0xd'),controller['show']);router[_0x9c6a('0x9')]('/:id/logo',controller['getLogo']);router[_0x9c6a('0x9')](_0x9c6a('0xe'),controller[_0x9c6a('0xf')]);router[_0x9c6a('0x9')](_0x9c6a('0x10'),controller[_0x9c6a('0x11')]);router['get']('/:id/preferred',controller[_0x9c6a('0x12')]);router[_0x9c6a('0x9')]('/:id/favicon',controller[_0x9c6a('0x13')]);var upload=multer({'storage':multer[_0x9c6a('0x14')]({'destination':function(_0x2fd221,_0x19e50f,_0x4781fb){_0x4781fb(null,path['join'](config['root'],_0x9c6a('0x15')));},'filename':function(_0x3e1768,_0x3ab63b,_0x1881d0){_0x1881d0(null,util[_0x9c6a('0x16')](_0x9c6a('0x17'),_0x9c6a('0x18'),path['extname'](_0x3ab63b[_0x9c6a('0x19')])));}})});router[_0x9c6a('0x1a')](_0x9c6a('0x1b'),upload[_0x9c6a('0x1c')](_0x9c6a('0x1d')),controller[_0x9c6a('0x1e')]);var upload=multer({'storage':multer[_0x9c6a('0x14')]({'destination':function(_0x275ea0,_0x59d23b,_0x2c452b){_0x2c452b(null,path[_0x9c6a('0x1f')](config[_0x9c6a('0x20')],_0x9c6a('0x15')));},'filename':function(_0x13d335,_0x575d5a,_0x490ae5){_0x490ae5(null,util[_0x9c6a('0x16')](_0x9c6a('0x17'),_0x9c6a('0x21'),path[_0x9c6a('0x22')](_0x575d5a[_0x9c6a('0x19')])));}})});router[_0x9c6a('0x1a')]('/:id/logo_login',upload[_0x9c6a('0x1c')](_0x9c6a('0x1d')),controller[_0x9c6a('0x23')]);var upload=multer({'storage':multer[_0x9c6a('0x14')]({'destination':function(_0x1c395c,_0x551820,_0x142f5e){_0x142f5e(null,path[_0x9c6a('0x1f')](config[_0x9c6a('0x20')],'server/files/images/logos/'));},'filename':function(_0x83743e,_0x230573,_0x1fb9d3){_0x1fb9d3(null,util[_0x9c6a('0x16')]('%s%s',_0x9c6a('0x24'),path[_0x9c6a('0x22')](_0x230573[_0x9c6a('0x19')])));}})});router[_0x9c6a('0x1a')](_0x9c6a('0x25'),upload[_0x9c6a('0x1c')]('file'),controller['addPreferred']);var upload=multer({'storage':multer[_0x9c6a('0x14')]({'destination':function(_0x12a3b9,_0x172a69,_0x2eae77){_0x2eae77(null,path['join'](config[_0x9c6a('0x20')],_0x9c6a('0x15')));},'filename':function(_0x47404d,_0x12d887,_0x5753ea){_0x5753ea(null,util[_0x9c6a('0x16')](_0x9c6a('0x17'),_0x9c6a('0x26'),path[_0x9c6a('0x22')](_0x12d887[_0x9c6a('0x19')])));}})});router[_0x9c6a('0x1a')](_0x9c6a('0x27'),upload[_0x9c6a('0x1c')](_0x9c6a('0x1d')),controller[_0x9c6a('0x28')]);router[_0x9c6a('0x29')]('/:id',auth[_0x9c6a('0xa')](),controller[_0x9c6a('0x2a')]);module[_0x9c6a('0x2b')]=router;
\ No newline at end of file
+var _0x97a2=['addPreferred','addFavicon','put','isAuthenticated','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','index','/now','getDate','/:id','show','getLogo','/:id/logo_login','getLogoLogin','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','join','root','server/files/images/logos/','format','extname','originalname','post','single','file','diskStorage','%s%s','logologin','addLogoLogin','preferred'];(function(_0xdfafa4,_0x19684b){var _0x2ef523=function(_0x5d731a){while(--_0x5d731a){_0xdfafa4['push'](_0xdfafa4['shift']());}};_0x2ef523(++_0x19684b);}(_0x97a2,0x114));var _0x297a=function(_0x5d5c9b,_0x594dfe){_0x5d5c9b=_0x5d5c9b-0x0;var _0x407b3e=_0x97a2[_0x5d5c9b];return _0x407b3e;};'use strict';var multer=require(_0x297a('0x0'));var util=require(_0x297a('0x1'));var path=require(_0x297a('0x2'));var timeout=require(_0x297a('0x3'));var express=require(_0x297a('0x4'));var router=express[_0x297a('0x5')]();var fs_extra=require(_0x297a('0x6'));var auth=require(_0x297a('0x7'));var interaction=require(_0x297a('0x8'));var config=require(_0x297a('0x9'));var controller=require(_0x297a('0xa'));router[_0x297a('0xb')]('/',auth['isAuthenticated'](),controller[_0x297a('0xc')]);router['get'](_0x297a('0xd'),controller[_0x297a('0xe')]);router[_0x297a('0xb')](_0x297a('0xf'),controller[_0x297a('0x10')]);router[_0x297a('0xb')]('/:id/logo',controller[_0x297a('0x11')]);router[_0x297a('0xb')](_0x297a('0x12'),controller[_0x297a('0x13')]);router[_0x297a('0xb')]('/:id/gdpr',controller[_0x297a('0x14')]);router[_0x297a('0xb')](_0x297a('0x15'),controller[_0x297a('0x16')]);router[_0x297a('0xb')](_0x297a('0x17'),controller[_0x297a('0x18')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4ab419,_0x5e9bf7,_0x18d83c){_0x18d83c(null,path[_0x297a('0x19')](config[_0x297a('0x1a')],_0x297a('0x1b')));},'filename':function(_0x50dc67,_0x2bc022,_0x4024ae){_0x4024ae(null,util[_0x297a('0x1c')]('%s%s','logo',path[_0x297a('0x1d')](_0x2bc022[_0x297a('0x1e')])));}})});router[_0x297a('0x1f')]('/:id/logo',upload[_0x297a('0x20')](_0x297a('0x21')),controller['addLogo']);var upload=multer({'storage':multer[_0x297a('0x22')]({'destination':function(_0x6fcd78,_0xbad9e6,_0xd7572){_0xd7572(null,path[_0x297a('0x19')](config[_0x297a('0x1a')],'server/files/images/logos/'));},'filename':function(_0x59e2ef,_0x3bcc9b,_0x14304c){_0x14304c(null,util[_0x297a('0x1c')](_0x297a('0x23'),_0x297a('0x24'),path[_0x297a('0x1d')](_0x3bcc9b['originalname'])));}})});router[_0x297a('0x1f')](_0x297a('0x12'),upload['single']('file'),controller[_0x297a('0x25')]);var upload=multer({'storage':multer[_0x297a('0x22')]({'destination':function(_0x5f54d2,_0x11def1,_0xc74065){_0xc74065(null,path[_0x297a('0x19')](config[_0x297a('0x1a')],_0x297a('0x1b')));},'filename':function(_0xd6ee1d,_0xd68784,_0x157df0){_0x157df0(null,util[_0x297a('0x1c')](_0x297a('0x23'),_0x297a('0x26'),path[_0x297a('0x1d')](_0xd68784[_0x297a('0x1e')])));}})});router['post'](_0x297a('0x15'),upload[_0x297a('0x20')]('file'),controller[_0x297a('0x27')]);var upload=multer({'storage':multer[_0x297a('0x22')]({'destination':function(_0x2ca897,_0x18f669,_0x906810){_0x906810(null,path['join'](config['root'],_0x297a('0x1b')));},'filename':function(_0x19a38f,_0x408ebf,_0x2aa2ea){_0x2aa2ea(null,util[_0x297a('0x1c')](_0x297a('0x23'),'favicon',path[_0x297a('0x1d')](_0x408ebf[_0x297a('0x1e')])));}})});router[_0x297a('0x1f')](_0x297a('0x17'),upload[_0x297a('0x20')](_0x297a('0x21')),controller[_0x297a('0x28')]);router[_0x297a('0x29')](_0x297a('0xf'),auth[_0x297a('0x2a')](),controller[_0x297a('0x2b')]);module[_0x297a('0x2c')]=router;
\ No newline at end of file
index be507f3..5005747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8c3=['https://www.xcally.com/bar/phonebar/autoupdater.xml','alternate','UNSIGNED','exports','min_internal','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0xc8c3,0x143));var _0x3c8c=function(_0x18fb16,_0x45edbc){_0x18fb16=_0x18fb16-0x0;var _0x147b0d=_0xc8c3[_0x18fb16];return _0x147b0d;};'use strict';var Sequelize=require('sequelize');module[_0x3c8c('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x3c8c('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x3c8c('0x2')](0xb),'unique':_0x3c8c('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x3c8c('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x3c8c('0x4')],'defaultValue':_0x3c8c('0x5')},'logo':{'type':Sequelize[_0x3c8c('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x3c8c('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize['STRING']},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize[_0x3c8c('0x4')]},'pageTitle':{'type':Sequelize[_0x3c8c('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x3c8c('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x3c8c('0x4')],'defaultValue':_0x3c8c('0x7')},'enableEmailPreview':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x3c8c('0x4')],'defaultValue':_0x3c8c('0x8')},'chatTimeout':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x3c8c('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x3c8c('0x4')]},'defaultFavicon':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x3c8c('0x2')]},'transcribeRegion':{'type':Sequelize[_0x3c8c('0x4')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x3c8c('0x2')]},'sentimentRegion':{'type':Sequelize[_0x3c8c('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x3c8c('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x3c8c('0x2')](0x2)[_0x3c8c('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)[_0x3c8c('0x9')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x3c8c('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x3c8c('0x2')](0x2)[_0x3c8c('0x9')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x3c8c('0x2')],'defaultValue':0x14},'filterFullName':{'type':Sequelize[_0x3c8c('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf060=['min_mailbox','/var/opt/motion2/server/files/sounds/converted','STRING','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','alternate','UNSIGNED','sequelize','exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf060,0x7f));var _0x0f06=function(_0x5a120c,_0x2265bc){_0x5a120c=_0x5a120c-0x0;var _0x59e6f0=_0xf060[_0x5a120c];return _0x59e6f0;};'use strict';var Sequelize=require(_0x0f06('0x0'));module[_0x0f06('0x1')]={'min_internal':{'type':Sequelize[_0x0f06('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0f06('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x0f06('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize['STRING'],'defaultValue':_0x0f06('0x4')},'logo':{'type':Sequelize[_0x0f06('0x5')]},'defaultLogo':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0f06('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0f06('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x0f06('0x5')]},'turnaddr':{'type':Sequelize[_0x0f06('0x5')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize[_0x0f06('0x5')]},'pageTitle':{'type':Sequelize[_0x0f06('0x5')]},'defaultPageTitle':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0f06('0x5')],'defaultValue':_0x0f06('0x7')},'enableEmailPreview':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0f06('0x5')],'defaultValue':_0x0f06('0x8')},'chatTimeout':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x0f06('0x5')]},'defaultPreferred':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0f06('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0f06('0x5')]},'defaultFavicon':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x0f06('0x2')]},'transcribeRegion':{'type':Sequelize[_0x0f06('0x5')]},'sentiment':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0f06('0x2')]},'sentimentRegion':{'type':Sequelize[_0x0f06('0x5')]},'language':{'type':Sequelize[_0x0f06('0x5')]},'bucket':{'type':Sequelize[_0x0f06('0x5')]},'googleSsoEnabled':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0f06('0x2')](0x2)[_0x0f06('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0f06('0x2')](0x2)[_0x0f06('0x9')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0f06('0x2')](0x2)[_0x0f06('0x9')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x0f06('0x9')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize[_0x0f06('0x6')],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0f06('0x2')],'defaultValue':0x14},'filterFullName':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 010e344..231e297 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6475=['type','key','model','name','query','filters','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','merge','options','Setting','includeAll','findAll','rows','show','params','keys','intersection','length','include','body','find','addLogo','file','filename','logo','addLogoLogin','../../config/license/util','getLogo','server/files/images/logos','getLicense','loginLogo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','ValidationError','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','securePassword','addPreferred','getPreferred','default_preferred.png','Sequelize','addFavicon','getFavicon','getDate','utcOffset','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','sendStatus','stack','send','index','map','rawAttributes','fieldName'];(function(_0x5a5053,_0x1aedf9){var _0x41cced=function(_0x1db04a){while(--_0x1db04a){_0x5a5053['push'](_0x5a5053['shift']());}};_0x41cced(++_0x1aedf9);}(_0x6475,0x133));var _0x5647=function(_0x5e58b2,_0x1b7ed4){_0x5e58b2=_0x5e58b2-0x0;var _0x4facd0=_0x6475[_0x5e58b2];return _0x4facd0;};'use strict';var emlformat=require(_0x5647('0x0'));var rimraf=require(_0x5647('0x1'));var zipdir=require(_0x5647('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5647('0x3'));var moment=require(_0x5647('0x4'));var BPromise=require(_0x5647('0x5'));var Mustache=require('mustache');var util=require(_0x5647('0x6'));var path=require(_0x5647('0x7'));var sox=require(_0x5647('0x8'));var csv=require('to-csv');var ejs=require(_0x5647('0x9'));var fs=require('fs');var fs_extra=require(_0x5647('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5647('0xb'));var deskjs=require(_0x5647('0xc'));var toCsv=require(_0x5647('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5647('0xe'));var authService=require(_0x5647('0xf'));var qs=require(_0x5647('0x10'));var as=require(_0x5647('0x11'));var hardwareService=require(_0x5647('0x12'));var logger=require(_0x5647('0x13'))('api');var utils=require(_0x5647('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5647('0x15'))['db'];var jayson=require(_0x5647('0x16'));var client=jayson['client'][_0x5647('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x2847cf,_0x14a34f,_0x19ea32,_0x89c58b){return new BPromise(function(_0x4b4830,_0x59db35){var _0x28b504=_0x89c58b||client;return _0x28b504[_0x5647('0x18')](_0x2847cf,_0x19ea32)[_0x5647('0x19')](function(_0x41d981){logger[_0x5647('0x1a')](_0x5647('0x1b'),_0x14a34f,_0x5647('0x1c'));logger['debug'](_0x5647('0x1d'),_0x14a34f,'request\x20sent',JSON[_0x5647('0x1e')](_0x41d981));if(_0x41d981[_0x5647('0x1f')]){if(_0x41d981['error']['code']===0x1f4){logger['error'](_0x5647('0x1b'),_0x14a34f,_0x41d981['error']['message']);return _0x59db35(_0x41d981[_0x5647('0x1f')]['message']);}logger['error'](_0x5647('0x1b'),_0x14a34f,_0x41d981[_0x5647('0x1f')]['message']);return _0x4b4830(_0x41d981['error'][_0x5647('0x20')]);}else{logger[_0x5647('0x1a')](_0x5647('0x1b'),_0x14a34f,_0x5647('0x1c'));_0x4b4830(_0x41d981[_0x5647('0x21')]['message']);}})[_0x5647('0x22')](function(_0xb9057e){logger[_0x5647('0x1f')](_0x5647('0x1b'),_0x14a34f,_0xb9057e);_0x59db35(_0xb9057e);});});}function respondWithStatusCode(_0xbc562a,_0x949e98){_0x949e98=_0x949e98||0xcc;return function(_0x1618fd){if(_0x1618fd){return _0xbc562a['sendStatus'](_0x949e98);}return _0xbc562a[_0x5647('0x23')](_0x949e98)[_0x5647('0x24')]();};}function respondWithResult(_0x497aa3,_0x211070){_0x211070=_0x211070||0xc8;return function(_0xd4b01f){if(_0xd4b01f){return _0x497aa3[_0x5647('0x23')](_0x211070)[_0x5647('0x25')](_0xd4b01f);}};}function respondWithFilteredResult(_0x1f79dc,_0x3b918a){return function(_0x1d9079){if(_0x1d9079){var _0x494795=typeof _0x3b918a[_0x5647('0x26')]===_0x5647('0x27')&&typeof _0x3b918a['limit']===_0x5647('0x27');var _0x57beaf=_0x1d9079[_0x5647('0x28')];var _0x256c19=_0x494795?0x0:_0x3b918a[_0x5647('0x26')];var _0x5d504f=_0x494795?_0x1d9079[_0x5647('0x28')]:_0x3b918a[_0x5647('0x26')]+_0x3b918a[_0x5647('0x29')];var _0x37bb6b;if(_0x5d504f>=_0x57beaf){_0x5d504f=_0x57beaf;_0x37bb6b=0xc8;}else{_0x37bb6b=0xce;}_0x1f79dc[_0x5647('0x23')](_0x37bb6b);return _0x1f79dc[_0x5647('0x2a')](_0x5647('0x2b'),_0x256c19+'-'+_0x5d504f+'/'+_0x57beaf)[_0x5647('0x25')](_0x1d9079);}return null;};}function patchUpdates(_0x440742){return function(_0x3ef305){try{jsonpatch['apply'](_0x3ef305,_0x440742,!![]);}catch(_0x36accd){return BPromise[_0x5647('0x2c')](_0x36accd);}return _0x3ef305['save']();};}function saveUpdates(_0x49fe69,_0x459a6a){return function(_0x1fda76){if(_0x1fda76){return _0x1fda76[_0x5647('0x2d')](_0x49fe69)[_0x5647('0x19')](function(_0x37ca9e){return _0x37ca9e;});}return null;};}function removeEntity(_0x3c3326,_0x5a0284){return function(_0xf481b){if(_0xf481b){return _0xf481b['destroy']()['then'](function(){_0x3c3326[_0x5647('0x23')](0xcc)[_0x5647('0x24')]();});}};}function handleEntityNotFound(_0x1b21ed,_0x3b354b){return function(_0x17aa15){if(!_0x17aa15){_0x1b21ed[_0x5647('0x2e')](0x194);}return _0x17aa15;};}function handleError(_0x14d43e,_0x105d26){_0x105d26=_0x105d26||0x1f4;return function(_0x36de5f){logger[_0x5647('0x1f')](_0x36de5f[_0x5647('0x2f')]);if(_0x36de5f['name']){delete _0x36de5f['name'];}_0x14d43e[_0x5647('0x23')](_0x105d26)[_0x5647('0x30')](_0x36de5f);};}exports[_0x5647('0x31')]=function(_0x244ac5,_0x2d0728){var _0x353c51={},_0x4332d8={},_0x18b02d={'count':0x0,'rows':[]};var _0x17701a=_[_0x5647('0x32')](db['Setting'][_0x5647('0x33')],function(_0x558bf7){return{'name':_0x558bf7[_0x5647('0x34')],'type':_0x558bf7[_0x5647('0x35')][_0x5647('0x36')]};});_0x4332d8[_0x5647('0x37')]=_[_0x5647('0x32')](_0x17701a,_0x5647('0x38'));_0x4332d8[_0x5647('0x39')]=_['keys'](_0x244ac5[_0x5647('0x39')]);_0x4332d8[_0x5647('0x3a')]=_['intersection'](_0x4332d8[_0x5647('0x37')],_0x4332d8[_0x5647('0x39')]);_0x353c51[_0x5647('0x3b')]=_['intersection'](_0x4332d8[_0x5647('0x37')],qs[_0x5647('0x3c')](_0x244ac5['query'][_0x5647('0x3c')]));_0x353c51[_0x5647('0x3b')]=_0x353c51[_0x5647('0x3b')]['length']?_0x353c51['attributes']:_0x4332d8[_0x5647('0x37')];if(!_0x244ac5['query'][_0x5647('0x3d')]('nolimit')){_0x353c51[_0x5647('0x29')]=qs[_0x5647('0x29')](_0x244ac5[_0x5647('0x39')][_0x5647('0x29')]);_0x353c51[_0x5647('0x26')]=qs[_0x5647('0x26')](_0x244ac5['query'][_0x5647('0x26')]);}_0x353c51[_0x5647('0x3e')]=qs['sort'](_0x244ac5[_0x5647('0x39')][_0x5647('0x3f')]);_0x353c51['where']=qs[_0x5647('0x3a')](_[_0x5647('0x40')](_0x244ac5[_0x5647('0x39')],_0x4332d8[_0x5647('0x3a')]),_0x17701a);if(_0x244ac5[_0x5647('0x39')][_0x5647('0x41')]){_0x353c51[_0x5647('0x42')]=_[_0x5647('0x43')](_0x353c51[_0x5647('0x42')],{'$or':_['map'](_0x17701a,function(_0x5c81ba){if(_0x5c81ba[_0x5647('0x35')]!=='VIRTUAL'){var _0x4b2b66={};_0x4b2b66[_0x5c81ba[_0x5647('0x38')]]={'$like':'%'+_0x244ac5[_0x5647('0x39')][_0x5647('0x41')]+'%'};return _0x4b2b66;}})});}_0x353c51=_['merge']({},_0x353c51,_0x244ac5[_0x5647('0x44')]);var _0x4dcbe2={'where':_0x353c51[_0x5647('0x42')]};return db[_0x5647('0x45')][_0x5647('0x28')](_0x4dcbe2)['then'](function(_0x19ee7e){_0x18b02d['count']=_0x19ee7e;if(_0x244ac5[_0x5647('0x39')][_0x5647('0x46')]){_0x353c51['include']=[{'all':!![]}];}return db[_0x5647('0x45')][_0x5647('0x47')](_0x353c51);})[_0x5647('0x19')](function(_0x30598a){_0x18b02d[_0x5647('0x48')]=_0x30598a;return _0x18b02d;})[_0x5647('0x19')](respondWithFilteredResult(_0x2d0728,_0x353c51))[_0x5647('0x22')](handleError(_0x2d0728,null));};exports[_0x5647('0x49')]=function(_0x5dc54d,_0x5c08a3){var _0x7d2873={'raw':![],'where':{'id':_0x5dc54d[_0x5647('0x4a')]['id']}},_0x2cf80a={};_0x2cf80a[_0x5647('0x37')]=_[_0x5647('0x4b')](db[_0x5647('0x45')][_0x5647('0x33')]);_0x2cf80a[_0x5647('0x39')]=_[_0x5647('0x4b')](_0x5dc54d[_0x5647('0x39')]);_0x2cf80a[_0x5647('0x3a')]=_[_0x5647('0x4c')](_0x2cf80a[_0x5647('0x37')],_0x2cf80a[_0x5647('0x39')]);_0x7d2873[_0x5647('0x3b')]=_['intersection'](_0x2cf80a[_0x5647('0x37')],qs[_0x5647('0x3c')](_0x5dc54d['query']['fields']));_0x7d2873['attributes']=_0x7d2873['attributes'][_0x5647('0x4d')]?_0x7d2873['attributes']:_0x2cf80a[_0x5647('0x37')];if(_0x5dc54d['query'][_0x5647('0x46')]){_0x7d2873[_0x5647('0x4e')]=[{'all':!![]}];}_0x7d2873=_[_0x5647('0x43')]({},_0x7d2873,_0x5dc54d[_0x5647('0x44')]);return db[_0x5647('0x45')]['find'](_0x7d2873)[_0x5647('0x19')](handleEntityNotFound(_0x5c08a3,null))['then'](respondWithResult(_0x5c08a3,null))[_0x5647('0x22')](handleError(_0x5c08a3,null));};exports[_0x5647('0x2d')]=function(_0x43f261,_0x2a8b6a){if(_0x43f261[_0x5647('0x4f')]['id']){delete _0x43f261[_0x5647('0x4f')]['id'];}return db['Setting'][_0x5647('0x50')]({'where':{'id':_0x43f261['params']['id']}})[_0x5647('0x19')](handleEntityNotFound(_0x2a8b6a,null))[_0x5647('0x19')](saveUpdates(_0x43f261[_0x5647('0x4f')],null))['then'](respondWithResult(_0x2a8b6a,null))[_0x5647('0x22')](handleError(_0x2a8b6a,null));};exports[_0x5647('0x51')]=function(_0xea057,_0x5b063a,_0x12bcdb){if(_0xea057['file']&&_0xea057[_0x5647('0x52')][_0x5647('0x53')]){_0xea057[_0x5647('0x4f')][_0x5647('0x54')]=_0xea057[_0x5647('0x52')][_0x5647('0x53')];}return db['Setting'][_0x5647('0x50')]({'where':{'id':_0xea057[_0x5647('0x4a')]['id']}})[_0x5647('0x19')](handleEntityNotFound(_0x5b063a,null))[_0x5647('0x19')](saveUpdates(_0xea057[_0x5647('0x4f')],null))[_0x5647('0x19')](respondWithResult(_0x5b063a,null))[_0x5647('0x22')](handleError(_0x5b063a,null));};exports[_0x5647('0x55')]=function(_0x45d55a,_0x3e080b,_0xfc145b){if(_0x45d55a[_0x5647('0x52')]&&_0x45d55a['file']['filename']){_0x45d55a[_0x5647('0x4f')]['loginLogo']=_0x45d55a['file'][_0x5647('0x53')];}return db[_0x5647('0x45')][_0x5647('0x50')]({'where':{'id':_0x45d55a['params']['id']}})[_0x5647('0x19')](handleEntityNotFound(_0x3e080b,null))[_0x5647('0x19')](saveUpdates(_0x45d55a['body'],null))[_0x5647('0x19')](respondWithResult(_0x3e080b,null))[_0x5647('0x22')](handleError(_0x3e080b,null));};var utilLicense=require(_0x5647('0x56'));exports[_0x5647('0x57')]=function(_0x2af0ed,_0x144e08,_0x54bc84){var _0x289535=_0x5647('0x58');var _0x489409={'custom':![]};return utilLicense[_0x5647('0x59')]()['then'](function(_0x10574e){if(_0x10574e){_0x489409=_0x10574e;}return db[_0x5647('0x45')][_0x5647('0x50')]({'where':{'id':_0x2af0ed['params']['id']},'attributes':[_0x5647('0x54'),_0x5647('0x5a'),_0x5647('0x5b'),_0x5647('0x5c'),_0x5647('0x5d'),_0x5647('0x5e'),_0x5647('0x5f'),_0x5647('0x60')],'raw':!![]});})[_0x5647('0x19')](handleEntityNotFound(_0x144e08,null))[_0x5647('0x19')](function(_0xfbc01f){if(_0xfbc01f){var _0x38e078=_0xfbc01f[_0x5647('0x54')]&&fs[_0x5647('0x61')](path[_0x5647('0x62')](config[_0x5647('0x63')],_0x289535,_[_0x5647('0x64')](_0xfbc01f[_0x5647('0x54')])))?path[_0x5647('0x62')](config[_0x5647('0x63')],_0x289535,_[_0x5647('0x64')](_0xfbc01f[_0x5647('0x54')])):path['join'](config[_0x5647('0x63')],_0x289535,_[_0x5647('0x64')](_0x5647('0x65')));var _0x1511a2=_0x5647('0x66')+_[_0x5647('0x67')](_0x5647('0x54'));if(_0xfbc01f[_0x1511a2]||!_0x489409[_0x5647('0x68')]){_0x38e078=path['join'](config['root'],_0x289535,_[_0x5647('0x64')]('default_logo.svg'));}if(!fs[_0x5647('0x61')](_0x38e078)){throw new db['Sequelize'][(_0x5647('0x69'))](_[_0x5647('0x67')](_0x5647('0x54'))+_0x5647('0x6a'));}return _0x144e08[_0x5647('0x6b')](_0x38e078);}})['catch'](handleError(_0x144e08,null));};var utilLicense=require(_0x5647('0x56'));exports[_0x5647('0x6c')]=function(_0x4e3bad,_0x5923b5,_0x50f06e){var _0x137c1a='server/files/images/logos';var _0x454abf={'custom':![]};return utilLicense[_0x5647('0x59')]()[_0x5647('0x19')](function(_0x35c438){if(_0x35c438){_0x454abf=_0x35c438;}return db[_0x5647('0x45')]['find']({'where':{'id':_0x4e3bad['params']['id']},'attributes':[_0x5647('0x54'),_0x5647('0x5a'),_0x5647('0x5b'),_0x5647('0x5c'),_0x5647('0x5d'),_0x5647('0x5e'),'defaultPreferred',_0x5647('0x60')],'raw':!![]});})[_0x5647('0x19')](handleEntityNotFound(_0x5923b5,null))[_0x5647('0x19')](function(_0x160dff){if(_0x160dff){var _0xa72d5c=_0x160dff[_0x5647('0x5a')]&&fs['existsSync'](path['join'](config[_0x5647('0x63')],_0x137c1a,_['toLower'](_0x160dff['loginLogo'])))?path[_0x5647('0x62')](config[_0x5647('0x63')],_0x137c1a,_['toLower'](_0x160dff[_0x5647('0x5a')])):path['join'](config[_0x5647('0x63')],_0x137c1a,_['toLower'](_0x5647('0x6d')));var _0x4a341d=_0x5647('0x66')+_['upperFirst'](_0x5647('0x5a'));if(_0x160dff[_0x4a341d]||!_0x454abf[_0x5647('0x68')]){_0xa72d5c=path[_0x5647('0x62')](config[_0x5647('0x63')],_0x137c1a,_[_0x5647('0x64')](_0x5647('0x6d')));}if(!fs[_0x5647('0x61')](_0xa72d5c)){throw new db['Sequelize'][(_0x5647('0x69'))](_[_0x5647('0x67')]('loginLogo')+_0x5647('0x6a'));}return _0x5923b5[_0x5647('0x6b')](_0xa72d5c);}})[_0x5647('0x22')](handleError(_0x5923b5,null));};exports['gdpr']=function(_0x366d18,_0x20ce69){return db[_0x5647('0x45')]['find']({'where':{'id':_0x366d18['params']['id']},'attributes':[_0x5647('0x6e')]})[_0x5647('0x19')](respondWithResult(_0x20ce69,null))['catch'](handleError(_0x20ce69,null));};exports[_0x5647('0x6f')]=function(_0x5c5643,_0x24fa69,_0x317ecd){if(_0x5c5643[_0x5647('0x52')]&&_0x5c5643[_0x5647('0x52')]['filename']){_0x5c5643[_0x5647('0x4f')][_0x5647('0x5b')]=_0x5c5643[_0x5647('0x52')][_0x5647('0x53')];}return db[_0x5647('0x45')][_0x5647('0x50')]({'where':{'id':_0x5c5643[_0x5647('0x4a')]['id']}})[_0x5647('0x19')](handleEntityNotFound(_0x24fa69,null))['then'](saveUpdates(_0x5c5643[_0x5647('0x4f')],null))[_0x5647('0x19')](respondWithResult(_0x24fa69,null))[_0x5647('0x22')](handleError(_0x24fa69,null));};var utilLicense=require('../../config/license/util');exports[_0x5647('0x70')]=function(_0x2692f2,_0x28387a,_0x29c6df){var _0x3dc62d='server/files/images/logos';var _0x5d64e6={'custom':![]};return utilLicense['getLicense']()[_0x5647('0x19')](function(_0xd2f62f){if(_0xd2f62f){_0x5d64e6=_0xd2f62f;}return db['Setting'][_0x5647('0x50')]({'where':{'id':_0x2692f2[_0x5647('0x4a')]['id']},'attributes':[_0x5647('0x54'),_0x5647('0x5a'),_0x5647('0x5b'),_0x5647('0x5c'),_0x5647('0x5d'),_0x5647('0x5e'),_0x5647('0x5f'),_0x5647('0x60')],'raw':!![]});})[_0x5647('0x19')](handleEntityNotFound(_0x28387a,null))[_0x5647('0x19')](function(_0x5e9582){if(_0x5e9582){var _0x58b406=_0x5e9582[_0x5647('0x5b')]&&fs[_0x5647('0x61')](path[_0x5647('0x62')](config[_0x5647('0x63')],_0x3dc62d,_[_0x5647('0x64')](_0x5e9582[_0x5647('0x5b')])))?path['join'](config[_0x5647('0x63')],_0x3dc62d,_[_0x5647('0x64')](_0x5e9582[_0x5647('0x5b')])):path[_0x5647('0x62')](config['root'],_0x3dc62d,_[_0x5647('0x64')](_0x5647('0x71')));var _0x445303='default'+_[_0x5647('0x67')](_0x5647('0x5b'));if(_0x5e9582[_0x445303]||!_0x5d64e6[_0x5647('0x68')]||!_0x5d64e6[_0x5647('0x5b')]){_0x58b406=path[_0x5647('0x62')](config['root'],_0x3dc62d,_[_0x5647('0x64')](_0x5647('0x71')));}if(!fs[_0x5647('0x61')](_0x58b406)){throw new db[(_0x5647('0x72'))]['ValidationError'](_[_0x5647('0x67')](_0x5647('0x5b'))+'\x20not\x20found');}return _0x28387a[_0x5647('0x6b')](_0x58b406);}})[_0x5647('0x22')](handleError(_0x28387a,null));};exports[_0x5647('0x73')]=function(_0x467697,_0x2a7fc6,_0x1b6ea8){if(_0x467697[_0x5647('0x52')]&&_0x467697[_0x5647('0x52')]['filename']){_0x467697['body'][_0x5647('0x5c')]=_0x467697[_0x5647('0x52')]['filename'];}return db[_0x5647('0x45')][_0x5647('0x50')]({'where':{'id':_0x467697[_0x5647('0x4a')]['id']}})[_0x5647('0x19')](handleEntityNotFound(_0x2a7fc6,null))['then'](saveUpdates(_0x467697['body'],null))['then'](respondWithResult(_0x2a7fc6,null))['catch'](handleError(_0x2a7fc6,null));};var utilLicense=require(_0x5647('0x56'));exports[_0x5647('0x74')]=function(_0x510598,_0x24ae77,_0x142e93){var _0xa5541=_0x5647('0x58');var _0x2221cf={'custom':![]};return utilLicense[_0x5647('0x59')]()['then'](function(_0x2d7364){if(_0x2d7364){_0x2221cf=_0x2d7364;}return db['Setting'][_0x5647('0x50')]({'where':{'id':_0x510598[_0x5647('0x4a')]['id']},'attributes':[_0x5647('0x54'),_0x5647('0x5a'),_0x5647('0x5b'),_0x5647('0x5c'),_0x5647('0x5d'),_0x5647('0x5e'),'defaultPreferred',_0x5647('0x60')],'raw':!![]});})[_0x5647('0x19')](handleEntityNotFound(_0x24ae77,null))[_0x5647('0x19')](function(_0x3e17e0){if(_0x3e17e0){var _0x3826df=_0x3e17e0[_0x5647('0x5c')]&&fs[_0x5647('0x61')](path[_0x5647('0x62')](config['root'],_0xa5541,_[_0x5647('0x64')](_0x3e17e0[_0x5647('0x5c')])))?path[_0x5647('0x62')](config['root'],_0xa5541,_[_0x5647('0x64')](_0x3e17e0['favicon'])):path[_0x5647('0x62')](config[_0x5647('0x63')],_0xa5541,_[_0x5647('0x64')]('default_favicon.ico'));var _0x170c00=_0x5647('0x66')+_[_0x5647('0x67')](_0x5647('0x5c'));if(_0x3e17e0[_0x170c00]||!_0x2221cf[_0x5647('0x68')]){_0x3826df=path[_0x5647('0x62')](config[_0x5647('0x63')],_0xa5541,_[_0x5647('0x64')]('default_favicon.ico'));}if(!fs[_0x5647('0x61')](_0x3826df)){throw new db[(_0x5647('0x72'))]['ValidationError'](_[_0x5647('0x67')]('favicon')+_0x5647('0x6a'));}return _0x24ae77[_0x5647('0x6b')](_0x3826df);}})[_0x5647('0x22')](handleError(_0x24ae77,null));};exports[_0x5647('0x75')]=function(_0x424459,_0x4025e5){var _0x2bb503={'offset':moment()[_0x5647('0x76')]()};_0x2bb503['now']=moment()['utcOffset'](_0x2bb503[_0x5647('0x26')])['format'](_0x5647('0x77'));return _0x4025e5[_0x5647('0x23')](0xc8)[_0x5647('0x30')](_0x2bb503);};
\ No newline at end of file
+var _0xef39=['download','getLogoLogin','server/files/images/logos','loginLogo','defaultPreferred','defaultFavicon','default_loginLogo.svg','gdpr','securePassword','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','Setting','includeAll','include','findAll','rows','show','params','keys','rawAttributes','body','find','file','filename','logo','addLogoLogin','getLogo','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','existsSync','join','toLower','root','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError'];(function(_0x229f60,_0xa39be8){var _0xc2a01f=function(_0x5988bc){while(--_0x5988bc){_0x229f60['push'](_0x229f60['shift']());}};_0xc2a01f(++_0xa39be8);}(_0xef39,0x92));var _0x9ef3=function(_0x408c37,_0x18d655){_0x408c37=_0x408c37-0x0;var _0xf563=_0xef39[_0x408c37];return _0xf563;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9ef3('0x0'));var zipdir=require(_0x9ef3('0x1'));var jsonpatch=require(_0x9ef3('0x2'));var rp=require(_0x9ef3('0x3'));var moment=require(_0x9ef3('0x4'));var BPromise=require(_0x9ef3('0x5'));var Mustache=require(_0x9ef3('0x6'));var util=require(_0x9ef3('0x7'));var path=require(_0x9ef3('0x8'));var sox=require(_0x9ef3('0x9'));var csv=require(_0x9ef3('0xa'));var ejs=require(_0x9ef3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9ef3('0xc'));var squel=require(_0x9ef3('0xd'));var crypto=require(_0x9ef3('0xe'));var jsforce=require(_0x9ef3('0xf'));var deskjs=require(_0x9ef3('0x10'));var toCsv=require(_0x9ef3('0xa'));var querystring=require(_0x9ef3('0x11'));var Papa=require(_0x9ef3('0x12'));var Redis=require(_0x9ef3('0x13'));var authService=require(_0x9ef3('0x14'));var qs=require(_0x9ef3('0x15'));var as=require(_0x9ef3('0x16'));var hardwareService=require(_0x9ef3('0x17'));var logger=require('../../config/logger')(_0x9ef3('0x18'));var utils=require(_0x9ef3('0x19'));var config=require(_0x9ef3('0x1a'));var licenseUtil=require(_0x9ef3('0x1b'));var db=require(_0x9ef3('0x1c'))['db'];var jayson=require(_0x9ef3('0x1d'));var client=jayson['client'][_0x9ef3('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x239082,_0x232fd6,_0x5dd6c1,_0x1c196d){return new BPromise(function(_0xa1cda6,_0x50533b){var _0x36b5b3=_0x1c196d||client;return _0x36b5b3[_0x9ef3('0x1f')](_0x239082,_0x5dd6c1)[_0x9ef3('0x20')](function(_0x236cef){logger[_0x9ef3('0x21')](_0x9ef3('0x22'),_0x232fd6,'request\x20sent');logger[_0x9ef3('0x23')](_0x9ef3('0x24'),_0x232fd6,_0x9ef3('0x25'),JSON['stringify'](_0x236cef));if(_0x236cef[_0x9ef3('0x26')]){if(_0x236cef[_0x9ef3('0x26')]['code']===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x232fd6,_0x236cef[_0x9ef3('0x26')][_0x9ef3('0x27')]);return _0x50533b(_0x236cef['error']['message']);}logger['error'](_0x9ef3('0x22'),_0x232fd6,_0x236cef['error'][_0x9ef3('0x27')]);return _0xa1cda6(_0x236cef['error'][_0x9ef3('0x27')]);}else{logger[_0x9ef3('0x21')](_0x9ef3('0x22'),_0x232fd6,'request\x20sent');_0xa1cda6(_0x236cef[_0x9ef3('0x28')][_0x9ef3('0x27')]);}})[_0x9ef3('0x29')](function(_0x47b42b){logger[_0x9ef3('0x26')](_0x9ef3('0x22'),_0x232fd6,_0x47b42b);_0x50533b(_0x47b42b);});});}function respondWithStatusCode(_0x390cca,_0x463181){_0x463181=_0x463181||0xcc;return function(_0xecef8e){if(_0xecef8e){return _0x390cca[_0x9ef3('0x2a')](_0x463181);}return _0x390cca['status'](_0x463181)[_0x9ef3('0x2b')]();};}function respondWithResult(_0x2a6fa3,_0x14a41c){_0x14a41c=_0x14a41c||0xc8;return function(_0x540c9b){if(_0x540c9b){return _0x2a6fa3[_0x9ef3('0x2c')](_0x14a41c)[_0x9ef3('0x2d')](_0x540c9b);}};}function respondWithFilteredResult(_0x2e3f59,_0xfb2f8e){return function(_0x3802a2){if(_0x3802a2){var _0x173eb8=typeof _0xfb2f8e[_0x9ef3('0x2e')]===_0x9ef3('0x2f')&&typeof _0xfb2f8e[_0x9ef3('0x30')]===_0x9ef3('0x2f');var _0x4bd918=_0x3802a2[_0x9ef3('0x31')];var _0x5d3532=_0x173eb8?0x0:_0xfb2f8e[_0x9ef3('0x2e')];var _0x22f32a=_0x173eb8?_0x3802a2[_0x9ef3('0x31')]:_0xfb2f8e[_0x9ef3('0x2e')]+_0xfb2f8e[_0x9ef3('0x30')];var _0x2112f1;if(_0x22f32a>=_0x4bd918){_0x22f32a=_0x4bd918;_0x2112f1=0xc8;}else{_0x2112f1=0xce;}_0x2e3f59[_0x9ef3('0x2c')](_0x2112f1);return _0x2e3f59[_0x9ef3('0x32')](_0x9ef3('0x33'),_0x5d3532+'-'+_0x22f32a+'/'+_0x4bd918)[_0x9ef3('0x2d')](_0x3802a2);}return null;};}function patchUpdates(_0x490d20){return function(_0x13103){try{jsonpatch[_0x9ef3('0x34')](_0x13103,_0x490d20,!![]);}catch(_0x49a5ef){return BPromise[_0x9ef3('0x35')](_0x49a5ef);}return _0x13103[_0x9ef3('0x36')]();};}function saveUpdates(_0x310e62,_0x49fda8){return function(_0x5c4e75){if(_0x5c4e75){return _0x5c4e75[_0x9ef3('0x37')](_0x310e62)[_0x9ef3('0x20')](function(_0x3b2180){return _0x3b2180;});}return null;};}function removeEntity(_0x59f1bc,_0x32f3dc){return function(_0x4708a8){if(_0x4708a8){return _0x4708a8[_0x9ef3('0x38')]()[_0x9ef3('0x20')](function(){_0x59f1bc[_0x9ef3('0x2c')](0xcc)[_0x9ef3('0x2b')]();});}};}function handleEntityNotFound(_0x48e9e8,_0x273b7c){return function(_0x486e8b){if(!_0x486e8b){_0x48e9e8['sendStatus'](0x194);}return _0x486e8b;};}function handleError(_0x510165,_0x2c41fe){_0x2c41fe=_0x2c41fe||0x1f4;return function(_0x500479){logger[_0x9ef3('0x26')](_0x500479[_0x9ef3('0x39')]);if(_0x500479[_0x9ef3('0x3a')]){delete _0x500479[_0x9ef3('0x3a')];}_0x510165[_0x9ef3('0x2c')](_0x2c41fe)[_0x9ef3('0x3b')](_0x500479);};}exports[_0x9ef3('0x3c')]=function(_0x52a6eb,_0x5b1549){var _0x291316={},_0x348263={},_0x337d46={'count':0x0,'rows':[]};var _0x3dffeb=_[_0x9ef3('0x3d')](db['Setting']['rawAttributes'],function(_0x30203c){return{'name':_0x30203c[_0x9ef3('0x3e')],'type':_0x30203c[_0x9ef3('0x3f')][_0x9ef3('0x40')]};});_0x348263[_0x9ef3('0x41')]=_['map'](_0x3dffeb,_0x9ef3('0x3a'));_0x348263[_0x9ef3('0x42')]=_['keys'](_0x52a6eb[_0x9ef3('0x42')]);_0x348263[_0x9ef3('0x43')]=_[_0x9ef3('0x44')](_0x348263[_0x9ef3('0x41')],_0x348263[_0x9ef3('0x42')]);_0x291316[_0x9ef3('0x45')]=_['intersection'](_0x348263['model'],qs[_0x9ef3('0x46')](_0x52a6eb['query'][_0x9ef3('0x46')]));_0x291316['attributes']=_0x291316[_0x9ef3('0x45')][_0x9ef3('0x47')]?_0x291316['attributes']:_0x348263[_0x9ef3('0x41')];if(!_0x52a6eb[_0x9ef3('0x42')][_0x9ef3('0x48')](_0x9ef3('0x49'))){_0x291316['limit']=qs['limit'](_0x52a6eb['query'][_0x9ef3('0x30')]);_0x291316['offset']=qs[_0x9ef3('0x2e')](_0x52a6eb[_0x9ef3('0x42')][_0x9ef3('0x2e')]);}_0x291316['order']=qs[_0x9ef3('0x4a')](_0x52a6eb[_0x9ef3('0x42')][_0x9ef3('0x4a')]);_0x291316[_0x9ef3('0x4b')]=qs['filters'](_[_0x9ef3('0x4c')](_0x52a6eb['query'],_0x348263[_0x9ef3('0x43')]),_0x3dffeb);if(_0x52a6eb[_0x9ef3('0x42')]['filter']){_0x291316[_0x9ef3('0x4b')]=_[_0x9ef3('0x4d')](_0x291316['where'],{'$or':_[_0x9ef3('0x3d')](_0x3dffeb,function(_0x2c26d0){if(_0x2c26d0[_0x9ef3('0x3f')]!==_0x9ef3('0x4e')){var _0x141ed0={};_0x141ed0[_0x2c26d0['name']]={'$like':'%'+_0x52a6eb[_0x9ef3('0x42')][_0x9ef3('0x4f')]+'%'};return _0x141ed0;}})});}_0x291316=_[_0x9ef3('0x4d')]({},_0x291316,_0x52a6eb[_0x9ef3('0x50')]);var _0x6046ac={'where':_0x291316[_0x9ef3('0x4b')]};return db[_0x9ef3('0x51')][_0x9ef3('0x31')](_0x6046ac)[_0x9ef3('0x20')](function(_0x3c88dd){_0x337d46[_0x9ef3('0x31')]=_0x3c88dd;if(_0x52a6eb[_0x9ef3('0x42')][_0x9ef3('0x52')]){_0x291316[_0x9ef3('0x53')]=[{'all':!![]}];}return db[_0x9ef3('0x51')][_0x9ef3('0x54')](_0x291316);})[_0x9ef3('0x20')](function(_0xaac1a1){_0x337d46[_0x9ef3('0x55')]=_0xaac1a1;return _0x337d46;})[_0x9ef3('0x20')](respondWithFilteredResult(_0x5b1549,_0x291316))[_0x9ef3('0x29')](handleError(_0x5b1549,null));};exports[_0x9ef3('0x56')]=function(_0x24dc8e,_0x184b13){var _0x47c9c6={'raw':![],'where':{'id':_0x24dc8e[_0x9ef3('0x57')]['id']}},_0x341670={};_0x341670[_0x9ef3('0x41')]=_[_0x9ef3('0x58')](db[_0x9ef3('0x51')][_0x9ef3('0x59')]);_0x341670[_0x9ef3('0x42')]=_['keys'](_0x24dc8e[_0x9ef3('0x42')]);_0x341670[_0x9ef3('0x43')]=_[_0x9ef3('0x44')](_0x341670[_0x9ef3('0x41')],_0x341670[_0x9ef3('0x42')]);_0x47c9c6[_0x9ef3('0x45')]=_[_0x9ef3('0x44')](_0x341670[_0x9ef3('0x41')],qs['fields'](_0x24dc8e[_0x9ef3('0x42')]['fields']));_0x47c9c6[_0x9ef3('0x45')]=_0x47c9c6[_0x9ef3('0x45')]['length']?_0x47c9c6[_0x9ef3('0x45')]:_0x341670['model'];if(_0x24dc8e[_0x9ef3('0x42')][_0x9ef3('0x52')]){_0x47c9c6[_0x9ef3('0x53')]=[{'all':!![]}];}_0x47c9c6=_['merge']({},_0x47c9c6,_0x24dc8e[_0x9ef3('0x50')]);return db['Setting']['find'](_0x47c9c6)[_0x9ef3('0x20')](handleEntityNotFound(_0x184b13,null))[_0x9ef3('0x20')](respondWithResult(_0x184b13,null))[_0x9ef3('0x29')](handleError(_0x184b13,null));};exports[_0x9ef3('0x37')]=function(_0x4e4eda,_0x31af2a){if(_0x4e4eda[_0x9ef3('0x5a')]['id']){delete _0x4e4eda['body']['id'];}return db[_0x9ef3('0x51')][_0x9ef3('0x5b')]({'where':{'id':_0x4e4eda['params']['id']}})[_0x9ef3('0x20')](handleEntityNotFound(_0x31af2a,null))[_0x9ef3('0x20')](saveUpdates(_0x4e4eda[_0x9ef3('0x5a')],null))[_0x9ef3('0x20')](respondWithResult(_0x31af2a,null))[_0x9ef3('0x29')](handleError(_0x31af2a,null));};exports['addLogo']=function(_0x3cce0c,_0x3ad4db,_0x40f2ca){if(_0x3cce0c[_0x9ef3('0x5c')]&&_0x3cce0c[_0x9ef3('0x5c')][_0x9ef3('0x5d')]){_0x3cce0c[_0x9ef3('0x5a')][_0x9ef3('0x5e')]=_0x3cce0c[_0x9ef3('0x5c')][_0x9ef3('0x5d')];}return db[_0x9ef3('0x51')]['find']({'where':{'id':_0x3cce0c[_0x9ef3('0x57')]['id']}})['then'](handleEntityNotFound(_0x3ad4db,null))[_0x9ef3('0x20')](saveUpdates(_0x3cce0c[_0x9ef3('0x5a')],null))[_0x9ef3('0x20')](respondWithResult(_0x3ad4db,null))['catch'](handleError(_0x3ad4db,null));};exports[_0x9ef3('0x5f')]=function(_0x2d1283,_0x3da1ad,_0x2f93f0){if(_0x2d1283['file']&&_0x2d1283[_0x9ef3('0x5c')][_0x9ef3('0x5d')]){_0x2d1283[_0x9ef3('0x5a')]['loginLogo']=_0x2d1283[_0x9ef3('0x5c')]['filename'];}return db[_0x9ef3('0x51')][_0x9ef3('0x5b')]({'where':{'id':_0x2d1283[_0x9ef3('0x57')]['id']}})[_0x9ef3('0x20')](handleEntityNotFound(_0x3da1ad,null))[_0x9ef3('0x20')](saveUpdates(_0x2d1283[_0x9ef3('0x5a')],null))['then'](respondWithResult(_0x3da1ad,null))[_0x9ef3('0x29')](handleError(_0x3da1ad,null));};var utilLicense=require('../../config/license/util');exports[_0x9ef3('0x60')]=function(_0x4b2d51,_0x2421e0,_0x1a7515){var _0x2980ee='server/files/images/logos';var _0x4a44af={'custom':![]};return utilLicense[_0x9ef3('0x61')]()[_0x9ef3('0x20')](function(_0x346a0d){if(_0x346a0d){_0x4a44af=_0x346a0d;}return db[_0x9ef3('0x51')][_0x9ef3('0x5b')]({'where':{'id':_0x4b2d51[_0x9ef3('0x57')]['id']},'attributes':[_0x9ef3('0x5e'),'loginLogo',_0x9ef3('0x62'),_0x9ef3('0x63'),_0x9ef3('0x64'),_0x9ef3('0x65'),'defaultPreferred','defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x2421e0,null))[_0x9ef3('0x20')](function(_0xc17d87){if(_0xc17d87){var _0x5919d9=_0xc17d87[_0x9ef3('0x5e')]&&fs[_0x9ef3('0x66')](path[_0x9ef3('0x67')](config['root'],_0x2980ee,_[_0x9ef3('0x68')](_0xc17d87[_0x9ef3('0x5e')])))?path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x2980ee,_[_0x9ef3('0x68')](_0xc17d87[_0x9ef3('0x5e')])):path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x2980ee,_['toLower'](_0x9ef3('0x6a')));var _0x4c88ba=_0x9ef3('0x6b')+_[_0x9ef3('0x6c')](_0x9ef3('0x5e'));if(_0xc17d87[_0x4c88ba]||!_0x4a44af[_0x9ef3('0x6d')]){_0x5919d9=path[_0x9ef3('0x67')](config['root'],_0x2980ee,_[_0x9ef3('0x68')]('default_logo.svg'));}if(!fs[_0x9ef3('0x66')](_0x5919d9)){throw new db[(_0x9ef3('0x6e'))][(_0x9ef3('0x6f'))](_[_0x9ef3('0x6c')](_0x9ef3('0x5e'))+'\x20not\x20found');}return _0x2421e0[_0x9ef3('0x70')](_0x5919d9);}})[_0x9ef3('0x29')](handleError(_0x2421e0,null));};var utilLicense=require(_0x9ef3('0x1b'));exports[_0x9ef3('0x71')]=function(_0x13438c,_0x9ae9f,_0x4cfd00){var _0x210d19=_0x9ef3('0x72');var _0x6d56a7={'custom':![]};return utilLicense[_0x9ef3('0x61')]()[_0x9ef3('0x20')](function(_0x45a5db){if(_0x45a5db){_0x6d56a7=_0x45a5db;}return db['Setting'][_0x9ef3('0x5b')]({'where':{'id':_0x13438c[_0x9ef3('0x57')]['id']},'attributes':[_0x9ef3('0x5e'),_0x9ef3('0x73'),_0x9ef3('0x62'),_0x9ef3('0x63'),'defaultLogo',_0x9ef3('0x65'),_0x9ef3('0x74'),_0x9ef3('0x75')],'raw':!![]});})[_0x9ef3('0x20')](handleEntityNotFound(_0x9ae9f,null))['then'](function(_0x2ac3f5){if(_0x2ac3f5){var _0x3c62a8=_0x2ac3f5[_0x9ef3('0x73')]&&fs[_0x9ef3('0x66')](path['join'](config[_0x9ef3('0x69')],_0x210d19,_['toLower'](_0x2ac3f5[_0x9ef3('0x73')])))?path[_0x9ef3('0x67')](config['root'],_0x210d19,_['toLower'](_0x2ac3f5[_0x9ef3('0x73')])):path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x210d19,_[_0x9ef3('0x68')](_0x9ef3('0x76')));var _0x5eb6f5=_0x9ef3('0x6b')+_[_0x9ef3('0x6c')](_0x9ef3('0x73'));if(_0x2ac3f5[_0x5eb6f5]||!_0x6d56a7['custom']){_0x3c62a8=path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x210d19,_[_0x9ef3('0x68')](_0x9ef3('0x76')));}if(!fs['existsSync'](_0x3c62a8)){throw new db[(_0x9ef3('0x6e'))][(_0x9ef3('0x6f'))](_[_0x9ef3('0x6c')](_0x9ef3('0x73'))+'\x20not\x20found');}return _0x9ae9f[_0x9ef3('0x70')](_0x3c62a8);}})[_0x9ef3('0x29')](handleError(_0x9ae9f,null));};exports[_0x9ef3('0x77')]=function(_0x3da80b,_0x10ff4e){return db['Setting'][_0x9ef3('0x5b')]({'where':{'id':_0x3da80b[_0x9ef3('0x57')]['id']},'attributes':[_0x9ef3('0x78')]})[_0x9ef3('0x20')](respondWithResult(_0x10ff4e,null))[_0x9ef3('0x29')](handleError(_0x10ff4e,null));};exports['addPreferred']=function(_0xdfa528,_0x35db34,_0x161ab1){if(_0xdfa528['file']&&_0xdfa528[_0x9ef3('0x5c')]['filename']){_0xdfa528[_0x9ef3('0x5a')][_0x9ef3('0x62')]=_0xdfa528[_0x9ef3('0x5c')]['filename'];}return db[_0x9ef3('0x51')][_0x9ef3('0x5b')]({'where':{'id':_0xdfa528['params']['id']}})[_0x9ef3('0x20')](handleEntityNotFound(_0x35db34,null))[_0x9ef3('0x20')](saveUpdates(_0xdfa528[_0x9ef3('0x5a')],null))['then'](respondWithResult(_0x35db34,null))['catch'](handleError(_0x35db34,null));};var utilLicense=require(_0x9ef3('0x1b'));exports['getPreferred']=function(_0x1069ad,_0x8895d1,_0x2818b4){var _0x2511e9='server/files/images/logos';var _0x4fa62c={'custom':![]};return utilLicense[_0x9ef3('0x61')]()['then'](function(_0x48b92a){if(_0x48b92a){_0x4fa62c=_0x48b92a;}return db[_0x9ef3('0x51')]['find']({'where':{'id':_0x1069ad[_0x9ef3('0x57')]['id']},'attributes':['logo','loginLogo','preferred',_0x9ef3('0x63'),_0x9ef3('0x64'),'defaultLoginLogo',_0x9ef3('0x74'),'defaultFavicon'],'raw':!![]});})[_0x9ef3('0x20')](handleEntityNotFound(_0x8895d1,null))[_0x9ef3('0x20')](function(_0x3d54bd){if(_0x3d54bd){var _0x1d1e7b=_0x3d54bd[_0x9ef3('0x62')]&&fs[_0x9ef3('0x66')](path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x2511e9,_['toLower'](_0x3d54bd['preferred'])))?path[_0x9ef3('0x67')](config['root'],_0x2511e9,_[_0x9ef3('0x68')](_0x3d54bd['preferred'])):path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x2511e9,_[_0x9ef3('0x68')](_0x9ef3('0x79')));var _0x2e5409=_0x9ef3('0x6b')+_['upperFirst']('preferred');if(_0x3d54bd[_0x2e5409]||!_0x4fa62c[_0x9ef3('0x6d')]||!_0x4fa62c[_0x9ef3('0x62')]){_0x1d1e7b=path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x2511e9,_[_0x9ef3('0x68')](_0x9ef3('0x79')));}if(!fs['existsSync'](_0x1d1e7b)){throw new db['Sequelize']['ValidationError'](_['upperFirst'](_0x9ef3('0x62'))+'\x20not\x20found');}return _0x8895d1[_0x9ef3('0x70')](_0x1d1e7b);}})[_0x9ef3('0x29')](handleError(_0x8895d1,null));};exports[_0x9ef3('0x7a')]=function(_0x13094c,_0x2b179f,_0x313728){if(_0x13094c['file']&&_0x13094c[_0x9ef3('0x5c')][_0x9ef3('0x5d')]){_0x13094c[_0x9ef3('0x5a')]['favicon']=_0x13094c[_0x9ef3('0x5c')][_0x9ef3('0x5d')];}return db[_0x9ef3('0x51')]['find']({'where':{'id':_0x13094c[_0x9ef3('0x57')]['id']}})[_0x9ef3('0x20')](handleEntityNotFound(_0x2b179f,null))[_0x9ef3('0x20')](saveUpdates(_0x13094c[_0x9ef3('0x5a')],null))['then'](respondWithResult(_0x2b179f,null))[_0x9ef3('0x29')](handleError(_0x2b179f,null));};var utilLicense=require(_0x9ef3('0x1b'));exports[_0x9ef3('0x7b')]=function(_0x126f0a,_0x186e53,_0x1d487b){var _0x1480a7='server/files/images/logos';var _0x35fab0={'custom':![]};return utilLicense[_0x9ef3('0x61')]()['then'](function(_0x57a98f){if(_0x57a98f){_0x35fab0=_0x57a98f;}return db['Setting'][_0x9ef3('0x5b')]({'where':{'id':_0x126f0a[_0x9ef3('0x57')]['id']},'attributes':[_0x9ef3('0x5e'),_0x9ef3('0x73'),_0x9ef3('0x62'),'favicon',_0x9ef3('0x64'),_0x9ef3('0x65'),_0x9ef3('0x74'),_0x9ef3('0x75')],'raw':!![]});})[_0x9ef3('0x20')](handleEntityNotFound(_0x186e53,null))[_0x9ef3('0x20')](function(_0x2e7555){if(_0x2e7555){var _0x1fb1ee=_0x2e7555[_0x9ef3('0x63')]&&fs[_0x9ef3('0x66')](path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x1480a7,_[_0x9ef3('0x68')](_0x2e7555[_0x9ef3('0x63')])))?path['join'](config[_0x9ef3('0x69')],_0x1480a7,_['toLower'](_0x2e7555[_0x9ef3('0x63')])):path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x1480a7,_['toLower']('default_favicon.ico'));var _0x21bff1=_0x9ef3('0x6b')+_['upperFirst'](_0x9ef3('0x63'));if(_0x2e7555[_0x21bff1]||!_0x35fab0[_0x9ef3('0x6d')]){_0x1fb1ee=path[_0x9ef3('0x67')](config[_0x9ef3('0x69')],_0x1480a7,_[_0x9ef3('0x68')](_0x9ef3('0x7c')));}if(!fs['existsSync'](_0x1fb1ee)){throw new db[(_0x9ef3('0x6e'))]['ValidationError'](_[_0x9ef3('0x6c')](_0x9ef3('0x63'))+'\x20not\x20found');}return _0x186e53['download'](_0x1fb1ee);}})[_0x9ef3('0x29')](handleError(_0x186e53,null));};exports[_0x9ef3('0x7d')]=function(_0xf6ba7e,_0x1960ce){var _0x4853f9={'offset':moment()[_0x9ef3('0x7e')]()};_0x4853f9['now']=moment()[_0x9ef3('0x7e')](_0x4853f9['offset'])[_0x9ef3('0x7f')](_0x9ef3('0x80'));return _0x1960ce['status'](0xc8)[_0x9ef3('0x3b')](_0x4853f9);};
\ No newline at end of file
index a0c3061..7e8ca8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Setting','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./setting.attributes'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x3f1710,_0x3877a2){var _0x528458=function(_0x4b5d0f){while(--_0x4b5d0f){_0x3f1710['push'](_0x3f1710['shift']());}};_0x528458(++_0x3877a2);}(_0x3e74,0x175));var _0x43e7=function(_0x2b523f,_0x34690b){_0x2b523f=_0x2b523f-0x0;var _0x3cc746=_0x3e74[_0x2b523f];return _0x3cc746;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f255d37..1571f24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c3c=['code','message','result','catch','find','options','raw','where','include','map','attributes','model','ShowSetting','lodash','util','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x136619,_0x31c9b2){var _0x38c4a5=function(_0x10b74d){while(--_0x10b74d){_0x136619['push'](_0x136619['shift']());}};_0x38c4a5(++_0x31c9b2);}(_0x7c3c,0xcd));var _0xc7c3=function(_0x459e81,_0x52aeb0){_0x459e81=_0x459e81-0x0;var _0x4fac6a=_0x7c3c[_0x459e81];return _0x4fac6a;};'use strict';var _=require(_0xc7c3('0x0'));var util=require(_0xc7c3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc7c3('0x2'));var db=require(_0xc7c3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc7c3('0x4'))(_0xc7c3('0x5'));var config=require(_0xc7c3('0x6'));var jayson=require(_0xc7c3('0x7'));var client=jayson[_0xc7c3('0x8')][_0xc7c3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x120551,_0x28b9ad,_0x5c4255){return new BPromise(function(_0x3362b4,_0x2827a4){return client[_0xc7c3('0xa')](_0x120551,_0x5c4255)[_0xc7c3('0xb')](function(_0x4cb1a1){logger[_0xc7c3('0xc')](_0xc7c3('0xd'),_0x28b9ad,'request\x20sent');logger[_0xc7c3('0xe')](_0xc7c3('0xf'),_0x28b9ad,_0xc7c3('0x10'),JSON[_0xc7c3('0x11')](_0x4cb1a1));if(_0x4cb1a1[_0xc7c3('0x12')]){if(_0x4cb1a1[_0xc7c3('0x12')][_0xc7c3('0x13')]===0x1f4){logger[_0xc7c3('0x12')](_0xc7c3('0xd'),_0x28b9ad,_0x4cb1a1[_0xc7c3('0x12')]['message']);return _0x2827a4(_0x4cb1a1[_0xc7c3('0x12')][_0xc7c3('0x14')]);}logger[_0xc7c3('0x12')](_0xc7c3('0xd'),_0x28b9ad,_0x4cb1a1[_0xc7c3('0x12')][_0xc7c3('0x14')]);return _0x3362b4(_0x4cb1a1[_0xc7c3('0x12')]['message']);}else{logger['info'](_0xc7c3('0xd'),_0x28b9ad,_0xc7c3('0x10'));_0x3362b4(_0x4cb1a1[_0xc7c3('0x15')][_0xc7c3('0x14')]);}})[_0xc7c3('0x16')](function(_0x14cb57){logger['error']('Setting,\x20%s,\x20%s',_0x28b9ad,_0x14cb57);_0x2827a4(_0x14cb57);});});}exports['ShowSetting']=function(_0x418d91){var _0x21ff07=this;return new Promise(function(_0xdd96d7,_0x3386ca){return db['Setting'][_0xc7c3('0x17')]({'raw':_0x418d91[_0xc7c3('0x18')]?_0x418d91[_0xc7c3('0x18')][_0xc7c3('0x19')]===undefined?!![]:![]:!![],'where':_0x418d91[_0xc7c3('0x18')]?_0x418d91['options'][_0xc7c3('0x1a')]||null:null,'attributes':_0x418d91[_0xc7c3('0x18')]?_0x418d91[_0xc7c3('0x18')]['attributes']||null:null,'include':_0x418d91[_0xc7c3('0x18')]?_0x418d91[_0xc7c3('0x18')][_0xc7c3('0x1b')]?_[_0xc7c3('0x1c')](_0x418d91['options'][_0xc7c3('0x1b')],function(_0x49b158){return{'model':db[_0x49b158['model']],'as':_0x49b158['as'],'attributes':_0x49b158[_0xc7c3('0x1d')],'include':_0x49b158[_0xc7c3('0x1b')]?_[_0xc7c3('0x1c')](_0x49b158[_0xc7c3('0x1b')],function(_0x5b7455){return{'model':db[_0x5b7455['model']],'as':_0x5b7455['as'],'attributes':_0x5b7455[_0xc7c3('0x1d')],'include':_0x5b7455[_0xc7c3('0x1b')]?_[_0xc7c3('0x1c')](_0x5b7455[_0xc7c3('0x1b')],function(_0xa0c19a){return{'model':db[_0xa0c19a[_0xc7c3('0x1e')]],'as':_0xa0c19a['as'],'attributes':_0xa0c19a[_0xc7c3('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc7c3('0xb')](function(_0x11cad3){logger[_0xc7c3('0xc')](_0xc7c3('0x1f'),_0x418d91);logger[_0xc7c3('0xe')](_0xc7c3('0x1f'),_0x418d91,JSON[_0xc7c3('0x11')](_0x11cad3));_0xdd96d7(_0x11cad3);})['catch'](function(_0x30f98c){logger[_0xc7c3('0x12')](_0xc7c3('0x1f'),_0x30f98c[_0xc7c3('0x14')],_0x418d91);_0x3386ca(_0x21ff07[_0xc7c3('0x12')](0x1f4,_0x30f98c[_0xc7c3('0x14')]));});});};
\ No newline at end of file
+var _0x6dcc=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Setting,\x20%s,\x20%s','message','result','Setting','options','raw','where','include','map','attributes','model','then','ShowSetting','lodash','util'];(function(_0x245afe,_0x319cde){var _0x4eefde=function(_0x15a1fa){while(--_0x15a1fa){_0x245afe['push'](_0x245afe['shift']());}};_0x4eefde(++_0x319cde);}(_0x6dcc,0xec));var _0xc6dc=function(_0x31af4b,_0x2c2106){_0x31af4b=_0x31af4b-0x0;var _0x496bd8=_0x6dcc[_0x31af4b];return _0x496bd8;};'use strict';var _=require(_0xc6dc('0x0'));var util=require(_0xc6dc('0x1'));var moment=require(_0xc6dc('0x2'));var BPromise=require(_0xc6dc('0x3'));var rs=require(_0xc6dc('0x4'));var fs=require('fs');var Redis=require(_0xc6dc('0x5'));var db=require(_0xc6dc('0x6'))['db'];var utils=require(_0xc6dc('0x7'));var logger=require('../../config/logger')(_0xc6dc('0x8'));var config=require(_0xc6dc('0x9'));var jayson=require(_0xc6dc('0xa'));var client=jayson[_0xc6dc('0xb')][_0xc6dc('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5f31ee,_0xd002f1,_0x30205b){return new BPromise(function(_0x5990db,_0x202491){return client[_0xc6dc('0xd')](_0x5f31ee,_0x30205b)['then'](function(_0x37fe6b){logger[_0xc6dc('0xe')]('Setting,\x20%s,\x20%s',_0xd002f1,'request\x20sent');logger[_0xc6dc('0xf')](_0xc6dc('0x10'),_0xd002f1,_0xc6dc('0x11'),JSON[_0xc6dc('0x12')](_0x37fe6b));if(_0x37fe6b[_0xc6dc('0x13')]){if(_0x37fe6b[_0xc6dc('0x13')][_0xc6dc('0x14')]===0x1f4){logger[_0xc6dc('0x13')](_0xc6dc('0x15'),_0xd002f1,_0x37fe6b[_0xc6dc('0x13')][_0xc6dc('0x16')]);return _0x202491(_0x37fe6b[_0xc6dc('0x13')]['message']);}logger[_0xc6dc('0x13')](_0xc6dc('0x15'),_0xd002f1,_0x37fe6b[_0xc6dc('0x13')]['message']);return _0x5990db(_0x37fe6b[_0xc6dc('0x13')][_0xc6dc('0x16')]);}else{logger[_0xc6dc('0xe')](_0xc6dc('0x15'),_0xd002f1,'request\x20sent');_0x5990db(_0x37fe6b[_0xc6dc('0x17')]['message']);}})['catch'](function(_0x5e2925){logger[_0xc6dc('0x13')](_0xc6dc('0x15'),_0xd002f1,_0x5e2925);_0x202491(_0x5e2925);});});}exports['ShowSetting']=function(_0x29831a){var _0x4c6941=this;return new Promise(function(_0x3054db,_0x36e37b){return db[_0xc6dc('0x18')]['find']({'raw':_0x29831a[_0xc6dc('0x19')]?_0x29831a[_0xc6dc('0x19')][_0xc6dc('0x1a')]===undefined?!![]:![]:!![],'where':_0x29831a[_0xc6dc('0x19')]?_0x29831a[_0xc6dc('0x19')][_0xc6dc('0x1b')]||null:null,'attributes':_0x29831a[_0xc6dc('0x19')]?_0x29831a['options']['attributes']||null:null,'include':_0x29831a[_0xc6dc('0x19')]?_0x29831a['options'][_0xc6dc('0x1c')]?_[_0xc6dc('0x1d')](_0x29831a['options'][_0xc6dc('0x1c')],function(_0x556f81){return{'model':db[_0x556f81['model']],'as':_0x556f81['as'],'attributes':_0x556f81[_0xc6dc('0x1e')],'include':_0x556f81[_0xc6dc('0x1c')]?_[_0xc6dc('0x1d')](_0x556f81[_0xc6dc('0x1c')],function(_0x3cb498){return{'model':db[_0x3cb498[_0xc6dc('0x1f')]],'as':_0x3cb498['as'],'attributes':_0x3cb498[_0xc6dc('0x1e')],'include':_0x3cb498[_0xc6dc('0x1c')]?_[_0xc6dc('0x1d')](_0x3cb498[_0xc6dc('0x1c')],function(_0x2ad9bd){return{'model':db[_0x2ad9bd[_0xc6dc('0x1f')]],'as':_0x2ad9bd['as'],'attributes':_0x2ad9bd[_0xc6dc('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc6dc('0x20')](function(_0x2210dc){logger[_0xc6dc('0xe')]('ShowSetting',_0x29831a);logger[_0xc6dc('0xf')](_0xc6dc('0x21'),_0x29831a,JSON[_0xc6dc('0x12')](_0x2210dc));_0x3054db(_0x2210dc);})['catch'](function(_0x31270c){logger[_0xc6dc('0x13')](_0xc6dc('0x21'),_0x31270c[_0xc6dc('0x16')],_0x29831a);_0x36e37b(_0x4c6941['error'](0x1f4,_0x31270c[_0xc6dc('0x16')]));});});};
\ No newline at end of file
index 7475ee1..120b9a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['getInteractions','/:id/status','statusGet','/:id/users','post','create','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','/:id','update','delete','destroy','/:id/canned_answers','removeAnswers','removeAgents','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','index','/describe','isAuthenticated','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications'];(function(_0x4dd51b,_0x5d194e){var _0x254c64=function(_0x3c5faf){while(--_0x3c5faf){_0x4dd51b['push'](_0x4dd51b['shift']());}};_0x254c64(++_0x5d194e);}(_0x7a54,0x106));var _0x47a5=function(_0x34cae0,_0x120faa){_0x34cae0=_0x34cae0-0x0;var _0x223bb2=_0x7a54[_0x34cae0];return _0x223bb2;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['describe']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/canned_answers',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x9')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x9')]('/:id/interactions',auth[_0x47a5('0xc')](),controller[_0x47a5('0x12')]);router[_0x47a5('0x9')](_0x47a5('0x13'),controller[_0x47a5('0x14')]);router[_0x47a5('0x9')](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller['getAgents']);router[_0x47a5('0x16')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x17')]);router[_0x47a5('0x16')](_0x47a5('0xd'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x47a5('0x16')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x47a5('0x18')]);router[_0x47a5('0x16')](_0x47a5('0x19'),controller[_0x47a5('0x1a')]);router[_0x47a5('0x16')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x1b')]);router[_0x47a5('0x16')]('/:id/send',auth[_0x47a5('0xc')](),controller[_0x47a5('0x1c')]);router['post'](_0x47a5('0x13'),controller[_0x47a5('0x1d')]);router[_0x47a5('0x16')]('/:id/users',auth[_0x47a5('0xc')](),controller[_0x47a5('0x1e')]);router[_0x47a5('0x1f')](_0x47a5('0x20'),auth['isAuthenticated'](),controller[_0x47a5('0x21')]);router[_0x47a5('0x22')]('/:id',auth[_0x47a5('0xc')](),controller[_0x47a5('0x23')]);router[_0x47a5('0x22')](_0x47a5('0xd'),auth[_0x47a5('0xc')](),controller['removeDispositions']);router['delete'](_0x47a5('0x24'),auth['isAuthenticated'](),controller[_0x47a5('0x25')]);router['delete'](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x26')]);module[_0x47a5('0x27')]=router;
\ No newline at end of file
+var _0x9957=['getInteractions','statusGet','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/status','status','addAgents','/:id','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions'];(function(_0x4ab9f0,_0x548c3c){var _0x364cbc=function(_0x193c1c){while(--_0x193c1c){_0x4ab9f0['push'](_0x4ab9f0['shift']());}};_0x364cbc(++_0x548c3c);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/canned_answers',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x9')](_0x7995('0x14'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router['get']('/:id/status',controller[_0x7995('0x16')]);router[_0x7995('0x9')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x1a')]);router['post'](_0x7995('0xf'),auth['isAuthenticated'](),controller[_0x7995('0x1b')]);router[_0x7995('0x19')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router[_0x7995('0x19')]('/:id/notify',controller['notify']);router[_0x7995('0x19')]('/:id/applications',auth['isAuthenticated'](),controller[_0x7995('0x1e')]);router[_0x7995('0x19')]('/:id/send',auth[_0x7995('0xa')](),controller['send']);router['post'](_0x7995('0x1f'),controller[_0x7995('0x20')]);router[_0x7995('0x19')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x21')]);router['put'](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x23')]);router[_0x7995('0x24')](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x25')]);router[_0x7995('0x24')]('/:id/dispositions',auth[_0x7995('0xa')](),controller[_0x7995('0x26')]);router[_0x7995('0x24')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x27')]);router['delete'](_0x7995('0x17'),auth['isAuthenticated'](),controller[_0x7995('0x28')]);module[_0x7995('0x29')]=router;
\ No newline at end of file
index abea9b1..3286c3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x004b=['INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','ENUM','connectel','clickatell','bandwidth','csc','infobip','intelepeer','BOOLEAN','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x004b,0xdc));var _0xb004=function(_0x324eb1,_0x4a44cc){_0x324eb1=_0x324eb1-0x0;var _0x60d4f=_0x004b[_0x324eb1];return _0x60d4f;};'use strict';var Sequelize=require(_0xb004('0x0'));var rs=require(_0xb004('0x1'));module[_0xb004('0x2')]={'name':{'type':Sequelize[_0xb004('0x3')],'unique':_0xb004('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xb004('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xb004('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xb004('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xb004('0x5')]('twilio','skebby',_0xb004('0x6'),'clicksend','plivo',_0xb004('0x7'),_0xb004('0x8'),_0xb004('0x9'),_0xb004('0xa'),_0xb004('0xb'))},'accountSid':{'type':Sequelize[_0xb004('0x3')]},'authId':{'type':Sequelize[_0xb004('0x3')]},'authToken':{'type':Sequelize[_0xb004('0x3')]},'smsMethod':{'type':Sequelize[_0xb004('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0xb004('0x3')]},'password':{'type':Sequelize[_0xb004('0x3')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0xb004('0x3')]},'accountId':{'type':Sequelize[_0xb004('0x3')]},'senderString':{'type':Sequelize[_0xb004('0x3')]},'deliveryReport':{'type':Sequelize[_0xb004('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0xb004('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xb004('0xd');}},'notificationSound':{'type':Sequelize[_0xb004('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb004('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb004('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xb004('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb004('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xb004('0xf'),'set':function(_0x43f75a){if(!_0x43f75a)this[_0xb004('0x10')](_0xb004('0x11'),null);this['setDataValue']('mandatoryDisposition',_0x43f75a);}}};
\ No newline at end of file
+var _0x17e9=['generate','ENUM','skebby','clicksend','clickatell','bandwidth','csc','infobip','intelepeer','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','STRING','name'];(function(_0x4ed239,_0x3bb2d8){var _0x19b898=function(_0x302fe8){while(--_0x302fe8){_0x4ed239['push'](_0x4ed239['shift']());}};_0x19b898(++_0x3bb2d8);}(_0x17e9,0x65));var _0x917e=function(_0x5eddca,_0x5ea850){_0x5eddca=_0x5eddca-0x0;var _0x331a16=_0x17e9[_0x5eddca];return _0x331a16;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x917e('0x0'));module[_0x917e('0x1')]={'name':{'type':Sequelize[_0x917e('0x2')],'unique':_0x917e('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x917e('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x917e('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x917e('0x2')],'defaultValue':function(){return rs[_0x917e('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x917e('0x5')]('twilio',_0x917e('0x6'),'connectel',_0x917e('0x7'),'plivo',_0x917e('0x8'),_0x917e('0x9'),_0x917e('0xa'),_0x917e('0xb'),_0x917e('0xc'))},'accountSid':{'type':Sequelize[_0x917e('0x2')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x917e('0x5')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x917e('0x2')]},'notificationTemplate':{'type':Sequelize[_0x917e('0xd')],'defaultValue':function(){return _0x917e('0xe');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x917e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x917e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x917e('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x917e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x917e('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x917e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x917e('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x917e('0x10')],'defaultValue':![],'comment':_0x917e('0x11'),'set':function(_0x1ffab0){if(!_0x1ffab0)this[_0x917e('0x12')](_0x917e('0x13'),null);this[_0x917e('0x12')](_0x917e('0x14'),_0x1ffab0);}}};
\ No newline at end of file
index e74f25b..4ac7379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0dc=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./smsAccount.socket','register','client','then','info','request\x20sent','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','destroy','get','SmsAccounts','UserProfileResource','stack','name','send','index','Pause','map','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','VIRTUAL','options','SmsAccount','includeAll','include','findAll','rows','params','mandatoryDispositionPause','rawAttributes','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','length','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','Applications','account','applications','priority','asc','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','MessageSid','skebby','sender','connectel','clicksend','message_id','Text','messageId','MessageUUID','infobip','results','text','csc','originatingAddress','segmentedMessage','clickatell','bandwidth','intelepeer','refid','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','list','defaults','SmsInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','queueId','queue','waitForTheAssignedQueue','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','set','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','Transaction','ISOLATION_LEVELS','SmsApplication','getApplications','Contact','Owner','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','out','SmsMessage','Messages','spread','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','statusGet','message-id','state','addAgents','ids','omit','emit','userSmsAccount:save','removeAgents','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x4b2243,_0x728769){var _0x54eb19=function(_0xe5b0eb){while(--_0xe5b0eb){_0x4b2243['push'](_0x4b2243['shift']());}};_0x54eb19(++_0x728769);}(_0xe0dc,0xe5));var _0xce0d=function(_0x31b950,_0x48a4e9){_0x31b950=_0x31b950-0x0;var _0x415d87=_0xe0dc[_0x31b950];return _0x415d87;};'use strict';var emlformat=require(_0xce0d('0x0'));var rimraf=require(_0xce0d('0x1'));var zipdir=require(_0xce0d('0x2'));var jsonpatch=require(_0xce0d('0x3'));var rp=require(_0xce0d('0x4'));var moment=require(_0xce0d('0x5'));var BPromise=require(_0xce0d('0x6'));var Mustache=require(_0xce0d('0x7'));var util=require(_0xce0d('0x8'));var path=require(_0xce0d('0x9'));var sox=require(_0xce0d('0xa'));var csv=require(_0xce0d('0xb'));var ejs=require(_0xce0d('0xc'));var fs=require('fs');var fs_extra=require(_0xce0d('0xd'));var _=require(_0xce0d('0xe'));var squel=require(_0xce0d('0xf'));var crypto=require(_0xce0d('0x10'));var jsforce=require(_0xce0d('0x11'));var deskjs=require(_0xce0d('0x12'));var toCsv=require(_0xce0d('0xb'));var querystring=require(_0xce0d('0x13'));var Papa=require(_0xce0d('0x14'));var Redis=require(_0xce0d('0x15'));var authService=require(_0xce0d('0x16'));var qs=require(_0xce0d('0x17'));var as=require(_0xce0d('0x18'));var hardwareService=require(_0xce0d('0x19'));var logger=require('../../config/logger')(_0xce0d('0x1a'));var utils=require(_0xce0d('0x1b'));var config=require(_0xce0d('0x1c'));var licenseUtil=require('../../config/license/util');var db=require(_0xce0d('0x1d'))['db'];config[_0xce0d('0x1e')]=_['defaults'](config[_0xce0d('0x1e')],{'host':_0xce0d('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xce0d('0x1e')]));require(_0xce0d('0x20'))[_0xce0d('0x21')](socket);var jayson=require('jayson/promise');var client=jayson[_0xce0d('0x22')]['http']({'port':0x232c});function respondWithRpcPromise(_0x4ddd87,_0x55e08d,_0x56408e,_0x4957af){return new BPromise(function(_0x1deb18,_0x4b6673){var _0x37cda5=_0x4957af||client;return _0x37cda5['request'](_0x4ddd87,_0x56408e)[_0xce0d('0x23')](function(_0x29c4e2){logger[_0xce0d('0x24')]('SmsAccount,\x20%s,\x20%s',_0x55e08d,_0xce0d('0x25'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x55e08d,_0xce0d('0x25'),JSON[_0xce0d('0x26')](_0x29c4e2));if(_0x29c4e2[_0xce0d('0x27')]){if(_0x29c4e2[_0xce0d('0x27')][_0xce0d('0x28')]===0x1f4){logger[_0xce0d('0x27')](_0xce0d('0x29'),_0x55e08d,_0x29c4e2['error']['message']);return _0x4b6673(_0x29c4e2[_0xce0d('0x27')]['message']);}logger['error'](_0xce0d('0x29'),_0x55e08d,_0x29c4e2[_0xce0d('0x27')][_0xce0d('0x2a')]);return _0x1deb18(_0x29c4e2['error'][_0xce0d('0x2a')]);}else{logger['info']('SmsAccount,\x20%s,\x20%s',_0x55e08d,_0xce0d('0x25'));_0x1deb18(_0x29c4e2[_0xce0d('0x2b')][_0xce0d('0x2a')]);}})[_0xce0d('0x2c')](function(_0x45ab98){logger[_0xce0d('0x27')](_0xce0d('0x29'),_0x55e08d,_0x45ab98);_0x4b6673(_0x45ab98);});});}function respondWithStatusCode(_0x566879,_0x45ea01){_0x45ea01=_0x45ea01||0xcc;return function(_0x2f6997){if(_0x2f6997){return _0x566879[_0xce0d('0x2d')](_0x45ea01);}return _0x566879[_0xce0d('0x2e')](_0x45ea01)['end']();};}function respondWithResult(_0x203d02,_0x3999e4){_0x3999e4=_0x3999e4||0xc8;return function(_0x152b14){if(_0x152b14){return _0x203d02[_0xce0d('0x2e')](_0x3999e4)[_0xce0d('0x2f')](_0x152b14);}};}function respondWithFilteredResult(_0x442a33,_0x53ba41){return function(_0x1ac6d8){if(_0x1ac6d8){var _0xe4c2d8=typeof _0x53ba41[_0xce0d('0x30')]==='undefined'&&typeof _0x53ba41[_0xce0d('0x31')]===_0xce0d('0x32');var _0x3af8d2=_0x1ac6d8[_0xce0d('0x33')];var _0x33322a=_0xe4c2d8?0x0:_0x53ba41[_0xce0d('0x30')];var _0x2e615b=_0xe4c2d8?_0x1ac6d8[_0xce0d('0x33')]:_0x53ba41[_0xce0d('0x30')]+_0x53ba41['limit'];var _0x31aad8;if(_0x2e615b>=_0x3af8d2){_0x2e615b=_0x3af8d2;_0x31aad8=0xc8;}else{_0x31aad8=0xce;}_0x442a33['status'](_0x31aad8);return _0x442a33['set'](_0xce0d('0x34'),_0x33322a+'-'+_0x2e615b+'/'+_0x3af8d2)[_0xce0d('0x2f')](_0x1ac6d8);}return null;};}function patchUpdates(_0x3b2b79){return function(_0x312a5f){try{jsonpatch[_0xce0d('0x35')](_0x312a5f,_0x3b2b79,!![]);}catch(_0x38b1ab){return BPromise[_0xce0d('0x36')](_0x38b1ab);}return _0x312a5f['save']();};}function saveUpdates(_0x433b15,_0x577aad){return function(_0x44afa2){if(_0x44afa2){return _0x44afa2['update'](_0x433b15)['then'](function(_0x3d9665){return _0x3d9665;});}return null;};}function removeEntity(_0x21c187,_0x5a5b78){return function(_0x2e3926){if(_0x2e3926){return _0x2e3926[_0xce0d('0x37')]()['then'](function(){var _0x13f19f=_0x2e3926[_0xce0d('0x38')]({'plain':!![]});var _0x449622=_0xce0d('0x39');return db[_0xce0d('0x3a')]['destroy']({'where':{'type':_0x449622,'resourceId':_0x13f19f['id']}})[_0xce0d('0x23')](function(){return _0x2e3926;});})[_0xce0d('0x23')](function(){_0x21c187[_0xce0d('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5de859,_0x5648ca){return function(_0x33870a){if(!_0x33870a){_0x5de859['sendStatus'](0x194);}return _0x33870a;};}function handleError(_0x3f9062,_0x1cfa52){_0x1cfa52=_0x1cfa52||0x1f4;return function(_0x4a770a){logger[_0xce0d('0x27')](_0x4a770a[_0xce0d('0x3b')]);if(_0x4a770a[_0xce0d('0x3c')]){delete _0x4a770a[_0xce0d('0x3c')];}_0x3f9062['status'](_0x1cfa52)[_0xce0d('0x3d')](_0x4a770a);};}exports[_0xce0d('0x3e')]=function(_0x35c6f2,_0x18c240){var _0x5a1c2d={'include':[{'model':db[_0xce0d('0x3f')],'as':'mandatoryDispositionPause'}]},_0x3a3595={},_0x2b7874={'count':0x0,'rows':[]};var _0x199023=_[_0xce0d('0x40')](db['SmsAccount']['rawAttributes'],function(_0x5ddd02){return{'name':_0x5ddd02[_0xce0d('0x41')],'type':_0x5ddd02[_0xce0d('0x42')][_0xce0d('0x43')]};});_0x3a3595[_0xce0d('0x44')]=_[_0xce0d('0x40')](_0x199023,_0xce0d('0x3c'));_0x3a3595['query']=_[_0xce0d('0x45')](_0x35c6f2[_0xce0d('0x46')]);_0x3a3595['filters']=_[_0xce0d('0x47')](_0x3a3595[_0xce0d('0x44')],_0x3a3595['query']);_0x5a1c2d[_0xce0d('0x48')]=_[_0xce0d('0x47')](_0x3a3595['model'],qs[_0xce0d('0x49')](_0x35c6f2[_0xce0d('0x46')][_0xce0d('0x49')]));_0x5a1c2d[_0xce0d('0x48')]=_0x5a1c2d[_0xce0d('0x48')]['length']?_0x5a1c2d[_0xce0d('0x48')]:_0x3a3595[_0xce0d('0x44')];if(!_0x35c6f2[_0xce0d('0x46')][_0xce0d('0x4a')](_0xce0d('0x4b'))){_0x5a1c2d[_0xce0d('0x31')]=qs[_0xce0d('0x31')](_0x35c6f2['query'][_0xce0d('0x31')]);_0x5a1c2d[_0xce0d('0x30')]=qs[_0xce0d('0x30')](_0x35c6f2[_0xce0d('0x46')]['offset']);}_0x5a1c2d[_0xce0d('0x4c')]=qs[_0xce0d('0x4d')](_0x35c6f2['query'][_0xce0d('0x4d')]);_0x5a1c2d['where']=qs['filters'](_[_0xce0d('0x4e')](_0x35c6f2[_0xce0d('0x46')],_0x3a3595[_0xce0d('0x4f')]),_0x199023);if(_0x35c6f2[_0xce0d('0x46')][_0xce0d('0x50')]){_0x5a1c2d[_0xce0d('0x51')]=_[_0xce0d('0x52')](_0x5a1c2d[_0xce0d('0x51')],{'$or':_[_0xce0d('0x40')](_0x199023,function(_0x1e0752){if(_0x1e0752[_0xce0d('0x42')]!==_0xce0d('0x53')){var _0x15157c={};_0x15157c[_0x1e0752[_0xce0d('0x3c')]]={'$like':'%'+_0x35c6f2['query']['filter']+'%'};return _0x15157c;}})});}_0x5a1c2d=_[_0xce0d('0x52')]({},_0x5a1c2d,_0x35c6f2[_0xce0d('0x54')]);var _0x1f1deb={'where':_0x5a1c2d[_0xce0d('0x51')]};return db[_0xce0d('0x55')][_0xce0d('0x33')](_0x1f1deb)[_0xce0d('0x23')](function(_0x33bace){_0x2b7874[_0xce0d('0x33')]=_0x33bace;if(_0x35c6f2[_0xce0d('0x46')][_0xce0d('0x56')]){_0x5a1c2d[_0xce0d('0x57')]=[{'all':!![]}];}return db[_0xce0d('0x55')][_0xce0d('0x58')](_0x5a1c2d);})[_0xce0d('0x23')](function(_0x2fd794){_0x2b7874[_0xce0d('0x59')]=_0x2fd794;return _0x2b7874;})[_0xce0d('0x23')](respondWithFilteredResult(_0x18c240,_0x5a1c2d))[_0xce0d('0x2c')](handleError(_0x18c240,null));};exports['show']=function(_0x5dbe12,_0x4d57e1){var _0x4fdd20={'raw':![],'where':{'id':_0x5dbe12[_0xce0d('0x5a')]['id']},'include':[{'model':db[_0xce0d('0x3f')],'as':_0xce0d('0x5b')}]},_0x42c47a={};_0x42c47a[_0xce0d('0x44')]=_[_0xce0d('0x45')](db[_0xce0d('0x55')][_0xce0d('0x5c')]);_0x42c47a[_0xce0d('0x46')]=_[_0xce0d('0x45')](_0x5dbe12[_0xce0d('0x46')]);_0x42c47a['filters']=_[_0xce0d('0x47')](_0x42c47a[_0xce0d('0x44')],_0x42c47a[_0xce0d('0x46')]);_0x4fdd20['attributes']=_[_0xce0d('0x47')](_0x42c47a[_0xce0d('0x44')],qs[_0xce0d('0x49')](_0x5dbe12['query']['fields']));_0x4fdd20[_0xce0d('0x48')]=_0x4fdd20[_0xce0d('0x48')]['length']?_0x4fdd20['attributes']:_0x42c47a[_0xce0d('0x44')];if(_0x5dbe12[_0xce0d('0x46')][_0xce0d('0x56')]){_0x4fdd20[_0xce0d('0x57')]=[{'all':!![]}];}_0x4fdd20=_[_0xce0d('0x52')]({},_0x4fdd20,_0x5dbe12['options']);return db[_0xce0d('0x55')][_0xce0d('0x5d')](_0x4fdd20)[_0xce0d('0x23')](handleEntityNotFound(_0x4d57e1,null))['then'](respondWithResult(_0x4d57e1,null))[_0xce0d('0x2c')](handleError(_0x4d57e1,null));};exports[_0xce0d('0x5e')]=function(_0x546bd4,_0x4f5f15){return db[_0xce0d('0x55')][_0xce0d('0x5e')](_0x546bd4[_0xce0d('0x5f')],{})[_0xce0d('0x23')](function(_0x322e24){var _0x1a7c43=_0x546bd4[_0xce0d('0x60')][_0xce0d('0x38')]({'plain':!![]});if(!_0x1a7c43)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1a7c43[_0xce0d('0x61')]===_0xce0d('0x60')){var _0x1e55c2=_0x322e24['get']({'plain':!![]});var _0x1df1ed=_0xce0d('0x39');return db[_0xce0d('0x62')]['find']({'where':{'name':_0x1df1ed,'userProfileId':_0x1a7c43[_0xce0d('0x63')]},'raw':!![]})[_0xce0d('0x23')](function(_0x3370df){if(_0x3370df&&_0x3370df[_0xce0d('0x64')]===0x0){return db[_0xce0d('0x3a')][_0xce0d('0x5e')]({'name':_0x1e55c2[_0xce0d('0x3c')],'resourceId':_0x1e55c2['id'],'type':_0x3370df[_0xce0d('0x3c')],'sectionId':_0x3370df['id']},{})['then'](function(){return _0x322e24;});}else{return _0x322e24;}})['catch'](function(_0x55b89d){logger[_0xce0d('0x27')](_0xce0d('0x65'),_0x55b89d);throw _0x55b89d;});}return _0x322e24;})['then'](respondWithResult(_0x4f5f15,0xc9))[_0xce0d('0x2c')](handleError(_0x4f5f15,null));};exports[_0xce0d('0x66')]=function(_0x2fdb36,_0x1db6bc){if(_0x2fdb36['body']['id']){delete _0x2fdb36[_0xce0d('0x5f')]['id'];}return db[_0xce0d('0x55')][_0xce0d('0x5d')]({'where':{'id':_0x2fdb36['params']['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x1db6bc,null))['then'](saveUpdates(_0x2fdb36[_0xce0d('0x5f')],null))[_0xce0d('0x23')](respondWithResult(_0x1db6bc,null))[_0xce0d('0x2c')](handleError(_0x1db6bc,null));};exports[_0xce0d('0x37')]=function(_0x1d8e80,_0x4d33c0){return db[_0xce0d('0x55')][_0xce0d('0x5d')]({'where':{'id':_0x1d8e80[_0xce0d('0x5a')]['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x4d33c0,null))['then'](removeEntity(_0x4d33c0,null))['catch'](handleError(_0x4d33c0,null));};exports['describe']=function(_0x266d4a,_0x581ad3){return db['SmsAccount']['describe']()[_0xce0d('0x23')](respondWithResult(_0x581ad3,null))[_0xce0d('0x2c')](handleError(_0x581ad3,null));};exports[_0xce0d('0x67')]=function(_0x2e28fe,_0xad3dcb,_0x59756e){if(_0x2e28fe[_0xce0d('0x5f')]['id']){delete _0x2e28fe[_0xce0d('0x5f')]['id'];}return db[_0xce0d('0x55')][_0xce0d('0x5d')]({'where':{'id':_0x2e28fe['params']['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0xad3dcb,null))[_0xce0d('0x23')](function(_0x3655f0){if(_0x3655f0){_0x2e28fe[_0xce0d('0x5f')][_0xce0d('0x68')]=_0x3655f0['id'];return db[_0xce0d('0x69')]['create'](_0x2e28fe[_0xce0d('0x5f')]);}})['then'](respondWithResult(_0xad3dcb,null))['catch'](handleError(_0xad3dcb,null));};exports[_0xce0d('0x6a')]=function(_0x824811,_0x3c029d,_0x10f6f5){var _0x4108a9={'raw':![],'where':{}};var _0x4f2c47={};var _0x17b890={'count':0x0,'rows':[]};return db[_0xce0d('0x55')][_0xce0d('0x6b')]({'where':{'id':_0x824811[_0xce0d('0x5a')]['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x3c029d,null))[_0xce0d('0x23')](function(_0x1e4bd6){if(_0x1e4bd6){_0x4f2c47['model']=_[_0xce0d('0x45')](db[_0xce0d('0x69')][_0xce0d('0x5c')]);_0x4f2c47['query']=_[_0xce0d('0x45')](_0x824811['query']);_0x4f2c47[_0xce0d('0x4f')]=_[_0xce0d('0x47')](_0x4f2c47[_0xce0d('0x44')],_0x4f2c47['query']);_0x4108a9[_0xce0d('0x48')]=_[_0xce0d('0x47')](_0x4f2c47[_0xce0d('0x44')],qs[_0xce0d('0x49')](_0x824811['query'][_0xce0d('0x49')]));_0x4108a9[_0xce0d('0x48')]=_0x4108a9[_0xce0d('0x48')][_0xce0d('0x6c')]?_0x4108a9[_0xce0d('0x48')]:_0x4f2c47[_0xce0d('0x44')];if(!_0x824811[_0xce0d('0x46')][_0xce0d('0x4a')](_0xce0d('0x4b'))){_0x4108a9[_0xce0d('0x31')]=qs[_0xce0d('0x31')](_0x824811[_0xce0d('0x46')][_0xce0d('0x31')]);_0x4108a9['offset']=qs['offset'](_0x824811[_0xce0d('0x46')][_0xce0d('0x30')]);}_0x4108a9[_0xce0d('0x4c')]=qs[_0xce0d('0x4d')](_0x824811[_0xce0d('0x46')][_0xce0d('0x4d')]);_0x4108a9['where']=qs[_0xce0d('0x4f')](_[_0xce0d('0x4e')](_0x824811[_0xce0d('0x46')],_0x4f2c47[_0xce0d('0x4f')]));_0x4108a9[_0xce0d('0x51')]['SmsAccountId']=_0x1e4bd6['id'];if(_0x824811[_0xce0d('0x46')][_0xce0d('0x50')]){_0x4108a9[_0xce0d('0x51')]=_[_0xce0d('0x52')](_0x4108a9[_0xce0d('0x51')],{'$or':_[_0xce0d('0x40')](_0x4108a9[_0xce0d('0x48')],function(_0x2997df){var _0x1b0bac={};_0x1b0bac[_0x2997df]={'$like':'%'+_0x824811[_0xce0d('0x46')][_0xce0d('0x50')]+'%'};return _0x1b0bac;})});}_0x4108a9=_[_0xce0d('0x52')]({},_0x4108a9,_0x824811[_0xce0d('0x54')]);return db[_0xce0d('0x69')][_0xce0d('0x33')]({'where':_0x4108a9[_0xce0d('0x51')]})[_0xce0d('0x23')](function(_0x5705d7){_0x17b890[_0xce0d('0x33')]=_0x5705d7;if(_0x824811['query'][_0xce0d('0x56')]){_0x4108a9['include']=[{'all':!![]}];}return db[_0xce0d('0x69')][_0xce0d('0x58')](_0x4108a9);})[_0xce0d('0x23')](function(_0x21ba28){_0x17b890[_0xce0d('0x59')]=_0x21ba28;return _0x17b890;});}})[_0xce0d('0x23')](respondWithFilteredResult(_0x3c029d,_0x4108a9))['catch'](handleError(_0x3c029d,null));};exports[_0xce0d('0x6d')]=function(_0x3d4c48,_0x38e149,_0x29265a){return db[_0xce0d('0x55')][_0xce0d('0x5d')]({'where':{'id':_0x3d4c48['params']['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x38e149,null))['then'](function(_0x4f1b66){if(_0x4f1b66){return _0x4f1b66[_0xce0d('0x6d')](_0x3d4c48[_0xce0d('0x46')]['ids']);}})[_0xce0d('0x23')](respondWithStatusCode(_0x38e149,null))[_0xce0d('0x2c')](handleError(_0x38e149,null));};exports[_0xce0d('0x6e')]=function(_0x2302ed,_0xb5b01f,_0x28a6bb){if(_0x2302ed[_0xce0d('0x5f')]['id']){delete _0x2302ed[_0xce0d('0x5f')]['id'];}return db['SmsAccount'][_0xce0d('0x5d')]({'where':{'id':_0x2302ed[_0xce0d('0x5a')]['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0xb5b01f,null))[_0xce0d('0x23')](function(_0x3b99fa){if(_0x3b99fa){_0x2302ed[_0xce0d('0x5f')][_0xce0d('0x68')]=_0x3b99fa['id'];return db[_0xce0d('0x6f')][_0xce0d('0x5e')](_0x2302ed[_0xce0d('0x5f')]);}})[_0xce0d('0x23')](respondWithResult(_0xb5b01f,null))['catch'](handleError(_0xb5b01f,null));};exports[_0xce0d('0x70')]=function(_0xea1dd4,_0x46bb1e,_0x2163fa){var _0x341c23={'raw':![],'where':{}};var _0x179644={};var _0x43b2c7={'count':0x0,'rows':[]};return db[_0xce0d('0x55')]['findOne']({'where':{'id':_0xea1dd4[_0xce0d('0x5a')]['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x46bb1e,null))[_0xce0d('0x23')](function(_0x167870){if(_0x167870){_0x179644['model']=_['keys'](db[_0xce0d('0x6f')][_0xce0d('0x5c')]);_0x179644[_0xce0d('0x46')]=_[_0xce0d('0x45')](_0xea1dd4[_0xce0d('0x46')]);_0x179644[_0xce0d('0x4f')]=_[_0xce0d('0x47')](_0x179644[_0xce0d('0x44')],_0x179644[_0xce0d('0x46')]);_0x341c23['attributes']=_['intersection'](_0x179644['model'],qs[_0xce0d('0x49')](_0xea1dd4[_0xce0d('0x46')][_0xce0d('0x49')]));_0x341c23[_0xce0d('0x48')]=_0x341c23[_0xce0d('0x48')]['length']?_0x341c23[_0xce0d('0x48')]:_0x179644[_0xce0d('0x44')];if(!_0xea1dd4[_0xce0d('0x46')][_0xce0d('0x4a')](_0xce0d('0x4b'))){_0x341c23[_0xce0d('0x31')]=qs[_0xce0d('0x31')](_0xea1dd4['query']['limit']);_0x341c23[_0xce0d('0x30')]=qs[_0xce0d('0x30')](_0xea1dd4[_0xce0d('0x46')][_0xce0d('0x30')]);}_0x341c23['order']=qs['sort'](_0xea1dd4['query'][_0xce0d('0x4d')]);_0x341c23[_0xce0d('0x51')]=qs[_0xce0d('0x4f')](_[_0xce0d('0x4e')](_0xea1dd4[_0xce0d('0x46')],_0x179644['filters']));_0x341c23['where']['SmsAccountId']=_0x167870['id'];if(_0xea1dd4[_0xce0d('0x46')]['filter']){_0x341c23[_0xce0d('0x51')]=_[_0xce0d('0x52')](_0x341c23[_0xce0d('0x51')],{'$or':_[_0xce0d('0x40')](_0x341c23[_0xce0d('0x48')],function(_0x154b64){var _0x6ebfdb={};_0x6ebfdb[_0x154b64]={'$like':'%'+_0xea1dd4[_0xce0d('0x46')][_0xce0d('0x50')]+'%'};return _0x6ebfdb;})});}_0x341c23=_[_0xce0d('0x52')]({},_0x341c23,_0xea1dd4['options']);return db['CannedAnswer']['count']({'where':_0x341c23[_0xce0d('0x51')]})[_0xce0d('0x23')](function(_0x18be78){_0x43b2c7[_0xce0d('0x33')]=_0x18be78;if(_0xea1dd4[_0xce0d('0x46')][_0xce0d('0x56')]){_0x341c23[_0xce0d('0x57')]=[{'all':!![]}];}return db[_0xce0d('0x6f')][_0xce0d('0x58')](_0x341c23);})[_0xce0d('0x23')](function(_0x1cb540){_0x43b2c7[_0xce0d('0x59')]=_0x1cb540;return _0x43b2c7;});}})['then'](respondWithFilteredResult(_0x46bb1e,_0x341c23))[_0xce0d('0x2c')](handleError(_0x46bb1e,null));};exports[_0xce0d('0x71')]=function(_0x5a3126,_0x14b8af,_0x2ac7bd){return db[_0xce0d('0x55')]['find']({'where':{'id':_0x5a3126[_0xce0d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x14b8af,null))[_0xce0d('0x23')](function(_0x215d40){if(_0x215d40){return _0x215d40[_0xce0d('0x71')](_0x5a3126['query']['ids']);}})['then'](respondWithStatusCode(_0x14b8af,null))[_0xce0d('0x2c')](handleError(_0x14b8af,null));};exports[_0xce0d('0x72')]=function(_0x4daf36,_0x3f66f2,_0x4d3ade){var _0x2d8e7e={'channel':_0xce0d('0x73')};var _0x360eec=[];var _0x595c8b=[];var _0x493105={};return db[_0xce0d('0x55')][_0xce0d('0x5d')]({'where':{'id':_0x4daf36['params']['id']},'include':[{'model':db['SmsApplication'],'as':_0xce0d('0x74')}]})['then'](handleEntityNotFound(_0x3f66f2,null))[_0xce0d('0x23')](function(_0x43a2c7){_0x2d8e7e[_0xce0d('0x75')]=_0x43a2c7;_0x2d8e7e[_0xce0d('0x76')]=_['orderBy'](_0x43a2c7[_0xce0d('0x74')],[_0xce0d('0x77')],[_0xce0d('0x78')]);if(_0x2d8e7e['account']['Applications']){delete _0x2d8e7e[_0xce0d('0x75')]['Applications'];}return db[_0xce0d('0x79')][_0xce0d('0x7a')]();})['then'](function(_0x2baecc){if(!_0x2baecc){throw new db[(_0xce0d('0x7b'))][(_0xce0d('0x7c'))](_0xce0d('0x7d'));}_0x360eec=_[_0xce0d('0x7e')](_['keys'](_0x2baecc),[_0xce0d('0x7f'),_0xce0d('0x80')]);_0x595c8b=_['difference'](_[_0xce0d('0x45')](_0x2baecc),[_0xce0d('0x7f'),_0xce0d('0x80'),_0xce0d('0x81'),_0xce0d('0x82')]);_0x2d8e7e[_0xce0d('0x5f')]={'mapKey':_0xce0d('0x83')};if(_0x2d8e7e[_0xce0d('0x75')][_0xce0d('0x42')]){switch(_0x2d8e7e[_0xce0d('0x75')][_0xce0d('0x42')]){case _0xce0d('0x84'):_0x2d8e7e['body'][_0xce0d('0x85')]=_0x4daf36['body'][_0xce0d('0x86')];_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x5f')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x87')];_0x2d8e7e[_0xce0d('0x5f')]['messageId']=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x88')];break;case _0xce0d('0x89'):_0x2d8e7e[_0xce0d('0x5f')]['from']='+'+_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x8a')];_0x2d8e7e[_0xce0d('0x5f')]['body']=_0x4daf36['body']['text'];break;case _0xce0d('0x8b'):_0x2d8e7e[_0xce0d('0x5f')]['from']=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x85')];_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x5f')]=_0x4daf36[_0xce0d('0x5f')]['message'];break;case _0xce0d('0x8c'):_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')]=_0x4daf36['body'][_0xce0d('0x85')];_0x2d8e7e['body'][_0xce0d('0x5f')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x5f')];_0x2d8e7e[_0xce0d('0x5f')]['messageId']=_0x4daf36['body'][_0xce0d('0x8d')];break;case'plivo':_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x86')];_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x5f')]=_0x4daf36['body'][_0xce0d('0x8e')];_0x2d8e7e['body'][_0xce0d('0x8f')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x90')];break;case _0xce0d('0x91'):_0x2d8e7e['body'][_0xce0d('0x85')]='+'+_0x4daf36[_0xce0d('0x5f')]['results'][0x0][_0xce0d('0x85')];_0x2d8e7e['body'][_0xce0d('0x5f')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x92')][0x0][_0xce0d('0x93')];_0x2d8e7e['body']['messageId']=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x92')][0x0]['messageId'];break;case _0xce0d('0x94'):_0x2d8e7e['body'][_0xce0d('0x85')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x95')];_0x2d8e7e['body']['body']=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x96')][_0xce0d('0x2a')];break;case _0xce0d('0x97'):_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')]=_0x4daf36[_0xce0d('0x5f')]['fromNumber'];_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x5f')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x93')];_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x8f')]=_0x4daf36[_0xce0d('0x5f')]['replyMessageId'];break;case _0xce0d('0x98'):_0x2d8e7e[_0xce0d('0x5f')]['messageId']=_0x4daf36['body'][0x0][_0xce0d('0x2a')]['id'];_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')]=_0x4daf36[_0xce0d('0x5f')][0x0][_0xce0d('0x2a')]['from'];_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x5f')]=_0x4daf36[_0xce0d('0x5f')][0x0][_0xce0d('0x2a')]['text'];break;case _0xce0d('0x99'):_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x85')];_0x2d8e7e['body']['body']=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x2a')];_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x8f')]=_0x4daf36[_0xce0d('0x5f')][_0xce0d('0x9a')];break;}}if(_0x2d8e7e['body']['id']){delete _0x2d8e7e[_0xce0d('0x5f')]['id'];}if(_['isNil'](_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')])){throw new db['Sequelize'][(_0xce0d('0x7c'))](_0xce0d('0x9b'));}if(_[_0xce0d('0x9c')](_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x5f')])||_0x2d8e7e['body'][_0xce0d('0x5f')]===''){throw new db[(_0xce0d('0x7b'))][(_0xce0d('0x7c'))](_0xce0d('0x9d'));}if(_['isNil'](_0x2d8e7e['body'][_0xce0d('0x9e')])){throw new db[(_0xce0d('0x7b'))][(_0xce0d('0x7c'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x595c8b);}if(!_[_0xce0d('0x9f')](_0x595c8b,_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x9e')])){throw new db[(_0xce0d('0x7b'))][(_0xce0d('0x7c'))](_0xce0d('0xa0')+_0x595c8b);}_0x493105[_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x9e')]]=_0x2d8e7e['body']['from'];return db[_0xce0d('0xa1')]['find']({'where':{'id':_0x2d8e7e[_0xce0d('0x75')][_0xce0d('0x82')]},'include':[{'model':db[_0xce0d('0x79')],'as':_0xce0d('0xa2'),'where':_0x493105,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0xce0d('0x23')](handleEntityNotFound(_0x3f66f2,null))[_0xce0d('0x23')](function(_0x4b29c3){if(_0x4b29c3){_0x2d8e7e[_0xce0d('0xa3')]=_['omit'](_0x4b29c3,[_0xce0d('0xa2')]);if(_0x4b29c3['Contacts'][_0xce0d('0x6c')]){return _0x4b29c3[_0xce0d('0xa2')][0x0];}var _0x391e7b=_[_0xce0d('0xa4')](_0x2d8e7e[_0xce0d('0x5f')],{'firstName':_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')],'ListId':_0x4b29c3['id']});_0x391e7b[_0x2d8e7e['body'][_0xce0d('0x9e')]]=_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')];return db[_0xce0d('0x79')]['create'](_0x391e7b,{'fields':_0x360eec,'raw':!![]});}})[_0xce0d('0x23')](handleEntityNotFound(_0x3f66f2,null))[_0xce0d('0x23')](function(_0x19b0a6){if(_0x19b0a6){_0x2d8e7e['contact']=_0x19b0a6;var _0x3a2f15={'ContactId':_0x19b0a6['id'],'phone':_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x85')],'SmsAccountId':_0x4daf36[_0xce0d('0x5a')]['id']};var _0x2a0fb5={'ContactId':_0x19b0a6['id'],'SmsAccountId':_0x4daf36[_0xce0d('0x5a')]['id'],'closed':![]};return db[_0xce0d('0xa5')][_0xce0d('0x5d')]({'where':_0x2a0fb5})['then'](function(_0x119b85){if(_0x119b85){return[_0x119b85,![]];}return db[_0xce0d('0xa5')][_0xce0d('0x5e')](_0x3a2f15)['then'](function(_0x3e2815){return[_0x3e2815,!![]];});});}})['spread'](function(_0x46ce01,_0x1332c1){_0x2d8e7e[_0xce0d('0xa6')]=_0x46ce01[_0xce0d('0x38')]({'plain':!![]});_0x2d8e7e[_0xce0d('0xa6')][_0xce0d('0xa7')]=![];if(_0x1332c1){if(_0x2d8e7e[_0xce0d('0x75')][_0xce0d('0xa8')]){_0x2d8e7e[_0xce0d('0x76')][_0xce0d('0xa9')]({'id':0x0,'priority':_0x2d8e7e[_0xce0d('0x76')][_0xce0d('0x6c')]+0x1,'app':_0xce0d('0xaa'),'appdata':_0xce0d('0xab'),'interval':_0xce0d('0xac')});}_0x2d8e7e[_0xce0d('0xa6')][_0xce0d('0xa7')]=!![];}return db['SmsMessage'][_0xce0d('0x5e')]({'phone':_0x2d8e7e[_0xce0d('0x5f')]['from'],'messageId':_0x2d8e7e[_0xce0d('0x5f')]['messageId'],'body':_0x2d8e7e[_0xce0d('0x5f')][_0xce0d('0x5f')],'SmsAccountId':_0x4daf36['params']['id'],'SmsInteractionId':_0x46ce01['id'],'direction':'in','ContactId':_0x46ce01['ContactId'],'AttachmentId':_0x2d8e7e['body'][_0xce0d('0xad')]});})['then'](function(_0x40975c){_0x2d8e7e[_0xce0d('0x2a')]=_0x40975c;if(!_0x2d8e7e[_0xce0d('0xa6')][_0xce0d('0xae')])return;return db[_0xce0d('0xaf')]['find']({'attributes':['id',_0xce0d('0x3c')],'where':{'id':_0x2d8e7e['interaction'][_0xce0d('0xae')]}});})[_0xce0d('0x23')](function(_0x1671bd){if(_0x1671bd){_0x2d8e7e[_0xce0d('0x76')][_0xce0d('0xb0')]({'id':0x0,'priority':0x0,'app':_0xce0d('0xb1'),'appdata':_0x1671bd[_0xce0d('0x3c')]+','+(_0x2d8e7e[_0xce0d('0x75')][_0xce0d('0xb2')]||0xa),'interval':_0xce0d('0xac')});}if(!_0x2d8e7e[_0xce0d('0xa6')][_0xce0d('0xb3')])return;return db['SmsQueue']['find']({'attributes':['id',_0xce0d('0x3c')],'where':{'id':_0x2d8e7e[_0xce0d('0xa6')][_0xce0d('0xb3')]}});})[_0xce0d('0x23')](function(_0x19c98d){if(_0x19c98d){_0x2d8e7e[_0xce0d('0x76')][_0xce0d('0xb0')]({'id':0x0,'priority':0x1,'app':_0xce0d('0xb4'),'appdata':_0x19c98d[_0xce0d('0x3c')]+','+(_0x2d8e7e[_0xce0d('0x75')][_0xce0d('0xb5')]||0x12c),'interval':_0xce0d('0xac')});}return respondWithRpcPromise(_0xce0d('0xb6'),_0xce0d('0xb7'),_0x2d8e7e);})[_0xce0d('0x23')](function(_0x22283f){if(_0x22283f){var _0x5483d2=0xc8;var _0x233c12=_0xce0d('0xb8');logger[_0xce0d('0x24')](_0xce0d('0xb9'),_0x233c12,_0x5483d2,_0xce0d('0xba'));logger[_0xce0d('0xbb')](_0xce0d('0xbc'),_0x233c12,_0x5483d2,_0xce0d('0xba'),JSON[_0xce0d('0x26')](_0x22283f));if(_0x2d8e7e['account'][_0xce0d('0x42')]===_0xce0d('0x84')){return _0x3f66f2['status'](_0x5483d2)[_0xce0d('0xbd')](_0xce0d('0xbe'),_0xce0d('0xbf'))[_0xce0d('0x3d')](_0xce0d('0xc0'));}else{return _0x3f66f2[_0xce0d('0x2e')](_0x5483d2)[_0xce0d('0x2f')](_0x22283f);}}})['catch'](handleError(_0x3f66f2,null));};exports[_0xce0d('0xc1')]=function(_0x3b7222,_0x45f003){var _0x41a751=_0x3b7222[_0xce0d('0x5a')]['id'];var _0x342f09=_0x3b7222[_0xce0d('0x5f')];var _0x9d46fb=0xc8;var _0x51b4cf=null;return db['sequelize']['transaction']({'isolationLevel':db[_0xce0d('0xc2')][_0xce0d('0xc3')][_0xce0d('0xc4')]['READ_COMMITTED']},function(_0x7d2e1a){return db['SmsAccount'][_0xce0d('0x6b')]({'where':{'id':_0x41a751},'transaction':_0x7d2e1a})[_0xce0d('0x23')](function(_0x2ad93a){if(_0x2ad93a){return db[_0xce0d('0xc5')][_0xce0d('0x37')]({'where':{'SmsAccountId':_0x41a751},'transaction':_0x7d2e1a})[_0xce0d('0x23')](function(){var _0x3b4d87=_[_0xce0d('0x40')](_0x342f09,function(_0x1baed1){_0x1baed1[_0xce0d('0x68')]=_0x41a751;return _0x1baed1;});return db[_0xce0d('0xc5')]['bulkCreate'](_0x3b4d87,{'transaction':_0x7d2e1a});});}else{_0x9d46fb=0x194;_0x51b4cf=[];}});})[_0xce0d('0x23')](function(){if(_0x9d46fb!==0x194){return db['SmsApplication']['findAndCountAll']({'where':{'SmsAccountId':_0x41a751},'order':'priority'})[_0xce0d('0x23')](function(_0x2eaffe){_0x51b4cf=_0x2eaffe;});}})['catch'](function(_0x156296){_0x9d46fb=0x1f4;logger[_0xce0d('0x27')](_0x156296['stack']);if(_0x156296[_0xce0d('0x3c')]){delete _0x156296['name'];}_0x51b4cf=_0x156296;})['finally'](function(){if(_0x51b4cf===null){_0x45f003[_0xce0d('0x2d')](_0x9d46fb);}else{if(_0x9d46fb===0x1f4){_0x45f003[_0xce0d('0x2e')](_0x9d46fb)[_0xce0d('0x3d')](_0x51b4cf);}else{_0x45f003[_0xce0d('0x2e')](_0x9d46fb)[_0xce0d('0x2f')](_0x51b4cf);}}});};exports['getApplications']=function(_0x599130,_0x5bd590,_0x209e1b){var _0xa09675={};var _0x3d330b={};var _0x4d5d05;var _0x26897d;return db[_0xce0d('0x55')][_0xce0d('0x6b')]({'where':{'id':_0x599130[_0xce0d('0x5a')]['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x5bd590,null))[_0xce0d('0x23')](function(_0x49982c){if(_0x49982c){_0x4d5d05=_0x49982c;_0x3d330b[_0xce0d('0x44')]=_['keys'](db['SmsApplication'][_0xce0d('0x5c')]);_0x3d330b[_0xce0d('0x46')]=_['keys'](_0x599130[_0xce0d('0x46')]);_0x3d330b[_0xce0d('0x4f')]=_[_0xce0d('0x47')](_0x3d330b['model'],_0x3d330b[_0xce0d('0x46')]);_0xa09675[_0xce0d('0x48')]=_['intersection'](_0x3d330b[_0xce0d('0x44')],qs[_0xce0d('0x49')](_0x599130[_0xce0d('0x46')]['fields']));_0xa09675[_0xce0d('0x48')]=_0xa09675[_0xce0d('0x48')][_0xce0d('0x6c')]?_0xa09675['attributes']:_0x3d330b['model'];_0xa09675[_0xce0d('0x4c')]=qs[_0xce0d('0x4d')](_0x599130[_0xce0d('0x46')][_0xce0d('0x4d')]);_0xa09675['where']=qs['filters'](_[_0xce0d('0x4e')](_0x599130[_0xce0d('0x46')],_0x3d330b[_0xce0d('0x4f')]));if(_0x599130[_0xce0d('0x46')][_0xce0d('0x50')]){_0xa09675[_0xce0d('0x51')]=_[_0xce0d('0x52')](_0xa09675[_0xce0d('0x51')],{'$or':_[_0xce0d('0x40')](_0xa09675[_0xce0d('0x48')],function(_0x14f8d3){var _0x7c155e={};_0x7c155e[_0x14f8d3]={'$like':'%'+_0x599130['query'][_0xce0d('0x50')]+'%'};return _0x7c155e;})});}_0xa09675=_[_0xce0d('0x52')]({},_0xa09675,_0x599130['options']);return _0x4d5d05[_0xce0d('0xc6')](_0xa09675);}})[_0xce0d('0x23')](function(_0x30d5ac){if(_0x30d5ac){_0x26897d=_0x30d5ac['length'];if(!_0x599130['query'][_0xce0d('0x4a')](_0xce0d('0x4b'))){_0xa09675[_0xce0d('0x31')]=qs[_0xce0d('0x31')](_0x599130[_0xce0d('0x46')][_0xce0d('0x31')]);_0xa09675[_0xce0d('0x30')]=qs['offset'](_0x599130[_0xce0d('0x46')][_0xce0d('0x30')]);}return _0x4d5d05['getApplications'](_0xa09675);}})['then'](function(_0x2c8a25){if(_0x2c8a25){return _0x2c8a25?{'count':_0x26897d,'rows':_0x2c8a25}:null;}})['then'](respondWithResult(_0x5bd590,null))[_0xce0d('0x2c')](handleError(_0x5bd590,null));};exports['getInteractions']=function(_0x3aacd9,_0x114218,_0x222571){var _0x1cf4c9={'raw':![],'where':{}};var _0x5bda55={};var _0x522318={'count':0x0,'rows':[]};return db[_0xce0d('0x55')][_0xce0d('0x6b')]({'where':{'id':_0x3aacd9['params']['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x114218,null))[_0xce0d('0x23')](function(_0x38833b){if(_0x38833b){_0x5bda55[_0xce0d('0x44')]=_[_0xce0d('0x45')](db['SmsInteraction'][_0xce0d('0x5c')]);_0x5bda55[_0xce0d('0x46')]=_[_0xce0d('0x45')](_0x3aacd9[_0xce0d('0x46')]);_0x5bda55['filters']=_[_0xce0d('0x47')](_0x5bda55[_0xce0d('0x44')],_0x5bda55['query']);_0x1cf4c9['attributes']=_[_0xce0d('0x47')](_0x5bda55[_0xce0d('0x44')],qs[_0xce0d('0x49')](_0x3aacd9[_0xce0d('0x46')][_0xce0d('0x49')]));_0x1cf4c9[_0xce0d('0x48')]=_0x1cf4c9['attributes'][_0xce0d('0x6c')]?_0x1cf4c9['attributes']:_0x5bda55[_0xce0d('0x44')];if(!_0x3aacd9[_0xce0d('0x46')][_0xce0d('0x4a')](_0xce0d('0x4b'))){_0x1cf4c9[_0xce0d('0x31')]=qs[_0xce0d('0x31')](_0x3aacd9[_0xce0d('0x46')][_0xce0d('0x31')]);_0x1cf4c9[_0xce0d('0x30')]=qs['offset'](_0x3aacd9[_0xce0d('0x46')][_0xce0d('0x30')]);}_0x1cf4c9[_0xce0d('0x4c')]=qs[_0xce0d('0x4d')](_0x3aacd9[_0xce0d('0x46')]['sort']);_0x1cf4c9[_0xce0d('0x51')]=qs[_0xce0d('0x4f')](_[_0xce0d('0x4e')](_0x3aacd9[_0xce0d('0x46')],_0x5bda55[_0xce0d('0x4f')]));_0x1cf4c9[_0xce0d('0x51')][_0xce0d('0x68')]=_0x38833b['id'];if(_0x3aacd9[_0xce0d('0x46')][_0xce0d('0x50')]){_0x1cf4c9['where']=_['merge'](_0x1cf4c9[_0xce0d('0x51')],{'$or':_[_0xce0d('0x40')](_0x1cf4c9['attributes'],function(_0x37ca14){var _0x321043={};_0x321043[_0x37ca14]={'$like':'%'+_0x3aacd9[_0xce0d('0x46')]['filter']+'%'};return _0x321043;})});}_0x1cf4c9=_[_0xce0d('0x52')]({},_0x1cf4c9,_0x3aacd9['options']);return db[_0xce0d('0xa5')][_0xce0d('0x33')]({'where':_0x1cf4c9[_0xce0d('0x51')]})[_0xce0d('0x23')](function(_0x57efe1){_0x522318[_0xce0d('0x33')]=_0x57efe1;if(_0x3aacd9[_0xce0d('0x46')]['includeAll']){_0x1cf4c9[_0xce0d('0x57')]=[{'model':db[_0xce0d('0x79')],'as':_0xce0d('0xc7'),'required':![]},{'model':db[_0xce0d('0xaf')],'as':_0xce0d('0xc8'),'attributes':[_0xce0d('0x3c'),'fullname',_0xce0d('0xc9')],'required':![]},{'model':db[_0xce0d('0xca')],'as':_0xce0d('0xcb'),'attributes':['id','name',_0xce0d('0xcc')],'where':_0x3aacd9[_0xce0d('0x46')][_0xce0d('0xcd')]?{'id':_0x3aacd9['query'][_0xce0d('0xcd')]}:undefined,'required':_0x3aacd9['query'][_0xce0d('0xcd')]?!![]:![]}];}return db[_0xce0d('0xa5')][_0xce0d('0x58')](_0x1cf4c9);})[_0xce0d('0x23')](function(_0x3b6654){_0x522318[_0xce0d('0x59')]=_0x3b6654;return _0x522318;});}})[_0xce0d('0x23')](respondWithFilteredResult(_0x114218,_0x1cf4c9))[_0xce0d('0x2c')](handleError(_0x114218,null));};exports[_0xce0d('0x3d')]=function(_0x31b3ad,_0x5570d0,_0x1b69b4){var _0x550381,_0x5937b1,_0x54edbe;if(_[_0xce0d('0x9c')](_0x31b3ad['body']['body'])||_0x31b3ad[_0xce0d('0x5f')][_0xce0d('0x5f')]===''){throw new db['Sequelize'][(_0xce0d('0x7c'))](_0xce0d('0x9d'));}if(_[_0xce0d('0x9c')](_0x31b3ad[_0xce0d('0x5f')]['to'])){throw new db[(_0xce0d('0x7b'))][(_0xce0d('0x7c'))](_0xce0d('0xce'));}_0x550381=_0x31b3ad['body']['to'];return db['SmsAccount'][_0xce0d('0x5d')]({'where':{'id':_0x31b3ad[_0xce0d('0x5a')]['id']},'include':[{'model':db[_0xce0d('0xa1')],'as':'List','include':[{'model':db[_0xce0d('0x79')],'as':_0xce0d('0xa2'),'where':{'mobile':_0x550381},'limit':0x1,'order':[[_0xce0d('0x80'),'DESC']]}]}]})[_0xce0d('0x23')](handleEntityNotFound(_0x5570d0,null))[_0xce0d('0x23')](function(_0x37f067){if(_0x37f067&&_0x37f067[_0xce0d('0xcf')]){_0x5937b1=_0x37f067[_0xce0d('0x38')]({'plain':!![]});if(_0x5937b1[_0xce0d('0xcf')]&&_0x5937b1[_0xce0d('0xcf')]['Contacts']['length']){return _0x5937b1[_0xce0d('0xcf')][_0xce0d('0xa2')][0x0];}return db[_0xce0d('0x79')][_0xce0d('0x5e')](_[_0xce0d('0xa4')](_0x31b3ad[_0xce0d('0x5f')],{'firstName':_0x550381,'mobile':_0x550381,'phone':_0x550381,'ListId':_0x5937b1[_0xce0d('0x82')]}));}})[_0xce0d('0x23')](handleEntityNotFound(_0x5570d0,null))[_0xce0d('0x23')](function(_0x450382){if(_0x450382){_0x54edbe=_0x450382;return db[_0xce0d('0xa5')]['find']({'where':{'ContactId':_0x54edbe['id'],'closed':![],'SmsAccountId':_0x5937b1['id']}})[_0xce0d('0x23')](function(_0x191212){if(_0x191212){return[_0x191212,![]];}return db['SmsInteraction']['create']({'UserId':_0x31b3ad[_0xce0d('0x60')]['id'],'ContactId':_0x54edbe['id'],'SmsAccountId':_0x5937b1['id'],'phone':_0x550381,'firstMsgDirection':_0xce0d('0xd0'),'Messages':[_[_0xce0d('0x52')](_0x31b3ad[_0xce0d('0x5f')],{'read':![],'body':_0x31b3ad[_0xce0d('0x5f')][_0xce0d('0x5f')],'phone':_0x550381,'SmsAccountId':_0x5937b1['id'],'UserId':_0x31b3ad[_0xce0d('0x60')]['id'],'ContactId':_0x54edbe['id']})]},{'include':[{'model':db[_0xce0d('0xd1')],'as':_0xce0d('0xd2')}]})[_0xce0d('0x23')](function(_0x408c4e){return[_0x408c4e,!![]];});});}})[_0xce0d('0xd3')](function(_0x3d2856,_0x1da363){if(_0x1da363){return _0x3d2856;}return db[_0xce0d('0xd1')][_0xce0d('0x5e')](_['merge'](_0x31b3ad[_0xce0d('0x5f')],{'read':![],'body':_0x31b3ad['body']['body'],'phone':_0x550381,'SmsAccountId':_0x5937b1['id'],'SmsInteractionId':_0x3d2856['id'],'UserId':_0x31b3ad[_0xce0d('0x60')]['id'],'ContactId':_0x54edbe['id']}))[_0xce0d('0x23')](function(_0x3fcc65){_0x3d2856[_0xce0d('0xd4')][_0xce0d('0xd2')]=[];_0x3d2856[_0xce0d('0xd4')]['Messages'][_0xce0d('0xa9')](_0x3fcc65[_0xce0d('0xd4')]);return _0x3d2856;});})['then'](respondWithResult(_0x5570d0,null))['catch'](handleError(_0x5570d0,null));};exports[_0xce0d('0x2e')]=function(_0x1c0774,_0x1fd86a,_0x33bf3a){if(_0x1c0774['body']['id']){delete _0x1c0774['body']['id'];}var _0x2c4620,_0x1ff9ab,_0x1ad63f;return db[_0xce0d('0x55')]['find']({'where':{'id':_0x1c0774['params']['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x1fd86a,null))[_0xce0d('0x23')](function(_0x16f584){if(_0x16f584){_0x1ad63f=_0x16f584;logger[_0xce0d('0xbb')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xce0d('0xd5'),_0x16f584[_0xce0d('0x42')],util[_0xce0d('0xd6')](_0x1c0774[_0xce0d('0x5f')],{'showHidden':![],'depth':null}));switch(_0x16f584[_0xce0d('0x42')]){case'skebby':if(_0x1c0774['body']['skebby_dispatch_id']&&_0x1c0774[_0xce0d('0x5f')][_0xce0d('0x2e')]){_0x1ff9ab=_0x1c0774[_0xce0d('0x5f')][_0xce0d('0x2e')];return db[_0xce0d('0xd1')]['find']({'where':{'messageId':_0x1c0774[_0xce0d('0x5f')][_0xce0d('0xd7')]}});}break;case _0xce0d('0x8b'):if(_0x1c0774[_0xce0d('0x5f')][_0xce0d('0xd8')]&&_0x1c0774['body'][_0xce0d('0xd9')]){_0x1ff9ab=_0x1c0774[_0xce0d('0x5f')][_0xce0d('0xd9')];return db[_0xce0d('0xd1')]['find']({'where':{'messageId':_0x1c0774[_0xce0d('0x5f')][_0xce0d('0xd8')]}});}break;case _0xce0d('0x8c'):if(_0x1c0774[_0xce0d('0x5f')][_0xce0d('0x8d')]&&_0x1c0774[_0xce0d('0x5f')]['status_code']){_0x1ff9ab=_0x1c0774[_0xce0d('0x5f')][_0xce0d('0xda')];return db[_0xce0d('0xd1')]['find']({'where':{'messageId':_0x1c0774['body'][_0xce0d('0x8d')]}});}break;case _0xce0d('0x91'):var _0xdceae1=_0x1c0774[_0xce0d('0x5f')][_0xce0d('0x92')][0x0];if(_0xdceae1['messageId']&&_0xdceae1['status'][_0xce0d('0xdb')]===_0xce0d('0xdc')){_0x1ff9ab=_0xdceae1[_0xce0d('0x2e')][_0xce0d('0xdb')];return db[_0xce0d('0xd1')][_0xce0d('0x5d')]({'where':{'messageId':_0xdceae1['messageId']}});}break;case'clickatell':if(_0x1c0774['body']['messageId']&&_0x1c0774['body'][_0xce0d('0x2e')]){_0x1ff9ab=_0x1c0774[_0xce0d('0x5f')][_0xce0d('0x2e')];return db[_0xce0d('0xd1')][_0xce0d('0x5d')]({'where':{'messageId':_0x1c0774[_0xce0d('0x5f')][_0xce0d('0x8f')]}});}break;case _0xce0d('0x98'):if(_0x1c0774[_0xce0d('0x5f')][0x0][_0xce0d('0x2a')]['id']){_0x1ff9ab=_0x1c0774[_0xce0d('0x5f')][0x0][_0xce0d('0x42')];return db['SmsMessage'][_0xce0d('0x5d')]({'where':{'messageId':_0x1c0774[_0xce0d('0x5f')][0x0]['message']['id']}});}break;case _0xce0d('0x99'):if(_0x1c0774[_0xce0d('0x5f')][_0xce0d('0xdd')]&&_0x1c0774[_0xce0d('0x5f')][_0xce0d('0x2e')]){_0x1ff9ab=_0x1c0774[_0xce0d('0x5f')]['status'];return db['SmsMessage']['find']({'where':{'messageId':_0x1c0774[_0xce0d('0x5f')][_0xce0d('0xdd')]}});}break;}}})['then'](handleEntityNotFound(_0x1fd86a,null))['then'](function(_0x1c343d){if(_0x1c343d){_0x2c4620=_0x1c343d;switch(_0x1ad63f[_0xce0d('0x42')]){case _0xce0d('0x89'):if(_0x1ff9ab===_0xce0d('0xdc')){return _0x2c4620['update']({'read':!![]});}else{logger['error'](_0xce0d('0xb9'),'status',_0xce0d('0x89'),util['inspect'](_0x1c0774[_0xce0d('0x5f')],{'showHidden':![],'depth':null}));}break;case _0xce0d('0x8b'):if(_0x1ff9ab==='1'){return _0x2c4620[_0xce0d('0x66')]({'read':!![]});}else{logger[_0xce0d('0x27')](_0xce0d('0xb9'),_0xce0d('0x2e'),_0xce0d('0x89'),util['inspect'](_0x1c0774[_0xce0d('0x5f')],{'showHidden':![],'depth':null}));}break;case _0xce0d('0x8c'):if(!_0x1c0774[_0xce0d('0x5f')][_0xce0d('0xde')]&&_0x1ff9ab>=0xc8&&_0x1ff9ab<=0xce){return _0x2c4620[_0xce0d('0x66')]({'read':!![]});}else{logger[_0xce0d('0x27')](_0xce0d('0xb9'),_0xce0d('0x2e'),_0xce0d('0x8c'),util[_0xce0d('0xd6')](_0x1c0774['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x19cf5c=_0x1c0774[_0xce0d('0x5f')][_0xce0d('0x92')][0x0];if(_0x19cf5c[_0xce0d('0x2e')][_0xce0d('0xdb')]===_0xce0d('0xdc')){return _0x2c4620['update']({'read':!![]});}else{logger[_0xce0d('0x27')](_0xce0d('0xb9'),_0xce0d('0x2e'),_0xce0d('0x91'),util[_0xce0d('0xd6')](_0x1c0774[_0xce0d('0x5f')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x1ff9ab==_0xce0d('0xdf')||_0x1ff9ab==_0xce0d('0xe0')){return _0x2c4620[_0xce0d('0x66')]({'read':!![]});}else{logger[_0xce0d('0x27')](_0xce0d('0xb9'),_0xce0d('0x2e'),_0xce0d('0x97'),util[_0xce0d('0xd6')](_0x1c0774[_0xce0d('0x5f')],{'showHidden':![],'depth':null}));}break;case _0xce0d('0x98'):if(_0x1ff9ab==_0xce0d('0xe1')){return _0x2c4620[_0xce0d('0x66')]({'read':!![]});}else{logger[_0xce0d('0x27')](_0xce0d('0xb9'),_0xce0d('0x2e'),_0xce0d('0x98'),util[_0xce0d('0xd6')](_0x1c0774[_0xce0d('0x5f')],{'showHidden':![],'depth':null}));}break;case _0xce0d('0x99'):if(_0x1ff9ab===_0xce0d('0xe2')||_0x1ff9ab==='ACCEPTD'){return _0x2c4620['update']({'read':!![]});}else{logger['error'](_0xce0d('0xb9'),_0xce0d('0x2e'),_0xce0d('0x99'),util[_0xce0d('0xd6')](_0x1c0774['body'],{'showHidden':![],'depth':null}));}break;}return _0x2c4620;}})[_0xce0d('0x23')](respondWithResult(_0x1fd86a,null))['catch'](handleError(_0x1fd86a,null));};exports[_0xce0d('0xe3')]=function(_0xdddc97,_0x5a139c,_0x1a4955){var _0x5c96de,_0x220410,_0x2e00c5;return db[_0xce0d('0x55')][_0xce0d('0x5d')]({'where':{'id':_0xdddc97[_0xce0d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5a139c,null))[_0xce0d('0x23')](function(_0x289535){if(_0x289535){_0x2e00c5=_0x289535;logger[_0xce0d('0xbb')](_0xce0d('0xb9'),_0xce0d('0x2e'),_0xce0d('0xd5'),_0x289535[_0xce0d('0x42')],util[_0xce0d('0xd6')](_0xdddc97[_0xce0d('0x46')],{'showHidden':![],'depth':null}));switch(_0x289535[_0xce0d('0x42')]){case'csc':if(_0xdddc97[_0xce0d('0x46')][_0xce0d('0xe4')]&&_0xdddc97[_0xce0d('0x46')][_0xce0d('0xe5')]){_0x220410=_0xdddc97[_0xce0d('0x46')][_0xce0d('0xe5')];return db[_0xce0d('0xd1')]['find']({'where':{'messageId':_0xdddc97[_0xce0d('0x46')][_0xce0d('0xe4')]}});}break;}}})['then'](handleEntityNotFound(_0x5a139c,null))[_0xce0d('0x23')](function(_0x4df147){if(_0x4df147){_0x5c96de=_0x4df147;switch(_0x2e00c5[_0xce0d('0x42')]){case'csc':if(_0x220410==='2'||_0x220410==='6'){return _0x5c96de[_0xce0d('0x66')]({'read':!![]});}else{logger[_0xce0d('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xce0d('0x94'),util['inspect'](_0xdddc97[_0xce0d('0x46')],{'showHidden':![],'depth':null}));};break;}return _0x5c96de;}})[_0xce0d('0x23')](respondWithResult(_0x5a139c,null))[_0xce0d('0x2c')](handleError(_0x5a139c,null));};exports[_0xce0d('0xe6')]=function(_0x17b149,_0x16af3d,_0x17c629){return db[_0xce0d('0x55')][_0xce0d('0x5d')]({'where':{'id':_0x17b149[_0xce0d('0x5a')]['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x16af3d,null))['then'](function(_0x119ec2){if(_0x119ec2){return _0x119ec2[_0xce0d('0xe6')](_0x17b149[_0xce0d('0x5f')][_0xce0d('0xe7')],_[_0xce0d('0xe8')](_0x17b149[_0xce0d('0x5f')],[_0xce0d('0xe7'),'id'])||{})[_0xce0d('0xd3')](function(_0x4dfc9e){for(var _0x45f2ae=0x0;_0x45f2ae<_0x17b149['body'][_0xce0d('0xe7')][_0xce0d('0x6c')];_0x45f2ae+=0x1){socket[_0xce0d('0xe9')](_0xce0d('0xea'),{'UserId':Number(_0x17b149['body'][_0xce0d('0xe7')][_0x45f2ae]),'SmsAccountId':Number(_0x17b149['params']['id'])});}return _0x4dfc9e;});}})['then'](respondWithResult(_0x16af3d,null))['catch'](handleError(_0x16af3d,null));};exports[_0xce0d('0xeb')]=function(_0x5c042c,_0x309e95,_0x147141){return db[_0xce0d('0x55')][_0xce0d('0x5d')]({'where':{'id':_0x5c042c[_0xce0d('0x5a')]['id']}})[_0xce0d('0x23')](handleEntityNotFound(_0x309e95,null))[_0xce0d('0x23')](function(_0x5d401f){if(_0x5d401f){return _0x5d401f[_0xce0d('0xeb')](_0x5c042c['query'][_0xce0d('0xe7')])[_0xce0d('0x23')](function(){if(_['isArray'](_0x5c042c[_0xce0d('0x46')]['ids'])){for(var _0x5116ca=0x0;_0x5116ca<_0x5c042c[_0xce0d('0x46')][_0xce0d('0xe7')][_0xce0d('0x6c')];_0x5116ca+=0x1){socket[_0xce0d('0xe9')](_0xce0d('0xec'),{'UserId':Number(_0x5c042c[_0xce0d('0x46')]['ids'][_0x5116ca]),'SmsAccountId':Number(_0x5c042c[_0xce0d('0x5a')]['id'])});}}else{socket['emit'](_0xce0d('0xec'),{'UserId':Number(_0x5c042c[_0xce0d('0x46')]['ids']),'SmsAccountId':Number(_0x5c042c[_0xce0d('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x309e95,null))[_0xce0d('0x2c')](handleError(_0x309e95,null));};exports[_0xce0d('0xed')]=function(_0xbf2c7e,_0x54f826,_0x39f92e){var _0x41ca7c={};var _0x4dc65e={};var _0x6b083d;var _0x1d1d13;return db[_0xce0d('0x55')][_0xce0d('0x6b')]({'where':{'id':_0xbf2c7e[_0xce0d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x54f826,null))[_0xce0d('0x23')](function(_0x4ef14e){if(_0x4ef14e){_0x6b083d=_0x4ef14e;_0x4dc65e[_0xce0d('0x44')]=_[_0xce0d('0x45')](db[_0xce0d('0xaf')][_0xce0d('0x5c')]);_0x4dc65e[_0xce0d('0x46')]=_[_0xce0d('0x45')](_0xbf2c7e[_0xce0d('0x46')]);_0x4dc65e[_0xce0d('0x4f')]=_[_0xce0d('0x47')](_0x4dc65e[_0xce0d('0x44')],_0x4dc65e[_0xce0d('0x46')]);_0x41ca7c['attributes']=_[_0xce0d('0x47')](_0x4dc65e[_0xce0d('0x44')],qs[_0xce0d('0x49')](_0xbf2c7e[_0xce0d('0x46')][_0xce0d('0x49')]));_0x41ca7c['attributes']=_0x41ca7c[_0xce0d('0x48')][_0xce0d('0x6c')]?_0x41ca7c['attributes']:_0x4dc65e[_0xce0d('0x44')];_0x41ca7c['order']=qs['sort'](_0xbf2c7e['query']['sort']);_0x41ca7c[_0xce0d('0x51')]=qs['filters'](_['pick'](_0xbf2c7e[_0xce0d('0x46')],_0x4dc65e[_0xce0d('0x4f')]));if(_0xbf2c7e[_0xce0d('0x46')][_0xce0d('0x50')]){_0x41ca7c[_0xce0d('0x51')]=_[_0xce0d('0x52')](_0x41ca7c[_0xce0d('0x51')],{'$or':_[_0xce0d('0x40')](_0x41ca7c['attributes'],function(_0x880b2f){var _0x5e6377={};_0x5e6377[_0x880b2f]={'$like':'%'+_0xbf2c7e['query'][_0xce0d('0x50')]+'%'};return _0x5e6377;})});}_0x41ca7c=_[_0xce0d('0x52')]({},_0x41ca7c,_0xbf2c7e[_0xce0d('0x54')]);return _0x6b083d[_0xce0d('0xed')](_0x41ca7c);}})[_0xce0d('0x23')](function(_0x5ae564){if(_0x5ae564){_0x1d1d13=_0x5ae564['length'];if(!_0xbf2c7e['query'][_0xce0d('0x4a')](_0xce0d('0x4b'))){_0x41ca7c['limit']=qs['limit'](_0xbf2c7e[_0xce0d('0x46')]['limit']);_0x41ca7c[_0xce0d('0x30')]=qs[_0xce0d('0x30')](_0xbf2c7e['query'][_0xce0d('0x30')]);}return _0x6b083d['getAgents'](_0x41ca7c);}})[_0xce0d('0x23')](function(_0x19450e){if(_0x19450e){return _0x19450e?{'count':_0x1d1d13,'rows':_0x19450e}:null;}})[_0xce0d('0x23')](respondWithResult(_0x54f826,null))['catch'](handleError(_0x54f826,null));};
\ No newline at end of file
+var _0x4aca=['connectel','clicksend','plivo','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','text','replyMessageId','bandwidth','refid','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','CmContact','Contacts','DESC','list','omit','contact','SmsInteraction','spread','interaction','created','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','User','unshift','agent','queueId','SmsQueue','queue','waitForTheAssignedQueue','startRouting','receiveMessage','entity\x20found','stringify','Content-Type','text/xml','send','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','SmsApplication','bulkCreate','findAndCountAll','getApplications','getInteractions','fullname','Tag','Tags','tag','to\x20is\x20mandatory','List','out','SmsMessage','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','statusInt','requestid','message_id','status_code','groupName','DELIVERED','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','intelepeer','ACCEPTD','statusGet','message-id','state','addAgents','emit','removeAgents','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','./smsAccount.socket','register','jayson/promise','http','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','SmsAccounts','UserProfileResource','end','stack','name','index','map','SmsAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','VIRTUAL','merge','include','findAll','rows','params','Pause','mandatoryDispositionPause','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','findOne','hasOwnProperty','nolimit','SmsAccountId','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','applications','orderBy','Applications','priority','asc','account','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','messageId','MessageSid'];(function(_0x5ac590,_0x3323d1){var _0x24184f=function(_0x42d19e){while(--_0x42d19e){_0x5ac590['push'](_0x5ac590['shift']());}};_0x24184f(++_0x3323d1);}(_0x4aca,0x149));var _0xa4ac=function(_0x2537be,_0x21ae21){_0x2537be=_0x2537be-0x0;var _0x5955fc=_0x4aca[_0x2537be];return _0x5955fc;};'use strict';var emlformat=require(_0xa4ac('0x0'));var rimraf=require(_0xa4ac('0x1'));var zipdir=require(_0xa4ac('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa4ac('0x3'));var moment=require(_0xa4ac('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa4ac('0x5'));var util=require(_0xa4ac('0x6'));var path=require('path');var sox=require(_0xa4ac('0x7'));var csv=require(_0xa4ac('0x8'));var ejs=require(_0xa4ac('0x9'));var fs=require('fs');var fs_extra=require(_0xa4ac('0xa'));var _=require('lodash');var squel=require(_0xa4ac('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa4ac('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa4ac('0xd'));var Papa=require(_0xa4ac('0xe'));var Redis=require(_0xa4ac('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa4ac('0x10'));var as=require(_0xa4ac('0x11'));var hardwareService=require(_0xa4ac('0x12'));var logger=require('../../config/logger')(_0xa4ac('0x13'));var utils=require(_0xa4ac('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa4ac('0x15'));var db=require(_0xa4ac('0x16'))['db'];config['redis']=_[_0xa4ac('0x17')](config[_0xa4ac('0x18')],{'host':_0xa4ac('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa4ac('0x18')]));require(_0xa4ac('0x1a'))[_0xa4ac('0x1b')](socket);var jayson=require(_0xa4ac('0x1c'));var client=jayson['client'][_0xa4ac('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x518e1a,_0x12ac3f,_0x218852,_0x36e583){return new BPromise(function(_0x137d55,_0x71749){var _0x2f1c53=_0x36e583||client;return _0x2f1c53[_0xa4ac('0x1e')](_0x518e1a,_0x218852)[_0xa4ac('0x1f')](function(_0x132bcc){logger['info'](_0xa4ac('0x20'),_0x12ac3f,_0xa4ac('0x21'));logger[_0xa4ac('0x22')](_0xa4ac('0x23'),_0x12ac3f,'request\x20sent',JSON['stringify'](_0x132bcc));if(_0x132bcc[_0xa4ac('0x24')]){if(_0x132bcc[_0xa4ac('0x24')][_0xa4ac('0x25')]===0x1f4){logger[_0xa4ac('0x24')](_0xa4ac('0x20'),_0x12ac3f,_0x132bcc[_0xa4ac('0x24')][_0xa4ac('0x26')]);return _0x71749(_0x132bcc['error'][_0xa4ac('0x26')]);}logger[_0xa4ac('0x24')](_0xa4ac('0x20'),_0x12ac3f,_0x132bcc[_0xa4ac('0x24')][_0xa4ac('0x26')]);return _0x137d55(_0x132bcc['error'][_0xa4ac('0x26')]);}else{logger[_0xa4ac('0x27')](_0xa4ac('0x20'),_0x12ac3f,_0xa4ac('0x21'));_0x137d55(_0x132bcc['result'][_0xa4ac('0x26')]);}})[_0xa4ac('0x28')](function(_0x3ba76b){logger['error'](_0xa4ac('0x20'),_0x12ac3f,_0x3ba76b);_0x71749(_0x3ba76b);});});}function respondWithStatusCode(_0xadf9a6,_0x4fccfc){_0x4fccfc=_0x4fccfc||0xcc;return function(_0x55eed4){if(_0x55eed4){return _0xadf9a6[_0xa4ac('0x29')](_0x4fccfc);}return _0xadf9a6[_0xa4ac('0x2a')](_0x4fccfc)['end']();};}function respondWithResult(_0x1ead92,_0x42a4b6){_0x42a4b6=_0x42a4b6||0xc8;return function(_0xed4c44){if(_0xed4c44){return _0x1ead92[_0xa4ac('0x2a')](_0x42a4b6)[_0xa4ac('0x2b')](_0xed4c44);}};}function respondWithFilteredResult(_0x5ced5a,_0x51b95e){return function(_0x44d993){if(_0x44d993){var _0x1d7b69=typeof _0x51b95e[_0xa4ac('0x2c')]===_0xa4ac('0x2d')&&typeof _0x51b95e[_0xa4ac('0x2e')]===_0xa4ac('0x2d');var _0xebfb1b=_0x44d993['count'];var _0x239eed=_0x1d7b69?0x0:_0x51b95e[_0xa4ac('0x2c')];var _0x41e31d=_0x1d7b69?_0x44d993[_0xa4ac('0x2f')]:_0x51b95e[_0xa4ac('0x2c')]+_0x51b95e[_0xa4ac('0x2e')];var _0x481308;if(_0x41e31d>=_0xebfb1b){_0x41e31d=_0xebfb1b;_0x481308=0xc8;}else{_0x481308=0xce;}_0x5ced5a['status'](_0x481308);return _0x5ced5a[_0xa4ac('0x30')](_0xa4ac('0x31'),_0x239eed+'-'+_0x41e31d+'/'+_0xebfb1b)[_0xa4ac('0x2b')](_0x44d993);}return null;};}function patchUpdates(_0x20704c){return function(_0x116d29){try{jsonpatch[_0xa4ac('0x32')](_0x116d29,_0x20704c,!![]);}catch(_0x150810){return BPromise[_0xa4ac('0x33')](_0x150810);}return _0x116d29[_0xa4ac('0x34')]();};}function saveUpdates(_0x3af0f0,_0x525fdd){return function(_0x1dd144){if(_0x1dd144){return _0x1dd144[_0xa4ac('0x35')](_0x3af0f0)['then'](function(_0x425015){return _0x425015;});}return null;};}function removeEntity(_0x1f20e5,_0x2f3e33){return function(_0x22699a){if(_0x22699a){return _0x22699a[_0xa4ac('0x36')]()[_0xa4ac('0x1f')](function(){var _0x97e84d=_0x22699a['get']({'plain':!![]});var _0x5cee83=_0xa4ac('0x37');return db[_0xa4ac('0x38')][_0xa4ac('0x36')]({'where':{'type':_0x5cee83,'resourceId':_0x97e84d['id']}})[_0xa4ac('0x1f')](function(){return _0x22699a;});})[_0xa4ac('0x1f')](function(){_0x1f20e5[_0xa4ac('0x2a')](0xcc)[_0xa4ac('0x39')]();});}};}function handleEntityNotFound(_0x354731,_0x715852){return function(_0x43bb93){if(!_0x43bb93){_0x354731[_0xa4ac('0x29')](0x194);}return _0x43bb93;};}function handleError(_0xe18699,_0x2a1b45){_0x2a1b45=_0x2a1b45||0x1f4;return function(_0x305234){logger['error'](_0x305234[_0xa4ac('0x3a')]);if(_0x305234[_0xa4ac('0x3b')]){delete _0x305234['name'];}_0xe18699[_0xa4ac('0x2a')](_0x2a1b45)['send'](_0x305234);};}exports[_0xa4ac('0x3c')]=function(_0x49a6ef,_0x176233){var _0xe03d27={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x506dff={},_0x3c972c={'count':0x0,'rows':[]};var _0xa41f47=_[_0xa4ac('0x3d')](db[_0xa4ac('0x3e')][_0xa4ac('0x3f')],function(_0x4a70de){return{'name':_0x4a70de[_0xa4ac('0x40')],'type':_0x4a70de[_0xa4ac('0x41')][_0xa4ac('0x42')]};});_0x506dff[_0xa4ac('0x43')]=_[_0xa4ac('0x3d')](_0xa41f47,_0xa4ac('0x3b'));_0x506dff[_0xa4ac('0x44')]=_[_0xa4ac('0x45')](_0x49a6ef[_0xa4ac('0x44')]);_0x506dff[_0xa4ac('0x46')]=_[_0xa4ac('0x47')](_0x506dff[_0xa4ac('0x43')],_0x506dff[_0xa4ac('0x44')]);_0xe03d27[_0xa4ac('0x48')]=_[_0xa4ac('0x47')](_0x506dff[_0xa4ac('0x43')],qs[_0xa4ac('0x49')](_0x49a6ef[_0xa4ac('0x44')][_0xa4ac('0x49')]));_0xe03d27[_0xa4ac('0x48')]=_0xe03d27[_0xa4ac('0x48')][_0xa4ac('0x4a')]?_0xe03d27[_0xa4ac('0x48')]:_0x506dff[_0xa4ac('0x43')];if(!_0x49a6ef[_0xa4ac('0x44')]['hasOwnProperty']('nolimit')){_0xe03d27[_0xa4ac('0x2e')]=qs['limit'](_0x49a6ef[_0xa4ac('0x44')][_0xa4ac('0x2e')]);_0xe03d27[_0xa4ac('0x2c')]=qs[_0xa4ac('0x2c')](_0x49a6ef[_0xa4ac('0x44')]['offset']);}_0xe03d27[_0xa4ac('0x4b')]=qs[_0xa4ac('0x4c')](_0x49a6ef[_0xa4ac('0x44')]['sort']);_0xe03d27[_0xa4ac('0x4d')]=qs[_0xa4ac('0x46')](_[_0xa4ac('0x4e')](_0x49a6ef[_0xa4ac('0x44')],_0x506dff[_0xa4ac('0x46')]),_0xa41f47);if(_0x49a6ef[_0xa4ac('0x44')][_0xa4ac('0x4f')]){_0xe03d27[_0xa4ac('0x4d')]=_['merge'](_0xe03d27[_0xa4ac('0x4d')],{'$or':_[_0xa4ac('0x3d')](_0xa41f47,function(_0x1f24fa){if(_0x1f24fa[_0xa4ac('0x41')]!==_0xa4ac('0x50')){var _0x23eec6={};_0x23eec6[_0x1f24fa['name']]={'$like':'%'+_0x49a6ef[_0xa4ac('0x44')]['filter']+'%'};return _0x23eec6;}})});}_0xe03d27=_[_0xa4ac('0x51')]({},_0xe03d27,_0x49a6ef['options']);var _0x1dc45e={'where':_0xe03d27[_0xa4ac('0x4d')]};return db[_0xa4ac('0x3e')][_0xa4ac('0x2f')](_0x1dc45e)['then'](function(_0x104087){_0x3c972c[_0xa4ac('0x2f')]=_0x104087;if(_0x49a6ef['query']['includeAll']){_0xe03d27[_0xa4ac('0x52')]=[{'all':!![]}];}return db['SmsAccount'][_0xa4ac('0x53')](_0xe03d27);})[_0xa4ac('0x1f')](function(_0x4f3e74){_0x3c972c[_0xa4ac('0x54')]=_0x4f3e74;return _0x3c972c;})[_0xa4ac('0x1f')](respondWithFilteredResult(_0x176233,_0xe03d27))[_0xa4ac('0x28')](handleError(_0x176233,null));};exports['show']=function(_0x5d3730,_0x475409){var _0x1bdda5={'raw':![],'where':{'id':_0x5d3730[_0xa4ac('0x55')]['id']},'include':[{'model':db[_0xa4ac('0x56')],'as':_0xa4ac('0x57')}]},_0x9ec21b={};_0x9ec21b[_0xa4ac('0x43')]=_[_0xa4ac('0x45')](db[_0xa4ac('0x3e')]['rawAttributes']);_0x9ec21b['query']=_[_0xa4ac('0x45')](_0x5d3730['query']);_0x9ec21b[_0xa4ac('0x46')]=_['intersection'](_0x9ec21b['model'],_0x9ec21b[_0xa4ac('0x44')]);_0x1bdda5[_0xa4ac('0x48')]=_[_0xa4ac('0x47')](_0x9ec21b['model'],qs[_0xa4ac('0x49')](_0x5d3730[_0xa4ac('0x44')][_0xa4ac('0x49')]));_0x1bdda5['attributes']=_0x1bdda5[_0xa4ac('0x48')]['length']?_0x1bdda5['attributes']:_0x9ec21b[_0xa4ac('0x43')];if(_0x5d3730[_0xa4ac('0x44')][_0xa4ac('0x58')]){_0x1bdda5[_0xa4ac('0x52')]=[{'all':!![]}];}_0x1bdda5=_['merge']({},_0x1bdda5,_0x5d3730['options']);return db[_0xa4ac('0x3e')]['find'](_0x1bdda5)[_0xa4ac('0x1f')](handleEntityNotFound(_0x475409,null))[_0xa4ac('0x1f')](respondWithResult(_0x475409,null))[_0xa4ac('0x28')](handleError(_0x475409,null));};exports[_0xa4ac('0x59')]=function(_0x3b625f,_0x3507e4){return db['SmsAccount'][_0xa4ac('0x59')](_0x3b625f[_0xa4ac('0x5a')],{})['then'](function(_0x5b7331){var _0x277add=_0x3b625f[_0xa4ac('0x5b')]['get']({'plain':!![]});if(!_0x277add)throw new Error(_0xa4ac('0x5c'));if(_0x277add[_0xa4ac('0x5d')]==='user'){var _0x119bbf=_0x5b7331[_0xa4ac('0x5e')]({'plain':!![]});var _0x5d0320=_0xa4ac('0x37');return db['UserProfileSection'][_0xa4ac('0x5f')]({'where':{'name':_0x5d0320,'userProfileId':_0x277add[_0xa4ac('0x60')]},'raw':!![]})[_0xa4ac('0x1f')](function(_0xdea79a){if(_0xdea79a&&_0xdea79a[_0xa4ac('0x61')]===0x0){return db[_0xa4ac('0x38')][_0xa4ac('0x59')]({'name':_0x119bbf[_0xa4ac('0x3b')],'resourceId':_0x119bbf['id'],'type':_0xdea79a[_0xa4ac('0x3b')],'sectionId':_0xdea79a['id']},{})[_0xa4ac('0x1f')](function(){return _0x5b7331;});}else{return _0x5b7331;}})[_0xa4ac('0x28')](function(_0x355026){logger['error'](_0xa4ac('0x62'),_0x355026);throw _0x355026;});}return _0x5b7331;})[_0xa4ac('0x1f')](respondWithResult(_0x3507e4,0xc9))[_0xa4ac('0x28')](handleError(_0x3507e4,null));};exports['update']=function(_0x280f92,_0x119814){if(_0x280f92['body']['id']){delete _0x280f92[_0xa4ac('0x5a')]['id'];}return db['SmsAccount'][_0xa4ac('0x5f')]({'where':{'id':_0x280f92[_0xa4ac('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0xa4ac('0x57')}]})[_0xa4ac('0x1f')](handleEntityNotFound(_0x119814,null))[_0xa4ac('0x1f')](saveUpdates(_0x280f92['body'],null))[_0xa4ac('0x1f')](respondWithResult(_0x119814,null))[_0xa4ac('0x28')](handleError(_0x119814,null));};exports[_0xa4ac('0x36')]=function(_0x46b47a,_0x9fc118){return db[_0xa4ac('0x3e')]['find']({'where':{'id':_0x46b47a['params']['id']}})[_0xa4ac('0x1f')](handleEntityNotFound(_0x9fc118,null))[_0xa4ac('0x1f')](removeEntity(_0x9fc118,null))[_0xa4ac('0x28')](handleError(_0x9fc118,null));};exports[_0xa4ac('0x63')]=function(_0xdfed0d,_0x55299d){return db[_0xa4ac('0x3e')]['describe']()['then'](respondWithResult(_0x55299d,null))[_0xa4ac('0x28')](handleError(_0x55299d,null));};exports[_0xa4ac('0x64')]=function(_0x36b431,_0x467ddd,_0x1ba7a1){if(_0x36b431[_0xa4ac('0x5a')]['id']){delete _0x36b431[_0xa4ac('0x5a')]['id'];}return db[_0xa4ac('0x3e')][_0xa4ac('0x5f')]({'where':{'id':_0x36b431[_0xa4ac('0x55')]['id']}})['then'](handleEntityNotFound(_0x467ddd,null))['then'](function(_0x318c6d){if(_0x318c6d){_0x36b431[_0xa4ac('0x5a')]['SmsAccountId']=_0x318c6d['id'];return db[_0xa4ac('0x65')]['create'](_0x36b431[_0xa4ac('0x5a')]);}})[_0xa4ac('0x1f')](respondWithResult(_0x467ddd,null))['catch'](handleError(_0x467ddd,null));};exports['getDispositions']=function(_0x57a042,_0x3bb78e,_0x2b42d1){var _0x510ad8={'raw':![],'where':{}};var _0x581dd2={};var _0x2eafd0={'count':0x0,'rows':[]};return db['SmsAccount'][_0xa4ac('0x66')]({'where':{'id':_0x57a042['params']['id']}})['then'](handleEntityNotFound(_0x3bb78e,null))[_0xa4ac('0x1f')](function(_0x552728){if(_0x552728){_0x581dd2[_0xa4ac('0x43')]=_['keys'](db[_0xa4ac('0x65')][_0xa4ac('0x3f')]);_0x581dd2[_0xa4ac('0x44')]=_[_0xa4ac('0x45')](_0x57a042[_0xa4ac('0x44')]);_0x581dd2[_0xa4ac('0x46')]=_[_0xa4ac('0x47')](_0x581dd2[_0xa4ac('0x43')],_0x581dd2['query']);_0x510ad8[_0xa4ac('0x48')]=_[_0xa4ac('0x47')](_0x581dd2[_0xa4ac('0x43')],qs[_0xa4ac('0x49')](_0x57a042[_0xa4ac('0x44')]['fields']));_0x510ad8['attributes']=_0x510ad8[_0xa4ac('0x48')][_0xa4ac('0x4a')]?_0x510ad8[_0xa4ac('0x48')]:_0x581dd2[_0xa4ac('0x43')];if(!_0x57a042['query'][_0xa4ac('0x67')](_0xa4ac('0x68'))){_0x510ad8[_0xa4ac('0x2e')]=qs[_0xa4ac('0x2e')](_0x57a042[_0xa4ac('0x44')][_0xa4ac('0x2e')]);_0x510ad8[_0xa4ac('0x2c')]=qs['offset'](_0x57a042[_0xa4ac('0x44')][_0xa4ac('0x2c')]);}_0x510ad8[_0xa4ac('0x4b')]=qs['sort'](_0x57a042[_0xa4ac('0x44')][_0xa4ac('0x4c')]);_0x510ad8[_0xa4ac('0x4d')]=qs[_0xa4ac('0x46')](_[_0xa4ac('0x4e')](_0x57a042['query'],_0x581dd2[_0xa4ac('0x46')]));_0x510ad8[_0xa4ac('0x4d')][_0xa4ac('0x69')]=_0x552728['id'];if(_0x57a042[_0xa4ac('0x44')]['filter']){_0x510ad8['where']=_['merge'](_0x510ad8[_0xa4ac('0x4d')],{'$or':_[_0xa4ac('0x3d')](_0x510ad8[_0xa4ac('0x48')],function(_0x2c1d8f){var _0x3d1bf2={};_0x3d1bf2[_0x2c1d8f]={'$like':'%'+_0x57a042['query']['filter']+'%'};return _0x3d1bf2;})});}_0x510ad8=_[_0xa4ac('0x51')]({},_0x510ad8,_0x57a042[_0xa4ac('0x6a')]);return db[_0xa4ac('0x65')][_0xa4ac('0x2f')]({'where':_0x510ad8[_0xa4ac('0x4d')]})[_0xa4ac('0x1f')](function(_0x5b628f){_0x2eafd0[_0xa4ac('0x2f')]=_0x5b628f;if(_0x57a042[_0xa4ac('0x44')]['includeAll']){_0x510ad8['include']=[{'all':!![]}];}return db[_0xa4ac('0x65')][_0xa4ac('0x53')](_0x510ad8);})[_0xa4ac('0x1f')](function(_0x1025d7){_0x2eafd0[_0xa4ac('0x54')]=_0x1025d7;return _0x2eafd0;});}})[_0xa4ac('0x1f')](respondWithFilteredResult(_0x3bb78e,_0x510ad8))[_0xa4ac('0x28')](handleError(_0x3bb78e,null));};exports[_0xa4ac('0x6b')]=function(_0x567dd4,_0x435d2c,_0x3b2b70){return db[_0xa4ac('0x3e')][_0xa4ac('0x5f')]({'where':{'id':_0x567dd4['params']['id']}})['then'](handleEntityNotFound(_0x435d2c,null))[_0xa4ac('0x1f')](function(_0x156f9f){if(_0x156f9f){return _0x156f9f['removeDispositions'](_0x567dd4[_0xa4ac('0x44')][_0xa4ac('0x6c')]);}})[_0xa4ac('0x1f')](respondWithStatusCode(_0x435d2c,null))[_0xa4ac('0x28')](handleError(_0x435d2c,null));};exports[_0xa4ac('0x6d')]=function(_0x62b8eb,_0xa3242f,_0x3c4ea6){if(_0x62b8eb[_0xa4ac('0x5a')]['id']){delete _0x62b8eb[_0xa4ac('0x5a')]['id'];}return db[_0xa4ac('0x3e')][_0xa4ac('0x5f')]({'where':{'id':_0x62b8eb[_0xa4ac('0x55')]['id']}})['then'](handleEntityNotFound(_0xa3242f,null))[_0xa4ac('0x1f')](function(_0x218e52){if(_0x218e52){_0x62b8eb[_0xa4ac('0x5a')]['SmsAccountId']=_0x218e52['id'];return db[_0xa4ac('0x6e')][_0xa4ac('0x59')](_0x62b8eb['body']);}})['then'](respondWithResult(_0xa3242f,null))[_0xa4ac('0x28')](handleError(_0xa3242f,null));};exports[_0xa4ac('0x6f')]=function(_0x28082a,_0x5930d3,_0x2199b1){var _0x1c34b1={'raw':![],'where':{}};var _0x6f6c04={};var _0x49f50b={'count':0x0,'rows':[]};return db[_0xa4ac('0x3e')][_0xa4ac('0x66')]({'where':{'id':_0x28082a['params']['id']}})[_0xa4ac('0x1f')](handleEntityNotFound(_0x5930d3,null))[_0xa4ac('0x1f')](function(_0x27a53c){if(_0x27a53c){_0x6f6c04[_0xa4ac('0x43')]=_[_0xa4ac('0x45')](db[_0xa4ac('0x6e')][_0xa4ac('0x3f')]);_0x6f6c04[_0xa4ac('0x44')]=_[_0xa4ac('0x45')](_0x28082a[_0xa4ac('0x44')]);_0x6f6c04[_0xa4ac('0x46')]=_[_0xa4ac('0x47')](_0x6f6c04[_0xa4ac('0x43')],_0x6f6c04[_0xa4ac('0x44')]);_0x1c34b1[_0xa4ac('0x48')]=_[_0xa4ac('0x47')](_0x6f6c04[_0xa4ac('0x43')],qs['fields'](_0x28082a[_0xa4ac('0x44')][_0xa4ac('0x49')]));_0x1c34b1[_0xa4ac('0x48')]=_0x1c34b1[_0xa4ac('0x48')][_0xa4ac('0x4a')]?_0x1c34b1[_0xa4ac('0x48')]:_0x6f6c04[_0xa4ac('0x43')];if(!_0x28082a['query'][_0xa4ac('0x67')](_0xa4ac('0x68'))){_0x1c34b1[_0xa4ac('0x2e')]=qs[_0xa4ac('0x2e')](_0x28082a[_0xa4ac('0x44')][_0xa4ac('0x2e')]);_0x1c34b1[_0xa4ac('0x2c')]=qs[_0xa4ac('0x2c')](_0x28082a['query'][_0xa4ac('0x2c')]);}_0x1c34b1[_0xa4ac('0x4b')]=qs[_0xa4ac('0x4c')](_0x28082a[_0xa4ac('0x44')][_0xa4ac('0x4c')]);_0x1c34b1[_0xa4ac('0x4d')]=qs[_0xa4ac('0x46')](_['pick'](_0x28082a[_0xa4ac('0x44')],_0x6f6c04[_0xa4ac('0x46')]));_0x1c34b1[_0xa4ac('0x4d')][_0xa4ac('0x69')]=_0x27a53c['id'];if(_0x28082a['query']['filter']){_0x1c34b1['where']=_[_0xa4ac('0x51')](_0x1c34b1[_0xa4ac('0x4d')],{'$or':_[_0xa4ac('0x3d')](_0x1c34b1[_0xa4ac('0x48')],function(_0x5437b6){var _0x136d25={};_0x136d25[_0x5437b6]={'$like':'%'+_0x28082a[_0xa4ac('0x44')]['filter']+'%'};return _0x136d25;})});}_0x1c34b1=_[_0xa4ac('0x51')]({},_0x1c34b1,_0x28082a['options']);return db[_0xa4ac('0x6e')][_0xa4ac('0x2f')]({'where':_0x1c34b1[_0xa4ac('0x4d')]})[_0xa4ac('0x1f')](function(_0x312948){_0x49f50b[_0xa4ac('0x2f')]=_0x312948;if(_0x28082a[_0xa4ac('0x44')]['includeAll']){_0x1c34b1[_0xa4ac('0x52')]=[{'all':!![]}];}return db[_0xa4ac('0x6e')][_0xa4ac('0x53')](_0x1c34b1);})[_0xa4ac('0x1f')](function(_0x13e74a){_0x49f50b[_0xa4ac('0x54')]=_0x13e74a;return _0x49f50b;});}})[_0xa4ac('0x1f')](respondWithFilteredResult(_0x5930d3,_0x1c34b1))[_0xa4ac('0x28')](handleError(_0x5930d3,null));};exports[_0xa4ac('0x70')]=function(_0x42639a,_0xceca77,_0x49efad){return db['SmsAccount'][_0xa4ac('0x5f')]({'where':{'id':_0x42639a[_0xa4ac('0x55')]['id']}})['then'](handleEntityNotFound(_0xceca77,null))[_0xa4ac('0x1f')](function(_0x11f67b){if(_0x11f67b){return _0x11f67b[_0xa4ac('0x70')](_0x42639a[_0xa4ac('0x44')][_0xa4ac('0x6c')]);}})['then'](respondWithStatusCode(_0xceca77,null))['catch'](handleError(_0xceca77,null));};exports[_0xa4ac('0x71')]=function(_0x5e4cef,_0x4cf0ed,_0x404cbc){var _0x1e7c6d={'channel':_0xa4ac('0x72')};var _0x35b62b=[];var _0x298f30=[];var _0xd52ba={};return db['SmsAccount']['find']({'where':{'id':_0x5e4cef['params']['id']},'include':[{'model':db['SmsApplication'],'as':'Applications'}]})[_0xa4ac('0x1f')](handleEntityNotFound(_0x4cf0ed,null))[_0xa4ac('0x1f')](function(_0x2bce2c){_0x1e7c6d['account']=_0x2bce2c;_0x1e7c6d[_0xa4ac('0x73')]=_[_0xa4ac('0x74')](_0x2bce2c[_0xa4ac('0x75')],[_0xa4ac('0x76')],[_0xa4ac('0x77')]);if(_0x1e7c6d[_0xa4ac('0x78')][_0xa4ac('0x75')]){delete _0x1e7c6d[_0xa4ac('0x78')][_0xa4ac('0x75')];}return db['CmContact'][_0xa4ac('0x63')]();})['then'](function(_0x43f1c1){if(!_0x43f1c1){throw new db[(_0xa4ac('0x79'))][(_0xa4ac('0x7a'))](_0xa4ac('0x7b'));}_0x35b62b=_[_0xa4ac('0x7c')](_['keys'](_0x43f1c1),[_0xa4ac('0x7d'),_0xa4ac('0x7e')]);_0x298f30=_['difference'](_['keys'](_0x43f1c1),['createdAt',_0xa4ac('0x7e'),_0xa4ac('0x7f'),_0xa4ac('0x80')]);_0x1e7c6d[_0xa4ac('0x5a')]={'mapKey':_0xa4ac('0x81')};if(_0x1e7c6d[_0xa4ac('0x78')][_0xa4ac('0x41')]){switch(_0x1e7c6d[_0xa4ac('0x78')][_0xa4ac('0x41')]){case _0xa4ac('0x82'):_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x83')]=_0x5e4cef['body'][_0xa4ac('0x84')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')]['Body'];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x85')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x86')];break;case'skebby':_0x1e7c6d['body'][_0xa4ac('0x83')]='+'+_0x5e4cef['body']['sender'];_0x1e7c6d['body'][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')]['text'];break;case _0xa4ac('0x87'):_0x1e7c6d['body']['from']=_0x5e4cef['body'][_0xa4ac('0x83')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x26')];break;case _0xa4ac('0x88'):_0x1e7c6d[_0xa4ac('0x5a')]['from']=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x83')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x5a')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x85')]=_0x5e4cef[_0xa4ac('0x5a')]['message_id'];break;case _0xa4ac('0x89'):_0x1e7c6d['body']['from']=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x84')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')]['Text'];_0x1e7c6d['body'][_0xa4ac('0x85')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x8a')];break;case _0xa4ac('0x8b'):_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x83')]='+'+_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x8c')][0x0][_0xa4ac('0x83')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')]['results'][0x0]['text'];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x85')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x8c')][0x0][_0xa4ac('0x85')];break;case _0xa4ac('0x8d'):_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x83')]=_0x5e4cef['body'][_0xa4ac('0x8e')];_0x1e7c6d['body'][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x8f')][_0xa4ac('0x26')];break;case _0xa4ac('0x90'):_0x1e7c6d['body'][_0xa4ac('0x83')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x91')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x92')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x85')]=_0x5e4cef['body'][_0xa4ac('0x93')];break;case _0xa4ac('0x94'):_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x85')]=_0x5e4cef['body'][0x0][_0xa4ac('0x26')]['id'];_0x1e7c6d[_0xa4ac('0x5a')]['from']=_0x5e4cef['body'][0x0][_0xa4ac('0x26')][_0xa4ac('0x83')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')][0x0]['message']['text'];break;case'intelepeer':_0x1e7c6d['body'][_0xa4ac('0x83')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x83')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x26')];_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x85')]=_0x5e4cef[_0xa4ac('0x5a')][_0xa4ac('0x95')];break;}}if(_0x1e7c6d['body']['id']){delete _0x1e7c6d[_0xa4ac('0x5a')]['id'];}if(_[_0xa4ac('0x96')](_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x83')])){throw new db[(_0xa4ac('0x79'))][(_0xa4ac('0x7a'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x1e7c6d['body'][_0xa4ac('0x5a')])||_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')]===''){throw new db[(_0xa4ac('0x79'))]['ValidationError'](_0xa4ac('0x97'));}if(_[_0xa4ac('0x96')](_0x1e7c6d[_0xa4ac('0x5a')]['mapKey'])){throw new db[(_0xa4ac('0x79'))]['ValidationError'](_0xa4ac('0x98')+_0x298f30);}if(!_[_0xa4ac('0x99')](_0x298f30,_0x1e7c6d[_0xa4ac('0x5a')]['mapKey'])){throw new db[(_0xa4ac('0x79'))]['ValidationError'](_0xa4ac('0x9a')+_0x298f30);}_0xd52ba[_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x9b')]]=_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x83')];return db[_0xa4ac('0x9c')][_0xa4ac('0x5f')]({'where':{'id':_0x1e7c6d[_0xa4ac('0x78')]['ListId']},'include':[{'model':db[_0xa4ac('0x9d')],'as':_0xa4ac('0x9e'),'where':_0xd52ba,'limit':0x1,'order':[[_0xa4ac('0x7e'),_0xa4ac('0x9f')]]}]});})[_0xa4ac('0x1f')](handleEntityNotFound(_0x4cf0ed,null))[_0xa4ac('0x1f')](function(_0x3015cd){if(_0x3015cd){_0x1e7c6d[_0xa4ac('0xa0')]=_[_0xa4ac('0xa1')](_0x3015cd,[_0xa4ac('0x9e')]);if(_0x3015cd[_0xa4ac('0x9e')][_0xa4ac('0x4a')]){return _0x3015cd[_0xa4ac('0x9e')][0x0];}var _0x561642=_[_0xa4ac('0x17')](_0x1e7c6d['body'],{'firstName':_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x83')],'ListId':_0x3015cd['id']});_0x561642[_0x1e7c6d['body'][_0xa4ac('0x9b')]]=_0x1e7c6d['body']['from'];return db[_0xa4ac('0x9d')][_0xa4ac('0x59')](_0x561642,{'fields':_0x35b62b,'raw':!![]});}})[_0xa4ac('0x1f')](handleEntityNotFound(_0x4cf0ed,null))[_0xa4ac('0x1f')](function(_0x486f0d){if(_0x486f0d){_0x1e7c6d[_0xa4ac('0xa2')]=_0x486f0d;var _0x421968={'ContactId':_0x486f0d['id'],'phone':_0x1e7c6d['body'][_0xa4ac('0x83')],'SmsAccountId':_0x5e4cef['params']['id']};var _0x184aa7={'ContactId':_0x486f0d['id'],'SmsAccountId':_0x5e4cef[_0xa4ac('0x55')]['id'],'closed':![]};return db[_0xa4ac('0xa3')][_0xa4ac('0x5f')]({'where':_0x184aa7})[_0xa4ac('0x1f')](function(_0x5569fa){if(_0x5569fa){return[_0x5569fa,![]];}return db['SmsInteraction'][_0xa4ac('0x59')](_0x421968)[_0xa4ac('0x1f')](function(_0xcf4829){return[_0xcf4829,!![]];});});}})[_0xa4ac('0xa4')](function(_0x2010cc,_0x588bf6){_0x1e7c6d[_0xa4ac('0xa5')]=_0x2010cc[_0xa4ac('0x5e')]({'plain':!![]});_0x1e7c6d['interaction'][_0xa4ac('0xa6')]=![];if(_0x588bf6){if(_0x1e7c6d[_0xa4ac('0x78')]['autoclose']){_0x1e7c6d[_0xa4ac('0x73')][_0xa4ac('0xa7')]({'id':0x0,'priority':_0x1e7c6d[_0xa4ac('0x73')][_0xa4ac('0x4a')]+0x1,'app':_0xa4ac('0xa8'),'appdata':_0xa4ac('0xa9'),'interval':_0xa4ac('0xaa')});}_0x1e7c6d[_0xa4ac('0xa5')][_0xa4ac('0xa6')]=!![];}return db['SmsMessage'][_0xa4ac('0x59')]({'phone':_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x83')],'messageId':_0x1e7c6d['body'][_0xa4ac('0x85')],'body':_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0x5a')],'SmsAccountId':_0x5e4cef['params']['id'],'SmsInteractionId':_0x2010cc['id'],'direction':'in','ContactId':_0x2010cc[_0xa4ac('0xab')],'AttachmentId':_0x1e7c6d[_0xa4ac('0x5a')][_0xa4ac('0xac')]});})[_0xa4ac('0x1f')](function(_0x31b321){_0x1e7c6d['message']=_0x31b321;if(!_0x1e7c6d['interaction'][_0xa4ac('0xad')])return;return db[_0xa4ac('0xae')][_0xa4ac('0x5f')]({'attributes':['id',_0xa4ac('0x3b')],'where':{'id':_0x1e7c6d[_0xa4ac('0xa5')][_0xa4ac('0xad')]}});})[_0xa4ac('0x1f')](function(_0x49e603){if(_0x49e603){_0x1e7c6d['applications'][_0xa4ac('0xaf')]({'id':0x0,'priority':0x0,'app':_0xa4ac('0xb0'),'appdata':_0x49e603['name']+','+(_0x1e7c6d[_0xa4ac('0x78')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}if(!_0x1e7c6d[_0xa4ac('0xa5')][_0xa4ac('0xb1')])return;return db[_0xa4ac('0xb2')][_0xa4ac('0x5f')]({'attributes':['id',_0xa4ac('0x3b')],'where':{'id':_0x1e7c6d[_0xa4ac('0xa5')][_0xa4ac('0xb1')]}});})['then'](function(_0x4b4923){if(_0x4b4923){_0x1e7c6d[_0xa4ac('0x73')]['unshift']({'id':0x0,'priority':0x1,'app':_0xa4ac('0xb3'),'appdata':_0x4b4923['name']+','+(_0x1e7c6d[_0xa4ac('0x78')][_0xa4ac('0xb4')]||0x12c),'interval':_0xa4ac('0xaa')});}return respondWithRpcPromise('Start',_0xa4ac('0xb5'),_0x1e7c6d);})['then'](function(_0x521ef3){if(_0x521ef3){var _0x55cff3=0xc8;var _0x242bae=_0xa4ac('0xb6');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x242bae,_0x55cff3,'entity\x20found');logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x242bae,_0x55cff3,_0xa4ac('0xb7'),JSON[_0xa4ac('0xb8')](_0x521ef3));if(_0x1e7c6d['account'][_0xa4ac('0x41')]===_0xa4ac('0x82')){return _0x4cf0ed[_0xa4ac('0x2a')](_0x55cff3)[_0xa4ac('0x30')](_0xa4ac('0xb9'),_0xa4ac('0xba'))[_0xa4ac('0xbb')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x4cf0ed[_0xa4ac('0x2a')](_0x55cff3)[_0xa4ac('0x2b')](_0x521ef3);}}})[_0xa4ac('0x28')](handleError(_0x4cf0ed,null));};exports[_0xa4ac('0xbc')]=function(_0x3ca36a,_0x15e2c8){var _0x2f4080=_0x3ca36a['params']['id'];var _0x461ad3=_0x3ca36a['body'];var _0x44178f=0xc8;var _0x2e2603=null;return db['sequelize'][_0xa4ac('0xbd')]({'isolationLevel':db[_0xa4ac('0xbe')][_0xa4ac('0xbf')][_0xa4ac('0xc0')]['READ_COMMITTED']},function(_0x3cc95d){return db[_0xa4ac('0x3e')][_0xa4ac('0x66')]({'where':{'id':_0x2f4080},'transaction':_0x3cc95d})[_0xa4ac('0x1f')](function(_0x1b94d7){if(_0x1b94d7){return db['SmsApplication'][_0xa4ac('0x36')]({'where':{'SmsAccountId':_0x2f4080},'transaction':_0x3cc95d})['then'](function(){var _0x3e1bc8=_[_0xa4ac('0x3d')](_0x461ad3,function(_0x373198){_0x373198['SmsAccountId']=_0x2f4080;return _0x373198;});return db[_0xa4ac('0xc1')][_0xa4ac('0xc2')](_0x3e1bc8,{'transaction':_0x3cc95d});});}else{_0x44178f=0x194;_0x2e2603=[];}});})[_0xa4ac('0x1f')](function(){if(_0x44178f!==0x194){return db[_0xa4ac('0xc1')][_0xa4ac('0xc3')]({'where':{'SmsAccountId':_0x2f4080},'order':_0xa4ac('0x76')})[_0xa4ac('0x1f')](function(_0x32e1f0){_0x2e2603=_0x32e1f0;});}})[_0xa4ac('0x28')](function(_0x382334){_0x44178f=0x1f4;logger[_0xa4ac('0x24')](_0x382334[_0xa4ac('0x3a')]);if(_0x382334[_0xa4ac('0x3b')]){delete _0x382334[_0xa4ac('0x3b')];}_0x2e2603=_0x382334;})['finally'](function(){if(_0x2e2603===null){_0x15e2c8['sendStatus'](_0x44178f);}else{if(_0x44178f===0x1f4){_0x15e2c8[_0xa4ac('0x2a')](_0x44178f)['send'](_0x2e2603);}else{_0x15e2c8['status'](_0x44178f)[_0xa4ac('0x2b')](_0x2e2603);}}});};exports[_0xa4ac('0xc4')]=function(_0x141a99,_0xf9eb31,_0x31638e){var _0x235a4e={};var _0x5143ae={};var _0x298730;var _0x1b3324;return db[_0xa4ac('0x3e')][_0xa4ac('0x66')]({'where':{'id':_0x141a99[_0xa4ac('0x55')]['id']}})[_0xa4ac('0x1f')](handleEntityNotFound(_0xf9eb31,null))['then'](function(_0x33f4fb){if(_0x33f4fb){_0x298730=_0x33f4fb;_0x5143ae['model']=_[_0xa4ac('0x45')](db[_0xa4ac('0xc1')][_0xa4ac('0x3f')]);_0x5143ae['query']=_[_0xa4ac('0x45')](_0x141a99[_0xa4ac('0x44')]);_0x5143ae[_0xa4ac('0x46')]=_[_0xa4ac('0x47')](_0x5143ae[_0xa4ac('0x43')],_0x5143ae[_0xa4ac('0x44')]);_0x235a4e[_0xa4ac('0x48')]=_[_0xa4ac('0x47')](_0x5143ae[_0xa4ac('0x43')],qs[_0xa4ac('0x49')](_0x141a99['query'][_0xa4ac('0x49')]));_0x235a4e[_0xa4ac('0x48')]=_0x235a4e[_0xa4ac('0x48')]['length']?_0x235a4e[_0xa4ac('0x48')]:_0x5143ae[_0xa4ac('0x43')];_0x235a4e[_0xa4ac('0x4b')]=qs['sort'](_0x141a99[_0xa4ac('0x44')][_0xa4ac('0x4c')]);_0x235a4e['where']=qs[_0xa4ac('0x46')](_[_0xa4ac('0x4e')](_0x141a99[_0xa4ac('0x44')],_0x5143ae[_0xa4ac('0x46')]));if(_0x141a99[_0xa4ac('0x44')][_0xa4ac('0x4f')]){_0x235a4e[_0xa4ac('0x4d')]=_[_0xa4ac('0x51')](_0x235a4e['where'],{'$or':_[_0xa4ac('0x3d')](_0x235a4e['attributes'],function(_0x3451c4){var _0x4000f5={};_0x4000f5[_0x3451c4]={'$like':'%'+_0x141a99[_0xa4ac('0x44')][_0xa4ac('0x4f')]+'%'};return _0x4000f5;})});}_0x235a4e=_[_0xa4ac('0x51')]({},_0x235a4e,_0x141a99['options']);return _0x298730[_0xa4ac('0xc4')](_0x235a4e);}})[_0xa4ac('0x1f')](function(_0x49ecca){if(_0x49ecca){_0x1b3324=_0x49ecca[_0xa4ac('0x4a')];if(!_0x141a99[_0xa4ac('0x44')]['hasOwnProperty'](_0xa4ac('0x68'))){_0x235a4e[_0xa4ac('0x2e')]=qs[_0xa4ac('0x2e')](_0x141a99[_0xa4ac('0x44')][_0xa4ac('0x2e')]);_0x235a4e[_0xa4ac('0x2c')]=qs[_0xa4ac('0x2c')](_0x141a99['query'][_0xa4ac('0x2c')]);}return _0x298730[_0xa4ac('0xc4')](_0x235a4e);}})[_0xa4ac('0x1f')](function(_0x420bee){if(_0x420bee){return _0x420bee?{'count':_0x1b3324,'rows':_0x420bee}:null;}})[_0xa4ac('0x1f')](respondWithResult(_0xf9eb31,null))[_0xa4ac('0x28')](handleError(_0xf9eb31,null));};exports[_0xa4ac('0xc5')]=function(_0x42c4ee,_0x380215,_0x550fc2){var _0x1290c7={'raw':![],'where':{}};var _0x11f656={};var _0xa795c={'count':0x0,'rows':[]};return db[_0xa4ac('0x3e')]['findOne']({'where':{'id':_0x42c4ee[_0xa4ac('0x55')]['id']}})[_0xa4ac('0x1f')](handleEntityNotFound(_0x380215,null))[_0xa4ac('0x1f')](function(_0x3ba0cd){if(_0x3ba0cd){_0x11f656[_0xa4ac('0x43')]=_[_0xa4ac('0x45')](db[_0xa4ac('0xa3')][_0xa4ac('0x3f')]);_0x11f656[_0xa4ac('0x44')]=_[_0xa4ac('0x45')](_0x42c4ee[_0xa4ac('0x44')]);_0x11f656['filters']=_[_0xa4ac('0x47')](_0x11f656['model'],_0x11f656['query']);_0x1290c7[_0xa4ac('0x48')]=_[_0xa4ac('0x47')](_0x11f656['model'],qs[_0xa4ac('0x49')](_0x42c4ee[_0xa4ac('0x44')][_0xa4ac('0x49')]));_0x1290c7[_0xa4ac('0x48')]=_0x1290c7['attributes'][_0xa4ac('0x4a')]?_0x1290c7[_0xa4ac('0x48')]:_0x11f656[_0xa4ac('0x43')];if(!_0x42c4ee[_0xa4ac('0x44')][_0xa4ac('0x67')](_0xa4ac('0x68'))){_0x1290c7[_0xa4ac('0x2e')]=qs[_0xa4ac('0x2e')](_0x42c4ee[_0xa4ac('0x44')][_0xa4ac('0x2e')]);_0x1290c7['offset']=qs['offset'](_0x42c4ee[_0xa4ac('0x44')][_0xa4ac('0x2c')]);}_0x1290c7[_0xa4ac('0x4b')]=qs[_0xa4ac('0x4c')](_0x42c4ee[_0xa4ac('0x44')][_0xa4ac('0x4c')]);_0x1290c7[_0xa4ac('0x4d')]=qs['filters'](_[_0xa4ac('0x4e')](_0x42c4ee[_0xa4ac('0x44')],_0x11f656[_0xa4ac('0x46')]));_0x1290c7[_0xa4ac('0x4d')][_0xa4ac('0x69')]=_0x3ba0cd['id'];if(_0x42c4ee[_0xa4ac('0x44')][_0xa4ac('0x4f')]){_0x1290c7[_0xa4ac('0x4d')]=_['merge'](_0x1290c7[_0xa4ac('0x4d')],{'$or':_[_0xa4ac('0x3d')](_0x1290c7[_0xa4ac('0x48')],function(_0x5eed24){var _0x1d283a={};_0x1d283a[_0x5eed24]={'$like':'%'+_0x42c4ee[_0xa4ac('0x44')][_0xa4ac('0x4f')]+'%'};return _0x1d283a;})});}_0x1290c7=_[_0xa4ac('0x51')]({},_0x1290c7,_0x42c4ee['options']);return db[_0xa4ac('0xa3')][_0xa4ac('0x2f')]({'where':_0x1290c7['where']})[_0xa4ac('0x1f')](function(_0x3a9d50){_0xa795c[_0xa4ac('0x2f')]=_0x3a9d50;if(_0x42c4ee['query'][_0xa4ac('0x58')]){_0x1290c7[_0xa4ac('0x52')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0xa4ac('0xae')],'as':'Owner','attributes':[_0xa4ac('0x3b'),_0xa4ac('0xc6'),'internal'],'required':![]},{'model':db[_0xa4ac('0xc7')],'as':_0xa4ac('0xc8'),'attributes':['id',_0xa4ac('0x3b'),'color'],'where':_0x42c4ee[_0xa4ac('0x44')]['tag']?{'id':_0x42c4ee[_0xa4ac('0x44')]['tag']}:undefined,'required':_0x42c4ee[_0xa4ac('0x44')][_0xa4ac('0xc9')]?!![]:![]}];}return db[_0xa4ac('0xa3')][_0xa4ac('0x53')](_0x1290c7);})[_0xa4ac('0x1f')](function(_0xfc85f8){_0xa795c[_0xa4ac('0x54')]=_0xfc85f8;return _0xa795c;});}})['then'](respondWithFilteredResult(_0x380215,_0x1290c7))[_0xa4ac('0x28')](handleError(_0x380215,null));};exports[_0xa4ac('0xbb')]=function(_0x1d40a8,_0x3bc832,_0x1dd60b){var _0x284c8e,_0x76e96d,_0x2f725d;if(_[_0xa4ac('0x96')](_0x1d40a8[_0xa4ac('0x5a')][_0xa4ac('0x5a')])||_0x1d40a8['body'][_0xa4ac('0x5a')]===''){throw new db[(_0xa4ac('0x79'))][(_0xa4ac('0x7a'))](_0xa4ac('0x97'));}if(_[_0xa4ac('0x96')](_0x1d40a8[_0xa4ac('0x5a')]['to'])){throw new db[(_0xa4ac('0x79'))][(_0xa4ac('0x7a'))](_0xa4ac('0xca'));}_0x284c8e=_0x1d40a8[_0xa4ac('0x5a')]['to'];return db[_0xa4ac('0x3e')][_0xa4ac('0x5f')]({'where':{'id':_0x1d40a8[_0xa4ac('0x55')]['id']},'include':[{'model':db['CmList'],'as':_0xa4ac('0xcb'),'include':[{'model':db[_0xa4ac('0x9d')],'as':'Contacts','where':{'mobile':_0x284c8e},'limit':0x1,'order':[['updatedAt',_0xa4ac('0x9f')]]}]}]})['then'](handleEntityNotFound(_0x3bc832,null))[_0xa4ac('0x1f')](function(_0x46c15e){if(_0x46c15e&&_0x46c15e['List']){_0x76e96d=_0x46c15e[_0xa4ac('0x5e')]({'plain':!![]});if(_0x76e96d[_0xa4ac('0xcb')]&&_0x76e96d[_0xa4ac('0xcb')][_0xa4ac('0x9e')][_0xa4ac('0x4a')]){return _0x76e96d[_0xa4ac('0xcb')][_0xa4ac('0x9e')][0x0];}return db['CmContact'][_0xa4ac('0x59')](_[_0xa4ac('0x17')](_0x1d40a8[_0xa4ac('0x5a')],{'firstName':_0x284c8e,'mobile':_0x284c8e,'phone':_0x284c8e,'ListId':_0x76e96d[_0xa4ac('0x80')]}));}})[_0xa4ac('0x1f')](handleEntityNotFound(_0x3bc832,null))[_0xa4ac('0x1f')](function(_0x349c52){if(_0x349c52){_0x2f725d=_0x349c52;return db[_0xa4ac('0xa3')][_0xa4ac('0x5f')]({'where':{'ContactId':_0x2f725d['id'],'closed':![],'SmsAccountId':_0x76e96d['id']}})['then'](function(_0x40e386){if(_0x40e386){return[_0x40e386,![]];}return db['SmsInteraction'][_0xa4ac('0x59')]({'UserId':_0x1d40a8[_0xa4ac('0x5b')]['id'],'ContactId':_0x2f725d['id'],'SmsAccountId':_0x76e96d['id'],'phone':_0x284c8e,'firstMsgDirection':_0xa4ac('0xcc'),'Messages':[_[_0xa4ac('0x51')](_0x1d40a8['body'],{'read':![],'body':_0x1d40a8[_0xa4ac('0x5a')][_0xa4ac('0x5a')],'phone':_0x284c8e,'SmsAccountId':_0x76e96d['id'],'UserId':_0x1d40a8[_0xa4ac('0x5b')]['id'],'ContactId':_0x2f725d['id']})]},{'include':[{'model':db[_0xa4ac('0xcd')],'as':_0xa4ac('0xce')}]})['then'](function(_0x2c2a42){return[_0x2c2a42,!![]];});});}})[_0xa4ac('0xa4')](function(_0x1f1446,_0x3bf227){if(_0x3bf227){return _0x1f1446;}return db['SmsMessage']['create'](_[_0xa4ac('0x51')](_0x1d40a8[_0xa4ac('0x5a')],{'read':![],'body':_0x1d40a8[_0xa4ac('0x5a')][_0xa4ac('0x5a')],'phone':_0x284c8e,'SmsAccountId':_0x76e96d['id'],'SmsInteractionId':_0x1f1446['id'],'UserId':_0x1d40a8[_0xa4ac('0x5b')]['id'],'ContactId':_0x2f725d['id']}))['then'](function(_0x1b87c7){_0x1f1446['dataValues'][_0xa4ac('0xce')]=[];_0x1f1446[_0xa4ac('0xcf')]['Messages'][_0xa4ac('0xa7')](_0x1b87c7[_0xa4ac('0xcf')]);return _0x1f1446;});})[_0xa4ac('0x1f')](respondWithResult(_0x3bc832,null))['catch'](handleError(_0x3bc832,null));};exports[_0xa4ac('0x2a')]=function(_0x36b89c,_0x56b157,_0x33071c){if(_0x36b89c[_0xa4ac('0x5a')]['id']){delete _0x36b89c['body']['id'];}var _0x372858,_0x41e4e0,_0x11166c;return db[_0xa4ac('0x3e')][_0xa4ac('0x5f')]({'where':{'id':_0x36b89c[_0xa4ac('0x55')]['id']}})['then'](handleEntityNotFound(_0x56b157,null))['then'](function(_0x391f1d){if(_0x391f1d){_0x11166c=_0x391f1d;logger['debug'](_0xa4ac('0x23'),'status',_0xa4ac('0xd0'),_0x391f1d[_0xa4ac('0x41')],util[_0xa4ac('0xd1')](_0x36b89c[_0xa4ac('0x5a')],{'showHidden':![],'depth':null}));switch(_0x391f1d['type']){case _0xa4ac('0xd2'):if(_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xd3')]&&_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0x2a')]){_0x41e4e0=_0x36b89c['body'][_0xa4ac('0x2a')];return db['SmsMessage'][_0xa4ac('0x5f')]({'where':{'messageId':_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xd3')]}});}break;case _0xa4ac('0x87'):if(_0x36b89c['body']['requestid']&&_0x36b89c['body'][_0xa4ac('0xd4')]){_0x41e4e0=_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xd4')];return db[_0xa4ac('0xcd')][_0xa4ac('0x5f')]({'where':{'messageId':_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xd5')]}});}break;case _0xa4ac('0x88'):if(_0x36b89c['body'][_0xa4ac('0xd6')]&&_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xd7')]){_0x41e4e0=_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xd7')];return db['SmsMessage'][_0xa4ac('0x5f')]({'where':{'messageId':_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xd6')]}});}break;case _0xa4ac('0x8b'):var _0x53198e=_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0x8c')][0x0];if(_0x53198e['messageId']&&_0x53198e[_0xa4ac('0x2a')][_0xa4ac('0xd8')]===_0xa4ac('0xd9')){_0x41e4e0=_0x53198e['status'][_0xa4ac('0xd8')];return db[_0xa4ac('0xcd')][_0xa4ac('0x5f')]({'where':{'messageId':_0x53198e[_0xa4ac('0x85')]}});}break;case _0xa4ac('0x90'):if(_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0x85')]&&_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0x2a')]){_0x41e4e0=_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0x2a')];return db['SmsMessage']['find']({'where':{'messageId':_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0x85')]}});}break;case'bandwidth':if(_0x36b89c[_0xa4ac('0x5a')][0x0][_0xa4ac('0x26')]['id']){_0x41e4e0=_0x36b89c[_0xa4ac('0x5a')][0x0][_0xa4ac('0x41')];return db[_0xa4ac('0xcd')]['find']({'where':{'messageId':_0x36b89c[_0xa4ac('0x5a')][0x0]['message']['id']}});}break;case'intelepeer':if(_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xda')]&&_0x36b89c['body'][_0xa4ac('0x2a')]){_0x41e4e0=_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0x2a')];return db[_0xa4ac('0xcd')][_0xa4ac('0x5f')]({'where':{'messageId':_0x36b89c['body'][_0xa4ac('0xda')]}});}break;}}})[_0xa4ac('0x1f')](handleEntityNotFound(_0x56b157,null))[_0xa4ac('0x1f')](function(_0x5549f3){if(_0x5549f3){_0x372858=_0x5549f3;switch(_0x11166c[_0xa4ac('0x41')]){case _0xa4ac('0xd2'):if(_0x41e4e0===_0xa4ac('0xd9')){return _0x372858['update']({'read':!![]});}else{logger[_0xa4ac('0x24')](_0xa4ac('0x23'),_0xa4ac('0x2a'),'skebby',util[_0xa4ac('0xd1')](_0x36b89c[_0xa4ac('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xa4ac('0x87'):if(_0x41e4e0==='1'){return _0x372858[_0xa4ac('0x35')]({'read':!![]});}else{logger['error'](_0xa4ac('0x23'),_0xa4ac('0x2a'),_0xa4ac('0xd2'),util['inspect'](_0x36b89c[_0xa4ac('0x5a')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0xdb')]&&_0x41e4e0>=0xc8&&_0x41e4e0<=0xce){return _0x372858[_0xa4ac('0x35')]({'read':!![]});}else{logger[_0xa4ac('0x24')](_0xa4ac('0x23'),_0xa4ac('0x2a'),_0xa4ac('0x88'),util[_0xa4ac('0xd1')](_0x36b89c[_0xa4ac('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xa4ac('0x8b'):var _0x5f1b30=_0x36b89c[_0xa4ac('0x5a')][_0xa4ac('0x8c')][0x0];if(_0x5f1b30['status'][_0xa4ac('0xd8')]===_0xa4ac('0xd9')){return _0x372858[_0xa4ac('0x35')]({'read':!![]});}else{logger['error'](_0xa4ac('0x23'),_0xa4ac('0x2a'),'infobip',util[_0xa4ac('0xd1')](_0x36b89c[_0xa4ac('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xa4ac('0x90'):if(_0x41e4e0==_0xa4ac('0xdc')||_0x41e4e0==_0xa4ac('0xdd')){return _0x372858['update']({'read':!![]});}else{logger[_0xa4ac('0x24')](_0xa4ac('0x23'),_0xa4ac('0x2a'),_0xa4ac('0x90'),util[_0xa4ac('0xd1')](_0x36b89c[_0xa4ac('0x5a')],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x41e4e0=='message-delivered'){return _0x372858[_0xa4ac('0x35')]({'read':!![]});}else{logger[_0xa4ac('0x24')](_0xa4ac('0x23'),_0xa4ac('0x2a'),'bandwidth',util[_0xa4ac('0xd1')](_0x36b89c[_0xa4ac('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xa4ac('0xde'):if(_0x41e4e0==='DELIVRD'||_0x41e4e0===_0xa4ac('0xdf')){return _0x372858['update']({'read':!![]});}else{logger[_0xa4ac('0x24')](_0xa4ac('0x23'),_0xa4ac('0x2a'),_0xa4ac('0xde'),util['inspect'](_0x36b89c['body'],{'showHidden':![],'depth':null}));}break;}return _0x372858;}})[_0xa4ac('0x1f')](respondWithResult(_0x56b157,null))[_0xa4ac('0x28')](handleError(_0x56b157,null));};exports[_0xa4ac('0xe0')]=function(_0x2fa012,_0x35020a,_0x544a3d){var _0x310f5e,_0x16fd72,_0x3b4f9a;return db[_0xa4ac('0x3e')]['find']({'where':{'id':_0x2fa012[_0xa4ac('0x55')]['id']}})[_0xa4ac('0x1f')](handleEntityNotFound(_0x35020a,null))[_0xa4ac('0x1f')](function(_0x3beb03){if(_0x3beb03){_0x3b4f9a=_0x3beb03;logger[_0xa4ac('0x22')](_0xa4ac('0x23'),_0xa4ac('0x2a'),_0xa4ac('0xd0'),_0x3beb03[_0xa4ac('0x41')],util[_0xa4ac('0xd1')](_0x2fa012[_0xa4ac('0x44')],{'showHidden':![],'depth':null}));switch(_0x3beb03['type']){case'csc':if(_0x2fa012['query'][_0xa4ac('0xe1')]&&_0x2fa012[_0xa4ac('0x44')][_0xa4ac('0xe2')]){_0x16fd72=_0x2fa012[_0xa4ac('0x44')]['state'];return db['SmsMessage'][_0xa4ac('0x5f')]({'where':{'messageId':_0x2fa012[_0xa4ac('0x44')]['message-id']}});}break;}}})['then'](handleEntityNotFound(_0x35020a,null))[_0xa4ac('0x1f')](function(_0x37bdf0){if(_0x37bdf0){_0x310f5e=_0x37bdf0;switch(_0x3b4f9a['type']){case _0xa4ac('0x8d'):if(_0x16fd72==='2'||_0x16fd72==='6'){return _0x310f5e[_0xa4ac('0x35')]({'read':!![]});}else{logger[_0xa4ac('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa4ac('0x2a'),_0xa4ac('0x8d'),util[_0xa4ac('0xd1')](_0x2fa012['query'],{'showHidden':![],'depth':null}));};break;}return _0x310f5e;}})['then'](respondWithResult(_0x35020a,null))['catch'](handleError(_0x35020a,null));};exports[_0xa4ac('0xe3')]=function(_0x1e0ed1,_0x21e7b9,_0x138f9a){return db[_0xa4ac('0x3e')][_0xa4ac('0x5f')]({'where':{'id':_0x1e0ed1[_0xa4ac('0x55')]['id']}})['then'](handleEntityNotFound(_0x21e7b9,null))[_0xa4ac('0x1f')](function(_0x1a8082){if(_0x1a8082){return _0x1a8082['addAgents'](_0x1e0ed1[_0xa4ac('0x5a')][_0xa4ac('0x6c')],_[_0xa4ac('0xa1')](_0x1e0ed1[_0xa4ac('0x5a')],[_0xa4ac('0x6c'),'id'])||{})['spread'](function(_0xcface6){for(var _0x12d8cd=0x0;_0x12d8cd<_0x1e0ed1[_0xa4ac('0x5a')][_0xa4ac('0x6c')][_0xa4ac('0x4a')];_0x12d8cd+=0x1){socket[_0xa4ac('0xe4')]('userSmsAccount:save',{'UserId':Number(_0x1e0ed1[_0xa4ac('0x5a')][_0xa4ac('0x6c')][_0x12d8cd]),'SmsAccountId':Number(_0x1e0ed1['params']['id'])});}return _0xcface6;});}})['then'](respondWithResult(_0x21e7b9,null))[_0xa4ac('0x28')](handleError(_0x21e7b9,null));};exports['removeAgents']=function(_0x22aae8,_0xb58cd4,_0x16824e){return db[_0xa4ac('0x3e')][_0xa4ac('0x5f')]({'where':{'id':_0x22aae8[_0xa4ac('0x55')]['id']}})[_0xa4ac('0x1f')](handleEntityNotFound(_0xb58cd4,null))['then'](function(_0x286a59){if(_0x286a59){return _0x286a59[_0xa4ac('0xe5')](_0x22aae8[_0xa4ac('0x44')][_0xa4ac('0x6c')])[_0xa4ac('0x1f')](function(){if(_['isArray'](_0x22aae8[_0xa4ac('0x44')][_0xa4ac('0x6c')])){for(var _0x4f66a7=0x0;_0x4f66a7<_0x22aae8[_0xa4ac('0x44')][_0xa4ac('0x6c')][_0xa4ac('0x4a')];_0x4f66a7+=0x1){socket[_0xa4ac('0xe4')](_0xa4ac('0xe6'),{'UserId':Number(_0x22aae8[_0xa4ac('0x44')]['ids'][_0x4f66a7]),'SmsAccountId':Number(_0x22aae8['params']['id'])});}}else{socket[_0xa4ac('0xe4')]('userSmsAccount:remove',{'UserId':Number(_0x22aae8[_0xa4ac('0x44')][_0xa4ac('0x6c')]),'SmsAccountId':Number(_0x22aae8[_0xa4ac('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0xb58cd4,null))[_0xa4ac('0x28')](handleError(_0xb58cd4,null));};exports[_0xa4ac('0xe7')]=function(_0x29af22,_0x5da7b6,_0x1e12f6){var _0x57509d={};var _0x3b2d1a={};var _0x32ab1b;var _0x22a3a9;return db['SmsAccount']['findOne']({'where':{'id':_0x29af22[_0xa4ac('0x55')]['id']}})['then'](handleEntityNotFound(_0x5da7b6,null))[_0xa4ac('0x1f')](function(_0x564762){if(_0x564762){_0x32ab1b=_0x564762;_0x3b2d1a[_0xa4ac('0x43')]=_[_0xa4ac('0x45')](db[_0xa4ac('0xae')][_0xa4ac('0x3f')]);_0x3b2d1a['query']=_[_0xa4ac('0x45')](_0x29af22[_0xa4ac('0x44')]);_0x3b2d1a[_0xa4ac('0x46')]=_[_0xa4ac('0x47')](_0x3b2d1a[_0xa4ac('0x43')],_0x3b2d1a['query']);_0x57509d[_0xa4ac('0x48')]=_[_0xa4ac('0x47')](_0x3b2d1a[_0xa4ac('0x43')],qs[_0xa4ac('0x49')](_0x29af22[_0xa4ac('0x44')][_0xa4ac('0x49')]));_0x57509d[_0xa4ac('0x48')]=_0x57509d[_0xa4ac('0x48')]['length']?_0x57509d['attributes']:_0x3b2d1a[_0xa4ac('0x43')];_0x57509d[_0xa4ac('0x4b')]=qs[_0xa4ac('0x4c')](_0x29af22[_0xa4ac('0x44')][_0xa4ac('0x4c')]);_0x57509d[_0xa4ac('0x4d')]=qs['filters'](_['pick'](_0x29af22[_0xa4ac('0x44')],_0x3b2d1a[_0xa4ac('0x46')]));if(_0x29af22[_0xa4ac('0x44')][_0xa4ac('0x4f')]){_0x57509d[_0xa4ac('0x4d')]=_[_0xa4ac('0x51')](_0x57509d['where'],{'$or':_[_0xa4ac('0x3d')](_0x57509d[_0xa4ac('0x48')],function(_0x1fa449){var _0x249dcd={};_0x249dcd[_0x1fa449]={'$like':'%'+_0x29af22[_0xa4ac('0x44')][_0xa4ac('0x4f')]+'%'};return _0x249dcd;})});}_0x57509d=_[_0xa4ac('0x51')]({},_0x57509d,_0x29af22['options']);return _0x32ab1b[_0xa4ac('0xe7')](_0x57509d);}})[_0xa4ac('0x1f')](function(_0x1a2dfb){if(_0x1a2dfb){_0x22a3a9=_0x1a2dfb[_0xa4ac('0x4a')];if(!_0x29af22[_0xa4ac('0x44')][_0xa4ac('0x67')](_0xa4ac('0x68'))){_0x57509d[_0xa4ac('0x2e')]=qs[_0xa4ac('0x2e')](_0x29af22[_0xa4ac('0x44')]['limit']);_0x57509d[_0xa4ac('0x2c')]=qs['offset'](_0x29af22[_0xa4ac('0x44')]['offset']);}return _0x32ab1b['getAgents'](_0x57509d);}})['then'](function(_0x128edb){if(_0x128edb){return _0x128edb?{'count':_0x22a3a9,'rows':_0x128edb}:null;}})[_0xa4ac('0x1f')](respondWithResult(_0x5da7b6,null))[_0xa4ac('0x28')](handleError(_0x5da7b6,null));};
\ No newline at end of file
index 3289d7c..8b7d5b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3293=['setMaxListeners','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsAccount'];(function(_0x83514a,_0x1603a1){var _0x432e90=function(_0x52d7ed){while(--_0x52d7ed){_0x83514a['push'](_0x83514a['shift']());}};_0x432e90(++_0x1603a1);}(_0x3293,0x72));var _0x3329=function(_0x17fd31,_0x108abf){_0x17fd31=_0x17fd31-0x0;var _0xd0dfc3=_0x3293[_0x17fd31];return _0xd0dfc3;};'use strict';var EventEmitter=require(_0x3329('0x0'));var SmsAccount=require(_0x3329('0x1'))['db'][_0x3329('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x3329('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x3329('0x4')};function emitEvent(_0xbb177){return function(_0x424317,_0x3a7f5f,_0x5752b4){SmsAccountEvents[_0x3329('0x5')](_0xbb177+':'+_0x424317['id'],_0x424317);SmsAccountEvents['emit'](_0xbb177,_0x424317);_0x5752b4(null);};}for(var e in events){if(events[_0x3329('0x6')](e)){var event=events[e];SmsAccount[_0x3329('0x7')](e,emitEvent(event));}}module[_0x3329('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0xdbfa=['exports','events','../../mysqldb','SmsAccount','update','remove','emit','hasOwnProperty','hook'];(function(_0xffeff7,_0x17b2f5){var _0x5e4869=function(_0x33899e){while(--_0x33899e){_0xffeff7['push'](_0xffeff7['shift']());}};_0x5e4869(++_0x17b2f5);}(_0xdbfa,0x19f));var _0xadbf=function(_0x547891,_0x3328b2){_0x547891=_0x547891-0x0;var _0x3d4f2c=_0xdbfa[_0x547891];return _0x3d4f2c;};'use strict';var EventEmitter=require(_0xadbf('0x0'));var SmsAccount=require(_0xadbf('0x1'))['db'][_0xadbf('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xadbf('0x3'),'afterDestroy':_0xadbf('0x4')};function emitEvent(_0x53bf54){return function(_0x5c9ef2,_0x4223fb,_0x4ddc9f){SmsAccountEvents[_0xadbf('0x5')](_0x53bf54+':'+_0x5c9ef2['id'],_0x5c9ef2);SmsAccountEvents[_0xadbf('0x5')](_0x53bf54,_0x5c9ef2);_0x4ddc9f(null);};}for(var e in events){if(events[_0xadbf('0x6')](e)){var event=events[e];SmsAccount[_0xadbf('0x7')](e,emitEvent(event));}}module[_0xadbf('0x8')]=SmsAccountEvents;
\ No newline at end of file
index 8f2c681..d5a40c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e2d=['request-promise','path','rimraf','../../config/environment','exports','sms_accounts','lodash','util','api','moment','bluebird'];(function(_0x14f717,_0x325d06){var _0x574068=function(_0x30fbf4){while(--_0x30fbf4){_0x14f717['push'](_0x14f717['shift']());}};_0x574068(++_0x325d06);}(_0x2e2d,0x1be));var _0xd2e2=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x2e2d[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0xd2e2('0x0'));var util=require(_0xd2e2('0x1'));var logger=require('../../config/logger')(_0xd2e2('0x2'));var moment=require(_0xd2e2('0x3'));var BPromise=require(_0xd2e2('0x4'));var rp=require(_0xd2e2('0x5'));var fs=require('fs');var path=require(_0xd2e2('0x6'));var rimraf=require(_0xd2e2('0x7'));var config=require(_0xd2e2('0x8'));var attributes=require('./smsAccount.attributes');module[_0xd2e2('0x9')]=function(_0x21e841,_0x5baa37){return _0x21e841['define']('SmsAccount',attributes,{'tableName':_0xd2e2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0904=['../../config/logger','api','moment','bluebird','request-promise','./smsAccount.attributes','define','SmsAccount','sms_accounts','lodash','util'];(function(_0x5440b9,_0xffabd3){var _0x7664ba=function(_0xf8f19d){while(--_0xf8f19d){_0x5440b9['push'](_0x5440b9['shift']());}};_0x7664ba(++_0xffabd3);}(_0x0904,0x18a));var _0x4090=function(_0x5da440,_0x50fe36){_0x5da440=_0x5da440-0x0;var _0x231f3b=_0x0904[_0x5da440];return _0x231f3b;};'use strict';var _=require(_0x4090('0x0'));var util=require(_0x4090('0x1'));var logger=require(_0x4090('0x2'))(_0x4090('0x3'));var moment=require(_0x4090('0x4'));var BPromise=require(_0x4090('0x5'));var rp=require(_0x4090('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4090('0x7'));module['exports']=function(_0x3caffb,_0x1a9eae){return _0x3caffb[_0x4090('0x8')](_0x4090('0x9'),attributes,{'tableName':_0x4090('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c277cec..9a80fb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x500a=['options','raw','where','attributes','include','model','map','then','debug','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','./smsAccount.socket','register','request','info','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsAccount,\x20%s,\x20%s','result','ShowSmsAccount'];(function(_0x50b16c,_0x53229b){var _0x399c52=function(_0xa85aa4){while(--_0xa85aa4){_0x50b16c['push'](_0x50b16c['shift']());}};_0x399c52(++_0x53229b);}(_0x500a,0xe9));var _0xa500=function(_0x23f7a1,_0x1ecc3b){_0x23f7a1=_0x23f7a1-0x0;var _0x3222d5=_0x500a[_0x23f7a1];return _0x3222d5;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xa500('0x0'));var rs=require(_0xa500('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa500('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xa500('0x3'))(_0xa500('0x4'));var config=require(_0xa500('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xa500('0x6')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0xa500('0x7')],{'host':_0xa500('0x8'),'port':0x18eb});var socket=require(_0xa500('0x9'))(new Redis(config['redis']));require(_0xa500('0xa'))[_0xa500('0xb')](socket);function respondWithRpcPromise(_0x143830,_0x4a3e1d,_0xfcb5a){return new BPromise(function(_0x5b344a,_0x36b45d){return client[_0xa500('0xc')](_0x143830,_0xfcb5a)['then'](function(_0x5f0f60){logger[_0xa500('0xd')]('SmsAccount,\x20%s,\x20%s',_0x4a3e1d,_0xa500('0xe'));logger['debug'](_0xa500('0xf'),_0x4a3e1d,_0xa500('0xe'),JSON[_0xa500('0x10')](_0x5f0f60));if(_0x5f0f60[_0xa500('0x11')]){if(_0x5f0f60[_0xa500('0x11')][_0xa500('0x12')]===0x1f4){logger[_0xa500('0x11')]('SmsAccount,\x20%s,\x20%s',_0x4a3e1d,_0x5f0f60[_0xa500('0x11')][_0xa500('0x13')]);return _0x36b45d(_0x5f0f60['error'][_0xa500('0x13')]);}logger['error'](_0xa500('0x14'),_0x4a3e1d,_0x5f0f60['error'][_0xa500('0x13')]);return _0x5b344a(_0x5f0f60[_0xa500('0x11')][_0xa500('0x13')]);}else{logger[_0xa500('0xd')]('SmsAccount,\x20%s,\x20%s',_0x4a3e1d,'request\x20sent');_0x5b344a(_0x5f0f60[_0xa500('0x15')][_0xa500('0x13')]);}})['catch'](function(_0x13493d){logger['error'](_0xa500('0x14'),_0x4a3e1d,_0x13493d);_0x36b45d(_0x13493d);});});}exports[_0xa500('0x16')]=function(_0xb2dabb){var _0x734304=this;return new Promise(function(_0xfc881c,_0x50f14d){return db['SmsAccount']['find']({'raw':_0xb2dabb['options']?_0xb2dabb[_0xa500('0x17')][_0xa500('0x18')]===undefined?!![]:![]:!![],'where':_0xb2dabb[_0xa500('0x17')]?_0xb2dabb[_0xa500('0x17')][_0xa500('0x19')]||null:null,'attributes':_0xb2dabb[_0xa500('0x17')]?_0xb2dabb[_0xa500('0x17')][_0xa500('0x1a')]||null:null,'include':_0xb2dabb[_0xa500('0x17')]?_0xb2dabb[_0xa500('0x17')][_0xa500('0x1b')]?_['map'](_0xb2dabb[_0xa500('0x17')][_0xa500('0x1b')],function(_0x1a0d9b){return{'model':db[_0x1a0d9b[_0xa500('0x1c')]],'as':_0x1a0d9b['as'],'attributes':_0x1a0d9b[_0xa500('0x1a')],'include':_0x1a0d9b[_0xa500('0x1b')]?_[_0xa500('0x1d')](_0x1a0d9b[_0xa500('0x1b')],function(_0x3b9e41){return{'model':db[_0x3b9e41[_0xa500('0x1c')]],'as':_0x3b9e41['as'],'attributes':_0x3b9e41[_0xa500('0x1a')],'include':_0x3b9e41['include']?_[_0xa500('0x1d')](_0x3b9e41[_0xa500('0x1b')],function(_0x374c0f){return{'model':db[_0x374c0f[_0xa500('0x1c')]],'as':_0x374c0f['as'],'attributes':_0x374c0f[_0xa500('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa500('0x1e')](function(_0x3780e8){logger['info'](_0xa500('0x16'),_0xb2dabb);logger[_0xa500('0x1f')]('ShowSmsAccount',_0xb2dabb,JSON[_0xa500('0x10')](_0x3780e8));_0xfc881c(_0x3780e8);})['catch'](function(_0x11209d){logger['error'](_0xa500('0x16'),_0x11209d[_0xa500('0x13')],_0xb2dabb);_0x50f14d(_0x734304[_0xa500('0x11')](0x1f4,_0x11209d[_0xa500('0x13')]));});});};
\ No newline at end of file
+var _0x6c9c=['catch','SmsAccount','find','options','raw','where','attributes','include','map','model','ShowSmsAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','./smsAccount.socket','register','request','then','info','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','result'];(function(_0x26093d,_0x576a4a){var _0x41e263=function(_0x4b9fbc){while(--_0x4b9fbc){_0x26093d['push'](_0x26093d['shift']());}};_0x41e263(++_0x576a4a);}(_0x6c9c,0x143));var _0xc6c9=function(_0x21d584,_0x3186a3){_0x21d584=_0x21d584-0x0;var _0x5137a0=_0x6c9c[_0x21d584];return _0x5137a0;};'use strict';var _=require(_0xc6c9('0x0'));var util=require(_0xc6c9('0x1'));var moment=require(_0xc6c9('0x2'));var BPromise=require(_0xc6c9('0x3'));var rs=require(_0xc6c9('0x4'));var fs=require('fs');var Redis=require(_0xc6c9('0x5'));var db=require(_0xc6c9('0x6'))['db'];var utils=require(_0xc6c9('0x7'));var logger=require(_0xc6c9('0x8'))(_0xc6c9('0x9'));var config=require(_0xc6c9('0xa'));var jayson=require(_0xc6c9('0xb'));var client=jayson['client'][_0xc6c9('0xc')]({'port':0x232a});config[_0xc6c9('0xd')]=_['defaults'](config[_0xc6c9('0xd')],{'host':_0xc6c9('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc6c9('0xd')]));require(_0xc6c9('0xf'))[_0xc6c9('0x10')](socket);function respondWithRpcPromise(_0x376c4b,_0x2b1b38,_0x90ddda){return new BPromise(function(_0x34e6b7,_0x5f3745){return client[_0xc6c9('0x11')](_0x376c4b,_0x90ddda)[_0xc6c9('0x12')](function(_0x478d89){logger[_0xc6c9('0x13')]('SmsAccount,\x20%s,\x20%s',_0x2b1b38,_0xc6c9('0x14'));logger['debug'](_0xc6c9('0x15'),_0x2b1b38,_0xc6c9('0x14'),JSON[_0xc6c9('0x16')](_0x478d89));if(_0x478d89[_0xc6c9('0x17')]){if(_0x478d89[_0xc6c9('0x17')][_0xc6c9('0x18')]===0x1f4){logger[_0xc6c9('0x17')](_0xc6c9('0x19'),_0x2b1b38,_0x478d89['error'][_0xc6c9('0x1a')]);return _0x5f3745(_0x478d89[_0xc6c9('0x17')][_0xc6c9('0x1a')]);}logger[_0xc6c9('0x17')](_0xc6c9('0x19'),_0x2b1b38,_0x478d89[_0xc6c9('0x17')]['message']);return _0x34e6b7(_0x478d89[_0xc6c9('0x17')][_0xc6c9('0x1a')]);}else{logger[_0xc6c9('0x13')](_0xc6c9('0x19'),_0x2b1b38,'request\x20sent');_0x34e6b7(_0x478d89[_0xc6c9('0x1b')][_0xc6c9('0x1a')]);}})[_0xc6c9('0x1c')](function(_0x479ab5){logger[_0xc6c9('0x17')]('SmsAccount,\x20%s,\x20%s',_0x2b1b38,_0x479ab5);_0x5f3745(_0x479ab5);});});}exports['ShowSmsAccount']=function(_0x37a0fe){var _0x3b07f6=this;return new Promise(function(_0x7e6b96,_0x50fc19){return db[_0xc6c9('0x1d')][_0xc6c9('0x1e')]({'raw':_0x37a0fe['options']?_0x37a0fe[_0xc6c9('0x1f')][_0xc6c9('0x20')]===undefined?!![]:![]:!![],'where':_0x37a0fe[_0xc6c9('0x1f')]?_0x37a0fe[_0xc6c9('0x1f')][_0xc6c9('0x21')]||null:null,'attributes':_0x37a0fe['options']?_0x37a0fe[_0xc6c9('0x1f')][_0xc6c9('0x22')]||null:null,'include':_0x37a0fe[_0xc6c9('0x1f')]?_0x37a0fe['options'][_0xc6c9('0x23')]?_['map'](_0x37a0fe[_0xc6c9('0x1f')][_0xc6c9('0x23')],function(_0x2d7f49){return{'model':db[_0x2d7f49['model']],'as':_0x2d7f49['as'],'attributes':_0x2d7f49[_0xc6c9('0x22')],'include':_0x2d7f49[_0xc6c9('0x23')]?_[_0xc6c9('0x24')](_0x2d7f49[_0xc6c9('0x23')],function(_0x5d92c8){return{'model':db[_0x5d92c8['model']],'as':_0x5d92c8['as'],'attributes':_0x5d92c8[_0xc6c9('0x22')],'include':_0x5d92c8[_0xc6c9('0x23')]?_['map'](_0x5d92c8[_0xc6c9('0x23')],function(_0xc925f){return{'model':db[_0xc925f[_0xc6c9('0x25')]],'as':_0xc925f['as'],'attributes':_0xc925f['attributes']};}):[]};}):[]};}):[]:[]})[_0xc6c9('0x12')](function(_0x1e5e76){logger['info'](_0xc6c9('0x26'),_0x37a0fe);logger['debug'](_0xc6c9('0x26'),_0x37a0fe,JSON[_0xc6c9('0x16')](_0x1e5e76));_0x7e6b96(_0x1e5e76);})['catch'](function(_0x56007c){logger['error'](_0xc6c9('0x26'),_0x56007c[_0xc6c9('0x1a')],_0x37a0fe);_0x50fc19(_0x3b07f6[_0xc6c9('0x17')](0x1f4,_0x56007c['message']));});});};
\ No newline at end of file
index 7c91fbe..7bd2ad1 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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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 4aa53d9..3a2598b 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(_0x24a0c2,_0xf21f49){var _0x377992=function(_0x52cd2b){while(--_0x52cd2b){_0x24a0c2['push'](_0x24a0c2['shift']());}};_0x377992(++_0xf21f49);}(_0x7217,0x19e));var _0x7721=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x7217[_0x5b644e];return _0x49c6bf;};'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 _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x201490,_0x235e70){var _0x1479df=function(_0xb018ba){while(--_0xb018ba){_0x201490['push'](_0x201490['shift']());}};_0x1479df(++_0x235e70);}(_0x3e74,0x175));var _0x43e7=function(_0x101036,_0x321f63){_0x101036=_0x101036-0x0;var _0x9713c=_0x3e74[_0x101036];return _0x9713c;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0xc')]('/',auth[_0x43e7('0x8')](),controller['create']);router[_0x43e7('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xf')]('/:id',auth[_0x43e7('0x8')](),controller['destroy']);module[_0x43e7('0x10')]=router;
\ No newline at end of file
index 3925ec0..f090fe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4322=['noop','exports','STRING'];(function(_0x31000d,_0x56b62d){var _0x2b0000=function(_0x2cda43){while(--_0x2cda43){_0x31000d['push'](_0x31000d['shift']());}};_0x2b0000(++_0x56b62d);}(_0x4322,0x8e));var _0x2432=function(_0x3460a3,_0x151a2f){_0x3460a3=_0x3460a3-0x0;var _0x5647f6=_0x4322[_0x3460a3];return _0x5647f6;};'use strict';var Sequelize=require('sequelize');module[_0x2432('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x2432('0x1')],'allowNull':![],'defaultValue':_0x2432('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x2432('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x3312=['INTEGER','noop','TEXT','STRING','*,*,*,*','sequelize'];(function(_0x409353,_0xe9f04d){var _0x4f4b59=function(_0x64b587){while(--_0x64b587){_0x409353['push'](_0x409353['shift']());}};_0x4f4b59(++_0xe9f04d);}(_0x3312,0x167));var _0x2331=function(_0x1af930,_0x350170){_0x1af930=_0x1af930-0x0;var _0x4d4672=_0x3312[_0x1af930];return _0x4d4672;};'use strict';var Sequelize=require(_0x2331('0x0'));module['exports']={'priority':{'type':Sequelize[_0x2331('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2331('0x2')},'appdata':{'type':Sequelize[_0x2331('0x3')]()},'description':{'type':Sequelize[_0x2331('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x2331('0x5')}};
\ No newline at end of file
index 072d2f8..c89bf51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23f6=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','SmsApplication','then','includeAll','include','findAll','rows','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../config/license/hardware'];(function(_0x2fa849,_0x347b15){var _0x1f48a1=function(_0x5f2ac5){while(--_0x5f2ac5){_0x2fa849['push'](_0x2fa849['shift']());}};_0x1f48a1(++_0x347b15);}(_0x23f6,0xd5));var _0x623f=function(_0x270df3,_0x2b6a07){_0x270df3=_0x270df3-0x0;var _0x5f54c8=_0x23f6[_0x270df3];return _0x5f54c8;};'use strict';var emlformat=require(_0x623f('0x0'));var rimraf=require(_0x623f('0x1'));var zipdir=require(_0x623f('0x2'));var jsonpatch=require(_0x623f('0x3'));var rp=require(_0x623f('0x4'));var moment=require(_0x623f('0x5'));var BPromise=require(_0x623f('0x6'));var Mustache=require(_0x623f('0x7'));var util=require('util');var path=require(_0x623f('0x8'));var sox=require(_0x623f('0x9'));var csv=require('to-csv');var ejs=require(_0x623f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x623f('0xb'));var crypto=require(_0x623f('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x623f('0xd'));var querystring=require(_0x623f('0xe'));var Papa=require(_0x623f('0xf'));var Redis=require('ioredis');var authService=require(_0x623f('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x623f('0x11'));var logger=require(_0x623f('0x12'))(_0x623f('0x13'));var utils=require(_0x623f('0x14'));var config=require(_0x623f('0x15'));var licenseUtil=require(_0x623f('0x16'));var db=require(_0x623f('0x17'))['db'];function respondWithStatusCode(_0x5de30d,_0x4d2002){_0x4d2002=_0x4d2002||0xcc;return function(_0x460095){if(_0x460095){return _0x5de30d['sendStatus'](_0x4d2002);}return _0x5de30d[_0x623f('0x18')](_0x4d2002)[_0x623f('0x19')]();};}function respondWithResult(_0x43b9e5,_0xb11048){_0xb11048=_0xb11048||0xc8;return function(_0x3eb1c6){if(_0x3eb1c6){return _0x43b9e5[_0x623f('0x18')](_0xb11048)[_0x623f('0x1a')](_0x3eb1c6);}};}function respondWithFilteredResult(_0x3e3601,_0x2b25b7){return function(_0x39cdf7){if(_0x39cdf7){var _0x47d2c6=typeof _0x2b25b7[_0x623f('0x1b')]===_0x623f('0x1c')&&typeof _0x2b25b7[_0x623f('0x1d')]===_0x623f('0x1c');var _0x53af7d=_0x39cdf7[_0x623f('0x1e')];var _0x4bb07e=_0x47d2c6?0x0:_0x2b25b7[_0x623f('0x1b')];var _0x2de5cf=_0x47d2c6?_0x39cdf7['count']:_0x2b25b7[_0x623f('0x1b')]+_0x2b25b7[_0x623f('0x1d')];var _0x391887;if(_0x2de5cf>=_0x53af7d){_0x2de5cf=_0x53af7d;_0x391887=0xc8;}else{_0x391887=0xce;}_0x3e3601[_0x623f('0x18')](_0x391887);return _0x3e3601[_0x623f('0x1f')](_0x623f('0x20'),_0x4bb07e+'-'+_0x2de5cf+'/'+_0x53af7d)[_0x623f('0x1a')](_0x39cdf7);}return null;};}function patchUpdates(_0x35687c){return function(_0x4e98e0){try{jsonpatch[_0x623f('0x21')](_0x4e98e0,_0x35687c,!![]);}catch(_0x2b1830){return BPromise['reject'](_0x2b1830);}return _0x4e98e0[_0x623f('0x22')]();};}function saveUpdates(_0x3bdc76,_0x32d4c3){return function(_0x949cf9){if(_0x949cf9){return _0x949cf9[_0x623f('0x23')](_0x3bdc76)['then'](function(_0x1693e1){return _0x1693e1;});}return null;};}function removeEntity(_0x3304ba,_0x2fa30a){return function(_0x20e05c){if(_0x20e05c){return _0x20e05c[_0x623f('0x24')]()['then'](function(){_0x3304ba[_0x623f('0x18')](0xcc)[_0x623f('0x19')]();});}};}function handleEntityNotFound(_0x4e0b67,_0x2dc3a8){return function(_0x34ae1d){if(!_0x34ae1d){_0x4e0b67[_0x623f('0x25')](0x194);}return _0x34ae1d;};}function handleError(_0x4285f8,_0x5a9479){_0x5a9479=_0x5a9479||0x1f4;return function(_0xebab89){logger[_0x623f('0x26')](_0xebab89[_0x623f('0x27')]);if(_0xebab89[_0x623f('0x28')]){delete _0xebab89[_0x623f('0x28')];}_0x4285f8['status'](_0x5a9479)[_0x623f('0x29')](_0xebab89);};}exports[_0x623f('0x2a')]=function(_0x25e13b,_0x12704c){var _0x14e856={},_0x2cf2a4={},_0x471318={'count':0x0,'rows':[]};var _0xc3c55=_['map'](db['SmsApplication'][_0x623f('0x2b')],function(_0x4008b9){return{'name':_0x4008b9[_0x623f('0x2c')],'type':_0x4008b9[_0x623f('0x2d')][_0x623f('0x2e')]};});_0x2cf2a4[_0x623f('0x2f')]=_[_0x623f('0x30')](_0xc3c55,_0x623f('0x28'));_0x2cf2a4[_0x623f('0x31')]=_[_0x623f('0x32')](_0x25e13b[_0x623f('0x31')]);_0x2cf2a4[_0x623f('0x33')]=_[_0x623f('0x34')](_0x2cf2a4[_0x623f('0x2f')],_0x2cf2a4[_0x623f('0x31')]);_0x14e856[_0x623f('0x35')]=_['intersection'](_0x2cf2a4[_0x623f('0x2f')],qs[_0x623f('0x36')](_0x25e13b[_0x623f('0x31')][_0x623f('0x36')]));_0x14e856['attributes']=_0x14e856['attributes'][_0x623f('0x37')]?_0x14e856[_0x623f('0x35')]:_0x2cf2a4['model'];if(!_0x25e13b[_0x623f('0x31')][_0x623f('0x38')](_0x623f('0x39'))){_0x14e856[_0x623f('0x1d')]=qs[_0x623f('0x1d')](_0x25e13b[_0x623f('0x31')][_0x623f('0x1d')]);_0x14e856['offset']=qs['offset'](_0x25e13b[_0x623f('0x31')][_0x623f('0x1b')]);}_0x14e856[_0x623f('0x3a')]=qs[_0x623f('0x3b')](_0x25e13b[_0x623f('0x31')][_0x623f('0x3b')]);_0x14e856[_0x623f('0x3c')]=qs['filters'](_['pick'](_0x25e13b[_0x623f('0x31')],_0x2cf2a4[_0x623f('0x33')]),_0xc3c55);if(_0x25e13b['query'][_0x623f('0x3d')]){_0x14e856[_0x623f('0x3c')]=_[_0x623f('0x3e')](_0x14e856[_0x623f('0x3c')],{'$or':_[_0x623f('0x30')](_0xc3c55,function(_0x4e85d8){if(_0x4e85d8[_0x623f('0x2d')]!==_0x623f('0x3f')){var _0x376261={};_0x376261[_0x4e85d8['name']]={'$like':'%'+_0x25e13b[_0x623f('0x31')]['filter']+'%'};return _0x376261;}})});}_0x14e856=_[_0x623f('0x3e')]({},_0x14e856,_0x25e13b['options']);var _0x4a5b23={'where':_0x14e856[_0x623f('0x3c')]};return db[_0x623f('0x40')][_0x623f('0x1e')](_0x4a5b23)[_0x623f('0x41')](function(_0x327e97){_0x471318['count']=_0x327e97;if(_0x25e13b[_0x623f('0x31')][_0x623f('0x42')]){_0x14e856[_0x623f('0x43')]=[{'all':!![]}];}return db[_0x623f('0x40')][_0x623f('0x44')](_0x14e856);})[_0x623f('0x41')](function(_0x2c070c){_0x471318[_0x623f('0x45')]=_0x2c070c;return _0x471318;})[_0x623f('0x41')](respondWithFilteredResult(_0x12704c,_0x14e856))[_0x623f('0x46')](handleError(_0x12704c,null));};exports[_0x623f('0x47')]=function(_0x3ae664,_0x417e77){var _0x21a406={'raw':!![],'where':{'id':_0x3ae664['params']['id']}},_0x4e3e03={};_0x4e3e03[_0x623f('0x2f')]=_[_0x623f('0x32')](db[_0x623f('0x40')]['rawAttributes']);_0x4e3e03[_0x623f('0x31')]=_[_0x623f('0x32')](_0x3ae664['query']);_0x4e3e03[_0x623f('0x33')]=_[_0x623f('0x34')](_0x4e3e03[_0x623f('0x2f')],_0x4e3e03[_0x623f('0x31')]);_0x21a406[_0x623f('0x35')]=_[_0x623f('0x34')](_0x4e3e03['model'],qs[_0x623f('0x36')](_0x3ae664[_0x623f('0x31')][_0x623f('0x36')]));_0x21a406['attributes']=_0x21a406[_0x623f('0x35')]['length']?_0x21a406['attributes']:_0x4e3e03[_0x623f('0x2f')];if(_0x3ae664[_0x623f('0x31')][_0x623f('0x42')]){_0x21a406[_0x623f('0x43')]=[{'all':!![]}];}_0x21a406=_['merge']({},_0x21a406,_0x3ae664[_0x623f('0x48')]);return db['SmsApplication'][_0x623f('0x49')](_0x21a406)[_0x623f('0x41')](handleEntityNotFound(_0x417e77,null))[_0x623f('0x41')](respondWithResult(_0x417e77,null))['catch'](handleError(_0x417e77,null));};exports[_0x623f('0x4a')]=function(_0x12613b,_0x3bec08){return db[_0x623f('0x40')][_0x623f('0x4a')](_0x12613b[_0x623f('0x4b')],{})[_0x623f('0x41')](respondWithResult(_0x3bec08,0xc9))[_0x623f('0x46')](handleError(_0x3bec08,null));};exports[_0x623f('0x23')]=function(_0x2d6e3f,_0x44cbf3){if(_0x2d6e3f[_0x623f('0x4b')]['id']){delete _0x2d6e3f[_0x623f('0x4b')]['id'];}return db[_0x623f('0x40')]['find']({'where':{'id':_0x2d6e3f[_0x623f('0x4c')]['id']}})[_0x623f('0x41')](handleEntityNotFound(_0x44cbf3,null))[_0x623f('0x41')](saveUpdates(_0x2d6e3f[_0x623f('0x4b')],null))[_0x623f('0x41')](respondWithResult(_0x44cbf3,null))[_0x623f('0x46')](handleError(_0x44cbf3,null));};exports[_0x623f('0x24')]=function(_0x412b65,_0x27ab91){return db[_0x623f('0x40')][_0x623f('0x49')]({'where':{'id':_0x412b65[_0x623f('0x4c')]['id']}})[_0x623f('0x41')](handleEntityNotFound(_0x27ab91,null))[_0x623f('0x41')](removeEntity(_0x27ab91,null))['catch'](handleError(_0x27ab91,null));};
\ No newline at end of file
+var _0xd30c=['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/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','set','reject','save','update','then','destroy','error','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','count','include','findAll','rows','catch','params','keys','includeAll','create','body','find','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs'];(function(_0x31f14a,_0x5b0358){var _0x3b7054=function(_0x4e2ffb){while(--_0x4e2ffb){_0x31f14a['push'](_0x31f14a['shift']());}};_0x3b7054(++_0x5b0358);}(_0xd30c,0x1bf));var _0xcd30=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0xd30c[_0x500419];return _0x241c1a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcd30('0x0'));var rp=require(_0xcd30('0x1'));var moment=require(_0xcd30('0x2'));var BPromise=require(_0xcd30('0x3'));var Mustache=require(_0xcd30('0x4'));var util=require('util');var path=require(_0xcd30('0x5'));var sox=require(_0xcd30('0x6'));var csv=require(_0xcd30('0x7'));var ejs=require(_0xcd30('0x8'));var fs=require('fs');var fs_extra=require(_0xcd30('0x9'));var _=require('lodash');var squel=require(_0xcd30('0xa'));var crypto=require(_0xcd30('0xb'));var jsforce=require(_0xcd30('0xc'));var deskjs=require(_0xcd30('0xd'));var toCsv=require(_0xcd30('0x7'));var querystring=require(_0xcd30('0xe'));var Papa=require(_0xcd30('0xf'));var Redis=require(_0xcd30('0x10'));var authService=require(_0xcd30('0x11'));var qs=require(_0xcd30('0x12'));var as=require(_0xcd30('0x13'));var hardwareService=require(_0xcd30('0x14'));var logger=require(_0xcd30('0x15'))(_0xcd30('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcd30('0x17'));var db=require(_0xcd30('0x18'))['db'];function respondWithStatusCode(_0x2d26b6,_0x1f0f0e){_0x1f0f0e=_0x1f0f0e||0xcc;return function(_0xdb5375){if(_0xdb5375){return _0x2d26b6[_0xcd30('0x19')](_0x1f0f0e);}return _0x2d26b6[_0xcd30('0x1a')](_0x1f0f0e)[_0xcd30('0x1b')]();};}function respondWithResult(_0x475580,_0x1cf6d1){_0x1cf6d1=_0x1cf6d1||0xc8;return function(_0x59aade){if(_0x59aade){return _0x475580[_0xcd30('0x1a')](_0x1cf6d1)[_0xcd30('0x1c')](_0x59aade);}};}function respondWithFilteredResult(_0x58d517,_0x10cca7){return function(_0x39da2f){if(_0x39da2f){var _0x478f7a=typeof _0x10cca7[_0xcd30('0x1d')]===_0xcd30('0x1e')&&typeof _0x10cca7['limit']==='undefined';var _0x22a18c=_0x39da2f['count'];var _0x19d757=_0x478f7a?0x0:_0x10cca7[_0xcd30('0x1d')];var _0x5d81cf=_0x478f7a?_0x39da2f['count']:_0x10cca7['offset']+_0x10cca7['limit'];var _0xe31b9e;if(_0x5d81cf>=_0x22a18c){_0x5d81cf=_0x22a18c;_0xe31b9e=0xc8;}else{_0xe31b9e=0xce;}_0x58d517['status'](_0xe31b9e);return _0x58d517[_0xcd30('0x1f')]('Content-Range',_0x19d757+'-'+_0x5d81cf+'/'+_0x22a18c)[_0xcd30('0x1c')](_0x39da2f);}return null;};}function patchUpdates(_0x280b4d){return function(_0x322851){try{jsonpatch['apply'](_0x322851,_0x280b4d,!![]);}catch(_0x786f6d){return BPromise[_0xcd30('0x20')](_0x786f6d);}return _0x322851[_0xcd30('0x21')]();};}function saveUpdates(_0x2b363f,_0x2e7fed){return function(_0x5cf2a8){if(_0x5cf2a8){return _0x5cf2a8[_0xcd30('0x22')](_0x2b363f)[_0xcd30('0x23')](function(_0xf622ef){return _0xf622ef;});}return null;};}function removeEntity(_0x1c055c,_0x3a0fab){return function(_0x328183){if(_0x328183){return _0x328183[_0xcd30('0x24')]()[_0xcd30('0x23')](function(){_0x1c055c[_0xcd30('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d945c,_0x10da3c){return function(_0x22c8ab){if(!_0x22c8ab){_0x3d945c[_0xcd30('0x19')](0x194);}return _0x22c8ab;};}function handleError(_0x38e789,_0x526b02){_0x526b02=_0x526b02||0x1f4;return function(_0x2004e8){logger[_0xcd30('0x25')](_0x2004e8[_0xcd30('0x26')]);if(_0x2004e8['name']){delete _0x2004e8[_0xcd30('0x27')];}_0x38e789[_0xcd30('0x1a')](_0x526b02)[_0xcd30('0x28')](_0x2004e8);};}exports[_0xcd30('0x29')]=function(_0x4388bc,_0x427c4e){var _0x2acb3e={},_0x1edda9={},_0x110128={'count':0x0,'rows':[]};var _0x565ea7=_[_0xcd30('0x2a')](db[_0xcd30('0x2b')][_0xcd30('0x2c')],function(_0x4e6172){return{'name':_0x4e6172[_0xcd30('0x2d')],'type':_0x4e6172[_0xcd30('0x2e')]['key']};});_0x1edda9[_0xcd30('0x2f')]=_[_0xcd30('0x2a')](_0x565ea7,_0xcd30('0x27'));_0x1edda9[_0xcd30('0x30')]=_['keys'](_0x4388bc['query']);_0x1edda9[_0xcd30('0x31')]=_['intersection'](_0x1edda9[_0xcd30('0x2f')],_0x1edda9[_0xcd30('0x30')]);_0x2acb3e[_0xcd30('0x32')]=_[_0xcd30('0x33')](_0x1edda9['model'],qs[_0xcd30('0x34')](_0x4388bc[_0xcd30('0x30')][_0xcd30('0x34')]));_0x2acb3e['attributes']=_0x2acb3e['attributes'][_0xcd30('0x35')]?_0x2acb3e[_0xcd30('0x32')]:_0x1edda9['model'];if(!_0x4388bc[_0xcd30('0x30')][_0xcd30('0x36')](_0xcd30('0x37'))){_0x2acb3e[_0xcd30('0x38')]=qs[_0xcd30('0x38')](_0x4388bc['query'][_0xcd30('0x38')]);_0x2acb3e[_0xcd30('0x1d')]=qs[_0xcd30('0x1d')](_0x4388bc[_0xcd30('0x30')][_0xcd30('0x1d')]);}_0x2acb3e[_0xcd30('0x39')]=qs[_0xcd30('0x3a')](_0x4388bc[_0xcd30('0x30')][_0xcd30('0x3a')]);_0x2acb3e[_0xcd30('0x3b')]=qs[_0xcd30('0x31')](_[_0xcd30('0x3c')](_0x4388bc[_0xcd30('0x30')],_0x1edda9[_0xcd30('0x31')]),_0x565ea7);if(_0x4388bc[_0xcd30('0x30')][_0xcd30('0x3d')]){_0x2acb3e[_0xcd30('0x3b')]=_['merge'](_0x2acb3e[_0xcd30('0x3b')],{'$or':_['map'](_0x565ea7,function(_0x5bc151){if(_0x5bc151[_0xcd30('0x2e')]!==_0xcd30('0x3e')){var _0x4210c1={};_0x4210c1[_0x5bc151[_0xcd30('0x27')]]={'$like':'%'+_0x4388bc[_0xcd30('0x30')][_0xcd30('0x3d')]+'%'};return _0x4210c1;}})});}_0x2acb3e=_[_0xcd30('0x3f')]({},_0x2acb3e,_0x4388bc[_0xcd30('0x40')]);var _0x59323a={'where':_0x2acb3e[_0xcd30('0x3b')]};return db[_0xcd30('0x2b')][_0xcd30('0x41')](_0x59323a)[_0xcd30('0x23')](function(_0x4420c6){_0x110128[_0xcd30('0x41')]=_0x4420c6;if(_0x4388bc['query']['includeAll']){_0x2acb3e[_0xcd30('0x42')]=[{'all':!![]}];}return db[_0xcd30('0x2b')][_0xcd30('0x43')](_0x2acb3e);})[_0xcd30('0x23')](function(_0x10b378){_0x110128[_0xcd30('0x44')]=_0x10b378;return _0x110128;})[_0xcd30('0x23')](respondWithFilteredResult(_0x427c4e,_0x2acb3e))[_0xcd30('0x45')](handleError(_0x427c4e,null));};exports['show']=function(_0x4e49f7,_0x4367df){var _0x23c68f={'raw':!![],'where':{'id':_0x4e49f7[_0xcd30('0x46')]['id']}},_0x195476={};_0x195476[_0xcd30('0x2f')]=_[_0xcd30('0x47')](db['SmsApplication'][_0xcd30('0x2c')]);_0x195476[_0xcd30('0x30')]=_[_0xcd30('0x47')](_0x4e49f7['query']);_0x195476['filters']=_[_0xcd30('0x33')](_0x195476[_0xcd30('0x2f')],_0x195476[_0xcd30('0x30')]);_0x23c68f['attributes']=_['intersection'](_0x195476[_0xcd30('0x2f')],qs[_0xcd30('0x34')](_0x4e49f7[_0xcd30('0x30')][_0xcd30('0x34')]));_0x23c68f[_0xcd30('0x32')]=_0x23c68f[_0xcd30('0x32')][_0xcd30('0x35')]?_0x23c68f['attributes']:_0x195476[_0xcd30('0x2f')];if(_0x4e49f7['query'][_0xcd30('0x48')]){_0x23c68f['include']=[{'all':!![]}];}_0x23c68f=_[_0xcd30('0x3f')]({},_0x23c68f,_0x4e49f7[_0xcd30('0x40')]);return db[_0xcd30('0x2b')]['find'](_0x23c68f)[_0xcd30('0x23')](handleEntityNotFound(_0x4367df,null))[_0xcd30('0x23')](respondWithResult(_0x4367df,null))[_0xcd30('0x45')](handleError(_0x4367df,null));};exports[_0xcd30('0x49')]=function(_0x453850,_0xbd62ba){return db[_0xcd30('0x2b')][_0xcd30('0x49')](_0x453850['body'],{})[_0xcd30('0x23')](respondWithResult(_0xbd62ba,0xc9))['catch'](handleError(_0xbd62ba,null));};exports[_0xcd30('0x22')]=function(_0x335d23,_0x2f5e5f){if(_0x335d23['body']['id']){delete _0x335d23[_0xcd30('0x4a')]['id'];}return db['SmsApplication'][_0xcd30('0x4b')]({'where':{'id':_0x335d23['params']['id']}})[_0xcd30('0x23')](handleEntityNotFound(_0x2f5e5f,null))['then'](saveUpdates(_0x335d23[_0xcd30('0x4a')],null))[_0xcd30('0x23')](respondWithResult(_0x2f5e5f,null))[_0xcd30('0x45')](handleError(_0x2f5e5f,null));};exports[_0xcd30('0x24')]=function(_0x1e95ee,_0x4244a2){return db['SmsApplication']['find']({'where':{'id':_0x1e95ee[_0xcd30('0x46')]['id']}})[_0xcd30('0x23')](handleEntityNotFound(_0x4244a2,null))[_0xcd30('0x23')](removeEntity(_0x4244a2,null))[_0xcd30('0x45')](handleError(_0x4244a2,null));};
\ No newline at end of file
index 5c33339..a93de78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d1=['define','SmsApplication','sms_applications','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./smsApplication.attributes','exports'];(function(_0x2d1d00,_0x17706b){var _0x337a99=function(_0x18c099){while(--_0x18c099){_0x2d1d00['push'](_0x2d1d00['shift']());}};_0x337a99(++_0x17706b);}(_0x45d1,0x1cb));var _0x145d=function(_0x4f53a6,_0x582ff5){_0x4f53a6=_0x4f53a6-0x0;var _0x30e4b7=_0x45d1[_0x4f53a6];return _0x30e4b7;};'use strict';var _=require(_0x145d('0x0'));var util=require(_0x145d('0x1'));var logger=require('../../config/logger')(_0x145d('0x2'));var moment=require(_0x145d('0x3'));var BPromise=require('bluebird');var rp=require(_0x145d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x145d('0x5'));var config=require(_0x145d('0x6'));var attributes=require(_0x145d('0x7'));module[_0x145d('0x8')]=function(_0x14ddd8,_0x2896c3){return _0x14ddd8[_0x145d('0x9')](_0x145d('0xa'),attributes,{'tableName':_0x145d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd5d6=['./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xd5d6,0xcb));var _0x6d5d=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0xd5d6[_0x13ce0c];return _0x4388fb;};'use strict';var _=require(_0x6d5d('0x0'));var util=require('util');var logger=require(_0x6d5d('0x1'))(_0x6d5d('0x2'));var moment=require(_0x6d5d('0x3'));var BPromise=require(_0x6d5d('0x4'));var rp=require(_0x6d5d('0x5'));var fs=require('fs');var path=require(_0x6d5d('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6d5d('0x7'));module[_0x6d5d('0x8')]=function(_0x44166a,_0x20ed34){return _0x44166a[_0x6d5d('0x9')](_0x6d5d('0xa'),attributes,{'tableName':_0x6d5d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6d5d('0xc'),'collate':_0x6d5d('0xd')});};
\ No newline at end of file
index 405ad14..f9ffdb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23bb=['stringify','error','code','SmsApplication,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','http','request','info','request\x20sent','debug'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x23bb,0x79));var _0xb23b=function(_0x157d23,_0x4027b9){_0x157d23=_0x157d23-0x0;var _0x5b93cc=_0x23bb[_0x157d23];return _0x5b93cc;};'use strict';var _=require(_0xb23b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb23b('0x1'));var rs=require(_0xb23b('0x2'));var fs=require('fs');var Redis=require(_0xb23b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb23b('0x4'));var logger=require(_0xb23b('0x5'))(_0xb23b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xb23b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4c5626,_0x4a2873,_0x596a94){return new BPromise(function(_0x29e8e9,_0x4d00fe){return client[_0xb23b('0x8')](_0x4c5626,_0x596a94)['then'](function(_0x23270c){logger[_0xb23b('0x9')]('SmsApplication,\x20%s,\x20%s',_0x4a2873,_0xb23b('0xa'));logger[_0xb23b('0xb')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x4a2873,_0xb23b('0xa'),JSON[_0xb23b('0xc')](_0x23270c));if(_0x23270c[_0xb23b('0xd')]){if(_0x23270c['error'][_0xb23b('0xe')]===0x1f4){logger[_0xb23b('0xd')](_0xb23b('0xf'),_0x4a2873,_0x23270c[_0xb23b('0xd')][_0xb23b('0x10')]);return _0x4d00fe(_0x23270c[_0xb23b('0xd')][_0xb23b('0x10')]);}logger[_0xb23b('0xd')](_0xb23b('0xf'),_0x4a2873,_0x23270c[_0xb23b('0xd')][_0xb23b('0x10')]);return _0x29e8e9(_0x23270c[_0xb23b('0xd')][_0xb23b('0x10')]);}else{logger[_0xb23b('0x9')](_0xb23b('0xf'),_0x4a2873,_0xb23b('0xa'));_0x29e8e9(_0x23270c[_0xb23b('0x11')]['message']);}})[_0xb23b('0x12')](function(_0x3c5852){logger[_0xb23b('0xd')](_0xb23b('0xf'),_0x4a2873,_0x3c5852);_0x4d00fe(_0x3c5852);});});}
\ No newline at end of file
+var _0xb7e2=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsApplication,\x20%s,\x20%s','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb7e2,0x103));var _0x2b7e=function(_0x339cfd,_0x564618){_0x339cfd=_0x339cfd-0x0;var _0xc769b7=_0xb7e2[_0x339cfd];return _0xc769b7;};'use strict';var _=require(_0x2b7e('0x0'));var util=require('util');var moment=require(_0x2b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x2b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2b7e('0x4'))(_0x2b7e('0x5'));var config=require(_0x2b7e('0x6'));var jayson=require(_0x2b7e('0x7'));var client=jayson[_0x2b7e('0x8')][_0x2b7e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d7a0b,_0xc23ec4,_0x45dc9f){return new BPromise(function(_0x10a31d,_0x49491c){return client[_0x2b7e('0xa')](_0x4d7a0b,_0x45dc9f)[_0x2b7e('0xb')](function(_0x2f5991){logger[_0x2b7e('0xc')](_0x2b7e('0xd'),_0xc23ec4,'request\x20sent');logger['debug'](_0x2b7e('0xe'),_0xc23ec4,_0x2b7e('0xf'),JSON[_0x2b7e('0x10')](_0x2f5991));if(_0x2f5991[_0x2b7e('0x11')]){if(_0x2f5991[_0x2b7e('0x11')][_0x2b7e('0x12')]===0x1f4){logger[_0x2b7e('0x11')]('SmsApplication,\x20%s,\x20%s',_0xc23ec4,_0x2f5991[_0x2b7e('0x11')][_0x2b7e('0x13')]);return _0x49491c(_0x2f5991[_0x2b7e('0x11')][_0x2b7e('0x13')]);}logger['error']('SmsApplication,\x20%s,\x20%s',_0xc23ec4,_0x2f5991['error'][_0x2b7e('0x13')]);return _0x10a31d(_0x2f5991['error'][_0x2b7e('0x13')]);}else{logger['info'](_0x2b7e('0xd'),_0xc23ec4,'request\x20sent');_0x10a31d(_0x2f5991[_0x2b7e('0x14')][_0x2b7e('0x13')]);}})[_0x2b7e('0x15')](function(_0x4d85c3){logger[_0x2b7e('0x11')](_0x2b7e('0xd'),_0xc23ec4,_0x4d85c3);_0x49491c(_0x4d85c3);});});}
\ No newline at end of file
index f748b86..93d6cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed3c=['sms','smsinteraction:addtags','addTags','put','tracked','smsinteraction:update','update','delete','/:id','smsinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./smsInteraction.controller','get','isAuthenticated','index','describe','show','/:id/messages','getMessages','/:id/download','download','create','post','addMessage'];(function(_0x45c73e,_0x1e6e11){var _0x3b18b1=function(_0x2056d2){while(--_0x2056d2){_0x45c73e['push'](_0x45c73e['shift']());}};_0x3b18b1(++_0x1e6e11);}(_0xed3c,0x1a6));var _0xced3=function(_0x11e30d,_0x5584aa){_0x11e30d=_0x11e30d-0x0;var _0x2d4e29=_0xed3c[_0x11e30d];return _0x2d4e29;};'use strict';var multer=require(_0xced3('0x0'));var util=require(_0xced3('0x1'));var path=require(_0xced3('0x2'));var timeout=require(_0xced3('0x3'));var express=require('express');var router=express[_0xced3('0x4')]();var fs_extra=require(_0xced3('0x5'));var auth=require(_0xced3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xced3('0x7'));router[_0xced3('0x8')]('/',auth[_0xced3('0x9')](),controller[_0xced3('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xced3('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xced3('0xc')]);router[_0xced3('0x8')](_0xced3('0xd'),auth[_0xced3('0x9')](),controller[_0xced3('0xe')]);router['get'](_0xced3('0xf'),auth[_0xced3('0x9')](),controller[_0xced3('0x10')]);router['post']('/',auth[_0xced3('0x9')](),controller[_0xced3('0x11')]);router[_0xced3('0x12')](_0xced3('0xd'),auth[_0xced3('0x9')](),controller[_0xced3('0x13')]);router[_0xced3('0x12')]('/:id/tags',auth[_0xced3('0x9')](),interaction['tracked'](_0xced3('0x14'),_0xced3('0x15')),controller[_0xced3('0x16')]);router[_0xced3('0x17')]('/:id',auth[_0xced3('0x9')](),interaction[_0xced3('0x18')]('sms',_0xced3('0x19')),controller[_0xced3('0x1a')]);router[_0xced3('0x1b')](_0xced3('0x1c'),auth['isAuthenticated'](),interaction[_0xced3('0x18')]('sms',_0xced3('0x1d')),controller[_0xced3('0x1e')]);router[_0xced3('0x1b')](_0xced3('0x1f'),auth[_0xced3('0x9')](),controller[_0xced3('0x20')]);module[_0xced3('0x21')]=router;
\ No newline at end of file
+var _0xd8b0=['util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','smsinteraction:update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer'];(function(_0x4bae55,_0x42870a){var _0x46ecd7=function(_0x2379ea){while(--_0x2379ea){_0x4bae55['push'](_0x4bae55['shift']());}};_0x46ecd7(++_0x42870a);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./smsInteraction.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('0x9')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0x9')]('/:id/download',auth[_0x0d8b('0x7')](),controller['download']);router[_0x0d8b('0xf')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x10')]);router[_0x0d8b('0xf')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);router[_0x0d8b('0xf')](_0x0d8b('0x12'),auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0x13')](_0x0d8b('0x14'),_0x0d8b('0x15')),controller[_0x0d8b('0x16')]);router['put'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0x13')](_0x0d8b('0x14'),_0x0d8b('0x17')),controller['update']);router[_0x0d8b('0x18')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0x13')](_0x0d8b('0x14'),_0x0d8b('0x19')),controller[_0x0d8b('0x1a')]);router[_0x0d8b('0x18')]('/:id/tags',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x1b')]);module[_0x0d8b('0x1c')]=router;
\ No newline at end of file
index 1256b5e..0db7f21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b08=['ENUM','out','INTEGER','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x226ec7,_0x43aa67){var _0x896b40=function(_0x4f7f3d){while(--_0x4f7f3d){_0x226ec7['push'](_0x226ec7['shift']());}};_0x896b40(++_0x43aa67);}(_0x7b08,0x163));var _0x87b0=function(_0x3a3137,_0x3b1599){_0x3a3137=_0x3a3137-0x0;var _0x4bf565=_0x7b08[_0x3a3137];return _0x4bf565;};'use strict';var Sequelize=require(_0x87b0('0x0'));var moment=require('moment');module[_0x87b0('0x1')]={'closed':{'type':Sequelize[_0x87b0('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x87b0('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x87b0('0x4')]},'thirdDisposition':{'type':Sequelize[_0x87b0('0x4')]},'note':{'type':Sequelize[_0x87b0('0x4')]},'phone':{'type':Sequelize[_0x87b0('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x87b0('0x5')]('in',_0x87b0('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x87b0('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x87b0('0x5')]('in',_0x87b0('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x87b0('0x2')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x87b0('0x7')]}};
\ No newline at end of file
+var _0x9a18=['exports','BOOLEAN','DATE','STRING','ENUM','out','sequelize'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x9a18,0x187));var _0x89a1=function(_0x4f36f7,_0x24ba14){_0x4f36f7=_0x4f36f7-0x0;var _0x3ae4fe=_0x9a18[_0x4f36f7];return _0x3ae4fe;};'use strict';var Sequelize=require(_0x89a1('0x0'));var moment=require('moment');module[_0x89a1('0x1')]={'closed':{'type':Sequelize[_0x89a1('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x89a1('0x3')]},'disposition':{'type':Sequelize[_0x89a1('0x4')]},'secondDisposition':{'type':Sequelize[_0x89a1('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x89a1('0x4')]},'phone':{'type':Sequelize[_0x89a1('0x4')]},'read1stAt':{'type':Sequelize[_0x89a1('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x89a1('0x5')]('in',_0x89a1('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x89a1('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x89a1('0x5')]('in',_0x89a1('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index c7bea1c..df93be5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb933=['removeTags','unix','toString','join','root','server','tmp','transcript-%d-%s.zip','User','push','CmContact','Contact','firstName','Messages','direction','secret','read','SmsAccount','Owner','fullname','get','mkdirSync','Account','N.A.','createdAt','closed','disposition','System','lastName','value','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','download','unlinkSync','zip-dir','moment','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','offset','undefined','count','Content-Range','update','then','destroy','end','error','stack','name','map','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','sms','query','catch','params','model','keys','filters','intersection','attributes','fields','includeAll','options','find','create','body','describe','addMessage','omit','getMessages','findOne','length','hasOwnProperty','nolimit','limit','order','sort','pick','where','SmsInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','include','SmsMessage','findAll','rows','addTags','setTags','ids','spread','Tag','color','emit','smsInteractionTags:save'];(function(_0xff065c,_0x4d0e9c){var _0x4284ca=function(_0x1bd483){while(--_0x1bd483){_0xff065c['push'](_0xff065c['shift']());}};_0x4284ca(++_0x4d0e9c);}(_0xb933,0x110));var _0x3b93=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xb933[_0x21aec3];return _0x288bbc;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x3b93('0x0'));var moment=require(_0x3b93('0x1'));var BPromise=require('bluebird');var util=require(_0x3b93('0x2'));var path=require(_0x3b93('0x3'));var ejs=require(_0x3b93('0x4'));var fs=require('fs');var _=require(_0x3b93('0x5'));var Redis=require('ioredis');var interaction=require(_0x3b93('0x6'));var qs=require(_0x3b93('0x7'));var pdf=require(_0x3b93('0x8'));var logger=require(_0x3b93('0x9'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x3b93('0xa')]=_['defaults'](config['redis'],{'host':_0x3b93('0xb'),'port':0x18eb});var socket=require(_0x3b93('0xc'))(new Redis(config[_0x3b93('0xa')]));require(_0x3b93('0xd'))[_0x3b93('0xe')](socket);function respondWithStatusCode(_0x8937e9,_0x43b699){_0x43b699=_0x43b699||0xcc;return function(_0x5da7e2){if(_0x5da7e2){return _0x8937e9[_0x3b93('0xf')](_0x43b699);}return _0x8937e9[_0x3b93('0x10')](_0x43b699)['end']();};}function respondWithResult(_0x4b9b16,_0x257d2e){_0x257d2e=_0x257d2e||0xc8;return function(_0x3181d3){if(_0x3181d3){return _0x4b9b16[_0x3b93('0x10')](_0x257d2e)['json'](_0x3181d3);}};}function respondWithFilteredResult(_0xb4c6c9,_0x3526ec){return function(_0xc8e169){if(_0xc8e169){var _0x493c7b=typeof _0x3526ec[_0x3b93('0x11')]===_0x3b93('0x12')&&typeof _0x3526ec['limit']==='undefined';var _0x2cb364=_0xc8e169['count'];var _0x2110bc=_0x493c7b?0x0:_0x3526ec['offset'];var _0x458893=_0x493c7b?_0xc8e169[_0x3b93('0x13')]:_0x3526ec[_0x3b93('0x11')]+_0x3526ec['limit'];var _0x25657c;if(_0x458893>=_0x2cb364){_0x458893=_0x2cb364;_0x25657c=0xc8;}else{_0x25657c=0xce;}_0xb4c6c9[_0x3b93('0x10')](_0x25657c);return _0xb4c6c9['set'](_0x3b93('0x14'),_0x2110bc+'-'+_0x458893+'/'+_0x2cb364)['json'](_0xc8e169);}return null;};}function saveUpdates(_0xd0cdb8){return function(_0x5a9091){if(_0x5a9091){return _0x5a9091[_0x3b93('0x15')](_0xd0cdb8)[_0x3b93('0x16')](function(_0x32d82b){return _0x32d82b;});}return null;};}function removeEntity(_0x45774f){return function(_0x1f30ad){if(_0x1f30ad){return _0x1f30ad[_0x3b93('0x17')]()[_0x3b93('0x16')](function(){_0x45774f[_0x3b93('0x10')](0xcc)[_0x3b93('0x18')]();});}};}function handleEntityNotFound(_0x59492e){return function(_0x30ec82){if(!_0x30ec82){_0x59492e['sendStatus'](0x194);}return _0x30ec82;};}function handleError(_0x59c1e6,_0x5f06b2){_0x5f06b2=_0x5f06b2||0x1f4;return function(_0x38e9fa){logger[_0x3b93('0x19')](_0x38e9fa[_0x3b93('0x1a')]);if(_0x38e9fa[_0x3b93('0x1b')]){delete _0x38e9fa[_0x3b93('0x1b')];}_0x59c1e6[_0x3b93('0x10')](_0x5f06b2)['send'](_0x38e9fa);};}exports['index']=function(_0x273a61,_0x40828d){var _0x1f49b5={};var _0x4d230a=_[_0x3b93('0x1c')](db[_0x3b93('0x1d')][_0x3b93('0x1e')],function(_0x5a23cf){return{'name':_0x5a23cf[_0x3b93('0x1f')],'type':_0x5a23cf[_0x3b93('0x20')][_0x3b93('0x21')]};});_0x1f49b5=qs[_0x3b93('0x22')](_0x4d230a,_0x273a61);return interaction['findAll'](_0x3b93('0x23'),_0x273a61[_0x3b93('0x24')],_0x273a61['user'],_0x1f49b5,_0x4d230a)['then'](respondWithFilteredResult(_0x40828d,_0x1f49b5))[_0x3b93('0x25')](handleError(_0x40828d,null));};exports['show']=function(_0x4bee40,_0x2420c0){var _0x1bb69b={'raw':![],'where':{'id':_0x4bee40[_0x3b93('0x26')]['id']}},_0x138667={};_0x138667[_0x3b93('0x27')]=_[_0x3b93('0x28')](db[_0x3b93('0x1d')][_0x3b93('0x1e')]);_0x138667[_0x3b93('0x24')]=_[_0x3b93('0x28')](_0x4bee40[_0x3b93('0x24')]);_0x138667[_0x3b93('0x29')]=_[_0x3b93('0x2a')](_0x138667[_0x3b93('0x27')],_0x138667[_0x3b93('0x24')]);_0x1bb69b[_0x3b93('0x2b')]=_[_0x3b93('0x2a')](_0x138667[_0x3b93('0x27')],qs[_0x3b93('0x2c')](_0x4bee40[_0x3b93('0x24')][_0x3b93('0x2c')]));_0x1bb69b[_0x3b93('0x2b')]=_0x1bb69b[_0x3b93('0x2b')]['length']?_0x1bb69b[_0x3b93('0x2b')]:_0x138667['model'];if(_0x4bee40[_0x3b93('0x24')][_0x3b93('0x2d')]){_0x1bb69b['include']=[{'all':!![]}];}_0x1bb69b=_['merge']({},_0x1bb69b,_0x4bee40[_0x3b93('0x2e')]);return db[_0x3b93('0x1d')][_0x3b93('0x2f')](_0x1bb69b)[_0x3b93('0x16')](handleEntityNotFound(_0x2420c0,null))['then'](respondWithResult(_0x2420c0,null))[_0x3b93('0x25')](handleError(_0x2420c0,null));};exports[_0x3b93('0x30')]=function(_0x38dfa5,_0x152fdc){return db[_0x3b93('0x1d')][_0x3b93('0x30')](_0x38dfa5[_0x3b93('0x31')],{})['then'](respondWithResult(_0x152fdc,0xc9))[_0x3b93('0x25')](handleError(_0x152fdc,null));};exports[_0x3b93('0x15')]=function(_0x46249c,_0x214e29){if(_0x46249c[_0x3b93('0x31')]['id']){delete _0x46249c[_0x3b93('0x31')]['id'];}return db[_0x3b93('0x1d')]['find']({'where':{'id':_0x46249c[_0x3b93('0x26')]['id']}})[_0x3b93('0x16')](handleEntityNotFound(_0x214e29,null))[_0x3b93('0x16')](saveUpdates(_0x46249c[_0x3b93('0x31')],null))[_0x3b93('0x16')](respondWithResult(_0x214e29,null))['catch'](handleError(_0x214e29,null));};exports[_0x3b93('0x17')]=function(_0x2d326c,_0x597386){return db[_0x3b93('0x1d')][_0x3b93('0x2f')]({'where':{'id':_0x2d326c[_0x3b93('0x26')]['id']}})[_0x3b93('0x16')](handleEntityNotFound(_0x597386,null))[_0x3b93('0x16')](removeEntity(_0x597386,null))[_0x3b93('0x25')](handleError(_0x597386,null));};exports[_0x3b93('0x32')]=function(_0x625922,_0x13a7e5){return db[_0x3b93('0x1d')][_0x3b93('0x32')]()[_0x3b93('0x16')](respondWithResult(_0x13a7e5,null))[_0x3b93('0x25')](handleError(_0x13a7e5,null));};exports[_0x3b93('0x33')]=function(_0x1fb7a1,_0x45a9fd){return db['SmsMessage'][_0x3b93('0x2f')]({'where':{'id':_0x1fb7a1[_0x3b93('0x26')]['id']}})[_0x3b93('0x16')](handleEntityNotFound(_0x45a9fd,null))[_0x3b93('0x16')](function(_0x3fe548){if(_0x3fe548){return _0x3fe548[_0x3b93('0x33')](_0x1fb7a1['body']['ids'],_[_0x3b93('0x34')](_0x1fb7a1['body'],['ids','id'])||{});}})[_0x3b93('0x16')](respondWithResult(_0x45a9fd,null))[_0x3b93('0x25')](handleError(_0x45a9fd,null));};exports[_0x3b93('0x35')]=function(_0x3cc8ca,_0x835477){var _0x401df5={'raw':![],'where':{}};var _0x2be17a={};var _0xaa3496={'count':0x0,'rows':[]};return db['SmsInteraction'][_0x3b93('0x36')]({'where':{'id':_0x3cc8ca[_0x3b93('0x26')]['id']}})[_0x3b93('0x16')](handleEntityNotFound(_0x835477,null))[_0x3b93('0x16')](function(_0x2784cb){if(_0x2784cb){_0x2be17a[_0x3b93('0x27')]=_['keys'](db['SmsMessage'][_0x3b93('0x1e')]);_0x2be17a['query']=_[_0x3b93('0x28')](_0x3cc8ca[_0x3b93('0x24')]);_0x2be17a[_0x3b93('0x29')]=_[_0x3b93('0x2a')](_0x2be17a[_0x3b93('0x27')],_0x2be17a['query']);_0x401df5[_0x3b93('0x2b')]=_[_0x3b93('0x2a')](_0x2be17a[_0x3b93('0x27')],qs[_0x3b93('0x2c')](_0x3cc8ca[_0x3b93('0x24')]['fields']));_0x401df5[_0x3b93('0x2b')]=_0x401df5[_0x3b93('0x2b')][_0x3b93('0x37')]?_0x401df5[_0x3b93('0x2b')]:_0x2be17a[_0x3b93('0x27')];if(!_0x3cc8ca[_0x3b93('0x24')][_0x3b93('0x38')](_0x3b93('0x39'))){_0x401df5[_0x3b93('0x3a')]=qs[_0x3b93('0x3a')](_0x3cc8ca[_0x3b93('0x24')]['limit']);_0x401df5[_0x3b93('0x11')]=qs[_0x3b93('0x11')](_0x3cc8ca[_0x3b93('0x24')][_0x3b93('0x11')]);}_0x401df5[_0x3b93('0x3b')]=qs[_0x3b93('0x3c')](_0x3cc8ca[_0x3b93('0x24')][_0x3b93('0x3c')]);_0x401df5['where']=qs[_0x3b93('0x29')](_[_0x3b93('0x3d')](_0x3cc8ca[_0x3b93('0x24')],_0x2be17a[_0x3b93('0x29')]));_0x401df5[_0x3b93('0x3e')][_0x3b93('0x3f')]=_0x2784cb['id'];if(_0x3cc8ca['query'][_0x3b93('0x40')]){_0x401df5[_0x3b93('0x3e')]=_['merge'](_0x401df5[_0x3b93('0x3e')],{'$or':_[_0x3b93('0x1c')](_0x401df5[_0x3b93('0x2b')],function(_0x107616){var _0xafa19a={};_0xafa19a[_0x107616]={'$like':'%'+_0x3cc8ca['query'][_0x3b93('0x40')]+'%'};return _0xafa19a;})});}if(_0x3cc8ca['query'][_0x3b93('0x41')]){var _0x2a4bcc=_0x3cc8ca['query'][_0x3b93('0x41')][_0x3b93('0x42')](',');var _0x2c7ee1={};_0x2c7ee1[_0x2a4bcc[0x0]]={'$gte':moment(_0x2a4bcc[0x1])[_0x3b93('0x43')](_0x3b93('0x44'))};_0x401df5['where']=_[_0x3b93('0x45')](_0x401df5[_0x3b93('0x3e')],_0x2c7ee1);}_0x401df5=_[_0x3b93('0x45')]({},_0x401df5,_0x3cc8ca[_0x3b93('0x2e')]);return db['SmsMessage'][_0x3b93('0x13')]({'where':_0x401df5['where']})[_0x3b93('0x16')](function(_0x226512){_0xaa3496['count']=_0x226512;if(_0x3cc8ca['query'][_0x3b93('0x2d')]){_0x401df5[_0x3b93('0x46')]=[{'all':!![]}];}return db[_0x3b93('0x47')][_0x3b93('0x48')](_0x401df5);})['then'](function(_0x2098c7){_0xaa3496[_0x3b93('0x49')]=_0x2098c7;return _0xaa3496;});}})['then'](respondWithFilteredResult(_0x835477,_0x401df5))[_0x3b93('0x25')](handleError(_0x835477,null));};exports[_0x3b93('0x4a')]=function(_0x7f61f3,_0x5405a4){return db[_0x3b93('0x1d')]['find']({'where':{'id':_0x7f61f3[_0x3b93('0x26')]['id']}})[_0x3b93('0x16')](handleEntityNotFound(_0x5405a4,null))[_0x3b93('0x16')](function(_0x4ec834){if(_0x4ec834){return _0x4ec834[_0x3b93('0x4b')](_0x7f61f3[_0x3b93('0x31')]['ids'],_[_0x3b93('0x34')](_0x7f61f3[_0x3b93('0x31')],[_0x3b93('0x4c'),'id'])||{})[_0x3b93('0x4d')](function(){return db[_0x3b93('0x4e')]['findAll']({'attributes':['id','name',_0x3b93('0x4f')],'where':{'id':_0x7f61f3[_0x3b93('0x31')][_0x3b93('0x4c')]}});})['then'](function(_0x449493){socket[_0x3b93('0x50')](_0x3b93('0x51'),{'id':Number(_0x7f61f3[_0x3b93('0x26')]['id']),'tags':_0x449493||[]});return{'id':Number(_0x7f61f3[_0x3b93('0x26')]['id']),'tags':_0x449493||[]};});}})['then'](respondWithResult(_0x5405a4,null))[_0x3b93('0x25')](handleError(_0x5405a4,null));};exports['removeTags']=function(_0x158dad,_0x1af225){return db[_0x3b93('0x1d')][_0x3b93('0x2f')]({'where':{'id':_0x158dad[_0x3b93('0x26')]['id']}})['then'](handleEntityNotFound(_0x1af225,null))[_0x3b93('0x16')](function(_0x5eb910){if(_0x5eb910){return _0x5eb910[_0x3b93('0x52')](_0x158dad['query'][_0x3b93('0x4c')]);}})[_0x3b93('0x16')](respondWithStatusCode(_0x1af225,null))['catch'](handleError(_0x1af225,null));};exports['download']=function(_0x4d96e1,_0x456596){var _0x484c6f=moment()[_0x3b93('0x53')]()[_0x3b93('0x54')]();var _0x3dfe03=path[_0x3b93('0x55')](config[_0x3b93('0x56')],_0x3b93('0x57'),'files',_0x3b93('0x58'));var _0x131915=path[_0x3b93('0x55')](_0x3dfe03,_0x484c6f);var _0x2f0b82=util[_0x3b93('0x43')](_0x3b93('0x59'),_0x4d96e1['params']['id'],_0x484c6f);var _0x2f5b1d=path['join'](_0x3dfe03,_0x2f0b82);var _0x1bd2f8=[];_0x1bd2f8['push']({'model':db[_0x3b93('0x5a')],'as':_0x3b93('0x5a'),'attributes':['id','fullname'],'raw':!![]});_0x1bd2f8[_0x3b93('0x5b')]({'model':db[_0x3b93('0x5c')],'as':_0x3b93('0x5d'),'attributes':['id',_0x3b93('0x5e'),'lastName'],'raw':!![]});var _0x1ebd66=[{'model':db['SmsMessage'],'as':_0x3b93('0x5f'),'attributes':['id',_0x3b93('0x31'),'createdAt',_0x3b93('0x60'),_0x3b93('0x61'),_0x3b93('0x62')],'include':_0x1bd2f8}];_0x1ebd66[_0x3b93('0x5b')]({'model':db[_0x3b93('0x63')],'as':'Account','attributes':['id',_0x3b93('0x1b')]});_0x1ebd66['push']({'model':db['User'],'as':_0x3b93('0x64'),'attributes':['id',_0x3b93('0x65')]});return db[_0x3b93('0x1d')][_0x3b93('0x2f')]({'where':{'id':_0x4d96e1['params']['id']},'include':_0x1ebd66})[_0x3b93('0x16')](handleEntityNotFound(_0x456596,null))['then'](function(_0x1b8739){if(_0x1b8739){var _0x2d661f=_0x1b8739[_0x3b93('0x66')]({'plain':!![]});fs[_0x3b93('0x67')](_0x131915);var _0xe2fa8e={'channel':'Sms','account':_0x2d661f[_0x3b93('0x68')][_0x3b93('0x1b')],'agent':_0x2d661f[_0x3b93('0x64')]?_0x2d661f[_0x3b93('0x64')][_0x3b93('0x65')]:_0x3b93('0x69'),'createdAt':moment(_0x2d661f[_0x3b93('0x6a')])[_0x3b93('0x43')]('YYYY-MM-DD\x20HH:mm:ss')[_0x3b93('0x54')](),'closedAt':_0x2d661f[_0x3b93('0x6b')]?moment(_0x2d661f['closedAt'])[_0x3b93('0x43')](_0x3b93('0x44'))[_0x3b93('0x54')]():'','disposition':_0x2d661f[_0x3b93('0x6c')],'messages':_(_0x2d661f[_0x3b93('0x5f')])[_0x3b93('0x40')]({'secret':![]})[_0x3b93('0x1c')](function(_0x28745b){return{'date':moment(_0x28745b[_0x3b93('0x6a')])['format'](_0x3b93('0x44'))[_0x3b93('0x54')](),'sender':_0x28745b[_0x3b93('0x60')]==='out'?_0x28745b['User']?_0x28745b['User'][_0x3b93('0x65')]:_0x3b93('0x6d'):_0x28745b[_0x3b93('0x5d')]['firstName']+(_0x28745b[_0x3b93('0x5d')][_0x3b93('0x6e')]?'\x20'+_0x28745b[_0x3b93('0x5d')]['lastName']:''),'body':_0x28745b['body'],'direction':_0x28745b['direction']==='out'?'A':'C','secret':_0x28745b['secret'],'read':_0x28745b['read']};})[_0x3b93('0x6f')]()};return ejs['renderFile'](path['join'](config[_0x3b93('0x56')],_0x3b93('0x57'),_0x3b93('0x70'),_0x3b93('0x71')),{'interaction':_0xe2fa8e})[_0x3b93('0x16')](function(_0x353f6c){var _0x2537fd=path['join'](_0x131915,'transcript-'+_0x2d661f['id']+'-'+_0x484c6f+_0x3b93('0x72'));var _0x145769={'path':_0x2537fd,'channel':'Sms','interactionId':_0x2d661f['id']};return pdf[_0x3b93('0x73')](_0x353f6c,_0x145769);})[_0x3b93('0x16')](function(){return new BPromise(function(_0x5a0d8a,_0x233a00){zipdir(_0x131915,{'saveTo':_0x2f5b1d},function(_0x1c6771,_0x5a0592){if(_0x1c6771)return _0x233a00(_0x1c6771);return _0x5a0d8a(_0x5a0592);});})[_0x3b93('0x16')](function(){return new BPromise(function(_0x2b95bd,_0x2f494e){rimraf(_0x131915,function(_0x52ac51){if(_0x52ac51)_0x2f494e(_0x52ac51);return _0x2b95bd();});});})['then'](function(){return _0x456596[_0x3b93('0x74')](_0x2f5b1d,_0x2f0b82,function(_0xe2de55){if(_0xe2de55){console['log']('err',_0xe2de55);}else{fs[_0x3b93('0x75')](_0x2f5b1d);}});});});}else{return _0x456596[_0x3b93('0xf')](0xc8);}})['catch'](handleError(_0x456596,null));};
\ No newline at end of file
+var _0x8922=['destroy','then','stack','map','SmsInteraction','fieldName','type','key','getOptions','findAll','query','catch','show','params','keys','rawAttributes','filters','intersection','model','attributes','fields','length','merge','options','create','body','find','describe','SmsMessage','addMessage','ids','omit','findOne','nolimit','order','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','setTags','spread','name','color','removeTags','unix','toString','server','join','push','User','fullname','CmContact','lastName','Messages','createdAt','direction','secret','read','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','closed','disposition','out','System','Contact','value','renderFile','root','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','../../components/interaction/service','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','./smsInteraction.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','set','update'];(function(_0x41b49d,_0x2379c4){var _0x158c70=function(_0xb94449){while(--_0xb94449){_0x41b49d['push'](_0x41b49d['shift']());}};_0x158c70(++_0x2379c4);}(_0x8922,0xce));var _0x2892=function(_0x5ea6ca,_0xbfc25a){_0x5ea6ca=_0x5ea6ca-0x0;var _0x7984b0=_0x8922[_0x5ea6ca];return _0x7984b0;};'use strict';var rimraf=require(_0x2892('0x0'));var zipdir=require(_0x2892('0x1'));var moment=require(_0x2892('0x2'));var BPromise=require(_0x2892('0x3'));var util=require(_0x2892('0x4'));var path=require(_0x2892('0x5'));var ejs=require(_0x2892('0x6'));var fs=require('fs');var _=require(_0x2892('0x7'));var Redis=require('ioredis');var interaction=require(_0x2892('0x8'));var qs=require('../../components/parsers/qs');var pdf=require(_0x2892('0x9'));var logger=require(_0x2892('0xa'))(_0x2892('0xb'));var config=require(_0x2892('0xc'));var db=require(_0x2892('0xd'))['db'];config[_0x2892('0xe')]=_['defaults'](config[_0x2892('0xe')],{'host':_0x2892('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2892('0x10'))[_0x2892('0x11')](socket);function respondWithStatusCode(_0x35e1d6,_0x3874bc){_0x3874bc=_0x3874bc||0xcc;return function(_0x465032){if(_0x465032){return _0x35e1d6[_0x2892('0x12')](_0x3874bc);}return _0x35e1d6[_0x2892('0x13')](_0x3874bc)[_0x2892('0x14')]();};}function respondWithResult(_0x33f5f2,_0x3c83c0){_0x3c83c0=_0x3c83c0||0xc8;return function(_0x47123f){if(_0x47123f){return _0x33f5f2[_0x2892('0x13')](_0x3c83c0)[_0x2892('0x15')](_0x47123f);}};}function respondWithFilteredResult(_0x5342fe,_0x4a2a57){return function(_0x3790f0){if(_0x3790f0){var _0x87cd30=typeof _0x4a2a57['offset']==='undefined'&&typeof _0x4a2a57[_0x2892('0x16')]===_0x2892('0x17');var _0x563684=_0x3790f0[_0x2892('0x18')];var _0x46da51=_0x87cd30?0x0:_0x4a2a57[_0x2892('0x19')];var _0x57f271=_0x87cd30?_0x3790f0[_0x2892('0x18')]:_0x4a2a57[_0x2892('0x19')]+_0x4a2a57[_0x2892('0x16')];var _0x33dab1;if(_0x57f271>=_0x563684){_0x57f271=_0x563684;_0x33dab1=0xc8;}else{_0x33dab1=0xce;}_0x5342fe['status'](_0x33dab1);return _0x5342fe[_0x2892('0x1a')]('Content-Range',_0x46da51+'-'+_0x57f271+'/'+_0x563684)['json'](_0x3790f0);}return null;};}function saveUpdates(_0x35fc05){return function(_0x220a52){if(_0x220a52){return _0x220a52[_0x2892('0x1b')](_0x35fc05)['then'](function(_0x532bfc){return _0x532bfc;});}return null;};}function removeEntity(_0x3e8d21){return function(_0x443bff){if(_0x443bff){return _0x443bff[_0x2892('0x1c')]()[_0x2892('0x1d')](function(){_0x3e8d21[_0x2892('0x13')](0xcc)[_0x2892('0x14')]();});}};}function handleEntityNotFound(_0x4a8aaf){return function(_0x21da1a){if(!_0x21da1a){_0x4a8aaf[_0x2892('0x12')](0x194);}return _0x21da1a;};}function handleError(_0x4940c6,_0x4ec766){_0x4ec766=_0x4ec766||0x1f4;return function(_0x41bfec){logger['error'](_0x41bfec[_0x2892('0x1e')]);if(_0x41bfec['name']){delete _0x41bfec['name'];}_0x4940c6[_0x2892('0x13')](_0x4ec766)['send'](_0x41bfec);};}exports['index']=function(_0x33c400,_0x5c52a2){var _0x46cdb6={};var _0x59570f=_[_0x2892('0x1f')](db[_0x2892('0x20')]['rawAttributes'],function(_0x430256){return{'name':_0x430256[_0x2892('0x21')],'type':_0x430256[_0x2892('0x22')][_0x2892('0x23')]};});_0x46cdb6=qs[_0x2892('0x24')](_0x59570f,_0x33c400);return interaction[_0x2892('0x25')]('sms',_0x33c400[_0x2892('0x26')],_0x33c400['user'],_0x46cdb6,_0x59570f)[_0x2892('0x1d')](respondWithFilteredResult(_0x5c52a2,_0x46cdb6))[_0x2892('0x27')](handleError(_0x5c52a2,null));};exports[_0x2892('0x28')]=function(_0x454d99,_0x3fe0cc){var _0x1bd13b={'raw':![],'where':{'id':_0x454d99[_0x2892('0x29')]['id']}},_0x43ae38={};_0x43ae38['model']=_[_0x2892('0x2a')](db[_0x2892('0x20')][_0x2892('0x2b')]);_0x43ae38['query']=_[_0x2892('0x2a')](_0x454d99[_0x2892('0x26')]);_0x43ae38[_0x2892('0x2c')]=_[_0x2892('0x2d')](_0x43ae38[_0x2892('0x2e')],_0x43ae38[_0x2892('0x26')]);_0x1bd13b[_0x2892('0x2f')]=_[_0x2892('0x2d')](_0x43ae38[_0x2892('0x2e')],qs[_0x2892('0x30')](_0x454d99[_0x2892('0x26')]['fields']));_0x1bd13b['attributes']=_0x1bd13b['attributes'][_0x2892('0x31')]?_0x1bd13b[_0x2892('0x2f')]:_0x43ae38[_0x2892('0x2e')];if(_0x454d99[_0x2892('0x26')]['includeAll']){_0x1bd13b['include']=[{'all':!![]}];}_0x1bd13b=_[_0x2892('0x32')]({},_0x1bd13b,_0x454d99[_0x2892('0x33')]);return db['SmsInteraction']['find'](_0x1bd13b)['then'](handleEntityNotFound(_0x3fe0cc,null))[_0x2892('0x1d')](respondWithResult(_0x3fe0cc,null))[_0x2892('0x27')](handleError(_0x3fe0cc,null));};exports['create']=function(_0x268ebb,_0x3322b6){return db[_0x2892('0x20')][_0x2892('0x34')](_0x268ebb[_0x2892('0x35')],{})[_0x2892('0x1d')](respondWithResult(_0x3322b6,0xc9))[_0x2892('0x27')](handleError(_0x3322b6,null));};exports['update']=function(_0x4753c7,_0x12d8c4){if(_0x4753c7[_0x2892('0x35')]['id']){delete _0x4753c7[_0x2892('0x35')]['id'];}return db[_0x2892('0x20')][_0x2892('0x36')]({'where':{'id':_0x4753c7['params']['id']}})[_0x2892('0x1d')](handleEntityNotFound(_0x12d8c4,null))[_0x2892('0x1d')](saveUpdates(_0x4753c7['body'],null))[_0x2892('0x1d')](respondWithResult(_0x12d8c4,null))['catch'](handleError(_0x12d8c4,null));};exports[_0x2892('0x1c')]=function(_0x1e76cf,_0x29ad8f){return db[_0x2892('0x20')][_0x2892('0x36')]({'where':{'id':_0x1e76cf[_0x2892('0x29')]['id']}})[_0x2892('0x1d')](handleEntityNotFound(_0x29ad8f,null))['then'](removeEntity(_0x29ad8f,null))[_0x2892('0x27')](handleError(_0x29ad8f,null));};exports[_0x2892('0x37')]=function(_0xb10298,_0x480ee4){return db[_0x2892('0x20')][_0x2892('0x37')]()[_0x2892('0x1d')](respondWithResult(_0x480ee4,null))[_0x2892('0x27')](handleError(_0x480ee4,null));};exports['addMessage']=function(_0x37e479,_0x403860){return db[_0x2892('0x38')][_0x2892('0x36')]({'where':{'id':_0x37e479[_0x2892('0x29')]['id']}})[_0x2892('0x1d')](handleEntityNotFound(_0x403860,null))['then'](function(_0x3ecadb){if(_0x3ecadb){return _0x3ecadb[_0x2892('0x39')](_0x37e479[_0x2892('0x35')][_0x2892('0x3a')],_[_0x2892('0x3b')](_0x37e479[_0x2892('0x35')],[_0x2892('0x3a'),'id'])||{});}})['then'](respondWithResult(_0x403860,null))['catch'](handleError(_0x403860,null));};exports['getMessages']=function(_0x565deb,_0x502852){var _0x43116d={'raw':![],'where':{}};var _0x482fe8={};var _0x1209f0={'count':0x0,'rows':[]};return db[_0x2892('0x20')][_0x2892('0x3c')]({'where':{'id':_0x565deb[_0x2892('0x29')]['id']}})[_0x2892('0x1d')](handleEntityNotFound(_0x502852,null))[_0x2892('0x1d')](function(_0x1588c3){if(_0x1588c3){_0x482fe8['model']=_['keys'](db[_0x2892('0x38')][_0x2892('0x2b')]);_0x482fe8[_0x2892('0x26')]=_[_0x2892('0x2a')](_0x565deb['query']);_0x482fe8[_0x2892('0x2c')]=_[_0x2892('0x2d')](_0x482fe8[_0x2892('0x2e')],_0x482fe8[_0x2892('0x26')]);_0x43116d[_0x2892('0x2f')]=_[_0x2892('0x2d')](_0x482fe8[_0x2892('0x2e')],qs[_0x2892('0x30')](_0x565deb[_0x2892('0x26')][_0x2892('0x30')]));_0x43116d[_0x2892('0x2f')]=_0x43116d[_0x2892('0x2f')][_0x2892('0x31')]?_0x43116d[_0x2892('0x2f')]:_0x482fe8[_0x2892('0x2e')];if(!_0x565deb[_0x2892('0x26')]['hasOwnProperty'](_0x2892('0x3d'))){_0x43116d[_0x2892('0x16')]=qs[_0x2892('0x16')](_0x565deb[_0x2892('0x26')][_0x2892('0x16')]);_0x43116d[_0x2892('0x19')]=qs[_0x2892('0x19')](_0x565deb[_0x2892('0x26')][_0x2892('0x19')]);}_0x43116d[_0x2892('0x3e')]=qs[_0x2892('0x3f')](_0x565deb['query'][_0x2892('0x3f')]);_0x43116d[_0x2892('0x40')]=qs[_0x2892('0x2c')](_[_0x2892('0x41')](_0x565deb[_0x2892('0x26')],_0x482fe8[_0x2892('0x2c')]));_0x43116d[_0x2892('0x40')]['SmsInteractionId']=_0x1588c3['id'];if(_0x565deb[_0x2892('0x26')][_0x2892('0x42')]){_0x43116d['where']=_['merge'](_0x43116d[_0x2892('0x40')],{'$or':_['map'](_0x43116d[_0x2892('0x2f')],function(_0x23f32c){var _0x141e3f={};_0x141e3f[_0x23f32c]={'$like':'%'+_0x565deb[_0x2892('0x26')][_0x2892('0x42')]+'%'};return _0x141e3f;})});}if(_0x565deb[_0x2892('0x26')][_0x2892('0x43')]){var _0x45b220=_0x565deb[_0x2892('0x26')][_0x2892('0x43')][_0x2892('0x44')](',');var _0x4d3594={};_0x4d3594[_0x45b220[0x0]]={'$gte':moment(_0x45b220[0x1])[_0x2892('0x45')](_0x2892('0x46'))};_0x43116d[_0x2892('0x40')]=_['merge'](_0x43116d[_0x2892('0x40')],_0x4d3594);}_0x43116d=_['merge']({},_0x43116d,_0x565deb[_0x2892('0x33')]);return db[_0x2892('0x38')][_0x2892('0x18')]({'where':_0x43116d['where']})['then'](function(_0x50369b){_0x1209f0['count']=_0x50369b;if(_0x565deb[_0x2892('0x26')]['includeAll']){_0x43116d[_0x2892('0x47')]=[{'all':!![]}];}return db['SmsMessage'][_0x2892('0x25')](_0x43116d);})[_0x2892('0x1d')](function(_0x2dd459){_0x1209f0[_0x2892('0x48')]=_0x2dd459;return _0x1209f0;});}})[_0x2892('0x1d')](respondWithFilteredResult(_0x502852,_0x43116d))[_0x2892('0x27')](handleError(_0x502852,null));};exports[_0x2892('0x49')]=function(_0x310dc1,_0x47219c){return db[_0x2892('0x20')][_0x2892('0x36')]({'where':{'id':_0x310dc1[_0x2892('0x29')]['id']}})[_0x2892('0x1d')](handleEntityNotFound(_0x47219c,null))[_0x2892('0x1d')](function(_0xe0a1b7){if(_0xe0a1b7){return _0xe0a1b7[_0x2892('0x4a')](_0x310dc1['body'][_0x2892('0x3a')],_[_0x2892('0x3b')](_0x310dc1[_0x2892('0x35')],[_0x2892('0x3a'),'id'])||{})[_0x2892('0x4b')](function(){return db['Tag'][_0x2892('0x25')]({'attributes':['id',_0x2892('0x4c'),_0x2892('0x4d')],'where':{'id':_0x310dc1[_0x2892('0x35')][_0x2892('0x3a')]}});})[_0x2892('0x1d')](function(_0xfb194f){socket['emit']('smsInteractionTags:save',{'id':Number(_0x310dc1[_0x2892('0x29')]['id']),'tags':_0xfb194f||[]});return{'id':Number(_0x310dc1[_0x2892('0x29')]['id']),'tags':_0xfb194f||[]};});}})['then'](respondWithResult(_0x47219c,null))[_0x2892('0x27')](handleError(_0x47219c,null));};exports[_0x2892('0x4e')]=function(_0x473fd8,_0x3f95b5){return db['SmsInteraction'][_0x2892('0x36')]({'where':{'id':_0x473fd8[_0x2892('0x29')]['id']}})[_0x2892('0x1d')](handleEntityNotFound(_0x3f95b5,null))['then'](function(_0x4df450){if(_0x4df450){return _0x4df450[_0x2892('0x4e')](_0x473fd8['query'][_0x2892('0x3a')]);}})[_0x2892('0x1d')](respondWithStatusCode(_0x3f95b5,null))['catch'](handleError(_0x3f95b5,null));};exports['download']=function(_0x2b7634,_0x437884){var _0x1bd2e7=moment()[_0x2892('0x4f')]()[_0x2892('0x50')]();var _0x245722=path['join'](config['root'],_0x2892('0x51'),'files','tmp');var _0x45fcfb=path['join'](_0x245722,_0x1bd2e7);var _0x36d758=util[_0x2892('0x45')]('transcript-%d-%s.zip',_0x2b7634[_0x2892('0x29')]['id'],_0x1bd2e7);var _0x3047c3=path[_0x2892('0x52')](_0x245722,_0x36d758);var _0x5058cd=[];_0x5058cd[_0x2892('0x53')]({'model':db['User'],'as':_0x2892('0x54'),'attributes':['id',_0x2892('0x55')],'raw':!![]});_0x5058cd[_0x2892('0x53')]({'model':db[_0x2892('0x56')],'as':'Contact','attributes':['id','firstName',_0x2892('0x57')],'raw':!![]});var _0x2ea64f=[{'model':db[_0x2892('0x38')],'as':_0x2892('0x58'),'attributes':['id',_0x2892('0x35'),_0x2892('0x59'),_0x2892('0x5a'),_0x2892('0x5b'),_0x2892('0x5c')],'include':_0x5058cd}];_0x2ea64f[_0x2892('0x53')]({'model':db[_0x2892('0x5d')],'as':_0x2892('0x5e'),'attributes':['id','name']});_0x2ea64f[_0x2892('0x53')]({'model':db[_0x2892('0x54')],'as':_0x2892('0x5f'),'attributes':['id',_0x2892('0x55')]});return db[_0x2892('0x20')][_0x2892('0x36')]({'where':{'id':_0x2b7634['params']['id']},'include':_0x2ea64f})[_0x2892('0x1d')](handleEntityNotFound(_0x437884,null))['then'](function(_0x3046e5){if(_0x3046e5){var _0x5c63d3=_0x3046e5[_0x2892('0x60')]({'plain':!![]});fs[_0x2892('0x61')](_0x45fcfb);var _0x139dbf={'channel':_0x2892('0x62'),'account':_0x5c63d3[_0x2892('0x5e')]['name'],'agent':_0x5c63d3['Owner']?_0x5c63d3['Owner'][_0x2892('0x55')]:_0x2892('0x63'),'createdAt':moment(_0x5c63d3['createdAt'])[_0x2892('0x45')](_0x2892('0x46'))[_0x2892('0x50')](),'closedAt':_0x5c63d3[_0x2892('0x64')]?moment(_0x5c63d3['closedAt'])[_0x2892('0x45')](_0x2892('0x46'))['toString']():'','disposition':_0x5c63d3[_0x2892('0x65')],'messages':_(_0x5c63d3[_0x2892('0x58')])[_0x2892('0x42')]({'secret':![]})[_0x2892('0x1f')](function(_0x287dd2){return{'date':moment(_0x287dd2[_0x2892('0x59')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x2892('0x50')](),'sender':_0x287dd2['direction']===_0x2892('0x66')?_0x287dd2[_0x2892('0x54')]?_0x287dd2[_0x2892('0x54')][_0x2892('0x55')]:_0x2892('0x67'):_0x287dd2['Contact']['firstName']+(_0x287dd2[_0x2892('0x68')][_0x2892('0x57')]?'\x20'+_0x287dd2[_0x2892('0x68')][_0x2892('0x57')]:''),'body':_0x287dd2[_0x2892('0x35')],'direction':_0x287dd2[_0x2892('0x5a')]===_0x2892('0x66')?'A':'C','secret':_0x287dd2[_0x2892('0x5b')],'read':_0x287dd2[_0x2892('0x5c')]};})[_0x2892('0x69')]()};return ejs[_0x2892('0x6a')](path[_0x2892('0x52')](config[_0x2892('0x6b')],_0x2892('0x51'),_0x2892('0x6c'),_0x2892('0x6d')),{'interaction':_0x139dbf})[_0x2892('0x1d')](function(_0x5a4a61){var _0x10c3bf=path[_0x2892('0x52')](_0x45fcfb,_0x2892('0x6e')+_0x5c63d3['id']+'-'+_0x1bd2e7+_0x2892('0x6f'));var _0x40e130={'path':_0x10c3bf,'channel':_0x2892('0x62'),'interactionId':_0x5c63d3['id']};return pdf[_0x2892('0x70')](_0x5a4a61,_0x40e130);})['then'](function(){return new BPromise(function(_0x542a7d,_0x14c79a){zipdir(_0x45fcfb,{'saveTo':_0x3047c3},function(_0x149ab4,_0x43b92d){if(_0x149ab4)return _0x14c79a(_0x149ab4);return _0x542a7d(_0x43b92d);});})['then'](function(){return new BPromise(function(_0xbb7ab,_0x1ee644){rimraf(_0x45fcfb,function(_0x4e6113){if(_0x4e6113)_0x1ee644(_0x4e6113);return _0xbb7ab();});});})[_0x2892('0x1d')](function(){return _0x437884[_0x2892('0x71')](_0x3047c3,_0x36d758,function(_0x4f4fe4){if(_0x4f4fe4){console[_0x2892('0x72')](_0x2892('0x73'),_0x4f4fe4);}else{fs[_0x2892('0x74')](_0x3047c3);}});});});}else{return _0x437884['sendStatus'](0xc8);}})[_0x2892('0x27')](handleError(_0x437884,null));};
\ No newline at end of file
index 79559a7..40a658b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['save','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners'];(function(_0x2a1a3d,_0x1a82fe){var _0x25728c=function(_0x449b64){while(--_0x449b64){_0x2a1a3d['push'](_0x2a1a3d['shift']());}};_0x25728c(++_0x1a82fe);}(_0x0972,0x64));var _0x2097=function(_0x45d72d,_0x247ff9){_0x45d72d=_0x45d72d-0x0;var _0x4a93bb=_0x0972[_0x45d72d];return _0x4a93bb;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0x2097('0x0'))['db']['SmsInteraction'];var SmsMessage=require(_0x2097('0x0'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x2097('0x1')](0x0);var events={'afterCreate':_0x2097('0x2'),'afterUpdate':'update','afterDestroy':_0x2097('0x3')};function emitEvent(_0x431d1c){return function(_0xe6fbae,_0x1a7d26,_0x2f84d8){_0xe6fbae[_0x2097('0x4')]({'attributes':['id'],'raw':!![]})[_0x2097('0x5')](function(_0x59739f){_0xe6fbae[_0x2097('0x6')](_0x2097('0x7'),_0x59739f[_0x2097('0x8')](function(_0x1d94e2){return{'id':_0x1d94e2['id']};}));return SmsMessage[_0x2097('0x9')]({'where':{'SmsInteractionId':_0xe6fbae['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2e0024){_0xe6fbae[_0x2097('0x6')](_0x2097('0xa'),_0x2e0024[_0x2097('0xb')]);SmsInteractionEvents[_0x2097('0xc')](_0x431d1c+':'+_0xe6fbae['id'],_0xe6fbae);SmsInteractionEvents[_0x2097('0xc')](_0x431d1c,_0xe6fbae);_0x2f84d8(null);})[_0x2097('0xd')](_0x2f84d8(null));};}for(var e in events){if(events[_0x2097('0xe')](e)){var event=events[e];SmsInteraction[_0x2097('0xf')](e,emitEvent(event));}}module[_0x2097('0x10')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x8603=['update','remove','getUsers','then','setDataValue','findAll','unreadMessages','emit','hasOwnProperty','hook','../../mysqldb','SmsInteraction','save'];(function(_0x43e4cc,_0x3a58f4){var _0x1b314b=function(_0x58cbdd){while(--_0x58cbdd){_0x43e4cc['push'](_0x43e4cc['shift']());}};_0x1b314b(++_0x3a58f4);}(_0x8603,0x190));var _0x3860=function(_0x13c304,_0x4791de){_0x13c304=_0x13c304-0x0;var _0x12696e=_0x8603[_0x13c304];return _0x12696e;};'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
index 97df936..1ebc5f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f5=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsInteraction','sms_interactions','closed','format'];(function(_0x48f5f7,_0x56d17e){var _0x18b17f=function(_0x1fa138){while(--_0x1fa138){_0x48f5f7['push'](_0x48f5f7['shift']());}};_0x18b17f(++_0x56d17e);}(_0x88f5,0x87));var _0x588f=function(_0x2eaef6,_0x459d83){_0x2eaef6=_0x2eaef6-0x0;var _0x2e7b46=_0x88f5[_0x2eaef6];return _0x2e7b46;};'use strict';var _=require('lodash');var util=require(_0x588f('0x0'));var logger=require(_0x588f('0x1'))(_0x588f('0x2'));var moment=require(_0x588f('0x3'));var BPromise=require(_0x588f('0x4'));var rp=require(_0x588f('0x5'));var fs=require('fs');var path=require(_0x588f('0x6'));var rimraf=require(_0x588f('0x7'));var config=require(_0x588f('0x8'));var attributes=require('./smsInteraction.attributes');module[_0x588f('0x9')]=function(_0xa1dc75,_0x45ddc6){return _0xa1dc75[_0x588f('0xa')](_0x588f('0xb'),attributes,{'tableName':_0x588f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2ea9ca,_0x2859c3,_0x647903){if(_0x2ea9ca['changed'](_0x588f('0xd'))){_0x2ea9ca['closedAt']=moment()[_0x588f('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x647903(null,_0x2ea9ca);}}});};
\ No newline at end of file
+var _0x71c2=['closed','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed'];(function(_0x506be9,_0x3d617d){var _0x40c1a3=function(_0xfb8397){while(--_0xfb8397){_0x506be9['push'](_0x506be9['shift']());}};_0x40c1a3(++_0x3d617d);}(_0x71c2,0x1ab));var _0x271c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x71c2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x271c('0x0'));var util=require(_0x271c('0x1'));var logger=require(_0x271c('0x2'))(_0x271c('0x3'));var moment=require(_0x271c('0x4'));var BPromise=require(_0x271c('0x5'));var rp=require(_0x271c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x271c('0x7'));var config=require(_0x271c('0x8'));var attributes=require(_0x271c('0x9'));module[_0x271c('0xa')]=function(_0x59ec87,_0x55649c){return _0x59ec87[_0x271c('0xb')](_0x271c('0xc'),attributes,{'tableName':_0x271c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x826f59,_0x1660a3,_0x45d7da){if(_0x826f59[_0x271c('0xe')](_0x271c('0xf'))){_0x826f59['closedAt']=moment()[_0x271c('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x45d7da(null,_0x826f59);}}});};
\ No newline at end of file
index e13f296..800a4ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82bd=['find','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','then','info','request\x20sent','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsInteraction,\x20%s,\x20%s','message','SmsInteraction','update','body','raw','options','where','limit','debug','catch','UpdateSmsInteraction'];(function(_0x4fc476,_0xb7cdfd){var _0x2de7d8=function(_0x5c4f8f){while(--_0x5c4f8f){_0x4fc476['push'](_0x4fc476['shift']());}};_0x2de7d8(++_0xb7cdfd);}(_0x82bd,0x1b3));var _0xd82b=function(_0x51b1a5,_0x285a4f){_0x51b1a5=_0x51b1a5-0x0;var _0x15c738=_0x82bd[_0x51b1a5];return _0x15c738;};'use strict';var _=require(_0xd82b('0x0'));var util=require(_0xd82b('0x1'));var moment=require('moment');var BPromise=require(_0xd82b('0x2'));var rs=require(_0xd82b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd82b('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd82b('0x5'));var config=require(_0xd82b('0x6'));var jayson=require(_0xd82b('0x7'));var client=jayson[_0xd82b('0x8')]['http']({'port':0x232a});config[_0xd82b('0x9')]=_[_0xd82b('0xa')](config[_0xd82b('0x9')],{'host':_0xd82b('0xb'),'port':0x18eb});var socket=require(_0xd82b('0xc'))(new Redis(config[_0xd82b('0x9')]));require(_0xd82b('0xd'))['register'](socket);function respondWithRpcPromise(_0x9ae075,_0x563ac5,_0x39794b){return new BPromise(function(_0x3b4811,_0x2d9095){return client['request'](_0x9ae075,_0x39794b)[_0xd82b('0xe')](function(_0x579cde){logger[_0xd82b('0xf')]('SmsInteraction,\x20%s,\x20%s',_0x563ac5,_0xd82b('0x10'));logger['debug'](_0xd82b('0x11'),_0x563ac5,'request\x20sent',JSON[_0xd82b('0x12')](_0x579cde));if(_0x579cde[_0xd82b('0x13')]){if(_0x579cde['error'][_0xd82b('0x14')]===0x1f4){logger[_0xd82b('0x13')](_0xd82b('0x15'),_0x563ac5,_0x579cde['error'][_0xd82b('0x16')]);return _0x2d9095(_0x579cde['error'][_0xd82b('0x16')]);}logger['error'](_0xd82b('0x15'),_0x563ac5,_0x579cde['error'][_0xd82b('0x16')]);return _0x3b4811(_0x579cde[_0xd82b('0x13')]['message']);}else{logger['info'](_0xd82b('0x15'),_0x563ac5,_0xd82b('0x10'));_0x3b4811(_0x579cde['result'][_0xd82b('0x16')]);}})['catch'](function(_0x22a113){logger[_0xd82b('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x563ac5,_0x22a113);_0x2d9095(_0x22a113);});});}exports['UpdateSmsInteraction']=function(_0x241d80){var _0x21854d=this;return new Promise(function(_0x4967f1,_0x14afdb){return db[_0xd82b('0x17')][_0xd82b('0x18')](_0x241d80[_0xd82b('0x19')],{'raw':_0x241d80['options']?_0x241d80['options'][_0xd82b('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x241d80[_0xd82b('0x1b')]?_0x241d80[_0xd82b('0x1b')][_0xd82b('0x1c')]||null:null,'attributes':_0x241d80[_0xd82b('0x1b')]?_0x241d80[_0xd82b('0x1b')]['attributes']||null:null,'limit':_0x241d80['options']?_0x241d80[_0xd82b('0x1b')][_0xd82b('0x1d')]||null:null})[_0xd82b('0xe')](function(_0x3ada45){logger[_0xd82b('0xf')]('UpdateSmsInteraction',_0x241d80);logger[_0xd82b('0x1e')]('UpdateSmsInteraction',_0x241d80,JSON[_0xd82b('0x12')](_0x3ada45));_0x4967f1(_0x3ada45);})[_0xd82b('0x1f')](function(_0x33d002){logger[_0xd82b('0x13')](_0xd82b('0x20'),_0x33d002[_0xd82b('0x16')],_0x241d80);_0x14afdb(_0x21854d[_0xd82b('0x13')](0x1f4,_0x33d002[_0xd82b('0x16')]));});});};exports['AddTagsToSmsInteraction']=function(_0x4cb1ce){return new Promise(function(_0x15a7be,_0x54a0a4){return db[_0xd82b('0x17')][_0xd82b('0x21')]({'where':_0x4cb1ce[_0xd82b('0x1b')]?_0x4cb1ce[_0xd82b('0x1b')][_0xd82b('0x1c')]||null:null})['then'](function(_0x5f56aa){if(_0x5f56aa){return _0x5f56aa[_0xd82b('0x22')](_0x4cb1ce[_0xd82b('0x19')][_0xd82b('0x23')],_[_0xd82b('0x24')](_0x4cb1ce[_0xd82b('0x19')],[_0xd82b('0x23'),'id'])||{});}})[_0xd82b('0x25')](function(_0x5e91fe){logger[_0xd82b('0xf')]('AddTags',_0x4cb1ce);logger[_0xd82b('0x1e')](_0xd82b('0x26'),_0x4cb1ce,JSON['stringify'](_0x5e91fe));_0x15a7be(_0x5e91fe);})[_0xd82b('0x1f')](function(_0x792b27){logger[_0xd82b('0x13')](_0xd82b('0x26'),_0x792b27[_0xd82b('0x16')],_0x4cb1ce);_0x54a0a4(_this[_0xd82b('0x13')](0x1f4,_0x792b27[_0xd82b('0x16')]));});});};
\ No newline at end of file
+var _0x577e=['limit','then','stringify','AddTagsToSmsInteraction','find','ids','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./smsInteraction.socket','register','request','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where'];(function(_0x4133f3,_0x1fc472){var _0x2ca5c8=function(_0x400f3d){while(--_0x400f3d){_0x4133f3['push'](_0x4133f3['shift']());}};_0x2ca5c8(++_0x1fc472);}(_0x577e,0xac));var _0xe577=function(_0x3b9d5f,_0x2e9039){_0x3b9d5f=_0x3b9d5f-0x0;var _0x39924e=_0x577e[_0x3b9d5f];return _0x39924e;};'use strict';var _=require(_0xe577('0x0'));var util=require('util');var moment=require(_0xe577('0x1'));var BPromise=require(_0xe577('0x2'));var rs=require(_0xe577('0x3'));var fs=require('fs');var Redis=require(_0xe577('0x4'));var db=require(_0xe577('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe577('0x6'))(_0xe577('0x7'));var config=require(_0xe577('0x8'));var jayson=require(_0xe577('0x9'));var client=jayson[_0xe577('0xa')][_0xe577('0xb')]({'port':0x232a});config[_0xe577('0xc')]=_[_0xe577('0xd')](config[_0xe577('0xc')],{'host':_0xe577('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe577('0xf'))[_0xe577('0x10')](socket);function respondWithRpcPromise(_0x3c30e2,_0x28052c,_0x6a04c3){return new BPromise(function(_0x20f7ea,_0x4b7f42){return client[_0xe577('0x11')](_0x3c30e2,_0x6a04c3)['then'](function(_0xcea33a){logger[_0xe577('0x12')](_0xe577('0x13'),_0x28052c,_0xe577('0x14'));logger[_0xe577('0x15')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x28052c,'request\x20sent',JSON['stringify'](_0xcea33a));if(_0xcea33a[_0xe577('0x16')]){if(_0xcea33a[_0xe577('0x16')][_0xe577('0x17')]===0x1f4){logger[_0xe577('0x16')]('SmsInteraction,\x20%s,\x20%s',_0x28052c,_0xcea33a[_0xe577('0x16')][_0xe577('0x18')]);return _0x4b7f42(_0xcea33a[_0xe577('0x16')][_0xe577('0x18')]);}logger[_0xe577('0x16')](_0xe577('0x13'),_0x28052c,_0xcea33a[_0xe577('0x16')][_0xe577('0x18')]);return _0x20f7ea(_0xcea33a[_0xe577('0x16')][_0xe577('0x18')]);}else{logger['info']('SmsInteraction,\x20%s,\x20%s',_0x28052c,_0xe577('0x14'));_0x20f7ea(_0xcea33a['result'][_0xe577('0x18')]);}})[_0xe577('0x19')](function(_0x116a31){logger[_0xe577('0x16')](_0xe577('0x13'),_0x28052c,_0x116a31);_0x4b7f42(_0x116a31);});});}exports[_0xe577('0x1a')]=function(_0x5a09e5){var _0xea5f72=this;return new Promise(function(_0x13e1e7,_0x27a916){return db[_0xe577('0x1b')][_0xe577('0x1c')](_0x5a09e5[_0xe577('0x1d')],{'raw':_0x5a09e5[_0xe577('0x1e')]?_0x5a09e5[_0xe577('0x1e')][_0xe577('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a09e5[_0xe577('0x1e')]?_0x5a09e5[_0xe577('0x1e')][_0xe577('0x20')]||null:null,'attributes':_0x5a09e5[_0xe577('0x1e')]?_0x5a09e5[_0xe577('0x1e')]['attributes']||null:null,'limit':_0x5a09e5[_0xe577('0x1e')]?_0x5a09e5[_0xe577('0x1e')][_0xe577('0x21')]||null:null})[_0xe577('0x22')](function(_0x251a8c){logger[_0xe577('0x12')](_0xe577('0x1a'),_0x5a09e5);logger[_0xe577('0x15')](_0xe577('0x1a'),_0x5a09e5,JSON[_0xe577('0x23')](_0x251a8c));_0x13e1e7(_0x251a8c);})[_0xe577('0x19')](function(_0x324687){logger[_0xe577('0x16')](_0xe577('0x1a'),_0x324687[_0xe577('0x18')],_0x5a09e5);_0x27a916(_0xea5f72[_0xe577('0x16')](0x1f4,_0x324687['message']));});});};exports[_0xe577('0x24')]=function(_0x59bc0f){return new Promise(function(_0x1a6575,_0x31c4f1){return db[_0xe577('0x1b')][_0xe577('0x25')]({'where':_0x59bc0f[_0xe577('0x1e')]?_0x59bc0f[_0xe577('0x1e')]['where']||null:null})[_0xe577('0x22')](function(_0x4de991){if(_0x4de991){return _0x4de991['addTags'](_0x59bc0f[_0xe577('0x1d')][_0xe577('0x26')],_['omit'](_0x59bc0f['body'],[_0xe577('0x26'),'id'])||{});}})[_0xe577('0x27')](function(_0x27225e){logger[_0xe577('0x12')](_0xe577('0x28'),_0x59bc0f);logger[_0xe577('0x15')](_0xe577('0x28'),_0x59bc0f,JSON[_0xe577('0x23')](_0x27225e));_0x1a6575(_0x27225e);})[_0xe577('0x19')](function(_0x11ce7e){logger[_0xe577('0x16')](_0xe577('0x28'),_0x11ce7e['message'],_0x59bc0f);_0x31c4f1(_this[_0xe577('0x16')](0x1f4,_0x11ce7e[_0xe577('0x18')]));});});};
\ No newline at end of file
index ea413f5..234eed5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e8d=['emit','removeListener','register','length','./smsInteraction.events','save','remove','update'];(function(_0x3d5d27,_0x5477ac){var _0x4dcacc=function(_0x49884b){while(--_0x49884b){_0x3d5d27['push'](_0x3d5d27['shift']());}};_0x4dcacc(++_0x5477ac);}(_0x8e8d,0x1dc));var _0xd8e8=function(_0x211dea,_0x2ed55d){_0x211dea=_0x211dea-0x0;var _0x2e5d5d=_0x8e8d[_0x211dea];return _0x2e5d5d;};'use strict';var SmsInteractionEvents=require(_0xd8e8('0x0'));var events=[_0xd8e8('0x1'),_0xd8e8('0x2'),_0xd8e8('0x3')];function createListener(_0xd53cae,_0x3fa163){return function(_0x1bf81b){_0x3fa163[_0xd8e8('0x4')](_0xd53cae,_0x1bf81b);};}function removeListener(_0x437e0b,_0x59d2ba){return function(){SmsInteractionEvents[_0xd8e8('0x5')](_0x437e0b,_0x59d2ba);};}exports[_0xd8e8('0x6')]=function(_0x45789b){for(var _0x292c19=0x0,_0x592814=events[_0xd8e8('0x7')];_0x292c19<_0x592814;_0x292c19++){var _0x5119a4=events[_0x292c19];var _0xf6278d=createListener('smsInteraction:'+_0x5119a4,_0x45789b);SmsInteractionEvents['on'](_0x5119a4,_0xf6278d);}};
\ No newline at end of file
+var _0x1a27=['update','removeListener','length','smsInteraction:','./smsInteraction.events','save','remove'];(function(_0x3be455,_0x2c4438){var _0x3c8fa2=function(_0x2560a3){while(--_0x2560a3){_0x3be455['push'](_0x3be455['shift']());}};_0x3c8fa2(++_0x2c4438);}(_0x1a27,0x1af));var _0x71a2=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x1a27[_0x297fd3];return _0x2af381;};'use strict';var SmsInteractionEvents=require(_0x71a2('0x0'));var events=[_0x71a2('0x1'),_0x71a2('0x2'),_0x71a2('0x3')];function createListener(_0xf9aea2,_0x312338){return function(_0x523ece){_0x312338['emit'](_0xf9aea2,_0x523ece);};}function removeListener(_0x11374c,_0xd5702a){return function(){SmsInteractionEvents[_0x71a2('0x4')](_0x11374c,_0xd5702a);};}exports['register']=function(_0x565f27){for(var _0x3c6a54=0x0,_0x39c671=events[_0x71a2('0x5')];_0x3c6a54<_0x39c671;_0x3c6a54++){var _0x321d1c=events[_0x3c6a54];var _0x38c3e7=createListener(_0x71a2('0x6')+_0x321d1c,_0x565f27);SmsInteractionEvents['on'](_0x321d1c,_0x38c3e7);}};
\ No newline at end of file
index d77fb1e..d53bfeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98b7=['/:id/reject','reject','delete','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','sms','smsmessage:create','create','status','put','update','/:id/accept','accept'];(function(_0x206ea2,_0x3fb48f){var _0x596c16=function(_0x3ebaf5){while(--_0x3ebaf5){_0x206ea2['push'](_0x206ea2['shift']());}};_0x596c16(++_0x3fb48f);}(_0x98b7,0xc1));var _0x798b=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x98b7[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x798b('0x0'));var util=require(_0x798b('0x1'));var path=require(_0x798b('0x2'));var timeout=require(_0x798b('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x798b('0x4'));var interaction=require(_0x798b('0x5'));var config=require(_0x798b('0x6'));var controller=require(_0x798b('0x7'));router[_0x798b('0x8')]('/',auth['isAuthenticated'](),controller[_0x798b('0x9')]);router['get'](_0x798b('0xa'),auth[_0x798b('0xb')](),controller[_0x798b('0xc')]);router[_0x798b('0x8')](_0x798b('0xd'),auth['isAuthenticated'](),controller[_0x798b('0xe')]);router['post']('/',auth[_0x798b('0xb')](),interaction['tracked'](_0x798b('0xf'),_0x798b('0x10')),controller[_0x798b('0x11')]);router['post']('/:id/status',controller[_0x798b('0x12')]);router[_0x798b('0x13')](_0x798b('0xd'),auth['isAuthenticated'](),controller[_0x798b('0x14')]);router['put'](_0x798b('0x15'),auth['isAuthenticated'](),controller[_0x798b('0x16')]);router[_0x798b('0x13')](_0x798b('0x17'),auth[_0x798b('0xb')](),controller[_0x798b('0x18')]);router[_0x798b('0x19')](_0x798b('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x798b('0x1a')]=router;
\ No newline at end of file
+var _0xd2c4=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','/:id','show','post','sms','smsmessage:create','create','/:id/status','status','put','/:id/accept','/:id/reject','reject','delete','destroy'];(function(_0x3073b7,_0x38a224){var _0x509133=function(_0x3d7e15){while(--_0x3d7e15){_0x3073b7['push'](_0x3073b7['shift']());}};_0x509133(++_0x38a224);}(_0xd2c4,0xeb));var _0x4d2c=function(_0x5db313,_0x3c8f0c){_0x5db313=_0x5db313-0x0;var _0x36d503=_0xd2c4[_0x5db313];return _0x36d503;};'use strict';var multer=require(_0x4d2c('0x0'));var util=require(_0x4d2c('0x1'));var path=require('path');var timeout=require(_0x4d2c('0x2'));var express=require(_0x4d2c('0x3'));var router=express[_0x4d2c('0x4')]();var fs_extra=require(_0x4d2c('0x5'));var auth=require(_0x4d2c('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./smsMessage.controller');router[_0x4d2c('0x7')]('/',auth[_0x4d2c('0x8')](),controller[_0x4d2c('0x9')]);router[_0x4d2c('0x7')](_0x4d2c('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x4d2c('0x7')](_0x4d2c('0xb'),auth[_0x4d2c('0x8')](),controller[_0x4d2c('0xc')]);router[_0x4d2c('0xd')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x4d2c('0xe'),_0x4d2c('0xf')),controller[_0x4d2c('0x10')]);router['post'](_0x4d2c('0x11'),controller[_0x4d2c('0x12')]);router[_0x4d2c('0x13')](_0x4d2c('0xb'),auth[_0x4d2c('0x8')](),controller['update']);router[_0x4d2c('0x13')](_0x4d2c('0x14'),auth[_0x4d2c('0x8')](),controller['accept']);router['put'](_0x4d2c('0x15'),auth[_0x4d2c('0x8')](),controller[_0x4d2c('0x16')]);router[_0x4d2c('0x17')](_0x4d2c('0xb'),auth['isAuthenticated'](),controller[_0x4d2c('0x18')]);module[_0x4d2c('0x19')]=router;
\ No newline at end of file
index e268365..a9ec8ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfeb=['sequelize','exports','TEXT','medium','out','STRING','BOOLEAN'];(function(_0x362478,_0x576d3){var _0x1a701=function(_0x31a92b){while(--_0x31a92b){_0x362478['push'](_0x362478['shift']());}};_0x1a701(++_0x576d3);}(_0xcfeb,0x1b2));var _0xbcfe=function(_0x38bf16,_0x91c9ef){_0x38bf16=_0x38bf16-0x0;var _0x174af7=_0xcfeb[_0x38bf16];return _0x174af7;};'use strict';var Sequelize=require(_0xbcfe('0x0'));module[_0xbcfe('0x1')]={'body':{'type':Sequelize[_0xbcfe('0x2')](_0xbcfe('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xbcfe('0x4')),'defaultValue':_0xbcfe('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xbcfe('0x5')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xbcfe('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xbcfe('0x5')]},'providerResponse':{'type':Sequelize[_0xbcfe('0x2')]}};
\ No newline at end of file
+var _0x9ade=['out','DATE','STRING','TEXT','sequelize','exports','BOOLEAN'];(function(_0x172dca,_0xda5041){var _0x2a887f=function(_0x1a6aa5){while(--_0x1a6aa5){_0x172dca['push'](_0x172dca['shift']());}};_0x2a887f(++_0xda5041);}(_0x9ade,0x107));var _0xe9ad=function(_0x45c48f,_0x4aa891){_0x45c48f=_0x45c48f-0x0;var _0xaf5037=_0x9ade[_0x45c48f];return _0xaf5037;};'use strict';var Sequelize=require(_0xe9ad('0x0'));module[_0xe9ad('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xe9ad('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xe9ad('0x3')),'defaultValue':_0xe9ad('0x3'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xe9ad('0x4')]},'secret':{'type':Sequelize[_0xe9ad('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xe9ad('0x5')]},'providerResponse':{'type':Sequelize[_0xe9ad('0x6')]}};
\ No newline at end of file
index 5bc80b4..3de787b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd291=['SmsInteraction','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','ContactId','SELECT','contact','SmsAccount','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','indexOf','sent','delivered','Status','inspect','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./smsMessage.socket','register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','options','SmsMessage','include','rows','show','length','find','create','body','update','params','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','isNil','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject'];(function(_0x2a6268,_0x4b0429){var _0x32f1f1=function(_0xb70ae){while(--_0xb70ae){_0x2a6268['push'](_0x2a6268['shift']());}};_0x32f1f1(++_0x4b0429);}(_0xd291,0xae));var _0x1d29=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd291[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x1d29('0x0'));var rimraf=require(_0x1d29('0x1'));var zipdir=require(_0x1d29('0x2'));var jsonpatch=require(_0x1d29('0x3'));var rp=require(_0x1d29('0x4'));var moment=require(_0x1d29('0x5'));var BPromise=require(_0x1d29('0x6'));var Mustache=require(_0x1d29('0x7'));var util=require(_0x1d29('0x8'));var path=require(_0x1d29('0x9'));var sox=require(_0x1d29('0xa'));var csv=require(_0x1d29('0xb'));var ejs=require(_0x1d29('0xc'));var fs=require('fs');var fs_extra=require(_0x1d29('0xd'));var _=require(_0x1d29('0xe'));var squel=require(_0x1d29('0xf'));var crypto=require('crypto');var jsforce=require(_0x1d29('0x10'));var deskjs=require(_0x1d29('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1d29('0x12'));var Redis=require(_0x1d29('0x13'));var authService=require(_0x1d29('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x1d29('0x15'));var hardwareService=require(_0x1d29('0x16'));var logger=require(_0x1d29('0x17'))(_0x1d29('0x18'));var utils=require(_0x1d29('0x19'));var config=require(_0x1d29('0x1a'));var licenseUtil=require(_0x1d29('0x1b'));var db=require(_0x1d29('0x1c'))['db'];config[_0x1d29('0x1d')]=_['defaults'](config[_0x1d29('0x1d')],{'host':_0x1d29('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1d29('0x1f'))[_0x1d29('0x20')](socket);var jayson=require(_0x1d29('0x21'));var client=jayson[_0x1d29('0x22')][_0x1d29('0x23')]({'port':0x232c});var client9002=jayson[_0x1d29('0x22')]['http']({'port':0x232a});function respondWithRpcPromise(_0x509d92,_0x2b3201,_0x3f542e,_0x45b871){return new BPromise(function(_0xdec7dd,_0x3998fb){var _0x52f4e6=_0x45b871||client;return _0x52f4e6['request'](_0x509d92,_0x3f542e)[_0x1d29('0x24')](function(_0x599850){logger[_0x1d29('0x25')](_0x1d29('0x26'),_0x2b3201,_0x1d29('0x27'));logger[_0x1d29('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2b3201,_0x1d29('0x27'),JSON[_0x1d29('0x29')](_0x599850));if(_0x599850[_0x1d29('0x2a')]){if(_0x599850[_0x1d29('0x2a')][_0x1d29('0x2b')]===0x1f4){logger[_0x1d29('0x2a')](_0x1d29('0x26'),_0x2b3201,_0x599850[_0x1d29('0x2a')]['message']);return _0x3998fb(_0x599850[_0x1d29('0x2a')]['message']);}logger[_0x1d29('0x2a')](_0x1d29('0x26'),_0x2b3201,_0x599850[_0x1d29('0x2a')][_0x1d29('0x2c')]);return _0xdec7dd(_0x599850[_0x1d29('0x2a')][_0x1d29('0x2c')]);}else{logger[_0x1d29('0x25')]('SmsMessage,\x20%s,\x20%s',_0x2b3201,_0x1d29('0x27'));_0xdec7dd(_0x599850[_0x1d29('0x2d')][_0x1d29('0x2c')]);}})[_0x1d29('0x2e')](function(_0x34e49c){logger[_0x1d29('0x2a')]('SmsMessage,\x20%s,\x20%s',_0x2b3201,_0x34e49c);_0x3998fb(_0x34e49c);});});}function respondWithStatusCode(_0x46d048,_0x902ada){_0x902ada=_0x902ada||0xcc;return function(_0x265437){if(_0x265437){return _0x46d048[_0x1d29('0x2f')](_0x902ada);}return _0x46d048[_0x1d29('0x30')](_0x902ada)[_0x1d29('0x31')]();};}function respondWithResult(_0x33b5e6,_0x583d72){_0x583d72=_0x583d72||0xc8;return function(_0x49e167){if(_0x49e167){return _0x33b5e6[_0x1d29('0x30')](_0x583d72)[_0x1d29('0x32')](_0x49e167);}};}function respondWithFilteredResult(_0x332e97,_0xff05c5){return function(_0x1230f9){if(_0x1230f9){var _0x29d8b3=typeof _0xff05c5[_0x1d29('0x33')]===_0x1d29('0x34')&&typeof _0xff05c5['limit']===_0x1d29('0x34');var _0x1b394d=_0x1230f9[_0x1d29('0x35')];var _0x103fa7=_0x29d8b3?0x0:_0xff05c5[_0x1d29('0x33')];var _0x2aac61=_0x29d8b3?_0x1230f9[_0x1d29('0x35')]:_0xff05c5[_0x1d29('0x33')]+_0xff05c5[_0x1d29('0x36')];var _0x20f957;if(_0x2aac61>=_0x1b394d){_0x2aac61=_0x1b394d;_0x20f957=0xc8;}else{_0x20f957=0xce;}_0x332e97[_0x1d29('0x30')](_0x20f957);return _0x332e97['set'](_0x1d29('0x37'),_0x103fa7+'-'+_0x2aac61+'/'+_0x1b394d)[_0x1d29('0x32')](_0x1230f9);}return null;};}function patchUpdates(_0x5e8baa){return function(_0x27c592){try{jsonpatch[_0x1d29('0x38')](_0x27c592,_0x5e8baa,!![]);}catch(_0x231357){return BPromise['reject'](_0x231357);}return _0x27c592[_0x1d29('0x39')]();};}function saveUpdates(_0x1a0ba3,_0x18b120){return function(_0x2577b1){if(_0x2577b1){return _0x2577b1['update'](_0x1a0ba3)[_0x1d29('0x24')](function(_0x3efeaf){return _0x3efeaf;});}return null;};}function removeEntity(_0x53a826,_0x25e296){return function(_0x16e041){if(_0x16e041){return _0x16e041[_0x1d29('0x3a')]()['then'](function(){_0x53a826['status'](0xcc)[_0x1d29('0x31')]();});}};}function handleEntityNotFound(_0x4f0369,_0x342571){return function(_0x509084){if(!_0x509084){_0x4f0369[_0x1d29('0x2f')](0x194);}return _0x509084;};}function handleError(_0x54f3ff,_0x4b845c){_0x4b845c=_0x4b845c||0x1f4;return function(_0x2a72ef){logger[_0x1d29('0x2a')](_0x2a72ef[_0x1d29('0x3b')]);if(_0x2a72ef[_0x1d29('0x3c')]){delete _0x2a72ef['name'];}_0x54f3ff[_0x1d29('0x30')](_0x4b845c)[_0x1d29('0x3d')](_0x2a72ef);};}exports[_0x1d29('0x3e')]=function(_0x55bee3,_0x4f0c2c){var _0x1d7a4e={},_0x941ffd={},_0x5a5fb1={'count':0x0,'rows':[]};var _0x5a3158=_['map'](db['SmsMessage'][_0x1d29('0x3f')],function(_0x540ccb){return{'name':_0x540ccb[_0x1d29('0x40')],'type':_0x540ccb[_0x1d29('0x41')][_0x1d29('0x42')]};});_0x941ffd[_0x1d29('0x43')]=_[_0x1d29('0x44')](_0x5a3158,_0x1d29('0x3c'));_0x941ffd[_0x1d29('0x45')]=_[_0x1d29('0x46')](_0x55bee3['query']);_0x941ffd['filters']=_[_0x1d29('0x47')](_0x941ffd[_0x1d29('0x43')],_0x941ffd[_0x1d29('0x45')]);_0x1d7a4e[_0x1d29('0x48')]=_[_0x1d29('0x47')](_0x941ffd['model'],qs[_0x1d29('0x49')](_0x55bee3['query']['fields']));_0x1d7a4e[_0x1d29('0x48')]=_0x1d7a4e[_0x1d29('0x48')]['length']?_0x1d7a4e[_0x1d29('0x48')]:_0x941ffd[_0x1d29('0x43')];if(!_0x55bee3[_0x1d29('0x45')][_0x1d29('0x4a')](_0x1d29('0x4b'))){_0x1d7a4e[_0x1d29('0x36')]=qs[_0x1d29('0x36')](_0x55bee3['query'][_0x1d29('0x36')]);_0x1d7a4e[_0x1d29('0x33')]=qs[_0x1d29('0x33')](_0x55bee3['query'][_0x1d29('0x33')]);}_0x1d7a4e[_0x1d29('0x4c')]=qs['sort'](_0x55bee3[_0x1d29('0x45')]['sort']);_0x1d7a4e[_0x1d29('0x4d')]=qs[_0x1d29('0x4e')](_[_0x1d29('0x4f')](_0x55bee3[_0x1d29('0x45')],_0x941ffd[_0x1d29('0x4e')]),_0x5a3158);if(_0x55bee3[_0x1d29('0x45')][_0x1d29('0x50')]){_0x1d7a4e[_0x1d29('0x4d')]=_[_0x1d29('0x51')](_0x1d7a4e[_0x1d29('0x4d')],{'$or':_[_0x1d29('0x44')](_0x5a3158,function(_0x9c04e7){if(_0x9c04e7[_0x1d29('0x41')]!=='VIRTUAL'){var _0x5e6f0d={};_0x5e6f0d[_0x9c04e7[_0x1d29('0x3c')]]={'$like':'%'+_0x55bee3[_0x1d29('0x45')][_0x1d29('0x50')]+'%'};return _0x5e6f0d;}})});}_0x1d7a4e=_[_0x1d29('0x51')]({},_0x1d7a4e,_0x55bee3[_0x1d29('0x52')]);var _0x26bb65={'where':_0x1d7a4e[_0x1d29('0x4d')]};return db[_0x1d29('0x53')]['count'](_0x26bb65)[_0x1d29('0x24')](function(_0x161df5){_0x5a5fb1[_0x1d29('0x35')]=_0x161df5;if(_0x55bee3['query']['includeAll']){_0x1d7a4e[_0x1d29('0x54')]=[{'all':!![]}];}return db[_0x1d29('0x53')]['findAll'](_0x1d7a4e);})[_0x1d29('0x24')](function(_0x2406a2){_0x5a5fb1[_0x1d29('0x55')]=_0x2406a2;return _0x5a5fb1;})[_0x1d29('0x24')](respondWithFilteredResult(_0x4f0c2c,_0x1d7a4e))['catch'](handleError(_0x4f0c2c,null));};exports[_0x1d29('0x56')]=function(_0x172762,_0x580bfe){var _0x576685={'raw':!![],'where':{'id':_0x172762['params']['id']}},_0x49df37={};_0x49df37[_0x1d29('0x43')]=_['keys'](db[_0x1d29('0x53')][_0x1d29('0x3f')]);_0x49df37[_0x1d29('0x45')]=_[_0x1d29('0x46')](_0x172762['query']);_0x49df37[_0x1d29('0x4e')]=_[_0x1d29('0x47')](_0x49df37[_0x1d29('0x43')],_0x49df37[_0x1d29('0x45')]);_0x576685[_0x1d29('0x48')]=_[_0x1d29('0x47')](_0x49df37[_0x1d29('0x43')],qs[_0x1d29('0x49')](_0x172762[_0x1d29('0x45')][_0x1d29('0x49')]));_0x576685[_0x1d29('0x48')]=_0x576685[_0x1d29('0x48')][_0x1d29('0x57')]?_0x576685[_0x1d29('0x48')]:_0x49df37['model'];if(_0x172762[_0x1d29('0x45')]['includeAll']){_0x576685[_0x1d29('0x54')]=[{'all':!![]}];}_0x576685=_[_0x1d29('0x51')]({},_0x576685,_0x172762[_0x1d29('0x52')]);return db[_0x1d29('0x53')][_0x1d29('0x58')](_0x576685)[_0x1d29('0x24')](handleEntityNotFound(_0x580bfe,null))[_0x1d29('0x24')](respondWithResult(_0x580bfe,null))[_0x1d29('0x2e')](handleError(_0x580bfe,null));};exports[_0x1d29('0x59')]=function(_0x29c5d7,_0x230102){return db[_0x1d29('0x53')]['create'](_0x29c5d7[_0x1d29('0x5a')],{})['then'](respondWithResult(_0x230102,0xc9))[_0x1d29('0x2e')](handleError(_0x230102,null));};exports[_0x1d29('0x5b')]=function(_0x421f58,_0x12af8e){if(_0x421f58[_0x1d29('0x5a')]['id']){delete _0x421f58[_0x1d29('0x5a')]['id'];}return db[_0x1d29('0x53')]['find']({'where':{'id':_0x421f58[_0x1d29('0x5c')]['id']}})[_0x1d29('0x24')](handleEntityNotFound(_0x12af8e,null))[_0x1d29('0x24')](saveUpdates(_0x421f58['body'],null))['then'](respondWithResult(_0x12af8e,null))['catch'](handleError(_0x12af8e,null));};exports[_0x1d29('0x3a')]=function(_0x3822b5,_0x18d6c9){return db['SmsMessage'][_0x1d29('0x58')]({'where':{'id':_0x3822b5['params']['id']}})[_0x1d29('0x24')](handleEntityNotFound(_0x18d6c9,null))[_0x1d29('0x24')](removeEntity(_0x18d6c9,null))[_0x1d29('0x2e')](handleError(_0x18d6c9,null));};exports[_0x1d29('0x5d')]=function(_0x5a5e4d,_0xd44d78){return db['SmsMessage'][_0x1d29('0x5d')]()[_0x1d29('0x24')](respondWithResult(_0xd44d78,null))[_0x1d29('0x2e')](handleError(_0xd44d78,null));};var interaction_log=require(_0x1d29('0x17'))(_0x1d29('0x5e'));exports[_0x1d29('0x5f')]=function(_0x2c1bb9,_0x1ee9ea,_0x38d968){var _0xdefde4={'agent':{},'channel':_0x1d29('0x60')};if(_0x2c1bb9[_0x1d29('0x5a')]['id']){delete _0x2c1bb9['body']['id'];}_0x2c1bb9['body'][_0x1d29('0x61')]=!![];_0x2c1bb9[_0x1d29('0x5a')][_0x1d29('0x62')]=moment()[_0x1d29('0x63')](_0x1d29('0x64'));_0x2c1bb9['body']['UserId']=_0x2c1bb9[_0x1d29('0x5a')][_0x1d29('0x65')]||_0x2c1bb9['user']['id'];_0xdefde4[_0x1d29('0x66')]['id']=_0x2c1bb9['body'][_0x1d29('0x65')];return db['SmsMessage'][_0x1d29('0x58')]({'where':{'id':_0x2c1bb9[_0x1d29('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1ee9ea,null))['then'](saveUpdates(_0x2c1bb9[_0x1d29('0x5a')],null))[_0x1d29('0x24')](function(_0x517288){if(_0x517288){_0xdefde4[_0x1d29('0x2c')]=_0x517288[_0x1d29('0x67')]({'plain':!![]});return db['SmsInteraction'][_0x1d29('0x58')]({'where':{'id':_0x517288['SmsInteractionId']}});}return null;})[_0x1d29('0x24')](handleEntityNotFound(_0x1ee9ea,null))['then'](function(_0x166d85){if(_0x166d85){return _0x166d85[_0x1d29('0x5b')]({'UserId':_0x2c1bb9[_0x1d29('0x5a')][_0x1d29('0x65')],'read1stAt':_[_0x1d29('0x68')](_0x166d85[_0x1d29('0x69')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x1d29('0x24')](function(_0x5aed81){if(_0x5aed81){_0xdefde4[_0x1d29('0x6a')]=_0x5aed81[_0x1d29('0x67')]({'plain':!![]});interaction_log[_0x1d29('0x25')](_0x1d29('0x6b'),_0x2c1bb9['user']['id'],_0x2c1bb9[_0x1d29('0x6c')][_0x1d29('0x3c')],_0x2c1bb9['user']['role'],_0xdefde4[_0x1d29('0x6a')]['id'],_0x2c1bb9['body']?JSON['stringify'](_0x2c1bb9[_0x1d29('0x5a')]):'null');return respondWithRpcPromise(_0x1d29('0x6d'),_0x1d29('0x6e'),_0xdefde4);}return null;})['then'](function(_0x4a1017){var _0x26b760=_0x1d29('0x6f')+_0x4a1017[_0x1d29('0x2c')]['ContactId'];return db[_0x1d29('0x70')][_0x1d29('0x45')](_0x26b760,{'type':db[_0x1d29('0x71')][_0x1d29('0x72')]['SELECT'],'raw':!![]})[_0x1d29('0x24')](function(_0x2139b4){return _0x2139b4;});})[_0x1d29('0x24')](function(_0x9127f5){if(_0x9127f5){_0xdefde4['message']['contact']=_0x9127f5[0x0];if(!_0x2c1bb9[_0x1d29('0x5a')][_0x1d29('0x65')])return;return db[_0x1d29('0x73')]['find']({'where':{'id':_0x2c1bb9[_0x1d29('0x5a')][_0x1d29('0x65')],'role':_0x1d29('0x66')},'attributes':['id','name',_0x1d29('0x74'),_0x1d29('0x75'),_0x1d29('0x76')],'raw':!![]});}return null;})[_0x1d29('0x24')](function(_0x185b12){if(!_0x185b12)return null;_0xdefde4['message']['agent']=_0x185b12;return _0xdefde4;})[_0x1d29('0x24')](function(_0x27ebd3){if(_0x27ebd3){if(_0x2c1bb9[_0x1d29('0x5a')][_0x1d29('0x77')]){_0xdefde4['message'][_0x1d29('0x78')]=util['format'](_0x1d29('0x79'),_0x2c1bb9['user']['name']);_0xdefde4['message'][_0x1d29('0x7a')]=_0xdefde4[_0x1d29('0x7a')];_0xdefde4[_0x1d29('0x2c')][_0x1d29('0x7b')]=_0xdefde4[_0x1d29('0x7a')];_0xdefde4['message'][_0x1d29('0x7c')]=_0x1d29('0x5f');return respondWithRpcPromise('EventManager',_0x1d29('0x7d'),{'event':_0x1d29('0x7e'),'message':_0xdefde4[_0x1d29('0x2c')]},client9002)[_0x1d29('0x24')](function(){return _0xdefde4;});}return _0xdefde4;}return null;})[_0x1d29('0x24')](respondWithResult(_0x1ee9ea,null))[_0x1d29('0x2e')](handleError(_0x1ee9ea,null));};var interaction_log=require(_0x1d29('0x17'))(_0x1d29('0x5e'));exports[_0x1d29('0x7f')]=function(_0x46707c,_0x497693,_0x20e8c3){var _0x4c6421={'agent':{},'channel':_0x1d29('0x60')};if(_0x46707c[_0x1d29('0x5a')]['id']){delete _0x46707c['body']['id'];}_0x46707c[_0x1d29('0x5a')][_0x1d29('0x65')]=_0x46707c['body'][_0x1d29('0x65')]||_0x46707c[_0x1d29('0x6c')]['id'];_0x4c6421[_0x1d29('0x66')]['id']=_0x46707c[_0x1d29('0x5a')][_0x1d29('0x65')];return db[_0x1d29('0x53')][_0x1d29('0x58')]({'where':{'id':_0x46707c['params']['id'],'UserId':null}})[_0x1d29('0x24')](handleEntityNotFound(_0x497693,null))['then'](function(_0x5393db){if(_0x5393db){_0x4c6421[_0x1d29('0x2c')]=_0x5393db['get']({'plain':!![]});return db[_0x1d29('0x80')][_0x1d29('0x58')]({'where':{'id':_0x5393db[_0x1d29('0x81')]}});}return null;})[_0x1d29('0x24')](handleEntityNotFound(_0x497693,null))[_0x1d29('0x24')](function(_0x3cc49f){if(_0x3cc49f){_0x4c6421[_0x1d29('0x6a')]=_0x3cc49f[_0x1d29('0x67')]({'plain':!![]});interaction_log[_0x1d29('0x25')](_0x1d29('0x82'),_0x46707c['user']['id'],_0x46707c['user'][_0x1d29('0x3c')],_0x46707c[_0x1d29('0x6c')][_0x1d29('0x83')],_0x4c6421[_0x1d29('0x6a')]['id'],_0x46707c[_0x1d29('0x5a')]?JSON[_0x1d29('0x29')](_0x46707c[_0x1d29('0x5a')]):_0x1d29('0x84'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x4c6421);}return null;})[_0x1d29('0x24')](function(_0x15af06){var _0x2c0015=_0x1d29('0x6f')+_0x15af06['message'][_0x1d29('0x85')];return db[_0x1d29('0x70')]['query'](_0x2c0015,{'type':db['Sequelize'][_0x1d29('0x72')][_0x1d29('0x86')],'raw':!![]})['then'](function(_0x41711e){return _0x41711e;});})['then'](function(_0x214d08){if(_0x214d08){_0x4c6421[_0x1d29('0x2c')][_0x1d29('0x87')]=_0x214d08[0x0];if(!_0x46707c[_0x1d29('0x5a')][_0x1d29('0x65')])return;return db['User']['find']({'where':{'id':_0x46707c[_0x1d29('0x5a')][_0x1d29('0x65')],'role':'agent'},'attributes':['id',_0x1d29('0x3c'),_0x1d29('0x74'),_0x1d29('0x75'),_0x1d29('0x76')],'raw':!![]});}return null;})[_0x1d29('0x24')](function(_0x819a37){if(!_0x819a37)return null;_0x4c6421[_0x1d29('0x2c')][_0x1d29('0x66')]=_0x819a37;return _0x4c6421;})[_0x1d29('0x24')](function(_0x3ffd98){if(_0x3ffd98){_0x3ffd98[_0x1d29('0x2c')][_0x1d29('0x78')]=util['format'](_0x1d29('0x79'),_0x46707c['user'][_0x1d29('0x3c')]);_0x3ffd98[_0x1d29('0x2c')][_0x1d29('0x7a')]=_0x4c6421[_0x1d29('0x7a')];_0x3ffd98[_0x1d29('0x2c')]['motionChannel']=_0x4c6421[_0x1d29('0x7a')];_0x3ffd98[_0x1d29('0x2c')][_0x1d29('0x7c')]=_0x1d29('0x7f');respondWithRpcPromise(_0x1d29('0x7d'),_0x1d29('0x7d'),{'event':'rejectmessage','message':_0x3ffd98[_0x1d29('0x2c')]},client9002);return _0x4c6421;}return null;})['then'](respondWithResult(_0x497693,null))[_0x1d29('0x2e')](handleError(_0x497693,null));};exports[_0x1d29('0x30')]=function(_0x271ed6,_0x694e70,_0x565e9f){if(_0x271ed6['body']['id']){delete _0x271ed6[_0x1d29('0x5a')]['id'];}var _0x24ce85;return db[_0x1d29('0x53')][_0x1d29('0x58')]({'where':{'id':_0x271ed6[_0x1d29('0x5c')]['id']}})[_0x1d29('0x24')](handleEntityNotFound(_0x694e70,null))[_0x1d29('0x24')](function(_0x5448bc){if(_0x5448bc){_0x24ce85=_0x5448bc;return db[_0x1d29('0x88')][_0x1d29('0x58')]({'where':{'id':_0x5448bc['SmsAccountId']}});}})['then'](handleEntityNotFound(_0x694e70,null))[_0x1d29('0x24')](function(_0xa1c6e5){if(_0xa1c6e5){logger[_0x1d29('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1d29('0x30'),'received\x20delivery\x20report\x20from',_0xa1c6e5[_0x1d29('0x41')],util['inspect'](_0x271ed6[_0x1d29('0x5a')],{'showHidden':![],'depth':null}));switch(_0xa1c6e5['type']){case _0x1d29('0x89'):if(_0x271ed6['body']['MessageSid']&&_0x271ed6[_0x1d29('0x5a')][_0x1d29('0x8a')]===_0x24ce85[_0x1d29('0x8b')]){return _0x24ce85[_0x1d29('0x5b')]({'read':!![]});}else{logger[_0x1d29('0x2a')](_0x1d29('0x8c'),_0x1d29('0x30'),_0x1d29('0x89'),util['inspect'](_0x271ed6[_0x1d29('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x1d29('0x8d'):if(_0x271ed6[_0x1d29('0x5a')]['MessageUUID']&&_0x271ed6[_0x1d29('0x5a')]['MessageUUID']===_0x24ce85['messageId']&&_[_0x1d29('0x8e')]([_0x1d29('0x8f'),_0x1d29('0x90')],_0x271ed6[_0x1d29('0x5a')][_0x1d29('0x91')])>=0x0){return _0x24ce85[_0x1d29('0x5b')]({'read':!![]});}else{logger[_0x1d29('0x2a')](_0x1d29('0x8c'),_0x1d29('0x30'),'plivio',util[_0x1d29('0x92')](_0x271ed6[_0x1d29('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x1d29('0x93'):var _0x56d635=_0x271ed6['body'][_0x1d29('0x94')][0x0];if(_0x56d635[_0x1d29('0x30')][_0x1d29('0x95')]===_0x1d29('0x96')){return _0x24ce85['update']({'read':!![]});}else{logger['error'](_0x1d29('0x8c'),'status','infobip',util[_0x1d29('0x92')](_0x271ed6[_0x1d29('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x24ce85;}})[_0x1d29('0x24')](respondWithResult(_0x694e70,null))[_0x1d29('0x2e')](handleError(_0x694e70,null));};
\ No newline at end of file
+var _0x5532=['rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./smsMessage.socket','client','http','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','sendStatus','name','send','map','SmsMessage','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','include','show','params','keys','includeAll','options','find','create','body','describe','sms-interactions','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteractionId','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','sequelize','Sequelize','QueryTypes','SELECT','contact','User','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','SmsInteraction','RejectMessage','ContactId','fullname','rejectmessage','SmsAccount','debug','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','MessageUUID','messageId','indexOf','sent','delivered','Status','infobip','groupName','DELIVERED','eml-format'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x5532,0x19a));var _0x2553=function(_0x19d5e5,_0x76f413){_0x19d5e5=_0x19d5e5-0x0;var _0x5a6843=_0x5532[_0x19d5e5];return _0x5a6843;};'use strict';var emlformat=require(_0x2553('0x0'));var rimraf=require(_0x2553('0x1'));var zipdir=require(_0x2553('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2553('0x3'));var moment=require('moment');var BPromise=require(_0x2553('0x4'));var Mustache=require(_0x2553('0x5'));var util=require(_0x2553('0x6'));var path=require('path');var sox=require(_0x2553('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2553('0x8'));var _=require(_0x2553('0x9'));var squel=require('squel');var crypto=require(_0x2553('0xa'));var jsforce=require(_0x2553('0xb'));var deskjs=require(_0x2553('0xc'));var toCsv=require(_0x2553('0xd'));var querystring=require(_0x2553('0xe'));var Papa=require(_0x2553('0xf'));var Redis=require(_0x2553('0x10'));var authService=require(_0x2553('0x11'));var qs=require(_0x2553('0x12'));var as=require(_0x2553('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2553('0x14'))(_0x2553('0x15'));var utils=require(_0x2553('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2553('0x17'));var db=require(_0x2553('0x18'))['db'];config['redis']=_['defaults'](config[_0x2553('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x2553('0x1a'))(new Redis(config[_0x2553('0x19')]));require(_0x2553('0x1b'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x2553('0x1c')][_0x2553('0x1d')]({'port':0x232c});var client9002=jayson[_0x2553('0x1c')][_0x2553('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x241dfe,_0x31ae8f,_0x486092,_0x244d3e){return new BPromise(function(_0x4db92a,_0x54f78c){var _0x2d7a8b=_0x244d3e||client;return _0x2d7a8b[_0x2553('0x1e')](_0x241dfe,_0x486092)['then'](function(_0x3abe34){logger[_0x2553('0x1f')](_0x2553('0x20'),_0x31ae8f,_0x2553('0x21'));logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x31ae8f,_0x2553('0x21'),JSON[_0x2553('0x22')](_0x3abe34));if(_0x3abe34[_0x2553('0x23')]){if(_0x3abe34['error']['code']===0x1f4){logger[_0x2553('0x23')](_0x2553('0x20'),_0x31ae8f,_0x3abe34[_0x2553('0x23')]['message']);return _0x54f78c(_0x3abe34[_0x2553('0x23')][_0x2553('0x24')]);}logger[_0x2553('0x23')]('SmsMessage,\x20%s,\x20%s',_0x31ae8f,_0x3abe34[_0x2553('0x23')][_0x2553('0x24')]);return _0x4db92a(_0x3abe34[_0x2553('0x23')][_0x2553('0x24')]);}else{logger['info'](_0x2553('0x20'),_0x31ae8f,_0x2553('0x21'));_0x4db92a(_0x3abe34['result'][_0x2553('0x24')]);}})[_0x2553('0x25')](function(_0x57516e){logger[_0x2553('0x23')](_0x2553('0x20'),_0x31ae8f,_0x57516e);_0x54f78c(_0x57516e);});});}function respondWithStatusCode(_0x25b7aa,_0x4aa3fa){_0x4aa3fa=_0x4aa3fa||0xcc;return function(_0x3fdfb1){if(_0x3fdfb1){return _0x25b7aa['sendStatus'](_0x4aa3fa);}return _0x25b7aa[_0x2553('0x26')](_0x4aa3fa)['end']();};}function respondWithResult(_0x49163b,_0x1765a5){_0x1765a5=_0x1765a5||0xc8;return function(_0x4fe54d){if(_0x4fe54d){return _0x49163b[_0x2553('0x26')](_0x1765a5)[_0x2553('0x27')](_0x4fe54d);}};}function respondWithFilteredResult(_0x17ee14,_0x369bfc){return function(_0x54691d){if(_0x54691d){var _0x19fec3=typeof _0x369bfc[_0x2553('0x28')]===_0x2553('0x29')&&typeof _0x369bfc[_0x2553('0x2a')]===_0x2553('0x29');var _0x3abec1=_0x54691d[_0x2553('0x2b')];var _0x3d3224=_0x19fec3?0x0:_0x369bfc[_0x2553('0x28')];var _0x103cd6=_0x19fec3?_0x54691d[_0x2553('0x2b')]:_0x369bfc[_0x2553('0x28')]+_0x369bfc[_0x2553('0x2a')];var _0x26dcec;if(_0x103cd6>=_0x3abec1){_0x103cd6=_0x3abec1;_0x26dcec=0xc8;}else{_0x26dcec=0xce;}_0x17ee14['status'](_0x26dcec);return _0x17ee14[_0x2553('0x2c')](_0x2553('0x2d'),_0x3d3224+'-'+_0x103cd6+'/'+_0x3abec1)['json'](_0x54691d);}return null;};}function patchUpdates(_0x30043b){return function(_0x923f13){try{jsonpatch['apply'](_0x923f13,_0x30043b,!![]);}catch(_0x3222cf){return BPromise[_0x2553('0x2e')](_0x3222cf);}return _0x923f13[_0x2553('0x2f')]();};}function saveUpdates(_0x3c2e4,_0x4ec2eb){return function(_0x399385){if(_0x399385){return _0x399385[_0x2553('0x30')](_0x3c2e4)[_0x2553('0x31')](function(_0x21219f){return _0x21219f;});}return null;};}function removeEntity(_0x16b5af,_0x1cf1a9){return function(_0x260077){if(_0x260077){return _0x260077[_0x2553('0x32')]()[_0x2553('0x31')](function(){_0x16b5af['status'](0xcc)[_0x2553('0x33')]();});}};}function handleEntityNotFound(_0x4beb37,_0x24d297){return function(_0x43b7d5){if(!_0x43b7d5){_0x4beb37[_0x2553('0x34')](0x194);}return _0x43b7d5;};}function handleError(_0x59370b,_0x2df1d6){_0x2df1d6=_0x2df1d6||0x1f4;return function(_0x478a3b){logger['error'](_0x478a3b['stack']);if(_0x478a3b[_0x2553('0x35')]){delete _0x478a3b[_0x2553('0x35')];}_0x59370b[_0x2553('0x26')](_0x2df1d6)[_0x2553('0x36')](_0x478a3b);};}exports['index']=function(_0x2f4840,_0x176b76){var _0x737a01={},_0x48c40e={},_0x2fc35={'count':0x0,'rows':[]};var _0x249c27=_[_0x2553('0x37')](db[_0x2553('0x38')][_0x2553('0x39')],function(_0x2d16a4){return{'name':_0x2d16a4['fieldName'],'type':_0x2d16a4[_0x2553('0x3a')][_0x2553('0x3b')]};});_0x48c40e[_0x2553('0x3c')]=_[_0x2553('0x37')](_0x249c27,_0x2553('0x35'));_0x48c40e[_0x2553('0x3d')]=_['keys'](_0x2f4840['query']);_0x48c40e[_0x2553('0x3e')]=_[_0x2553('0x3f')](_0x48c40e[_0x2553('0x3c')],_0x48c40e[_0x2553('0x3d')]);_0x737a01['attributes']=_[_0x2553('0x3f')](_0x48c40e['model'],qs[_0x2553('0x40')](_0x2f4840[_0x2553('0x3d')][_0x2553('0x40')]));_0x737a01[_0x2553('0x41')]=_0x737a01[_0x2553('0x41')]['length']?_0x737a01[_0x2553('0x41')]:_0x48c40e[_0x2553('0x3c')];if(!_0x2f4840[_0x2553('0x3d')][_0x2553('0x42')]('nolimit')){_0x737a01[_0x2553('0x2a')]=qs['limit'](_0x2f4840['query'][_0x2553('0x2a')]);_0x737a01['offset']=qs[_0x2553('0x28')](_0x2f4840[_0x2553('0x3d')][_0x2553('0x28')]);}_0x737a01[_0x2553('0x43')]=qs['sort'](_0x2f4840['query'][_0x2553('0x44')]);_0x737a01[_0x2553('0x45')]=qs['filters'](_['pick'](_0x2f4840['query'],_0x48c40e['filters']),_0x249c27);if(_0x2f4840['query'][_0x2553('0x46')]){_0x737a01[_0x2553('0x45')]=_[_0x2553('0x47')](_0x737a01[_0x2553('0x45')],{'$or':_['map'](_0x249c27,function(_0x4dafed){if(_0x4dafed['type']!==_0x2553('0x48')){var _0x222095={};_0x222095[_0x4dafed[_0x2553('0x35')]]={'$like':'%'+_0x2f4840[_0x2553('0x3d')][_0x2553('0x46')]+'%'};return _0x222095;}})});}_0x737a01=_[_0x2553('0x47')]({},_0x737a01,_0x2f4840['options']);var _0x386314={'where':_0x737a01[_0x2553('0x45')]};return db[_0x2553('0x38')][_0x2553('0x2b')](_0x386314)[_0x2553('0x31')](function(_0x206c76){_0x2fc35[_0x2553('0x2b')]=_0x206c76;if(_0x2f4840[_0x2553('0x3d')]['includeAll']){_0x737a01[_0x2553('0x49')]=[{'all':!![]}];}return db[_0x2553('0x38')]['findAll'](_0x737a01);})[_0x2553('0x31')](function(_0x3714dc){_0x2fc35['rows']=_0x3714dc;return _0x2fc35;})[_0x2553('0x31')](respondWithFilteredResult(_0x176b76,_0x737a01))['catch'](handleError(_0x176b76,null));};exports[_0x2553('0x4a')]=function(_0x4e1dac,_0x4e7548){var _0x51b47e={'raw':!![],'where':{'id':_0x4e1dac[_0x2553('0x4b')]['id']}},_0x248928={};_0x248928[_0x2553('0x3c')]=_[_0x2553('0x4c')](db['SmsMessage']['rawAttributes']);_0x248928['query']=_[_0x2553('0x4c')](_0x4e1dac['query']);_0x248928[_0x2553('0x3e')]=_[_0x2553('0x3f')](_0x248928[_0x2553('0x3c')],_0x248928[_0x2553('0x3d')]);_0x51b47e['attributes']=_[_0x2553('0x3f')](_0x248928[_0x2553('0x3c')],qs[_0x2553('0x40')](_0x4e1dac[_0x2553('0x3d')][_0x2553('0x40')]));_0x51b47e[_0x2553('0x41')]=_0x51b47e[_0x2553('0x41')]['length']?_0x51b47e[_0x2553('0x41')]:_0x248928['model'];if(_0x4e1dac[_0x2553('0x3d')][_0x2553('0x4d')]){_0x51b47e[_0x2553('0x49')]=[{'all':!![]}];}_0x51b47e=_[_0x2553('0x47')]({},_0x51b47e,_0x4e1dac[_0x2553('0x4e')]);return db[_0x2553('0x38')][_0x2553('0x4f')](_0x51b47e)['then'](handleEntityNotFound(_0x4e7548,null))[_0x2553('0x31')](respondWithResult(_0x4e7548,null))[_0x2553('0x25')](handleError(_0x4e7548,null));};exports[_0x2553('0x50')]=function(_0x1d35ba,_0x5f3a6e){return db[_0x2553('0x38')]['create'](_0x1d35ba[_0x2553('0x51')],{})[_0x2553('0x31')](respondWithResult(_0x5f3a6e,0xc9))[_0x2553('0x25')](handleError(_0x5f3a6e,null));};exports['update']=function(_0x2f3ca4,_0x1b7103){if(_0x2f3ca4['body']['id']){delete _0x2f3ca4[_0x2553('0x51')]['id'];}return db[_0x2553('0x38')][_0x2553('0x4f')]({'where':{'id':_0x2f3ca4[_0x2553('0x4b')]['id']}})[_0x2553('0x31')](handleEntityNotFound(_0x1b7103,null))[_0x2553('0x31')](saveUpdates(_0x2f3ca4[_0x2553('0x51')],null))[_0x2553('0x31')](respondWithResult(_0x1b7103,null))['catch'](handleError(_0x1b7103,null));};exports['destroy']=function(_0x516f74,_0x512f3f){return db[_0x2553('0x38')][_0x2553('0x4f')]({'where':{'id':_0x516f74['params']['id']}})[_0x2553('0x31')](handleEntityNotFound(_0x512f3f,null))['then'](removeEntity(_0x512f3f,null))[_0x2553('0x25')](handleError(_0x512f3f,null));};exports[_0x2553('0x52')]=function(_0x176d8a,_0x2c0258){return db[_0x2553('0x38')][_0x2553('0x52')]()[_0x2553('0x31')](respondWithResult(_0x2c0258,null))[_0x2553('0x25')](handleError(_0x2c0258,null));};var interaction_log=require(_0x2553('0x14'))(_0x2553('0x53'));exports['accept']=function(_0x551f9f,_0x281044,_0x69b98f){var _0x2e35d7={'agent':{},'channel':_0x2553('0x54')};if(_0x551f9f[_0x2553('0x51')]['id']){delete _0x551f9f[_0x2553('0x51')]['id'];}_0x551f9f[_0x2553('0x51')][_0x2553('0x55')]=!![];_0x551f9f['body'][_0x2553('0x56')]=moment()[_0x2553('0x57')](_0x2553('0x58'));_0x551f9f[_0x2553('0x51')]['UserId']=_0x551f9f['body'][_0x2553('0x59')]||_0x551f9f[_0x2553('0x5a')]['id'];_0x2e35d7[_0x2553('0x5b')]['id']=_0x551f9f[_0x2553('0x51')][_0x2553('0x59')];return db[_0x2553('0x38')][_0x2553('0x4f')]({'where':{'id':_0x551f9f[_0x2553('0x4b')]['id'],'UserId':null}})[_0x2553('0x31')](handleEntityNotFound(_0x281044,null))[_0x2553('0x31')](saveUpdates(_0x551f9f['body'],null))[_0x2553('0x31')](function(_0x545dcb){if(_0x545dcb){_0x2e35d7[_0x2553('0x24')]=_0x545dcb[_0x2553('0x5c')]({'plain':!![]});return db['SmsInteraction'][_0x2553('0x4f')]({'where':{'id':_0x545dcb[_0x2553('0x5d')]}});}return null;})['then'](handleEntityNotFound(_0x281044,null))[_0x2553('0x31')](function(_0x26e9fc){if(_0x26e9fc){return _0x26e9fc[_0x2553('0x30')]({'UserId':_0x551f9f['body'][_0x2553('0x59')],'read1stAt':_['isNil'](_0x26e9fc[_0x2553('0x5e')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x2553('0x31')](function(_0x47eb75){if(_0x47eb75){_0x2e35d7[_0x2553('0x5f')]=_0x47eb75[_0x2553('0x5c')]({'plain':!![]});interaction_log[_0x2553('0x1f')](_0x2553('0x60'),_0x551f9f['user']['id'],_0x551f9f['user'][_0x2553('0x35')],_0x551f9f[_0x2553('0x5a')][_0x2553('0x61')],_0x2e35d7[_0x2553('0x5f')]['id'],_0x551f9f[_0x2553('0x51')]?JSON[_0x2553('0x22')](_0x551f9f[_0x2553('0x51')]):_0x2553('0x62'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x2e35d7);}return null;})[_0x2553('0x31')](function(_0x54ea50){var _0x20b5da='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x54ea50[_0x2553('0x24')]['ContactId'];return db[_0x2553('0x63')][_0x2553('0x3d')](_0x20b5da,{'type':db[_0x2553('0x64')][_0x2553('0x65')][_0x2553('0x66')],'raw':!![]})[_0x2553('0x31')](function(_0x44bbad){return _0x44bbad;});})[_0x2553('0x31')](function(_0x14ca35){if(_0x14ca35){_0x2e35d7[_0x2553('0x24')][_0x2553('0x67')]=_0x14ca35[0x0];if(!_0x551f9f[_0x2553('0x51')][_0x2553('0x59')])return;return db[_0x2553('0x68')]['find']({'where':{'id':_0x551f9f['body'][_0x2553('0x59')],'role':_0x2553('0x5b')},'attributes':['id',_0x2553('0x35'),'fullname',_0x2553('0x69'),_0x2553('0x6a')],'raw':!![]});}return null;})['then'](function(_0x2b1b5b){if(!_0x2b1b5b)return null;_0x2e35d7[_0x2553('0x24')][_0x2553('0x5b')]=_0x2b1b5b;return _0x2e35d7;})[_0x2553('0x31')](function(_0x335914){if(_0x335914){if(_0x551f9f[_0x2553('0x51')][_0x2553('0x6b')]){_0x2e35d7[_0x2553('0x24')][_0x2553('0x6c')]=util['format'](_0x2553('0x6d'),_0x551f9f[_0x2553('0x5a')][_0x2553('0x35')]);_0x2e35d7[_0x2553('0x24')][_0x2553('0x6e')]=_0x2e35d7[_0x2553('0x6e')];_0x2e35d7['message'][_0x2553('0x6f')]=_0x2e35d7[_0x2553('0x6e')];_0x2e35d7[_0x2553('0x24')][_0x2553('0x70')]=_0x2553('0x71');return respondWithRpcPromise('EventManager',_0x2553('0x72'),{'event':_0x2553('0x73'),'message':_0x2e35d7['message']},client9002)[_0x2553('0x31')](function(){return _0x2e35d7;});}return _0x2e35d7;}return null;})[_0x2553('0x31')](respondWithResult(_0x281044,null))[_0x2553('0x25')](handleError(_0x281044,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0x2553('0x2e')]=function(_0x18a2b1,_0x3bf57,_0x2ce455){var _0x3b8789={'agent':{},'channel':_0x2553('0x54')};if(_0x18a2b1[_0x2553('0x51')]['id']){delete _0x18a2b1['body']['id'];}_0x18a2b1[_0x2553('0x51')][_0x2553('0x59')]=_0x18a2b1[_0x2553('0x51')]['UserId']||_0x18a2b1[_0x2553('0x5a')]['id'];_0x3b8789[_0x2553('0x5b')]['id']=_0x18a2b1[_0x2553('0x51')][_0x2553('0x59')];return db[_0x2553('0x38')]['find']({'where':{'id':_0x18a2b1[_0x2553('0x4b')]['id'],'UserId':null}})[_0x2553('0x31')](handleEntityNotFound(_0x3bf57,null))[_0x2553('0x31')](function(_0x36e29a){if(_0x36e29a){_0x3b8789[_0x2553('0x24')]=_0x36e29a[_0x2553('0x5c')]({'plain':!![]});return db[_0x2553('0x74')][_0x2553('0x4f')]({'where':{'id':_0x36e29a[_0x2553('0x5d')]}});}return null;})[_0x2553('0x31')](handleEntityNotFound(_0x3bf57,null))['then'](function(_0x20635b){if(_0x20635b){_0x3b8789[_0x2553('0x5f')]=_0x20635b[_0x2553('0x5c')]({'plain':!![]});interaction_log['info']('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x18a2b1['user']['id'],_0x18a2b1[_0x2553('0x5a')][_0x2553('0x35')],_0x18a2b1[_0x2553('0x5a')][_0x2553('0x61')],_0x3b8789['interaction']['id'],_0x18a2b1['body']?JSON[_0x2553('0x22')](_0x18a2b1['body']):_0x2553('0x62'));return respondWithRpcPromise(_0x2553('0x75'),'rejectMessage',_0x3b8789);}return null;})[_0x2553('0x31')](function(_0x59b6f2){var _0x490438='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x59b6f2[_0x2553('0x24')][_0x2553('0x76')];return db[_0x2553('0x63')][_0x2553('0x3d')](_0x490438,{'type':db['Sequelize'][_0x2553('0x65')][_0x2553('0x66')],'raw':!![]})[_0x2553('0x31')](function(_0x456665){return _0x456665;});})[_0x2553('0x31')](function(_0x522db6){if(_0x522db6){_0x3b8789[_0x2553('0x24')][_0x2553('0x67')]=_0x522db6[0x0];if(!_0x18a2b1[_0x2553('0x51')][_0x2553('0x59')])return;return db[_0x2553('0x68')][_0x2553('0x4f')]({'where':{'id':_0x18a2b1[_0x2553('0x51')][_0x2553('0x59')],'role':_0x2553('0x5b')},'attributes':['id',_0x2553('0x35'),_0x2553('0x77'),_0x2553('0x69'),_0x2553('0x6a')],'raw':!![]});}return null;})[_0x2553('0x31')](function(_0x111e41){if(!_0x111e41)return null;_0x3b8789[_0x2553('0x24')][_0x2553('0x5b')]=_0x111e41;return _0x3b8789;})['then'](function(_0x48fcab){if(_0x48fcab){_0x48fcab['message'][_0x2553('0x6c')]=util[_0x2553('0x57')](_0x2553('0x6d'),_0x18a2b1['user']['name']);_0x48fcab['message']['channel']=_0x3b8789[_0x2553('0x6e')];_0x48fcab[_0x2553('0x24')][_0x2553('0x6f')]=_0x3b8789[_0x2553('0x6e')];_0x48fcab[_0x2553('0x24')][_0x2553('0x70')]='reject';respondWithRpcPromise('EventManager',_0x2553('0x72'),{'event':_0x2553('0x78'),'message':_0x48fcab[_0x2553('0x24')]},client9002);return _0x3b8789;}return null;})[_0x2553('0x31')](respondWithResult(_0x3bf57,null))[_0x2553('0x25')](handleError(_0x3bf57,null));};exports[_0x2553('0x26')]=function(_0x5cac34,_0x52f0ec,_0x4249c0){if(_0x5cac34['body']['id']){delete _0x5cac34[_0x2553('0x51')]['id'];}var _0x81c4ea;return db['SmsMessage'][_0x2553('0x4f')]({'where':{'id':_0x5cac34[_0x2553('0x4b')]['id']}})['then'](handleEntityNotFound(_0x52f0ec,null))['then'](function(_0x2eeea8){if(_0x2eeea8){_0x81c4ea=_0x2eeea8;return db[_0x2553('0x79')][_0x2553('0x4f')]({'where':{'id':_0x2eeea8['SmsAccountId']}});}})['then'](handleEntityNotFound(_0x52f0ec,null))[_0x2553('0x31')](function(_0x1b5d9c){if(_0x1b5d9c){logger[_0x2553('0x7a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2553('0x26'),_0x2553('0x7b'),_0x1b5d9c['type'],util[_0x2553('0x7c')](_0x5cac34[_0x2553('0x51')],{'showHidden':![],'depth':null}));switch(_0x1b5d9c[_0x2553('0x3a')]){case _0x2553('0x7d'):if(_0x5cac34[_0x2553('0x51')]['MessageSid']&&_0x5cac34[_0x2553('0x51')][_0x2553('0x7e')]===_0x81c4ea['messageId']){return _0x81c4ea[_0x2553('0x30')]({'read':!![]});}else{logger[_0x2553('0x23')](_0x2553('0x7f'),_0x2553('0x26'),_0x2553('0x7d'),util[_0x2553('0x7c')](_0x5cac34[_0x2553('0x51')],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x5cac34[_0x2553('0x51')]['MessageUUID']&&_0x5cac34['body'][_0x2553('0x80')]===_0x81c4ea[_0x2553('0x81')]&&_[_0x2553('0x82')]([_0x2553('0x83'),_0x2553('0x84')],_0x5cac34['body'][_0x2553('0x85')])>=0x0){return _0x81c4ea[_0x2553('0x30')]({'read':!![]});}else{logger[_0x2553('0x23')](_0x2553('0x7f'),_0x2553('0x26'),'plivio',util[_0x2553('0x7c')](_0x5cac34[_0x2553('0x51')],{'showHidden':![],'depth':null}));}break;case _0x2553('0x86'):var _0x2f41fe=_0x5cac34[_0x2553('0x51')]['results'][0x0];if(_0x2f41fe[_0x2553('0x26')][_0x2553('0x87')]===_0x2553('0x88')){return _0x81c4ea[_0x2553('0x30')]({'read':!![]});}else{logger[_0x2553('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status','infobip',util[_0x2553('0x7c')](_0x5cac34[_0x2553('0x51')],{'showHidden':![],'depth':null}));}break;}return _0x81c4ea;}})[_0x2553('0x31')](respondWithResult(_0x52f0ec,null))['catch'](handleError(_0x52f0ec,null));};
\ No newline at end of file
index a84072b..bc527c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6b1=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','save'];(function(_0x5f269d,_0x55a4ef){var _0x1b2755=function(_0xde38b4){while(--_0xde38b4){_0x5f269d['push'](_0x5f269d['shift']());}};_0x1b2755(++_0x55a4ef);}(_0xd6b1,0x1a5));var _0x1d6b=function(_0x288ebb,_0x211e8f){_0x288ebb=_0x288ebb-0x0;var _0x56db36=_0xd6b1[_0x288ebb];return _0x56db36;};'use strict';var EventEmitter=require(_0x1d6b('0x0'));var SmsMessage=require(_0x1d6b('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1d6b('0x2'),'afterUpdate':'update','afterDestroy':_0x1d6b('0x3')};function emitEvent(_0x39a1b1){return function(_0x1295b8,_0x40c657,_0x5f4399){SmsMessageEvents[_0x1d6b('0x4')](_0x39a1b1+':'+_0x1295b8['id'],_0x1295b8);SmsMessageEvents['emit'](_0x39a1b1,_0x1295b8);_0x5f4399(null);};}for(var e in events){if(events[_0x1d6b('0x5')](e)){var event=events[e];SmsMessage[_0x1d6b('0x6')](e,emitEvent(event));}}module[_0x1d6b('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0xc192=['SmsMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0xbe0439,_0x5399f9){var _0x1c91cf=function(_0xc2837b){while(--_0xc2837b){_0xbe0439['push'](_0xbe0439['shift']());}};_0x1c91cf(++_0x5399f9);}(_0xc192,0x11e));var _0x2c19=function(_0x689bc7,_0x2c045c){_0x689bc7=_0x689bc7-0x0;var _0xeb663d=_0xc192[_0x689bc7];return _0xeb663d;};'use strict';var EventEmitter=require(_0x2c19('0x0'));var SmsMessage=require(_0x2c19('0x1'))['db'][_0x2c19('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x2c19('0x3')](0x0);var events={'afterCreate':_0x2c19('0x4'),'afterUpdate':_0x2c19('0x5'),'afterDestroy':_0x2c19('0x6')};function emitEvent(_0x512565){return function(_0x13ca52,_0x20b6dd,_0x42c662){SmsMessageEvents[_0x2c19('0x7')](_0x512565+':'+_0x13ca52['id'],_0x13ca52);SmsMessageEvents[_0x2c19('0x7')](_0x512565,_0x13ca52);_0x42c662(null);};}for(var e in events){if(events[_0x2c19('0x8')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index 94fb356..9b7942f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5e=['Missing\x20parameters:\x20apiKey','clickatell','uuid','UTF-8','apiMessageId','https://messaging.bandwidth.com/api/v2/users/','/messages','bandwidth','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','code','message','status','refid','Token\x20not\x20received','finally','lodash','util','api','moment','rimraf','../../config/environment','exports','define','SmsMessage','sms_messages','body','FULLTEXT','models','get','toLowerCase','direction','out','secret','isNil','UserId','findOne','SmsInteractionId','then','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','phone','authToken','messages','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','split','user_key','total_sent','internal_order_id','deliveryReport','read','inspect','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','POST','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','http_code','data','queued_count','head','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','remote','token','https://api.plivo.com/v1/Account/%s/Message/','base64','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','/api/sms/messages/','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','text','keys','sort','length','md5','digest','hex','signature=','GET','id_sms'];(function(_0x4ea82d,_0x36f5f8){var _0x12ef82=function(_0x484f8d){while(--_0x484f8d){_0x4ea82d['push'](_0x4ea82d['shift']());}};_0x12ef82(++_0x36f5f8);}(_0xaf5e,0xfa));var _0xeaf5=function(_0x339f08,_0x4eb59f){_0x339f08=_0x339f08-0x0;var _0x2d44ef=_0xaf5e[_0x339f08];return _0x2d44ef;};'use strict';var _=require(_0xeaf5('0x0'));var util=require(_0xeaf5('0x1'));var logger=require('../../config/logger')(_0xeaf5('0x2'));var moment=require(_0xeaf5('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xeaf5('0x4'));var config=require(_0xeaf5('0x5'));var attributes=require('./smsMessage.attributes');module[_0xeaf5('0x6')]=function(_0x263a74,_0x561b7e){return _0x263a74[_0xeaf5('0x7')](_0xeaf5('0x8'),attributes,{'tableName':_0xeaf5('0x9'),'paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':'fti_sms_messages','fields':[_0xeaf5('0xa')],'type':_0xeaf5('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x158fde,_0x3cf744,_0x3c3022){var _0x33502b=_0x263a74[_0xeaf5('0xc')];var _0x216b27=_0x158fde[_0xeaf5('0xd')]({'plain':!![]});if(_0x216b27['direction'][_0xeaf5('0xe')]()==='in'||_0x216b27[_0xeaf5('0xf')]['toLowerCase']()===_0xeaf5('0x10')&&!_0x216b27[_0xeaf5('0x11')]&&!_[_0xeaf5('0x12')](_0x216b27[_0xeaf5('0x13')])&&!_['isNil'](_0x216b27['SmsInteractionId'])){_0x33502b['SmsInteraction'][_0xeaf5('0x14')]({'where':{'id':_0x216b27[_0xeaf5('0x15')]}})[_0xeaf5('0x16')](function(_0x445577){if(_0x445577){_0x445577[_0xeaf5('0x17')]({'lastMsgAt':_0x216b27[_0xeaf5('0x18')],'lastMsgDirection':_0x216b27[_0xeaf5('0xf')][_0xeaf5('0xe')]()});}})[_0xeaf5('0x19')](function(_0x2fa2b7){console[_0xeaf5('0x1a')](_0x2fa2b7);});}if(_0x216b27[_0xeaf5('0xf')]==='out'&&!_0x216b27['secret']){var _0x325d73;_0x33502b[_0xeaf5('0x1b')][_0xeaf5('0x1c')]({'where':{'id':_0x216b27[_0xeaf5('0x1d')]},'raw':!![]})[_0xeaf5('0x16')](function(_0x25d2fa){_0x325d73=_0x25d2fa;if(_0x325d73&&_0x325d73[_0xeaf5('0x1e')]){switch(_0x325d73[_0xeaf5('0x1e')]){case _0xeaf5('0x1f'):var _0x422156=require('twilio');if(_0x325d73[_0xeaf5('0x20')]&&_0x325d73['authToken']&&_0x325d73[_0xeaf5('0x21')]){var _0x3348a3=new _0x422156(_0x325d73[_0xeaf5('0x20')],_0x325d73[_0xeaf5('0x22')]);_0x3348a3[_0xeaf5('0x23')]['create']({'body':_0x216b27[_0xeaf5('0xa')],'to':_0x216b27['phone'],'from':_0x325d73[_0xeaf5('0x21')],'statusCallback':_0x325d73['remote']+'/api/sms/messages/'+_0x216b27['id']+'/status?token='+_0x325d73['token']})[_0xeaf5('0x16')](function(_0x22a84f){if(_0x22a84f['sid']){return _0x158fde[_0xeaf5('0x17')]({'messageId':_0x22a84f[_0xeaf5('0x24')]});}})['catch'](function(_0x17686){logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x1f'),util['inspect'](_0x17686,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),'twilio',_0xeaf5('0x27'));}break;case _0xeaf5('0x28'):var _0x1108d0=_0xeaf5('0x29');if(_0x325d73[_0xeaf5('0x2a')]&&_0x325d73[_0xeaf5('0x2b')]){var _0x19dd34={'recipient':[_0x216b27[_0xeaf5('0x21')]],'message':_0x216b27[_0xeaf5('0xa')],'message_type':_0x325d73[_0xeaf5('0x2c')]};if(_0x325d73[_0xeaf5('0x2c')]&&_0x325d73[_0xeaf5('0x2c')]!=='SI'){_0x19dd34[_0xeaf5('0x2d')]=_0x325d73[_0xeaf5('0x21')];}var _0x476c6d={'url':_0x1108d0+_0xeaf5('0x2e')+_0x325d73['username']+_0xeaf5('0x2f')+_0x325d73[_0xeaf5('0x2b')],'method':'GET'};rp(_0x476c6d)[_0xeaf5('0x16')](function(_0x394c00){var _0x24cb7b=_0x394c00[_0xeaf5('0x30')](';');var _0x53bfc4={'user_key':_0x24cb7b[0x0],'session_key':_0x24cb7b[0x1]};_0x476c6d={'url':_0x1108d0+'sms','method':'POST','headers':{'user_key':_0x53bfc4[_0xeaf5('0x31')],'Session_key':_0x53bfc4['session_key']},'json':!![],'body':_0x19dd34};return rp(_0x476c6d);})['then'](function(_0x1f074f){if(_0x1f074f[_0xeaf5('0x32')]>=0x1){var _0x249d07={'messageId':_0x1f074f[_0xeaf5('0x33')]};if(_0x325d73[_0xeaf5('0x2c')]!=='GP'||!_0x325d73[_0xeaf5('0x34')]){_0x249d07[_0xeaf5('0x35')]=!![];}return _0x158fde[_0xeaf5('0x17')](_0x249d07);}else{return logger['error'](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x28'),util[_0xeaf5('0x36')](_0x1f074f,{'showHidden':![],'depth':null}));}})['catch'](function(_0x3ef822){return logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x28'),util[_0xeaf5('0x36')](_0x3ef822,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeaf5('0x26'),_0xeaf5('0x28'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xeaf5('0x37'):if(_0x325d73[_0xeaf5('0x22')]){var _0x4b2475={'recipient':_0x216b27[_0xeaf5('0x21')],'message':_0x216b27[_0xeaf5('0xa')],'sender':_0x325d73[_0xeaf5('0x38')]||_0x325d73[_0xeaf5('0x21')],'authorization':_0x325d73[_0xeaf5('0x22')]};var _0x3cf744={'method':'POST','uri':_0xeaf5('0x39'),'body':_0x4b2475,'json':!![]};rp(_0x3cf744)[_0xeaf5('0x16')](function(_0x402458){var _0x3f58b3={'messageId':_0x402458[_0xeaf5('0x3a')]};if(!_0x325d73['deliveryReport']){_0x3f58b3[_0xeaf5('0x35')]=!![];}return _0x158fde['update'](_0x3f58b3);})[_0xeaf5('0x19')](function(_0x587bc9){logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),'connectel',util[_0xeaf5('0x36')](_0x587bc9,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x37'),_0xeaf5('0x3b'));}break;case _0xeaf5('0x3c'):if(_0x325d73[_0xeaf5('0x2a')]&&_0x325d73[_0xeaf5('0x2b')]){var _0x4b2475={'messages':[{'source':_0xeaf5('0x3d'),'to':_0x216b27[_0xeaf5('0x21')],'body':_0x216b27[_0xeaf5('0xa')],'from':_0x325d73[_0xeaf5('0x38')]||_0x325d73[_0xeaf5('0x21')]}]};var _0x4a496c=util[_0xeaf5('0x3e')](_0xeaf5('0x3f'),_0x325d73[_0xeaf5('0x2a')],_0x325d73[_0xeaf5('0x2b')]);var _0x3cf744={'method':_0xeaf5('0x40'),'uri':_0xeaf5('0x41'),'body':_0x4b2475,'headers':{'Authorization':util['format'](_0xeaf5('0x42'),new Buffer(_0x4a496c)['toString']('base64'))},'json':!![]};rp(_0x3cf744)[_0xeaf5('0x16')](function(_0x4d8959){if(_0x4d8959[_0xeaf5('0x43')]>=0xc8&&_0x4d8959[_0xeaf5('0x43')]<=0xce){if(_0x4d8959[_0xeaf5('0x44')]&&_0x4d8959[_0xeaf5('0x44')][_0xeaf5('0x45')]>0x0){var _0x5b33e0=_[_0xeaf5('0x46')](_0x4d8959[_0xeaf5('0x44')][_0xeaf5('0x23')]);var _0x33e723={'messageId':_0x5b33e0['message_id']};if(!_0x325d73[_0xeaf5('0x34')]){_0x33e723['read']=!![];}return _0x158fde['update'](_0x33e723);}else{logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),'afterCreate',_0xeaf5('0x47'),util[_0xeaf5('0x36')](_0x4d8959,{'showHidden':![],'depth':null}));}}else{logger[_0xeaf5('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeaf5('0x26'),_0xeaf5('0x47'),util[_0xeaf5('0x36')](_0x4d8959,{'showHidden':![],'depth':null}));}})[_0xeaf5('0x19')](function(_0x295a76){logger['error'](_0xeaf5('0x25'),_0xeaf5('0x26'),'clickSend',util['inspect'](_0x295a76,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeaf5('0x26'),'clickSend',_0xeaf5('0x48'));}break;case _0xeaf5('0x49'):if(_0x325d73[_0xeaf5('0x4a')]&&_0x325d73[_0xeaf5('0x22')]){var _0x4b2475={'dst':_0x216b27['phone'],'text':_0x216b27[_0xeaf5('0xa')],'src':_0x325d73[_0xeaf5('0x38')]||_0x325d73['phone'],'url':_0x325d73[_0xeaf5('0x4b')]+'/api/sms/messages/'+_0x216b27['id']+'/status?token='+_0x325d73[_0xeaf5('0x4c')]};var _0x4a496c=util[_0xeaf5('0x3e')](_0xeaf5('0x3f'),_0x325d73[_0xeaf5('0x4a')],_0x325d73[_0xeaf5('0x22')]);var _0x3cf744={'method':_0xeaf5('0x40'),'uri':util['format'](_0xeaf5('0x4d'),_0x325d73[_0xeaf5('0x4a')]),'body':_0x4b2475,'headers':{'Authorization':util['format'](_0xeaf5('0x42'),new Buffer(_0x4a496c)['toString'](_0xeaf5('0x4e')))},'json':!![]};rp(_0x3cf744)[_0xeaf5('0x16')](function(_0x222109){var _0x231ab1={'messageId':_0x222109['message_uuid'][0x0]};return _0x158fde[_0xeaf5('0x17')](_0x231ab1);})[_0xeaf5('0x19')](function(_0x5cb7c2){logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x49'),util[_0xeaf5('0x36')](_0x5cb7c2,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case _0xeaf5('0x4f'):if(_0x325d73[_0xeaf5('0x2a')]&&_0x325d73[_0xeaf5('0x2b')]){if(_0x325d73['baseUrl']){var _0x17e669={'method':_0xeaf5('0x40'),'uri':_0x325d73[_0xeaf5('0x50')]+_0xeaf5('0x51'),'body':{'username':_0x325d73[_0xeaf5('0x2a')],'password':_0x325d73[_0xeaf5('0x2b')]},'json':!![]};return rp(_0x17e669)[_0xeaf5('0x16')](function(_0x5bdeca){var _0x43603c={'method':_0xeaf5('0x40'),'uri':_0x325d73[_0xeaf5('0x50')]+_0xeaf5('0x52'),'body':{'messages':[{'from':_0x325d73['phone'],'destinations':[{'to':_0x216b27['phone']}],'text':_0x216b27['body'],'notifyUrl':_0x325d73['remote']+_0xeaf5('0x53')+_0x216b27['id']+'/status?token='+_0x325d73[_0xeaf5('0x4c')],'notifyContentType':'application/json','callbackData':_0x325d73[_0xeaf5('0x21')]+';'+_0x216b27[_0xeaf5('0xa')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x5bdeca[_0xeaf5('0x4c')]},'json':!![]};return rp(_0x43603c)[_0xeaf5('0x16')](function(_0x52d119){if(_0x52d119['messages']){var _0x519306={'messageId':_0x52d119['messages'][0x0]['messageId']};if(!_0x325d73[_0xeaf5('0x34')]){_0x519306[_0xeaf5('0x35')]=!![];}return _0x158fde['update'](_0x519306);}else{return logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x4f'),util[_0xeaf5('0x36')](_0x52d119,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x3ea4a7){return logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x4f'),util[_0xeaf5('0x36')](_0x3ea4a7,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x4f'),_0xeaf5('0x54'));}}else{logger[_0xeaf5('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeaf5('0x26'),_0xeaf5('0x4f'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xeaf5('0x55'):var _0x479d6e=require(_0xeaf5('0x56'));if(_0x325d73[_0xeaf5('0x57')]){var _0x11a4ad={};_0x11a4ad['login']=_0x325d73['username'];_0x11a4ad[_0xeaf5('0x21')]=_0x216b27[_0xeaf5('0x21')];_0x11a4ad[_0xeaf5('0x2d')]=_0x325d73[_0xeaf5('0x21')];_0x11a4ad[_0xeaf5('0x58')]=_0x216b27['body'];_0x11a4ad['timestamp']=+new Date();var _0x378c38='';var _0x3226a4='';var _0x2a31fd=Object[_0xeaf5('0x59')](_0x11a4ad);_0x2a31fd[_0xeaf5('0x5a')]();for(var _0x151982=0x0;_0x151982<_0x2a31fd[_0xeaf5('0x5b')];_0x151982++){if(_0x378c38!=''){_0x378c38+='&';}_0x378c38+=_0x2a31fd[_0x151982]+'='+encodeURIComponent(_0x11a4ad[_0x2a31fd[_0x151982]]);_0x3226a4+=_0x11a4ad[_0x2a31fd[_0x151982]];}_0x3226a4+=_0x325d73[_0xeaf5('0x57')];_0x3226a4=_0x479d6e['createHash'](_0xeaf5('0x5c'))[_0xeaf5('0x17')](_0x3226a4)[_0xeaf5('0x5d')](_0xeaf5('0x5e'));if(_0x378c38!==''){_0x378c38+='&';}_0x378c38+=_0xeaf5('0x5f')+_0x3226a4;var _0x476c6d={'method':_0xeaf5('0x60'),'uri':_0x325d73[_0xeaf5('0x50')]+'/external/get/send.php?'+_0x378c38,'json':!![]};return rp(_0x476c6d)[_0xeaf5('0x16')](function(_0x3fc4b2){var _0x50bf10=Object[_0xeaf5('0x59')](_0x3fc4b2);if(_0x3fc4b2[_0x50bf10[0x0]][_0xeaf5('0x1a')]&&parseInt(_0x3fc4b2[_0x50bf10[0x0]][_0xeaf5('0x1a')])===0x0){var _0x35306c={'messageId':_0x3fc4b2[_0x50bf10[0x0]][_0xeaf5('0x61')]};if(!_0x325d73['deliveryReport']){_0x35306c[_0xeaf5('0x35')]=!![];}return _0x158fde[_0xeaf5('0x17')](_0x35306c);}else{return logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x55'),util[_0xeaf5('0x36')](_0x3fc4b2[_0xeaf5('0x1a')],{'showHidden':![],'depth':null}));}})[_0xeaf5('0x19')](function(_0x2d7090){return logger['error'](_0xeaf5('0x25'),'afterCreate',_0xeaf5('0x55'),util[_0xeaf5('0x36')](_0x2d7090,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeaf5('0x26'),_0xeaf5('0x55'),_0xeaf5('0x62'));}break;case _0xeaf5('0x63'):if(_0x325d73[_0xeaf5('0x57')]){var _0x26b73e={'method':'POST','uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x325d73['apiKey']},'body':{'content':_0x216b27[_0xeaf5('0xa')],'to':[_0x216b27['phone']],'from':_0x325d73[_0xeaf5('0x21')],'binary':![],'clientMessageId':_0xeaf5('0x64'),'charset':_0xeaf5('0x65')},'json':!![]};rp(_0x26b73e)[_0xeaf5('0x16')](function(_0x47bacf){if(!_0x47bacf[_0xeaf5('0x1a')]){var _0x211ae8={'messageId':_0x47bacf[_0xeaf5('0x23')][0x0][_0xeaf5('0x66')]};if(!_0x325d73['deliveryReport']){_0x211ae8[_0xeaf5('0x35')]=!![];}return _0x158fde[_0xeaf5('0x17')](_0x211ae8);}else{return logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),_0xeaf5('0x26'),_0xeaf5('0x63'),util[_0xeaf5('0x36')](_0x47bacf[_0xeaf5('0x1a')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x302269){return logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),'afterCreate',_0xeaf5('0x63'),util[_0xeaf5('0x36')](_0x302269,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),'afterCreate',_0xeaf5('0x63'),'Missing\x20parameters:\x20apiKey');}break;case'bandwidth':if(_0x325d73['username']&&_0x325d73[_0xeaf5('0x2b')]){var _0x4a496c=util[_0xeaf5('0x3e')](_0xeaf5('0x3f'),_0x325d73[_0xeaf5('0x2a')],_0x325d73[_0xeaf5('0x2b')]);var _0x3cf744={'method':'POST','uri':_0xeaf5('0x67')+_0x325d73['accountId']+_0xeaf5('0x68'),'body':{'to':[_0x216b27['phone']],'text':_0x216b27[_0xeaf5('0xa')],'from':_0x325d73[_0xeaf5('0x21')],'applicationId':_0x325d73['applicationId']},'headers':{'Authorization':util[_0xeaf5('0x3e')](_0xeaf5('0x42'),new Buffer(_0x4a496c)['toString'](_0xeaf5('0x4e')))},'json':!![]};rp(_0x3cf744)[_0xeaf5('0x16')](function(_0x39ded0){if(_0x39ded0['id']){var _0x827b20={'messageId':_0x39ded0['id']};return _0x158fde['update'](_0x827b20);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeaf5('0x26'),_0xeaf5('0x69'),util[_0xeaf5('0x36')](_0x39ded0,{'showHidden':![],'depth':null}));}})[_0xeaf5('0x19')](function(_0x5731ef){logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),'afterCreate','bandwidth',util['inspect'](_0x5731ef,{'showHidden':![],'depth':null}));});}else{logger[_0xeaf5('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xeaf5('0x69'),_0xeaf5('0x48'));}break;case _0xeaf5('0x6a'):if(_0x325d73['apiKey']){var _0x113756={};var _0x476c6d={'method':_0xeaf5('0x40'),'uri':_0xeaf5('0x6b'),'headers':{'Authorization':_0xeaf5('0x6c')+_0x325d73[_0xeaf5('0x57')],'Content-Type':_0xeaf5('0x6d')},'body':{'from':_0x325d73['phone'],'to':_0x216b27[_0xeaf5('0x21')],'text':_0x216b27['body']},'json':!![]};return rp(_0x476c6d)[_0xeaf5('0x16')](function(_0x481c9b){if(_0x481c9b[_0xeaf5('0x6e')]==0xca){_0x113756[_0xeaf5('0x6f')]=_0x481c9b;var _0x567997={'method':_0xeaf5('0x40'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0xeaf5('0x6c')+_0x325d73['apiKey'],'Content-Type':_0xeaf5('0x6d')},'body':{'refid':_0x113756[_0xeaf5('0x6f')]['refid']},'json':!![]};return rp(_0x567997)[_0xeaf5('0x16')](function(_0x56cfe7){_0x113756[_0xeaf5('0x70')]=_0x56cfe7;var _0x2397d9={'messageId':_0x113756[_0xeaf5('0x6f')][_0xeaf5('0x71')],'read':!![]};return _0x158fde['update'](_0x2397d9);});}else{return logger[_0xeaf5('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeaf5('0x26'),_0xeaf5('0x6a'),util[_0xeaf5('0x36')](_0x481c9b,{'showHidden':![],'depth':null}));}})[_0xeaf5('0x19')](function(_0x577fa6){return logger[_0xeaf5('0x1a')](_0xeaf5('0x25'),'afterCreate',_0xeaf5('0x6a'),util[_0xeaf5('0x36')](_0x577fa6,{'showHidden':![],'depth':null}));});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xeaf5('0x26'),_0xeaf5('0x6a'),_0xeaf5('0x72'));}break;}}})[_0xeaf5('0x73')](function(){_0x3c3022();});}else{_0x3c3022();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xc533=['apiKey','login','text','timestamp','keys','sort','length','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','UTF-8','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','Bearer\x20','message','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsMessage.attributes','exports','SmsMessage','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','out','UserId','findOne','SmsInteractionId','then','update','toLowerCase','catch','error','secret','SmsAccount','find','SmsAccountId','type','authToken','phone','accountSid','messages','create','/status?token=','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','total_sent','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','Missing\x20parameters:\x20authToken','clicksend','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','clickSend','plivo','authId','remote','/api/sms/messages/','token','https://api.plivo.com/v1/Account/%s/Message/','infobip','baseUrl','/sms/2/text/advanced','application/json','Missing\x20parameters:\x20base_url','crypto'];(function(_0x3e44fa,_0x75ed2a){var _0x2a0aba=function(_0x1db6a7){while(--_0x1db6a7){_0x3e44fa['push'](_0x3e44fa['shift']());}};_0x2a0aba(++_0x75ed2a);}(_0xc533,0x9a));var _0x3c53=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0xc533[_0x363ef8];return _0x148822;};'use strict';var _=require(_0x3c53('0x0'));var util=require(_0x3c53('0x1'));var logger=require(_0x3c53('0x2'))(_0x3c53('0x3'));var moment=require(_0x3c53('0x4'));var BPromise=require(_0x3c53('0x5'));var rp=require(_0x3c53('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3c53('0x7'));var config=require(_0x3c53('0x8'));var attributes=require(_0x3c53('0x9'));module[_0x3c53('0xa')]=function(_0x2dcc60,_0x1dba46){return _0x2dcc60['define'](_0x3c53('0xb'),attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x3c53('0xc'),'fields':['messageId']},{'name':_0x3c53('0xd'),'fields':[_0x3c53('0xe')],'type':_0x3c53('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x250683,_0x28b163,_0x16e76d){var _0x4c348a=_0x2dcc60[_0x3c53('0x10')];var _0x29cb8a=_0x250683[_0x3c53('0x11')]({'plain':!![]});if(_0x29cb8a[_0x3c53('0x12')]['toLowerCase']()==='in'||_0x29cb8a[_0x3c53('0x12')]['toLowerCase']()===_0x3c53('0x13')&&!_0x29cb8a['secret']&&!_['isNil'](_0x29cb8a[_0x3c53('0x14')])&&!_['isNil'](_0x29cb8a['SmsInteractionId'])){_0x4c348a['SmsInteraction'][_0x3c53('0x15')]({'where':{'id':_0x29cb8a[_0x3c53('0x16')]}})[_0x3c53('0x17')](function(_0x15806a){if(_0x15806a){_0x15806a[_0x3c53('0x18')]({'lastMsgAt':_0x29cb8a['createdAt'],'lastMsgDirection':_0x29cb8a['direction'][_0x3c53('0x19')]()});}})[_0x3c53('0x1a')](function(_0x4de053){console[_0x3c53('0x1b')](_0x4de053);});}if(_0x29cb8a[_0x3c53('0x12')]===_0x3c53('0x13')&&!_0x29cb8a[_0x3c53('0x1c')]){var _0x466022;_0x4c348a[_0x3c53('0x1d')][_0x3c53('0x1e')]({'where':{'id':_0x29cb8a[_0x3c53('0x1f')]},'raw':!![]})['then'](function(_0x4c1199){_0x466022=_0x4c1199;if(_0x466022&&_0x466022['type']){switch(_0x466022[_0x3c53('0x20')]){case'twilio':var _0x173067=require('twilio');if(_0x466022['accountSid']&&_0x466022[_0x3c53('0x21')]&&_0x466022[_0x3c53('0x22')]){var _0x34b33c=new _0x173067(_0x466022[_0x3c53('0x23')],_0x466022[_0x3c53('0x21')]);_0x34b33c[_0x3c53('0x24')][_0x3c53('0x25')]({'body':_0x29cb8a[_0x3c53('0xe')],'to':_0x29cb8a[_0x3c53('0x22')],'from':_0x466022[_0x3c53('0x22')],'statusCallback':_0x466022['remote']+'/api/sms/messages/'+_0x29cb8a['id']+_0x3c53('0x26')+_0x466022['token']})[_0x3c53('0x17')](function(_0x3b9321){if(_0x3b9321[_0x3c53('0x27')]){return _0x250683[_0x3c53('0x18')]({'messageId':_0x3b9321[_0x3c53('0x27')]});}})[_0x3c53('0x1a')](function(_0x30a639){logger['error'](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x2a'),util[_0x3c53('0x2b')](_0x30a639,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),'afterCreate',_0x3c53('0x2a'),_0x3c53('0x2c'));}break;case _0x3c53('0x2d'):var _0x5c5823=_0x3c53('0x2e');if(_0x466022[_0x3c53('0x2f')]&&_0x466022[_0x3c53('0x30')]){var _0x178e14={'recipient':[_0x29cb8a[_0x3c53('0x22')]],'message':_0x29cb8a[_0x3c53('0xe')],'message_type':_0x466022[_0x3c53('0x31')]};if(_0x466022['smsMethod']&&_0x466022['smsMethod']!=='SI'){_0x178e14[_0x3c53('0x32')]=_0x466022[_0x3c53('0x22')];}var _0x52251f={'url':_0x5c5823+_0x3c53('0x33')+_0x466022['username']+_0x3c53('0x34')+_0x466022['password'],'method':_0x3c53('0x35')};rp(_0x52251f)['then'](function(_0x284a9e){var _0x10632a=_0x284a9e[_0x3c53('0x36')](';');var _0x51d677={'user_key':_0x10632a[0x0],'session_key':_0x10632a[0x1]};_0x52251f={'url':_0x5c5823+_0x3c53('0x37'),'method':_0x3c53('0x38'),'headers':{'user_key':_0x51d677['user_key'],'Session_key':_0x51d677['session_key']},'json':!![],'body':_0x178e14};return rp(_0x52251f);})['then'](function(_0x5e5c5f){if(_0x5e5c5f[_0x3c53('0x39')]>=0x1){var _0x2637fc={'messageId':_0x5e5c5f['internal_order_id']};if(_0x466022[_0x3c53('0x31')]!=='GP'||!_0x466022[_0x3c53('0x3a')]){_0x2637fc[_0x3c53('0x3b')]=!![];}return _0x250683['update'](_0x2637fc);}else{return logger['error'](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x2d'),util[_0x3c53('0x2b')](_0x5e5c5f,{'showHidden':![],'depth':null}));}})['catch'](function(_0x5556e5){return logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x2d'),util[_0x3c53('0x2b')](_0x5556e5,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),'afterCreate',_0x3c53('0x2d'),_0x3c53('0x3c'));}break;case'connectel':if(_0x466022[_0x3c53('0x21')]){var _0x5e9f63={'recipient':_0x29cb8a['phone'],'message':_0x29cb8a[_0x3c53('0xe')],'sender':_0x466022[_0x3c53('0x3d')]||_0x466022[_0x3c53('0x22')],'authorization':_0x466022[_0x3c53('0x21')]};var _0x28b163={'method':'POST','uri':_0x3c53('0x3e'),'body':_0x5e9f63,'json':!![]};rp(_0x28b163)['then'](function(_0x1efe87){var _0x3427b2={'messageId':_0x1efe87[_0x3c53('0x3f')]};if(!_0x466022[_0x3c53('0x3a')]){_0x3427b2[_0x3c53('0x3b')]=!![];}return _0x250683[_0x3c53('0x18')](_0x3427b2);})[_0x3c53('0x1a')](function(_0x3a49e9){logger[_0x3c53('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3c53('0x29'),_0x3c53('0x40'),util['inspect'](_0x3a49e9,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3c53('0x29'),_0x3c53('0x40'),_0x3c53('0x41'));}break;case _0x3c53('0x42'):if(_0x466022[_0x3c53('0x2f')]&&_0x466022[_0x3c53('0x30')]){var _0x5e9f63={'messages':[{'source':'xCALLY\x20Motion','to':_0x29cb8a['phone'],'body':_0x29cb8a[_0x3c53('0xe')],'from':_0x466022[_0x3c53('0x3d')]||_0x466022[_0x3c53('0x22')]}]};var _0x5bec21=util[_0x3c53('0x43')](_0x3c53('0x44'),_0x466022[_0x3c53('0x2f')],_0x466022[_0x3c53('0x30')]);var _0x28b163={'method':_0x3c53('0x38'),'uri':_0x3c53('0x45'),'body':_0x5e9f63,'headers':{'Authorization':util[_0x3c53('0x43')](_0x3c53('0x46'),new Buffer(_0x5bec21)[_0x3c53('0x47')](_0x3c53('0x48')))},'json':!![]};rp(_0x28b163)[_0x3c53('0x17')](function(_0x316e6f){if(_0x316e6f[_0x3c53('0x49')]>=0xc8&&_0x316e6f['http_code']<=0xce){if(_0x316e6f[_0x3c53('0x4a')]&&_0x316e6f[_0x3c53('0x4a')][_0x3c53('0x4b')]>0x0){var _0x38930c=_[_0x3c53('0x4c')](_0x316e6f['data'][_0x3c53('0x24')]);var _0x519886={'messageId':_0x38930c['message_id']};if(!_0x466022[_0x3c53('0x3a')]){_0x519886[_0x3c53('0x3b')]=!![];}return _0x250683[_0x3c53('0x18')](_0x519886);}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),'afterCreate',_0x3c53('0x4d'),util[_0x3c53('0x2b')](_0x316e6f,{'showHidden':![],'depth':null}));}}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x4d'),util[_0x3c53('0x2b')](_0x316e6f,{'showHidden':![],'depth':null}));}})[_0x3c53('0x1a')](function(_0x2fc157){logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x4d'),util[_0x3c53('0x2b')](_0x2fc157,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x4d'),_0x3c53('0x3c'));}break;case _0x3c53('0x4e'):if(_0x466022[_0x3c53('0x4f')]&&_0x466022[_0x3c53('0x21')]){var _0x5e9f63={'dst':_0x29cb8a[_0x3c53('0x22')],'text':_0x29cb8a[_0x3c53('0xe')],'src':_0x466022[_0x3c53('0x3d')]||_0x466022[_0x3c53('0x22')],'url':_0x466022[_0x3c53('0x50')]+_0x3c53('0x51')+_0x29cb8a['id']+_0x3c53('0x26')+_0x466022[_0x3c53('0x52')]};var _0x5bec21=util['format'](_0x3c53('0x44'),_0x466022[_0x3c53('0x4f')],_0x466022[_0x3c53('0x21')]);var _0x28b163={'method':_0x3c53('0x38'),'uri':util['format'](_0x3c53('0x53'),_0x466022['authId']),'body':_0x5e9f63,'headers':{'Authorization':util[_0x3c53('0x43')](_0x3c53('0x46'),new Buffer(_0x5bec21)[_0x3c53('0x47')](_0x3c53('0x48')))},'json':!![]};rp(_0x28b163)[_0x3c53('0x17')](function(_0x3dc3a7){var _0x40fb0e={'messageId':_0x3dc3a7['message_uuid'][0x0]};return _0x250683[_0x3c53('0x18')](_0x40fb0e);})['catch'](function(_0x482b64){logger[_0x3c53('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3c53('0x29'),_0x3c53('0x4e'),util['inspect'](_0x482b64,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x4e'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x3c53('0x54'):if(_0x466022[_0x3c53('0x2f')]&&_0x466022['password']){if(_0x466022[_0x3c53('0x55')]){var _0x36b17b={'method':_0x3c53('0x38'),'uri':_0x466022[_0x3c53('0x55')]+'/auth/1/session','body':{'username':_0x466022[_0x3c53('0x2f')],'password':_0x466022[_0x3c53('0x30')]},'json':!![]};return rp(_0x36b17b)[_0x3c53('0x17')](function(_0x193d5c){var _0x31d2cd={'method':_0x3c53('0x38'),'uri':_0x466022[_0x3c53('0x55')]+_0x3c53('0x56'),'body':{'messages':[{'from':_0x466022['phone'],'destinations':[{'to':_0x29cb8a['phone']}],'text':_0x29cb8a['body'],'notifyUrl':_0x466022['remote']+'/api/sms/messages/'+_0x29cb8a['id']+_0x3c53('0x26')+_0x466022[_0x3c53('0x52')],'notifyContentType':_0x3c53('0x57'),'callbackData':_0x466022[_0x3c53('0x22')]+';'+_0x29cb8a['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x193d5c[_0x3c53('0x52')]},'json':!![]};return rp(_0x31d2cd)[_0x3c53('0x17')](function(_0x353c99){if(_0x353c99[_0x3c53('0x24')]){var _0xa68ce4={'messageId':_0x353c99[_0x3c53('0x24')][0x0][_0x3c53('0xc')]};if(!_0x466022['deliveryReport']){_0xa68ce4[_0x3c53('0x3b')]=!![];}return _0x250683[_0x3c53('0x18')](_0xa68ce4);}else{return logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x54'),util[_0x3c53('0x2b')](_0x353c99,{'showHidden':![],'depth':null}));}});})[_0x3c53('0x1a')](function(_0xc7f904){return logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x54'),util[_0x3c53('0x2b')](_0xc7f904,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3c53('0x29'),'infobip',_0x3c53('0x58'));}}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x54'),_0x3c53('0x3c'));}break;case'csc':var _0x55a0c7=require(_0x3c53('0x59'));if(_0x466022[_0x3c53('0x5a')]){var _0x49acf0={};_0x49acf0[_0x3c53('0x5b')]=_0x466022['username'];_0x49acf0[_0x3c53('0x22')]=_0x29cb8a['phone'];_0x49acf0[_0x3c53('0x32')]=_0x466022[_0x3c53('0x22')];_0x49acf0[_0x3c53('0x5c')]=_0x29cb8a['body'];_0x49acf0[_0x3c53('0x5d')]=+new Date();var _0x56b4d0='';var _0x337206='';var _0x86df56=Object[_0x3c53('0x5e')](_0x49acf0);_0x86df56[_0x3c53('0x5f')]();for(var _0x20afab=0x0;_0x20afab<_0x86df56[_0x3c53('0x60')];_0x20afab++){if(_0x56b4d0!=''){_0x56b4d0+='&';}_0x56b4d0+=_0x86df56[_0x20afab]+'='+encodeURIComponent(_0x49acf0[_0x86df56[_0x20afab]]);_0x337206+=_0x49acf0[_0x86df56[_0x20afab]];}_0x337206+=_0x466022[_0x3c53('0x5a')];_0x337206=_0x55a0c7[_0x3c53('0x61')](_0x3c53('0x62'))[_0x3c53('0x18')](_0x337206)[_0x3c53('0x63')](_0x3c53('0x64'));if(_0x56b4d0!==''){_0x56b4d0+='&';}_0x56b4d0+=_0x3c53('0x65')+_0x337206;var _0x52251f={'method':_0x3c53('0x35'),'uri':_0x466022['baseUrl']+_0x3c53('0x66')+_0x56b4d0,'json':!![]};return rp(_0x52251f)[_0x3c53('0x17')](function(_0x1e8709){var _0x68f552=Object[_0x3c53('0x5e')](_0x1e8709);if(_0x1e8709[_0x68f552[0x0]][_0x3c53('0x1b')]&&parseInt(_0x1e8709[_0x68f552[0x0]][_0x3c53('0x1b')])===0x0){var _0x857d7c={'messageId':_0x1e8709[_0x68f552[0x0]][_0x3c53('0x67')]};if(!_0x466022[_0x3c53('0x3a')]){_0x857d7c[_0x3c53('0x3b')]=!![];}return _0x250683[_0x3c53('0x18')](_0x857d7c);}else{return logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x68'),util[_0x3c53('0x2b')](_0x1e8709['error'],{'showHidden':![],'depth':null}));}})[_0x3c53('0x1a')](function(_0x2fc3da){return logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x68'),util['inspect'](_0x2fc3da,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3c53('0x29'),_0x3c53('0x68'),_0x3c53('0x69'));}break;case _0x3c53('0x6a'):if(_0x466022[_0x3c53('0x5a')]){var _0x45c93d={'method':_0x3c53('0x38'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x466022[_0x3c53('0x5a')]},'body':{'content':_0x29cb8a[_0x3c53('0xe')],'to':[_0x29cb8a[_0x3c53('0x22')]],'from':_0x466022[_0x3c53('0x22')],'binary':![],'clientMessageId':'uuid','charset':_0x3c53('0x6b')},'json':!![]};rp(_0x45c93d)[_0x3c53('0x17')](function(_0x2fd176){if(!_0x2fd176['error']){var _0x188f7a={'messageId':_0x2fd176[_0x3c53('0x24')][0x0]['apiMessageId']};if(!_0x466022[_0x3c53('0x3a')]){_0x188f7a[_0x3c53('0x3b')]=!![];}return _0x250683[_0x3c53('0x18')](_0x188f7a);}else{return logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x6a'),util[_0x3c53('0x2b')](_0x2fd176['error'],{'showHidden':![],'depth':null}));}})[_0x3c53('0x1a')](function(_0x39c68c){return logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),'clickatell',util[_0x3c53('0x2b')](_0x39c68c,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x6a'),_0x3c53('0x69'));}break;case _0x3c53('0x6c'):if(_0x466022[_0x3c53('0x2f')]&&_0x466022[_0x3c53('0x30')]){var _0x5bec21=util['format'](_0x3c53('0x44'),_0x466022[_0x3c53('0x2f')],_0x466022[_0x3c53('0x30')]);var _0x28b163={'method':_0x3c53('0x38'),'uri':_0x3c53('0x6d')+_0x466022[_0x3c53('0x6e')]+_0x3c53('0x6f'),'body':{'to':[_0x29cb8a[_0x3c53('0x22')]],'text':_0x29cb8a[_0x3c53('0xe')],'from':_0x466022['phone'],'applicationId':_0x466022[_0x3c53('0x70')]},'headers':{'Authorization':util[_0x3c53('0x43')](_0x3c53('0x46'),new Buffer(_0x5bec21)[_0x3c53('0x47')](_0x3c53('0x48')))},'json':!![]};rp(_0x28b163)[_0x3c53('0x17')](function(_0x2e8885){if(_0x2e8885['id']){var _0x1cfbaf={'messageId':_0x2e8885['id']};return _0x250683[_0x3c53('0x18')](_0x1cfbaf);}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x6c'),util[_0x3c53('0x2b')](_0x2e8885,{'showHidden':![],'depth':null}));}})[_0x3c53('0x1a')](function(_0x5476f6){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3c53('0x29'),_0x3c53('0x6c'),util[_0x3c53('0x2b')](_0x5476f6,{'showHidden':![],'depth':null}));});}else{logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),'bandwidth','Missing\x20parameters:\x20username,\x20password');}break;case _0x3c53('0x71'):if(_0x466022[_0x3c53('0x5a')]){var _0x377504={};var _0x52251f={'method':_0x3c53('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x3c53('0x72')+_0x466022['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x466022[_0x3c53('0x22')],'to':_0x29cb8a['phone'],'text':_0x29cb8a[_0x3c53('0xe')]},'json':!![]};return rp(_0x52251f)[_0x3c53('0x17')](function(_0x208253){if(_0x208253['code']==0xca){_0x377504[_0x3c53('0x73')]=_0x208253;var _0x29fc03={'method':_0x3c53('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':'Bearer\x20'+_0x466022['apiKey'],'Content-Type':'application/json'},'body':{'refid':_0x377504[_0x3c53('0x73')][_0x3c53('0x74')]},'json':!![]};return rp(_0x29fc03)[_0x3c53('0x17')](function(_0xdc26d2){_0x377504[_0x3c53('0x75')]=_0xdc26d2;var _0x141eec={'messageId':_0x377504[_0x3c53('0x73')][_0x3c53('0x74')],'read':!![]};return _0x250683[_0x3c53('0x18')](_0x141eec);});}else{return logger[_0x3c53('0x1b')](_0x3c53('0x28'),_0x3c53('0x29'),_0x3c53('0x71'),util[_0x3c53('0x2b')](_0x208253,{'showHidden':![],'depth':null}));}})[_0x3c53('0x1a')](function(_0x587baf){return logger[_0x3c53('0x1b')](_0x3c53('0x28'),'afterCreate',_0x3c53('0x71'),util[_0x3c53('0x2b')](_0x587baf,{'showHidden':![],'depth':null}));});}else{return logger[_0x3c53('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3c53('0x29'),_0x3c53('0x71'),_0x3c53('0x76'));}break;}}})[_0x3c53('0x77')](function(){_0x16e76d();});}else{_0x16e76d();}}},'charset':_0x3c53('0x78'),'collate':_0x3c53('0x79')});};
\ No newline at end of file
index 0562e49..bcda49b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9542=['catch','CreateSmsMessage','SmsMessage','create','body','options','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x47a2d2,_0x51bb0e){var _0x2bd1a6=function(_0x5adb9e){while(--_0x5adb9e){_0x47a2d2['push'](_0x47a2d2['shift']());}};_0x2bd1a6(++_0x51bb0e);}(_0x9542,0xd9));var _0x2954=function(_0x3564df,_0xf76bd8){_0x3564df=_0x3564df-0x0;var _0x4d9e44=_0x9542[_0x3564df];return _0x4d9e44;};'use strict';var _=require(_0x2954('0x0'));var util=require(_0x2954('0x1'));var moment=require(_0x2954('0x2'));var BPromise=require(_0x2954('0x3'));var rs=require(_0x2954('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2954('0x5'))['db'];var utils=require(_0x2954('0x6'));var logger=require(_0x2954('0x7'))('rpc');var config=require(_0x2954('0x8'));var jayson=require(_0x2954('0x9'));var client=jayson[_0x2954('0xa')]['http']({'port':0x232a});config[_0x2954('0xb')]=_[_0x2954('0xc')](config[_0x2954('0xb')],{'host':_0x2954('0xd'),'port':0x18eb});var socket=require(_0x2954('0xe'))(new Redis(config['redis']));require(_0x2954('0xf'))[_0x2954('0x10')](socket);function respondWithRpcPromise(_0x20a65a,_0x1fd800,_0x1244cb){return new BPromise(function(_0x2d20f5,_0x3710c1){return client[_0x2954('0x11')](_0x20a65a,_0x1244cb)[_0x2954('0x12')](function(_0x4769f2){logger[_0x2954('0x13')](_0x2954('0x14'),_0x1fd800,_0x2954('0x15'));logger[_0x2954('0x16')](_0x2954('0x17'),_0x1fd800,_0x2954('0x15'),JSON['stringify'](_0x4769f2));if(_0x4769f2[_0x2954('0x18')]){if(_0x4769f2[_0x2954('0x18')][_0x2954('0x19')]===0x1f4){logger['error'](_0x2954('0x14'),_0x1fd800,_0x4769f2['error'][_0x2954('0x1a')]);return _0x3710c1(_0x4769f2[_0x2954('0x18')][_0x2954('0x1a')]);}logger['error']('SmsMessage,\x20%s,\x20%s',_0x1fd800,_0x4769f2[_0x2954('0x18')][_0x2954('0x1a')]);return _0x2d20f5(_0x4769f2[_0x2954('0x18')][_0x2954('0x1a')]);}else{logger[_0x2954('0x13')](_0x2954('0x14'),_0x1fd800,_0x2954('0x15'));_0x2d20f5(_0x4769f2[_0x2954('0x1b')]['message']);}})[_0x2954('0x1c')](function(_0x162b01){logger['error']('SmsMessage,\x20%s,\x20%s',_0x1fd800,_0x162b01);_0x3710c1(_0x162b01);});});}exports[_0x2954('0x1d')]=function(_0x489db0){var _0x5643b7=this;return new Promise(function(_0x4ec42e,_0x53c465){return db[_0x2954('0x1e')][_0x2954('0x1f')](_0x489db0[_0x2954('0x20')],{'raw':_0x489db0[_0x2954('0x21')]?_0x489db0[_0x2954('0x21')]['raw']===undefined?!![]:![]:!![]})[_0x2954('0x12')](function(_0x25cc5a){logger[_0x2954('0x13')]('CreateSmsMessage',_0x489db0);logger[_0x2954('0x16')](_0x2954('0x1d'),_0x489db0,JSON[_0x2954('0x22')](_0x25cc5a));_0x4ec42e(_0x25cc5a);})[_0x2954('0x1c')](function(_0x39125d){logger[_0x2954('0x18')]('CreateSmsMessage',_0x39125d['message'],_0x489db0);_0x53c465(_0x5643b7[_0x2954('0x18')](0x1f4,_0x39125d[_0x2954('0x1a')]));});});};
\ No newline at end of file
+var _0x4efe=['SmsMessage','create','body','options','raw','CreateSmsMessage','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x3c48f0,_0x5f10ae){var _0x148748=function(_0x1b3ed4){while(--_0x1b3ed4){_0x3c48f0['push'](_0x3c48f0['shift']());}};_0x148748(++_0x5f10ae);}(_0x4efe,0x17d));var _0xe4ef=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0x4efe[_0x31a371];return _0x2a5bd6;};'use strict';var _=require(_0xe4ef('0x0'));var util=require(_0xe4ef('0x1'));var moment=require(_0xe4ef('0x2'));var BPromise=require(_0xe4ef('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe4ef('0x4'));var db=require(_0xe4ef('0x5'))['db'];var utils=require(_0xe4ef('0x6'));var logger=require(_0xe4ef('0x7'))(_0xe4ef('0x8'));var config=require(_0xe4ef('0x9'));var jayson=require(_0xe4ef('0xa'));var client=jayson['client'][_0xe4ef('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xe4ef('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xe4ef('0xd'))(new Redis(config[_0xe4ef('0xc')]));require(_0xe4ef('0xe'))[_0xe4ef('0xf')](socket);function respondWithRpcPromise(_0x244e50,_0x2a51a1,_0x6003ea){return new BPromise(function(_0x19cf63,_0x4c46c3){return client[_0xe4ef('0x10')](_0x244e50,_0x6003ea)[_0xe4ef('0x11')](function(_0x2806bb){logger[_0xe4ef('0x12')](_0xe4ef('0x13'),_0x2a51a1,_0xe4ef('0x14'));logger['debug'](_0xe4ef('0x15'),_0x2a51a1,_0xe4ef('0x14'),JSON[_0xe4ef('0x16')](_0x2806bb));if(_0x2806bb['error']){if(_0x2806bb[_0xe4ef('0x17')][_0xe4ef('0x18')]===0x1f4){logger[_0xe4ef('0x17')](_0xe4ef('0x13'),_0x2a51a1,_0x2806bb['error'][_0xe4ef('0x19')]);return _0x4c46c3(_0x2806bb[_0xe4ef('0x17')]['message']);}logger['error'](_0xe4ef('0x13'),_0x2a51a1,_0x2806bb[_0xe4ef('0x17')][_0xe4ef('0x19')]);return _0x19cf63(_0x2806bb['error']['message']);}else{logger[_0xe4ef('0x12')](_0xe4ef('0x13'),_0x2a51a1,_0xe4ef('0x14'));_0x19cf63(_0x2806bb['result'][_0xe4ef('0x19')]);}})[_0xe4ef('0x1a')](function(_0x28a1a3){logger['error'](_0xe4ef('0x13'),_0x2a51a1,_0x28a1a3);_0x4c46c3(_0x28a1a3);});});}exports['CreateSmsMessage']=function(_0x1b55d9){var _0x17cce7=this;return new Promise(function(_0x1fe5f8,_0x423b2b){return db[_0xe4ef('0x1b')][_0xe4ef('0x1c')](_0x1b55d9[_0xe4ef('0x1d')],{'raw':_0x1b55d9[_0xe4ef('0x1e')]?_0x1b55d9[_0xe4ef('0x1e')][_0xe4ef('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0xc94c4a){logger[_0xe4ef('0x12')](_0xe4ef('0x20'),_0x1b55d9);logger[_0xe4ef('0x21')](_0xe4ef('0x20'),_0x1b55d9,JSON[_0xe4ef('0x16')](_0xc94c4a));_0x1fe5f8(_0xc94c4a);})[_0xe4ef('0x1a')](function(_0x104260){logger['error']('CreateSmsMessage',_0x104260[_0xe4ef('0x19')],_0x1b55d9);_0x423b2b(_0x17cce7[_0xe4ef('0x17')](0x1f4,_0x104260[_0xe4ef('0x19')]));});});};
\ No newline at end of file
index 1efd0cf..c594404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9183=['emit','removeListener','register','length','smsMessage:','update'];(function(_0x12af35,_0x9309d6){var _0x409c15=function(_0xc1d4ef){while(--_0xc1d4ef){_0x12af35['push'](_0x12af35['shift']());}};_0x409c15(++_0x9309d6);}(_0x9183,0x191));var _0x3918=function(_0x2a853a,_0x2ad4d6){_0x2a853a=_0x2a853a-0x0;var _0x4e23d4=_0x9183[_0x2a853a];return _0x4e23d4;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=['save','remove',_0x3918('0x0')];function createListener(_0x1c5d38,_0x9c5b42){return function(_0x1d8bb2){_0x9c5b42[_0x3918('0x1')](_0x1c5d38,_0x1d8bb2);};}function removeListener(_0x50e9f8,_0x4c689f){return function(){SmsMessageEvents[_0x3918('0x2')](_0x50e9f8,_0x4c689f);};}exports[_0x3918('0x3')]=function(_0x42ad27){for(var _0x3d6a96=0x0,_0x50f01b=events[_0x3918('0x4')];_0x3d6a96<_0x50f01b;_0x3d6a96++){var _0x2751ef=events[_0x3d6a96];var _0x72d932=createListener(_0x3918('0x5')+_0x2751ef,_0x42ad27);SmsMessageEvents['on'](_0x2751ef,_0x72d932);}};
\ No newline at end of file
+var _0x40a1=['update','emit','removeListener','register','length','smsMessage:','save','remove'];(function(_0x1b2ee8,_0x721ef0){var _0x7c43d4=function(_0x14f98b){while(--_0x14f98b){_0x1b2ee8['push'](_0x1b2ee8['shift']());}};_0x7c43d4(++_0x721ef0);}(_0x40a1,0x10e));var _0x140a=function(_0x739802,_0x157395){_0x739802=_0x739802-0x0;var _0x3e7b09=_0x40a1[_0x739802];return _0x3e7b09;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0x140a('0x0'),_0x140a('0x1'),_0x140a('0x2')];function createListener(_0x5cd0b1,_0x12f9a6){return function(_0x38d0ba){_0x12f9a6[_0x140a('0x3')](_0x5cd0b1,_0x38d0ba);};}function removeListener(_0x82b272,_0x5dbb5e){return function(){SmsMessageEvents[_0x140a('0x4')](_0x82b272,_0x5dbb5e);};}exports[_0x140a('0x5')]=function(_0x50450c){for(var _0x595ea2=0x0,_0x18dbe2=events[_0x140a('0x6')];_0x595ea2<_0x18dbe2;_0x595ea2++){var _0x5a8048=events[_0x595ea2];var _0x41cea2=createListener(_0x140a('0x7')+_0x5a8048,_0x50450c);SmsMessageEvents['on'](_0x5a8048,_0x41cea2);}};
\ No newline at end of file
index a945a88..a10b308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1bd=['isAuthenticated','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','destroy','delete','removeTeams','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','get','index','/describe','/:id','show','/:id/members'];(function(_0xd5888,_0x5e85d2){var _0x28838a=function(_0x463b7a){while(--_0x463b7a){_0xd5888['push'](_0xd5888['shift']());}};_0x28838a(++_0x5e85d2);}(_0xd1bd,0x8a));var _0xdd1b=function(_0x3ad2b6,_0xca7668){_0x3ad2b6=_0x3ad2b6-0x0;var _0x14484c=_0xd1bd[_0x3ad2b6];return _0x14484c;};'use strict';var multer=require(_0xdd1b('0x0'));var util=require('util');var path=require(_0xdd1b('0x1'));var timeout=require(_0xdd1b('0x2'));var express=require('express');var router=express[_0xdd1b('0x3')]();var fs_extra=require(_0xdd1b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdd1b('0x5'));var config=require('../../config/environment');var controller=require('./smsQueue.controller');router[_0xdd1b('0x6')]('/',auth['isAuthenticated'](),controller[_0xdd1b('0x7')]);router[_0xdd1b('0x6')](_0xdd1b('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0xdd1b('0x6')](_0xdd1b('0x9'),auth['isAuthenticated'](),controller[_0xdd1b('0xa')]);router['get'](_0xdd1b('0xb'),auth[_0xdd1b('0xc')](),controller[_0xdd1b('0xd')]);router['get'](_0xdd1b('0xe'),auth[_0xdd1b('0xc')](),controller[_0xdd1b('0xf')]);router[_0xdd1b('0x6')](_0xdd1b('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0xdd1b('0x11')]('/',auth[_0xdd1b('0xc')](),controller[_0xdd1b('0x12')]);router[_0xdd1b('0x11')](_0xdd1b('0xe'),auth['isAuthenticated'](),controller[_0xdd1b('0x13')]);router[_0xdd1b('0x11')]('/:id/users',auth['isAuthenticated'](),controller[_0xdd1b('0x14')]);router[_0xdd1b('0x15')](_0xdd1b('0x9'),auth[_0xdd1b('0xc')](),controller['update']);router['delete'](_0xdd1b('0x9'),auth[_0xdd1b('0xc')](),controller[_0xdd1b('0x16')]);router[_0xdd1b('0x17')](_0xdd1b('0xe'),auth[_0xdd1b('0xc')](),controller[_0xdd1b('0x18')]);router['delete'](_0xdd1b('0x10'),auth[_0xdd1b('0xc')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xf972=['getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','/:id/teams','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x1bae57,_0x285e8f){var _0x555b0e=function(_0x381213){while(--_0x381213){_0x1bae57['push'](_0x1bae57['shift']());}};_0x555b0e(++_0x285e8f);}(_0xf972,0x108));var _0x2f97=function(_0x5812b5,_0x116d39){_0x5812b5=_0x5812b5-0x0;var _0x536c6c=_0xf972[_0x5812b5];return _0x536c6c;};'use strict';var multer=require(_0x2f97('0x0'));var util=require(_0x2f97('0x1'));var path=require(_0x2f97('0x2'));var timeout=require(_0x2f97('0x3'));var express=require('express');var router=express[_0x2f97('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2f97('0x5'));var config=require(_0x2f97('0x6'));var controller=require(_0x2f97('0x7'));router[_0x2f97('0x8')]('/',auth[_0x2f97('0x9')](),controller[_0x2f97('0xa')]);router[_0x2f97('0x8')](_0x2f97('0xb'),auth['isAuthenticated'](),controller[_0x2f97('0xc')]);router[_0x2f97('0x8')](_0x2f97('0xd'),auth[_0x2f97('0x9')](),controller[_0x2f97('0xe')]);router[_0x2f97('0x8')]('/:id/members',auth[_0x2f97('0x9')](),controller[_0x2f97('0xf')]);router[_0x2f97('0x8')]('/:id/teams',auth['isAuthenticated'](),controller[_0x2f97('0x10')]);router[_0x2f97('0x8')](_0x2f97('0x11'),auth['isAuthenticated'](),controller[_0x2f97('0x12')]);router[_0x2f97('0x13')]('/',auth[_0x2f97('0x9')](),controller[_0x2f97('0x14')]);router[_0x2f97('0x13')]('/:id/teams',auth[_0x2f97('0x9')](),controller[_0x2f97('0x15')]);router[_0x2f97('0x13')](_0x2f97('0x11'),auth['isAuthenticated'](),controller[_0x2f97('0x16')]);router[_0x2f97('0x17')]('/:id',auth[_0x2f97('0x9')](),controller[_0x2f97('0x18')]);router[_0x2f97('0x19')](_0x2f97('0xd'),auth['isAuthenticated'](),controller[_0x2f97('0x1a')]);router[_0x2f97('0x19')](_0x2f97('0x1b'),auth[_0x2f97('0x9')](),controller[_0x2f97('0x1c')]);router['delete'](_0x2f97('0x11'),auth['isAuthenticated'](),controller[_0x2f97('0x1d')]);module[_0x2f97('0x1e')]=router;
\ No newline at end of file
index fbef846..7d8e3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cf8=['exports','STRING','INTEGER','roundrobin','sequelize'];(function(_0x38fa3f,_0x5f1832){var _0x1e582a=function(_0x3dac86){while(--_0x3dac86){_0x38fa3f['push'](_0x38fa3f['shift']());}};_0x1e582a(++_0x5f1832);}(_0x3cf8,0x1b7));var _0x83cf=function(_0x2c1b50,_0x417116){_0x2c1b50=_0x2c1b50-0x0;var _0x167434=_0x3cf8[_0x2c1b50];return _0x167434;};'use strict';var Sequelize=require(_0x83cf('0x0'));module[_0x83cf('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x83cf('0x2')]},'timeout':{'type':Sequelize[_0x83cf('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory','beepall',_0x83cf('0x4'))}};
\ No newline at end of file
+var _0x0408=['sequelize','STRING','name','ENUM','beepall'];(function(_0xe51964,_0x433b90){var _0x2c2366=function(_0x1bc95c){while(--_0x1bc95c){_0xe51964['push'](_0xe51964['shift']());}};_0x2c2366(++_0x433b90);}(_0x0408,0x78));var _0x8040=function(_0x2bd9a4,_0x3f6b0b){_0x2bd9a4=_0x2bd9a4-0x0;var _0x4cf03b=_0x0408[_0x2bd9a4];return _0x4cf03b;};'use strict';var Sequelize=require(_0x8040('0x0'));module['exports']={'name':{'type':Sequelize[_0x8040('0x1')],'unique':_0x8040('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8040('0x3')]('rrmemory',_0x8040('0x4'),'roundrobin')}};
\ No newline at end of file
index d5b7e4c..3495dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','join','clone','ut.UserId\x20=\x20?','push','QueryTypes','every','TeamId','union','value','removeAgents','forEach','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','hasOwnProperty','bluebird','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','update','SmsQueues','destroy','then','error','stack','name','send','SmsQueue','fieldName','type','key','getOptions','include','query','findAll','rows','show','model','keys','rawAttributes','filters','intersection','attributes','fields','length','includeAll','merge','options','find','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','params','nolimit','order','sort','where','SmsQueueId','filter','map','UserSmsQueue','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','%s/%s','SIP','findOne','Team','pick','getTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','emit'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x0b0e,0x187));var _0xe0b0=function(_0xf7bf02,_0x13da13){_0xf7bf02=_0xf7bf02-0x0;var _0x4f263f=_0x0b0e[_0xf7bf02];return _0x4f263f;};'use strict';var BPromise=require(_0xe0b0('0x0'));var util=require('util');var _=require(_0xe0b0('0x1'));var squel=require('squel');var Redis=require(_0xe0b0('0x2'));var qs=require(_0xe0b0('0x3'));var logger=require(_0xe0b0('0x4'))(_0xe0b0('0x5'));var config=require(_0xe0b0('0x6'));var db=require(_0xe0b0('0x7'))['db'];config[_0xe0b0('0x8')]=_[_0xe0b0('0x9')](config[_0xe0b0('0x8')],{'host':_0xe0b0('0xa'),'port':0x18eb});var socket=require(_0xe0b0('0xb'))(new Redis(config['redis']));require('./smsQueue.socket')[_0xe0b0('0xc')](socket);function respondWithStatusCode(_0x435060,_0xc4a085){_0xc4a085=_0xc4a085||0xcc;return function(_0x2ac27e){if(_0x2ac27e){return _0x435060['sendStatus'](_0xc4a085);}return _0x435060[_0xe0b0('0xd')](_0xc4a085)[_0xe0b0('0xe')]();};}function respondWithResult(_0x553d4f,_0x1fef28){_0x1fef28=_0x1fef28||0xc8;return function(_0x2f32b6){if(_0x2f32b6){return _0x553d4f['status'](_0x1fef28)[_0xe0b0('0xf')](_0x2f32b6);}};}function respondWithFilteredResult(_0x2cdad2,_0x39b1c2){return function(_0x585615){if(_0x585615){var _0x3068c0=typeof _0x39b1c2[_0xe0b0('0x10')]===_0xe0b0('0x11')&&typeof _0x39b1c2[_0xe0b0('0x12')]===_0xe0b0('0x11');var _0x4d2bf7=_0x585615[_0xe0b0('0x13')];var _0x154de6=_0x3068c0?0x0:_0x39b1c2[_0xe0b0('0x10')];var _0x24babd=_0x3068c0?_0x585615[_0xe0b0('0x13')]:_0x39b1c2['offset']+_0x39b1c2[_0xe0b0('0x12')];var _0x5adb01;if(_0x24babd>=_0x4d2bf7){_0x24babd=_0x4d2bf7;_0x5adb01=0xc8;}else{_0x5adb01=0xce;}_0x2cdad2[_0xe0b0('0xd')](_0x5adb01);return _0x2cdad2[_0xe0b0('0x14')]('Content-Range',_0x154de6+'-'+_0x24babd+'/'+_0x4d2bf7)[_0xe0b0('0xf')](_0x585615);}return null;};}function saveUpdates(_0x4a4cc0){return function(_0x2d6fb6){if(_0x2d6fb6){return _0x2d6fb6[_0xe0b0('0x15')](_0x4a4cc0)['then'](function(_0x54a3eb){return _0x54a3eb;});}return null;};}function removeEntity(_0x46bb44){return function(_0x50a441){if(_0x50a441){return _0x50a441['destroy']()['then'](function(){var _0x1920ee=_0x50a441['get']({'plain':!![]});var _0x52598b=_0xe0b0('0x16');return db['UserProfileResource'][_0xe0b0('0x17')]({'where':{'type':_0x52598b,'resourceId':_0x1920ee['id']}})['then'](function(){return _0x50a441;});})[_0xe0b0('0x18')](function(){_0x46bb44[_0xe0b0('0xd')](0xcc)[_0xe0b0('0xe')]();});}};}function handleEntityNotFound(_0x310a6d){return function(_0x2cf6a1){if(!_0x2cf6a1){_0x310a6d['sendStatus'](0x194);}return _0x2cf6a1;};}function handleError(_0x4cae54,_0x2fa820){_0x2fa820=_0x2fa820||0x1f4;return function(_0x5512bb){logger[_0xe0b0('0x19')](_0x5512bb[_0xe0b0('0x1a')]);if(_0x5512bb['name']){delete _0x5512bb[_0xe0b0('0x1b')];}_0x4cae54['status'](_0x2fa820)[_0xe0b0('0x1c')](_0x5512bb);};}exports['index']=function(_0x28586d,_0x576352){var _0x3e5c88={};var _0x4de537={'count':0x0,'rows':[]};var _0x4700cc=_['map'](db[_0xe0b0('0x1d')]['rawAttributes'],function(_0x362aba){return{'name':_0x362aba[_0xe0b0('0x1e')],'type':_0x362aba[_0xe0b0('0x1f')][_0xe0b0('0x20')]};});_0x3e5c88=qs[_0xe0b0('0x21')](_0x4700cc,_0x28586d);var _0x10745d={'where':_0x3e5c88['where']};return db[_0xe0b0('0x1d')][_0xe0b0('0x13')](_0x10745d)['then'](function(_0x15e13b){_0x4de537[_0xe0b0('0x13')]=_0x15e13b;_0x3e5c88[_0xe0b0('0x22')]=qs[_0xe0b0('0x22')](_0x28586d[_0xe0b0('0x23')]);return db[_0xe0b0('0x1d')][_0xe0b0('0x24')](_0x3e5c88);})['then'](function(_0x1854b8){_0x4de537[_0xe0b0('0x25')]=_0x1854b8;return _0x4de537;})['then'](respondWithFilteredResult(_0x576352,_0x3e5c88))['catch'](handleError(_0x576352,null));};exports[_0xe0b0('0x26')]=function(_0x33e672,_0x422575){var _0x3f81d5={'raw':!![],'where':{'id':_0x33e672['params']['id']}},_0x2ab1b1={};_0x2ab1b1[_0xe0b0('0x27')]=_[_0xe0b0('0x28')](db[_0xe0b0('0x1d')][_0xe0b0('0x29')]);_0x2ab1b1[_0xe0b0('0x23')]=_['keys'](_0x33e672[_0xe0b0('0x23')]);_0x2ab1b1[_0xe0b0('0x2a')]=_[_0xe0b0('0x2b')](_0x2ab1b1[_0xe0b0('0x27')],_0x2ab1b1[_0xe0b0('0x23')]);_0x3f81d5[_0xe0b0('0x2c')]=_[_0xe0b0('0x2b')](_0x2ab1b1[_0xe0b0('0x27')],qs[_0xe0b0('0x2d')](_0x33e672[_0xe0b0('0x23')][_0xe0b0('0x2d')]));_0x3f81d5[_0xe0b0('0x2c')]=_0x3f81d5[_0xe0b0('0x2c')][_0xe0b0('0x2e')]?_0x3f81d5[_0xe0b0('0x2c')]:_0x2ab1b1['model'];if(_0x33e672[_0xe0b0('0x23')][_0xe0b0('0x2f')]){_0x3f81d5[_0xe0b0('0x22')]=[{'all':!![]}];}_0x3f81d5=_[_0xe0b0('0x30')]({},_0x3f81d5,_0x33e672[_0xe0b0('0x31')]);return db[_0xe0b0('0x1d')][_0xe0b0('0x32')](_0x3f81d5)['then'](handleEntityNotFound(_0x422575,null))['then'](respondWithResult(_0x422575,null))['catch'](handleError(_0x422575,null));};exports['create']=function(_0x26137c,_0xc3d967){return db[_0xe0b0('0x1d')]['create'](_0x26137c[_0xe0b0('0x33')],{})[_0xe0b0('0x18')](function(_0x1cd705){var _0x297c64=_0x26137c['user'][_0xe0b0('0x34')]({'plain':!![]});if(!_0x297c64)throw new Error(_0xe0b0('0x35'));if(_0x297c64[_0xe0b0('0x36')]===_0xe0b0('0x37')){var _0x4265e3=_0x1cd705[_0xe0b0('0x34')]({'plain':!![]});var _0x8b745=_0xe0b0('0x16');return db[_0xe0b0('0x38')]['find']({'where':{'name':_0x8b745,'userProfileId':_0x297c64[_0xe0b0('0x39')]},'raw':!![]})['then'](function(_0x34178d){if(_0x34178d&&_0x34178d[_0xe0b0('0x3a')]===0x0){return db[_0xe0b0('0x3b')][_0xe0b0('0x3c')]({'name':_0x4265e3['name'],'resourceId':_0x4265e3['id'],'type':_0x34178d[_0xe0b0('0x1b')],'sectionId':_0x34178d['id']},{})[_0xe0b0('0x18')](function(){return _0x1cd705;});}else{return _0x1cd705;}})[_0xe0b0('0x3d')](function(_0x402a0e){logger[_0xe0b0('0x19')](_0xe0b0('0x3e'),_0x402a0e);throw _0x402a0e;});}return _0x1cd705;})[_0xe0b0('0x18')](respondWithResult(_0xc3d967,0xc9))[_0xe0b0('0x3d')](handleError(_0xc3d967,null));};exports['update']=function(_0x2aad80,_0x309bbf){if(_0x2aad80['body']['id']){delete _0x2aad80['body']['id'];}return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x2aad80['params']['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x309bbf,null))[_0xe0b0('0x18')](saveUpdates(_0x2aad80[_0xe0b0('0x33')],null))[_0xe0b0('0x18')](respondWithResult(_0x309bbf,null))[_0xe0b0('0x3d')](handleError(_0x309bbf,null));};exports['destroy']=function(_0x5d2fa2,_0x51c580){return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x5d2fa2['params']['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x51c580,null))[_0xe0b0('0x18')](removeEntity(_0x51c580,null))[_0xe0b0('0x3d')](handleError(_0x51c580,null));};exports[_0xe0b0('0x3f')]=function(_0x16ccca,_0x5c6f94){return db['SmsQueue'][_0xe0b0('0x3f')]()[_0xe0b0('0x18')](respondWithResult(_0x5c6f94,null))[_0xe0b0('0x3d')](handleError(_0x5c6f94,null));};exports[_0xe0b0('0x40')]=function(_0x1bf77d,_0x575c7d){var _0x3b1474={'raw':!![],'where':{}},_0x11d4fd={},_0x534340;return db['SmsQueue']['findOne']({'where':{'id':_0x1bf77d[_0xe0b0('0x41')]['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x575c7d,null))[_0xe0b0('0x18')](function(_0x364877){if(_0x364877){_0x534340=_0x364877['get']({'plain':!![]});_0x11d4fd[_0xe0b0('0x27')]=_[_0xe0b0('0x28')](db['UserSmsQueue']['rawAttributes']);_0x11d4fd[_0xe0b0('0x23')]=_[_0xe0b0('0x28')](_0x1bf77d['query']);_0x11d4fd[_0xe0b0('0x2a')]=_[_0xe0b0('0x2b')](_0x11d4fd['model'],_0x11d4fd['query']);_0x3b1474[_0xe0b0('0x2c')]=_['intersection'](_0x11d4fd[_0xe0b0('0x27')],qs[_0xe0b0('0x2d')](_0x1bf77d[_0xe0b0('0x23')][_0xe0b0('0x2d')]));_0x3b1474[_0xe0b0('0x2c')]=_0x3b1474[_0xe0b0('0x2c')]['length']?_0x3b1474['attributes']:_0x11d4fd[_0xe0b0('0x27')];if(!_0x1bf77d['query']['hasOwnProperty'](_0xe0b0('0x42'))){_0x3b1474[_0xe0b0('0x12')]=qs['limit'](_0x1bf77d['query'][_0xe0b0('0x12')]);_0x3b1474[_0xe0b0('0x10')]=qs[_0xe0b0('0x10')](_0x1bf77d[_0xe0b0('0x23')][_0xe0b0('0x10')]);}_0x3b1474[_0xe0b0('0x43')]=qs[_0xe0b0('0x44')](_0x1bf77d['query'][_0xe0b0('0x44')]);_0x3b1474['where']=qs[_0xe0b0('0x2a')](_['pick'](_0x1bf77d['query'],_0x11d4fd[_0xe0b0('0x2a')]));_0x3b1474[_0xe0b0('0x45')][_0xe0b0('0x46')]=_0x364877['id'];if(_0x1bf77d[_0xe0b0('0x23')][_0xe0b0('0x47')]){_0x3b1474[_0xe0b0('0x45')]=_[_0xe0b0('0x30')](_0x3b1474[_0xe0b0('0x45')],{'$or':_[_0xe0b0('0x48')](_0x3b1474['attributes'],function(_0x253ab0){var _0x57ccc9={};_0x57ccc9[_0x253ab0]={'$like':'%'+_0x1bf77d[_0xe0b0('0x23')][_0xe0b0('0x47')]+'%'};return _0x57ccc9;})});}_0x3b1474=_[_0xe0b0('0x30')]({},_0x3b1474,_0x1bf77d[_0xe0b0('0x31')]);return db[_0xe0b0('0x49')][_0xe0b0('0x24')](_0x3b1474);}})['then'](function(_0x1a057c){if(_0x1a057c){return db[_0xe0b0('0x4a')][_0xe0b0('0x4b')]({'where':{'id':_[_0xe0b0('0x48')](_0x1a057c,_0xe0b0('0x4c')),'role':_0xe0b0('0x4d')},'attributes':['id',_0xe0b0('0x1b'),_0xe0b0('0x4e'),_0xe0b0('0x4f'),_0xe0b0('0x50')]});}})[_0xe0b0('0x18')](function(_0x18ab99){if(_0x18ab99){return{'count':_0x18ab99[_0xe0b0('0x13')],'rows':_[_0xe0b0('0x48')](_0x18ab99[_0xe0b0('0x25')],function(_0x34c642){return{'membername':_0x34c642[_0xe0b0('0x1b')],'UserId':_0x34c642['id'],'queue_name':_0x534340[_0xe0b0('0x1b')],'SmsQueueId':_0x534340['id'],'interface':util['format'](_0xe0b0('0x51'),_0xe0b0('0x52'),_0x34c642[_0xe0b0('0x1b')]),'penalty':0x0,'paused':_0x34c642[_0xe0b0('0x4e')],'createdAt':_0x34c642[_0xe0b0('0x50')],'updatedAt':_0x34c642[_0xe0b0('0x4f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe0b0('0x18')](respondWithFilteredResult(_0x575c7d,_0x3b1474))['catch'](handleError(_0x575c7d,null));};exports['getTeams']=function(_0x139014,_0x2a0415){var _0x157556={};var _0x47ecc1={};var _0x117d20;var _0x13fb4b;return db[_0xe0b0('0x1d')][_0xe0b0('0x53')]({'where':{'id':_0x139014[_0xe0b0('0x41')]['id']}})['then'](handleEntityNotFound(_0x2a0415,null))[_0xe0b0('0x18')](function(_0x242120){if(_0x242120){_0x117d20=_0x242120;_0x47ecc1[_0xe0b0('0x27')]=_['keys'](db[_0xe0b0('0x54')][_0xe0b0('0x29')]);_0x47ecc1['query']=_[_0xe0b0('0x28')](_0x139014['query']);_0x47ecc1['filters']=_[_0xe0b0('0x2b')](_0x47ecc1['model'],_0x47ecc1['query']);_0x157556[_0xe0b0('0x2c')]=_[_0xe0b0('0x2b')](_0x47ecc1[_0xe0b0('0x27')],qs[_0xe0b0('0x2d')](_0x139014['query'][_0xe0b0('0x2d')]));_0x157556[_0xe0b0('0x2c')]=_0x157556[_0xe0b0('0x2c')][_0xe0b0('0x2e')]?_0x157556[_0xe0b0('0x2c')]:_0x47ecc1[_0xe0b0('0x27')];_0x157556[_0xe0b0('0x43')]=qs[_0xe0b0('0x44')](_0x139014['query']['sort']);_0x157556[_0xe0b0('0x45')]=qs[_0xe0b0('0x2a')](_[_0xe0b0('0x55')](_0x139014['query'],_0x47ecc1['filters']));if(_0x139014[_0xe0b0('0x23')][_0xe0b0('0x47')]){_0x157556['where']=_['merge'](_0x157556[_0xe0b0('0x45')],{'$or':_[_0xe0b0('0x48')](_0x157556[_0xe0b0('0x2c')],function(_0x29175a){var _0x3b263f={};_0x3b263f[_0x29175a]={'$like':'%'+_0x139014[_0xe0b0('0x23')][_0xe0b0('0x47')]+'%'};return _0x3b263f;})});}_0x157556=_[_0xe0b0('0x30')]({},_0x157556,_0x139014['options']);return _0x117d20[_0xe0b0('0x56')](_0x157556);}})[_0xe0b0('0x18')](function(_0x1673bc){if(_0x1673bc){_0x13fb4b=_0x1673bc['length'];if(!_0x139014['query']['hasOwnProperty']('nolimit')){_0x157556['limit']=qs['limit'](_0x139014[_0xe0b0('0x23')]['limit']);_0x157556['offset']=qs[_0xe0b0('0x10')](_0x139014[_0xe0b0('0x23')][_0xe0b0('0x10')]);}return _0x117d20[_0xe0b0('0x56')](_0x157556);}})[_0xe0b0('0x18')](function(_0xd0629e){if(_0xd0629e){return _0xd0629e?{'count':_0x13fb4b,'rows':_0xd0629e}:null;}})[_0xe0b0('0x18')](respondWithResult(_0x2a0415,null))[_0xe0b0('0x3d')](handleError(_0x2a0415,null));};exports['addTeams']=function(_0x3097fb,_0x5da8fd){var _0x86e90=_0x3097fb[_0xe0b0('0x33')][_0xe0b0('0x57')];return db[_0xe0b0('0x54')][_0xe0b0('0x24')]({'where':{'id':_0x86e90},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe0b0('0x58'),'attributes':['id','name',_0xe0b0('0x59'),_0xe0b0('0x5a'),_0xe0b0('0x5b')],'raw':!![]}]})[_0xe0b0('0x18')](function(_0x4a78f8){if(_0x4a78f8){var _0x311f79=_[_0xe0b0('0x5c')](_0x4a78f8,function(_0x49deef){var _0x4cf60a=_0x49deef[_0xe0b0('0x34')]({'plain':!![]});return _0x4cf60a[_0xe0b0('0x58')];});return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x3097fb[_0xe0b0('0x41')]['id']}})[_0xe0b0('0x18')](function(_0x34f4ff){return db[_0xe0b0('0x5d')][_0xe0b0('0x5e')](function(_0x24571b){return _0x34f4ff['addTeams'](_0x86e90,{'transaction':_0x24571b})['then'](function(){return BPromise[_0xe0b0('0x5f')](_0x311f79,function(_0x4880d5){return db['UserSmsQueue']['findOrCreate']({'where':{'UserId':_0x4880d5['id'],'SmsQueueId':_0x3097fb['params']['id']},'transaction':_0x24571b});});})[_0xe0b0('0x18')](function(){_0x311f79['forEach'](function(_0x654d2b){socket[_0xe0b0('0x60')](_0xe0b0('0x61'),{'UserId':_0x654d2b['id'],'SmsQueueId':_0x34f4ff['id']});});});});});}})[_0xe0b0('0x18')](respondWithStatusCode(_0x5da8fd,null))['catch'](handleError(_0x5da8fd,null));};exports[_0xe0b0('0x62')]=function(_0x948708,_0x5a0817){return db[_0xe0b0('0x54')][_0xe0b0('0x24')]({'where':{'id':_0x948708[_0xe0b0('0x23')][_0xe0b0('0x57')]},'attributes':['id'],'include':[{'model':db[_0xe0b0('0x4a')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5a0817,null))['then'](function(_0x545694){var _0x5c258b=_[_0xe0b0('0x48')](_0x545694,'id');var _0x567e1a=[];var _0x3c09af=[];var _0x5f4aaf=squel[_0xe0b0('0x63')]();_0x5f4aaf[_0xe0b0('0x64')](_0xe0b0('0x65'))[_0xe0b0('0x66')](_0xe0b0('0x67'),'tq')[_0xe0b0('0x68')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')['where']('SmsQueueId\x20=\x20?',_0x948708[_0xe0b0('0x41')]['id']);for(var _0x261381=0x0;_0x261381<_0x545694[_0xe0b0('0x2e')];_0x261381+=0x1){let _0x4377f7=_0x545694[_0x261381];for(var _0x2c1149=0x0;_0x2c1149<_0x4377f7['Agents'][_0xe0b0('0x2e')];_0x2c1149+=0x1){let _0x39a07b=_0x4377f7[_0xe0b0('0x58')][_0x2c1149];var _0xc6090e=_0x5f4aaf[_0xe0b0('0x69')]();_0xc6090e[_0xe0b0('0x45')](_0xe0b0('0x6a'),_0x39a07b['id']);_0x3c09af[_0xe0b0('0x6b')](db[_0xe0b0('0x5d')]['query'](_0xc6090e['toString'](),{'type':db[_0xe0b0('0x5d')][_0xe0b0('0x6c')]['SELECT']})[_0xe0b0('0x18')](function(_0x4593f1){if(_0x4593f1[_0xe0b0('0x2e')]===0x1){return _0x39a07b['id'];}else{var _0x3fcffd=_[_0xe0b0('0x6d')](_[_0xe0b0('0x48')](_0x4593f1,_0xe0b0('0x6e')),function(_0xc8eba3){return _['includes'](_0x5c258b,_0xc8eba3);});if(_0x3fcffd){return _0x39a07b['id'];}}}));}}return BPromise['all'](_0x3c09af)['then'](function(_0xc19743){_0x567e1a=_(_0x567e1a)[_0xe0b0('0x6f')](_0xc19743)['compact']()[_0xe0b0('0x70')]();return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x948708[_0xe0b0('0x41')]['id']}})['then'](function(_0x56c4b9){return db['sequelize'][_0xe0b0('0x5e')](function(_0x266835){return _0x56c4b9['removeTeams'](_0x948708[_0xe0b0('0x23')][_0xe0b0('0x57')],{'transaction':_0x266835})['then'](function(){if(!_['isEmpty'](_0x567e1a)){return _0x56c4b9[_0xe0b0('0x71')](_0x567e1a,{'transaction':_0x266835});}})['then'](function(){_0x567e1a[_0xe0b0('0x72')](function(_0x5f06c0){socket[_0xe0b0('0x60')](_0xe0b0('0x73'),{'UserId':_0x5f06c0,'SmsQueueId':_0x56c4b9['id']});});});});});});})[_0xe0b0('0x18')](respondWithStatusCode(_0x5a0817,null))[_0xe0b0('0x3d')](handleError(_0x5a0817,null));};exports[_0xe0b0('0x74')]=function(_0x1ec7c2,_0x434dfa){return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x1ec7c2['params']['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x434dfa,null))[_0xe0b0('0x18')](function(_0x2b40eb){if(_0x2b40eb){return _0x2b40eb['addAgents'](_0x1ec7c2[_0xe0b0('0x33')]['ids'],_[_0xe0b0('0x75')](_0x1ec7c2[_0xe0b0('0x33')],['ids','id'])||{})[_0xe0b0('0x76')](function(_0x4e4b45){for(var _0x528932=0x0;_0x528932<_0x1ec7c2[_0xe0b0('0x33')]['ids']['length'];_0x528932+=0x1){socket[_0xe0b0('0x60')](_0xe0b0('0x61'),{'UserId':Number(_0x1ec7c2[_0xe0b0('0x33')][_0xe0b0('0x57')][_0x528932]),'SmsQueueId':Number(_0x1ec7c2[_0xe0b0('0x41')]['id'])});}return _0x4e4b45;});}})[_0xe0b0('0x18')](respondWithResult(_0x434dfa,null))['catch'](handleError(_0x434dfa,null));};exports[_0xe0b0('0x71')]=function(_0x4609d5,_0x421b3b){return db['SmsQueue'][_0xe0b0('0x32')]({'where':{'id':_0x4609d5[_0xe0b0('0x41')]['id']}})['then'](handleEntityNotFound(_0x421b3b,null))['then'](function(_0x33f89a){if(_0x33f89a){return _0x33f89a['removeAgents'](_0x4609d5[_0xe0b0('0x23')][_0xe0b0('0x57')])[_0xe0b0('0x18')](function(){if(_[_0xe0b0('0x77')](_0x4609d5[_0xe0b0('0x23')][_0xe0b0('0x57')])){for(var _0x3d70d7=0x0;_0x3d70d7<_0x4609d5['query'][_0xe0b0('0x57')][_0xe0b0('0x2e')];_0x3d70d7+=0x1){socket[_0xe0b0('0x60')](_0xe0b0('0x73'),{'UserId':Number(_0x4609d5[_0xe0b0('0x23')]['ids'][_0x3d70d7]),'SmsQueueId':Number(_0x4609d5['params']['id'])});}}else{socket[_0xe0b0('0x60')](_0xe0b0('0x73'),{'UserId':Number(_0x4609d5[_0xe0b0('0x23')][_0xe0b0('0x57')]),'SmsQueueId':Number(_0x4609d5[_0xe0b0('0x41')]['id'])});}});}})[_0xe0b0('0x18')](respondWithStatusCode(_0x421b3b,null))[_0xe0b0('0x3d')](handleError(_0x421b3b,null));};exports[_0xe0b0('0x78')]=function(_0x932e,_0x1b3f4d){var _0x4fe048={};var _0xac45e6={};var _0x401c4b;var _0x3e18a3;return db[_0xe0b0('0x1d')]['findOne']({'where':{'id':_0x932e[_0xe0b0('0x41')]['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x1b3f4d,null))[_0xe0b0('0x18')](function(_0x116c16){if(_0x116c16){_0x401c4b=_0x116c16;_0xac45e6[_0xe0b0('0x27')]=_['keys'](db[_0xe0b0('0x4a')]['rawAttributes']);_0xac45e6[_0xe0b0('0x23')]=_[_0xe0b0('0x28')](_0x932e[_0xe0b0('0x23')]);_0xac45e6[_0xe0b0('0x2a')]=_[_0xe0b0('0x2b')](_0xac45e6['model'],_0xac45e6['query']);_0x4fe048[_0xe0b0('0x2c')]=_['intersection'](_0xac45e6[_0xe0b0('0x27')],qs['fields'](_0x932e[_0xe0b0('0x23')][_0xe0b0('0x2d')]));_0x4fe048[_0xe0b0('0x2c')]=_0x4fe048[_0xe0b0('0x2c')][_0xe0b0('0x2e')]?_0x4fe048[_0xe0b0('0x2c')]:_0xac45e6[_0xe0b0('0x27')];_0x4fe048['order']=qs['sort'](_0x932e[_0xe0b0('0x23')][_0xe0b0('0x44')]);_0x4fe048[_0xe0b0('0x45')]=qs[_0xe0b0('0x2a')](_[_0xe0b0('0x55')](_0x932e[_0xe0b0('0x23')],_0xac45e6[_0xe0b0('0x2a')]));if(_0x932e[_0xe0b0('0x23')][_0xe0b0('0x47')]){_0x4fe048[_0xe0b0('0x45')]=_['merge'](_0x4fe048['where'],{'$or':_[_0xe0b0('0x48')](_0x4fe048[_0xe0b0('0x2c')],function(_0x187465){var _0x3f9e6b={};_0x3f9e6b[_0x187465]={'$like':'%'+_0x932e[_0xe0b0('0x23')][_0xe0b0('0x47')]+'%'};return _0x3f9e6b;})});}_0x4fe048=_[_0xe0b0('0x30')]({},_0x4fe048,_0x932e['options']);return _0x401c4b['getAgents'](_0x4fe048);}})[_0xe0b0('0x18')](function(_0x1ea4d5){if(_0x1ea4d5){_0x3e18a3=_0x1ea4d5[_0xe0b0('0x2e')];if(!_0x932e[_0xe0b0('0x23')][_0xe0b0('0x79')](_0xe0b0('0x42'))){_0x4fe048[_0xe0b0('0x12')]=qs[_0xe0b0('0x12')](_0x932e[_0xe0b0('0x23')][_0xe0b0('0x12')]);_0x4fe048['offset']=qs[_0xe0b0('0x10')](_0x932e[_0xe0b0('0x23')]['offset']);}return _0x401c4b[_0xe0b0('0x78')](_0x4fe048);}})[_0xe0b0('0x18')](function(_0x3615f9){if(_0x3615f9){return _0x3615f9?{'count':_0x3e18a3,'rows':_0x3615f9}:null;}})[_0xe0b0('0x18')](respondWithResult(_0x1b3f4d,null))[_0xe0b0('0x3d')](handleError(_0x1b3f4d,null));};
\ No newline at end of file
+var _0x0b0e=['userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','join','clone','ut.UserId\x20=\x20?','push','QueryTypes','every','TeamId','union','value','removeAgents','forEach','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','hasOwnProperty','bluebird','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','json','offset','undefined','limit','count','set','update','SmsQueues','destroy','then','error','stack','name','send','SmsQueue','fieldName','type','key','getOptions','include','query','findAll','rows','show','model','keys','rawAttributes','filters','intersection','attributes','fields','length','includeAll','merge','options','find','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','params','nolimit','order','sort','where','SmsQueueId','filter','map','UserSmsQueue','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','%s/%s','SIP','findOne','Team','pick','getTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','emit'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4b91c4,_0x23f35f){_0x4b91c4=_0x4b91c4-0x0;var _0x25cb80=_0x0b0e[_0x4b91c4];return _0x25cb80;};'use strict';var BPromise=require(_0xe0b0('0x0'));var util=require('util');var _=require(_0xe0b0('0x1'));var squel=require('squel');var Redis=require(_0xe0b0('0x2'));var qs=require(_0xe0b0('0x3'));var logger=require(_0xe0b0('0x4'))(_0xe0b0('0x5'));var config=require(_0xe0b0('0x6'));var db=require(_0xe0b0('0x7'))['db'];config[_0xe0b0('0x8')]=_[_0xe0b0('0x9')](config[_0xe0b0('0x8')],{'host':_0xe0b0('0xa'),'port':0x18eb});var socket=require(_0xe0b0('0xb'))(new Redis(config['redis']));require('./smsQueue.socket')[_0xe0b0('0xc')](socket);function respondWithStatusCode(_0x435060,_0xc4a085){_0xc4a085=_0xc4a085||0xcc;return function(_0x2ac27e){if(_0x2ac27e){return _0x435060['sendStatus'](_0xc4a085);}return _0x435060[_0xe0b0('0xd')](_0xc4a085)[_0xe0b0('0xe')]();};}function respondWithResult(_0x553d4f,_0x1fef28){_0x1fef28=_0x1fef28||0xc8;return function(_0x2f32b6){if(_0x2f32b6){return _0x553d4f['status'](_0x1fef28)[_0xe0b0('0xf')](_0x2f32b6);}};}function respondWithFilteredResult(_0x2cdad2,_0x39b1c2){return function(_0x585615){if(_0x585615){var _0x3068c0=typeof _0x39b1c2[_0xe0b0('0x10')]===_0xe0b0('0x11')&&typeof _0x39b1c2[_0xe0b0('0x12')]===_0xe0b0('0x11');var _0x4d2bf7=_0x585615[_0xe0b0('0x13')];var _0x154de6=_0x3068c0?0x0:_0x39b1c2[_0xe0b0('0x10')];var _0x24babd=_0x3068c0?_0x585615[_0xe0b0('0x13')]:_0x39b1c2['offset']+_0x39b1c2[_0xe0b0('0x12')];var _0x5adb01;if(_0x24babd>=_0x4d2bf7){_0x24babd=_0x4d2bf7;_0x5adb01=0xc8;}else{_0x5adb01=0xce;}_0x2cdad2[_0xe0b0('0xd')](_0x5adb01);return _0x2cdad2[_0xe0b0('0x14')]('Content-Range',_0x154de6+'-'+_0x24babd+'/'+_0x4d2bf7)[_0xe0b0('0xf')](_0x585615);}return null;};}function saveUpdates(_0x4a4cc0){return function(_0x2d6fb6){if(_0x2d6fb6){return _0x2d6fb6[_0xe0b0('0x15')](_0x4a4cc0)['then'](function(_0x54a3eb){return _0x54a3eb;});}return null;};}function removeEntity(_0x46bb44){return function(_0x50a441){if(_0x50a441){return _0x50a441['destroy']()['then'](function(){var _0x1920ee=_0x50a441['get']({'plain':!![]});var _0x52598b=_0xe0b0('0x16');return db['UserProfileResource'][_0xe0b0('0x17')]({'where':{'type':_0x52598b,'resourceId':_0x1920ee['id']}})['then'](function(){return _0x50a441;});})[_0xe0b0('0x18')](function(){_0x46bb44[_0xe0b0('0xd')](0xcc)[_0xe0b0('0xe')]();});}};}function handleEntityNotFound(_0x310a6d){return function(_0x2cf6a1){if(!_0x2cf6a1){_0x310a6d['sendStatus'](0x194);}return _0x2cf6a1;};}function handleError(_0x4cae54,_0x2fa820){_0x2fa820=_0x2fa820||0x1f4;return function(_0x5512bb){logger[_0xe0b0('0x19')](_0x5512bb[_0xe0b0('0x1a')]);if(_0x5512bb['name']){delete _0x5512bb[_0xe0b0('0x1b')];}_0x4cae54['status'](_0x2fa820)[_0xe0b0('0x1c')](_0x5512bb);};}exports['index']=function(_0x28586d,_0x576352){var _0x3e5c88={};var _0x4de537={'count':0x0,'rows':[]};var _0x4700cc=_['map'](db[_0xe0b0('0x1d')]['rawAttributes'],function(_0x362aba){return{'name':_0x362aba[_0xe0b0('0x1e')],'type':_0x362aba[_0xe0b0('0x1f')][_0xe0b0('0x20')]};});_0x3e5c88=qs[_0xe0b0('0x21')](_0x4700cc,_0x28586d);var _0x10745d={'where':_0x3e5c88['where']};return db[_0xe0b0('0x1d')][_0xe0b0('0x13')](_0x10745d)['then'](function(_0x15e13b){_0x4de537[_0xe0b0('0x13')]=_0x15e13b;_0x3e5c88[_0xe0b0('0x22')]=qs[_0xe0b0('0x22')](_0x28586d[_0xe0b0('0x23')]);return db[_0xe0b0('0x1d')][_0xe0b0('0x24')](_0x3e5c88);})['then'](function(_0x1854b8){_0x4de537[_0xe0b0('0x25')]=_0x1854b8;return _0x4de537;})['then'](respondWithFilteredResult(_0x576352,_0x3e5c88))['catch'](handleError(_0x576352,null));};exports[_0xe0b0('0x26')]=function(_0x33e672,_0x422575){var _0x3f81d5={'raw':!![],'where':{'id':_0x33e672['params']['id']}},_0x2ab1b1={};_0x2ab1b1[_0xe0b0('0x27')]=_[_0xe0b0('0x28')](db[_0xe0b0('0x1d')][_0xe0b0('0x29')]);_0x2ab1b1[_0xe0b0('0x23')]=_['keys'](_0x33e672[_0xe0b0('0x23')]);_0x2ab1b1[_0xe0b0('0x2a')]=_[_0xe0b0('0x2b')](_0x2ab1b1[_0xe0b0('0x27')],_0x2ab1b1[_0xe0b0('0x23')]);_0x3f81d5[_0xe0b0('0x2c')]=_[_0xe0b0('0x2b')](_0x2ab1b1[_0xe0b0('0x27')],qs[_0xe0b0('0x2d')](_0x33e672[_0xe0b0('0x23')][_0xe0b0('0x2d')]));_0x3f81d5[_0xe0b0('0x2c')]=_0x3f81d5[_0xe0b0('0x2c')][_0xe0b0('0x2e')]?_0x3f81d5[_0xe0b0('0x2c')]:_0x2ab1b1['model'];if(_0x33e672[_0xe0b0('0x23')][_0xe0b0('0x2f')]){_0x3f81d5[_0xe0b0('0x22')]=[{'all':!![]}];}_0x3f81d5=_[_0xe0b0('0x30')]({},_0x3f81d5,_0x33e672[_0xe0b0('0x31')]);return db[_0xe0b0('0x1d')][_0xe0b0('0x32')](_0x3f81d5)['then'](handleEntityNotFound(_0x422575,null))['then'](respondWithResult(_0x422575,null))['catch'](handleError(_0x422575,null));};exports['create']=function(_0x26137c,_0xc3d967){return db[_0xe0b0('0x1d')]['create'](_0x26137c[_0xe0b0('0x33')],{})[_0xe0b0('0x18')](function(_0x1cd705){var _0x297c64=_0x26137c['user'][_0xe0b0('0x34')]({'plain':!![]});if(!_0x297c64)throw new Error(_0xe0b0('0x35'));if(_0x297c64[_0xe0b0('0x36')]===_0xe0b0('0x37')){var _0x4265e3=_0x1cd705[_0xe0b0('0x34')]({'plain':!![]});var _0x8b745=_0xe0b0('0x16');return db[_0xe0b0('0x38')]['find']({'where':{'name':_0x8b745,'userProfileId':_0x297c64[_0xe0b0('0x39')]},'raw':!![]})['then'](function(_0x34178d){if(_0x34178d&&_0x34178d[_0xe0b0('0x3a')]===0x0){return db[_0xe0b0('0x3b')][_0xe0b0('0x3c')]({'name':_0x4265e3['name'],'resourceId':_0x4265e3['id'],'type':_0x34178d[_0xe0b0('0x1b')],'sectionId':_0x34178d['id']},{})[_0xe0b0('0x18')](function(){return _0x1cd705;});}else{return _0x1cd705;}})[_0xe0b0('0x3d')](function(_0x402a0e){logger[_0xe0b0('0x19')](_0xe0b0('0x3e'),_0x402a0e);throw _0x402a0e;});}return _0x1cd705;})[_0xe0b0('0x18')](respondWithResult(_0xc3d967,0xc9))[_0xe0b0('0x3d')](handleError(_0xc3d967,null));};exports['update']=function(_0x2aad80,_0x309bbf){if(_0x2aad80['body']['id']){delete _0x2aad80['body']['id'];}return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x2aad80['params']['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x309bbf,null))[_0xe0b0('0x18')](saveUpdates(_0x2aad80[_0xe0b0('0x33')],null))[_0xe0b0('0x18')](respondWithResult(_0x309bbf,null))[_0xe0b0('0x3d')](handleError(_0x309bbf,null));};exports['destroy']=function(_0x5d2fa2,_0x51c580){return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x5d2fa2['params']['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x51c580,null))[_0xe0b0('0x18')](removeEntity(_0x51c580,null))[_0xe0b0('0x3d')](handleError(_0x51c580,null));};exports[_0xe0b0('0x3f')]=function(_0x16ccca,_0x5c6f94){return db['SmsQueue'][_0xe0b0('0x3f')]()[_0xe0b0('0x18')](respondWithResult(_0x5c6f94,null))[_0xe0b0('0x3d')](handleError(_0x5c6f94,null));};exports[_0xe0b0('0x40')]=function(_0x1bf77d,_0x575c7d){var _0x3b1474={'raw':!![],'where':{}},_0x11d4fd={},_0x534340;return db['SmsQueue']['findOne']({'where':{'id':_0x1bf77d[_0xe0b0('0x41')]['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x575c7d,null))[_0xe0b0('0x18')](function(_0x364877){if(_0x364877){_0x534340=_0x364877['get']({'plain':!![]});_0x11d4fd[_0xe0b0('0x27')]=_[_0xe0b0('0x28')](db['UserSmsQueue']['rawAttributes']);_0x11d4fd[_0xe0b0('0x23')]=_[_0xe0b0('0x28')](_0x1bf77d['query']);_0x11d4fd[_0xe0b0('0x2a')]=_[_0xe0b0('0x2b')](_0x11d4fd['model'],_0x11d4fd['query']);_0x3b1474[_0xe0b0('0x2c')]=_['intersection'](_0x11d4fd[_0xe0b0('0x27')],qs[_0xe0b0('0x2d')](_0x1bf77d[_0xe0b0('0x23')][_0xe0b0('0x2d')]));_0x3b1474[_0xe0b0('0x2c')]=_0x3b1474[_0xe0b0('0x2c')]['length']?_0x3b1474['attributes']:_0x11d4fd[_0xe0b0('0x27')];if(!_0x1bf77d['query']['hasOwnProperty'](_0xe0b0('0x42'))){_0x3b1474[_0xe0b0('0x12')]=qs['limit'](_0x1bf77d['query'][_0xe0b0('0x12')]);_0x3b1474[_0xe0b0('0x10')]=qs[_0xe0b0('0x10')](_0x1bf77d[_0xe0b0('0x23')][_0xe0b0('0x10')]);}_0x3b1474[_0xe0b0('0x43')]=qs[_0xe0b0('0x44')](_0x1bf77d['query'][_0xe0b0('0x44')]);_0x3b1474['where']=qs[_0xe0b0('0x2a')](_['pick'](_0x1bf77d['query'],_0x11d4fd[_0xe0b0('0x2a')]));_0x3b1474[_0xe0b0('0x45')][_0xe0b0('0x46')]=_0x364877['id'];if(_0x1bf77d[_0xe0b0('0x23')][_0xe0b0('0x47')]){_0x3b1474[_0xe0b0('0x45')]=_[_0xe0b0('0x30')](_0x3b1474[_0xe0b0('0x45')],{'$or':_[_0xe0b0('0x48')](_0x3b1474['attributes'],function(_0x253ab0){var _0x57ccc9={};_0x57ccc9[_0x253ab0]={'$like':'%'+_0x1bf77d[_0xe0b0('0x23')][_0xe0b0('0x47')]+'%'};return _0x57ccc9;})});}_0x3b1474=_[_0xe0b0('0x30')]({},_0x3b1474,_0x1bf77d[_0xe0b0('0x31')]);return db[_0xe0b0('0x49')][_0xe0b0('0x24')](_0x3b1474);}})['then'](function(_0x1a057c){if(_0x1a057c){return db[_0xe0b0('0x4a')][_0xe0b0('0x4b')]({'where':{'id':_[_0xe0b0('0x48')](_0x1a057c,_0xe0b0('0x4c')),'role':_0xe0b0('0x4d')},'attributes':['id',_0xe0b0('0x1b'),_0xe0b0('0x4e'),_0xe0b0('0x4f'),_0xe0b0('0x50')]});}})[_0xe0b0('0x18')](function(_0x18ab99){if(_0x18ab99){return{'count':_0x18ab99[_0xe0b0('0x13')],'rows':_[_0xe0b0('0x48')](_0x18ab99[_0xe0b0('0x25')],function(_0x34c642){return{'membername':_0x34c642[_0xe0b0('0x1b')],'UserId':_0x34c642['id'],'queue_name':_0x534340[_0xe0b0('0x1b')],'SmsQueueId':_0x534340['id'],'interface':util['format'](_0xe0b0('0x51'),_0xe0b0('0x52'),_0x34c642[_0xe0b0('0x1b')]),'penalty':0x0,'paused':_0x34c642[_0xe0b0('0x4e')],'createdAt':_0x34c642[_0xe0b0('0x50')],'updatedAt':_0x34c642[_0xe0b0('0x4f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe0b0('0x18')](respondWithFilteredResult(_0x575c7d,_0x3b1474))['catch'](handleError(_0x575c7d,null));};exports['getTeams']=function(_0x139014,_0x2a0415){var _0x157556={};var _0x47ecc1={};var _0x117d20;var _0x13fb4b;return db[_0xe0b0('0x1d')][_0xe0b0('0x53')]({'where':{'id':_0x139014[_0xe0b0('0x41')]['id']}})['then'](handleEntityNotFound(_0x2a0415,null))[_0xe0b0('0x18')](function(_0x242120){if(_0x242120){_0x117d20=_0x242120;_0x47ecc1[_0xe0b0('0x27')]=_['keys'](db[_0xe0b0('0x54')][_0xe0b0('0x29')]);_0x47ecc1['query']=_[_0xe0b0('0x28')](_0x139014['query']);_0x47ecc1['filters']=_[_0xe0b0('0x2b')](_0x47ecc1['model'],_0x47ecc1['query']);_0x157556[_0xe0b0('0x2c')]=_[_0xe0b0('0x2b')](_0x47ecc1[_0xe0b0('0x27')],qs[_0xe0b0('0x2d')](_0x139014['query'][_0xe0b0('0x2d')]));_0x157556[_0xe0b0('0x2c')]=_0x157556[_0xe0b0('0x2c')][_0xe0b0('0x2e')]?_0x157556[_0xe0b0('0x2c')]:_0x47ecc1[_0xe0b0('0x27')];_0x157556[_0xe0b0('0x43')]=qs[_0xe0b0('0x44')](_0x139014['query']['sort']);_0x157556[_0xe0b0('0x45')]=qs[_0xe0b0('0x2a')](_[_0xe0b0('0x55')](_0x139014['query'],_0x47ecc1['filters']));if(_0x139014[_0xe0b0('0x23')][_0xe0b0('0x47')]){_0x157556['where']=_['merge'](_0x157556[_0xe0b0('0x45')],{'$or':_[_0xe0b0('0x48')](_0x157556[_0xe0b0('0x2c')],function(_0x29175a){var _0x3b263f={};_0x3b263f[_0x29175a]={'$like':'%'+_0x139014[_0xe0b0('0x23')][_0xe0b0('0x47')]+'%'};return _0x3b263f;})});}_0x157556=_[_0xe0b0('0x30')]({},_0x157556,_0x139014['options']);return _0x117d20[_0xe0b0('0x56')](_0x157556);}})[_0xe0b0('0x18')](function(_0x1673bc){if(_0x1673bc){_0x13fb4b=_0x1673bc['length'];if(!_0x139014['query']['hasOwnProperty']('nolimit')){_0x157556['limit']=qs['limit'](_0x139014[_0xe0b0('0x23')]['limit']);_0x157556['offset']=qs[_0xe0b0('0x10')](_0x139014[_0xe0b0('0x23')][_0xe0b0('0x10')]);}return _0x117d20[_0xe0b0('0x56')](_0x157556);}})[_0xe0b0('0x18')](function(_0xd0629e){if(_0xd0629e){return _0xd0629e?{'count':_0x13fb4b,'rows':_0xd0629e}:null;}})[_0xe0b0('0x18')](respondWithResult(_0x2a0415,null))[_0xe0b0('0x3d')](handleError(_0x2a0415,null));};exports['addTeams']=function(_0x3097fb,_0x5da8fd){var _0x86e90=_0x3097fb[_0xe0b0('0x33')][_0xe0b0('0x57')];return db[_0xe0b0('0x54')][_0xe0b0('0x24')]({'where':{'id':_0x86e90},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe0b0('0x58'),'attributes':['id','name',_0xe0b0('0x59'),_0xe0b0('0x5a'),_0xe0b0('0x5b')],'raw':!![]}]})[_0xe0b0('0x18')](function(_0x4a78f8){if(_0x4a78f8){var _0x311f79=_[_0xe0b0('0x5c')](_0x4a78f8,function(_0x49deef){var _0x4cf60a=_0x49deef[_0xe0b0('0x34')]({'plain':!![]});return _0x4cf60a[_0xe0b0('0x58')];});return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x3097fb[_0xe0b0('0x41')]['id']}})[_0xe0b0('0x18')](function(_0x34f4ff){return db[_0xe0b0('0x5d')][_0xe0b0('0x5e')](function(_0x24571b){return _0x34f4ff['addTeams'](_0x86e90,{'transaction':_0x24571b})['then'](function(){return BPromise[_0xe0b0('0x5f')](_0x311f79,function(_0x4880d5){return db['UserSmsQueue']['findOrCreate']({'where':{'UserId':_0x4880d5['id'],'SmsQueueId':_0x3097fb['params']['id']},'transaction':_0x24571b});});})[_0xe0b0('0x18')](function(){_0x311f79['forEach'](function(_0x654d2b){socket[_0xe0b0('0x60')](_0xe0b0('0x61'),{'UserId':_0x654d2b['id'],'SmsQueueId':_0x34f4ff['id']});});});});});}})[_0xe0b0('0x18')](respondWithStatusCode(_0x5da8fd,null))['catch'](handleError(_0x5da8fd,null));};exports[_0xe0b0('0x62')]=function(_0x948708,_0x5a0817){return db[_0xe0b0('0x54')][_0xe0b0('0x24')]({'where':{'id':_0x948708[_0xe0b0('0x23')][_0xe0b0('0x57')]},'attributes':['id'],'include':[{'model':db[_0xe0b0('0x4a')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5a0817,null))['then'](function(_0x545694){var _0x5c258b=_[_0xe0b0('0x48')](_0x545694,'id');var _0x567e1a=[];var _0x3c09af=[];var _0x5f4aaf=squel[_0xe0b0('0x63')]();_0x5f4aaf[_0xe0b0('0x64')](_0xe0b0('0x65'))[_0xe0b0('0x66')](_0xe0b0('0x67'),'tq')[_0xe0b0('0x68')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')['where']('SmsQueueId\x20=\x20?',_0x948708[_0xe0b0('0x41')]['id']);for(var _0x261381=0x0;_0x261381<_0x545694[_0xe0b0('0x2e')];_0x261381+=0x1){let _0x4377f7=_0x545694[_0x261381];for(var _0x2c1149=0x0;_0x2c1149<_0x4377f7['Agents'][_0xe0b0('0x2e')];_0x2c1149+=0x1){let _0x39a07b=_0x4377f7[_0xe0b0('0x58')][_0x2c1149];var _0xc6090e=_0x5f4aaf[_0xe0b0('0x69')]();_0xc6090e[_0xe0b0('0x45')](_0xe0b0('0x6a'),_0x39a07b['id']);_0x3c09af[_0xe0b0('0x6b')](db[_0xe0b0('0x5d')]['query'](_0xc6090e['toString'](),{'type':db[_0xe0b0('0x5d')][_0xe0b0('0x6c')]['SELECT']})[_0xe0b0('0x18')](function(_0x4593f1){if(_0x4593f1[_0xe0b0('0x2e')]===0x1){return _0x39a07b['id'];}else{var _0x3fcffd=_[_0xe0b0('0x6d')](_[_0xe0b0('0x48')](_0x4593f1,_0xe0b0('0x6e')),function(_0xc8eba3){return _['includes'](_0x5c258b,_0xc8eba3);});if(_0x3fcffd){return _0x39a07b['id'];}}}));}}return BPromise['all'](_0x3c09af)['then'](function(_0xc19743){_0x567e1a=_(_0x567e1a)[_0xe0b0('0x6f')](_0xc19743)['compact']()[_0xe0b0('0x70')]();return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x948708[_0xe0b0('0x41')]['id']}})['then'](function(_0x56c4b9){return db['sequelize'][_0xe0b0('0x5e')](function(_0x266835){return _0x56c4b9['removeTeams'](_0x948708[_0xe0b0('0x23')][_0xe0b0('0x57')],{'transaction':_0x266835})['then'](function(){if(!_['isEmpty'](_0x567e1a)){return _0x56c4b9[_0xe0b0('0x71')](_0x567e1a,{'transaction':_0x266835});}})['then'](function(){_0x567e1a[_0xe0b0('0x72')](function(_0x5f06c0){socket[_0xe0b0('0x60')](_0xe0b0('0x73'),{'UserId':_0x5f06c0,'SmsQueueId':_0x56c4b9['id']});});});});});});})[_0xe0b0('0x18')](respondWithStatusCode(_0x5a0817,null))[_0xe0b0('0x3d')](handleError(_0x5a0817,null));};exports[_0xe0b0('0x74')]=function(_0x1ec7c2,_0x434dfa){return db[_0xe0b0('0x1d')][_0xe0b0('0x32')]({'where':{'id':_0x1ec7c2['params']['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x434dfa,null))[_0xe0b0('0x18')](function(_0x2b40eb){if(_0x2b40eb){return _0x2b40eb['addAgents'](_0x1ec7c2[_0xe0b0('0x33')]['ids'],_[_0xe0b0('0x75')](_0x1ec7c2[_0xe0b0('0x33')],['ids','id'])||{})[_0xe0b0('0x76')](function(_0x4e4b45){for(var _0x528932=0x0;_0x528932<_0x1ec7c2[_0xe0b0('0x33')]['ids']['length'];_0x528932+=0x1){socket[_0xe0b0('0x60')](_0xe0b0('0x61'),{'UserId':Number(_0x1ec7c2[_0xe0b0('0x33')][_0xe0b0('0x57')][_0x528932]),'SmsQueueId':Number(_0x1ec7c2[_0xe0b0('0x41')]['id'])});}return _0x4e4b45;});}})[_0xe0b0('0x18')](respondWithResult(_0x434dfa,null))['catch'](handleError(_0x434dfa,null));};exports[_0xe0b0('0x71')]=function(_0x4609d5,_0x421b3b){return db['SmsQueue'][_0xe0b0('0x32')]({'where':{'id':_0x4609d5[_0xe0b0('0x41')]['id']}})['then'](handleEntityNotFound(_0x421b3b,null))['then'](function(_0x33f89a){if(_0x33f89a){return _0x33f89a['removeAgents'](_0x4609d5[_0xe0b0('0x23')][_0xe0b0('0x57')])[_0xe0b0('0x18')](function(){if(_[_0xe0b0('0x77')](_0x4609d5[_0xe0b0('0x23')][_0xe0b0('0x57')])){for(var _0x3d70d7=0x0;_0x3d70d7<_0x4609d5['query'][_0xe0b0('0x57')][_0xe0b0('0x2e')];_0x3d70d7+=0x1){socket[_0xe0b0('0x60')](_0xe0b0('0x73'),{'UserId':Number(_0x4609d5[_0xe0b0('0x23')]['ids'][_0x3d70d7]),'SmsQueueId':Number(_0x4609d5['params']['id'])});}}else{socket[_0xe0b0('0x60')](_0xe0b0('0x73'),{'UserId':Number(_0x4609d5[_0xe0b0('0x23')][_0xe0b0('0x57')]),'SmsQueueId':Number(_0x4609d5[_0xe0b0('0x41')]['id'])});}});}})[_0xe0b0('0x18')](respondWithStatusCode(_0x421b3b,null))[_0xe0b0('0x3d')](handleError(_0x421b3b,null));};exports[_0xe0b0('0x78')]=function(_0x932e,_0x1b3f4d){var _0x4fe048={};var _0xac45e6={};var _0x401c4b;var _0x3e18a3;return db[_0xe0b0('0x1d')]['findOne']({'where':{'id':_0x932e[_0xe0b0('0x41')]['id']}})[_0xe0b0('0x18')](handleEntityNotFound(_0x1b3f4d,null))[_0xe0b0('0x18')](function(_0x116c16){if(_0x116c16){_0x401c4b=_0x116c16;_0xac45e6[_0xe0b0('0x27')]=_['keys'](db[_0xe0b0('0x4a')]['rawAttributes']);_0xac45e6[_0xe0b0('0x23')]=_[_0xe0b0('0x28')](_0x932e[_0xe0b0('0x23')]);_0xac45e6[_0xe0b0('0x2a')]=_[_0xe0b0('0x2b')](_0xac45e6['model'],_0xac45e6['query']);_0x4fe048[_0xe0b0('0x2c')]=_['intersection'](_0xac45e6[_0xe0b0('0x27')],qs['fields'](_0x932e[_0xe0b0('0x23')][_0xe0b0('0x2d')]));_0x4fe048[_0xe0b0('0x2c')]=_0x4fe048[_0xe0b0('0x2c')][_0xe0b0('0x2e')]?_0x4fe048[_0xe0b0('0x2c')]:_0xac45e6[_0xe0b0('0x27')];_0x4fe048['order']=qs['sort'](_0x932e[_0xe0b0('0x23')][_0xe0b0('0x44')]);_0x4fe048[_0xe0b0('0x45')]=qs[_0xe0b0('0x2a')](_[_0xe0b0('0x55')](_0x932e[_0xe0b0('0x23')],_0xac45e6[_0xe0b0('0x2a')]));if(_0x932e[_0xe0b0('0x23')][_0xe0b0('0x47')]){_0x4fe048[_0xe0b0('0x45')]=_['merge'](_0x4fe048['where'],{'$or':_[_0xe0b0('0x48')](_0x4fe048[_0xe0b0('0x2c')],function(_0x187465){var _0x3f9e6b={};_0x3f9e6b[_0x187465]={'$like':'%'+_0x932e[_0xe0b0('0x23')][_0xe0b0('0x47')]+'%'};return _0x3f9e6b;})});}_0x4fe048=_[_0xe0b0('0x30')]({},_0x4fe048,_0x932e['options']);return _0x401c4b['getAgents'](_0x4fe048);}})[_0xe0b0('0x18')](function(_0x1ea4d5){if(_0x1ea4d5){_0x3e18a3=_0x1ea4d5[_0xe0b0('0x2e')];if(!_0x932e[_0xe0b0('0x23')][_0xe0b0('0x79')](_0xe0b0('0x42'))){_0x4fe048[_0xe0b0('0x12')]=qs[_0xe0b0('0x12')](_0x932e[_0xe0b0('0x23')][_0xe0b0('0x12')]);_0x4fe048['offset']=qs[_0xe0b0('0x10')](_0x932e[_0xe0b0('0x23')]['offset']);}return _0x401c4b[_0xe0b0('0x78')](_0x4fe048);}})[_0xe0b0('0x18')](function(_0x3615f9){if(_0x3615f9){return _0x3615f9?{'count':_0x3e18a3,'rows':_0x3615f9}:null;}})[_0xe0b0('0x18')](respondWithResult(_0x1b3f4d,null))[_0xe0b0('0x3d')](handleError(_0x1b3f4d,null));};
\ No newline at end of file
index 99236a8..ae39cae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x161e=['setMaxListeners','save','emit','events','../../mysqldb','SmsQueue'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x161e,0x159));var _0xe161=function(_0x30b8ad,_0x38cf22){_0x30b8ad=_0x30b8ad-0x0;var _0x260c2f=_0x161e[_0x30b8ad];return _0x260c2f;};'use strict';var EventEmitter=require(_0xe161('0x0'));var SmsQueue=require(_0xe161('0x1'))['db'][_0xe161('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xe161('0x3')](0x0);var events={'afterCreate':_0xe161('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x17e1f3){return function(_0x3c73fe,_0x526349,_0x249b23){SmsQueueEvents[_0xe161('0x5')](_0x17e1f3+':'+_0x3c73fe['id'],_0x3c73fe);SmsQueueEvents[_0xe161('0x5')](_0x17e1f3,_0x3c73fe);_0x249b23(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x9e03=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x7aaceb,_0x12a2c0){var _0x2e720b=function(_0x38383a){while(--_0x38383a){_0x7aaceb['push'](_0x7aaceb['shift']());}};_0x2e720b(++_0x12a2c0);}(_0x9e03,0xbf));var _0x39e0=function(_0x4976f0,_0x12f9a6){_0x4976f0=_0x4976f0-0x0;var _0x28b168=_0x9e03[_0x4976f0];return _0x28b168;};'use strict';var EventEmitter=require(_0x39e0('0x0'));var SmsQueue=require('../../mysqldb')['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x39e0('0x1')](0x0);var events={'afterCreate':_0x39e0('0x2'),'afterUpdate':_0x39e0('0x3'),'afterDestroy':_0x39e0('0x4')};function emitEvent(_0x37d361){return function(_0x21d971,_0x29784e,_0x4e6dfc){SmsQueueEvents[_0x39e0('0x5')](_0x37d361+':'+_0x21d971['id'],_0x21d971);SmsQueueEvents[_0x39e0('0x5')](_0x37d361,_0x21d971);_0x4e6dfc(null);};}for(var e in events){if(events[_0x39e0('0x6')](e)){var event=events[e];SmsQueue[_0x39e0('0x7')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index 16486db..a87e2e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe01=['sms_queues','lodash','moment','bluebird','request-promise','path','rimraf','./smsQueue.attributes','define','SmsQueue'];(function(_0x3058f5,_0x14f82c){var _0x12d9b6=function(_0x271943){while(--_0x271943){_0x3058f5['push'](_0x3058f5['shift']());}};_0x12d9b6(++_0x14f82c);}(_0xbe01,0x79));var _0x1be0=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0xbe01[_0x4fde08];return _0x12e725;};'use strict';var _=require(_0x1be0('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1be0('0x1'));var BPromise=require(_0x1be0('0x2'));var rp=require(_0x1be0('0x3'));var fs=require('fs');var path=require(_0x1be0('0x4'));var rimraf=require(_0x1be0('0x5'));var config=require('../../config/environment');var attributes=require(_0x1be0('0x6'));module['exports']=function(_0x4fdc82,_0x561ed5){return _0x4fdc82[_0x1be0('0x7')](_0x1be0('0x8'),attributes,{'tableName':_0x1be0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa792=['define','SmsQueue','util','../../config/logger','api','moment','bluebird','request-promise','path','exports'];(function(_0x3064e7,_0x34edba){var _0x26038e=function(_0x35336c){while(--_0x35336c){_0x3064e7['push'](_0x3064e7['shift']());}};_0x26038e(++_0x34edba);}(_0xa792,0x142));var _0x2a79=function(_0x3eb36f,_0x2395a5){_0x3eb36f=_0x3eb36f-0x0;var _0x2bf875=_0xa792[_0x3eb36f];return _0x2bf875;};'use strict';var _=require('lodash');var util=require(_0x2a79('0x0'));var logger=require(_0x2a79('0x1'))(_0x2a79('0x2'));var moment=require(_0x2a79('0x3'));var BPromise=require(_0x2a79('0x4'));var rp=require(_0x2a79('0x5'));var fs=require('fs');var path=require(_0x2a79('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./smsQueue.attributes');module[_0x2a79('0x7')]=function(_0x5363b4,_0x20c6cb){return _0x5363b4[_0x2a79('0x8')](_0x2a79('0x9'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6723801..14357f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x791a=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetSmsQueue','SmsQueue','options','raw','where','limit','map','include','model','attributes','find','ShowSmsQueue','catch','lodash','moment','bluebird','ioredis'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x791a,0x6e));var _0xa791=function(_0x16caf7,_0x515bdb){_0x16caf7=_0x16caf7-0x0;var _0x4dd67c=_0x791a[_0x16caf7];return _0x4dd67c;};'use strict';var _=require(_0xa791('0x0'));var util=require('util');var moment=require(_0xa791('0x1'));var BPromise=require(_0xa791('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa791('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa791('0x4'))(_0xa791('0x5'));var config=require(_0xa791('0x6'));var jayson=require(_0xa791('0x7'));var client=jayson[_0xa791('0x8')][_0xa791('0x9')]({'port':0x232a});config[_0xa791('0xa')]=_[_0xa791('0xb')](config[_0xa791('0xa')],{'host':_0xa791('0xc'),'port':0x18eb});var socket=require(_0xa791('0xd'))(new Redis(config[_0xa791('0xa')]));require(_0xa791('0xe'))['register'](socket);function respondWithRpcPromise(_0x193e4f,_0x1e495e,_0xb0c099){return new BPromise(function(_0x3e4320,_0x5cc069){return client[_0xa791('0xf')](_0x193e4f,_0xb0c099)[_0xa791('0x10')](function(_0x22a65b){logger[_0xa791('0x11')](_0xa791('0x12'),_0x1e495e,_0xa791('0x13'));logger[_0xa791('0x14')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x1e495e,_0xa791('0x13'),JSON[_0xa791('0x15')](_0x22a65b));if(_0x22a65b[_0xa791('0x16')]){if(_0x22a65b[_0xa791('0x16')][_0xa791('0x17')]===0x1f4){logger[_0xa791('0x16')]('SmsQueue,\x20%s,\x20%s',_0x1e495e,_0x22a65b[_0xa791('0x16')][_0xa791('0x18')]);return _0x5cc069(_0x22a65b[_0xa791('0x16')]['message']);}logger[_0xa791('0x16')](_0xa791('0x12'),_0x1e495e,_0x22a65b[_0xa791('0x16')][_0xa791('0x18')]);return _0x3e4320(_0x22a65b[_0xa791('0x16')][_0xa791('0x18')]);}else{logger[_0xa791('0x11')](_0xa791('0x12'),_0x1e495e,_0xa791('0x13'));_0x3e4320(_0x22a65b['result'][_0xa791('0x18')]);}})['catch'](function(_0x3caf1d){logger[_0xa791('0x16')](_0xa791('0x12'),_0x1e495e,_0x3caf1d);_0x5cc069(_0x3caf1d);});});}exports[_0xa791('0x19')]=function(_0x79b60d){var _0x13c930=this;return new Promise(function(_0x21eef2,_0x4e14ca){return db[_0xa791('0x1a')]['findAll']({'raw':_0x79b60d[_0xa791('0x1b')]?_0x79b60d[_0xa791('0x1b')][_0xa791('0x1c')]===undefined?!![]:![]:!![],'where':_0x79b60d[_0xa791('0x1b')]?_0x79b60d[_0xa791('0x1b')][_0xa791('0x1d')]||null:null,'attributes':_0x79b60d[_0xa791('0x1b')]?_0x79b60d[_0xa791('0x1b')]['attributes']||null:null,'limit':_0x79b60d[_0xa791('0x1b')]?_0x79b60d[_0xa791('0x1b')][_0xa791('0x1e')]||null:null,'include':_0x79b60d[_0xa791('0x1b')]?_0x79b60d[_0xa791('0x1b')]['include']?_[_0xa791('0x1f')](_0x79b60d[_0xa791('0x1b')]['include'],function(_0x50c7a4){return{'model':db[_0x50c7a4['model']],'as':_0x50c7a4['as'],'attributes':_0x50c7a4['attributes'],'include':_0x50c7a4[_0xa791('0x20')]?_[_0xa791('0x1f')](_0x50c7a4[_0xa791('0x20')],function(_0x196d90){return{'model':db[_0x196d90[_0xa791('0x21')]],'as':_0x196d90['as'],'attributes':_0x196d90[_0xa791('0x22')],'include':_0x196d90[_0xa791('0x20')]?_[_0xa791('0x1f')](_0x196d90[_0xa791('0x20')],function(_0x4d1431){return{'model':db[_0x4d1431[_0xa791('0x21')]],'as':_0x4d1431['as'],'attributes':_0x4d1431[_0xa791('0x22')]};}):[]};}):[]};}):[]:[]})[_0xa791('0x10')](function(_0x38b4c8){logger[_0xa791('0x11')](_0xa791('0x19'),_0x79b60d);logger[_0xa791('0x14')](_0xa791('0x19'),_0x79b60d,JSON[_0xa791('0x15')](_0x38b4c8));_0x21eef2(_0x38b4c8);})['catch'](function(_0x2af84c){logger[_0xa791('0x16')](_0xa791('0x19'),_0x2af84c[_0xa791('0x18')],_0x79b60d);_0x4e14ca(_0x13c930[_0xa791('0x16')](0x1f4,_0x2af84c[_0xa791('0x18')]));});});};exports['ShowSmsQueue']=function(_0x7aa6a3){var _0x38e57b=this;return new Promise(function(_0x428fac,_0x34ba6a){return db[_0xa791('0x1a')][_0xa791('0x23')]({'raw':_0x7aa6a3[_0xa791('0x1b')]?_0x7aa6a3[_0xa791('0x1b')][_0xa791('0x1c')]===undefined?!![]:![]:!![],'where':_0x7aa6a3[_0xa791('0x1b')]?_0x7aa6a3[_0xa791('0x1b')][_0xa791('0x1d')]||null:null,'attributes':_0x7aa6a3[_0xa791('0x1b')]?_0x7aa6a3['options'][_0xa791('0x22')]||null:null,'include':_0x7aa6a3['options']?_0x7aa6a3[_0xa791('0x1b')][_0xa791('0x20')]?_['map'](_0x7aa6a3[_0xa791('0x1b')][_0xa791('0x20')],function(_0x3b162e){return{'model':db[_0x3b162e[_0xa791('0x21')]],'as':_0x3b162e['as'],'attributes':_0x3b162e[_0xa791('0x22')],'include':_0x3b162e[_0xa791('0x20')]?_[_0xa791('0x1f')](_0x3b162e[_0xa791('0x20')],function(_0x35317e){return{'model':db[_0x35317e[_0xa791('0x21')]],'as':_0x35317e['as'],'attributes':_0x35317e[_0xa791('0x22')],'include':_0x35317e['include']?_['map'](_0x35317e[_0xa791('0x20')],function(_0x30889f){return{'model':db[_0x30889f[_0xa791('0x21')]],'as':_0x30889f['as'],'attributes':_0x30889f[_0xa791('0x22')]};}):[]};}):[]};}):[]:[]})[_0xa791('0x10')](function(_0x15b8e5){logger[_0xa791('0x11')]('ShowSmsQueue',_0x7aa6a3);logger[_0xa791('0x14')](_0xa791('0x24'),_0x7aa6a3,JSON[_0xa791('0x15')](_0x15b8e5));_0x428fac(_0x15b8e5);})[_0xa791('0x25')](function(_0x47456f){logger[_0xa791('0x16')](_0xa791('0x24'),_0x47456f[_0xa791('0x18')],_0x7aa6a3);_0x34ba6a(_0x38e57b[_0xa791('0x16')](0x1f4,_0x47456f['message']));});});};
\ No newline at end of file
+var _0xa2cd=['options','attributes','limit','map','include','model','then','catch','ShowSmsQueue','find','raw','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./smsQueue.socket','request','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetSmsQueue','SmsQueue','findAll'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa2cd,0x192));var _0xda2c=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xa2cd[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0xda2c('0x0'));var util=require(_0xda2c('0x1'));var moment=require(_0xda2c('0x2'));var BPromise=require(_0xda2c('0x3'));var rs=require(_0xda2c('0x4'));var fs=require('fs');var Redis=require(_0xda2c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xda2c('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xda2c('0x7'));var jayson=require(_0xda2c('0x8'));var client=jayson[_0xda2c('0x9')][_0xda2c('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xda2c('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xda2c('0xc'))(new Redis(config[_0xda2c('0xb')]));require(_0xda2c('0xd'))['register'](socket);function respondWithRpcPromise(_0x2f62ba,_0x3c24d7,_0x2ece7b){return new BPromise(function(_0x170dc7,_0x240c84){return client[_0xda2c('0xe')](_0x2f62ba,_0x2ece7b)['then'](function(_0x14ff21){logger[_0xda2c('0xf')](_0xda2c('0x10'),_0x3c24d7,_0xda2c('0x11'));logger[_0xda2c('0x12')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x3c24d7,_0xda2c('0x11'),JSON[_0xda2c('0x13')](_0x14ff21));if(_0x14ff21[_0xda2c('0x14')]){if(_0x14ff21[_0xda2c('0x14')][_0xda2c('0x15')]===0x1f4){logger[_0xda2c('0x14')](_0xda2c('0x10'),_0x3c24d7,_0x14ff21[_0xda2c('0x14')]['message']);return _0x240c84(_0x14ff21[_0xda2c('0x14')]['message']);}logger['error'](_0xda2c('0x10'),_0x3c24d7,_0x14ff21[_0xda2c('0x14')]['message']);return _0x170dc7(_0x14ff21[_0xda2c('0x14')][_0xda2c('0x16')]);}else{logger[_0xda2c('0xf')](_0xda2c('0x10'),_0x3c24d7,'request\x20sent');_0x170dc7(_0x14ff21[_0xda2c('0x17')][_0xda2c('0x16')]);}})['catch'](function(_0x3744e6){logger[_0xda2c('0x14')]('SmsQueue,\x20%s,\x20%s',_0x3c24d7,_0x3744e6);_0x240c84(_0x3744e6);});});}exports[_0xda2c('0x18')]=function(_0x557a3b){var _0x2682ca=this;return new Promise(function(_0x1828e1,_0x106b14){return db[_0xda2c('0x19')][_0xda2c('0x1a')]({'raw':_0x557a3b[_0xda2c('0x1b')]?_0x557a3b['options']['raw']===undefined?!![]:![]:!![],'where':_0x557a3b[_0xda2c('0x1b')]?_0x557a3b['options']['where']||null:null,'attributes':_0x557a3b[_0xda2c('0x1b')]?_0x557a3b[_0xda2c('0x1b')][_0xda2c('0x1c')]||null:null,'limit':_0x557a3b['options']?_0x557a3b[_0xda2c('0x1b')][_0xda2c('0x1d')]||null:null,'include':_0x557a3b[_0xda2c('0x1b')]?_0x557a3b[_0xda2c('0x1b')]['include']?_[_0xda2c('0x1e')](_0x557a3b[_0xda2c('0x1b')][_0xda2c('0x1f')],function(_0x2b53a3){return{'model':db[_0x2b53a3['model']],'as':_0x2b53a3['as'],'attributes':_0x2b53a3[_0xda2c('0x1c')],'include':_0x2b53a3[_0xda2c('0x1f')]?_[_0xda2c('0x1e')](_0x2b53a3[_0xda2c('0x1f')],function(_0x1f3946){return{'model':db[_0x1f3946[_0xda2c('0x20')]],'as':_0x1f3946['as'],'attributes':_0x1f3946[_0xda2c('0x1c')],'include':_0x1f3946[_0xda2c('0x1f')]?_[_0xda2c('0x1e')](_0x1f3946[_0xda2c('0x1f')],function(_0xccf7ea){return{'model':db[_0xccf7ea[_0xda2c('0x20')]],'as':_0xccf7ea['as'],'attributes':_0xccf7ea[_0xda2c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xda2c('0x21')](function(_0x2937f9){logger[_0xda2c('0xf')](_0xda2c('0x18'),_0x557a3b);logger[_0xda2c('0x12')](_0xda2c('0x18'),_0x557a3b,JSON[_0xda2c('0x13')](_0x2937f9));_0x1828e1(_0x2937f9);})[_0xda2c('0x22')](function(_0x18b18a){logger['error'](_0xda2c('0x18'),_0x18b18a['message'],_0x557a3b);_0x106b14(_0x2682ca[_0xda2c('0x14')](0x1f4,_0x18b18a[_0xda2c('0x16')]));});});};exports[_0xda2c('0x23')]=function(_0x57bceb){var _0x3bfde9=this;return new Promise(function(_0x4b944a,_0x9e02ed){return db['SmsQueue'][_0xda2c('0x24')]({'raw':_0x57bceb['options']?_0x57bceb[_0xda2c('0x1b')][_0xda2c('0x25')]===undefined?!![]:![]:!![],'where':_0x57bceb[_0xda2c('0x1b')]?_0x57bceb['options'][_0xda2c('0x26')]||null:null,'attributes':_0x57bceb[_0xda2c('0x1b')]?_0x57bceb[_0xda2c('0x1b')]['attributes']||null:null,'include':_0x57bceb[_0xda2c('0x1b')]?_0x57bceb['options'][_0xda2c('0x1f')]?_['map'](_0x57bceb[_0xda2c('0x1b')][_0xda2c('0x1f')],function(_0x243e91){return{'model':db[_0x243e91['model']],'as':_0x243e91['as'],'attributes':_0x243e91[_0xda2c('0x1c')],'include':_0x243e91['include']?_[_0xda2c('0x1e')](_0x243e91[_0xda2c('0x1f')],function(_0x5480a7){return{'model':db[_0x5480a7[_0xda2c('0x20')]],'as':_0x5480a7['as'],'attributes':_0x5480a7[_0xda2c('0x1c')],'include':_0x5480a7[_0xda2c('0x1f')]?_[_0xda2c('0x1e')](_0x5480a7[_0xda2c('0x1f')],function(_0x328f18){return{'model':db[_0x328f18[_0xda2c('0x20')]],'as':_0x328f18['as'],'attributes':_0x328f18['attributes']};}):[]};}):[]};}):[]:[]})[_0xda2c('0x21')](function(_0x1addeb){logger[_0xda2c('0xf')](_0xda2c('0x23'),_0x57bceb);logger[_0xda2c('0x12')](_0xda2c('0x23'),_0x57bceb,JSON['stringify'](_0x1addeb));_0x4b944a(_0x1addeb);})['catch'](function(_0x566bd4){logger[_0xda2c('0x14')](_0xda2c('0x23'),_0x566bd4[_0xda2c('0x16')],_0x57bceb);_0x9e02ed(_0x3bfde9[_0xda2c('0x14')](0x1f4,_0x566bd4[_0xda2c('0x16')]));});});};
\ No newline at end of file
index f3adff2..bd66335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4314=['register','length','smsQueue:','./smsQueue.events','save','remove','update','emit'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4314,0xab));var _0x4431=function(_0x3e115f,_0x374c91){_0x3e115f=_0x3e115f-0x0;var _0x55790a=_0x4314[_0x3e115f];return _0x55790a;};'use strict';var SmsQueueEvents=require(_0x4431('0x0'));var events=[_0x4431('0x1'),_0x4431('0x2'),_0x4431('0x3')];function createListener(_0x9257ac,_0x44b9a0){return function(_0x3301d7){_0x44b9a0[_0x4431('0x4')](_0x9257ac,_0x3301d7);};}function removeListener(_0x10d482,_0x287bc1){return function(){SmsQueueEvents['removeListener'](_0x10d482,_0x287bc1);};}exports[_0x4431('0x5')]=function(_0x182340){for(var _0x4583a5=0x0,_0x5971dc=events[_0x4431('0x6')];_0x4583a5<_0x5971dc;_0x4583a5++){var _0x48cf04=events[_0x4583a5];var _0x3ec8e8=createListener(_0x4431('0x7')+_0x48cf04,_0x182340);SmsQueueEvents['on'](_0x48cf04,_0x3ec8e8);}};
\ No newline at end of file
+var _0x3400=['update','removeListener','register','remove'];(function(_0x506eaf,_0x36ea1b){var _0x20ec47=function(_0x25ce86){while(--_0x25ce86){_0x506eaf['push'](_0x506eaf['shift']());}};_0x20ec47(++_0x36ea1b);}(_0x3400,0xd3));var _0x0340=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0x3400[_0xbe200f];return _0x192597;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=['save',_0x0340('0x0'),_0x0340('0x1')];function createListener(_0x2bfa63,_0x3d2e0b){return function(_0x145b9a){_0x3d2e0b['emit'](_0x2bfa63,_0x145b9a);};}function removeListener(_0x466ef5,_0x54f7e1){return function(){SmsQueueEvents[_0x0340('0x2')](_0x466ef5,_0x54f7e1);};}exports[_0x0340('0x3')]=function(_0x17e668){for(var _0x20fabe=0x0,_0x1686ea=events['length'];_0x20fabe<_0x1686ea;_0x20fabe++){var _0x59a9ed=events[_0x20fabe];var _0x133d77=createListener('smsQueue:'+_0x59a9ed,_0x17e668);SmsQueueEvents['on'](_0x59a9ed,_0x133d77);}};
\ No newline at end of file
index 1686a0c..ecdb038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84e1=['post','create','put','update','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x505a97,_0x2ffb37){var _0x57703d=function(_0x8aee23){while(--_0x8aee23){_0x505a97['push'](_0x505a97['shift']());}};_0x57703d(++_0x2ffb37);}(_0x84e1,0x9f));var _0x184e=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x84e1[_0x1694f5];return _0x5b4321;};'use strict';var multer=require(_0x184e('0x0'));var util=require(_0x184e('0x1'));var path=require('path');var timeout=require(_0x184e('0x2'));var express=require(_0x184e('0x3'));var router=express[_0x184e('0x4')]();var fs_extra=require(_0x184e('0x5'));var auth=require(_0x184e('0x6'));var interaction=require(_0x184e('0x7'));var config=require(_0x184e('0x8'));var controller=require(_0x184e('0x9'));router[_0x184e('0xa')]('/',auth[_0x184e('0xb')](),controller[_0x184e('0xc')]);router[_0x184e('0xa')](_0x184e('0xd'),auth[_0x184e('0xb')](),controller[_0x184e('0xe')]);router[_0x184e('0xa')](_0x184e('0xf'),auth[_0x184e('0xb')](),controller[_0x184e('0x10')]);router[_0x184e('0x11')]('/',auth['isAuthenticated'](),controller[_0x184e('0x12')]);router[_0x184e('0x13')](_0x184e('0xf'),auth[_0x184e('0xb')](),controller[_0x184e('0x14')]);router['delete']('/:id',auth[_0x184e('0xb')](),controller['destroy']);module[_0x184e('0x15')]=router;
\ No newline at end of file
+var _0xa496=['create','put','update','delete','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id'];(function(_0x2a63ba,_0x150e5c){var _0x82234b=function(_0x49897c){while(--_0x49897c){_0x2a63ba['push'](_0x2a63ba['shift']());}};_0x82234b(++_0x150e5c);}(_0xa496,0x1b7));var _0x6a49=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa496[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6a49('0x0'));var timeout=require(_0x6a49('0x1'));var express=require(_0x6a49('0x2'));var router=express[_0x6a49('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6a49('0x4'));var interaction=require(_0x6a49('0x5'));var config=require(_0x6a49('0x6'));var controller=require('./smsQueueReport.controller');router[_0x6a49('0x7')]('/',auth[_0x6a49('0x8')](),controller['index']);router['get'](_0x6a49('0x9'),auth[_0x6a49('0x8')](),controller['describe']);router[_0x6a49('0x7')](_0x6a49('0xa'),auth[_0x6a49('0x8')](),controller['show']);router['post']('/',auth[_0x6a49('0x8')](),controller[_0x6a49('0xb')]);router[_0x6a49('0xc')](_0x6a49('0xa'),auth[_0x6a49('0x8')](),controller[_0x6a49('0xd')]);router[_0x6a49('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 8bd2d7d..33cf87a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe754=['STRING','DATE','moment','sequelize','exports'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0xe754,0x12e));var _0x4e75=function(_0x5731d9,_0x13795a){_0x5731d9=_0x5731d9-0x0;var _0x57236e=_0xe754[_0x5731d9];return _0x57236e;};'use strict';var moment=require(_0x4e75('0x0'));var Sequelize=require(_0x4e75('0x1'));module[_0x4e75('0x2')]={'uniqueid':{'type':Sequelize[_0x4e75('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x4e75('0x3')]},'joinAt':{'type':Sequelize[_0x4e75('0x4')]},'leaveAt':{'type':Sequelize[_0x4e75('0x4')]},'acceptAt':{'type':Sequelize[_0x4e75('0x4')]},'exitAt':{'type':Sequelize[_0x4e75('0x4')]},'reason':{'type':Sequelize[_0x4e75('0x3')]}};
\ No newline at end of file
+var _0xde71=['STRING','moment','sequelize','exports'];(function(_0xe96377,_0x4ed615){var _0x427774=function(_0x392461){while(--_0x392461){_0xe96377['push'](_0xe96377['shift']());}};_0x427774(++_0x4ed615);}(_0xde71,0x155));var _0x1de7=function(_0x2bcd1f,_0x4f1972){_0x2bcd1f=_0x2bcd1f-0x0;var _0x2381ca=_0xde71[_0x2bcd1f];return _0x2381ca;};'use strict';var moment=require(_0x1de7('0x0'));var Sequelize=require(_0x1de7('0x1'));module[_0x1de7('0x2')]={'uniqueid':{'type':Sequelize[_0x1de7('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x1de7('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x1de7('0x3')]}};
\ No newline at end of file
index 4e04f22..a31f59e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fa8=['../../config/utils','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','Content-Range','json','apply','reject','save','update','then','destroy','send','SmsQueueReport','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','length','find','catch','create','params','body','describe','rimraf','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x4c6d6f,_0x291557){var _0x2d4478=function(_0x106946){while(--_0x106946){_0x4c6d6f['push'](_0x4c6d6f['shift']());}};_0x2d4478(++_0x291557);}(_0x1fa8,0x18c));var _0x81fa=function(_0x1f9fce,_0x2885d1){_0x1f9fce=_0x1f9fce-0x0;var _0xf8f0d=_0x1fa8[_0x1f9fce];return _0xf8f0d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x81fa('0x0'));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('mustache');var util=require('util');var path=require(_0x81fa('0x1'));var sox=require(_0x81fa('0x2'));var csv=require(_0x81fa('0x3'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x81fa('0x4'));var _=require(_0x81fa('0x5'));var squel=require('squel');var crypto=require(_0x81fa('0x6'));var jsforce=require(_0x81fa('0x7'));var deskjs=require(_0x81fa('0x8'));var toCsv=require(_0x81fa('0x3'));var querystring=require(_0x81fa('0x9'));var Papa=require(_0x81fa('0xa'));var Redis=require(_0x81fa('0xb'));var authService=require(_0x81fa('0xc'));var qs=require(_0x81fa('0xd'));var as=require(_0x81fa('0xe'));var hardwareService=require(_0x81fa('0xf'));var logger=require(_0x81fa('0x10'))(_0x81fa('0x11'));var utils=require(_0x81fa('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x81fa('0x13'))['db'];function respondWithStatusCode(_0x90516b,_0x2ab968){_0x2ab968=_0x2ab968||0xcc;return function(_0x453668){if(_0x453668){return _0x90516b[_0x81fa('0x14')](_0x2ab968);}return _0x90516b[_0x81fa('0x15')](_0x2ab968)[_0x81fa('0x16')]();};}function respondWithResult(_0x3fffa5,_0x2ea9f1){_0x2ea9f1=_0x2ea9f1||0xc8;return function(_0x1149b2){if(_0x1149b2){return _0x3fffa5[_0x81fa('0x15')](_0x2ea9f1)['json'](_0x1149b2);}};}function respondWithFilteredResult(_0x44ac8b,_0x274941){return function(_0x3d35b4){if(_0x3d35b4){var _0x4f7ab0=typeof _0x274941['offset']===_0x81fa('0x17')&&typeof _0x274941['limit']===_0x81fa('0x17');var _0x3d65b4=_0x3d35b4[_0x81fa('0x18')];var _0x9ba76=_0x4f7ab0?0x0:_0x274941['offset'];var _0x4714f4=_0x4f7ab0?_0x3d35b4[_0x81fa('0x18')]:_0x274941[_0x81fa('0x19')]+_0x274941[_0x81fa('0x1a')];var _0xeab796;if(_0x4714f4>=_0x3d65b4){_0x4714f4=_0x3d65b4;_0xeab796=0xc8;}else{_0xeab796=0xce;}_0x44ac8b[_0x81fa('0x15')](_0xeab796);return _0x44ac8b['set'](_0x81fa('0x1b'),_0x9ba76+'-'+_0x4714f4+'/'+_0x3d65b4)[_0x81fa('0x1c')](_0x3d35b4);}return null;};}function patchUpdates(_0x30dd0a){return function(_0x105e01){try{jsonpatch[_0x81fa('0x1d')](_0x105e01,_0x30dd0a,!![]);}catch(_0x136f40){return BPromise[_0x81fa('0x1e')](_0x136f40);}return _0x105e01[_0x81fa('0x1f')]();};}function saveUpdates(_0x3e3249,_0x5a4e73){return function(_0xef64d3){if(_0xef64d3){return _0xef64d3[_0x81fa('0x20')](_0x3e3249)[_0x81fa('0x21')](function(_0xae8911){return _0xae8911;});}return null;};}function removeEntity(_0x4fc409,_0x3a6598){return function(_0x58c589){if(_0x58c589){return _0x58c589[_0x81fa('0x22')]()['then'](function(){_0x4fc409[_0x81fa('0x15')](0xcc)[_0x81fa('0x16')]();});}};}function handleEntityNotFound(_0x36438d,_0x52cb9e){return function(_0x4c6ece){if(!_0x4c6ece){_0x36438d['sendStatus'](0x194);}return _0x4c6ece;};}function handleError(_0x38d1b2,_0x19632c){_0x19632c=_0x19632c||0x1f4;return function(_0x13816f){logger['error'](_0x13816f['stack']);if(_0x13816f['name']){delete _0x13816f['name'];}_0x38d1b2[_0x81fa('0x15')](_0x19632c)[_0x81fa('0x23')](_0x13816f);};}exports['index']=function(_0x89b596,_0xfb28c4){var _0x26c5c6={},_0x2a4b8a={},_0xba25ea={'count':0x0,'rows':[]};var _0x5070d5=_['map'](db[_0x81fa('0x24')][_0x81fa('0x25')],function(_0x2eee7b){return{'name':_0x2eee7b[_0x81fa('0x26')],'type':_0x2eee7b[_0x81fa('0x27')][_0x81fa('0x28')]};});_0x2a4b8a[_0x81fa('0x29')]=_[_0x81fa('0x2a')](_0x5070d5,_0x81fa('0x2b'));_0x2a4b8a[_0x81fa('0x2c')]=_[_0x81fa('0x2d')](_0x89b596['query']);_0x2a4b8a[_0x81fa('0x2e')]=_[_0x81fa('0x2f')](_0x2a4b8a[_0x81fa('0x29')],_0x2a4b8a['query']);_0x26c5c6['attributes']=_[_0x81fa('0x2f')](_0x2a4b8a[_0x81fa('0x29')],qs[_0x81fa('0x30')](_0x89b596[_0x81fa('0x2c')][_0x81fa('0x30')]));_0x26c5c6[_0x81fa('0x31')]=_0x26c5c6['attributes']['length']?_0x26c5c6[_0x81fa('0x31')]:_0x2a4b8a[_0x81fa('0x29')];if(!_0x89b596[_0x81fa('0x2c')][_0x81fa('0x32')]('nolimit')){_0x26c5c6[_0x81fa('0x1a')]=qs[_0x81fa('0x1a')](_0x89b596[_0x81fa('0x2c')][_0x81fa('0x1a')]);_0x26c5c6[_0x81fa('0x19')]=qs[_0x81fa('0x19')](_0x89b596['query'][_0x81fa('0x19')]);}_0x26c5c6[_0x81fa('0x33')]=qs['sort'](_0x89b596['query'][_0x81fa('0x34')]);_0x26c5c6['where']=qs['filters'](_['pick'](_0x89b596[_0x81fa('0x2c')],_0x2a4b8a[_0x81fa('0x2e')]),_0x5070d5);if(_0x89b596['query'][_0x81fa('0x35')]){_0x26c5c6[_0x81fa('0x36')]=_[_0x81fa('0x37')](_0x26c5c6[_0x81fa('0x36')],{'$or':_[_0x81fa('0x2a')](_0x5070d5,function(_0x37aec7){if(_0x37aec7[_0x81fa('0x27')]!==_0x81fa('0x38')){var _0x5d6585={};_0x5d6585[_0x37aec7['name']]={'$like':'%'+_0x89b596[_0x81fa('0x2c')]['filter']+'%'};return _0x5d6585;}})});}_0x26c5c6=_[_0x81fa('0x37')]({},_0x26c5c6,_0x89b596[_0x81fa('0x39')]);var _0x1a5cfe={'where':_0x26c5c6[_0x81fa('0x36')]};return db[_0x81fa('0x24')][_0x81fa('0x18')](_0x1a5cfe)['then'](function(_0x3d1408){_0xba25ea[_0x81fa('0x18')]=_0x3d1408;if(_0x89b596[_0x81fa('0x2c')]['includeAll']){_0x26c5c6[_0x81fa('0x3a')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x81fa('0x3b')](_0x26c5c6);})['then'](function(_0x361d2a){_0xba25ea[_0x81fa('0x3c')]=_0x361d2a;return _0xba25ea;})['then'](respondWithFilteredResult(_0xfb28c4,_0x26c5c6))['catch'](handleError(_0xfb28c4,null));};exports[_0x81fa('0x3d')]=function(_0x481aa7,_0x36cfd1){var _0x56a447={'raw':!![],'where':{'id':_0x481aa7['params']['id']}},_0x4d5e59={};_0x4d5e59[_0x81fa('0x29')]=_[_0x81fa('0x2d')](db[_0x81fa('0x24')][_0x81fa('0x25')]);_0x4d5e59[_0x81fa('0x2c')]=_['keys'](_0x481aa7[_0x81fa('0x2c')]);_0x4d5e59[_0x81fa('0x2e')]=_['intersection'](_0x4d5e59[_0x81fa('0x29')],_0x4d5e59[_0x81fa('0x2c')]);_0x56a447['attributes']=_[_0x81fa('0x2f')](_0x4d5e59[_0x81fa('0x29')],qs[_0x81fa('0x30')](_0x481aa7[_0x81fa('0x2c')][_0x81fa('0x30')]));_0x56a447[_0x81fa('0x31')]=_0x56a447['attributes'][_0x81fa('0x3e')]?_0x56a447['attributes']:_0x4d5e59['model'];if(_0x481aa7[_0x81fa('0x2c')]['includeAll']){_0x56a447[_0x81fa('0x3a')]=[{'all':!![]}];}_0x56a447=_[_0x81fa('0x37')]({},_0x56a447,_0x481aa7[_0x81fa('0x39')]);return db['SmsQueueReport'][_0x81fa('0x3f')](_0x56a447)[_0x81fa('0x21')](handleEntityNotFound(_0x36cfd1,null))[_0x81fa('0x21')](respondWithResult(_0x36cfd1,null))[_0x81fa('0x40')](handleError(_0x36cfd1,null));};exports['create']=function(_0x20a0c1,_0x5d9c50){return db[_0x81fa('0x24')][_0x81fa('0x41')](_0x20a0c1['body'],{})[_0x81fa('0x21')](respondWithResult(_0x5d9c50,0xc9))[_0x81fa('0x40')](handleError(_0x5d9c50,null));};exports[_0x81fa('0x20')]=function(_0x124ef9,_0x98caad){if(_0x124ef9['body']['id']){delete _0x124ef9['body']['id'];}return db['SmsQueueReport']['find']({'where':{'id':_0x124ef9[_0x81fa('0x42')]['id']}})[_0x81fa('0x21')](handleEntityNotFound(_0x98caad,null))[_0x81fa('0x21')](saveUpdates(_0x124ef9[_0x81fa('0x43')],null))[_0x81fa('0x21')](respondWithResult(_0x98caad,null))[_0x81fa('0x40')](handleError(_0x98caad,null));};exports[_0x81fa('0x22')]=function(_0x5b71c3,_0x5eaafd){return db[_0x81fa('0x24')][_0x81fa('0x3f')]({'where':{'id':_0x5b71c3['params']['id']}})[_0x81fa('0x21')](handleEntityNotFound(_0x5eaafd,null))[_0x81fa('0x21')](removeEntity(_0x5eaafd,null))['catch'](handleError(_0x5eaafd,null));};exports[_0x81fa('0x44')]=function(_0x34af16,_0x9f1633){return db[_0x81fa('0x24')][_0x81fa('0x44')]()['then'](respondWithResult(_0x9f1633,null))[_0x81fa('0x40')](handleError(_0x9f1633,null));};
\ No newline at end of file
+var _0xc478=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','update','then','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','options','create','body','find','destroy','params','describe'];(function(_0xc84f2b,_0x32c3cc){var _0x20659e=function(_0x2f993d){while(--_0x2f993d){_0xc84f2b['push'](_0xc84f2b['shift']());}};_0x20659e(++_0x32c3cc);}(_0xc478,0xde));var _0x8c47=function(_0x39850f,_0x6b2193){_0x39850f=_0x39850f-0x0;var _0x360d89=_0xc478[_0x39850f];return _0x360d89;};'use strict';var emlformat=require(_0x8c47('0x0'));var rimraf=require(_0x8c47('0x1'));var zipdir=require(_0x8c47('0x2'));var jsonpatch=require(_0x8c47('0x3'));var rp=require(_0x8c47('0x4'));var moment=require(_0x8c47('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8c47('0x6'));var util=require(_0x8c47('0x7'));var path=require(_0x8c47('0x8'));var sox=require('sox');var csv=require(_0x8c47('0x9'));var ejs=require(_0x8c47('0xa'));var fs=require('fs');var fs_extra=require(_0x8c47('0xb'));var _=require(_0x8c47('0xc'));var squel=require(_0x8c47('0xd'));var crypto=require(_0x8c47('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8c47('0x9'));var querystring=require('querystring');var Papa=require(_0x8c47('0xf'));var Redis=require(_0x8c47('0x10'));var authService=require(_0x8c47('0x11'));var qs=require(_0x8c47('0x12'));var as=require(_0x8c47('0x13'));var hardwareService=require(_0x8c47('0x14'));var logger=require(_0x8c47('0x15'))(_0x8c47('0x16'));var utils=require(_0x8c47('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8c47('0x18'));var db=require(_0x8c47('0x19'))['db'];function respondWithStatusCode(_0x1fab0c,_0x375ff3){_0x375ff3=_0x375ff3||0xcc;return function(_0x2b4204){if(_0x2b4204){return _0x1fab0c[_0x8c47('0x1a')](_0x375ff3);}return _0x1fab0c[_0x8c47('0x1b')](_0x375ff3)[_0x8c47('0x1c')]();};}function respondWithResult(_0x294f95,_0x3ea597){_0x3ea597=_0x3ea597||0xc8;return function(_0x15af9a){if(_0x15af9a){return _0x294f95[_0x8c47('0x1b')](_0x3ea597)[_0x8c47('0x1d')](_0x15af9a);}};}function respondWithFilteredResult(_0x18bcde,_0x2037aa){return function(_0x231ba9){if(_0x231ba9){var _0x12f38f=typeof _0x2037aa['offset']===_0x8c47('0x1e')&&typeof _0x2037aa['limit']===_0x8c47('0x1e');var _0x520267=_0x231ba9[_0x8c47('0x1f')];var _0x1eee31=_0x12f38f?0x0:_0x2037aa[_0x8c47('0x20')];var _0x36a31d=_0x12f38f?_0x231ba9[_0x8c47('0x1f')]:_0x2037aa[_0x8c47('0x20')]+_0x2037aa[_0x8c47('0x21')];var _0x52e65f;if(_0x36a31d>=_0x520267){_0x36a31d=_0x520267;_0x52e65f=0xc8;}else{_0x52e65f=0xce;}_0x18bcde['status'](_0x52e65f);return _0x18bcde[_0x8c47('0x22')]('Content-Range',_0x1eee31+'-'+_0x36a31d+'/'+_0x520267)[_0x8c47('0x1d')](_0x231ba9);}return null;};}function patchUpdates(_0x4d7ba7){return function(_0x58fe80){try{jsonpatch['apply'](_0x58fe80,_0x4d7ba7,!![]);}catch(_0x4ef29e){return BPromise['reject'](_0x4ef29e);}return _0x58fe80['save']();};}function saveUpdates(_0x8f281f,_0x2c301b){return function(_0x188555){if(_0x188555){return _0x188555[_0x8c47('0x23')](_0x8f281f)[_0x8c47('0x24')](function(_0x50159e){return _0x50159e;});}return null;};}function removeEntity(_0x42c086,_0x4acd87){return function(_0x35d811){if(_0x35d811){return _0x35d811['destroy']()['then'](function(){_0x42c086[_0x8c47('0x1b')](0xcc)[_0x8c47('0x1c')]();});}};}function handleEntityNotFound(_0x1a654f,_0x44b0c5){return function(_0x9f3fae){if(!_0x9f3fae){_0x1a654f[_0x8c47('0x1a')](0x194);}return _0x9f3fae;};}function handleError(_0x1799af,_0x27b582){_0x27b582=_0x27b582||0x1f4;return function(_0x40f946){logger[_0x8c47('0x25')](_0x40f946[_0x8c47('0x26')]);if(_0x40f946[_0x8c47('0x27')]){delete _0x40f946['name'];}_0x1799af[_0x8c47('0x1b')](_0x27b582)[_0x8c47('0x28')](_0x40f946);};}exports[_0x8c47('0x29')]=function(_0x5ef621,_0xa0e08b){var _0x3e333b={},_0x301689={},_0x1952fc={'count':0x0,'rows':[]};var _0x11bb56=_[_0x8c47('0x2a')](db[_0x8c47('0x2b')][_0x8c47('0x2c')],function(_0x5bb45f){return{'name':_0x5bb45f['fieldName'],'type':_0x5bb45f[_0x8c47('0x2d')][_0x8c47('0x2e')]};});_0x301689[_0x8c47('0x2f')]=_[_0x8c47('0x2a')](_0x11bb56,_0x8c47('0x27'));_0x301689[_0x8c47('0x30')]=_[_0x8c47('0x31')](_0x5ef621['query']);_0x301689[_0x8c47('0x32')]=_[_0x8c47('0x33')](_0x301689[_0x8c47('0x2f')],_0x301689[_0x8c47('0x30')]);_0x3e333b[_0x8c47('0x34')]=_['intersection'](_0x301689['model'],qs['fields'](_0x5ef621[_0x8c47('0x30')][_0x8c47('0x35')]));_0x3e333b[_0x8c47('0x34')]=_0x3e333b[_0x8c47('0x34')][_0x8c47('0x36')]?_0x3e333b[_0x8c47('0x34')]:_0x301689[_0x8c47('0x2f')];if(!_0x5ef621[_0x8c47('0x30')][_0x8c47('0x37')](_0x8c47('0x38'))){_0x3e333b[_0x8c47('0x21')]=qs[_0x8c47('0x21')](_0x5ef621['query'][_0x8c47('0x21')]);_0x3e333b[_0x8c47('0x20')]=qs['offset'](_0x5ef621[_0x8c47('0x30')][_0x8c47('0x20')]);}_0x3e333b['order']=qs['sort'](_0x5ef621['query'][_0x8c47('0x39')]);_0x3e333b[_0x8c47('0x3a')]=qs['filters'](_[_0x8c47('0x3b')](_0x5ef621[_0x8c47('0x30')],_0x301689[_0x8c47('0x32')]),_0x11bb56);if(_0x5ef621['query'][_0x8c47('0x3c')]){_0x3e333b[_0x8c47('0x3a')]=_[_0x8c47('0x3d')](_0x3e333b[_0x8c47('0x3a')],{'$or':_[_0x8c47('0x2a')](_0x11bb56,function(_0x406422){if(_0x406422['type']!==_0x8c47('0x3e')){var _0x47b7fe={};_0x47b7fe[_0x406422[_0x8c47('0x27')]]={'$like':'%'+_0x5ef621[_0x8c47('0x30')][_0x8c47('0x3c')]+'%'};return _0x47b7fe;}})});}_0x3e333b=_[_0x8c47('0x3d')]({},_0x3e333b,_0x5ef621['options']);var _0x279995={'where':_0x3e333b[_0x8c47('0x3a')]};return db[_0x8c47('0x2b')]['count'](_0x279995)[_0x8c47('0x24')](function(_0x49b148){_0x1952fc['count']=_0x49b148;if(_0x5ef621[_0x8c47('0x30')][_0x8c47('0x3f')]){_0x3e333b[_0x8c47('0x40')]=[{'all':!![]}];}return db[_0x8c47('0x2b')]['findAll'](_0x3e333b);})[_0x8c47('0x24')](function(_0x3192ab){_0x1952fc[_0x8c47('0x41')]=_0x3192ab;return _0x1952fc;})[_0x8c47('0x24')](respondWithFilteredResult(_0xa0e08b,_0x3e333b))[_0x8c47('0x42')](handleError(_0xa0e08b,null));};exports['show']=function(_0x1b8551,_0x27e19e){var _0x560c5c={'raw':!![],'where':{'id':_0x1b8551['params']['id']}},_0x4c9554={};_0x4c9554[_0x8c47('0x2f')]=_[_0x8c47('0x31')](db[_0x8c47('0x2b')][_0x8c47('0x2c')]);_0x4c9554[_0x8c47('0x30')]=_['keys'](_0x1b8551['query']);_0x4c9554['filters']=_[_0x8c47('0x33')](_0x4c9554['model'],_0x4c9554['query']);_0x560c5c[_0x8c47('0x34')]=_['intersection'](_0x4c9554['model'],qs[_0x8c47('0x35')](_0x1b8551['query'][_0x8c47('0x35')]));_0x560c5c[_0x8c47('0x34')]=_0x560c5c[_0x8c47('0x34')]['length']?_0x560c5c[_0x8c47('0x34')]:_0x4c9554[_0x8c47('0x2f')];if(_0x1b8551[_0x8c47('0x30')][_0x8c47('0x3f')]){_0x560c5c[_0x8c47('0x40')]=[{'all':!![]}];}_0x560c5c=_[_0x8c47('0x3d')]({},_0x560c5c,_0x1b8551[_0x8c47('0x43')]);return db[_0x8c47('0x2b')]['find'](_0x560c5c)[_0x8c47('0x24')](handleEntityNotFound(_0x27e19e,null))[_0x8c47('0x24')](respondWithResult(_0x27e19e,null))['catch'](handleError(_0x27e19e,null));};exports[_0x8c47('0x44')]=function(_0x25a41e,_0x786d5b){return db[_0x8c47('0x2b')]['create'](_0x25a41e[_0x8c47('0x45')],{})['then'](respondWithResult(_0x786d5b,0xc9))[_0x8c47('0x42')](handleError(_0x786d5b,null));};exports[_0x8c47('0x23')]=function(_0x5e4255,_0x30f01a){if(_0x5e4255[_0x8c47('0x45')]['id']){delete _0x5e4255['body']['id'];}return db['SmsQueueReport'][_0x8c47('0x46')]({'where':{'id':_0x5e4255['params']['id']}})[_0x8c47('0x24')](handleEntityNotFound(_0x30f01a,null))[_0x8c47('0x24')](saveUpdates(_0x5e4255['body'],null))[_0x8c47('0x24')](respondWithResult(_0x30f01a,null))[_0x8c47('0x42')](handleError(_0x30f01a,null));};exports[_0x8c47('0x47')]=function(_0x1265a5,_0x1fe986){return db[_0x8c47('0x2b')][_0x8c47('0x46')]({'where':{'id':_0x1265a5[_0x8c47('0x48')]['id']}})[_0x8c47('0x24')](handleEntityNotFound(_0x1fe986,null))[_0x8c47('0x24')](removeEntity(_0x1fe986,null))['catch'](handleError(_0x1fe986,null));};exports[_0x8c47('0x49')]=function(_0x34311e,_0x4889ad){return db[_0x8c47('0x2b')][_0x8c47('0x49')]()['then'](respondWithResult(_0x4889ad,null))[_0x8c47('0x42')](handleError(_0x4889ad,null));};
\ No newline at end of file
index 2103f9b..92d2fbc 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(_0x1d1d0d,_0x7b7ed5){var _0x4573e7=function(_0x2f3999){while(--_0x2f3999){_0x1d1d0d['push'](_0x1d1d0d['shift']());}};_0x4573e7(++_0x7b7ed5);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./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 _0xcb91=['path','rimraf','./smsQueueReport.attributes','exports','define','report_sms_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x2e5c3a,_0x3aff6e){var _0x2d3a24=function(_0x474299){while(--_0x474299){_0x2e5c3a['push'](_0x2e5c3a['shift']());}};_0x2d3a24(++_0x3aff6e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5e3701,_0x596265){_0x5e3701=_0x5e3701-0x0;var _0x345dcf=_0xcb91[_0x5e3701];return _0x345dcf;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('SmsQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 58faa1f..1b6375c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6ce=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','SmsQueueReport','body','options','raw','CreateSmsQueueReport','stringify','catch','UpdateSmsQueueReport','update','where','attributes','limit','util','bluebird','randomstring','ioredis'];(function(_0x3be286,_0x35bb33){var _0x1fab49=function(_0x390d85){while(--_0x390d85){_0x3be286['push'](_0x3be286['shift']());}};_0x1fab49(++_0x35bb33);}(_0xe6ce,0x1eb));var _0xee6c=function(_0x5eb9c1,_0x444618){_0x5eb9c1=_0x5eb9c1-0x0;var _0x561f5f=_0xe6ce[_0x5eb9c1];return _0x561f5f;};'use strict';var _=require('lodash');var util=require(_0xee6c('0x0'));var moment=require('moment');var BPromise=require(_0xee6c('0x1'));var rs=require(_0xee6c('0x2'));var fs=require('fs');var Redis=require(_0xee6c('0x3'));var db=require(_0xee6c('0x4'))['db'];var utils=require(_0xee6c('0x5'));var logger=require('../../config/logger')(_0xee6c('0x6'));var config=require(_0xee6c('0x7'));var jayson=require(_0xee6c('0x8'));var client=jayson[_0xee6c('0x9')][_0xee6c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xae3989,_0x34871e,_0x6e3437){return new BPromise(function(_0x2dcc1d,_0x17566b){return client[_0xee6c('0xb')](_0xae3989,_0x6e3437)[_0xee6c('0xc')](function(_0x57b61e){logger[_0xee6c('0xd')](_0xee6c('0xe'),_0x34871e,'request\x20sent');logger[_0xee6c('0xf')](_0xee6c('0x10'),_0x34871e,_0xee6c('0x11'),JSON['stringify'](_0x57b61e));if(_0x57b61e[_0xee6c('0x12')]){if(_0x57b61e[_0xee6c('0x12')]['code']===0x1f4){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x34871e,_0x57b61e['error'][_0xee6c('0x13')]);return _0x17566b(_0x57b61e[_0xee6c('0x12')]['message']);}logger['error'](_0xee6c('0xe'),_0x34871e,_0x57b61e[_0xee6c('0x12')][_0xee6c('0x13')]);return _0x2dcc1d(_0x57b61e[_0xee6c('0x12')]['message']);}else{logger['info'](_0xee6c('0xe'),_0x34871e,_0xee6c('0x11'));_0x2dcc1d(_0x57b61e[_0xee6c('0x14')][_0xee6c('0x13')]);}})['catch'](function(_0x22bf6e){logger[_0xee6c('0x12')]('SmsQueueReport,\x20%s,\x20%s',_0x34871e,_0x22bf6e);_0x17566b(_0x22bf6e);});});}exports['CreateSmsQueueReport']=function(_0x1ca94b){var _0xdfc72b=this;return new Promise(function(_0x382890,_0x1b83e7){return db[_0xee6c('0x15')]['create'](_0x1ca94b[_0xee6c('0x16')],{'raw':_0x1ca94b['options']?_0x1ca94b[_0xee6c('0x17')][_0xee6c('0x18')]===undefined?!![]:![]:!![]})[_0xee6c('0xc')](function(_0x482ede){logger['info']('CreateSmsQueueReport',_0x1ca94b);logger[_0xee6c('0xf')](_0xee6c('0x19'),_0x1ca94b,JSON[_0xee6c('0x1a')](_0x482ede));_0x382890(_0x482ede);})[_0xee6c('0x1b')](function(_0x47791e){logger['error'](_0xee6c('0x19'),_0x47791e['message'],_0x1ca94b);_0x1b83e7(_0xdfc72b[_0xee6c('0x12')](0x1f4,_0x47791e['message']));});});};exports[_0xee6c('0x1c')]=function(_0x457252){var _0x22120f=this;return new Promise(function(_0x385104,_0x20b32e){return db[_0xee6c('0x15')][_0xee6c('0x1d')](_0x457252[_0xee6c('0x16')],{'raw':_0x457252[_0xee6c('0x17')]?_0x457252[_0xee6c('0x17')][_0xee6c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x457252[_0xee6c('0x17')]?_0x457252['options'][_0xee6c('0x1e')]||null:null,'attributes':_0x457252['options']?_0x457252[_0xee6c('0x17')][_0xee6c('0x1f')]||null:null,'limit':_0x457252[_0xee6c('0x17')]?_0x457252[_0xee6c('0x17')][_0xee6c('0x20')]||null:null})[_0xee6c('0xc')](function(_0x5a36d7){logger[_0xee6c('0xd')](_0xee6c('0x1c'),_0x457252);logger['debug']('UpdateSmsQueueReport',_0x457252,JSON[_0xee6c('0x1a')](_0x5a36d7));_0x385104(_0x5a36d7);})[_0xee6c('0x1b')](function(_0x392baa){logger['error'](_0xee6c('0x1c'),_0x392baa['message'],_0x457252);_0x20b32e(_0x22120f[_0xee6c('0x12')](0x1f4,_0x392baa[_0xee6c('0x13')]));});});};
\ No newline at end of file
+var _0xabcc=['request','then','SmsQueueReport,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','result','catch','body','options','raw','CreateSmsQueueReport','stringify','UpdateSmsQueueReport','SmsQueueReport','update','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x580971,_0x10984d){var _0x16d873=function(_0x594084){while(--_0x594084){_0x580971['push'](_0x580971['shift']());}};_0x16d873(++_0x10984d);}(_0xabcc,0x181));var _0xcabc=function(_0x5d160,_0xa4838e){_0x5d160=_0x5d160-0x0;var _0x1d180d=_0xabcc[_0x5d160];return _0x1d180d;};'use strict';var _=require(_0xcabc('0x0'));var util=require(_0xcabc('0x1'));var moment=require(_0xcabc('0x2'));var BPromise=require('bluebird');var rs=require(_0xcabc('0x3'));var fs=require('fs');var Redis=require(_0xcabc('0x4'));var db=require(_0xcabc('0x5'))['db'];var utils=require(_0xcabc('0x6'));var logger=require(_0xcabc('0x7'))('rpc');var config=require(_0xcabc('0x8'));var jayson=require(_0xcabc('0x9'));var client=jayson['client'][_0xcabc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1db56a,_0x173532,_0x5eec09){return new BPromise(function(_0x238340,_0x111498){return client[_0xcabc('0xb')](_0x1db56a,_0x5eec09)[_0xcabc('0xc')](function(_0x46227){logger['info'](_0xcabc('0xd'),_0x173532,'request\x20sent');logger[_0xcabc('0xe')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x173532,_0xcabc('0xf'),JSON['stringify'](_0x46227));if(_0x46227[_0xcabc('0x10')]){if(_0x46227[_0xcabc('0x10')][_0xcabc('0x11')]===0x1f4){logger[_0xcabc('0x10')](_0xcabc('0xd'),_0x173532,_0x46227[_0xcabc('0x10')]['message']);return _0x111498(_0x46227[_0xcabc('0x10')][_0xcabc('0x12')]);}logger[_0xcabc('0x10')]('SmsQueueReport,\x20%s,\x20%s',_0x173532,_0x46227[_0xcabc('0x10')][_0xcabc('0x12')]);return _0x238340(_0x46227[_0xcabc('0x10')][_0xcabc('0x12')]);}else{logger[_0xcabc('0x13')]('SmsQueueReport,\x20%s,\x20%s',_0x173532,'request\x20sent');_0x238340(_0x46227[_0xcabc('0x14')][_0xcabc('0x12')]);}})[_0xcabc('0x15')](function(_0x2664ea){logger[_0xcabc('0x10')](_0xcabc('0xd'),_0x173532,_0x2664ea);_0x111498(_0x2664ea);});});}exports['CreateSmsQueueReport']=function(_0x2219f4){var _0x1b616b=this;return new Promise(function(_0x5ed677,_0x1dc41c){return db['SmsQueueReport']['create'](_0x2219f4[_0xcabc('0x16')],{'raw':_0x2219f4[_0xcabc('0x17')]?_0x2219f4['options'][_0xcabc('0x18')]===undefined?!![]:![]:!![]})[_0xcabc('0xc')](function(_0x4ec7ef){logger[_0xcabc('0x13')]('CreateSmsQueueReport',_0x2219f4);logger[_0xcabc('0xe')](_0xcabc('0x19'),_0x2219f4,JSON[_0xcabc('0x1a')](_0x4ec7ef));_0x5ed677(_0x4ec7ef);})[_0xcabc('0x15')](function(_0x175ad7){logger[_0xcabc('0x10')]('CreateSmsQueueReport',_0x175ad7['message'],_0x2219f4);_0x1dc41c(_0x1b616b[_0xcabc('0x10')](0x1f4,_0x175ad7['message']));});});};exports[_0xcabc('0x1b')]=function(_0x111b14){var _0x1985b8=this;return new Promise(function(_0x2375ba,_0x384c17){return db[_0xcabc('0x1c')][_0xcabc('0x1d')](_0x111b14[_0xcabc('0x16')],{'raw':_0x111b14[_0xcabc('0x17')]?_0x111b14[_0xcabc('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x111b14[_0xcabc('0x17')]?_0x111b14['options'][_0xcabc('0x1e')]||null:null,'attributes':_0x111b14[_0xcabc('0x17')]?_0x111b14[_0xcabc('0x17')][_0xcabc('0x1f')]||null:null,'limit':_0x111b14['options']?_0x111b14['options'][_0xcabc('0x20')]||null:null})['then'](function(_0x4234cb){logger[_0xcabc('0x13')](_0xcabc('0x1b'),_0x111b14);logger[_0xcabc('0xe')](_0xcabc('0x1b'),_0x111b14,JSON[_0xcabc('0x1a')](_0x4234cb));_0x2375ba(_0x4234cb);})[_0xcabc('0x15')](function(_0x57cde5){logger[_0xcabc('0x10')](_0xcabc('0x1b'),_0x57cde5[_0xcabc('0x12')],_0x111b14);_0x384c17(_0x1985b8[_0xcabc('0x10')](0x1f4,_0x57cde5[_0xcabc('0x12')]));});});};
\ No newline at end of file
index 68f58f7..516ac94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['fs-extra','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','create','put','delete','destroy','multer','path','connect-timeout','express'];(function(_0x237be3,_0x36e6bd){var _0x15b20a=function(_0x4ddc3d){while(--_0x4ddc3d){_0x237be3['push'](_0x237be3['shift']());}};_0x15b20a(++_0x36e6bd);}(_0x4c4e,0x152));var _0xe4c4=function(_0xa28f28,_0x5ab437){_0xa28f28=_0xa28f28-0x0;var _0x3d17ee=_0x4c4e[_0xa28f28];return _0x3d17ee;};'use strict';var multer=require(_0xe4c4('0x0'));var util=require('util');var path=require(_0xe4c4('0x1'));var timeout=require(_0xe4c4('0x2'));var express=require(_0xe4c4('0x3'));var router=express['Router']();var fs_extra=require(_0xe4c4('0x4'));var auth=require(_0xe4c4('0x5'));var interaction=require(_0xe4c4('0x6'));var config=require('../../config/environment');var controller=require(_0xe4c4('0x7'));router['get']('/',auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x9')]);router[_0xe4c4('0xa')](_0xe4c4('0xb'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0xc')]);router[_0xe4c4('0xa')](_0xe4c4('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xe4c4('0xe')]('/',auth[_0xe4c4('0x8')](),controller[_0xe4c4('0xf')]);router[_0xe4c4('0x10')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller['update']);router[_0xe4c4('0x11')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x56a4=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','index','isAuthenticated','describe','post','create','put','/:id','update','delete','destroy','multer','util'];(function(_0x4760e6,_0x4c3dfd){var _0x49b2db=function(_0x1a9a32){while(--_0x1a9a32){_0x4760e6['push'](_0x4760e6['shift']());}};_0x49b2db(++_0x4c3dfd);}(_0x56a4,0x11b));var _0x456a=function(_0x5de390,_0x3b9908){_0x5de390=_0x5de390-0x0;var _0x12bf75=_0x56a4[_0x5de390];return _0x12bf75;};'use strict';var multer=require(_0x456a('0x0'));var util=require(_0x456a('0x1'));var path=require('path');var timeout=require(_0x456a('0x2'));var express=require(_0x456a('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x456a('0x4'));var interaction=require(_0x456a('0x5'));var config=require(_0x456a('0x6'));var controller=require(_0x456a('0x7'));router[_0x456a('0x8')]('/',auth['isAuthenticated'](),controller[_0x456a('0x9')]);router['get']('/describe',auth[_0x456a('0xa')](),controller[_0x456a('0xb')]);router[_0x456a('0x8')]('/:id',auth[_0x456a('0xa')](),controller['show']);router[_0x456a('0xc')]('/',auth[_0x456a('0xa')](),controller[_0x456a('0xd')]);router[_0x456a('0xe')](_0x456a('0xf'),auth[_0x456a('0xa')](),controller[_0x456a('0x10')]);router[_0x456a('0x11')](_0x456a('0xf'),auth[_0x456a('0xa')](),controller[_0x456a('0x12')]);module['exports']=router;
\ No newline at end of file
index 385093b..c35d886 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(_0x10d34b,_0x4fef76){var _0x92b0bf=function(_0x16e291){while(--_0x16e291){_0x10d34b['push'](_0x10d34b['shift']());}};_0x92b0bf(++_0x4fef76);}(_0xb43b,0x1b2));var _0xbb43=function(_0x495d3c,_0x44c13e){_0x495d3c=_0x495d3c-0x0;var _0x418134=_0xb43b[_0x495d3c];return _0x418134;};'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 _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x283288,_0xed195e){var _0x3bb819=function(_0x348854){while(--_0x348854){_0x283288['push'](_0x283288['shift']());}};_0x3bb819(++_0xed195e);}(_0x70e0,0x17b));var _0x070e=function(_0x41937a,_0x266755){_0x41937a=_0x41937a-0x0;var _0x55a860=_0x70e0[_0x41937a];return _0x55a860;};'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
index 1450285..891f03e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa295=['request-promise','moment','bluebird','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','end','json','undefined','limit','count','offset','status','set','apply','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','type','key','model','query','keys','fields','attributes','nolimit','order','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','show','params','length','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch'];(function(_0x3f5385,_0x7e6c4c){var _0x3f716c=function(_0x47d993){while(--_0x47d993){_0x3f5385['push'](_0x3f5385['shift']());}};_0x3f716c(++_0x7e6c4c);}(_0xa295,0x179));var _0x5a29=function(_0x5eebea,_0x2a6b28){_0x5eebea=_0x5eebea-0x0;var _0x5b7638=_0xa295[_0x5eebea];return _0x5b7638;};'use strict';var emlformat=require(_0x5a29('0x0'));var rimraf=require(_0x5a29('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5a29('0x2'));var rp=require(_0x5a29('0x3'));var moment=require(_0x5a29('0x4'));var BPromise=require(_0x5a29('0x5'));var Mustache=require(_0x5a29('0x6'));var util=require(_0x5a29('0x7'));var path=require(_0x5a29('0x8'));var sox=require('sox');var csv=require(_0x5a29('0x9'));var ejs=require(_0x5a29('0xa'));var fs=require('fs');var fs_extra=require(_0x5a29('0xb'));var _=require('lodash');var squel=require(_0x5a29('0xc'));var crypto=require(_0x5a29('0xd'));var jsforce=require(_0x5a29('0xe'));var deskjs=require(_0x5a29('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5a29('0x10'));var Papa=require(_0x5a29('0x11'));var Redis=require(_0x5a29('0x12'));var authService=require(_0x5a29('0x13'));var qs=require(_0x5a29('0x14'));var as=require(_0x5a29('0x15'));var hardwareService=require(_0x5a29('0x16'));var logger=require(_0x5a29('0x17'))('api');var utils=require(_0x5a29('0x18'));var config=require(_0x5a29('0x19'));var licenseUtil=require(_0x5a29('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39d465,_0x1b2566){_0x1b2566=_0x1b2566||0xcc;return function(_0x1a53be){if(_0x1a53be){return _0x39d465['sendStatus'](_0x1b2566);}return _0x39d465['status'](_0x1b2566)[_0x5a29('0x1b')]();};}function respondWithResult(_0x894c83,_0x1a8b82){_0x1a8b82=_0x1a8b82||0xc8;return function(_0x47cf92){if(_0x47cf92){return _0x894c83['status'](_0x1a8b82)[_0x5a29('0x1c')](_0x47cf92);}};}function respondWithFilteredResult(_0x132f70,_0x25d389){return function(_0x16c80d){if(_0x16c80d){var _0x5bce8c=typeof _0x25d389['offset']===_0x5a29('0x1d')&&typeof _0x25d389[_0x5a29('0x1e')]===_0x5a29('0x1d');var _0x419cac=_0x16c80d[_0x5a29('0x1f')];var _0x5f3a76=_0x5bce8c?0x0:_0x25d389[_0x5a29('0x20')];var _0x137fce=_0x5bce8c?_0x16c80d[_0x5a29('0x1f')]:_0x25d389[_0x5a29('0x20')]+_0x25d389[_0x5a29('0x1e')];var _0x401811;if(_0x137fce>=_0x419cac){_0x137fce=_0x419cac;_0x401811=0xc8;}else{_0x401811=0xce;}_0x132f70[_0x5a29('0x21')](_0x401811);return _0x132f70[_0x5a29('0x22')]('Content-Range',_0x5f3a76+'-'+_0x137fce+'/'+_0x419cac)[_0x5a29('0x1c')](_0x16c80d);}return null;};}function patchUpdates(_0x2886f5){return function(_0xd6ec01){try{jsonpatch[_0x5a29('0x23')](_0xd6ec01,_0x2886f5,!![]);}catch(_0x11b625){return BPromise['reject'](_0x11b625);}return _0xd6ec01[_0x5a29('0x24')]();};}function saveUpdates(_0xdcb9de,_0x397f47){return function(_0x120da1){if(_0x120da1){return _0x120da1[_0x5a29('0x25')](_0xdcb9de)['then'](function(_0x4852af){return _0x4852af;});}return null;};}function removeEntity(_0x158dca,_0x3484ba){return function(_0x1f65e2){if(_0x1f65e2){return _0x1f65e2[_0x5a29('0x26')]()[_0x5a29('0x27')](function(){_0x158dca[_0x5a29('0x21')](0xcc)[_0x5a29('0x1b')]();});}};}function handleEntityNotFound(_0x463ab0,_0x31577f){return function(_0x5b1a1b){if(!_0x5b1a1b){_0x463ab0[_0x5a29('0x28')](0x194);}return _0x5b1a1b;};}function handleError(_0xf1870b,_0x5efab7){_0x5efab7=_0x5efab7||0x1f4;return function(_0x25f793){logger[_0x5a29('0x29')](_0x25f793[_0x5a29('0x2a')]);if(_0x25f793[_0x5a29('0x2b')]){delete _0x25f793[_0x5a29('0x2b')];}_0xf1870b[_0x5a29('0x21')](_0x5efab7)[_0x5a29('0x2c')](_0x25f793);};}exports[_0x5a29('0x2d')]=function(_0x42e83c,_0x4a7ee1){var _0x5d7263={},_0x52d3bf={},_0x1c3fa2={'count':0x0,'rows':[]};var _0x83b235=_[_0x5a29('0x2e')](db[_0x5a29('0x2f')][_0x5a29('0x30')],function(_0x3e2ba9){return{'name':_0x3e2ba9['fieldName'],'type':_0x3e2ba9[_0x5a29('0x31')][_0x5a29('0x32')]};});_0x52d3bf[_0x5a29('0x33')]=_['map'](_0x83b235,_0x5a29('0x2b'));_0x52d3bf[_0x5a29('0x34')]=_[_0x5a29('0x35')](_0x42e83c[_0x5a29('0x34')]);_0x52d3bf['filters']=_['intersection'](_0x52d3bf['model'],_0x52d3bf['query']);_0x5d7263['attributes']=_['intersection'](_0x52d3bf[_0x5a29('0x33')],qs[_0x5a29('0x36')](_0x42e83c[_0x5a29('0x34')][_0x5a29('0x36')]));_0x5d7263[_0x5a29('0x37')]=_0x5d7263[_0x5a29('0x37')]['length']?_0x5d7263[_0x5a29('0x37')]:_0x52d3bf['model'];if(!_0x42e83c[_0x5a29('0x34')]['hasOwnProperty'](_0x5a29('0x38'))){_0x5d7263[_0x5a29('0x1e')]=qs[_0x5a29('0x1e')](_0x42e83c['query'][_0x5a29('0x1e')]);_0x5d7263['offset']=qs[_0x5a29('0x20')](_0x42e83c[_0x5a29('0x34')][_0x5a29('0x20')]);}_0x5d7263[_0x5a29('0x39')]=qs['sort'](_0x42e83c['query']['sort']);_0x5d7263[_0x5a29('0x3a')]=qs[_0x5a29('0x3b')](_[_0x5a29('0x3c')](_0x42e83c[_0x5a29('0x34')],_0x52d3bf[_0x5a29('0x3b')]),_0x83b235);if(_0x42e83c[_0x5a29('0x34')][_0x5a29('0x3d')]){_0x5d7263[_0x5a29('0x3a')]=_[_0x5a29('0x3e')](_0x5d7263[_0x5a29('0x3a')],{'$or':_['map'](_0x83b235,function(_0x218461){if(_0x218461[_0x5a29('0x31')]!==_0x5a29('0x3f')){var _0x4bb5be={};_0x4bb5be[_0x218461[_0x5a29('0x2b')]]={'$like':'%'+_0x42e83c[_0x5a29('0x34')]['filter']+'%'};return _0x4bb5be;}})});}_0x5d7263=_[_0x5a29('0x3e')]({},_0x5d7263,_0x42e83c[_0x5a29('0x40')]);var _0x1f44ef={'where':_0x5d7263[_0x5a29('0x3a')]};return db[_0x5a29('0x2f')][_0x5a29('0x1f')](_0x1f44ef)['then'](function(_0x401e58){_0x1c3fa2['count']=_0x401e58;if(_0x42e83c[_0x5a29('0x34')]['includeAll']){_0x5d7263[_0x5a29('0x41')]=[{'all':!![]}];}return db[_0x5a29('0x2f')][_0x5a29('0x42')](_0x5d7263);})[_0x5a29('0x27')](function(_0x148a0c){_0x1c3fa2[_0x5a29('0x43')]=_0x148a0c;return _0x1c3fa2;})[_0x5a29('0x27')](respondWithFilteredResult(_0x4a7ee1,_0x5d7263))['catch'](handleError(_0x4a7ee1,null));};exports[_0x5a29('0x44')]=function(_0x195629,_0x327f62){var _0x5b4dd4={'raw':!![],'where':{'id':_0x195629[_0x5a29('0x45')]['id']}},_0xd10e7={};_0xd10e7[_0x5a29('0x33')]=_[_0x5a29('0x35')](db[_0x5a29('0x2f')][_0x5a29('0x30')]);_0xd10e7[_0x5a29('0x34')]=_[_0x5a29('0x35')](_0x195629['query']);_0xd10e7['filters']=_['intersection'](_0xd10e7[_0x5a29('0x33')],_0xd10e7[_0x5a29('0x34')]);_0x5b4dd4[_0x5a29('0x37')]=_['intersection'](_0xd10e7['model'],qs[_0x5a29('0x36')](_0x195629[_0x5a29('0x34')]['fields']));_0x5b4dd4['attributes']=_0x5b4dd4[_0x5a29('0x37')][_0x5a29('0x46')]?_0x5b4dd4[_0x5a29('0x37')]:_0xd10e7[_0x5a29('0x33')];if(_0x195629['query']['includeAll']){_0x5b4dd4[_0x5a29('0x41')]=[{'all':!![]}];}_0x5b4dd4=_[_0x5a29('0x3e')]({},_0x5b4dd4,_0x195629[_0x5a29('0x40')]);return db['SmsTransferReport'][_0x5a29('0x47')](_0x5b4dd4)[_0x5a29('0x27')](handleEntityNotFound(_0x327f62,null))[_0x5a29('0x27')](respondWithResult(_0x327f62,null))[_0x5a29('0x48')](handleError(_0x327f62,null));};exports[_0x5a29('0x49')]=function(_0xa4e754,_0x4e5f79){return db['SmsTransferReport'][_0x5a29('0x49')](_0xa4e754['body'],{})[_0x5a29('0x27')](respondWithResult(_0x4e5f79,0xc9))['catch'](handleError(_0x4e5f79,null));};exports[_0x5a29('0x25')]=function(_0x9b8432,_0x328eb7){if(_0x9b8432[_0x5a29('0x4a')]['id']){delete _0x9b8432['body']['id'];}return db['SmsTransferReport'][_0x5a29('0x47')]({'where':{'id':_0x9b8432[_0x5a29('0x45')]['id']}})['then'](handleEntityNotFound(_0x328eb7,null))[_0x5a29('0x27')](saveUpdates(_0x9b8432[_0x5a29('0x4a')],null))[_0x5a29('0x27')](respondWithResult(_0x328eb7,null))['catch'](handleError(_0x328eb7,null));};exports['destroy']=function(_0x5b50c3,_0x3dd795){return db['SmsTransferReport'][_0x5a29('0x47')]({'where':{'id':_0x5b50c3[_0x5a29('0x45')]['id']}})[_0x5a29('0x27')](handleEntityNotFound(_0x3dd795,null))[_0x5a29('0x27')](removeEntity(_0x3dd795,null))['catch'](handleError(_0x3dd795,null));};exports['describe']=function(_0x5b3b92,_0x480432){return db[_0x5a29('0x2f')][_0x5a29('0x4b')]()[_0x5a29('0x27')](respondWithResult(_0x480432,null))['catch'](handleError(_0x480432,null));};
\ No newline at end of file
+var _0x4764=['undefined','count','limit','set','apply','reject','save','then','destroy','error','stack','name','send','index','SmsTransferReport','rawAttributes','type','key','model','map','query','filters','fields','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','params','keys','intersection','length','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset'];(function(_0x3e0a89,_0x1bcd31){var _0x2719b9=function(_0x4d40a2){while(--_0x4d40a2){_0x3e0a89['push'](_0x3e0a89['shift']());}};_0x2719b9(++_0x1bcd31);}(_0x4764,0x15e));var _0x4476=function(_0x573ff1,_0x208dec){_0x573ff1=_0x573ff1-0x0;var _0x5911c5=_0x4764[_0x573ff1];return _0x5911c5;};'use strict';var emlformat=require(_0x4476('0x0'));var rimraf=require(_0x4476('0x1'));var zipdir=require(_0x4476('0x2'));var jsonpatch=require(_0x4476('0x3'));var rp=require(_0x4476('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4476('0x5'));var util=require(_0x4476('0x6'));var path=require('path');var sox=require(_0x4476('0x7'));var csv=require(_0x4476('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4476('0x9'));var _=require(_0x4476('0xa'));var squel=require('squel');var crypto=require(_0x4476('0xb'));var jsforce=require(_0x4476('0xc'));var deskjs=require(_0x4476('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4476('0xe'));var Papa=require(_0x4476('0xf'));var Redis=require(_0x4476('0x10'));var authService=require(_0x4476('0x11'));var qs=require(_0x4476('0x12'));var as=require(_0x4476('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4476('0x14'))(_0x4476('0x15'));var utils=require(_0x4476('0x16'));var config=require(_0x4476('0x17'));var licenseUtil=require(_0x4476('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54f888,_0x21cdf1){_0x21cdf1=_0x21cdf1||0xcc;return function(_0x3e6924){if(_0x3e6924){return _0x54f888[_0x4476('0x19')](_0x21cdf1);}return _0x54f888['status'](_0x21cdf1)[_0x4476('0x1a')]();};}function respondWithResult(_0x2e1463,_0x51a0d0){_0x51a0d0=_0x51a0d0||0xc8;return function(_0x3699b5){if(_0x3699b5){return _0x2e1463[_0x4476('0x1b')](_0x51a0d0)[_0x4476('0x1c')](_0x3699b5);}};}function respondWithFilteredResult(_0x2dfa80,_0x24cb51){return function(_0x14870d){if(_0x14870d){var _0x505f58=typeof _0x24cb51[_0x4476('0x1d')]===_0x4476('0x1e')&&typeof _0x24cb51['limit']===_0x4476('0x1e');var _0x1de5d7=_0x14870d[_0x4476('0x1f')];var _0x50e948=_0x505f58?0x0:_0x24cb51[_0x4476('0x1d')];var _0x60abea=_0x505f58?_0x14870d['count']:_0x24cb51['offset']+_0x24cb51[_0x4476('0x20')];var _0x1d8075;if(_0x60abea>=_0x1de5d7){_0x60abea=_0x1de5d7;_0x1d8075=0xc8;}else{_0x1d8075=0xce;}_0x2dfa80[_0x4476('0x1b')](_0x1d8075);return _0x2dfa80[_0x4476('0x21')]('Content-Range',_0x50e948+'-'+_0x60abea+'/'+_0x1de5d7)[_0x4476('0x1c')](_0x14870d);}return null;};}function patchUpdates(_0x2a536f){return function(_0x4604d6){try{jsonpatch[_0x4476('0x22')](_0x4604d6,_0x2a536f,!![]);}catch(_0x592ced){return BPromise[_0x4476('0x23')](_0x592ced);}return _0x4604d6[_0x4476('0x24')]();};}function saveUpdates(_0x2d9cca,_0x4f9d2c){return function(_0x5a9365){if(_0x5a9365){return _0x5a9365['update'](_0x2d9cca)[_0x4476('0x25')](function(_0x563cca){return _0x563cca;});}return null;};}function removeEntity(_0x4cca68,_0xd2eb05){return function(_0x3850be){if(_0x3850be){return _0x3850be[_0x4476('0x26')]()['then'](function(){_0x4cca68[_0x4476('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ad6f7,_0x2e0c93){return function(_0x13133f){if(!_0x13133f){_0x5ad6f7[_0x4476('0x19')](0x194);}return _0x13133f;};}function handleError(_0x1b5538,_0x38777b){_0x38777b=_0x38777b||0x1f4;return function(_0x1c7119){logger[_0x4476('0x27')](_0x1c7119[_0x4476('0x28')]);if(_0x1c7119[_0x4476('0x29')]){delete _0x1c7119[_0x4476('0x29')];}_0x1b5538[_0x4476('0x1b')](_0x38777b)[_0x4476('0x2a')](_0x1c7119);};}exports[_0x4476('0x2b')]=function(_0x417a4e,_0x464b15){var _0x5894b0={},_0x5215e8={},_0xd9c386={'count':0x0,'rows':[]};var _0x47b9f1=_['map'](db[_0x4476('0x2c')][_0x4476('0x2d')],function(_0x190ba2){return{'name':_0x190ba2['fieldName'],'type':_0x190ba2[_0x4476('0x2e')][_0x4476('0x2f')]};});_0x5215e8[_0x4476('0x30')]=_[_0x4476('0x31')](_0x47b9f1,_0x4476('0x29'));_0x5215e8[_0x4476('0x32')]=_['keys'](_0x417a4e['query']);_0x5215e8[_0x4476('0x33')]=_['intersection'](_0x5215e8['model'],_0x5215e8['query']);_0x5894b0['attributes']=_['intersection'](_0x5215e8[_0x4476('0x30')],qs[_0x4476('0x34')](_0x417a4e[_0x4476('0x32')][_0x4476('0x34')]));_0x5894b0[_0x4476('0x35')]=_0x5894b0[_0x4476('0x35')]['length']?_0x5894b0[_0x4476('0x35')]:_0x5215e8['model'];if(!_0x417a4e[_0x4476('0x32')]['hasOwnProperty'](_0x4476('0x36'))){_0x5894b0[_0x4476('0x20')]=qs[_0x4476('0x20')](_0x417a4e['query'][_0x4476('0x20')]);_0x5894b0[_0x4476('0x1d')]=qs[_0x4476('0x1d')](_0x417a4e['query']['offset']);}_0x5894b0[_0x4476('0x37')]=qs[_0x4476('0x38')](_0x417a4e[_0x4476('0x32')]['sort']);_0x5894b0[_0x4476('0x39')]=qs[_0x4476('0x33')](_[_0x4476('0x3a')](_0x417a4e[_0x4476('0x32')],_0x5215e8['filters']),_0x47b9f1);if(_0x417a4e[_0x4476('0x32')]['filter']){_0x5894b0['where']=_[_0x4476('0x3b')](_0x5894b0[_0x4476('0x39')],{'$or':_[_0x4476('0x31')](_0x47b9f1,function(_0x55dbdb){if(_0x55dbdb['type']!==_0x4476('0x3c')){var _0x18ca4b={};_0x18ca4b[_0x55dbdb[_0x4476('0x29')]]={'$like':'%'+_0x417a4e['query'][_0x4476('0x3d')]+'%'};return _0x18ca4b;}})});}_0x5894b0=_[_0x4476('0x3b')]({},_0x5894b0,_0x417a4e[_0x4476('0x3e')]);var _0x1614e0={'where':_0x5894b0[_0x4476('0x39')]};return db[_0x4476('0x2c')]['count'](_0x1614e0)[_0x4476('0x25')](function(_0x5450aa){_0xd9c386['count']=_0x5450aa;if(_0x417a4e[_0x4476('0x32')][_0x4476('0x3f')]){_0x5894b0[_0x4476('0x40')]=[{'all':!![]}];}return db[_0x4476('0x2c')][_0x4476('0x41')](_0x5894b0);})[_0x4476('0x25')](function(_0x150075){_0xd9c386['rows']=_0x150075;return _0xd9c386;})['then'](respondWithFilteredResult(_0x464b15,_0x5894b0))[_0x4476('0x42')](handleError(_0x464b15,null));};exports['show']=function(_0x38d6bc,_0x1a3c31){var _0xfb35={'raw':!![],'where':{'id':_0x38d6bc[_0x4476('0x43')]['id']}},_0x58188f={};_0x58188f[_0x4476('0x30')]=_[_0x4476('0x44')](db[_0x4476('0x2c')][_0x4476('0x2d')]);_0x58188f[_0x4476('0x32')]=_[_0x4476('0x44')](_0x38d6bc[_0x4476('0x32')]);_0x58188f[_0x4476('0x33')]=_[_0x4476('0x45')](_0x58188f[_0x4476('0x30')],_0x58188f[_0x4476('0x32')]);_0xfb35[_0x4476('0x35')]=_['intersection'](_0x58188f['model'],qs[_0x4476('0x34')](_0x38d6bc[_0x4476('0x32')][_0x4476('0x34')]));_0xfb35[_0x4476('0x35')]=_0xfb35[_0x4476('0x35')][_0x4476('0x46')]?_0xfb35[_0x4476('0x35')]:_0x58188f['model'];if(_0x38d6bc[_0x4476('0x32')][_0x4476('0x3f')]){_0xfb35[_0x4476('0x40')]=[{'all':!![]}];}_0xfb35=_[_0x4476('0x3b')]({},_0xfb35,_0x38d6bc[_0x4476('0x3e')]);return db[_0x4476('0x2c')][_0x4476('0x47')](_0xfb35)[_0x4476('0x25')](handleEntityNotFound(_0x1a3c31,null))[_0x4476('0x25')](respondWithResult(_0x1a3c31,null))[_0x4476('0x42')](handleError(_0x1a3c31,null));};exports[_0x4476('0x48')]=function(_0x4dabfc,_0x41bb20){return db[_0x4476('0x2c')][_0x4476('0x48')](_0x4dabfc[_0x4476('0x49')],{})[_0x4476('0x25')](respondWithResult(_0x41bb20,0xc9))[_0x4476('0x42')](handleError(_0x41bb20,null));};exports[_0x4476('0x4a')]=function(_0x5bfdfd,_0x415e1a){if(_0x5bfdfd[_0x4476('0x49')]['id']){delete _0x5bfdfd[_0x4476('0x49')]['id'];}return db['SmsTransferReport'][_0x4476('0x47')]({'where':{'id':_0x5bfdfd[_0x4476('0x43')]['id']}})['then'](handleEntityNotFound(_0x415e1a,null))[_0x4476('0x25')](saveUpdates(_0x5bfdfd[_0x4476('0x49')],null))['then'](respondWithResult(_0x415e1a,null))[_0x4476('0x42')](handleError(_0x415e1a,null));};exports[_0x4476('0x26')]=function(_0x1cf1ea,_0x1efd45){return db[_0x4476('0x2c')][_0x4476('0x47')]({'where':{'id':_0x1cf1ea['params']['id']}})[_0x4476('0x25')](handleEntityNotFound(_0x1efd45,null))[_0x4476('0x25')](removeEntity(_0x1efd45,null))[_0x4476('0x42')](handleError(_0x1efd45,null));};exports[_0x4476('0x4b')]=function(_0x50fe8d,_0x4e56d1){return db['SmsTransferReport']['describe']()[_0x4476('0x25')](respondWithResult(_0x4e56d1,null))[_0x4476('0x42')](handleError(_0x4e56d1,null));};
\ No newline at end of file
index e5a55e9..72e5c86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e5d=['lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','report_sms_transfer','uniqueid'];(function(_0x3f9772,_0x222963){var _0x54d06b=function(_0xb47a8e){while(--_0xb47a8e){_0x3f9772['push'](_0x3f9772['shift']());}};_0x54d06b(++_0x222963);}(_0x0e5d,0x152));var _0xd0e5=function(_0x4ccdbc,_0x4d3654){_0x4ccdbc=_0x4ccdbc-0x0;var _0x25fc94=_0x0e5d[_0x4ccdbc];return _0x25fc94;};'use strict';var _=require(_0xd0e5('0x0'));var util=require(_0xd0e5('0x1'));var logger=require('../../config/logger')(_0xd0e5('0x2'));var moment=require(_0xd0e5('0x3'));var BPromise=require(_0xd0e5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd0e5('0x5'));var rimraf=require(_0xd0e5('0x6'));var config=require(_0xd0e5('0x7'));var attributes=require(_0xd0e5('0x8'));module[_0xd0e5('0x9')]=function(_0x46d98f,_0x9f0912){return _0x46d98f[_0xd0e5('0xa')]('SmsTransferReport',attributes,{'tableName':_0xd0e5('0xb'),'paranoid':![],'indexes':[{'name':_0xd0e5('0xc'),'fields':[_0xd0e5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c48=['./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x103730,_0x40a1a6){var _0x4d66a2=function(_0x4aabbe){while(--_0x4aabbe){_0x103730['push'](_0x103730['shift']());}};_0x4d66a2(++_0x40a1a6);}(_0x5c48,0x172));var _0x85c4=function(_0x2e0a6b,_0x5816e9){_0x2e0a6b=_0x2e0a6b-0x0;var _0xd9ce5f=_0x5c48[_0x2e0a6b];return _0xd9ce5f;};'use strict';var _=require(_0x85c4('0x0'));var util=require(_0x85c4('0x1'));var logger=require(_0x85c4('0x2'))(_0x85c4('0x3'));var moment=require(_0x85c4('0x4'));var BPromise=require(_0x85c4('0x5'));var rp=require(_0x85c4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x85c4('0x7'));var config=require('../../config/environment');var attributes=require(_0x85c4('0x8'));module[_0x85c4('0x9')]=function(_0x588ed1,_0x464d6b){return _0x588ed1[_0x85c4('0xa')](_0x85c4('0xb'),attributes,{'tableName':_0x85c4('0xc'),'paranoid':![],'indexes':[{'name':_0x85c4('0xd'),'fields':[_0x85c4('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index aa0dd82..da9edad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ef=['util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','stringify','error','message','SmsTransferReport,\x20%s,\x20%s','info','lodash'];(function(_0x301f38,_0x279805){var _0x19d326=function(_0x51bec1){while(--_0x51bec1){_0x301f38['push'](_0x301f38['shift']());}};_0x19d326(++_0x279805);}(_0xb2ef,0xa7));var _0xfb2e=function(_0x1a944e,_0x4b94f8){_0x1a944e=_0x1a944e-0x0;var _0x52cf88=_0xb2ef[_0x1a944e];return _0x52cf88;};'use strict';var _=require(_0xfb2e('0x0'));var util=require(_0xfb2e('0x1'));var moment=require(_0xfb2e('0x2'));var BPromise=require('bluebird');var rs=require(_0xfb2e('0x3'));var fs=require('fs');var Redis=require(_0xfb2e('0x4'));var db=require(_0xfb2e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfb2e('0x6'))(_0xfb2e('0x7'));var config=require(_0xfb2e('0x8'));var jayson=require(_0xfb2e('0x9'));var client=jayson[_0xfb2e('0xa')][_0xfb2e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1fb22e,_0x72054c,_0x1d0a05){return new BPromise(function(_0x46c641,_0x4f31d6){return client[_0xfb2e('0xc')](_0x1fb22e,_0x1d0a05)[_0xfb2e('0xd')](function(_0x26494e){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x72054c,_0xfb2e('0xe'));logger[_0xfb2e('0xf')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x72054c,_0xfb2e('0xe'),JSON[_0xfb2e('0x10')](_0x26494e));if(_0x26494e['error']){if(_0x26494e['error']['code']===0x1f4){logger[_0xfb2e('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x72054c,_0x26494e[_0xfb2e('0x11')][_0xfb2e('0x12')]);return _0x4f31d6(_0x26494e[_0xfb2e('0x11')][_0xfb2e('0x12')]);}logger[_0xfb2e('0x11')](_0xfb2e('0x13'),_0x72054c,_0x26494e['error'][_0xfb2e('0x12')]);return _0x46c641(_0x26494e[_0xfb2e('0x11')][_0xfb2e('0x12')]);}else{logger[_0xfb2e('0x14')](_0xfb2e('0x13'),_0x72054c,'request\x20sent');_0x46c641(_0x26494e['result']['message']);}})['catch'](function(_0x2ab641){logger[_0xfb2e('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x72054c,_0x2ab641);_0x4f31d6(_0x2ab641);});});}
\ No newline at end of file
+var _0x744c=['SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x410ffc,_0x3711f4){var _0x4f4a62=function(_0x8d60f2){while(--_0x8d60f2){_0x410ffc['push'](_0x410ffc['shift']());}};_0x4f4a62(++_0x3711f4);}(_0x744c,0xa0));var _0xc744=function(_0x34b951,_0x554a89){_0x34b951=_0x34b951-0x0;var _0x2b259f=_0x744c[_0x34b951];return _0x2b259f;};'use strict';var _=require(_0xc744('0x0'));var util=require(_0xc744('0x1'));var moment=require(_0xc744('0x2'));var BPromise=require(_0xc744('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc744('0x4'));var db=require(_0xc744('0x5'))['db'];var utils=require(_0xc744('0x6'));var logger=require(_0xc744('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc744('0x8'));var client=jayson[_0xc744('0x9')][_0xc744('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d5009,_0x5625a5,_0x5a85d6){return new BPromise(function(_0x2bb565,_0xf1fc2f){return client['request'](_0x5d5009,_0x5a85d6)[_0xc744('0xb')](function(_0x24a8d3){logger[_0xc744('0xc')](_0xc744('0xd'),_0x5625a5,_0xc744('0xe'));logger[_0xc744('0xf')](_0xc744('0x10'),_0x5625a5,'request\x20sent',JSON[_0xc744('0x11')](_0x24a8d3));if(_0x24a8d3[_0xc744('0x12')]){if(_0x24a8d3[_0xc744('0x12')][_0xc744('0x13')]===0x1f4){logger[_0xc744('0x12')](_0xc744('0xd'),_0x5625a5,_0x24a8d3['error'][_0xc744('0x14')]);return _0xf1fc2f(_0x24a8d3['error'][_0xc744('0x14')]);}logger[_0xc744('0x12')](_0xc744('0xd'),_0x5625a5,_0x24a8d3['error']['message']);return _0x2bb565(_0x24a8d3['error']['message']);}else{logger[_0xc744('0xc')](_0xc744('0xd'),_0x5625a5,'request\x20sent');_0x2bb565(_0x24a8d3['result'][_0xc744('0x14')]);}})[_0xc744('0x15')](function(_0x36f42f){logger[_0xc744('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x5625a5,_0x36f42f);_0xf1fc2f(_0x36f42f);});});}
\ No newline at end of file
index 8cf63a4..0903084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa311=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','diskStorage','join','root','originalname','replace','format','%s-%s%s','extname','post','single','file','exports','multer','path','Router'];(function(_0x1487f7,_0x4052e1){var _0x2b9750=function(_0x516724){while(--_0x516724){_0x1487f7['push'](_0x1487f7['shift']());}};_0x2b9750(++_0x4052e1);}(_0xa311,0x135));var _0x1a31=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa311[_0x311c35];return _0x5cc50c;};'use strict';var multer=require(_0x1a31('0x0'));var util=require('util');var path=require(_0x1a31('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1a31('0x2')]();var fs_extra=require(_0x1a31('0x3'));var auth=require(_0x1a31('0x4'));var interaction=require(_0x1a31('0x5'));var config=require(_0x1a31('0x6'));var controller=require('./sound.controller');router[_0x1a31('0x7')]('/',auth[_0x1a31('0x8')](),controller[_0x1a31('0x9')]);router[_0x1a31('0x7')](_0x1a31('0xa'),auth[_0x1a31('0x8')](),controller[_0x1a31('0xb')]);router[_0x1a31('0x7')](_0x1a31('0xc'),auth[_0x1a31('0x8')](),controller[_0x1a31('0xd')]);var upload=multer({'storage':multer[_0x1a31('0xe')]({'destination':function(_0x4fa205,_0x3624c2,_0x3101e5){_0x3101e5(null,path[_0x1a31('0xf')](config[_0x1a31('0x10')],'server/files/sounds/original/'));},'filename':function(_0x3e5caf,_0x5b3999,_0x54add6){_0x5b3999[_0x1a31('0x11')]=_0x5b3999[_0x1a31('0x11')][_0x1a31('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x54add6(null,util[_0x1a31('0x13')](_0x1a31('0x14'),path['basename'](_0x5b3999[_0x1a31('0x11')],path[_0x1a31('0x15')](_0x5b3999[_0x1a31('0x11')])),Date['now'](),path[_0x1a31('0x15')](_0x5b3999[_0x1a31('0x11')])));}})});router[_0x1a31('0x16')]('/',upload[_0x1a31('0x17')](_0x1a31('0x18')),controller['create']);router['put'](_0x1a31('0xa'),auth[_0x1a31('0x8')](),controller['update']);router['delete'](_0x1a31('0xa'),auth[_0x1a31('0x8')](),controller['delete']);module[_0x1a31('0x19')]=router;
\ No newline at end of file
+var _0xba7c=['isAuthenticated','index','show','/:id/download','diskStorage','join','root','server/files/sounds/original/','originalname','format','%s-%s%s','basename','extname','now','post','single','file','create','put','/:id','delete','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x1562a2,_0x2e4655){var _0x39a636=function(_0x25483a){while(--_0x25483a){_0x1562a2['push'](_0x1562a2['shift']());}};_0x39a636(++_0x2e4655);}(_0xba7c,0x171));var _0xcba7=function(_0x5faff0,_0x411206){_0x5faff0=_0x5faff0-0x0;var _0x2d535b=_0xba7c[_0x5faff0];return _0x2d535b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcba7('0x0'));var timeout=require(_0xcba7('0x1'));var express=require(_0xcba7('0x2'));var router=express['Router']();var fs_extra=require(_0xcba7('0x3'));var auth=require(_0xcba7('0x4'));var interaction=require(_0xcba7('0x5'));var config=require(_0xcba7('0x6'));var controller=require('./sound.controller');router[_0xcba7('0x7')]('/',auth[_0xcba7('0x8')](),controller[_0xcba7('0x9')]);router[_0xcba7('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xcba7('0xa')]);router['get'](_0xcba7('0xb'),auth[_0xcba7('0x8')](),controller['download']);var upload=multer({'storage':multer[_0xcba7('0xc')]({'destination':function(_0x1f64fd,_0x413d4d,_0x2757db){_0x2757db(null,path[_0xcba7('0xd')](config[_0xcba7('0xe')],_0xcba7('0xf')));},'filename':function(_0x23b2c9,_0x2ef4c0,_0x4af0fa){_0x2ef4c0[_0xcba7('0x10')]=_0x2ef4c0[_0xcba7('0x10')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4af0fa(null,util[_0xcba7('0x11')](_0xcba7('0x12'),path[_0xcba7('0x13')](_0x2ef4c0[_0xcba7('0x10')],path[_0xcba7('0x14')](_0x2ef4c0[_0xcba7('0x10')])),Date[_0xcba7('0x15')](),path['extname'](_0x2ef4c0['originalname'])));}})});router[_0xcba7('0x16')]('/',upload[_0xcba7('0x17')](_0xcba7('0x18')),controller[_0xcba7('0x19')]);router[_0xcba7('0x1a')](_0xcba7('0x1b'),auth[_0xcba7('0x8')](),controller['update']);router[_0xcba7('0x1c')](_0xcba7('0x1b'),auth[_0xcba7('0x8')](),controller[_0xcba7('0x1c')]);module['exports']=router;
\ No newline at end of file
index 6dffef5..18f511d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcece=['sequelize','exports','STRING','name','FLOAT','BIGINT','INTEGER'];(function(_0x18a8fe,_0x1c6bb6){var _0x31004a=function(_0x2ba069){while(--_0x2ba069){_0x18a8fe['push'](_0x18a8fe['shift']());}};_0x31004a(++_0x1c6bb6);}(_0xcece,0x1e3));var _0xecec=function(_0x32d218,_0x83fc73){_0x32d218=_0x32d218-0x0;var _0x324156=_0xcece[_0x32d218];return _0x324156;};'use strict';var Sequelize=require(_0xecec('0x0'));module[_0xecec('0x1')]={'name':{'type':Sequelize[_0xecec('0x2')],'unique':_0xecec('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xecec('0x2')]},'display_name':{'type':Sequelize[_0xecec('0x2')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xecec('0x2')]},'original_duration':{'type':Sequelize[_0xecec('0x4')]},'original_sampleCount':{'type':Sequelize[_0xecec('0x5')]},'original_channelCount':{'type':Sequelize[_0xecec('0x6')]},'original_bitRate':{'type':Sequelize[_0xecec('0x5')]},'original_sampleRate':{'type':Sequelize[_0xecec('0x6')]},'converted_format':{'type':Sequelize[_0xecec('0x2')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0xecec('0x5')]},'converted_channelCount':{'type':Sequelize[_0xecec('0x6')]},'converted_bitRate':{'type':Sequelize[_0xecec('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xecec('0x6')]}};
\ No newline at end of file
+var _0x6f3e=['STRING','BIGINT','INTEGER','FLOAT','sequelize','exports'];(function(_0x23e2bd,_0x2fc2af){var _0x187daf=function(_0x3a52ba){while(--_0x3a52ba){_0x23e2bd['push'](_0x23e2bd['shift']());}};_0x187daf(++_0x2fc2af);}(_0x6f3e,0x17e));var _0xe6f3=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6f3e[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xe6f3('0x0'));module[_0xe6f3('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0xe6f3('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xe6f3('0x2')]},'original_format':{'type':Sequelize[_0xe6f3('0x2')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0xe6f3('0x3')]},'original_channelCount':{'type':Sequelize[_0xe6f3('0x4')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0xe6f3('0x2')]},'converted_duration':{'type':Sequelize[_0xe6f3('0x5')]},'converted_sampleCount':{'type':Sequelize[_0xe6f3('0x3')]},'converted_channelCount':{'type':Sequelize[_0xe6f3('0x4')]},'converted_bitRate':{'type':Sequelize[_0xe6f3('0x3')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index db33a2a..939fa55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29db=['src','duration','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','dest','converted_duration','converted_bitRate','converted_sampleRate','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','send','body','description','original_format','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Sounds','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','options','includeAll','include','rows','catch','show','find','download','Sound','params','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','format','%s.%s','create','basename','file','originalname','extname','server/files/sounds/original','filename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','transcode','wav','unlinkSync'];(function(_0x599981,_0x2d873e){var _0x1dfc35=function(_0x16981b){while(--_0x16981b){_0x599981['push'](_0x599981['shift']());}};_0x1dfc35(++_0x2d873e);}(_0x29db,0x96));var _0xb29d=function(_0x44fb55,_0x382b61){_0x44fb55=_0x44fb55-0x0;var _0x42aa8e=_0x29db[_0x44fb55];return _0x42aa8e;};'use strict';var emlformat=require(_0xb29d('0x0'));var rimraf=require(_0xb29d('0x1'));var zipdir=require(_0xb29d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb29d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb29d('0x4'));var util=require(_0xb29d('0x5'));var path=require(_0xb29d('0x6'));var sox=require(_0xb29d('0x7'));var csv=require(_0xb29d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb29d('0x9'));var _=require(_0xb29d('0xa'));var squel=require(_0xb29d('0xb'));var crypto=require(_0xb29d('0xc'));var jsforce=require(_0xb29d('0xd'));var deskjs=require(_0xb29d('0xe'));var toCsv=require(_0xb29d('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb29d('0xf'));var authService=require(_0xb29d('0x10'));var qs=require(_0xb29d('0x11'));var as=require(_0xb29d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb29d('0x13'))(_0xb29d('0x14'));var utils=require(_0xb29d('0x15'));var config=require(_0xb29d('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb29d('0x17'))['db'];function respondWithStatusCode(_0xc302e5,_0x5d7098){_0x5d7098=_0x5d7098||0xcc;return function(_0x495705){if(_0x495705){return _0xc302e5[_0xb29d('0x18')](_0x5d7098);}return _0xc302e5[_0xb29d('0x19')](_0x5d7098)[_0xb29d('0x1a')]();};}function respondWithResult(_0x9d69ff,_0x1380c8){_0x1380c8=_0x1380c8||0xc8;return function(_0x14de38){if(_0x14de38){return _0x9d69ff[_0xb29d('0x19')](_0x1380c8)[_0xb29d('0x1b')](_0x14de38);}};}function respondWithFilteredResult(_0x11c794,_0xe1ee69){return function(_0x2ad97c){if(_0x2ad97c){var _0x5bc265=typeof _0xe1ee69[_0xb29d('0x1c')]===_0xb29d('0x1d')&&typeof _0xe1ee69[_0xb29d('0x1e')]==='undefined';var _0x5419da=_0x2ad97c[_0xb29d('0x1f')];var _0x3dea62=_0x5bc265?0x0:_0xe1ee69['offset'];var _0x1db7ac=_0x5bc265?_0x2ad97c['count']:_0xe1ee69[_0xb29d('0x1c')]+_0xe1ee69[_0xb29d('0x1e')];var _0x5081f7;if(_0x1db7ac>=_0x5419da){_0x1db7ac=_0x5419da;_0x5081f7=0xc8;}else{_0x5081f7=0xce;}_0x11c794[_0xb29d('0x19')](_0x5081f7);return _0x11c794[_0xb29d('0x20')](_0xb29d('0x21'),_0x3dea62+'-'+_0x1db7ac+'/'+_0x5419da)[_0xb29d('0x1b')](_0x2ad97c);}return null;};}function patchUpdates(_0x38cd16){return function(_0x4bc8e5){try{jsonpatch[_0xb29d('0x22')](_0x4bc8e5,_0x38cd16,!![]);}catch(_0x584c5f){return BPromise[_0xb29d('0x23')](_0x584c5f);}return _0x4bc8e5[_0xb29d('0x24')]();};}function saveUpdates(_0x47defd,_0x57c95e){return function(_0x4c92d2){if(_0x4c92d2){return _0x4c92d2[_0xb29d('0x25')](_0x47defd)[_0xb29d('0x26')](function(_0x3dc20b){return _0x3dc20b;});}return null;};}function removeEntity(_0x422478,_0x8cb9b1){return function(_0x3ee72e){if(_0x3ee72e){return _0x3ee72e[_0xb29d('0x27')]()['then'](function(){var _0x5284c4=_0x3ee72e[_0xb29d('0x28')]({'plain':!![]});var _0x73ba97=_0xb29d('0x29');return db['UserProfileResource'][_0xb29d('0x27')]({'where':{'type':_0x73ba97,'resourceId':_0x5284c4['id']}})[_0xb29d('0x26')](function(){return _0x3ee72e;});})['then'](function(){_0x422478[_0xb29d('0x19')](0xcc)[_0xb29d('0x1a')]();});}};}function handleEntityNotFound(_0x1ee076,_0x2e939f){return function(_0x4d9112){if(!_0x4d9112){_0x1ee076[_0xb29d('0x18')](0x194);}return _0x4d9112;};}function handleError(_0x5a2c35,_0x498abf){_0x498abf=_0x498abf||0x1f4;return function(_0x20d34b){logger[_0xb29d('0x2a')](_0x20d34b[_0xb29d('0x2b')]);if(_0x20d34b[_0xb29d('0x2c')]){delete _0x20d34b[_0xb29d('0x2c')];}_0x5a2c35[_0xb29d('0x19')](_0x498abf)['send'](_0x20d34b);};}exports[_0xb29d('0x2d')]=function(_0x2c8b61,_0x70cae8){var _0x267289={},_0x42ba36={},_0x31cf37={'count':0x0,'rows':[]};var _0x22eaac=_[_0xb29d('0x2e')](db['Sound'][_0xb29d('0x2f')],function(_0xad5870){return{'name':_0xad5870[_0xb29d('0x30')],'type':_0xad5870[_0xb29d('0x31')][_0xb29d('0x32')]};});_0x42ba36[_0xb29d('0x33')]=_[_0xb29d('0x2e')](_0x22eaac,_0xb29d('0x2c'));_0x42ba36[_0xb29d('0x34')]=_[_0xb29d('0x35')](_0x2c8b61[_0xb29d('0x34')]);_0x42ba36['filters']=_[_0xb29d('0x36')](_0x42ba36[_0xb29d('0x33')],_0x42ba36[_0xb29d('0x34')]);_0x267289[_0xb29d('0x37')]=_[_0xb29d('0x36')](_0x42ba36['model'],qs[_0xb29d('0x38')](_0x2c8b61['query'][_0xb29d('0x38')]));_0x267289['attributes']=_0x267289['attributes'][_0xb29d('0x39')]?_0x267289[_0xb29d('0x37')]:_0x42ba36[_0xb29d('0x33')];if(!_0x2c8b61[_0xb29d('0x34')][_0xb29d('0x3a')]('nolimit')){_0x267289[_0xb29d('0x1e')]=qs[_0xb29d('0x1e')](_0x2c8b61['query'][_0xb29d('0x1e')]);_0x267289[_0xb29d('0x1c')]=qs[_0xb29d('0x1c')](_0x2c8b61[_0xb29d('0x34')][_0xb29d('0x1c')]);}_0x267289[_0xb29d('0x3b')]=qs[_0xb29d('0x3c')](_0x2c8b61[_0xb29d('0x34')][_0xb29d('0x3c')]);_0x267289[_0xb29d('0x3d')]=qs[_0xb29d('0x3e')](_[_0xb29d('0x3f')](_0x2c8b61[_0xb29d('0x34')],_0x42ba36[_0xb29d('0x3e')]),_0x22eaac);if(_0x2c8b61['query']['filter']){_0x267289[_0xb29d('0x3d')]=_[_0xb29d('0x40')](_0x267289['where'],{'$or':_['map'](_0x22eaac,function(_0x107376){if(_0x107376[_0xb29d('0x31')]!=='VIRTUAL'){var _0x303304={};_0x303304[_0x107376['name']]={'$like':'%'+_0x2c8b61[_0xb29d('0x34')]['filter']+'%'};return _0x303304;}})});}_0x267289=_['merge']({},_0x267289,_0x2c8b61[_0xb29d('0x41')]);var _0x45beca={'where':_0x267289[_0xb29d('0x3d')]};return db['Sound'][_0xb29d('0x1f')](_0x45beca)[_0xb29d('0x26')](function(_0x5294fb){_0x31cf37[_0xb29d('0x1f')]=_0x5294fb;if(_0x2c8b61['query'][_0xb29d('0x42')]){_0x267289[_0xb29d('0x43')]=[{'all':!![]}];}return db['Sound']['findAll'](_0x267289);})[_0xb29d('0x26')](function(_0x3261a9){_0x31cf37[_0xb29d('0x44')]=_0x3261a9;return _0x31cf37;})[_0xb29d('0x26')](respondWithFilteredResult(_0x70cae8,_0x267289))[_0xb29d('0x45')](handleError(_0x70cae8,null));};exports[_0xb29d('0x46')]=function(_0x2e8c8,_0x1e26cf){var _0x3cd10a={'raw':!![],'where':{'id':_0x2e8c8['params']['id']}},_0x1ce1d1={};_0x1ce1d1[_0xb29d('0x33')]=_['keys'](db['Sound']['rawAttributes']);_0x1ce1d1[_0xb29d('0x34')]=_[_0xb29d('0x35')](_0x2e8c8['query']);_0x1ce1d1[_0xb29d('0x3e')]=_[_0xb29d('0x36')](_0x1ce1d1['model'],_0x1ce1d1[_0xb29d('0x34')]);_0x3cd10a[_0xb29d('0x37')]=_[_0xb29d('0x36')](_0x1ce1d1[_0xb29d('0x33')],qs[_0xb29d('0x38')](_0x2e8c8[_0xb29d('0x34')][_0xb29d('0x38')]));_0x3cd10a[_0xb29d('0x37')]=_0x3cd10a[_0xb29d('0x37')][_0xb29d('0x39')]?_0x3cd10a['attributes']:_0x1ce1d1[_0xb29d('0x33')];if(_0x2e8c8['query']['includeAll']){_0x3cd10a[_0xb29d('0x43')]=[{'all':!![]}];}_0x3cd10a=_['merge']({},_0x3cd10a,_0x2e8c8[_0xb29d('0x41')]);return db['Sound'][_0xb29d('0x47')](_0x3cd10a)['then'](handleEntityNotFound(_0x1e26cf,null))[_0xb29d('0x26')](respondWithResult(_0x1e26cf,null))[_0xb29d('0x45')](handleError(_0x1e26cf,null));};exports[_0xb29d('0x48')]=function(_0x149755,_0x3e772d,_0x4ff936){return db[_0xb29d('0x49')]['find']({'where':{'id':_0x149755[_0xb29d('0x4a')]['id']},'attributes':[_0xb29d('0x2c'),_0xb29d('0x4b'),_0xb29d('0x4c')],'raw':!![]})[_0xb29d('0x26')](handleEntityNotFound(_0x3e772d,null))[_0xb29d('0x26')](function(_0x359bbe){if(_0x359bbe){if(!fs[_0xb29d('0x4d')](path[_0xb29d('0x4e')](config[_0xb29d('0x4f')],_0xb29d('0x50'),_0x359bbe[_0xb29d('0x4b')]+'.'+_0x359bbe['converted_format']))){throw new db[(_0xb29d('0x51'))][(_0xb29d('0x52'))](_0xb29d('0x53'));}return _0x3e772d[_0xb29d('0x48')](path[_0xb29d('0x4e')](config[_0xb29d('0x4f')],_0xb29d('0x50'),util[_0xb29d('0x54')](_0xb29d('0x55'),_0x359bbe[_0xb29d('0x4b')],_0x359bbe[_0xb29d('0x4c')])),util[_0xb29d('0x54')]('%s.%s',_0x359bbe['name'],_0x359bbe[_0xb29d('0x4c')]));}return null;})[_0xb29d('0x45')](handleError(_0x3e772d,null));};exports[_0xb29d('0x56')]=function(_0x4c3211,_0x20b9fb,_0x4b672a){var _0x653edc={'name':path[_0xb29d('0x57')](_0x4c3211[_0xb29d('0x58')][_0xb29d('0x59')],path['extname'](_0x4c3211['file'][_0xb29d('0x59')])),'save_name':path['basename'](_0x4c3211[_0xb29d('0x58')]['filename'],path[_0xb29d('0x5a')](_0x4c3211['file']['filename'])),'original_format':path[_0xb29d('0x5a')](_0x4c3211[_0xb29d('0x58')][_0xb29d('0x59')])['substring'](0x1),'converted_format':'wav'};var _0x1bc6ee=path['join'](config[_0xb29d('0x4f')],_0xb29d('0x5b'),_0x4c3211[_0xb29d('0x58')]['filename']);var _0x163782=path['join'](config[_0xb29d('0x4f')],_0xb29d('0x50'),util[_0xb29d('0x54')](_0xb29d('0x55'),path[_0xb29d('0x57')](_0x4c3211[_0xb29d('0x58')][_0xb29d('0x5c')],path['extname'](_0x4c3211[_0xb29d('0x58')]['filename'])),_0x653edc['converted_format']));logger[_0xb29d('0x5d')](_0xb29d('0x5e'),_0x1bc6ee);logger[_0xb29d('0x5d')](_0xb29d('0x5f'),_0x163782);try{fs['chmodSync'](_0x1bc6ee,parseInt(_0xb29d('0x60'),0x8));var _0x3b2e5b=sox[_0xb29d('0x61')](_0x1bc6ee,_0x163782,{'sampleRate':0x1f40,'format':_0xb29d('0x62'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3b2e5b['on'](_0xb29d('0x2a'),function(_0x4650a7){fs[_0xb29d('0x63')](_0x1bc6ee);_0x20b9fb[_0xb29d('0x19')](0x1f4)['send'](_0x4650a7);});_0x3b2e5b['on'](_0xb29d('0x64'),function(_0x58e1c){_0x653edc['original_duration']=isNaN(_0x58e1c['duration'])?null:_0x58e1c[_0xb29d('0x65')]*0x3e8;_0x653edc['original_sampleCount']=isNaN(_0x58e1c[_0xb29d('0x66')])?null:_0x58e1c[_0xb29d('0x66')];_0x653edc[_0xb29d('0x67')]=isNaN(_0x58e1c['channelCount'])?null:_0x58e1c[_0xb29d('0x68')];_0x653edc[_0xb29d('0x69')]=isNaN(_0x58e1c['bitRate'])?null:_0x58e1c[_0xb29d('0x6a')];_0x653edc['original_sampleRate']=isNaN(_0x58e1c[_0xb29d('0x6b')])?null:_0x58e1c[_0xb29d('0x6b')];});_0x3b2e5b['on'](_0xb29d('0x6c'),function(_0x283266){_0x653edc[_0xb29d('0x6d')]=isNaN(_0x283266[_0xb29d('0x65')])?null:_0x283266['duration']*0x3e8;_0x653edc['converted_sampleCount']=isNaN(_0x283266[_0xb29d('0x66')])?null:_0x283266[_0xb29d('0x66')];_0x653edc['converted_channelCount']=isNaN(_0x283266[_0xb29d('0x68')])?null:_0x283266[_0xb29d('0x68')];_0x653edc[_0xb29d('0x6e')]=isNaN(_0x283266['bitRate'])?null:_0x283266[_0xb29d('0x6a')];_0x653edc[_0xb29d('0x6f')]=isNaN(_0x283266['sampleRate'])?null:_0x283266[_0xb29d('0x6b')];});_0x3b2e5b['on'](_0xb29d('0x1a'),function(){fs['chmodSync'](_0x163782,parseInt('0777',0x8));return db['Sound']['create'](_0x653edc)['then'](function(_0x176df6){var _0x46441a={'role':_0x4c3211['body'][_0xb29d('0x70')],'userProfileId':_0x4c3211['body'][_0xb29d('0x71')]};if(!_0x46441a)throw new Error(_0xb29d('0x72'));if(_0x46441a['role']===_0xb29d('0x73')){var _0x471995=_0x176df6['get']({'plain':!![]});return db[_0xb29d('0x74')][_0xb29d('0x47')]({'where':{'name':_0xb29d('0x29'),'userProfileId':_0x46441a[_0xb29d('0x71')]},'raw':!![]})['then'](function(_0x60f3ec){if(_0x60f3ec&&_0x60f3ec[_0xb29d('0x75')]===0x0){return db[_0xb29d('0x76')][_0xb29d('0x56')]({'name':_0x471995[_0xb29d('0x2c')],'resourceId':_0x471995['id'],'type':_0x60f3ec[_0xb29d('0x2c')],'sectionId':_0x60f3ec['id']},{})[_0xb29d('0x26')](function(){return _0x176df6;});}else{return _0x176df6;}})['catch'](function(_0x27785e){logger[_0xb29d('0x2a')](_0xb29d('0x77'),_0x27785e);throw _0x27785e;});}return _0x176df6;})[_0xb29d('0x26')](respondWithResult(_0x20b9fb,null))[_0xb29d('0x45')](handleError(_0x20b9fb,null));});_0x3b2e5b[_0xb29d('0x78')]();}catch(_0x1edb13){_0x20b9fb[_0xb29d('0x19')](0x1f4)[_0xb29d('0x79')](_0x1edb13);}};exports[_0xb29d('0x25')]=function(_0x58945b,_0x507d0f,_0x19dda2){return db[_0xb29d('0x49')][_0xb29d('0x47')]({'where':{'id':_0x58945b['params']['id']}})[_0xb29d('0x26')](handleEntityNotFound(_0x507d0f,null))[_0xb29d('0x26')](saveUpdates(_[_0xb29d('0x3f')](_0x58945b[_0xb29d('0x7a')],['name',_0xb29d('0x7b')]),null))['then'](respondWithResult(_0x507d0f,null))[_0xb29d('0x45')](handleError(_0x507d0f,null));};exports['delete']=function(_0x11259a,_0x239167,_0x2a8c37){return db['Sound']['find']({'where':{'id':_0x11259a[_0xb29d('0x4a')]['id']}})['then'](function(_0x553ab3){if(_0x553ab3){return _0x553ab3[_0xb29d('0x27')]();}})[_0xb29d('0x26')](function(_0x29e6ad){var _0x33caf3=path[_0xb29d('0x4e')](config[_0xb29d('0x4f')],'server/files/sounds/original',util[_0xb29d('0x54')]('%s.%s',_0x29e6ad['save_name'],_0x29e6ad[_0xb29d('0x7c')]));var _0x63edb5=path[_0xb29d('0x4e')](config['root'],_0xb29d('0x50'),util[_0xb29d('0x54')](_0xb29d('0x55'),_0x29e6ad[_0xb29d('0x4b')],_0x29e6ad['converted_format']));fs[_0xb29d('0x63')](_0x33caf3);fs[_0xb29d('0x63')](_0x63edb5);return _0x29e6ad;})[_0xb29d('0x26')](function(_0x1cd0d4){if(_0x1cd0d4){return _0x239167['status'](0xcc)['end']();}})[_0xb29d('0x26')](handleEntityNotFound(_0x239167,null))[_0xb29d('0x45')](handleError(_0x239167,null));};
\ No newline at end of file
+var _0xaf80=['dest','converted_duration','channelCount','converted_bitRate','converted_sampleRate','chmodSync','0777','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','description','delete','server/files/sounds/original','original_format','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','squel','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','reject','save','update','then','destroy','Sounds','UserProfileResource','error','stack','name','index','map','Sound','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','options','includeAll','include','rows','show','params','download','converted_format','existsSync','join','root','server/files/sounds/converted','ValidationError','format','%s.%s','save_name','catch','basename','file','originalname','extname','filename','substring','wav','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','transcode','unlinkSync','send','original_duration','duration','sampleCount','original_channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaf80,0x190));var _0x0af8=function(_0x2483b7,_0x2802c4){_0x2483b7=_0x2483b7-0x0;var _0x1ac596=_0xaf80[_0x2483b7];return _0x1ac596;};'use strict';var emlformat=require(_0x0af8('0x0'));var rimraf=require(_0x0af8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0af8('0x2'));var rp=require(_0x0af8('0x3'));var moment=require('moment');var BPromise=require(_0x0af8('0x4'));var Mustache=require(_0x0af8('0x5'));var util=require('util');var path=require(_0x0af8('0x6'));var sox=require(_0x0af8('0x7'));var csv=require('to-csv');var ejs=require(_0x0af8('0x8'));var fs=require('fs');var fs_extra=require(_0x0af8('0x9'));var _=require('lodash');var squel=require(_0x0af8('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0af8('0xb'));var toCsv=require(_0x0af8('0xc'));var querystring=require('querystring');var Papa=require(_0x0af8('0xd'));var Redis=require(_0x0af8('0xe'));var authService=require(_0x0af8('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0af8('0x10'));var hardwareService=require(_0x0af8('0x11'));var logger=require(_0x0af8('0x12'))(_0x0af8('0x13'));var utils=require(_0x0af8('0x14'));var config=require(_0x0af8('0x15'));var licenseUtil=require(_0x0af8('0x16'));var db=require(_0x0af8('0x17'))['db'];function respondWithStatusCode(_0x524dd4,_0x27ee73){_0x27ee73=_0x27ee73||0xcc;return function(_0x32d842){if(_0x32d842){return _0x524dd4[_0x0af8('0x18')](_0x27ee73);}return _0x524dd4[_0x0af8('0x19')](_0x27ee73)[_0x0af8('0x1a')]();};}function respondWithResult(_0xa73680,_0x3583d2){_0x3583d2=_0x3583d2||0xc8;return function(_0x2a0f64){if(_0x2a0f64){return _0xa73680[_0x0af8('0x19')](_0x3583d2)[_0x0af8('0x1b')](_0x2a0f64);}};}function respondWithFilteredResult(_0x52faf5,_0xfb06da){return function(_0x446cd3){if(_0x446cd3){var _0x35b07e=typeof _0xfb06da[_0x0af8('0x1c')]==='undefined'&&typeof _0xfb06da['limit']===_0x0af8('0x1d');var _0xf9083d=_0x446cd3[_0x0af8('0x1e')];var _0x16107d=_0x35b07e?0x0:_0xfb06da['offset'];var _0x942f8c=_0x35b07e?_0x446cd3[_0x0af8('0x1e')]:_0xfb06da[_0x0af8('0x1c')]+_0xfb06da['limit'];var _0x29ddc8;if(_0x942f8c>=_0xf9083d){_0x942f8c=_0xf9083d;_0x29ddc8=0xc8;}else{_0x29ddc8=0xce;}_0x52faf5[_0x0af8('0x19')](_0x29ddc8);return _0x52faf5[_0x0af8('0x1f')]('Content-Range',_0x16107d+'-'+_0x942f8c+'/'+_0xf9083d)['json'](_0x446cd3);}return null;};}function patchUpdates(_0x5d05bf){return function(_0x3c8def){try{jsonpatch['apply'](_0x3c8def,_0x5d05bf,!![]);}catch(_0x470d8e){return BPromise[_0x0af8('0x20')](_0x470d8e);}return _0x3c8def[_0x0af8('0x21')]();};}function saveUpdates(_0x5bda63,_0x13350f){return function(_0x183fbd){if(_0x183fbd){return _0x183fbd[_0x0af8('0x22')](_0x5bda63)[_0x0af8('0x23')](function(_0xeb8a8a){return _0xeb8a8a;});}return null;};}function removeEntity(_0x33a258,_0x27f44d){return function(_0x5e5301){if(_0x5e5301){return _0x5e5301[_0x0af8('0x24')]()[_0x0af8('0x23')](function(){var _0x1ecee1=_0x5e5301['get']({'plain':!![]});var _0x460c68=_0x0af8('0x25');return db[_0x0af8('0x26')][_0x0af8('0x24')]({'where':{'type':_0x460c68,'resourceId':_0x1ecee1['id']}})['then'](function(){return _0x5e5301;});})['then'](function(){_0x33a258[_0x0af8('0x19')](0xcc)[_0x0af8('0x1a')]();});}};}function handleEntityNotFound(_0x11b821,_0xacab77){return function(_0x1a1572){if(!_0x1a1572){_0x11b821[_0x0af8('0x18')](0x194);}return _0x1a1572;};}function handleError(_0x564190,_0x5b1b49){_0x5b1b49=_0x5b1b49||0x1f4;return function(_0x5dcc00){logger[_0x0af8('0x27')](_0x5dcc00[_0x0af8('0x28')]);if(_0x5dcc00[_0x0af8('0x29')]){delete _0x5dcc00['name'];}_0x564190[_0x0af8('0x19')](_0x5b1b49)['send'](_0x5dcc00);};}exports[_0x0af8('0x2a')]=function(_0x8d3e0e,_0x351fcf){var _0x119b54={},_0x3d5f89={},_0x277ff0={'count':0x0,'rows':[]};var _0x53f411=_[_0x0af8('0x2b')](db[_0x0af8('0x2c')][_0x0af8('0x2d')],function(_0x312fc1){return{'name':_0x312fc1[_0x0af8('0x2e')],'type':_0x312fc1[_0x0af8('0x2f')][_0x0af8('0x30')]};});_0x3d5f89['model']=_[_0x0af8('0x2b')](_0x53f411,_0x0af8('0x29'));_0x3d5f89[_0x0af8('0x31')]=_[_0x0af8('0x32')](_0x8d3e0e[_0x0af8('0x31')]);_0x3d5f89[_0x0af8('0x33')]=_[_0x0af8('0x34')](_0x3d5f89[_0x0af8('0x35')],_0x3d5f89[_0x0af8('0x31')]);_0x119b54[_0x0af8('0x36')]=_[_0x0af8('0x34')](_0x3d5f89[_0x0af8('0x35')],qs[_0x0af8('0x37')](_0x8d3e0e['query'][_0x0af8('0x37')]));_0x119b54[_0x0af8('0x36')]=_0x119b54[_0x0af8('0x36')][_0x0af8('0x38')]?_0x119b54[_0x0af8('0x36')]:_0x3d5f89[_0x0af8('0x35')];if(!_0x8d3e0e[_0x0af8('0x31')][_0x0af8('0x39')](_0x0af8('0x3a'))){_0x119b54['limit']=qs[_0x0af8('0x3b')](_0x8d3e0e[_0x0af8('0x31')]['limit']);_0x119b54[_0x0af8('0x1c')]=qs[_0x0af8('0x1c')](_0x8d3e0e['query'][_0x0af8('0x1c')]);}_0x119b54[_0x0af8('0x3c')]=qs['sort'](_0x8d3e0e[_0x0af8('0x31')][_0x0af8('0x3d')]);_0x119b54['where']=qs[_0x0af8('0x33')](_[_0x0af8('0x3e')](_0x8d3e0e[_0x0af8('0x31')],_0x3d5f89[_0x0af8('0x33')]),_0x53f411);if(_0x8d3e0e['query'][_0x0af8('0x3f')]){_0x119b54[_0x0af8('0x40')]=_[_0x0af8('0x41')](_0x119b54[_0x0af8('0x40')],{'$or':_[_0x0af8('0x2b')](_0x53f411,function(_0x202f4f){if(_0x202f4f['type']!=='VIRTUAL'){var _0x36ca79={};_0x36ca79[_0x202f4f[_0x0af8('0x29')]]={'$like':'%'+_0x8d3e0e[_0x0af8('0x31')][_0x0af8('0x3f')]+'%'};return _0x36ca79;}})});}_0x119b54=_[_0x0af8('0x41')]({},_0x119b54,_0x8d3e0e[_0x0af8('0x42')]);var _0x12f707={'where':_0x119b54[_0x0af8('0x40')]};return db[_0x0af8('0x2c')][_0x0af8('0x1e')](_0x12f707)[_0x0af8('0x23')](function(_0x4574b2){_0x277ff0[_0x0af8('0x1e')]=_0x4574b2;if(_0x8d3e0e[_0x0af8('0x31')][_0x0af8('0x43')]){_0x119b54[_0x0af8('0x44')]=[{'all':!![]}];}return db[_0x0af8('0x2c')]['findAll'](_0x119b54);})[_0x0af8('0x23')](function(_0x2494ac){_0x277ff0[_0x0af8('0x45')]=_0x2494ac;return _0x277ff0;})[_0x0af8('0x23')](respondWithFilteredResult(_0x351fcf,_0x119b54))['catch'](handleError(_0x351fcf,null));};exports[_0x0af8('0x46')]=function(_0x28e1f3,_0x2d238a){var _0x193ca5={'raw':!![],'where':{'id':_0x28e1f3[_0x0af8('0x47')]['id']}},_0xf19594={};_0xf19594['model']=_[_0x0af8('0x32')](db['Sound']['rawAttributes']);_0xf19594[_0x0af8('0x31')]=_[_0x0af8('0x32')](_0x28e1f3[_0x0af8('0x31')]);_0xf19594['filters']=_[_0x0af8('0x34')](_0xf19594['model'],_0xf19594[_0x0af8('0x31')]);_0x193ca5[_0x0af8('0x36')]=_[_0x0af8('0x34')](_0xf19594[_0x0af8('0x35')],qs['fields'](_0x28e1f3[_0x0af8('0x31')][_0x0af8('0x37')]));_0x193ca5['attributes']=_0x193ca5[_0x0af8('0x36')]['length']?_0x193ca5['attributes']:_0xf19594[_0x0af8('0x35')];if(_0x28e1f3[_0x0af8('0x31')][_0x0af8('0x43')]){_0x193ca5[_0x0af8('0x44')]=[{'all':!![]}];}_0x193ca5=_[_0x0af8('0x41')]({},_0x193ca5,_0x28e1f3[_0x0af8('0x42')]);return db[_0x0af8('0x2c')]['find'](_0x193ca5)[_0x0af8('0x23')](handleEntityNotFound(_0x2d238a,null))[_0x0af8('0x23')](respondWithResult(_0x2d238a,null))['catch'](handleError(_0x2d238a,null));};exports[_0x0af8('0x48')]=function(_0x5c67ae,_0x3f8abc,_0x553856){return db['Sound']['find']({'where':{'id':_0x5c67ae[_0x0af8('0x47')]['id']},'attributes':[_0x0af8('0x29'),'save_name',_0x0af8('0x49')],'raw':!![]})[_0x0af8('0x23')](handleEntityNotFound(_0x3f8abc,null))[_0x0af8('0x23')](function(_0x49ba4c){if(_0x49ba4c){if(!fs[_0x0af8('0x4a')](path[_0x0af8('0x4b')](config[_0x0af8('0x4c')],_0x0af8('0x4d'),_0x49ba4c['save_name']+'.'+_0x49ba4c[_0x0af8('0x49')]))){throw new db['Sequelize'][(_0x0af8('0x4e'))]('Sound\x20not\x20found');}return _0x3f8abc[_0x0af8('0x48')](path['join'](config[_0x0af8('0x4c')],_0x0af8('0x4d'),util[_0x0af8('0x4f')](_0x0af8('0x50'),_0x49ba4c[_0x0af8('0x51')],_0x49ba4c[_0x0af8('0x49')])),util[_0x0af8('0x4f')](_0x0af8('0x50'),_0x49ba4c['name'],_0x49ba4c[_0x0af8('0x49')]));}return null;})[_0x0af8('0x52')](handleError(_0x3f8abc,null));};exports['create']=function(_0x25d76b,_0x9c6757,_0x32a36b){var _0x485f41={'name':path[_0x0af8('0x53')](_0x25d76b[_0x0af8('0x54')][_0x0af8('0x55')],path['extname'](_0x25d76b[_0x0af8('0x54')][_0x0af8('0x55')])),'save_name':path['basename'](_0x25d76b['file']['filename'],path[_0x0af8('0x56')](_0x25d76b[_0x0af8('0x54')][_0x0af8('0x57')])),'original_format':path['extname'](_0x25d76b[_0x0af8('0x54')][_0x0af8('0x55')])[_0x0af8('0x58')](0x1),'converted_format':_0x0af8('0x59')};var _0x17f9b2=path[_0x0af8('0x4b')](config[_0x0af8('0x4c')],'server/files/sounds/original',_0x25d76b[_0x0af8('0x54')]['filename']);var _0x40650d=path[_0x0af8('0x4b')](config[_0x0af8('0x4c')],_0x0af8('0x4d'),util[_0x0af8('0x4f')](_0x0af8('0x50'),path['basename'](_0x25d76b[_0x0af8('0x54')][_0x0af8('0x57')],path[_0x0af8('0x56')](_0x25d76b[_0x0af8('0x54')]['filename'])),_0x485f41['converted_format']));logger[_0x0af8('0x5a')](_0x0af8('0x5b'),_0x17f9b2);logger[_0x0af8('0x5a')](_0x0af8('0x5c'),_0x40650d);try{fs['chmodSync'](_0x17f9b2,parseInt('0777',0x8));var _0x332a34=sox[_0x0af8('0x5d')](_0x17f9b2,_0x40650d,{'sampleRate':0x1f40,'format':_0x0af8('0x59'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x332a34['on'](_0x0af8('0x27'),function(_0x5060b7){fs[_0x0af8('0x5e')](_0x17f9b2);_0x9c6757['status'](0x1f4)[_0x0af8('0x5f')](_0x5060b7);});_0x332a34['on']('src',function(_0x5b7f11){_0x485f41[_0x0af8('0x60')]=isNaN(_0x5b7f11[_0x0af8('0x61')])?null:_0x5b7f11[_0x0af8('0x61')]*0x3e8;_0x485f41['original_sampleCount']=isNaN(_0x5b7f11[_0x0af8('0x62')])?null:_0x5b7f11[_0x0af8('0x62')];_0x485f41[_0x0af8('0x63')]=isNaN(_0x5b7f11['channelCount'])?null:_0x5b7f11['channelCount'];_0x485f41[_0x0af8('0x64')]=isNaN(_0x5b7f11['bitRate'])?null:_0x5b7f11[_0x0af8('0x65')];_0x485f41[_0x0af8('0x66')]=isNaN(_0x5b7f11[_0x0af8('0x67')])?null:_0x5b7f11[_0x0af8('0x67')];});_0x332a34['on'](_0x0af8('0x68'),function(_0x28eca5){_0x485f41[_0x0af8('0x69')]=isNaN(_0x28eca5['duration'])?null:_0x28eca5[_0x0af8('0x61')]*0x3e8;_0x485f41['converted_sampleCount']=isNaN(_0x28eca5[_0x0af8('0x62')])?null:_0x28eca5[_0x0af8('0x62')];_0x485f41['converted_channelCount']=isNaN(_0x28eca5[_0x0af8('0x6a')])?null:_0x28eca5[_0x0af8('0x6a')];_0x485f41[_0x0af8('0x6b')]=isNaN(_0x28eca5[_0x0af8('0x65')])?null:_0x28eca5[_0x0af8('0x65')];_0x485f41[_0x0af8('0x6c')]=isNaN(_0x28eca5['sampleRate'])?null:_0x28eca5[_0x0af8('0x67')];});_0x332a34['on']('end',function(){fs[_0x0af8('0x6d')](_0x40650d,parseInt(_0x0af8('0x6e'),0x8));return db[_0x0af8('0x2c')]['create'](_0x485f41)['then'](function(_0x4896ce){var _0x56ba3d={'role':_0x25d76b['body'][_0x0af8('0x6f')],'userProfileId':_0x25d76b[_0x0af8('0x70')][_0x0af8('0x71')]};if(!_0x56ba3d)throw new Error(_0x0af8('0x72'));if(_0x56ba3d[_0x0af8('0x6f')]===_0x0af8('0x73')){var _0x17e4ab=_0x4896ce[_0x0af8('0x74')]({'plain':!![]});return db[_0x0af8('0x75')]['find']({'where':{'name':_0x0af8('0x25'),'userProfileId':_0x56ba3d[_0x0af8('0x71')]},'raw':!![]})[_0x0af8('0x23')](function(_0x4884de){if(_0x4884de&&_0x4884de[_0x0af8('0x76')]===0x0){return db[_0x0af8('0x26')][_0x0af8('0x77')]({'name':_0x17e4ab[_0x0af8('0x29')],'resourceId':_0x17e4ab['id'],'type':_0x4884de[_0x0af8('0x29')],'sectionId':_0x4884de['id']},{})[_0x0af8('0x23')](function(){return _0x4896ce;});}else{return _0x4896ce;}})['catch'](function(_0x5b5d79){logger[_0x0af8('0x27')](_0x0af8('0x78'),_0x5b5d79);throw _0x5b5d79;});}return _0x4896ce;})[_0x0af8('0x23')](respondWithResult(_0x9c6757,null))[_0x0af8('0x52')](handleError(_0x9c6757,null));});_0x332a34['start']();}catch(_0x5e6313){_0x9c6757['status'](0x1f4)[_0x0af8('0x5f')](_0x5e6313);}};exports[_0x0af8('0x22')]=function(_0xc8a9f2,_0x1f719a,_0xd982e2){return db[_0x0af8('0x2c')][_0x0af8('0x79')]({'where':{'id':_0xc8a9f2[_0x0af8('0x47')]['id']}})['then'](handleEntityNotFound(_0x1f719a,null))[_0x0af8('0x23')](saveUpdates(_[_0x0af8('0x3e')](_0xc8a9f2[_0x0af8('0x70')],[_0x0af8('0x29'),_0x0af8('0x7a')]),null))[_0x0af8('0x23')](respondWithResult(_0x1f719a,null))['catch'](handleError(_0x1f719a,null));};exports[_0x0af8('0x7b')]=function(_0x500bd8,_0x4b8fa8,_0xe569ef){return db[_0x0af8('0x2c')][_0x0af8('0x79')]({'where':{'id':_0x500bd8[_0x0af8('0x47')]['id']}})[_0x0af8('0x23')](function(_0x2e103a){if(_0x2e103a){return _0x2e103a[_0x0af8('0x24')]();}})['then'](function(_0x2ea76a){var _0x566d33=path[_0x0af8('0x4b')](config['root'],_0x0af8('0x7c'),util[_0x0af8('0x4f')](_0x0af8('0x50'),_0x2ea76a[_0x0af8('0x51')],_0x2ea76a[_0x0af8('0x7d')]));var _0x5330cd=path[_0x0af8('0x4b')](config[_0x0af8('0x4c')],_0x0af8('0x4d'),util[_0x0af8('0x4f')]('%s.%s',_0x2ea76a[_0x0af8('0x51')],_0x2ea76a[_0x0af8('0x49')]));fs[_0x0af8('0x5e')](_0x566d33);fs[_0x0af8('0x5e')](_0x5330cd);return _0x2ea76a;})[_0x0af8('0x23')](function(_0x32f742){if(_0x32f742){return _0x4b8fa8['status'](0xcc)[_0x0af8('0x1a')]();}})[_0x0af8('0x23')](handleEntityNotFound(_0x4b8fa8,null))[_0x0af8('0x52')](handleError(_0x4b8fa8,null));};
\ No newline at end of file
index 8f36c6e..44880f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf0e=['tools_sounds','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','define'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0xcf0e,0x135));var _0xecf0=function(_0x59162a,_0x10e547){_0x59162a=_0x59162a-0x0;var _0x35e50d=_0xcf0e[_0x59162a];return _0x35e50d;};'use strict';var _=require(_0xecf0('0x0'));var util=require(_0xecf0('0x1'));var logger=require(_0xecf0('0x2'))(_0xecf0('0x3'));var moment=require(_0xecf0('0x4'));var BPromise=require('bluebird');var rp=require(_0xecf0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xecf0('0x6'));var config=require(_0xecf0('0x7'));var attributes=require('./sound.attributes');module[_0xecf0('0x8')]=function(_0x19f2d7,_0x1a402b){return _0x19f2d7[_0xecf0('0x9')]('Sound',attributes,{'tableName':_0xecf0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x02f5=['rimraf','../../config/environment','./sound.attributes','exports','define','tools_sounds','lodash','../../config/logger','api','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x02f5,0x10e));var _0x502f=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0x02f5[_0x5f309e];return _0x487b5e;};'use strict';var _=require(_0x502f('0x0'));var util=require('util');var logger=require(_0x502f('0x1'))(_0x502f('0x2'));var moment=require('moment');var BPromise=require(_0x502f('0x3'));var rp=require(_0x502f('0x4'));var fs=require('fs');var path=require(_0x502f('0x5'));var rimraf=require(_0x502f('0x6'));var config=require(_0x502f('0x7'));var attributes=require(_0x502f('0x8'));module[_0x502f('0x9')]=function(_0x1b8a21,_0x113587){return _0x1b8a21[_0x502f('0xa')]('Sound',attributes,{'tableName':_0x502f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9dfacb1..d8bc0da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ca9=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','ShowSound','find','options','raw','attributes','include','model','map','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x15fa77,_0x93eaff){var _0x1385ff=function(_0x165e02){while(--_0x165e02){_0x15fa77['push'](_0x15fa77['shift']());}};_0x1385ff(++_0x93eaff);}(_0x6ca9,0x16e));var _0x96ca=function(_0x522305,_0x2bfc10){_0x522305=_0x522305-0x0;var _0x3d629d=_0x6ca9[_0x522305];return _0x3d629d;};'use strict';var _=require(_0x96ca('0x0'));var util=require(_0x96ca('0x1'));var moment=require('moment');var BPromise=require(_0x96ca('0x2'));var rs=require(_0x96ca('0x3'));var fs=require('fs');var Redis=require(_0x96ca('0x4'));var db=require(_0x96ca('0x5'))['db'];var utils=require(_0x96ca('0x6'));var logger=require('../../config/logger')(_0x96ca('0x7'));var config=require(_0x96ca('0x8'));var jayson=require(_0x96ca('0x9'));var client=jayson[_0x96ca('0xa')][_0x96ca('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x8a43f1,_0x45ac9b,_0x159aca){return new BPromise(function(_0x4e54dc,_0x3310aa){return client[_0x96ca('0xc')](_0x8a43f1,_0x159aca)[_0x96ca('0xd')](function(_0x380ec1){logger[_0x96ca('0xe')](_0x96ca('0xf'),_0x45ac9b,_0x96ca('0x10'));logger[_0x96ca('0x11')]('Sound,\x20%s,\x20%s,\x20%s',_0x45ac9b,_0x96ca('0x10'),JSON[_0x96ca('0x12')](_0x380ec1));if(_0x380ec1['error']){if(_0x380ec1[_0x96ca('0x13')][_0x96ca('0x14')]===0x1f4){logger['error'](_0x96ca('0xf'),_0x45ac9b,_0x380ec1['error']['message']);return _0x3310aa(_0x380ec1[_0x96ca('0x13')]['message']);}logger[_0x96ca('0x13')](_0x96ca('0xf'),_0x45ac9b,_0x380ec1[_0x96ca('0x13')][_0x96ca('0x15')]);return _0x4e54dc(_0x380ec1['error'][_0x96ca('0x15')]);}else{logger[_0x96ca('0xe')](_0x96ca('0xf'),_0x45ac9b,_0x96ca('0x10'));_0x4e54dc(_0x380ec1['result'][_0x96ca('0x15')]);}})[_0x96ca('0x16')](function(_0x32fdee){logger[_0x96ca('0x13')]('Sound,\x20%s,\x20%s',_0x45ac9b,_0x32fdee);_0x3310aa(_0x32fdee);});});}exports[_0x96ca('0x17')]=function(_0x2093d6){var _0x1acf45=this;return new Promise(function(_0x54b963,_0x219069){return db['Sound'][_0x96ca('0x18')]({'raw':_0x2093d6['options']?_0x2093d6[_0x96ca('0x19')][_0x96ca('0x1a')]===undefined?!![]:![]:!![],'where':_0x2093d6['options']?_0x2093d6['options']['where']||null:null,'attributes':_0x2093d6[_0x96ca('0x19')]?_0x2093d6[_0x96ca('0x19')][_0x96ca('0x1b')]||null:null,'include':_0x2093d6['options']?_0x2093d6['options'][_0x96ca('0x1c')]?_['map'](_0x2093d6[_0x96ca('0x19')]['include'],function(_0x5461cb){return{'model':db[_0x5461cb[_0x96ca('0x1d')]],'as':_0x5461cb['as'],'attributes':_0x5461cb['attributes'],'include':_0x5461cb[_0x96ca('0x1c')]?_[_0x96ca('0x1e')](_0x5461cb['include'],function(_0x28e52d){return{'model':db[_0x28e52d[_0x96ca('0x1d')]],'as':_0x28e52d['as'],'attributes':_0x28e52d[_0x96ca('0x1b')],'include':_0x28e52d['include']?_[_0x96ca('0x1e')](_0x28e52d[_0x96ca('0x1c')],function(_0x2a1837){return{'model':db[_0x2a1837[_0x96ca('0x1d')]],'as':_0x2a1837['as'],'attributes':_0x2a1837[_0x96ca('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x135f6f){logger[_0x96ca('0xe')](_0x96ca('0x17'),_0x2093d6);logger[_0x96ca('0x11')](_0x96ca('0x17'),_0x2093d6,JSON[_0x96ca('0x12')](_0x135f6f));_0x54b963(_0x135f6f);})[_0x96ca('0x16')](function(_0x1baac2){logger[_0x96ca('0x13')](_0x96ca('0x17'),_0x1baac2['message'],_0x2093d6);_0x219069(_0x1acf45[_0x96ca('0x13')](0x1f4,_0x1baac2['message']));});});};
\ No newline at end of file
+var _0xf5b2=['client','request','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSound','Sound','find','options','where','attributes','include','map','model','then','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xf5b2,0xb6));var _0x2f5b=function(_0x2d9535,_0x4bc592){_0x2d9535=_0x2d9535-0x0;var _0xb4e710=_0xf5b2[_0x2d9535];return _0xb4e710;};'use strict';var _=require('lodash');var util=require(_0x2f5b('0x0'));var moment=require(_0x2f5b('0x1'));var BPromise=require(_0x2f5b('0x2'));var rs=require(_0x2f5b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2f5b('0x4'))['db'];var utils=require(_0x2f5b('0x5'));var logger=require(_0x2f5b('0x6'))(_0x2f5b('0x7'));var config=require(_0x2f5b('0x8'));var jayson=require(_0x2f5b('0x9'));var client=jayson[_0x2f5b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x515508,_0x425c53,_0x29aca2){return new BPromise(function(_0xf2fa7,_0x59225e){return client[_0x2f5b('0xb')](_0x515508,_0x29aca2)['then'](function(_0x45fb7f){logger[_0x2f5b('0xc')](_0x2f5b('0xd'),_0x425c53,_0x2f5b('0xe'));logger[_0x2f5b('0xf')](_0x2f5b('0x10'),_0x425c53,_0x2f5b('0xe'),JSON[_0x2f5b('0x11')](_0x45fb7f));if(_0x45fb7f['error']){if(_0x45fb7f['error']['code']===0x1f4){logger[_0x2f5b('0x12')](_0x2f5b('0xd'),_0x425c53,_0x45fb7f[_0x2f5b('0x12')][_0x2f5b('0x13')]);return _0x59225e(_0x45fb7f['error'][_0x2f5b('0x13')]);}logger[_0x2f5b('0x12')](_0x2f5b('0xd'),_0x425c53,_0x45fb7f['error'][_0x2f5b('0x13')]);return _0xf2fa7(_0x45fb7f[_0x2f5b('0x12')]['message']);}else{logger['info'](_0x2f5b('0xd'),_0x425c53,_0x2f5b('0xe'));_0xf2fa7(_0x45fb7f[_0x2f5b('0x14')][_0x2f5b('0x13')]);}})[_0x2f5b('0x15')](function(_0xed86e1){logger[_0x2f5b('0x12')](_0x2f5b('0xd'),_0x425c53,_0xed86e1);_0x59225e(_0xed86e1);});});}exports[_0x2f5b('0x16')]=function(_0x39db3b){var _0x51e228=this;return new Promise(function(_0x2c3d55,_0x15d497){return db[_0x2f5b('0x17')][_0x2f5b('0x18')]({'raw':_0x39db3b[_0x2f5b('0x19')]?_0x39db3b[_0x2f5b('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x39db3b[_0x2f5b('0x19')]?_0x39db3b['options'][_0x2f5b('0x1a')]||null:null,'attributes':_0x39db3b[_0x2f5b('0x19')]?_0x39db3b[_0x2f5b('0x19')][_0x2f5b('0x1b')]||null:null,'include':_0x39db3b[_0x2f5b('0x19')]?_0x39db3b[_0x2f5b('0x19')][_0x2f5b('0x1c')]?_[_0x2f5b('0x1d')](_0x39db3b[_0x2f5b('0x19')][_0x2f5b('0x1c')],function(_0x4b99a1){return{'model':db[_0x4b99a1['model']],'as':_0x4b99a1['as'],'attributes':_0x4b99a1[_0x2f5b('0x1b')],'include':_0x4b99a1['include']?_[_0x2f5b('0x1d')](_0x4b99a1[_0x2f5b('0x1c')],function(_0x2cf385){return{'model':db[_0x2cf385[_0x2f5b('0x1e')]],'as':_0x2cf385['as'],'attributes':_0x2cf385['attributes'],'include':_0x2cf385[_0x2f5b('0x1c')]?_[_0x2f5b('0x1d')](_0x2cf385[_0x2f5b('0x1c')],function(_0x293a74){return{'model':db[_0x293a74['model']],'as':_0x293a74['as'],'attributes':_0x293a74[_0x2f5b('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2f5b('0x1f')](function(_0x3d71ce){logger[_0x2f5b('0xc')]('ShowSound',_0x39db3b);logger[_0x2f5b('0xf')](_0x2f5b('0x16'),_0x39db3b,JSON[_0x2f5b('0x11')](_0x3d71ce));_0x2c3d55(_0x3d71ce);})[_0x2f5b('0x15')](function(_0x3bffa5){logger[_0x2f5b('0x12')](_0x2f5b('0x16'),_0x3bffa5['message'],_0x39db3b);_0x15d497(_0x51e228[_0x2f5b('0x12')](0x1f4,_0x3bffa5[_0x2f5b('0x13')]));});});};
\ No newline at end of file
index aa87119..ab89c7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['destroy','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','index','isAuthenticated','show','post','create','/:id','update','delete'];(function(_0x26faf4,_0x14f2a6){var _0x1c76ee=function(_0x3172fd){while(--_0x3172fd){_0x26faf4['push'](_0x26faf4['shift']());}};_0x1c76ee(++_0x14f2a6);}(_0x757a,0xde));var _0xa757=function(_0xf23cc5,_0x46626d){_0xf23cc5=_0xf23cc5-0x0;var _0xfb15ce=_0x757a[_0xf23cc5];return _0xfb15ce;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0xb')]('/',auth[_0xa757('0x9')](),controller[_0xa757('0xc')]);router['put'](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);router[_0xa757('0xf')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xb10b=['./squareMessage.controller','get','index','isAuthenticated','show','post','create','put','/:id','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3f7277,_0x42a19f){var _0x88352e=function(_0x385214){while(--_0x385214){_0x3f7277['push'](_0x3f7277['shift']());}};_0x88352e(++_0x42a19f);}(_0xb10b,0x12a));var _0xbb10=function(_0xc471d2,_0x26ab16){_0xc471d2=_0xc471d2-0x0;var _0x334c68=_0xb10b[_0xc471d2];return _0x334c68;};'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 5f3bbde..106e7c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeab=['out','STRING','TEXT','medium','ENUM'];(function(_0x30033a,_0x5ce4a6){var _0x5e3518=function(_0x11494a){while(--_0x11494a){_0x30033a['push'](_0x30033a['shift']());}};_0x5e3518(++_0x5ce4a6);}(_0xaeab,0x6f));var _0xbaea=function(_0x1d63b0,_0x5ad091){_0x1d63b0=_0x1d63b0-0x0;var _0x2571c9=_0xaeab[_0x1d63b0];return _0x2571c9;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xbaea('0x0')]},'body':{'type':Sequelize[_0xbaea('0x1')](_0xbaea('0x2')),'allowNull':![]},'direction':{'type':Sequelize[_0xbaea('0x3')]('in',_0xbaea('0x4')),'defaultValue':_0xbaea('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0xbaea('0x0')]},'providerResponse':{'type':Sequelize[_0xbaea('0x1')]}};
\ No newline at end of file
+var _0xb6d7=['STRING','TEXT','ENUM','out','sequelize','exports'];(function(_0x195b7e,_0xdfc658){var _0x55faf2=function(_0x19ba44){while(--_0x19ba44){_0x195b7e['push'](_0x195b7e['shift']());}};_0x55faf2(++_0xdfc658);}(_0xb6d7,0x13c));var _0x7b6d=function(_0x1467d5,_0x49db48){_0x1467d5=_0x1467d5-0x0;var _0x41c380=_0xb6d7[_0x1467d5];return _0x41c380;};'use strict';var Sequelize=require(_0x7b6d('0x0'));module[_0x7b6d('0x1')]={'uniqueid':{'type':Sequelize[_0x7b6d('0x2')]},'body':{'type':Sequelize[_0x7b6d('0x3')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x7b6d('0x4')]('in',_0x7b6d('0x5')),'defaultValue':_0x7b6d('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x7b6d('0x2')]},'providerResponse':{'type':Sequelize[_0x7b6d('0x3')]}};
\ No newline at end of file
index 4c27c0b..02d65c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07b8=['SquareMessage','include','findAll','rows','show','params','filters','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','sendStatus','error','stack','name','index','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options'];(function(_0x1dd097,_0x195a6c){var _0x4733ab=function(_0x3af0ed){while(--_0x3af0ed){_0x1dd097['push'](_0x1dd097['shift']());}};_0x4733ab(++_0x195a6c);}(_0x07b8,0x1d4));var _0x807b=function(_0x4b43c0,_0x3a8091){_0x4b43c0=_0x4b43c0-0x0;var _0x574c13=_0x07b8[_0x4b43c0];return _0x574c13;};'use strict';var emlformat=require(_0x807b('0x0'));var rimraf=require(_0x807b('0x1'));var zipdir=require(_0x807b('0x2'));var jsonpatch=require(_0x807b('0x3'));var rp=require(_0x807b('0x4'));var moment=require(_0x807b('0x5'));var BPromise=require(_0x807b('0x6'));var Mustache=require(_0x807b('0x7'));var util=require('util');var path=require(_0x807b('0x8'));var sox=require(_0x807b('0x9'));var csv=require(_0x807b('0xa'));var ejs=require(_0x807b('0xb'));var fs=require('fs');var fs_extra=require(_0x807b('0xc'));var _=require('lodash');var squel=require(_0x807b('0xd'));var crypto=require(_0x807b('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x807b('0xf'));var toCsv=require(_0x807b('0xa'));var querystring=require(_0x807b('0x10'));var Papa=require(_0x807b('0x11'));var Redis=require('ioredis');var authService=require(_0x807b('0x12'));var qs=require(_0x807b('0x13'));var as=require(_0x807b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x807b('0x15'))(_0x807b('0x16'));var utils=require(_0x807b('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x807b('0x18'))['db'];function respondWithStatusCode(_0x595a17,_0x40297f){_0x40297f=_0x40297f||0xcc;return function(_0x19af0c){if(_0x19af0c){return _0x595a17['sendStatus'](_0x40297f);}return _0x595a17[_0x807b('0x19')](_0x40297f)[_0x807b('0x1a')]();};}function respondWithResult(_0x33ddde,_0x51c3a4){_0x51c3a4=_0x51c3a4||0xc8;return function(_0x3d7e6f){if(_0x3d7e6f){return _0x33ddde['status'](_0x51c3a4)[_0x807b('0x1b')](_0x3d7e6f);}};}function respondWithFilteredResult(_0x49d7e5,_0x3beff7){return function(_0x51f38b){if(_0x51f38b){var _0x4fb3ce=typeof _0x3beff7[_0x807b('0x1c')]===_0x807b('0x1d')&&typeof _0x3beff7[_0x807b('0x1e')]==='undefined';var _0x2925d1=_0x51f38b[_0x807b('0x1f')];var _0x18785d=_0x4fb3ce?0x0:_0x3beff7['offset'];var _0x12fd34=_0x4fb3ce?_0x51f38b[_0x807b('0x1f')]:_0x3beff7[_0x807b('0x1c')]+_0x3beff7[_0x807b('0x1e')];var _0x5f19de;if(_0x12fd34>=_0x2925d1){_0x12fd34=_0x2925d1;_0x5f19de=0xc8;}else{_0x5f19de=0xce;}_0x49d7e5[_0x807b('0x19')](_0x5f19de);return _0x49d7e5[_0x807b('0x20')]('Content-Range',_0x18785d+'-'+_0x12fd34+'/'+_0x2925d1)['json'](_0x51f38b);}return null;};}function patchUpdates(_0x3f6f06){return function(_0x4e514a){try{jsonpatch[_0x807b('0x21')](_0x4e514a,_0x3f6f06,!![]);}catch(_0x2410aa){return BPromise[_0x807b('0x22')](_0x2410aa);}return _0x4e514a[_0x807b('0x23')]();};}function saveUpdates(_0x29bbad,_0x317e4a){return function(_0x2f3914){if(_0x2f3914){return _0x2f3914['update'](_0x29bbad)['then'](function(_0x526127){return _0x526127;});}return null;};}function removeEntity(_0x50313e,_0x31d651){return function(_0x92e2e5){if(_0x92e2e5){return _0x92e2e5[_0x807b('0x24')]()[_0x807b('0x25')](function(){_0x50313e[_0x807b('0x19')](0xcc)[_0x807b('0x1a')]();});}};}function handleEntityNotFound(_0x205aab,_0x5c001f){return function(_0x332e85){if(!_0x332e85){_0x205aab[_0x807b('0x26')](0x194);}return _0x332e85;};}function handleError(_0x430ae0,_0x32dee3){_0x32dee3=_0x32dee3||0x1f4;return function(_0x54f694){logger[_0x807b('0x27')](_0x54f694[_0x807b('0x28')]);if(_0x54f694['name']){delete _0x54f694[_0x807b('0x29')];}_0x430ae0[_0x807b('0x19')](_0x32dee3)['send'](_0x54f694);};}exports[_0x807b('0x2a')]=function(_0x46279e,_0x38fe6e){var _0x53b0f0={},_0x312e67={},_0x3a3718={'count':0x0,'rows':[]};var _0x2661fc=_['map'](db['SquareMessage'][_0x807b('0x2b')],function(_0x5e5603){return{'name':_0x5e5603[_0x807b('0x2c')],'type':_0x5e5603[_0x807b('0x2d')][_0x807b('0x2e')]};});_0x312e67['model']=_[_0x807b('0x2f')](_0x2661fc,'name');_0x312e67[_0x807b('0x30')]=_[_0x807b('0x31')](_0x46279e[_0x807b('0x30')]);_0x312e67['filters']=_[_0x807b('0x32')](_0x312e67[_0x807b('0x33')],_0x312e67[_0x807b('0x30')]);_0x53b0f0[_0x807b('0x34')]=_['intersection'](_0x312e67[_0x807b('0x33')],qs[_0x807b('0x35')](_0x46279e[_0x807b('0x30')][_0x807b('0x35')]));_0x53b0f0[_0x807b('0x34')]=_0x53b0f0[_0x807b('0x34')][_0x807b('0x36')]?_0x53b0f0['attributes']:_0x312e67[_0x807b('0x33')];if(!_0x46279e[_0x807b('0x30')][_0x807b('0x37')](_0x807b('0x38'))){_0x53b0f0['limit']=qs[_0x807b('0x1e')](_0x46279e[_0x807b('0x30')][_0x807b('0x1e')]);_0x53b0f0[_0x807b('0x1c')]=qs[_0x807b('0x1c')](_0x46279e[_0x807b('0x30')][_0x807b('0x1c')]);}_0x53b0f0[_0x807b('0x39')]=qs[_0x807b('0x3a')](_0x46279e[_0x807b('0x30')][_0x807b('0x3a')]);_0x53b0f0[_0x807b('0x3b')]=qs['filters'](_[_0x807b('0x3c')](_0x46279e[_0x807b('0x30')],_0x312e67['filters']),_0x2661fc);if(_0x46279e[_0x807b('0x30')][_0x807b('0x3d')]){_0x53b0f0[_0x807b('0x3b')]=_[_0x807b('0x3e')](_0x53b0f0[_0x807b('0x3b')],{'$or':_[_0x807b('0x2f')](_0x2661fc,function(_0xfeb70d){if(_0xfeb70d['type']!=='VIRTUAL'){var _0x33ac1e={};_0x33ac1e[_0xfeb70d[_0x807b('0x29')]]={'$like':'%'+_0x46279e[_0x807b('0x30')]['filter']+'%'};return _0x33ac1e;}})});}_0x53b0f0=_['merge']({},_0x53b0f0,_0x46279e[_0x807b('0x3f')]);var _0xf4b3a3={'where':_0x53b0f0[_0x807b('0x3b')]};return db[_0x807b('0x40')]['count'](_0xf4b3a3)[_0x807b('0x25')](function(_0x495c7a){_0x3a3718[_0x807b('0x1f')]=_0x495c7a;if(_0x46279e['query']['includeAll']){_0x53b0f0[_0x807b('0x41')]=[{'all':!![]}];}return db[_0x807b('0x40')][_0x807b('0x42')](_0x53b0f0);})[_0x807b('0x25')](function(_0x1f459d){_0x3a3718[_0x807b('0x43')]=_0x1f459d;return _0x3a3718;})[_0x807b('0x25')](respondWithFilteredResult(_0x38fe6e,_0x53b0f0))['catch'](handleError(_0x38fe6e,null));};exports[_0x807b('0x44')]=function(_0x1605b9,_0x13326a){var _0x1ba976={'raw':!![],'where':{'id':_0x1605b9[_0x807b('0x45')]['id']}},_0x41397e={};_0x41397e[_0x807b('0x33')]=_[_0x807b('0x31')](db[_0x807b('0x40')][_0x807b('0x2b')]);_0x41397e[_0x807b('0x30')]=_[_0x807b('0x31')](_0x1605b9[_0x807b('0x30')]);_0x41397e[_0x807b('0x46')]=_['intersection'](_0x41397e[_0x807b('0x33')],_0x41397e[_0x807b('0x30')]);_0x1ba976['attributes']=_[_0x807b('0x32')](_0x41397e['model'],qs[_0x807b('0x35')](_0x1605b9[_0x807b('0x30')][_0x807b('0x35')]));_0x1ba976['attributes']=_0x1ba976[_0x807b('0x34')][_0x807b('0x36')]?_0x1ba976['attributes']:_0x41397e[_0x807b('0x33')];if(_0x1605b9[_0x807b('0x30')][_0x807b('0x47')]){_0x1ba976[_0x807b('0x41')]=[{'all':!![]}];}_0x1ba976=_[_0x807b('0x3e')]({},_0x1ba976,_0x1605b9[_0x807b('0x3f')]);return db[_0x807b('0x40')][_0x807b('0x48')](_0x1ba976)['then'](handleEntityNotFound(_0x13326a,null))[_0x807b('0x25')](respondWithResult(_0x13326a,null))[_0x807b('0x49')](handleError(_0x13326a,null));};exports[_0x807b('0x4a')]=function(_0x304a9e,_0x1af68e){return db['SquareMessage'][_0x807b('0x4a')](_0x304a9e[_0x807b('0x4b')],{})['then'](respondWithResult(_0x1af68e,0xc9))[_0x807b('0x49')](handleError(_0x1af68e,null));};exports['update']=function(_0x36cdd2,_0x16c5c8){if(_0x36cdd2['body']['id']){delete _0x36cdd2[_0x807b('0x4b')]['id'];}return db['SquareMessage']['find']({'where':{'id':_0x36cdd2['params']['id']}})[_0x807b('0x25')](handleEntityNotFound(_0x16c5c8,null))['then'](saveUpdates(_0x36cdd2['body'],null))[_0x807b('0x25')](respondWithResult(_0x16c5c8,null))[_0x807b('0x49')](handleError(_0x16c5c8,null));};exports[_0x807b('0x24')]=function(_0x172bc6,_0x479d7f){return db[_0x807b('0x40')]['find']({'where':{'id':_0x172bc6[_0x807b('0x45')]['id']}})[_0x807b('0x25')](handleEntityNotFound(_0x479d7f,null))[_0x807b('0x25')](removeEntity(_0x479d7f,null))[_0x807b('0x49')](handleError(_0x479d7f,null));};
\ No newline at end of file
+var _0xdc7b=['send','index','map','SquareMessage','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','then','destroy','stack','name'];(function(_0x5a99db,_0x1cece5){var _0x3aad62=function(_0x334cb7){while(--_0x334cb7){_0x5a99db['push'](_0x5a99db['shift']());}};_0x3aad62(++_0x1cece5);}(_0xdc7b,0x153));var _0xbdc7=function(_0x5977f5,_0x2a679a){_0x5977f5=_0x5977f5-0x0;var _0x64a481=_0xdc7b[_0x5977f5];return _0x64a481;};'use strict';var emlformat=require(_0xbdc7('0x0'));var rimraf=require(_0xbdc7('0x1'));var zipdir=require(_0xbdc7('0x2'));var jsonpatch=require(_0xbdc7('0x3'));var rp=require(_0xbdc7('0x4'));var moment=require(_0xbdc7('0x5'));var BPromise=require(_0xbdc7('0x6'));var Mustache=require('mustache');var util=require(_0xbdc7('0x7'));var path=require(_0xbdc7('0x8'));var sox=require(_0xbdc7('0x9'));var csv=require('to-csv');var ejs=require(_0xbdc7('0xa'));var fs=require('fs');var fs_extra=require(_0xbdc7('0xb'));var _=require(_0xbdc7('0xc'));var squel=require(_0xbdc7('0xd'));var crypto=require(_0xbdc7('0xe'));var jsforce=require(_0xbdc7('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xbdc7('0x10'));var querystring=require(_0xbdc7('0x11'));var Papa=require(_0xbdc7('0x12'));var Redis=require(_0xbdc7('0x13'));var authService=require(_0xbdc7('0x14'));var qs=require(_0xbdc7('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbdc7('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0xbdc7('0x17'));var config=require(_0xbdc7('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xbdc7('0x19'))['db'];function respondWithStatusCode(_0x564745,_0x35c48b){_0x35c48b=_0x35c48b||0xcc;return function(_0x375900){if(_0x375900){return _0x564745[_0xbdc7('0x1a')](_0x35c48b);}return _0x564745[_0xbdc7('0x1b')](_0x35c48b)[_0xbdc7('0x1c')]();};}function respondWithResult(_0x18daec,_0x589967){_0x589967=_0x589967||0xc8;return function(_0x3045f3){if(_0x3045f3){return _0x18daec[_0xbdc7('0x1b')](_0x589967)[_0xbdc7('0x1d')](_0x3045f3);}};}function respondWithFilteredResult(_0x267145,_0x440282){return function(_0x35630a){if(_0x35630a){var _0x286a38=typeof _0x440282['offset']===_0xbdc7('0x1e')&&typeof _0x440282[_0xbdc7('0x1f')]===_0xbdc7('0x1e');var _0x4a1e1c=_0x35630a[_0xbdc7('0x20')];var _0x5677f9=_0x286a38?0x0:_0x440282[_0xbdc7('0x21')];var _0x5aa1bd=_0x286a38?_0x35630a['count']:_0x440282[_0xbdc7('0x21')]+_0x440282[_0xbdc7('0x1f')];var _0x55cfcc;if(_0x5aa1bd>=_0x4a1e1c){_0x5aa1bd=_0x4a1e1c;_0x55cfcc=0xc8;}else{_0x55cfcc=0xce;}_0x267145[_0xbdc7('0x1b')](_0x55cfcc);return _0x267145[_0xbdc7('0x22')]('Content-Range',_0x5677f9+'-'+_0x5aa1bd+'/'+_0x4a1e1c)['json'](_0x35630a);}return null;};}function patchUpdates(_0x56b9cc){return function(_0x554d54){try{jsonpatch['apply'](_0x554d54,_0x56b9cc,!![]);}catch(_0x322d28){return BPromise[_0xbdc7('0x23')](_0x322d28);}return _0x554d54[_0xbdc7('0x24')]();};}function saveUpdates(_0x4af89e,_0x5d6d2e){return function(_0x46640f){if(_0x46640f){return _0x46640f['update'](_0x4af89e)[_0xbdc7('0x25')](function(_0xa8d731){return _0xa8d731;});}return null;};}function removeEntity(_0x49d8e8,_0x224c4e){return function(_0x38d068){if(_0x38d068){return _0x38d068[_0xbdc7('0x26')]()[_0xbdc7('0x25')](function(){_0x49d8e8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x44f825,_0x23f7af){return function(_0x13edaa){if(!_0x13edaa){_0x44f825[_0xbdc7('0x1a')](0x194);}return _0x13edaa;};}function handleError(_0x3105a1,_0x19d3cf){_0x19d3cf=_0x19d3cf||0x1f4;return function(_0x31046b){logger['error'](_0x31046b[_0xbdc7('0x27')]);if(_0x31046b[_0xbdc7('0x28')]){delete _0x31046b['name'];}_0x3105a1[_0xbdc7('0x1b')](_0x19d3cf)[_0xbdc7('0x29')](_0x31046b);};}exports[_0xbdc7('0x2a')]=function(_0x2435fc,_0xad09d8){var _0x313b3d={},_0x4704ed={},_0x33e745={'count':0x0,'rows':[]};var _0x279bda=_[_0xbdc7('0x2b')](db[_0xbdc7('0x2c')][_0xbdc7('0x2d')],function(_0x52e8b2){return{'name':_0x52e8b2['fieldName'],'type':_0x52e8b2['type'][_0xbdc7('0x2e')]};});_0x4704ed[_0xbdc7('0x2f')]=_[_0xbdc7('0x2b')](_0x279bda,'name');_0x4704ed[_0xbdc7('0x30')]=_['keys'](_0x2435fc[_0xbdc7('0x30')]);_0x4704ed[_0xbdc7('0x31')]=_[_0xbdc7('0x32')](_0x4704ed['model'],_0x4704ed[_0xbdc7('0x30')]);_0x313b3d[_0xbdc7('0x33')]=_[_0xbdc7('0x32')](_0x4704ed[_0xbdc7('0x2f')],qs['fields'](_0x2435fc[_0xbdc7('0x30')][_0xbdc7('0x34')]));_0x313b3d[_0xbdc7('0x33')]=_0x313b3d[_0xbdc7('0x33')][_0xbdc7('0x35')]?_0x313b3d[_0xbdc7('0x33')]:_0x4704ed[_0xbdc7('0x2f')];if(!_0x2435fc[_0xbdc7('0x30')][_0xbdc7('0x36')](_0xbdc7('0x37'))){_0x313b3d[_0xbdc7('0x1f')]=qs[_0xbdc7('0x1f')](_0x2435fc[_0xbdc7('0x30')]['limit']);_0x313b3d['offset']=qs[_0xbdc7('0x21')](_0x2435fc[_0xbdc7('0x30')]['offset']);}_0x313b3d[_0xbdc7('0x38')]=qs[_0xbdc7('0x39')](_0x2435fc['query'][_0xbdc7('0x39')]);_0x313b3d[_0xbdc7('0x3a')]=qs[_0xbdc7('0x31')](_[_0xbdc7('0x3b')](_0x2435fc[_0xbdc7('0x30')],_0x4704ed['filters']),_0x279bda);if(_0x2435fc[_0xbdc7('0x30')][_0xbdc7('0x3c')]){_0x313b3d[_0xbdc7('0x3a')]=_[_0xbdc7('0x3d')](_0x313b3d[_0xbdc7('0x3a')],{'$or':_[_0xbdc7('0x2b')](_0x279bda,function(_0x5346ed){if(_0x5346ed[_0xbdc7('0x3e')]!==_0xbdc7('0x3f')){var _0x4a8d82={};_0x4a8d82[_0x5346ed[_0xbdc7('0x28')]]={'$like':'%'+_0x2435fc[_0xbdc7('0x30')][_0xbdc7('0x3c')]+'%'};return _0x4a8d82;}})});}_0x313b3d=_[_0xbdc7('0x3d')]({},_0x313b3d,_0x2435fc[_0xbdc7('0x40')]);var _0x5f1e39={'where':_0x313b3d[_0xbdc7('0x3a')]};return db[_0xbdc7('0x2c')][_0xbdc7('0x20')](_0x5f1e39)[_0xbdc7('0x25')](function(_0x5a427b){_0x33e745[_0xbdc7('0x20')]=_0x5a427b;if(_0x2435fc[_0xbdc7('0x30')][_0xbdc7('0x41')]){_0x313b3d[_0xbdc7('0x42')]=[{'all':!![]}];}return db[_0xbdc7('0x2c')][_0xbdc7('0x43')](_0x313b3d);})[_0xbdc7('0x25')](function(_0x3b401a){_0x33e745[_0xbdc7('0x44')]=_0x3b401a;return _0x33e745;})[_0xbdc7('0x25')](respondWithFilteredResult(_0xad09d8,_0x313b3d))[_0xbdc7('0x45')](handleError(_0xad09d8,null));};exports[_0xbdc7('0x46')]=function(_0x10616e,_0x4d424e){var _0xc0c8b9={'raw':!![],'where':{'id':_0x10616e[_0xbdc7('0x47')]['id']}},_0xfc6a6f={};_0xfc6a6f['model']=_[_0xbdc7('0x48')](db[_0xbdc7('0x2c')][_0xbdc7('0x2d')]);_0xfc6a6f['query']=_[_0xbdc7('0x48')](_0x10616e[_0xbdc7('0x30')]);_0xfc6a6f['filters']=_['intersection'](_0xfc6a6f[_0xbdc7('0x2f')],_0xfc6a6f['query']);_0xc0c8b9[_0xbdc7('0x33')]=_[_0xbdc7('0x32')](_0xfc6a6f[_0xbdc7('0x2f')],qs[_0xbdc7('0x34')](_0x10616e[_0xbdc7('0x30')]['fields']));_0xc0c8b9[_0xbdc7('0x33')]=_0xc0c8b9[_0xbdc7('0x33')][_0xbdc7('0x35')]?_0xc0c8b9[_0xbdc7('0x33')]:_0xfc6a6f[_0xbdc7('0x2f')];if(_0x10616e['query']['includeAll']){_0xc0c8b9[_0xbdc7('0x42')]=[{'all':!![]}];}_0xc0c8b9=_[_0xbdc7('0x3d')]({},_0xc0c8b9,_0x10616e['options']);return db['SquareMessage'][_0xbdc7('0x49')](_0xc0c8b9)[_0xbdc7('0x25')](handleEntityNotFound(_0x4d424e,null))[_0xbdc7('0x25')](respondWithResult(_0x4d424e,null))[_0xbdc7('0x45')](handleError(_0x4d424e,null));};exports[_0xbdc7('0x4a')]=function(_0x53234d,_0x169ae7){return db[_0xbdc7('0x2c')][_0xbdc7('0x4a')](_0x53234d[_0xbdc7('0x4b')],{})['then'](respondWithResult(_0x169ae7,0xc9))['catch'](handleError(_0x169ae7,null));};exports['update']=function(_0x32e8ce,_0x1966ca){if(_0x32e8ce[_0xbdc7('0x4b')]['id']){delete _0x32e8ce[_0xbdc7('0x4b')]['id'];}return db[_0xbdc7('0x2c')][_0xbdc7('0x49')]({'where':{'id':_0x32e8ce[_0xbdc7('0x47')]['id']}})[_0xbdc7('0x25')](handleEntityNotFound(_0x1966ca,null))[_0xbdc7('0x25')](saveUpdates(_0x32e8ce[_0xbdc7('0x4b')],null))[_0xbdc7('0x25')](respondWithResult(_0x1966ca,null))[_0xbdc7('0x45')](handleError(_0x1966ca,null));};exports[_0xbdc7('0x26')]=function(_0x37fe46,_0xa4c9f8){return db[_0xbdc7('0x2c')][_0xbdc7('0x49')]({'where':{'id':_0x37fe46['params']['id']}})[_0xbdc7('0x25')](handleEntityNotFound(_0xa4c9f8,null))['then'](removeEntity(_0xa4c9f8,null))['catch'](handleError(_0xa4c9f8,null));};
\ No newline at end of file
index 16ddc89..0b52a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd31=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','SquareMessage','square_messages'];(function(_0x10a2ea,_0x487cf2){var _0x347b66=function(_0x592edb){while(--_0x592edb){_0x10a2ea['push'](_0x10a2ea['shift']());}};_0x347b66(++_0x487cf2);}(_0xbd31,0x1c3));var _0x1bd3=function(_0x1a784a,_0xd12539){_0x1a784a=_0x1a784a-0x0;var _0x309d0c=_0xbd31[_0x1a784a];return _0x309d0c;};'use strict';var _=require(_0x1bd3('0x0'));var util=require(_0x1bd3('0x1'));var logger=require('../../config/logger')(_0x1bd3('0x2'));var moment=require(_0x1bd3('0x3'));var BPromise=require(_0x1bd3('0x4'));var rp=require(_0x1bd3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1bd3('0x6'));var config=require(_0x1bd3('0x7'));var attributes=require('./squareMessage.attributes');module[_0x1bd3('0x8')]=function(_0x4d2e1b,_0x49501b){return _0x4d2e1b['define'](_0x1bd3('0x9'),attributes,{'tableName':_0x1bd3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa3fe=['api','moment','path','../../config/environment','define','SquareMessage','square_messages','lodash','../../config/logger'];(function(_0x648163,_0x241576){var _0x199d4d=function(_0x23055d){while(--_0x23055d){_0x648163['push'](_0x648163['shift']());}};_0x199d4d(++_0x241576);}(_0xa3fe,0x178));var _0xea3f=function(_0x2b0852,_0x4f1b29){_0x2b0852=_0x2b0852-0x0;var _0x3a1053=_0xa3fe[_0x2b0852];return _0x3a1053;};'use strict';var _=require(_0xea3f('0x0'));var util=require('util');var logger=require(_0xea3f('0x1'))(_0xea3f('0x2'));var moment=require(_0xea3f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xea3f('0x4'));var rimraf=require('rimraf');var config=require(_0xea3f('0x5'));var attributes=require('./squareMessage.attributes');module['exports']=function(_0x939131,_0x527d86){return _0x939131[_0xea3f('0x6')](_0xea3f('0x7'),attributes,{'tableName':_0xea3f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1f478be..8e6dbeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x152a=['CreateSquareMessage','SquareMessage','create','options','raw','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','result','catch'];(function(_0x47c1f4,_0x4847a5){var _0x3e17b3=function(_0x437145){while(--_0x437145){_0x47c1f4['push'](_0x47c1f4['shift']());}};_0x3e17b3(++_0x4847a5);}(_0x152a,0x127));var _0xa152=function(_0x2dbcef,_0x1cfecb){_0x2dbcef=_0x2dbcef-0x0;var _0x5a90ea=_0x152a[_0x2dbcef];return _0x5a90ea;};'use strict';var _=require(_0xa152('0x0'));var util=require(_0xa152('0x1'));var moment=require(_0xa152('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa152('0x3'));var db=require(_0xa152('0x4'))['db'];var utils=require(_0xa152('0x5'));var logger=require(_0xa152('0x6'))(_0xa152('0x7'));var config=require(_0xa152('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa152('0x9')][_0xa152('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5285fb,_0x1f2bec,_0x47bffc){return new BPromise(function(_0x16cc6c,_0x4bb5b8){return client[_0xa152('0xb')](_0x5285fb,_0x47bffc)[_0xa152('0xc')](function(_0x542d7b){logger[_0xa152('0xd')]('SquareMessage,\x20%s,\x20%s',_0x1f2bec,_0xa152('0xe'));logger[_0xa152('0xf')](_0xa152('0x10'),_0x1f2bec,_0xa152('0xe'),JSON[_0xa152('0x11')](_0x542d7b));if(_0x542d7b['error']){if(_0x542d7b[_0xa152('0x12')][_0xa152('0x13')]===0x1f4){logger[_0xa152('0x12')](_0xa152('0x14'),_0x1f2bec,_0x542d7b[_0xa152('0x12')]['message']);return _0x4bb5b8(_0x542d7b['error'][_0xa152('0x15')]);}logger[_0xa152('0x12')](_0xa152('0x14'),_0x1f2bec,_0x542d7b[_0xa152('0x12')][_0xa152('0x15')]);return _0x16cc6c(_0x542d7b['error'][_0xa152('0x15')]);}else{logger['info'](_0xa152('0x14'),_0x1f2bec,_0xa152('0xe'));_0x16cc6c(_0x542d7b[_0xa152('0x16')][_0xa152('0x15')]);}})[_0xa152('0x17')](function(_0x23bacf){logger[_0xa152('0x12')](_0xa152('0x14'),_0x1f2bec,_0x23bacf);_0x4bb5b8(_0x23bacf);});});}exports[_0xa152('0x18')]=function(_0x136475){var _0x2ab689=this;return new Promise(function(_0x1ae93f,_0x383cbf){return db[_0xa152('0x19')][_0xa152('0x1a')](_0x136475['body'],{'raw':_0x136475[_0xa152('0x1b')]?_0x136475['options'][_0xa152('0x1c')]===undefined?!![]:![]:!![]})[_0xa152('0xc')](function(_0xf803f1){logger[_0xa152('0xd')](_0xa152('0x18'),_0x136475);logger[_0xa152('0xf')](_0xa152('0x18'),_0x136475,JSON[_0xa152('0x11')](_0xf803f1));_0x1ae93f(_0xf803f1);})[_0xa152('0x17')](function(_0x38ccdf){logger[_0xa152('0x12')](_0xa152('0x18'),_0x38ccdf['message'],_0x136475);_0x383cbf(_0x2ab689[_0xa152('0x12')](0x1f4,_0x38ccdf[_0xa152('0x15')]));});});};
\ No newline at end of file
+var _0x26c7=['error','code','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x242b06,_0x485af6){var _0x15e8e6=function(_0x19f2a3){while(--_0x19f2a3){_0x242b06['push'](_0x242b06['shift']());}};_0x15e8e6(++_0x485af6);}(_0x26c7,0x19e));var _0x726c=function(_0x4d8f6f,_0x559720){_0x4d8f6f=_0x4d8f6f-0x0;var _0x441c71=_0x26c7[_0x4d8f6f];return _0x441c71;};'use strict';var _=require(_0x726c('0x0'));var util=require(_0x726c('0x1'));var moment=require(_0x726c('0x2'));var BPromise=require(_0x726c('0x3'));var rs=require(_0x726c('0x4'));var fs=require('fs');var Redis=require(_0x726c('0x5'));var db=require(_0x726c('0x6'))['db'];var utils=require(_0x726c('0x7'));var logger=require('../../config/logger')(_0x726c('0x8'));var config=require('../../config/environment');var jayson=require(_0x726c('0x9'));var client=jayson[_0x726c('0xa')][_0x726c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x223edc,_0x367aa4,_0x92a405){return new BPromise(function(_0x17a3d6,_0xa576f3){return client[_0x726c('0xc')](_0x223edc,_0x92a405)[_0x726c('0xd')](function(_0x211add){logger[_0x726c('0xe')](_0x726c('0xf'),_0x367aa4,_0x726c('0x10'));logger[_0x726c('0x11')](_0x726c('0x12'),_0x367aa4,_0x726c('0x10'),JSON[_0x726c('0x13')](_0x211add));if(_0x211add[_0x726c('0x14')]){if(_0x211add['error'][_0x726c('0x15')]===0x1f4){logger[_0x726c('0x14')](_0x726c('0xf'),_0x367aa4,_0x211add['error'][_0x726c('0x16')]);return _0xa576f3(_0x211add['error'][_0x726c('0x16')]);}logger['error']('SquareMessage,\x20%s,\x20%s',_0x367aa4,_0x211add[_0x726c('0x14')][_0x726c('0x16')]);return _0x17a3d6(_0x211add[_0x726c('0x14')]['message']);}else{logger[_0x726c('0xe')](_0x726c('0xf'),_0x367aa4,_0x726c('0x10'));_0x17a3d6(_0x211add[_0x726c('0x17')]['message']);}})[_0x726c('0x18')](function(_0x1ee0bd){logger[_0x726c('0x14')](_0x726c('0xf'),_0x367aa4,_0x1ee0bd);_0xa576f3(_0x1ee0bd);});});}exports[_0x726c('0x19')]=function(_0x3598e5){var _0x3c4873=this;return new Promise(function(_0x1525c4,_0x3df92c){return db[_0x726c('0x1a')][_0x726c('0x1b')](_0x3598e5[_0x726c('0x1c')],{'raw':_0x3598e5[_0x726c('0x1d')]?_0x3598e5[_0x726c('0x1d')][_0x726c('0x1e')]===undefined?!![]:![]:!![]})[_0x726c('0xd')](function(_0xb89f95){logger[_0x726c('0xe')]('CreateSquareMessage',_0x3598e5);logger['debug']('CreateSquareMessage',_0x3598e5,JSON[_0x726c('0x13')](_0xb89f95));_0x1525c4(_0xb89f95);})[_0x726c('0x18')](function(_0x31c04b){logger[_0x726c('0x14')](_0x726c('0x19'),_0x31c04b[_0x726c('0x16')],_0x3598e5);_0x3df92c(_0x3c4873['error'](0x1f4,_0x31c04b[_0x726c('0x16')]));});});};
\ No newline at end of file
index 1a31ad7..f2e342e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a62=['util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id/test','test','post','put','/:id','update','delete','exports'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0x4a62,0x1e6));var _0x24a6=function(_0x43828e,_0x4718f6){_0x43828e=_0x43828e-0x0;var _0x3c305f=_0x4a62[_0x43828e];return _0x3c305f;};'use strict';var multer=require('multer');var util=require(_0x24a6('0x0'));var path=require(_0x24a6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x24a6('0x2')]();var fs_extra=require(_0x24a6('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x24a6('0x4'));var config=require(_0x24a6('0x5'));var controller=require(_0x24a6('0x6'));router[_0x24a6('0x7')]('/',auth[_0x24a6('0x8')](),controller[_0x24a6('0x9')]);router[_0x24a6('0x7')]('/:id',auth[_0x24a6('0x8')](),controller['show']);router['get'](_0x24a6('0xa'),auth[_0x24a6('0x8')](),timeout('15s'),controller[_0x24a6('0xb')]);router[_0x24a6('0xc')]('/',auth[_0x24a6('0x8')](),controller['create']);router[_0x24a6('0xd')](_0x24a6('0xe'),auth[_0x24a6('0x8')](),controller[_0x24a6('0xf')]);router[_0x24a6('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x24a6('0x11')]=router;
\ No newline at end of file
+var _0x7d38=['./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','test','post','create','put','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x27edda,_0x7a4ac7){var _0x150167=function(_0x450b34){while(--_0x450b34){_0x27edda['push'](_0x27edda['shift']());}};_0x150167(++_0x7a4ac7);}(_0x7d38,0x149));var _0x87d3=function(_0x2f24f8,_0x113897){_0x2f24f8=_0x2f24f8-0x0;var _0x16c80f=_0x7d38[_0x2f24f8];return _0x16c80f;};'use strict';var multer=require(_0x87d3('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x87d3('0x1'));var express=require(_0x87d3('0x2'));var router=express[_0x87d3('0x3')]();var fs_extra=require(_0x87d3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x87d3('0x5'));var config=require(_0x87d3('0x6'));var controller=require(_0x87d3('0x7'));router[_0x87d3('0x8')]('/',auth[_0x87d3('0x9')](),controller[_0x87d3('0xa')]);router[_0x87d3('0x8')](_0x87d3('0xb'),auth['isAuthenticated'](),controller[_0x87d3('0xc')]);router[_0x87d3('0x8')](_0x87d3('0xd'),auth[_0x87d3('0x9')](),timeout('15s'),controller[_0x87d3('0xe')]);router[_0x87d3('0xf')]('/',auth[_0x87d3('0x9')](),controller[_0x87d3('0x10')]);router[_0x87d3('0x11')](_0x87d3('0xb'),auth[_0x87d3('0x9')](),controller['update']);router[_0x87d3('0x12')](_0x87d3('0xb'),auth[_0x87d3('0x9')](),controller[_0x87d3('0x13')]);module[_0x87d3('0x14')]=router;
\ No newline at end of file
index 94f11ff..ca92b40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc87c=['exports','STRING','name','sequelize'];(function(_0x54fb58,_0x340d60){var _0x223268=function(_0x269dd4){while(--_0x269dd4){_0x54fb58['push'](_0x54fb58['shift']());}};_0x223268(++_0x340d60);}(_0xc87c,0x7f));var _0xcc87=function(_0x44af25,_0x1dd2ea){_0x44af25=_0x44af25-0x0;var _0x430042=_0xc87c[_0x44af25];return _0x430042;};'use strict';var Sequelize=require(_0xcc87('0x0'));module[_0xcc87('0x1')]={'name':{'type':Sequelize[_0xcc87('0x2')],'unique':_0xcc87('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xcc87('0x2')]}};
\ No newline at end of file
+var _0xb050=['STRING','name','exports'];(function(_0x586c45,_0x58bd40){var _0xd6b7b0=function(_0x42585b){while(--_0x42585b){_0x586c45['push'](_0x586c45['shift']());}};_0xd6b7b0(++_0x58bd40);}(_0xb050,0x11f));var _0x0b05=function(_0x4d808a,_0x9de04b){_0x4d808a=_0x4d808a-0x0;var _0x4dfa69=_0xb050[_0x4d808a];return _0x4dfa69;};'use strict';var Sequelize=require('sequelize');module[_0x0b05('0x0')]={'name':{'type':Sequelize[_0x0b05('0x1')],'unique':_0x0b05('0x2'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0b05('0x1')]}};
\ No newline at end of file
index 3413608..aac8520 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af6=['mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','then','destroy','ODBC','UserProfileResource','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','SquareOdbc','include','findAll','catch','show','fields','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','error','update','params','test','dsn','odbc','openSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x2300f2,_0x315c5f){var _0x6bd508=function(_0x2fa0f6){while(--_0x2fa0f6){_0x2300f2['push'](_0x2300f2['shift']());}};_0x6bd508(++_0x315c5f);}(_0x7af6,0xf9));var _0x67af=function(_0x343aa1,_0x443588){_0x343aa1=_0x343aa1-0x0;var _0x145484=_0x7af6[_0x343aa1];return _0x145484;};'use strict';var emlformat=require(_0x67af('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x67af('0x1'));var jsonpatch=require(_0x67af('0x2'));var rp=require(_0x67af('0x3'));var moment=require(_0x67af('0x4'));var BPromise=require(_0x67af('0x5'));var Mustache=require(_0x67af('0x6'));var util=require(_0x67af('0x7'));var path=require('path');var sox=require(_0x67af('0x8'));var csv=require(_0x67af('0x9'));var ejs=require(_0x67af('0xa'));var fs=require('fs');var fs_extra=require(_0x67af('0xb'));var _=require(_0x67af('0xc'));var squel=require(_0x67af('0xd'));var crypto=require(_0x67af('0xe'));var jsforce=require(_0x67af('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x67af('0x10'));var Papa=require(_0x67af('0x11'));var Redis=require(_0x67af('0x12'));var authService=require(_0x67af('0x13'));var qs=require(_0x67af('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x67af('0x15'))(_0x67af('0x16'));var utils=require(_0x67af('0x17'));var config=require(_0x67af('0x18'));var licenseUtil=require(_0x67af('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23bc81,_0x4817ad){_0x4817ad=_0x4817ad||0xcc;return function(_0x37c117){if(_0x37c117){return _0x23bc81[_0x67af('0x1a')](_0x4817ad);}return _0x23bc81['status'](_0x4817ad)[_0x67af('0x1b')]();};}function respondWithResult(_0x526187,_0x25b11f){_0x25b11f=_0x25b11f||0xc8;return function(_0x169e21){if(_0x169e21){return _0x526187[_0x67af('0x1c')](_0x25b11f)['json'](_0x169e21);}};}function respondWithFilteredResult(_0x1656b8,_0x5acafa){return function(_0x48ed2d){if(_0x48ed2d){var _0x340c2c=typeof _0x5acafa[_0x67af('0x1d')]===_0x67af('0x1e')&&typeof _0x5acafa[_0x67af('0x1f')]===_0x67af('0x1e');var _0xad81d1=_0x48ed2d['count'];var _0x202e6c=_0x340c2c?0x0:_0x5acafa[_0x67af('0x1d')];var _0xcab04=_0x340c2c?_0x48ed2d[_0x67af('0x20')]:_0x5acafa['offset']+_0x5acafa[_0x67af('0x1f')];var _0x225ded;if(_0xcab04>=_0xad81d1){_0xcab04=_0xad81d1;_0x225ded=0xc8;}else{_0x225ded=0xce;}_0x1656b8['status'](_0x225ded);return _0x1656b8[_0x67af('0x21')](_0x67af('0x22'),_0x202e6c+'-'+_0xcab04+'/'+_0xad81d1)[_0x67af('0x23')](_0x48ed2d);}return null;};}function patchUpdates(_0x3b4f08){return function(_0x4afaf3){try{jsonpatch[_0x67af('0x24')](_0x4afaf3,_0x3b4f08,!![]);}catch(_0x1561d8){return BPromise['reject'](_0x1561d8);}return _0x4afaf3[_0x67af('0x25')]();};}function saveUpdates(_0xcd0876,_0x3fdd5e){return function(_0x261150){if(_0x261150){return _0x261150['update'](_0xcd0876)[_0x67af('0x26')](function(_0x5c2aa4){return _0x5c2aa4;});}return null;};}function removeEntity(_0x29e547,_0x49a657){return function(_0x2c0b5f){if(_0x2c0b5f){return _0x2c0b5f[_0x67af('0x27')]()[_0x67af('0x26')](function(){var _0x55de0d=_0x2c0b5f['get']({'plain':!![]});var _0x137506=_0x67af('0x28');return db[_0x67af('0x29')][_0x67af('0x27')]({'where':{'type':_0x137506,'resourceId':_0x55de0d['id']}})[_0x67af('0x26')](function(){return _0x2c0b5f;});})['then'](function(){_0x29e547['status'](0xcc)[_0x67af('0x1b')]();});}};}function handleEntityNotFound(_0x287cbc,_0x536827){return function(_0x518479){if(!_0x518479){_0x287cbc['sendStatus'](0x194);}return _0x518479;};}function handleError(_0x189d74,_0x173841){_0x173841=_0x173841||0x1f4;return function(_0x36cc8b){logger['error'](_0x36cc8b[_0x67af('0x2a')]);if(_0x36cc8b[_0x67af('0x2b')]){delete _0x36cc8b[_0x67af('0x2b')];}_0x189d74['status'](_0x173841)['send'](_0x36cc8b);};}exports[_0x67af('0x2c')]=function(_0x369167,_0x25bac1){var _0x299c52={},_0x3bc84e={},_0x525510={'count':0x0,'rows':[]};var _0x30d684=_[_0x67af('0x2d')](db['SquareOdbc'][_0x67af('0x2e')],function(_0x4be2cf){return{'name':_0x4be2cf[_0x67af('0x2f')],'type':_0x4be2cf[_0x67af('0x30')]['key']};});_0x3bc84e[_0x67af('0x31')]=_[_0x67af('0x2d')](_0x30d684,_0x67af('0x2b'));_0x3bc84e[_0x67af('0x32')]=_[_0x67af('0x33')](_0x369167[_0x67af('0x32')]);_0x3bc84e['filters']=_[_0x67af('0x34')](_0x3bc84e[_0x67af('0x31')],_0x3bc84e['query']);_0x299c52[_0x67af('0x35')]=_['intersection'](_0x3bc84e[_0x67af('0x31')],qs['fields'](_0x369167[_0x67af('0x32')]['fields']));_0x299c52[_0x67af('0x35')]=_0x299c52['attributes']['length']?_0x299c52[_0x67af('0x35')]:_0x3bc84e[_0x67af('0x31')];if(!_0x369167[_0x67af('0x32')]['hasOwnProperty']('nolimit')){_0x299c52[_0x67af('0x1f')]=qs[_0x67af('0x1f')](_0x369167[_0x67af('0x32')][_0x67af('0x1f')]);_0x299c52['offset']=qs['offset'](_0x369167[_0x67af('0x32')][_0x67af('0x1d')]);}_0x299c52[_0x67af('0x36')]=qs['sort'](_0x369167['query'][_0x67af('0x37')]);_0x299c52[_0x67af('0x38')]=qs[_0x67af('0x39')](_[_0x67af('0x3a')](_0x369167[_0x67af('0x32')],_0x3bc84e['filters']),_0x30d684);if(_0x369167['query'][_0x67af('0x3b')]){_0x299c52['where']=_[_0x67af('0x3c')](_0x299c52[_0x67af('0x38')],{'$or':_[_0x67af('0x2d')](_0x30d684,function(_0x15a8bc){if(_0x15a8bc[_0x67af('0x30')]!==_0x67af('0x3d')){var _0x32b137={};_0x32b137[_0x15a8bc['name']]={'$like':'%'+_0x369167[_0x67af('0x32')]['filter']+'%'};return _0x32b137;}})});}_0x299c52=_[_0x67af('0x3c')]({},_0x299c52,_0x369167[_0x67af('0x3e')]);var _0x115ce2={'where':_0x299c52[_0x67af('0x38')]};return db[_0x67af('0x3f')][_0x67af('0x20')](_0x115ce2)['then'](function(_0x5469b7){_0x525510[_0x67af('0x20')]=_0x5469b7;if(_0x369167[_0x67af('0x32')]['includeAll']){_0x299c52[_0x67af('0x40')]=[{'all':!![]}];}return db[_0x67af('0x3f')][_0x67af('0x41')](_0x299c52);})['then'](function(_0x5d4042){_0x525510['rows']=_0x5d4042;return _0x525510;})[_0x67af('0x26')](respondWithFilteredResult(_0x25bac1,_0x299c52))[_0x67af('0x42')](handleError(_0x25bac1,null));};exports[_0x67af('0x43')]=function(_0x3c4e42,_0x381300){var _0x22ea27={'raw':!![],'where':{'id':_0x3c4e42['params']['id']}},_0x5d276a={};_0x5d276a['model']=_[_0x67af('0x33')](db[_0x67af('0x3f')][_0x67af('0x2e')]);_0x5d276a['query']=_['keys'](_0x3c4e42[_0x67af('0x32')]);_0x5d276a[_0x67af('0x39')]=_[_0x67af('0x34')](_0x5d276a['model'],_0x5d276a[_0x67af('0x32')]);_0x22ea27['attributes']=_[_0x67af('0x34')](_0x5d276a[_0x67af('0x31')],qs[_0x67af('0x44')](_0x3c4e42[_0x67af('0x32')][_0x67af('0x44')]));_0x22ea27[_0x67af('0x35')]=_0x22ea27['attributes']['length']?_0x22ea27[_0x67af('0x35')]:_0x5d276a['model'];if(_0x3c4e42[_0x67af('0x32')][_0x67af('0x45')]){_0x22ea27[_0x67af('0x40')]=[{'all':!![]}];}_0x22ea27=_['merge']({},_0x22ea27,_0x3c4e42[_0x67af('0x3e')]);return db[_0x67af('0x3f')][_0x67af('0x46')](_0x22ea27)[_0x67af('0x26')](handleEntityNotFound(_0x381300,null))['then'](respondWithResult(_0x381300,null))[_0x67af('0x42')](handleError(_0x381300,null));};exports[_0x67af('0x47')]=function(_0x3c76b5,_0x26f59d){return db[_0x67af('0x3f')][_0x67af('0x47')](_0x3c76b5[_0x67af('0x48')],{})[_0x67af('0x26')](function(_0x1aeb6f){var _0x3c1e24=_0x3c76b5[_0x67af('0x49')]['get']({'plain':!![]});if(!_0x3c1e24)throw new Error(_0x67af('0x4a'));if(_0x3c1e24[_0x67af('0x4b')]===_0x67af('0x49')){var _0x38f655=_0x1aeb6f[_0x67af('0x4c')]({'plain':!![]});var _0x21b715=_0x67af('0x28');return db[_0x67af('0x4d')][_0x67af('0x46')]({'where':{'name':_0x21b715,'userProfileId':_0x3c1e24['userProfileId']},'raw':!![]})['then'](function(_0x324545){if(_0x324545&&_0x324545['autoAssociation']===0x0){return db[_0x67af('0x29')][_0x67af('0x47')]({'name':_0x38f655[_0x67af('0x2b')],'resourceId':_0x38f655['id'],'type':_0x324545['name'],'sectionId':_0x324545['id']},{})[_0x67af('0x26')](function(){return _0x1aeb6f;});}else{return _0x1aeb6f;}})[_0x67af('0x42')](function(_0x5d413e){logger[_0x67af('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d413e);throw _0x5d413e;});}return _0x1aeb6f;})[_0x67af('0x26')](respondWithResult(_0x26f59d,0xc9))['catch'](handleError(_0x26f59d,null));};exports[_0x67af('0x4f')]=function(_0x5172fc,_0x5b1a51){if(_0x5172fc[_0x67af('0x48')]['id']){delete _0x5172fc['body']['id'];}return db[_0x67af('0x3f')]['find']({'where':{'id':_0x5172fc[_0x67af('0x50')]['id']}})[_0x67af('0x26')](handleEntityNotFound(_0x5b1a51,null))[_0x67af('0x26')](saveUpdates(_0x5172fc[_0x67af('0x48')],null))[_0x67af('0x26')](respondWithResult(_0x5b1a51,null))[_0x67af('0x42')](handleError(_0x5b1a51,null));};exports[_0x67af('0x27')]=function(_0x2a65a1,_0x4b5f6b){return db[_0x67af('0x3f')]['find']({'where':{'id':_0x2a65a1[_0x67af('0x50')]['id']}})[_0x67af('0x26')](handleEntityNotFound(_0x4b5f6b,null))[_0x67af('0x26')](removeEntity(_0x4b5f6b,null))[_0x67af('0x42')](handleError(_0x4b5f6b,null));};exports[_0x67af('0x51')]=function(_0x465655,_0x1e51c7,_0x1675d1){var _0x3ccccc;return db[_0x67af('0x3f')]['find']({'where':{'id':_0x465655['params']['id']},'attributes':['id',_0x67af('0x52')]})[_0x67af('0x26')](handleEntityNotFound(_0x1e51c7,null))[_0x67af('0x26')](function(_0x1eaada){if(_0x1eaada){var _0x11a7c7=require(_0x67af('0x53'))();_0x11a7c7[_0x67af('0x54')](_0x1eaada[_0x67af('0x52')]);_0x11a7c7['closeSync']();return _0x1eaada;}})['then'](respondWithResult(_0x1e51c7,null))['catch'](handleError(_0x1e51c7,null));};
\ No newline at end of file
+var _0xe8b4=['json','offset','undefined','limit','count','set','reject','save','update','then','get','ODBC','UserProfileResource','error','stack','name','send','SquareOdbc','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','destroy','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x4c7d10,_0x7450e4){var _0x4e0fae=function(_0x30caca){while(--_0x30caca){_0x4c7d10['push'](_0x4c7d10['shift']());}};_0x4e0fae(++_0x7450e4);}(_0xe8b4,0x143));var _0x4e8b=function(_0x60f3ac,_0x3da780){_0x60f3ac=_0x60f3ac-0x0;var _0x3a3ced=_0xe8b4[_0x60f3ac];return _0x3a3ced;};'use strict';var emlformat=require(_0x4e8b('0x0'));var rimraf=require(_0x4e8b('0x1'));var zipdir=require(_0x4e8b('0x2'));var jsonpatch=require(_0x4e8b('0x3'));var rp=require(_0x4e8b('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4e8b('0x5'));var util=require(_0x4e8b('0x6'));var path=require(_0x4e8b('0x7'));var sox=require(_0x4e8b('0x8'));var csv=require(_0x4e8b('0x9'));var ejs=require(_0x4e8b('0xa'));var fs=require('fs');var fs_extra=require(_0x4e8b('0xb'));var _=require(_0x4e8b('0xc'));var squel=require(_0x4e8b('0xd'));var crypto=require(_0x4e8b('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x4e8b('0xf'));var toCsv=require(_0x4e8b('0x9'));var querystring=require(_0x4e8b('0x10'));var Papa=require('papaparse');var Redis=require(_0x4e8b('0x11'));var authService=require(_0x4e8b('0x12'));var qs=require(_0x4e8b('0x13'));var as=require(_0x4e8b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4e8b('0x15'))(_0x4e8b('0x16'));var utils=require(_0x4e8b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4e8b('0x18'));var db=require(_0x4e8b('0x19'))['db'];function respondWithStatusCode(_0x1b5ca1,_0x493ddc){_0x493ddc=_0x493ddc||0xcc;return function(_0x2d9fc3){if(_0x2d9fc3){return _0x1b5ca1[_0x4e8b('0x1a')](_0x493ddc);}return _0x1b5ca1[_0x4e8b('0x1b')](_0x493ddc)[_0x4e8b('0x1c')]();};}function respondWithResult(_0x3b74d4,_0x53bf3f){_0x53bf3f=_0x53bf3f||0xc8;return function(_0x5b4d22){if(_0x5b4d22){return _0x3b74d4['status'](_0x53bf3f)[_0x4e8b('0x1d')](_0x5b4d22);}};}function respondWithFilteredResult(_0x3ed2b9,_0x55bb6c){return function(_0x468a3c){if(_0x468a3c){var _0x486f2a=typeof _0x55bb6c[_0x4e8b('0x1e')]===_0x4e8b('0x1f')&&typeof _0x55bb6c[_0x4e8b('0x20')]===_0x4e8b('0x1f');var _0x23af4a=_0x468a3c[_0x4e8b('0x21')];var _0x24848a=_0x486f2a?0x0:_0x55bb6c['offset'];var _0x45336d=_0x486f2a?_0x468a3c[_0x4e8b('0x21')]:_0x55bb6c[_0x4e8b('0x1e')]+_0x55bb6c['limit'];var _0x55afc3;if(_0x45336d>=_0x23af4a){_0x45336d=_0x23af4a;_0x55afc3=0xc8;}else{_0x55afc3=0xce;}_0x3ed2b9['status'](_0x55afc3);return _0x3ed2b9[_0x4e8b('0x22')]('Content-Range',_0x24848a+'-'+_0x45336d+'/'+_0x23af4a)[_0x4e8b('0x1d')](_0x468a3c);}return null;};}function patchUpdates(_0x1ebf29){return function(_0x441029){try{jsonpatch['apply'](_0x441029,_0x1ebf29,!![]);}catch(_0x225214){return BPromise[_0x4e8b('0x23')](_0x225214);}return _0x441029[_0x4e8b('0x24')]();};}function saveUpdates(_0x1bb809,_0x3e7b5f){return function(_0x275dbb){if(_0x275dbb){return _0x275dbb[_0x4e8b('0x25')](_0x1bb809)[_0x4e8b('0x26')](function(_0x2ef5fd){return _0x2ef5fd;});}return null;};}function removeEntity(_0x3f4c43,_0x550351){return function(_0x300c42){if(_0x300c42){return _0x300c42['destroy']()[_0x4e8b('0x26')](function(){var _0x7cbd31=_0x300c42[_0x4e8b('0x27')]({'plain':!![]});var _0x253c31=_0x4e8b('0x28');return db[_0x4e8b('0x29')]['destroy']({'where':{'type':_0x253c31,'resourceId':_0x7cbd31['id']}})[_0x4e8b('0x26')](function(){return _0x300c42;});})['then'](function(){_0x3f4c43['status'](0xcc)[_0x4e8b('0x1c')]();});}};}function handleEntityNotFound(_0x173ba7,_0x5b305f){return function(_0x234834){if(!_0x234834){_0x173ba7[_0x4e8b('0x1a')](0x194);}return _0x234834;};}function handleError(_0x514a45,_0x279e84){_0x279e84=_0x279e84||0x1f4;return function(_0x5e3a1d){logger[_0x4e8b('0x2a')](_0x5e3a1d[_0x4e8b('0x2b')]);if(_0x5e3a1d[_0x4e8b('0x2c')]){delete _0x5e3a1d[_0x4e8b('0x2c')];}_0x514a45[_0x4e8b('0x1b')](_0x279e84)[_0x4e8b('0x2d')](_0x5e3a1d);};}exports['index']=function(_0x2fef96,_0xc28aa6){var _0x2066f1={},_0x5d6422={},_0x1c0395={'count':0x0,'rows':[]};var _0x578f12=_['map'](db[_0x4e8b('0x2e')][_0x4e8b('0x2f')],function(_0x50e609){return{'name':_0x50e609[_0x4e8b('0x30')],'type':_0x50e609[_0x4e8b('0x31')][_0x4e8b('0x32')]};});_0x5d6422[_0x4e8b('0x33')]=_[_0x4e8b('0x34')](_0x578f12,_0x4e8b('0x2c'));_0x5d6422['query']=_[_0x4e8b('0x35')](_0x2fef96['query']);_0x5d6422[_0x4e8b('0x36')]=_[_0x4e8b('0x37')](_0x5d6422[_0x4e8b('0x33')],_0x5d6422[_0x4e8b('0x38')]);_0x2066f1[_0x4e8b('0x39')]=_[_0x4e8b('0x37')](_0x5d6422[_0x4e8b('0x33')],qs[_0x4e8b('0x3a')](_0x2fef96['query']['fields']));_0x2066f1[_0x4e8b('0x39')]=_0x2066f1[_0x4e8b('0x39')][_0x4e8b('0x3b')]?_0x2066f1[_0x4e8b('0x39')]:_0x5d6422[_0x4e8b('0x33')];if(!_0x2fef96[_0x4e8b('0x38')][_0x4e8b('0x3c')](_0x4e8b('0x3d'))){_0x2066f1['limit']=qs['limit'](_0x2fef96['query'][_0x4e8b('0x20')]);_0x2066f1[_0x4e8b('0x1e')]=qs['offset'](_0x2fef96[_0x4e8b('0x38')][_0x4e8b('0x1e')]);}_0x2066f1[_0x4e8b('0x3e')]=qs[_0x4e8b('0x3f')](_0x2fef96['query']['sort']);_0x2066f1[_0x4e8b('0x40')]=qs[_0x4e8b('0x36')](_[_0x4e8b('0x41')](_0x2fef96[_0x4e8b('0x38')],_0x5d6422[_0x4e8b('0x36')]),_0x578f12);if(_0x2fef96['query'][_0x4e8b('0x42')]){_0x2066f1['where']=_['merge'](_0x2066f1[_0x4e8b('0x40')],{'$or':_['map'](_0x578f12,function(_0x2d7c57){if(_0x2d7c57[_0x4e8b('0x31')]!==_0x4e8b('0x43')){var _0x54e765={};_0x54e765[_0x2d7c57[_0x4e8b('0x2c')]]={'$like':'%'+_0x2fef96[_0x4e8b('0x38')][_0x4e8b('0x42')]+'%'};return _0x54e765;}})});}_0x2066f1=_['merge']({},_0x2066f1,_0x2fef96[_0x4e8b('0x44')]);var _0x2d122d={'where':_0x2066f1[_0x4e8b('0x40')]};return db['SquareOdbc'][_0x4e8b('0x21')](_0x2d122d)['then'](function(_0x2d2f38){_0x1c0395[_0x4e8b('0x21')]=_0x2d2f38;if(_0x2fef96[_0x4e8b('0x38')][_0x4e8b('0x45')]){_0x2066f1[_0x4e8b('0x46')]=[{'all':!![]}];}return db[_0x4e8b('0x2e')][_0x4e8b('0x47')](_0x2066f1);})[_0x4e8b('0x26')](function(_0x36ec94){_0x1c0395['rows']=_0x36ec94;return _0x1c0395;})['then'](respondWithFilteredResult(_0xc28aa6,_0x2066f1))[_0x4e8b('0x48')](handleError(_0xc28aa6,null));};exports['show']=function(_0x1af015,_0x17a876){var _0x28d52f={'raw':!![],'where':{'id':_0x1af015[_0x4e8b('0x49')]['id']}},_0xce55ed={};_0xce55ed[_0x4e8b('0x33')]=_['keys'](db['SquareOdbc'][_0x4e8b('0x2f')]);_0xce55ed[_0x4e8b('0x38')]=_[_0x4e8b('0x35')](_0x1af015[_0x4e8b('0x38')]);_0xce55ed[_0x4e8b('0x36')]=_[_0x4e8b('0x37')](_0xce55ed['model'],_0xce55ed[_0x4e8b('0x38')]);_0x28d52f['attributes']=_[_0x4e8b('0x37')](_0xce55ed['model'],qs[_0x4e8b('0x3a')](_0x1af015['query'][_0x4e8b('0x3a')]));_0x28d52f[_0x4e8b('0x39')]=_0x28d52f[_0x4e8b('0x39')][_0x4e8b('0x3b')]?_0x28d52f[_0x4e8b('0x39')]:_0xce55ed[_0x4e8b('0x33')];if(_0x1af015[_0x4e8b('0x38')]['includeAll']){_0x28d52f['include']=[{'all':!![]}];}_0x28d52f=_['merge']({},_0x28d52f,_0x1af015[_0x4e8b('0x44')]);return db[_0x4e8b('0x2e')]['find'](_0x28d52f)[_0x4e8b('0x26')](handleEntityNotFound(_0x17a876,null))['then'](respondWithResult(_0x17a876,null))[_0x4e8b('0x48')](handleError(_0x17a876,null));};exports[_0x4e8b('0x4a')]=function(_0x114ced,_0x52bb91){return db[_0x4e8b('0x2e')]['create'](_0x114ced[_0x4e8b('0x4b')],{})[_0x4e8b('0x26')](function(_0x4872b8){var _0x211ee6=_0x114ced[_0x4e8b('0x4c')][_0x4e8b('0x27')]({'plain':!![]});if(!_0x211ee6)throw new Error(_0x4e8b('0x4d'));if(_0x211ee6[_0x4e8b('0x4e')]==='user'){var _0x2240eb=_0x4872b8['get']({'plain':!![]});var _0x26842f='ODBC';return db[_0x4e8b('0x4f')][_0x4e8b('0x50')]({'where':{'name':_0x26842f,'userProfileId':_0x211ee6['userProfileId']},'raw':!![]})[_0x4e8b('0x26')](function(_0x5c22fa){if(_0x5c22fa&&_0x5c22fa[_0x4e8b('0x51')]===0x0){return db[_0x4e8b('0x29')][_0x4e8b('0x4a')]({'name':_0x2240eb[_0x4e8b('0x2c')],'resourceId':_0x2240eb['id'],'type':_0x5c22fa['name'],'sectionId':_0x5c22fa['id']},{})[_0x4e8b('0x26')](function(){return _0x4872b8;});}else{return _0x4872b8;}})[_0x4e8b('0x48')](function(_0x1cc23b){logger[_0x4e8b('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1cc23b);throw _0x1cc23b;});}return _0x4872b8;})[_0x4e8b('0x26')](respondWithResult(_0x52bb91,0xc9))['catch'](handleError(_0x52bb91,null));};exports[_0x4e8b('0x25')]=function(_0x25a288,_0x432d61){if(_0x25a288[_0x4e8b('0x4b')]['id']){delete _0x25a288['body']['id'];}return db[_0x4e8b('0x2e')]['find']({'where':{'id':_0x25a288[_0x4e8b('0x49')]['id']}})['then'](handleEntityNotFound(_0x432d61,null))[_0x4e8b('0x26')](saveUpdates(_0x25a288[_0x4e8b('0x4b')],null))[_0x4e8b('0x26')](respondWithResult(_0x432d61,null))[_0x4e8b('0x48')](handleError(_0x432d61,null));};exports[_0x4e8b('0x52')]=function(_0x499ae9,_0x4a1b6f){return db[_0x4e8b('0x2e')][_0x4e8b('0x50')]({'where':{'id':_0x499ae9[_0x4e8b('0x49')]['id']}})['then'](handleEntityNotFound(_0x4a1b6f,null))[_0x4e8b('0x26')](removeEntity(_0x4a1b6f,null))[_0x4e8b('0x48')](handleError(_0x4a1b6f,null));};exports[_0x4e8b('0x53')]=function(_0x19d04d,_0x20d3cd,_0x27f47a){var _0x306a5d;return db[_0x4e8b('0x2e')][_0x4e8b('0x50')]({'where':{'id':_0x19d04d[_0x4e8b('0x49')]['id']},'attributes':['id',_0x4e8b('0x54')]})[_0x4e8b('0x26')](handleEntityNotFound(_0x20d3cd,null))[_0x4e8b('0x26')](function(_0x30207a){if(_0x30207a){var _0x1331a1=require(_0x4e8b('0x55'))();_0x1331a1[_0x4e8b('0x56')](_0x30207a[_0x4e8b('0x54')]);_0x1331a1[_0x4e8b('0x57')]();return _0x30207a;}})[_0x4e8b('0x26')](respondWithResult(_0x20d3cd,null))[_0x4e8b('0x48')](handleError(_0x20d3cd,null));};
\ No newline at end of file
index 1e88128..a7321c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0191=['api','bluebird','request-promise','path','../../config/environment','./squareOdbc.attributes','exports','define','square_odbc','lodash','util','../../config/logger'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x0191,0x75));var _0x1019=function(_0x271697,_0x6897d6){_0x271697=_0x271697-0x0;var _0x426093=_0x0191[_0x271697];return _0x426093;};'use strict';var _=require(_0x1019('0x0'));var util=require(_0x1019('0x1'));var logger=require(_0x1019('0x2'))(_0x1019('0x3'));var moment=require('moment');var BPromise=require(_0x1019('0x4'));var rp=require(_0x1019('0x5'));var fs=require('fs');var path=require(_0x1019('0x6'));var rimraf=require('rimraf');var config=require(_0x1019('0x7'));var attributes=require(_0x1019('0x8'));module[_0x1019('0x9')]=function(_0x485d3e,_0x1c4276){return _0x485d3e[_0x1019('0xa')]('SquareOdbc',attributes,{'tableName':_0x1019('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9edd=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','lodash','util','../../config/logger','api'];(function(_0x11f6f4,_0x54819c){var _0x462cbe=function(_0x5708e9){while(--_0x5708e9){_0x11f6f4['push'](_0x11f6f4['shift']());}};_0x462cbe(++_0x54819c);}(_0x9edd,0x6c));var _0xd9ed=function(_0xdb58e5,_0x4cb353){_0xdb58e5=_0xdb58e5-0x0;var _0x89d916=_0x9edd[_0xdb58e5];return _0x89d916;};'use strict';var _=require(_0xd9ed('0x0'));var util=require(_0xd9ed('0x1'));var logger=require(_0xd9ed('0x2'))(_0xd9ed('0x3'));var moment=require(_0xd9ed('0x4'));var BPromise=require(_0xd9ed('0x5'));var rp=require(_0xd9ed('0x6'));var fs=require('fs');var path=require(_0xd9ed('0x7'));var rimraf=require(_0xd9ed('0x8'));var config=require(_0xd9ed('0x9'));var attributes=require(_0xd9ed('0xa'));module[_0xd9ed('0xb')]=function(_0x2ea8a5,_0xde3ea4){return _0x2ea8a5[_0xd9ed('0xc')](_0xd9ed('0xd'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cdebc4d..8cb467c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7192=['rpc','jayson/promise','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','ShowSquareOdbc','options','raw','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x259313,_0x78e5bf){var _0x35ae35=function(_0x5ae329){while(--_0x5ae329){_0x259313['push'](_0x259313['shift']());}};_0x35ae35(++_0x78e5bf);}(_0x7192,0x12e));var _0x2719=function(_0x180f54,_0x2f229a){_0x180f54=_0x180f54-0x0;var _0xdb1b2c=_0x7192[_0x180f54];return _0xdb1b2c;};'use strict';var _=require(_0x2719('0x0'));var util=require(_0x2719('0x1'));var moment=require('moment');var BPromise=require(_0x2719('0x2'));var rs=require(_0x2719('0x3'));var fs=require('fs');var Redis=require(_0x2719('0x4'));var db=require(_0x2719('0x5'))['db'];var utils=require(_0x2719('0x6'));var logger=require(_0x2719('0x7'))(_0x2719('0x8'));var config=require('../../config/environment');var jayson=require(_0x2719('0x9'));var client=jayson[_0x2719('0xa')][_0x2719('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x230d26,_0x4598fd,_0x1cd89a){return new BPromise(function(_0x47acd2,_0x256752){return client[_0x2719('0xc')](_0x230d26,_0x1cd89a)[_0x2719('0xd')](function(_0x3b553c){logger[_0x2719('0xe')](_0x2719('0xf'),_0x4598fd,_0x2719('0x10'));logger[_0x2719('0x11')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x4598fd,_0x2719('0x10'),JSON[_0x2719('0x12')](_0x3b553c));if(_0x3b553c[_0x2719('0x13')]){if(_0x3b553c[_0x2719('0x13')][_0x2719('0x14')]===0x1f4){logger[_0x2719('0x13')](_0x2719('0xf'),_0x4598fd,_0x3b553c['error']['message']);return _0x256752(_0x3b553c[_0x2719('0x13')][_0x2719('0x15')]);}logger[_0x2719('0x13')](_0x2719('0xf'),_0x4598fd,_0x3b553c[_0x2719('0x13')][_0x2719('0x15')]);return _0x47acd2(_0x3b553c[_0x2719('0x13')][_0x2719('0x15')]);}else{logger[_0x2719('0xe')](_0x2719('0xf'),_0x4598fd,_0x2719('0x10'));_0x47acd2(_0x3b553c['result'][_0x2719('0x15')]);}})[_0x2719('0x16')](function(_0x43c123){logger[_0x2719('0x13')]('SquareOdbc,\x20%s,\x20%s',_0x4598fd,_0x43c123);_0x256752(_0x43c123);});});}exports[_0x2719('0x17')]=function(_0x434d44){var _0x3d4727=this;return new Promise(function(_0x106aec,_0x1469a8){return db['SquareOdbc']['find']({'raw':_0x434d44[_0x2719('0x18')]?_0x434d44[_0x2719('0x18')][_0x2719('0x19')]===undefined?!![]:![]:!![],'where':_0x434d44[_0x2719('0x18')]?_0x434d44[_0x2719('0x18')][_0x2719('0x1a')]||null:null,'attributes':_0x434d44[_0x2719('0x18')]?_0x434d44[_0x2719('0x18')][_0x2719('0x1b')]||null:null,'include':_0x434d44[_0x2719('0x18')]?_0x434d44[_0x2719('0x18')][_0x2719('0x1c')]?_[_0x2719('0x1d')](_0x434d44[_0x2719('0x18')]['include'],function(_0x39005c){return{'model':db[_0x39005c[_0x2719('0x1e')]],'as':_0x39005c['as'],'attributes':_0x39005c[_0x2719('0x1b')],'include':_0x39005c['include']?_[_0x2719('0x1d')](_0x39005c['include'],function(_0x154aee){return{'model':db[_0x154aee[_0x2719('0x1e')]],'as':_0x154aee['as'],'attributes':_0x154aee[_0x2719('0x1b')],'include':_0x154aee[_0x2719('0x1c')]?_[_0x2719('0x1d')](_0x154aee[_0x2719('0x1c')],function(_0x318c24){return{'model':db[_0x318c24[_0x2719('0x1e')]],'as':_0x318c24['as'],'attributes':_0x318c24[_0x2719('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2719('0xd')](function(_0x1b955e){logger['info'](_0x2719('0x17'),_0x434d44);logger[_0x2719('0x11')](_0x2719('0x17'),_0x434d44,JSON[_0x2719('0x12')](_0x1b955e));_0x106aec(_0x1b955e);})[_0x2719('0x16')](function(_0x2aac5e){logger['error'](_0x2719('0x17'),_0x2aac5e[_0x2719('0x15')],_0x434d44);_0x1469a8(_0x3d4727[_0x2719('0x13')](0x1f4,_0x2aac5e[_0x2719('0x15')]));});});};
\ No newline at end of file
+var _0x6fff=['ShowSquareOdbc','SquareOdbc','find','options','raw','attributes','include','map','model','lodash','util','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch'];(function(_0xd55444,_0x18220b){var _0x29dc54=function(_0xc5d932){while(--_0xc5d932){_0xd55444['push'](_0xd55444['shift']());}};_0x29dc54(++_0x18220b);}(_0x6fff,0x117));var _0xf6ff=function(_0x558955,_0x267cdc){_0x558955=_0x558955-0x0;var _0x3b82e1=_0x6fff[_0x558955];return _0x3b82e1;};'use strict';var _=require(_0xf6ff('0x0'));var util=require(_0xf6ff('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf6ff('0x2'));var db=require(_0xf6ff('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf6ff('0x4'));var config=require(_0xf6ff('0x5'));var jayson=require(_0xf6ff('0x6'));var client=jayson[_0xf6ff('0x7')][_0xf6ff('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c81c7,_0x3a5c38,_0x2387d1){return new BPromise(function(_0x33454b,_0x1bb3e6){return client[_0xf6ff('0x9')](_0x3c81c7,_0x2387d1)[_0xf6ff('0xa')](function(_0x51c75a){logger['info'](_0xf6ff('0xb'),_0x3a5c38,_0xf6ff('0xc'));logger[_0xf6ff('0xd')](_0xf6ff('0xe'),_0x3a5c38,_0xf6ff('0xc'),JSON[_0xf6ff('0xf')](_0x51c75a));if(_0x51c75a[_0xf6ff('0x10')]){if(_0x51c75a['error'][_0xf6ff('0x11')]===0x1f4){logger[_0xf6ff('0x10')](_0xf6ff('0xb'),_0x3a5c38,_0x51c75a[_0xf6ff('0x10')][_0xf6ff('0x12')]);return _0x1bb3e6(_0x51c75a['error']['message']);}logger['error'](_0xf6ff('0xb'),_0x3a5c38,_0x51c75a[_0xf6ff('0x10')][_0xf6ff('0x12')]);return _0x33454b(_0x51c75a['error']['message']);}else{logger[_0xf6ff('0x13')](_0xf6ff('0xb'),_0x3a5c38,'request\x20sent');_0x33454b(_0x51c75a['result'][_0xf6ff('0x12')]);}})[_0xf6ff('0x14')](function(_0x47b60e){logger[_0xf6ff('0x10')](_0xf6ff('0xb'),_0x3a5c38,_0x47b60e);_0x1bb3e6(_0x47b60e);});});}exports[_0xf6ff('0x15')]=function(_0x279ff4){var _0x38c0a4=this;return new Promise(function(_0x5834cf,_0x3d56ab){return db[_0xf6ff('0x16')][_0xf6ff('0x17')]({'raw':_0x279ff4['options']?_0x279ff4[_0xf6ff('0x18')][_0xf6ff('0x19')]===undefined?!![]:![]:!![],'where':_0x279ff4['options']?_0x279ff4['options']['where']||null:null,'attributes':_0x279ff4[_0xf6ff('0x18')]?_0x279ff4[_0xf6ff('0x18')][_0xf6ff('0x1a')]||null:null,'include':_0x279ff4[_0xf6ff('0x18')]?_0x279ff4[_0xf6ff('0x18')][_0xf6ff('0x1b')]?_[_0xf6ff('0x1c')](_0x279ff4[_0xf6ff('0x18')][_0xf6ff('0x1b')],function(_0x4408d0){return{'model':db[_0x4408d0[_0xf6ff('0x1d')]],'as':_0x4408d0['as'],'attributes':_0x4408d0[_0xf6ff('0x1a')],'include':_0x4408d0[_0xf6ff('0x1b')]?_['map'](_0x4408d0[_0xf6ff('0x1b')],function(_0x3ba349){return{'model':db[_0x3ba349[_0xf6ff('0x1d')]],'as':_0x3ba349['as'],'attributes':_0x3ba349['attributes'],'include':_0x3ba349[_0xf6ff('0x1b')]?_[_0xf6ff('0x1c')](_0x3ba349['include'],function(_0x205050){return{'model':db[_0x205050[_0xf6ff('0x1d')]],'as':_0x205050['as'],'attributes':_0x205050[_0xf6ff('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf6ff('0xa')](function(_0x59dacd){logger[_0xf6ff('0x13')]('ShowSquareOdbc',_0x279ff4);logger[_0xf6ff('0xd')]('ShowSquareOdbc',_0x279ff4,JSON[_0xf6ff('0xf')](_0x59dacd));_0x5834cf(_0x59dacd);})[_0xf6ff('0x14')](function(_0x14e66d){logger[_0xf6ff('0x10')]('ShowSquareOdbc',_0x14e66d[_0xf6ff('0x12')],_0x279ff4);_0x3d56ab(_0x38c0a4['error'](0x1f4,_0x14e66d['message']));});});};
\ No newline at end of file
index 0f0dabb..f75dfde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa376=['../../config/environment','./squareProject.controller','isAuthenticated','get','show','post','create','put','/:id','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x10eb2b,_0x366495){var _0x197724=function(_0x318947){while(--_0x318947){_0x10eb2b['push'](_0x10eb2b['shift']());}};_0x197724(++_0x366495);}(_0xa376,0xa2));var _0x6a37=function(_0x360ef5,_0x468956){_0x360ef5=_0x360ef5-0x0;var _0xb75d61=_0xa376[_0x360ef5];return _0xb75d61;};'use strict';var multer=require(_0x6a37('0x0'));var util=require(_0x6a37('0x1'));var path=require(_0x6a37('0x2'));var timeout=require('connect-timeout');var express=require(_0x6a37('0x3'));var router=express[_0x6a37('0x4')]();var fs_extra=require(_0x6a37('0x5'));var auth=require(_0x6a37('0x6'));var interaction=require(_0x6a37('0x7'));var config=require(_0x6a37('0x8'));var controller=require(_0x6a37('0x9'));router['get']('/',auth[_0x6a37('0xa')](),controller['index']);router[_0x6a37('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x6a37('0xc')]);router[_0x6a37('0xd')]('/',auth[_0x6a37('0xa')](),controller[_0x6a37('0xe')]);router[_0x6a37('0xf')](_0x6a37('0x10'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x6a37('0x10'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xcab1=['express','fs-extra','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0x122e3d,_0x1b218a){var _0x5f15de=function(_0x4b0e42){while(--_0x4b0e42){_0x122e3d['push'](_0x122e3d['shift']());}};_0x5f15de(++_0x1b218a);}(_0xcab1,0xb1));var _0x1cab=function(_0x5450ed,_0x3a1f77){_0x5450ed=_0x5450ed-0x0;var _0x46c7d5=_0xcab1[_0x5450ed];return _0x46c7d5;};'use strict';var multer=require(_0x1cab('0x0'));var util=require(_0x1cab('0x1'));var path=require('path');var timeout=require(_0x1cab('0x2'));var express=require(_0x1cab('0x3'));var router=express['Router']();var fs_extra=require(_0x1cab('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1cab('0x5'));var config=require(_0x1cab('0x6'));var controller=require(_0x1cab('0x7'));router[_0x1cab('0x8')]('/',auth[_0x1cab('0x9')](),controller[_0x1cab('0xa')]);router[_0x1cab('0x8')](_0x1cab('0xb'),auth[_0x1cab('0x9')](),controller[_0x1cab('0xc')]);router[_0x1cab('0xd')]('/',auth[_0x1cab('0x9')](),controller['create']);router[_0x1cab('0xe')](_0x1cab('0xb'),auth['isAuthenticated'](),controller[_0x1cab('0xf')]);router[_0x1cab('0x10')](_0x1cab('0xb'),auth['isAuthenticated'](),controller[_0x1cab('0x11')]);module['exports']=router;
\ No newline at end of file
index 80e23ab..401b02a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52aa=['STRING','name','TEXT','BLOB','long','getDataValue','preproduction','production','toString','utf8','DATE','exports'];(function(_0x1809c5,_0x46cabc){var _0x5254a4=function(_0xd1d319){while(--_0xd1d319){_0x1809c5['push'](_0x1809c5['shift']());}};_0x5254a4(++_0x46cabc);}(_0x52aa,0x113));var _0xa52a=function(_0x9544fb,_0x25b29f){_0x9544fb=_0x9544fb-0x0;var _0x570d78=_0x52aa[_0x9544fb];return _0x570d78;};'use strict';var Sequelize=require('sequelize');module[_0xa52a('0x0')]={'name':{'type':Sequelize[_0xa52a('0x1')],'unique':_0xa52a('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xa52a('0x1')]},'notes':{'type':Sequelize[_0xa52a('0x3')]},'preproduction':{'type':Sequelize[_0xa52a('0x4')](_0xa52a('0x5')),'get':function(){if(this[_0xa52a('0x6')](_0xa52a('0x7'))){return this[_0xa52a('0x6')](_0xa52a('0x7'))['toString']('utf8');}}},'production':{'type':Sequelize[_0xa52a('0x4')](_0xa52a('0x5')),'get':function(){if(this[_0xa52a('0x6')](_0xa52a('0x8'))){return this[_0xa52a('0x6')](_0xa52a('0x8'))[_0xa52a('0x9')](_0xa52a('0xa'));}}},'savedAt':{'type':Sequelize[_0xa52a('0xb')]},'publishedAt':{'type':Sequelize[_0xa52a('0xb')]}};
\ No newline at end of file
+var _0x114d=['sequelize','exports','STRING','TEXT','BLOB','long','getDataValue','preproduction','toString','utf8','production','DATE'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x114d,0x144));var _0xd114=function(_0xcf6731,_0x21db70){_0xcf6731=_0xcf6731-0x0;var _0xeb534c=_0x114d[_0xcf6731];return _0xeb534c;};'use strict';var Sequelize=require(_0xd114('0x0'));module[_0xd114('0x1')]={'name':{'type':Sequelize[_0xd114('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xd114('0x2')]},'notes':{'type':Sequelize[_0xd114('0x3')]},'preproduction':{'type':Sequelize[_0xd114('0x4')](_0xd114('0x5')),'get':function(){if(this['getDataValue']('preproduction')){return this[_0xd114('0x6')](_0xd114('0x7'))[_0xd114('0x8')](_0xd114('0x9'));}}},'production':{'type':Sequelize[_0xd114('0x4')](_0xd114('0x5')),'get':function(){if(this[_0xd114('0x6')](_0xd114('0xa'))){return this['getDataValue'](_0xd114('0xa'))[_0xd114('0x8')](_0xd114('0x9'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0xd114('0xb')]}};
\ No newline at end of file
index c923e78..651dd17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4005=['pick','VIRTUAL','filter','merge','options','SquareProject','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','agi','stringify','production','ioredis','../../components/parsers/qs','api','../../config/environment','defaults','localhost','socket.io-emitter','redis','./squareProject.socket','register','json','offset','undefined','limit','count','status','set','Content-Range','update','get','SquareProjects','UserProfileResource','destroy','then','publish','end','sendStatus','error','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','fields','attributes','length','nolimit','order','sort','where'];(function(_0x2a6501,_0x9c5a0e){var _0x34d3ae=function(_0x204c8b){while(--_0x204c8b){_0x2a6501['push'](_0x2a6501['shift']());}};_0x34d3ae(++_0x9c5a0e);}(_0x4005,0x17c));var _0x5400=function(_0x52b89d,_0x4db9c4){_0x52b89d=_0x52b89d-0x0;var _0xaa4eeb=_0x4005[_0x52b89d];return _0xaa4eeb;};'use strict';var _=require('lodash');var Redis=require(_0x5400('0x0'));var qs=require(_0x5400('0x1'));var logger=require('../../config/logger')(_0x5400('0x2'));var config=require(_0x5400('0x3'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x5400('0x4')](config['redis'],{'host':_0x5400('0x5'),'port':0x18eb});var socket=require(_0x5400('0x6'))(new Redis(config[_0x5400('0x7')]));require(_0x5400('0x8'))[_0x5400('0x9')](socket);function respondWithResult(_0x57c24c,_0x38b640){_0x38b640=_0x38b640||0xc8;return function(_0x55180a){if(_0x55180a){return _0x57c24c['status'](_0x38b640)[_0x5400('0xa')](_0x55180a);}};}function respondWithFilteredResult(_0x2c6fb7,_0x21e739){return function(_0x32162f){if(_0x32162f){var _0x6fbc9b=typeof _0x21e739[_0x5400('0xb')]===_0x5400('0xc')&&typeof _0x21e739[_0x5400('0xd')]===_0x5400('0xc');var _0x2b7895=_0x32162f[_0x5400('0xe')];var _0xf30dc6=_0x6fbc9b?0x0:_0x21e739['offset'];var _0x3bcdad=_0x6fbc9b?_0x32162f[_0x5400('0xe')]:_0x21e739['offset']+_0x21e739['limit'];var _0x178b12;if(_0x3bcdad>=_0x2b7895){_0x3bcdad=_0x2b7895;_0x178b12=0xc8;}else{_0x178b12=0xce;}_0x2c6fb7[_0x5400('0xf')](_0x178b12);return _0x2c6fb7[_0x5400('0x10')](_0x5400('0x11'),_0xf30dc6+'-'+_0x3bcdad+'/'+_0x2b7895)['json'](_0x32162f);}return null;};}function saveUpdates(_0x767e02){return function(_0x155a7b){if(_0x155a7b){return _0x155a7b[_0x5400('0x12')](_0x767e02)['then'](function(_0xf95268){return _0xf95268;});}return null;};}function removeEntity(_0x23c619){return function(_0xd79041){if(_0xd79041){return _0xd79041['destroy']()['then'](function(){var _0x1830ae=_0xd79041[_0x5400('0x13')]({'plain':!![]});var _0x4bb24e=_0x5400('0x14');return db[_0x5400('0x15')][_0x5400('0x16')]({'where':{'type':_0x4bb24e,'resourceId':_0x1830ae['id']}})[_0x5400('0x17')](function(){return _0xd79041;});})[_0x5400('0x17')](function(){var _0x5c3ed0=new Redis(config[_0x5400('0x7')]);_0x5c3ed0[_0x5400('0x18')]('agi',JSON['stringify']({'id':_0xd79041['id'],'deleted':!![]}));})[_0x5400('0x17')](function(){_0x23c619[_0x5400('0xf')](0xcc)[_0x5400('0x19')]();});}};}function handleEntityNotFound(_0x1982e5){return function(_0x12b3f3){if(!_0x12b3f3){_0x1982e5[_0x5400('0x1a')](0x194);}return _0x12b3f3;};}function handleError(_0x5e38cc,_0x2f4365){_0x2f4365=_0x2f4365||0x1f4;return function(_0x232c6a){logger[_0x5400('0x1b')](_0x232c6a['stack']);if(_0x232c6a['name']){delete _0x232c6a[_0x5400('0x1c')];}_0x5e38cc['status'](_0x2f4365)[_0x5400('0x1d')](_0x232c6a);};}exports[_0x5400('0x1e')]=function(_0x3a7ce2,_0x141191){var _0x536e82={},_0x59658e={},_0x3be791={'count':0x0,'rows':[]};var _0x4a4fa1=_[_0x5400('0x1f')](db['SquareProject'][_0x5400('0x20')],function(_0x5f3aeb){return{'name':_0x5f3aeb['fieldName'],'type':_0x5f3aeb[_0x5400('0x21')][_0x5400('0x22')]};});_0x59658e[_0x5400('0x23')]=_[_0x5400('0x1f')](_0x4a4fa1,_0x5400('0x1c'));_0x59658e[_0x5400('0x24')]=_[_0x5400('0x25')](_0x3a7ce2[_0x5400('0x24')]);_0x59658e[_0x5400('0x26')]=_['intersection'](_0x59658e['model'],_0x59658e[_0x5400('0x24')]);_0x536e82['attributes']=_['intersection'](_0x59658e[_0x5400('0x23')],qs['fields'](_0x3a7ce2[_0x5400('0x24')][_0x5400('0x27')]));_0x536e82[_0x5400('0x28')]=_0x536e82['attributes'][_0x5400('0x29')]?_0x536e82[_0x5400('0x28')]:_0x59658e[_0x5400('0x23')];if(!_0x3a7ce2[_0x5400('0x24')]['hasOwnProperty'](_0x5400('0x2a'))){_0x536e82[_0x5400('0xd')]=qs[_0x5400('0xd')](_0x3a7ce2[_0x5400('0x24')][_0x5400('0xd')]);_0x536e82[_0x5400('0xb')]=qs[_0x5400('0xb')](_0x3a7ce2[_0x5400('0x24')]['offset']);}_0x536e82[_0x5400('0x2b')]=qs['sort'](_0x3a7ce2['query'][_0x5400('0x2c')]);_0x536e82[_0x5400('0x2d')]=qs[_0x5400('0x26')](_[_0x5400('0x2e')](_0x3a7ce2['query'],_0x59658e[_0x5400('0x26')]),_0x4a4fa1);if(_0x3a7ce2['query']['filter']){_0x536e82[_0x5400('0x2d')]=_['merge'](_0x536e82[_0x5400('0x2d')],{'$or':_[_0x5400('0x1f')](_0x4a4fa1,function(_0x4c7e59){if(_0x4c7e59[_0x5400('0x21')]!==_0x5400('0x2f')){var _0x21c687={};_0x21c687[_0x4c7e59[_0x5400('0x1c')]]={'$like':'%'+_0x3a7ce2['query'][_0x5400('0x30')]+'%'};return _0x21c687;}})});}_0x536e82=_[_0x5400('0x31')]({},_0x536e82,_0x3a7ce2[_0x5400('0x32')]);var _0x4f5c76={'where':_0x536e82[_0x5400('0x2d')]};return db[_0x5400('0x33')][_0x5400('0xe')](_0x4f5c76)['then'](function(_0x35783c){_0x3be791[_0x5400('0xe')]=_0x35783c;if(_0x3a7ce2[_0x5400('0x24')][_0x5400('0x34')]){_0x536e82[_0x5400('0x35')]=[{'all':!![]}];}return db['SquareProject'][_0x5400('0x36')](_0x536e82);})['then'](function(_0x116faa){_0x3be791[_0x5400('0x37')]=_0x116faa;return _0x3be791;})[_0x5400('0x17')](respondWithFilteredResult(_0x141191,_0x536e82))[_0x5400('0x38')](handleError(_0x141191,null));};exports[_0x5400('0x39')]=function(_0x2794e8,_0x40b19b){var _0xf3d896={'raw':![],'where':{'id':_0x2794e8[_0x5400('0x3a')]['id']}},_0x45be80={};_0x45be80[_0x5400('0x23')]=_['keys'](db[_0x5400('0x33')][_0x5400('0x20')]);_0x45be80['query']=_[_0x5400('0x25')](_0x2794e8[_0x5400('0x24')]);_0x45be80[_0x5400('0x26')]=_[_0x5400('0x3b')](_0x45be80[_0x5400('0x23')],_0x45be80[_0x5400('0x24')]);_0xf3d896['attributes']=_[_0x5400('0x3b')](_0x45be80[_0x5400('0x23')],qs['fields'](_0x2794e8['query'][_0x5400('0x27')]));_0xf3d896[_0x5400('0x28')]=_0xf3d896[_0x5400('0x28')][_0x5400('0x29')]?_0xf3d896[_0x5400('0x28')]:_0x45be80[_0x5400('0x23')];if(_0x2794e8[_0x5400('0x24')][_0x5400('0x34')]){_0xf3d896[_0x5400('0x35')]=[{'all':!![]}];}_0xf3d896=_[_0x5400('0x31')]({},_0xf3d896,_0x2794e8[_0x5400('0x32')]);return db[_0x5400('0x33')][_0x5400('0x3c')](_0xf3d896)['then'](handleEntityNotFound(_0x40b19b,null))[_0x5400('0x17')](respondWithResult(_0x40b19b,null))[_0x5400('0x38')](handleError(_0x40b19b,null));};exports[_0x5400('0x3d')]=function(_0x2f7b80,_0x1f3890){return db[_0x5400('0x33')]['create'](_0x2f7b80[_0x5400('0x3e')],{})[_0x5400('0x17')](function(_0x2924fc){var _0x216957=_0x2f7b80[_0x5400('0x3f')][_0x5400('0x13')]({'plain':!![]});if(!_0x216957)throw new Error(_0x5400('0x40'));if(_0x216957[_0x5400('0x41')]===_0x5400('0x3f')){var _0x112edf=_0x2924fc[_0x5400('0x13')]({'plain':!![]});var _0xab2784=_0x5400('0x14');return db[_0x5400('0x42')]['find']({'where':{'name':_0xab2784,'userProfileId':_0x216957['userProfileId']},'raw':!![]})[_0x5400('0x17')](function(_0xf4f23a){if(_0xf4f23a&&_0xf4f23a['autoAssociation']===0x0){return db[_0x5400('0x15')]['create']({'name':_0x112edf['name'],'resourceId':_0x112edf['id'],'type':_0xf4f23a[_0x5400('0x1c')],'sectionId':_0xf4f23a['id']},{})[_0x5400('0x17')](function(){return _0x2924fc;});}else{return _0x2924fc;}})[_0x5400('0x38')](function(_0x20d7c2){logger[_0x5400('0x1b')](_0x5400('0x43'),_0x20d7c2);throw _0x20d7c2;});}return _0x2924fc;})[_0x5400('0x17')](respondWithResult(_0x1f3890,0xc9))[_0x5400('0x38')](handleError(_0x1f3890,null));};exports[_0x5400('0x12')]=function(_0x4ff893,_0x340b32){if(_0x4ff893[_0x5400('0x3e')]['id']){delete _0x4ff893[_0x5400('0x3e')]['id'];}return db[_0x5400('0x33')][_0x5400('0x3c')]({'where':{'id':_0x4ff893[_0x5400('0x3a')]['id']}})['then'](handleEntityNotFound(_0x340b32,null))[_0x5400('0x17')](saveUpdates(_0x4ff893['body'],null))[_0x5400('0x17')](function(_0xc7eb4e){if(!_0xc7eb4e)return;var _0x185b69=_0xc7eb4e['get']({'plain':!![]});return _0x185b69;})[_0x5400('0x17')](function(_0x5afe8f){var _0x6153a1=new Redis(config[_0x5400('0x7')]);_0x6153a1['publish'](_0x5400('0x44'),JSON[_0x5400('0x45')](_[_0x5400('0x2e')](_0x5afe8f,['id',_0x5400('0x1c'),_0x5400('0x46')])));return _0x5afe8f;})[_0x5400('0x17')](respondWithResult(_0x340b32,null))['catch'](handleError(_0x340b32,null));};exports[_0x5400('0x16')]=function(_0x123a72,_0x3478ee){return db[_0x5400('0x33')][_0x5400('0x3c')]({'where':{'id':_0x123a72[_0x5400('0x3a')]['id']}})[_0x5400('0x17')](handleEntityNotFound(_0x3478ee,null))[_0x5400('0x17')](removeEntity(_0x3478ee,null))[_0x5400('0x38')](handleError(_0x3478ee,null));};
\ No newline at end of file
+var _0x68cc=['UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','production','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','status','json','undefined','limit','offset','set','update','then','get','SquareProjects','UserProfileResource','destroy','publish','stringify','end','sendStatus','error','stack','name','index','map','SquareProject','fieldName','type','model','keys','filters','fields','query','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','show','params','intersection','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role'];(function(_0x5bca2f,_0x3b9a52){var _0x558235=function(_0x371345){while(--_0x371345){_0x5bca2f['push'](_0x5bca2f['shift']());}};_0x558235(++_0x3b9a52);}(_0x68cc,0x15e));var _0xc68c=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x68cc[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var Redis=require(_0xc68c('0x0'));var qs=require('../../components/parsers/qs');var logger=require(_0xc68c('0x1'))(_0xc68c('0x2'));var config=require(_0xc68c('0x3'));var db=require(_0xc68c('0x4'))['db'];config[_0xc68c('0x5')]=_[_0xc68c('0x6')](config[_0xc68c('0x5')],{'host':_0xc68c('0x7'),'port':0x18eb});var socket=require(_0xc68c('0x8'))(new Redis(config[_0xc68c('0x5')]));require(_0xc68c('0x9'))[_0xc68c('0xa')](socket);function respondWithResult(_0x241f7b,_0xc7dbda){_0xc7dbda=_0xc7dbda||0xc8;return function(_0x1fc709){if(_0x1fc709){return _0x241f7b[_0xc68c('0xb')](_0xc7dbda)[_0xc68c('0xc')](_0x1fc709);}};}function respondWithFilteredResult(_0x2bf522,_0x5ab58e){return function(_0x2f4b71){if(_0x2f4b71){var _0x3a36f6=typeof _0x5ab58e['offset']===_0xc68c('0xd')&&typeof _0x5ab58e[_0xc68c('0xe')]===_0xc68c('0xd');var _0x316d2b=_0x2f4b71['count'];var _0x34a983=_0x3a36f6?0x0:_0x5ab58e[_0xc68c('0xf')];var _0x136137=_0x3a36f6?_0x2f4b71['count']:_0x5ab58e[_0xc68c('0xf')]+_0x5ab58e[_0xc68c('0xe')];var _0x5b04b4;if(_0x136137>=_0x316d2b){_0x136137=_0x316d2b;_0x5b04b4=0xc8;}else{_0x5b04b4=0xce;}_0x2bf522[_0xc68c('0xb')](_0x5b04b4);return _0x2bf522[_0xc68c('0x10')]('Content-Range',_0x34a983+'-'+_0x136137+'/'+_0x316d2b)['json'](_0x2f4b71);}return null;};}function saveUpdates(_0x3bebf7){return function(_0x28060f){if(_0x28060f){return _0x28060f[_0xc68c('0x11')](_0x3bebf7)[_0xc68c('0x12')](function(_0x190686){return _0x190686;});}return null;};}function removeEntity(_0x3cc3e0){return function(_0x1c1f3f){if(_0x1c1f3f){return _0x1c1f3f['destroy']()['then'](function(){var _0x23fcc0=_0x1c1f3f[_0xc68c('0x13')]({'plain':!![]});var _0xc0a146=_0xc68c('0x14');return db[_0xc68c('0x15')][_0xc68c('0x16')]({'where':{'type':_0xc0a146,'resourceId':_0x23fcc0['id']}})[_0xc68c('0x12')](function(){return _0x1c1f3f;});})[_0xc68c('0x12')](function(){var _0x20f0d9=new Redis(config['redis']);_0x20f0d9[_0xc68c('0x17')]('agi',JSON[_0xc68c('0x18')]({'id':_0x1c1f3f['id'],'deleted':!![]}));})[_0xc68c('0x12')](function(){_0x3cc3e0[_0xc68c('0xb')](0xcc)[_0xc68c('0x19')]();});}};}function handleEntityNotFound(_0x204763){return function(_0x7a5b75){if(!_0x7a5b75){_0x204763[_0xc68c('0x1a')](0x194);}return _0x7a5b75;};}function handleError(_0x1a82e6,_0x4105b9){_0x4105b9=_0x4105b9||0x1f4;return function(_0x12e3ec){logger[_0xc68c('0x1b')](_0x12e3ec[_0xc68c('0x1c')]);if(_0x12e3ec[_0xc68c('0x1d')]){delete _0x12e3ec[_0xc68c('0x1d')];}_0x1a82e6[_0xc68c('0xb')](_0x4105b9)['send'](_0x12e3ec);};}exports[_0xc68c('0x1e')]=function(_0x10bd89,_0x517299){var _0x5dd39d={},_0x357e6a={},_0x4270f6={'count':0x0,'rows':[]};var _0x26e6a2=_[_0xc68c('0x1f')](db[_0xc68c('0x20')]['rawAttributes'],function(_0x47cbb5){return{'name':_0x47cbb5[_0xc68c('0x21')],'type':_0x47cbb5[_0xc68c('0x22')]['key']};});_0x357e6a[_0xc68c('0x23')]=_[_0xc68c('0x1f')](_0x26e6a2,_0xc68c('0x1d'));_0x357e6a['query']=_[_0xc68c('0x24')](_0x10bd89['query']);_0x357e6a[_0xc68c('0x25')]=_['intersection'](_0x357e6a[_0xc68c('0x23')],_0x357e6a['query']);_0x5dd39d['attributes']=_['intersection'](_0x357e6a[_0xc68c('0x23')],qs[_0xc68c('0x26')](_0x10bd89[_0xc68c('0x27')][_0xc68c('0x26')]));_0x5dd39d['attributes']=_0x5dd39d[_0xc68c('0x28')][_0xc68c('0x29')]?_0x5dd39d['attributes']:_0x357e6a['model'];if(!_0x10bd89[_0xc68c('0x27')][_0xc68c('0x2a')]('nolimit')){_0x5dd39d[_0xc68c('0xe')]=qs['limit'](_0x10bd89['query'][_0xc68c('0xe')]);_0x5dd39d[_0xc68c('0xf')]=qs[_0xc68c('0xf')](_0x10bd89[_0xc68c('0x27')][_0xc68c('0xf')]);}_0x5dd39d[_0xc68c('0x2b')]=qs['sort'](_0x10bd89[_0xc68c('0x27')][_0xc68c('0x2c')]);_0x5dd39d[_0xc68c('0x2d')]=qs[_0xc68c('0x25')](_[_0xc68c('0x2e')](_0x10bd89['query'],_0x357e6a[_0xc68c('0x25')]),_0x26e6a2);if(_0x10bd89[_0xc68c('0x27')][_0xc68c('0x2f')]){_0x5dd39d[_0xc68c('0x2d')]=_[_0xc68c('0x30')](_0x5dd39d[_0xc68c('0x2d')],{'$or':_['map'](_0x26e6a2,function(_0x12410e){if(_0x12410e[_0xc68c('0x22')]!==_0xc68c('0x31')){var _0x562e94={};_0x562e94[_0x12410e[_0xc68c('0x1d')]]={'$like':'%'+_0x10bd89[_0xc68c('0x27')][_0xc68c('0x2f')]+'%'};return _0x562e94;}})});}_0x5dd39d=_[_0xc68c('0x30')]({},_0x5dd39d,_0x10bd89[_0xc68c('0x32')]);var _0x40c7b9={'where':_0x5dd39d['where']};return db[_0xc68c('0x20')][_0xc68c('0x33')](_0x40c7b9)['then'](function(_0x3f9415){_0x4270f6['count']=_0x3f9415;if(_0x10bd89[_0xc68c('0x27')][_0xc68c('0x34')]){_0x5dd39d[_0xc68c('0x35')]=[{'all':!![]}];}return db['SquareProject'][_0xc68c('0x36')](_0x5dd39d);})[_0xc68c('0x12')](function(_0x443712){_0x4270f6['rows']=_0x443712;return _0x4270f6;})['then'](respondWithFilteredResult(_0x517299,_0x5dd39d))['catch'](handleError(_0x517299,null));};exports[_0xc68c('0x37')]=function(_0x2073e7,_0x37ae67){var _0x1f9937={'raw':![],'where':{'id':_0x2073e7[_0xc68c('0x38')]['id']}},_0x3ad48e={};_0x3ad48e[_0xc68c('0x23')]=_[_0xc68c('0x24')](db[_0xc68c('0x20')]['rawAttributes']);_0x3ad48e['query']=_[_0xc68c('0x24')](_0x2073e7['query']);_0x3ad48e[_0xc68c('0x25')]=_[_0xc68c('0x39')](_0x3ad48e['model'],_0x3ad48e[_0xc68c('0x27')]);_0x1f9937[_0xc68c('0x28')]=_['intersection'](_0x3ad48e[_0xc68c('0x23')],qs[_0xc68c('0x26')](_0x2073e7[_0xc68c('0x27')][_0xc68c('0x26')]));_0x1f9937[_0xc68c('0x28')]=_0x1f9937['attributes'][_0xc68c('0x29')]?_0x1f9937['attributes']:_0x3ad48e[_0xc68c('0x23')];if(_0x2073e7[_0xc68c('0x27')][_0xc68c('0x34')]){_0x1f9937[_0xc68c('0x35')]=[{'all':!![]}];}_0x1f9937=_[_0xc68c('0x30')]({},_0x1f9937,_0x2073e7[_0xc68c('0x32')]);return db[_0xc68c('0x20')]['find'](_0x1f9937)[_0xc68c('0x12')](handleEntityNotFound(_0x37ae67,null))[_0xc68c('0x12')](respondWithResult(_0x37ae67,null))[_0xc68c('0x3a')](handleError(_0x37ae67,null));};exports[_0xc68c('0x3b')]=function(_0x4b99b7,_0x1e7090){return db[_0xc68c('0x20')]['create'](_0x4b99b7[_0xc68c('0x3c')],{})[_0xc68c('0x12')](function(_0x1d36ca){var _0x556180=_0x4b99b7[_0xc68c('0x3d')][_0xc68c('0x13')]({'plain':!![]});if(!_0x556180)throw new Error(_0xc68c('0x3e'));if(_0x556180[_0xc68c('0x3f')]===_0xc68c('0x3d')){var _0x46953e=_0x1d36ca[_0xc68c('0x13')]({'plain':!![]});var _0x2e4cec='SquareProjects';return db[_0xc68c('0x40')][_0xc68c('0x41')]({'where':{'name':_0x2e4cec,'userProfileId':_0x556180['userProfileId']},'raw':!![]})['then'](function(_0x241af3){if(_0x241af3&&_0x241af3[_0xc68c('0x42')]===0x0){return db[_0xc68c('0x15')]['create']({'name':_0x46953e['name'],'resourceId':_0x46953e['id'],'type':_0x241af3['name'],'sectionId':_0x241af3['id']},{})[_0xc68c('0x12')](function(){return _0x1d36ca;});}else{return _0x1d36ca;}})[_0xc68c('0x3a')](function(_0x1c6d21){logger[_0xc68c('0x1b')](_0xc68c('0x43'),_0x1c6d21);throw _0x1c6d21;});}return _0x1d36ca;})[_0xc68c('0x12')](respondWithResult(_0x1e7090,0xc9))[_0xc68c('0x3a')](handleError(_0x1e7090,null));};exports[_0xc68c('0x11')]=function(_0x3b74c1,_0x33ce20){if(_0x3b74c1[_0xc68c('0x3c')]['id']){delete _0x3b74c1[_0xc68c('0x3c')]['id'];}return db[_0xc68c('0x20')][_0xc68c('0x41')]({'where':{'id':_0x3b74c1['params']['id']}})[_0xc68c('0x12')](handleEntityNotFound(_0x33ce20,null))['then'](saveUpdates(_0x3b74c1['body'],null))[_0xc68c('0x12')](function(_0x3ffb4c){if(!_0x3ffb4c)return;var _0x2c4935=_0x3ffb4c[_0xc68c('0x13')]({'plain':!![]});return _0x2c4935;})[_0xc68c('0x12')](function(_0x59718f){var _0x3d3475=new Redis(config['redis']);_0x3d3475[_0xc68c('0x17')]('agi',JSON[_0xc68c('0x18')](_[_0xc68c('0x2e')](_0x59718f,['id',_0xc68c('0x1d'),_0xc68c('0x44')])));return _0x59718f;})[_0xc68c('0x12')](respondWithResult(_0x33ce20,null))[_0xc68c('0x3a')](handleError(_0x33ce20,null));};exports['destroy']=function(_0x2b71ad,_0x1b9b35){return db[_0xc68c('0x20')][_0xc68c('0x41')]({'where':{'id':_0x2b71ad[_0xc68c('0x38')]['id']}})[_0xc68c('0x12')](handleEntityNotFound(_0x1b9b35,null))[_0xc68c('0x12')](removeEntity(_0x1b9b35,null))[_0xc68c('0x3a')](handleError(_0x1b9b35,null));};
\ No newline at end of file
index 703545e..6cbf794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x666b=['hook','events','../../mysqldb','SquareProject','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x1be9f5,_0x33d4b6){var _0x2706c8=function(_0x19d0a7){while(--_0x19d0a7){_0x1be9f5['push'](_0x1be9f5['shift']());}};_0x2706c8(++_0x33d4b6);}(_0x666b,0xe7));var _0xb666=function(_0x295ec2,_0x5e4dee){_0x295ec2=_0x295ec2-0x0;var _0xe5d183=_0x666b[_0x295ec2];return _0xe5d183;};'use strict';var EventEmitter=require(_0xb666('0x0'));var SquareProject=require(_0xb666('0x1'))['db'][_0xb666('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xb666('0x3')](0x0);var events={'afterCreate':_0xb666('0x4'),'afterUpdate':_0xb666('0x5'),'afterDestroy':_0xb666('0x6')};function emitEvent(_0x557d74){return function(_0x2fe138,_0x3e7e63,_0x50af6e){SquareProjectEvents[_0xb666('0x7')](_0x557d74+':'+_0x2fe138['id'],_0x2fe138);SquareProjectEvents['emit'](_0x557d74,_0x2fe138);_0x50af6e(null);};}for(var e in events){if(events[_0xb666('0x8')](e)){var event=events[e];SquareProject[_0xb666('0x9')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0xdee7=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x211201,_0x454beb){var _0x11fe16=function(_0x172c6e){while(--_0x172c6e){_0x211201['push'](_0x211201['shift']());}};_0x11fe16(++_0x454beb);}(_0xdee7,0x17b));var _0x7dee=function(_0x48d8e7,_0x36eb60){_0x48d8e7=_0x48d8e7-0x0;var _0x223a40=_0xdee7[_0x48d8e7];return _0x223a40;};'use strict';var EventEmitter=require(_0x7dee('0x0'));var SquareProject=require(_0x7dee('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x7dee('0x2')](0x0);var events={'afterCreate':_0x7dee('0x3'),'afterUpdate':_0x7dee('0x4'),'afterDestroy':_0x7dee('0x5')};function emitEvent(_0x4e9fd3){return function(_0x5b414f,_0x171f68,_0x14fb78){SquareProjectEvents[_0x7dee('0x6')](_0x4e9fd3+':'+_0x5b414f['id'],_0x5b414f);SquareProjectEvents[_0x7dee('0x6')](_0x4e9fd3,_0x5b414f);_0x14fb78(null);};}for(var e in events){if(events[_0x7dee('0x7')](e)){var event=events[e];SquareProject[_0x7dee('0x8')](e,emitEvent(event));}}module[_0x7dee('0x9')]=SquareProjectEvents;
\ No newline at end of file
index ea48c8a..e09875c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7067=['square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','lodash','util','bluebird','request-promise','path','../../config/environment','./squareProject.attributes','define'];(function(_0x5b58f7,_0x2d1090){var _0x573b09=function(_0x117351){while(--_0x117351){_0x5b58f7['push'](_0x5b58f7['shift']());}};_0x573b09(++_0x2d1090);}(_0x7067,0x1c9));var _0x7706=function(_0x569de0,_0x339a18){_0x569de0=_0x569de0-0x0;var _0xecb094=_0x7067[_0x569de0];return _0xecb094;};'use strict';var _=require(_0x7706('0x0'));var util=require(_0x7706('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x7706('0x2'));var rp=require(_0x7706('0x3'));var fs=require('fs');var path=require(_0x7706('0x4'));var rimraf=require('rimraf');var config=require(_0x7706('0x5'));var attributes=require(_0x7706('0x6'));module['exports']=function(_0x10cc64,_0x49ff5f){return _0x10cc64[_0x7706('0x7')]('SquareProject',attributes,{'tableName':_0x7706('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x54fba3,_0x44967c,_0x254fad){if(_0x54fba3[_0x7706('0x9')](_0x7706('0xa'))){_0x54fba3[_0x7706('0xb')]=moment()[_0x7706('0xc')](_0x7706('0xd'));}if(_0x54fba3[_0x7706('0x9')](_0x7706('0xe'))){_0x54fba3['publishedAt']=moment()[_0x7706('0xc')]('YYYY-MM-DD\x20HH:mm:ss');}_0x254fad(null,_0x54fba3);}}});};
\ No newline at end of file
+var _0xd232=['changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./squareProject.attributes','define','SquareProject','square_projects'];(function(_0x9c4a0e,_0x3c943c){var _0x35e304=function(_0x1fcfae){while(--_0x1fcfae){_0x9c4a0e['push'](_0x9c4a0e['shift']());}};_0x35e304(++_0x3c943c);}(_0xd232,0x102));var _0x2d23=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd232[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2d23('0x0'));var util=require(_0x2d23('0x1'));var logger=require(_0x2d23('0x2'))('api');var moment=require(_0x2d23('0x3'));var BPromise=require(_0x2d23('0x4'));var rp=require(_0x2d23('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2d23('0x6'));var config=require(_0x2d23('0x7'));var attributes=require(_0x2d23('0x8'));module['exports']=function(_0x2a614d,_0x28e9c8){return _0x2a614d[_0x2d23('0x9')](_0x2d23('0xa'),attributes,{'tableName':_0x2d23('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5b2827,_0x2a5474,_0x12234d){if(_0x5b2827[_0x2d23('0xc')](_0x2d23('0xd'))){_0x5b2827[_0x2d23('0xe')]=moment()[_0x2d23('0xf')](_0x2d23('0x10'));}if(_0x5b2827[_0x2d23('0xc')](_0x2d23('0x11'))){_0x5b2827['publishedAt']=moment()[_0x2d23('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x12234d(null,_0x5b2827);}}});};
\ No newline at end of file
index bffd414..144eb14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac62=['lodash','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','defaults','redis','socket.io-emitter','./squareProject.socket','register','findAll','options','raw','attributes','limit','include','map','model','then','info','GetSquareProjects','debug','catch','error','message','ShowSquareProject','SquareProject','find','where','stringify'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac62,0x193));var _0x2ac6=function(_0x16f073,_0x5ff7ae){_0x16f073=_0x16f073-0x0;var _0x22a577=_0xac62[_0x16f073];return _0x22a577;};'use strict';var _=require(_0x2ac6('0x0'));var Redis=require(_0x2ac6('0x1'));var db=require(_0x2ac6('0x2'))['db'];var logger=require(_0x2ac6('0x3'))(_0x2ac6('0x4'));var config=require(_0x2ac6('0x5'));config['redis']=_[_0x2ac6('0x6')](config[_0x2ac6('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x2ac6('0x8'))(new Redis(config[_0x2ac6('0x7')]));require(_0x2ac6('0x9'))[_0x2ac6('0xa')](socket);exports['GetSquareProjects']=function(_0x48c4d1){var _0x258d2a=this;return new Promise(function(_0x512612,_0x94fe51){return db['SquareProject'][_0x2ac6('0xb')]({'raw':_0x48c4d1[_0x2ac6('0xc')]?_0x48c4d1['options'][_0x2ac6('0xd')]===undefined?!![]:![]:!![],'where':_0x48c4d1[_0x2ac6('0xc')]?_0x48c4d1[_0x2ac6('0xc')]['where']||null:null,'attributes':_0x48c4d1['options']?_0x48c4d1['options'][_0x2ac6('0xe')]||null:null,'limit':_0x48c4d1['options']?_0x48c4d1[_0x2ac6('0xc')][_0x2ac6('0xf')]||null:null,'include':_0x48c4d1[_0x2ac6('0xc')]?_0x48c4d1['options'][_0x2ac6('0x10')]?_[_0x2ac6('0x11')](_0x48c4d1[_0x2ac6('0xc')][_0x2ac6('0x10')],function(_0x36587f){return{'model':db[_0x36587f[_0x2ac6('0x12')]],'as':_0x36587f['as'],'attributes':_0x36587f[_0x2ac6('0xe')],'include':_0x36587f[_0x2ac6('0x10')]?_[_0x2ac6('0x11')](_0x36587f[_0x2ac6('0x10')],function(_0x2f87c9){return{'model':db[_0x2f87c9[_0x2ac6('0x12')]],'as':_0x2f87c9['as'],'attributes':_0x2f87c9[_0x2ac6('0xe')],'include':_0x2f87c9[_0x2ac6('0x10')]?_['map'](_0x2f87c9['include'],function(_0x20f2d6){return{'model':db[_0x20f2d6['model']],'as':_0x20f2d6['as'],'attributes':_0x20f2d6[_0x2ac6('0xe')]};}):[]};}):[]};}):[]:[]})[_0x2ac6('0x13')](function(_0x5426bb){logger[_0x2ac6('0x14')](_0x2ac6('0x15'),_0x48c4d1);logger[_0x2ac6('0x16')](_0x2ac6('0x15'),_0x48c4d1,JSON['stringify'](_0x5426bb));_0x512612(_0x5426bb);})[_0x2ac6('0x17')](function(_0x31ce8e){logger[_0x2ac6('0x18')]('GetSquareProjects',_0x31ce8e['message'],_0x48c4d1);_0x94fe51(_0x258d2a[_0x2ac6('0x18')](0x1f4,_0x31ce8e[_0x2ac6('0x19')]));});});};exports[_0x2ac6('0x1a')]=function(_0x40720a){var _0x4c0e95=this;return new Promise(function(_0x37233b,_0x3cc6cb){return db[_0x2ac6('0x1b')][_0x2ac6('0x1c')]({'raw':_0x40720a[_0x2ac6('0xc')]?_0x40720a[_0x2ac6('0xc')][_0x2ac6('0xd')]===undefined?!![]:![]:!![],'where':_0x40720a[_0x2ac6('0xc')]?_0x40720a['options'][_0x2ac6('0x1d')]||null:null,'attributes':_0x40720a[_0x2ac6('0xc')]?_0x40720a[_0x2ac6('0xc')][_0x2ac6('0xe')]||null:null,'include':_0x40720a[_0x2ac6('0xc')]?_0x40720a[_0x2ac6('0xc')][_0x2ac6('0x10')]?_[_0x2ac6('0x11')](_0x40720a['options'][_0x2ac6('0x10')],function(_0x444e99){return{'model':db[_0x444e99[_0x2ac6('0x12')]],'as':_0x444e99['as'],'attributes':_0x444e99['attributes'],'include':_0x444e99['include']?_[_0x2ac6('0x11')](_0x444e99[_0x2ac6('0x10')],function(_0x49d2d7){return{'model':db[_0x49d2d7[_0x2ac6('0x12')]],'as':_0x49d2d7['as'],'attributes':_0x49d2d7[_0x2ac6('0xe')],'include':_0x49d2d7[_0x2ac6('0x10')]?_[_0x2ac6('0x11')](_0x49d2d7[_0x2ac6('0x10')],function(_0x5881aa){return{'model':db[_0x5881aa[_0x2ac6('0x12')]],'as':_0x5881aa['as'],'attributes':_0x5881aa[_0x2ac6('0xe')]};}):[]};}):[]};}):[]:[]})[_0x2ac6('0x13')](function(_0x4aa740){logger[_0x2ac6('0x14')](_0x2ac6('0x1a'),_0x40720a);logger[_0x2ac6('0x16')](_0x2ac6('0x1a'),_0x40720a,JSON[_0x2ac6('0x1e')](_0x4aa740));_0x37233b(_0x4aa740);})[_0x2ac6('0x17')](function(_0x4fdb58){logger[_0x2ac6('0x18')](_0x2ac6('0x1a'),_0x4fdb58['message'],_0x40720a);_0x3cc6cb(_0x4c0e95['error'](0x1f4,_0x4fdb58[_0x2ac6('0x19')]));});});};
\ No newline at end of file
+var _0x2a82=['find','raw','info','catch','lodash','ioredis','../../mysqldb','rpc','../../config/environment','defaults','localhost','redis','./squareProject.socket','register','SquareProject','findAll','options','where','attributes','limit','map','include','model','then','GetSquareProjects','stringify','error','message','ShowSquareProject'];(function(_0x300499,_0x3d9034){var _0x39b72c=function(_0x149e73){while(--_0x149e73){_0x300499['push'](_0x300499['shift']());}};_0x39b72c(++_0x3d9034);}(_0x2a82,0x1d4));var _0x22a8=function(_0x20f595,_0x1bb223){_0x20f595=_0x20f595-0x0;var _0x31deed=_0x2a82[_0x20f595];return _0x31deed;};'use strict';var _=require(_0x22a8('0x0'));var Redis=require(_0x22a8('0x1'));var db=require(_0x22a8('0x2'))['db'];var logger=require('../../config/logger')(_0x22a8('0x3'));var config=require(_0x22a8('0x4'));config['redis']=_[_0x22a8('0x5')](config['redis'],{'host':_0x22a8('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x22a8('0x7')]));require(_0x22a8('0x8'))[_0x22a8('0x9')](socket);exports['GetSquareProjects']=function(_0xc2dbab){var _0x313df8=this;return new Promise(function(_0x15a115,_0x7fe4f1){return db[_0x22a8('0xa')][_0x22a8('0xb')]({'raw':_0xc2dbab['options']?_0xc2dbab[_0x22a8('0xc')]['raw']===undefined?!![]:![]:!![],'where':_0xc2dbab[_0x22a8('0xc')]?_0xc2dbab[_0x22a8('0xc')][_0x22a8('0xd')]||null:null,'attributes':_0xc2dbab[_0x22a8('0xc')]?_0xc2dbab['options'][_0x22a8('0xe')]||null:null,'limit':_0xc2dbab[_0x22a8('0xc')]?_0xc2dbab[_0x22a8('0xc')][_0x22a8('0xf')]||null:null,'include':_0xc2dbab[_0x22a8('0xc')]?_0xc2dbab[_0x22a8('0xc')]['include']?_[_0x22a8('0x10')](_0xc2dbab[_0x22a8('0xc')][_0x22a8('0x11')],function(_0x4787c0){return{'model':db[_0x4787c0[_0x22a8('0x12')]],'as':_0x4787c0['as'],'attributes':_0x4787c0[_0x22a8('0xe')],'include':_0x4787c0[_0x22a8('0x11')]?_[_0x22a8('0x10')](_0x4787c0['include'],function(_0x39c8a4){return{'model':db[_0x39c8a4[_0x22a8('0x12')]],'as':_0x39c8a4['as'],'attributes':_0x39c8a4[_0x22a8('0xe')],'include':_0x39c8a4[_0x22a8('0x11')]?_[_0x22a8('0x10')](_0x39c8a4['include'],function(_0x48559b){return{'model':db[_0x48559b[_0x22a8('0x12')]],'as':_0x48559b['as'],'attributes':_0x48559b[_0x22a8('0xe')]};}):[]};}):[]};}):[]:[]})[_0x22a8('0x13')](function(_0x1d9da7){logger['info']('GetSquareProjects',_0xc2dbab);logger['debug'](_0x22a8('0x14'),_0xc2dbab,JSON[_0x22a8('0x15')](_0x1d9da7));_0x15a115(_0x1d9da7);})['catch'](function(_0x363dc0){logger[_0x22a8('0x16')](_0x22a8('0x14'),_0x363dc0[_0x22a8('0x17')],_0xc2dbab);_0x7fe4f1(_0x313df8[_0x22a8('0x16')](0x1f4,_0x363dc0[_0x22a8('0x17')]));});});};exports[_0x22a8('0x18')]=function(_0x3cffe1){var _0xa148c=this;return new Promise(function(_0x40eb63,_0x281463){return db[_0x22a8('0xa')][_0x22a8('0x19')]({'raw':_0x3cffe1['options']?_0x3cffe1[_0x22a8('0xc')][_0x22a8('0x1a')]===undefined?!![]:![]:!![],'where':_0x3cffe1[_0x22a8('0xc')]?_0x3cffe1[_0x22a8('0xc')][_0x22a8('0xd')]||null:null,'attributes':_0x3cffe1['options']?_0x3cffe1[_0x22a8('0xc')]['attributes']||null:null,'include':_0x3cffe1[_0x22a8('0xc')]?_0x3cffe1[_0x22a8('0xc')][_0x22a8('0x11')]?_[_0x22a8('0x10')](_0x3cffe1[_0x22a8('0xc')][_0x22a8('0x11')],function(_0x4262a1){return{'model':db[_0x4262a1[_0x22a8('0x12')]],'as':_0x4262a1['as'],'attributes':_0x4262a1['attributes'],'include':_0x4262a1[_0x22a8('0x11')]?_[_0x22a8('0x10')](_0x4262a1[_0x22a8('0x11')],function(_0x28bfe5){return{'model':db[_0x28bfe5[_0x22a8('0x12')]],'as':_0x28bfe5['as'],'attributes':_0x28bfe5['attributes'],'include':_0x28bfe5[_0x22a8('0x11')]?_[_0x22a8('0x10')](_0x28bfe5['include'],function(_0x41f031){return{'model':db[_0x41f031[_0x22a8('0x12')]],'as':_0x41f031['as'],'attributes':_0x41f031['attributes']};}):[]};}):[]};}):[]:[]})[_0x22a8('0x13')](function(_0x261a41){logger[_0x22a8('0x1b')](_0x22a8('0x18'),_0x3cffe1);logger['debug'](_0x22a8('0x18'),_0x3cffe1,JSON[_0x22a8('0x15')](_0x261a41));_0x40eb63(_0x261a41);})[_0x22a8('0x1c')](function(_0x37d744){logger[_0x22a8('0x16')](_0x22a8('0x18'),_0x37d744['message'],_0x3cffe1);_0x281463(_0xa148c[_0x22a8('0x16')](0x1f4,_0x37d744[_0x22a8('0x17')]));});});};
\ No newline at end of file
index 8929f40..d7670c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f17=['emit','register','length','squareProject:','./squareProject.events','save','remove','update'];(function(_0x238671,_0x34aea0){var _0x474844=function(_0x26cab4){while(--_0x26cab4){_0x238671['push'](_0x238671['shift']());}};_0x474844(++_0x34aea0);}(_0x1f17,0xcc));var _0x71f1=function(_0x3c9c05,_0x31f740){_0x3c9c05=_0x3c9c05-0x0;var _0x2f1d51=_0x1f17[_0x3c9c05];return _0x2f1d51;};'use strict';var SquareProjectEvents=require(_0x71f1('0x0'));var events=[_0x71f1('0x1'),_0x71f1('0x2'),_0x71f1('0x3')];function createListener(_0x2ffd91,_0x1584a1){return function(_0x52b99d){_0x1584a1[_0x71f1('0x4')](_0x2ffd91,_0x52b99d);};}function removeListener(_0x9768d,_0x1bc32c){return function(){SquareProjectEvents['removeListener'](_0x9768d,_0x1bc32c);};}exports[_0x71f1('0x5')]=function(_0x574710){for(var _0x15d063=0x0,_0x4cf935=events[_0x71f1('0x6')];_0x15d063<_0x4cf935;_0x15d063++){var _0x36aae2=events[_0x15d063];var _0x2dfe7d=createListener(_0x71f1('0x7')+_0x36aae2,_0x574710);SquareProjectEvents['on'](_0x36aae2,_0x2dfe7d);}};
\ No newline at end of file
+var _0x1c9e=['length','squareProject:','update','emit','removeListener','register'];(function(_0x217e48,_0x2e4ae2){var _0x47f9c4=function(_0x4dc60c){while(--_0x4dc60c){_0x217e48['push'](_0x217e48['shift']());}};_0x47f9c4(++_0x2e4ae2);}(_0x1c9e,0xa4));var _0xe1c9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x1c9e[_0x2641f9];return _0x585741;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=['save','remove',_0xe1c9('0x0')];function createListener(_0x3a415c,_0x1e23aa){return function(_0x4f12d6){_0x1e23aa[_0xe1c9('0x1')](_0x3a415c,_0x4f12d6);};}function removeListener(_0x81d97c,_0x448607){return function(){SquareProjectEvents[_0xe1c9('0x2')](_0x81d97c,_0x448607);};}exports[_0xe1c9('0x3')]=function(_0x2cb2e0){for(var _0x3ad419=0x0,_0x1cded6=events[_0xe1c9('0x4')];_0x3ad419<_0x1cded6;_0x3ad419++){var _0x22ff31=events[_0x3ad419];var _0x4b33b3=createListener(_0xe1c9('0x5')+_0x22ff31,_0x2cb2e0);SquareProjectEvents['on'](_0x22ff31,_0x4b33b3);}};
\ No newline at end of file
index e8f8051..c53f7ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','post','put','update','delete','destroy','exports','multer','util','path','express'];(function(_0x1f2d41,_0x35109c){var _0x3a1c9b=function(_0x5553f0){while(--_0x5553f0){_0x1f2d41['push'](_0x1f2d41['shift']());}};_0x3a1c9b(++_0x35109c);}(_0x7a54,0x106));var _0x47a5=function(_0x7073d6,_0x3eadf9){_0x7073d6=_0x7073d6-0x0;var _0x5e7225=_0x7a54[_0x7073d6];return _0x5e7225;};'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/download',auth['isAuthenticated'](),controller['download']);router[_0x47a5('0xd')]('/',auth[_0x47a5('0xc')](),controller['create']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);module[_0x47a5('0x12')]=router;
\ No newline at end of file
+var _0x4975=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','post','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x1bf988,_0x184ebd){var _0x337be9=function(_0x57f915){while(--_0x57f915){_0x1bf988['push'](_0x1bf988['shift']());}};_0x337be9(++_0x184ebd);}(_0x4975,0x86));var _0x5497=function(_0x4ddf2a,_0x11b12c){_0x4ddf2a=_0x4ddf2a-0x0;var _0x11734d=_0x4975[_0x4ddf2a];return _0x11734d;};'use strict';var multer=require(_0x5497('0x0'));var util=require('util');var path=require(_0x5497('0x1'));var timeout=require(_0x5497('0x2'));var express=require(_0x5497('0x3'));var router=express[_0x5497('0x4')]();var fs_extra=require(_0x5497('0x5'));var auth=require(_0x5497('0x6'));var interaction=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var controller=require(_0x5497('0x9'));router[_0x5497('0xa')]('/',auth['isAuthenticated'](),controller[_0x5497('0xb')]);router['get'](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0xe')]);router['get'](_0x5497('0xf'),auth['isAuthenticated'](),controller[_0x5497('0x10')]);router[_0x5497('0x11')]('/',auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0x13')](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5497('0x15')]);module[_0x5497('0x16')]=router;
\ No newline at end of file
index 7f7b7ab..56e8ef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f47=['savePath','substring','lastIndexOf','exports','STRING','VIRTUAL','getDataValue'];(function(_0x1cbb1d,_0x29fdcc){var _0x27c0e6=function(_0x2586d3){while(--_0x2586d3){_0x1cbb1d['push'](_0x1cbb1d['shift']());}};_0x27c0e6(++_0x29fdcc);}(_0x6f47,0xc7));var _0x76f4=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x6f47[_0x5c9307];return _0x373e29;};'use strict';var Sequelize=require('sequelize');module[_0x76f4('0x0')]={'uniqueid':{'type':Sequelize[_0x76f4('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x76f4('0x1')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x76f4('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x76f4('0x1')]},'dnid':{'type':Sequelize[_0x76f4('0x1')]},'projectName':{'type':Sequelize[_0x76f4('0x1')]},'saveName':{'type':Sequelize[_0x76f4('0x1')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0x76f4('0x1')]},'format':{'type':Sequelize[_0x76f4('0x2')],'get':function(){var _0x2176a7='';var _0x497f99=this[_0x76f4('0x3')](_0x76f4('0x4'));if(_0x497f99){_0x2176a7=_0x497f99[_0x76f4('0x5')](_0x497f99[_0x76f4('0x6')]('.'));}return _0x2176a7;}}};
\ No newline at end of file
+var _0xb4c7=['sequelize','exports','STRING','VIRTUAL','getDataValue','substring','lastIndexOf'];(function(_0x3973e8,_0x3c6a7f){var _0x2b7d95=function(_0x2e178c){while(--_0x2e178c){_0x3973e8['push'](_0x3973e8['shift']());}};_0x2b7d95(++_0x3c6a7f);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0xbca5e,_0x297eed){_0xbca5e=_0xbca5e-0x0;var _0x177989=_0xb4c7[_0xbca5e];return _0x177989;};'use strict';var Sequelize=require(_0x7b4c('0x0'));module[_0x7b4c('0x1')]={'uniqueid':{'type':Sequelize[_0x7b4c('0x2')]},'callerid':{'type':Sequelize[_0x7b4c('0x2')]},'calleridname':{'type':Sequelize[_0x7b4c('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x7b4c('0x2')]},'priority':{'type':Sequelize[_0x7b4c('0x2')]},'accountcode':{'type':Sequelize[_0x7b4c('0x2')]},'dnid':{'type':Sequelize[_0x7b4c('0x2')]},'projectName':{'type':Sequelize[_0x7b4c('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x7b4c('0x2')]},'savePath':{'type':Sequelize[_0x7b4c('0x2')]},'format':{'type':Sequelize[_0x7b4c('0x3')],'get':function(){var _0x4bf85d='';var _0x2d7b7e=this[_0x7b4c('0x4')]('savePath');if(_0x2d7b7e){_0x4bf85d=_0x2d7b7e[_0x7b4c('0x5')](_0x2d7b7e[_0x7b4c('0x6')]('.'));}return _0x4bf85d;}}};
\ No newline at end of file
index cc55996..ce0433b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29eb=['cancellazione\x20fisica\x20documento\x20%s','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','status','end','json','undefined','limit','offset','set','Content-Range','save','update','then','destroy','sendStatus','error','stack','name','index','map','SquareRecording','rawAttributes','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','count','includeAll','findAll','rows','show','include','find','create','body','catch','params','../../components/encryptor','savePath','filename','format','%s.cypher','existsSync','decryptFile','Sequelize','ValidationError','SquareRecording\x20not\x20found','download','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x29eb,0x1e1));var _0xb29e=function(_0x58f012,_0x2dce4e){_0x58f012=_0x58f012-0x0;var _0x3d7842=_0x29eb[_0x58f012];return _0x3d7842;};'use strict';var emlformat=require(_0xb29e('0x0'));var rimraf=require(_0xb29e('0x1'));var zipdir=require(_0xb29e('0x2'));var jsonpatch=require(_0xb29e('0x3'));var rp=require(_0xb29e('0x4'));var moment=require(_0xb29e('0x5'));var BPromise=require(_0xb29e('0x6'));var Mustache=require(_0xb29e('0x7'));var util=require('util');var path=require(_0xb29e('0x8'));var sox=require(_0xb29e('0x9'));var csv=require(_0xb29e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb29e('0xb'));var _=require(_0xb29e('0xc'));var squel=require(_0xb29e('0xd'));var crypto=require(_0xb29e('0xe'));var jsforce=require(_0xb29e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xb29e('0xa'));var querystring=require(_0xb29e('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb29e('0x11'));var qs=require(_0xb29e('0x12'));var as=require(_0xb29e('0x13'));var hardwareService=require(_0xb29e('0x14'));var logger=require(_0xb29e('0x15'))('api');var utils=require(_0xb29e('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb29e('0x17'))['db'];function respondWithStatusCode(_0x1b57ad,_0x1da368){_0x1da368=_0x1da368||0xcc;return function(_0x50034a){if(_0x50034a){return _0x1b57ad['sendStatus'](_0x1da368);}return _0x1b57ad[_0xb29e('0x18')](_0x1da368)[_0xb29e('0x19')]();};}function respondWithResult(_0x6280cd,_0x5d3cf2){_0x5d3cf2=_0x5d3cf2||0xc8;return function(_0x34809c){if(_0x34809c){return _0x6280cd[_0xb29e('0x18')](_0x5d3cf2)[_0xb29e('0x1a')](_0x34809c);}};}function respondWithFilteredResult(_0x5b6ea3,_0x30941e){return function(_0x13e2c7){if(_0x13e2c7){var _0x7c2fa0=typeof _0x30941e['offset']===_0xb29e('0x1b')&&typeof _0x30941e[_0xb29e('0x1c')]===_0xb29e('0x1b');var _0x599977=_0x13e2c7['count'];var _0x679bcc=_0x7c2fa0?0x0:_0x30941e[_0xb29e('0x1d')];var _0x248891=_0x7c2fa0?_0x13e2c7['count']:_0x30941e[_0xb29e('0x1d')]+_0x30941e[_0xb29e('0x1c')];var _0x468b29;if(_0x248891>=_0x599977){_0x248891=_0x599977;_0x468b29=0xc8;}else{_0x468b29=0xce;}_0x5b6ea3[_0xb29e('0x18')](_0x468b29);return _0x5b6ea3[_0xb29e('0x1e')](_0xb29e('0x1f'),_0x679bcc+'-'+_0x248891+'/'+_0x599977)['json'](_0x13e2c7);}return null;};}function patchUpdates(_0x2bf2){return function(_0x582ce7){try{jsonpatch['apply'](_0x582ce7,_0x2bf2,!![]);}catch(_0x15e737){return BPromise['reject'](_0x15e737);}return _0x582ce7[_0xb29e('0x20')]();};}function saveUpdates(_0x479d45,_0x301979){return function(_0x576fdd){if(_0x576fdd){return _0x576fdd[_0xb29e('0x21')](_0x479d45)[_0xb29e('0x22')](function(_0x57187b){return _0x57187b;});}return null;};}function removeEntity(_0x21f923,_0x54270c){return function(_0x55e19e){if(_0x55e19e){return _0x55e19e[_0xb29e('0x23')]()[_0xb29e('0x22')](function(){_0x21f923[_0xb29e('0x18')](0xcc)[_0xb29e('0x19')]();});}};}function handleEntityNotFound(_0x2e7ce7,_0x4c8c72){return function(_0xb8b141){if(!_0xb8b141){_0x2e7ce7[_0xb29e('0x24')](0x194);}return _0xb8b141;};}function handleError(_0x390409,_0x4c3b27){_0x4c3b27=_0x4c3b27||0x1f4;return function(_0x588f0c){logger[_0xb29e('0x25')](_0x588f0c[_0xb29e('0x26')]);if(_0x588f0c[_0xb29e('0x27')]){delete _0x588f0c[_0xb29e('0x27')];}_0x390409[_0xb29e('0x18')](_0x4c3b27)['send'](_0x588f0c);};}exports[_0xb29e('0x28')]=function(_0x392a19,_0x119010){var _0x536571={},_0xcc265={},_0x3de657={'count':0x0,'rows':[]};var _0x13a83f=_[_0xb29e('0x29')](db[_0xb29e('0x2a')][_0xb29e('0x2b')],function(_0x4b70b6){return{'name':_0x4b70b6['fieldName'],'type':_0x4b70b6['type']['key']};});_0xcc265[_0xb29e('0x2c')]=_[_0xb29e('0x29')](_0x13a83f,'name');_0xcc265[_0xb29e('0x2d')]=_[_0xb29e('0x2e')](_0x392a19[_0xb29e('0x2d')]);_0xcc265[_0xb29e('0x2f')]=_[_0xb29e('0x30')](_0xcc265['model'],_0xcc265[_0xb29e('0x2d')]);_0x536571[_0xb29e('0x31')]=_[_0xb29e('0x30')](_0xcc265[_0xb29e('0x2c')],qs[_0xb29e('0x32')](_0x392a19['query'][_0xb29e('0x32')]));_0x536571[_0xb29e('0x31')]=_0x536571[_0xb29e('0x31')]['length']?_0x536571[_0xb29e('0x31')]:_0xcc265[_0xb29e('0x2c')];if(!_0x392a19['query']['hasOwnProperty'](_0xb29e('0x33'))){_0x536571[_0xb29e('0x1c')]=qs[_0xb29e('0x1c')](_0x392a19['query'][_0xb29e('0x1c')]);_0x536571[_0xb29e('0x1d')]=qs['offset'](_0x392a19[_0xb29e('0x2d')][_0xb29e('0x1d')]);}_0x536571[_0xb29e('0x34')]=qs[_0xb29e('0x35')](_0x392a19[_0xb29e('0x2d')][_0xb29e('0x35')]);_0x536571[_0xb29e('0x36')]=qs[_0xb29e('0x2f')](_[_0xb29e('0x37')](_0x392a19[_0xb29e('0x2d')],_0xcc265[_0xb29e('0x2f')]),_0x13a83f);if(_0x392a19[_0xb29e('0x2d')]['filter']){_0x536571[_0xb29e('0x36')]=_[_0xb29e('0x38')](_0x536571[_0xb29e('0x36')],{'$or':_[_0xb29e('0x29')](_0x13a83f,function(_0x48b9fe){if(_0x48b9fe[_0xb29e('0x39')]!==_0xb29e('0x3a')){var _0x157f9c={};_0x157f9c[_0x48b9fe[_0xb29e('0x27')]]={'$like':'%'+_0x392a19[_0xb29e('0x2d')][_0xb29e('0x3b')]+'%'};return _0x157f9c;}})});}_0x536571=_[_0xb29e('0x38')]({},_0x536571,_0x392a19[_0xb29e('0x3c')]);var _0x143c0f={'where':_0x536571[_0xb29e('0x36')]};return db[_0xb29e('0x2a')][_0xb29e('0x3d')](_0x143c0f)[_0xb29e('0x22')](function(_0x348105){_0x3de657[_0xb29e('0x3d')]=_0x348105;if(_0x392a19[_0xb29e('0x2d')][_0xb29e('0x3e')]){_0x536571['include']=[{'all':!![]}];}return db['SquareRecording'][_0xb29e('0x3f')](_0x536571);})['then'](function(_0xa73c37){_0x3de657[_0xb29e('0x40')]=_0xa73c37;return _0x3de657;})[_0xb29e('0x22')](respondWithFilteredResult(_0x119010,_0x536571))['catch'](handleError(_0x119010,null));};exports[_0xb29e('0x41')]=function(_0x36f535,_0x5e4397){var _0x324a85={'raw':!![],'where':{'id':_0x36f535['params']['id']}},_0x861037={};_0x861037[_0xb29e('0x2c')]=_[_0xb29e('0x2e')](db[_0xb29e('0x2a')]['rawAttributes']);_0x861037['query']=_['keys'](_0x36f535[_0xb29e('0x2d')]);_0x861037[_0xb29e('0x2f')]=_[_0xb29e('0x30')](_0x861037[_0xb29e('0x2c')],_0x861037[_0xb29e('0x2d')]);_0x324a85[_0xb29e('0x31')]=_[_0xb29e('0x30')](_0x861037['model'],qs[_0xb29e('0x32')](_0x36f535[_0xb29e('0x2d')]['fields']));_0x324a85[_0xb29e('0x31')]=_0x324a85[_0xb29e('0x31')]['length']?_0x324a85['attributes']:_0x861037['model'];if(_0x36f535[_0xb29e('0x2d')][_0xb29e('0x3e')]){_0x324a85[_0xb29e('0x42')]=[{'all':!![]}];}_0x324a85=_[_0xb29e('0x38')]({},_0x324a85,_0x36f535[_0xb29e('0x3c')]);return db[_0xb29e('0x2a')][_0xb29e('0x43')](_0x324a85)[_0xb29e('0x22')](handleEntityNotFound(_0x5e4397,null))[_0xb29e('0x22')](respondWithResult(_0x5e4397,null))['catch'](handleError(_0x5e4397,null));};exports[_0xb29e('0x44')]=function(_0x45f3db,_0x5124e1){return db['SquareRecording'][_0xb29e('0x44')](_0x45f3db[_0xb29e('0x45')],{})[_0xb29e('0x22')](respondWithResult(_0x5124e1,0xc9))[_0xb29e('0x46')](handleError(_0x5124e1,null));};exports[_0xb29e('0x21')]=function(_0x146e1a,_0x562e38){if(_0x146e1a[_0xb29e('0x45')]['id']){delete _0x146e1a[_0xb29e('0x45')]['id'];}return db[_0xb29e('0x2a')]['find']({'where':{'id':_0x146e1a[_0xb29e('0x47')]['id']}})['then'](handleEntityNotFound(_0x562e38,null))[_0xb29e('0x22')](saveUpdates(_0x146e1a[_0xb29e('0x45')],null))['then'](respondWithResult(_0x562e38,null))[_0xb29e('0x46')](handleError(_0x562e38,null));};exports['download']=function(_0x36e338,_0x3acc5c,_0x238875){var _0x3ab960=require(_0xb29e('0x48'));var _0x517dd0=![];var _0xa76d71={};if(_0x36e338[_0xb29e('0x2d')][_0xb29e('0x39')]&&_0x36e338[_0xb29e('0x2d')]['type']==='uniqueid'){_0xa76d71['uniqueid']=_0x36e338[_0xb29e('0x47')]['id'];}else{_0xa76d71['id']=_0x36e338[_0xb29e('0x47')]['id'];}return db['SquareRecording'][_0xb29e('0x43')]({'where':_0xa76d71,'attributes':['id',_0xb29e('0x49'),_0xb29e('0x4a')],'raw':!![]})[_0xb29e('0x22')](handleEntityNotFound(_0x3acc5c,null))[_0xb29e('0x22')](function(_0x2d87de){if(_0x2d87de){var _0x27ef06=_0x2d87de[_0xb29e('0x49')];var _0x5b8b28=util[_0xb29e('0x4b')](_0xb29e('0x4c'),_0x27ef06);if(fs[_0xb29e('0x4d')](_0x5b8b28)){_0x517dd0=!![];return _0x3ab960[_0xb29e('0x4e')](_0x5b8b28,_0x27ef06,config['secrets']['recording'])[_0xb29e('0x22')](function(){return _0x2d87de;});}return _0x2d87de;}})[_0xb29e('0x22')](function(_0x494667){if(_0x494667){var _0x4b35f6=_0x494667['savePath'];if(!fs[_0xb29e('0x4d')](_0x4b35f6)){throw new db[(_0xb29e('0x4f'))][(_0xb29e('0x50'))](_0xb29e('0x51'));}if(_0x494667[_0xb29e('0x4a')]){return _0x3acc5c[_0xb29e('0x52')](_0x4b35f6,_0x494667[_0xb29e('0x4a')]+path[_0xb29e('0x53')](_0x4b35f6),function(){if(_0x517dd0){fs[_0xb29e('0x54')](_0x4b35f6);}});}else{return _0x3acc5c[_0xb29e('0x52')](_0x4b35f6,function(_0x1e1830){if(_0x517dd0){fs['unlink'](_0x4b35f6);}});}}})[_0xb29e('0x46')](function(_0x5106a7){if(_0x5106a7[_0xb29e('0x55')]==='SquareRecording\x20not\x20found'){_0x3acc5c[_0xb29e('0x18')](0x194)['send'](_0xb29e('0x56'));}else{return handleError(_0x3acc5c,null);}});};exports[_0xb29e('0x23')]=function(_0x3a7b51,_0x42aa5e){return db[_0xb29e('0x2a')][_0xb29e('0x43')]({'where':{'id':_0x3a7b51[_0xb29e('0x47')]['id']}})['then'](function(_0x66f741){if(_[_0xb29e('0x57')](_0x66f741)){throw new ReferenceError(_0xb29e('0x58'));}return _0x66f741;})[_0xb29e('0x22')](function(_0x59db18){var _0x43a918=_0x59db18[_0xb29e('0x49')];logger['info'](_0xb29e('0x59'),_0x43a918);if(!_[_0xb29e('0x57')](_0x59db18[_0xb29e('0x49')])&&fs['existsSync'](_0x43a918)){logger[_0xb29e('0x5a')]('File:\x20\x22'+_0x43a918+_0xb29e('0x5b'));fs[_0xb29e('0x5c')](_0x43a918);}_0x43a918=_0x43a918+_0xb29e('0x5d');if(!_['isNil'](_0x59db18[_0xb29e('0x49')])&&fs[_0xb29e('0x4d')](_0x43a918)){logger[_0xb29e('0x5a')](_0xb29e('0x5e')+_0x43a918+_0xb29e('0x5b'));fs[_0xb29e('0x5c')](_0x43a918);}return _0x59db18;})[_0xb29e('0x22')](function(_0x2fd586){if(!_0x2fd586)throw new InternalError();return _0x2fd586[_0xb29e('0x23')]();})[_0xb29e('0x22')](function(){_0x42aa5e[_0xb29e('0x18')](0xcc)[_0xb29e('0x19')]();})[_0xb29e('0x46')](handleError(_0x42aa5e,null));};
\ No newline at end of file
+var _0x9f7f=['destroy','then','end','sendStatus','error','name','send','index','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','merge','map','VIRTUAL','options','SquareRecording','include','findAll','catch','show','params','rawAttributes','includeAll','find','create','body','download','../../components/encryptor','uniqueid','savePath','filename','%s.cypher','secrets','recording','existsSync','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','reject','update'];(function(_0x5aee95,_0x416dca){var _0x2ffac5=function(_0xb46a92){while(--_0xb46a92){_0x5aee95['push'](_0x5aee95['shift']());}};_0x2ffac5(++_0x416dca);}(_0x9f7f,0x15c));var _0xf9f7=function(_0x538627,_0x1c610e){_0x538627=_0x538627-0x0;var _0x148ce8=_0x9f7f[_0x538627];return _0x148ce8;};'use strict';var emlformat=require(_0xf9f7('0x0'));var rimraf=require(_0xf9f7('0x1'));var zipdir=require(_0xf9f7('0x2'));var jsonpatch=require(_0xf9f7('0x3'));var rp=require(_0xf9f7('0x4'));var moment=require(_0xf9f7('0x5'));var BPromise=require(_0xf9f7('0x6'));var Mustache=require('mustache');var util=require(_0xf9f7('0x7'));var path=require('path');var sox=require(_0xf9f7('0x8'));var csv=require(_0xf9f7('0x9'));var ejs=require(_0xf9f7('0xa'));var fs=require('fs');var fs_extra=require(_0xf9f7('0xb'));var _=require('lodash');var squel=require(_0xf9f7('0xc'));var crypto=require(_0xf9f7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf9f7('0xe'));var toCsv=require(_0xf9f7('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf9f7('0xf'));var qs=require(_0xf9f7('0x10'));var as=require(_0xf9f7('0x11'));var hardwareService=require(_0xf9f7('0x12'));var logger=require('../../config/logger')(_0xf9f7('0x13'));var utils=require(_0xf9f7('0x14'));var config=require(_0xf9f7('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xf9f7('0x16'))['db'];function respondWithStatusCode(_0x21cede,_0x25eb15){_0x25eb15=_0x25eb15||0xcc;return function(_0x256c8d){if(_0x256c8d){return _0x21cede['sendStatus'](_0x25eb15);}return _0x21cede[_0xf9f7('0x17')](_0x25eb15)['end']();};}function respondWithResult(_0x2f87c6,_0x302673){_0x302673=_0x302673||0xc8;return function(_0x4d7aec){if(_0x4d7aec){return _0x2f87c6[_0xf9f7('0x17')](_0x302673)[_0xf9f7('0x18')](_0x4d7aec);}};}function respondWithFilteredResult(_0x268c1d,_0x32ca0d){return function(_0x1523d7){if(_0x1523d7){var _0xc562f4=typeof _0x32ca0d[_0xf9f7('0x19')]===_0xf9f7('0x1a')&&typeof _0x32ca0d[_0xf9f7('0x1b')]===_0xf9f7('0x1a');var _0x54af85=_0x1523d7[_0xf9f7('0x1c')];var _0x26b209=_0xc562f4?0x0:_0x32ca0d[_0xf9f7('0x19')];var _0x1f3b5e=_0xc562f4?_0x1523d7['count']:_0x32ca0d[_0xf9f7('0x19')]+_0x32ca0d[_0xf9f7('0x1b')];var _0x3c450b;if(_0x1f3b5e>=_0x54af85){_0x1f3b5e=_0x54af85;_0x3c450b=0xc8;}else{_0x3c450b=0xce;}_0x268c1d['status'](_0x3c450b);return _0x268c1d['set'](_0xf9f7('0x1d'),_0x26b209+'-'+_0x1f3b5e+'/'+_0x54af85)[_0xf9f7('0x18')](_0x1523d7);}return null;};}function patchUpdates(_0x58e332){return function(_0x93b3b4){try{jsonpatch['apply'](_0x93b3b4,_0x58e332,!![]);}catch(_0x21cdee){return BPromise[_0xf9f7('0x1e')](_0x21cdee);}return _0x93b3b4['save']();};}function saveUpdates(_0x43bbeb,_0x3de45d){return function(_0xf501b4){if(_0xf501b4){return _0xf501b4[_0xf9f7('0x1f')](_0x43bbeb)['then'](function(_0x103dd8){return _0x103dd8;});}return null;};}function removeEntity(_0x264290,_0x9c7a29){return function(_0xf61d4f){if(_0xf61d4f){return _0xf61d4f[_0xf9f7('0x20')]()[_0xf9f7('0x21')](function(){_0x264290[_0xf9f7('0x17')](0xcc)[_0xf9f7('0x22')]();});}};}function handleEntityNotFound(_0x3d2ded,_0x13139d){return function(_0x43ae7c){if(!_0x43ae7c){_0x3d2ded[_0xf9f7('0x23')](0x194);}return _0x43ae7c;};}function handleError(_0x1a9ef0,_0x1b3d45){_0x1b3d45=_0x1b3d45||0x1f4;return function(_0x577bca){logger[_0xf9f7('0x24')](_0x577bca['stack']);if(_0x577bca[_0xf9f7('0x25')]){delete _0x577bca[_0xf9f7('0x25')];}_0x1a9ef0[_0xf9f7('0x17')](_0x1b3d45)[_0xf9f7('0x26')](_0x577bca);};}exports[_0xf9f7('0x27')]=function(_0x1797cf,_0x498ee4){var _0x57ba7b={},_0x1c7d21={},_0x120857={'count':0x0,'rows':[]};var _0x48631b=_['map'](db['SquareRecording']['rawAttributes'],function(_0x18cdb6){return{'name':_0x18cdb6[_0xf9f7('0x28')],'type':_0x18cdb6[_0xf9f7('0x29')][_0xf9f7('0x2a')]};});_0x1c7d21[_0xf9f7('0x2b')]=_['map'](_0x48631b,_0xf9f7('0x25'));_0x1c7d21[_0xf9f7('0x2c')]=_[_0xf9f7('0x2d')](_0x1797cf['query']);_0x1c7d21[_0xf9f7('0x2e')]=_['intersection'](_0x1c7d21[_0xf9f7('0x2b')],_0x1c7d21['query']);_0x57ba7b[_0xf9f7('0x2f')]=_[_0xf9f7('0x30')](_0x1c7d21['model'],qs[_0xf9f7('0x31')](_0x1797cf[_0xf9f7('0x2c')][_0xf9f7('0x31')]));_0x57ba7b[_0xf9f7('0x2f')]=_0x57ba7b[_0xf9f7('0x2f')][_0xf9f7('0x32')]?_0x57ba7b[_0xf9f7('0x2f')]:_0x1c7d21[_0xf9f7('0x2b')];if(!_0x1797cf[_0xf9f7('0x2c')]['hasOwnProperty'](_0xf9f7('0x33'))){_0x57ba7b[_0xf9f7('0x1b')]=qs[_0xf9f7('0x1b')](_0x1797cf[_0xf9f7('0x2c')][_0xf9f7('0x1b')]);_0x57ba7b[_0xf9f7('0x19')]=qs['offset'](_0x1797cf[_0xf9f7('0x2c')][_0xf9f7('0x19')]);}_0x57ba7b[_0xf9f7('0x34')]=qs['sort'](_0x1797cf[_0xf9f7('0x2c')][_0xf9f7('0x35')]);_0x57ba7b['where']=qs['filters'](_[_0xf9f7('0x36')](_0x1797cf[_0xf9f7('0x2c')],_0x1c7d21['filters']),_0x48631b);if(_0x1797cf[_0xf9f7('0x2c')][_0xf9f7('0x37')]){_0x57ba7b[_0xf9f7('0x38')]=_[_0xf9f7('0x39')](_0x57ba7b['where'],{'$or':_[_0xf9f7('0x3a')](_0x48631b,function(_0x24baa6){if(_0x24baa6['type']!==_0xf9f7('0x3b')){var _0x44c03b={};_0x44c03b[_0x24baa6['name']]={'$like':'%'+_0x1797cf[_0xf9f7('0x2c')][_0xf9f7('0x37')]+'%'};return _0x44c03b;}})});}_0x57ba7b=_['merge']({},_0x57ba7b,_0x1797cf[_0xf9f7('0x3c')]);var _0x253b2c={'where':_0x57ba7b[_0xf9f7('0x38')]};return db[_0xf9f7('0x3d')][_0xf9f7('0x1c')](_0x253b2c)[_0xf9f7('0x21')](function(_0x409c34){_0x120857[_0xf9f7('0x1c')]=_0x409c34;if(_0x1797cf[_0xf9f7('0x2c')]['includeAll']){_0x57ba7b[_0xf9f7('0x3e')]=[{'all':!![]}];}return db['SquareRecording'][_0xf9f7('0x3f')](_0x57ba7b);})[_0xf9f7('0x21')](function(_0x451785){_0x120857['rows']=_0x451785;return _0x120857;})['then'](respondWithFilteredResult(_0x498ee4,_0x57ba7b))[_0xf9f7('0x40')](handleError(_0x498ee4,null));};exports[_0xf9f7('0x41')]=function(_0xaddf32,_0x1bf6bc){var _0x42d60a={'raw':!![],'where':{'id':_0xaddf32[_0xf9f7('0x42')]['id']}},_0x4e83d4={};_0x4e83d4['model']=_[_0xf9f7('0x2d')](db[_0xf9f7('0x3d')][_0xf9f7('0x43')]);_0x4e83d4['query']=_[_0xf9f7('0x2d')](_0xaddf32['query']);_0x4e83d4['filters']=_[_0xf9f7('0x30')](_0x4e83d4[_0xf9f7('0x2b')],_0x4e83d4[_0xf9f7('0x2c')]);_0x42d60a['attributes']=_[_0xf9f7('0x30')](_0x4e83d4[_0xf9f7('0x2b')],qs[_0xf9f7('0x31')](_0xaddf32['query'][_0xf9f7('0x31')]));_0x42d60a[_0xf9f7('0x2f')]=_0x42d60a['attributes'][_0xf9f7('0x32')]?_0x42d60a['attributes']:_0x4e83d4[_0xf9f7('0x2b')];if(_0xaddf32[_0xf9f7('0x2c')][_0xf9f7('0x44')]){_0x42d60a[_0xf9f7('0x3e')]=[{'all':!![]}];}_0x42d60a=_['merge']({},_0x42d60a,_0xaddf32[_0xf9f7('0x3c')]);return db['SquareRecording'][_0xf9f7('0x45')](_0x42d60a)['then'](handleEntityNotFound(_0x1bf6bc,null))['then'](respondWithResult(_0x1bf6bc,null))['catch'](handleError(_0x1bf6bc,null));};exports[_0xf9f7('0x46')]=function(_0x46299a,_0x35c425){return db[_0xf9f7('0x3d')]['create'](_0x46299a[_0xf9f7('0x47')],{})[_0xf9f7('0x21')](respondWithResult(_0x35c425,0xc9))[_0xf9f7('0x40')](handleError(_0x35c425,null));};exports[_0xf9f7('0x1f')]=function(_0x280f47,_0x42f344){if(_0x280f47[_0xf9f7('0x47')]['id']){delete _0x280f47[_0xf9f7('0x47')]['id'];}return db['SquareRecording'][_0xf9f7('0x45')]({'where':{'id':_0x280f47[_0xf9f7('0x42')]['id']}})[_0xf9f7('0x21')](handleEntityNotFound(_0x42f344,null))[_0xf9f7('0x21')](saveUpdates(_0x280f47[_0xf9f7('0x47')],null))[_0xf9f7('0x21')](respondWithResult(_0x42f344,null))[_0xf9f7('0x40')](handleError(_0x42f344,null));};exports[_0xf9f7('0x48')]=function(_0x52858e,_0x3d0fe0,_0x9a19c8){var _0x142f5d=require(_0xf9f7('0x49'));var _0x129588=![];var _0x390c41={};if(_0x52858e[_0xf9f7('0x2c')]['type']&&_0x52858e[_0xf9f7('0x2c')][_0xf9f7('0x29')]==='uniqueid'){_0x390c41[_0xf9f7('0x4a')]=_0x52858e['params']['id'];}else{_0x390c41['id']=_0x52858e['params']['id'];}return db[_0xf9f7('0x3d')]['find']({'where':_0x390c41,'attributes':['id',_0xf9f7('0x4b'),_0xf9f7('0x4c')],'raw':!![]})['then'](handleEntityNotFound(_0x3d0fe0,null))[_0xf9f7('0x21')](function(_0x3847f7){if(_0x3847f7){var _0x10705f=_0x3847f7[_0xf9f7('0x4b')];var _0x392e34=util['format'](_0xf9f7('0x4d'),_0x10705f);if(fs['existsSync'](_0x392e34)){_0x129588=!![];return _0x142f5d['decryptFile'](_0x392e34,_0x10705f,config[_0xf9f7('0x4e')][_0xf9f7('0x4f')])[_0xf9f7('0x21')](function(){return _0x3847f7;});}return _0x3847f7;}})[_0xf9f7('0x21')](function(_0x3715b6){if(_0x3715b6){var _0x36cf7a=_0x3715b6[_0xf9f7('0x4b')];if(!fs[_0xf9f7('0x50')](_0x36cf7a)){throw new db[(_0xf9f7('0x51'))][(_0xf9f7('0x52'))](_0xf9f7('0x53'));}if(_0x3715b6[_0xf9f7('0x4c')]){return _0x3d0fe0[_0xf9f7('0x48')](_0x36cf7a,_0x3715b6['filename']+path[_0xf9f7('0x54')](_0x36cf7a),function(){if(_0x129588){fs[_0xf9f7('0x55')](_0x36cf7a);}});}else{return _0x3d0fe0[_0xf9f7('0x48')](_0x36cf7a,function(_0x50f977){if(_0x129588){fs[_0xf9f7('0x55')](_0x36cf7a);}});}}})[_0xf9f7('0x40')](function(_0x3749ec){if(_0x3749ec[_0xf9f7('0x56')]==='SquareRecording\x20not\x20found'){_0x3d0fe0['status'](0x194)[_0xf9f7('0x26')](_0xf9f7('0x57'));}else{return handleError(_0x3d0fe0,null);}});};exports[_0xf9f7('0x20')]=function(_0x585483,_0x2017a5){return db['SquareRecording'][_0xf9f7('0x45')]({'where':{'id':_0x585483[_0xf9f7('0x42')]['id']}})[_0xf9f7('0x21')](function(_0x3e66f2){if(_['isNil'](_0x3e66f2)){throw new ReferenceError(_0xf9f7('0x58'));}return _0x3e66f2;})[_0xf9f7('0x21')](function(_0x552a3f){var _0x5df067=_0x552a3f[_0xf9f7('0x4b')];logger['info'](_0xf9f7('0x59'),_0x5df067);if(!_[_0xf9f7('0x5a')](_0x552a3f[_0xf9f7('0x4b')])&&fs['existsSync'](_0x5df067)){logger[_0xf9f7('0x5b')](_0xf9f7('0x5c')+_0x5df067+_0xf9f7('0x5d'));fs[_0xf9f7('0x5e')](_0x5df067);}_0x5df067=_0x5df067+'.cypher';if(!_['isNil'](_0x552a3f[_0xf9f7('0x4b')])&&fs[_0xf9f7('0x50')](_0x5df067)){logger[_0xf9f7('0x5b')](_0xf9f7('0x5c')+_0x5df067+_0xf9f7('0x5d'));fs[_0xf9f7('0x5e')](_0x5df067);}return _0x552a3f;})['then'](function(_0x2e410b){if(!_0x2e410b)throw new InternalError();return _0x2e410b[_0xf9f7('0x20')]();})['then'](function(){_0x2017a5[_0xf9f7('0x17')](0xcc)[_0xf9f7('0x22')]();})[_0xf9f7('0x40')](handleError(_0x2017a5,null));};
\ No newline at end of file
index 3cee724..abc7412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7de=['define','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./squareRecording.attributes','exports'];(function(_0x528e75,_0x515f8d){var _0x23b5cd=function(_0x4c42fa){while(--_0x4c42fa){_0x528e75['push'](_0x528e75['shift']());}};_0x23b5cd(++_0x515f8d);}(_0xb7de,0xc7));var _0xeb7d=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0xb7de[_0x2b7764];return _0x848dcb;};'use strict';var _=require(_0xeb7d('0x0'));var util=require(_0xeb7d('0x1'));var logger=require(_0xeb7d('0x2'))('api');var moment=require(_0xeb7d('0x3'));var BPromise=require(_0xeb7d('0x4'));var rp=require(_0xeb7d('0x5'));var fs=require('fs');var path=require(_0xeb7d('0x6'));var rimraf=require(_0xeb7d('0x7'));var config=require('../../config/environment');var attributes=require(_0xeb7d('0x8'));module[_0xeb7d('0x9')]=function(_0xadf4,_0x433c32){return _0xadf4[_0xeb7d('0xa')]('SquareRecording',attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b47=['lodash','util','path','rimraf','../../config/environment','./squareRecording.attributes','exports','SquareRecording'];(function(_0x471af5,_0x1e4fa3){var _0x5a3394=function(_0x143fc3){while(--_0x143fc3){_0x471af5['push'](_0x471af5['shift']());}};_0x5a3394(++_0x1e4fa3);}(_0x5b47,0x120));var _0x75b4=function(_0xd5167c,_0x46ecaa){_0xd5167c=_0xd5167c-0x0;var _0x1b7b6c=_0x5b47[_0xd5167c];return _0x1b7b6c;};'use strict';var _=require(_0x75b4('0x0'));var util=require(_0x75b4('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(_0x75b4('0x2'));var rimraf=require(_0x75b4('0x3'));var config=require(_0x75b4('0x4'));var attributes=require(_0x75b4('0x5'));module[_0x75b4('0x6')]=function(_0x5f544a,_0x5ee223){return _0x5f544a['define'](_0x75b4('0x7'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d1aa2cc..69d8a65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b1c=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','CreateSquareRecording','SquareRecording','create','body','options','raw','catch','util'];(function(_0x3ba178,_0x56c443){var _0x1c051c=function(_0x5e1b3b){while(--_0x5e1b3b){_0x3ba178['push'](_0x3ba178['shift']());}};_0x1c051c(++_0x56c443);}(_0x8b1c,0x116));var _0xc8b1=function(_0x5f0501,_0x3b480d){_0x5f0501=_0x5f0501-0x0;var _0x53f052=_0x8b1c[_0x5f0501];return _0x53f052;};'use strict';var _=require('lodash');var util=require(_0xc8b1('0x0'));var moment=require(_0xc8b1('0x1'));var BPromise=require(_0xc8b1('0x2'));var rs=require(_0xc8b1('0x3'));var fs=require('fs');var Redis=require(_0xc8b1('0x4'));var db=require(_0xc8b1('0x5'))['db'];var utils=require(_0xc8b1('0x6'));var logger=require(_0xc8b1('0x7'))(_0xc8b1('0x8'));var config=require(_0xc8b1('0x9'));var jayson=require(_0xc8b1('0xa'));var client=jayson[_0xc8b1('0xb')][_0xc8b1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2c7dcf,_0x429ab7,_0x1a2cde){return new BPromise(function(_0x283ab2,_0x534517){return client[_0xc8b1('0xd')](_0x2c7dcf,_0x1a2cde)[_0xc8b1('0xe')](function(_0x2e22c7){logger['info'](_0xc8b1('0xf'),_0x429ab7,_0xc8b1('0x10'));logger[_0xc8b1('0x11')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x429ab7,_0xc8b1('0x10'),JSON[_0xc8b1('0x12')](_0x2e22c7));if(_0x2e22c7['error']){if(_0x2e22c7[_0xc8b1('0x13')][_0xc8b1('0x14')]===0x1f4){logger[_0xc8b1('0x13')](_0xc8b1('0xf'),_0x429ab7,_0x2e22c7[_0xc8b1('0x13')][_0xc8b1('0x15')]);return _0x534517(_0x2e22c7[_0xc8b1('0x13')]['message']);}logger[_0xc8b1('0x13')](_0xc8b1('0xf'),_0x429ab7,_0x2e22c7[_0xc8b1('0x13')]['message']);return _0x283ab2(_0x2e22c7['error'][_0xc8b1('0x15')]);}else{logger[_0xc8b1('0x16')](_0xc8b1('0xf'),_0x429ab7,_0xc8b1('0x10'));_0x283ab2(_0x2e22c7[_0xc8b1('0x17')][_0xc8b1('0x15')]);}})['catch'](function(_0x7df5c1){logger[_0xc8b1('0x13')]('SquareRecording,\x20%s,\x20%s',_0x429ab7,_0x7df5c1);_0x534517(_0x7df5c1);});});}exports[_0xc8b1('0x18')]=function(_0x673a58){var _0x23f6c7=this;return new Promise(function(_0x266292,_0x3fbf8c){return db[_0xc8b1('0x19')][_0xc8b1('0x1a')](_0x673a58[_0xc8b1('0x1b')],{'raw':_0x673a58['options']?_0x673a58[_0xc8b1('0x1c')][_0xc8b1('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x16cc0d){logger['info'](_0xc8b1('0x18'),_0x673a58);logger[_0xc8b1('0x11')](_0xc8b1('0x18'),_0x673a58,JSON[_0xc8b1('0x12')](_0x16cc0d));_0x266292(_0x16cc0d);})[_0xc8b1('0x1e')](function(_0x5335ce){logger[_0xc8b1('0x13')]('CreateSquareRecording',_0x5335ce[_0xc8b1('0x15')],_0x673a58);_0x3fbf8c(_0x23f6c7[_0xc8b1('0x13')](0x1f4,_0x5335ce[_0xc8b1('0x15')]));});});};
\ No newline at end of file
+var _0x206f=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','error','message','SquareRecording,\x20%s,\x20%s','result','catch','CreateSquareRecording','SquareRecording','create','body','options','raw','util','moment','bluebird','ioredis'];(function(_0x4fa166,_0x58b7fb){var _0x5dd974=function(_0x342886){while(--_0x342886){_0x4fa166['push'](_0x4fa166['shift']());}};_0x5dd974(++_0x58b7fb);}(_0x206f,0x1c7));var _0xf206=function(_0x2dfe6c,_0x255709){_0x2dfe6c=_0x2dfe6c-0x0;var _0x52cb46=_0x206f[_0x2dfe6c];return _0x52cb46;};'use strict';var _=require('lodash');var util=require(_0xf206('0x0'));var moment=require(_0xf206('0x1'));var BPromise=require(_0xf206('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf206('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf206('0x4'));var logger=require(_0xf206('0x5'))(_0xf206('0x6'));var config=require(_0xf206('0x7'));var jayson=require(_0xf206('0x8'));var client=jayson[_0xf206('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3cce1f,_0x1e14a7,_0x2549d7){return new BPromise(function(_0x16ed5f,_0x55ddec){return client[_0xf206('0xa')](_0x3cce1f,_0x2549d7)[_0xf206('0xb')](function(_0x3d3af3){logger[_0xf206('0xc')]('SquareRecording,\x20%s,\x20%s',_0x1e14a7,_0xf206('0xd'));logger[_0xf206('0xe')](_0xf206('0xf'),_0x1e14a7,_0xf206('0xd'),JSON['stringify'](_0x3d3af3));if(_0x3d3af3[_0xf206('0x10')]){if(_0x3d3af3[_0xf206('0x10')]['code']===0x1f4){logger[_0xf206('0x10')]('SquareRecording,\x20%s,\x20%s',_0x1e14a7,_0x3d3af3['error'][_0xf206('0x11')]);return _0x55ddec(_0x3d3af3[_0xf206('0x10')]['message']);}logger[_0xf206('0x10')](_0xf206('0x12'),_0x1e14a7,_0x3d3af3[_0xf206('0x10')][_0xf206('0x11')]);return _0x16ed5f(_0x3d3af3[_0xf206('0x10')][_0xf206('0x11')]);}else{logger['info'](_0xf206('0x12'),_0x1e14a7,_0xf206('0xd'));_0x16ed5f(_0x3d3af3[_0xf206('0x13')][_0xf206('0x11')]);}})[_0xf206('0x14')](function(_0x20c42d){logger[_0xf206('0x10')](_0xf206('0x12'),_0x1e14a7,_0x20c42d);_0x55ddec(_0x20c42d);});});}exports[_0xf206('0x15')]=function(_0x218ab8){var _0x564596=this;return new Promise(function(_0x3c4bd5,_0x216874){return db[_0xf206('0x16')][_0xf206('0x17')](_0x218ab8[_0xf206('0x18')],{'raw':_0x218ab8[_0xf206('0x19')]?_0x218ab8[_0xf206('0x19')][_0xf206('0x1a')]===undefined?!![]:![]:!![]})[_0xf206('0xb')](function(_0x5787a8){logger[_0xf206('0xc')]('CreateSquareRecording',_0x218ab8);logger[_0xf206('0xe')](_0xf206('0x15'),_0x218ab8,JSON['stringify'](_0x5787a8));_0x3c4bd5(_0x5787a8);})[_0xf206('0x14')](function(_0x5d83a8){logger['error'](_0xf206('0x15'),_0x5d83a8['message'],_0x218ab8);_0x216874(_0x564596[_0xf206('0x10')](0x1f4,_0x5d83a8[_0xf206('0x11')]));});});};
\ No newline at end of file
index 84c370d..e006c72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x26576e,_0x280304){var _0x314378=function(_0x33e06d){while(--_0x33e06d){_0x26576e['push'](_0x26576e['shift']());}};_0x314378(++_0x280304);}(_0xe706,0xa3));var _0x6e70=function(_0x125233,_0x522bf1){_0x125233=_0x125233-0x0;var _0x42d385=_0xe706[_0x125233];return _0x42d385;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _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(_0xa0a702,_0x2fb231){var _0x41f4d7=function(_0x5c9af5){while(--_0x5c9af5){_0xa0a702['push'](_0xa0a702['shift']());}};_0x41f4d7(++_0x2fb231);}(_0xe706,0xa3));var _0x6e70=function(_0x52a592,_0x2926b4){_0x52a592=_0x52a592-0x0;var _0x511e55=_0xe706[_0x52a592];return _0x511e55;};'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 80574ef..35098aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba8e=['sequelize','exports','STRING'];(function(_0x323c08,_0x44244c){var _0x4cdf67=function(_0x4cf833){while(--_0x4cf833){_0x323c08['push'](_0x323c08['shift']());}};_0x4cdf67(++_0x44244c);}(_0xba8e,0x141));var _0xeba8=function(_0x30780e,_0x537b34){_0x30780e=_0x30780e-0x0;var _0x5b9129=_0xba8e[_0x30780e];return _0x5b9129;};'use strict';var Sequelize=require(_0xeba8('0x0'));module[_0xeba8('0x1')]={'network':{'type':Sequelize[_0xeba8('0x2')]},'network_script':{'type':Sequelize[_0xeba8('0x2')]},'request':{'type':Sequelize[_0xeba8('0x2')]},'channel':{'type':Sequelize[_0xeba8('0x2')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xeba8('0x2')]},'version':{'type':Sequelize[_0xeba8('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xeba8('0x2')]},'callingpres':{'type':Sequelize[_0xeba8('0x2')]},'callingani2':{'type':Sequelize[_0xeba8('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0xeba8('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0xeba8('0x2')]},'context':{'type':Sequelize[_0xeba8('0x2')]},'extension':{'type':Sequelize[_0xeba8('0x2')]},'priority':{'type':Sequelize[_0xeba8('0x2')]},'enhanced':{'type':Sequelize[_0xeba8('0x2')]},'accountcode':{'type':Sequelize[_0xeba8('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0xeba8('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x2061=['STRING','DATE','BOOLEAN','sequelize','exports'];(function(_0x15cbce,_0xda8402){var _0x257f29=function(_0x388132){while(--_0x388132){_0x15cbce['push'](_0x15cbce['shift']());}};_0x257f29(++_0xda8402);}(_0x2061,0x148));var _0x1206=function(_0x942830,_0x2982eb){_0x942830=_0x942830-0x0;var _0x301730=_0x2061[_0x942830];return _0x301730;};'use strict';var Sequelize=require(_0x1206('0x0'));module[_0x1206('0x1')]={'network':{'type':Sequelize[_0x1206('0x2')]},'network_script':{'type':Sequelize[_0x1206('0x2')]},'request':{'type':Sequelize[_0x1206('0x2')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x1206('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x1206('0x2')]},'version':{'type':Sequelize[_0x1206('0x2')]},'callerid':{'type':Sequelize[_0x1206('0x2')]},'calleridname':{'type':Sequelize[_0x1206('0x2')]},'callingpres':{'type':Sequelize[_0x1206('0x2')]},'callingani2':{'type':Sequelize[_0x1206('0x2')]},'callington':{'type':Sequelize[_0x1206('0x2')]},'callingtns':{'type':Sequelize[_0x1206('0x2')]},'dnid':{'type':Sequelize[_0x1206('0x2')]},'rdnis':{'type':Sequelize[_0x1206('0x2')]},'context':{'type':Sequelize[_0x1206('0x2')]},'extension':{'type':Sequelize[_0x1206('0x2')]},'priority':{'type':Sequelize[_0x1206('0x2')]},'enhanced':{'type':Sequelize[_0x1206('0x2')]},'accountcode':{'type':Sequelize[_0x1206('0x2')]},'threadid':{'type':Sequelize[_0x1206('0x2')]},'project_name':{'type':Sequelize[_0x1206('0x2')]},'joinAt':{'type':Sequelize[_0x1206('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x1206('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 50fffc3..fdbe9fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3141=['hasOwnProperty','nolimit','sort','where','merge','type','VIRTUAL','filter','options','includeAll','catch','params','keys','intersection','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','SquareReport','rawAttributes','fieldName','key','model','query','filters','fields','attributes','length'];(function(_0xb31a70,_0x262590){var _0x18119c=function(_0x13ae90){while(--_0x13ae90){_0xb31a70['push'](_0xb31a70['shift']());}};_0x18119c(++_0x262590);}(_0x3141,0xaf));var _0x1314=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x3141[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require(_0x1314('0x0'));var rimraf=require(_0x1314('0x1'));var zipdir=require(_0x1314('0x2'));var jsonpatch=require(_0x1314('0x3'));var rp=require(_0x1314('0x4'));var moment=require(_0x1314('0x5'));var BPromise=require(_0x1314('0x6'));var Mustache=require(_0x1314('0x7'));var util=require('util');var path=require(_0x1314('0x8'));var sox=require(_0x1314('0x9'));var csv=require('to-csv');var ejs=require(_0x1314('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1314('0xb'));var squel=require(_0x1314('0xc'));var crypto=require(_0x1314('0xd'));var jsforce=require(_0x1314('0xe'));var deskjs=require(_0x1314('0xf'));var toCsv=require(_0x1314('0x10'));var querystring=require(_0x1314('0x11'));var Papa=require(_0x1314('0x12'));var Redis=require(_0x1314('0x13'));var authService=require(_0x1314('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x1314('0x15'));var hardwareService=require(_0x1314('0x16'));var logger=require(_0x1314('0x17'))(_0x1314('0x18'));var utils=require(_0x1314('0x19'));var config=require(_0x1314('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x1314('0x1b'))['db'];function respondWithStatusCode(_0x437a37,_0x5cb498){_0x5cb498=_0x5cb498||0xcc;return function(_0x106ee0){if(_0x106ee0){return _0x437a37['sendStatus'](_0x5cb498);}return _0x437a37[_0x1314('0x1c')](_0x5cb498)[_0x1314('0x1d')]();};}function respondWithResult(_0x3f962a,_0x39827b){_0x39827b=_0x39827b||0xc8;return function(_0x4c49ba){if(_0x4c49ba){return _0x3f962a[_0x1314('0x1c')](_0x39827b)[_0x1314('0x1e')](_0x4c49ba);}};}function respondWithFilteredResult(_0x41ddb8,_0x18f3b3){return function(_0x897a38){if(_0x897a38){var _0x54f8c7=typeof _0x18f3b3[_0x1314('0x1f')]===_0x1314('0x20')&&typeof _0x18f3b3[_0x1314('0x21')]===_0x1314('0x20');var _0x32a2c7=_0x897a38[_0x1314('0x22')];var _0x1b986a=_0x54f8c7?0x0:_0x18f3b3[_0x1314('0x1f')];var _0x45d7ae=_0x54f8c7?_0x897a38['count']:_0x18f3b3[_0x1314('0x1f')]+_0x18f3b3[_0x1314('0x21')];var _0x1da8e5;if(_0x45d7ae>=_0x32a2c7){_0x45d7ae=_0x32a2c7;_0x1da8e5=0xc8;}else{_0x1da8e5=0xce;}_0x41ddb8['status'](_0x1da8e5);return _0x41ddb8[_0x1314('0x23')](_0x1314('0x24'),_0x1b986a+'-'+_0x45d7ae+'/'+_0x32a2c7)[_0x1314('0x1e')](_0x897a38);}return null;};}function patchUpdates(_0x172fb1){return function(_0x3fb36c){try{jsonpatch[_0x1314('0x25')](_0x3fb36c,_0x172fb1,!![]);}catch(_0x3277c9){return BPromise[_0x1314('0x26')](_0x3277c9);}return _0x3fb36c[_0x1314('0x27')]();};}function saveUpdates(_0x597cbb,_0x4bf8e5){return function(_0x4ff541){if(_0x4ff541){return _0x4ff541[_0x1314('0x28')](_0x597cbb)[_0x1314('0x29')](function(_0x2d0f27){return _0x2d0f27;});}return null;};}function removeEntity(_0x35dcad,_0x327eef){return function(_0x5a7f4d){if(_0x5a7f4d){return _0x5a7f4d[_0x1314('0x2a')]()[_0x1314('0x29')](function(){_0x35dcad[_0x1314('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5975a4,_0x5fb166){return function(_0x2229c4){if(!_0x2229c4){_0x5975a4[_0x1314('0x2b')](0x194);}return _0x2229c4;};}function handleError(_0x9f45b1,_0x567525){_0x567525=_0x567525||0x1f4;return function(_0x51ec7f){logger[_0x1314('0x2c')](_0x51ec7f[_0x1314('0x2d')]);if(_0x51ec7f[_0x1314('0x2e')]){delete _0x51ec7f['name'];}_0x9f45b1[_0x1314('0x1c')](_0x567525)[_0x1314('0x2f')](_0x51ec7f);};}exports['index']=function(_0x2f61b5,_0x4a9a7b){var _0xb0e1f5={},_0x5bc9d8={},_0x5ed2da={'count':0x0,'rows':[]};var _0x1bb31c=_[_0x1314('0x30')](db[_0x1314('0x31')][_0x1314('0x32')],function(_0x34a554){return{'name':_0x34a554[_0x1314('0x33')],'type':_0x34a554['type'][_0x1314('0x34')]};});_0x5bc9d8[_0x1314('0x35')]=_[_0x1314('0x30')](_0x1bb31c,_0x1314('0x2e'));_0x5bc9d8['query']=_['keys'](_0x2f61b5[_0x1314('0x36')]);_0x5bc9d8[_0x1314('0x37')]=_['intersection'](_0x5bc9d8[_0x1314('0x35')],_0x5bc9d8[_0x1314('0x36')]);_0xb0e1f5['attributes']=_['intersection'](_0x5bc9d8['model'],qs[_0x1314('0x38')](_0x2f61b5['query'][_0x1314('0x38')]));_0xb0e1f5[_0x1314('0x39')]=_0xb0e1f5[_0x1314('0x39')][_0x1314('0x3a')]?_0xb0e1f5[_0x1314('0x39')]:_0x5bc9d8[_0x1314('0x35')];if(!_0x2f61b5[_0x1314('0x36')][_0x1314('0x3b')](_0x1314('0x3c'))){_0xb0e1f5[_0x1314('0x21')]=qs[_0x1314('0x21')](_0x2f61b5['query'][_0x1314('0x21')]);_0xb0e1f5[_0x1314('0x1f')]=qs[_0x1314('0x1f')](_0x2f61b5[_0x1314('0x36')]['offset']);}_0xb0e1f5['order']=qs[_0x1314('0x3d')](_0x2f61b5[_0x1314('0x36')]['sort']);_0xb0e1f5[_0x1314('0x3e')]=qs[_0x1314('0x37')](_['pick'](_0x2f61b5[_0x1314('0x36')],_0x5bc9d8['filters']),_0x1bb31c);if(_0x2f61b5[_0x1314('0x36')]['filter']){_0xb0e1f5[_0x1314('0x3e')]=_[_0x1314('0x3f')](_0xb0e1f5['where'],{'$or':_[_0x1314('0x30')](_0x1bb31c,function(_0x37803a){if(_0x37803a[_0x1314('0x40')]!==_0x1314('0x41')){var _0x2d5c8a={};_0x2d5c8a[_0x37803a[_0x1314('0x2e')]]={'$like':'%'+_0x2f61b5['query'][_0x1314('0x42')]+'%'};return _0x2d5c8a;}})});}_0xb0e1f5=_[_0x1314('0x3f')]({},_0xb0e1f5,_0x2f61b5[_0x1314('0x43')]);var _0x27e7b3={'where':_0xb0e1f5[_0x1314('0x3e')]};return db['SquareReport'][_0x1314('0x22')](_0x27e7b3)['then'](function(_0xe416e6){_0x5ed2da['count']=_0xe416e6;if(_0x2f61b5[_0x1314('0x36')][_0x1314('0x44')]){_0xb0e1f5['include']=[{'all':!![]}];}return db[_0x1314('0x31')]['findAll'](_0xb0e1f5);})['then'](function(_0x544079){_0x5ed2da['rows']=_0x544079;return _0x5ed2da;})['then'](respondWithFilteredResult(_0x4a9a7b,_0xb0e1f5))[_0x1314('0x45')](handleError(_0x4a9a7b,null));};exports['show']=function(_0x4f0c81,_0x59c9f7){var _0x5220bc={'raw':!![],'where':{'id':_0x4f0c81[_0x1314('0x46')]['id']}},_0xd22cc7={};_0xd22cc7['model']=_[_0x1314('0x47')](db[_0x1314('0x31')][_0x1314('0x32')]);_0xd22cc7[_0x1314('0x36')]=_[_0x1314('0x47')](_0x4f0c81[_0x1314('0x36')]);_0xd22cc7[_0x1314('0x37')]=_[_0x1314('0x48')](_0xd22cc7[_0x1314('0x35')],_0xd22cc7['query']);_0x5220bc['attributes']=_[_0x1314('0x48')](_0xd22cc7[_0x1314('0x35')],qs[_0x1314('0x38')](_0x4f0c81[_0x1314('0x36')]['fields']));_0x5220bc[_0x1314('0x39')]=_0x5220bc[_0x1314('0x39')][_0x1314('0x3a')]?_0x5220bc[_0x1314('0x39')]:_0xd22cc7[_0x1314('0x35')];if(_0x4f0c81[_0x1314('0x36')][_0x1314('0x44')]){_0x5220bc[_0x1314('0x49')]=[{'all':!![]}];}_0x5220bc=_[_0x1314('0x3f')]({},_0x5220bc,_0x4f0c81[_0x1314('0x43')]);return db[_0x1314('0x31')][_0x1314('0x4a')](_0x5220bc)[_0x1314('0x29')](handleEntityNotFound(_0x59c9f7,null))[_0x1314('0x29')](respondWithResult(_0x59c9f7,null))[_0x1314('0x45')](handleError(_0x59c9f7,null));};exports[_0x1314('0x4b')]=function(_0x57684c,_0x3382a8){return db[_0x1314('0x31')][_0x1314('0x4b')](_0x57684c[_0x1314('0x4c')],{})[_0x1314('0x29')](respondWithResult(_0x3382a8,0xc9))[_0x1314('0x45')](handleError(_0x3382a8,null));};exports[_0x1314('0x28')]=function(_0x6b9d30,_0x34618a){if(_0x6b9d30[_0x1314('0x4c')]['id']){delete _0x6b9d30[_0x1314('0x4c')]['id'];}return db[_0x1314('0x31')][_0x1314('0x4a')]({'where':{'id':_0x6b9d30['params']['id']}})['then'](handleEntityNotFound(_0x34618a,null))['then'](saveUpdates(_0x6b9d30[_0x1314('0x4c')],null))[_0x1314('0x29')](respondWithResult(_0x34618a,null))[_0x1314('0x45')](handleError(_0x34618a,null));};exports[_0x1314('0x2a')]=function(_0xa20b34,_0x326187){return db[_0x1314('0x31')][_0x1314('0x4a')]({'where':{'id':_0xa20b34[_0x1314('0x46')]['id']}})[_0x1314('0x29')](handleEntityNotFound(_0x326187,null))['then'](removeEntity(_0x326187,null))[_0x1314('0x45')](handleError(_0x326187,null));};exports[_0x1314('0x4d')]=function(_0x58812c,_0x391796){return db['SquareReport'][_0x1314('0x4d')]()[_0x1314('0x29')](respondWithResult(_0x391796,null))[_0x1314('0x45')](handleError(_0x391796,null));};
\ No newline at end of file
+var _0xe11b=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','sendStatus','error','stack','name','send','index','SquareReport','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','find','create','body','params','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../mysqldb','status'];(function(_0x570c8a,_0x4a11cc){var _0x25dc12=function(_0x4585d9){while(--_0x4585d9){_0x570c8a['push'](_0x570c8a['shift']());}};_0x25dc12(++_0x4a11cc);}(_0xe11b,0x168));var _0xbe11=function(_0x204ddd,_0x31c49a){_0x204ddd=_0x204ddd-0x0;var _0x5adaee=_0xe11b[_0x204ddd];return _0x5adaee;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbe11('0x0'));var zipdir=require(_0xbe11('0x1'));var jsonpatch=require(_0xbe11('0x2'));var rp=require(_0xbe11('0x3'));var moment=require(_0xbe11('0x4'));var BPromise=require(_0xbe11('0x5'));var Mustache=require(_0xbe11('0x6'));var util=require(_0xbe11('0x7'));var path=require(_0xbe11('0x8'));var sox=require('sox');var csv=require(_0xbe11('0x9'));var ejs=require(_0xbe11('0xa'));var fs=require('fs');var fs_extra=require(_0xbe11('0xb'));var _=require(_0xbe11('0xc'));var squel=require(_0xbe11('0xd'));var crypto=require(_0xbe11('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xbe11('0xf'));var toCsv=require(_0xbe11('0x9'));var querystring=require(_0xbe11('0x10'));var Papa=require(_0xbe11('0x11'));var Redis=require(_0xbe11('0x12'));var authService=require(_0xbe11('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbe11('0x14'))(_0xbe11('0x15'));var utils=require(_0xbe11('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbe11('0x17'))['db'];function respondWithStatusCode(_0x549190,_0x4dd00d){_0x4dd00d=_0x4dd00d||0xcc;return function(_0x2c861e){if(_0x2c861e){return _0x549190['sendStatus'](_0x4dd00d);}return _0x549190[_0xbe11('0x18')](_0x4dd00d)['end']();};}function respondWithResult(_0x58b9c7,_0x2a17cd){_0x2a17cd=_0x2a17cd||0xc8;return function(_0x5d011c){if(_0x5d011c){return _0x58b9c7[_0xbe11('0x18')](_0x2a17cd)['json'](_0x5d011c);}};}function respondWithFilteredResult(_0x1d08b4,_0x3d43cd){return function(_0x4cefd4){if(_0x4cefd4){var _0x3265f2=typeof _0x3d43cd[_0xbe11('0x19')]===_0xbe11('0x1a')&&typeof _0x3d43cd[_0xbe11('0x1b')]==='undefined';var _0xab26e4=_0x4cefd4[_0xbe11('0x1c')];var _0x3a24ef=_0x3265f2?0x0:_0x3d43cd[_0xbe11('0x19')];var _0x4b36ba=_0x3265f2?_0x4cefd4[_0xbe11('0x1c')]:_0x3d43cd['offset']+_0x3d43cd['limit'];var _0x1d2917;if(_0x4b36ba>=_0xab26e4){_0x4b36ba=_0xab26e4;_0x1d2917=0xc8;}else{_0x1d2917=0xce;}_0x1d08b4[_0xbe11('0x18')](_0x1d2917);return _0x1d08b4[_0xbe11('0x1d')](_0xbe11('0x1e'),_0x3a24ef+'-'+_0x4b36ba+'/'+_0xab26e4)['json'](_0x4cefd4);}return null;};}function patchUpdates(_0x39c524){return function(_0x699ad1){try{jsonpatch[_0xbe11('0x1f')](_0x699ad1,_0x39c524,!![]);}catch(_0x3cc921){return BPromise[_0xbe11('0x20')](_0x3cc921);}return _0x699ad1[_0xbe11('0x21')]();};}function saveUpdates(_0x489be8,_0x4fcfdc){return function(_0x1c6253){if(_0x1c6253){return _0x1c6253[_0xbe11('0x22')](_0x489be8)['then'](function(_0x6da218){return _0x6da218;});}return null;};}function removeEntity(_0x355971,_0x343d6a){return function(_0x1125e3){if(_0x1125e3){return _0x1125e3['destroy']()[_0xbe11('0x23')](function(){_0x355971[_0xbe11('0x18')](0xcc)[_0xbe11('0x24')]();});}};}function handleEntityNotFound(_0x62ceb1,_0x3e21bf){return function(_0x663629){if(!_0x663629){_0x62ceb1[_0xbe11('0x25')](0x194);}return _0x663629;};}function handleError(_0x2b9c66,_0x205413){_0x205413=_0x205413||0x1f4;return function(_0x1f9547){logger[_0xbe11('0x26')](_0x1f9547[_0xbe11('0x27')]);if(_0x1f9547[_0xbe11('0x28')]){delete _0x1f9547[_0xbe11('0x28')];}_0x2b9c66[_0xbe11('0x18')](_0x205413)[_0xbe11('0x29')](_0x1f9547);};}exports[_0xbe11('0x2a')]=function(_0x206151,_0x156338){var _0x32c155={},_0x224605={},_0x5cd15a={'count':0x0,'rows':[]};var _0x4365f9=_['map'](db[_0xbe11('0x2b')]['rawAttributes'],function(_0x1b6491){return{'name':_0x1b6491[_0xbe11('0x2c')],'type':_0x1b6491[_0xbe11('0x2d')][_0xbe11('0x2e')]};});_0x224605[_0xbe11('0x2f')]=_[_0xbe11('0x30')](_0x4365f9,_0xbe11('0x28'));_0x224605[_0xbe11('0x31')]=_['keys'](_0x206151[_0xbe11('0x31')]);_0x224605[_0xbe11('0x32')]=_[_0xbe11('0x33')](_0x224605[_0xbe11('0x2f')],_0x224605['query']);_0x32c155[_0xbe11('0x34')]=_[_0xbe11('0x33')](_0x224605['model'],qs[_0xbe11('0x35')](_0x206151[_0xbe11('0x31')]['fields']));_0x32c155[_0xbe11('0x34')]=_0x32c155['attributes'][_0xbe11('0x36')]?_0x32c155['attributes']:_0x224605[_0xbe11('0x2f')];if(!_0x206151['query'][_0xbe11('0x37')]('nolimit')){_0x32c155['limit']=qs[_0xbe11('0x1b')](_0x206151[_0xbe11('0x31')][_0xbe11('0x1b')]);_0x32c155[_0xbe11('0x19')]=qs[_0xbe11('0x19')](_0x206151[_0xbe11('0x31')][_0xbe11('0x19')]);}_0x32c155['order']=qs[_0xbe11('0x38')](_0x206151[_0xbe11('0x31')][_0xbe11('0x38')]);_0x32c155[_0xbe11('0x39')]=qs[_0xbe11('0x32')](_[_0xbe11('0x3a')](_0x206151[_0xbe11('0x31')],_0x224605['filters']),_0x4365f9);if(_0x206151[_0xbe11('0x31')][_0xbe11('0x3b')]){_0x32c155[_0xbe11('0x39')]=_[_0xbe11('0x3c')](_0x32c155['where'],{'$or':_[_0xbe11('0x30')](_0x4365f9,function(_0x4a33c6){if(_0x4a33c6[_0xbe11('0x2d')]!==_0xbe11('0x3d')){var _0x41399c={};_0x41399c[_0x4a33c6['name']]={'$like':'%'+_0x206151[_0xbe11('0x31')][_0xbe11('0x3b')]+'%'};return _0x41399c;}})});}_0x32c155=_[_0xbe11('0x3c')]({},_0x32c155,_0x206151[_0xbe11('0x3e')]);var _0x2ed8a8={'where':_0x32c155[_0xbe11('0x39')]};return db['SquareReport']['count'](_0x2ed8a8)[_0xbe11('0x23')](function(_0x3908b1){_0x5cd15a[_0xbe11('0x1c')]=_0x3908b1;if(_0x206151[_0xbe11('0x31')][_0xbe11('0x3f')]){_0x32c155[_0xbe11('0x40')]=[{'all':!![]}];}return db[_0xbe11('0x2b')][_0xbe11('0x41')](_0x32c155);})[_0xbe11('0x23')](function(_0x2a2df7){_0x5cd15a[_0xbe11('0x42')]=_0x2a2df7;return _0x5cd15a;})[_0xbe11('0x23')](respondWithFilteredResult(_0x156338,_0x32c155))[_0xbe11('0x43')](handleError(_0x156338,null));};exports[_0xbe11('0x44')]=function(_0x451ab3,_0x3ed9c3){var _0x2fcb9a={'raw':!![],'where':{'id':_0x451ab3['params']['id']}},_0x3d2bff={};_0x3d2bff[_0xbe11('0x2f')]=_[_0xbe11('0x45')](db[_0xbe11('0x2b')][_0xbe11('0x46')]);_0x3d2bff[_0xbe11('0x31')]=_[_0xbe11('0x45')](_0x451ab3[_0xbe11('0x31')]);_0x3d2bff[_0xbe11('0x32')]=_[_0xbe11('0x33')](_0x3d2bff[_0xbe11('0x2f')],_0x3d2bff[_0xbe11('0x31')]);_0x2fcb9a[_0xbe11('0x34')]=_['intersection'](_0x3d2bff['model'],qs['fields'](_0x451ab3[_0xbe11('0x31')][_0xbe11('0x35')]));_0x2fcb9a[_0xbe11('0x34')]=_0x2fcb9a[_0xbe11('0x34')][_0xbe11('0x36')]?_0x2fcb9a['attributes']:_0x3d2bff['model'];if(_0x451ab3[_0xbe11('0x31')][_0xbe11('0x3f')]){_0x2fcb9a[_0xbe11('0x40')]=[{'all':!![]}];}_0x2fcb9a=_[_0xbe11('0x3c')]({},_0x2fcb9a,_0x451ab3[_0xbe11('0x3e')]);return db[_0xbe11('0x2b')][_0xbe11('0x47')](_0x2fcb9a)[_0xbe11('0x23')](handleEntityNotFound(_0x3ed9c3,null))['then'](respondWithResult(_0x3ed9c3,null))[_0xbe11('0x43')](handleError(_0x3ed9c3,null));};exports[_0xbe11('0x48')]=function(_0x4fe559,_0x1593de){return db[_0xbe11('0x2b')][_0xbe11('0x48')](_0x4fe559[_0xbe11('0x49')],{})[_0xbe11('0x23')](respondWithResult(_0x1593de,0xc9))['catch'](handleError(_0x1593de,null));};exports['update']=function(_0x48759a,_0x1342a6){if(_0x48759a[_0xbe11('0x49')]['id']){delete _0x48759a['body']['id'];}return db[_0xbe11('0x2b')][_0xbe11('0x47')]({'where':{'id':_0x48759a[_0xbe11('0x4a')]['id']}})[_0xbe11('0x23')](handleEntityNotFound(_0x1342a6,null))[_0xbe11('0x23')](saveUpdates(_0x48759a[_0xbe11('0x49')],null))['then'](respondWithResult(_0x1342a6,null))['catch'](handleError(_0x1342a6,null));};exports[_0xbe11('0x4b')]=function(_0x469247,_0x257ead){return db['SquareReport'][_0xbe11('0x47')]({'where':{'id':_0x469247[_0xbe11('0x4a')]['id']}})[_0xbe11('0x23')](handleEntityNotFound(_0x257ead,null))['then'](removeEntity(_0x257ead,null))[_0xbe11('0x43')](handleError(_0x257ead,null));};exports[_0xbe11('0x4c')]=function(_0x10c6da,_0x465233){return db[_0xbe11('0x2b')][_0xbe11('0x4c')]()[_0xbe11('0x23')](respondWithResult(_0x465233,null))[_0xbe11('0x43')](handleError(_0x465233,null));};
\ No newline at end of file
index 8dea700..809e026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d18=['request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','project_name','lodash','util','../../config/logger','api','moment'];(function(_0x44b7d5,_0x43338a){var _0x54fd1b=function(_0x2b5433){while(--_0x2b5433){_0x44b7d5['push'](_0x44b7d5['shift']());}};_0x54fd1b(++_0x43338a);}(_0x5d18,0x1bb));var _0x85d1=function(_0x56e4a7,_0x4337b4){_0x56e4a7=_0x56e4a7-0x0;var _0xb3db8d=_0x5d18[_0x56e4a7];return _0xb3db8d;};'use strict';var _=require(_0x85d1('0x0'));var util=require(_0x85d1('0x1'));var logger=require(_0x85d1('0x2'))(_0x85d1('0x3'));var moment=require(_0x85d1('0x4'));var BPromise=require('bluebird');var rp=require(_0x85d1('0x5'));var fs=require('fs');var path=require(_0x85d1('0x6'));var rimraf=require(_0x85d1('0x7'));var config=require(_0x85d1('0x8'));var attributes=require(_0x85d1('0x9'));module[_0x85d1('0xa')]=function(_0x57fd4b,_0x52ed3c){return _0x57fd4b[_0x85d1('0xb')](_0x85d1('0xc'),attributes,{'tableName':_0x85d1('0xd'),'paranoid':![],'indexes':[{'name':_0x85d1('0xe'),'fields':['uniqueid',_0x85d1('0xf')]},{'name':'leaveAt','fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7962=['bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api','moment'];(function(_0x4d0629,_0x238445){var _0x82603c=function(_0x5062ba){while(--_0x5062ba){_0x4d0629['push'](_0x4d0629['shift']());}};_0x82603c(++_0x238445);}(_0x7962,0x18a));var _0x2796=function(_0x45bad9,_0x46ef93){_0x45bad9=_0x45bad9-0x0;var _0x22801d=_0x7962[_0x45bad9];return _0x22801d;};'use strict';var _=require(_0x2796('0x0'));var util=require(_0x2796('0x1'));var logger=require(_0x2796('0x2'))(_0x2796('0x3'));var moment=require(_0x2796('0x4'));var BPromise=require(_0x2796('0x5'));var rp=require(_0x2796('0x6'));var fs=require('fs');var path=require(_0x2796('0x7'));var rimraf=require(_0x2796('0x8'));var config=require(_0x2796('0x9'));var attributes=require(_0x2796('0xa'));module[_0x2796('0xb')]=function(_0x2a916d,_0x4ef9b9){return _0x2a916d[_0x2796('0xc')](_0x2796('0xd'),attributes,{'tableName':_0x2796('0xe'),'paranoid':![],'indexes':[{'name':_0x2796('0xf'),'fields':[_0x2796('0x10'),_0x2796('0x11')]},{'name':_0x2796('0x12'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index 307d1ad..7d60486 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfef=['jayson/promise','client','http','request','then','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','error','message','info','result','CreateSquareReport','body','options','stringify','catch','UpdateSquareReport','SquareReport','update','raw','where','attributes','limit','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x15dc98,_0x3217fa){var _0x1d3dc1=function(_0x310538){while(--_0x310538){_0x15dc98['push'](_0x15dc98['shift']());}};_0x1d3dc1(++_0x3217fa);}(_0xdfef,0x139));var _0xfdfe=function(_0x50f04a,_0x3c3a17){_0x50f04a=_0x50f04a-0x0;var _0x44becd=_0xdfef[_0x50f04a];return _0x44becd;};'use strict';var _=require(_0xfdfe('0x0'));var util=require(_0xfdfe('0x1'));var moment=require(_0xfdfe('0x2'));var BPromise=require('bluebird');var rs=require(_0xfdfe('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfdfe('0x4'))['db'];var utils=require(_0xfdfe('0x5'));var logger=require(_0xfdfe('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xfdfe('0x7'));var client=jayson[_0xfdfe('0x8')][_0xfdfe('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3269d4,_0x3c5a6c,_0x50847c){return new BPromise(function(_0x1d9573,_0x52846c){return client[_0xfdfe('0xa')](_0x3269d4,_0x50847c)[_0xfdfe('0xb')](function(_0x14190d){logger['info'](_0xfdfe('0xc'),_0x3c5a6c,_0xfdfe('0xd'));logger[_0xfdfe('0xe')](_0xfdfe('0xf'),_0x3c5a6c,_0xfdfe('0xd'),JSON['stringify'](_0x14190d));if(_0x14190d[_0xfdfe('0x10')]){if(_0x14190d['error']['code']===0x1f4){logger[_0xfdfe('0x10')](_0xfdfe('0xc'),_0x3c5a6c,_0x14190d[_0xfdfe('0x10')][_0xfdfe('0x11')]);return _0x52846c(_0x14190d[_0xfdfe('0x10')][_0xfdfe('0x11')]);}logger[_0xfdfe('0x10')]('SquareReport,\x20%s,\x20%s',_0x3c5a6c,_0x14190d[_0xfdfe('0x10')]['message']);return _0x1d9573(_0x14190d[_0xfdfe('0x10')][_0xfdfe('0x11')]);}else{logger[_0xfdfe('0x12')]('SquareReport,\x20%s,\x20%s',_0x3c5a6c,_0xfdfe('0xd'));_0x1d9573(_0x14190d[_0xfdfe('0x13')]['message']);}})['catch'](function(_0x4b8c6e){logger['error'](_0xfdfe('0xc'),_0x3c5a6c,_0x4b8c6e);_0x52846c(_0x4b8c6e);});});}exports[_0xfdfe('0x14')]=function(_0x5f5dcd){var _0x4efd30=this;return new Promise(function(_0x4fbfaf,_0x653328){return db['SquareReport']['create'](_0x5f5dcd[_0xfdfe('0x15')],{'raw':_0x5f5dcd[_0xfdfe('0x16')]?_0x5f5dcd[_0xfdfe('0x16')]['raw']===undefined?!![]:![]:!![]})[_0xfdfe('0xb')](function(_0x2c06d4){logger[_0xfdfe('0x12')](_0xfdfe('0x14'),_0x5f5dcd);logger[_0xfdfe('0xe')](_0xfdfe('0x14'),_0x5f5dcd,JSON[_0xfdfe('0x17')](_0x2c06d4));_0x4fbfaf(_0x2c06d4);})[_0xfdfe('0x18')](function(_0x3858bf){logger[_0xfdfe('0x10')]('CreateSquareReport',_0x3858bf['message'],_0x5f5dcd);_0x653328(_0x4efd30['error'](0x1f4,_0x3858bf['message']));});});};exports[_0xfdfe('0x19')]=function(_0x5287fc){var _0x27092=this;return new Promise(function(_0x41ec45,_0x18505a){return db[_0xfdfe('0x1a')][_0xfdfe('0x1b')](_0x5287fc[_0xfdfe('0x15')],{'raw':_0x5287fc[_0xfdfe('0x16')]?_0x5287fc[_0xfdfe('0x16')][_0xfdfe('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5287fc[_0xfdfe('0x16')]?_0x5287fc[_0xfdfe('0x16')][_0xfdfe('0x1d')]||null:null,'attributes':_0x5287fc[_0xfdfe('0x16')]?_0x5287fc['options'][_0xfdfe('0x1e')]||null:null,'limit':_0x5287fc[_0xfdfe('0x16')]?_0x5287fc['options'][_0xfdfe('0x1f')]||null:null})[_0xfdfe('0xb')](function(_0x36ff10){logger[_0xfdfe('0x12')](_0xfdfe('0x19'),_0x5287fc);logger[_0xfdfe('0xe')]('UpdateSquareReport',_0x5287fc,JSON['stringify'](_0x36ff10));_0x41ec45(_0x36ff10);})[_0xfdfe('0x18')](function(_0x24f878){logger[_0xfdfe('0x10')]('UpdateSquareReport',_0x24f878[_0xfdfe('0x11')],_0x5287fc);_0x18505a(_0x27092[_0xfdfe('0x10')](0x1f4,_0x24f878[_0xfdfe('0x11')]));});});};
\ No newline at end of file
+var _0x81bd=['create','options','raw','then','catch','UpdateSquareReport','update','body','where','limit','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','SquareReport'];(function(_0x15157a,_0x2cb578){var _0x20887e=function(_0xf50838){while(--_0xf50838){_0x15157a['push'](_0x15157a['shift']());}};_0x20887e(++_0x2cb578);}(_0x81bd,0x6d));var _0xd81b=function(_0x1498dd,_0x3155dd){_0x1498dd=_0x1498dd-0x0;var _0x46b1a7=_0x81bd[_0x1498dd];return _0x46b1a7;};'use strict';var _=require(_0xd81b('0x0'));var util=require(_0xd81b('0x1'));var moment=require('moment');var BPromise=require(_0xd81b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd81b('0x3'));var db=require(_0xd81b('0x4'))['db'];var utils=require(_0xd81b('0x5'));var logger=require(_0xd81b('0x6'))(_0xd81b('0x7'));var config=require(_0xd81b('0x8'));var jayson=require(_0xd81b('0x9'));var client=jayson[_0xd81b('0xa')][_0xd81b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x59ec44,_0x25c0ce,_0x346815){return new BPromise(function(_0x163261,_0x4881a6){return client['request'](_0x59ec44,_0x346815)['then'](function(_0x2d4519){logger[_0xd81b('0xc')](_0xd81b('0xd'),_0x25c0ce,_0xd81b('0xe'));logger[_0xd81b('0xf')](_0xd81b('0x10'),_0x25c0ce,_0xd81b('0xe'),JSON[_0xd81b('0x11')](_0x2d4519));if(_0x2d4519[_0xd81b('0x12')]){if(_0x2d4519['error'][_0xd81b('0x13')]===0x1f4){logger[_0xd81b('0x12')](_0xd81b('0xd'),_0x25c0ce,_0x2d4519[_0xd81b('0x12')][_0xd81b('0x14')]);return _0x4881a6(_0x2d4519[_0xd81b('0x12')][_0xd81b('0x14')]);}logger[_0xd81b('0x12')](_0xd81b('0xd'),_0x25c0ce,_0x2d4519[_0xd81b('0x12')][_0xd81b('0x14')]);return _0x163261(_0x2d4519[_0xd81b('0x12')][_0xd81b('0x14')]);}else{logger[_0xd81b('0xc')](_0xd81b('0xd'),_0x25c0ce,_0xd81b('0xe'));_0x163261(_0x2d4519[_0xd81b('0x15')]['message']);}})['catch'](function(_0x37bffe){logger[_0xd81b('0x12')](_0xd81b('0xd'),_0x25c0ce,_0x37bffe);_0x4881a6(_0x37bffe);});});}exports['CreateSquareReport']=function(_0x132189){var _0x2a8e98=this;return new Promise(function(_0x3a035d,_0x18950d){return db[_0xd81b('0x16')][_0xd81b('0x17')](_0x132189['body'],{'raw':_0x132189[_0xd81b('0x18')]?_0x132189['options'][_0xd81b('0x19')]===undefined?!![]:![]:!![]})[_0xd81b('0x1a')](function(_0x25e9b){logger[_0xd81b('0xc')]('CreateSquareReport',_0x132189);logger['debug']('CreateSquareReport',_0x132189,JSON['stringify'](_0x25e9b));_0x3a035d(_0x25e9b);})[_0xd81b('0x1b')](function(_0x35a5e2){logger[_0xd81b('0x12')]('CreateSquareReport',_0x35a5e2[_0xd81b('0x14')],_0x132189);_0x18950d(_0x2a8e98['error'](0x1f4,_0x35a5e2[_0xd81b('0x14')]));});});};exports[_0xd81b('0x1c')]=function(_0x367175){var _0x11da01=this;return new Promise(function(_0x2da1f4,_0x53d41f){return db[_0xd81b('0x16')][_0xd81b('0x1d')](_0x367175[_0xd81b('0x1e')],{'raw':_0x367175[_0xd81b('0x18')]?_0x367175[_0xd81b('0x18')][_0xd81b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x367175[_0xd81b('0x18')]?_0x367175['options'][_0xd81b('0x1f')]||null:null,'attributes':_0x367175['options']?_0x367175[_0xd81b('0x18')]['attributes']||null:null,'limit':_0x367175[_0xd81b('0x18')]?_0x367175[_0xd81b('0x18')][_0xd81b('0x20')]||null:null})[_0xd81b('0x1a')](function(_0x2bfff1){logger[_0xd81b('0xc')](_0xd81b('0x1c'),_0x367175);logger[_0xd81b('0xf')](_0xd81b('0x1c'),_0x367175,JSON['stringify'](_0x2bfff1));_0x2da1f4(_0x2bfff1);})['catch'](function(_0x2dbd49){logger['error'](_0xd81b('0x1c'),_0x2dbd49[_0xd81b('0x14')],_0x367175);_0x53d41f(_0x11da01[_0xd81b('0x12')](0x1f4,_0x2dbd49[_0xd81b('0x14')]));});});};
\ No newline at end of file
index 3d6c784..30e249c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4158=['isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0x4158,0x140));var _0x8415=function(_0x2b5513,_0x3fe5cd){_0x2b5513=_0x2b5513-0x0;var _0x578fd2=_0x4158[_0x2b5513];return _0x578fd2;};'use strict';var multer=require(_0x8415('0x0'));var util=require(_0x8415('0x1'));var path=require(_0x8415('0x2'));var timeout=require(_0x8415('0x3'));var express=require('express');var router=express[_0x8415('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8415('0x5'));var interaction=require(_0x8415('0x6'));var config=require(_0x8415('0x7'));var controller=require(_0x8415('0x8'));router[_0x8415('0x9')]('/',auth[_0x8415('0xa')](),controller[_0x8415('0xb')]);router[_0x8415('0x9')](_0x8415('0xc'),auth['isAuthenticated'](),controller[_0x8415('0xd')]);router['get'](_0x8415('0xe'),auth['isAuthenticated'](),controller[_0x8415('0xf')]);router[_0x8415('0x10')]('/',auth[_0x8415('0xa')](),controller[_0x8415('0x11')]);router[_0x8415('0x12')]('/:id',auth[_0x8415('0xa')](),controller[_0x8415('0x13')]);router['delete'](_0x8415('0xe'),auth[_0x8415('0xa')](),controller[_0x8415('0x14')]);module[_0x8415('0x15')]=router;
\ No newline at end of file
+var _0xae91=['show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x5de6c9,_0x471538){var _0x4f45f6=function(_0xe0c086){while(--_0xe0c086){_0x5de6c9['push'](_0x5de6c9['shift']());}};_0x4f45f6(++_0x471538);}(_0xae91,0xe3));var _0x1ae9=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xae91[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x1ae9('0x0'));var util=require(_0x1ae9('0x1'));var path=require(_0x1ae9('0x2'));var timeout=require(_0x1ae9('0x3'));var express=require(_0x1ae9('0x4'));var router=express['Router']();var fs_extra=require(_0x1ae9('0x5'));var auth=require(_0x1ae9('0x6'));var interaction=require(_0x1ae9('0x7'));var config=require(_0x1ae9('0x8'));var controller=require(_0x1ae9('0x9'));router[_0x1ae9('0xa')]('/',auth[_0x1ae9('0xb')](),controller[_0x1ae9('0xc')]);router[_0x1ae9('0xa')]('/describe',auth[_0x1ae9('0xb')](),controller[_0x1ae9('0xd')]);router[_0x1ae9('0xa')](_0x1ae9('0xe'),auth['isAuthenticated'](),controller[_0x1ae9('0xf')]);router[_0x1ae9('0x10')]('/',auth[_0x1ae9('0xb')](),controller[_0x1ae9('0x11')]);router[_0x1ae9('0x12')](_0x1ae9('0xe'),auth['isAuthenticated'](),controller[_0x1ae9('0x13')]);router[_0x1ae9('0x14')](_0x1ae9('0xe'),auth['isAuthenticated'](),controller[_0x1ae9('0x15')]);module['exports']=router;
\ No newline at end of file
index ec227af..fe73ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe102=['STRING','TEXT','sequelize','exports'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0xe102,0x156));var _0x2e10=function(_0x4b26e5,_0x4a5693){_0x4b26e5=_0x4b26e5-0x0;var _0x23f7ab=_0xe102[_0x4b26e5];return _0x23f7ab;};'use strict';var Sequelize=require(_0x2e10('0x0'));module[_0x2e10('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x2e10('0x2')]},'application':{'type':Sequelize[_0x2e10('0x2')]},'data':{'type':Sequelize[_0x2e10('0x3')]},'project_name':{'type':Sequelize[_0x2e10('0x2')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd0e8=['STRING','TEXT','sequelize','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xd0e8,0x6e));var _0x8d0e=function(_0x2dd1d9,_0x134ed0){_0x2dd1d9=_0x2dd1d9-0x0;var _0x49221f=_0xd0e8[_0x2dd1d9];return _0x49221f;};'use strict';var Sequelize=require(_0x8d0e('0x0'));module[_0x8d0e('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x8d0e('0x2')]},'application':{'type':Sequelize[_0x8d0e('0x2')]},'data':{'type':Sequelize[_0x8d0e('0x3')]},'project_name':{'type':Sequelize[_0x8d0e('0x2')]},'callerid':{'type':Sequelize[_0x8d0e('0x2')]}};
\ No newline at end of file
index 0932502..569b241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb09=['api','../../config/utils','../../config/environment','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','SquareDetailsReport','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0xbb09,0x81));var _0x9bb0=function(_0x4a5494,_0x3ad336){_0x4a5494=_0x4a5494-0x0;var _0x57cbb5=_0xbb09[_0x4a5494];return _0x57cbb5;};'use strict';var emlformat=require(_0x9bb0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9bb0('0x1'));var jsonpatch=require(_0x9bb0('0x2'));var rp=require(_0x9bb0('0x3'));var moment=require(_0x9bb0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9bb0('0x5'));var util=require(_0x9bb0('0x6'));var path=require(_0x9bb0('0x7'));var sox=require(_0x9bb0('0x8'));var csv=require(_0x9bb0('0x9'));var ejs=require(_0x9bb0('0xa'));var fs=require('fs');var fs_extra=require(_0x9bb0('0xb'));var _=require(_0x9bb0('0xc'));var squel=require(_0x9bb0('0xd'));var crypto=require('crypto');var jsforce=require(_0x9bb0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x9bb0('0x9'));var querystring=require('querystring');var Papa=require(_0x9bb0('0xf'));var Redis=require(_0x9bb0('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9bb0('0x11'));var as=require(_0x9bb0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9bb0('0x13'));var utils=require(_0x9bb0('0x14'));var config=require(_0x9bb0('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x170a72,_0x4d3bf1){_0x4d3bf1=_0x4d3bf1||0xcc;return function(_0x302343){if(_0x302343){return _0x170a72[_0x9bb0('0x16')](_0x4d3bf1);}return _0x170a72[_0x9bb0('0x17')](_0x4d3bf1)[_0x9bb0('0x18')]();};}function respondWithResult(_0x14f31b,_0x291c85){_0x291c85=_0x291c85||0xc8;return function(_0x5c8246){if(_0x5c8246){return _0x14f31b['status'](_0x291c85)[_0x9bb0('0x19')](_0x5c8246);}};}function respondWithFilteredResult(_0x58ed18,_0x17bdc1){return function(_0x5dbdd0){if(_0x5dbdd0){var _0x46172d=typeof _0x17bdc1['offset']==='undefined'&&typeof _0x17bdc1[_0x9bb0('0x1a')]===_0x9bb0('0x1b');var _0x488075=_0x5dbdd0[_0x9bb0('0x1c')];var _0xf17a19=_0x46172d?0x0:_0x17bdc1[_0x9bb0('0x1d')];var _0x403b80=_0x46172d?_0x5dbdd0[_0x9bb0('0x1c')]:_0x17bdc1[_0x9bb0('0x1d')]+_0x17bdc1['limit'];var _0x57da8d;if(_0x403b80>=_0x488075){_0x403b80=_0x488075;_0x57da8d=0xc8;}else{_0x57da8d=0xce;}_0x58ed18[_0x9bb0('0x17')](_0x57da8d);return _0x58ed18[_0x9bb0('0x1e')](_0x9bb0('0x1f'),_0xf17a19+'-'+_0x403b80+'/'+_0x488075)['json'](_0x5dbdd0);}return null;};}function patchUpdates(_0x3529df){return function(_0xe5452f){try{jsonpatch[_0x9bb0('0x20')](_0xe5452f,_0x3529df,!![]);}catch(_0x499b9d){return BPromise[_0x9bb0('0x21')](_0x499b9d);}return _0xe5452f[_0x9bb0('0x22')]();};}function saveUpdates(_0x52e74b,_0x5b24a1){return function(_0x5bbb8e){if(_0x5bbb8e){return _0x5bbb8e[_0x9bb0('0x23')](_0x52e74b)[_0x9bb0('0x24')](function(_0x56db95){return _0x56db95;});}return null;};}function removeEntity(_0x4f9e73,_0x314060){return function(_0x37ff0f){if(_0x37ff0f){return _0x37ff0f[_0x9bb0('0x25')]()[_0x9bb0('0x24')](function(){_0x4f9e73[_0x9bb0('0x17')](0xcc)[_0x9bb0('0x18')]();});}};}function handleEntityNotFound(_0x249e4d,_0x177787){return function(_0x5c15a6){if(!_0x5c15a6){_0x249e4d[_0x9bb0('0x16')](0x194);}return _0x5c15a6;};}function handleError(_0x1a2e9d,_0xda727c){_0xda727c=_0xda727c||0x1f4;return function(_0x256cb1){logger['error'](_0x256cb1[_0x9bb0('0x26')]);if(_0x256cb1['name']){delete _0x256cb1[_0x9bb0('0x27')];}_0x1a2e9d[_0x9bb0('0x17')](_0xda727c)[_0x9bb0('0x28')](_0x256cb1);};}exports[_0x9bb0('0x29')]=function(_0x45b055,_0x4afdd4){var _0x137b1b={},_0x5d2867={},_0x282e93={'count':0x0,'rows':[]};var _0x5a6615=_['map'](db[_0x9bb0('0x2a')][_0x9bb0('0x2b')],function(_0xaec447){return{'name':_0xaec447[_0x9bb0('0x2c')],'type':_0xaec447[_0x9bb0('0x2d')]['key']};});_0x5d2867[_0x9bb0('0x2e')]=_[_0x9bb0('0x2f')](_0x5a6615,_0x9bb0('0x27'));_0x5d2867[_0x9bb0('0x30')]=_[_0x9bb0('0x31')](_0x45b055[_0x9bb0('0x30')]);_0x5d2867[_0x9bb0('0x32')]=_[_0x9bb0('0x33')](_0x5d2867[_0x9bb0('0x2e')],_0x5d2867[_0x9bb0('0x30')]);_0x137b1b['attributes']=_['intersection'](_0x5d2867[_0x9bb0('0x2e')],qs[_0x9bb0('0x34')](_0x45b055['query'][_0x9bb0('0x34')]));_0x137b1b[_0x9bb0('0x35')]=_0x137b1b[_0x9bb0('0x35')][_0x9bb0('0x36')]?_0x137b1b[_0x9bb0('0x35')]:_0x5d2867[_0x9bb0('0x2e')];if(!_0x45b055['query']['hasOwnProperty'](_0x9bb0('0x37'))){_0x137b1b['limit']=qs[_0x9bb0('0x1a')](_0x45b055[_0x9bb0('0x30')][_0x9bb0('0x1a')]);_0x137b1b[_0x9bb0('0x1d')]=qs[_0x9bb0('0x1d')](_0x45b055[_0x9bb0('0x30')][_0x9bb0('0x1d')]);}_0x137b1b[_0x9bb0('0x38')]=qs['sort'](_0x45b055[_0x9bb0('0x30')][_0x9bb0('0x39')]);_0x137b1b['where']=qs['filters'](_[_0x9bb0('0x3a')](_0x45b055[_0x9bb0('0x30')],_0x5d2867[_0x9bb0('0x32')]),_0x5a6615);if(_0x45b055[_0x9bb0('0x30')][_0x9bb0('0x3b')]){_0x137b1b['where']=_[_0x9bb0('0x3c')](_0x137b1b[_0x9bb0('0x3d')],{'$or':_[_0x9bb0('0x2f')](_0x5a6615,function(_0x26821c){if(_0x26821c[_0x9bb0('0x2d')]!==_0x9bb0('0x3e')){var _0x3eeeb4={};_0x3eeeb4[_0x26821c[_0x9bb0('0x27')]]={'$like':'%'+_0x45b055[_0x9bb0('0x30')][_0x9bb0('0x3b')]+'%'};return _0x3eeeb4;}})});}_0x137b1b=_[_0x9bb0('0x3c')]({},_0x137b1b,_0x45b055[_0x9bb0('0x3f')]);var _0xcb21aa={'where':_0x137b1b[_0x9bb0('0x3d')]};return db[_0x9bb0('0x2a')][_0x9bb0('0x1c')](_0xcb21aa)[_0x9bb0('0x24')](function(_0x4c4f0d){_0x282e93[_0x9bb0('0x1c')]=_0x4c4f0d;if(_0x45b055[_0x9bb0('0x30')][_0x9bb0('0x40')]){_0x137b1b[_0x9bb0('0x41')]=[{'all':!![]}];}return db['SquareDetailsReport']['findAll'](_0x137b1b);})['then'](function(_0x3e9e43){_0x282e93[_0x9bb0('0x42')]=_0x3e9e43;return _0x282e93;})['then'](respondWithFilteredResult(_0x4afdd4,_0x137b1b))[_0x9bb0('0x43')](handleError(_0x4afdd4,null));};exports[_0x9bb0('0x44')]=function(_0x28bbe9,_0x197042){var _0x4a85ef={'raw':!![],'where':{'id':_0x28bbe9[_0x9bb0('0x45')]['id']}},_0x301fb3={};_0x301fb3[_0x9bb0('0x2e')]=_[_0x9bb0('0x31')](db[_0x9bb0('0x2a')][_0x9bb0('0x2b')]);_0x301fb3[_0x9bb0('0x30')]=_[_0x9bb0('0x31')](_0x28bbe9[_0x9bb0('0x30')]);_0x301fb3['filters']=_[_0x9bb0('0x33')](_0x301fb3[_0x9bb0('0x2e')],_0x301fb3[_0x9bb0('0x30')]);_0x4a85ef['attributes']=_[_0x9bb0('0x33')](_0x301fb3[_0x9bb0('0x2e')],qs[_0x9bb0('0x34')](_0x28bbe9[_0x9bb0('0x30')][_0x9bb0('0x34')]));_0x4a85ef[_0x9bb0('0x35')]=_0x4a85ef[_0x9bb0('0x35')][_0x9bb0('0x36')]?_0x4a85ef[_0x9bb0('0x35')]:_0x301fb3[_0x9bb0('0x2e')];if(_0x28bbe9[_0x9bb0('0x30')][_0x9bb0('0x40')]){_0x4a85ef['include']=[{'all':!![]}];}_0x4a85ef=_['merge']({},_0x4a85ef,_0x28bbe9[_0x9bb0('0x3f')]);return db[_0x9bb0('0x2a')]['find'](_0x4a85ef)['then'](handleEntityNotFound(_0x197042,null))['then'](respondWithResult(_0x197042,null))['catch'](handleError(_0x197042,null));};exports[_0x9bb0('0x46')]=function(_0x34ec1b,_0x5f1add){return db['SquareDetailsReport'][_0x9bb0('0x46')](_0x34ec1b['body'],{})[_0x9bb0('0x24')](respondWithResult(_0x5f1add,0xc9))['catch'](handleError(_0x5f1add,null));};exports['update']=function(_0x59637a,_0x11454c){if(_0x59637a[_0x9bb0('0x47')]['id']){delete _0x59637a[_0x9bb0('0x47')]['id'];}return db[_0x9bb0('0x2a')][_0x9bb0('0x48')]({'where':{'id':_0x59637a[_0x9bb0('0x45')]['id']}})[_0x9bb0('0x24')](handleEntityNotFound(_0x11454c,null))[_0x9bb0('0x24')](saveUpdates(_0x59637a['body'],null))[_0x9bb0('0x24')](respondWithResult(_0x11454c,null))[_0x9bb0('0x43')](handleError(_0x11454c,null));};exports[_0x9bb0('0x25')]=function(_0x29fcc8,_0x467c0d){return db[_0x9bb0('0x2a')][_0x9bb0('0x48')]({'where':{'id':_0x29fcc8[_0x9bb0('0x45')]['id']}})[_0x9bb0('0x24')](handleEntityNotFound(_0x467c0d,null))[_0x9bb0('0x24')](removeEntity(_0x467c0d,null))[_0x9bb0('0x43')](handleError(_0x467c0d,null));};exports['describe']=function(_0x7a9135,_0x2eac0c){return db['SquareDetailsReport'][_0x9bb0('0x49')]()[_0x9bb0('0x24')](respondWithResult(_0x2eac0c,null))[_0x9bb0('0x43')](handleError(_0x2eac0c,null));};
\ No newline at end of file
+var _0x6ad7=['name','send','index','SquareDetailsReport','fieldName','type','key','map','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','length','body','find','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','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','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','update','then','destroy','sendStatus','error'];(function(_0x257a2b,_0x4109b0){var _0x4e97e3=function(_0x520ab6){while(--_0x520ab6){_0x257a2b['push'](_0x257a2b['shift']());}};_0x4e97e3(++_0x4109b0);}(_0x6ad7,0x107));var _0x76ad=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6ad7[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x76ad('0x0'));var rimraf=require(_0x76ad('0x1'));var zipdir=require(_0x76ad('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x76ad('0x3'));var moment=require('moment');var BPromise=require(_0x76ad('0x4'));var Mustache=require('mustache');var util=require(_0x76ad('0x5'));var path=require('path');var sox=require(_0x76ad('0x6'));var csv=require(_0x76ad('0x7'));var ejs=require(_0x76ad('0x8'));var fs=require('fs');var fs_extra=require(_0x76ad('0x9'));var _=require(_0x76ad('0xa'));var squel=require('squel');var crypto=require(_0x76ad('0xb'));var jsforce=require(_0x76ad('0xc'));var deskjs=require(_0x76ad('0xd'));var toCsv=require(_0x76ad('0x7'));var querystring=require(_0x76ad('0xe'));var Papa=require(_0x76ad('0xf'));var Redis=require(_0x76ad('0x10'));var authService=require(_0x76ad('0x11'));var qs=require(_0x76ad('0x12'));var as=require(_0x76ad('0x13'));var hardwareService=require(_0x76ad('0x14'));var logger=require(_0x76ad('0x15'))(_0x76ad('0x16'));var utils=require('../../config/utils');var config=require(_0x76ad('0x17'));var licenseUtil=require(_0x76ad('0x18'));var db=require(_0x76ad('0x19'))['db'];function respondWithStatusCode(_0x4ef09f,_0x3f4b3c){_0x3f4b3c=_0x3f4b3c||0xcc;return function(_0x58cebd){if(_0x58cebd){return _0x4ef09f['sendStatus'](_0x3f4b3c);}return _0x4ef09f[_0x76ad('0x1a')](_0x3f4b3c)[_0x76ad('0x1b')]();};}function respondWithResult(_0x4e6324,_0x19cb21){_0x19cb21=_0x19cb21||0xc8;return function(_0xc857a6){if(_0xc857a6){return _0x4e6324['status'](_0x19cb21)[_0x76ad('0x1c')](_0xc857a6);}};}function respondWithFilteredResult(_0x3e684e,_0x57bfcb){return function(_0x256961){if(_0x256961){var _0x56385=typeof _0x57bfcb[_0x76ad('0x1d')]===_0x76ad('0x1e')&&typeof _0x57bfcb['limit']===_0x76ad('0x1e');var _0x311396=_0x256961[_0x76ad('0x1f')];var _0x5a2fc1=_0x56385?0x0:_0x57bfcb[_0x76ad('0x1d')];var _0x1305e5=_0x56385?_0x256961['count']:_0x57bfcb['offset']+_0x57bfcb[_0x76ad('0x20')];var _0x432d9d;if(_0x1305e5>=_0x311396){_0x1305e5=_0x311396;_0x432d9d=0xc8;}else{_0x432d9d=0xce;}_0x3e684e[_0x76ad('0x1a')](_0x432d9d);return _0x3e684e['set'](_0x76ad('0x21'),_0x5a2fc1+'-'+_0x1305e5+'/'+_0x311396)[_0x76ad('0x1c')](_0x256961);}return null;};}function patchUpdates(_0x273f21){return function(_0x1a717e){try{jsonpatch[_0x76ad('0x22')](_0x1a717e,_0x273f21,!![]);}catch(_0x5d3f39){return BPromise[_0x76ad('0x23')](_0x5d3f39);}return _0x1a717e['save']();};}function saveUpdates(_0x4b204e,_0x4e2104){return function(_0xc7e861){if(_0xc7e861){return _0xc7e861[_0x76ad('0x24')](_0x4b204e)[_0x76ad('0x25')](function(_0x3f0285){return _0x3f0285;});}return null;};}function removeEntity(_0x5fbb47,_0x395d16){return function(_0x239a3b){if(_0x239a3b){return _0x239a3b[_0x76ad('0x26')]()['then'](function(){_0x5fbb47[_0x76ad('0x1a')](0xcc)[_0x76ad('0x1b')]();});}};}function handleEntityNotFound(_0x18a0ab,_0x2b7e9f){return function(_0x19b3e3){if(!_0x19b3e3){_0x18a0ab[_0x76ad('0x27')](0x194);}return _0x19b3e3;};}function handleError(_0x47ce8a,_0x1c4cbc){_0x1c4cbc=_0x1c4cbc||0x1f4;return function(_0x46b57d){logger[_0x76ad('0x28')](_0x46b57d['stack']);if(_0x46b57d[_0x76ad('0x29')]){delete _0x46b57d[_0x76ad('0x29')];}_0x47ce8a[_0x76ad('0x1a')](_0x1c4cbc)[_0x76ad('0x2a')](_0x46b57d);};}exports[_0x76ad('0x2b')]=function(_0xd38751,_0x4b7fd9){var _0x503f0d={},_0x3ef62f={},_0x365e5e={'count':0x0,'rows':[]};var _0x300caf=_['map'](db[_0x76ad('0x2c')]['rawAttributes'],function(_0x1aff01){return{'name':_0x1aff01[_0x76ad('0x2d')],'type':_0x1aff01[_0x76ad('0x2e')][_0x76ad('0x2f')]};});_0x3ef62f['model']=_[_0x76ad('0x30')](_0x300caf,_0x76ad('0x29'));_0x3ef62f[_0x76ad('0x31')]=_['keys'](_0xd38751['query']);_0x3ef62f[_0x76ad('0x32')]=_[_0x76ad('0x33')](_0x3ef62f[_0x76ad('0x34')],_0x3ef62f['query']);_0x503f0d['attributes']=_[_0x76ad('0x33')](_0x3ef62f[_0x76ad('0x34')],qs[_0x76ad('0x35')](_0xd38751[_0x76ad('0x31')][_0x76ad('0x35')]));_0x503f0d[_0x76ad('0x36')]=_0x503f0d[_0x76ad('0x36')]['length']?_0x503f0d[_0x76ad('0x36')]:_0x3ef62f[_0x76ad('0x34')];if(!_0xd38751[_0x76ad('0x31')][_0x76ad('0x37')](_0x76ad('0x38'))){_0x503f0d['limit']=qs[_0x76ad('0x20')](_0xd38751[_0x76ad('0x31')][_0x76ad('0x20')]);_0x503f0d[_0x76ad('0x1d')]=qs[_0x76ad('0x1d')](_0xd38751[_0x76ad('0x31')]['offset']);}_0x503f0d['order']=qs[_0x76ad('0x39')](_0xd38751['query'][_0x76ad('0x39')]);_0x503f0d['where']=qs['filters'](_[_0x76ad('0x3a')](_0xd38751[_0x76ad('0x31')],_0x3ef62f[_0x76ad('0x32')]),_0x300caf);if(_0xd38751[_0x76ad('0x31')]['filter']){_0x503f0d[_0x76ad('0x3b')]=_[_0x76ad('0x3c')](_0x503f0d[_0x76ad('0x3b')],{'$or':_['map'](_0x300caf,function(_0x41202f){if(_0x41202f['type']!==_0x76ad('0x3d')){var _0x175bea={};_0x175bea[_0x41202f['name']]={'$like':'%'+_0xd38751['query']['filter']+'%'};return _0x175bea;}})});}_0x503f0d=_[_0x76ad('0x3c')]({},_0x503f0d,_0xd38751[_0x76ad('0x3e')]);var _0x52312d={'where':_0x503f0d[_0x76ad('0x3b')]};return db[_0x76ad('0x2c')][_0x76ad('0x1f')](_0x52312d)[_0x76ad('0x25')](function(_0xdf4fd1){_0x365e5e['count']=_0xdf4fd1;if(_0xd38751[_0x76ad('0x31')][_0x76ad('0x3f')]){_0x503f0d[_0x76ad('0x40')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0x76ad('0x41')](_0x503f0d);})[_0x76ad('0x25')](function(_0xb67f97){_0x365e5e[_0x76ad('0x42')]=_0xb67f97;return _0x365e5e;})[_0x76ad('0x25')](respondWithFilteredResult(_0x4b7fd9,_0x503f0d))[_0x76ad('0x43')](handleError(_0x4b7fd9,null));};exports[_0x76ad('0x44')]=function(_0x51db47,_0x2b590d){var _0xdcb5f5={'raw':!![],'where':{'id':_0x51db47[_0x76ad('0x45')]['id']}},_0x2d8b89={};_0x2d8b89[_0x76ad('0x34')]=_[_0x76ad('0x46')](db['SquareDetailsReport'][_0x76ad('0x47')]);_0x2d8b89[_0x76ad('0x31')]=_[_0x76ad('0x46')](_0x51db47[_0x76ad('0x31')]);_0x2d8b89['filters']=_[_0x76ad('0x33')](_0x2d8b89[_0x76ad('0x34')],_0x2d8b89[_0x76ad('0x31')]);_0xdcb5f5[_0x76ad('0x36')]=_[_0x76ad('0x33')](_0x2d8b89[_0x76ad('0x34')],qs[_0x76ad('0x35')](_0x51db47['query']['fields']));_0xdcb5f5['attributes']=_0xdcb5f5['attributes'][_0x76ad('0x48')]?_0xdcb5f5['attributes']:_0x2d8b89[_0x76ad('0x34')];if(_0x51db47[_0x76ad('0x31')][_0x76ad('0x3f')]){_0xdcb5f5[_0x76ad('0x40')]=[{'all':!![]}];}_0xdcb5f5=_[_0x76ad('0x3c')]({},_0xdcb5f5,_0x51db47[_0x76ad('0x3e')]);return db[_0x76ad('0x2c')]['find'](_0xdcb5f5)[_0x76ad('0x25')](handleEntityNotFound(_0x2b590d,null))[_0x76ad('0x25')](respondWithResult(_0x2b590d,null))[_0x76ad('0x43')](handleError(_0x2b590d,null));};exports['create']=function(_0x25a1dc,_0x1c197c){return db[_0x76ad('0x2c')]['create'](_0x25a1dc[_0x76ad('0x49')],{})[_0x76ad('0x25')](respondWithResult(_0x1c197c,0xc9))[_0x76ad('0x43')](handleError(_0x1c197c,null));};exports[_0x76ad('0x24')]=function(_0x9b40fe,_0x5b4601){if(_0x9b40fe[_0x76ad('0x49')]['id']){delete _0x9b40fe[_0x76ad('0x49')]['id'];}return db[_0x76ad('0x2c')][_0x76ad('0x4a')]({'where':{'id':_0x9b40fe[_0x76ad('0x45')]['id']}})[_0x76ad('0x25')](handleEntityNotFound(_0x5b4601,null))[_0x76ad('0x25')](saveUpdates(_0x9b40fe[_0x76ad('0x49')],null))[_0x76ad('0x25')](respondWithResult(_0x5b4601,null))[_0x76ad('0x43')](handleError(_0x5b4601,null));};exports['destroy']=function(_0x561fc8,_0x146b49){return db['SquareDetailsReport'][_0x76ad('0x4a')]({'where':{'id':_0x561fc8[_0x76ad('0x45')]['id']}})[_0x76ad('0x25')](handleEntityNotFound(_0x146b49,null))['then'](removeEntity(_0x146b49,null))[_0x76ad('0x43')](handleError(_0x146b49,null));};exports[_0x76ad('0x4b')]=function(_0x27c24b,_0x1d592d){return db['SquareDetailsReport']['describe']()[_0x76ad('0x25')](respondWithResult(_0x1d592d,null))[_0x76ad('0x43')](handleError(_0x1d592d,null));};
\ No newline at end of file
index 3d4100e..db42cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa716=['exports','define','report_square_details','lodash','util','../../config/logger','api','rimraf','../../config/environment','./squareReportDetail.attributes'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xa716,0x125));var _0x6a71=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xa716[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x6a71('0x0'));var util=require(_0x6a71('0x1'));var logger=require(_0x6a71('0x2'))(_0x6a71('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6a71('0x4'));var config=require(_0x6a71('0x5'));var attributes=require(_0x6a71('0x6'));module[_0x6a71('0x7')]=function(_0x4dc594,_0x16b8b0){return _0x4dc594[_0x6a71('0x8')]('SquareDetailsReport',attributes,{'tableName':_0x6a71('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbfe8=['bluebird','path','rimraf','../../config/environment','exports','define','SquareDetailsReport','util','../../config/logger','api','moment'];(function(_0x41397b,_0x481d0e){var _0x5f4677=function(_0x4a0b5b){while(--_0x4a0b5b){_0x41397b['push'](_0x41397b['shift']());}};_0x5f4677(++_0x481d0e);}(_0xbfe8,0xac));var _0x8bfe=function(_0x455646,_0x415e4f){_0x455646=_0x455646-0x0;var _0x3e04c1=_0xbfe8[_0x455646];return _0x3e04c1;};'use strict';var _=require('lodash');var util=require(_0x8bfe('0x0'));var logger=require(_0x8bfe('0x1'))(_0x8bfe('0x2'));var moment=require(_0x8bfe('0x3'));var BPromise=require(_0x8bfe('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8bfe('0x5'));var rimraf=require(_0x8bfe('0x6'));var config=require(_0x8bfe('0x7'));var attributes=require('./squareReportDetail.attributes');module[_0x8bfe('0x8')]=function(_0x3642cb,_0x58ca39){return _0x3642cb[_0x8bfe('0x9')](_0x8bfe('0xa'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7c1d315..548bd81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a5c=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateSquareDetailsReport','create','options','lodash','util'];(function(_0x1088bc,_0x2a1605){var _0x4018b2=function(_0x4b88dd){while(--_0x4b88dd){_0x1088bc['push'](_0x1088bc['shift']());}};_0x4018b2(++_0x2a1605);}(_0x8a5c,0x136));var _0xc8a5=function(_0x5b4ae6,_0x330f54){_0x5b4ae6=_0x5b4ae6-0x0;var _0x10f869=_0x8a5c[_0x5b4ae6];return _0x10f869;};'use strict';var _=require(_0xc8a5('0x0'));var util=require(_0xc8a5('0x1'));var moment=require(_0xc8a5('0x2'));var BPromise=require(_0xc8a5('0x3'));var rs=require(_0xc8a5('0x4'));var fs=require('fs');var Redis=require(_0xc8a5('0x5'));var db=require(_0xc8a5('0x6'))['db'];var utils=require(_0xc8a5('0x7'));var logger=require(_0xc8a5('0x8'))('rpc');var config=require(_0xc8a5('0x9'));var jayson=require(_0xc8a5('0xa'));var client=jayson['client'][_0xc8a5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xcee97e,_0xd6de78,_0xa9f42c){return new BPromise(function(_0x4d25e4,_0x3ecf08){return client[_0xc8a5('0xc')](_0xcee97e,_0xa9f42c)[_0xc8a5('0xd')](function(_0x2c1fe9){logger[_0xc8a5('0xe')](_0xc8a5('0xf'),_0xd6de78,_0xc8a5('0x10'));logger[_0xc8a5('0x11')](_0xc8a5('0x12'),_0xd6de78,'request\x20sent',JSON['stringify'](_0x2c1fe9));if(_0x2c1fe9[_0xc8a5('0x13')]){if(_0x2c1fe9['error'][_0xc8a5('0x14')]===0x1f4){logger[_0xc8a5('0x13')](_0xc8a5('0xf'),_0xd6de78,_0x2c1fe9[_0xc8a5('0x13')][_0xc8a5('0x15')]);return _0x3ecf08(_0x2c1fe9['error'][_0xc8a5('0x15')]);}logger[_0xc8a5('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0xd6de78,_0x2c1fe9[_0xc8a5('0x13')][_0xc8a5('0x15')]);return _0x4d25e4(_0x2c1fe9[_0xc8a5('0x13')][_0xc8a5('0x15')]);}else{logger[_0xc8a5('0xe')](_0xc8a5('0xf'),_0xd6de78,'request\x20sent');_0x4d25e4(_0x2c1fe9[_0xc8a5('0x16')][_0xc8a5('0x15')]);}})['catch'](function(_0x36a78b){logger[_0xc8a5('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0xd6de78,_0x36a78b);_0x3ecf08(_0x36a78b);});});}exports[_0xc8a5('0x17')]=function(_0x3ef8d3){var _0x12a441=this;return new Promise(function(_0x1326e2,_0x1ea105){return db['SquareDetailsReport'][_0xc8a5('0x18')](_0x3ef8d3['body'],{'raw':_0x3ef8d3[_0xc8a5('0x19')]?_0x3ef8d3[_0xc8a5('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x866737){logger[_0xc8a5('0xe')](_0xc8a5('0x17'),_0x3ef8d3);logger[_0xc8a5('0x11')](_0xc8a5('0x17'),_0x3ef8d3,JSON['stringify'](_0x866737));_0x1326e2(_0x866737);})['catch'](function(_0x3e2058){logger[_0xc8a5('0x13')](_0xc8a5('0x17'),_0x3e2058[_0xc8a5('0x15')],_0x3ef8d3);_0x1ea105(_0x12a441[_0xc8a5('0x13')](0x1f4,_0x3e2058[_0xc8a5('0x15')]));});});};
\ No newline at end of file
+var _0x0598=['catch','CreateSquareDetailsReport','SquareDetailsReport','body','options','then','lodash','util','bluebird','../../mysqldb','../../config/utils','jayson/promise','client','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x3b0620,_0x120d31){var _0x25ec1b=function(_0x138188){while(--_0x138188){_0x3b0620['push'](_0x3b0620['shift']());}};_0x25ec1b(++_0x120d31);}(_0x0598,0x92));var _0x8059=function(_0x199453,_0xeb3841){_0x199453=_0x199453-0x0;var _0x8ba115=_0x0598[_0x199453];return _0x8ba115;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var moment=require('moment');var BPromise=require(_0x8059('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8059('0x3'))['db'];var utils=require(_0x8059('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8059('0x5'));var client=jayson[_0x8059('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5996d7,_0x248273,_0x347f1b){return new BPromise(function(_0x4610d2,_0x116946){return client['request'](_0x5996d7,_0x347f1b)['then'](function(_0x89dda1){logger[_0x8059('0x7')](_0x8059('0x8'),_0x248273,_0x8059('0x9'));logger[_0x8059('0xa')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x248273,'request\x20sent',JSON[_0x8059('0xb')](_0x89dda1));if(_0x89dda1[_0x8059('0xc')]){if(_0x89dda1['error']['code']===0x1f4){logger['error'](_0x8059('0x8'),_0x248273,_0x89dda1[_0x8059('0xc')][_0x8059('0xd')]);return _0x116946(_0x89dda1[_0x8059('0xc')][_0x8059('0xd')]);}logger['error'](_0x8059('0x8'),_0x248273,_0x89dda1['error'][_0x8059('0xd')]);return _0x4610d2(_0x89dda1['error'][_0x8059('0xd')]);}else{logger[_0x8059('0x7')](_0x8059('0x8'),_0x248273,'request\x20sent');_0x4610d2(_0x89dda1['result']['message']);}})[_0x8059('0xe')](function(_0x239195){logger[_0x8059('0xc')](_0x8059('0x8'),_0x248273,_0x239195);_0x116946(_0x239195);});});}exports[_0x8059('0xf')]=function(_0x4b6d55){var _0x10ad98=this;return new Promise(function(_0x2bb670,_0x37e926){return db[_0x8059('0x10')]['create'](_0x4b6d55[_0x8059('0x11')],{'raw':_0x4b6d55['options']?_0x4b6d55[_0x8059('0x12')]['raw']===undefined?!![]:![]:!![]})[_0x8059('0x13')](function(_0x56d794){logger[_0x8059('0x7')](_0x8059('0xf'),_0x4b6d55);logger[_0x8059('0xa')]('CreateSquareDetailsReport',_0x4b6d55,JSON['stringify'](_0x56d794));_0x2bb670(_0x56d794);})[_0x8059('0xe')](function(_0x232f1b){logger[_0x8059('0xc')](_0x8059('0xf'),_0x232f1b['message'],_0x4b6d55);_0x37e926(_0x10ad98[_0x8059('0xc')](0x1f4,_0x232f1b[_0x8059('0xd')]));});});};
\ No newline at end of file
index dfabac9..7cf9934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1405=['../../components/auth/service','./system.controller','index','/process/:pid/kill','killProcess','express','Router'];(function(_0x143f66,_0xc137ba){var _0x52a5f3=function(_0x3efa0e){while(--_0x3efa0e){_0x143f66['push'](_0x143f66['shift']());}};_0x52a5f3(++_0xc137ba);}(_0x1405,0xc9));var _0x5140=function(_0x13d929,_0x28fa20){_0x13d929=_0x13d929-0x0;var _0x3b3f24=_0x1405[_0x13d929];return _0x3b3f24;};'use strict';var express=require(_0x5140('0x0'));var router=express[_0x5140('0x1')]();var auth=require(_0x5140('0x2'));var controller=require(_0x5140('0x3'));router['get']('/',auth['isAuthenticated'](),controller[_0x5140('0x4')]);router['get'](_0x5140('0x5'),auth['isAuthenticated'](),controller[_0x5140('0x6')]);module['exports']=router;
\ No newline at end of file
+var _0x5a1b=['exports','express','Router','../../components/auth/service','./system.controller','isAuthenticated','index','get','/process/:pid/kill','killProcess'];(function(_0x3f7ab5,_0x4bcbfd){var _0x5bb8c7=function(_0x219d1d){while(--_0x219d1d){_0x3f7ab5['push'](_0x3f7ab5['shift']());}};_0x5bb8c7(++_0x4bcbfd);}(_0x5a1b,0xdd));var _0xb5a1=function(_0x5acc36,_0x41f79c){_0x5acc36=_0x5acc36-0x0;var _0x3966b4=_0x5a1b[_0x5acc36];return _0x3966b4;};'use strict';var express=require(_0xb5a1('0x0'));var router=express[_0xb5a1('0x1')]();var auth=require(_0xb5a1('0x2'));var controller=require(_0xb5a1('0x3'));router['get']('/',auth[_0xb5a1('0x4')](),controller[_0xb5a1('0x5')]);router[_0xb5a1('0x6')](_0xb5a1('0x7'),auth['isAuthenticated'](),controller[_0xb5a1('0x8')]);module[_0xb5a1('0x9')]=router;
\ No newline at end of file
index 369be18..6fdd8b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb90=['send','index','getAllData','then','catch','json','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','indexOf','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','killProcess','child_process','exec','../../config/logger','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status'];(function(_0x2f2dd0,_0x242127){var _0x3c48d1=function(_0x4516b1){while(--_0x4516b1){_0x2f2dd0['push'](_0x2f2dd0['shift']());}};_0x3c48d1(++_0x242127);}(_0xbb90,0x1db));var _0x0bb9=function(_0x3f3f59,_0x8cacfd){_0x3f3f59=_0x3f3f59-0x0;var _0x3745b0=_0xbb90[_0x3f3f59];return _0x3745b0;};'use strict';var info=require('systeminformation');var exec=require(_0x0bb9('0x0'))[_0x0bb9('0x1')];var logger=require(_0x0bb9('0x2'))('api');var util=require(_0x0bb9('0x3'));var BPromise=require(_0x0bb9('0x4'));var _=require(_0x0bb9('0x5'));function handleError(_0x428e79,_0x87c44b,_0x4256cf){_0x87c44b=_0x87c44b||0x1f4;return function(_0x361d9a){logger[_0x0bb9('0x6')](_0x0bb9('0x7'),_0x4256cf,_0x87c44b,util[_0x0bb9('0x8')](_0x361d9a,{'showHidden':![],'depth':null}));delete _0x361d9a[_0x0bb9('0x9')];_0x428e79[_0x0bb9('0xa')](_0x87c44b)[_0x0bb9('0xb')](_0x361d9a);};}exports[_0x0bb9('0xc')]=function(_0x398c96,_0x4ff617){return info[_0x0bb9('0xd')]()[_0x0bb9('0xe')](function(_0x29e03b){return _0x4ff617[_0x0bb9('0xa')](0xc8)['json'](_0x29e03b);})[_0x0bb9('0xf')](function(_0xa95ef5){return _0x4ff617[_0x0bb9('0xa')](0x1f4)[_0x0bb9('0x10')](_0xa95ef5);});};exports['killProcess']=function(_0x173d8b,_0x4df013){var _0x58f0c6=[_0x0bb9('0x11')];return new BPromise(function(_0x48782f,_0xdd6853){return exec(util[_0x0bb9('0x12')](_0x0bb9('0x13'),_0x173d8b[_0x0bb9('0x14')][_0x0bb9('0x15')]),function(_0x516fe9,_0x513027,_0x5c6cc8){if(_0x516fe9){return _0xdd6853(_0x516fe9);}return _0x48782f(_0x513027);});})[_0x0bb9('0xe')](function(_0x37c10b){var _0x64db2b=![];var _0x1a7bd2=_0x37c10b[_0x0bb9('0x16')](/\n/);for(var _0x1cc04c=0x0,_0x11a85f=_0x58f0c6['length'];_0x1cc04c<_0x11a85f,_0x64db2b===![];_0x1cc04c+=0x1){if(_0x37c10b[_0x0bb9('0x17')](_0x58f0c6[_0x1cc04c])>=0x0){_0x64db2b=!![];}}if(!_0x64db2b){throw new Error(util['format']('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x173d8b['params'][_0x0bb9('0x15')]));}process[_0x0bb9('0x18')](_0x173d8b[_0x0bb9('0x14')][_0x0bb9('0x15')],'SIGINT');return _0x4df013['status'](0xc8)[_0x0bb9('0x10')]({'message':util[_0x0bb9('0x12')](_0x0bb9('0x19'),_0x173d8b['params'][_0x0bb9('0x15')])});})[_0x0bb9('0xf')](handleError(_0x4df013,null,_0x0bb9('0x1a')));};
\ No newline at end of file
+var _0x3246=['child_process','../../config/logger','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','send','index','getAllData','then','json','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','format','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation'];(function(_0x20e7ed,_0x40b618){var _0x1982cb=function(_0xf72af9){while(--_0xf72af9){_0x20e7ed['push'](_0x20e7ed['shift']());}};_0x1982cb(++_0x40b618);}(_0x3246,0x9b));var _0x6324=function(_0x644925,_0xbf317d){_0x644925=_0x644925-0x0;var _0x49cda8=_0x3246[_0x644925];return _0x49cda8;};'use strict';var info=require(_0x6324('0x0'));var exec=require(_0x6324('0x1'))['exec'];var logger=require(_0x6324('0x2'))('api');var util=require('util');var BPromise=require('bluebird');var _=require(_0x6324('0x3'));function handleError(_0x18472c,_0x416a29,_0x1fcf64){_0x416a29=_0x416a29||0x1f4;return function(_0x345df6){logger[_0x6324('0x4')](_0x6324('0x5'),_0x1fcf64,_0x416a29,util['inspect'](_0x345df6,{'showHidden':![],'depth':null}));delete _0x345df6[_0x6324('0x6')];_0x18472c[_0x6324('0x7')](_0x416a29)[_0x6324('0x8')](_0x345df6);};}exports[_0x6324('0x9')]=function(_0x4dea95,_0x3a7ca1){return info[_0x6324('0xa')]()[_0x6324('0xb')](function(_0x420983){return _0x3a7ca1[_0x6324('0x7')](0xc8)['json'](_0x420983);})['catch'](function(_0x9b797b){return _0x3a7ca1['status'](0x1f4)[_0x6324('0xc')](_0x9b797b);});};exports['killProcess']=function(_0x6b2b7a,_0x4f74e2){var _0x316d4a=[_0x6324('0xd')];return new BPromise(function(_0x1fd867,_0x19435d){return exec(util['format'](_0x6324('0xe'),_0x6b2b7a[_0x6324('0xf')][_0x6324('0x10')]),function(_0x533316,_0x82eb46,_0x5c4d4a){if(_0x533316){return _0x19435d(_0x533316);}return _0x1fd867(_0x82eb46);});})[_0x6324('0xb')](function(_0xce98e0){var _0x327435=![];var _0x929f96=_0xce98e0[_0x6324('0x11')](/\n/);for(var _0x175d4b=0x0,_0x3d2b9f=_0x316d4a[_0x6324('0x12')];_0x175d4b<_0x3d2b9f,_0x327435===![];_0x175d4b+=0x1){if(_0xce98e0[_0x6324('0x13')](_0x316d4a[_0x175d4b])>=0x0){_0x327435=!![];}}if(!_0x327435){throw new Error(util[_0x6324('0x14')](_0x6324('0x15'),_0x6b2b7a[_0x6324('0xf')][_0x6324('0x10')]));}process[_0x6324('0x16')](_0x6b2b7a[_0x6324('0xf')][_0x6324('0x10')],_0x6324('0x17'));return _0x4f74e2[_0x6324('0x7')](0xc8)[_0x6324('0xc')]({'message':util[_0x6324('0x14')](_0x6324('0x18'),_0x6b2b7a['params'][_0x6324('0x10')])});})[_0x6324('0x19')](handleError(_0x4f74e2,null,'killProcess'));};
\ No newline at end of file
index a6a19e9..1e2da22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c6=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','index','/:id','show','post','create','destroy','util','connect-timeout','express'];(function(_0x270faf,_0x347850){var _0x42f087=function(_0x29f6c0){while(--_0x29f6c0){_0x270faf['push'](_0x270faf['shift']());}};_0x42f087(++_0x347850);}(_0xc7c6,0x85));var _0x6c7c=function(_0x4660c8,_0x34b9ec){_0x4660c8=_0x4660c8-0x0;var _0x7de788=_0xc7c6[_0x4660c8];return _0x7de788;};'use strict';var multer=require('multer');var util=require(_0x6c7c('0x0'));var path=require('path');var timeout=require(_0x6c7c('0x1'));var express=require(_0x6c7c('0x2'));var router=express[_0x6c7c('0x3')]();var fs_extra=require(_0x6c7c('0x4'));var auth=require(_0x6c7c('0x5'));var interaction=require(_0x6c7c('0x6'));var config=require(_0x6c7c('0x7'));var controller=require(_0x6c7c('0x8'));router[_0x6c7c('0x9')]('/',auth[_0x6c7c('0xa')](),controller[_0x6c7c('0xb')]);router[_0x6c7c('0x9')](_0x6c7c('0xc'),auth[_0x6c7c('0xa')](),controller[_0x6c7c('0xd')]);router[_0x6c7c('0xe')]('/',auth[_0x6c7c('0xa')](),controller[_0x6c7c('0xf')]);router['put'](_0x6c7c('0xc'),auth[_0x6c7c('0xa')](),controller['update']);router['delete'](_0x6c7c('0xc'),auth[_0x6c7c('0xa')](),controller[_0x6c7c('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x17c1=['get','isAuthenticated','index','/:id','post','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5870d7,_0x193cae){var _0x58d22f=function(_0xbf024){while(--_0xbf024){_0x5870d7['push'](_0x5870d7['shift']());}};_0x58d22f(++_0x193cae);}(_0x17c1,0x184));var _0x117c=function(_0x1a2a69,_0x41b749){_0x1a2a69=_0x1a2a69-0x0;var _0xd965d8=_0x17c1[_0x1a2a69];return _0xd965d8;};'use strict';var multer=require(_0x117c('0x0'));var util=require(_0x117c('0x1'));var path=require('path');var timeout=require(_0x117c('0x2'));var express=require('express');var router=express[_0x117c('0x3')]();var fs_extra=require(_0x117c('0x4'));var auth=require(_0x117c('0x5'));var interaction=require(_0x117c('0x6'));var config=require(_0x117c('0x7'));var controller=require('./tag.controller');router[_0x117c('0x8')]('/',auth[_0x117c('0x9')](),controller[_0x117c('0xa')]);router[_0x117c('0x8')](_0x117c('0xb'),auth[_0x117c('0x9')](),controller['show']);router[_0x117c('0xc')]('/',auth[_0x117c('0x9')](),controller['create']);router[_0x117c('0xd')]('/:id',auth[_0x117c('0x9')](),controller[_0x117c('0xe')]);router[_0x117c('0xf')](_0x117c('0xb'),auth[_0x117c('0x9')](),controller[_0x117c('0x10')]);module[_0x117c('0x11')]=router;
\ No newline at end of file
index 585ea7f..fb37f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc692=['exports','STRING','#0091EA','sequelize'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0xc692,0x15f));var _0x2c69=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0xc692[_0x33032e];return _0x13316b;};'use strict';var Sequelize=require(_0x2c69('0x0'));module[_0x2c69('0x1')]={'name':{'type':Sequelize[_0x2c69('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x2c69('0x3')},'description':{'type':Sequelize[_0x2c69('0x2')]}};
\ No newline at end of file
+var _0xd71d=['name','sequelize','exports','STRING'];(function(_0x27ff13,_0x2477be){var _0x5265b1=function(_0x5c53d9){while(--_0x5c53d9){_0x27ff13['push'](_0x27ff13['shift']());}};_0x5265b1(++_0x2477be);}(_0xd71d,0x1a5));var _0xdd71=function(_0xd1a252,_0x16396f){_0xd1a252=_0xd1a252-0x0;var _0x560ee1=_0xd71d[_0xd1a252];return _0x560ee1;};'use strict';var Sequelize=require(_0xdd71('0x0'));module[_0xdd71('0x1')]={'name':{'type':Sequelize[_0xdd71('0x2')],'unique':_0xdd71('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xdd71('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xdd71('0x2')]}};
\ No newline at end of file
index 506d909..4d07c40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3685=['squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Tags','UserProfileResource','error','stack','name','send','index','Tag','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','map','options','includeAll','include','findAll','rows','show','params','rawAttributes','catch','create','body','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x3685,0xf8));var _0x5368=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3685[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x5368('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5368('0x1'));var jsonpatch=require(_0x5368('0x2'));var rp=require(_0x5368('0x3'));var moment=require(_0x5368('0x4'));var BPromise=require(_0x5368('0x5'));var Mustache=require(_0x5368('0x6'));var util=require(_0x5368('0x7'));var path=require(_0x5368('0x8'));var sox=require(_0x5368('0x9'));var csv=require(_0x5368('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5368('0xb'));var _=require(_0x5368('0xc'));var squel=require(_0x5368('0xd'));var crypto=require(_0x5368('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x5368('0xf'));var toCsv=require(_0x5368('0xa'));var querystring=require(_0x5368('0x10'));var Papa=require(_0x5368('0x11'));var Redis=require(_0x5368('0x12'));var authService=require(_0x5368('0x13'));var qs=require(_0x5368('0x14'));var as=require(_0x5368('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5368('0x16'))(_0x5368('0x17'));var utils=require(_0x5368('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x5368('0x19'));var db=require(_0x5368('0x1a'))['db'];function respondWithStatusCode(_0x4940af,_0x5d6a86){_0x5d6a86=_0x5d6a86||0xcc;return function(_0x5c626a){if(_0x5c626a){return _0x4940af[_0x5368('0x1b')](_0x5d6a86);}return _0x4940af[_0x5368('0x1c')](_0x5d6a86)[_0x5368('0x1d')]();};}function respondWithResult(_0x5df43,_0xa5ce3c){_0xa5ce3c=_0xa5ce3c||0xc8;return function(_0x2f18dd){if(_0x2f18dd){return _0x5df43[_0x5368('0x1c')](_0xa5ce3c)[_0x5368('0x1e')](_0x2f18dd);}};}function respondWithFilteredResult(_0x3a3b8e,_0x5b1da2){return function(_0x524fbf){if(_0x524fbf){var _0x41ce0e=typeof _0x5b1da2[_0x5368('0x1f')]==='undefined'&&typeof _0x5b1da2[_0x5368('0x20')]===_0x5368('0x21');var _0x973143=_0x524fbf[_0x5368('0x22')];var _0x5b10e9=_0x41ce0e?0x0:_0x5b1da2[_0x5368('0x1f')];var _0x56ac4d=_0x41ce0e?_0x524fbf['count']:_0x5b1da2[_0x5368('0x1f')]+_0x5b1da2['limit'];var _0x52afa9;if(_0x56ac4d>=_0x973143){_0x56ac4d=_0x973143;_0x52afa9=0xc8;}else{_0x52afa9=0xce;}_0x3a3b8e['status'](_0x52afa9);return _0x3a3b8e[_0x5368('0x23')](_0x5368('0x24'),_0x5b10e9+'-'+_0x56ac4d+'/'+_0x973143)[_0x5368('0x1e')](_0x524fbf);}return null;};}function patchUpdates(_0x5cef40){return function(_0x4e3267){try{jsonpatch[_0x5368('0x25')](_0x4e3267,_0x5cef40,!![]);}catch(_0x3c891a){return BPromise[_0x5368('0x26')](_0x3c891a);}return _0x4e3267[_0x5368('0x27')]();};}function saveUpdates(_0x1c2fcd,_0x1093e2){return function(_0x4885d0){if(_0x4885d0){return _0x4885d0[_0x5368('0x28')](_0x1c2fcd)[_0x5368('0x29')](function(_0x4705f2){return _0x4705f2;});}return null;};}function removeEntity(_0x57108b,_0x45884f){return function(_0xb994f4){if(_0xb994f4){return _0xb994f4[_0x5368('0x2a')]()[_0x5368('0x29')](function(){var _0x1c287f=_0xb994f4[_0x5368('0x2b')]({'plain':!![]});var _0xabac8c=_0x5368('0x2c');return db[_0x5368('0x2d')]['destroy']({'where':{'type':_0xabac8c,'resourceId':_0x1c287f['id']}})['then'](function(){return _0xb994f4;});})[_0x5368('0x29')](function(){_0x57108b[_0x5368('0x1c')](0xcc)[_0x5368('0x1d')]();});}};}function handleEntityNotFound(_0x452c81,_0x131722){return function(_0x4b94cd){if(!_0x4b94cd){_0x452c81[_0x5368('0x1b')](0x194);}return _0x4b94cd;};}function handleError(_0x200ad0,_0x2e18e0){_0x2e18e0=_0x2e18e0||0x1f4;return function(_0x2bcf41){logger[_0x5368('0x2e')](_0x2bcf41[_0x5368('0x2f')]);if(_0x2bcf41[_0x5368('0x30')]){delete _0x2bcf41[_0x5368('0x30')];}_0x200ad0[_0x5368('0x1c')](_0x2e18e0)[_0x5368('0x31')](_0x2bcf41);};}exports[_0x5368('0x32')]=function(_0x46ea22,_0x7449cd){var _0x5810cb={},_0x73111b={},_0x256abd={'count':0x0,'rows':[]};var _0x36e230=_['map'](db[_0x5368('0x33')]['rawAttributes'],function(_0x26fc48){return{'name':_0x26fc48[_0x5368('0x34')],'type':_0x26fc48['type'][_0x5368('0x35')]};});_0x73111b[_0x5368('0x36')]=_['map'](_0x36e230,'name');_0x73111b[_0x5368('0x37')]=_[_0x5368('0x38')](_0x46ea22['query']);_0x73111b[_0x5368('0x39')]=_[_0x5368('0x3a')](_0x73111b[_0x5368('0x36')],_0x73111b['query']);_0x5810cb[_0x5368('0x3b')]=_['intersection'](_0x73111b[_0x5368('0x36')],qs[_0x5368('0x3c')](_0x46ea22[_0x5368('0x37')]['fields']));_0x5810cb[_0x5368('0x3b')]=_0x5810cb[_0x5368('0x3b')][_0x5368('0x3d')]?_0x5810cb[_0x5368('0x3b')]:_0x73111b['model'];if(!_0x46ea22[_0x5368('0x37')]['hasOwnProperty'](_0x5368('0x3e'))){_0x5810cb[_0x5368('0x20')]=qs['limit'](_0x46ea22[_0x5368('0x37')][_0x5368('0x20')]);_0x5810cb[_0x5368('0x1f')]=qs[_0x5368('0x1f')](_0x46ea22['query'][_0x5368('0x1f')]);}_0x5810cb[_0x5368('0x3f')]=qs[_0x5368('0x40')](_0x46ea22[_0x5368('0x37')][_0x5368('0x40')]);_0x5810cb['where']=qs[_0x5368('0x39')](_[_0x5368('0x41')](_0x46ea22['query'],_0x73111b[_0x5368('0x39')]),_0x36e230);if(_0x46ea22[_0x5368('0x37')][_0x5368('0x42')]){_0x5810cb['where']=_[_0x5368('0x43')](_0x5810cb[_0x5368('0x44')],{'$or':_[_0x5368('0x45')](_0x36e230,function(_0x25e432){if(_0x25e432['type']!=='VIRTUAL'){var _0x1be46a={};_0x1be46a[_0x25e432[_0x5368('0x30')]]={'$like':'%'+_0x46ea22[_0x5368('0x37')]['filter']+'%'};return _0x1be46a;}})});}_0x5810cb=_['merge']({},_0x5810cb,_0x46ea22[_0x5368('0x46')]);var _0x5ae3f1={'where':_0x5810cb[_0x5368('0x44')]};return db[_0x5368('0x33')]['count'](_0x5ae3f1)[_0x5368('0x29')](function(_0x3b57a2){_0x256abd[_0x5368('0x22')]=_0x3b57a2;if(_0x46ea22[_0x5368('0x37')][_0x5368('0x47')]){_0x5810cb[_0x5368('0x48')]=[{'all':!![]}];}return db[_0x5368('0x33')][_0x5368('0x49')](_0x5810cb);})[_0x5368('0x29')](function(_0x43c776){_0x256abd[_0x5368('0x4a')]=_0x43c776;return _0x256abd;})[_0x5368('0x29')](respondWithFilteredResult(_0x7449cd,_0x5810cb))['catch'](handleError(_0x7449cd,null));};exports[_0x5368('0x4b')]=function(_0x61b1a1,_0xd4e247){var _0x4cb800={'raw':!![],'where':{'id':_0x61b1a1[_0x5368('0x4c')]['id']}},_0x1b66a1={};_0x1b66a1['model']=_[_0x5368('0x38')](db[_0x5368('0x33')][_0x5368('0x4d')]);_0x1b66a1[_0x5368('0x37')]=_[_0x5368('0x38')](_0x61b1a1[_0x5368('0x37')]);_0x1b66a1[_0x5368('0x39')]=_[_0x5368('0x3a')](_0x1b66a1[_0x5368('0x36')],_0x1b66a1[_0x5368('0x37')]);_0x4cb800['attributes']=_['intersection'](_0x1b66a1[_0x5368('0x36')],qs[_0x5368('0x3c')](_0x61b1a1[_0x5368('0x37')][_0x5368('0x3c')]));_0x4cb800['attributes']=_0x4cb800['attributes'][_0x5368('0x3d')]?_0x4cb800['attributes']:_0x1b66a1[_0x5368('0x36')];if(_0x61b1a1['query'][_0x5368('0x47')]){_0x4cb800['include']=[{'all':!![]}];}_0x4cb800=_[_0x5368('0x43')]({},_0x4cb800,_0x61b1a1[_0x5368('0x46')]);return db['Tag']['find'](_0x4cb800)[_0x5368('0x29')](handleEntityNotFound(_0xd4e247,null))['then'](respondWithResult(_0xd4e247,null))[_0x5368('0x4e')](handleError(_0xd4e247,null));};exports[_0x5368('0x4f')]=function(_0x2ee00b,_0x121d8d){return db['Tag'][_0x5368('0x4f')](_0x2ee00b[_0x5368('0x50')],{})[_0x5368('0x29')](function(_0x1d9c87){var _0x20e641=_0x2ee00b[_0x5368('0x51')][_0x5368('0x2b')]({'plain':!![]});if(!_0x20e641)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x20e641['role']===_0x5368('0x51')){var _0x7d7a5=_0x1d9c87[_0x5368('0x2b')]({'plain':!![]});var _0x4850f8=_0x5368('0x2c');return db[_0x5368('0x52')][_0x5368('0x53')]({'where':{'name':_0x4850f8,'userProfileId':_0x20e641[_0x5368('0x54')]},'raw':!![]})[_0x5368('0x29')](function(_0x233bf6){if(_0x233bf6&&_0x233bf6[_0x5368('0x55')]===0x0){return db[_0x5368('0x2d')]['create']({'name':_0x7d7a5[_0x5368('0x30')],'resourceId':_0x7d7a5['id'],'type':_0x233bf6[_0x5368('0x30')],'sectionId':_0x233bf6['id']},{})[_0x5368('0x29')](function(){return _0x1d9c87;});}else{return _0x1d9c87;}})[_0x5368('0x4e')](function(_0x5720c8){logger[_0x5368('0x2e')](_0x5368('0x56'),_0x5720c8);throw _0x5720c8;});}return _0x1d9c87;})[_0x5368('0x29')](respondWithResult(_0x121d8d,0xc9))[_0x5368('0x4e')](handleError(_0x121d8d,null));};exports[_0x5368('0x28')]=function(_0x44a481,_0x42544e){if(_0x44a481[_0x5368('0x50')]['id']){delete _0x44a481[_0x5368('0x50')]['id'];}return db[_0x5368('0x33')][_0x5368('0x53')]({'where':{'id':_0x44a481[_0x5368('0x4c')]['id']}})[_0x5368('0x29')](handleEntityNotFound(_0x42544e,null))[_0x5368('0x29')](saveUpdates(_0x44a481['body'],null))[_0x5368('0x29')](respondWithResult(_0x42544e,null))[_0x5368('0x4e')](handleError(_0x42544e,null));};exports[_0x5368('0x2a')]=function(_0x2971de,_0x2688a9){return db[_0x5368('0x33')]['find']({'where':{'id':_0x2971de[_0x5368('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2688a9,null))[_0x5368('0x29')](removeEntity(_0x2688a9,null))[_0x5368('0x4e')](handleError(_0x2688a9,null));};
\ No newline at end of file
+var _0x008c=['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','destroy','get','stack','name','index','map','Tag','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x16ab58,_0x591ef3){var _0x33f05f=function(_0x42f89e){while(--_0x42f89e){_0x16ab58['push'](_0x16ab58['shift']());}};_0x33f05f(++_0x591ef3);}(_0x008c,0x188));var _0xc008=function(_0x371ac2,_0xc5961c){_0x371ac2=_0x371ac2-0x0;var _0x37d93d=_0x008c[_0x371ac2];return _0x37d93d;};'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(){var _0x2e3cfb=_0x58a6ea[_0xc008('0x23')]({'plain':!![]});var _0x5410f5='Tags';return db['UserProfileResource'][_0xc008('0x22')]({'where':{'type':_0x5410f5,'resourceId':_0x2e3cfb['id']}})[_0xc008('0x21')](function(){return _0x58a6ea;});})[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e2aca,_0x4fce9c){return function(_0x4adbab){if(!_0x4adbab){_0x5e2aca['sendStatus'](0x194);}return _0x4adbab;};}function handleError(_0x3865c0,_0x29ba43){_0x29ba43=_0x29ba43||0x1f4;return function(_0x25eae4){logger['error'](_0x25eae4[_0xc008('0x24')]);if(_0x25eae4[_0xc008('0x25')]){delete _0x25eae4[_0xc008('0x25')];}_0x3865c0[_0xc008('0x19')](_0x29ba43)['send'](_0x25eae4);};}exports[_0xc008('0x26')]=function(_0x2e0b4e,_0x53ed35){var _0x58db82={},_0x539766={},_0x1032b2={'count':0x0,'rows':[]};var _0x267abd=_[_0xc008('0x27')](db[_0xc008('0x28')][_0xc008('0x29')],function(_0xceebc3){return{'name':_0xceebc3[_0xc008('0x2a')],'type':_0xceebc3[_0xc008('0x2b')][_0xc008('0x2c')]};});_0x539766[_0xc008('0x2d')]=_[_0xc008('0x27')](_0x267abd,_0xc008('0x25'));_0x539766['query']=_[_0xc008('0x2e')](_0x2e0b4e[_0xc008('0x2f')]);_0x539766['filters']=_[_0xc008('0x30')](_0x539766[_0xc008('0x2d')],_0x539766[_0xc008('0x2f')]);_0x58db82[_0xc008('0x31')]=_[_0xc008('0x30')](_0x539766[_0xc008('0x2d')],qs[_0xc008('0x32')](_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x32')]));_0x58db82['attributes']=_0x58db82[_0xc008('0x31')][_0xc008('0x33')]?_0x58db82[_0xc008('0x31')]:_0x539766[_0xc008('0x2d')];if(!_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x34')](_0xc008('0x35'))){_0x58db82['limit']=qs[_0xc008('0x1d')](_0x2e0b4e[_0xc008('0x2f')]['limit']);_0x58db82[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x2e0b4e['query'][_0xc008('0x1b')]);}_0x58db82[_0xc008('0x36')]=qs[_0xc008('0x37')](_0x2e0b4e['query']['sort']);_0x58db82['where']=qs[_0xc008('0x38')](_['pick'](_0x2e0b4e[_0xc008('0x2f')],_0x539766[_0xc008('0x38')]),_0x267abd);if(_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x39')]){_0x58db82[_0xc008('0x3a')]=_[_0xc008('0x3b')](_0x58db82[_0xc008('0x3a')],{'$or':_[_0xc008('0x27')](_0x267abd,function(_0xffd2b3){if(_0xffd2b3[_0xc008('0x2b')]!==_0xc008('0x3c')){var _0xdfca2e={};_0xdfca2e[_0xffd2b3[_0xc008('0x25')]]={'$like':'%'+_0x2e0b4e[_0xc008('0x2f')]['filter']+'%'};return _0xdfca2e;}})});}_0x58db82=_[_0xc008('0x3b')]({},_0x58db82,_0x2e0b4e[_0xc008('0x3d')]);var _0x30b7df={'where':_0x58db82[_0xc008('0x3a')]};return db['Tag'][_0xc008('0x1e')](_0x30b7df)[_0xc008('0x21')](function(_0xc8cb91){_0x1032b2[_0xc008('0x1e')]=_0xc8cb91;if(_0x2e0b4e[_0xc008('0x2f')]['includeAll']){_0x58db82[_0xc008('0x3e')]=[{'all':!![]}];}return db[_0xc008('0x28')][_0xc008('0x3f')](_0x58db82);})[_0xc008('0x21')](function(_0x7279e8){_0x1032b2['rows']=_0x7279e8;return _0x1032b2;})[_0xc008('0x21')](respondWithFilteredResult(_0x53ed35,_0x58db82))[_0xc008('0x40')](handleError(_0x53ed35,null));};exports[_0xc008('0x41')]=function(_0x408192,_0x4b80f3){var _0x26cd05={'raw':!![],'where':{'id':_0x408192[_0xc008('0x42')]['id']}},_0xe37446={};_0xe37446['model']=_[_0xc008('0x2e')](db['Tag'][_0xc008('0x29')]);_0xe37446['query']=_[_0xc008('0x2e')](_0x408192[_0xc008('0x2f')]);_0xe37446['filters']=_[_0xc008('0x30')](_0xe37446[_0xc008('0x2d')],_0xe37446[_0xc008('0x2f')]);_0x26cd05['attributes']=_[_0xc008('0x30')](_0xe37446[_0xc008('0x2d')],qs[_0xc008('0x32')](_0x408192[_0xc008('0x2f')][_0xc008('0x32')]));_0x26cd05[_0xc008('0x31')]=_0x26cd05['attributes']['length']?_0x26cd05['attributes']:_0xe37446[_0xc008('0x2d')];if(_0x408192[_0xc008('0x2f')][_0xc008('0x43')]){_0x26cd05[_0xc008('0x3e')]=[{'all':!![]}];}_0x26cd05=_[_0xc008('0x3b')]({},_0x26cd05,_0x408192[_0xc008('0x3d')]);return db[_0xc008('0x28')][_0xc008('0x44')](_0x26cd05)['then'](handleEntityNotFound(_0x4b80f3,null))['then'](respondWithResult(_0x4b80f3,null))['catch'](handleError(_0x4b80f3,null));};exports[_0xc008('0x45')]=function(_0x2651cf,_0x158eae){return db['Tag'][_0xc008('0x45')](_0x2651cf[_0xc008('0x46')],{})[_0xc008('0x21')](function(_0x1c2c50){var _0x4981b4=_0x2651cf[_0xc008('0x47')][_0xc008('0x23')]({'plain':!![]});if(!_0x4981b4)throw new Error(_0xc008('0x48'));if(_0x4981b4[_0xc008('0x49')]===_0xc008('0x47')){var _0x52c444=_0x1c2c50['get']({'plain':!![]});var _0x223056='Tags';return db[_0xc008('0x4a')][_0xc008('0x44')]({'where':{'name':_0x223056,'userProfileId':_0x4981b4[_0xc008('0x4b')]},'raw':!![]})['then'](function(_0x144ab2){if(_0x144ab2&&_0x144ab2[_0xc008('0x4c')]===0x0){return db[_0xc008('0x4d')][_0xc008('0x45')]({'name':_0x52c444[_0xc008('0x25')],'resourceId':_0x52c444['id'],'type':_0x144ab2['name'],'sectionId':_0x144ab2['id']},{})[_0xc008('0x21')](function(){return _0x1c2c50;});}else{return _0x1c2c50;}})[_0xc008('0x40')](function(_0x4b4c6d){logger[_0xc008('0x4e')](_0xc008('0x4f'),_0x4b4c6d);throw _0x4b4c6d;});}return _0x1c2c50;})['then'](respondWithResult(_0x158eae,0xc9))['catch'](handleError(_0x158eae,null));};exports[_0xc008('0x20')]=function(_0xd47b74,_0x20947b){if(_0xd47b74[_0xc008('0x46')]['id']){delete _0xd47b74[_0xc008('0x46')]['id'];}return db['Tag']['find']({'where':{'id':_0xd47b74[_0xc008('0x42')]['id']}})['then'](handleEntityNotFound(_0x20947b,null))[_0xc008('0x21')](saveUpdates(_0xd47b74[_0xc008('0x46')],null))[_0xc008('0x21')](respondWithResult(_0x20947b,null))[_0xc008('0x40')](handleError(_0x20947b,null));};exports[_0xc008('0x22')]=function(_0x27a167,_0x49d8b0){return db[_0xc008('0x28')][_0xc008('0x44')]({'where':{'id':_0x27a167[_0xc008('0x42')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x49d8b0,null))[_0xc008('0x21')](removeEntity(_0x49d8b0,null))['catch'](handleError(_0x49d8b0,null));};
\ No newline at end of file
index 8dd2cbe..3f0664d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0b8=['request-promise','rimraf','../../config/environment','./tag.attributes','exports','define','tools_tags','lodash','../../config/logger','api','moment','bluebird'];(function(_0x34cc52,_0x5f0c7e){var _0x296404=function(_0x5678a5){while(--_0x5678a5){_0x34cc52['push'](_0x34cc52['shift']());}};_0x296404(++_0x5f0c7e);}(_0xa0b8,0x133));var _0x8a0b=function(_0x20cb20,_0x256051){_0x20cb20=_0x20cb20-0x0;var _0x2fcf4b=_0xa0b8[_0x20cb20];return _0x2fcf4b;};'use strict';var _=require(_0x8a0b('0x0'));var util=require('util');var logger=require(_0x8a0b('0x1'))(_0x8a0b('0x2'));var moment=require(_0x8a0b('0x3'));var BPromise=require(_0x8a0b('0x4'));var rp=require(_0x8a0b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8a0b('0x6'));var config=require(_0x8a0b('0x7'));var attributes=require(_0x8a0b('0x8'));module[_0x8a0b('0x9')]=function(_0x5726a2,_0x320d22){return _0x5726a2[_0x8a0b('0xa')]('Tag',attributes,{'tableName':_0x8a0b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb8b7=['./tag.attributes','define','Tag','tools_tags','bluebird','request-promise','path','../../config/environment'];(function(_0x120a91,_0xf61b4e){var _0x304101=function(_0x102885){while(--_0x102885){_0x120a91['push'](_0x120a91['shift']());}};_0x304101(++_0xf61b4e);}(_0xb8b7,0x114));var _0x7b8b=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xb8b7[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x7b8b('0x0'));var rp=require(_0x7b8b('0x1'));var fs=require('fs');var path=require(_0x7b8b('0x2'));var rimraf=require('rimraf');var config=require(_0x7b8b('0x3'));var attributes=require(_0x7b8b('0x4'));module['exports']=function(_0x58a059,_0x43e2b4){return _0x58a059[_0x7b8b('0x5')](_0x7b8b('0x6'),attributes,{'tableName':_0x7b8b('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3285cdf..5e2058d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8664=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','Tag,\x20%s,\x20%s','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3062e2,_0x2f673e){var _0x5c241a=function(_0x102633){while(--_0x102633){_0x3062e2['push'](_0x3062e2['shift']());}};_0x5c241a(++_0x2f673e);}(_0x8664,0x11a));var _0x4866=function(_0xf4dc2c,_0x2984e7){_0xf4dc2c=_0xf4dc2c-0x0;var _0x290c4c=_0x8664[_0xf4dc2c];return _0x290c4c;};'use strict';var _=require(_0x4866('0x0'));var util=require(_0x4866('0x1'));var moment=require(_0x4866('0x2'));var BPromise=require(_0x4866('0x3'));var rs=require(_0x4866('0x4'));var fs=require('fs');var Redis=require(_0x4866('0x5'));var db=require(_0x4866('0x6'))['db'];var utils=require(_0x4866('0x7'));var logger=require(_0x4866('0x8'))('rpc');var config=require(_0x4866('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4866('0xa')][_0x4866('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x439f55,_0x10f7c1,_0x2b4bb0){return new BPromise(function(_0x142f18,_0x4e07e3){return client[_0x4866('0xc')](_0x439f55,_0x2b4bb0)[_0x4866('0xd')](function(_0x10a369){logger[_0x4866('0xe')](_0x4866('0xf'),_0x10f7c1,'request\x20sent');logger[_0x4866('0x10')](_0x4866('0x11'),_0x10f7c1,'request\x20sent',JSON[_0x4866('0x12')](_0x10a369));if(_0x10a369[_0x4866('0x13')]){if(_0x10a369['error']['code']===0x1f4){logger['error'](_0x4866('0xf'),_0x10f7c1,_0x10a369[_0x4866('0x13')][_0x4866('0x14')]);return _0x4e07e3(_0x10a369[_0x4866('0x13')][_0x4866('0x14')]);}logger[_0x4866('0x13')]('Tag,\x20%s,\x20%s',_0x10f7c1,_0x10a369[_0x4866('0x13')][_0x4866('0x14')]);return _0x142f18(_0x10a369['error'][_0x4866('0x14')]);}else{logger[_0x4866('0xe')](_0x4866('0xf'),_0x10f7c1,_0x4866('0x15'));_0x142f18(_0x10a369[_0x4866('0x16')][_0x4866('0x14')]);}})[_0x4866('0x17')](function(_0x653916){logger[_0x4866('0x13')]('Tag,\x20%s,\x20%s',_0x10f7c1,_0x653916);_0x4e07e3(_0x653916);});});}
\ No newline at end of file
+var _0xb717=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','Tag,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','lodash','moment','randomstring','ioredis'];(function(_0xc0e25c,_0x217f81){var _0x15c9ef=function(_0x23a1fb){while(--_0x23a1fb){_0xc0e25c['push'](_0xc0e25c['shift']());}};_0x15c9ef(++_0x217f81);}(_0xb717,0x1b4));var _0x7b71=function(_0x2d9d77,_0x70f873){_0x2d9d77=_0x2d9d77-0x0;var _0x85f32b=_0xb717[_0x2d9d77];return _0x85f32b;};'use strict';var _=require(_0x7b71('0x0'));var util=require('util');var moment=require(_0x7b71('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b71('0x2'));var fs=require('fs');var Redis=require(_0x7b71('0x3'));var db=require(_0x7b71('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b71('0x5'))(_0x7b71('0x6'));var config=require(_0x7b71('0x7'));var jayson=require(_0x7b71('0x8'));var client=jayson[_0x7b71('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x217efe,_0x27b060,_0xd81a5c){return new BPromise(function(_0x4238f6,_0xc46853){return client['request'](_0x217efe,_0xd81a5c)[_0x7b71('0xa')](function(_0x3e13a1){logger['info'](_0x7b71('0xb'),_0x27b060,_0x7b71('0xc'));logger[_0x7b71('0xd')]('Tag,\x20%s,\x20%s,\x20%s',_0x27b060,_0x7b71('0xc'),JSON['stringify'](_0x3e13a1));if(_0x3e13a1[_0x7b71('0xe')]){if(_0x3e13a1['error'][_0x7b71('0xf')]===0x1f4){logger[_0x7b71('0xe')](_0x7b71('0xb'),_0x27b060,_0x3e13a1[_0x7b71('0xe')][_0x7b71('0x10')]);return _0xc46853(_0x3e13a1['error'][_0x7b71('0x10')]);}logger['error'](_0x7b71('0xb'),_0x27b060,_0x3e13a1[_0x7b71('0xe')]['message']);return _0x4238f6(_0x3e13a1[_0x7b71('0xe')][_0x7b71('0x10')]);}else{logger[_0x7b71('0x11')]('Tag,\x20%s,\x20%s',_0x27b060,'request\x20sent');_0x4238f6(_0x3e13a1[_0x7b71('0x12')][_0x7b71('0x10')]);}})[_0x7b71('0x13')](function(_0x1b5d57){logger['error'](_0x7b71('0xb'),_0x27b060,_0x1b5d57);_0xc46853(_0x1b5d57);});});}
\ No newline at end of file
index 48c5590..f46be99 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(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_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
+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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 4422eb5..488354b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['STRING','sequelize'];(function(_0x548627,_0x4ec392){var _0x844a84=function(_0x2ffdd2){while(--_0x2ffdd2){_0x548627['push'](_0x548627['shift']());}};_0x844a84(++_0x4ec392);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0xb7e7[_0x1ccdf7];return _0x52a0ae;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x1793de,_0x4d7233){var _0x4f0309=function(_0x229ee7){while(--_0x229ee7){_0x1793de['push'](_0x1793de['shift']());}};_0x4f0309(++_0x4d7233);}(_0xbaf0,0x12a));var _0x0baf=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbaf0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index ed05797..a7a4618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34de=['attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','Team','then','includeAll','include','findAll','catch','show','params','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','UserId','SELECT','VoiceQueueId','UserVoiceQueue','destroy','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','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','UserOpenchannelQueue','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','end','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queues','add','ids','remove','Voice','Mail','Sms','Fax','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','Queue','emit','Queue:save','User','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','all','addAgents','spread','removeAgents','isArray','Openchannel','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./team.socket','register','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','sendStatus','stack','name','send','rawAttributes','fieldName','type','key','model','keys','filters','query'];(function(_0x5e1a06,_0x2018c0){var _0x5c0e0a=function(_0x1f50eb){while(--_0x1f50eb){_0x5e1a06['push'](_0x5e1a06['shift']());}};_0x5c0e0a(++_0x2018c0);}(_0x34de,0x69));var _0xe34d=function(_0x199f3a,_0x23a902){_0x199f3a=_0x199f3a-0x0;var _0x11c7a6=_0x34de[_0x199f3a];return _0x11c7a6;};'use strict';var emlformat=require(_0xe34d('0x0'));var rimraf=require(_0xe34d('0x1'));var zipdir=require(_0xe34d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe34d('0x3'));var moment=require(_0xe34d('0x4'));var BPromise=require(_0xe34d('0x5'));var Mustache=require(_0xe34d('0x6'));var util=require(_0xe34d('0x7'));var path=require(_0xe34d('0x8'));var sox=require(_0xe34d('0x9'));var csv=require('to-csv');var ejs=require(_0xe34d('0xa'));var fs=require('fs');var fs_extra=require(_0xe34d('0xb'));var _=require('lodash');var squel=require(_0xe34d('0xc'));var crypto=require(_0xe34d('0xd'));var jsforce=require(_0xe34d('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe34d('0xf'));var Redis=require('ioredis');var authService=require(_0xe34d('0x10'));var qs=require(_0xe34d('0x11'));var as=require(_0xe34d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xe34d('0x13'));var licenseUtil=require(_0xe34d('0x14'));var db=require(_0xe34d('0x15'))['db'];config[_0xe34d('0x16')]=_[_0xe34d('0x17')](config[_0xe34d('0x16')],{'host':_0xe34d('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe34d('0x16')]));require(_0xe34d('0x19'))[_0xe34d('0x1a')](socket);function respondWithStatusCode(_0x53c442,_0x33d798){_0x33d798=_0x33d798||0xcc;return function(_0x2c3bf0){if(_0x2c3bf0){return _0x53c442['sendStatus'](_0x33d798);}return _0x53c442[_0xe34d('0x1b')](_0x33d798)['end']();};}function respondWithResult(_0x453d12,_0x521e73){_0x521e73=_0x521e73||0xc8;return function(_0x3dae57){if(_0x3dae57){return _0x453d12[_0xe34d('0x1b')](_0x521e73)[_0xe34d('0x1c')](_0x3dae57);}};}function respondWithFilteredResult(_0x5265f7,_0x5e3640){return function(_0x5d2021){if(_0x5d2021){var _0x3976a4=typeof _0x5e3640[_0xe34d('0x1d')]===_0xe34d('0x1e')&&typeof _0x5e3640[_0xe34d('0x1f')]==='undefined';var _0x4facbb=_0x5d2021['count'];var _0xdc57da=_0x3976a4?0x0:_0x5e3640['offset'];var _0x5db57a=_0x3976a4?_0x5d2021[_0xe34d('0x20')]:_0x5e3640['offset']+_0x5e3640[_0xe34d('0x1f')];var _0x1a14f2;if(_0x5db57a>=_0x4facbb){_0x5db57a=_0x4facbb;_0x1a14f2=0xc8;}else{_0x1a14f2=0xce;}_0x5265f7[_0xe34d('0x1b')](_0x1a14f2);return _0x5265f7['set'](_0xe34d('0x21'),_0xdc57da+'-'+_0x5db57a+'/'+_0x4facbb)[_0xe34d('0x1c')](_0x5d2021);}return null;};}function patchUpdates(_0x8f6a20){return function(_0x5a5880){try{jsonpatch[_0xe34d('0x22')](_0x5a5880,_0x8f6a20,!![]);}catch(_0x4c7627){return BPromise[_0xe34d('0x23')](_0x4c7627);}return _0x5a5880[_0xe34d('0x24')]();};}function saveUpdates(_0x29eb48,_0x206ac0){return function(_0x2e8280){if(_0x2e8280){return _0x2e8280[_0xe34d('0x25')](_0x29eb48)['then'](function(_0x576dae){return _0x576dae;});}return null;};}function handleEntityNotFound(_0x30c999,_0x48fb51){return function(_0xcef766){if(!_0xcef766){_0x30c999[_0xe34d('0x26')](0x194);}return _0xcef766;};}function handleError(_0x42a537,_0x1d3e4e){_0x1d3e4e=_0x1d3e4e||0x1f4;return function(_0x452744){logger['error'](_0x452744[_0xe34d('0x27')]);if(_0x452744['name']){delete _0x452744[_0xe34d('0x28')];}_0x42a537[_0xe34d('0x1b')](_0x1d3e4e)[_0xe34d('0x29')](_0x452744);};}exports['index']=function(_0x3294a4,_0xc3210e){var _0x554176={},_0x8f66dc={},_0x1cd6f3={'count':0x0,'rows':[]};var _0x1db6c1=_['map'](db['Team'][_0xe34d('0x2a')],function(_0x440641){return{'name':_0x440641[_0xe34d('0x2b')],'type':_0x440641[_0xe34d('0x2c')][_0xe34d('0x2d')]};});_0x8f66dc[_0xe34d('0x2e')]=_['map'](_0x1db6c1,_0xe34d('0x28'));_0x8f66dc['query']=_[_0xe34d('0x2f')](_0x3294a4['query']);_0x8f66dc[_0xe34d('0x30')]=_['intersection'](_0x8f66dc['model'],_0x8f66dc[_0xe34d('0x31')]);_0x554176[_0xe34d('0x32')]=_[_0xe34d('0x33')](_0x8f66dc[_0xe34d('0x2e')],qs['fields'](_0x3294a4['query'][_0xe34d('0x34')]));_0x554176[_0xe34d('0x32')]=_0x554176[_0xe34d('0x32')][_0xe34d('0x35')]?_0x554176[_0xe34d('0x32')]:_0x8f66dc[_0xe34d('0x2e')];if(!_0x3294a4[_0xe34d('0x31')][_0xe34d('0x36')](_0xe34d('0x37'))){_0x554176[_0xe34d('0x1f')]=qs[_0xe34d('0x1f')](_0x3294a4['query'][_0xe34d('0x1f')]);_0x554176['offset']=qs['offset'](_0x3294a4[_0xe34d('0x31')][_0xe34d('0x1d')]);}_0x554176[_0xe34d('0x38')]=qs[_0xe34d('0x39')](_0x3294a4[_0xe34d('0x31')][_0xe34d('0x39')]);_0x554176[_0xe34d('0x3a')]=qs['filters'](_[_0xe34d('0x3b')](_0x3294a4[_0xe34d('0x31')],_0x8f66dc[_0xe34d('0x30')]),_0x1db6c1);if(_0x3294a4[_0xe34d('0x31')][_0xe34d('0x3c')]){_0x554176[_0xe34d('0x3a')]=_[_0xe34d('0x3d')](_0x554176[_0xe34d('0x3a')],{'$or':_[_0xe34d('0x3e')](_0x1db6c1,function(_0x2e70af){if(_0x2e70af[_0xe34d('0x2c')]!==_0xe34d('0x3f')){var _0x68993={};_0x68993[_0x2e70af[_0xe34d('0x28')]]={'$like':'%'+_0x3294a4[_0xe34d('0x31')][_0xe34d('0x3c')]+'%'};return _0x68993;}})});}_0x554176=_[_0xe34d('0x3d')]({},_0x554176,_0x3294a4['options']);var _0x23144a={'where':_0x554176[_0xe34d('0x3a')]};return db[_0xe34d('0x40')]['count'](_0x23144a)[_0xe34d('0x41')](function(_0x3021d6){_0x1cd6f3[_0xe34d('0x20')]=_0x3021d6;if(_0x3294a4[_0xe34d('0x31')][_0xe34d('0x42')]){_0x554176[_0xe34d('0x43')]=[{'all':!![]}];}return db[_0xe34d('0x40')][_0xe34d('0x44')](_0x554176);})[_0xe34d('0x41')](function(_0x28551b){_0x1cd6f3['rows']=_0x28551b;return _0x1cd6f3;})[_0xe34d('0x41')](respondWithFilteredResult(_0xc3210e,_0x554176))[_0xe34d('0x45')](handleError(_0xc3210e,null));};exports[_0xe34d('0x46')]=function(_0xe13442,_0x4dd15a){var _0x5ae36d={'raw':![],'where':{'id':_0xe13442[_0xe34d('0x47')]['id']}},_0x3fdfb9={};_0x3fdfb9[_0xe34d('0x2e')]=_[_0xe34d('0x2f')](db['Team']['rawAttributes']);_0x3fdfb9[_0xe34d('0x31')]=_[_0xe34d('0x2f')](_0xe13442[_0xe34d('0x31')]);_0x3fdfb9[_0xe34d('0x30')]=_[_0xe34d('0x33')](_0x3fdfb9[_0xe34d('0x2e')],_0x3fdfb9['query']);_0x5ae36d[_0xe34d('0x32')]=_[_0xe34d('0x33')](_0x3fdfb9[_0xe34d('0x2e')],qs[_0xe34d('0x34')](_0xe13442[_0xe34d('0x31')][_0xe34d('0x34')]));_0x5ae36d['attributes']=_0x5ae36d[_0xe34d('0x32')][_0xe34d('0x35')]?_0x5ae36d[_0xe34d('0x32')]:_0x3fdfb9['model'];if(_0xe13442['query'][_0xe34d('0x42')]){_0x5ae36d[_0xe34d('0x43')]=[{'all':!![]}];}_0x5ae36d=_[_0xe34d('0x3d')]({},_0x5ae36d,_0xe13442[_0xe34d('0x48')]);return db[_0xe34d('0x40')][_0xe34d('0x49')](_0x5ae36d)['then'](handleEntityNotFound(_0x4dd15a,null))[_0xe34d('0x41')](respondWithResult(_0x4dd15a,null))[_0xe34d('0x45')](handleError(_0x4dd15a,null));};exports[_0xe34d('0x4a')]=function(_0x4ba023,_0x84ac04){return db[_0xe34d('0x40')][_0xe34d('0x4a')](_0x4ba023[_0xe34d('0x4b')],{})['then'](function(_0x4c2be2){var _0x23de09=_0x4ba023[_0xe34d('0x4c')][_0xe34d('0x4d')]({'plain':!![]});if(!_0x23de09)throw new Error(_0xe34d('0x4e'));if(_0x23de09[_0xe34d('0x4f')]===_0xe34d('0x4c')){var _0x412db1=_0x4c2be2[_0xe34d('0x4d')]({'plain':!![]});var _0x507182=_0xe34d('0x50');return db[_0xe34d('0x51')]['find']({'where':{'name':_0x507182,'userProfileId':_0x23de09[_0xe34d('0x52')]},'raw':!![]})[_0xe34d('0x41')](function(_0x19a3c3){if(_0x19a3c3&&_0x19a3c3['autoAssociation']===0x0){return db[_0xe34d('0x53')]['create']({'name':_0x412db1['name'],'resourceId':_0x412db1['id'],'type':_0x19a3c3[_0xe34d('0x28')],'sectionId':_0x19a3c3['id']},{})[_0xe34d('0x41')](function(){return _0x4c2be2;});}else{return _0x4c2be2;}})['catch'](function(_0x5e55d2){logger[_0xe34d('0x54')](_0xe34d('0x55'),_0x5e55d2);throw _0x5e55d2;});}return _0x4c2be2;})[_0xe34d('0x41')](respondWithResult(_0x84ac04,0xc9))['catch'](handleError(_0x84ac04,null));};exports[_0xe34d('0x25')]=function(_0x44861f,_0x2701be){if(_0x44861f['body']['id']){delete _0x44861f[_0xe34d('0x4b')]['id'];}return db[_0xe34d('0x40')][_0xe34d('0x49')]({'where':{'id':_0x44861f[_0xe34d('0x47')]['id']}})['then'](handleEntityNotFound(_0x2701be,null))[_0xe34d('0x41')](saveUpdates(_0x44861f['body'],null))[_0xe34d('0x41')](respondWithResult(_0x2701be,null))[_0xe34d('0x45')](handleError(_0x2701be,null));};exports['destroy']=function(_0x3537ce,_0x4e581b){var _0x5dd256=_0x3537ce['params']['id'];var _0x2dc7d4=[];return db[_0xe34d('0x56')][_0xe34d('0x57')](function(_0x2eb1bc){var _0x5bf120=_0xe34d('0x58')+_0x5dd256;return db[_0xe34d('0x56')]['query'](_0x5bf120,{'type':db[_0xe34d('0x59')][_0xe34d('0x5a')]['SELECT'],'raw':!![],'transaction':_0x2eb1bc})[_0xe34d('0x41')](function(_0x445be6){_0x2dc7d4=_[_0xe34d('0x3e')](_0x445be6,function(_0x2a0638){return Number(_0x2a0638[_0xe34d('0x5b')]);});})['then'](function(){var _0x51e933='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x5dd256;return db['sequelize'][_0xe34d('0x31')](_0x51e933,{'type':db[_0xe34d('0x59')][_0xe34d('0x5a')][_0xe34d('0x5c')],'raw':!![],'transaction':_0x2eb1bc});})['then'](function(_0x820003){var _0x1c46bd=_[_0xe34d('0x3e')](_0x820003,function(_0x2484d5){return Number(_0x2484d5[_0xe34d('0x5d')]);});return db[_0xe34d('0x5e')][_0xe34d('0x5f')]({'where':{'UserId':{'$in':_0x2dc7d4},'VoiceQueueId':{'$in':_0x1c46bd}},'transaction':_0x2eb1bc});})['then'](function(){var _0x4d660c=_0xe34d('0x60')+_0x5dd256;return db[_0xe34d('0x56')]['query'](_0x4d660c,{'type':db[_0xe34d('0x59')][_0xe34d('0x5a')][_0xe34d('0x5c')],'raw':!![],'transaction':_0x2eb1bc});})['then'](function(_0x2dd4c4){var _0x56ca96=_['map'](_0x2dd4c4,function(_0xa0779d){return Number(_0xa0779d[_0xe34d('0x61')]);});return db[_0xe34d('0x62')][_0xe34d('0x5f')]({'where':{'UserId':{'$in':_0x2dc7d4},'MailQueueId':{'$in':_0x56ca96}},'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(){var _0x218354=_0xe34d('0x63')+_0x5dd256;return db[_0xe34d('0x56')]['query'](_0x218354,{'type':db[_0xe34d('0x59')][_0xe34d('0x5a')][_0xe34d('0x5c')],'raw':!![],'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(_0x343359){var _0x49a665=_[_0xe34d('0x3e')](_0x343359,function(_0x5a3d1d){return Number(_0x5a3d1d[_0xe34d('0x64')]);});return db['UserSmsQueue'][_0xe34d('0x5f')]({'where':{'UserId':{'$in':_0x2dc7d4},'SmsQueueId':{'$in':_0x49a665}},'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(){var _0x18c301='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x5dd256;return db['sequelize'][_0xe34d('0x31')](_0x18c301,{'type':db['Sequelize']['QueryTypes'][_0xe34d('0x5c')],'raw':!![],'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(_0x4ba0dd){var _0x37a923=_[_0xe34d('0x3e')](_0x4ba0dd,function(_0x1e9569){return Number(_0x1e9569[_0xe34d('0x65')]);});return db[_0xe34d('0x66')][_0xe34d('0x5f')]({'where':{'UserId':{'$in':_0x2dc7d4},'ChatQueueId':{'$in':_0x37a923}},'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(){var _0x55cda5=_0xe34d('0x67')+_0x5dd256;return db[_0xe34d('0x56')][_0xe34d('0x31')](_0x55cda5,{'type':db[_0xe34d('0x59')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(_0x344f75){var _0xb3da87=_['map'](_0x344f75,function(_0x12e065){return Number(_0x12e065[_0xe34d('0x68')]);});return db[_0xe34d('0x69')][_0xe34d('0x5f')]({'where':{'UserId':{'$in':_0x2dc7d4},'FaxQueueId':{'$in':_0xb3da87}},'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(){var _0x5625ed=_0xe34d('0x6a')+_0x5dd256;return db['sequelize'][_0xe34d('0x31')](_0x5625ed,{'type':db[_0xe34d('0x59')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x2eb1bc});})['then'](function(_0x7e3df1){var _0x37f9e3=_[_0xe34d('0x3e')](_0x7e3df1,function(_0x215985){return Number(_0x215985[_0xe34d('0x6b')]);});return db[_0xe34d('0x6c')][_0xe34d('0x5f')]({'where':{'UserId':{'$in':_0x2dc7d4},'OpenchannelQueueId':{'$in':_0x37f9e3}},'transaction':_0x2eb1bc});})['then'](function(){var _0x487bf9='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x5dd256;return db[_0xe34d('0x56')]['query'](_0x487bf9,{'type':db[_0xe34d('0x59')][_0xe34d('0x5a')][_0xe34d('0x5c')],'raw':!![],'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(_0x6315d5){var _0x5ad30f=_[_0xe34d('0x3e')](_0x6315d5,function(_0x4401ed){return Number(_0x4401ed[_0xe34d('0x6d')]);});return db[_0xe34d('0x6e')][_0xe34d('0x5f')]({'where':{'UserId':{'$in':_0x2dc7d4},'WhatsappQueueId':{'$in':_0x5ad30f}},'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(){return db[_0xe34d('0x6f')][_0xe34d('0x49')]({'where':{'TeamId':_0x5dd256}});})[_0xe34d('0x41')](function(_0x22df1e){if(_0x22df1e===null){return;}return db[_0xe34d('0x70')][_0xe34d('0x5f')]({'where':{'UserId':{'$in':_0x2dc7d4},'VoicePrefixId':_0x22df1e[_0xe34d('0x71')]},'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(){return db[_0xe34d('0x40')][_0xe34d('0x5f')]({'where':{'id':_0x5dd256},'cascade':!![],'transaction':_0x2eb1bc});})[_0xe34d('0x41')](function(_0x5bf22d){if(_0x5bf22d===0x0){_0x4e581b[_0xe34d('0x26')](0x194);}else{return db[_0xe34d('0x53')][_0xe34d('0x5f')]({'where':{'type':_0xe34d('0x50'),'resourceId':_0x5dd256},'cascade':!![],'transaction':_0x2eb1bc})[_0xe34d('0x41')](function(){_0x4e581b['status'](0xcc)[_0xe34d('0x72')]();});}})[_0xe34d('0x45')](function(_0x5ed4b4){_0x4e581b['status'](0x1f4)['send'](_0x5ed4b4);});});};exports[_0xe34d('0x73')]=function(_0x1bb118,_0x4b7567,_0x5af0d1){return db[_0xe34d('0x40')][_0xe34d('0x74')]({'where':{'id':_0x1bb118[_0xe34d('0x47')]['id']}})[_0xe34d('0x41')](handleEntityNotFound(_0x4b7567,null))[_0xe34d('0x41')](function(_0x24272d){if(!_0x1bb118['query'][_0xe34d('0x75')]||!utils[_0xe34d('0x76')](_0x1bb118['query']['channel'])){throw new db[(_0xe34d('0x59'))][(_0xe34d('0x77'))](_0xe34d('0x78'));}var _0x3f2f1c={};var _0x2aee8f={};_0x2aee8f[_0xe34d('0x2e')]=_[_0xe34d('0x2f')](db[_[_0xe34d('0x79')](_0x1bb118[_0xe34d('0x31')][_0xe34d('0x75')][_0xe34d('0x7a')]())+'Queue'][_0xe34d('0x2a')]);_0x2aee8f[_0xe34d('0x31')]=_[_0xe34d('0x2f')](_0x1bb118[_0xe34d('0x31')]);_0x2aee8f[_0xe34d('0x30')]=_[_0xe34d('0x33')](_0x2aee8f[_0xe34d('0x2e')],_0x2aee8f[_0xe34d('0x31')]);_0x3f2f1c[_0xe34d('0x32')]=_[_0xe34d('0x33')](_0x2aee8f[_0xe34d('0x2e')],qs[_0xe34d('0x34')](_0x1bb118[_0xe34d('0x31')][_0xe34d('0x34')]));_0x3f2f1c[_0xe34d('0x32')]=_0x3f2f1c['attributes'][_0xe34d('0x35')]?_0x3f2f1c[_0xe34d('0x32')]:_0x2aee8f[_0xe34d('0x2e')];_0x3f2f1c[_0xe34d('0x1f')]=qs[_0xe34d('0x1f')](_0x1bb118[_0xe34d('0x31')][_0xe34d('0x1f')]);_0x3f2f1c['offset']=qs[_0xe34d('0x1d')](_0x1bb118[_0xe34d('0x31')]['offset']);_0x3f2f1c['order']=qs[_0xe34d('0x39')](_0x1bb118[_0xe34d('0x31')]['sort']);_0x3f2f1c[_0xe34d('0x3a')]=qs['filters'](_[_0xe34d('0x3b')](_0x1bb118[_0xe34d('0x31')],_0x2aee8f[_0xe34d('0x30')]));_0x3f2f1c=_[_0xe34d('0x3d')]({},_0x3f2f1c,_0x1bb118[_0xe34d('0x48')]);return _0x24272d['get'+_[_0xe34d('0x79')](_0x1bb118['query'][_0xe34d('0x75')][_0xe34d('0x7a')]())+_0xe34d('0x7b')](_0x3f2f1c);})['then'](respondWithResult(_0x4b7567,null))['catch'](handleError(_0x4b7567,null));};exports['addQueues']=function(_0x5f562a,_0x330bdf,_0x31590a){return db['Team']['findOne']({'where':{'id':_0x5f562a[_0xe34d('0x47')]['id']}})['then'](function(_0x47e374){if(_0x47e374){if(!_0x5f562a[_0xe34d('0x4b')][_0xe34d('0x75')]||!utils['isValidChannel'](_0x5f562a['body'][_0xe34d('0x75')])){throw new db['Sequelize']['ValidationError'](_0xe34d('0x78'));}return _0x47e374[_0xe34d('0x7c')+_[_0xe34d('0x79')](_0x5f562a[_0xe34d('0x4b')][_0xe34d('0x75')][_0xe34d('0x7a')]())+'Queues'](_0x5f562a[_0xe34d('0x4b')][_0xe34d('0x7d')]);}return null;})[_0xe34d('0x41')](handleEntityNotFound(_0x330bdf,null))[_0xe34d('0x41')](respondWithStatusCode(_0x330bdf,null))[_0xe34d('0x45')](handleError(_0x330bdf,null));};exports['removeQueues']=function(_0x26a94c,_0x5dab97,_0x55a06c){return db[_0xe34d('0x40')][_0xe34d('0x74')]({'where':{'id':_0x26a94c[_0xe34d('0x47')]['id']}})['then'](function(_0x44a05f){if(_0x44a05f){if(!_0x26a94c['query'][_0xe34d('0x75')]||!utils['isValidChannel'](_0x26a94c[_0xe34d('0x31')][_0xe34d('0x75')])){throw new db[(_0xe34d('0x59'))][(_0xe34d('0x77'))](_0xe34d('0x78'));}return _0x44a05f[_0xe34d('0x7e')+_[_0xe34d('0x79')](_0x26a94c['query'][_0xe34d('0x75')][_0xe34d('0x7a')]())+_0xe34d('0x7b')](_0x26a94c['query'][_0xe34d('0x7d')]);}return null;})[_0xe34d('0x41')](handleEntityNotFound(_0x5dab97,null))[_0xe34d('0x41')](respondWithStatusCode(_0x5dab97,null))[_0xe34d('0x45')](handleError(_0x5dab97,null));};exports['addAgents']=function(_0x222081,_0x5ba4dc){var _0x533230=_['isArray'](_0x222081[_0xe34d('0x4b')][_0xe34d('0x7d')])?_0x222081[_0xe34d('0x4b')][_0xe34d('0x7d')]:[_0x222081[_0xe34d('0x4b')][_0xe34d('0x7d')]];var _0x53923f=_0x222081['params']['id'];return db[_0xe34d('0x40')][_0xe34d('0x49')]({'where':{'id':_0x53923f}})[_0xe34d('0x41')](handleEntityNotFound(_0x5ba4dc,null))[_0xe34d('0x41')](function(_0x1d480b){if(_0x1d480b){var _0x3f0ce6=[_0xe34d('0x7f'),'Chat',_0xe34d('0x80'),_0xe34d('0x81'),_0xe34d('0x82'),'Openchannel',_0xe34d('0x83')];return db['sequelize']['transaction'](function(_0x3a3d28){var _0x119874=_[_0xe34d('0x3e')](_0x3f0ce6,function(_0x2fc648){var _0x279d10={'attributes':['id','name']};if(_0x2fc648===_0xe34d('0x7f')){_0x279d10[_0xe34d('0x84')]={'attributes':[_0xe34d('0x85')]};}return _0x1d480b[_0xe34d('0x4d')+_0x2fc648+_0xe34d('0x7b')](_0x279d10)[_0xe34d('0x41')](function(_0x44174b){var _0x172309=_[_0xe34d('0x3e')](_0x44174b,function(_0x3d886b){var _0x509004=_[_0xe34d('0x3e')](_0x533230,function(_0x5aeb19){var _0x1b9704={'where':{'UserId':_0x5aeb19,[_0x2fc648+_0xe34d('0x86')]:_0x3d886b['id']},'transaction':_0x3a3d28};if(_0x2fc648==='Voice'){_0x1b9704[_0xe34d('0x17')]={'penalty':_0x3d886b[_0xe34d('0x87')][_0xe34d('0x85')]};}return db['User'+_0x2fc648+_0xe34d('0x88')]['findOrCreate'](_0x1b9704)[_0xe34d('0x41')](function(){socket[_0xe34d('0x89')](_0xe34d('0x4c')+_0x2fc648+_0xe34d('0x8a'),{'UserId':_0x5aeb19,[_0x2fc648+_0xe34d('0x86')]:_0x3d886b['id']});if(_0x2fc648!==_0xe34d('0x7f')){return;}return db[_0xe34d('0x8b')][_0xe34d('0x44')]({'where':{'id':_0x533230,'online':0x1},'attributes':['id','name',_0xe34d('0x8c'),_0xe34d('0x8d'),_0xe34d('0x8e')],'raw':!![]})[_0xe34d('0x41')](function(_0xe32efe){var _0x1e80b2=_[_0xe34d('0x3e')](_0xe32efe,function(_0x142373){return db[_0xe34d('0x8f')][_0xe34d('0x90')]({'membername':_0x142373['name'],'UserId':_0x142373['id'],'queue_name':_0x3d886b['name'],'VoiceQueueId':_0x3d886b['id'],'interface':_[_0xe34d('0x91')](_0x142373[_0xe34d('0x8e')])?util[_0xe34d('0x92')](_0xe34d('0x93'),_0x142373[_0xe34d('0x28')]):_0x142373['interface'],'paused':_0x142373[_0xe34d('0x8d')]||![],'penalty':_0x3d886b[_0xe34d('0x87')][_0xe34d('0x85')]},{'transaction':_0x3a3d28});});return Promise['all'](_0x1e80b2);});});});return Promise[_0xe34d('0x94')](_0x509004);});return Promise[_0xe34d('0x94')](_0x172309);})[_0xe34d('0x41')](function(){return db[_0xe34d('0x6f')][_0xe34d('0x74')]({'where':{'teamId':_0x53923f}})[_0xe34d('0x41')](function(_0x20a977){if(_0x20a977){var _0x1b3df8=_[_0xe34d('0x3e')](_0x533230,function(_0x442593){db[_0xe34d('0x70')][_0xe34d('0x90')]({'UserId':_0x442593,'VoicePrefixId':_0x20a977['VoicePrefixId']});});return Promise['all'](_0x1b3df8);}});});});return Promise[_0xe34d('0x94')](_0x119874)[_0xe34d('0x41')](function(){return _0x1d480b[_0xe34d('0x95')](_0x533230,{'transaction':_0x3a3d28})[_0xe34d('0x96')](function(_0x305f29){return _0x305f29;});});});}})[_0xe34d('0x41')](respondWithResult(_0x5ba4dc,null))[_0xe34d('0x45')](handleError(_0x5ba4dc,null));};exports[_0xe34d('0x97')]=function(_0x567cad,_0x2f4f38){var _0xdb303b=_[_0xe34d('0x98')](_0x567cad[_0xe34d('0x31')][_0xe34d('0x7d')])?_0x567cad[_0xe34d('0x31')][_0xe34d('0x7d')]:[_0x567cad[_0xe34d('0x31')]['ids']];var _0x215728=_0x567cad[_0xe34d('0x47')]['id'];return db['Team']['find']({'where':{'id':_0x215728}})[_0xe34d('0x41')](handleEntityNotFound(_0x2f4f38,null))['then'](function(_0x3555cc){if(_0x3555cc){var _0xf59fcf=['Voice','Chat',_0xe34d('0x80'),_0xe34d('0x81'),'Fax',_0xe34d('0x99'),_0xe34d('0x83')];return db[_0xe34d('0x56')][_0xe34d('0x57')](function(_0x79e0f6){var _0x28464a=_[_0xe34d('0x3e')](_0xf59fcf,function(_0x381be2){var _0x272fa9={'attributes':['id',_0xe34d('0x28')]};return _0x3555cc[_0xe34d('0x4d')+_0x381be2+'Queues'](_0x272fa9)['then'](function(_0x395a9d){var _0x593a0d=_[_0xe34d('0x3e')](_0x395a9d,function(_0x4a4b23){return _0x4a4b23['removeAgents'](_0xdb303b,{'transaction':_0x79e0f6})[_0xe34d('0x41')](function(){var _0x2615ba=_[_0xe34d('0x3e')](_0xdb303b,function(_0x4911b2){socket[_0xe34d('0x89')](_0xe34d('0x4c')+_0x381be2+'Queue:remove',{'UserId':Number(_0x4911b2),[_0x381be2+_0xe34d('0x86')]:_0x4a4b23['id']});if(_0x381be2!==_0xe34d('0x7f')){return;}return db['UserVoiceQueueRt'][_0xe34d('0x5f')]({'where':{'VoiceQueueId':_0x4a4b23['id'],'UserId':_0x4911b2},'transaction':_0x79e0f6});});return Promise['all'](_0x2615ba);});});return Promise[_0xe34d('0x94')](_0x593a0d);});});return Promise['all'](_0x28464a)[_0xe34d('0x41')](function(){return _0x3555cc[_0xe34d('0x97')](_0xdb303b,{'transaction':_0x79e0f6});})[_0xe34d('0x41')](function(){return db['TeamVoicePrefix'][_0xe34d('0x74')]({'where':{'teamId':_0x215728}})['then'](function(_0x34530c){if(_0x34530c){var _0x249ad0=_[_0xe34d('0x3e')](_0xdb303b,function(_0x381e91){db[_0xe34d('0x70')]['destroy']({'where':{'UserId':_0x381e91,'VoicePrefixId':_0x34530c[_0xe34d('0x71')]}});});return Promise[_0xe34d('0x94')](_0x249ad0);}});});});}})['then'](respondWithStatusCode(_0x2f4f38,null))[_0xe34d('0x45')](handleError(_0x2f4f38,null));};exports[_0xe34d('0x9a')]=function(_0x50902b,_0x3ebebf,_0x1bf8bf){var _0xce3720={};var _0x2384e9={};var _0x432cc4;var _0x96f565;return db[_0xe34d('0x40')][_0xe34d('0x74')]({'where':{'id':_0x50902b[_0xe34d('0x47')]['id']}})[_0xe34d('0x41')](handleEntityNotFound(_0x3ebebf,null))['then'](function(_0x319f74){if(_0x319f74){_0x432cc4=_0x319f74;_0x2384e9['model']=_[_0xe34d('0x2f')](db[_0xe34d('0x8b')]['rawAttributes']);_0x2384e9[_0xe34d('0x31')]=_['keys'](_0x50902b[_0xe34d('0x31')]);_0x2384e9[_0xe34d('0x30')]=_[_0xe34d('0x33')](_0x2384e9[_0xe34d('0x2e')],_0x2384e9[_0xe34d('0x31')]);_0xce3720[_0xe34d('0x32')]=_[_0xe34d('0x33')](_0x2384e9[_0xe34d('0x2e')],qs[_0xe34d('0x34')](_0x50902b['query'][_0xe34d('0x34')]));_0xce3720[_0xe34d('0x32')]=_0xce3720[_0xe34d('0x32')][_0xe34d('0x35')]?_0xce3720['attributes']:_0x2384e9['model'];_0xce3720[_0xe34d('0x38')]=qs[_0xe34d('0x39')](_0x50902b[_0xe34d('0x31')][_0xe34d('0x39')]);_0xce3720['where']=qs[_0xe34d('0x30')](_[_0xe34d('0x3b')](_0x50902b[_0xe34d('0x31')],_0x2384e9[_0xe34d('0x30')]));if(_0x50902b['query'][_0xe34d('0x3c')]){_0xce3720[_0xe34d('0x3a')]=_[_0xe34d('0x3d')](_0xce3720[_0xe34d('0x3a')],{'$or':_['map'](_0xce3720[_0xe34d('0x32')],function(_0x472c85){var _0x294164={};_0x294164[_0x472c85]={'$like':'%'+_0x50902b[_0xe34d('0x31')]['filter']+'%'};return _0x294164;})});}_0xce3720=_[_0xe34d('0x3d')]({},_0xce3720,_0x50902b['options']);return _0x432cc4['getAgents'](_0xce3720);}})[_0xe34d('0x41')](function(_0x1e4df4){if(_0x1e4df4){_0x96f565=_0x1e4df4[_0xe34d('0x35')];if(!_0x50902b[_0xe34d('0x31')][_0xe34d('0x36')](_0xe34d('0x37'))){_0xce3720[_0xe34d('0x1f')]=qs[_0xe34d('0x1f')](_0x50902b[_0xe34d('0x31')][_0xe34d('0x1f')]);_0xce3720[_0xe34d('0x1d')]=qs[_0xe34d('0x1d')](_0x50902b[_0xe34d('0x31')][_0xe34d('0x1d')]);}return _0x432cc4[_0xe34d('0x9a')](_0xce3720);}})['then'](function(_0x35d70){if(_0x35d70){return _0x35d70?{'count':_0x96f565,'rows':_0x35d70}:null;}})[_0xe34d('0x41')](respondWithResult(_0x3ebebf,null))[_0xe34d('0x45')](handleError(_0x3ebebf,null));};
\ No newline at end of file
+var _0x6a48=['user','Queue:save','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','all','spread','removeAgents','Whatsapp','Queue:remove','TeamVoicePrefix','getAgents','pick','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./team.socket','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','Team','includeAll','include','findAll','catch','show','params','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Teams','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','QueryTypes','UserId','Sequelize','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','UserMailQueue','destroy','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT','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','UserOpenchannelQueue','WhatsappQueueId','UserWhatsappQueue','UserVoicePrefix','VoicePrefixId','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','ids','removeQueues','remove','addAgents','isArray','Voice','Sms','Fax','Openchannel','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x6a48,0x1dc));var _0x86a4=function(_0x51693c,_0x130414){_0x51693c=_0x51693c-0x0;var _0x32f368=_0x6a48[_0x51693c];return _0x32f368;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86a4('0x0'));var zipdir=require(_0x86a4('0x1'));var jsonpatch=require(_0x86a4('0x2'));var rp=require(_0x86a4('0x3'));var moment=require(_0x86a4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x86a4('0x5'));var util=require(_0x86a4('0x6'));var path=require(_0x86a4('0x7'));var sox=require(_0x86a4('0x8'));var csv=require(_0x86a4('0x9'));var ejs=require(_0x86a4('0xa'));var fs=require('fs');var fs_extra=require(_0x86a4('0xb'));var _=require(_0x86a4('0xc'));var squel=require('squel');var crypto=require(_0x86a4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x86a4('0xe'));var toCsv=require(_0x86a4('0x9'));var querystring=require('querystring');var Papa=require(_0x86a4('0xf'));var Redis=require(_0x86a4('0x10'));var authService=require(_0x86a4('0x11'));var qs=require(_0x86a4('0x12'));var as=require(_0x86a4('0x13'));var hardwareService=require(_0x86a4('0x14'));var logger=require(_0x86a4('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x86a4('0x16'));var licenseUtil=require(_0x86a4('0x17'));var db=require(_0x86a4('0x18'))['db'];config[_0x86a4('0x19')]=_[_0x86a4('0x1a')](config[_0x86a4('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x86a4('0x1b'))(new Redis(config['redis']));require(_0x86a4('0x1c'))['register'](socket);function respondWithStatusCode(_0x4808c4,_0x54401e){_0x54401e=_0x54401e||0xcc;return function(_0x2fd94e){if(_0x2fd94e){return _0x4808c4[_0x86a4('0x1d')](_0x54401e);}return _0x4808c4[_0x86a4('0x1e')](_0x54401e)[_0x86a4('0x1f')]();};}function respondWithResult(_0x9cccad,_0x58d78c){_0x58d78c=_0x58d78c||0xc8;return function(_0x515765){if(_0x515765){return _0x9cccad[_0x86a4('0x1e')](_0x58d78c)[_0x86a4('0x20')](_0x515765);}};}function respondWithFilteredResult(_0x5b0787,_0x2393e3){return function(_0x3a1716){if(_0x3a1716){var _0x4a892c=typeof _0x2393e3[_0x86a4('0x21')]===_0x86a4('0x22')&&typeof _0x2393e3[_0x86a4('0x23')]===_0x86a4('0x22');var _0x5edffa=_0x3a1716[_0x86a4('0x24')];var _0x540ffa=_0x4a892c?0x0:_0x2393e3[_0x86a4('0x21')];var _0x17f439=_0x4a892c?_0x3a1716[_0x86a4('0x24')]:_0x2393e3['offset']+_0x2393e3[_0x86a4('0x23')];var _0x576346;if(_0x17f439>=_0x5edffa){_0x17f439=_0x5edffa;_0x576346=0xc8;}else{_0x576346=0xce;}_0x5b0787[_0x86a4('0x1e')](_0x576346);return _0x5b0787['set'](_0x86a4('0x25'),_0x540ffa+'-'+_0x17f439+'/'+_0x5edffa)[_0x86a4('0x20')](_0x3a1716);}return null;};}function patchUpdates(_0x5845a2){return function(_0xd49350){try{jsonpatch[_0x86a4('0x26')](_0xd49350,_0x5845a2,!![]);}catch(_0x1bfa09){return BPromise['reject'](_0x1bfa09);}return _0xd49350['save']();};}function saveUpdates(_0x3ec493,_0x6ff359){return function(_0x367686){if(_0x367686){return _0x367686[_0x86a4('0x27')](_0x3ec493)[_0x86a4('0x28')](function(_0x58379e){return _0x58379e;});}return null;};}function handleEntityNotFound(_0x3ad881,_0x1cb45a){return function(_0x404dec){if(!_0x404dec){_0x3ad881[_0x86a4('0x1d')](0x194);}return _0x404dec;};}function handleError(_0x30a7a2,_0x37f3ca){_0x37f3ca=_0x37f3ca||0x1f4;return function(_0x4bdffb){logger[_0x86a4('0x29')](_0x4bdffb['stack']);if(_0x4bdffb[_0x86a4('0x2a')]){delete _0x4bdffb[_0x86a4('0x2a')];}_0x30a7a2[_0x86a4('0x1e')](_0x37f3ca)[_0x86a4('0x2b')](_0x4bdffb);};}exports[_0x86a4('0x2c')]=function(_0x58daef,_0x561802){var _0x4ee41e={},_0x3633b2={},_0x28d578={'count':0x0,'rows':[]};var _0x13faaf=_[_0x86a4('0x2d')](db['Team'][_0x86a4('0x2e')],function(_0x46b6e1){return{'name':_0x46b6e1[_0x86a4('0x2f')],'type':_0x46b6e1[_0x86a4('0x30')][_0x86a4('0x31')]};});_0x3633b2[_0x86a4('0x32')]=_[_0x86a4('0x2d')](_0x13faaf,_0x86a4('0x2a'));_0x3633b2[_0x86a4('0x33')]=_[_0x86a4('0x34')](_0x58daef[_0x86a4('0x33')]);_0x3633b2[_0x86a4('0x35')]=_[_0x86a4('0x36')](_0x3633b2[_0x86a4('0x32')],_0x3633b2[_0x86a4('0x33')]);_0x4ee41e[_0x86a4('0x37')]=_[_0x86a4('0x36')](_0x3633b2['model'],qs[_0x86a4('0x38')](_0x58daef[_0x86a4('0x33')]['fields']));_0x4ee41e[_0x86a4('0x37')]=_0x4ee41e['attributes'][_0x86a4('0x39')]?_0x4ee41e['attributes']:_0x3633b2[_0x86a4('0x32')];if(!_0x58daef[_0x86a4('0x33')][_0x86a4('0x3a')]('nolimit')){_0x4ee41e[_0x86a4('0x23')]=qs[_0x86a4('0x23')](_0x58daef[_0x86a4('0x33')][_0x86a4('0x23')]);_0x4ee41e['offset']=qs[_0x86a4('0x21')](_0x58daef[_0x86a4('0x33')][_0x86a4('0x21')]);}_0x4ee41e[_0x86a4('0x3b')]=qs[_0x86a4('0x3c')](_0x58daef['query'][_0x86a4('0x3c')]);_0x4ee41e[_0x86a4('0x3d')]=qs[_0x86a4('0x35')](_['pick'](_0x58daef[_0x86a4('0x33')],_0x3633b2[_0x86a4('0x35')]),_0x13faaf);if(_0x58daef[_0x86a4('0x33')][_0x86a4('0x3e')]){_0x4ee41e[_0x86a4('0x3d')]=_[_0x86a4('0x3f')](_0x4ee41e[_0x86a4('0x3d')],{'$or':_[_0x86a4('0x2d')](_0x13faaf,function(_0x151244){if(_0x151244[_0x86a4('0x30')]!=='VIRTUAL'){var _0x5b2f66={};_0x5b2f66[_0x151244[_0x86a4('0x2a')]]={'$like':'%'+_0x58daef['query'][_0x86a4('0x3e')]+'%'};return _0x5b2f66;}})});}_0x4ee41e=_[_0x86a4('0x3f')]({},_0x4ee41e,_0x58daef[_0x86a4('0x40')]);var _0x5740bf={'where':_0x4ee41e['where']};return db[_0x86a4('0x41')]['count'](_0x5740bf)['then'](function(_0x44c14e){_0x28d578[_0x86a4('0x24')]=_0x44c14e;if(_0x58daef[_0x86a4('0x33')][_0x86a4('0x42')]){_0x4ee41e[_0x86a4('0x43')]=[{'all':!![]}];}return db[_0x86a4('0x41')][_0x86a4('0x44')](_0x4ee41e);})[_0x86a4('0x28')](function(_0x58bf85){_0x28d578['rows']=_0x58bf85;return _0x28d578;})[_0x86a4('0x28')](respondWithFilteredResult(_0x561802,_0x4ee41e))[_0x86a4('0x45')](handleError(_0x561802,null));};exports[_0x86a4('0x46')]=function(_0x41b4b4,_0x46513b){var _0x18458a={'raw':![],'where':{'id':_0x41b4b4[_0x86a4('0x47')]['id']}},_0x1b1400={};_0x1b1400[_0x86a4('0x32')]=_[_0x86a4('0x34')](db[_0x86a4('0x41')][_0x86a4('0x2e')]);_0x1b1400[_0x86a4('0x33')]=_['keys'](_0x41b4b4[_0x86a4('0x33')]);_0x1b1400[_0x86a4('0x35')]=_[_0x86a4('0x36')](_0x1b1400[_0x86a4('0x32')],_0x1b1400[_0x86a4('0x33')]);_0x18458a[_0x86a4('0x37')]=_[_0x86a4('0x36')](_0x1b1400['model'],qs[_0x86a4('0x38')](_0x41b4b4[_0x86a4('0x33')][_0x86a4('0x38')]));_0x18458a[_0x86a4('0x37')]=_0x18458a[_0x86a4('0x37')][_0x86a4('0x39')]?_0x18458a['attributes']:_0x1b1400[_0x86a4('0x32')];if(_0x41b4b4['query'][_0x86a4('0x42')]){_0x18458a[_0x86a4('0x43')]=[{'all':!![]}];}_0x18458a=_[_0x86a4('0x3f')]({},_0x18458a,_0x41b4b4[_0x86a4('0x40')]);return db[_0x86a4('0x41')]['find'](_0x18458a)[_0x86a4('0x28')](handleEntityNotFound(_0x46513b,null))['then'](respondWithResult(_0x46513b,null))['catch'](handleError(_0x46513b,null));};exports[_0x86a4('0x48')]=function(_0x5952f6,_0x1fb2b9){return db[_0x86a4('0x41')]['create'](_0x5952f6['body'],{})['then'](function(_0x2325d0){var _0x4e76e8=_0x5952f6['user'][_0x86a4('0x49')]({'plain':!![]});if(!_0x4e76e8)throw new Error(_0x86a4('0x4a'));if(_0x4e76e8['role']==='user'){var _0x1c51b0=_0x2325d0[_0x86a4('0x49')]({'plain':!![]});var _0x1d52fa=_0x86a4('0x4b');return db[_0x86a4('0x4c')][_0x86a4('0x4d')]({'where':{'name':_0x1d52fa,'userProfileId':_0x4e76e8[_0x86a4('0x4e')]},'raw':!![]})['then'](function(_0x1acd8f){if(_0x1acd8f&&_0x1acd8f[_0x86a4('0x4f')]===0x0){return db[_0x86a4('0x50')][_0x86a4('0x48')]({'name':_0x1c51b0[_0x86a4('0x2a')],'resourceId':_0x1c51b0['id'],'type':_0x1acd8f[_0x86a4('0x2a')],'sectionId':_0x1acd8f['id']},{})[_0x86a4('0x28')](function(){return _0x2325d0;});}else{return _0x2325d0;}})[_0x86a4('0x45')](function(_0x38f99e){logger[_0x86a4('0x29')](_0x86a4('0x51'),_0x38f99e);throw _0x38f99e;});}return _0x2325d0;})['then'](respondWithResult(_0x1fb2b9,0xc9))[_0x86a4('0x45')](handleError(_0x1fb2b9,null));};exports[_0x86a4('0x27')]=function(_0x13516b,_0x4cebe7){if(_0x13516b[_0x86a4('0x52')]['id']){delete _0x13516b[_0x86a4('0x52')]['id'];}return db[_0x86a4('0x41')][_0x86a4('0x4d')]({'where':{'id':_0x13516b[_0x86a4('0x47')]['id']}})['then'](handleEntityNotFound(_0x4cebe7,null))[_0x86a4('0x28')](saveUpdates(_0x13516b[_0x86a4('0x52')],null))[_0x86a4('0x28')](respondWithResult(_0x4cebe7,null))[_0x86a4('0x45')](handleError(_0x4cebe7,null));};exports['destroy']=function(_0x401530,_0x2924cd){var _0x3f9fbd=_0x401530[_0x86a4('0x47')]['id'];var _0x37a370=[];return db[_0x86a4('0x53')][_0x86a4('0x54')](function(_0x7e55c9){var _0x13116d=_0x86a4('0x55')+_0x3f9fbd;return db[_0x86a4('0x53')]['query'](_0x13116d,{'type':db['Sequelize'][_0x86a4('0x56')]['SELECT'],'raw':!![],'transaction':_0x7e55c9})[_0x86a4('0x28')](function(_0xd98b84){_0x37a370=_[_0x86a4('0x2d')](_0xd98b84,function(_0x2bf944){return Number(_0x2bf944[_0x86a4('0x57')]);});})['then'](function(){var _0x7f6198='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3f9fbd;return db['sequelize'][_0x86a4('0x33')](_0x7f6198,{'type':db[_0x86a4('0x58')][_0x86a4('0x56')]['SELECT'],'raw':!![],'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(_0x1cf949){var _0xca470f=_['map'](_0x1cf949,function(_0x39b459){return Number(_0x39b459[_0x86a4('0x59')]);});return db[_0x86a4('0x5a')]['destroy']({'where':{'UserId':{'$in':_0x37a370},'VoiceQueueId':{'$in':_0xca470f}},'transaction':_0x7e55c9});})['then'](function(){var _0x18f3d3=_0x86a4('0x5b')+_0x3f9fbd;return db[_0x86a4('0x53')]['query'](_0x18f3d3,{'type':db[_0x86a4('0x58')][_0x86a4('0x56')]['SELECT'],'raw':!![],'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(_0x461454){var _0x396744=_[_0x86a4('0x2d')](_0x461454,function(_0x566d4c){return Number(_0x566d4c['MailQueueId']);});return db[_0x86a4('0x5c')][_0x86a4('0x5d')]({'where':{'UserId':{'$in':_0x37a370},'MailQueueId':{'$in':_0x396744}},'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(){var _0x40e605=_0x86a4('0x5e')+_0x3f9fbd;return db[_0x86a4('0x53')][_0x86a4('0x33')](_0x40e605,{'type':db[_0x86a4('0x58')][_0x86a4('0x56')]['SELECT'],'raw':!![],'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(_0x415d70){var _0x4648a4=_['map'](_0x415d70,function(_0x6e9dd9){return Number(_0x6e9dd9[_0x86a4('0x5f')]);});return db[_0x86a4('0x60')]['destroy']({'where':{'UserId':{'$in':_0x37a370},'SmsQueueId':{'$in':_0x4648a4}},'transaction':_0x7e55c9});})['then'](function(){var _0x3718e6='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3f9fbd;return db[_0x86a4('0x53')][_0x86a4('0x33')](_0x3718e6,{'type':db[_0x86a4('0x58')][_0x86a4('0x56')][_0x86a4('0x61')],'raw':!![],'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(_0x3c7315){var _0x4d2642=_[_0x86a4('0x2d')](_0x3c7315,function(_0x53f016){return Number(_0x53f016[_0x86a4('0x62')]);});return db[_0x86a4('0x63')][_0x86a4('0x5d')]({'where':{'UserId':{'$in':_0x37a370},'ChatQueueId':{'$in':_0x4d2642}},'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(){var _0x2c1472=_0x86a4('0x64')+_0x3f9fbd;return db[_0x86a4('0x53')][_0x86a4('0x33')](_0x2c1472,{'type':db[_0x86a4('0x58')][_0x86a4('0x56')][_0x86a4('0x61')],'raw':!![],'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(_0x5db3db){var _0x231c45=_[_0x86a4('0x2d')](_0x5db3db,function(_0x269936){return Number(_0x269936[_0x86a4('0x65')]);});return db[_0x86a4('0x66')][_0x86a4('0x5d')]({'where':{'UserId':{'$in':_0x37a370},'FaxQueueId':{'$in':_0x231c45}},'transaction':_0x7e55c9});})['then'](function(){var _0xb1bf1f=_0x86a4('0x67')+_0x3f9fbd;return db[_0x86a4('0x53')][_0x86a4('0x33')](_0xb1bf1f,{'type':db[_0x86a4('0x58')][_0x86a4('0x56')][_0x86a4('0x61')],'raw':!![],'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(_0x35baef){var _0x34d822=_[_0x86a4('0x2d')](_0x35baef,function(_0x2eac21){return Number(_0x2eac21['OpenchannelQueueId']);});return db[_0x86a4('0x68')]['destroy']({'where':{'UserId':{'$in':_0x37a370},'OpenchannelQueueId':{'$in':_0x34d822}},'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(){var _0x2abd97='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3f9fbd;return db['sequelize'][_0x86a4('0x33')](_0x2abd97,{'type':db[_0x86a4('0x58')]['QueryTypes'][_0x86a4('0x61')],'raw':!![],'transaction':_0x7e55c9});})['then'](function(_0x2b5fa5){var _0x4fd629=_[_0x86a4('0x2d')](_0x2b5fa5,function(_0x166bc2){return Number(_0x166bc2[_0x86a4('0x69')]);});return db[_0x86a4('0x6a')][_0x86a4('0x5d')]({'where':{'UserId':{'$in':_0x37a370},'WhatsappQueueId':{'$in':_0x4fd629}},'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(){return db['TeamVoicePrefix'][_0x86a4('0x4d')]({'where':{'TeamId':_0x3f9fbd}});})[_0x86a4('0x28')](function(_0xafd598){if(_0xafd598===null){return;}return db[_0x86a4('0x6b')][_0x86a4('0x5d')]({'where':{'UserId':{'$in':_0x37a370},'VoicePrefixId':_0xafd598[_0x86a4('0x6c')]},'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(){return db[_0x86a4('0x41')][_0x86a4('0x5d')]({'where':{'id':_0x3f9fbd},'cascade':!![],'transaction':_0x7e55c9});})[_0x86a4('0x28')](function(_0x3fc4a8){if(_0x3fc4a8===0x0){_0x2924cd[_0x86a4('0x1d')](0x194);}else{return db[_0x86a4('0x50')][_0x86a4('0x5d')]({'where':{'type':'Teams','resourceId':_0x3f9fbd},'cascade':!![],'transaction':_0x7e55c9})[_0x86a4('0x28')](function(){_0x2924cd[_0x86a4('0x1e')](0xcc)[_0x86a4('0x1f')]();});}})[_0x86a4('0x45')](function(_0x58eb6e){_0x2924cd[_0x86a4('0x1e')](0x1f4)[_0x86a4('0x2b')](_0x58eb6e);});});};exports[_0x86a4('0x6d')]=function(_0x2332a5,_0x436fe4,_0x394a25){return db[_0x86a4('0x41')][_0x86a4('0x6e')]({'where':{'id':_0x2332a5['params']['id']}})[_0x86a4('0x28')](handleEntityNotFound(_0x436fe4,null))[_0x86a4('0x28')](function(_0xcf390f){if(!_0x2332a5['query'][_0x86a4('0x6f')]||!utils[_0x86a4('0x70')](_0x2332a5['query']['channel'])){throw new db['Sequelize'][(_0x86a4('0x71'))](_0x86a4('0x72'));}var _0x3ebc69={};var _0x559902={};_0x559902[_0x86a4('0x32')]=_[_0x86a4('0x34')](db[_[_0x86a4('0x73')](_0x2332a5[_0x86a4('0x33')]['channel'][_0x86a4('0x74')]())+_0x86a4('0x75')][_0x86a4('0x2e')]);_0x559902['query']=_[_0x86a4('0x34')](_0x2332a5[_0x86a4('0x33')]);_0x559902[_0x86a4('0x35')]=_[_0x86a4('0x36')](_0x559902[_0x86a4('0x32')],_0x559902[_0x86a4('0x33')]);_0x3ebc69[_0x86a4('0x37')]=_[_0x86a4('0x36')](_0x559902[_0x86a4('0x32')],qs[_0x86a4('0x38')](_0x2332a5[_0x86a4('0x33')][_0x86a4('0x38')]));_0x3ebc69[_0x86a4('0x37')]=_0x3ebc69[_0x86a4('0x37')][_0x86a4('0x39')]?_0x3ebc69[_0x86a4('0x37')]:_0x559902[_0x86a4('0x32')];_0x3ebc69['limit']=qs['limit'](_0x2332a5[_0x86a4('0x33')]['limit']);_0x3ebc69[_0x86a4('0x21')]=qs[_0x86a4('0x21')](_0x2332a5[_0x86a4('0x33')][_0x86a4('0x21')]);_0x3ebc69[_0x86a4('0x3b')]=qs[_0x86a4('0x3c')](_0x2332a5['query'][_0x86a4('0x3c')]);_0x3ebc69[_0x86a4('0x3d')]=qs[_0x86a4('0x35')](_['pick'](_0x2332a5[_0x86a4('0x33')],_0x559902['filters']));_0x3ebc69=_[_0x86a4('0x3f')]({},_0x3ebc69,_0x2332a5[_0x86a4('0x40')]);return _0xcf390f[_0x86a4('0x49')+_[_0x86a4('0x73')](_0x2332a5[_0x86a4('0x33')][_0x86a4('0x6f')][_0x86a4('0x74')]())+_0x86a4('0x76')](_0x3ebc69);})[_0x86a4('0x28')](respondWithResult(_0x436fe4,null))[_0x86a4('0x45')](handleError(_0x436fe4,null));};exports[_0x86a4('0x77')]=function(_0x2dddc9,_0x170f84,_0x30309a){return db[_0x86a4('0x41')][_0x86a4('0x6e')]({'where':{'id':_0x2dddc9[_0x86a4('0x47')]['id']}})[_0x86a4('0x28')](function(_0x5b6f7d){if(_0x5b6f7d){if(!_0x2dddc9[_0x86a4('0x52')][_0x86a4('0x6f')]||!utils[_0x86a4('0x70')](_0x2dddc9[_0x86a4('0x52')][_0x86a4('0x6f')])){throw new db[(_0x86a4('0x58'))][(_0x86a4('0x71'))](_0x86a4('0x72'));}return _0x5b6f7d['add'+_[_0x86a4('0x73')](_0x2dddc9['body'][_0x86a4('0x6f')][_0x86a4('0x74')]())+_0x86a4('0x76')](_0x2dddc9[_0x86a4('0x52')][_0x86a4('0x78')]);}return null;})[_0x86a4('0x28')](handleEntityNotFound(_0x170f84,null))[_0x86a4('0x28')](respondWithStatusCode(_0x170f84,null))['catch'](handleError(_0x170f84,null));};exports[_0x86a4('0x79')]=function(_0x30ad9b,_0x2cac36,_0x3e2547){return db[_0x86a4('0x41')][_0x86a4('0x6e')]({'where':{'id':_0x30ad9b[_0x86a4('0x47')]['id']}})[_0x86a4('0x28')](function(_0xa86a7a){if(_0xa86a7a){if(!_0x30ad9b['query'][_0x86a4('0x6f')]||!utils[_0x86a4('0x70')](_0x30ad9b['query']['channel'])){throw new db['Sequelize'][(_0x86a4('0x71'))](_0x86a4('0x72'));}return _0xa86a7a[_0x86a4('0x7a')+_[_0x86a4('0x73')](_0x30ad9b[_0x86a4('0x33')][_0x86a4('0x6f')][_0x86a4('0x74')]())+_0x86a4('0x76')](_0x30ad9b[_0x86a4('0x33')][_0x86a4('0x78')]);}return null;})[_0x86a4('0x28')](handleEntityNotFound(_0x2cac36,null))[_0x86a4('0x28')](respondWithStatusCode(_0x2cac36,null))[_0x86a4('0x45')](handleError(_0x2cac36,null));};exports[_0x86a4('0x7b')]=function(_0xd61fbe,_0x567fa0){var _0x1f6bf2=_[_0x86a4('0x7c')](_0xd61fbe[_0x86a4('0x52')]['ids'])?_0xd61fbe[_0x86a4('0x52')]['ids']:[_0xd61fbe['body'][_0x86a4('0x78')]];var _0x42ed7b=_0xd61fbe[_0x86a4('0x47')]['id'];return db[_0x86a4('0x41')][_0x86a4('0x4d')]({'where':{'id':_0x42ed7b}})[_0x86a4('0x28')](handleEntityNotFound(_0x567fa0,null))[_0x86a4('0x28')](function(_0x30f036){if(_0x30f036){var _0x2b3e07=[_0x86a4('0x7d'),'Chat','Mail',_0x86a4('0x7e'),_0x86a4('0x7f'),_0x86a4('0x80'),'Whatsapp'];return db['sequelize'][_0x86a4('0x54')](function(_0x495d80){var _0x32f2c4=_[_0x86a4('0x2d')](_0x2b3e07,function(_0x3a3fc7){var _0x43293d={'attributes':['id',_0x86a4('0x2a')]};if(_0x3a3fc7===_0x86a4('0x7d')){_0x43293d[_0x86a4('0x81')]={'attributes':[_0x86a4('0x82')]};}return _0x30f036[_0x86a4('0x49')+_0x3a3fc7+_0x86a4('0x76')](_0x43293d)[_0x86a4('0x28')](function(_0x302031){var _0x3ab5ab=_['map'](_0x302031,function(_0x134554){var _0x1d1da8=_[_0x86a4('0x2d')](_0x1f6bf2,function(_0x190002){var _0xc89db2={'where':{'UserId':_0x190002,[_0x3a3fc7+_0x86a4('0x83')]:_0x134554['id']},'transaction':_0x495d80};if(_0x3a3fc7===_0x86a4('0x7d')){_0xc89db2['defaults']={'penalty':_0x134554[_0x86a4('0x84')][_0x86a4('0x82')]};}return db[_0x86a4('0x85')+_0x3a3fc7+_0x86a4('0x75')][_0x86a4('0x86')](_0xc89db2)['then'](function(){socket[_0x86a4('0x87')](_0x86a4('0x88')+_0x3a3fc7+_0x86a4('0x89'),{'UserId':_0x190002,[_0x3a3fc7+'QueueId']:_0x134554['id']});if(_0x3a3fc7!=='Voice'){return;}return db['User'][_0x86a4('0x44')]({'where':{'id':_0x1f6bf2,'online':0x1},'attributes':['id','name','online',_0x86a4('0x8a'),_0x86a4('0x8b')],'raw':!![]})[_0x86a4('0x28')](function(_0x267687){var _0x5e3472=_[_0x86a4('0x2d')](_0x267687,function(_0x54f645){return db[_0x86a4('0x8c')][_0x86a4('0x8d')]({'membername':_0x54f645[_0x86a4('0x2a')],'UserId':_0x54f645['id'],'queue_name':_0x134554[_0x86a4('0x2a')],'VoiceQueueId':_0x134554['id'],'interface':_[_0x86a4('0x8e')](_0x54f645['interface'])?util[_0x86a4('0x8f')](_0x86a4('0x90'),_0x54f645[_0x86a4('0x2a')]):_0x54f645['interface'],'paused':_0x54f645[_0x86a4('0x8a')]||![],'penalty':_0x134554[_0x86a4('0x84')][_0x86a4('0x82')]},{'transaction':_0x495d80});});return Promise[_0x86a4('0x91')](_0x5e3472);});});});return Promise[_0x86a4('0x91')](_0x1d1da8);});return Promise[_0x86a4('0x91')](_0x3ab5ab);})['then'](function(){return db['TeamVoicePrefix'][_0x86a4('0x6e')]({'where':{'teamId':_0x42ed7b}})[_0x86a4('0x28')](function(_0x520c6d){if(_0x520c6d){var _0x3c7b9c=_[_0x86a4('0x2d')](_0x1f6bf2,function(_0x173611){db['UserVoicePrefix'][_0x86a4('0x8d')]({'UserId':_0x173611,'VoicePrefixId':_0x520c6d['VoicePrefixId']});});return Promise[_0x86a4('0x91')](_0x3c7b9c);}});});});return Promise[_0x86a4('0x91')](_0x32f2c4)[_0x86a4('0x28')](function(){return _0x30f036[_0x86a4('0x7b')](_0x1f6bf2,{'transaction':_0x495d80})[_0x86a4('0x92')](function(_0x124124){return _0x124124;});});});}})['then'](respondWithResult(_0x567fa0,null))[_0x86a4('0x45')](handleError(_0x567fa0,null));};exports[_0x86a4('0x93')]=function(_0x3a26c2,_0x41e1ee){var _0x1d9e89=_[_0x86a4('0x7c')](_0x3a26c2[_0x86a4('0x33')]['ids'])?_0x3a26c2['query']['ids']:[_0x3a26c2[_0x86a4('0x33')]['ids']];var _0x3f296a=_0x3a26c2[_0x86a4('0x47')]['id'];return db[_0x86a4('0x41')]['find']({'where':{'id':_0x3f296a}})[_0x86a4('0x28')](handleEntityNotFound(_0x41e1ee,null))[_0x86a4('0x28')](function(_0x4cab81){if(_0x4cab81){var _0x5654c5=[_0x86a4('0x7d'),'Chat','Mail',_0x86a4('0x7e'),_0x86a4('0x7f'),'Openchannel',_0x86a4('0x94')];return db['sequelize']['transaction'](function(_0x1fc0b8){var _0x28b360=_['map'](_0x5654c5,function(_0x5ab13b){var _0x32a111={'attributes':['id','name']};return _0x4cab81[_0x86a4('0x49')+_0x5ab13b+_0x86a4('0x76')](_0x32a111)[_0x86a4('0x28')](function(_0x296e2e){var _0x566ffc=_[_0x86a4('0x2d')](_0x296e2e,function(_0x472a3d){return _0x472a3d[_0x86a4('0x93')](_0x1d9e89,{'transaction':_0x1fc0b8})[_0x86a4('0x28')](function(){var _0x2b08b0=_[_0x86a4('0x2d')](_0x1d9e89,function(_0x76832c){socket[_0x86a4('0x87')](_0x86a4('0x88')+_0x5ab13b+_0x86a4('0x95'),{'UserId':Number(_0x76832c),[_0x5ab13b+'QueueId']:_0x472a3d['id']});if(_0x5ab13b!=='Voice'){return;}return db[_0x86a4('0x8c')][_0x86a4('0x5d')]({'where':{'VoiceQueueId':_0x472a3d['id'],'UserId':_0x76832c},'transaction':_0x1fc0b8});});return Promise[_0x86a4('0x91')](_0x2b08b0);});});return Promise[_0x86a4('0x91')](_0x566ffc);});});return Promise[_0x86a4('0x91')](_0x28b360)['then'](function(){return _0x4cab81[_0x86a4('0x93')](_0x1d9e89,{'transaction':_0x1fc0b8});})[_0x86a4('0x28')](function(){return db[_0x86a4('0x96')][_0x86a4('0x6e')]({'where':{'teamId':_0x3f296a}})['then'](function(_0x4f61c7){if(_0x4f61c7){var _0x1dfe31=_[_0x86a4('0x2d')](_0x1d9e89,function(_0x1efb0e){db[_0x86a4('0x6b')][_0x86a4('0x5d')]({'where':{'UserId':_0x1efb0e,'VoicePrefixId':_0x4f61c7['VoicePrefixId']}});});return Promise['all'](_0x1dfe31);}});});});}})[_0x86a4('0x28')](respondWithStatusCode(_0x41e1ee,null))[_0x86a4('0x45')](handleError(_0x41e1ee,null));};exports[_0x86a4('0x97')]=function(_0x28b2c7,_0x2eb8df,_0x4d399c){var _0xbcca48={};var _0x1e33af={};var _0x4ff89a;var _0x1a0503;return db[_0x86a4('0x41')]['findOne']({'where':{'id':_0x28b2c7['params']['id']}})[_0x86a4('0x28')](handleEntityNotFound(_0x2eb8df,null))['then'](function(_0x3eeb80){if(_0x3eeb80){_0x4ff89a=_0x3eeb80;_0x1e33af[_0x86a4('0x32')]=_[_0x86a4('0x34')](db[_0x86a4('0x85')][_0x86a4('0x2e')]);_0x1e33af[_0x86a4('0x33')]=_[_0x86a4('0x34')](_0x28b2c7[_0x86a4('0x33')]);_0x1e33af['filters']=_[_0x86a4('0x36')](_0x1e33af[_0x86a4('0x32')],_0x1e33af[_0x86a4('0x33')]);_0xbcca48[_0x86a4('0x37')]=_[_0x86a4('0x36')](_0x1e33af[_0x86a4('0x32')],qs[_0x86a4('0x38')](_0x28b2c7[_0x86a4('0x33')]['fields']));_0xbcca48['attributes']=_0xbcca48[_0x86a4('0x37')][_0x86a4('0x39')]?_0xbcca48[_0x86a4('0x37')]:_0x1e33af[_0x86a4('0x32')];_0xbcca48[_0x86a4('0x3b')]=qs['sort'](_0x28b2c7[_0x86a4('0x33')][_0x86a4('0x3c')]);_0xbcca48[_0x86a4('0x3d')]=qs[_0x86a4('0x35')](_[_0x86a4('0x98')](_0x28b2c7[_0x86a4('0x33')],_0x1e33af[_0x86a4('0x35')]));if(_0x28b2c7[_0x86a4('0x33')][_0x86a4('0x3e')]){_0xbcca48[_0x86a4('0x3d')]=_[_0x86a4('0x3f')](_0xbcca48[_0x86a4('0x3d')],{'$or':_['map'](_0xbcca48[_0x86a4('0x37')],function(_0x1ab6cf){var _0x47b494={};_0x47b494[_0x1ab6cf]={'$like':'%'+_0x28b2c7[_0x86a4('0x33')][_0x86a4('0x3e')]+'%'};return _0x47b494;})});}_0xbcca48=_['merge']({},_0xbcca48,_0x28b2c7[_0x86a4('0x40')]);return _0x4ff89a['getAgents'](_0xbcca48);}})[_0x86a4('0x28')](function(_0x1fd565){if(_0x1fd565){_0x1a0503=_0x1fd565[_0x86a4('0x39')];if(!_0x28b2c7['query'][_0x86a4('0x3a')]('nolimit')){_0xbcca48[_0x86a4('0x23')]=qs['limit'](_0x28b2c7[_0x86a4('0x33')][_0x86a4('0x23')]);_0xbcca48[_0x86a4('0x21')]=qs[_0x86a4('0x21')](_0x28b2c7[_0x86a4('0x33')][_0x86a4('0x21')]);}return _0x4ff89a[_0x86a4('0x97')](_0xbcca48);}})[_0x86a4('0x28')](function(_0x578c4e){if(_0x578c4e){return _0x578c4e?{'count':_0x1a0503,'rows':_0x578c4e}:null;}})[_0x86a4('0x28')](respondWithResult(_0x2eb8df,null))[_0x86a4('0x45')](handleError(_0x2eb8df,null));};
\ No newline at end of file
index 6510a7e..acc08b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x907d=['exports','../../mysqldb','Team','save','remove','emit'];(function(_0x21c2ab,_0x3764db){var _0x742db0=function(_0x2583b1){while(--_0x2583b1){_0x21c2ab['push'](_0x21c2ab['shift']());}};_0x742db0(++_0x3764db);}(_0x907d,0x103));var _0xd907=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0x907d[_0x35885a];return _0xe86249;};'use strict';var EventEmitter=require('events');var Team=require(_0xd907('0x0'))['db'][_0xd907('0x1')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd907('0x2'),'afterUpdate':'update','afterDestroy':_0xd907('0x3')};function emitEvent(_0x3822e9){return function(_0x32ba74,_0x3350d2,_0xecc641){TeamEvents[_0xd907('0x4')](_0x3822e9+':'+_0x32ba74['id'],_0x32ba74);TeamEvents[_0xd907('0x4')](_0x3822e9,_0x32ba74);_0xecc641(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0xd907('0x5')]=TeamEvents;
\ No newline at end of file
+var _0x74a5=['events','../../mysqldb','Team','save','remove','emit','hasOwnProperty','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x74a5,0x1f0));var _0x574a=function(_0x4c19cc,_0x24e1c4){_0x4c19cc=_0x4c19cc-0x0;var _0x2d9319=_0x74a5[_0x4c19cc];return _0x2d9319;};'use strict';var EventEmitter=require(_0x574a('0x0'));var Team=require(_0x574a('0x1'))['db'][_0x574a('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x574a('0x3'),'afterUpdate':'update','afterDestroy':_0x574a('0x4')};function emitEvent(_0x45d911){return function(_0x573dad,_0xd8e33f,_0x222ffa){TeamEvents[_0x574a('0x5')](_0x45d911+':'+_0x573dad['id'],_0x573dad);TeamEvents[_0x574a('0x5')](_0x45d911,_0x573dad);_0x222ffa(null);};}for(var e in events){if(events[_0x574a('0x6')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0x574a('0x7')]=TeamEvents;
\ No newline at end of file
index f471cc9..13f178a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa093=['map','channel','catch','exports','Team','Chat','Fax','Mail','Openchannel','Sms','Voice','resolve','then','all','lodash','./team.attributes','get','Queues'];(function(_0x91fe43,_0x1b51e4){var _0x5d3b51=function(_0x1f1d60){while(--_0x1f1d60){_0x91fe43['push'](_0x91fe43['shift']());}};_0x5d3b51(++_0x1b51e4);}(_0xa093,0xd4));var _0x3a09=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa093[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3a09('0x0'));var attributes=require(_0x3a09('0x1'));function getQueuesByChannel(_0x372007,_0x161fbf){var _0x3df816=_0x3a09('0x2')+_0x161fbf+_0x3a09('0x3');return _0x372007[_0x3df816]()['then'](function(_0xa44875){return _[_0x3a09('0x4')](_0xa44875,function(_0x319a72){_0x319a72['setDataValue'](_0x3a09('0x5'),_0x161fbf);return _0x319a72;});})[_0x3a09('0x6')](function(_0x4ad78e){throw _0x4ad78e;});}module[_0x3a09('0x7')]=function(_0x5a9e1b){return _0x5a9e1b['define'](_0x3a09('0x8'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x4a983a=this;var _0x2364cd=[_0x3a09('0x9'),_0x3a09('0xa'),_0x3a09('0xb'),_0x3a09('0xc'),_0x3a09('0xd'),_0x3a09('0xe'),'Whatsapp'];return Promise[_0x3a09('0xf')]()[_0x3a09('0x10')](function(){var _0x3fa2bc=_[_0x3a09('0x4')](_0x2364cd,function(_0x40f362){return getQueuesByChannel(_0x4a983a,_0x40f362);});return Promise[_0x3a09('0x11')](_0x3fa2bc);})[_0x3a09('0x6')](function(_0x4d9e42){throw _0x4d9e42;});}}});};
\ No newline at end of file
+var _0x0079=['all','catch','lodash','./team.attributes','get','Queues','then','setDataValue','channel','exports','define','teams','Chat','Fax','Openchannel','Sms','Voice','Whatsapp','map'];(function(_0x437925,_0x3d5e14){var _0x1cdbe9=function(_0x16b8ae){while(--_0x16b8ae){_0x437925['push'](_0x437925['shift']());}};_0x1cdbe9(++_0x3d5e14);}(_0x0079,0x1dd));var _0x9007=function(_0x2c7614,_0x19084b){_0x2c7614=_0x2c7614-0x0;var _0xbc26d9=_0x0079[_0x2c7614];return _0xbc26d9;};'use strict';var _=require(_0x9007('0x0'));var attributes=require(_0x9007('0x1'));function getQueuesByChannel(_0xc42868,_0x746176){var _0x1beede=_0x9007('0x2')+_0x746176+_0x9007('0x3');return _0xc42868[_0x1beede]()[_0x9007('0x4')](function(_0x5947f6){return _['map'](_0x5947f6,function(_0x4708aa){_0x4708aa[_0x9007('0x5')](_0x9007('0x6'),_0x746176);return _0x4708aa;});})['catch'](function(_0x2c0c3b){throw _0x2c0c3b;});}module[_0x9007('0x7')]=function(_0x8aa7df){return _0x8aa7df[_0x9007('0x8')]('Team',attributes,{'tableName':_0x9007('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x31b153=this;var _0x319555=[_0x9007('0xa'),_0x9007('0xb'),'Mail',_0x9007('0xc'),_0x9007('0xd'),_0x9007('0xe'),_0x9007('0xf')];return Promise['resolve']()['then'](function(){var _0x2be3c1=_[_0x9007('0x10')](_0x319555,function(_0x239cd9){return getQueuesByChannel(_0x31b153,_0x239cd9);});return Promise[_0x9007('0x11')](_0x2be3c1);})[_0x9007('0x12')](function(_0x25c681){throw _0x25c681;});}}});};
\ No newline at end of file
index b9bb4de..53bc6fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa8f=['../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./team.socket','register','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x1314d4,_0xb0b16d){var _0x584ba5=function(_0x394269){while(--_0x394269){_0x1314d4['push'](_0x1314d4['shift']());}};_0x584ba5(++_0xb0b16d);}(_0xfa8f,0x166));var _0xffa8=function(_0x123066,_0x20ac81){_0x123066=_0x123066-0x0;var _0x362f5b=_0xfa8f[_0x123066];return _0x362f5b;};'use strict';var _=require(_0xffa8('0x0'));var util=require(_0xffa8('0x1'));var moment=require(_0xffa8('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xffa8('0x3'));var db=require(_0xffa8('0x4'))['db'];var utils=require(_0xffa8('0x5'));var logger=require(_0xffa8('0x6'))(_0xffa8('0x7'));var config=require(_0xffa8('0x8'));var jayson=require(_0xffa8('0x9'));var client=jayson[_0xffa8('0xa')]['http']({'port':0x232a});config[_0xffa8('0xb')]=_[_0xffa8('0xc')](config[_0xffa8('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xffa8('0xd'))(new Redis(config[_0xffa8('0xb')]));require(_0xffa8('0xe'))[_0xffa8('0xf')](socket);function respondWithRpcPromise(_0x146a21,_0x13ea82,_0x194e45){return new BPromise(function(_0x586455,_0x4c07db){return client['request'](_0x146a21,_0x194e45)[_0xffa8('0x10')](function(_0x3c8527){logger[_0xffa8('0x11')](_0xffa8('0x12'),_0x13ea82,_0xffa8('0x13'));logger[_0xffa8('0x14')]('Team,\x20%s,\x20%s,\x20%s',_0x13ea82,_0xffa8('0x13'),JSON[_0xffa8('0x15')](_0x3c8527));if(_0x3c8527[_0xffa8('0x16')]){if(_0x3c8527[_0xffa8('0x16')][_0xffa8('0x17')]===0x1f4){logger[_0xffa8('0x16')](_0xffa8('0x12'),_0x13ea82,_0x3c8527[_0xffa8('0x16')][_0xffa8('0x18')]);return _0x4c07db(_0x3c8527['error'][_0xffa8('0x18')]);}logger[_0xffa8('0x16')](_0xffa8('0x12'),_0x13ea82,_0x3c8527[_0xffa8('0x16')][_0xffa8('0x18')]);return _0x586455(_0x3c8527[_0xffa8('0x16')][_0xffa8('0x18')]);}else{logger[_0xffa8('0x11')](_0xffa8('0x12'),_0x13ea82,_0xffa8('0x13'));_0x586455(_0x3c8527['result'][_0xffa8('0x18')]);}})[_0xffa8('0x19')](function(_0x282772){logger[_0xffa8('0x16')](_0xffa8('0x12'),_0x13ea82,_0x282772);_0x4c07db(_0x282772);});});}
\ No newline at end of file
+var _0x5da3=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','request','info','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x2a3248,_0x1fcd9c){var _0x1af4ce=function(_0x4de5d7){while(--_0x4de5d7){_0x2a3248['push'](_0x2a3248['shift']());}};_0x1af4ce(++_0x1fcd9c);}(_0x5da3,0xe2));var _0x35da=function(_0x4b635a,_0x8d01b2){_0x4b635a=_0x4b635a-0x0;var _0x3de488=_0x5da3[_0x4b635a];return _0x3de488;};'use strict';var _=require(_0x35da('0x0'));var util=require(_0x35da('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x35da('0x2'));var fs=require('fs');var Redis=require(_0x35da('0x3'));var db=require(_0x35da('0x4'))['db'];var utils=require(_0x35da('0x5'));var logger=require('../../config/logger')(_0x35da('0x6'));var config=require(_0x35da('0x7'));var jayson=require(_0x35da('0x8'));var client=jayson[_0x35da('0x9')][_0x35da('0xa')]({'port':0x232a});config[_0x35da('0xb')]=_[_0x35da('0xc')](config['redis'],{'host':_0x35da('0xd'),'port':0x18eb});var socket=require(_0x35da('0xe'))(new Redis(config['redis']));require(_0x35da('0xf'))['register'](socket);function respondWithRpcPromise(_0x244894,_0x3bd6e6,_0x505c7e){return new BPromise(function(_0x780167,_0x2764c5){return client[_0x35da('0x10')](_0x244894,_0x505c7e)['then'](function(_0x57930f){logger[_0x35da('0x11')](_0x35da('0x12'),_0x3bd6e6,_0x35da('0x13'));logger['debug'](_0x35da('0x14'),_0x3bd6e6,'request\x20sent',JSON['stringify'](_0x57930f));if(_0x57930f['error']){if(_0x57930f['error'][_0x35da('0x15')]===0x1f4){logger[_0x35da('0x16')](_0x35da('0x12'),_0x3bd6e6,_0x57930f[_0x35da('0x16')][_0x35da('0x17')]);return _0x2764c5(_0x57930f[_0x35da('0x16')][_0x35da('0x17')]);}logger['error'](_0x35da('0x12'),_0x3bd6e6,_0x57930f['error'][_0x35da('0x17')]);return _0x780167(_0x57930f['error'][_0x35da('0x17')]);}else{logger['info']('Team,\x20%s,\x20%s',_0x3bd6e6,_0x35da('0x13'));_0x780167(_0x57930f[_0x35da('0x18')][_0x35da('0x17')]);}})[_0x35da('0x19')](function(_0x5b7dbc){logger[_0x35da('0x16')](_0x35da('0x12'),_0x3bd6e6,_0x5b7dbc);_0x2764c5(_0x5b7dbc);});});}
\ No newline at end of file
index 455dfa0..8e06a60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd245=['team:','./team.events','save','remove','emit','length'];(function(_0x3dd43e,_0x4e1f44){var _0x510975=function(_0xcfe505){while(--_0xcfe505){_0x3dd43e['push'](_0x3dd43e['shift']());}};_0x510975(++_0x4e1f44);}(_0xd245,0xd3));var _0x5d24=function(_0x383627,_0x5be16e){_0x383627=_0x383627-0x0;var _0x2c16a0=_0xd245[_0x383627];return _0x2c16a0;};'use strict';var TeamEvents=require(_0x5d24('0x0'));var events=[_0x5d24('0x1'),_0x5d24('0x2'),'update'];function createListener(_0x2df847,_0x476418){return function(_0x30aaef){_0x476418[_0x5d24('0x3')](_0x2df847,_0x30aaef);};}function removeListener(_0xfe92f3,_0x5a39c9){return function(){TeamEvents['removeListener'](_0xfe92f3,_0x5a39c9);};}exports['register']=function(_0x398243){for(var _0x4e291d=0x0,_0x1e8dc1=events[_0x5d24('0x4')];_0x4e291d<_0x1e8dc1;_0x4e291d++){var _0x2d34c1=events[_0x4e291d];var _0x11f53e=createListener(_0x5d24('0x5')+_0x2d34c1,_0x398243);TeamEvents['on'](_0x2d34c1,_0x11f53e);}};
\ No newline at end of file
+var _0x0b37=['remove','update','emit','removeListener','register','length','team:','save'];(function(_0x6d6015,_0x1bd8ee){var _0x320f10=function(_0x17c451){while(--_0x17c451){_0x6d6015['push'](_0x6d6015['shift']());}};_0x320f10(++_0x1bd8ee);}(_0x0b37,0x1d7));var _0x70b3=function(_0x5c498f,_0xc71f35){_0x5c498f=_0x5c498f-0x0;var _0x34b976=_0x0b37[_0x5c498f];return _0x34b976;};'use strict';var TeamEvents=require('./team.events');var events=[_0x70b3('0x0'),_0x70b3('0x1'),_0x70b3('0x2')];function createListener(_0x361a7d,_0x4840db){return function(_0x2a5f51){_0x4840db[_0x70b3('0x3')](_0x361a7d,_0x2a5f51);};}function removeListener(_0x320fd0,_0x43fe6e){return function(){TeamEvents[_0x70b3('0x4')](_0x320fd0,_0x43fe6e);};}exports[_0x70b3('0x5')]=function(_0x50a82c){for(var _0xbef934=0x0,_0x4accfa=events[_0x70b3('0x6')];_0xbef934<_0x4accfa;_0xbef934++){var _0x12b986=events[_0xbef934];var _0x344ea2=createListener(_0x70b3('0x7')+_0x12b986,_0x50a82c);TeamEvents['on'](_0x12b986,_0x344ea2);}};
\ No newline at end of file
index d4a49f1..fa96fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45c8=['INTEGER','sequelize'];(function(_0x559adf,_0x5989cc){var _0x53f28f=function(_0x536804){while(--_0x536804){_0x559adf['push'](_0x559adf['shift']());}};_0x53f28f(++_0x5989cc);}(_0x45c8,0xef));var _0x845c=function(_0x3fe96b,_0x4db681){_0x3fe96b=_0x3fe96b-0x0;var _0x561c08=_0x45c8[_0x3fe96b];return _0x561c08;};'use strict';var Sequelize=require(_0x845c('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0x845c('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x845c('0x1')]}};
\ No newline at end of file
+var _0x3ae9=['INTEGER'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x3ae9,0xdb));var _0x93ae=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x3ae9[_0x187ee1];return _0x388160;};'use strict';var Sequelize=require('sequelize');module['exports']={'TeamId':{'type':Sequelize[_0x93ae('0x0')]},'VoicePrefixId':{'type':Sequelize[_0x93ae('0x0')]}};
\ No newline at end of file
index fe5cec0..b024433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','define','team_has_voice_prefixes','lodash','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb62e,0x1de));var _0xeb62=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xb62e[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xeb62('0x0'));var util=require(_0xeb62('0x1'));var logger=require(_0xeb62('0x2'))(_0xeb62('0x3'));var moment=require('moment');var BPromise=require(_0xeb62('0x4'));var rp=require(_0xeb62('0x5'));var fs=require('fs');var path=require(_0xeb62('0x6'));var rimraf=require(_0xeb62('0x7'));var config=require(_0xeb62('0x8'));var attributes=require(_0xeb62('0x9'));module['exports']=function(_0x3ec879,_0x455e1a){return _0x3ec879[_0xeb62('0xa')]('TeamVoicePrefix',attributes,{'tableName':_0xeb62('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ec8=['bluebird','rimraf','./teamVoicePrefix.attributes','exports','team_has_voice_prefixes','lodash','util','../../config/logger','api'];(function(_0x3dc68d,_0x1c1951){var _0xdf7f94=function(_0x339428){while(--_0x339428){_0x3dc68d['push'](_0x3dc68d['shift']());}};_0xdf7f94(++_0x1c1951);}(_0x2ec8,0x188));var _0x82ec=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x2ec8[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x82ec('0x0'));var util=require(_0x82ec('0x1'));var logger=require(_0x82ec('0x2'))(_0x82ec('0x3'));var moment=require('moment');var BPromise=require(_0x82ec('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x82ec('0x5'));var config=require('../../config/environment');var attributes=require(_0x82ec('0x6'));module[_0x82ec('0x7')]=function(_0x528e26,_0x4c9400){return _0x528e26['define']('TeamVoicePrefix',attributes,{'tableName':_0x82ec('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0de1813..6253f15 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(_0x10ba8f,_0x245535){var _0x513238=function(_0x1fd6ae){while(--_0x1fd6ae){_0x10ba8f['push'](_0x10ba8f['shift']());}};_0x513238(++_0x245535);}(_0x70e0,0x17b));var _0x070e=function(_0x4dc7b9,_0x319d5a){_0x4dc7b9=_0x4dc7b9-0x0;var _0x3ab114=_0x70e0[_0x4dc7b9];return _0x3ab114;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x466bc6,_0xefa09a){var _0x56d62b=function(_0x2c8723){while(--_0x2c8723){_0x466bc6['push'](_0x466bc6['shift']());}};_0x56d62b(++_0xefa09a);}(_0x70e0,0x17b));var _0x070e=function(_0x5b841c,_0x3fe0e8){_0x5b841c=_0x5b841c-0x0;var _0x24d054=_0x70e0[_0x5b841c];return _0x24d054;};'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 ee488c6..61b2e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf44c=['INTEGER','sequelize'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xf44c,0x163));var _0xcf44=function(_0x22b90c,_0x1a973d){_0x22b90c=_0x22b90c-0x0;var _0x232d85=_0xf44c[_0x22b90c];return _0x232d85;};'use strict';var Sequelize=require(_0xcf44('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xcf44('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xff00=['exports','sequelize'];(function(_0xc90c0b,_0x284a05){var _0x6030aa=function(_0x3c32f5){while(--_0x3c32f5){_0xc90c0b['push'](_0xc90c0b['shift']());}};_0x6030aa(++_0x284a05);}(_0xff00,0x1e9));var _0x0ff0=function(_0x187d52,_0x2eddbd){_0x187d52=_0x187d52-0x0;var _0xd0a834=_0xff00[_0x187d52];return _0xd0a834;};'use strict';var Sequelize=require(_0x0ff0('0x0'));module[_0x0ff0('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index c53e0af..57e12e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3ee=['request-promise','../../config/environment','exports','define','TeamVoiceQueue','team_has_voice_queues','../../config/logger','api'];(function(_0x1a0d72,_0x27fe19){var _0x21c531=function(_0x4ccbc9){while(--_0x4ccbc9){_0x1a0d72['push'](_0x1a0d72['shift']());}};_0x21c531(++_0x27fe19);}(_0xe3ee,0x116));var _0xee3e=function(_0x26ad8e,_0x25143a){_0x26ad8e=_0x26ad8e-0x0;var _0x3f00a4=_0xe3ee[_0x26ad8e];return _0x3f00a4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xee3e('0x0'))(_0xee3e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xee3e('0x2'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xee3e('0x3'));var attributes=require('./teamVoiceQueue.attributes');module[_0xee3e('0x4')]=function(_0x352eca,_0x3907a7){return _0x352eca[_0xee3e('0x5')](_0xee3e('0x6'),attributes,{'tableName':_0xee3e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3613=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./teamVoiceQueue.attributes','exports','define','team_has_voice_queues'];(function(_0x3ec4fd,_0x332803){var _0x56ac07=function(_0xfa116c){while(--_0xfa116c){_0x3ec4fd['push'](_0x3ec4fd['shift']());}};_0x56ac07(++_0x332803);}(_0x3613,0x198));var _0x3361=function(_0x1dbc9b,_0x47fd40){_0x1dbc9b=_0x1dbc9b-0x0;var _0x72f556=_0x3613[_0x1dbc9b];return _0x72f556;};'use strict';var _=require(_0x3361('0x0'));var util=require(_0x3361('0x1'));var logger=require(_0x3361('0x2'))(_0x3361('0x3'));var moment=require(_0x3361('0x4'));var BPromise=require(_0x3361('0x5'));var rp=require(_0x3361('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3361('0x7'));var config=require('../../config/environment');var attributes=require(_0x3361('0x8'));module[_0x3361('0x9')]=function(_0xa1bc1b,_0x2e2d6c){return _0xa1bc1b[_0x3361('0xa')]('TeamVoiceQueue',attributes,{'tableName':_0x3361('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b55484..274f26b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ae=['code','message','info','result','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error'];(function(_0x33957a,_0x53d577){var _0x40749f=function(_0x62e812){while(--_0x62e812){_0x33957a['push'](_0x33957a['shift']());}};_0x40749f(++_0x53d577);}(_0x57ae,0xb4));var _0xe57a=function(_0x51ba8d,_0x36c8fd){_0x51ba8d=_0x51ba8d-0x0;var _0x5263b1=_0x57ae[_0x51ba8d];return _0x5263b1;};'use strict';var _=require('lodash');var util=require(_0xe57a('0x0'));var moment=require(_0xe57a('0x1'));var BPromise=require(_0xe57a('0x2'));var rs=require(_0xe57a('0x3'));var fs=require('fs');var Redis=require(_0xe57a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe57a('0x5'));var logger=require(_0xe57a('0x6'))(_0xe57a('0x7'));var config=require(_0xe57a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe57a('0x9')][_0xe57a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x48c4b7,_0x4d1332,_0x104f83){return new BPromise(function(_0x8ced4,_0x2a89c9){return client[_0xe57a('0xb')](_0x48c4b7,_0x104f83)[_0xe57a('0xc')](function(_0x2bf3d7){logger['info'](_0xe57a('0xd'),_0x4d1332,_0xe57a('0xe'));logger[_0xe57a('0xf')](_0xe57a('0x10'),_0x4d1332,_0xe57a('0xe'),JSON['stringify'](_0x2bf3d7));if(_0x2bf3d7[_0xe57a('0x11')]){if(_0x2bf3d7[_0xe57a('0x11')][_0xe57a('0x12')]===0x1f4){logger[_0xe57a('0x11')](_0xe57a('0xd'),_0x4d1332,_0x2bf3d7['error']['message']);return _0x2a89c9(_0x2bf3d7[_0xe57a('0x11')][_0xe57a('0x13')]);}logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x4d1332,_0x2bf3d7[_0xe57a('0x11')]['message']);return _0x8ced4(_0x2bf3d7[_0xe57a('0x11')][_0xe57a('0x13')]);}else{logger[_0xe57a('0x14')](_0xe57a('0xd'),_0x4d1332,_0xe57a('0xe'));_0x8ced4(_0x2bf3d7[_0xe57a('0x15')][_0xe57a('0x13')]);}})['catch'](function(_0x523107){logger[_0xe57a('0x11')](_0xe57a('0xd'),_0x4d1332,_0x523107);_0x2a89c9(_0x523107);});});}
\ No newline at end of file
+var _0x3b75=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x2eb8a9,_0x5dc015){var _0x4975ff=function(_0x419d0c){while(--_0x419d0c){_0x2eb8a9['push'](_0x2eb8a9['shift']());}};_0x4975ff(++_0x5dc015);}(_0x3b75,0x144));var _0x53b7=function(_0x189c9e,_0x1c3b55){_0x189c9e=_0x189c9e-0x0;var _0x3f38ca=_0x3b75[_0x189c9e];return _0x3f38ca;};'use strict';var _=require(_0x53b7('0x0'));var util=require(_0x53b7('0x1'));var moment=require(_0x53b7('0x2'));var BPromise=require(_0x53b7('0x3'));var rs=require(_0x53b7('0x4'));var fs=require('fs');var Redis=require(_0x53b7('0x5'));var db=require(_0x53b7('0x6'))['db'];var utils=require(_0x53b7('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x53b7('0x8'));var jayson=require(_0x53b7('0x9'));var client=jayson[_0x53b7('0xa')][_0x53b7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4e87d4,_0x4dd362,_0x13d9c7){return new BPromise(function(_0x42a770,_0x3eccbf){return client[_0x53b7('0xc')](_0x4e87d4,_0x13d9c7)[_0x53b7('0xd')](function(_0x4838a1){logger[_0x53b7('0xe')](_0x53b7('0xf'),_0x4dd362,_0x53b7('0x10'));logger[_0x53b7('0x11')](_0x53b7('0x12'),_0x4dd362,_0x53b7('0x10'),JSON['stringify'](_0x4838a1));if(_0x4838a1['error']){if(_0x4838a1[_0x53b7('0x13')]['code']===0x1f4){logger[_0x53b7('0x13')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4dd362,_0x4838a1[_0x53b7('0x13')][_0x53b7('0x14')]);return _0x3eccbf(_0x4838a1[_0x53b7('0x13')]['message']);}logger[_0x53b7('0x13')](_0x53b7('0xf'),_0x4dd362,_0x4838a1['error']['message']);return _0x42a770(_0x4838a1[_0x53b7('0x13')][_0x53b7('0x14')]);}else{logger[_0x53b7('0xe')](_0x53b7('0xf'),_0x4dd362,_0x53b7('0x10'));_0x42a770(_0x4838a1['result'][_0x53b7('0x14')]);}})[_0x53b7('0x15')](function(_0x23bc46){logger[_0x53b7('0x13')](_0x53b7('0xf'),_0x4dd362,_0x23bc46);_0x3eccbf(_0x23bc46);});});}
\ No newline at end of file
index 65bcf92..7fc2640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbc6=['isAuthenticated','/:id','show','post','create','put','update','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x43b65f,_0xb59f1e){var _0x303772=function(_0x31a33e){while(--_0x31a33e){_0x43b65f['push'](_0x43b65f['shift']());}};_0x303772(++_0xb59f1e);}(_0xdbc6,0x13b));var _0x6dbc=function(_0x1a04d1,_0x1f3e11){_0x1a04d1=_0x1a04d1-0x0;var _0x4c9198=_0xdbc6[_0x1a04d1];return _0x4c9198;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6dbc('0x0'));var timeout=require('connect-timeout');var express=require(_0x6dbc('0x1'));var router=express[_0x6dbc('0x2')]();var fs_extra=require(_0x6dbc('0x3'));var auth=require(_0x6dbc('0x4'));var interaction=require(_0x6dbc('0x5'));var config=require(_0x6dbc('0x6'));var controller=require('./template.controller');router[_0x6dbc('0x7')]('/',auth[_0x6dbc('0x8')](),controller['index']);router[_0x6dbc('0x7')](_0x6dbc('0x9'),auth[_0x6dbc('0x8')](),controller[_0x6dbc('0xa')]);router[_0x6dbc('0xb')]('/',auth['isAuthenticated'](),controller[_0x6dbc('0xc')]);router[_0x6dbc('0xd')]('/:id',auth[_0x6dbc('0x8')](),controller[_0x6dbc('0xe')]);router['delete'](_0x6dbc('0x9'),auth[_0x6dbc('0x8')](),controller[_0x6dbc('0xf')]);module[_0x6dbc('0x10')]=router;
\ No newline at end of file
+var _0x160f=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','isAuthenticated','index','create','put','/:id','destroy','multer'];(function(_0x5309a8,_0x2f7a49){var _0x52725c=function(_0xcda479){while(--_0xcda479){_0x5309a8['push'](_0x5309a8['shift']());}};_0x52725c(++_0x2f7a49);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xf160('0x0'));var util=require(_0xf160('0x1'));var path=require(_0xf160('0x2'));var timeout=require(_0xf160('0x3'));var express=require('express');var router=express[_0xf160('0x4')]();var fs_extra=require(_0xf160('0x5'));var auth=require(_0xf160('0x6'));var interaction=require(_0xf160('0x7'));var config=require(_0xf160('0x8'));var controller=require(_0xf160('0x9'));router['get']('/',auth[_0xf160('0xa')](),controller[_0xf160('0xb')]);router['get']('/:id',auth[_0xf160('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xf160('0xc')]);router[_0xf160('0xd')](_0xf160('0xe'),auth[_0xf160('0xa')](),controller['update']);router['delete'](_0xf160('0xe'),auth[_0xf160('0xa')](),controller[_0xf160('0xf')]);module['exports']=router;
\ No newline at end of file
index 4790518..296330c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x185d=['TEXT','sequelize','exports'];(function(_0xb4ec3a,_0x2bace0){var _0x1b83db=function(_0x5278f3){while(--_0x5278f3){_0xb4ec3a['push'](_0xb4ec3a['shift']());}};_0x1b83db(++_0x2bace0);}(_0x185d,0xca));var _0xd185=function(_0x4cfc1d,_0x2c0927){_0x4cfc1d=_0x4cfc1d-0x0;var _0x1c01a0=_0x185d[_0x4cfc1d];return _0x1c01a0;};'use strict';var Sequelize=require(_0xd185('0x0'));module[_0xd185('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0xd185('0x2')]}};
\ No newline at end of file
+var _0x68c0=['STRING','sequelize','exports'];(function(_0x9a2a6f,_0x596c5a){var _0x1f70d8=function(_0xcc0c6b){while(--_0xcc0c6b){_0x9a2a6f['push'](_0x9a2a6f['shift']());}};_0x1f70d8(++_0x596c5a);}(_0x68c0,0x124));var _0x068c=function(_0x2ceded,_0x2aa5d1){_0x2ceded=_0x2ceded-0x0;var _0x50bc1c=_0x68c0[_0x2ceded];return _0x50bc1c;};'use strict';var Sequelize=require(_0x068c('0x0'));module[_0x068c('0x1')]={'name':{'type':Sequelize[_0x068c('0x2')]},'description':{'type':Sequelize[_0x068c('0x2')]},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index ad7a9f8..f0f96e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02a5=['limit','undefined','count','Content-Range','reject','save','update','then','get','Templates','UserProfileResource','destroy','error','stack','name','send','index','map','Template','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filter','merge','options','findAll','rows','show','length','include','catch','create','body','user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x510d97,_0x53e972){var _0x231724=function(_0x4b5a81){while(--_0x4b5a81){_0x510d97['push'](_0x510d97['shift']());}};_0x231724(++_0x53e972);}(_0x02a5,0x1d1));var _0x502a=function(_0x3ec333,_0x26bcbe){_0x3ec333=_0x3ec333-0x0;var _0x15ccb8=_0x02a5[_0x3ec333];return _0x15ccb8;};'use strict';var emlformat=require(_0x502a('0x0'));var rimraf=require(_0x502a('0x1'));var zipdir=require(_0x502a('0x2'));var jsonpatch=require(_0x502a('0x3'));var rp=require(_0x502a('0x4'));var moment=require(_0x502a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x502a('0x6'));var util=require(_0x502a('0x7'));var path=require(_0x502a('0x8'));var sox=require('sox');var csv=require(_0x502a('0x9'));var ejs=require(_0x502a('0xa'));var fs=require('fs');var fs_extra=require(_0x502a('0xb'));var _=require(_0x502a('0xc'));var squel=require(_0x502a('0xd'));var crypto=require(_0x502a('0xe'));var jsforce=require(_0x502a('0xf'));var deskjs=require(_0x502a('0x10'));var toCsv=require('to-csv');var querystring=require(_0x502a('0x11'));var Papa=require('papaparse');var Redis=require(_0x502a('0x12'));var authService=require(_0x502a('0x13'));var qs=require(_0x502a('0x14'));var as=require(_0x502a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x502a('0x16'))(_0x502a('0x17'));var utils=require(_0x502a('0x18'));var config=require(_0x502a('0x19'));var licenseUtil=require(_0x502a('0x1a'));var db=require(_0x502a('0x1b'))['db'];function respondWithStatusCode(_0x2a4e65,_0x36056b){_0x36056b=_0x36056b||0xcc;return function(_0x4dfc5e){if(_0x4dfc5e){return _0x2a4e65[_0x502a('0x1c')](_0x36056b);}return _0x2a4e65[_0x502a('0x1d')](_0x36056b)[_0x502a('0x1e')]();};}function respondWithResult(_0x1b8053,_0x23d6d6){_0x23d6d6=_0x23d6d6||0xc8;return function(_0x2a63f7){if(_0x2a63f7){return _0x1b8053[_0x502a('0x1d')](_0x23d6d6)[_0x502a('0x1f')](_0x2a63f7);}};}function respondWithFilteredResult(_0x2a7309,_0x4c22b9){return function(_0x4330fe){if(_0x4330fe){var _0x4429f6=typeof _0x4c22b9[_0x502a('0x20')]==='undefined'&&typeof _0x4c22b9[_0x502a('0x21')]===_0x502a('0x22');var _0x2011b7=_0x4330fe[_0x502a('0x23')];var _0x52b523=_0x4429f6?0x0:_0x4c22b9[_0x502a('0x20')];var _0x54c237=_0x4429f6?_0x4330fe[_0x502a('0x23')]:_0x4c22b9[_0x502a('0x20')]+_0x4c22b9['limit'];var _0x4d89a3;if(_0x54c237>=_0x2011b7){_0x54c237=_0x2011b7;_0x4d89a3=0xc8;}else{_0x4d89a3=0xce;}_0x2a7309['status'](_0x4d89a3);return _0x2a7309['set'](_0x502a('0x24'),_0x52b523+'-'+_0x54c237+'/'+_0x2011b7)[_0x502a('0x1f')](_0x4330fe);}return null;};}function patchUpdates(_0x57a3f5){return function(_0x1c1dc3){try{jsonpatch['apply'](_0x1c1dc3,_0x57a3f5,!![]);}catch(_0x4ec9c0){return BPromise[_0x502a('0x25')](_0x4ec9c0);}return _0x1c1dc3[_0x502a('0x26')]();};}function saveUpdates(_0x39409f,_0x87f9cf){return function(_0x331ab){if(_0x331ab){return _0x331ab[_0x502a('0x27')](_0x39409f)[_0x502a('0x28')](function(_0x314cce){return _0x314cce;});}return null;};}function removeEntity(_0x165f19,_0x57248f){return function(_0x1bf5fa){if(_0x1bf5fa){return _0x1bf5fa['destroy']()['then'](function(){var _0x541be6=_0x1bf5fa[_0x502a('0x29')]({'plain':!![]});var _0x53409b=_0x502a('0x2a');return db[_0x502a('0x2b')][_0x502a('0x2c')]({'where':{'type':_0x53409b,'resourceId':_0x541be6['id']}})[_0x502a('0x28')](function(){return _0x1bf5fa;});})['then'](function(){_0x165f19[_0x502a('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x149bd8,_0x4bac01){return function(_0x32ac30){if(!_0x32ac30){_0x149bd8['sendStatus'](0x194);}return _0x32ac30;};}function handleError(_0x55a637,_0x17c9a4){_0x17c9a4=_0x17c9a4||0x1f4;return function(_0x3bd0ab){logger[_0x502a('0x2d')](_0x3bd0ab[_0x502a('0x2e')]);if(_0x3bd0ab[_0x502a('0x2f')]){delete _0x3bd0ab['name'];}_0x55a637[_0x502a('0x1d')](_0x17c9a4)[_0x502a('0x30')](_0x3bd0ab);};}exports[_0x502a('0x31')]=function(_0x326e6,_0x3a0d99){var _0x4e8be5={},_0x3d94e5={},_0x4f4f11={'count':0x0,'rows':[]};var _0x1dd81e=_[_0x502a('0x32')](db[_0x502a('0x33')][_0x502a('0x34')],function(_0x27704c){return{'name':_0x27704c[_0x502a('0x35')],'type':_0x27704c[_0x502a('0x36')]['key']};});_0x3d94e5[_0x502a('0x37')]=_['map'](_0x1dd81e,_0x502a('0x2f'));_0x3d94e5[_0x502a('0x38')]=_[_0x502a('0x39')](_0x326e6[_0x502a('0x38')]);_0x3d94e5[_0x502a('0x3a')]=_[_0x502a('0x3b')](_0x3d94e5['model'],_0x3d94e5[_0x502a('0x38')]);_0x4e8be5['attributes']=_[_0x502a('0x3b')](_0x3d94e5[_0x502a('0x37')],qs[_0x502a('0x3c')](_0x326e6[_0x502a('0x38')]['fields']));_0x4e8be5[_0x502a('0x3d')]=_0x4e8be5[_0x502a('0x3d')]['length']?_0x4e8be5[_0x502a('0x3d')]:_0x3d94e5['model'];if(!_0x326e6['query'][_0x502a('0x3e')](_0x502a('0x3f'))){_0x4e8be5[_0x502a('0x21')]=qs[_0x502a('0x21')](_0x326e6[_0x502a('0x38')][_0x502a('0x21')]);_0x4e8be5['offset']=qs[_0x502a('0x20')](_0x326e6['query'][_0x502a('0x20')]);}_0x4e8be5['order']=qs[_0x502a('0x40')](_0x326e6[_0x502a('0x38')][_0x502a('0x40')]);_0x4e8be5[_0x502a('0x41')]=qs[_0x502a('0x3a')](_['pick'](_0x326e6[_0x502a('0x38')],_0x3d94e5[_0x502a('0x3a')]),_0x1dd81e);if(_0x326e6[_0x502a('0x38')][_0x502a('0x42')]){_0x4e8be5[_0x502a('0x41')]=_['merge'](_0x4e8be5[_0x502a('0x41')],{'$or':_['map'](_0x1dd81e,function(_0x55462a){if(_0x55462a[_0x502a('0x36')]!=='VIRTUAL'){var _0x2ac315={};_0x2ac315[_0x55462a['name']]={'$like':'%'+_0x326e6[_0x502a('0x38')][_0x502a('0x42')]+'%'};return _0x2ac315;}})});}_0x4e8be5=_[_0x502a('0x43')]({},_0x4e8be5,_0x326e6[_0x502a('0x44')]);var _0x340477={'where':_0x4e8be5['where']};return db[_0x502a('0x33')][_0x502a('0x23')](_0x340477)[_0x502a('0x28')](function(_0x565d3c){_0x4f4f11[_0x502a('0x23')]=_0x565d3c;if(_0x326e6[_0x502a('0x38')]['includeAll']){_0x4e8be5['include']=[{'all':!![]}];}return db[_0x502a('0x33')][_0x502a('0x45')](_0x4e8be5);})[_0x502a('0x28')](function(_0x4ec0f6){_0x4f4f11[_0x502a('0x46')]=_0x4ec0f6;return _0x4f4f11;})[_0x502a('0x28')](respondWithFilteredResult(_0x3a0d99,_0x4e8be5))['catch'](handleError(_0x3a0d99,null));};exports[_0x502a('0x47')]=function(_0x1e6f70,_0x3cb5a8){var _0x1c88f6={'raw':!![],'where':{'id':_0x1e6f70['params']['id']}},_0x32ce89={};_0x32ce89[_0x502a('0x37')]=_['keys'](db[_0x502a('0x33')]['rawAttributes']);_0x32ce89[_0x502a('0x38')]=_['keys'](_0x1e6f70['query']);_0x32ce89['filters']=_[_0x502a('0x3b')](_0x32ce89[_0x502a('0x37')],_0x32ce89[_0x502a('0x38')]);_0x1c88f6[_0x502a('0x3d')]=_[_0x502a('0x3b')](_0x32ce89[_0x502a('0x37')],qs[_0x502a('0x3c')](_0x1e6f70['query']['fields']));_0x1c88f6[_0x502a('0x3d')]=_0x1c88f6['attributes'][_0x502a('0x48')]?_0x1c88f6[_0x502a('0x3d')]:_0x32ce89[_0x502a('0x37')];if(_0x1e6f70['query']['includeAll']){_0x1c88f6[_0x502a('0x49')]=[{'all':!![]}];}_0x1c88f6=_[_0x502a('0x43')]({},_0x1c88f6,_0x1e6f70[_0x502a('0x44')]);return db[_0x502a('0x33')]['find'](_0x1c88f6)[_0x502a('0x28')](handleEntityNotFound(_0x3cb5a8,null))[_0x502a('0x28')](respondWithResult(_0x3cb5a8,null))[_0x502a('0x4a')](handleError(_0x3cb5a8,null));};exports[_0x502a('0x4b')]=function(_0x1ecd5e,_0x117b6b){return db['Template'][_0x502a('0x4b')](_0x1ecd5e[_0x502a('0x4c')],{})[_0x502a('0x28')](function(_0x39420e){var _0x223546=_0x1ecd5e['user'][_0x502a('0x29')]({'plain':!![]});if(!_0x223546)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x223546['role']===_0x502a('0x4d')){var _0x3531fa=_0x39420e['get']({'plain':!![]});var _0x348f19=_0x502a('0x2a');return db[_0x502a('0x4e')][_0x502a('0x4f')]({'where':{'name':_0x348f19,'userProfileId':_0x223546[_0x502a('0x50')]},'raw':!![]})[_0x502a('0x28')](function(_0x2e4697){if(_0x2e4697&&_0x2e4697['autoAssociation']===0x0){return db[_0x502a('0x2b')]['create']({'name':_0x3531fa[_0x502a('0x2f')],'resourceId':_0x3531fa['id'],'type':_0x2e4697[_0x502a('0x2f')],'sectionId':_0x2e4697['id']},{})[_0x502a('0x28')](function(){return _0x39420e;});}else{return _0x39420e;}})['catch'](function(_0x2501f5){logger[_0x502a('0x2d')](_0x502a('0x51'),_0x2501f5);throw _0x2501f5;});}return _0x39420e;})['then'](respondWithResult(_0x117b6b,0xc9))[_0x502a('0x4a')](handleError(_0x117b6b,null));};exports[_0x502a('0x27')]=function(_0x168fd0,_0x402134){if(_0x168fd0[_0x502a('0x4c')]['id']){delete _0x168fd0[_0x502a('0x4c')]['id'];}return db[_0x502a('0x33')][_0x502a('0x4f')]({'where':{'id':_0x168fd0[_0x502a('0x52')]['id']}})[_0x502a('0x28')](handleEntityNotFound(_0x402134,null))[_0x502a('0x28')](saveUpdates(_0x168fd0[_0x502a('0x4c')],null))[_0x502a('0x28')](respondWithResult(_0x402134,null))[_0x502a('0x4a')](handleError(_0x402134,null));};exports[_0x502a('0x2c')]=function(_0x3d8543,_0x49a5a5){return db['Template'][_0x502a('0x4f')]({'where':{'id':_0x3d8543['params']['id']}})[_0x502a('0x28')](handleEntityNotFound(_0x49a5a5,null))[_0x502a('0x28')](removeEntity(_0x49a5a5,null))[_0x502a('0x4a')](handleError(_0x49a5a5,null));};
\ No newline at end of file
+var _0x212b=['merge','VIRTUAL','options','includeAll','include','rows','catch','show','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Templates','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','send','map','Template','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x3a84a5,_0x238da3){var _0x1f1e6a=function(_0xe2e720){while(--_0xe2e720){_0x3a84a5['push'](_0x3a84a5['shift']());}};_0x1f1e6a(++_0x238da3);}(_0x212b,0x15e));var _0xb212=function(_0xaca62f,_0x228a11){_0xaca62f=_0xaca62f-0x0;var _0x52772d=_0x212b[_0xaca62f];return _0x52772d;};'use strict';var emlformat=require(_0xb212('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb212('0x1'));var jsonpatch=require(_0xb212('0x2'));var rp=require(_0xb212('0x3'));var moment=require(_0xb212('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb212('0x5'));var util=require('util');var path=require(_0xb212('0x6'));var sox=require(_0xb212('0x7'));var csv=require(_0xb212('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb212('0x9'));var _=require(_0xb212('0xa'));var squel=require(_0xb212('0xb'));var crypto=require(_0xb212('0xc'));var jsforce=require(_0xb212('0xd'));var deskjs=require(_0xb212('0xe'));var toCsv=require(_0xb212('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb212('0xf'));var authService=require(_0xb212('0x10'));var qs=require(_0xb212('0x11'));var as=require(_0xb212('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb212('0x13'))('api');var utils=require(_0xb212('0x14'));var config=require(_0xb212('0x15'));var licenseUtil=require(_0xb212('0x16'));var db=require(_0xb212('0x17'))['db'];function respondWithStatusCode(_0x55bf4e,_0x399f3d){_0x399f3d=_0x399f3d||0xcc;return function(_0x47ed80){if(_0x47ed80){return _0x55bf4e[_0xb212('0x18')](_0x399f3d);}return _0x55bf4e[_0xb212('0x19')](_0x399f3d)['end']();};}function respondWithResult(_0x37352f,_0xcf1681){_0xcf1681=_0xcf1681||0xc8;return function(_0x154c92){if(_0x154c92){return _0x37352f[_0xb212('0x19')](_0xcf1681)[_0xb212('0x1a')](_0x154c92);}};}function respondWithFilteredResult(_0x1b0d20,_0x45a020){return function(_0x3d0dce){if(_0x3d0dce){var _0xc44dac=typeof _0x45a020[_0xb212('0x1b')]===_0xb212('0x1c')&&typeof _0x45a020['limit']==='undefined';var _0x116671=_0x3d0dce[_0xb212('0x1d')];var _0x5ac9f0=_0xc44dac?0x0:_0x45a020[_0xb212('0x1b')];var _0x3ee4fd=_0xc44dac?_0x3d0dce[_0xb212('0x1d')]:_0x45a020[_0xb212('0x1b')]+_0x45a020[_0xb212('0x1e')];var _0x38c9d1;if(_0x3ee4fd>=_0x116671){_0x3ee4fd=_0x116671;_0x38c9d1=0xc8;}else{_0x38c9d1=0xce;}_0x1b0d20[_0xb212('0x19')](_0x38c9d1);return _0x1b0d20['set'](_0xb212('0x1f'),_0x5ac9f0+'-'+_0x3ee4fd+'/'+_0x116671)[_0xb212('0x1a')](_0x3d0dce);}return null;};}function patchUpdates(_0x331eb9){return function(_0x4331d1){try{jsonpatch[_0xb212('0x20')](_0x4331d1,_0x331eb9,!![]);}catch(_0x556f73){return BPromise[_0xb212('0x21')](_0x556f73);}return _0x4331d1[_0xb212('0x22')]();};}function saveUpdates(_0xb86858,_0x31b7b7){return function(_0x164e48){if(_0x164e48){return _0x164e48[_0xb212('0x23')](_0xb86858)[_0xb212('0x24')](function(_0x23280a){return _0x23280a;});}return null;};}function removeEntity(_0x47ac12,_0x543c72){return function(_0x351153){if(_0x351153){return _0x351153[_0xb212('0x25')]()[_0xb212('0x24')](function(){var _0x50cf0f=_0x351153[_0xb212('0x26')]({'plain':!![]});var _0x28b61d='Templates';return db[_0xb212('0x27')][_0xb212('0x25')]({'where':{'type':_0x28b61d,'resourceId':_0x50cf0f['id']}})[_0xb212('0x24')](function(){return _0x351153;});})['then'](function(){_0x47ac12[_0xb212('0x19')](0xcc)[_0xb212('0x28')]();});}};}function handleEntityNotFound(_0x189b07,_0x400f40){return function(_0x24c172){if(!_0x24c172){_0x189b07[_0xb212('0x18')](0x194);}return _0x24c172;};}function handleError(_0x4a447c,_0x58fe12){_0x58fe12=_0x58fe12||0x1f4;return function(_0x2f40aa){logger[_0xb212('0x29')](_0x2f40aa[_0xb212('0x2a')]);if(_0x2f40aa[_0xb212('0x2b')]){delete _0x2f40aa[_0xb212('0x2b')];}_0x4a447c['status'](_0x58fe12)[_0xb212('0x2c')](_0x2f40aa);};}exports['index']=function(_0x2e9c92,_0x5a2169){var _0x5ef89e={},_0x19bc27={},_0x5e613b={'count':0x0,'rows':[]};var _0x43d963=_[_0xb212('0x2d')](db[_0xb212('0x2e')][_0xb212('0x2f')],function(_0x531a16){return{'name':_0x531a16[_0xb212('0x30')],'type':_0x531a16[_0xb212('0x31')][_0xb212('0x32')]};});_0x19bc27[_0xb212('0x33')]=_[_0xb212('0x2d')](_0x43d963,'name');_0x19bc27['query']=_[_0xb212('0x34')](_0x2e9c92['query']);_0x19bc27[_0xb212('0x35')]=_[_0xb212('0x36')](_0x19bc27[_0xb212('0x33')],_0x19bc27[_0xb212('0x37')]);_0x5ef89e[_0xb212('0x38')]=_[_0xb212('0x36')](_0x19bc27[_0xb212('0x33')],qs[_0xb212('0x39')](_0x2e9c92[_0xb212('0x37')][_0xb212('0x39')]));_0x5ef89e[_0xb212('0x38')]=_0x5ef89e[_0xb212('0x38')][_0xb212('0x3a')]?_0x5ef89e['attributes']:_0x19bc27[_0xb212('0x33')];if(!_0x2e9c92[_0xb212('0x37')][_0xb212('0x3b')](_0xb212('0x3c'))){_0x5ef89e[_0xb212('0x1e')]=qs['limit'](_0x2e9c92[_0xb212('0x37')][_0xb212('0x1e')]);_0x5ef89e[_0xb212('0x1b')]=qs[_0xb212('0x1b')](_0x2e9c92['query']['offset']);}_0x5ef89e[_0xb212('0x3d')]=qs[_0xb212('0x3e')](_0x2e9c92[_0xb212('0x37')][_0xb212('0x3e')]);_0x5ef89e[_0xb212('0x3f')]=qs[_0xb212('0x35')](_[_0xb212('0x40')](_0x2e9c92[_0xb212('0x37')],_0x19bc27['filters']),_0x43d963);if(_0x2e9c92[_0xb212('0x37')]['filter']){_0x5ef89e[_0xb212('0x3f')]=_[_0xb212('0x41')](_0x5ef89e[_0xb212('0x3f')],{'$or':_[_0xb212('0x2d')](_0x43d963,function(_0x17a1ef){if(_0x17a1ef[_0xb212('0x31')]!==_0xb212('0x42')){var _0x16d9ee={};_0x16d9ee[_0x17a1ef[_0xb212('0x2b')]]={'$like':'%'+_0x2e9c92['query']['filter']+'%'};return _0x16d9ee;}})});}_0x5ef89e=_[_0xb212('0x41')]({},_0x5ef89e,_0x2e9c92[_0xb212('0x43')]);var _0x1a0567={'where':_0x5ef89e[_0xb212('0x3f')]};return db[_0xb212('0x2e')]['count'](_0x1a0567)[_0xb212('0x24')](function(_0x1b0de3){_0x5e613b[_0xb212('0x1d')]=_0x1b0de3;if(_0x2e9c92[_0xb212('0x37')][_0xb212('0x44')]){_0x5ef89e[_0xb212('0x45')]=[{'all':!![]}];}return db[_0xb212('0x2e')]['findAll'](_0x5ef89e);})[_0xb212('0x24')](function(_0x29c586){_0x5e613b[_0xb212('0x46')]=_0x29c586;return _0x5e613b;})[_0xb212('0x24')](respondWithFilteredResult(_0x5a2169,_0x5ef89e))[_0xb212('0x47')](handleError(_0x5a2169,null));};exports[_0xb212('0x48')]=function(_0x4e8933,_0xfc83d5){var _0x211864={'raw':!![],'where':{'id':_0x4e8933['params']['id']}},_0x590b69={};_0x590b69[_0xb212('0x33')]=_[_0xb212('0x34')](db[_0xb212('0x2e')]['rawAttributes']);_0x590b69['query']=_[_0xb212('0x34')](_0x4e8933['query']);_0x590b69['filters']=_[_0xb212('0x36')](_0x590b69[_0xb212('0x33')],_0x590b69[_0xb212('0x37')]);_0x211864[_0xb212('0x38')]=_['intersection'](_0x590b69[_0xb212('0x33')],qs['fields'](_0x4e8933[_0xb212('0x37')]['fields']));_0x211864['attributes']=_0x211864[_0xb212('0x38')][_0xb212('0x3a')]?_0x211864[_0xb212('0x38')]:_0x590b69['model'];if(_0x4e8933['query'][_0xb212('0x44')]){_0x211864[_0xb212('0x45')]=[{'all':!![]}];}_0x211864=_[_0xb212('0x41')]({},_0x211864,_0x4e8933[_0xb212('0x43')]);return db[_0xb212('0x2e')][_0xb212('0x49')](_0x211864)[_0xb212('0x24')](handleEntityNotFound(_0xfc83d5,null))[_0xb212('0x24')](respondWithResult(_0xfc83d5,null))['catch'](handleError(_0xfc83d5,null));};exports['create']=function(_0x33e097,_0x407b5f){return db[_0xb212('0x2e')][_0xb212('0x4a')](_0x33e097[_0xb212('0x4b')],{})['then'](function(_0x10a439){var _0xb1a8b=_0x33e097['user'][_0xb212('0x26')]({'plain':!![]});if(!_0xb1a8b)throw new Error(_0xb212('0x4c'));if(_0xb1a8b[_0xb212('0x4d')]===_0xb212('0x4e')){var _0x1060b2=_0x10a439[_0xb212('0x26')]({'plain':!![]});var _0x494f73=_0xb212('0x4f');return db[_0xb212('0x50')][_0xb212('0x49')]({'where':{'name':_0x494f73,'userProfileId':_0xb1a8b['userProfileId']},'raw':!![]})[_0xb212('0x24')](function(_0x2724f2){if(_0x2724f2&&_0x2724f2[_0xb212('0x51')]===0x0){return db[_0xb212('0x27')]['create']({'name':_0x1060b2['name'],'resourceId':_0x1060b2['id'],'type':_0x2724f2[_0xb212('0x2b')],'sectionId':_0x2724f2['id']},{})[_0xb212('0x24')](function(){return _0x10a439;});}else{return _0x10a439;}})[_0xb212('0x47')](function(_0x1104d9){logger[_0xb212('0x29')](_0xb212('0x52'),_0x1104d9);throw _0x1104d9;});}return _0x10a439;})[_0xb212('0x24')](respondWithResult(_0x407b5f,0xc9))['catch'](handleError(_0x407b5f,null));};exports[_0xb212('0x23')]=function(_0x193663,_0x592741){if(_0x193663[_0xb212('0x4b')]['id']){delete _0x193663[_0xb212('0x4b')]['id'];}return db['Template'][_0xb212('0x49')]({'where':{'id':_0x193663['params']['id']}})['then'](handleEntityNotFound(_0x592741,null))[_0xb212('0x24')](saveUpdates(_0x193663[_0xb212('0x4b')],null))['then'](respondWithResult(_0x592741,null))['catch'](handleError(_0x592741,null));};exports['destroy']=function(_0x15fd50,_0x57d0b9){return db[_0xb212('0x2e')]['find']({'where':{'id':_0x15fd50['params']['id']}})['then'](handleEntityNotFound(_0x57d0b9,null))['then'](removeEntity(_0x57d0b9,null))['catch'](handleError(_0x57d0b9,null));};
\ No newline at end of file
index 2d93a0b..1e5339b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ba=['path','rimraf','../../config/environment','./template.attributes','exports','define','tools_templates','../../config/logger','api','bluebird'];(function(_0x113dbb,_0x244072){var _0x3bc605=function(_0x34855a){while(--_0x34855a){_0x113dbb['push'](_0x113dbb['shift']());}};_0x3bc605(++_0x244072);}(_0xd0ba,0x151));var _0xad0b=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xd0ba[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xad0b('0x0'))(_0xad0b('0x1'));var moment=require('moment');var BPromise=require(_0xad0b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xad0b('0x3'));var rimraf=require(_0xad0b('0x4'));var config=require(_0xad0b('0x5'));var attributes=require(_0xad0b('0x6'));module[_0xad0b('0x7')]=function(_0x59f38d,_0x49f256){return _0x59f38d[_0xad0b('0x8')]('Template',attributes,{'tableName':_0xad0b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x93e6=['bluebird','request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define','tools_templates','lodash','util','../../config/logger','moment'];(function(_0x443539,_0x53bdd2){var _0x575c62=function(_0x518921){while(--_0x518921){_0x443539['push'](_0x443539['shift']());}};_0x575c62(++_0x53bdd2);}(_0x93e6,0x71));var _0x693e=function(_0x38494c,_0x5393f5){_0x38494c=_0x38494c-0x0;var _0x591aec=_0x93e6[_0x38494c];return _0x591aec;};'use strict';var _=require(_0x693e('0x0'));var util=require(_0x693e('0x1'));var logger=require(_0x693e('0x2'))('api');var moment=require(_0x693e('0x3'));var BPromise=require(_0x693e('0x4'));var rp=require(_0x693e('0x5'));var fs=require('fs');var path=require(_0x693e('0x6'));var rimraf=require(_0x693e('0x7'));var config=require(_0x693e('0x8'));var attributes=require(_0x693e('0x9'));module[_0x693e('0xa')]=function(_0x528aa7,_0x33a46e){return _0x528aa7[_0x693e('0xb')]('Template',attributes,{'tableName':_0x693e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dfc8f92..9d170ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf4=['catch','Template','findAll','raw','options','attributes','limit','include','map','model','GetTemplate','lodash','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','request\x20sent','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','Template,\x20%s,\x20%s','message','info'];(function(_0x3042d5,_0x349534){var _0x1acfef=function(_0x5a920f){while(--_0x5a920f){_0x3042d5['push'](_0x3042d5['shift']());}};_0x1acfef(++_0x349534);}(_0xbaf4,0x13f));var _0x4baf=function(_0x3756fe,_0x3481e5){_0x3756fe=_0x3756fe-0x0;var _0xaa4b84=_0xbaf4[_0x3756fe];return _0xaa4b84;};'use strict';var _=require(_0x4baf('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4baf('0x1'))['db'];var utils=require(_0x4baf('0x2'));var logger=require(_0x4baf('0x3'))('rpc');var config=require(_0x4baf('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x4baf('0x5')][_0x4baf('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4766a3,_0x57ec76,_0x31c245){return new BPromise(function(_0x4b1c62,_0x290fd1){return client[_0x4baf('0x7')](_0x4766a3,_0x31c245)[_0x4baf('0x8')](function(_0x3ce196){logger['info']('Template,\x20%s,\x20%s',_0x57ec76,_0x4baf('0x9'));logger['debug'](_0x4baf('0xa'),_0x57ec76,_0x4baf('0x9'),JSON[_0x4baf('0xb')](_0x3ce196));if(_0x3ce196[_0x4baf('0xc')]){if(_0x3ce196[_0x4baf('0xc')][_0x4baf('0xd')]===0x1f4){logger['error'](_0x4baf('0xe'),_0x57ec76,_0x3ce196[_0x4baf('0xc')][_0x4baf('0xf')]);return _0x290fd1(_0x3ce196[_0x4baf('0xc')]['message']);}logger['error']('Template,\x20%s,\x20%s',_0x57ec76,_0x3ce196['error'][_0x4baf('0xf')]);return _0x4b1c62(_0x3ce196[_0x4baf('0xc')][_0x4baf('0xf')]);}else{logger[_0x4baf('0x10')](_0x4baf('0xe'),_0x57ec76,_0x4baf('0x9'));_0x4b1c62(_0x3ce196['result']['message']);}})[_0x4baf('0x11')](function(_0x1671be){logger[_0x4baf('0xc')]('Template,\x20%s,\x20%s',_0x57ec76,_0x1671be);_0x290fd1(_0x1671be);});});}exports['GetTemplate']=function(_0x416d83){var _0x5a7877=this;return new Promise(function(_0x478324,_0x39d491){return db[_0x4baf('0x12')][_0x4baf('0x13')]({'raw':_0x416d83['options']?_0x416d83['options'][_0x4baf('0x14')]===undefined?!![]:![]:!![],'where':_0x416d83['options']?_0x416d83[_0x4baf('0x15')]['where']||null:null,'attributes':_0x416d83[_0x4baf('0x15')]?_0x416d83[_0x4baf('0x15')][_0x4baf('0x16')]||null:null,'limit':_0x416d83[_0x4baf('0x15')]?_0x416d83[_0x4baf('0x15')][_0x4baf('0x17')]||null:null,'include':_0x416d83[_0x4baf('0x15')]?_0x416d83['options'][_0x4baf('0x18')]?_[_0x4baf('0x19')](_0x416d83['options']['include'],function(_0x31fcc4){return{'model':db[_0x31fcc4[_0x4baf('0x1a')]],'as':_0x31fcc4['as'],'attributes':_0x31fcc4['attributes'],'include':_0x31fcc4[_0x4baf('0x18')]?_[_0x4baf('0x19')](_0x31fcc4[_0x4baf('0x18')],function(_0x41dbaa){return{'model':db[_0x41dbaa[_0x4baf('0x1a')]],'as':_0x41dbaa['as'],'attributes':_0x41dbaa[_0x4baf('0x16')],'include':_0x41dbaa[_0x4baf('0x18')]?_[_0x4baf('0x19')](_0x41dbaa[_0x4baf('0x18')],function(_0x3aa426){return{'model':db[_0x3aa426[_0x4baf('0x1a')]],'as':_0x3aa426['as'],'attributes':_0x3aa426[_0x4baf('0x16')]};}):[]};}):[]};}):[]:[]})[_0x4baf('0x8')](function(_0x10b482){logger['info'](_0x4baf('0x1b'),_0x416d83);logger['debug']('GetTemplate',_0x416d83,JSON[_0x4baf('0xb')](_0x10b482));_0x478324(_0x10b482);})[_0x4baf('0x11')](function(_0x3206c8){logger[_0x4baf('0xc')](_0x4baf('0x1b'),_0x3206c8[_0x4baf('0xf')],_0x416d83);_0x39d491(_0x5a7877['error'](0x1f4,_0x3206c8['message']));});});};
\ No newline at end of file
+var _0x2e32=['where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','GetTemplate','Template','findAll','options','raw'];(function(_0xf13641,_0x4342c1){var _0x3d9f3d=function(_0x1b1ef3){while(--_0x1b1ef3){_0xf13641['push'](_0xf13641['shift']());}};_0x3d9f3d(++_0x4342c1);}(_0x2e32,0x186));var _0x22e3=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x2e32[_0x2c7618];return _0x5ce3f0;};'use strict';var _=require(_0x22e3('0x0'));var util=require(_0x22e3('0x1'));var moment=require(_0x22e3('0x2'));var BPromise=require(_0x22e3('0x3'));var rs=require(_0x22e3('0x4'));var fs=require('fs');var Redis=require(_0x22e3('0x5'));var db=require(_0x22e3('0x6'))['db'];var utils=require(_0x22e3('0x7'));var logger=require(_0x22e3('0x8'))(_0x22e3('0x9'));var config=require(_0x22e3('0xa'));var jayson=require(_0x22e3('0xb'));var client=jayson['client'][_0x22e3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x56a2c5,_0x512e3b,_0x30a19b){return new BPromise(function(_0x2de007,_0x372093){return client[_0x22e3('0xd')](_0x56a2c5,_0x30a19b)[_0x22e3('0xe')](function(_0x11fed9){logger[_0x22e3('0xf')](_0x22e3('0x10'),_0x512e3b,'request\x20sent');logger[_0x22e3('0x11')](_0x22e3('0x12'),_0x512e3b,'request\x20sent',JSON[_0x22e3('0x13')](_0x11fed9));if(_0x11fed9['error']){if(_0x11fed9['error'][_0x22e3('0x14')]===0x1f4){logger['error'](_0x22e3('0x10'),_0x512e3b,_0x11fed9[_0x22e3('0x15')][_0x22e3('0x16')]);return _0x372093(_0x11fed9['error'][_0x22e3('0x16')]);}logger[_0x22e3('0x15')](_0x22e3('0x10'),_0x512e3b,_0x11fed9[_0x22e3('0x15')][_0x22e3('0x16')]);return _0x2de007(_0x11fed9[_0x22e3('0x15')][_0x22e3('0x16')]);}else{logger[_0x22e3('0xf')](_0x22e3('0x10'),_0x512e3b,'request\x20sent');_0x2de007(_0x11fed9[_0x22e3('0x17')][_0x22e3('0x16')]);}})[_0x22e3('0x18')](function(_0x2fcccc){logger[_0x22e3('0x15')](_0x22e3('0x10'),_0x512e3b,_0x2fcccc);_0x372093(_0x2fcccc);});});}exports[_0x22e3('0x19')]=function(_0x25fad0){var _0xd2c4e4=this;return new Promise(function(_0x328199,_0x2ae92b){return db[_0x22e3('0x1a')][_0x22e3('0x1b')]({'raw':_0x25fad0[_0x22e3('0x1c')]?_0x25fad0['options'][_0x22e3('0x1d')]===undefined?!![]:![]:!![],'where':_0x25fad0[_0x22e3('0x1c')]?_0x25fad0[_0x22e3('0x1c')][_0x22e3('0x1e')]||null:null,'attributes':_0x25fad0[_0x22e3('0x1c')]?_0x25fad0['options'][_0x22e3('0x1f')]||null:null,'limit':_0x25fad0[_0x22e3('0x1c')]?_0x25fad0[_0x22e3('0x1c')]['limit']||null:null,'include':_0x25fad0[_0x22e3('0x1c')]?_0x25fad0[_0x22e3('0x1c')][_0x22e3('0x20')]?_[_0x22e3('0x21')](_0x25fad0[_0x22e3('0x1c')][_0x22e3('0x20')],function(_0x4aef0c){return{'model':db[_0x4aef0c[_0x22e3('0x22')]],'as':_0x4aef0c['as'],'attributes':_0x4aef0c[_0x22e3('0x1f')],'include':_0x4aef0c[_0x22e3('0x20')]?_[_0x22e3('0x21')](_0x4aef0c[_0x22e3('0x20')],function(_0x44b315){return{'model':db[_0x44b315[_0x22e3('0x22')]],'as':_0x44b315['as'],'attributes':_0x44b315['attributes'],'include':_0x44b315['include']?_['map'](_0x44b315[_0x22e3('0x20')],function(_0x11cb95){return{'model':db[_0x11cb95[_0x22e3('0x22')]],'as':_0x11cb95['as'],'attributes':_0x11cb95[_0x22e3('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x22e3('0xe')](function(_0x34ba41){logger['info'](_0x22e3('0x19'),_0x25fad0);logger[_0x22e3('0x11')]('GetTemplate',_0x25fad0,JSON[_0x22e3('0x13')](_0x34ba41));_0x328199(_0x34ba41);})['catch'](function(_0x5601a7){logger[_0x22e3('0x15')]('GetTemplate',_0x5601a7[_0x22e3('0x16')],_0x25fad0);_0x2ae92b(_0xd2c4e4[_0x22e3('0x15')](0x1f4,_0x5601a7[_0x22e3('0x16')]));});});};
\ No newline at end of file
index 8745fa9..a2065c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83d5=['delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./trigger.controller','get','isAuthenticated','index','/:id','show','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','post','create','/:id/all_conditions','addAllCondition','addAnyCondition','addAction','put','update'];(function(_0x5c74f2,_0x331ab8){var _0xe42e43=function(_0x281f31){while(--_0x281f31){_0x5c74f2['push'](_0x5c74f2['shift']());}};_0xe42e43(++_0x331ab8);}(_0x83d5,0xb1));var _0x583d=function(_0x1dd6e2,_0x420d75){_0x1dd6e2=_0x1dd6e2-0x0;var _0x247718=_0x83d5[_0x1dd6e2];return _0x247718;};'use strict';var multer=require(_0x583d('0x0'));var util=require(_0x583d('0x1'));var path=require(_0x583d('0x2'));var timeout=require(_0x583d('0x3'));var express=require('express');var router=express[_0x583d('0x4')]();var fs_extra=require(_0x583d('0x5'));var auth=require(_0x583d('0x6'));var interaction=require(_0x583d('0x7'));var config=require('../../config/environment');var controller=require(_0x583d('0x8'));router[_0x583d('0x9')]('/',auth[_0x583d('0xa')](),controller[_0x583d('0xb')]);router[_0x583d('0x9')](_0x583d('0xc'),auth['isAuthenticated'](),controller[_0x583d('0xd')]);router[_0x583d('0x9')]('/:id/all_conditions',auth[_0x583d('0xa')](),controller[_0x583d('0xe')]);router[_0x583d('0x9')](_0x583d('0xf'),auth[_0x583d('0xa')](),controller[_0x583d('0x10')]);router[_0x583d('0x9')](_0x583d('0x11'),auth[_0x583d('0xa')](),controller['getActions']);router[_0x583d('0x12')]('/',auth[_0x583d('0xa')](),controller[_0x583d('0x13')]);router[_0x583d('0x12')](_0x583d('0x14'),auth['isAuthenticated'](),controller[_0x583d('0x15')]);router[_0x583d('0x12')]('/:id/any_conditions',auth[_0x583d('0xa')](),controller[_0x583d('0x16')]);router[_0x583d('0x12')](_0x583d('0x11'),auth[_0x583d('0xa')](),controller[_0x583d('0x17')]);router[_0x583d('0x18')](_0x583d('0xc'),auth[_0x583d('0xa')](),controller[_0x583d('0x19')]);router[_0x583d('0x1a')](_0x583d('0xc'),auth['isAuthenticated'](),controller[_0x583d('0x1b')]);module[_0x583d('0x1c')]=router;
\ No newline at end of file
+var _0xf69c=['/:id','show','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','/:id/all_conditions','addAllCondition','put','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./trigger.controller','get','isAuthenticated','index'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf69c,0x1e2));var _0xcf69=function(_0xf40d11,_0xb4dd63){_0xf40d11=_0xf40d11-0x0;var _0x2c21c8=_0xf69c[_0xf40d11];return _0x2c21c8;};'use strict';var multer=require(_0xcf69('0x0'));var util=require(_0xcf69('0x1'));var path=require(_0xcf69('0x2'));var timeout=require(_0xcf69('0x3'));var express=require('express');var router=express[_0xcf69('0x4')]();var fs_extra=require(_0xcf69('0x5'));var auth=require(_0xcf69('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xcf69('0x7'));var controller=require(_0xcf69('0x8'));router[_0xcf69('0x9')]('/',auth[_0xcf69('0xa')](),controller[_0xcf69('0xb')]);router[_0xcf69('0x9')](_0xcf69('0xc'),auth['isAuthenticated'](),controller[_0xcf69('0xd')]);router[_0xcf69('0x9')]('/:id/all_conditions',auth[_0xcf69('0xa')](),controller[_0xcf69('0xe')]);router[_0xcf69('0x9')](_0xcf69('0xf'),auth['isAuthenticated'](),controller[_0xcf69('0x10')]);router[_0xcf69('0x9')](_0xcf69('0x11'),auth['isAuthenticated'](),controller[_0xcf69('0x12')]);router[_0xcf69('0x13')]('/',auth['isAuthenticated'](),controller[_0xcf69('0x14')]);router[_0xcf69('0x13')](_0xcf69('0x15'),auth[_0xcf69('0xa')](),controller[_0xcf69('0x16')]);router[_0xcf69('0x13')](_0xcf69('0xf'),auth[_0xcf69('0xa')](),controller['addAnyCondition']);router[_0xcf69('0x13')]('/:id/actions',auth[_0xcf69('0xa')](),controller['addAction']);router[_0xcf69('0x17')](_0xcf69('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xcf69('0x18')]('/:id',auth[_0xcf69('0xa')](),controller['destroy']);module[_0xcf69('0x19')]=router;
\ No newline at end of file
index 4b9b85c..752fe8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8548=['exports','STRING','sequelize'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x8548,0x155));var _0x8854=function(_0x149434,_0x15176e){_0x149434=_0x149434-0x0;var _0x14e737=_0x8548[_0x149434];return _0x14e737;};'use strict';var Sequelize=require(_0x8854('0x0'));module[_0x8854('0x1')]={'name':{'type':Sequelize[_0x8854('0x2')]},'channel':{'type':Sequelize[_0x8854('0x2')]},'description':{'type':Sequelize[_0x8854('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xa286=['STRING','sequelize'];(function(_0x252aa4,_0x545277){var _0x1611ba=function(_0x35e58d){while(--_0x35e58d){_0x252aa4['push'](_0x252aa4['shift']());}};_0x1611ba(++_0x545277);}(_0xa286,0x161));var _0x6a28=function(_0x507ac5,_0x33aaee){_0x507ac5=_0x507ac5-0x0;var _0x12c1bc=_0xa286[_0x507ac5];return _0x12c1bc;};'use strict';var Sequelize=require(_0x6a28('0x0'));module['exports']={'name':{'type':Sequelize[_0x6a28('0x1')]},'channel':{'type':Sequelize[_0x6a28('0x1')]},'description':{'type':Sequelize[_0x6a28('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 1a53c3c..036a283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3075=['TriggerId','Action','getActions','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','Triggers','UserProfileResource','end','stack','name','index','map','Trigger','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','merge','VIRTUAL','filter','options','where','include','rows','catch','show','params','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','TriggerAnyId','getAllConditions','pick','hasOwnProperty','getAnyConditions','findOne','addAction'];(function(_0x495e9f,_0x1b1d80){var _0xb249d2=function(_0x3db4e4){while(--_0x3db4e4){_0x495e9f['push'](_0x495e9f['shift']());}};_0xb249d2(++_0x1b1d80);}(_0x3075,0x1de));var _0x5307=function(_0x1ce370,_0x226fce){_0x1ce370=_0x1ce370-0x0;var _0x2b4144=_0x3075[_0x1ce370];return _0x2b4144;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5307('0x0'));var zipdir=require(_0x5307('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5307('0x2'));var moment=require(_0x5307('0x3'));var BPromise=require(_0x5307('0x4'));var Mustache=require(_0x5307('0x5'));var util=require('util');var path=require(_0x5307('0x6'));var sox=require(_0x5307('0x7'));var csv=require(_0x5307('0x8'));var ejs=require(_0x5307('0x9'));var fs=require('fs');var fs_extra=require(_0x5307('0xa'));var _=require(_0x5307('0xb'));var squel=require(_0x5307('0xc'));var crypto=require(_0x5307('0xd'));var jsforce=require(_0x5307('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5307('0x8'));var querystring=require('querystring');var Papa=require(_0x5307('0xf'));var Redis=require('ioredis');var authService=require(_0x5307('0x10'));var qs=require(_0x5307('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5307('0x12'))(_0x5307('0x13'));var utils=require(_0x5307('0x14'));var config=require(_0x5307('0x15'));var licenseUtil=require(_0x5307('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x334a07,_0x6b8e85){_0x6b8e85=_0x6b8e85||0xcc;return function(_0x12eac3){if(_0x12eac3){return _0x334a07[_0x5307('0x17')](_0x6b8e85);}return _0x334a07[_0x5307('0x18')](_0x6b8e85)['end']();};}function respondWithResult(_0x272552,_0x56bbfc){_0x56bbfc=_0x56bbfc||0xc8;return function(_0x227c35){if(_0x227c35){return _0x272552[_0x5307('0x18')](_0x56bbfc)[_0x5307('0x19')](_0x227c35);}};}function respondWithFilteredResult(_0x464555,_0x525234){return function(_0xb0795a){if(_0xb0795a){var _0x4401f7=typeof _0x525234[_0x5307('0x1a')]===_0x5307('0x1b')&&typeof _0x525234['limit']===_0x5307('0x1b');var _0xd5dbeb=_0xb0795a['count'];var _0x371716=_0x4401f7?0x0:_0x525234[_0x5307('0x1a')];var _0x25c51a=_0x4401f7?_0xb0795a[_0x5307('0x1c')]:_0x525234[_0x5307('0x1a')]+_0x525234['limit'];var _0x281189;if(_0x25c51a>=_0xd5dbeb){_0x25c51a=_0xd5dbeb;_0x281189=0xc8;}else{_0x281189=0xce;}_0x464555['status'](_0x281189);return _0x464555[_0x5307('0x1d')](_0x5307('0x1e'),_0x371716+'-'+_0x25c51a+'/'+_0xd5dbeb)['json'](_0xb0795a);}return null;};}function patchUpdates(_0x15e003){return function(_0x1282b8){try{jsonpatch[_0x5307('0x1f')](_0x1282b8,_0x15e003,!![]);}catch(_0x3d05e8){return BPromise[_0x5307('0x20')](_0x3d05e8);}return _0x1282b8['save']();};}function saveUpdates(_0x104834,_0x5d7b52){return function(_0x548fe0){if(_0x548fe0){return _0x548fe0[_0x5307('0x21')](_0x104834)[_0x5307('0x22')](function(_0x50c6f0){return _0x50c6f0;});}return null;};}function removeEntity(_0x4d31d9,_0x594ba1){return function(_0x3d2e60){if(_0x3d2e60){return _0x3d2e60[_0x5307('0x23')]()[_0x5307('0x22')](function(){var _0x5908ca=_0x3d2e60[_0x5307('0x24')]({'plain':!![]});var _0x3f1b6a=_0x5307('0x25');return db[_0x5307('0x26')][_0x5307('0x23')]({'where':{'type':_0x3f1b6a,'resourceId':_0x5908ca['id']}})[_0x5307('0x22')](function(){return _0x3d2e60;});})[_0x5307('0x22')](function(){_0x4d31d9[_0x5307('0x18')](0xcc)[_0x5307('0x27')]();});}};}function handleEntityNotFound(_0x9c5cbc,_0x5e0cc1){return function(_0x250859){if(!_0x250859){_0x9c5cbc[_0x5307('0x17')](0x194);}return _0x250859;};}function handleError(_0x181065,_0xb3edb1){_0xb3edb1=_0xb3edb1||0x1f4;return function(_0x1bd2bd){logger['error'](_0x1bd2bd[_0x5307('0x28')]);if(_0x1bd2bd[_0x5307('0x29')]){delete _0x1bd2bd[_0x5307('0x29')];}_0x181065[_0x5307('0x18')](_0xb3edb1)['send'](_0x1bd2bd);};}exports[_0x5307('0x2a')]=function(_0x18b6dc,_0x3d540d){var _0x22b5ae={},_0x19d834={},_0x5d4baa={'count':0x0,'rows':[]};var _0x1daf80=_[_0x5307('0x2b')](db[_0x5307('0x2c')][_0x5307('0x2d')],function(_0x5a8314){return{'name':_0x5a8314[_0x5307('0x2e')],'type':_0x5a8314[_0x5307('0x2f')][_0x5307('0x30')]};});_0x19d834[_0x5307('0x31')]=_[_0x5307('0x2b')](_0x1daf80,_0x5307('0x29'));_0x19d834[_0x5307('0x32')]=_[_0x5307('0x33')](_0x18b6dc[_0x5307('0x32')]);_0x19d834[_0x5307('0x34')]=_['intersection'](_0x19d834[_0x5307('0x31')],_0x19d834['query']);_0x22b5ae['attributes']=_[_0x5307('0x35')](_0x19d834[_0x5307('0x31')],qs[_0x5307('0x36')](_0x18b6dc['query']['fields']));_0x22b5ae['attributes']=_0x22b5ae[_0x5307('0x37')][_0x5307('0x38')]?_0x22b5ae[_0x5307('0x37')]:_0x19d834[_0x5307('0x31')];if(!_0x18b6dc[_0x5307('0x32')]['hasOwnProperty'](_0x5307('0x39'))){_0x22b5ae[_0x5307('0x3a')]=qs[_0x5307('0x3a')](_0x18b6dc['query'][_0x5307('0x3a')]);_0x22b5ae[_0x5307('0x1a')]=qs[_0x5307('0x1a')](_0x18b6dc[_0x5307('0x32')][_0x5307('0x1a')]);}_0x22b5ae[_0x5307('0x3b')]=qs['sort'](_0x18b6dc[_0x5307('0x32')][_0x5307('0x3c')]);_0x22b5ae['where']=qs[_0x5307('0x34')](_['pick'](_0x18b6dc[_0x5307('0x32')],_0x19d834[_0x5307('0x34')]),_0x1daf80);if(_0x18b6dc[_0x5307('0x32')]['filter']){_0x22b5ae['where']=_[_0x5307('0x3d')](_0x22b5ae['where'],{'$or':_[_0x5307('0x2b')](_0x1daf80,function(_0x5395fc){if(_0x5395fc['type']!==_0x5307('0x3e')){var _0x16d010={};_0x16d010[_0x5395fc[_0x5307('0x29')]]={'$like':'%'+_0x18b6dc[_0x5307('0x32')][_0x5307('0x3f')]+'%'};return _0x16d010;}})});}_0x22b5ae=_[_0x5307('0x3d')]({},_0x22b5ae,_0x18b6dc[_0x5307('0x40')]);var _0x46ac81={'where':_0x22b5ae[_0x5307('0x41')]};return db[_0x5307('0x2c')]['count'](_0x46ac81)[_0x5307('0x22')](function(_0x5bfe3a){_0x5d4baa[_0x5307('0x1c')]=_0x5bfe3a;if(_0x18b6dc[_0x5307('0x32')]['includeAll']){_0x22b5ae[_0x5307('0x42')]=[{'all':!![]}];}return db[_0x5307('0x2c')]['findAll'](_0x22b5ae);})[_0x5307('0x22')](function(_0xf0b1d){_0x5d4baa[_0x5307('0x43')]=_0xf0b1d;return _0x5d4baa;})[_0x5307('0x22')](respondWithFilteredResult(_0x3d540d,_0x22b5ae))[_0x5307('0x44')](handleError(_0x3d540d,null));};exports[_0x5307('0x45')]=function(_0x1f7353,_0x304288){var _0x41f105={'raw':![],'where':{'id':_0x1f7353[_0x5307('0x46')]['id']}},_0x33643b={};_0x33643b[_0x5307('0x31')]=_[_0x5307('0x33')](db[_0x5307('0x2c')][_0x5307('0x2d')]);_0x33643b[_0x5307('0x32')]=_[_0x5307('0x33')](_0x1f7353['query']);_0x33643b[_0x5307('0x34')]=_[_0x5307('0x35')](_0x33643b[_0x5307('0x31')],_0x33643b[_0x5307('0x32')]);_0x41f105[_0x5307('0x37')]=_[_0x5307('0x35')](_0x33643b[_0x5307('0x31')],qs['fields'](_0x1f7353['query'][_0x5307('0x36')]));_0x41f105['attributes']=_0x41f105[_0x5307('0x37')][_0x5307('0x38')]?_0x41f105[_0x5307('0x37')]:_0x33643b[_0x5307('0x31')];if(_0x1f7353[_0x5307('0x32')][_0x5307('0x47')]){_0x41f105[_0x5307('0x42')]=[{'all':!![]}];}_0x41f105=_[_0x5307('0x3d')]({},_0x41f105,_0x1f7353['options']);return db['Trigger']['find'](_0x41f105)[_0x5307('0x22')](handleEntityNotFound(_0x304288,null))[_0x5307('0x22')](respondWithResult(_0x304288,null))[_0x5307('0x44')](handleError(_0x304288,null));};exports[_0x5307('0x48')]=function(_0x23c206,_0x2fca60){return db[_0x5307('0x2c')][_0x5307('0x48')](_0x23c206[_0x5307('0x49')],{})[_0x5307('0x22')](function(_0x510f43){var _0x54d85b=_0x23c206[_0x5307('0x4a')][_0x5307('0x24')]({'plain':!![]});if(!_0x54d85b)throw new Error(_0x5307('0x4b'));if(_0x54d85b['role']==='user'){var _0x1c5774=_0x510f43[_0x5307('0x24')]({'plain':!![]});var _0x245f9c=_0x5307('0x25');return db[_0x5307('0x4c')][_0x5307('0x4d')]({'where':{'name':_0x245f9c,'userProfileId':_0x54d85b[_0x5307('0x4e')]},'raw':!![]})[_0x5307('0x22')](function(_0x24ecd7){if(_0x24ecd7&&_0x24ecd7[_0x5307('0x4f')]===0x0){return db[_0x5307('0x26')][_0x5307('0x48')]({'name':_0x1c5774[_0x5307('0x29')],'resourceId':_0x1c5774['id'],'type':_0x24ecd7['name'],'sectionId':_0x24ecd7['id']},{})[_0x5307('0x22')](function(){return _0x510f43;});}else{return _0x510f43;}})['catch'](function(_0x3b72da){logger[_0x5307('0x50')](_0x5307('0x51'),_0x3b72da);throw _0x3b72da;});}return _0x510f43;})['then'](respondWithResult(_0x2fca60,0xc9))['catch'](handleError(_0x2fca60,null));};exports[_0x5307('0x21')]=function(_0x2cb4f9,_0x2845d6){if(_0x2cb4f9[_0x5307('0x49')]['id']){delete _0x2cb4f9['body']['id'];}return db['Trigger'][_0x5307('0x4d')]({'where':{'id':_0x2cb4f9[_0x5307('0x46')]['id']}})['then'](handleEntityNotFound(_0x2845d6,null))['then'](saveUpdates(_0x2cb4f9[_0x5307('0x49')],null))[_0x5307('0x22')](respondWithResult(_0x2845d6,null))[_0x5307('0x44')](handleError(_0x2845d6,null));};exports[_0x5307('0x23')]=function(_0x2d9a31,_0x228f4a){return db[_0x5307('0x2c')][_0x5307('0x4d')]({'where':{'id':_0x2d9a31[_0x5307('0x46')]['id']}})[_0x5307('0x22')](handleEntityNotFound(_0x228f4a,null))[_0x5307('0x22')](removeEntity(_0x228f4a,null))[_0x5307('0x44')](handleError(_0x228f4a,null));};exports[_0x5307('0x52')]=function(_0x4f8718,_0x497d43,_0x1c770e){if(_0x4f8718[_0x5307('0x49')]['id']){delete _0x4f8718[_0x5307('0x49')]['id'];}return db[_0x5307('0x2c')][_0x5307('0x4d')]({'where':{'id':_0x4f8718[_0x5307('0x46')]['id']}})[_0x5307('0x22')](handleEntityNotFound(_0x497d43,null))[_0x5307('0x22')](function(_0x1f0b78){if(_0x1f0b78){_0x4f8718[_0x5307('0x49')][_0x5307('0x53')]=_0x1f0b78['id'];return db[_0x5307('0x54')][_0x5307('0x48')](_0x4f8718[_0x5307('0x49')]);}})[_0x5307('0x22')](respondWithResult(_0x497d43,null))[_0x5307('0x44')](handleError(_0x497d43,null));};exports['addAnyCondition']=function(_0x72a125,_0x807700,_0x53e4b6){if(_0x72a125[_0x5307('0x49')]['id']){delete _0x72a125[_0x5307('0x49')]['id'];}return db['Trigger'][_0x5307('0x4d')]({'where':{'id':_0x72a125[_0x5307('0x46')]['id']}})[_0x5307('0x22')](handleEntityNotFound(_0x807700,null))[_0x5307('0x22')](function(_0x49e854){if(_0x49e854){_0x72a125[_0x5307('0x49')][_0x5307('0x55')]=_0x49e854['id'];return db['Condition']['create'](_0x72a125[_0x5307('0x49')]);}})[_0x5307('0x22')](respondWithResult(_0x807700,null))[_0x5307('0x44')](handleError(_0x807700,null));};exports[_0x5307('0x56')]=function(_0x31ecfe,_0x2709bf,_0x13dd10){var _0x5f0c17={};var _0x3594b2={};var _0x30f0ef;var _0x2aab8e;return db[_0x5307('0x2c')]['findOne']({'where':{'id':_0x31ecfe[_0x5307('0x46')]['id']}})[_0x5307('0x22')](handleEntityNotFound(_0x2709bf,null))[_0x5307('0x22')](function(_0xe837ee){if(_0xe837ee){_0x30f0ef=_0xe837ee;_0x3594b2['model']=_[_0x5307('0x33')](db[_0x5307('0x54')]['rawAttributes']);_0x3594b2[_0x5307('0x32')]=_[_0x5307('0x33')](_0x31ecfe[_0x5307('0x32')]);_0x3594b2[_0x5307('0x34')]=_[_0x5307('0x35')](_0x3594b2[_0x5307('0x31')],_0x3594b2[_0x5307('0x32')]);_0x5f0c17[_0x5307('0x37')]=_['intersection'](_0x3594b2[_0x5307('0x31')],qs[_0x5307('0x36')](_0x31ecfe[_0x5307('0x32')][_0x5307('0x36')]));_0x5f0c17[_0x5307('0x37')]=_0x5f0c17['attributes'][_0x5307('0x38')]?_0x5f0c17[_0x5307('0x37')]:_0x3594b2['model'];_0x5f0c17['order']=qs[_0x5307('0x3c')](_0x31ecfe[_0x5307('0x32')][_0x5307('0x3c')]);_0x5f0c17[_0x5307('0x41')]=qs[_0x5307('0x34')](_[_0x5307('0x57')](_0x31ecfe[_0x5307('0x32')],_0x3594b2['filters']));if(_0x31ecfe[_0x5307('0x32')][_0x5307('0x3f')]){_0x5f0c17['where']=_[_0x5307('0x3d')](_0x5f0c17[_0x5307('0x41')],{'$or':_[_0x5307('0x2b')](_0x5f0c17[_0x5307('0x37')],function(_0x18cdab){var _0x563540={};_0x563540[_0x18cdab]={'$like':'%'+_0x31ecfe[_0x5307('0x32')]['filter']+'%'};return _0x563540;})});}_0x5f0c17=_[_0x5307('0x3d')]({},_0x5f0c17,_0x31ecfe[_0x5307('0x40')]);return _0x30f0ef[_0x5307('0x56')](_0x5f0c17);}})[_0x5307('0x22')](function(_0x53be10){if(_0x53be10){_0x2aab8e=_0x53be10['length'];if(!_0x31ecfe[_0x5307('0x32')][_0x5307('0x58')](_0x5307('0x39'))){_0x5f0c17[_0x5307('0x3a')]=qs[_0x5307('0x3a')](_0x31ecfe[_0x5307('0x32')][_0x5307('0x3a')]);_0x5f0c17[_0x5307('0x1a')]=qs[_0x5307('0x1a')](_0x31ecfe[_0x5307('0x32')][_0x5307('0x1a')]);}return _0x30f0ef[_0x5307('0x56')](_0x5f0c17);}})[_0x5307('0x22')](function(_0x47dc13){if(_0x47dc13){return _0x47dc13?{'count':_0x2aab8e,'rows':_0x47dc13}:null;}})['then'](respondWithResult(_0x2709bf,null))[_0x5307('0x44')](handleError(_0x2709bf,null));};exports[_0x5307('0x59')]=function(_0x11c872,_0x572fa5,_0x26ef7d){var _0x468420={};var _0x12b4ba={};var _0x1e4b11;var _0x13fdd1;return db[_0x5307('0x2c')][_0x5307('0x5a')]({'where':{'id':_0x11c872['params']['id']}})[_0x5307('0x22')](handleEntityNotFound(_0x572fa5,null))['then'](function(_0x25a09e){if(_0x25a09e){_0x1e4b11=_0x25a09e;_0x12b4ba[_0x5307('0x31')]=_[_0x5307('0x33')](db[_0x5307('0x54')][_0x5307('0x2d')]);_0x12b4ba[_0x5307('0x32')]=_['keys'](_0x11c872[_0x5307('0x32')]);_0x12b4ba[_0x5307('0x34')]=_['intersection'](_0x12b4ba[_0x5307('0x31')],_0x12b4ba[_0x5307('0x32')]);_0x468420[_0x5307('0x37')]=_['intersection'](_0x12b4ba[_0x5307('0x31')],qs['fields'](_0x11c872[_0x5307('0x32')]['fields']));_0x468420[_0x5307('0x37')]=_0x468420[_0x5307('0x37')][_0x5307('0x38')]?_0x468420[_0x5307('0x37')]:_0x12b4ba[_0x5307('0x31')];_0x468420[_0x5307('0x3b')]=qs[_0x5307('0x3c')](_0x11c872['query'][_0x5307('0x3c')]);_0x468420[_0x5307('0x41')]=qs[_0x5307('0x34')](_['pick'](_0x11c872[_0x5307('0x32')],_0x12b4ba['filters']));if(_0x11c872[_0x5307('0x32')][_0x5307('0x3f')]){_0x468420[_0x5307('0x41')]=_[_0x5307('0x3d')](_0x468420[_0x5307('0x41')],{'$or':_[_0x5307('0x2b')](_0x468420[_0x5307('0x37')],function(_0x44f8e0){var _0x4d320e={};_0x4d320e[_0x44f8e0]={'$like':'%'+_0x11c872['query']['filter']+'%'};return _0x4d320e;})});}_0x468420=_[_0x5307('0x3d')]({},_0x468420,_0x11c872[_0x5307('0x40')]);return _0x1e4b11[_0x5307('0x59')](_0x468420);}})[_0x5307('0x22')](function(_0x1236a6){if(_0x1236a6){_0x13fdd1=_0x1236a6[_0x5307('0x38')];if(!_0x11c872[_0x5307('0x32')][_0x5307('0x58')](_0x5307('0x39'))){_0x468420[_0x5307('0x3a')]=qs['limit'](_0x11c872[_0x5307('0x32')][_0x5307('0x3a')]);_0x468420[_0x5307('0x1a')]=qs['offset'](_0x11c872[_0x5307('0x32')][_0x5307('0x1a')]);}return _0x1e4b11['getAnyConditions'](_0x468420);}})['then'](function(_0x2ac122){if(_0x2ac122){return _0x2ac122?{'count':_0x13fdd1,'rows':_0x2ac122}:null;}})[_0x5307('0x22')](respondWithResult(_0x572fa5,null))[_0x5307('0x44')](handleError(_0x572fa5,null));};exports[_0x5307('0x5b')]=function(_0x44a31b,_0x1ac3d3,_0x32bd00){if(_0x44a31b[_0x5307('0x49')]['id']){delete _0x44a31b[_0x5307('0x49')]['id'];}return db[_0x5307('0x2c')][_0x5307('0x4d')]({'where':{'id':_0x44a31b[_0x5307('0x46')]['id']}})['then'](handleEntityNotFound(_0x1ac3d3,null))[_0x5307('0x22')](function(_0x2bc716){if(_0x2bc716){_0x44a31b[_0x5307('0x49')][_0x5307('0x5c')]=_0x2bc716['id'];return db[_0x5307('0x5d')][_0x5307('0x48')](_0x44a31b[_0x5307('0x49')]);}})[_0x5307('0x22')](respondWithResult(_0x1ac3d3,null))['catch'](handleError(_0x1ac3d3,null));};exports[_0x5307('0x5e')]=function(_0x5d305c,_0x597af2,_0x4d32e8){var _0x433929={};var _0x1523d9={};var _0x3592b2;var _0x52112e;return db[_0x5307('0x2c')][_0x5307('0x5a')]({'where':{'id':_0x5d305c[_0x5307('0x46')]['id']}})[_0x5307('0x22')](handleEntityNotFound(_0x597af2,null))[_0x5307('0x22')](function(_0x154f36){if(_0x154f36){_0x3592b2=_0x154f36;_0x1523d9[_0x5307('0x31')]=_[_0x5307('0x33')](db[_0x5307('0x5d')][_0x5307('0x2d')]);_0x1523d9['query']=_[_0x5307('0x33')](_0x5d305c[_0x5307('0x32')]);_0x1523d9[_0x5307('0x34')]=_[_0x5307('0x35')](_0x1523d9[_0x5307('0x31')],_0x1523d9[_0x5307('0x32')]);_0x433929[_0x5307('0x37')]=_[_0x5307('0x35')](_0x1523d9[_0x5307('0x31')],qs[_0x5307('0x36')](_0x5d305c[_0x5307('0x32')][_0x5307('0x36')]));_0x433929['attributes']=_0x433929[_0x5307('0x37')][_0x5307('0x38')]?_0x433929['attributes']:_0x1523d9[_0x5307('0x31')];_0x433929['order']=qs['sort'](_0x5d305c['query'][_0x5307('0x3c')]);_0x433929[_0x5307('0x41')]=qs[_0x5307('0x34')](_[_0x5307('0x57')](_0x5d305c['query'],_0x1523d9[_0x5307('0x34')]));if(_0x5d305c['query'][_0x5307('0x3f')]){_0x433929[_0x5307('0x41')]=_[_0x5307('0x3d')](_0x433929[_0x5307('0x41')],{'$or':_[_0x5307('0x2b')](_0x433929['attributes'],function(_0x2d396){var _0x16926e={};_0x16926e[_0x2d396]={'$like':'%'+_0x5d305c[_0x5307('0x32')][_0x5307('0x3f')]+'%'};return _0x16926e;})});}_0x433929=_[_0x5307('0x3d')]({},_0x433929,_0x5d305c[_0x5307('0x40')]);return _0x3592b2[_0x5307('0x5e')](_0x433929);}})['then'](function(_0xd55433){if(_0xd55433){_0x52112e=_0xd55433[_0x5307('0x38')];if(!_0x5d305c[_0x5307('0x32')][_0x5307('0x58')](_0x5307('0x39'))){_0x433929[_0x5307('0x3a')]=qs[_0x5307('0x3a')](_0x5d305c[_0x5307('0x32')]['limit']);_0x433929['offset']=qs[_0x5307('0x1a')](_0x5d305c['query'][_0x5307('0x1a')]);}return _0x3592b2[_0x5307('0x5e')](_0x433929);}})['then'](function(_0x11d18b){if(_0x11d18b){return _0x11d18b?{'count':_0x52112e,'rows':_0x11d18b}:null;}})[_0x5307('0x22')](respondWithResult(_0x597af2,null))[_0x5307('0x44')](handleError(_0x597af2,null));};
\ No newline at end of file
+var _0x02e6=['util','path','ejs','fs-extra','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','save','then','get','Triggers','error','stack','index','map','Trigger','rawAttributes','fieldName','type','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','update','find','params','destroy','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','Condition','getAllConditions','getAnyConditions','findOne','TriggerId','Action','getActions','eml-format','fast-json-patch','request-promise','moment','mustache'];(function(_0x438c82,_0xd70276){var _0x17073a=function(_0x3e21d2){while(--_0x3e21d2){_0x438c82['push'](_0x438c82['shift']());}};_0x17073a(++_0xd70276);}(_0x02e6,0xaf));var _0x602e=function(_0x28c2af,_0x27b193){_0x28c2af=_0x28c2af-0x0;var _0x17b0d3=_0x02e6[_0x28c2af];return _0x17b0d3;};'use strict';var emlformat=require(_0x602e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x602e('0x1'));var rp=require(_0x602e('0x2'));var moment=require(_0x602e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x602e('0x4'));var util=require(_0x602e('0x5'));var path=require(_0x602e('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x602e('0x7'));var fs=require('fs');var fs_extra=require(_0x602e('0x8'));var _=require('lodash');var squel=require(_0x602e('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x602e('0xa'));var toCsv=require(_0x602e('0xb'));var querystring=require(_0x602e('0xc'));var Papa=require(_0x602e('0xd'));var Redis=require(_0x602e('0xe'));var authService=require(_0x602e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x602e('0x10'));var hardwareService=require(_0x602e('0x11'));var logger=require(_0x602e('0x12'))(_0x602e('0x13'));var utils=require('../../config/utils');var config=require(_0x602e('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b935c,_0x4dd47b){_0x4dd47b=_0x4dd47b||0xcc;return function(_0x23fbb6){if(_0x23fbb6){return _0x5b935c[_0x602e('0x15')](_0x4dd47b);}return _0x5b935c[_0x602e('0x16')](_0x4dd47b)[_0x602e('0x17')]();};}function respondWithResult(_0x5a6c20,_0x52fe71){_0x52fe71=_0x52fe71||0xc8;return function(_0x5e743c){if(_0x5e743c){return _0x5a6c20[_0x602e('0x16')](_0x52fe71)['json'](_0x5e743c);}};}function respondWithFilteredResult(_0x3a468d,_0x247ca1){return function(_0x45e145){if(_0x45e145){var _0x13a29b=typeof _0x247ca1[_0x602e('0x18')]===_0x602e('0x19')&&typeof _0x247ca1[_0x602e('0x1a')]===_0x602e('0x19');var _0x13f0f7=_0x45e145[_0x602e('0x1b')];var _0x2a3189=_0x13a29b?0x0:_0x247ca1[_0x602e('0x18')];var _0x567dea=_0x13a29b?_0x45e145[_0x602e('0x1b')]:_0x247ca1[_0x602e('0x18')]+_0x247ca1[_0x602e('0x1a')];var _0xb919e4;if(_0x567dea>=_0x13f0f7){_0x567dea=_0x13f0f7;_0xb919e4=0xc8;}else{_0xb919e4=0xce;}_0x3a468d[_0x602e('0x16')](_0xb919e4);return _0x3a468d['set'](_0x602e('0x1c'),_0x2a3189+'-'+_0x567dea+'/'+_0x13f0f7)[_0x602e('0x1d')](_0x45e145);}return null;};}function patchUpdates(_0x42c88e){return function(_0x415c5b){try{jsonpatch[_0x602e('0x1e')](_0x415c5b,_0x42c88e,!![]);}catch(_0x48fb24){return BPromise['reject'](_0x48fb24);}return _0x415c5b[_0x602e('0x1f')]();};}function saveUpdates(_0x320790,_0x4c39f0){return function(_0x4266fb){if(_0x4266fb){return _0x4266fb['update'](_0x320790)[_0x602e('0x20')](function(_0x431da4){return _0x431da4;});}return null;};}function removeEntity(_0x2c5bec,_0x16ee64){return function(_0x122387){if(_0x122387){return _0x122387['destroy']()[_0x602e('0x20')](function(){var _0x363c50=_0x122387[_0x602e('0x21')]({'plain':!![]});var _0x47623e=_0x602e('0x22');return db['UserProfileResource']['destroy']({'where':{'type':_0x47623e,'resourceId':_0x363c50['id']}})[_0x602e('0x20')](function(){return _0x122387;});})['then'](function(){_0x2c5bec['status'](0xcc)[_0x602e('0x17')]();});}};}function handleEntityNotFound(_0x1b9e40,_0x40b63f){return function(_0xd09216){if(!_0xd09216){_0x1b9e40[_0x602e('0x15')](0x194);}return _0xd09216;};}function handleError(_0x53d9f7,_0x308e76){_0x308e76=_0x308e76||0x1f4;return function(_0x54612b){logger[_0x602e('0x23')](_0x54612b[_0x602e('0x24')]);if(_0x54612b['name']){delete _0x54612b['name'];}_0x53d9f7[_0x602e('0x16')](_0x308e76)['send'](_0x54612b);};}exports[_0x602e('0x25')]=function(_0x643264,_0x40d974){var _0x4578c6={},_0x2b82a6={},_0x480d80={'count':0x0,'rows':[]};var _0x13df4d=_[_0x602e('0x26')](db[_0x602e('0x27')][_0x602e('0x28')],function(_0x52a729){return{'name':_0x52a729[_0x602e('0x29')],'type':_0x52a729[_0x602e('0x2a')]['key']};});_0x2b82a6[_0x602e('0x2b')]=_['map'](_0x13df4d,_0x602e('0x2c'));_0x2b82a6[_0x602e('0x2d')]=_[_0x602e('0x2e')](_0x643264[_0x602e('0x2d')]);_0x2b82a6[_0x602e('0x2f')]=_[_0x602e('0x30')](_0x2b82a6['model'],_0x2b82a6[_0x602e('0x2d')]);_0x4578c6[_0x602e('0x31')]=_[_0x602e('0x30')](_0x2b82a6['model'],qs[_0x602e('0x32')](_0x643264[_0x602e('0x2d')][_0x602e('0x32')]));_0x4578c6['attributes']=_0x4578c6[_0x602e('0x31')][_0x602e('0x33')]?_0x4578c6[_0x602e('0x31')]:_0x2b82a6[_0x602e('0x2b')];if(!_0x643264[_0x602e('0x2d')][_0x602e('0x34')](_0x602e('0x35'))){_0x4578c6[_0x602e('0x1a')]=qs['limit'](_0x643264['query'][_0x602e('0x1a')]);_0x4578c6[_0x602e('0x18')]=qs[_0x602e('0x18')](_0x643264['query'][_0x602e('0x18')]);}_0x4578c6[_0x602e('0x36')]=qs[_0x602e('0x37')](_0x643264[_0x602e('0x2d')]['sort']);_0x4578c6[_0x602e('0x38')]=qs[_0x602e('0x2f')](_[_0x602e('0x39')](_0x643264[_0x602e('0x2d')],_0x2b82a6[_0x602e('0x2f')]),_0x13df4d);if(_0x643264['query'][_0x602e('0x3a')]){_0x4578c6[_0x602e('0x38')]=_[_0x602e('0x3b')](_0x4578c6[_0x602e('0x38')],{'$or':_['map'](_0x13df4d,function(_0x9659a0){if(_0x9659a0[_0x602e('0x2a')]!=='VIRTUAL'){var _0x3b34b1={};_0x3b34b1[_0x9659a0[_0x602e('0x2c')]]={'$like':'%'+_0x643264[_0x602e('0x2d')][_0x602e('0x3a')]+'%'};return _0x3b34b1;}})});}_0x4578c6=_[_0x602e('0x3b')]({},_0x4578c6,_0x643264[_0x602e('0x3c')]);var _0x10ab67={'where':_0x4578c6[_0x602e('0x38')]};return db[_0x602e('0x27')][_0x602e('0x1b')](_0x10ab67)[_0x602e('0x20')](function(_0x4e516f){_0x480d80[_0x602e('0x1b')]=_0x4e516f;if(_0x643264['query'][_0x602e('0x3d')]){_0x4578c6[_0x602e('0x3e')]=[{'all':!![]}];}return db[_0x602e('0x27')][_0x602e('0x3f')](_0x4578c6);})['then'](function(_0x29e827){_0x480d80[_0x602e('0x40')]=_0x29e827;return _0x480d80;})[_0x602e('0x20')](respondWithFilteredResult(_0x40d974,_0x4578c6))[_0x602e('0x41')](handleError(_0x40d974,null));};exports[_0x602e('0x42')]=function(_0x4f4c65,_0x5ab41d){var _0xbb7c9e={'raw':![],'where':{'id':_0x4f4c65['params']['id']}},_0x1330b5={};_0x1330b5[_0x602e('0x2b')]=_[_0x602e('0x2e')](db[_0x602e('0x27')][_0x602e('0x28')]);_0x1330b5[_0x602e('0x2d')]=_[_0x602e('0x2e')](_0x4f4c65['query']);_0x1330b5[_0x602e('0x2f')]=_[_0x602e('0x30')](_0x1330b5[_0x602e('0x2b')],_0x1330b5['query']);_0xbb7c9e['attributes']=_[_0x602e('0x30')](_0x1330b5['model'],qs[_0x602e('0x32')](_0x4f4c65[_0x602e('0x2d')][_0x602e('0x32')]));_0xbb7c9e['attributes']=_0xbb7c9e['attributes'][_0x602e('0x33')]?_0xbb7c9e[_0x602e('0x31')]:_0x1330b5[_0x602e('0x2b')];if(_0x4f4c65[_0x602e('0x2d')][_0x602e('0x3d')]){_0xbb7c9e['include']=[{'all':!![]}];}_0xbb7c9e=_[_0x602e('0x3b')]({},_0xbb7c9e,_0x4f4c65[_0x602e('0x3c')]);return db[_0x602e('0x27')]['find'](_0xbb7c9e)[_0x602e('0x20')](handleEntityNotFound(_0x5ab41d,null))['then'](respondWithResult(_0x5ab41d,null))[_0x602e('0x41')](handleError(_0x5ab41d,null));};exports[_0x602e('0x43')]=function(_0x3806d7,_0x1a4e5f){return db[_0x602e('0x27')][_0x602e('0x43')](_0x3806d7[_0x602e('0x44')],{})['then'](function(_0x35979f){var _0x33a3d5=_0x3806d7[_0x602e('0x45')][_0x602e('0x21')]({'plain':!![]});if(!_0x33a3d5)throw new Error(_0x602e('0x46'));if(_0x33a3d5[_0x602e('0x47')]===_0x602e('0x45')){var _0x571b30=_0x35979f['get']({'plain':!![]});var _0x141562=_0x602e('0x22');return db[_0x602e('0x48')]['find']({'where':{'name':_0x141562,'userProfileId':_0x33a3d5['userProfileId']},'raw':!![]})[_0x602e('0x20')](function(_0x4d3404){if(_0x4d3404&&_0x4d3404[_0x602e('0x49')]===0x0){return db[_0x602e('0x4a')][_0x602e('0x43')]({'name':_0x571b30[_0x602e('0x2c')],'resourceId':_0x571b30['id'],'type':_0x4d3404[_0x602e('0x2c')],'sectionId':_0x4d3404['id']},{})[_0x602e('0x20')](function(){return _0x35979f;});}else{return _0x35979f;}})[_0x602e('0x41')](function(_0x330384){logger[_0x602e('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x330384);throw _0x330384;});}return _0x35979f;})['then'](respondWithResult(_0x1a4e5f,0xc9))[_0x602e('0x41')](handleError(_0x1a4e5f,null));};exports[_0x602e('0x4b')]=function(_0x2e8f15,_0x3be5c4){if(_0x2e8f15[_0x602e('0x44')]['id']){delete _0x2e8f15[_0x602e('0x44')]['id'];}return db[_0x602e('0x27')][_0x602e('0x4c')]({'where':{'id':_0x2e8f15[_0x602e('0x4d')]['id']}})[_0x602e('0x20')](handleEntityNotFound(_0x3be5c4,null))[_0x602e('0x20')](saveUpdates(_0x2e8f15[_0x602e('0x44')],null))[_0x602e('0x20')](respondWithResult(_0x3be5c4,null))['catch'](handleError(_0x3be5c4,null));};exports[_0x602e('0x4e')]=function(_0x5f4237,_0x1fbeb6){return db[_0x602e('0x27')][_0x602e('0x4c')]({'where':{'id':_0x5f4237['params']['id']}})[_0x602e('0x20')](handleEntityNotFound(_0x1fbeb6,null))[_0x602e('0x20')](removeEntity(_0x1fbeb6,null))[_0x602e('0x41')](handleError(_0x1fbeb6,null));};exports[_0x602e('0x4f')]=function(_0x537637,_0x6d6ffe,_0x287d92){if(_0x537637[_0x602e('0x44')]['id']){delete _0x537637['body']['id'];}return db[_0x602e('0x27')][_0x602e('0x4c')]({'where':{'id':_0x537637[_0x602e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x6d6ffe,null))['then'](function(_0x253828){if(_0x253828){_0x537637['body'][_0x602e('0x50')]=_0x253828['id'];return db['Condition'][_0x602e('0x43')](_0x537637[_0x602e('0x44')]);}})[_0x602e('0x20')](respondWithResult(_0x6d6ffe,null))[_0x602e('0x41')](handleError(_0x6d6ffe,null));};exports[_0x602e('0x51')]=function(_0x12e02b,_0x474d01,_0x1bdfec){if(_0x12e02b['body']['id']){delete _0x12e02b[_0x602e('0x44')]['id'];}return db['Trigger'][_0x602e('0x4c')]({'where':{'id':_0x12e02b[_0x602e('0x4d')]['id']}})[_0x602e('0x20')](handleEntityNotFound(_0x474d01,null))[_0x602e('0x20')](function(_0xa59f){if(_0xa59f){_0x12e02b[_0x602e('0x44')][_0x602e('0x52')]=_0xa59f['id'];return db[_0x602e('0x53')][_0x602e('0x43')](_0x12e02b['body']);}})[_0x602e('0x20')](respondWithResult(_0x474d01,null))['catch'](handleError(_0x474d01,null));};exports[_0x602e('0x54')]=function(_0x5eca89,_0x17a6b3,_0x627d04){var _0x5b42e0={};var _0x47fc87={};var _0x1d256c;var _0x40d1c4;return db[_0x602e('0x27')]['findOne']({'where':{'id':_0x5eca89[_0x602e('0x4d')]['id']}})[_0x602e('0x20')](handleEntityNotFound(_0x17a6b3,null))['then'](function(_0x3f1117){if(_0x3f1117){_0x1d256c=_0x3f1117;_0x47fc87[_0x602e('0x2b')]=_[_0x602e('0x2e')](db[_0x602e('0x53')][_0x602e('0x28')]);_0x47fc87[_0x602e('0x2d')]=_['keys'](_0x5eca89[_0x602e('0x2d')]);_0x47fc87[_0x602e('0x2f')]=_[_0x602e('0x30')](_0x47fc87[_0x602e('0x2b')],_0x47fc87['query']);_0x5b42e0['attributes']=_['intersection'](_0x47fc87[_0x602e('0x2b')],qs[_0x602e('0x32')](_0x5eca89[_0x602e('0x2d')][_0x602e('0x32')]));_0x5b42e0['attributes']=_0x5b42e0[_0x602e('0x31')][_0x602e('0x33')]?_0x5b42e0[_0x602e('0x31')]:_0x47fc87[_0x602e('0x2b')];_0x5b42e0[_0x602e('0x36')]=qs['sort'](_0x5eca89[_0x602e('0x2d')][_0x602e('0x37')]);_0x5b42e0[_0x602e('0x38')]=qs['filters'](_[_0x602e('0x39')](_0x5eca89['query'],_0x47fc87[_0x602e('0x2f')]));if(_0x5eca89[_0x602e('0x2d')][_0x602e('0x3a')]){_0x5b42e0[_0x602e('0x38')]=_['merge'](_0x5b42e0[_0x602e('0x38')],{'$or':_['map'](_0x5b42e0[_0x602e('0x31')],function(_0x553319){var _0x1d16b4={};_0x1d16b4[_0x553319]={'$like':'%'+_0x5eca89[_0x602e('0x2d')][_0x602e('0x3a')]+'%'};return _0x1d16b4;})});}_0x5b42e0=_[_0x602e('0x3b')]({},_0x5b42e0,_0x5eca89[_0x602e('0x3c')]);return _0x1d256c['getAllConditions'](_0x5b42e0);}})[_0x602e('0x20')](function(_0x2501bd){if(_0x2501bd){_0x40d1c4=_0x2501bd[_0x602e('0x33')];if(!_0x5eca89[_0x602e('0x2d')][_0x602e('0x34')](_0x602e('0x35'))){_0x5b42e0[_0x602e('0x1a')]=qs[_0x602e('0x1a')](_0x5eca89[_0x602e('0x2d')][_0x602e('0x1a')]);_0x5b42e0[_0x602e('0x18')]=qs['offset'](_0x5eca89[_0x602e('0x2d')]['offset']);}return _0x1d256c[_0x602e('0x54')](_0x5b42e0);}})[_0x602e('0x20')](function(_0x47998c){if(_0x47998c){return _0x47998c?{'count':_0x40d1c4,'rows':_0x47998c}:null;}})[_0x602e('0x20')](respondWithResult(_0x17a6b3,null))[_0x602e('0x41')](handleError(_0x17a6b3,null));};exports[_0x602e('0x55')]=function(_0x162d50,_0x34a786,_0x35727a){var _0x588b04={};var _0x46d78f={};var _0x2a41a2;var _0xbd2d93;return db[_0x602e('0x27')][_0x602e('0x56')]({'where':{'id':_0x162d50[_0x602e('0x4d')]['id']}})[_0x602e('0x20')](handleEntityNotFound(_0x34a786,null))[_0x602e('0x20')](function(_0x3d8163){if(_0x3d8163){_0x2a41a2=_0x3d8163;_0x46d78f['model']=_[_0x602e('0x2e')](db[_0x602e('0x53')][_0x602e('0x28')]);_0x46d78f[_0x602e('0x2d')]=_['keys'](_0x162d50[_0x602e('0x2d')]);_0x46d78f['filters']=_[_0x602e('0x30')](_0x46d78f['model'],_0x46d78f[_0x602e('0x2d')]);_0x588b04[_0x602e('0x31')]=_[_0x602e('0x30')](_0x46d78f['model'],qs[_0x602e('0x32')](_0x162d50[_0x602e('0x2d')][_0x602e('0x32')]));_0x588b04['attributes']=_0x588b04[_0x602e('0x31')][_0x602e('0x33')]?_0x588b04[_0x602e('0x31')]:_0x46d78f['model'];_0x588b04[_0x602e('0x36')]=qs[_0x602e('0x37')](_0x162d50[_0x602e('0x2d')]['sort']);_0x588b04[_0x602e('0x38')]=qs[_0x602e('0x2f')](_['pick'](_0x162d50[_0x602e('0x2d')],_0x46d78f['filters']));if(_0x162d50['query']['filter']){_0x588b04[_0x602e('0x38')]=_[_0x602e('0x3b')](_0x588b04[_0x602e('0x38')],{'$or':_[_0x602e('0x26')](_0x588b04[_0x602e('0x31')],function(_0x5055ec){var _0x12d486={};_0x12d486[_0x5055ec]={'$like':'%'+_0x162d50[_0x602e('0x2d')][_0x602e('0x3a')]+'%'};return _0x12d486;})});}_0x588b04=_[_0x602e('0x3b')]({},_0x588b04,_0x162d50[_0x602e('0x3c')]);return _0x2a41a2[_0x602e('0x55')](_0x588b04);}})[_0x602e('0x20')](function(_0xa4c59a){if(_0xa4c59a){_0xbd2d93=_0xa4c59a[_0x602e('0x33')];if(!_0x162d50[_0x602e('0x2d')][_0x602e('0x34')](_0x602e('0x35'))){_0x588b04[_0x602e('0x1a')]=qs[_0x602e('0x1a')](_0x162d50[_0x602e('0x2d')][_0x602e('0x1a')]);_0x588b04[_0x602e('0x18')]=qs[_0x602e('0x18')](_0x162d50['query'][_0x602e('0x18')]);}return _0x2a41a2[_0x602e('0x55')](_0x588b04);}})[_0x602e('0x20')](function(_0x5e88f8){if(_0x5e88f8){return _0x5e88f8?{'count':_0xbd2d93,'rows':_0x5e88f8}:null;}})[_0x602e('0x20')](respondWithResult(_0x34a786,null))[_0x602e('0x41')](handleError(_0x34a786,null));};exports['addAction']=function(_0x32a18d,_0x4c0d36,_0x10d866){if(_0x32a18d['body']['id']){delete _0x32a18d[_0x602e('0x44')]['id'];}return db[_0x602e('0x27')]['find']({'where':{'id':_0x32a18d[_0x602e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4c0d36,null))['then'](function(_0x2c244e){if(_0x2c244e){_0x32a18d[_0x602e('0x44')][_0x602e('0x57')]=_0x2c244e['id'];return db[_0x602e('0x58')][_0x602e('0x43')](_0x32a18d['body']);}})[_0x602e('0x20')](respondWithResult(_0x4c0d36,null))[_0x602e('0x41')](handleError(_0x4c0d36,null));};exports[_0x602e('0x59')]=function(_0xfc6139,_0x515b8b,_0x4b7029){var _0x126230={};var _0x4a04e3={};var _0x438493;var _0x460493;return db[_0x602e('0x27')][_0x602e('0x56')]({'where':{'id':_0xfc6139[_0x602e('0x4d')]['id']}})[_0x602e('0x20')](handleEntityNotFound(_0x515b8b,null))['then'](function(_0x33646b){if(_0x33646b){_0x438493=_0x33646b;_0x4a04e3[_0x602e('0x2b')]=_[_0x602e('0x2e')](db['Action']['rawAttributes']);_0x4a04e3[_0x602e('0x2d')]=_[_0x602e('0x2e')](_0xfc6139[_0x602e('0x2d')]);_0x4a04e3['filters']=_['intersection'](_0x4a04e3[_0x602e('0x2b')],_0x4a04e3[_0x602e('0x2d')]);_0x126230[_0x602e('0x31')]=_['intersection'](_0x4a04e3['model'],qs[_0x602e('0x32')](_0xfc6139['query']['fields']));_0x126230[_0x602e('0x31')]=_0x126230['attributes']['length']?_0x126230['attributes']:_0x4a04e3[_0x602e('0x2b')];_0x126230[_0x602e('0x36')]=qs[_0x602e('0x37')](_0xfc6139[_0x602e('0x2d')][_0x602e('0x37')]);_0x126230['where']=qs[_0x602e('0x2f')](_[_0x602e('0x39')](_0xfc6139[_0x602e('0x2d')],_0x4a04e3['filters']));if(_0xfc6139[_0x602e('0x2d')][_0x602e('0x3a')]){_0x126230[_0x602e('0x38')]=_[_0x602e('0x3b')](_0x126230['where'],{'$or':_[_0x602e('0x26')](_0x126230[_0x602e('0x31')],function(_0x3e7c98){var _0x2c76c5={};_0x2c76c5[_0x3e7c98]={'$like':'%'+_0xfc6139[_0x602e('0x2d')]['filter']+'%'};return _0x2c76c5;})});}_0x126230=_[_0x602e('0x3b')]({},_0x126230,_0xfc6139['options']);return _0x438493[_0x602e('0x59')](_0x126230);}})[_0x602e('0x20')](function(_0x12b68e){if(_0x12b68e){_0x460493=_0x12b68e[_0x602e('0x33')];if(!_0xfc6139['query']['hasOwnProperty'](_0x602e('0x35'))){_0x126230['limit']=qs['limit'](_0xfc6139[_0x602e('0x2d')]['limit']);_0x126230['offset']=qs['offset'](_0xfc6139[_0x602e('0x2d')][_0x602e('0x18')]);}return _0x438493[_0x602e('0x59')](_0x126230);}})[_0x602e('0x20')](function(_0x5bff03){if(_0x5bff03){return _0x5bff03?{'count':_0x460493,'rows':_0x5bff03}:null;}})[_0x602e('0x20')](respondWithResult(_0x515b8b,null))['catch'](handleError(_0x515b8b,null));};
\ No newline at end of file
index f89d177..ed2ebcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./trigger.attributes','exports','Trigger','util'];(function(_0x2dbabb,_0x2d7751){var _0x32c6ff=function(_0x1d7daa){while(--_0x1d7daa){_0x2dbabb['push'](_0x2dbabb['shift']());}};_0x32c6ff(++_0x2d7751);}(_0xedd9,0xfc));var _0x9edd=function(_0x3ebb2d,_0x466cb1){_0x3ebb2d=_0x3ebb2d-0x0;var _0x35398f=_0xedd9[_0x3ebb2d];return _0x35398f;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x535f=['./trigger.attributes','exports','define','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x4ed37d,_0x1a84c9){var _0x4fb2c5=function(_0x5c9013){while(--_0x5c9013){_0x4ed37d['push'](_0x4ed37d['shift']());}};_0x4fb2c5(++_0x1a84c9);}(_0x535f,0x111));var _0xf535=function(_0x225c83,_0x411d35){_0x225c83=_0x225c83-0x0;var _0x138677=_0x535f[_0x225c83];return _0x138677;};'use strict';var _=require('lodash');var util=require(_0xf535('0x0'));var logger=require(_0xf535('0x1'))('api');var moment=require(_0xf535('0x2'));var BPromise=require(_0xf535('0x3'));var rp=require(_0xf535('0x4'));var fs=require('fs');var path=require(_0xf535('0x5'));var rimraf=require('rimraf');var config=require(_0xf535('0x6'));var attributes=require(_0xf535('0x7'));module[_0xf535('0x8')]=function(_0x30936d,_0x41ca74){return _0x30936d[_0xf535('0x9')]('Trigger',attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 500fb03..1732963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x889a=['client','http','request','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetTrigger','Trigger','findAll','options','raw','where','limit','include','map','attributes','model','ShowTrigger','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x59fde2,_0x4c630b){var _0x52ecae=function(_0xd4dc8e){while(--_0xd4dc8e){_0x59fde2['push'](_0x59fde2['shift']());}};_0x52ecae(++_0x4c630b);}(_0x889a,0x1be));var _0xa889=function(_0xda3b32,_0x2df0e7){_0xda3b32=_0xda3b32-0x0;var _0x5a16b6=_0x889a[_0xda3b32];return _0x5a16b6;};'use strict';var _=require(_0xa889('0x0'));var util=require(_0xa889('0x1'));var moment=require(_0xa889('0x2'));var BPromise=require(_0xa889('0x3'));var rs=require(_0xa889('0x4'));var fs=require('fs');var Redis=require(_0xa889('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa889('0x6'));var logger=require(_0xa889('0x7'))('rpc');var config=require(_0xa889('0x8'));var jayson=require(_0xa889('0x9'));var client=jayson[_0xa889('0xa')][_0xa889('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x486050,_0x4afd84,_0x197d06){return new BPromise(function(_0x1c8721,_0xa275){return client[_0xa889('0xc')](_0x486050,_0x197d06)[_0xa889('0xd')](function(_0x4d5f3a){logger['info'](_0xa889('0xe'),_0x4afd84,_0xa889('0xf'));logger[_0xa889('0x10')](_0xa889('0x11'),_0x4afd84,_0xa889('0xf'),JSON[_0xa889('0x12')](_0x4d5f3a));if(_0x4d5f3a[_0xa889('0x13')]){if(_0x4d5f3a[_0xa889('0x13')][_0xa889('0x14')]===0x1f4){logger[_0xa889('0x13')](_0xa889('0xe'),_0x4afd84,_0x4d5f3a[_0xa889('0x13')][_0xa889('0x15')]);return _0xa275(_0x4d5f3a[_0xa889('0x13')][_0xa889('0x15')]);}logger[_0xa889('0x13')](_0xa889('0xe'),_0x4afd84,_0x4d5f3a[_0xa889('0x13')][_0xa889('0x15')]);return _0x1c8721(_0x4d5f3a[_0xa889('0x13')][_0xa889('0x15')]);}else{logger[_0xa889('0x16')](_0xa889('0xe'),_0x4afd84,_0xa889('0xf'));_0x1c8721(_0x4d5f3a[_0xa889('0x17')]['message']);}})[_0xa889('0x18')](function(_0x506d63){logger[_0xa889('0x13')](_0xa889('0xe'),_0x4afd84,_0x506d63);_0xa275(_0x506d63);});});}exports[_0xa889('0x19')]=function(_0x3b9aad){var _0x12c5a5=this;return new Promise(function(_0x14cf33,_0x1ce48f){return db[_0xa889('0x1a')][_0xa889('0x1b')]({'raw':_0x3b9aad[_0xa889('0x1c')]?_0x3b9aad[_0xa889('0x1c')][_0xa889('0x1d')]===undefined?!![]:![]:!![],'where':_0x3b9aad[_0xa889('0x1c')]?_0x3b9aad[_0xa889('0x1c')][_0xa889('0x1e')]||null:null,'attributes':_0x3b9aad['options']?_0x3b9aad[_0xa889('0x1c')]['attributes']||null:null,'limit':_0x3b9aad['options']?_0x3b9aad[_0xa889('0x1c')][_0xa889('0x1f')]||null:null,'include':_0x3b9aad['options']?_0x3b9aad[_0xa889('0x1c')][_0xa889('0x20')]?_[_0xa889('0x21')](_0x3b9aad[_0xa889('0x1c')][_0xa889('0x20')],function(_0x4f9fef){return{'model':db[_0x4f9fef['model']],'as':_0x4f9fef['as'],'attributes':_0x4f9fef[_0xa889('0x22')],'include':_0x4f9fef[_0xa889('0x20')]?_['map'](_0x4f9fef[_0xa889('0x20')],function(_0x15a324){return{'model':db[_0x15a324['model']],'as':_0x15a324['as'],'attributes':_0x15a324['attributes'],'include':_0x15a324[_0xa889('0x20')]?_[_0xa889('0x21')](_0x15a324[_0xa889('0x20')],function(_0x446696){return{'model':db[_0x446696[_0xa889('0x23')]],'as':_0x446696['as'],'attributes':_0x446696[_0xa889('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x58bdad){logger['info']('GetTrigger',_0x3b9aad);logger[_0xa889('0x10')]('GetTrigger',_0x3b9aad,JSON[_0xa889('0x12')](_0x58bdad));_0x14cf33(_0x58bdad);})['catch'](function(_0xe7ed68){logger['error'](_0xa889('0x19'),_0xe7ed68['message'],_0x3b9aad);_0x1ce48f(_0x12c5a5[_0xa889('0x13')](0x1f4,_0xe7ed68[_0xa889('0x15')]));});});};exports[_0xa889('0x24')]=function(_0x3d94ac){var _0x30ec37=this;return new Promise(function(_0x71533f,_0xab579a){return db[_0xa889('0x1a')][_0xa889('0x25')]({'raw':_0x3d94ac[_0xa889('0x1c')]?_0x3d94ac['options'][_0xa889('0x1d')]===undefined?!![]:![]:!![],'where':_0x3d94ac[_0xa889('0x1c')]?_0x3d94ac[_0xa889('0x1c')][_0xa889('0x1e')]||null:null,'attributes':_0x3d94ac[_0xa889('0x1c')]?_0x3d94ac[_0xa889('0x1c')][_0xa889('0x22')]||null:null,'include':_0x3d94ac[_0xa889('0x1c')]?_0x3d94ac['options'][_0xa889('0x20')]?_['map'](_0x3d94ac[_0xa889('0x1c')][_0xa889('0x20')],function(_0x1a5b90){return{'model':db[_0x1a5b90[_0xa889('0x23')]],'as':_0x1a5b90['as'],'attributes':_0x1a5b90['attributes'],'include':_0x1a5b90[_0xa889('0x20')]?_[_0xa889('0x21')](_0x1a5b90[_0xa889('0x20')],function(_0x44f4ee){return{'model':db[_0x44f4ee['model']],'as':_0x44f4ee['as'],'attributes':_0x44f4ee[_0xa889('0x22')],'include':_0x44f4ee[_0xa889('0x20')]?_[_0xa889('0x21')](_0x44f4ee['include'],function(_0x57bc31){return{'model':db[_0x57bc31['model']],'as':_0x57bc31['as'],'attributes':_0x57bc31[_0xa889('0x22')]};}):[]};}):[]};}):[]:[]})[_0xa889('0xd')](function(_0x5c605a){logger['info']('ShowTrigger',_0x3d94ac);logger[_0xa889('0x10')](_0xa889('0x24'),_0x3d94ac,JSON[_0xa889('0x12')](_0x5c605a));_0x71533f(_0x5c605a);})[_0xa889('0x18')](function(_0x2514d9){logger[_0xa889('0x13')](_0xa889('0x24'),_0x2514d9[_0xa889('0x15')],_0x3d94ac);_0xab579a(_0x30ec37[_0xa889('0x13')](0x1f4,_0x2514d9['message']));});});};
\ No newline at end of file
+var _0xf332=['model','map','then','catch','ShowTrigger','find','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','client','http','request','Trigger,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','GetTrigger','Trigger','options','raw','attributes','include'];(function(_0x1ec9d1,_0x35ecaf){var _0x4b6bc2=function(_0x2695c6){while(--_0x2695c6){_0x1ec9d1['push'](_0x1ec9d1['shift']());}};_0x4b6bc2(++_0x35ecaf);}(_0xf332,0x15b));var _0x2f33=function(_0x558436,_0x2da95b){_0x558436=_0x558436-0x0;var _0x13148a=_0xf332[_0x558436];return _0x13148a;};'use strict';var _=require(_0x2f33('0x0'));var util=require(_0x2f33('0x1'));var moment=require('moment');var BPromise=require(_0x2f33('0x2'));var rs=require(_0x2f33('0x3'));var fs=require('fs');var Redis=require(_0x2f33('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2f33('0x5'));var logger=require('../../config/logger')(_0x2f33('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2f33('0x7')][_0x2f33('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x398c1e,_0x5dfa8c,_0x3f72db){return new BPromise(function(_0xa7399c,_0x39143a){return client[_0x2f33('0x9')](_0x398c1e,_0x3f72db)['then'](function(_0x471fb5){logger['info'](_0x2f33('0xa'),_0x5dfa8c,_0x2f33('0xb'));logger[_0x2f33('0xc')]('Trigger,\x20%s,\x20%s,\x20%s',_0x5dfa8c,_0x2f33('0xb'),JSON[_0x2f33('0xd')](_0x471fb5));if(_0x471fb5[_0x2f33('0xe')]){if(_0x471fb5[_0x2f33('0xe')][_0x2f33('0xf')]===0x1f4){logger[_0x2f33('0xe')]('Trigger,\x20%s,\x20%s',_0x5dfa8c,_0x471fb5[_0x2f33('0xe')][_0x2f33('0x10')]);return _0x39143a(_0x471fb5[_0x2f33('0xe')][_0x2f33('0x10')]);}logger[_0x2f33('0xe')](_0x2f33('0xa'),_0x5dfa8c,_0x471fb5['error'][_0x2f33('0x10')]);return _0xa7399c(_0x471fb5['error'][_0x2f33('0x10')]);}else{logger[_0x2f33('0x11')](_0x2f33('0xa'),_0x5dfa8c,_0x2f33('0xb'));_0xa7399c(_0x471fb5[_0x2f33('0x12')][_0x2f33('0x10')]);}})['catch'](function(_0x29125d){logger[_0x2f33('0xe')](_0x2f33('0xa'),_0x5dfa8c,_0x29125d);_0x39143a(_0x29125d);});});}exports[_0x2f33('0x13')]=function(_0x545bb9){var _0x5aba1e=this;return new Promise(function(_0x16c64a,_0x184eb4){return db[_0x2f33('0x14')]['findAll']({'raw':_0x545bb9[_0x2f33('0x15')]?_0x545bb9[_0x2f33('0x15')][_0x2f33('0x16')]===undefined?!![]:![]:!![],'where':_0x545bb9[_0x2f33('0x15')]?_0x545bb9[_0x2f33('0x15')]['where']||null:null,'attributes':_0x545bb9[_0x2f33('0x15')]?_0x545bb9[_0x2f33('0x15')][_0x2f33('0x17')]||null:null,'limit':_0x545bb9['options']?_0x545bb9[_0x2f33('0x15')]['limit']||null:null,'include':_0x545bb9[_0x2f33('0x15')]?_0x545bb9[_0x2f33('0x15')][_0x2f33('0x18')]?_['map'](_0x545bb9[_0x2f33('0x15')][_0x2f33('0x18')],function(_0x304f17){return{'model':db[_0x304f17[_0x2f33('0x19')]],'as':_0x304f17['as'],'attributes':_0x304f17[_0x2f33('0x17')],'include':_0x304f17[_0x2f33('0x18')]?_['map'](_0x304f17[_0x2f33('0x18')],function(_0x3a712b){return{'model':db[_0x3a712b[_0x2f33('0x19')]],'as':_0x3a712b['as'],'attributes':_0x3a712b[_0x2f33('0x17')],'include':_0x3a712b[_0x2f33('0x18')]?_[_0x2f33('0x1a')](_0x3a712b[_0x2f33('0x18')],function(_0x4f1c49){return{'model':db[_0x4f1c49[_0x2f33('0x19')]],'as':_0x4f1c49['as'],'attributes':_0x4f1c49[_0x2f33('0x17')]};}):[]};}):[]};}):[]:[]})[_0x2f33('0x1b')](function(_0x228e5a){logger[_0x2f33('0x11')]('GetTrigger',_0x545bb9);logger['debug'](_0x2f33('0x13'),_0x545bb9,JSON[_0x2f33('0xd')](_0x228e5a));_0x16c64a(_0x228e5a);})[_0x2f33('0x1c')](function(_0x10539b){logger['error'](_0x2f33('0x13'),_0x10539b[_0x2f33('0x10')],_0x545bb9);_0x184eb4(_0x5aba1e[_0x2f33('0xe')](0x1f4,_0x10539b[_0x2f33('0x10')]));});});};exports[_0x2f33('0x1d')]=function(_0x13d95d){var _0x347a23=this;return new Promise(function(_0x503eea,_0xc9a489){return db['Trigger'][_0x2f33('0x1e')]({'raw':_0x13d95d['options']?_0x13d95d[_0x2f33('0x15')][_0x2f33('0x16')]===undefined?!![]:![]:!![],'where':_0x13d95d['options']?_0x13d95d[_0x2f33('0x15')]['where']||null:null,'attributes':_0x13d95d[_0x2f33('0x15')]?_0x13d95d[_0x2f33('0x15')][_0x2f33('0x17')]||null:null,'include':_0x13d95d[_0x2f33('0x15')]?_0x13d95d[_0x2f33('0x15')][_0x2f33('0x18')]?_[_0x2f33('0x1a')](_0x13d95d[_0x2f33('0x15')][_0x2f33('0x18')],function(_0x4ec3e1){return{'model':db[_0x4ec3e1[_0x2f33('0x19')]],'as':_0x4ec3e1['as'],'attributes':_0x4ec3e1[_0x2f33('0x17')],'include':_0x4ec3e1['include']?_[_0x2f33('0x1a')](_0x4ec3e1[_0x2f33('0x18')],function(_0x12475e){return{'model':db[_0x12475e[_0x2f33('0x19')]],'as':_0x12475e['as'],'attributes':_0x12475e[_0x2f33('0x17')],'include':_0x12475e[_0x2f33('0x18')]?_[_0x2f33('0x1a')](_0x12475e[_0x2f33('0x18')],function(_0x57f72a){return{'model':db[_0x57f72a[_0x2f33('0x19')]],'as':_0x57f72a['as'],'attributes':_0x57f72a[_0x2f33('0x17')]};}):[]};}):[]};}):[]:[]})[_0x2f33('0x1b')](function(_0x1d6f2f){logger[_0x2f33('0x11')](_0x2f33('0x1d'),_0x13d95d);logger[_0x2f33('0xc')](_0x2f33('0x1d'),_0x13d95d,JSON[_0x2f33('0xd')](_0x1d6f2f));_0x503eea(_0x1d6f2f);})[_0x2f33('0x1c')](function(_0x184bdd){logger[_0x2f33('0xe')](_0x2f33('0x1d'),_0x184bdd[_0x2f33('0x10')],_0x13d95d);_0xc9a489(_0x347a23[_0x2f33('0xe')](0x1f4,_0x184bdd[_0x2f33('0x10')]));});});};
\ No newline at end of file
index e21b62e..7cd4411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d2f=['get','index','/:id','isAuthenticated','show','post','clone','create','put','update','delete','destroy','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./trunk.controller'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x6d2f,0x84));var _0xf6d2=function(_0x59e821,_0x86c723){_0x59e821=_0x59e821-0x0;var _0x5333f6=_0x6d2f[_0x59e821];return _0x5333f6;};'use strict';var multer=require(_0xf6d2('0x0'));var util=require(_0xf6d2('0x1'));var path=require('path');var timeout=require(_0xf6d2('0x2'));var express=require(_0xf6d2('0x3'));var router=express['Router']();var fs_extra=require(_0xf6d2('0x4'));var auth=require(_0xf6d2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf6d2('0x6'));var controller=require(_0xf6d2('0x7'));router[_0xf6d2('0x8')]('/',auth['isAuthenticated'](),controller[_0xf6d2('0x9')]);router[_0xf6d2('0x8')](_0xf6d2('0xa'),auth[_0xf6d2('0xb')](),controller[_0xf6d2('0xc')]);router[_0xf6d2('0xd')]('/:id/clone',auth['isAuthenticated'](),controller[_0xf6d2('0xe')]);router['post']('/',auth[_0xf6d2('0xb')](),controller[_0xf6d2('0xf')]);router[_0xf6d2('0x10')](_0xf6d2('0xa'),auth[_0xf6d2('0xb')](),controller[_0xf6d2('0x11')]);router[_0xf6d2('0x12')](_0xf6d2('0xa'),auth[_0xf6d2('0xb')](),controller[_0xf6d2('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xf8a6=['clone','create','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./trunk.controller','isAuthenticated','index','get','/:id','show','post','/:id/clone'];(function(_0xa25342,_0x24522b){var _0x52be43=function(_0x1ea0e9){while(--_0x1ea0e9){_0xa25342['push'](_0xa25342['shift']());}};_0x52be43(++_0x24522b);}(_0xf8a6,0x99));var _0x6f8a=function(_0x5eaa9f,_0x55700e){_0x5eaa9f=_0x5eaa9f-0x0;var _0x3ff070=_0xf8a6[_0x5eaa9f];return _0x3ff070;};'use strict';var multer=require('multer');var util=require(_0x6f8a('0x0'));var path=require('path');var timeout=require(_0x6f8a('0x1'));var express=require(_0x6f8a('0x2'));var router=express[_0x6f8a('0x3')]();var fs_extra=require(_0x6f8a('0x4'));var auth=require(_0x6f8a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6f8a('0x6'));var controller=require(_0x6f8a('0x7'));router['get']('/',auth[_0x6f8a('0x8')](),controller[_0x6f8a('0x9')]);router[_0x6f8a('0xa')](_0x6f8a('0xb'),auth['isAuthenticated'](),controller[_0x6f8a('0xc')]);router[_0x6f8a('0xd')](_0x6f8a('0xe'),auth[_0x6f8a('0x8')](),controller[_0x6f8a('0xf')]);router[_0x6f8a('0xd')]('/',auth[_0x6f8a('0x8')](),controller[_0x6f8a('0x10')]);router['put'](_0x6f8a('0xb'),auth[_0x6f8a('0x8')](),controller[_0x6f8a('0x11')]);router[_0x6f8a('0x12')](_0x6f8a('0xb'),auth[_0x6f8a('0x8')](),controller[_0x6f8a('0x13')]);module[_0x6f8a('0x14')]=router;
\ No newline at end of file
index ff0e712..4287650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x305e=['String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','accept','refuse','originate','uac','uas','pai','certificate','active','passive','actpass','dynamic','update,nonat','BOOLEAN','sequelize','name','ENUM','user','peer','friend','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB','STRING','udp','setDataValue','transport','join','getDataValue','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat'];(function(_0x56ea12,_0x304238){var _0x4b9883=function(_0x5a0ffa){while(--_0x5a0ffa){_0x56ea12['push'](_0x56ea12['shift']());}};_0x4b9883(++_0x304238);}(_0x305e,0xbb));var _0xe305=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x305e[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0xe305('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xe305('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xe305('0x2')]('friend',_0xe305('0x3'),_0xe305('0x4')),'allowNull':![],'defaultValue':_0xe305('0x5')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xe305('0x6')},'callingpres':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x7'),'ALLOWED_PASSED_SCREEN',_0xe305('0x8'),_0xe305('0x9'),'PROHIB_NOT_SCREENED',_0xe305('0xa'),'PROHIB_FAILED_SCREEN',_0xe305('0xb'))},'deny':{'type':Sequelize[_0xe305('0xc')]},'permit':{'type':Sequelize[_0xe305('0xc')]},'secret':{'type':Sequelize[_0xe305('0xc')]},'md5secret':{'type':Sequelize[_0xe305('0xc')]},'remotesecret':{'type':Sequelize[_0xe305('0xc')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xe305('0xd'),'set':function(_0x576aa7){this[_0xe305('0xe')](_0xe305('0xf'),_0x576aa7?_0x576aa7[_0xe305('0x10')](','):null);},'get':function(){return this[_0xe305('0x11')]('transport')?this['getDataValue'](_0xe305('0xf'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x12'),_0xe305('0x13'),_0xe305('0x14'),_0xe305('0x15'),_0xe305('0x16')),'defaultValue':_0xe305('0x12')},'directmedia':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no',_0xe305('0x18'),_0xe305('0x19'),_0xe305('0x1a')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xe305('0xc')]},'directmediadeny':{'type':Sequelize[_0xe305('0xc')]},'nat':{'type':Sequelize[_0xe305('0xc')],'defaultValue':_0xe305('0x1b'),'set':function(_0x45eb69){this['setDataValue'](_0xe305('0x1c'),_0x45eb69?_0x45eb69[_0xe305('0x10')](','):null);},'get':function(){return this['getDataValue'](_0xe305('0x1c'))?this[_0xe305('0x11')](_0xe305('0x1c'))['split'](','):null;},'comment':_0xe305('0x1d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xe305('0xc')]},'language':{'type':Sequelize[_0xe305('0xc')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xe305('0xc')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xe305('0x1e')},'allow':{'type':Sequelize[_0xe305('0xc')],'allowNull':![],'defaultValue':_0xe305('0x1f'),'set':function(_0x3da986){this[_0xe305('0xe')](_0xe305('0x20'),_0x3da986?_0x3da986[_0xe305('0x10')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0xe305('0x11')]('allow')?this[_0xe305('0x11')](_0xe305('0x20'))['split'](';'):null;},'comment':_0xe305('0x21')},'autoframing':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'insecure':{'type':Sequelize[_0xe305('0xc')],'defaultValue':_0xe305('0x22'),'set':function(_0x3bb482){this[_0xe305('0xe')](_0xe305('0x23'),_0x3bb482?_0x3bb482[_0xe305('0x10')](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0xe305('0x11')](_0xe305('0x23'))[_0xe305('0x24')](','):null;},'comment':_0xe305('0x25')},'trustrpid':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no',_0xe305('0x26'))},'promiscredir':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'useclientcode':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'accountcode':{'type':Sequelize[_0xe305('0x27')](0xb)},'setvar':{'type':Sequelize[_0xe305('0xc')]},'callerid':{'type':Sequelize[_0xe305('0xc')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xe305('0xc')]},'callcounter':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no'),'defaultValue':_0xe305('0x17')},'busylevel':{'type':Sequelize[_0xe305('0x27')](0xb)},'allowoverlap':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'allowsubscribe':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'allowtransfer':{'type':Sequelize[_0xe305('0x2')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'subscribecontext':{'type':Sequelize[_0xe305('0xc')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xe305('0x2')]('yes','no',_0xe305('0x28')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xe305('0x17'),'no')},'mailbox':{'type':Sequelize[_0xe305('0xc')]},'session_timers':{'type':Sequelize['ENUM'](_0xe305('0x29'),_0xe305('0x2a'),_0xe305('0x2b'))},'session_expires':{'type':Sequelize[_0xe305('0x27')](0xb)},'session_minse':{'type':Sequelize[_0xe305('0x27')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xe305('0x2c'),_0xe305('0x2d')),'defaultValue':_0xe305('0x2d')},'t38pt_usertpsource':{'type':Sequelize[_0xe305('0xc')]},'regexten':{'type':Sequelize[_0xe305('0xc')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xe305('0x27')](0x5)},'qualify':{'type':Sequelize[_0xe305('0x2')]('yes','no'),'defaultValue':_0xe305('0x17')},'keepalive':{'type':Sequelize[_0xe305('0x27')](0xb)},'defaultip':{'type':Sequelize[_0xe305('0xc')]},'defaultuser':{'type':Sequelize[_0xe305('0xc')]},'rtptimeout':{'type':Sequelize[_0xe305('0x27')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0xe305('0x27')](0xb)},'sendrpid':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no',_0xe305('0x2e')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xe305('0xc')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0xe305('0x27')](0xb)},'timerb':{'type':Sequelize[_0xe305('0x27')](0xb)},'qualifyfreq':{'type':Sequelize[_0xe305('0x27')](0xb)},'contactpermit':{'type':Sequelize[_0xe305('0xc')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0xe305('0xc')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'force_avp':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'icesupport':{'type':Sequelize[_0xe305('0x2')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'dtlsverify':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no','fingerprint',_0xe305('0x2f'))},'dtlsrekey':{'type':Sequelize[_0xe305('0x27')](0xb)},'dtlscertfile':{'type':Sequelize[_0xe305('0xc')]},'dtlsprivatekey':{'type':Sequelize[_0xe305('0xc')]},'dtlscipher':{'type':Sequelize[_0xe305('0xc')]},'dtlscafile':{'type':Sequelize[_0xe305('0xc')]},'dtlscapath':{'type':Sequelize[_0xe305('0xc')]},'dtlssetup':{'type':Sequelize['ENUM'](_0xe305('0x30'),_0xe305('0x31'),_0xe305('0x32')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xe305('0xc')]},'usereqphone':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xe305('0xc')]},'recordofffeature':{'type':Sequelize[_0xe305('0xc')]},'call_limit':{'type':Sequelize[_0xe305('0x27')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xe305('0x2')]('yes','no')},'subscribemwi':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no')},'vmexten':{'type':Sequelize[_0xe305('0xc')]},'mohinterpret':{'type':Sequelize[_0xe305('0xc')]},'mohsuggest':{'type':Sequelize[_0xe305('0xc')]},'parkinglot':{'type':Sequelize[_0xe305('0xc')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xe305('0xc')],'defaultValue':_0xe305('0x33')},'canreinvite':{'type':Sequelize[_0xe305('0x2')](_0xe305('0x17'),'no',_0xe305('0x18'),'update',_0xe305('0x34')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xe305('0xc')]},'otherFields':{'type':Sequelize[_0xe305('0xc')]},'active':{'type':Sequelize[_0xe305('0x35')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0xded7=['active','passive','actpass','dynamic','update','update,nonat','BOOLEAN','sequelize','exports','STRING','friend','user','peer','from-voip-provider','ENUM','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','join','getDataValue','transport','split','rfc2833','info','shortinfo','inband','yes','nonat','outgoing','force_rport,comedia','setDataValue','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','pai','fingerprint'];(function(_0x1cf351,_0x3e87ff){var _0x413c06=function(_0x57f8b9){while(--_0x57f8b9){_0x1cf351['push'](_0x1cf351['shift']());}};_0x413c06(++_0x3e87ff);}(_0xded7,0x115));var _0x7ded=function(_0x16688e,_0x51e0c0){_0x16688e=_0x16688e-0x0;var _0x546c69=_0xded7[_0x16688e];return _0x546c69;};'use strict';var Sequelize=require(_0x7ded('0x0'));module[_0x7ded('0x1')]={'name':{'type':Sequelize[_0x7ded('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x7ded('0x3'),_0x7ded('0x4'),_0x7ded('0x5')),'allowNull':![],'defaultValue':_0x7ded('0x3')},'context':{'type':Sequelize[_0x7ded('0x2')],'allowNull':![],'defaultValue':_0x7ded('0x6')},'callingpres':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x8'),_0x7ded('0x9'),_0x7ded('0xa'),_0x7ded('0xb'),_0x7ded('0xc'),_0x7ded('0xd'),'PROHIB_FAILED_SCREEN',_0x7ded('0xe'))},'deny':{'type':Sequelize[_0x7ded('0x2')]},'permit':{'type':Sequelize[_0x7ded('0x2')]},'secret':{'type':Sequelize[_0x7ded('0x2')]},'md5secret':{'type':Sequelize[_0x7ded('0x2')]},'remotesecret':{'type':Sequelize[_0x7ded('0x2')]},'transport':{'type':Sequelize[_0x7ded('0x2')],'defaultValue':_0x7ded('0xf'),'set':function(_0x527a81){this['setDataValue']('transport',_0x527a81?_0x527a81[_0x7ded('0x10')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0x7ded('0x11')](_0x7ded('0x12'))[_0x7ded('0x13')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x14'),_0x7ded('0x15'),_0x7ded('0x16'),_0x7ded('0x17'),'auto'),'defaultValue':_0x7ded('0x14')},'directmedia':{'type':Sequelize['ENUM'](_0x7ded('0x18'),'no',_0x7ded('0x19'),'update',_0x7ded('0x1a')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x7ded('0x2')]},'directmediadeny':{'type':Sequelize[_0x7ded('0x2')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0x7ded('0x1b'),'set':function(_0x2e42bb){this[_0x7ded('0x1c')](_0x7ded('0x1d'),_0x2e42bb?_0x2e42bb[_0x7ded('0x10')](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x7ded('0x11')](_0x7ded('0x1d'))[_0x7ded('0x13')](','):null;},'comment':_0x7ded('0x1e')},'callgroup':{'type':Sequelize[_0x7ded('0x2')]},'namedcallgroup':{'type':Sequelize[_0x7ded('0x2')]},'pickupgroup':{'type':Sequelize[_0x7ded('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x7ded('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x7ded('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x7ded('0x2')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x7ded('0x2')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0xff5fcc){this['setDataValue'](_0x7ded('0x1f'),_0xff5fcc?_0xff5fcc[_0x7ded('0x10')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x7ded('0x11')](_0x7ded('0x1f'))?this['getDataValue'](_0x7ded('0x1f'))[_0x7ded('0x13')](';'):null;},'comment':_0x7ded('0x20')},'autoframing':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no')},'insecure':{'type':Sequelize[_0x7ded('0x2')],'defaultValue':_0x7ded('0x21'),'set':function(_0x22dcd4){this[_0x7ded('0x1c')](_0x7ded('0x22'),_0x22dcd4?_0x22dcd4[_0x7ded('0x10')](','):null);},'get':function(){return this[_0x7ded('0x11')](_0x7ded('0x22'))?this['getDataValue'](_0x7ded('0x22'))[_0x7ded('0x13')](','):null;},'comment':_0x7ded('0x23')},'trustrpid':{'type':Sequelize[_0x7ded('0x7')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0x7ded('0x24'))},'promiscredir':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no')},'useclientcode':{'type':Sequelize['ENUM']('yes','no')},'accountcode':{'type':Sequelize[_0x7ded('0x25')](0xb)},'setvar':{'type':Sequelize[_0x7ded('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0x7ded('0x26')},'amaflags':{'type':Sequelize[_0x7ded('0x2')]},'callcounter':{'type':Sequelize['ENUM'](_0x7ded('0x18'),'no'),'defaultValue':_0x7ded('0x18')},'busylevel':{'type':Sequelize[_0x7ded('0x25')](0xb)},'allowoverlap':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no')},'allowsubscribe':{'type':Sequelize[_0x7ded('0x7')]('yes','no')},'allowtransfer':{'type':Sequelize[_0x7ded('0x7')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x7ded('0x2')]},'videosupport':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no',_0x7ded('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x7ded('0x25')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no')},'mailbox':{'type':Sequelize[_0x7ded('0x2')]},'session_timers':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x28'),_0x7ded('0x29'),_0x7ded('0x2a'))},'session_expires':{'type':Sequelize[_0x7ded('0x25')](0xb)},'session_minse':{'type':Sequelize[_0x7ded('0x25')](0xb)},'session_refresher':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x2b'),'uas'),'defaultValue':_0x7ded('0x2c')},'t38pt_usertpsource':{'type':Sequelize[_0x7ded('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x7ded('0x2')]},'port':{'type':Sequelize[_0x7ded('0x25')](0x5)},'qualify':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x7ded('0x18')},'keepalive':{'type':Sequelize[_0x7ded('0x25')](0xb)},'defaultip':{'type':Sequelize[_0x7ded('0x2')]},'defaultuser':{'type':Sequelize[_0x7ded('0x2')]},'rtptimeout':{'type':Sequelize[_0x7ded('0x25')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x7ded('0x25')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x7ded('0x25')](0xb)},'sendrpid':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no',_0x7ded('0x2d')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x7ded('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0x7ded('0x25')](0xb)},'timerb':{'type':Sequelize[_0x7ded('0x25')](0xb)},'qualifyfreq':{'type':Sequelize[_0x7ded('0x25')](0xb)},'contactpermit':{'type':Sequelize[_0x7ded('0x2')]},'contactdeny':{'type':Sequelize[_0x7ded('0x2')]},'contactacl':{'type':Sequelize[_0x7ded('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x7ded('0x2')]},'use_q850_reason':{'type':Sequelize[_0x7ded('0x2')]},'maxforwards':{'type':Sequelize[_0x7ded('0x25')](0xb)},'encryption':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize['ENUM'](_0x7ded('0x18'),'no')},'icesupport':{'type':Sequelize[_0x7ded('0x7')]('yes','no')},'dtlsenable':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no')},'dtlsverify':{'type':Sequelize[_0x7ded('0x7')]('yes','no',_0x7ded('0x2e'),'certificate')},'dtlsrekey':{'type':Sequelize[_0x7ded('0x25')](0xb)},'dtlscertfile':{'type':Sequelize[_0x7ded('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x7ded('0x2')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0x7ded('0x2')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x2f'),_0x7ded('0x30'),_0x7ded('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x7ded('0x2')]},'recordofffeature':{'type':Sequelize[_0x7ded('0x2')]},'call_limit':{'type':Sequelize[_0x7ded('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no')},'subscribemwi':{'type':Sequelize['ENUM'](_0x7ded('0x18'),'no')},'vmexten':{'type':Sequelize[_0x7ded('0x2')]},'mohinterpret':{'type':Sequelize[_0x7ded('0x2')]},'mohsuggest':{'type':Sequelize[_0x7ded('0x2')]},'parkinglot':{'type':Sequelize[_0x7ded('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x7ded('0x2')],'defaultValue':_0x7ded('0x32')},'canreinvite':{'type':Sequelize[_0x7ded('0x7')](_0x7ded('0x18'),'no','nonat',_0x7ded('0x33'),_0x7ded('0x34')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x7ded('0x2')]},'active':{'type':Sequelize[_0x7ded('0x35')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x7ded('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 790c8d9..ed66773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','create','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','role','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','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Trunk,\x20%s,\x20%s','request\x20sent','result','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','Trunks','UserProfileResource','stack','name','send','index','Trunk','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','params','length','find','includeAll','get'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x4b84,0x1cc));var _0x44b8=function(_0x5bc5fe,_0x2afaef){_0x5bc5fe=_0x5bc5fe-0x0;var _0x298ea7=_0x4b84[_0x5bc5fe];return _0x298ea7;};'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'];var jayson=require(_0x44b8('0x14'));var client=jayson['client'][_0x44b8('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x490bc6,_0x833ea3,_0x18d642,_0x4df670){return new BPromise(function(_0x63e8f6,_0x4be54c){var _0x54fa95=_0x4df670||client;return _0x54fa95[_0x44b8('0x16')](_0x490bc6,_0x18d642)[_0x44b8('0x17')](function(_0x1722da){logger[_0x44b8('0x18')]('Trunk,\x20%s,\x20%s',_0x833ea3,'request\x20sent');logger['debug'](_0x44b8('0x19'),_0x833ea3,'request\x20sent',JSON[_0x44b8('0x1a')](_0x1722da));if(_0x1722da[_0x44b8('0x1b')]){if(_0x1722da['error'][_0x44b8('0x1c')]===0x1f4){logger[_0x44b8('0x1b')]('Trunk,\x20%s,\x20%s',_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x4be54c(_0x1722da['error'][_0x44b8('0x1d')]);}logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x63e8f6(_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);}else{logger[_0x44b8('0x18')](_0x44b8('0x1e'),_0x833ea3,_0x44b8('0x1f'));_0x63e8f6(_0x1722da[_0x44b8('0x20')][_0x44b8('0x1d')]);}})['catch'](function(_0x56549a){logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x56549a);_0x4be54c(_0x56549a);});});}function respondWithStatusCode(_0x1418db,_0x305a5c){_0x305a5c=_0x305a5c||0xcc;return function(_0x51a34a){if(_0x51a34a){return _0x1418db[_0x44b8('0x21')](_0x305a5c);}return _0x1418db['status'](_0x305a5c)[_0x44b8('0x22')]();};}function respondWithResult(_0x228c81,_0x25a0c1){_0x25a0c1=_0x25a0c1||0xc8;return function(_0x47689e){if(_0x47689e){return _0x228c81[_0x44b8('0x23')](_0x25a0c1)['json'](_0x47689e);}};}function respondWithFilteredResult(_0x474f01,_0x502acf){return function(_0x41d673){if(_0x41d673){var _0x350482=typeof _0x502acf['offset']===_0x44b8('0x24')&&typeof _0x502acf[_0x44b8('0x25')]===_0x44b8('0x24');var _0x59c1bf=_0x41d673[_0x44b8('0x26')];var _0x242342=_0x350482?0x0:_0x502acf['offset'];var _0x2e0174=_0x350482?_0x41d673['count']:_0x502acf[_0x44b8('0x27')]+_0x502acf['limit'];var _0x559f0b;if(_0x2e0174>=_0x59c1bf){_0x2e0174=_0x59c1bf;_0x559f0b=0xc8;}else{_0x559f0b=0xce;}_0x474f01['status'](_0x559f0b);return _0x474f01[_0x44b8('0x28')](_0x44b8('0x29'),_0x242342+'-'+_0x2e0174+'/'+_0x59c1bf)[_0x44b8('0x2a')](_0x41d673);}return null;};}function patchUpdates(_0x1bd1be){return function(_0x38cd17){try{jsonpatch[_0x44b8('0x2b')](_0x38cd17,_0x1bd1be,!![]);}catch(_0x2cf205){return BPromise[_0x44b8('0x2c')](_0x2cf205);}return _0x38cd17[_0x44b8('0x2d')]();};}function saveUpdates(_0x28f918,_0x5e1129){return function(_0x417d81){if(_0x417d81){return _0x417d81[_0x44b8('0x2e')](_0x28f918)['then'](function(_0x261ff2){return _0x261ff2;});}return null;};}function removeEntity(_0x538db7,_0x212983){return function(_0x1652cb){if(_0x1652cb){return _0x1652cb[_0x44b8('0x2f')]()[_0x44b8('0x17')](function(){var _0x1b63a7=_0x1652cb['get']({'plain':!![]});var _0x16b706=_0x44b8('0x30');return db[_0x44b8('0x31')][_0x44b8('0x2f')]({'where':{'type':_0x16b706,'resourceId':_0x1b63a7['id']}})[_0x44b8('0x17')](function(){return _0x1652cb;});})['then'](function(){_0x538db7[_0x44b8('0x23')](0xcc)[_0x44b8('0x22')]();});}};}function handleEntityNotFound(_0x1a30fc,_0x3e93af){return function(_0x140a79){if(!_0x140a79){_0x1a30fc[_0x44b8('0x21')](0x194);}return _0x140a79;};}function handleError(_0x2e8b88,_0x14a9d7){_0x14a9d7=_0x14a9d7||0x1f4;return function(_0x28c10d){logger[_0x44b8('0x1b')](_0x28c10d[_0x44b8('0x32')]);if(_0x28c10d[_0x44b8('0x33')]){delete _0x28c10d[_0x44b8('0x33')];}_0x2e8b88[_0x44b8('0x23')](_0x14a9d7)[_0x44b8('0x34')](_0x28c10d);};}exports[_0x44b8('0x35')]=function(_0x323c50,_0xeff999){var _0x28faa9={},_0x3984f8={},_0x2c02d6={'count':0x0,'rows':[]};var _0x282345=_['map'](db[_0x44b8('0x36')][_0x44b8('0x37')],function(_0x4fcfa0){return{'name':_0x4fcfa0[_0x44b8('0x38')],'type':_0x4fcfa0[_0x44b8('0x39')][_0x44b8('0x3a')]};});_0x3984f8[_0x44b8('0x3b')]=_['map'](_0x282345,_0x44b8('0x33'));_0x3984f8[_0x44b8('0x3c')]=_[_0x44b8('0x3d')](_0x323c50[_0x44b8('0x3c')]);_0x3984f8[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],_0x3984f8[_0x44b8('0x3c')]);_0x28faa9[_0x44b8('0x40')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x28faa9[_0x44b8('0x40')]=_0x28faa9[_0x44b8('0x40')]['length']?_0x28faa9[_0x44b8('0x40')]:_0x3984f8[_0x44b8('0x3b')];if(!_0x323c50[_0x44b8('0x3c')]['hasOwnProperty'](_0x44b8('0x42'))){_0x28faa9[_0x44b8('0x25')]=qs[_0x44b8('0x25')](_0x323c50['query'][_0x44b8('0x25')]);_0x28faa9[_0x44b8('0x27')]=qs[_0x44b8('0x27')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x27')]);}_0x28faa9['order']=qs['sort'](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x43')]);_0x28faa9[_0x44b8('0x44')]=qs[_0x44b8('0x3e')](_[_0x44b8('0x45')](_0x323c50[_0x44b8('0x3c')],_0x3984f8[_0x44b8('0x3e')]),_0x282345);if(_0x323c50[_0x44b8('0x3c')][_0x44b8('0x46')]){_0x28faa9[_0x44b8('0x44')]=_[_0x44b8('0x47')](_0x28faa9[_0x44b8('0x44')],{'$or':_[_0x44b8('0x48')](_0x282345,function(_0x1236c7){if(_0x1236c7[_0x44b8('0x39')]!==_0x44b8('0x49')){var _0xce06dc={};_0xce06dc[_0x1236c7[_0x44b8('0x33')]]={'$like':'%'+_0x323c50[_0x44b8('0x3c')]['filter']+'%'};return _0xce06dc;}})});}_0x28faa9=_['merge']({},_0x28faa9,_0x323c50[_0x44b8('0x4a')]);var _0x1df74b={'where':_0x28faa9[_0x44b8('0x44')]};return db[_0x44b8('0x36')][_0x44b8('0x26')](_0x1df74b)[_0x44b8('0x17')](function(_0x411ed6){_0x2c02d6['count']=_0x411ed6;if(_0x323c50[_0x44b8('0x3c')]['includeAll']){_0x28faa9[_0x44b8('0x4b')]=[{'all':!![]}];}return db[_0x44b8('0x36')][_0x44b8('0x4c')](_0x28faa9);})[_0x44b8('0x17')](function(_0x103d57){_0x2c02d6[_0x44b8('0x4d')]=_0x103d57;return _0x2c02d6;})['then'](respondWithFilteredResult(_0xeff999,_0x28faa9))[_0x44b8('0x4e')](handleError(_0xeff999,null));};exports[_0x44b8('0x4f')]=function(_0x10602c,_0x25d266){var _0x4ccc77={'raw':![],'where':{'id':_0x10602c[_0x44b8('0x50')]['id']}},_0x4e4ed1={};_0x4e4ed1[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')][_0x44b8('0x37')]);_0x4e4ed1['query']=_[_0x44b8('0x3d')](_0x10602c[_0x44b8('0x3c')]);_0x4e4ed1[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x4e4ed1[_0x44b8('0x3b')],_0x4e4ed1['query']);_0x4ccc77['attributes']=_[_0x44b8('0x3f')](_0x4e4ed1['model'],qs[_0x44b8('0x41')](_0x10602c['query'][_0x44b8('0x41')]));_0x4ccc77[_0x44b8('0x40')]=_0x4ccc77[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4ccc77[_0x44b8('0x40')]:_0x4e4ed1[_0x44b8('0x3b')];if(_0x10602c[_0x44b8('0x3c')]['includeAll']){_0x4ccc77[_0x44b8('0x4b')]=[{'all':!![]}];}_0x4ccc77=_[_0x44b8('0x47')]({},_0x4ccc77,_0x10602c[_0x44b8('0x4a')]);return db['Trunk'][_0x44b8('0x52')](_0x4ccc77)[_0x44b8('0x17')](handleEntityNotFound(_0x25d266,null))[_0x44b8('0x17')](respondWithResult(_0x25d266,null))[_0x44b8('0x4e')](handleError(_0x25d266,null));};exports['clone']=function(_0x399d6b,_0x308f7b){var _0x4a6e55={'where':{'id':_0x399d6b[_0x44b8('0x50')]['id']}},_0x3de425={};_0x3de425[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')]['rawAttributes']);_0x4a6e55['attributes']=_[_0x44b8('0x3f')](_0x3de425[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x4a6e55[_0x44b8('0x40')]=_0x4a6e55[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4a6e55[_0x44b8('0x40')]:_0x3de425[_0x44b8('0x3b')];if(_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]){_0x4a6e55['include']=[{'all':!![]}];}_0x4a6e55=_[_0x44b8('0x47')]({},_0x4a6e55,_0x399d6b[_0x44b8('0x4a')]);return db[_0x44b8('0x36')][_0x44b8('0x52')](_0x4a6e55)[_0x44b8('0x17')](handleEntityNotFound(_0x308f7b,null))[_0x44b8('0x17')](function(_0x426a6a){if(_0x426a6a){var _0x172ff3=_0x426a6a[_0x44b8('0x54')]({'plain':!![]});_0x172ff3=qs[_0x44b8('0x55')](_0x172ff3,['id',_0x44b8('0x56'),_0x44b8('0x57')]);_0x399d6b[_0x44b8('0x58')]=_[_0x44b8('0x55')](_0x399d6b[_0x44b8('0x58')],['id',_0x44b8('0x56'),_0x44b8('0x57')]);return db[_0x44b8('0x36')]['create'](_[_0x44b8('0x47')](_0x172ff3,_0x399d6b[_0x44b8('0x58')]),{'include':_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]?[{'all':!![]}]:undefined})[_0x44b8('0x17')](function(_0x29ed5d){var _0x2ecf65=_0x399d6b['user'][_0x44b8('0x54')]({'plain':!![]});if(!_0x2ecf65)throw new Error(_0x44b8('0x59'));if(_0x2ecf65['role']===_0x44b8('0x5a')){var _0x3354bd=_0x29ed5d['get']({'plain':!![]});var _0x37e42e=_0x44b8('0x30');return db[_0x44b8('0x5b')]['find']({'where':{'name':_0x37e42e,'userProfileId':_0x2ecf65[_0x44b8('0x5c')]},'raw':!![]})['then'](function(_0x36cdd8){if(_0x36cdd8&&_0x36cdd8['autoAssociation']===0x0){return db[_0x44b8('0x31')][_0x44b8('0x5d')]({'name':_0x3354bd[_0x44b8('0x33')],'resourceId':_0x3354bd['id'],'type':_0x36cdd8[_0x44b8('0x33')],'sectionId':_0x36cdd8['id']},{})[_0x44b8('0x17')](function(){return _0x29ed5d;});}else{return _0x29ed5d;}})[_0x44b8('0x4e')](function(_0x4c7edd){logger[_0x44b8('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c7edd);throw _0x4c7edd;});}return _0x29ed5d;});}})[_0x44b8('0x17')](respondWithResult(_0x308f7b,0xc9))[_0x44b8('0x4e')](handleError(_0x308f7b,null));};exports['create']=function(_0x3f9438,_0x1ee26b,_0x1cf31f){var _0x30d60f;return db[_0x44b8('0x36')][_0x44b8('0x5d')](_0x3f9438[_0x44b8('0x58')],{'raw':!![]})[_0x44b8('0x17')](function(_0x3f9102){_0x30d60f=_0x3f9102;return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0x52381a){var _0xd20d0=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],_0x44b8('0x60')),_0x44b8('0x61'));var _0x5bff09=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],_0x44b8('0x63')),_0x44b8('0x61'));var _0x59060b=ejs[_0x44b8('0x64')](_0xd20d0,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x59060b);if(_0x30d60f[_0x44b8('0x67')]){var _0x2e02d7=ejs[_0x44b8('0x64')](_0x5bff09,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x2e02d7);}})['then'](function(){return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x5d'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x17')](function(){var _0x5b26e8=_0x3f9438['user']['get']({'plain':!![]});if(!_0x5b26e8)throw new Error(_0x44b8('0x59'));if(_0x5b26e8[_0x44b8('0x6b')]===_0x44b8('0x5a')){var _0x46e20f=_0x30d60f[_0x44b8('0x54')]({'plain':!![]});return db['UserProfileSection'][_0x44b8('0x52')]({'where':{'name':'Trunks','userProfileId':_0x5b26e8[_0x44b8('0x5c')]},'raw':!![]})[_0x44b8('0x17')](function(_0xea2c3e){if(_0xea2c3e&&_0xea2c3e['autoAssociation']===0x0){return db['UserProfileResource'][_0x44b8('0x5d')]({'name':_0x46e20f[_0x44b8('0x33')],'resourceId':_0x46e20f['id'],'type':_0xea2c3e[_0x44b8('0x33')],'sectionId':_0xea2c3e['id']},{})['then'](function(){return _0x30d60f;});}else{return _0x30d60f;}})[_0x44b8('0x4e')](function(_0x36f217){logger[_0x44b8('0x1b')](_0x44b8('0x6c'),_0x36f217);throw _0x36f217;});}return _0x30d60f;})[_0x44b8('0x17')](respondWithResult(_0x1ee26b,0xc9))['catch'](handleError(_0x1ee26b,null));};exports[_0x44b8('0x2e')]=function(_0x1888f8,_0xbbdab9,_0x2a8ccc){var _0x220f1b;return db['Trunk'][_0x44b8('0x52')]({'where':{'id':_0x1888f8[_0x44b8('0x50')]['id']}})[_0x44b8('0x17')](handleEntityNotFound(_0xbbdab9,null))[_0x44b8('0x17')](saveUpdates(_0x1888f8[_0x44b8('0x58')],null))[_0x44b8('0x17')](function(_0x1c7ef2){if(_0x1c7ef2){_0x220f1b=_0x1c7ef2;return db['Trunk'][_0x44b8('0x4c')]({'raw':!![]});}})[_0x44b8('0x17')](function(_0x4c3fea){if(_0x4c3fea){var _0x3bb7d8=fs[_0x44b8('0x5e')](path['join'](config[_0x44b8('0x62')],'server/files/templates/trunk.ejs'),'utf8');var _0x31d3b6=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0x36334a=ejs[_0x44b8('0x64')](_0x3bb7d8,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x36334a);var _0x1a5621=ejs[_0x44b8('0x64')](_0x31d3b6,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x1a5621);return respondWithRpcPromise('Reload',_0x44b8('0x2e'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x55f4e4){if(_0x55f4e4){return _0x220f1b;}})[_0x44b8('0x17')](respondWithResult(_0xbbdab9,null))['catch'](handleError(_0xbbdab9,null));};exports[_0x44b8('0x2f')]=function(_0x1e37fd,_0x268e1e,_0x306793){var _0x3a9780;return db[_0x44b8('0x36')][_0x44b8('0x52')]({'where':{'id':_0x1e37fd[_0x44b8('0x50')]['id']}})['then'](handleEntityNotFound(_0x268e1e,null))[_0x44b8('0x17')](removeEntity(_0x268e1e,null))[_0x44b8('0x17')](function(){return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0xee44b3){var _0x10034d=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/trunk.ejs'),_0x44b8('0x61'));var _0x553aa9=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],'server/files/templates/registry.ejs'),'utf8');var _0x4b22e7=ejs[_0x44b8('0x64')](_0x10034d,{'trunks':_0xee44b3});var _0x4860af=ejs[_0x44b8('0x64')](_0x553aa9,{'trunks':_0xee44b3});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x4b22e7);fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x4860af);return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x2f'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x4e')](handleError(_0x268e1e,null));};
\ No newline at end of file
+var _0x9957=['clone','includeAll','merge','get','omit','createdAt','updatedAt','body','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findAll','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','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','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','update','destroy','Trunks','stack','name','send','map','Trunk','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','filter','options','include','rows','show','params','find'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_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'];var jayson=require(_0x7995('0x1b'));var client=jayson[_0x7995('0x1c')][_0x7995('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x23999f,_0x2bbe7a,_0x4cc004,_0x58f5ad){return new BPromise(function(_0x2b4e94,_0x2233dd){var _0x24b5bb=_0x58f5ad||client;return _0x24b5bb[_0x7995('0x1e')](_0x23999f,_0x4cc004)[_0x7995('0x1f')](function(_0x1a5310){logger[_0x7995('0x20')](_0x7995('0x21'),_0x2bbe7a,'request\x20sent');logger[_0x7995('0x22')]('Trunk,\x20%s,\x20%s,\x20%s',_0x2bbe7a,_0x7995('0x23'),JSON[_0x7995('0x24')](_0x1a5310));if(_0x1a5310[_0x7995('0x25')]){if(_0x1a5310[_0x7995('0x25')][_0x7995('0x26')]===0x1f4){logger[_0x7995('0x25')]('Trunk,\x20%s,\x20%s',_0x2bbe7a,_0x1a5310['error'][_0x7995('0x27')]);return _0x2233dd(_0x1a5310['error']['message']);}logger[_0x7995('0x25')](_0x7995('0x21'),_0x2bbe7a,_0x1a5310['error'][_0x7995('0x27')]);return _0x2b4e94(_0x1a5310['error']['message']);}else{logger[_0x7995('0x20')](_0x7995('0x21'),_0x2bbe7a,_0x7995('0x23'));_0x2b4e94(_0x1a5310[_0x7995('0x28')][_0x7995('0x27')]);}})[_0x7995('0x29')](function(_0x5d40ae){logger[_0x7995('0x25')](_0x7995('0x21'),_0x2bbe7a,_0x5d40ae);_0x2233dd(_0x5d40ae);});});}function respondWithStatusCode(_0x204507,_0x285437){_0x285437=_0x285437||0xcc;return function(_0x563799){if(_0x563799){return _0x204507[_0x7995('0x2a')](_0x285437);}return _0x204507[_0x7995('0x2b')](_0x285437)[_0x7995('0x2c')]();};}function respondWithResult(_0x59405a,_0x39df42){_0x39df42=_0x39df42||0xc8;return function(_0x34e70c){if(_0x34e70c){return _0x59405a[_0x7995('0x2b')](_0x39df42)[_0x7995('0x2d')](_0x34e70c);}};}function respondWithFilteredResult(_0x3a3fcf,_0x2a307e){return function(_0x56691a){if(_0x56691a){var _0x47625f=typeof _0x2a307e['offset']===_0x7995('0x2e')&&typeof _0x2a307e[_0x7995('0x2f')]===_0x7995('0x2e');var _0x132a42=_0x56691a[_0x7995('0x30')];var _0x4b6f99=_0x47625f?0x0:_0x2a307e[_0x7995('0x31')];var _0x514445=_0x47625f?_0x56691a[_0x7995('0x30')]:_0x2a307e[_0x7995('0x31')]+_0x2a307e[_0x7995('0x2f')];var _0x574574;if(_0x514445>=_0x132a42){_0x514445=_0x132a42;_0x574574=0xc8;}else{_0x574574=0xce;}_0x3a3fcf['status'](_0x574574);return _0x3a3fcf['set'](_0x7995('0x32'),_0x4b6f99+'-'+_0x514445+'/'+_0x132a42)[_0x7995('0x2d')](_0x56691a);}return null;};}function patchUpdates(_0x327a81){return function(_0x2b874d){try{jsonpatch[_0x7995('0x33')](_0x2b874d,_0x327a81,!![]);}catch(_0x1ca460){return BPromise['reject'](_0x1ca460);}return _0x2b874d['save']();};}function saveUpdates(_0xfa8f15,_0x5524af){return function(_0x553671){if(_0x553671){return _0x553671[_0x7995('0x34')](_0xfa8f15)[_0x7995('0x1f')](function(_0x1e9fa4){return _0x1e9fa4;});}return null;};}function removeEntity(_0x1f7d27,_0x510841){return function(_0x44309d){if(_0x44309d){return _0x44309d[_0x7995('0x35')]()['then'](function(){var _0x48db25=_0x44309d['get']({'plain':!![]});var _0x45bc5e=_0x7995('0x36');return db['UserProfileResource'][_0x7995('0x35')]({'where':{'type':_0x45bc5e,'resourceId':_0x48db25['id']}})['then'](function(){return _0x44309d;});})[_0x7995('0x1f')](function(){_0x1f7d27[_0x7995('0x2b')](0xcc)[_0x7995('0x2c')]();});}};}function handleEntityNotFound(_0x5014d2,_0x52d76d){return function(_0x36d057){if(!_0x36d057){_0x5014d2['sendStatus'](0x194);}return _0x36d057;};}function handleError(_0x5d2428,_0x3e99cd){_0x3e99cd=_0x3e99cd||0x1f4;return function(_0xe328b1){logger['error'](_0xe328b1[_0x7995('0x37')]);if(_0xe328b1[_0x7995('0x38')]){delete _0xe328b1[_0x7995('0x38')];}_0x5d2428[_0x7995('0x2b')](_0x3e99cd)[_0x7995('0x39')](_0xe328b1);};}exports['index']=function(_0x2d4285,_0x242713){var _0xf612e6={},_0x1d60b8={},_0x4b1541={'count':0x0,'rows':[]};var _0x2be2c0=_[_0x7995('0x3a')](db[_0x7995('0x3b')][_0x7995('0x3c')],function(_0x1f5bee){return{'name':_0x1f5bee[_0x7995('0x3d')],'type':_0x1f5bee['type'][_0x7995('0x3e')]};});_0x1d60b8[_0x7995('0x3f')]=_[_0x7995('0x3a')](_0x2be2c0,_0x7995('0x38'));_0x1d60b8[_0x7995('0x40')]=_[_0x7995('0x41')](_0x2d4285[_0x7995('0x40')]);_0x1d60b8[_0x7995('0x42')]=_[_0x7995('0x43')](_0x1d60b8[_0x7995('0x3f')],_0x1d60b8[_0x7995('0x40')]);_0xf612e6[_0x7995('0x44')]=_[_0x7995('0x43')](_0x1d60b8['model'],qs['fields'](_0x2d4285[_0x7995('0x40')][_0x7995('0x45')]));_0xf612e6['attributes']=_0xf612e6['attributes'][_0x7995('0x46')]?_0xf612e6['attributes']:_0x1d60b8['model'];if(!_0x2d4285[_0x7995('0x40')][_0x7995('0x47')](_0x7995('0x48'))){_0xf612e6['limit']=qs[_0x7995('0x2f')](_0x2d4285['query'][_0x7995('0x2f')]);_0xf612e6['offset']=qs['offset'](_0x2d4285[_0x7995('0x40')][_0x7995('0x31')]);}_0xf612e6[_0x7995('0x49')]=qs[_0x7995('0x4a')](_0x2d4285['query'][_0x7995('0x4a')]);_0xf612e6[_0x7995('0x4b')]=qs[_0x7995('0x42')](_[_0x7995('0x4c')](_0x2d4285['query'],_0x1d60b8['filters']),_0x2be2c0);if(_0x2d4285[_0x7995('0x40')]['filter']){_0xf612e6[_0x7995('0x4b')]=_['merge'](_0xf612e6[_0x7995('0x4b')],{'$or':_['map'](_0x2be2c0,function(_0x1e795e){if(_0x1e795e[_0x7995('0x4d')]!=='VIRTUAL'){var _0x3e9e62={};_0x3e9e62[_0x1e795e[_0x7995('0x38')]]={'$like':'%'+_0x2d4285[_0x7995('0x40')][_0x7995('0x4e')]+'%'};return _0x3e9e62;}})});}_0xf612e6=_['merge']({},_0xf612e6,_0x2d4285[_0x7995('0x4f')]);var _0x3e787d={'where':_0xf612e6[_0x7995('0x4b')]};return db['Trunk'][_0x7995('0x30')](_0x3e787d)[_0x7995('0x1f')](function(_0x511567){_0x4b1541[_0x7995('0x30')]=_0x511567;if(_0x2d4285[_0x7995('0x40')]['includeAll']){_0xf612e6[_0x7995('0x50')]=[{'all':!![]}];}return db[_0x7995('0x3b')]['findAll'](_0xf612e6);})[_0x7995('0x1f')](function(_0x5843ba){_0x4b1541[_0x7995('0x51')]=_0x5843ba;return _0x4b1541;})[_0x7995('0x1f')](respondWithFilteredResult(_0x242713,_0xf612e6))[_0x7995('0x29')](handleError(_0x242713,null));};exports[_0x7995('0x52')]=function(_0xddf537,_0x14b537){var _0x1579b9={'raw':![],'where':{'id':_0xddf537[_0x7995('0x53')]['id']}},_0x4d46bc={};_0x4d46bc[_0x7995('0x3f')]=_[_0x7995('0x41')](db['Trunk'][_0x7995('0x3c')]);_0x4d46bc[_0x7995('0x40')]=_[_0x7995('0x41')](_0xddf537['query']);_0x4d46bc['filters']=_['intersection'](_0x4d46bc[_0x7995('0x3f')],_0x4d46bc[_0x7995('0x40')]);_0x1579b9['attributes']=_[_0x7995('0x43')](_0x4d46bc[_0x7995('0x3f')],qs[_0x7995('0x45')](_0xddf537[_0x7995('0x40')][_0x7995('0x45')]));_0x1579b9['attributes']=_0x1579b9[_0x7995('0x44')]['length']?_0x1579b9[_0x7995('0x44')]:_0x4d46bc[_0x7995('0x3f')];if(_0xddf537[_0x7995('0x40')]['includeAll']){_0x1579b9['include']=[{'all':!![]}];}_0x1579b9=_['merge']({},_0x1579b9,_0xddf537['options']);return db[_0x7995('0x3b')][_0x7995('0x54')](_0x1579b9)[_0x7995('0x1f')](handleEntityNotFound(_0x14b537,null))[_0x7995('0x1f')](respondWithResult(_0x14b537,null))[_0x7995('0x29')](handleError(_0x14b537,null));};exports[_0x7995('0x55')]=function(_0x1f4270,_0xda6ce8){var _0x328671={'where':{'id':_0x1f4270[_0x7995('0x53')]['id']}},_0x17ecd3={};_0x17ecd3[_0x7995('0x3f')]=_[_0x7995('0x41')](db[_0x7995('0x3b')][_0x7995('0x3c')]);_0x328671[_0x7995('0x44')]=_[_0x7995('0x43')](_0x17ecd3[_0x7995('0x3f')],qs[_0x7995('0x45')](_0x1f4270['query'][_0x7995('0x45')]));_0x328671[_0x7995('0x44')]=_0x328671[_0x7995('0x44')][_0x7995('0x46')]?_0x328671['attributes']:_0x17ecd3['model'];if(_0x1f4270[_0x7995('0x40')][_0x7995('0x56')]){_0x328671[_0x7995('0x50')]=[{'all':!![]}];}_0x328671=_[_0x7995('0x57')]({},_0x328671,_0x1f4270['options']);return db[_0x7995('0x3b')][_0x7995('0x54')](_0x328671)[_0x7995('0x1f')](handleEntityNotFound(_0xda6ce8,null))[_0x7995('0x1f')](function(_0x502d43){if(_0x502d43){var _0x5e2d97=_0x502d43[_0x7995('0x58')]({'plain':!![]});_0x5e2d97=qs[_0x7995('0x59')](_0x5e2d97,['id',_0x7995('0x5a'),_0x7995('0x5b')]);_0x1f4270[_0x7995('0x5c')]=_[_0x7995('0x59')](_0x1f4270[_0x7995('0x5c')],['id',_0x7995('0x5a'),_0x7995('0x5b')]);return db['Trunk'][_0x7995('0x5d')](_[_0x7995('0x57')](_0x5e2d97,_0x1f4270[_0x7995('0x5c')]),{'include':_0x1f4270[_0x7995('0x40')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x3053fd){var _0xebb5c8=_0x1f4270['user'][_0x7995('0x58')]({'plain':!![]});if(!_0xebb5c8)throw new Error(_0x7995('0x5e'));if(_0xebb5c8[_0x7995('0x5f')]===_0x7995('0x60')){var _0x32cb04=_0x3053fd['get']({'plain':!![]});var _0x457d09='Trunks';return db[_0x7995('0x61')][_0x7995('0x54')]({'where':{'name':_0x457d09,'userProfileId':_0xebb5c8[_0x7995('0x62')]},'raw':!![]})[_0x7995('0x1f')](function(_0x4388c1){if(_0x4388c1&&_0x4388c1[_0x7995('0x63')]===0x0){return db[_0x7995('0x64')][_0x7995('0x5d')]({'name':_0x32cb04[_0x7995('0x38')],'resourceId':_0x32cb04['id'],'type':_0x4388c1[_0x7995('0x38')],'sectionId':_0x4388c1['id']},{})[_0x7995('0x1f')](function(){return _0x3053fd;});}else{return _0x3053fd;}})[_0x7995('0x29')](function(_0x56eb85){logger[_0x7995('0x25')](_0x7995('0x65'),_0x56eb85);throw _0x56eb85;});}return _0x3053fd;});}})[_0x7995('0x1f')](respondWithResult(_0xda6ce8,0xc9))[_0x7995('0x29')](handleError(_0xda6ce8,null));};exports[_0x7995('0x5d')]=function(_0x54a2e0,_0x4b54f2,_0x268fde){var _0x87e38d;return db[_0x7995('0x3b')][_0x7995('0x5d')](_0x54a2e0['body'],{'raw':!![]})[_0x7995('0x1f')](function(_0x50a12e){_0x87e38d=_0x50a12e;return db['Trunk'][_0x7995('0x66')]({'raw':!![]});})[_0x7995('0x1f')](function(_0x3f0a71){var _0x44bf2b=fs[_0x7995('0x67')](path[_0x7995('0x68')](config[_0x7995('0x69')],_0x7995('0x6a')),_0x7995('0x6b'));var _0x2466df=fs['readFileSync'](path[_0x7995('0x68')](config[_0x7995('0x69')],_0x7995('0x6c')),'utf8');var _0x1fe1cb=ejs[_0x7995('0x6d')](_0x44bf2b,{'trunks':_0x3f0a71||[]});fs[_0x7995('0x6e')](_0x7995('0x6f'),_0x1fe1cb);if(_0x87e38d[_0x7995('0x70')]){var _0x51ab1e=ejs[_0x7995('0x6d')](_0x2466df,{'trunks':_0x3f0a71||[]});fs[_0x7995('0x6e')](_0x7995('0x71'),_0x51ab1e);}})[_0x7995('0x1f')](function(){return respondWithRpcPromise(_0x7995('0x72'),'create',{'module':'chan_sip.so'});})[_0x7995('0x1f')](function(){var _0xfe1105=_0x54a2e0[_0x7995('0x60')][_0x7995('0x58')]({'plain':!![]});if(!_0xfe1105)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfe1105[_0x7995('0x5f')]===_0x7995('0x60')){var _0x54b955=_0x87e38d['get']({'plain':!![]});return db[_0x7995('0x61')][_0x7995('0x54')]({'where':{'name':'Trunks','userProfileId':_0xfe1105[_0x7995('0x62')]},'raw':!![]})['then'](function(_0x3758f9){if(_0x3758f9&&_0x3758f9[_0x7995('0x63')]===0x0){return db['UserProfileResource']['create']({'name':_0x54b955[_0x7995('0x38')],'resourceId':_0x54b955['id'],'type':_0x3758f9['name'],'sectionId':_0x3758f9['id']},{})[_0x7995('0x1f')](function(){return _0x87e38d;});}else{return _0x87e38d;}})[_0x7995('0x29')](function(_0x3dd197){logger[_0x7995('0x25')](_0x7995('0x65'),_0x3dd197);throw _0x3dd197;});}return _0x87e38d;})[_0x7995('0x1f')](respondWithResult(_0x4b54f2,0xc9))[_0x7995('0x29')](handleError(_0x4b54f2,null));};exports[_0x7995('0x34')]=function(_0x29e0ee,_0x117317,_0x1ab590){var _0x16108c;return db[_0x7995('0x3b')][_0x7995('0x54')]({'where':{'id':_0x29e0ee[_0x7995('0x53')]['id']}})[_0x7995('0x1f')](handleEntityNotFound(_0x117317,null))[_0x7995('0x1f')](saveUpdates(_0x29e0ee[_0x7995('0x5c')],null))[_0x7995('0x1f')](function(_0xa2fc8e){if(_0xa2fc8e){_0x16108c=_0xa2fc8e;return db[_0x7995('0x3b')][_0x7995('0x66')]({'raw':!![]});}})[_0x7995('0x1f')](function(_0x280fbb){if(_0x280fbb){var _0x260ef1=fs[_0x7995('0x67')](path[_0x7995('0x68')](config[_0x7995('0x69')],'server/files/templates/trunk.ejs'),_0x7995('0x6b'));var _0x10f4ca=fs['readFileSync'](path['join'](config[_0x7995('0x69')],_0x7995('0x6c')),_0x7995('0x6b'));var _0x38acda=ejs[_0x7995('0x6d')](_0x260ef1,{'trunks':_0x280fbb||[]});fs[_0x7995('0x6e')]('/etc/asterisk/sip_xcally_trunks.conf',_0x38acda);var _0x2f8a2d=ejs[_0x7995('0x6d')](_0x10f4ca,{'trunks':_0x280fbb||[]});fs[_0x7995('0x6e')](_0x7995('0x71'),_0x2f8a2d);return respondWithRpcPromise(_0x7995('0x72'),_0x7995('0x34'),{'module':_0x7995('0x73')});}return null;})[_0x7995('0x1f')](function(_0x560095){if(_0x560095){return _0x16108c;}})[_0x7995('0x1f')](respondWithResult(_0x117317,null))[_0x7995('0x29')](handleError(_0x117317,null));};exports['destroy']=function(_0x479271,_0xd24c64,_0xf8c2ed){var _0x18e1a2;return db[_0x7995('0x3b')][_0x7995('0x54')]({'where':{'id':_0x479271['params']['id']}})[_0x7995('0x1f')](handleEntityNotFound(_0xd24c64,null))[_0x7995('0x1f')](removeEntity(_0xd24c64,null))['then'](function(){return db[_0x7995('0x3b')][_0x7995('0x66')]({'raw':!![]});})['then'](function(_0x1535a3){var _0x4a5bc5=fs[_0x7995('0x67')](path[_0x7995('0x68')](config[_0x7995('0x69')],_0x7995('0x6a')),_0x7995('0x6b'));var _0x5d16da=fs[_0x7995('0x67')](path[_0x7995('0x68')](config[_0x7995('0x69')],'server/files/templates/registry.ejs'),_0x7995('0x6b'));var _0x3f3434=ejs[_0x7995('0x6d')](_0x4a5bc5,{'trunks':_0x1535a3});var _0x308a26=ejs['render'](_0x5d16da,{'trunks':_0x1535a3});fs[_0x7995('0x6e')](_0x7995('0x6f'),_0x3f3434);fs[_0x7995('0x6e')]('/etc/asterisk/sip_xcally_registers.conf',_0x308a26);return respondWithRpcPromise('Reload',_0x7995('0x35'),{'module':_0x7995('0x73')});})['catch'](handleError(_0xd24c64,null));};
\ No newline at end of file
index 2a0c504..784fa6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e72=['request-promise','../../config/environment','./trunk.attributes','exports','define','lodash','util','api','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5e72,0x9e));var _0x25e7=function(_0x2e0f43,_0x32a8f5){_0x2e0f43=_0x2e0f43-0x0;var _0x21c5da=_0x5e72[_0x2e0f43];return _0x21c5da;};'use strict';var _=require(_0x25e7('0x0'));var util=require(_0x25e7('0x1'));var logger=require('../../config/logger')(_0x25e7('0x2'));var moment=require('moment');var BPromise=require(_0x25e7('0x3'));var rp=require(_0x25e7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x25e7('0x5'));var attributes=require(_0x25e7('0x6'));module[_0x25e7('0x7')]=function(_0xa7d186,_0x1aae26){return _0xa7d186[_0x25e7('0x8')]('Trunk',attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e9=['bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports','define','Trunk','tools_trunks','lodash','util','../../config/logger','moment'];(function(_0x1e7f2b,_0x48c685){var _0x2487a6=function(_0x2d25de){while(--_0x2d25de){_0x1e7f2b['push'](_0x1e7f2b['shift']());}};_0x2487a6(++_0x48c685);}(_0xb7e9,0x122));var _0x9b7e=function(_0x388eea,_0x340518){_0x388eea=_0x388eea-0x0;var _0x4a175b=_0xb7e9[_0x388eea];return _0x4a175b;};'use strict';var _=require(_0x9b7e('0x0'));var util=require(_0x9b7e('0x1'));var logger=require(_0x9b7e('0x2'))('api');var moment=require(_0x9b7e('0x3'));var BPromise=require(_0x9b7e('0x4'));var rp=require(_0x9b7e('0x5'));var fs=require('fs');var path=require(_0x9b7e('0x6'));var rimraf=require(_0x9b7e('0x7'));var config=require(_0x9b7e('0x8'));var attributes=require(_0x9b7e('0x9'));module[_0x9b7e('0xa')]=function(_0x423e44,_0x10996a){return _0x423e44[_0x9b7e('0xb')](_0x9b7e('0xc'),attributes,{'tableName':_0x9b7e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21f8efb..1a6ce46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28f1=['Trunk','findAll','options','raw','where','attributes','limit','include','map','model','ShowTrunk','find','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetTrunk'];(function(_0x489969,_0x2a1937){var _0x17d063=function(_0x264fad){while(--_0x264fad){_0x489969['push'](_0x489969['shift']());}};_0x17d063(++_0x2a1937);}(_0x28f1,0x9c));var _0x128f=function(_0x3d2fef,_0x4eb5e8){_0x3d2fef=_0x3d2fef-0x0;var _0x4b8610=_0x28f1[_0x3d2fef];return _0x4b8610;};'use strict';var _=require(_0x128f('0x0'));var util=require('util');var moment=require(_0x128f('0x1'));var BPromise=require('bluebird');var rs=require(_0x128f('0x2'));var fs=require('fs');var Redis=require(_0x128f('0x3'));var db=require(_0x128f('0x4'))['db'];var utils=require(_0x128f('0x5'));var logger=require(_0x128f('0x6'))(_0x128f('0x7'));var config=require(_0x128f('0x8'));var jayson=require(_0x128f('0x9'));var client=jayson[_0x128f('0xa')][_0x128f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x261668,_0x2f74a4,_0x52adc2){return new BPromise(function(_0x3b5bb0,_0x3e67dc){return client['request'](_0x261668,_0x52adc2)[_0x128f('0xc')](function(_0xc84702){logger[_0x128f('0xd')](_0x128f('0xe'),_0x2f74a4,_0x128f('0xf'));logger[_0x128f('0x10')]('Trunk,\x20%s,\x20%s,\x20%s',_0x2f74a4,'request\x20sent',JSON[_0x128f('0x11')](_0xc84702));if(_0xc84702[_0x128f('0x12')]){if(_0xc84702[_0x128f('0x12')][_0x128f('0x13')]===0x1f4){logger[_0x128f('0x12')]('Trunk,\x20%s,\x20%s',_0x2f74a4,_0xc84702[_0x128f('0x12')]['message']);return _0x3e67dc(_0xc84702[_0x128f('0x12')][_0x128f('0x14')]);}logger[_0x128f('0x12')](_0x128f('0xe'),_0x2f74a4,_0xc84702[_0x128f('0x12')]['message']);return _0x3b5bb0(_0xc84702[_0x128f('0x12')][_0x128f('0x14')]);}else{logger['info'](_0x128f('0xe'),_0x2f74a4,_0x128f('0xf'));_0x3b5bb0(_0xc84702[_0x128f('0x15')]['message']);}})[_0x128f('0x16')](function(_0x57aa3d){logger[_0x128f('0x12')](_0x128f('0xe'),_0x2f74a4,_0x57aa3d);_0x3e67dc(_0x57aa3d);});});}exports[_0x128f('0x17')]=function(_0x528fa3){var _0x58c108=this;return new Promise(function(_0x21c581,_0x888209){return db[_0x128f('0x18')][_0x128f('0x19')]({'raw':_0x528fa3[_0x128f('0x1a')]?_0x528fa3[_0x128f('0x1a')][_0x128f('0x1b')]===undefined?!![]:![]:!![],'where':_0x528fa3[_0x128f('0x1a')]?_0x528fa3[_0x128f('0x1a')][_0x128f('0x1c')]||null:null,'attributes':_0x528fa3[_0x128f('0x1a')]?_0x528fa3[_0x128f('0x1a')][_0x128f('0x1d')]||null:null,'limit':_0x528fa3[_0x128f('0x1a')]?_0x528fa3[_0x128f('0x1a')][_0x128f('0x1e')]||null:null,'include':_0x528fa3['options']?_0x528fa3['options'][_0x128f('0x1f')]?_[_0x128f('0x20')](_0x528fa3['options']['include'],function(_0x1b7ddc){return{'model':db[_0x1b7ddc[_0x128f('0x21')]],'as':_0x1b7ddc['as'],'attributes':_0x1b7ddc['attributes'],'include':_0x1b7ddc['include']?_['map'](_0x1b7ddc[_0x128f('0x1f')],function(_0x3d4d3a){return{'model':db[_0x3d4d3a['model']],'as':_0x3d4d3a['as'],'attributes':_0x3d4d3a[_0x128f('0x1d')],'include':_0x3d4d3a[_0x128f('0x1f')]?_[_0x128f('0x20')](_0x3d4d3a[_0x128f('0x1f')],function(_0x3af1bf){return{'model':db[_0x3af1bf[_0x128f('0x21')]],'as':_0x3af1bf['as'],'attributes':_0x3af1bf[_0x128f('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x128f('0xc')](function(_0x312d6c){logger[_0x128f('0xd')]('GetTrunk',_0x528fa3);logger[_0x128f('0x10')](_0x128f('0x17'),_0x528fa3,JSON[_0x128f('0x11')](_0x312d6c));_0x21c581(_0x312d6c);})['catch'](function(_0x35e952){logger[_0x128f('0x12')](_0x128f('0x17'),_0x35e952['message'],_0x528fa3);_0x888209(_0x58c108[_0x128f('0x12')](0x1f4,_0x35e952[_0x128f('0x14')]));});});};exports[_0x128f('0x22')]=function(_0x27e117){var _0x4dff87=this;return new Promise(function(_0x377d4e,_0x5cabb3){return db[_0x128f('0x18')][_0x128f('0x23')]({'raw':_0x27e117[_0x128f('0x1a')]?_0x27e117[_0x128f('0x1a')][_0x128f('0x1b')]===undefined?!![]:![]:!![],'where':_0x27e117[_0x128f('0x1a')]?_0x27e117[_0x128f('0x1a')][_0x128f('0x1c')]||null:null,'attributes':_0x27e117[_0x128f('0x1a')]?_0x27e117[_0x128f('0x1a')]['attributes']||null:null,'include':_0x27e117[_0x128f('0x1a')]?_0x27e117[_0x128f('0x1a')][_0x128f('0x1f')]?_[_0x128f('0x20')](_0x27e117[_0x128f('0x1a')][_0x128f('0x1f')],function(_0x154651){return{'model':db[_0x154651[_0x128f('0x21')]],'as':_0x154651['as'],'attributes':_0x154651[_0x128f('0x1d')],'include':_0x154651['include']?_[_0x128f('0x20')](_0x154651[_0x128f('0x1f')],function(_0x1b2b8c){return{'model':db[_0x1b2b8c[_0x128f('0x21')]],'as':_0x1b2b8c['as'],'attributes':_0x1b2b8c[_0x128f('0x1d')],'include':_0x1b2b8c[_0x128f('0x1f')]?_[_0x128f('0x20')](_0x1b2b8c[_0x128f('0x1f')],function(_0x1cc1db){return{'model':db[_0x1cc1db[_0x128f('0x21')]],'as':_0x1cc1db['as'],'attributes':_0x1cc1db[_0x128f('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x128f('0xc')](function(_0x4061ca){logger[_0x128f('0xd')]('ShowTrunk',_0x27e117);logger[_0x128f('0x10')](_0x128f('0x22'),_0x27e117,JSON[_0x128f('0x11')](_0x4061ca));_0x377d4e(_0x4061ca);})[_0x128f('0x16')](function(_0x57c1e7){logger[_0x128f('0x12')]('ShowTrunk',_0x57c1e7[_0x128f('0x14')],_0x27e117);_0x5cabb3(_0x4dff87[_0x128f('0x12')](0x1f4,_0x57c1e7[_0x128f('0x14')]));});});};
\ No newline at end of file
+var _0xcc45=['message','result','catch','GetTrunk','Trunk','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','ShowTrunk','find','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','then','info','request\x20sent','error','Trunk,\x20%s,\x20%s'];(function(_0x229722,_0xa7a1ba){var _0x3f8521=function(_0x606d28){while(--_0x606d28){_0x229722['push'](_0x229722['shift']());}};_0x3f8521(++_0xa7a1ba);}(_0xcc45,0x112));var _0x5cc4=function(_0x5412f2,_0x27bc0f){_0x5412f2=_0x5412f2-0x0;var _0x3294aa=_0xcc45[_0x5412f2];return _0x3294aa;};'use strict';var _=require('lodash');var util=require(_0x5cc4('0x0'));var moment=require(_0x5cc4('0x1'));var BPromise=require(_0x5cc4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5cc4('0x3'));var db=require(_0x5cc4('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5cc4('0x5'))(_0x5cc4('0x6'));var config=require('../../config/environment');var jayson=require(_0x5cc4('0x7'));var client=jayson[_0x5cc4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x156aed,_0x3334e4,_0x51658a){return new BPromise(function(_0x4b205a,_0x23a83f){return client['request'](_0x156aed,_0x51658a)[_0x5cc4('0x9')](function(_0x3fb11e){logger[_0x5cc4('0xa')]('Trunk,\x20%s,\x20%s',_0x3334e4,_0x5cc4('0xb'));logger['debug']('Trunk,\x20%s,\x20%s,\x20%s',_0x3334e4,_0x5cc4('0xb'),JSON['stringify'](_0x3fb11e));if(_0x3fb11e[_0x5cc4('0xc')]){if(_0x3fb11e[_0x5cc4('0xc')]['code']===0x1f4){logger['error'](_0x5cc4('0xd'),_0x3334e4,_0x3fb11e[_0x5cc4('0xc')][_0x5cc4('0xe')]);return _0x23a83f(_0x3fb11e[_0x5cc4('0xc')][_0x5cc4('0xe')]);}logger[_0x5cc4('0xc')]('Trunk,\x20%s,\x20%s',_0x3334e4,_0x3fb11e[_0x5cc4('0xc')]['message']);return _0x4b205a(_0x3fb11e[_0x5cc4('0xc')][_0x5cc4('0xe')]);}else{logger['info'](_0x5cc4('0xd'),_0x3334e4,_0x5cc4('0xb'));_0x4b205a(_0x3fb11e[_0x5cc4('0xf')]['message']);}})[_0x5cc4('0x10')](function(_0xe338c9){logger['error'](_0x5cc4('0xd'),_0x3334e4,_0xe338c9);_0x23a83f(_0xe338c9);});});}exports[_0x5cc4('0x11')]=function(_0x2f7302){var _0x414ad2=this;return new Promise(function(_0xa6b0ed,_0x2e4687){return db[_0x5cc4('0x12')][_0x5cc4('0x13')]({'raw':_0x2f7302[_0x5cc4('0x14')]?_0x2f7302[_0x5cc4('0x14')][_0x5cc4('0x15')]===undefined?!![]:![]:!![],'where':_0x2f7302[_0x5cc4('0x14')]?_0x2f7302[_0x5cc4('0x14')][_0x5cc4('0x16')]||null:null,'attributes':_0x2f7302[_0x5cc4('0x14')]?_0x2f7302['options'][_0x5cc4('0x17')]||null:null,'limit':_0x2f7302[_0x5cc4('0x14')]?_0x2f7302[_0x5cc4('0x14')][_0x5cc4('0x18')]||null:null,'include':_0x2f7302[_0x5cc4('0x14')]?_0x2f7302['options'][_0x5cc4('0x19')]?_['map'](_0x2f7302[_0x5cc4('0x14')][_0x5cc4('0x19')],function(_0x3c69c9){return{'model':db[_0x3c69c9['model']],'as':_0x3c69c9['as'],'attributes':_0x3c69c9[_0x5cc4('0x17')],'include':_0x3c69c9[_0x5cc4('0x19')]?_[_0x5cc4('0x1a')](_0x3c69c9[_0x5cc4('0x19')],function(_0x259c58){return{'model':db[_0x259c58[_0x5cc4('0x1b')]],'as':_0x259c58['as'],'attributes':_0x259c58['attributes'],'include':_0x259c58[_0x5cc4('0x19')]?_[_0x5cc4('0x1a')](_0x259c58['include'],function(_0x48f669){return{'model':db[_0x48f669['model']],'as':_0x48f669['as'],'attributes':_0x48f669['attributes']};}):[]};}):[]};}):[]:[]})[_0x5cc4('0x9')](function(_0x2aa6b){logger[_0x5cc4('0xa')]('GetTrunk',_0x2f7302);logger[_0x5cc4('0x1c')]('GetTrunk',_0x2f7302,JSON[_0x5cc4('0x1d')](_0x2aa6b));_0xa6b0ed(_0x2aa6b);})[_0x5cc4('0x10')](function(_0xd45455){logger['error'](_0x5cc4('0x11'),_0xd45455[_0x5cc4('0xe')],_0x2f7302);_0x2e4687(_0x414ad2[_0x5cc4('0xc')](0x1f4,_0xd45455['message']));});});};exports[_0x5cc4('0x1e')]=function(_0x10d93d){var _0x3c119a=this;return new Promise(function(_0x51ed45,_0x4ab515){return db[_0x5cc4('0x12')][_0x5cc4('0x1f')]({'raw':_0x10d93d['options']?_0x10d93d[_0x5cc4('0x14')][_0x5cc4('0x15')]===undefined?!![]:![]:!![],'where':_0x10d93d['options']?_0x10d93d[_0x5cc4('0x14')]['where']||null:null,'attributes':_0x10d93d[_0x5cc4('0x14')]?_0x10d93d[_0x5cc4('0x14')][_0x5cc4('0x17')]||null:null,'include':_0x10d93d[_0x5cc4('0x14')]?_0x10d93d[_0x5cc4('0x14')][_0x5cc4('0x19')]?_[_0x5cc4('0x1a')](_0x10d93d[_0x5cc4('0x14')][_0x5cc4('0x19')],function(_0x3d77d4){return{'model':db[_0x3d77d4['model']],'as':_0x3d77d4['as'],'attributes':_0x3d77d4[_0x5cc4('0x17')],'include':_0x3d77d4[_0x5cc4('0x19')]?_['map'](_0x3d77d4[_0x5cc4('0x19')],function(_0x343f8a){return{'model':db[_0x343f8a[_0x5cc4('0x1b')]],'as':_0x343f8a['as'],'attributes':_0x343f8a[_0x5cc4('0x17')],'include':_0x343f8a['include']?_[_0x5cc4('0x1a')](_0x343f8a[_0x5cc4('0x19')],function(_0x594949){return{'model':db[_0x594949[_0x5cc4('0x1b')]],'as':_0x594949['as'],'attributes':_0x594949['attributes']};}):[]};}):[]};}):[]:[]})[_0x5cc4('0x9')](function(_0x309818){logger[_0x5cc4('0xa')](_0x5cc4('0x1e'),_0x10d93d);logger[_0x5cc4('0x1c')](_0x5cc4('0x1e'),_0x10d93d,JSON['stringify'](_0x309818));_0x51ed45(_0x309818);})[_0x5cc4('0x10')](function(_0x4fda35){logger[_0x5cc4('0xc')](_0x5cc4('0x1e'),_0x4fda35[_0x5cc4('0xe')],_0x10d93d);_0x4ab515(_0x3c119a[_0x5cc4('0xc')](0x1f4,_0x4fda35[_0x5cc4('0xe')]));});});};
\ No newline at end of file
index d5166f1..97af611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3be8=['Router','../../components/auth/service','./user-setting.controller','put','isAuthenticated','update','exports','express'];(function(_0x567011,_0x273172){var _0x50ac02=function(_0x79f2ba){while(--_0x79f2ba){_0x567011['push'](_0x567011['shift']());}};_0x50ac02(++_0x273172);}(_0x3be8,0x15f));var _0x83be=function(_0x198e50,_0x1f8708){_0x198e50=_0x198e50-0x0;var _0x478867=_0x3be8[_0x198e50];return _0x478867;};'use strict';var express=require(_0x83be('0x0'));var router=express[_0x83be('0x1')]();var auth=require(_0x83be('0x2'));var controller=require(_0x83be('0x3'));router[_0x83be('0x4')]('/:id',auth[_0x83be('0x5')](),controller[_0x83be('0x6')]);module[_0x83be('0x7')]=router;
\ No newline at end of file
+var _0x1a54=['../../components/auth/service','put','/:id','isAuthenticated','update','exports','express','Router'];(function(_0x2d015c,_0x31bb7e){var _0x403093=function(_0x2dc795){while(--_0x2dc795){_0x2d015c['push'](_0x2d015c['shift']());}};_0x403093(++_0x31bb7e);}(_0x1a54,0x1c6));var _0x41a5=function(_0x1b874f,_0x5e1748){_0x1b874f=_0x1b874f-0x0;var _0x531574=_0x1a54[_0x1b874f];return _0x531574;};'use strict';var express=require(_0x41a5('0x0'));var router=express[_0x41a5('0x1')]();var auth=require(_0x41a5('0x2'));var controller=require('./user-setting.controller');router[_0x41a5('0x3')](_0x41a5('0x4'),auth[_0x41a5('0x5')](),controller[_0x41a5('0x6')]);module[_0x41a5('0x7')]=router;
\ No newline at end of file
index 4d5b03c..2259d57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06e5=['DATE','INTEGER','UserId','sequelize','error','warning','debug','exports','ENUM','BOOLEAN','TEXT'];(function(_0xb04cb1,_0x13b8e3){var _0x309445=function(_0x21422b){while(--_0x21422b){_0xb04cb1['push'](_0xb04cb1['shift']());}};_0x309445(++_0x13b8e3);}(_0x06e5,0xea));var _0x506e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x06e5[_0x56482c];return _0x5aae7a;};'use strict';var Sequelize=require(_0x506e('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x506e('0x1'),_0x506e('0x2'),'info',_0x506e('0x3')];module[_0x506e('0x4')]={'clientSideLoggingLevel':{'type':Sequelize[_0x506e('0x5')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x506e('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x506e('0x6')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x506e('0x7')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x506e('0x8')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x506e('0x9')],'unique':_0x506e('0xa')}};
\ No newline at end of file
+var _0x130f=['exports','ENUM','BOOLEAN','DATE','INTEGER','UserId','warning','info','debug'];(function(_0x2482a7,_0x89337){var _0x244c7c=function(_0x414efb){while(--_0x414efb){_0x2482a7['push'](_0x2482a7['shift']());}};_0x244c7c(++_0x89337);}(_0x130f,0xf0));var _0xf130=function(_0x50bc2e,_0x2d8ddc){_0x50bc2e=_0x50bc2e-0x0;var _0x4810c7=_0x130f[_0x50bc2e];return _0x4810c7;};'use strict';var Sequelize=require('sequelize');const CLIENT_SIDE_LOG_LEVELS=['error',_0xf130('0x0'),_0xf130('0x1'),_0xf130('0x2')];module[_0xf130('0x3')]={'clientSideLoggingLevel':{'type':Sequelize[_0xf130('0x4')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':'error','validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0xf130('0x5')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize['TEXT'],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0xf130('0x6')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0xf130('0x7')],'unique':_0xf130('0x8')}};
\ No newline at end of file
index 6815a8d..50f07d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d2=['role','admin','Unauthorized','params','UserSetting','find','then','body','catch','../../config/logger','api','../../config/environment','../../mysqldb','socket.io-emitter','redis','register','defaults','status','json','sendStatus','stack','name','send','update','user'];(function(_0x42c5a2,_0x38a2b9){var _0xbaf6e1=function(_0x357391){while(--_0x357391){_0x42c5a2['push'](_0x42c5a2['shift']());}};_0xbaf6e1(++_0x38a2b9);}(_0x55d2,0x9f));var _0x255d=function(_0x388096,_0x50b7c8){_0x388096=_0x388096-0x0;var _0x38c620=_0x55d2[_0x388096];return _0x38c620;};'use strict';var _=require('lodash');var Redis=require('ioredis');var logger=require(_0x255d('0x0'))(_0x255d('0x1'));var config=require(_0x255d('0x2'));var db=require(_0x255d('0x3'))['db'];var socket=require(_0x255d('0x4'))(new Redis(config[_0x255d('0x5')]));require('./user-setting.socket')[_0x255d('0x6')](socket);config[_0x255d('0x5')]=_[_0x255d('0x7')](config[_0x255d('0x5')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x4f93b4,_0x15469e){_0x15469e=_0x15469e||0xc8;return function(_0xcf66a2){if(_0xcf66a2){return _0x4f93b4[_0x255d('0x8')](_0x15469e)[_0x255d('0x9')](_0xcf66a2);}};}function saveUpdates(_0xacc790){return function(_0x5aaa28){if(_0x5aaa28){return _0x5aaa28['update'](_0xacc790)['then'](function(_0x51c2dc){return _0x51c2dc;});}return null;};}function handleEntityNotFound(_0x241e94){return function(_0x4aecf8){if(!_0x4aecf8){_0x241e94[_0x255d('0xa')](0x194);}return _0x4aecf8;};}function handleError(_0x2c3754,_0xb147de){_0xb147de=_0xb147de||0x1f4;return function(_0x49ec53){logger['error'](_0x49ec53[_0x255d('0xb')]);if(_0x49ec53[_0x255d('0xc')]){delete _0x49ec53[_0x255d('0xc')];}_0x2c3754[_0x255d('0x8')](_0xb147de)[_0x255d('0xd')](_0x49ec53);};}exports[_0x255d('0xe')]=function(_0xe59201,_0x460fa4){if(_0xe59201[_0x255d('0xf')][_0x255d('0x10')]!==_0x255d('0x11'))throw new Error(_0x255d('0x12'));if(isNaN(Number(_0xe59201[_0x255d('0x13')]['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0x255d('0x14')][_0x255d('0x15')]({'where':{'id':_0xe59201['params']['id']}})[_0x255d('0x16')](handleEntityNotFound(_0x460fa4,null))[_0x255d('0x16')](saveUpdates(_0xe59201[_0x255d('0x17')],null))[_0x255d('0x16')](respondWithResult(_0x460fa4,null))[_0x255d('0x18')](handleError(_0x460fa4,null));};
\ No newline at end of file
+var _0x6b19=['body','catch','lodash','ioredis','api','socket.io-emitter','redis','./user-setting.socket','register','status','update','then','sendStatus','error','name','send','user','role','admin','params','Invalid\x20user\x20setting\x20id','UserSetting','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6b19,0xe8));var _0x96b1=function(_0x5ce8cd,_0x54c250){_0x5ce8cd=_0x5ce8cd-0x0;var _0x3acc3f=_0x6b19[_0x5ce8cd];return _0x3acc3f;};'use strict';var _=require(_0x96b1('0x0'));var Redis=require(_0x96b1('0x1'));var logger=require('../../config/logger')(_0x96b1('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var socket=require(_0x96b1('0x3'))(new Redis(config[_0x96b1('0x4')]));require(_0x96b1('0x5'))[_0x96b1('0x6')](socket);config[_0x96b1('0x4')]=_['defaults'](config[_0x96b1('0x4')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x3e3e1a,_0x572fde){_0x572fde=_0x572fde||0xc8;return function(_0x57a23a){if(_0x57a23a){return _0x3e3e1a[_0x96b1('0x7')](_0x572fde)['json'](_0x57a23a);}};}function saveUpdates(_0x2ab6b7){return function(_0x4d2f1c){if(_0x4d2f1c){return _0x4d2f1c[_0x96b1('0x8')](_0x2ab6b7)[_0x96b1('0x9')](function(_0x366a60){return _0x366a60;});}return null;};}function handleEntityNotFound(_0x37612e){return function(_0x39eeb7){if(!_0x39eeb7){_0x37612e[_0x96b1('0xa')](0x194);}return _0x39eeb7;};}function handleError(_0x315a88,_0x5a87f3){_0x5a87f3=_0x5a87f3||0x1f4;return function(_0x52256e){logger[_0x96b1('0xb')](_0x52256e['stack']);if(_0x52256e['name']){delete _0x52256e[_0x96b1('0xc')];}_0x315a88[_0x96b1('0x7')](_0x5a87f3)[_0x96b1('0xd')](_0x52256e);};}exports['update']=function(_0x1372fd,_0x1af8c1){if(_0x1372fd[_0x96b1('0xe')][_0x96b1('0xf')]!==_0x96b1('0x10'))throw new Error('Unauthorized');if(isNaN(Number(_0x1372fd[_0x96b1('0x11')]['id'])))throw new Error(_0x96b1('0x12'));return db[_0x96b1('0x13')][_0x96b1('0x14')]({'where':{'id':_0x1372fd[_0x96b1('0x11')]['id']}})[_0x96b1('0x9')](handleEntityNotFound(_0x1af8c1,null))[_0x96b1('0x9')](saveUpdates(_0x1372fd[_0x96b1('0x15')],null))[_0x96b1('0x9')](respondWithResult(_0x1af8c1,null))[_0x96b1('0x16')](handleError(_0x1af8c1,null));};
\ No newline at end of file
index 744566d..1d39f89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd22=['save','update','emit','hasOwnProperty','exports'];(function(_0x55c204,_0x1944fb){var _0x4f7511=function(_0xabeb08){while(--_0xabeb08){_0x55c204['push'](_0x55c204['shift']());}};_0x4f7511(++_0x1944fb);}(_0xfd22,0xd2));var _0x2fd2=function(_0x3ff6da,_0x47f7b5){_0x3ff6da=_0x3ff6da-0x0;var _0x102c57=_0xfd22[_0x3ff6da];return _0x102c57;};'use strict';var EventEmitter=require('events');var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2fd2('0x0'),'afterUpdate':_0x2fd2('0x1'),'afterDestroy':'remove'};function emitEvent(_0x2a30ff){return function(_0x2e73a9,_0xa96dc7,_0x1e8296){UserSettingEvents[_0x2fd2('0x2')](_0x2a30ff+':'+_0x2e73a9['id'],_0x2e73a9);UserSettingEvents[_0x2fd2('0x2')](_0x2a30ff,_0x2e73a9);_0x1e8296(null);};}for(var e in events){if(events[_0x2fd2('0x3')](e)){var event=events[e];UserSetting['hook'](e,emitEvent(event));}}module[_0x2fd2('0x4')]=UserSettingEvents;
\ No newline at end of file
+var _0x3544=['save','update','emit','hasOwnProperty','exports','../../mysqldb','UserSetting','setMaxListeners'];(function(_0x28e9d2,_0x2b2bfa){var _0x4150a7=function(_0x5d8701){while(--_0x5d8701){_0x28e9d2['push'](_0x28e9d2['shift']());}};_0x4150a7(++_0x2b2bfa);}(_0x3544,0x1ad));var _0x4354=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0x3544[_0xc67528];return _0x38e26d;};'use strict';var EventEmitter=require('events');var UserSetting=require(_0x4354('0x0'))['db'][_0x4354('0x1')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x4354('0x2')](0x0);var events={'afterCreate':_0x4354('0x3'),'afterUpdate':_0x4354('0x4'),'afterDestroy':'remove'};function emitEvent(_0xade43e){return function(_0x2fab97,_0x7d9e8c,_0x49c9be){UserSettingEvents['emit'](_0xade43e+':'+_0x2fab97['id'],_0x2fab97);UserSettingEvents[_0x4354('0x5')](_0xade43e,_0x2fab97);_0x49c9be(null);};}for(var e in events){if(events[_0x4354('0x6')](e)){var event=events[e];UserSetting['hook'](e,emitEvent(event));}}module[_0x4354('0x7')]=UserSettingEvents;
\ No newline at end of file
index 93d8d45..7e1fd01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f4d=['clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','UserSetting','user_settings','clientSideLoggingEnabled'];(function(_0x2bac56,_0x2ca523){var _0x227b32=function(_0x5eb00c){while(--_0x5eb00c){_0x2bac56['push'](_0x2bac56['shift']());}};_0x227b32(++_0x2ca523);}(_0x9f4d,0xb0));var _0xd9f4=function(_0x2d595f,_0xdfdb46){_0x2d595f=_0x2d595f-0x0;var _0x1e26a2=_0x9f4d[_0x2d595f];return _0x1e26a2;};'use strict';var attributes=require(_0xd9f4('0x0'));module[_0xd9f4('0x1')]=function(_0x34f803){return _0x34f803[_0xd9f4('0x2')](_0xd9f4('0x3'),attributes,{'tableName':_0xd9f4('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x36dc75){if(!_0x36dc75[_0xd9f4('0x5')])_0x36dc75[_0xd9f4('0x6')]=null;else if(_0x36dc75['clientSideLoggingEnabledSince']===null)_0x36dc75[_0xd9f4('0x6')]=new Date();}}});};
\ No newline at end of file
+var _0xcce8=['clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','UserSetting','user_settings','clientSideLoggingEnabled'];(function(_0x278576,_0x20a022){var _0x584e1b=function(_0x4c0319){while(--_0x4c0319){_0x278576['push'](_0x278576['shift']());}};_0x584e1b(++_0x20a022);}(_0xcce8,0x1a5));var _0x8cce=function(_0x19c6a1,_0x11ae8a){_0x19c6a1=_0x19c6a1-0x0;var _0x9aa481=_0xcce8[_0x19c6a1];return _0x9aa481;};'use strict';var attributes=require(_0x8cce('0x0'));module[_0x8cce('0x1')]=function(_0x367918){return _0x367918[_0x8cce('0x2')](_0x8cce('0x3'),attributes,{'tableName':_0x8cce('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1ce3fb){if(!_0x1ce3fb[_0x8cce('0x5')])_0x1ce3fb[_0x8cce('0x6')]=null;else if(_0x1ce3fb[_0x8cce('0x6')]===null)_0x1ce3fb['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
index a70df80..8de0158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x642b=['update','emit','user-setting:update:user-','UserId','register','length','user-setting:','./user-setting.events'];(function(_0x26ba2a,_0x23d522){var _0x4a6ed2=function(_0x2565b0){while(--_0x2565b0){_0x26ba2a['push'](_0x26ba2a['shift']());}};_0x4a6ed2(++_0x23d522);}(_0x642b,0xe7));var _0xb642=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x642b[_0x5608a3];return _0x1ed50a;};'use strict';var UserSettingEvents=require(_0xb642('0x0'));var events=['save','remove',_0xb642('0x1')];function createListener(_0x12bac4,_0x23a823){return function(_0x44ab2a){_0x23a823[_0xb642('0x2')](_0x12bac4,_0x44ab2a);if(_0x12bac4==='user-setting:update'){_0x23a823[_0xb642('0x2')](_0xb642('0x3')+_0x44ab2a[_0xb642('0x4')],_0x44ab2a);}};}exports[_0xb642('0x5')]=function(_0x5694e0){for(var _0x16be74=0x0,_0x5cb0f3=events[_0xb642('0x6')];_0x16be74<_0x5cb0f3;_0x16be74++){var _0x3d478b=events[_0x16be74];var _0x4864b3=createListener(_0xb642('0x7')+_0x3d478b,_0x5694e0);UserSettingEvents['on'](_0x3d478b,_0x4864b3);}};
\ No newline at end of file
+var _0x9e0f=['emit','user-setting:update','UserId','register','length','user-setting:','./user-setting.events','save','remove'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x9e0f,0xa8));var _0xf9e0=function(_0x1e6b29,_0x440ee3){_0x1e6b29=_0x1e6b29-0x0;var _0xd9a812=_0x9e0f[_0x1e6b29];return _0xd9a812;};'use strict';var UserSettingEvents=require(_0xf9e0('0x0'));var events=[_0xf9e0('0x1'),_0xf9e0('0x2'),'update'];function createListener(_0x42fe88,_0x2716bd){return function(_0x50a5a9){_0x2716bd[_0xf9e0('0x3')](_0x42fe88,_0x50a5a9);if(_0x42fe88===_0xf9e0('0x4')){_0x2716bd[_0xf9e0('0x3')]('user-setting:update:user-'+_0x50a5a9[_0xf9e0('0x5')],_0x50a5a9);}};}exports[_0xf9e0('0x6')]=function(_0x3eae70){for(var _0x4180f6=0x0,_0x2010bf=events[_0xf9e0('0x7')];_0x4180f6<_0x2010bf;_0x4180f6++){var _0x56f4fd=events[_0x4180f6];var _0x4ea25e=createListener(_0xf9e0('0x8')+_0x56f4fd,_0x3eae70);UserSettingEvents['on'](_0x56f4fd,_0x4ea25e);}};
\ No newline at end of file
index d3d960f..d688eee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb935=['removeMailAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','messengerSoundNotification','express','Router','fs-extra','../../components/auth/service','./user.controller','get','isAuthenticated','index','/describe','/whoami','whoami','/presence','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','/:id/groups','getGroups','getRecordings','/:id/screen_recordings','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','/:id/api_key','post','addContacts','create','/create_many','bulkCreate','addQueues','root','server/files/images/','format','%s-%s','now','originalname','single','file','addAvatar','/:id/pause','pause','/:id/unpause','unpause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addOpenchannelAccounts','addWhatsappAccounts','createApiKey','put','/:id/password','delete','removeQueues','removeTeams','removeChatInteractions','/:id/fax_interactions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xb935,0x6c));var _0x5b93=function(_0x28c8d4,_0x507bd7){_0x28c8d4=_0x28c8d4-0x0;var _0x4b1b7a=_0xb935[_0x28c8d4];return _0x4b1b7a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5b93('0x0'));var router=express[_0x5b93('0x1')]();var fs_extra=require(_0x5b93('0x2'));var auth=require(_0x5b93('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5b93('0x4'));router[_0x5b93('0x5')]('/',auth[_0x5b93('0x6')](),controller[_0x5b93('0x7')]);router[_0x5b93('0x5')](_0x5b93('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0x5b93('0x5')](_0x5b93('0x9'),auth[_0x5b93('0x6')](),controller[_0x5b93('0xa')]);router[_0x5b93('0x5')](_0x5b93('0xb'),auth[_0x5b93('0x6')](),controller[_0x5b93('0xc')]);router[_0x5b93('0x5')](_0x5b93('0xd'),auth[_0x5b93('0x6')](),controller[_0x5b93('0xe')]);router[_0x5b93('0x5')](_0x5b93('0xf'),controller[_0x5b93('0x10')]);router[_0x5b93('0x5')](_0x5b93('0x11'),auth['isAuthenticated'](),controller[_0x5b93('0x12')]);router[_0x5b93('0x5')](_0x5b93('0x13'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x14')]);router[_0x5b93('0x5')](_0x5b93('0x15'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x16')]);router[_0x5b93('0x5')](_0x5b93('0x17'),auth[_0x5b93('0x6')](),controller['getVoiceQueuesRt']);router[_0x5b93('0x5')](_0x5b93('0x18'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x19')]);router[_0x5b93('0x5')]('/:id/recordings',auth[_0x5b93('0x6')](),controller[_0x5b93('0x1a')]);router['get'](_0x5b93('0x1b'),auth[_0x5b93('0x6')](),controller['getScreenRecordings']);router['get']('/:id/chat/interactions',auth[_0x5b93('0x6')](),controller['getChatInteractions']);router[_0x5b93('0x5')]('/:id/openchannel/interactions',auth[_0x5b93('0x6')](),controller['getOpenchannelInteractions']);router[_0x5b93('0x5')](_0x5b93('0x1c'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x1d')]);router[_0x5b93('0x5')](_0x5b93('0x1e'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x1f')]);router[_0x5b93('0x5')](_0x5b93('0x20'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x21')]);router[_0x5b93('0x5')]('/:id/whatsapp/interactions',auth[_0x5b93('0x6')](),controller['getWhatsappInteractions']);router[_0x5b93('0x5')]('/:id/teams',auth['isAuthenticated'](),controller[_0x5b93('0x22')]);router[_0x5b93('0x5')](_0x5b93('0x23'),auth['isAuthenticated'](),controller[_0x5b93('0x24')]);router[_0x5b93('0x5')](_0x5b93('0x25'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x26')]);router[_0x5b93('0x5')](_0x5b93('0x27'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x28')]);router[_0x5b93('0x5')](_0x5b93('0x29'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x2a')]);router['get'](_0x5b93('0x2b'),auth['isAuthenticated'](),controller[_0x5b93('0x2c')]);router[_0x5b93('0x5')](_0x5b93('0x2d'),auth['isAuthenticated'](),controller[_0x5b93('0x2e')]);router[_0x5b93('0x5')](_0x5b93('0x2f'),auth['isAuthenticated'](),controller[_0x5b93('0x30')]);router[_0x5b93('0x5')](_0x5b93('0x31'),auth[_0x5b93('0x6')](),controller['getChatWebsites']);router[_0x5b93('0x5')](_0x5b93('0x32'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x33')]);router['get'](_0x5b93('0x34'),auth['isAuthenticated'](),controller['getScheduledCalls']);router[_0x5b93('0x5')](_0x5b93('0x35'),auth[_0x5b93('0x6')](),controller['getApiKey']);router[_0x5b93('0x36')](_0x5b93('0x13'),auth['isAuthenticated'](),controller[_0x5b93('0x37')]);router['post']('/',auth[_0x5b93('0x6')](),controller[_0x5b93('0x38')]);router[_0x5b93('0x36')](_0x5b93('0x39'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x3a')]);router[_0x5b93('0x36')](_0x5b93('0x15'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x3b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x18c3c5,_0x1f39d3,_0x50e94d){_0x50e94d(null,path['join'](config[_0x5b93('0x3c')],_0x5b93('0x3d')));},'filename':function(_0x2b62c9,_0x23be25,_0xd2850a){_0xd2850a(null,util[_0x5b93('0x3e')](_0x5b93('0x3f'),Date[_0x5b93('0x40')](),_0x23be25[_0x5b93('0x41')]));}})});router[_0x5b93('0x36')](_0x5b93('0xf'),upload[_0x5b93('0x42')](_0x5b93('0x43')),controller[_0x5b93('0x44')]);router['post']('/:id/login',auth[_0x5b93('0x6')](),controller['login']);router['post']('/:id/logout',auth[_0x5b93('0x6')](),controller['logout']);router[_0x5b93('0x36')](_0x5b93('0x45'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x46')]);router['post'](_0x5b93('0x47'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x48')]);router[_0x5b93('0x36')]('/:id/teams',auth[_0x5b93('0x6')](),controller['addTeams']);router[_0x5b93('0x36')](_0x5b93('0x49'),auth['isAuthenticated'](),controller[_0x5b93('0x4a')]);router[_0x5b93('0x36')](_0x5b93('0x4b'),auth['isAuthenticated'](),controller[_0x5b93('0x4c')]);router[_0x5b93('0x36')]('/:id/fax_interactions',auth[_0x5b93('0x6')](),controller['addFaxInteractions']);router[_0x5b93('0x36')]('/:id/sms_interactions',auth[_0x5b93('0x6')](),controller[_0x5b93('0x4d')]);router[_0x5b93('0x36')](_0x5b93('0x4e'),auth['isAuthenticated'](),controller[_0x5b93('0x4f')]);router[_0x5b93('0x36')](_0x5b93('0x50'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x51')]);router[_0x5b93('0x36')](_0x5b93('0x29'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x52')]);router['post'](_0x5b93('0x2b'),auth[_0x5b93('0x6')](),controller['addMailAccounts']);router[_0x5b93('0x36')]('/:id/openchannel_accounts',auth[_0x5b93('0x6')](),controller[_0x5b93('0x53')]);router[_0x5b93('0x36')](_0x5b93('0x2f'),auth[_0x5b93('0x6')](),controller['addSmsAccounts']);router[_0x5b93('0x36')](_0x5b93('0x31'),auth[_0x5b93('0x6')](),controller['addChatWebsites']);router['post'](_0x5b93('0x32'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x54')]);router[_0x5b93('0x36')]('/:id/api_key',auth[_0x5b93('0x6')](),controller[_0x5b93('0x55')]);router[_0x5b93('0x56')]('/:id',auth[_0x5b93('0x6')](),controller['update']);router['put'](_0x5b93('0x57'),auth[_0x5b93('0x6')](),controller['changePassword']);router[_0x5b93('0x58')](_0x5b93('0x15'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x59')]);router[_0x5b93('0x58')]('/:id/teams',auth[_0x5b93('0x6')](),controller[_0x5b93('0x5a')]);router[_0x5b93('0x58')]('/:id',auth[_0x5b93('0x6')](),controller['destroy']);router['delete'](_0x5b93('0x49'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x5b')]);router['delete'](_0x5b93('0x4b'),auth['isAuthenticated'](),controller['removeMailInteractions']);router[_0x5b93('0x58')](_0x5b93('0x5c'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x5d')]);router['delete'](_0x5b93('0x5e'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x5f')]);router[_0x5b93('0x58')]('/:id/openchannel_interactions',auth[_0x5b93('0x6')](),controller[_0x5b93('0x60')]);router[_0x5b93('0x58')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0x5b93('0x61')]);router[_0x5b93('0x58')](_0x5b93('0x29'),auth[_0x5b93('0x6')](),controller['removeFaxAccounts']);router[_0x5b93('0x58')]('/:id/mail_accounts',auth[_0x5b93('0x6')](),controller[_0x5b93('0x62')]);router[_0x5b93('0x58')](_0x5b93('0x2d'),auth[_0x5b93('0x6')](),controller[_0x5b93('0x63')]);router[_0x5b93('0x58')](_0x5b93('0x2f'),auth[_0x5b93('0x6')](),controller['removeSmsAccounts']);router[_0x5b93('0x58')](_0x5b93('0x31'),auth['isAuthenticated'](),controller[_0x5b93('0x64')]);router[_0x5b93('0x58')]('/:id/whatsapp_accounts',auth[_0x5b93('0x6')](),controller[_0x5b93('0x65')]);router[_0x5b93('0x58')](_0x5b93('0x35'),auth['isAuthenticated'](),controller['removeApiKey']);router[_0x5b93('0x36')]('/:id/messengerSoundNotification',auth[_0x5b93('0x6')](),controller[_0x5b93('0x66')]);module['exports']=router;
\ No newline at end of file
+var _0x3a93=['/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','/:id/openchannel_accounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addWhatsappAccounts','createApiKey','/:id','put','/:id/password','changePassword','delete','removeQueues','removeTeams','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','/:id/api_key','removeApiKey','/:id/messengerSoundNotification','messengerSoundNotification','exports','util','path','connect-timeout','express','fs-extra','../../config/environment','./user.controller','get','/describe','isAuthenticated','describe','/whoami','whoami','/presence','getPresence','show','/:id/avatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','/:id/sms/interactions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','getAgents','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/whatsapp_accounts','/:id/scheduled_calls','getScheduledCalls','post','/:id/contacts','addContacts','create','/create_many','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','originalname','single','file','addAvatar'];(function(_0x4497ec,_0x2db3a6){var _0x394cfd=function(_0x32b86d){while(--_0x32b86d){_0x4497ec['push'](_0x4497ec['shift']());}};_0x394cfd(++_0x2db3a6);}(_0x3a93,0x118));var _0x33a9=function(_0x49418f,_0xf40fe9){_0x49418f=_0x49418f-0x0;var _0x319164=_0x3a93[_0x49418f];return _0x319164;};'use strict';var multer=require('multer');var util=require(_0x33a9('0x0'));var path=require(_0x33a9('0x1'));var timeout=require(_0x33a9('0x2'));var express=require(_0x33a9('0x3'));var router=express['Router']();var fs_extra=require(_0x33a9('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x33a9('0x5'));var controller=require(_0x33a9('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x33a9('0x7')](_0x33a9('0x8'),auth[_0x33a9('0x9')](),controller[_0x33a9('0xa')]);router[_0x33a9('0x7')](_0x33a9('0xb'),auth[_0x33a9('0x9')](),controller[_0x33a9('0xc')]);router[_0x33a9('0x7')](_0x33a9('0xd'),auth[_0x33a9('0x9')](),controller[_0x33a9('0xe')]);router[_0x33a9('0x7')]('/:id',auth[_0x33a9('0x9')](),controller[_0x33a9('0xf')]);router[_0x33a9('0x7')](_0x33a9('0x10'),controller['getAvatar']);router[_0x33a9('0x7')](_0x33a9('0x11'),auth['isAuthenticated'](),controller[_0x33a9('0x12')]);router[_0x33a9('0x7')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x33a9('0x13')]);router[_0x33a9('0x7')](_0x33a9('0x14'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x15')]);router[_0x33a9('0x7')](_0x33a9('0x16'),auth['isAuthenticated'](),controller[_0x33a9('0x17')]);router[_0x33a9('0x7')](_0x33a9('0x18'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x19')]);router[_0x33a9('0x7')](_0x33a9('0x1a'),auth['isAuthenticated'](),controller[_0x33a9('0x1b')]);router[_0x33a9('0x7')](_0x33a9('0x1c'),auth['isAuthenticated'](),controller[_0x33a9('0x1d')]);router[_0x33a9('0x7')](_0x33a9('0x1e'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x1f')]);router['get'](_0x33a9('0x20'),auth[_0x33a9('0x9')](),controller['getOpenchannelInteractions']);router[_0x33a9('0x7')](_0x33a9('0x21'),auth[_0x33a9('0x9')](),controller['getMailInteractions']);router[_0x33a9('0x7')](_0x33a9('0x22'),auth[_0x33a9('0x9')](),controller['getSmsInteractions']);router[_0x33a9('0x7')](_0x33a9('0x23'),auth[_0x33a9('0x9')](),controller['getFaxInteractions']);router[_0x33a9('0x7')](_0x33a9('0x24'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x25')]);router[_0x33a9('0x7')](_0x33a9('0x26'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x27')]);router['get']('/:id/lists',auth[_0x33a9('0x9')](),controller[_0x33a9('0x28')]);router[_0x33a9('0x7')]('/:id/agents',auth['isAuthenticated'](),controller[_0x33a9('0x29')]);router[_0x33a9('0x7')]('/:id/prefixes',auth['isAuthenticated'](),controller[_0x33a9('0x2a')]);router[_0x33a9('0x7')](_0x33a9('0x2b'),auth[_0x33a9('0x9')](),controller['getFaxAccounts']);router[_0x33a9('0x7')](_0x33a9('0x2c'),auth[_0x33a9('0x9')](),controller['getMailAccounts']);router['get']('/:id/openchannel_accounts',auth[_0x33a9('0x9')](),controller[_0x33a9('0x2d')]);router[_0x33a9('0x7')](_0x33a9('0x2e'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x2f')]);router[_0x33a9('0x7')]('/:id/chat_websites',auth[_0x33a9('0x9')](),controller['getChatWebsites']);router['get'](_0x33a9('0x30'),auth[_0x33a9('0x9')](),controller['getWhatsappAccounts']);router[_0x33a9('0x7')](_0x33a9('0x31'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x32')]);router[_0x33a9('0x7')]('/:id/api_key',auth[_0x33a9('0x9')](),controller['getApiKey']);router[_0x33a9('0x33')](_0x33a9('0x34'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x35')]);router[_0x33a9('0x33')]('/',auth[_0x33a9('0x9')](),controller[_0x33a9('0x36')]);router[_0x33a9('0x33')](_0x33a9('0x37'),auth['isAuthenticated'](),controller[_0x33a9('0x38')]);router[_0x33a9('0x33')](_0x33a9('0x14'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x39')]);var upload=multer({'storage':multer[_0x33a9('0x3a')]({'destination':function(_0x5dcffe,_0x37f757,_0x25f759){_0x25f759(null,path[_0x33a9('0x3b')](config[_0x33a9('0x3c')],_0x33a9('0x3d')));},'filename':function(_0x579f49,_0x318a66,_0x59179c){_0x59179c(null,util[_0x33a9('0x3e')](_0x33a9('0x3f'),Date['now'](),_0x318a66[_0x33a9('0x40')]));}})});router[_0x33a9('0x33')](_0x33a9('0x10'),upload[_0x33a9('0x41')](_0x33a9('0x42')),controller[_0x33a9('0x43')]);router[_0x33a9('0x33')](_0x33a9('0x44'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x45')]);router[_0x33a9('0x33')](_0x33a9('0x46'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x47')]);router[_0x33a9('0x33')](_0x33a9('0x48'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x49')]);router[_0x33a9('0x33')](_0x33a9('0x4a'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x4b')]);router['post'](_0x33a9('0x26'),auth[_0x33a9('0x9')](),controller['addTeams']);router[_0x33a9('0x33')](_0x33a9('0x4c'),auth[_0x33a9('0x9')](),controller['addChatInteractions']);router[_0x33a9('0x33')](_0x33a9('0x4d'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x4e')]);router[_0x33a9('0x33')](_0x33a9('0x4f'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x50')]);router[_0x33a9('0x33')](_0x33a9('0x51'),auth['isAuthenticated'](),controller['addSmsInteractions']);router[_0x33a9('0x33')](_0x33a9('0x52'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x53')]);router[_0x33a9('0x33')](_0x33a9('0x54'),auth['isAuthenticated'](),controller[_0x33a9('0x55')]);router[_0x33a9('0x33')](_0x33a9('0x2b'),auth[_0x33a9('0x9')](),controller['addFaxAccounts']);router[_0x33a9('0x33')](_0x33a9('0x2c'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x56')]);router['post'](_0x33a9('0x57'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x58')]);router[_0x33a9('0x33')](_0x33a9('0x2e'),auth['isAuthenticated'](),controller[_0x33a9('0x59')]);router['post'](_0x33a9('0x5a'),auth[_0x33a9('0x9')](),controller['addChatWebsites']);router[_0x33a9('0x33')]('/:id/whatsapp_accounts',auth[_0x33a9('0x9')](),controller[_0x33a9('0x5b')]);router[_0x33a9('0x33')]('/:id/api_key',auth[_0x33a9('0x9')](),controller[_0x33a9('0x5c')]);router['put'](_0x33a9('0x5d'),auth[_0x33a9('0x9')](),controller['update']);router[_0x33a9('0x5e')](_0x33a9('0x5f'),auth['isAuthenticated'](),controller[_0x33a9('0x60')]);router[_0x33a9('0x61')]('/:id/queues',auth[_0x33a9('0x9')](),controller[_0x33a9('0x62')]);router[_0x33a9('0x61')](_0x33a9('0x26'),auth['isAuthenticated'](),controller[_0x33a9('0x63')]);router[_0x33a9('0x61')](_0x33a9('0x5d'),auth[_0x33a9('0x9')](),controller['destroy']);router[_0x33a9('0x61')]('/:id/chat_interactions',auth[_0x33a9('0x9')](),controller[_0x33a9('0x64')]);router[_0x33a9('0x61')](_0x33a9('0x4d'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x65')]);router['delete'](_0x33a9('0x4f'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x66')]);router[_0x33a9('0x61')](_0x33a9('0x51'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x67')]);router[_0x33a9('0x61')](_0x33a9('0x52'),auth[_0x33a9('0x9')](),controller['removeOpenchannelInteractions']);router['delete'](_0x33a9('0x54'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x68')]);router[_0x33a9('0x61')](_0x33a9('0x2b'),auth['isAuthenticated'](),controller[_0x33a9('0x69')]);router[_0x33a9('0x61')](_0x33a9('0x2c'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x6a')]);router[_0x33a9('0x61')](_0x33a9('0x57'),auth['isAuthenticated'](),controller[_0x33a9('0x6b')]);router[_0x33a9('0x61')](_0x33a9('0x2e'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x6c')]);router[_0x33a9('0x61')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x33a9('0x6d')]);router[_0x33a9('0x61')](_0x33a9('0x30'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x6e')]);router[_0x33a9('0x61')](_0x33a9('0x6f'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x70')]);router['post'](_0x33a9('0x71'),auth[_0x33a9('0x9')](),controller[_0x33a9('0x72')]);module[_0x33a9('0x73')]=router;
\ No newline at end of file
index 5b25387..2dca7ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77fe=['screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','internal','email','toLowerCase','ENUM','admin','telephone','local','accountcode','getDataValue','DATE','BOOLEAN','DEFAULT\x20PAUSE','INTEGER','dynamic','friend','user','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','inband','auto','nonat','update','outgoing','force_rport,comedia','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]','yes','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','accept','refuse','originate','uac','uas','certificate','active','passive','actpass','update,nonat','TEXT','encryption','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','avpf','force_avp','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false'];(function(_0x5a8112,_0x1c1502){var _0x5a64a1=function(_0x33021c){while(--_0x33021c){_0x5a8112['push'](_0x5a8112['shift']());}};_0x5a64a1(++_0x1c1502);}(_0x77fe,0x179));var _0xe77f=function(_0xbaf095,_0x12c31c){_0xbaf095=_0xbaf095-0x0;var _0x3261b5=_0x77fe[_0xbaf095];return _0x3261b5;};'use strict';var Sequelize=require(_0xe77f('0x0'));var moment=require(_0xe77f('0x1'));var util=require(_0xe77f('0x2'));var _=require(_0xe77f('0x3'));module[_0xe77f('0x4')]={'name':{'type':Sequelize[_0xe77f('0x5')],'allowNull':![],'unique':_0xe77f('0x6'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0xefe884){this[_0xe77f('0x7')](_0xe77f('0x6'),_0xefe884);this[_0xe77f('0x7')]('defaultuser',_0xefe884);},'comment':_0xe77f('0x8')},'fullname':{'type':Sequelize[_0xe77f('0x5')],'allowNull':![],'set':function(_0x210e7f){this['setDataValue'](_0xe77f('0x9'),_0x210e7f);this[_0xe77f('0x7')](_0xe77f('0xa'),util[_0xe77f('0xb')](_0xe77f('0xc'),_0x210e7f,this['getDataValue'](_0xe77f('0xd'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xe77f('0x5')],'allowNull':![],'unique':_0xe77f('0xe'),'validate':{'isEmail':!![]},'set':function(_0x116652){if(_0x116652){this[_0xe77f('0x7')]('email',_0x116652[_0xe77f('0xf')]());}}},'role':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x11'),'user','agent',_0xe77f('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0xe77f('0x5')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xe77f('0x13')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0xe77f('0xd'),'set':function(_0x3b82d6){this[_0xe77f('0x7')](_0xe77f('0xd'),_0x3b82d6);this[_0xe77f('0x7')](_0xe77f('0x14'),_0x3b82d6);this[_0xe77f('0x7')](_0xe77f('0xa'),util[_0xe77f('0xb')](_0xe77f('0xc'),this[_0xe77f('0x15')](_0xe77f('0x9')),_0x3b82d6));}},'salt':{'type':Sequelize[_0xe77f('0x5')]},'phone':{'type':Sequelize[_0xe77f('0x5')]},'mobile':{'type':Sequelize[_0xe77f('0x5')]},'address':{'type':Sequelize[_0xe77f('0x5')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0xe77f('0x5')]},'city':{'type':Sequelize[_0xe77f('0x5')]},'country':{'type':Sequelize[_0xe77f('0x5')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xe77f('0x16')]},'voicePause':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xe77f('0x5')],'defaultValue':_0xe77f('0x18')},'lastPauseAt':{'type':Sequelize[_0xe77f('0x16')]},'chatCapacity':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xe77f('0x19')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xe77f('0x19')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'host':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![],'defaultValue':_0xe77f('0x1a')},'ipaddr':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'port':{'type':Sequelize[_0xe77f('0x19')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'regserver':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x1b'),_0xe77f('0x1c'),_0xe77f('0x1d')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xe77f('0x1e')},'callingpres':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x1f'),_0xe77f('0x20'),_0xe77f('0x21'),_0xe77f('0x22'),_0xe77f('0x23'),'PROHIB_PASSED_SCREEN',_0xe77f('0x24'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'permit':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'secret':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'transport':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![],'defaultValue':_0xe77f('0x25'),'set':function(_0x43f5f3){this['setDataValue'](_0xe77f('0x26'),_0x43f5f3?_0x43f5f3[_0xe77f('0x27')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0xe77f('0x15')]('transport')[_0xe77f('0x28')](','):null;},'comment':_0xe77f('0x29')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833','info','shortinfo',_0xe77f('0x2a'),_0xe77f('0x2b')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xe77f('0x10')]('yes','no',_0xe77f('0x2c'),_0xe77f('0x2d'),_0xe77f('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xe77f('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xe77f('0x2f'),'set':function(_0x15ec22){this[_0xe77f('0x7')](_0xe77f('0x30'),_0x15ec22?_0x15ec22[_0xe77f('0x27')](','):null);},'get':function(){return this[_0xe77f('0x15')]('nat')?this[_0xe77f('0x15')](_0xe77f('0x30'))[_0xe77f('0x28')](','):null;},'comment':_0xe77f('0x31')},'callgroup':{'type':Sequelize[_0xe77f('0x5')]},'namedcallgroup':{'type':Sequelize[_0xe77f('0x5')]},'pickupgroup':{'type':Sequelize[_0xe77f('0x5')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xe77f('0x5')]},'disallow':{'type':Sequelize[_0xe77f('0x5')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0xe77f('0x5')],'allowNull':![],'defaultValue':_0xe77f('0x32'),'set':function(_0x6a43e7){this[_0xe77f('0x7')](_0xe77f('0x33'),_0x6a43e7?_0x6a43e7[_0xe77f('0x27')](';'):_0xe77f('0x32'));},'get':function(){return this[_0xe77f('0x15')](_0xe77f('0x33'))?this[_0xe77f('0x15')](_0xe77f('0x33'))['split'](';'):null;},'comment':_0xe77f('0x34')},'autoframing':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![],'set':function(_0x14fe3b){this[_0xe77f('0x7')](_0xe77f('0x36'),_0x14fe3b?_0x14fe3b[_0xe77f('0x27')](','):null);},'get':function(){return this['getDataValue'](_0xe77f('0x36'))?this[_0xe77f('0x15')](_0xe77f('0x36'))[_0xe77f('0x28')](','):null;},'comment':_0xe77f('0x37')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no',_0xe77f('0x38')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![],'defaultValue':_0xe77f('0x35')},'busylevel':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xe77f('0x10')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize['STRING'],'allowNull':!![]},'template':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0xe77f('0x35'),'no',_0xe77f('0x39')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x3a'),_0xe77f('0x3b'),_0xe77f('0x3c')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x3d'),_0xe77f('0x3e')),'allowNull':!![],'defaultValue':_0xe77f('0x3e')},'t38pt_usertpsource':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![],'defaultValue':_0xe77f('0x35')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xe77f('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xe77f('0x35'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no','fingerprint',_0xe77f('0x3f')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x40'),_0xe77f('0x41'),_0xe77f('0x42')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM'](_0xe77f('0x35'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xe77f('0x19')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0xe77f('0x35'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xe77f('0x10')](_0xe77f('0x35'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xe77f('0x10')]('yes','no',_0xe77f('0x2c'),'update',_0xe77f('0x43')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xe77f('0x5')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0xe77f('0x16')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xe77f('0x44')]},'showWebBar':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0,'set':function(_0x566674){this['setDataValue']('showWebBar',_0x566674);var _0x28a8b2=this['get']({'plain':!![]});switch(_0x566674){case 0x0:case 0x1:var _0x4e2756=_0x28a8b2[_0xe77f('0x26')]?_['isArray'](_0x28a8b2['transport'])?_0x28a8b2[_0xe77f('0x26')][_0xe77f('0x27')]():_0x28a8b2['transport']:_0xe77f('0x25');if(_0x4e2756==='wss'){_0x4e2756=_0xe77f('0x25');}this[_0xe77f('0x7')](_0xe77f('0x26'),_0x4e2756);this[_0xe77f('0x7')](_0xe77f('0x45'),'no');this[_0xe77f('0x7')]('avpf',null);this[_0xe77f('0x7')]('force_avp',null);this[_0xe77f('0x7')](_0xe77f('0x46'),null);this['setDataValue'](_0xe77f('0x47'),null);this[_0xe77f('0x7')](_0xe77f('0x48'),null);this[_0xe77f('0x7')](_0xe77f('0x49'),null);this['setDataValue'](_0xe77f('0x4a'),null);this['setDataValue'](_0xe77f('0x4b'),null);this[_0xe77f('0x7')](_0xe77f('0x4c'),'no');break;case 0x2:this[_0xe77f('0x7')]('transport','wss');this[_0xe77f('0x7')](_0xe77f('0x45'),_0xe77f('0x35'));this['setDataValue'](_0xe77f('0x4d'),_0xe77f('0x35'));this[_0xe77f('0x7')](_0xe77f('0x4e'),_0xe77f('0x35'));this[_0xe77f('0x7')](_0xe77f('0x46'),_0xe77f('0x35'));this['setDataValue']('dtlsenable','yes');this[_0xe77f('0x7')](_0xe77f('0x48'),'no');this['setDataValue'](_0xe77f('0x49'),_0xe77f('0x42'));this[_0xe77f('0x7')]('dtlscertfile',_0x28a8b2[_0xe77f('0x4a')]||_0xe77f('0x4f'));this['setDataValue'](_0xe77f('0x4b'),_0x28a8b2['dtlsprivatekey']||_0xe77f('0x50'));this[_0xe77f('0x7')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0xe77f('0x44')],'set':function(_0x2245d4){this[_0xe77f('0x7')](_0xe77f('0x51'),_0x2245d4?_0x2245d4[_0xe77f('0x27')](','):[]);},'get':function(){return this[_0xe77f('0x15')](_0xe77f('0x51'))?_[_0xe77f('0x52')](this[_0xe77f('0x15')]('permissions')[_0xe77f('0x28')](','),function(_0x8e2960){return parseInt(_0x8e2960,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xe77f('0x5')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0xe77f('0x5')]},'phoneBarBusyNumber':{'type':Sequelize[_0xe77f('0x5')]},'phoneBarUnconditional':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0xe77f('0x35'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xe77f('0x5')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xe77f('0x53')],'get':function(){return this[_0xe77f('0x15')](_0xe77f('0x54'))?this[_0xe77f('0x15')](_0xe77f('0x54')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xe77f('0x5')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![],'set':function(_0x4392dc){if(typeof _0x4392dc===_0xe77f('0x55')){var _0x2f597c=_0x4392dc==='1'?!![]:_0x4392dc==='0'?![]:_0x4392dc===_0xe77f('0x56')?!![]:_0x4392dc===_0xe77f('0x57')?![]:![];this[_0xe77f('0x7')]('screenrecording',_0x2f597c);}else{this['setDataValue'](_0xe77f('0x58'),_0x4392dc);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x464ba0){this[_0xe77f('0x7')](_0xe77f('0x59'),_0x464ba0);if(_0x464ba0===!![]){this[_0xe77f('0x7')](_0xe77f('0x5a'),moment());this[_0xe77f('0x7')](_0xe77f('0x5b'),0x0);}else{this[_0xe77f('0x7')](_0xe77f('0x5a'),null);}}},'blockedAt':{'type':Sequelize[_0xe77f('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xe77f('0x19')](0x5)[_0xe77f('0x5c')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0xe77f('0x19')],'defaultValue':0x0},'messengerSoundNotification':{'type':Sequelize[_0xe77f('0x17')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5d71=['\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','TEXT','get','isArray','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','actpass','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','STRING','format','\x22%s\x22\x20<%s>','email','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','internal','callerid','fullname','BOOLEAN','DATE','DEFAULT\x20PAUSE','friend','peer','from-sip','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','yes','nonat','update','outgoing','force_rport,comedia','nat','join','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x5d71,0x1a6));var _0x15d7=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x5d71[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x15d7('0x0'));var moment=require(_0x15d7('0x1'));var util=require(_0x15d7('0x2'));var _=require(_0x15d7('0x3'));module[_0x15d7('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x15d7('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x31fa25){this[_0x15d7('0x6')](_0x15d7('0x5'),_0x31fa25);this[_0x15d7('0x6')](_0x15d7('0x7'),_0x31fa25);},'comment':_0x15d7('0x8')},'fullname':{'type':Sequelize[_0x15d7('0x9')],'allowNull':![],'set':function(_0x16a1b0){this[_0x15d7('0x6')]('fullname',_0x16a1b0);this['setDataValue']('callerid',util[_0x15d7('0xa')](_0x15d7('0xb'),_0x16a1b0,this['getDataValue']('internal')));}},'alias':{'type':Sequelize[_0x15d7('0x9')]},'email':{'type':Sequelize[_0x15d7('0x9')],'allowNull':![],'unique':_0x15d7('0xc'),'validate':{'isEmail':!![]},'set':function(_0x709f8e){if(_0x709f8e){this[_0x15d7('0x6')](_0x15d7('0xc'),_0x709f8e[_0x15d7('0xd')]());}}},'role':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0xf'),_0x15d7('0x10'),_0x15d7('0x11'),_0x15d7('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0x15d7('0x9')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x15d7('0x13')},'internal':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':![],'unique':_0x15d7('0x15'),'set':function(_0x5479ad){this[_0x15d7('0x6')](_0x15d7('0x15'),_0x5479ad);this[_0x15d7('0x6')]('accountcode',_0x5479ad);this[_0x15d7('0x6')](_0x15d7('0x16'),util[_0x15d7('0xa')](_0x15d7('0xb'),this['getDataValue'](_0x15d7('0x17')),_0x5479ad));}},'salt':{'type':Sequelize[_0x15d7('0x9')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x15d7('0x9')]},'address':{'type':Sequelize[_0x15d7('0x9')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x15d7('0x9')]},'country':{'type':Sequelize[_0x15d7('0x9')]},'online':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x15d7('0x19')]},'voicePause':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x15d7('0x9')],'defaultValue':_0x15d7('0x1a')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x15d7('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x15d7('0x14')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'description':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'host':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'port':{'type':Sequelize[_0x15d7('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x1b'),'user',_0x15d7('0x1c')),'allowNull':!![],'defaultValue':_0x15d7('0x1b')},'context':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![],'defaultValue':_0x15d7('0x1d')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN',_0x15d7('0x1e'),_0x15d7('0x1f'),_0x15d7('0x20'),_0x15d7('0x21'),_0x15d7('0x22'),_0x15d7('0x23')),'allowNull':!![]},'deny':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'permit':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'secret':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'transport':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![],'defaultValue':_0x15d7('0x24'),'set':function(_0x48da5a){this[_0x15d7('0x6')](_0x15d7('0x25'),_0x48da5a?_0x48da5a['join'](','):null);},'get':function(){return this[_0x15d7('0x26')](_0x15d7('0x25'))?this[_0x15d7('0x26')]('transport')[_0x15d7('0x27')](','):null;},'comment':_0x15d7('0x28')},'dtmfmode':{'type':Sequelize[_0x15d7('0xe')]('rfc2833',_0x15d7('0x29'),_0x15d7('0x2a'),_0x15d7('0x2b'),_0x15d7('0x2c')),'allowNull':!![],'defaultValue':_0x15d7('0x2d')},'directmedia':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no',_0x15d7('0x2f'),_0x15d7('0x30'),_0x15d7('0x31')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x15d7('0x32'),'set':function(_0x19ded0){this['setDataValue'](_0x15d7('0x33'),_0x19ded0?_0x19ded0[_0x15d7('0x34')](','):null);},'get':function(){return this[_0x15d7('0x26')](_0x15d7('0x33'))?this[_0x15d7('0x26')](_0x15d7('0x33'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x15d7('0x9')]},'pickupgroup':{'type':Sequelize[_0x15d7('0x9')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x15d7('0x9')]},'disallow':{'type':Sequelize[_0x15d7('0x9')],'allowNull':![],'defaultValue':_0x15d7('0x35')},'allow':{'type':Sequelize[_0x15d7('0x9')],'allowNull':![],'defaultValue':_0x15d7('0x36'),'set':function(_0x17b6e1){this['setDataValue']('allow',_0x17b6e1?_0x17b6e1[_0x15d7('0x34')](';'):_0x15d7('0x36'));},'get':function(){return this['getDataValue'](_0x15d7('0x37'))?this['getDataValue'](_0x15d7('0x37'))[_0x15d7('0x27')](';'):null;},'comment':_0x15d7('0x38')},'autoframing':{'type':Sequelize[_0x15d7('0xe')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0x1251c3){this[_0x15d7('0x6')](_0x15d7('0x39'),_0x1251c3?_0x1251c3[_0x15d7('0x34')](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0x15d7('0x26')](_0x15d7('0x39'))[_0x15d7('0x27')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0x15d7('0x2e'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x15d7('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x15d7('0xe')]('yes','no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x15d7('0x2e'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![],'defaultValue':_0x15d7('0x3a')},'amaflags':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x15d7('0x2e'),'no'),'allowNull':!![],'defaultValue':_0x15d7('0x2e')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0x15d7('0x2e'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x15d7('0xe')]('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'template':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no',_0x15d7('0x3b')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x3c'),_0x15d7('0x3d'),_0x15d7('0x3e')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x3f'),_0x15d7('0x40')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![],'defaultValue':_0x15d7('0x2e')},'keepalive':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x15d7('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x15d7('0x2e'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no',_0x15d7('0x41'),_0x15d7('0x42')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0x15d7('0x43'),_0x15d7('0x44'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x15d7('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize['ENUM'](_0x15d7('0x2e'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no',_0x15d7('0x2f'),'update','update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x15d7('0x9')]},'resetPasswordExpires':{'type':Sequelize[_0x15d7('0x19')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x15d7('0x45')]},'showWebBar':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0,'set':function(_0x5849b9){this[_0x15d7('0x6')]('showWebBar',_0x5849b9);var _0x2fd3fa=this[_0x15d7('0x46')]({'plain':!![]});switch(_0x5849b9){case 0x0:case 0x1:var _0x42a4d4=_0x2fd3fa[_0x15d7('0x25')]?_[_0x15d7('0x47')](_0x2fd3fa[_0x15d7('0x25')])?_0x2fd3fa[_0x15d7('0x25')]['join']():_0x2fd3fa[_0x15d7('0x25')]:_0x15d7('0x24');if(_0x42a4d4==='wss'){_0x42a4d4=_0x15d7('0x24');}this[_0x15d7('0x6')](_0x15d7('0x25'),_0x42a4d4);this['setDataValue'](_0x15d7('0x48'),'no');this[_0x15d7('0x6')](_0x15d7('0x49'),null);this[_0x15d7('0x6')](_0x15d7('0x4a'),null);this[_0x15d7('0x6')](_0x15d7('0x4b'),null);this[_0x15d7('0x6')](_0x15d7('0x4c'),null);this[_0x15d7('0x6')](_0x15d7('0x4d'),null);this[_0x15d7('0x6')](_0x15d7('0x4e'),null);this[_0x15d7('0x6')](_0x15d7('0x4f'),null);this['setDataValue']('dtlsprivatekey',null);this[_0x15d7('0x6')]('rtcp_mux','no');break;case 0x2:this[_0x15d7('0x6')](_0x15d7('0x25'),'wss');this['setDataValue'](_0x15d7('0x48'),_0x15d7('0x2e'));this[_0x15d7('0x6')](_0x15d7('0x49'),'yes');this[_0x15d7('0x6')]('force_avp',_0x15d7('0x2e'));this[_0x15d7('0x6')]('icesupport',_0x15d7('0x2e'));this[_0x15d7('0x6')](_0x15d7('0x4c'),_0x15d7('0x2e'));this[_0x15d7('0x6')](_0x15d7('0x4d'),'no');this[_0x15d7('0x6')](_0x15d7('0x4e'),_0x15d7('0x50'));this[_0x15d7('0x6')]('dtlscertfile',_0x2fd3fa[_0x15d7('0x4f')]||_0x15d7('0x51'));this[_0x15d7('0x6')](_0x15d7('0x52'),_0x2fd3fa['dtlsprivatekey']||_0x15d7('0x53'));this[_0x15d7('0x6')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0x15d7('0x45')],'set':function(_0x154377){this[_0x15d7('0x6')](_0x15d7('0x54'),_0x154377?_0x154377[_0x15d7('0x34')](','):[]);},'get':function(){return this[_0x15d7('0x26')](_0x15d7('0x54'))?_[_0x15d7('0x55')](this[_0x15d7('0x26')]('permissions')['split'](','),function(_0x4d028b){return parseInt(_0x4d028b,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0x15d7('0x9')]},'phoneBarBusyNumber':{'type':Sequelize[_0x15d7('0x9')]},'phoneBarUnconditional':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x15d7('0x9')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x15d7('0xe')](_0x15d7('0x2e'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x15d7('0x9')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x15d7('0x56')],'get':function(){return this[_0x15d7('0x26')]('phoneBarEnableScreenRecordingByAgent')?this[_0x15d7('0x26')](_0x15d7('0x57')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'interface':{'type':Sequelize[_0x15d7('0x9')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x15d7('0x9')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![],'set':function(_0x2fb48f){if(typeof _0x2fb48f===_0x15d7('0x58')){var _0x1b3f53=_0x2fb48f==='1'?!![]:_0x2fb48f==='0'?![]:_0x2fb48f===_0x15d7('0x59')?!![]:_0x2fb48f===_0x15d7('0x5a')?![]:![];this[_0x15d7('0x6')](_0x15d7('0x5b'),_0x1b3f53);}else{this['setDataValue'](_0x15d7('0x5b'),_0x2fb48f);}}},'blocked':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![],'set':function(_0x4e4536){this[_0x15d7('0x6')](_0x15d7('0x5c'),_0x4e4536);if(_0x4e4536===!![]){this['setDataValue'](_0x15d7('0x5d'),moment());this[_0x15d7('0x6')](_0x15d7('0x5e'),0x0);}else{this[_0x15d7('0x6')](_0x15d7('0x5d'),null);}}},'blockedAt':{'type':Sequelize[_0x15d7('0x19')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)[_0x15d7('0x5f')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x15d7('0x14')],'defaultValue':0x0},'messengerSoundNotification':{'type':Sequelize[_0x15d7('0x18')],'defaultValue':![]}};
\ No newline at end of file
index ca04854..c456c85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c94=['x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','upsert','getChannels','forEach','LOGIN','device','PAUSE','LOGININPAUSE','YYYY-MM-DD\x20HH:mm:ss','isMiddleware','logout','pause','MemberReport','updateAttributes','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','whatsappPause','getTeams','Team','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','addTeams','getAssociatedQueues','flattenDeep','addAgent','getDataValue','Voice','penalty','UserVoicePrefix','VoicePrefixId','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeTeams','removeAgent','TeamVoicePrefix','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','CmHopper','$or','$gt','$gte','$lt','$ne','$eq','$not','$notBetween','$in','$notIn','$iLike','$overlap','$contains','$contained','firstName','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','resolve','getUserSetting','getPresence','idle','unknown','ringing','teams','inbound','flatten','toString','lower','col','asc','desc','substring','uniqBy','getRealtimeAgents','offline','voiceStatus','busy','slice','toUpperCase','QueryTypes','select','field','InteractionId','ui.createdAt','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','util','path','lodash','squel','ioredis','../../components/auth/service','../../components/contacts','../../components/realtime/agents','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APINotFoundError','../../mysqldb','socket.io-emitter','./user.socket','redis','sendStatus','status','end','json','undefined','count','offset','then','role','agent','emit','userNotification:recalc:','get','admin','Users','user','Agents','Telephones','telephone','filter','ignore','value','includes','find','UserProfileResource','error','name','send','User','rawAttributes','map','fieldName','type','password','salt','resetPasswordToken','resetPasswordExpires','index','getOptions','where','query','include','UserSetting','attributes','findAll','openTabs','rows','push','chat','sms','fax','mail','dataValues','whatsapp','all','catch','show','params','includeAll','userSetting','true','merge','options','openchannel','update','body','describe','addContacts','ids','omit','internal','Setting','findById','validatePasswordPattern','max','isNil','min_internal','sequelize','SELECT','from','voicemail','mailbox','VoiceMail','fullname','permissions','101','102','103','113','110','104','105','106','108','109','100','111','114','115','create','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','autoAssociation','bulkCreate','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','length','some','isEmpty','compact','changePassword','newPassword','Sequelize','ValidationError','authenticate','oldPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','securePassword','previousPasswords','validatePasswordHistory','addQueues','channel','online','loginInPause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','spread','QueueId','Queue:save','voice','VoiceQueue','SIP/%s','voicePause','UserVoiceQueueRt','remove','isArray','Queue:remove','destroy','addAvatar','filename','getAvatar','root','server/files/images/logos/default_profile.png','userpic','download','existsSync','join','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FAX','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','concat','getContacts','format','User\x20with\x20id\x20%s\x20not\x20found','CmList','List','Tag','Tags','color','tag','getQueues','model','keys','filters','fields','order','sort','pick','Queue','Unknown\x20role','nolimit','limit','getVoiceQueuesRt','intersection','hasOwnProperty','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','ScreenRecording','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers'];(function(_0x2040dd,_0x156a63){var _0x27688f=function(_0xb90c80){while(--_0xb90c80){_0x2040dd['push'](_0x2040dd['shift']());}};_0x27688f(++_0x156a63);}(_0x3c94,0x98));var _0x43c9=function(_0x40dd56,_0x726ca5){_0x40dd56=_0x40dd56-0x0;var _0x4f850f=_0x3c94[_0x40dd56];return _0x4f850f;};'use strict';var moment=require(_0x43c9('0x0'));var util=require(_0x43c9('0x1'));var path=require(_0x43c9('0x2'));var fs=require('fs');var _=require(_0x43c9('0x3'));var squel=require(_0x43c9('0x4'));var Redis=require(_0x43c9('0x5'));var authService=require(_0x43c9('0x6'));var contacts=require(_0x43c9('0x7'));var qs=require('../../components/parsers/qs');var rta=require(_0x43c9('0x8'));var logger=require(_0x43c9('0x9'))(_0x43c9('0xa'));var utils=require(_0x43c9('0xb'));var config=require(_0x43c9('0xc'));var licenseUtil=require(_0x43c9('0xd'));var APIBadRequestError=require(_0x43c9('0xe'))['APIBadRequestError'];var APINotFoundError=require('../../errors/api')[_0x43c9('0xf')];var APIHandleError=require(_0x43c9('0xe'))['handleError'];var db=require(_0x43c9('0x10'))['db'];var socket=require(_0x43c9('0x11'))(new Redis(config['redis']));require(_0x43c9('0x12'))['register'](socket);config[_0x43c9('0x13')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var values;function respondWithStatusCode(_0x4e2be7,_0x4b12db){_0x4b12db=_0x4b12db||0xcc;return function(_0x39acbb){if(_0x39acbb){return _0x4e2be7[_0x43c9('0x14')](_0x4b12db);}return _0x4e2be7[_0x43c9('0x15')](_0x4b12db)[_0x43c9('0x16')]();};}function respondWithResult(_0x3f5ad7,_0x18e7f5){_0x18e7f5=_0x18e7f5||0xc8;return function(_0x2cbf6e){if(_0x2cbf6e){return _0x3f5ad7['status'](_0x18e7f5)[_0x43c9('0x17')](_0x2cbf6e);}};}function respondWithFilteredResult(_0x1b87d5,_0x444d60){return function(_0x1b4766){if(_0x1b4766){var _0x1d6634=typeof _0x444d60['offset']===_0x43c9('0x18')&&typeof _0x444d60['limit']==='undefined';var _0x3ce6c6=_0x1b4766[_0x43c9('0x19')];var _0x302278=_0x1d6634?0x0:_0x444d60[_0x43c9('0x1a')];var _0x3c06f2=_0x1d6634?_0x1b4766['count']:_0x444d60['offset']+_0x444d60['limit'];var _0x54b77f;if(_0x3c06f2>=_0x3ce6c6){_0x3c06f2=_0x3ce6c6;_0x54b77f=0xc8;}else{_0x54b77f=0xce;}_0x1b87d5['status'](_0x54b77f);return _0x1b87d5['set']('Content-Range',_0x302278+'-'+_0x3c06f2+'/'+_0x3ce6c6)[_0x43c9('0x17')](_0x1b4766);}return null;};}function saveUpdates(_0x160bce){return function(_0x518c3e){if(_0x518c3e){return _0x518c3e['update'](_0x160bce)[_0x43c9('0x1b')](function(_0x5e4c79){if(_0x5e4c79[_0x43c9('0x1c')]===_0x43c9('0x1d')){socket[_0x43c9('0x1e')](_0x43c9('0x1f')+_0x5e4c79['id'],_0x5e4c79);}return _0x5e4c79;});}return null;};}function removeEntity(_0x12ead1){return function(_0x2d8ecf){if(_0x2d8ecf){return _0x2d8ecf['destroy']()[_0x43c9('0x1b')](function(){var _0xf256a8=_0x2d8ecf[_0x43c9('0x20')]({'plain':!![]});if(_0xf256a8[_0x43c9('0x1c')]===_0x43c9('0x21'))return;var _0x5a8744=[{'name':_0x43c9('0x22'),'value':_0x43c9('0x23'),'ignore':!![]},{'name':_0x43c9('0x24'),'value':_0x43c9('0x1d'),'ignore':![]},{'name':_0x43c9('0x25'),'value':_0x43c9('0x26'),'ignore':![]}];var _0x4a0f2c=_(_0x5a8744)[_0x43c9('0x27')](_0x43c9('0x28'))['map'](_0x43c9('0x29'))[_0x43c9('0x29')]();if(_[_0x43c9('0x2a')](_0x4a0f2c,_0xf256a8['role'])){return;}var _0x2ef94b=_[_0x43c9('0x2b')](_0x5a8744,[_0x43c9('0x29'),_0xf256a8['role']])['name'];return db[_0x43c9('0x2c')]['destroy']({'where':{'type':_0x2ef94b,'resourceId':_0xf256a8['id']}})[_0x43c9('0x1b')](function(){return _0x2d8ecf;});})[_0x43c9('0x1b')](function(){_0x12ead1['status'](0xcc)[_0x43c9('0x16')]();});}};}function handleEntityNotFound(_0x29cd00){return function(_0x67b4b6){if(!_0x67b4b6){_0x29cd00[_0x43c9('0x14')](0x194);}return _0x67b4b6;};}function handleError(_0x16d26b,_0x214c6d){_0x214c6d=_0x214c6d||0x1f4;return function(_0x3ab93e){logger[_0x43c9('0x2d')](_0x3ab93e['stack']);if(_0x3ab93e[_0x43c9('0x2e')]){delete _0x3ab93e['name'];}_0x16d26b[_0x43c9('0x15')](_0x214c6d)[_0x43c9('0x2f')](_0x3ab93e);};}function getUserAttributes(){return _(db[_0x43c9('0x30')][_0x43c9('0x31')])[_0x43c9('0x32')](function(_0x2e1a08){return{'name':_0x2e1a08[_0x43c9('0x33')],'type':_0x2e1a08[_0x43c9('0x34')]['key']};})[_0x43c9('0x27')](function(_0x45ed5e){return![_0x43c9('0x35'),_0x43c9('0x36'),'previousPasswords',_0x43c9('0x37'),_0x43c9('0x38'),'md5secret'][_0x43c9('0x2a')](_0x45ed5e[_0x43c9('0x2e')]);})[_0x43c9('0x29')]();}exports[_0x43c9('0x39')]=function(_0x40276d,_0x311a10){var _0x461673={},_0x8f00aa={'count':0x0,'rows':[]};var _0x567d52=getUserAttributes();_0x461673=qs[_0x43c9('0x3a')](_0x567d52,_0x40276d);var _0x3305c={'where':_0x461673[_0x43c9('0x3b')]};return db['User'][_0x43c9('0x19')](_0x3305c)['then'](function(_0x29d5c8){_0x8f00aa[_0x43c9('0x19')]=_0x29d5c8;if(_0x40276d[_0x43c9('0x3c')]['includeAll']){_0x461673[_0x43c9('0x3d')]=[{'all':!![]}];}if(_0x40276d['query']['userSetting']==='true'){_0x461673[_0x43c9('0x3d')]=[{'model':db[_0x43c9('0x3e')],'as':'userSetting'}];}if(!_['includes'](_0x461673[_0x43c9('0x3f')],'id')){_0x461673[_0x43c9('0x3f')]['push']('id');}return db[_0x43c9('0x30')][_0x43c9('0x40')](_0x461673);})['then'](function(_0xd43a1){_0x8f00aa['rows']=_0xd43a1;if(_0x40276d[_0x43c9('0x3c')][_0x43c9('0x41')]==='true'){var _0x20781b=[];for(var _0x2bac9e=0x0;_0x2bac9e<_0x8f00aa[_0x43c9('0x42')]['length'];_0x2bac9e++){_0x20781b[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x44'),_0x8f00aa[_0x43c9('0x42')][_0x2bac9e]['dataValues']));_0x20781b[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x45'),_0x8f00aa[_0x43c9('0x42')][_0x2bac9e]['dataValues']));_0x20781b['push'](get_open_tabs(_0x43c9('0x46'),_0x8f00aa[_0x43c9('0x42')][_0x2bac9e]['dataValues']));_0x20781b[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x47'),_0x8f00aa[_0x43c9('0x42')][_0x2bac9e][_0x43c9('0x48')]));_0x20781b[_0x43c9('0x43')](get_open_tabs('openchannel',_0x8f00aa[_0x43c9('0x42')][_0x2bac9e][_0x43c9('0x48')]));_0x20781b[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x49'),_0x8f00aa['rows'][_0x2bac9e]['dataValues']));}return Promise[_0x43c9('0x4a')](_0x20781b)[_0x43c9('0x1b')](function(){return _0x8f00aa;});}else{return _0x8f00aa;}})[_0x43c9('0x1b')](respondWithFilteredResult(_0x311a10,_0x461673))[_0x43c9('0x4b')](handleError(_0x311a10,null));};exports[_0x43c9('0x4c')]=function(_0xe5c27b,_0x1802a6){var _0x3ca464=getUserAttributes();_0xe5c27b[_0x43c9('0x3c')]['id']=_0xe5c27b[_0x43c9('0x4d')]['id'];var _0x32f998=qs['getOptions'](_0x3ca464,_0xe5c27b);if(_0xe5c27b[_0x43c9('0x3c')][_0x43c9('0x4e')]){_0x32f998[_0x43c9('0x3d')]=[{'all':!![]}];}if(_0xe5c27b['query'][_0x43c9('0x4f')]===_0x43c9('0x50')){_0x32f998[_0x43c9('0x3d')]=[{'model':db[_0x43c9('0x3e')],'as':_0x43c9('0x4f')}];}_0x32f998=_[_0x43c9('0x51')]({},_0x32f998,_0xe5c27b[_0x43c9('0x52')]);if(!_[_0x43c9('0x2a')](_0x32f998[_0x43c9('0x3f')],'id')){_0x32f998[_0x43c9('0x3f')][_0x43c9('0x43')]('id');}return db[_0x43c9('0x30')][_0x43c9('0x2b')](_0x32f998)[_0x43c9('0x1b')](handleEntityNotFound(_0x1802a6,null))[_0x43c9('0x1b')](function(_0x52aec5){var _0x597cff=[];values=_0x52aec5;if(_0xe5c27b[_0x43c9('0x3c')]['openTabs']===_0x43c9('0x50')){_0x597cff[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x44'),_0x52aec5['dataValues']));_0x597cff[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x45'),_0x52aec5[_0x43c9('0x48')]));_0x597cff['push'](get_open_tabs(_0x43c9('0x53'),_0x52aec5[_0x43c9('0x48')]));_0x597cff[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x49'),_0x52aec5[_0x43c9('0x48')]));_0x597cff[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x46'),_0x52aec5[_0x43c9('0x48')]));_0x597cff['push'](get_open_tabs(_0x43c9('0x47'),_0x52aec5[_0x43c9('0x48')]));return Promise['all'](_0x597cff);}else{return values;}})[_0x43c9('0x1b')](function(){return values;})['then'](respondWithResult(_0x1802a6,null))[_0x43c9('0x4b')](handleError(_0x1802a6,null));};exports[_0x43c9('0x54')]=function(_0x41ce51,_0x425c0f){if(_0x41ce51['body']['id']){delete _0x41ce51[_0x43c9('0x55')]['id'];}delete _0x41ce51[_0x43c9('0x55')][_0x43c9('0x1c')];return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x41ce51[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x425c0f,null))[_0x43c9('0x1b')](saveUpdates(_0x41ce51[_0x43c9('0x55')],null))['then'](respondWithResult(_0x425c0f,null))[_0x43c9('0x4b')](handleError(_0x425c0f,null));};exports[_0x43c9('0x56')]=function(_0x581f04,_0x3b6399){return db['User'][_0x43c9('0x56')]()['then'](respondWithResult(_0x3b6399,null))[_0x43c9('0x4b')](handleError(_0x3b6399,null));};exports[_0x43c9('0x57')]=function(_0xb21f27,_0x19a746){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0xb21f27[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x19a746,null))['then'](function(_0x1eea6f){if(_0x1eea6f){return _0x1eea6f['addContacts'](_0xb21f27[_0x43c9('0x55')][_0x43c9('0x58')],_[_0x43c9('0x59')](_0xb21f27[_0x43c9('0x55')],[_0x43c9('0x58'),'id'])||{});}})['then'](respondWithResult(_0x19a746,null))[_0x43c9('0x4b')](handleError(_0x19a746,null));};function validateUser(_0x3e3806){return new Promise(function(_0x1e1595,_0x2d03f8){if(_0x3e3806[_0x43c9('0x5a')])return _0x1e1595(_0x3e3806);return db[_0x43c9('0x5b')][_0x43c9('0x5c')](0x1)['then'](function(_0x17b0f6){if(_0x17b0f6['securePassword'])authService[_0x43c9('0x5d')](_0x3e3806['password']);db['User'][_0x43c9('0x5e')]('internal')[_0x43c9('0x1b')](function(_0x2e4b58){if(_[_0x43c9('0x5f')](_0x2e4b58)){_0x3e3806[_0x43c9('0x5a')]=_0x17b0f6['min_internal']||0x1;return;}if(_['isNil'](_0x17b0f6[_0x43c9('0x60')])||_0x17b0f6['min_internal']===_0x2e4b58){_0x3e3806[_0x43c9('0x5a')]=_0x2e4b58+0x1;return;}if(_0x17b0f6['min_internal']>_0x2e4b58){_0x3e3806[_0x43c9('0x5a')]=_0x17b0f6[_0x43c9('0x60')];return;}return db[_0x43c9('0x61')][_0x43c9('0x3c')]('select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)',{'type':db[_0x43c9('0x61')]['QueryTypes'][_0x43c9('0x62')]})['then'](function(_0x3f9f13){if(_0x3f9f13&&_0x3f9f13['length']){for(var _0x491c9e=0x0,_0x5d4dac=_0x3f9f13['length'];_0x491c9e<_0x5d4dac&&_[_0x43c9('0x5f')](_0x3e3806[_0x43c9('0x5a')]);_0x491c9e++){if(_0x17b0f6[_0x43c9('0x60')]<=_0x3f9f13[_0x491c9e][_0x43c9('0x63')]){_0x3e3806[_0x43c9('0x5a')]=_0x3f9f13[_0x491c9e][_0x43c9('0x63')];}else if(_0x17b0f6[_0x43c9('0x60')]>_0x3f9f13[_0x491c9e][_0x43c9('0x63')]&&_0x17b0f6[_0x43c9('0x60')]<=_0x3f9f13[_0x491c9e]['to']){_0x3e3806[_0x43c9('0x5a')]=_0x17b0f6[_0x43c9('0x60')];}}}if(_[_0x43c9('0x5f')](_0x3e3806['internal'])){_0x3e3806[_0x43c9('0x5a')]=_0x2e4b58+0x1;}return _0x1e1595(_0x3e3806);});});})['catch'](function(_0x14af3e){_0x2d03f8(_0x14af3e);});});}function updateUser(_0x47b0e9){return new Promise(function(_0x4456fc,_0x2ae7fe){try{if(_0x47b0e9[_0x43c9('0x64')]){_0x47b0e9[_0x43c9('0x65')]=_0x47b0e9[_0x43c9('0x5a')];_0x47b0e9[_0x43c9('0x66')]={'mailbox':_0x47b0e9[_0x43c9('0x5a')],'password':_0x47b0e9[_0x43c9('0x35')],'fullname':_0x47b0e9[_0x43c9('0x67')],'email':_0x47b0e9['email']};}if(_0x47b0e9[_0x43c9('0x1c')]===_0x43c9('0x1d')){if(!_0x47b0e9[_0x43c9('0x68')])_0x47b0e9[_0x43c9('0x68')]=[_0x43c9('0x69'),_0x43c9('0x6a'),_0x43c9('0x6b'),_0x43c9('0x6c'),_0x43c9('0x6d'),_0x43c9('0x6e'),_0x43c9('0x6f'),_0x43c9('0x70'),'107',_0x43c9('0x71'),_0x43c9('0x72'),_0x43c9('0x73'),_0x43c9('0x74'),_0x43c9('0x75'),_0x43c9('0x76')];}_0x4456fc(_0x47b0e9);}catch(_0x54c928){_0x2ae7fe(_0x54c928);}});}exports[_0x43c9('0x77')]=function(_0x27e0d8,_0x2b206d){if(_0x27e0d8[_0x43c9('0x23')][_0x43c9('0x1c')]===_0x43c9('0x1d'))throw new Error('Unauthorized');if(_0x27e0d8[_0x43c9('0x55')][_0x43c9('0x1c')]===_0x43c9('0x23')&&_0x27e0d8['user'][_0x43c9('0x1c')]!==_0x43c9('0x21')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x27e0d8['body'][_0x43c9('0x1c')]==='admin'&&_0x27e0d8[_0x43c9('0x23')][_0x43c9('0x1c')]!=='admin'){throw new Error(_0x43c9('0x78'));}return licenseUtil[_0x43c9('0x79')]([_0x27e0d8[_0x43c9('0x55')]])[_0x43c9('0x1b')](function(){return validateUser(_0x27e0d8['body']);})['then'](function(_0x2b7b3c){return updateUser(_0x2b7b3c)['then'](function(_0x577b71){if(_0x577b71[_0x43c9('0x1c')]==='admin'){_0x577b71[_0x43c9('0x7a')]=_0x27e0d8[_0x43c9('0x23')][_0x43c9('0x7a')];delete _0x577b71[_0x43c9('0x7b')];}return _0x577b71;});})[_0x43c9('0x1b')](function(_0xb30bc5){return db['User'][_0x43c9('0x77')](_0xb30bc5,{'include':[{'model':db[_0x43c9('0x66')],'as':_0x43c9('0x66')}]});})[_0x43c9('0x1b')](function(_0x445983){if(_0x27e0d8[_0x43c9('0x55')][_0x43c9('0x1c')]==='user')return _0x445983;if(_0x27e0d8['user'][_0x43c9('0x1c')]!=='user')return _0x445983;return db[_0x43c9('0x7c')][_0x43c9('0x2b')]({'where':{'name':_0x445983[_0x43c9('0x1c')]===_0x43c9('0x1d')?_0x43c9('0x24'):_0x43c9('0x25'),'userProfileId':_0x27e0d8[_0x43c9('0x23')][_0x43c9('0x7b')]},'raw':!![]})[_0x43c9('0x1b')](function(_0x321b12){if(!_0x321b12||_0x321b12[_0x43c9('0x7d')]!=0x0)return _0x445983;return db[_0x43c9('0x2c')]['create']({'name':_0x445983[_0x43c9('0x2e')],'resourceId':_0x445983['id'],'type':_0x321b12[_0x43c9('0x2e')],'sectionId':_0x321b12['id']},{})[_0x43c9('0x1b')](function(){return _0x445983;});})[_0x43c9('0x4b')](function(_0x416faa){logger[_0x43c9('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x416faa);throw _0x416faa;});})[_0x43c9('0x1b')](respondWithResult(_0x2b206d,0xc9))['catch'](handleError(_0x2b206d,null));};exports[_0x43c9('0x7e')]=function(_0x4661a1,_0x4397fa){var _0x2d087b=_0x4661a1[_0x43c9('0x55')];var _0x304fe6=[];if(_0x4661a1[_0x43c9('0x23')][_0x43c9('0x1c')]===_0x43c9('0x1d'))throw new Error(_0x43c9('0x7f'));if(_['some'](_0x2d087b,[_0x43c9('0x1c'),'user'])&&_0x4661a1[_0x43c9('0x23')]['role']!==_0x43c9('0x21')){throw new Error(_0x43c9('0x80'));}if(_['some'](_0x2d087b,[_0x43c9('0x1c'),'admin'])&&_0x4661a1[_0x43c9('0x23')][_0x43c9('0x1c')]!==_0x43c9('0x21')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x43c9('0x79')](_0x2d087b)[_0x43c9('0x1b')](function(){return validateUser(_0x2d087b[0x0]);})[_0x43c9('0x1b')](function(){for(var _0xc3c923=0x1;_0xc3c923<_0x2d087b[_0x43c9('0x81')];_0xc3c923++){var _0x4054f0=_0x2d087b[_0xc3c923-0x1]['internal'];if(!_0x2d087b[_0xc3c923]['internal'])_0x2d087b[_0xc3c923][_0x43c9('0x5a')]=_0x4054f0+0x1;_0x304fe6[_0x43c9('0x43')](validateUser(_0x2d087b[_0xc3c923]));}return Promise[_0x43c9('0x4a')](_0x304fe6);})['then'](function(){_0x304fe6=[];for(var _0x25db18=0x0;_0x25db18<_0x2d087b[_0x43c9('0x81')];_0x25db18++){_0x304fe6[_0x43c9('0x43')](updateUser(_0x2d087b[_0x25db18]));}return Promise[_0x43c9('0x4a')](_0x304fe6);})[_0x43c9('0x1b')](function(){_0x304fe6=_0x2d087b[_0x43c9('0x32')](function(_0x340df5){return db[_0x43c9('0x30')]['create'](_0x340df5,{'include':[{'model':db[_0x43c9('0x66')],'as':_0x43c9('0x66')}]})[_0x43c9('0x1b')](function(_0x3910fb){_0x340df5['id']=_0x3910fb['id'];return _0x340df5;});});return Promise[_0x43c9('0x4a')](_0x304fe6);})[_0x43c9('0x1b')](function(_0x240c29){if(_0x4661a1[_0x43c9('0x55')]['role']===_0x43c9('0x23'))return _0x240c29;if(_0x4661a1[_0x43c9('0x23')][_0x43c9('0x1c')]!==_0x43c9('0x23'))return _0x240c29;var _0x3e5628=_[_0x43c9('0x82')](_0x240c29,function(_0x2f971f){return _0x2f971f[_0x43c9('0x1c')]===_0x43c9('0x1d')||_0x2f971f['role']===_0x43c9('0x26');});if(!_0x3e5628)return _0x240c29;return db[_0x43c9('0x7c')][_0x43c9('0x40')]({'where':{'name':{'$or':[_0x43c9('0x24'),'Telephones']},'userProfileId':_0x4661a1[_0x43c9('0x23')]['userProfileId']},'raw':!![]})[_0x43c9('0x1b')](function(_0x4ee1a5){if(_[_0x43c9('0x83')](_0x4ee1a5)||!_[_0x43c9('0x82')](_0x4ee1a5,[_0x43c9('0x7d'),0x0]))return _0x240c29;_0x304fe6=[];var _0x105c0f=_(_0x4ee1a5)[_0x43c9('0x32')](function(_0x209ee5){if(_0x209ee5[_0x43c9('0x7d')]===0x1)return;return _0x209ee5[_0x43c9('0x2e')]===_0x43c9('0x24')?_0x43c9('0x1d'):_0x43c9('0x26');})[_0x43c9('0x84')]()[_0x43c9('0x29')]();for(var _0x515840=0x0;_0x515840<_0x240c29[_0x43c9('0x81')];_0x515840++){if(!_[_0x43c9('0x2a')](_0x105c0f,_0x240c29[_0x515840][_0x43c9('0x1c')]))return;var _0x2c944a=_0x240c29[_0x515840][_0x43c9('0x1c')]===_0x43c9('0x1d')?_0x43c9('0x24'):'Telephones';_0x304fe6[_0x43c9('0x43')](db['UserProfileResource'][_0x43c9('0x77')]({'name':_0x240c29[_0x515840]['name'],'resourceId':_0x240c29[_0x515840]['id'],'type':_0x2c944a,'sectionId':_['find'](_0x4ee1a5,['name',_0x2c944a])['id']},{}));}return Promise[_0x43c9('0x4a')](_0x304fe6);});})[_0x43c9('0x1b')](respondWithResult(_0x4397fa,0xc9))[_0x43c9('0x4b')](handleError(_0x4397fa,null));};exports[_0x43c9('0x85')]=function(_0x238347,_0x489ea7){if(_0x238347[_0x43c9('0x55')]['id']){delete _0x238347['body']['id'];}return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x238347['params']['id']}})[_0x43c9('0x1b')](function(_0x249089){if(!_0x249089)return null;if(_0x249089['id']===_0x238347[_0x43c9('0x23')]['id']){if(!_0x238347[_0x43c9('0x55')]['oldPassword']||!_0x238347[_0x43c9('0x55')][_0x43c9('0x86')]){throw new db[(_0x43c9('0x87'))][(_0x43c9('0x88'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x249089[_0x43c9('0x89')](_0x238347[_0x43c9('0x55')][_0x43c9('0x8a')])){throw new db[(_0x43c9('0x87'))][(_0x43c9('0x88'))](_0x43c9('0x8b'));}if(_0x238347[_0x43c9('0x55')][_0x43c9('0x8a')]===_0x238347[_0x43c9('0x55')][_0x43c9('0x86')]){throw new db[(_0x43c9('0x87'))][(_0x43c9('0x88'))](_0x43c9('0x8c'));}}else if(_0x238347['user'][_0x43c9('0x1c')]==='admin'){if(!_0x238347[_0x43c9('0x55')][_0x43c9('0x86')]){throw new db[(_0x43c9('0x87'))][(_0x43c9('0x88'))](_0x43c9('0x8d'));}}else if(_0x238347['user']['role']===_0x43c9('0x23')){if(!_0x238347[_0x43c9('0x55')][_0x43c9('0x86')]){throw new db['Sequelize'][(_0x43c9('0x88'))](_0x43c9('0x8d'));}if(_0x249089[_0x43c9('0x1c')]!==_0x43c9('0x1d')){throw new db[(_0x43c9('0x87'))]['ValidationError'](_0x43c9('0x7f'));}}else{throw new db['Sequelize'][(_0x43c9('0x88'))](_0x43c9('0x7f'));}return _0x249089;})[_0x43c9('0x1b')](handleEntityNotFound(_0x489ea7,null))[_0x43c9('0x1b')](function(_0x1e473c){return db[_0x43c9('0x5b')][_0x43c9('0x8e')]({'attributes':['id','securePassword',_0x43c9('0x8f'),_0x43c9('0x90')]})[_0x43c9('0x1b')](function(_0x506235){if(_0x506235[_0x43c9('0x91')])authService[_0x43c9('0x5d')](_0x238347[_0x43c9('0x55')][_0x43c9('0x86')]);if(!_0x506235[_0x43c9('0x8f')]||!_0x1e473c[_0x43c9('0x92')])return _0x1e473c;authService[_0x43c9('0x93')](_0x238347[_0x43c9('0x55')]['newPassword'],_0x1e473c['previousPasswords'],_0x506235[_0x43c9('0x90')]);return _0x1e473c;})[_0x43c9('0x1b')](saveUpdates({'password':_0x238347[_0x43c9('0x55')][_0x43c9('0x86')],'passwordResetAt':_0x238347[_0x43c9('0x23')]['id']==_0x238347['params']['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x238347[_0x43c9('0x55')]['newPassword'],_0x1e473c['previousPasswords'])},null));})['then'](respondWithResult(_0x489ea7,null))[_0x43c9('0x4b')](handleError(_0x489ea7,null));};exports[_0x43c9('0x94')]=function(_0xa62c03,_0xd033ef){var _0x5b1d9f=_0xa62c03[_0x43c9('0x55')][_0x43c9('0x95')];return db['User'][_0x43c9('0x2b')]({'where':{'id':_0xa62c03[_0x43c9('0x4d')]['id']},'attributes':['id',_0x43c9('0x2e'),_0x43c9('0x1c'),_0x43c9('0x96'),_0x43c9('0x97'),'voicePause',_0x43c9('0x98')]})['then'](handleEntityNotFound(_0xd033ef,null))[_0x43c9('0x1b')](function(_0x11a77e){if(_0x11a77e){if(!utils[_0x43c9('0x99')](_0x5b1d9f)){throw new db[(_0x43c9('0x87'))][(_0x43c9('0x88'))](_0x43c9('0x9a'));}return _0x11a77e[_0x43c9('0x9b')+_[_0x43c9('0x9c')](_0x5b1d9f[_0x43c9('0x9d')]())+_0x43c9('0x9e')](_0xa62c03[_0x43c9('0x55')][_0x43c9('0x58')],{'penalty':_0xa62c03[_0x43c9('0x55')]['penalty']||0x0})[_0x43c9('0x9f')](function(_0x4bb97f){for(var _0x49d6e8=0x0;_0x49d6e8<_0xa62c03[_0x43c9('0x55')]['ids'][_0x43c9('0x81')];_0x49d6e8+=0x1){var _0x286d23={'UserId':Number(_0xa62c03[_0x43c9('0x4d')]['id'])};_0x286d23[_[_0x43c9('0x9c')](_0x5b1d9f[_0x43c9('0x9d')]())+_0x43c9('0xa0')]=Number(_0xa62c03[_0x43c9('0x55')][_0x43c9('0x58')][_0x49d6e8]);socket['emit'](_0x43c9('0x23')+_[_0x43c9('0x9c')](_0x5b1d9f[_0x43c9('0x9d')]())+_0x43c9('0xa1'),_0x286d23);}return _0x4bb97f;})[_0x43c9('0x1b')](function(){if(_0x5b1d9f===_0x43c9('0xa2')){return db[_0x43c9('0xa3')]['findAll']({'where':{'id':_0xa62c03[_0x43c9('0x55')][_0x43c9('0x58')]||[]},'raw':!![],'attributes':['id',_0x43c9('0x2e')]});}})['then'](function(_0xacbcd9){var _0x3714ac=_0x11a77e[_0x43c9('0x20')]({'plain':!![]});var _0x1c33e5=[];if(_0x5b1d9f===_0x43c9('0xa2')&&_0x3714ac['role']===_0x43c9('0x1d')&&_0x3714ac['online']){for(let _0x59c231=0x0;_0x59c231<_0xacbcd9[_0x43c9('0x81')];_0x59c231+=0x1){_0x1c33e5[_0x43c9('0x43')]({'membername':_0x3714ac[_0x43c9('0x2e')],'UserId':_0x3714ac['id'],'queue_name':_0xacbcd9[_0x59c231]['name'],'VoiceQueueId':_0xacbcd9[_0x59c231]['id'],'interface':_['isNil'](_0x3714ac['interface'])?util['format'](_0x43c9('0xa4'),_0x3714ac[_0x43c9('0x2e')]):_0x3714ac['interface'],'paused':_0x3714ac[_0x43c9('0xa5')]||![],'penalty':_0xa62c03[_0x43c9('0x55')]['penalty']||0x0});}return Promise[_0x43c9('0x4a')](_0x1c33e5[_0x43c9('0x32')](function(_0x1ebf2c){return db[_0x43c9('0xa6')]['upsert'](_0x1ebf2c);}));}return _0x11a77e;});}})[_0x43c9('0x1b')](respondWithStatusCode(_0xd033ef,null))['catch'](handleError(_0xd033ef,null));};exports['removeQueues']=function(_0x33b52c,_0x545d7c){var _0x2555fe,_0x546352;return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x33b52c[_0x43c9('0x4d')]['id']},'attributes':['id',_0x43c9('0x2e'),_0x43c9('0x1c')]})[_0x43c9('0x1b')](handleEntityNotFound(_0x545d7c,null))[_0x43c9('0x1b')](function(_0x121c71){if(_0x121c71){_0x2555fe=_0x121c71;if(!_0x33b52c['query'][_0x43c9('0x95')]||!utils[_0x43c9('0x99')](_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x95')])){throw new db['Sequelize'][(_0x43c9('0x88'))]('Unknown\x20channel');}return _0x121c71[_0x43c9('0xa7')+_['capitalize'](_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x95')][_0x43c9('0x9d')]())+'Queues'](_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x58')]);}})['then'](function(_0x1d9787){if(_[_0x43c9('0xa8')](_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x58')])){for(var _0x5c2052=0x0;_0x5c2052<_0x33b52c['query'][_0x43c9('0x58')][_0x43c9('0x81')];_0x5c2052+=0x1){_0x546352={'UserId':Number(_0x33b52c[_0x43c9('0x4d')]['id'])};_0x546352[_[_0x43c9('0x9c')](_0x33b52c[_0x43c9('0x3c')]['channel'][_0x43c9('0x9d')]())+_0x43c9('0xa0')]=Number(_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x58')][_0x5c2052]);socket['emit'](_0x43c9('0x23')+_[_0x43c9('0x9c')](_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x95')]['toLowerCase']())+_0x43c9('0xa9'),_0x546352);}}else{_0x546352={'UserId':Number(_0x33b52c[_0x43c9('0x4d')]['id'])};_0x546352[_[_0x43c9('0x9c')](_0x33b52c[_0x43c9('0x3c')]['channel'][_0x43c9('0x9d')]())+_0x43c9('0xa0')]=Number(_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x58')]);socket['emit'](_0x43c9('0x23')+_[_0x43c9('0x9c')](_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x95')][_0x43c9('0x9d')]())+_0x43c9('0xa9'),_0x546352);}return _0x1d9787;})[_0x43c9('0x1b')](function(){if(_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x95')]===_0x43c9('0xa2')){return db[_0x43c9('0xa6')][_0x43c9('0xaa')]({'where':{'UserId':_0x33b52c[_0x43c9('0x4d')]['id'],'VoiceQueueId':_0x33b52c[_0x43c9('0x3c')][_0x43c9('0x58')]},'individualHooks':!![]})[_0x43c9('0x1b')](function(){return _0x2555fe;});}return _0x2555fe;})[_0x43c9('0x1b')](respondWithStatusCode(_0x545d7c,null))['catch'](handleError(_0x545d7c,null));};exports[_0x43c9('0xab')]=function(_0x5763a7,_0x496ac9){_0x5763a7['body']['userpic']=_0x5763a7['file'][_0x43c9('0xac')];return db['User']['find']({'where':{'id':_0x5763a7[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x496ac9,null))[_0x43c9('0x1b')](saveUpdates(_0x5763a7[_0x43c9('0x55')],null))[_0x43c9('0x1b')](respondWithResult(_0x496ac9,null))[_0x43c9('0x4b')](handleError(_0x496ac9,null));};exports[_0x43c9('0xad')]=function(_0x28e271,_0x2b2e93){var _0xffae76=path['join'](config[_0x43c9('0xae')],_0x43c9('0xaf'));return db['User'][_0x43c9('0x2b')]({'where':{'id':_0x28e271[_0x43c9('0x4d')]['id']},'attributes':['id','userpic'],'raw':!![]})['then'](handleEntityNotFound(_0x2b2e93,null))[_0x43c9('0x1b')](function(_0x1a4d68){if(_0x1a4d68){if(_[_0x43c9('0x5f')](_0x1a4d68[_0x43c9('0xb0')])){return _0x2b2e93[_0x43c9('0xb1')](_0xffae76);}else{if(!fs[_0x43c9('0xb2')](path[_0x43c9('0xb3')](config[_0x43c9('0xae')],_0x43c9('0xb4'),_0x1a4d68['userpic']))){return _0x2b2e93['download'](_0xffae76);}return _0x2b2e93[_0x43c9('0xb1')](path[_0x43c9('0xb3')](config['root'],_0x43c9('0xb4'),_0x1a4d68[_0x43c9('0xb0')]));}}})[_0x43c9('0x4b')](handleError(_0x2b2e93,null));};exports[_0x43c9('0xb5')]=function(_0x521dc5,_0x2021d6){return db[_0x43c9('0x30')]['find']({'where':{'id':_0x521dc5['params']['id']},'attributes':['id']})[_0x43c9('0x1b')](handleEntityNotFound(_0x2021d6,null))['then'](function(_0x927d87){var _0x409835=[];values=_0x927d87[_0x43c9('0x48')];_0x409835[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x44'),_0x927d87[_0x43c9('0x48')]));_0x409835['push'](get_open_tabs(_0x43c9('0x45'),_0x927d87[_0x43c9('0x48')]));_0x409835[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x53'),_0x927d87[_0x43c9('0x48')]));_0x409835[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x49'),_0x927d87[_0x43c9('0x48')]));_0x409835[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x46'),_0x927d87[_0x43c9('0x48')]));_0x409835[_0x43c9('0x43')](get_open_tabs(_0x43c9('0x47'),_0x927d87['dataValues']));return Promise['all'](_0x409835);})[_0x43c9('0x1b')](function(_0x4e1271){if(_0x4e1271){var _0x16e9fe=_[_0x43c9('0x32')](values[_0x43c9('0xb6')],function(_0x93fccb){return{'channel':_0x43c9('0xb7'),'id':_0x93fccb['id'],'createdAt':_0x93fccb[_0x43c9('0xb8')]};});var _0x40a3d7=_[_0x43c9('0x32')](values['FaxOpenTabs'],function(_0x103b8d){return{'channel':_0x43c9('0xb9'),'id':_0x103b8d['id'],'createdAt':_0x103b8d[_0x43c9('0xb8')]};});var _0x444eab=_[_0x43c9('0x32')](values['OpenchannelOpenTabs'],function(_0x5e276f){return{'channel':_0x43c9('0xba'),'id':_0x5e276f['id'],'createdAt':_0x5e276f['createdAt']};});var _0x3624ac=_[_0x43c9('0x32')](values[_0x43c9('0xbb')],function(_0x5374fb){return{'channel':_0x43c9('0xbc'),'id':_0x5374fb['id'],'createdAt':_0x5374fb['createdAt']};});var _0x4047a1=_['map'](values[_0x43c9('0xbd')],function(_0x50801d){return{'channel':'SMS','id':_0x50801d['id'],'createdAt':_0x50801d[_0x43c9('0xb8')]};});var _0x86b28f=_[_0x43c9('0x32')](values[_0x43c9('0xbe')],function(_0x319f27){return{'channel':_0x43c9('0xbf'),'id':_0x319f27['id'],'createdAt':_0x319f27[_0x43c9('0xb8')]};});var _0x498cf7=_[_0x43c9('0xc0')](_0x16e9fe,_0x40a3d7,_0x444eab,_0x3624ac,_0x4047a1,_0x86b28f);var _0x23dfb1={'count':_0x498cf7[_0x43c9('0x81')],'rows':_0x498cf7};return _0x23dfb1;}else return null;})['then'](respondWithResult(_0x2021d6,null))[_0x43c9('0x4b')](handleError(_0x2021d6,null));};exports[_0x43c9('0xc1')]=function(_0x27e12e,_0x341b4d){var _0x4cbfd4={};return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x27e12e[_0x43c9('0x4d')]['id']}})['then'](function(_0x3150d0){if(!_0x3150d0){throw new APINotFoundError(util[_0x43c9('0xc2')](_0x43c9('0xc3'),_0x27e12e['params']['id']));}return contacts[_0x43c9('0x56')]();})[_0x43c9('0x1b')](function(_0x19cc8a){_0x27e12e[_0x43c9('0x3c')][_0x43c9('0x30')]=_0x27e12e['params']['id'];_0x4cbfd4=qs[_0x43c9('0x3a')](_0x19cc8a,_0x27e12e);if(_0x27e12e[_0x43c9('0x3c')]['hasOwnProperty'](_0x43c9('0x4e'))){_0x4cbfd4['include']=[{'model':db[_0x43c9('0xc4')],'as':_0x43c9('0xc5'),'required':![]},{'model':db[_0x43c9('0xc6')],'as':_0x43c9('0xc7'),'attributes':['id',_0x43c9('0x2e'),_0x43c9('0xc8')],'where':_0x27e12e[_0x43c9('0x3c')][_0x43c9('0xc9')]?{'id':_0x27e12e[_0x43c9('0x3c')]['tag']}:undefined,'required':_0x27e12e['query'][_0x43c9('0xc9')]?!![]:![]}];}return contacts[_0x43c9('0x40')](_0x27e12e[_0x43c9('0x3c')],_0x27e12e['user'],_0x4cbfd4,_0x19cc8a);})[_0x43c9('0x1b')](respondWithFilteredResult(_0x341b4d,_0x4cbfd4))['catch'](APIHandleError(_0x341b4d));};exports[_0x43c9('0xca')]=function(_0xa4fef4,_0x39a0b9){var _0x2dacd9;var _0x1a30da={};var _0x41d05b;return db['User'][_0x43c9('0x8e')]({'where':{'id':_0xa4fef4[_0x43c9('0x4d')]['id']},'attributes':['id',_0x43c9('0x2e'),_0x43c9('0x1c')]})['then'](handleEntityNotFound(_0x39a0b9,null))[_0x43c9('0x1b')](function(_0x1d99ce){if(!utils[_0x43c9('0x99')](_0xa4fef4[_0x43c9('0x3c')]['channel'])){throw new db[(_0x43c9('0x87'))][(_0x43c9('0x88'))](_0x43c9('0x9a'));}_0x2dacd9=_0x1d99ce;var _0x1eca33={};_0x1eca33[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db[_['capitalize'](_0xa4fef4[_0x43c9('0x3c')][_0x43c9('0x95')])+'Queue'][_0x43c9('0x31')]);_0x1eca33[_0x43c9('0x3c')]=_['keys'](_0xa4fef4[_0x43c9('0x3c')]);_0x1eca33[_0x43c9('0xcd')]=_['intersection'](_0x1eca33['model'],_0x1eca33[_0x43c9('0x3c')]);_0x1a30da['attributes']=_['intersection'](_0x1eca33['model'],qs[_0x43c9('0xce')](_0xa4fef4[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x1a30da['attributes']=_0x1a30da[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x1a30da['attributes']:_0x1eca33['model'];_0x1a30da[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0xa4fef4['query'][_0x43c9('0xd0')]);_0x1a30da[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0xa4fef4[_0x43c9('0x3c')],_0x1eca33[_0x43c9('0xcd')]));if(_0xa4fef4['query']['filter']){_0x1a30da[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0x1a30da['where'],{'$or':_[_0x43c9('0x32')](_0x1a30da['attributes'],function(_0x13df14){var _0x1c7b48={};_0x1c7b48[_0x13df14]={'$like':'%'+_0xa4fef4[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x1c7b48;})});}_0x1a30da=_[_0x43c9('0x51')]({},_0x1a30da,_0xa4fef4[_0x43c9('0x52')]);switch(_0x2dacd9[_0x43c9('0x1c')]){case _0x43c9('0x21'):return db[_[_0x43c9('0x9c')](_0xa4fef4[_0x43c9('0x3c')][_0x43c9('0x95')])+_0x43c9('0xd2')][_0x43c9('0x40')](_0x1a30da);case'user':case _0x43c9('0x1d'):return _0x2dacd9[_0x43c9('0x20')+_[_0x43c9('0x9c')](_0xa4fef4[_0x43c9('0x3c')]['channel'])+'Queues'](_0x1a30da);default:throw new db['Sequelize'][(_0x43c9('0x88'))](_0x43c9('0xd3'));}})[_0x43c9('0x1b')](function(_0x28f161){_0x41d05b=_0x28f161[_0x43c9('0x81')];if(!_0xa4fef4[_0x43c9('0x3c')]['hasOwnProperty'](_0x43c9('0xd4'))){_0x1a30da[_0x43c9('0xd5')]=qs['limit'](_0xa4fef4['query'][_0x43c9('0xd5')]);_0x1a30da['offset']=qs['offset'](_0xa4fef4[_0x43c9('0x3c')][_0x43c9('0x1a')]);}switch(_0x2dacd9[_0x43c9('0x1c')]){case'admin':return db[_[_0x43c9('0x9c')](_0xa4fef4[_0x43c9('0x3c')]['channel'])+'Queue'][_0x43c9('0x40')](_0x1a30da);case'user':case'agent':return _0x2dacd9[_0x43c9('0x20')+_[_0x43c9('0x9c')](_0xa4fef4['query'][_0x43c9('0x95')])+_0x43c9('0x9e')](_0x1a30da);}})[_0x43c9('0x1b')](function(_0xb58f4a){return{'count':_0x41d05b,'rows':_0xb58f4a};})[_0x43c9('0x1b')](respondWithResult(_0x39a0b9,null))[_0x43c9('0x4b')](handleError(_0x39a0b9,null));};exports[_0x43c9('0xd6')]=function(_0x5bd4d4,_0x4a593d){var _0x41dc94={};var _0x219dc5={};var _0xe802f1;var _0x312a65;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x5bd4d4[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4a593d,null))['then'](function(_0x3c36f5){if(_0x3c36f5){_0xe802f1=_0x3c36f5;_0x219dc5[_0x43c9('0xcb')]=_['keys'](db[_0x43c9('0xa6')][_0x43c9('0x31')]);_0x219dc5[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x5bd4d4[_0x43c9('0x3c')]);_0x219dc5[_0x43c9('0xcd')]=_['intersection'](_0x219dc5['model'],_0x219dc5[_0x43c9('0x3c')]);_0x41dc94[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x219dc5[_0x43c9('0xcb')],qs['fields'](_0x5bd4d4[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x41dc94[_0x43c9('0x3f')]=_0x41dc94[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x41dc94[_0x43c9('0x3f')]:_0x219dc5[_0x43c9('0xcb')];_0x41dc94[_0x43c9('0xcf')]=qs['sort'](_0x5bd4d4[_0x43c9('0x3c')]['sort']);_0x41dc94[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x5bd4d4[_0x43c9('0x3c')],_0x219dc5[_0x43c9('0xcd')]));if(_0x5bd4d4[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x41dc94['where']=_[_0x43c9('0x51')](_0x41dc94[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x41dc94['attributes'],function(_0x875821){var _0x201dce={};_0x201dce[_0x875821]={'$like':'%'+_0x5bd4d4[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x201dce;})});}_0x41dc94=_[_0x43c9('0x51')]({},_0x41dc94,_0x5bd4d4[_0x43c9('0x52')]);return _0xe802f1[_0x43c9('0xd6')](_0x41dc94);}})[_0x43c9('0x1b')](function(_0x2dc377){if(_0x2dc377){_0x312a65=_0x2dc377['length'];if(!_0x5bd4d4[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x41dc94[_0x43c9('0xd5')]=qs['limit'](_0x5bd4d4['query']['limit']);_0x41dc94[_0x43c9('0x1a')]=qs['offset'](_0x5bd4d4[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0xe802f1['getVoiceQueuesRt'](_0x41dc94);}})[_0x43c9('0x1b')](function(_0x295897){if(_0x295897){return _0x295897?{'count':_0x312a65,'rows':_0x295897}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x4a593d,null))[_0x43c9('0x4b')](handleError(_0x4a593d,null));};exports[_0x43c9('0xd9')]=function(_0x4593bc,_0x57a896){var _0x123d6e={};var _0x17a1a8={};var _0x46a31e;var _0x3c6f76;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x4593bc[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x57a896,null))['then'](function(_0x163bfb){if(_0x163bfb){_0x46a31e=_0x163bfb;_0x17a1a8['model']=_[_0x43c9('0xcc')](db[_0x43c9('0xda')][_0x43c9('0x31')]);_0x17a1a8['query']=_['keys'](_0x4593bc[_0x43c9('0x3c')]);_0x17a1a8[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x17a1a8[_0x43c9('0xcb')],_0x17a1a8[_0x43c9('0x3c')]);_0x123d6e['attributes']=_[_0x43c9('0xd7')](_0x17a1a8['model'],qs[_0x43c9('0xce')](_0x4593bc['query'][_0x43c9('0xce')]));_0x123d6e[_0x43c9('0x3f')]=_0x123d6e[_0x43c9('0x3f')]['length']?_0x123d6e[_0x43c9('0x3f')]:_0x17a1a8['model'];_0x123d6e['order']=qs[_0x43c9('0xd0')](_0x4593bc[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x123d6e['where']=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x4593bc[_0x43c9('0x3c')],_0x17a1a8[_0x43c9('0xcd')]));if(_0x4593bc[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x123d6e['where']=_[_0x43c9('0x51')](_0x123d6e[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x123d6e[_0x43c9('0x3f')],function(_0x4fe86a){var _0x24cee4={};_0x24cee4[_0x4fe86a]={'$like':'%'+_0x4593bc[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x24cee4;})});}_0x123d6e=_[_0x43c9('0x51')]({},_0x123d6e,_0x4593bc['options']);return _0x46a31e['getGroups'](_0x123d6e);}})[_0x43c9('0x1b')](function(_0x18f399){if(_0x18f399){_0x3c6f76=_0x18f399[_0x43c9('0x81')];if(!_0x4593bc[_0x43c9('0x3c')]['hasOwnProperty'](_0x43c9('0xd4'))){_0x123d6e[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x4593bc['query'][_0x43c9('0xd5')]);_0x123d6e[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x4593bc[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x46a31e[_0x43c9('0xd9')](_0x123d6e);}})[_0x43c9('0x1b')](function(_0x9c3c13){if(_0x9c3c13){return _0x9c3c13?{'count':_0x3c6f76,'rows':_0x9c3c13}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x57a896,null))['catch'](handleError(_0x57a896,null));};exports[_0x43c9('0xdb')]=function(_0x579fa9,_0x4a5a18){var _0x257bbd={'raw':!![],'where':{}};var _0x8e2772={};var _0x219a3d={'count':0x0,'rows':[]};return db[_0x43c9('0x30')]['findOne']({'where':{'id':_0x579fa9[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4a5a18,null))[_0x43c9('0x1b')](function(_0x397333){if(_0x397333){_0x8e2772['model']=_['keys'](db[_0x43c9('0xdc')][_0x43c9('0x31')]);_0x8e2772['query']=_['keys'](_0x579fa9[_0x43c9('0x3c')]);_0x8e2772[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x8e2772[_0x43c9('0xcb')],_0x8e2772['query']);_0x257bbd[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x8e2772['model'],qs[_0x43c9('0xce')](_0x579fa9[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x257bbd[_0x43c9('0x3f')]=_0x257bbd[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x257bbd[_0x43c9('0x3f')]:_0x8e2772[_0x43c9('0xcb')];if(!_0x579fa9[_0x43c9('0x3c')]['hasOwnProperty'](_0x43c9('0xd4'))){_0x257bbd[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x579fa9[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x257bbd[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x579fa9[_0x43c9('0x3c')][_0x43c9('0x1a')]);}_0x257bbd[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x579fa9[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x257bbd[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x579fa9[_0x43c9('0x3c')],_0x8e2772[_0x43c9('0xcd')]));_0x257bbd['where'][_0x43c9('0xdd')]=_0x397333['id'];if(_0x579fa9[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x257bbd[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0x257bbd[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x257bbd[_0x43c9('0x3f')],function(_0x21be14){var _0x400dce={};_0x400dce[_0x21be14]={'$like':'%'+_0x579fa9[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x400dce;})});}_0x257bbd=_[_0x43c9('0x51')]({},_0x257bbd,_0x579fa9['options']);return db['VoiceRecording'][_0x43c9('0x19')]({'where':_0x257bbd[_0x43c9('0x3b')]})[_0x43c9('0x1b')](function(_0x410d48){_0x219a3d['count']=_0x410d48;if(_0x579fa9[_0x43c9('0x3c')][_0x43c9('0x4e')]){_0x257bbd[_0x43c9('0x3d')]=[{'all':!![]}];}return db[_0x43c9('0xdc')]['findAll'](_0x257bbd);})[_0x43c9('0x1b')](function(_0x4cf3a2){_0x219a3d[_0x43c9('0x42')]=_0x4cf3a2;return _0x219a3d;});}})[_0x43c9('0x1b')](respondWithFilteredResult(_0x4a5a18,_0x257bbd))[_0x43c9('0x4b')](handleError(_0x4a5a18,null));};exports['getScreenRecordings']=function(_0x256867,_0x1c74eb){var _0x15d533={'raw':!![],'where':{}};var _0x8e08f={};var _0x2ea9de={'count':0x0,'rows':[]};return db['User'][_0x43c9('0x8e')]({'where':{'id':_0x256867[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x1c74eb,null))[_0x43c9('0x1b')](function(_0x470bb9){if(_0x470bb9){_0x8e08f['model']=_[_0x43c9('0xcc')](db['ScreenRecording']['rawAttributes']);_0x8e08f[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x256867[_0x43c9('0x3c')]);_0x8e08f[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x8e08f[_0x43c9('0xcb')],_0x8e08f[_0x43c9('0x3c')]);_0x15d533[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x8e08f[_0x43c9('0xcb')],qs['fields'](_0x256867[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x15d533['attributes']=_0x15d533['attributes'][_0x43c9('0x81')]?_0x15d533[_0x43c9('0x3f')]:_0x8e08f[_0x43c9('0xcb')];if(!_0x256867[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x15d533[_0x43c9('0xd5')]=qs['limit'](_0x256867[_0x43c9('0x3c')]['limit']);_0x15d533[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x256867[_0x43c9('0x3c')][_0x43c9('0x1a')]);}_0x15d533[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x256867[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x15d533[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_['pick'](_0x256867[_0x43c9('0x3c')],_0x8e08f[_0x43c9('0xcd')]));_0x15d533[_0x43c9('0x3b')][_0x43c9('0xdd')]=_0x470bb9['id'];if(_0x256867[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x15d533[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0x15d533[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x15d533[_0x43c9('0x3f')],function(_0x41c2c9){var _0x316cc9={};_0x316cc9[_0x41c2c9]={'$like':'%'+_0x256867[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x316cc9;})});}_0x15d533=_['merge']({},_0x15d533,_0x256867[_0x43c9('0x52')]);return db['ScreenRecording'][_0x43c9('0x19')]({'where':_0x15d533[_0x43c9('0x3b')]})[_0x43c9('0x1b')](function(_0x666ddc){_0x2ea9de[_0x43c9('0x19')]=_0x666ddc;if(_0x256867[_0x43c9('0x3c')][_0x43c9('0x4e')]){_0x15d533[_0x43c9('0x3d')]=[{'all':!![]}];}return db[_0x43c9('0xde')][_0x43c9('0x40')](_0x15d533);})['then'](function(_0x5f1abd){_0x2ea9de[_0x43c9('0x42')]=_0x5f1abd;return _0x2ea9de;});}})[_0x43c9('0x1b')](respondWithFilteredResult(_0x1c74eb,_0x15d533))[_0x43c9('0x4b')](handleError(_0x1c74eb,null));};exports['getChatInteractions']=function(_0x307269,_0x3ed419){var _0x112143={};var _0x2a6198={};var _0x258ac1;var _0x18b5f5;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x307269[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x3ed419,null))[_0x43c9('0x1b')](function(_0x507bae){if(_0x507bae){_0x258ac1=_0x507bae;_0x2a6198[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db['ChatInteraction'][_0x43c9('0x31')]);_0x2a6198[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x307269[_0x43c9('0x3c')]);_0x2a6198[_0x43c9('0xcd')]=_['intersection'](_0x2a6198['model'],_0x2a6198['query']);_0x112143[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x2a6198['model'],qs[_0x43c9('0xce')](_0x307269[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x112143[_0x43c9('0x3f')]=_0x112143[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x112143[_0x43c9('0x3f')]:_0x2a6198['model'];_0x112143[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x307269[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x112143[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x307269[_0x43c9('0x3c')],_0x2a6198['filters']));if(_0x307269[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x112143['where']=_[_0x43c9('0x51')](_0x112143[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x112143[_0x43c9('0x3f')],function(_0x593056){var _0x311dc1={};_0x311dc1[_0x593056]={'$like':'%'+_0x307269[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x311dc1;})});}_0x112143=_['merge']({},_0x112143,_0x307269['options']);return _0x258ac1['getChatInteractions'](_0x112143);}})[_0x43c9('0x1b')](function(_0x2f257b){if(_0x2f257b){_0x18b5f5=_0x2f257b[_0x43c9('0x81')];if(!_0x307269[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x112143[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x307269[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x112143[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x307269[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x258ac1['getChatInteractions'](_0x112143);}})[_0x43c9('0x1b')](function(_0x6c2e09){if(_0x6c2e09){return _0x6c2e09?{'count':_0x18b5f5,'rows':_0x6c2e09}:null;}})['then'](respondWithResult(_0x3ed419,null))[_0x43c9('0x4b')](handleError(_0x3ed419,null));};exports[_0x43c9('0xdf')]=function(_0x422b8e,_0x3da3c8){var _0x4dd138={};var _0x422c39={};var _0x54a2dd;var _0x32daab;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x422b8e['params']['id']}})['then'](handleEntityNotFound(_0x3da3c8,null))[_0x43c9('0x1b')](function(_0x37599e){if(_0x37599e){_0x54a2dd=_0x37599e;_0x422c39[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db[_0x43c9('0xe0')][_0x43c9('0x31')]);_0x422c39[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x422b8e[_0x43c9('0x3c')]);_0x422c39[_0x43c9('0xcd')]=_['intersection'](_0x422c39['model'],_0x422c39[_0x43c9('0x3c')]);_0x4dd138[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x422c39[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0x422b8e['query']['fields']));_0x4dd138[_0x43c9('0x3f')]=_0x4dd138[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x4dd138[_0x43c9('0x3f')]:_0x422c39[_0x43c9('0xcb')];_0x4dd138[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x422b8e['query'][_0x43c9('0xd0')]);_0x4dd138[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x422b8e[_0x43c9('0x3c')],_0x422c39[_0x43c9('0xcd')]));if(_0x422b8e[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x4dd138[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0x4dd138[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x4dd138[_0x43c9('0x3f')],function(_0x3d85c1){var _0x1f73ad={};_0x1f73ad[_0x3d85c1]={'$like':'%'+_0x422b8e[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x1f73ad;})});}_0x4dd138=_['merge']({},_0x4dd138,_0x422b8e[_0x43c9('0x52')]);return _0x54a2dd[_0x43c9('0xdf')](_0x4dd138);}})['then'](function(_0x9f18d7){if(_0x9f18d7){_0x32daab=_0x9f18d7[_0x43c9('0x81')];if(!_0x422b8e['query'][_0x43c9('0xd8')]('nolimit')){_0x4dd138[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x422b8e[_0x43c9('0x3c')]['limit']);_0x4dd138[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x422b8e[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x54a2dd[_0x43c9('0xdf')](_0x4dd138);}})[_0x43c9('0x1b')](function(_0x4943cc){if(_0x4943cc){return _0x4943cc?{'count':_0x32daab,'rows':_0x4943cc}:null;}})['then'](respondWithResult(_0x3da3c8,null))[_0x43c9('0x4b')](handleError(_0x3da3c8,null));};exports[_0x43c9('0xe1')]=function(_0x492c7f,_0x1aee2e){var _0x38cda6={'raw':!![],'where':{}};var _0x4ef59e={};var _0x4687f3={'count':0x0,'rows':[]};return db[_0x43c9('0x30')]['findOne']({'where':{'id':_0x492c7f[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x1aee2e,null))['then'](function(_0x1e1928){if(_0x1e1928){_0x4ef59e[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db[_0x43c9('0xe2')][_0x43c9('0x31')]);_0x4ef59e[_0x43c9('0x3c')]=_['keys'](_0x492c7f['query']);_0x4ef59e[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x4ef59e['model'],_0x4ef59e[_0x43c9('0x3c')]);_0x38cda6[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x4ef59e['model'],qs['fields'](_0x492c7f[_0x43c9('0x3c')]['fields']));_0x38cda6[_0x43c9('0x3f')]=_0x38cda6[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x38cda6[_0x43c9('0x3f')]:_0x4ef59e[_0x43c9('0xcb')];if(!_0x492c7f[_0x43c9('0x3c')][_0x43c9('0xd8')]('nolimit')){_0x38cda6['limit']=qs['limit'](_0x492c7f[_0x43c9('0x3c')]['limit']);_0x38cda6[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x492c7f[_0x43c9('0x3c')][_0x43c9('0x1a')]);}_0x38cda6[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x492c7f['query'][_0x43c9('0xd0')]);_0x38cda6['where']=qs[_0x43c9('0xcd')](_['pick'](_0x492c7f[_0x43c9('0x3c')],_0x4ef59e[_0x43c9('0xcd')]));_0x38cda6[_0x43c9('0x3b')][_0x43c9('0xdd')]=_0x1e1928['id'];if(_0x492c7f[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x38cda6[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0x38cda6['where'],{'$or':_[_0x43c9('0x32')](_0x38cda6[_0x43c9('0x3f')],function(_0x2151a4){var _0x1c9170={};_0x1c9170[_0x2151a4]={'$like':'%'+_0x492c7f[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x1c9170;})});}_0x38cda6=_[_0x43c9('0x51')]({},_0x38cda6,_0x492c7f['options']);return db[_0x43c9('0xe2')]['count']({'where':_0x38cda6[_0x43c9('0x3b')]})[_0x43c9('0x1b')](function(_0x24ff82){_0x4687f3[_0x43c9('0x19')]=_0x24ff82;if(_0x492c7f['query'][_0x43c9('0x4e')]){_0x38cda6[_0x43c9('0x3d')]=[{'all':!![]}];}return db[_0x43c9('0xe2')][_0x43c9('0x40')](_0x38cda6);})[_0x43c9('0x1b')](function(_0x25777e){_0x4687f3['rows']=_0x25777e;return _0x4687f3;});}})[_0x43c9('0x1b')](respondWithFilteredResult(_0x1aee2e,_0x38cda6))[_0x43c9('0x4b')](handleError(_0x1aee2e,null));};exports[_0x43c9('0xe3')]=function(_0xd04b14,_0x39e971){var _0x47d170={};var _0x3377dd={};var _0x30b320;var _0x160663;return db['User'][_0x43c9('0x8e')]({'where':{'id':_0xd04b14[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x39e971,null))[_0x43c9('0x1b')](function(_0x2ae039){if(_0x2ae039){_0x30b320=_0x2ae039;_0x3377dd[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db[_0x43c9('0xe4')][_0x43c9('0x31')]);_0x3377dd[_0x43c9('0x3c')]=_['keys'](_0xd04b14[_0x43c9('0x3c')]);_0x3377dd[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x3377dd['model'],_0x3377dd[_0x43c9('0x3c')]);_0x47d170[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x3377dd[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0xd04b14['query'][_0x43c9('0xce')]));_0x47d170[_0x43c9('0x3f')]=_0x47d170[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x47d170[_0x43c9('0x3f')]:_0x3377dd['model'];_0x47d170[_0x43c9('0xcf')]=qs['sort'](_0xd04b14[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x47d170[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_['pick'](_0xd04b14[_0x43c9('0x3c')],_0x3377dd[_0x43c9('0xcd')]));if(_0xd04b14[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x47d170[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0x47d170[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x47d170['attributes'],function(_0x1688bb){var _0x7f138b={};_0x7f138b[_0x1688bb]={'$like':'%'+_0xd04b14[_0x43c9('0x3c')]['filter']+'%'};return _0x7f138b;})});}_0x47d170=_[_0x43c9('0x51')]({},_0x47d170,_0xd04b14['options']);return _0x30b320[_0x43c9('0xe3')](_0x47d170);}})[_0x43c9('0x1b')](function(_0x412895){if(_0x412895){_0x160663=_0x412895[_0x43c9('0x81')];if(!_0xd04b14[_0x43c9('0x3c')][_0x43c9('0xd8')]('nolimit')){_0x47d170[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0xd04b14['query'][_0x43c9('0xd5')]);_0x47d170['offset']=qs[_0x43c9('0x1a')](_0xd04b14['query'][_0x43c9('0x1a')]);}return _0x30b320[_0x43c9('0xe3')](_0x47d170);}})[_0x43c9('0x1b')](function(_0x16ac28){if(_0x16ac28){return _0x16ac28?{'count':_0x160663,'rows':_0x16ac28}:null;}})['then'](respondWithResult(_0x39e971,null))[_0x43c9('0x4b')](handleError(_0x39e971,null));};exports[_0x43c9('0xe5')]=function(_0x5c0c7b,_0x23f94a){var _0x2df441={};var _0x9e09ea={};var _0x51939c;var _0x2b47a2;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x5c0c7b[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x23f94a,null))[_0x43c9('0x1b')](function(_0x5012f3){if(_0x5012f3){_0x51939c=_0x5012f3;_0x9e09ea['model']=_[_0x43c9('0xcc')](db[_0x43c9('0xe6')][_0x43c9('0x31')]);_0x9e09ea['query']=_[_0x43c9('0xcc')](_0x5c0c7b[_0x43c9('0x3c')]);_0x9e09ea[_0x43c9('0xcd')]=_['intersection'](_0x9e09ea[_0x43c9('0xcb')],_0x9e09ea[_0x43c9('0x3c')]);_0x2df441[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x9e09ea[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0x5c0c7b[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x2df441['attributes']=_0x2df441[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x2df441['attributes']:_0x9e09ea[_0x43c9('0xcb')];_0x2df441[_0x43c9('0xcf')]=qs['sort'](_0x5c0c7b[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x2df441['where']=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x5c0c7b[_0x43c9('0x3c')],_0x9e09ea[_0x43c9('0xcd')]));if(_0x5c0c7b[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x2df441['where']=_[_0x43c9('0x51')](_0x2df441['where'],{'$or':_['map'](_0x2df441[_0x43c9('0x3f')],function(_0x90c109){var _0x4a4448={};_0x4a4448[_0x90c109]={'$like':'%'+_0x5c0c7b['query'][_0x43c9('0x27')]+'%'};return _0x4a4448;})});}_0x2df441=_['merge']({},_0x2df441,_0x5c0c7b[_0x43c9('0x52')]);return _0x51939c[_0x43c9('0xe5')](_0x2df441);}})[_0x43c9('0x1b')](function(_0x23b0b4){if(_0x23b0b4){_0x2b47a2=_0x23b0b4['length'];if(!_0x5c0c7b['query'][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x2df441['limit']=qs[_0x43c9('0xd5')](_0x5c0c7b[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x2df441[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x5c0c7b[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x51939c[_0x43c9('0xe5')](_0x2df441);}})[_0x43c9('0x1b')](function(_0x3df4c3){if(_0x3df4c3){return _0x3df4c3?{'count':_0x2b47a2,'rows':_0x3df4c3}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x23f94a,null))['catch'](handleError(_0x23f94a,null));};exports[_0x43c9('0xe7')]=function(_0x3ca8ff,_0x5e891e){var _0x5d16cd={};var _0x24aaf0={};var _0x3a5fcd;var _0x3fd5d7;return db['User'][_0x43c9('0x8e')]({'where':{'id':_0x3ca8ff[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5e891e,null))[_0x43c9('0x1b')](function(_0x3a1902){if(_0x3a1902){_0x3a5fcd=_0x3a1902;_0x24aaf0[_0x43c9('0xcb')]=_['keys'](db[_0x43c9('0xe8')][_0x43c9('0x31')]);_0x24aaf0[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x3ca8ff[_0x43c9('0x3c')]);_0x24aaf0[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x24aaf0['model'],_0x24aaf0[_0x43c9('0x3c')]);_0x5d16cd['attributes']=_[_0x43c9('0xd7')](_0x24aaf0[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0x3ca8ff[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x5d16cd[_0x43c9('0x3f')]=_0x5d16cd[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x5d16cd[_0x43c9('0x3f')]:_0x24aaf0[_0x43c9('0xcb')];_0x5d16cd['order']=qs[_0x43c9('0xd0')](_0x3ca8ff['query']['sort']);_0x5d16cd['where']=qs[_0x43c9('0xcd')](_['pick'](_0x3ca8ff[_0x43c9('0x3c')],_0x24aaf0[_0x43c9('0xcd')]));if(_0x3ca8ff[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x5d16cd['where']=_['merge'](_0x5d16cd[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x5d16cd[_0x43c9('0x3f')],function(_0x510d05){var _0x2ebc41={};_0x2ebc41[_0x510d05]={'$like':'%'+_0x3ca8ff[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x2ebc41;})});}_0x5d16cd=_[_0x43c9('0x51')]({},_0x5d16cd,_0x3ca8ff[_0x43c9('0x52')]);return _0x3a5fcd['getWhatsappInteractions'](_0x5d16cd);}})['then'](function(_0x55a11c){if(_0x55a11c){_0x3fd5d7=_0x55a11c[_0x43c9('0x81')];if(!_0x3ca8ff[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x5d16cd['limit']=qs['limit'](_0x3ca8ff[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x5d16cd['offset']=qs['offset'](_0x3ca8ff[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x3a5fcd[_0x43c9('0xe7')](_0x5d16cd);}})[_0x43c9('0x1b')](function(_0x94b6fc){if(_0x94b6fc){return _0x94b6fc?{'count':_0x3fd5d7,'rows':_0x94b6fc}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x5e891e,null))[_0x43c9('0x4b')](handleError(_0x5e891e,null));};exports['login']=function(_0x4c061c,_0x38d110,_0x5ba394){var _0x1edec9;var _0x525c38;var _0xea4f9;var _0x8c366e=!_[_0x43c9('0x5f')](_0x4c061c[_0x43c9('0x4d')]['id'])?_0x4c061c[_0x43c9('0x4d')]['id']:!_[_0x43c9('0x5f')](_0x4c061c['user']['id'])?_0x4c061c['user']['id']:null;return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x8c366e,'role':{'$or':[_0x43c9('0x21'),'user',_0x43c9('0x1d')]}},'attributes':['id',_0x43c9('0x2e'),_0x43c9('0xe9'),_0x43c9('0xea'),'role','internal',_0x43c9('0x97')]})['then'](function(_0x3b4531){if(_0x3b4531){if(_0x3b4531[_0x43c9('0x1c')]==='agent'){_0x1edec9=_0x3b4531;if(_0x4c061c[_0x43c9('0x55')][_0x43c9('0x98')]){_0xea4f9=util['format'](_0x43c9('0xeb'),_0x1edec9[_0x4c061c[_0x43c9('0x55')][_0x43c9('0x98')]]);}else if(_0x4c061c['body'][_0x43c9('0xec')]){_0xea4f9=util[_0x43c9('0xc2')]('SIP/%s',_0x4c061c[_0x43c9('0x55')][_0x43c9('0xec')]);}else{_0xea4f9=util[_0x43c9('0xc2')](_0x43c9('0xa4'),_0x1edec9['name']);}socket['to'](util[_0x43c9('0xc2')](_0x43c9('0xed'),_0x1edec9[_0x43c9('0x2e')]))[_0x43c9('0x1e')](_0x43c9('0xee'),{'user':{'id':_0x1edec9['id'],'name':_0x1edec9[_0x43c9('0x2e')]},'ip':_0x4c061c[_0x43c9('0xef')][_0x43c9('0xf0')]||_0x4c061c[_0x43c9('0xf1')][_0x43c9('0xf2')]||_0x4c061c[_0x43c9('0xf3')][_0x43c9('0xf2')]||_0x4c061c['connection']['socket'][_0x43c9('0xf2')]});return db['UserVoiceQueueRt'][_0x43c9('0xaa')]({'where':{'membername':_0x1edec9['name']},'individualHooks':!![]});}}else{throw new db[(_0x43c9('0x87'))][(_0x43c9('0x88'))](_0x43c9('0xf4'));}})['then'](function(){if(_0x1edec9){return _0x1edec9[_0x43c9('0xf5')]({'raw':!![]});}})[_0x43c9('0x1b')](function(_0x3d06d9){if(_0x1edec9){if(_0x3d06d9){_0x525c38=_0x3d06d9;if(_0x525c38[_0x43c9('0x81')]){var _0x228fe5=_0x525c38['map'](function(_0x1fe92e){var _0x4e0da7={'membername':_0x1edec9[_0x43c9('0x2e')],'UserId':_0x1edec9['id'],'queue_name':_0x1fe92e['name'],'VoiceQueueId':_0x1fe92e['id'],'interface':_0xea4f9,'paused':_0x1edec9[_0x43c9('0x97')]||![],'penalty':_0x1fe92e['UserVoiceQueue.penalty']||0x0};return db[_0x43c9('0xa6')][_0x43c9('0xf6')](_0x4e0da7);});return Promise[_0x43c9('0x4a')](_0x228fe5);}}}})['then'](function(){if(_0x1edec9){return db['MemberReport'][_0x43c9('0x40')]({'where':{'membername':_0x1edec9['name'],'exitAt':null}});}})[_0x43c9('0x1b')](function(_0x81c67b){if(_0x1edec9){var _0x23c0c5=[];_0x81c67b['forEach'](function(_0x141154){_0x23c0c5[_0x43c9('0x43')](_0x141154[_0x43c9('0x54')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise['all'](_0x23c0c5);}})['then'](function(){if(_0x1edec9){var _0x4a37a6=[];var _0x49b9a1=[];var _0x16f05b=utils[_0x43c9('0xf7')]();var _0x57325c={'membername':_0x1edec9['name'],'interface':_0xea4f9,'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x1edec9['role'],'internal':_0x1edec9[_0x43c9('0x5a')]};_0x16f05b[_0x43c9('0xf8')](function(_0x488a26){_0x4a37a6[_0x43c9('0x43')](_['merge']({'channel':_0x488a26,'type':_0x43c9('0xf9'),'data1':_0x4c061c[_0x43c9('0x55')][_0x43c9('0xfa')],'data2':_0xea4f9},_0x57325c));if(_0x1edec9[_0x43c9('0x97')]){_0x49b9a1[_0x43c9('0x43')](_[_0x43c9('0x51')]({'channel':_0x488a26,'type':_0x43c9('0xfb'),'data1':_0x43c9('0xfc')},_0x57325c));}});return db['MemberReport'][_0x43c9('0x7e')](_0x4a37a6[_0x43c9('0xc0')](_0x49b9a1),{'individualHooks':!![]});}})[_0x43c9('0x1b')](function(){if(_0x1edec9){return _0x1edec9[_0x43c9('0x54')]({'online':!![],'lastLoginAt':moment()[_0x43c9('0xc2')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x1edec9[_0x43c9('0x97')]||![],'mailPause':_0x1edec9[_0x43c9('0x97')]||![],'chatPause':_0x1edec9[_0x43c9('0x97')]||![],'faxPause':_0x1edec9[_0x43c9('0x97')]||![],'smsPause':_0x1edec9[_0x43c9('0x97')]||![],'openchannelPause':_0x1edec9[_0x43c9('0x97')]||![],'whatsappPause':_0x1edec9[_0x43c9('0x97')]||![],'pauseType':_0x1edec9[_0x43c9('0x97')]?'LOGININPAUSE':null,'interface':_0xea4f9,'lastPauseAt':moment()[_0x43c9('0xc2')](_0x43c9('0xfd'))});}})[_0x43c9('0x1b')](function(_0x4dd8ff){if(_0x4c061c[_0x43c9('0xfe')]){return _0x5ba394();}else{return Promise['resolve'](_0x4dd8ff)[_0x43c9('0x1b')](respondWithResult(_0x38d110,null));}})[_0x43c9('0x4b')](handleError(_0x38d110,null));};exports[_0x43c9('0xff')]=function(_0x2faa3e,_0x34149e){var _0x3763e3;return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x2faa3e['params']['id'],'role':_0x43c9('0x1d')},'attributes':['id',_0x43c9('0x2e'),_0x43c9('0x1c')]})[_0x43c9('0x1b')](handleEntityNotFound(_0x34149e,null))['then'](function(_0x1031d7){if(_0x1031d7){_0x3763e3=_0x1031d7;return db[_0x43c9('0xa6')][_0x43c9('0xaa')]({'where':{'membername':_0x3763e3[_0x43c9('0x2e')]},'individualHooks':!![]});}})[_0x43c9('0x1b')](function(){return db['MemberReport'][_0x43c9('0x40')]({'where':{'membername':_0x3763e3[_0x43c9('0x2e')],'exitAt':null}});})[_0x43c9('0x1b')](function(_0x3b6647){var _0x86a444=[];_0x3b6647[_0x43c9('0xf8')](function(_0x4c0100){_0x86a444[_0x43c9('0x43')](_0x4c0100['update']({'exitAt':moment()[_0x43c9('0xc2')](_0x43c9('0xfd'))}));});return Promise[_0x43c9('0x4a')](_0x86a444);})['then'](function(){return _0x3763e3[_0x43c9('0x54')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x43c9('0x1b')](respondWithResult(_0x34149e,null))[_0x43c9('0x4b')](handleError(_0x34149e,null));};exports[_0x43c9('0x100')]=function(_0x45dae7,_0x51a9d8){var _0x9d4bd1;return db[_0x43c9('0xa6')]['update']({'paused':0x1},{'where':{'UserId':_0x45dae7[_0x43c9('0x4d')]['id']},'individualHooks':!![]})[_0x43c9('0x1b')](function(){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x45dae7[_0x43c9('0x4d')]['id'],'role':_0x43c9('0x1d')},'attributes':['id',_0x43c9('0x2e'),_0x43c9('0x1c'),_0x43c9('0x5a'),_0x43c9('0x98'),_0x43c9('0x96')]});})['then'](handleEntityNotFound(_0x51a9d8,null))[_0x43c9('0x1b')](function(_0x312286){if(_0x312286){_0x9d4bd1=_0x312286;return db[_0x43c9('0x101')][_0x43c9('0x40')]({'where':{'membername':_0x9d4bd1[_0x43c9('0x2e')],'type':'PAUSE','exitAt':null}});}})[_0x43c9('0x1b')](function(_0x2a5a84){if(_0x2a5a84[_0x43c9('0x81')]){var _0x56774c=moment()[_0x43c9('0xc2')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x278df7=0x0,_0x2fec88=_0x2a5a84['length'];_0x278df7<_0x2fec88;_0x278df7++){_0x2a5a84[_0x278df7][_0x43c9('0x102')]({'exitAt':_0x56774c});}}})[_0x43c9('0x1b')](function(){var _0x3756f9=[];var _0x1e6495=utils[_0x43c9('0xf7')]();_0x1e6495[_0x43c9('0xf8')](function(_0x4651f2){_0x3756f9[_0x43c9('0x43')]({'channel':_0x4651f2,'membername':_0x9d4bd1[_0x43c9('0x2e')],'interface':_[_0x43c9('0x5f')](_0x9d4bd1[_0x43c9('0x98')])?util[_0x43c9('0xc2')](_0x43c9('0xa4'),_0x9d4bd1['name']):_0x9d4bd1[_0x43c9('0x98')],'type':_0x43c9('0xfb'),'enterAt':moment()[_0x43c9('0xc2')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x45dae7['body'][_0x43c9('0x34')]||'DEFAULT\x20PAUSE','role':_0x9d4bd1[_0x43c9('0x1c')],'internal':_0x9d4bd1[_0x43c9('0x5a')]});});return db[_0x43c9('0x101')][_0x43c9('0x7e')](_0x3756f9,{'individualHooks':!![]});})['then'](function(){return _0x9d4bd1['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x45dae7['body'][_0x43c9('0x34')]||_0x43c9('0x103'),'lastPauseAt':moment()['format'](_0x43c9('0xfd'))});})[_0x43c9('0x1b')](respondWithResult(_0x51a9d8,null))[_0x43c9('0x4b')](handleError(_0x51a9d8,null));};exports[_0x43c9('0x104')]=function(_0x4dc9db,_0x31b59c){if(_0x4dc9db[_0x43c9('0x55')][_0x43c9('0x95')]&&!utils[_0x43c9('0x99')](_0x4dc9db['body'][_0x43c9('0x95')])){throw new APIBadRequestError(util['format'](_0x43c9('0x105'),_0x4dc9db['body'][_0x43c9('0x95')]));}return db[_0x43c9('0x30')]['find']({'where':{'id':_0x4dc9db[_0x43c9('0x4d')]['id']},'attributes':['id',_0x43c9('0x2e'),_0x43c9('0x1c'),_0x43c9('0x5a'),_0x43c9('0x98'),'online',_0x43c9('0xa5'),_0x43c9('0x106'),_0x43c9('0x107'),_0x43c9('0x108'),'openchannelPause','smsPause',_0x43c9('0x109'),'pauseType','lastPauseAt']})[_0x43c9('0x1b')](function(_0x693cbe){if(!_0x693cbe){throw new APINotFoundError(util[_0x43c9('0xc2')](_0x43c9('0xc3'),_0x4dc9db[_0x43c9('0x4d')]['id']));}return _0x693cbe[_0x43c9('0x104')](_0x4dc9db[_0x43c9('0x55')][_0x43c9('0x95')]);})[_0x43c9('0x1b')](respondWithResult(_0x31b59c,null))[_0x43c9('0x4b')](APIHandleError(_0x31b59c));};exports[_0x43c9('0x10a')]=function(_0x2212d2,_0x81af15){var _0x279a1e={};var _0x2834e4={};var _0x15af79;var _0x46322d;return db['User'][_0x43c9('0x8e')]({'where':{'id':_0x2212d2[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x81af15,null))['then'](function(_0x2bc1ae){if(_0x2bc1ae){_0x15af79=_0x2bc1ae;_0x2834e4['model']=_[_0x43c9('0xcc')](db[_0x43c9('0x10b')][_0x43c9('0x31')]);_0x2834e4[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x2212d2[_0x43c9('0x3c')]);_0x2834e4[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x2834e4['model'],_0x2834e4[_0x43c9('0x3c')]);_0x279a1e[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x2834e4[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0x2212d2[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x279a1e['attributes']=_0x279a1e[_0x43c9('0x3f')]['length']?_0x279a1e[_0x43c9('0x3f')]:_0x2834e4[_0x43c9('0xcb')];_0x279a1e[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x2212d2['query']['sort']);_0x279a1e[_0x43c9('0x3b')]=qs['filters'](_[_0x43c9('0xd1')](_0x2212d2[_0x43c9('0x3c')],_0x2834e4[_0x43c9('0xcd')]));if(_0x2212d2[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x279a1e['where']=_['merge'](_0x279a1e[_0x43c9('0x3b')],{'$or':_['map'](_0x279a1e[_0x43c9('0x3f')],function(_0x5ca88e){var _0x4a86d0={};_0x4a86d0[_0x5ca88e]={'$like':'%'+_0x2212d2[_0x43c9('0x3c')]['filter']+'%'};return _0x4a86d0;})});}_0x279a1e=_[_0x43c9('0x51')]({},_0x279a1e,_0x2212d2[_0x43c9('0x52')]);return _0x15af79[_0x43c9('0x10a')](_0x279a1e);}})['then'](function(_0xa0a98){if(_0xa0a98){_0x46322d=_0xa0a98['length'];if(!_0x2212d2[_0x43c9('0x3c')]['hasOwnProperty']('nolimit')){_0x279a1e[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x2212d2[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x279a1e[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x2212d2[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x15af79[_0x43c9('0x10a')](_0x279a1e);}})[_0x43c9('0x1b')](function(_0x461ee8){if(_0x461ee8){return _0x461ee8?{'count':_0x46322d,'rows':_0x461ee8}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x81af15,null))[_0x43c9('0x4b')](handleError(_0x81af15,null));};exports['addTeams']=function(_0x1c2225,_0x15a0ce){var _0x14b11e=_0x1c2225[_0x43c9('0x4d')]['id'];var _0x13b579=_0x1c2225[_0x43c9('0x55')]?_0x1c2225[_0x43c9('0x55')][_0x43c9('0x58')]:null;var _0x309d63=[];return Promise['resolve']()[_0x43c9('0x1b')](function(){if(!_0x13b579)throw new APIBadRequestError(_0x43c9('0x10c'));})[_0x43c9('0x1b')](function(){return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x14b11e}});})['then'](function(_0x1079f1){if(!_0x1079f1)throw new APINotFoundError(util['format'](_0x43c9('0xc3'),_0x1c2225[_0x43c9('0x4d')]['id']));return db[_0x43c9('0x61')][_0x43c9('0x10d')](function(_0x40ff37){return _0x1079f1[_0x43c9('0x10e')](_0x13b579,{'transaction':_0x40ff37})['then'](function(){return db['Team'][_0x43c9('0x40')]({'where':{'id':{'$in':_0x13b579}}});})[_0x43c9('0x1b')](function(_0x47c143){var _0x1be9b3=_[_0x43c9('0x32')](_0x47c143,function(_0x1ef189){return _0x1ef189[_0x43c9('0x10f')]();});return Promise[_0x43c9('0x4a')](_0x1be9b3);})[_0x43c9('0x1b')](function(_0x5326d0){_0x309d63=_[_0x43c9('0x110')](_0x5326d0);var _0x36fd64=_[_0x43c9('0x32')](_0x309d63,function(_0x38f5ce){return _0x38f5ce[_0x43c9('0x111')](_0x1079f1['id'],{'transaction':_0x40ff37});});return Promise[_0x43c9('0x4a')](_0x36fd64);})[_0x43c9('0x1b')](function(){if(!_0x1079f1['online'])return;var _0x4ffba4=_[_0x43c9('0x27')](_0x309d63,function(_0x345950){return _0x345950[_0x43c9('0x112')](_0x43c9('0x95'))===_0x43c9('0x113');});var _0x20e480=_[_0x43c9('0x32')](_0x4ffba4,function(_0x15a0cf){return db[_0x43c9('0xa6')][_0x43c9('0xf6')]({'membername':_0x1079f1[_0x43c9('0x2e')],'UserId':_0x1079f1['id'],'queue_name':_0x15a0cf[_0x43c9('0x2e')],'VoiceQueueId':_0x15a0cf['id'],'interface':_[_0x43c9('0x5f')](_0x1079f1[_0x43c9('0x98')])?util['format'](_0x43c9('0xa4'),_0x1079f1[_0x43c9('0x2e')]):_0x1079f1[_0x43c9('0x98')],'paused':_0x1079f1[_0x43c9('0xa5')]||![],'penalty':_0x1079f1[_0x43c9('0x114')]},{'transaction':_0x40ff37});});return Promise[_0x43c9('0x4a')](_0x20e480);})[_0x43c9('0x1b')](function(){return db['TeamVoicePrefix'][_0x43c9('0x40')]({'where':{'teamId':{'$in':_0x13b579}}});})['then'](function(_0xd96824){var _0x181e04=_[_0x43c9('0x32')](_0xd96824,function(_0x28e837){return db[_0x43c9('0x115')][_0x43c9('0x77')]({'UserId':_0x1079f1['id'],'VoicePrefixId':_0x28e837[_0x43c9('0x116')]},{'transaction':_0x40ff37});});return Promise['all'](_0x181e04);});});})[_0x43c9('0x1b')](function(){for(var _0x4593dc=0x0;_0x4593dc<_0x309d63[_0x43c9('0x81')];_0x4593dc++){var _0x2dfe25=_0x309d63[_0x4593dc][_0x43c9('0x112')](_0x43c9('0x95'));var _0x14121f=_0x2dfe25+'QueueId';socket['emit'](_0x43c9('0x23')+_0x2dfe25+_0x43c9('0xa1'),{'UserId':_0x14b11e,['queueField']:_0x309d63[_0x4593dc]['id']});}})[_0x43c9('0x1b')](respondWithStatusCode(_0x15a0ce,null))[_0x43c9('0x4b')](APIHandleError(_0x15a0ce));};exports['removeTeams']=function(_0x398c2f,_0x2602b0){var _0x5ec96f=_0x398c2f[_0x43c9('0x4d')]['id'];var _0x8f1999=null;if(_0x398c2f['query'][_0x43c9('0x58')]){_0x8f1999=_[_0x43c9('0xa8')](_0x398c2f[_0x43c9('0x3c')][_0x43c9('0x58')])?_0x398c2f[_0x43c9('0x3c')][_0x43c9('0x58')]:[_0x398c2f[_0x43c9('0x3c')][_0x43c9('0x58')]];}var _0x340534=[];return Promise['resolve']()['then'](function(){if(!_0x8f1999)throw new APIBadRequestError(_0x43c9('0x117'));})[_0x43c9('0x1b')](function(){return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x5ec96f}});})[_0x43c9('0x1b')](function(_0x3d953f){if(!_0x3d953f)throw new APINotFoundError(util[_0x43c9('0xc2')](_0x43c9('0xc3'),_0x398c2f[_0x43c9('0x4d')]['id']));return db[_0x43c9('0x61')][_0x43c9('0x10d')](function(_0x49dc96){return _0x3d953f[_0x43c9('0x118')](_0x8f1999,{'transaction':_0x49dc96})[_0x43c9('0x1b')](function(){return db['Team']['findAll']({'where':{'id':{'$in':_0x8f1999}}});})['then'](function(_0x3c0d83){var _0x58392a=_[_0x43c9('0x32')](_0x3c0d83,function(_0x33a46c){return _0x33a46c['getAssociatedQueues']();});return Promise[_0x43c9('0x4a')](_0x58392a);})[_0x43c9('0x1b')](function(_0x278c2e){_0x340534=_[_0x43c9('0x110')](_0x278c2e);var _0x5a0b95=_[_0x43c9('0x32')](_0x340534,function(_0x5e5f27){return _0x5e5f27[_0x43c9('0x119')](_0x3d953f['id'],{'transaction':_0x49dc96});});return Promise[_0x43c9('0x4a')](_0x5a0b95);})['then'](function(){if(!_0x3d953f[_0x43c9('0x96')])return;var _0x2a7c9e=_[_0x43c9('0x27')](_0x340534,function(_0x22bbaa){return _0x22bbaa[_0x43c9('0x112')](_0x43c9('0x95'))===_0x43c9('0x113');});var _0x4050b8=_[_0x43c9('0x32')](_0x2a7c9e,function(_0x277a0b){return db[_0x43c9('0xa6')][_0x43c9('0xaa')]({'where':{'VoiceQueueId':_0x277a0b['id'],'UserId':_0x3d953f['id']},'transaction':_0x49dc96});});return Promise[_0x43c9('0x4a')](_0x4050b8);})[_0x43c9('0x1b')](function(){return db[_0x43c9('0x11a')][_0x43c9('0x40')]({'where':{'teamId':{'$in':_0x8f1999}}});})['then'](function(_0x173b72){var _0x3b16ad=_[_0x43c9('0x32')](_0x173b72,function(_0x48503d){return db[_0x43c9('0x115')][_0x43c9('0xaa')]({'where':{'UserId':_0x3d953f['id'],'VoicePrefixId':_0x48503d[_0x43c9('0x116')]}},{'transaction':_0x49dc96});});return Promise[_0x43c9('0x4a')](_0x3b16ad);});});})[_0x43c9('0x1b')](function(){for(var _0xf2253d=0x0;_0xf2253d<_0x340534[_0x43c9('0x81')];_0xf2253d++){var _0x5d6bdf=_0x340534[_0xf2253d]['getDataValue'](_0x43c9('0x95'));var _0x143145=_0x5d6bdf+_0x43c9('0xa0');socket[_0x43c9('0x1e')]('user'+_0x5d6bdf+_0x43c9('0xa9'),{'UserId':_0x5ec96f,['queueField']:_0x340534[_0xf2253d]['id']});}})[_0x43c9('0x1b')](respondWithStatusCode(_0x2602b0,null))[_0x43c9('0x4b')](APIHandleError(_0x2602b0));};exports[_0x43c9('0x11b')]=function(_0x373e6d,_0x268381){var _0x3c7fd6={};var _0x518597={};var _0xc3c5b3;var _0x10ec0b;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x373e6d[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x268381,null))[_0x43c9('0x1b')](function(_0x4bf480){if(_0x4bf480){_0xc3c5b3=_0x4bf480;_0x518597['model']=_[_0x43c9('0xcc')](db[_0x43c9('0xc4')]['rawAttributes']);_0x518597[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x373e6d[_0x43c9('0x3c')]);_0x518597[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x518597[_0x43c9('0xcb')],_0x518597[_0x43c9('0x3c')]);_0x3c7fd6[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x518597[_0x43c9('0xcb')],qs['fields'](_0x373e6d[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x3c7fd6['attributes']=_0x3c7fd6['attributes'][_0x43c9('0x81')]?_0x3c7fd6[_0x43c9('0x3f')]:_0x518597[_0x43c9('0xcb')];_0x3c7fd6[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x373e6d[_0x43c9('0x3c')]['sort']);_0x3c7fd6['where']=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x373e6d['query'],_0x518597['filters']));if(_0x373e6d[_0x43c9('0x3c')]['filter']){_0x3c7fd6['where']=_[_0x43c9('0x51')](_0x3c7fd6[_0x43c9('0x3b')],{'$or':_['map'](_0x3c7fd6['attributes'],function(_0x408bcd){var _0x1ba3f1={};_0x1ba3f1[_0x408bcd]={'$like':'%'+_0x373e6d[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x1ba3f1;})});}_0x3c7fd6=_[_0x43c9('0x51')]({},_0x3c7fd6,_0x373e6d['options']);return _0xc3c5b3[_0x43c9('0x11b')](_0x3c7fd6);}})['then'](function(_0xfb5c7a){if(_0xfb5c7a){_0x10ec0b=_0xfb5c7a[_0x43c9('0x81')];if(!_0x373e6d[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x3c7fd6['limit']=qs[_0x43c9('0xd5')](_0x373e6d[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x3c7fd6[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x373e6d[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0xc3c5b3[_0x43c9('0x11b')](_0x3c7fd6);}})[_0x43c9('0x1b')](function(_0xf91eed){if(_0xf91eed){return _0xf91eed?{'count':_0x10ec0b,'rows':_0xf91eed}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x268381,null))[_0x43c9('0x4b')](handleError(_0x268381,null));};exports[_0x43c9('0x11c')]=function(_0x467f67,_0x9db526){var _0x36a012={};var _0x5aa6bc={};var _0x35f390;return db['User'][_0x43c9('0x8e')]({'where':{'id':_0x467f67[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x9db526,null))[_0x43c9('0x1b')](function(_0x5b305d){if(_0x5b305d){_0x35f390=_0x5b305d;_0x5aa6bc[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db['User']['rawAttributes']);_0x5aa6bc[_0x43c9('0x3c')]=_['keys'](_0x467f67[_0x43c9('0x3c')]);_0x5aa6bc[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x5aa6bc[_0x43c9('0xcb')],_0x5aa6bc[_0x43c9('0x3c')]);_0x36a012[_0x43c9('0x3f')]=_['intersection'](_0x5aa6bc[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0x467f67[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x36a012[_0x43c9('0x3f')]=_0x36a012[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x36a012[_0x43c9('0x3f')]:_0x5aa6bc[_0x43c9('0xcb')];_0x36a012['order']=qs[_0x43c9('0xd0')](_0x467f67['query'][_0x43c9('0xd0')]);_0x36a012[_0x43c9('0x3b')]=qs['filters'](_[_0x43c9('0xd1')](_0x467f67[_0x43c9('0x3c')],_0x5aa6bc['filters']));if(_0x467f67['query'][_0x43c9('0x27')]){_0x36a012['where']=_['merge'](_0x36a012[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x36a012['attributes'],function(_0x315b68){var _0x479045={};_0x479045[_0x315b68]={'$like':'%'+_0x467f67['query'][_0x43c9('0x27')]+'%'};return _0x479045;})});}_0x36a012[_0x43c9('0xcb')]=db[_0x43c9('0x30')];_0x36a012['as']='Agents';_0x36a012=_[_0x43c9('0x51')]({},_0x36a012,_0x467f67[_0x43c9('0x52')]);return _0x35f390[_0x43c9('0xf5')]({'include':[_0x36a012]});}})[_0x43c9('0x1b')](function(_0x2a7f6f){if(_0x2a7f6f){var _0x4505ba={},_0xb9a110=[];for(var _0x4f1029=0x0;_0x4f1029<_0x2a7f6f[_0x43c9('0x81')];_0x4f1029+=0x1){for(var _0x128198=0x0,_0x5e2384;_0x128198<_0x2a7f6f[_0x4f1029]['Agents'][_0x43c9('0x81')];_0x128198+=0x1){_0x5e2384=_0x2a7f6f[_0x4f1029]['Agents'][_0x128198][_0x43c9('0x20')]({'plain':!![]});_0x4505ba[_0x5e2384['id']]=_0x5e2384;}}_0x4505ba=_[_0x43c9('0x11d')](_0x4505ba);for(var _0x5331d8=qs[_0x43c9('0x1a')](_0x467f67['query']['offset']);_0x5331d8<_0x4505ba[_0x43c9('0x81')]&&_0xb9a110[_0x43c9('0x81')]<qs[_0x43c9('0xd5')](_0x467f67[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x5331d8+=0x1){if(_0x4505ba[_0x5331d8]){_0xb9a110['push'](_0x4505ba[_0x5331d8]);}}return{'count':_0x4505ba['length'],'rows':_0xb9a110};}})['then'](respondWithResult(_0x9db526,null))[_0x43c9('0x4b')](handleError(_0x9db526,null));};exports[_0x43c9('0xaa')]=function(_0x454a15,_0x3911ad){if(_0x454a15[_0x43c9('0x23')]['id']==_0x454a15[_0x43c9('0x4d')]['id']){return _0x3911ad[_0x43c9('0x15')](0x1f4)[_0x43c9('0x2f')]({'message':_0x43c9('0x11e')});}return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x454a15[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x3911ad,null))[_0x43c9('0x1b')](removeEntity(_0x3911ad,null))[_0x43c9('0x4b')](handleError(_0x3911ad,null));};exports[_0x43c9('0x11f')]=function(_0x9f8a07,_0x2588e2){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x9f8a07[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x2588e2,null))[_0x43c9('0x1b')](function(_0x2b4839){if(_0x2b4839){return _0x2b4839['addChatInteractions'](_0x9f8a07[_0x43c9('0x55')][_0x43c9('0x58')],_['omit'](_0x9f8a07['body'],[_0x43c9('0x58'),'id'])||{})[_0x43c9('0x9f')](function(){for(var _0x33ec37=0x0;_0x33ec37<_0x9f8a07[_0x43c9('0x55')][_0x43c9('0x58')][_0x43c9('0x81')];_0x33ec37+=0x1){socket[_0x43c9('0x1e')](_0x43c9('0x120'),{'ChatInteractionId':Number(_0x9f8a07[_0x43c9('0x55')][_0x43c9('0x58')][_0x33ec37]),'UserId':Number(_0x9f8a07[_0x43c9('0x4d')]['id'])});}return _0x9f8a07[_0x43c9('0x55')]['ids'];});}})[_0x43c9('0x1b')](respondWithResult(_0x2588e2,null))[_0x43c9('0x4b')](handleError(_0x2588e2,null));};exports[_0x43c9('0x121')]=function(_0x4dd9a3,_0x14aaca){return db['User']['find']({'where':{'id':_0x4dd9a3[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x14aaca,null))[_0x43c9('0x1b')](function(_0x302e14){if(_0x302e14){return _0x302e14[_0x43c9('0x121')](_0x4dd9a3[_0x43c9('0x3c')][_0x43c9('0x58')])[_0x43c9('0x1b')](function(){if(_[_0x43c9('0xa8')](_0x4dd9a3[_0x43c9('0x3c')][_0x43c9('0x58')])){for(var _0x55151d=0x0;_0x55151d<_0x4dd9a3[_0x43c9('0x3c')]['ids'][_0x43c9('0x81')];_0x55151d+=0x1){socket[_0x43c9('0x1e')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4dd9a3[_0x43c9('0x3c')][_0x43c9('0x58')][_0x55151d]),'UserId':Number(_0x4dd9a3[_0x43c9('0x4d')]['id'])});}}else{socket[_0x43c9('0x1e')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4dd9a3[_0x43c9('0x3c')][_0x43c9('0x58')]),'UserId':Number(_0x4dd9a3[_0x43c9('0x4d')]['id'])});}});}})[_0x43c9('0x1b')](respondWithStatusCode(_0x14aaca,null))['catch'](handleError(_0x14aaca,null));};exports[_0x43c9('0x122')]=function(_0x35bf55,_0xa36bc6){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x35bf55[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0xa36bc6,null))[_0x43c9('0x1b')](function(_0x212310){if(_0x212310){return _0x212310[_0x43c9('0x122')](_0x35bf55['body'][_0x43c9('0x58')],_['omit'](_0x35bf55['body'],[_0x43c9('0x58'),'id'])||{})[_0x43c9('0x9f')](function(){for(var _0x404a37=0x0;_0x404a37<_0x35bf55[_0x43c9('0x55')]['ids'][_0x43c9('0x81')];_0x404a37+=0x1){socket[_0x43c9('0x1e')](_0x43c9('0x123'),{'MailInteractionId':Number(_0x35bf55[_0x43c9('0x55')]['ids'][_0x404a37]),'UserId':Number(_0x35bf55['params']['id'])});}return _0x35bf55[_0x43c9('0x55')][_0x43c9('0x58')];});}})['then'](respondWithResult(_0xa36bc6,null))['catch'](handleError(_0xa36bc6,null));};exports[_0x43c9('0x124')]=function(_0x83fe86,_0x38a787){return db['User'][_0x43c9('0x2b')]({'where':{'id':_0x83fe86[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x38a787,null))['then'](function(_0x41ec72){if(_0x41ec72){return _0x41ec72[_0x43c9('0x124')](_0x83fe86[_0x43c9('0x3c')][_0x43c9('0x58')])[_0x43c9('0x1b')](function(){if(_[_0x43c9('0xa8')](_0x83fe86['query']['ids'])){for(var _0x4a21bf=0x0;_0x4a21bf<_0x83fe86['query']['ids']['length'];_0x4a21bf+=0x1){socket['emit'](_0x43c9('0x125'),{'MailInteractionId':Number(_0x83fe86[_0x43c9('0x3c')][_0x43c9('0x58')][_0x4a21bf]),'UserId':Number(_0x83fe86[_0x43c9('0x4d')]['id'])});}}else{socket[_0x43c9('0x1e')](_0x43c9('0x125'),{'MailInteractionId':Number(_0x83fe86[_0x43c9('0x3c')][_0x43c9('0x58')]),'UserId':Number(_0x83fe86[_0x43c9('0x4d')]['id'])});}});}})[_0x43c9('0x1b')](respondWithStatusCode(_0x38a787,null))[_0x43c9('0x4b')](handleError(_0x38a787,null));};exports[_0x43c9('0x126')]=function(_0x301782,_0x5bb350){return db[_0x43c9('0x30')]['find']({'where':{'id':_0x301782['params']['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x5bb350,null))[_0x43c9('0x1b')](function(_0x34ac65){if(_0x34ac65){return _0x34ac65['addFaxInteractions'](_0x301782[_0x43c9('0x55')][_0x43c9('0x58')],_[_0x43c9('0x59')](_0x301782[_0x43c9('0x55')],['ids','id'])||{})[_0x43c9('0x9f')](function(){for(var _0x20f9f0=0x0;_0x20f9f0<_0x301782[_0x43c9('0x55')][_0x43c9('0x58')][_0x43c9('0x81')];_0x20f9f0+=0x1){socket[_0x43c9('0x1e')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x301782[_0x43c9('0x55')][_0x43c9('0x58')][_0x20f9f0]),'UserId':Number(_0x301782[_0x43c9('0x4d')]['id'])});}return _0x301782['body'][_0x43c9('0x58')];});}})[_0x43c9('0x1b')](respondWithResult(_0x5bb350,null))['catch'](handleError(_0x5bb350,null));};exports['removeFaxInteractions']=function(_0x55eb05,_0x4d97c){return db[_0x43c9('0x30')]['find']({'where':{'id':_0x55eb05[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x4d97c,null))[_0x43c9('0x1b')](function(_0x44fefa){if(_0x44fefa){return _0x44fefa['removeFaxInteractions'](_0x55eb05[_0x43c9('0x3c')][_0x43c9('0x58')])['then'](function(){if(_[_0x43c9('0xa8')](_0x55eb05['query']['ids'])){for(var _0x423628=0x0;_0x423628<_0x55eb05['query'][_0x43c9('0x58')]['length'];_0x423628+=0x1){socket[_0x43c9('0x1e')](_0x43c9('0x127'),{'FaxInteractionId':Number(_0x55eb05[_0x43c9('0x3c')][_0x43c9('0x58')][_0x423628]),'UserId':Number(_0x55eb05[_0x43c9('0x4d')]['id'])});}}else{socket[_0x43c9('0x1e')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x55eb05[_0x43c9('0x3c')]['ids']),'UserId':Number(_0x55eb05[_0x43c9('0x4d')]['id'])});}});}})[_0x43c9('0x1b')](respondWithStatusCode(_0x4d97c,null))[_0x43c9('0x4b')](handleError(_0x4d97c,null));};exports[_0x43c9('0x128')]=function(_0x2d4c43,_0x257aee){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x2d4c43['params']['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x257aee,null))[_0x43c9('0x1b')](function(_0x5e6ad4){if(_0x5e6ad4){return _0x5e6ad4[_0x43c9('0x128')](_0x2d4c43['body'][_0x43c9('0x58')],_[_0x43c9('0x59')](_0x2d4c43[_0x43c9('0x55')],[_0x43c9('0x58'),'id'])||{})['spread'](function(){for(var _0x70fa31=0x0;_0x70fa31<_0x2d4c43[_0x43c9('0x55')][_0x43c9('0x58')]['length'];_0x70fa31+=0x1){socket[_0x43c9('0x1e')](_0x43c9('0x129'),{'SmsInteractionId':Number(_0x2d4c43[_0x43c9('0x55')][_0x43c9('0x58')][_0x70fa31]),'UserId':Number(_0x2d4c43[_0x43c9('0x4d')]['id'])});}return _0x2d4c43[_0x43c9('0x55')][_0x43c9('0x58')];});}})['then'](respondWithResult(_0x257aee,null))[_0x43c9('0x4b')](handleError(_0x257aee,null));};exports[_0x43c9('0x12a')]=function(_0x343498,_0x123e8d){return db['User'][_0x43c9('0x2b')]({'where':{'id':_0x343498['params']['id']}})['then'](handleEntityNotFound(_0x123e8d,null))['then'](function(_0x16ede7){if(_0x16ede7){return _0x16ede7['removeSmsInteractions'](_0x343498[_0x43c9('0x3c')]['ids'])[_0x43c9('0x1b')](function(){if(_[_0x43c9('0xa8')](_0x343498[_0x43c9('0x3c')]['ids'])){for(var _0x2d6654=0x0;_0x2d6654<_0x343498[_0x43c9('0x3c')][_0x43c9('0x58')]['length'];_0x2d6654+=0x1){socket[_0x43c9('0x1e')](_0x43c9('0x12b'),{'SmsInteractionId':Number(_0x343498[_0x43c9('0x3c')][_0x43c9('0x58')][_0x2d6654]),'UserId':Number(_0x343498['params']['id'])});}}else{socket[_0x43c9('0x1e')](_0x43c9('0x12b'),{'SmsInteractionId':Number(_0x343498[_0x43c9('0x3c')][_0x43c9('0x58')]),'UserId':Number(_0x343498['params']['id'])});}});}})[_0x43c9('0x1b')](respondWithStatusCode(_0x123e8d,null))['catch'](handleError(_0x123e8d,null));};exports['addOpenchannelInteractions']=function(_0x29c1a9,_0x1f11f5){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x29c1a9[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x1f11f5,null))[_0x43c9('0x1b')](function(_0x37647e){if(_0x37647e){return _0x37647e[_0x43c9('0x12c')](_0x29c1a9[_0x43c9('0x55')][_0x43c9('0x58')],_[_0x43c9('0x59')](_0x29c1a9[_0x43c9('0x55')],[_0x43c9('0x58'),'id'])||{})[_0x43c9('0x9f')](function(){for(var _0x237cfb=0x0;_0x237cfb<_0x29c1a9[_0x43c9('0x55')][_0x43c9('0x58')][_0x43c9('0x81')];_0x237cfb+=0x1){socket[_0x43c9('0x1e')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x29c1a9[_0x43c9('0x55')][_0x43c9('0x58')][_0x237cfb]),'UserId':Number(_0x29c1a9[_0x43c9('0x4d')]['id'])});}return _0x29c1a9['body'][_0x43c9('0x58')];});}})[_0x43c9('0x1b')](respondWithResult(_0x1f11f5,null))[_0x43c9('0x4b')](handleError(_0x1f11f5,null));};exports[_0x43c9('0x12d')]=function(_0x36c614,_0x2ddd4b){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x36c614['params']['id']}})['then'](handleEntityNotFound(_0x2ddd4b,null))['then'](function(_0x322d9a){if(_0x322d9a){return _0x322d9a[_0x43c9('0x12d')](_0x36c614[_0x43c9('0x3c')]['ids'])[_0x43c9('0x1b')](function(){if(_[_0x43c9('0xa8')](_0x36c614['query'][_0x43c9('0x58')])){for(var _0x12ca5b=0x0;_0x12ca5b<_0x36c614[_0x43c9('0x3c')]['ids'][_0x43c9('0x81')];_0x12ca5b+=0x1){socket[_0x43c9('0x1e')](_0x43c9('0x12e'),{'OpenchannelInteractionId':Number(_0x36c614[_0x43c9('0x3c')][_0x43c9('0x58')][_0x12ca5b]),'UserId':Number(_0x36c614[_0x43c9('0x4d')]['id'])});}}else{socket[_0x43c9('0x1e')](_0x43c9('0x12e'),{'OpenchannelInteractionId':Number(_0x36c614[_0x43c9('0x3c')][_0x43c9('0x58')]),'UserId':Number(_0x36c614[_0x43c9('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x2ddd4b,null))[_0x43c9('0x4b')](handleError(_0x2ddd4b,null));};exports[_0x43c9('0x12f')]=function(_0x54f63e,_0x4eaa9f){return db[_0x43c9('0x30')]['find']({'where':{'id':_0x54f63e[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x4eaa9f,null))['then'](function(_0x1b9bcb){if(_0x1b9bcb){return _0x1b9bcb[_0x43c9('0x12f')](_0x54f63e['body'][_0x43c9('0x58')],_[_0x43c9('0x59')](_0x54f63e[_0x43c9('0x55')],[_0x43c9('0x58'),'id'])||{})[_0x43c9('0x9f')](function(){for(var _0x30cc3d=0x0;_0x30cc3d<_0x54f63e[_0x43c9('0x55')][_0x43c9('0x58')][_0x43c9('0x81')];_0x30cc3d+=0x1){socket[_0x43c9('0x1e')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x54f63e[_0x43c9('0x55')][_0x43c9('0x58')][_0x30cc3d]),'UserId':Number(_0x54f63e[_0x43c9('0x4d')]['id'])});}return _0x54f63e[_0x43c9('0x55')][_0x43c9('0x58')];});}})[_0x43c9('0x1b')](respondWithResult(_0x4eaa9f,null))['catch'](handleError(_0x4eaa9f,null));};exports[_0x43c9('0x130')]=function(_0x1d812e,_0x266e04){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x1d812e['params']['id']}})['then'](handleEntityNotFound(_0x266e04,null))['then'](function(_0x4e85d5){if(_0x4e85d5){return _0x4e85d5[_0x43c9('0x130')](_0x1d812e[_0x43c9('0x3c')][_0x43c9('0x58')]);}})[_0x43c9('0x1b')](respondWithStatusCode(_0x266e04,null))[_0x43c9('0x4b')](handleError(_0x266e04,null));};exports[_0x43c9('0x131')]=function(_0x41cce0,_0x20c438){var _0x375256={};var _0x2dd0fe={};var _0x4be5c7;var _0x4672da;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x41cce0[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x20c438,null))[_0x43c9('0x1b')](function(_0x51eab0){if(_0x51eab0){_0x4be5c7=_0x51eab0;_0x2dd0fe[_0x43c9('0xcb')]=_['keys'](db[_0x43c9('0x132')][_0x43c9('0x31')]);_0x2dd0fe[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x41cce0[_0x43c9('0x3c')]);_0x2dd0fe[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x2dd0fe['model'],_0x2dd0fe[_0x43c9('0x3c')]);_0x375256[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x2dd0fe['model'],qs['fields'](_0x41cce0[_0x43c9('0x3c')]['fields']));_0x375256[_0x43c9('0x3f')]=_0x375256[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x375256[_0x43c9('0x3f')]:_0x2dd0fe[_0x43c9('0xcb')];_0x375256['order']=qs[_0x43c9('0xd0')](_0x41cce0['query']['sort']);_0x375256[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x41cce0['query'],_0x2dd0fe[_0x43c9('0xcd')]));if(_0x41cce0[_0x43c9('0x3c')]['filter']){_0x375256['where']=_[_0x43c9('0x51')](_0x375256[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x375256['attributes'],function(_0x4c809d){var _0x44bb79={};_0x44bb79[_0x4c809d]={'$like':'%'+_0x41cce0['query'][_0x43c9('0x27')]+'%'};return _0x44bb79;})});}_0x375256=_['merge']({},_0x375256,_0x41cce0['options']);return _0x4be5c7[_0x43c9('0x131')](_0x375256);}})[_0x43c9('0x1b')](function(_0x139198){if(_0x139198){_0x4672da=_0x139198[_0x43c9('0x81')];if(!_0x41cce0['query'][_0x43c9('0xd8')]('nolimit')){_0x375256[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x41cce0[_0x43c9('0x3c')]['limit']);_0x375256[_0x43c9('0x1a')]=qs['offset'](_0x41cce0[_0x43c9('0x3c')]['offset']);}return _0x4be5c7[_0x43c9('0x131')](_0x375256);}})[_0x43c9('0x1b')](function(_0x15a949){if(_0x15a949){return _0x15a949?{'count':_0x4672da,'rows':_0x15a949}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x20c438,null))['catch'](handleError(_0x20c438,null));};exports[_0x43c9('0x133')]=function(_0x46ec5b,_0x166469){var _0x4a3b5d={};var _0x2df064={};var _0x51ccc5;var _0x211e27;return db['User'][_0x43c9('0x8e')]({'where':{'id':_0x46ec5b['params']['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x166469,null))[_0x43c9('0x1b')](function(_0x395260){if(_0x395260){_0x51ccc5=_0x395260;_0x2df064[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db[_0x43c9('0x134')][_0x43c9('0x31')]);_0x2df064[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x46ec5b[_0x43c9('0x3c')]);_0x2df064[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x2df064[_0x43c9('0xcb')],_0x2df064[_0x43c9('0x3c')]);_0x4a3b5d['attributes']=_[_0x43c9('0xd7')](_0x2df064[_0x43c9('0xcb')],qs['fields'](_0x46ec5b[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x4a3b5d['attributes']=_0x4a3b5d[_0x43c9('0x3f')]['length']?_0x4a3b5d[_0x43c9('0x3f')]:_0x2df064[_0x43c9('0xcb')];_0x4a3b5d[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x46ec5b['query'][_0x43c9('0xd0')]);_0x4a3b5d[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x46ec5b[_0x43c9('0x3c')],_0x2df064[_0x43c9('0xcd')]));if(_0x46ec5b[_0x43c9('0x3c')]['filter']){_0x4a3b5d['where']=_[_0x43c9('0x51')](_0x4a3b5d['where'],{'$or':_[_0x43c9('0x32')](_0x4a3b5d[_0x43c9('0x3f')],function(_0x28e965){var _0x3519ae={};_0x3519ae[_0x28e965]={'$like':'%'+_0x46ec5b[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x3519ae;})});}_0x4a3b5d=_[_0x43c9('0x51')]({},_0x4a3b5d,_0x46ec5b[_0x43c9('0x52')]);return _0x51ccc5['getFaxAccounts'](_0x4a3b5d);}})[_0x43c9('0x1b')](function(_0x5649d9){if(_0x5649d9){_0x211e27=_0x5649d9[_0x43c9('0x81')];if(!_0x46ec5b['query'][_0x43c9('0xd8')]('nolimit')){_0x4a3b5d[_0x43c9('0xd5')]=qs['limit'](_0x46ec5b['query'][_0x43c9('0xd5')]);_0x4a3b5d[_0x43c9('0x1a')]=qs['offset'](_0x46ec5b[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x51ccc5['getFaxAccounts'](_0x4a3b5d);}})[_0x43c9('0x1b')](function(_0x28fd15){if(_0x28fd15){return _0x28fd15?{'count':_0x211e27,'rows':_0x28fd15}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x166469,null))[_0x43c9('0x4b')](handleError(_0x166469,null));};exports[_0x43c9('0x135')]=function(_0x516130,_0x3dca92){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x516130['params']['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x3dca92,null))[_0x43c9('0x1b')](function(_0x4ed6f1){if(_0x4ed6f1){return _0x4ed6f1[_0x43c9('0x135')](_0x516130[_0x43c9('0x55')][_0x43c9('0x58')],_[_0x43c9('0x59')](_0x516130[_0x43c9('0x55')],[_0x43c9('0x58'),'id'])||{});}})[_0x43c9('0x1b')](respondWithResult(_0x3dca92,null))[_0x43c9('0x4b')](handleError(_0x3dca92,null));};exports[_0x43c9('0x136')]=function(_0x2b5be2,_0x3fe5ad){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x2b5be2[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x3fe5ad,null))[_0x43c9('0x1b')](function(_0x18577a){if(_0x18577a){return _0x18577a[_0x43c9('0x136')](_0x2b5be2['query'][_0x43c9('0x58')]);}})['then'](respondWithStatusCode(_0x3fe5ad,null))['catch'](handleError(_0x3fe5ad,null));};exports[_0x43c9('0x137')]=function(_0xeaa90d,_0x1196e9){var _0x4dc698={};var _0x3ee5cc={};var _0x1c2900;var _0x4fa99f;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0xeaa90d[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1196e9,null))[_0x43c9('0x1b')](function(_0x254d7e){if(_0x254d7e){_0x1c2900=_0x254d7e;_0x3ee5cc[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db['MailAccount'][_0x43c9('0x31')]);_0x3ee5cc[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0xeaa90d[_0x43c9('0x3c')]);_0x3ee5cc[_0x43c9('0xcd')]=_['intersection'](_0x3ee5cc['model'],_0x3ee5cc['query']);_0x4dc698[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x3ee5cc[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0xeaa90d[_0x43c9('0x3c')]['fields']));_0x4dc698[_0x43c9('0x3f')]=_0x4dc698[_0x43c9('0x3f')]['length']?_0x4dc698[_0x43c9('0x3f')]:_0x3ee5cc['model'];_0x4dc698['order']=qs[_0x43c9('0xd0')](_0xeaa90d[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x4dc698[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0xeaa90d[_0x43c9('0x3c')],_0x3ee5cc[_0x43c9('0xcd')]));if(_0xeaa90d[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x4dc698['where']=_[_0x43c9('0x51')](_0x4dc698['where'],{'$or':_[_0x43c9('0x32')](_0x4dc698[_0x43c9('0x3f')],function(_0x5b1e53){var _0x41a2ac={};_0x41a2ac[_0x5b1e53]={'$like':'%'+_0xeaa90d[_0x43c9('0x3c')]['filter']+'%'};return _0x41a2ac;})});}_0x4dc698=_[_0x43c9('0x51')]({},_0x4dc698,_0xeaa90d[_0x43c9('0x52')]);return _0x1c2900[_0x43c9('0x137')](_0x4dc698);}})[_0x43c9('0x1b')](function(_0x2828cd){if(_0x2828cd){_0x4fa99f=_0x2828cd[_0x43c9('0x81')];if(!_0xeaa90d['query'][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x4dc698[_0x43c9('0xd5')]=qs['limit'](_0xeaa90d[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x4dc698[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0xeaa90d[_0x43c9('0x3c')]['offset']);}return _0x1c2900[_0x43c9('0x137')](_0x4dc698);}})[_0x43c9('0x1b')](function(_0x57351e){if(_0x57351e){return _0x57351e?{'count':_0x4fa99f,'rows':_0x57351e}:null;}})[_0x43c9('0x1b')](respondWithResult(_0x1196e9,null))[_0x43c9('0x4b')](handleError(_0x1196e9,null));};exports[_0x43c9('0x138')]=function(_0x5d86e9,_0x22bad8){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x5d86e9[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x22bad8,null))['then'](function(_0x213107){if(_0x213107){return _0x213107[_0x43c9('0x138')](_0x5d86e9[_0x43c9('0x55')][_0x43c9('0x58')],_[_0x43c9('0x59')](_0x5d86e9['body'],[_0x43c9('0x58'),'id'])||{});}})[_0x43c9('0x1b')](respondWithResult(_0x22bad8,null))[_0x43c9('0x4b')](handleError(_0x22bad8,null));};exports[_0x43c9('0x139')]=function(_0x4f6834,_0x247be1){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x4f6834[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x247be1,null))[_0x43c9('0x1b')](function(_0x5e0df7){if(_0x5e0df7){return _0x5e0df7['removeMailAccounts'](_0x4f6834[_0x43c9('0x3c')][_0x43c9('0x58')]);}})[_0x43c9('0x1b')](respondWithStatusCode(_0x247be1,null))[_0x43c9('0x4b')](handleError(_0x247be1,null));};exports[_0x43c9('0x13a')]=function(_0x4be349,_0x3969a9){var _0x5d6df2={};var _0x4eef04={};var _0x1de2b7;var _0x36a490;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x4be349['params']['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x3969a9,null))[_0x43c9('0x1b')](function(_0x52e4d6){if(_0x52e4d6){_0x1de2b7=_0x52e4d6;_0x4eef04['model']=_[_0x43c9('0xcc')](db[_0x43c9('0x13b')]['rawAttributes']);_0x4eef04[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x4be349[_0x43c9('0x3c')]);_0x4eef04[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x4eef04[_0x43c9('0xcb')],_0x4eef04[_0x43c9('0x3c')]);_0x5d6df2[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x4eef04[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0x4be349[_0x43c9('0x3c')]['fields']));_0x5d6df2['attributes']=_0x5d6df2['attributes'][_0x43c9('0x81')]?_0x5d6df2['attributes']:_0x4eef04[_0x43c9('0xcb')];_0x5d6df2[_0x43c9('0xcf')]=qs['sort'](_0x4be349[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x5d6df2[_0x43c9('0x3b')]=qs['filters'](_[_0x43c9('0xd1')](_0x4be349['query'],_0x4eef04['filters']));if(_0x4be349[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x5d6df2[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0x5d6df2[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x5d6df2[_0x43c9('0x3f')],function(_0xf0bf1){var _0x380a26={};_0x380a26[_0xf0bf1]={'$like':'%'+_0x4be349['query'][_0x43c9('0x27')]+'%'};return _0x380a26;})});}_0x5d6df2=_[_0x43c9('0x51')]({},_0x5d6df2,_0x4be349[_0x43c9('0x52')]);return _0x1de2b7['getOpenchannelAccounts'](_0x5d6df2);}})[_0x43c9('0x1b')](function(_0x5bb9b1){if(_0x5bb9b1){_0x36a490=_0x5bb9b1[_0x43c9('0x81')];if(!_0x4be349[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x5d6df2[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x4be349[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0x5d6df2['offset']=qs[_0x43c9('0x1a')](_0x4be349[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x1de2b7[_0x43c9('0x13a')](_0x5d6df2);}})[_0x43c9('0x1b')](function(_0x4dbe60){if(_0x4dbe60){return _0x4dbe60?{'count':_0x36a490,'rows':_0x4dbe60}:null;}})['then'](respondWithResult(_0x3969a9,null))['catch'](handleError(_0x3969a9,null));};exports[_0x43c9('0x13c')]=function(_0x23c90b,_0x162507){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x23c90b['params']['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x162507,null))['then'](function(_0x20570b){if(_0x20570b){return _0x20570b[_0x43c9('0x13c')](_0x23c90b[_0x43c9('0x55')][_0x43c9('0x58')],_[_0x43c9('0x59')](_0x23c90b['body'],[_0x43c9('0x58'),'id'])||{});}})[_0x43c9('0x1b')](respondWithResult(_0x162507,null))['catch'](handleError(_0x162507,null));};exports[_0x43c9('0x13d')]=function(_0x181b9f,_0x2f8ea4){return db['User'][_0x43c9('0x2b')]({'where':{'id':_0x181b9f[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2f8ea4,null))[_0x43c9('0x1b')](function(_0x293668){if(_0x293668){return _0x293668[_0x43c9('0x13d')](_0x181b9f['query']['ids']);}})['then'](respondWithStatusCode(_0x2f8ea4,null))[_0x43c9('0x4b')](handleError(_0x2f8ea4,null));};exports[_0x43c9('0x13e')]=function(_0x4acdc5,_0x55fb7f){var _0x499715={};var _0x5866c4={};var _0x34498c;var _0xbba06c;return db[_0x43c9('0x30')]['findOne']({'where':{'id':_0x4acdc5[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x55fb7f,null))[_0x43c9('0x1b')](function(_0x3d72c1){if(_0x3d72c1){_0x34498c=_0x3d72c1;_0x5866c4[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db[_0x43c9('0x13f')]['rawAttributes']);_0x5866c4[_0x43c9('0x3c')]=_[_0x43c9('0xcc')](_0x4acdc5[_0x43c9('0x3c')]);_0x5866c4[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x5866c4['model'],_0x5866c4[_0x43c9('0x3c')]);_0x499715[_0x43c9('0x3f')]=_['intersection'](_0x5866c4['model'],qs[_0x43c9('0xce')](_0x4acdc5['query'][_0x43c9('0xce')]));_0x499715[_0x43c9('0x3f')]=_0x499715[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x499715[_0x43c9('0x3f')]:_0x5866c4[_0x43c9('0xcb')];_0x499715['order']=qs[_0x43c9('0xd0')](_0x4acdc5[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x499715[_0x43c9('0x3b')]=qs[_0x43c9('0xcd')](_['pick'](_0x4acdc5['query'],_0x5866c4[_0x43c9('0xcd')]));if(_0x4acdc5['query'][_0x43c9('0x27')]){_0x499715[_0x43c9('0x3b')]=_['merge'](_0x499715[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x499715[_0x43c9('0x3f')],function(_0x5c1da3){var _0x55a0da={};_0x55a0da[_0x5c1da3]={'$like':'%'+_0x4acdc5[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x55a0da;})});}_0x499715=_['merge']({},_0x499715,_0x4acdc5[_0x43c9('0x52')]);return _0x34498c[_0x43c9('0x13e')](_0x499715);}})['then'](function(_0x4969c2){if(_0x4969c2){_0xbba06c=_0x4969c2['length'];if(!_0x4acdc5[_0x43c9('0x3c')]['hasOwnProperty'](_0x43c9('0xd4'))){_0x499715[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x4acdc5[_0x43c9('0x3c')]['limit']);_0x499715[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x4acdc5[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x34498c[_0x43c9('0x13e')](_0x499715);}})[_0x43c9('0x1b')](function(_0x3769e0){if(_0x3769e0){return _0x3769e0?{'count':_0xbba06c,'rows':_0x3769e0}:null;}})['then'](respondWithResult(_0x55fb7f,null))[_0x43c9('0x4b')](handleError(_0x55fb7f,null));};exports[_0x43c9('0x140')]=function(_0x16f204,_0x3a604f){return db[_0x43c9('0x30')]['find']({'where':{'id':_0x16f204[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x3a604f,null))[_0x43c9('0x1b')](function(_0x4a29e6){if(_0x4a29e6){return _0x4a29e6[_0x43c9('0x140')](_0x16f204[_0x43c9('0x55')][_0x43c9('0x58')],_[_0x43c9('0x59')](_0x16f204[_0x43c9('0x55')],[_0x43c9('0x58'),'id'])||{});}})['then'](respondWithResult(_0x3a604f,null))[_0x43c9('0x4b')](handleError(_0x3a604f,null));};exports[_0x43c9('0x141')]=function(_0xd46af7,_0x5bb18d){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0xd46af7[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5bb18d,null))['then'](function(_0x103dac){if(_0x103dac){return _0x103dac[_0x43c9('0x141')](_0xd46af7[_0x43c9('0x3c')][_0x43c9('0x58')]);}})['then'](respondWithStatusCode(_0x5bb18d,null))[_0x43c9('0x4b')](handleError(_0x5bb18d,null));};exports[_0x43c9('0x142')]=function(_0x3d626b,_0x175236){var _0x252ea8={};var _0xd3364f={};var _0x14a3bb;var _0x10a58;return db[_0x43c9('0x30')][_0x43c9('0x8e')]({'where':{'id':_0x3d626b['params']['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x175236,null))[_0x43c9('0x1b')](function(_0x5a58a7){if(_0x5a58a7){_0x14a3bb=_0x5a58a7;_0xd3364f[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](db[_0x43c9('0x143')][_0x43c9('0x31')]);_0xd3364f[_0x43c9('0x3c')]=_['keys'](_0x3d626b['query']);_0xd3364f['filters']=_[_0x43c9('0xd7')](_0xd3364f[_0x43c9('0xcb')],_0xd3364f['query']);_0x252ea8[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0xd3364f['model'],qs[_0x43c9('0xce')](_0x3d626b[_0x43c9('0x3c')][_0x43c9('0xce')]));_0x252ea8[_0x43c9('0x3f')]=_0x252ea8['attributes'][_0x43c9('0x81')]?_0x252ea8[_0x43c9('0x3f')]:_0xd3364f[_0x43c9('0xcb')];_0x252ea8[_0x43c9('0xcf')]=qs[_0x43c9('0xd0')](_0x3d626b[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x252ea8['where']=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x3d626b[_0x43c9('0x3c')],_0xd3364f[_0x43c9('0xcd')]));if(_0x3d626b['query']['filter']){_0x252ea8['where']=_['merge'](_0x252ea8[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x252ea8[_0x43c9('0x3f')],function(_0x4fef83){var _0x41c09d={};_0x41c09d[_0x4fef83]={'$like':'%'+_0x3d626b[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x41c09d;})});}_0x252ea8=_['merge']({},_0x252ea8,_0x3d626b[_0x43c9('0x52')]);return _0x14a3bb[_0x43c9('0x142')](_0x252ea8);}})[_0x43c9('0x1b')](function(_0x429124){if(_0x429124){_0x10a58=_0x429124[_0x43c9('0x81')];if(!_0x3d626b[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x252ea8['limit']=qs[_0x43c9('0xd5')](_0x3d626b[_0x43c9('0x3c')]['limit']);_0x252ea8[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x3d626b[_0x43c9('0x3c')]['offset']);}return _0x14a3bb[_0x43c9('0x142')](_0x252ea8);}})[_0x43c9('0x1b')](function(_0x36d01e){if(_0x36d01e){return _0x36d01e?{'count':_0x10a58,'rows':_0x36d01e}:null;}})['then'](respondWithResult(_0x175236,null))[_0x43c9('0x4b')](handleError(_0x175236,null));};exports[_0x43c9('0x144')]=function(_0x15d685,_0x487834){return db['User'][_0x43c9('0x2b')]({'where':{'id':_0x15d685[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x487834,null))[_0x43c9('0x1b')](function(_0x3b2269){if(_0x3b2269){return _0x3b2269['addChatWebsites'](_0x15d685[_0x43c9('0x55')][_0x43c9('0x58')],_['omit'](_0x15d685[_0x43c9('0x55')],[_0x43c9('0x58'),'id'])||{});}})[_0x43c9('0x1b')](respondWithResult(_0x487834,null))[_0x43c9('0x4b')](handleError(_0x487834,null));};exports[_0x43c9('0x145')]=function(_0x33252d,_0x138c8b){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x33252d[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x138c8b,null))['then'](function(_0x3edb5f){if(_0x3edb5f){return _0x3edb5f['removeChatWebsites'](_0x33252d[_0x43c9('0x3c')][_0x43c9('0x58')]);}})[_0x43c9('0x1b')](respondWithStatusCode(_0x138c8b,null))[_0x43c9('0x4b')](handleError(_0x138c8b,null));};exports[_0x43c9('0x146')]=function(_0x3a9ac4,_0x59b228){var _0x29edfb={};var _0x43e553={};var _0x2e28c6;var _0x5b3860;return db[_0x43c9('0x30')]['findOne']({'where':{'id':_0x3a9ac4['params']['id']}})['then'](handleEntityNotFound(_0x59b228,null))[_0x43c9('0x1b')](function(_0x4cc2f8){if(_0x4cc2f8){_0x2e28c6=_0x4cc2f8;_0x43e553[_0x43c9('0xcb')]=_['keys'](db[_0x43c9('0x147')][_0x43c9('0x31')]);_0x43e553[_0x43c9('0x3c')]=_['keys'](_0x3a9ac4[_0x43c9('0x3c')]);_0x43e553['filters']=_[_0x43c9('0xd7')](_0x43e553[_0x43c9('0xcb')],_0x43e553[_0x43c9('0x3c')]);_0x29edfb[_0x43c9('0x3f')]=_[_0x43c9('0xd7')](_0x43e553[_0x43c9('0xcb')],qs[_0x43c9('0xce')](_0x3a9ac4[_0x43c9('0x3c')]['fields']));_0x29edfb[_0x43c9('0x3f')]=_0x29edfb[_0x43c9('0x3f')][_0x43c9('0x81')]?_0x29edfb[_0x43c9('0x3f')]:_0x43e553[_0x43c9('0xcb')];_0x29edfb[_0x43c9('0xcf')]=qs['sort'](_0x3a9ac4[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0x29edfb['where']=qs[_0x43c9('0xcd')](_[_0x43c9('0xd1')](_0x3a9ac4[_0x43c9('0x3c')],_0x43e553[_0x43c9('0xcd')]));if(_0x3a9ac4[_0x43c9('0x3c')][_0x43c9('0x27')]){_0x29edfb[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0x29edfb[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0x29edfb[_0x43c9('0x3f')],function(_0x5e5fd4){var _0x18d7b7={};_0x18d7b7[_0x5e5fd4]={'$like':'%'+_0x3a9ac4[_0x43c9('0x3c')]['filter']+'%'};return _0x18d7b7;})});}_0x29edfb=_[_0x43c9('0x51')]({},_0x29edfb,_0x3a9ac4[_0x43c9('0x52')]);return _0x2e28c6[_0x43c9('0x146')](_0x29edfb);}})[_0x43c9('0x1b')](function(_0x4d44af){if(_0x4d44af){_0x5b3860=_0x4d44af['length'];if(!_0x3a9ac4[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x29edfb[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x3a9ac4['query'][_0x43c9('0xd5')]);_0x29edfb['offset']=qs['offset'](_0x3a9ac4[_0x43c9('0x3c')][_0x43c9('0x1a')]);}return _0x2e28c6['getWhatsappAccounts'](_0x29edfb);}})['then'](function(_0xb07bdd){if(_0xb07bdd){return _0xb07bdd?{'count':_0x5b3860,'rows':_0xb07bdd}:null;}})['then'](respondWithResult(_0x59b228,null))['catch'](handleError(_0x59b228,null));};exports[_0x43c9('0x148')]=function(_0x48dd84,_0x4b06c7){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x48dd84[_0x43c9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4b06c7,null))[_0x43c9('0x1b')](function(_0xd7b0c4){if(_0xd7b0c4){return _0xd7b0c4['addWhatsappAccounts'](_0x48dd84[_0x43c9('0x55')][_0x43c9('0x58')],_['omit'](_0x48dd84[_0x43c9('0x55')],[_0x43c9('0x58'),'id'])||{});}})[_0x43c9('0x1b')](respondWithResult(_0x4b06c7,null))[_0x43c9('0x4b')](handleError(_0x4b06c7,null));};exports['removeWhatsappAccounts']=function(_0x41cb5e,_0x5f2457){return db['User'][_0x43c9('0x2b')]({'where':{'id':_0x41cb5e['params']['id']}})['then'](handleEntityNotFound(_0x5f2457,null))[_0x43c9('0x1b')](function(_0x27d999){if(_0x27d999){return _0x27d999[_0x43c9('0x149')](_0x41cb5e[_0x43c9('0x3c')][_0x43c9('0x58')]);}})[_0x43c9('0x1b')](respondWithStatusCode(_0x5f2457,null))['catch'](handleError(_0x5f2457,null));};exports['getScheduledCalls']=function(_0x579e88,_0x33469b){var _0xc94d10={},_0x2722e6={},_0x31908c={'count':0x0,'rows':[]};var _0x441388=db[_0x43c9('0x14a')][_0x43c9('0x31')];_0x2722e6[_0x43c9('0xcb')]=_[_0x43c9('0xcc')](_0x441388);_0x2722e6['query']=_[_0x43c9('0xcc')](_0x579e88['query']);_0x2722e6[_0x43c9('0xcd')]=_[_0x43c9('0xd7')](_0x2722e6[_0x43c9('0xcb')],_0x2722e6[_0x43c9('0x3c')]);_0x2722e6['filters']=_[_0x43c9('0xc0')](_0x2722e6[_0x43c9('0xcd')],['$and',_0x43c9('0x14b'),_0x43c9('0x14c'),_0x43c9('0x14d'),_0x43c9('0x14e'),'$lte',_0x43c9('0x14f'),_0x43c9('0x150'),_0x43c9('0x151'),'$between',_0x43c9('0x152'),_0x43c9('0x153'),_0x43c9('0x154'),'$like','$notLike',_0x43c9('0x155'),'$notILike','$like',_0x43c9('0x156'),_0x43c9('0x157'),_0x43c9('0x158'),'$any']);_0xc94d10[_0x43c9('0x3f')]=_['intersection'](_0x2722e6[_0x43c9('0xcb')],qs['fields'](_0x579e88[_0x43c9('0x3c')][_0x43c9('0xce')]));_0xc94d10[_0x43c9('0x3f')]=_0xc94d10[_0x43c9('0x3f')]['length']?_0xc94d10[_0x43c9('0x3f')]:_0x2722e6[_0x43c9('0xcb')];if(!_0x579e88[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0xc94d10[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x579e88[_0x43c9('0x3c')][_0x43c9('0xd5')]);_0xc94d10[_0x43c9('0x1a')]=qs['offset'](_0x579e88[_0x43c9('0x3c')][_0x43c9('0x1a')]);}_0xc94d10['order']=qs[_0x43c9('0xd0')](_0x579e88[_0x43c9('0x3c')][_0x43c9('0xd0')]);_0xc94d10['where']=qs[_0x43c9('0xcd')](_['pick'](_0x579e88['query'],_0x2722e6[_0x43c9('0xcd')]));if(_0x579e88['query'][_0x43c9('0x27')]){_0xc94d10[_0x43c9('0x3b')]=_[_0x43c9('0x51')](_0xc94d10[_0x43c9('0x3b')],{'$or':_[_0x43c9('0x32')](_0xc94d10[_0x43c9('0x3f')],function(_0x340af2){var _0x16f8f2={};_0x16f8f2[_0x340af2]={'$like':'%'+_0x579e88[_0x43c9('0x3c')][_0x43c9('0x27')]+'%'};return _0x16f8f2;})});}_0xc94d10['where']={'$and':[_0xc94d10['where'],{'$or':[{'UserId':_0x579e88[_0x43c9('0x4d')]['id']},{'OwnerId':_0x579e88[_0x43c9('0x4d')]['id']}]}]};_0xc94d10=_[_0x43c9('0x51')]({},_0xc94d10,_0x579e88[_0x43c9('0x52')]);var _0x31f97d={'where':_0xc94d10[_0x43c9('0x3b')]};return db[_0x43c9('0x14a')]['count'](_0x31f97d)[_0x43c9('0x1b')](function(_0x10e848){_0x31908c[_0x43c9('0x19')]=_0x10e848;if(_0x579e88[_0x43c9('0x3c')][_0x43c9('0x4e')]){_0xc94d10['include']=[{'attributes':['id',_0x43c9('0x159'),_0x43c9('0x15a'),_0x43c9('0xe9')],'model':db['CmContact'],'as':_0x43c9('0x15b')},{'attributes':['id','name',_0x43c9('0x15c')],'model':db[_0x43c9('0xa3')],'as':_0x43c9('0xd2')}];}return db[_0x43c9('0x14a')][_0x43c9('0x40')](_0xc94d10);})['then'](function(_0x90674c){_0x31908c[_0x43c9('0x42')]=_0x90674c;return _0x31908c;})[_0x43c9('0x1b')](respondWithFilteredResult(_0x33469b,_0xc94d10))[_0x43c9('0x4b')](handleError(_0x33469b,null));};exports[_0x43c9('0x15d')]=function(_0x370730,_0x3c6079){if(!_[_0x43c9('0x5f')](_0x370730[_0x43c9('0x23')]['id'])&&(_0x370730['user'][_0x43c9('0x1c')]==_0x43c9('0x21')||_0x370730[_0x43c9('0x23')]['role']==_0x43c9('0x23'))){return db[_0x43c9('0x30')]['findOne']({'where':{'id':_0x370730['params']['id']},'raw':!![]})['then'](function(_0x298ee3){return authService[_0x43c9('0x15e')](_0x298ee3);})[_0x43c9('0x1b')](function(_0x5447fb){if(_0x5447fb){return _0x3c6079[_0x43c9('0x15')](0xc8)['json']({'api_key':_0x5447fb[_0x43c9('0x15f')]});}else{return _0x3c6079[_0x43c9('0x15')](0xcc)['json']({'message':_0x43c9('0x160')});}})['catch'](handleError(_0x3c6079,0x193));}else{return _0x3c6079[_0x43c9('0x15')](0x191)[_0x43c9('0x17')]({'message':_0x43c9('0x161')});}};exports[_0x43c9('0x162')]=function(_0x26fcc5,_0x22d9df){if(!_[_0x43c9('0x5f')](_0x26fcc5[_0x43c9('0x23')]['id'])&&(_0x26fcc5[_0x43c9('0x23')][_0x43c9('0x1c')]==_0x43c9('0x21')||_0x26fcc5[_0x43c9('0x23')][_0x43c9('0x1c')]=='user')){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x26fcc5[_0x43c9('0x4d')]['id']}})['then'](function(_0x511b09){return authService[_0x43c9('0x163')](_0x511b09);})['then'](function(_0x1a3644){return db[_0x43c9('0x30')]['update']({'apiKeyIat':_0x1a3644[_0x43c9('0x164')],'apiKeyNonce':_0x1a3644['nonce']},{'where':{'id':_0x26fcc5['params']['id']}})[_0x43c9('0x1b')](function(){return _0x22d9df['status'](0xc8)[_0x43c9('0x17')]({'api_key':_0x1a3644[_0x43c9('0x15f')]});});})[_0x43c9('0x4b')](handleError(_0x22d9df,0x193));}else{return _0x22d9df[_0x43c9('0x15')](0x191)[_0x43c9('0x17')]({'message':_0x43c9('0x161')});}};exports['removeApiKey']=function(_0x3d5756,_0x18b003){if(!_[_0x43c9('0x5f')](_0x3d5756['user']['id'])&&(_0x3d5756[_0x43c9('0x23')][_0x43c9('0x1c')]==_0x43c9('0x21')||_0x3d5756['user'][_0x43c9('0x1c')]==_0x43c9('0x23'))){return db[_0x43c9('0x30')][_0x43c9('0x2b')]({'where':{'id':_0x3d5756[_0x43c9('0x4d')]['id']}})[_0x43c9('0x1b')](handleEntityNotFound(_0x18b003,null))[_0x43c9('0x1b')](function(_0x1298f2){if(_0x1298f2&&_0x1298f2[_0x43c9('0x165')]&&_0x1298f2[_0x43c9('0x166')])return _0x1298f2;else throw{'message':_0x43c9('0x167')};})[_0x43c9('0x1b')](function(){return db[_0x43c9('0x30')][_0x43c9('0x54')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x3d5756[_0x43c9('0x4d')]['id']}});})[_0x43c9('0x1b')](respondWithStatusCode(_0x18b003,0xc8))['catch'](handleError(_0x18b003,0x193));}else{return _0x18b003[_0x43c9('0x15')](0x191)[_0x43c9('0x17')]({'message':_0x43c9('0x161')});}};exports[_0x43c9('0x168')]=function(_0x3203de,_0xa24f3d){var _0x460da3=_0x3203de[_0x43c9('0x23')][_0x43c9('0x20')]({'plain':!![]});if(!_0x460da3){return _0xa24f3d[_0x43c9('0x15')](0x191)[_0x43c9('0x2f')](_0x43c9('0x169'));}else{Promise[_0x43c9('0x16a')]()['then'](function(){if(_0x3203de[_0x43c9('0x3c')][_0x43c9('0x4f')]!=='true')return;return _0x3203de[_0x43c9('0x23')][_0x43c9('0x16b')]();})[_0x43c9('0x1b')](function(_0x2c889f){if(!_0x2c889f)return;return _0x2c889f[_0x43c9('0x20')]({'plain':!![]});})[_0x43c9('0x1b')](function(_0xeb4d7c){_0x460da3[_0x43c9('0x4f')]=_0xeb4d7c;return _0xa24f3d['status'](0xc8)[_0x43c9('0x17')](_0x460da3);});}};exports[_0x43c9('0x16c')]=function(_0x34ed37,_0x48522f){var _0x3f98d3={'offset':0x0};var _0xa62cd5={'count':0x0,'rows':[]};var _0x500a4c=[_0x43c9('0x16d'),_0x43c9('0x16e'),_0x43c9('0x16f')];var _0x1d3273=[];var _0x4b3f86=[];var _0x574b89=[];var _0x5ab0bd=_0x34ed37[_0x43c9('0x3c')][_0x43c9('0x170')];var _0x52989f=_0x34ed37[_0x43c9('0x3c')]['queues'];var _0x1a85b1=_0x34ed37[_0x43c9('0x3c')][_0x43c9('0x27')];return Promise[_0x43c9('0x16a')]()['then'](function(){if(!_0x5ab0bd){return[];}return db[_0x43c9('0x10b')]['findAll']({'attributes':['id',_0x43c9('0x2e')],'where':{'id':_0x5ab0bd}});})[_0x43c9('0x1b')](function(_0x4ebdfb){_0x574b89=_0x4ebdfb;if(!_0x52989f){return[];}return db[_0x43c9('0xa3')][_0x43c9('0x40')]({'attributes':['id','name'],'type':_0x43c9('0x171'),'where':{'id':_0x52989f}});})[_0x43c9('0x1b')](function(_0x576716){_0x4b3f86=_0x576716;var _0x2c91af=_0x574b89[_0x43c9('0xc0')](_0x4b3f86)[_0x43c9('0x32')](function(_0x55f94e){return _0x55f94e[_0x43c9('0x11c')]({'attributes':['id',_0x43c9('0x2e'),'internal','online'],'raw':!![]});});return Promise[_0x43c9('0x4a')](_0x2c91af);})['then'](function(_0x28dc47){var _0x189ca8=_[_0x43c9('0x172')](_0x28dc47);if(_0x1a85b1){if(_0x52989f||_0x5ab0bd){return _0x189ca8[_0x43c9('0x27')](function(_0x22e0da){return _0x22e0da[_0x43c9('0x2e')][_0x43c9('0x9d')]()[_0x43c9('0x2a')](_0x1a85b1[_0x43c9('0x9d')]())||_0x22e0da[_0x43c9('0x5a')][_0x43c9('0x173')]()[_0x43c9('0x2a')](_0x1a85b1);});}else{return db['User'][_0x43c9('0x40')]({'attributes':['id',_0x43c9('0x2e'),_0x43c9('0x5a'),_0x43c9('0x96')],'where':{'role':_0x43c9('0x1d'),'$or':[db[_0x43c9('0x61')][_0x43c9('0x3b')](db[_0x43c9('0x61')]['fn'](_0x43c9('0x174'),db['sequelize'][_0x43c9('0x175')]('name')),{'$like':'%'+_0x1a85b1[_0x43c9('0x9d')]()+'%'}),{'internal':{'$like':'%'+_0x1a85b1+'%'}}]},'raw':!![]});}}else{return _0x189ca8;}})['then'](function(_0x17cd53){var _0x5d86a1=_0x43c9('0x2e');var _0xf267d=_0x43c9('0x176');if(_0x34ed37['query'][_0x43c9('0xd0')]){_0xf267d=_0x34ed37[_0x43c9('0x3c')]['sort'][0x0]==='-'?_0x43c9('0x177'):_0x43c9('0x176');_0x5d86a1=_0xf267d===_0x43c9('0x176')?_0x34ed37[_0x43c9('0x3c')]['sort']:_0x34ed37['query']['sort'][_0x43c9('0x178')](0x1);}return _(_0x17cd53)[_0x43c9('0x179')]('id')['orderBy']([function(_0x3e18c2){return _0x5d86a1===_0x43c9('0x2e')?_0x3e18c2[_0x5d86a1][_0x43c9('0x9d')]():_0x3e18c2[_0x5d86a1];}],[_0xf267d])['map'](function(_0x247304){return _['pick'](_0x247304,['id','name',_0x43c9('0x5a'),_0x43c9('0x96')]);})[_0x43c9('0x29')]();})[_0x43c9('0x1b')](function(_0x1f8b51){_0x1d3273=_0x1f8b51;return rta[_0x43c9('0x17a')]();})[_0x43c9('0x1b')](function(_0x57b1b8){return _0x1d3273[_0x43c9('0x32')](function(_0x306548){var _0x4aa973=_[_0x43c9('0x2b')](_0x57b1b8[_0x43c9('0x42')],['id',_0x306548['id']]);if(!_0x4aa973||!_0x306548[_0x43c9('0x96')]){_0x306548[_0x43c9('0x15')]=_0x43c9('0x17b');}else if(_0x4aa973['voicePause']){_0x306548[_0x43c9('0x15')]=_0x43c9('0x100');}else if(_0x4aa973[_0x43c9('0x17c')]==='unavailable'||!_0x4aa973[_0x43c9('0x17c')]){_0x306548[_0x43c9('0x15')]='unavailable';}else{_0x306548[_0x43c9('0x15')]=_0x500a4c[_0x43c9('0x2a')](_0x4aa973[_0x43c9('0x17c')])?'online':_0x43c9('0x17d');}return _0x306548;});})[_0x43c9('0x1b')](function(_0x32fc5f){if(!_0x34ed37[_0x43c9('0x3c')][_0x43c9('0xd8')](_0x43c9('0xd4'))){_0x3f98d3[_0x43c9('0xd5')]=qs[_0x43c9('0xd5')](_0x34ed37[_0x43c9('0x3c')][_0x43c9('0xd5')]||0xa);_0x3f98d3[_0x43c9('0x1a')]=qs[_0x43c9('0x1a')](_0x34ed37[_0x43c9('0x3c')][_0x43c9('0x1a')]);}_0xa62cd5['count']=_0x32fc5f[_0x43c9('0x81')];_0xa62cd5[_0x43c9('0x42')]=_0x3f98d3[_0x43c9('0xd5')]?_0x32fc5f[_0x43c9('0x17e')](_0x3f98d3[_0x43c9('0x1a')],_0x3f98d3[_0x43c9('0x1a')]+_0x3f98d3['limit']):_0x32fc5f;return _0xa62cd5;})['then'](respondWithFilteredResult(_0x48522f,_0x3f98d3))[_0x43c9('0x4b')](handleError(_0x48522f,null));};function get_open_tabs(_0x3719f0,_0x238f43){var _0x2ba501=_0x3719f0['charAt'](0x0)[_0x43c9('0x17f')]()+_0x3719f0[_0x43c9('0x17e')](0x1);var _0x113eb1={'type':db[_0x43c9('0x87')][_0x43c9('0x180')][_0x43c9('0x62')],'raw':!![]};return new Promise(function(_0x5095d8,_0x46b40f){var _0x39216b=squel[_0x43c9('0x181')]()[_0x43c9('0x182')]('ui.'+_0x2ba501+_0x43c9('0x183'),'id')['field'](_0x43c9('0x184'))[_0x43c9('0x63')]('user_has_'+_0x3719f0+_0x43c9('0x185'),'ui')[_0x43c9('0x3b')](_0x43c9('0x186'),_0x238f43['id']);return db['sequelize']['query'](_0x39216b[_0x43c9('0x173')](),_0x113eb1)[_0x43c9('0x1b')](function(_0x4f2d48){_0x238f43[_0x2ba501+_0x43c9('0x187')]=_0x4f2d48;_0x5095d8(_0x4f2d48);})[_0x43c9('0x4b')](function(_0xac4d73){_0x46b40f(_0xac4d73);});});}exports['messengerSoundNotification']=function(_0x5629ed,_0x5cd561){var _0x498a08=_0x5629ed[_0x43c9('0x4d')]['id'];var _0x198a05=_0x5629ed[_0x43c9('0x55')]['enabled'];return db[_0x43c9('0x30')]['update']({'messengerSoundNotification':_0x198a05},{'where':{'id':_0x498a08}})[_0x43c9('0x1b')](respondWithStatusCode(_0x5cd561,null))[_0x43c9('0x4b')](handleError(_0x5cd561,null));};
\ No newline at end of file
+var _0x2e4d=['100','111','114','115','user','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','create','UserProfileSection','Agents','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','map','compact','UserProfileResource','changePassword','oldPassword','newPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Sequelize','Wrong\x20credentials','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','enforcePasswordHistory','previousPasswords','validatePasswordHistory','passwordHistoryLimit','online','loginInPause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','penalty','spread','QueueId','emit','Queue:save','format','SIP/%s','voicePause','UserVoiceQueueRt','upsert','removeQueues','channel','Queue:remove','voice','addAvatar','filename','join','root','server/files/images/logos/default_profile.png','userpic','download','existsSync','server/files/images/','whatsapp','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','concat','getContacts','hasOwnProperty','CmList','List','Tag','color','tag','getQueues','Queue','keys','filters','intersection','model','fields','order','sort','pick','merge','options','getVoiceQueuesRt','nolimit','getGroups','ChatGroup','getRecordings','VoiceRecording','getScreenRecordings','UserId','ScreenRecording','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','mobile','LOCAL/%s@from-sip/n','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','LOGININPAUSE','isMiddleware','resolve','logout','pause','PAUSE','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','Team','getAssociatedQueues','addAgent','getDataValue','Voice','TeamVoicePrefix','VoicePrefixId','removeTeams','isArray','Query\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','flattenDeep','removeAgent','getLists','values','You\x20can\x27t\x20delete\x20yourself','CmHopper','addChatInteractions','omit','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','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','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','getScheduledCalls','$and','$or','$gt','$lte','$eq','$between','$notBetween','$in','$like','$iLike','$notILike','$overlap','$contained','$any','phone','CmContact','dialActive','VoiceQueue','retrieveApiKey','token','createApiKey','iat','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','apiKeyIat','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','idle','ringing','inbound','flatten','toString','lower','col','asc','desc','substring','uniqBy','getRealtimeAgents','offline','voiceStatus','unavailable','busy','slice','charAt','select','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','messengerSoundNotification','moment','lodash','squel','ioredis','../../components/auth/service','../../components/contacts','../../components/realtime/agents','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APIForbiddenrror','handleError','socket.io-emitter','redis','./user.socket','register','defaults','localhost','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','update','then','role','agent','destroy','get','admin','Users','Telephones','telephone','filter','value','includes','name','stack','send','User','rawAttributes','fieldName','type','key','password','salt','resetPasswordToken','resetPasswordExpires','index','getOptions','where','query','includeAll','include','true','UserSetting','userSetting','attributes','push','findAll','rows','openTabs','length','dataValues','mail','all','catch','show','params','find','chat','sms','openchannel','fax','body','describe','addContacts','ids','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','mailbox','VoiceMail','fullname','permissions','102','103','113','110','104','106','109'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x2e4d,0x117));var _0xd2e4=function(_0x2c72bd,_0xc43b5d){_0x2c72bd=_0x2c72bd-0x0;var _0x3333af=_0x2e4d[_0x2c72bd];return _0x3333af;};'use strict';var moment=require(_0xd2e4('0x0'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xd2e4('0x1'));var squel=require(_0xd2e4('0x2'));var Redis=require(_0xd2e4('0x3'));var authService=require(_0xd2e4('0x4'));var contacts=require(_0xd2e4('0x5'));var qs=require('../../components/parsers/qs');var rta=require(_0xd2e4('0x6'));var logger=require(_0xd2e4('0x7'))(_0xd2e4('0x8'));var utils=require(_0xd2e4('0x9'));var config=require(_0xd2e4('0xa'));var licenseUtil=require(_0xd2e4('0xb'));var APIBadRequestError=require(_0xd2e4('0xc'))['APIBadRequestError'];var APINotFoundError=require(_0xd2e4('0xc'))['APINotFoundError'];var APIForbiddenError=require('../../errors/api')[_0xd2e4('0xd')];var APIHandleError=require(_0xd2e4('0xc'))[_0xd2e4('0xe')];var db=require('../../mysqldb')['db'];var socket=require(_0xd2e4('0xf'))(new Redis(config[_0xd2e4('0x10')]));require(_0xd2e4('0x11'))[_0xd2e4('0x12')](socket);config[_0xd2e4('0x10')]=_[_0xd2e4('0x13')](config['redis'],{'host':_0xd2e4('0x14'),'port':0x18eb});var values;function respondWithStatusCode(_0x2e0b15,_0x38cf90){_0x38cf90=_0x38cf90||0xcc;return function(_0x11c21c){if(_0x11c21c){return _0x2e0b15[_0xd2e4('0x15')](_0x38cf90);}return _0x2e0b15[_0xd2e4('0x16')](_0x38cf90)[_0xd2e4('0x17')]();};}function respondWithResult(_0x11fa83,_0x5839d3){_0x5839d3=_0x5839d3||0xc8;return function(_0x2cddfa){if(_0x2cddfa){return _0x11fa83['status'](_0x5839d3)['json'](_0x2cddfa);}};}function respondWithFilteredResult(_0x2971d9,_0x31ce9e){return function(_0x26af61){if(_0x26af61){var _0x4f061b=typeof _0x31ce9e['offset']===_0xd2e4('0x18')&&typeof _0x31ce9e[_0xd2e4('0x19')]===_0xd2e4('0x18');var _0x377453=_0x26af61[_0xd2e4('0x1a')];var _0x351807=_0x4f061b?0x0:_0x31ce9e[_0xd2e4('0x1b')];var _0x1a7bd5=_0x4f061b?_0x26af61['count']:_0x31ce9e['offset']+_0x31ce9e[_0xd2e4('0x19')];var _0x3b2620;if(_0x1a7bd5>=_0x377453){_0x1a7bd5=_0x377453;_0x3b2620=0xc8;}else{_0x3b2620=0xce;}_0x2971d9[_0xd2e4('0x16')](_0x3b2620);return _0x2971d9['set'](_0xd2e4('0x1c'),_0x351807+'-'+_0x1a7bd5+'/'+_0x377453)[_0xd2e4('0x1d')](_0x26af61);}return null;};}function saveUpdates(_0x527549){return function(_0xb2a289){if(_0xb2a289){return _0xb2a289[_0xd2e4('0x1e')](_0x527549)[_0xd2e4('0x1f')](function(_0x1ba23f){if(_0x1ba23f[_0xd2e4('0x20')]===_0xd2e4('0x21')){socket['emit']('userNotification:recalc:'+_0x1ba23f['id'],_0x1ba23f);}return _0x1ba23f;});}return null;};}function removeEntity(_0x55e8ed,_0x578844){return function(_0x1434fb){if(_0x1434fb){return _0x1434fb[_0xd2e4('0x22')]({'transaction':_0x578844})[_0xd2e4('0x1f')](function(){var _0x12287a=_0x1434fb[_0xd2e4('0x23')]({'plain':!![]});if(_0x12287a[_0xd2e4('0x20')]===_0xd2e4('0x24'))return;var _0x1b64ba=[{'name':_0xd2e4('0x25'),'value':'user','ignore':!![]},{'name':'Agents','value':_0xd2e4('0x21'),'ignore':![]},{'name':_0xd2e4('0x26'),'value':_0xd2e4('0x27'),'ignore':![]}];var _0x569ba0=_(_0x1b64ba)[_0xd2e4('0x28')]('ignore')['map'](_0xd2e4('0x29'))[_0xd2e4('0x29')]();if(_[_0xd2e4('0x2a')](_0x569ba0,_0x12287a[_0xd2e4('0x20')])){return;}var _0x14b29b=_['find'](_0x1b64ba,['value',_0x12287a['role']])[_0xd2e4('0x2b')];return db['UserProfileResource'][_0xd2e4('0x22')]({'where':{'type':_0x14b29b,'resourceId':_0x12287a['id']},'transaction':_0x578844})[_0xd2e4('0x1f')](function(){return _0x1434fb;});})[_0xd2e4('0x1f')](function(){_0x55e8ed[_0xd2e4('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x126881){return function(_0x5532a5){if(!_0x5532a5){_0x126881[_0xd2e4('0x15')](0x194);}return _0x5532a5;};}function handleError(_0x30d592,_0x1e383d){_0x1e383d=_0x1e383d||0x1f4;return function(_0x5ed4a5){logger['error'](_0x5ed4a5[_0xd2e4('0x2c')]);if(_0x5ed4a5[_0xd2e4('0x2b')]){delete _0x5ed4a5[_0xd2e4('0x2b')];}_0x30d592[_0xd2e4('0x16')](_0x1e383d)[_0xd2e4('0x2d')](_0x5ed4a5);};}function getUserAttributes(){return _(db[_0xd2e4('0x2e')][_0xd2e4('0x2f')])['map'](function(_0x2dd124){return{'name':_0x2dd124[_0xd2e4('0x30')],'type':_0x2dd124[_0xd2e4('0x31')][_0xd2e4('0x32')]};})[_0xd2e4('0x28')](function(_0x57b1c5){return![_0xd2e4('0x33'),_0xd2e4('0x34'),'previousPasswords',_0xd2e4('0x35'),_0xd2e4('0x36'),'md5secret'][_0xd2e4('0x2a')](_0x57b1c5[_0xd2e4('0x2b')]);})[_0xd2e4('0x29')]();}exports[_0xd2e4('0x37')]=function(_0x5d0997,_0x13122a){var _0x2a2d55={},_0x47aa09={'count':0x0,'rows':[]};var _0x2af920=getUserAttributes();_0x2a2d55=qs[_0xd2e4('0x38')](_0x2af920,_0x5d0997);var _0x2ca2b6={'where':_0x2a2d55[_0xd2e4('0x39')]};return db[_0xd2e4('0x2e')][_0xd2e4('0x1a')](_0x2ca2b6)['then'](function(_0x4485fd){_0x47aa09[_0xd2e4('0x1a')]=_0x4485fd;if(_0x5d0997[_0xd2e4('0x3a')][_0xd2e4('0x3b')]){_0x2a2d55[_0xd2e4('0x3c')]=[{'all':!![]}];}if(_0x5d0997['query']['userSetting']===_0xd2e4('0x3d')){_0x2a2d55[_0xd2e4('0x3c')]=[{'model':db[_0xd2e4('0x3e')],'as':_0xd2e4('0x3f')}];}if(!_[_0xd2e4('0x2a')](_0x2a2d55[_0xd2e4('0x40')],'id')){_0x2a2d55['attributes'][_0xd2e4('0x41')]('id');}return db['User'][_0xd2e4('0x42')](_0x2a2d55);})['then'](function(_0x59ad16){_0x47aa09[_0xd2e4('0x43')]=_0x59ad16;if(_0x5d0997['query'][_0xd2e4('0x44')]===_0xd2e4('0x3d')){var _0x43eba9=[];for(var _0xfcee57=0x0;_0xfcee57<_0x47aa09[_0xd2e4('0x43')][_0xd2e4('0x45')];_0xfcee57++){_0x43eba9[_0xd2e4('0x41')](get_open_tabs('chat',_0x47aa09['rows'][_0xfcee57][_0xd2e4('0x46')]));_0x43eba9[_0xd2e4('0x41')](get_open_tabs('sms',_0x47aa09[_0xd2e4('0x43')][_0xfcee57][_0xd2e4('0x46')]));_0x43eba9[_0xd2e4('0x41')](get_open_tabs('fax',_0x47aa09[_0xd2e4('0x43')][_0xfcee57][_0xd2e4('0x46')]));_0x43eba9[_0xd2e4('0x41')](get_open_tabs(_0xd2e4('0x47'),_0x47aa09['rows'][_0xfcee57][_0xd2e4('0x46')]));_0x43eba9[_0xd2e4('0x41')](get_open_tabs('openchannel',_0x47aa09[_0xd2e4('0x43')][_0xfcee57]['dataValues']));_0x43eba9[_0xd2e4('0x41')](get_open_tabs('whatsapp',_0x47aa09[_0xd2e4('0x43')][_0xfcee57][_0xd2e4('0x46')]));}return Promise[_0xd2e4('0x48')](_0x43eba9)[_0xd2e4('0x1f')](function(){return _0x47aa09;});}else{return _0x47aa09;}})[_0xd2e4('0x1f')](respondWithFilteredResult(_0x13122a,_0x2a2d55))[_0xd2e4('0x49')](handleError(_0x13122a,null));};exports[_0xd2e4('0x4a')]=function(_0x282f28,_0x2c8e77){var _0x388b93=getUserAttributes();_0x282f28[_0xd2e4('0x3a')]['id']=_0x282f28[_0xd2e4('0x4b')]['id'];var _0x5ee176=qs[_0xd2e4('0x38')](_0x388b93,_0x282f28);if(_0x282f28['query']['includeAll']){_0x5ee176[_0xd2e4('0x3c')]=[{'all':!![]}];}if(_0x282f28[_0xd2e4('0x3a')][_0xd2e4('0x3f')]==='true'){_0x5ee176[_0xd2e4('0x3c')]=[{'model':db[_0xd2e4('0x3e')],'as':'userSetting'}];}_0x5ee176=_['merge']({},_0x5ee176,_0x282f28['options']);if(!_[_0xd2e4('0x2a')](_0x5ee176[_0xd2e4('0x40')],'id')){_0x5ee176[_0xd2e4('0x40')]['push']('id');}return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')](_0x5ee176)['then'](handleEntityNotFound(_0x2c8e77,null))[_0xd2e4('0x1f')](function(_0x4b2543){var _0x4013ce=[];values=_0x4b2543;if(_0x282f28['query']['openTabs']===_0xd2e4('0x3d')){_0x4013ce[_0xd2e4('0x41')](get_open_tabs(_0xd2e4('0x4d'),_0x4b2543[_0xd2e4('0x46')]));_0x4013ce[_0xd2e4('0x41')](get_open_tabs(_0xd2e4('0x4e'),_0x4b2543[_0xd2e4('0x46')]));_0x4013ce['push'](get_open_tabs(_0xd2e4('0x4f'),_0x4b2543[_0xd2e4('0x46')]));_0x4013ce['push'](get_open_tabs('whatsapp',_0x4b2543[_0xd2e4('0x46')]));_0x4013ce[_0xd2e4('0x41')](get_open_tabs(_0xd2e4('0x50'),_0x4b2543[_0xd2e4('0x46')]));_0x4013ce[_0xd2e4('0x41')](get_open_tabs(_0xd2e4('0x47'),_0x4b2543[_0xd2e4('0x46')]));return Promise['all'](_0x4013ce);}else{return values;}})[_0xd2e4('0x1f')](function(){return values;})['then'](respondWithResult(_0x2c8e77,null))['catch'](handleError(_0x2c8e77,null));};exports[_0xd2e4('0x1e')]=function(_0x28330f,_0x2ffc00){if(_0x28330f['body']['id']){delete _0x28330f[_0xd2e4('0x51')]['id'];}delete _0x28330f[_0xd2e4('0x51')][_0xd2e4('0x20')];return db['User']['find']({'where':{'id':_0x28330f['params']['id']}})['then'](handleEntityNotFound(_0x2ffc00,null))[_0xd2e4('0x1f')](saveUpdates(_0x28330f[_0xd2e4('0x51')],null))[_0xd2e4('0x1f')](respondWithResult(_0x2ffc00,null))[_0xd2e4('0x49')](handleError(_0x2ffc00,null));};exports[_0xd2e4('0x52')]=function(_0x333443,_0x4e58da){return db[_0xd2e4('0x2e')]['describe']()[_0xd2e4('0x1f')](respondWithResult(_0x4e58da,null))[_0xd2e4('0x49')](handleError(_0x4e58da,null));};exports['addContacts']=function(_0x339159,_0x18b1e3){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x339159[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x18b1e3,null))[_0xd2e4('0x1f')](function(_0x5a5d2f){if(_0x5a5d2f){return _0x5a5d2f[_0xd2e4('0x53')](_0x339159[_0xd2e4('0x51')]['ids'],_['omit'](_0x339159[_0xd2e4('0x51')],[_0xd2e4('0x54'),'id'])||{});}})[_0xd2e4('0x1f')](respondWithResult(_0x18b1e3,null))['catch'](handleError(_0x18b1e3,null));};function validateUser(_0x4d751f){return new Promise(function(_0x374db3,_0x29ca57){if(_0x4d751f[_0xd2e4('0x55')])return _0x374db3(_0x4d751f);return db['Setting'][_0xd2e4('0x56')](0x1)[_0xd2e4('0x1f')](function(_0xa69d56){if(_0xa69d56[_0xd2e4('0x57')])authService[_0xd2e4('0x58')](_0x4d751f[_0xd2e4('0x33')]);db[_0xd2e4('0x2e')][_0xd2e4('0x59')](_0xd2e4('0x55'))[_0xd2e4('0x1f')](function(_0x12d6eb){if(_[_0xd2e4('0x5a')](_0x12d6eb)){_0x4d751f['internal']=_0xa69d56[_0xd2e4('0x5b')]||0x1;return;}if(_[_0xd2e4('0x5a')](_0xa69d56[_0xd2e4('0x5b')])||_0xa69d56[_0xd2e4('0x5b')]===_0x12d6eb){_0x4d751f[_0xd2e4('0x55')]=_0x12d6eb+0x1;return;}if(_0xa69d56[_0xd2e4('0x5b')]>_0x12d6eb){_0x4d751f['internal']=_0xa69d56[_0xd2e4('0x5b')];return;}return db[_0xd2e4('0x5c')][_0xd2e4('0x3a')](_0xd2e4('0x5d'),{'type':db[_0xd2e4('0x5c')][_0xd2e4('0x5e')][_0xd2e4('0x5f')]})[_0xd2e4('0x1f')](function(_0x1be164){if(_0x1be164&&_0x1be164[_0xd2e4('0x45')]){for(var _0x9bc4bb=0x0,_0x41475e=_0x1be164['length'];_0x9bc4bb<_0x41475e&&_[_0xd2e4('0x5a')](_0x4d751f[_0xd2e4('0x55')]);_0x9bc4bb++){if(_0xa69d56[_0xd2e4('0x5b')]<=_0x1be164[_0x9bc4bb][_0xd2e4('0x60')]){_0x4d751f['internal']=_0x1be164[_0x9bc4bb][_0xd2e4('0x60')];}else if(_0xa69d56['min_internal']>_0x1be164[_0x9bc4bb][_0xd2e4('0x60')]&&_0xa69d56[_0xd2e4('0x5b')]<=_0x1be164[_0x9bc4bb]['to']){_0x4d751f[_0xd2e4('0x55')]=_0xa69d56[_0xd2e4('0x5b')];}}}if(_[_0xd2e4('0x5a')](_0x4d751f['internal'])){_0x4d751f['internal']=_0x12d6eb+0x1;}return _0x374db3(_0x4d751f);});});})[_0xd2e4('0x49')](function(_0x48db3d){_0x29ca57(_0x48db3d);});});}function updateUser(_0x5d939c){return new Promise(function(_0x3acf24,_0x6d85fe){try{if(_0x5d939c['voicemail']){_0x5d939c[_0xd2e4('0x61')]=_0x5d939c['internal'];_0x5d939c[_0xd2e4('0x62')]={'mailbox':_0x5d939c[_0xd2e4('0x55')],'password':_0x5d939c[_0xd2e4('0x33')],'fullname':_0x5d939c[_0xd2e4('0x63')],'email':_0x5d939c['email']};}if(_0x5d939c['role']===_0xd2e4('0x21')){if(!_0x5d939c[_0xd2e4('0x64')])_0x5d939c[_0xd2e4('0x64')]=['101',_0xd2e4('0x65'),_0xd2e4('0x66'),_0xd2e4('0x67'),_0xd2e4('0x68'),_0xd2e4('0x69'),'105',_0xd2e4('0x6a'),'107','108',_0xd2e4('0x6b'),_0xd2e4('0x6c'),_0xd2e4('0x6d'),_0xd2e4('0x6e'),_0xd2e4('0x6f')];}_0x3acf24(_0x5d939c);}catch(_0x5c9f64){_0x6d85fe(_0x5c9f64);}});}exports['create']=function(_0x379846,_0x5beb47){if(_0x379846[_0xd2e4('0x70')][_0xd2e4('0x20')]===_0xd2e4('0x21'))throw new Error(_0xd2e4('0x71'));if(_0x379846[_0xd2e4('0x51')][_0xd2e4('0x20')]==='user'&&_0x379846[_0xd2e4('0x70')][_0xd2e4('0x20')]!==_0xd2e4('0x24')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x379846[_0xd2e4('0x51')][_0xd2e4('0x20')]===_0xd2e4('0x24')&&_0x379846[_0xd2e4('0x70')][_0xd2e4('0x20')]!==_0xd2e4('0x24')){throw new Error(_0xd2e4('0x72'));}return licenseUtil[_0xd2e4('0x73')]([_0x379846[_0xd2e4('0x51')]])[_0xd2e4('0x1f')](function(){return validateUser(_0x379846[_0xd2e4('0x51')]);})[_0xd2e4('0x1f')](function(_0x2044ae){return updateUser(_0x2044ae)['then'](function(_0x41199b){if(_0x41199b[_0xd2e4('0x20')]===_0xd2e4('0x24')){_0x41199b[_0xd2e4('0x74')]=_0x379846[_0xd2e4('0x70')][_0xd2e4('0x74')];delete _0x41199b[_0xd2e4('0x75')];}return _0x41199b;});})[_0xd2e4('0x1f')](function(_0x2297f6){return db[_0xd2e4('0x2e')][_0xd2e4('0x76')](_0x2297f6,{'include':[{'model':db[_0xd2e4('0x62')],'as':_0xd2e4('0x62')}]});})['then'](function(_0x5b68f6){if(_0x379846[_0xd2e4('0x51')][_0xd2e4('0x20')]===_0xd2e4('0x70'))return _0x5b68f6;if(_0x379846['user'][_0xd2e4('0x20')]!==_0xd2e4('0x70'))return _0x5b68f6;return db[_0xd2e4('0x77')][_0xd2e4('0x4c')]({'where':{'name':_0x5b68f6[_0xd2e4('0x20')]===_0xd2e4('0x21')?_0xd2e4('0x78'):'Telephones','userProfileId':_0x379846[_0xd2e4('0x70')]['userProfileId']},'raw':!![]})[_0xd2e4('0x1f')](function(_0x3c3e71){if(!_0x3c3e71||_0x3c3e71[_0xd2e4('0x79')]!=0x0)return _0x5b68f6;return db['UserProfileResource'][_0xd2e4('0x76')]({'name':_0x5b68f6[_0xd2e4('0x2b')],'resourceId':_0x5b68f6['id'],'type':_0x3c3e71[_0xd2e4('0x2b')],'sectionId':_0x3c3e71['id']},{})[_0xd2e4('0x1f')](function(){return _0x5b68f6;});})[_0xd2e4('0x49')](function(_0x574036){logger['error'](_0xd2e4('0x7a'),_0x574036);throw _0x574036;});})['then'](respondWithResult(_0x5beb47,0xc9))[_0xd2e4('0x49')](handleError(_0x5beb47,null));};exports[_0xd2e4('0x7b')]=function(_0x57b4a6,_0x3235eb){var _0x113e11=_0x57b4a6[_0xd2e4('0x51')];var _0x5363b4=[];if(_0x57b4a6[_0xd2e4('0x70')][_0xd2e4('0x20')]==='agent')throw new Error(_0xd2e4('0x71'));if(_[_0xd2e4('0x7c')](_0x113e11,[_0xd2e4('0x20'),'user'])&&_0x57b4a6[_0xd2e4('0x70')][_0xd2e4('0x20')]!==_0xd2e4('0x24')){throw new Error(_0xd2e4('0x7d'));}if(_['some'](_0x113e11,['role','admin'])&&_0x57b4a6[_0xd2e4('0x70')][_0xd2e4('0x20')]!==_0xd2e4('0x24')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0xd2e4('0x73')](_0x113e11)[_0xd2e4('0x1f')](function(){return validateUser(_0x113e11[0x0]);})[_0xd2e4('0x1f')](function(){for(var _0x14e87c=0x1;_0x14e87c<_0x113e11[_0xd2e4('0x45')];_0x14e87c++){var _0x3cf791=_0x113e11[_0x14e87c-0x1][_0xd2e4('0x55')];if(!_0x113e11[_0x14e87c]['internal'])_0x113e11[_0x14e87c][_0xd2e4('0x55')]=_0x3cf791+0x1;_0x5363b4[_0xd2e4('0x41')](validateUser(_0x113e11[_0x14e87c]));}return Promise[_0xd2e4('0x48')](_0x5363b4);})[_0xd2e4('0x1f')](function(){_0x5363b4=[];for(var _0x495706=0x0;_0x495706<_0x113e11['length'];_0x495706++){_0x5363b4[_0xd2e4('0x41')](updateUser(_0x113e11[_0x495706]));}return Promise['all'](_0x5363b4);})[_0xd2e4('0x1f')](function(){_0x5363b4=_0x113e11[_0xd2e4('0x7e')](function(_0x1ca0ea){return db['User'][_0xd2e4('0x76')](_0x1ca0ea,{'include':[{'model':db[_0xd2e4('0x62')],'as':_0xd2e4('0x62')}]})[_0xd2e4('0x1f')](function(_0x39f34c){_0x1ca0ea['id']=_0x39f34c['id'];return _0x1ca0ea;});});return Promise[_0xd2e4('0x48')](_0x5363b4);})[_0xd2e4('0x1f')](function(_0x207da4){if(_0x57b4a6['body'][_0xd2e4('0x20')]===_0xd2e4('0x70'))return _0x207da4;if(_0x57b4a6[_0xd2e4('0x70')][_0xd2e4('0x20')]!==_0xd2e4('0x70'))return _0x207da4;var _0x6126eb=_[_0xd2e4('0x7c')](_0x207da4,function(_0x2bacf9){return _0x2bacf9[_0xd2e4('0x20')]===_0xd2e4('0x21')||_0x2bacf9[_0xd2e4('0x20')]==='telephone';});if(!_0x6126eb)return _0x207da4;return db[_0xd2e4('0x77')]['findAll']({'where':{'name':{'$or':[_0xd2e4('0x78'),_0xd2e4('0x26')]},'userProfileId':_0x57b4a6['user'][_0xd2e4('0x75')]},'raw':!![]})[_0xd2e4('0x1f')](function(_0x5033d5){if(_['isEmpty'](_0x5033d5)||!_[_0xd2e4('0x7c')](_0x5033d5,['autoAssociation',0x0]))return _0x207da4;_0x5363b4=[];var _0x1f1fc4=_(_0x5033d5)[_0xd2e4('0x7e')](function(_0x169627){if(_0x169627[_0xd2e4('0x79')]===0x1)return;return _0x169627[_0xd2e4('0x2b')]==='Agents'?_0xd2e4('0x21'):_0xd2e4('0x27');})[_0xd2e4('0x7f')]()[_0xd2e4('0x29')]();for(var _0x4df37d=0x0;_0x4df37d<_0x207da4[_0xd2e4('0x45')];_0x4df37d++){if(!_[_0xd2e4('0x2a')](_0x1f1fc4,_0x207da4[_0x4df37d][_0xd2e4('0x20')]))return;var _0x522c50=_0x207da4[_0x4df37d][_0xd2e4('0x20')]==='agent'?_0xd2e4('0x78'):_0xd2e4('0x26');_0x5363b4['push'](db[_0xd2e4('0x80')][_0xd2e4('0x76')]({'name':_0x207da4[_0x4df37d][_0xd2e4('0x2b')],'resourceId':_0x207da4[_0x4df37d]['id'],'type':_0x522c50,'sectionId':_[_0xd2e4('0x4c')](_0x5033d5,['name',_0x522c50])['id']},{}));}return Promise[_0xd2e4('0x48')](_0x5363b4);});})[_0xd2e4('0x1f')](respondWithResult(_0x3235eb,0xc9))[_0xd2e4('0x49')](handleError(_0x3235eb,null));};exports[_0xd2e4('0x81')]=function(_0x1cd8b9,_0x2a65bc){if(_0x1cd8b9[_0xd2e4('0x51')]['id']){delete _0x1cd8b9[_0xd2e4('0x51')]['id'];}return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x1cd8b9[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](function(_0x2a2131){if(!_0x2a2131)return null;if(_0x2a2131['id']===_0x1cd8b9['user']['id']){if(!_0x1cd8b9[_0xd2e4('0x51')][_0xd2e4('0x82')]||!_0x1cd8b9[_0xd2e4('0x51')][_0xd2e4('0x83')]){throw new db['Sequelize'][(_0xd2e4('0x84'))](_0xd2e4('0x85'));}if(!_0x2a2131[_0xd2e4('0x86')](_0x1cd8b9[_0xd2e4('0x51')][_0xd2e4('0x82')])){throw new db[(_0xd2e4('0x87'))][(_0xd2e4('0x84'))](_0xd2e4('0x88'));}if(_0x1cd8b9[_0xd2e4('0x51')]['oldPassword']===_0x1cd8b9[_0xd2e4('0x51')]['newPassword']){throw new db[(_0xd2e4('0x87'))][(_0xd2e4('0x84'))]('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x1cd8b9[_0xd2e4('0x70')][_0xd2e4('0x20')]===_0xd2e4('0x24')){if(!_0x1cd8b9[_0xd2e4('0x51')][_0xd2e4('0x83')]){throw new db[(_0xd2e4('0x87'))]['ValidationError'](_0xd2e4('0x89'));}}else if(_0x1cd8b9['user']['role']===_0xd2e4('0x70')){if(!_0x1cd8b9[_0xd2e4('0x51')][_0xd2e4('0x83')]){throw new db[(_0xd2e4('0x87'))][(_0xd2e4('0x84'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x2a2131[_0xd2e4('0x20')]!==_0xd2e4('0x21')){throw new db[(_0xd2e4('0x87'))][(_0xd2e4('0x84'))](_0xd2e4('0x71'));}}else{throw new db[(_0xd2e4('0x87'))]['ValidationError'](_0xd2e4('0x71'));}return _0x2a2131;})[_0xd2e4('0x1f')](handleEntityNotFound(_0x2a65bc,null))[_0xd2e4('0x1f')](function(_0xd398df){return db[_0xd2e4('0x8a')][_0xd2e4('0x8b')]({'attributes':['id',_0xd2e4('0x57'),_0xd2e4('0x8c'),'passwordHistoryLimit']})[_0xd2e4('0x1f')](function(_0x1615d5){if(_0x1615d5[_0xd2e4('0x57')])authService[_0xd2e4('0x58')](_0x1cd8b9['body']['newPassword']);if(!_0x1615d5[_0xd2e4('0x8c')]||!_0xd398df[_0xd2e4('0x8d')])return _0xd398df;authService[_0xd2e4('0x8e')](_0x1cd8b9['body']['newPassword'],_0xd398df[_0xd2e4('0x8d')],_0x1615d5[_0xd2e4('0x8f')]);return _0xd398df;})['then'](saveUpdates({'password':_0x1cd8b9['body']['newPassword'],'passwordResetAt':_0x1cd8b9[_0xd2e4('0x70')]['id']==_0x1cd8b9[_0xd2e4('0x4b')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x1cd8b9[_0xd2e4('0x51')]['newPassword'],_0xd398df[_0xd2e4('0x8d')])},null));})[_0xd2e4('0x1f')](respondWithResult(_0x2a65bc,null))[_0xd2e4('0x49')](handleError(_0x2a65bc,null));};exports['addQueues']=function(_0x42567f,_0x46a2e7){var _0xe59ff8=_0x42567f[_0xd2e4('0x51')]['channel'];return db['User']['find']({'where':{'id':_0x42567f[_0xd2e4('0x4b')]['id']},'attributes':['id',_0xd2e4('0x2b'),_0xd2e4('0x20'),_0xd2e4('0x90'),_0xd2e4('0x91'),'voicePause',_0xd2e4('0x92')]})['then'](handleEntityNotFound(_0x46a2e7,null))[_0xd2e4('0x1f')](function(_0x43af3d){if(_0x43af3d){if(!utils[_0xd2e4('0x93')](_0xe59ff8)){throw new db[(_0xd2e4('0x87'))][(_0xd2e4('0x84'))](_0xd2e4('0x94'));}return _0x43af3d[_0xd2e4('0x95')+_[_0xd2e4('0x96')](_0xe59ff8[_0xd2e4('0x97')]())+_0xd2e4('0x98')](_0x42567f[_0xd2e4('0x51')][_0xd2e4('0x54')],{'penalty':_0x42567f[_0xd2e4('0x51')][_0xd2e4('0x99')]||0x0})[_0xd2e4('0x9a')](function(_0x5d3439){for(var _0x14d09e=0x0;_0x14d09e<_0x42567f[_0xd2e4('0x51')][_0xd2e4('0x54')]['length'];_0x14d09e+=0x1){var _0x599703={'UserId':Number(_0x42567f[_0xd2e4('0x4b')]['id'])};_0x599703[_[_0xd2e4('0x96')](_0xe59ff8[_0xd2e4('0x97')]())+_0xd2e4('0x9b')]=Number(_0x42567f[_0xd2e4('0x51')]['ids'][_0x14d09e]);socket[_0xd2e4('0x9c')](_0xd2e4('0x70')+_[_0xd2e4('0x96')](_0xe59ff8[_0xd2e4('0x97')]())+_0xd2e4('0x9d'),_0x599703);}return _0x5d3439;})['then'](function(){if(_0xe59ff8==='voice'){return db['VoiceQueue'][_0xd2e4('0x42')]({'where':{'id':_0x42567f[_0xd2e4('0x51')][_0xd2e4('0x54')]||[]},'raw':!![],'attributes':['id',_0xd2e4('0x2b')]});}})[_0xd2e4('0x1f')](function(_0x513b01){var _0x89f73a=_0x43af3d['get']({'plain':!![]});var _0x4b2bd1=[];if(_0xe59ff8==='voice'&&_0x89f73a['role']==='agent'&&_0x89f73a[_0xd2e4('0x90')]){for(let _0x108bc8=0x0;_0x108bc8<_0x513b01['length'];_0x108bc8+=0x1){_0x4b2bd1[_0xd2e4('0x41')]({'membername':_0x89f73a[_0xd2e4('0x2b')],'UserId':_0x89f73a['id'],'queue_name':_0x513b01[_0x108bc8][_0xd2e4('0x2b')],'VoiceQueueId':_0x513b01[_0x108bc8]['id'],'interface':_[_0xd2e4('0x5a')](_0x89f73a[_0xd2e4('0x92')])?util[_0xd2e4('0x9e')](_0xd2e4('0x9f'),_0x89f73a[_0xd2e4('0x2b')]):_0x89f73a[_0xd2e4('0x92')],'paused':_0x89f73a[_0xd2e4('0xa0')]||![],'penalty':_0x42567f['body']['penalty']||0x0});}return Promise['all'](_0x4b2bd1['map'](function(_0x58e645){return db[_0xd2e4('0xa1')][_0xd2e4('0xa2')](_0x58e645);}));}return _0x43af3d;});}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x46a2e7,null))['catch'](handleError(_0x46a2e7,null));};exports[_0xd2e4('0xa3')]=function(_0x4f9e22,_0x1313f0){var _0x8e446c,_0x5bf654;return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x4f9e22[_0xd2e4('0x4b')]['id']},'attributes':['id',_0xd2e4('0x2b'),'role']})['then'](handleEntityNotFound(_0x1313f0,null))['then'](function(_0x5f3803){if(_0x5f3803){_0x8e446c=_0x5f3803;if(!_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0xa4')]||!utils['isValidChannel'](_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0xa4')])){throw new db[(_0xd2e4('0x87'))][(_0xd2e4('0x84'))](_0xd2e4('0x94'));}return _0x5f3803['remove'+_[_0xd2e4('0x96')](_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0xa4')][_0xd2e4('0x97')]())+_0xd2e4('0x98')](_0x4f9e22['query'][_0xd2e4('0x54')]);}})['then'](function(_0x145313){if(_['isArray'](_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0x54')])){for(var _0x257681=0x0;_0x257681<_0x4f9e22[_0xd2e4('0x3a')]['ids'][_0xd2e4('0x45')];_0x257681+=0x1){_0x5bf654={'UserId':Number(_0x4f9e22[_0xd2e4('0x4b')]['id'])};_0x5bf654[_[_0xd2e4('0x96')](_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0xa4')]['toLowerCase']())+'QueueId']=Number(_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0x54')][_0x257681]);socket[_0xd2e4('0x9c')]('user'+_[_0xd2e4('0x96')](_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0xa4')]['toLowerCase']())+_0xd2e4('0xa5'),_0x5bf654);}}else{_0x5bf654={'UserId':Number(_0x4f9e22[_0xd2e4('0x4b')]['id'])};_0x5bf654[_['capitalize'](_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0xa4')][_0xd2e4('0x97')]())+'QueueId']=Number(_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0x54')]);socket['emit'](_0xd2e4('0x70')+_['capitalize'](_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0xa4')][_0xd2e4('0x97')]())+_0xd2e4('0xa5'),_0x5bf654);}return _0x145313;})['then'](function(){if(_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0xa4')]===_0xd2e4('0xa6')){return db[_0xd2e4('0xa1')]['destroy']({'where':{'UserId':_0x4f9e22[_0xd2e4('0x4b')]['id'],'VoiceQueueId':_0x4f9e22[_0xd2e4('0x3a')][_0xd2e4('0x54')]},'individualHooks':!![]})[_0xd2e4('0x1f')](function(){return _0x8e446c;});}return _0x8e446c;})[_0xd2e4('0x1f')](respondWithStatusCode(_0x1313f0,null))[_0xd2e4('0x49')](handleError(_0x1313f0,null));};exports[_0xd2e4('0xa7')]=function(_0x5c1161,_0x2ae623){_0x5c1161['body']['userpic']=_0x5c1161['file'][_0xd2e4('0xa8')];return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x5c1161[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x2ae623,null))[_0xd2e4('0x1f')](saveUpdates(_0x5c1161[_0xd2e4('0x51')],null))[_0xd2e4('0x1f')](respondWithResult(_0x2ae623,null))[_0xd2e4('0x49')](handleError(_0x2ae623,null));};exports['getAvatar']=function(_0x26feb0,_0x2e0082){var _0x286f9b=path[_0xd2e4('0xa9')](config[_0xd2e4('0xaa')],_0xd2e4('0xab'));return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x26feb0[_0xd2e4('0x4b')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0xd2e4('0x1f')](handleEntityNotFound(_0x2e0082,null))[_0xd2e4('0x1f')](function(_0x226adb){if(_0x226adb){if(_['isNil'](_0x226adb[_0xd2e4('0xac')])){return _0x2e0082[_0xd2e4('0xad')](_0x286f9b);}else{if(!fs[_0xd2e4('0xae')](path[_0xd2e4('0xa9')](config['root'],_0xd2e4('0xaf'),_0x226adb[_0xd2e4('0xac')]))){return _0x2e0082[_0xd2e4('0xad')](_0x286f9b);}return _0x2e0082[_0xd2e4('0xad')](path[_0xd2e4('0xa9')](config['root'],_0xd2e4('0xaf'),_0x226adb['userpic']));}}})[_0xd2e4('0x49')](handleError(_0x2e0082,null));};exports['getOpenTabs']=function(_0x4625e5,_0x479c6f){return db[_0xd2e4('0x2e')]['find']({'where':{'id':_0x4625e5[_0xd2e4('0x4b')]['id']},'attributes':['id']})[_0xd2e4('0x1f')](handleEntityNotFound(_0x479c6f,null))[_0xd2e4('0x1f')](function(_0x13140e){var _0x2c45ba=[];values=_0x13140e[_0xd2e4('0x46')];_0x2c45ba[_0xd2e4('0x41')](get_open_tabs('chat',_0x13140e[_0xd2e4('0x46')]));_0x2c45ba[_0xd2e4('0x41')](get_open_tabs(_0xd2e4('0x4e'),_0x13140e[_0xd2e4('0x46')]));_0x2c45ba['push'](get_open_tabs('openchannel',_0x13140e[_0xd2e4('0x46')]));_0x2c45ba['push'](get_open_tabs(_0xd2e4('0xb0'),_0x13140e['dataValues']));_0x2c45ba[_0xd2e4('0x41')](get_open_tabs('fax',_0x13140e[_0xd2e4('0x46')]));_0x2c45ba[_0xd2e4('0x41')](get_open_tabs(_0xd2e4('0x47'),_0x13140e[_0xd2e4('0x46')]));return Promise[_0xd2e4('0x48')](_0x2c45ba);})[_0xd2e4('0x1f')](function(_0x36bffe){if(_0x36bffe){var _0x4fa9bf=_[_0xd2e4('0x7e')](values[_0xd2e4('0xb1')],function(_0x4d89c8){return{'channel':_0xd2e4('0xb2'),'id':_0x4d89c8['id'],'createdAt':_0x4d89c8[_0xd2e4('0xb3')]};});var _0x3239e0=_[_0xd2e4('0x7e')](values[_0xd2e4('0xb4')],function(_0x2c0511){return{'channel':'FAX','id':_0x2c0511['id'],'createdAt':_0x2c0511[_0xd2e4('0xb3')]};});var _0x3b6f5e=_['map'](values[_0xd2e4('0xb5')],function(_0x500cd7){return{'channel':_0xd2e4('0xb6'),'id':_0x500cd7['id'],'createdAt':_0x500cd7[_0xd2e4('0xb3')]};});var _0x1dcd16=_[_0xd2e4('0x7e')](values[_0xd2e4('0xb7')],function(_0x352d1b){return{'channel':_0xd2e4('0xb8'),'id':_0x352d1b['id'],'createdAt':_0x352d1b[_0xd2e4('0xb3')]};});var _0x2e7112=_[_0xd2e4('0x7e')](values[_0xd2e4('0xb9')],function(_0x2130f6){return{'channel':_0xd2e4('0xba'),'id':_0x2130f6['id'],'createdAt':_0x2130f6[_0xd2e4('0xb3')]};});var _0x508d07=_['map'](values[_0xd2e4('0xbb')],function(_0x495f82){return{'channel':_0xd2e4('0xbc'),'id':_0x495f82['id'],'createdAt':_0x495f82['createdAt']};});var _0x2ab074=_[_0xd2e4('0xbd')](_0x4fa9bf,_0x3239e0,_0x3b6f5e,_0x1dcd16,_0x2e7112,_0x508d07);var _0x4b3175={'count':_0x2ab074[_0xd2e4('0x45')],'rows':_0x2ab074};return _0x4b3175;}else return null;})[_0xd2e4('0x1f')](respondWithResult(_0x479c6f,null))[_0xd2e4('0x49')](handleError(_0x479c6f,null));};exports[_0xd2e4('0xbe')]=function(_0x1298cd,_0x5e9304){var _0x1219be={};return db[_0xd2e4('0x2e')]['findOne']({'where':{'id':_0x1298cd[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](function(_0x53211c){if(!_0x53211c){throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x1298cd['params']['id']));}return contacts['describe']();})[_0xd2e4('0x1f')](function(_0x363e0d){_0x1298cd[_0xd2e4('0x3a')]['User']=_0x1298cd[_0xd2e4('0x4b')]['id'];_0x1219be=qs[_0xd2e4('0x38')](_0x363e0d,_0x1298cd);if(_0x1298cd[_0xd2e4('0x3a')][_0xd2e4('0xbf')](_0xd2e4('0x3b'))){_0x1219be['include']=[{'model':db[_0xd2e4('0xc0')],'as':_0xd2e4('0xc1'),'required':![]},{'model':db[_0xd2e4('0xc2')],'as':'Tags','attributes':['id','name',_0xd2e4('0xc3')],'where':_0x1298cd[_0xd2e4('0x3a')]['tag']?{'id':_0x1298cd[_0xd2e4('0x3a')][_0xd2e4('0xc4')]}:undefined,'required':_0x1298cd[_0xd2e4('0x3a')][_0xd2e4('0xc4')]?!![]:![]}];}return contacts['findAll'](_0x1298cd['query'],_0x1298cd['user'],_0x1219be,_0x363e0d);})[_0xd2e4('0x1f')](respondWithFilteredResult(_0x5e9304,_0x1219be))[_0xd2e4('0x49')](APIHandleError(_0x5e9304));};exports[_0xd2e4('0xc5')]=function(_0x58c1e6,_0x65770d){var _0x222c9f;var _0x42d013={};var _0x2efc4c;return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x58c1e6[_0xd2e4('0x4b')]['id']},'attributes':['id',_0xd2e4('0x2b'),'role']})[_0xd2e4('0x1f')](handleEntityNotFound(_0x65770d,null))['then'](function(_0x854400){if(!utils[_0xd2e4('0x93')](_0x58c1e6[_0xd2e4('0x3a')]['channel'])){throw new db['Sequelize']['ValidationError'](_0xd2e4('0x94'));}_0x222c9f=_0x854400;var _0x4942ee={};_0x4942ee['model']=_['keys'](db[_['capitalize'](_0x58c1e6['query'][_0xd2e4('0xa4')])+_0xd2e4('0xc6')][_0xd2e4('0x2f')]);_0x4942ee[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x58c1e6[_0xd2e4('0x3a')]);_0x4942ee[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x4942ee['model'],_0x4942ee[_0xd2e4('0x3a')]);_0x42d013[_0xd2e4('0x40')]=_['intersection'](_0x4942ee[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x58c1e6['query'][_0xd2e4('0xcb')]));_0x42d013[_0xd2e4('0x40')]=_0x42d013[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x42d013[_0xd2e4('0x40')]:_0x4942ee[_0xd2e4('0xca')];_0x42d013[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x58c1e6[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x42d013[_0xd2e4('0x39')]=qs['filters'](_[_0xd2e4('0xce')](_0x58c1e6[_0xd2e4('0x3a')],_0x4942ee[_0xd2e4('0xc8')]));if(_0x58c1e6[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x42d013[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x42d013[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x42d013[_0xd2e4('0x40')],function(_0x43a64c){var _0xf130b4={};_0xf130b4[_0x43a64c]={'$like':'%'+_0x58c1e6['query'][_0xd2e4('0x28')]+'%'};return _0xf130b4;})});}_0x42d013=_[_0xd2e4('0xcf')]({},_0x42d013,_0x58c1e6[_0xd2e4('0xd0')]);switch(_0x222c9f[_0xd2e4('0x20')]){case _0xd2e4('0x24'):return db[_['capitalize'](_0x58c1e6[_0xd2e4('0x3a')][_0xd2e4('0xa4')])+_0xd2e4('0xc6')][_0xd2e4('0x42')](_0x42d013);case _0xd2e4('0x70'):case _0xd2e4('0x21'):return _0x222c9f[_0xd2e4('0x23')+_[_0xd2e4('0x96')](_0x58c1e6[_0xd2e4('0x3a')][_0xd2e4('0xa4')])+_0xd2e4('0x98')](_0x42d013);default:throw new db[(_0xd2e4('0x87'))]['ValidationError']('Unknown\x20role');}})[_0xd2e4('0x1f')](function(_0x45a3c9){_0x2efc4c=_0x45a3c9[_0xd2e4('0x45')];if(!_0x58c1e6[_0xd2e4('0x3a')]['hasOwnProperty']('nolimit')){_0x42d013[_0xd2e4('0x19')]=qs['limit'](_0x58c1e6['query'][_0xd2e4('0x19')]);_0x42d013[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x58c1e6[_0xd2e4('0x3a')]['offset']);}switch(_0x222c9f[_0xd2e4('0x20')]){case'admin':return db[_['capitalize'](_0x58c1e6[_0xd2e4('0x3a')]['channel'])+_0xd2e4('0xc6')]['findAll'](_0x42d013);case _0xd2e4('0x70'):case _0xd2e4('0x21'):return _0x222c9f[_0xd2e4('0x23')+_[_0xd2e4('0x96')](_0x58c1e6['query'][_0xd2e4('0xa4')])+_0xd2e4('0x98')](_0x42d013);}})['then'](function(_0x497b2d){return{'count':_0x2efc4c,'rows':_0x497b2d};})[_0xd2e4('0x1f')](respondWithResult(_0x65770d,null))[_0xd2e4('0x49')](handleError(_0x65770d,null));};exports['getVoiceQueuesRt']=function(_0x57ebdf,_0x56641e){var _0x5b5eae={};var _0xa0fc25={};var _0x43010f;var _0x4e62e1;return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x57ebdf[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x56641e,null))['then'](function(_0x516eb9){if(_0x516eb9){_0x43010f=_0x516eb9;_0xa0fc25[_0xd2e4('0xca')]=_['keys'](db[_0xd2e4('0xa1')][_0xd2e4('0x2f')]);_0xa0fc25[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x57ebdf[_0xd2e4('0x3a')]);_0xa0fc25[_0xd2e4('0xc8')]=_['intersection'](_0xa0fc25['model'],_0xa0fc25[_0xd2e4('0x3a')]);_0x5b5eae['attributes']=_[_0xd2e4('0xc9')](_0xa0fc25['model'],qs['fields'](_0x57ebdf[_0xd2e4('0x3a')]['fields']));_0x5b5eae[_0xd2e4('0x40')]=_0x5b5eae[_0xd2e4('0x40')]['length']?_0x5b5eae[_0xd2e4('0x40')]:_0xa0fc25[_0xd2e4('0xca')];_0x5b5eae[_0xd2e4('0xcc')]=qs['sort'](_0x57ebdf[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x5b5eae[_0xd2e4('0x39')]=qs['filters'](_[_0xd2e4('0xce')](_0x57ebdf[_0xd2e4('0x3a')],_0xa0fc25[_0xd2e4('0xc8')]));if(_0x57ebdf['query']['filter']){_0x5b5eae[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x5b5eae[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x5b5eae[_0xd2e4('0x40')],function(_0x50b59a){var _0x1fd0f3={};_0x1fd0f3[_0x50b59a]={'$like':'%'+_0x57ebdf[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x1fd0f3;})});}_0x5b5eae=_['merge']({},_0x5b5eae,_0x57ebdf[_0xd2e4('0xd0')]);return _0x43010f[_0xd2e4('0xd1')](_0x5b5eae);}})[_0xd2e4('0x1f')](function(_0x3d98bf){if(_0x3d98bf){_0x4e62e1=_0x3d98bf[_0xd2e4('0x45')];if(!_0x57ebdf[_0xd2e4('0x3a')][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x5b5eae[_0xd2e4('0x19')]=qs[_0xd2e4('0x19')](_0x57ebdf['query']['limit']);_0x5b5eae[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x57ebdf[_0xd2e4('0x3a')]['offset']);}return _0x43010f[_0xd2e4('0xd1')](_0x5b5eae);}})['then'](function(_0x1ee656){if(_0x1ee656){return _0x1ee656?{'count':_0x4e62e1,'rows':_0x1ee656}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x56641e,null))[_0xd2e4('0x49')](handleError(_0x56641e,null));};exports[_0xd2e4('0xd3')]=function(_0x321941,_0x48b34f){var _0x2c1cf6={};var _0x5249bb={};var _0x4be0de;var _0xd5a5a3;return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x321941[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x48b34f,null))['then'](function(_0x52a9bf){if(_0x52a9bf){_0x4be0de=_0x52a9bf;_0x5249bb['model']=_[_0xd2e4('0xc7')](db[_0xd2e4('0xd4')][_0xd2e4('0x2f')]);_0x5249bb['query']=_['keys'](_0x321941['query']);_0x5249bb['filters']=_[_0xd2e4('0xc9')](_0x5249bb[_0xd2e4('0xca')],_0x5249bb[_0xd2e4('0x3a')]);_0x2c1cf6[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x5249bb['model'],qs[_0xd2e4('0xcb')](_0x321941[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x2c1cf6[_0xd2e4('0x40')]=_0x2c1cf6[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x2c1cf6[_0xd2e4('0x40')]:_0x5249bb[_0xd2e4('0xca')];_0x2c1cf6[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x321941[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x2c1cf6[_0xd2e4('0x39')]=qs['filters'](_[_0xd2e4('0xce')](_0x321941[_0xd2e4('0x3a')],_0x5249bb[_0xd2e4('0xc8')]));if(_0x321941[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x2c1cf6['where']=_[_0xd2e4('0xcf')](_0x2c1cf6[_0xd2e4('0x39')],{'$or':_['map'](_0x2c1cf6[_0xd2e4('0x40')],function(_0x1aec4a){var _0x92d80d={};_0x92d80d[_0x1aec4a]={'$like':'%'+_0x321941[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x92d80d;})});}_0x2c1cf6=_[_0xd2e4('0xcf')]({},_0x2c1cf6,_0x321941['options']);return _0x4be0de['getGroups'](_0x2c1cf6);}})['then'](function(_0x593d4e){if(_0x593d4e){_0xd5a5a3=_0x593d4e['length'];if(!_0x321941[_0xd2e4('0x3a')][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x2c1cf6['limit']=qs[_0xd2e4('0x19')](_0x321941[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x2c1cf6[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x321941[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x4be0de[_0xd2e4('0xd3')](_0x2c1cf6);}})[_0xd2e4('0x1f')](function(_0x113368){if(_0x113368){return _0x113368?{'count':_0xd5a5a3,'rows':_0x113368}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x48b34f,null))[_0xd2e4('0x49')](handleError(_0x48b34f,null));};exports[_0xd2e4('0xd5')]=function(_0x49245d,_0x14081e){var _0xfb71d2={'raw':!![],'where':{}};var _0x30790b={};var _0x111af3={'count':0x0,'rows':[]};return db['User'][_0xd2e4('0x8b')]({'where':{'id':_0x49245d['params']['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x14081e,null))[_0xd2e4('0x1f')](function(_0x24e69b){if(_0x24e69b){_0x30790b[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db['VoiceRecording'][_0xd2e4('0x2f')]);_0x30790b[_0xd2e4('0x3a')]=_['keys'](_0x49245d['query']);_0x30790b[_0xd2e4('0xc8')]=_['intersection'](_0x30790b['model'],_0x30790b[_0xd2e4('0x3a')]);_0xfb71d2[_0xd2e4('0x40')]=_['intersection'](_0x30790b[_0xd2e4('0xca')],qs['fields'](_0x49245d['query'][_0xd2e4('0xcb')]));_0xfb71d2[_0xd2e4('0x40')]=_0xfb71d2['attributes'][_0xd2e4('0x45')]?_0xfb71d2[_0xd2e4('0x40')]:_0x30790b['model'];if(!_0x49245d[_0xd2e4('0x3a')][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0xfb71d2[_0xd2e4('0x19')]=qs['limit'](_0x49245d[_0xd2e4('0x3a')]['limit']);_0xfb71d2[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x49245d['query'][_0xd2e4('0x1b')]);}_0xfb71d2[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x49245d['query'][_0xd2e4('0xcd')]);_0xfb71d2['where']=qs[_0xd2e4('0xc8')](_['pick'](_0x49245d[_0xd2e4('0x3a')],_0x30790b['filters']));_0xfb71d2[_0xd2e4('0x39')]['UserId']=_0x24e69b['id'];if(_0x49245d[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0xfb71d2[_0xd2e4('0x39')]=_['merge'](_0xfb71d2['where'],{'$or':_['map'](_0xfb71d2['attributes'],function(_0x1f2e60){var _0x2507a8={};_0x2507a8[_0x1f2e60]={'$like':'%'+_0x49245d['query'][_0xd2e4('0x28')]+'%'};return _0x2507a8;})});}_0xfb71d2=_[_0xd2e4('0xcf')]({},_0xfb71d2,_0x49245d[_0xd2e4('0xd0')]);return db[_0xd2e4('0xd6')][_0xd2e4('0x1a')]({'where':_0xfb71d2[_0xd2e4('0x39')]})[_0xd2e4('0x1f')](function(_0x258bb6){_0x111af3['count']=_0x258bb6;if(_0x49245d[_0xd2e4('0x3a')][_0xd2e4('0x3b')]){_0xfb71d2[_0xd2e4('0x3c')]=[{'all':!![]}];}return db['VoiceRecording'][_0xd2e4('0x42')](_0xfb71d2);})[_0xd2e4('0x1f')](function(_0xe87e3b){_0x111af3['rows']=_0xe87e3b;return _0x111af3;});}})['then'](respondWithFilteredResult(_0x14081e,_0xfb71d2))[_0xd2e4('0x49')](handleError(_0x14081e,null));};exports[_0xd2e4('0xd7')]=function(_0x403c3b,_0xdb2d47){var _0x5b1109={'raw':!![],'where':{}};var _0x56df74={};var _0x24bf84={'count':0x0,'rows':[]};return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x403c3b[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0xdb2d47,null))[_0xd2e4('0x1f')](function(_0x4b64d5){if(_0x4b64d5){_0x56df74['model']=_[_0xd2e4('0xc7')](db['ScreenRecording'][_0xd2e4('0x2f')]);_0x56df74[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x403c3b[_0xd2e4('0x3a')]);_0x56df74[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x56df74[_0xd2e4('0xca')],_0x56df74[_0xd2e4('0x3a')]);_0x5b1109[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x56df74[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x403c3b[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x5b1109[_0xd2e4('0x40')]=_0x5b1109[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x5b1109[_0xd2e4('0x40')]:_0x56df74[_0xd2e4('0xca')];if(!_0x403c3b[_0xd2e4('0x3a')][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x5b1109[_0xd2e4('0x19')]=qs['limit'](_0x403c3b[_0xd2e4('0x3a')]['limit']);_0x5b1109[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x403c3b['query'][_0xd2e4('0x1b')]);}_0x5b1109['order']=qs['sort'](_0x403c3b[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x5b1109[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_['pick'](_0x403c3b['query'],_0x56df74[_0xd2e4('0xc8')]));_0x5b1109[_0xd2e4('0x39')][_0xd2e4('0xd8')]=_0x4b64d5['id'];if(_0x403c3b[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x5b1109[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x5b1109[_0xd2e4('0x39')],{'$or':_['map'](_0x5b1109[_0xd2e4('0x40')],function(_0x160f81){var _0x2d4698={};_0x2d4698[_0x160f81]={'$like':'%'+_0x403c3b[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x2d4698;})});}_0x5b1109=_[_0xd2e4('0xcf')]({},_0x5b1109,_0x403c3b[_0xd2e4('0xd0')]);return db[_0xd2e4('0xd9')][_0xd2e4('0x1a')]({'where':_0x5b1109[_0xd2e4('0x39')]})[_0xd2e4('0x1f')](function(_0x1c3780){_0x24bf84[_0xd2e4('0x1a')]=_0x1c3780;if(_0x403c3b[_0xd2e4('0x3a')][_0xd2e4('0x3b')]){_0x5b1109[_0xd2e4('0x3c')]=[{'all':!![]}];}return db[_0xd2e4('0xd9')][_0xd2e4('0x42')](_0x5b1109);})[_0xd2e4('0x1f')](function(_0x3783b6){_0x24bf84[_0xd2e4('0x43')]=_0x3783b6;return _0x24bf84;});}})['then'](respondWithFilteredResult(_0xdb2d47,_0x5b1109))[_0xd2e4('0x49')](handleError(_0xdb2d47,null));};exports['getChatInteractions']=function(_0xfb9885,_0x2fe59f){var _0x4e8ff0={};var _0x5a7fb1={};var _0x1ecda0;var _0x501dc0;return db[_0xd2e4('0x2e')]['findOne']({'where':{'id':_0xfb9885[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2fe59f,null))['then'](function(_0x2e76b5){if(_0x2e76b5){_0x1ecda0=_0x2e76b5;_0x5a7fb1['model']=_[_0xd2e4('0xc7')](db[_0xd2e4('0xda')]['rawAttributes']);_0x5a7fb1[_0xd2e4('0x3a')]=_['keys'](_0xfb9885[_0xd2e4('0x3a')]);_0x5a7fb1[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x5a7fb1[_0xd2e4('0xca')],_0x5a7fb1[_0xd2e4('0x3a')]);_0x4e8ff0[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x5a7fb1[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0xfb9885['query'][_0xd2e4('0xcb')]));_0x4e8ff0[_0xd2e4('0x40')]=_0x4e8ff0['attributes'][_0xd2e4('0x45')]?_0x4e8ff0[_0xd2e4('0x40')]:_0x5a7fb1[_0xd2e4('0xca')];_0x4e8ff0[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0xfb9885[_0xd2e4('0x3a')]['sort']);_0x4e8ff0[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_['pick'](_0xfb9885['query'],_0x5a7fb1[_0xd2e4('0xc8')]));if(_0xfb9885[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x4e8ff0[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x4e8ff0[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x4e8ff0['attributes'],function(_0x2face9){var _0x24414a={};_0x24414a[_0x2face9]={'$like':'%'+_0xfb9885['query']['filter']+'%'};return _0x24414a;})});}_0x4e8ff0=_[_0xd2e4('0xcf')]({},_0x4e8ff0,_0xfb9885[_0xd2e4('0xd0')]);return _0x1ecda0['getChatInteractions'](_0x4e8ff0);}})[_0xd2e4('0x1f')](function(_0x396792){if(_0x396792){_0x501dc0=_0x396792[_0xd2e4('0x45')];if(!_0xfb9885[_0xd2e4('0x3a')][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x4e8ff0[_0xd2e4('0x19')]=qs[_0xd2e4('0x19')](_0xfb9885[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x4e8ff0[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0xfb9885[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x1ecda0['getChatInteractions'](_0x4e8ff0);}})[_0xd2e4('0x1f')](function(_0x169364){if(_0x169364){return _0x169364?{'count':_0x501dc0,'rows':_0x169364}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x2fe59f,null))['catch'](handleError(_0x2fe59f,null));};exports[_0xd2e4('0xdb')]=function(_0x419700,_0x3109b6){var _0x3ccbc5={};var _0x3ae755={};var _0x33bd51;var _0x493b77;return db['User'][_0xd2e4('0x8b')]({'where':{'id':_0x419700[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3109b6,null))['then'](function(_0x7d87fa){if(_0x7d87fa){_0x33bd51=_0x7d87fa;_0x3ae755[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0xdc')][_0xd2e4('0x2f')]);_0x3ae755[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x419700[_0xd2e4('0x3a')]);_0x3ae755[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x3ae755['model'],_0x3ae755[_0xd2e4('0x3a')]);_0x3ccbc5['attributes']=_['intersection'](_0x3ae755[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x419700['query'][_0xd2e4('0xcb')]));_0x3ccbc5[_0xd2e4('0x40')]=_0x3ccbc5[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x3ccbc5[_0xd2e4('0x40')]:_0x3ae755[_0xd2e4('0xca')];_0x3ccbc5[_0xd2e4('0xcc')]=qs['sort'](_0x419700[_0xd2e4('0x3a')]['sort']);_0x3ccbc5[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_[_0xd2e4('0xce')](_0x419700[_0xd2e4('0x3a')],_0x3ae755['filters']));if(_0x419700[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x3ccbc5[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x3ccbc5[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x3ccbc5['attributes'],function(_0x38b054){var _0x201655={};_0x201655[_0x38b054]={'$like':'%'+_0x419700[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x201655;})});}_0x3ccbc5=_['merge']({},_0x3ccbc5,_0x419700[_0xd2e4('0xd0')]);return _0x33bd51['getOpenchannelInteractions'](_0x3ccbc5);}})[_0xd2e4('0x1f')](function(_0xa9f774){if(_0xa9f774){_0x493b77=_0xa9f774['length'];if(!_0x419700[_0xd2e4('0x3a')][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x3ccbc5[_0xd2e4('0x19')]=qs[_0xd2e4('0x19')](_0x419700[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x3ccbc5[_0xd2e4('0x1b')]=qs['offset'](_0x419700[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x33bd51[_0xd2e4('0xdb')](_0x3ccbc5);}})['then'](function(_0x414127){if(_0x414127){return _0x414127?{'count':_0x493b77,'rows':_0x414127}:null;}})['then'](respondWithResult(_0x3109b6,null))[_0xd2e4('0x49')](handleError(_0x3109b6,null));};exports[_0xd2e4('0xdd')]=function(_0x4b3603,_0x6d5953){var _0x4f796a={'raw':!![],'where':{}};var _0x364711={};var _0x35834a={'count':0x0,'rows':[]};return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x4b3603[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x6d5953,null))[_0xd2e4('0x1f')](function(_0x850987){if(_0x850987){_0x364711[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0xde')]['rawAttributes']);_0x364711['query']=_[_0xd2e4('0xc7')](_0x4b3603['query']);_0x364711[_0xd2e4('0xc8')]=_['intersection'](_0x364711['model'],_0x364711[_0xd2e4('0x3a')]);_0x4f796a[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x364711[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x4b3603[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x4f796a[_0xd2e4('0x40')]=_0x4f796a[_0xd2e4('0x40')]['length']?_0x4f796a[_0xd2e4('0x40')]:_0x364711[_0xd2e4('0xca')];if(!_0x4b3603[_0xd2e4('0x3a')]['hasOwnProperty']('nolimit')){_0x4f796a['limit']=qs[_0xd2e4('0x19')](_0x4b3603['query'][_0xd2e4('0x19')]);_0x4f796a[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x4b3603[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}_0x4f796a[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x4b3603['query']['sort']);_0x4f796a['where']=qs[_0xd2e4('0xc8')](_['pick'](_0x4b3603[_0xd2e4('0x3a')],_0x364711[_0xd2e4('0xc8')]));_0x4f796a[_0xd2e4('0x39')][_0xd2e4('0xd8')]=_0x850987['id'];if(_0x4b3603[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x4f796a[_0xd2e4('0x39')]=_['merge'](_0x4f796a[_0xd2e4('0x39')],{'$or':_['map'](_0x4f796a[_0xd2e4('0x40')],function(_0x419210){var _0x83a1c4={};_0x83a1c4[_0x419210]={'$like':'%'+_0x4b3603[_0xd2e4('0x3a')]['filter']+'%'};return _0x83a1c4;})});}_0x4f796a=_[_0xd2e4('0xcf')]({},_0x4f796a,_0x4b3603[_0xd2e4('0xd0')]);return db[_0xd2e4('0xde')][_0xd2e4('0x1a')]({'where':_0x4f796a[_0xd2e4('0x39')]})[_0xd2e4('0x1f')](function(_0x5c6fa6){_0x35834a[_0xd2e4('0x1a')]=_0x5c6fa6;if(_0x4b3603['query'][_0xd2e4('0x3b')]){_0x4f796a[_0xd2e4('0x3c')]=[{'all':!![]}];}return db[_0xd2e4('0xde')][_0xd2e4('0x42')](_0x4f796a);})['then'](function(_0x341ec8){_0x35834a[_0xd2e4('0x43')]=_0x341ec8;return _0x35834a;});}})['then'](respondWithFilteredResult(_0x6d5953,_0x4f796a))[_0xd2e4('0x49')](handleError(_0x6d5953,null));};exports[_0xd2e4('0xdf')]=function(_0x4fc561,_0x238226){var _0x3c73af={};var _0xb411ed={};var _0x434e64;var _0x4b039f;return db['User']['findOne']({'where':{'id':_0x4fc561[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x238226,null))[_0xd2e4('0x1f')](function(_0x1823a8){if(_0x1823a8){_0x434e64=_0x1823a8;_0xb411ed[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0xe0')][_0xd2e4('0x2f')]);_0xb411ed[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x4fc561[_0xd2e4('0x3a')]);_0xb411ed['filters']=_['intersection'](_0xb411ed['model'],_0xb411ed['query']);_0x3c73af[_0xd2e4('0x40')]=_['intersection'](_0xb411ed[_0xd2e4('0xca')],qs['fields'](_0x4fc561[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x3c73af[_0xd2e4('0x40')]=_0x3c73af[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x3c73af['attributes']:_0xb411ed[_0xd2e4('0xca')];_0x3c73af['order']=qs['sort'](_0x4fc561[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x3c73af[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_['pick'](_0x4fc561[_0xd2e4('0x3a')],_0xb411ed[_0xd2e4('0xc8')]));if(_0x4fc561['query']['filter']){_0x3c73af[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x3c73af['where'],{'$or':_[_0xd2e4('0x7e')](_0x3c73af['attributes'],function(_0x5bdcdf){var _0xb75ce1={};_0xb75ce1[_0x5bdcdf]={'$like':'%'+_0x4fc561[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0xb75ce1;})});}_0x3c73af=_[_0xd2e4('0xcf')]({},_0x3c73af,_0x4fc561[_0xd2e4('0xd0')]);return _0x434e64[_0xd2e4('0xdf')](_0x3c73af);}})[_0xd2e4('0x1f')](function(_0x23abbf){if(_0x23abbf){_0x4b039f=_0x23abbf[_0xd2e4('0x45')];if(!_0x4fc561['query'][_0xd2e4('0xbf')]('nolimit')){_0x3c73af[_0xd2e4('0x19')]=qs[_0xd2e4('0x19')](_0x4fc561[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x3c73af[_0xd2e4('0x1b')]=qs['offset'](_0x4fc561['query']['offset']);}return _0x434e64[_0xd2e4('0xdf')](_0x3c73af);}})[_0xd2e4('0x1f')](function(_0x94573d){if(_0x94573d){return _0x94573d?{'count':_0x4b039f,'rows':_0x94573d}:null;}})['then'](respondWithResult(_0x238226,null))[_0xd2e4('0x49')](handleError(_0x238226,null));};exports[_0xd2e4('0xe1')]=function(_0x1ac99e,_0x9ab45e){var _0x604c33={};var _0x363bf9={};var _0x4a5f28;var _0x163ccd;return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x1ac99e[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x9ab45e,null))[_0xd2e4('0x1f')](function(_0x115294){if(_0x115294){_0x4a5f28=_0x115294;_0x363bf9[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0xe2')][_0xd2e4('0x2f')]);_0x363bf9[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x1ac99e['query']);_0x363bf9['filters']=_[_0xd2e4('0xc9')](_0x363bf9[_0xd2e4('0xca')],_0x363bf9[_0xd2e4('0x3a')]);_0x604c33['attributes']=_[_0xd2e4('0xc9')](_0x363bf9[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x1ac99e[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x604c33[_0xd2e4('0x40')]=_0x604c33[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x604c33[_0xd2e4('0x40')]:_0x363bf9[_0xd2e4('0xca')];_0x604c33[_0xd2e4('0xcc')]=qs['sort'](_0x1ac99e['query'][_0xd2e4('0xcd')]);_0x604c33[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_[_0xd2e4('0xce')](_0x1ac99e[_0xd2e4('0x3a')],_0x363bf9[_0xd2e4('0xc8')]));if(_0x1ac99e[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x604c33[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x604c33[_0xd2e4('0x39')],{'$or':_['map'](_0x604c33[_0xd2e4('0x40')],function(_0x226876){var _0x2ad230={};_0x2ad230[_0x226876]={'$like':'%'+_0x1ac99e[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x2ad230;})});}_0x604c33=_[_0xd2e4('0xcf')]({},_0x604c33,_0x1ac99e[_0xd2e4('0xd0')]);return _0x4a5f28[_0xd2e4('0xe1')](_0x604c33);}})[_0xd2e4('0x1f')](function(_0x231197){if(_0x231197){_0x163ccd=_0x231197[_0xd2e4('0x45')];if(!_0x1ac99e[_0xd2e4('0x3a')]['hasOwnProperty'](_0xd2e4('0xd2'))){_0x604c33[_0xd2e4('0x19')]=qs['limit'](_0x1ac99e[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x604c33[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x1ac99e[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x4a5f28['getFaxInteractions'](_0x604c33);}})[_0xd2e4('0x1f')](function(_0x24fbfa){if(_0x24fbfa){return _0x24fbfa?{'count':_0x163ccd,'rows':_0x24fbfa}:null;}})['then'](respondWithResult(_0x9ab45e,null))[_0xd2e4('0x49')](handleError(_0x9ab45e,null));};exports[_0xd2e4('0xe3')]=function(_0x14ae07,_0xad285e){var _0x1bc1df={};var _0x9f7de1={};var _0x402702;var _0x5be7fd;return db[_0xd2e4('0x2e')]['findOne']({'where':{'id':_0x14ae07['params']['id']}})['then'](handleEntityNotFound(_0xad285e,null))['then'](function(_0x37e44a){if(_0x37e44a){_0x402702=_0x37e44a;_0x9f7de1['model']=_['keys'](db[_0xd2e4('0xe4')][_0xd2e4('0x2f')]);_0x9f7de1['query']=_[_0xd2e4('0xc7')](_0x14ae07[_0xd2e4('0x3a')]);_0x9f7de1[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x9f7de1[_0xd2e4('0xca')],_0x9f7de1[_0xd2e4('0x3a')]);_0x1bc1df[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x9f7de1['model'],qs['fields'](_0x14ae07[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x1bc1df['attributes']=_0x1bc1df[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x1bc1df[_0xd2e4('0x40')]:_0x9f7de1[_0xd2e4('0xca')];_0x1bc1df['order']=qs[_0xd2e4('0xcd')](_0x14ae07[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x1bc1df[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_['pick'](_0x14ae07[_0xd2e4('0x3a')],_0x9f7de1[_0xd2e4('0xc8')]));if(_0x14ae07['query'][_0xd2e4('0x28')]){_0x1bc1df[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x1bc1df[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x1bc1df[_0xd2e4('0x40')],function(_0x56b054){var _0x1d738a={};_0x1d738a[_0x56b054]={'$like':'%'+_0x14ae07['query']['filter']+'%'};return _0x1d738a;})});}_0x1bc1df=_[_0xd2e4('0xcf')]({},_0x1bc1df,_0x14ae07[_0xd2e4('0xd0')]);return _0x402702[_0xd2e4('0xe3')](_0x1bc1df);}})[_0xd2e4('0x1f')](function(_0x5d7535){if(_0x5d7535){_0x5be7fd=_0x5d7535[_0xd2e4('0x45')];if(!_0x14ae07[_0xd2e4('0x3a')][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x1bc1df['limit']=qs['limit'](_0x14ae07[_0xd2e4('0x3a')]['limit']);_0x1bc1df[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x14ae07[_0xd2e4('0x3a')]['offset']);}return _0x402702[_0xd2e4('0xe3')](_0x1bc1df);}})[_0xd2e4('0x1f')](function(_0x2da540){if(_0x2da540){return _0x2da540?{'count':_0x5be7fd,'rows':_0x2da540}:null;}})['then'](respondWithResult(_0xad285e,null))[_0xd2e4('0x49')](handleError(_0xad285e,null));};exports[_0xd2e4('0xe5')]=function(_0x3bde58,_0x1251a3,_0x1ca85f){var _0x5e1e01;var _0x33d6e6;var _0x20ccfd;var _0x3efb66=!_['isNil'](_0x3bde58[_0xd2e4('0x4b')]['id'])?_0x3bde58['params']['id']:!_[_0xd2e4('0x5a')](_0x3bde58[_0xd2e4('0x70')]['id'])?_0x3bde58[_0xd2e4('0x70')]['id']:null;return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x3efb66,'role':{'$or':[_0xd2e4('0x24'),'user',_0xd2e4('0x21')]}},'attributes':['id',_0xd2e4('0x2b'),'phone',_0xd2e4('0xe6'),_0xd2e4('0x20'),'internal',_0xd2e4('0x91')]})[_0xd2e4('0x1f')](function(_0x5a1454){if(_0x5a1454){if(_0x5a1454[_0xd2e4('0x20')]===_0xd2e4('0x21')){_0x5e1e01=_0x5a1454;if(_0x3bde58[_0xd2e4('0x51')][_0xd2e4('0x92')]){_0x20ccfd=util['format'](_0xd2e4('0xe7'),_0x5e1e01[_0x3bde58['body']['interface']]);}else if(_0x3bde58[_0xd2e4('0x51')]['intrf']){_0x20ccfd=util[_0xd2e4('0x9e')](_0xd2e4('0x9f'),_0x3bde58[_0xd2e4('0x51')][_0xd2e4('0xe8')]);}else{_0x20ccfd=util[_0xd2e4('0x9e')](_0xd2e4('0x9f'),_0x5e1e01[_0xd2e4('0x2b')]);}socket['to'](util[_0xd2e4('0x9e')]('user:%s',_0x5e1e01[_0xd2e4('0x2b')]))['emit'](_0xd2e4('0xe9'),{'user':{'id':_0x5e1e01['id'],'name':_0x5e1e01[_0xd2e4('0x2b')]},'ip':_0x3bde58[_0xd2e4('0xea')][_0xd2e4('0xeb')]||_0x3bde58[_0xd2e4('0xec')][_0xd2e4('0xed')]||_0x3bde58[_0xd2e4('0xee')][_0xd2e4('0xed')]||_0x3bde58['connection'][_0xd2e4('0xee')]['remoteAddress']});return db[_0xd2e4('0xa1')][_0xd2e4('0x22')]({'where':{'membername':_0x5e1e01['name']},'individualHooks':!![]});}}else{throw new db[(_0xd2e4('0x87'))][(_0xd2e4('0x84'))](_0xd2e4('0xef'));}})[_0xd2e4('0x1f')](function(){if(_0x5e1e01){return _0x5e1e01[_0xd2e4('0xf0')]({'raw':!![]});}})[_0xd2e4('0x1f')](function(_0x2be736){if(_0x5e1e01){if(_0x2be736){_0x33d6e6=_0x2be736;if(_0x33d6e6[_0xd2e4('0x45')]){var _0x2f74f6=_0x33d6e6[_0xd2e4('0x7e')](function(_0x3063dd){var _0x273197={'membername':_0x5e1e01[_0xd2e4('0x2b')],'UserId':_0x5e1e01['id'],'queue_name':_0x3063dd[_0xd2e4('0x2b')],'VoiceQueueId':_0x3063dd['id'],'interface':_0x20ccfd,'paused':_0x5e1e01[_0xd2e4('0x91')]||![],'penalty':_0x3063dd[_0xd2e4('0xf1')]||0x0};return db[_0xd2e4('0xa1')][_0xd2e4('0xa2')](_0x273197);});return Promise['all'](_0x2f74f6);}}}})[_0xd2e4('0x1f')](function(){if(_0x5e1e01){return db[_0xd2e4('0xf2')]['findAll']({'where':{'membername':_0x5e1e01[_0xd2e4('0x2b')],'exitAt':null}});}})[_0xd2e4('0x1f')](function(_0x141c8e){if(_0x5e1e01){var _0x4bc77d=[];_0x141c8e[_0xd2e4('0xf3')](function(_0x395dbc){_0x4bc77d['push'](_0x395dbc[_0xd2e4('0x1e')]({'exitAt':moment()[_0xd2e4('0x9e')](_0xd2e4('0xf4'))}));});return Promise[_0xd2e4('0x48')](_0x4bc77d);}})[_0xd2e4('0x1f')](function(){if(_0x5e1e01){var _0x5c5247=[];var _0xd5e94d=[];var _0x9c1f88=utils[_0xd2e4('0xf5')]();var _0x132205={'membername':_0x5e1e01[_0xd2e4('0x2b')],'interface':_0x20ccfd,'enterAt':moment()[_0xd2e4('0x9e')](_0xd2e4('0xf4')),'role':_0x5e1e01[_0xd2e4('0x20')],'internal':_0x5e1e01['internal']};_0x9c1f88[_0xd2e4('0xf3')](function(_0x30dc39){_0x5c5247['push'](_['merge']({'channel':_0x30dc39,'type':_0xd2e4('0xf6'),'data1':_0x3bde58[_0xd2e4('0x51')][_0xd2e4('0xf7')],'data2':_0x20ccfd},_0x132205));if(_0x5e1e01['loginInPause']){_0xd5e94d[_0xd2e4('0x41')](_['merge']({'channel':_0x30dc39,'type':'PAUSE','data1':_0xd2e4('0xf8')},_0x132205));}});return db[_0xd2e4('0xf2')]['bulkCreate'](_0x5c5247['concat'](_0xd5e94d),{'individualHooks':!![]});}})[_0xd2e4('0x1f')](function(){if(_0x5e1e01){return _0x5e1e01['update']({'online':!![],'lastLoginAt':moment()['format'](_0xd2e4('0xf4')),'voicePause':_0x5e1e01[_0xd2e4('0x91')]||![],'mailPause':_0x5e1e01[_0xd2e4('0x91')]||![],'chatPause':_0x5e1e01[_0xd2e4('0x91')]||![],'faxPause':_0x5e1e01[_0xd2e4('0x91')]||![],'smsPause':_0x5e1e01[_0xd2e4('0x91')]||![],'openchannelPause':_0x5e1e01['loginInPause']||![],'whatsappPause':_0x5e1e01[_0xd2e4('0x91')]||![],'pauseType':_0x5e1e01[_0xd2e4('0x91')]?_0xd2e4('0xf8'):null,'interface':_0x20ccfd,'lastPauseAt':moment()[_0xd2e4('0x9e')](_0xd2e4('0xf4'))});}})[_0xd2e4('0x1f')](function(_0x331cad){if(_0x3bde58[_0xd2e4('0xf9')]){return _0x1ca85f();}else{return Promise[_0xd2e4('0xfa')](_0x331cad)[_0xd2e4('0x1f')](respondWithResult(_0x1251a3,null));}})[_0xd2e4('0x49')](handleError(_0x1251a3,null));};exports[_0xd2e4('0xfb')]=function(_0x28b09a,_0x580eb7){var _0x1fd3a9;return db['User'][_0xd2e4('0x4c')]({'where':{'id':_0x28b09a[_0xd2e4('0x4b')]['id'],'role':_0xd2e4('0x21')},'attributes':['id',_0xd2e4('0x2b'),_0xd2e4('0x20')]})[_0xd2e4('0x1f')](handleEntityNotFound(_0x580eb7,null))[_0xd2e4('0x1f')](function(_0x5b9eaf){if(_0x5b9eaf){_0x1fd3a9=_0x5b9eaf;return db['UserVoiceQueueRt'][_0xd2e4('0x22')]({'where':{'membername':_0x1fd3a9[_0xd2e4('0x2b')]},'individualHooks':!![]});}})[_0xd2e4('0x1f')](function(){return db[_0xd2e4('0xf2')][_0xd2e4('0x42')]({'where':{'membername':_0x1fd3a9[_0xd2e4('0x2b')],'exitAt':null}});})['then'](function(_0x28f7cd){var _0x53aef9=[];_0x28f7cd[_0xd2e4('0xf3')](function(_0x41a195){_0x53aef9['push'](_0x41a195[_0xd2e4('0x1e')]({'exitAt':moment()[_0xd2e4('0x9e')](_0xd2e4('0xf4'))}));});return Promise[_0xd2e4('0x48')](_0x53aef9);})[_0xd2e4('0x1f')](function(){return _0x1fd3a9[_0xd2e4('0x1e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xd2e4('0x1f')](respondWithResult(_0x580eb7,null))[_0xd2e4('0x49')](handleError(_0x580eb7,null));};exports[_0xd2e4('0xfc')]=function(_0x10404a,_0x290d92){var _0x1489ca;return db[_0xd2e4('0xa1')][_0xd2e4('0x1e')]({'paused':0x1},{'where':{'UserId':_0x10404a['params']['id']},'individualHooks':!![]})['then'](function(){return db['User']['find']({'where':{'id':_0x10404a['params']['id'],'role':'agent'},'attributes':['id',_0xd2e4('0x2b'),_0xd2e4('0x20'),'internal',_0xd2e4('0x92'),'online']});})[_0xd2e4('0x1f')](handleEntityNotFound(_0x290d92,null))[_0xd2e4('0x1f')](function(_0x4827a1){if(_0x4827a1){_0x1489ca=_0x4827a1;return db[_0xd2e4('0xf2')]['findAll']({'where':{'membername':_0x1489ca['name'],'type':_0xd2e4('0xfd'),'exitAt':null}});}})['then'](function(_0x169cd4){if(_0x169cd4[_0xd2e4('0x45')]){var _0x1a1340=moment()['format'](_0xd2e4('0xf4'));for(var _0x367b05=0x0,_0x2838eb=_0x169cd4[_0xd2e4('0x45')];_0x367b05<_0x2838eb;_0x367b05++){_0x169cd4[_0x367b05]['updateAttributes']({'exitAt':_0x1a1340});}}})['then'](function(){var _0x5e19ec=[];var _0x48a16c=utils[_0xd2e4('0xf5')]();_0x48a16c['forEach'](function(_0x5d5531){_0x5e19ec[_0xd2e4('0x41')]({'channel':_0x5d5531,'membername':_0x1489ca[_0xd2e4('0x2b')],'interface':_[_0xd2e4('0x5a')](_0x1489ca['interface'])?util[_0xd2e4('0x9e')](_0xd2e4('0x9f'),_0x1489ca[_0xd2e4('0x2b')]):_0x1489ca['interface'],'type':_0xd2e4('0xfd'),'enterAt':moment()[_0xd2e4('0x9e')](_0xd2e4('0xf4')),'data1':_0x10404a['body'][_0xd2e4('0x31')]||_0xd2e4('0xfe'),'role':_0x1489ca['role'],'internal':_0x1489ca[_0xd2e4('0x55')]});});return db[_0xd2e4('0xf2')][_0xd2e4('0x7b')](_0x5e19ec,{'individualHooks':!![]});})[_0xd2e4('0x1f')](function(){return _0x1489ca[_0xd2e4('0x1e')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x10404a[_0xd2e4('0x51')][_0xd2e4('0x31')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0xd2e4('0xf4'))});})[_0xd2e4('0x1f')](respondWithResult(_0x290d92,null))[_0xd2e4('0x49')](handleError(_0x290d92,null));};exports[_0xd2e4('0xff')]=function(_0x1676f9,_0x53b42b){if(_0x1676f9['body'][_0xd2e4('0xa4')]&&!utils['isValidChannel'](_0x1676f9[_0xd2e4('0x51')][_0xd2e4('0xa4')])){throw new APIBadRequestError(util[_0xd2e4('0x9e')](_0xd2e4('0x100'),_0x1676f9[_0xd2e4('0x51')][_0xd2e4('0xa4')]));}return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x1676f9['params']['id']},'attributes':['id',_0xd2e4('0x2b'),'role','internal',_0xd2e4('0x92'),'online',_0xd2e4('0xa0'),'mailPause',_0xd2e4('0x101'),_0xd2e4('0x102'),_0xd2e4('0x103'),_0xd2e4('0x104'),_0xd2e4('0x105'),_0xd2e4('0x106'),_0xd2e4('0x107')]})[_0xd2e4('0x1f')](function(_0x257327){if(!_0x257327){throw new APINotFoundError(util[_0xd2e4('0x9e')](_0xd2e4('0x108'),_0x1676f9[_0xd2e4('0x4b')]['id']));}return _0x257327[_0xd2e4('0xff')](_0x1676f9['body'][_0xd2e4('0xa4')]);})[_0xd2e4('0x1f')](respondWithResult(_0x53b42b,null))['catch'](APIHandleError(_0x53b42b));};exports['getTeams']=function(_0x23a236,_0x37dcc9){var _0x37874a={};var _0x4085b4={};var _0x4cc465;var _0x3803f5;return db[_0xd2e4('0x2e')]['findOne']({'where':{'id':_0x23a236['params']['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x37dcc9,null))[_0xd2e4('0x1f')](function(_0x214272){if(_0x214272){_0x4cc465=_0x214272;_0x4085b4['model']=_['keys'](db['Team'][_0xd2e4('0x2f')]);_0x4085b4['query']=_[_0xd2e4('0xc7')](_0x23a236['query']);_0x4085b4[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x4085b4[_0xd2e4('0xca')],_0x4085b4[_0xd2e4('0x3a')]);_0x37874a[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x4085b4[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x23a236[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x37874a[_0xd2e4('0x40')]=_0x37874a['attributes'][_0xd2e4('0x45')]?_0x37874a[_0xd2e4('0x40')]:_0x4085b4[_0xd2e4('0xca')];_0x37874a[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x23a236[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x37874a[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_[_0xd2e4('0xce')](_0x23a236[_0xd2e4('0x3a')],_0x4085b4['filters']));if(_0x23a236[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x37874a['where']=_[_0xd2e4('0xcf')](_0x37874a[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x37874a[_0xd2e4('0x40')],function(_0x2a9778){var _0x4d578c={};_0x4d578c[_0x2a9778]={'$like':'%'+_0x23a236[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x4d578c;})});}_0x37874a=_[_0xd2e4('0xcf')]({},_0x37874a,_0x23a236[_0xd2e4('0xd0')]);return _0x4cc465['getTeams'](_0x37874a);}})[_0xd2e4('0x1f')](function(_0x30d2e3){if(_0x30d2e3){_0x3803f5=_0x30d2e3[_0xd2e4('0x45')];if(!_0x23a236['query'][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x37874a[_0xd2e4('0x19')]=qs[_0xd2e4('0x19')](_0x23a236[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x37874a['offset']=qs[_0xd2e4('0x1b')](_0x23a236[_0xd2e4('0x3a')]['offset']);}return _0x4cc465['getTeams'](_0x37874a);}})[_0xd2e4('0x1f')](function(_0x58367a){if(_0x58367a){return _0x58367a?{'count':_0x3803f5,'rows':_0x58367a}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x37dcc9,null))['catch'](handleError(_0x37dcc9,null));};exports[_0xd2e4('0x109')]=function(_0x5481c9,_0x3e79af){var _0x439ac1=_0x5481c9[_0xd2e4('0x4b')]['id'];var _0x3879c1=_0x5481c9['body']?_0x5481c9[_0xd2e4('0x51')]['ids']:null;var _0x34e3d2=[];return Promise[_0xd2e4('0xfa')]()[_0xd2e4('0x1f')](function(){if(!_0x3879c1)throw new APIBadRequestError(_0xd2e4('0x10a'));})[_0xd2e4('0x1f')](function(){return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x439ac1}});})[_0xd2e4('0x1f')](function(_0x54129b){if(!_0x54129b)throw new APINotFoundError(util[_0xd2e4('0x9e')](_0xd2e4('0x108'),_0x5481c9[_0xd2e4('0x4b')]['id']));return db['sequelize']['transaction'](function(_0x417092){return _0x54129b[_0xd2e4('0x109')](_0x3879c1,{'transaction':_0x417092})[_0xd2e4('0x1f')](function(){return db[_0xd2e4('0x10b')][_0xd2e4('0x42')]({'where':{'id':{'$in':_0x3879c1}}});})['then'](function(_0x26cc06){var _0x117146=_[_0xd2e4('0x7e')](_0x26cc06,function(_0x5afef9){return _0x5afef9[_0xd2e4('0x10c')]();});return Promise[_0xd2e4('0x48')](_0x117146);})[_0xd2e4('0x1f')](function(_0x5d9e72){_0x34e3d2=_['flattenDeep'](_0x5d9e72);var _0x130968=_[_0xd2e4('0x7e')](_0x34e3d2,function(_0x33506c){return _0x33506c[_0xd2e4('0x10d')](_0x54129b['id'],{'transaction':_0x417092});});return Promise[_0xd2e4('0x48')](_0x130968);})['then'](function(){if(!_0x54129b['online'])return;var _0x58b7ff=_[_0xd2e4('0x28')](_0x34e3d2,function(_0x3012b7){return _0x3012b7[_0xd2e4('0x10e')](_0xd2e4('0xa4'))===_0xd2e4('0x10f');});var _0x427c7d=_['map'](_0x58b7ff,function(_0xc5d21b){return db[_0xd2e4('0xa1')][_0xd2e4('0xa2')]({'membername':_0x54129b[_0xd2e4('0x2b')],'UserId':_0x54129b['id'],'queue_name':_0xc5d21b['name'],'VoiceQueueId':_0xc5d21b['id'],'interface':_[_0xd2e4('0x5a')](_0x54129b[_0xd2e4('0x92')])?util['format'](_0xd2e4('0x9f'),_0x54129b[_0xd2e4('0x2b')]):_0x54129b[_0xd2e4('0x92')],'paused':_0x54129b[_0xd2e4('0xa0')]||![],'penalty':_0x54129b['penalty']},{'transaction':_0x417092});});return Promise[_0xd2e4('0x48')](_0x427c7d);})[_0xd2e4('0x1f')](function(){return db[_0xd2e4('0x110')][_0xd2e4('0x42')]({'where':{'teamId':{'$in':_0x3879c1}}});})[_0xd2e4('0x1f')](function(_0x8c99a2){var _0x1fb9e0=_[_0xd2e4('0x7e')](_0x8c99a2,function(_0x52f7ae){return db['UserVoicePrefix']['create']({'UserId':_0x54129b['id'],'VoicePrefixId':_0x52f7ae[_0xd2e4('0x111')]},{'transaction':_0x417092});});return Promise[_0xd2e4('0x48')](_0x1fb9e0);});});})['then'](function(){for(var _0x5751d8=0x0;_0x5751d8<_0x34e3d2[_0xd2e4('0x45')];_0x5751d8++){var _0x5e312e=_0x34e3d2[_0x5751d8][_0xd2e4('0x10e')](_0xd2e4('0xa4'));var _0x543e5e=_0x5e312e+_0xd2e4('0x9b');socket[_0xd2e4('0x9c')](_0xd2e4('0x70')+_0x5e312e+_0xd2e4('0x9d'),{'UserId':_0x439ac1,['queueField']:_0x34e3d2[_0x5751d8]['id']});}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x3e79af,null))[_0xd2e4('0x49')](APIHandleError(_0x3e79af));};exports[_0xd2e4('0x112')]=function(_0x39b40f,_0x3c650d){var _0x1c0ccf=_0x39b40f[_0xd2e4('0x4b')]['id'];var _0x103eff=null;if(_0x39b40f[_0xd2e4('0x3a')]['ids']){_0x103eff=_[_0xd2e4('0x113')](_0x39b40f[_0xd2e4('0x3a')][_0xd2e4('0x54')])?_0x39b40f[_0xd2e4('0x3a')][_0xd2e4('0x54')]:[_0x39b40f[_0xd2e4('0x3a')][_0xd2e4('0x54')]];}var _0x2551f4=[];return Promise[_0xd2e4('0xfa')]()[_0xd2e4('0x1f')](function(){if(!_0x103eff)throw new APIBadRequestError(_0xd2e4('0x114'));})['then'](function(){return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x1c0ccf}});})[_0xd2e4('0x1f')](function(_0x183cdb){if(!_0x183cdb)throw new APINotFoundError(util[_0xd2e4('0x9e')](_0xd2e4('0x108'),_0x39b40f[_0xd2e4('0x4b')]['id']));return db[_0xd2e4('0x5c')][_0xd2e4('0x115')](function(_0x255655){return _0x183cdb['removeTeams'](_0x103eff,{'transaction':_0x255655})[_0xd2e4('0x1f')](function(){return db[_0xd2e4('0x10b')][_0xd2e4('0x42')]({'where':{'id':{'$in':_0x103eff}}});})[_0xd2e4('0x1f')](function(_0x1b5d1a){var _0x5bd2d9=_[_0xd2e4('0x7e')](_0x1b5d1a,function(_0xa5f9b0){return _0xa5f9b0[_0xd2e4('0x10c')]();});return Promise[_0xd2e4('0x48')](_0x5bd2d9);})[_0xd2e4('0x1f')](function(_0x59b1e7){_0x2551f4=_[_0xd2e4('0x116')](_0x59b1e7);var _0x3b1d0f=_[_0xd2e4('0x7e')](_0x2551f4,function(_0x12a63b){return _0x12a63b[_0xd2e4('0x117')](_0x183cdb['id'],{'transaction':_0x255655});});return Promise['all'](_0x3b1d0f);})['then'](function(){if(!_0x183cdb['online'])return;var _0x1721d5=_['filter'](_0x2551f4,function(_0x32b0b4){return _0x32b0b4['getDataValue'](_0xd2e4('0xa4'))===_0xd2e4('0x10f');});var _0x165494=_[_0xd2e4('0x7e')](_0x1721d5,function(_0x72eaad){return db[_0xd2e4('0xa1')][_0xd2e4('0x22')]({'where':{'VoiceQueueId':_0x72eaad['id'],'UserId':_0x183cdb['id']},'transaction':_0x255655});});return Promise[_0xd2e4('0x48')](_0x165494);})['then'](function(){return db[_0xd2e4('0x110')][_0xd2e4('0x42')]({'where':{'teamId':{'$in':_0x103eff}}});})[_0xd2e4('0x1f')](function(_0xe6f9d8){var _0x28e503=_[_0xd2e4('0x7e')](_0xe6f9d8,function(_0x20d592){return db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x183cdb['id'],'VoicePrefixId':_0x20d592['VoicePrefixId']}},{'transaction':_0x255655});});return Promise['all'](_0x28e503);});});})[_0xd2e4('0x1f')](function(){for(var _0x3ee5cd=0x0;_0x3ee5cd<_0x2551f4['length'];_0x3ee5cd++){var _0x378bf3=_0x2551f4[_0x3ee5cd][_0xd2e4('0x10e')]('channel');var _0x8cf2d9=_0x378bf3+'QueueId';socket[_0xd2e4('0x9c')]('user'+_0x378bf3+_0xd2e4('0xa5'),{'UserId':_0x1c0ccf,['queueField']:_0x2551f4[_0x3ee5cd]['id']});}})['then'](respondWithStatusCode(_0x3c650d,null))[_0xd2e4('0x49')](APIHandleError(_0x3c650d));};exports[_0xd2e4('0x118')]=function(_0x201552,_0x234f08){var _0x25fedd={};var _0x62721b={};var _0x3a0eaf;var _0x497195;return db[_0xd2e4('0x2e')]['findOne']({'where':{'id':_0x201552['params']['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x234f08,null))['then'](function(_0x902fe2){if(_0x902fe2){_0x3a0eaf=_0x902fe2;_0x62721b[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db['CmList'][_0xd2e4('0x2f')]);_0x62721b['query']=_[_0xd2e4('0xc7')](_0x201552[_0xd2e4('0x3a')]);_0x62721b[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x62721b['model'],_0x62721b['query']);_0x25fedd[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x62721b[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x201552[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x25fedd[_0xd2e4('0x40')]=_0x25fedd[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x25fedd['attributes']:_0x62721b[_0xd2e4('0xca')];_0x25fedd[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x201552[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x25fedd[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_[_0xd2e4('0xce')](_0x201552['query'],_0x62721b['filters']));if(_0x201552['query']['filter']){_0x25fedd['where']=_[_0xd2e4('0xcf')](_0x25fedd['where'],{'$or':_[_0xd2e4('0x7e')](_0x25fedd[_0xd2e4('0x40')],function(_0x5c6391){var _0x42e154={};_0x42e154[_0x5c6391]={'$like':'%'+_0x201552[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x42e154;})});}_0x25fedd=_[_0xd2e4('0xcf')]({},_0x25fedd,_0x201552[_0xd2e4('0xd0')]);return _0x3a0eaf[_0xd2e4('0x118')](_0x25fedd);}})[_0xd2e4('0x1f')](function(_0xab8482){if(_0xab8482){_0x497195=_0xab8482[_0xd2e4('0x45')];if(!_0x201552['query']['hasOwnProperty']('nolimit')){_0x25fedd[_0xd2e4('0x19')]=qs['limit'](_0x201552[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x25fedd['offset']=qs[_0xd2e4('0x1b')](_0x201552[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x3a0eaf[_0xd2e4('0x118')](_0x25fedd);}})['then'](function(_0x108280){if(_0x108280){return _0x108280?{'count':_0x497195,'rows':_0x108280}:null;}})['then'](respondWithResult(_0x234f08,null))[_0xd2e4('0x49')](handleError(_0x234f08,null));};exports['getAgents']=function(_0x1d139d,_0x311bd6){var _0x4c5372={};var _0x4daf4f={};var _0x4ed832;return db['User'][_0xd2e4('0x8b')]({'where':{'id':_0x1d139d[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x311bd6,null))[_0xd2e4('0x1f')](function(_0x4b1649){if(_0x4b1649){_0x4ed832=_0x4b1649;_0x4daf4f[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0x2e')][_0xd2e4('0x2f')]);_0x4daf4f[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x1d139d[_0xd2e4('0x3a')]);_0x4daf4f[_0xd2e4('0xc8')]=_['intersection'](_0x4daf4f[_0xd2e4('0xca')],_0x4daf4f[_0xd2e4('0x3a')]);_0x4c5372[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x4daf4f[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x1d139d[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x4c5372['attributes']=_0x4c5372[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x4c5372['attributes']:_0x4daf4f['model'];_0x4c5372[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x1d139d[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x4c5372[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_['pick'](_0x1d139d[_0xd2e4('0x3a')],_0x4daf4f['filters']));if(_0x1d139d[_0xd2e4('0x3a')]['filter']){_0x4c5372[_0xd2e4('0x39')]=_['merge'](_0x4c5372[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x4c5372[_0xd2e4('0x40')],function(_0x2de294){var _0x7afde4={};_0x7afde4[_0x2de294]={'$like':'%'+_0x1d139d[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x7afde4;})});}_0x4c5372['model']=db['User'];_0x4c5372['as']=_0xd2e4('0x78');_0x4c5372=_[_0xd2e4('0xcf')]({},_0x4c5372,_0x1d139d['options']);return _0x4ed832['getVoiceQueues']({'include':[_0x4c5372]});}})[_0xd2e4('0x1f')](function(_0x1cae89){if(_0x1cae89){var _0x5386ec={},_0x2eae27=[];for(var _0x4300cb=0x0;_0x4300cb<_0x1cae89['length'];_0x4300cb+=0x1){for(var _0x36ca79=0x0,_0x5c3ff6;_0x36ca79<_0x1cae89[_0x4300cb][_0xd2e4('0x78')][_0xd2e4('0x45')];_0x36ca79+=0x1){_0x5c3ff6=_0x1cae89[_0x4300cb][_0xd2e4('0x78')][_0x36ca79][_0xd2e4('0x23')]({'plain':!![]});_0x5386ec[_0x5c3ff6['id']]=_0x5c3ff6;}}_0x5386ec=_[_0xd2e4('0x119')](_0x5386ec);for(var _0x3bfa50=qs[_0xd2e4('0x1b')](_0x1d139d['query'][_0xd2e4('0x1b')]);_0x3bfa50<_0x5386ec[_0xd2e4('0x45')]&&_0x2eae27[_0xd2e4('0x45')]<qs[_0xd2e4('0x19')](_0x1d139d[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x3bfa50+=0x1){if(_0x5386ec[_0x3bfa50]){_0x2eae27[_0xd2e4('0x41')](_0x5386ec[_0x3bfa50]);}}return{'count':_0x5386ec[_0xd2e4('0x45')],'rows':_0x2eae27};}})[_0xd2e4('0x1f')](respondWithResult(_0x311bd6,null))[_0xd2e4('0x49')](handleError(_0x311bd6,null));};exports['destroy']=function(_0x2f8a41,_0x31a845){if(_0x2f8a41[_0xd2e4('0x70')]['id']==_0x2f8a41[_0xd2e4('0x4b')]['id']){throw new APIForbiddenError(_0xd2e4('0x11a'));}return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x2f8a41[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](function(_0x5e4bca){if(!_0x5e4bca){throw new APINotFoundError(util[_0xd2e4('0x9e')](_0xd2e4('0x108'),_0x2f8a41[_0xd2e4('0x4b')]['id']));}return db[_0xd2e4('0x5c')][_0xd2e4('0x115')](function(_0x548705){return db[_0xd2e4('0x11b')][_0xd2e4('0x1e')]({'recallme':![]},{'where':{'UserId':_0x2f8a41['params']['id']},'transaction':_0x548705})[_0xd2e4('0x1f')](function(){return removeEntity(_0x31a845,_0x548705)(_0x5e4bca);});});})[_0xd2e4('0x49')](APIHandleError(_0x31a845));};exports[_0xd2e4('0x11c')]=function(_0x15d610,_0x56e2e9){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x15d610[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x56e2e9,null))[_0xd2e4('0x1f')](function(_0x33aa24){if(_0x33aa24){return _0x33aa24[_0xd2e4('0x11c')](_0x15d610[_0xd2e4('0x51')][_0xd2e4('0x54')],_[_0xd2e4('0x11d')](_0x15d610[_0xd2e4('0x51')],[_0xd2e4('0x54'),'id'])||{})['spread'](function(){for(var _0x329ea1=0x0;_0x329ea1<_0x15d610[_0xd2e4('0x51')][_0xd2e4('0x54')]['length'];_0x329ea1+=0x1){socket[_0xd2e4('0x9c')](_0xd2e4('0x11e'),{'ChatInteractionId':Number(_0x15d610[_0xd2e4('0x51')]['ids'][_0x329ea1]),'UserId':Number(_0x15d610['params']['id'])});}return _0x15d610['body'][_0xd2e4('0x54')];});}})['then'](respondWithResult(_0x56e2e9,null))[_0xd2e4('0x49')](handleError(_0x56e2e9,null));};exports[_0xd2e4('0x11f')]=function(_0x3b4d1d,_0x389f16){return db[_0xd2e4('0x2e')]['find']({'where':{'id':_0x3b4d1d[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x389f16,null))[_0xd2e4('0x1f')](function(_0x2655df){if(_0x2655df){return _0x2655df['removeChatInteractions'](_0x3b4d1d['query']['ids'])[_0xd2e4('0x1f')](function(){if(_[_0xd2e4('0x113')](_0x3b4d1d[_0xd2e4('0x3a')]['ids'])){for(var _0x2ac77e=0x0;_0x2ac77e<_0x3b4d1d[_0xd2e4('0x3a')][_0xd2e4('0x54')]['length'];_0x2ac77e+=0x1){socket[_0xd2e4('0x9c')](_0xd2e4('0x120'),{'ChatInteractionId':Number(_0x3b4d1d[_0xd2e4('0x3a')]['ids'][_0x2ac77e]),'UserId':Number(_0x3b4d1d[_0xd2e4('0x4b')]['id'])});}}else{socket[_0xd2e4('0x9c')](_0xd2e4('0x120'),{'ChatInteractionId':Number(_0x3b4d1d['query'][_0xd2e4('0x54')]),'UserId':Number(_0x3b4d1d[_0xd2e4('0x4b')]['id'])});}});}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x389f16,null))['catch'](handleError(_0x389f16,null));};exports[_0xd2e4('0x121')]=function(_0x1f38b5,_0x385957){return db['User'][_0xd2e4('0x4c')]({'where':{'id':_0x1f38b5[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x385957,null))['then'](function(_0x506e15){if(_0x506e15){return _0x506e15[_0xd2e4('0x121')](_0x1f38b5['body'][_0xd2e4('0x54')],_[_0xd2e4('0x11d')](_0x1f38b5['body'],['ids','id'])||{})[_0xd2e4('0x9a')](function(){for(var _0x30cba4=0x0;_0x30cba4<_0x1f38b5['body'][_0xd2e4('0x54')][_0xd2e4('0x45')];_0x30cba4+=0x1){socket[_0xd2e4('0x9c')](_0xd2e4('0x122'),{'MailInteractionId':Number(_0x1f38b5[_0xd2e4('0x51')][_0xd2e4('0x54')][_0x30cba4]),'UserId':Number(_0x1f38b5[_0xd2e4('0x4b')]['id'])});}return _0x1f38b5[_0xd2e4('0x51')]['ids'];});}})[_0xd2e4('0x1f')](respondWithResult(_0x385957,null))[_0xd2e4('0x49')](handleError(_0x385957,null));};exports[_0xd2e4('0x123')]=function(_0x3bdc41,_0x291462){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x3bdc41[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x291462,null))['then'](function(_0x2c506b){if(_0x2c506b){return _0x2c506b['removeMailInteractions'](_0x3bdc41[_0xd2e4('0x3a')][_0xd2e4('0x54')])[_0xd2e4('0x1f')](function(){if(_[_0xd2e4('0x113')](_0x3bdc41[_0xd2e4('0x3a')][_0xd2e4('0x54')])){for(var _0x591b66=0x0;_0x591b66<_0x3bdc41[_0xd2e4('0x3a')]['ids']['length'];_0x591b66+=0x1){socket[_0xd2e4('0x9c')](_0xd2e4('0x124'),{'MailInteractionId':Number(_0x3bdc41['query']['ids'][_0x591b66]),'UserId':Number(_0x3bdc41[_0xd2e4('0x4b')]['id'])});}}else{socket['emit'](_0xd2e4('0x124'),{'MailInteractionId':Number(_0x3bdc41[_0xd2e4('0x3a')][_0xd2e4('0x54')]),'UserId':Number(_0x3bdc41[_0xd2e4('0x4b')]['id'])});}});}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x291462,null))[_0xd2e4('0x49')](handleError(_0x291462,null));};exports[_0xd2e4('0x125')]=function(_0x5b6c0f,_0x502149){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x5b6c0f[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x502149,null))[_0xd2e4('0x1f')](function(_0x560f3d){if(_0x560f3d){return _0x560f3d[_0xd2e4('0x125')](_0x5b6c0f[_0xd2e4('0x51')][_0xd2e4('0x54')],_['omit'](_0x5b6c0f[_0xd2e4('0x51')],[_0xd2e4('0x54'),'id'])||{})['spread'](function(){for(var _0x5d3f37=0x0;_0x5d3f37<_0x5b6c0f[_0xd2e4('0x51')][_0xd2e4('0x54')]['length'];_0x5d3f37+=0x1){socket['emit'](_0xd2e4('0x126'),{'FaxInteractionId':Number(_0x5b6c0f[_0xd2e4('0x51')][_0xd2e4('0x54')][_0x5d3f37]),'UserId':Number(_0x5b6c0f['params']['id'])});}return _0x5b6c0f[_0xd2e4('0x51')]['ids'];});}})[_0xd2e4('0x1f')](respondWithResult(_0x502149,null))[_0xd2e4('0x49')](handleError(_0x502149,null));};exports[_0xd2e4('0x127')]=function(_0x286555,_0x291b4e){return db[_0xd2e4('0x2e')]['find']({'where':{'id':_0x286555[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x291b4e,null))['then'](function(_0x5b640c){if(_0x5b640c){return _0x5b640c[_0xd2e4('0x127')](_0x286555[_0xd2e4('0x3a')]['ids'])[_0xd2e4('0x1f')](function(){if(_['isArray'](_0x286555[_0xd2e4('0x3a')][_0xd2e4('0x54')])){for(var _0x51a7bb=0x0;_0x51a7bb<_0x286555[_0xd2e4('0x3a')][_0xd2e4('0x54')][_0xd2e4('0x45')];_0x51a7bb+=0x1){socket[_0xd2e4('0x9c')](_0xd2e4('0x128'),{'FaxInteractionId':Number(_0x286555[_0xd2e4('0x3a')]['ids'][_0x51a7bb]),'UserId':Number(_0x286555[_0xd2e4('0x4b')]['id'])});}}else{socket[_0xd2e4('0x9c')](_0xd2e4('0x128'),{'FaxInteractionId':Number(_0x286555[_0xd2e4('0x3a')][_0xd2e4('0x54')]),'UserId':Number(_0x286555['params']['id'])});}});}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x291b4e,null))[_0xd2e4('0x49')](handleError(_0x291b4e,null));};exports['addSmsInteractions']=function(_0x42b5ff,_0x541084){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x42b5ff[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x541084,null))['then'](function(_0x5cf65f){if(_0x5cf65f){return _0x5cf65f[_0xd2e4('0x129')](_0x42b5ff[_0xd2e4('0x51')][_0xd2e4('0x54')],_['omit'](_0x42b5ff[_0xd2e4('0x51')],[_0xd2e4('0x54'),'id'])||{})[_0xd2e4('0x9a')](function(){for(var _0x56bd56=0x0;_0x56bd56<_0x42b5ff[_0xd2e4('0x51')][_0xd2e4('0x54')][_0xd2e4('0x45')];_0x56bd56+=0x1){socket[_0xd2e4('0x9c')](_0xd2e4('0x12a'),{'SmsInteractionId':Number(_0x42b5ff[_0xd2e4('0x51')][_0xd2e4('0x54')][_0x56bd56]),'UserId':Number(_0x42b5ff[_0xd2e4('0x4b')]['id'])});}return _0x42b5ff[_0xd2e4('0x51')][_0xd2e4('0x54')];});}})[_0xd2e4('0x1f')](respondWithResult(_0x541084,null))['catch'](handleError(_0x541084,null));};exports['removeSmsInteractions']=function(_0x322b24,_0x4ff2c9){return db['User'][_0xd2e4('0x4c')]({'where':{'id':_0x322b24[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x4ff2c9,null))['then'](function(_0x4c98e7){if(_0x4c98e7){return _0x4c98e7[_0xd2e4('0x12b')](_0x322b24[_0xd2e4('0x3a')][_0xd2e4('0x54')])[_0xd2e4('0x1f')](function(){if(_[_0xd2e4('0x113')](_0x322b24[_0xd2e4('0x3a')][_0xd2e4('0x54')])){for(var _0x343795=0x0;_0x343795<_0x322b24[_0xd2e4('0x3a')][_0xd2e4('0x54')]['length'];_0x343795+=0x1){socket[_0xd2e4('0x9c')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x322b24[_0xd2e4('0x3a')][_0xd2e4('0x54')][_0x343795]),'UserId':Number(_0x322b24[_0xd2e4('0x4b')]['id'])});}}else{socket[_0xd2e4('0x9c')](_0xd2e4('0x12c'),{'SmsInteractionId':Number(_0x322b24[_0xd2e4('0x3a')][_0xd2e4('0x54')]),'UserId':Number(_0x322b24['params']['id'])});}});}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x4ff2c9,null))[_0xd2e4('0x49')](handleError(_0x4ff2c9,null));};exports[_0xd2e4('0x12d')]=function(_0x55c372,_0x5f0986){return db[_0xd2e4('0x2e')]['find']({'where':{'id':_0x55c372[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x5f0986,null))[_0xd2e4('0x1f')](function(_0x27eddc){if(_0x27eddc){return _0x27eddc[_0xd2e4('0x12d')](_0x55c372[_0xd2e4('0x51')]['ids'],_[_0xd2e4('0x11d')](_0x55c372[_0xd2e4('0x51')],[_0xd2e4('0x54'),'id'])||{})['spread'](function(){for(var _0x51394d=0x0;_0x51394d<_0x55c372[_0xd2e4('0x51')][_0xd2e4('0x54')][_0xd2e4('0x45')];_0x51394d+=0x1){socket['emit'](_0xd2e4('0x12e'),{'OpenchannelInteractionId':Number(_0x55c372[_0xd2e4('0x51')]['ids'][_0x51394d]),'UserId':Number(_0x55c372[_0xd2e4('0x4b')]['id'])});}return _0x55c372[_0xd2e4('0x51')][_0xd2e4('0x54')];});}})[_0xd2e4('0x1f')](respondWithResult(_0x5f0986,null))[_0xd2e4('0x49')](handleError(_0x5f0986,null));};exports[_0xd2e4('0x12f')]=function(_0x459e27,_0x44695a){return db['User'][_0xd2e4('0x4c')]({'where':{'id':_0x459e27['params']['id']}})['then'](handleEntityNotFound(_0x44695a,null))[_0xd2e4('0x1f')](function(_0x439ea2){if(_0x439ea2){return _0x439ea2[_0xd2e4('0x12f')](_0x459e27[_0xd2e4('0x3a')][_0xd2e4('0x54')])[_0xd2e4('0x1f')](function(){if(_['isArray'](_0x459e27[_0xd2e4('0x3a')][_0xd2e4('0x54')])){for(var _0x5b8896=0x0;_0x5b8896<_0x459e27[_0xd2e4('0x3a')][_0xd2e4('0x54')]['length'];_0x5b8896+=0x1){socket[_0xd2e4('0x9c')](_0xd2e4('0x130'),{'OpenchannelInteractionId':Number(_0x459e27[_0xd2e4('0x3a')]['ids'][_0x5b8896]),'UserId':Number(_0x459e27[_0xd2e4('0x4b')]['id'])});}}else{socket['emit'](_0xd2e4('0x130'),{'OpenchannelInteractionId':Number(_0x459e27['query'][_0xd2e4('0x54')]),'UserId':Number(_0x459e27[_0xd2e4('0x4b')]['id'])});}});}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x44695a,null))['catch'](handleError(_0x44695a,null));};exports[_0xd2e4('0x131')]=function(_0x7c7b2b,_0x56c00c){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x7c7b2b['params']['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x56c00c,null))[_0xd2e4('0x1f')](function(_0x341666){if(_0x341666){return _0x341666[_0xd2e4('0x131')](_0x7c7b2b['body']['ids'],_['omit'](_0x7c7b2b['body'],[_0xd2e4('0x54'),'id'])||{})[_0xd2e4('0x9a')](function(){for(var _0x512f16=0x0;_0x512f16<_0x7c7b2b['body']['ids'][_0xd2e4('0x45')];_0x512f16+=0x1){socket[_0xd2e4('0x9c')](_0xd2e4('0x132'),{'WhatsappInteractionId':Number(_0x7c7b2b[_0xd2e4('0x51')][_0xd2e4('0x54')][_0x512f16]),'UserId':Number(_0x7c7b2b[_0xd2e4('0x4b')]['id'])});}return _0x7c7b2b[_0xd2e4('0x51')][_0xd2e4('0x54')];});}})[_0xd2e4('0x1f')](respondWithResult(_0x56c00c,null))[_0xd2e4('0x49')](handleError(_0x56c00c,null));};exports[_0xd2e4('0x133')]=function(_0x511f4f,_0x412b98){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x511f4f[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x412b98,null))[_0xd2e4('0x1f')](function(_0x97281d){if(_0x97281d){return _0x97281d[_0xd2e4('0x133')](_0x511f4f['query']['ids']);}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x412b98,null))[_0xd2e4('0x49')](handleError(_0x412b98,null));};exports[_0xd2e4('0x134')]=function(_0x279c61,_0x2e61e6){var _0x54750f={};var _0x247158={};var _0x55da94;var _0x4e4191;return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x279c61[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2e61e6,null))[_0xd2e4('0x1f')](function(_0x13c2ca){if(_0x13c2ca){_0x55da94=_0x13c2ca;_0x247158[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0x135')]['rawAttributes']);_0x247158[_0xd2e4('0x3a')]=_['keys'](_0x279c61[_0xd2e4('0x3a')]);_0x247158['filters']=_[_0xd2e4('0xc9')](_0x247158[_0xd2e4('0xca')],_0x247158[_0xd2e4('0x3a')]);_0x54750f[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x247158[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x279c61['query']['fields']));_0x54750f[_0xd2e4('0x40')]=_0x54750f[_0xd2e4('0x40')]['length']?_0x54750f[_0xd2e4('0x40')]:_0x247158[_0xd2e4('0xca')];_0x54750f[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x279c61[_0xd2e4('0x3a')]['sort']);_0x54750f[_0xd2e4('0x39')]=qs['filters'](_[_0xd2e4('0xce')](_0x279c61['query'],_0x247158[_0xd2e4('0xc8')]));if(_0x279c61[_0xd2e4('0x3a')][_0xd2e4('0x28')]){_0x54750f[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x54750f[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x54750f[_0xd2e4('0x40')],function(_0x2882f1){var _0x5ca891={};_0x5ca891[_0x2882f1]={'$like':'%'+_0x279c61[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x5ca891;})});}_0x54750f=_[_0xd2e4('0xcf')]({},_0x54750f,_0x279c61[_0xd2e4('0xd0')]);return _0x55da94[_0xd2e4('0x134')](_0x54750f);}})[_0xd2e4('0x1f')](function(_0x97e0e8){if(_0x97e0e8){_0x4e4191=_0x97e0e8[_0xd2e4('0x45')];if(!_0x279c61['query']['hasOwnProperty'](_0xd2e4('0xd2'))){_0x54750f['limit']=qs[_0xd2e4('0x19')](_0x279c61['query'][_0xd2e4('0x19')]);_0x54750f[_0xd2e4('0x1b')]=qs['offset'](_0x279c61[_0xd2e4('0x3a')]['offset']);}return _0x55da94[_0xd2e4('0x134')](_0x54750f);}})[_0xd2e4('0x1f')](function(_0xc512dc){if(_0xc512dc){return _0xc512dc?{'count':_0x4e4191,'rows':_0xc512dc}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x2e61e6,null))['catch'](handleError(_0x2e61e6,null));};exports[_0xd2e4('0x136')]=function(_0x42b607,_0x532292){var _0x4d14ad={};var _0x42333b={};var _0x277156;var _0x5e134f;return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x42b607[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x532292,null))['then'](function(_0x4eea1d){if(_0x4eea1d){_0x277156=_0x4eea1d;_0x42333b[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0x137')][_0xd2e4('0x2f')]);_0x42333b[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x42b607[_0xd2e4('0x3a')]);_0x42333b[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x42333b[_0xd2e4('0xca')],_0x42333b[_0xd2e4('0x3a')]);_0x4d14ad[_0xd2e4('0x40')]=_['intersection'](_0x42333b[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x42b607['query'][_0xd2e4('0xcb')]));_0x4d14ad['attributes']=_0x4d14ad[_0xd2e4('0x40')]['length']?_0x4d14ad[_0xd2e4('0x40')]:_0x42333b[_0xd2e4('0xca')];_0x4d14ad[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x42b607['query'][_0xd2e4('0xcd')]);_0x4d14ad['where']=qs[_0xd2e4('0xc8')](_[_0xd2e4('0xce')](_0x42b607['query'],_0x42333b[_0xd2e4('0xc8')]));if(_0x42b607['query']['filter']){_0x4d14ad['where']=_[_0xd2e4('0xcf')](_0x4d14ad['where'],{'$or':_[_0xd2e4('0x7e')](_0x4d14ad[_0xd2e4('0x40')],function(_0x41c819){var _0x2ee7b2={};_0x2ee7b2[_0x41c819]={'$like':'%'+_0x42b607['query'][_0xd2e4('0x28')]+'%'};return _0x2ee7b2;})});}_0x4d14ad=_[_0xd2e4('0xcf')]({},_0x4d14ad,_0x42b607[_0xd2e4('0xd0')]);return _0x277156[_0xd2e4('0x136')](_0x4d14ad);}})['then'](function(_0x345ba4){if(_0x345ba4){_0x5e134f=_0x345ba4['length'];if(!_0x42b607[_0xd2e4('0x3a')][_0xd2e4('0xbf')]('nolimit')){_0x4d14ad[_0xd2e4('0x19')]=qs[_0xd2e4('0x19')](_0x42b607[_0xd2e4('0x3a')]['limit']);_0x4d14ad['offset']=qs[_0xd2e4('0x1b')](_0x42b607[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x277156[_0xd2e4('0x136')](_0x4d14ad);}})[_0xd2e4('0x1f')](function(_0x178fca){if(_0x178fca){return _0x178fca?{'count':_0x5e134f,'rows':_0x178fca}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x532292,null))[_0xd2e4('0x49')](handleError(_0x532292,null));};exports[_0xd2e4('0x138')]=function(_0x2de435,_0x3c3c2e){return db['User']['find']({'where':{'id':_0x2de435[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x3c3c2e,null))[_0xd2e4('0x1f')](function(_0x115091){if(_0x115091){return _0x115091[_0xd2e4('0x138')](_0x2de435[_0xd2e4('0x51')]['ids'],_['omit'](_0x2de435[_0xd2e4('0x51')],[_0xd2e4('0x54'),'id'])||{});}})['then'](respondWithResult(_0x3c3c2e,null))[_0xd2e4('0x49')](handleError(_0x3c3c2e,null));};exports[_0xd2e4('0x139')]=function(_0x3c8da4,_0x35f3ce){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x3c8da4[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x35f3ce,null))[_0xd2e4('0x1f')](function(_0x2f29ff){if(_0x2f29ff){return _0x2f29ff[_0xd2e4('0x139')](_0x3c8da4[_0xd2e4('0x3a')]['ids']);}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x35f3ce,null))[_0xd2e4('0x49')](handleError(_0x35f3ce,null));};exports[_0xd2e4('0x13a')]=function(_0x2ab934,_0x4dc6e7){var _0x3ee6f5={};var _0x407dc6={};var _0x393f9f;var _0x3a2b09;return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x2ab934['params']['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x4dc6e7,null))['then'](function(_0xb37830){if(_0xb37830){_0x393f9f=_0xb37830;_0x407dc6[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0x13b')][_0xd2e4('0x2f')]);_0x407dc6[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x2ab934['query']);_0x407dc6['filters']=_['intersection'](_0x407dc6[_0xd2e4('0xca')],_0x407dc6[_0xd2e4('0x3a')]);_0x3ee6f5['attributes']=_[_0xd2e4('0xc9')](_0x407dc6[_0xd2e4('0xca')],qs['fields'](_0x2ab934[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x3ee6f5[_0xd2e4('0x40')]=_0x3ee6f5['attributes']['length']?_0x3ee6f5[_0xd2e4('0x40')]:_0x407dc6[_0xd2e4('0xca')];_0x3ee6f5[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x2ab934[_0xd2e4('0x3a')]['sort']);_0x3ee6f5[_0xd2e4('0x39')]=qs['filters'](_[_0xd2e4('0xce')](_0x2ab934[_0xd2e4('0x3a')],_0x407dc6[_0xd2e4('0xc8')]));if(_0x2ab934['query'][_0xd2e4('0x28')]){_0x3ee6f5[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x3ee6f5[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x3ee6f5[_0xd2e4('0x40')],function(_0x32fce4){var _0x51c923={};_0x51c923[_0x32fce4]={'$like':'%'+_0x2ab934[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x51c923;})});}_0x3ee6f5=_['merge']({},_0x3ee6f5,_0x2ab934[_0xd2e4('0xd0')]);return _0x393f9f['getMailAccounts'](_0x3ee6f5);}})[_0xd2e4('0x1f')](function(_0x8fcf38){if(_0x8fcf38){_0x3a2b09=_0x8fcf38[_0xd2e4('0x45')];if(!_0x2ab934['query'][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x3ee6f5['limit']=qs['limit'](_0x2ab934[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x3ee6f5[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x2ab934['query'][_0xd2e4('0x1b')]);}return _0x393f9f[_0xd2e4('0x13a')](_0x3ee6f5);}})[_0xd2e4('0x1f')](function(_0x371b7e){if(_0x371b7e){return _0x371b7e?{'count':_0x3a2b09,'rows':_0x371b7e}:null;}})['then'](respondWithResult(_0x4dc6e7,null))[_0xd2e4('0x49')](handleError(_0x4dc6e7,null));};exports[_0xd2e4('0x13c')]=function(_0x4ed108,_0x474b10){return db[_0xd2e4('0x2e')]['find']({'where':{'id':_0x4ed108[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x474b10,null))[_0xd2e4('0x1f')](function(_0x49281e){if(_0x49281e){return _0x49281e[_0xd2e4('0x13c')](_0x4ed108[_0xd2e4('0x51')][_0xd2e4('0x54')],_[_0xd2e4('0x11d')](_0x4ed108[_0xd2e4('0x51')],['ids','id'])||{});}})[_0xd2e4('0x1f')](respondWithResult(_0x474b10,null))[_0xd2e4('0x49')](handleError(_0x474b10,null));};exports['removeMailAccounts']=function(_0x3f7772,_0x2c72e4){return db['User']['find']({'where':{'id':_0x3f7772[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x2c72e4,null))[_0xd2e4('0x1f')](function(_0xe49323){if(_0xe49323){return _0xe49323[_0xd2e4('0x13d')](_0x3f7772[_0xd2e4('0x3a')][_0xd2e4('0x54')]);}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x2c72e4,null))[_0xd2e4('0x49')](handleError(_0x2c72e4,null));};exports[_0xd2e4('0x13e')]=function(_0x3faa0d,_0x3730b8){var _0x225101={};var _0x48684d={};var _0x2e0288;var _0x1f2cc5;return db['User'][_0xd2e4('0x8b')]({'where':{'id':_0x3faa0d['params']['id']}})['then'](handleEntityNotFound(_0x3730b8,null))['then'](function(_0x13e4c2){if(_0x13e4c2){_0x2e0288=_0x13e4c2;_0x48684d[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0x13f')]['rawAttributes']);_0x48684d[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x3faa0d['query']);_0x48684d[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x48684d['model'],_0x48684d[_0xd2e4('0x3a')]);_0x225101[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x48684d[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x3faa0d[_0xd2e4('0x3a')][_0xd2e4('0xcb')]));_0x225101[_0xd2e4('0x40')]=_0x225101[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x225101[_0xd2e4('0x40')]:_0x48684d[_0xd2e4('0xca')];_0x225101['order']=qs[_0xd2e4('0xcd')](_0x3faa0d[_0xd2e4('0x3a')]['sort']);_0x225101[_0xd2e4('0x39')]=qs[_0xd2e4('0xc8')](_[_0xd2e4('0xce')](_0x3faa0d[_0xd2e4('0x3a')],_0x48684d[_0xd2e4('0xc8')]));if(_0x3faa0d['query'][_0xd2e4('0x28')]){_0x225101['where']=_['merge'](_0x225101[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x225101['attributes'],function(_0x4cf0fe){var _0x21a364={};_0x21a364[_0x4cf0fe]={'$like':'%'+_0x3faa0d[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x21a364;})});}_0x225101=_[_0xd2e4('0xcf')]({},_0x225101,_0x3faa0d[_0xd2e4('0xd0')]);return _0x2e0288['getOpenchannelAccounts'](_0x225101);}})['then'](function(_0x100620){if(_0x100620){_0x1f2cc5=_0x100620[_0xd2e4('0x45')];if(!_0x3faa0d['query']['hasOwnProperty'](_0xd2e4('0xd2'))){_0x225101['limit']=qs['limit'](_0x3faa0d['query'][_0xd2e4('0x19')]);_0x225101['offset']=qs['offset'](_0x3faa0d[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x2e0288[_0xd2e4('0x13e')](_0x225101);}})[_0xd2e4('0x1f')](function(_0x917d0e){if(_0x917d0e){return _0x917d0e?{'count':_0x1f2cc5,'rows':_0x917d0e}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x3730b8,null))[_0xd2e4('0x49')](handleError(_0x3730b8,null));};exports[_0xd2e4('0x140')]=function(_0x299378,_0x561eee){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x299378[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x561eee,null))[_0xd2e4('0x1f')](function(_0xcb5fd3){if(_0xcb5fd3){return _0xcb5fd3[_0xd2e4('0x140')](_0x299378[_0xd2e4('0x51')]['ids'],_['omit'](_0x299378['body'],[_0xd2e4('0x54'),'id'])||{});}})[_0xd2e4('0x1f')](respondWithResult(_0x561eee,null))['catch'](handleError(_0x561eee,null));};exports[_0xd2e4('0x141')]=function(_0x48a193,_0x454202){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x48a193[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x454202,null))[_0xd2e4('0x1f')](function(_0xe602a){if(_0xe602a){return _0xe602a['removeOpenchannelAccounts'](_0x48a193[_0xd2e4('0x3a')]['ids']);}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x454202,null))[_0xd2e4('0x49')](handleError(_0x454202,null));};exports[_0xd2e4('0x142')]=function(_0x34ee72,_0x28b6a2){var _0x29ceff={};var _0x541956={};var _0x51dd62;var _0x2eba7e;return db['User'][_0xd2e4('0x8b')]({'where':{'id':_0x34ee72[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x28b6a2,null))[_0xd2e4('0x1f')](function(_0x3ab899){if(_0x3ab899){_0x51dd62=_0x3ab899;_0x541956['model']=_[_0xd2e4('0xc7')](db['SmsAccount'][_0xd2e4('0x2f')]);_0x541956[_0xd2e4('0x3a')]=_['keys'](_0x34ee72[_0xd2e4('0x3a')]);_0x541956['filters']=_[_0xd2e4('0xc9')](_0x541956[_0xd2e4('0xca')],_0x541956['query']);_0x29ceff[_0xd2e4('0x40')]=_['intersection'](_0x541956[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x34ee72['query'][_0xd2e4('0xcb')]));_0x29ceff[_0xd2e4('0x40')]=_0x29ceff[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x29ceff['attributes']:_0x541956[_0xd2e4('0xca')];_0x29ceff[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x34ee72[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x29ceff[_0xd2e4('0x39')]=qs['filters'](_['pick'](_0x34ee72[_0xd2e4('0x3a')],_0x541956['filters']));if(_0x34ee72['query'][_0xd2e4('0x28')]){_0x29ceff[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x29ceff[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x29ceff[_0xd2e4('0x40')],function(_0x12ee59){var _0x44d7b2={};_0x44d7b2[_0x12ee59]={'$like':'%'+_0x34ee72[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x44d7b2;})});}_0x29ceff=_['merge']({},_0x29ceff,_0x34ee72[_0xd2e4('0xd0')]);return _0x51dd62[_0xd2e4('0x142')](_0x29ceff);}})[_0xd2e4('0x1f')](function(_0x1a6191){if(_0x1a6191){_0x2eba7e=_0x1a6191[_0xd2e4('0x45')];if(!_0x34ee72['query']['hasOwnProperty'](_0xd2e4('0xd2'))){_0x29ceff[_0xd2e4('0x19')]=qs['limit'](_0x34ee72[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x29ceff[_0xd2e4('0x1b')]=qs['offset'](_0x34ee72[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x51dd62['getSmsAccounts'](_0x29ceff);}})[_0xd2e4('0x1f')](function(_0x2165cd){if(_0x2165cd){return _0x2165cd?{'count':_0x2eba7e,'rows':_0x2165cd}:null;}})['then'](respondWithResult(_0x28b6a2,null))[_0xd2e4('0x49')](handleError(_0x28b6a2,null));};exports['addSmsAccounts']=function(_0x1910c0,_0x3c49f7){return db[_0xd2e4('0x2e')]['find']({'where':{'id':_0x1910c0[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x3c49f7,null))[_0xd2e4('0x1f')](function(_0x48b640){if(_0x48b640){return _0x48b640['addSmsAccounts'](_0x1910c0[_0xd2e4('0x51')][_0xd2e4('0x54')],_[_0xd2e4('0x11d')](_0x1910c0[_0xd2e4('0x51')],['ids','id'])||{});}})['then'](respondWithResult(_0x3c49f7,null))['catch'](handleError(_0x3c49f7,null));};exports[_0xd2e4('0x143')]=function(_0x5055ec,_0x373dfe){return db[_0xd2e4('0x2e')]['find']({'where':{'id':_0x5055ec[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x373dfe,null))[_0xd2e4('0x1f')](function(_0x3d379f){if(_0x3d379f){return _0x3d379f['removeSmsAccounts'](_0x5055ec[_0xd2e4('0x3a')][_0xd2e4('0x54')]);}})['then'](respondWithStatusCode(_0x373dfe,null))[_0xd2e4('0x49')](handleError(_0x373dfe,null));};exports[_0xd2e4('0x144')]=function(_0x24c3a8,_0x31ac24){var _0x28634f={};var _0x320d33={};var _0x59eb33;var _0x3d52d7;return db[_0xd2e4('0x2e')]['findOne']({'where':{'id':_0x24c3a8['params']['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x31ac24,null))[_0xd2e4('0x1f')](function(_0x357453){if(_0x357453){_0x59eb33=_0x357453;_0x320d33[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0x145')]['rawAttributes']);_0x320d33[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x24c3a8['query']);_0x320d33[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x320d33[_0xd2e4('0xca')],_0x320d33['query']);_0x28634f[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x320d33[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x24c3a8[_0xd2e4('0x3a')]['fields']));_0x28634f[_0xd2e4('0x40')]=_0x28634f[_0xd2e4('0x40')]['length']?_0x28634f['attributes']:_0x320d33[_0xd2e4('0xca')];_0x28634f['order']=qs['sort'](_0x24c3a8[_0xd2e4('0x3a')][_0xd2e4('0xcd')]);_0x28634f[_0xd2e4('0x39')]=qs['filters'](_['pick'](_0x24c3a8['query'],_0x320d33['filters']));if(_0x24c3a8[_0xd2e4('0x3a')]['filter']){_0x28634f[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x28634f[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x28634f[_0xd2e4('0x40')],function(_0x57bf14){var _0x57dfe2={};_0x57dfe2[_0x57bf14]={'$like':'%'+_0x24c3a8['query'][_0xd2e4('0x28')]+'%'};return _0x57dfe2;})});}_0x28634f=_[_0xd2e4('0xcf')]({},_0x28634f,_0x24c3a8['options']);return _0x59eb33[_0xd2e4('0x144')](_0x28634f);}})[_0xd2e4('0x1f')](function(_0x5f0416){if(_0x5f0416){_0x3d52d7=_0x5f0416[_0xd2e4('0x45')];if(!_0x24c3a8[_0xd2e4('0x3a')][_0xd2e4('0xbf')]('nolimit')){_0x28634f['limit']=qs[_0xd2e4('0x19')](_0x24c3a8[_0xd2e4('0x3a')]['limit']);_0x28634f['offset']=qs[_0xd2e4('0x1b')](_0x24c3a8[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x59eb33['getChatWebsites'](_0x28634f);}})[_0xd2e4('0x1f')](function(_0x5b710b){if(_0x5b710b){return _0x5b710b?{'count':_0x3d52d7,'rows':_0x5b710b}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x31ac24,null))['catch'](handleError(_0x31ac24,null));};exports[_0xd2e4('0x146')]=function(_0x2ae762,_0x2a72bc){return db['User'][_0xd2e4('0x4c')]({'where':{'id':_0x2ae762[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x2a72bc,null))['then'](function(_0x5b13ad){if(_0x5b13ad){return _0x5b13ad['addChatWebsites'](_0x2ae762[_0xd2e4('0x51')]['ids'],_['omit'](_0x2ae762['body'],[_0xd2e4('0x54'),'id'])||{});}})[_0xd2e4('0x1f')](respondWithResult(_0x2a72bc,null))[_0xd2e4('0x49')](handleError(_0x2a72bc,null));};exports[_0xd2e4('0x147')]=function(_0x363d77,_0x35cae8){return db['User'][_0xd2e4('0x4c')]({'where':{'id':_0x363d77['params']['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x35cae8,null))[_0xd2e4('0x1f')](function(_0x16ea17){if(_0x16ea17){return _0x16ea17[_0xd2e4('0x147')](_0x363d77['query'][_0xd2e4('0x54')]);}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x35cae8,null))[_0xd2e4('0x49')](handleError(_0x35cae8,null));};exports[_0xd2e4('0x148')]=function(_0x206f4d,_0x3aece4){var _0x1dcce8={};var _0x576298={};var _0x3c6e4a;var _0x3d0883;return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x206f4d['params']['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x3aece4,null))[_0xd2e4('0x1f')](function(_0x46804c){if(_0x46804c){_0x3c6e4a=_0x46804c;_0x576298[_0xd2e4('0xca')]=_[_0xd2e4('0xc7')](db[_0xd2e4('0x149')][_0xd2e4('0x2f')]);_0x576298[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0x206f4d[_0xd2e4('0x3a')]);_0x576298[_0xd2e4('0xc8')]=_[_0xd2e4('0xc9')](_0x576298['model'],_0x576298[_0xd2e4('0x3a')]);_0x1dcce8[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x576298[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0x206f4d['query'][_0xd2e4('0xcb')]));_0x1dcce8[_0xd2e4('0x40')]=_0x1dcce8[_0xd2e4('0x40')][_0xd2e4('0x45')]?_0x1dcce8['attributes']:_0x576298['model'];_0x1dcce8[_0xd2e4('0xcc')]=qs[_0xd2e4('0xcd')](_0x206f4d['query'][_0xd2e4('0xcd')]);_0x1dcce8['where']=qs['filters'](_[_0xd2e4('0xce')](_0x206f4d[_0xd2e4('0x3a')],_0x576298['filters']));if(_0x206f4d['query']['filter']){_0x1dcce8[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0x1dcce8[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0x1dcce8[_0xd2e4('0x40')],function(_0x4e5600){var _0x1c79e0={};_0x1c79e0[_0x4e5600]={'$like':'%'+_0x206f4d[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x1c79e0;})});}_0x1dcce8=_[_0xd2e4('0xcf')]({},_0x1dcce8,_0x206f4d[_0xd2e4('0xd0')]);return _0x3c6e4a[_0xd2e4('0x148')](_0x1dcce8);}})[_0xd2e4('0x1f')](function(_0x2724c3){if(_0x2724c3){_0x3d0883=_0x2724c3[_0xd2e4('0x45')];if(!_0x206f4d[_0xd2e4('0x3a')]['hasOwnProperty'](_0xd2e4('0xd2'))){_0x1dcce8[_0xd2e4('0x19')]=qs['limit'](_0x206f4d[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0x1dcce8[_0xd2e4('0x1b')]=qs['offset'](_0x206f4d[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}return _0x3c6e4a[_0xd2e4('0x148')](_0x1dcce8);}})[_0xd2e4('0x1f')](function(_0x2bc3cf){if(_0x2bc3cf){return _0x2bc3cf?{'count':_0x3d0883,'rows':_0x2bc3cf}:null;}})[_0xd2e4('0x1f')](respondWithResult(_0x3aece4,null))['catch'](handleError(_0x3aece4,null));};exports['addWhatsappAccounts']=function(_0x232290,_0x3ff0c3){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x232290['params']['id']}})['then'](handleEntityNotFound(_0x3ff0c3,null))['then'](function(_0x17c79a){if(_0x17c79a){return _0x17c79a[_0xd2e4('0x14a')](_0x232290[_0xd2e4('0x51')][_0xd2e4('0x54')],_[_0xd2e4('0x11d')](_0x232290['body'],[_0xd2e4('0x54'),'id'])||{});}})[_0xd2e4('0x1f')](respondWithResult(_0x3ff0c3,null))[_0xd2e4('0x49')](handleError(_0x3ff0c3,null));};exports['removeWhatsappAccounts']=function(_0x59c4c5,_0x12f3e5){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x59c4c5[_0xd2e4('0x4b')]['id']}})['then'](handleEntityNotFound(_0x12f3e5,null))[_0xd2e4('0x1f')](function(_0x41b333){if(_0x41b333){return _0x41b333['removeWhatsappAccounts'](_0x59c4c5['query']['ids']);}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x12f3e5,null))[_0xd2e4('0x49')](handleError(_0x12f3e5,null));};exports[_0xd2e4('0x14b')]=function(_0xbe4774,_0x2e1c2c){var _0xb264f={},_0x487a72={},_0x483bfd={'count':0x0,'rows':[]};var _0x3df23b=db[_0xd2e4('0x11b')][_0xd2e4('0x2f')];_0x487a72[_0xd2e4('0xca')]=_['keys'](_0x3df23b);_0x487a72[_0xd2e4('0x3a')]=_[_0xd2e4('0xc7')](_0xbe4774['query']);_0x487a72['filters']=_[_0xd2e4('0xc9')](_0x487a72['model'],_0x487a72['query']);_0x487a72[_0xd2e4('0xc8')]=_[_0xd2e4('0xbd')](_0x487a72[_0xd2e4('0xc8')],[_0xd2e4('0x14c'),_0xd2e4('0x14d'),_0xd2e4('0x14e'),'$gte','$lt',_0xd2e4('0x14f'),'$ne',_0xd2e4('0x150'),'$not',_0xd2e4('0x151'),_0xd2e4('0x152'),_0xd2e4('0x153'),'$notIn',_0xd2e4('0x154'),'$notLike',_0xd2e4('0x155'),_0xd2e4('0x156'),_0xd2e4('0x154'),_0xd2e4('0x157'),'$contains',_0xd2e4('0x158'),_0xd2e4('0x159')]);_0xb264f[_0xd2e4('0x40')]=_[_0xd2e4('0xc9')](_0x487a72[_0xd2e4('0xca')],qs[_0xd2e4('0xcb')](_0xbe4774[_0xd2e4('0x3a')]['fields']));_0xb264f[_0xd2e4('0x40')]=_0xb264f['attributes']['length']?_0xb264f[_0xd2e4('0x40')]:_0x487a72[_0xd2e4('0xca')];if(!_0xbe4774[_0xd2e4('0x3a')]['hasOwnProperty'](_0xd2e4('0xd2'))){_0xb264f['limit']=qs[_0xd2e4('0x19')](_0xbe4774[_0xd2e4('0x3a')][_0xd2e4('0x19')]);_0xb264f[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0xbe4774[_0xd2e4('0x3a')][_0xd2e4('0x1b')]);}_0xb264f[_0xd2e4('0xcc')]=qs['sort'](_0xbe4774[_0xd2e4('0x3a')]['sort']);_0xb264f[_0xd2e4('0x39')]=qs['filters'](_[_0xd2e4('0xce')](_0xbe4774[_0xd2e4('0x3a')],_0x487a72[_0xd2e4('0xc8')]));if(_0xbe4774['query'][_0xd2e4('0x28')]){_0xb264f[_0xd2e4('0x39')]=_[_0xd2e4('0xcf')](_0xb264f[_0xd2e4('0x39')],{'$or':_[_0xd2e4('0x7e')](_0xb264f[_0xd2e4('0x40')],function(_0x5d69ea){var _0x5782b9={};_0x5782b9[_0x5d69ea]={'$like':'%'+_0xbe4774[_0xd2e4('0x3a')][_0xd2e4('0x28')]+'%'};return _0x5782b9;})});}_0xb264f[_0xd2e4('0x39')]={'$and':[_0xb264f['where'],{'$or':[{'UserId':_0xbe4774[_0xd2e4('0x4b')]['id']},{'OwnerId':_0xbe4774[_0xd2e4('0x4b')]['id']}]}]};_0xb264f=_[_0xd2e4('0xcf')]({},_0xb264f,_0xbe4774[_0xd2e4('0xd0')]);var _0xfc3e49={'where':_0xb264f[_0xd2e4('0x39')]};return db[_0xd2e4('0x11b')]['count'](_0xfc3e49)[_0xd2e4('0x1f')](function(_0x4af024){_0x483bfd[_0xd2e4('0x1a')]=_0x4af024;if(_0xbe4774['query'][_0xd2e4('0x3b')]){_0xb264f[_0xd2e4('0x3c')]=[{'attributes':['id','firstName','lastName',_0xd2e4('0x15a')],'model':db[_0xd2e4('0x15b')],'as':'Contact'},{'attributes':['id',_0xd2e4('0x2b'),_0xd2e4('0x15c')],'model':db[_0xd2e4('0x15d')],'as':'Queue'}];}return db[_0xd2e4('0x11b')][_0xd2e4('0x42')](_0xb264f);})[_0xd2e4('0x1f')](function(_0x1a8f85){_0x483bfd[_0xd2e4('0x43')]=_0x1a8f85;return _0x483bfd;})[_0xd2e4('0x1f')](respondWithFilteredResult(_0x2e1c2c,_0xb264f))[_0xd2e4('0x49')](handleError(_0x2e1c2c,null));};exports['getApiKey']=function(_0x553464,_0x5197ef){if(!_[_0xd2e4('0x5a')](_0x553464[_0xd2e4('0x70')]['id'])&&(_0x553464[_0xd2e4('0x70')][_0xd2e4('0x20')]==_0xd2e4('0x24')||_0x553464[_0xd2e4('0x70')][_0xd2e4('0x20')]=='user')){return db[_0xd2e4('0x2e')][_0xd2e4('0x8b')]({'where':{'id':_0x553464[_0xd2e4('0x4b')]['id']},'raw':!![]})[_0xd2e4('0x1f')](function(_0x126a62){return authService[_0xd2e4('0x15e')](_0x126a62);})['then'](function(_0x2a0939){if(_0x2a0939){return _0x5197ef[_0xd2e4('0x16')](0xc8)[_0xd2e4('0x1d')]({'api_key':_0x2a0939[_0xd2e4('0x15f')]});}else{return _0x5197ef[_0xd2e4('0x16')](0xcc)['json']({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0xd2e4('0x49')](handleError(_0x5197ef,0x193));}else{return _0x5197ef[_0xd2e4('0x16')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xd2e4('0x160')]=function(_0x3d46df,_0x3ea27f){if(!_[_0xd2e4('0x5a')](_0x3d46df[_0xd2e4('0x70')]['id'])&&(_0x3d46df['user'][_0xd2e4('0x20')]=='admin'||_0x3d46df[_0xd2e4('0x70')][_0xd2e4('0x20')]==_0xd2e4('0x70'))){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x3d46df[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](function(_0x163d47){return authService['generateApiKey'](_0x163d47);})['then'](function(_0x5a32d0){return db[_0xd2e4('0x2e')][_0xd2e4('0x1e')]({'apiKeyIat':_0x5a32d0[_0xd2e4('0x161')],'apiKeyNonce':_0x5a32d0[_0xd2e4('0x162')]},{'where':{'id':_0x3d46df[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](function(){return _0x3ea27f[_0xd2e4('0x16')](0xc8)[_0xd2e4('0x1d')]({'api_key':_0x5a32d0[_0xd2e4('0x15f')]});});})['catch'](handleError(_0x3ea27f,0x193));}else{return _0x3ea27f[_0xd2e4('0x16')](0x191)[_0xd2e4('0x1d')]({'message':_0xd2e4('0x163')});}};exports['removeApiKey']=function(_0x112198,_0x516f11){if(!_[_0xd2e4('0x5a')](_0x112198[_0xd2e4('0x70')]['id'])&&(_0x112198[_0xd2e4('0x70')][_0xd2e4('0x20')]=='admin'||_0x112198[_0xd2e4('0x70')][_0xd2e4('0x20')]=='user')){return db[_0xd2e4('0x2e')][_0xd2e4('0x4c')]({'where':{'id':_0x112198[_0xd2e4('0x4b')]['id']}})[_0xd2e4('0x1f')](handleEntityNotFound(_0x516f11,null))[_0xd2e4('0x1f')](function(_0x484c6b){if(_0x484c6b&&_0x484c6b['apiKeyNonce']&&_0x484c6b[_0xd2e4('0x164')])return _0x484c6b;else throw{'message':_0xd2e4('0x165')};})[_0xd2e4('0x1f')](function(){return db[_0xd2e4('0x2e')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x112198['params']['id']}});})[_0xd2e4('0x1f')](respondWithStatusCode(_0x516f11,0xc8))[_0xd2e4('0x49')](handleError(_0x516f11,0x193));}else{return _0x516f11[_0xd2e4('0x16')](0x191)[_0xd2e4('0x1d')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['whoami']=function(_0x467a40,_0x1eb264){var _0x1dbf41=_0x467a40[_0xd2e4('0x70')]['get']({'plain':!![]});if(!_0x1dbf41){return _0x1eb264['status'](0x191)[_0xd2e4('0x2d')](_0xd2e4('0x166'));}else{Promise['resolve']()['then'](function(){if(_0x467a40['query'][_0xd2e4('0x3f')]!==_0xd2e4('0x3d'))return;return _0x467a40[_0xd2e4('0x70')]['getUserSetting']();})[_0xd2e4('0x1f')](function(_0x402be6){if(!_0x402be6)return;return _0x402be6['get']({'plain':!![]});})[_0xd2e4('0x1f')](function(_0x3df8bc){_0x1dbf41[_0xd2e4('0x3f')]=_0x3df8bc;return _0x1eb264['status'](0xc8)[_0xd2e4('0x1d')](_0x1dbf41);});}};exports['getPresence']=function(_0x557bb2,_0x4473a6){var _0x5c3c70={'offset':0x0};var _0x4d6af4={'count':0x0,'rows':[]};var _0x44bc35=[_0xd2e4('0x167'),'unknown',_0xd2e4('0x168')];var _0x4b0443=[];var _0x4a34e9=[];var _0x3323eb=[];var _0x23bcb9=_0x557bb2['query']['teams'];var _0x5d95a8=_0x557bb2[_0xd2e4('0x3a')]['queues'];var _0xbd6d3a=_0x557bb2[_0xd2e4('0x3a')][_0xd2e4('0x28')];return Promise[_0xd2e4('0xfa')]()[_0xd2e4('0x1f')](function(){if(!_0x23bcb9){return[];}return db[_0xd2e4('0x10b')][_0xd2e4('0x42')]({'attributes':['id',_0xd2e4('0x2b')],'where':{'id':_0x23bcb9}});})[_0xd2e4('0x1f')](function(_0x20d401){_0x3323eb=_0x20d401;if(!_0x5d95a8){return[];}return db['VoiceQueue']['findAll']({'attributes':['id',_0xd2e4('0x2b')],'type':_0xd2e4('0x169'),'where':{'id':_0x5d95a8}});})[_0xd2e4('0x1f')](function(_0x54b181){_0x4a34e9=_0x54b181;var _0x41241f=_0x3323eb[_0xd2e4('0xbd')](_0x4a34e9)[_0xd2e4('0x7e')](function(_0x3e57b7){return _0x3e57b7['getAgents']({'attributes':['id',_0xd2e4('0x2b'),_0xd2e4('0x55'),'online'],'raw':!![]});});return Promise[_0xd2e4('0x48')](_0x41241f);})[_0xd2e4('0x1f')](function(_0x3ac3e7){var _0xc0fde1=_[_0xd2e4('0x16a')](_0x3ac3e7);if(_0xbd6d3a){if(_0x5d95a8||_0x23bcb9){return _0xc0fde1[_0xd2e4('0x28')](function(_0x2d4640){return _0x2d4640[_0xd2e4('0x2b')][_0xd2e4('0x97')]()[_0xd2e4('0x2a')](_0xbd6d3a['toLowerCase']())||_0x2d4640[_0xd2e4('0x55')][_0xd2e4('0x16b')]()[_0xd2e4('0x2a')](_0xbd6d3a);});}else{return db[_0xd2e4('0x2e')]['findAll']({'attributes':['id',_0xd2e4('0x2b'),'internal',_0xd2e4('0x90')],'where':{'role':_0xd2e4('0x21'),'$or':[db[_0xd2e4('0x5c')][_0xd2e4('0x39')](db['sequelize']['fn'](_0xd2e4('0x16c'),db[_0xd2e4('0x5c')][_0xd2e4('0x16d')](_0xd2e4('0x2b'))),{'$like':'%'+_0xbd6d3a[_0xd2e4('0x97')]()+'%'}),{'internal':{'$like':'%'+_0xbd6d3a+'%'}}]},'raw':!![]});}}else{return _0xc0fde1;}})['then'](function(_0x2badd0){var _0x55556f=_0xd2e4('0x2b');var _0x376364=_0xd2e4('0x16e');if(_0x557bb2['query']['sort']){_0x376364=_0x557bb2['query'][_0xd2e4('0xcd')][0x0]==='-'?_0xd2e4('0x16f'):_0xd2e4('0x16e');_0x55556f=_0x376364===_0xd2e4('0x16e')?_0x557bb2[_0xd2e4('0x3a')][_0xd2e4('0xcd')]:_0x557bb2[_0xd2e4('0x3a')][_0xd2e4('0xcd')][_0xd2e4('0x170')](0x1);}return _(_0x2badd0)[_0xd2e4('0x171')]('id')['orderBy']([function(_0x3623a4){return _0x55556f===_0xd2e4('0x2b')?_0x3623a4[_0x55556f][_0xd2e4('0x97')]():_0x3623a4[_0x55556f];}],[_0x376364])['map'](function(_0x2b42c9){return _['pick'](_0x2b42c9,['id',_0xd2e4('0x2b'),_0xd2e4('0x55'),_0xd2e4('0x90')]);})['value']();})[_0xd2e4('0x1f')](function(_0xa1edd2){_0x4b0443=_0xa1edd2;return rta[_0xd2e4('0x172')]();})[_0xd2e4('0x1f')](function(_0x1d5475){return _0x4b0443[_0xd2e4('0x7e')](function(_0x305b9c){var _0xb5673a=_['find'](_0x1d5475[_0xd2e4('0x43')],['id',_0x305b9c['id']]);if(!_0xb5673a||!_0x305b9c[_0xd2e4('0x90')]){_0x305b9c[_0xd2e4('0x16')]=_0xd2e4('0x173');}else if(_0xb5673a[_0xd2e4('0xa0')]){_0x305b9c[_0xd2e4('0x16')]='pause';}else if(_0xb5673a[_0xd2e4('0x174')]==='unavailable'||!_0xb5673a[_0xd2e4('0x174')]){_0x305b9c['status']=_0xd2e4('0x175');}else{_0x305b9c[_0xd2e4('0x16')]=_0x44bc35['includes'](_0xb5673a[_0xd2e4('0x174')])?'online':_0xd2e4('0x176');}return _0x305b9c;});})['then'](function(_0x28264a){if(!_0x557bb2['query'][_0xd2e4('0xbf')](_0xd2e4('0xd2'))){_0x5c3c70['limit']=qs['limit'](_0x557bb2[_0xd2e4('0x3a')][_0xd2e4('0x19')]||0xa);_0x5c3c70[_0xd2e4('0x1b')]=qs[_0xd2e4('0x1b')](_0x557bb2['query']['offset']);}_0x4d6af4[_0xd2e4('0x1a')]=_0x28264a[_0xd2e4('0x45')];_0x4d6af4['rows']=_0x5c3c70[_0xd2e4('0x19')]?_0x28264a[_0xd2e4('0x177')](_0x5c3c70[_0xd2e4('0x1b')],_0x5c3c70[_0xd2e4('0x1b')]+_0x5c3c70['limit']):_0x28264a;return _0x4d6af4;})[_0xd2e4('0x1f')](respondWithFilteredResult(_0x4473a6,_0x5c3c70))['catch'](handleError(_0x4473a6,null));};function get_open_tabs(_0x5c2a49,_0x220426){var _0x39ec46=_0x5c2a49[_0xd2e4('0x178')](0x0)['toUpperCase']()+_0x5c2a49['slice'](0x1);var _0x244934={'type':db[_0xd2e4('0x87')][_0xd2e4('0x5e')][_0xd2e4('0x5f')],'raw':!![]};return new Promise(function(_0x1fccac,_0x4b236a){var _0x46855f=squel[_0xd2e4('0x179')]()[_0xd2e4('0x17a')](_0xd2e4('0x17b')+_0x39ec46+_0xd2e4('0x17c'),'id')[_0xd2e4('0x17a')](_0xd2e4('0x17d'))['from'](_0xd2e4('0x17e')+_0x5c2a49+_0xd2e4('0x17f'),'ui')[_0xd2e4('0x39')](_0xd2e4('0x180'),_0x220426['id']);return db[_0xd2e4('0x5c')]['query'](_0x46855f[_0xd2e4('0x16b')](),_0x244934)[_0xd2e4('0x1f')](function(_0x353b83){_0x220426[_0x39ec46+_0xd2e4('0x181')]=_0x353b83;_0x1fccac(_0x353b83);})[_0xd2e4('0x49')](function(_0x5b8265){_0x4b236a(_0x5b8265);});});}exports[_0xd2e4('0x182')]=function(_0xd53a90,_0x1b6aee){var _0x327a2c=_0xd53a90[_0xd2e4('0x4b')]['id'];var _0x2b0675=_0xd53a90[_0xd2e4('0x51')]['enabled'];return db[_0xd2e4('0x2e')][_0xd2e4('0x1e')]({'messengerSoundNotification':_0x2b0675},{'where':{'id':_0x327a2c}})[_0xd2e4('0x1f')](respondWithStatusCode(_0x1b6aee,null))['catch'](handleError(_0x1b6aee,null));};
\ No newline at end of file
index 4198449..92db7e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b39=['exports','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x257b7b,_0x1f0dbf){var _0x4f2420=function(_0x1b836e){while(--_0x1b836e){_0x257b7b['push'](_0x257b7b['shift']());}};_0x4f2420(++_0x1f0dbf);}(_0x5b39,0x91));var _0x95b3=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x5b39[_0x6cf19c];return _0xce14f3;};'use strict';var EventEmitter=require('events');var User=require('../../mysqldb')['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x95b3('0x0')](0x0);var events={'afterCreate':_0x95b3('0x1'),'afterUpdate':_0x95b3('0x2'),'afterDestroy':_0x95b3('0x3')};function emitEvent(_0x201f38){return function(_0x43b2d4,_0x474efd,_0x536885){UserEvents[_0x95b3('0x4')](_0x201f38+':'+_0x43b2d4['id'],_0x43b2d4);UserEvents[_0x95b3('0x4')](_0x201f38,_0x43b2d4);_0x536885(null);};}for(var e in events){if(events[_0x95b3('0x5')](e)){var event=events[e];User[_0x95b3('0x6')](e,emitEvent(event));}}module[_0x95b3('0x7')]=UserEvents;
\ No newline at end of file
+var _0xd5e9=['hasOwnProperty','hook','exports','events','../../mysqldb','User','setMaxListeners','save','update','remove','emit'];(function(_0x125bb8,_0x21a8e3){var _0x1db5fb=function(_0x5b62b9){while(--_0x5b62b9){_0x125bb8['push'](_0x125bb8['shift']());}};_0x1db5fb(++_0x21a8e3);}(_0xd5e9,0x1a5));var _0x9d5e=function(_0x14ae3d,_0x3d2ce3){_0x14ae3d=_0x14ae3d-0x0;var _0x4a794c=_0xd5e9[_0x14ae3d];return _0x4a794c;};'use strict';var EventEmitter=require(_0x9d5e('0x0'));var User=require(_0x9d5e('0x1'))['db'][_0x9d5e('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x9d5e('0x3')](0x0);var events={'afterCreate':_0x9d5e('0x4'),'afterUpdate':_0x9d5e('0x5'),'afterDestroy':_0x9d5e('0x6')};function emitEvent(_0x5f3c17){return function(_0xb9e81f,_0x418d3d,_0x4e80d9){UserEvents[_0x9d5e('0x7')](_0x5f3c17+':'+_0xb9e81f['id'],_0xb9e81f);UserEvents[_0x9d5e('0x7')](_0x5f3c17,_0xb9e81f);_0x4e80d9(null);};}for(var e in events){if(events[_0x9d5e('0x8')](e)){var event=events[e];User[_0x9d5e('0x9')](e,emitEvent(event));}}module[_0x9d5e('0xa')]=UserEvents;
\ No newline at end of file
index 49ce217..6f5e731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf88f=['all','voicePause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','forEach','setDataValue','bluebird','crypto','util','md5','moment','lodash','jayson/promise','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','internal','concat','catch','exports','models','define','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','then','privacyEnabled','updateMd5Password','updatePassword','changed','createUserSetting','bulkCreate','VoiceExtension','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','sha1','pbkdf2','provider','md5secret','client','http','error','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','result','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','PAUSE','channel','MemberReport','map'];(function(_0x5b685e,_0x3e69ad){var _0x9a0173=function(_0x5cc6ad){while(--_0x5cc6ad){_0x5b685e['push'](_0x5b685e['shift']());}};_0x9a0173(++_0x3e69ad);}(_0xf88f,0x1bb));var _0xff88=function(_0x42293e,_0x19e693){_0x42293e=_0x42293e-0x0;var _0x411bb9=_0xf88f[_0x42293e];return _0x411bb9;};'use strict';var BPromise=require(_0xff88('0x0'));var crypto=require(_0xff88('0x1'));var util=require(_0xff88('0x2'));var md5=require(_0xff88('0x3'));var moment=require(_0xff88('0x4'));var _=require(_0xff88('0x5'));var jayson=require(_0xff88('0x6'));var attributes=require('./user.attributes');var authTypes=[_0xff88('0x7')];var validatePresenceOf=function(_0x33aa75){return _0x33aa75&&_0x33aa75[_0xff88('0x8')];};var getChanSpyApplications=function(_0x4a8bb1,_0x38e1df,_0x406a2e){var _0x4140a8={'context':_0x4a8bb1[_0xff88('0x9')]||_0xff88('0xa'),'type':_0xff88('0xb'),'isApp':![],'UserId':_0x4a8bb1['id']};var _0x585e2b=[];for(var _0x235885=0x0,_0x23123b=0x1;_0x235885<_0x406a2e[_0xff88('0x8')];_0x235885++,_0x23123b=0x1){var _0x4715fc={'exten':util[_0xff88('0xc')](_0xff88('0xd'),_0x406a2e[_0x235885][_0xff88('0xe')],_0x38e1df),'ChanSpyId':_0x406a2e[_0x235885]['id']};_0x585e2b[_0xff88('0xf')](_[_0xff88('0x10')]({'app':_0xff88('0x11'),'appdata':util[_0xff88('0xc')](_0xff88('0x12'),_0xff88('0x13')),'priority':_0x23123b++},_0x4140a8,_0x4715fc));if(_0x406a2e[_0x235885][_0xff88('0x14')]){_0x585e2b[_0xff88('0xf')](_['merge']({'app':_0xff88('0x15'),'appdata':util[_0xff88('0xc')](_0xff88('0x16'),_0x406a2e[_0x235885]['recordingFormat']),'priority':_0x23123b++},_0x4140a8,_0x4715fc));}if(_0x406a2e[_0x235885][_0xff88('0x17')]){_0x585e2b[_0xff88('0xf')](_[_0xff88('0x10')]({'app':_0xff88('0x18'),'appdata':_0x406a2e[_0x235885][_0xff88('0x19')],'priority':_0x23123b++},_0x4140a8,_0x4715fc));}_0x585e2b[_0xff88('0xf')](_[_0xff88('0x10')]({'app':_0xff88('0x1a'),'appdata':util['format'](_0xff88('0x1b'),_0x4a8bb1[_0xff88('0x1c')],_0x406a2e[_0x235885]['options']?_0x406a2e[_0x235885]['options'][_0xff88('0x1d')](''):''),'priority':_0x23123b++},_0x4140a8,_0x4715fc));if(_0x406a2e[_0x235885][_0xff88('0x14')]){_0x585e2b['push'](_[_0xff88('0x10')]({'app':_0xff88('0x1e'),'priority':_0x23123b++},_0x4140a8,_0x4715fc));}}return _0x585e2b;};var getUserApplications=function(_0x5b8684,_0x2bafb1){var _0x2030d2=[_0xff88('0x1f'),_0xff88('0x20'),_0xff88('0x21')];var _0x31f899={'context':_0x5b8684[_0xff88('0x9')]||'from-sip','exten':_0x2bafb1,'type':_0xff88('0xb'),'isApp':![],'UserId':_0x5b8684['id']};var _0x3818e2=[{'app':_0xff88('0x11'),'appdata':_0xff88('0x22')}];if(_0x5b8684[_0xff88('0x23')]&&_[_0xff88('0x24')](_0x2030d2,_0x5b8684['extensionMonitor'])){_0x3818e2[_0xff88('0xf')]({'app':_0xff88('0x11'),'appdata':_0xff88('0x25')});_0x3818e2[_0xff88('0xf')]({'app':_0xff88('0x11'),'appdata':util[_0xff88('0xc')](_0xff88('0x26'),_0x5b8684['extensionMonitor'])});_0x3818e2[_0xff88('0xf')]({'app':_0xff88('0x27'),'appdata':util['format'](_0xff88('0x28'),_0x5b8684[_0xff88('0x1c')])});}else{_0x3818e2[_0xff88('0xf')]({'app':'Dial','appdata':util[_0xff88('0xc')](_0xff88('0x29'),_0x5b8684['name'])});}_0x3818e2[_0xff88('0xf')]({'app':_0xff88('0x2a')});for(var _0x5c6092=0x0;_0x5c6092<_0x3818e2[_0xff88('0x8')];_0x5c6092++){_0x3818e2[_0x5c6092][_0xff88('0x2b')]=_0x5c6092+0x1;_0x3818e2[_0x5c6092]=_[_0xff88('0x2c')](_0x3818e2[_0x5c6092],_0x31f899);}return _0x3818e2;};var getChanSpyPromise=function(_0x320ea0,_0x1e97af){return new BPromise(function(_0xf04956,_0x53ee9d){return _0x320ea0[_0xff88('0x2d')][_0xff88('0x2e')]()['then'](function(_0x36cfc4){if(_0x36cfc4){var _0x2356d1=getChanSpyApplications(_0x1e97af,_0x1e97af[_0xff88('0x2f')],_0x36cfc4);if(_0x1e97af[_0xff88('0x2f')]!=_0x1e97af[_0xff88('0x1c')]){_0x2356d1=_0x2356d1[_0xff88('0x30')](getChanSpyApplications(_0x1e97af,_0x1e97af['name'],_0x36cfc4));}return _0xf04956(_0x2356d1);}return _0xf04956([]);})[_0xff88('0x31')](function(_0x3398b0){_0x53ee9d(_0x3398b0);});});};module[_0xff88('0x32')]=function(_0x52e323){var _0x38f1f1=_0x52e323[_0xff88('0x33')];return _0x52e323[_0xff88('0x34')]('User',attributes,{'tableName':'users','charset':_0xff88('0x35'),'collate':_0xff88('0x36'),'hooks':{'beforeCreate':function(_0xf8a047,_0x382d8a,_0x1c7937){var _0x11a3c4=typeof _0xf8a047[_0xff88('0x37')]===_0xff88('0x38')?BPromise[_0xff88('0x39')](null):_0x38f1f1[_0xff88('0x3a')][_0xff88('0x3b')]({'where':{'id':_0xf8a047['userProfileId']}});_0x11a3c4[_0xff88('0x3c')](function(_0x5d5d8c){if(_0x5d5d8c){_0xf8a047[_0xff88('0x3d')]=_0x5d5d8c[_0xff88('0x3d')];}})['then'](function(){_0xf8a047[_0xff88('0x3e')]();_0xf8a047[_0xff88('0x3f')](_0x1c7937);})[_0xff88('0x31')](function(_0x53caba){_0x1c7937(_0x53caba);});},'beforeUpdate':function(_0x43b26d,_0x26cedd,_0x28ce5a){Promise[_0xff88('0x39')]()[_0xff88('0x3c')](function(){if(_0x43b26d[_0xff88('0x40')](_0xff88('0x37'))===![])return;return _0x38f1f1[_0xff88('0x3a')][_0xff88('0x3b')]({'where':{'id':_0x43b26d[_0xff88('0x37')]}})['then'](function(_0x4ed969){if(_0x4ed969)_0x43b26d[_0xff88('0x3d')]=_0x4ed969[_0xff88('0x3d')];return;});})[_0xff88('0x3c')](function(){if(_0x43b26d[_0xff88('0x40')]('password')){_0x43b26d[_0xff88('0x3e')]();return _0x43b26d[_0xff88('0x3f')](_0x28ce5a);}_0x28ce5a();})[_0xff88('0x31')](function(_0x1a183a){_0x28ce5a(_0x1a183a);});},'afterCreate':function(_0x2265be,_0xc3228,_0x400b96){var _0x3d0c4b=getUserApplications(_0x2265be,_0x2265be['internal']);if(_0x2265be[_0xff88('0x2f')]!=_0x2265be['name']){_0x3d0c4b=_0x3d0c4b[_0xff88('0x30')](getUserApplications(_0x2265be,_0x2265be[_0xff88('0x1c')]));}return Promise[_0xff88('0x39')]()[_0xff88('0x3c')](function(){if(!_0x2265be['userSetting']){return _0x2265be[_0xff88('0x41')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0xff88('0x3c')](function(){return _0x38f1f1['VoiceExtension'][_0xff88('0x42')](_0x3d0c4b);})['then'](function(){if(_0x2265be[_0xff88('0x13')]){return getChanSpyPromise(_0x38f1f1,_0x2265be);}})[_0xff88('0x3c')](function(_0x325706){if(_0x325706&&_0x325706[_0xff88('0x8')]){return _0x38f1f1[_0xff88('0x43')][_0xff88('0x42')](_0x325706);}})['then'](function(){_0x400b96();})[_0xff88('0x31')](function(_0x23be83){_0x400b96(_0x23be83);});},'afterUpdate':function(_0x528e4e,_0x56f5b9,_0x223c4d){return BPromise[_0xff88('0x39')]()[_0xff88('0x3c')](function(){if(_0x528e4e['changed'](_0xff88('0x13'))||_0x528e4e[_0xff88('0x40')]('context')){return _0x38f1f1[_0xff88('0x43')][_0xff88('0x44')]({'where':{'UserId':_0x528e4e['id'],'type':_0xff88('0xb'),'ChanSpyId':{'$ne':null}}})[_0xff88('0x3c')](function(){if(_0x528e4e['chanspy']){return getChanSpyPromise(_0x38f1f1,_0x528e4e)['then'](function(_0x322218){if(_0x322218&&_0x322218['length']){return _0x38f1f1[_0xff88('0x43')][_0xff88('0x42')](_0x322218);}});}});}})['then'](function(){if(_0x528e4e[_0xff88('0x40')](_0xff88('0x23'))||_0x528e4e['changed'](_0xff88('0x9'))){return _0x38f1f1[_0xff88('0x43')][_0xff88('0x44')]({'where':{'UserId':_0x528e4e['id'],'type':_0xff88('0xb'),'ChanSpyId':null}})['then'](function(){var _0x38a370=getUserApplications(_0x528e4e,_0x528e4e['internal']);if(_0x528e4e[_0xff88('0x2f')]!=_0x528e4e[_0xff88('0x1c')]){_0x38a370=_0x38a370[_0xff88('0x30')](getUserApplications(_0x528e4e,_0x528e4e[_0xff88('0x1c')]));}return _0x38f1f1['VoiceExtension'][_0xff88('0x42')](_0x38a370);});}})[_0xff88('0x3c')](function(){_0x223c4d();})[_0xff88('0x31')](function(_0x1dc792){_0x223c4d(_0x1dc792);});},'afterDestroy':function(_0x168cbd){return _0x38f1f1['VoiceExtension'][_0xff88('0x44')]({'where':{'UserId':_0x168cbd['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x3654fa,_0x20b1b7){if(!_0x20b1b7){return this[_0xff88('0x19')]===this[_0xff88('0x45')](_0x3654fa);}var _0x532db3=this;this['encryptPassword'](_0x3654fa,function(_0x374065,_0x55275b){if(_0x374065){_0x20b1b7(_0x374065);}if(_0x532db3[_0xff88('0x19')]===_0x55275b){_0x20b1b7(null,!![]);}else{_0x20b1b7(null,![]);}});},'makeSalt':function(_0x27092b,_0x116b79){var _0x573f96=0x10;if(typeof arguments[0x0]===_0xff88('0x46')){_0x116b79=arguments[0x0];_0x27092b=_0x573f96;}else if(typeof arguments[0x1]===_0xff88('0x46')){_0x116b79=arguments[0x1];}else{throw new Error(_0xff88('0x47'));}if(!_0x27092b){_0x27092b=_0x573f96;}return crypto['randomBytes'](_0x27092b,function(_0x50401c,_0x44ed7b){if(_0x50401c){_0x116b79(_0x50401c);}return _0x116b79(null,_0x44ed7b[_0xff88('0x48')](_0xff88('0x49')));});},'encryptPassword':function(_0x4e02aa,_0x7c03dc){if(!_0x4e02aa||!this[_0xff88('0x4a')]){return _0x7c03dc?_0x7c03dc(null):null;}var _0x442ed8=0x2710;var _0x561f9c=0x40;var _0x5ec275=Buffer['from'](this[_0xff88('0x4a')],_0xff88('0x49'));if(!_0x7c03dc){return crypto['pbkdf2Sync'](_0x4e02aa,_0x5ec275,_0x442ed8,_0x561f9c,_0xff88('0x4b'))['toString']('base64');}return crypto[_0xff88('0x4c')](_0x4e02aa,_0x5ec275,_0x442ed8,_0x561f9c,'sha1',function(_0x5b16af,_0x2fe361){if(_0x5b16af){_0x7c03dc(_0x5b16af);}return _0x7c03dc(null,_0x2fe361[_0xff88('0x48')](_0xff88('0x49')));});},'updatePassword':function(_0x54e130){if(!this['password']){return _0x54e130(null);}if(!validatePresenceOf(this[_0xff88('0x19')])&&authTypes['indexOf'](this[_0xff88('0x4d')])===-0x1){_0x54e130(new Error('Invalid\x20password'));}var _0x14dbbb=this;this['makeSalt'](function(_0x8de2ba,_0x29b33e){if(_0x8de2ba){return _0x54e130(_0x8de2ba);}_0x14dbbb[_0xff88('0x4a')]=_0x29b33e;_0x14dbbb['encryptPassword'](_0x14dbbb['password'],function(_0x45a988,_0x1c2701){if(_0x45a988){_0x54e130(_0x45a988);}_0x14dbbb[_0xff88('0x19')]=_0x1c2701;_0x54e130(null);});});},'updateMd5Password':function(){this[_0xff88('0x4e')]=md5(this[_0xff88('0x1c')]+':asterisk:'+this[_0xff88('0x19')]);return this['md5secret'];},'getRealtimeData':function(){var _0x69e54e={'id':this['id']};var _0x419643=jayson[_0xff88('0x4f')][_0xff88('0x50')]({'port':0x232a});var _0x5eb1a6=jayson['client'][_0xff88('0x50')]({'port':0x232c});var _0x555270={};var _0x387ae5={};return _0x419643['request']('Agents',_0x69e54e)['then'](function(_0x5acce0){if(_0x5acce0[_0xff88('0x51')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)');}_0x555270=_0x5acce0['result'];return _0x5eb1a6[_0xff88('0x52')](_0xff88('0x53'),_0x69e54e);})['then'](function(_0x30998a){if(_0x30998a['error']){throw new Error(_0xff88('0x54'));}_0x387ae5=_0x30998a[_0xff88('0x55')];var _0x3c8e58=_['merge']({},_0x555270,_0x387ae5);return _0x3c8e58;})['catch'](function(_0x7f173f){throw _0x7f173f;});},'unpause':function(_0x2bc633,_0x473c30=_0xff88('0x56')){var _0x44c1ff=this;var _0x1dcf33={};return Promise[_0xff88('0x39')]()['then'](function(){if(!_0x2bc633||_0x2bc633===_0xff88('0x57')&&_0x473c30==='manual'){var _0x156b27=jayson[_0xff88('0x4f')]['http']({'port':0x232a});return _0x156b27['request'](_0xff88('0x58'),{'id':_0x44c1ff['id'],'name':_0x44c1ff[_0xff88('0x1c')],'pause':![]})[_0xff88('0x3c')](function(_0x2ae03b){if(_0x2ae03b[_0xff88('0x51')]){throw new Error(util[_0xff88('0xc')](_0xff88('0x59'),_0x44c1ff['id'],_0x44c1ff['name']));}return _0x2ae03b[_0xff88('0x55')][_0xff88('0x5a')];});}})[_0xff88('0x3c')](function(){if(!_0x2bc633||_0x2bc633===_0xff88('0x57')){return _0x38f1f1[_0xff88('0x5b')][_0xff88('0x5c')]({'paused':0x0},{'where':{'UserId':_0x44c1ff['id']},'individualHooks':!![]});}})[_0xff88('0x3c')](function(){var _0xd0324d=!_0x2bc633?_0xff88('0x2e'):'findOne';var _0x44c2f0={'membername':_0x44c1ff[_0xff88('0x1c')],'type':_0xff88('0x5d'),'exitAt':null};if(_0x2bc633){_0x44c2f0[_0xff88('0x5e')]=_0x2bc633;}return _0x38f1f1[_0xff88('0x5f')][_0xd0324d]({'where':_0x44c2f0});})[_0xff88('0x3c')](function(_0x5fa10d){if(_0x5fa10d){var _0x5a30ff=Array['isArray'](_0x5fa10d)?_0x5fa10d:[_0x5fa10d];var _0x5c8afc=_0x5a30ff[_0xff88('0x60')](function(_0x45a472){return _0x45a472[_0xff88('0x5c')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x473c30});});return Promise[_0xff88('0x61')](_0x5c8afc);}})['then'](function(){if(!_0x2bc633){_0x1dcf33[_0xff88('0x62')]=![];_0x1dcf33['mailPause']=![];_0x1dcf33['chatPause']=![];_0x1dcf33[_0xff88('0x63')]=![];_0x1dcf33[_0xff88('0x64')]=![];_0x1dcf33[_0xff88('0x65')]=![];_0x1dcf33[_0xff88('0x66')]=![];}else{_0x1dcf33[_0x2bc633+_0xff88('0x67')]=![];}return _0x44c1ff[_0xff88('0x68')]();})[_0xff88('0x3c')](function(_0xe3bb9){var _0x4d5986=require(_0xff88('0x69'));var _0x92b7e6=_0x4d5986['getChannels']();_0x92b7e6[_0xff88('0x6a')](function(_0x1ccf6f){var _0x9c35e=_0x1ccf6f+'Status';_0x44c1ff[_0xff88('0x6b')]([_0x9c35e],_0xe3bb9[_0x9c35e]);});return _0x44c1ff[_0xff88('0x5c')](_0x1dcf33);})['catch'](function(_0x105fc9){throw _0x105fc9;});}}});};
\ No newline at end of file
+var _0xa9e0=['%s%s','prefix','push','chanspy','record','merge','MixMonitor','recordingFormat','auth','Authenticate','password','name','options','join','StopMixMonitor','wav','WAV','gsm','from-sip','Set','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','User','utf8','userProfileId','resolve','UserProfile','find','privacyEnabled','updateMd5Password','changed','updatePassword','concat','error','bulkCreate','VoiceExtension','destroy','system','transaction','encryptPassword','function','toString','base64','salt','pbkdf2Sync','provider','Invalid\x20password','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','result','message','UserVoiceQueueRt','channel','MemberReport','isArray','map','update','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','chatPause','faxPause','whatsappPause','openchannelPause','Pause','../../config/utils','getChannels','forEach','bluebird','crypto','util','lodash','./user.attributes','google','length','context','format'];(function(_0x5631e4,_0x141c93){var _0x2aa0c5=function(_0x3a24f4){while(--_0x3a24f4){_0x5631e4['push'](_0x5631e4['shift']());}};_0x2aa0c5(++_0x141c93);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var BPromise=require(_0x0a9e('0x0'));var crypto=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var md5=require('md5');var moment=require('moment');var _=require(_0x0a9e('0x3'));var jayson=require('jayson/promise');var attributes=require(_0x0a9e('0x4'));var authTypes=[_0x0a9e('0x5')];var validatePresenceOf=function(_0x2ab90b){return _0x2ab90b&&_0x2ab90b[_0x0a9e('0x6')];};var getChanSpyApplications=function(_0x981158,_0x57b080,_0x219af0){var _0x441e3a={'context':_0x981158[_0x0a9e('0x7')]||'from-sip','type':'system','isApp':![],'UserId':_0x981158['id']};var _0xe42b77=[];for(var _0x56465b=0x0,_0x52cace=0x1;_0x56465b<_0x219af0[_0x0a9e('0x6')];_0x56465b++,_0x52cace=0x1){var _0xf81284={'exten':util[_0x0a9e('0x8')](_0x0a9e('0x9'),_0x219af0[_0x56465b][_0x0a9e('0xa')],_0x57b080),'ChanSpyId':_0x219af0[_0x56465b]['id']};_0xe42b77[_0x0a9e('0xb')](_['merge']({'app':'Set','appdata':util['format']('CDR(type)=%s',_0x0a9e('0xc')),'priority':_0x52cace++},_0x441e3a,_0xf81284));if(_0x219af0[_0x56465b][_0x0a9e('0xd')]){_0xe42b77[_0x0a9e('0xb')](_[_0x0a9e('0xe')]({'app':_0x0a9e('0xf'),'appdata':util[_0x0a9e('0x8')]('${UNIQUEID}.%s,a',_0x219af0[_0x56465b][_0x0a9e('0x10')]),'priority':_0x52cace++},_0x441e3a,_0xf81284));}if(_0x219af0[_0x56465b][_0x0a9e('0x11')]){_0xe42b77[_0x0a9e('0xb')](_[_0x0a9e('0xe')]({'app':_0x0a9e('0x12'),'appdata':_0x219af0[_0x56465b][_0x0a9e('0x13')],'priority':_0x52cace++},_0x441e3a,_0xf81284));}_0xe42b77['push'](_[_0x0a9e('0xe')]({'app':'ChanSpy','appdata':util[_0x0a9e('0x8')]('SIP/%s,%s',_0x981158[_0x0a9e('0x14')],_0x219af0[_0x56465b][_0x0a9e('0x15')]?_0x219af0[_0x56465b]['options'][_0x0a9e('0x16')](''):''),'priority':_0x52cace++},_0x441e3a,_0xf81284));if(_0x219af0[_0x56465b]['record']){_0xe42b77[_0x0a9e('0xb')](_[_0x0a9e('0xe')]({'app':_0x0a9e('0x17'),'priority':_0x52cace++},_0x441e3a,_0xf81284));}}return _0xe42b77;};var getUserApplications=function(_0x205fd6,_0x31b1ca){var _0x2eb11f=[_0x0a9e('0x18'),_0x0a9e('0x19'),_0x0a9e('0x1a')];var _0x112016={'context':_0x205fd6[_0x0a9e('0x7')]||_0x0a9e('0x1b'),'exten':_0x31b1ca,'type':'system','isApp':![],'UserId':_0x205fd6['id']};var _0x2c3407=[{'app':_0x0a9e('0x1c'),'appdata':'CDR(type)=internal'}];if(_0x205fd6[_0x0a9e('0x1d')]&&_['includes'](_0x2eb11f,_0x205fd6['extensionMonitor'])){_0x2c3407[_0x0a9e('0xb')]({'app':_0x0a9e('0x1c'),'appdata':_0x0a9e('0x1e')});_0x2c3407[_0x0a9e('0xb')]({'app':'Set','appdata':util[_0x0a9e('0x8')](_0x0a9e('0x1f'),_0x205fd6[_0x0a9e('0x1d')])});_0x2c3407[_0x0a9e('0xb')]({'app':_0x0a9e('0x20'),'appdata':util[_0x0a9e('0x8')](_0x0a9e('0x21'),_0x205fd6['name'])});}else{_0x2c3407['push']({'app':_0x0a9e('0x20'),'appdata':util[_0x0a9e('0x8')](_0x0a9e('0x22'),_0x205fd6[_0x0a9e('0x14')])});}_0x2c3407['push']({'app':_0x0a9e('0x23')});for(var _0x479bc4=0x0;_0x479bc4<_0x2c3407[_0x0a9e('0x6')];_0x479bc4++){_0x2c3407[_0x479bc4]['priority']=_0x479bc4+0x1;_0x2c3407[_0x479bc4]=_[_0x0a9e('0x24')](_0x2c3407[_0x479bc4],_0x112016);}return _0x2c3407;};var getChanSpyPromise=function(_0x34dc65,_0x25fba9){return new BPromise(function(_0x14433c,_0x140511){return _0x34dc65[_0x0a9e('0x25')][_0x0a9e('0x26')]()[_0x0a9e('0x27')](function(_0x5a101a){if(_0x5a101a){var _0x3652a7=getChanSpyApplications(_0x25fba9,_0x25fba9[_0x0a9e('0x28')],_0x5a101a);if(_0x25fba9[_0x0a9e('0x28')]!=_0x25fba9[_0x0a9e('0x14')]){_0x3652a7=_0x3652a7['concat'](getChanSpyApplications(_0x25fba9,_0x25fba9[_0x0a9e('0x14')],_0x5a101a));}return _0x14433c(_0x3652a7);}return _0x14433c([]);})[_0x0a9e('0x29')](function(_0x1843b2){_0x140511(_0x1843b2);});});};module[_0x0a9e('0x2a')]=function(_0x58b06f){var _0x563b45=_0x58b06f[_0x0a9e('0x2b')];return _0x58b06f[_0x0a9e('0x2c')](_0x0a9e('0x2d'),attributes,{'tableName':'users','charset':_0x0a9e('0x2e'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x2407f9,_0x3ae878,_0x1122db){var _0x33bdb7=typeof _0x2407f9[_0x0a9e('0x2f')]==='undefined'?BPromise[_0x0a9e('0x30')](null):_0x563b45[_0x0a9e('0x31')][_0x0a9e('0x32')]({'where':{'id':_0x2407f9[_0x0a9e('0x2f')]}});_0x33bdb7[_0x0a9e('0x27')](function(_0x409319){if(_0x409319){_0x2407f9[_0x0a9e('0x33')]=_0x409319[_0x0a9e('0x33')];}})['then'](function(){_0x2407f9[_0x0a9e('0x34')]();_0x2407f9['updatePassword'](_0x1122db);})[_0x0a9e('0x29')](function(_0x14b13f){_0x1122db(_0x14b13f);});},'beforeUpdate':function(_0x2b7e7f,_0x3f3d41,_0x567193){Promise[_0x0a9e('0x30')]()[_0x0a9e('0x27')](function(){if(_0x2b7e7f[_0x0a9e('0x35')](_0x0a9e('0x2f'))===![])return;return _0x563b45['UserProfile']['find']({'where':{'id':_0x2b7e7f[_0x0a9e('0x2f')]}})['then'](function(_0x24936a){if(_0x24936a)_0x2b7e7f[_0x0a9e('0x33')]=_0x24936a[_0x0a9e('0x33')];return;});})[_0x0a9e('0x27')](function(){if(_0x2b7e7f['changed'](_0x0a9e('0x13'))){_0x2b7e7f[_0x0a9e('0x34')]();return _0x2b7e7f[_0x0a9e('0x36')](_0x567193);}_0x567193();})['catch'](function(_0x1dbf74){_0x567193(_0x1dbf74);});},'afterCreate':function(_0x1a180b,_0x289467,_0x4c1c0e){var _0x546ef8=getUserApplications(_0x1a180b,_0x1a180b[_0x0a9e('0x28')]);if(_0x1a180b[_0x0a9e('0x28')]!=_0x1a180b['name']){_0x546ef8=_0x546ef8[_0x0a9e('0x37')](getUserApplications(_0x1a180b,_0x1a180b[_0x0a9e('0x14')]));}return Promise[_0x0a9e('0x30')]()[_0x0a9e('0x27')](function(){if(!_0x1a180b['userSetting']){return _0x1a180b['createUserSetting']({'clientSideLoggingLevel':_0x0a9e('0x38'),'clientSideLoggingEnabled':![]});}})[_0x0a9e('0x27')](function(){return _0x563b45['VoiceExtension'][_0x0a9e('0x39')](_0x546ef8);})[_0x0a9e('0x27')](function(){if(_0x1a180b[_0x0a9e('0xc')]){return getChanSpyPromise(_0x563b45,_0x1a180b);}})['then'](function(_0x316c8f){if(_0x316c8f&&_0x316c8f[_0x0a9e('0x6')]){return _0x563b45[_0x0a9e('0x3a')][_0x0a9e('0x39')](_0x316c8f);}})[_0x0a9e('0x27')](function(){_0x4c1c0e();})[_0x0a9e('0x29')](function(_0x2881b3){_0x4c1c0e(_0x2881b3);});},'afterUpdate':function(_0x45a9b8,_0x23b089,_0x3da2cd){return BPromise[_0x0a9e('0x30')]()[_0x0a9e('0x27')](function(){if(_0x45a9b8[_0x0a9e('0x35')](_0x0a9e('0xc'))||_0x45a9b8[_0x0a9e('0x35')]('context')){return _0x563b45['VoiceExtension'][_0x0a9e('0x3b')]({'where':{'UserId':_0x45a9b8['id'],'type':_0x0a9e('0x3c'),'ChanSpyId':{'$ne':null}}})[_0x0a9e('0x27')](function(){if(_0x45a9b8[_0x0a9e('0xc')]){return getChanSpyPromise(_0x563b45,_0x45a9b8)[_0x0a9e('0x27')](function(_0xc9a702){if(_0xc9a702&&_0xc9a702[_0x0a9e('0x6')]){return _0x563b45[_0x0a9e('0x3a')][_0x0a9e('0x39')](_0xc9a702);}});}});}})[_0x0a9e('0x27')](function(){if(_0x45a9b8[_0x0a9e('0x35')](_0x0a9e('0x1d'))||_0x45a9b8['changed'](_0x0a9e('0x7'))){return _0x563b45[_0x0a9e('0x3a')][_0x0a9e('0x3b')]({'where':{'UserId':_0x45a9b8['id'],'type':_0x0a9e('0x3c'),'ChanSpyId':null}})[_0x0a9e('0x27')](function(){var _0xbe9d19=getUserApplications(_0x45a9b8,_0x45a9b8[_0x0a9e('0x28')]);if(_0x45a9b8[_0x0a9e('0x28')]!=_0x45a9b8['name']){_0xbe9d19=_0xbe9d19[_0x0a9e('0x37')](getUserApplications(_0x45a9b8,_0x45a9b8['name']));}return _0x563b45[_0x0a9e('0x3a')][_0x0a9e('0x39')](_0xbe9d19);});}})[_0x0a9e('0x27')](function(){_0x3da2cd();})['catch'](function(_0x14bec2){_0x3da2cd(_0x14bec2);});},'afterDestroy':function(_0x7f6eb1,_0x4774f4){return _0x563b45[_0x0a9e('0x3a')][_0x0a9e('0x3b')]({'where':{'UserId':_0x7f6eb1['id'],'type':_0x0a9e('0x3c')},'transaction':_0x4774f4[_0x0a9e('0x3d')]});}},'instanceMethods':{'authenticate':function(_0x5bbcde,_0x13f44d){if(!_0x13f44d){return this[_0x0a9e('0x13')]===this[_0x0a9e('0x3e')](_0x5bbcde);}var _0x16f976=this;this[_0x0a9e('0x3e')](_0x5bbcde,function(_0x992c77,_0x6054ee){if(_0x992c77){_0x13f44d(_0x992c77);}if(_0x16f976[_0x0a9e('0x13')]===_0x6054ee){_0x13f44d(null,!![]);}else{_0x13f44d(null,![]);}});},'makeSalt':function(_0x34febd,_0x58a5c2){var _0xe401a=0x10;if(typeof arguments[0x0]===_0x0a9e('0x3f')){_0x58a5c2=arguments[0x0];_0x34febd=_0xe401a;}else if(typeof arguments[0x1]==='function'){_0x58a5c2=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x34febd){_0x34febd=_0xe401a;}return crypto['randomBytes'](_0x34febd,function(_0x1adfee,_0x4317e3){if(_0x1adfee){_0x58a5c2(_0x1adfee);}return _0x58a5c2(null,_0x4317e3[_0x0a9e('0x40')](_0x0a9e('0x41')));});},'encryptPassword':function(_0x61bb17,_0x30decb){if(!_0x61bb17||!this[_0x0a9e('0x42')]){return _0x30decb?_0x30decb(null):null;}var _0x375c18=0x2710;var _0x5d38ae=0x40;var _0x4b1b9f=Buffer['from'](this[_0x0a9e('0x42')],_0x0a9e('0x41'));if(!_0x30decb){return crypto[_0x0a9e('0x43')](_0x61bb17,_0x4b1b9f,_0x375c18,_0x5d38ae,'sha1')[_0x0a9e('0x40')](_0x0a9e('0x41'));}return crypto['pbkdf2'](_0x61bb17,_0x4b1b9f,_0x375c18,_0x5d38ae,'sha1',function(_0x2ef381,_0x59c6ff){if(_0x2ef381){_0x30decb(_0x2ef381);}return _0x30decb(null,_0x59c6ff[_0x0a9e('0x40')]('base64'));});},'updatePassword':function(_0x2e5e62){if(!this[_0x0a9e('0x13')]){return _0x2e5e62(null);}if(!validatePresenceOf(this[_0x0a9e('0x13')])&&authTypes['indexOf'](this[_0x0a9e('0x44')])===-0x1){_0x2e5e62(new Error(_0x0a9e('0x45')));}var _0x508b47=this;this['makeSalt'](function(_0x128aa6,_0x3aedd0){if(_0x128aa6){return _0x2e5e62(_0x128aa6);}_0x508b47['salt']=_0x3aedd0;_0x508b47[_0x0a9e('0x3e')](_0x508b47['password'],function(_0x211ef9,_0x523cd2){if(_0x211ef9){_0x2e5e62(_0x211ef9);}_0x508b47[_0x0a9e('0x13')]=_0x523cd2;_0x2e5e62(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+':asterisk:'+this[_0x0a9e('0x13')]);return this['md5secret'];},'getRealtimeData':function(){var _0x2f7092={'id':this['id']};var _0x65432=jayson[_0x0a9e('0x46')][_0x0a9e('0x47')]({'port':0x232a});var _0x232830=jayson[_0x0a9e('0x46')][_0x0a9e('0x47')]({'port':0x232c});var _0x28d814={};var _0x4e67ab={};return _0x65432[_0x0a9e('0x48')](_0x0a9e('0x49'),_0x2f7092)[_0x0a9e('0x27')](function(_0x30c491){if(_0x30c491[_0x0a9e('0x38')]){throw new Error(_0x0a9e('0x4a'));}_0x28d814=_0x30c491['result'];return _0x232830[_0x0a9e('0x48')](_0x0a9e('0x49'),_0x2f7092);})['then'](function(_0x3649cc){if(_0x3649cc['error']){throw new Error(_0x0a9e('0x4b'));}_0x4e67ab=_0x3649cc['result'];var _0x4b3c1a=_['merge']({},_0x28d814,_0x4e67ab);return _0x4b3c1a;})[_0x0a9e('0x29')](function(_0x49d231){throw _0x49d231;});},'unpause':function(_0x2244d6,_0x1fc70e=_0x0a9e('0x4c')){var _0x7be420=this;var _0x1cca9f={};return Promise[_0x0a9e('0x30')]()['then'](function(){if(!_0x2244d6||_0x2244d6===_0x0a9e('0x4d')&&_0x1fc70e==='manual'){var _0xca4ade=jayson[_0x0a9e('0x46')][_0x0a9e('0x47')]({'port':0x232a});return _0xca4ade['request'](_0x0a9e('0x4e'),{'id':_0x7be420['id'],'name':_0x7be420[_0x0a9e('0x14')],'pause':![]})[_0x0a9e('0x27')](function(_0x32e134){if(_0x32e134['error']){throw new Error(util[_0x0a9e('0x8')](_0x0a9e('0x4f'),_0x7be420['id'],_0x7be420['name']));}return _0x32e134[_0x0a9e('0x50')][_0x0a9e('0x51')];});}})[_0x0a9e('0x27')](function(){if(!_0x2244d6||_0x2244d6===_0x0a9e('0x4d')){return _0x563b45[_0x0a9e('0x52')]['update']({'paused':0x0},{'where':{'UserId':_0x7be420['id']},'individualHooks':!![]});}})[_0x0a9e('0x27')](function(){var _0x2937e0=!_0x2244d6?_0x0a9e('0x26'):'findOne';var _0x3528b7={'membername':_0x7be420['name'],'type':'PAUSE','exitAt':null};if(_0x2244d6){_0x3528b7[_0x0a9e('0x53')]=_0x2244d6;}return _0x563b45[_0x0a9e('0x54')][_0x2937e0]({'where':_0x3528b7});})[_0x0a9e('0x27')](function(_0x19c995){if(_0x19c995){var _0x186f39=Array[_0x0a9e('0x55')](_0x19c995)?_0x19c995:[_0x19c995];var _0x387489=_0x186f39[_0x0a9e('0x56')](function(_0x2d7205){return _0x2d7205[_0x0a9e('0x57')]({'exitAt':moment()[_0x0a9e('0x8')](_0x0a9e('0x58')),'data2':_0x1fc70e});});return Promise[_0x0a9e('0x59')](_0x387489);}})[_0x0a9e('0x27')](function(){if(!_0x2244d6){_0x1cca9f[_0x0a9e('0x5a')]=![];_0x1cca9f[_0x0a9e('0x5b')]=![];_0x1cca9f[_0x0a9e('0x5c')]=![];_0x1cca9f[_0x0a9e('0x5d')]=![];_0x1cca9f['smsPause']=![];_0x1cca9f[_0x0a9e('0x5e')]=![];_0x1cca9f[_0x0a9e('0x5f')]=![];}else{_0x1cca9f[_0x2244d6+_0x0a9e('0x60')]=![];}return _0x7be420['getRealtimeData']();})[_0x0a9e('0x27')](function(_0x30944e){var _0x4b341d=require(_0x0a9e('0x61'));var _0x56e31e=_0x4b341d[_0x0a9e('0x62')]();_0x56e31e[_0x0a9e('0x63')](function(_0x13b5c0){var _0x4a43a8=_0x13b5c0+'Status';_0x7be420['setDataValue']([_0x4a43a8],_0x30944e[_0x4a43a8]);});return _0x7be420[_0x0a9e('0x57')](_0x1cca9f);})[_0x0a9e('0x29')](function(_0x1104ad){throw _0x1104ad;});}}});};
\ No newline at end of file
index aa0aab1..a2aefbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f1f=['PAUSE','body','type','uniqueid','bulkCreate','DEFAULT\x20PAUSE','UnpauseUser','resolve','isValidChannel','channel','findOne','online','voicePause','chatPause','faxPause','openchannelPause','lastPauseAt','unpause','system','all','LoginUser','mobile','phone','loginInPause','count','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','UserVoiceQueueRt','destroy','upsert','UserVoiceQueue.penalty','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','register','User','raw','options','attributes','include','map','model','then','info','GetUser','debug','stringify','catch','error','message','ShowUser','find','where','PauseUser','role','internal','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','update','MemberReport','findAll','name','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','getChannels','forEach','push','SIP/%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1f1f,0x122));var _0xf1f1=function(_0x14a0a0,_0x45d0cf){_0x14a0a0=_0x14a0a0-0x0;var _0x56b651=_0x1f1f[_0x14a0a0];return _0x56b651;};'use strict';var _=require(_0xf1f1('0x0'));var util=require(_0xf1f1('0x1'));var moment=require(_0xf1f1('0x2'));var BPromise=require(_0xf1f1('0x3'));var Redis=require(_0xf1f1('0x4'));var db=require(_0xf1f1('0x5'))['db'];var utils=require(_0xf1f1('0x6'));var logger=require(_0xf1f1('0x7'))(_0xf1f1('0x8'));var config=require(_0xf1f1('0x9'));config[_0xf1f1('0xa')]=_[_0xf1f1('0xb')](config[_0xf1f1('0xa')],{'host':_0xf1f1('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf1f1('0xa')]));require('./user.socket')[_0xf1f1('0xd')](socket);exports['GetUser']=function(_0x4a7b23){var _0x499425=this;return new Promise(function(_0x32ac12,_0x14c0bf){return db[_0xf1f1('0xe')]['findAll']({'raw':_0x4a7b23['options']?_0x4a7b23['options'][_0xf1f1('0xf')]===undefined?!![]:![]:!![],'where':_0x4a7b23[_0xf1f1('0x10')]?_0x4a7b23['options']['where']||null:null,'attributes':_0x4a7b23[_0xf1f1('0x10')]?_0x4a7b23['options'][_0xf1f1('0x11')]||null:null,'limit':_0x4a7b23[_0xf1f1('0x10')]?_0x4a7b23['options']['limit']||null:null,'include':_0x4a7b23['options']?_0x4a7b23[_0xf1f1('0x10')][_0xf1f1('0x12')]?_['map'](_0x4a7b23[_0xf1f1('0x10')][_0xf1f1('0x12')],function(_0x203477){return{'model':db[_0x203477['model']],'as':_0x203477['as'],'attributes':_0x203477[_0xf1f1('0x11')],'include':_0x203477[_0xf1f1('0x12')]?_[_0xf1f1('0x13')](_0x203477[_0xf1f1('0x12')],function(_0x1557ab){return{'model':db[_0x1557ab[_0xf1f1('0x14')]],'as':_0x1557ab['as'],'attributes':_0x1557ab['attributes'],'include':_0x1557ab[_0xf1f1('0x12')]?_['map'](_0x1557ab[_0xf1f1('0x12')],function(_0x13f890){return{'model':db[_0x13f890[_0xf1f1('0x14')]],'as':_0x13f890['as'],'attributes':_0x13f890[_0xf1f1('0x11')]};}):[]};}):[]};}):[]:[]})[_0xf1f1('0x15')](function(_0x29b7a9){logger[_0xf1f1('0x16')](_0xf1f1('0x17'),_0x4a7b23);logger[_0xf1f1('0x18')](_0xf1f1('0x17'),_0x4a7b23,JSON[_0xf1f1('0x19')](_0x29b7a9));_0x32ac12(_0x29b7a9);})[_0xf1f1('0x1a')](function(_0xda6e9){logger[_0xf1f1('0x1b')](_0xf1f1('0x17'),_0xda6e9[_0xf1f1('0x1c')],_0x4a7b23);_0x14c0bf(_0x499425[_0xf1f1('0x1b')](0x1f4,_0xda6e9[_0xf1f1('0x1c')]));});});};exports[_0xf1f1('0x1d')]=function(_0x377c6e){var _0x4fe9a9=this;return new Promise(function(_0x44a30f,_0x22a3fa){return db[_0xf1f1('0xe')][_0xf1f1('0x1e')]({'raw':_0x377c6e[_0xf1f1('0x10')]?_0x377c6e[_0xf1f1('0x10')][_0xf1f1('0xf')]===undefined?!![]:![]:!![],'where':_0x377c6e[_0xf1f1('0x10')]?_0x377c6e['options'][_0xf1f1('0x1f')]||null:null,'attributes':_0x377c6e['options']?_0x377c6e[_0xf1f1('0x10')]['attributes']||null:null,'include':_0x377c6e['options']?_0x377c6e['options']['include']?_[_0xf1f1('0x13')](_0x377c6e['options'][_0xf1f1('0x12')],function(_0x14f774){return{'model':db[_0x14f774[_0xf1f1('0x14')]],'as':_0x14f774['as'],'attributes':_0x14f774[_0xf1f1('0x11')],'include':_0x14f774[_0xf1f1('0x12')]?_[_0xf1f1('0x13')](_0x14f774[_0xf1f1('0x12')],function(_0x326ca0){return{'model':db[_0x326ca0[_0xf1f1('0x14')]],'as':_0x326ca0['as'],'attributes':_0x326ca0['attributes'],'include':_0x326ca0[_0xf1f1('0x12')]?_[_0xf1f1('0x13')](_0x326ca0[_0xf1f1('0x12')],function(_0x2c7d68){return{'model':db[_0x2c7d68['model']],'as':_0x2c7d68['as'],'attributes':_0x2c7d68['attributes']};}):[]};}):[]};}):[]:[]})[_0xf1f1('0x15')](function(_0x451c70){logger[_0xf1f1('0x16')](_0xf1f1('0x1d'),_0x377c6e);logger[_0xf1f1('0x18')](_0xf1f1('0x1d'),_0x377c6e,JSON[_0xf1f1('0x19')](_0x451c70));_0x44a30f(_0x451c70);})[_0xf1f1('0x1a')](function(_0x2d1b8a){logger[_0xf1f1('0x1b')]('ShowUser',_0x2d1b8a[_0xf1f1('0x1c')],_0x377c6e);_0x22a3fa(_0x4fe9a9['error'](0x1f4,_0x2d1b8a[_0xf1f1('0x1c')]));});});};exports[_0xf1f1('0x20')]=function(_0x11dda0){var _0x179786;return db[_0xf1f1('0xe')][_0xf1f1('0x1e')]({'where':_0x11dda0[_0xf1f1('0x10')][_0xf1f1('0x1f')]||{},'attributes':['id','name',_0xf1f1('0x21'),_0xf1f1('0x22'),_0xf1f1('0x23')]})['then'](function(_0x4482de){if(!_0x4482de){throw new Error(util[_0xf1f1('0x24')](_0xf1f1('0x25'),_0x11dda0[_0xf1f1('0x26')]['id']));}_0x179786=_0x4482de;return db['UserVoiceQueueRt'][_0xf1f1('0x27')]({'paused':0x1},{'where':{'UserId':_0x179786['id']},'individualHooks':!![]});})[_0xf1f1('0x15')](function(){return db[_0xf1f1('0x28')][_0xf1f1('0x29')]({'where':{'membername':_0x179786[_0xf1f1('0x2a')],'type':'PAUSE','exitAt':null}});})[_0xf1f1('0x15')](function(_0x58caed){if(_0x58caed&&_0x58caed['length']){var _0x3a963b=moment()[_0xf1f1('0x24')](_0xf1f1('0x2b'));for(var _0x2adf9e=0x0,_0x1ede1f=_0x58caed[_0xf1f1('0x2c')];_0x2adf9e<_0x1ede1f;_0x2adf9e++){_0x58caed[_0x2adf9e][_0xf1f1('0x2d')]({'exitAt':_0x3a963b});}}})[_0xf1f1('0x15')](function(){var _0xcede79=[];var _0x1ad0d4=utils[_0xf1f1('0x2e')]();_0x1ad0d4[_0xf1f1('0x2f')](function(_0x541f95){_0xcede79[_0xf1f1('0x30')]({'channel':_0x541f95,'membername':_0x179786[_0xf1f1('0x2a')],'interface':_['isNil'](_0x179786['interface'])?util['format'](_0xf1f1('0x31'),_0x179786[_0xf1f1('0x2a')]):_0x179786[_0xf1f1('0x23')],'type':_0xf1f1('0x32'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x11dda0[_0xf1f1('0x33')][_0xf1f1('0x34')]||'DEFAULT\x20PAUSE','role':_0x179786[_0xf1f1('0x21')],'internal':_0x179786[_0xf1f1('0x22')],'uniqueid':_0x11dda0[_0xf1f1('0x33')][_0xf1f1('0x35')]||null});});return db['MemberReport'][_0xf1f1('0x36')](_0xcede79,{'individualHooks':!![]});})[_0xf1f1('0x15')](function(){return _0x179786[_0xf1f1('0x27')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x11dda0[_0xf1f1('0x33')][_0xf1f1('0x34')]||_0xf1f1('0x37'),'lastPauseAt':moment()[_0xf1f1('0x24')](_0xf1f1('0x2b'))});})[_0xf1f1('0x1a')](function(_0x4593eb){throw _0x4593eb;});};exports[_0xf1f1('0x38')]=function(_0xd56930){return Promise[_0xf1f1('0x39')]()[_0xf1f1('0x15')](function(){if(_0xd56930[_0xf1f1('0x33')]['channel']&&!utils[_0xf1f1('0x3a')](_0xd56930[_0xf1f1('0x33')][_0xf1f1('0x3b')])){throw new Error(util['format']('Channel\x20parameter\x20%s\x20is\x20invalid',_0xd56930[_0xf1f1('0x33')][_0xf1f1('0x3b')]));}return db[_0xf1f1('0xe')][_0xf1f1('0x3c')]({'where':_0xd56930[_0xf1f1('0x10')][_0xf1f1('0x1f')]||{},'attributes':['id',_0xf1f1('0x2a'),'role',_0xf1f1('0x22'),_0xf1f1('0x23'),_0xf1f1('0x3d'),_0xf1f1('0x3e'),'mailPause',_0xf1f1('0x3f'),_0xf1f1('0x40'),_0xf1f1('0x41'),'smsPause','whatsappPause','pauseType',_0xf1f1('0x42')]});})[_0xf1f1('0x15')](function(_0x58acc5){if(!_0x58acc5){throw new Error(util[_0xf1f1('0x24')]('User\x20with\x20id\x20%s\x20not\x20found',_0xd56930[_0xf1f1('0x26')]['id']));}return _0x58acc5[_0xf1f1('0x43')](_0xd56930[_0xf1f1('0x33')][_0xf1f1('0x3b')],_0xf1f1('0x44'));})['catch'](function(_0x3058d4){throw _0x3058d4;});};exports['LogoutUser']=function(_0x13a97e){var _0x57a272=this;return new Promise(function(_0x119ea2,_0x455060){var _0x11ab0f;return db[_0xf1f1('0xe')][_0xf1f1('0x3c')]({'where':_0x13a97e['options'][_0xf1f1('0x1f')]||{},'attributes':['id',_0xf1f1('0x2a')]})[_0xf1f1('0x15')](function(_0x4b2739){if(_0x4b2739){_0x11ab0f=_0x4b2739;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x11ab0f[_0xf1f1('0x2a')]},'individualHooks':!![]});}})[_0xf1f1('0x15')](function(){if(_0x11ab0f){return db[_0xf1f1('0x28')][_0xf1f1('0x29')]({'where':{'membername':_0x11ab0f['name'],'exitAt':null}});}})[_0xf1f1('0x15')](function(_0x525988){if(_0x11ab0f){if(_0x525988&&_0x525988[_0xf1f1('0x2c')]){var _0x327087=[];_0x525988[_0xf1f1('0x2f')](function(_0x4c603d){_0x327087[_0xf1f1('0x30')](_0x4c603d[_0xf1f1('0x27')]({'exitAt':moment()[_0xf1f1('0x24')](_0xf1f1('0x2b'))}));});return BPromise[_0xf1f1('0x45')](_0x327087);}}})[_0xf1f1('0x15')](function(){if(_0x11ab0f){return _0x11ab0f[_0xf1f1('0x27')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xf1f1('0x15')](function(_0x532f04){_0x119ea2(_0x532f04);})[_0xf1f1('0x1a')](function(_0x1270df){_0x455060(_0x57a272[_0xf1f1('0x1b')](0x1f4,_0x1270df[_0xf1f1('0x1c')]));});});};exports[_0xf1f1('0x46')]=function(_0xa9024b){var _0x41fd29=this;return new Promise(function(_0x15f5fe,_0x440a69){var _0x1c4699;var _0x8716be;var _0x527887;var _0x504b21;return db[_0xf1f1('0xe')][_0xf1f1('0x3c')]({'where':_0xa9024b[_0xf1f1('0x10')]['where']||{},'attributes':['id',_0xf1f1('0x2a'),_0xf1f1('0x21'),_0xf1f1('0x47'),_0xf1f1('0x48'),_0xf1f1('0x22'),_0xf1f1('0x49'),_0xf1f1('0x23')]})[_0xf1f1('0x15')](function(_0x41b273){if(_0x41b273){_0x1c4699=_0x41b273;_0x504b21=_0xa9024b['body'][_0xf1f1('0x23')]?_0xa9024b[_0xf1f1('0x33')]['interface']:util['format'](_0xf1f1('0x31'),_0x1c4699[_0xf1f1('0x2a')]);return db[_0xf1f1('0xe')][_0xf1f1('0x4a')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x1c4699['id']}}});}})[_0xf1f1('0x15')](function(_0x192945){if(_0x192945){_0x527887=_0x192945;return require('../../config/license/util')[_0xf1f1('0x4b')]();}})[_0xf1f1('0x15')](function(_0x59fe38){if(_0x59fe38&&_0x59fe38[_0xf1f1('0x4c')]&&_0x527887>=_0x59fe38[_0xf1f1('0x4c')]){throw new Error(_0xf1f1('0x4d'));}})['then'](function(){if(_0x1c4699){return db[_0xf1f1('0x4e')][_0xf1f1('0x4f')]({'where':{'membername':_0x1c4699[_0xf1f1('0x2a')]},'individualHooks':!![]});}})[_0xf1f1('0x15')](function(){if(_0x1c4699){return _0x1c4699['getVoiceQueues']({'raw':!![]});}})[_0xf1f1('0x15')](function(_0x197bf6){if(_0x1c4699){if(_0x197bf6){var _0x1d5f61=[];_0x8716be=_0x197bf6;if(_0x8716be['length']){for(var _0x2b6348=0x0;_0x2b6348<_0x8716be['length'];_0x2b6348++){_0x1d5f61[_0xf1f1('0x30')](db[_0xf1f1('0x4e')][_0xf1f1('0x50')]({'membername':_0x1c4699['name'],'UserId':_0x1c4699['id'],'queue_name':_0x8716be[_0x2b6348][_0xf1f1('0x2a')],'VoiceQueueId':_0x8716be[_0x2b6348]['id'],'interface':_0x504b21,'paused':_0x1c4699['loginInPause']||![],'penalty':_0x8716be[_0x2b6348][_0xf1f1('0x51')]||0x0}));}return BPromise[_0xf1f1('0x45')](_0x1d5f61);}}}})[_0xf1f1('0x15')](function(){if(_0x1c4699){return db[_0xf1f1('0x28')]['findAll']({'where':{'membername':_0x1c4699[_0xf1f1('0x2a')],'exitAt':null}});}})[_0xf1f1('0x15')](function(_0xaeb336){if(_0x1c4699){if(_0xaeb336&&_0xaeb336['length']){var _0x31e1d7=[];_0xaeb336[_0xf1f1('0x2f')](function(_0x5bacb1){_0x31e1d7[_0xf1f1('0x30')](_0x5bacb1[_0xf1f1('0x27')]({'exitAt':moment()[_0xf1f1('0x24')](_0xf1f1('0x2b'))}));});return BPromise[_0xf1f1('0x45')](_0x31e1d7);}}})[_0xf1f1('0x15')](function(){if(_0x1c4699){var _0x37190d=[];var _0x23a807=[];var _0x39eaa5=utils[_0xf1f1('0x2e')]();var _0x910c01={'membername':_0x1c4699[_0xf1f1('0x2a')],'interface':_0x504b21,'enterAt':moment()['format'](_0xf1f1('0x2b')),'role':_0x1c4699['role'],'internal':_0x1c4699['internal']};_0x39eaa5[_0xf1f1('0x2f')](function(_0x4a0673){_0x37190d[_0xf1f1('0x30')](_['merge']({'channel':_0x4a0673,'type':'LOGIN','data1':_0xf1f1('0x52'),'data2':_0x504b21},_0x910c01));if(_0x1c4699[_0xf1f1('0x49')]){_0x23a807[_0xf1f1('0x30')](_['merge']({'channel':_0x4a0673,'type':'PAUSE','data1':_0xf1f1('0x53')},_0x910c01));}});return db[_0xf1f1('0x28')][_0xf1f1('0x36')](_0x37190d[_0xf1f1('0x54')](_0x23a807),{'individualHooks':!![]});}})[_0xf1f1('0x15')](function(){if(_0x1c4699){return _0x1c4699[_0xf1f1('0x27')]({'online':!![],'lastLoginAt':moment()[_0xf1f1('0x24')](_0xf1f1('0x2b')),'voicePause':_0x1c4699[_0xf1f1('0x49')]||![],'mailPause':_0x1c4699[_0xf1f1('0x49')]||![],'chatPause':_0x1c4699['loginInPause']||![],'faxPause':_0x1c4699['loginInPause']||![],'smsPause':_0x1c4699[_0xf1f1('0x49')]||![],'openchannelPause':_0x1c4699['loginInPause']||![],'pauseType':_0x1c4699['loginInPause']?'LOGININPAUSE':null,'lastPauseAt':moment()[_0xf1f1('0x24')](_0xf1f1('0x2b')),'interface':_0x504b21});}})['then'](function(_0x30cbb8){_0x15f5fe(_0x30cbb8);})[_0xf1f1('0x1a')](function(_0x321e3e){_0x440a69(_0x41fd29['error'](0x1f4,_0x321e3e['message']));});});};
\ No newline at end of file
+var _0xac65=['bulkCreate','update','UnpauseUser','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','system','LogoutUser','forEach','push','all','mobile','phone','count','agent','../../config/license/util','agents','getVoiceQueues','loginInPause','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','register','User','options','raw','where','attributes','limit','include','map','model','then','debug','GetUser','catch','error','message','ShowUser','find','info','stringify','PauseUser','name','role','interface','format','params','UserVoiceQueueRt','MemberReport','findAll','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','SIP/%s','PAUSE','body','type','internal'];(function(_0x46f1a6,_0xc7a582){var _0x38429a=function(_0x31adae){while(--_0x31adae){_0x46f1a6['push'](_0x46f1a6['shift']());}};_0x38429a(++_0xc7a582);}(_0xac65,0xca));var _0x5ac6=function(_0x36e4e4,_0x2e8f74){_0x36e4e4=_0x36e4e4-0x0;var _0x5cb95f=_0xac65[_0x36e4e4];return _0x5cb95f;};'use strict';var _=require(_0x5ac6('0x0'));var util=require(_0x5ac6('0x1'));var moment=require(_0x5ac6('0x2'));var BPromise=require(_0x5ac6('0x3'));var Redis=require(_0x5ac6('0x4'));var db=require(_0x5ac6('0x5'))['db'];var utils=require(_0x5ac6('0x6'));var logger=require(_0x5ac6('0x7'))(_0x5ac6('0x8'));var config=require(_0x5ac6('0x9'));config[_0x5ac6('0xa')]=_[_0x5ac6('0xb')](config[_0x5ac6('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./user.socket')[_0x5ac6('0xc')](socket);exports['GetUser']=function(_0x118b4a){var _0x20417d=this;return new Promise(function(_0x1857c3,_0x4f4ff4){return db[_0x5ac6('0xd')]['findAll']({'raw':_0x118b4a[_0x5ac6('0xe')]?_0x118b4a[_0x5ac6('0xe')][_0x5ac6('0xf')]===undefined?!![]:![]:!![],'where':_0x118b4a[_0x5ac6('0xe')]?_0x118b4a['options'][_0x5ac6('0x10')]||null:null,'attributes':_0x118b4a[_0x5ac6('0xe')]?_0x118b4a[_0x5ac6('0xe')][_0x5ac6('0x11')]||null:null,'limit':_0x118b4a['options']?_0x118b4a['options'][_0x5ac6('0x12')]||null:null,'include':_0x118b4a[_0x5ac6('0xe')]?_0x118b4a['options'][_0x5ac6('0x13')]?_[_0x5ac6('0x14')](_0x118b4a[_0x5ac6('0xe')]['include'],function(_0x6f02a9){return{'model':db[_0x6f02a9[_0x5ac6('0x15')]],'as':_0x6f02a9['as'],'attributes':_0x6f02a9[_0x5ac6('0x11')],'include':_0x6f02a9['include']?_[_0x5ac6('0x14')](_0x6f02a9['include'],function(_0x2b7cfc){return{'model':db[_0x2b7cfc[_0x5ac6('0x15')]],'as':_0x2b7cfc['as'],'attributes':_0x2b7cfc[_0x5ac6('0x11')],'include':_0x2b7cfc['include']?_[_0x5ac6('0x14')](_0x2b7cfc[_0x5ac6('0x13')],function(_0x323ff1){return{'model':db[_0x323ff1[_0x5ac6('0x15')]],'as':_0x323ff1['as'],'attributes':_0x323ff1['attributes']};}):[]};}):[]};}):[]:[]})[_0x5ac6('0x16')](function(_0x2b793c){logger['info']('GetUser',_0x118b4a);logger[_0x5ac6('0x17')](_0x5ac6('0x18'),_0x118b4a,JSON['stringify'](_0x2b793c));_0x1857c3(_0x2b793c);})[_0x5ac6('0x19')](function(_0x20c3e3){logger[_0x5ac6('0x1a')](_0x5ac6('0x18'),_0x20c3e3[_0x5ac6('0x1b')],_0x118b4a);_0x4f4ff4(_0x20417d[_0x5ac6('0x1a')](0x1f4,_0x20c3e3['message']));});});};exports[_0x5ac6('0x1c')]=function(_0x3ff818){var _0x28afb4=this;return new Promise(function(_0x34cd18,_0x272673){return db['User'][_0x5ac6('0x1d')]({'raw':_0x3ff818[_0x5ac6('0xe')]?_0x3ff818['options']['raw']===undefined?!![]:![]:!![],'where':_0x3ff818['options']?_0x3ff818['options'][_0x5ac6('0x10')]||null:null,'attributes':_0x3ff818['options']?_0x3ff818[_0x5ac6('0xe')]['attributes']||null:null,'include':_0x3ff818['options']?_0x3ff818[_0x5ac6('0xe')]['include']?_[_0x5ac6('0x14')](_0x3ff818[_0x5ac6('0xe')]['include'],function(_0x4f7424){return{'model':db[_0x4f7424[_0x5ac6('0x15')]],'as':_0x4f7424['as'],'attributes':_0x4f7424['attributes'],'include':_0x4f7424['include']?_[_0x5ac6('0x14')](_0x4f7424[_0x5ac6('0x13')],function(_0x561668){return{'model':db[_0x561668[_0x5ac6('0x15')]],'as':_0x561668['as'],'attributes':_0x561668[_0x5ac6('0x11')],'include':_0x561668[_0x5ac6('0x13')]?_[_0x5ac6('0x14')](_0x561668[_0x5ac6('0x13')],function(_0x2bdc07){return{'model':db[_0x2bdc07['model']],'as':_0x2bdc07['as'],'attributes':_0x2bdc07['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e3044){logger[_0x5ac6('0x1e')]('ShowUser',_0x3ff818);logger['debug']('ShowUser',_0x3ff818,JSON[_0x5ac6('0x1f')](_0x1e3044));_0x34cd18(_0x1e3044);})[_0x5ac6('0x19')](function(_0x9c9d84){logger['error']('ShowUser',_0x9c9d84[_0x5ac6('0x1b')],_0x3ff818);_0x272673(_0x28afb4[_0x5ac6('0x1a')](0x1f4,_0x9c9d84[_0x5ac6('0x1b')]));});});};exports[_0x5ac6('0x20')]=function(_0x26442c){var _0x54c597;return db[_0x5ac6('0xd')][_0x5ac6('0x1d')]({'where':_0x26442c[_0x5ac6('0xe')]['where']||{},'attributes':['id',_0x5ac6('0x21'),_0x5ac6('0x22'),'internal',_0x5ac6('0x23')]})[_0x5ac6('0x16')](function(_0x190358){if(!_0x190358){throw new Error(util[_0x5ac6('0x24')]('User\x20with\x20id\x20%s\x20not\x20found',_0x26442c[_0x5ac6('0x25')]['id']));}_0x54c597=_0x190358;return db[_0x5ac6('0x26')]['update']({'paused':0x1},{'where':{'UserId':_0x54c597['id']},'individualHooks':!![]});})[_0x5ac6('0x16')](function(){return db[_0x5ac6('0x27')][_0x5ac6('0x28')]({'where':{'membername':_0x54c597['name'],'type':'PAUSE','exitAt':null}});})[_0x5ac6('0x16')](function(_0x5b9b52){if(_0x5b9b52&&_0x5b9b52[_0x5ac6('0x29')]){var _0x15197d=moment()[_0x5ac6('0x24')](_0x5ac6('0x2a'));for(var _0x3db4a9=0x0,_0x16941a=_0x5b9b52[_0x5ac6('0x29')];_0x3db4a9<_0x16941a;_0x3db4a9++){_0x5b9b52[_0x3db4a9][_0x5ac6('0x2b')]({'exitAt':_0x15197d});}}})[_0x5ac6('0x16')](function(){var _0x43af0c=[];var _0xc8b4f9=utils[_0x5ac6('0x2c')]();_0xc8b4f9['forEach'](function(_0x3ea854){_0x43af0c['push']({'channel':_0x3ea854,'membername':_0x54c597[_0x5ac6('0x21')],'interface':_['isNil'](_0x54c597['interface'])?util[_0x5ac6('0x24')](_0x5ac6('0x2d'),_0x54c597['name']):_0x54c597['interface'],'type':_0x5ac6('0x2e'),'enterAt':moment()['format'](_0x5ac6('0x2a')),'data1':_0x26442c[_0x5ac6('0x2f')][_0x5ac6('0x30')]||'DEFAULT\x20PAUSE','role':_0x54c597[_0x5ac6('0x22')],'internal':_0x54c597[_0x5ac6('0x31')],'uniqueid':_0x26442c[_0x5ac6('0x2f')]['uniqueid']||null});});return db[_0x5ac6('0x27')][_0x5ac6('0x32')](_0x43af0c,{'individualHooks':!![]});})[_0x5ac6('0x16')](function(){return _0x54c597[_0x5ac6('0x33')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x26442c['body'][_0x5ac6('0x30')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x5ac6('0x24')](_0x5ac6('0x2a'))});})['catch'](function(_0x17f377){throw _0x17f377;});};exports[_0x5ac6('0x34')]=function(_0x253941){return Promise['resolve']()[_0x5ac6('0x16')](function(){if(_0x253941[_0x5ac6('0x2f')][_0x5ac6('0x35')]&&!utils[_0x5ac6('0x36')](_0x253941[_0x5ac6('0x2f')][_0x5ac6('0x35')])){throw new Error(util[_0x5ac6('0x24')](_0x5ac6('0x37'),_0x253941[_0x5ac6('0x2f')][_0x5ac6('0x35')]));}return db['User'][_0x5ac6('0x38')]({'where':_0x253941[_0x5ac6('0xe')]['where']||{},'attributes':['id',_0x5ac6('0x21'),'role',_0x5ac6('0x31'),_0x5ac6('0x23'),_0x5ac6('0x39'),'voicePause',_0x5ac6('0x3a'),_0x5ac6('0x3b'),_0x5ac6('0x3c'),_0x5ac6('0x3d'),_0x5ac6('0x3e'),_0x5ac6('0x3f'),_0x5ac6('0x40'),'lastPauseAt']});})[_0x5ac6('0x16')](function(_0x2b84e3){if(!_0x2b84e3){throw new Error(util['format'](_0x5ac6('0x41'),_0x253941[_0x5ac6('0x25')]['id']));}return _0x2b84e3['unpause'](_0x253941[_0x5ac6('0x2f')]['channel'],_0x5ac6('0x42'));})[_0x5ac6('0x19')](function(_0x4073bd){throw _0x4073bd;});};exports[_0x5ac6('0x43')]=function(_0x800d23){var _0x3cda9b=this;return new Promise(function(_0x72cb5e,_0x2b03cc){var _0x477cb1;return db['User'][_0x5ac6('0x38')]({'where':_0x800d23[_0x5ac6('0xe')]['where']||{},'attributes':['id','name']})[_0x5ac6('0x16')](function(_0xc69fa6){if(_0xc69fa6){_0x477cb1=_0xc69fa6;return db[_0x5ac6('0x26')]['destroy']({'where':{'membername':_0x477cb1[_0x5ac6('0x21')]},'individualHooks':!![]});}})[_0x5ac6('0x16')](function(){if(_0x477cb1){return db[_0x5ac6('0x27')][_0x5ac6('0x28')]({'where':{'membername':_0x477cb1['name'],'exitAt':null}});}})['then'](function(_0x4e3d1b){if(_0x477cb1){if(_0x4e3d1b&&_0x4e3d1b[_0x5ac6('0x29')]){var _0x39898a=[];_0x4e3d1b[_0x5ac6('0x44')](function(_0xf1621f){_0x39898a[_0x5ac6('0x45')](_0xf1621f[_0x5ac6('0x33')]({'exitAt':moment()[_0x5ac6('0x24')](_0x5ac6('0x2a'))}));});return BPromise[_0x5ac6('0x46')](_0x39898a);}}})[_0x5ac6('0x16')](function(){if(_0x477cb1){return _0x477cb1[_0x5ac6('0x33')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x5ac6('0x16')](function(_0xe3eb17){_0x72cb5e(_0xe3eb17);})['catch'](function(_0x14d874){_0x2b03cc(_0x3cda9b[_0x5ac6('0x1a')](0x1f4,_0x14d874[_0x5ac6('0x1b')]));});});};exports['LoginUser']=function(_0x10f775){var _0x5b63bf=this;return new Promise(function(_0x5c6075,_0x569610){var _0x30f541;var _0x353973;var _0x42c683;var _0x371f94;return db[_0x5ac6('0xd')][_0x5ac6('0x38')]({'where':_0x10f775[_0x5ac6('0xe')][_0x5ac6('0x10')]||{},'attributes':['id',_0x5ac6('0x21'),_0x5ac6('0x22'),_0x5ac6('0x47'),_0x5ac6('0x48'),_0x5ac6('0x31'),'loginInPause',_0x5ac6('0x23')]})[_0x5ac6('0x16')](function(_0x264791){if(_0x264791){_0x30f541=_0x264791;_0x371f94=_0x10f775[_0x5ac6('0x2f')][_0x5ac6('0x23')]?_0x10f775['body'][_0x5ac6('0x23')]:util[_0x5ac6('0x24')]('SIP/%s',_0x30f541['name']);return db[_0x5ac6('0xd')][_0x5ac6('0x49')]({'where':{'role':_0x5ac6('0x4a'),'online':!![],'id':{'$ne':_0x30f541['id']}}});}})['then'](function(_0x179271){if(_0x179271){_0x42c683=_0x179271;return require(_0x5ac6('0x4b'))['getLicense']();}})['then'](function(_0x3594ec){if(_0x3594ec&&_0x3594ec[_0x5ac6('0x4c')]&&_0x42c683>=_0x3594ec[_0x5ac6('0x4c')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x5ac6('0x16')](function(){if(_0x30f541){return db[_0x5ac6('0x26')]['destroy']({'where':{'membername':_0x30f541[_0x5ac6('0x21')]},'individualHooks':!![]});}})[_0x5ac6('0x16')](function(){if(_0x30f541){return _0x30f541[_0x5ac6('0x4d')]({'raw':!![]});}})[_0x5ac6('0x16')](function(_0x3bd02b){if(_0x30f541){if(_0x3bd02b){var _0xbeb0b8=[];_0x353973=_0x3bd02b;if(_0x353973['length']){for(var _0x2f0c0b=0x0;_0x2f0c0b<_0x353973[_0x5ac6('0x29')];_0x2f0c0b++){_0xbeb0b8[_0x5ac6('0x45')](db[_0x5ac6('0x26')]['upsert']({'membername':_0x30f541[_0x5ac6('0x21')],'UserId':_0x30f541['id'],'queue_name':_0x353973[_0x2f0c0b]['name'],'VoiceQueueId':_0x353973[_0x2f0c0b]['id'],'interface':_0x371f94,'paused':_0x30f541[_0x5ac6('0x4e')]||![],'penalty':_0x353973[_0x2f0c0b][_0x5ac6('0x4f')]||0x0}));}return BPromise[_0x5ac6('0x46')](_0xbeb0b8);}}}})[_0x5ac6('0x16')](function(){if(_0x30f541){return db[_0x5ac6('0x27')][_0x5ac6('0x28')]({'where':{'membername':_0x30f541[_0x5ac6('0x21')],'exitAt':null}});}})['then'](function(_0x5bb627){if(_0x30f541){if(_0x5bb627&&_0x5bb627['length']){var _0x132f78=[];_0x5bb627[_0x5ac6('0x44')](function(_0x573877){_0x132f78[_0x5ac6('0x45')](_0x573877[_0x5ac6('0x33')]({'exitAt':moment()[_0x5ac6('0x24')](_0x5ac6('0x2a'))}));});return BPromise[_0x5ac6('0x46')](_0x132f78);}}})[_0x5ac6('0x16')](function(){if(_0x30f541){var _0x2dde41=[];var _0x17593a=[];var _0x566530=utils[_0x5ac6('0x2c')]();var _0x239ff7={'membername':_0x30f541[_0x5ac6('0x21')],'interface':_0x371f94,'enterAt':moment()[_0x5ac6('0x24')](_0x5ac6('0x2a')),'role':_0x30f541[_0x5ac6('0x22')],'internal':_0x30f541[_0x5ac6('0x31')]};_0x566530[_0x5ac6('0x44')](function(_0x53fba4){_0x2dde41[_0x5ac6('0x45')](_[_0x5ac6('0x50')]({'channel':_0x53fba4,'type':_0x5ac6('0x51'),'data1':_0x5ac6('0x52'),'data2':_0x371f94},_0x239ff7));if(_0x30f541[_0x5ac6('0x4e')]){_0x17593a[_0x5ac6('0x45')](_[_0x5ac6('0x50')]({'channel':_0x53fba4,'type':'PAUSE','data1':_0x5ac6('0x53')},_0x239ff7));}});return db[_0x5ac6('0x27')]['bulkCreate'](_0x2dde41['concat'](_0x17593a),{'individualHooks':!![]});}})[_0x5ac6('0x16')](function(){if(_0x30f541){return _0x30f541[_0x5ac6('0x33')]({'online':!![],'lastLoginAt':moment()[_0x5ac6('0x24')](_0x5ac6('0x2a')),'voicePause':_0x30f541[_0x5ac6('0x4e')]||![],'mailPause':_0x30f541['loginInPause']||![],'chatPause':_0x30f541['loginInPause']||![],'faxPause':_0x30f541[_0x5ac6('0x4e')]||![],'smsPause':_0x30f541[_0x5ac6('0x4e')]||![],'openchannelPause':_0x30f541[_0x5ac6('0x4e')]||![],'pauseType':_0x30f541['loginInPause']?_0x5ac6('0x53'):null,'lastPauseAt':moment()[_0x5ac6('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x371f94});}})[_0x5ac6('0x16')](function(_0x44592f){_0x5c6075(_0x44592f);})[_0x5ac6('0x19')](function(_0xb48643){_0x569610(_0x5b63bf[_0x5ac6('0x1a')](0x1f4,_0xb48643[_0x5ac6('0x1b')]));});});};
\ No newline at end of file
index 2858228..57de207 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x204f=['save','update','removeListener','register','length','user:','./user.events'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x204f,0x172));var _0xf204=function(_0x8e470a,_0xc68684){_0x8e470a=_0x8e470a-0x0;var _0x359427=_0x204f[_0x8e470a];return _0x359427;};'use strict';var UserEvents=require(_0xf204('0x0'));var events=[_0xf204('0x1'),'remove',_0xf204('0x2')];function createListener(_0x38cfa1,_0x1e5604){return function(_0x275bcf){_0x1e5604['emit'](_0x38cfa1,_0x275bcf);};}function removeListener(_0x462d7e,_0x559dd2){return function(){UserEvents[_0xf204('0x3')](_0x462d7e,_0x559dd2);};}exports[_0xf204('0x4')]=function(_0x505583){for(var _0xa72324=0x0,_0x2d06c7=events[_0xf204('0x5')];_0xa72324<_0x2d06c7;_0xa72324++){var _0x47f808=events[_0xa72324];var _0x1662a9=createListener(_0xf204('0x6')+_0x47f808,_0x505583);UserEvents['on'](_0x47f808,_0x1662a9);}};
\ No newline at end of file
+var _0x4e27=['removeListener','register','length','./user.events','remove','update','emit'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0x4e27,0x137));var _0x74e2=function(_0xf44189,_0x3f82e1){_0xf44189=_0xf44189-0x0;var _0xeb928=_0x4e27[_0xf44189];return _0xeb928;};'use strict';var UserEvents=require(_0x74e2('0x0'));var events=['save',_0x74e2('0x1'),_0x74e2('0x2')];function createListener(_0x143756,_0x2fad30){return function(_0x4818d3){_0x2fad30[_0x74e2('0x3')](_0x143756,_0x4818d3);};}function removeListener(_0x26900b,_0x31340b){return function(){UserEvents[_0x74e2('0x4')](_0x26900b,_0x31340b);};}exports[_0x74e2('0x5')]=function(_0x457515){for(var _0x1947c6=0x0,_0xac9c84=events[_0x74e2('0x6')];_0x1947c6<_0xac9c84;_0x1947c6++){var _0x3bd68f=events[_0x1947c6];var _0x3fb4fb=createListener('user:'+_0x3bd68f,_0x457515);UserEvents['on'](_0x3bd68f,_0x3fb4fb);}};
\ No newline at end of file
index 843e1b1..2ce96e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2517ee,_0x4a506b){var _0x567b28=function(_0x5054de){while(--_0x5054de){_0x2517ee['push'](_0x2517ee['shift']());}};_0x567b28(++_0x4a506b);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x5c4697,_0x4d1f8d){var _0xebb281=function(_0x1f0e43){while(--_0x1f0e43){_0x5c4697['push'](_0x5c4697['shift']());}};_0xebb281(++_0x4d1f8d);}(_0x70e0,0x17b));var _0x070e=function(_0x4fee00,_0x3017a6){_0x4fee00=_0x4fee00-0x0;var _0x437a6b=_0x70e0[_0x4fee00];return _0x437a6b;};'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 a089d15..cbf455d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf589=['exports','sequelize'];(function(_0x313e95,_0x459410){var _0x301bcc=function(_0x570be){while(--_0x570be){_0x313e95['push'](_0x313e95['shift']());}};_0x301bcc(++_0x459410);}(_0xf589,0xe1));var _0x9f58=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xf589[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x9f58('0x0'));module[_0x9f58('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1a2d=['exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1a2d,0x144));var _0xd1a2=function(_0x26d5e0,_0x3aa7cd){_0x26d5e0=_0x26d5e0-0x0;var _0x1a5a9d=_0x1a2d[_0x26d5e0];return _0x1a5a9d;};'use strict';var Sequelize=require('sequelize');module[_0xd1a2('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index fefe404..7701b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x877c=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','util'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x877c,0xce));var _0xc877=function(_0x350f89,_0x13c620){_0x350f89=_0x350f89-0x0;var _0x5dbf34=_0x877c[_0x350f89];return _0x5dbf34;};'use strict';var _=require('lodash');var util=require(_0xc877('0x0'));var logger=require(_0xc877('0x1'))(_0xc877('0x2'));var moment=require(_0xc877('0x3'));var BPromise=require(_0xc877('0x4'));var rp=require(_0xc877('0x5'));var fs=require('fs');var path=require(_0xc877('0x6'));var rimraf=require(_0xc877('0x7'));var config=require('../../config/environment');var attributes=require('./userChatQueue.attributes');module['exports']=function(_0x398e6a,_0x2c41dd){return _0x398e6a[_0xc877('0x8')]('UserChatQueue',attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b34=['path','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','../../config/logger','api','moment','bluebird'];(function(_0x55704a,_0x59bc39){var _0x475d2d=function(_0x40a1ec){while(--_0x40a1ec){_0x55704a['push'](_0x55704a['shift']());}};_0x475d2d(++_0x59bc39);}(_0x3b34,0x1c2));var _0x43b3=function(_0x4834d8,_0x4ae804){_0x4834d8=_0x4834d8-0x0;var _0xe9eaca=_0x3b34[_0x4834d8];return _0xe9eaca;};'use strict';var _=require(_0x43b3('0x0'));var util=require('util');var logger=require(_0x43b3('0x1'))(_0x43b3('0x2'));var moment=require(_0x43b3('0x3'));var BPromise=require(_0x43b3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x43b3('0x5'));var rimraf=require(_0x43b3('0x6'));var config=require(_0x43b3('0x7'));var attributes=require(_0x43b3('0x8'));module[_0x43b3('0x9')]=function(_0x399ce2,_0x4610f8){return _0x399ce2[_0x43b3('0xa')](_0x43b3('0xb'),attributes,{'tableName':_0x43b3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea30c96..4eebeed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x700f=['then','info','UserChatQueue,\x20%s,\x20%s','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x38f416,_0x39dcfc){var _0x3c53e8=function(_0x46d516){while(--_0x46d516){_0x38f416['push'](_0x38f416['shift']());}};_0x3c53e8(++_0x39dcfc);}(_0x700f,0x136));var _0xf700=function(_0x43554e,_0x1e3896){_0x43554e=_0x43554e-0x0;var _0x2e0ff6=_0x700f[_0x43554e];return _0x2e0ff6;};'use strict';var _=require('lodash');var util=require(_0xf700('0x0'));var moment=require(_0xf700('0x1'));var BPromise=require(_0xf700('0x2'));var rs=require(_0xf700('0x3'));var fs=require('fs');var Redis=require(_0xf700('0x4'));var db=require(_0xf700('0x5'))['db'];var utils=require(_0xf700('0x6'));var logger=require(_0xf700('0x7'))('rpc');var config=require(_0xf700('0x8'));var jayson=require(_0xf700('0x9'));var client=jayson[_0xf700('0xa')][_0xf700('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x44c363,_0x3baf2f,_0x3fe413){return new BPromise(function(_0x30735a,_0x50916a){return client['request'](_0x44c363,_0x3fe413)[_0xf700('0xc')](function(_0x329828){logger[_0xf700('0xd')](_0xf700('0xe'),_0x3baf2f,'request\x20sent');logger[_0xf700('0xf')](_0xf700('0x10'),_0x3baf2f,'request\x20sent',JSON[_0xf700('0x11')](_0x329828));if(_0x329828['error']){if(_0x329828[_0xf700('0x12')][_0xf700('0x13')]===0x1f4){logger[_0xf700('0x12')](_0xf700('0xe'),_0x3baf2f,_0x329828[_0xf700('0x12')][_0xf700('0x14')]);return _0x50916a(_0x329828[_0xf700('0x12')][_0xf700('0x14')]);}logger[_0xf700('0x12')](_0xf700('0xe'),_0x3baf2f,_0x329828[_0xf700('0x12')][_0xf700('0x14')]);return _0x30735a(_0x329828[_0xf700('0x12')][_0xf700('0x14')]);}else{logger[_0xf700('0xd')](_0xf700('0xe'),_0x3baf2f,_0xf700('0x15'));_0x30735a(_0x329828[_0xf700('0x16')][_0xf700('0x14')]);}})['catch'](function(_0x40b02c){logger[_0xf700('0x12')](_0xf700('0xe'),_0x3baf2f,_0x40b02c);_0x50916a(_0x40b02c);});});}
\ No newline at end of file
+var _0x89e4=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','error','message'];(function(_0x4b9dc9,_0x14b3a2){var _0x57b302=function(_0x4f99ff){while(--_0x4f99ff){_0x4b9dc9['push'](_0x4b9dc9['shift']());}};_0x57b302(++_0x14b3a2);}(_0x89e4,0x1ba));var _0x489e=function(_0x3fe65f,_0x6a9877){_0x3fe65f=_0x3fe65f-0x0;var _0x4e194a=_0x89e4[_0x3fe65f];return _0x4e194a;};'use strict';var _=require(_0x489e('0x0'));var util=require(_0x489e('0x1'));var moment=require(_0x489e('0x2'));var BPromise=require(_0x489e('0x3'));var rs=require(_0x489e('0x4'));var fs=require('fs');var Redis=require(_0x489e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x489e('0x6'));var logger=require(_0x489e('0x7'))(_0x489e('0x8'));var config=require(_0x489e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x489e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1adcc8,_0x426d5f,_0x4dbb47){return new BPromise(function(_0x29e342,_0x15da37){return client['request'](_0x1adcc8,_0x4dbb47)[_0x489e('0xb')](function(_0x5a3e70){logger[_0x489e('0xc')](_0x489e('0xd'),_0x426d5f,_0x489e('0xe'));logger[_0x489e('0xf')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x426d5f,'request\x20sent',JSON['stringify'](_0x5a3e70));if(_0x5a3e70[_0x489e('0x10')]){if(_0x5a3e70['error']['code']===0x1f4){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x426d5f,_0x5a3e70[_0x489e('0x10')]['message']);return _0x15da37(_0x5a3e70[_0x489e('0x10')]['message']);}logger[_0x489e('0x10')](_0x489e('0xd'),_0x426d5f,_0x5a3e70['error'][_0x489e('0x11')]);return _0x29e342(_0x5a3e70[_0x489e('0x10')]['message']);}else{logger[_0x489e('0xc')](_0x489e('0xd'),_0x426d5f,'request\x20sent');_0x29e342(_0x5a3e70[_0x489e('0x12')]['message']);}})[_0x489e('0x13')](function(_0xe6e1){logger[_0x489e('0x10')]('UserChatQueue,\x20%s,\x20%s',_0x426d5f,_0xe6e1);_0x15da37(_0xe6e1);});});}
\ No newline at end of file
index 5bb5a1e..2cf3efa 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(_0x4921d5,_0x2e52c5){var _0x25a0fe=function(_0x31acfd){while(--_0x31acfd){_0x4921d5['push'](_0x4921d5['shift']());}};_0x25a0fe(++_0x2e52c5);}(_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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x2cb75c,_0x5f2112){var _0x1daa16=function(_0x402285){while(--_0x402285){_0x2cb75c['push'](_0x2cb75c['shift']());}};_0x1daa16(++_0x5f2112);}(_0x70e0,0x17b));var _0x070e=function(_0x190698,_0x1d2885){_0x190698=_0x190698-0x0;var _0x409850=_0x70e0[_0x190698];return _0x409850;};'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 856eb9c..948d241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46dc=['exports','INTEGER','STRING','sequelize'];(function(_0x9c36e9,_0x5154e6){var _0x5a393f=function(_0x5387cb){while(--_0x5387cb){_0x9c36e9['push'](_0x9c36e9['shift']());}};_0x5a393f(++_0x5154e6);}(_0x46dc,0x14b));var _0xc46d=function(_0x6eedb3,_0x5c2168){_0x6eedb3=_0x6eedb3-0x0;var _0x19801a=_0x46dc[_0x6eedb3];return _0x19801a;};'use strict';var Sequelize=require(_0xc46d('0x0'));module[_0xc46d('0x1')]={'penalty':{'type':Sequelize[_0xc46d('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0xc46d('0x3')]}};
\ No newline at end of file
+var _0x87b4=['INTEGER','STRING','sequelize'];(function(_0x4fa282,_0x5ef47c){var _0x4a7a5d=function(_0x383eaf){while(--_0x383eaf){_0x4fa282['push'](_0x4fa282['shift']());}};_0x4a7a5d(++_0x5ef47c);}(_0x87b4,0xec));var _0x487b=function(_0x3b7ed7,_0x29f00d){_0x3b7ed7=_0x3b7ed7-0x0;var _0x26ab0f=_0x87b4[_0x3b7ed7];return _0x26ab0f;};'use strict';var Sequelize=require(_0x487b('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x487b('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x487b('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x487b('0x2')]}};
\ No newline at end of file
index 6179758..1b7b7c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dd2=['api','moment','bluebird','request-promise','path','rimraf','./userFaxQueue.attributes','define','user_has_fax_queues','lodash'];(function(_0x5df2ac,_0x10d1d4){var _0x221a4b=function(_0x1eec0e){while(--_0x1eec0e){_0x5df2ac['push'](_0x5df2ac['shift']());}};_0x221a4b(++_0x10d1d4);}(_0x5dd2,0x13f));var _0x25dd=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x5dd2[_0x1969a7];return _0x3d665f;};'use strict';var _=require(_0x25dd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x25dd('0x1'));var moment=require(_0x25dd('0x2'));var BPromise=require(_0x25dd('0x3'));var rp=require(_0x25dd('0x4'));var fs=require('fs');var path=require(_0x25dd('0x5'));var rimraf=require(_0x25dd('0x6'));var config=require('../../config/environment');var attributes=require(_0x25dd('0x7'));module['exports']=function(_0x535215,_0x40a13a){return _0x535215[_0x25dd('0x8')]('UserFaxQueue',attributes,{'tableName':_0x25dd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6cb3=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./userFaxQueue.attributes','define','UserFaxQueue','lodash'];(function(_0x3a9638,_0x58df96){var _0x1c4070=function(_0x56ed9e){while(--_0x56ed9e){_0x3a9638['push'](_0x3a9638['shift']());}};_0x1c4070(++_0x58df96);}(_0x6cb3,0x149));var _0x36cb=function(_0x4321ae,_0x141f2f){_0x4321ae=_0x4321ae-0x0;var _0x29fa5c=_0x6cb3[_0x4321ae];return _0x29fa5c;};'use strict';var _=require(_0x36cb('0x0'));var util=require('util');var logger=require(_0x36cb('0x1'))(_0x36cb('0x2'));var moment=require(_0x36cb('0x3'));var BPromise=require(_0x36cb('0x4'));var rp=require(_0x36cb('0x5'));var fs=require('fs');var path=require(_0x36cb('0x6'));var rimraf=require(_0x36cb('0x7'));var config=require('../../config/environment');var attributes=require(_0x36cb('0x8'));module['exports']=function(_0x32e818,_0xc01ab8){return _0x32e818[_0x36cb('0x9')](_0x36cb('0xa'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bdf9d9d..f254bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x325c=['rpc','../../config/environment','http','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x2e7d2f,_0x25bb95){var _0x5ecc98=function(_0x152cb1){while(--_0x152cb1){_0x2e7d2f['push'](_0x2e7d2f['shift']());}};_0x5ecc98(++_0x25bb95);}(_0x325c,0x120));var _0xc325=function(_0x3e092e,_0x534ac8){_0x3e092e=_0x3e092e-0x0;var _0x3251fc=_0x325c[_0x3e092e];return _0x3251fc;};'use strict';var _=require(_0xc325('0x0'));var util=require(_0xc325('0x1'));var moment=require(_0xc325('0x2'));var BPromise=require(_0xc325('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc325('0x4'))['db'];var utils=require(_0xc325('0x5'));var logger=require('../../config/logger')(_0xc325('0x6'));var config=require(_0xc325('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xc325('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xb11b86,_0xbdfe78,_0x19c6de){return new BPromise(function(_0x8e499d,_0x35c52c){return client[_0xc325('0x9')](_0xb11b86,_0x19c6de)['then'](function(_0x564a3e){logger[_0xc325('0xa')](_0xc325('0xb'),_0xbdfe78,_0xc325('0xc'));logger[_0xc325('0xd')](_0xc325('0xe'),_0xbdfe78,_0xc325('0xc'),JSON[_0xc325('0xf')](_0x564a3e));if(_0x564a3e[_0xc325('0x10')]){if(_0x564a3e[_0xc325('0x10')][_0xc325('0x11')]===0x1f4){logger[_0xc325('0x10')](_0xc325('0xb'),_0xbdfe78,_0x564a3e[_0xc325('0x10')][_0xc325('0x12')]);return _0x35c52c(_0x564a3e[_0xc325('0x10')][_0xc325('0x12')]);}logger[_0xc325('0x10')](_0xc325('0xb'),_0xbdfe78,_0x564a3e[_0xc325('0x10')]['message']);return _0x8e499d(_0x564a3e[_0xc325('0x10')]['message']);}else{logger[_0xc325('0xa')](_0xc325('0xb'),_0xbdfe78,_0xc325('0xc'));_0x8e499d(_0x564a3e[_0xc325('0x13')]['message']);}})[_0xc325('0x14')](function(_0x3d1c41){logger[_0xc325('0x10')](_0xc325('0xb'),_0xbdfe78,_0x3d1c41);_0x35c52c(_0x3d1c41);});});}
\ No newline at end of file
+var _0x9dc3=['../../config/environment','jayson/promise','client','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x2e682d,_0x34c2a3){var _0x2c1772=function(_0x5bf80f){while(--_0x5bf80f){_0x2e682d['push'](_0x2e682d['shift']());}};_0x2c1772(++_0x34c2a3);}(_0x9dc3,0x117));var _0x39dc=function(_0x319ae0,_0x157e55){_0x319ae0=_0x319ae0-0x0;var _0x3551dc=_0x9dc3[_0x319ae0];return _0x3551dc;};'use strict';var _=require('lodash');var util=require(_0x39dc('0x0'));var moment=require(_0x39dc('0x1'));var BPromise=require('bluebird');var rs=require(_0x39dc('0x2'));var fs=require('fs');var Redis=require(_0x39dc('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x39dc('0x4'));var logger=require(_0x39dc('0x5'))(_0x39dc('0x6'));var config=require(_0x39dc('0x7'));var jayson=require(_0x39dc('0x8'));var client=jayson[_0x39dc('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b236e,_0x416e8d,_0x2ccd8a){return new BPromise(function(_0x3535b9,_0x36a834){return client[_0x39dc('0xa')](_0x5b236e,_0x2ccd8a)[_0x39dc('0xb')](function(_0x146b7a){logger[_0x39dc('0xc')](_0x39dc('0xd'),_0x416e8d,_0x39dc('0xe'));logger[_0x39dc('0xf')](_0x39dc('0x10'),_0x416e8d,'request\x20sent',JSON['stringify'](_0x146b7a));if(_0x146b7a[_0x39dc('0x11')]){if(_0x146b7a[_0x39dc('0x11')][_0x39dc('0x12')]===0x1f4){logger[_0x39dc('0x11')](_0x39dc('0xd'),_0x416e8d,_0x146b7a[_0x39dc('0x11')][_0x39dc('0x13')]);return _0x36a834(_0x146b7a[_0x39dc('0x11')][_0x39dc('0x13')]);}logger[_0x39dc('0x11')](_0x39dc('0xd'),_0x416e8d,_0x146b7a[_0x39dc('0x11')][_0x39dc('0x13')]);return _0x3535b9(_0x146b7a[_0x39dc('0x11')]['message']);}else{logger[_0x39dc('0xc')](_0x39dc('0xd'),_0x416e8d,_0x39dc('0xe'));_0x3535b9(_0x146b7a[_0x39dc('0x14')][_0x39dc('0x13')]);}})[_0x39dc('0x15')](function(_0x3d34a4){logger[_0x39dc('0x11')](_0x39dc('0xd'),_0x416e8d,_0x3d34a4);_0x36a834(_0x3d34a4);});});}
\ No newline at end of file
index 77bf449..b851703 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(_0x312c87,_0x336076){var _0x3f4a1a=function(_0x190f94){while(--_0x190f94){_0x312c87['push'](_0x312c87['shift']());}};_0x3f4a1a(++_0x336076);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x43794c,_0x4b4158){var _0xa31045=function(_0x2201e7){while(--_0x2201e7){_0x43794c['push'](_0x43794c['shift']());}};_0xa31045(++_0x4b4158);}(_0x9c44,0x178));var _0x49c4=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x9c44[_0x422905];return _0x33dc6c;};'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 8aad36b..6e0691c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce2f=['sequelize','exports','INTEGER'];(function(_0x47e309,_0x1e771a){var _0x2e1900=function(_0x407297){while(--_0x407297){_0x47e309['push'](_0x47e309['shift']());}};_0x2e1900(++_0x1e771a);}(_0xce2f,0x1d1));var _0xfce2=function(_0x1c2045,_0x10443a){_0x1c2045=_0x1c2045-0x0;var _0x1515ed=_0xce2f[_0x1c2045];return _0x1515ed;};'use strict';var Sequelize=require(_0xfce2('0x0'));module[_0xfce2('0x1')]={'penalty':{'type':Sequelize[_0xfce2('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd3e1=['exports','INTEGER'];(function(_0x377a6e,_0x59b99d){var _0x37f751=function(_0x2ed25c){while(--_0x2ed25c){_0x377a6e['push'](_0x377a6e['shift']());}};_0x37f751(++_0x59b99d);}(_0xd3e1,0xa0));var _0x1d3e=function(_0x4495fb,_0x33710a){_0x4495fb=_0x4495fb-0x0;var _0x3ce52f=_0xd3e1[_0x4495fb];return _0x3ce52f;};'use strict';var Sequelize=require('sequelize');module[_0x1d3e('0x0')]={'penalty':{'type':Sequelize[_0x1d3e('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index c766742..041a473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda64=['api','moment','bluebird','request-promise','path','../../config/environment','./userMailQueue.attributes','UserMailQueue','user_has_mail_queues','lodash','util'];(function(_0x197c83,_0x346ab1){var _0x2f9007=function(_0x3965bc){while(--_0x3965bc){_0x197c83['push'](_0x197c83['shift']());}};_0x2f9007(++_0x346ab1);}(_0xda64,0x169));var _0x4da6=function(_0x11712c,_0x1a40eb){_0x11712c=_0x11712c-0x0;var _0x38abf3=_0xda64[_0x11712c];return _0x38abf3;};'use strict';var _=require(_0x4da6('0x0'));var util=require(_0x4da6('0x1'));var logger=require('../../config/logger')(_0x4da6('0x2'));var moment=require(_0x4da6('0x3'));var BPromise=require(_0x4da6('0x4'));var rp=require(_0x4da6('0x5'));var fs=require('fs');var path=require(_0x4da6('0x6'));var rimraf=require('rimraf');var config=require(_0x4da6('0x7'));var attributes=require(_0x4da6('0x8'));module['exports']=function(_0x5b2c95,_0x9d233c){return _0x5b2c95['define'](_0x4da6('0x9'),attributes,{'tableName':_0x4da6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5289=['rimraf','./userMailQueue.attributes','exports','define','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x50e1cf,_0x5b8361){var _0x39104f=function(_0x342287){while(--_0x342287){_0x50e1cf['push'](_0x50e1cf['shift']());}};_0x39104f(++_0x5b8361);}(_0x5289,0x1a6));var _0x9528=function(_0x502223,_0x31f8ef){_0x502223=_0x502223-0x0;var _0x4ffb87=_0x5289[_0x502223];return _0x4ffb87;};'use strict';var _=require(_0x9528('0x0'));var util=require(_0x9528('0x1'));var logger=require(_0x9528('0x2'))(_0x9528('0x3'));var moment=require(_0x9528('0x4'));var BPromise=require('bluebird');var rp=require(_0x9528('0x5'));var fs=require('fs');var path=require(_0x9528('0x6'));var rimraf=require(_0x9528('0x7'));var config=require('../../config/environment');var attributes=require(_0x9528('0x8'));module[_0x9528('0x9')]=function(_0x309dcb,_0x26cd6b){return _0x309dcb[_0x9528('0xa')]('UserMailQueue',attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8549e09..e259ef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['rpc','../../config/environment','jayson/promise','client','http','request','then','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','ioredis','../../mysqldb','../../config/logger'];(function(_0x119342,_0x3340a7){var _0x1f9611=function(_0x2e3bfe){while(--_0x2e3bfe){_0x119342['push'](_0x119342['shift']());}};_0x1f9611(++_0x3340a7);}(_0x55ca,0x126));var _0xa55c=function(_0x467d3b,_0x4225ba){_0x467d3b=_0x467d3b-0x0;var _0x1a35ec=_0x55ca[_0x467d3b];return _0x1a35ec;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){return client[_0xa55c('0xa')](_0x36b623,_0x2121fd)[_0xa55c('0xb')](function(_0x52a3bc){logger['info'](_0xa55c('0xc'),_0x4d0624,_0xa55c('0xd'));logger[_0xa55c('0xe')](_0xa55c('0xf'),_0x4d0624,_0xa55c('0xd'),JSON[_0xa55c('0x10')](_0x52a3bc));if(_0x52a3bc[_0xa55c('0x11')]){if(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x11')]('UserMailQueue,\x20%s,\x20%s',_0x4d0624,_0x52a3bc['error'][_0xa55c('0x13')]);return _0x57e069(_0x52a3bc['error']['message']);}logger['error'](_0xa55c('0xc'),_0x4d0624,_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);return _0x2537f0(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);}else{logger[_0xa55c('0x14')]('UserMailQueue,\x20%s,\x20%s',_0x4d0624,_0xa55c('0xd'));_0x2537f0(_0x52a3bc[_0xa55c('0x15')][_0xa55c('0x13')]);}})[_0xa55c('0x16')](function(_0x1c4cfd){logger[_0xa55c('0x11')](_0xa55c('0xc'),_0x4d0624,_0x1c4cfd);_0x57e069(_0x1c4cfd);});});}
\ No newline at end of file
+var _0x7217=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserMailQueue,\x20%s,\x20%s','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x7217,0x19e));var _0x7721=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0x7217[_0x4bfac3];return _0x15f0f2;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('UserMailQueue,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}
\ No newline at end of file
index 81ff558..c81abe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce82=['./userNotification.controller','post','sendUserNotification','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x44fef1,_0x132cf4){var _0x3c3a04=function(_0x175a90){while(--_0x175a90){_0x44fef1['push'](_0x44fef1['shift']());}};_0x3c3a04(++_0x132cf4);}(_0xce82,0x149));var _0x2ce8=function(_0x50b982,_0x4271f7){_0x50b982=_0x50b982-0x0;var _0x249141=_0xce82[_0x50b982];return _0x249141;};'use strict';var multer=require(_0x2ce8('0x0'));var util=require('util');var path=require(_0x2ce8('0x1'));var timeout=require(_0x2ce8('0x2'));var express=require(_0x2ce8('0x3'));var router=express[_0x2ce8('0x4')]();var fs_extra=require(_0x2ce8('0x5'));var auth=require(_0x2ce8('0x6'));var interaction=require(_0x2ce8('0x7'));var config=require(_0x2ce8('0x8'));var controller=require(_0x2ce8('0x9'));router[_0x2ce8('0xa')]('/',auth['isAuthenticated'](),controller[_0x2ce8('0xb')]);module[_0x2ce8('0xc')]=router;
\ No newline at end of file
+var _0xb071=['isAuthenticated','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','post'];(function(_0x3f6b1b,_0x58d3d6){var _0x4a3d2b=function(_0x5648f0){while(--_0x5648f0){_0x3f6b1b['push'](_0x3f6b1b['shift']());}};_0x4a3d2b(++_0x58d3d6);}(_0xb071,0x136));var _0x1b07=function(_0x52eb16,_0x89c3d8){_0x52eb16=_0x52eb16-0x0;var _0x382d3f=_0xb071[_0x52eb16];return _0x382d3f;};'use strict';var multer=require('multer');var util=require(_0x1b07('0x0'));var path=require(_0x1b07('0x1'));var timeout=require(_0x1b07('0x2'));var express=require(_0x1b07('0x3'));var router=express[_0x1b07('0x4')]();var fs_extra=require(_0x1b07('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1b07('0x6'));var config=require(_0x1b07('0x7'));var controller=require('./userNotification.controller');router[_0x1b07('0x8')]('/',auth[_0x1b07('0x9')](),controller['sendUserNotification']);module[_0x1b07('0xa')]=router;
\ No newline at end of file
index a399fa2..2426bd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeb1=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0x459b79,_0x538fbc){var _0x483fbb=function(_0x538aef){while(--_0x538aef){_0x459b79['push'](_0x459b79['shift']());}};_0x483fbb(++_0x538fbc);}(_0xbeb1,0x177));var _0x1beb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xbeb1[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x1beb('0x0'));module[_0x1beb('0x1')]={'body':{'type':Sequelize[_0x1beb('0x2')]},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x1beb('0x2')]},'recipientsDescription':{'type':Sequelize[_0x1beb('0x3')]},'beep':{'type':Sequelize[_0x1beb('0x4')]}};
\ No newline at end of file
+var _0xd485=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x1ce656,_0x24225a){var _0x1741bd=function(_0x8302f){while(--_0x8302f){_0x1ce656['push'](_0x1ce656['shift']());}};_0x1741bd(++_0x24225a);}(_0xd485,0x13e));var _0x5d48=function(_0xda4046,_0x56139b){_0xda4046=_0xda4046-0x0;var _0x5ef76c=_0xd485[_0xda4046];return _0x5ef76c;};'use strict';var Sequelize=require(_0x5d48('0x0'));module[_0x5d48('0x1')]={'body':{'type':Sequelize[_0x5d48('0x2')]},'senderName':{'type':Sequelize[_0x5d48('0x3')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x5d48('0x3')]},'beep':{'type':Sequelize[_0x5d48('0x4')]}};
\ No newline at end of file
index d530874..ab9e163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f69=['catch','findOne','html','render','startCase','User','ids','replace','queue','Queue','all','flatten','getAgents','map','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','end','stack','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','error','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','recipientsDescription','isEmpty','beep','SenderId','sortBy','join','sequelize','transaction','create','forEach','recipient','emit','userNotification:send'];(function(_0x622035,_0x1a4b91){var _0x326cf2=function(_0x5c3002){while(--_0x5c3002){_0x622035['push'](_0x622035['shift']());}};_0x326cf2(++_0x1a4b91);}(_0x0f69,0xdc));var _0x90f6=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0x0f69[_0x15c421];return _0x5e5ed5;};'use strict';var emlformat=require(_0x90f6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x90f6('0x1'));var jsonpatch=require(_0x90f6('0x2'));var rp=require('request-promise');var moment=require(_0x90f6('0x3'));var BPromise=require(_0x90f6('0x4'));var Mustache=require(_0x90f6('0x5'));var util=require(_0x90f6('0x6'));var path=require(_0x90f6('0x7'));var sox=require(_0x90f6('0x8'));var csv=require(_0x90f6('0x9'));var ejs=require(_0x90f6('0xa'));var fs=require('fs');var fs_extra=require(_0x90f6('0xb'));var _=require(_0x90f6('0xc'));var squel=require(_0x90f6('0xd'));var crypto=require(_0x90f6('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x90f6('0x9'));var querystring=require(_0x90f6('0xf'));var Papa=require('papaparse');var Redis=require(_0x90f6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x90f6('0x11'));var as=require(_0x90f6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x90f6('0x13'));var utils=require(_0x90f6('0x14'));var config=require(_0x90f6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x90f6('0x16'))['db'];config[_0x90f6('0x17')]=_[_0x90f6('0x18')](config['redis'],{'host':_0x90f6('0x19'),'port':0x18eb});var socket=require(_0x90f6('0x1a'))(new Redis(config['redis']));require(_0x90f6('0x1b'))[_0x90f6('0x1c')](socket);function respondWithStatusCode(_0x2b2b94,_0x41e1e0){_0x41e1e0=_0x41e1e0||0xcc;return function(_0x585c54){if(_0x585c54){return _0x2b2b94[_0x90f6('0x1d')](_0x41e1e0);}return _0x2b2b94['status'](_0x41e1e0)['end']();};}function respondWithResult(_0x5cb396,_0x53f69a){_0x53f69a=_0x53f69a||0xc8;return function(_0x15ca2c){if(_0x15ca2c){return _0x5cb396[_0x90f6('0x1e')](_0x53f69a)[_0x90f6('0x1f')](_0x15ca2c);}};}function respondWithFilteredResult(_0x5afd74,_0x2d24d8){return function(_0x4430b1){if(_0x4430b1){var _0x38e134=typeof _0x2d24d8['offset']===_0x90f6('0x20')&&typeof _0x2d24d8[_0x90f6('0x21')]===_0x90f6('0x20');var _0xb4515b=_0x4430b1[_0x90f6('0x22')];var _0x1f5888=_0x38e134?0x0:_0x2d24d8[_0x90f6('0x23')];var _0x1cdb60=_0x38e134?_0x4430b1[_0x90f6('0x22')]:_0x2d24d8[_0x90f6('0x23')]+_0x2d24d8[_0x90f6('0x21')];var _0x1257b3;if(_0x1cdb60>=_0xb4515b){_0x1cdb60=_0xb4515b;_0x1257b3=0xc8;}else{_0x1257b3=0xce;}_0x5afd74[_0x90f6('0x1e')](_0x1257b3);return _0x5afd74['set'](_0x90f6('0x24'),_0x1f5888+'-'+_0x1cdb60+'/'+_0xb4515b)[_0x90f6('0x1f')](_0x4430b1);}return null;};}function patchUpdates(_0x383234){return function(_0x5888fa){try{jsonpatch[_0x90f6('0x25')](_0x5888fa,_0x383234,!![]);}catch(_0x2cce6e){return BPromise[_0x90f6('0x26')](_0x2cce6e);}return _0x5888fa[_0x90f6('0x27')]();};}function saveUpdates(_0x51a4f7,_0x23e87c){return function(_0x421630){if(_0x421630){return _0x421630['update'](_0x51a4f7)[_0x90f6('0x28')](function(_0x132b74){return _0x132b74;});}return null;};}function removeEntity(_0x2ad1a0,_0x4dbb25){return function(_0xc5cce8){if(_0xc5cce8){return _0xc5cce8[_0x90f6('0x29')]()[_0x90f6('0x28')](function(){_0x2ad1a0[_0x90f6('0x1e')](0xcc)[_0x90f6('0x2a')]();});}};}function handleEntityNotFound(_0x37822e,_0x961b5e){return function(_0x4ddfe6){if(!_0x4ddfe6){_0x37822e[_0x90f6('0x1d')](0x194);}return _0x4ddfe6;};}function handleError(_0x42569e,_0x2b343d){_0x2b343d=_0x2b343d||0x1f4;return function(_0x2032d3){logger['error'](_0x2032d3[_0x90f6('0x2b')]);if(_0x2032d3['name']){delete _0x2032d3[_0x90f6('0x2c')];}_0x42569e[_0x90f6('0x1e')](_0x2b343d)[_0x90f6('0x2d')](_0x2032d3);};}exports[_0x90f6('0x2e')]=function(_0x43c473,_0x5cb082,_0x22f53e){if(!_0x43c473[_0x90f6('0x2f')][_0x90f6('0x30')](_0x90f6('0x31'))&&!_0x43c473[_0x90f6('0x2f')][_0x90f6('0x30')]('TemplateId')){throw new db[(_0x90f6('0x32'))][(_0x90f6('0x33'))](_0x90f6('0x34'));}else{if(_0x43c473['body'][_0x90f6('0x30')](_0x90f6('0x35'))&&!_0x43c473[_0x90f6('0x2f')]['hasOwnProperty'](_0x90f6('0x36'))){throw new db[(_0x90f6('0x32'))][(_0x90f6('0x33'))](_0x90f6('0x37'));}if(!_0x43c473[_0x90f6('0x2f')][_0x90f6('0x30')](_0x90f6('0x38'))){throw new db['Sequelize'][(_0x90f6('0x33'))](_0x90f6('0x39'));}else{try{var _0x110fd7=JSON[_0x90f6('0x3a')](_0x43c473[_0x90f6('0x2f')][_0x90f6('0x38')]);}catch(_0x1d5aa2){logger[_0x90f6('0x3b')](_0x1d5aa2);throw new db['Sequelize']['ValidationError'](_0x90f6('0x3c'));}var _0x314b49=[_0x90f6('0x3d'),_0x90f6('0x3e'),_0x90f6('0x3f'),_0x90f6('0x40'),_0x90f6('0x41'),_0x90f6('0x42'),_0x90f6('0x43'),_0x90f6('0x44'),_0x90f6('0x45')];if(_[_0x90f6('0x46')](_0x110fd7,function(_0x14928e){return!_[_0x90f6('0x47')](_0x314b49,_0x14928e[_0x90f6('0x48')][_0x90f6('0x49')]());})){throw new db[(_0x90f6('0x32'))][(_0x90f6('0x33'))](_0x90f6('0x4a'));}}}var _0x4e5ceb={};_0x4e5ceb[_0x90f6('0x4b')]=_0x43c473['body']['hasOwnProperty'](_0x90f6('0x4b'))?_0x43c473[_0x90f6('0x2f')]['senderName']:_0x43c473[_0x90f6('0x45')]['fullname'];_0x4e5ceb[_0x90f6('0x4c')]=_[_0x90f6('0x4d')](_0x43c473[_0x90f6('0x2f')][_0x90f6('0x4c')])?null:_0x43c473['body'][_0x90f6('0x4c')];_0x4e5ceb[_0x90f6('0x4e')]=_0x43c473[_0x90f6('0x2f')]['beep']||![];_0x4e5ceb[_0x90f6('0x4f')]=_0x43c473[_0x90f6('0x45')]['id'];return getContent(_0x43c473['body'])[_0x90f6('0x28')](function(_0x1291d3){_0x4e5ceb[_0x90f6('0x2f')]=_0x1291d3;return getRecipients(_0x110fd7);})[_0x90f6('0x28')](function(_0x217a31){_0x4e5ceb['recipientsId']=_[_0x90f6('0x50')](_0x217a31)[_0x90f6('0x51')](',');return db[_0x90f6('0x52')][_0x90f6('0x53')](function(_0x117482){return db['UserNotification'][_0x90f6('0x54')](_0x4e5ceb,{'raw':!![],'transaction':_0x117482})[_0x90f6('0x28')](function(_0xa16a01){var _0x4e152d={'sender':_0x4e5ceb[_0x90f6('0x4b')],'description':_0x4e5ceb[_0x90f6('0x4c')],'content':_0x4e5ceb[_0x90f6('0x2f')],'beep':_0x4e5ceb[_0x90f6('0x4e')]};_0x217a31[_0x90f6('0x55')](function(_0x185427){_0x4e152d[_0x90f6('0x56')]=_0x185427;socket[_0x90f6('0x57')](_0x90f6('0x58'),_0x4e152d);});return _0xa16a01;});});})[_0x90f6('0x28')](respondWithResult(_0x5cb082,0xc9))[_0x90f6('0x59')](handleError(_0x5cb082,null));};function getContent(_0x340245){return new BPromise(function(_0x21c553,_0x1d7720){if(_0x340245[_0x90f6('0x31')]){_0x21c553(_0x340245['text']);return;}return db['Template'][_0x90f6('0x5a')]({'attributes':[_0x90f6('0x5b')],'where':{'id':_0x340245['TemplateId']},'raw':!![]})[_0x90f6('0x28')](function(_0x4cfd44){if(!_0x4cfd44)throw new db[(_0x90f6('0x32'))]['ValidationError']('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x3cd81b=Mustache[_0x90f6('0x5c')](_0x4cfd44[_0x90f6('0x5b')],_0x340245['view']);_0x21c553(_0x3cd81b);})['catch'](function(_0x19a0f3){_0x1d7720(_0x19a0f3);});});}function getRecipients(_0x293854){return new BPromise(function(_0xe819c5,_0x24260e){var _0xe7a9a2=[];var _0x32f157=[];_0x293854[_0x90f6('0x55')](function(_0x595121){var _0x5a5325=_[_0x90f6('0x5d')](_0x595121[_0x90f6('0x48')][_0x90f6('0x49')]());if(_0x5a5325===_0x90f6('0x5e')){_0xe7a9a2=_['union'](_0xe7a9a2,_0x595121[_0x90f6('0x5f')]);}else{if(_['includes'](_0x5a5325,'queue'))_0x5a5325=_0x5a5325[_0x90f6('0x60')](_0x90f6('0x61'),_0x90f6('0x62'));_0x595121[_0x90f6('0x5f')][_0x90f6('0x55')](function(_0x334374){_0x32f157['push'](getAgents(_0x5a5325,_0x334374));});}});return BPromise[_0x90f6('0x63')](_0x32f157)[_0x90f6('0x28')](function(_0x1d766f){_0xe7a9a2=_['union'](_0xe7a9a2,_[_0x90f6('0x64')](_0x1d766f));_0xe819c5(_0xe7a9a2);})[_0x90f6('0x59')](function(_0x567e40){_0x24260e(_0x567e40);});});}function getAgents(_0x3024d3,_0x1e88c6){return new BPromise(function(_0x3cb88f,_0x31061e){return db[_0x3024d3][_0x90f6('0x5a')]({'where':{'id':_0x1e88c6}})[_0x90f6('0x28')](function(_0x220d1a){return _0x220d1a[_0x90f6('0x65')]({'attributes':['id'],'raw':!![]})['then'](function(_0x31bcae){var _0x5217c8=_[_0x90f6('0x66')](_0x31bcae,'id');_0x3cb88f(_0x5217c8);});})[_0x90f6('0x59')](function(_0x595083){_0x31061e(_0x595083);});});}
\ No newline at end of file
+var _0x1d91=['mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Sequelize','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','team','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','user','sortBy','join','sequelize','transaction','UserNotification','create','beep','forEach','recipient','emit','userNotification:send','catch','text','Template','findOne','html','render','startCase','ids','replace','queue','Queue','all','union','flatten','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0x1d91,0xcb));var _0x11d9=function(_0x255ba7,_0x571734){_0x255ba7=_0x255ba7-0x0;var _0x3c7aae=_0x1d91[_0x255ba7];return _0x3c7aae;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x11d9('0x0'));var zipdir=require(_0x11d9('0x1'));var jsonpatch=require(_0x11d9('0x2'));var rp=require(_0x11d9('0x3'));var moment=require('moment');var BPromise=require(_0x11d9('0x4'));var Mustache=require(_0x11d9('0x5'));var util=require(_0x11d9('0x6'));var path=require(_0x11d9('0x7'));var sox=require(_0x11d9('0x8'));var csv=require(_0x11d9('0x9'));var ejs=require(_0x11d9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11d9('0xb'));var squel=require(_0x11d9('0xc'));var crypto=require(_0x11d9('0xd'));var jsforce=require(_0x11d9('0xe'));var deskjs=require(_0x11d9('0xf'));var toCsv=require(_0x11d9('0x9'));var querystring=require(_0x11d9('0x10'));var Papa=require(_0x11d9('0x11'));var Redis=require(_0x11d9('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x11d9('0x13'));var as=require(_0x11d9('0x14'));var hardwareService=require(_0x11d9('0x15'));var logger=require(_0x11d9('0x16'))('api');var utils=require(_0x11d9('0x17'));var config=require(_0x11d9('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x11d9('0x19'))['db'];config[_0x11d9('0x1a')]=_[_0x11d9('0x1b')](config[_0x11d9('0x1a')],{'host':_0x11d9('0x1c'),'port':0x18eb});var socket=require(_0x11d9('0x1d'))(new Redis(config[_0x11d9('0x1a')]));require('./userNotification.socket')[_0x11d9('0x1e')](socket);function respondWithStatusCode(_0x2e64d4,_0x73364f){_0x73364f=_0x73364f||0xcc;return function(_0xcbd467){if(_0xcbd467){return _0x2e64d4[_0x11d9('0x1f')](_0x73364f);}return _0x2e64d4[_0x11d9('0x20')](_0x73364f)[_0x11d9('0x21')]();};}function respondWithResult(_0x1d2105,_0x56267f){_0x56267f=_0x56267f||0xc8;return function(_0x3cf2f0){if(_0x3cf2f0){return _0x1d2105[_0x11d9('0x20')](_0x56267f)[_0x11d9('0x22')](_0x3cf2f0);}};}function respondWithFilteredResult(_0x480e30,_0x54c237){return function(_0x3b3344){if(_0x3b3344){var _0x333873=typeof _0x54c237[_0x11d9('0x23')]===_0x11d9('0x24')&&typeof _0x54c237[_0x11d9('0x25')]===_0x11d9('0x24');var _0x358579=_0x3b3344['count'];var _0x1bdc99=_0x333873?0x0:_0x54c237[_0x11d9('0x23')];var _0x5100e9=_0x333873?_0x3b3344[_0x11d9('0x26')]:_0x54c237[_0x11d9('0x23')]+_0x54c237['limit'];var _0x3dd93e;if(_0x5100e9>=_0x358579){_0x5100e9=_0x358579;_0x3dd93e=0xc8;}else{_0x3dd93e=0xce;}_0x480e30['status'](_0x3dd93e);return _0x480e30[_0x11d9('0x27')]('Content-Range',_0x1bdc99+'-'+_0x5100e9+'/'+_0x358579)[_0x11d9('0x22')](_0x3b3344);}return null;};}function patchUpdates(_0x18ebb9){return function(_0x460c03){try{jsonpatch[_0x11d9('0x28')](_0x460c03,_0x18ebb9,!![]);}catch(_0x4b56a0){return BPromise['reject'](_0x4b56a0);}return _0x460c03[_0x11d9('0x29')]();};}function saveUpdates(_0x547283,_0x6fdf8d){return function(_0x4aab11){if(_0x4aab11){return _0x4aab11[_0x11d9('0x2a')](_0x547283)[_0x11d9('0x2b')](function(_0x3f11ff){return _0x3f11ff;});}return null;};}function removeEntity(_0x9d1313,_0x3ec762){return function(_0x2bcc06){if(_0x2bcc06){return _0x2bcc06[_0x11d9('0x2c')]()['then'](function(){_0x9d1313[_0x11d9('0x20')](0xcc)[_0x11d9('0x21')]();});}};}function handleEntityNotFound(_0x161d6a,_0x43de80){return function(_0x4f31fb){if(!_0x4f31fb){_0x161d6a['sendStatus'](0x194);}return _0x4f31fb;};}function handleError(_0x34cdac,_0x9cef96){_0x9cef96=_0x9cef96||0x1f4;return function(_0x383d42){logger[_0x11d9('0x2d')](_0x383d42[_0x11d9('0x2e')]);if(_0x383d42['name']){delete _0x383d42[_0x11d9('0x2f')];}_0x34cdac['status'](_0x9cef96)[_0x11d9('0x30')](_0x383d42);};}exports[_0x11d9('0x31')]=function(_0x11c95d,_0x3fa4fd,_0x53d747){if(!_0x11c95d[_0x11d9('0x32')][_0x11d9('0x33')]('text')&&!_0x11c95d[_0x11d9('0x32')][_0x11d9('0x33')]('TemplateId')){throw new db['Sequelize'][(_0x11d9('0x34'))](_0x11d9('0x35'));}else{if(_0x11c95d[_0x11d9('0x32')][_0x11d9('0x33')](_0x11d9('0x36'))&&!_0x11c95d[_0x11d9('0x32')]['hasOwnProperty'](_0x11d9('0x37'))){throw new db[(_0x11d9('0x38'))][(_0x11d9('0x34'))](_0x11d9('0x39'));}if(!_0x11c95d[_0x11d9('0x32')]['hasOwnProperty'](_0x11d9('0x3a'))){throw new db[(_0x11d9('0x38'))][(_0x11d9('0x34'))](_0x11d9('0x3b'));}else{try{var _0x2698be=JSON[_0x11d9('0x3c')](_0x11c95d['body'][_0x11d9('0x3a')]);}catch(_0xa5cce4){logger['error'](_0xa5cce4);throw new db[(_0x11d9('0x38'))][(_0x11d9('0x34'))](_0x11d9('0x3d'));}var _0x288d83=[_0x11d9('0x3e'),_0x11d9('0x3f'),_0x11d9('0x40'),_0x11d9('0x41'),_0x11d9('0x42'),_0x11d9('0x43'),'whatsappqueue',_0x11d9('0x44'),'user'];if(_[_0x11d9('0x45')](_0x2698be,function(_0x5afa74){return!_[_0x11d9('0x46')](_0x288d83,_0x5afa74[_0x11d9('0x47')][_0x11d9('0x48')]());})){throw new db[(_0x11d9('0x38'))]['ValidationError'](_0x11d9('0x49'));}}}var _0x1b0ba0={};_0x1b0ba0[_0x11d9('0x4a')]=_0x11c95d[_0x11d9('0x32')]['hasOwnProperty'](_0x11d9('0x4a'))?_0x11c95d[_0x11d9('0x32')]['senderName']:_0x11c95d['user'][_0x11d9('0x4b')];_0x1b0ba0['recipientsDescription']=_['isEmpty'](_0x11c95d[_0x11d9('0x32')][_0x11d9('0x4c')])?null:_0x11c95d[_0x11d9('0x32')][_0x11d9('0x4c')];_0x1b0ba0['beep']=_0x11c95d[_0x11d9('0x32')]['beep']||![];_0x1b0ba0['SenderId']=_0x11c95d[_0x11d9('0x4d')]['id'];return getContent(_0x11c95d[_0x11d9('0x32')])[_0x11d9('0x2b')](function(_0x2aaca6){_0x1b0ba0[_0x11d9('0x32')]=_0x2aaca6;return getRecipients(_0x2698be);})['then'](function(_0x182647){_0x1b0ba0['recipientsId']=_[_0x11d9('0x4e')](_0x182647)[_0x11d9('0x4f')](',');return db[_0x11d9('0x50')][_0x11d9('0x51')](function(_0x2d4671){return db[_0x11d9('0x52')][_0x11d9('0x53')](_0x1b0ba0,{'raw':!![],'transaction':_0x2d4671})[_0x11d9('0x2b')](function(_0x52f407){var _0x7c2e77={'sender':_0x1b0ba0[_0x11d9('0x4a')],'description':_0x1b0ba0['recipientsDescription'],'content':_0x1b0ba0[_0x11d9('0x32')],'beep':_0x1b0ba0[_0x11d9('0x54')]};_0x182647[_0x11d9('0x55')](function(_0x474056){_0x7c2e77[_0x11d9('0x56')]=_0x474056;socket[_0x11d9('0x57')](_0x11d9('0x58'),_0x7c2e77);});return _0x52f407;});});})['then'](respondWithResult(_0x3fa4fd,0xc9))[_0x11d9('0x59')](handleError(_0x3fa4fd,null));};function getContent(_0x1a514b){return new BPromise(function(_0x1c161a,_0x144522){if(_0x1a514b[_0x11d9('0x5a')]){_0x1c161a(_0x1a514b[_0x11d9('0x5a')]);return;}return db[_0x11d9('0x5b')][_0x11d9('0x5c')]({'attributes':[_0x11d9('0x5d')],'where':{'id':_0x1a514b[_0x11d9('0x36')]},'raw':!![]})[_0x11d9('0x2b')](function(_0xeb6b3d){if(!_0xeb6b3d)throw new db['Sequelize'][(_0x11d9('0x34'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x1c4d33=Mustache[_0x11d9('0x5e')](_0xeb6b3d[_0x11d9('0x5d')],_0x1a514b['view']);_0x1c161a(_0x1c4d33);})[_0x11d9('0x59')](function(_0x403172){_0x144522(_0x403172);});});}function getRecipients(_0x2cfa6a){return new BPromise(function(_0x58f6eb,_0x2b721e){var _0x16c6fb=[];var _0x433986=[];_0x2cfa6a[_0x11d9('0x55')](function(_0x5b7a55){var _0x2c03f7=_[_0x11d9('0x5f')](_0x5b7a55[_0x11d9('0x47')][_0x11d9('0x48')]());if(_0x2c03f7==='User'){_0x16c6fb=_['union'](_0x16c6fb,_0x5b7a55[_0x11d9('0x60')]);}else{if(_[_0x11d9('0x46')](_0x2c03f7,'queue'))_0x2c03f7=_0x2c03f7[_0x11d9('0x61')](_0x11d9('0x62'),_0x11d9('0x63'));_0x5b7a55[_0x11d9('0x60')][_0x11d9('0x55')](function(_0x38412a){_0x433986['push'](getAgents(_0x2c03f7,_0x38412a));});}});return BPromise[_0x11d9('0x64')](_0x433986)[_0x11d9('0x2b')](function(_0x699cd1){_0x16c6fb=_[_0x11d9('0x65')](_0x16c6fb,_[_0x11d9('0x66')](_0x699cd1));_0x58f6eb(_0x16c6fb);})['catch'](function(_0x4138f8){_0x2b721e(_0x4138f8);});});}function getAgents(_0x3d0312,_0x236948){return new BPromise(function(_0x33a703,_0x25f5d1){return db[_0x3d0312][_0x11d9('0x5c')]({'where':{'id':_0x236948}})['then'](function(_0x4baab4){return _0x4baab4[_0x11d9('0x67')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2af5e4){var _0x333174=_['map'](_0x2af5e4,'id');_0x33a703(_0x333174);});})[_0x11d9('0x59')](function(_0x1c777a){_0x25f5d1(_0x1c777a);});});}
\ No newline at end of file
index 65cb054..b3f2e23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f5=['save','update','remove','emit','hasOwnProperty','hook','exports','events','UserNotification'];(function(_0x499afb,_0x1c2413){var _0x3c6397=function(_0x53ed13){while(--_0x53ed13){_0x499afb['push'](_0x499afb['shift']());}};_0x3c6397(++_0x1c2413);}(_0xe0f5,0x139));var _0x5e0f=function(_0x3ba061,_0x3ec05b){_0x3ba061=_0x3ba061-0x0;var _0x4b7e8b=_0xe0f5[_0x3ba061];return _0x4b7e8b;};'use strict';var EventEmitter=require(_0x5e0f('0x0'));var UserNotification=require('../../mysqldb')['db'][_0x5e0f('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5e0f('0x2'),'afterUpdate':_0x5e0f('0x3'),'afterDestroy':_0x5e0f('0x4')};function emitEvent(_0x4a15ef){return function(_0x36e1f3,_0x1470fe,_0x208689){UserNotificationEvents[_0x5e0f('0x5')](_0x4a15ef+':'+_0x36e1f3['id'],_0x36e1f3);UserNotificationEvents['emit'](_0x4a15ef,_0x36e1f3);_0x208689(null);};}for(var e in events){if(events[_0x5e0f('0x6')](e)){var event=events[e];UserNotification[_0x5e0f('0x7')](e,emitEvent(event));}}module[_0x5e0f('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0xb165=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserNotification','save','update'];(function(_0x246115,_0x398123){var _0x385878=function(_0x534a9c){while(--_0x534a9c){_0x246115['push'](_0x246115['shift']());}};_0x385878(++_0x398123);}(_0xb165,0x109));var _0x5b16=function(_0x30d017,_0x2df3c9){_0x30d017=_0x30d017-0x0;var _0x39ef95=_0xb165[_0x30d017];return _0x39ef95;};'use strict';var EventEmitter=require(_0x5b16('0x0'));var UserNotification=require(_0x5b16('0x1'))['db'][_0x5b16('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5b16('0x3'),'afterUpdate':_0x5b16('0x4'),'afterDestroy':'remove'};function emitEvent(_0x28e674){return function(_0x55c75f,_0x17f861,_0x56b55a){UserNotificationEvents[_0x5b16('0x5')](_0x28e674+':'+_0x55c75f['id'],_0x55c75f);UserNotificationEvents['emit'](_0x28e674,_0x55c75f);_0x56b55a(null);};}for(var e in events){if(events[_0x5b16('0x6')](e)){var event=events[e];UserNotification[_0x5b16('0x7')](e,emitEvent(event));}}module[_0x5b16('0x8')]=UserNotificationEvents;
\ No newline at end of file
index 6c18622..156adb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe30e=['moment','bluebird','request-promise','exports','define','UserNotification','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x29bd7e,_0x4f2735){var _0x3c8333=function(_0x2d7b22){while(--_0x2d7b22){_0x29bd7e['push'](_0x29bd7e['shift']());}};_0x3c8333(++_0x4f2735);}(_0xe30e,0xee));var _0xee30=function(_0x2d2258,_0x2ce510){_0x2d2258=_0x2d2258-0x0;var _0x18e155=_0xe30e[_0x2d2258];return _0x18e155;};'use strict';var _=require(_0xee30('0x0'));var util=require(_0xee30('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xee30('0x2'));var BPromise=require(_0xee30('0x3'));var rp=require(_0xee30('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module[_0xee30('0x5')]=function(_0xf8abe1,_0x965ee1){return _0xf8abe1[_0xee30('0x6')](_0xee30('0x7'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xee30('0x8'),'collate':_0xee30('0x9')});};
\ No newline at end of file
+var _0x5741=['utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','define','userNotifications','utf8mb4'];(function(_0x1c3d59,_0x254883){var _0x19872f=function(_0x1b9811){while(--_0x1b9811){_0x1c3d59['push'](_0x1c3d59['shift']());}};_0x19872f(++_0x254883);}(_0x5741,0x175));var _0x1574=function(_0x3ee7e4,_0x304097){_0x3ee7e4=_0x3ee7e4-0x0;var _0x1aec5e=_0x5741[_0x3ee7e4];return _0x1aec5e;};'use strict';var _=require(_0x1574('0x0'));var util=require('util');var logger=require(_0x1574('0x1'))('api');var moment=require(_0x1574('0x2'));var BPromise=require(_0x1574('0x3'));var rp=require(_0x1574('0x4'));var fs=require('fs');var path=require(_0x1574('0x5'));var rimraf=require('rimraf');var config=require(_0x1574('0x6'));var attributes=require('./userNotification.attributes');module[_0x1574('0x7')]=function(_0x2a3b36,_0x1e9930){return _0x2a3b36[_0x1574('0x8')]('UserNotification',attributes,{'tableName':_0x1574('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1574('0xa'),'collate':_0x1574('0xb')});};
\ No newline at end of file
index 9698a42..86de65e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe51=['request','then','info','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','UserNotification,\x20%s,\x20%s','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter'];(function(_0x6bbc3c,_0x22325e){var _0x19c8aa=function(_0x24a221){while(--_0x24a221){_0x6bbc3c['push'](_0x6bbc3c['shift']());}};_0x19c8aa(++_0x22325e);}(_0xfe51,0xe5));var _0x1fe5=function(_0x3c1db5,_0x4c39ed){_0x3c1db5=_0x3c1db5-0x0;var _0x4a3e54=_0xfe51[_0x3c1db5];return _0x4a3e54;};'use strict';var _=require(_0x1fe5('0x0'));var util=require('util');var moment=require(_0x1fe5('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fe5('0x2'));var db=require(_0x1fe5('0x3'))['db'];var utils=require(_0x1fe5('0x4'));var logger=require('../../config/logger')(_0x1fe5('0x5'));var config=require('../../config/environment');var jayson=require(_0x1fe5('0x6'));var client=jayson['client']['http']({'port':0x232a});config[_0x1fe5('0x7')]=_[_0x1fe5('0x8')](config[_0x1fe5('0x7')],{'host':_0x1fe5('0x9'),'port':0x18eb});var socket=require(_0x1fe5('0xa'))(new Redis(config[_0x1fe5('0x7')]));require('./userNotification.socket')['register'](socket);function respondWithRpcPromise(_0x14cb8d,_0x24c168,_0x522b3e){return new BPromise(function(_0x516115,_0xda84b){return client[_0x1fe5('0xb')](_0x14cb8d,_0x522b3e)[_0x1fe5('0xc')](function(_0x1812d1){logger[_0x1fe5('0xd')]('UserNotification,\x20%s,\x20%s',_0x24c168,_0x1fe5('0xe'));logger[_0x1fe5('0xf')](_0x1fe5('0x10'),_0x24c168,_0x1fe5('0xe'),JSON[_0x1fe5('0x11')](_0x1812d1));if(_0x1812d1[_0x1fe5('0x12')]){if(_0x1812d1[_0x1fe5('0x12')][_0x1fe5('0x13')]===0x1f4){logger[_0x1fe5('0x12')](_0x1fe5('0x14'),_0x24c168,_0x1812d1['error'][_0x1fe5('0x15')]);return _0xda84b(_0x1812d1['error'][_0x1fe5('0x15')]);}logger['error'](_0x1fe5('0x14'),_0x24c168,_0x1812d1['error']['message']);return _0x516115(_0x1812d1[_0x1fe5('0x12')][_0x1fe5('0x15')]);}else{logger[_0x1fe5('0xd')]('UserNotification,\x20%s,\x20%s',_0x24c168,_0x1fe5('0xe'));_0x516115(_0x1812d1[_0x1fe5('0x16')][_0x1fe5('0x15')]);}})[_0x1fe5('0x17')](function(_0x33841f){logger[_0x1fe5('0x12')]('UserNotification,\x20%s,\x20%s',_0x24c168,_0x33841f);_0xda84b(_0x33841f);});});}
\ No newline at end of file
+var _0xa79e=['redis','defaults','localhost','socket.io-emitter','./userNotification.socket','request','info','UserNotification,\x20%s,\x20%s','UserNotification,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x28e3d5,_0xe3971c){var _0x3b0327=function(_0x57bfc5){while(--_0x57bfc5){_0x28e3d5['push'](_0x28e3d5['shift']());}};_0x3b0327(++_0xe3971c);}(_0xa79e,0xab));var _0xea79=function(_0x597484,_0x199340){_0x597484=_0x597484-0x0;var _0x218e64=_0xa79e[_0x597484];return _0x218e64;};'use strict';var _=require(_0xea79('0x0'));var util=require(_0xea79('0x1'));var moment=require('moment');var BPromise=require(_0xea79('0x2'));var rs=require(_0xea79('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xea79('0x4'))['db'];var utils=require(_0xea79('0x5'));var logger=require(_0xea79('0x6'))(_0xea79('0x7'));var config=require(_0xea79('0x8'));var jayson=require(_0xea79('0x9'));var client=jayson['client'][_0xea79('0xa')]({'port':0x232a});config[_0xea79('0xb')]=_[_0xea79('0xc')](config['redis'],{'host':_0xea79('0xd'),'port':0x18eb});var socket=require(_0xea79('0xe'))(new Redis(config['redis']));require(_0xea79('0xf'))['register'](socket);function respondWithRpcPromise(_0x2336aa,_0x4d229b,_0xb25709){return new BPromise(function(_0x4725f2,_0x345d38){return client[_0xea79('0x10')](_0x2336aa,_0xb25709)['then'](function(_0x22d831){logger[_0xea79('0x11')](_0xea79('0x12'),_0x4d229b,'request\x20sent');logger['debug'](_0xea79('0x13'),_0x4d229b,_0xea79('0x14'),JSON[_0xea79('0x15')](_0x22d831));if(_0x22d831[_0xea79('0x16')]){if(_0x22d831[_0xea79('0x16')][_0xea79('0x17')]===0x1f4){logger[_0xea79('0x16')](_0xea79('0x12'),_0x4d229b,_0x22d831['error']['message']);return _0x345d38(_0x22d831[_0xea79('0x16')]['message']);}logger[_0xea79('0x16')](_0xea79('0x12'),_0x4d229b,_0x22d831[_0xea79('0x16')]['message']);return _0x4725f2(_0x22d831[_0xea79('0x16')][_0xea79('0x18')]);}else{logger[_0xea79('0x11')](_0xea79('0x12'),_0x4d229b,_0xea79('0x14'));_0x4725f2(_0x22d831[_0xea79('0x19')][_0xea79('0x18')]);}})['catch'](function(_0x1cb857){logger['error'](_0xea79('0x12'),_0x4d229b,_0x1cb857);_0x345d38(_0x1cb857);});});}
\ No newline at end of file
index 8fdb38f..c8e6cfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d7b=['userNotification:','save','remove','emit','register','length'];(function(_0x5f1197,_0x5b2381){var _0x23f6fa=function(_0x1e0e6b){while(--_0x1e0e6b){_0x5f1197['push'](_0x5f1197['shift']());}};_0x23f6fa(++_0x5b2381);}(_0x6d7b,0x157));var _0xb6d7=function(_0xf28958,_0x53f0ed){_0xf28958=_0xf28958-0x0;var _0x4a4ce4=_0x6d7b[_0xf28958];return _0x4a4ce4;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0xb6d7('0x0'),_0xb6d7('0x1'),'update'];function createListener(_0x1ef30c,_0x11d9ce){return function(_0x1354b4){_0x11d9ce[_0xb6d7('0x2')](_0x1ef30c,_0x1354b4);};}function removeListener(_0x1ff042,_0xa93f1f){return function(){UserNotificationEvents['removeListener'](_0x1ff042,_0xa93f1f);};}exports[_0xb6d7('0x3')]=function(_0x2eddbb){for(var _0x2889e1=0x0,_0x2074f1=events[_0xb6d7('0x4')];_0x2889e1<_0x2074f1;_0x2889e1++){var _0x1ef78c=events[_0x2889e1];var _0x35980a=createListener(_0xb6d7('0x5')+_0x1ef78c,_0x2eddbb);UserNotificationEvents['on'](_0x1ef78c,_0x35980a);}};
\ No newline at end of file
+var _0xca2e=['update','emit','register','length','userNotification:','./userNotification.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca2e,0x18d));var _0xeca2=function(_0x5596ad,_0x1f923f){_0x5596ad=_0x5596ad-0x0;var _0xbf97a7=_0xca2e[_0x5596ad];return _0xbf97a7;};'use strict';var UserNotificationEvents=require(_0xeca2('0x0'));var events=[_0xeca2('0x1'),'remove',_0xeca2('0x2')];function createListener(_0x5e1161,_0x15b8d7){return function(_0x3a35c3){_0x15b8d7[_0xeca2('0x3')](_0x5e1161,_0x3a35c3);};}function removeListener(_0x368873,_0x239d4f){return function(){UserNotificationEvents['removeListener'](_0x368873,_0x239d4f);};}exports[_0xeca2('0x4')]=function(_0x2b1c0c){for(var _0x405ab7=0x0,_0x46b28b=events[_0xeca2('0x5')];_0x405ab7<_0x46b28b;_0x405ab7++){var _0x7bc9cb=events[_0x405ab7];var _0x5e42fa=createListener(_0xeca2('0x6')+_0x7bc9cb,_0x2b1c0c);UserNotificationEvents['on'](_0x7bc9cb,_0x5e42fa);}};
\ No newline at end of file
index 73d9099..ded0913 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(_0x17eec6,_0x54a955){var _0x1e4d32=function(_0x3d2e36){while(--_0x3d2e36){_0x17eec6['push'](_0x17eec6['shift']());}};_0x1e4d32(++_0x54a955);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0xa2049b,_0x7eeb1e){var _0x2fd615=function(_0x7dbb84){while(--_0x7dbb84){_0xa2049b['push'](_0xa2049b['shift']());}};_0x2fd615(++_0x7eeb1e);}(_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 e6a0865..d0d1546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d87=['sequelize','exports'];(function(_0x30e675,_0x4eebc7){var _0x258b27=function(_0x253d97){while(--_0x253d97){_0x30e675['push'](_0x30e675['shift']());}};_0x258b27(++_0x4eebc7);}(_0x5d87,0x1f2));var _0x75d8=function(_0x2afdfd,_0x332fbe){_0x2afdfd=_0x2afdfd-0x0;var _0x57ce52=_0x5d87[_0x2afdfd];return _0x57ce52;};'use strict';var Sequelize=require(_0x75d8('0x0'));module[_0x75d8('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x57fa=['exports'];(function(_0x57a122,_0x275698){var _0x12cc49=function(_0xa36368){while(--_0xa36368){_0x57a122['push'](_0x57a122['shift']());}};_0x12cc49(++_0x275698);}(_0x57fa,0x7e));var _0xa57f=function(_0x407912,_0x9d4f79){_0x407912=_0x407912-0x0;var _0xbda389=_0x57fa[_0x407912];return _0xbda389;};'use strict';var Sequelize=require('sequelize');module[_0xa57f('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 51fe987..be633a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bd7=['moment','bluebird','request-promise','path','../../config/environment','./userOpenchannelQueue.attributes','UserOpenchannelQueue','user_has_openchannel_queues','util','../../config/logger','api'];(function(_0x3d89f6,_0x46785a){var _0x4c4321=function(_0x4143a4){while(--_0x4143a4){_0x3d89f6['push'](_0x3d89f6['shift']());}};_0x4c4321(++_0x46785a);}(_0x1bd7,0x1ec));var _0x71bd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1bd7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x71bd('0x0'));var logger=require(_0x71bd('0x1'))(_0x71bd('0x2'));var moment=require(_0x71bd('0x3'));var BPromise=require(_0x71bd('0x4'));var rp=require(_0x71bd('0x5'));var fs=require('fs');var path=require(_0x71bd('0x6'));var rimraf=require('rimraf');var config=require(_0x71bd('0x7'));var attributes=require(_0x71bd('0x8'));module['exports']=function(_0x453315,_0x1bc003){return _0x453315['define'](_0x71bd('0x9'),attributes,{'tableName':_0x71bd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe4f6=['define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','api','moment','path','rimraf','../../config/environment','exports'];(function(_0x34a736,_0x2b1410){var _0x46d0e9=function(_0x295dc9){while(--_0x295dc9){_0x34a736['push'](_0x34a736['shift']());}};_0x46d0e9(++_0x2b1410);}(_0xe4f6,0x163));var _0x6e4f=function(_0xc80438,_0x4c5ac9){_0xc80438=_0xc80438-0x0;var _0x22a7d2=_0xe4f6[_0xc80438];return _0x22a7d2;};'use strict';var _=require(_0x6e4f('0x0'));var util=require(_0x6e4f('0x1'));var logger=require('../../config/logger')(_0x6e4f('0x2'));var moment=require(_0x6e4f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6e4f('0x4'));var rimraf=require(_0x6e4f('0x5'));var config=require(_0x6e4f('0x6'));var attributes=require('./userOpenchannelQueue.attributes');module[_0x6e4f('0x7')]=function(_0x30e41b,_0x393ba6){return _0x30e41b[_0x6e4f('0x8')](_0x6e4f('0x9'),attributes,{'tableName':_0x6e4f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f3e0253..7dc1633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe651=['debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','info','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','request\x20sent'];(function(_0x53b10f,_0x4bda8e){var _0x3b39e8=function(_0x3f305f){while(--_0x3f305f){_0x53b10f['push'](_0x53b10f['shift']());}};_0x3b39e8(++_0x4bda8e);}(_0xe651,0x1c1));var _0x1e65=function(_0x2dc2bf,_0x445916){_0x2dc2bf=_0x2dc2bf-0x0;var _0x5d1be8=_0xe651[_0x2dc2bf];return _0x5d1be8;};'use strict';var _=require('lodash');var util=require(_0x1e65('0x0'));var moment=require('moment');var BPromise=require(_0x1e65('0x1'));var rs=require(_0x1e65('0x2'));var fs=require('fs');var Redis=require(_0x1e65('0x3'));var db=require(_0x1e65('0x4'))['db'];var utils=require(_0x1e65('0x5'));var logger=require(_0x1e65('0x6'))('rpc');var config=require(_0x1e65('0x7'));var jayson=require(_0x1e65('0x8'));var client=jayson['client'][_0x1e65('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x34854a,_0x4ad001,_0x4504b5){return new BPromise(function(_0x58bd96,_0x253066){return client[_0x1e65('0xa')](_0x34854a,_0x4504b5)[_0x1e65('0xb')](function(_0x2b273e){logger['info']('UserOpenchannelQueue,\x20%s,\x20%s',_0x4ad001,_0x1e65('0xc'));logger[_0x1e65('0xd')](_0x1e65('0xe'),_0x4ad001,_0x1e65('0xc'),JSON[_0x1e65('0xf')](_0x2b273e));if(_0x2b273e[_0x1e65('0x10')]){if(_0x2b273e[_0x1e65('0x10')][_0x1e65('0x11')]===0x1f4){logger[_0x1e65('0x10')](_0x1e65('0x12'),_0x4ad001,_0x2b273e['error'][_0x1e65('0x13')]);return _0x253066(_0x2b273e[_0x1e65('0x10')]['message']);}logger[_0x1e65('0x10')](_0x1e65('0x12'),_0x4ad001,_0x2b273e[_0x1e65('0x10')][_0x1e65('0x13')]);return _0x58bd96(_0x2b273e[_0x1e65('0x10')][_0x1e65('0x13')]);}else{logger[_0x1e65('0x14')](_0x1e65('0x12'),_0x4ad001,_0x1e65('0xc'));_0x58bd96(_0x2b273e[_0x1e65('0x15')]['message']);}})['catch'](function(_0x5ca1ee){logger[_0x1e65('0x10')](_0x1e65('0x12'),_0x4ad001,_0x5ca1ee);_0x253066(_0x5ca1ee);});});}
\ No newline at end of file
+var _0x6152=['../../config/environment','client','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x1ac894,_0x39b96a){var _0x4f39d7=function(_0x35be9f){while(--_0x35be9f){_0x1ac894['push'](_0x1ac894['shift']());}};_0x4f39d7(++_0x39b96a);}(_0x6152,0x65));var _0x2615=function(_0x1fd407,_0x525625){_0x1fd407=_0x1fd407-0x0;var _0x59dc05=_0x6152[_0x1fd407];return _0x59dc05;};'use strict';var _=require(_0x2615('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2615('0x1'));var rs=require(_0x2615('0x2'));var fs=require('fs');var Redis=require(_0x2615('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2615('0x4'));var logger=require(_0x2615('0x5'))(_0x2615('0x6'));var config=require(_0x2615('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2615('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ca586,_0x482b77,_0x1a3dd5){return new BPromise(function(_0x1507d8,_0x456c7c){return client[_0x2615('0x9')](_0x4ca586,_0x1a3dd5)[_0x2615('0xa')](function(_0x582f93){logger[_0x2615('0xb')](_0x2615('0xc'),_0x482b77,_0x2615('0xd'));logger['debug']('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x482b77,_0x2615('0xd'),JSON[_0x2615('0xe')](_0x582f93));if(_0x582f93[_0x2615('0xf')]){if(_0x582f93[_0x2615('0xf')][_0x2615('0x10')]===0x1f4){logger[_0x2615('0xf')](_0x2615('0xc'),_0x482b77,_0x582f93[_0x2615('0xf')][_0x2615('0x11')]);return _0x456c7c(_0x582f93['error'][_0x2615('0x11')]);}logger[_0x2615('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x482b77,_0x582f93[_0x2615('0xf')]['message']);return _0x1507d8(_0x582f93[_0x2615('0xf')][_0x2615('0x11')]);}else{logger[_0x2615('0xb')](_0x2615('0xc'),_0x482b77,_0x2615('0xd'));_0x1507d8(_0x582f93['result'][_0x2615('0x11')]);}})['catch'](function(_0x172194){logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x482b77,_0x172194);_0x456c7c(_0x172194);});});}
\ No newline at end of file
index b77a5ca..fbdb5a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe20c=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/sections','getSections','/:id/resources','post','create','/:id/clone','clone','addSections','put','destroy','delete','removeSections','removeResources','multer','util'];(function(_0x5e709a,_0x1d7975){var _0x57401a=function(_0x27eab5){while(--_0x27eab5){_0x5e709a['push'](_0x5e709a['shift']());}};_0x57401a(++_0x1d7975);}(_0xe20c,0x10c));var _0xce20=function(_0x37f042,_0x4034f8){_0x37f042=_0x37f042-0x0;var _0x188593=_0xe20c[_0x37f042];return _0x188593;};'use strict';var multer=require(_0xce20('0x0'));var util=require(_0xce20('0x1'));var path=require(_0xce20('0x2'));var timeout=require(_0xce20('0x3'));var express=require(_0xce20('0x4'));var router=express[_0xce20('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xce20('0x6'));var interaction=require(_0xce20('0x7'));var config=require(_0xce20('0x8'));var controller=require(_0xce20('0x9'));router[_0xce20('0xa')]('/',auth[_0xce20('0xb')](),controller[_0xce20('0xc')]);router[_0xce20('0xa')](_0xce20('0xd'),auth[_0xce20('0xb')](),controller[_0xce20('0xe')]);router[_0xce20('0xa')](_0xce20('0xf'),auth[_0xce20('0xb')](),controller[_0xce20('0x10')]);router[_0xce20('0xa')](_0xce20('0x11'),auth[_0xce20('0xb')](),controller[_0xce20('0x12')]);router['get'](_0xce20('0x13'),auth[_0xce20('0xb')](),controller['getResources']);router[_0xce20('0x14')]('/',auth[_0xce20('0xb')](),controller[_0xce20('0x15')]);router[_0xce20('0x14')](_0xce20('0x16'),auth[_0xce20('0xb')](),controller[_0xce20('0x17')]);router[_0xce20('0x14')](_0xce20('0x11'),auth[_0xce20('0xb')](),controller[_0xce20('0x18')]);router[_0xce20('0x14')](_0xce20('0x13'),auth[_0xce20('0xb')](),controller['addResources']);router[_0xce20('0x19')](_0xce20('0xf'),auth[_0xce20('0xb')](),controller['update']);router['delete'](_0xce20('0xf'),auth[_0xce20('0xb')](),controller[_0xce20('0x1a')]);router[_0xce20('0x1b')](_0xce20('0x11'),auth[_0xce20('0xb')](),controller[_0xce20('0x1c')]);router[_0xce20('0x1b')](_0xce20('0x13'),auth[_0xce20('0xb')](),controller[_0xce20('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0x6c70=['removeSections','removeResources','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./userProfile.controller','get','isAuthenticated','show','getSections','getResources','post','create','/:id/clone','clone','/:id/sections','addSections','/:id/resources','addResources','put','/:id','update','delete','destroy'];(function(_0x360118,_0x184862){var _0x45da64=function(_0x28d35d){while(--_0x28d35d){_0x360118['push'](_0x360118['shift']());}};_0x45da64(++_0x184862);}(_0x6c70,0x1f0));var _0x06c7=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x6c70[_0xa6cc5c];return _0x44803d;};'use strict';var multer=require('multer');var util=require(_0x06c7('0x0'));var path=require('path');var timeout=require(_0x06c7('0x1'));var express=require(_0x06c7('0x2'));var router=express[_0x06c7('0x3')]();var fs_extra=require(_0x06c7('0x4'));var auth=require(_0x06c7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x06c7('0x6'));var controller=require(_0x06c7('0x7'));router[_0x06c7('0x8')]('/',auth[_0x06c7('0x9')](),controller['index']);router['get']('/describe',auth[_0x06c7('0x9')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x06c7('0xa')]);router[_0x06c7('0x8')]('/:id/sections',auth['isAuthenticated'](),controller[_0x06c7('0xb')]);router[_0x06c7('0x8')]('/:id/resources',auth[_0x06c7('0x9')](),controller[_0x06c7('0xc')]);router[_0x06c7('0xd')]('/',auth['isAuthenticated'](),controller[_0x06c7('0xe')]);router['post'](_0x06c7('0xf'),auth['isAuthenticated'](),controller[_0x06c7('0x10')]);router[_0x06c7('0xd')](_0x06c7('0x11'),auth[_0x06c7('0x9')](),controller[_0x06c7('0x12')]);router[_0x06c7('0xd')](_0x06c7('0x13'),auth[_0x06c7('0x9')](),controller[_0x06c7('0x14')]);router[_0x06c7('0x15')](_0x06c7('0x16'),auth['isAuthenticated'](),controller[_0x06c7('0x17')]);router[_0x06c7('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x06c7('0x19')]);router[_0x06c7('0x18')](_0x06c7('0x11'),auth[_0x06c7('0x9')](),controller[_0x06c7('0x1a')]);router[_0x06c7('0x18')]('/:id/resources',auth[_0x06c7('0x9')](),controller[_0x06c7('0x1b')]);module[_0x06c7('0x1c')]=router;
\ No newline at end of file
index d1fbf9a..6ce0850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c78=['getDataValue','split','BOOLEAN','STRING','setDataValue'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x7c78,0xc6));var _0x87c7=function(_0x4bfe08,_0x48ae7b){_0x4bfe08=_0x4bfe08-0x0;var _0x1f9125=_0x7c78[_0x4bfe08];return _0x1f9125;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x87c7('0x0')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x87c7('0x0')],'set':function(_0x12678c){this[_0x87c7('0x1')]('crudPermissions',_0x12678c?_0x12678c['join'](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0x87c7('0x2')]('crudPermissions')[_0x87c7('0x3')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x87c7('0x0')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x87c7('0x4')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x87c7('0x4')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x87c7('0x4')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x87c7('0x4')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x87c7('0x4')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x87c7('0x4')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x87c7('0x4')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x87c7('0x4')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9ab2=['getDataValue','crudPermissions','split','BOOLEAN','exports','STRING','name','join'];(function(_0x59c301,_0x359c50){var _0x3866b9=function(_0x2d380e){while(--_0x2d380e){_0x59c301['push'](_0x59c301['shift']());}};_0x3866b9(++_0x359c50);}(_0x9ab2,0xbc));var _0x29ab=function(_0x2ff462,_0x5d38f9){_0x2ff462=_0x2ff462-0x0;var _0x5c32a6=_0x9ab2[_0x2ff462];return _0x5c32a6;};'use strict';var Sequelize=require('sequelize');module[_0x29ab('0x0')]={'name':{'type':Sequelize[_0x29ab('0x1')],'allowNull':![],'unique':_0x29ab('0x2')},'crudPermissions':{'type':Sequelize[_0x29ab('0x1')],'set':function(_0x44b1c4){this['setDataValue']('crudPermissions',_0x44b1c4?_0x44b1c4[_0x29ab('0x3')](''):[]);},'get':function(){return this[_0x29ab('0x4')](_0x29ab('0x5'))?this[_0x29ab('0x4')](_0x29ab('0x5'))[_0x29ab('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x29ab('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x29ab('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x29ab('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x29ab('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x29ab('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x29ab('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 0c5dc52..ba3661e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6896=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','status','offset','undefined','limit','count','Content-Range','json','apply','reject','then','destroy','end','error','stack','name','send','index','map','UserProfile','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','catch','show','find','create','body','clone','createdAt','updatedAt','omit','UserProfileSection','findAll','autoAssociation','UserProfileResource','Resources','params','describe','transaction','sectionId','userProfileId','each','push','removeSections','ids','enabled','includes','isEmpty','subsections','Dashboard','forEach','Plugin','resourceId','addResources','sequelize','get','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service'];(function(_0x3b4626,_0x14d17b){var _0x404a2e=function(_0x1d0e4f){while(--_0x1d0e4f){_0x3b4626['push'](_0x3b4626['shift']());}};_0x404a2e(++_0x14d17b);}(_0x6896,0x19d));var _0x6689=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x6896[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0x6689('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6689('0x1'));var rp=require(_0x6689('0x2'));var moment=require(_0x6689('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6689('0x4'));var util=require(_0x6689('0x5'));var path=require(_0x6689('0x6'));var sox=require(_0x6689('0x7'));var csv=require(_0x6689('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6689('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6689('0xa'));var deskjs=require(_0x6689('0xb'));var toCsv=require('to-csv');var querystring=require(_0x6689('0xc'));var Papa=require(_0x6689('0xd'));var Redis=require('ioredis');var authService=require(_0x6689('0xe'));var qs=require(_0x6689('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6689('0x10'));var logger=require(_0x6689('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6689('0x12'));var db=require(_0x6689('0x13'))['db'];config[_0x6689('0x14')]=_[_0x6689('0x15')](config['redis'],{'host':_0x6689('0x16'),'port':0x18eb});var socket=require(_0x6689('0x17'))(new Redis(config[_0x6689('0x14')]));require(_0x6689('0x18'))[_0x6689('0x19')](socket);function respondWithStatusCode(_0x444762,_0x34a8ff){_0x34a8ff=_0x34a8ff||0xcc;return function(_0x3544a5){if(_0x3544a5){return _0x444762['sendStatus'](_0x34a8ff);}return _0x444762[_0x6689('0x1a')](_0x34a8ff)['end']();};}function respondWithResult(_0x4c9152,_0x4deb33){_0x4deb33=_0x4deb33||0xc8;return function(_0x2ab5d1){if(_0x2ab5d1){return _0x4c9152[_0x6689('0x1a')](_0x4deb33)['json'](_0x2ab5d1);}};}function respondWithFilteredResult(_0x1cd0f1,_0x4b855f){return function(_0x121f2c){if(_0x121f2c){var _0x296617=typeof _0x4b855f[_0x6689('0x1b')]===_0x6689('0x1c')&&typeof _0x4b855f[_0x6689('0x1d')]===_0x6689('0x1c');var _0x1c52f1=_0x121f2c[_0x6689('0x1e')];var _0x184e29=_0x296617?0x0:_0x4b855f[_0x6689('0x1b')];var _0x42435f=_0x296617?_0x121f2c[_0x6689('0x1e')]:_0x4b855f[_0x6689('0x1b')]+_0x4b855f[_0x6689('0x1d')];var _0x110456;if(_0x42435f>=_0x1c52f1){_0x42435f=_0x1c52f1;_0x110456=0xc8;}else{_0x110456=0xce;}_0x1cd0f1[_0x6689('0x1a')](_0x110456);return _0x1cd0f1['set'](_0x6689('0x1f'),_0x184e29+'-'+_0x42435f+'/'+_0x1c52f1)[_0x6689('0x20')](_0x121f2c);}return null;};}function patchUpdates(_0xcb6be4){return function(_0xdbba67){try{jsonpatch[_0x6689('0x21')](_0xdbba67,_0xcb6be4,!![]);}catch(_0x422116){return BPromise[_0x6689('0x22')](_0x422116);}return _0xdbba67['save']();};}function saveUpdates(_0x5a2898,_0x52ec94){return function(_0x598be9){if(_0x598be9){return _0x598be9['update'](_0x5a2898)[_0x6689('0x23')](function(_0x480281){return _0x480281;});}return null;};}function removeEntity(_0x49024f,_0x1e4445){return function(_0x17077e){if(_0x17077e){return _0x17077e[_0x6689('0x24')]()[_0x6689('0x23')](function(){_0x49024f[_0x6689('0x1a')](0xcc)[_0x6689('0x25')]();});}};}function handleEntityNotFound(_0x43ff62,_0x1f2144){return function(_0x2216a0){if(!_0x2216a0){_0x43ff62['sendStatus'](0x194);}return _0x2216a0;};}function handleError(_0x3f9aa5,_0x20a9e6){_0x20a9e6=_0x20a9e6||0x1f4;return function(_0x158df9){logger[_0x6689('0x26')](_0x158df9[_0x6689('0x27')]);if(_0x158df9['name']){delete _0x158df9[_0x6689('0x28')];}_0x3f9aa5[_0x6689('0x1a')](_0x20a9e6)[_0x6689('0x29')](_0x158df9);};}exports[_0x6689('0x2a')]=function(_0x1b1ba0,_0x3ae27c){var _0x478a3a={},_0x11d908={},_0x9b1764={'count':0x0,'rows':[]};var _0x4aeb83=_[_0x6689('0x2b')](db[_0x6689('0x2c')][_0x6689('0x2d')],function(_0x5606be){return{'name':_0x5606be[_0x6689('0x2e')],'type':_0x5606be[_0x6689('0x2f')][_0x6689('0x30')]};});_0x11d908[_0x6689('0x31')]=_[_0x6689('0x2b')](_0x4aeb83,_0x6689('0x28'));_0x11d908['query']=_['keys'](_0x1b1ba0[_0x6689('0x32')]);_0x11d908[_0x6689('0x33')]=_['intersection'](_0x11d908['model'],_0x11d908[_0x6689('0x32')]);_0x478a3a[_0x6689('0x34')]=_[_0x6689('0x35')](_0x11d908[_0x6689('0x31')],qs[_0x6689('0x36')](_0x1b1ba0[_0x6689('0x32')][_0x6689('0x36')]));_0x478a3a[_0x6689('0x34')]=_0x478a3a[_0x6689('0x34')][_0x6689('0x37')]?_0x478a3a['attributes']:_0x11d908[_0x6689('0x31')];if(!_0x1b1ba0[_0x6689('0x32')][_0x6689('0x38')]('nolimit')){_0x478a3a['limit']=qs[_0x6689('0x1d')](_0x1b1ba0[_0x6689('0x32')]['limit']);_0x478a3a[_0x6689('0x1b')]=qs[_0x6689('0x1b')](_0x1b1ba0[_0x6689('0x32')][_0x6689('0x1b')]);}_0x478a3a['order']=qs[_0x6689('0x39')](_0x1b1ba0[_0x6689('0x32')][_0x6689('0x39')]);_0x478a3a[_0x6689('0x3a')]=qs['filters'](_[_0x6689('0x3b')](_0x1b1ba0[_0x6689('0x32')],_0x11d908['filters']),_0x4aeb83);if(_0x1b1ba0[_0x6689('0x32')][_0x6689('0x3c')]){_0x478a3a[_0x6689('0x3a')]=_['merge'](_0x478a3a[_0x6689('0x3a')],{'$or':_['map'](_0x4aeb83,function(_0x3bf61a){if(_0x3bf61a['type']!==_0x6689('0x3d')){var _0x36ea18={};_0x36ea18[_0x3bf61a[_0x6689('0x28')]]={'$like':'%'+_0x1b1ba0['query'][_0x6689('0x3c')]+'%'};return _0x36ea18;}})});}_0x478a3a=_[_0x6689('0x3e')]({},_0x478a3a,_0x1b1ba0[_0x6689('0x3f')]);var _0x37ad73={'where':_0x478a3a[_0x6689('0x3a')]};return db[_0x6689('0x2c')]['count'](_0x37ad73)[_0x6689('0x23')](function(_0x3dc188){_0x9b1764[_0x6689('0x1e')]=_0x3dc188;if(_0x1b1ba0['query'][_0x6689('0x40')]){_0x478a3a[_0x6689('0x41')]=[{'all':!![]}];}return db[_0x6689('0x2c')]['findAll'](_0x478a3a);})[_0x6689('0x23')](function(_0x4106d2){_0x9b1764['rows']=_0x4106d2;return _0x9b1764;})[_0x6689('0x23')](respondWithFilteredResult(_0x3ae27c,_0x478a3a))[_0x6689('0x42')](handleError(_0x3ae27c,null));};exports[_0x6689('0x43')]=function(_0x469d39,_0x99a4b3){var _0x1ca8e4={'raw':![],'where':{'id':_0x469d39['params']['id']}},_0x4f7b4b={};_0x4f7b4b[_0x6689('0x31')]=_['keys'](db[_0x6689('0x2c')][_0x6689('0x2d')]);_0x4f7b4b['query']=_['keys'](_0x469d39['query']);_0x4f7b4b['filters']=_[_0x6689('0x35')](_0x4f7b4b[_0x6689('0x31')],_0x4f7b4b['query']);_0x1ca8e4['attributes']=_['intersection'](_0x4f7b4b[_0x6689('0x31')],qs['fields'](_0x469d39[_0x6689('0x32')][_0x6689('0x36')]));_0x1ca8e4[_0x6689('0x34')]=_0x1ca8e4[_0x6689('0x34')]['length']?_0x1ca8e4['attributes']:_0x4f7b4b[_0x6689('0x31')];if(_0x469d39[_0x6689('0x32')][_0x6689('0x40')]){_0x1ca8e4[_0x6689('0x41')]=[{'all':!![]}];}_0x1ca8e4=_[_0x6689('0x3e')]({},_0x1ca8e4,_0x469d39[_0x6689('0x3f')]);return db['UserProfile'][_0x6689('0x44')](_0x1ca8e4)[_0x6689('0x23')](handleEntityNotFound(_0x99a4b3,null))[_0x6689('0x23')](respondWithResult(_0x99a4b3,null))[_0x6689('0x42')](handleError(_0x99a4b3,null));};exports['create']=function(_0x55f264,_0x166edb){return db[_0x6689('0x2c')][_0x6689('0x45')](_0x55f264[_0x6689('0x46')],{})[_0x6689('0x23')](respondWithResult(_0x166edb,0xc9))[_0x6689('0x42')](handleError(_0x166edb,null));};exports[_0x6689('0x47')]=function(_0x569ff4,_0x1eb48e){var _0x5006ee={'where':{'id':_0x569ff4['params']['id']}},_0x10495a={};_0x10495a[_0x6689('0x31')]=_['keys'](db[_0x6689('0x2c')][_0x6689('0x2d')]);_0x5006ee[_0x6689('0x34')]=_[_0x6689('0x35')](_0x10495a[_0x6689('0x31')],qs[_0x6689('0x36')](_0x569ff4[_0x6689('0x32')][_0x6689('0x36')]));_0x5006ee[_0x6689('0x34')]=_0x5006ee['attributes'][_0x6689('0x37')]?_0x5006ee[_0x6689('0x34')]:_0x10495a['model'];if(_0x569ff4[_0x6689('0x32')][_0x6689('0x40')]){_0x5006ee[_0x6689('0x41')]=[{'all':!![]}];}_0x5006ee=_[_0x6689('0x3e')]({},_0x5006ee,_0x569ff4[_0x6689('0x3f')]);return db[_0x6689('0x2c')][_0x6689('0x44')](_0x5006ee)[_0x6689('0x23')](handleEntityNotFound(_0x1eb48e,null))[_0x6689('0x23')](function(_0x449483){if(_0x449483){var _0x307718=_0x449483['get']({'plain':!![]});_0x307718=qs['omit'](_0x307718,['id',_0x6689('0x48'),_0x6689('0x49'),'crudPermissions']);_0x569ff4['body']=_[_0x6689('0x4a')](_0x569ff4[_0x6689('0x46')],['id',_0x6689('0x48'),_0x6689('0x49')]);return db['sequelize']['transaction'](function(_0x4dfca4){return db[_0x6689('0x2c')]['create'](_['merge'](_0x307718,_0x569ff4[_0x6689('0x46')]),{'include':_0x569ff4[_0x6689('0x32')][_0x6689('0x40')]?[{'all':!![]}]:undefined,'transaction':_0x4dfca4})[_0x6689('0x23')](function(_0x4e5165){var _0x494fd4=_0x4e5165['get']({'plain':!![]});return db[_0x6689('0x4b')][_0x6689('0x4c')]({'where':{'userProfileId':_0x569ff4['params']['id']},'raw':!![]})['then'](function(_0x2cd566){if(_0x2cd566){return BPromise['each'](_0x2cd566,function(_0x5d2d38){return new BPromise(function(_0x5105de,_0x21a274){if(_0x5d2d38[_0x6689('0x4d')]===null||_0x5d2d38['autoAssociation']===0x1)_0x5105de(null);return db[_0x6689('0x4e')][_0x6689('0x4c')]({'where':{'sectionId':_0x5d2d38['id']},'raw':!![]})[_0x6689('0x23')](function(_0xd16094){var _0x226f4e=_[_0x6689('0x2b')](_0xd16094,function(_0x53eb3f){return qs[_0x6689('0x4a')](_0x53eb3f,['id','createdAt','updatedAt','sectionId']);});_0x5105de(_0x226f4e);})[_0x6689('0x42')](function(_0x18c553){_0x21a274(_0x18c553);});})[_0x6689('0x23')](function(_0x313c79){var _0xb7360c=qs[_0x6689('0x4a')](_0x5d2d38,['id',_0x6689('0x48'),_0x6689('0x49')]);_0xb7360c['userProfileId']=_0x494fd4['id'];if(_0x313c79)_0xb7360c[_0x6689('0x4f')]=_0x313c79;return _0xb7360c;})[_0x6689('0x23')](function(_0x56e179){return db[_0x6689('0x4b')][_0x6689('0x45')](_0x56e179,{'include':[{'model':db[_0x6689('0x4e')],'as':'Resources'}],'raw':!![],'transaction':_0x4dfca4});});})[_0x6689('0x23')](function(){return _0x494fd4;});}});});});}})[_0x6689('0x23')](respondWithResult(_0x1eb48e,0xc9))[_0x6689('0x42')](handleError(_0x1eb48e,null));};exports['update']=function(_0x3694e3,_0x440b1b){if(_0x3694e3[_0x6689('0x46')]['id']){delete _0x3694e3['body']['id'];}return db[_0x6689('0x2c')][_0x6689('0x44')]({'where':{'id':_0x3694e3[_0x6689('0x50')]['id']}})[_0x6689('0x23')](handleEntityNotFound(_0x440b1b,null))[_0x6689('0x23')](saveUpdates(_0x3694e3[_0x6689('0x46')],null))[_0x6689('0x23')](respondWithResult(_0x440b1b,null))['catch'](handleError(_0x440b1b,null));};exports[_0x6689('0x24')]=function(_0x184131,_0x17694d){return db[_0x6689('0x2c')]['find']({'where':{'id':_0x184131[_0x6689('0x50')]['id']}})[_0x6689('0x23')](handleEntityNotFound(_0x17694d,null))[_0x6689('0x23')](removeEntity(_0x17694d,null))[_0x6689('0x42')](handleError(_0x17694d,null));};exports[_0x6689('0x51')]=function(_0x460997,_0x45232e){return db['UserProfile'][_0x6689('0x51')]()[_0x6689('0x23')](respondWithResult(_0x45232e,null))['catch'](handleError(_0x45232e,null));};exports['addSections']=function(_0x40ba88,_0x247dcb){var _0x455ebc=_0x40ba88[_0x6689('0x46')];return db['UserProfile'][_0x6689('0x44')]({'where':{'id':_0x40ba88[_0x6689('0x50')]['id']}})['then'](handleEntityNotFound(_0x247dcb,null))['then'](function(_0x5118c2){if(_0x5118c2){return db['sequelize'][_0x6689('0x52')](function(_0x171ecd){return db[_0x6689('0x4b')][_0x6689('0x24')]({'where':{'userProfileId':_0x40ba88[_0x6689('0x50')]['id'],'sectionId':_[_0x6689('0x2b')](_0x455ebc,function(_0x469c29){return _0x469c29[_0x6689('0x53')];})},'transaction':_0x171ecd})[_0x6689('0x23')](function(){var _0x42f989=_[_0x6689('0x2b')](_0x455ebc,function(_0x55e759){_0x55e759[_0x6689('0x54')]=_0x40ba88[_0x6689('0x50')]['id'];return _0x55e759;});var _0x270b3c=[];return BPromise[_0x6689('0x55')](_0x42f989,function(_0x13ad0c){return db[_0x6689('0x4b')][_0x6689('0x45')](_0x13ad0c,{'include':[{'model':db[_0x6689('0x4e')],'as':_0x6689('0x4f')}],'raw':!![],'transaction':_0x171ecd})[_0x6689('0x23')](function(_0x59eada){_0x270b3c[_0x6689('0x56')](_0x59eada['get']({'plain':!![]}));});})[_0x6689('0x23')](function(){return _0x270b3c;});});});}})[_0x6689('0x23')](function(_0x2d6e81){return _0x2d6e81;})['then'](respondWithResult(_0x247dcb,null))[_0x6689('0x42')](handleError(_0x247dcb,null));};exports[_0x6689('0x57')]=function(_0x2491ae,_0x5dc6ec){var _0x2ed92f;return db[_0x6689('0x2c')][_0x6689('0x44')]({'where':{'id':_0x2491ae[_0x6689('0x50')]['id']},'attributes':['id',_0x6689('0x28')]})['then'](handleEntityNotFound(_0x5dc6ec,null))['then'](function(_0xa9fe00){if(_0xa9fe00){_0x2ed92f=_0xa9fe00;return db[_0x6689('0x4b')][_0x6689('0x24')]({'where':{'userProfileId':_0x2491ae['params']['id'],'sectionId':_0x2491ae[_0x6689('0x32')][_0x6689('0x58')]}});}})[_0x6689('0x23')](function(){return _0x2ed92f;})['then'](respondWithStatusCode(_0x5dc6ec,null))[_0x6689('0x42')](handleError(_0x5dc6ec,null));};exports['getSections']=function(_0x23491e,_0x4c7ae8){var _0x8d5145=[];var _0x57b43d=[];return db[_0x6689('0x4b')][_0x6689('0x4c')]({'where':{'userProfileId':_0x23491e['params']['id']},'raw':!![]})[_0x6689('0x23')](function(_0x5d0fca){_0x8d5145=_[_0x6689('0x3c')](_0x5d0fca,function(_0xdb76c5){return _0xdb76c5[_0x6689('0x59')]===0x1||_[_0x6689('0x5a')]([0x3eb,0x709],_0xdb76c5[_0x6689('0x53')]);});if(!_[_0x6689('0x5b')](_0x8d5145)){return _[_0x6689('0x2b')](_0x8d5145,function(_0x2e667c){return _0x2e667c[_0x6689('0x53')];});}else{return;}})[_0x6689('0x23')](function(_0x361974){if(_0x361974)_0x57b43d=_0x361974;if(_['includes'](_0x57b43d,0x64)){var _0x14e0b6=_[_0x6689('0x44')](_0x8d5145,{'sectionId':0x64});return hasDefaultDashboard(_0x14e0b6)[_0x6689('0x23')](function(_0x200178){return _['map'](_0x8d5145,function(_0x38685b){if(_0x38685b[_0x6689('0x53')]===0x64){_0x38685b[_0x6689('0x5c')]=_0x200178;}return _0x38685b;});});}else{return;}})['then'](function(_0x2abd0b){if(_0x2abd0b)_0x8d5145=_0x2abd0b;if(_[_0x6689('0x5a')](_0x57b43d,0x3eb)){var _0x477e88=_[_0x6689('0x44')](_0x8d5145,{'sectionId':0x3eb});return getCustomDashboards(_0x477e88)['then'](function(_0x262ea0){return _['map'](_0x8d5145,function(_0x4868c5){if(_0x477e88[_0x6689('0x59')]){if(_0x4868c5[_0x6689('0x53')]===0x3eb){_0x4868c5[_0x6689('0x5c')]=_0x262ea0;}}else{if(_0x4868c5['sectionId']===0x64){if(!_0x4868c5[_0x6689('0x5c')]){_0x4868c5['subsections']=[];}_0x4868c5['subsections']=_0x4868c5[_0x6689('0x5c')]['concat'](_0x262ea0);}}return _0x4868c5;});});}else{return;}})[_0x6689('0x23')](function(_0x5f337b){if(_0x5f337b)_0x8d5145=_0x5f337b;if(_[_0x6689('0x5a')](_0x57b43d,0x709)){var _0x14da84=_[_0x6689('0x44')](_0x8d5145,{'sectionId':0x709});return getPlugins(_0x14da84)[_0x6689('0x23')](function(_0x5798dc){if(_0x14da84['enabled']){return _[_0x6689('0x2b')](_0x8d5145,function(_0x18c8e5){if(_0x18c8e5['sectionId']===0x709){_0x18c8e5[_0x6689('0x5c')]=_0x5798dc;}return _0x18c8e5;});}else{var _0x515e3c={'sectionId':0x76c,'enabled':0x1,'subsections':_0x5798dc};var _0x4a0863=_[_0x6689('0x2b')](_0x8d5145);_0x4a0863[_0x6689('0x56')](_0x515e3c);return _0x4a0863;}});}else{return;}})['then'](function(_0x240902){if(_0x240902)_0x8d5145=_0x240902;return _[_0x6689('0x3c')](_0x8d5145,['enabled',0x1]);})[_0x6689('0x23')](respondWithResult(_0x4c7ae8,null))['catch'](handleError(_0x4c7ae8,null));};function hasDefaultDashboard(_0x3ad281){var _0x1162e7=[0x65];return new BPromise(function(_0x4673bd,_0x3dad25){try{if(_0x3ad281[_0x6689('0x4d')]){_0x4673bd(_0x1162e7);}else{return db[_0x6689('0x4e')]['findOne']({'where':{'sectionId':_0x3ad281['id']},'raw':!![]})[_0x6689('0x23')](function(_0x47190b){_0x47190b?_0x4673bd(_0x1162e7):_0x4673bd();});}}catch(_0x100a5d){_0x3dad25(_0x100a5d);}});}function getCustomDashboards(_0x423f43){var _0x2ae456=[];return new BPromise(function(_0xbf7db,_0x4c4fba){try{if(_0x423f43[_0x6689('0x4d')]){return db[_0x6689('0x5d')][_0x6689('0x4c')]({'raw':!![]})[_0x6689('0x23')](function(_0x38a56e){_0x38a56e[_0x6689('0x5e')](function(_0x3ca748){_0x2ae456[_0x6689('0x56')](_0x3ca748['id']+0x1869f);});_0xbf7db(_0x2ae456);});}else{return db[_0x6689('0x4e')]['findAll']({'where':{'sectionId':_0x423f43['id']},'raw':!![]})[_0x6689('0x23')](function(_0x389bef){_0x389bef['forEach'](function(_0x2795b1){_0x2ae456[_0x6689('0x56')](_0x2795b1['resourceId']+0x1869f);});_0xbf7db(_0x2ae456);});}}catch(_0x165e4a){_0x4c4fba(_0x165e4a);}});}function getPlugins(_0x358ee3){var _0x83401c=[];return new BPromise(function(_0x431f56,_0x5ab120){try{if(_0x358ee3[_0x6689('0x4d')]){return db[_0x6689('0x5f')][_0x6689('0x4c')]({'raw':!![]})[_0x6689('0x23')](function(_0x5cfd13){_0x5cfd13[_0x6689('0x5e')](function(_0x47c8db){_0x83401c['push'](_0x47c8db['id']+0x15b38);});_0x431f56(_0x83401c);});}else{return db['UserProfileResource'][_0x6689('0x4c')]({'where':{'sectionId':_0x358ee3['id']},'raw':!![]})[_0x6689('0x23')](function(_0x4bc6d7){_0x4bc6d7['forEach'](function(_0x5c69ed){_0x83401c[_0x6689('0x56')](_0x5c69ed[_0x6689('0x60')]+0x15b38);});_0x431f56(_0x83401c);});}}catch(_0x40ad2d){_0x5ab120(_0x40ad2d);}});}exports[_0x6689('0x61')]=function(_0x1f860b,_0x53db57){return db[_0x6689('0x2c')][_0x6689('0x44')]({'where':{'id':_0x1f860b['params']['id']}})[_0x6689('0x23')](handleEntityNotFound(_0x53db57,null))[_0x6689('0x23')](function(_0x15e235){if(_0x15e235){return db[_0x6689('0x62')][_0x6689('0x52')](function(_0x2f003c){return db[_0x6689('0x4b')]['findAll']({'where':{'userProfileId':_0x1f860b['params']['id']},'attributes':['id'],'raw':!![]})[_0x6689('0x23')](function(_0xddcac3){if(_0xddcac3){return db[_0x6689('0x4b')][_0x6689('0x24')]({'where':{'userProfileId':_0x1f860b[_0x6689('0x50')]['id'],'id':_[_0x6689('0x2b')](_0xddcac3,function(_0x250e6f){return _0x250e6f['id'];})},'transaction':_0x2f003c});}})['then'](function(_0x10197b){var _0x1b7dbe=_[_0x6689('0x2b')](_0x1f860b[_0x6689('0x46')],function(_0x119563){_0x119563[_0x6689('0x54')]=_0x1f860b[_0x6689('0x50')]['id'];return _0x119563;});return db[_0x6689('0x4b')]['bulkCreate'](_0x1b7dbe,{'raw':!![],'transaction':_0x2f003c});})['then'](function(_0x3fb04f){var _0x20d1a9=_[_0x6689('0x3c')](_[_0x6689('0x2b')](_0x3fb04f,function(_0x341ee1){return _0x341ee1[_0x6689('0x63')]({'plain':!![]});}),{'includeAll':![]});if(_0x20d1a9){return db['UserProfileSection'][_0x6689('0x4c')]({'where':{'userProfileId':_0x1f860b[_0x6689('0x50')]['id'],'sectionId':_[_0x6689('0x2b')](_0x20d1a9,function(_0x5f233){return _0x5f233[_0x6689('0x53')];})},'attributes':['id',_0x6689('0x53')],'raw':!![]})[_0x6689('0x23')](function(_0x483aa5){var _0x395de9=_[_0x6689('0x2b')](_0x1f860b[_0x6689('0x46')],function(_0x14996d){_0x14996d[_0x6689('0x54')]=_0x1f860b[_0x6689('0x50')]['id'];return _0x14996d;});return db[_0x6689('0x4e')][_0x6689('0x64')](_0x395de9,{'raw':!![],'transaction':_0x2f003c});});}})[_0x6689('0x42')](handleError(_0x53db57,null));});}})['then'](function(_0x466255){var _0x4df036=_[_0x6689('0x2b')](_0x466255,function(_0x576050){return _0x576050[_0x6689('0x63')]({'plain':!![]});});})['then'](respondWithResult(_0x53db57,null))[_0x6689('0x42')](handleError(_0x53db57,null));};exports[_0x6689('0x65')]=function(_0x2e1c22,_0x510049,_0x16880b){return db['UserProfile'][_0x6689('0x44')]({'where':{'id':_0x2e1c22[_0x6689('0x50')]['id']}})['then'](handleEntityNotFound(_0x510049,null))[_0x6689('0x23')](function(_0x164ee8){if(_0x164ee8){return _0x164ee8[_0x6689('0x65')](_0x2e1c22[_0x6689('0x32')][_0x6689('0x58')]);}})['then'](respondWithStatusCode(_0x510049,null))['catch'](handleError(_0x510049,null));};exports[_0x6689('0x66')]=function(_0x312782,_0x1a9090){var _0x25ed75={};if(!_0x312782[_0x6689('0x32')][_0x6689('0x67')])throw new Error(_0x6689('0x68'));if(!_0x312782[_0x6689('0x32')]['hasOwnProperty'](_0x6689('0x69'))){_0x25ed75['limit']=qs[_0x6689('0x1d')](_0x312782[_0x6689('0x32')]['limit']);_0x25ed75[_0x6689('0x1b')]=qs[_0x6689('0x1b')](_0x312782[_0x6689('0x32')][_0x6689('0x1b')]);}return db[_0x6689('0x2c')][_0x6689('0x44')]({'where':{'id':_0x312782[_0x6689('0x50')]['id']}})[_0x6689('0x23')](function(_0x29d4e9){if(!_0x29d4e9)throw new Error(_0x6689('0x6a')+_0x312782[_0x6689('0x50')]['id']);return db[_0x6689('0x2c')][_0x6689('0x66')](_0x312782);})[_0x6689('0x23')](respondWithFilteredResult(_0x1a9090,_0x25ed75))[_0x6689('0x42')](handleError(_0x1a9090,null));};
\ No newline at end of file
+var _0x43ed=['transaction','UserProfileSection','each','sectionId','userProfileId','Resources','describe','addSections','UserProfileResource','removeSections','ids','getSections','includes','isEmpty','subsections','enabled','push','autoAssociation','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','update','then','destroy','error','stack','name','send','map','UserProfile','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','clone','get','createdAt','crudPermissions','omit','updatedAt','sequelize'];(function(_0x533852,_0x5e1347){var _0x3b39f2=function(_0x37711a){while(--_0x37711a){_0x533852['push'](_0x533852['shift']());}};_0x3b39f2(++_0x5e1347);}(_0x43ed,0x1ec));var _0xd43e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x43ed[_0x49ca18];return _0x145d54;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd43e('0x0'));var zipdir=require(_0xd43e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd43e('0x2'));var BPromise=require(_0xd43e('0x3'));var Mustache=require('mustache');var util=require(_0xd43e('0x4'));var path=require(_0xd43e('0x5'));var sox=require(_0xd43e('0x6'));var csv=require(_0xd43e('0x7'));var ejs=require(_0xd43e('0x8'));var fs=require('fs');var fs_extra=require(_0xd43e('0x9'));var _=require('lodash');var squel=require(_0xd43e('0xa'));var crypto=require(_0xd43e('0xb'));var jsforce=require(_0xd43e('0xc'));var deskjs=require(_0xd43e('0xd'));var toCsv=require(_0xd43e('0x7'));var querystring=require('querystring');var Papa=require(_0xd43e('0xe'));var Redis=require(_0xd43e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd43e('0x10'));var as=require(_0xd43e('0x11'));var hardwareService=require(_0xd43e('0x12'));var logger=require('../../config/logger')(_0xd43e('0x13'));var utils=require(_0xd43e('0x14'));var config=require(_0xd43e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xd43e('0x16'))['db'];config[_0xd43e('0x17')]=_[_0xd43e('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd43e('0x19'))(new Redis(config[_0xd43e('0x17')]));require('./userProfile.socket')[_0xd43e('0x1a')](socket);function respondWithStatusCode(_0xb0db7a,_0x38b424){_0x38b424=_0x38b424||0xcc;return function(_0x591060){if(_0x591060){return _0xb0db7a[_0xd43e('0x1b')](_0x38b424);}return _0xb0db7a[_0xd43e('0x1c')](_0x38b424)[_0xd43e('0x1d')]();};}function respondWithResult(_0x4f6117,_0x368497){_0x368497=_0x368497||0xc8;return function(_0x37b9f3){if(_0x37b9f3){return _0x4f6117[_0xd43e('0x1c')](_0x368497)['json'](_0x37b9f3);}};}function respondWithFilteredResult(_0x5f07c9,_0x565158){return function(_0x2bc3e7){if(_0x2bc3e7){var _0x4facb2=typeof _0x565158[_0xd43e('0x1e')]===_0xd43e('0x1f')&&typeof _0x565158[_0xd43e('0x20')]==='undefined';var _0xb7f45f=_0x2bc3e7[_0xd43e('0x21')];var _0x46f10a=_0x4facb2?0x0:_0x565158[_0xd43e('0x1e')];var _0x17bab9=_0x4facb2?_0x2bc3e7[_0xd43e('0x21')]:_0x565158[_0xd43e('0x1e')]+_0x565158[_0xd43e('0x20')];var _0x305b9e;if(_0x17bab9>=_0xb7f45f){_0x17bab9=_0xb7f45f;_0x305b9e=0xc8;}else{_0x305b9e=0xce;}_0x5f07c9[_0xd43e('0x1c')](_0x305b9e);return _0x5f07c9[_0xd43e('0x22')]('Content-Range',_0x46f10a+'-'+_0x17bab9+'/'+_0xb7f45f)[_0xd43e('0x23')](_0x2bc3e7);}return null;};}function patchUpdates(_0x69272){return function(_0x3c5e62){try{jsonpatch[_0xd43e('0x24')](_0x3c5e62,_0x69272,!![]);}catch(_0x181382){return BPromise['reject'](_0x181382);}return _0x3c5e62['save']();};}function saveUpdates(_0x1129a7,_0x324dc8){return function(_0x3e841a){if(_0x3e841a){return _0x3e841a[_0xd43e('0x25')](_0x1129a7)[_0xd43e('0x26')](function(_0x14b405){return _0x14b405;});}return null;};}function removeEntity(_0x396b4c,_0x4f877e){return function(_0x2639d8){if(_0x2639d8){return _0x2639d8[_0xd43e('0x27')]()[_0xd43e('0x26')](function(){_0x396b4c[_0xd43e('0x1c')](0xcc)[_0xd43e('0x1d')]();});}};}function handleEntityNotFound(_0x368ca5,_0x5209a9){return function(_0xcbf93a){if(!_0xcbf93a){_0x368ca5[_0xd43e('0x1b')](0x194);}return _0xcbf93a;};}function handleError(_0x3e649a,_0x2198bd){_0x2198bd=_0x2198bd||0x1f4;return function(_0x54a76f){logger[_0xd43e('0x28')](_0x54a76f[_0xd43e('0x29')]);if(_0x54a76f[_0xd43e('0x2a')]){delete _0x54a76f['name'];}_0x3e649a[_0xd43e('0x1c')](_0x2198bd)[_0xd43e('0x2b')](_0x54a76f);};}exports['index']=function(_0x50676a,_0x59fe17){var _0xc41586={},_0x4f6986={},_0x349971={'count':0x0,'rows':[]};var _0x3e2be3=_[_0xd43e('0x2c')](db[_0xd43e('0x2d')][_0xd43e('0x2e')],function(_0x325250){return{'name':_0x325250[_0xd43e('0x2f')],'type':_0x325250['type'][_0xd43e('0x30')]};});_0x4f6986['model']=_['map'](_0x3e2be3,'name');_0x4f6986[_0xd43e('0x31')]=_[_0xd43e('0x32')](_0x50676a[_0xd43e('0x31')]);_0x4f6986[_0xd43e('0x33')]=_[_0xd43e('0x34')](_0x4f6986[_0xd43e('0x35')],_0x4f6986[_0xd43e('0x31')]);_0xc41586[_0xd43e('0x36')]=_['intersection'](_0x4f6986['model'],qs[_0xd43e('0x37')](_0x50676a['query'][_0xd43e('0x37')]));_0xc41586[_0xd43e('0x36')]=_0xc41586[_0xd43e('0x36')][_0xd43e('0x38')]?_0xc41586['attributes']:_0x4f6986[_0xd43e('0x35')];if(!_0x50676a[_0xd43e('0x31')]['hasOwnProperty']('nolimit')){_0xc41586['limit']=qs['limit'](_0x50676a[_0xd43e('0x31')][_0xd43e('0x20')]);_0xc41586[_0xd43e('0x1e')]=qs[_0xd43e('0x1e')](_0x50676a[_0xd43e('0x31')][_0xd43e('0x1e')]);}_0xc41586[_0xd43e('0x39')]=qs['sort'](_0x50676a[_0xd43e('0x31')][_0xd43e('0x3a')]);_0xc41586[_0xd43e('0x3b')]=qs[_0xd43e('0x33')](_[_0xd43e('0x3c')](_0x50676a['query'],_0x4f6986[_0xd43e('0x33')]),_0x3e2be3);if(_0x50676a[_0xd43e('0x31')][_0xd43e('0x3d')]){_0xc41586[_0xd43e('0x3b')]=_[_0xd43e('0x3e')](_0xc41586['where'],{'$or':_['map'](_0x3e2be3,function(_0xb06b16){if(_0xb06b16[_0xd43e('0x3f')]!==_0xd43e('0x40')){var _0x519603={};_0x519603[_0xb06b16[_0xd43e('0x2a')]]={'$like':'%'+_0x50676a[_0xd43e('0x31')][_0xd43e('0x3d')]+'%'};return _0x519603;}})});}_0xc41586=_['merge']({},_0xc41586,_0x50676a[_0xd43e('0x41')]);var _0x55ca96={'where':_0xc41586[_0xd43e('0x3b')]};return db[_0xd43e('0x2d')][_0xd43e('0x21')](_0x55ca96)[_0xd43e('0x26')](function(_0xe2ce57){_0x349971['count']=_0xe2ce57;if(_0x50676a[_0xd43e('0x31')][_0xd43e('0x42')]){_0xc41586['include']=[{'all':!![]}];}return db[_0xd43e('0x2d')][_0xd43e('0x43')](_0xc41586);})['then'](function(_0x31c7d9){_0x349971[_0xd43e('0x44')]=_0x31c7d9;return _0x349971;})['then'](respondWithFilteredResult(_0x59fe17,_0xc41586))[_0xd43e('0x45')](handleError(_0x59fe17,null));};exports[_0xd43e('0x46')]=function(_0x1120fc,_0x268aca){var _0x200075={'raw':![],'where':{'id':_0x1120fc[_0xd43e('0x47')]['id']}},_0x43fbfa={};_0x43fbfa[_0xd43e('0x35')]=_[_0xd43e('0x32')](db['UserProfile'][_0xd43e('0x2e')]);_0x43fbfa['query']=_['keys'](_0x1120fc[_0xd43e('0x31')]);_0x43fbfa[_0xd43e('0x33')]=_[_0xd43e('0x34')](_0x43fbfa['model'],_0x43fbfa[_0xd43e('0x31')]);_0x200075[_0xd43e('0x36')]=_[_0xd43e('0x34')](_0x43fbfa['model'],qs[_0xd43e('0x37')](_0x1120fc[_0xd43e('0x31')]['fields']));_0x200075[_0xd43e('0x36')]=_0x200075[_0xd43e('0x36')]['length']?_0x200075['attributes']:_0x43fbfa['model'];if(_0x1120fc[_0xd43e('0x31')][_0xd43e('0x42')]){_0x200075[_0xd43e('0x48')]=[{'all':!![]}];}_0x200075=_['merge']({},_0x200075,_0x1120fc[_0xd43e('0x41')]);return db[_0xd43e('0x2d')][_0xd43e('0x49')](_0x200075)['then'](handleEntityNotFound(_0x268aca,null))['then'](respondWithResult(_0x268aca,null))[_0xd43e('0x45')](handleError(_0x268aca,null));};exports['create']=function(_0x56ce00,_0x429121){return db[_0xd43e('0x2d')][_0xd43e('0x4a')](_0x56ce00[_0xd43e('0x4b')],{})[_0xd43e('0x26')](respondWithResult(_0x429121,0xc9))[_0xd43e('0x45')](handleError(_0x429121,null));};exports[_0xd43e('0x4c')]=function(_0x585359,_0x1903fa){var _0x2b9791={'where':{'id':_0x585359[_0xd43e('0x47')]['id']}},_0x2872e0={};_0x2872e0['model']=_[_0xd43e('0x32')](db['UserProfile']['rawAttributes']);_0x2b9791[_0xd43e('0x36')]=_[_0xd43e('0x34')](_0x2872e0[_0xd43e('0x35')],qs[_0xd43e('0x37')](_0x585359['query'][_0xd43e('0x37')]));_0x2b9791[_0xd43e('0x36')]=_0x2b9791[_0xd43e('0x36')][_0xd43e('0x38')]?_0x2b9791[_0xd43e('0x36')]:_0x2872e0['model'];if(_0x585359[_0xd43e('0x31')][_0xd43e('0x42')]){_0x2b9791['include']=[{'all':!![]}];}_0x2b9791=_[_0xd43e('0x3e')]({},_0x2b9791,_0x585359[_0xd43e('0x41')]);return db[_0xd43e('0x2d')][_0xd43e('0x49')](_0x2b9791)[_0xd43e('0x26')](handleEntityNotFound(_0x1903fa,null))[_0xd43e('0x26')](function(_0x38e7b4){if(_0x38e7b4){var _0x178cc0=_0x38e7b4[_0xd43e('0x4d')]({'plain':!![]});_0x178cc0=qs['omit'](_0x178cc0,['id',_0xd43e('0x4e'),'updatedAt',_0xd43e('0x4f')]);_0x585359[_0xd43e('0x4b')]=_[_0xd43e('0x50')](_0x585359[_0xd43e('0x4b')],['id',_0xd43e('0x4e'),_0xd43e('0x51')]);return db[_0xd43e('0x52')][_0xd43e('0x53')](function(_0xc781df){return db['UserProfile']['create'](_[_0xd43e('0x3e')](_0x178cc0,_0x585359[_0xd43e('0x4b')]),{'include':_0x585359['query'][_0xd43e('0x42')]?[{'all':!![]}]:undefined,'transaction':_0xc781df})[_0xd43e('0x26')](function(_0x40a35b){var _0x5ac412=_0x40a35b[_0xd43e('0x4d')]({'plain':!![]});return db[_0xd43e('0x54')]['findAll']({'where':{'userProfileId':_0x585359[_0xd43e('0x47')]['id']},'raw':!![]})[_0xd43e('0x26')](function(_0x11f2dc){if(_0x11f2dc){return BPromise[_0xd43e('0x55')](_0x11f2dc,function(_0x35268d){return new BPromise(function(_0x51d7d3,_0x387c54){if(_0x35268d['autoAssociation']===null||_0x35268d['autoAssociation']===0x1)_0x51d7d3(null);return db['UserProfileResource'][_0xd43e('0x43')]({'where':{'sectionId':_0x35268d['id']},'raw':!![]})['then'](function(_0x2d4418){var _0x4d0332=_[_0xd43e('0x2c')](_0x2d4418,function(_0x50f810){return qs[_0xd43e('0x50')](_0x50f810,['id',_0xd43e('0x4e'),_0xd43e('0x51'),_0xd43e('0x56')]);});_0x51d7d3(_0x4d0332);})[_0xd43e('0x45')](function(_0x2ef482){_0x387c54(_0x2ef482);});})[_0xd43e('0x26')](function(_0x4081d1){var _0x324a77=qs[_0xd43e('0x50')](_0x35268d,['id',_0xd43e('0x4e'),_0xd43e('0x51')]);_0x324a77[_0xd43e('0x57')]=_0x5ac412['id'];if(_0x4081d1)_0x324a77['Resources']=_0x4081d1;return _0x324a77;})[_0xd43e('0x26')](function(_0x2c15db){return db[_0xd43e('0x54')][_0xd43e('0x4a')](_0x2c15db,{'include':[{'model':db['UserProfileResource'],'as':_0xd43e('0x58')}],'raw':!![],'transaction':_0xc781df});});})[_0xd43e('0x26')](function(){return _0x5ac412;});}});});});}})[_0xd43e('0x26')](respondWithResult(_0x1903fa,0xc9))[_0xd43e('0x45')](handleError(_0x1903fa,null));};exports[_0xd43e('0x25')]=function(_0x4382c4,_0x4e6688){if(_0x4382c4[_0xd43e('0x4b')]['id']){delete _0x4382c4['body']['id'];}return db['UserProfile'][_0xd43e('0x49')]({'where':{'id':_0x4382c4[_0xd43e('0x47')]['id']}})[_0xd43e('0x26')](handleEntityNotFound(_0x4e6688,null))[_0xd43e('0x26')](saveUpdates(_0x4382c4[_0xd43e('0x4b')],null))['then'](respondWithResult(_0x4e6688,null))[_0xd43e('0x45')](handleError(_0x4e6688,null));};exports[_0xd43e('0x27')]=function(_0x519b75,_0x193c1b){return db[_0xd43e('0x2d')][_0xd43e('0x49')]({'where':{'id':_0x519b75[_0xd43e('0x47')]['id']}})['then'](handleEntityNotFound(_0x193c1b,null))[_0xd43e('0x26')](removeEntity(_0x193c1b,null))[_0xd43e('0x45')](handleError(_0x193c1b,null));};exports[_0xd43e('0x59')]=function(_0x43d1ba,_0x3335c0){return db[_0xd43e('0x2d')]['describe']()[_0xd43e('0x26')](respondWithResult(_0x3335c0,null))[_0xd43e('0x45')](handleError(_0x3335c0,null));};exports[_0xd43e('0x5a')]=function(_0x55483d,_0x8cc4cc){var _0x12099e=_0x55483d['body'];return db['UserProfile']['find']({'where':{'id':_0x55483d[_0xd43e('0x47')]['id']}})[_0xd43e('0x26')](handleEntityNotFound(_0x8cc4cc,null))['then'](function(_0x25da62){if(_0x25da62){return db[_0xd43e('0x52')][_0xd43e('0x53')](function(_0xe7a400){return db[_0xd43e('0x54')][_0xd43e('0x27')]({'where':{'userProfileId':_0x55483d[_0xd43e('0x47')]['id'],'sectionId':_[_0xd43e('0x2c')](_0x12099e,function(_0x1e04b0){return _0x1e04b0[_0xd43e('0x56')];})},'transaction':_0xe7a400})[_0xd43e('0x26')](function(){var _0x589846=_['map'](_0x12099e,function(_0x1dab26){_0x1dab26[_0xd43e('0x57')]=_0x55483d[_0xd43e('0x47')]['id'];return _0x1dab26;});var _0x71c0b0=[];return BPromise[_0xd43e('0x55')](_0x589846,function(_0x197dbc){return db[_0xd43e('0x54')][_0xd43e('0x4a')](_0x197dbc,{'include':[{'model':db[_0xd43e('0x5b')],'as':_0xd43e('0x58')}],'raw':!![],'transaction':_0xe7a400})[_0xd43e('0x26')](function(_0x22dbe1){_0x71c0b0['push'](_0x22dbe1['get']({'plain':!![]}));});})[_0xd43e('0x26')](function(){return _0x71c0b0;});});});}})[_0xd43e('0x26')](function(_0x4927b2){return _0x4927b2;})[_0xd43e('0x26')](respondWithResult(_0x8cc4cc,null))[_0xd43e('0x45')](handleError(_0x8cc4cc,null));};exports[_0xd43e('0x5c')]=function(_0x49c420,_0x351782){var _0x463a22;return db['UserProfile'][_0xd43e('0x49')]({'where':{'id':_0x49c420['params']['id']},'attributes':['id',_0xd43e('0x2a')]})['then'](handleEntityNotFound(_0x351782,null))[_0xd43e('0x26')](function(_0xa46ecc){if(_0xa46ecc){_0x463a22=_0xa46ecc;return db['UserProfileSection'][_0xd43e('0x27')]({'where':{'userProfileId':_0x49c420['params']['id'],'sectionId':_0x49c420[_0xd43e('0x31')][_0xd43e('0x5d')]}});}})[_0xd43e('0x26')](function(){return _0x463a22;})[_0xd43e('0x26')](respondWithStatusCode(_0x351782,null))[_0xd43e('0x45')](handleError(_0x351782,null));};exports[_0xd43e('0x5e')]=function(_0x496ef8,_0x223c38){var _0x578928=[];var _0x537d82=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x496ef8[_0xd43e('0x47')]['id']},'raw':!![]})[_0xd43e('0x26')](function(_0x57c0f7){_0x578928=_[_0xd43e('0x3d')](_0x57c0f7,function(_0x3ceaa3){return _0x3ceaa3['enabled']===0x1||_[_0xd43e('0x5f')]([0x3eb,0x709],_0x3ceaa3['sectionId']);});if(!_[_0xd43e('0x60')](_0x578928)){return _['map'](_0x578928,function(_0x349a1e){return _0x349a1e[_0xd43e('0x56')];});}else{return;}})['then'](function(_0x5e5b0a){if(_0x5e5b0a)_0x537d82=_0x5e5b0a;if(_[_0xd43e('0x5f')](_0x537d82,0x64)){var _0x51e8a8=_[_0xd43e('0x49')](_0x578928,{'sectionId':0x64});return hasDefaultDashboard(_0x51e8a8)[_0xd43e('0x26')](function(_0x356585){return _['map'](_0x578928,function(_0x47ae2c){if(_0x47ae2c['sectionId']===0x64){_0x47ae2c[_0xd43e('0x61')]=_0x356585;}return _0x47ae2c;});});}else{return;}})[_0xd43e('0x26')](function(_0x2bdb53){if(_0x2bdb53)_0x578928=_0x2bdb53;if(_[_0xd43e('0x5f')](_0x537d82,0x3eb)){var _0x1aa8eb=_[_0xd43e('0x49')](_0x578928,{'sectionId':0x3eb});return getCustomDashboards(_0x1aa8eb)[_0xd43e('0x26')](function(_0x5d3dc2){return _[_0xd43e('0x2c')](_0x578928,function(_0x1afb8b){if(_0x1aa8eb[_0xd43e('0x62')]){if(_0x1afb8b[_0xd43e('0x56')]===0x3eb){_0x1afb8b[_0xd43e('0x61')]=_0x5d3dc2;}}else{if(_0x1afb8b[_0xd43e('0x56')]===0x64){if(!_0x1afb8b['subsections']){_0x1afb8b[_0xd43e('0x61')]=[];}_0x1afb8b[_0xd43e('0x61')]=_0x1afb8b[_0xd43e('0x61')]['concat'](_0x5d3dc2);}}return _0x1afb8b;});});}else{return;}})['then'](function(_0x1bb351){if(_0x1bb351)_0x578928=_0x1bb351;if(_[_0xd43e('0x5f')](_0x537d82,0x709)){var _0x39bb9a=_[_0xd43e('0x49')](_0x578928,{'sectionId':0x709});return getPlugins(_0x39bb9a)['then'](function(_0x1f3a84){if(_0x39bb9a[_0xd43e('0x62')]){return _['map'](_0x578928,function(_0x1bcdc0){if(_0x1bcdc0[_0xd43e('0x56')]===0x709){_0x1bcdc0['subsections']=_0x1f3a84;}return _0x1bcdc0;});}else{var _0x532abb={'sectionId':0x76c,'enabled':0x1,'subsections':_0x1f3a84};var _0x44c3e5=_[_0xd43e('0x2c')](_0x578928);_0x44c3e5[_0xd43e('0x63')](_0x532abb);return _0x44c3e5;}});}else{return;}})['then'](function(_0x283122){if(_0x283122)_0x578928=_0x283122;return _['filter'](_0x578928,['enabled',0x1]);})[_0xd43e('0x26')](respondWithResult(_0x223c38,null))[_0xd43e('0x45')](handleError(_0x223c38,null));};function hasDefaultDashboard(_0x16b5b5){var _0x3b38c0=[0x65];return new BPromise(function(_0x4c7ca2,_0x223f9f){try{if(_0x16b5b5[_0xd43e('0x64')]){_0x4c7ca2(_0x3b38c0);}else{return db[_0xd43e('0x5b')][_0xd43e('0x65')]({'where':{'sectionId':_0x16b5b5['id']},'raw':!![]})[_0xd43e('0x26')](function(_0x3aabc1){_0x3aabc1?_0x4c7ca2(_0x3b38c0):_0x4c7ca2();});}}catch(_0x24f8ee){_0x223f9f(_0x24f8ee);}});}function getCustomDashboards(_0x1ea040){var _0x165520=[];return new BPromise(function(_0x4d14b8,_0x447b42){try{if(_0x1ea040[_0xd43e('0x64')]){return db[_0xd43e('0x66')][_0xd43e('0x43')]({'raw':!![]})['then'](function(_0x29a5b8){_0x29a5b8[_0xd43e('0x67')](function(_0x1a9054){_0x165520[_0xd43e('0x63')](_0x1a9054['id']+0x1869f);});_0x4d14b8(_0x165520);});}else{return db[_0xd43e('0x5b')]['findAll']({'where':{'sectionId':_0x1ea040['id']},'raw':!![]})['then'](function(_0x4c7851){_0x4c7851['forEach'](function(_0x11be41){_0x165520['push'](_0x11be41[_0xd43e('0x68')]+0x1869f);});_0x4d14b8(_0x165520);});}}catch(_0x3ae817){_0x447b42(_0x3ae817);}});}function getPlugins(_0x4c6fe6){var _0x4b1237=[];return new BPromise(function(_0x1bfaa4,_0xda6428){try{if(_0x4c6fe6[_0xd43e('0x64')]){return db[_0xd43e('0x69')][_0xd43e('0x43')]({'raw':!![]})[_0xd43e('0x26')](function(_0x4ac0fb){_0x4ac0fb[_0xd43e('0x67')](function(_0x472d63){_0x4b1237['push'](_0x472d63['id']+0x15b38);});_0x1bfaa4(_0x4b1237);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x4c6fe6['id']},'raw':!![]})['then'](function(_0xe402ce){_0xe402ce[_0xd43e('0x67')](function(_0x986b6b){_0x4b1237['push'](_0x986b6b['resourceId']+0x15b38);});_0x1bfaa4(_0x4b1237);});}}catch(_0x470518){_0xda6428(_0x470518);}});}exports[_0xd43e('0x6a')]=function(_0xb3dd71,_0x12895b){return db[_0xd43e('0x2d')][_0xd43e('0x49')]({'where':{'id':_0xb3dd71[_0xd43e('0x47')]['id']}})[_0xd43e('0x26')](handleEntityNotFound(_0x12895b,null))['then'](function(_0x1d2f58){if(_0x1d2f58){return db[_0xd43e('0x52')][_0xd43e('0x53')](function(_0x880f75){return db[_0xd43e('0x54')][_0xd43e('0x43')]({'where':{'userProfileId':_0xb3dd71[_0xd43e('0x47')]['id']},'attributes':['id'],'raw':!![]})[_0xd43e('0x26')](function(_0x49d2a9){if(_0x49d2a9){return db[_0xd43e('0x54')][_0xd43e('0x27')]({'where':{'userProfileId':_0xb3dd71['params']['id'],'id':_[_0xd43e('0x2c')](_0x49d2a9,function(_0x199c4f){return _0x199c4f['id'];})},'transaction':_0x880f75});}})[_0xd43e('0x26')](function(_0x4a1e69){var _0x128f18=_['map'](_0xb3dd71[_0xd43e('0x4b')],function(_0x229ab2){_0x229ab2[_0xd43e('0x57')]=_0xb3dd71[_0xd43e('0x47')]['id'];return _0x229ab2;});return db[_0xd43e('0x54')][_0xd43e('0x6b')](_0x128f18,{'raw':!![],'transaction':_0x880f75});})[_0xd43e('0x26')](function(_0x1ecd5f){var _0x4daba9=_[_0xd43e('0x3d')](_[_0xd43e('0x2c')](_0x1ecd5f,function(_0x5db054){return _0x5db054[_0xd43e('0x4d')]({'plain':!![]});}),{'includeAll':![]});if(_0x4daba9){return db['UserProfileSection'][_0xd43e('0x43')]({'where':{'userProfileId':_0xb3dd71['params']['id'],'sectionId':_[_0xd43e('0x2c')](_0x4daba9,function(_0x29fe73){return _0x29fe73[_0xd43e('0x56')];})},'attributes':['id','sectionId'],'raw':!![]})[_0xd43e('0x26')](function(_0x3c5c71){var _0x48f889=_[_0xd43e('0x2c')](_0xb3dd71['body'],function(_0xfd246d){_0xfd246d[_0xd43e('0x57')]=_0xb3dd71[_0xd43e('0x47')]['id'];return _0xfd246d;});return db[_0xd43e('0x5b')][_0xd43e('0x6b')](_0x48f889,{'raw':!![],'transaction':_0x880f75});});}})[_0xd43e('0x45')](handleError(_0x12895b,null));});}})['then'](function(_0x201062){var _0x57d2b9=_['map'](_0x201062,function(_0x536e9b){return _0x536e9b['get']({'plain':!![]});});})['then'](respondWithResult(_0x12895b,null))[_0xd43e('0x45')](handleError(_0x12895b,null));};exports[_0xd43e('0x6c')]=function(_0x7a8141,_0x2aa9c4,_0x3f7d99){return db['UserProfile'][_0xd43e('0x49')]({'where':{'id':_0x7a8141[_0xd43e('0x47')]['id']}})[_0xd43e('0x26')](handleEntityNotFound(_0x2aa9c4,null))[_0xd43e('0x26')](function(_0x2df4d2){if(_0x2df4d2){return _0x2df4d2['removeResources'](_0x7a8141[_0xd43e('0x31')][_0xd43e('0x5d')]);}})[_0xd43e('0x26')](respondWithStatusCode(_0x2aa9c4,null))['catch'](handleError(_0x2aa9c4,null));};exports[_0xd43e('0x6d')]=function(_0x4a840d,_0x36cf43){var _0x4d1e8d={};if(!_0x4a840d['query'][_0xd43e('0x6e')])throw new Error(_0xd43e('0x6f'));if(!_0x4a840d['query'][_0xd43e('0x70')](_0xd43e('0x71'))){_0x4d1e8d['limit']=qs[_0xd43e('0x20')](_0x4a840d[_0xd43e('0x31')]['limit']);_0x4d1e8d[_0xd43e('0x1e')]=qs[_0xd43e('0x1e')](_0x4a840d[_0xd43e('0x31')]['offset']);}return db[_0xd43e('0x2d')]['find']({'where':{'id':_0x4a840d[_0xd43e('0x47')]['id']}})[_0xd43e('0x26')](function(_0x457fcd){if(!_0x457fcd)throw new Error(_0xd43e('0x72')+_0x4a840d['params']['id']);return db[_0xd43e('0x2d')][_0xd43e('0x6d')](_0x4a840d);})[_0xd43e('0x26')](respondWithFilteredResult(_0x36cf43,_0x4d1e8d))[_0xd43e('0x45')](handleError(_0x36cf43,null));};
\ No newline at end of file
index 8a2463c..b46e77c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x539d=['hasOwnProperty','hook','exports','events','UserProfile','setMaxListeners','remove','emit'];(function(_0x4492b0,_0x26b62b){var _0x1d0ebb=function(_0x51820b){while(--_0x51820b){_0x4492b0['push'](_0x4492b0['shift']());}};_0x1d0ebb(++_0x26b62b);}(_0x539d,0x17b));var _0xd539=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x539d[_0x599e60];return _0x468e19;};'use strict';var EventEmitter=require(_0xd539('0x0'));var UserProfile=require('../../mysqldb')['db'][_0xd539('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xd539('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xd539('0x3')};function emitEvent(_0x2a38d5){return function(_0xe8e6e4,_0x19ae25,_0x2f9d1f){UserProfileEvents['emit'](_0x2a38d5+':'+_0xe8e6e4['id'],_0xe8e6e4);UserProfileEvents[_0xd539('0x4')](_0x2a38d5,_0xe8e6e4);_0x2f9d1f(null);};}for(var e in events){if(events[_0xd539('0x5')](e)){var event=events[e];UserProfile[_0xd539('0x6')](e,emitEvent(event));}}module[_0xd539('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0xdec3=['hook','exports','events','UserProfile','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0xa116d5,_0x4dc2a6){var _0x3b94bf=function(_0x39dabf){while(--_0x39dabf){_0xa116d5['push'](_0xa116d5['shift']());}};_0x3b94bf(++_0x4dc2a6);}(_0xdec3,0x89));var _0x3dec=function(_0x4bca31,_0x394def){_0x4bca31=_0x4bca31-0x0;var _0x49816d=_0xdec3[_0x4bca31];return _0x49816d;};'use strict';var EventEmitter=require(_0x3dec('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x3dec('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3dec('0x2')](0x0);var events={'afterCreate':_0x3dec('0x3'),'afterUpdate':'update','afterDestroy':_0x3dec('0x4')};function emitEvent(_0x2821f7){return function(_0x16966b,_0x113b21,_0x5ca438){UserProfileEvents[_0x3dec('0x5')](_0x2821f7+':'+_0x16966b['id'],_0x16966b);UserProfileEvents[_0x3dec('0x5')](_0x2821f7,_0x16966b);_0x5ca438(null);};}for(var e in events){if(events[_0x3dec('0x6')](e)){var event=events[e];UserProfile[_0x3dec('0x7')](e,emitEvent(event));}}module[_0x3dec('0x8')]=UserProfileEvents;
\ No newline at end of file
index da2ebcb..720637d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54f4=['plugins','Plugin','extractedreports','AnalyticExtractedReport','Reports','reportId','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','query','toString','define','UserProfile','user_profiles','../../components/parsers/qs','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','autoAssociation','keys','intersection','fields','attributes','nolimit','limit','offset','order','sort','filters','pick','merge','VIRTUAL','foreignKey','associatedResources','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','count','rows','ids','customSorting','Tags','color','tag','ThroughTags','true','dataValues','sms','mail','openchannel','lodash','./userProfile.attributes','models','filter','value','findAll','then','catch','field','model','map','name','resourceId','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','SquareProjects','projectName','JscriptyProject','Lists','ListId','CmList','CmCompany','CmCustomField','chatqueues','chatwebsites','ChatWebsite','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','contexts','VoiceContext','VoiceMail','voicerecordings','VoiceRecording','parentSections','membername','User','role','agent','Telephones','telephone','queue','VoiceQueue','inbound','QueueCampaigns','type','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','OpenchannelQueue','OpenchannelAccount','SmsAccount','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','queuecampaigns','users','agents','telephones','admin','user','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','sugarcrmaccounts','DeskAccount','zohoaccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Tag','templates','Template','triggers','Trigger','trunks','Trunk','variables'];(function(_0x417774,_0x1b95e6){var _0x10015d=function(_0x2526b3){while(--_0x2526b3){_0x417774['push'](_0x417774['shift']());}};_0x10015d(++_0x1b95e6);}(_0x54f4,0x105));var _0x454f=function(_0x3cd8f3,_0x2f7eda){_0x3cd8f3=_0x3cd8f3-0x0;var _0x5c0601=_0x54f4[_0x3cd8f3];return _0x5c0601;};'use strict';var _=require(_0x454f('0x0'));var attributes=require(_0x454f('0x1'));var squel=require('squel');module['exports']=function(_0x32758e){var _0x11aae5=_0x32758e[_0x454f('0x2')];function _0x2c390e(_0x4ef672,_0x4c5071){return new Promise(function(_0x2254ad,_0x32a307){if(!_0x4c5071)return _0x2254ad(null);var _0x3f8e79=_0x4c5071[_0x454f('0x3')]?{[_0x4c5071[_0x454f('0x3')]['field']]:_0x4c5071['filter'][_0x454f('0x4')]}:undefined;return _0x11aae5[_0x4ef672][_0x454f('0x5')]({'where':_0x3f8e79,'raw':!![]})[_0x454f('0x6')](function(_0x558ef4){_0x4c5071['associatedResources']=_['map'](_0x558ef4,'id');_0x2254ad(_0x4c5071);})[_0x454f('0x7')](function(_0x5127ac){_0x32a307(_0x5127ac);});});}function _0x118b44(_0x55875b,_0x38a5b4){return new Promise(function(_0x2c088d,_0x499f4f){var _0x2d5855=_0x55875b[_0x454f('0x3')]?{[_0x55875b[_0x454f('0x3')][_0x454f('0x8')]]:_0x55875b['filter'][_0x454f('0x4')]}:undefined;return _0x11aae5[_0x55875b[_0x454f('0x9')]]['findAll']({'where':_0x2d5855,'raw':!![]})['then'](function(_0x215054){_0x38a5b4['associatedResources']=_[_0x454f('0xa')](_0x215054,function(_0x5a904b){return _0x5a904b[_0x454f('0xb')];});_0x2c088d(_0x38a5b4);})[_0x454f('0x7')](function(_0x44f252){_0x499f4f(_0x44f252);});});}function _0x257a69(_0x3cb902,_0x1dbdaf,_0x2c2fcc){if(!_0x1dbdaf)return Promise['resolve'](null);return new Promise(function(_0x89bfd1,_0x347f70){return _0x11aae5['UserProfileResource'][_0x454f('0x5')]({'where':{'sectionId':_0x1dbdaf['id']},'raw':!![]})['then'](function(_0x429723){if(_0x3cb902[_0x454f('0x8')]&&_0x3cb902[_0x454f('0x8')]!=='id'){_0x1dbdaf['associatedResources']=_[_0x454f('0xa')](_0x429723,function(_0x55dc52){return _0x55dc52[_0x3cb902['field']];});}else{if(_0x2c2fcc==='AnalyticExtractedReport'){_0x1dbdaf['associatedResources']=_['map'](_0x429723,function(_0x4329cf){return{'id':_0x4329cf[_0x454f('0xc')],'type':_0x4329cf['type']};});}else{_0x1dbdaf['associatedResources']=_[_0x454f('0xa')](_0x429723,function(_0x1be172){return _0x1be172[_0x454f('0xc')];});}}_0x89bfd1(_0x1dbdaf);})[_0x454f('0x7')](function(_0x59730a){_0x347f70(_0x59730a);});});}function _0x3c5633(_0x49a9ac,_0x580699){var _0x269247={'parentSections':[]};switch(_0x49a9ac[_0x454f('0xd')]()){case _0x454f('0xe'):_0x269247[_0x454f('0xf')]=_0x454f('0x10');break;case _0x454f('0x11'):_0x269247[_0x454f('0xf')]=_0x454f('0x12');break;case _0x454f('0x13'):_0x269247['childModel']=_0x454f('0x14');_0x269247['parentSections']=[{'name':_0x454f('0x15'),'field':_0x454f('0xb'),'foreignKey':_0x454f('0x16')}];break;case'projects':_0x269247[_0x454f('0xf')]=_0x454f('0x17');break;case'contacts':_0x269247['childModel']='CmContact';_0x269247['parentSections']=[{'name':_0x454f('0x18'),'field':'id','foreignKey':_0x454f('0x19')}];break;case'lists':_0x269247[_0x454f('0xf')]=_0x454f('0x1a');break;case'companies':_0x269247['childModel']=_0x454f('0x1b');break;case'globalcustomfields':_0x269247[_0x454f('0xf')]=_0x454f('0x1c');break;case _0x454f('0x1d'):_0x269247[_0x454f('0xf')]='ChatQueue';break;case _0x454f('0x1e'):_0x269247['childModel']=_0x454f('0x1f');break;case'faxqueues':_0x269247[_0x454f('0xf')]=_0x454f('0x20');break;case _0x454f('0x21'):_0x269247['childModel']=_0x454f('0x22');break;case _0x454f('0x23'):case _0x454f('0x24'):case'outboundroutes':_0x269247[_0x454f('0xf')]='VoiceExtension';break;case _0x454f('0x25'):_0x269247[_0x454f('0xf')]=_0x454f('0x26');break;case'voicemails':_0x269247['childModel']=_0x454f('0x27');break;case _0x454f('0x28'):_0x269247['childModel']=_0x454f('0x29');_0x269247[_0x454f('0x2a')]=[{'name':'Agents','field':_0x454f('0xb'),'foreignKey':_0x454f('0x2b'),'model':_0x454f('0x2c'),'filter':{'field':_0x454f('0x2d'),'value':[_0x454f('0x2e')]}},{'name':_0x454f('0x2f'),'field':_0x454f('0xb'),'foreignKey':_0x454f('0x2b'),'model':'User','filter':{'field':'role','value':[_0x454f('0x30')]}},{'name':'VoiceQueues','field':_0x454f('0xb'),'foreignKey':_0x454f('0x31'),'model':_0x454f('0x32'),'filter':{'field':'type','value':[_0x454f('0x33')]}},{'name':_0x454f('0x34'),'field':_0x454f('0xb'),'foreignKey':_0x454f('0x31'),'model':'VoiceQueue','filter':{'field':_0x454f('0x35'),'value':[_0x454f('0x36')]}}];break;case _0x454f('0x37'):_0x269247[_0x454f('0xf')]=_0x454f('0x38');break;case _0x454f('0x39'):_0x269247[_0x454f('0xf')]=_0x454f('0x3a');break;case _0x454f('0x3b'):_0x269247[_0x454f('0xf')]=_0x454f('0x3c');break;case _0x454f('0x3d'):_0x269247[_0x454f('0xf')]=_0x454f('0x3e');break;case _0x454f('0x3f'):_0x269247[_0x454f('0xf')]=_0x454f('0x40');break;case _0x454f('0x41'):_0x269247[_0x454f('0xf')]=_0x454f('0x42');break;case _0x454f('0x43'):_0x269247[_0x454f('0xf')]='MailSubstatus';break;case'openchannelqueues':_0x269247[_0x454f('0xf')]=_0x454f('0x44');break;case'openchannelaccounts':_0x269247['childModel']=_0x454f('0x45');break;case'smsqueues':_0x269247[_0x454f('0xf')]='SmsQueue';break;case'smsaccounts':_0x269247[_0x454f('0xf')]=_0x454f('0x46');break;case'whatsappqueues':_0x269247['childModel']=_0x454f('0x47');break;case _0x454f('0x48'):_0x269247[_0x454f('0xf')]=_0x454f('0x49');break;case _0x454f('0x4a'):_0x269247[_0x454f('0xf')]='Team';break;case'voicequeues':case _0x454f('0x4b'):_0x269247[_0x454f('0xf')]=_0x454f('0x32');if(_0x580699){_0x269247[_0x454f('0x2a')]=[{'name':'VoiceQueues'},{'name':_0x454f('0x34')}];}break;case _0x454f('0x4c'):case _0x454f('0x4d'):case _0x454f('0x4e'):_0x269247['childModel']=_0x454f('0x2c');if(_0x580699){_0x269247[_0x454f('0x2a')]=[{'name':'Users','filter':{'field':_0x454f('0x2d'),'value':[_0x454f('0x4f'),_0x454f('0x50')]},'ignore':!![]},{'name':'Agents'},{'name':_0x454f('0x2f')}];}break;case _0x454f('0x51'):_0x269247['childModel']=_0x454f('0x52');break;case _0x454f('0x53'):_0x269247[_0x454f('0xf')]=_0x454f('0x54');break;case _0x454f('0x55'):_0x269247['childModel']='FreshdeskAccount';break;case _0x454f('0x56'):_0x269247[_0x454f('0xf')]='SugarcrmAccount';break;case'deskaccounts':_0x269247[_0x454f('0xf')]=_0x454f('0x57');break;case _0x454f('0x58'):_0x269247[_0x454f('0xf')]='ZohoAccount';break;case'vtigeraccounts':_0x269247[_0x454f('0xf')]=_0x454f('0x2c');break;case _0x454f('0x59'):_0x269247['childModel']=_0x454f('0x5a');break;case _0x454f('0x5b'):_0x269247[_0x454f('0xf')]=_0x454f('0x5c');break;case'customdashboards':_0x269247[_0x454f('0xf')]=_0x454f('0x5d');break;case _0x454f('0x5e'):_0x269247[_0x454f('0xf')]=_0x454f('0x5f');break;case _0x454f('0x60'):_0x269247[_0x454f('0xf')]=_0x454f('0x61');break;case _0x454f('0x62'):_0x269247[_0x454f('0xf')]=_0x454f('0x63');break;case _0x454f('0x64'):_0x269247[_0x454f('0xf')]='Sound';break;case'tags':_0x269247['childModel']=_0x454f('0x65');break;case _0x454f('0x66'):_0x269247[_0x454f('0xf')]=_0x454f('0x67');break;case _0x454f('0x68'):_0x269247[_0x454f('0xf')]=_0x454f('0x69');break;case _0x454f('0x6a'):_0x269247[_0x454f('0xf')]=_0x454f('0x6b');break;case _0x454f('0x6c'):_0x269247['childModel']='Variable';break;case _0x454f('0x6d'):_0x269247['childModel']=_0x454f('0x6e');break;case _0x454f('0x6f'):_0x269247[_0x454f('0xf')]=_0x454f('0x70');_0x269247[_0x454f('0x2a')]=[{'name':_0x454f('0x71'),'field':'id','foreignKey':_0x454f('0x72')}];break;case'metrics':_0x269247['childModel']='AnalyticMetric';break;}return _0x269247;}function _0x22879c(_0x2d18f4,_0x1b85a1){var _0x3cbbe1=_0x2d18f4[_0x454f('0x73')](0x0)[_0x454f('0x74')]()+_0x2d18f4[_0x454f('0x75')](0x1);var _0x4611fe={'type':_0x11aae5[_0x454f('0x76')][_0x454f('0x77')][_0x454f('0x78')],'raw':!![]};return new Promise(function(_0x12d767,_0x127a2d){var _0x1a86c6=squel['select']()['field'](_0x454f('0x79')+_0x3cbbe1+_0x454f('0x7a'),'id')[_0x454f('0x8')](_0x454f('0x7b'))[_0x454f('0x7c')](_0x454f('0x7d')+_0x2d18f4+_0x454f('0x7e'),'ui')[_0x454f('0x7f')](_0x454f('0x80'),_0x1b85a1['id']);return _0x11aae5['sequelize'][_0x454f('0x81')](_0x1a86c6[_0x454f('0x82')](),_0x4611fe)['then'](function(_0x1c9261){_0x1b85a1[_0x3cbbe1+'OpenTabs']=_0x1c9261;_0x12d767(_0x1c9261);})[_0x454f('0x7')](function(_0x5891dc){_0x127a2d(_0x5891dc);});});}return _0x32758e[_0x454f('0x83')](_0x454f('0x84'),attributes,{'tableName':_0x454f('0x85'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x2ad82d){var _0x14edd7=require(_0x454f('0x86'));var _0x26a607={'raw':_0x2ad82d[_0x454f('0x81')][_0x454f('0x87')],'where':{}};var _0x53672a={};var _0x52f058={'count':0x0,'rows':[]};var _0x579993=_0x2ad82d['query'][_0x454f('0x88')];var _0x4d89ae=_0x2ad82d[_0x454f('0x81')][_0x454f('0x89')]||![];var _0x19bed9=_0x3c5633(_0x579993,_0x4d89ae);if(!_0x19bed9[_0x454f('0xf')])throw new Error(_0x454f('0x8a')+_0x579993+'\x27');var _0x3237ce=[{'name':_0x579993}];if(!_[_0x454f('0x8b')](_0x19bed9[_0x454f('0x2a')]))_0x3237ce=_0x19bed9[_0x454f('0x2a')];var _0x2f8933=[];for(var _0x2945c1=0x0;_0x2945c1<_0x3237ce[_0x454f('0x8c')];_0x2945c1++){_0x2f8933[_0x454f('0x8d')](_0x11aae5[_0x454f('0x8e')][_0x454f('0x8f')]({'where':{'userProfileId':_0x2ad82d[_0x454f('0x90')]['id'],'name':_0x3237ce[_0x2945c1][_0x454f('0xb')]},'raw':!![]}));}return Promise[_0x454f('0x91')](_0x2f8933)[_0x454f('0x6')](function(_0x36d01a){var _0x54df2c=_[_0x454f('0x3')](_0x36d01a,function(_0x5dfd1e){return _0x5dfd1e?_0x5dfd1e:undefined;});var _0x4da561=_[_0x454f('0x3')](_0x3237ce,[_0x454f('0x92'),!![]]);var _0x2f8344=_[_0x454f('0x8b')](_0x54df2c)&&_[_0x454f('0x8b')](_0x4da561)?null:_[_0x454f('0x93')](_0x4da561,_0x54df2c);if(!_0x2f8344)return null;var _0x470818=[];for(var _0x32c84d=0x0;_0x32c84d<_0x2f8344[_0x454f('0x8c')];_0x32c84d++){var _0x5ddbfe=_[_0x454f('0x8f')](_0x3237ce,function(_0x43fb5b){return _0x2f8344[_0x32c84d]?_0x43fb5b[_0x454f('0xb')]===_0x2f8344[_0x32c84d]['name']:null;});if(_0x5ddbfe){if(_0x2f8344[_0x32c84d][_0x454f('0x92')]){_0x470818[_0x454f('0x8d')](_0x2c390e(_0x19bed9['childModel'],_0x2f8344[_0x32c84d]));}else{if(!_0x2f8344[_0x32c84d][_0x454f('0x94')]){_0x470818[_0x454f('0x8d')](_0x257a69(_0x5ddbfe,_0x2f8344[_0x32c84d],_0x19bed9[_0x454f('0xf')]));}else{if(_0x5ddbfe['model']){_0x470818[_0x454f('0x8d')](_0x118b44(_0x5ddbfe,_0x2f8344[_0x32c84d]));}}}}}return Promise[_0x454f('0x91')](_0x470818);})[_0x454f('0x6')](function(_0x5d96f4){var _0x5d2fbe=_0x5d96f4;var _0x7ef57=null;if(_0x5d2fbe){_0x7ef57=_0x5d2fbe[_0x454f('0x8c')]===0x1?_0x5d2fbe[0x0]:null;}if(!_0x7ef57&&!_0x5d2fbe)return _0x52f058;var _0x527479=_0x11aae5[_0x19bed9[_0x454f('0xf')]]['rawAttributes'];_0x53672a[_0x454f('0x9')]=_[_0x454f('0x95')](_0x527479);_0x53672a[_0x454f('0x81')]=_['keys'](_0x2ad82d['query']);_0x53672a['filters']=_['intersection'](_0x53672a[_0x454f('0x9')],_0x53672a['query']);_0x26a607['attributes']=_[_0x454f('0x96')](_0x53672a[_0x454f('0x9')],_0x14edd7[_0x454f('0x97')](_0x2ad82d['query'][_0x454f('0x97')]));_0x26a607[_0x454f('0x98')]=_0x26a607[_0x454f('0x98')]['length']?_0x26a607[_0x454f('0x98')]:_0x53672a[_0x454f('0x9')];if(!_0x2ad82d[_0x454f('0x81')]['hasOwnProperty'](_0x454f('0x99'))){_0x26a607[_0x454f('0x9a')]=_0x14edd7[_0x454f('0x9a')](_0x2ad82d[_0x454f('0x81')][_0x454f('0x9a')]);_0x26a607[_0x454f('0x9b')]=_0x14edd7[_0x454f('0x9b')](_0x2ad82d[_0x454f('0x81')]['offset']);}_0x26a607[_0x454f('0x9c')]=_0x14edd7[_0x454f('0x9d')](_0x2ad82d[_0x454f('0x81')][_0x454f('0x9d')]);_0x26a607[_0x454f('0x7f')]=_0x14edd7[_0x454f('0x9e')](_[_0x454f('0x9f')](_0x2ad82d[_0x454f('0x81')],_0x53672a[_0x454f('0x9e')]));if(_0x2ad82d[_0x454f('0x81')][_0x454f('0x3')]){_0x26a607[_0x454f('0x7f')]=_[_0x454f('0xa0')](_0x26a607[_0x454f('0x7f')],{'$or':_[_0x454f('0xa')](_0x527479,function(_0x3aa870){if(_0x3aa870[_0x454f('0x35')]['key']!==_0x454f('0xa1')){var _0x58b01b={};_0x58b01b[_0x3aa870[_0x454f('0x8')]]={'$like':'%'+_0x2ad82d[_0x454f('0x81')]['filter']+'%'};return _0x58b01b;}})});}var _0x1a1f84=[];var _0x46146b=null;var _0xf47711={};if(_0x7ef57){_0x46146b=_['find'](_0x3237ce,[_0x454f('0xb'),_0x7ef57[_0x454f('0xb')]]);if(_0x46146b['field']){_0xf47711={};if(_0x19bed9['childModel']===_0x454f('0x70')){_0xf47711[_0x46146b[_0x454f('0xa2')]]=_[_0x454f('0xa')](_0x7ef57[_0x454f('0xa3')],'id');}else{_0xf47711[_0x46146b['foreignKey']]=_0x7ef57[_0x454f('0xa3')];}_0x1a1f84[_0x454f('0x8d')](_0xf47711);}else{_0x26a607[_0x454f('0x7f')]['id']=_0x7ef57[_0x454f('0xa3')];}}else{for(var _0x28a296=0x0;_0x28a296<_0x5d2fbe[_0x454f('0x8c')];_0x28a296++){_0x46146b=_[_0x454f('0x8f')](_0x3237ce,[_0x454f('0xb'),_0x5d2fbe[_0x28a296][_0x454f('0xb')]]);if(_0x46146b[_0x454f('0x8')]){_0xf47711={};_0xf47711[_0x46146b[_0x454f('0xa2')]]=_0x5d2fbe[_0x28a296][_0x454f('0xa3')];_0x1a1f84[_0x454f('0x8d')](_0xf47711);}else{if(!_0x26a607['where']['id'])_0x26a607[_0x454f('0x7f')]['id']=[];_0x5d2fbe[_0x28a296]['associatedResources'][_0x454f('0xa4')](function(_0x4a1bbd){_0x26a607[_0x454f('0x7f')]['id'][_0x454f('0x8d')](_0x4a1bbd);});}}}if(!_[_0x454f('0x8b')](_0x1a1f84)){_0x26a607[_0x454f('0x7f')]=_[_0x454f('0xa0')](_0x26a607[_0x454f('0x7f')],{'$and':{'$or':_0x1a1f84}});}_0x26a607=_['merge']({},_0x26a607,_0x2ad82d[_0x454f('0xa5')]);if(_0x7ef57&&!_0x7ef57[_0x454f('0x94')]&&_0x19bed9[_0x454f('0xf')]===_0x454f('0x70')){if(_0x2ad82d[_0x454f('0x81')][_0x454f('0xa6')]){_0x26a607[_0x454f('0xa7')]=[{'all':!![]}];}return _0x11aae5[_0x19bed9[_0x454f('0xf')]][_0x454f('0x5')](_0x26a607)[_0x454f('0x6')](function(_0x3a613c){var _0x1b349e=[];_0x3a613c[_0x454f('0xa4')](function(_0x27ed1e){var _0x3dca2f;switch(_0x27ed1e[_0x454f('0xa8')]){case _0x454f('0xa9'):_0x3dca2f=_['find'](_0x7ef57[_0x454f('0xa3')],function(_0x722ff3){return _0x722ff3['id']===_0x27ed1e['reportId']&&_0x722ff3[_0x454f('0x35')]===_0x454f('0xaa');});break;case _0x454f('0xab'):_0x3dca2f=_[_0x454f('0x8f')](_0x7ef57['associatedResources'],function(_0x362157){return _0x362157['id']===_0x27ed1e[_0x454f('0x72')]&&_0x362157[_0x454f('0x35')]==='CustomReports';});break;}if(_0x3dca2f)_0x1b349e[_0x454f('0x8d')](_0x27ed1e);});_0x52f058[_0x454f('0xac')]=_0x1b349e['length'];_0x52f058[_0x454f('0xad')]=_0x1b349e;return _0x52f058;});}else{if(!_[_0x454f('0x8b')](_0x2ad82d[_0x454f('0x81')][_0x454f('0xae')])){_0x26a607[_0x454f('0x7f')]['id']=_0x26a607[_0x454f('0x7f')]['id']?_[_0x454f('0x96')](_0x26a607['where']['id'],_0x2ad82d[_0x454f('0x81')][_0x454f('0xae')]):_0x2ad82d[_0x454f('0x81')][_0x454f('0xae')];if(_0x2ad82d[_0x454f('0x81')][_0x454f('0xaf')]){_0x26a607[_0x454f('0x9c')]=_0x2ad82d['query'][_0x454f('0xaf')];}}if(_0x2ad82d[_0x454f('0x81')]['extraQueryConditions']){_0x26a607[_0x454f('0x7f')]=_[_0x454f('0xa0')](_0x26a607[_0x454f('0x7f')],{'$and':_0x2ad82d['query']['extraQueryConditions']});}return _0x11aae5[_0x19bed9['childModel']]['count']({'where':_0x26a607[_0x454f('0x7f')]})['then'](function(_0x4fbcf4){_0x52f058[_0x454f('0xac')]=_0x4fbcf4;if(_0x2ad82d[_0x454f('0x81')][_0x454f('0xa6')]){if(_0x19bed9[_0x454f('0xf')]==='CmContact'){_0x26a607[_0x454f('0xa7')]=[{'model':_0x11aae5[_0x454f('0x65')],'as':_0x454f('0xb0'),'attributes':['id',_0x454f('0xb'),_0x454f('0xb1')],'required':_0x2ad82d[_0x454f('0x81')][_0x454f('0xb2')]?!![]:![]},{'model':_0x11aae5[_0x454f('0x65')],'as':_0x454f('0xb3'),'attributes':['id',_0x454f('0xb'),_0x454f('0xb1')],'through':_0x2ad82d[_0x454f('0x81')][_0x454f('0xb2')]?{'attributes':[],'where':{'TagId':_0x2ad82d[_0x454f('0x81')][_0x454f('0xb2')]||undefined}}:{},'required':_0x2ad82d[_0x454f('0x81')]['tag']?!![]:![]}];}else{_0x26a607['include']=[{'all':!![]}];}}return _0x11aae5[_0x19bed9[_0x454f('0xf')]][_0x454f('0x5')](_0x26a607);})[_0x454f('0x6')](function(_0x126025){_0x52f058[_0x454f('0xad')]=_0x126025;if(_0x579993==='Agents'&&_0x2ad82d['query']['openTabs']===_0x454f('0xb4')){var _0x318264=[];for(var _0x16c826=0x0;_0x16c826<_0x52f058[_0x454f('0xad')]['length'];_0x16c826++){_0x318264[_0x454f('0x8d')](_0x22879c('chat',_0x52f058[_0x454f('0xad')][_0x16c826][_0x454f('0xb5')]));_0x318264[_0x454f('0x8d')](_0x22879c(_0x454f('0xb6'),_0x52f058[_0x454f('0xad')][_0x16c826][_0x454f('0xb5')]));_0x318264['push'](_0x22879c('fax',_0x52f058[_0x454f('0xad')][_0x16c826][_0x454f('0xb5')]));_0x318264['push'](_0x22879c(_0x454f('0xb7'),_0x52f058['rows'][_0x16c826][_0x454f('0xb5')]));_0x318264[_0x454f('0x8d')](_0x22879c(_0x454f('0xb8'),_0x52f058[_0x454f('0xad')][_0x16c826]['dataValues']));_0x318264[_0x454f('0x8d')](_0x22879c('whatsapp',_0x52f058[_0x454f('0xad')][_0x16c826]['dataValues']));}return Promise[_0x454f('0x91')](_0x318264)[_0x454f('0x6')](function(){return _0x52f058;});}return _0x52f058;});}});}}});};
\ No newline at end of file
+var _0xf04e=['Campaign','mailqueues','MailQueue','mailaccounts','MailSubstatus','OpenchannelQueue','smsqueues','smsaccounts','SmsAccount','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','queuecampaigns','VoiceQueues','users','telephones','Users','admin','user','zendeskaccounts','salesforceaccounts','freshdeskaccounts','FreshdeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','Trunk','variables','Variable','plugins','Plugin','extractedreports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','QueryTypes','SELECT','ui.','ui.createdAt','from','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','define','UserProfile','user_profiles','../../components/parsers/qs','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','ignore','union','autoAssociation','rawAttributes','keys','filters','attributes','intersection','fields','hasOwnProperty','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','options','includeAll','include','findAll','reportType','default','DefaultReports','custom','CustomReports','count','rows','ids','customSorting','extraQueryConditions','Tags','tag','ThroughTags','color','openTabs','true','dataValues','sms','fax','mail','openchannel','whatsapp','all','./userProfile.attributes','squel','exports','models','filter','then','associatedResources','map','catch','field','value','model','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','projectName','JscriptyProject','contacts','CmContact','parentSections','Lists','ListId','lists','CmList','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','faxaccounts','FaxAccount','internalroutes','outboundroutes','VoiceExtension','contexts','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','Telephones','queue','VoiceQueue','inbound','QueueCampaigns','musiconholds','VoiceMusicOnHold','chanspies','voiceprefixes','ivrcampaigns'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf04e,0x84));var _0xef04=function(_0x14d228,_0x3d2674){_0x14d228=_0x14d228-0x0;var _0x1ddf91=_0xf04e[_0x14d228];return _0x1ddf91;};'use strict';var _=require('lodash');var attributes=require(_0xef04('0x0'));var squel=require(_0xef04('0x1'));module[_0xef04('0x2')]=function(_0x4a939f){var _0x154ad3=_0x4a939f[_0xef04('0x3')];function _0x561147(_0xfae872,_0x407759){return new Promise(function(_0x2b362a,_0xc9be29){if(!_0x407759)return _0x2b362a(null);var _0x1a8c49=_0x407759[_0xef04('0x4')]?{[_0x407759[_0xef04('0x4')]['field']]:_0x407759['filter']['value']}:undefined;return _0x154ad3[_0xfae872]['findAll']({'where':_0x1a8c49,'raw':!![]})[_0xef04('0x5')](function(_0x1b49dc){_0x407759[_0xef04('0x6')]=_[_0xef04('0x7')](_0x1b49dc,'id');_0x2b362a(_0x407759);})[_0xef04('0x8')](function(_0x22441e){_0xc9be29(_0x22441e);});});}function _0x316679(_0x1add01,_0x235131){return new Promise(function(_0x280bea,_0x427d1e){var _0x12c728=_0x1add01[_0xef04('0x4')]?{[_0x1add01[_0xef04('0x4')][_0xef04('0x9')]]:_0x1add01['filter'][_0xef04('0xa')]}:undefined;return _0x154ad3[_0x1add01[_0xef04('0xb')]]['findAll']({'where':_0x12c728,'raw':!![]})[_0xef04('0x5')](function(_0x12c9b7){_0x235131[_0xef04('0x6')]=_[_0xef04('0x7')](_0x12c9b7,function(_0x1d8e54){return _0x1d8e54[_0xef04('0xc')];});_0x280bea(_0x235131);})[_0xef04('0x8')](function(_0x74fe25){_0x427d1e(_0x74fe25);});});}function _0x14499f(_0x21bbef,_0x4ffac3,_0x1f4184){if(!_0x4ffac3)return Promise[_0xef04('0xd')](null);return new Promise(function(_0x132e89,_0x32820a){return _0x154ad3[_0xef04('0xe')]['findAll']({'where':{'sectionId':_0x4ffac3['id']},'raw':!![]})['then'](function(_0x3a02fd){if(_0x21bbef[_0xef04('0x9')]&&_0x21bbef[_0xef04('0x9')]!=='id'){_0x4ffac3[_0xef04('0x6')]=_[_0xef04('0x7')](_0x3a02fd,function(_0x1afdeb){return _0x1afdeb[_0x21bbef[_0xef04('0x9')]];});}else{if(_0x1f4184===_0xef04('0xf')){_0x4ffac3['associatedResources']=_[_0xef04('0x7')](_0x3a02fd,function(_0x330f6b){return{'id':_0x330f6b[_0xef04('0x10')],'type':_0x330f6b[_0xef04('0x11')]};});}else{_0x4ffac3[_0xef04('0x6')]=_[_0xef04('0x7')](_0x3a02fd,function(_0x53ee6d){return _0x53ee6d[_0xef04('0x10')];});}}_0x132e89(_0x4ffac3);})[_0xef04('0x8')](function(_0x29f40e){_0x32820a(_0x29f40e);});});}function _0x38edf4(_0x4a8a62,_0x326004){var _0x283315={'parentSections':[]};switch(_0x4a8a62['toLowerCase']()){case _0xef04('0x12'):_0x283315[_0xef04('0x13')]=_0xef04('0x14');break;case _0xef04('0x15'):_0x283315[_0xef04('0x13')]=_0xef04('0x16');break;case _0xef04('0x17'):_0x283315[_0xef04('0x13')]='SquareRecording';_0x283315['parentSections']=[{'name':'SquareProjects','field':_0xef04('0xc'),'foreignKey':_0xef04('0x18')}];break;case'projects':_0x283315['childModel']=_0xef04('0x19');break;case _0xef04('0x1a'):_0x283315[_0xef04('0x13')]=_0xef04('0x1b');_0x283315[_0xef04('0x1c')]=[{'name':_0xef04('0x1d'),'field':'id','foreignKey':_0xef04('0x1e')}];break;case _0xef04('0x1f'):_0x283315['childModel']=_0xef04('0x20');break;case'companies':_0x283315[_0xef04('0x13')]=_0xef04('0x21');break;case _0xef04('0x22'):_0x283315[_0xef04('0x13')]=_0xef04('0x23');break;case _0xef04('0x24'):_0x283315['childModel']=_0xef04('0x25');break;case _0xef04('0x26'):_0x283315[_0xef04('0x13')]='ChatWebsite';break;case'faxqueues':_0x283315[_0xef04('0x13')]='FaxQueue';break;case _0xef04('0x27'):_0x283315['childModel']=_0xef04('0x28');break;case'inboundroutes':case _0xef04('0x29'):case _0xef04('0x2a'):_0x283315[_0xef04('0x13')]=_0xef04('0x2b');break;case _0xef04('0x2c'):_0x283315['childModel']='VoiceContext';break;case _0xef04('0x2d'):_0x283315['childModel']=_0xef04('0x2e');break;case _0xef04('0x2f'):_0x283315['childModel']=_0xef04('0x30');_0x283315[_0xef04('0x1c')]=[{'name':_0xef04('0x31'),'field':_0xef04('0xc'),'foreignKey':_0xef04('0x32'),'model':_0xef04('0x33'),'filter':{'field':_0xef04('0x34'),'value':[_0xef04('0x35')]}},{'name':_0xef04('0x36'),'field':_0xef04('0xc'),'foreignKey':_0xef04('0x32'),'model':_0xef04('0x33'),'filter':{'field':_0xef04('0x34'),'value':['telephone']}},{'name':'VoiceQueues','field':_0xef04('0xc'),'foreignKey':_0xef04('0x37'),'model':_0xef04('0x38'),'filter':{'field':_0xef04('0x11'),'value':[_0xef04('0x39')]}},{'name':_0xef04('0x3a'),'field':_0xef04('0xc'),'foreignKey':_0xef04('0x37'),'model':_0xef04('0x38'),'filter':{'field':_0xef04('0x11'),'value':['outbound']}}];break;case _0xef04('0x3b'):_0x283315[_0xef04('0x13')]=_0xef04('0x3c');break;case _0xef04('0x3d'):_0x283315[_0xef04('0x13')]='VoiceChanSpy';break;case _0xef04('0x3e'):_0x283315[_0xef04('0x13')]='VoicePrefix';break;case _0xef04('0x3f'):_0x283315[_0xef04('0x13')]=_0xef04('0x40');break;case _0xef04('0x41'):_0x283315['childModel']=_0xef04('0x42');break;case _0xef04('0x43'):_0x283315[_0xef04('0x13')]='MailAccount';break;case'mailsubstatuses':_0x283315[_0xef04('0x13')]=_0xef04('0x44');break;case'openchannelqueues':_0x283315['childModel']=_0xef04('0x45');break;case'openchannelaccounts':_0x283315['childModel']='OpenchannelAccount';break;case _0xef04('0x46'):_0x283315[_0xef04('0x13')]='SmsQueue';break;case _0xef04('0x47'):_0x283315['childModel']=_0xef04('0x48');break;case _0xef04('0x49'):_0x283315[_0xef04('0x13')]='WhatsappQueue';break;case _0xef04('0x4a'):_0x283315[_0xef04('0x13')]=_0xef04('0x4b');break;case _0xef04('0x4c'):_0x283315['childModel']=_0xef04('0x4d');break;case _0xef04('0x4e'):case _0xef04('0x4f'):_0x283315[_0xef04('0x13')]=_0xef04('0x38');if(_0x326004){_0x283315['parentSections']=[{'name':_0xef04('0x50')},{'name':'QueueCampaigns'}];}break;case _0xef04('0x51'):case'agents':case _0xef04('0x52'):_0x283315[_0xef04('0x13')]=_0xef04('0x33');if(_0x326004){_0x283315[_0xef04('0x1c')]=[{'name':_0xef04('0x53'),'filter':{'field':'role','value':[_0xef04('0x54'),_0xef04('0x55')]},'ignore':!![]},{'name':_0xef04('0x31')},{'name':_0xef04('0x36')}];}break;case _0xef04('0x56'):_0x283315['childModel']='ZendeskAccount';break;case _0xef04('0x57'):_0x283315['childModel']='SalesforceAccount';break;case _0xef04('0x58'):_0x283315[_0xef04('0x13')]=_0xef04('0x59');break;case'sugarcrmaccounts':_0x283315[_0xef04('0x13')]='SugarcrmAccount';break;case'deskaccounts':_0x283315[_0xef04('0x13')]='DeskAccount';break;case _0xef04('0x5a'):_0x283315[_0xef04('0x13')]=_0xef04('0x5b');break;case _0xef04('0x5c'):_0x283315[_0xef04('0x13')]=_0xef04('0x33');break;case _0xef04('0x5d'):_0x283315[_0xef04('0x13')]=_0xef04('0x5e');break;case _0xef04('0x5f'):_0x283315[_0xef04('0x13')]=_0xef04('0x60');break;case _0xef04('0x61'):_0x283315['childModel']=_0xef04('0x62');break;case _0xef04('0x63'):_0x283315[_0xef04('0x13')]=_0xef04('0x64');break;case _0xef04('0x65'):_0x283315[_0xef04('0x13')]=_0xef04('0x66');break;case _0xef04('0x67'):_0x283315['childModel']=_0xef04('0x68');break;case _0xef04('0x69'):_0x283315[_0xef04('0x13')]=_0xef04('0x6a');break;case _0xef04('0x6b'):_0x283315['childModel']=_0xef04('0x6c');break;case _0xef04('0x6d'):_0x283315[_0xef04('0x13')]=_0xef04('0x6e');break;case _0xef04('0x6f'):_0x283315[_0xef04('0x13')]=_0xef04('0x70');break;case'trunks':_0x283315[_0xef04('0x13')]=_0xef04('0x71');break;case _0xef04('0x72'):_0x283315[_0xef04('0x13')]=_0xef04('0x73');break;case _0xef04('0x74'):_0x283315['childModel']=_0xef04('0x75');break;case _0xef04('0x76'):_0x283315[_0xef04('0x13')]=_0xef04('0xf');_0x283315[_0xef04('0x1c')]=[{'name':'Reports','field':'id','foreignKey':_0xef04('0x77')}];break;case _0xef04('0x78'):_0x283315['childModel']=_0xef04('0x79');break;}return _0x283315;}function _0xe05072(_0x4fe726,_0xd41d6a){var _0x161571=_0x4fe726[_0xef04('0x7a')](0x0)[_0xef04('0x7b')]()+_0x4fe726[_0xef04('0x7c')](0x1);var _0x3af4a1={'type':_0x154ad3['Sequelize'][_0xef04('0x7d')][_0xef04('0x7e')],'raw':!![]};return new Promise(function(_0x3f3ae9,_0x5024d6){var _0x40701e=squel['select']()[_0xef04('0x9')](_0xef04('0x7f')+_0x161571+'InteractionId','id')[_0xef04('0x9')](_0xef04('0x80'))[_0xef04('0x81')]('user_has_'+_0x4fe726+_0xef04('0x82'),'ui')[_0xef04('0x83')](_0xef04('0x84'),_0xd41d6a['id']);return _0x154ad3[_0xef04('0x85')][_0xef04('0x86')](_0x40701e[_0xef04('0x87')](),_0x3af4a1)['then'](function(_0x349467){_0xd41d6a[_0x161571+'OpenTabs']=_0x349467;_0x3f3ae9(_0x349467);})[_0xef04('0x8')](function(_0x5b7784){_0x5024d6(_0x5b7784);});});}return _0x4a939f[_0xef04('0x88')](_0xef04('0x89'),attributes,{'tableName':_0xef04('0x8a'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x5b8d5a){var _0x3ffd34=require(_0xef04('0x8b'));var _0x382969={'raw':_0x5b8d5a[_0xef04('0x86')][_0xef04('0x8c')],'where':{}};var _0x255211={};var _0x53c411={'count':0x0,'rows':[]};var _0x2885c8=_0x5b8d5a[_0xef04('0x86')][_0xef04('0x8d')];var _0x22e0cf=_0x5b8d5a[_0xef04('0x86')][_0xef04('0x8e')]||![];var _0x4789a3=_0x38edf4(_0x2885c8,_0x22e0cf);if(!_0x4789a3[_0xef04('0x13')])throw new Error(_0xef04('0x8f')+_0x2885c8+'\x27');var _0x5f0bd6=[{'name':_0x2885c8}];if(!_[_0xef04('0x90')](_0x4789a3[_0xef04('0x1c')]))_0x5f0bd6=_0x4789a3[_0xef04('0x1c')];var _0x478ee2=[];for(var _0x55fb38=0x0;_0x55fb38<_0x5f0bd6[_0xef04('0x91')];_0x55fb38++){_0x478ee2[_0xef04('0x92')](_0x154ad3[_0xef04('0x93')][_0xef04('0x94')]({'where':{'userProfileId':_0x5b8d5a['params']['id'],'name':_0x5f0bd6[_0x55fb38]['name']},'raw':!![]}));}return Promise['all'](_0x478ee2)[_0xef04('0x5')](function(_0x300574){var _0x50a8cc=_[_0xef04('0x4')](_0x300574,function(_0x48b4d4){return _0x48b4d4?_0x48b4d4:undefined;});var _0x2055aa=_[_0xef04('0x4')](_0x5f0bd6,[_0xef04('0x95'),!![]]);var _0x4465c4=_[_0xef04('0x90')](_0x50a8cc)&&_[_0xef04('0x90')](_0x2055aa)?null:_[_0xef04('0x96')](_0x2055aa,_0x50a8cc);if(!_0x4465c4)return null;var _0x4628ae=[];for(var _0x234c4c=0x0;_0x234c4c<_0x4465c4[_0xef04('0x91')];_0x234c4c++){var _0x5277a1=_[_0xef04('0x94')](_0x5f0bd6,function(_0x3fb754){return _0x4465c4[_0x234c4c]?_0x3fb754[_0xef04('0xc')]===_0x4465c4[_0x234c4c][_0xef04('0xc')]:null;});if(_0x5277a1){if(_0x4465c4[_0x234c4c][_0xef04('0x95')]){_0x4628ae[_0xef04('0x92')](_0x561147(_0x4789a3['childModel'],_0x4465c4[_0x234c4c]));}else{if(!_0x4465c4[_0x234c4c][_0xef04('0x97')]){_0x4628ae['push'](_0x14499f(_0x5277a1,_0x4465c4[_0x234c4c],_0x4789a3[_0xef04('0x13')]));}else{if(_0x5277a1[_0xef04('0xb')]){_0x4628ae['push'](_0x316679(_0x5277a1,_0x4465c4[_0x234c4c]));}}}}}return Promise['all'](_0x4628ae);})[_0xef04('0x5')](function(_0x3f29f2){var _0x4a5c39=_0x3f29f2;var _0x4cdccc=null;if(_0x4a5c39){_0x4cdccc=_0x4a5c39[_0xef04('0x91')]===0x1?_0x4a5c39[0x0]:null;}if(!_0x4cdccc&&!_0x4a5c39)return _0x53c411;var _0x32db86=_0x154ad3[_0x4789a3[_0xef04('0x13')]][_0xef04('0x98')];_0x255211['model']=_[_0xef04('0x99')](_0x32db86);_0x255211[_0xef04('0x86')]=_[_0xef04('0x99')](_0x5b8d5a[_0xef04('0x86')]);_0x255211[_0xef04('0x9a')]=_['intersection'](_0x255211['model'],_0x255211[_0xef04('0x86')]);_0x382969[_0xef04('0x9b')]=_[_0xef04('0x9c')](_0x255211[_0xef04('0xb')],_0x3ffd34[_0xef04('0x9d')](_0x5b8d5a['query'][_0xef04('0x9d')]));_0x382969['attributes']=_0x382969[_0xef04('0x9b')][_0xef04('0x91')]?_0x382969['attributes']:_0x255211['model'];if(!_0x5b8d5a[_0xef04('0x86')][_0xef04('0x9e')]('nolimit')){_0x382969['limit']=_0x3ffd34[_0xef04('0x9f')](_0x5b8d5a[_0xef04('0x86')][_0xef04('0x9f')]);_0x382969[_0xef04('0xa0')]=_0x3ffd34[_0xef04('0xa0')](_0x5b8d5a[_0xef04('0x86')][_0xef04('0xa0')]);}_0x382969[_0xef04('0xa1')]=_0x3ffd34[_0xef04('0xa2')](_0x5b8d5a[_0xef04('0x86')][_0xef04('0xa2')]);_0x382969['where']=_0x3ffd34[_0xef04('0x9a')](_[_0xef04('0xa3')](_0x5b8d5a[_0xef04('0x86')],_0x255211[_0xef04('0x9a')]));if(_0x5b8d5a['query'][_0xef04('0x4')]){_0x382969[_0xef04('0x83')]=_[_0xef04('0xa4')](_0x382969[_0xef04('0x83')],{'$or':_[_0xef04('0x7')](_0x32db86,function(_0x44d106){if(_0x44d106['type'][_0xef04('0xa5')]!==_0xef04('0xa6')){var _0xe552db={};_0xe552db[_0x44d106[_0xef04('0x9')]]={'$like':'%'+_0x5b8d5a[_0xef04('0x86')][_0xef04('0x4')]+'%'};return _0xe552db;}})});}var _0xe44a16=[];var _0x4e2f06=null;var _0x51a522={};if(_0x4cdccc){_0x4e2f06=_[_0xef04('0x94')](_0x5f0bd6,['name',_0x4cdccc['name']]);if(_0x4e2f06[_0xef04('0x9')]){_0x51a522={};if(_0x4789a3[_0xef04('0x13')]===_0xef04('0xf')){_0x51a522[_0x4e2f06['foreignKey']]=_[_0xef04('0x7')](_0x4cdccc[_0xef04('0x6')],'id');}else{_0x51a522[_0x4e2f06[_0xef04('0xa7')]]=_0x4cdccc[_0xef04('0x6')];}_0xe44a16[_0xef04('0x92')](_0x51a522);}else{_0x382969[_0xef04('0x83')]['id']=_0x4cdccc['associatedResources'];}}else{for(var _0x4b9cec=0x0;_0x4b9cec<_0x4a5c39['length'];_0x4b9cec++){_0x4e2f06=_[_0xef04('0x94')](_0x5f0bd6,[_0xef04('0xc'),_0x4a5c39[_0x4b9cec][_0xef04('0xc')]]);if(_0x4e2f06['field']){_0x51a522={};_0x51a522[_0x4e2f06[_0xef04('0xa7')]]=_0x4a5c39[_0x4b9cec][_0xef04('0x6')];_0xe44a16[_0xef04('0x92')](_0x51a522);}else{if(!_0x382969[_0xef04('0x83')]['id'])_0x382969[_0xef04('0x83')]['id']=[];_0x4a5c39[_0x4b9cec][_0xef04('0x6')][_0xef04('0xa8')](function(_0x3d8236){_0x382969['where']['id'][_0xef04('0x92')](_0x3d8236);});}}}if(!_['isEmpty'](_0xe44a16)){_0x382969[_0xef04('0x83')]=_[_0xef04('0xa4')](_0x382969[_0xef04('0x83')],{'$and':{'$or':_0xe44a16}});}_0x382969=_[_0xef04('0xa4')]({},_0x382969,_0x5b8d5a[_0xef04('0xa9')]);if(_0x4cdccc&&!_0x4cdccc[_0xef04('0x97')]&&_0x4789a3[_0xef04('0x13')]===_0xef04('0xf')){if(_0x5b8d5a[_0xef04('0x86')][_0xef04('0xaa')]){_0x382969[_0xef04('0xab')]=[{'all':!![]}];}return _0x154ad3[_0x4789a3[_0xef04('0x13')]][_0xef04('0xac')](_0x382969)['then'](function(_0x5dfb69){var _0x5378df=[];_0x5dfb69[_0xef04('0xa8')](function(_0x3ecd8d){var _0x3ed2e4;switch(_0x3ecd8d[_0xef04('0xad')]){case _0xef04('0xae'):_0x3ed2e4=_['find'](_0x4cdccc[_0xef04('0x6')],function(_0xd7e562){return _0xd7e562['id']===_0x3ecd8d[_0xef04('0x77')]&&_0xd7e562[_0xef04('0x11')]===_0xef04('0xaf');});break;case _0xef04('0xb0'):_0x3ed2e4=_[_0xef04('0x94')](_0x4cdccc[_0xef04('0x6')],function(_0x446384){return _0x446384['id']===_0x3ecd8d['reportId']&&_0x446384[_0xef04('0x11')]===_0xef04('0xb1');});break;}if(_0x3ed2e4)_0x5378df[_0xef04('0x92')](_0x3ecd8d);});_0x53c411[_0xef04('0xb2')]=_0x5378df['length'];_0x53c411[_0xef04('0xb3')]=_0x5378df;return _0x53c411;});}else{if(!_[_0xef04('0x90')](_0x5b8d5a[_0xef04('0x86')][_0xef04('0xb4')])){_0x382969[_0xef04('0x83')]['id']=_0x382969[_0xef04('0x83')]['id']?_[_0xef04('0x9c')](_0x382969['where']['id'],_0x5b8d5a[_0xef04('0x86')][_0xef04('0xb4')]):_0x5b8d5a['query'][_0xef04('0xb4')];if(_0x5b8d5a[_0xef04('0x86')][_0xef04('0xb5')]){_0x382969[_0xef04('0xa1')]=_0x5b8d5a[_0xef04('0x86')][_0xef04('0xb5')];}}if(_0x5b8d5a[_0xef04('0x86')][_0xef04('0xb6')]){_0x382969['where']=_['merge'](_0x382969[_0xef04('0x83')],{'$and':_0x5b8d5a[_0xef04('0x86')][_0xef04('0xb6')]});}return _0x154ad3[_0x4789a3[_0xef04('0x13')]][_0xef04('0xb2')]({'where':_0x382969[_0xef04('0x83')]})['then'](function(_0x13bb9e){_0x53c411[_0xef04('0xb2')]=_0x13bb9e;if(_0x5b8d5a[_0xef04('0x86')][_0xef04('0xaa')]){if(_0x4789a3['childModel']===_0xef04('0x1b')){_0x382969[_0xef04('0xab')]=[{'model':_0x154ad3[_0xef04('0x6c')],'as':_0xef04('0xb7'),'attributes':['id','name','color'],'required':_0x5b8d5a[_0xef04('0x86')][_0xef04('0xb8')]?!![]:![]},{'model':_0x154ad3[_0xef04('0x6c')],'as':_0xef04('0xb9'),'attributes':['id',_0xef04('0xc'),_0xef04('0xba')],'through':_0x5b8d5a['query'][_0xef04('0xb8')]?{'attributes':[],'where':{'TagId':_0x5b8d5a[_0xef04('0x86')][_0xef04('0xb8')]||undefined}}:{},'required':_0x5b8d5a['query']['tag']?!![]:![]}];}else{_0x382969['include']=[{'all':!![]}];}}return _0x154ad3[_0x4789a3[_0xef04('0x13')]][_0xef04('0xac')](_0x382969);})['then'](function(_0x18bac1){_0x53c411['rows']=_0x18bac1;if(_0x2885c8==='Agents'&&_0x5b8d5a[_0xef04('0x86')][_0xef04('0xbb')]===_0xef04('0xbc')){var _0x55e375=[];for(var _0x31985b=0x0;_0x31985b<_0x53c411['rows']['length'];_0x31985b++){_0x55e375[_0xef04('0x92')](_0xe05072('chat',_0x53c411[_0xef04('0xb3')][_0x31985b][_0xef04('0xbd')]));_0x55e375['push'](_0xe05072(_0xef04('0xbe'),_0x53c411[_0xef04('0xb3')][_0x31985b][_0xef04('0xbd')]));_0x55e375[_0xef04('0x92')](_0xe05072(_0xef04('0xbf'),_0x53c411[_0xef04('0xb3')][_0x31985b][_0xef04('0xbd')]));_0x55e375[_0xef04('0x92')](_0xe05072(_0xef04('0xc0'),_0x53c411['rows'][_0x31985b][_0xef04('0xbd')]));_0x55e375['push'](_0xe05072(_0xef04('0xc1'),_0x53c411[_0xef04('0xb3')][_0x31985b][_0xef04('0xbd')]));_0x55e375[_0xef04('0x92')](_0xe05072(_0xef04('0xc2'),_0x53c411[_0xef04('0xb3')][_0x31985b][_0xef04('0xbd')]));}return Promise[_0xef04('0xc3')](_0x55e375)['then'](function(){return _0x53c411;});}return _0x53c411;});}});}}});};
\ No newline at end of file
index 24a4a07..686a1be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e5=['../../config/utils','rpc','client','http','redis','localhost','socket.io-emitter','./userProfile.socket','register','request','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserProfile,\x20%s,\x20%s','info','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0xe30294,_0x159789){var _0x2cc672=function(_0x2424e5){while(--_0x2424e5){_0xe30294['push'](_0xe30294['shift']());}};_0x2cc672(++_0x159789);}(_0x11e5,0x8b));var _0x511e=function(_0x58b635,_0xc76a6b){_0x58b635=_0x58b635-0x0;var _0x552de0=_0x11e5[_0x58b635];return _0x552de0;};'use strict';var _=require(_0x511e('0x0'));var util=require('util');var moment=require(_0x511e('0x1'));var BPromise=require(_0x511e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x511e('0x3'));var db=require(_0x511e('0x4'))['db'];var utils=require(_0x511e('0x5'));var logger=require('../../config/logger')(_0x511e('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x511e('0x7')][_0x511e('0x8')]({'port':0x232a});config[_0x511e('0x9')]=_['defaults'](config['redis'],{'host':_0x511e('0xa'),'port':0x18eb});var socket=require(_0x511e('0xb'))(new Redis(config[_0x511e('0x9')]));require(_0x511e('0xc'))[_0x511e('0xd')](socket);function respondWithRpcPromise(_0x30269e,_0x1596b3,_0x50564b){return new BPromise(function(_0x2f547a,_0x1c6def){return client[_0x511e('0xe')](_0x30269e,_0x50564b)['then'](function(_0x7e50db){logger['info']('UserProfile,\x20%s,\x20%s',_0x1596b3,_0x511e('0xf'));logger[_0x511e('0x10')](_0x511e('0x11'),_0x1596b3,_0x511e('0xf'),JSON[_0x511e('0x12')](_0x7e50db));if(_0x7e50db[_0x511e('0x13')]){if(_0x7e50db['error'][_0x511e('0x14')]===0x1f4){logger[_0x511e('0x13')]('UserProfile,\x20%s,\x20%s',_0x1596b3,_0x7e50db[_0x511e('0x13')][_0x511e('0x15')]);return _0x1c6def(_0x7e50db['error'][_0x511e('0x15')]);}logger[_0x511e('0x13')](_0x511e('0x16'),_0x1596b3,_0x7e50db[_0x511e('0x13')]['message']);return _0x2f547a(_0x7e50db[_0x511e('0x13')][_0x511e('0x15')]);}else{logger[_0x511e('0x17')]('UserProfile,\x20%s,\x20%s',_0x1596b3,_0x511e('0xf'));_0x2f547a(_0x7e50db['result'][_0x511e('0x15')]);}})['catch'](function(_0x5821ee){logger[_0x511e('0x13')]('UserProfile,\x20%s,\x20%s',_0x1596b3,_0x5821ee);_0x1c6def(_0x5821ee);});});}
\ No newline at end of file
+var _0xe953=['defaults','localhost','socket.io-emitter','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http'];(function(_0x21437b,_0x4a0300){var _0x57bf08=function(_0x1f4c72){while(--_0x1f4c72){_0x21437b['push'](_0x21437b['shift']());}};_0x57bf08(++_0x4a0300);}(_0xe953,0xf9));var _0x3e95=function(_0x2642cb,_0x4b917f){_0x2642cb=_0x2642cb-0x0;var _0xe6e41=_0xe953[_0x2642cb];return _0xe6e41;};'use strict';var _=require(_0x3e95('0x0'));var util=require(_0x3e95('0x1'));var moment=require(_0x3e95('0x2'));var BPromise=require('bluebird');var rs=require(_0x3e95('0x3'));var fs=require('fs');var Redis=require(_0x3e95('0x4'));var db=require(_0x3e95('0x5'))['db'];var utils=require(_0x3e95('0x6'));var logger=require(_0x3e95('0x7'))(_0x3e95('0x8'));var config=require(_0x3e95('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3e95('0xa')]({'port':0x232a});config['redis']=_[_0x3e95('0xb')](config['redis'],{'host':_0x3e95('0xc'),'port':0x18eb});var socket=require(_0x3e95('0xd'))(new Redis(config['redis']));require('./userProfile.socket')[_0x3e95('0xe')](socket);function respondWithRpcPromise(_0x521403,_0x44996c,_0x478d4d){return new BPromise(function(_0x569b9d,_0x369081){return client[_0x3e95('0xf')](_0x521403,_0x478d4d)[_0x3e95('0x10')](function(_0x4882e3){logger[_0x3e95('0x11')](_0x3e95('0x12'),_0x44996c,_0x3e95('0x13'));logger[_0x3e95('0x14')](_0x3e95('0x15'),_0x44996c,'request\x20sent',JSON[_0x3e95('0x16')](_0x4882e3));if(_0x4882e3[_0x3e95('0x17')]){if(_0x4882e3[_0x3e95('0x17')]['code']===0x1f4){logger[_0x3e95('0x17')](_0x3e95('0x12'),_0x44996c,_0x4882e3[_0x3e95('0x17')][_0x3e95('0x18')]);return _0x369081(_0x4882e3[_0x3e95('0x17')][_0x3e95('0x18')]);}logger[_0x3e95('0x17')]('UserProfile,\x20%s,\x20%s',_0x44996c,_0x4882e3[_0x3e95('0x17')][_0x3e95('0x18')]);return _0x569b9d(_0x4882e3[_0x3e95('0x17')]['message']);}else{logger[_0x3e95('0x11')](_0x3e95('0x12'),_0x44996c,_0x3e95('0x13'));_0x569b9d(_0x4882e3['result']['message']);}})[_0x3e95('0x19')](function(_0x56ab9b){logger['error'](_0x3e95('0x12'),_0x44996c,_0x56ab9b);_0x369081(_0x56ab9b);});});}
\ No newline at end of file
index b4b27ee..0b6f14f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a66=['removeListener','register','userProfile:','./userProfile.events','save','update','emit'];(function(_0x5b6539,_0x5687c9){var _0x2ed350=function(_0x5e8c52){while(--_0x5e8c52){_0x5b6539['push'](_0x5b6539['shift']());}};_0x2ed350(++_0x5687c9);}(_0x6a66,0x1f4));var _0x66a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6a66[_0x3dd15e];return _0x231fd0;};'use strict';var UserProfileEvents=require(_0x66a6('0x0'));var events=[_0x66a6('0x1'),'remove',_0x66a6('0x2')];function createListener(_0x54eb69,_0x1696f7){return function(_0x3a7d34){_0x1696f7[_0x66a6('0x3')](_0x54eb69,_0x3a7d34);};}function removeListener(_0x250a2d,_0x3b081a){return function(){UserProfileEvents[_0x66a6('0x4')](_0x250a2d,_0x3b081a);};}exports[_0x66a6('0x5')]=function(_0x19fc9c){for(var _0x33a4cb=0x0,_0x4e24d5=events['length'];_0x33a4cb<_0x4e24d5;_0x33a4cb++){var _0x1936af=events[_0x33a4cb];var _0x1ba6d7=createListener(_0x66a6('0x6')+_0x1936af,_0x19fc9c);UserProfileEvents['on'](_0x1936af,_0x1ba6d7);}};
\ No newline at end of file
+var _0x4158=['./userProfile.events','save','update','removeListener','register','length','userProfile:'];(function(_0x2e6df1,_0x1b485a){var _0x421e47=function(_0x557599){while(--_0x557599){_0x2e6df1['push'](_0x2e6df1['shift']());}};_0x421e47(++_0x1b485a);}(_0x4158,0x17a));var _0x8415=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x4158[_0x1969a7];return _0x3d665f;};'use strict';var UserProfileEvents=require(_0x8415('0x0'));var events=[_0x8415('0x1'),'remove',_0x8415('0x2')];function createListener(_0x3b1756,_0x374f72){return function(_0x81d4c3){_0x374f72['emit'](_0x3b1756,_0x81d4c3);};}function removeListener(_0x3cc58e,_0x5257e0){return function(){UserProfileEvents[_0x8415('0x3')](_0x3cc58e,_0x5257e0);};}exports[_0x8415('0x4')]=function(_0x4c7393){for(var _0x5483c3=0x0,_0x336660=events[_0x8415('0x5')];_0x5483c3<_0x336660;_0x5483c3++){var _0x1e13fc=events[_0x5483c3];var _0xaa11e7=createListener(_0x8415('0x6')+_0x1e13fc,_0x4c7393);UserProfileEvents['on'](_0x1e13fc,_0xaa11e7);}};
\ No newline at end of file
index dabc707..829bb54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18da=['./userProfileResource.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x28389f,_0x2cefbe){var _0x16ce01=function(_0x5ce8e8){while(--_0x5ce8e8){_0x28389f['push'](_0x28389f['shift']());}};_0x16ce01(++_0x2cefbe);}(_0x18da,0x1b0));var _0xa18d=function(_0x7139d9,_0x5aa90e){_0x7139d9=_0x7139d9-0x0;var _0x40810f=_0x18da[_0x7139d9];return _0x40810f;};'use strict';var multer=require(_0xa18d('0x0'));var util=require(_0xa18d('0x1'));var path=require(_0xa18d('0x2'));var timeout=require(_0xa18d('0x3'));var express=require(_0xa18d('0x4'));var router=express[_0xa18d('0x5')]();var fs_extra=require(_0xa18d('0x6'));var auth=require(_0xa18d('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xa18d('0x8'));var controller=require(_0xa18d('0x9'));router[_0xa18d('0xa')]('/',auth[_0xa18d('0xb')](),controller[_0xa18d('0xc')]);router[_0xa18d('0xa')](_0xa18d('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0xa18d('0xa')](_0xa18d('0xe'),auth[_0xa18d('0xb')](),controller[_0xa18d('0xf')]);router[_0xa18d('0x10')]('/',auth[_0xa18d('0xb')](),controller[_0xa18d('0x11')]);router['put'](_0xa18d('0xe'),auth[_0xa18d('0xb')](),controller[_0xa18d('0x12')]);router[_0xa18d('0x13')](_0xa18d('0xe'),auth[_0xa18d('0xb')](),controller[_0xa18d('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x7f8d=['path','connect-timeout','express','fs-extra','../../components/interaction/service','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','destroy','multer','util'];(function(_0x4e6d29,_0x9e1341){var _0x33a3c5=function(_0x5a5be2){while(--_0x5a5be2){_0x4e6d29['push'](_0x4e6d29['shift']());}};_0x33a3c5(++_0x9e1341);}(_0x7f8d,0x1ec));var _0xd7f8=function(_0x3e9808,_0x141202){_0x3e9808=_0x3e9808-0x0;var _0xa51b7e=_0x7f8d[_0x3e9808];return _0xa51b7e;};'use strict';var multer=require(_0xd7f8('0x0'));var util=require(_0xd7f8('0x1'));var path=require(_0xd7f8('0x2'));var timeout=require(_0xd7f8('0x3'));var express=require(_0xd7f8('0x4'));var router=express['Router']();var fs_extra=require(_0xd7f8('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd7f8('0x6'));var config=require('../../config/environment');var controller=require(_0xd7f8('0x7'));router[_0xd7f8('0x8')]('/',auth[_0xd7f8('0x9')](),controller[_0xd7f8('0xa')]);router[_0xd7f8('0x8')](_0xd7f8('0xb'),auth[_0xd7f8('0x9')](),controller[_0xd7f8('0xc')]);router['get'](_0xd7f8('0xd'),auth[_0xd7f8('0x9')](),controller[_0xd7f8('0xe')]);router[_0xd7f8('0xf')]('/',auth[_0xd7f8('0x9')](),controller[_0xd7f8('0x10')]);router['put'](_0xd7f8('0xd'),auth['isAuthenticated'](),controller[_0xd7f8('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xd7f8('0x12')]);module['exports']=router;
\ No newline at end of file
index df6b2b7..728dda8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc562=['sequelize','exports','STRING','INTEGER'];(function(_0x3c46ac,_0x3c06d9){var _0x1363f1=function(_0x43b586){while(--_0x43b586){_0x3c46ac['push'](_0x3c46ac['shift']());}};_0x1363f1(++_0x3c06d9);}(_0xc562,0x1f4));var _0x2c56=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0xc562[_0x2fc012];return _0x2891f9;};'use strict';var Sequelize=require(_0x2c56('0x0'));module[_0x2c56('0x1')]={'name':{'type':Sequelize[_0x2c56('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x2c56('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x2c56('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x4f7c=['exports','STRING','INTEGER','sequelize'];(function(_0x3b0b92,_0x5bdef4){var _0x1239fe=function(_0x2add1b){while(--_0x2add1b){_0x3b0b92['push'](_0x3b0b92['shift']());}};_0x1239fe(++_0x5bdef4);}(_0x4f7c,0xff));var _0xc4f7=function(_0x27a36e,_0x1664b2){_0x27a36e=_0x27a36e-0x0;var _0x382947=_0x4f7c[_0x27a36e];return _0x382947;};'use strict';var Sequelize=require(_0xc4f7('0x0'));module[_0xc4f7('0x1')]={'name':{'type':Sequelize[_0xc4f7('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xc4f7('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc4f7('0x2')],'allowNull':![]}};
\ No newline at end of file
index 45eddd6..8d801ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['status','end','json','limit','undefined','offset','count','set','Content-Range','then','destroy','error','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','update','find','describe','eml-format','fast-json-patch','request-promise','moment','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus'];(function(_0x4cb272,_0x52c0e9){var _0x57b4aa=function(_0x1efefb){while(--_0x1efefb){_0x4cb272['push'](_0x4cb272['shift']());}};_0x57b4aa(++_0x52c0e9);}(_0x430c,0x1a1));var _0xc430=function(_0x1c6ef2,_0x8d926a){_0x1c6ef2=_0x1c6ef2-0x0;var _0x404b8c=_0x430c[_0x1c6ef2];return _0x404b8c;};'use strict';var emlformat=require(_0xc430('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc430('0x1'));var rp=require(_0xc430('0x2'));var moment=require(_0xc430('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc430('0x4'));var csv=require(_0xc430('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc430('0x6'));var _=require('lodash');var squel=require(_0xc430('0x7'));var crypto=require(_0xc430('0x8'));var jsforce=require(_0xc430('0x9'));var deskjs=require(_0xc430('0xa'));var toCsv=require(_0xc430('0x5'));var querystring=require(_0xc430('0xb'));var Papa=require(_0xc430('0xc'));var Redis=require(_0xc430('0xd'));var authService=require(_0xc430('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc430('0xf'));var hardwareService=require(_0xc430('0x10'));var logger=require('../../config/logger')(_0xc430('0x11'));var utils=require('../../config/utils');var config=require(_0xc430('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xc430('0x13'))['db'];function respondWithStatusCode(_0x8aa2e6,_0xc5f92){_0xc5f92=_0xc5f92||0xcc;return function(_0x1fb8ce){if(_0x1fb8ce){return _0x8aa2e6[_0xc430('0x14')](_0xc5f92);}return _0x8aa2e6[_0xc430('0x15')](_0xc5f92)[_0xc430('0x16')]();};}function respondWithResult(_0x54d851,_0x4e9134){_0x4e9134=_0x4e9134||0xc8;return function(_0x3f359c){if(_0x3f359c){return _0x54d851[_0xc430('0x15')](_0x4e9134)[_0xc430('0x17')](_0x3f359c);}};}function respondWithFilteredResult(_0x2ef538,_0x31d3b7){return function(_0x55cc6c){if(_0x55cc6c){var _0x111598=typeof _0x31d3b7['offset']==='undefined'&&typeof _0x31d3b7[_0xc430('0x18')]===_0xc430('0x19');var _0x2327c5=_0x55cc6c['count'];var _0x5d3acc=_0x111598?0x0:_0x31d3b7[_0xc430('0x1a')];var _0x4c1937=_0x111598?_0x55cc6c[_0xc430('0x1b')]:_0x31d3b7['offset']+_0x31d3b7['limit'];var _0x2f3203;if(_0x4c1937>=_0x2327c5){_0x4c1937=_0x2327c5;_0x2f3203=0xc8;}else{_0x2f3203=0xce;}_0x2ef538['status'](_0x2f3203);return _0x2ef538[_0xc430('0x1c')](_0xc430('0x1d'),_0x5d3acc+'-'+_0x4c1937+'/'+_0x2327c5)[_0xc430('0x17')](_0x55cc6c);}return null;};}function patchUpdates(_0x1f90bb){return function(_0x2a1ea1){try{jsonpatch['apply'](_0x2a1ea1,_0x1f90bb,!![]);}catch(_0x388a2f){return BPromise['reject'](_0x388a2f);}return _0x2a1ea1['save']();};}function saveUpdates(_0x3b7c3d,_0x2ea352){return function(_0x3c7afa){if(_0x3c7afa){return _0x3c7afa['update'](_0x3b7c3d)[_0xc430('0x1e')](function(_0x57d26e){return _0x57d26e;});}return null;};}function removeEntity(_0x23425d,_0x22ebfb){return function(_0x4efecd){if(_0x4efecd){return _0x4efecd[_0xc430('0x1f')]()[_0xc430('0x1e')](function(){_0x23425d['status'](0xcc)[_0xc430('0x16')]();});}};}function handleEntityNotFound(_0x59c498,_0x3aa85e){return function(_0x4b5280){if(!_0x4b5280){_0x59c498[_0xc430('0x14')](0x194);}return _0x4b5280;};}function handleError(_0x21e28a,_0x50110b){_0x50110b=_0x50110b||0x1f4;return function(_0x33433f){logger[_0xc430('0x20')](_0x33433f[_0xc430('0x21')]);if(_0x33433f[_0xc430('0x22')]){delete _0x33433f[_0xc430('0x22')];}_0x21e28a['status'](_0x50110b)[_0xc430('0x23')](_0x33433f);};}exports[_0xc430('0x24')]=function(_0x1c1da9,_0x1591e3){var _0x542cba={},_0x1f8086={},_0x4cf56c={'count':0x0,'rows':[]};var _0x1d65ee=_['map'](db[_0xc430('0x25')][_0xc430('0x26')],function(_0xfc8767){return{'name':_0xfc8767[_0xc430('0x27')],'type':_0xfc8767['type'][_0xc430('0x28')]};});_0x1f8086[_0xc430('0x29')]=_[_0xc430('0x2a')](_0x1d65ee,_0xc430('0x22'));_0x1f8086['query']=_[_0xc430('0x2b')](_0x1c1da9[_0xc430('0x2c')]);_0x1f8086['filters']=_[_0xc430('0x2d')](_0x1f8086['model'],_0x1f8086['query']);_0x542cba[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x1f8086[_0xc430('0x29')],qs[_0xc430('0x2f')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x2f')]));_0x542cba[_0xc430('0x2e')]=_0x542cba[_0xc430('0x2e')]['length']?_0x542cba[_0xc430('0x2e')]:_0x1f8086['model'];if(!_0x1c1da9[_0xc430('0x2c')][_0xc430('0x30')](_0xc430('0x31'))){_0x542cba[_0xc430('0x18')]=qs['limit'](_0x1c1da9[_0xc430('0x2c')]['limit']);_0x542cba['offset']=qs[_0xc430('0x1a')](_0x1c1da9[_0xc430('0x2c')]['offset']);}_0x542cba[_0xc430('0x32')]=qs[_0xc430('0x33')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x33')]);_0x542cba[_0xc430('0x34')]=qs[_0xc430('0x35')](_[_0xc430('0x36')](_0x1c1da9[_0xc430('0x2c')],_0x1f8086[_0xc430('0x35')]),_0x1d65ee);if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x37')]){_0x542cba[_0xc430('0x34')]=_[_0xc430('0x38')](_0x542cba[_0xc430('0x34')],{'$or':_[_0xc430('0x2a')](_0x1d65ee,function(_0x537e4c){if(_0x537e4c[_0xc430('0x39')]!==_0xc430('0x3a')){var _0x24363b={};_0x24363b[_0x537e4c[_0xc430('0x22')]]={'$like':'%'+_0x1c1da9['query'][_0xc430('0x37')]+'%'};return _0x24363b;}})});}_0x542cba=_[_0xc430('0x38')]({},_0x542cba,_0x1c1da9[_0xc430('0x3b')]);var _0x45b3dc={'where':_0x542cba[_0xc430('0x34')]};return db[_0xc430('0x25')]['count'](_0x45b3dc)[_0xc430('0x1e')](function(_0x348f2f){_0x4cf56c[_0xc430('0x1b')]=_0x348f2f;if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x3c')]){_0x542cba[_0xc430('0x3d')]=[{'all':!![]}];}return db[_0xc430('0x25')][_0xc430('0x3e')](_0x542cba);})[_0xc430('0x1e')](function(_0x4174d2){_0x4cf56c[_0xc430('0x3f')]=_0x4174d2;return _0x4cf56c;})[_0xc430('0x1e')](respondWithFilteredResult(_0x1591e3,_0x542cba))[_0xc430('0x40')](handleError(_0x1591e3,null));};exports[_0xc430('0x41')]=function(_0x5a9c4b,_0x47edb0){var _0x4983e0={'raw':![],'where':{'id':_0x5a9c4b[_0xc430('0x42')]['id']}},_0x262063={};_0x262063[_0xc430('0x29')]=_[_0xc430('0x2b')](db[_0xc430('0x25')][_0xc430('0x26')]);_0x262063[_0xc430('0x2c')]=_[_0xc430('0x2b')](_0x5a9c4b[_0xc430('0x2c')]);_0x262063[_0xc430('0x35')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],_0x262063[_0xc430('0x2c')]);_0x4983e0[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],qs['fields'](_0x5a9c4b[_0xc430('0x2c')][_0xc430('0x2f')]));_0x4983e0[_0xc430('0x2e')]=_0x4983e0[_0xc430('0x2e')][_0xc430('0x43')]?_0x4983e0[_0xc430('0x2e')]:_0x262063[_0xc430('0x29')];if(_0x5a9c4b[_0xc430('0x2c')]['includeAll']){_0x4983e0[_0xc430('0x3d')]=[{'all':!![]}];}_0x4983e0=_['merge']({},_0x4983e0,_0x5a9c4b[_0xc430('0x3b')]);return db[_0xc430('0x25')]['find'](_0x4983e0)['then'](handleEntityNotFound(_0x47edb0,null))[_0xc430('0x1e')](respondWithResult(_0x47edb0,null))['catch'](handleError(_0x47edb0,null));};exports['create']=function(_0x10db27,_0x4eafae){return db[_0xc430('0x25')][_0xc430('0x44')](_0x10db27[_0xc430('0x45')],{})['then'](respondWithResult(_0x4eafae,0xc9))[_0xc430('0x40')](handleError(_0x4eafae,null));};exports[_0xc430('0x46')]=function(_0x19e563,_0x549400){if(_0x19e563[_0xc430('0x45')]['id']){delete _0x19e563[_0xc430('0x45')]['id'];}return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x19e563[_0xc430('0x42')]['id']}})[_0xc430('0x1e')](handleEntityNotFound(_0x549400,null))[_0xc430('0x1e')](saveUpdates(_0x19e563['body'],null))[_0xc430('0x1e')](respondWithResult(_0x549400,null))[_0xc430('0x40')](handleError(_0x549400,null));};exports[_0xc430('0x1f')]=function(_0x4e9aff,_0x23cb41){return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x4e9aff[_0xc430('0x42')]['id']}})['then'](handleEntityNotFound(_0x23cb41,null))[_0xc430('0x1e')](removeEntity(_0x23cb41,null))['catch'](handleError(_0x23cb41,null));};exports[_0xc430('0x48')]=function(_0x214954,_0x2a5143){return db[_0xc430('0x25')][_0xc430('0x48')]()[_0xc430('0x1e')](respondWithResult(_0x2a5143,null))['catch'](handleError(_0x2a5143,null));};
\ No newline at end of file
+var _0x4137=['key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','params','includeAll','options','find','catch','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','limit','count','set','apply','reject','save','update','destroy','then','end','sendStatus','error','name','send','index','map','UserProfileResource','rawAttributes','type'];(function(_0x58e32c,_0x309781){var _0x481e60=function(_0x5326ab){while(--_0x5326ab){_0x58e32c['push'](_0x58e32c['shift']());}};_0x481e60(++_0x309781);}(_0x4137,0xf8));var _0x7413=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x4137[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require(_0x7413('0x0'));var rimraf=require(_0x7413('0x1'));var zipdir=require(_0x7413('0x2'));var jsonpatch=require(_0x7413('0x3'));var rp=require(_0x7413('0x4'));var moment=require(_0x7413('0x5'));var BPromise=require(_0x7413('0x6'));var Mustache=require(_0x7413('0x7'));var util=require(_0x7413('0x8'));var path=require(_0x7413('0x9'));var sox=require(_0x7413('0xa'));var csv=require(_0x7413('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7413('0xc'));var _=require(_0x7413('0xd'));var squel=require(_0x7413('0xe'));var crypto=require(_0x7413('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x7413('0x10'));var toCsv=require(_0x7413('0xb'));var querystring=require('querystring');var Papa=require(_0x7413('0x11'));var Redis=require(_0x7413('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7413('0x13'));var as=require(_0x7413('0x14'));var hardwareService=require(_0x7413('0x15'));var logger=require(_0x7413('0x16'))(_0x7413('0x17'));var utils=require('../../config/utils');var config=require(_0x7413('0x18'));var licenseUtil=require(_0x7413('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18a874,_0xa26ca4){_0xa26ca4=_0xa26ca4||0xcc;return function(_0x13e6bd){if(_0x13e6bd){return _0x18a874['sendStatus'](_0xa26ca4);}return _0x18a874['status'](_0xa26ca4)['end']();};}function respondWithResult(_0x2267f6,_0x336c4c){_0x336c4c=_0x336c4c||0xc8;return function(_0x49f0f6){if(_0x49f0f6){return _0x2267f6[_0x7413('0x1a')](_0x336c4c)[_0x7413('0x1b')](_0x49f0f6);}};}function respondWithFilteredResult(_0x4955d3,_0x38b3d1){return function(_0x50f301){if(_0x50f301){var _0x4b9a5b=typeof _0x38b3d1[_0x7413('0x1c')]==='undefined'&&typeof _0x38b3d1[_0x7413('0x1d')]==='undefined';var _0x2036b6=_0x50f301[_0x7413('0x1e')];var _0x19157f=_0x4b9a5b?0x0:_0x38b3d1[_0x7413('0x1c')];var _0x2a3417=_0x4b9a5b?_0x50f301[_0x7413('0x1e')]:_0x38b3d1['offset']+_0x38b3d1[_0x7413('0x1d')];var _0x17c062;if(_0x2a3417>=_0x2036b6){_0x2a3417=_0x2036b6;_0x17c062=0xc8;}else{_0x17c062=0xce;}_0x4955d3[_0x7413('0x1a')](_0x17c062);return _0x4955d3[_0x7413('0x1f')]('Content-Range',_0x19157f+'-'+_0x2a3417+'/'+_0x2036b6)[_0x7413('0x1b')](_0x50f301);}return null;};}function patchUpdates(_0x12d94d){return function(_0x206afc){try{jsonpatch[_0x7413('0x20')](_0x206afc,_0x12d94d,!![]);}catch(_0x409392){return BPromise[_0x7413('0x21')](_0x409392);}return _0x206afc[_0x7413('0x22')]();};}function saveUpdates(_0x4e18cb,_0x56a06a){return function(_0x5f12a2){if(_0x5f12a2){return _0x5f12a2[_0x7413('0x23')](_0x4e18cb)['then'](function(_0x1585ba){return _0x1585ba;});}return null;};}function removeEntity(_0x372944,_0x3b0c81){return function(_0x2fc0f4){if(_0x2fc0f4){return _0x2fc0f4[_0x7413('0x24')]()[_0x7413('0x25')](function(){_0x372944[_0x7413('0x1a')](0xcc)[_0x7413('0x26')]();});}};}function handleEntityNotFound(_0x1d455b,_0x5a8329){return function(_0x5cb15f){if(!_0x5cb15f){_0x1d455b[_0x7413('0x27')](0x194);}return _0x5cb15f;};}function handleError(_0x48c2dc,_0x46c895){_0x46c895=_0x46c895||0x1f4;return function(_0x71cbb4){logger[_0x7413('0x28')](_0x71cbb4['stack']);if(_0x71cbb4[_0x7413('0x29')]){delete _0x71cbb4[_0x7413('0x29')];}_0x48c2dc[_0x7413('0x1a')](_0x46c895)[_0x7413('0x2a')](_0x71cbb4);};}exports[_0x7413('0x2b')]=function(_0x2e521f,_0x5eb4d9){var _0x24dce7={},_0x4ed662={},_0x1d0bde={'count':0x0,'rows':[]};var _0x23e682=_[_0x7413('0x2c')](db[_0x7413('0x2d')][_0x7413('0x2e')],function(_0x2004ea){return{'name':_0x2004ea['fieldName'],'type':_0x2004ea[_0x7413('0x2f')][_0x7413('0x30')]};});_0x4ed662[_0x7413('0x31')]=_[_0x7413('0x2c')](_0x23e682,_0x7413('0x29'));_0x4ed662[_0x7413('0x32')]=_[_0x7413('0x33')](_0x2e521f['query']);_0x4ed662[_0x7413('0x34')]=_[_0x7413('0x35')](_0x4ed662[_0x7413('0x31')],_0x4ed662[_0x7413('0x32')]);_0x24dce7[_0x7413('0x36')]=_['intersection'](_0x4ed662[_0x7413('0x31')],qs['fields'](_0x2e521f[_0x7413('0x32')][_0x7413('0x37')]));_0x24dce7[_0x7413('0x36')]=_0x24dce7['attributes'][_0x7413('0x38')]?_0x24dce7['attributes']:_0x4ed662[_0x7413('0x31')];if(!_0x2e521f[_0x7413('0x32')]['hasOwnProperty']('nolimit')){_0x24dce7[_0x7413('0x1d')]=qs[_0x7413('0x1d')](_0x2e521f[_0x7413('0x32')]['limit']);_0x24dce7['offset']=qs[_0x7413('0x1c')](_0x2e521f['query']['offset']);}_0x24dce7[_0x7413('0x39')]=qs['sort'](_0x2e521f[_0x7413('0x32')][_0x7413('0x3a')]);_0x24dce7[_0x7413('0x3b')]=qs[_0x7413('0x34')](_[_0x7413('0x3c')](_0x2e521f['query'],_0x4ed662[_0x7413('0x34')]),_0x23e682);if(_0x2e521f[_0x7413('0x32')][_0x7413('0x3d')]){_0x24dce7[_0x7413('0x3b')]=_[_0x7413('0x3e')](_0x24dce7[_0x7413('0x3b')],{'$or':_[_0x7413('0x2c')](_0x23e682,function(_0x385156){if(_0x385156[_0x7413('0x2f')]!==_0x7413('0x3f')){var _0x5c03eb={};_0x5c03eb[_0x385156[_0x7413('0x29')]]={'$like':'%'+_0x2e521f['query'][_0x7413('0x3d')]+'%'};return _0x5c03eb;}})});}_0x24dce7=_['merge']({},_0x24dce7,_0x2e521f['options']);var _0x5b592c={'where':_0x24dce7['where']};return db['UserProfileResource'][_0x7413('0x1e')](_0x5b592c)['then'](function(_0x535e49){_0x1d0bde[_0x7413('0x1e')]=_0x535e49;if(_0x2e521f['query']['includeAll']){_0x24dce7[_0x7413('0x40')]=[{'all':!![]}];}return db[_0x7413('0x2d')][_0x7413('0x41')](_0x24dce7);})[_0x7413('0x25')](function(_0x8049c0){_0x1d0bde['rows']=_0x8049c0;return _0x1d0bde;})[_0x7413('0x25')](respondWithFilteredResult(_0x5eb4d9,_0x24dce7))['catch'](handleError(_0x5eb4d9,null));};exports[_0x7413('0x42')]=function(_0x1d8219,_0xa063d1){var _0xfe0daa={'raw':![],'where':{'id':_0x1d8219[_0x7413('0x43')]['id']}},_0x3f7da2={};_0x3f7da2[_0x7413('0x31')]=_[_0x7413('0x33')](db[_0x7413('0x2d')][_0x7413('0x2e')]);_0x3f7da2[_0x7413('0x32')]=_[_0x7413('0x33')](_0x1d8219[_0x7413('0x32')]);_0x3f7da2['filters']=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],_0x3f7da2[_0x7413('0x32')]);_0xfe0daa[_0x7413('0x36')]=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],qs[_0x7413('0x37')](_0x1d8219[_0x7413('0x32')][_0x7413('0x37')]));_0xfe0daa[_0x7413('0x36')]=_0xfe0daa[_0x7413('0x36')]['length']?_0xfe0daa[_0x7413('0x36')]:_0x3f7da2['model'];if(_0x1d8219[_0x7413('0x32')][_0x7413('0x44')]){_0xfe0daa[_0x7413('0x40')]=[{'all':!![]}];}_0xfe0daa=_[_0x7413('0x3e')]({},_0xfe0daa,_0x1d8219[_0x7413('0x45')]);return db[_0x7413('0x2d')][_0x7413('0x46')](_0xfe0daa)[_0x7413('0x25')](handleEntityNotFound(_0xa063d1,null))[_0x7413('0x25')](respondWithResult(_0xa063d1,null))[_0x7413('0x47')](handleError(_0xa063d1,null));};exports['create']=function(_0x513657,_0x3c1f1a){return db['UserProfileResource']['create'](_0x513657[_0x7413('0x48')],{})[_0x7413('0x25')](respondWithResult(_0x3c1f1a,0xc9))['catch'](handleError(_0x3c1f1a,null));};exports[_0x7413('0x23')]=function(_0x586d25,_0x562bae){if(_0x586d25[_0x7413('0x48')]['id']){delete _0x586d25['body']['id'];}return db[_0x7413('0x2d')][_0x7413('0x46')]({'where':{'id':_0x586d25[_0x7413('0x43')]['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x562bae,null))[_0x7413('0x25')](saveUpdates(_0x586d25[_0x7413('0x48')],null))[_0x7413('0x25')](respondWithResult(_0x562bae,null))[_0x7413('0x47')](handleError(_0x562bae,null));};exports[_0x7413('0x24')]=function(_0x2031e3,_0x50a27d){return db[_0x7413('0x2d')]['find']({'where':{'id':_0x2031e3['params']['id']}})['then'](handleEntityNotFound(_0x50a27d,null))[_0x7413('0x25')](removeEntity(_0x50a27d,null))[_0x7413('0x47')](handleError(_0x50a27d,null));};exports[_0x7413('0x49')]=function(_0x1ba4e9,_0x4bc337){return db['UserProfileResource'][_0x7413('0x49')]()['then'](respondWithResult(_0x4bc337,null))[_0x7413('0x47')](handleError(_0x4bc337,null));};
\ No newline at end of file
index b661a45..15e72b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbcf=['bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','user_profile_has_resources','compositeIndex','resourceId','lodash','util','api','moment'];(function(_0x595d67,_0x155f0c){var _0x45f7a0=function(_0x40b468){while(--_0x40b468){_0x595d67['push'](_0x595d67['shift']());}};_0x45f7a0(++_0x155f0c);}(_0xbbcf,0x106));var _0xfbbc=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xbbcf[_0x5f0089];return _0x193892;};'use strict';var _=require(_0xfbbc('0x0'));var util=require(_0xfbbc('0x1'));var logger=require('../../config/logger')(_0xfbbc('0x2'));var moment=require(_0xfbbc('0x3'));var BPromise=require(_0xfbbc('0x4'));var rp=require(_0xfbbc('0x5'));var fs=require('fs');var path=require(_0xfbbc('0x6'));var rimraf=require(_0xfbbc('0x7'));var config=require(_0xfbbc('0x8'));var attributes=require(_0xfbbc('0x9'));module[_0xfbbc('0xa')]=function(_0x1e8ee6,_0x488bad){return _0x1e8ee6['define']('UserProfileResource',attributes,{'tableName':_0xfbbc('0xb'),'paranoid':![],'indexes':[{'name':_0xfbbc('0xc'),'fields':[_0xfbbc('0xd'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf720=['sectionId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','compositeIndex','resourceId'];(function(_0x19a698,_0x43df5f){var _0x38ebb2=function(_0x148eba){while(--_0x148eba){_0x19a698['push'](_0x19a698['shift']());}};_0x38ebb2(++_0x43df5f);}(_0xf720,0x17b));var _0x0f72=function(_0x4b5b36,_0x47f686){_0x4b5b36=_0x4b5b36-0x0;var _0x1360bb=_0xf720[_0x4b5b36];return _0x1360bb;};'use strict';var _=require(_0x0f72('0x0'));var util=require(_0x0f72('0x1'));var logger=require(_0x0f72('0x2'))(_0x0f72('0x3'));var moment=require(_0x0f72('0x4'));var BPromise=require('bluebird');var rp=require(_0x0f72('0x5'));var fs=require('fs');var path=require(_0x0f72('0x6'));var rimraf=require(_0x0f72('0x7'));var config=require(_0x0f72('0x8'));var attributes=require(_0x0f72('0x9'));module[_0x0f72('0xa')]=function(_0x25392c,_0x189282){return _0x25392c['define']('UserProfileResource',attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x0f72('0xb'),'fields':[_0x0f72('0xc'),_0x0f72('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 1f3f405..be731d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x364d=['code','UserProfileResource,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2cf7d3,_0x5db70b){var _0x86c5f5=function(_0x2bf0f9){while(--_0x2bf0f9){_0x2cf7d3['push'](_0x2cf7d3['shift']());}};_0x86c5f5(++_0x5db70b);}(_0x364d,0x1e8));var _0xd364=function(_0x43b299,_0x24eaf7){_0x43b299=_0x43b299-0x0;var _0x3bfa19=_0x364d[_0x43b299];return _0x3bfa19;};'use strict';var _=require(_0xd364('0x0'));var util=require(_0xd364('0x1'));var moment=require(_0xd364('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd364('0x3'));var db=require(_0xd364('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd364('0x5'))(_0xd364('0x6'));var config=require(_0xd364('0x7'));var jayson=require(_0xd364('0x8'));var client=jayson[_0xd364('0x9')][_0xd364('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3eb3f5,_0x233020,_0x75d48d){return new BPromise(function(_0x34d474,_0xa4506b){return client['request'](_0x3eb3f5,_0x75d48d)[_0xd364('0xb')](function(_0x38a4c0){logger[_0xd364('0xc')]('UserProfileResource,\x20%s,\x20%s',_0x233020,_0xd364('0xd'));logger[_0xd364('0xe')](_0xd364('0xf'),_0x233020,_0xd364('0xd'),JSON[_0xd364('0x10')](_0x38a4c0));if(_0x38a4c0['error']){if(_0x38a4c0[_0xd364('0x11')][_0xd364('0x12')]===0x1f4){logger['error'](_0xd364('0x13'),_0x233020,_0x38a4c0[_0xd364('0x11')][_0xd364('0x14')]);return _0xa4506b(_0x38a4c0[_0xd364('0x11')][_0xd364('0x14')]);}logger['error'](_0xd364('0x13'),_0x233020,_0x38a4c0[_0xd364('0x11')][_0xd364('0x14')]);return _0x34d474(_0x38a4c0[_0xd364('0x11')][_0xd364('0x14')]);}else{logger[_0xd364('0xc')](_0xd364('0x13'),_0x233020,_0xd364('0xd'));_0x34d474(_0x38a4c0[_0xd364('0x15')][_0xd364('0x14')]);}})[_0xd364('0x16')](function(_0x5d61b7){logger[_0xd364('0x11')](_0xd364('0x13'),_0x233020,_0x5d61b7);_0xa4506b(_0x5d61b7);});});}
\ No newline at end of file
+var _0x36d4=['result','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x1889e8,_0x30b3df){var _0x3a8bac=function(_0x1f2e64){while(--_0x1f2e64){_0x1889e8['push'](_0x1889e8['shift']());}};_0x3a8bac(++_0x30b3df);}(_0x36d4,0x171));var _0x436d=function(_0x19ae45,_0x3f24e5){_0x19ae45=_0x19ae45-0x0;var _0x15b84f=_0x36d4[_0x19ae45];return _0x15b84f;};'use strict';var _=require('lodash');var util=require(_0x436d('0x0'));var moment=require(_0x436d('0x1'));var BPromise=require(_0x436d('0x2'));var rs=require(_0x436d('0x3'));var fs=require('fs');var Redis=require(_0x436d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x436d('0x5'));var logger=require('../../config/logger')(_0x436d('0x6'));var config=require(_0x436d('0x7'));var jayson=require(_0x436d('0x8'));var client=jayson[_0x436d('0x9')][_0x436d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b250c,_0x1b90b1,_0x571b95){return new BPromise(function(_0x2990cb,_0x1a88e7){return client[_0x436d('0xb')](_0x5b250c,_0x571b95)[_0x436d('0xc')](function(_0x261e6e){logger[_0x436d('0xd')](_0x436d('0xe'),_0x1b90b1,'request\x20sent');logger[_0x436d('0xf')](_0x436d('0x10'),_0x1b90b1,_0x436d('0x11'),JSON[_0x436d('0x12')](_0x261e6e));if(_0x261e6e[_0x436d('0x13')]){if(_0x261e6e['error'][_0x436d('0x14')]===0x1f4){logger[_0x436d('0x13')](_0x436d('0xe'),_0x1b90b1,_0x261e6e['error']['message']);return _0x1a88e7(_0x261e6e[_0x436d('0x13')]['message']);}logger['error'](_0x436d('0xe'),_0x1b90b1,_0x261e6e['error'][_0x436d('0x15')]);return _0x2990cb(_0x261e6e[_0x436d('0x13')][_0x436d('0x15')]);}else{logger[_0x436d('0xd')](_0x436d('0xe'),_0x1b90b1,_0x436d('0x11'));_0x2990cb(_0x261e6e[_0x436d('0x16')][_0x436d('0x15')]);}})['catch'](function(_0x31d586){logger[_0x436d('0x13')](_0x436d('0xe'),_0x1b90b1,_0x31d586);_0x1a88e7(_0x31d586);});});}
\ No newline at end of file
index 786096c..be9489d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6571=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','isAuthenticated','index','/describe','describe','get','post','create','put','/:id','destroy','exports','multer','path','connect-timeout'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x6571,0xba));var _0x1657=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x6571[_0x4b369d];return _0x571a98;};'use strict';var multer=require(_0x1657('0x0'));var util=require('util');var path=require(_0x1657('0x1'));var timeout=require(_0x1657('0x2'));var express=require(_0x1657('0x3'));var router=express[_0x1657('0x4')]();var fs_extra=require(_0x1657('0x5'));var auth=require(_0x1657('0x6'));var interaction=require(_0x1657('0x7'));var config=require(_0x1657('0x8'));var controller=require(_0x1657('0x9'));router['get']('/',auth[_0x1657('0xa')](),controller[_0x1657('0xb')]);router['get'](_0x1657('0xc'),auth[_0x1657('0xa')](),controller[_0x1657('0xd')]);router[_0x1657('0xe')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x1657('0xf')]('/',auth[_0x1657('0xa')](),controller[_0x1657('0x10')]);router[_0x1657('0x11')](_0x1657('0x12'),auth[_0x1657('0xa')](),controller['update']);router['delete'](_0x1657('0x12'),auth['isAuthenticated'](),controller[_0x1657('0x13')]);module[_0x1657('0x14')]=router;
\ No newline at end of file
+var _0x2edb=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','show','post','create','put','/:id','update','delete','destroy'];(function(_0x56c396,_0x1c9bc5){var _0x266be9=function(_0x58064d){while(--_0x58064d){_0x56c396['push'](_0x56c396['shift']());}};_0x266be9(++_0x1c9bc5);}(_0x2edb,0x1e4));var _0xb2ed=function(_0x5639e1,_0x421603){_0x5639e1=_0x5639e1-0x0;var _0x197e82=_0x2edb[_0x5639e1];return _0x197e82;};'use strict';var multer=require(_0xb2ed('0x0'));var util=require('util');var path=require(_0xb2ed('0x1'));var timeout=require(_0xb2ed('0x2'));var express=require(_0xb2ed('0x3'));var router=express[_0xb2ed('0x4')]();var fs_extra=require(_0xb2ed('0x5'));var auth=require(_0xb2ed('0x6'));var interaction=require(_0xb2ed('0x7'));var config=require(_0xb2ed('0x8'));var controller=require('./userProfileSection.controller');router[_0xb2ed('0x9')]('/',auth[_0xb2ed('0xa')](),controller['index']);router[_0xb2ed('0x9')](_0xb2ed('0xb'),auth[_0xb2ed('0xa')](),controller['describe']);router[_0xb2ed('0x9')]('/:id',auth[_0xb2ed('0xa')](),controller[_0xb2ed('0xc')]);router[_0xb2ed('0xd')]('/',auth['isAuthenticated'](),controller[_0xb2ed('0xe')]);router[_0xb2ed('0xf')](_0xb2ed('0x10'),auth['isAuthenticated'](),controller[_0xb2ed('0x11')]);router[_0xb2ed('0x12')]('/:id',auth[_0xb2ed('0xa')](),controller[_0xb2ed('0x13')]);module[_0xb2ed('0x14')]=router;
\ No newline at end of file
index 4a15854..f8b3e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['split','sequelize','exports','STRING','INTEGER','BOOLEAN','setDataValue','getDataValue','crudPermissions'];(function(_0xe7d056,_0x1f63b5){var _0x32dadd=function(_0x1216ec){while(--_0x1216ec){_0xe7d056['push'](_0xe7d056['shift']());}};_0x32dadd(++_0x1f63b5);}(_0x5b12,0xa3));var _0x25b1=function(_0x2648fd,_0x17e0cc){_0x2648fd=_0x2648fd-0x0;var _0x5ae89e=_0x5b12[_0x2648fd];return _0x5ae89e;};'use strict';var Sequelize=require(_0x25b1('0x0'));module[_0x25b1('0x1')]={'name':{'type':Sequelize[_0x25b1('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x25b1('0x3')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x25b1('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x25b1('0x2')],'set':function(_0x47995b){this[_0x25b1('0x5')]('crudPermissions',_0x47995b?_0x47995b['join'](''):[]);},'get':function(){return this[_0x25b1('0x6')]('crudPermissions')?this['getDataValue'](_0x25b1('0x7'))[_0x25b1('0x8')](''):[];}}};
\ No newline at end of file
+var _0xfef3=['sequelize','STRING','INTEGER','BOOLEAN','crudPermissions','join','getDataValue','split'];(function(_0x43139e,_0x762629){var _0x2bc838=function(_0x593ec3){while(--_0x593ec3){_0x43139e['push'](_0x43139e['shift']());}};_0x2bc838(++_0x762629);}(_0xfef3,0x118));var _0x3fef=function(_0x531b74,_0x3a473b){_0x531b74=_0x531b74-0x0;var _0x513d17=_0xfef3[_0x531b74];return _0x513d17;};'use strict';var Sequelize=require(_0x3fef('0x0'));module['exports']={'name':{'type':Sequelize[_0x3fef('0x1')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x3fef('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x3fef('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x3fef('0x1')],'set':function(_0x3b71e5){this['setDataValue'](_0x3fef('0x4'),_0x3b71e5?_0x3b71e5[_0x3fef('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x3fef('0x4'))?this[_0x3fef('0x6')](_0x3fef('0x4'))[_0x3fef('0x7')](''):[];}}};
\ No newline at end of file
index fc8cf5b..5badfd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d42=['nolimit','limit','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','UserProfileSection','includeAll','include','findAll','catch','show','params','length','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','key','keys','intersection','query','attributes','model','fields'];(function(_0x223248,_0x3ac5ab){var _0x5b463d=function(_0x55c908){while(--_0x55c908){_0x223248['push'](_0x223248['shift']());}};_0x5b463d(++_0x3ac5ab);}(_0x1d42,0x1e0));var _0x21d4=function(_0x56ea6f,_0x15535a){_0x56ea6f=_0x56ea6f-0x0;var _0x43ac31=_0x1d42[_0x56ea6f];return _0x43ac31;};'use strict';var emlformat=require(_0x21d4('0x0'));var rimraf=require(_0x21d4('0x1'));var zipdir=require(_0x21d4('0x2'));var jsonpatch=require(_0x21d4('0x3'));var rp=require(_0x21d4('0x4'));var moment=require('moment');var BPromise=require(_0x21d4('0x5'));var Mustache=require(_0x21d4('0x6'));var util=require(_0x21d4('0x7'));var path=require('path');var sox=require(_0x21d4('0x8'));var csv=require('to-csv');var ejs=require(_0x21d4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x21d4('0xa'));var squel=require(_0x21d4('0xb'));var crypto=require(_0x21d4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x21d4('0xd'));var toCsv=require(_0x21d4('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x21d4('0xf'));var authService=require(_0x21d4('0x10'));var qs=require(_0x21d4('0x11'));var as=require(_0x21d4('0x12'));var hardwareService=require(_0x21d4('0x13'));var logger=require(_0x21d4('0x14'))(_0x21d4('0x15'));var utils=require(_0x21d4('0x16'));var config=require(_0x21d4('0x17'));var licenseUtil=require(_0x21d4('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e100e,_0x473525){_0x473525=_0x473525||0xcc;return function(_0x26fb64){if(_0x26fb64){return _0x1e100e[_0x21d4('0x19')](_0x473525);}return _0x1e100e[_0x21d4('0x1a')](_0x473525)[_0x21d4('0x1b')]();};}function respondWithResult(_0x106678,_0x18e9e0){_0x18e9e0=_0x18e9e0||0xc8;return function(_0x2ddceb){if(_0x2ddceb){return _0x106678[_0x21d4('0x1a')](_0x18e9e0)[_0x21d4('0x1c')](_0x2ddceb);}};}function respondWithFilteredResult(_0x49623e,_0x5ddc3c){return function(_0x2ce1e2){if(_0x2ce1e2){var _0x536d26=typeof _0x5ddc3c['offset']===_0x21d4('0x1d')&&typeof _0x5ddc3c['limit']==='undefined';var _0x443115=_0x2ce1e2[_0x21d4('0x1e')];var _0x1a3841=_0x536d26?0x0:_0x5ddc3c[_0x21d4('0x1f')];var _0x4ce5e6=_0x536d26?_0x2ce1e2[_0x21d4('0x1e')]:_0x5ddc3c[_0x21d4('0x1f')]+_0x5ddc3c['limit'];var _0x3f104c;if(_0x4ce5e6>=_0x443115){_0x4ce5e6=_0x443115;_0x3f104c=0xc8;}else{_0x3f104c=0xce;}_0x49623e['status'](_0x3f104c);return _0x49623e[_0x21d4('0x20')](_0x21d4('0x21'),_0x1a3841+'-'+_0x4ce5e6+'/'+_0x443115)[_0x21d4('0x1c')](_0x2ce1e2);}return null;};}function patchUpdates(_0x626a94){return function(_0xf9277){try{jsonpatch[_0x21d4('0x22')](_0xf9277,_0x626a94,!![]);}catch(_0x45953e){return BPromise[_0x21d4('0x23')](_0x45953e);}return _0xf9277['save']();};}function saveUpdates(_0x28c1d9,_0x8b5061){return function(_0x710fba){if(_0x710fba){return _0x710fba[_0x21d4('0x24')](_0x28c1d9)[_0x21d4('0x25')](function(_0x3d1dd3){return _0x3d1dd3;});}return null;};}function removeEntity(_0x1f322e,_0x5f5314){return function(_0x5af1e3){if(_0x5af1e3){return _0x5af1e3['destroy']()[_0x21d4('0x25')](function(){_0x1f322e[_0x21d4('0x1a')](0xcc)[_0x21d4('0x1b')]();});}};}function handleEntityNotFound(_0x219637,_0x5935c2){return function(_0x56f74a){if(!_0x56f74a){_0x219637[_0x21d4('0x19')](0x194);}return _0x56f74a;};}function handleError(_0x58f48c,_0x30d08f){_0x30d08f=_0x30d08f||0x1f4;return function(_0x1e96f4){logger[_0x21d4('0x26')](_0x1e96f4[_0x21d4('0x27')]);if(_0x1e96f4[_0x21d4('0x28')]){delete _0x1e96f4['name'];}_0x58f48c['status'](_0x30d08f)[_0x21d4('0x29')](_0x1e96f4);};}exports[_0x21d4('0x2a')]=function(_0x30e2a6,_0x28d1e3){var _0x176ecc={},_0x40cd2b={},_0x24de47={'count':0x0,'rows':[]};var _0x4d86f1=_[_0x21d4('0x2b')](db['UserProfileSection'][_0x21d4('0x2c')],function(_0x514400){return{'name':_0x514400['fieldName'],'type':_0x514400['type'][_0x21d4('0x2d')]};});_0x40cd2b['model']=_[_0x21d4('0x2b')](_0x4d86f1,_0x21d4('0x28'));_0x40cd2b['query']=_[_0x21d4('0x2e')](_0x30e2a6['query']);_0x40cd2b['filters']=_[_0x21d4('0x2f')](_0x40cd2b['model'],_0x40cd2b[_0x21d4('0x30')]);_0x176ecc[_0x21d4('0x31')]=_[_0x21d4('0x2f')](_0x40cd2b[_0x21d4('0x32')],qs[_0x21d4('0x33')](_0x30e2a6[_0x21d4('0x30')][_0x21d4('0x33')]));_0x176ecc[_0x21d4('0x31')]=_0x176ecc[_0x21d4('0x31')]['length']?_0x176ecc[_0x21d4('0x31')]:_0x40cd2b['model'];if(!_0x30e2a6[_0x21d4('0x30')]['hasOwnProperty'](_0x21d4('0x34'))){_0x176ecc[_0x21d4('0x35')]=qs[_0x21d4('0x35')](_0x30e2a6[_0x21d4('0x30')][_0x21d4('0x35')]);_0x176ecc['offset']=qs[_0x21d4('0x1f')](_0x30e2a6['query'][_0x21d4('0x1f')]);}_0x176ecc['order']=qs[_0x21d4('0x36')](_0x30e2a6[_0x21d4('0x30')][_0x21d4('0x36')]);_0x176ecc[_0x21d4('0x37')]=qs[_0x21d4('0x38')](_[_0x21d4('0x39')](_0x30e2a6[_0x21d4('0x30')],_0x40cd2b[_0x21d4('0x38')]),_0x4d86f1);if(_0x30e2a6[_0x21d4('0x30')][_0x21d4('0x3a')]){_0x176ecc[_0x21d4('0x37')]=_[_0x21d4('0x3b')](_0x176ecc['where'],{'$or':_['map'](_0x4d86f1,function(_0x3f269a){if(_0x3f269a[_0x21d4('0x3c')]!==_0x21d4('0x3d')){var _0x413e8b={};_0x413e8b[_0x3f269a[_0x21d4('0x28')]]={'$like':'%'+_0x30e2a6[_0x21d4('0x30')]['filter']+'%'};return _0x413e8b;}})});}_0x176ecc=_[_0x21d4('0x3b')]({},_0x176ecc,_0x30e2a6[_0x21d4('0x3e')]);var _0x1a8597={'where':_0x176ecc[_0x21d4('0x37')]};return db[_0x21d4('0x3f')][_0x21d4('0x1e')](_0x1a8597)[_0x21d4('0x25')](function(_0x132458){_0x24de47[_0x21d4('0x1e')]=_0x132458;if(_0x30e2a6[_0x21d4('0x30')][_0x21d4('0x40')]){_0x176ecc[_0x21d4('0x41')]=[{'all':!![]}];}return db[_0x21d4('0x3f')][_0x21d4('0x42')](_0x176ecc);})[_0x21d4('0x25')](function(_0x28ef53){_0x24de47['rows']=_0x28ef53;return _0x24de47;})[_0x21d4('0x25')](respondWithFilteredResult(_0x28d1e3,_0x176ecc))[_0x21d4('0x43')](handleError(_0x28d1e3,null));};exports[_0x21d4('0x44')]=function(_0x467322,_0x100012){var _0x565425={'raw':![],'where':{'id':_0x467322[_0x21d4('0x45')]['id']}},_0x2e6ca4={};_0x2e6ca4[_0x21d4('0x32')]=_[_0x21d4('0x2e')](db[_0x21d4('0x3f')][_0x21d4('0x2c')]);_0x2e6ca4['query']=_[_0x21d4('0x2e')](_0x467322[_0x21d4('0x30')]);_0x2e6ca4[_0x21d4('0x38')]=_['intersection'](_0x2e6ca4[_0x21d4('0x32')],_0x2e6ca4[_0x21d4('0x30')]);_0x565425[_0x21d4('0x31')]=_['intersection'](_0x2e6ca4[_0x21d4('0x32')],qs[_0x21d4('0x33')](_0x467322[_0x21d4('0x30')][_0x21d4('0x33')]));_0x565425['attributes']=_0x565425[_0x21d4('0x31')][_0x21d4('0x46')]?_0x565425[_0x21d4('0x31')]:_0x2e6ca4[_0x21d4('0x32')];if(_0x467322[_0x21d4('0x30')][_0x21d4('0x40')]){_0x565425[_0x21d4('0x41')]=[{'all':!![]}];}_0x565425=_[_0x21d4('0x3b')]({},_0x565425,_0x467322[_0x21d4('0x3e')]);return db['UserProfileSection'][_0x21d4('0x47')](_0x565425)['then'](handleEntityNotFound(_0x100012,null))[_0x21d4('0x25')](respondWithResult(_0x100012,null))[_0x21d4('0x43')](handleError(_0x100012,null));};exports['create']=function(_0x384bc4,_0x55c87d){return db[_0x21d4('0x3f')][_0x21d4('0x48')](_0x384bc4[_0x21d4('0x49')],{})[_0x21d4('0x25')](respondWithResult(_0x55c87d,0xc9))[_0x21d4('0x43')](handleError(_0x55c87d,null));};exports['update']=function(_0x2c9ce2,_0x4b4081){if(_0x2c9ce2[_0x21d4('0x49')]['id']){delete _0x2c9ce2[_0x21d4('0x49')]['id'];}return db[_0x21d4('0x3f')][_0x21d4('0x47')]({'where':{'id':_0x2c9ce2['params']['id']}})[_0x21d4('0x25')](handleEntityNotFound(_0x4b4081,null))['then'](saveUpdates(_0x2c9ce2['body'],null))[_0x21d4('0x25')](respondWithResult(_0x4b4081,null))[_0x21d4('0x43')](handleError(_0x4b4081,null));};exports[_0x21d4('0x4a')]=function(_0x4105d7,_0x4806c6){return db[_0x21d4('0x3f')][_0x21d4('0x47')]({'where':{'id':_0x4105d7['params']['id']}})['then'](handleEntityNotFound(_0x4806c6,null))['then'](removeEntity(_0x4806c6,null))['catch'](handleError(_0x4806c6,null));};exports['describe']=function(_0x16a5b,_0x5baf26){return db[_0x21d4('0x3f')][_0x21d4('0x4b')]()[_0x21d4('0x25')](respondWithResult(_0x5baf26,null))[_0x21d4('0x43')](handleError(_0x5baf26,null));};
\ No newline at end of file
+var _0xf228=['fields','length','hasOwnProperty','nolimit','order','pick','filter','where','VIRTUAL','merge','options','UserProfileSection','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','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','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','type','model','query','keys','filters','intersection','attributes'];(function(_0x327864,_0x5a0a94){var _0x3b3a0c=function(_0x3e9d43){while(--_0x3e9d43){_0x327864['push'](_0x327864['shift']());}};_0x3b3a0c(++_0x5a0a94);}(_0xf228,0x147));var _0x8f22=function(_0x353333,_0x44c332){_0x353333=_0x353333-0x0;var _0x341f01=_0xf228[_0x353333];return _0x341f01;};'use strict';var emlformat=require(_0x8f22('0x0'));var rimraf=require(_0x8f22('0x1'));var zipdir=require(_0x8f22('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8f22('0x3'));var moment=require('moment');var BPromise=require(_0x8f22('0x4'));var Mustache=require(_0x8f22('0x5'));var util=require(_0x8f22('0x6'));var path=require('path');var sox=require(_0x8f22('0x7'));var csv=require(_0x8f22('0x8'));var ejs=require(_0x8f22('0x9'));var fs=require('fs');var fs_extra=require(_0x8f22('0xa'));var _=require(_0x8f22('0xb'));var squel=require(_0x8f22('0xc'));var crypto=require(_0x8f22('0xd'));var jsforce=require(_0x8f22('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8f22('0x8'));var querystring=require(_0x8f22('0xf'));var Papa=require(_0x8f22('0x10'));var Redis=require(_0x8f22('0x11'));var authService=require(_0x8f22('0x12'));var qs=require(_0x8f22('0x13'));var as=require(_0x8f22('0x14'));var hardwareService=require(_0x8f22('0x15'));var logger=require(_0x8f22('0x16'))('api');var utils=require(_0x8f22('0x17'));var config=require(_0x8f22('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8f22('0x19'))['db'];function respondWithStatusCode(_0x12e737,_0x315ffa){_0x315ffa=_0x315ffa||0xcc;return function(_0x27a805){if(_0x27a805){return _0x12e737['sendStatus'](_0x315ffa);}return _0x12e737['status'](_0x315ffa)['end']();};}function respondWithResult(_0x35ddb7,_0x5b287b){_0x5b287b=_0x5b287b||0xc8;return function(_0x1e2eae){if(_0x1e2eae){return _0x35ddb7[_0x8f22('0x1a')](_0x5b287b)['json'](_0x1e2eae);}};}function respondWithFilteredResult(_0x131c26,_0x4be1b2){return function(_0x2641f8){if(_0x2641f8){var _0x26ca78=typeof _0x4be1b2[_0x8f22('0x1b')]===_0x8f22('0x1c')&&typeof _0x4be1b2[_0x8f22('0x1d')]===_0x8f22('0x1c');var _0x34739a=_0x2641f8['count'];var _0xe1df48=_0x26ca78?0x0:_0x4be1b2[_0x8f22('0x1b')];var _0x3ea3b7=_0x26ca78?_0x2641f8[_0x8f22('0x1e')]:_0x4be1b2[_0x8f22('0x1b')]+_0x4be1b2[_0x8f22('0x1d')];var _0x552df9;if(_0x3ea3b7>=_0x34739a){_0x3ea3b7=_0x34739a;_0x552df9=0xc8;}else{_0x552df9=0xce;}_0x131c26['status'](_0x552df9);return _0x131c26[_0x8f22('0x1f')]('Content-Range',_0xe1df48+'-'+_0x3ea3b7+'/'+_0x34739a)['json'](_0x2641f8);}return null;};}function patchUpdates(_0x585e0f){return function(_0x2a5b84){try{jsonpatch[_0x8f22('0x20')](_0x2a5b84,_0x585e0f,!![]);}catch(_0x1f278c){return BPromise[_0x8f22('0x21')](_0x1f278c);}return _0x2a5b84[_0x8f22('0x22')]();};}function saveUpdates(_0x3e6f7b,_0x5d83ec){return function(_0x1410b8){if(_0x1410b8){return _0x1410b8[_0x8f22('0x23')](_0x3e6f7b)[_0x8f22('0x24')](function(_0x466321){return _0x466321;});}return null;};}function removeEntity(_0x3e48f3,_0x369274){return function(_0x13065b){if(_0x13065b){return _0x13065b[_0x8f22('0x25')]()['then'](function(){_0x3e48f3[_0x8f22('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x109b19,_0x5a1259){return function(_0x455e8f){if(!_0x455e8f){_0x109b19[_0x8f22('0x26')](0x194);}return _0x455e8f;};}function handleError(_0x21ef49,_0x2127b5){_0x2127b5=_0x2127b5||0x1f4;return function(_0x4ced3e){logger[_0x8f22('0x27')](_0x4ced3e[_0x8f22('0x28')]);if(_0x4ced3e[_0x8f22('0x29')]){delete _0x4ced3e[_0x8f22('0x29')];}_0x21ef49[_0x8f22('0x1a')](_0x2127b5)[_0x8f22('0x2a')](_0x4ced3e);};}exports[_0x8f22('0x2b')]=function(_0x80f23,_0x5c72ea){var _0x25002e={},_0x46d968={},_0x4a9f0c={'count':0x0,'rows':[]};var _0x250002=_[_0x8f22('0x2c')](db['UserProfileSection']['rawAttributes'],function(_0x5481bb){return{'name':_0x5481bb[_0x8f22('0x2d')],'type':_0x5481bb[_0x8f22('0x2e')]['key']};});_0x46d968[_0x8f22('0x2f')]=_[_0x8f22('0x2c')](_0x250002,_0x8f22('0x29'));_0x46d968[_0x8f22('0x30')]=_[_0x8f22('0x31')](_0x80f23[_0x8f22('0x30')]);_0x46d968[_0x8f22('0x32')]=_[_0x8f22('0x33')](_0x46d968['model'],_0x46d968[_0x8f22('0x30')]);_0x25002e[_0x8f22('0x34')]=_['intersection'](_0x46d968['model'],qs[_0x8f22('0x35')](_0x80f23[_0x8f22('0x30')]['fields']));_0x25002e[_0x8f22('0x34')]=_0x25002e[_0x8f22('0x34')][_0x8f22('0x36')]?_0x25002e['attributes']:_0x46d968[_0x8f22('0x2f')];if(!_0x80f23[_0x8f22('0x30')][_0x8f22('0x37')](_0x8f22('0x38'))){_0x25002e[_0x8f22('0x1d')]=qs[_0x8f22('0x1d')](_0x80f23[_0x8f22('0x30')][_0x8f22('0x1d')]);_0x25002e[_0x8f22('0x1b')]=qs[_0x8f22('0x1b')](_0x80f23[_0x8f22('0x30')][_0x8f22('0x1b')]);}_0x25002e[_0x8f22('0x39')]=qs['sort'](_0x80f23[_0x8f22('0x30')]['sort']);_0x25002e['where']=qs[_0x8f22('0x32')](_[_0x8f22('0x3a')](_0x80f23[_0x8f22('0x30')],_0x46d968[_0x8f22('0x32')]),_0x250002);if(_0x80f23[_0x8f22('0x30')][_0x8f22('0x3b')]){_0x25002e[_0x8f22('0x3c')]=_['merge'](_0x25002e[_0x8f22('0x3c')],{'$or':_[_0x8f22('0x2c')](_0x250002,function(_0x202d77){if(_0x202d77[_0x8f22('0x2e')]!==_0x8f22('0x3d')){var _0x2a2668={};_0x2a2668[_0x202d77[_0x8f22('0x29')]]={'$like':'%'+_0x80f23['query'][_0x8f22('0x3b')]+'%'};return _0x2a2668;}})});}_0x25002e=_[_0x8f22('0x3e')]({},_0x25002e,_0x80f23[_0x8f22('0x3f')]);var _0x4bd2dd={'where':_0x25002e[_0x8f22('0x3c')]};return db[_0x8f22('0x40')]['count'](_0x4bd2dd)[_0x8f22('0x24')](function(_0x52448c){_0x4a9f0c[_0x8f22('0x1e')]=_0x52448c;if(_0x80f23[_0x8f22('0x30')][_0x8f22('0x41')]){_0x25002e[_0x8f22('0x42')]=[{'all':!![]}];}return db[_0x8f22('0x40')][_0x8f22('0x43')](_0x25002e);})[_0x8f22('0x24')](function(_0x906e31){_0x4a9f0c[_0x8f22('0x44')]=_0x906e31;return _0x4a9f0c;})[_0x8f22('0x24')](respondWithFilteredResult(_0x5c72ea,_0x25002e))[_0x8f22('0x45')](handleError(_0x5c72ea,null));};exports[_0x8f22('0x46')]=function(_0xfd7758,_0x3230fd){var _0x46ab6c={'raw':![],'where':{'id':_0xfd7758['params']['id']}},_0x12ea85={};_0x12ea85['model']=_[_0x8f22('0x31')](db['UserProfileSection'][_0x8f22('0x47')]);_0x12ea85[_0x8f22('0x30')]=_[_0x8f22('0x31')](_0xfd7758['query']);_0x12ea85[_0x8f22('0x32')]=_[_0x8f22('0x33')](_0x12ea85[_0x8f22('0x2f')],_0x12ea85[_0x8f22('0x30')]);_0x46ab6c[_0x8f22('0x34')]=_['intersection'](_0x12ea85['model'],qs[_0x8f22('0x35')](_0xfd7758[_0x8f22('0x30')][_0x8f22('0x35')]));_0x46ab6c[_0x8f22('0x34')]=_0x46ab6c['attributes'][_0x8f22('0x36')]?_0x46ab6c[_0x8f22('0x34')]:_0x12ea85[_0x8f22('0x2f')];if(_0xfd7758['query'][_0x8f22('0x41')]){_0x46ab6c[_0x8f22('0x42')]=[{'all':!![]}];}_0x46ab6c=_[_0x8f22('0x3e')]({},_0x46ab6c,_0xfd7758[_0x8f22('0x3f')]);return db[_0x8f22('0x40')]['find'](_0x46ab6c)[_0x8f22('0x24')](handleEntityNotFound(_0x3230fd,null))['then'](respondWithResult(_0x3230fd,null))['catch'](handleError(_0x3230fd,null));};exports['create']=function(_0xac1e97,_0x1d92ca){return db[_0x8f22('0x40')][_0x8f22('0x48')](_0xac1e97[_0x8f22('0x49')],{})['then'](respondWithResult(_0x1d92ca,0xc9))[_0x8f22('0x45')](handleError(_0x1d92ca,null));};exports[_0x8f22('0x23')]=function(_0x2146a2,_0x393481){if(_0x2146a2[_0x8f22('0x49')]['id']){delete _0x2146a2[_0x8f22('0x49')]['id'];}return db[_0x8f22('0x40')]['find']({'where':{'id':_0x2146a2[_0x8f22('0x4a')]['id']}})[_0x8f22('0x24')](handleEntityNotFound(_0x393481,null))[_0x8f22('0x24')](saveUpdates(_0x2146a2[_0x8f22('0x49')],null))[_0x8f22('0x24')](respondWithResult(_0x393481,null))[_0x8f22('0x45')](handleError(_0x393481,null));};exports[_0x8f22('0x25')]=function(_0x1bc315,_0x307b2a){return db[_0x8f22('0x40')]['find']({'where':{'id':_0x1bc315['params']['id']}})[_0x8f22('0x24')](handleEntityNotFound(_0x307b2a,null))[_0x8f22('0x24')](removeEntity(_0x307b2a,null))[_0x8f22('0x45')](handleError(_0x307b2a,null));};exports[_0x8f22('0x4b')]=function(_0x3386b0,_0xc02532){return db['UserProfileSection']['describe']()[_0x8f22('0x24')](respondWithResult(_0xc02532,null))[_0x8f22('0x45')](handleError(_0xc02532,null));};
\ No newline at end of file
index 7caf1a5..66f93d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb06b=['../../config/logger','api','moment','request-promise','path','rimraf','./userProfileSection.attributes','exports','define','user_profile_has_sections','compositeIndex','userProfileId','lodash'];(function(_0x22b821,_0x2d7c7e){var _0x16c819=function(_0x50ce45){while(--_0x50ce45){_0x22b821['push'](_0x22b821['shift']());}};_0x16c819(++_0x2d7c7e);}(_0xb06b,0x16b));var _0xbb06=function(_0x28413f,_0x198298){_0x28413f=_0x28413f-0x0;var _0x22c46f=_0xb06b[_0x28413f];return _0x22c46f;};'use strict';var _=require(_0xbb06('0x0'));var util=require('util');var logger=require(_0xbb06('0x1'))(_0xbb06('0x2'));var moment=require(_0xbb06('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb06('0x4'));var fs=require('fs');var path=require(_0xbb06('0x5'));var rimraf=require(_0xbb06('0x6'));var config=require('../../config/environment');var attributes=require(_0xbb06('0x7'));module[_0xbb06('0x8')]=function(_0xb387a6,_0x3fc7b0){return _0xb387a6[_0xbb06('0x9')]('UserProfileSection',attributes,{'tableName':_0xbb06('0xa'),'paranoid':![],'indexes':[{'name':_0xbb06('0xb'),'fields':['sectionId',_0xbb06('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x93f4=['rimraf','../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','compositeIndex','sectionId','userProfileId','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0xe4a487,_0x5419aa){var _0x203de6=function(_0x529484){while(--_0x529484){_0xe4a487['push'](_0xe4a487['shift']());}};_0x203de6(++_0x5419aa);}(_0x93f4,0x79));var _0x493f=function(_0x3afad7,_0x2d8b64){_0x3afad7=_0x3afad7-0x0;var _0x42ddbb=_0x93f4[_0x3afad7];return _0x42ddbb;};'use strict';var _=require(_0x493f('0x0'));var util=require(_0x493f('0x1'));var logger=require('../../config/logger')(_0x493f('0x2'));var moment=require(_0x493f('0x3'));var BPromise=require(_0x493f('0x4'));var rp=require(_0x493f('0x5'));var fs=require('fs');var path=require(_0x493f('0x6'));var rimraf=require(_0x493f('0x7'));var config=require(_0x493f('0x8'));var attributes=require(_0x493f('0x9'));module[_0x493f('0xa')]=function(_0x2e2e94,_0x52fc37){return _0x2e2e94[_0x493f('0xb')](_0x493f('0xc'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x493f('0xd'),'fields':[_0x493f('0xe'),_0x493f('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index b715843..2bdd006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a4a=['UserProfileSection,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x2faf66,_0x4687e2){var _0xda4521=function(_0x19baa6){while(--_0x19baa6){_0x2faf66['push'](_0x2faf66['shift']());}};_0xda4521(++_0x4687e2);}(_0x5a4a,0x100));var _0xa5a4=function(_0x2b8f7f,_0x4012b3){_0x2b8f7f=_0x2b8f7f-0x0;var _0x23413a=_0x5a4a[_0x2b8f7f];return _0x23413a;};'use strict';var _=require(_0xa5a4('0x0'));var util=require(_0xa5a4('0x1'));var moment=require(_0xa5a4('0x2'));var BPromise=require(_0xa5a4('0x3'));var rs=require(_0xa5a4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa5a4('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa5a4('0x6'))(_0xa5a4('0x7'));var config=require(_0xa5a4('0x8'));var jayson=require(_0xa5a4('0x9'));var client=jayson['client'][_0xa5a4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31076c,_0x33d8b0,_0x5b7611){return new BPromise(function(_0x4717ef,_0x1040e4){return client[_0xa5a4('0xb')](_0x31076c,_0x5b7611)[_0xa5a4('0xc')](function(_0x5d9039){logger[_0xa5a4('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x33d8b0,_0xa5a4('0xe'));logger[_0xa5a4('0xf')](_0xa5a4('0x10'),_0x33d8b0,'request\x20sent',JSON['stringify'](_0x5d9039));if(_0x5d9039[_0xa5a4('0x11')]){if(_0x5d9039[_0xa5a4('0x11')][_0xa5a4('0x12')]===0x1f4){logger[_0xa5a4('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x33d8b0,_0x5d9039['error'][_0xa5a4('0x13')]);return _0x1040e4(_0x5d9039[_0xa5a4('0x11')][_0xa5a4('0x13')]);}logger[_0xa5a4('0x11')](_0xa5a4('0x14'),_0x33d8b0,_0x5d9039[_0xa5a4('0x11')][_0xa5a4('0x13')]);return _0x4717ef(_0x5d9039[_0xa5a4('0x11')][_0xa5a4('0x13')]);}else{logger['info'](_0xa5a4('0x14'),_0x33d8b0,_0xa5a4('0xe'));_0x4717ef(_0x5d9039[_0xa5a4('0x15')][_0xa5a4('0x13')]);}})[_0xa5a4('0x16')](function(_0x3961a3){logger[_0xa5a4('0x11')](_0xa5a4('0x14'),_0x33d8b0,_0x3961a3);_0x1040e4(_0x3961a3);});});}
\ No newline at end of file
+var _0x94b9=['client','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise'];(function(_0x257efa,_0x275047){var _0x1c031b=function(_0x17bb13){while(--_0x17bb13){_0x257efa['push'](_0x257efa['shift']());}};_0x1c031b(++_0x275047);}(_0x94b9,0x1ad));var _0x994b=function(_0x313ed5,_0xf1e0de){_0x313ed5=_0x313ed5-0x0;var _0x4c31c9=_0x94b9[_0x313ed5];return _0x4c31c9;};'use strict';var _=require(_0x994b('0x0'));var util=require('util');var moment=require(_0x994b('0x1'));var BPromise=require(_0x994b('0x2'));var rs=require(_0x994b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x994b('0x4'))['db'];var utils=require(_0x994b('0x5'));var logger=require('../../config/logger')(_0x994b('0x6'));var config=require('../../config/environment');var jayson=require(_0x994b('0x7'));var client=jayson[_0x994b('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb3cb87,_0x20abb0,_0x477ad9){return new BPromise(function(_0x47fd40,_0x4675ce){return client['request'](_0xb3cb87,_0x477ad9)[_0x994b('0x9')](function(_0xb11c94){logger[_0x994b('0xa')](_0x994b('0xb'),_0x20abb0,_0x994b('0xc'));logger[_0x994b('0xd')](_0x994b('0xe'),_0x20abb0,_0x994b('0xc'),JSON[_0x994b('0xf')](_0xb11c94));if(_0xb11c94['error']){if(_0xb11c94[_0x994b('0x10')]['code']===0x1f4){logger[_0x994b('0x10')](_0x994b('0xb'),_0x20abb0,_0xb11c94['error'][_0x994b('0x11')]);return _0x4675ce(_0xb11c94['error'][_0x994b('0x11')]);}logger[_0x994b('0x10')](_0x994b('0xb'),_0x20abb0,_0xb11c94['error'][_0x994b('0x11')]);return _0x47fd40(_0xb11c94[_0x994b('0x10')][_0x994b('0x11')]);}else{logger['info']('UserProfileSection,\x20%s,\x20%s',_0x20abb0,_0x994b('0xc'));_0x47fd40(_0xb11c94['result'][_0x994b('0x11')]);}})[_0x994b('0x12')](function(_0x2eba00){logger[_0x994b('0x10')](_0x994b('0xb'),_0x20abb0,_0x2eba00);_0x4675ce(_0x2eba00);});});}
\ No newline at end of file
index 60e2971..83f3c53 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(_0x5c181f,_0x1db256){var _0x39efb3=function(_0x19f19c){while(--_0x19f19c){_0x5c181f['push'](_0x5c181f['shift']());}};_0x39efb3(++_0x1db256);}(_0xe706,0xa3));var _0x6e70=function(_0x5ed099,_0x304e8a){_0x5ed099=_0x5ed099-0x0;var _0x46e1d7=_0xe706[_0x5ed099];return _0x46e1d7;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x12995e,_0x573c6d){var _0x321a35=function(_0x535901){while(--_0x535901){_0x12995e['push'](_0x12995e['shift']());}};_0x321a35(++_0x573c6d);}(_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 1c6acd6..ba4276a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x512d=['sequelize','exports'];(function(_0x3ef811,_0x2a6122){var _0x1c9788=function(_0x24141c){while(--_0x24141c){_0x3ef811['push'](_0x3ef811['shift']());}};_0x1c9788(++_0x2a6122);}(_0x512d,0x116));var _0xd512=function(_0x49de94,_0x1f1b68){_0x49de94=_0x49de94-0x0;var _0x1a7ccd=_0x512d[_0x49de94];return _0x1a7ccd;};'use strict';var Sequelize=require(_0xd512('0x0'));module[_0xd512('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x257b=['INTEGER'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x257b,0xf8));var _0xb257=function(_0x32713d,_0x38c89d){_0x32713d=_0x32713d-0x0;var _0x655a46=_0x257b[_0x32713d];return _0x655a46;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xb257('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index e053afe..3e7a6d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1b=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','lodash','util','../../config/logger','api'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0xaf1b,0x11a));var _0xbaf1=function(_0x34ee5d,_0xb099e1){_0x34ee5d=_0x34ee5d-0x0;var _0x1d1ad9=_0xaf1b[_0x34ee5d];return _0x1d1ad9;};'use strict';var _=require(_0xbaf1('0x0'));var util=require(_0xbaf1('0x1'));var logger=require(_0xbaf1('0x2'))(_0xbaf1('0x3'));var moment=require(_0xbaf1('0x4'));var BPromise=require(_0xbaf1('0x5'));var rp=require(_0xbaf1('0x6'));var fs=require('fs');var path=require(_0xbaf1('0x7'));var rimraf=require(_0xbaf1('0x8'));var config=require(_0xbaf1('0x9'));var attributes=require(_0xbaf1('0xa'));module[_0xbaf1('0xb')]=function(_0x7dd657,_0x2f05ad){return _0x7dd657['define'](_0xbaf1('0xc'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x90ec=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','user_has_sms_queues'];(function(_0x2f3d29,_0x150e7b){var _0x53d69d=function(_0x45f6ec){while(--_0x45f6ec){_0x2f3d29['push'](_0x2f3d29['shift']());}};_0x53d69d(++_0x150e7b);}(_0x90ec,0x1d4));var _0xc90e=function(_0x59d726,_0x4d5832){_0x59d726=_0x59d726-0x0;var _0xe77ce1=_0x90ec[_0x59d726];return _0xe77ce1;};'use strict';var _=require(_0xc90e('0x0'));var util=require(_0xc90e('0x1'));var logger=require('../../config/logger')(_0xc90e('0x2'));var moment=require(_0xc90e('0x3'));var BPromise=require(_0xc90e('0x4'));var rp=require(_0xc90e('0x5'));var fs=require('fs');var path=require(_0xc90e('0x6'));var rimraf=require('rimraf');var config=require(_0xc90e('0x7'));var attributes=require(_0xc90e('0x8'));module[_0xc90e('0x9')]=function(_0x54a0a8,_0x259c62){return _0x54a0a8['define'](_0xc90e('0xa'),attributes,{'tableName':_0xc90e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b52e6a2..f0b4ac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8197=['message','result','catch','lodash','util','bluebird','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','error','UserSmsQueue,\x20%s,\x20%s'];(function(_0x20412f,_0x32b502){var _0x16d840=function(_0x538f15){while(--_0x538f15){_0x20412f['push'](_0x20412f['shift']());}};_0x16d840(++_0x32b502);}(_0x8197,0x9c));var _0x7819=function(_0x2df6f9,_0x3ce342){_0x2df6f9=_0x2df6f9-0x0;var _0x4c2c3f=_0x8197[_0x2df6f9];return _0x4c2c3f;};'use strict';var _=require(_0x7819('0x0'));var util=require(_0x7819('0x1'));var moment=require('moment');var BPromise=require(_0x7819('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7819('0x3'))('rpc');var config=require(_0x7819('0x4'));var jayson=require(_0x7819('0x5'));var client=jayson['client'][_0x7819('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2aa631,_0x1a29fa,_0x1a4544){return new BPromise(function(_0x195275,_0x169cc2){return client[_0x7819('0x7')](_0x2aa631,_0x1a4544)[_0x7819('0x8')](function(_0x58b47e){logger[_0x7819('0x9')]('UserSmsQueue,\x20%s,\x20%s',_0x1a29fa,_0x7819('0xa'));logger[_0x7819('0xb')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x1a29fa,_0x7819('0xa'),JSON['stringify'](_0x58b47e));if(_0x58b47e['error']){if(_0x58b47e[_0x7819('0xc')]['code']===0x1f4){logger['error'](_0x7819('0xd'),_0x1a29fa,_0x58b47e[_0x7819('0xc')]['message']);return _0x169cc2(_0x58b47e[_0x7819('0xc')][_0x7819('0xe')]);}logger[_0x7819('0xc')]('UserSmsQueue,\x20%s,\x20%s',_0x1a29fa,_0x58b47e['error']['message']);return _0x195275(_0x58b47e['error'][_0x7819('0xe')]);}else{logger[_0x7819('0x9')](_0x7819('0xd'),_0x1a29fa,'request\x20sent');_0x195275(_0x58b47e[_0x7819('0xf')][_0x7819('0xe')]);}})[_0x7819('0x10')](function(_0x5482d7){logger[_0x7819('0xc')]('UserSmsQueue,\x20%s,\x20%s',_0x1a29fa,_0x5482d7);_0x169cc2(_0x5482d7);});});}
\ No newline at end of file
+var _0xce16=['error','code','message','catch','lodash','util','moment','bluebird','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s'];(function(_0x276232,_0x20b6b8){var _0x427024=function(_0x2e7ff8){while(--_0x2e7ff8){_0x276232['push'](_0x276232['shift']());}};_0x427024(++_0x20b6b8);}(_0xce16,0x68));var _0x6ce1=function(_0x6cf82d,_0x398fe5){_0x6cf82d=_0x6cf82d-0x0;var _0x193809=_0xce16[_0x6cf82d];return _0x193809;};'use strict';var _=require(_0x6ce1('0x0'));var util=require(_0x6ce1('0x1'));var moment=require(_0x6ce1('0x2'));var BPromise=require(_0x6ce1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6ce1('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6ce1('0x5'));var config=require(_0x6ce1('0x6'));var jayson=require(_0x6ce1('0x7'));var client=jayson[_0x6ce1('0x8')][_0x6ce1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x35dc76,_0x4b2392,_0xd97bbe){return new BPromise(function(_0x52b9fc,_0x31efed){return client['request'](_0x35dc76,_0xd97bbe)[_0x6ce1('0xa')](function(_0x3a964f){logger[_0x6ce1('0xb')](_0x6ce1('0xc'),_0x4b2392,_0x6ce1('0xd'));logger[_0x6ce1('0xe')](_0x6ce1('0xf'),_0x4b2392,_0x6ce1('0xd'),JSON['stringify'](_0x3a964f));if(_0x3a964f[_0x6ce1('0x10')]){if(_0x3a964f['error'][_0x6ce1('0x11')]===0x1f4){logger['error'](_0x6ce1('0xc'),_0x4b2392,_0x3a964f[_0x6ce1('0x10')]['message']);return _0x31efed(_0x3a964f[_0x6ce1('0x10')][_0x6ce1('0x12')]);}logger[_0x6ce1('0x10')]('UserSmsQueue,\x20%s,\x20%s',_0x4b2392,_0x3a964f[_0x6ce1('0x10')][_0x6ce1('0x12')]);return _0x52b9fc(_0x3a964f[_0x6ce1('0x10')][_0x6ce1('0x12')]);}else{logger[_0x6ce1('0xb')]('UserSmsQueue,\x20%s,\x20%s',_0x4b2392,_0x6ce1('0xd'));_0x52b9fc(_0x3a964f['result'][_0x6ce1('0x12')]);}})[_0x6ce1('0x13')](function(_0x35b94d){logger[_0x6ce1('0x10')](_0x6ce1('0xc'),_0x4b2392,_0x35b94d);_0x31efed(_0x35b94d);});});}
\ No newline at end of file
index 12d39b7..68fb659 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3674=['INTEGER'];(function(_0x2c43f8,_0x261d10){var _0x3c0c0f=function(_0x15f093){while(--_0x15f093){_0x2c43f8['push'](_0x2c43f8['shift']());}};_0x3c0c0f(++_0x261d10);}(_0x3674,0x143));var _0x4367=function(_0x3e40b8,_0x27358a){_0x3e40b8=_0x3e40b8-0x0;var _0x456430=_0x3674[_0x3e40b8];return _0x456430;};'use strict';var Sequelize=require('sequelize');module['exports']={'UserId':{'type':Sequelize[_0x4367('0x0')]},'VoicePrefixId':{'type':Sequelize[_0x4367('0x0')]}};
\ No newline at end of file
+var _0xfa56=['sequelize','INTEGER'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xfa56,0xca));var _0x6fa5=function(_0x5b58ad,_0x14406f){_0x5b58ad=_0x5b58ad-0x0;var _0x3d3e46=_0xfa56[_0x5b58ad];return _0x3d3e46;};'use strict';var Sequelize=require(_0x6fa5('0x0'));module['exports']={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x6fa5('0x1')]}};
\ No newline at end of file
index 6ec0da9..01d2638 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x4cb2c5,_0x19a4ab){var _0x3444fd=function(_0x1338cb){while(--_0x1338cb){_0x4cb2c5['push'](_0x4cb2c5['shift']());}};_0x3444fd(++_0x19a4ab);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0xe2b531,_0x1d9fd2){var _0x167d0b=function(_0x512053){while(--_0x512053){_0xe2b531['push'](_0xe2b531['shift']());}};_0x167d0b(++_0x1d9fd2);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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 8299a6e..8dc5800 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(_0x1cec24,_0x2ea4ea){var _0x1f4208=function(_0x1412f7){while(--_0x1412f7){_0x1cec24['push'](_0x1cec24['shift']());}};_0x1f4208(++_0x2ea4ea);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4f1da5,_0x4ced17){_0x4f1da5=_0x4f1da5-0x0;var _0xe972a8=_0xcb91[_0x4f1da5];return _0xe972a8;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x536295,_0x436f44){var _0x58879d=function(_0x28cd1b){while(--_0x28cd1b){_0x536295['push'](_0x536295['shift']());}};_0x58879d(++_0x436f44);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index f7eb68e..2e0d194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1ba=['INTEGER','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc1ba,0x18d));var _0xac1b=function(_0x1a66e6,_0xd948c2){_0x1a66e6=_0x1a66e6-0x0;var _0x25f0a2=_0xc1ba[_0x1a66e6];return _0x25f0a2;};'use strict';var Sequelize=require(_0xac1b('0x0'));module[_0xac1b('0x1')]={'penalty':{'type':Sequelize[_0xac1b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9e5c=['INTEGER','sequelize'];(function(_0x1937e5,_0x53e7d3){var _0x1215a1=function(_0x32fd90){while(--_0x32fd90){_0x1937e5['push'](_0x1937e5['shift']());}};_0x1215a1(++_0x53e7d3);}(_0x9e5c,0x17f));var _0xc9e5=function(_0x57a324,_0xbbd5f4){_0x57a324=_0x57a324-0x0;var _0x4a0beb=_0x9e5c[_0x57a324];return _0x4a0beb;};'use strict';var Sequelize=require(_0xc9e5('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xc9e5('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 238d2cc..88b9d58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9279=['path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define','lodash','util','api','moment','bluebird'];(function(_0x4f89ff,_0x5e466b){var _0x42f34c=function(_0x2806d6){while(--_0x2806d6){_0x4f89ff['push'](_0x4f89ff['shift']());}};_0x42f34c(++_0x5e466b);}(_0x9279,0x1be));var _0x9927=function(_0x2c944e,_0x26f659){_0x2c944e=_0x2c944e-0x0;var _0x2cc529=_0x9279[_0x2c944e];return _0x2cc529;};'use strict';var _=require(_0x9927('0x0'));var util=require(_0x9927('0x1'));var logger=require('../../config/logger')(_0x9927('0x2'));var moment=require(_0x9927('0x3'));var BPromise=require(_0x9927('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9927('0x5'));var rimraf=require(_0x9927('0x6'));var config=require(_0x9927('0x7'));var attributes=require(_0x9927('0x8'));module[_0x9927('0x9')]=function(_0x131056,_0x641b6){return _0x131056[_0x9927('0xa')]('UserVoiceQueue',attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd20=['rimraf','./userVoiceQueue.attributes','define','UserVoiceQueue','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0xfd20,0xfe));var _0x0fd2=function(_0x580256,_0x3110ed){_0x580256=_0x580256-0x0;var _0x34e885=_0xfd20[_0x580256];return _0x34e885;};'use strict';var _=require('lodash');var util=require(_0x0fd2('0x0'));var logger=require(_0x0fd2('0x1'))(_0x0fd2('0x2'));var moment=require(_0x0fd2('0x3'));var BPromise=require('bluebird');var rp=require(_0x0fd2('0x4'));var fs=require('fs');var path=require(_0x0fd2('0x5'));var rimraf=require(_0x0fd2('0x6'));var config=require('../../config/environment');var attributes=require(_0x0fd2('0x7'));module['exports']=function(_0x2c7bd4,_0x8e0e94){return _0x2c7bd4[_0x0fd2('0x8')](_0x0fd2('0x9'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec808fe..4393d4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c9a=['stringify','error','code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x39ddd4,_0x38ce35){var _0x3d642a=function(_0xa05ced){while(--_0xa05ced){_0x39ddd4['push'](_0x39ddd4['shift']());}};_0x3d642a(++_0x38ce35);}(_0x4c9a,0xa8));var _0xa4c9=function(_0x424679,_0x497754){_0x424679=_0x424679-0x0;var _0x4a2860=_0x4c9a[_0x424679];return _0x4a2860;};'use strict';var _=require('lodash');var util=require(_0xa4c9('0x0'));var moment=require(_0xa4c9('0x1'));var BPromise=require(_0xa4c9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa4c9('0x3'));var db=require(_0xa4c9('0x4'))['db'];var utils=require(_0xa4c9('0x5'));var logger=require(_0xa4c9('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x245a2e,_0x44b5ae,_0x3b5a31){return new BPromise(function(_0x47c8b9,_0x128fad){return client[_0xa4c9('0x7')](_0x245a2e,_0x3b5a31)['then'](function(_0x4548ae){logger[_0xa4c9('0x8')](_0xa4c9('0x9'),_0x44b5ae,_0xa4c9('0xa'));logger[_0xa4c9('0xb')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x44b5ae,'request\x20sent',JSON[_0xa4c9('0xc')](_0x4548ae));if(_0x4548ae[_0xa4c9('0xd')]){if(_0x4548ae[_0xa4c9('0xd')][_0xa4c9('0xe')]===0x1f4){logger[_0xa4c9('0xd')](_0xa4c9('0x9'),_0x44b5ae,_0x4548ae['error']['message']);return _0x128fad(_0x4548ae[_0xa4c9('0xd')]['message']);}logger[_0xa4c9('0xd')](_0xa4c9('0x9'),_0x44b5ae,_0x4548ae[_0xa4c9('0xd')][_0xa4c9('0xf')]);return _0x47c8b9(_0x4548ae['error'][_0xa4c9('0xf')]);}else{logger[_0xa4c9('0x8')](_0xa4c9('0x9'),_0x44b5ae,'request\x20sent');_0x47c8b9(_0x4548ae[_0xa4c9('0x10')][_0xa4c9('0xf')]);}})[_0xa4c9('0x11')](function(_0x32cef7){logger[_0xa4c9('0xd')]('UserVoiceQueue,\x20%s,\x20%s',_0x44b5ae,_0x32cef7);_0x128fad(_0x32cef7);});});}
\ No newline at end of file
+var _0x4286=['message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x50b1ff,_0x1165ba){var _0xda0c37=function(_0x4d0d22){while(--_0x4d0d22){_0x50b1ff['push'](_0x50b1ff['shift']());}};_0xda0c37(++_0x1165ba);}(_0x4286,0x1a1));var _0x6428=function(_0x31980f,_0x13653b){_0x31980f=_0x31980f-0x0;var _0x3e2304=_0x4286[_0x31980f];return _0x3e2304;};'use strict';var _=require(_0x6428('0x0'));var util=require(_0x6428('0x1'));var moment=require('moment');var BPromise=require(_0x6428('0x2'));var rs=require(_0x6428('0x3'));var fs=require('fs');var Redis=require(_0x6428('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6428('0x5'));var logger=require('../../config/logger')(_0x6428('0x6'));var config=require(_0x6428('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6428('0x8')][_0x6428('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x11667c,_0x3a1bec,_0x247067){return new BPromise(function(_0x438cf9,_0x258d22){return client[_0x6428('0xa')](_0x11667c,_0x247067)[_0x6428('0xb')](function(_0x486f51){logger[_0x6428('0xc')](_0x6428('0xd'),_0x3a1bec,_0x6428('0xe'));logger[_0x6428('0xf')](_0x6428('0x10'),_0x3a1bec,_0x6428('0xe'),JSON[_0x6428('0x11')](_0x486f51));if(_0x486f51[_0x6428('0x12')]){if(_0x486f51[_0x6428('0x12')][_0x6428('0x13')]===0x1f4){logger[_0x6428('0x12')](_0x6428('0xd'),_0x3a1bec,_0x486f51[_0x6428('0x12')]['message']);return _0x258d22(_0x486f51[_0x6428('0x12')][_0x6428('0x14')]);}logger[_0x6428('0x12')](_0x6428('0xd'),_0x3a1bec,_0x486f51[_0x6428('0x12')][_0x6428('0x14')]);return _0x438cf9(_0x486f51[_0x6428('0x12')][_0x6428('0x14')]);}else{logger[_0x6428('0xc')](_0x6428('0xd'),_0x3a1bec,_0x6428('0xe'));_0x438cf9(_0x486f51[_0x6428('0x15')][_0x6428('0x14')]);}})[_0x6428('0x16')](function(_0x1aeca4){logger[_0x6428('0x12')](_0x6428('0xd'),_0x3a1bec,_0x1aeca4);_0x258d22(_0x1aeca4);});});}
\ No newline at end of file
index a8e00da..a59c847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x42f394,_0x36f2a0){var _0x59d5b1=function(_0x60f01b){while(--_0x60f01b){_0x42f394['push'](_0x42f394['shift']());}};_0x59d5b1(++_0x36f2a0);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x91b043,_0x540ff2){var _0xc54353=function(_0xbbc189){while(--_0xbbc189){_0x91b043['push'](_0x91b043['shift']());}};_0xc54353(++_0x540ff2);}(_0xedd9,0xfc));var _0x9edd=function(_0x37cd0c,_0x3a94ce){_0x37cd0c=_0x37cd0c-0x0;var _0x4cdce7=_0xedd9[_0x37cd0c];return _0x4cdce7;};'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 e50ec27..c2b7327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0610=['INTEGER','queue_interface','sequelize','Required\x20by\x20Asterisk','STRING'];(function(_0x289074,_0x259667){var _0x4b47ec=function(_0x592476){while(--_0x592476){_0x289074['push'](_0x289074['shift']());}};_0x4b47ec(++_0x259667);}(_0x0610,0x14c));var _0x0061=function(_0x29d850,_0x128fca){_0x29d850=_0x29d850-0x0;var _0x123065=_0x0610[_0x29d850];return _0x123065;};'use strict';var Sequelize=require(_0x0061('0x0'));module['exports']={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x0061('0x1')},'membername':{'type':Sequelize[_0x0061('0x2')],'allowNull':![],'comment':_0x0061('0x1')},'UserId':{'type':Sequelize[_0x0061('0x3')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x0061('0x2')],'allowNull':![],'unique':_0x0061('0x4'),'comment':_0x0061('0x1')},'VoiceQueueId':{'type':Sequelize[_0x0061('0x3')],'allowNull':![]},'interface':{'type':Sequelize[_0x0061('0x2')],'allowNull':![],'unique':_0x0061('0x4'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x0061('0x3')](0xb),'defaultValue':0x0,'comment':_0x0061('0x1')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x0061('0x1')}};
\ No newline at end of file
+var _0x263d=['INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface','sequelize'];(function(_0x53072e,_0xdb61f1){var _0x2b0690=function(_0x21db60){while(--_0x21db60){_0x53072e['push'](_0x53072e['shift']());}};_0x2b0690(++_0xdb61f1);}(_0x263d,0x8b));var _0xd263=function(_0x57928b,_0x29a111){_0x57928b=_0x57928b-0x0;var _0x49aad6=_0x263d[_0x57928b];return _0x49aad6;};'use strict';var Sequelize=require(_0xd263('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xd263('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xd263('0x2')},'membername':{'type':Sequelize[_0xd263('0x3')],'allowNull':![],'comment':_0xd263('0x2')},'UserId':{'type':Sequelize[_0xd263('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xd263('0x3')],'allowNull':![],'unique':_0xd263('0x4'),'comment':_0xd263('0x2')},'VoiceQueueId':{'type':Sequelize[_0xd263('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xd263('0x3')],'allowNull':![],'unique':_0xd263('0x4'),'comment':_0xd263('0x2')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xd263('0x2')},'paused':{'type':Sequelize[_0xd263('0x1')](0xb),'defaultValue':0x0,'comment':_0xd263('0x2')}};
\ No newline at end of file
index 5850963..be9d827 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa28c=['setMaxListeners','save','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x4a53e2,_0x13321e){var _0x3f2d76=function(_0x50c5cf){while(--_0x50c5cf){_0x4a53e2['push'](_0x4a53e2['shift']());}};_0x3f2d76(++_0x13321e);}(_0xa28c,0xe6));var _0xca28=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xa28c[_0x160c73];return _0xd9302;};'use strict';var EventEmitter=require(_0xca28('0x0'));var UserVoiceQueueRt=require(_0xca28('0x1'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xca28('0x2')](0x0);var events={'afterCreate':_0xca28('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3b1a92){return function(_0x1f7517,_0x2c921d,_0x3d22fa){UserVoiceQueueRtEvents['emit'](_0x3b1a92+':'+_0x1f7517['id'],_0x1f7517);UserVoiceQueueRtEvents[_0xca28('0x4')](_0x3b1a92,_0x1f7517);_0x3d22fa(null);};}for(var e in events){if(events[_0xca28('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0xca28('0x6')](e,emitEvent(event));}}module[_0xca28('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x178e=['exports','setMaxListeners','save','emit','hasOwnProperty','hook'];(function(_0x12c7b1,_0x5a9edc){var _0x7d2760=function(_0x5df2a8){while(--_0x5df2a8){_0x12c7b1['push'](_0x12c7b1['shift']());}};_0x7d2760(++_0x5a9edc);}(_0x178e,0x133));var _0xe178=function(_0x332a78,_0x4d38b3){_0x332a78=_0x332a78-0x0;var _0x537ac5=_0x178e[_0x332a78];return _0x537ac5;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require('../../mysqldb')['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xe178('0x0')](0x0);var events={'afterCreate':_0xe178('0x1'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5239de){return function(_0x52a5c2,_0x346cd8,_0x7ea7a7){UserVoiceQueueRtEvents[_0xe178('0x2')](_0x5239de+':'+_0x52a5c2['id'],_0x52a5c2);UserVoiceQueueRtEvents['emit'](_0x5239de,_0x52a5c2);_0x7ea7a7(null);};}for(var e in events){if(events[_0xe178('0x3')](e)){var event=events[e];UserVoiceQueueRt[_0xe178('0x4')](e,emitEvent(event));}}module[_0xe178('0x5')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index afc267c..07dbc74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78b=['../../config/environment','./userVoiceQueueRt.attributes','define','user_has_voice_queues_rt','lodash','util','../../config/logger','moment','request-promise','path'];(function(_0x655691,_0x647707){var _0x24ac88=function(_0x2f93f5){while(--_0x2f93f5){_0x655691['push'](_0x655691['shift']());}};_0x24ac88(++_0x647707);}(_0xb78b,0xb8));var _0xbb78=function(_0x4a7701,_0x3f80b9){_0x4a7701=_0x4a7701-0x0;var _0x4b8b8d=_0xb78b[_0x4a7701];return _0x4b8b8d;};'use strict';var _=require(_0xbb78('0x0'));var util=require(_0xbb78('0x1'));var logger=require(_0xbb78('0x2'))('api');var moment=require(_0xbb78('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb78('0x4'));var fs=require('fs');var path=require(_0xbb78('0x5'));var rimraf=require('rimraf');var config=require(_0xbb78('0x6'));var attributes=require(_0xbb78('0x7'));module['exports']=function(_0x5d2b0c,_0x43d763){return _0x5d2b0c[_0xbb78('0x8')]('UserVoiceQueueRt',attributes,{'tableName':_0xbb78('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1395=['path','rimraf','../../config/environment','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x30c9fd,_0x2614f0){var _0x397b35=function(_0x59df58){while(--_0x59df58){_0x30c9fd['push'](_0x30c9fd['shift']());}};_0x397b35(++_0x2614f0);}(_0x1395,0x165));var _0x5139=function(_0x4e6011,_0x1f92b9){_0x4e6011=_0x4e6011-0x0;var _0x3b5abc=_0x1395[_0x4e6011];return _0x3b5abc;};'use strict';var _=require(_0x5139('0x0'));var util=require(_0x5139('0x1'));var logger=require(_0x5139('0x2'))(_0x5139('0x3'));var moment=require(_0x5139('0x4'));var BPromise=require(_0x5139('0x5'));var rp=require(_0x5139('0x6'));var fs=require('fs');var path=require(_0x5139('0x7'));var rimraf=require(_0x5139('0x8'));var config=require(_0x5139('0x9'));var attributes=require('./userVoiceQueueRt.attributes');module['exports']=function(_0x46de24,_0x5af228){return _0x46de24[_0x5139('0xa')](_0x5139('0xb'),attributes,{'tableName':_0x5139('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a27d0d..7dbbbe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f8d=['result','catch','GetVoiceQueueRtPauses','findAll','options','raw','where','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userVoiceQueueRt.socket','register','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info'];(function(_0x55490b,_0x3e464b){var _0x8432cb=function(_0x1c7b6c){while(--_0x1c7b6c){_0x55490b['push'](_0x55490b['shift']());}};_0x8432cb(++_0x3e464b);}(_0x5f8d,0x1df));var _0xd5f8=function(_0x23acdb,_0x211fc4){_0x23acdb=_0x23acdb-0x0;var _0x37efca=_0x5f8d[_0x23acdb];return _0x37efca;};'use strict';var _=require(_0xd5f8('0x0'));var util=require(_0xd5f8('0x1'));var moment=require(_0xd5f8('0x2'));var BPromise=require('bluebird');var rs=require(_0xd5f8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd5f8('0x4'))['db'];var utils=require(_0xd5f8('0x5'));var logger=require(_0xd5f8('0x6'))(_0xd5f8('0x7'));var config=require('../../config/environment');var jayson=require(_0xd5f8('0x8'));var client=jayson[_0xd5f8('0x9')][_0xd5f8('0xa')]({'port':0x232a});config[_0xd5f8('0xb')]=_[_0xd5f8('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd5f8('0xd'))(new Redis(config[_0xd5f8('0xb')]));require(_0xd5f8('0xe'))[_0xd5f8('0xf')](socket);function respondWithRpcPromise(_0x2ff605,_0x23e26,_0x1bd889){return new BPromise(function(_0x4da276,_0x32d2e6){return client['request'](_0x2ff605,_0x1bd889)['then'](function(_0x1c9750){logger['info'](_0xd5f8('0x10'),_0x23e26,'request\x20sent');logger[_0xd5f8('0x11')](_0xd5f8('0x12'),_0x23e26,_0xd5f8('0x13'),JSON[_0xd5f8('0x14')](_0x1c9750));if(_0x1c9750[_0xd5f8('0x15')]){if(_0x1c9750[_0xd5f8('0x15')][_0xd5f8('0x16')]===0x1f4){logger[_0xd5f8('0x15')](_0xd5f8('0x10'),_0x23e26,_0x1c9750['error']['message']);return _0x32d2e6(_0x1c9750[_0xd5f8('0x15')][_0xd5f8('0x17')]);}logger[_0xd5f8('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x23e26,_0x1c9750['error'][_0xd5f8('0x17')]);return _0x4da276(_0x1c9750[_0xd5f8('0x15')][_0xd5f8('0x17')]);}else{logger[_0xd5f8('0x18')](_0xd5f8('0x10'),_0x23e26,_0xd5f8('0x13'));_0x4da276(_0x1c9750[_0xd5f8('0x19')][_0xd5f8('0x17')]);}})[_0xd5f8('0x1a')](function(_0x49c092){logger[_0xd5f8('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x23e26,_0x49c092);_0x32d2e6(_0x49c092);});});}exports[_0xd5f8('0x1b')]=function(_0x5e21a1){var _0x1b5d23=this;return new Promise(function(_0x15292d,_0x53886b){return db['UserVoiceQueueRt'][_0xd5f8('0x1c')]({'raw':_0x5e21a1[_0xd5f8('0x1d')]?_0x5e21a1['options'][_0xd5f8('0x1e')]===undefined?!![]:![]:!![],'where':_0x5e21a1[_0xd5f8('0x1d')]?_0x5e21a1[_0xd5f8('0x1d')][_0xd5f8('0x1f')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xd5f8('0x20')](_0xd5f8('0x21')))),_0xd5f8('0x22')]]})[_0xd5f8('0x23')](function(_0xc7ac45){logger[_0xd5f8('0x18')](_0xd5f8('0x1b'),_0x5e21a1);logger[_0xd5f8('0x11')](_0xd5f8('0x1b'),_0x5e21a1,JSON[_0xd5f8('0x14')](_0xc7ac45));_0x15292d(_0xc7ac45);})[_0xd5f8('0x1a')](function(_0x513657){logger[_0xd5f8('0x15')]('GetVoiceQueueRtPauses',_0x513657[_0xd5f8('0x17')],_0x5e21a1);_0x53886b(_0x1b5d23[_0xd5f8('0x15')](0x1f4,_0x513657['message']));});});};
\ No newline at end of file
+var _0xdff7=['http','redis','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','UserVoiceQueueRt','findAll','options','raw','sequelize','literal','GetVoiceQueueRtPauses','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2052e8,_0x4706df){var _0x4bb84f=function(_0x128235){while(--_0x128235){_0x2052e8['push'](_0x2052e8['shift']());}};_0x4bb84f(++_0x4706df);}(_0xdff7,0x18e));var _0x7dff=function(_0x48fd1b,_0xf73812){_0x48fd1b=_0x48fd1b-0x0;var _0x7370d9=_0xdff7[_0x48fd1b];return _0x7370d9;};'use strict';var _=require(_0x7dff('0x0'));var util=require(_0x7dff('0x1'));var moment=require(_0x7dff('0x2'));var BPromise=require(_0x7dff('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7dff('0x4'));var logger=require(_0x7dff('0x5'))(_0x7dff('0x6'));var config=require(_0x7dff('0x7'));var jayson=require(_0x7dff('0x8'));var client=jayson[_0x7dff('0x9')][_0x7dff('0xa')]({'port':0x232a});config[_0x7dff('0xb')]=_['defaults'](config[_0x7dff('0xb')],{'host':_0x7dff('0xc'),'port':0x18eb});var socket=require(_0x7dff('0xd'))(new Redis(config[_0x7dff('0xb')]));require(_0x7dff('0xe'))[_0x7dff('0xf')](socket);function respondWithRpcPromise(_0x211f1a,_0x50149d,_0x624f54){return new BPromise(function(_0x5fabcc,_0x368b76){return client[_0x7dff('0x10')](_0x211f1a,_0x624f54)[_0x7dff('0x11')](function(_0x58ef6a){logger[_0x7dff('0x12')](_0x7dff('0x13'),_0x50149d,_0x7dff('0x14'));logger[_0x7dff('0x15')](_0x7dff('0x16'),_0x50149d,'request\x20sent',JSON[_0x7dff('0x17')](_0x58ef6a));if(_0x58ef6a[_0x7dff('0x18')]){if(_0x58ef6a[_0x7dff('0x18')]['code']===0x1f4){logger[_0x7dff('0x18')](_0x7dff('0x13'),_0x50149d,_0x58ef6a[_0x7dff('0x18')][_0x7dff('0x19')]);return _0x368b76(_0x58ef6a[_0x7dff('0x18')][_0x7dff('0x19')]);}logger[_0x7dff('0x18')](_0x7dff('0x13'),_0x50149d,_0x58ef6a[_0x7dff('0x18')]['message']);return _0x5fabcc(_0x58ef6a[_0x7dff('0x18')][_0x7dff('0x19')]);}else{logger['info'](_0x7dff('0x13'),_0x50149d,_0x7dff('0x14'));_0x5fabcc(_0x58ef6a['result']['message']);}})[_0x7dff('0x1a')](function(_0x40f557){logger['error'](_0x7dff('0x13'),_0x50149d,_0x40f557);_0x368b76(_0x40f557);});});}exports['GetVoiceQueueRtPauses']=function(_0x186daf){var _0x42dcfb=this;return new Promise(function(_0xf8785b,_0xc9dfd2){return db[_0x7dff('0x1b')][_0x7dff('0x1c')]({'raw':_0x186daf[_0x7dff('0x1d')]?_0x186daf['options'][_0x7dff('0x1e')]===undefined?!![]:![]:!![],'where':_0x186daf[_0x7dff('0x1d')]?_0x186daf[_0x7dff('0x1d')]['where']||null:null,'attributes':[[db[_0x7dff('0x1f')]['fn']('COUNT',db[_0x7dff('0x1f')]['fn']('IF',db[_0x7dff('0x1f')][_0x7dff('0x20')]('`paused`\x20=\x201,\x201,\x20null'))),'outboundQueuePauses']]})[_0x7dff('0x11')](function(_0x19c32f){logger[_0x7dff('0x12')](_0x7dff('0x21'),_0x186daf);logger[_0x7dff('0x15')](_0x7dff('0x21'),_0x186daf,JSON['stringify'](_0x19c32f));_0xf8785b(_0x19c32f);})[_0x7dff('0x1a')](function(_0x746663){logger['error'](_0x7dff('0x21'),_0x746663['message'],_0x186daf);_0xc9dfd2(_0x42dcfb['error'](0x1f4,_0x746663['message']));});});};
\ No newline at end of file
index 17311d2..62e0d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc319=['userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','emit','removeListener','length'];(function(_0x460a7f,_0x210391){var _0x1c4538=function(_0x134fb7){while(--_0x134fb7){_0x460a7f['push'](_0x460a7f['shift']());}};_0x1c4538(++_0x210391);}(_0xc319,0x12e));var _0x9c31=function(_0x1d996e,_0x5e6c2f){_0x1d996e=_0x1d996e-0x0;var _0x3260a2=_0xc319[_0x1d996e];return _0x3260a2;};'use strict';var UserVoiceQueueRtEvents=require(_0x9c31('0x0'));var events=[_0x9c31('0x1'),_0x9c31('0x2'),'update'];function createListener(_0x8bed1a,_0x387562){return function(_0x5bc244){_0x387562[_0x9c31('0x3')](_0x8bed1a,_0x5bc244);};}function removeListener(_0x43faca,_0x16ed0c){return function(){UserVoiceQueueRtEvents[_0x9c31('0x4')](_0x43faca,_0x16ed0c);};}exports['register']=function(_0x401c82){for(var _0x109244=0x0,_0x348e09=events[_0x9c31('0x5')];_0x109244<_0x348e09;_0x109244++){var _0x3aa031=events[_0x109244];var _0x573261=createListener(_0x9c31('0x6')+_0x3aa031,_0x401c82);UserVoiceQueueRtEvents['on'](_0x3aa031,_0x573261);}};
\ No newline at end of file
+var _0x199c=['emit','register','length','userVoiceQueueRt:','remove','update'];(function(_0x105a8a,_0x15a3a2){var _0x105a0e=function(_0x3beeb1){while(--_0x3beeb1){_0x105a8a['push'](_0x105a8a['shift']());}};_0x105a0e(++_0x15a3a2);}(_0x199c,0x1d8));var _0xc199=function(_0x269fba,_0xa68777){_0x269fba=_0x269fba-0x0;var _0x1eeb74=_0x199c[_0x269fba];return _0x1eeb74;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=['save',_0xc199('0x0'),_0xc199('0x1')];function createListener(_0xf15666,_0x3e0b15){return function(_0x124132){_0x3e0b15[_0xc199('0x2')](_0xf15666,_0x124132);};}function removeListener(_0x3f06cc,_0x1eecc2){return function(){UserVoiceQueueRtEvents['removeListener'](_0x3f06cc,_0x1eecc2);};}exports[_0xc199('0x3')]=function(_0x2ff172){for(var _0x499721=0x0,_0x4cd9cb=events[_0xc199('0x4')];_0x499721<_0x4cd9cb;_0x499721++){var _0x126236=events[_0x499721];var _0x12d6df=createListener(_0xc199('0x5')+_0x126236,_0x2ff172);UserVoiceQueueRtEvents['on'](_0x126236,_0x12d6df);}};
\ No newline at end of file
index bd21903..eb72ea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0xa779bb,_0x52a308){var _0x4ab153=function(_0x4f9522){while(--_0x4f9522){_0xa779bb['push'](_0xa779bb['shift']());}};_0x4ab153(++_0x52a308);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x253745,_0x31e25b){var _0x2b94ee=function(_0x64e66a){while(--_0x64e66a){_0x253745['push'](_0x253745['shift']());}};_0x2b94ee(++_0x31e25b);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index a44f37d..9d92b61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x649f=['sequelize','exports','INTEGER'];(function(_0x2451ae,_0x2ff3a4){var _0x5d6db9=function(_0x1b0200){while(--_0x1b0200){_0x2451ae['push'](_0x2451ae['shift']());}};_0x5d6db9(++_0x2ff3a4);}(_0x649f,0x8d));var _0xf649=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0x649f[_0x474bc0];return _0x4b24cf;};'use strict';var Sequelize=require(_0xf649('0x0'));module[_0xf649('0x1')]={'penalty':{'type':Sequelize[_0xf649('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xefbf=['exports','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xefbf,0xa3));var _0xfefb=function(_0x91cbd2,_0x1e5e94){_0x91cbd2=_0x91cbd2-0x0;var _0x232c8a=_0xefbf[_0x91cbd2];return _0x232c8a;};'use strict';var Sequelize=require(_0xfefb('0x0'));module[_0xfefb('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 647e72b..637b600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc1b=['util','api','moment','bluebird','request-promise','path','rimraf','./userWhatsappQueue.attributes','exports','user_has_whatsapp_queues','lodash'];(function(_0x2e3d95,_0x1a912c){var _0x56e1ec=function(_0x16bc8a){while(--_0x16bc8a){_0x2e3d95['push'](_0x2e3d95['shift']());}};_0x56e1ec(++_0x1a912c);}(_0xcc1b,0xe6));var _0xbcc1=function(_0x52938e,_0x44b866){_0x52938e=_0x52938e-0x0;var _0x219324=_0xcc1b[_0x52938e];return _0x219324;};'use strict';var _=require(_0xbcc1('0x0'));var util=require(_0xbcc1('0x1'));var logger=require('../../config/logger')(_0xbcc1('0x2'));var moment=require(_0xbcc1('0x3'));var BPromise=require(_0xbcc1('0x4'));var rp=require(_0xbcc1('0x5'));var fs=require('fs');var path=require(_0xbcc1('0x6'));var rimraf=require(_0xbcc1('0x7'));var config=require('../../config/environment');var attributes=require(_0xbcc1('0x8'));module[_0xbcc1('0x9')]=function(_0x81fc78,_0x4f1536){return _0x81fc78['define']('UserWhatsappQueue',attributes,{'tableName':_0xbcc1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3880=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','UserWhatsappQueue','user_has_whatsapp_queues','util'];(function(_0x1197b0,_0x3b6e34){var _0x42aa68=function(_0x2f0265){while(--_0x2f0265){_0x1197b0['push'](_0x1197b0['shift']());}};_0x42aa68(++_0x3b6e34);}(_0x3880,0x197));var _0x0388=function(_0x22c03d,_0x3e6ae5){_0x22c03d=_0x22c03d-0x0;var _0x3e0e85=_0x3880[_0x22c03d];return _0x3e0e85;};'use strict';var _=require('lodash');var util=require(_0x0388('0x0'));var logger=require(_0x0388('0x1'))(_0x0388('0x2'));var moment=require(_0x0388('0x3'));var BPromise=require('bluebird');var rp=require(_0x0388('0x4'));var fs=require('fs');var path=require(_0x0388('0x5'));var rimraf=require(_0x0388('0x6'));var config=require(_0x0388('0x7'));var attributes=require(_0x0388('0x8'));module[_0x0388('0x9')]=function(_0x4a1632,_0x36cd04){return _0x4a1632['define'](_0x0388('0xa'),attributes,{'tableName':_0x0388('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e97ed7..88c6cca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25bd=['debug','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x3925e5,_0x1f6d4e){var _0x49e5a7=function(_0x27c604){while(--_0x27c604){_0x3925e5['push'](_0x3925e5['shift']());}};_0x49e5a7(++_0x1f6d4e);}(_0x25bd,0x1d4));var _0xd25b=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x25bd[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0xd25b('0x0'));var util=require(_0xd25b('0x1'));var moment=require(_0xd25b('0x2'));var BPromise=require(_0xd25b('0x3'));var rs=require(_0xd25b('0x4'));var fs=require('fs');var Redis=require(_0xd25b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd25b('0x6'));var logger=require(_0xd25b('0x7'))(_0xd25b('0x8'));var config=require(_0xd25b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd25b('0xa')][_0xd25b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9c5610,_0x3a6db3,_0x124f8f){return new BPromise(function(_0x3b6427,_0x3e252f){return client[_0xd25b('0xc')](_0x9c5610,_0x124f8f)['then'](function(_0xdc0f70){logger[_0xd25b('0xd')](_0xd25b('0xe'),_0x3a6db3,_0xd25b('0xf'));logger[_0xd25b('0x10')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x3a6db3,'request\x20sent',JSON['stringify'](_0xdc0f70));if(_0xdc0f70[_0xd25b('0x11')]){if(_0xdc0f70[_0xd25b('0x11')][_0xd25b('0x12')]===0x1f4){logger[_0xd25b('0x11')](_0xd25b('0xe'),_0x3a6db3,_0xdc0f70[_0xd25b('0x11')][_0xd25b('0x13')]);return _0x3e252f(_0xdc0f70[_0xd25b('0x11')][_0xd25b('0x13')]);}logger[_0xd25b('0x11')](_0xd25b('0xe'),_0x3a6db3,_0xdc0f70[_0xd25b('0x11')][_0xd25b('0x13')]);return _0x3b6427(_0xdc0f70['error'][_0xd25b('0x13')]);}else{logger[_0xd25b('0xd')](_0xd25b('0xe'),_0x3a6db3,_0xd25b('0xf'));_0x3b6427(_0xdc0f70[_0xd25b('0x14')][_0xd25b('0x13')]);}})[_0xd25b('0x15')](function(_0x3488ad){logger['error'](_0xd25b('0xe'),_0x3a6db3,_0x3488ad);_0x3e252f(_0x3488ad);});});}
\ No newline at end of file
+var _0xcb19=['../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0xcb19,0x127));var _0x9cb1=function(_0x5757d3,_0x2746da){_0x5757d3=_0x5757d3-0x0;var _0x53a696=_0xcb19[_0x5757d3];return _0x53a696;};'use strict';var _=require(_0x9cb1('0x0'));var util=require(_0x9cb1('0x1'));var moment=require(_0x9cb1('0x2'));var BPromise=require('bluebird');var rs=require(_0x9cb1('0x3'));var fs=require('fs');var Redis=require(_0x9cb1('0x4'));var db=require(_0x9cb1('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9cb1('0x6'));var config=require(_0x9cb1('0x7'));var jayson=require(_0x9cb1('0x8'));var client=jayson['client'][_0x9cb1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1b416e,_0xa9ae6e,_0x2b6054){return new BPromise(function(_0xfd1d1f,_0x1dacf2){return client[_0x9cb1('0xa')](_0x1b416e,_0x2b6054)[_0x9cb1('0xb')](function(_0x2a21db){logger[_0x9cb1('0xc')](_0x9cb1('0xd'),_0xa9ae6e,_0x9cb1('0xe'));logger['debug']('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0xa9ae6e,_0x9cb1('0xe'),JSON[_0x9cb1('0xf')](_0x2a21db));if(_0x2a21db['error']){if(_0x2a21db[_0x9cb1('0x10')][_0x9cb1('0x11')]===0x1f4){logger[_0x9cb1('0x10')](_0x9cb1('0xd'),_0xa9ae6e,_0x2a21db[_0x9cb1('0x10')][_0x9cb1('0x12')]);return _0x1dacf2(_0x2a21db['error']['message']);}logger[_0x9cb1('0x10')](_0x9cb1('0xd'),_0xa9ae6e,_0x2a21db[_0x9cb1('0x10')]['message']);return _0xfd1d1f(_0x2a21db[_0x9cb1('0x10')][_0x9cb1('0x12')]);}else{logger['info'](_0x9cb1('0xd'),_0xa9ae6e,_0x9cb1('0xe'));_0xfd1d1f(_0x2a21db[_0x9cb1('0x13')][_0x9cb1('0x12')]);}})['catch'](function(_0x286478){logger['error'](_0x9cb1('0xd'),_0xa9ae6e,_0x286478);_0x1dacf2(_0x286478);});});}
\ No newline at end of file
index 21f9ef1..ac9ba03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff96=['post','isAuthenticated','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','index','show'];(function(_0x893078,_0x5aa5bc){var _0x25797d=function(_0x256af6){while(--_0x256af6){_0x893078['push'](_0x893078['shift']());}};_0x25797d(++_0x5aa5bc);}(_0xff96,0x179));var _0x6ff9=function(_0x19cbcc,_0x44384e){_0x19cbcc=_0x19cbcc-0x0;var _0x44d405=_0xff96[_0x19cbcc];return _0x44d405;};'use strict';var multer=require(_0x6ff9('0x0'));var util=require(_0x6ff9('0x1'));var path=require(_0x6ff9('0x2'));var timeout=require(_0x6ff9('0x3'));var express=require(_0x6ff9('0x4'));var router=express[_0x6ff9('0x5')]();var fs_extra=require(_0x6ff9('0x6'));var auth=require(_0x6ff9('0x7'));var interaction=require(_0x6ff9('0x8'));var config=require(_0x6ff9('0x9'));var controller=require(_0x6ff9('0xa'));router[_0x6ff9('0xb')]('/',auth['isAuthenticated'](),controller[_0x6ff9('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x6ff9('0xd')]);router[_0x6ff9('0xe')]('/',auth[_0x6ff9('0xf')](),controller[_0x6ff9('0x10')]);router[_0x6ff9('0x11')](_0x6ff9('0x12'),auth['isAuthenticated'](),controller[_0x6ff9('0x13')]);router[_0x6ff9('0x14')](_0x6ff9('0x12'),auth[_0x6ff9('0xf')](),controller[_0x6ff9('0x15')]);module[_0x6ff9('0x16')]=router;
\ No newline at end of file
+var _0x269f=['isAuthenticated','index','get','/:id','show','post','create','put','update','delete','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller'];(function(_0x5d549b,_0x1d08de){var _0x412257=function(_0x109674){while(--_0x109674){_0x5d549b['push'](_0x5d549b['shift']());}};_0x412257(++_0x1d08de);}(_0x269f,0xee));var _0xf269=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x269f[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0xf269('0x0'));var util=require(_0xf269('0x1'));var path=require(_0xf269('0x2'));var timeout=require('connect-timeout');var express=require(_0xf269('0x3'));var router=express['Router']();var fs_extra=require(_0xf269('0x4'));var auth=require(_0xf269('0x5'));var interaction=require(_0xf269('0x6'));var config=require(_0xf269('0x7'));var controller=require(_0xf269('0x8'));router['get']('/',auth[_0xf269('0x9')](),controller[_0xf269('0xa')]);router[_0xf269('0xb')](_0xf269('0xc'),auth[_0xf269('0x9')](),controller[_0xf269('0xd')]);router[_0xf269('0xe')]('/',auth['isAuthenticated'](),controller[_0xf269('0xf')]);router[_0xf269('0x10')](_0xf269('0xc'),auth[_0xf269('0x9')](),controller[_0xf269('0x11')]);router[_0xf269('0x12')](_0xf269('0xc'),auth[_0xf269('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 2315ca9..ca5e5b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x851e=['exports','STRING','sequelize'];(function(_0x5a08bc,_0xf2e46f){var _0x5693a0=function(_0x29fe37){while(--_0x29fe37){_0x5a08bc['push'](_0x5a08bc['shift']());}};_0x5693a0(++_0xf2e46f);}(_0x851e,0x1e8));var _0xe851=function(_0x2e8abe,_0x3504a7){_0x2e8abe=_0x2e8abe-0x0;var _0x2838f9=_0x851e[_0x2e8abe];return _0x2838f9;};'use strict';var Sequelize=require(_0xe851('0x0'));module[_0xe851('0x1')]={'name':{'type':Sequelize[_0xe851('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf3c2=['STRING','name','sequelize'];(function(_0x2d7023,_0x295667){var _0x3f4c5b=function(_0x4d885a){while(--_0x4d885a){_0x2d7023['push'](_0x2d7023['shift']());}};_0x3f4c5b(++_0x295667);}(_0xf3c2,0x14c));var _0x2f3c=function(_0x1af373,_0x4582ea){_0x1af373=_0x1af373-0x0;var _0xb75fd8=_0xf3c2[_0x1af373];return _0xb75fd8;};'use strict';var Sequelize=require(_0x2f3c('0x0'));module['exports']={'name':{'type':Sequelize[_0x2f3c('0x1')],'unique':_0x2f3c('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 82dfb6f..01804ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa89c=['undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','params','Variable','user','Variables','UserProfileSection','find','autoAssociation','UserProfileResource','error','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset'];(function(_0x396420,_0x203fa0){var _0x2eb8aa=function(_0x47044e){while(--_0x47044e){_0x396420['push'](_0x396420['shift']());}};_0x2eb8aa(++_0x203fa0);}(_0xa89c,0xde));var _0xca89=function(_0x1fd3d9,_0x3b3126){_0x1fd3d9=_0x1fd3d9-0x0;var _0x50f260=_0xa89c[_0x1fd3d9];return _0x50f260;};'use strict';var emlformat=require(_0xca89('0x0'));var rimraf=require(_0xca89('0x1'));var zipdir=require(_0xca89('0x2'));var jsonpatch=require(_0xca89('0x3'));var rp=require(_0xca89('0x4'));var moment=require(_0xca89('0x5'));var BPromise=require(_0xca89('0x6'));var Mustache=require(_0xca89('0x7'));var util=require('util');var path=require(_0xca89('0x8'));var sox=require(_0xca89('0x9'));var csv=require(_0xca89('0xa'));var ejs=require(_0xca89('0xb'));var fs=require('fs');var fs_extra=require(_0xca89('0xc'));var _=require('lodash');var squel=require(_0xca89('0xd'));var crypto=require(_0xca89('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xca89('0xf'));var toCsv=require(_0xca89('0xa'));var querystring=require(_0xca89('0x10'));var Papa=require('papaparse');var Redis=require(_0xca89('0x11'));var authService=require(_0xca89('0x12'));var qs=require(_0xca89('0x13'));var as=require(_0xca89('0x14'));var hardwareService=require(_0xca89('0x15'));var logger=require(_0xca89('0x16'))(_0xca89('0x17'));var utils=require(_0xca89('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xca89('0x19'))['db'];function respondWithStatusCode(_0x2ac773,_0x156d06){_0x156d06=_0x156d06||0xcc;return function(_0x4dea2c){if(_0x4dea2c){return _0x2ac773[_0xca89('0x1a')](_0x156d06);}return _0x2ac773[_0xca89('0x1b')](_0x156d06)['end']();};}function respondWithResult(_0x4b205b,_0x53d15d){_0x53d15d=_0x53d15d||0xc8;return function(_0x2093da){if(_0x2093da){return _0x4b205b[_0xca89('0x1b')](_0x53d15d)[_0xca89('0x1c')](_0x2093da);}};}function respondWithFilteredResult(_0x382a49,_0x4153c5){return function(_0xb39d22){if(_0xb39d22){var _0x343457=typeof _0x4153c5[_0xca89('0x1d')]===_0xca89('0x1e')&&typeof _0x4153c5[_0xca89('0x1f')]===_0xca89('0x1e');var _0x5c1ef7=_0xb39d22[_0xca89('0x20')];var _0x2cdf4c=_0x343457?0x0:_0x4153c5['offset'];var _0x57099d=_0x343457?_0xb39d22[_0xca89('0x20')]:_0x4153c5[_0xca89('0x1d')]+_0x4153c5[_0xca89('0x1f')];var _0x668f82;if(_0x57099d>=_0x5c1ef7){_0x57099d=_0x5c1ef7;_0x668f82=0xc8;}else{_0x668f82=0xce;}_0x382a49[_0xca89('0x1b')](_0x668f82);return _0x382a49[_0xca89('0x21')](_0xca89('0x22'),_0x2cdf4c+'-'+_0x57099d+'/'+_0x5c1ef7)[_0xca89('0x1c')](_0xb39d22);}return null;};}function patchUpdates(_0x593882){return function(_0x526232){try{jsonpatch[_0xca89('0x23')](_0x526232,_0x593882,!![]);}catch(_0x2ee1e8){return BPromise[_0xca89('0x24')](_0x2ee1e8);}return _0x526232[_0xca89('0x25')]();};}function saveUpdates(_0x19dd62,_0x1c9b07){return function(_0x1bfae4){if(_0x1bfae4){return _0x1bfae4[_0xca89('0x26')](_0x19dd62)[_0xca89('0x27')](function(_0x1514a4){return _0x1514a4;});}return null;};}function removeEntity(_0x348980,_0x54135b){return function(_0x2eb214){if(_0x2eb214){return _0x2eb214['destroy']()['then'](function(){var _0x4d849c=_0x2eb214[_0xca89('0x28')]({'plain':!![]});var _0x165eb3='Variables';return db['UserProfileResource'][_0xca89('0x29')]({'where':{'type':_0x165eb3,'resourceId':_0x4d849c['id']}})[_0xca89('0x27')](function(){return _0x2eb214;});})[_0xca89('0x27')](function(){_0x348980['status'](0xcc)[_0xca89('0x2a')]();});}};}function handleEntityNotFound(_0x20c530,_0x4e768a){return function(_0x2950f4){if(!_0x2950f4){_0x20c530[_0xca89('0x1a')](0x194);}return _0x2950f4;};}function handleError(_0x5296eb,_0x8165b3){_0x8165b3=_0x8165b3||0x1f4;return function(_0x511f7c){logger['error'](_0x511f7c[_0xca89('0x2b')]);if(_0x511f7c[_0xca89('0x2c')]){delete _0x511f7c[_0xca89('0x2c')];}_0x5296eb[_0xca89('0x1b')](_0x8165b3)[_0xca89('0x2d')](_0x511f7c);};}exports[_0xca89('0x2e')]=function(_0x749a71,_0x5de1a5){var _0x4e91c1={},_0x21be69={},_0x41a6e4={'count':0x0,'rows':[]};var _0x4c29b5=_[_0xca89('0x2f')](db['Variable'][_0xca89('0x30')],function(_0x1dcf7f){return{'name':_0x1dcf7f[_0xca89('0x31')],'type':_0x1dcf7f[_0xca89('0x32')][_0xca89('0x33')]};});_0x21be69[_0xca89('0x34')]=_[_0xca89('0x2f')](_0x4c29b5,_0xca89('0x2c'));_0x21be69[_0xca89('0x35')]=_[_0xca89('0x36')](_0x749a71['query']);_0x21be69[_0xca89('0x37')]=_['intersection'](_0x21be69[_0xca89('0x34')],_0x21be69[_0xca89('0x35')]);_0x4e91c1[_0xca89('0x38')]=_[_0xca89('0x39')](_0x21be69[_0xca89('0x34')],qs[_0xca89('0x3a')](_0x749a71[_0xca89('0x35')][_0xca89('0x3a')]));_0x4e91c1['attributes']=_0x4e91c1[_0xca89('0x38')][_0xca89('0x3b')]?_0x4e91c1['attributes']:_0x21be69[_0xca89('0x34')];if(!_0x749a71[_0xca89('0x35')][_0xca89('0x3c')](_0xca89('0x3d'))){_0x4e91c1[_0xca89('0x1f')]=qs['limit'](_0x749a71[_0xca89('0x35')][_0xca89('0x1f')]);_0x4e91c1['offset']=qs[_0xca89('0x1d')](_0x749a71['query'][_0xca89('0x1d')]);}_0x4e91c1[_0xca89('0x3e')]=qs[_0xca89('0x3f')](_0x749a71['query'][_0xca89('0x3f')]);_0x4e91c1[_0xca89('0x40')]=qs[_0xca89('0x37')](_[_0xca89('0x41')](_0x749a71['query'],_0x21be69[_0xca89('0x37')]),_0x4c29b5);if(_0x749a71[_0xca89('0x35')][_0xca89('0x42')]){_0x4e91c1[_0xca89('0x40')]=_[_0xca89('0x43')](_0x4e91c1[_0xca89('0x40')],{'$or':_[_0xca89('0x2f')](_0x4c29b5,function(_0x4eaced){if(_0x4eaced[_0xca89('0x32')]!=='VIRTUAL'){var _0x2896b4={};_0x2896b4[_0x4eaced[_0xca89('0x2c')]]={'$like':'%'+_0x749a71['query'][_0xca89('0x42')]+'%'};return _0x2896b4;}})});}_0x4e91c1=_['merge']({},_0x4e91c1,_0x749a71[_0xca89('0x44')]);var _0x1687fc={'where':_0x4e91c1[_0xca89('0x40')]};return db['Variable']['count'](_0x1687fc)[_0xca89('0x27')](function(_0xe79465){_0x41a6e4[_0xca89('0x20')]=_0xe79465;if(_0x749a71[_0xca89('0x35')][_0xca89('0x45')]){_0x4e91c1[_0xca89('0x46')]=[{'all':!![]}];}return db['Variable']['findAll'](_0x4e91c1);})[_0xca89('0x27')](function(_0x2cd481){_0x41a6e4[_0xca89('0x47')]=_0x2cd481;return _0x41a6e4;})['then'](respondWithFilteredResult(_0x5de1a5,_0x4e91c1))[_0xca89('0x48')](handleError(_0x5de1a5,null));};exports[_0xca89('0x49')]=function(_0x230846,_0x4c95a7){var _0x564086={'raw':!![],'where':{'id':_0x230846[_0xca89('0x4a')]['id']}},_0x14f871={};_0x14f871[_0xca89('0x34')]=_['keys'](db[_0xca89('0x4b')][_0xca89('0x30')]);_0x14f871[_0xca89('0x35')]=_[_0xca89('0x36')](_0x230846['query']);_0x14f871['filters']=_[_0xca89('0x39')](_0x14f871[_0xca89('0x34')],_0x14f871['query']);_0x564086[_0xca89('0x38')]=_[_0xca89('0x39')](_0x14f871[_0xca89('0x34')],qs[_0xca89('0x3a')](_0x230846[_0xca89('0x35')][_0xca89('0x3a')]));_0x564086['attributes']=_0x564086['attributes']['length']?_0x564086[_0xca89('0x38')]:_0x14f871[_0xca89('0x34')];if(_0x230846['query'][_0xca89('0x45')]){_0x564086['include']=[{'all':!![]}];}_0x564086=_[_0xca89('0x43')]({},_0x564086,_0x230846[_0xca89('0x44')]);return db[_0xca89('0x4b')]['find'](_0x564086)[_0xca89('0x27')](handleEntityNotFound(_0x4c95a7,null))[_0xca89('0x27')](respondWithResult(_0x4c95a7,null))[_0xca89('0x48')](handleError(_0x4c95a7,null));};exports['create']=function(_0x307a31,_0x1da614){return db['Variable']['create'](_0x307a31['body'],{})[_0xca89('0x27')](function(_0x5544aa){var _0xcc608c=_0x307a31['user'][_0xca89('0x28')]({'plain':!![]});if(!_0xcc608c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xcc608c['role']===_0xca89('0x4c')){var _0x68e331=_0x5544aa[_0xca89('0x28')]({'plain':!![]});var _0x1952a8=_0xca89('0x4d');return db[_0xca89('0x4e')][_0xca89('0x4f')]({'where':{'name':_0x1952a8,'userProfileId':_0xcc608c['userProfileId']},'raw':!![]})[_0xca89('0x27')](function(_0x2f8304){if(_0x2f8304&&_0x2f8304[_0xca89('0x50')]===0x0){return db[_0xca89('0x51')]['create']({'name':_0x68e331[_0xca89('0x2c')],'resourceId':_0x68e331['id'],'type':_0x2f8304[_0xca89('0x2c')],'sectionId':_0x2f8304['id']},{})['then'](function(){return _0x5544aa;});}else{return _0x5544aa;}})['catch'](function(_0x5f0b47){logger[_0xca89('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5f0b47);throw _0x5f0b47;});}return _0x5544aa;})['then'](respondWithResult(_0x1da614,0xc9))[_0xca89('0x48')](handleError(_0x1da614,null));};exports[_0xca89('0x26')]=function(_0x128f7d,_0x10e686){if(_0x128f7d[_0xca89('0x53')]['id']){delete _0x128f7d[_0xca89('0x53')]['id'];}return db['Variable'][_0xca89('0x4f')]({'where':{'id':_0x128f7d[_0xca89('0x4a')]['id']}})[_0xca89('0x27')](handleEntityNotFound(_0x10e686,null))[_0xca89('0x27')](saveUpdates(_0x128f7d['body'],null))[_0xca89('0x27')](respondWithResult(_0x10e686,null))[_0xca89('0x48')](handleError(_0x10e686,null));};exports[_0xca89('0x29')]=function(_0x1186da,_0x400a32){return db['Variable'][_0xca89('0x4f')]({'where':{'id':_0x1186da[_0xca89('0x4a')]['id']}})['then'](handleEntityNotFound(_0x400a32,null))[_0xca89('0x27')](removeEntity(_0x400a32,null))[_0xca89('0x48')](handleError(_0x400a32,null));};
\ No newline at end of file
+var _0xc5d3=['Variable','rawAttributes','fieldName','type','key','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','crypto','jsforce','desk.js','querystring','../../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','apply','update','then','destroy','get','Variables','UserProfileResource','name','send','map'];(function(_0x30c649,_0x2ebbac){var _0x3edfb9=function(_0xab82f5){while(--_0xab82f5){_0x30c649['push'](_0x30c649['shift']());}};_0x3edfb9(++_0x2ebbac);}(_0xc5d3,0xc2));var _0x3c5d=function(_0x5192de,_0x4e91cd){_0x5192de=_0x5192de-0x0;var _0x4e287e=_0xc5d3[_0x5192de];return _0x4e287e;};'use strict';var emlformat=require(_0x3c5d('0x0'));var rimraf=require(_0x3c5d('0x1'));var zipdir=require(_0x3c5d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3c5d('0x3'));var moment=require(_0x3c5d('0x4'));var BPromise=require(_0x3c5d('0x5'));var Mustache=require(_0x3c5d('0x6'));var util=require('util');var path=require(_0x3c5d('0x7'));var sox=require(_0x3c5d('0x8'));var csv=require(_0x3c5d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x3c5d('0xa'));var jsforce=require(_0x3c5d('0xb'));var deskjs=require(_0x3c5d('0xc'));var toCsv=require(_0x3c5d('0x9'));var querystring=require(_0x3c5d('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3c5d('0xe'));var qs=require(_0x3c5d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3c5d('0x10'));var logger=require(_0x3c5d('0x11'))('api');var utils=require(_0x3c5d('0x12'));var config=require(_0x3c5d('0x13'));var licenseUtil=require(_0x3c5d('0x14'));var db=require(_0x3c5d('0x15'))['db'];function respondWithStatusCode(_0x40252d,_0x264d9d){_0x264d9d=_0x264d9d||0xcc;return function(_0x18cab5){if(_0x18cab5){return _0x40252d[_0x3c5d('0x16')](_0x264d9d);}return _0x40252d[_0x3c5d('0x17')](_0x264d9d)[_0x3c5d('0x18')]();};}function respondWithResult(_0x2e5440,_0x1baa49){_0x1baa49=_0x1baa49||0xc8;return function(_0xde294c){if(_0xde294c){return _0x2e5440['status'](_0x1baa49)[_0x3c5d('0x19')](_0xde294c);}};}function respondWithFilteredResult(_0x4395ab,_0x515ba9){return function(_0x402629){if(_0x402629){var _0x32224e=typeof _0x515ba9[_0x3c5d('0x1a')]===_0x3c5d('0x1b')&&typeof _0x515ba9[_0x3c5d('0x1c')]===_0x3c5d('0x1b');var _0xcc7b35=_0x402629['count'];var _0x388cdc=_0x32224e?0x0:_0x515ba9[_0x3c5d('0x1a')];var _0x13acd0=_0x32224e?_0x402629[_0x3c5d('0x1d')]:_0x515ba9['offset']+_0x515ba9[_0x3c5d('0x1c')];var _0x5e16dd;if(_0x13acd0>=_0xcc7b35){_0x13acd0=_0xcc7b35;_0x5e16dd=0xc8;}else{_0x5e16dd=0xce;}_0x4395ab['status'](_0x5e16dd);return _0x4395ab['set']('Content-Range',_0x388cdc+'-'+_0x13acd0+'/'+_0xcc7b35)[_0x3c5d('0x19')](_0x402629);}return null;};}function patchUpdates(_0x2620e1){return function(_0x15d1b6){try{jsonpatch[_0x3c5d('0x1e')](_0x15d1b6,_0x2620e1,!![]);}catch(_0xd4e420){return BPromise['reject'](_0xd4e420);}return _0x15d1b6['save']();};}function saveUpdates(_0x520e8d,_0x42580e){return function(_0x226b3e){if(_0x226b3e){return _0x226b3e[_0x3c5d('0x1f')](_0x520e8d)[_0x3c5d('0x20')](function(_0x13c263){return _0x13c263;});}return null;};}function removeEntity(_0x4f00d5,_0x5d7671){return function(_0x265769){if(_0x265769){return _0x265769[_0x3c5d('0x21')]()[_0x3c5d('0x20')](function(){var _0x16d29e=_0x265769[_0x3c5d('0x22')]({'plain':!![]});var _0x1347f1=_0x3c5d('0x23');return db[_0x3c5d('0x24')]['destroy']({'where':{'type':_0x1347f1,'resourceId':_0x16d29e['id']}})[_0x3c5d('0x20')](function(){return _0x265769;});})[_0x3c5d('0x20')](function(){_0x4f00d5[_0x3c5d('0x17')](0xcc)[_0x3c5d('0x18')]();});}};}function handleEntityNotFound(_0x515d97,_0x5e2e40){return function(_0x287c80){if(!_0x287c80){_0x515d97['sendStatus'](0x194);}return _0x287c80;};}function handleError(_0x42f63e,_0x3a89d4){_0x3a89d4=_0x3a89d4||0x1f4;return function(_0x209360){logger['error'](_0x209360['stack']);if(_0x209360[_0x3c5d('0x25')]){delete _0x209360[_0x3c5d('0x25')];}_0x42f63e[_0x3c5d('0x17')](_0x3a89d4)[_0x3c5d('0x26')](_0x209360);};}exports['index']=function(_0x52dcee,_0x533282){var _0x17ab5b={},_0x2dc192={},_0x9df998={'count':0x0,'rows':[]};var _0x76de74=_[_0x3c5d('0x27')](db[_0x3c5d('0x28')][_0x3c5d('0x29')],function(_0x25ca89){return{'name':_0x25ca89[_0x3c5d('0x2a')],'type':_0x25ca89[_0x3c5d('0x2b')][_0x3c5d('0x2c')]};});_0x2dc192['model']=_[_0x3c5d('0x27')](_0x76de74,_0x3c5d('0x25'));_0x2dc192[_0x3c5d('0x2d')]=_['keys'](_0x52dcee[_0x3c5d('0x2d')]);_0x2dc192['filters']=_[_0x3c5d('0x2e')](_0x2dc192['model'],_0x2dc192[_0x3c5d('0x2d')]);_0x17ab5b[_0x3c5d('0x2f')]=_[_0x3c5d('0x2e')](_0x2dc192[_0x3c5d('0x30')],qs[_0x3c5d('0x31')](_0x52dcee[_0x3c5d('0x2d')][_0x3c5d('0x31')]));_0x17ab5b[_0x3c5d('0x2f')]=_0x17ab5b['attributes'][_0x3c5d('0x32')]?_0x17ab5b[_0x3c5d('0x2f')]:_0x2dc192[_0x3c5d('0x30')];if(!_0x52dcee['query'][_0x3c5d('0x33')](_0x3c5d('0x34'))){_0x17ab5b[_0x3c5d('0x1c')]=qs['limit'](_0x52dcee[_0x3c5d('0x2d')][_0x3c5d('0x1c')]);_0x17ab5b[_0x3c5d('0x1a')]=qs[_0x3c5d('0x1a')](_0x52dcee[_0x3c5d('0x2d')][_0x3c5d('0x1a')]);}_0x17ab5b[_0x3c5d('0x35')]=qs[_0x3c5d('0x36')](_0x52dcee[_0x3c5d('0x2d')][_0x3c5d('0x36')]);_0x17ab5b[_0x3c5d('0x37')]=qs['filters'](_[_0x3c5d('0x38')](_0x52dcee[_0x3c5d('0x2d')],_0x2dc192[_0x3c5d('0x39')]),_0x76de74);if(_0x52dcee[_0x3c5d('0x2d')][_0x3c5d('0x3a')]){_0x17ab5b['where']=_[_0x3c5d('0x3b')](_0x17ab5b['where'],{'$or':_[_0x3c5d('0x27')](_0x76de74,function(_0x191b56){if(_0x191b56[_0x3c5d('0x2b')]!==_0x3c5d('0x3c')){var _0x2e5c88={};_0x2e5c88[_0x191b56[_0x3c5d('0x25')]]={'$like':'%'+_0x52dcee[_0x3c5d('0x2d')][_0x3c5d('0x3a')]+'%'};return _0x2e5c88;}})});}_0x17ab5b=_[_0x3c5d('0x3b')]({},_0x17ab5b,_0x52dcee[_0x3c5d('0x3d')]);var _0x475246={'where':_0x17ab5b[_0x3c5d('0x37')]};return db[_0x3c5d('0x28')][_0x3c5d('0x1d')](_0x475246)[_0x3c5d('0x20')](function(_0x45e1fd){_0x9df998[_0x3c5d('0x1d')]=_0x45e1fd;if(_0x52dcee[_0x3c5d('0x2d')][_0x3c5d('0x3e')]){_0x17ab5b[_0x3c5d('0x3f')]=[{'all':!![]}];}return db['Variable'][_0x3c5d('0x40')](_0x17ab5b);})[_0x3c5d('0x20')](function(_0x49ff93){_0x9df998[_0x3c5d('0x41')]=_0x49ff93;return _0x9df998;})[_0x3c5d('0x20')](respondWithFilteredResult(_0x533282,_0x17ab5b))[_0x3c5d('0x42')](handleError(_0x533282,null));};exports[_0x3c5d('0x43')]=function(_0x3fc176,_0x1f44ac){var _0x513613={'raw':!![],'where':{'id':_0x3fc176[_0x3c5d('0x44')]['id']}},_0x2a5b23={};_0x2a5b23[_0x3c5d('0x30')]=_[_0x3c5d('0x45')](db[_0x3c5d('0x28')][_0x3c5d('0x29')]);_0x2a5b23[_0x3c5d('0x2d')]=_[_0x3c5d('0x45')](_0x3fc176[_0x3c5d('0x2d')]);_0x2a5b23[_0x3c5d('0x39')]=_['intersection'](_0x2a5b23[_0x3c5d('0x30')],_0x2a5b23[_0x3c5d('0x2d')]);_0x513613[_0x3c5d('0x2f')]=_[_0x3c5d('0x2e')](_0x2a5b23[_0x3c5d('0x30')],qs[_0x3c5d('0x31')](_0x3fc176[_0x3c5d('0x2d')][_0x3c5d('0x31')]));_0x513613['attributes']=_0x513613[_0x3c5d('0x2f')][_0x3c5d('0x32')]?_0x513613[_0x3c5d('0x2f')]:_0x2a5b23[_0x3c5d('0x30')];if(_0x3fc176[_0x3c5d('0x2d')][_0x3c5d('0x3e')]){_0x513613['include']=[{'all':!![]}];}_0x513613=_[_0x3c5d('0x3b')]({},_0x513613,_0x3fc176['options']);return db[_0x3c5d('0x28')][_0x3c5d('0x46')](_0x513613)[_0x3c5d('0x20')](handleEntityNotFound(_0x1f44ac,null))[_0x3c5d('0x20')](respondWithResult(_0x1f44ac,null))[_0x3c5d('0x42')](handleError(_0x1f44ac,null));};exports[_0x3c5d('0x47')]=function(_0x2940e3,_0xc14fc7){return db[_0x3c5d('0x28')][_0x3c5d('0x47')](_0x2940e3['body'],{})[_0x3c5d('0x20')](function(_0x28e91a){var _0x27c19f=_0x2940e3[_0x3c5d('0x48')][_0x3c5d('0x22')]({'plain':!![]});if(!_0x27c19f)throw new Error(_0x3c5d('0x49'));if(_0x27c19f[_0x3c5d('0x4a')]===_0x3c5d('0x48')){var _0x569e6a=_0x28e91a[_0x3c5d('0x22')]({'plain':!![]});var _0x3ded48='Variables';return db['UserProfileSection'][_0x3c5d('0x46')]({'where':{'name':_0x3ded48,'userProfileId':_0x27c19f['userProfileId']},'raw':!![]})[_0x3c5d('0x20')](function(_0x180ef4){if(_0x180ef4&&_0x180ef4[_0x3c5d('0x4b')]===0x0){return db[_0x3c5d('0x24')][_0x3c5d('0x47')]({'name':_0x569e6a[_0x3c5d('0x25')],'resourceId':_0x569e6a['id'],'type':_0x180ef4[_0x3c5d('0x25')],'sectionId':_0x180ef4['id']},{})['then'](function(){return _0x28e91a;});}else{return _0x28e91a;}})[_0x3c5d('0x42')](function(_0x12643b){logger['error'](_0x3c5d('0x4c'),_0x12643b);throw _0x12643b;});}return _0x28e91a;})[_0x3c5d('0x20')](respondWithResult(_0xc14fc7,0xc9))[_0x3c5d('0x42')](handleError(_0xc14fc7,null));};exports[_0x3c5d('0x1f')]=function(_0x55ebc4,_0x8b99ab){if(_0x55ebc4[_0x3c5d('0x4d')]['id']){delete _0x55ebc4[_0x3c5d('0x4d')]['id'];}return db[_0x3c5d('0x28')][_0x3c5d('0x46')]({'where':{'id':_0x55ebc4['params']['id']}})['then'](handleEntityNotFound(_0x8b99ab,null))['then'](saveUpdates(_0x55ebc4[_0x3c5d('0x4d')],null))[_0x3c5d('0x20')](respondWithResult(_0x8b99ab,null))['catch'](handleError(_0x8b99ab,null));};exports['destroy']=function(_0x59b630,_0x1541b7){return db['Variable']['find']({'where':{'id':_0x59b630[_0x3c5d('0x44')]['id']}})[_0x3c5d('0x20')](handleEntityNotFound(_0x1541b7,null))[_0x3c5d('0x20')](removeEntity(_0x1541b7,null))['catch'](handleError(_0x1541b7,null));};
\ No newline at end of file
index f56eee1..d7fe7e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x824b=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./variable.attributes','exports','define','Variable','tools_variables','lodash','util','../../config/logger'];(function(_0x58c405,_0x1162fc){var _0x2dad55=function(_0x1ce21c){while(--_0x1ce21c){_0x58c405['push'](_0x58c405['shift']());}};_0x2dad55(++_0x1162fc);}(_0x824b,0xdd));var _0xb824=function(_0xba5b9a,_0x3604bd){_0xba5b9a=_0xba5b9a-0x0;var _0x5d27e8=_0x824b[_0xba5b9a];return _0x5d27e8;};'use strict';var _=require(_0xb824('0x0'));var util=require(_0xb824('0x1'));var logger=require(_0xb824('0x2'))('api');var moment=require(_0xb824('0x3'));var BPromise=require(_0xb824('0x4'));var rp=require(_0xb824('0x5'));var fs=require('fs');var path=require(_0xb824('0x6'));var rimraf=require(_0xb824('0x7'));var config=require(_0xb824('0x8'));var attributes=require(_0xb824('0x9'));module[_0xb824('0xa')]=function(_0x22a1aa,_0x3ca135){return _0x22a1aa[_0xb824('0xb')](_0xb824('0xc'),attributes,{'tableName':_0xb824('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4c2=['request-promise','path','../../config/environment','exports','define','Variable','tools_variables','lodash','util','../../config/logger','api','bluebird'];(function(_0x34300d,_0x44d2c9){var _0x3921bf=function(_0x1e60e7){while(--_0x1e60e7){_0x34300d['push'](_0x34300d['shift']());}};_0x3921bf(++_0x44d2c9);}(_0xc4c2,0x16f));var _0x2c4c=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xc4c2[_0x34bf97];return _0x292719;};'use strict';var _=require(_0x2c4c('0x0'));var util=require(_0x2c4c('0x1'));var logger=require(_0x2c4c('0x2'))(_0x2c4c('0x3'));var moment=require('moment');var BPromise=require(_0x2c4c('0x4'));var rp=require(_0x2c4c('0x5'));var fs=require('fs');var path=require(_0x2c4c('0x6'));var rimraf=require('rimraf');var config=require(_0x2c4c('0x7'));var attributes=require('./variable.attributes');module[_0x2c4c('0x8')]=function(_0x2a28b0,_0xb7db96){return _0x2a28b0[_0x2c4c('0x9')](_0x2c4c('0xa'),attributes,{'tableName':_0x2c4c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 96c8a4c..b3c5681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['where','attributes','map','include','model','ShowVariable','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Variable,\x20%s,\x20%s','debug','Variable,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','Variable','find','options','raw'];(function(_0x544122,_0x3ed1b4){var _0x10fcf5=function(_0x270cb9){while(--_0x270cb9){_0x544122['push'](_0x544122['shift']());}};_0x10fcf5(++_0x3ed1b4);}(_0x7217,0x19e));var _0x7721=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x7217[_0x40ac5e];return _0x2839d6;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Variable,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Variable,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}exports['ShowVariable']=function(_0x3fc09e){var _0x5cb0e6=this;return new Promise(function(_0xfec626,_0x4e96fb){return db[_0x7721('0x18')][_0x7721('0x19')]({'raw':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1b')]===undefined?!![]:![]:!![],'where':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1c')]||null:null,'attributes':_0x3fc09e['options']?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1d')]||null:null,'include':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')]['include']?_[_0x7721('0x1e')](_0x3fc09e['options'][_0x7721('0x1f')],function(_0x288e3a){return{'model':db[_0x288e3a[_0x7721('0x20')]],'as':_0x288e3a['as'],'attributes':_0x288e3a[_0x7721('0x1d')],'include':_0x288e3a[_0x7721('0x1f')]?_[_0x7721('0x1e')](_0x288e3a[_0x7721('0x1f')],function(_0x5b4d74){return{'model':db[_0x5b4d74[_0x7721('0x20')]],'as':_0x5b4d74['as'],'attributes':_0x5b4d74[_0x7721('0x1d')],'include':_0x5b4d74[_0x7721('0x1f')]?_[_0x7721('0x1e')](_0x5b4d74[_0x7721('0x1f')],function(_0x16355a){return{'model':db[_0x16355a[_0x7721('0x20')]],'as':_0x16355a['as'],'attributes':_0x16355a[_0x7721('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7721('0xc')](function(_0x52316e){logger[_0x7721('0xd')]('ShowVariable',_0x3fc09e);logger['debug'](_0x7721('0x21'),_0x3fc09e,JSON[_0x7721('0x12')](_0x52316e));_0xfec626(_0x52316e);})[_0x7721('0x17')](function(_0x158d98){logger[_0x7721('0x13')](_0x7721('0x21'),_0x158d98[_0x7721('0x15')],_0x3fc09e);_0x4e96fb(_0x5cb0e6[_0x7721('0x13')](0x1f4,_0x158d98['message']));});});};
\ No newline at end of file
+var _0x814b=['model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowVariable','options','where','include','map','attributes'];(function(_0x1c0deb,_0x1a2421){var _0x40e684=function(_0x237db1){while(--_0x237db1){_0x1c0deb['push'](_0x1c0deb['shift']());}};_0x40e684(++_0x1a2421);}(_0x814b,0x1a2));var _0xb814=function(_0x3f3c46,_0x33e972){_0x3f3c46=_0x3f3c46-0x0;var _0x7d1132=_0x814b[_0x3f3c46];return _0x7d1132;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Variable,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}exports[_0xb814('0x18')]=function(_0x55ba16){var _0x270598=this;return new Promise(function(_0xfac75b,_0x4c3007){return db['Variable']['find']({'raw':_0x55ba16[_0xb814('0x19')]?_0x55ba16['options']['raw']===undefined?!![]:![]:!![],'where':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1a')]||null:null,'attributes':_0x55ba16['options']?_0x55ba16[_0xb814('0x19')]['attributes']||null:null,'include':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')],function(_0x1f5d40){return{'model':db[_0x1f5d40['model']],'as':_0x1f5d40['as'],'attributes':_0x1f5d40[_0xb814('0x1d')],'include':_0x1f5d40['include']?_[_0xb814('0x1c')](_0x1f5d40[_0xb814('0x1b')],function(_0x31c7ec){return{'model':db[_0x31c7ec[_0xb814('0x1e')]],'as':_0x31c7ec['as'],'attributes':_0x31c7ec[_0xb814('0x1d')],'include':_0x31c7ec[_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x31c7ec['include'],function(_0x392222){return{'model':db[_0x392222[_0xb814('0x1e')]],'as':_0x392222['as'],'attributes':_0x392222[_0xb814('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb814('0xd')](function(_0x32ed56){logger[_0xb814('0xe')](_0xb814('0x18'),_0x55ba16);logger[_0xb814('0x11')]('ShowVariable',_0x55ba16,JSON[_0xb814('0x1f')](_0x32ed56));_0xfac75b(_0x32ed56);})[_0xb814('0x17')](function(_0x52ed64){logger[_0xb814('0x13')](_0xb814('0x18'),_0x52ed64[_0xb814('0x15')],_0x55ba16);_0x4c3007(_0x270598['error'](0x1f4,_0x52ed64[_0xb814('0x15')]));});});};
\ No newline at end of file
index 7face34..f8934a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19a1=['/pull','/restart','restart','/migrations','migrations','exports','express','Router','../../components/auth/service','get','/fetch','isAuthenticated','canUpdate','fetch','/reset','reset'];(function(_0x43de22,_0x1eced6){var _0x4b15ee=function(_0x6e36da){while(--_0x6e36da){_0x43de22['push'](_0x43de22['shift']());}};_0x4b15ee(++_0x1eced6);}(_0x19a1,0xd6));var _0x119a=function(_0x41f56a,_0x49a25b){_0x41f56a=_0x41f56a-0x0;var _0x25d410=_0x19a1[_0x41f56a];return _0x25d410;};'use strict';var express=require(_0x119a('0x0'));var router=express[_0x119a('0x1')]();var auth=require(_0x119a('0x2'));var controller=require('./version.controller');router[_0x119a('0x3')]('/',controller['index']);router[_0x119a('0x3')](_0x119a('0x4'),auth[_0x119a('0x5')](),auth[_0x119a('0x6')](),controller[_0x119a('0x7')]);router[_0x119a('0x3')](_0x119a('0x8'),auth[_0x119a('0x5')](),auth['canUpdate'](),controller[_0x119a('0x9')]);router[_0x119a('0x3')](_0x119a('0xa'),auth[_0x119a('0x5')](),auth['canUpdate'](),controller['pull']);router[_0x119a('0x3')](_0x119a('0xb'),auth[_0x119a('0x5')](),controller[_0x119a('0xc')]);router[_0x119a('0x3')](_0x119a('0xd'),controller[_0x119a('0xe')]);module[_0x119a('0xf')]=router;
\ No newline at end of file
+var _0xebe0=['get','index','/fetch','isAuthenticated','canUpdate','fetch','/reset','reset','/pull','restart','/migrations','migrations','exports','express','Router','../../components/auth/service'];(function(_0x5f47ea,_0x2e5c20){var _0x26b92b=function(_0x3656ad){while(--_0x3656ad){_0x5f47ea['push'](_0x5f47ea['shift']());}};_0x26b92b(++_0x2e5c20);}(_0xebe0,0x7d));var _0x0ebe=function(_0x3d5387,_0x3fde98){_0x3d5387=_0x3d5387-0x0;var _0x2a854f=_0xebe0[_0x3d5387];return _0x2a854f;};'use strict';var express=require(_0x0ebe('0x0'));var router=express[_0x0ebe('0x1')]();var auth=require(_0x0ebe('0x2'));var controller=require('./version.controller');router[_0x0ebe('0x3')]('/',controller[_0x0ebe('0x4')]);router['get'](_0x0ebe('0x5'),auth[_0x0ebe('0x6')](),auth[_0x0ebe('0x7')](),controller[_0x0ebe('0x8')]);router[_0x0ebe('0x3')](_0x0ebe('0x9'),auth[_0x0ebe('0x6')](),auth[_0x0ebe('0x7')](),controller[_0x0ebe('0xa')]);router['get'](_0x0ebe('0xb'),auth['isAuthenticated'](),auth['canUpdate'](),controller['pull']);router[_0x0ebe('0x3')]('/restart',auth[_0x0ebe('0x6')](),controller[_0x0ebe('0xc')]);router[_0x0ebe('0x3')](_0x0ebe('0xd'),controller[_0x0ebe('0xe')]);module[_0x0ebe('0xf')]=router;
\ No newline at end of file
index 1f04153..911ef4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f9b=['readdirSync','join','server','length','replace','.js','push','sort','sequelize','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','version','compare-versions','child_process','exec','update','simple-git','root','index','exports','query','latest','tags','2.0.0','status','json','fetch','origin','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','migrations'];(function(_0x38c632,_0x14e8e6){var _0x12737e=function(_0x3e0fe4){while(--_0x3e0fe4){_0x38c632['push'](_0x38c632['shift']());}};_0x12737e(++_0x14e8e6);}(_0x3f9b,0x1db));var _0xb3f9=function(_0x2176b3,_0x6bf75b){_0x2176b3=_0x2176b3-0x0;var _0x46caa6=_0x3f9b[_0x2176b3];return _0x46caa6;};'use strict';var Umzug=require(_0xb3f9('0x0'));var path=require(_0xb3f9('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require('pkginfo')(module,_0xb3f9('0x2'));var compareVersions=require(_0xb3f9('0x3'));var exec=require(_0xb3f9('0x4'))[_0xb3f9('0x5')];var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var pm2=require('../../config/pm2');var logger=require('../../config/logger')(_0xb3f9('0x6'));var git=require(_0xb3f9('0x7'))(config[_0xb3f9('0x8')]);exports[_0xb3f9('0x9')]=function(_0x87ebe5,_0x51bb9d){var _0x2da8eb={'current':module[_0xb3f9('0xa')][_0xb3f9('0x2')],'phonebar':0x2};if(_0x87ebe5[_0xb3f9('0xb')]&&_0x87ebe5[_0xb3f9('0xb')][_0xb3f9('0xc')]){return git['fetch']()[_0xb3f9('0xd')](function(_0x1392e5,_0xa26d5a){_0x2da8eb[_0xb3f9('0xc')]=(_0x1392e5?module[_0xb3f9('0xa')]['version']:_0xa26d5a[_0xb3f9('0xc')])||_0xb3f9('0xe');return _0x51bb9d[_0xb3f9('0xf')](0xc8)[_0xb3f9('0x10')](_0x2da8eb);});}else{return _0x51bb9d[_0xb3f9('0xf')](0xc8)[_0xb3f9('0x10')](_0x2da8eb);}};exports[_0xb3f9('0x11')]=function(_0x598bdc,_0x334063){return git[_0xb3f9('0x11')]([_0xb3f9('0x12'),'master'],function(_0x4188b3){if(_0x4188b3){logger[_0xb3f9('0x13')](_0x4188b3);return _0x334063[_0xb3f9('0xf')](0x1f4)['json'](_0x4188b3);}logger[_0xb3f9('0x14')](_0xb3f9('0x15'));return _0x334063[_0xb3f9('0xf')](0xc8)['json']({'output':_0xb3f9('0x16')});});};exports['reset']=function(_0x4ea39f,_0x4a77b6){return git['reset'](['--hard','FETCH_HEAD'],function(_0x497fcf){if(_0x497fcf){logger['error'](_0x497fcf);return _0x4a77b6[_0xb3f9('0xf')](0x1f4)['json'](_0x497fcf);}logger[_0xb3f9('0x14')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x4a77b6[_0xb3f9('0xf')](0xc8)[_0xb3f9('0x10')]({'output':_0xb3f9('0x17')});});};exports[_0xb3f9('0x18')]=function(_0x5b76e3,_0x54d819){exec(_0xb3f9('0x19'),function(_0x27e9a5,_0x392858,_0x256064){logger[_0xb3f9('0x14')](_0x392858);logger['info'](_0x256064);if(_0x27e9a5){logger['error'](_0x27e9a5);return _0x54d819[_0xb3f9('0xf')](0x1f4)[_0xb3f9('0x10')](_0x27e9a5);}return _0x54d819[_0xb3f9('0xf')](0xc8)['json']({'output':_0x392858});});};exports['restart']=function(_0x554f38,_0x408d7f){return pm2[_0xb3f9('0x1a')](_0xb3f9('0x1b'))[_0xb3f9('0x1c')](function(_0xa248cd){logger[_0xb3f9('0x14')](_0xb3f9('0x1d'),_0xa248cd);return _0x408d7f[_0xb3f9('0xf')](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})['catch'](function(_0x364829){logger[_0xb3f9('0x13')](_0x364829);return _0x408d7f[_0xb3f9('0xf')](0x1f4)['json'](_0x364829);});};exports[_0xb3f9('0x1e')]=function(_0x573c4a,_0x26e534){var _0x26969a=fs[_0xb3f9('0x1f')](path[_0xb3f9('0x20')](config['root'],_0xb3f9('0x21'),'migrations'));var _0x5b6bed=[];for(var _0x2acd0e=0x0;_0x2acd0e<_0x26969a[_0xb3f9('0x22')];_0x2acd0e++){var _0x381aa6=_0x26969a[_0x2acd0e][_0xb3f9('0x23')](_0xb3f9('0x24'),'');if(compareVersions(module['exports'][_0xb3f9('0x2')],_0x381aa6)===-0x1){_0x5b6bed[_0xb3f9('0x25')](_0x381aa6);}}if(_0x5b6bed[_0xb3f9('0x22')]){var _0x586411=_0x5b6bed[_0xb3f9('0x26')](compareVersions);var _0x435027=new Umzug({'storage':'sequelize','storageOptions':{'model':db['Migration'],'modelName':'Migration','columnName':_0xb3f9('0x2')},'migrations':{'params':[db['sequelize']['getQueryInterface'](),db[_0xb3f9('0x27')]['constructor'],function(){throw new Error(_0xb3f9('0x28'));}],'path':path[_0xb3f9('0x20')](config['root'],_0xb3f9('0x21'),'migrations'),'pattern':/\.js$/}});_0x435027['up']({'migrations':_[_0xb3f9('0x29')](_0x586411,function(_0x51e06c){return _0x51e06c+_0xb3f9('0x24');})})[_0xb3f9('0x1c')](function(){return _0x26e534[_0xb3f9('0xf')](0xc8)[_0xb3f9('0x10')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0xb3f9('0xa')][_0xb3f9('0x2')]+'\x20to\x20'+_[_0xb3f9('0x2a')](_0x586411),'migrations':_['join'](_0x586411)});})[_0xb3f9('0x2b')](function(_0x50da41){if(_0x50da41 instanceof db[_0xb3f9('0x27')][_0xb3f9('0x2c')]){return _0x26e534['status'](0xc8)[_0xb3f9('0x10')]({'output':_0xb3f9('0x2d')});}else{return _0x26e534['status'](0x1f4)['json'](_0x50da41);}});}else{return _0x26e534[_0xb3f9('0xf')](0xc8)[_0xb3f9('0x10')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0xf4b7=['pkginfo','version','compare-versions','child_process','exec','../../config/environment','../../config/logger','index','query','latest','fetch','tags','exports','2.0.0','json','status','origin','master','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','info','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','root','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','\x20to\x20','last','Database\x20already\x20up-to-date','umzug','path'];(function(_0x106c8c,_0x245e1c){var _0x2eb577=function(_0x69e0c0){while(--_0x69e0c0){_0x106c8c['push'](_0x106c8c['shift']());}};_0x2eb577(++_0x245e1c);}(_0xf4b7,0xd2));var _0x7f4b=function(_0x818cd8,_0x310f84){_0x818cd8=_0x818cd8-0x0;var _0x4fc597=_0xf4b7[_0x818cd8];return _0x4fc597;};'use strict';var Umzug=require(_0x7f4b('0x0'));var path=require(_0x7f4b('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x7f4b('0x2'))(module,_0x7f4b('0x3'));var compareVersions=require(_0x7f4b('0x4'));var exec=require(_0x7f4b('0x5'))[_0x7f4b('0x6')];var db=require('../../mysqldb')['db'];var config=require(_0x7f4b('0x7'));var pm2=require('../../config/pm2');var logger=require(_0x7f4b('0x8'))('update');var git=require('simple-git')(config['root']);exports[_0x7f4b('0x9')]=function(_0xd782ec,_0x370214){var _0x3cda79={'current':module['exports'][_0x7f4b('0x3')],'phonebar':0x2};if(_0xd782ec[_0x7f4b('0xa')]&&_0xd782ec['query'][_0x7f4b('0xb')]){return git[_0x7f4b('0xc')]()[_0x7f4b('0xd')](function(_0x18dab7,_0x397f88){_0x3cda79[_0x7f4b('0xb')]=(_0x18dab7?module[_0x7f4b('0xe')][_0x7f4b('0x3')]:_0x397f88[_0x7f4b('0xb')])||_0x7f4b('0xf');return _0x370214['status'](0xc8)[_0x7f4b('0x10')](_0x3cda79);});}else{return _0x370214[_0x7f4b('0x11')](0xc8)[_0x7f4b('0x10')](_0x3cda79);}};exports[_0x7f4b('0xc')]=function(_0x493851,_0x398dc1){return git[_0x7f4b('0xc')]([_0x7f4b('0x12'),_0x7f4b('0x13')],function(_0x2cfa1a){if(_0x2cfa1a){logger[_0x7f4b('0x14')](_0x2cfa1a);return _0x398dc1['status'](0x1f4)['json'](_0x2cfa1a);}logger['info'](_0x7f4b('0x15'));return _0x398dc1[_0x7f4b('0x11')](0xc8)['json']({'output':_0x7f4b('0x16')});});};exports[_0x7f4b('0x17')]=function(_0x295d76,_0x5df439){return git[_0x7f4b('0x17')]([_0x7f4b('0x18'),_0x7f4b('0x19')],function(_0x529320){if(_0x529320){logger[_0x7f4b('0x14')](_0x529320);return _0x5df439[_0x7f4b('0x11')](0x1f4)[_0x7f4b('0x10')](_0x529320);}logger[_0x7f4b('0x1a')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x5df439[_0x7f4b('0x11')](0xc8)[_0x7f4b('0x10')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0x37d423,_0x1ecbca){exec(_0x7f4b('0x1b'),function(_0x3b7605,_0x227fe8,_0x35f3d5){logger['info'](_0x227fe8);logger[_0x7f4b('0x1a')](_0x35f3d5);if(_0x3b7605){logger['error'](_0x3b7605);return _0x1ecbca['status'](0x1f4)['json'](_0x3b7605);}return _0x1ecbca[_0x7f4b('0x11')](0xc8)[_0x7f4b('0x10')]({'output':_0x227fe8});});};exports[_0x7f4b('0x1c')]=function(_0x48c06b,_0x6733b3){return pm2[_0x7f4b('0x1c')](_0x7f4b('0x1d'))[_0x7f4b('0x1e')](function(_0x731c6c){logger['info'](_0x7f4b('0x1f'),_0x731c6c);return _0x6733b3[_0x7f4b('0x11')](0xc8)[_0x7f4b('0x10')]({'output':_0x7f4b('0x20')});})[_0x7f4b('0x21')](function(_0x2000de){logger[_0x7f4b('0x14')](_0x2000de);return _0x6733b3[_0x7f4b('0x11')](0x1f4)[_0x7f4b('0x10')](_0x2000de);});};exports[_0x7f4b('0x22')]=function(_0x446c26,_0x3f41f1){var _0x245aa9=fs[_0x7f4b('0x23')](path[_0x7f4b('0x24')](config[_0x7f4b('0x25')],_0x7f4b('0x26'),'migrations'));var _0x5754e2=[];for(var _0x29a2f8=0x0;_0x29a2f8<_0x245aa9[_0x7f4b('0x27')];_0x29a2f8++){var _0x1fd2dd=_0x245aa9[_0x29a2f8][_0x7f4b('0x28')](_0x7f4b('0x29'),'');if(compareVersions(module[_0x7f4b('0xe')][_0x7f4b('0x3')],_0x1fd2dd)===-0x1){_0x5754e2[_0x7f4b('0x2a')](_0x1fd2dd);}}if(_0x5754e2['length']){var _0x32c2d3=_0x5754e2[_0x7f4b('0x2b')](compareVersions);var _0x1a9a03=new Umzug({'storage':_0x7f4b('0x2c'),'storageOptions':{'model':db[_0x7f4b('0x2d')],'modelName':_0x7f4b('0x2d'),'columnName':_0x7f4b('0x3')},'migrations':{'params':[db[_0x7f4b('0x2c')][_0x7f4b('0x2e')](),db[_0x7f4b('0x2c')][_0x7f4b('0x2f')],function(){throw new Error(_0x7f4b('0x30'));}],'path':path['join'](config['root'],_0x7f4b('0x26'),'migrations'),'pattern':/\.js$/}});_0x1a9a03['up']({'migrations':_[_0x7f4b('0x31')](_0x32c2d3,function(_0x540e9e){return _0x540e9e+'.js';})})[_0x7f4b('0x1e')](function(){return _0x3f41f1[_0x7f4b('0x11')](0xc8)['json']({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module['exports']['version']+_0x7f4b('0x32')+_[_0x7f4b('0x33')](_0x32c2d3),'migrations':_['join'](_0x32c2d3)});})[_0x7f4b('0x21')](function(_0x4a5eb8){if(_0x4a5eb8 instanceof db[_0x7f4b('0x2c')]['UniqueConstraintError']){return _0x3f41f1['status'](0xc8)[_0x7f4b('0x10')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x3f41f1[_0x7f4b('0x11')](0x1f4)[_0x7f4b('0x10')](_0x4a5eb8);}});}else{return _0x3f41f1[_0x7f4b('0x11')](0xc8)['json']({'output':_0x7f4b('0x34')});}};
\ No newline at end of file
index c48398e..d6c0f02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd5=['destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','/describe','/:id','post','put','update'];(function(_0x23c958,_0x188c34){var _0x1d9b73=function(_0x448da3){while(--_0x448da3){_0x23c958['push'](_0x23c958['shift']());}};_0x1d9b73(++_0x188c34);}(_0x6dd5,0xb6));var _0x56dd=function(_0xef02f2,_0x374c4f){_0xef02f2=_0xef02f2-0x0;var _0xb646aa=_0x6dd5[_0xef02f2];return _0xb646aa;};'use strict';var multer=require('multer');var util=require(_0x56dd('0x0'));var path=require(_0x56dd('0x1'));var timeout=require(_0x56dd('0x2'));var express=require(_0x56dd('0x3'));var router=express['Router']();var fs_extra=require(_0x56dd('0x4'));var auth=require(_0x56dd('0x5'));var interaction=require(_0x56dd('0x6'));var config=require(_0x56dd('0x7'));var controller=require(_0x56dd('0x8'));router[_0x56dd('0x9')]('/',auth[_0x56dd('0xa')](),controller['index']);router[_0x56dd('0x9')](_0x56dd('0xb'),auth[_0x56dd('0xa')](),controller['describe']);router[_0x56dd('0x9')](_0x56dd('0xc'),auth[_0x56dd('0xa')](),controller['show']);router[_0x56dd('0xd')]('/',auth[_0x56dd('0xa')](),controller['create']);router[_0x56dd('0xe')](_0x56dd('0xc'),auth[_0x56dd('0xa')](),controller[_0x56dd('0xf')]);router['delete']('/:id',auth[_0x56dd('0xa')](),controller[_0x56dd('0x10')]);module[_0x56dd('0x11')]=router;
\ No newline at end of file
+var _0x6a63=['index','/describe','/:id','post','create','update','destroy','exports','util','path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated'];(function(_0x246b17,_0x17f237){var _0x3cd550=function(_0x372d0a){while(--_0x372d0a){_0x246b17['push'](_0x246b17['shift']());}};_0x3cd550(++_0x17f237);}(_0x6a63,0x68));var _0x36a6=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0x6a63[_0x9cd4c3];return _0x4c9025;};'use strict';var multer=require('multer');var util=require(_0x36a6('0x0'));var path=require(_0x36a6('0x1'));var timeout=require('connect-timeout');var express=require(_0x36a6('0x2'));var router=express[_0x36a6('0x3')]();var fs_extra=require(_0x36a6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x36a6('0x5'));var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0x36a6('0x6')]('/',auth[_0x36a6('0x7')](),controller[_0x36a6('0x8')]);router[_0x36a6('0x6')](_0x36a6('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x36a6('0x6')](_0x36a6('0xa'),auth[_0x36a6('0x7')](),controller['show']);router[_0x36a6('0xb')]('/',auth[_0x36a6('0x7')](),controller[_0x36a6('0xc')]);router['put']('/:id',auth[_0x36a6('0x7')](),controller[_0x36a6('0xd')]);router['delete']('/:id',auth[_0x36a6('0x7')](),controller[_0x36a6('0xe')]);module[_0x36a6('0xf')]=router;
\ No newline at end of file
index 881ee20..078d3c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e27=['DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING'];(function(_0x1c828f,_0x284cc7){var _0x5a672d=function(_0x32aaf7){while(--_0x32aaf7){_0x1c828f['push'](_0x1c828f['shift']());}};_0x5a672d(++_0x284cc7);}(_0x7e27,0xdd));var _0x77e2=function(_0xe1fcef,_0x2c55df){_0xe1fcef=_0xe1fcef-0x0;var _0x3923b3=_0x7e27[_0xe1fcef];return _0x3923b3;};'use strict';var Sequelize=require(_0x77e2('0x0'));module[_0x77e2('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x77e2('0x2')]},'calleridnum':{'type':Sequelize[_0x77e2('0x2')]},'calleridname':{'type':Sequelize[_0x77e2('0x2')]},'queue':{'type':Sequelize[_0x77e2('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x77e2('0x2')]},'agentcalledAt':{'type':Sequelize[_0x77e2('0x3')]},'agentconnectAt':{'type':Sequelize[_0x77e2('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0x77e2('0x3')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x77e2('0x4')]},'agentcomplete':{'type':Sequelize[_0x77e2('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x77e2('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x77e2('0x4')]},'agentacw':{'type':Sequelize[_0x77e2('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x77e2('0x4')]},'reason':{'type':Sequelize[_0x77e2('0x2')]},'lastevent':{'type':Sequelize[_0x77e2('0x2')]},'channel':{'type':Sequelize[_0x77e2('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x77e2('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x77e2('0x2')]},'accountcode':{'type':Sequelize[_0x77e2('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x77e2('0x2')]},'destchannel':{'type':Sequelize[_0x77e2('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x77e2('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x77e2('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x77e2('0x2')]},'destlanguage':{'type':Sequelize[_0x77e2('0x2')]},'destaccountcode':{'type':Sequelize[_0x77e2('0x2')]},'destcontext':{'type':Sequelize[_0x77e2('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x77e2('0x2')]},'destuniqueid':{'type':Sequelize[_0x77e2('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x77e2('0x2')]},'transfer':{'type':Sequelize[_0x77e2('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x77e2('0x2')],'comment':_0x77e2('0x6')},'transferexten':{'type':Sequelize[_0x77e2('0x2')]},'transferuniqueid':{'type':Sequelize[_0x77e2('0x2')]},'agententerreason':{'type':Sequelize[_0x77e2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd26f=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x4aba0e,_0x3cca89){var _0x240301=function(_0x376410){while(--_0x376410){_0x4aba0e['push'](_0x4aba0e['shift']());}};_0x240301(++_0x3cca89);}(_0xd26f,0x113));var _0xfd26=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xd26f[_0x5bd426];return _0x23a7eb;};'use strict';var Sequelize=require(_0xfd26('0x0'));module[_0xfd26('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xfd26('0x2')]},'calleridname':{'type':Sequelize[_0xfd26('0x2')]},'queue':{'type':Sequelize[_0xfd26('0x2')]},'interface':{'type':Sequelize[_0xfd26('0x2')]},'membername':{'type':Sequelize[_0xfd26('0x2')]},'agentcalledAt':{'type':Sequelize[_0xfd26('0x3')]},'agentconnectAt':{'type':Sequelize[_0xfd26('0x3')]},'agentcompleteAt':{'type':Sequelize[_0xfd26('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0xfd26('0x3')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xfd26('0x4')]},'agentcomplete':{'type':Sequelize[_0xfd26('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xfd26('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xfd26('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xfd26('0x4')]},'agentacw':{'type':Sequelize[_0xfd26('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xfd26('0x2')]},'lastevent':{'type':Sequelize[_0xfd26('0x2')]},'channel':{'type':Sequelize[_0xfd26('0x2')]},'channelstate':{'type':Sequelize[_0xfd26('0x4')]},'channelstatedesc':{'type':Sequelize[_0xfd26('0x2')]},'connectedlinenum':{'type':Sequelize[_0xfd26('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xfd26('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xfd26('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xfd26('0x2')]},'destcalleridname':{'type':Sequelize[_0xfd26('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xfd26('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xfd26('0x2')]},'destlanguage':{'type':Sequelize[_0xfd26('0x2')]},'destaccountcode':{'type':Sequelize[_0xfd26('0x2')]},'destcontext':{'type':Sequelize[_0xfd26('0x2')]},'destexten':{'type':Sequelize[_0xfd26('0x2')]},'destpriority':{'type':Sequelize[_0xfd26('0x2')]},'destuniqueid':{'type':Sequelize[_0xfd26('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xfd26('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xfd26('0x2')]},'transfer':{'type':Sequelize[_0xfd26('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xfd26('0x2')],'comment':_0xfd26('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0xfd26('0x2')]},'agententerreason':{'type':Sequelize[_0xfd26('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 4b7526e..b8dcc73 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(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'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(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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 bb54713..71b8b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6753=['define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x1cbcf1,_0x3f9fd9){var _0x3a06f0=function(_0x5425d4){while(--_0x5425d4){_0x1cbcf1['push'](_0x1cbcf1['shift']());}};_0x3a06f0(++_0x3f9fd9);}(_0x6753,0xa1));var _0x3675=function(_0x1d241e,_0x29c932){_0x1d241e=_0x1d241e-0x0;var _0x4ba1fc=_0x6753[_0x1d241e];return _0x4ba1fc;};'use strict';var _=require(_0x3675('0x0'));var util=require(_0x3675('0x1'));var logger=require(_0x3675('0x2'))(_0x3675('0x3'));var moment=require('moment');var BPromise=require(_0x3675('0x4'));var rp=require(_0x3675('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3675('0x6'));var config=require(_0x3675('0x7'));var attributes=require('./voiceAgentReport.attributes');module['exports']=function(_0x4e4e73,_0x396a35){return _0x4e4e73[_0x3675('0x8')](_0x3675('0x9'),attributes,{'tableName':_0x3675('0xa'),'paranoid':![],'indexes':[{'fields':[_0x3675('0xb'),_0x3675('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3148=['util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','report_agent','destuniqueid','lodash'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x3148,0x1d3));var _0x8314=function(_0x6e8761,_0xaef231){_0x6e8761=_0x6e8761-0x0;var _0x4e2142=_0x3148[_0x6e8761];return _0x4e2142;};'use strict';var _=require(_0x8314('0x0'));var util=require(_0x8314('0x1'));var logger=require('../../config/logger')(_0x8314('0x2'));var moment=require(_0x8314('0x3'));var BPromise=require(_0x8314('0x4'));var rp=require(_0x8314('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8314('0x6'));var config=require(_0x8314('0x7'));var attributes=require(_0x8314('0x8'));module[_0x8314('0x9')]=function(_0x18a30b,_0x9cb271){return _0x18a30b[_0x8314('0xa')]('VoiceAgentReport',attributes,{'tableName':_0x8314('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x8314('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index c07e7d4..2185ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9242=['message','result','catch','CreateVoiceAgentReport','body','raw','UpdateVoiceAgentReport','VoiceAgentReport','update','options','where','attributes','limit','lodash','util','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x3ddfb1,_0x200c11){var _0x3f1cba=function(_0x7c2ca5){while(--_0x7c2ca5){_0x3ddfb1['push'](_0x3ddfb1['shift']());}};_0x3f1cba(++_0x200c11);}(_0x9242,0x1a3));var _0x2924=function(_0x29bf80,_0x4af855){_0x29bf80=_0x29bf80-0x0;var _0x932096=_0x9242[_0x29bf80];return _0x932096;};'use strict';var _=require(_0x2924('0x0'));var util=require(_0x2924('0x1'));var moment=require('moment');var BPromise=require(_0x2924('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2924('0x3'));var db=require(_0x2924('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2924('0x5'));var config=require(_0x2924('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x545acd,_0x1c413b,_0xa5f0ca){return new BPromise(function(_0x4e09e5,_0x3412d0){return client[_0x2924('0x7')](_0x545acd,_0xa5f0ca)[_0x2924('0x8')](function(_0xcdb705){logger[_0x2924('0x9')](_0x2924('0xa'),_0x1c413b,_0x2924('0xb'));logger[_0x2924('0xc')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x1c413b,_0x2924('0xb'),JSON[_0x2924('0xd')](_0xcdb705));if(_0xcdb705[_0x2924('0xe')]){if(_0xcdb705[_0x2924('0xe')][_0x2924('0xf')]===0x1f4){logger[_0x2924('0xe')](_0x2924('0xa'),_0x1c413b,_0xcdb705[_0x2924('0xe')]['message']);return _0x3412d0(_0xcdb705[_0x2924('0xe')][_0x2924('0x10')]);}logger['error'](_0x2924('0xa'),_0x1c413b,_0xcdb705[_0x2924('0xe')][_0x2924('0x10')]);return _0x4e09e5(_0xcdb705[_0x2924('0xe')][_0x2924('0x10')]);}else{logger[_0x2924('0x9')](_0x2924('0xa'),_0x1c413b,'request\x20sent');_0x4e09e5(_0xcdb705[_0x2924('0x11')]['message']);}})[_0x2924('0x12')](function(_0x5298d5){logger[_0x2924('0xe')]('VoiceAgentReport,\x20%s,\x20%s',_0x1c413b,_0x5298d5);_0x3412d0(_0x5298d5);});});}exports[_0x2924('0x13')]=function(_0xe75aec){var _0x2438ad=this;return new Promise(function(_0x37055d,_0x64c6ce){return db['VoiceAgentReport']['create'](_0xe75aec[_0x2924('0x14')],{'raw':_0xe75aec['options']?_0xe75aec['options'][_0x2924('0x15')]===undefined?!![]:![]:!![]})[_0x2924('0x8')](function(_0x354a16){logger[_0x2924('0x9')]('CreateVoiceAgentReport',_0xe75aec);logger[_0x2924('0xc')](_0x2924('0x13'),_0xe75aec,JSON[_0x2924('0xd')](_0x354a16));_0x37055d(_0x354a16);})[_0x2924('0x12')](function(_0x1acb4c){logger[_0x2924('0xe')](_0x2924('0x13'),_0x1acb4c[_0x2924('0x10')],_0xe75aec);_0x64c6ce(_0x2438ad[_0x2924('0xe')](0x1f4,_0x1acb4c[_0x2924('0x10')]));});});};exports[_0x2924('0x16')]=function(_0x2b3a03){var _0x350c60=this;return new Promise(function(_0x3d3654,_0x298b9f){return db[_0x2924('0x17')][_0x2924('0x18')](_0x2b3a03[_0x2924('0x14')],{'raw':_0x2b3a03[_0x2924('0x19')]?_0x2b3a03[_0x2924('0x19')][_0x2924('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b3a03['options']?_0x2b3a03['options'][_0x2924('0x1a')]||null:null,'attributes':_0x2b3a03[_0x2924('0x19')]?_0x2b3a03['options'][_0x2924('0x1b')]||null:null,'limit':_0x2b3a03[_0x2924('0x19')]?_0x2b3a03[_0x2924('0x19')][_0x2924('0x1c')]||null:null})[_0x2924('0x8')](function(_0x1c6277){logger[_0x2924('0x9')](_0x2924('0x16'),_0x2b3a03);logger[_0x2924('0xc')](_0x2924('0x16'),_0x2b3a03,JSON['stringify'](_0x1c6277));_0x3d3654(_0x1c6277);})[_0x2924('0x12')](function(_0x4e322d){logger['error']('UpdateVoiceAgentReport',_0x4e322d[_0x2924('0x10')],_0x2b3a03);_0x298b9f(_0x350c60[_0x2924('0xe')](0x1f4,_0x4e322d[_0x2924('0x10')]));});});};
\ No newline at end of file
+var _0x7ea2=['client','request','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','VoiceAgentReport','create','options','then','CreateVoiceAgentReport','stringify','update','body','raw','limit','UpdateVoiceAgentReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x1ef726,_0x16fdea){var _0x4c3c66=function(_0x1bf2de){while(--_0x1bf2de){_0x1ef726['push'](_0x1ef726['shift']());}};_0x4c3c66(++_0x16fdea);}(_0x7ea2,0x116));var _0x27ea=function(_0x7d62cb,_0x7622c){_0x7d62cb=_0x7d62cb-0x0;var _0x3a6266=_0x7ea2[_0x7d62cb];return _0x3a6266;};'use strict';var _=require(_0x27ea('0x0'));var util=require(_0x27ea('0x1'));var moment=require(_0x27ea('0x2'));var BPromise=require(_0x27ea('0x3'));var rs=require(_0x27ea('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x27ea('0x5'))['db'];var utils=require(_0x27ea('0x6'));var logger=require(_0x27ea('0x7'))('rpc');var config=require(_0x27ea('0x8'));var jayson=require(_0x27ea('0x9'));var client=jayson[_0x27ea('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1abef7,_0x3bc9c0,_0x2d541f){return new BPromise(function(_0x26635f,_0x125440){return client[_0x27ea('0xb')](_0x1abef7,_0x2d541f)['then'](function(_0x296496){logger[_0x27ea('0xc')](_0x27ea('0xd'),_0x3bc9c0,_0x27ea('0xe'));logger[_0x27ea('0xf')](_0x27ea('0x10'),_0x3bc9c0,_0x27ea('0xe'),JSON['stringify'](_0x296496));if(_0x296496['error']){if(_0x296496[_0x27ea('0x11')][_0x27ea('0x12')]===0x1f4){logger[_0x27ea('0x11')](_0x27ea('0xd'),_0x3bc9c0,_0x296496[_0x27ea('0x11')][_0x27ea('0x13')]);return _0x125440(_0x296496['error'][_0x27ea('0x13')]);}logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x3bc9c0,_0x296496[_0x27ea('0x11')][_0x27ea('0x13')]);return _0x26635f(_0x296496['error'][_0x27ea('0x13')]);}else{logger[_0x27ea('0xc')](_0x27ea('0xd'),_0x3bc9c0,_0x27ea('0xe'));_0x26635f(_0x296496['result'][_0x27ea('0x13')]);}})[_0x27ea('0x14')](function(_0x51cd09){logger[_0x27ea('0x11')](_0x27ea('0xd'),_0x3bc9c0,_0x51cd09);_0x125440(_0x51cd09);});});}exports['CreateVoiceAgentReport']=function(_0x24eb6c){var _0xc3138f=this;return new Promise(function(_0x386461,_0x259162){return db[_0x27ea('0x15')][_0x27ea('0x16')](_0x24eb6c['body'],{'raw':_0x24eb6c[_0x27ea('0x17')]?_0x24eb6c[_0x27ea('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x27ea('0x18')](function(_0x440cfc){logger[_0x27ea('0xc')](_0x27ea('0x19'),_0x24eb6c);logger[_0x27ea('0xf')](_0x27ea('0x19'),_0x24eb6c,JSON[_0x27ea('0x1a')](_0x440cfc));_0x386461(_0x440cfc);})[_0x27ea('0x14')](function(_0x5ed336){logger[_0x27ea('0x11')](_0x27ea('0x19'),_0x5ed336['message'],_0x24eb6c);_0x259162(_0xc3138f[_0x27ea('0x11')](0x1f4,_0x5ed336['message']));});});};exports['UpdateVoiceAgentReport']=function(_0x4774f8){var _0x38a27f=this;return new Promise(function(_0x5b8d4a,_0x3070a6){return db[_0x27ea('0x15')][_0x27ea('0x1b')](_0x4774f8[_0x27ea('0x1c')],{'raw':_0x4774f8[_0x27ea('0x17')]?_0x4774f8[_0x27ea('0x17')][_0x27ea('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4774f8['options']?_0x4774f8['options']['where']||null:null,'attributes':_0x4774f8[_0x27ea('0x17')]?_0x4774f8[_0x27ea('0x17')]['attributes']||null:null,'limit':_0x4774f8[_0x27ea('0x17')]?_0x4774f8[_0x27ea('0x17')][_0x27ea('0x1e')]||null:null})[_0x27ea('0x18')](function(_0x2d5b8f){logger[_0x27ea('0xc')](_0x27ea('0x1f'),_0x4774f8);logger['debug'](_0x27ea('0x1f'),_0x4774f8,JSON['stringify'](_0x2d5b8f));_0x5b8d4a(_0x2d5b8f);})['catch'](function(_0x163faa){logger['error'](_0x27ea('0x1f'),_0x163faa[_0x27ea('0x13')],_0x4774f8);_0x3070a6(_0x38a27f[_0x27ea('0x11')](0x1f4,_0x163faa[_0x27ea('0x13')]));});});};
\ No newline at end of file
index 5655852..21305b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['/describe','describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','index'];(function(_0x442a76,_0x2ad2ff){var _0x474fab=function(_0x2b52c7){while(--_0x2b52c7){_0x442a76['push'](_0x442a76['shift']());}};_0x474fab(++_0x2ad2ff);}(_0x0e85,0x7c));var _0x50e8=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x0e85[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var path=require('path');var timeout=require(_0x50e8('0x2'));var express=require(_0x50e8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x50e8('0x4'));var config=require('../../config/environment');var controller=require(_0x50e8('0x5'));router[_0x50e8('0x6')]('/',auth[_0x50e8('0x7')](),controller[_0x50e8('0x8')]);router['get'](_0x50e8('0x9'),auth[_0x50e8('0x7')](),controller[_0x50e8('0xa')]);router[_0x50e8('0x6')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller['show']);router[_0x50e8('0xc')]('/',auth[_0x50e8('0x7')](),controller[_0x50e8('0xd')]);router[_0x50e8('0xe')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller[_0x50e8('0xf')]);router[_0x50e8('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x50e8('0x11')]);module[_0x50e8('0x12')]=router;
\ No newline at end of file
+var _0x50a6=['create','/:id','update','destroy','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','index','get','/describe','isAuthenticated','show'];(function(_0x50da63,_0x363a1a){var _0x394262=function(_0x22994e){while(--_0x22994e){_0x50da63['push'](_0x50da63['shift']());}};_0x394262(++_0x363a1a);}(_0x50a6,0xa4));var _0x650a=function(_0x273f77,_0xe5b0cb){_0x273f77=_0x273f77-0x0;var _0x71e147=_0x50a6[_0x273f77];return _0x71e147;};'use strict';var multer=require(_0x650a('0x0'));var util=require(_0x650a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x650a('0x2'));var router=express['Router']();var fs_extra=require(_0x650a('0x3'));var auth=require(_0x650a('0x4'));var interaction=require(_0x650a('0x5'));var config=require('../../config/environment');var controller=require(_0x650a('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x650a('0x7')]);router[_0x650a('0x8')](_0x650a('0x9'),auth[_0x650a('0xa')](),controller['describe']);router[_0x650a('0x8')]('/:id',auth[_0x650a('0xa')](),controller[_0x650a('0xb')]);router['post']('/',auth[_0x650a('0xa')](),controller[_0x650a('0xc')]);router['put'](_0x650a('0xd'),auth['isAuthenticated'](),controller[_0x650a('0xe')]);router['delete'](_0x650a('0xd'),auth['isAuthenticated'](),controller[_0x650a('0xf')]);module['exports']=router;
\ No newline at end of file
index f70d378..628c2e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa849=['exports','STRING','inbound','internal','inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize'];(function(_0x48b231,_0x40f6e1){var _0x252bbb=function(_0x3e28fd){while(--_0x3e28fd){_0x48b231['push'](_0x48b231['shift']());}};_0x252bbb(++_0x40f6e1);}(_0xa849,0x175));var _0x9a84=function(_0x2a33f0,_0x79d302){_0x2a33f0=_0x2a33f0-0x0;var _0x3c2a20=_0xa849[_0x2a33f0];return _0x3c2a20;};'use strict';var Sequelize=require(_0x9a84('0x0'));module[_0x9a84('0x1')]={'uniqueid':{'type':Sequelize[_0x9a84('0x2')]},'type':{'type':Sequelize['ENUM'](_0x9a84('0x3'),_0x9a84('0x4'),'outbound',_0x9a84('0x5'),_0x9a84('0x6'),_0x9a84('0x7'))},'tag':{'type':Sequelize[_0x9a84('0x2')]},'accountcode':{'type':Sequelize[_0x9a84('0x2')]},'source':{'type':Sequelize[_0x9a84('0x2')]},'destination':{'type':Sequelize[_0x9a84('0x2')]},'destinationcontext':{'type':Sequelize[_0x9a84('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x9a84('0x2')]},'destinationchannel':{'type':Sequelize[_0x9a84('0x2')]},'lastapplication':{'type':Sequelize[_0x9a84('0x2')]},'lastdata':{'type':Sequelize[_0x9a84('0x8')]},'starttime':{'type':Sequelize[_0x9a84('0x9')]},'systemanswertime':{'type':Sequelize[_0x9a84('0x9')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x9a84('0x9')]},'duration':{'type':Sequelize[_0x9a84('0xa')]},'billableseconds':{'type':Sequelize[_0x9a84('0xa')]},'mohtime':{'type':Sequelize[_0x9a84('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x9a84('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x9a84('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x9a84('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x9a84('0x2')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x9a84('0x2')]},'routeid':{'type':Sequelize[_0x9a84('0xa')]},'sipcallid':{'type':Sequelize[_0x9a84('0x2')]}};
\ No newline at end of file
+var _0xedc7=['sequelize','exports','STRING','ENUM','inbound','outbound-fax','dialer','TEXT','DATE','INTEGER'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0xedc7,0x1f4));var _0x7edc=function(_0x1c2a0e,_0x4b5348){_0x1c2a0e=_0x1c2a0e-0x0;var _0x35effc=_0xedc7[_0x1c2a0e];return _0x35effc;};'use strict';var Sequelize=require(_0x7edc('0x0'));module[_0x7edc('0x1')]={'uniqueid':{'type':Sequelize[_0x7edc('0x2')]},'type':{'type':Sequelize[_0x7edc('0x3')](_0x7edc('0x4'),'internal','outbound','inbound-fax',_0x7edc('0x5'),_0x7edc('0x6'))},'tag':{'type':Sequelize[_0x7edc('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0x7edc('0x2')]},'destination':{'type':Sequelize[_0x7edc('0x2')]},'destinationcontext':{'type':Sequelize[_0x7edc('0x2')]},'callerid':{'type':Sequelize[_0x7edc('0x2')]},'channel':{'type':Sequelize[_0x7edc('0x2')]},'destinationchannel':{'type':Sequelize[_0x7edc('0x2')]},'lastapplication':{'type':Sequelize[_0x7edc('0x2')]},'lastdata':{'type':Sequelize[_0x7edc('0x7')]},'starttime':{'type':Sequelize[_0x7edc('0x8')]},'systemanswertime':{'type':Sequelize[_0x7edc('0x8')]},'answertime':{'type':Sequelize[_0x7edc('0x8')]},'endtime':{'type':Sequelize[_0x7edc('0x8')]},'duration':{'type':Sequelize[_0x7edc('0x9')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x7edc('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x7edc('0x2')]},'amaflags':{'type':Sequelize[_0x7edc('0x2')]},'userfield':{'type':Sequelize[_0x7edc('0x2')]},'userDisposition':{'type':Sequelize[_0x7edc('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x7edc('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x7edc('0x2')]},'note':{'type':Sequelize[_0x7edc('0x2')]},'prefix':{'type':Sequelize[_0x7edc('0x2')]},'routeid':{'type':Sequelize[_0x7edc('0x9')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e42b20a..8f74abd 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(_0xd9d2f1,_0x162550){var _0x3fe45c=function(_0x163a35){while(--_0x163a35){_0xd9d2f1['push'](_0xd9d2f1['shift']());}};_0x3fe45c(++_0x162550);}(_0xdb28,0x106));var _0x8db2=function(_0xf05c38,_0xa1949f){_0xf05c38=_0xf05c38-0x0;var _0x1458f0=_0xdb28[_0xf05c38];return _0x1458f0;};'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 _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x5f66,0x1a0));var _0x65f6=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x5f66[_0x297fd3];return _0x2af381;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
index bdab444..293d3cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbf=['VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfcbf,0x1d1));var _0xffcb=function(_0x14aa0f,_0x495213){_0x14aa0f=_0x14aa0f-0x0;var _0x215bb6=_0xfcbf[_0x14aa0f];return _0x215bb6;};'use strict';var _=require(_0xffcb('0x0'));var util=require(_0xffcb('0x1'));var logger=require(_0xffcb('0x2'))(_0xffcb('0x3'));var moment=require(_0xffcb('0x4'));var BPromise=require(_0xffcb('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xffcb('0x6'));var config=require(_0xffcb('0x7'));var attributes=require(_0xffcb('0x8'));module[_0xffcb('0x9')]=function(_0x1ed82f,_0x49201c){return _0x1ed82f[_0xffcb('0xa')](_0xffcb('0xb'),attributes,{'tableName':_0xffcb('0xc'),'paranoid':![],'indexes':[{'fields':[_0xffcb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6246=['VoiceCallReport','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x56dc96,_0x1a48b0){var _0x46fea5=function(_0x19c06f){while(--_0x19c06f){_0x56dc96['push'](_0x56dc96['shift']());}};_0x46fea5(++_0x1a48b0);}(_0x6246,0x19a));var _0x6624=function(_0x1ac6a0,_0x5783e7){_0x1ac6a0=_0x1ac6a0-0x0;var _0x26de06=_0x6246[_0x1ac6a0];return _0x26de06;};'use strict';var _=require(_0x6624('0x0'));var util=require(_0x6624('0x1'));var logger=require(_0x6624('0x2'))('api');var moment=require(_0x6624('0x3'));var BPromise=require(_0x6624('0x4'));var rp=require(_0x6624('0x5'));var fs=require('fs');var path=require(_0x6624('0x6'));var rimraf=require(_0x6624('0x7'));var config=require('../../config/environment');var attributes=require('./voiceCallReport.attributes');module[_0x6624('0x8')]=function(_0x4a9fe6,_0x535bb2){return _0x4a9fe6[_0x6624('0x9')](_0x6624('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x6624('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index d8a4797..c2785fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f51=['map','model','create','CreateVoiceCallReport','update','body','UpdateVoiceCallReport','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','limit','include'];(function(_0x466247,_0x5d69e3){var _0x4b352e=function(_0x58c71b){while(--_0x58c71b){_0x466247['push'](_0x466247['shift']());}};_0x4b352e(++_0x5d69e3);}(_0x8f51,0xca));var _0x18f5=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x8f51[_0x31e29a];return _0x32d892;};'use strict';var _=require('lodash');var util=require(_0x18f5('0x0'));var moment=require('moment');var BPromise=require(_0x18f5('0x1'));var rs=require(_0x18f5('0x2'));var fs=require('fs');var Redis=require(_0x18f5('0x3'));var db=require(_0x18f5('0x4'))['db'];var utils=require(_0x18f5('0x5'));var logger=require('../../config/logger')(_0x18f5('0x6'));var config=require(_0x18f5('0x7'));var jayson=require(_0x18f5('0x8'));var client=jayson[_0x18f5('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3d68d5,_0x293474,_0x5835f5){return new BPromise(function(_0x2d610a,_0x1932ca){return client[_0x18f5('0xa')](_0x3d68d5,_0x5835f5)[_0x18f5('0xb')](function(_0x5cd73f){logger['info'](_0x18f5('0xc'),_0x293474,_0x18f5('0xd'));logger[_0x18f5('0xe')](_0x18f5('0xf'),_0x293474,_0x18f5('0xd'),JSON[_0x18f5('0x10')](_0x5cd73f));if(_0x5cd73f[_0x18f5('0x11')]){if(_0x5cd73f[_0x18f5('0x11')][_0x18f5('0x12')]===0x1f4){logger[_0x18f5('0x11')](_0x18f5('0xc'),_0x293474,_0x5cd73f[_0x18f5('0x11')]['message']);return _0x1932ca(_0x5cd73f['error'][_0x18f5('0x13')]);}logger[_0x18f5('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x293474,_0x5cd73f[_0x18f5('0x11')][_0x18f5('0x13')]);return _0x2d610a(_0x5cd73f[_0x18f5('0x11')][_0x18f5('0x13')]);}else{logger[_0x18f5('0x14')](_0x18f5('0xc'),_0x293474,_0x18f5('0xd'));_0x2d610a(_0x5cd73f[_0x18f5('0x15')][_0x18f5('0x13')]);}})[_0x18f5('0x16')](function(_0x1f40ec){logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x293474,_0x1f40ec);_0x1932ca(_0x1f40ec);});});}exports[_0x18f5('0x17')]=function(_0x35b0db){var _0xc7f58a=this;return new Promise(function(_0x7372e5,_0x288fda){return db[_0x18f5('0x18')][_0x18f5('0x19')]({'raw':_0x35b0db[_0x18f5('0x1a')]?_0x35b0db[_0x18f5('0x1a')][_0x18f5('0x1b')]===undefined?!![]:![]:!![],'where':_0x35b0db[_0x18f5('0x1a')]?_0x35b0db['options'][_0x18f5('0x1c')]||null:null,'attributes':_0x35b0db[_0x18f5('0x1a')]?_0x35b0db[_0x18f5('0x1a')][_0x18f5('0x1d')]||null:null,'limit':_0x35b0db[_0x18f5('0x1a')]?_0x35b0db[_0x18f5('0x1a')][_0x18f5('0x1e')]||null:null,'include':_0x35b0db[_0x18f5('0x1a')]?_0x35b0db['options'][_0x18f5('0x1f')]?_[_0x18f5('0x20')](_0x35b0db[_0x18f5('0x1a')][_0x18f5('0x1f')],function(_0x31998b){return{'model':db[_0x31998b['model']],'as':_0x31998b['as'],'attributes':_0x31998b[_0x18f5('0x1d')],'include':_0x31998b[_0x18f5('0x1f')]?_['map'](_0x31998b[_0x18f5('0x1f')],function(_0x5ebe33){return{'model':db[_0x5ebe33[_0x18f5('0x21')]],'as':_0x5ebe33['as'],'attributes':_0x5ebe33[_0x18f5('0x1d')],'include':_0x5ebe33[_0x18f5('0x1f')]?_['map'](_0x5ebe33[_0x18f5('0x1f')],function(_0x98e7de){return{'model':db[_0x98e7de[_0x18f5('0x21')]],'as':_0x98e7de['as'],'attributes':_0x98e7de[_0x18f5('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x18f5('0xb')](function(_0x52fe06){logger['info'](_0x18f5('0x17'),_0x35b0db);logger[_0x18f5('0xe')](_0x18f5('0x17'),_0x35b0db,JSON[_0x18f5('0x10')](_0x52fe06));_0x7372e5(_0x52fe06);})[_0x18f5('0x16')](function(_0x168f8f){logger[_0x18f5('0x11')](_0x18f5('0x17'),_0x168f8f[_0x18f5('0x13')],_0x35b0db);_0x288fda(_0xc7f58a[_0x18f5('0x11')](0x1f4,_0x168f8f[_0x18f5('0x13')]));});});};exports['CreateVoiceCallReport']=function(_0x3477b9){var _0x3cdf2c=this;return new Promise(function(_0x27bf9f,_0x2af549){return db[_0x18f5('0x18')][_0x18f5('0x22')](_0x3477b9['body'],{'raw':_0x3477b9[_0x18f5('0x1a')]?_0x3477b9[_0x18f5('0x1a')][_0x18f5('0x1b')]===undefined?!![]:![]:!![]})[_0x18f5('0xb')](function(_0x1281e1){logger[_0x18f5('0x14')](_0x18f5('0x23'),_0x3477b9);logger[_0x18f5('0xe')](_0x18f5('0x23'),_0x3477b9,JSON[_0x18f5('0x10')](_0x1281e1));_0x27bf9f(_0x1281e1);})['catch'](function(_0x2a8b05){logger[_0x18f5('0x11')]('CreateVoiceCallReport',_0x2a8b05[_0x18f5('0x13')],_0x3477b9);_0x2af549(_0x3cdf2c[_0x18f5('0x11')](0x1f4,_0x2a8b05[_0x18f5('0x13')]));});});};exports['UpdateVoiceCallReport']=function(_0x333f5e){var _0x30f073=this;return new Promise(function(_0xb0d813,_0x5d2554){return db['VoiceCallReport'][_0x18f5('0x24')](_0x333f5e[_0x18f5('0x25')],{'raw':_0x333f5e[_0x18f5('0x1a')]?_0x333f5e[_0x18f5('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x333f5e[_0x18f5('0x1a')]?_0x333f5e['options'][_0x18f5('0x1c')]||null:null,'attributes':_0x333f5e['options']?_0x333f5e[_0x18f5('0x1a')]['attributes']||null:null,'limit':_0x333f5e[_0x18f5('0x1a')]?_0x333f5e[_0x18f5('0x1a')][_0x18f5('0x1e')]||null:null})['then'](function(_0xd286de){logger[_0x18f5('0x14')]('UpdateVoiceCallReport',_0x333f5e);logger[_0x18f5('0xe')]('UpdateVoiceCallReport',_0x333f5e,JSON[_0x18f5('0x10')](_0xd286de));_0xb0d813(_0xd286de);})['catch'](function(_0x257789){logger[_0x18f5('0x11')](_0x18f5('0x26'),_0x257789['message'],_0x333f5e);_0x5d2554(_0x30f073[_0x18f5('0x11')](0x1f4,_0x257789[_0x18f5('0x13')]));});});};
\ No newline at end of file
+var _0xf858=['request','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','findAll','options','raw','where','attributes','limit','include','map','model','then','GetVoiceCallReport','stringify','CreateVoiceCallReport','VoiceCallReport','create','update','body','UpdateVoiceCallReport','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x324496,_0x3a4cdd){var _0x899545=function(_0x506ef1){while(--_0x506ef1){_0x324496['push'](_0x324496['shift']());}};_0x899545(++_0x3a4cdd);}(_0xf858,0x10d));var _0x8f85=function(_0x5ede6c,_0x11cb23){_0x5ede6c=_0x5ede6c-0x0;var _0x159814=_0xf858[_0x5ede6c];return _0x159814;};'use strict';var _=require('lodash');var util=require(_0x8f85('0x0'));var moment=require('moment');var BPromise=require(_0x8f85('0x1'));var rs=require(_0x8f85('0x2'));var fs=require('fs');var Redis=require(_0x8f85('0x3'));var db=require(_0x8f85('0x4'))['db'];var utils=require(_0x8f85('0x5'));var logger=require(_0x8f85('0x6'))(_0x8f85('0x7'));var config=require(_0x8f85('0x8'));var jayson=require(_0x8f85('0x9'));var client=jayson['client'][_0x8f85('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b3573,_0xf35259,_0x177353){return new BPromise(function(_0x53f555,_0x500ffd){return client[_0x8f85('0xb')](_0x1b3573,_0x177353)['then'](function(_0x144582){logger[_0x8f85('0xc')](_0x8f85('0xd'),_0xf35259,_0x8f85('0xe'));logger[_0x8f85('0xf')](_0x8f85('0x10'),_0xf35259,_0x8f85('0xe'),JSON['stringify'](_0x144582));if(_0x144582[_0x8f85('0x11')]){if(_0x144582[_0x8f85('0x11')][_0x8f85('0x12')]===0x1f4){logger[_0x8f85('0x11')](_0x8f85('0xd'),_0xf35259,_0x144582[_0x8f85('0x11')][_0x8f85('0x13')]);return _0x500ffd(_0x144582[_0x8f85('0x11')][_0x8f85('0x13')]);}logger[_0x8f85('0x11')](_0x8f85('0xd'),_0xf35259,_0x144582[_0x8f85('0x11')][_0x8f85('0x13')]);return _0x53f555(_0x144582[_0x8f85('0x11')][_0x8f85('0x13')]);}else{logger['info'](_0x8f85('0xd'),_0xf35259,_0x8f85('0xe'));_0x53f555(_0x144582[_0x8f85('0x14')][_0x8f85('0x13')]);}})[_0x8f85('0x15')](function(_0x1c3007){logger['error']('VoiceCallReport,\x20%s,\x20%s',_0xf35259,_0x1c3007);_0x500ffd(_0x1c3007);});});}exports['GetVoiceCallReport']=function(_0xce0600){var _0x2dfca0=this;return new Promise(function(_0x38dcbe,_0x3cfb6b){return db['VoiceCallReport'][_0x8f85('0x16')]({'raw':_0xce0600[_0x8f85('0x17')]?_0xce0600[_0x8f85('0x17')][_0x8f85('0x18')]===undefined?!![]:![]:!![],'where':_0xce0600[_0x8f85('0x17')]?_0xce0600[_0x8f85('0x17')][_0x8f85('0x19')]||null:null,'attributes':_0xce0600[_0x8f85('0x17')]?_0xce0600['options'][_0x8f85('0x1a')]||null:null,'limit':_0xce0600[_0x8f85('0x17')]?_0xce0600['options'][_0x8f85('0x1b')]||null:null,'include':_0xce0600['options']?_0xce0600[_0x8f85('0x17')][_0x8f85('0x1c')]?_[_0x8f85('0x1d')](_0xce0600[_0x8f85('0x17')][_0x8f85('0x1c')],function(_0x4d5811){return{'model':db[_0x4d5811[_0x8f85('0x1e')]],'as':_0x4d5811['as'],'attributes':_0x4d5811[_0x8f85('0x1a')],'include':_0x4d5811[_0x8f85('0x1c')]?_[_0x8f85('0x1d')](_0x4d5811[_0x8f85('0x1c')],function(_0x355f52){return{'model':db[_0x355f52[_0x8f85('0x1e')]],'as':_0x355f52['as'],'attributes':_0x355f52['attributes'],'include':_0x355f52['include']?_[_0x8f85('0x1d')](_0x355f52[_0x8f85('0x1c')],function(_0x3f651d){return{'model':db[_0x3f651d[_0x8f85('0x1e')]],'as':_0x3f651d['as'],'attributes':_0x3f651d['attributes']};}):[]};}):[]};}):[]:[]})[_0x8f85('0x1f')](function(_0x517dc2){logger[_0x8f85('0xc')]('GetVoiceCallReport',_0xce0600);logger['debug'](_0x8f85('0x20'),_0xce0600,JSON[_0x8f85('0x21')](_0x517dc2));_0x38dcbe(_0x517dc2);})['catch'](function(_0x3c7365){logger[_0x8f85('0x11')](_0x8f85('0x20'),_0x3c7365[_0x8f85('0x13')],_0xce0600);_0x3cfb6b(_0x2dfca0[_0x8f85('0x11')](0x1f4,_0x3c7365['message']));});});};exports[_0x8f85('0x22')]=function(_0x169c8b){var _0x3a7712=this;return new Promise(function(_0x2974fc,_0x2af978){return db[_0x8f85('0x23')][_0x8f85('0x24')](_0x169c8b['body'],{'raw':_0x169c8b[_0x8f85('0x17')]?_0x169c8b['options']['raw']===undefined?!![]:![]:!![]})[_0x8f85('0x1f')](function(_0x48a780){logger['info'](_0x8f85('0x22'),_0x169c8b);logger[_0x8f85('0xf')](_0x8f85('0x22'),_0x169c8b,JSON[_0x8f85('0x21')](_0x48a780));_0x2974fc(_0x48a780);})[_0x8f85('0x15')](function(_0x43d894){logger['error']('CreateVoiceCallReport',_0x43d894[_0x8f85('0x13')],_0x169c8b);_0x2af978(_0x3a7712[_0x8f85('0x11')](0x1f4,_0x43d894[_0x8f85('0x13')]));});});};exports['UpdateVoiceCallReport']=function(_0x5b160d){var _0xbf1758=this;return new Promise(function(_0x3e30c8,_0x5ea55e){return db[_0x8f85('0x23')][_0x8f85('0x25')](_0x5b160d[_0x8f85('0x26')],{'raw':_0x5b160d[_0x8f85('0x17')]?_0x5b160d[_0x8f85('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b160d[_0x8f85('0x17')]?_0x5b160d[_0x8f85('0x17')][_0x8f85('0x19')]||null:null,'attributes':_0x5b160d[_0x8f85('0x17')]?_0x5b160d['options'][_0x8f85('0x1a')]||null:null,'limit':_0x5b160d[_0x8f85('0x17')]?_0x5b160d[_0x8f85('0x17')]['limit']||null:null})['then'](function(_0x39dbe9){logger[_0x8f85('0xc')](_0x8f85('0x27'),_0x5b160d);logger['debug'](_0x8f85('0x27'),_0x5b160d,JSON[_0x8f85('0x21')](_0x39dbe9));_0x3e30c8(_0x39dbe9);})[_0x8f85('0x15')](function(_0x1e42f8){logger[_0x8f85('0x11')](_0x8f85('0x27'),_0x1e42f8[_0x8f85('0x13')],_0x5b160d);_0x5ea55e(_0xbf1758['error'](0x1f4,_0x1e42f8['message']));});});};
\ No newline at end of file
index f939449..36dbcbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa211=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','put','update'];(function(_0x41f9fb,_0x51f3d7){var _0x5991c5=function(_0xb03acf){while(--_0xb03acf){_0x41f9fb['push'](_0x41f9fb['shift']());}};_0x5991c5(++_0x51f3d7);}(_0xa211,0x10c));var _0x1a21=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xa211[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0x1a21('0x0'));var util=require(_0x1a21('0x1'));var path=require(_0x1a21('0x2'));var timeout=require(_0x1a21('0x3'));var express=require(_0x1a21('0x4'));var router=express[_0x1a21('0x5')]();var fs_extra=require(_0x1a21('0x6'));var auth=require(_0x1a21('0x7'));var interaction=require(_0x1a21('0x8'));var config=require(_0x1a21('0x9'));var controller=require('./voiceChanSpy.controller');router[_0x1a21('0xa')]('/',auth['isAuthenticated'](),controller[_0x1a21('0xb')]);router[_0x1a21('0xa')](_0x1a21('0xc'),auth[_0x1a21('0xd')](),controller[_0x1a21('0xe')]);router['post']('/',auth[_0x1a21('0xd')](),controller['create']);router[_0x1a21('0xf')](_0x1a21('0xc'),auth[_0x1a21('0xd')](),controller[_0x1a21('0x10')]);router['delete'](_0x1a21('0xc'),auth[_0x1a21('0xd')](),controller[_0x1a21('0x11')]);module[_0x1a21('0x12')]=router;
\ No newline at end of file
+var _0x82e2=['Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','show','post','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express'];(function(_0x59cc10,_0x5e5c20){var _0x1b7011=function(_0x46937a){while(--_0x46937a){_0x59cc10['push'](_0x59cc10['shift']());}};_0x1b7011(++_0x5e5c20);}(_0x82e2,0x151));var _0x282e=function(_0x48fcee,_0x431a8b){_0x48fcee=_0x48fcee-0x0;var _0x28d65a=_0x82e2[_0x48fcee];return _0x28d65a;};'use strict';var multer=require(_0x282e('0x0'));var util=require(_0x282e('0x1'));var path=require(_0x282e('0x2'));var timeout=require(_0x282e('0x3'));var express=require(_0x282e('0x4'));var router=express[_0x282e('0x5')]();var fs_extra=require(_0x282e('0x6'));var auth=require(_0x282e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x282e('0x8'));var controller=require('./voiceChanSpy.controller');router[_0x282e('0x9')]('/',auth[_0x282e('0xa')](),controller['index']);router['get']('/:id',auth[_0x282e('0xa')](),controller[_0x282e('0xb')]);router[_0x282e('0xc')]('/',auth[_0x282e('0xa')](),controller[_0x282e('0xd')]);router[_0x282e('0xe')](_0x282e('0xf'),auth['isAuthenticated'](),controller[_0x282e('0x10')]);router[_0x282e('0x11')]('/:id',auth[_0x282e('0xa')](),controller['destroy']);module[_0x282e('0x12')]=router;
\ No newline at end of file
index 0c1e6b8..f753d57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc02=['sequelize','STRING','name','setDataValue','options','getDataValue','split','BOOLEAN'];(function(_0x459423,_0x3416a8){var _0x42ed14=function(_0x1d4f69){while(--_0x1d4f69){_0x459423['push'](_0x459423['shift']());}};_0x42ed14(++_0x3416a8);}(_0xcc02,0x1d0));var _0x2cc0=function(_0xa4deca,_0x43eb52){_0xa4deca=_0xa4deca-0x0;var _0x19dc0c=_0xcc02[_0xa4deca];return _0x19dc0c;};'use strict';var Sequelize=require(_0x2cc0('0x0'));module['exports']={'name':{'type':Sequelize[_0x2cc0('0x1')]},'prefix':{'type':Sequelize[_0x2cc0('0x1')],'unique':_0x2cc0('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0x2cc0('0x1')],'set':function(_0x53f8ef){this[_0x2cc0('0x3')](_0x2cc0('0x4'),_0x53f8ef?_0x53f8ef['join'](''):[]);},'get':function(){return this[_0x2cc0('0x5')](_0x2cc0('0x4'))?this[_0x2cc0('0x5')](_0x2cc0('0x4'))[_0x2cc0('0x6')](''):[];}},'auth':{'type':Sequelize[_0x2cc0('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0x2cc0('0x1')]},'record':{'type':Sequelize[_0x2cc0('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x492f=['setDataValue','options','split','BOOLEAN','sequelize','exports','STRING','name'];(function(_0x5bef68,_0x176752){var _0x226637=function(_0x35c5d8){while(--_0x35c5d8){_0x5bef68['push'](_0x5bef68['shift']());}};_0x226637(++_0x176752);}(_0x492f,0x1bc));var _0xf492=function(_0x44781e,_0x265fc7){_0x44781e=_0x44781e-0x0;var _0x49debb=_0x492f[_0x44781e];return _0x49debb;};'use strict';var Sequelize=require(_0xf492('0x0'));module[_0xf492('0x1')]={'name':{'type':Sequelize[_0xf492('0x2')]},'prefix':{'type':Sequelize['STRING'],'unique':_0xf492('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0xf492('0x2')],'set':function(_0x380244){this[_0xf492('0x4')](_0xf492('0x5'),_0x380244?_0x380244['join'](''):[]);},'get':function(){return this['getDataValue'](_0xf492('0x5'))?this['getDataValue'](_0xf492('0x5'))[_0xf492('0x6')](''):[];}},'auth':{'type':Sequelize[_0xf492('0x7')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0xf492('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xf492('0x2')]},'description':{'type':Sequelize[_0xf492('0x2')]}};
\ No newline at end of file
index 043e125..204c24b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc2=['keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','catch','show','params','length','find','create','body','user','role','ChanSpies','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','get','UserProfileResource','sendStatus','error','stack','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query'];(function(_0xa60623,_0x2d4e4f){var _0x4a6487=function(_0xba6cbe){while(--_0xba6cbe){_0xa60623['push'](_0xa60623['shift']());}};_0x4a6487(++_0x2d4e4f);}(_0x7dc2,0x19d));var _0x27dc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7dc2[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x27dc('0x0'));var jsonpatch=require(_0x27dc('0x1'));var rp=require(_0x27dc('0x2'));var moment=require(_0x27dc('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x27dc('0x4'));var util=require(_0x27dc('0x5'));var path=require('path');var sox=require(_0x27dc('0x6'));var csv=require(_0x27dc('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x27dc('0x8'));var _=require('lodash');var squel=require(_0x27dc('0x9'));var crypto=require(_0x27dc('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x27dc('0xb'));var toCsv=require(_0x27dc('0x7'));var querystring=require(_0x27dc('0xc'));var Papa=require(_0x27dc('0xd'));var Redis=require('ioredis');var authService=require(_0x27dc('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x27dc('0xf'));var hardwareService=require(_0x27dc('0x10'));var logger=require(_0x27dc('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x27dc('0x12'));var licenseUtil=require(_0x27dc('0x13'));var db=require(_0x27dc('0x14'))['db'];function respondWithStatusCode(_0x1c7a9e,_0x4d8afd){_0x4d8afd=_0x4d8afd||0xcc;return function(_0x2d7799){if(_0x2d7799){return _0x1c7a9e['sendStatus'](_0x4d8afd);}return _0x1c7a9e[_0x27dc('0x15')](_0x4d8afd)['end']();};}function respondWithResult(_0x1282f2,_0x22d9ac){_0x22d9ac=_0x22d9ac||0xc8;return function(_0x7972d8){if(_0x7972d8){return _0x1282f2[_0x27dc('0x15')](_0x22d9ac)['json'](_0x7972d8);}};}function respondWithFilteredResult(_0x110316,_0x1bd473){return function(_0x798f50){if(_0x798f50){var _0x4193f9=typeof _0x1bd473[_0x27dc('0x16')]==='undefined'&&typeof _0x1bd473[_0x27dc('0x17')]===_0x27dc('0x18');var _0x21f537=_0x798f50[_0x27dc('0x19')];var _0x5d308b=_0x4193f9?0x0:_0x1bd473[_0x27dc('0x16')];var _0x1ff9a2=_0x4193f9?_0x798f50[_0x27dc('0x19')]:_0x1bd473[_0x27dc('0x16')]+_0x1bd473[_0x27dc('0x17')];var _0x3dcfca;if(_0x1ff9a2>=_0x21f537){_0x1ff9a2=_0x21f537;_0x3dcfca=0xc8;}else{_0x3dcfca=0xce;}_0x110316[_0x27dc('0x15')](_0x3dcfca);return _0x110316[_0x27dc('0x1a')](_0x27dc('0x1b'),_0x5d308b+'-'+_0x1ff9a2+'/'+_0x21f537)[_0x27dc('0x1c')](_0x798f50);}return null;};}function patchUpdates(_0x5064d5){return function(_0x3b9afc){try{jsonpatch[_0x27dc('0x1d')](_0x3b9afc,_0x5064d5,!![]);}catch(_0x4bb946){return BPromise[_0x27dc('0x1e')](_0x4bb946);}return _0x3b9afc['save']();};}function saveUpdates(_0x5c0fca,_0x2843b1){return function(_0x4eddfe){if(_0x4eddfe){return _0x4eddfe[_0x27dc('0x1f')](_0x5c0fca)['then'](function(_0x4a7d2a){return _0x4a7d2a;});}return null;};}function removeEntity(_0x14fa88,_0x4a9da0){return function(_0x37917e){if(_0x37917e){return _0x37917e['destroy']()[_0x27dc('0x20')](function(){var _0x1eb83d=_0x37917e[_0x27dc('0x21')]({'plain':!![]});var _0x19db16='ChanSpies';return db[_0x27dc('0x22')]['destroy']({'where':{'type':_0x19db16,'resourceId':_0x1eb83d['id']}})['then'](function(){return _0x37917e;});})[_0x27dc('0x20')](function(){_0x14fa88[_0x27dc('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x449610,_0xfe5817){return function(_0x2ac84c){if(!_0x2ac84c){_0x449610[_0x27dc('0x23')](0x194);}return _0x2ac84c;};}function handleError(_0x453dea,_0x548c23){_0x548c23=_0x548c23||0x1f4;return function(_0x76d54b){logger[_0x27dc('0x24')](_0x76d54b[_0x27dc('0x25')]);if(_0x76d54b[_0x27dc('0x26')]){delete _0x76d54b[_0x27dc('0x26')];}_0x453dea['status'](_0x548c23)[_0x27dc('0x27')](_0x76d54b);};}exports[_0x27dc('0x28')]=function(_0x4a2fe6,_0x14a8a1){var _0x2e837a={},_0x1ac11a={},_0xc4e71a={'count':0x0,'rows':[]};var _0x545918=_[_0x27dc('0x29')](db[_0x27dc('0x2a')][_0x27dc('0x2b')],function(_0x58fd4c){return{'name':_0x58fd4c[_0x27dc('0x2c')],'type':_0x58fd4c[_0x27dc('0x2d')][_0x27dc('0x2e')]};});_0x1ac11a[_0x27dc('0x2f')]=_['map'](_0x545918,_0x27dc('0x26'));_0x1ac11a[_0x27dc('0x30')]=_[_0x27dc('0x31')](_0x4a2fe6['query']);_0x1ac11a[_0x27dc('0x32')]=_[_0x27dc('0x33')](_0x1ac11a[_0x27dc('0x2f')],_0x1ac11a[_0x27dc('0x30')]);_0x2e837a[_0x27dc('0x34')]=_['intersection'](_0x1ac11a[_0x27dc('0x2f')],qs[_0x27dc('0x35')](_0x4a2fe6[_0x27dc('0x30')][_0x27dc('0x35')]));_0x2e837a[_0x27dc('0x34')]=_0x2e837a['attributes']['length']?_0x2e837a[_0x27dc('0x34')]:_0x1ac11a[_0x27dc('0x2f')];if(!_0x4a2fe6[_0x27dc('0x30')][_0x27dc('0x36')]('nolimit')){_0x2e837a['limit']=qs[_0x27dc('0x17')](_0x4a2fe6[_0x27dc('0x30')][_0x27dc('0x17')]);_0x2e837a['offset']=qs[_0x27dc('0x16')](_0x4a2fe6['query'][_0x27dc('0x16')]);}_0x2e837a['order']=qs[_0x27dc('0x37')](_0x4a2fe6[_0x27dc('0x30')][_0x27dc('0x37')]);_0x2e837a[_0x27dc('0x38')]=qs[_0x27dc('0x32')](_[_0x27dc('0x39')](_0x4a2fe6[_0x27dc('0x30')],_0x1ac11a[_0x27dc('0x32')]),_0x545918);if(_0x4a2fe6['query'][_0x27dc('0x3a')]){_0x2e837a[_0x27dc('0x38')]=_['merge'](_0x2e837a[_0x27dc('0x38')],{'$or':_[_0x27dc('0x29')](_0x545918,function(_0x320044){if(_0x320044['type']!==_0x27dc('0x3b')){var _0x8ad900={};_0x8ad900[_0x320044[_0x27dc('0x26')]]={'$like':'%'+_0x4a2fe6[_0x27dc('0x30')]['filter']+'%'};return _0x8ad900;}})});}_0x2e837a=_[_0x27dc('0x3c')]({},_0x2e837a,_0x4a2fe6[_0x27dc('0x3d')]);var _0x306330={'where':_0x2e837a[_0x27dc('0x38')]};return db[_0x27dc('0x2a')][_0x27dc('0x19')](_0x306330)['then'](function(_0x5066b5){_0xc4e71a['count']=_0x5066b5;if(_0x4a2fe6[_0x27dc('0x30')][_0x27dc('0x3e')]){_0x2e837a[_0x27dc('0x3f')]=[{'all':!![]}];}return db[_0x27dc('0x2a')]['findAll'](_0x2e837a);})['then'](function(_0x725244){_0xc4e71a['rows']=_0x725244;return _0xc4e71a;})[_0x27dc('0x20')](respondWithFilteredResult(_0x14a8a1,_0x2e837a))[_0x27dc('0x40')](handleError(_0x14a8a1,null));};exports[_0x27dc('0x41')]=function(_0x509dc9,_0x322350){var _0x2441c2={'raw':![],'where':{'id':_0x509dc9[_0x27dc('0x42')]['id']}},_0x25cd9e={};_0x25cd9e['model']=_[_0x27dc('0x31')](db[_0x27dc('0x2a')]['rawAttributes']);_0x25cd9e[_0x27dc('0x30')]=_[_0x27dc('0x31')](_0x509dc9[_0x27dc('0x30')]);_0x25cd9e[_0x27dc('0x32')]=_[_0x27dc('0x33')](_0x25cd9e[_0x27dc('0x2f')],_0x25cd9e[_0x27dc('0x30')]);_0x2441c2[_0x27dc('0x34')]=_[_0x27dc('0x33')](_0x25cd9e['model'],qs[_0x27dc('0x35')](_0x509dc9['query'][_0x27dc('0x35')]));_0x2441c2[_0x27dc('0x34')]=_0x2441c2[_0x27dc('0x34')][_0x27dc('0x43')]?_0x2441c2[_0x27dc('0x34')]:_0x25cd9e['model'];if(_0x509dc9[_0x27dc('0x30')][_0x27dc('0x3e')]){_0x2441c2[_0x27dc('0x3f')]=[{'all':!![]}];}_0x2441c2=_[_0x27dc('0x3c')]({},_0x2441c2,_0x509dc9[_0x27dc('0x3d')]);return db[_0x27dc('0x2a')][_0x27dc('0x44')](_0x2441c2)[_0x27dc('0x20')](handleEntityNotFound(_0x322350,null))[_0x27dc('0x20')](respondWithResult(_0x322350,null))['catch'](handleError(_0x322350,null));};exports['create']=function(_0x8db62d,_0x37517d){return db['VoiceChanSpy'][_0x27dc('0x45')](_0x8db62d[_0x27dc('0x46')],{})['then'](function(_0x4a828c){var _0x5bd8b6=_0x8db62d[_0x27dc('0x47')]['get']({'plain':!![]});if(!_0x5bd8b6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5bd8b6[_0x27dc('0x48')]===_0x27dc('0x47')){var _0x22f3df=_0x4a828c['get']({'plain':!![]});var _0x220ca3=_0x27dc('0x49');return db['UserProfileSection'][_0x27dc('0x44')]({'where':{'name':_0x220ca3,'userProfileId':_0x5bd8b6[_0x27dc('0x4a')]},'raw':!![]})['then'](function(_0x5a9d38){if(_0x5a9d38&&_0x5a9d38[_0x27dc('0x4b')]===0x0){return db[_0x27dc('0x22')][_0x27dc('0x45')]({'name':_0x22f3df[_0x27dc('0x26')],'resourceId':_0x22f3df['id'],'type':_0x5a9d38[_0x27dc('0x26')],'sectionId':_0x5a9d38['id']},{})['then'](function(){return _0x4a828c;});}else{return _0x4a828c;}})[_0x27dc('0x40')](function(_0x32143a){logger['error'](_0x27dc('0x4c'),_0x32143a);throw _0x32143a;});}return _0x4a828c;})[_0x27dc('0x20')](respondWithResult(_0x37517d,0xc9))['catch'](handleError(_0x37517d,null));};exports[_0x27dc('0x1f')]=function(_0x571f23,_0x32ee93){if(_0x571f23[_0x27dc('0x46')]['id']){delete _0x571f23['body']['id'];}return db[_0x27dc('0x2a')][_0x27dc('0x44')]({'where':{'id':_0x571f23[_0x27dc('0x42')]['id']}})[_0x27dc('0x20')](handleEntityNotFound(_0x32ee93,null))['then'](saveUpdates(_0x571f23['body'],null))[_0x27dc('0x20')](respondWithResult(_0x32ee93,null))[_0x27dc('0x40')](handleError(_0x32ee93,null));};exports['destroy']=function(_0x2736d6,_0x4b45ca){return db[_0x27dc('0x2a')][_0x27dc('0x44')]({'where':{'id':_0x2736d6['params']['id']}})[_0x27dc('0x20')](handleEntityNotFound(_0x4b45ca,null))[_0x27dc('0x20')](removeEntity(_0x4b45ca,null))[_0x27dc('0x40')](handleError(_0x4b45ca,null));};
\ No newline at end of file
+var _0x8e63=['update','then','destroy','get','ChanSpies','UserProfileResource','end','error','name','send','index','map','VoiceChanSpy','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save'];(function(_0x4d6955,_0x38b1fb){var _0x19c939=function(_0x15daab){while(--_0x15daab){_0x4d6955['push'](_0x4d6955['shift']());}};_0x19c939(++_0x38b1fb);}(_0x8e63,0x7c));var _0x38e6=function(_0x46c712,_0x445c71){_0x46c712=_0x46c712-0x0;var _0x5d877f=_0x8e63[_0x46c712];return _0x5d877f;};'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 hardwareService=require(_0x38e6('0xf'));var logger=require('../../config/logger')(_0x38e6('0x10'));var utils=require('../../config/utils');var config=require(_0x38e6('0x11'));var licenseUtil=require(_0x38e6('0x12'));var db=require(_0x38e6('0x13'))['db'];function respondWithStatusCode(_0x14d2cf,_0x2e2585){_0x2e2585=_0x2e2585||0xcc;return function(_0x57c207){if(_0x57c207){return _0x14d2cf[_0x38e6('0x14')](_0x2e2585);}return _0x14d2cf[_0x38e6('0x15')](_0x2e2585)['end']();};}function respondWithResult(_0x1fcdeb,_0xfd7f2){_0xfd7f2=_0xfd7f2||0xc8;return function(_0x229f18){if(_0x229f18){return _0x1fcdeb[_0x38e6('0x15')](_0xfd7f2)[_0x38e6('0x16')](_0x229f18);}};}function respondWithFilteredResult(_0x46b525,_0x55208f){return function(_0x279688){if(_0x279688){var _0x36a263=typeof _0x55208f[_0x38e6('0x17')]===_0x38e6('0x18')&&typeof _0x55208f[_0x38e6('0x19')]==='undefined';var _0x91997a=_0x279688['count'];var _0x800418=_0x36a263?0x0:_0x55208f[_0x38e6('0x17')];var _0x57ded4=_0x36a263?_0x279688[_0x38e6('0x1a')]:_0x55208f['offset']+_0x55208f[_0x38e6('0x19')];var _0x521453;if(_0x57ded4>=_0x91997a){_0x57ded4=_0x91997a;_0x521453=0xc8;}else{_0x521453=0xce;}_0x46b525[_0x38e6('0x15')](_0x521453);return _0x46b525[_0x38e6('0x1b')](_0x38e6('0x1c'),_0x800418+'-'+_0x57ded4+'/'+_0x91997a)[_0x38e6('0x16')](_0x279688);}return null;};}function patchUpdates(_0x3f1d54){return function(_0x41bb24){try{jsonpatch['apply'](_0x41bb24,_0x3f1d54,!![]);}catch(_0x5f3f67){return BPromise['reject'](_0x5f3f67);}return _0x41bb24[_0x38e6('0x1d')]();};}function saveUpdates(_0x58dc63,_0x4a82f6){return function(_0x2d995f){if(_0x2d995f){return _0x2d995f[_0x38e6('0x1e')](_0x58dc63)[_0x38e6('0x1f')](function(_0x2a8a11){return _0x2a8a11;});}return null;};}function removeEntity(_0x5f5ab2,_0x140fc3){return function(_0x4530a7){if(_0x4530a7){return _0x4530a7[_0x38e6('0x20')]()['then'](function(){var _0x832025=_0x4530a7[_0x38e6('0x21')]({'plain':!![]});var _0x24e3d6=_0x38e6('0x22');return db[_0x38e6('0x23')][_0x38e6('0x20')]({'where':{'type':_0x24e3d6,'resourceId':_0x832025['id']}})[_0x38e6('0x1f')](function(){return _0x4530a7;});})[_0x38e6('0x1f')](function(){_0x5f5ab2['status'](0xcc)[_0x38e6('0x24')]();});}};}function handleEntityNotFound(_0x491588,_0x23902b){return function(_0x4d2b24){if(!_0x4d2b24){_0x491588[_0x38e6('0x14')](0x194);}return _0x4d2b24;};}function handleError(_0x16ed33,_0x43f05f){_0x43f05f=_0x43f05f||0x1f4;return function(_0x1afc04){logger[_0x38e6('0x25')](_0x1afc04['stack']);if(_0x1afc04[_0x38e6('0x26')]){delete _0x1afc04[_0x38e6('0x26')];}_0x16ed33[_0x38e6('0x15')](_0x43f05f)[_0x38e6('0x27')](_0x1afc04);};}exports[_0x38e6('0x28')]=function(_0x526569,_0x468310){var _0x192893={},_0x39eafd={},_0x3ce1c2={'count':0x0,'rows':[]};var _0xe7489=_[_0x38e6('0x29')](db[_0x38e6('0x2a')]['rawAttributes'],function(_0x220c19){return{'name':_0x220c19[_0x38e6('0x2b')],'type':_0x220c19[_0x38e6('0x2c')][_0x38e6('0x2d')]};});_0x39eafd[_0x38e6('0x2e')]=_[_0x38e6('0x29')](_0xe7489,_0x38e6('0x26'));_0x39eafd['query']=_[_0x38e6('0x2f')](_0x526569[_0x38e6('0x30')]);_0x39eafd[_0x38e6('0x31')]=_[_0x38e6('0x32')](_0x39eafd[_0x38e6('0x2e')],_0x39eafd[_0x38e6('0x30')]);_0x192893[_0x38e6('0x33')]=_['intersection'](_0x39eafd[_0x38e6('0x2e')],qs[_0x38e6('0x34')](_0x526569[_0x38e6('0x30')][_0x38e6('0x34')]));_0x192893['attributes']=_0x192893[_0x38e6('0x33')][_0x38e6('0x35')]?_0x192893['attributes']:_0x39eafd[_0x38e6('0x2e')];if(!_0x526569[_0x38e6('0x30')][_0x38e6('0x36')](_0x38e6('0x37'))){_0x192893['limit']=qs[_0x38e6('0x19')](_0x526569[_0x38e6('0x30')][_0x38e6('0x19')]);_0x192893[_0x38e6('0x17')]=qs['offset'](_0x526569[_0x38e6('0x30')][_0x38e6('0x17')]);}_0x192893[_0x38e6('0x38')]=qs[_0x38e6('0x39')](_0x526569[_0x38e6('0x30')][_0x38e6('0x39')]);_0x192893[_0x38e6('0x3a')]=qs['filters'](_[_0x38e6('0x3b')](_0x526569[_0x38e6('0x30')],_0x39eafd['filters']),_0xe7489);if(_0x526569['query'][_0x38e6('0x3c')]){_0x192893[_0x38e6('0x3a')]=_[_0x38e6('0x3d')](_0x192893[_0x38e6('0x3a')],{'$or':_[_0x38e6('0x29')](_0xe7489,function(_0x2cb64c){if(_0x2cb64c[_0x38e6('0x2c')]!==_0x38e6('0x3e')){var _0x200c9e={};_0x200c9e[_0x2cb64c[_0x38e6('0x26')]]={'$like':'%'+_0x526569['query'][_0x38e6('0x3c')]+'%'};return _0x200c9e;}})});}_0x192893=_[_0x38e6('0x3d')]({},_0x192893,_0x526569[_0x38e6('0x3f')]);var _0xb486bb={'where':_0x192893[_0x38e6('0x3a')]};return db['VoiceChanSpy'][_0x38e6('0x1a')](_0xb486bb)['then'](function(_0x7a8077){_0x3ce1c2[_0x38e6('0x1a')]=_0x7a8077;if(_0x526569[_0x38e6('0x30')][_0x38e6('0x40')]){_0x192893[_0x38e6('0x41')]=[{'all':!![]}];}return db['VoiceChanSpy'][_0x38e6('0x42')](_0x192893);})[_0x38e6('0x1f')](function(_0x5f4ae3){_0x3ce1c2[_0x38e6('0x43')]=_0x5f4ae3;return _0x3ce1c2;})[_0x38e6('0x1f')](respondWithFilteredResult(_0x468310,_0x192893))[_0x38e6('0x44')](handleError(_0x468310,null));};exports['show']=function(_0x1904b5,_0x295e5c){var _0x49a021={'raw':![],'where':{'id':_0x1904b5[_0x38e6('0x45')]['id']}},_0x454d58={};_0x454d58[_0x38e6('0x2e')]=_[_0x38e6('0x2f')](db[_0x38e6('0x2a')]['rawAttributes']);_0x454d58[_0x38e6('0x30')]=_['keys'](_0x1904b5[_0x38e6('0x30')]);_0x454d58[_0x38e6('0x31')]=_['intersection'](_0x454d58[_0x38e6('0x2e')],_0x454d58[_0x38e6('0x30')]);_0x49a021['attributes']=_[_0x38e6('0x32')](_0x454d58[_0x38e6('0x2e')],qs[_0x38e6('0x34')](_0x1904b5['query'][_0x38e6('0x34')]));_0x49a021[_0x38e6('0x33')]=_0x49a021[_0x38e6('0x33')]['length']?_0x49a021['attributes']:_0x454d58[_0x38e6('0x2e')];if(_0x1904b5[_0x38e6('0x30')]['includeAll']){_0x49a021[_0x38e6('0x41')]=[{'all':!![]}];}_0x49a021=_[_0x38e6('0x3d')]({},_0x49a021,_0x1904b5[_0x38e6('0x3f')]);return db[_0x38e6('0x2a')][_0x38e6('0x46')](_0x49a021)[_0x38e6('0x1f')](handleEntityNotFound(_0x295e5c,null))[_0x38e6('0x1f')](respondWithResult(_0x295e5c,null))['catch'](handleError(_0x295e5c,null));};exports['create']=function(_0x447808,_0x5d1e7b){return db[_0x38e6('0x2a')][_0x38e6('0x47')](_0x447808['body'],{})['then'](function(_0x3ffa84){var _0x358baa=_0x447808['user'][_0x38e6('0x21')]({'plain':!![]});if(!_0x358baa)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x358baa['role']===_0x38e6('0x48')){var _0x432179=_0x3ffa84[_0x38e6('0x21')]({'plain':!![]});var _0x1b6291=_0x38e6('0x22');return db['UserProfileSection'][_0x38e6('0x46')]({'where':{'name':_0x1b6291,'userProfileId':_0x358baa[_0x38e6('0x49')]},'raw':!![]})[_0x38e6('0x1f')](function(_0x957a2a){if(_0x957a2a&&_0x957a2a[_0x38e6('0x4a')]===0x0){return db[_0x38e6('0x23')][_0x38e6('0x47')]({'name':_0x432179['name'],'resourceId':_0x432179['id'],'type':_0x957a2a['name'],'sectionId':_0x957a2a['id']},{})['then'](function(){return _0x3ffa84;});}else{return _0x3ffa84;}})[_0x38e6('0x44')](function(_0x3cdcbd){logger['error'](_0x38e6('0x4b'),_0x3cdcbd);throw _0x3cdcbd;});}return _0x3ffa84;})[_0x38e6('0x1f')](respondWithResult(_0x5d1e7b,0xc9))[_0x38e6('0x44')](handleError(_0x5d1e7b,null));};exports[_0x38e6('0x1e')]=function(_0x38590e,_0x34ab19){if(_0x38590e[_0x38e6('0x4c')]['id']){delete _0x38590e[_0x38e6('0x4c')]['id'];}return db[_0x38e6('0x2a')][_0x38e6('0x46')]({'where':{'id':_0x38590e['params']['id']}})[_0x38e6('0x1f')](handleEntityNotFound(_0x34ab19,null))[_0x38e6('0x1f')](saveUpdates(_0x38590e[_0x38e6('0x4c')],null))[_0x38e6('0x1f')](respondWithResult(_0x34ab19,null))[_0x38e6('0x44')](handleError(_0x34ab19,null));};exports[_0x38e6('0x20')]=function(_0x1175e0,_0x503418){return db[_0x38e6('0x2a')][_0x38e6('0x46')]({'where':{'id':_0x1175e0[_0x38e6('0x45')]['id']}})[_0x38e6('0x1f')](handleEntityNotFound(_0x503418,null))['then'](removeEntity(_0x503418,null))['catch'](handleError(_0x503418,null));};
\ No newline at end of file
index 5fe719e..cd7b01f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf5e=['util','bluebird','context','from-sip','format','%s%s','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','length','internal','agent','catch','exports','define','VoiceChanSpy','voice_chanspy','then','VoiceExtension','bulkCreate','destroy','lodash'];(function(_0x2452d0,_0x3cbf7b){var _0x3e1df3=function(_0x1d2b81){while(--_0x1d2b81){_0x2452d0['push'](_0x2452d0['shift']());}};_0x3e1df3(++_0x3cbf7b);}(_0xcf5e,0x15d));var _0xecf5=function(_0x368839,_0x5a5600){_0x368839=_0x368839-0x0;var _0x197d4d=_0xcf5e[_0x368839];return _0x197d4d;};'use strict';var _=require(_0xecf5('0x0'));var util=require(_0xecf5('0x1'));var BPromise=require(_0xecf5('0x2'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x202bda,_0x3f16ab,_0xd06711){var _0x4793c7=0x1;var _0x400613=[];var _0x39560f={'context':_0x3f16ab[_0xecf5('0x3')]||_0xecf5('0x4'),'exten':util[_0xecf5('0x5')](_0xecf5('0x6'),_0x202bda['prefix'],_0xd06711),'type':'system','isApp':![],'ChanSpyId':_0x202bda['id'],'UserId':_0x3f16ab['id']};_0x400613[_0xecf5('0x7')](_[_0xecf5('0x8')]({'app':_0xecf5('0x9'),'appdata':util[_0xecf5('0x5')](_0xecf5('0xa'),_0xecf5('0xb')),'priority':_0x4793c7++},_0x39560f));if(_0x202bda[_0xecf5('0xc')]){_0x400613[_0xecf5('0x7')](_['merge']({'app':_0xecf5('0xd'),'appdata':util[_0xecf5('0x5')]('${UNIQUEID}.%s,a',_0x202bda[_0xecf5('0xe')]),'priority':_0x4793c7++},_0x39560f));}if(_0x202bda[_0xecf5('0xf')]){_0x400613[_0xecf5('0x7')](_[_0xecf5('0x8')]({'app':_0xecf5('0x10'),'appdata':_0x202bda[_0xecf5('0x11')],'priority':_0x4793c7++},_0x39560f));}_0x400613[_0xecf5('0x7')](_[_0xecf5('0x8')]({'app':_0xecf5('0x12'),'appdata':util[_0xecf5('0x5')](_0xecf5('0x13'),_0x3f16ab[_0xecf5('0x14')],_0x202bda[_0xecf5('0x15')]?_0x202bda['options'][_0xecf5('0x16')](''):''),'priority':_0x4793c7++},_0x39560f));if(_0x202bda[_0xecf5('0xc')]){_0x400613[_0xecf5('0x7')](_[_0xecf5('0x8')]({'app':'StopMixMonitor','priority':_0x4793c7++},_0x39560f));}return _0x400613;};var getChanSpyApplications=function(_0x41b732,_0x492429){var _0x3d009a=[];for(var _0x2825d9=0x0,_0x4427bd=0x1;_0x2825d9<_0x492429[_0xecf5('0x17')];_0x2825d9++,_0x4427bd=0x1){_0x3d009a=_0x3d009a['concat'](getUserApplications(_0x41b732,_0x492429[_0x2825d9],_0x492429[_0x2825d9]['internal']));if(_0x492429[_0x2825d9][_0xecf5('0x18')]!=_0x492429[_0x2825d9][_0xecf5('0x14')]){_0x3d009a=_0x3d009a['concat'](getUserApplications(_0x41b732,_0x492429[_0x2825d9],_0x492429[_0x2825d9][_0xecf5('0x14')]));}}return _0x3d009a;};var getChanSpyPromise=function(_0x4e8ca9,_0xf8cce5){return new BPromise(function(_0x38c810,_0x5ddbea){return _0x4e8ca9['User']['findAll']({'attributes':['id','name',_0xecf5('0x18')],'where':{'role':_0xecf5('0x19'),'chanspy':!![]},'raw':!![]})['then'](function(_0x2fdf70){if(_0x2fdf70){return _0x38c810(getChanSpyApplications(_0xf8cce5,_0x2fdf70));}return _0x38c810([]);})[_0xecf5('0x1a')](function(_0x3f5f2d){_0x5ddbea(_0x3f5f2d);});});};module[_0xecf5('0x1b')]=function(_0x2202df,_0x1d8bf8){var _0xf0b2bc=_0x2202df['models'];return _0x2202df[_0xecf5('0x1c')](_0xecf5('0x1d'),attributes,{'tableName':_0xecf5('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x207919,_0x57ce20,_0x4b61ec){return getChanSpyPromise(_0xf0b2bc,_0x207919)[_0xecf5('0x1f')](function(_0x1f79a4){if(_0x1f79a4&&_0x1f79a4['length']){return _0xf0b2bc[_0xecf5('0x20')][_0xecf5('0x21')](_0x1f79a4);}})[_0xecf5('0x1f')](function(){_0x4b61ec();})['catch'](function(_0x29ef44){_0x4b61ec(_0x29ef44);});},'afterUpdate':function(_0x1b2e66,_0x391026,_0x455715){return _0xf0b2bc['VoiceExtension'][_0xecf5('0x22')]({'where':{'ChanSpyId':_0x1b2e66['id']}})[_0xecf5('0x1f')](function(){return getChanSpyPromise(_0xf0b2bc,_0x1b2e66);})[_0xecf5('0x1f')](function(_0x550dd4){if(_0x550dd4&&_0x550dd4['length']){return _0xf0b2bc['VoiceExtension'][_0xecf5('0x21')](_0x550dd4);}})[_0xecf5('0x1f')](function(){_0x455715();})[_0xecf5('0x1a')](function(_0x3b5ead){_0x455715(_0x3b5ead);});},'afterDestroy':function(_0x476410,_0x411b84,_0x507243){return _0xf0b2bc[_0xecf5('0x20')][_0xecf5('0x22')]({'where':{'ChanSpyId':_0x476410['id']}})[_0xecf5('0x1f')](function(){_0x507243();})['catch'](function(_0x4cf7b8){_0x507243(_0x4cf7b8);});}}});};
\ No newline at end of file
+var _0x865d=['format','%s%s','prefix','system','push','merge','Set','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','StopMixMonitor','length','concat','internal','findAll','agent','then','exports','define','VoiceChanSpy','voice_chanspy','VoiceExtension','catch','destroy','bulkCreate','lodash','util','./voiceChanSpy.attributes','from-sip'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x865d,0x1dd));var _0xd865=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0x865d[_0x36884e];return _0x1cc367;};'use strict';var _=require(_0xd865('0x0'));var util=require(_0xd865('0x1'));var BPromise=require('bluebird');var attributes=require(_0xd865('0x2'));var getUserApplications=function(_0x463c94,_0x2df279,_0x4292a6){var _0x3fb117=0x1;var _0x127cb0=[];var _0x3c915e={'context':_0x2df279['context']||_0xd865('0x3'),'exten':util[_0xd865('0x4')](_0xd865('0x5'),_0x463c94[_0xd865('0x6')],_0x4292a6),'type':_0xd865('0x7'),'isApp':![],'ChanSpyId':_0x463c94['id'],'UserId':_0x2df279['id']};_0x127cb0[_0xd865('0x8')](_[_0xd865('0x9')]({'app':_0xd865('0xa'),'appdata':util['format']('CDR(type)=%s',_0xd865('0xb')),'priority':_0x3fb117++},_0x3c915e));if(_0x463c94[_0xd865('0xc')]){_0x127cb0[_0xd865('0x8')](_[_0xd865('0x9')]({'app':_0xd865('0xd'),'appdata':util[_0xd865('0x4')](_0xd865('0xe'),_0x463c94[_0xd865('0xf')]),'priority':_0x3fb117++},_0x3c915e));}if(_0x463c94[_0xd865('0x10')]){_0x127cb0['push'](_[_0xd865('0x9')]({'app':_0xd865('0x11'),'appdata':_0x463c94[_0xd865('0x12')],'priority':_0x3fb117++},_0x3c915e));}_0x127cb0[_0xd865('0x8')](_[_0xd865('0x9')]({'app':_0xd865('0x13'),'appdata':util[_0xd865('0x4')]('SIP/%s,%s',_0x2df279[_0xd865('0x14')],_0x463c94[_0xd865('0x15')]?_0x463c94[_0xd865('0x15')]['join'](''):''),'priority':_0x3fb117++},_0x3c915e));if(_0x463c94['record']){_0x127cb0[_0xd865('0x8')](_['merge']({'app':_0xd865('0x16'),'priority':_0x3fb117++},_0x3c915e));}return _0x127cb0;};var getChanSpyApplications=function(_0x2e8f81,_0x9ed903){var _0xf3f114=[];for(var _0x1d1f93=0x0,_0x1c2710=0x1;_0x1d1f93<_0x9ed903[_0xd865('0x17')];_0x1d1f93++,_0x1c2710=0x1){_0xf3f114=_0xf3f114[_0xd865('0x18')](getUserApplications(_0x2e8f81,_0x9ed903[_0x1d1f93],_0x9ed903[_0x1d1f93][_0xd865('0x19')]));if(_0x9ed903[_0x1d1f93][_0xd865('0x19')]!=_0x9ed903[_0x1d1f93][_0xd865('0x14')]){_0xf3f114=_0xf3f114[_0xd865('0x18')](getUserApplications(_0x2e8f81,_0x9ed903[_0x1d1f93],_0x9ed903[_0x1d1f93]['name']));}}return _0xf3f114;};var getChanSpyPromise=function(_0x3bee1b,_0x4f7781){return new BPromise(function(_0x13645e,_0x53973e){return _0x3bee1b['User'][_0xd865('0x1a')]({'attributes':['id',_0xd865('0x14'),'internal'],'where':{'role':_0xd865('0x1b'),'chanspy':!![]},'raw':!![]})[_0xd865('0x1c')](function(_0x537f59){if(_0x537f59){return _0x13645e(getChanSpyApplications(_0x4f7781,_0x537f59));}return _0x13645e([]);})['catch'](function(_0x26e19b){_0x53973e(_0x26e19b);});});};module[_0xd865('0x1d')]=function(_0x28de86,_0x1f165f){var _0xba7f71=_0x28de86['models'];return _0x28de86[_0xd865('0x1e')](_0xd865('0x1f'),attributes,{'tableName':_0xd865('0x20'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x1c62cc,_0x1745f3,_0x27db2a){return getChanSpyPromise(_0xba7f71,_0x1c62cc)[_0xd865('0x1c')](function(_0xd2b687){if(_0xd2b687&&_0xd2b687[_0xd865('0x17')]){return _0xba7f71[_0xd865('0x21')]['bulkCreate'](_0xd2b687);}})[_0xd865('0x1c')](function(){_0x27db2a();})[_0xd865('0x22')](function(_0x4effbf){_0x27db2a(_0x4effbf);});},'afterUpdate':function(_0xa84fd,_0x41c7fc,_0x1ba81a){return _0xba7f71['VoiceExtension'][_0xd865('0x23')]({'where':{'ChanSpyId':_0xa84fd['id']}})[_0xd865('0x1c')](function(){return getChanSpyPromise(_0xba7f71,_0xa84fd);})[_0xd865('0x1c')](function(_0xc3e224){if(_0xc3e224&&_0xc3e224['length']){return _0xba7f71[_0xd865('0x21')][_0xd865('0x24')](_0xc3e224);}})[_0xd865('0x1c')](function(){_0x1ba81a();})[_0xd865('0x22')](function(_0x313752){_0x1ba81a(_0x313752);});},'afterDestroy':function(_0x103149,_0x54006d,_0xa2930f){return _0xba7f71['VoiceExtension'][_0xd865('0x23')]({'where':{'ChanSpyId':_0x103149['id']}})[_0xd865('0x1c')](function(){_0xa2930f();})[_0xd865('0x22')](function(_0x128be8){_0xa2930f(_0x128be8);});}}});};
\ No newline at end of file
index 9bd14f6..2ad9f2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x180f=['result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x218114,_0xd199db){var _0x1df243=function(_0x4fa727){while(--_0x4fa727){_0x218114['push'](_0x218114['shift']());}};_0x1df243(++_0xd199db);}(_0x180f,0xf3));var _0xf180=function(_0x329664,_0x130748){_0x329664=_0x329664-0x0;var _0x4e346e=_0x180f[_0x329664];return _0x4e346e;};'use strict';var _=require(_0xf180('0x0'));var util=require(_0xf180('0x1'));var moment=require('moment');var BPromise=require(_0xf180('0x2'));var rs=require(_0xf180('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf180('0x4'))['db'];var utils=require(_0xf180('0x5'));var logger=require(_0xf180('0x6'))(_0xf180('0x7'));var config=require(_0xf180('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf180('0x9')][_0xf180('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x513113,_0x47d87b,_0x1d6ca7){return new BPromise(function(_0x303412,_0x342a02){return client[_0xf180('0xb')](_0x513113,_0x1d6ca7)[_0xf180('0xc')](function(_0x4390be){logger[_0xf180('0xd')](_0xf180('0xe'),_0x47d87b,_0xf180('0xf'));logger['debug'](_0xf180('0x10'),_0x47d87b,_0xf180('0xf'),JSON[_0xf180('0x11')](_0x4390be));if(_0x4390be[_0xf180('0x12')]){if(_0x4390be[_0xf180('0x12')][_0xf180('0x13')]===0x1f4){logger[_0xf180('0x12')](_0xf180('0xe'),_0x47d87b,_0x4390be[_0xf180('0x12')][_0xf180('0x14')]);return _0x342a02(_0x4390be[_0xf180('0x12')]['message']);}logger[_0xf180('0x12')](_0xf180('0xe'),_0x47d87b,_0x4390be[_0xf180('0x12')][_0xf180('0x14')]);return _0x303412(_0x4390be['error'][_0xf180('0x14')]);}else{logger[_0xf180('0xd')](_0xf180('0xe'),_0x47d87b,'request\x20sent');_0x303412(_0x4390be[_0xf180('0x15')][_0xf180('0x14')]);}})['catch'](function(_0x115b86){logger[_0xf180('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0x47d87b,_0x115b86);_0x342a02(_0x115b86);});});}
\ No newline at end of file
+var _0x49e9=['stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s'];(function(_0x3a8a16,_0xe5423f){var _0x597621=function(_0x3bdef5){while(--_0x3bdef5){_0x3a8a16['push'](_0x3a8a16['shift']());}};_0x597621(++_0xe5423f);}(_0x49e9,0x10f));var _0x949e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x49e9[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x949e('0x0'));var util=require(_0x949e('0x1'));var moment=require('moment');var BPromise=require(_0x949e('0x2'));var rs=require(_0x949e('0x3'));var fs=require('fs');var Redis=require(_0x949e('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x949e('0x5'))('rpc');var config=require(_0x949e('0x6'));var jayson=require(_0x949e('0x7'));var client=jayson[_0x949e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17f649,_0x16c669,_0xfc4f8a){return new BPromise(function(_0x34ee57,_0x40d442){return client[_0x949e('0x9')](_0x17f649,_0xfc4f8a)[_0x949e('0xa')](function(_0x56e31d){logger[_0x949e('0xb')]('VoiceChanSpy,\x20%s,\x20%s',_0x16c669,_0x949e('0xc'));logger[_0x949e('0xd')](_0x949e('0xe'),_0x16c669,'request\x20sent',JSON[_0x949e('0xf')](_0x56e31d));if(_0x56e31d[_0x949e('0x10')]){if(_0x56e31d[_0x949e('0x10')][_0x949e('0x11')]===0x1f4){logger[_0x949e('0x10')](_0x949e('0x12'),_0x16c669,_0x56e31d[_0x949e('0x10')][_0x949e('0x13')]);return _0x40d442(_0x56e31d[_0x949e('0x10')][_0x949e('0x13')]);}logger[_0x949e('0x10')](_0x949e('0x12'),_0x16c669,_0x56e31d[_0x949e('0x10')][_0x949e('0x13')]);return _0x34ee57(_0x56e31d[_0x949e('0x10')]['message']);}else{logger[_0x949e('0xb')](_0x949e('0x12'),_0x16c669,_0x949e('0xc'));_0x34ee57(_0x56e31d[_0x949e('0x14')]['message']);}})[_0x949e('0x15')](function(_0x441b80){logger['error'](_0x949e('0x12'),_0x16c669,_0x441b80);_0x40d442(_0x441b80);});});}
\ No newline at end of file
index 8655b3c..f25bd81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd32=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer'];(function(_0x4fde59,_0x11ef4f){var _0x52cb48=function(_0x4cafc7){while(--_0x4cafc7){_0x4fde59['push'](_0x4fde59['shift']());}};_0x52cb48(++_0x11ef4f);}(_0xfd32,0x1cd));var _0x2fd3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd32[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2fd3('0x0'));var util=require(_0x2fd3('0x1'));var path=require('path');var timeout=require(_0x2fd3('0x2'));var express=require(_0x2fd3('0x3'));var router=express[_0x2fd3('0x4')]();var fs_extra=require(_0x2fd3('0x5'));var auth=require(_0x2fd3('0x6'));var interaction=require(_0x2fd3('0x7'));var config=require(_0x2fd3('0x8'));var controller=require(_0x2fd3('0x9'));router[_0x2fd3('0xa')]('/',auth[_0x2fd3('0xb')](),controller[_0x2fd3('0xc')]);router[_0x2fd3('0xa')](_0x2fd3('0xd'),auth[_0x2fd3('0xb')](),controller['show']);router[_0x2fd3('0xe')]('/',auth[_0x2fd3('0xb')](),controller[_0x2fd3('0xf')]);router[_0x2fd3('0x10')](_0x2fd3('0xd'),auth[_0x2fd3('0xb')](),controller[_0x2fd3('0x11')]);router[_0x2fd3('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x2fd3('0x13')]);module[_0x2fd3('0x14')]=router;
\ No newline at end of file
+var _0x8564=['destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceContext.controller','get','isAuthenticated','index','/:id','post','create','put','update'];(function(_0x3799bf,_0x937a88){var _0x633b0a=function(_0x192fc7){while(--_0x192fc7){_0x3799bf['push'](_0x3799bf['shift']());}};_0x633b0a(++_0x937a88);}(_0x8564,0x111));var _0x4856=function(_0x2832e1,_0xb10362){_0x2832e1=_0x2832e1-0x0;var _0x50028b=_0x8564[_0x2832e1];return _0x50028b;};'use strict';var multer=require(_0x4856('0x0'));var util=require(_0x4856('0x1'));var path=require(_0x4856('0x2'));var timeout=require(_0x4856('0x3'));var express=require('express');var router=express[_0x4856('0x4')]();var fs_extra=require(_0x4856('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4856('0x6'));var config=require('../../config/environment');var controller=require(_0x4856('0x7'));router[_0x4856('0x8')]('/',auth[_0x4856('0x9')](),controller[_0x4856('0xa')]);router['get'](_0x4856('0xb'),auth[_0x4856('0x9')](),controller['show']);router[_0x4856('0xc')]('/',auth[_0x4856('0x9')](),controller[_0x4856('0xd')]);router[_0x4856('0xe')](_0x4856('0xb'),auth[_0x4856('0x9')](),controller[_0x4856('0xf')]);router['delete'](_0x4856('0xb'),auth[_0x4856('0x9')](),controller[_0x4856('0x10')]);module['exports']=router;
\ No newline at end of file
index 7eb355e..dc1b9b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa660=['sequelize','exports'];(function(_0xa48b46,_0x2c5142){var _0x4322c4=function(_0xfea402){while(--_0xfea402){_0xa48b46['push'](_0xa48b46['shift']());}};_0x4322c4(++_0x2c5142);}(_0xa660,0xb4));var _0x0a66=function(_0x54b860,_0x4dabfc){_0x54b860=_0x54b860-0x0;var _0x5ea814=_0xa660[_0x54b860];return _0x5ea814;};'use strict';var Sequelize=require(_0x0a66('0x0'));module[_0x0a66('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xee37=['exports','STRING','BOOLEAN'];(function(_0xc298ad,_0xea4dc2){var _0x11b2e6=function(_0xe2314f){while(--_0xe2314f){_0xc298ad['push'](_0xc298ad['shift']());}};_0x11b2e6(++_0xea4dc2);}(_0xee37,0xf9));var _0x7ee3=function(_0x202d24,_0x5e8641){_0x202d24=_0x202d24-0x0;var _0x2b3a8e=_0xee37[_0x202d24];return _0x2b3a8e;};'use strict';var Sequelize=require('sequelize');module[_0x7ee3('0x0')]={'name':{'type':Sequelize[_0x7ee3('0x1')],'unique':'name'},'description':{'type':Sequelize[_0x7ee3('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x7ee3('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index a467963..b4efead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ff=['count','include','findAll','rows','show','includeAll','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Contexts','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','client','http','request','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','json','undefined','limit','offset','status','Content-Range','apply','reject','update','destroy','end','stack','name','index','map','VoiceContext','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','pick','filter','where','merge','type','VIRTUAL','options'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf0ff,0x80));var _0xff0f=function(_0x4699eb,_0x2a0684){_0x4699eb=_0x4699eb-0x0;var _0x2fd1fd=_0xf0ff[_0x4699eb];return _0x2fd1fd;};'use strict';var emlformat=require(_0xff0f('0x0'));var rimraf=require(_0xff0f('0x1'));var zipdir=require(_0xff0f('0x2'));var jsonpatch=require(_0xff0f('0x3'));var rp=require('request-promise');var moment=require(_0xff0f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xff0f('0x5'));var util=require(_0xff0f('0x6'));var path=require(_0xff0f('0x7'));var sox=require(_0xff0f('0x8'));var csv=require(_0xff0f('0x9'));var ejs=require(_0xff0f('0xa'));var fs=require('fs');var fs_extra=require(_0xff0f('0xb'));var _=require(_0xff0f('0xc'));var squel=require(_0xff0f('0xd'));var crypto=require(_0xff0f('0xe'));var jsforce=require(_0xff0f('0xf'));var deskjs=require(_0xff0f('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xff0f('0x11'));var Redis=require('ioredis');var authService=require(_0xff0f('0x12'));var qs=require(_0xff0f('0x13'));var as=require(_0xff0f('0x14'));var hardwareService=require(_0xff0f('0x15'));var logger=require(_0xff0f('0x16'))(_0xff0f('0x17'));var utils=require(_0xff0f('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xff0f('0x19'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xff0f('0x1a')][_0xff0f('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x1ee8ca,_0x281953,_0x389937,_0x1f83ba){return new BPromise(function(_0x58c0cb,_0x11397d){var _0x48506a=_0x1f83ba||client;return _0x48506a[_0xff0f('0x1c')](_0x1ee8ca,_0x389937)[_0xff0f('0x1d')](function(_0x2d2171){logger['info'](_0xff0f('0x1e'),_0x281953,_0xff0f('0x1f'));logger[_0xff0f('0x20')](_0xff0f('0x21'),_0x281953,_0xff0f('0x1f'),JSON[_0xff0f('0x22')](_0x2d2171));if(_0x2d2171[_0xff0f('0x23')]){if(_0x2d2171[_0xff0f('0x23')][_0xff0f('0x24')]===0x1f4){logger['error'](_0xff0f('0x1e'),_0x281953,_0x2d2171['error'][_0xff0f('0x25')]);return _0x11397d(_0x2d2171[_0xff0f('0x23')][_0xff0f('0x25')]);}logger['error'](_0xff0f('0x1e'),_0x281953,_0x2d2171[_0xff0f('0x23')][_0xff0f('0x25')]);return _0x58c0cb(_0x2d2171[_0xff0f('0x23')][_0xff0f('0x25')]);}else{logger['info'](_0xff0f('0x1e'),_0x281953,_0xff0f('0x1f'));_0x58c0cb(_0x2d2171['result'][_0xff0f('0x25')]);}})[_0xff0f('0x26')](function(_0x28ee94){logger[_0xff0f('0x23')](_0xff0f('0x1e'),_0x281953,_0x28ee94);_0x11397d(_0x28ee94);});});}function respondWithStatusCode(_0x1ff0d2,_0x2f391d){_0x2f391d=_0x2f391d||0xcc;return function(_0x44b90c){if(_0x44b90c){return _0x1ff0d2['sendStatus'](_0x2f391d);}return _0x1ff0d2['status'](_0x2f391d)['end']();};}function respondWithResult(_0x2854dd,_0x28492c){_0x28492c=_0x28492c||0xc8;return function(_0x803ed7){if(_0x803ed7){return _0x2854dd['status'](_0x28492c)[_0xff0f('0x27')](_0x803ed7);}};}function respondWithFilteredResult(_0x7c4258,_0x41bb23){return function(_0x30f44c){if(_0x30f44c){var _0x362b31=typeof _0x41bb23['offset']===_0xff0f('0x28')&&typeof _0x41bb23[_0xff0f('0x29')]==='undefined';var _0x399e89=_0x30f44c['count'];var _0xe00a4=_0x362b31?0x0:_0x41bb23['offset'];var _0x501214=_0x362b31?_0x30f44c['count']:_0x41bb23[_0xff0f('0x2a')]+_0x41bb23['limit'];var _0x54dd41;if(_0x501214>=_0x399e89){_0x501214=_0x399e89;_0x54dd41=0xc8;}else{_0x54dd41=0xce;}_0x7c4258[_0xff0f('0x2b')](_0x54dd41);return _0x7c4258['set'](_0xff0f('0x2c'),_0xe00a4+'-'+_0x501214+'/'+_0x399e89)[_0xff0f('0x27')](_0x30f44c);}return null;};}function patchUpdates(_0x285fd8){return function(_0x272214){try{jsonpatch[_0xff0f('0x2d')](_0x272214,_0x285fd8,!![]);}catch(_0x45f974){return BPromise[_0xff0f('0x2e')](_0x45f974);}return _0x272214['save']();};}function saveUpdates(_0x37a834,_0x7c8d0d){return function(_0x4166af){if(_0x4166af){return _0x4166af[_0xff0f('0x2f')](_0x37a834)[_0xff0f('0x1d')](function(_0x5252ac){return _0x5252ac;});}return null;};}function removeEntity(_0x1dfd46,_0x38a0d7){return function(_0x5e3ac9){if(_0x5e3ac9){return _0x5e3ac9[_0xff0f('0x30')]()[_0xff0f('0x1d')](function(){var _0x4d2d92=_0x5e3ac9['get']({'plain':!![]});var _0x23b002='Contexts';return db['UserProfileResource'][_0xff0f('0x30')]({'where':{'type':_0x23b002,'resourceId':_0x4d2d92['id']}})[_0xff0f('0x1d')](function(){return _0x5e3ac9;});})[_0xff0f('0x1d')](function(){_0x1dfd46[_0xff0f('0x2b')](0xcc)[_0xff0f('0x31')]();});}};}function handleEntityNotFound(_0x12eb97,_0x1fd420){return function(_0x36c5a1){if(!_0x36c5a1){_0x12eb97['sendStatus'](0x194);}return _0x36c5a1;};}function handleError(_0x2d4b13,_0x78fa8d){_0x78fa8d=_0x78fa8d||0x1f4;return function(_0x39c757){logger[_0xff0f('0x23')](_0x39c757[_0xff0f('0x32')]);if(_0x39c757['name']){delete _0x39c757[_0xff0f('0x33')];}_0x2d4b13[_0xff0f('0x2b')](_0x78fa8d)['send'](_0x39c757);};}exports[_0xff0f('0x34')]=function(_0x555fa5,_0x4842c2){var _0x968389={},_0x4a7f5a={},_0x30e949={'count':0x0,'rows':[]};var _0x575ac8=_[_0xff0f('0x35')](db[_0xff0f('0x36')][_0xff0f('0x37')],function(_0x4dd9b0){return{'name':_0x4dd9b0[_0xff0f('0x38')],'type':_0x4dd9b0['type'][_0xff0f('0x39')]};});_0x4a7f5a[_0xff0f('0x3a')]=_[_0xff0f('0x35')](_0x575ac8,'name');_0x4a7f5a[_0xff0f('0x3b')]=_[_0xff0f('0x3c')](_0x555fa5[_0xff0f('0x3b')]);_0x4a7f5a[_0xff0f('0x3d')]=_[_0xff0f('0x3e')](_0x4a7f5a[_0xff0f('0x3a')],_0x4a7f5a['query']);_0x968389[_0xff0f('0x3f')]=_[_0xff0f('0x3e')](_0x4a7f5a[_0xff0f('0x3a')],qs[_0xff0f('0x40')](_0x555fa5[_0xff0f('0x3b')]['fields']));_0x968389['attributes']=_0x968389['attributes'][_0xff0f('0x41')]?_0x968389[_0xff0f('0x3f')]:_0x4a7f5a[_0xff0f('0x3a')];if(!_0x555fa5['query']['hasOwnProperty'](_0xff0f('0x42'))){_0x968389['limit']=qs[_0xff0f('0x29')](_0x555fa5[_0xff0f('0x3b')][_0xff0f('0x29')]);_0x968389[_0xff0f('0x2a')]=qs[_0xff0f('0x2a')](_0x555fa5[_0xff0f('0x3b')][_0xff0f('0x2a')]);}_0x968389['order']=qs['sort'](_0x555fa5[_0xff0f('0x3b')]['sort']);_0x968389['where']=qs['filters'](_[_0xff0f('0x43')](_0x555fa5[_0xff0f('0x3b')],_0x4a7f5a[_0xff0f('0x3d')]),_0x575ac8);if(_0x555fa5[_0xff0f('0x3b')][_0xff0f('0x44')]){_0x968389[_0xff0f('0x45')]=_[_0xff0f('0x46')](_0x968389['where'],{'$or':_['map'](_0x575ac8,function(_0x108a5e){if(_0x108a5e[_0xff0f('0x47')]!==_0xff0f('0x48')){var _0x3f388e={};_0x3f388e[_0x108a5e[_0xff0f('0x33')]]={'$like':'%'+_0x555fa5[_0xff0f('0x3b')][_0xff0f('0x44')]+'%'};return _0x3f388e;}})});}_0x968389=_[_0xff0f('0x46')]({},_0x968389,_0x555fa5[_0xff0f('0x49')]);var _0x4a5b03={'where':_0x968389[_0xff0f('0x45')]};return db[_0xff0f('0x36')][_0xff0f('0x4a')](_0x4a5b03)[_0xff0f('0x1d')](function(_0x4bab3d){_0x30e949[_0xff0f('0x4a')]=_0x4bab3d;if(_0x555fa5[_0xff0f('0x3b')]['includeAll']){_0x968389[_0xff0f('0x4b')]=[{'all':!![]}];}return db[_0xff0f('0x36')][_0xff0f('0x4c')](_0x968389);})[_0xff0f('0x1d')](function(_0x452215){_0x30e949[_0xff0f('0x4d')]=_0x452215;return _0x30e949;})['then'](respondWithFilteredResult(_0x4842c2,_0x968389))[_0xff0f('0x26')](handleError(_0x4842c2,null));};exports[_0xff0f('0x4e')]=function(_0x5d4661,_0x12a151){var _0x1560bd={'raw':![],'where':{'id':_0x5d4661['params']['id']}},_0x1ad3ac={};_0x1ad3ac[_0xff0f('0x3a')]=_[_0xff0f('0x3c')](db['VoiceContext'][_0xff0f('0x37')]);_0x1ad3ac[_0xff0f('0x3b')]=_['keys'](_0x5d4661[_0xff0f('0x3b')]);_0x1ad3ac[_0xff0f('0x3d')]=_[_0xff0f('0x3e')](_0x1ad3ac[_0xff0f('0x3a')],_0x1ad3ac[_0xff0f('0x3b')]);_0x1560bd[_0xff0f('0x3f')]=_[_0xff0f('0x3e')](_0x1ad3ac[_0xff0f('0x3a')],qs['fields'](_0x5d4661['query'][_0xff0f('0x40')]));_0x1560bd[_0xff0f('0x3f')]=_0x1560bd['attributes'][_0xff0f('0x41')]?_0x1560bd[_0xff0f('0x3f')]:_0x1ad3ac[_0xff0f('0x3a')];if(_0x5d4661['query'][_0xff0f('0x4f')]){_0x1560bd[_0xff0f('0x4b')]=[{'all':!![]}];}_0x1560bd=_['merge']({},_0x1560bd,_0x5d4661[_0xff0f('0x49')]);return db[_0xff0f('0x36')][_0xff0f('0x50')](_0x1560bd)[_0xff0f('0x1d')](handleEntityNotFound(_0x12a151,null))[_0xff0f('0x1d')](respondWithResult(_0x12a151,null))[_0xff0f('0x26')](handleError(_0x12a151,null));};exports[_0xff0f('0x51')]=function(_0x577e87,_0x565b1f,_0x2e38fe){var _0x379d3c;return db[_0xff0f('0x36')][_0xff0f('0x51')](_0x577e87[_0xff0f('0x52')],{'raw':!![]})[_0xff0f('0x1d')](function(_0x433021){_0x379d3c=_0x433021;return db[_0xff0f('0x36')][_0xff0f('0x4c')]({'raw':!![]});})[_0xff0f('0x1d')](function(_0x55f21b){var _0xb9ba4e=fs[_0xff0f('0x53')](path[_0xff0f('0x54')](config[_0xff0f('0x55')],_0xff0f('0x56')),_0xff0f('0x57'));var _0x37fd7a=ejs[_0xff0f('0x58')](_0xb9ba4e,{'contexts':_0x55f21b||[]});fs[_0xff0f('0x59')](_0xff0f('0x5a'),_0x37fd7a);})[_0xff0f('0x1d')](function(){return respondWithRpcPromise(_0xff0f('0x5b'),_0xff0f('0x51'),{'module':_0xff0f('0x5c')});})[_0xff0f('0x1d')](function(){var _0x30776a=_0x577e87['user'][_0xff0f('0x5d')]({'plain':!![]});if(!_0x30776a)throw new Error(_0xff0f('0x5e'));if(_0x30776a['role']===_0xff0f('0x5f')){var _0x24bb1f=_0x379d3c[_0xff0f('0x5d')]({'plain':!![]});return db[_0xff0f('0x60')]['find']({'where':{'name':_0xff0f('0x61'),'userProfileId':_0x30776a[_0xff0f('0x62')]},'raw':!![]})[_0xff0f('0x1d')](function(_0x4b3db5){if(_0x4b3db5&&_0x4b3db5['autoAssociation']===0x0){return db[_0xff0f('0x63')][_0xff0f('0x51')]({'name':_0x24bb1f[_0xff0f('0x33')],'resourceId':_0x24bb1f['id'],'type':_0x4b3db5['name'],'sectionId':_0x4b3db5['id']},{})[_0xff0f('0x1d')](function(){return _0x379d3c;});}else{return _0x379d3c;}})['catch'](function(_0x265a04){logger[_0xff0f('0x23')](_0xff0f('0x64'),_0x265a04);throw _0x265a04;});}return _0x379d3c;})[_0xff0f('0x1d')](respondWithResult(_0x565b1f,0xc9))[_0xff0f('0x26')](handleError(_0x565b1f,null));};exports[_0xff0f('0x2f')]=function(_0x3b10a0,_0x27e984,_0x1f487f){var _0x2948ca;return db[_0xff0f('0x36')][_0xff0f('0x50')]({'where':{'id':_0x3b10a0['params']['id']}})[_0xff0f('0x1d')](handleEntityNotFound(_0x27e984,null))[_0xff0f('0x1d')](saveUpdates(_0x3b10a0['body'],null))['then'](function(_0x5a34a1){if(_0x5a34a1){_0x2948ca=_0x5a34a1;return db[_0xff0f('0x36')][_0xff0f('0x4c')]({'raw':!![]});}})[_0xff0f('0x1d')](function(_0x2a6304){var _0xecaef2=fs['readFileSync'](path[_0xff0f('0x54')](config['root'],_0xff0f('0x56')),'utf8');var _0x46de0c=ejs[_0xff0f('0x58')](_0xecaef2,{'contexts':_0x2a6304||[]});fs['writeFileSync'](_0xff0f('0x5a'),_0x46de0c);})[_0xff0f('0x1d')](function(){return respondWithRpcPromise(_0xff0f('0x5b'),_0xff0f('0x2f'),{'module':_0xff0f('0x5c')});})[_0xff0f('0x1d')](function(){return _0x2948ca;})[_0xff0f('0x1d')](respondWithResult(_0x27e984,null))['catch'](handleError(_0x27e984,null));};exports[_0xff0f('0x30')]=function(_0x44b908,_0x5a5b61,_0x1c97c6){var _0x260600;return db[_0xff0f('0x36')][_0xff0f('0x50')]({'where':{'id':_0x44b908['params']['id']}})[_0xff0f('0x1d')](handleEntityNotFound(_0x5a5b61,null))[_0xff0f('0x1d')](removeEntity(_0x5a5b61,null))[_0xff0f('0x1d')](function(){return db[_0xff0f('0x36')][_0xff0f('0x4c')]({'raw':!![]});})[_0xff0f('0x1d')](function(_0x37def5){var _0x442aa2=fs[_0xff0f('0x53')](path[_0xff0f('0x54')](config[_0xff0f('0x55')],_0xff0f('0x56')),_0xff0f('0x57'));var _0x3a3797=ejs['render'](_0x442aa2,{'contexts':_0x37def5});fs[_0xff0f('0x59')](_0xff0f('0x5a'),_0x3a3797);return respondWithRpcPromise(_0xff0f('0x5b'),_0xff0f('0x30'),{'module':_0xff0f('0x5c')});})[_0xff0f('0x26')](handleError(_0x5a5b61,null));};
\ No newline at end of file
+var _0x0a16=['sendStatus','status','end','offset','count','limit','json','apply','reject','get','destroy','stack','name','send','map','VoiceContext','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Contexts','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x246074,_0x9ac8e7){var _0x2f50b3=function(_0x44b171){while(--_0x44b171){_0x246074['push'](_0x246074['shift']());}};_0x2f50b3(++_0x9ac8e7);}(_0x0a16,0x10e));var _0x60a1=function(_0x566168,_0x4c39af){_0x566168=_0x566168-0x0;var _0x4e1f7a=_0x0a16[_0x566168];return _0x4e1f7a;};'use strict';var emlformat=require(_0x60a1('0x0'));var rimraf=require(_0x60a1('0x1'));var zipdir=require(_0x60a1('0x2'));var jsonpatch=require(_0x60a1('0x3'));var rp=require(_0x60a1('0x4'));var moment=require('moment');var BPromise=require(_0x60a1('0x5'));var Mustache=require(_0x60a1('0x6'));var util=require(_0x60a1('0x7'));var path=require(_0x60a1('0x8'));var sox=require(_0x60a1('0x9'));var csv=require(_0x60a1('0xa'));var ejs=require(_0x60a1('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x60a1('0xc'));var crypto=require(_0x60a1('0xd'));var jsforce=require(_0x60a1('0xe'));var deskjs=require(_0x60a1('0xf'));var toCsv=require(_0x60a1('0xa'));var querystring=require(_0x60a1('0x10'));var Papa=require('papaparse');var Redis=require(_0x60a1('0x11'));var authService=require(_0x60a1('0x12'));var qs=require(_0x60a1('0x13'));var as=require(_0x60a1('0x14'));var hardwareService=require(_0x60a1('0x15'));var logger=require(_0x60a1('0x16'))(_0x60a1('0x17'));var utils=require(_0x60a1('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x60a1('0x19'));var db=require(_0x60a1('0x1a'))['db'];var jayson=require(_0x60a1('0x1b'));var client=jayson[_0x60a1('0x1c')][_0x60a1('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x250b1a,_0x3f130f,_0x27672f,_0x116d3f){return new BPromise(function(_0x25d182,_0x590579){var _0xa51217=_0x116d3f||client;return _0xa51217[_0x60a1('0x1e')](_0x250b1a,_0x27672f)[_0x60a1('0x1f')](function(_0x2fbd9f){logger[_0x60a1('0x20')](_0x60a1('0x21'),_0x3f130f,_0x60a1('0x22'));logger[_0x60a1('0x23')](_0x60a1('0x24'),_0x3f130f,_0x60a1('0x22'),JSON['stringify'](_0x2fbd9f));if(_0x2fbd9f['error']){if(_0x2fbd9f[_0x60a1('0x25')]['code']===0x1f4){logger['error'](_0x60a1('0x21'),_0x3f130f,_0x2fbd9f[_0x60a1('0x25')][_0x60a1('0x26')]);return _0x590579(_0x2fbd9f[_0x60a1('0x25')][_0x60a1('0x26')]);}logger[_0x60a1('0x25')](_0x60a1('0x21'),_0x3f130f,_0x2fbd9f[_0x60a1('0x25')][_0x60a1('0x26')]);return _0x25d182(_0x2fbd9f['error'][_0x60a1('0x26')]);}else{logger[_0x60a1('0x20')](_0x60a1('0x21'),_0x3f130f,_0x60a1('0x22'));_0x25d182(_0x2fbd9f['result'][_0x60a1('0x26')]);}})['catch'](function(_0x36c572){logger[_0x60a1('0x25')](_0x60a1('0x21'),_0x3f130f,_0x36c572);_0x590579(_0x36c572);});});}function respondWithStatusCode(_0x5c6250,_0x54c275){_0x54c275=_0x54c275||0xcc;return function(_0x303c11){if(_0x303c11){return _0x5c6250[_0x60a1('0x27')](_0x54c275);}return _0x5c6250[_0x60a1('0x28')](_0x54c275)[_0x60a1('0x29')]();};}function respondWithResult(_0x98c791,_0x5f47b7){_0x5f47b7=_0x5f47b7||0xc8;return function(_0xdfa893){if(_0xdfa893){return _0x98c791['status'](_0x5f47b7)['json'](_0xdfa893);}};}function respondWithFilteredResult(_0x23a2f3,_0x11ce8b){return function(_0x509faa){if(_0x509faa){var _0x1e809c=typeof _0x11ce8b[_0x60a1('0x2a')]==='undefined'&&typeof _0x11ce8b['limit']==='undefined';var _0x5ca5ee=_0x509faa[_0x60a1('0x2b')];var _0x580109=_0x1e809c?0x0:_0x11ce8b[_0x60a1('0x2a')];var _0x1ae3bc=_0x1e809c?_0x509faa[_0x60a1('0x2b')]:_0x11ce8b['offset']+_0x11ce8b[_0x60a1('0x2c')];var _0x3a4477;if(_0x1ae3bc>=_0x5ca5ee){_0x1ae3bc=_0x5ca5ee;_0x3a4477=0xc8;}else{_0x3a4477=0xce;}_0x23a2f3[_0x60a1('0x28')](_0x3a4477);return _0x23a2f3['set']('Content-Range',_0x580109+'-'+_0x1ae3bc+'/'+_0x5ca5ee)[_0x60a1('0x2d')](_0x509faa);}return null;};}function patchUpdates(_0x30280c){return function(_0x3901b0){try{jsonpatch[_0x60a1('0x2e')](_0x3901b0,_0x30280c,!![]);}catch(_0x41d332){return BPromise[_0x60a1('0x2f')](_0x41d332);}return _0x3901b0['save']();};}function saveUpdates(_0x1f1931,_0x470728){return function(_0x1cbef5){if(_0x1cbef5){return _0x1cbef5['update'](_0x1f1931)[_0x60a1('0x1f')](function(_0x46717f){return _0x46717f;});}return null;};}function removeEntity(_0x4ba681,_0xeba554){return function(_0x157897){if(_0x157897){return _0x157897['destroy']()[_0x60a1('0x1f')](function(){var _0x471f81=_0x157897[_0x60a1('0x30')]({'plain':!![]});var _0x40dc3c='Contexts';return db['UserProfileResource'][_0x60a1('0x31')]({'where':{'type':_0x40dc3c,'resourceId':_0x471f81['id']}})[_0x60a1('0x1f')](function(){return _0x157897;});})[_0x60a1('0x1f')](function(){_0x4ba681[_0x60a1('0x28')](0xcc)[_0x60a1('0x29')]();});}};}function handleEntityNotFound(_0x42ae37,_0x27c19a){return function(_0x1c2b49){if(!_0x1c2b49){_0x42ae37[_0x60a1('0x27')](0x194);}return _0x1c2b49;};}function handleError(_0x2c3981,_0xbb141d){_0xbb141d=_0xbb141d||0x1f4;return function(_0x39d8f4){logger[_0x60a1('0x25')](_0x39d8f4[_0x60a1('0x32')]);if(_0x39d8f4['name']){delete _0x39d8f4[_0x60a1('0x33')];}_0x2c3981[_0x60a1('0x28')](_0xbb141d)[_0x60a1('0x34')](_0x39d8f4);};}exports['index']=function(_0x2a3f6d,_0x22216a){var _0x59e0bc={},_0x391d29={},_0x1c9093={'count':0x0,'rows':[]};var _0x40d6c4=_[_0x60a1('0x35')](db[_0x60a1('0x36')]['rawAttributes'],function(_0x5bebb1){return{'name':_0x5bebb1[_0x60a1('0x37')],'type':_0x5bebb1[_0x60a1('0x38')]['key']};});_0x391d29[_0x60a1('0x39')]=_['map'](_0x40d6c4,_0x60a1('0x33'));_0x391d29[_0x60a1('0x3a')]=_[_0x60a1('0x3b')](_0x2a3f6d[_0x60a1('0x3a')]);_0x391d29[_0x60a1('0x3c')]=_[_0x60a1('0x3d')](_0x391d29[_0x60a1('0x39')],_0x391d29['query']);_0x59e0bc[_0x60a1('0x3e')]=_[_0x60a1('0x3d')](_0x391d29[_0x60a1('0x39')],qs['fields'](_0x2a3f6d[_0x60a1('0x3a')][_0x60a1('0x3f')]));_0x59e0bc[_0x60a1('0x3e')]=_0x59e0bc[_0x60a1('0x3e')][_0x60a1('0x40')]?_0x59e0bc[_0x60a1('0x3e')]:_0x391d29[_0x60a1('0x39')];if(!_0x2a3f6d[_0x60a1('0x3a')]['hasOwnProperty'](_0x60a1('0x41'))){_0x59e0bc[_0x60a1('0x2c')]=qs[_0x60a1('0x2c')](_0x2a3f6d['query'][_0x60a1('0x2c')]);_0x59e0bc[_0x60a1('0x2a')]=qs['offset'](_0x2a3f6d[_0x60a1('0x3a')][_0x60a1('0x2a')]);}_0x59e0bc['order']=qs[_0x60a1('0x42')](_0x2a3f6d[_0x60a1('0x3a')]['sort']);_0x59e0bc[_0x60a1('0x43')]=qs[_0x60a1('0x3c')](_[_0x60a1('0x44')](_0x2a3f6d[_0x60a1('0x3a')],_0x391d29['filters']),_0x40d6c4);if(_0x2a3f6d['query'][_0x60a1('0x45')]){_0x59e0bc[_0x60a1('0x43')]=_[_0x60a1('0x46')](_0x59e0bc['where'],{'$or':_[_0x60a1('0x35')](_0x40d6c4,function(_0x2cee25){if(_0x2cee25[_0x60a1('0x38')]!==_0x60a1('0x47')){var _0x1936ad={};_0x1936ad[_0x2cee25[_0x60a1('0x33')]]={'$like':'%'+_0x2a3f6d[_0x60a1('0x3a')][_0x60a1('0x45')]+'%'};return _0x1936ad;}})});}_0x59e0bc=_[_0x60a1('0x46')]({},_0x59e0bc,_0x2a3f6d[_0x60a1('0x48')]);var _0x3b19fd={'where':_0x59e0bc[_0x60a1('0x43')]};return db[_0x60a1('0x36')][_0x60a1('0x2b')](_0x3b19fd)[_0x60a1('0x1f')](function(_0x369a90){_0x1c9093[_0x60a1('0x2b')]=_0x369a90;if(_0x2a3f6d['query'][_0x60a1('0x49')]){_0x59e0bc['include']=[{'all':!![]}];}return db[_0x60a1('0x36')][_0x60a1('0x4a')](_0x59e0bc);})['then'](function(_0x3deb87){_0x1c9093[_0x60a1('0x4b')]=_0x3deb87;return _0x1c9093;})[_0x60a1('0x1f')](respondWithFilteredResult(_0x22216a,_0x59e0bc))['catch'](handleError(_0x22216a,null));};exports[_0x60a1('0x4c')]=function(_0x55c032,_0x3aea1e){var _0x59ff87={'raw':![],'where':{'id':_0x55c032[_0x60a1('0x4d')]['id']}},_0x2d10d2={};_0x2d10d2[_0x60a1('0x39')]=_[_0x60a1('0x3b')](db[_0x60a1('0x36')]['rawAttributes']);_0x2d10d2[_0x60a1('0x3a')]=_[_0x60a1('0x3b')](_0x55c032['query']);_0x2d10d2['filters']=_[_0x60a1('0x3d')](_0x2d10d2[_0x60a1('0x39')],_0x2d10d2[_0x60a1('0x3a')]);_0x59ff87['attributes']=_[_0x60a1('0x3d')](_0x2d10d2['model'],qs[_0x60a1('0x3f')](_0x55c032[_0x60a1('0x3a')][_0x60a1('0x3f')]));_0x59ff87['attributes']=_0x59ff87[_0x60a1('0x3e')][_0x60a1('0x40')]?_0x59ff87[_0x60a1('0x3e')]:_0x2d10d2['model'];if(_0x55c032[_0x60a1('0x3a')][_0x60a1('0x49')]){_0x59ff87[_0x60a1('0x4e')]=[{'all':!![]}];}_0x59ff87=_['merge']({},_0x59ff87,_0x55c032[_0x60a1('0x48')]);return db['VoiceContext'][_0x60a1('0x4f')](_0x59ff87)['then'](handleEntityNotFound(_0x3aea1e,null))['then'](respondWithResult(_0x3aea1e,null))[_0x60a1('0x50')](handleError(_0x3aea1e,null));};exports[_0x60a1('0x51')]=function(_0xf89828,_0x111302,_0x25c7a3){var _0x23284c;return db['VoiceContext'][_0x60a1('0x51')](_0xf89828[_0x60a1('0x52')],{'raw':!![]})[_0x60a1('0x1f')](function(_0x17b0f7){_0x23284c=_0x17b0f7;return db[_0x60a1('0x36')][_0x60a1('0x4a')]({'raw':!![]});})['then'](function(_0x3f6de3){var _0x16f255=fs[_0x60a1('0x53')](path[_0x60a1('0x54')](config[_0x60a1('0x55')],_0x60a1('0x56')),_0x60a1('0x57'));var _0x438946=ejs[_0x60a1('0x58')](_0x16f255,{'contexts':_0x3f6de3||[]});fs[_0x60a1('0x59')](_0x60a1('0x5a'),_0x438946);})[_0x60a1('0x1f')](function(){return respondWithRpcPromise(_0x60a1('0x5b'),_0x60a1('0x51'),{'module':_0x60a1('0x5c')});})['then'](function(){var _0x4f62f0=_0xf89828[_0x60a1('0x5d')]['get']({'plain':!![]});if(!_0x4f62f0)throw new Error(_0x60a1('0x5e'));if(_0x4f62f0[_0x60a1('0x5f')]==='user'){var _0x1cc9fb=_0x23284c[_0x60a1('0x30')]({'plain':!![]});return db[_0x60a1('0x60')]['find']({'where':{'name':_0x60a1('0x61'),'userProfileId':_0x4f62f0[_0x60a1('0x62')]},'raw':!![]})[_0x60a1('0x1f')](function(_0x20d8cd){if(_0x20d8cd&&_0x20d8cd[_0x60a1('0x63')]===0x0){return db[_0x60a1('0x64')]['create']({'name':_0x1cc9fb[_0x60a1('0x33')],'resourceId':_0x1cc9fb['id'],'type':_0x20d8cd[_0x60a1('0x33')],'sectionId':_0x20d8cd['id']},{})[_0x60a1('0x1f')](function(){return _0x23284c;});}else{return _0x23284c;}})[_0x60a1('0x50')](function(_0x9b2889){logger[_0x60a1('0x25')](_0x60a1('0x65'),_0x9b2889);throw _0x9b2889;});}return _0x23284c;})['then'](respondWithResult(_0x111302,0xc9))[_0x60a1('0x50')](handleError(_0x111302,null));};exports[_0x60a1('0x66')]=function(_0x11d771,_0x5c2c26,_0x312b1e){var _0x36d1cc;return db[_0x60a1('0x36')][_0x60a1('0x4f')]({'where':{'id':_0x11d771[_0x60a1('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5c2c26,null))[_0x60a1('0x1f')](saveUpdates(_0x11d771[_0x60a1('0x52')],null))['then'](function(_0x289205){if(_0x289205){_0x36d1cc=_0x289205;return db[_0x60a1('0x36')][_0x60a1('0x4a')]({'raw':!![]});}})[_0x60a1('0x1f')](function(_0x2aa4a9){var _0x3f7a69=fs[_0x60a1('0x53')](path[_0x60a1('0x54')](config['root'],_0x60a1('0x56')),_0x60a1('0x57'));var _0x5695e9=ejs[_0x60a1('0x58')](_0x3f7a69,{'contexts':_0x2aa4a9||[]});fs[_0x60a1('0x59')](_0x60a1('0x5a'),_0x5695e9);})['then'](function(){return respondWithRpcPromise('Reload',_0x60a1('0x66'),{'module':_0x60a1('0x5c')});})[_0x60a1('0x1f')](function(){return _0x36d1cc;})[_0x60a1('0x1f')](respondWithResult(_0x5c2c26,null))['catch'](handleError(_0x5c2c26,null));};exports[_0x60a1('0x31')]=function(_0x20f7f3,_0x1b6b06,_0xffcf93){var _0x16f0fd;return db['VoiceContext'][_0x60a1('0x4f')]({'where':{'id':_0x20f7f3[_0x60a1('0x4d')]['id']}})[_0x60a1('0x1f')](handleEntityNotFound(_0x1b6b06,null))[_0x60a1('0x1f')](removeEntity(_0x1b6b06,null))[_0x60a1('0x1f')](function(){return db[_0x60a1('0x36')][_0x60a1('0x4a')]({'raw':!![]});})['then'](function(_0xd2c6ed){var _0x591fbe=fs[_0x60a1('0x53')](path['join'](config[_0x60a1('0x55')],_0x60a1('0x56')),_0x60a1('0x57'));var _0x29ae11=ejs[_0x60a1('0x58')](_0x591fbe,{'contexts':_0xd2c6ed});fs[_0x60a1('0x59')](_0x60a1('0x5a'),_0x29ae11);return respondWithRpcPromise('Reload',_0x60a1('0x31'),{'module':'chan_sip.so'});})['catch'](handleError(_0x1b6b06,null));};
\ No newline at end of file
index 9ee2c75..e6041e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af1=['bluebird','request-promise','path','rimraf','../../config/environment','exports','voice_contexts','lodash','util','../../config/logger','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1af1,0x133));var _0x11af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1af1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x11af('0x0'));var util=require(_0x11af('0x1'));var logger=require(_0x11af('0x2'))(_0x11af('0x3'));var moment=require(_0x11af('0x4'));var BPromise=require(_0x11af('0x5'));var rp=require(_0x11af('0x6'));var fs=require('fs');var path=require(_0x11af('0x7'));var rimraf=require(_0x11af('0x8'));var config=require(_0x11af('0x9'));var attributes=require('./voiceContext.attributes');module[_0x11af('0xa')]=function(_0x5457d8,_0x1418eb){return _0x5457d8['define']('VoiceContext',attributes,{'tableName':_0x11af('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8c84=['../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts','lodash','util','api','bluebird','request-promise','path','rimraf'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0x8c84,0xc9));var _0x48c8=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x8c84[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x48c8('0x0'));var util=require(_0x48c8('0x1'));var logger=require('../../config/logger')(_0x48c8('0x2'));var moment=require('moment');var BPromise=require(_0x48c8('0x3'));var rp=require(_0x48c8('0x4'));var fs=require('fs');var path=require(_0x48c8('0x5'));var rimraf=require(_0x48c8('0x6'));var config=require(_0x48c8('0x7'));var attributes=require(_0x48c8('0x8'));module[_0x48c8('0x9')]=function(_0x246549,_0x4889fe){return _0x246549[_0x48c8('0xa')](_0x48c8('0xb'),attributes,{'tableName':_0x48c8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index afe9c2d..6993164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ed=['client','request','then','info','VoiceContext,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../config/utils','../../config/environment'];(function(_0xdb7eb4,_0x36875a){var _0x27f8a7=function(_0x46dbcb){while(--_0x46dbcb){_0xdb7eb4['push'](_0xdb7eb4['shift']());}};_0x27f8a7(++_0x36875a);}(_0xf6ed,0x1ce));var _0xdf6e=function(_0x548864,_0x11b9a6){_0x548864=_0x548864-0x0;var _0x5b80ad=_0xf6ed[_0x548864];return _0x5b80ad;};'use strict';var _=require(_0xdf6e('0x0'));var util=require('util');var moment=require(_0xdf6e('0x1'));var BPromise=require(_0xdf6e('0x2'));var rs=require(_0xdf6e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xdf6e('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xdf6e('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xdf6e('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1efa53,_0x3da81f,_0x8bab31){return new BPromise(function(_0x2a8802,_0x5c8cef){return client[_0xdf6e('0x7')](_0x1efa53,_0x8bab31)[_0xdf6e('0x8')](function(_0x230c95){logger[_0xdf6e('0x9')](_0xdf6e('0xa'),_0x3da81f,'request\x20sent');logger[_0xdf6e('0xb')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x3da81f,_0xdf6e('0xc'),JSON['stringify'](_0x230c95));if(_0x230c95[_0xdf6e('0xd')]){if(_0x230c95['error'][_0xdf6e('0xe')]===0x1f4){logger[_0xdf6e('0xd')]('VoiceContext,\x20%s,\x20%s',_0x3da81f,_0x230c95[_0xdf6e('0xd')][_0xdf6e('0xf')]);return _0x5c8cef(_0x230c95[_0xdf6e('0xd')][_0xdf6e('0xf')]);}logger[_0xdf6e('0xd')](_0xdf6e('0xa'),_0x3da81f,_0x230c95['error'][_0xdf6e('0xf')]);return _0x2a8802(_0x230c95['error'][_0xdf6e('0xf')]);}else{logger[_0xdf6e('0x9')](_0xdf6e('0xa'),_0x3da81f,_0xdf6e('0xc'));_0x2a8802(_0x230c95[_0xdf6e('0x10')][_0xdf6e('0xf')]);}})[_0xdf6e('0x11')](function(_0x495aed){logger[_0xdf6e('0xd')]('VoiceContext,\x20%s,\x20%s',_0x3da81f,_0x495aed);_0x5c8cef(_0x495aed);});});}
\ No newline at end of file
+var _0x2ed4=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x1a479b,_0x3b99c8){var _0x3d9e3e=function(_0x1ee012){while(--_0x1ee012){_0x1a479b['push'](_0x1a479b['shift']());}};_0x3d9e3e(++_0x3b99c8);}(_0x2ed4,0xe6));var _0x42ed=function(_0x53b53e,_0x498437){_0x53b53e=_0x53b53e-0x0;var _0xbb6179=_0x2ed4[_0x53b53e];return _0xbb6179;};'use strict';var _=require(_0x42ed('0x0'));var util=require(_0x42ed('0x1'));var moment=require(_0x42ed('0x2'));var BPromise=require(_0x42ed('0x3'));var rs=require(_0x42ed('0x4'));var fs=require('fs');var Redis=require(_0x42ed('0x5'));var db=require(_0x42ed('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x42ed('0x7'))(_0x42ed('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x42ed('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2549f8,_0x5e8b58,_0x50983c){return new BPromise(function(_0x2c19ab,_0x4ef196){return client[_0x42ed('0xa')](_0x2549f8,_0x50983c)[_0x42ed('0xb')](function(_0x339d0d){logger[_0x42ed('0xc')](_0x42ed('0xd'),_0x5e8b58,_0x42ed('0xe'));logger[_0x42ed('0xf')](_0x42ed('0x10'),_0x5e8b58,'request\x20sent',JSON[_0x42ed('0x11')](_0x339d0d));if(_0x339d0d[_0x42ed('0x12')]){if(_0x339d0d[_0x42ed('0x12')][_0x42ed('0x13')]===0x1f4){logger[_0x42ed('0x12')](_0x42ed('0xd'),_0x5e8b58,_0x339d0d[_0x42ed('0x12')]['message']);return _0x4ef196(_0x339d0d['error'][_0x42ed('0x14')]);}logger['error'](_0x42ed('0xd'),_0x5e8b58,_0x339d0d[_0x42ed('0x12')][_0x42ed('0x14')]);return _0x2c19ab(_0x339d0d[_0x42ed('0x12')][_0x42ed('0x14')]);}else{logger[_0x42ed('0xc')](_0x42ed('0xd'),_0x5e8b58,_0x42ed('0xe'));_0x2c19ab(_0x339d0d[_0x42ed('0x15')][_0x42ed('0x14')]);}})[_0x42ed('0x16')](function(_0x17788d){logger[_0x42ed('0x12')](_0x42ed('0xd'),_0x5e8b58,_0x17788d);_0x4ef196(_0x17788d);});});}
\ No newline at end of file
index 744e2ec..33a7716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07f5=['../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','index','get','/describe','/:id','show','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0xd7bce7,_0xb45c7f){var _0x465044=function(_0x4a610b){while(--_0x4a610b){_0xd7bce7['push'](_0xd7bce7['shift']());}};_0x465044(++_0xb45c7f);}(_0x07f5,0xc1));var _0x507f=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0x07f5[_0x54d4fe];return _0x1ab5bb;};'use strict';var multer=require(_0x507f('0x0'));var util=require(_0x507f('0x1'));var path=require(_0x507f('0x2'));var timeout=require(_0x507f('0x3'));var express=require(_0x507f('0x4'));var router=express[_0x507f('0x5')]();var fs_extra=require(_0x507f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x507f('0x7'));var config=require(_0x507f('0x8'));var controller=require(_0x507f('0x9'));router['get']('/',auth[_0x507f('0xa')](),controller[_0x507f('0xb')]);router[_0x507f('0xc')](_0x507f('0xd'),auth[_0x507f('0xa')](),controller['describe']);router[_0x507f('0xc')](_0x507f('0xe'),auth[_0x507f('0xa')](),controller[_0x507f('0xf')]);router['post']('/',auth[_0x507f('0xa')](),controller['create']);router[_0x507f('0x10')]('/:id',auth[_0x507f('0xa')](),controller['update']);router[_0x507f('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x507f('0x12')]);module[_0x507f('0x13')]=router;
\ No newline at end of file
+var _0xd4a0=['multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','post','put','update','destroy'];(function(_0x953c49,_0x1bc21d){var _0x368b77=function(_0x8619e0){while(--_0x8619e0){_0x953c49['push'](_0x953c49['shift']());}};_0x368b77(++_0x1bc21d);}(_0xd4a0,0x187));var _0x0d4a=function(_0x556df5,_0x2574ed){_0x556df5=_0x556df5-0x0;var _0x176b35=_0xd4a0[_0x556df5];return _0x176b35;};'use strict';var multer=require(_0x0d4a('0x0'));var util=require(_0x0d4a('0x1'));var path=require(_0x0d4a('0x2'));var timeout=require(_0x0d4a('0x3'));var express=require('express');var router=express[_0x0d4a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0d4a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0d4a('0x6'));var controller=require('./voiceDialReport.controller');router[_0x0d4a('0x7')]('/',auth[_0x0d4a('0x8')](),controller[_0x0d4a('0x9')]);router[_0x0d4a('0x7')](_0x0d4a('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0d4a('0x7')](_0x0d4a('0xb'),auth[_0x0d4a('0x8')](),controller[_0x0d4a('0xc')]);router[_0x0d4a('0xd')]('/',auth[_0x0d4a('0x8')](),controller['create']);router[_0x0d4a('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x0d4a('0xf')]);router['delete']('/:id',auth[_0x0d4a('0x8')](),controller[_0x0d4a('0x10')]);module['exports']=router;
\ No newline at end of file
index 400444b..6c78d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['STRING','INTEGER','DATE','exports'];(function(_0x2142f9,_0x41fe98){var _0xaec647=function(_0xab555e){while(--_0xab555e){_0x2142f9['push'](_0x2142f9['shift']());}};_0xaec647(++_0x41fe98);}(_0xe5b3,0x133));var _0x3e5b=function(_0x406720,_0x4502fc){_0x406720=_0x406720-0x0;var _0x3c0262=_0xe5b3[_0x406720];return _0x3c0262;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'privilege':{'type':Sequelize[_0x3e5b('0x1')]},'channel':{'type':Sequelize[_0x3e5b('0x1')]},'channelstate':{'type':Sequelize[_0x3e5b('0x2')]},'channelstatedesc':{'type':Sequelize[_0x3e5b('0x1')]},'calleridnum':{'type':Sequelize[_0x3e5b('0x1')]},'calleridname':{'type':Sequelize[_0x3e5b('0x1')]},'connectedlinenum':{'type':Sequelize[_0x3e5b('0x1')]},'connectedlinename':{'type':Sequelize[_0x3e5b('0x1')]},'language':{'type':Sequelize[_0x3e5b('0x1')]},'accountcode':{'type':Sequelize[_0x3e5b('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x3e5b('0x1')]},'priority':{'type':Sequelize[_0x3e5b('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x3e5b('0x1')]},'destchannel':{'type':Sequelize[_0x3e5b('0x1')]},'destchannelstate':{'type':Sequelize[_0x3e5b('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x3e5b('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x3e5b('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x3e5b('0x1')]},'destlanguage':{'type':Sequelize[_0x3e5b('0x1')]},'destaccountcode':{'type':Sequelize[_0x3e5b('0x1')]},'destcontext':{'type':Sequelize[_0x3e5b('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x3e5b('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x3e5b('0x1')]},'dialstring':{'type':Sequelize[_0x3e5b('0x1')]},'dialstatus':{'type':Sequelize[_0x3e5b('0x1')]},'starttime':{'type':Sequelize[_0x3e5b('0x3')]},'answertime':{'type':Sequelize[_0x3e5b('0x3')]},'endtime':{'type':Sequelize[_0x3e5b('0x3')]},'lastevent':{'type':Sequelize[_0x3e5b('0x1')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x3e5b('0x2')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x81bd=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x11d556,_0x1ab952){var _0x151d44=function(_0x576339){while(--_0x576339){_0x11d556['push'](_0x11d556['shift']());}};_0x151d44(++_0x1ab952);}(_0x81bd,0x7c));var _0xd81b=function(_0x1ee7e4,_0x4ba132){_0x1ee7e4=_0x1ee7e4-0x0;var _0x4a99aa=_0x81bd[_0x1ee7e4];return _0x4a99aa;};'use strict';var Sequelize=require(_0xd81b('0x0'));module[_0xd81b('0x1')]={'privilege':{'type':Sequelize[_0xd81b('0x2')]},'channel':{'type':Sequelize[_0xd81b('0x2')]},'channelstate':{'type':Sequelize[_0xd81b('0x3')]},'channelstatedesc':{'type':Sequelize[_0xd81b('0x2')]},'calleridnum':{'type':Sequelize[_0xd81b('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd81b('0x2')]},'connectedlinename':{'type':Sequelize[_0xd81b('0x2')]},'language':{'type':Sequelize[_0xd81b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xd81b('0x2')]},'exten':{'type':Sequelize[_0xd81b('0x2')]},'priority':{'type':Sequelize[_0xd81b('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xd81b('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xd81b('0x2')]},'destcalleridnum':{'type':Sequelize[_0xd81b('0x2')]},'destcalleridname':{'type':Sequelize[_0xd81b('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xd81b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xd81b('0x2')]},'destlanguage':{'type':Sequelize[_0xd81b('0x2')]},'destaccountcode':{'type':Sequelize[_0xd81b('0x2')]},'destcontext':{'type':Sequelize[_0xd81b('0x2')]},'destexten':{'type':Sequelize[_0xd81b('0x2')]},'destpriority':{'type':Sequelize[_0xd81b('0x3')]},'destuniqueid':{'type':Sequelize[_0xd81b('0x2')]},'destlinkedid':{'type':Sequelize[_0xd81b('0x2')]},'dialstring':{'type':Sequelize[_0xd81b('0x2')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xd81b('0x4')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xd81b('0x4')]},'lastevent':{'type':Sequelize[_0xd81b('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0xd81b('0x3')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0xd81b('0x3')]},'billableseconds':{'type':Sequelize[_0xd81b('0x3')]}};
\ No newline at end of file
index 03abf67..0fa6cf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fe8=['json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','error','stack','name','index','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','type','VIRTUAL','options','VoiceDialReport','includeAll','include','findAll','show','params','merge','create','body','catch','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','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'];(function(_0x35f3c9,_0x1aaafe){var _0x483f61=function(_0x4022f3){while(--_0x4022f3){_0x35f3c9['push'](_0x35f3c9['shift']());}};_0x483f61(++_0x1aaafe);}(_0x1fe8,0x1a0));var _0x81fe=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x1fe8[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0x81fe('0x0'));var rimraf=require(_0x81fe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x81fe('0x2'));var rp=require(_0x81fe('0x3'));var moment=require(_0x81fe('0x4'));var BPromise=require(_0x81fe('0x5'));var Mustache=require(_0x81fe('0x6'));var util=require('util');var path=require(_0x81fe('0x7'));var sox=require('sox');var csv=require(_0x81fe('0x8'));var ejs=require(_0x81fe('0x9'));var fs=require('fs');var fs_extra=require(_0x81fe('0xa'));var _=require(_0x81fe('0xb'));var squel=require('squel');var crypto=require(_0x81fe('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x81fe('0x8'));var querystring=require(_0x81fe('0xd'));var Papa=require(_0x81fe('0xe'));var Redis=require(_0x81fe('0xf'));var authService=require(_0x81fe('0x10'));var qs=require(_0x81fe('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x81fe('0x12'));var logger=require(_0x81fe('0x13'))(_0x81fe('0x14'));var utils=require(_0x81fe('0x15'));var config=require(_0x81fe('0x16'));var licenseUtil=require(_0x81fe('0x17'));var db=require(_0x81fe('0x18'))['db'];function respondWithStatusCode(_0x377a65,_0x44162b){_0x44162b=_0x44162b||0xcc;return function(_0x3d0b4c){if(_0x3d0b4c){return _0x377a65[_0x81fe('0x19')](_0x44162b);}return _0x377a65[_0x81fe('0x1a')](_0x44162b)[_0x81fe('0x1b')]();};}function respondWithResult(_0x35f04e,_0x3cf6af){_0x3cf6af=_0x3cf6af||0xc8;return function(_0xe9bc78){if(_0xe9bc78){return _0x35f04e[_0x81fe('0x1a')](_0x3cf6af)[_0x81fe('0x1c')](_0xe9bc78);}};}function respondWithFilteredResult(_0x33520e,_0xde2fa1){return function(_0x2c0550){if(_0x2c0550){var _0x184279=typeof _0xde2fa1[_0x81fe('0x1d')]===_0x81fe('0x1e')&&typeof _0xde2fa1[_0x81fe('0x1f')]===_0x81fe('0x1e');var _0x425f3c=_0x2c0550[_0x81fe('0x20')];var _0x32def4=_0x184279?0x0:_0xde2fa1[_0x81fe('0x1d')];var _0x1d1e8=_0x184279?_0x2c0550['count']:_0xde2fa1['offset']+_0xde2fa1[_0x81fe('0x1f')];var _0x2ccdcb;if(_0x1d1e8>=_0x425f3c){_0x1d1e8=_0x425f3c;_0x2ccdcb=0xc8;}else{_0x2ccdcb=0xce;}_0x33520e[_0x81fe('0x1a')](_0x2ccdcb);return _0x33520e[_0x81fe('0x21')](_0x81fe('0x22'),_0x32def4+'-'+_0x1d1e8+'/'+_0x425f3c)[_0x81fe('0x1c')](_0x2c0550);}return null;};}function patchUpdates(_0x3f36b2){return function(_0x14d3f6){try{jsonpatch[_0x81fe('0x23')](_0x14d3f6,_0x3f36b2,!![]);}catch(_0x4c47a9){return BPromise['reject'](_0x4c47a9);}return _0x14d3f6[_0x81fe('0x24')]();};}function saveUpdates(_0x3cd31f,_0x25bd35){return function(_0x54c5f8){if(_0x54c5f8){return _0x54c5f8['update'](_0x3cd31f)[_0x81fe('0x25')](function(_0x223b8a){return _0x223b8a;});}return null;};}function removeEntity(_0x5d37f6,_0x44c2de){return function(_0x55f3c9){if(_0x55f3c9){return _0x55f3c9[_0x81fe('0x26')]()[_0x81fe('0x25')](function(){_0x5d37f6[_0x81fe('0x1a')](0xcc)[_0x81fe('0x1b')]();});}};}function handleEntityNotFound(_0x5701ee,_0x4f1d4e){return function(_0x3bbfdc){if(!_0x3bbfdc){_0x5701ee[_0x81fe('0x19')](0x194);}return _0x3bbfdc;};}function handleError(_0x39175a,_0x23018c){_0x23018c=_0x23018c||0x1f4;return function(_0x38f448){logger[_0x81fe('0x27')](_0x38f448[_0x81fe('0x28')]);if(_0x38f448[_0x81fe('0x29')]){delete _0x38f448[_0x81fe('0x29')];}_0x39175a['status'](_0x23018c)['send'](_0x38f448);};}exports[_0x81fe('0x2a')]=function(_0x4c891a,_0x2829c0){var _0x36b190={},_0x14c0be={},_0x58177={'count':0x0,'rows':[]};var _0x114b02=_['map'](db['VoiceDialReport'][_0x81fe('0x2b')],function(_0x363875){return{'name':_0x363875['fieldName'],'type':_0x363875['type']['key']};});_0x14c0be[_0x81fe('0x2c')]=_['map'](_0x114b02,_0x81fe('0x29'));_0x14c0be[_0x81fe('0x2d')]=_[_0x81fe('0x2e')](_0x4c891a[_0x81fe('0x2d')]);_0x14c0be[_0x81fe('0x2f')]=_[_0x81fe('0x30')](_0x14c0be[_0x81fe('0x2c')],_0x14c0be[_0x81fe('0x2d')]);_0x36b190[_0x81fe('0x31')]=_[_0x81fe('0x30')](_0x14c0be[_0x81fe('0x2c')],qs[_0x81fe('0x32')](_0x4c891a[_0x81fe('0x2d')][_0x81fe('0x32')]));_0x36b190[_0x81fe('0x31')]=_0x36b190[_0x81fe('0x31')][_0x81fe('0x33')]?_0x36b190[_0x81fe('0x31')]:_0x14c0be[_0x81fe('0x2c')];if(!_0x4c891a[_0x81fe('0x2d')][_0x81fe('0x34')](_0x81fe('0x35'))){_0x36b190[_0x81fe('0x1f')]=qs['limit'](_0x4c891a[_0x81fe('0x2d')][_0x81fe('0x1f')]);_0x36b190[_0x81fe('0x1d')]=qs[_0x81fe('0x1d')](_0x4c891a['query']['offset']);}_0x36b190[_0x81fe('0x36')]=qs[_0x81fe('0x37')](_0x4c891a[_0x81fe('0x2d')][_0x81fe('0x37')]);_0x36b190[_0x81fe('0x38')]=qs['filters'](_[_0x81fe('0x39')](_0x4c891a[_0x81fe('0x2d')],_0x14c0be[_0x81fe('0x2f')]),_0x114b02);if(_0x4c891a[_0x81fe('0x2d')][_0x81fe('0x3a')]){_0x36b190[_0x81fe('0x38')]=_['merge'](_0x36b190[_0x81fe('0x38')],{'$or':_[_0x81fe('0x3b')](_0x114b02,function(_0x3e773c){if(_0x3e773c[_0x81fe('0x3c')]!==_0x81fe('0x3d')){var _0x980d99={};_0x980d99[_0x3e773c['name']]={'$like':'%'+_0x4c891a[_0x81fe('0x2d')][_0x81fe('0x3a')]+'%'};return _0x980d99;}})});}_0x36b190=_['merge']({},_0x36b190,_0x4c891a[_0x81fe('0x3e')]);var _0x1eec0b={'where':_0x36b190[_0x81fe('0x38')]};return db[_0x81fe('0x3f')]['count'](_0x1eec0b)[_0x81fe('0x25')](function(_0x78abe8){_0x58177[_0x81fe('0x20')]=_0x78abe8;if(_0x4c891a[_0x81fe('0x2d')][_0x81fe('0x40')]){_0x36b190[_0x81fe('0x41')]=[{'all':!![]}];}return db['VoiceDialReport'][_0x81fe('0x42')](_0x36b190);})[_0x81fe('0x25')](function(_0x460e6b){_0x58177['rows']=_0x460e6b;return _0x58177;})['then'](respondWithFilteredResult(_0x2829c0,_0x36b190))['catch'](handleError(_0x2829c0,null));};exports[_0x81fe('0x43')]=function(_0x47d9de,_0x5bfb59){var _0x11e117={'raw':!![],'where':{'id':_0x47d9de[_0x81fe('0x44')]['id']}},_0x5ca697={};_0x5ca697[_0x81fe('0x2c')]=_[_0x81fe('0x2e')](db[_0x81fe('0x3f')]['rawAttributes']);_0x5ca697[_0x81fe('0x2d')]=_[_0x81fe('0x2e')](_0x47d9de[_0x81fe('0x2d')]);_0x5ca697[_0x81fe('0x2f')]=_[_0x81fe('0x30')](_0x5ca697[_0x81fe('0x2c')],_0x5ca697['query']);_0x11e117['attributes']=_[_0x81fe('0x30')](_0x5ca697['model'],qs['fields'](_0x47d9de['query'][_0x81fe('0x32')]));_0x11e117[_0x81fe('0x31')]=_0x11e117[_0x81fe('0x31')][_0x81fe('0x33')]?_0x11e117[_0x81fe('0x31')]:_0x5ca697[_0x81fe('0x2c')];if(_0x47d9de[_0x81fe('0x2d')][_0x81fe('0x40')]){_0x11e117[_0x81fe('0x41')]=[{'all':!![]}];}_0x11e117=_[_0x81fe('0x45')]({},_0x11e117,_0x47d9de['options']);return db[_0x81fe('0x3f')]['find'](_0x11e117)[_0x81fe('0x25')](handleEntityNotFound(_0x5bfb59,null))['then'](respondWithResult(_0x5bfb59,null))['catch'](handleError(_0x5bfb59,null));};exports[_0x81fe('0x46')]=function(_0x34ba74,_0x500352){return db[_0x81fe('0x3f')]['create'](_0x34ba74[_0x81fe('0x47')],{})['then'](respondWithResult(_0x500352,0xc9))[_0x81fe('0x48')](handleError(_0x500352,null));};exports['update']=function(_0x2e008c,_0x2eb997){if(_0x2e008c[_0x81fe('0x47')]['id']){delete _0x2e008c[_0x81fe('0x47')]['id'];}return db[_0x81fe('0x3f')]['find']({'where':{'id':_0x2e008c[_0x81fe('0x44')]['id']}})[_0x81fe('0x25')](handleEntityNotFound(_0x2eb997,null))[_0x81fe('0x25')](saveUpdates(_0x2e008c[_0x81fe('0x47')],null))[_0x81fe('0x25')](respondWithResult(_0x2eb997,null))[_0x81fe('0x48')](handleError(_0x2eb997,null));};exports[_0x81fe('0x26')]=function(_0x2f8234,_0x281828){return db['VoiceDialReport']['find']({'where':{'id':_0x2f8234[_0x81fe('0x44')]['id']}})[_0x81fe('0x25')](handleEntityNotFound(_0x281828,null))[_0x81fe('0x25')](removeEntity(_0x281828,null))[_0x81fe('0x48')](handleError(_0x281828,null));};exports[_0x81fe('0x49')]=function(_0x572850,_0x33667a){return db['VoiceDialReport'][_0x81fe('0x49')]()[_0x81fe('0x25')](respondWithResult(_0x33667a,null))[_0x81fe('0x48')](handleError(_0x33667a,null));};
\ No newline at end of file
+var _0xf807=['query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','rawAttributes','length','create','body','catch','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','map','VoiceDialReport','fieldName','key','model'];(function(_0xa97e85,_0x1f7a31){var _0x495825=function(_0x3470fb){while(--_0x3470fb){_0xa97e85['push'](_0xa97e85['shift']());}};_0x495825(++_0x1f7a31);}(_0xf807,0xf2));var _0x7f80=function(_0x2ef252,_0x1993fe){_0x2ef252=_0x2ef252-0x0;var _0x1139ca=_0xf807[_0x2ef252];return _0x1139ca;};'use strict';var emlformat=require(_0x7f80('0x0'));var rimraf=require(_0x7f80('0x1'));var zipdir=require(_0x7f80('0x2'));var jsonpatch=require(_0x7f80('0x3'));var rp=require(_0x7f80('0x4'));var moment=require(_0x7f80('0x5'));var BPromise=require(_0x7f80('0x6'));var Mustache=require(_0x7f80('0x7'));var util=require('util');var path=require(_0x7f80('0x8'));var sox=require(_0x7f80('0x9'));var csv=require(_0x7f80('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7f80('0xb'));var squel=require('squel');var crypto=require(_0x7f80('0xc'));var jsforce=require(_0x7f80('0xd'));var deskjs=require(_0x7f80('0xe'));var toCsv=require(_0x7f80('0xa'));var querystring=require('querystring');var Papa=require(_0x7f80('0xf'));var Redis=require(_0x7f80('0x10'));var authService=require(_0x7f80('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7f80('0x12'));var hardwareService=require(_0x7f80('0x13'));var logger=require(_0x7f80('0x14'))(_0x7f80('0x15'));var utils=require(_0x7f80('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7f80('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4483af,_0x480011){_0x480011=_0x480011||0xcc;return function(_0x284395){if(_0x284395){return _0x4483af[_0x7f80('0x18')](_0x480011);}return _0x4483af[_0x7f80('0x19')](_0x480011)[_0x7f80('0x1a')]();};}function respondWithResult(_0x112508,_0x288dc4){_0x288dc4=_0x288dc4||0xc8;return function(_0x2c6ce4){if(_0x2c6ce4){return _0x112508[_0x7f80('0x19')](_0x288dc4)[_0x7f80('0x1b')](_0x2c6ce4);}};}function respondWithFilteredResult(_0x40813b,_0x441c85){return function(_0x5e50cc){if(_0x5e50cc){var _0x1f79bf=typeof _0x441c85[_0x7f80('0x1c')]===_0x7f80('0x1d')&&typeof _0x441c85[_0x7f80('0x1e')]===_0x7f80('0x1d');var _0x2ddd8c=_0x5e50cc['count'];var _0x454390=_0x1f79bf?0x0:_0x441c85[_0x7f80('0x1c')];var _0x362d53=_0x1f79bf?_0x5e50cc[_0x7f80('0x1f')]:_0x441c85['offset']+_0x441c85[_0x7f80('0x1e')];var _0x1de830;if(_0x362d53>=_0x2ddd8c){_0x362d53=_0x2ddd8c;_0x1de830=0xc8;}else{_0x1de830=0xce;}_0x40813b[_0x7f80('0x19')](_0x1de830);return _0x40813b[_0x7f80('0x20')](_0x7f80('0x21'),_0x454390+'-'+_0x362d53+'/'+_0x2ddd8c)[_0x7f80('0x1b')](_0x5e50cc);}return null;};}function patchUpdates(_0x441aa5){return function(_0x1e0a3b){try{jsonpatch[_0x7f80('0x22')](_0x1e0a3b,_0x441aa5,!![]);}catch(_0x20b6a0){return BPromise[_0x7f80('0x23')](_0x20b6a0);}return _0x1e0a3b[_0x7f80('0x24')]();};}function saveUpdates(_0x23ce8f,_0x1a463d){return function(_0x463c3b){if(_0x463c3b){return _0x463c3b[_0x7f80('0x25')](_0x23ce8f)[_0x7f80('0x26')](function(_0x475797){return _0x475797;});}return null;};}function removeEntity(_0x228389,_0xdd8c3d){return function(_0x469098){if(_0x469098){return _0x469098[_0x7f80('0x27')]()[_0x7f80('0x26')](function(){_0x228389[_0x7f80('0x19')](0xcc)[_0x7f80('0x1a')]();});}};}function handleEntityNotFound(_0x1da1e6,_0x323384){return function(_0xd14881){if(!_0xd14881){_0x1da1e6[_0x7f80('0x18')](0x194);}return _0xd14881;};}function handleError(_0x4704b9,_0x373408){_0x373408=_0x373408||0x1f4;return function(_0x136827){logger['error'](_0x136827['stack']);if(_0x136827[_0x7f80('0x28')]){delete _0x136827['name'];}_0x4704b9[_0x7f80('0x19')](_0x373408)['send'](_0x136827);};}exports['index']=function(_0x710160,_0x298d74){var _0x3adfb0={},_0x1bc64a={},_0x186fdc={'count':0x0,'rows':[]};var _0x526fdf=_[_0x7f80('0x29')](db[_0x7f80('0x2a')]['rawAttributes'],function(_0xe069a1){return{'name':_0xe069a1[_0x7f80('0x2b')],'type':_0xe069a1['type'][_0x7f80('0x2c')]};});_0x1bc64a[_0x7f80('0x2d')]=_['map'](_0x526fdf,_0x7f80('0x28'));_0x1bc64a[_0x7f80('0x2e')]=_[_0x7f80('0x2f')](_0x710160[_0x7f80('0x2e')]);_0x1bc64a[_0x7f80('0x30')]=_[_0x7f80('0x31')](_0x1bc64a[_0x7f80('0x2d')],_0x1bc64a[_0x7f80('0x2e')]);_0x3adfb0[_0x7f80('0x32')]=_['intersection'](_0x1bc64a[_0x7f80('0x2d')],qs[_0x7f80('0x33')](_0x710160[_0x7f80('0x2e')][_0x7f80('0x33')]));_0x3adfb0[_0x7f80('0x32')]=_0x3adfb0['attributes']['length']?_0x3adfb0['attributes']:_0x1bc64a['model'];if(!_0x710160[_0x7f80('0x2e')][_0x7f80('0x34')](_0x7f80('0x35'))){_0x3adfb0[_0x7f80('0x1e')]=qs['limit'](_0x710160[_0x7f80('0x2e')][_0x7f80('0x1e')]);_0x3adfb0[_0x7f80('0x1c')]=qs[_0x7f80('0x1c')](_0x710160[_0x7f80('0x2e')]['offset']);}_0x3adfb0['order']=qs[_0x7f80('0x36')](_0x710160['query']['sort']);_0x3adfb0[_0x7f80('0x37')]=qs[_0x7f80('0x30')](_['pick'](_0x710160[_0x7f80('0x2e')],_0x1bc64a[_0x7f80('0x30')]),_0x526fdf);if(_0x710160[_0x7f80('0x2e')][_0x7f80('0x38')]){_0x3adfb0[_0x7f80('0x37')]=_[_0x7f80('0x39')](_0x3adfb0[_0x7f80('0x37')],{'$or':_[_0x7f80('0x29')](_0x526fdf,function(_0x55219a){if(_0x55219a['type']!==_0x7f80('0x3a')){var _0xb2c574={};_0xb2c574[_0x55219a['name']]={'$like':'%'+_0x710160[_0x7f80('0x2e')]['filter']+'%'};return _0xb2c574;}})});}_0x3adfb0=_[_0x7f80('0x39')]({},_0x3adfb0,_0x710160[_0x7f80('0x3b')]);var _0x56a884={'where':_0x3adfb0['where']};return db['VoiceDialReport'][_0x7f80('0x1f')](_0x56a884)[_0x7f80('0x26')](function(_0x156dce){_0x186fdc[_0x7f80('0x1f')]=_0x156dce;if(_0x710160[_0x7f80('0x2e')][_0x7f80('0x3c')]){_0x3adfb0['include']=[{'all':!![]}];}return db[_0x7f80('0x2a')][_0x7f80('0x3d')](_0x3adfb0);})[_0x7f80('0x26')](function(_0x4c7c7f){_0x186fdc[_0x7f80('0x3e')]=_0x4c7c7f;return _0x186fdc;})[_0x7f80('0x26')](respondWithFilteredResult(_0x298d74,_0x3adfb0))['catch'](handleError(_0x298d74,null));};exports[_0x7f80('0x3f')]=function(_0xab251b,_0x3ee84c){var _0x12d7a3={'raw':!![],'where':{'id':_0xab251b[_0x7f80('0x40')]['id']}},_0x390b87={};_0x390b87[_0x7f80('0x2d')]=_['keys'](db['VoiceDialReport'][_0x7f80('0x41')]);_0x390b87[_0x7f80('0x2e')]=_['keys'](_0xab251b['query']);_0x390b87[_0x7f80('0x30')]=_[_0x7f80('0x31')](_0x390b87[_0x7f80('0x2d')],_0x390b87[_0x7f80('0x2e')]);_0x12d7a3[_0x7f80('0x32')]=_[_0x7f80('0x31')](_0x390b87[_0x7f80('0x2d')],qs[_0x7f80('0x33')](_0xab251b['query'][_0x7f80('0x33')]));_0x12d7a3['attributes']=_0x12d7a3[_0x7f80('0x32')][_0x7f80('0x42')]?_0x12d7a3[_0x7f80('0x32')]:_0x390b87[_0x7f80('0x2d')];if(_0xab251b[_0x7f80('0x2e')]['includeAll']){_0x12d7a3['include']=[{'all':!![]}];}_0x12d7a3=_[_0x7f80('0x39')]({},_0x12d7a3,_0xab251b[_0x7f80('0x3b')]);return db[_0x7f80('0x2a')]['find'](_0x12d7a3)['then'](handleEntityNotFound(_0x3ee84c,null))[_0x7f80('0x26')](respondWithResult(_0x3ee84c,null))['catch'](handleError(_0x3ee84c,null));};exports[_0x7f80('0x43')]=function(_0x3bc977,_0x2fb23c){return db[_0x7f80('0x2a')][_0x7f80('0x43')](_0x3bc977[_0x7f80('0x44')],{})['then'](respondWithResult(_0x2fb23c,0xc9))[_0x7f80('0x45')](handleError(_0x2fb23c,null));};exports[_0x7f80('0x25')]=function(_0x490cc8,_0x3f172a){if(_0x490cc8[_0x7f80('0x44')]['id']){delete _0x490cc8['body']['id'];}return db[_0x7f80('0x2a')][_0x7f80('0x46')]({'where':{'id':_0x490cc8['params']['id']}})[_0x7f80('0x26')](handleEntityNotFound(_0x3f172a,null))[_0x7f80('0x26')](saveUpdates(_0x490cc8[_0x7f80('0x44')],null))[_0x7f80('0x26')](respondWithResult(_0x3f172a,null))['catch'](handleError(_0x3f172a,null));};exports[_0x7f80('0x27')]=function(_0x4a9d9b,_0x428343){return db[_0x7f80('0x2a')]['find']({'where':{'id':_0x4a9d9b[_0x7f80('0x40')]['id']}})[_0x7f80('0x26')](handleEntityNotFound(_0x428343,null))[_0x7f80('0x26')](removeEntity(_0x428343,null))[_0x7f80('0x45')](handleError(_0x428343,null));};exports[_0x7f80('0x47')]=function(_0xc931ae,_0x945d75){return db[_0x7f80('0x2a')][_0x7f80('0x47')]()['then'](respondWithResult(_0x945d75,null))[_0x7f80('0x45')](handleError(_0x945d75,null));};
\ No newline at end of file
index cdaafd2..a6c753a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0501=['util','api','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid','lodash'];(function(_0x199ea9,_0x3b0a0e){var _0x28113e=function(_0x85effa){while(--_0x85effa){_0x199ea9['push'](_0x199ea9['shift']());}};_0x28113e(++_0x3b0a0e);}(_0x0501,0xcf));var _0x1050=function(_0x323dba,_0x549e77){_0x323dba=_0x323dba-0x0;var _0x98e25=_0x0501[_0x323dba];return _0x98e25;};'use strict';var _=require(_0x1050('0x0'));var util=require(_0x1050('0x1'));var logger=require('../../config/logger')(_0x1050('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1050('0x3'));var fs=require('fs');var path=require(_0x1050('0x4'));var rimraf=require(_0x1050('0x5'));var config=require(_0x1050('0x6'));var attributes=require(_0x1050('0x7'));module[_0x1050('0x8')]=function(_0x271605,_0x55509f){return _0x271605[_0x1050('0x9')](_0x1050('0xa'),attributes,{'tableName':_0x1050('0xb'),'paranoid':![],'indexes':[{'fields':[_0x1050('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x952f=['./voiceDialReport.attributes','exports','VoiceDialReport','report_dial','uniqueid','lodash','util','api','bluebird','request-promise','path','rimraf'];(function(_0x5e2dfc,_0x4f52cd){var _0x2644e0=function(_0x261a78){while(--_0x261a78){_0x5e2dfc['push'](_0x5e2dfc['shift']());}};_0x2644e0(++_0x4f52cd);}(_0x952f,0xad));var _0xf952=function(_0x2742db,_0x58e00c){_0x2742db=_0x2742db-0x0;var _0x18659e=_0x952f[_0x2742db];return _0x18659e;};'use strict';var _=require(_0xf952('0x0'));var util=require(_0xf952('0x1'));var logger=require('../../config/logger')(_0xf952('0x2'));var moment=require('moment');var BPromise=require(_0xf952('0x3'));var rp=require(_0xf952('0x4'));var fs=require('fs');var path=require(_0xf952('0x5'));var rimraf=require(_0xf952('0x6'));var config=require('../../config/environment');var attributes=require(_0xf952('0x7'));module[_0xf952('0x8')]=function(_0x7b8a63,_0x1d83b2){return _0x7b8a63['define'](_0xf952('0x9'),attributes,{'tableName':_0xf952('0xa'),'paranoid':![],'indexes':[{'fields':[_0xf952('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 88b5114..9016e08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0937=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceDialReport','body','options','then','UpdateVoiceDialReport','where','attributes','limit','lodash'];(function(_0x235482,_0x14b833){var _0x5f5bea=function(_0x17a254){while(--_0x17a254){_0x235482['push'](_0x235482['shift']());}};_0x5f5bea(++_0x14b833);}(_0x0937,0x128));var _0x7093=function(_0x549c79,_0x5095ac){_0x549c79=_0x549c79-0x0;var _0x5e73d5=_0x0937[_0x549c79];return _0x5e73d5;};'use strict';var _=require(_0x7093('0x0'));var util=require(_0x7093('0x1'));var moment=require(_0x7093('0x2'));var BPromise=require(_0x7093('0x3'));var rs=require(_0x7093('0x4'));var fs=require('fs');var Redis=require(_0x7093('0x5'));var db=require(_0x7093('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7093('0x7'))(_0x7093('0x8'));var config=require(_0x7093('0x9'));var jayson=require(_0x7093('0xa'));var client=jayson[_0x7093('0xb')][_0x7093('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xa864f7,_0x3c1c2a,_0x392bf2){return new BPromise(function(_0x189cbe,_0x27dadc){return client[_0x7093('0xd')](_0xa864f7,_0x392bf2)['then'](function(_0xa3c86c){logger[_0x7093('0xe')](_0x7093('0xf'),_0x3c1c2a,_0x7093('0x10'));logger[_0x7093('0x11')](_0x7093('0x12'),_0x3c1c2a,_0x7093('0x10'),JSON[_0x7093('0x13')](_0xa3c86c));if(_0xa3c86c['error']){if(_0xa3c86c[_0x7093('0x14')][_0x7093('0x15')]===0x1f4){logger[_0x7093('0x14')](_0x7093('0xf'),_0x3c1c2a,_0xa3c86c[_0x7093('0x14')][_0x7093('0x16')]);return _0x27dadc(_0xa3c86c['error'][_0x7093('0x16')]);}logger[_0x7093('0x14')]('VoiceDialReport,\x20%s,\x20%s',_0x3c1c2a,_0xa3c86c[_0x7093('0x14')]['message']);return _0x189cbe(_0xa3c86c[_0x7093('0x14')]['message']);}else{logger[_0x7093('0xe')](_0x7093('0xf'),_0x3c1c2a,_0x7093('0x10'));_0x189cbe(_0xa3c86c[_0x7093('0x17')]['message']);}})[_0x7093('0x18')](function(_0x36f559){logger[_0x7093('0x14')](_0x7093('0xf'),_0x3c1c2a,_0x36f559);_0x27dadc(_0x36f559);});});}exports[_0x7093('0x19')]=function(_0x18b18c){var _0x5f090e=this;return new Promise(function(_0x34a725,_0x2195b8){return db['VoiceDialReport']['create'](_0x18b18c[_0x7093('0x1a')],{'raw':_0x18b18c[_0x7093('0x1b')]?_0x18b18c[_0x7093('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x7093('0x1c')](function(_0x119111){logger[_0x7093('0xe')](_0x7093('0x19'),_0x18b18c);logger[_0x7093('0x11')](_0x7093('0x19'),_0x18b18c,JSON['stringify'](_0x119111));_0x34a725(_0x119111);})[_0x7093('0x18')](function(_0x2461d9){logger['error'](_0x7093('0x19'),_0x2461d9['message'],_0x18b18c);_0x2195b8(_0x5f090e[_0x7093('0x14')](0x1f4,_0x2461d9[_0x7093('0x16')]));});});};exports[_0x7093('0x1d')]=function(_0x5382d7){var _0x335531=this;return new Promise(function(_0x152ca2,_0x5ebfed){return db['VoiceDialReport']['update'](_0x5382d7[_0x7093('0x1a')],{'raw':_0x5382d7[_0x7093('0x1b')]?_0x5382d7[_0x7093('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5382d7[_0x7093('0x1b')]?_0x5382d7[_0x7093('0x1b')][_0x7093('0x1e')]||null:null,'attributes':_0x5382d7[_0x7093('0x1b')]?_0x5382d7[_0x7093('0x1b')][_0x7093('0x1f')]||null:null,'limit':_0x5382d7[_0x7093('0x1b')]?_0x5382d7[_0x7093('0x1b')][_0x7093('0x20')]||null:null})['then'](function(_0x54713a){logger[_0x7093('0xe')]('UpdateVoiceDialReport',_0x5382d7);logger[_0x7093('0x11')](_0x7093('0x1d'),_0x5382d7,JSON[_0x7093('0x13')](_0x54713a));_0x152ca2(_0x54713a);})['catch'](function(_0x2592f3){logger['error'](_0x7093('0x1d'),_0x2592f3['message'],_0x5382d7);_0x5ebfed(_0x335531[_0x7093('0x14')](0x1f4,_0x2592f3[_0x7093('0x16')]));});});};
\ No newline at end of file
+var _0x59e2=['request\x20sent','debug','stringify','error','code','message','result','catch','create','body','options','raw','CreateVoiceDialReport','UpdateVoiceDialReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','then','info','VoiceDialReport,\x20%s,\x20%s'];(function(_0x622035,_0x1a4b91){var _0x326cf2=function(_0x5c3002){while(--_0x5c3002){_0x622035['push'](_0x622035['shift']());}};_0x326cf2(++_0x1a4b91);}(_0x59e2,0x1b2));var _0x259e=function(_0x50394a,_0x23203d){_0x50394a=_0x50394a-0x0;var _0x51bbca=_0x59e2[_0x50394a];return _0x51bbca;};'use strict';var _=require(_0x259e('0x0'));var util=require(_0x259e('0x1'));var moment=require(_0x259e('0x2'));var BPromise=require(_0x259e('0x3'));var rs=require(_0x259e('0x4'));var fs=require('fs');var Redis=require(_0x259e('0x5'));var db=require(_0x259e('0x6'))['db'];var utils=require(_0x259e('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x259e('0x8'));var jayson=require(_0x259e('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1c369f,_0x49a7fe,_0x3aca99){return new BPromise(function(_0x31d417,_0x5303ac){return client[_0x259e('0xa')](_0x1c369f,_0x3aca99)[_0x259e('0xb')](function(_0x3d4d6a){logger[_0x259e('0xc')](_0x259e('0xd'),_0x49a7fe,_0x259e('0xe'));logger[_0x259e('0xf')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x49a7fe,_0x259e('0xe'),JSON[_0x259e('0x10')](_0x3d4d6a));if(_0x3d4d6a[_0x259e('0x11')]){if(_0x3d4d6a[_0x259e('0x11')][_0x259e('0x12')]===0x1f4){logger[_0x259e('0x11')](_0x259e('0xd'),_0x49a7fe,_0x3d4d6a[_0x259e('0x11')][_0x259e('0x13')]);return _0x5303ac(_0x3d4d6a[_0x259e('0x11')][_0x259e('0x13')]);}logger['error'](_0x259e('0xd'),_0x49a7fe,_0x3d4d6a[_0x259e('0x11')][_0x259e('0x13')]);return _0x31d417(_0x3d4d6a[_0x259e('0x11')][_0x259e('0x13')]);}else{logger[_0x259e('0xc')]('VoiceDialReport,\x20%s,\x20%s',_0x49a7fe,_0x259e('0xe'));_0x31d417(_0x3d4d6a[_0x259e('0x14')][_0x259e('0x13')]);}})[_0x259e('0x15')](function(_0x478946){logger[_0x259e('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x49a7fe,_0x478946);_0x5303ac(_0x478946);});});}exports['CreateVoiceDialReport']=function(_0x2bc384){var _0x1da7c1=this;return new Promise(function(_0x34892d,_0x417442){return db['VoiceDialReport'][_0x259e('0x16')](_0x2bc384[_0x259e('0x17')],{'raw':_0x2bc384['options']?_0x2bc384[_0x259e('0x18')][_0x259e('0x19')]===undefined?!![]:![]:!![]})[_0x259e('0xb')](function(_0x1575d6){logger['info'](_0x259e('0x1a'),_0x2bc384);logger[_0x259e('0xf')]('CreateVoiceDialReport',_0x2bc384,JSON[_0x259e('0x10')](_0x1575d6));_0x34892d(_0x1575d6);})[_0x259e('0x15')](function(_0x2addf4){logger[_0x259e('0x11')](_0x259e('0x1a'),_0x2addf4[_0x259e('0x13')],_0x2bc384);_0x417442(_0x1da7c1['error'](0x1f4,_0x2addf4[_0x259e('0x13')]));});});};exports[_0x259e('0x1b')]=function(_0x180627){var _0x1ff6ca=this;return new Promise(function(_0x3f6bad,_0x31f15c){return db['VoiceDialReport'][_0x259e('0x1c')](_0x180627['body'],{'raw':_0x180627[_0x259e('0x18')]?_0x180627[_0x259e('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x180627[_0x259e('0x18')]?_0x180627[_0x259e('0x18')][_0x259e('0x1d')]||null:null,'attributes':_0x180627[_0x259e('0x18')]?_0x180627[_0x259e('0x18')][_0x259e('0x1e')]||null:null,'limit':_0x180627[_0x259e('0x18')]?_0x180627[_0x259e('0x18')][_0x259e('0x1f')]||null:null})[_0x259e('0xb')](function(_0x5de9ce){logger['info'](_0x259e('0x1b'),_0x180627);logger['debug'](_0x259e('0x1b'),_0x180627,JSON[_0x259e('0x10')](_0x5de9ce));_0x3f6bad(_0x5de9ce);})[_0x259e('0x15')](function(_0x2d5c83){logger[_0x259e('0x11')]('UpdateVoiceDialReport',_0x2d5c83[_0x259e('0x13')],_0x180627);_0x31f15c(_0x1ff6ca['error'](0x1f4,_0x2d5c83[_0x259e('0x13')]));});});};
\ No newline at end of file
index 493e0f6..94f5c5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f64=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','/:id','show','post','create','/:id/applications','put','delete'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x4f64,0xfd));var _0x44f6=function(_0x419c8e,_0x2806b8){_0x419c8e=_0x419c8e-0x0;var _0x16bad7=_0x4f64[_0x419c8e];return _0x16bad7;};'use strict';var multer=require(_0x44f6('0x0'));var util=require(_0x44f6('0x1'));var path=require(_0x44f6('0x2'));var timeout=require(_0x44f6('0x3'));var express=require(_0x44f6('0x4'));var router=express[_0x44f6('0x5')]();var fs_extra=require(_0x44f6('0x6'));var auth=require(_0x44f6('0x7'));var interaction=require(_0x44f6('0x8'));var config=require(_0x44f6('0x9'));var controller=require(_0x44f6('0xa'));router[_0x44f6('0xb')]('/',auth[_0x44f6('0xc')](),controller['index']);router[_0x44f6('0xb')](_0x44f6('0xd'),auth[_0x44f6('0xc')](),controller[_0x44f6('0xe')]);router[_0x44f6('0xf')]('/',auth[_0x44f6('0xc')](),controller[_0x44f6('0x10')]);router[_0x44f6('0xf')](_0x44f6('0x11'),auth[_0x44f6('0xc')](),controller['addApplications']);router[_0x44f6('0x12')]('/:id',auth[_0x44f6('0xc')](),controller['update']);router[_0x44f6('0x13')](_0x44f6('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x44f6('0x14')]=router;
\ No newline at end of file
+var _0x1663=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','/:id/applications','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x148076,_0x4a5499){var _0x544222=function(_0x7b8536){while(--_0x7b8536){_0x148076['push'](_0x148076['shift']());}};_0x544222(++_0x4a5499);}(_0x1663,0x1b3));var _0x3166=function(_0x93e6a1,_0x11e83d){_0x93e6a1=_0x93e6a1-0x0;var _0x37a194=_0x1663[_0x93e6a1];return _0x37a194;};'use strict';var multer=require(_0x3166('0x0'));var util=require(_0x3166('0x1'));var path=require(_0x3166('0x2'));var timeout=require(_0x3166('0x3'));var express=require(_0x3166('0x4'));var router=express[_0x3166('0x5')]();var fs_extra=require(_0x3166('0x6'));var auth=require(_0x3166('0x7'));var interaction=require(_0x3166('0x8'));var config=require(_0x3166('0x9'));var controller=require('./voiceExtension.controller');router[_0x3166('0xa')]('/',auth[_0x3166('0xb')](),controller[_0x3166('0xc')]);router[_0x3166('0xa')](_0x3166('0xd'),auth[_0x3166('0xb')](),controller[_0x3166('0xe')]);router[_0x3166('0xf')]('/',auth[_0x3166('0xb')](),controller[_0x3166('0x10')]);router[_0x3166('0xf')](_0x3166('0x11'),auth['isAuthenticated'](),controller['addApplications']);router['put'](_0x3166('0xd'),auth[_0x3166('0xb')](),controller[_0x3166('0x12')]);router[_0x3166('0x13')](_0x3166('0xd'),auth[_0x3166('0xb')](),controller[_0x3166('0x14')]);module[_0x3166('0x15')]=router;
\ No newline at end of file
index c995e41..b0121ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3363=['STRING','compositeIndex','NoOp','inbound','internal','inbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','getDataValue','exten','exports'];(function(_0x18deea,_0x17626d){var _0x30dab5=function(_0x4466ce){while(--_0x4466ce){_0x18deea['push'](_0x18deea['shift']());}};_0x30dab5(++_0x17626d);}(_0x3363,0x1cd));var _0x3336=function(_0x22201f,_0x36d2e9){_0x22201f=_0x22201f-0x0;var _0xeaed81=_0x3363[_0x22201f];return _0xeaed81;};'use strict';var Sequelize=require('sequelize');module[_0x3336('0x0')]={'context':{'type':Sequelize[_0x3336('0x1')],'allowNull':![],'unique':_0x3336('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x3336('0x1')],'allowNull':![],'unique':_0x3336('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0x3336('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x3336('0x1')],'allowNull':![],'defaultValue':_0x3336('0x3')},'appdata':{'type':Sequelize[_0x3336('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0x3336('0x4'),'outbound',_0x3336('0x5'),_0x3336('0x6'),'outbound-fax',_0x3336('0x7'),_0x3336('0x8')),'allowNull':![]},'description':{'type':Sequelize[_0x3336('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3336('0x9')},'IntervalId':{'type':Sequelize[_0x3336('0xa')]},'isApp':{'type':Sequelize[_0x3336('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x3336('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x3336('0x1')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x3336('0xa')]},'recordingFormat':{'type':Sequelize[_0x3336('0x1')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x3336('0xb')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1b2c70){return this[_0x3336('0xc')](_0x3336('0xd'));}},'alias':{'type':Sequelize[_0x3336('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x05f5=['exports','STRING','compositeIndex','NoOp','inbound','outbound','internal','any','*,*,*,*','INTEGER','wav','VIRTUAL','exten','sequelize'];(function(_0x265ccf,_0xad8a7c){var _0x2fd99c=function(_0x1c29d4){while(--_0x1c29d4){_0x265ccf['push'](_0x265ccf['shift']());}};_0x2fd99c(++_0xad8a7c);}(_0x05f5,0x6f));var _0x505f=function(_0x45c5f9,_0x1ad8c9){_0x45c5f9=_0x45c5f9-0x0;var _0x22cc60=_0x05f5[_0x45c5f9];return _0x22cc60;};'use strict';var Sequelize=require(_0x505f('0x0'));module[_0x505f('0x1')]={'context':{'type':Sequelize[_0x505f('0x2')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x505f('0x2')],'allowNull':![],'unique':_0x505f('0x3')},'priority':{'type':Sequelize[_0x505f('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x505f('0x3')},'tag':{'type':Sequelize[_0x505f('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x505f('0x4')},'appdata':{'type':Sequelize[_0x505f('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0x505f('0x5'),_0x505f('0x6'),_0x505f('0x7'),'inbound-fax','outbound-fax','system',_0x505f('0x8')),'allowNull':![]},'description':{'type':Sequelize[_0x505f('0x2')]},'interval':{'type':Sequelize[_0x505f('0x2')],'allowNull':![],'defaultValue':_0x505f('0x9')},'IntervalId':{'type':Sequelize[_0x505f('0xa')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x505f('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x505f('0xa')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0x505f('0xb')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x505f('0xc')],'get':function(_0x5260fd){return this['getDataValue'](_0x505f('0xd'));}},'alias':{'type':Sequelize[_0x505f('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 66b20fd..a190b0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2409=['json','offset','undefined','limit','count','set','Content-Range','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','ignore','map','value','includes','type','find','UserProfileResource','destroy','error','stack','name','send','index','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','fields','body','outbound','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','alias','transaction','Transaction','READ_COMMITTED','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','../../components/parsers/qs','../../config/logger','../../mysqldb','redis','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end'];(function(_0x121b1a,_0x42fdb7){var _0x2d89a6=function(_0x1b6027){while(--_0x1b6027){_0x121b1a['push'](_0x121b1a['shift']());}};_0x2d89a6(++_0x42fdb7);}(_0x2409,0x15d));var _0x9240=function(_0xf9d139,_0x1c2f46){_0xf9d139=_0xf9d139-0x0;var _0x1ddd0a=_0x2409[_0xf9d139];return _0x1ddd0a;};'use strict';var _=require(_0x9240('0x0'));var Redis=require('ioredis');var qs=require(_0x9240('0x1'));var logger=require(_0x9240('0x2'))('api');var config=require('../../config/environment');var db=require(_0x9240('0x3'))['db'];config[_0x9240('0x4')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9240('0x5'))(new Redis(config[_0x9240('0x4')]));require(_0x9240('0x6'))[_0x9240('0x7')](socket);function respondWithStatusCode(_0x30288b,_0x3127ac){_0x3127ac=_0x3127ac||0xcc;return function(_0x2311b8){if(_0x2311b8){return _0x30288b[_0x9240('0x8')](_0x3127ac);}return _0x30288b[_0x9240('0x9')](_0x3127ac)[_0x9240('0xa')]();};}function respondWithResult(_0x134c2d,_0x24c555){_0x24c555=_0x24c555||0xc8;return function(_0x45b752){if(_0x45b752){return _0x134c2d[_0x9240('0x9')](_0x24c555)[_0x9240('0xb')](_0x45b752);}};}function respondWithFilteredResult(_0x699f48,_0x102638){return function(_0x3c6d21){if(_0x3c6d21){var _0x30e788=typeof _0x102638[_0x9240('0xc')]===_0x9240('0xd')&&typeof _0x102638[_0x9240('0xe')]===_0x9240('0xd');var _0x1b6d27=_0x3c6d21[_0x9240('0xf')];var _0x48f484=_0x30e788?0x0:_0x102638[_0x9240('0xc')];var _0x199d25=_0x30e788?_0x3c6d21[_0x9240('0xf')]:_0x102638[_0x9240('0xc')]+_0x102638[_0x9240('0xe')];var _0x493ea6;if(_0x199d25>=_0x1b6d27){_0x199d25=_0x1b6d27;_0x493ea6=0xc8;}else{_0x493ea6=0xce;}_0x699f48[_0x9240('0x9')](_0x493ea6);return _0x699f48[_0x9240('0x10')](_0x9240('0x11'),_0x48f484+'-'+_0x199d25+'/'+_0x1b6d27)[_0x9240('0xb')](_0x3c6d21);}return null;};}function removeEntity(_0x5e786b){return function(_0x36a78f){if(_0x36a78f){return _0x36a78f['destroy']()[_0x9240('0x12')](function(){var _0x19d5bc=_0x36a78f[_0x9240('0x13')]({'plain':!![]});var _0x19b3c4=[{'name':_0x9240('0x14'),'value':_0x9240('0x15'),'ignore':![]},{'name':_0x9240('0x16'),'value':'outbound','ignore':![]},{'name':_0x9240('0x17'),'value':_0x9240('0x18'),'ignore':![]}];var _0x2772f5=_(_0x19b3c4)['filter'](_0x9240('0x19'))[_0x9240('0x1a')](_0x9240('0x1b'))[_0x9240('0x1b')]();if(_[_0x9240('0x1c')](_0x2772f5,_0x19d5bc[_0x9240('0x1d')])){return;}var _0x4cda5f=_[_0x9240('0x1e')](_0x19b3c4,[_0x9240('0x1b'),_0x19d5bc[_0x9240('0x1d')]])['name'];return db[_0x9240('0x1f')][_0x9240('0x20')]({'where':{'type':_0x4cda5f,'resourceId':_0x19d5bc['id']}})[_0x9240('0x12')](function(){return _0x36a78f;});})[_0x9240('0x12')](function(){_0x5e786b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x51aa82){return function(_0x2ac2a6){if(!_0x2ac2a6){_0x51aa82[_0x9240('0x8')](0x194);}return _0x2ac2a6;};}function handleError(_0x533e59,_0x3c1217){_0x3c1217=_0x3c1217||0x1f4;return function(_0xee51af){logger[_0x9240('0x21')](_0xee51af[_0x9240('0x22')]);if(_0xee51af[_0x9240('0x23')]){delete _0xee51af[_0x9240('0x23')];}_0x533e59[_0x9240('0x9')](_0x3c1217)[_0x9240('0x24')](_0xee51af);};}exports[_0x9240('0x25')]=function(_0x1a9fe7,_0x3e8c82){var _0x55dc2d={},_0xdd9597={},_0x302458={'count':0x0,'rows':[]};var _0x479bf7=_['map'](db[_0x9240('0x26')][_0x9240('0x27')],function(_0x40a3d1){return{'name':_0x40a3d1[_0x9240('0x28')],'type':_0x40a3d1['type'][_0x9240('0x29')]};});_0xdd9597[_0x9240('0x2a')]=_[_0x9240('0x1a')](_0x479bf7,_0x9240('0x23'));_0xdd9597[_0x9240('0x2b')]=_[_0x9240('0x2c')](_0x1a9fe7['query']);_0xdd9597[_0x9240('0x2d')]=_['intersection'](_0xdd9597[_0x9240('0x2a')],_0xdd9597[_0x9240('0x2b')]);_0x55dc2d[_0x9240('0x2e')]=_[_0x9240('0x2f')](_0xdd9597[_0x9240('0x2a')],qs['fields'](_0x1a9fe7[_0x9240('0x2b')]['fields']));_0x55dc2d['attributes']=_0x55dc2d['attributes'][_0x9240('0x30')]?_0x55dc2d[_0x9240('0x2e')]:_0xdd9597[_0x9240('0x2a')];if(!_0x1a9fe7[_0x9240('0x2b')]['hasOwnProperty'](_0x9240('0x31'))){_0x55dc2d[_0x9240('0xe')]=qs['limit'](_0x1a9fe7[_0x9240('0x2b')][_0x9240('0xe')]);_0x55dc2d[_0x9240('0xc')]=qs[_0x9240('0xc')](_0x1a9fe7[_0x9240('0x2b')][_0x9240('0xc')]);}_0x55dc2d[_0x9240('0x32')]=qs[_0x9240('0x33')](_0x1a9fe7[_0x9240('0x2b')][_0x9240('0x33')]);_0x55dc2d['where']=qs[_0x9240('0x2d')](_[_0x9240('0x34')](_0x1a9fe7[_0x9240('0x2b')],_0xdd9597[_0x9240('0x2d')]),_0x479bf7);if(_0x1a9fe7[_0x9240('0x2b')][_0x9240('0x35')]){_0x55dc2d[_0x9240('0x36')]=_[_0x9240('0x37')](_0x55dc2d['where'],{'$or':_[_0x9240('0x1a')](_0x479bf7,function(_0xa76f2d){if(_0xa76f2d['type']!==_0x9240('0x38')){var _0x447044={};_0x447044[_0xa76f2d[_0x9240('0x23')]]={'$like':'%'+_0x1a9fe7[_0x9240('0x2b')]['filter']+'%'};return _0x447044;}})});}_0x55dc2d=_['merge']({},_0x55dc2d,_0x1a9fe7[_0x9240('0x39')]);var _0x5a620a={'where':_0x55dc2d[_0x9240('0x36')]};return db['VoiceExtension'][_0x9240('0xf')](_0x5a620a)['then'](function(_0x4aaac0){_0x302458[_0x9240('0xf')]=_0x4aaac0;if(_0x1a9fe7[_0x9240('0x2b')][_0x9240('0x3a')]){_0x55dc2d[_0x9240('0x3b')]=[{'all':!![]}];}return db[_0x9240('0x26')][_0x9240('0x3c')](_0x55dc2d);})['then'](function(_0x47727d){_0x302458[_0x9240('0x3d')]=_0x47727d;return _0x302458;})[_0x9240('0x12')](respondWithFilteredResult(_0x3e8c82,_0x55dc2d))['catch'](handleError(_0x3e8c82,null));};exports['show']=function(_0x54a7d7,_0x3a152e){var _0x40f630={'raw':![],'where':{'id':_0x54a7d7[_0x9240('0x3e')]['id']}},_0x5c4372={};_0x5c4372['model']=_[_0x9240('0x2c')](db[_0x9240('0x26')][_0x9240('0x27')]);_0x5c4372[_0x9240('0x2b')]=_[_0x9240('0x2c')](_0x54a7d7[_0x9240('0x2b')]);_0x5c4372['filters']=_[_0x9240('0x2f')](_0x5c4372[_0x9240('0x2a')],_0x5c4372['query']);_0x40f630['attributes']=_[_0x9240('0x2f')](_0x5c4372[_0x9240('0x2a')],qs['fields'](_0x54a7d7[_0x9240('0x2b')][_0x9240('0x3f')]));_0x40f630[_0x9240('0x2e')]=_0x40f630[_0x9240('0x2e')][_0x9240('0x30')]?_0x40f630[_0x9240('0x2e')]:_0x5c4372[_0x9240('0x2a')];if(_0x54a7d7[_0x9240('0x2b')][_0x9240('0x3a')]){_0x40f630[_0x9240('0x3b')]=[{'all':!![]}];}_0x40f630=_['merge']({},_0x40f630,_0x54a7d7['options']);return db[_0x9240('0x26')][_0x9240('0x1e')](_0x40f630)[_0x9240('0x12')](handleEntityNotFound(_0x3a152e,null))['then'](respondWithResult(_0x3a152e,null))['catch'](handleError(_0x3a152e,null));};exports[_0x9240('0x20')]=function(_0x294352,_0x521a6a){return db[_0x9240('0x26')][_0x9240('0x1e')]({'where':{'id':_0x294352[_0x9240('0x3e')]['id']}})[_0x9240('0x12')](handleEntityNotFound(_0x521a6a,null))['then'](removeEntity(_0x521a6a,null))['catch'](handleError(_0x521a6a,null));};exports['create']=function(_0xff8f2f,_0x283cf0){if(_0xff8f2f[_0x9240('0x40')][_0x9240('0x1d')]===_0x9240('0x41')&&!_[_0x9240('0x42')](_0xff8f2f[_0x9240('0x40')][_0x9240('0x43')],'_')){_0xff8f2f[_0x9240('0x40')][_0x9240('0x43')]='_'[_0x9240('0x44')](_0xff8f2f['body'][_0x9240('0x43')]);}return db['VoiceExtension']['create'](_0xff8f2f['body'],{'raw':![]})[_0x9240('0x12')](function(_0x512a63){var _0x3122ef=_0xff8f2f[_0x9240('0x45')][_0x9240('0x13')]({'plain':!![]});if(!_0x3122ef)throw new Error(_0x9240('0x46'));if(_0x3122ef[_0x9240('0x47')]===_0x9240('0x45')){var _0x3f9034=_0x512a63[_0x9240('0x13')]({'plain':!![]});var _0x5e6ac1=[{'name':_0x9240('0x14'),'value':'inbound'},{'name':_0x9240('0x16'),'value':_0x9240('0x41')},{'name':_0x9240('0x17'),'value':_0x9240('0x18')}];var _0x5d75fd=_['find'](_0x5e6ac1,['value',_0x3f9034['type']])[_0x9240('0x23')];return db['UserProfileSection'][_0x9240('0x1e')]({'where':{'name':_0x5d75fd,'userProfileId':_0x3122ef[_0x9240('0x48')]},'raw':!![]})[_0x9240('0x12')](function(_0x1288ff){if(_0x1288ff&&_0x1288ff[_0x9240('0x49')]===0x0){return db[_0x9240('0x1f')][_0x9240('0x4a')]({'name':_0x3f9034[_0x9240('0x23')],'resourceId':_0x3f9034['id'],'type':_0x1288ff[_0x9240('0x23')],'sectionId':_0x1288ff['id']},{})[_0x9240('0x12')](function(){return _0x512a63;});}else{return _0x512a63;}})[_0x9240('0x4b')](function(_0x49c604){logger[_0x9240('0x21')](_0x9240('0x4c'),_0x49c604);throw _0x49c604;});}return _0x512a63;})[_0x9240('0x12')](respondWithResult(_0x283cf0,0xc9))[_0x9240('0x4b')](handleError(_0x283cf0,null));};exports[_0x9240('0x4d')]=function(_0x5eadc7,_0x431dc5){if(_0x5eadc7[_0x9240('0x40')]['id']){delete _0x5eadc7[_0x9240('0x40')]['id'];}return db[_0x9240('0x26')][_0x9240('0x1e')]({'where':{'id':_0x5eadc7[_0x9240('0x3e')]['id']}})[_0x9240('0x12')](handleEntityNotFound(_0x431dc5,null))[_0x9240('0x12')](function(_0x2355c7){if(_0x2355c7){return db['VoiceExtension']['update'](_[_0x9240('0x34')](_0x5eadc7[_0x9240('0x40')],['exten',_0x9240('0x4e'),_0x9240('0x4f'),_0x9240('0x50'),'cutdigits','mandatoryDisposition',_0x9240('0x51')]),{'where':{'context':_0x2355c7[_0x9240('0x4e')],'exten':_0x2355c7[_0x9240('0x43')]},'individualHooks':!![]})[_0x9240('0x12')](function(_0x7684c9){return _0x7684c9;});}return null;})[_0x9240('0x12')](respondWithStatusCode(_0x431dc5,null))[_0x9240('0x4b')](handleError(_0x431dc5,null));};exports['addApplications']=function(_0x496bd6,_0x509841){var _0x55c285=_0x496bd6[_0x9240('0x3e')]['id'];var _0x3f4841=_0x496bd6[_0x9240('0x40')];var _0x320172=0xc8;var _0x3ea2be=null;return db['sequelize'][_0x9240('0x52')]({'isolationLevel':db['sequelize'][_0x9240('0x53')]['ISOLATION_LEVELS'][_0x9240('0x54')]},function(_0x3c2e04){return db[_0x9240('0x26')]['findOne']({'where':{'id':_0x55c285},'transaction':_0x3c2e04})[_0x9240('0x12')](function(_0x56ac56){if(_0x56ac56){return db[_0x9240('0x26')]['destroy']({'where':{'VoiceExtensionId':_0x55c285},'transaction':_0x3c2e04})[_0x9240('0x12')](function(){var _0x21aca7=_[_0x9240('0x1a')](_0x3f4841,function(_0xe3660f){_0xe3660f['VoiceExtensionId']=_0x55c285;_0xe3660f[_0x9240('0x55')]=!![];return _0xe3660f;});return _0x56ac56[_0x9240('0x56')](_0x21aca7);})[_0x9240('0x12')](function(_0x50d3d1){return db[_0x9240('0x26')][_0x9240('0x57')](_0x50d3d1,{'transaction':_0x3c2e04});});}else{_0x320172=0x194;_0x3ea2be=[];}});})[_0x9240('0x12')](function(){if(_0x320172!==0x194){return db[_0x9240('0x26')][_0x9240('0x58')]({'where':{'isApp':!![],'VoiceExtensionId':_0x55c285},'order':_0x9240('0x59')})[_0x9240('0x12')](function(_0x31653f){_0x3ea2be=_0x31653f;});}})[_0x9240('0x4b')](function(_0x2acfc2){_0x320172=0x1f4;logger['error'](_0x2acfc2[_0x9240('0x22')]);if(_0x2acfc2[_0x9240('0x23')]){delete _0x2acfc2[_0x9240('0x23')];}_0x3ea2be=_0x2acfc2;})['finally'](function(){if(_0x3ea2be===null){_0x509841['sendStatus'](_0x320172);}else{if(_0x320172===0x1f4){_0x509841['status'](_0x320172)['send'](_0x3ea2be);}else{_0x509841[_0x9240('0x9')](_0x320172)[_0x9240('0xb')](_0x3ea2be);}}});};
\ No newline at end of file
+var _0xbf62=['cast(priority\x20as\x20unsigned)','stack','finally','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','limit','undefined','count','offset','set','json','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','ignore','map','value','includes','type','find','name','UserProfileResource','error','send','index','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceExtension','rows','params','keys','includeAll','include','catch','startsWith','body','exten','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','outbound','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','cutdigits','mandatoryDisposition','alias','context','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','createRouting','bulkCreate','findAndCountAll'];(function(_0x79e04c,_0x4019d0){var _0x5119ee=function(_0x732701){while(--_0x732701){_0x79e04c['push'](_0x79e04c['shift']());}};_0x5119ee(++_0x4019d0);}(_0xbf62,0x1ca));var _0x2bf6=function(_0x2cc548,_0x1c4c49){_0x2cc548=_0x2cc548-0x0;var _0x1e08c3=_0xbf62[_0x2cc548];return _0x1e08c3;};'use strict';var _=require(_0x2bf6('0x0'));var Redis=require(_0x2bf6('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x2bf6('0x2'))(_0x2bf6('0x3'));var config=require(_0x2bf6('0x4'));var db=require(_0x2bf6('0x5'))['db'];config['redis']=_['defaults'](config[_0x2bf6('0x6')],{'host':_0x2bf6('0x7'),'port':0x18eb});var socket=require(_0x2bf6('0x8'))(new Redis(config[_0x2bf6('0x6')]));require(_0x2bf6('0x9'))[_0x2bf6('0xa')](socket);function respondWithStatusCode(_0x561da3,_0x1f7441){_0x1f7441=_0x1f7441||0xcc;return function(_0x1414e2){if(_0x1414e2){return _0x561da3[_0x2bf6('0xb')](_0x1f7441);}return _0x561da3['status'](_0x1f7441)['end']();};}function respondWithResult(_0x53c020,_0x1d6c12){_0x1d6c12=_0x1d6c12||0xc8;return function(_0x3d6588){if(_0x3d6588){return _0x53c020[_0x2bf6('0xc')](_0x1d6c12)['json'](_0x3d6588);}};}function respondWithFilteredResult(_0x5c55a3,_0x58d8f8){return function(_0x278122){if(_0x278122){var _0x11e8bc=typeof _0x58d8f8['offset']==='undefined'&&typeof _0x58d8f8[_0x2bf6('0xd')]===_0x2bf6('0xe');var _0x421297=_0x278122[_0x2bf6('0xf')];var _0x20d944=_0x11e8bc?0x0:_0x58d8f8['offset'];var _0x5b1518=_0x11e8bc?_0x278122[_0x2bf6('0xf')]:_0x58d8f8[_0x2bf6('0x10')]+_0x58d8f8[_0x2bf6('0xd')];var _0x12ece5;if(_0x5b1518>=_0x421297){_0x5b1518=_0x421297;_0x12ece5=0xc8;}else{_0x12ece5=0xce;}_0x5c55a3[_0x2bf6('0xc')](_0x12ece5);return _0x5c55a3[_0x2bf6('0x11')]('Content-Range',_0x20d944+'-'+_0x5b1518+'/'+_0x421297)[_0x2bf6('0x12')](_0x278122);}return null;};}function removeEntity(_0x3d42f8){return function(_0xb61de9){if(_0xb61de9){return _0xb61de9[_0x2bf6('0x13')]()[_0x2bf6('0x14')](function(){var _0x4b66ff=_0xb61de9[_0x2bf6('0x15')]({'plain':!![]});var _0x2f5594=[{'name':_0x2bf6('0x16'),'value':_0x2bf6('0x17'),'ignore':![]},{'name':_0x2bf6('0x18'),'value':'outbound','ignore':![]},{'name':_0x2bf6('0x19'),'value':_0x2bf6('0x1a'),'ignore':![]}];var _0x3d9f67=_(_0x2f5594)['filter'](_0x2bf6('0x1b'))[_0x2bf6('0x1c')](_0x2bf6('0x1d'))['value']();if(_[_0x2bf6('0x1e')](_0x3d9f67,_0x4b66ff[_0x2bf6('0x1f')])){return;}var _0x22aaad=_[_0x2bf6('0x20')](_0x2f5594,[_0x2bf6('0x1d'),_0x4b66ff['type']])[_0x2bf6('0x21')];return db[_0x2bf6('0x22')][_0x2bf6('0x13')]({'where':{'type':_0x22aaad,'resourceId':_0x4b66ff['id']}})[_0x2bf6('0x14')](function(){return _0xb61de9;});})['then'](function(){_0x3d42f8[_0x2bf6('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf0132d){return function(_0x1f4d2c){if(!_0x1f4d2c){_0xf0132d[_0x2bf6('0xb')](0x194);}return _0x1f4d2c;};}function handleError(_0x33260a,_0xfeffdf){_0xfeffdf=_0xfeffdf||0x1f4;return function(_0x170dae){logger[_0x2bf6('0x23')](_0x170dae['stack']);if(_0x170dae[_0x2bf6('0x21')]){delete _0x170dae[_0x2bf6('0x21')];}_0x33260a['status'](_0xfeffdf)[_0x2bf6('0x24')](_0x170dae);};}exports[_0x2bf6('0x25')]=function(_0x1c1de1,_0x53ce63){var _0x10db04={},_0x287e29={},_0x222bd9={'count':0x0,'rows':[]};var _0x2b02b9=_[_0x2bf6('0x1c')](db['VoiceExtension']['rawAttributes'],function(_0x1fc342){return{'name':_0x1fc342['fieldName'],'type':_0x1fc342['type']['key']};});_0x287e29[_0x2bf6('0x26')]=_[_0x2bf6('0x1c')](_0x2b02b9,_0x2bf6('0x21'));_0x287e29[_0x2bf6('0x27')]=_['keys'](_0x1c1de1[_0x2bf6('0x27')]);_0x287e29[_0x2bf6('0x28')]=_[_0x2bf6('0x29')](_0x287e29['model'],_0x287e29[_0x2bf6('0x27')]);_0x10db04[_0x2bf6('0x2a')]=_[_0x2bf6('0x29')](_0x287e29[_0x2bf6('0x26')],qs[_0x2bf6('0x2b')](_0x1c1de1[_0x2bf6('0x27')][_0x2bf6('0x2b')]));_0x10db04[_0x2bf6('0x2a')]=_0x10db04['attributes']['length']?_0x10db04[_0x2bf6('0x2a')]:_0x287e29['model'];if(!_0x1c1de1[_0x2bf6('0x27')][_0x2bf6('0x2c')](_0x2bf6('0x2d'))){_0x10db04[_0x2bf6('0xd')]=qs['limit'](_0x1c1de1[_0x2bf6('0x27')][_0x2bf6('0xd')]);_0x10db04[_0x2bf6('0x10')]=qs[_0x2bf6('0x10')](_0x1c1de1['query'][_0x2bf6('0x10')]);}_0x10db04[_0x2bf6('0x2e')]=qs['sort'](_0x1c1de1[_0x2bf6('0x27')][_0x2bf6('0x2f')]);_0x10db04[_0x2bf6('0x30')]=qs[_0x2bf6('0x28')](_[_0x2bf6('0x31')](_0x1c1de1[_0x2bf6('0x27')],_0x287e29[_0x2bf6('0x28')]),_0x2b02b9);if(_0x1c1de1[_0x2bf6('0x27')][_0x2bf6('0x32')]){_0x10db04['where']=_[_0x2bf6('0x33')](_0x10db04[_0x2bf6('0x30')],{'$or':_[_0x2bf6('0x1c')](_0x2b02b9,function(_0x5d8074){if(_0x5d8074[_0x2bf6('0x1f')]!==_0x2bf6('0x34')){var _0x3e3d2d={};_0x3e3d2d[_0x5d8074[_0x2bf6('0x21')]]={'$like':'%'+_0x1c1de1[_0x2bf6('0x27')][_0x2bf6('0x32')]+'%'};return _0x3e3d2d;}})});}_0x10db04=_[_0x2bf6('0x33')]({},_0x10db04,_0x1c1de1[_0x2bf6('0x35')]);var _0x1f5f0d={'where':_0x10db04[_0x2bf6('0x30')]};return db[_0x2bf6('0x36')]['count'](_0x1f5f0d)[_0x2bf6('0x14')](function(_0x5c46f2){_0x222bd9['count']=_0x5c46f2;if(_0x1c1de1[_0x2bf6('0x27')]['includeAll']){_0x10db04['include']=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x10db04);})[_0x2bf6('0x14')](function(_0x120d31){_0x222bd9[_0x2bf6('0x37')]=_0x120d31;return _0x222bd9;})['then'](respondWithFilteredResult(_0x53ce63,_0x10db04))['catch'](handleError(_0x53ce63,null));};exports['show']=function(_0x1607cc,_0x44904c){var _0x34f027={'raw':![],'where':{'id':_0x1607cc[_0x2bf6('0x38')]['id']}},_0x4905c2={};_0x4905c2[_0x2bf6('0x26')]=_[_0x2bf6('0x39')](db[_0x2bf6('0x36')]['rawAttributes']);_0x4905c2[_0x2bf6('0x27')]=_[_0x2bf6('0x39')](_0x1607cc['query']);_0x4905c2[_0x2bf6('0x28')]=_[_0x2bf6('0x29')](_0x4905c2['model'],_0x4905c2[_0x2bf6('0x27')]);_0x34f027[_0x2bf6('0x2a')]=_[_0x2bf6('0x29')](_0x4905c2['model'],qs[_0x2bf6('0x2b')](_0x1607cc[_0x2bf6('0x27')][_0x2bf6('0x2b')]));_0x34f027[_0x2bf6('0x2a')]=_0x34f027[_0x2bf6('0x2a')]['length']?_0x34f027[_0x2bf6('0x2a')]:_0x4905c2[_0x2bf6('0x26')];if(_0x1607cc['query'][_0x2bf6('0x3a')]){_0x34f027[_0x2bf6('0x3b')]=[{'all':!![]}];}_0x34f027=_[_0x2bf6('0x33')]({},_0x34f027,_0x1607cc[_0x2bf6('0x35')]);return db[_0x2bf6('0x36')][_0x2bf6('0x20')](_0x34f027)[_0x2bf6('0x14')](handleEntityNotFound(_0x44904c,null))['then'](respondWithResult(_0x44904c,null))['catch'](handleError(_0x44904c,null));};exports[_0x2bf6('0x13')]=function(_0x41e3c8,_0x598b06){return db[_0x2bf6('0x36')]['find']({'where':{'id':_0x41e3c8['params']['id']}})[_0x2bf6('0x14')](handleEntityNotFound(_0x598b06,null))['then'](removeEntity(_0x598b06,null))[_0x2bf6('0x3c')](handleError(_0x598b06,null));};exports['create']=function(_0x41b136,_0x4365e7){if(_0x41b136['body']['type']==='outbound'&&!_[_0x2bf6('0x3d')](_0x41b136[_0x2bf6('0x3e')]['exten'],'_')){_0x41b136[_0x2bf6('0x3e')][_0x2bf6('0x3f')]='_'['concat'](_0x41b136[_0x2bf6('0x3e')][_0x2bf6('0x3f')]);}return db[_0x2bf6('0x36')]['create'](_0x41b136['body'],{'raw':![]})['then'](function(_0x1c67e5){var _0x59aa5c=_0x41b136[_0x2bf6('0x40')][_0x2bf6('0x15')]({'plain':!![]});if(!_0x59aa5c)throw new Error(_0x2bf6('0x41'));if(_0x59aa5c[_0x2bf6('0x42')]==='user'){var _0xd1badf=_0x1c67e5[_0x2bf6('0x15')]({'plain':!![]});var _0x2d60c1=[{'name':'InboundRoutes','value':_0x2bf6('0x17')},{'name':_0x2bf6('0x18'),'value':_0x2bf6('0x43')},{'name':_0x2bf6('0x19'),'value':_0x2bf6('0x1a')}];var _0x2eb5d2=_['find'](_0x2d60c1,[_0x2bf6('0x1d'),_0xd1badf[_0x2bf6('0x1f')]])[_0x2bf6('0x21')];return db['UserProfileSection'][_0x2bf6('0x20')]({'where':{'name':_0x2eb5d2,'userProfileId':_0x59aa5c[_0x2bf6('0x44')]},'raw':!![]})[_0x2bf6('0x14')](function(_0x2e0932){if(_0x2e0932&&_0x2e0932[_0x2bf6('0x45')]===0x0){return db['UserProfileResource']['create']({'name':_0xd1badf['name'],'resourceId':_0xd1badf['id'],'type':_0x2e0932['name'],'sectionId':_0x2e0932['id']},{})[_0x2bf6('0x14')](function(){return _0x1c67e5;});}else{return _0x1c67e5;}})['catch'](function(_0x1b5b43){logger[_0x2bf6('0x23')](_0x2bf6('0x46'),_0x1b5b43);throw _0x1b5b43;});}return _0x1c67e5;})[_0x2bf6('0x14')](respondWithResult(_0x4365e7,0xc9))[_0x2bf6('0x3c')](handleError(_0x4365e7,null));};exports[_0x2bf6('0x47')]=function(_0x222dcd,_0x458ed5){if(_0x222dcd[_0x2bf6('0x3e')]['id']){delete _0x222dcd[_0x2bf6('0x3e')]['id'];}return db[_0x2bf6('0x36')][_0x2bf6('0x20')]({'where':{'id':_0x222dcd['params']['id']}})[_0x2bf6('0x14')](handleEntityNotFound(_0x458ed5,null))[_0x2bf6('0x14')](function(_0xb24ae5){if(_0xb24ae5){return db[_0x2bf6('0x36')]['update'](_['pick'](_0x222dcd[_0x2bf6('0x3e')],[_0x2bf6('0x3f'),'context',_0x2bf6('0x48'),'recordingFormat',_0x2bf6('0x49'),_0x2bf6('0x4a'),_0x2bf6('0x4b')]),{'where':{'context':_0xb24ae5[_0x2bf6('0x4c')],'exten':_0xb24ae5['exten']},'individualHooks':!![]})[_0x2bf6('0x14')](function(_0xb825e9){return _0xb825e9;});}return null;})[_0x2bf6('0x14')](respondWithStatusCode(_0x458ed5,null))[_0x2bf6('0x3c')](handleError(_0x458ed5,null));};exports[_0x2bf6('0x4d')]=function(_0x2482da,_0x494942){var _0x1265bd=_0x2482da['params']['id'];var _0x225ea9=_0x2482da['body'];var _0xdcfe95=0xc8;var _0x46accf=null;return db[_0x2bf6('0x4e')][_0x2bf6('0x4f')]({'isolationLevel':db[_0x2bf6('0x4e')][_0x2bf6('0x50')][_0x2bf6('0x51')][_0x2bf6('0x52')]},function(_0x395a04){return db[_0x2bf6('0x36')][_0x2bf6('0x53')]({'where':{'id':_0x1265bd},'transaction':_0x395a04})[_0x2bf6('0x14')](function(_0xcf86f5){if(_0xcf86f5){return db[_0x2bf6('0x36')][_0x2bf6('0x13')]({'where':{'VoiceExtensionId':_0x1265bd},'transaction':_0x395a04})[_0x2bf6('0x14')](function(){var _0x240f8d=_[_0x2bf6('0x1c')](_0x225ea9,function(_0x115c0e){_0x115c0e[_0x2bf6('0x54')]=_0x1265bd;_0x115c0e['isApp']=!![];return _0x115c0e;});return _0xcf86f5[_0x2bf6('0x55')](_0x240f8d);})[_0x2bf6('0x14')](function(_0x3a4eb8){return db[_0x2bf6('0x36')][_0x2bf6('0x56')](_0x3a4eb8,{'transaction':_0x395a04});});}else{_0xdcfe95=0x194;_0x46accf=[];}});})[_0x2bf6('0x14')](function(){if(_0xdcfe95!==0x194){return db[_0x2bf6('0x36')][_0x2bf6('0x57')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1265bd},'order':_0x2bf6('0x58')})[_0x2bf6('0x14')](function(_0x4810b7){_0x46accf=_0x4810b7;});}})[_0x2bf6('0x3c')](function(_0x43654c){_0xdcfe95=0x1f4;logger[_0x2bf6('0x23')](_0x43654c[_0x2bf6('0x59')]);if(_0x43654c[_0x2bf6('0x21')]){delete _0x43654c[_0x2bf6('0x21')];}_0x46accf=_0x43654c;})[_0x2bf6('0x5a')](function(){if(_0x46accf===null){_0x494942[_0x2bf6('0xb')](_0xdcfe95);}else{if(_0xdcfe95===0x1f4){_0x494942['status'](_0xdcfe95)[_0x2bf6('0x24')](_0x46accf);}else{_0x494942[_0x2bf6('0xc')](_0xdcfe95)[_0x2bf6('0x12')](_0x46accf);}}});};
\ No newline at end of file
index 35f28dd..a0ab78a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e89=['hook','events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','emit'];(function(_0x50d851,_0x34737d){var _0xedb354=function(_0xff36e3){while(--_0xff36e3){_0x50d851['push'](_0x50d851['shift']());}};_0xedb354(++_0x34737d);}(_0x1e89,0x1c1));var _0x91e8=function(_0x44b615,_0x4ff096){_0x44b615=_0x44b615-0x0;var _0x6a585c=_0x1e89[_0x44b615];return _0x6a585c;};'use strict';var EventEmitter=require(_0x91e8('0x0'));var VoiceExtension=require(_0x91e8('0x1'))['db'][_0x91e8('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x91e8('0x3')](0x0);var events={'afterCreate':_0x91e8('0x4'),'afterUpdate':_0x91e8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x45f7de){return function(_0x5dedb5,_0x242eea,_0x36b651){VoiceExtensionEvents[_0x91e8('0x6')](_0x45f7de+':'+_0x5dedb5['id'],_0x5dedb5);VoiceExtensionEvents[_0x91e8('0x6')](_0x45f7de,_0x5dedb5);_0x36b651(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x91e8('0x7')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0xec22=['../../mysqldb','save','update','remove','emit','hook','exports','events'];(function(_0x3c2cc1,_0x4379a0){var _0x4312de=function(_0x144420){while(--_0x144420){_0x3c2cc1['push'](_0x3c2cc1['shift']());}};_0x4312de(++_0x4379a0);}(_0xec22,0xb7));var _0x2ec2=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xec22[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0x2ec2('0x0'));var VoiceExtension=require(_0x2ec2('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2ec2('0x2'),'afterUpdate':_0x2ec2('0x3'),'afterDestroy':_0x2ec2('0x4')};function emitEvent(_0x4f4bc1){return function(_0x43dbf1,_0x1d610b,_0x5bf062){VoiceExtensionEvents[_0x2ec2('0x5')](_0x4f4bc1+':'+_0x43dbf1['id'],_0x43dbf1);VoiceExtensionEvents[_0x2ec2('0x5')](_0x4f4bc1,_0x43dbf1);_0x5bf062(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x2ec2('0x6')](e,emitEvent(event));}}module[_0x2ec2('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
index b99fcee..ef4b3d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e69=['_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','length','phone','param','prefix','SIP','join','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','*,*,*,*','intervals','IntervalId','map','filter','toLowerCase','tag','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','playback','appType','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appdata','agi','XMCS-UNIQUEID=${CHANNEL(LINKEDID)}','priority','last','concat','catch','define','VoiceExtension','voice_extensions','then','lodash','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','NoOp','cutdigits','${EXTEN:','${EXTEN}','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none'];(function(_0x252907,_0x4bda80){var _0x3726ed=function(_0x557fbf){while(--_0x557fbf){_0x252907['push'](_0x252907['shift']());}};_0x3726ed(++_0x4bda80);}(_0x8e69,0x1d9));var _0x98e6=function(_0x33f92c,_0x531557){_0x33f92c=_0x33f92c-0x0;var _0xe04ed1=_0x8e69[_0x33f92c];return _0xe04ed1;};'use strict';var _=require(_0x98e6('0x0'));var attributes=require(_0x98e6('0x1'));module[_0x98e6('0x2')]=function(_0x5878f5){var _0x17f808=_0x5878f5[_0x98e6('0x3')];function _0x8069e0(_0xf682d7){var _0x12cce4=0x2;var _0x8c1c62=[{'type':_0xf682d7[_0x98e6('0x4')],'app':_0x98e6('0x5'),'appdata':_0x98e6('0x6')+_0xf682d7['type'],'context':_0xf682d7[_0x98e6('0x7')],'exten':_0xf682d7[_0x98e6('0x8')],'priority':_0x12cce4++,'VoiceExtensionId':_0xf682d7['id']},{'type':_0xf682d7[_0x98e6('0x4')],'app':_0xf682d7[_0x98e6('0x9')]?_0x98e6('0x5'):'NoOp','appdata':_0xf682d7[_0x98e6('0x9')]?_0x98e6('0xa')+_0xf682d7[_0x98e6('0x9')]:_0x98e6('0xb'),'context':_0xf682d7[_0x98e6('0x7')],'exten':_0xf682d7[_0x98e6('0x8')],'priority':_0x12cce4++,'VoiceExtensionId':_0xf682d7['id']}];if(_0xf682d7[_0x98e6('0x4')]===_0x98e6('0xc')){_0x8c1c62[_0x98e6('0xd')]({'type':_0x98e6('0xc'),'app':_0x98e6('0x5'),'appdata':_0x98e6('0xe')+_0xf682d7['id'],'context':_0xf682d7[_0x98e6('0x7')],'exten':_0xf682d7['exten'],'priority':_0x12cce4++,'VoiceExtensionId':_0xf682d7['id']});}_0x8c1c62[_0x98e6('0xd')]({'type':_0xf682d7[_0x98e6('0x4')],'app':_0x98e6('0x5'),'appdata':_0x98e6('0xf'),'context':_0xf682d7[_0x98e6('0x7')],'exten':_0xf682d7[_0x98e6('0x8')],'priority':_0x12cce4++,'VoiceExtensionId':_0xf682d7['id']},{'type':_0xf682d7[_0x98e6('0x4')],'app':'Set','appdata':_0x98e6('0x10'),'context':_0xf682d7[_0x98e6('0x7')],'exten':_0xf682d7['exten'],'priority':_0x12cce4++,'VoiceExtensionId':_0xf682d7['id']},{'type':_0xf682d7[_0x98e6('0x4')],'app':_0x98e6('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0xf682d7['context'],'exten':_0xf682d7['exten'],'priority':_0x12cce4++,'VoiceExtensionId':_0xf682d7['id']});return _0x8c1c62;}function _0x50f15a(_0x1daa29){var _0x22798f=0x2;var _0x640e2d=[{'type':_0x98e6('0x11'),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x12'),'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':_0x1daa29[_0x98e6('0x9')]?_0x98e6('0x5'):_0x98e6('0x13'),'appdata':_0x1daa29[_0x98e6('0x9')]?_0x98e6('0xa')+_0x1daa29['alias']:_0x98e6('0xb'),'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29['exten'],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':'Set','appdata':'CDR(destination)='+(_0x1daa29[_0x98e6('0x14')]?_0x98e6('0x15')+_0x1daa29[_0x98e6('0x14')]+'}':_0x98e6('0x16')),'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':'outbound','app':'Set','appdata':'CDR(routeid)='+_0x1daa29['id'],'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':_0x98e6('0x17'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x22798f+0x2)+_0x98e6('0x18')+(_0x22798f+0x1)+')','context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':_0x98e6('0x5'),'appdata':_0x1daa29['cutdigits']?_0x98e6('0x19')+_0x1daa29[_0x98e6('0x14')]+'}':'CDR(prefix)=noprefix','context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':_0x98e6('0x5'),'appdata':_0x98e6('0xf'),'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29['exten'],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x10'),'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x1a'),'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x1b')+_0x1daa29['id'],'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']}];if(_0x1daa29[_0x98e6('0x1c')](_0x98e6('0x1d'))&&_0x1daa29[_0x98e6('0x1d')]!==_0x98e6('0x1e')){_0x640e2d[_0x98e6('0xd')]({'type':_0x98e6('0x11'),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x1f'),'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29[_0x98e6('0x8')],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']},{'type':_0x98e6('0x11'),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x20')+_0x1daa29['recordingFormat']||_0x98e6('0x21'),'context':_0x1daa29[_0x98e6('0x7')],'exten':_0x1daa29['exten'],'priority':_0x22798f++,'VoiceExtensionId':_0x1daa29['id']});}return _0x640e2d;}function _0x1c5f68(_0x40446d,_0x36f046){var _0x3411d2=[{'name':_0x98e6('0x22'),'param':0x0},{'name':_0x98e6('0x23'),'param':0x1},{'name':_0x98e6('0x24'),'param':0x2},{'name':_0x98e6('0x25'),'param':0x3}];var _0x2952ef={};var _0x39280b=_0x36f046[_0x98e6('0x26')](',');var _0x1aa505=[];for(var _0x10b780=0x0;_0x10b780<_0x3411d2[_0x98e6('0x27')];_0x10b780++){switch(_0x3411d2[_0x10b780]['name']){case'trunk':_0x2952ef['trunk']=_0x39280b[_0x3411d2[_0x10b780]['param']][_0x98e6('0x26')]('/')[0x1];_0x2952ef[_0x98e6('0x28')]=_0x39280b[_0x3411d2[_0x10b780][_0x98e6('0x29')]][_0x98e6('0x26')]('/')[0x2];_0x2952ef[_0x98e6('0x2a')]=_0x2952ef['phone']?_0x2952ef[_0x98e6('0x28')][_0x98e6('0x26')]('$')[0x0]:undefined;_0x2952ef[_0x98e6('0x28')]=_0x40446d[_0x98e6('0x14')]?(_0x2952ef[_0x98e6('0x2a')]||'')+'${EXTEN:'+_0x40446d[_0x98e6('0x14')]+'}':(_0x2952ef[_0x98e6('0x2a')]||'')+'${EXTEN}';_0x1aa505[_0x3411d2[_0x10b780]['param']]=[_0x98e6('0x2b'),_0x2952ef[_0x98e6('0x22')],_0x2952ef[_0x98e6('0x28')]][_0x98e6('0x2c')]('/');break;case _0x98e6('0x24'):_0x2952ef[_0x98e6('0x24')]=_0x39280b[_0x3411d2[_0x10b780][_0x98e6('0x29')]];if(_0x40446d[_0x98e6('0x1d')]!==_0x98e6('0x1e')){if(_0x2952ef[_0x98e6('0x24')]['indexOf']('U(xcally-mixmonitor-context)')<0x0){_0x2952ef[_0x98e6('0x24')]+=_0x98e6('0x2d');}}else{_0x2952ef['options']=_0x2952ef['options'][_0x98e6('0x2e')](_0x98e6('0x2d'),'');}_0x1aa505[_0x3411d2[_0x10b780][_0x98e6('0x29')]]=_0x2952ef[_0x98e6('0x24')];break;default:_0x1aa505[_0x3411d2[_0x10b780][_0x98e6('0x29')]]=_0x39280b[_0x3411d2[_0x10b780][_0x98e6('0x29')]];}}return _0x1aa505[_0x98e6('0x2c')](',');}function _0x359d4b(_0x2236cb,_0xdfa804,_0x421cb6){return new Promise(function(_0x2b8c15,_0x1a427f){var _0x1ca36d=[];if(_[_0x98e6('0x2f')](_0xdfa804))return _0x2b8c15(_0x1ca36d);_0x17f808[_0x98e6('0x30')][_0x98e6('0x31')]({'attributes':['id',_0x98e6('0x32'),'IntervalId'],'raw':!![]})['then'](function(_0xde8568){for(var _0x282d0b=0x0,_0x3f0365=0x0;_0x282d0b<_0xdfa804['length'];_0x282d0b++,_0x3f0365=0x0){var _0x430448=_0xdfa804[_0x282d0b];var _0x537ccb=[];var _0x290cf8=[];delete _0x430448['id'];if(_0x430448[_0x98e6('0x32')]!==_0x98e6('0x33')){_0x430448[_0x98e6('0x34')]=[_0x430448['interval']];}else{_0x430448['intervals']=_0x430448[_0x98e6('0x35')]?_[_0x98e6('0x36')](_[_0x98e6('0x37')](_0xde8568,{'IntervalId':_0x430448[_0x98e6('0x35')]}),'interval'):[];}_0x430448['context']=_0x2236cb['context'];_0x430448[_0x98e6('0x8')]=_0x2236cb[_0x98e6('0x8')];if(_0x430448[_0x98e6('0x4')])_0x430448[_0x98e6('0x4')]=_0x430448['type'][_0x98e6('0x38')]();if(_0x2236cb[_0x98e6('0x4')]===_0x98e6('0x11')){if(_0x430448['hasOwnProperty'](_0x98e6('0x39'))&&_0x430448[_0x98e6('0x39')]&&_0x430448[_0x98e6('0x39')]!=='--'){_0x537ccb[_0x98e6('0xd')]({'type':_0x430448['type']['toLowerCase'](),'app':_0x98e6('0x5'),'appdata':'CDR(tag)='+_0x430448[_0x98e6('0x39')],'context':_0x2236cb[_0x98e6('0x7')],'exten':_0x2236cb[_0x98e6('0x8')],'priority':_0x430448[_0x98e6('0x34')]['length']+_0x421cb6+_0x3f0365++,'VoiceExtensionId':_0x2236cb['id']});}_0x537ccb[_0x98e6('0xd')]({'type':_0x430448['type'][_0x98e6('0x38')](),'app':'ExecIf','appdata':_0x98e6('0x3a')+(_0x430448[_0x98e6('0x3b')]?_0x98e6('0x3c')+_0x430448[_0x98e6('0x3b')]+')':_0x98e6('0x3d')),'context':_0x2236cb[_0x98e6('0x7')],'exten':_0x2236cb[_0x98e6('0x8')],'priority':_0x430448[_0x98e6('0x34')][_0x98e6('0x27')]+_0x421cb6+_0x3f0365++,'VoiceExtensionId':_0x2236cb['id']});}else{if(_0x430448['hasOwnProperty']('answer')){if(['queue',_0x98e6('0x3e')]['includes'](_0x430448['app'][_0x98e6('0x38')]())&&_0x430448[_0x98e6('0x3f')]!==_0x98e6('0x40')){if(_0x430448[_0x98e6('0x41')]){_0x537ccb['push']({'type':_0x430448[_0x98e6('0x4')][_0x98e6('0x38')](),'app':_0x98e6('0x17'),'appdata':_0x98e6('0x42'),'context':_0x2236cb[_0x98e6('0x7')],'exten':_0x2236cb['exten'],'priority':_0x430448[_0x98e6('0x34')][_0x98e6('0x27')]+_0x421cb6+_0x3f0365++,'VoiceExtensionId':_0x2236cb['id']});_0x537ccb['push']({'type':_0x430448[_0x98e6('0x4')][_0x98e6('0x38')](),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x43'),'context':_0x2236cb[_0x98e6('0x7')],'exten':_0x2236cb['exten'],'priority':_0x430448[_0x98e6('0x34')][_0x98e6('0x27')]+_0x421cb6+_0x3f0365++,'VoiceExtensionId':_0x2236cb['id']});}else{_0x537ccb[_0x98e6('0xd')]({'type':_0x430448[_0x98e6('0x4')][_0x98e6('0x38')](),'app':_0x98e6('0x17'),'appdata':_0x98e6('0x44'),'context':_0x2236cb[_0x98e6('0x7')],'exten':_0x2236cb[_0x98e6('0x8')],'priority':_0x430448[_0x98e6('0x34')]['length']+_0x421cb6+_0x3f0365++,'VoiceExtensionId':_0x2236cb['id']});_0x537ccb[_0x98e6('0xd')]({'type':_0x430448[_0x98e6('0x4')]['toLowerCase'](),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x45'),'context':_0x2236cb['context'],'exten':_0x2236cb[_0x98e6('0x8')],'priority':_0x430448[_0x98e6('0x34')][_0x98e6('0x27')]+_0x421cb6+_0x3f0365++,'VoiceExtensionId':_0x2236cb['id']});}}}}for(var _0xa5cdd1=0x0;_0xa5cdd1<_0x430448[_0x98e6('0x34')]['length'];_0xa5cdd1++){var _0x31deff=_0x421cb6+_0x430448[_0x98e6('0x34')][_0x98e6('0x27')];var _0x82ae41=_0xa5cdd1===_0x430448[_0x98e6('0x34')]['length']-0x1?_0x421cb6+_0x537ccb[_0x98e6('0x27')]+_0x290cf8[_0x98e6('0x27')]+0x2:_0x421cb6+_0xa5cdd1+0x1;_0x537ccb[_0x98e6('0x46')](_0xa5cdd1,0x0,{'type':_0x2236cb[_0x98e6('0x4')],'app':_0x98e6('0x47'),'appdata':_0x430448['intervals'][_0xa5cdd1]+'?'+_0x2236cb[_0x98e6('0x7')]+_0x98e6('0x48')+_0x31deff+':'+_0x2236cb[_0x98e6('0x7')]+_0x98e6('0x48')+_0x82ae41,'exten':_0x2236cb[_0x98e6('0x8')],'context':_0x2236cb[_0x98e6('0x7')],'priority':_0x421cb6+_0xa5cdd1,'VoiceExtensionId':_0x2236cb['id']});}if(_0x430448[_0x98e6('0x3f')]==='outboundDial'){_0x430448[_0x98e6('0x49')]=_0x1c5f68(_0x2236cb,_0x430448[_0x98e6('0x49')]);}if(_0x430448['appType']===_0x98e6('0x4a')){_0x537ccb[_0x98e6('0xd')]({'type':_0x430448[_0x98e6('0x4')][_0x98e6('0x38')](),'app':_0x98e6('0x5'),'appdata':_0x98e6('0x4b'),'context':_0x2236cb[_0x98e6('0x7')],'exten':_0x2236cb[_0x98e6('0x8')],'priority':_0x430448[_0x98e6('0x34')][_0x98e6('0x27')]+_0x421cb6+_0x3f0365++,'VoiceExtensionId':_0x2236cb['id']});}_0x430448[_0x98e6('0x4c')]=_0x537ccb['length']?_[_0x98e6('0x4d')](_0x537ccb)[_0x98e6('0x4c')]+0x1:_0x421cb6;_0x1ca36d=_[_0x98e6('0x4e')](_0x1ca36d,_0x537ccb,[_0x430448],_0x290cf8);_0x421cb6=_[_0x98e6('0x4d')](_0x1ca36d)['priority']+0x1;}return _0x2b8c15(_0x1ca36d);})[_0x98e6('0x4f')](function(_0x770d1a){_0x1a427f(_0x770d1a);});});}return _0x5878f5[_0x98e6('0x50')](_0x98e6('0x51'),attributes,{'tableName':_0x98e6('0x52'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x1187ae){var _0x4f5e0c=this['get']({'plain':!![]});var _0x4f7660=_0x4f5e0c[_0x98e6('0x4')]==='outbound'?_0x50f15a(_0x4f5e0c):_0x8069e0(_0x4f5e0c);return _0x359d4b(_0x4f5e0c,_0x1187ae,_[_0x98e6('0x4d')](_0x4f7660)[_0x98e6('0x4c')]+0x1)[_0x98e6('0x53')](function(_0x2b6cf2){var _0x59c871=_[_0x98e6('0x4e')](_0x4f7660,_0x2b6cf2);_0x59c871[_0x98e6('0xd')]({'type':_0x4f5e0c[_0x98e6('0x4')],'app':'Hangup','exten':_0x4f5e0c[_0x98e6('0x8')],'context':_0x4f5e0c[_0x98e6('0x7')],'priority':_[_0x98e6('0x4d')](_0x59c871)[_0x98e6('0x4c')]+0x1,'VoiceExtensionId':_0x4f5e0c['id']});return _0x59c871;});}}});};
\ No newline at end of file
+var _0x2f16=['playback','includes','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','outboundDial','appdata','agi','priority','last','catch','define','VoiceExtension','voice_extensions','get','concat','models','type','CDR(type)=','context','exten','Set','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','timeout','options','url','length','name','trunk','param','split','phone','prefix','SIP','join','none','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','IntervalId','then','interval','*,*,*,*','intervals','map','filter','toLowerCase','hasOwnProperty','tag','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue'];(function(_0x50ae21,_0x4cecaf){var _0x164e2a=function(_0x1b1836){while(--_0x1b1836){_0x50ae21['push'](_0x50ae21['shift']());}};_0x164e2a(++_0x4cecaf);}(_0x2f16,0x164));var _0x62f1=function(_0x1e1975,_0x40935d){_0x1e1975=_0x1e1975-0x0;var _0x51639f=_0x2f16[_0x1e1975];return _0x51639f;};'use strict';var _=require('lodash');var attributes=require('./voiceExtension.attributes');module['exports']=function(_0x40c5a2){var _0x3f6987=_0x40c5a2[_0x62f1('0x0')];function _0x3bd251(_0x2ada24){var _0x5b7265=0x2;var _0x4f2dbc=[{'type':_0x2ada24[_0x62f1('0x1')],'app':'Set','appdata':_0x62f1('0x2')+_0x2ada24[_0x62f1('0x1')],'context':_0x2ada24[_0x62f1('0x3')],'exten':_0x2ada24[_0x62f1('0x4')],'priority':_0x5b7265++,'VoiceExtensionId':_0x2ada24['id']},{'type':_0x2ada24[_0x62f1('0x1')],'app':_0x2ada24['alias']?_0x62f1('0x5'):_0x62f1('0x6'),'appdata':_0x2ada24[_0x62f1('0x7')]?_0x62f1('0x8')+_0x2ada24[_0x62f1('0x7')]:_0x62f1('0x9'),'context':_0x2ada24[_0x62f1('0x3')],'exten':_0x2ada24[_0x62f1('0x4')],'priority':_0x5b7265++,'VoiceExtensionId':_0x2ada24['id']}];if(_0x2ada24['type']===_0x62f1('0xa')){_0x4f2dbc[_0x62f1('0xb')]({'type':_0x62f1('0xa'),'app':'Set','appdata':_0x62f1('0xc')+_0x2ada24['id'],'context':_0x2ada24[_0x62f1('0x3')],'exten':_0x2ada24[_0x62f1('0x4')],'priority':_0x5b7265++,'VoiceExtensionId':_0x2ada24['id']});}_0x4f2dbc[_0x62f1('0xb')]({'type':_0x2ada24[_0x62f1('0x1')],'app':'Set','appdata':_0x62f1('0xd'),'context':_0x2ada24[_0x62f1('0x3')],'exten':_0x2ada24[_0x62f1('0x4')],'priority':_0x5b7265++,'VoiceExtensionId':_0x2ada24['id']},{'type':_0x2ada24[_0x62f1('0x1')],'app':_0x62f1('0x5'),'appdata':_0x62f1('0xe'),'context':_0x2ada24[_0x62f1('0x3')],'exten':_0x2ada24[_0x62f1('0x4')],'priority':_0x5b7265++,'VoiceExtensionId':_0x2ada24['id']},{'type':_0x2ada24[_0x62f1('0x1')],'app':_0x62f1('0x5'),'appdata':_0x62f1('0xf'),'context':_0x2ada24[_0x62f1('0x3')],'exten':_0x2ada24[_0x62f1('0x4')],'priority':_0x5b7265++,'VoiceExtensionId':_0x2ada24['id']});return _0x4f2dbc;}function _0x3b630f(_0x5469b2){var _0x2bfacb=0x2;var _0x29a69e=[{'type':'outbound','app':'Set','appdata':_0x62f1('0x10'),'context':_0x5469b2[_0x62f1('0x3')],'exten':_0x5469b2['exten'],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':_0x62f1('0x11'),'app':_0x5469b2[_0x62f1('0x7')]?_0x62f1('0x5'):_0x62f1('0x6'),'appdata':_0x5469b2['alias']?_0x62f1('0x8')+_0x5469b2['alias']:_0x62f1('0x9'),'context':_0x5469b2[_0x62f1('0x3')],'exten':_0x5469b2[_0x62f1('0x4')],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':'outbound','app':'Set','appdata':_0x62f1('0x12')+(_0x5469b2[_0x62f1('0x13')]?_0x62f1('0x14')+_0x5469b2[_0x62f1('0x13')]+'}':_0x62f1('0x15')),'context':_0x5469b2['context'],'exten':_0x5469b2[_0x62f1('0x4')],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':_0x62f1('0x11'),'app':'Set','appdata':_0x62f1('0xc')+_0x5469b2['id'],'context':_0x5469b2['context'],'exten':_0x5469b2[_0x62f1('0x4')],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':_0x62f1('0x11'),'app':'ExecIf','appdata':_0x62f1('0x16')+(_0x2bfacb+0x2)+'):Goto('+(_0x2bfacb+0x1)+')','context':_0x5469b2[_0x62f1('0x3')],'exten':_0x5469b2['exten'],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':_0x62f1('0x11'),'app':_0x62f1('0x5'),'appdata':_0x5469b2[_0x62f1('0x13')]?'CDR(prefix)=${EXTEN:0:'+_0x5469b2[_0x62f1('0x13')]+'}':'CDR(prefix)=noprefix','context':_0x5469b2[_0x62f1('0x3')],'exten':_0x5469b2[_0x62f1('0x4')],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':_0x62f1('0x11'),'app':_0x62f1('0x5'),'appdata':_0x62f1('0xd'),'context':_0x5469b2[_0x62f1('0x3')],'exten':_0x5469b2['exten'],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':'outbound','app':_0x62f1('0x5'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x5469b2[_0x62f1('0x3')],'exten':_0x5469b2[_0x62f1('0x4')],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':_0x62f1('0x11'),'app':_0x62f1('0x5'),'appdata':_0x62f1('0xf'),'context':_0x5469b2[_0x62f1('0x3')],'exten':_0x5469b2[_0x62f1('0x4')],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':_0x62f1('0x11'),'app':'Set','appdata':_0x62f1('0x17')+_0x5469b2['id'],'context':_0x5469b2['context'],'exten':_0x5469b2[_0x62f1('0x4')],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']}];if(_0x5469b2['hasOwnProperty'](_0x62f1('0x18'))&&_0x5469b2[_0x62f1('0x18')]!=='none'){_0x29a69e[_0x62f1('0xb')]({'type':_0x62f1('0x11'),'app':_0x62f1('0x5'),'appdata':_0x62f1('0x19'),'context':_0x5469b2['context'],'exten':_0x5469b2['exten'],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']},{'type':_0x62f1('0x11'),'app':_0x62f1('0x5'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x5469b2['recordingFormat']||_0x62f1('0x1a'),'context':_0x5469b2[_0x62f1('0x3')],'exten':_0x5469b2[_0x62f1('0x4')],'priority':_0x2bfacb++,'VoiceExtensionId':_0x5469b2['id']});}return _0x29a69e;}function _0x4739b6(_0x5e104b,_0xd597d3){var _0x46477e=[{'name':'trunk','param':0x0},{'name':_0x62f1('0x1b'),'param':0x1},{'name':_0x62f1('0x1c'),'param':0x2},{'name':_0x62f1('0x1d'),'param':0x3}];var _0x4ee500={};var _0x4e8c65=_0xd597d3['split'](',');var _0x24e409=[];for(var _0x1e3e7a=0x0;_0x1e3e7a<_0x46477e[_0x62f1('0x1e')];_0x1e3e7a++){switch(_0x46477e[_0x1e3e7a][_0x62f1('0x1f')]){case _0x62f1('0x20'):_0x4ee500[_0x62f1('0x20')]=_0x4e8c65[_0x46477e[_0x1e3e7a][_0x62f1('0x21')]]['split']('/')[0x1];_0x4ee500['phone']=_0x4e8c65[_0x46477e[_0x1e3e7a][_0x62f1('0x21')]][_0x62f1('0x22')]('/')[0x2];_0x4ee500['prefix']=_0x4ee500['phone']?_0x4ee500[_0x62f1('0x23')][_0x62f1('0x22')]('$')[0x0]:undefined;_0x4ee500[_0x62f1('0x23')]=_0x5e104b['cutdigits']?(_0x4ee500['prefix']||'')+_0x62f1('0x14')+_0x5e104b[_0x62f1('0x13')]+'}':(_0x4ee500[_0x62f1('0x24')]||'')+_0x62f1('0x15');_0x24e409[_0x46477e[_0x1e3e7a][_0x62f1('0x21')]]=[_0x62f1('0x25'),_0x4ee500['trunk'],_0x4ee500['phone']][_0x62f1('0x26')]('/');break;case _0x62f1('0x1c'):_0x4ee500[_0x62f1('0x1c')]=_0x4e8c65[_0x46477e[_0x1e3e7a][_0x62f1('0x21')]];if(_0x5e104b['recordingFormat']!==_0x62f1('0x27')){if(_0x4ee500[_0x62f1('0x1c')][_0x62f1('0x28')](_0x62f1('0x29'))<0x0){_0x4ee500['options']+=_0x62f1('0x29');}}else{_0x4ee500[_0x62f1('0x1c')]=_0x4ee500['options'][_0x62f1('0x2a')](_0x62f1('0x29'),'');}_0x24e409[_0x46477e[_0x1e3e7a][_0x62f1('0x21')]]=_0x4ee500[_0x62f1('0x1c')];break;default:_0x24e409[_0x46477e[_0x1e3e7a]['param']]=_0x4e8c65[_0x46477e[_0x1e3e7a][_0x62f1('0x21')]];}}return _0x24e409[_0x62f1('0x26')](',');}function _0x35e7f9(_0x25c193,_0xb1fe58,_0x427287){return new Promise(function(_0x3b18ee,_0x3ea387){var _0x32e637=[];if(_[_0x62f1('0x2b')](_0xb1fe58))return _0x3b18ee(_0x32e637);_0x3f6987[_0x62f1('0x2c')][_0x62f1('0x2d')]({'attributes':['id','interval',_0x62f1('0x2e')],'raw':!![]})[_0x62f1('0x2f')](function(_0x384db6){for(var _0x1416cd=0x0,_0x759777=0x0;_0x1416cd<_0xb1fe58[_0x62f1('0x1e')];_0x1416cd++,_0x759777=0x0){var _0x13b7a3=_0xb1fe58[_0x1416cd];var _0x4a29cc=[];var _0x24efe2=[];delete _0x13b7a3['id'];if(_0x13b7a3[_0x62f1('0x30')]!==_0x62f1('0x31')){_0x13b7a3[_0x62f1('0x32')]=[_0x13b7a3[_0x62f1('0x30')]];}else{_0x13b7a3[_0x62f1('0x32')]=_0x13b7a3['IntervalId']?_[_0x62f1('0x33')](_[_0x62f1('0x34')](_0x384db6,{'IntervalId':_0x13b7a3[_0x62f1('0x2e')]}),_0x62f1('0x30')):[];}_0x13b7a3[_0x62f1('0x3')]=_0x25c193[_0x62f1('0x3')];_0x13b7a3[_0x62f1('0x4')]=_0x25c193[_0x62f1('0x4')];if(_0x13b7a3[_0x62f1('0x1')])_0x13b7a3[_0x62f1('0x1')]=_0x13b7a3[_0x62f1('0x1')][_0x62f1('0x35')]();if(_0x25c193[_0x62f1('0x1')]===_0x62f1('0x11')){if(_0x13b7a3[_0x62f1('0x36')]('tag')&&_0x13b7a3['tag']&&_0x13b7a3[_0x62f1('0x37')]!=='--'){_0x4a29cc[_0x62f1('0xb')]({'type':_0x13b7a3['type'][_0x62f1('0x35')](),'app':_0x62f1('0x5'),'appdata':_0x62f1('0x38')+_0x13b7a3[_0x62f1('0x37')],'context':_0x25c193['context'],'exten':_0x25c193[_0x62f1('0x4')],'priority':_0x13b7a3[_0x62f1('0x32')][_0x62f1('0x1e')]+_0x427287+_0x759777++,'VoiceExtensionId':_0x25c193['id']});}_0x4a29cc['push']({'type':_0x13b7a3[_0x62f1('0x1')][_0x62f1('0x35')](),'app':_0x62f1('0x39'),'appdata':_0x62f1('0x3a')+(_0x13b7a3[_0x62f1('0x3b')]?_0x62f1('0x3c')+_0x13b7a3['callerID']+')':_0x62f1('0x3d')),'context':_0x25c193[_0x62f1('0x3')],'exten':_0x25c193[_0x62f1('0x4')],'priority':_0x13b7a3[_0x62f1('0x32')][_0x62f1('0x1e')]+_0x427287+_0x759777++,'VoiceExtensionId':_0x25c193['id']});}else{if(_0x13b7a3[_0x62f1('0x36')](_0x62f1('0x3e'))){if([_0x62f1('0x3f'),_0x62f1('0x40')][_0x62f1('0x41')](_0x13b7a3['app'][_0x62f1('0x35')]())&&_0x13b7a3[_0x62f1('0x42')]!==_0x62f1('0x43')){if(_0x13b7a3[_0x62f1('0x3e')]){_0x4a29cc[_0x62f1('0xb')]({'type':_0x13b7a3[_0x62f1('0x1')][_0x62f1('0x35')](),'app':_0x62f1('0x39'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x25c193[_0x62f1('0x3')],'exten':_0x25c193[_0x62f1('0x4')],'priority':_0x13b7a3[_0x62f1('0x32')][_0x62f1('0x1e')]+_0x427287+_0x759777++,'VoiceExtensionId':_0x25c193['id']});_0x4a29cc[_0x62f1('0xb')]({'type':_0x13b7a3[_0x62f1('0x1')][_0x62f1('0x35')](),'app':_0x62f1('0x5'),'appdata':_0x62f1('0x44'),'context':_0x25c193['context'],'exten':_0x25c193[_0x62f1('0x4')],'priority':_0x13b7a3[_0x62f1('0x32')]['length']+_0x427287+_0x759777++,'VoiceExtensionId':_0x25c193['id']});}else{_0x4a29cc[_0x62f1('0xb')]({'type':_0x13b7a3[_0x62f1('0x1')][_0x62f1('0x35')](),'app':_0x62f1('0x39'),'appdata':_0x62f1('0x45'),'context':_0x25c193[_0x62f1('0x3')],'exten':_0x25c193[_0x62f1('0x4')],'priority':_0x13b7a3['intervals'][_0x62f1('0x1e')]+_0x427287+_0x759777++,'VoiceExtensionId':_0x25c193['id']});_0x4a29cc[_0x62f1('0xb')]({'type':_0x13b7a3[_0x62f1('0x1')]['toLowerCase'](),'app':_0x62f1('0x5'),'appdata':_0x62f1('0x46'),'context':_0x25c193[_0x62f1('0x3')],'exten':_0x25c193['exten'],'priority':_0x13b7a3[_0x62f1('0x32')][_0x62f1('0x1e')]+_0x427287+_0x759777++,'VoiceExtensionId':_0x25c193['id']});}}}}for(var _0x30ac69=0x0;_0x30ac69<_0x13b7a3[_0x62f1('0x32')][_0x62f1('0x1e')];_0x30ac69++){var _0x4cdbab=_0x427287+_0x13b7a3[_0x62f1('0x32')][_0x62f1('0x1e')];var _0x57aed7=_0x30ac69===_0x13b7a3['intervals'][_0x62f1('0x1e')]-0x1?_0x427287+_0x4a29cc[_0x62f1('0x1e')]+_0x24efe2[_0x62f1('0x1e')]+0x2:_0x427287+_0x30ac69+0x1;_0x4a29cc['splice'](_0x30ac69,0x0,{'type':_0x25c193[_0x62f1('0x1')],'app':_0x62f1('0x47'),'appdata':_0x13b7a3[_0x62f1('0x32')][_0x30ac69]+'?'+_0x25c193[_0x62f1('0x3')]+_0x62f1('0x48')+_0x4cdbab+':'+_0x25c193['context']+_0x62f1('0x48')+_0x57aed7,'exten':_0x25c193[_0x62f1('0x4')],'context':_0x25c193['context'],'priority':_0x427287+_0x30ac69,'VoiceExtensionId':_0x25c193['id']});}if(_0x13b7a3[_0x62f1('0x42')]===_0x62f1('0x49')){_0x13b7a3[_0x62f1('0x4a')]=_0x4739b6(_0x25c193,_0x13b7a3[_0x62f1('0x4a')]);}if(_0x13b7a3[_0x62f1('0x42')]===_0x62f1('0x4b')){_0x4a29cc[_0x62f1('0xb')]({'type':_0x13b7a3['type'][_0x62f1('0x35')](),'app':_0x62f1('0x5'),'appdata':'XMCS-UNIQUEID=${CHANNEL(LINKEDID)}','context':_0x25c193[_0x62f1('0x3')],'exten':_0x25c193[_0x62f1('0x4')],'priority':_0x13b7a3[_0x62f1('0x32')][_0x62f1('0x1e')]+_0x427287+_0x759777++,'VoiceExtensionId':_0x25c193['id']});}_0x13b7a3[_0x62f1('0x4c')]=_0x4a29cc['length']?_['last'](_0x4a29cc)[_0x62f1('0x4c')]+0x1:_0x427287;_0x32e637=_['concat'](_0x32e637,_0x4a29cc,[_0x13b7a3],_0x24efe2);_0x427287=_[_0x62f1('0x4d')](_0x32e637)[_0x62f1('0x4c')]+0x1;}return _0x3b18ee(_0x32e637);})[_0x62f1('0x4e')](function(_0x31fc76){_0x3ea387(_0x31fc76);});});}return _0x40c5a2[_0x62f1('0x4f')](_0x62f1('0x50'),attributes,{'tableName':_0x62f1('0x51'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x466d21){var _0x1c3b00=this[_0x62f1('0x52')]({'plain':!![]});var _0x4f6468=_0x1c3b00[_0x62f1('0x1')]===_0x62f1('0x11')?_0x3b630f(_0x1c3b00):_0x3bd251(_0x1c3b00);return _0x35e7f9(_0x1c3b00,_0x466d21,_[_0x62f1('0x4d')](_0x4f6468)[_0x62f1('0x4c')]+0x1)[_0x62f1('0x2f')](function(_0x46350a){var _0x3858f5=_[_0x62f1('0x53')](_0x4f6468,_0x46350a);_0x3858f5['push']({'type':_0x1c3b00[_0x62f1('0x1')],'app':'Hangup','exten':_0x1c3b00[_0x62f1('0x4')],'context':_0x1c3b00['context'],'priority':_[_0x62f1('0x4d')](_0x3858f5)['priority']+0x1,'VoiceExtensionId':_0x1c3b00['id']});return _0x3858f5;});}}});};
\ No newline at end of file
index dd98910..2b81cae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0e=['../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','include','map','model','then','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x41c88c,_0x381f8d){var _0x2c97ea=function(_0x35fd44){while(--_0x35fd44){_0x41c88c['push'](_0x41c88c['shift']());}};_0x2c97ea(++_0x381f8d);}(_0xbd0e,0x187));var _0xebd0=function(_0x4a6cb7,_0x48a3d5){_0x4a6cb7=_0x4a6cb7-0x0;var _0x3cc689=_0xbd0e[_0x4a6cb7];return _0x3cc689;};'use strict';var _=require('lodash');var util=require(_0xebd0('0x0'));var moment=require('moment');var BPromise=require(_0xebd0('0x1'));var rs=require(_0xebd0('0x2'));var fs=require('fs');var Redis=require(_0xebd0('0x3'));var db=require(_0xebd0('0x4'))['db'];var utils=require(_0xebd0('0x5'));var logger=require(_0xebd0('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xebd0('0x7'));var client=jayson[_0xebd0('0x8')][_0xebd0('0x9')]({'port':0x232a});config[_0xebd0('0xa')]=_[_0xebd0('0xb')](config[_0xebd0('0xa')],{'host':_0xebd0('0xc'),'port':0x18eb});var socket=require(_0xebd0('0xd'))(new Redis(config[_0xebd0('0xa')]));require('./voiceExtension.socket')[_0xebd0('0xe')](socket);function respondWithRpcPromise(_0x474bef,_0x2dbee9,_0x54b2a1){return new BPromise(function(_0xbec226,_0x1346d1){return client['request'](_0x474bef,_0x54b2a1)['then'](function(_0xb15b3e){logger[_0xebd0('0xf')](_0xebd0('0x10'),_0x2dbee9,_0xebd0('0x11'));logger[_0xebd0('0x12')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x2dbee9,_0xebd0('0x11'),JSON[_0xebd0('0x13')](_0xb15b3e));if(_0xb15b3e[_0xebd0('0x14')]){if(_0xb15b3e['error'][_0xebd0('0x15')]===0x1f4){logger[_0xebd0('0x14')](_0xebd0('0x10'),_0x2dbee9,_0xb15b3e[_0xebd0('0x14')][_0xebd0('0x16')]);return _0x1346d1(_0xb15b3e[_0xebd0('0x14')][_0xebd0('0x16')]);}logger[_0xebd0('0x14')](_0xebd0('0x10'),_0x2dbee9,_0xb15b3e[_0xebd0('0x14')][_0xebd0('0x16')]);return _0xbec226(_0xb15b3e[_0xebd0('0x14')][_0xebd0('0x16')]);}else{logger[_0xebd0('0xf')](_0xebd0('0x10'),_0x2dbee9,'request\x20sent');_0xbec226(_0xb15b3e[_0xebd0('0x17')][_0xebd0('0x16')]);}})[_0xebd0('0x18')](function(_0x2834ad){logger['error'](_0xebd0('0x10'),_0x2dbee9,_0x2834ad);_0x1346d1(_0x2834ad);});});}exports[_0xebd0('0x19')]=function(_0x51774c){var _0x22bb7f=this;return new Promise(function(_0x4ef17f,_0x4720d5){return db[_0xebd0('0x1a')][_0xebd0('0x1b')]({'raw':_0x51774c[_0xebd0('0x1c')]?_0x51774c['options'][_0xebd0('0x1d')]===undefined?!![]:![]:!![],'where':_0x51774c['options']?_0x51774c[_0xebd0('0x1c')][_0xebd0('0x1e')]||null:null,'attributes':_0x51774c[_0xebd0('0x1c')]?_0x51774c['options'][_0xebd0('0x1f')]||null:null,'limit':_0x51774c[_0xebd0('0x1c')]?_0x51774c[_0xebd0('0x1c')]['limit']||null:null,'include':_0x51774c[_0xebd0('0x1c')]?_0x51774c[_0xebd0('0x1c')][_0xebd0('0x20')]?_[_0xebd0('0x21')](_0x51774c['options']['include'],function(_0x144f13){return{'model':db[_0x144f13[_0xebd0('0x22')]],'as':_0x144f13['as'],'attributes':_0x144f13[_0xebd0('0x1f')],'include':_0x144f13[_0xebd0('0x20')]?_[_0xebd0('0x21')](_0x144f13['include'],function(_0x411eb4){return{'model':db[_0x411eb4[_0xebd0('0x22')]],'as':_0x411eb4['as'],'attributes':_0x411eb4[_0xebd0('0x1f')],'include':_0x411eb4[_0xebd0('0x20')]?_[_0xebd0('0x21')](_0x411eb4['include'],function(_0x53169b){return{'model':db[_0x53169b['model']],'as':_0x53169b['as'],'attributes':_0x53169b['attributes']};}):[]};}):[]};}):[]:[]})[_0xebd0('0x23')](function(_0x3b9033){logger[_0xebd0('0xf')]('GetVoiceExtension',_0x51774c);logger['debug']('GetVoiceExtension',_0x51774c,JSON[_0xebd0('0x13')](_0x3b9033));_0x4ef17f(_0x3b9033);})[_0xebd0('0x18')](function(_0x30a12a){logger[_0xebd0('0x14')](_0xebd0('0x19'),_0x30a12a[_0xebd0('0x16')],_0x51774c);_0x4720d5(_0x22bb7f[_0xebd0('0x14')](0x1f4,_0x30a12a[_0xebd0('0x16')]));});});};
\ No newline at end of file
+var _0x1203=['localhost','socket.io-emitter','request','then','info','VoiceExtension,\x20%s,\x20%s','VoiceExtension,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','VoiceExtension','options','where','attributes','limit','map','model','include','GetVoiceExtension','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x5341ff,_0x1de6df){var _0x53be58=function(_0x4da0da){while(--_0x4da0da){_0x5341ff['push'](_0x5341ff['shift']());}};_0x53be58(++_0x1de6df);}(_0x1203,0x8c));var _0x3120=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1203[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3120('0x0'));var util=require(_0x3120('0x1'));var moment=require(_0x3120('0x2'));var BPromise=require(_0x3120('0x3'));var rs=require(_0x3120('0x4'));var fs=require('fs');var Redis=require(_0x3120('0x5'));var db=require(_0x3120('0x6'))['db'];var utils=require(_0x3120('0x7'));var logger=require(_0x3120('0x8'))(_0x3120('0x9'));var config=require(_0x3120('0xa'));var jayson=require(_0x3120('0xb'));var client=jayson[_0x3120('0xc')][_0x3120('0xd')]({'port':0x232a});config[_0x3120('0xe')]=_[_0x3120('0xf')](config['redis'],{'host':_0x3120('0x10'),'port':0x18eb});var socket=require(_0x3120('0x11'))(new Redis(config['redis']));require('./voiceExtension.socket')['register'](socket);function respondWithRpcPromise(_0x6ee01b,_0x39f834,_0x5b2ae3){return new BPromise(function(_0x1493fd,_0x5d0ba8){return client[_0x3120('0x12')](_0x6ee01b,_0x5b2ae3)[_0x3120('0x13')](function(_0x492cda){logger[_0x3120('0x14')](_0x3120('0x15'),_0x39f834,'request\x20sent');logger['debug'](_0x3120('0x16'),_0x39f834,_0x3120('0x17'),JSON[_0x3120('0x18')](_0x492cda));if(_0x492cda[_0x3120('0x19')]){if(_0x492cda[_0x3120('0x19')][_0x3120('0x1a')]===0x1f4){logger[_0x3120('0x19')]('VoiceExtension,\x20%s,\x20%s',_0x39f834,_0x492cda[_0x3120('0x19')][_0x3120('0x1b')]);return _0x5d0ba8(_0x492cda[_0x3120('0x19')][_0x3120('0x1b')]);}logger[_0x3120('0x19')](_0x3120('0x15'),_0x39f834,_0x492cda[_0x3120('0x19')]['message']);return _0x1493fd(_0x492cda[_0x3120('0x19')]['message']);}else{logger[_0x3120('0x14')](_0x3120('0x15'),_0x39f834,_0x3120('0x17'));_0x1493fd(_0x492cda[_0x3120('0x1c')][_0x3120('0x1b')]);}})[_0x3120('0x1d')](function(_0x50429){logger['error'](_0x3120('0x15'),_0x39f834,_0x50429);_0x5d0ba8(_0x50429);});});}exports['GetVoiceExtension']=function(_0x3b7e31){var _0x41d73f=this;return new Promise(function(_0x3bc524,_0x5bfd37){return db[_0x3120('0x1e')]['findAll']({'raw':_0x3b7e31[_0x3120('0x1f')]?_0x3b7e31[_0x3120('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x3b7e31[_0x3120('0x1f')]?_0x3b7e31[_0x3120('0x1f')][_0x3120('0x20')]||null:null,'attributes':_0x3b7e31[_0x3120('0x1f')]?_0x3b7e31['options'][_0x3120('0x21')]||null:null,'limit':_0x3b7e31['options']?_0x3b7e31[_0x3120('0x1f')][_0x3120('0x22')]||null:null,'include':_0x3b7e31[_0x3120('0x1f')]?_0x3b7e31['options']['include']?_[_0x3120('0x23')](_0x3b7e31[_0x3120('0x1f')]['include'],function(_0xc88506){return{'model':db[_0xc88506[_0x3120('0x24')]],'as':_0xc88506['as'],'attributes':_0xc88506[_0x3120('0x21')],'include':_0xc88506['include']?_[_0x3120('0x23')](_0xc88506[_0x3120('0x25')],function(_0x4412f9){return{'model':db[_0x4412f9[_0x3120('0x24')]],'as':_0x4412f9['as'],'attributes':_0x4412f9['attributes'],'include':_0x4412f9['include']?_['map'](_0x4412f9[_0x3120('0x25')],function(_0x5444ec){return{'model':db[_0x5444ec[_0x3120('0x24')]],'as':_0x5444ec['as'],'attributes':_0x5444ec[_0x3120('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3120('0x13')](function(_0x3399fd){logger[_0x3120('0x14')](_0x3120('0x26'),_0x3b7e31);logger['debug'](_0x3120('0x26'),_0x3b7e31,JSON[_0x3120('0x18')](_0x3399fd));_0x3bc524(_0x3399fd);})[_0x3120('0x1d')](function(_0x1ee7bc){logger[_0x3120('0x19')](_0x3120('0x26'),_0x1ee7bc[_0x3120('0x1b')],_0x3b7e31);_0x5bfd37(_0x41d73f[_0x3120('0x19')](0x1f4,_0x1ee7bc['message']));});});};
\ No newline at end of file
index 5f75903..eded852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['length','./voiceExtension.events','remove','update','emit','removeListener','register'];(function(_0x550487,_0x3df726){var _0x205581=function(_0x40386c){while(--_0x40386c){_0x550487['push'](_0x550487['shift']());}};_0x205581(++_0x3df726);}(_0x4975,0x86));var _0x5497=function(_0x4ef26c,_0x1120b3){_0x4ef26c=_0x4ef26c-0x0;var _0x28cd86=_0x4975[_0x4ef26c];return _0x28cd86;};'use strict';var VoiceExtensionEvents=require(_0x5497('0x0'));var events=['save',_0x5497('0x1'),_0x5497('0x2')];function createListener(_0xfc7927,_0x349f5f){return function(_0x135f6f){_0x349f5f[_0x5497('0x3')](_0xfc7927,_0x135f6f);};}function removeListener(_0x14cecb,_0xeb31af){return function(){VoiceExtensionEvents[_0x5497('0x4')](_0x14cecb,_0xeb31af);};}exports[_0x5497('0x5')]=function(_0x539a27){for(var _0x37e48d=0x0,_0x4f563d=events[_0x5497('0x6')];_0x37e48d<_0x4f563d;_0x37e48d++){var _0x674a2a=events[_0x37e48d];var _0x368e8b=createListener('voiceExtension:'+_0x674a2a,_0x539a27);VoiceExtensionEvents['on'](_0x674a2a,_0x368e8b);}};
\ No newline at end of file
+var _0x7a54=['remove','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save'];(function(_0x581dd7,_0x5a1dc5){var _0x175af4=function(_0x6a5fa0){while(--_0x6a5fa0){_0x581dd7['push'](_0x581dd7['shift']());}};_0x175af4(++_0x5a1dc5);}(_0x7a54,0x106));var _0x47a5=function(_0xfac549,_0x2ccc85){_0xfac549=_0xfac549-0x0;var _0x5bef59=_0x7a54[_0xfac549];return _0x5bef59;};'use strict';var VoiceExtensionEvents=require(_0x47a5('0x0'));var events=[_0x47a5('0x1'),_0x47a5('0x2'),'update'];function createListener(_0x1d33e,_0x4086cd){return function(_0x4880bf){_0x4086cd[_0x47a5('0x3')](_0x1d33e,_0x4880bf);};}function removeListener(_0x11bf85,_0x2a1a7e){return function(){VoiceExtensionEvents[_0x47a5('0x4')](_0x11bf85,_0x2a1a7e);};}exports[_0x47a5('0x5')]=function(_0x545a97){for(var _0x3d5629=0x0,_0x59199c=events[_0x47a5('0x6')];_0x3d5629<_0x59199c;_0x3d5629++){var _0x30e405=events[_0x3d5629];var _0x506eda=createListener(_0x47a5('0x7')+_0x30e405,_0x545a97);VoiceExtensionEvents['on'](_0x30e405,_0x506eda);}};
\ No newline at end of file
index e3f89bb..df21b3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e5=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','show','/:id/messages','getMessages','post','create','put','/:id','delete','destroy','exports','multer'];(function(_0x54fe0c,_0x356480){var _0x3368f5=function(_0x53b03c){while(--_0x53b03c){_0x54fe0c['push'](_0x54fe0c['shift']());}};_0x3368f5(++_0x356480);}(_0x11e5,0x8b));var _0x511e=function(_0x4a7756,_0x97b450){_0x4a7756=_0x4a7756-0x0;var _0x26b489=_0x11e5[_0x4a7756];return _0x26b489;};'use strict';var multer=require(_0x511e('0x0'));var util=require('util');var path=require(_0x511e('0x1'));var timeout=require(_0x511e('0x2'));var express=require('express');var router=express[_0x511e('0x3')]();var fs_extra=require(_0x511e('0x4'));var auth=require(_0x511e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x511e('0x6'));var controller=require('./voiceMail.controller');router['get']('/',auth[_0x511e('0x7')](),controller[_0x511e('0x8')]);router[_0x511e('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x511e('0xa')]);router[_0x511e('0x9')](_0x511e('0xb'),auth[_0x511e('0x7')](),controller[_0x511e('0xc')]);router[_0x511e('0xd')]('/',auth[_0x511e('0x7')](),controller[_0x511e('0xe')]);router[_0x511e('0xf')](_0x511e('0x10'),auth[_0x511e('0x7')](),controller['update']);router[_0x511e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x511e('0x12')]);module[_0x511e('0x13')]=router;
\ No newline at end of file
+var _0xa456=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','/:id','show','post','create','put','delete','multer'];(function(_0x582e57,_0x85fded){var _0xfef0e6=function(_0x4b78be){while(--_0x4b78be){_0x582e57['push'](_0x582e57['shift']());}};_0xfef0e6(++_0x85fded);}(_0xa456,0x142));var _0x6a45=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0xa456[_0x1a72f3];return _0x57ef47;};'use strict';var multer=require(_0x6a45('0x0'));var util=require(_0x6a45('0x1'));var path=require(_0x6a45('0x2'));var timeout=require(_0x6a45('0x3'));var express=require('express');var router=express[_0x6a45('0x4')]();var fs_extra=require(_0x6a45('0x5'));var auth=require(_0x6a45('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6a45('0x7'));var controller=require(_0x6a45('0x8'));router[_0x6a45('0x9')]('/',auth[_0x6a45('0xa')](),controller['index']);router[_0x6a45('0x9')](_0x6a45('0xb'),auth[_0x6a45('0xa')](),controller[_0x6a45('0xc')]);router[_0x6a45('0x9')]('/:id/messages',auth[_0x6a45('0xa')](),controller['getMessages']);router[_0x6a45('0xd')]('/',auth[_0x6a45('0xa')](),controller[_0x6a45('0xe')]);router[_0x6a45('0xf')](_0x6a45('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x6a45('0x10')](_0x6a45('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7743701..8e70624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4218=['TIMESTAMP','INTEGER','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','email','trim','central','ENUM','yes','TINYINT(4)'];(function(_0x4623f6,_0x10bd0a){var _0x4cc0db=function(_0x15402e){while(--_0x15402e){_0x4623f6['push'](_0x4623f6['shift']());}};_0x4cc0db(++_0x10bd0a);}(_0x4218,0x116));var _0x8421=function(_0x1291bd,_0x29bc1f){_0x1291bd=_0x1291bd-0x0;var _0x33eb14=_0x4218[_0x1291bd];return _0x33eb14;};'use strict';var Sequelize=require(_0x8421('0x0'));module[_0x8421('0x1')]={'customer_id':{'type':Sequelize[_0x8421('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0x8421('0x3'),'unique':_0x8421('0x4')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x8421('0x2')]},'fullname':{'type':Sequelize[_0x8421('0x2')]},'email':{'type':Sequelize[_0x8421('0x2')],'validate':{'isEmail':!![]},'set':function(_0x386e13){this['setDataValue'](_0x8421('0x5'),typeof _0x386e13==='string'&&_0x386e13[_0x8421('0x6')]()?_0x386e13[_0x8421('0x6')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x8421('0x7')},'attach':{'type':Sequelize[_0x8421('0x8')](_0x8421('0x9'),'no'),'defaultValue':_0x8421('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x8421('0x8')](_0x8421('0x9'),'no'),'defaultValue':_0x8421('0x9'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x8421('0x2')]},'review':{'type':Sequelize[_0x8421('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x8421('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x8421('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x8421('0x8')](_0x8421('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x8421('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x8421('0x8')](_0x8421('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x8421('0x8')](_0x8421('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x8421('0x8')](_0x8421('0x9'),'no'),'defaultValue':_0x8421('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x8421('0x8')](_0x8421('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x8421('0x8')](_0x8421('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x8421('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x8421('0xb')},'emailsubject':{'type':Sequelize[_0x8421('0x2')]},'emailbody':{'type':Sequelize[_0x8421('0x2')]},'maxsecs':{'type':Sequelize[_0x8421('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x8421('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x8421('0xd')](_0x8421('0xe'))+_0x8421('0xf')+this[_0x8421('0xd')](_0x8421('0x10'));}}};
\ No newline at end of file
+var _0xf917=['TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','\x20-\x20','getDataValue','mailbox','sequelize','STRING','from-voicemail','contest_mailbox','setDataValue','trim','central','ENUM','yes'];(function(_0xb913fd,_0x1e6a33){var _0x11e5b8=function(_0x1414a9){while(--_0x1414a9){_0xb913fd['push'](_0xb913fd['shift']());}};_0x11e5b8(++_0x1e6a33);}(_0xf917,0xe7));var _0x7f91=function(_0x5de967,_0x515918){_0x5de967=_0x5de967-0x0;var _0x5b07a3=_0xf917[_0x5de967];return _0x5b07a3;};'use strict';var Sequelize=require(_0x7f91('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0x7f91('0x1')]},'context':{'type':Sequelize[_0x7f91('0x1')],'defaultValue':_0x7f91('0x2'),'unique':_0x7f91('0x3')},'mailbox':{'type':Sequelize[_0x7f91('0x1')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x7f91('0x1')]},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x4e5da0){this[_0x7f91('0x4')]('email',typeof _0x4e5da0==='string'&&_0x4e5da0[_0x7f91('0x5')]()?_0x4e5da0[_0x7f91('0x5')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize[_0x7f91('0x1')],'defaultValue':_0x7f91('0x6')},'attach':{'type':Sequelize[_0x7f91('0x7')](_0x7f91('0x8'),'no'),'defaultValue':_0x7f91('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0x7f91('0x7')](_0x7f91('0x8'),'no'),'defaultValue':_0x7f91('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0x7f91('0x1')]},'callback':{'type':Sequelize[_0x7f91('0x1')]},'review':{'type':Sequelize[_0x7f91('0x7')](_0x7f91('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0x7f91('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x7f91('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x7f91('0x7')](_0x7f91('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x7f91('0x7')](_0x7f91('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0x7f91('0x8'),'no'),'defaultValue':_0x7f91('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x7f91('0x7')](_0x7f91('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x7f91('0x7')](_0x7f91('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x7f91('0x7')](_0x7f91('0x8'),'no'),'defaultValue':_0x7f91('0x8'),'allowNull':![]},'stamp':{'type':_0x7f91('0xa')},'emailsubject':{'type':Sequelize[_0x7f91('0x1')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0x7f91('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x7f91('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x7f91('0xc')],'get':function(){return this['getDataValue']('fullname')+_0x7f91('0xd')+this[_0x7f91('0xe')](_0x7f91('0xf'));}}};
\ No newline at end of file
index 30e644a..6181d10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065e=['findOne','VoiceMailMessage','findAndCountAll','eml-format','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','UserProfileResource','error','name','send','index','map','VoiceMail','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Voicemails','UserProfileSection','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMessages'];(function(_0x54138e,_0x23a585){var _0x12eaf4=function(_0x3083c9){while(--_0x3083c9){_0x54138e['push'](_0x54138e['shift']());}};_0x12eaf4(++_0x23a585);}(_0x065e,0x1a7));var _0xe065=function(_0x487f22,_0x2cc035){_0x487f22=_0x487f22-0x0;var _0x5b8880=_0x065e[_0x487f22];return _0x5b8880;};'use strict';var emlformat=require(_0xe065('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe065('0x1'));var moment=require(_0xe065('0x2'));var BPromise=require(_0xe065('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe065('0x4'));var sox=require(_0xe065('0x5'));var csv=require('to-csv');var ejs=require(_0xe065('0x6'));var fs=require('fs');var fs_extra=require(_0xe065('0x7'));var _=require(_0xe065('0x8'));var squel=require('squel');var crypto=require(_0xe065('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xe065('0xa'));var toCsv=require(_0xe065('0xb'));var querystring=require(_0xe065('0xc'));var Papa=require(_0xe065('0xd'));var Redis=require(_0xe065('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe065('0xf'));var as=require(_0xe065('0x10'));var hardwareService=require(_0xe065('0x11'));var logger=require(_0xe065('0x12'))(_0xe065('0x13'));var utils=require(_0xe065('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe065('0x15'))['db'];function respondWithStatusCode(_0x13b697,_0xf5ab44){_0xf5ab44=_0xf5ab44||0xcc;return function(_0x5bd30f){if(_0x5bd30f){return _0x13b697[_0xe065('0x16')](_0xf5ab44);}return _0x13b697[_0xe065('0x17')](_0xf5ab44)[_0xe065('0x18')]();};}function respondWithResult(_0x2e9480,_0x29297b){_0x29297b=_0x29297b||0xc8;return function(_0x541985){if(_0x541985){return _0x2e9480[_0xe065('0x17')](_0x29297b)[_0xe065('0x19')](_0x541985);}};}function respondWithFilteredResult(_0x15d365,_0xc5ef4f){return function(_0x434e07){if(_0x434e07){var _0x352206=typeof _0xc5ef4f[_0xe065('0x1a')]==='undefined'&&typeof _0xc5ef4f[_0xe065('0x1b')]===_0xe065('0x1c');var _0x54d260=_0x434e07[_0xe065('0x1d')];var _0x1d2f7a=_0x352206?0x0:_0xc5ef4f[_0xe065('0x1a')];var _0x14c97c=_0x352206?_0x434e07[_0xe065('0x1d')]:_0xc5ef4f[_0xe065('0x1a')]+_0xc5ef4f[_0xe065('0x1b')];var _0x5000e1;if(_0x14c97c>=_0x54d260){_0x14c97c=_0x54d260;_0x5000e1=0xc8;}else{_0x5000e1=0xce;}_0x15d365[_0xe065('0x17')](_0x5000e1);return _0x15d365['set'](_0xe065('0x1e'),_0x1d2f7a+'-'+_0x14c97c+'/'+_0x54d260)[_0xe065('0x19')](_0x434e07);}return null;};}function patchUpdates(_0x55f55c){return function(_0x1c6567){try{jsonpatch['apply'](_0x1c6567,_0x55f55c,!![]);}catch(_0xe26e9b){return BPromise[_0xe065('0x1f')](_0xe26e9b);}return _0x1c6567[_0xe065('0x20')]();};}function saveUpdates(_0x110556,_0x3ecd13){return function(_0x105cb2){if(_0x105cb2){return _0x105cb2[_0xe065('0x21')](_0x110556)[_0xe065('0x22')](function(_0x1c5dd9){return _0x1c5dd9;});}return null;};}function removeEntity(_0x5081a3,_0x7208af){return function(_0x43b712){if(_0x43b712){return _0x43b712[_0xe065('0x23')]()[_0xe065('0x22')](function(){var _0x5e8b60=_0x43b712['get']({'plain':!![]});var _0x164965='Voicemails';return db[_0xe065('0x24')][_0xe065('0x23')]({'where':{'type':_0x164965,'resourceId':_0x5e8b60['id']}})[_0xe065('0x22')](function(){return _0x43b712;});})[_0xe065('0x22')](function(){_0x5081a3[_0xe065('0x17')](0xcc)[_0xe065('0x18')]();});}};}function handleEntityNotFound(_0x3b1caf,_0x26a159){return function(_0x52cd9c){if(!_0x52cd9c){_0x3b1caf['sendStatus'](0x194);}return _0x52cd9c;};}function handleError(_0x14de01,_0x10e6ba){_0x10e6ba=_0x10e6ba||0x1f4;return function(_0x23aee9){logger[_0xe065('0x25')](_0x23aee9['stack']);if(_0x23aee9[_0xe065('0x26')]){delete _0x23aee9['name'];}_0x14de01['status'](_0x10e6ba)[_0xe065('0x27')](_0x23aee9);};}exports[_0xe065('0x28')]=function(_0x2aa766,_0x5b8523){var _0x883747={},_0x59b915={},_0x12679d={'count':0x0,'rows':[]};var _0x46db7e=_[_0xe065('0x29')](db[_0xe065('0x2a')]['rawAttributes'],function(_0x3f02b2){return{'name':_0x3f02b2['fieldName'],'type':_0x3f02b2[_0xe065('0x2b')][_0xe065('0x2c')]};});_0x59b915['model']=_[_0xe065('0x29')](_0x46db7e,'name');_0x59b915[_0xe065('0x2d')]=_['keys'](_0x2aa766[_0xe065('0x2d')]);_0x59b915[_0xe065('0x2e')]=_[_0xe065('0x2f')](_0x59b915[_0xe065('0x30')],_0x59b915['query']);_0x883747[_0xe065('0x31')]=_[_0xe065('0x2f')](_0x59b915[_0xe065('0x30')],qs[_0xe065('0x32')](_0x2aa766[_0xe065('0x2d')][_0xe065('0x32')]));_0x883747['attributes']=_0x883747[_0xe065('0x31')][_0xe065('0x33')]?_0x883747['attributes']:_0x59b915[_0xe065('0x30')];if(!_0x2aa766[_0xe065('0x2d')][_0xe065('0x34')](_0xe065('0x35'))){_0x883747[_0xe065('0x1b')]=qs[_0xe065('0x1b')](_0x2aa766[_0xe065('0x2d')]['limit']);_0x883747[_0xe065('0x1a')]=qs['offset'](_0x2aa766[_0xe065('0x2d')][_0xe065('0x1a')]);}_0x883747[_0xe065('0x36')]=qs[_0xe065('0x37')](_0x2aa766[_0xe065('0x2d')][_0xe065('0x37')]);_0x883747['where']=qs[_0xe065('0x2e')](_[_0xe065('0x38')](_0x2aa766[_0xe065('0x2d')],_0x59b915['filters']),_0x46db7e);if(_0x2aa766[_0xe065('0x2d')][_0xe065('0x39')]){_0x883747[_0xe065('0x3a')]=_[_0xe065('0x3b')](_0x883747[_0xe065('0x3a')],{'$or':_['map'](_0x46db7e,function(_0x341740){if(_0x341740[_0xe065('0x2b')]!=='VIRTUAL'){var _0x236e75={};_0x236e75[_0x341740['name']]={'$like':'%'+_0x2aa766[_0xe065('0x2d')][_0xe065('0x39')]+'%'};return _0x236e75;}})});}_0x883747=_['merge']({},_0x883747,_0x2aa766[_0xe065('0x3c')]);var _0x20c881={'where':_0x883747['where']};return db[_0xe065('0x2a')][_0xe065('0x1d')](_0x20c881)[_0xe065('0x22')](function(_0x44a3f6){_0x12679d[_0xe065('0x1d')]=_0x44a3f6;if(_0x2aa766[_0xe065('0x2d')][_0xe065('0x3d')]){_0x883747[_0xe065('0x3e')]=[{'all':!![]}];}return db[_0xe065('0x2a')][_0xe065('0x3f')](_0x883747);})[_0xe065('0x22')](function(_0x4364c3){_0x12679d[_0xe065('0x40')]=_0x4364c3;return _0x12679d;})['then'](respondWithFilteredResult(_0x5b8523,_0x883747))['catch'](handleError(_0x5b8523,null));};exports[_0xe065('0x41')]=function(_0x2bf092,_0x5ee4ec){var _0x3ba838={'raw':!![],'where':{'id':_0x2bf092[_0xe065('0x42')]['id']}},_0x448044={};_0x448044[_0xe065('0x30')]=_[_0xe065('0x43')](db[_0xe065('0x2a')][_0xe065('0x44')]);_0x448044[_0xe065('0x2d')]=_[_0xe065('0x43')](_0x2bf092['query']);_0x448044[_0xe065('0x2e')]=_[_0xe065('0x2f')](_0x448044[_0xe065('0x30')],_0x448044['query']);_0x3ba838[_0xe065('0x31')]=_[_0xe065('0x2f')](_0x448044[_0xe065('0x30')],qs[_0xe065('0x32')](_0x2bf092['query'][_0xe065('0x32')]));_0x3ba838[_0xe065('0x31')]=_0x3ba838[_0xe065('0x31')][_0xe065('0x33')]?_0x3ba838[_0xe065('0x31')]:_0x448044[_0xe065('0x30')];if(_0x2bf092[_0xe065('0x2d')]['includeAll']){_0x3ba838[_0xe065('0x3e')]=[{'all':!![]}];}_0x3ba838=_[_0xe065('0x3b')]({},_0x3ba838,_0x2bf092[_0xe065('0x3c')]);return db[_0xe065('0x2a')][_0xe065('0x45')](_0x3ba838)[_0xe065('0x22')](handleEntityNotFound(_0x5ee4ec,null))[_0xe065('0x22')](respondWithResult(_0x5ee4ec,null))['catch'](handleError(_0x5ee4ec,null));};exports[_0xe065('0x46')]=function(_0x5a2360,_0x45fe1f){return db[_0xe065('0x2a')][_0xe065('0x46')](_0x5a2360['body'],{})[_0xe065('0x22')](function(_0x16898c){var _0x3ab70d=_0x5a2360[_0xe065('0x47')][_0xe065('0x48')]({'plain':!![]});if(!_0x3ab70d)throw new Error(_0xe065('0x49'));if(_0x3ab70d[_0xe065('0x4a')]===_0xe065('0x47')){var _0x3095c8=_0x16898c[_0xe065('0x48')]({'plain':!![]});var _0x3f91a2=_0xe065('0x4b');return db[_0xe065('0x4c')]['find']({'where':{'name':_0x3f91a2,'userProfileId':_0x3ab70d['userProfileId']},'raw':!![]})['then'](function(_0x23ba0b){if(_0x23ba0b&&_0x23ba0b['autoAssociation']===0x0){return db[_0xe065('0x24')][_0xe065('0x46')]({'name':_0x3095c8[_0xe065('0x26')],'resourceId':_0x3095c8['id'],'type':_0x23ba0b['name'],'sectionId':_0x23ba0b['id']},{})[_0xe065('0x22')](function(){return _0x16898c;});}else{return _0x16898c;}})[_0xe065('0x4d')](function(_0x5cce78){logger[_0xe065('0x25')](_0xe065('0x4e'),_0x5cce78);throw _0x5cce78;});}return _0x16898c;})[_0xe065('0x22')](respondWithResult(_0x45fe1f,0xc9))[_0xe065('0x4d')](handleError(_0x45fe1f,null));};exports[_0xe065('0x21')]=function(_0x1ea568,_0xe77af6){if(_0x1ea568[_0xe065('0x4f')]['id']){delete _0x1ea568[_0xe065('0x4f')]['id'];}return db[_0xe065('0x2a')]['find']({'where':{'id':_0x1ea568[_0xe065('0x42')]['id']}})[_0xe065('0x22')](handleEntityNotFound(_0xe77af6,null))[_0xe065('0x22')](saveUpdates(_0x1ea568[_0xe065('0x4f')],null))['then'](respondWithResult(_0xe77af6,null))[_0xe065('0x4d')](handleError(_0xe77af6,null));};exports[_0xe065('0x23')]=function(_0x21884d,_0xb1fca1){return db['VoiceMail'][_0xe065('0x45')]({'where':{'id':_0x21884d[_0xe065('0x42')]['id']}})[_0xe065('0x22')](handleEntityNotFound(_0xb1fca1,null))['then'](removeEntity(_0xb1fca1,null))[_0xe065('0x4d')](handleError(_0xb1fca1,null));};exports[_0xe065('0x50')]=function(_0x18b43e,_0x1f782f,_0x2d13ab){return db[_0xe065('0x2a')][_0xe065('0x51')]({'where':{'id':_0x18b43e[_0xe065('0x42')]['id']}})[_0xe065('0x22')](handleEntityNotFound(_0x1f782f,null))['then'](function(_0x2accad){var _0x550c37;var _0x44edf0={},_0x24fc1c={};_0x24fc1c[_0xe065('0x30')]=_['keys'](db['VoiceMailMessage']['rawAttributes']);_0x24fc1c[_0xe065('0x2d')]=_[_0xe065('0x43')](_0x18b43e[_0xe065('0x2d')]);_0x24fc1c[_0xe065('0x2e')]=_[_0xe065('0x2f')](_0x24fc1c[_0xe065('0x30')],_0x24fc1c[_0xe065('0x2d')]);_0x44edf0[_0xe065('0x31')]=_[_0xe065('0x2f')](_0x24fc1c[_0xe065('0x30')],qs[_0xe065('0x32')](_0x18b43e['query']['fields']));_0x44edf0[_0xe065('0x31')]=_0x44edf0[_0xe065('0x31')]['length']?_0x44edf0[_0xe065('0x31')]:_0x24fc1c['model'];if(!_0x18b43e['query'][_0xe065('0x34')](_0xe065('0x35'))){_0x44edf0[_0xe065('0x1b')]=qs[_0xe065('0x1b')](_0x18b43e[_0xe065('0x2d')][_0xe065('0x1b')]);_0x44edf0[_0xe065('0x1a')]=qs['offset'](_0x18b43e[_0xe065('0x2d')][_0xe065('0x1a')]);}_0x44edf0[_0xe065('0x36')]=qs[_0xe065('0x37')](_0x18b43e[_0xe065('0x2d')]['sort']);_0x44edf0[_0xe065('0x3a')]=qs[_0xe065('0x2e')](_[_0xe065('0x38')](_0x18b43e[_0xe065('0x2d')],_0x24fc1c[_0xe065('0x2e')]));if(_0x18b43e[_0xe065('0x2d')]['filter']){_0x44edf0['where']=_['merge'](_0x44edf0['where'],{'$or':_['map'](_0x44edf0[_0xe065('0x31')],function(_0x45b033){var _0x1733b4={};_0x1733b4[_0x45b033]={'$like':'%'+_0x18b43e[_0xe065('0x2d')][_0xe065('0x39')]+'%'};return _0x1733b4;})});}_0x44edf0[_0xe065('0x3a')]=_[_0xe065('0x3b')](_0x44edf0[_0xe065('0x3a')],{'mailboxuser':_0x2accad['mailbox']});_0x44edf0=_['merge']({},_0x44edf0,_0x18b43e[_0xe065('0x3c')]);return db[_0xe065('0x52')][_0xe065('0x53')](_0x44edf0)['then'](respondWithFilteredResult(_0x1f782f,_0x44edf0));})[_0xe065('0x4d')](handleError(_0x1f782f,null));};
\ No newline at end of file
+var _0x4cf8=['UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','filters','pick','filter','where','merge','VIRTUAL','VoiceMail','include','findAll','catch','find','create','body','user','UserProfileSection','userProfileId','params','getMessages','findOne','VoiceMailMessage','mailbox','options','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Voicemails'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0x4cf8[_0x243b2f];return _0xcb3c2d;};'use strict';var emlformat=require(_0x84cf('0x0'));var rimraf=require(_0x84cf('0x1'));var zipdir=require(_0x84cf('0x2'));var jsonpatch=require(_0x84cf('0x3'));var rp=require(_0x84cf('0x4'));var moment=require(_0x84cf('0x5'));var BPromise=require(_0x84cf('0x6'));var Mustache=require(_0x84cf('0x7'));var util=require(_0x84cf('0x8'));var path=require(_0x84cf('0x9'));var sox=require(_0x84cf('0xa'));var csv=require(_0x84cf('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x84cf('0xc'));var squel=require('squel');var crypto=require(_0x84cf('0xd'));var jsforce=require(_0x84cf('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x84cf('0xb'));var querystring=require(_0x84cf('0xf'));var Papa=require('papaparse');var Redis=require(_0x84cf('0x10'));var authService=require(_0x84cf('0x11'));var qs=require(_0x84cf('0x12'));var as=require(_0x84cf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84cf('0x14'))(_0x84cf('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x84cf('0x16'));var db=require(_0x84cf('0x17'))['db'];function respondWithStatusCode(_0x35f852,_0x33f83e){_0x33f83e=_0x33f83e||0xcc;return function(_0x172d04){if(_0x172d04){return _0x35f852[_0x84cf('0x18')](_0x33f83e);}return _0x35f852[_0x84cf('0x19')](_0x33f83e)[_0x84cf('0x1a')]();};}function respondWithResult(_0xced48,_0x250a19){_0x250a19=_0x250a19||0xc8;return function(_0x2fc41f){if(_0x2fc41f){return _0xced48[_0x84cf('0x19')](_0x250a19)[_0x84cf('0x1b')](_0x2fc41f);}};}function respondWithFilteredResult(_0x20e79c,_0x27261b){return function(_0x167c3e){if(_0x167c3e){var _0x464e70=typeof _0x27261b[_0x84cf('0x1c')]===_0x84cf('0x1d')&&typeof _0x27261b['limit']===_0x84cf('0x1d');var _0x5d6a93=_0x167c3e[_0x84cf('0x1e')];var _0x1abe2d=_0x464e70?0x0:_0x27261b[_0x84cf('0x1c')];var _0x13ba16=_0x464e70?_0x167c3e[_0x84cf('0x1e')]:_0x27261b['offset']+_0x27261b['limit'];var _0x42d6d4;if(_0x13ba16>=_0x5d6a93){_0x13ba16=_0x5d6a93;_0x42d6d4=0xc8;}else{_0x42d6d4=0xce;}_0x20e79c[_0x84cf('0x19')](_0x42d6d4);return _0x20e79c[_0x84cf('0x1f')](_0x84cf('0x20'),_0x1abe2d+'-'+_0x13ba16+'/'+_0x5d6a93)[_0x84cf('0x1b')](_0x167c3e);}return null;};}function patchUpdates(_0x5dda3f){return function(_0x39a37b){try{jsonpatch[_0x84cf('0x21')](_0x39a37b,_0x5dda3f,!![]);}catch(_0x3ca1be){return BPromise[_0x84cf('0x22')](_0x3ca1be);}return _0x39a37b[_0x84cf('0x23')]();};}function saveUpdates(_0x54405a,_0x42fa45){return function(_0x160f86){if(_0x160f86){return _0x160f86[_0x84cf('0x24')](_0x54405a)[_0x84cf('0x25')](function(_0x3e5e94){return _0x3e5e94;});}return null;};}function removeEntity(_0x29e9e1,_0x7feb4){return function(_0x4c9d1c){if(_0x4c9d1c){return _0x4c9d1c[_0x84cf('0x26')]()[_0x84cf('0x25')](function(){var _0x1c7747=_0x4c9d1c[_0x84cf('0x27')]({'plain':!![]});var _0x1d220a=_0x84cf('0x28');return db[_0x84cf('0x29')][_0x84cf('0x26')]({'where':{'type':_0x1d220a,'resourceId':_0x1c7747['id']}})[_0x84cf('0x25')](function(){return _0x4c9d1c;});})[_0x84cf('0x25')](function(){_0x29e9e1['status'](0xcc)[_0x84cf('0x1a')]();});}};}function handleEntityNotFound(_0x17bc92,_0x2a4973){return function(_0x41a5db){if(!_0x41a5db){_0x17bc92['sendStatus'](0x194);}return _0x41a5db;};}function handleError(_0x1595dd,_0x5a428c){_0x5a428c=_0x5a428c||0x1f4;return function(_0x29455e){logger[_0x84cf('0x2a')](_0x29455e[_0x84cf('0x2b')]);if(_0x29455e[_0x84cf('0x2c')]){delete _0x29455e[_0x84cf('0x2c')];}_0x1595dd[_0x84cf('0x19')](_0x5a428c)[_0x84cf('0x2d')](_0x29455e);};}exports[_0x84cf('0x2e')]=function(_0x1bfa56,_0xb4fc5a){var _0x31dbf5={},_0x308f8f={},_0x18243d={'count':0x0,'rows':[]};var _0x44f16e=_['map'](db['VoiceMail'][_0x84cf('0x2f')],function(_0x25de3a){return{'name':_0x25de3a[_0x84cf('0x30')],'type':_0x25de3a[_0x84cf('0x31')][_0x84cf('0x32')]};});_0x308f8f[_0x84cf('0x33')]=_[_0x84cf('0x34')](_0x44f16e,_0x84cf('0x2c'));_0x308f8f['query']=_[_0x84cf('0x35')](_0x1bfa56[_0x84cf('0x36')]);_0x308f8f['filters']=_[_0x84cf('0x37')](_0x308f8f['model'],_0x308f8f[_0x84cf('0x36')]);_0x31dbf5[_0x84cf('0x38')]=_[_0x84cf('0x37')](_0x308f8f[_0x84cf('0x33')],qs[_0x84cf('0x39')](_0x1bfa56['query'][_0x84cf('0x39')]));_0x31dbf5['attributes']=_0x31dbf5['attributes'][_0x84cf('0x3a')]?_0x31dbf5[_0x84cf('0x38')]:_0x308f8f['model'];if(!_0x1bfa56[_0x84cf('0x36')][_0x84cf('0x3b')](_0x84cf('0x3c'))){_0x31dbf5[_0x84cf('0x3d')]=qs[_0x84cf('0x3d')](_0x1bfa56[_0x84cf('0x36')]['limit']);_0x31dbf5[_0x84cf('0x1c')]=qs[_0x84cf('0x1c')](_0x1bfa56[_0x84cf('0x36')][_0x84cf('0x1c')]);}_0x31dbf5[_0x84cf('0x3e')]=qs[_0x84cf('0x3f')](_0x1bfa56['query'][_0x84cf('0x3f')]);_0x31dbf5['where']=qs[_0x84cf('0x40')](_[_0x84cf('0x41')](_0x1bfa56[_0x84cf('0x36')],_0x308f8f[_0x84cf('0x40')]),_0x44f16e);if(_0x1bfa56[_0x84cf('0x36')][_0x84cf('0x42')]){_0x31dbf5[_0x84cf('0x43')]=_[_0x84cf('0x44')](_0x31dbf5[_0x84cf('0x43')],{'$or':_['map'](_0x44f16e,function(_0x44e6f0){if(_0x44e6f0['type']!==_0x84cf('0x45')){var _0xc75386={};_0xc75386[_0x44e6f0['name']]={'$like':'%'+_0x1bfa56[_0x84cf('0x36')]['filter']+'%'};return _0xc75386;}})});}_0x31dbf5=_[_0x84cf('0x44')]({},_0x31dbf5,_0x1bfa56['options']);var _0x3fc160={'where':_0x31dbf5['where']};return db[_0x84cf('0x46')][_0x84cf('0x1e')](_0x3fc160)['then'](function(_0x847ce9){_0x18243d[_0x84cf('0x1e')]=_0x847ce9;if(_0x1bfa56[_0x84cf('0x36')]['includeAll']){_0x31dbf5[_0x84cf('0x47')]=[{'all':!![]}];}return db['VoiceMail'][_0x84cf('0x48')](_0x31dbf5);})['then'](function(_0x56b0e5){_0x18243d['rows']=_0x56b0e5;return _0x18243d;})[_0x84cf('0x25')](respondWithFilteredResult(_0xb4fc5a,_0x31dbf5))[_0x84cf('0x49')](handleError(_0xb4fc5a,null));};exports['show']=function(_0x2b737e,_0x56b623){var _0x191ad8={'raw':!![],'where':{'id':_0x2b737e['params']['id']}},_0x3fe8c1={};_0x3fe8c1[_0x84cf('0x33')]=_['keys'](db[_0x84cf('0x46')]['rawAttributes']);_0x3fe8c1['query']=_['keys'](_0x2b737e['query']);_0x3fe8c1['filters']=_['intersection'](_0x3fe8c1['model'],_0x3fe8c1[_0x84cf('0x36')]);_0x191ad8[_0x84cf('0x38')]=_[_0x84cf('0x37')](_0x3fe8c1[_0x84cf('0x33')],qs['fields'](_0x2b737e[_0x84cf('0x36')]['fields']));_0x191ad8[_0x84cf('0x38')]=_0x191ad8[_0x84cf('0x38')][_0x84cf('0x3a')]?_0x191ad8[_0x84cf('0x38')]:_0x3fe8c1[_0x84cf('0x33')];if(_0x2b737e[_0x84cf('0x36')]['includeAll']){_0x191ad8[_0x84cf('0x47')]=[{'all':!![]}];}_0x191ad8=_[_0x84cf('0x44')]({},_0x191ad8,_0x2b737e['options']);return db[_0x84cf('0x46')][_0x84cf('0x4a')](_0x191ad8)[_0x84cf('0x25')](handleEntityNotFound(_0x56b623,null))['then'](respondWithResult(_0x56b623,null))['catch'](handleError(_0x56b623,null));};exports['create']=function(_0x1cf3f6,_0x104421){return db[_0x84cf('0x46')][_0x84cf('0x4b')](_0x1cf3f6[_0x84cf('0x4c')],{})[_0x84cf('0x25')](function(_0x51d725){var _0x350985=_0x1cf3f6['user'][_0x84cf('0x27')]({'plain':!![]});if(!_0x350985)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x350985['role']===_0x84cf('0x4d')){var _0xb1c3a8=_0x51d725[_0x84cf('0x27')]({'plain':!![]});var _0x55e24e='Voicemails';return db[_0x84cf('0x4e')][_0x84cf('0x4a')]({'where':{'name':_0x55e24e,'userProfileId':_0x350985[_0x84cf('0x4f')]},'raw':!![]})[_0x84cf('0x25')](function(_0x401ced){if(_0x401ced&&_0x401ced['autoAssociation']===0x0){return db[_0x84cf('0x29')][_0x84cf('0x4b')]({'name':_0xb1c3a8['name'],'resourceId':_0xb1c3a8['id'],'type':_0x401ced[_0x84cf('0x2c')],'sectionId':_0x401ced['id']},{})['then'](function(){return _0x51d725;});}else{return _0x51d725;}})['catch'](function(_0x147194){logger[_0x84cf('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x147194);throw _0x147194;});}return _0x51d725;})['then'](respondWithResult(_0x104421,0xc9))[_0x84cf('0x49')](handleError(_0x104421,null));};exports[_0x84cf('0x24')]=function(_0x2f739a,_0x1e2676){if(_0x2f739a[_0x84cf('0x4c')]['id']){delete _0x2f739a[_0x84cf('0x4c')]['id'];}return db[_0x84cf('0x46')][_0x84cf('0x4a')]({'where':{'id':_0x2f739a['params']['id']}})[_0x84cf('0x25')](handleEntityNotFound(_0x1e2676,null))[_0x84cf('0x25')](saveUpdates(_0x2f739a['body'],null))['then'](respondWithResult(_0x1e2676,null))[_0x84cf('0x49')](handleError(_0x1e2676,null));};exports[_0x84cf('0x26')]=function(_0x3912cb,_0x2a4f20){return db[_0x84cf('0x46')][_0x84cf('0x4a')]({'where':{'id':_0x3912cb[_0x84cf('0x50')]['id']}})['then'](handleEntityNotFound(_0x2a4f20,null))[_0x84cf('0x25')](removeEntity(_0x2a4f20,null))['catch'](handleError(_0x2a4f20,null));};exports[_0x84cf('0x51')]=function(_0x5c0122,_0x2a60bc,_0x1c2f1b){return db['VoiceMail'][_0x84cf('0x52')]({'where':{'id':_0x5c0122[_0x84cf('0x50')]['id']}})['then'](handleEntityNotFound(_0x2a60bc,null))[_0x84cf('0x25')](function(_0x53bfb8){var _0x577d55;var _0x5cc371={},_0x50cde2={};_0x50cde2[_0x84cf('0x33')]=_[_0x84cf('0x35')](db[_0x84cf('0x53')][_0x84cf('0x2f')]);_0x50cde2['query']=_[_0x84cf('0x35')](_0x5c0122[_0x84cf('0x36')]);_0x50cde2['filters']=_[_0x84cf('0x37')](_0x50cde2[_0x84cf('0x33')],_0x50cde2[_0x84cf('0x36')]);_0x5cc371[_0x84cf('0x38')]=_[_0x84cf('0x37')](_0x50cde2[_0x84cf('0x33')],qs[_0x84cf('0x39')](_0x5c0122[_0x84cf('0x36')]['fields']));_0x5cc371[_0x84cf('0x38')]=_0x5cc371['attributes'][_0x84cf('0x3a')]?_0x5cc371[_0x84cf('0x38')]:_0x50cde2[_0x84cf('0x33')];if(!_0x5c0122[_0x84cf('0x36')][_0x84cf('0x3b')]('nolimit')){_0x5cc371[_0x84cf('0x3d')]=qs[_0x84cf('0x3d')](_0x5c0122[_0x84cf('0x36')]['limit']);_0x5cc371[_0x84cf('0x1c')]=qs[_0x84cf('0x1c')](_0x5c0122['query'][_0x84cf('0x1c')]);}_0x5cc371['order']=qs[_0x84cf('0x3f')](_0x5c0122[_0x84cf('0x36')]['sort']);_0x5cc371[_0x84cf('0x43')]=qs[_0x84cf('0x40')](_['pick'](_0x5c0122[_0x84cf('0x36')],_0x50cde2[_0x84cf('0x40')]));if(_0x5c0122[_0x84cf('0x36')][_0x84cf('0x42')]){_0x5cc371['where']=_[_0x84cf('0x44')](_0x5cc371[_0x84cf('0x43')],{'$or':_['map'](_0x5cc371['attributes'],function(_0x4d40e2){var _0x1b000c={};_0x1b000c[_0x4d40e2]={'$like':'%'+_0x5c0122[_0x84cf('0x36')][_0x84cf('0x42')]+'%'};return _0x1b000c;})});}_0x5cc371['where']=_['merge'](_0x5cc371[_0x84cf('0x43')],{'mailboxuser':_0x53bfb8[_0x84cf('0x54')]});_0x5cc371=_[_0x84cf('0x44')]({},_0x5cc371,_0x5c0122[_0x84cf('0x55')]);return db[_0x84cf('0x53')][_0x84cf('0x56')](_0x5cc371)[_0x84cf('0x25')](respondWithFilteredResult(_0x2a60bc,_0x5cc371));})[_0x84cf('0x49')](handleError(_0x2a60bc,null));};
\ No newline at end of file
index 51be011..4e36f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7153=['api','moment','bluebird','request-promise','path','rimraf','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','util','../../config/logger'];(function(_0x3f3fa2,_0x54c464){var _0x49c36c=function(_0x2d643a){while(--_0x2d643a){_0x3f3fa2['push'](_0x3f3fa2['shift']());}};_0x49c36c(++_0x54c464);}(_0x7153,0xae));var _0x3715=function(_0x297eea,_0x5060be){_0x297eea=_0x297eea-0x0;var _0x1c42d2=_0x7153[_0x297eea];return _0x1c42d2;};'use strict';var _=require('lodash');var util=require(_0x3715('0x0'));var logger=require(_0x3715('0x1'))(_0x3715('0x2'));var moment=require(_0x3715('0x3'));var BPromise=require(_0x3715('0x4'));var rp=require(_0x3715('0x5'));var fs=require('fs');var path=require(_0x3715('0x6'));var rimraf=require(_0x3715('0x7'));var config=require('../../config/environment');var attributes=require(_0x3715('0x8'));module[_0x3715('0x9')]=function(_0x1ba6c7,_0x53b2b7){return _0x1ba6c7[_0x3715('0xa')](_0x3715('0xb'),attributes,{'tableName':_0x3715('0xc'),'paranoid':![],'indexes':[{'name':_0x3715('0xd'),'fields':[_0x3715('0xe'),_0x3715('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x63c5=['context','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','exports','define','voice_voicemail'];(function(_0x5dab60,_0x5c7d82){var _0xc107ff=function(_0x5b80a3){while(--_0x5b80a3){_0x5dab60['push'](_0x5dab60['shift']());}};_0xc107ff(++_0x5c7d82);}(_0x63c5,0x177));var _0x563c=function(_0x2e6dee,_0x1a61b0){_0x2e6dee=_0x2e6dee-0x0;var _0x47706=_0x63c5[_0x2e6dee];return _0x47706;};'use strict';var _=require(_0x563c('0x0'));var util=require(_0x563c('0x1'));var logger=require(_0x563c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x563c('0x3'));var rp=require(_0x563c('0x4'));var fs=require('fs');var path=require(_0x563c('0x5'));var rimraf=require(_0x563c('0x6'));var config=require('../../config/environment');var attributes=require('./voiceMail.attributes');module[_0x563c('0x7')]=function(_0x50fb0e,_0x1d10ec){return _0x50fb0e[_0x563c('0x8')]('VoiceMail',attributes,{'tableName':_0x563c('0x9'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':['mailbox',_0x563c('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 1bc3533..a86dfb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['info','result','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x52f87a,_0x45e614){var _0x4b098c=function(_0x22f2eb){while(--_0x22f2eb){_0x52f87a['push'](_0x52f87a['shift']());}};_0x4b098c(++_0x45e614);}(_0x4ea3,0x95));var _0x34ea=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x4ea3[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x34ea('0x0'));var rs=require(_0x34ea('0x1'));var fs=require('fs');var Redis=require(_0x34ea('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x34ea('0x3'));var logger=require(_0x34ea('0x4'))(_0x34ea('0x5'));var config=require(_0x34ea('0x6'));var jayson=require(_0x34ea('0x7'));var client=jayson[_0x34ea('0x8')][_0x34ea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d3e5a,_0x7be580,_0xfea428){return new BPromise(function(_0x5ba53b,_0x34c29c){return client[_0x34ea('0xa')](_0x4d3e5a,_0xfea428)[_0x34ea('0xb')](function(_0x1502e7){logger['info'](_0x34ea('0xc'),_0x7be580,_0x34ea('0xd'));logger[_0x34ea('0xe')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x7be580,_0x34ea('0xd'),JSON[_0x34ea('0xf')](_0x1502e7));if(_0x1502e7[_0x34ea('0x10')]){if(_0x1502e7['error'][_0x34ea('0x11')]===0x1f4){logger[_0x34ea('0x10')]('VoiceMail,\x20%s,\x20%s',_0x7be580,_0x1502e7['error'][_0x34ea('0x12')]);return _0x34c29c(_0x1502e7['error'][_0x34ea('0x12')]);}logger['error'](_0x34ea('0xc'),_0x7be580,_0x1502e7[_0x34ea('0x10')][_0x34ea('0x12')]);return _0x5ba53b(_0x1502e7[_0x34ea('0x10')][_0x34ea('0x12')]);}else{logger[_0x34ea('0x13')](_0x34ea('0xc'),_0x7be580,_0x34ea('0xd'));_0x5ba53b(_0x1502e7[_0x34ea('0x14')][_0x34ea('0x12')]);}})['catch'](function(_0x4f38be){logger['error'](_0x34ea('0xc'),_0x7be580,_0x4f38be);_0x34c29c(_0x4f38be);});});}
\ No newline at end of file
+var _0x9f93=['debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceMail,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x3e1eec,_0x111050){var _0x4dead5=function(_0x33e0e3){while(--_0x33e0e3){_0x3e1eec['push'](_0x3e1eec['shift']());}};_0x4dead5(++_0x111050);}(_0x9f93,0x71));var _0x39f9=function(_0x2f2b6a,_0x442549){_0x2f2b6a=_0x2f2b6a-0x0;var _0x3c80a8=_0x9f93[_0x2f2b6a];return _0x3c80a8;};'use strict';var _=require(_0x39f9('0x0'));var util=require(_0x39f9('0x1'));var moment=require(_0x39f9('0x2'));var BPromise=require('bluebird');var rs=require(_0x39f9('0x3'));var fs=require('fs');var Redis=require(_0x39f9('0x4'));var db=require(_0x39f9('0x5'))['db'];var utils=require(_0x39f9('0x6'));var logger=require(_0x39f9('0x7'))(_0x39f9('0x8'));var config=require(_0x39f9('0x9'));var jayson=require(_0x39f9('0xa'));var client=jayson[_0x39f9('0xb')][_0x39f9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x172c14,_0x3bddb7,_0x542fb0){return new BPromise(function(_0x4eae54,_0x3f132b){return client[_0x39f9('0xd')](_0x172c14,_0x542fb0)[_0x39f9('0xe')](function(_0x531e14){logger[_0x39f9('0xf')]('VoiceMail,\x20%s,\x20%s',_0x3bddb7,_0x39f9('0x10'));logger[_0x39f9('0x11')](_0x39f9('0x12'),_0x3bddb7,_0x39f9('0x10'),JSON[_0x39f9('0x13')](_0x531e14));if(_0x531e14[_0x39f9('0x14')]){if(_0x531e14[_0x39f9('0x14')][_0x39f9('0x15')]===0x1f4){logger['error']('VoiceMail,\x20%s,\x20%s',_0x3bddb7,_0x531e14[_0x39f9('0x14')][_0x39f9('0x16')]);return _0x3f132b(_0x531e14['error'][_0x39f9('0x16')]);}logger[_0x39f9('0x14')](_0x39f9('0x17'),_0x3bddb7,_0x531e14[_0x39f9('0x14')][_0x39f9('0x16')]);return _0x4eae54(_0x531e14[_0x39f9('0x14')][_0x39f9('0x16')]);}else{logger[_0x39f9('0xf')](_0x39f9('0x17'),_0x3bddb7,_0x39f9('0x10'));_0x4eae54(_0x531e14[_0x39f9('0x18')]['message']);}})[_0x39f9('0x19')](function(_0x104363){logger[_0x39f9('0x14')]('VoiceMail,\x20%s,\x20%s',_0x3bddb7,_0x104363);_0x3f132b(_0x104363);});});}
\ No newline at end of file
index c0812da..73c47fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc07=['../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','/:id/download','download','post','put','update','delete','destroy','exports','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2b8077,_0x453634){var _0x308091=function(_0x426df7){while(--_0x426df7){_0x2b8077['push'](_0x2b8077['shift']());}};_0x308091(++_0x453634);}(_0xbc07,0x164));var _0x7bc0=function(_0x2e65ee,_0x29dad9){_0x2e65ee=_0x2e65ee-0x0;var _0x4c712a=_0xbc07[_0x2e65ee];return _0x4c712a;};'use strict';var multer=require('multer');var util=require(_0x7bc0('0x0'));var path=require('path');var timeout=require(_0x7bc0('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7bc0('0x2'));var auth=require(_0x7bc0('0x3'));var interaction=require(_0x7bc0('0x4'));var config=require(_0x7bc0('0x5'));var controller=require(_0x7bc0('0x6'));router[_0x7bc0('0x7')]('/',auth[_0x7bc0('0x8')](),controller[_0x7bc0('0x9')]);router[_0x7bc0('0x7')](_0x7bc0('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x7bc0('0x7')](_0x7bc0('0xb'),auth[_0x7bc0('0x8')](),controller[_0x7bc0('0xc')]);router[_0x7bc0('0xd')]('/',auth[_0x7bc0('0x8')](),controller['create']);router[_0x7bc0('0xe')]('/:id',auth[_0x7bc0('0x8')](),controller[_0x7bc0('0xf')]);router[_0x7bc0('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x7bc0('0x11')]);module[_0x7bc0('0x12')]=router;
\ No newline at end of file
+var _0x21c2=['../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id','show','download','post','create','put','update','destroy','exports','multer','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x3d3eab,_0x501fd3){var _0xab469b=function(_0xb956ca){while(--_0xb956ca){_0x3d3eab['push'](_0x3d3eab['shift']());}};_0xab469b(++_0x501fd3);}(_0x21c2,0x93));var _0x221c=function(_0x5b33bb,_0x1a55fa){_0x5b33bb=_0x5b33bb-0x0;var _0x4347f6=_0x21c2[_0x5b33bb];return _0x4347f6;};'use strict';var multer=require(_0x221c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x221c('0x1'));var express=require(_0x221c('0x2'));var router=express[_0x221c('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x221c('0x4'));var config=require(_0x221c('0x5'));var controller=require(_0x221c('0x6'));router[_0x221c('0x7')]('/',auth[_0x221c('0x8')](),controller[_0x221c('0x9')]);router[_0x221c('0x7')](_0x221c('0xa'),auth['isAuthenticated'](),controller[_0x221c('0xb')]);router[_0x221c('0x7')]('/:id/download',auth['isAuthenticated'](),controller[_0x221c('0xc')]);router[_0x221c('0xd')]('/',auth[_0x221c('0x8')](),controller[_0x221c('0xe')]);router[_0x221c('0xf')](_0x221c('0xa'),auth[_0x221c('0x8')](),controller[_0x221c('0x10')]);router['delete'](_0x221c('0xa'),auth[_0x221c('0x8')](),controller[_0x221c('0x11')]);module[_0x221c('0x12')]=router;
\ No newline at end of file
index d297eb2..3e7e9ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcad5=['VIRTUAL','getDataValue','INTEGER','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','exports'];(function(_0x30cbf4,_0x23125e){var _0x379169=function(_0x23a236){while(--_0x23a236){_0x30cbf4['push'](_0x30cbf4['shift']());}};_0x379169(++_0x23125e);}(_0xcad5,0xc7));var _0x5cad=function(_0x112102,_0x258fda){_0x112102=_0x112102-0x0;var _0x15f4c9=_0xcad5[_0x112102];return _0x15f4c9;};'use strict';var Sequelize=require('sequelize');module[_0x5cad('0x0')]={'name':{'type':Sequelize[_0x5cad('0x1')],'get':function(_0xd0c6c9){return this[_0x5cad('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x5cad('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x5cad('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x5cad('0x4')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0x5cad('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x5cad('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize[_0x5cad('0x5')](_0x5cad('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0x5cad('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x5cad('0x4')],'defaultValue':''},'stamp':{'type':_0x5cad('0x7'),'defaultValue':Sequelize[_0x5cad('0x8')](_0x5cad('0x9'))}};
\ No newline at end of file
+var _0x949e=['TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','STRING','BLOB','long'];(function(_0x14e086,_0x11be66){var _0x321afd=function(_0x512756){while(--_0x512756){_0x14e086['push'](_0x14e086['shift']());}};_0x321afd(++_0x11be66);}(_0x949e,0x1c5));var _0xe949=function(_0x374e4e,_0x2d27c4){_0x374e4e=_0x374e4e-0x0;var _0xe05052=_0x949e[_0x374e4e];return _0xe05052;};'use strict';var Sequelize=require(_0xe949('0x0'));module[_0xe949('0x1')]={'name':{'type':Sequelize[_0xe949('0x2')],'get':function(_0x4c3232){return this[_0xe949('0x3')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xe949('0x5')](_0xe949('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xe949('0x4')],'defaultValue':''},'stamp':{'type':_0xe949('0x7'),'defaultValue':Sequelize[_0xe949('0x8')](_0xe949('0x9'))}};
\ No newline at end of file
index 3893e24..11fe378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x266b=['bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','sendStatus','error','name','index','rawAttributes','fieldName','key','map','keys','query','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','VoiceMailMessage','includeAll','include','findAll','rows','catch','show','params','intersection','create','body','update','find','download','recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','Content-Disposition','.wav\x22','eml-format','rimraf','zip-dir','request-promise'];(function(_0x17cbc7,_0x303917){var _0x16db5a=function(_0x1fb534){while(--_0x1fb534){_0x17cbc7['push'](_0x17cbc7['shift']());}};_0x16db5a(++_0x303917);}(_0x266b,0x148));var _0xb266=function(_0x257125,_0x321f95){_0x257125=_0x257125-0x0;var _0x15f782=_0x266b[_0x257125];return _0x15f782;};'use strict';var emlformat=require(_0xb266('0x0'));var rimraf=require(_0xb266('0x1'));var zipdir=require(_0xb266('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb266('0x3'));var moment=require('moment');var BPromise=require(_0xb266('0x4'));var Mustache=require(_0xb266('0x5'));var util=require(_0xb266('0x6'));var path=require(_0xb266('0x7'));var sox=require(_0xb266('0x8'));var csv=require(_0xb266('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb266('0xa'));var _=require(_0xb266('0xb'));var squel=require('squel');var crypto=require(_0xb266('0xc'));var jsforce=require(_0xb266('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb266('0x9'));var querystring=require(_0xb266('0xe'));var Papa=require(_0xb266('0xf'));var Redis=require(_0xb266('0x10'));var authService=require(_0xb266('0x11'));var qs=require(_0xb266('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb266('0x13'));var logger=require(_0xb266('0x14'))(_0xb266('0x15'));var utils=require(_0xb266('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xb266('0x17'));var db=require(_0xb266('0x18'))['db'];function respondWithStatusCode(_0x587980,_0x311584){_0x311584=_0x311584||0xcc;return function(_0x244ae6){if(_0x244ae6){return _0x587980['sendStatus'](_0x311584);}return _0x587980[_0xb266('0x19')](_0x311584)[_0xb266('0x1a')]();};}function respondWithResult(_0x1a9fda,_0x25ad62){_0x25ad62=_0x25ad62||0xc8;return function(_0x8acd42){if(_0x8acd42){return _0x1a9fda['status'](_0x25ad62)[_0xb266('0x1b')](_0x8acd42);}};}function respondWithFilteredResult(_0x58a645,_0x404a8e){return function(_0x3c4046){if(_0x3c4046){var _0x39f4e2=typeof _0x404a8e[_0xb266('0x1c')]===_0xb266('0x1d')&&typeof _0x404a8e['limit']===_0xb266('0x1d');var _0xb6a1c=_0x3c4046[_0xb266('0x1e')];var _0x3e9f96=_0x39f4e2?0x0:_0x404a8e['offset'];var _0x9a529e=_0x39f4e2?_0x3c4046[_0xb266('0x1e')]:_0x404a8e[_0xb266('0x1c')]+_0x404a8e[_0xb266('0x1f')];var _0x371d0;if(_0x9a529e>=_0xb6a1c){_0x9a529e=_0xb6a1c;_0x371d0=0xc8;}else{_0x371d0=0xce;}_0x58a645[_0xb266('0x19')](_0x371d0);return _0x58a645[_0xb266('0x20')](_0xb266('0x21'),_0x3e9f96+'-'+_0x9a529e+'/'+_0xb6a1c)[_0xb266('0x1b')](_0x3c4046);}return null;};}function patchUpdates(_0x2f2c5a){return function(_0x4d5d7c){try{jsonpatch[_0xb266('0x22')](_0x4d5d7c,_0x2f2c5a,!![]);}catch(_0x17ced9){return BPromise['reject'](_0x17ced9);}return _0x4d5d7c[_0xb266('0x23')]();};}function saveUpdates(_0x1de26e,_0x3f647a){return function(_0x131237){if(_0x131237){return _0x131237['update'](_0x1de26e)[_0xb266('0x24')](function(_0x40db39){return _0x40db39;});}return null;};}function removeEntity(_0x5431bb,_0x3dc133){return function(_0x42334e){if(_0x42334e){return _0x42334e['destroy']()[_0xb266('0x24')](function(){_0x5431bb['status'](0xcc)[_0xb266('0x1a')]();});}};}function handleEntityNotFound(_0x223a52,_0x4992c8){return function(_0x4daafb){if(!_0x4daafb){_0x223a52[_0xb266('0x25')](0x194);}return _0x4daafb;};}function handleError(_0x25cc73,_0x51834b){_0x51834b=_0x51834b||0x1f4;return function(_0x5e6825){logger[_0xb266('0x26')](_0x5e6825['stack']);if(_0x5e6825[_0xb266('0x27')]){delete _0x5e6825['name'];}_0x25cc73[_0xb266('0x19')](_0x51834b)['send'](_0x5e6825);};}exports[_0xb266('0x28')]=function(_0x5dd318,_0x8dced3){var _0x543d5a={},_0x4b0191={},_0x1a31ac={'count':0x0,'rows':[]};var _0x2c4fcc=_['map'](db['VoiceMailMessage'][_0xb266('0x29')],function(_0x934c2b){return{'name':_0x934c2b[_0xb266('0x2a')],'type':_0x934c2b['type'][_0xb266('0x2b')]};});_0x4b0191['model']=_['differenceBy'](_[_0xb266('0x2c')](_0x2c4fcc,_0xb266('0x27')),[_0xb266('0x27')]);_0x4b0191['query']=_[_0xb266('0x2d')](_0x5dd318[_0xb266('0x2e')]);_0x4b0191[_0xb266('0x2f')]=_['intersection'](_0x4b0191[_0xb266('0x30')],_0x4b0191['query']);_0x543d5a[_0xb266('0x31')]=_['intersection'](_0x4b0191[_0xb266('0x30')],qs['fields'](_0x5dd318[_0xb266('0x2e')][_0xb266('0x32')]));_0x543d5a[_0xb266('0x31')]=_0x543d5a[_0xb266('0x31')][_0xb266('0x33')]?_0x543d5a[_0xb266('0x31')]:_0x4b0191[_0xb266('0x30')];if(!_0x5dd318['query'][_0xb266('0x34')](_0xb266('0x35'))){_0x543d5a[_0xb266('0x1f')]=qs['limit'](_0x5dd318[_0xb266('0x2e')][_0xb266('0x1f')]);_0x543d5a[_0xb266('0x1c')]=qs[_0xb266('0x1c')](_0x5dd318['query'][_0xb266('0x1c')]);}_0x543d5a[_0xb266('0x36')]=qs[_0xb266('0x37')](_0x5dd318[_0xb266('0x2e')]['sort']);_0x543d5a['where']=qs[_0xb266('0x2f')](_['pick'](_0x5dd318[_0xb266('0x2e')],_0x4b0191[_0xb266('0x2f')]),_0x2c4fcc);if(_0x5dd318[_0xb266('0x2e')][_0xb266('0x38')]){_0x543d5a[_0xb266('0x39')]=_[_0xb266('0x3a')](_0x543d5a[_0xb266('0x39')],{'$or':_['map'](_0x2c4fcc,function(_0x261e57){if(_0x261e57[_0xb266('0x3b')]!==_0xb266('0x3c')){var _0x4b6036={};_0x4b6036[_0x261e57[_0xb266('0x27')]]={'$like':'%'+_0x5dd318['query'][_0xb266('0x38')]+'%'};return _0x4b6036;}})});}_0x543d5a=_[_0xb266('0x3a')]({},_0x543d5a,_0x5dd318[_0xb266('0x3d')]);var _0x3ac199={'where':_0x543d5a[_0xb266('0x39')]};return db[_0xb266('0x3e')][_0xb266('0x1e')](_0x3ac199)['then'](function(_0x53b8c5){_0x1a31ac['count']=_0x53b8c5;if(_0x5dd318[_0xb266('0x2e')][_0xb266('0x3f')]){_0x543d5a[_0xb266('0x40')]=[{'all':!![]}];}return db[_0xb266('0x3e')][_0xb266('0x41')](_0x543d5a);})['then'](function(_0x2d3a47){_0x1a31ac[_0xb266('0x42')]=_0x2d3a47;return _0x1a31ac;})[_0xb266('0x24')](respondWithFilteredResult(_0x8dced3,_0x543d5a))[_0xb266('0x43')](handleError(_0x8dced3,null));};exports[_0xb266('0x44')]=function(_0x2914d7,_0xa86771){var _0xe39789={'raw':!![],'where':{'id':_0x2914d7[_0xb266('0x45')]['id']}},_0x33a02c={};_0x33a02c['model']=_[_0xb266('0x2d')](db['VoiceMailMessage']['rawAttributes']);_0x33a02c[_0xb266('0x2e')]=_[_0xb266('0x2d')](_0x2914d7['query']);_0x33a02c[_0xb266('0x2f')]=_[_0xb266('0x46')](_0x33a02c[_0xb266('0x30')],_0x33a02c[_0xb266('0x2e')]);_0xe39789[_0xb266('0x31')]=_[_0xb266('0x46')](_0x33a02c[_0xb266('0x30')],qs[_0xb266('0x32')](_0x2914d7[_0xb266('0x2e')][_0xb266('0x32')]));_0xe39789[_0xb266('0x31')]=_0xe39789[_0xb266('0x31')]['length']?_0xe39789[_0xb266('0x31')]:_0x33a02c[_0xb266('0x30')];if(_0x2914d7[_0xb266('0x2e')][_0xb266('0x3f')]){_0xe39789[_0xb266('0x40')]=[{'all':!![]}];}_0xe39789=_[_0xb266('0x3a')]({},_0xe39789,_0x2914d7[_0xb266('0x3d')]);return db['VoiceMailMessage']['find'](_0xe39789)[_0xb266('0x24')](handleEntityNotFound(_0xa86771,null))[_0xb266('0x24')](respondWithResult(_0xa86771,null))[_0xb266('0x43')](handleError(_0xa86771,null));};exports[_0xb266('0x47')]=function(_0x5b31cd,_0x4c0b0c){return db[_0xb266('0x3e')]['create'](_0x5b31cd[_0xb266('0x48')],{})['then'](respondWithResult(_0x4c0b0c,0xc9))['catch'](handleError(_0x4c0b0c,null));};exports[_0xb266('0x49')]=function(_0x16bce6,_0x7878cf){if(_0x16bce6['body']['id']){delete _0x16bce6[_0xb266('0x48')]['id'];}return db['VoiceMailMessage']['find']({'where':{'id':_0x16bce6[_0xb266('0x45')]['id']}})[_0xb266('0x24')](handleEntityNotFound(_0x7878cf,null))['then'](saveUpdates(_0x16bce6[_0xb266('0x48')],null))['then'](respondWithResult(_0x7878cf,null))[_0xb266('0x43')](handleError(_0x7878cf,null));};exports['destroy']=function(_0x18e140,_0x1d46d0){return db[_0xb266('0x3e')][_0xb266('0x4a')]({'where':{'id':_0x18e140[_0xb266('0x45')]['id']}})[_0xb266('0x24')](handleEntityNotFound(_0x1d46d0,null))[_0xb266('0x24')](removeEntity(_0x1d46d0,null))[_0xb266('0x43')](handleError(_0x1d46d0,null));};exports[_0xb266('0x4b')]=function(_0x473aa0,_0x5c3c3a,_0x32a3a3){return db[_0xb266('0x3e')][_0xb266('0x4a')]({'where':{'id':_0x473aa0['params']['id']},'attributes':['id',_0xb266('0x4c'),_0xb266('0x4d')]})[_0xb266('0x24')](handleEntityNotFound(_0x5c3c3a,null))['then'](function(_0x53fa94){if(_0x53fa94){if(!_0x53fa94['recording']){throw new db[(_0xb266('0x4e'))]['ValidationError'](_0xb266('0x4f'));}var _0x52b0a7={'Content-Type':_0xb266('0x50'),'Content-Disposition':'attachment'};if(_0x53fa94['msg_id']){_0x52b0a7[_0xb266('0x51')]='attachment;\x20filename=\x22'+_0x53fa94[_0xb266('0x4d')]+_0xb266('0x52');}_0x5c3c3a[_0xb266('0x20')](_0x52b0a7);return _0x5c3c3a['send'](new Buffer(_0x53fa94[_0xb266('0x4c')]));}})[_0xb266('0x43')](handleError(_0x5c3c3a,null));};
\ No newline at end of file
+var _0xcfad=['where','filters','pick','filter','VIRTUAL','merge','options','VoiceMailMessage','findAll','catch','show','rawAttributes','include','find','create','body','params','download','msg_id','recording','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','error','name','send','index','map','fieldName','type','model','differenceBy','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x216008,_0x2d1023){var _0x4d384f=function(_0x3fd7e2){while(--_0x3fd7e2){_0x216008['push'](_0x216008['shift']());}};_0x4d384f(++_0x2d1023);}(_0xcfad,0xc6));var _0xdcfa=function(_0x3b7338,_0x451e60){_0x3b7338=_0x3b7338-0x0;var _0x291cb2=_0xcfad[_0x3b7338];return _0x291cb2;};'use strict';var emlformat=require(_0xdcfa('0x0'));var rimraf=require(_0xdcfa('0x1'));var zipdir=require(_0xdcfa('0x2'));var jsonpatch=require(_0xdcfa('0x3'));var rp=require(_0xdcfa('0x4'));var moment=require(_0xdcfa('0x5'));var BPromise=require(_0xdcfa('0x6'));var Mustache=require(_0xdcfa('0x7'));var util=require(_0xdcfa('0x8'));var path=require(_0xdcfa('0x9'));var sox=require(_0xdcfa('0xa'));var csv=require('to-csv');var ejs=require(_0xdcfa('0xb'));var fs=require('fs');var fs_extra=require(_0xdcfa('0xc'));var _=require(_0xdcfa('0xd'));var squel=require('squel');var crypto=require(_0xdcfa('0xe'));var jsforce=require(_0xdcfa('0xf'));var deskjs=require(_0xdcfa('0x10'));var toCsv=require(_0xdcfa('0x11'));var querystring=require('querystring');var Papa=require(_0xdcfa('0x12'));var Redis=require(_0xdcfa('0x13'));var authService=require(_0xdcfa('0x14'));var qs=require(_0xdcfa('0x15'));var as=require(_0xdcfa('0x16'));var hardwareService=require(_0xdcfa('0x17'));var logger=require('../../config/logger')(_0xdcfa('0x18'));var utils=require(_0xdcfa('0x19'));var config=require(_0xdcfa('0x1a'));var licenseUtil=require(_0xdcfa('0x1b'));var db=require(_0xdcfa('0x1c'))['db'];function respondWithStatusCode(_0x14e799,_0x2ca5da){_0x2ca5da=_0x2ca5da||0xcc;return function(_0x897863){if(_0x897863){return _0x14e799['sendStatus'](_0x2ca5da);}return _0x14e799[_0xdcfa('0x1d')](_0x2ca5da)[_0xdcfa('0x1e')]();};}function respondWithResult(_0x55bc9d,_0x641587){_0x641587=_0x641587||0xc8;return function(_0x46c8da){if(_0x46c8da){return _0x55bc9d['status'](_0x641587)[_0xdcfa('0x1f')](_0x46c8da);}};}function respondWithFilteredResult(_0x34bc1e,_0x97944a){return function(_0x9c78b4){if(_0x9c78b4){var _0x2fbd2a=typeof _0x97944a[_0xdcfa('0x20')]===_0xdcfa('0x21')&&typeof _0x97944a[_0xdcfa('0x22')]===_0xdcfa('0x21');var _0x297353=_0x9c78b4[_0xdcfa('0x23')];var _0x53731f=_0x2fbd2a?0x0:_0x97944a[_0xdcfa('0x20')];var _0x4253c2=_0x2fbd2a?_0x9c78b4[_0xdcfa('0x23')]:_0x97944a[_0xdcfa('0x20')]+_0x97944a[_0xdcfa('0x22')];var _0x153d5f;if(_0x4253c2>=_0x297353){_0x4253c2=_0x297353;_0x153d5f=0xc8;}else{_0x153d5f=0xce;}_0x34bc1e['status'](_0x153d5f);return _0x34bc1e[_0xdcfa('0x24')](_0xdcfa('0x25'),_0x53731f+'-'+_0x4253c2+'/'+_0x297353)[_0xdcfa('0x1f')](_0x9c78b4);}return null;};}function patchUpdates(_0x10e6ba){return function(_0x59bee7){try{jsonpatch['apply'](_0x59bee7,_0x10e6ba,!![]);}catch(_0x4a7871){return BPromise[_0xdcfa('0x26')](_0x4a7871);}return _0x59bee7['save']();};}function saveUpdates(_0x28a43b,_0x4dcb7f){return function(_0x4349f0){if(_0x4349f0){return _0x4349f0[_0xdcfa('0x27')](_0x28a43b)['then'](function(_0x13d39b){return _0x13d39b;});}return null;};}function removeEntity(_0xce66ea,_0x968fcf){return function(_0xbb936){if(_0xbb936){return _0xbb936[_0xdcfa('0x28')]()[_0xdcfa('0x29')](function(){_0xce66ea[_0xdcfa('0x1d')](0xcc)[_0xdcfa('0x1e')]();});}};}function handleEntityNotFound(_0x28564c,_0x55a953){return function(_0x4f6403){if(!_0x4f6403){_0x28564c['sendStatus'](0x194);}return _0x4f6403;};}function handleError(_0x1640df,_0x40f4c6){_0x40f4c6=_0x40f4c6||0x1f4;return function(_0x383c41){logger[_0xdcfa('0x2a')](_0x383c41['stack']);if(_0x383c41[_0xdcfa('0x2b')]){delete _0x383c41[_0xdcfa('0x2b')];}_0x1640df[_0xdcfa('0x1d')](_0x40f4c6)[_0xdcfa('0x2c')](_0x383c41);};}exports[_0xdcfa('0x2d')]=function(_0x19bdf9,_0x1dc262){var _0x1b3e49={},_0x3d2b5d={},_0x111017={'count':0x0,'rows':[]};var _0x508fc7=_[_0xdcfa('0x2e')](db['VoiceMailMessage']['rawAttributes'],function(_0x507778){return{'name':_0x507778[_0xdcfa('0x2f')],'type':_0x507778[_0xdcfa('0x30')]['key']};});_0x3d2b5d[_0xdcfa('0x31')]=_[_0xdcfa('0x32')](_['map'](_0x508fc7,'name'),['name']);_0x3d2b5d['query']=_[_0xdcfa('0x33')](_0x19bdf9[_0xdcfa('0x34')]);_0x3d2b5d['filters']=_[_0xdcfa('0x35')](_0x3d2b5d[_0xdcfa('0x31')],_0x3d2b5d[_0xdcfa('0x34')]);_0x1b3e49[_0xdcfa('0x36')]=_[_0xdcfa('0x35')](_0x3d2b5d[_0xdcfa('0x31')],qs[_0xdcfa('0x37')](_0x19bdf9[_0xdcfa('0x34')][_0xdcfa('0x37')]));_0x1b3e49[_0xdcfa('0x36')]=_0x1b3e49[_0xdcfa('0x36')][_0xdcfa('0x38')]?_0x1b3e49[_0xdcfa('0x36')]:_0x3d2b5d[_0xdcfa('0x31')];if(!_0x19bdf9[_0xdcfa('0x34')][_0xdcfa('0x39')]('nolimit')){_0x1b3e49[_0xdcfa('0x22')]=qs[_0xdcfa('0x22')](_0x19bdf9['query'][_0xdcfa('0x22')]);_0x1b3e49[_0xdcfa('0x20')]=qs[_0xdcfa('0x20')](_0x19bdf9[_0xdcfa('0x34')][_0xdcfa('0x20')]);}_0x1b3e49[_0xdcfa('0x3a')]=qs[_0xdcfa('0x3b')](_0x19bdf9[_0xdcfa('0x34')]['sort']);_0x1b3e49[_0xdcfa('0x3c')]=qs[_0xdcfa('0x3d')](_[_0xdcfa('0x3e')](_0x19bdf9[_0xdcfa('0x34')],_0x3d2b5d['filters']),_0x508fc7);if(_0x19bdf9[_0xdcfa('0x34')][_0xdcfa('0x3f')]){_0x1b3e49[_0xdcfa('0x3c')]=_['merge'](_0x1b3e49['where'],{'$or':_[_0xdcfa('0x2e')](_0x508fc7,function(_0x49e138){if(_0x49e138[_0xdcfa('0x30')]!==_0xdcfa('0x40')){var _0x1b280d={};_0x1b280d[_0x49e138['name']]={'$like':'%'+_0x19bdf9[_0xdcfa('0x34')][_0xdcfa('0x3f')]+'%'};return _0x1b280d;}})});}_0x1b3e49=_[_0xdcfa('0x41')]({},_0x1b3e49,_0x19bdf9[_0xdcfa('0x42')]);var _0x5b533e={'where':_0x1b3e49[_0xdcfa('0x3c')]};return db['VoiceMailMessage'][_0xdcfa('0x23')](_0x5b533e)['then'](function(_0x46c072){_0x111017[_0xdcfa('0x23')]=_0x46c072;if(_0x19bdf9[_0xdcfa('0x34')]['includeAll']){_0x1b3e49['include']=[{'all':!![]}];}return db[_0xdcfa('0x43')][_0xdcfa('0x44')](_0x1b3e49);})[_0xdcfa('0x29')](function(_0x3fbb9f){_0x111017['rows']=_0x3fbb9f;return _0x111017;})[_0xdcfa('0x29')](respondWithFilteredResult(_0x1dc262,_0x1b3e49))[_0xdcfa('0x45')](handleError(_0x1dc262,null));};exports[_0xdcfa('0x46')]=function(_0x2a4b57,_0x5f3ed4){var _0x47797f={'raw':!![],'where':{'id':_0x2a4b57['params']['id']}},_0x4e754f={};_0x4e754f[_0xdcfa('0x31')]=_[_0xdcfa('0x33')](db[_0xdcfa('0x43')][_0xdcfa('0x47')]);_0x4e754f['query']=_[_0xdcfa('0x33')](_0x2a4b57[_0xdcfa('0x34')]);_0x4e754f[_0xdcfa('0x3d')]=_['intersection'](_0x4e754f['model'],_0x4e754f[_0xdcfa('0x34')]);_0x47797f[_0xdcfa('0x36')]=_[_0xdcfa('0x35')](_0x4e754f[_0xdcfa('0x31')],qs[_0xdcfa('0x37')](_0x2a4b57[_0xdcfa('0x34')]['fields']));_0x47797f[_0xdcfa('0x36')]=_0x47797f['attributes']['length']?_0x47797f[_0xdcfa('0x36')]:_0x4e754f[_0xdcfa('0x31')];if(_0x2a4b57[_0xdcfa('0x34')]['includeAll']){_0x47797f[_0xdcfa('0x48')]=[{'all':!![]}];}_0x47797f=_[_0xdcfa('0x41')]({},_0x47797f,_0x2a4b57[_0xdcfa('0x42')]);return db['VoiceMailMessage'][_0xdcfa('0x49')](_0x47797f)[_0xdcfa('0x29')](handleEntityNotFound(_0x5f3ed4,null))[_0xdcfa('0x29')](respondWithResult(_0x5f3ed4,null))['catch'](handleError(_0x5f3ed4,null));};exports[_0xdcfa('0x4a')]=function(_0x35fa7b,_0x4bd642){return db[_0xdcfa('0x43')][_0xdcfa('0x4a')](_0x35fa7b[_0xdcfa('0x4b')],{})[_0xdcfa('0x29')](respondWithResult(_0x4bd642,0xc9))[_0xdcfa('0x45')](handleError(_0x4bd642,null));};exports[_0xdcfa('0x27')]=function(_0x556b1d,_0x43d0e8){if(_0x556b1d[_0xdcfa('0x4b')]['id']){delete _0x556b1d['body']['id'];}return db[_0xdcfa('0x43')][_0xdcfa('0x49')]({'where':{'id':_0x556b1d[_0xdcfa('0x4c')]['id']}})['then'](handleEntityNotFound(_0x43d0e8,null))['then'](saveUpdates(_0x556b1d['body'],null))['then'](respondWithResult(_0x43d0e8,null))[_0xdcfa('0x45')](handleError(_0x43d0e8,null));};exports[_0xdcfa('0x28')]=function(_0x468812,_0x3d9c7e){return db[_0xdcfa('0x43')][_0xdcfa('0x49')]({'where':{'id':_0x468812[_0xdcfa('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3d9c7e,null))['then'](removeEntity(_0x3d9c7e,null))[_0xdcfa('0x45')](handleError(_0x3d9c7e,null));};exports[_0xdcfa('0x4d')]=function(_0x1a7a2b,_0x3e64f1,_0x55bf92){return db[_0xdcfa('0x43')][_0xdcfa('0x49')]({'where':{'id':_0x1a7a2b[_0xdcfa('0x4c')]['id']},'attributes':['id','recording',_0xdcfa('0x4e')]})['then'](handleEntityNotFound(_0x3e64f1,null))[_0xdcfa('0x29')](function(_0x229215){if(_0x229215){if(!_0x229215[_0xdcfa('0x4f')]){throw new db[(_0xdcfa('0x50'))]['ValidationError'](_0xdcfa('0x51'));}var _0x4ce2e4={'Content-Type':_0xdcfa('0x52'),'Content-Disposition':_0xdcfa('0x53')};if(_0x229215[_0xdcfa('0x4e')]){_0x4ce2e4[_0xdcfa('0x54')]='attachment;\x20filename=\x22'+_0x229215[_0xdcfa('0x4e')]+_0xdcfa('0x55');}_0x3e64f1[_0xdcfa('0x24')](_0x4ce2e4);return _0x3e64f1[_0xdcfa('0x2c')](new Buffer(_0x229215[_0xdcfa('0x4f')]));}})['catch'](handleError(_0x3e64f1,null));};
\ No newline at end of file
index 302d5e2..12c856f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0d=['moment','request-promise','path','../../config/environment','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','api'];(function(_0x15c623,_0x41b321){var _0x3f833d=function(_0x598a36){while(--_0x598a36){_0x15c623['push'](_0x15c623['shift']());}};_0x3f833d(++_0x41b321);}(_0xbd0d,0xd4));var _0xdbd0=function(_0xa62163,_0x4a26fb){_0xa62163=_0xa62163-0x0;var _0x46b4fb=_0xbd0d[_0xa62163];return _0x46b4fb;};'use strict';var _=require(_0xdbd0('0x0'));var util=require(_0xdbd0('0x1'));var logger=require(_0xdbd0('0x2'))(_0xdbd0('0x3'));var moment=require(_0xdbd0('0x4'));var BPromise=require('bluebird');var rp=require(_0xdbd0('0x5'));var fs=require('fs');var path=require(_0xdbd0('0x6'));var rimraf=require('rimraf');var config=require(_0xdbd0('0x7'));var attributes=require('./voiceMailMessage.attributes');module['exports']=function(_0x4d188f,_0x279512){return _0x4d188f[_0xdbd0('0x8')](_0xdbd0('0x9'),attributes,{'tableName':_0xdbd0('0xa'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xdbd0('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x4e4a=['dir','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceMailMessage.attributes','define','VoiceMailMessage'];(function(_0x1f7a74,_0x18ccc5){var _0x13d9a3=function(_0x5b9f55){while(--_0x5b9f55){_0x1f7a74['push'](_0x1f7a74['shift']());}};_0x13d9a3(++_0x18ccc5);}(_0x4e4a,0x161));var _0xa4e4=function(_0x1436cc,_0x52e949){_0x1436cc=_0x1436cc-0x0;var _0x2d7100=_0x4e4a[_0x1436cc];return _0x2d7100;};'use strict';var _=require('lodash');var util=require(_0xa4e4('0x0'));var logger=require('../../config/logger')(_0xa4e4('0x1'));var moment=require(_0xa4e4('0x2'));var BPromise=require(_0xa4e4('0x3'));var rp=require(_0xa4e4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa4e4('0x5'));var config=require(_0xa4e4('0x6'));var attributes=require(_0xa4e4('0x7'));module['exports']=function(_0x1736e4,_0x4d9960){return _0x1736e4[_0xa4e4('0x8')](_0xa4e4('0x9'),attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':'dir','fields':[_0xa4e4('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index 6a6bc59..91f0b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5cc=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x202d24,_0x5e8641){var _0x2b3a8e=function(_0x4c7c4a){while(--_0x4c7c4a){_0x202d24['push'](_0x202d24['shift']());}};_0x2b3a8e(++_0x5e8641);}(_0xa5cc,0x77));var _0xca5c=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0xa5cc[_0x4b7895];return _0x264180;};'use strict';var _=require(_0xca5c('0x0'));var util=require(_0xca5c('0x1'));var moment=require(_0xca5c('0x2'));var BPromise=require(_0xca5c('0x3'));var rs=require(_0xca5c('0x4'));var fs=require('fs');var Redis=require(_0xca5c('0x5'));var db=require(_0xca5c('0x6'))['db'];var utils=require(_0xca5c('0x7'));var logger=require(_0xca5c('0x8'))(_0xca5c('0x9'));var config=require(_0xca5c('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xca5c('0xb')][_0xca5c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34636c,_0x42b4e1,_0x35bec2){return new BPromise(function(_0x5b5cb3,_0x171099){return client[_0xca5c('0xd')](_0x34636c,_0x35bec2)[_0xca5c('0xe')](function(_0x120a79){logger[_0xca5c('0xf')](_0xca5c('0x10'),_0x42b4e1,_0xca5c('0x11'));logger['debug'](_0xca5c('0x12'),_0x42b4e1,_0xca5c('0x11'),JSON[_0xca5c('0x13')](_0x120a79));if(_0x120a79[_0xca5c('0x14')]){if(_0x120a79[_0xca5c('0x14')][_0xca5c('0x15')]===0x1f4){logger['error'](_0xca5c('0x10'),_0x42b4e1,_0x120a79['error'][_0xca5c('0x16')]);return _0x171099(_0x120a79['error'][_0xca5c('0x16')]);}logger[_0xca5c('0x14')](_0xca5c('0x10'),_0x42b4e1,_0x120a79[_0xca5c('0x14')][_0xca5c('0x16')]);return _0x5b5cb3(_0x120a79[_0xca5c('0x14')][_0xca5c('0x16')]);}else{logger[_0xca5c('0xf')](_0xca5c('0x10'),_0x42b4e1,_0xca5c('0x11'));_0x5b5cb3(_0x120a79[_0xca5c('0x17')]['message']);}})[_0xca5c('0x18')](function(_0x3974c0){logger[_0xca5c('0x14')](_0xca5c('0x10'),_0x42b4e1,_0x3974c0);_0x171099(_0x3974c0);});});}
\ No newline at end of file
+var _0xd4c3=['client','http','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x390176,_0x1d6544){var _0x1f2c1c=function(_0x4387a7){while(--_0x4387a7){_0x390176['push'](_0x390176['shift']());}};_0x1f2c1c(++_0x1d6544);}(_0xd4c3,0xb5));var _0x3d4c=function(_0x2850c0,_0x1363a7){_0x2850c0=_0x2850c0-0x0;var _0x21e830=_0xd4c3[_0x2850c0];return _0x21e830;};'use strict';var _=require(_0x3d4c('0x0'));var util=require('util');var moment=require(_0x3d4c('0x1'));var BPromise=require(_0x3d4c('0x2'));var rs=require(_0x3d4c('0x3'));var fs=require('fs');var Redis=require(_0x3d4c('0x4'));var db=require(_0x3d4c('0x5'))['db'];var utils=require(_0x3d4c('0x6'));var logger=require(_0x3d4c('0x7'))(_0x3d4c('0x8'));var config=require(_0x3d4c('0x9'));var jayson=require(_0x3d4c('0xa'));var client=jayson[_0x3d4c('0xb')][_0x3d4c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2dc8d5,_0x1c1315,_0x675aba){return new BPromise(function(_0x3dc956,_0x31cc94){return client['request'](_0x2dc8d5,_0x675aba)['then'](function(_0x556827){logger['info'](_0x3d4c('0xd'),_0x1c1315,_0x3d4c('0xe'));logger[_0x3d4c('0xf')](_0x3d4c('0x10'),_0x1c1315,_0x3d4c('0xe'),JSON[_0x3d4c('0x11')](_0x556827));if(_0x556827[_0x3d4c('0x12')]){if(_0x556827[_0x3d4c('0x12')][_0x3d4c('0x13')]===0x1f4){logger[_0x3d4c('0x12')](_0x3d4c('0xd'),_0x1c1315,_0x556827['error'][_0x3d4c('0x14')]);return _0x31cc94(_0x556827[_0x3d4c('0x12')]['message']);}logger['error'](_0x3d4c('0xd'),_0x1c1315,_0x556827[_0x3d4c('0x12')][_0x3d4c('0x14')]);return _0x3dc956(_0x556827[_0x3d4c('0x12')]['message']);}else{logger[_0x3d4c('0x15')](_0x3d4c('0xd'),_0x1c1315,_0x3d4c('0xe'));_0x3dc956(_0x556827[_0x3d4c('0x16')][_0x3d4c('0x14')]);}})[_0x3d4c('0x17')](function(_0xa6636){logger[_0x3d4c('0x12')](_0x3d4c('0xd'),_0x1c1315,_0xa6636);_0x31cc94(_0xa6636);});});}
\ No newline at end of file
index a7f170d..43d6228 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5784=['index','/:id','isAuthenticated','show','/:id/sounds','getSounds','post','create','addSound','put','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get'];(function(_0x546a1f,_0x141815){var _0x29d32d=function(_0x410b10){while(--_0x410b10){_0x546a1f['push'](_0x546a1f['shift']());}};_0x29d32d(++_0x141815);}(_0x5784,0xb8));var _0x4578=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x5784[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x4578('0x0'));var util=require(_0x4578('0x1'));var path=require(_0x4578('0x2'));var timeout=require(_0x4578('0x3'));var express=require(_0x4578('0x4'));var router=express[_0x4578('0x5')]();var fs_extra=require(_0x4578('0x6'));var auth=require(_0x4578('0x7'));var interaction=require(_0x4578('0x8'));var config=require(_0x4578('0x9'));var controller=require(_0x4578('0xa'));router[_0x4578('0xb')]('/',auth['isAuthenticated'](),controller[_0x4578('0xc')]);router[_0x4578('0xb')](_0x4578('0xd'),auth[_0x4578('0xe')](),controller[_0x4578('0xf')]);router['get'](_0x4578('0x10'),auth[_0x4578('0xe')](),controller[_0x4578('0x11')]);router[_0x4578('0x12')]('/',auth[_0x4578('0xe')](),controller[_0x4578('0x13')]);router[_0x4578('0x12')](_0x4578('0x10'),auth[_0x4578('0xe')](),controller[_0x4578('0x14')]);router[_0x4578('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x4578('0x16')]);router[_0x4578('0x17')](_0x4578('0xd'),auth[_0x4578('0xe')](),controller[_0x4578('0x18')]);router[_0x4578('0x17')](_0x4578('0x19'),auth[_0x4578('0xe')](),controller[_0x4578('0x1a')]);module[_0x4578('0x1b')]=router;
\ No newline at end of file
+var _0xb2be=['../../components/interaction/service','get','isAuthenticated','index','show','/:id/sounds','getSounds','post','create','/:id','update','delete','/:id/sounds/:id2','removeSound','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x5ec62e,_0x4488e0){var _0x8bb353=function(_0x1d33fc){while(--_0x1d33fc){_0x5ec62e['push'](_0x5ec62e['shift']());}};_0x8bb353(++_0x4488e0);}(_0xb2be,0x1b1));var _0xeb2b=function(_0x432169,_0x7ffbe9){_0x432169=_0x432169-0x0;var _0x28e745=_0xb2be[_0x432169];return _0x28e745;};'use strict';var multer=require(_0xeb2b('0x0'));var util=require(_0xeb2b('0x1'));var path=require('path');var timeout=require(_0xeb2b('0x2'));var express=require(_0xeb2b('0x3'));var router=express[_0xeb2b('0x4')]();var fs_extra=require(_0xeb2b('0x5'));var auth=require(_0xeb2b('0x6'));var interaction=require(_0xeb2b('0x7'));var config=require('../../config/environment');var controller=require('./voiceMusicOnHold.controller');router[_0xeb2b('0x8')]('/',auth[_0xeb2b('0x9')](),controller[_0xeb2b('0xa')]);router[_0xeb2b('0x8')]('/:id',auth[_0xeb2b('0x9')](),controller[_0xeb2b('0xb')]);router[_0xeb2b('0x8')](_0xeb2b('0xc'),auth['isAuthenticated'](),controller[_0xeb2b('0xd')]);router[_0xeb2b('0xe')]('/',auth[_0xeb2b('0x9')](),controller[_0xeb2b('0xf')]);router[_0xeb2b('0xe')](_0xeb2b('0xc'),auth['isAuthenticated'](),controller['addSound']);router['put'](_0xeb2b('0x10'),auth[_0xeb2b('0x9')](),controller[_0xeb2b('0x11')]);router[_0xeb2b('0x12')](_0xeb2b('0x10'),auth[_0xeb2b('0x9')](),controller['destroy']);router['delete'](_0xeb2b('0x13'),auth[_0xeb2b('0x9')](),controller[_0xeb2b('0x14')]);module[_0xeb2b('0x15')]=router;
\ No newline at end of file
index 7061e28..cf1cce4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13b9=['STRING','name','ENUM','custom','mp3nb','quietmp3nb','quietmp3','mp3','TIMESTAMP','BOOLEAN','exports'];(function(_0x289874,_0x1b6752){var _0x2f8bbb=function(_0x23ee80){while(--_0x23ee80){_0x289874['push'](_0x289874['shift']());}};_0x2f8bbb(++_0x1b6752);}(_0x13b9,0x11d));var _0x913b=function(_0x260f4f,_0x4bcd91){_0x260f4f=_0x260f4f-0x0;var _0x284b31=_0x13b9[_0x260f4f];return _0x284b31;};'use strict';var Sequelize=require('sequelize');module[_0x913b('0x0')]={'name':{'type':Sequelize[_0x913b('0x1')],'allowNull':![],'unique':_0x913b('0x2')},'mode':{'type':Sequelize[_0x913b('0x3')](_0x913b('0x4'),'files',_0x913b('0x5'),_0x913b('0x6'),_0x913b('0x7'),_0x913b('0x8')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0x913b('0x1')],'allowNull':!![]},'application':{'type':Sequelize[_0x913b('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0x913b('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x913b('0x1')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x913b('0x1')],'allowNull':!![]},'stamp':{'type':_0x913b('0x9')},'defaultEntry':{'type':Sequelize[_0x913b('0xa')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcdf9=['ENUM','files','mp3nb','quietmp3nb','quietmp3','mp3','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name'];(function(_0x72728c,_0x3cb2fd){var _0x21c64b=function(_0x346c1a){while(--_0x346c1a){_0x72728c['push'](_0x72728c['shift']());}};_0x21c64b(++_0x3cb2fd);}(_0xcdf9,0x98));var _0x9cdf=function(_0x2136d5,_0x4b0479){_0x2136d5=_0x2136d5-0x0;var _0x3bee2e=_0xcdf9[_0x2136d5];return _0x3bee2e;};'use strict';var Sequelize=require(_0x9cdf('0x0'));module[_0x9cdf('0x1')]={'name':{'type':Sequelize[_0x9cdf('0x2')],'allowNull':![],'unique':_0x9cdf('0x3')},'mode':{'type':Sequelize[_0x9cdf('0x4')]('custom',_0x9cdf('0x5'),_0x9cdf('0x6'),_0x9cdf('0x7'),_0x9cdf('0x8'),_0x9cdf('0x9')),'allowNull':!![],'defaultValue':_0x9cdf('0x5')},'directory':{'type':Sequelize[_0x9cdf('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x9cdf('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x9cdf('0x2')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x9cdf('0xa')},'format':{'type':Sequelize[_0x9cdf('0x2')],'allowNull':!![]},'stamp':{'type':_0x9cdf('0xb')},'defaultEntry':{'type':Sequelize[_0x9cdf('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index ff1d9f1..0822ba6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b5d=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','error','name','send','index','VoiceMusicOnHold','fieldName','type','key','map','query','filters','model','attributes','intersection','fields','length','sort','where','filter','options','includeAll','rows','show','keys','include','merge','find','catch','body','transaction','mode','files','join','server/files/moh','create','mkdirSync','directory','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','sequelize','readdirSync','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','root','symlinkSync','removeSound','id2','unlinkSync','order','getSounds','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x4ff521,_0x1b9e9e){var _0x3daf6e=function(_0x5c6dee){while(--_0x5c6dee){_0x4ff521['push'](_0x4ff521['shift']());}};_0x3daf6e(++_0x1b9e9e);}(_0x6b5d,0x141));var _0xd6b5=function(_0x2144be,_0x1f5938){_0x2144be=_0x2144be-0x0;var _0x3b7587=_0x6b5d[_0x2144be];return _0x3b7587;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd6b5('0x0'));var zipdir=require(_0xd6b5('0x1'));var jsonpatch=require(_0xd6b5('0x2'));var rp=require(_0xd6b5('0x3'));var moment=require(_0xd6b5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xd6b5('0x5'));var sox=require(_0xd6b5('0x6'));var csv=require(_0xd6b5('0x7'));var ejs=require(_0xd6b5('0x8'));var fs=require('fs');var fs_extra=require(_0xd6b5('0x9'));var _=require(_0xd6b5('0xa'));var squel=require(_0xd6b5('0xb'));var crypto=require('crypto');var jsforce=require(_0xd6b5('0xc'));var deskjs=require(_0xd6b5('0xd'));var toCsv=require(_0xd6b5('0x7'));var querystring=require(_0xd6b5('0xe'));var Papa=require(_0xd6b5('0xf'));var Redis=require(_0xd6b5('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd6b5('0x11'));var as=require(_0xd6b5('0x12'));var hardwareService=require(_0xd6b5('0x13'));var logger=require(_0xd6b5('0x14'))(_0xd6b5('0x15'));var utils=require(_0xd6b5('0x16'));var config=require(_0xd6b5('0x17'));var licenseUtil=require(_0xd6b5('0x18'));var db=require(_0xd6b5('0x19'))['db'];function respondWithStatusCode(_0x215179,_0x57a700){_0x57a700=_0x57a700||0xcc;return function(_0x169e04){if(_0x169e04){return _0x215179[_0xd6b5('0x1a')](_0x57a700);}return _0x215179[_0xd6b5('0x1b')](_0x57a700)[_0xd6b5('0x1c')]();};}function respondWithResult(_0x4d6025,_0x556c46){_0x556c46=_0x556c46||0xc8;return function(_0x9a12b0){if(_0x9a12b0){return _0x4d6025[_0xd6b5('0x1b')](_0x556c46)[_0xd6b5('0x1d')](_0x9a12b0);}};}function respondWithFilteredResult(_0x4530ca,_0x543aae){return function(_0x2a6062){if(_0x2a6062){var _0x2125ec=typeof _0x543aae[_0xd6b5('0x1e')]===_0xd6b5('0x1f')&&typeof _0x543aae[_0xd6b5('0x20')]===_0xd6b5('0x1f');var _0x6526ae=_0x2a6062[_0xd6b5('0x21')];var _0x277ef4=_0x2125ec?0x0:_0x543aae['offset'];var _0x106479=_0x2125ec?_0x2a6062[_0xd6b5('0x21')]:_0x543aae[_0xd6b5('0x1e')]+_0x543aae[_0xd6b5('0x20')];var _0x24150c;if(_0x106479>=_0x6526ae){_0x106479=_0x6526ae;_0x24150c=0xc8;}else{_0x24150c=0xce;}_0x4530ca['status'](_0x24150c);return _0x4530ca[_0xd6b5('0x22')](_0xd6b5('0x23'),_0x277ef4+'-'+_0x106479+'/'+_0x6526ae)[_0xd6b5('0x1d')](_0x2a6062);}return null;};}function patchUpdates(_0x541d8d){return function(_0x4b5006){try{jsonpatch[_0xd6b5('0x24')](_0x4b5006,_0x541d8d,!![]);}catch(_0x5b8945){return BPromise[_0xd6b5('0x25')](_0x5b8945);}return _0x4b5006[_0xd6b5('0x26')]();};}function saveUpdates(_0x576688,_0x3fecef){return function(_0x372840){if(_0x372840){return _0x372840[_0xd6b5('0x27')](_0x576688)[_0xd6b5('0x28')](function(_0x3f1d36){return _0x3f1d36;});}return null;};}function removeEntity(_0x53ef33,_0x1bb587){return function(_0x41b8b5){if(_0x41b8b5){return _0x41b8b5[_0xd6b5('0x29')]()[_0xd6b5('0x28')](function(){var _0x185960=_0x41b8b5[_0xd6b5('0x2a')]({'plain':!![]});var _0x25c6a8='MusicOnHolds';return db['UserProfileResource'][_0xd6b5('0x29')]({'where':{'type':_0x25c6a8,'resourceId':_0x185960['id']}})[_0xd6b5('0x28')](function(){return _0x41b8b5;});})[_0xd6b5('0x28')](function(){_0x53ef33[_0xd6b5('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x114c62,_0xdec22e){return function(_0xb5f921){if(!_0xb5f921){_0x114c62[_0xd6b5('0x1a')](0x194);}return _0xb5f921;};}function handleError(_0x5d89a2,_0x5e81b2){_0x5e81b2=_0x5e81b2||0x1f4;return function(_0x4fdd08){logger[_0xd6b5('0x2b')](_0x4fdd08['stack']);if(_0x4fdd08[_0xd6b5('0x2c')]){delete _0x4fdd08[_0xd6b5('0x2c')];}_0x5d89a2[_0xd6b5('0x1b')](_0x5e81b2)[_0xd6b5('0x2d')](_0x4fdd08);};}exports[_0xd6b5('0x2e')]=function(_0x40fad0,_0x5a7ecd){var _0x18dcae={},_0x45d07b={},_0x4a3d5d={'count':0x0,'rows':[]};var _0x1fc5e7=_['map'](db[_0xd6b5('0x2f')]['rawAttributes'],function(_0x16cdb8){return{'name':_0x16cdb8[_0xd6b5('0x30')],'type':_0x16cdb8[_0xd6b5('0x31')][_0xd6b5('0x32')]};});_0x45d07b['model']=_[_0xd6b5('0x33')](_0x1fc5e7,'name');_0x45d07b[_0xd6b5('0x34')]=_['keys'](_0x40fad0[_0xd6b5('0x34')]);_0x45d07b[_0xd6b5('0x35')]=_['intersection'](_0x45d07b[_0xd6b5('0x36')],_0x45d07b[_0xd6b5('0x34')]);_0x18dcae[_0xd6b5('0x37')]=_[_0xd6b5('0x38')](_0x45d07b[_0xd6b5('0x36')],qs[_0xd6b5('0x39')](_0x40fad0[_0xd6b5('0x34')]['fields']));_0x18dcae[_0xd6b5('0x37')]=_0x18dcae[_0xd6b5('0x37')][_0xd6b5('0x3a')]?_0x18dcae['attributes']:_0x45d07b[_0xd6b5('0x36')];if(!_0x40fad0[_0xd6b5('0x34')]['hasOwnProperty']('nolimit')){_0x18dcae[_0xd6b5('0x20')]=qs[_0xd6b5('0x20')](_0x40fad0[_0xd6b5('0x34')][_0xd6b5('0x20')]);_0x18dcae[_0xd6b5('0x1e')]=qs[_0xd6b5('0x1e')](_0x40fad0[_0xd6b5('0x34')][_0xd6b5('0x1e')]);}_0x18dcae['order']=qs['sort'](_0x40fad0['query']['sort']);delete _0x40fad0[_0xd6b5('0x34')][_0xd6b5('0x3b')];_0x18dcae[_0xd6b5('0x3c')]=qs['filters'](_['pick'](_0x40fad0[_0xd6b5('0x34')],_0x45d07b['filters']),_0x1fc5e7);if(_0x40fad0['query'][_0xd6b5('0x3d')]){_0x18dcae['where']=_['merge'](_0x18dcae[_0xd6b5('0x3c')],{'$or':_[_0xd6b5('0x33')](_0x1fc5e7,function(_0x450395){if(_0x450395['type']!=='VIRTUAL'){var _0x554385={};_0x554385[_0x450395[_0xd6b5('0x2c')]]={'$like':'%'+_0x40fad0[_0xd6b5('0x34')][_0xd6b5('0x3d')]+'%'};return _0x554385;}})});}_0x18dcae=_['merge']({},_0x18dcae,_0x40fad0[_0xd6b5('0x3e')]);var _0x24305e={'where':_0x18dcae[_0xd6b5('0x3c')]};return db[_0xd6b5('0x2f')][_0xd6b5('0x21')](_0x24305e)[_0xd6b5('0x28')](function(_0x2d87cd){_0x4a3d5d[_0xd6b5('0x21')]=_0x2d87cd;if(_0x40fad0['query'][_0xd6b5('0x3f')]){_0x18dcae['include']=[{'all':!![]}];}return db[_0xd6b5('0x2f')]['findAll'](_0x18dcae);})[_0xd6b5('0x28')](function(_0x14445e){_0x4a3d5d[_0xd6b5('0x40')]=_0x14445e;return _0x4a3d5d;})['then'](respondWithFilteredResult(_0x5a7ecd,_0x18dcae))['catch'](handleError(_0x5a7ecd,null));};exports[_0xd6b5('0x41')]=function(_0x111097,_0x19db51){var _0xdb6d6f={'raw':![],'where':{'id':_0x111097['params']['id']}},_0x302d0c={};_0x302d0c[_0xd6b5('0x36')]=_[_0xd6b5('0x42')](db[_0xd6b5('0x2f')]['rawAttributes']);_0x302d0c['query']=_[_0xd6b5('0x42')](_0x111097[_0xd6b5('0x34')]);_0x302d0c[_0xd6b5('0x35')]=_[_0xd6b5('0x38')](_0x302d0c['model'],_0x302d0c['query']);_0xdb6d6f[_0xd6b5('0x37')]=_[_0xd6b5('0x38')](_0x302d0c['model'],qs[_0xd6b5('0x39')](_0x111097['query'][_0xd6b5('0x39')]));_0xdb6d6f[_0xd6b5('0x37')]=_0xdb6d6f['attributes'][_0xd6b5('0x3a')]?_0xdb6d6f[_0xd6b5('0x37')]:_0x302d0c[_0xd6b5('0x36')];if(_0x111097[_0xd6b5('0x34')]['includeAll']){_0xdb6d6f[_0xd6b5('0x43')]=[{'all':!![]}];}_0xdb6d6f=_[_0xd6b5('0x44')]({},_0xdb6d6f,_0x111097['options']);return db['VoiceMusicOnHold'][_0xd6b5('0x45')](_0xdb6d6f)[_0xd6b5('0x28')](handleEntityNotFound(_0x19db51,null))[_0xd6b5('0x28')](respondWithResult(_0x19db51,null))[_0xd6b5('0x46')](handleError(_0x19db51,null));};exports[_0xd6b5('0x27')]=function(_0x263e93,_0x207c3c){if(_0x263e93[_0xd6b5('0x47')]['id']){delete _0x263e93[_0xd6b5('0x47')]['id'];}return db['VoiceMusicOnHold'][_0xd6b5('0x45')]({'where':{'id':_0x263e93['params']['id']}})['then'](handleEntityNotFound(_0x207c3c,null))[_0xd6b5('0x28')](saveUpdates(_0x263e93[_0xd6b5('0x47')],null))[_0xd6b5('0x28')](respondWithResult(_0x207c3c,null))[_0xd6b5('0x46')](handleError(_0x207c3c,null));};exports['create']=function(_0x50c095,_0x52ccac,_0x2dfa02){return db['sequelize'][_0xd6b5('0x48')](function(_0x51ab86){if(_0x50c095['body'][_0xd6b5('0x49')]===_0xd6b5('0x4a')){_0x50c095[_0xd6b5('0x47')]['directory']=path[_0xd6b5('0x4b')](config['root'],_0xd6b5('0x4c'),_0x50c095[_0xd6b5('0x47')][_0xd6b5('0x2c')]);}return db[_0xd6b5('0x2f')][_0xd6b5('0x4d')](_0x50c095[_0xd6b5('0x47')],{'transaction':_0x51ab86})[_0xd6b5('0x28')](function(_0x1dc352){if(_0x50c095['body'][_0xd6b5('0x49')]===_0xd6b5('0x4a')){fs[_0xd6b5('0x4e')](_0x1dc352[_0xd6b5('0x4f')],parseInt('0777',0x8));}var _0x39ffd8=_0x50c095[_0xd6b5('0x50')][_0xd6b5('0x2a')]({'plain':!![]});if(!_0x39ffd8)throw new Error(_0xd6b5('0x51'));if(_0x39ffd8[_0xd6b5('0x52')]===_0xd6b5('0x50')){var _0x238f98=_0x1dc352[_0xd6b5('0x2a')]({'plain':!![]});return db[_0xd6b5('0x53')][_0xd6b5('0x45')]({'where':{'name':'MusicOnHolds','userProfileId':_0x39ffd8[_0xd6b5('0x54')]},'raw':!![]})[_0xd6b5('0x28')](function(_0x341bbc){if(_0x341bbc&&_0x341bbc[_0xd6b5('0x55')]===0x0){return db[_0xd6b5('0x56')][_0xd6b5('0x4d')]({'name':_0x238f98[_0xd6b5('0x2c')],'resourceId':_0x238f98['id'],'type':_0x341bbc[_0xd6b5('0x2c')],'sectionId':_0x341bbc['id']},{})[_0xd6b5('0x28')](function(){return _0x1dc352;});}else{return _0x1dc352;}})[_0xd6b5('0x46')](function(_0x501680){logger[_0xd6b5('0x2b')](_0xd6b5('0x57'),_0x501680);});}return _0x1dc352;});})[_0xd6b5('0x28')](respondWithResult(_0x52ccac,0xc9))[_0xd6b5('0x46')](handleError(_0x52ccac,null));};exports[_0xd6b5('0x29')]=function(_0x4632cd,_0x5d3fdc,_0x55f02a){var _0x167d7f;return db[_0xd6b5('0x2f')][_0xd6b5('0x45')]({'where':{'id':_0x4632cd[_0xd6b5('0x58')]['id']}})[_0xd6b5('0x28')](function(_0x27c8aa){if(_0x27c8aa){return db[_0xd6b5('0x59')][_0xd6b5('0x48')](function(_0x391b25){return _0x27c8aa[_0xd6b5('0x29')]({'transaction':_0x391b25,'raw':!![]})['then'](function(_0x3f0c23){if(_0x3f0c23[_0xd6b5('0x4f')]){fs[_0xd6b5('0x5a')](_0x3f0c23['directory'])[_0xd6b5('0x5b')](function(_0x5e86d3){fs['unlinkSync'](path[_0xd6b5('0x4b')](_0x3f0c23[_0xd6b5('0x4f')],_0x5e86d3));});fs[_0xd6b5('0x5c')](_0x3f0c23[_0xd6b5('0x4f')]);}return _0x3f0c23;});})[_0xd6b5('0x46')](function(_0x4158da){throw new db[(_0xd6b5('0x5d'))][(_0xd6b5('0x5e'))](_0x4158da[_0xd6b5('0x5f')]);});}})[_0xd6b5('0x28')](handleEntityNotFound(_0x5d3fdc,null))[_0xd6b5('0x28')](removeEntity(_0x5d3fdc,null))['catch'](handleError(_0x5d3fdc,null));};exports[_0xd6b5('0x60')]=function(_0x39c4a7,_0x296788,_0x2c963c){return db[_0xd6b5('0x59')][_0xd6b5('0x48')](function(_0x131811){var _0x1dadd9;return db[_0xd6b5('0x2f')]['find']({'where':{'id':_0x39c4a7[_0xd6b5('0x58')]['id']}})[_0xd6b5('0x28')](function(_0x441552){if(_0x441552){_0x1dadd9=_0x441552;return _0x441552[_0xd6b5('0x60')](_0x39c4a7[_0xd6b5('0x47')]['id'],{'transaction':_0x131811});}})[_0xd6b5('0x28')](function(_0x27e301){if(_0x27e301){return db[_0xd6b5('0x61')][_0xd6b5('0x62')]({'where':{'id':_0x39c4a7[_0xd6b5('0x47')]['id']},'attributes':['id',_0xd6b5('0x2c'),_0xd6b5('0x63'),_0xd6b5('0x64'),_0xd6b5('0x65')],'raw':!![]});}})[_0xd6b5('0x28')](function(_0x366811){if(_0x366811){var _0x442da1=path[_0xd6b5('0x4b')](config['root'],_0xd6b5('0x66'),util[_0xd6b5('0x67')](_0xd6b5('0x68'),path[_0xd6b5('0x69')](_0x366811['save_name'],path[_0xd6b5('0x6a')](_0x366811[_0xd6b5('0x63')])),_0x366811[_0xd6b5('0x64')]));var _0xab60d2=path[_0xd6b5('0x4b')](config[_0xd6b5('0x6b')],_0xd6b5('0x4c'),_0x1dadd9[_0xd6b5('0x2c')],util['format'](_0xd6b5('0x68'),_0x366811[_0xd6b5('0x2c')],_0x366811['converted_format']));fs[_0xd6b5('0x6c')](_0x442da1,_0xab60d2);return _0x366811;}})[_0xd6b5('0x46')](function(_0x2e773e){throw new db[(_0xd6b5('0x5d'))]['ValidationError'](_0x2e773e[_0xd6b5('0x5f')]);});})[_0xd6b5('0x28')](handleEntityNotFound(_0x296788,null))[_0xd6b5('0x28')](respondWithResult(_0x296788,0xc9))[_0xd6b5('0x46')](handleError(_0x296788,null));};exports[_0xd6b5('0x6d')]=function(_0x594e4d,_0xe8d60f,_0x2af434){return db[_0xd6b5('0x59')][_0xd6b5('0x48')](function(_0x50e8d5){var _0x8439f4;return db['VoiceMusicOnHold'][_0xd6b5('0x62')]({'where':{'id':_0x594e4d[_0xd6b5('0x58')]['id']}})[_0xd6b5('0x28')](handleEntityNotFound(_0xe8d60f,null))[_0xd6b5('0x28')](function(_0x114356){if(_0x114356){_0x8439f4=_0x114356;return _0x114356[_0xd6b5('0x6d')](_0x594e4d['params'][_0xd6b5('0x6e')]);}})[_0xd6b5('0x28')](function(_0x2fd0c2){if(_0x2fd0c2){return db['Sound'][_0xd6b5('0x62')]({'where':{'id':_0x594e4d['params'][_0xd6b5('0x6e')]},'attributes':['id',_0xd6b5('0x2c'),_0xd6b5('0x63'),_0xd6b5('0x64'),'createdAt'],'raw':!![]});}})[_0xd6b5('0x28')](function(_0x167533){if(_0x167533){fs[_0xd6b5('0x6f')](path['join'](_0x8439f4[_0xd6b5('0x4f')],util[_0xd6b5('0x67')](_0xd6b5('0x68'),_0x167533[_0xd6b5('0x2c')],_0x167533[_0xd6b5('0x64')])));return _0x167533;}})[_0xd6b5('0x46')](function(_0x1ac66c){throw new db['Sequelize'][(_0xd6b5('0x5e'))](_0x1ac66c[_0xd6b5('0x5f')]);});})[_0xd6b5('0x28')](handleEntityNotFound(_0xe8d60f,null))[_0xd6b5('0x28')](respondWithStatusCode(_0xe8d60f,0xcc))['catch'](handleError(_0xe8d60f,null));};exports['getSounds']=function(_0x57bb0d,_0x1bb87a,_0x30d83c){var _0x129ca7={};var _0x4e4db8={};var _0x2146ea;var _0x1926ca;return db[_0xd6b5('0x2f')][_0xd6b5('0x62')]({'where':{'id':_0x57bb0d[_0xd6b5('0x58')]['id']}})['then'](handleEntityNotFound(_0x1bb87a,null))['then'](function(_0x46b8f0){if(_0x46b8f0){_0x2146ea=_0x46b8f0;_0x4e4db8[_0xd6b5('0x36')]=_['keys'](db[_0xd6b5('0x61')]['rawAttributes']);_0x4e4db8[_0xd6b5('0x34')]=_[_0xd6b5('0x42')](_0x57bb0d['query']);_0x4e4db8[_0xd6b5('0x35')]=_[_0xd6b5('0x38')](_0x4e4db8[_0xd6b5('0x36')],_0x4e4db8[_0xd6b5('0x34')]);_0x129ca7[_0xd6b5('0x37')]=_[_0xd6b5('0x38')](_0x4e4db8['model'],qs[_0xd6b5('0x39')](_0x57bb0d['query'][_0xd6b5('0x39')]));_0x129ca7[_0xd6b5('0x37')]=_0x129ca7[_0xd6b5('0x37')]['length']?_0x129ca7[_0xd6b5('0x37')]:_0x4e4db8[_0xd6b5('0x36')];_0x129ca7[_0xd6b5('0x70')]=qs[_0xd6b5('0x3b')](_0x57bb0d[_0xd6b5('0x34')][_0xd6b5('0x3b')]);_0x129ca7['where']=qs[_0xd6b5('0x35')](_['pick'](_0x57bb0d[_0xd6b5('0x34')],_0x4e4db8[_0xd6b5('0x35')]));if(_0x57bb0d[_0xd6b5('0x34')]['filter']){_0x129ca7[_0xd6b5('0x3c')]=_[_0xd6b5('0x44')](_0x129ca7['where'],{'$or':_[_0xd6b5('0x33')](_0x129ca7[_0xd6b5('0x37')],function(_0x5e4799){var _0x4f9550={};_0x4f9550[_0x5e4799]={'$like':'%'+_0x57bb0d[_0xd6b5('0x34')]['filter']+'%'};return _0x4f9550;})});}_0x129ca7=_[_0xd6b5('0x44')]({},_0x129ca7,_0x57bb0d[_0xd6b5('0x3e')]);return _0x2146ea[_0xd6b5('0x71')](_0x129ca7);}})['then'](function(_0x2d9a6b){if(_0x2d9a6b){_0x1926ca=_0x2d9a6b[_0xd6b5('0x3a')];if(!_0x57bb0d[_0xd6b5('0x34')][_0xd6b5('0x72')]('nolimit')){_0x129ca7[_0xd6b5('0x20')]=qs[_0xd6b5('0x20')](_0x57bb0d[_0xd6b5('0x34')]['limit']);_0x129ca7[_0xd6b5('0x1e')]=qs['offset'](_0x57bb0d[_0xd6b5('0x34')][_0xd6b5('0x1e')]);}return _0x2146ea[_0xd6b5('0x71')](_0x129ca7);}})[_0xd6b5('0x28')](function(_0x4c61f4){if(_0x4c61f4){return _0x4c61f4?{'count':_0x1926ca,'rows':_0x4c61f4}:null;}})[_0xd6b5('0x28')](respondWithResult(_0x1bb87a,null))['catch'](handleError(_0x1bb87a,null));};
\ No newline at end of file
+var _0xd021=['update','then','MusicOnHolds','UserProfileResource','end','sendStatus','error','stack','name','send','index','VoiceMusicOnHold','rawAttributes','type','model','map','keys','filters','query','intersection','fields','attributes','length','hasOwnProperty','order','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','body','params','mode','files','directory','join','root','create','0777','user','get','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','destroy','readdirSync','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','transaction','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','server/files/moh','removeSound','unlinkSync','getSounds','sort','pick','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','undefined','limit','count','offset','set','apply','reject','save'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xd021,0x12d));var _0x1d02=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd021[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x1d02('0x0'));var rimraf=require(_0x1d02('0x1'));var zipdir=require(_0x1d02('0x2'));var jsonpatch=require(_0x1d02('0x3'));var rp=require('request-promise');var moment=require(_0x1d02('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1d02('0x5'));var path=require(_0x1d02('0x6'));var sox=require(_0x1d02('0x7'));var csv=require(_0x1d02('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1d02('0x9'));var _=require('lodash');var squel=require(_0x1d02('0xa'));var crypto=require('crypto');var jsforce=require(_0x1d02('0xb'));var deskjs=require(_0x1d02('0xc'));var toCsv=require(_0x1d02('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1d02('0xd'));var authService=require(_0x1d02('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x1d02('0xf'));var hardwareService=require(_0x1d02('0x10'));var logger=require(_0x1d02('0x11'))(_0x1d02('0x12'));var utils=require(_0x1d02('0x13'));var config=require(_0x1d02('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x1d02('0x15'))['db'];function respondWithStatusCode(_0x531c6d,_0x30630f){_0x30630f=_0x30630f||0xcc;return function(_0x3e1254){if(_0x3e1254){return _0x531c6d['sendStatus'](_0x30630f);}return _0x531c6d[_0x1d02('0x16')](_0x30630f)['end']();};}function respondWithResult(_0x331c07,_0x5c659c){_0x5c659c=_0x5c659c||0xc8;return function(_0xd24e1){if(_0xd24e1){return _0x331c07[_0x1d02('0x16')](_0x5c659c)[_0x1d02('0x17')](_0xd24e1);}};}function respondWithFilteredResult(_0xfc8482,_0x2a25cb){return function(_0x26f042){if(_0x26f042){var _0x4e48cd=typeof _0x2a25cb['offset']===_0x1d02('0x18')&&typeof _0x2a25cb[_0x1d02('0x19')]===_0x1d02('0x18');var _0x5bc901=_0x26f042[_0x1d02('0x1a')];var _0x33c117=_0x4e48cd?0x0:_0x2a25cb[_0x1d02('0x1b')];var _0x40eec8=_0x4e48cd?_0x26f042[_0x1d02('0x1a')]:_0x2a25cb['offset']+_0x2a25cb[_0x1d02('0x19')];var _0xf762e7;if(_0x40eec8>=_0x5bc901){_0x40eec8=_0x5bc901;_0xf762e7=0xc8;}else{_0xf762e7=0xce;}_0xfc8482[_0x1d02('0x16')](_0xf762e7);return _0xfc8482[_0x1d02('0x1c')]('Content-Range',_0x33c117+'-'+_0x40eec8+'/'+_0x5bc901)[_0x1d02('0x17')](_0x26f042);}return null;};}function patchUpdates(_0x1daaf0){return function(_0xf75474){try{jsonpatch[_0x1d02('0x1d')](_0xf75474,_0x1daaf0,!![]);}catch(_0x171a17){return BPromise[_0x1d02('0x1e')](_0x171a17);}return _0xf75474[_0x1d02('0x1f')]();};}function saveUpdates(_0x498f10,_0x242a16){return function(_0x454795){if(_0x454795){return _0x454795[_0x1d02('0x20')](_0x498f10)['then'](function(_0x2d566b){return _0x2d566b;});}return null;};}function removeEntity(_0x26a155,_0x221971){return function(_0x4eb96d){if(_0x4eb96d){return _0x4eb96d['destroy']()[_0x1d02('0x21')](function(){var _0x361d06=_0x4eb96d['get']({'plain':!![]});var _0x1b5daa=_0x1d02('0x22');return db[_0x1d02('0x23')]['destroy']({'where':{'type':_0x1b5daa,'resourceId':_0x361d06['id']}})['then'](function(){return _0x4eb96d;});})['then'](function(){_0x26a155[_0x1d02('0x16')](0xcc)[_0x1d02('0x24')]();});}};}function handleEntityNotFound(_0x569824,_0x42f0e0){return function(_0x2cf8c5){if(!_0x2cf8c5){_0x569824[_0x1d02('0x25')](0x194);}return _0x2cf8c5;};}function handleError(_0x42cfbd,_0x494559){_0x494559=_0x494559||0x1f4;return function(_0x485a0d){logger[_0x1d02('0x26')](_0x485a0d[_0x1d02('0x27')]);if(_0x485a0d[_0x1d02('0x28')]){delete _0x485a0d['name'];}_0x42cfbd['status'](_0x494559)[_0x1d02('0x29')](_0x485a0d);};}exports[_0x1d02('0x2a')]=function(_0x212b9c,_0x3aff2d){var _0x52b7e2={},_0x449580={},_0x1b0377={'count':0x0,'rows':[]};var _0x564a8f=_['map'](db[_0x1d02('0x2b')][_0x1d02('0x2c')],function(_0x1f7280){return{'name':_0x1f7280['fieldName'],'type':_0x1f7280[_0x1d02('0x2d')]['key']};});_0x449580[_0x1d02('0x2e')]=_[_0x1d02('0x2f')](_0x564a8f,_0x1d02('0x28'));_0x449580['query']=_[_0x1d02('0x30')](_0x212b9c['query']);_0x449580[_0x1d02('0x31')]=_['intersection'](_0x449580[_0x1d02('0x2e')],_0x449580[_0x1d02('0x32')]);_0x52b7e2['attributes']=_[_0x1d02('0x33')](_0x449580['model'],qs[_0x1d02('0x34')](_0x212b9c['query']['fields']));_0x52b7e2[_0x1d02('0x35')]=_0x52b7e2[_0x1d02('0x35')][_0x1d02('0x36')]?_0x52b7e2[_0x1d02('0x35')]:_0x449580[_0x1d02('0x2e')];if(!_0x212b9c[_0x1d02('0x32')][_0x1d02('0x37')]('nolimit')){_0x52b7e2[_0x1d02('0x19')]=qs[_0x1d02('0x19')](_0x212b9c[_0x1d02('0x32')][_0x1d02('0x19')]);_0x52b7e2[_0x1d02('0x1b')]=qs[_0x1d02('0x1b')](_0x212b9c[_0x1d02('0x32')][_0x1d02('0x1b')]);}_0x52b7e2[_0x1d02('0x38')]=qs['sort'](_0x212b9c[_0x1d02('0x32')]['sort']);delete _0x212b9c[_0x1d02('0x32')]['sort'];_0x52b7e2[_0x1d02('0x39')]=qs[_0x1d02('0x31')](_['pick'](_0x212b9c[_0x1d02('0x32')],_0x449580[_0x1d02('0x31')]),_0x564a8f);if(_0x212b9c[_0x1d02('0x32')][_0x1d02('0x3a')]){_0x52b7e2['where']=_[_0x1d02('0x3b')](_0x52b7e2[_0x1d02('0x39')],{'$or':_[_0x1d02('0x2f')](_0x564a8f,function(_0xac3e01){if(_0xac3e01[_0x1d02('0x2d')]!==_0x1d02('0x3c')){var _0x20123d={};_0x20123d[_0xac3e01[_0x1d02('0x28')]]={'$like':'%'+_0x212b9c[_0x1d02('0x32')][_0x1d02('0x3a')]+'%'};return _0x20123d;}})});}_0x52b7e2=_[_0x1d02('0x3b')]({},_0x52b7e2,_0x212b9c[_0x1d02('0x3d')]);var _0x323605={'where':_0x52b7e2['where']};return db[_0x1d02('0x2b')][_0x1d02('0x1a')](_0x323605)[_0x1d02('0x21')](function(_0x2262c1){_0x1b0377[_0x1d02('0x1a')]=_0x2262c1;if(_0x212b9c['query']['includeAll']){_0x52b7e2[_0x1d02('0x3e')]=[{'all':!![]}];}return db[_0x1d02('0x2b')][_0x1d02('0x3f')](_0x52b7e2);})['then'](function(_0x80cdb1){_0x1b0377[_0x1d02('0x40')]=_0x80cdb1;return _0x1b0377;})['then'](respondWithFilteredResult(_0x3aff2d,_0x52b7e2))[_0x1d02('0x41')](handleError(_0x3aff2d,null));};exports[_0x1d02('0x42')]=function(_0x3d79da,_0x19b122){var _0x3cd5ad={'raw':![],'where':{'id':_0x3d79da['params']['id']}},_0x582ef9={};_0x582ef9['model']=_[_0x1d02('0x30')](db[_0x1d02('0x2b')][_0x1d02('0x2c')]);_0x582ef9['query']=_[_0x1d02('0x30')](_0x3d79da[_0x1d02('0x32')]);_0x582ef9['filters']=_[_0x1d02('0x33')](_0x582ef9['model'],_0x582ef9[_0x1d02('0x32')]);_0x3cd5ad[_0x1d02('0x35')]=_[_0x1d02('0x33')](_0x582ef9[_0x1d02('0x2e')],qs[_0x1d02('0x34')](_0x3d79da[_0x1d02('0x32')][_0x1d02('0x34')]));_0x3cd5ad[_0x1d02('0x35')]=_0x3cd5ad[_0x1d02('0x35')]['length']?_0x3cd5ad['attributes']:_0x582ef9['model'];if(_0x3d79da[_0x1d02('0x32')][_0x1d02('0x43')]){_0x3cd5ad['include']=[{'all':!![]}];}_0x3cd5ad=_[_0x1d02('0x3b')]({},_0x3cd5ad,_0x3d79da['options']);return db[_0x1d02('0x2b')][_0x1d02('0x44')](_0x3cd5ad)[_0x1d02('0x21')](handleEntityNotFound(_0x19b122,null))[_0x1d02('0x21')](respondWithResult(_0x19b122,null))['catch'](handleError(_0x19b122,null));};exports[_0x1d02('0x20')]=function(_0x55e1ed,_0x1a5ea7){if(_0x55e1ed[_0x1d02('0x45')]['id']){delete _0x55e1ed[_0x1d02('0x45')]['id'];}return db[_0x1d02('0x2b')][_0x1d02('0x44')]({'where':{'id':_0x55e1ed[_0x1d02('0x46')]['id']}})[_0x1d02('0x21')](handleEntityNotFound(_0x1a5ea7,null))[_0x1d02('0x21')](saveUpdates(_0x55e1ed[_0x1d02('0x45')],null))[_0x1d02('0x21')](respondWithResult(_0x1a5ea7,null))[_0x1d02('0x41')](handleError(_0x1a5ea7,null));};exports['create']=function(_0x4ae620,_0x4938db,_0x457170){return db['sequelize']['transaction'](function(_0x45b4ac){if(_0x4ae620[_0x1d02('0x45')][_0x1d02('0x47')]===_0x1d02('0x48')){_0x4ae620[_0x1d02('0x45')][_0x1d02('0x49')]=path[_0x1d02('0x4a')](config[_0x1d02('0x4b')],'server/files/moh',_0x4ae620[_0x1d02('0x45')][_0x1d02('0x28')]);}return db['VoiceMusicOnHold'][_0x1d02('0x4c')](_0x4ae620[_0x1d02('0x45')],{'transaction':_0x45b4ac})[_0x1d02('0x21')](function(_0x14986b){if(_0x4ae620[_0x1d02('0x45')][_0x1d02('0x47')]==='files'){fs['mkdirSync'](_0x14986b['directory'],parseInt(_0x1d02('0x4d'),0x8));}var _0x522f8e=_0x4ae620[_0x1d02('0x4e')][_0x1d02('0x4f')]({'plain':!![]});if(!_0x522f8e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x522f8e[_0x1d02('0x50')]===_0x1d02('0x4e')){var _0x4e2d22=_0x14986b['get']({'plain':!![]});return db[_0x1d02('0x51')]['find']({'where':{'name':_0x1d02('0x22'),'userProfileId':_0x522f8e[_0x1d02('0x52')]},'raw':!![]})[_0x1d02('0x21')](function(_0x2e0375){if(_0x2e0375&&_0x2e0375['autoAssociation']===0x0){return db[_0x1d02('0x23')]['create']({'name':_0x4e2d22[_0x1d02('0x28')],'resourceId':_0x4e2d22['id'],'type':_0x2e0375[_0x1d02('0x28')],'sectionId':_0x2e0375['id']},{})[_0x1d02('0x21')](function(){return _0x14986b;});}else{return _0x14986b;}})[_0x1d02('0x41')](function(_0x27dc4e){logger[_0x1d02('0x26')](_0x1d02('0x53'),_0x27dc4e);});}return _0x14986b;});})['then'](respondWithResult(_0x4938db,0xc9))['catch'](handleError(_0x4938db,null));};exports['destroy']=function(_0x273362,_0x40f130,_0x594ee8){var _0x45af8f;return db[_0x1d02('0x2b')][_0x1d02('0x44')]({'where':{'id':_0x273362[_0x1d02('0x46')]['id']}})[_0x1d02('0x21')](function(_0x3e4b27){if(_0x3e4b27){return db[_0x1d02('0x54')]['transaction'](function(_0x4f2375){return _0x3e4b27[_0x1d02('0x55')]({'transaction':_0x4f2375,'raw':!![]})['then'](function(_0x462394){if(_0x462394[_0x1d02('0x49')]){fs[_0x1d02('0x56')](_0x462394[_0x1d02('0x49')])[_0x1d02('0x57')](function(_0x4c11a3){fs['unlinkSync'](path[_0x1d02('0x4a')](_0x462394[_0x1d02('0x49')],_0x4c11a3));});fs[_0x1d02('0x58')](_0x462394[_0x1d02('0x49')]);}return _0x462394;});})[_0x1d02('0x41')](function(_0xdf9efe){throw new db[(_0x1d02('0x59'))][(_0x1d02('0x5a'))](_0xdf9efe[_0x1d02('0x5b')]);});}})[_0x1d02('0x21')](handleEntityNotFound(_0x40f130,null))[_0x1d02('0x21')](removeEntity(_0x40f130,null))[_0x1d02('0x41')](handleError(_0x40f130,null));};exports[_0x1d02('0x5c')]=function(_0x589929,_0x50a544,_0x1f1733){return db[_0x1d02('0x54')][_0x1d02('0x5d')](function(_0x2acc6c){var _0x5988b8;return db[_0x1d02('0x2b')][_0x1d02('0x44')]({'where':{'id':_0x589929[_0x1d02('0x46')]['id']}})[_0x1d02('0x21')](function(_0x38bf60){if(_0x38bf60){_0x5988b8=_0x38bf60;return _0x38bf60[_0x1d02('0x5c')](_0x589929[_0x1d02('0x45')]['id'],{'transaction':_0x2acc6c});}})['then'](function(_0x334f5a){if(_0x334f5a){return db[_0x1d02('0x5e')][_0x1d02('0x5f')]({'where':{'id':_0x589929[_0x1d02('0x45')]['id']},'attributes':['id',_0x1d02('0x28'),_0x1d02('0x60'),_0x1d02('0x61'),_0x1d02('0x62')],'raw':!![]});}})['then'](function(_0x4b5c61){if(_0x4b5c61){var _0xaebffe=path['join'](config[_0x1d02('0x4b')],_0x1d02('0x63'),util[_0x1d02('0x64')](_0x1d02('0x65'),path[_0x1d02('0x66')](_0x4b5c61[_0x1d02('0x60')],path[_0x1d02('0x67')](_0x4b5c61[_0x1d02('0x60')])),_0x4b5c61[_0x1d02('0x61')]));var _0x18609b=path[_0x1d02('0x4a')](config['root'],_0x1d02('0x68'),_0x5988b8[_0x1d02('0x28')],util['format'](_0x1d02('0x65'),_0x4b5c61[_0x1d02('0x28')],_0x4b5c61[_0x1d02('0x61')]));fs['symlinkSync'](_0xaebffe,_0x18609b);return _0x4b5c61;}})[_0x1d02('0x41')](function(_0x49bc5c){throw new db[(_0x1d02('0x59'))][(_0x1d02('0x5a'))](_0x49bc5c[_0x1d02('0x5b')]);});})[_0x1d02('0x21')](handleEntityNotFound(_0x50a544,null))['then'](respondWithResult(_0x50a544,0xc9))[_0x1d02('0x41')](handleError(_0x50a544,null));};exports[_0x1d02('0x69')]=function(_0x2b01bf,_0x5743ca,_0x56a8a5){return db[_0x1d02('0x54')][_0x1d02('0x5d')](function(_0x4cdf74){var _0x9d0776;return db[_0x1d02('0x2b')][_0x1d02('0x5f')]({'where':{'id':_0x2b01bf[_0x1d02('0x46')]['id']}})[_0x1d02('0x21')](handleEntityNotFound(_0x5743ca,null))['then'](function(_0x2712d0){if(_0x2712d0){_0x9d0776=_0x2712d0;return _0x2712d0[_0x1d02('0x69')](_0x2b01bf[_0x1d02('0x46')]['id2']);}})[_0x1d02('0x21')](function(_0x4a0cda){if(_0x4a0cda){return db[_0x1d02('0x5e')][_0x1d02('0x5f')]({'where':{'id':_0x2b01bf[_0x1d02('0x46')]['id2']},'attributes':['id',_0x1d02('0x28'),_0x1d02('0x60'),_0x1d02('0x61'),_0x1d02('0x62')],'raw':!![]});}})[_0x1d02('0x21')](function(_0x4c802b){if(_0x4c802b){fs[_0x1d02('0x6a')](path['join'](_0x9d0776[_0x1d02('0x49')],util[_0x1d02('0x64')](_0x1d02('0x65'),_0x4c802b[_0x1d02('0x28')],_0x4c802b['converted_format'])));return _0x4c802b;}})[_0x1d02('0x41')](function(_0x2aa699){throw new db[(_0x1d02('0x59'))]['ValidationError'](_0x2aa699[_0x1d02('0x5b')]);});})[_0x1d02('0x21')](handleEntityNotFound(_0x5743ca,null))[_0x1d02('0x21')](respondWithStatusCode(_0x5743ca,0xcc))['catch'](handleError(_0x5743ca,null));};exports[_0x1d02('0x6b')]=function(_0x26248b,_0xf6ab9,_0xfef5ef){var _0x4f6b54={};var _0x509e6c={};var _0x1d272c;var _0x3296ac;return db['VoiceMusicOnHold'][_0x1d02('0x5f')]({'where':{'id':_0x26248b[_0x1d02('0x46')]['id']}})[_0x1d02('0x21')](handleEntityNotFound(_0xf6ab9,null))[_0x1d02('0x21')](function(_0x897f38){if(_0x897f38){_0x1d272c=_0x897f38;_0x509e6c[_0x1d02('0x2e')]=_[_0x1d02('0x30')](db[_0x1d02('0x5e')][_0x1d02('0x2c')]);_0x509e6c[_0x1d02('0x32')]=_[_0x1d02('0x30')](_0x26248b[_0x1d02('0x32')]);_0x509e6c['filters']=_[_0x1d02('0x33')](_0x509e6c[_0x1d02('0x2e')],_0x509e6c[_0x1d02('0x32')]);_0x4f6b54[_0x1d02('0x35')]=_[_0x1d02('0x33')](_0x509e6c[_0x1d02('0x2e')],qs['fields'](_0x26248b[_0x1d02('0x32')][_0x1d02('0x34')]));_0x4f6b54['attributes']=_0x4f6b54['attributes']['length']?_0x4f6b54[_0x1d02('0x35')]:_0x509e6c[_0x1d02('0x2e')];_0x4f6b54[_0x1d02('0x38')]=qs['sort'](_0x26248b[_0x1d02('0x32')][_0x1d02('0x6c')]);_0x4f6b54[_0x1d02('0x39')]=qs['filters'](_[_0x1d02('0x6d')](_0x26248b[_0x1d02('0x32')],_0x509e6c[_0x1d02('0x31')]));if(_0x26248b[_0x1d02('0x32')][_0x1d02('0x3a')]){_0x4f6b54[_0x1d02('0x39')]=_[_0x1d02('0x3b')](_0x4f6b54[_0x1d02('0x39')],{'$or':_[_0x1d02('0x2f')](_0x4f6b54[_0x1d02('0x35')],function(_0x5088ff){var _0x5955c8={};_0x5955c8[_0x5088ff]={'$like':'%'+_0x26248b[_0x1d02('0x32')]['filter']+'%'};return _0x5955c8;})});}_0x4f6b54=_['merge']({},_0x4f6b54,_0x26248b[_0x1d02('0x3d')]);return _0x1d272c[_0x1d02('0x6b')](_0x4f6b54);}})[_0x1d02('0x21')](function(_0x28bd6f){if(_0x28bd6f){_0x3296ac=_0x28bd6f[_0x1d02('0x36')];if(!_0x26248b[_0x1d02('0x32')]['hasOwnProperty'](_0x1d02('0x6e'))){_0x4f6b54[_0x1d02('0x19')]=qs['limit'](_0x26248b[_0x1d02('0x32')][_0x1d02('0x19')]);_0x4f6b54[_0x1d02('0x1b')]=qs[_0x1d02('0x1b')](_0x26248b[_0x1d02('0x32')][_0x1d02('0x1b')]);}return _0x1d272c['getSounds'](_0x4f6b54);}})[_0x1d02('0x21')](function(_0x59a48f){if(_0x59a48f){return _0x59a48f?{'count':_0x3296ac,'rows':_0x59a48f}:null;}})['then'](respondWithResult(_0xf6ab9,null))[_0x1d02('0x41')](handleError(_0xf6ab9,null));};
\ No newline at end of file
index 142c727..ec786f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc2f=['request-promise','path','rimraf','../../config/environment','exports','voice_musiconhold','lodash','../../config/logger','moment'];(function(_0x21ae41,_0x4dded5){var _0x1b5b24=function(_0x2e1849){while(--_0x2e1849){_0x21ae41['push'](_0x21ae41['shift']());}};_0x1b5b24(++_0x4dded5);}(_0xcc2f,0x19b));var _0xfcc2=function(_0x48b532,_0x63c219){_0x48b532=_0x48b532-0x0;var _0x15eb99=_0xcc2f[_0x48b532];return _0x15eb99;};'use strict';var _=require(_0xfcc2('0x0'));var util=require('util');var logger=require(_0xfcc2('0x1'))('api');var moment=require(_0xfcc2('0x2'));var BPromise=require('bluebird');var rp=require(_0xfcc2('0x3'));var fs=require('fs');var path=require(_0xfcc2('0x4'));var rimraf=require(_0xfcc2('0x5'));var config=require(_0xfcc2('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xfcc2('0x7')]=function(_0x2baaab,_0x2b8f88){return _0x2baaab['define']('VoiceMusicOnHold',attributes,{'tableName':_0xfcc2('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9509=['exports','define','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x4c7717,_0x520a56){var _0x3cd802=function(_0x3f9dfb){while(--_0x3f9dfb){_0x4c7717['push'](_0x4c7717['shift']());}};_0x3cd802(++_0x520a56);}(_0x9509,0xe3));var _0x9950=function(_0x577932,_0x309e85){_0x577932=_0x577932-0x0;var _0x1e8276=_0x9509[_0x577932];return _0x1e8276;};'use strict';var _=require('lodash');var util=require(_0x9950('0x0'));var logger=require(_0x9950('0x1'))('api');var moment=require(_0x9950('0x2'));var BPromise=require(_0x9950('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9950('0x4'));var rimraf=require(_0x9950('0x5'));var config=require(_0x9950('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0x9950('0x7')]=function(_0xf0e6a0,_0x2caa1a){return _0xf0e6a0[_0x9950('0x8')]('VoiceMusicOnHold',attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d19d44..455ae71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x15dd55,_0x22bcd4){var _0xbdb5e4=function(_0x3ae546){while(--_0x3ae546){_0x15dd55['push'](_0x15dd55['shift']());}};_0xbdb5e4(++_0x22bcd4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x49a6d7,_0x1e86c4){var _0x3232e5=function(_0x345497){while(--_0x345497){_0x49a6d7['push'](_0x49a6d7['shift']());}};_0x3232e5(++_0x1e86c4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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 6bec006..a5a74e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75a2=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','/describe','isAuthenticated','describe','show','getAgents','/:id/teams','getTeams','post','create','/:id/users','put','/:id','update','delete','destroy','removeAgents'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x75a2,0x187));var _0x275a=function(_0x52e07c,_0x57d8f8){_0x52e07c=_0x52e07c-0x0;var _0x27fa83=_0x75a2[_0x52e07c];return _0x27fa83;};'use strict';var multer=require(_0x275a('0x0'));var util=require(_0x275a('0x1'));var path=require(_0x275a('0x2'));var timeout=require('connect-timeout');var express=require(_0x275a('0x3'));var router=express[_0x275a('0x4')]();var fs_extra=require(_0x275a('0x5'));var auth=require(_0x275a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x275a('0x7'));var controller=require('./voicePrefix.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x275a('0x8')](_0x275a('0x9'),auth[_0x275a('0xa')](),controller[_0x275a('0xb')]);router['get']('/:id',auth[_0x275a('0xa')](),controller[_0x275a('0xc')]);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x275a('0xd')]);router[_0x275a('0x8')](_0x275a('0xe'),auth[_0x275a('0xa')](),controller[_0x275a('0xf')]);router[_0x275a('0x10')]('/',auth[_0x275a('0xa')](),controller[_0x275a('0x11')]);router[_0x275a('0x10')](_0x275a('0x12'),auth[_0x275a('0xa')](),controller['addAgents']);router[_0x275a('0x10')](_0x275a('0xe'),auth['isAuthenticated'](),controller['addTeams']);router[_0x275a('0x13')](_0x275a('0x14'),auth[_0x275a('0xa')](),controller[_0x275a('0x15')]);router[_0x275a('0x16')](_0x275a('0x14'),auth[_0x275a('0xa')](),controller[_0x275a('0x17')]);router[_0x275a('0x16')]('/:id/users',auth['isAuthenticated'](),controller[_0x275a('0x18')]);router[_0x275a('0x16')]('/:id/teams',auth[_0x275a('0xa')](),controller['removeTeams']);module[_0x275a('0x19')]=router;
\ No newline at end of file
+var _0xd338=['../../config/environment','isAuthenticated','/describe','describe','get','show','/:id/users','/:id/teams','post','create','addAgents','/:id','update','delete','removeTeams','exports','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1b0a0a,_0xd6f80a){var _0x45da2a=function(_0x1b5960){while(--_0x1b5960){_0x1b0a0a['push'](_0x1b0a0a['shift']());}};_0x45da2a(++_0xd6f80a);}(_0xd338,0x1f4));var _0x8d33=function(_0x2e76a7,_0x23871a){_0x2e76a7=_0x2e76a7-0x0;var _0x454cde=_0xd338[_0x2e76a7];return _0x454cde;};'use strict';var multer=require(_0x8d33('0x0'));var util=require('util');var path=require(_0x8d33('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8d33('0x2')]();var fs_extra=require(_0x8d33('0x3'));var auth=require(_0x8d33('0x4'));var interaction=require(_0x8d33('0x5'));var config=require(_0x8d33('0x6'));var controller=require('./voicePrefix.controller');router['get']('/',auth[_0x8d33('0x7')](),controller['index']);router['get'](_0x8d33('0x8'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x9')]);router[_0x8d33('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x8d33('0xb')]);router[_0x8d33('0xa')](_0x8d33('0xc'),auth[_0x8d33('0x7')](),controller['getAgents']);router[_0x8d33('0xa')](_0x8d33('0xd'),auth[_0x8d33('0x7')](),controller['getTeams']);router[_0x8d33('0xe')]('/',auth[_0x8d33('0x7')](),controller[_0x8d33('0xf')]);router[_0x8d33('0xe')](_0x8d33('0xc'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x10')]);router[_0x8d33('0xe')](_0x8d33('0xd'),auth[_0x8d33('0x7')](),controller['addTeams']);router['put'](_0x8d33('0x11'),auth[_0x8d33('0x7')](),controller[_0x8d33('0x12')]);router[_0x8d33('0x13')](_0x8d33('0x11'),auth[_0x8d33('0x7')](),controller['destroy']);router[_0x8d33('0x13')](_0x8d33('0xc'),auth[_0x8d33('0x7')](),controller['removeAgents']);router['delete'](_0x8d33('0xd'),auth['isAuthenticated'](),controller[_0x8d33('0x14')]);module[_0x8d33('0x15')]=router;
\ No newline at end of file
index 41b49b5..3b4710a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffe5=['name','VIRTUAL','system-','INTEGER','sequelize','exports','STRING'];(function(_0x21f931,_0x598b2d){var _0x3f083c=function(_0x1c7c49){while(--_0x1c7c49){_0x21f931['push'](_0x21f931['shift']());}};_0x3f083c(++_0x598b2d);}(_0xffe5,0xc1));var _0x5ffe=function(_0x29ed3c,_0xf746a5){_0x29ed3c=_0x29ed3c-0x0;var _0x468c43=_0xffe5[_0x29ed3c];return _0x468c43;};'use strict';var Sequelize=require(_0x5ffe('0x0'));module[_0x5ffe('0x1')]={'name':{'type':Sequelize[_0x5ffe('0x2')],'allowNull':![],'unique':_0x5ffe('0x3')},'prefix':{'type':Sequelize[_0x5ffe('0x4')],'get':function(_0x5eec9e){return _0x5ffe('0x5')+this['getDataValue']('name')+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x5ffe('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x5ffe('0x6')]}};
\ No newline at end of file
+var _0x1fcd=['getDataValue','name','INTEGER','sequelize','STRING','system-'];(function(_0x183e20,_0x121692){var _0x4ad7f9=function(_0x303020){while(--_0x303020){_0x183e20['push'](_0x183e20['shift']());}};_0x4ad7f9(++_0x121692);}(_0x1fcd,0x93));var _0xd1fc=function(_0x1a7550,_0x1edace){_0x1a7550=_0x1a7550-0x0;var _0x426e22=_0x1fcd[_0x1a7550];return _0x426e22;};'use strict';var Sequelize=require(_0xd1fc('0x0'));module['exports']={'name':{'type':Sequelize[_0xd1fc('0x1')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x46eb73){return _0xd1fc('0x2')+this[_0xd1fc('0x3')](_0xd1fc('0x4'))+'-';}},'description':{'type':Sequelize[_0xd1fc('0x1')]},'callerIdAll':{'type':Sequelize[_0xd1fc('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0xd1fc('0x5')]}};
\ No newline at end of file
index a91766a..db8e852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aad=['Team','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','removeTeams','isEmpty','eml-format','rimraf','fast-json-patch','moment','bluebird','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','VoicePrefix','includeAll','include','rows','catch','show','length','find','params','describe','create','transaction','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','context','exten','app','type','system','description','Voice\x20Prefix\x20Extension','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtensionId','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','sequelize','addAgents','body','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','User','getTeams','findOne','nolimit','findAll','online','voicePause','interface','flatMap','Agents','addTeams','each','TeamVoicePrefix','forEach'];(function(_0x46361e,_0x243aaf){var _0x14e302=function(_0x9ebecf){while(--_0x9ebecf){_0x46361e['push'](_0x46361e['shift']());}};_0x14e302(++_0x243aaf);}(_0x8aad,0x146));var _0xd8aa=function(_0x4b0648,_0x4387a6){_0x4b0648=_0x4b0648-0x0;var _0x76d493=_0x8aad[_0x4b0648];return _0x76d493;};'use strict';var emlformat=require(_0xd8aa('0x0'));var rimraf=require(_0xd8aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8aa('0x2'));var rp=require('request-promise');var moment=require(_0xd8aa('0x3'));var BPromise=require(_0xd8aa('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8aa('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8aa('0x6'));var fs=require('fs');var fs_extra=require(_0xd8aa('0x7'));var _=require(_0xd8aa('0x8'));var squel=require('squel');var crypto=require(_0xd8aa('0x9'));var jsforce=require(_0xd8aa('0xa'));var deskjs=require(_0xd8aa('0xb'));var toCsv=require(_0xd8aa('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd8aa('0xd'));var authService=require(_0xd8aa('0xe'));var qs=require(_0xd8aa('0xf'));var as=require(_0xd8aa('0x10'));var hardwareService=require(_0xd8aa('0x11'));var logger=require('../../config/logger')(_0xd8aa('0x12'));var utils=require(_0xd8aa('0x13'));var config=require(_0xd8aa('0x14'));var licenseUtil=require(_0xd8aa('0x15'));var db=require(_0xd8aa('0x16'))['db'];config[_0xd8aa('0x17')]=_[_0xd8aa('0x18')](config[_0xd8aa('0x17')],{'host':_0xd8aa('0x19'),'port':0x18eb});var socket=require(_0xd8aa('0x1a'))(new Redis(config['redis']));require('./voicePrefix.socket')[_0xd8aa('0x1b')](socket);function respondWithStatusCode(_0x319ffe,_0x2bbd1e){_0x2bbd1e=_0x2bbd1e||0xcc;return function(_0x47c131){if(_0x47c131){return _0x319ffe[_0xd8aa('0x1c')](_0x2bbd1e);}return _0x319ffe[_0xd8aa('0x1d')](_0x2bbd1e)[_0xd8aa('0x1e')]();};}function respondWithResult(_0x404ed6,_0x47a0e3){_0x47a0e3=_0x47a0e3||0xc8;return function(_0x476930){if(_0x476930){return _0x404ed6[_0xd8aa('0x1d')](_0x47a0e3)['json'](_0x476930);}};}function respondWithFilteredResult(_0x16d5c6,_0x223a34){return function(_0x32e2cd){if(_0x32e2cd){var _0x3a29ca=typeof _0x223a34[_0xd8aa('0x1f')]==='undefined'&&typeof _0x223a34[_0xd8aa('0x20')]===_0xd8aa('0x21');var _0xb156e6=_0x32e2cd[_0xd8aa('0x22')];var _0x56936b=_0x3a29ca?0x0:_0x223a34[_0xd8aa('0x1f')];var _0x3df281=_0x3a29ca?_0x32e2cd[_0xd8aa('0x22')]:_0x223a34[_0xd8aa('0x1f')]+_0x223a34[_0xd8aa('0x20')];var _0x4fe5d8;if(_0x3df281>=_0xb156e6){_0x3df281=_0xb156e6;_0x4fe5d8=0xc8;}else{_0x4fe5d8=0xce;}_0x16d5c6[_0xd8aa('0x1d')](_0x4fe5d8);return _0x16d5c6[_0xd8aa('0x23')](_0xd8aa('0x24'),_0x56936b+'-'+_0x3df281+'/'+_0xb156e6)['json'](_0x32e2cd);}return null;};}function patchUpdates(_0xa7cf85){return function(_0x7a4ce7){try{jsonpatch[_0xd8aa('0x25')](_0x7a4ce7,_0xa7cf85,!![]);}catch(_0x290849){return BPromise[_0xd8aa('0x26')](_0x290849);}return _0x7a4ce7[_0xd8aa('0x27')]();};}function saveUpdates(_0x1f64f8,_0x34d957){return function(_0x375f64){if(_0x375f64){return _0x375f64[_0xd8aa('0x28')](_0x1f64f8)[_0xd8aa('0x29')](function(_0x370d6f){return _0x370d6f;});}return null;};}function removeEntity(_0x26cc66,_0x5f1027){return function(_0x1f066a){if(_0x1f066a){return _0x1f066a[_0xd8aa('0x2a')]()[_0xd8aa('0x29')](function(){var _0x1f6ab2=_0x1f066a[_0xd8aa('0x2b')]({'plain':!![]});var _0x3696fd=_0xd8aa('0x2c');return db[_0xd8aa('0x2d')][_0xd8aa('0x2a')]({'where':{'type':_0x3696fd,'resourceId':_0x1f6ab2['id']}})[_0xd8aa('0x29')](function(){return _0x1f066a;});})['then'](function(){_0x26cc66[_0xd8aa('0x1d')](0xcc)[_0xd8aa('0x1e')]();});}};}function handleEntityNotFound(_0x214393,_0x49a7c8){return function(_0x19a59d){if(!_0x19a59d){_0x214393['sendStatus'](0x194);}return _0x19a59d;};}function handleError(_0x3052c6,_0x441466){_0x441466=_0x441466||0x1f4;return function(_0x37902c){logger[_0xd8aa('0x2e')](_0x37902c[_0xd8aa('0x2f')]);if(_0x37902c[_0xd8aa('0x30')]){delete _0x37902c[_0xd8aa('0x30')];}_0x3052c6[_0xd8aa('0x1d')](_0x441466)['send'](_0x37902c);};}exports[_0xd8aa('0x31')]=function(_0x1c6fe6,_0x11071f){var _0x2d615a={},_0x1b475a={},_0x3b8476={'count':0x0,'rows':[]};var _0x271230=_[_0xd8aa('0x32')](db['VoicePrefix'][_0xd8aa('0x33')],function(_0x172673){return{'name':_0x172673[_0xd8aa('0x34')],'type':_0x172673['type'][_0xd8aa('0x35')]};});_0x1b475a[_0xd8aa('0x36')]=_[_0xd8aa('0x32')](_0x271230,_0xd8aa('0x30'));_0x1b475a[_0xd8aa('0x37')]=_[_0xd8aa('0x38')](_0x1c6fe6[_0xd8aa('0x37')]);_0x1b475a[_0xd8aa('0x39')]=_[_0xd8aa('0x3a')](_0x1b475a['model'],_0x1b475a[_0xd8aa('0x37')]);_0x2d615a[_0xd8aa('0x3b')]=_[_0xd8aa('0x3a')](_0x1b475a[_0xd8aa('0x36')],qs[_0xd8aa('0x3c')](_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x3c')]));_0x2d615a[_0xd8aa('0x3b')]=_0x2d615a[_0xd8aa('0x3b')]['length']?_0x2d615a[_0xd8aa('0x3b')]:_0x1b475a['model'];if(!_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x3d')]('nolimit')){_0x2d615a[_0xd8aa('0x20')]=qs[_0xd8aa('0x20')](_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x20')]);_0x2d615a[_0xd8aa('0x1f')]=qs['offset'](_0x1c6fe6['query'][_0xd8aa('0x1f')]);}_0x2d615a['order']=qs[_0xd8aa('0x3e')](_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x3e')]);_0x2d615a[_0xd8aa('0x3f')]=qs[_0xd8aa('0x39')](_[_0xd8aa('0x40')](_0x1c6fe6[_0xd8aa('0x37')],_0x1b475a[_0xd8aa('0x39')]),_0x271230);if(_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x41')]){_0x2d615a[_0xd8aa('0x3f')]=_['merge'](_0x2d615a[_0xd8aa('0x3f')],{'$or':_[_0xd8aa('0x32')](_0x271230,function(_0x1d8d59){if(_0x1d8d59['type']!==_0xd8aa('0x42')){var _0x7e3882={};_0x7e3882[_0x1d8d59[_0xd8aa('0x30')]]={'$like':'%'+_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x41')]+'%'};return _0x7e3882;}})});}_0x2d615a=_[_0xd8aa('0x43')]({},_0x2d615a,_0x1c6fe6[_0xd8aa('0x44')]);var _0x4570b7={'where':_0x2d615a[_0xd8aa('0x3f')]};return db[_0xd8aa('0x45')][_0xd8aa('0x22')](_0x4570b7)[_0xd8aa('0x29')](function(_0x3b26c9){_0x3b8476[_0xd8aa('0x22')]=_0x3b26c9;if(_0x1c6fe6[_0xd8aa('0x37')][_0xd8aa('0x46')]){_0x2d615a[_0xd8aa('0x47')]=[{'all':!![]}];}return db[_0xd8aa('0x45')]['findAll'](_0x2d615a);})[_0xd8aa('0x29')](function(_0x22cce6){_0x3b8476[_0xd8aa('0x48')]=_0x22cce6;return _0x3b8476;})[_0xd8aa('0x29')](respondWithFilteredResult(_0x11071f,_0x2d615a))[_0xd8aa('0x49')](handleError(_0x11071f,null));};exports[_0xd8aa('0x4a')]=function(_0x55af22,_0x253bce){var _0x5b34ec={'raw':![],'where':{'id':_0x55af22['params']['id']}},_0x30e2e0={};_0x30e2e0[_0xd8aa('0x36')]=_['keys'](db['VoicePrefix'][_0xd8aa('0x33')]);_0x30e2e0[_0xd8aa('0x37')]=_[_0xd8aa('0x38')](_0x55af22[_0xd8aa('0x37')]);_0x30e2e0[_0xd8aa('0x39')]=_[_0xd8aa('0x3a')](_0x30e2e0['model'],_0x30e2e0[_0xd8aa('0x37')]);_0x5b34ec[_0xd8aa('0x3b')]=_[_0xd8aa('0x3a')](_0x30e2e0[_0xd8aa('0x36')],qs[_0xd8aa('0x3c')](_0x55af22['query']['fields']));_0x5b34ec['attributes']=_0x5b34ec[_0xd8aa('0x3b')][_0xd8aa('0x4b')]?_0x5b34ec[_0xd8aa('0x3b')]:_0x30e2e0[_0xd8aa('0x36')];if(_0x55af22[_0xd8aa('0x37')][_0xd8aa('0x46')]){_0x5b34ec['include']=[{'all':!![]}];}_0x5b34ec=_[_0xd8aa('0x43')]({},_0x5b34ec,_0x55af22[_0xd8aa('0x44')]);return db['VoicePrefix'][_0xd8aa('0x4c')](_0x5b34ec)[_0xd8aa('0x29')](handleEntityNotFound(_0x253bce,null))[_0xd8aa('0x29')](respondWithResult(_0x253bce,null))['catch'](handleError(_0x253bce,null));};exports[_0xd8aa('0x2a')]=function(_0x625df9,_0x3b93b1){return db[_0xd8aa('0x45')][_0xd8aa('0x4c')]({'where':{'id':_0x625df9[_0xd8aa('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3b93b1,null))['then'](removeEntity(_0x3b93b1,null))[_0xd8aa('0x49')](handleError(_0x3b93b1,null));};exports[_0xd8aa('0x4e')]=function(_0x361d5d,_0x1ea58a){return db[_0xd8aa('0x45')][_0xd8aa('0x4e')]()[_0xd8aa('0x29')](respondWithResult(_0x1ea58a,null))['catch'](handleError(_0x1ea58a,null));};exports[_0xd8aa('0x4f')]=function(_0x4035c2,_0x54e8cc){var _0x281e1c;return db['sequelize'][_0xd8aa('0x50')](function(_0x13f202){return db[_0xd8aa('0x45')]['create'](_0x4035c2['body'],{'transaction':_0x13f202})['then'](function(_0x4b85bc){_0x281e1c=_0x4b85bc[_0xd8aa('0x2b')]({'plain':!![]});return db[_0xd8aa('0x51')][_0xd8aa('0x4c')]({'where':{'id':_0x281e1c['VoiceExtensionId']},'raw':!![]})['then'](function(_0x495a33){return createVoicePrefixExtensions(_0x281e1c,_0x495a33,_0x13f202);});});})[_0xd8aa('0x29')](function(){var _0x40f356=_0x4035c2[_0xd8aa('0x52')][_0xd8aa('0x2b')]({'plain':!![]});if(!_0x40f356)throw new Error(_0xd8aa('0x53'));if(_0x40f356[_0xd8aa('0x54')]===_0xd8aa('0x52')){var _0x101105=_0x281e1c;return db[_0xd8aa('0x55')][_0xd8aa('0x4c')]({'where':{'name':_0xd8aa('0x2c'),'userProfileId':_0x40f356[_0xd8aa('0x56')]},'raw':!![]})[_0xd8aa('0x29')](function(_0x5da09b){if(_0x5da09b&&_0x5da09b['autoAssociation']===0x0){return db[_0xd8aa('0x2d')][_0xd8aa('0x4f')]({'name':_0x101105[_0xd8aa('0x30')],'resourceId':_0x101105['id'],'type':_0x5da09b[_0xd8aa('0x30')],'sectionId':_0x5da09b['id']},{})['then'](function(){return _0x281e1c;});}else{return _0x281e1c;}})[_0xd8aa('0x49')](function(_0x34efde){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x34efde);throw _0x34efde;});}return _0x281e1c;})[_0xd8aa('0x29')](respondWithResult(_0x54e8cc,null))[_0xd8aa('0x49')](handleError(_0x54e8cc,null));};function Extension(_0x157b97,_0x410436,_0x54aaef,_0x541a8b){this[_0xd8aa('0x57')]='from-sip';this[_0xd8aa('0x58')]=_0x157b97;this[_0xd8aa('0x59')]=_0x54aaef;this[_0xd8aa('0x5a')]=_0xd8aa('0x5b');this[_0xd8aa('0x5c')]=_0xd8aa('0x5d');this['priority']=_0x410436;this[_0xd8aa('0x5e')]=_0x541a8b;}function createVoicePrefixExtensions(_0x349cf0,_0x170192,_0x9f4561){return new BPromise(function(_0x17c5ac,_0x170954){var _0x3368ce=new Extension(formatPrefixName(_0x349cf0[_0xd8aa('0x5f')]),0x1,_0xd8aa('0x60'),_0xd8aa('0x61'));_0x3368ce[_0xd8aa('0x62')]=_0x349cf0['id'];return db[_0xd8aa('0x51')][_0xd8aa('0x4f')](_0x3368ce,{'transaction':_0x9f4561})[_0xd8aa('0x29')](function(_0x477454){var _0x406c32=_0x477454[_0xd8aa('0x2b')]({'plain':!![]});var _0x33989e=_[_0xd8aa('0x32')](addVoicePrefixExtensions(_0x349cf0,_0x170192),function(_0x11a715){_0x11a715[_0xd8aa('0x63')]=_0x406c32['id'];_0x11a715['VoicePrefixId']=_0x349cf0['id'];return _0x11a715;});return db['VoiceExtension']['bulkCreate'](_0x33989e,{'transaction':_0x9f4561})[_0xd8aa('0x29')](function(_0x5e3369){if(!_0x5e3369){return _0x170954(_0xd8aa('0x64'));}else{return _0x17c5ac(_0x5e3369);}})[_0xd8aa('0x49')](function(_0x2926e8){return _0x170954(_0x2926e8);});});;});};function addVoicePrefixExtensions(_0x26ed1e,_0x2d6de3){var _0x253dbb=[];var _0xdb3a5f=formatPrefixName(_0x26ed1e[_0xd8aa('0x5f')]);_0x253dbb[_0xd8aa('0x65')](new Extension(_0xdb3a5f,0x2,_0xd8aa('0x66'),_0xd8aa('0x67')+_0x26ed1e['name']));if(_0x26ed1e['callerIdAll']){_0x253dbb[_0xd8aa('0x65')](new Extension(_0xdb3a5f,0x3,'Set',_0xd8aa('0x68')+_0x26ed1e['callerIdAll']));}else{_0x253dbb['push'](new Extension(_0xdb3a5f,0x3,_0xd8aa('0x60'),_0xd8aa('0x69')));}_0x253dbb[_0xd8aa('0x65')](new Extension(_0xdb3a5f,0x4,_0xd8aa('0x6a'),_0x2d6de3['context']+','+_0xd8aa('0x6b')+(0x8+_0x26ed1e[_0xd8aa('0x30')][_0xd8aa('0x4b')])+'}'+','+0x1));return _0x253dbb;}function formatPrefixName(_0x9f73cf){var _0x17bc21='_';for(var _0x24132d=0x0;_0x24132d<_0x9f73cf[_0xd8aa('0x4b')];_0x24132d++){if(_0x9f73cf[_0xd8aa('0x6c')](_0x24132d)=='-'){_0x17bc21+=_0x9f73cf[_0xd8aa('0x6c')](_0x24132d);}else{_0x17bc21+='['+_0x9f73cf[_0xd8aa('0x6c')](_0x24132d)+']';}}_0x17bc21+='.';return _0x17bc21;}exports['update']=function(_0x190fdf,_0x4102a3,_0x19651c){var _0x588880=_0x190fdf['body'];_0x588880[_0xd8aa('0x5f')]=_0xd8aa('0x6d')+_0x588880['name']+'-';return db[_0xd8aa('0x6e')][_0xd8aa('0x50')](function(_0x2def5a){return db[_0xd8aa('0x45')][_0xd8aa('0x28')](_0x588880,{'where':{'id':_0x588880['id']},'transaction':_0x2def5a})[_0xd8aa('0x29')](function(){return db[_0xd8aa('0x51')]['destroy']({'where':{'VoicePrefixId':_0x588880['id']},'transaction':_0x2def5a})[_0xd8aa('0x29')](function(){return db[_0xd8aa('0x51')][_0xd8aa('0x4c')]({'where':{'id':_0x588880[_0xd8aa('0x63')]},'raw':!![]})[_0xd8aa('0x29')](function(_0x3ede08){return createVoicePrefixExtensions(_0x588880,_0x3ede08,_0x2def5a);});});});})[_0xd8aa('0x29')](function(){return db[_0xd8aa('0x45')]['findById'](_0x588880['id']);})[_0xd8aa('0x29')](respondWithResult(_0x4102a3,null))[_0xd8aa('0x49')](handleError(_0x4102a3,null));};exports[_0xd8aa('0x6f')]=function(_0x4c0df7,_0x1f8902,_0x32e01f){return db[_0xd8aa('0x45')][_0xd8aa('0x4c')]({'where':{'id':_0x4c0df7[_0xd8aa('0x4d')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x1f8902,null))[_0xd8aa('0x29')](function(_0x2c6083){if(_0x2c6083){return _0x2c6083[_0xd8aa('0x6f')](_0x4c0df7[_0xd8aa('0x70')][_0xd8aa('0x71')],_[_0xd8aa('0x72')](_0x4c0df7[_0xd8aa('0x70')],[_0xd8aa('0x71'),'id'])||{})[_0xd8aa('0x73')](function(_0x12638b){for(var _0x2e1f93=0x0;_0x2e1f93<_0x4c0df7[_0xd8aa('0x70')]['ids'][_0xd8aa('0x4b')];_0x2e1f93+=0x1){socket[_0xd8aa('0x74')](_0xd8aa('0x75'),{'UserId':Number(_0x4c0df7[_0xd8aa('0x70')]['ids'][_0x2e1f93]),'VoicePrefixId':Number(_0x4c0df7[_0xd8aa('0x4d')]['id'])});}return _0x12638b;});}})[_0xd8aa('0x29')](respondWithResult(_0x1f8902,null))[_0xd8aa('0x49')](handleError(_0x1f8902,null));};exports[_0xd8aa('0x76')]=function(_0x5bb727,_0x247365,_0x549511){return db[_0xd8aa('0x45')][_0xd8aa('0x4c')]({'where':{'id':_0x5bb727[_0xd8aa('0x4d')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x247365,null))[_0xd8aa('0x29')](function(_0xabf19e){if(_0xabf19e){return _0xabf19e[_0xd8aa('0x76')](_0x5bb727['query']['ids'])[_0xd8aa('0x29')](function(){if(_[_0xd8aa('0x77')](_0x5bb727[_0xd8aa('0x37')]['ids'])){for(var _0xc575c8=0x0;_0xc575c8<_0x5bb727[_0xd8aa('0x37')][_0xd8aa('0x71')][_0xd8aa('0x4b')];_0xc575c8+=0x1){socket[_0xd8aa('0x74')]('userVoicePrefix:remove',{'UserId':Number(_0x5bb727['query'][_0xd8aa('0x71')][_0xc575c8]),'VoicePrefixId':Number(_0x5bb727['params']['id'])});}}else{socket[_0xd8aa('0x74')](_0xd8aa('0x78'),{'UserId':Number(_0x5bb727[_0xd8aa('0x37')][_0xd8aa('0x71')]),'VoicePrefixId':Number(_0x5bb727[_0xd8aa('0x4d')]['id'])});}});}})[_0xd8aa('0x29')](respondWithStatusCode(_0x247365,null))['catch'](handleError(_0x247365,null));};exports[_0xd8aa('0x79')]=function(_0x1faa83,_0x3b574f,_0x51fa1a){var _0x501992={};var _0x5c261b={};var _0x5133c2;var _0x38e8d3;return db[_0xd8aa('0x45')]['findOne']({'where':{'id':_0x1faa83['params']['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x3b574f,null))[_0xd8aa('0x29')](function(_0x5f0700){if(_0x5f0700){_0x5133c2=_0x5f0700;_0x5c261b['model']=_[_0xd8aa('0x38')](db[_0xd8aa('0x7a')][_0xd8aa('0x33')]);_0x5c261b['query']=_['keys'](_0x1faa83[_0xd8aa('0x37')]);_0x5c261b[_0xd8aa('0x39')]=_[_0xd8aa('0x3a')](_0x5c261b[_0xd8aa('0x36')],_0x5c261b[_0xd8aa('0x37')]);_0x501992[_0xd8aa('0x3b')]=_[_0xd8aa('0x3a')](_0x5c261b[_0xd8aa('0x36')],qs[_0xd8aa('0x3c')](_0x1faa83[_0xd8aa('0x37')][_0xd8aa('0x3c')]));_0x501992[_0xd8aa('0x3b')]=_0x501992[_0xd8aa('0x3b')][_0xd8aa('0x4b')]?_0x501992[_0xd8aa('0x3b')]:_0x5c261b[_0xd8aa('0x36')];_0x501992['order']=qs[_0xd8aa('0x3e')](_0x1faa83[_0xd8aa('0x37')]['sort']);_0x501992[_0xd8aa('0x3f')]=qs[_0xd8aa('0x39')](_[_0xd8aa('0x40')](_0x1faa83[_0xd8aa('0x37')],_0x5c261b[_0xd8aa('0x39')]));if(_0x1faa83['query'][_0xd8aa('0x41')]){_0x501992[_0xd8aa('0x3f')]=_['merge'](_0x501992[_0xd8aa('0x3f')],{'$or':_[_0xd8aa('0x32')](_0x501992['attributes'],function(_0x20fc1b){var _0x2b95de={};_0x2b95de[_0x20fc1b]={'$like':'%'+_0x1faa83[_0xd8aa('0x37')][_0xd8aa('0x41')]+'%'};return _0x2b95de;})});}_0x501992=_[_0xd8aa('0x43')]({},_0x501992,_0x1faa83[_0xd8aa('0x44')]);return _0x5133c2['getAgents'](_0x501992);}})[_0xd8aa('0x29')](function(_0x580eb2){if(_0x580eb2){_0x38e8d3=_0x580eb2[_0xd8aa('0x4b')];if(!_0x1faa83[_0xd8aa('0x37')][_0xd8aa('0x3d')]('nolimit')){_0x501992[_0xd8aa('0x20')]=qs['limit'](_0x1faa83[_0xd8aa('0x37')][_0xd8aa('0x20')]);_0x501992[_0xd8aa('0x1f')]=qs[_0xd8aa('0x1f')](_0x1faa83['query'][_0xd8aa('0x1f')]);}return _0x5133c2[_0xd8aa('0x79')](_0x501992);}})[_0xd8aa('0x29')](function(_0x1b4a36){if(_0x1b4a36){return _0x1b4a36?{'count':_0x38e8d3,'rows':_0x1b4a36}:null;}})['then'](respondWithResult(_0x3b574f,null))[_0xd8aa('0x49')](handleError(_0x3b574f,null));};exports[_0xd8aa('0x7b')]=function(_0x2d7177,_0x36d479,_0x3cfcb9){var _0x5e4bca={};var _0x5b0831={};var _0x3289cf;var _0x28052a;return db[_0xd8aa('0x45')][_0xd8aa('0x7c')]({'where':{'id':_0x2d7177[_0xd8aa('0x4d')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x36d479,null))[_0xd8aa('0x29')](function(_0x553fa6){if(_0x553fa6){_0x3289cf=_0x553fa6;_0x5b0831[_0xd8aa('0x36')]=_[_0xd8aa('0x38')](db['Team']['rawAttributes']);_0x5b0831[_0xd8aa('0x37')]=_['keys'](_0x2d7177[_0xd8aa('0x37')]);_0x5b0831[_0xd8aa('0x39')]=_[_0xd8aa('0x3a')](_0x5b0831[_0xd8aa('0x36')],_0x5b0831[_0xd8aa('0x37')]);_0x5e4bca[_0xd8aa('0x3b')]=_['intersection'](_0x5b0831['model'],qs['fields'](_0x2d7177[_0xd8aa('0x37')][_0xd8aa('0x3c')]));_0x5e4bca[_0xd8aa('0x3b')]=_0x5e4bca[_0xd8aa('0x3b')]['length']?_0x5e4bca[_0xd8aa('0x3b')]:_0x5b0831[_0xd8aa('0x36')];_0x5e4bca['order']=qs[_0xd8aa('0x3e')](_0x2d7177[_0xd8aa('0x37')][_0xd8aa('0x3e')]);_0x5e4bca[_0xd8aa('0x3f')]=qs[_0xd8aa('0x39')](_[_0xd8aa('0x40')](_0x2d7177[_0xd8aa('0x37')],_0x5b0831['filters']));if(_0x2d7177[_0xd8aa('0x37')]['filter']){_0x5e4bca[_0xd8aa('0x3f')]=_[_0xd8aa('0x43')](_0x5e4bca['where'],{'$or':_[_0xd8aa('0x32')](_0x5e4bca[_0xd8aa('0x3b')],function(_0x182cbd){var _0x422186={};_0x422186[_0x182cbd]={'$like':'%'+_0x2d7177[_0xd8aa('0x37')][_0xd8aa('0x41')]+'%'};return _0x422186;})});}_0x5e4bca=_[_0xd8aa('0x43')]({},_0x5e4bca,_0x2d7177['options']);return _0x3289cf[_0xd8aa('0x7b')](_0x5e4bca);}})[_0xd8aa('0x29')](function(_0x2b4fac){if(_0x2b4fac){_0x28052a=_0x2b4fac[_0xd8aa('0x4b')];if(!_0x2d7177['query'][_0xd8aa('0x3d')](_0xd8aa('0x7d'))){_0x5e4bca['limit']=qs['limit'](_0x2d7177['query']['limit']);_0x5e4bca[_0xd8aa('0x1f')]=qs[_0xd8aa('0x1f')](_0x2d7177[_0xd8aa('0x37')]['offset']);}return _0x3289cf[_0xd8aa('0x7b')](_0x5e4bca);}})['then'](function(_0x76dc90){if(_0x76dc90){return _0x76dc90?{'count':_0x28052a,'rows':_0x76dc90}:null;}})['then'](respondWithResult(_0x36d479,null))['catch'](handleError(_0x36d479,null));};exports['addTeams']=function(_0x933331,_0x4b7947,_0x212a44){var _0x33c91a=_0x933331[_0xd8aa('0x70')][_0xd8aa('0x71')];var _0x161aaa;return db['Team'][_0xd8aa('0x7e')]({'where':{'id':_0x33c91a},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xd8aa('0x30'),_0xd8aa('0x7f'),_0xd8aa('0x80'),_0xd8aa('0x81')],'raw':!![]}]})['then'](function(_0x1b04c2){if(_0x1b04c2){_0x161aaa=_0x1b04c2;var _0x439ab1=_[_0xd8aa('0x82')](_0x1b04c2,function(_0x2a4108){var _0x4bf0a9=_0x2a4108[_0xd8aa('0x2b')]({'plain':!![]});return _0x4bf0a9[_0xd8aa('0x83')];});return db[_0xd8aa('0x45')][_0xd8aa('0x4c')]({'where':{'id':_0x933331[_0xd8aa('0x4d')]['id']}})[_0xd8aa('0x29')](function(_0x3d5219){return db[_0xd8aa('0x6e')][_0xd8aa('0x50')](function(_0x55b814){return _0x3d5219[_0xd8aa('0x84')](_0x33c91a,{'transaction':_0x55b814})['then'](function(){return BPromise[_0xd8aa('0x85')](_0x161aaa,function(_0x4cdf86){return db[_0xd8aa('0x86')]['upsert']({'TeamId':_0x4cdf86['id'],'VoicePrefixId':_0x933331[_0xd8aa('0x4d')]['id']},{'transaction':_0x55b814});});})[_0xd8aa('0x29')](function(){return BPromise[_0xd8aa('0x85')](_0x439ab1,function(_0xa55a54){return db['UserVoicePrefix']['findOrCreate']({'where':{'UserId':_0xa55a54['id'],'VoicePrefixId':_0x933331['params']['id']},'transaction':_0x55b814});});})[_0xd8aa('0x29')](function(){_0x439ab1[_0xd8aa('0x87')](function(_0x889d19){socket[_0xd8aa('0x74')](_0xd8aa('0x75'),{'UserId':_0x889d19['id'],'VoicePrefixId':_0x3d5219['id']});});});});});}})[_0xd8aa('0x29')](respondWithStatusCode(_0x4b7947,null))[_0xd8aa('0x49')](handleError(_0x4b7947,null));};exports['removeTeams']=function(_0x4b88c9,_0x6ac90d,_0x6dc54f){return db[_0xd8aa('0x88')]['findAll']({'where':{'id':_0x4b88c9[_0xd8aa('0x37')][_0xd8aa('0x71')]},'attributes':['id'],'include':[{'model':db[_0xd8aa('0x7a')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xd8aa('0x29')](handleEntityNotFound(_0x6ac90d,null))[_0xd8aa('0x29')](function(_0x76609d){var _0x3d3427=_[_0xd8aa('0x32')](_0x76609d,'id');var _0x38e64d=[];var _0xbec25a=[];var _0x278686=squel[_0xd8aa('0x89')]();_0x278686[_0xd8aa('0x8a')](_0xd8aa('0x8b'))['from']('team_has_voice_prefixes','tq')[_0xd8aa('0x8c')](_0xd8aa('0x8d'),'ut',_0xd8aa('0x8e'))['where']('VoicePrefixId\x20=\x20?',_0x4b88c9[_0xd8aa('0x4d')]['id']);for(var _0x8879c7=0x0;_0x8879c7<_0x76609d[_0xd8aa('0x4b')];_0x8879c7+=0x1){let _0x555672=_0x76609d[_0x8879c7];for(var _0x598eed=0x0;_0x598eed<_0x555672[_0xd8aa('0x83')][_0xd8aa('0x4b')];_0x598eed+=0x1){let _0x533d64=_0x555672[_0xd8aa('0x83')][_0x598eed];var _0x502ea0=_0x278686['clone']();_0x502ea0[_0xd8aa('0x3f')](_0xd8aa('0x8f'),_0x533d64['id']);_0xbec25a['push'](db[_0xd8aa('0x6e')][_0xd8aa('0x37')](_0x502ea0[_0xd8aa('0x90')](),{'type':db[_0xd8aa('0x6e')][_0xd8aa('0x91')][_0xd8aa('0x92')]})['then'](function(_0x2854df){if(_0x2854df[_0xd8aa('0x4b')]===0x1){return _0x533d64['id'];}else{var _0x299fd9=_[_0xd8aa('0x93')](_[_0xd8aa('0x32')](_0x2854df,_0xd8aa('0x94')),function(_0x15a392){return _[_0xd8aa('0x95')](_0x3d3427,_0x15a392);});if(_0x299fd9){return _0x533d64['id'];}}}));}}return BPromise['all'](_0xbec25a)[_0xd8aa('0x29')](function(_0xeced06){_0x38e64d=_(_0x38e64d)[_0xd8aa('0x96')](_0xeced06)[_0xd8aa('0x97')]()['value']();return db[_0xd8aa('0x45')]['find']({'where':{'id':_0x4b88c9['params']['id']}})[_0xd8aa('0x29')](function(_0x1cae55){return db[_0xd8aa('0x6e')][_0xd8aa('0x50')](function(_0x3d5f42){return _0x1cae55[_0xd8aa('0x98')](_0x4b88c9[_0xd8aa('0x37')][_0xd8aa('0x71')],{'transaction':_0x3d5f42})['then'](function(){if(!_[_0xd8aa('0x99')](_0x38e64d)){return _0x1cae55[_0xd8aa('0x76')](_0x38e64d,{'transaction':_0x3d5f42});}})[_0xd8aa('0x29')](function(){_0x38e64d[_0xd8aa('0x87')](function(_0x32998c){socket[_0xd8aa('0x74')](_0xd8aa('0x78'),{'UserId':_0x32998c,'VoicePrefixId':_0x1cae55['id']});});});});});});})[_0xd8aa('0x29')](respondWithStatusCode(_0x6ac90d,null))[_0xd8aa('0x49')](handleError(_0x6ac90d,null));};
\ No newline at end of file
+var _0xd4f4=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','./voicePrefix.socket','register','sendStatus','end','status','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','filters','filter','merge','options','includeAll','include','VoicePrefix','rows','catch','show','keys','find','params','describe','sequelize','create','body','VoiceExtension','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','system','description','priority','prefix','NoOp','Voice\x20Prefix','bulkCreate','push','Set','CDR(prefix)=','callerIdAll','goto','${EXTEN:','length','charAt','system-','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','pick','getTeams','findAll','Agents','online','voicePause','interface','flatMap','transaction','addTeams','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','Team','field','tq.TeamId','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','includes','union','compact','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x39b38f,_0x3d8594){var _0x311e84=function(_0x314368){while(--_0x314368){_0x39b38f['push'](_0x39b38f['shift']());}};_0x311e84(++_0x3d8594);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x26cde2,_0x2951b7){_0x26cde2=_0x26cde2-0x0;var _0x14a95d=_0xd4f4[_0x26cde2];return _0x14a95d;};'use strict';var emlformat=require(_0x4d4f('0x0'));var rimraf=require(_0x4d4f('0x1'));var zipdir=require(_0x4d4f('0x2'));var jsonpatch=require(_0x4d4f('0x3'));var rp=require(_0x4d4f('0x4'));var moment=require(_0x4d4f('0x5'));var BPromise=require(_0x4d4f('0x6'));var Mustache=require(_0x4d4f('0x7'));var util=require(_0x4d4f('0x8'));var path=require(_0x4d4f('0x9'));var sox=require(_0x4d4f('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4d4f('0xb'));var squel=require(_0x4d4f('0xc'));var crypto=require(_0x4d4f('0xd'));var jsforce=require(_0x4d4f('0xe'));var deskjs=require(_0x4d4f('0xf'));var toCsv=require(_0x4d4f('0x10'));var querystring=require(_0x4d4f('0x11'));var Papa=require(_0x4d4f('0x12'));var Redis=require(_0x4d4f('0x13'));var authService=require(_0x4d4f('0x14'));var qs=require(_0x4d4f('0x15'));var as=require(_0x4d4f('0x16'));var hardwareService=require(_0x4d4f('0x17'));var logger=require(_0x4d4f('0x18'))(_0x4d4f('0x19'));var utils=require(_0x4d4f('0x1a'));var config=require(_0x4d4f('0x1b'));var licenseUtil=require(_0x4d4f('0x1c'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x4d4f('0x1d')],{'host':_0x4d4f('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4d4f('0x1d')]));require(_0x4d4f('0x1f'))[_0x4d4f('0x20')](socket);function respondWithStatusCode(_0x59252c,_0x145804){_0x145804=_0x145804||0xcc;return function(_0x2e736b){if(_0x2e736b){return _0x59252c[_0x4d4f('0x21')](_0x145804);}return _0x59252c['status'](_0x145804)[_0x4d4f('0x22')]();};}function respondWithResult(_0x5e4ff5,_0x18a528){_0x18a528=_0x18a528||0xc8;return function(_0x16f8e7){if(_0x16f8e7){return _0x5e4ff5[_0x4d4f('0x23')](_0x18a528)['json'](_0x16f8e7);}};}function respondWithFilteredResult(_0x30b6b1,_0x17a437){return function(_0x51dcf1){if(_0x51dcf1){var _0x5dbbeb=typeof _0x17a437['offset']==='undefined'&&typeof _0x17a437['limit']===_0x4d4f('0x24');var _0x15100a=_0x51dcf1[_0x4d4f('0x25')];var _0x3566a5=_0x5dbbeb?0x0:_0x17a437['offset'];var _0x5b2863=_0x5dbbeb?_0x51dcf1[_0x4d4f('0x25')]:_0x17a437['offset']+_0x17a437[_0x4d4f('0x26')];var _0x1e3e9a;if(_0x5b2863>=_0x15100a){_0x5b2863=_0x15100a;_0x1e3e9a=0xc8;}else{_0x1e3e9a=0xce;}_0x30b6b1[_0x4d4f('0x23')](_0x1e3e9a);return _0x30b6b1[_0x4d4f('0x27')](_0x4d4f('0x28'),_0x3566a5+'-'+_0x5b2863+'/'+_0x15100a)['json'](_0x51dcf1);}return null;};}function patchUpdates(_0x570520){return function(_0x4043f2){try{jsonpatch['apply'](_0x4043f2,_0x570520,!![]);}catch(_0x247077){return BPromise[_0x4d4f('0x29')](_0x247077);}return _0x4043f2[_0x4d4f('0x2a')]();};}function saveUpdates(_0x3f4a55,_0xf3f7a4){return function(_0x497cec){if(_0x497cec){return _0x497cec[_0x4d4f('0x2b')](_0x3f4a55)[_0x4d4f('0x2c')](function(_0x1cf365){return _0x1cf365;});}return null;};}function removeEntity(_0x28443b,_0x5cf9e7){return function(_0x51a7c5){if(_0x51a7c5){return _0x51a7c5[_0x4d4f('0x2d')]()[_0x4d4f('0x2c')](function(){var _0xa2492c=_0x51a7c5[_0x4d4f('0x2e')]({'plain':!![]});var _0x58acbe=_0x4d4f('0x2f');return db[_0x4d4f('0x30')][_0x4d4f('0x2d')]({'where':{'type':_0x58acbe,'resourceId':_0xa2492c['id']}})[_0x4d4f('0x2c')](function(){return _0x51a7c5;});})['then'](function(){_0x28443b[_0x4d4f('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1688bb,_0x333a40){return function(_0x550040){if(!_0x550040){_0x1688bb[_0x4d4f('0x21')](0x194);}return _0x550040;};}function handleError(_0x123383,_0x287a09){_0x287a09=_0x287a09||0x1f4;return function(_0x3d7f14){logger[_0x4d4f('0x31')](_0x3d7f14[_0x4d4f('0x32')]);if(_0x3d7f14['name']){delete _0x3d7f14[_0x4d4f('0x33')];}_0x123383[_0x4d4f('0x23')](_0x287a09)[_0x4d4f('0x34')](_0x3d7f14);};}exports[_0x4d4f('0x35')]=function(_0x104104,_0x4e47e5){var _0x2d6565={},_0x486e33={},_0x35f9e2={'count':0x0,'rows':[]};var _0x537a47=_['map'](db['VoicePrefix'][_0x4d4f('0x36')],function(_0x57fc2b){return{'name':_0x57fc2b[_0x4d4f('0x37')],'type':_0x57fc2b[_0x4d4f('0x38')][_0x4d4f('0x39')]};});_0x486e33['model']=_[_0x4d4f('0x3a')](_0x537a47,_0x4d4f('0x33'));_0x486e33[_0x4d4f('0x3b')]=_['keys'](_0x104104[_0x4d4f('0x3b')]);_0x486e33['filters']=_[_0x4d4f('0x3c')](_0x486e33[_0x4d4f('0x3d')],_0x486e33[_0x4d4f('0x3b')]);_0x2d6565[_0x4d4f('0x3e')]=_[_0x4d4f('0x3c')](_0x486e33[_0x4d4f('0x3d')],qs[_0x4d4f('0x3f')](_0x104104[_0x4d4f('0x3b')]['fields']));_0x2d6565['attributes']=_0x2d6565[_0x4d4f('0x3e')]['length']?_0x2d6565['attributes']:_0x486e33[_0x4d4f('0x3d')];if(!_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x40')](_0x4d4f('0x41'))){_0x2d6565[_0x4d4f('0x26')]=qs['limit'](_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x26')]);_0x2d6565['offset']=qs[_0x4d4f('0x42')](_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x42')]);}_0x2d6565[_0x4d4f('0x43')]=qs[_0x4d4f('0x44')](_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x44')]);_0x2d6565[_0x4d4f('0x45')]=qs[_0x4d4f('0x46')](_['pick'](_0x104104['query'],_0x486e33[_0x4d4f('0x46')]),_0x537a47);if(_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x47')]){_0x2d6565[_0x4d4f('0x45')]=_['merge'](_0x2d6565['where'],{'$or':_[_0x4d4f('0x3a')](_0x537a47,function(_0x3c34bd){if(_0x3c34bd['type']!=='VIRTUAL'){var _0x3591b7={};_0x3591b7[_0x3c34bd[_0x4d4f('0x33')]]={'$like':'%'+_0x104104['query'][_0x4d4f('0x47')]+'%'};return _0x3591b7;}})});}_0x2d6565=_[_0x4d4f('0x48')]({},_0x2d6565,_0x104104[_0x4d4f('0x49')]);var _0x32c6ff={'where':_0x2d6565[_0x4d4f('0x45')]};return db['VoicePrefix'][_0x4d4f('0x25')](_0x32c6ff)['then'](function(_0x45a0c1){_0x35f9e2[_0x4d4f('0x25')]=_0x45a0c1;if(_0x104104['query'][_0x4d4f('0x4a')]){_0x2d6565[_0x4d4f('0x4b')]=[{'all':!![]}];}return db[_0x4d4f('0x4c')]['findAll'](_0x2d6565);})[_0x4d4f('0x2c')](function(_0x48caa2){_0x35f9e2[_0x4d4f('0x4d')]=_0x48caa2;return _0x35f9e2;})['then'](respondWithFilteredResult(_0x4e47e5,_0x2d6565))[_0x4d4f('0x4e')](handleError(_0x4e47e5,null));};exports[_0x4d4f('0x4f')]=function(_0x231134,_0x2939cb){var _0x198c3a={'raw':![],'where':{'id':_0x231134['params']['id']}},_0x4a53e4={};_0x4a53e4[_0x4d4f('0x3d')]=_[_0x4d4f('0x50')](db[_0x4d4f('0x4c')][_0x4d4f('0x36')]);_0x4a53e4['query']=_['keys'](_0x231134['query']);_0x4a53e4[_0x4d4f('0x46')]=_[_0x4d4f('0x3c')](_0x4a53e4[_0x4d4f('0x3d')],_0x4a53e4[_0x4d4f('0x3b')]);_0x198c3a[_0x4d4f('0x3e')]=_[_0x4d4f('0x3c')](_0x4a53e4[_0x4d4f('0x3d')],qs[_0x4d4f('0x3f')](_0x231134[_0x4d4f('0x3b')][_0x4d4f('0x3f')]));_0x198c3a[_0x4d4f('0x3e')]=_0x198c3a[_0x4d4f('0x3e')]['length']?_0x198c3a[_0x4d4f('0x3e')]:_0x4a53e4[_0x4d4f('0x3d')];if(_0x231134['query'][_0x4d4f('0x4a')]){_0x198c3a['include']=[{'all':!![]}];}_0x198c3a=_[_0x4d4f('0x48')]({},_0x198c3a,_0x231134[_0x4d4f('0x49')]);return db['VoicePrefix'][_0x4d4f('0x51')](_0x198c3a)[_0x4d4f('0x2c')](handleEntityNotFound(_0x2939cb,null))[_0x4d4f('0x2c')](respondWithResult(_0x2939cb,null))[_0x4d4f('0x4e')](handleError(_0x2939cb,null));};exports[_0x4d4f('0x2d')]=function(_0x3eae74,_0x11a63e){return db[_0x4d4f('0x4c')][_0x4d4f('0x51')]({'where':{'id':_0x3eae74[_0x4d4f('0x52')]['id']}})[_0x4d4f('0x2c')](handleEntityNotFound(_0x11a63e,null))[_0x4d4f('0x2c')](removeEntity(_0x11a63e,null))['catch'](handleError(_0x11a63e,null));};exports[_0x4d4f('0x53')]=function(_0x539088,_0x59d245){return db['VoicePrefix'][_0x4d4f('0x53')]()[_0x4d4f('0x2c')](respondWithResult(_0x59d245,null))['catch'](handleError(_0x59d245,null));};exports['create']=function(_0x2a3bc4,_0x4c80c4){var _0x5adc7b;return db[_0x4d4f('0x54')]['transaction'](function(_0x17b59e){return db[_0x4d4f('0x4c')][_0x4d4f('0x55')](_0x2a3bc4[_0x4d4f('0x56')],{'transaction':_0x17b59e})['then'](function(_0x224b83){_0x5adc7b=_0x224b83[_0x4d4f('0x2e')]({'plain':!![]});return db[_0x4d4f('0x57')][_0x4d4f('0x51')]({'where':{'id':_0x5adc7b[_0x4d4f('0x58')]},'raw':!![]})['then'](function(_0x10f94e){return createVoicePrefixExtensions(_0x5adc7b,_0x10f94e,_0x17b59e);});});})['then'](function(){var _0x32cba6=_0x2a3bc4['user'][_0x4d4f('0x2e')]({'plain':!![]});if(!_0x32cba6)throw new Error(_0x4d4f('0x59'));if(_0x32cba6['role']===_0x4d4f('0x5a')){var _0x1d8ae6=_0x5adc7b;return db['UserProfileSection'][_0x4d4f('0x51')]({'where':{'name':'VoicePrefixes','userProfileId':_0x32cba6[_0x4d4f('0x5b')]},'raw':!![]})['then'](function(_0x48ad06){if(_0x48ad06&&_0x48ad06[_0x4d4f('0x5c')]===0x0){return db[_0x4d4f('0x30')][_0x4d4f('0x55')]({'name':_0x1d8ae6[_0x4d4f('0x33')],'resourceId':_0x1d8ae6['id'],'type':_0x48ad06[_0x4d4f('0x33')],'sectionId':_0x48ad06['id']},{})['then'](function(){return _0x5adc7b;});}else{return _0x5adc7b;}})['catch'](function(_0xeaccdd){logger['error'](_0x4d4f('0x5d'),_0xeaccdd);throw _0xeaccdd;});}return _0x5adc7b;})[_0x4d4f('0x2c')](respondWithResult(_0x4c80c4,null))[_0x4d4f('0x4e')](handleError(_0x4c80c4,null));};function Extension(_0x4585b5,_0x31aba3,_0x39ae15,_0x585764){this[_0x4d4f('0x5e')]=_0x4d4f('0x5f');this[_0x4d4f('0x60')]=_0x4585b5;this['app']=_0x39ae15;this[_0x4d4f('0x38')]=_0x4d4f('0x61');this[_0x4d4f('0x62')]='Voice\x20Prefix\x20Extension';this[_0x4d4f('0x63')]=_0x31aba3;this['appdata']=_0x585764;}function createVoicePrefixExtensions(_0xcdab8b,_0x2145ca,_0x1fe5ca){return new BPromise(function(_0xe8d3e2,_0x1edb3d){var _0x2e55f5=new Extension(formatPrefixName(_0xcdab8b[_0x4d4f('0x64')]),0x1,_0x4d4f('0x65'),_0x4d4f('0x66'));_0x2e55f5['VoicePrefixId']=_0xcdab8b['id'];return db[_0x4d4f('0x57')][_0x4d4f('0x55')](_0x2e55f5,{'transaction':_0x1fe5ca})['then'](function(_0x1bd4b1){var _0x2a3738=_0x1bd4b1[_0x4d4f('0x2e')]({'plain':!![]});var _0xae8fe=_['map'](addVoicePrefixExtensions(_0xcdab8b,_0x2145ca),function(_0x4013a9){_0x4013a9[_0x4d4f('0x58')]=_0x2a3738['id'];_0x4013a9['VoicePrefixId']=_0xcdab8b['id'];return _0x4013a9;});return db['VoiceExtension'][_0x4d4f('0x67')](_0xae8fe,{'transaction':_0x1fe5ca})[_0x4d4f('0x2c')](function(_0x53b2db){if(!_0x53b2db){return _0x1edb3d('Extensions\x20creation\x20failed');}else{return _0xe8d3e2(_0x53b2db);}})['catch'](function(_0x4752bd){return _0x1edb3d(_0x4752bd);});});;});};function addVoicePrefixExtensions(_0x351fb5,_0x5e0ead){var _0x347bb1=[];var _0xc596ea=formatPrefixName(_0x351fb5[_0x4d4f('0x64')]);_0x347bb1[_0x4d4f('0x68')](new Extension(_0xc596ea,0x2,_0x4d4f('0x69'),_0x4d4f('0x6a')+_0x351fb5[_0x4d4f('0x33')]));if(_0x351fb5[_0x4d4f('0x6b')]){_0x347bb1['push'](new Extension(_0xc596ea,0x3,_0x4d4f('0x69'),'PREFIX-CALLERIDALL='+_0x351fb5[_0x4d4f('0x6b')]));}else{_0x347bb1[_0x4d4f('0x68')](new Extension(_0xc596ea,0x3,_0x4d4f('0x65'),'No\x20callerid\x20available'));}_0x347bb1[_0x4d4f('0x68')](new Extension(_0xc596ea,0x4,_0x4d4f('0x6c'),_0x5e0ead[_0x4d4f('0x5e')]+','+_0x4d4f('0x6d')+(0x8+_0x351fb5['name'][_0x4d4f('0x6e')])+'}'+','+0x1));return _0x347bb1;}function formatPrefixName(_0x4bf7bd){var _0x268b34='_';for(var _0x50d0da=0x0;_0x50d0da<_0x4bf7bd['length'];_0x50d0da++){if(_0x4bf7bd[_0x4d4f('0x6f')](_0x50d0da)=='-'){_0x268b34+=_0x4bf7bd[_0x4d4f('0x6f')](_0x50d0da);}else{_0x268b34+='['+_0x4bf7bd['charAt'](_0x50d0da)+']';}}_0x268b34+='.';return _0x268b34;}exports[_0x4d4f('0x2b')]=function(_0x53a18b,_0x41ffe7,_0x4420f0){var _0x111c01=_0x53a18b[_0x4d4f('0x56')];_0x111c01['prefix']=_0x4d4f('0x70')+_0x111c01[_0x4d4f('0x33')]+'-';return db[_0x4d4f('0x54')]['transaction'](function(_0x781877){return db[_0x4d4f('0x4c')][_0x4d4f('0x2b')](_0x111c01,{'where':{'id':_0x111c01['id']},'transaction':_0x781877})[_0x4d4f('0x2c')](function(){return db[_0x4d4f('0x57')][_0x4d4f('0x2d')]({'where':{'VoicePrefixId':_0x111c01['id']},'transaction':_0x781877})['then'](function(){return db['VoiceExtension'][_0x4d4f('0x51')]({'where':{'id':_0x111c01[_0x4d4f('0x58')]},'raw':!![]})['then'](function(_0x26ed6f){return createVoicePrefixExtensions(_0x111c01,_0x26ed6f,_0x781877);});});});})[_0x4d4f('0x2c')](function(){return db[_0x4d4f('0x4c')][_0x4d4f('0x71')](_0x111c01['id']);})[_0x4d4f('0x2c')](respondWithResult(_0x41ffe7,null))[_0x4d4f('0x4e')](handleError(_0x41ffe7,null));};exports[_0x4d4f('0x72')]=function(_0x1c764b,_0x302cde,_0x44f0c2){return db[_0x4d4f('0x4c')][_0x4d4f('0x51')]({'where':{'id':_0x1c764b[_0x4d4f('0x52')]['id']}})[_0x4d4f('0x2c')](handleEntityNotFound(_0x302cde,null))[_0x4d4f('0x2c')](function(_0x518252){if(_0x518252){return _0x518252[_0x4d4f('0x72')](_0x1c764b[_0x4d4f('0x56')][_0x4d4f('0x73')],_[_0x4d4f('0x74')](_0x1c764b['body'],['ids','id'])||{})[_0x4d4f('0x75')](function(_0x3c8a64){for(var _0x4736db=0x0;_0x4736db<_0x1c764b[_0x4d4f('0x56')][_0x4d4f('0x73')][_0x4d4f('0x6e')];_0x4736db+=0x1){socket[_0x4d4f('0x76')](_0x4d4f('0x77'),{'UserId':Number(_0x1c764b[_0x4d4f('0x56')][_0x4d4f('0x73')][_0x4736db]),'VoicePrefixId':Number(_0x1c764b['params']['id'])});}return _0x3c8a64;});}})[_0x4d4f('0x2c')](respondWithResult(_0x302cde,null))[_0x4d4f('0x4e')](handleError(_0x302cde,null));};exports[_0x4d4f('0x78')]=function(_0x2c8c79,_0x584c53,_0x5240be){return db['VoicePrefix'][_0x4d4f('0x51')]({'where':{'id':_0x2c8c79['params']['id']}})[_0x4d4f('0x2c')](handleEntityNotFound(_0x584c53,null))[_0x4d4f('0x2c')](function(_0xa63721){if(_0xa63721){return _0xa63721[_0x4d4f('0x78')](_0x2c8c79[_0x4d4f('0x3b')][_0x4d4f('0x73')])[_0x4d4f('0x2c')](function(){if(_[_0x4d4f('0x79')](_0x2c8c79['query']['ids'])){for(var _0x42c66c=0x0;_0x42c66c<_0x2c8c79['query'][_0x4d4f('0x73')][_0x4d4f('0x6e')];_0x42c66c+=0x1){socket[_0x4d4f('0x76')]('userVoicePrefix:remove',{'UserId':Number(_0x2c8c79['query']['ids'][_0x42c66c]),'VoicePrefixId':Number(_0x2c8c79[_0x4d4f('0x52')]['id'])});}}else{socket['emit'](_0x4d4f('0x7a'),{'UserId':Number(_0x2c8c79['query'][_0x4d4f('0x73')]),'VoicePrefixId':Number(_0x2c8c79[_0x4d4f('0x52')]['id'])});}});}})[_0x4d4f('0x2c')](respondWithStatusCode(_0x584c53,null))[_0x4d4f('0x4e')](handleError(_0x584c53,null));};exports[_0x4d4f('0x7b')]=function(_0x1670fd,_0x548709,_0x18274e){var _0x3beacf={};var _0x4691b7={};var _0x1f62e0;var _0x328528;return db['VoicePrefix'][_0x4d4f('0x7c')]({'where':{'id':_0x1670fd['params']['id']}})[_0x4d4f('0x2c')](handleEntityNotFound(_0x548709,null))[_0x4d4f('0x2c')](function(_0x2511c8){if(_0x2511c8){_0x1f62e0=_0x2511c8;_0x4691b7[_0x4d4f('0x3d')]=_[_0x4d4f('0x50')](db[_0x4d4f('0x7d')][_0x4d4f('0x36')]);_0x4691b7['query']=_[_0x4d4f('0x50')](_0x1670fd[_0x4d4f('0x3b')]);_0x4691b7[_0x4d4f('0x46')]=_['intersection'](_0x4691b7[_0x4d4f('0x3d')],_0x4691b7['query']);_0x3beacf[_0x4d4f('0x3e')]=_['intersection'](_0x4691b7[_0x4d4f('0x3d')],qs[_0x4d4f('0x3f')](_0x1670fd[_0x4d4f('0x3b')]['fields']));_0x3beacf[_0x4d4f('0x3e')]=_0x3beacf[_0x4d4f('0x3e')][_0x4d4f('0x6e')]?_0x3beacf[_0x4d4f('0x3e')]:_0x4691b7['model'];_0x3beacf[_0x4d4f('0x43')]=qs[_0x4d4f('0x44')](_0x1670fd['query'][_0x4d4f('0x44')]);_0x3beacf[_0x4d4f('0x45')]=qs[_0x4d4f('0x46')](_[_0x4d4f('0x7e')](_0x1670fd[_0x4d4f('0x3b')],_0x4691b7[_0x4d4f('0x46')]));if(_0x1670fd['query'][_0x4d4f('0x47')]){_0x3beacf[_0x4d4f('0x45')]=_['merge'](_0x3beacf[_0x4d4f('0x45')],{'$or':_[_0x4d4f('0x3a')](_0x3beacf[_0x4d4f('0x3e')],function(_0x4686b9){var _0x16d1f7={};_0x16d1f7[_0x4686b9]={'$like':'%'+_0x1670fd[_0x4d4f('0x3b')][_0x4d4f('0x47')]+'%'};return _0x16d1f7;})});}_0x3beacf=_[_0x4d4f('0x48')]({},_0x3beacf,_0x1670fd['options']);return _0x1f62e0[_0x4d4f('0x7b')](_0x3beacf);}})[_0x4d4f('0x2c')](function(_0x4dd3f6){if(_0x4dd3f6){_0x328528=_0x4dd3f6[_0x4d4f('0x6e')];if(!_0x1670fd['query'][_0x4d4f('0x40')]('nolimit')){_0x3beacf[_0x4d4f('0x26')]=qs[_0x4d4f('0x26')](_0x1670fd[_0x4d4f('0x3b')][_0x4d4f('0x26')]);_0x3beacf[_0x4d4f('0x42')]=qs[_0x4d4f('0x42')](_0x1670fd[_0x4d4f('0x3b')][_0x4d4f('0x42')]);}return _0x1f62e0[_0x4d4f('0x7b')](_0x3beacf);}})[_0x4d4f('0x2c')](function(_0x10f882){if(_0x10f882){return _0x10f882?{'count':_0x328528,'rows':_0x10f882}:null;}})[_0x4d4f('0x2c')](respondWithResult(_0x548709,null))['catch'](handleError(_0x548709,null));};exports['getTeams']=function(_0x41c81d,_0x5d6abf,_0x2208d8){var _0x2b096e={};var _0x4e6da6={};var _0x53817f;var _0x10955f;return db[_0x4d4f('0x4c')][_0x4d4f('0x7c')]({'where':{'id':_0x41c81d['params']['id']}})['then'](handleEntityNotFound(_0x5d6abf,null))[_0x4d4f('0x2c')](function(_0x274ff2){if(_0x274ff2){_0x53817f=_0x274ff2;_0x4e6da6[_0x4d4f('0x3d')]=_[_0x4d4f('0x50')](db['Team'][_0x4d4f('0x36')]);_0x4e6da6[_0x4d4f('0x3b')]=_[_0x4d4f('0x50')](_0x41c81d['query']);_0x4e6da6['filters']=_[_0x4d4f('0x3c')](_0x4e6da6[_0x4d4f('0x3d')],_0x4e6da6[_0x4d4f('0x3b')]);_0x2b096e[_0x4d4f('0x3e')]=_[_0x4d4f('0x3c')](_0x4e6da6['model'],qs[_0x4d4f('0x3f')](_0x41c81d[_0x4d4f('0x3b')][_0x4d4f('0x3f')]));_0x2b096e['attributes']=_0x2b096e[_0x4d4f('0x3e')]['length']?_0x2b096e[_0x4d4f('0x3e')]:_0x4e6da6[_0x4d4f('0x3d')];_0x2b096e[_0x4d4f('0x43')]=qs[_0x4d4f('0x44')](_0x41c81d[_0x4d4f('0x3b')]['sort']);_0x2b096e[_0x4d4f('0x45')]=qs[_0x4d4f('0x46')](_[_0x4d4f('0x7e')](_0x41c81d[_0x4d4f('0x3b')],_0x4e6da6['filters']));if(_0x41c81d[_0x4d4f('0x3b')]['filter']){_0x2b096e['where']=_[_0x4d4f('0x48')](_0x2b096e[_0x4d4f('0x45')],{'$or':_['map'](_0x2b096e[_0x4d4f('0x3e')],function(_0x50b0a3){var _0x1177a3={};_0x1177a3[_0x50b0a3]={'$like':'%'+_0x41c81d[_0x4d4f('0x3b')][_0x4d4f('0x47')]+'%'};return _0x1177a3;})});}_0x2b096e=_[_0x4d4f('0x48')]({},_0x2b096e,_0x41c81d[_0x4d4f('0x49')]);return _0x53817f[_0x4d4f('0x7f')](_0x2b096e);}})[_0x4d4f('0x2c')](function(_0x3fe348){if(_0x3fe348){_0x10955f=_0x3fe348['length'];if(!_0x41c81d[_0x4d4f('0x3b')][_0x4d4f('0x40')]('nolimit')){_0x2b096e[_0x4d4f('0x26')]=qs['limit'](_0x41c81d[_0x4d4f('0x3b')][_0x4d4f('0x26')]);_0x2b096e[_0x4d4f('0x42')]=qs['offset'](_0x41c81d['query']['offset']);}return _0x53817f[_0x4d4f('0x7f')](_0x2b096e);}})['then'](function(_0xb5d71b){if(_0xb5d71b){return _0xb5d71b?{'count':_0x10955f,'rows':_0xb5d71b}:null;}})[_0x4d4f('0x2c')](respondWithResult(_0x5d6abf,null))[_0x4d4f('0x4e')](handleError(_0x5d6abf,null));};exports['addTeams']=function(_0x5b6061,_0x230ff0,_0x28ae80){var _0x42be25=_0x5b6061[_0x4d4f('0x56')][_0x4d4f('0x73')];var _0x13279e;return db['Team'][_0x4d4f('0x80')]({'where':{'id':_0x42be25},'attributes':['id'],'include':[{'model':db[_0x4d4f('0x7d')],'as':_0x4d4f('0x81'),'attributes':['id',_0x4d4f('0x33'),_0x4d4f('0x82'),_0x4d4f('0x83'),_0x4d4f('0x84')],'raw':!![]}]})[_0x4d4f('0x2c')](function(_0x1a1e6f){if(_0x1a1e6f){_0x13279e=_0x1a1e6f;var _0x152400=_[_0x4d4f('0x85')](_0x1a1e6f,function(_0x3c6f1b){var _0x25e63c=_0x3c6f1b[_0x4d4f('0x2e')]({'plain':!![]});return _0x25e63c['Agents'];});return db[_0x4d4f('0x4c')][_0x4d4f('0x51')]({'where':{'id':_0x5b6061[_0x4d4f('0x52')]['id']}})[_0x4d4f('0x2c')](function(_0xc01ac4){return db[_0x4d4f('0x54')][_0x4d4f('0x86')](function(_0x472938){return _0xc01ac4[_0x4d4f('0x87')](_0x42be25,{'transaction':_0x472938})['then'](function(){return BPromise[_0x4d4f('0x88')](_0x13279e,function(_0x72d583){return db[_0x4d4f('0x89')][_0x4d4f('0x8a')]({'TeamId':_0x72d583['id'],'VoicePrefixId':_0x5b6061[_0x4d4f('0x52')]['id']},{'transaction':_0x472938});});})[_0x4d4f('0x2c')](function(){return BPromise[_0x4d4f('0x88')](_0x152400,function(_0x28fd35){return db[_0x4d4f('0x8b')][_0x4d4f('0x8c')]({'where':{'UserId':_0x28fd35['id'],'VoicePrefixId':_0x5b6061['params']['id']},'transaction':_0x472938});});})['then'](function(){_0x152400[_0x4d4f('0x8d')](function(_0x8850a4){socket['emit'](_0x4d4f('0x77'),{'UserId':_0x8850a4['id'],'VoicePrefixId':_0xc01ac4['id']});});});});});}})[_0x4d4f('0x2c')](respondWithStatusCode(_0x230ff0,null))[_0x4d4f('0x4e')](handleError(_0x230ff0,null));};exports[_0x4d4f('0x8e')]=function(_0x15028c,_0x1659f6,_0x77dac1){return db[_0x4d4f('0x8f')][_0x4d4f('0x80')]({'where':{'id':_0x15028c[_0x4d4f('0x3b')][_0x4d4f('0x73')]},'attributes':['id'],'include':[{'model':db[_0x4d4f('0x7d')],'as':_0x4d4f('0x81'),'attributes':['id'],'raw':!![]}]})[_0x4d4f('0x2c')](handleEntityNotFound(_0x1659f6,null))['then'](function(_0x342b63){var _0x524ed0=_[_0x4d4f('0x3a')](_0x342b63,'id');var _0x3fd499=[];var _0x17a39f=[];var _0x27b4d6=squel['select']();_0x27b4d6[_0x4d4f('0x90')](_0x4d4f('0x91'))[_0x4d4f('0x92')](_0x4d4f('0x93'),'tq')[_0x4d4f('0x94')](_0x4d4f('0x95'),'ut',_0x4d4f('0x96'))['where'](_0x4d4f('0x97'),_0x15028c[_0x4d4f('0x52')]['id']);for(var _0x2f4bad=0x0;_0x2f4bad<_0x342b63[_0x4d4f('0x6e')];_0x2f4bad+=0x1){let _0x4501b5=_0x342b63[_0x2f4bad];for(var _0x12eda1=0x0;_0x12eda1<_0x4501b5['Agents']['length'];_0x12eda1+=0x1){let _0x11ee76=_0x4501b5['Agents'][_0x12eda1];var _0x2ea6b4=_0x27b4d6[_0x4d4f('0x98')]();_0x2ea6b4['where'](_0x4d4f('0x99'),_0x11ee76['id']);_0x17a39f[_0x4d4f('0x68')](db[_0x4d4f('0x54')][_0x4d4f('0x3b')](_0x2ea6b4[_0x4d4f('0x9a')](),{'type':db[_0x4d4f('0x54')][_0x4d4f('0x9b')]['SELECT']})[_0x4d4f('0x2c')](function(_0x5d05cb){if(_0x5d05cb[_0x4d4f('0x6e')]===0x1){return _0x11ee76['id'];}else{var _0x2d1337=_['every'](_['map'](_0x5d05cb,_0x4d4f('0x9c')),function(_0x17894c){return _[_0x4d4f('0x9d')](_0x524ed0,_0x17894c);});if(_0x2d1337){return _0x11ee76['id'];}}}));}}return BPromise['all'](_0x17a39f)[_0x4d4f('0x2c')](function(_0x118642){_0x3fd499=_(_0x3fd499)[_0x4d4f('0x9e')](_0x118642)[_0x4d4f('0x9f')]()[_0x4d4f('0xa0')]();return db[_0x4d4f('0x4c')][_0x4d4f('0x51')]({'where':{'id':_0x15028c[_0x4d4f('0x52')]['id']}})[_0x4d4f('0x2c')](function(_0x51e70f){return db[_0x4d4f('0x54')][_0x4d4f('0x86')](function(_0x23485f){return _0x51e70f[_0x4d4f('0x8e')](_0x15028c['query'][_0x4d4f('0x73')],{'transaction':_0x23485f})['then'](function(){if(!_['isEmpty'](_0x3fd499)){return _0x51e70f[_0x4d4f('0x78')](_0x3fd499,{'transaction':_0x23485f});}})[_0x4d4f('0x2c')](function(){_0x3fd499[_0x4d4f('0x8d')](function(_0x3de9b3){socket[_0x4d4f('0x76')](_0x4d4f('0x7a'),{'UserId':_0x3de9b3,'VoicePrefixId':_0x51e70f['id']});});});});});});})[_0x4d4f('0x2c')](respondWithStatusCode(_0x1659f6,null))[_0x4d4f('0x4e')](handleError(_0x1659f6,null));};
\ No newline at end of file
index e0ed2c5..3362f6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['setMaxListeners','update','remove','emit','hook','events','../../mysqldb','VoicePrefix'];(function(_0x70c659,_0x450225){var _0x4d6ab3=function(_0x36e0e5){while(--_0x36e0e5){_0x70c659['push'](_0x70c659['shift']());}};_0x4d6ab3(++_0x450225);}(_0xef0f,0xed));var _0xfef0=function(_0x335923,_0x554711){_0x335923=_0x335923-0x0;var _0x53892b=_0xef0f[_0x335923];return _0x53892b;};'use strict';var EventEmitter=require(_0xfef0('0x0'));var VoicePrefix=require(_0xfef0('0x1'))['db'][_0xfef0('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xfef0('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfef0('0x4'),'afterDestroy':_0xfef0('0x5')};function emitEvent(_0x4cf7f8){return function(_0x1406b4,_0x114026,_0x5515c9){VoicePrefixEvents['emit'](_0x4cf7f8+':'+_0x1406b4['id'],_0x1406b4);VoicePrefixEvents[_0xfef0('0x6')](_0x4cf7f8,_0x1406b4);_0x5515c9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0xfef0('0x7')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0xebc6=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','VoicePrefix'];(function(_0x2f7802,_0x29a4a3){var _0x29b223=function(_0x341e3b){while(--_0x341e3b){_0x2f7802['push'](_0x2f7802['shift']());}};_0x29b223(++_0x29a4a3);}(_0xebc6,0x154));var _0x6ebc=function(_0x3dc2f1,_0xcdc605){_0x3dc2f1=_0x3dc2f1-0x0;var _0x5f2730=_0xebc6[_0x3dc2f1];return _0x5f2730;};'use strict';var EventEmitter=require(_0x6ebc('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0x6ebc('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x6ebc('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6ebc('0x3'),'afterDestroy':_0x6ebc('0x4')};function emitEvent(_0x53be83){return function(_0x5a761b,_0x3ad4ed,_0x1d0223){VoicePrefixEvents[_0x6ebc('0x5')](_0x53be83+':'+_0x5a761b['id'],_0x5a761b);VoicePrefixEvents[_0x6ebc('0x5')](_0x53be83,_0x5a761b);_0x1d0223(null);};}for(var e in events){if(events[_0x6ebc('0x6')](e)){var event=events[e];VoicePrefix[_0x6ebc('0x7')](e,emitEvent(event));}}module[_0x6ebc('0x8')]=VoicePrefixEvents;
\ No newline at end of file
index c53198e..5218cc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3806=['api','request-promise','path','rimraf','./voicePrefix.attributes','define','VoicePrefix','voice_prefixes','lodash','util','../../config/logger'];(function(_0x40be46,_0x27b990){var _0x5c9f5b=function(_0x72ca31){while(--_0x72ca31){_0x40be46['push'](_0x40be46['shift']());}};_0x5c9f5b(++_0x27b990);}(_0x3806,0xb8));var _0x6380=function(_0x4cb79f,_0x557fbf){_0x4cb79f=_0x4cb79f-0x0;var _0x48f0e8=_0x3806[_0x4cb79f];return _0x48f0e8;};'use strict';var _=require(_0x6380('0x0'));var util=require(_0x6380('0x1'));var logger=require(_0x6380('0x2'))(_0x6380('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6380('0x4'));var fs=require('fs');var path=require(_0x6380('0x5'));var rimraf=require(_0x6380('0x6'));var config=require('../../config/environment');var attributes=require(_0x6380('0x7'));module['exports']=function(_0x2df09d,_0x4bafb4){return _0x2df09d[_0x6380('0x8')](_0x6380('0x9'),attributes,{'tableName':_0x6380('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf299=['../../config/environment','exports','VoicePrefix','voice_prefixes','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x29225c,_0x27b57d){var _0x431ff0=function(_0x5c84d4){while(--_0x5c84d4){_0x29225c['push'](_0x29225c['shift']());}};_0x431ff0(++_0x27b57d);}(_0xf299,0xd6));var _0x9f29=function(_0x659037,_0x1a3604){_0x659037=_0x659037-0x0;var _0x255cc7=_0xf299[_0x659037];return _0x255cc7;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x9f29('0x0'));var moment=require(_0x9f29('0x1'));var BPromise=require(_0x9f29('0x2'));var rp=require(_0x9f29('0x3'));var fs=require('fs');var path=require(_0x9f29('0x4'));var rimraf=require(_0x9f29('0x5'));var config=require(_0x9f29('0x6'));var attributes=require('./voicePrefix.attributes');module[_0x9f29('0x7')]=function(_0x5f0d06,_0xb2e68f){return _0x5f0d06['define'](_0x9f29('0x8'),attributes,{'tableName':_0x9f29('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d0bd201..f39184e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','./voicePrefix.socket','request','then','VoicePrefix,\x20%s,\x20%s'];(function(_0xb23db,_0xa7125f){var _0x1a1a3e=function(_0xe3384){while(--_0xe3384){_0xb23db['push'](_0xb23db['shift']());}};_0x1a1a3e(++_0xa7125f);}(_0xa46e,0x8a));var _0xea46=function(_0x874cf1,_0x2a4954){_0x874cf1=_0x874cf1-0x0;var _0x233579=_0xa46e[_0x874cf1];return _0x233579;};'use strict';var _=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var moment=require('moment');var BPromise=require(_0xea46('0x2'));var rs=require(_0xea46('0x3'));var fs=require('fs');var Redis=require(_0xea46('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xea46('0x5'));var logger=require('../../config/logger')(_0xea46('0x6'));var config=require('../../config/environment');var jayson=require(_0xea46('0x7'));var client=jayson['client'][_0xea46('0x8')]({'port':0x232a});config[_0xea46('0x9')]=_['defaults'](config[_0xea46('0x9')],{'host':_0xea46('0xa'),'port':0x18eb});var socket=require(_0xea46('0xb'))(new Redis(config[_0xea46('0x9')]));require(_0xea46('0xc'))['register'](socket);function respondWithRpcPromise(_0x520745,_0x5ea533,_0x2c82e){return new BPromise(function(_0x45550a,_0x5ae8f9){return client[_0xea46('0xd')](_0x520745,_0x2c82e)[_0xea46('0xe')](function(_0x4560b1){logger['info'](_0xea46('0xf'),_0x5ea533,_0xea46('0x10'));logger['debug'](_0xea46('0x11'),_0x5ea533,_0xea46('0x10'),JSON['stringify'](_0x4560b1));if(_0x4560b1[_0xea46('0x12')]){if(_0x4560b1['error'][_0xea46('0x13')]===0x1f4){logger[_0xea46('0x12')](_0xea46('0xf'),_0x5ea533,_0x4560b1[_0xea46('0x12')][_0xea46('0x14')]);return _0x5ae8f9(_0x4560b1[_0xea46('0x12')][_0xea46('0x14')]);}logger[_0xea46('0x12')](_0xea46('0xf'),_0x5ea533,_0x4560b1['error'][_0xea46('0x14')]);return _0x45550a(_0x4560b1[_0xea46('0x12')][_0xea46('0x14')]);}else{logger['info']('VoicePrefix,\x20%s,\x20%s',_0x5ea533,_0xea46('0x10'));_0x45550a(_0x4560b1[_0xea46('0x15')]['message']);}})['catch'](function(_0x1932c4){logger[_0xea46('0x12')]('VoicePrefix,\x20%s,\x20%s',_0x5ea533,_0x1932c4);_0x5ae8f9(_0x1932c4);});});}
\ No newline at end of file
+var _0x8411=['../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2dd0a0,_0x4bd847){var _0x7f9dc4=function(_0x5b7f9f){while(--_0x5b7f9f){_0x2dd0a0['push'](_0x2dd0a0['shift']());}};_0x7f9dc4(++_0x4bd847);}(_0x8411,0x118));var _0x1841=function(_0x376706,_0x1a7144){_0x376706=_0x376706-0x0;var _0x3492fc=_0x8411[_0x376706];return _0x3492fc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1841('0x0'));var BPromise=require(_0x1841('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1841('0x2'))['db'];var utils=require(_0x1841('0x3'));var logger=require(_0x1841('0x4'))(_0x1841('0x5'));var config=require(_0x1841('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1841('0x7')]['http']({'port':0x232a});config[_0x1841('0x8')]=_[_0x1841('0x9')](config[_0x1841('0x8')],{'host':_0x1841('0xa'),'port':0x18eb});var socket=require(_0x1841('0xb'))(new Redis(config[_0x1841('0x8')]));require(_0x1841('0xc'))[_0x1841('0xd')](socket);function respondWithRpcPromise(_0x1d967f,_0x4218ae,_0x108644){return new BPromise(function(_0x1ae8b8,_0x1a3293){return client[_0x1841('0xe')](_0x1d967f,_0x108644)[_0x1841('0xf')](function(_0xf4b1b2){logger[_0x1841('0x10')](_0x1841('0x11'),_0x4218ae,_0x1841('0x12'));logger['debug'](_0x1841('0x13'),_0x4218ae,_0x1841('0x12'),JSON[_0x1841('0x14')](_0xf4b1b2));if(_0xf4b1b2['error']){if(_0xf4b1b2['error'][_0x1841('0x15')]===0x1f4){logger[_0x1841('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x4218ae,_0xf4b1b2[_0x1841('0x16')][_0x1841('0x17')]);return _0x1a3293(_0xf4b1b2[_0x1841('0x16')][_0x1841('0x17')]);}logger[_0x1841('0x16')](_0x1841('0x11'),_0x4218ae,_0xf4b1b2['error'][_0x1841('0x17')]);return _0x1ae8b8(_0xf4b1b2[_0x1841('0x16')][_0x1841('0x17')]);}else{logger[_0x1841('0x10')](_0x1841('0x11'),_0x4218ae,_0x1841('0x12'));_0x1ae8b8(_0xf4b1b2[_0x1841('0x18')][_0x1841('0x17')]);}})[_0x1841('0x19')](function(_0x41c7ef){logger[_0x1841('0x16')](_0x1841('0x11'),_0x4218ae,_0x41c7ef);_0x1a3293(_0x41c7ef);});});}
\ No newline at end of file
index 9682835..4c492dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e61=['removeListener','register','length','voicePrefix:','./voicePrefix.events','save','remove','emit'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x4e61,0x8c));var _0x14e6=function(_0x79cd47,_0x16102d){_0x79cd47=_0x79cd47-0x0;var _0x3b9484=_0x4e61[_0x79cd47];return _0x3b9484;};'use strict';var VoicePrefixEvents=require(_0x14e6('0x0'));var events=[_0x14e6('0x1'),_0x14e6('0x2'),'update'];function createListener(_0x53cf7e,_0x1fc8bf){return function(_0x3ff2fb){_0x1fc8bf[_0x14e6('0x3')](_0x53cf7e,_0x3ff2fb);};}function removeListener(_0xdcdb2a,_0x1cef29){return function(){VoicePrefixEvents[_0x14e6('0x4')](_0xdcdb2a,_0x1cef29);};}exports[_0x14e6('0x5')]=function(_0x5ae983){for(var _0x78f960=0x0,_0x9f9c31=events[_0x14e6('0x6')];_0x78f960<_0x9f9c31;_0x78f960++){var _0x91ca48=events[_0x78f960];var _0x34b4eb=createListener(_0x14e6('0x7')+_0x91ca48,_0x5ae983);VoicePrefixEvents['on'](_0x91ca48,_0x34b4eb);}};
\ No newline at end of file
+var _0x8f7d=['./voicePrefix.events','save','update','removeListener','register','length','voicePrefix:'];(function(_0x2eebfa,_0x2b23fd){var _0xdb8044=function(_0x3f11e0){while(--_0x3f11e0){_0x2eebfa['push'](_0x2eebfa['shift']());}};_0xdb8044(++_0x2b23fd);}(_0x8f7d,0xf5));var _0xd8f7=function(_0x4022e8,_0xebb8a3){_0x4022e8=_0x4022e8-0x0;var _0x565f9f=_0x8f7d[_0x4022e8];return _0x565f9f;};'use strict';var VoicePrefixEvents=require(_0xd8f7('0x0'));var events=[_0xd8f7('0x1'),'remove',_0xd8f7('0x2')];function createListener(_0x4a4401,_0x52384d){return function(_0x2600d2){_0x52384d['emit'](_0x4a4401,_0x2600d2);};}function removeListener(_0x9558b6,_0x338be3){return function(){VoicePrefixEvents[_0xd8f7('0x3')](_0x9558b6,_0x338be3);};}exports[_0xd8f7('0x4')]=function(_0x524a2e){for(var _0x4090c9=0x0,_0x2907df=events[_0xd8f7('0x5')];_0x4090c9<_0x2907df;_0x4090c9++){var _0xeaa837=events[_0x4090c9];var _0xa61f07=createListener(_0xd8f7('0x6')+_0xeaa837,_0x524a2e);VoicePrefixEvents['on'](_0xeaa837,_0xa61f07);}};
\ No newline at end of file
index 364a03d..3e32a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5ae80f,_0x48952e){var _0x45ce09=function(_0x1fd0f9){while(--_0x1fd0f9){_0x5ae80f['push'](_0x5ae80f['shift']());}};_0x45ce09(++_0x48952e);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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
+var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x4d9bb2,_0x3db50d){var _0x3179fe=function(_0x5272f3){while(--_0x5272f3){_0x4d9bb2['push'](_0x4d9bb2['shift']());}};_0x3179fe(++_0x3db50d);}(_0xb10b,0x12a));var _0xbb10=function(_0x2aecb2,_0x343312){_0x2aecb2=_0x2aecb2-0x0;var _0x3ebb80=_0xb10b[_0x2aecb2];return _0x3ebb80;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
index 8a5d7fa..6c0f83a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x551c=['rrordered','setDataValue','strategy','rrmemory','getDataValue','type','preview','booked','includes','INTEGER','yes','all','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','power','predictive','progressive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','never','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','outbound','STRING','ringall','leastrecent','fewestcalls','random','linear','wrandom'];(function(_0x50f112,_0xd38e53){var _0x4ecf28=function(_0x62b75){while(--_0x62b75){_0x50f112['push'](_0x50f112['shift']());}};_0x4ecf28(++_0xd38e53);}(_0x551c,0x1b5));var _0xc551=function(_0x441027,_0x2ed1ff){_0x441027=_0x441027-0x0;var _0x541c67=_0x551c[_0x441027];return _0x541c67;};'use strict';var Sequelize=require(_0xc551('0x0'));module[_0xc551('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc551('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x4'),_0xc551('0x5')),'allowNull':![],'defaultValue':_0xc551('0x4')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize[_0xc551('0x6')],'defaultValue':''},'strategy':{'type':Sequelize[_0xc551('0x3')]('rr',_0xc551('0x7'),_0xc551('0x8'),_0xc551('0x9'),_0xc551('0xa'),'rrmemory',_0xc551('0xb'),_0xc551('0xc'),_0xc551('0xd')),'allowNull':![],'defaultValue':_0xc551('0x7'),'set':function(_0x3d8e37){this[_0xc551('0xe')](_0xc551('0xf'),_0x3d8e37?_0x3d8e37:_0xc551('0x10'));},'get':function(){var _0x101920=this[_0xc551('0x11')](_0xc551('0x12'));var _0x36a844=this[_0xc551('0x11')]('dialMethod');var _0x3aa988=this[_0xc551('0x11')]('strategy');if(_0x101920===_0xc551('0x5')){if(_0x36a844===_0xc551('0x13')){return null;}if(_0x36a844===_0xc551('0x14')&&![_0xc551('0x10'),'roundrobin'][_0xc551('0x15')](_0x3aa988)){this[_0xc551('0xe')](_0xc551('0xf'),'rrmemory');}}return _0x3aa988;}},'servicelevel':{'type':Sequelize[_0xc551('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xc551('0x16')](0xb)},'timeout':{'type':Sequelize[_0xc551('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0xc551('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xc551('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0xc551('0x17'),'no'),'defaultValue':_0xc551('0x17')},'autopause':{'type':Sequelize['ENUM'](_0xc551('0x17'),'no',_0xc551('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xc551('0x3')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xc551('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xc551('0x3')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xc551('0x6')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xc551('0x6')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xc551('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no',_0xc551('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xc551('0x6')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0xc551('0x17'),'no')},'announce_position_limit':{'type':Sequelize[_0xc551('0x16')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xc551('0x6')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0xc551('0x6')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xc551('0x6')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xc551('0x6')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xc551('0x6')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xc551('0x6')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xc551('0x6')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xc551('0x6')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0xc551('0x6')]},'queue_less_than':{'type':Sequelize[_0xc551('0x6')]},'periodic_announce':{'type':Sequelize[_0xc551('0x1a')],'set':function(_0x585519){this['setDataValue'](_0xc551('0x1b'),_0x585519?_0x585519[_0xc551('0x1c')](','):[]);},'get':function(){return this['getDataValue'](_0xc551('0x1b'))?this[_0xc551('0x11')](_0xc551('0x1b'))[_0xc551('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0xc551('0x6')],'defaultValue':_0xc551('0x17'),'set':function(_0x5e971d){this[_0xc551('0xe')](_0xc551('0x1e'),_0x5e971d?_0x5e971d[_0xc551('0x1c')](','):undefined);},'get':function(){return this['getDataValue'](_0xc551('0x1e'))?this[_0xc551('0x11')](_0xc551('0x1e'))[_0xc551('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xc551('0x6')],'defaultValue':'no','set':function(_0x2ae4cc){this[_0xc551('0xe')](_0xc551('0x1f'),_0x2ae4cc?_0x2ae4cc['join'](','):undefined);},'get':function(){return this[_0xc551('0x11')](_0xc551('0x1f'))?this['getDataValue'](_0xc551('0x1f'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x17'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xc551('0x3')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xc551('0x6')]},'description':{'type':Sequelize[_0xc551('0x6')]},'acw':{'type':Sequelize[_0xc551('0x20')],'defaultValue':0x0,'set':function(_0xe06ed7){this[_0xc551('0xe')](_0xc551('0x21'),_0xe06ed7);if(_0xe06ed7){if(this[_0xc551('0x11')](_0xc551('0x22'))<0x2){this[_0xc551('0xe')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0xc551('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xc551('0x20')],'defaultValue':0x0,'comment':_0xc551('0x23')},'dialMethod':{'type':Sequelize['ENUM']('preview','progressive',_0xc551('0x24'),_0xc551('0x25'),_0xc551('0x14')),'defaultValue':_0xc551('0x26'),'comment':_0xc551('0x27')},'dialLimitChannel':{'type':Sequelize[_0xc551('0x16')](0x4)[_0xc551('0x28')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc551('0x29')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xc551('0x28')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0xc551('0x2a')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xc551('0x2b')},'dialPredictiveOptimization':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x2c'),'dropRate'),'defaultValue':_0xc551('0x2d'),'comment':_0xc551('0x2e')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xc551('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xc551('0x2f')},'dialPredictiveInterval':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize[_0xc551('0x6')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc551('0x6')]},'dialOriginateTimeout':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc551('0x30')},'dialQueueOptions':{'type':Sequelize[_0xc551('0x6')],'defaultValue':_0xc551('0x31'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xc551('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc551('0x32')},'dialQueueProject':{'type':Sequelize[_0xc551('0x6')],'comment':_0xc551('0x33')},'dialCongestionMaxRetry':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc551('0x34')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc551('0x16')](0x5)[_0xc551('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc551('0x35')},'dialBusyMaxRetry':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc551('0x36')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc551('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc551('0x37')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0x3,'comment':_0xc551('0x38')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc551('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc551('0x39')},'dialGlobalMaxRetry':{'type':Sequelize[_0xc551('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc551('0x3a')},'dialTimezone':{'type':Sequelize[_0xc551('0x6')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xc551('0x6')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0xc551('0x6')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xc551('0x3')]('always',_0xc551('0x3b'),_0xc551('0x3c')),'defaultValue':_0xc551('0x3d')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xc551('0x3e')},'dialAMDInitialSilence':{'type':Sequelize[_0xc551('0x16')](0x9)[_0xc551('0x28')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc551('0x3f')},'dialAMDGreeting':{'type':Sequelize[_0xc551('0x16')](0x9)[_0xc551('0x28')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc551('0x40')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc551('0x16')](0x9)[_0xc551('0x28')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc551('0x41')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc551('0x42')},'dialAMDMinWordLength':{'type':Sequelize[_0xc551('0x16')](0x9)[_0xc551('0x28')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xc551('0x43')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc551('0x28')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc551('0x44')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc551('0x16')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc551('0x45')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc551('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc551('0x46')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xc551('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc551('0x47')},'dialRecallMeTimeout':{'type':Sequelize[_0xc551('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xc551('0x48')},'dialRecallInQueue':{'type':Sequelize[_0xc551('0x20')],'defaultValue':0x0,'comment':_0xc551('0x49')},'dialOrderByScheduledAt':{'type':Sequelize[_0xc551('0x3')](_0xc551('0x4a'),_0xc551('0x4b')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0xc551('0x6')],'comment':_0xc551('0x33')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xc551('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0xc551('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc551('0x4c')},'dialCutDigit':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc551('0x4d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc551('0x4e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc551('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc551('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc551('0x4f')},'dialDropRetryFrequency':{'type':Sequelize[_0xc551('0x16')](0x5)[_0xc551('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc551('0x50')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc551('0x51')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc551('0x16')](0x5)[_0xc551('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc551('0x52')},'dialMachineMaxRetry':{'type':Sequelize[_0xc551('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xc551('0x16')](0x5)[_0xc551('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc551('0x53')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc551('0x54')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc551('0x16')](0x5)[_0xc551('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc551('0x55')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc551('0x16')],'allowNull':!![],'comment':_0xc551('0x56')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xc551('0x57'),'set':function(_0x171e63){if(!_0x171e63)this[_0xc551('0xe')](_0xc551('0x58'),null);this[_0xc551('0xe')](_0xc551('0x59'),_0x171e63);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xc551('0x28')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xc551('0x16')](0x3)[_0xc551('0x28')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xc551('0x20')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xc551('0x20')],'defaultValue':![]}};
\ No newline at end of file
+var _0x18c2=['setDataValue','strategy','type','dialMethod','preview','booked','roundrobin','includes','INTEGER','yes','once','TEXT','join','getDataValue','periodic_announce','split','joinempty','leavewhenempty','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','power','predictive','progressive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','never','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','ASC','DESC','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)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','ENUM','inbound','outbound','default','leastrecent','fewestcalls','random','rrmemory','rrordered'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x18c2,0x17f));var _0x218c=function(_0x369b12,_0xbb2f76){_0x369b12=_0x369b12-0x0;var _0x564fc2=_0x18c2[_0x369b12];return _0x564fc2;};'use strict';var Sequelize=require(_0x218c('0x0'));module['exports']={'name':{'type':Sequelize[_0x218c('0x1')],'allowNull':![],'unique':_0x218c('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x4'),_0x218c('0x5')),'allowNull':![],'defaultValue':_0x218c('0x4')},'musiconhold':{'type':Sequelize[_0x218c('0x1')],'defaultValue':_0x218c('0x6')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0x218c('0x3')]('rr','ringall',_0x218c('0x7'),_0x218c('0x8'),_0x218c('0x9'),_0x218c('0xa'),'linear','wrandom',_0x218c('0xb')),'allowNull':![],'defaultValue':'ringall','set':function(_0x32aa85){this[_0x218c('0xc')](_0x218c('0xd'),_0x32aa85?_0x32aa85:_0x218c('0xa'));},'get':function(){var _0x4590dd=this['getDataValue'](_0x218c('0xe'));var _0x2f2921=this['getDataValue'](_0x218c('0xf'));var _0x4325f2=this['getDataValue'](_0x218c('0xd'));if(_0x4590dd===_0x218c('0x5')){if(_0x2f2921===_0x218c('0x10')){return null;}if(_0x2f2921===_0x218c('0x11')&&!['rrmemory',_0x218c('0x12')][_0x218c('0x13')](_0x4325f2)){this[_0x218c('0xc')](_0x218c('0xd'),_0x218c('0xa'));}}return _0x4325f2;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x218c('0x14')](0xb)},'timeout':{'type':Sequelize[_0x218c('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['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no'),'defaultValue':_0x218c('0x15')},'autopause':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x218c('0x14')](0xb)},'autopausebusy':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x218c('0x14')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x218c('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x218c('0x14')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x218c('0x14')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x218c('0x15'),'no'),'defaultValue':_0x218c('0x15')},'announce_holdtime':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no',_0x218c('0x16')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x218c('0x3')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x218c('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x218c('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x218c('0x1')]},'queue_youarenext':{'type':Sequelize[_0x218c('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x218c('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x218c('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x218c('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x218c('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x218c('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x218c('0x1')]},'queue_quantity1':{'type':Sequelize[_0x218c('0x1')]},'queue_quantity2':{'type':Sequelize[_0x218c('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x218c('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x218c('0x17')],'set':function(_0x3e9252){this['setDataValue']('periodic_announce',_0x3e9252?_0x3e9252[_0x218c('0x18')](','):[]);},'get':function(){return this[_0x218c('0x19')]('periodic_announce')?this[_0x218c('0x19')](_0x218c('0x1a'))[_0x218c('0x1b')](','):[];}},'joinempty':{'type':Sequelize[_0x218c('0x1')],'defaultValue':'yes','set':function(_0x5d7f5a){this['setDataValue'](_0x218c('0x1c'),_0x5d7f5a?_0x5d7f5a[_0x218c('0x18')](','):undefined);},'get':function(){return this['getDataValue'](_0x218c('0x1c'))?this[_0x218c('0x19')]('joinempty')[_0x218c('0x1b')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x218c('0x1')],'defaultValue':'no','set':function(_0x3d7c1b){this[_0x218c('0xc')](_0x218c('0x1d'),_0x3d7c1b?_0x3d7c1b[_0x218c('0x18')](','):undefined);},'get':function(){return this[_0x218c('0x19')](_0x218c('0x1d'))?this[_0x218c('0x19')](_0x218c('0x1d'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x15'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x218c('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x218c('0x14')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x218c('0x3')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x218c('0x1')]},'description':{'type':Sequelize[_0x218c('0x1')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x2e3b99){this[_0x218c('0xc')]('acw',_0x2e3b99);if(_0x2e3b99){if(this[_0x218c('0x19')](_0x218c('0x1e'))<0x2){this[_0x218c('0xc')](_0x218c('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x218c('0x14')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x218c('0x1f')],'defaultValue':0x0,'comment':_0x218c('0x20')},'dialMethod':{'type':Sequelize[_0x218c('0x3')]('preview','progressive',_0x218c('0x21'),_0x218c('0x22'),_0x218c('0x11')),'defaultValue':_0x218c('0x23'),'comment':_0x218c('0x24')},'dialLimitChannel':{'type':Sequelize[_0x218c('0x14')](0x4)[_0x218c('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x218c('0x26')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0x218c('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x218c('0x27')](0x2)[_0x218c('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x218c('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0x218c('0x3')](_0x218c('0x29'),_0x218c('0x2a')),'defaultValue':_0x218c('0x2a'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x218c('0x2b')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x218c('0x2c')},'dialQueueOptions':{'type':Sequelize[_0x218c('0x1')],'defaultValue':_0x218c('0x2d'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x218c('0x2e')},'dialQueueProject':{'type':Sequelize[_0x218c('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x218c('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x218c('0x2f')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x218c('0x14')](0x5)[_0x218c('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x218c('0x30')},'dialBusyMaxRetry':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x218c('0x14')](0x5)[_0x218c('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x218c('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x218c('0x25')],'defaultValue':0x3,'comment':_0x218c('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x218c('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x218c('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x218c('0x1')],'defaultValue':_0x218c('0x33')},'dialPrefix':{'type':Sequelize[_0x218c('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x218c('0x3')]('always',_0x218c('0x34'),_0x218c('0x35')),'defaultValue':_0x218c('0x36')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x218c('0x37')},'dialAMDInitialSilence':{'type':Sequelize[_0x218c('0x14')](0x9)[_0x218c('0x25')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x218c('0x14')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x218c('0x38')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x218c('0x14')](0x9)[_0x218c('0x25')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x218c('0x39')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x218c('0x14')](0x9)[_0x218c('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x218c('0x3a')},'dialAMDMinWordLength':{'type':Sequelize[_0x218c('0x14')](0x9)[_0x218c('0x25')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x218c('0x3b')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x218c('0x25')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x218c('0x3c')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x218c('0x14')](0x9)[_0x218c('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x218c('0x25')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x218c('0x3d')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x218c('0x14')](0x9)[_0x218c('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x218c('0x14')](0x5)[_0x218c('0x25')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x218c('0x3e')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x218c('0x3f')},'dialOrderByScheduledAt':{'type':Sequelize[_0x218c('0x3')]('DESC',_0x218c('0x40')),'defaultValue':_0x218c('0x41')},'dialQueueProject2':{'type':Sequelize[_0x218c('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x218c('0x1f')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x218c('0x42')},'dialCutDigit':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x218c('0x43')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x218c('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x218c('0x44')},'dialDropMaxRetry':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x218c('0x45')},'dialDropRetryFrequency':{'type':Sequelize[_0x218c('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x218c('0x46')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x218c('0x14')](0x5)[_0x218c('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x218c('0x47')},'dialMachineMaxRetry':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x218c('0x48')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x218c('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x218c('0x49')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x218c('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x218c('0x4a')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x218c('0x14')](0x5)[_0x218c('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x218c('0x4b')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x218c('0x14')],'allowNull':!![],'comment':_0x218c('0x4c')},'mandatoryDisposition':{'type':Sequelize[_0x218c('0x1f')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x516980){if(!_0x516980)this['setDataValue'](_0x218c('0x4d'),null);this[_0x218c('0xc')](_0x218c('0x4e'),_0x516980);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x218c('0x14')](0x3)[_0x218c('0x25')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x218c('0x1f')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)[_0x218c('0x25')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 7b11d4a..52ecef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','cm_hopper','onlyIfOpen','into','fromQuery','COALESCE(phone,\x27\x27)','all','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','join','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','moment','bluebird','util','lodash','squel','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','register','sendStatus','json','offset','undefined','count','set','Content-Range','then','inbound','map','value','includes','type','UserProfileResource','destroy','status','send','index','VoiceQueue','rawAttributes','key','getOptions','where','include','query','findAll','rows','catch','show','params','keys','filters','model','intersection','fields','attributes','includeAll','merge','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','VoiceQueues','QueueCampaigns','outbound','name','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','body','createdAt','updatedAt','autoAssociation','getHoppers','findOne','CmHopper','length','hasOwnProperty','nolimit','limit','sort','pick','VoiceQueueId','filter','getHopperHistories','CmHopperHistory','order','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','addTeams','teams','Agents','online','voicePause','flatMap','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','UserVoiceQueue','findOrCreate','upsert','isNil','interface','format','SIP/%s','userVoiceQueue:save','removeTeams','ids','User','select','tq.TeamId','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','TeamId','union','compact','removeAgents','userVoiceQueue:remove','addAgents','spread','emit','isEmpty','UserVoiceQueueRt','isArray','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','insert','phone','scheduledAt','ContactId','ListId','field','CmListId','toString','cm_contacts'];(function(_0x255dae,_0xc301dc){var _0x270bbb=function(_0x358f1a){while(--_0x358f1a){_0x255dae['push'](_0x255dae['shift']());}};_0x270bbb(++_0xc301dc);}(_0x008c,0x188));var _0xc008=function(_0x1fd450,_0x42cbf6){_0x1fd450=_0x1fd450-0x0;var _0x4cb0a5=_0x008c[_0x1fd450];return _0x4cb0a5;};'use strict';var moment=require(_0xc008('0x0'));var BPromise=require(_0xc008('0x1'));var util=require(_0xc008('0x2'));var _=require(_0xc008('0x3'));var squel=require(_0xc008('0x4'));var Redis=require('ioredis');var qs=require(_0xc008('0x5'));var logger=require(_0xc008('0x6'))(_0xc008('0x7'));var config=require(_0xc008('0x8'));var db=require(_0xc008('0x9'))['db'];config[_0xc008('0xa')]=_[_0xc008('0xb')](config[_0xc008('0xa')],{'host':_0xc008('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc008('0xa')]));require('./voiceQueue.socket')[_0xc008('0xd')](socket);function respondWithStatusCode(_0x5b64f8,_0x52041f){_0x52041f=_0x52041f||0xcc;return function(_0x27830d){if(_0x27830d){return _0x5b64f8[_0xc008('0xe')](_0x52041f);}return _0x5b64f8['status'](_0x52041f)['end']();};}function respondWithResult(_0x543eb8,_0x1eacfa){_0x1eacfa=_0x1eacfa||0xc8;return function(_0xc881aa){if(_0xc881aa){return _0x543eb8['status'](_0x1eacfa)[_0xc008('0xf')](_0xc881aa);}};}function respondWithFilteredResult(_0x332fd4,_0x2ea200){return function(_0x2a5b4e){if(_0x2a5b4e){var _0x9ffa93=typeof _0x2ea200[_0xc008('0x10')]===_0xc008('0x11')&&typeof _0x2ea200['limit']==='undefined';var _0x33f44c=_0x2a5b4e['count'];var _0x25e13f=_0x9ffa93?0x0:_0x2ea200[_0xc008('0x10')];var _0x2073ef=_0x9ffa93?_0x2a5b4e[_0xc008('0x12')]:_0x2ea200[_0xc008('0x10')]+_0x2ea200['limit'];var _0x5e894e;if(_0x2073ef>=_0x33f44c){_0x2073ef=_0x33f44c;_0x5e894e=0xc8;}else{_0x5e894e=0xce;}_0x332fd4['status'](_0x5e894e);return _0x332fd4[_0xc008('0x13')](_0xc008('0x14'),_0x25e13f+'-'+_0x2073ef+'/'+_0x33f44c)[_0xc008('0xf')](_0x2a5b4e);}return null;};}function saveUpdates(_0x3eb12a){return function(_0x4fe771){if(_0x4fe771){return _0x4fe771['update'](_0x3eb12a)['then'](function(_0x5c2668){return _0x5c2668;});}return null;};}function removeEntity(_0x46042b){return function(_0x462af5){if(_0x462af5){return _0x462af5['destroy']()[_0xc008('0x15')](function(){var _0x5906e6=_0x462af5['get']({'plain':!![]});var _0x543e5d=[{'name':'VoiceQueues','value':_0xc008('0x16'),'ignore':![]},{'name':'QueueCampaigns','value':'outbound','ignore':![]}];var _0x590a71=_(_0x543e5d)['filter']('ignore')[_0xc008('0x17')](_0xc008('0x18'))[_0xc008('0x18')]();if(_[_0xc008('0x19')](_0x590a71,_0x5906e6[_0xc008('0x1a')])){return;}var _0x110128=_['find'](_0x543e5d,[_0xc008('0x18'),_0x5906e6['type']])['name'];return db[_0xc008('0x1b')][_0xc008('0x1c')]({'where':{'type':_0x110128,'resourceId':_0x5906e6['id']}})[_0xc008('0x15')](function(){return _0x462af5;});})[_0xc008('0x15')](function(){_0x46042b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5de1e9){return function(_0x3f7b07){if(!_0x3f7b07){_0x5de1e9[_0xc008('0xe')](0x194);}return _0x3f7b07;};}function handleError(_0x92c582,_0x2e31c2){_0x2e31c2=_0x2e31c2||0x1f4;return function(_0x5bebd9){logger['error'](_0x5bebd9['stack']);if(_0x5bebd9['name']){delete _0x5bebd9['name'];}_0x92c582[_0xc008('0x1d')](_0x2e31c2)[_0xc008('0x1e')](_0x5bebd9);};}exports[_0xc008('0x1f')]=function(_0x529961,_0x24c14c){var _0x32390d={};var _0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x20')][_0xc008('0x21')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x22')]};});_0x32390d=qs[_0xc008('0x23')](_0x2a7d4f,_0x529961);var _0xf831f2={'where':_0x32390d[_0xc008('0x24')]};return db[_0xc008('0x20')][_0xc008('0x12')](_0xf831f2)[_0xc008('0x15')](function(_0x22d8e8){_0x209591[_0xc008('0x12')]=_0x22d8e8;_0x32390d[_0xc008('0x25')]=qs[_0xc008('0x25')](_0x529961[_0xc008('0x26')]);return db['VoiceQueue'][_0xc008('0x27')](_0x32390d);})[_0xc008('0x15')](function(_0x499754){_0x209591[_0xc008('0x28')]=_0x499754;return _0x209591;})[_0xc008('0x15')](respondWithFilteredResult(_0x24c14c,_0x32390d))[_0xc008('0x29')](handleError(_0x24c14c,null));};exports[_0xc008('0x2a')]=function(_0xd0e05a,_0x3cd878){var _0x7cfbc5={'raw':![],'where':{'id':_0xd0e05a[_0xc008('0x2b')]['id']}},_0x470e79={};_0x470e79['model']=_[_0xc008('0x2c')](db[_0xc008('0x20')][_0xc008('0x21')]);_0x470e79[_0xc008('0x26')]=_[_0xc008('0x2c')](_0xd0e05a[_0xc008('0x26')]);_0x470e79[_0xc008('0x2d')]=_['intersection'](_0x470e79[_0xc008('0x2e')],_0x470e79[_0xc008('0x26')]);_0x7cfbc5['attributes']=_[_0xc008('0x2f')](_0x470e79[_0xc008('0x2e')],qs['fields'](_0xd0e05a[_0xc008('0x26')][_0xc008('0x30')]));_0x7cfbc5[_0xc008('0x31')]=_0x7cfbc5['attributes']['length']?_0x7cfbc5['attributes']:_0x470e79[_0xc008('0x2e')];if(_0xd0e05a['query'][_0xc008('0x32')]){_0x7cfbc5[_0xc008('0x25')]=[{'all':!![]}];}_0x7cfbc5=_[_0xc008('0x33')]({},_0x7cfbc5,_0xd0e05a[_0xc008('0x34')]);return db[_0xc008('0x20')][_0xc008('0x35')](_0x7cfbc5)[_0xc008('0x15')](handleEntityNotFound(_0x3cd878,null))[_0xc008('0x15')](respondWithResult(_0x3cd878,null))[_0xc008('0x29')](handleError(_0x3cd878,null));};exports[_0xc008('0x36')]=function(_0x3ebb83,_0xdfca2e){return db[_0xc008('0x20')][_0xc008('0x36')](_0x3ebb83['body'],{})[_0xc008('0x15')](function(_0x23c4db){var _0x30b7df=_0x3ebb83[_0xc008('0x37')]['get']({'plain':!![]});if(!_0x30b7df)throw new Error(_0xc008('0x38'));if(_0x30b7df[_0xc008('0x39')]===_0xc008('0x37')){var _0x36e7ae=_0x23c4db[_0xc008('0x3a')]({'plain':!![]});var _0x5706bb=[{'name':_0xc008('0x3b'),'value':_0xc008('0x16')},{'name':_0xc008('0x3c'),'value':_0xc008('0x3d')}];var _0x7279e8=_['find'](_0x5706bb,[_0xc008('0x18'),_0x36e7ae[_0xc008('0x1a')]])[_0xc008('0x3e')];return db[_0xc008('0x3f')]['find']({'where':{'name':_0x7279e8,'userProfileId':_0x30b7df[_0xc008('0x40')]},'raw':!![]})[_0xc008('0x15')](function(_0x351d5c){if(_0x351d5c&&_0x351d5c['autoAssociation']===0x0){return db[_0xc008('0x1b')]['create']({'name':_0x36e7ae[_0xc008('0x3e')],'resourceId':_0x36e7ae['id'],'type':_0x351d5c['name'],'sectionId':_0x351d5c['id']},{})[_0xc008('0x15')](function(){return _0x23c4db;});}else{return _0x23c4db;}})[_0xc008('0x29')](function(_0x5a5d85){logger[_0xc008('0x41')](_0xc008('0x42'),_0x5a5d85);throw _0x5a5d85;});}return _0x23c4db;})[_0xc008('0x15')](respondWithResult(_0xdfca2e,0xc9))['catch'](handleError(_0xdfca2e,null));};exports[_0xc008('0x43')]=function(_0x2a9b5c,_0x200469){var _0x44fc5d={'where':{'id':_0x2a9b5c[_0xc008('0x2b')]['id']}},_0x347629={};_0x347629['model']=_['keys'](db['VoiceQueue'][_0xc008('0x21')]);_0x44fc5d[_0xc008('0x31')]=_[_0xc008('0x2f')](_0x347629[_0xc008('0x2e')],qs[_0xc008('0x30')](_0x2a9b5c[_0xc008('0x26')][_0xc008('0x30')]));_0x44fc5d[_0xc008('0x31')]=_0x44fc5d['attributes']['length']?_0x44fc5d['attributes']:_0x347629[_0xc008('0x2e')];if(_0x2a9b5c[_0xc008('0x26')][_0xc008('0x32')]){_0x44fc5d['include']=[{'all':!![]}];}_0x44fc5d=_[_0xc008('0x33')]({},_0x44fc5d,_0x2a9b5c[_0xc008('0x34')]);return db[_0xc008('0x20')][_0xc008('0x35')](_0x44fc5d)[_0xc008('0x15')](handleEntityNotFound(_0x200469,null))[_0xc008('0x15')](function(_0x17ec90){if(_0x17ec90){var _0x405e87=_0x17ec90[_0xc008('0x3a')]({'plain':!![]});_0x405e87=qs[_0xc008('0x44')](_0x405e87,['id','createdAt','updatedAt']);_0x2a9b5c[_0xc008('0x45')]=_['omit'](_0x2a9b5c[_0xc008('0x45')],['id',_0xc008('0x46'),_0xc008('0x47')]);return db['VoiceQueue'][_0xc008('0x36')](_[_0xc008('0x33')](_0x405e87,_0x2a9b5c[_0xc008('0x45')]),{'include':_0x2a9b5c[_0xc008('0x26')][_0xc008('0x32')]?[{'all':!![]}]:undefined})['then'](function(_0x3a7b3b){var _0x27b022=_0x2a9b5c['user'][_0xc008('0x3a')]({'plain':!![]});if(!_0x27b022)throw new Error(_0xc008('0x38'));if(_0x27b022['role']==='user'){var _0x2df905=_0x3a7b3b[_0xc008('0x3a')]({'plain':!![]});var _0x20947b=[{'name':_0xc008('0x3b'),'value':_0xc008('0x16')},{'name':'QueueCampaigns','value':'outbound'}];var _0x34b72a=_['find'](_0x20947b,[_0xc008('0x18'),_0x2df905[_0xc008('0x1a')]])[_0xc008('0x3e')];return db[_0xc008('0x3f')][_0xc008('0x35')]({'where':{'name':_0x34b72a,'userProfileId':_0x27b022[_0xc008('0x40')]},'raw':!![]})['then'](function(_0x2ea742){if(_0x2ea742&&_0x2ea742[_0xc008('0x48')]===0x0){return db[_0xc008('0x1b')][_0xc008('0x36')]({'name':_0x2df905[_0xc008('0x3e')],'resourceId':_0x2df905['id'],'type':_0x2ea742['name'],'sectionId':_0x2ea742['id']},{})[_0xc008('0x15')](function(){return _0x3a7b3b;});}else{return _0x3a7b3b;}})['catch'](function(_0x535e6e){logger['error'](_0xc008('0x42'),_0x535e6e);throw _0x535e6e;});}return _0x3a7b3b;});}})[_0xc008('0x15')](respondWithResult(_0x200469,0xc9))[_0xc008('0x29')](handleError(_0x200469,null));};exports['update']=function(_0x3aeeab,_0x2d8361){if(_0x3aeeab[_0xc008('0x45')]['id']){delete _0x3aeeab['body']['id'];}return db[_0xc008('0x20')][_0xc008('0x35')]({'where':{'id':_0x3aeeab[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x2d8361,null))['then'](saveUpdates(_0x3aeeab[_0xc008('0x45')],null))['then'](respondWithResult(_0x2d8361,null))[_0xc008('0x29')](handleError(_0x2d8361,null));};exports[_0xc008('0x1c')]=function(_0x2ae14e,_0x943c91){return db[_0xc008('0x20')][_0xc008('0x35')]({'where':{'id':_0x2ae14e['params']['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x943c91,null))['then'](removeEntity(_0x943c91,null))['catch'](handleError(_0x943c91,null));};exports[_0xc008('0x49')]=function(_0x30aa1e,_0x56e755){var _0xb1befa={'raw':![],'where':{}};var _0xb8ba7={};var _0x3e373e={'count':0x0,'rows':[]};return db[_0xc008('0x20')][_0xc008('0x4a')]({'where':{'id':_0x30aa1e[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x56e755,null))['then'](function(_0x16e052){if(_0x16e052){_0xb8ba7[_0xc008('0x2e')]=_[_0xc008('0x2c')](db[_0xc008('0x4b')][_0xc008('0x21')]);_0xb8ba7[_0xc008('0x26')]=_[_0xc008('0x2c')](_0x30aa1e[_0xc008('0x26')]);_0xb8ba7[_0xc008('0x2d')]=_[_0xc008('0x2f')](_0xb8ba7[_0xc008('0x2e')],_0xb8ba7[_0xc008('0x26')]);_0xb1befa[_0xc008('0x31')]=_[_0xc008('0x2f')](_0xb8ba7['model'],qs[_0xc008('0x30')](_0x30aa1e[_0xc008('0x26')][_0xc008('0x30')]));_0xb1befa['attributes']=_0xb1befa[_0xc008('0x31')][_0xc008('0x4c')]?_0xb1befa['attributes']:_0xb8ba7['model'];if(!_0x30aa1e[_0xc008('0x26')][_0xc008('0x4d')](_0xc008('0x4e'))){_0xb1befa[_0xc008('0x4f')]=qs[_0xc008('0x4f')](_0x30aa1e[_0xc008('0x26')][_0xc008('0x4f')]);_0xb1befa[_0xc008('0x10')]=qs[_0xc008('0x10')](_0x30aa1e[_0xc008('0x26')][_0xc008('0x10')]);}_0xb1befa['order']=qs[_0xc008('0x50')](_0x30aa1e[_0xc008('0x26')][_0xc008('0x50')]);_0xb1befa[_0xc008('0x24')]=qs['filters'](_[_0xc008('0x51')](_0x30aa1e['query'],_0xb8ba7[_0xc008('0x2d')]));_0xb1befa[_0xc008('0x24')][_0xc008('0x52')]=_0x16e052['id'];if(_0x30aa1e['query'][_0xc008('0x53')]){_0xb1befa[_0xc008('0x24')]=_[_0xc008('0x33')](_0xb1befa['where'],{'$or':_[_0xc008('0x17')](_0xb1befa['attributes'],function(_0x50ee03){var _0xee7a85={};_0xee7a85[_0x50ee03]={'$like':'%'+_0x30aa1e[_0xc008('0x26')][_0xc008('0x53')]+'%'};return _0xee7a85;})});}_0xb1befa=_[_0xc008('0x33')]({},_0xb1befa,_0x30aa1e['options']);return db[_0xc008('0x4b')][_0xc008('0x12')]({'where':_0xb1befa['where']})[_0xc008('0x15')](function(_0x5233bb){_0x3e373e[_0xc008('0x12')]=_0x5233bb;if(_0x30aa1e['query'][_0xc008('0x32')]){_0xb1befa['include']=[{'all':!![]}];}return db[_0xc008('0x4b')][_0xc008('0x27')](_0xb1befa);})[_0xc008('0x15')](function(_0x47337b){_0x3e373e['rows']=_0x47337b;return _0x3e373e;});}})[_0xc008('0x15')](respondWithFilteredResult(_0x56e755,_0xb1befa))[_0xc008('0x29')](handleError(_0x56e755,null));};exports[_0xc008('0x54')]=function(_0x1d49db,_0x321500){var _0x13ef78={'raw':!![],'where':{}};var _0xd9e3fd={};var _0x3b46e4={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xc008('0x4a')]({'where':{'id':_0x1d49db['params']['id']}})['then'](handleEntityNotFound(_0x321500,null))['then'](function(_0x406ead){if(_0x406ead){_0xd9e3fd[_0xc008('0x2e')]=_[_0xc008('0x2c')](db[_0xc008('0x55')][_0xc008('0x21')]);_0xd9e3fd[_0xc008('0x26')]=_[_0xc008('0x2c')](_0x1d49db[_0xc008('0x26')]);_0xd9e3fd[_0xc008('0x2d')]=_['intersection'](_0xd9e3fd[_0xc008('0x2e')],_0xd9e3fd[_0xc008('0x26')]);_0x13ef78[_0xc008('0x31')]=_[_0xc008('0x2f')](_0xd9e3fd[_0xc008('0x2e')],qs[_0xc008('0x30')](_0x1d49db[_0xc008('0x26')][_0xc008('0x30')]));_0x13ef78[_0xc008('0x31')]=_0x13ef78[_0xc008('0x31')][_0xc008('0x4c')]?_0x13ef78[_0xc008('0x31')]:_0xd9e3fd['model'];if(!_0x1d49db['query'][_0xc008('0x4d')](_0xc008('0x4e'))){_0x13ef78[_0xc008('0x4f')]=qs['limit'](_0x1d49db[_0xc008('0x26')][_0xc008('0x4f')]);_0x13ef78['offset']=qs['offset'](_0x1d49db['query'][_0xc008('0x10')]);}_0x13ef78[_0xc008('0x56')]=qs[_0xc008('0x50')](_0x1d49db[_0xc008('0x26')][_0xc008('0x50')]);_0x13ef78[_0xc008('0x24')]=qs[_0xc008('0x2d')](_[_0xc008('0x51')](_0x1d49db[_0xc008('0x26')],_0xd9e3fd[_0xc008('0x2d')]));_0x13ef78['where']['VoiceQueueId']=_0x406ead['id'];if(_0x1d49db[_0xc008('0x26')][_0xc008('0x53')]){_0x13ef78[_0xc008('0x24')]=_[_0xc008('0x33')](_0x13ef78[_0xc008('0x24')],{'$or':_[_0xc008('0x17')](_0x13ef78['attributes'],function(_0x5794fe){var _0x68372f={};_0x68372f[_0x5794fe]={'$like':'%'+_0x1d49db[_0xc008('0x26')][_0xc008('0x53')]+'%'};return _0x68372f;})});}_0x13ef78=_['merge']({},_0x13ef78,_0x1d49db['options']);return db['CmHopperHistory']['count']({'where':_0x13ef78['where']})['then'](function(_0x276de2){_0x3b46e4['count']=_0x276de2;if(_0x1d49db[_0xc008('0x26')]['includeAll']){_0x13ef78[_0xc008('0x25')]=[{'all':!![]}];}return db[_0xc008('0x55')][_0xc008('0x27')](_0x13ef78);})['then'](function(_0x58f348){_0x3b46e4[_0xc008('0x28')]=_0x58f348;return _0x3b46e4;});}})['then'](respondWithFilteredResult(_0x321500,_0x13ef78))[_0xc008('0x29')](handleError(_0x321500,null));};exports[_0xc008('0x57')]=function(_0x544519,_0x7b7246){var _0x4db90b={'raw':!![],'where':{}};var _0x554cf4={};var _0x23bece={'count':0x0,'rows':[]};return db[_0xc008('0x20')]['findOne']({'where':{'id':_0x544519[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x7b7246,null))[_0xc008('0x15')](function(_0x4bd290){if(_0x4bd290){_0x554cf4[_0xc008('0x2e')]=_[_0xc008('0x2c')](db[_0xc008('0x58')][_0xc008('0x21')]);_0x554cf4[_0xc008('0x26')]=_[_0xc008('0x2c')](_0x544519['query']);_0x554cf4[_0xc008('0x2d')]=_[_0xc008('0x2f')](_0x554cf4[_0xc008('0x2e')],_0x554cf4['query']);_0x4db90b[_0xc008('0x31')]=_[_0xc008('0x2f')](_0x554cf4[_0xc008('0x2e')],qs['fields'](_0x544519['query']['fields']));_0x4db90b[_0xc008('0x31')]=_0x4db90b[_0xc008('0x31')][_0xc008('0x4c')]?_0x4db90b[_0xc008('0x31')]:_0x554cf4[_0xc008('0x2e')];if(!_0x544519[_0xc008('0x26')][_0xc008('0x4d')](_0xc008('0x4e'))){_0x4db90b['limit']=qs[_0xc008('0x4f')](_0x544519[_0xc008('0x26')]['limit']);_0x4db90b['offset']=qs[_0xc008('0x10')](_0x544519[_0xc008('0x26')][_0xc008('0x10')]);}_0x4db90b[_0xc008('0x56')]=qs[_0xc008('0x50')](_0x544519['query'][_0xc008('0x50')]);_0x4db90b[_0xc008('0x24')]=qs['filters'](_[_0xc008('0x51')](_0x544519[_0xc008('0x26')],_0x554cf4[_0xc008('0x2d')]));_0x4db90b[_0xc008('0x24')]['VoiceQueueId']=_0x4bd290['id'];if(_0x544519[_0xc008('0x26')][_0xc008('0x53')]){_0x4db90b[_0xc008('0x24')]=_[_0xc008('0x33')](_0x4db90b['where'],{'$or':_[_0xc008('0x17')](_0x4db90b[_0xc008('0x31')],function(_0x57cf19){var _0x555e8a={};_0x555e8a[_0x57cf19]={'$like':'%'+_0x544519[_0xc008('0x26')]['filter']+'%'};return _0x555e8a;})});}_0x4db90b=_[_0xc008('0x33')]({},_0x4db90b,_0x544519[_0xc008('0x34')]);return db['CmHopperFinal'][_0xc008('0x12')]({'where':_0x4db90b[_0xc008('0x24')]})[_0xc008('0x15')](function(_0xbe42a2){_0x23bece[_0xc008('0x12')]=_0xbe42a2;if(_0x544519[_0xc008('0x26')][_0xc008('0x32')]){_0x4db90b[_0xc008('0x25')]=[{'all':!![]}];}return db[_0xc008('0x58')][_0xc008('0x27')](_0x4db90b);})['then'](function(_0x49e6d5){_0x23bece[_0xc008('0x28')]=_0x49e6d5;return _0x23bece;});}})[_0xc008('0x15')](respondWithFilteredResult(_0x7b7246,_0x4db90b))['catch'](handleError(_0x7b7246,null));};exports[_0xc008('0x59')]=function(_0x1bdaa9,_0x698d5c){var _0x5f1e48={'raw':!![],'where':{}};var _0x303cdd={};var _0x38239a={'count':0x0,'rows':[]};return db[_0xc008('0x20')][_0xc008('0x4a')]({'where':{'id':_0x1bdaa9[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x698d5c,null))[_0xc008('0x15')](function(_0x5bd010){if(_0x5bd010){_0x303cdd[_0xc008('0x2e')]=_['keys'](db[_0xc008('0x5a')][_0xc008('0x21')]);_0x303cdd[_0xc008('0x26')]=_['keys'](_0x1bdaa9[_0xc008('0x26')]);_0x303cdd[_0xc008('0x2d')]=_[_0xc008('0x2f')](_0x303cdd[_0xc008('0x2e')],_0x303cdd[_0xc008('0x26')]);_0x5f1e48[_0xc008('0x31')]=_[_0xc008('0x2f')](_0x303cdd[_0xc008('0x2e')],qs[_0xc008('0x30')](_0x1bdaa9[_0xc008('0x26')]['fields']));_0x5f1e48[_0xc008('0x31')]=_0x5f1e48[_0xc008('0x31')][_0xc008('0x4c')]?_0x5f1e48[_0xc008('0x31')]:_0x303cdd[_0xc008('0x2e')];if(!_0x1bdaa9['query'][_0xc008('0x4d')](_0xc008('0x4e'))){_0x5f1e48[_0xc008('0x4f')]=qs[_0xc008('0x4f')](_0x1bdaa9[_0xc008('0x26')][_0xc008('0x4f')]);_0x5f1e48[_0xc008('0x10')]=qs[_0xc008('0x10')](_0x1bdaa9[_0xc008('0x26')][_0xc008('0x10')]);}_0x5f1e48[_0xc008('0x56')]=qs[_0xc008('0x50')](_0x1bdaa9[_0xc008('0x26')][_0xc008('0x50')]);_0x5f1e48[_0xc008('0x24')]=qs['filters'](_['pick'](_0x1bdaa9[_0xc008('0x26')],_0x303cdd[_0xc008('0x2d')]));_0x5f1e48[_0xc008('0x24')][_0xc008('0x52')]=_0x5bd010['id'];if(_0x1bdaa9[_0xc008('0x26')][_0xc008('0x53')]){_0x5f1e48[_0xc008('0x24')]=_[_0xc008('0x33')](_0x5f1e48[_0xc008('0x24')],{'$or':_['map'](_0x5f1e48[_0xc008('0x31')],function(_0x2bbadf){var _0x54fd75={};_0x54fd75[_0x2bbadf]={'$like':'%'+_0x1bdaa9[_0xc008('0x26')][_0xc008('0x53')]+'%'};return _0x54fd75;})});}_0x5f1e48=_[_0xc008('0x33')]({},_0x5f1e48,_0x1bdaa9[_0xc008('0x34')]);return db[_0xc008('0x5a')][_0xc008('0x12')]({'where':_0x5f1e48['where']})[_0xc008('0x15')](function(_0x321532){_0x38239a[_0xc008('0x12')]=_0x321532;if(_0x1bdaa9[_0xc008('0x26')]['includeAll']){_0x5f1e48[_0xc008('0x25')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xc008('0x27')](_0x5f1e48);})[_0xc008('0x15')](function(_0x5b47c3){_0x38239a[_0xc008('0x28')]=_0x5b47c3;return _0x38239a;});}})['then'](respondWithFilteredResult(_0x698d5c,_0x5f1e48))[_0xc008('0x29')](handleError(_0x698d5c,null));};exports['getTeams']=function(_0x5b387d,_0x5351f7){var _0x79dfea={};var _0x402b67={};var _0x48f40f;var _0x4fda8;return db[_0xc008('0x20')]['findOne']({'where':{'id':_0x5b387d[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x5351f7,null))[_0xc008('0x15')](function(_0x5843ee){if(_0x5843ee){_0x48f40f=_0x5843ee;_0x402b67[_0xc008('0x2e')]=_[_0xc008('0x2c')](db[_0xc008('0x5b')][_0xc008('0x21')]);_0x402b67[_0xc008('0x26')]=_[_0xc008('0x2c')](_0x5b387d[_0xc008('0x26')]);_0x402b67[_0xc008('0x2d')]=_[_0xc008('0x2f')](_0x402b67[_0xc008('0x2e')],_0x402b67[_0xc008('0x26')]);_0x79dfea['attributes']=_[_0xc008('0x2f')](_0x402b67[_0xc008('0x2e')],qs[_0xc008('0x30')](_0x5b387d['query'][_0xc008('0x30')]));_0x79dfea[_0xc008('0x31')]=_0x79dfea[_0xc008('0x31')]['length']?_0x79dfea[_0xc008('0x31')]:_0x402b67['model'];_0x79dfea[_0xc008('0x56')]=qs[_0xc008('0x50')](_0x5b387d[_0xc008('0x26')]['sort']);_0x79dfea[_0xc008('0x24')]=qs[_0xc008('0x2d')](_[_0xc008('0x51')](_0x5b387d[_0xc008('0x26')],_0x402b67[_0xc008('0x2d')]));if(_0x5b387d[_0xc008('0x26')][_0xc008('0x53')]){_0x79dfea['where']=_[_0xc008('0x33')](_0x79dfea[_0xc008('0x24')],{'$or':_[_0xc008('0x17')](_0x79dfea[_0xc008('0x31')],function(_0x5a61d6){var _0x46fba5={};_0x46fba5[_0x5a61d6]={'$like':'%'+_0x5b387d['query'][_0xc008('0x53')]+'%'};return _0x46fba5;})});}_0x79dfea=_[_0xc008('0x33')]({},_0x79dfea,_0x5b387d[_0xc008('0x34')]);return _0x48f40f[_0xc008('0x5c')](_0x79dfea);}})[_0xc008('0x15')](function(_0x9f266e){if(_0x9f266e){_0x4fda8=_0x9f266e[_0xc008('0x4c')];if(!_0x5b387d['query'][_0xc008('0x4d')](_0xc008('0x4e'))){_0x79dfea[_0xc008('0x4f')]=qs[_0xc008('0x4f')](_0x5b387d['query'][_0xc008('0x4f')]);_0x79dfea['offset']=qs[_0xc008('0x10')](_0x5b387d[_0xc008('0x26')][_0xc008('0x10')]);}return _0x48f40f['getTeams'](_0x79dfea);}})['then'](function(_0x39bfc0){if(_0x39bfc0){return _0x39bfc0?{'count':_0x4fda8,'rows':_0x39bfc0}:null;}})['then'](respondWithResult(_0x5351f7,null))[_0xc008('0x29')](handleError(_0x5351f7,null));};exports[_0xc008('0x5d')]=function(_0x1c2e63,_0xaf3bed){var _0x58ae7b=_0x1c2e63[_0xc008('0x45')][_0xc008('0x5e')];var _0x537e5e=_['map'](_0x58ae7b,'id');return db[_0xc008('0x5b')][_0xc008('0x27')]({'where':{'id':_0x537e5e},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc008('0x5f'),'attributes':['id',_0xc008('0x3e'),_0xc008('0x60'),_0xc008('0x61'),'interface'],'raw':!![]}]})[_0xc008('0x15')](function(_0x3721e8){if(_0x3721e8){var _0xc344a7=_[_0xc008('0x62')](_0x3721e8,function(_0x78b833){var _0x177733=_0x78b833[_0xc008('0x3a')]({'plain':!![]});_0x177733[_0xc008('0x5f')][_0xc008('0x63')](function(_0xa332b1){_0xa332b1[_0xc008('0x64')]=_[_0xc008('0x35')](_0x58ae7b,{'id':_0x177733['id']})[_0xc008('0x64')];});return _0x177733['Agents'];});return db['VoiceQueue'][_0xc008('0x35')]({'where':{'id':_0x1c2e63[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](function(_0x4447ba){return db[_0xc008('0x65')][_0xc008('0x66')](function(_0xe5d226){return _0x4447ba['addTeams'](_0x537e5e,{'transaction':_0xe5d226})['then'](function(){return BPromise[_0xc008('0x67')](_0x58ae7b,function(_0x3d33ed){return db[_0xc008('0x68')]['upsert']({'TeamId':_0x3d33ed['id'],'VoiceQueueId':_0x1c2e63[_0xc008('0x2b')]['id'],'penalty':_0x3d33ed[_0xc008('0x64')]},{'transaction':_0xe5d226});});})[_0xc008('0x15')](function(){return BPromise[_0xc008('0x67')](_0xc344a7,function(_0x156ec3){return db[_0xc008('0x69')][_0xc008('0x6a')]({'where':{'UserId':_0x156ec3['id'],'VoiceQueueId':_0x1c2e63[_0xc008('0x2b')]['id']},'defaults':{'penalty':_0x156ec3[_0xc008('0x64')]},'transaction':_0xe5d226});});})[_0xc008('0x15')](function(){return BPromise[_0xc008('0x67')](_[_0xc008('0x53')](_0xc344a7,{'online':!![]}),function(_0x4ffaa3){return db['UserVoiceQueueRt'][_0xc008('0x6b')]({'membername':_0x4ffaa3[_0xc008('0x3e')],'UserId':_0x4ffaa3['id'],'queue_name':_0x4447ba['name'],'VoiceQueueId':_0x4447ba['id'],'interface':_[_0xc008('0x6c')](_0x4ffaa3[_0xc008('0x6d')])?util[_0xc008('0x6e')](_0xc008('0x6f'),_0x4ffaa3[_0xc008('0x3e')]):_0x4ffaa3[_0xc008('0x6d')],'paused':_0x4ffaa3[_0xc008('0x61')]||![],'penalty':_0x4ffaa3[_0xc008('0x64')]},{'transaction':_0xe5d226});});})[_0xc008('0x15')](function(){_0xc344a7['forEach'](function(_0x51b305){socket['emit'](_0xc008('0x70'),{'UserId':_0x51b305['id'],'VoiceQueueId':_0x4447ba['id']});});});});});}})['then'](respondWithStatusCode(_0xaf3bed,null))[_0xc008('0x29')](handleError(_0xaf3bed,null));};exports[_0xc008('0x71')]=function(_0x2c6a48,_0x177e8e){return db[_0xc008('0x5b')][_0xc008('0x27')]({'where':{'id':_0x2c6a48[_0xc008('0x26')][_0xc008('0x72')]},'attributes':['id'],'include':[{'model':db[_0xc008('0x73')],'as':_0xc008('0x5f'),'attributes':['id'],'raw':!![]}]})[_0xc008('0x15')](handleEntityNotFound(_0x177e8e,null))[_0xc008('0x15')](function(_0x1fea74){var _0x304083=_[_0xc008('0x17')](_0x1fea74,'id');var _0x473f44=[];var _0x41d1ea=[];var _0x5c2ca1=squel[_0xc008('0x74')]();_0x5c2ca1['field'](_0xc008('0x75'))[_0xc008('0x76')](_0xc008('0x77'),'tq')['join'](_0xc008('0x78'),'ut',_0xc008('0x79'))[_0xc008('0x24')](_0xc008('0x7a'),_0x2c6a48[_0xc008('0x2b')]['id']);for(var _0x377754=0x0;_0x377754<_0x1fea74[_0xc008('0x4c')];_0x377754+=0x1){let _0x57b8da=_0x1fea74[_0x377754];for(var _0x1cad4b=0x0;_0x1cad4b<_0x57b8da[_0xc008('0x5f')][_0xc008('0x4c')];_0x1cad4b+=0x1){let _0xdb4cef=_0x57b8da['Agents'][_0x1cad4b];var _0x555e8c=_0x5c2ca1['clone']();_0x555e8c['where'](_0xc008('0x7b'),_0xdb4cef['id']);_0x41d1ea[_0xc008('0x7c')](db[_0xc008('0x65')][_0xc008('0x26')](_0x555e8c['toString'](),{'type':db[_0xc008('0x65')][_0xc008('0x7d')][_0xc008('0x7e')]})['then'](function(_0x438195){if(_0x438195['length']===0x1){return _0xdb4cef['id'];}else{var _0x3d76b7=_['every'](_[_0xc008('0x17')](_0x438195,_0xc008('0x7f')),function(_0x1aaf89){return _[_0xc008('0x19')](_0x304083,_0x1aaf89);});if(_0x3d76b7){return _0xdb4cef['id'];}}}));}}return BPromise['all'](_0x41d1ea)[_0xc008('0x15')](function(_0x19dcb7){_0x473f44=_(_0x473f44)[_0xc008('0x80')](_0x19dcb7)[_0xc008('0x81')]()[_0xc008('0x18')]();return db[_0xc008('0x20')][_0xc008('0x35')]({'where':{'id':_0x2c6a48['params']['id']}})[_0xc008('0x15')](function(_0x30b6af){return db[_0xc008('0x65')]['transaction'](function(_0x5ba04f){return _0x30b6af[_0xc008('0x71')](_0x2c6a48[_0xc008('0x26')][_0xc008('0x72')],{'transaction':_0x5ba04f})[_0xc008('0x15')](function(){if(!_['isEmpty'](_0x473f44)){return _0x30b6af[_0xc008('0x82')](_0x473f44,{'transaction':_0x5ba04f})[_0xc008('0x15')](function(){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x2c6a48['params']['id'],'UserId':_0x473f44},'transaction':_0x5ba04f});});}})[_0xc008('0x15')](function(){_0x473f44['forEach'](function(_0x3744e1){socket['emit'](_0xc008('0x83'),{'UserId':_0x3744e1,'VoiceQueueId':_0x30b6af['id']});});});});});});})[_0xc008('0x15')](respondWithStatusCode(_0x177e8e,null))[_0xc008('0x29')](handleError(_0x177e8e,null));};exports[_0xc008('0x84')]=function(_0x5c24cd,_0x5effd6){var _0x23ba7e,_0x274739;return db[_0xc008('0x20')]['find']({'where':{'id':_0x5c24cd[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x5effd6,null))[_0xc008('0x15')](function(_0x272d98){if(_0x272d98){_0x274739=_0x272d98;return _0x272d98[_0xc008('0x84')](_0x5c24cd[_0xc008('0x45')][_0xc008('0x72')],_[_0xc008('0x44')](_0x5c24cd[_0xc008('0x45')],[_0xc008('0x72'),'id'])||{})[_0xc008('0x85')](function(_0x57687f){for(var _0x5ea13a=0x0;_0x5ea13a<_0x5c24cd[_0xc008('0x45')]['ids'][_0xc008('0x4c')];_0x5ea13a+=0x1){socket[_0xc008('0x86')]('userVoiceQueue:save',{'UserId':Number(_0x5c24cd['body'][_0xc008('0x72')][_0x5ea13a]),'VoiceQueueId':Number(_0x5c24cd[_0xc008('0x2b')]['id'])});}return _0x57687f;});}})[_0xc008('0x15')](function(_0x129cbf){_0x23ba7e=_0x129cbf||[];if(_0x274739){return db[_0xc008('0x73')][_0xc008('0x27')]({'where':{'id':_0x5c24cd['body'][_0xc008('0x72')]},'attributes':['id',_0xc008('0x3e'),_0xc008('0x60'),'voicePause',_0xc008('0x6d')],'raw':!![]});}})[_0xc008('0x15')](function(_0xcef0e4){if(!_[_0xc008('0x87')](_0xcef0e4)){var _0x49f92e=[];for(var _0x4ae026=0x0;_0x4ae026<_0xcef0e4[_0xc008('0x4c')];_0x4ae026++){if(_0xcef0e4[_0x4ae026]['online']){_0x49f92e[_0xc008('0x7c')](db[_0xc008('0x88')][_0xc008('0x6b')]({'membername':_0xcef0e4[_0x4ae026][_0xc008('0x3e')],'UserId':_0xcef0e4[_0x4ae026]['id'],'queue_name':_0x274739[_0xc008('0x3e')],'VoiceQueueId':_0x274739['id'],'interface':_['isNil'](_0xcef0e4[_0x4ae026]['interface'])?util[_0xc008('0x6e')](_0xc008('0x6f'),_0xcef0e4[_0x4ae026][_0xc008('0x3e')]):_0xcef0e4[_0x4ae026][_0xc008('0x6d')],'paused':_0xcef0e4[_0x4ae026][_0xc008('0x61')]||![],'penalty':_0x5c24cd[_0xc008('0x45')][_0xc008('0x64')]||0x0}));}}return BPromise['all'](_0x49f92e);}})[_0xc008('0x15')](function(){return _0x23ba7e;})[_0xc008('0x15')](respondWithResult(_0x5effd6,null))[_0xc008('0x29')](handleError(_0x5effd6,null));};exports[_0xc008('0x82')]=function(_0x1afb32,_0x1c2263){return db[_0xc008('0x20')][_0xc008('0x35')]({'where':{'id':_0x1afb32[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x1c2263,null))[_0xc008('0x15')](function(_0x328284){if(_0x328284){return _0x328284['removeAgents'](_0x1afb32[_0xc008('0x26')][_0xc008('0x72')])['then'](function(){if(_[_0xc008('0x89')](_0x1afb32[_0xc008('0x26')][_0xc008('0x72')])){for(var _0x2598be=0x0;_0x2598be<_0x1afb32[_0xc008('0x26')][_0xc008('0x72')][_0xc008('0x4c')];_0x2598be+=0x1){socket[_0xc008('0x86')](_0xc008('0x83'),{'UserId':Number(_0x1afb32[_0xc008('0x26')][_0xc008('0x72')][_0x2598be]),'VoiceQueueId':Number(_0x1afb32['params']['id'])});}}else{socket[_0xc008('0x86')](_0xc008('0x83'),{'UserId':Number(_0x1afb32[_0xc008('0x26')][_0xc008('0x72')]),'VoiceQueueId':Number(_0x1afb32[_0xc008('0x2b')]['id'])});}});}})[_0xc008('0x15')](function(_0x12f5d1){return db[_0xc008('0x88')][_0xc008('0x1c')]({'where':{'VoiceQueueId':_0x1afb32[_0xc008('0x2b')]['id'],'UserId':_0x1afb32[_0xc008('0x26')][_0xc008('0x72')]}})[_0xc008('0x15')](function(){return _0x12f5d1;});})[_0xc008('0x15')](respondWithStatusCode(_0x1c2263,null))[_0xc008('0x29')](handleError(_0x1c2263,null));};exports[_0xc008('0x8a')]=function(_0x5c358b,_0x49688b){var _0x51fd86={};var _0x10778f={};var _0x237ffb;var _0x3f80f4;return db[_0xc008('0x20')][_0xc008('0x4a')]({'where':{'id':_0x5c358b[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x49688b,null))['then'](function(_0x3e7099){if(_0x3e7099){_0x237ffb=_0x3e7099;_0x10778f['model']=_['keys'](db[_0xc008('0x73')][_0xc008('0x21')]);_0x10778f['query']=_[_0xc008('0x2c')](_0x5c358b[_0xc008('0x26')]);_0x10778f[_0xc008('0x2d')]=_['intersection'](_0x10778f[_0xc008('0x2e')],_0x10778f[_0xc008('0x26')]);_0x51fd86[_0xc008('0x31')]=_['intersection'](_0x10778f[_0xc008('0x2e')],qs[_0xc008('0x30')](_0x5c358b[_0xc008('0x26')][_0xc008('0x30')]));_0x51fd86[_0xc008('0x31')]=_0x51fd86[_0xc008('0x31')][_0xc008('0x4c')]?_0x51fd86[_0xc008('0x31')]:_0x10778f['model'];_0x51fd86[_0xc008('0x56')]=qs[_0xc008('0x50')](_0x5c358b[_0xc008('0x26')][_0xc008('0x50')]);_0x51fd86[_0xc008('0x24')]=qs['filters'](_[_0xc008('0x51')](_0x5c358b[_0xc008('0x26')],_0x10778f[_0xc008('0x2d')]));if(_0x5c358b[_0xc008('0x26')][_0xc008('0x53')]){_0x51fd86[_0xc008('0x24')]=_[_0xc008('0x33')](_0x51fd86[_0xc008('0x24')],{'$or':_['map'](_0x51fd86[_0xc008('0x31')],function(_0x231318){var _0x3df369={};_0x3df369[_0x231318]={'$like':'%'+_0x5c358b[_0xc008('0x26')]['filter']+'%'};return _0x3df369;})});}_0x51fd86=_['merge']({},_0x51fd86,_0x5c358b[_0xc008('0x34')]);return _0x237ffb[_0xc008('0x8a')](_0x51fd86);}})['then'](function(_0x30e433){if(_0x30e433){_0x3f80f4=_0x30e433[_0xc008('0x4c')];if(!_0x5c358b[_0xc008('0x26')][_0xc008('0x4d')](_0xc008('0x4e'))){_0x51fd86[_0xc008('0x4f')]=qs[_0xc008('0x4f')](_0x5c358b['query']['limit']);_0x51fd86[_0xc008('0x10')]=qs['offset'](_0x5c358b[_0xc008('0x26')][_0xc008('0x10')]);}return _0x237ffb[_0xc008('0x8a')](_0x51fd86);}})[_0xc008('0x15')](function(_0x2ea1db){if(_0x2ea1db){return _0x2ea1db?{'count':_0x3f80f4,'rows':_0x2ea1db}:null;}})[_0xc008('0x15')](respondWithResult(_0x49688b,null))[_0xc008('0x29')](handleError(_0x49688b,null));};exports[_0xc008('0x8b')]=function(_0x367873,_0x356a82){var _0x368c1f={};var _0x4fd0ff={};var _0x22772e;var _0x39fd43;return db[_0xc008('0x20')][_0xc008('0x4a')]({'where':{'id':_0x367873[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x356a82,null))[_0xc008('0x15')](function(_0x506dc0){if(_0x506dc0){_0x22772e=_0x506dc0;_0x4fd0ff[_0xc008('0x2e')]=_[_0xc008('0x2c')](db[_0xc008('0x88')]['rawAttributes']);_0x4fd0ff[_0xc008('0x26')]=_[_0xc008('0x2c')](_0x367873[_0xc008('0x26')]);_0x4fd0ff[_0xc008('0x2d')]=_[_0xc008('0x2f')](_0x4fd0ff[_0xc008('0x2e')],_0x4fd0ff['query']);_0x368c1f['attributes']=_[_0xc008('0x2f')](_0x4fd0ff[_0xc008('0x2e')],qs[_0xc008('0x30')](_0x367873[_0xc008('0x26')][_0xc008('0x30')]));_0x368c1f['attributes']=_0x368c1f[_0xc008('0x31')]['length']?_0x368c1f[_0xc008('0x31')]:_0x4fd0ff[_0xc008('0x2e')];_0x368c1f['order']=qs[_0xc008('0x50')](_0x367873[_0xc008('0x26')][_0xc008('0x50')]);_0x368c1f[_0xc008('0x24')]=qs['filters'](_[_0xc008('0x51')](_0x367873[_0xc008('0x26')],_0x4fd0ff[_0xc008('0x2d')]));if(_0x367873[_0xc008('0x26')][_0xc008('0x53')]){_0x368c1f['where']=_[_0xc008('0x33')](_0x368c1f[_0xc008('0x24')],{'$or':_[_0xc008('0x17')](_0x368c1f['attributes'],function(_0x43f96e){var _0x353cd5={};_0x353cd5[_0x43f96e]={'$like':'%'+_0x367873[_0xc008('0x26')][_0xc008('0x53')]+'%'};return _0x353cd5;})});}_0x368c1f=_['merge']({},_0x368c1f,_0x367873[_0xc008('0x34')]);return _0x22772e[_0xc008('0x8b')](_0x368c1f);}})[_0xc008('0x15')](function(_0x9afcd6){if(_0x9afcd6){_0x39fd43=_0x9afcd6[_0xc008('0x4c')];if(!_0x367873['query'][_0xc008('0x4d')]('nolimit')){_0x368c1f['limit']=qs[_0xc008('0x4f')](_0x367873['query'][_0xc008('0x4f')]);_0x368c1f[_0xc008('0x10')]=qs[_0xc008('0x10')](_0x367873[_0xc008('0x26')][_0xc008('0x10')]);}return _0x22772e[_0xc008('0x8b')](_0x368c1f);}})[_0xc008('0x15')](function(_0x5e9e9c){return _0x5e9e9c?{'count':_0x39fd43,'rows':_0x5e9e9c}:null;})[_0xc008('0x15')](respondWithResult(_0x356a82,null))[_0xc008('0x29')](handleError(_0x356a82,null));};exports[_0xc008('0x8c')]=function(_0x45fe90,_0xc046ce){var _0x46fc75={};var _0x59b5b9={};var _0x3c3ead;var _0x3c8a79;return db[_0xc008('0x20')][_0xc008('0x4a')]({'where':{'id':_0x45fe90[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0xc046ce,null))[_0xc008('0x15')](function(_0x3aa9b4){if(_0x3aa9b4){_0x3c3ead=_0x3aa9b4;_0x59b5b9['model']=_['keys'](db[_0xc008('0x8d')][_0xc008('0x21')]);_0x59b5b9['query']=_[_0xc008('0x2c')](_0x45fe90['query']);_0x59b5b9[_0xc008('0x2d')]=_[_0xc008('0x2f')](_0x59b5b9[_0xc008('0x2e')],_0x59b5b9[_0xc008('0x26')]);_0x46fc75[_0xc008('0x31')]=_[_0xc008('0x2f')](_0x59b5b9[_0xc008('0x2e')],qs['fields'](_0x45fe90[_0xc008('0x26')]['fields']));_0x46fc75[_0xc008('0x31')]=_0x46fc75[_0xc008('0x31')][_0xc008('0x4c')]?_0x46fc75[_0xc008('0x31')]:_0x59b5b9[_0xc008('0x2e')];_0x46fc75[_0xc008('0x56')]=qs[_0xc008('0x50')](_0x45fe90['query'][_0xc008('0x50')]);_0x46fc75[_0xc008('0x24')]=qs['filters'](_[_0xc008('0x51')](_0x45fe90[_0xc008('0x26')],_0x59b5b9[_0xc008('0x2d')]));if(_0x45fe90[_0xc008('0x26')][_0xc008('0x53')]){_0x46fc75[_0xc008('0x24')]=_['merge'](_0x46fc75[_0xc008('0x24')],{'$or':_[_0xc008('0x17')](_0x46fc75[_0xc008('0x31')],function(_0x3e7c19){var _0x47d263={};_0x47d263[_0x3e7c19]={'$like':'%'+_0x45fe90['query']['filter']+'%'};return _0x47d263;})});}_0x46fc75=_[_0xc008('0x33')]({},_0x46fc75,_0x45fe90[_0xc008('0x34')]);return _0x3c3ead['getLists'](_0x46fc75);}})['then'](function(_0x5035ca){if(_0x5035ca){_0x3c8a79=_0x5035ca['length'];if(!_0x45fe90[_0xc008('0x26')][_0xc008('0x4d')]('nolimit')){_0x46fc75[_0xc008('0x4f')]=qs[_0xc008('0x4f')](_0x45fe90[_0xc008('0x26')][_0xc008('0x4f')]);_0x46fc75[_0xc008('0x10')]=qs['offset'](_0x45fe90['query'][_0xc008('0x10')]);}return _0x3c3ead[_0xc008('0x8c')](_0x46fc75);}})[_0xc008('0x15')](function(_0x46f9ab){if(_0x46f9ab){return _0x46f9ab?{'count':_0x3c8a79,'rows':_0x46f9ab}:null;}})[_0xc008('0x15')](respondWithResult(_0xc046ce,null))[_0xc008('0x29')](handleError(_0xc046ce,null));};exports[_0xc008('0x8e')]=function(_0x5645bb,_0x2ebe07){var _0x3d6f0d=moment()[_0xc008('0x6e')](_0xc008('0x8f'));var _0x3be328,_0x3bcf94;return db[_0xc008('0x20')]['find']({'where':{'id':_0x5645bb['params']['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x2ebe07,null))[_0xc008('0x15')](function(_0x11bcba){if(_0x11bcba){_0x3bcf94=_0x11bcba;return _0x11bcba[_0xc008('0x8e')](_0x5645bb[_0xc008('0x45')][_0xc008('0x72')],_[_0xc008('0x44')](_0x5645bb[_0xc008('0x45')],[_0xc008('0x72'),'id'])||{});}return null;})[_0xc008('0x85')](function(_0xefba5){var _0x202826;_0x3be328=_0xefba5||[];var _0x37e1f2=[];if(_0xefba5){for(var _0x5161f3=0x0;_0x5161f3<_0xefba5['length'];_0x5161f3+=0x1){var _0x43ec81=_0xefba5[_0x5161f3][_0xc008('0x3a')]({'plain':!![]});_0x3bcf94[_0xc008('0x90')]=_0x5645bb[_0xc008('0x45')][_0xc008('0x90')]?_0x5645bb[_0xc008('0x45')][_0xc008('0x90')]:_0x3bcf94['dialCheckDuplicateType'];switch(_0x3bcf94['dialCheckDuplicateType']){case'always':_0x202826=squel[_0xc008('0x91')]()['into']('cm_hopper')['fromQuery']([_0xc008('0x92'),_0xc008('0x93'),_0xc008('0x94'),_0xc008('0x95'),_0xc008('0x52'),_0xc008('0x46'),_0xc008('0x47')],squel[_0xc008('0x74')]()[_0xc008('0x96')](_0xc008('0x92'),_0xc008('0x92'))[_0xc008('0x96')]('\x27'+_0x3d6f0d+'\x27','scheduledAt')['field']('id',_0xc008('0x94'))[_0xc008('0x96')](_0x43ec81[_0xc008('0x97')][_0xc008('0x98')](),_0xc008('0x95'))[_0xc008('0x96')](_0x5645bb[_0xc008('0x2b')]['id'][_0xc008('0x98')](),'VoiceQueueId')[_0xc008('0x96')]('\x27'+_0x3d6f0d+'\x27','createdAt')['field']('\x27'+_0x3d6f0d+'\x27','updatedAt')['from'](_0xc008('0x99'))['where'](_0xc008('0x9a'))[_0xc008('0x24')](_0xc008('0x9b'),_0x43ec81['CmListId']['toString']())[_0xc008('0x24')](_0xc008('0x9c'))['where'](_0xc008('0x9d'),squel[_0xc008('0x74')]()[_0xc008('0x96')](_0xc008('0x9e'))[_0xc008('0x76')](_0xc008('0x9f'))[_0xc008('0x24')](_0xc008('0x7a'),_0x5645bb[_0xc008('0x2b')]['id'][_0xc008('0x98')]()))['where'](_0xc008('0x9d'),squel[_0xc008('0x74')]()['field']('COALESCE(phone,\x27\x27)')[_0xc008('0x76')](_0xc008('0xa0'))[_0xc008('0x24')]('VoiceQueueId\x20=\x20?',_0x5645bb['params']['id']['toString']())))['toString']();break;case _0xc008('0xa1'):_0x202826=squel[_0xc008('0x91')]()[_0xc008('0xa2')](_0xc008('0xa0'))[_0xc008('0xa3')]([_0xc008('0x92'),_0xc008('0x93'),'ContactId',_0xc008('0x95'),_0xc008('0x52'),_0xc008('0x46'),_0xc008('0x47')],squel[_0xc008('0x74')]()['field'](_0xc008('0x92'),_0xc008('0x92'))['field']('\x27'+_0x3d6f0d+'\x27',_0xc008('0x93'))[_0xc008('0x96')]('id',_0xc008('0x94'))[_0xc008('0x96')](_0x43ec81['CmListId'][_0xc008('0x98')](),'ListId')[_0xc008('0x96')](_0x5645bb[_0xc008('0x2b')]['id'][_0xc008('0x98')](),_0xc008('0x52'))[_0xc008('0x96')]('\x27'+_0x3d6f0d+'\x27','createdAt')[_0xc008('0x96')]('\x27'+_0x3d6f0d+'\x27',_0xc008('0x47'))[_0xc008('0x76')](_0xc008('0x99'))['where'](_0xc008('0x9a'))['where']('ListId\x20=\x20?',_0x43ec81[_0xc008('0x97')][_0xc008('0x98')]())[_0xc008('0x24')]('phone\x20IS\x20NOT\x20NULL')[_0xc008('0x24')](_0xc008('0x9d'),squel['select']()[_0xc008('0x96')](_0xc008('0xa4'))['from']('cm_hopper')[_0xc008('0x24')]('VoiceQueueId\x20=\x20?',_0x5645bb['params']['id'][_0xc008('0x98')]())))['toString']();break;default:_0x202826=squel[_0xc008('0x91')]()[_0xc008('0xa2')](_0xc008('0xa0'))[_0xc008('0xa3')]([_0xc008('0x92'),'scheduledAt','ContactId',_0xc008('0x95'),'VoiceQueueId',_0xc008('0x46'),'updatedAt'],squel['select']()['field'](_0xc008('0x92'),'phone')[_0xc008('0x96')]('\x27'+_0x3d6f0d+'\x27',_0xc008('0x93'))['field']('id','ContactId')[_0xc008('0x96')](_0x43ec81[_0xc008('0x97')][_0xc008('0x98')](),_0xc008('0x95'))['field'](_0x5645bb['params']['id'][_0xc008('0x98')](),'VoiceQueueId')['field']('\x27'+_0x3d6f0d+'\x27',_0xc008('0x46'))[_0xc008('0x96')]('\x27'+_0x3d6f0d+'\x27','updatedAt')['from']('cm_contacts')[_0xc008('0x24')]('deletedAt\x20IS\x20NULL')[_0xc008('0x24')](_0xc008('0x9b'),_0x43ec81[_0xc008('0x97')][_0xc008('0x98')]())[_0xc008('0x24')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x37e1f2[_0xc008('0x7c')](db[_0xc008('0x65')][_0xc008('0x26')](_0x202826));}return BPromise[_0xc008('0xa5')](_0x37e1f2);}})[_0xc008('0x15')](function(){var _0x262b79=[];var _0x15c5a2=squel[_0xc008('0x91')]()[_0xc008('0xa2')](_0xc008('0xa6'))[_0xc008('0xa3')]([_0xc008('0xa7'),'phone',_0xc008('0xa8'),_0xc008('0x46'),_0xc008('0x47')],squel[_0xc008('0x74')]()['field'](_0xc008('0xa9'))[_0xc008('0x96')](_0xc008('0xaa'))[_0xc008('0x96')](_0xc008('0xab'))[_0xc008('0x96')]('\x27'+_0x3d6f0d+'\x27',_0xc008('0x46'))[_0xc008('0x96')]('\x27'+_0x3d6f0d+'\x27','updatedAt')[_0xc008('0x76')](_0xc008('0xac'),'ci')[_0xc008('0xad')](_0xc008('0xa0'),'h',_0xc008('0xae'))[_0xc008('0x24')](_0xc008('0xaf'),_0x3d6f0d)['where'](_0xc008('0xb0'),'PHONE'))[_0xc008('0x98')]();_0x262b79[_0xc008('0x7c')](db[_0xc008('0x65')][_0xc008('0x26')](_0x15c5a2));return BPromise[_0xc008('0xa5')](_0x262b79);})[_0xc008('0x15')](function(){return _0x3be328;})[_0xc008('0x15')](respondWithResult(_0x2ebe07,null))[_0xc008('0x29')](handleError(_0x2ebe07,null));};exports[_0xc008('0xb1')]=function(_0x471780,_0x4fae34){return db[_0xc008('0x20')][_0xc008('0x35')]({'where':{'id':_0x471780[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x4fae34,null))[_0xc008('0x15')](function(_0x1cc6a6){if(_0x1cc6a6){return _0x1cc6a6[_0xc008('0xb1')](_0x471780[_0xc008('0x26')][_0xc008('0x72')]);}})[_0xc008('0x15')](function(_0x471618){if(_0x471618){return db[_0xc008('0x4b')][_0xc008('0x1c')]({'where':{'ListId':_0x471780['query'][_0xc008('0x72')],'VoiceQueueId':_0x471780['params']['id']}})[_0xc008('0x15')](function(){return _0x471618;});}})[_0xc008('0x15')](respondWithStatusCode(_0x4fae34,null))[_0xc008('0x29')](handleError(_0x4fae34,null));};exports[_0xc008('0xb2')]=function(_0x370234,_0x3ff7d2){var _0x478794={};var _0x406de6={};var _0x34cbce;var _0x337acd;return db['VoiceQueue']['findOne']({'where':{'id':_0x370234['params']['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x3ff7d2,null))[_0xc008('0x15')](function(_0x2ccfcf){if(_0x2ccfcf){_0x34cbce=_0x2ccfcf;_0x406de6[_0xc008('0x2e')]=_[_0xc008('0x2c')](db[_0xc008('0x8d')][_0xc008('0x21')]);_0x406de6['query']=_[_0xc008('0x2c')](_0x370234[_0xc008('0x26')]);_0x406de6[_0xc008('0x2d')]=_[_0xc008('0x2f')](_0x406de6[_0xc008('0x2e')],_0x406de6['query']);_0x478794[_0xc008('0x31')]=_[_0xc008('0x2f')](_0x406de6[_0xc008('0x2e')],qs[_0xc008('0x30')](_0x370234[_0xc008('0x26')][_0xc008('0x30')]));_0x478794[_0xc008('0x31')]=_0x478794[_0xc008('0x31')][_0xc008('0x4c')]?_0x478794[_0xc008('0x31')]:_0x406de6[_0xc008('0x2e')];_0x478794['order']=qs[_0xc008('0x50')](_0x370234['query'][_0xc008('0x50')]);_0x478794[_0xc008('0x24')]=qs[_0xc008('0x2d')](_['pick'](_0x370234[_0xc008('0x26')],_0x406de6['filters']));if(_0x370234[_0xc008('0x26')][_0xc008('0x53')]){_0x478794[_0xc008('0x24')]=_[_0xc008('0x33')](_0x478794[_0xc008('0x24')],{'$or':_[_0xc008('0x17')](_0x478794[_0xc008('0x31')],function(_0x89601c){var _0x22bb2a={};_0x22bb2a[_0x89601c]={'$like':'%'+_0x370234[_0xc008('0x26')]['filter']+'%'};return _0x22bb2a;})});}_0x478794=_[_0xc008('0x33')]({},_0x478794,_0x370234['options']);return _0x34cbce['getBlackLists'](_0x478794);}})[_0xc008('0x15')](function(_0x55ad1f){if(_0x55ad1f){_0x337acd=_0x55ad1f[_0xc008('0x4c')];if(!_0x370234[_0xc008('0x26')][_0xc008('0x4d')](_0xc008('0x4e'))){_0x478794['limit']=qs[_0xc008('0x4f')](_0x370234[_0xc008('0x26')][_0xc008('0x4f')]);_0x478794[_0xc008('0x10')]=qs[_0xc008('0x10')](_0x370234['query'][_0xc008('0x10')]);}return _0x34cbce[_0xc008('0xb2')](_0x478794);}})['then'](function(_0x247e3a){if(_0x247e3a){return _0x247e3a?{'count':_0x337acd,'rows':_0x247e3a}:null;}})[_0xc008('0x15')](respondWithResult(_0x3ff7d2,null))[_0xc008('0x29')](handleError(_0x3ff7d2,null));};exports[_0xc008('0xb3')]=function(_0x252c44,_0x3b46db){var _0x482efd;return db[_0xc008('0x20')][_0xc008('0x35')]({'where':{'id':_0x252c44[_0xc008('0x2b')]['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x3b46db,null))[_0xc008('0x15')](function(_0x2f217e){if(_0x2f217e){return _0x2f217e[_0xc008('0xb3')](_0x252c44[_0xc008('0x45')][_0xc008('0x72')],_[_0xc008('0x44')](_0x252c44['body'],[_0xc008('0x72'),'id'])||{});}return null;})[_0xc008('0x85')](function(_0x298783){var _0xe349bd;_0x482efd=_0x298783||[];var _0x50db48=[];if(_0x298783){for(var _0x384f2f=0x0;_0x384f2f<_0x298783[_0xc008('0x4c')];_0x384f2f+=0x1){var _0x367581=_0x298783[_0x384f2f][_0xc008('0x3a')]({'plain':!![]});_0xe349bd=squel[_0xc008('0x91')]()[_0xc008('0xa2')](_0xc008('0xb4'))[_0xc008('0xa3')]([_0xc008('0x92'),_0xc008('0x94'),_0xc008('0x95'),_0xc008('0x52'),_0xc008('0x46'),_0xc008('0x47')],squel['select']()[_0xc008('0x96')](_0xc008('0x92'),_0xc008('0x92'))[_0xc008('0x96')]('id',_0xc008('0x94'))['field'](_0x367581[_0xc008('0x97')][_0xc008('0x98')](),'ListId')[_0xc008('0x96')](_0x252c44[_0xc008('0x2b')]['id']['toString'](),'VoiceQueueId')['field']('NOW()',_0xc008('0x46'))['field']('NOW()',_0xc008('0x47'))[_0xc008('0x76')](_0xc008('0x99'))['where']('deletedAt\x20IS\x20NULL')[_0xc008('0x24')](_0xc008('0x9b'),_0x367581[_0xc008('0x97')][_0xc008('0x98')]())['where'](_0xc008('0x9c')))[_0xc008('0x98')]();_0x50db48['push'](db[_0xc008('0x65')]['query'](_0xe349bd));}return BPromise['all'](_0x50db48);}})[_0xc008('0x15')](function(){return _0x482efd;})[_0xc008('0x15')](respondWithResult(_0x3b46db,null))['catch'](handleError(_0x3b46db,null));};exports['removeBlackLists']=function(_0x1e3098,_0x9b997d){return db['VoiceQueue'][_0xc008('0x35')]({'where':{'id':_0x1e3098['params']['id']}})[_0xc008('0x15')](handleEntityNotFound(_0x9b997d,null))[_0xc008('0x15')](function(_0x1422ab){if(_0x1422ab){return _0x1422ab[_0xc008('0xb5')](_0x1e3098[_0xc008('0x26')][_0xc008('0x72')]);}})[_0xc008('0x15')](function(_0x41a8a6){if(_0x41a8a6){return db['CmHopperBlack'][_0xc008('0x1c')]({'where':{'ListId':_0x1e3098['query'][_0xc008('0x72')],'VoiceQueueId':_0x1e3098['params']['id']}})['then'](function(){return _0x41a8a6;});}})[_0xc008('0x15')](respondWithStatusCode(_0x9b997d,null))[_0xc008('0x29')](handleError(_0x9b997d,null));};
\ No newline at end of file
+var _0x4b84=['type','find','UserProfileResource','stack','name','send','index','rawAttributes','fieldName','key','getOptions','where','VoiceQueue','include','findAll','rows','catch','show','params','model','keys','query','filters','intersection','attributes','fields','length','includeAll','merge','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','userProfileId','findOne','hasOwnProperty','nolimit','order','sort','VoiceQueueId','CmHopper','getHopperHistories','pick','CmHopperHistory','CmHopperFinal','CmHopperBlack','getTeams','Team','addTeams','User','Agents','voicePause','interface','forEach','penalty','transaction','TeamVoiceQueue','each','UserVoiceQueue','UserVoiceQueueRt','upsert','format','SIP/%s','emit','ids','field','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','sequelize','SELECT','TeamId','all','removeTeams','isEmpty','removeAgents','addAgents','spread','userVoiceQueue:save','online','isNil','isArray','userVoiceQueue:remove','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','fromQuery','phone','scheduledAt','ContactId','ListId','select','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','insert','into','CmHopperId','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','h.scheduledat=?','ci.ItemClass=?','removeLists','getBlackLists','NOW()','removeBlackLists','moment','bluebird','squel','../../config/logger','api','../../config/environment','redis','socket.io-emitter','./voiceQueue.socket','sendStatus','end','status','json','undefined','count','offset','limit','update','destroy','then','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4b84,0x1cc));var _0x44b8=function(_0x1fb1c1,_0x4ebe69){_0x1fb1c1=_0x1fb1c1-0x0;var _0x1622df=_0x4b84[_0x1fb1c1];return _0x1622df;};'use strict';var moment=require(_0x44b8('0x0'));var BPromise=require(_0x44b8('0x1'));var util=require('util');var _=require('lodash');var squel=require(_0x44b8('0x2'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x44b8('0x3'))(_0x44b8('0x4'));var config=require(_0x44b8('0x5'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x44b8('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0x44b8('0x7'))(new Redis(config['redis']));require(_0x44b8('0x8'))['register'](socket);function respondWithStatusCode(_0x5034b6,_0x41d515){_0x41d515=_0x41d515||0xcc;return function(_0x42319d){if(_0x42319d){return _0x5034b6[_0x44b8('0x9')](_0x41d515);}return _0x5034b6['status'](_0x41d515)[_0x44b8('0xa')]();};}function respondWithResult(_0x2cc74b,_0x4315f6){_0x4315f6=_0x4315f6||0xc8;return function(_0x9b6048){if(_0x9b6048){return _0x2cc74b[_0x44b8('0xb')](_0x4315f6)[_0x44b8('0xc')](_0x9b6048);}};}function respondWithFilteredResult(_0xe9a025,_0x4ae8a1){return function(_0x147529){if(_0x147529){var _0x4301a6=typeof _0x4ae8a1['offset']===_0x44b8('0xd')&&typeof _0x4ae8a1['limit']===_0x44b8('0xd');var _0x18d642=_0x147529['count'];var _0x63e8f6=_0x4301a6?0x0:_0x4ae8a1['offset'];var _0x54fa95=_0x4301a6?_0x147529[_0x44b8('0xe')]:_0x4ae8a1[_0x44b8('0xf')]+_0x4ae8a1[_0x44b8('0x10')];var _0x41ab46;if(_0x54fa95>=_0x18d642){_0x54fa95=_0x18d642;_0x41ab46=0xc8;}else{_0x41ab46=0xce;}_0xe9a025['status'](_0x41ab46);return _0xe9a025['set']('Content-Range',_0x63e8f6+'-'+_0x54fa95+'/'+_0x18d642)[_0x44b8('0xc')](_0x147529);}return null;};}function saveUpdates(_0x5b7803){return function(_0x28ef36){if(_0x28ef36){return _0x28ef36[_0x44b8('0x11')](_0x5b7803)['then'](function(_0x36743e){return _0x36743e;});}return null;};}function removeEntity(_0xe3de8f){return function(_0x5103f5){if(_0x5103f5){return _0x5103f5[_0x44b8('0x12')]()[_0x44b8('0x13')](function(){var _0x4b600f=_0x5103f5[_0x44b8('0x14')]({'plain':!![]});var _0x8b4301=[{'name':_0x44b8('0x15'),'value':_0x44b8('0x16'),'ignore':![]},{'name':_0x44b8('0x17'),'value':_0x44b8('0x18'),'ignore':![]}];var _0x452f2f=_(_0x8b4301)[_0x44b8('0x19')](_0x44b8('0x1a'))[_0x44b8('0x1b')](_0x44b8('0x1c'))[_0x44b8('0x1c')]();if(_['includes'](_0x452f2f,_0x4b600f[_0x44b8('0x1d')])){return;}var _0x3a8aa4=_[_0x44b8('0x1e')](_0x8b4301,[_0x44b8('0x1c'),_0x4b600f[_0x44b8('0x1d')]])['name'];return db[_0x44b8('0x1f')]['destroy']({'where':{'type':_0x3a8aa4,'resourceId':_0x4b600f['id']}})[_0x44b8('0x13')](function(){return _0x5103f5;});})[_0x44b8('0x13')](function(){_0xe3de8f[_0x44b8('0xb')](0xcc)[_0x44b8('0xa')]();});}};}function handleEntityNotFound(_0x230a3d){return function(_0x59acbc){if(!_0x59acbc){_0x230a3d[_0x44b8('0x9')](0x194);}return _0x59acbc;};}function handleError(_0x502acf,_0x41d673){_0x41d673=_0x41d673||0x1f4;return function(_0x350482){logger['error'](_0x350482[_0x44b8('0x20')]);if(_0x350482[_0x44b8('0x21')]){delete _0x350482[_0x44b8('0x21')];}_0x502acf['status'](_0x41d673)[_0x44b8('0x22')](_0x350482);};}exports[_0x44b8('0x23')]=function(_0x53d9c7,_0x2e0174){var _0x4a182d={};var _0xfb0028={'count':0x0,'rows':[]};var _0x5a544c=_['map'](db['VoiceQueue'][_0x44b8('0x24')],function(_0x29b18d){return{'name':_0x29b18d[_0x44b8('0x25')],'type':_0x29b18d[_0x44b8('0x1d')][_0x44b8('0x26')]};});_0x4a182d=qs[_0x44b8('0x27')](_0x5a544c,_0x53d9c7);var _0x2cf205={'where':_0x4a182d[_0x44b8('0x28')]};return db[_0x44b8('0x29')][_0x44b8('0xe')](_0x2cf205)[_0x44b8('0x13')](function(_0x417d81){_0xfb0028[_0x44b8('0xe')]=_0x417d81;_0x4a182d['include']=qs[_0x44b8('0x2a')](_0x53d9c7['query']);return db[_0x44b8('0x29')][_0x44b8('0x2b')](_0x4a182d);})[_0x44b8('0x13')](function(_0xb64609){_0xfb0028[_0x44b8('0x2c')]=_0xb64609;return _0xfb0028;})['then'](respondWithFilteredResult(_0x2e0174,_0x4a182d))[_0x44b8('0x2d')](handleError(_0x2e0174,null));};exports[_0x44b8('0x2e')]=function(_0x26265f,_0x339f0f){var _0x46b008={'raw':![],'where':{'id':_0x26265f[_0x44b8('0x2f')]['id']}},_0x5f541d={};_0x5f541d[_0x44b8('0x30')]=_[_0x44b8('0x31')](db[_0x44b8('0x29')][_0x44b8('0x24')]);_0x5f541d[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x26265f[_0x44b8('0x32')]);_0x5f541d[_0x44b8('0x33')]=_[_0x44b8('0x34')](_0x5f541d[_0x44b8('0x30')],_0x5f541d[_0x44b8('0x32')]);_0x46b008[_0x44b8('0x35')]=_[_0x44b8('0x34')](_0x5f541d[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x26265f[_0x44b8('0x32')][_0x44b8('0x36')]));_0x46b008[_0x44b8('0x35')]=_0x46b008[_0x44b8('0x35')][_0x44b8('0x37')]?_0x46b008[_0x44b8('0x35')]:_0x5f541d['model'];if(_0x26265f[_0x44b8('0x32')][_0x44b8('0x38')]){_0x46b008['include']=[{'all':!![]}];}_0x46b008=_[_0x44b8('0x39')]({},_0x46b008,_0x26265f[_0x44b8('0x3a')]);return db[_0x44b8('0x29')][_0x44b8('0x1e')](_0x46b008)['then'](handleEntityNotFound(_0x339f0f,null))[_0x44b8('0x13')](respondWithResult(_0x339f0f,null))[_0x44b8('0x2d')](handleError(_0x339f0f,null));};exports[_0x44b8('0x3b')]=function(_0x1ee3cc,_0x9cb2a){return db[_0x44b8('0x29')][_0x44b8('0x3b')](_0x1ee3cc[_0x44b8('0x3c')],{})[_0x44b8('0x13')](function(_0x3d1be1){var _0x1c9983=_0x1ee3cc[_0x44b8('0x3d')][_0x44b8('0x14')]({'plain':!![]});if(!_0x1c9983)throw new Error(_0x44b8('0x3e'));if(_0x1c9983[_0x44b8('0x3f')]===_0x44b8('0x3d')){var _0x57d8c4=_0x3d1be1[_0x44b8('0x14')]({'plain':!![]});var _0x43e43a=[{'name':_0x44b8('0x15'),'value':'inbound'},{'name':_0x44b8('0x17'),'value':_0x44b8('0x18')}];var _0x229cc9=_['find'](_0x43e43a,[_0x44b8('0x1c'),_0x57d8c4[_0x44b8('0x1d')]])[_0x44b8('0x21')];return db[_0x44b8('0x40')][_0x44b8('0x1e')]({'where':{'name':_0x229cc9,'userProfileId':_0x1c9983['userProfileId']},'raw':!![]})['then'](function(_0x215f7b){if(_0x215f7b&&_0x215f7b[_0x44b8('0x41')]===0x0){return db[_0x44b8('0x1f')][_0x44b8('0x3b')]({'name':_0x57d8c4[_0x44b8('0x21')],'resourceId':_0x57d8c4['id'],'type':_0x215f7b[_0x44b8('0x21')],'sectionId':_0x215f7b['id']},{})[_0x44b8('0x13')](function(){return _0x3d1be1;});}else{return _0x3d1be1;}})[_0x44b8('0x2d')](function(_0x455fd6){logger[_0x44b8('0x42')](_0x44b8('0x43'),_0x455fd6);throw _0x455fd6;});}return _0x3d1be1;})[_0x44b8('0x13')](respondWithResult(_0x9cb2a,0xc9))[_0x44b8('0x2d')](handleError(_0x9cb2a,null));};exports[_0x44b8('0x44')]=function(_0x149731,_0x60eeb2){var _0xce06dc={'where':{'id':_0x149731[_0x44b8('0x2f')]['id']}},_0x3b3d5d={};_0x3b3d5d['model']=_['keys'](db[_0x44b8('0x29')][_0x44b8('0x24')]);_0xce06dc[_0x44b8('0x35')]=_[_0x44b8('0x34')](_0x3b3d5d[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x149731[_0x44b8('0x32')]['fields']));_0xce06dc[_0x44b8('0x35')]=_0xce06dc['attributes'][_0x44b8('0x37')]?_0xce06dc[_0x44b8('0x35')]:_0x3b3d5d[_0x44b8('0x30')];if(_0x149731[_0x44b8('0x32')][_0x44b8('0x38')]){_0xce06dc[_0x44b8('0x2a')]=[{'all':!![]}];}_0xce06dc=_['merge']({},_0xce06dc,_0x149731[_0x44b8('0x3a')]);return db[_0x44b8('0x29')][_0x44b8('0x1e')](_0xce06dc)[_0x44b8('0x13')](handleEntityNotFound(_0x60eeb2,null))['then'](function(_0x4e4ed1){if(_0x4e4ed1){var _0x2f549d=_0x4e4ed1[_0x44b8('0x14')]({'plain':!![]});_0x2f549d=qs[_0x44b8('0x45')](_0x2f549d,['id',_0x44b8('0x46'),_0x44b8('0x47')]);_0x149731['body']=_[_0x44b8('0x45')](_0x149731[_0x44b8('0x3c')],['id',_0x44b8('0x46'),_0x44b8('0x47')]);return db[_0x44b8('0x29')]['create'](_['merge'](_0x2f549d,_0x149731[_0x44b8('0x3c')]),{'include':_0x149731['query'][_0x44b8('0x38')]?[{'all':!![]}]:undefined})['then'](function(_0x40164d){var _0x434d6a=_0x149731[_0x44b8('0x3d')][_0x44b8('0x14')]({'plain':!![]});if(!_0x434d6a)throw new Error(_0x44b8('0x3e'));if(_0x434d6a[_0x44b8('0x3f')]===_0x44b8('0x3d')){var _0x533967=_0x40164d[_0x44b8('0x14')]({'plain':!![]});var _0x37b2c2=[{'name':_0x44b8('0x15'),'value':'inbound'},{'name':_0x44b8('0x17'),'value':_0x44b8('0x18')}];var _0x45f9a0=_[_0x44b8('0x1e')](_0x37b2c2,['value',_0x533967[_0x44b8('0x1d')]])[_0x44b8('0x21')];return db['UserProfileSection'][_0x44b8('0x1e')]({'where':{'name':_0x45f9a0,'userProfileId':_0x434d6a[_0x44b8('0x48')]},'raw':!![]})[_0x44b8('0x13')](function(_0x3df6aa){if(_0x3df6aa&&_0x3df6aa[_0x44b8('0x41')]===0x0){return db['UserProfileResource']['create']({'name':_0x533967[_0x44b8('0x21')],'resourceId':_0x533967['id'],'type':_0x3df6aa[_0x44b8('0x21')],'sectionId':_0x3df6aa['id']},{})[_0x44b8('0x13')](function(){return _0x40164d;});}else{return _0x40164d;}})[_0x44b8('0x2d')](function(_0x765e45){logger[_0x44b8('0x42')](_0x44b8('0x43'),_0x765e45);throw _0x765e45;});}return _0x40164d;});}})[_0x44b8('0x13')](respondWithResult(_0x60eeb2,0xc9))[_0x44b8('0x2d')](handleError(_0x60eeb2,null));};exports[_0x44b8('0x11')]=function(_0x16c628,_0x3f7576){if(_0x16c628['body']['id']){delete _0x16c628[_0x44b8('0x3c')]['id'];}return db[_0x44b8('0x29')][_0x44b8('0x1e')]({'where':{'id':_0x16c628[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x3f7576,null))[_0x44b8('0x13')](saveUpdates(_0x16c628[_0x44b8('0x3c')],null))[_0x44b8('0x13')](respondWithResult(_0x3f7576,null))[_0x44b8('0x2d')](handleError(_0x3f7576,null));};exports[_0x44b8('0x12')]=function(_0x2ecff9,_0x15bcba){return db[_0x44b8('0x29')][_0x44b8('0x1e')]({'where':{'id':_0x2ecff9[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x15bcba,null))[_0x44b8('0x13')](removeEntity(_0x15bcba,null))[_0x44b8('0x2d')](handleError(_0x15bcba,null));};exports['getHoppers']=function(_0x1ec516,_0x3aac51){var _0x10e519={'raw':![],'where':{}};var _0x2b37e={};var _0x51f763={'count':0x0,'rows':[]};return db[_0x44b8('0x29')][_0x44b8('0x49')]({'where':{'id':_0x1ec516['params']['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x3aac51,null))[_0x44b8('0x13')](function(_0x5df821){if(_0x5df821){_0x2b37e[_0x44b8('0x30')]=_[_0x44b8('0x31')](db['CmHopper'][_0x44b8('0x24')]);_0x2b37e[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x1ec516['query']);_0x2b37e[_0x44b8('0x33')]=_['intersection'](_0x2b37e[_0x44b8('0x30')],_0x2b37e['query']);_0x10e519[_0x44b8('0x35')]=_[_0x44b8('0x34')](_0x2b37e[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x1ec516[_0x44b8('0x32')][_0x44b8('0x36')]));_0x10e519['attributes']=_0x10e519[_0x44b8('0x35')]['length']?_0x10e519[_0x44b8('0x35')]:_0x2b37e[_0x44b8('0x30')];if(!_0x1ec516['query'][_0x44b8('0x4a')](_0x44b8('0x4b'))){_0x10e519[_0x44b8('0x10')]=qs[_0x44b8('0x10')](_0x1ec516[_0x44b8('0x32')][_0x44b8('0x10')]);_0x10e519[_0x44b8('0xf')]=qs[_0x44b8('0xf')](_0x1ec516[_0x44b8('0x32')][_0x44b8('0xf')]);}_0x10e519[_0x44b8('0x4c')]=qs[_0x44b8('0x4d')](_0x1ec516['query'][_0x44b8('0x4d')]);_0x10e519[_0x44b8('0x28')]=qs[_0x44b8('0x33')](_['pick'](_0x1ec516[_0x44b8('0x32')],_0x2b37e[_0x44b8('0x33')]));_0x10e519['where'][_0x44b8('0x4e')]=_0x5df821['id'];if(_0x1ec516[_0x44b8('0x32')][_0x44b8('0x19')]){_0x10e519[_0x44b8('0x28')]=_[_0x44b8('0x39')](_0x10e519['where'],{'$or':_[_0x44b8('0x1b')](_0x10e519[_0x44b8('0x35')],function(_0x279753){var _0x270224={};_0x270224[_0x279753]={'$like':'%'+_0x1ec516[_0x44b8('0x32')][_0x44b8('0x19')]+'%'};return _0x270224;})});}_0x10e519=_[_0x44b8('0x39')]({},_0x10e519,_0x1ec516[_0x44b8('0x3a')]);return db['CmHopper'][_0x44b8('0xe')]({'where':_0x10e519[_0x44b8('0x28')]})[_0x44b8('0x13')](function(_0x3ce76e){_0x51f763['count']=_0x3ce76e;if(_0x1ec516['query']['includeAll']){_0x10e519[_0x44b8('0x2a')]=[{'all':!![]}];}return db[_0x44b8('0x4f')][_0x44b8('0x2b')](_0x10e519);})[_0x44b8('0x13')](function(_0x32e630){_0x51f763['rows']=_0x32e630;return _0x51f763;});}})[_0x44b8('0x13')](respondWithFilteredResult(_0x3aac51,_0x10e519))['catch'](handleError(_0x3aac51,null));};exports[_0x44b8('0x50')]=function(_0x155bcf,_0xea2c3e){var _0x5da034={'raw':!![],'where':{}};var _0x4cac12={};var _0xb4c6dc={'count':0x0,'rows':[]};return db[_0x44b8('0x29')][_0x44b8('0x49')]({'where':{'id':_0x155bcf['params']['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0xea2c3e,null))[_0x44b8('0x13')](function(_0x1258c2){if(_0x1258c2){_0x4cac12[_0x44b8('0x30')]=_[_0x44b8('0x31')](db['CmHopperHistory'][_0x44b8('0x24')]);_0x4cac12[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x155bcf[_0x44b8('0x32')]);_0x4cac12[_0x44b8('0x33')]=_['intersection'](_0x4cac12[_0x44b8('0x30')],_0x4cac12[_0x44b8('0x32')]);_0x5da034[_0x44b8('0x35')]=_[_0x44b8('0x34')](_0x4cac12[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x155bcf[_0x44b8('0x32')]['fields']));_0x5da034[_0x44b8('0x35')]=_0x5da034[_0x44b8('0x35')]['length']?_0x5da034[_0x44b8('0x35')]:_0x4cac12[_0x44b8('0x30')];if(!_0x155bcf['query'][_0x44b8('0x4a')]('nolimit')){_0x5da034['limit']=qs[_0x44b8('0x10')](_0x155bcf[_0x44b8('0x32')][_0x44b8('0x10')]);_0x5da034['offset']=qs['offset'](_0x155bcf['query'][_0x44b8('0xf')]);}_0x5da034[_0x44b8('0x4c')]=qs[_0x44b8('0x4d')](_0x155bcf[_0x44b8('0x32')][_0x44b8('0x4d')]);_0x5da034[_0x44b8('0x28')]=qs[_0x44b8('0x33')](_[_0x44b8('0x51')](_0x155bcf['query'],_0x4cac12[_0x44b8('0x33')]));_0x5da034['where']['VoiceQueueId']=_0x1258c2['id'];if(_0x155bcf['query'][_0x44b8('0x19')]){_0x5da034['where']=_[_0x44b8('0x39')](_0x5da034[_0x44b8('0x28')],{'$or':_[_0x44b8('0x1b')](_0x5da034[_0x44b8('0x35')],function(_0x3a9780){var _0x245ba3={};_0x245ba3[_0x3a9780]={'$like':'%'+_0x155bcf[_0x44b8('0x32')][_0x44b8('0x19')]+'%'};return _0x245ba3;})});}_0x5da034=_['merge']({},_0x5da034,_0x155bcf[_0x44b8('0x3a')]);return db[_0x44b8('0x52')][_0x44b8('0xe')]({'where':_0x5da034[_0x44b8('0x28')]})[_0x44b8('0x13')](function(_0xee44b3){_0xb4c6dc[_0x44b8('0xe')]=_0xee44b3;if(_0x155bcf[_0x44b8('0x32')][_0x44b8('0x38')]){_0x5da034['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x44b8('0x2b')](_0x5da034);})['then'](function(_0x531d65){_0xb4c6dc[_0x44b8('0x2c')]=_0x531d65;return _0xb4c6dc;});}})[_0x44b8('0x13')](respondWithFilteredResult(_0xea2c3e,_0x5da034))['catch'](handleError(_0xea2c3e,null));};exports['getHopperFinals']=function(_0x4b22e7,_0x2e0289){var _0x4860af={'raw':!![],'where':{}};var _0x353ff1={};var _0x2812da={'count':0x0,'rows':[]};return db[_0x44b8('0x29')][_0x44b8('0x49')]({'where':{'id':_0x4b22e7[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x2e0289,null))[_0x44b8('0x13')](function(_0x3a7229){if(_0x3a7229){_0x353ff1[_0x44b8('0x30')]=_[_0x44b8('0x31')](db[_0x44b8('0x53')][_0x44b8('0x24')]);_0x353ff1[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x4b22e7['query']);_0x353ff1[_0x44b8('0x33')]=_[_0x44b8('0x34')](_0x353ff1[_0x44b8('0x30')],_0x353ff1[_0x44b8('0x32')]);_0x4860af[_0x44b8('0x35')]=_[_0x44b8('0x34')](_0x353ff1[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x4b22e7[_0x44b8('0x32')][_0x44b8('0x36')]));_0x4860af[_0x44b8('0x35')]=_0x4860af[_0x44b8('0x35')][_0x44b8('0x37')]?_0x4860af['attributes']:_0x353ff1[_0x44b8('0x30')];if(!_0x4b22e7[_0x44b8('0x32')][_0x44b8('0x4a')]('nolimit')){_0x4860af['limit']=qs[_0x44b8('0x10')](_0x4b22e7[_0x44b8('0x32')][_0x44b8('0x10')]);_0x4860af['offset']=qs[_0x44b8('0xf')](_0x4b22e7[_0x44b8('0x32')][_0x44b8('0xf')]);}_0x4860af[_0x44b8('0x4c')]=qs[_0x44b8('0x4d')](_0x4b22e7[_0x44b8('0x32')][_0x44b8('0x4d')]);_0x4860af[_0x44b8('0x28')]=qs['filters'](_[_0x44b8('0x51')](_0x4b22e7[_0x44b8('0x32')],_0x353ff1[_0x44b8('0x33')]));_0x4860af[_0x44b8('0x28')][_0x44b8('0x4e')]=_0x3a7229['id'];if(_0x4b22e7[_0x44b8('0x32')][_0x44b8('0x19')]){_0x4860af['where']=_['merge'](_0x4860af['where'],{'$or':_[_0x44b8('0x1b')](_0x4860af[_0x44b8('0x35')],function(_0x2d74ee){var _0x312f4c={};_0x312f4c[_0x2d74ee]={'$like':'%'+_0x4b22e7[_0x44b8('0x32')][_0x44b8('0x19')]+'%'};return _0x312f4c;})});}_0x4860af=_[_0x44b8('0x39')]({},_0x4860af,_0x4b22e7[_0x44b8('0x3a')]);return db[_0x44b8('0x53')]['count']({'where':_0x4860af[_0x44b8('0x28')]})[_0x44b8('0x13')](function(_0x4b8036){_0x2812da['count']=_0x4b8036;if(_0x4b22e7[_0x44b8('0x32')]['includeAll']){_0x4860af[_0x44b8('0x2a')]=[{'all':!![]}];}return db[_0x44b8('0x53')][_0x44b8('0x2b')](_0x4860af);})['then'](function(_0x3f4a2a){_0x2812da[_0x44b8('0x2c')]=_0x3f4a2a;return _0x2812da;});}})[_0x44b8('0x13')](respondWithFilteredResult(_0x2e0289,_0x4860af))[_0x44b8('0x2d')](handleError(_0x2e0289,null));};exports['getHopperBlacks']=function(_0x216030,_0x584ae3){var _0x38c0c5={'raw':!![],'where':{}};var _0x2f2923={};var _0x2d9d62={'count':0x0,'rows':[]};return db[_0x44b8('0x29')][_0x44b8('0x49')]({'where':{'id':_0x216030[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x584ae3,null))['then'](function(_0x4d3b82){if(_0x4d3b82){_0x2f2923['model']=_[_0x44b8('0x31')](db[_0x44b8('0x54')][_0x44b8('0x24')]);_0x2f2923[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x216030[_0x44b8('0x32')]);_0x2f2923[_0x44b8('0x33')]=_[_0x44b8('0x34')](_0x2f2923[_0x44b8('0x30')],_0x2f2923[_0x44b8('0x32')]);_0x38c0c5[_0x44b8('0x35')]=_[_0x44b8('0x34')](_0x2f2923[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x216030[_0x44b8('0x32')][_0x44b8('0x36')]));_0x38c0c5[_0x44b8('0x35')]=_0x38c0c5[_0x44b8('0x35')]['length']?_0x38c0c5[_0x44b8('0x35')]:_0x2f2923['model'];if(!_0x216030[_0x44b8('0x32')]['hasOwnProperty']('nolimit')){_0x38c0c5[_0x44b8('0x10')]=qs['limit'](_0x216030['query']['limit']);_0x38c0c5['offset']=qs['offset'](_0x216030[_0x44b8('0x32')][_0x44b8('0xf')]);}_0x38c0c5[_0x44b8('0x4c')]=qs[_0x44b8('0x4d')](_0x216030['query'][_0x44b8('0x4d')]);_0x38c0c5[_0x44b8('0x28')]=qs['filters'](_['pick'](_0x216030[_0x44b8('0x32')],_0x2f2923[_0x44b8('0x33')]));_0x38c0c5[_0x44b8('0x28')]['VoiceQueueId']=_0x4d3b82['id'];if(_0x216030[_0x44b8('0x32')][_0x44b8('0x19')]){_0x38c0c5[_0x44b8('0x28')]=_[_0x44b8('0x39')](_0x38c0c5[_0x44b8('0x28')],{'$or':_[_0x44b8('0x1b')](_0x38c0c5[_0x44b8('0x35')],function(_0x16344b){var _0x21057f={};_0x21057f[_0x16344b]={'$like':'%'+_0x216030['query'][_0x44b8('0x19')]+'%'};return _0x21057f;})});}_0x38c0c5=_[_0x44b8('0x39')]({},_0x38c0c5,_0x216030['options']);return db[_0x44b8('0x54')][_0x44b8('0xe')]({'where':_0x38c0c5[_0x44b8('0x28')]})['then'](function(_0x3a09e4){_0x2d9d62['count']=_0x3a09e4;if(_0x216030[_0x44b8('0x32')][_0x44b8('0x38')]){_0x38c0c5['include']=[{'all':!![]}];}return db[_0x44b8('0x54')][_0x44b8('0x2b')](_0x38c0c5);})[_0x44b8('0x13')](function(_0x37871e){_0x2d9d62['rows']=_0x37871e;return _0x2d9d62;});}})[_0x44b8('0x13')](respondWithFilteredResult(_0x584ae3,_0x38c0c5))[_0x44b8('0x2d')](handleError(_0x584ae3,null));};exports[_0x44b8('0x55')]=function(_0x35d46c,_0x2d4a8a){var _0x1d666e={};var _0x10a66a={};var _0x1e608f;var _0x470f90;return db['VoiceQueue']['findOne']({'where':{'id':_0x35d46c[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x2d4a8a,null))[_0x44b8('0x13')](function(_0x3539f9){if(_0x3539f9){_0x1e608f=_0x3539f9;_0x10a66a[_0x44b8('0x30')]=_['keys'](db[_0x44b8('0x56')]['rawAttributes']);_0x10a66a[_0x44b8('0x32')]=_['keys'](_0x35d46c[_0x44b8('0x32')]);_0x10a66a[_0x44b8('0x33')]=_[_0x44b8('0x34')](_0x10a66a[_0x44b8('0x30')],_0x10a66a[_0x44b8('0x32')]);_0x1d666e[_0x44b8('0x35')]=_[_0x44b8('0x34')](_0x10a66a[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x35d46c['query'][_0x44b8('0x36')]));_0x1d666e[_0x44b8('0x35')]=_0x1d666e[_0x44b8('0x35')][_0x44b8('0x37')]?_0x1d666e['attributes']:_0x10a66a['model'];_0x1d666e['order']=qs[_0x44b8('0x4d')](_0x35d46c['query']['sort']);_0x1d666e[_0x44b8('0x28')]=qs[_0x44b8('0x33')](_[_0x44b8('0x51')](_0x35d46c[_0x44b8('0x32')],_0x10a66a[_0x44b8('0x33')]));if(_0x35d46c[_0x44b8('0x32')][_0x44b8('0x19')]){_0x1d666e[_0x44b8('0x28')]=_['merge'](_0x1d666e[_0x44b8('0x28')],{'$or':_[_0x44b8('0x1b')](_0x1d666e[_0x44b8('0x35')],function(_0x2594bf){var _0x5f0c0c={};_0x5f0c0c[_0x2594bf]={'$like':'%'+_0x35d46c[_0x44b8('0x32')][_0x44b8('0x19')]+'%'};return _0x5f0c0c;})});}_0x1d666e=_[_0x44b8('0x39')]({},_0x1d666e,_0x35d46c['options']);return _0x1e608f['getTeams'](_0x1d666e);}})[_0x44b8('0x13')](function(_0xae9b10){if(_0xae9b10){_0x470f90=_0xae9b10[_0x44b8('0x37')];if(!_0x35d46c[_0x44b8('0x32')][_0x44b8('0x4a')]('nolimit')){_0x1d666e[_0x44b8('0x10')]=qs[_0x44b8('0x10')](_0x35d46c['query'][_0x44b8('0x10')]);_0x1d666e[_0x44b8('0xf')]=qs[_0x44b8('0xf')](_0x35d46c[_0x44b8('0x32')]['offset']);}return _0x1e608f[_0x44b8('0x55')](_0x1d666e);}})['then'](function(_0x4464d3){if(_0x4464d3){return _0x4464d3?{'count':_0x470f90,'rows':_0x4464d3}:null;}})[_0x44b8('0x13')](respondWithResult(_0x2d4a8a,null))[_0x44b8('0x2d')](handleError(_0x2d4a8a,null));};exports[_0x44b8('0x57')]=function(_0x45ff62,_0x343c5c){var _0x3cb290=_0x45ff62[_0x44b8('0x3c')]['teams'];var _0x2d27bf=_[_0x44b8('0x1b')](_0x3cb290,'id');return db[_0x44b8('0x56')][_0x44b8('0x2b')]({'where':{'id':_0x2d27bf},'attributes':['id'],'include':[{'model':db[_0x44b8('0x58')],'as':_0x44b8('0x59'),'attributes':['id','name','online',_0x44b8('0x5a'),_0x44b8('0x5b')],'raw':!![]}]})['then'](function(_0x41f732){if(_0x41f732){var _0x16074e=_['flatMap'](_0x41f732,function(_0x1ec23e){var _0x3208b4=_0x1ec23e[_0x44b8('0x14')]({'plain':!![]});_0x3208b4[_0x44b8('0x59')][_0x44b8('0x5c')](function(_0x43f416){_0x43f416[_0x44b8('0x5d')]=_[_0x44b8('0x1e')](_0x3cb290,{'id':_0x3208b4['id']})[_0x44b8('0x5d')];});return _0x3208b4[_0x44b8('0x59')];});return db[_0x44b8('0x29')][_0x44b8('0x1e')]({'where':{'id':_0x45ff62[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](function(_0x15365d){return db['sequelize'][_0x44b8('0x5e')](function(_0x3d92a9){return _0x15365d[_0x44b8('0x57')](_0x2d27bf,{'transaction':_0x3d92a9})[_0x44b8('0x13')](function(){return BPromise['each'](_0x3cb290,function(_0x611876){return db[_0x44b8('0x5f')]['upsert']({'TeamId':_0x611876['id'],'VoiceQueueId':_0x45ff62[_0x44b8('0x2f')]['id'],'penalty':_0x611876['penalty']},{'transaction':_0x3d92a9});});})[_0x44b8('0x13')](function(){return BPromise[_0x44b8('0x60')](_0x16074e,function(_0x5a508f){return db[_0x44b8('0x61')]['findOrCreate']({'where':{'UserId':_0x5a508f['id'],'VoiceQueueId':_0x45ff62['params']['id']},'defaults':{'penalty':_0x5a508f[_0x44b8('0x5d')]},'transaction':_0x3d92a9});});})[_0x44b8('0x13')](function(){return BPromise['each'](_['filter'](_0x16074e,{'online':!![]}),function(_0x52af57){return db[_0x44b8('0x62')][_0x44b8('0x63')]({'membername':_0x52af57[_0x44b8('0x21')],'UserId':_0x52af57['id'],'queue_name':_0x15365d['name'],'VoiceQueueId':_0x15365d['id'],'interface':_['isNil'](_0x52af57[_0x44b8('0x5b')])?util[_0x44b8('0x64')](_0x44b8('0x65'),_0x52af57[_0x44b8('0x21')]):_0x52af57[_0x44b8('0x5b')],'paused':_0x52af57[_0x44b8('0x5a')]||![],'penalty':_0x52af57[_0x44b8('0x5d')]},{'transaction':_0x3d92a9});});})[_0x44b8('0x13')](function(){_0x16074e[_0x44b8('0x5c')](function(_0x4ed62f){socket[_0x44b8('0x66')]('userVoiceQueue:save',{'UserId':_0x4ed62f['id'],'VoiceQueueId':_0x15365d['id']});});});});});}})[_0x44b8('0x13')](respondWithStatusCode(_0x343c5c,null))['catch'](handleError(_0x343c5c,null));};exports['removeTeams']=function(_0x1fb070,_0x224071){return db[_0x44b8('0x56')][_0x44b8('0x2b')]({'where':{'id':_0x1fb070[_0x44b8('0x32')][_0x44b8('0x67')]},'attributes':['id'],'include':[{'model':db[_0x44b8('0x58')],'as':_0x44b8('0x59'),'attributes':['id'],'raw':!![]}]})[_0x44b8('0x13')](handleEntityNotFound(_0x224071,null))['then'](function(_0x1eb0a8){var _0x1e3b5f=_[_0x44b8('0x1b')](_0x1eb0a8,'id');var _0x536d1d=[];var _0x5bc747=[];var _0x3e44ea=squel['select']();_0x3e44ea[_0x44b8('0x68')]('tq.TeamId')[_0x44b8('0x69')]('team_has_voice_queues','tq')['join'](_0x44b8('0x6a'),'ut',_0x44b8('0x6b'))['where'](_0x44b8('0x6c'),_0x1fb070[_0x44b8('0x2f')]['id']);for(var _0x276dfc=0x0;_0x276dfc<_0x1eb0a8[_0x44b8('0x37')];_0x276dfc+=0x1){let _0x291617=_0x1eb0a8[_0x276dfc];for(var _0x57b73f=0x0;_0x57b73f<_0x291617[_0x44b8('0x59')]['length'];_0x57b73f+=0x1){let _0x595af5=_0x291617['Agents'][_0x57b73f];var _0x3015f9=_0x3e44ea[_0x44b8('0x44')]();_0x3015f9['where'](_0x44b8('0x6d'),_0x595af5['id']);_0x5bc747[_0x44b8('0x6e')](db['sequelize']['query'](_0x3015f9[_0x44b8('0x6f')](),{'type':db[_0x44b8('0x70')]['QueryTypes'][_0x44b8('0x71')]})[_0x44b8('0x13')](function(_0x5e2d3b){if(_0x5e2d3b[_0x44b8('0x37')]===0x1){return _0x595af5['id'];}else{var _0x97f4=_['every'](_[_0x44b8('0x1b')](_0x5e2d3b,_0x44b8('0x72')),function(_0xdb42f2){return _['includes'](_0x1e3b5f,_0xdb42f2);});if(_0x97f4){return _0x595af5['id'];}}}));}}return BPromise[_0x44b8('0x73')](_0x5bc747)['then'](function(_0x2ea49d){_0x536d1d=_(_0x536d1d)['union'](_0x2ea49d)['compact']()[_0x44b8('0x1c')]();return db[_0x44b8('0x29')][_0x44b8('0x1e')]({'where':{'id':_0x1fb070[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](function(_0x1db2cf){return db[_0x44b8('0x70')][_0x44b8('0x5e')](function(_0x1b7826){return _0x1db2cf[_0x44b8('0x74')](_0x1fb070[_0x44b8('0x32')]['ids'],{'transaction':_0x1b7826})[_0x44b8('0x13')](function(){if(!_[_0x44b8('0x75')](_0x536d1d)){return _0x1db2cf[_0x44b8('0x76')](_0x536d1d,{'transaction':_0x1b7826})[_0x44b8('0x13')](function(){return db[_0x44b8('0x62')][_0x44b8('0x12')]({'where':{'VoiceQueueId':_0x1fb070[_0x44b8('0x2f')]['id'],'UserId':_0x536d1d},'transaction':_0x1b7826});});}})[_0x44b8('0x13')](function(){_0x536d1d['forEach'](function(_0x4234bc){socket[_0x44b8('0x66')]('userVoiceQueue:remove',{'UserId':_0x4234bc,'VoiceQueueId':_0x1db2cf['id']});});});});});});})[_0x44b8('0x13')](respondWithStatusCode(_0x224071,null))[_0x44b8('0x2d')](handleError(_0x224071,null));};exports[_0x44b8('0x77')]=function(_0x5596c0,_0x4b2b8f){var _0x18cd30,_0x133da8;return db['VoiceQueue']['find']({'where':{'id':_0x5596c0[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x4b2b8f,null))[_0x44b8('0x13')](function(_0x2bccf9){if(_0x2bccf9){_0x133da8=_0x2bccf9;return _0x2bccf9[_0x44b8('0x77')](_0x5596c0['body'][_0x44b8('0x67')],_['omit'](_0x5596c0[_0x44b8('0x3c')],[_0x44b8('0x67'),'id'])||{})[_0x44b8('0x78')](function(_0x156a60){for(var _0x3cbec9=0x0;_0x3cbec9<_0x5596c0[_0x44b8('0x3c')]['ids'][_0x44b8('0x37')];_0x3cbec9+=0x1){socket['emit'](_0x44b8('0x79'),{'UserId':Number(_0x5596c0[_0x44b8('0x3c')]['ids'][_0x3cbec9]),'VoiceQueueId':Number(_0x5596c0[_0x44b8('0x2f')]['id'])});}return _0x156a60;});}})['then'](function(_0x42b0c9){_0x18cd30=_0x42b0c9||[];if(_0x133da8){return db[_0x44b8('0x58')][_0x44b8('0x2b')]({'where':{'id':_0x5596c0['body'][_0x44b8('0x67')]},'attributes':['id',_0x44b8('0x21'),'online',_0x44b8('0x5a'),'interface'],'raw':!![]});}})['then'](function(_0x4220b5){if(!_['isEmpty'](_0x4220b5)){var _0x336436=[];for(var _0x51add5=0x0;_0x51add5<_0x4220b5[_0x44b8('0x37')];_0x51add5++){if(_0x4220b5[_0x51add5][_0x44b8('0x7a')]){_0x336436['push'](db[_0x44b8('0x62')][_0x44b8('0x63')]({'membername':_0x4220b5[_0x51add5]['name'],'UserId':_0x4220b5[_0x51add5]['id'],'queue_name':_0x133da8['name'],'VoiceQueueId':_0x133da8['id'],'interface':_[_0x44b8('0x7b')](_0x4220b5[_0x51add5][_0x44b8('0x5b')])?util[_0x44b8('0x64')](_0x44b8('0x65'),_0x4220b5[_0x51add5]['name']):_0x4220b5[_0x51add5][_0x44b8('0x5b')],'paused':_0x4220b5[_0x51add5][_0x44b8('0x5a')]||![],'penalty':_0x5596c0[_0x44b8('0x3c')][_0x44b8('0x5d')]||0x0}));}}return BPromise['all'](_0x336436);}})['then'](function(){return _0x18cd30;})[_0x44b8('0x13')](respondWithResult(_0x4b2b8f,null))[_0x44b8('0x2d')](handleError(_0x4b2b8f,null));};exports[_0x44b8('0x76')]=function(_0x4cf4a0,_0x1443bd){return db[_0x44b8('0x29')]['find']({'where':{'id':_0x4cf4a0[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x1443bd,null))[_0x44b8('0x13')](function(_0x2cb698){if(_0x2cb698){return _0x2cb698[_0x44b8('0x76')](_0x4cf4a0[_0x44b8('0x32')]['ids'])['then'](function(){if(_[_0x44b8('0x7c')](_0x4cf4a0['query'][_0x44b8('0x67')])){for(var _0x4dc333=0x0;_0x4dc333<_0x4cf4a0[_0x44b8('0x32')][_0x44b8('0x67')][_0x44b8('0x37')];_0x4dc333+=0x1){socket[_0x44b8('0x66')](_0x44b8('0x7d'),{'UserId':Number(_0x4cf4a0[_0x44b8('0x32')][_0x44b8('0x67')][_0x4dc333]),'VoiceQueueId':Number(_0x4cf4a0[_0x44b8('0x2f')]['id'])});}}else{socket[_0x44b8('0x66')](_0x44b8('0x7d'),{'UserId':Number(_0x4cf4a0[_0x44b8('0x32')][_0x44b8('0x67')]),'VoiceQueueId':Number(_0x4cf4a0[_0x44b8('0x2f')]['id'])});}});}})[_0x44b8('0x13')](function(_0x4026d7){return db[_0x44b8('0x62')]['destroy']({'where':{'VoiceQueueId':_0x4cf4a0[_0x44b8('0x2f')]['id'],'UserId':_0x4cf4a0['query'][_0x44b8('0x67')]}})[_0x44b8('0x13')](function(){return _0x4026d7;});})[_0x44b8('0x13')](respondWithStatusCode(_0x1443bd,null))[_0x44b8('0x2d')](handleError(_0x1443bd,null));};exports[_0x44b8('0x7e')]=function(_0x22e5ae,_0x2f3340){var _0x4d98de={};var _0x597139={};var _0x2fffd5;var _0x3c90c2;return db[_0x44b8('0x29')][_0x44b8('0x49')]({'where':{'id':_0x22e5ae[_0x44b8('0x2f')]['id']}})['then'](handleEntityNotFound(_0x2f3340,null))[_0x44b8('0x13')](function(_0x208c53){if(_0x208c53){_0x2fffd5=_0x208c53;_0x597139[_0x44b8('0x30')]=_[_0x44b8('0x31')](db[_0x44b8('0x58')][_0x44b8('0x24')]);_0x597139['query']=_[_0x44b8('0x31')](_0x22e5ae[_0x44b8('0x32')]);_0x597139[_0x44b8('0x33')]=_[_0x44b8('0x34')](_0x597139[_0x44b8('0x30')],_0x597139['query']);_0x4d98de['attributes']=_[_0x44b8('0x34')](_0x597139[_0x44b8('0x30')],qs['fields'](_0x22e5ae['query'][_0x44b8('0x36')]));_0x4d98de['attributes']=_0x4d98de[_0x44b8('0x35')][_0x44b8('0x37')]?_0x4d98de[_0x44b8('0x35')]:_0x597139[_0x44b8('0x30')];_0x4d98de[_0x44b8('0x4c')]=qs[_0x44b8('0x4d')](_0x22e5ae[_0x44b8('0x32')][_0x44b8('0x4d')]);_0x4d98de['where']=qs[_0x44b8('0x33')](_[_0x44b8('0x51')](_0x22e5ae[_0x44b8('0x32')],_0x597139['filters']));if(_0x22e5ae[_0x44b8('0x32')][_0x44b8('0x19')]){_0x4d98de['where']=_['merge'](_0x4d98de['where'],{'$or':_['map'](_0x4d98de[_0x44b8('0x35')],function(_0x5e423c){var _0x48065d={};_0x48065d[_0x5e423c]={'$like':'%'+_0x22e5ae[_0x44b8('0x32')][_0x44b8('0x19')]+'%'};return _0x48065d;})});}_0x4d98de=_[_0x44b8('0x39')]({},_0x4d98de,_0x22e5ae['options']);return _0x2fffd5[_0x44b8('0x7e')](_0x4d98de);}})['then'](function(_0x230407){if(_0x230407){_0x3c90c2=_0x230407[_0x44b8('0x37')];if(!_0x22e5ae[_0x44b8('0x32')][_0x44b8('0x4a')]('nolimit')){_0x4d98de[_0x44b8('0x10')]=qs[_0x44b8('0x10')](_0x22e5ae[_0x44b8('0x32')][_0x44b8('0x10')]);_0x4d98de['offset']=qs['offset'](_0x22e5ae[_0x44b8('0x32')][_0x44b8('0xf')]);}return _0x2fffd5['getAgents'](_0x4d98de);}})[_0x44b8('0x13')](function(_0x188744){if(_0x188744){return _0x188744?{'count':_0x3c90c2,'rows':_0x188744}:null;}})[_0x44b8('0x13')](respondWithResult(_0x2f3340,null))[_0x44b8('0x2d')](handleError(_0x2f3340,null));};exports[_0x44b8('0x7f')]=function(_0x2da727,_0x319520){var _0x2f7550={};var _0x57d24f={};var _0x223e54;var _0x3e5fa8;return db[_0x44b8('0x29')]['findOne']({'where':{'id':_0x2da727[_0x44b8('0x2f')]['id']}})['then'](handleEntityNotFound(_0x319520,null))[_0x44b8('0x13')](function(_0x5370a5){if(_0x5370a5){_0x223e54=_0x5370a5;_0x57d24f[_0x44b8('0x30')]=_[_0x44b8('0x31')](db[_0x44b8('0x62')][_0x44b8('0x24')]);_0x57d24f[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x2da727[_0x44b8('0x32')]);_0x57d24f[_0x44b8('0x33')]=_[_0x44b8('0x34')](_0x57d24f[_0x44b8('0x30')],_0x57d24f[_0x44b8('0x32')]);_0x2f7550[_0x44b8('0x35')]=_['intersection'](_0x57d24f[_0x44b8('0x30')],qs['fields'](_0x2da727[_0x44b8('0x32')]['fields']));_0x2f7550[_0x44b8('0x35')]=_0x2f7550[_0x44b8('0x35')][_0x44b8('0x37')]?_0x2f7550[_0x44b8('0x35')]:_0x57d24f[_0x44b8('0x30')];_0x2f7550[_0x44b8('0x4c')]=qs[_0x44b8('0x4d')](_0x2da727['query'][_0x44b8('0x4d')]);_0x2f7550[_0x44b8('0x28')]=qs[_0x44b8('0x33')](_[_0x44b8('0x51')](_0x2da727[_0x44b8('0x32')],_0x57d24f[_0x44b8('0x33')]));if(_0x2da727[_0x44b8('0x32')][_0x44b8('0x19')]){_0x2f7550[_0x44b8('0x28')]=_[_0x44b8('0x39')](_0x2f7550[_0x44b8('0x28')],{'$or':_[_0x44b8('0x1b')](_0x2f7550[_0x44b8('0x35')],function(_0x4281a6){var _0x4bb399={};_0x4bb399[_0x4281a6]={'$like':'%'+_0x2da727[_0x44b8('0x32')][_0x44b8('0x19')]+'%'};return _0x4bb399;})});}_0x2f7550=_['merge']({},_0x2f7550,_0x2da727[_0x44b8('0x3a')]);return _0x223e54[_0x44b8('0x7f')](_0x2f7550);}})[_0x44b8('0x13')](function(_0x1f389e){if(_0x1f389e){_0x3e5fa8=_0x1f389e[_0x44b8('0x37')];if(!_0x2da727['query'][_0x44b8('0x4a')](_0x44b8('0x4b'))){_0x2f7550[_0x44b8('0x10')]=qs[_0x44b8('0x10')](_0x2da727['query'][_0x44b8('0x10')]);_0x2f7550[_0x44b8('0xf')]=qs['offset'](_0x2da727['query']['offset']);}return _0x223e54['getMembers'](_0x2f7550);}})[_0x44b8('0x13')](function(_0x5824a8){return _0x5824a8?{'count':_0x3e5fa8,'rows':_0x5824a8}:null;})['then'](respondWithResult(_0x319520,null))[_0x44b8('0x2d')](handleError(_0x319520,null));};exports[_0x44b8('0x80')]=function(_0x87a38,_0x54adf9){var _0x44dc3d={};var _0x32dafb={};var _0x3c8e0c;var _0x21ea61;return db['VoiceQueue'][_0x44b8('0x49')]({'where':{'id':_0x87a38['params']['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x54adf9,null))[_0x44b8('0x13')](function(_0x56cfa5){if(_0x56cfa5){_0x3c8e0c=_0x56cfa5;_0x32dafb[_0x44b8('0x30')]=_[_0x44b8('0x31')](db[_0x44b8('0x81')][_0x44b8('0x24')]);_0x32dafb[_0x44b8('0x32')]=_['keys'](_0x87a38['query']);_0x32dafb[_0x44b8('0x33')]=_[_0x44b8('0x34')](_0x32dafb[_0x44b8('0x30')],_0x32dafb[_0x44b8('0x32')]);_0x44dc3d[_0x44b8('0x35')]=_[_0x44b8('0x34')](_0x32dafb[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x87a38[_0x44b8('0x32')][_0x44b8('0x36')]));_0x44dc3d[_0x44b8('0x35')]=_0x44dc3d[_0x44b8('0x35')]['length']?_0x44dc3d['attributes']:_0x32dafb[_0x44b8('0x30')];_0x44dc3d['order']=qs[_0x44b8('0x4d')](_0x87a38[_0x44b8('0x32')][_0x44b8('0x4d')]);_0x44dc3d['where']=qs[_0x44b8('0x33')](_[_0x44b8('0x51')](_0x87a38[_0x44b8('0x32')],_0x32dafb[_0x44b8('0x33')]));if(_0x87a38[_0x44b8('0x32')][_0x44b8('0x19')]){_0x44dc3d['where']=_[_0x44b8('0x39')](_0x44dc3d[_0x44b8('0x28')],{'$or':_['map'](_0x44dc3d[_0x44b8('0x35')],function(_0x1ffa05){var _0x22edd7={};_0x22edd7[_0x1ffa05]={'$like':'%'+_0x87a38[_0x44b8('0x32')][_0x44b8('0x19')]+'%'};return _0x22edd7;})});}_0x44dc3d=_['merge']({},_0x44dc3d,_0x87a38[_0x44b8('0x3a')]);return _0x3c8e0c[_0x44b8('0x80')](_0x44dc3d);}})[_0x44b8('0x13')](function(_0x2fca1a){if(_0x2fca1a){_0x21ea61=_0x2fca1a[_0x44b8('0x37')];if(!_0x87a38[_0x44b8('0x32')][_0x44b8('0x4a')](_0x44b8('0x4b'))){_0x44dc3d[_0x44b8('0x10')]=qs[_0x44b8('0x10')](_0x87a38['query'][_0x44b8('0x10')]);_0x44dc3d[_0x44b8('0xf')]=qs[_0x44b8('0xf')](_0x87a38['query']['offset']);}return _0x3c8e0c[_0x44b8('0x80')](_0x44dc3d);}})['then'](function(_0x9458fb){if(_0x9458fb){return _0x9458fb?{'count':_0x21ea61,'rows':_0x9458fb}:null;}})[_0x44b8('0x13')](respondWithResult(_0x54adf9,null))[_0x44b8('0x2d')](handleError(_0x54adf9,null));};exports[_0x44b8('0x82')]=function(_0x2eb6ce,_0x105ca0){var _0x25f364=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x77c009,_0x161362;return db[_0x44b8('0x29')][_0x44b8('0x1e')]({'where':{'id':_0x2eb6ce[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x105ca0,null))['then'](function(_0x4d88a6){if(_0x4d88a6){_0x161362=_0x4d88a6;return _0x4d88a6[_0x44b8('0x82')](_0x2eb6ce[_0x44b8('0x3c')][_0x44b8('0x67')],_[_0x44b8('0x45')](_0x2eb6ce[_0x44b8('0x3c')],[_0x44b8('0x67'),'id'])||{});}return null;})[_0x44b8('0x78')](function(_0x4b49df){var _0xbf96c1;_0x77c009=_0x4b49df||[];var _0x1f6244=[];if(_0x4b49df){for(var _0x96a3cd=0x0;_0x96a3cd<_0x4b49df['length'];_0x96a3cd+=0x1){var _0x16721d=_0x4b49df[_0x96a3cd][_0x44b8('0x14')]({'plain':!![]});_0x161362[_0x44b8('0x83')]=_0x2eb6ce[_0x44b8('0x3c')]['dialCheckDuplicateType']?_0x2eb6ce[_0x44b8('0x3c')][_0x44b8('0x83')]:_0x161362[_0x44b8('0x83')];switch(_0x161362['dialCheckDuplicateType']){case'always':_0xbf96c1=squel['insert']()['into']('cm_hopper')[_0x44b8('0x84')]([_0x44b8('0x85'),_0x44b8('0x86'),_0x44b8('0x87'),_0x44b8('0x88'),_0x44b8('0x4e'),_0x44b8('0x46'),_0x44b8('0x47')],squel[_0x44b8('0x89')]()[_0x44b8('0x68')](_0x44b8('0x85'),'phone')[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27',_0x44b8('0x86'))[_0x44b8('0x68')]('id',_0x44b8('0x87'))[_0x44b8('0x68')](_0x16721d['CmListId'][_0x44b8('0x6f')](),'ListId')[_0x44b8('0x68')](_0x2eb6ce[_0x44b8('0x2f')]['id'][_0x44b8('0x6f')](),'VoiceQueueId')[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27',_0x44b8('0x46'))['field']('\x27'+_0x25f364+'\x27',_0x44b8('0x47'))[_0x44b8('0x69')](_0x44b8('0x8a'))['where'](_0x44b8('0x8b'))['where'](_0x44b8('0x8c'),_0x16721d[_0x44b8('0x8d')][_0x44b8('0x6f')]())['where'](_0x44b8('0x8e'))['where'](_0x44b8('0x8f'),squel[_0x44b8('0x89')]()[_0x44b8('0x68')](_0x44b8('0x90'))[_0x44b8('0x69')](_0x44b8('0x91'))['where'](_0x44b8('0x6c'),_0x2eb6ce[_0x44b8('0x2f')]['id'][_0x44b8('0x6f')]()))[_0x44b8('0x28')]('phone\x20NOT\x20IN\x20(?)',squel[_0x44b8('0x89')]()[_0x44b8('0x68')](_0x44b8('0x92'))[_0x44b8('0x69')](_0x44b8('0x93'))[_0x44b8('0x28')](_0x44b8('0x6c'),_0x2eb6ce[_0x44b8('0x2f')]['id'][_0x44b8('0x6f')]())))[_0x44b8('0x6f')]();break;case _0x44b8('0x94'):_0xbf96c1=squel[_0x44b8('0x95')]()['into'](_0x44b8('0x93'))[_0x44b8('0x84')]([_0x44b8('0x85'),_0x44b8('0x86'),'ContactId',_0x44b8('0x88'),'VoiceQueueId',_0x44b8('0x46'),_0x44b8('0x47')],squel[_0x44b8('0x89')]()['field'](_0x44b8('0x85'),_0x44b8('0x85'))[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27',_0x44b8('0x86'))[_0x44b8('0x68')]('id','ContactId')[_0x44b8('0x68')](_0x16721d[_0x44b8('0x8d')][_0x44b8('0x6f')](),_0x44b8('0x88'))[_0x44b8('0x68')](_0x2eb6ce['params']['id'][_0x44b8('0x6f')](),_0x44b8('0x4e'))[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27',_0x44b8('0x46'))[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27',_0x44b8('0x47'))[_0x44b8('0x69')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x44b8('0x28')](_0x44b8('0x8c'),_0x16721d[_0x44b8('0x8d')]['toString']())['where'](_0x44b8('0x8e'))[_0x44b8('0x28')](_0x44b8('0x8f'),squel[_0x44b8('0x89')]()[_0x44b8('0x68')]('COALESCE(phone,\x27\x27)')['from']('cm_hopper')['where'](_0x44b8('0x6c'),_0x2eb6ce[_0x44b8('0x2f')]['id'][_0x44b8('0x6f')]())))[_0x44b8('0x6f')]();break;default:_0xbf96c1=squel[_0x44b8('0x95')]()[_0x44b8('0x96')]('cm_hopper')[_0x44b8('0x84')](['phone',_0x44b8('0x86'),_0x44b8('0x87'),_0x44b8('0x88'),'VoiceQueueId','createdAt',_0x44b8('0x47')],squel[_0x44b8('0x89')]()['field']('phone',_0x44b8('0x85'))[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27',_0x44b8('0x86'))[_0x44b8('0x68')]('id',_0x44b8('0x87'))['field'](_0x16721d[_0x44b8('0x8d')][_0x44b8('0x6f')](),_0x44b8('0x88'))[_0x44b8('0x68')](_0x2eb6ce[_0x44b8('0x2f')]['id'][_0x44b8('0x6f')](),_0x44b8('0x4e'))['field']('\x27'+_0x25f364+'\x27',_0x44b8('0x46'))[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27',_0x44b8('0x47'))[_0x44b8('0x69')](_0x44b8('0x8a'))[_0x44b8('0x28')]('deletedAt\x20IS\x20NULL')[_0x44b8('0x28')](_0x44b8('0x8c'),_0x16721d[_0x44b8('0x8d')][_0x44b8('0x6f')]())['where'](_0x44b8('0x8e')))[_0x44b8('0x6f')]();}_0x1f6244[_0x44b8('0x6e')](db[_0x44b8('0x70')]['query'](_0xbf96c1));}return BPromise['all'](_0x1f6244);}})[_0x44b8('0x13')](function(){var _0x2ad4ab=[];var _0x196b4b=squel[_0x44b8('0x95')]()[_0x44b8('0x96')]('cm_hopper_additional_phones')[_0x44b8('0x84')]([_0x44b8('0x97'),_0x44b8('0x85'),_0x44b8('0x98'),_0x44b8('0x46'),_0x44b8('0x47')],squel['select']()[_0x44b8('0x68')](_0x44b8('0x99'))[_0x44b8('0x68')](_0x44b8('0x9a'))[_0x44b8('0x68')](_0x44b8('0x9b'))[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27','createdAt')[_0x44b8('0x68')]('\x27'+_0x25f364+'\x27',_0x44b8('0x47'))[_0x44b8('0x69')](_0x44b8('0x9c'),'ci')['join'](_0x44b8('0x93'),'h','h.ContactId=ci.CmContactId')[_0x44b8('0x28')](_0x44b8('0x9d'),_0x25f364)[_0x44b8('0x28')](_0x44b8('0x9e'),'PHONE'))[_0x44b8('0x6f')]();_0x2ad4ab[_0x44b8('0x6e')](db[_0x44b8('0x70')]['query'](_0x196b4b));return BPromise[_0x44b8('0x73')](_0x2ad4ab);})[_0x44b8('0x13')](function(){return _0x77c009;})[_0x44b8('0x13')](respondWithResult(_0x105ca0,null))[_0x44b8('0x2d')](handleError(_0x105ca0,null));};exports[_0x44b8('0x9f')]=function(_0x257702,_0x17560c){return db[_0x44b8('0x29')][_0x44b8('0x1e')]({'where':{'id':_0x257702[_0x44b8('0x2f')]['id']}})['then'](handleEntityNotFound(_0x17560c,null))[_0x44b8('0x13')](function(_0x4d11d5){if(_0x4d11d5){return _0x4d11d5[_0x44b8('0x9f')](_0x257702[_0x44b8('0x32')][_0x44b8('0x67')]);}})[_0x44b8('0x13')](function(_0xafca17){if(_0xafca17){return db['CmHopper']['destroy']({'where':{'ListId':_0x257702['query'][_0x44b8('0x67')],'VoiceQueueId':_0x257702[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](function(){return _0xafca17;});}})[_0x44b8('0x13')](respondWithStatusCode(_0x17560c,null))[_0x44b8('0x2d')](handleError(_0x17560c,null));};exports[_0x44b8('0xa0')]=function(_0x513302,_0xfdb408){var _0x119dda={};var _0x5834fe={};var _0xe5cc1e;var _0x4c55e6;return db[_0x44b8('0x29')][_0x44b8('0x49')]({'where':{'id':_0x513302['params']['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0xfdb408,null))[_0x44b8('0x13')](function(_0x537eab){if(_0x537eab){_0xe5cc1e=_0x537eab;_0x5834fe[_0x44b8('0x30')]=_[_0x44b8('0x31')](db[_0x44b8('0x81')][_0x44b8('0x24')]);_0x5834fe['query']=_[_0x44b8('0x31')](_0x513302[_0x44b8('0x32')]);_0x5834fe[_0x44b8('0x33')]=_[_0x44b8('0x34')](_0x5834fe[_0x44b8('0x30')],_0x5834fe[_0x44b8('0x32')]);_0x119dda[_0x44b8('0x35')]=_['intersection'](_0x5834fe[_0x44b8('0x30')],qs[_0x44b8('0x36')](_0x513302[_0x44b8('0x32')]['fields']));_0x119dda[_0x44b8('0x35')]=_0x119dda[_0x44b8('0x35')]['length']?_0x119dda[_0x44b8('0x35')]:_0x5834fe[_0x44b8('0x30')];_0x119dda[_0x44b8('0x4c')]=qs[_0x44b8('0x4d')](_0x513302['query'][_0x44b8('0x4d')]);_0x119dda[_0x44b8('0x28')]=qs[_0x44b8('0x33')](_[_0x44b8('0x51')](_0x513302[_0x44b8('0x32')],_0x5834fe['filters']));if(_0x513302[_0x44b8('0x32')][_0x44b8('0x19')]){_0x119dda['where']=_[_0x44b8('0x39')](_0x119dda[_0x44b8('0x28')],{'$or':_[_0x44b8('0x1b')](_0x119dda[_0x44b8('0x35')],function(_0x4e9376){var _0x25f31c={};_0x25f31c[_0x4e9376]={'$like':'%'+_0x513302[_0x44b8('0x32')][_0x44b8('0x19')]+'%'};return _0x25f31c;})});}_0x119dda=_[_0x44b8('0x39')]({},_0x119dda,_0x513302[_0x44b8('0x3a')]);return _0xe5cc1e[_0x44b8('0xa0')](_0x119dda);}})[_0x44b8('0x13')](function(_0x57e3c9){if(_0x57e3c9){_0x4c55e6=_0x57e3c9[_0x44b8('0x37')];if(!_0x513302[_0x44b8('0x32')][_0x44b8('0x4a')](_0x44b8('0x4b'))){_0x119dda['limit']=qs[_0x44b8('0x10')](_0x513302[_0x44b8('0x32')][_0x44b8('0x10')]);_0x119dda['offset']=qs['offset'](_0x513302[_0x44b8('0x32')][_0x44b8('0xf')]);}return _0xe5cc1e[_0x44b8('0xa0')](_0x119dda);}})[_0x44b8('0x13')](function(_0x4a5916){if(_0x4a5916){return _0x4a5916?{'count':_0x4c55e6,'rows':_0x4a5916}:null;}})[_0x44b8('0x13')](respondWithResult(_0xfdb408,null))[_0x44b8('0x2d')](handleError(_0xfdb408,null));};exports['addBlackLists']=function(_0xd19a35,_0x2439f2){var _0x22a624;return db['VoiceQueue'][_0x44b8('0x1e')]({'where':{'id':_0xd19a35[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x2439f2,null))[_0x44b8('0x13')](function(_0x14c021){if(_0x14c021){return _0x14c021['addBlackLists'](_0xd19a35[_0x44b8('0x3c')][_0x44b8('0x67')],_['omit'](_0xd19a35[_0x44b8('0x3c')],[_0x44b8('0x67'),'id'])||{});}return null;})[_0x44b8('0x78')](function(_0x3b9cd2){var _0xb6cadf;_0x22a624=_0x3b9cd2||[];var _0x2024eb=[];if(_0x3b9cd2){for(var _0x29af58=0x0;_0x29af58<_0x3b9cd2[_0x44b8('0x37')];_0x29af58+=0x1){var _0x3870a9=_0x3b9cd2[_0x29af58]['get']({'plain':!![]});_0xb6cadf=squel['insert']()['into']('cm_hopper_black')[_0x44b8('0x84')]([_0x44b8('0x85'),'ContactId',_0x44b8('0x88'),_0x44b8('0x4e'),_0x44b8('0x46'),_0x44b8('0x47')],squel[_0x44b8('0x89')]()[_0x44b8('0x68')]('phone',_0x44b8('0x85'))['field']('id','ContactId')[_0x44b8('0x68')](_0x3870a9[_0x44b8('0x8d')][_0x44b8('0x6f')](),_0x44b8('0x88'))[_0x44b8('0x68')](_0xd19a35['params']['id'][_0x44b8('0x6f')](),_0x44b8('0x4e'))[_0x44b8('0x68')](_0x44b8('0xa1'),_0x44b8('0x46'))[_0x44b8('0x68')](_0x44b8('0xa1'),'updatedAt')[_0x44b8('0x69')](_0x44b8('0x8a'))[_0x44b8('0x28')]('deletedAt\x20IS\x20NULL')[_0x44b8('0x28')](_0x44b8('0x8c'),_0x3870a9[_0x44b8('0x8d')][_0x44b8('0x6f')]())[_0x44b8('0x28')](_0x44b8('0x8e')))[_0x44b8('0x6f')]();_0x2024eb[_0x44b8('0x6e')](db['sequelize'][_0x44b8('0x32')](_0xb6cadf));}return BPromise[_0x44b8('0x73')](_0x2024eb);}})[_0x44b8('0x13')](function(){return _0x22a624;})[_0x44b8('0x13')](respondWithResult(_0x2439f2,null))[_0x44b8('0x2d')](handleError(_0x2439f2,null));};exports[_0x44b8('0xa2')]=function(_0x4ec799,_0x3fa943){return db[_0x44b8('0x29')]['find']({'where':{'id':_0x4ec799[_0x44b8('0x2f')]['id']}})[_0x44b8('0x13')](handleEntityNotFound(_0x3fa943,null))[_0x44b8('0x13')](function(_0x3b1643){if(_0x3b1643){return _0x3b1643['removeBlackLists'](_0x4ec799[_0x44b8('0x32')]['ids']);}})['then'](function(_0x9a5734){if(_0x9a5734){return db[_0x44b8('0x54')][_0x44b8('0x12')]({'where':{'ListId':_0x4ec799[_0x44b8('0x32')][_0x44b8('0x67')],'VoiceQueueId':_0x4ec799['params']['id']}})['then'](function(){return _0x9a5734;});}})['then'](respondWithStatusCode(_0x3fa943,null))[_0x44b8('0x2d')](handleError(_0x3fa943,null));};
\ No newline at end of file
index 27bbe1e..a46ef6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d27=['emit','hasOwnProperty','exports','events','save','update','remove'];(function(_0x444672,_0x4894c2){var _0x4ba0fc=function(_0x2a89d9){while(--_0x2a89d9){_0x444672['push'](_0x444672['shift']());}};_0x4ba0fc(++_0x4894c2);}(_0x4d27,0x130));var _0x74d2=function(_0x8f430a,_0x320c6f){_0x8f430a=_0x8f430a-0x0;var _0x33e767=_0x4d27[_0x8f430a];return _0x33e767;};'use strict';var EventEmitter=require(_0x74d2('0x0'));var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x74d2('0x1'),'afterUpdate':_0x74d2('0x2'),'afterDestroy':_0x74d2('0x3')};function emitEvent(_0x3f091d){return function(_0x3e3be9,_0x2b103f,_0x2063fc){VoiceQueueEvents['emit'](_0x3f091d+':'+_0x3e3be9['id'],_0x3e3be9);VoiceQueueEvents[_0x74d2('0x4')](_0x3f091d,_0x3e3be9);_0x2063fc(null);};}for(var e in events){if(events[_0x74d2('0x5')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x74d2('0x6')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x2acd=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueue','setMaxListeners','save'];(function(_0x448320,_0x164f9){var _0x430303=function(_0x253a6b){while(--_0x253a6b){_0x448320['push'](_0x448320['shift']());}};_0x430303(++_0x164f9);}(_0x2acd,0xee));var _0xd2ac=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x2acd[_0x42cae2];return _0x5f256f;};'use strict';var EventEmitter=require(_0xd2ac('0x0'));var VoiceQueue=require(_0xd2ac('0x1'))['db'][_0xd2ac('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xd2ac('0x3')](0x0);var events={'afterCreate':_0xd2ac('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x20cd9e){return function(_0x1a7e6d,_0x266f0b,_0xa8c217){VoiceQueueEvents[_0xd2ac('0x5')](_0x20cd9e+':'+_0x1a7e6d['id'],_0x1a7e6d);VoiceQueueEvents[_0xd2ac('0x5')](_0x20cd9e,_0x1a7e6d);_0xa8c217(null);};}for(var e in events){if(events[_0xd2ac('0x6')](e)){var event=events[e];VoiceQueue[_0xd2ac('0x7')](e,emitEvent(event));}}module[_0xd2ac('0x8')]=VoiceQueueEvents;
\ No newline at end of file
index ef8c396..8c592a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0xb867a8,_0x926a63){var _0x1e5dcd=function(_0x1f3c72){while(--_0x1f3c72){_0xb867a8['push'](_0xb867a8['shift']());}};_0x1e5dcd(++_0x926a63);}(_0x008c,0x188));var _0xc008=function(_0x2eaff4,_0x4852b7){_0x2eaff4=_0x2eaff4-0x0;var _0x278c7a=_0x008c[_0x2eaff4];return _0x278c7a;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./voiceQueue.attributes','define','VoiceQueue','voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x43b001,_0x3b5366){var _0x4203f5=function(_0x4c1baa){while(--_0x4c1baa){_0x43b001['push'](_0x43b001['shift']());}};_0x4203f5(++_0x3b5366);}(_0x9c44,0x178));var _0x49c4=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x9c44[_0x2dea24];return _0x309d58;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c20518..fce4e3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf620=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','defaults','redis','localhost','socket.io-emitter','./voiceQueue.socket','register','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','attributes','limit','include','map','model','debug','ShowVoiceQueue','find','lodash'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0xf620,0x110));var _0x0f62=function(_0x77053f,_0x2c1f80){_0x77053f=_0x77053f-0x0;var _0xda59f1=_0xf620[_0x77053f];return _0xda59f1;};'use strict';var _=require(_0x0f62('0x0'));var util=require(_0x0f62('0x1'));var moment=require(_0x0f62('0x2'));var BPromise=require('bluebird');var rs=require(_0x0f62('0x3'));var fs=require('fs');var Redis=require(_0x0f62('0x4'));var db=require(_0x0f62('0x5'))['db'];var utils=require(_0x0f62('0x6'));var logger=require(_0x0f62('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0f62('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x0f62('0x9')](config[_0x0f62('0xa')],{'host':_0x0f62('0xb'),'port':0x18eb});var socket=require(_0x0f62('0xc'))(new Redis(config[_0x0f62('0xa')]));require(_0x0f62('0xd'))[_0x0f62('0xe')](socket);function respondWithRpcPromise(_0x2bb88c,_0x632d57,_0x3d60e4){return new BPromise(function(_0x198568,_0x561719){return client['request'](_0x2bb88c,_0x3d60e4)[_0x0f62('0xf')](function(_0x58d9a3){logger[_0x0f62('0x10')](_0x0f62('0x11'),_0x632d57,_0x0f62('0x12'));logger['debug'](_0x0f62('0x13'),_0x632d57,_0x0f62('0x12'),JSON[_0x0f62('0x14')](_0x58d9a3));if(_0x58d9a3['error']){if(_0x58d9a3['error'][_0x0f62('0x15')]===0x1f4){logger[_0x0f62('0x16')](_0x0f62('0x11'),_0x632d57,_0x58d9a3[_0x0f62('0x16')][_0x0f62('0x17')]);return _0x561719(_0x58d9a3[_0x0f62('0x16')][_0x0f62('0x17')]);}logger[_0x0f62('0x16')](_0x0f62('0x11'),_0x632d57,_0x58d9a3[_0x0f62('0x16')]['message']);return _0x198568(_0x58d9a3[_0x0f62('0x16')][_0x0f62('0x17')]);}else{logger[_0x0f62('0x10')](_0x0f62('0x11'),_0x632d57,'request\x20sent');_0x198568(_0x58d9a3[_0x0f62('0x18')][_0x0f62('0x17')]);}})[_0x0f62('0x19')](function(_0xff67ab){logger['error'](_0x0f62('0x11'),_0x632d57,_0xff67ab);_0x561719(_0xff67ab);});});}exports[_0x0f62('0x1a')]=function(_0x4956cc){var _0x396617=this;return new Promise(function(_0x5c3bd8,_0x2685f6){return db[_0x0f62('0x1b')][_0x0f62('0x1c')]({'raw':_0x4956cc[_0x0f62('0x1d')]?_0x4956cc[_0x0f62('0x1d')][_0x0f62('0x1e')]===undefined?!![]:![]:!![],'where':_0x4956cc[_0x0f62('0x1d')]?_0x4956cc[_0x0f62('0x1d')]['where']||null:null,'attributes':_0x4956cc['options']?_0x4956cc[_0x0f62('0x1d')][_0x0f62('0x1f')]||null:null,'limit':_0x4956cc[_0x0f62('0x1d')]?_0x4956cc[_0x0f62('0x1d')][_0x0f62('0x20')]||null:null,'include':_0x4956cc[_0x0f62('0x1d')]?_0x4956cc[_0x0f62('0x1d')][_0x0f62('0x21')]?_[_0x0f62('0x22')](_0x4956cc[_0x0f62('0x1d')][_0x0f62('0x21')],function(_0x4fe679){return{'model':db[_0x4fe679[_0x0f62('0x23')]],'as':_0x4fe679['as'],'attributes':_0x4fe679['attributes'],'include':_0x4fe679['include']?_[_0x0f62('0x22')](_0x4fe679[_0x0f62('0x21')],function(_0x3c6b87){return{'model':db[_0x3c6b87['model']],'as':_0x3c6b87['as'],'attributes':_0x3c6b87['attributes'],'include':_0x3c6b87['include']?_['map'](_0x3c6b87[_0x0f62('0x21')],function(_0x34e1e5){return{'model':db[_0x34e1e5['model']],'as':_0x34e1e5['as'],'attributes':_0x34e1e5[_0x0f62('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0f62('0xf')](function(_0x3f4bad){logger[_0x0f62('0x10')](_0x0f62('0x1a'),_0x4956cc);logger[_0x0f62('0x24')](_0x0f62('0x1a'),_0x4956cc,JSON[_0x0f62('0x14')](_0x3f4bad));_0x5c3bd8(_0x3f4bad);})[_0x0f62('0x19')](function(_0x3f80ea){logger[_0x0f62('0x16')](_0x0f62('0x1a'),_0x3f80ea['message'],_0x4956cc);_0x2685f6(_0x396617[_0x0f62('0x16')](0x1f4,_0x3f80ea['message']));});});};exports[_0x0f62('0x25')]=function(_0x3384b0){var _0x484210=this;return new Promise(function(_0x441510,_0x5286d0){return db[_0x0f62('0x1b')][_0x0f62('0x26')]({'raw':_0x3384b0[_0x0f62('0x1d')]?_0x3384b0[_0x0f62('0x1d')][_0x0f62('0x1e')]===undefined?!![]:![]:!![],'where':_0x3384b0[_0x0f62('0x1d')]?_0x3384b0[_0x0f62('0x1d')]['where']||null:null,'attributes':_0x3384b0[_0x0f62('0x1d')]?_0x3384b0[_0x0f62('0x1d')][_0x0f62('0x1f')]||null:null,'include':_0x3384b0[_0x0f62('0x1d')]?_0x3384b0['options'][_0x0f62('0x21')]?_[_0x0f62('0x22')](_0x3384b0['options']['include'],function(_0x3c8da8){return{'model':db[_0x3c8da8[_0x0f62('0x23')]],'as':_0x3c8da8['as'],'attributes':_0x3c8da8['attributes'],'include':_0x3c8da8[_0x0f62('0x21')]?_[_0x0f62('0x22')](_0x3c8da8[_0x0f62('0x21')],function(_0xabb712){return{'model':db[_0xabb712['model']],'as':_0xabb712['as'],'attributes':_0xabb712[_0x0f62('0x1f')],'include':_0xabb712[_0x0f62('0x21')]?_[_0x0f62('0x22')](_0xabb712[_0x0f62('0x21')],function(_0x363809){return{'model':db[_0x363809['model']],'as':_0x363809['as'],'attributes':_0x363809[_0x0f62('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0f62('0xf')](function(_0x52e5a1){logger['info'](_0x0f62('0x25'),_0x3384b0);logger['debug'](_0x0f62('0x25'),_0x3384b0,JSON[_0x0f62('0x14')](_0x52e5a1));_0x441510(_0x52e5a1);})[_0x0f62('0x19')](function(_0x2c2788){logger[_0x0f62('0x16')](_0x0f62('0x25'),_0x2c2788['message'],_0x3384b0);_0x5286d0(_0x484210[_0x0f62('0x16')](0x1f4,_0x2c2788[_0x0f62('0x17')]));});});};
\ No newline at end of file
+var _0xfac6=['result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','include','model','map','debug','find','lodash','moment','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./voiceQueue.socket','then','VoiceQueue,\x20%s,\x20%s','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info'];(function(_0x48d366,_0x1f4778){var _0x9a3cc1=function(_0x3676db){while(--_0x3676db){_0x48d366['push'](_0x48d366['shift']());}};_0x9a3cc1(++_0x1f4778);}(_0xfac6,0x7b));var _0x6fac=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xfac6[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6fac('0x0'));var util=require('util');var moment=require(_0x6fac('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6fac('0x2'))['db'];var utils=require(_0x6fac('0x3'));var logger=require(_0x6fac('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6fac('0x5'));var client=jayson[_0x6fac('0x6')][_0x6fac('0x7')]({'port':0x232a});config[_0x6fac('0x8')]=_[_0x6fac('0x9')](config[_0x6fac('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x6fac('0xa'))(new Redis(config[_0x6fac('0x8')]));require(_0x6fac('0xb'))['register'](socket);function respondWithRpcPromise(_0x27df44,_0x5b3e0f,_0x476cfc){return new BPromise(function(_0x1cf583,_0x37ea93){return client['request'](_0x27df44,_0x476cfc)[_0x6fac('0xc')](function(_0x34aa9c){logger['info'](_0x6fac('0xd'),_0x5b3e0f,'request\x20sent');logger['debug'](_0x6fac('0xe'),_0x5b3e0f,_0x6fac('0xf'),JSON[_0x6fac('0x10')](_0x34aa9c));if(_0x34aa9c[_0x6fac('0x11')]){if(_0x34aa9c[_0x6fac('0x11')][_0x6fac('0x12')]===0x1f4){logger[_0x6fac('0x11')](_0x6fac('0xd'),_0x5b3e0f,_0x34aa9c['error'][_0x6fac('0x13')]);return _0x37ea93(_0x34aa9c[_0x6fac('0x11')][_0x6fac('0x13')]);}logger['error'](_0x6fac('0xd'),_0x5b3e0f,_0x34aa9c[_0x6fac('0x11')][_0x6fac('0x13')]);return _0x1cf583(_0x34aa9c[_0x6fac('0x11')][_0x6fac('0x13')]);}else{logger[_0x6fac('0x14')](_0x6fac('0xd'),_0x5b3e0f,_0x6fac('0xf'));_0x1cf583(_0x34aa9c[_0x6fac('0x15')][_0x6fac('0x13')]);}})[_0x6fac('0x16')](function(_0xabe26e){logger[_0x6fac('0x11')](_0x6fac('0xd'),_0x5b3e0f,_0xabe26e);_0x37ea93(_0xabe26e);});});}exports[_0x6fac('0x17')]=function(_0x3d6dcd){var _0x371eba=this;return new Promise(function(_0x3cfadf,_0x4157aa){return db[_0x6fac('0x18')][_0x6fac('0x19')]({'raw':_0x3d6dcd[_0x6fac('0x1a')]?_0x3d6dcd[_0x6fac('0x1a')][_0x6fac('0x1b')]===undefined?!![]:![]:!![],'where':_0x3d6dcd[_0x6fac('0x1a')]?_0x3d6dcd[_0x6fac('0x1a')][_0x6fac('0x1c')]||null:null,'attributes':_0x3d6dcd[_0x6fac('0x1a')]?_0x3d6dcd[_0x6fac('0x1a')][_0x6fac('0x1d')]||null:null,'limit':_0x3d6dcd[_0x6fac('0x1a')]?_0x3d6dcd[_0x6fac('0x1a')][_0x6fac('0x1e')]||null:null,'include':_0x3d6dcd[_0x6fac('0x1a')]?_0x3d6dcd['options']['include']?_['map'](_0x3d6dcd[_0x6fac('0x1a')][_0x6fac('0x1f')],function(_0x3675ef){return{'model':db[_0x3675ef[_0x6fac('0x20')]],'as':_0x3675ef['as'],'attributes':_0x3675ef[_0x6fac('0x1d')],'include':_0x3675ef[_0x6fac('0x1f')]?_[_0x6fac('0x21')](_0x3675ef[_0x6fac('0x1f')],function(_0x13d7f8){return{'model':db[_0x13d7f8[_0x6fac('0x20')]],'as':_0x13d7f8['as'],'attributes':_0x13d7f8[_0x6fac('0x1d')],'include':_0x13d7f8[_0x6fac('0x1f')]?_[_0x6fac('0x21')](_0x13d7f8[_0x6fac('0x1f')],function(_0x2ce91a){return{'model':db[_0x2ce91a[_0x6fac('0x20')]],'as':_0x2ce91a['as'],'attributes':_0x2ce91a[_0x6fac('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6fac('0xc')](function(_0x3f4760){logger[_0x6fac('0x14')](_0x6fac('0x17'),_0x3d6dcd);logger[_0x6fac('0x22')](_0x6fac('0x17'),_0x3d6dcd,JSON[_0x6fac('0x10')](_0x3f4760));_0x3cfadf(_0x3f4760);})[_0x6fac('0x16')](function(_0x2fde99){logger[_0x6fac('0x11')](_0x6fac('0x17'),_0x2fde99['message'],_0x3d6dcd);_0x4157aa(_0x371eba[_0x6fac('0x11')](0x1f4,_0x2fde99[_0x6fac('0x13')]));});});};exports['ShowVoiceQueue']=function(_0x2272ff){var _0x5e3fa7=this;return new Promise(function(_0x573554,_0x2ef6d3){return db['VoiceQueue'][_0x6fac('0x23')]({'raw':_0x2272ff[_0x6fac('0x1a')]?_0x2272ff[_0x6fac('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x2272ff['options']?_0x2272ff[_0x6fac('0x1a')]['where']||null:null,'attributes':_0x2272ff['options']?_0x2272ff[_0x6fac('0x1a')][_0x6fac('0x1d')]||null:null,'include':_0x2272ff[_0x6fac('0x1a')]?_0x2272ff[_0x6fac('0x1a')][_0x6fac('0x1f')]?_['map'](_0x2272ff[_0x6fac('0x1a')]['include'],function(_0x18ec9c){return{'model':db[_0x18ec9c[_0x6fac('0x20')]],'as':_0x18ec9c['as'],'attributes':_0x18ec9c[_0x6fac('0x1d')],'include':_0x18ec9c[_0x6fac('0x1f')]?_[_0x6fac('0x21')](_0x18ec9c[_0x6fac('0x1f')],function(_0x1a28c9){return{'model':db[_0x1a28c9[_0x6fac('0x20')]],'as':_0x1a28c9['as'],'attributes':_0x1a28c9[_0x6fac('0x1d')],'include':_0x1a28c9['include']?_[_0x6fac('0x21')](_0x1a28c9['include'],function(_0x10a6a5){return{'model':db[_0x10a6a5[_0x6fac('0x20')]],'as':_0x10a6a5['as'],'attributes':_0x10a6a5['attributes']};}):[]};}):[]};}):[]:[]})[_0x6fac('0xc')](function(_0x749f89){logger['info']('ShowVoiceQueue',_0x2272ff);logger['debug']('ShowVoiceQueue',_0x2272ff,JSON[_0x6fac('0x10')](_0x749f89));_0x573554(_0x749f89);})[_0x6fac('0x16')](function(_0xaba69d){logger[_0x6fac('0x11')]('ShowVoiceQueue',_0xaba69d[_0x6fac('0x13')],_0x2272ff);_0x2ef6d3(_0x5e3fa7[_0x6fac('0x11')](0x1f4,_0xaba69d[_0x6fac('0x13')]));});});};
\ No newline at end of file
index 9ff3519..1c43698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b5=['./voiceQueue.events','save','remove','update','emit','removeListener','register','voiceQueue:'];(function(_0x33abfa,_0x58c62e){var _0x100c63=function(_0x32672e){while(--_0x32672e){_0x33abfa['push'](_0x33abfa['shift']());}};_0x100c63(++_0x58c62e);}(_0xc7b5,0x138));var _0x5c7b=function(_0x2d19b1,_0x1f987d){_0x2d19b1=_0x2d19b1-0x0;var _0x18c553=_0xc7b5[_0x2d19b1];return _0x18c553;};'use strict';var VoiceQueueEvents=require(_0x5c7b('0x0'));var events=[_0x5c7b('0x1'),_0x5c7b('0x2'),_0x5c7b('0x3')];function createListener(_0xca5f06,_0x9f976b){return function(_0x5cc287){_0x9f976b[_0x5c7b('0x4')](_0xca5f06,_0x5cc287);};}function removeListener(_0x51aea9,_0x8c6111){return function(){VoiceQueueEvents[_0x5c7b('0x5')](_0x51aea9,_0x8c6111);};}exports[_0x5c7b('0x6')]=function(_0x422607){for(var _0x4eb657=0x0,_0x12500d=events['length'];_0x4eb657<_0x12500d;_0x4eb657++){var _0xc9ac33=events[_0x4eb657];var _0x16ff97=createListener(_0x5c7b('0x7')+_0xc9ac33,_0x422607);VoiceQueueEvents['on'](_0xc9ac33,_0x16ff97);}};
\ No newline at end of file
+var _0x7272=['./voiceQueue.events','remove','update','emit','removeListener'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7272,0x195));var _0x2727=function(_0x3d8f7a,_0x3e897b){_0x3d8f7a=_0x3d8f7a-0x0;var _0xb8bb40=_0x7272[_0x3d8f7a];return _0xb8bb40;};'use strict';var VoiceQueueEvents=require(_0x2727('0x0'));var events=['save',_0x2727('0x1'),_0x2727('0x2')];function createListener(_0x36d92a,_0x466de1){return function(_0x4f42a2){_0x466de1[_0x2727('0x3')](_0x36d92a,_0x4f42a2);};}function removeListener(_0x405438,_0x3ea355){return function(){VoiceQueueEvents[_0x2727('0x4')](_0x405438,_0x3ea355);};}exports['register']=function(_0x143e89){for(var _0x5d8a71=0x0,_0x588eb3=events['length'];_0x5d8a71<_0x588eb3;_0x5d8a71++){var _0x367ecd=events[_0x5d8a71];var _0x36a716=createListener('voiceQueue:'+_0x367ecd,_0x143e89);VoiceQueueEvents['on'](_0x367ecd,_0x36a716);}};
\ No newline at end of file
index ad2e350..d0c825b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6473=['/index','getVoiceQueuesReport','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','/describe','describe'];(function(_0x27f604,_0x12292d){var _0x1bf870=function(_0x4029c8){while(--_0x4029c8){_0x27f604['push'](_0x27f604['shift']());}};_0x1bf870(++_0x12292d);}(_0x6473,0x142));var _0x3647=function(_0x3fc233,_0x39ac39){_0x3fc233=_0x3fc233-0x0;var _0x569873=_0x6473[_0x3fc233];return _0x569873;};'use strict';var multer=require(_0x3647('0x0'));var util=require(_0x3647('0x1'));var path=require(_0x3647('0x2'));var timeout=require('connect-timeout');var express=require(_0x3647('0x3'));var router=express[_0x3647('0x4')]();var fs_extra=require(_0x3647('0x5'));var auth=require(_0x3647('0x6'));var interaction=require(_0x3647('0x7'));var config=require(_0x3647('0x8'));var controller=require(_0x3647('0x9'));router[_0x3647('0xa')]('/',auth[_0x3647('0xb')](),controller['index']);router[_0x3647('0xa')](_0x3647('0xc'),auth[_0x3647('0xb')](),controller[_0x3647('0xd')]);router['get'](_0x3647('0xe'),auth[_0x3647('0xb')](),controller[_0x3647('0xf')]);router[_0x3647('0xa')](_0x3647('0x10'),auth['isAuthenticated'](),controller[_0x3647('0x11')]);router[_0x3647('0x12')]('/',auth[_0x3647('0xb')](),controller[_0x3647('0x13')]);router['put']('/:id',auth[_0x3647('0xb')](),controller[_0x3647('0x14')]);router[_0x3647('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x3647('0x16')]);module[_0x3647('0x17')]=router;
\ No newline at end of file
+var _0x894f=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/index','/:id','post','create','put','update','multer','util','connect-timeout'];(function(_0x2da02c,_0x359588){var _0xe4a708=function(_0x513376){while(--_0x513376){_0x2da02c['push'](_0x2da02c['shift']());}};_0xe4a708(++_0x359588);}(_0x894f,0xbb));var _0xf894=function(_0x42253a,_0x42a21e){_0x42253a=_0x42253a-0x0;var _0x590d1f=_0x894f[_0x42253a];return _0x590d1f;};'use strict';var multer=require(_0xf894('0x0'));var util=require(_0xf894('0x1'));var path=require('path');var timeout=require(_0xf894('0x2'));var express=require(_0xf894('0x3'));var router=express['Router']();var fs_extra=require(_0xf894('0x4'));var auth=require(_0xf894('0x5'));var interaction=require(_0xf894('0x6'));var config=require(_0xf894('0x7'));var controller=require('./voiceQueueReport.controller');router[_0xf894('0x8')]('/',auth[_0xf894('0x9')](),controller[_0xf894('0xa')]);router[_0xf894('0x8')](_0xf894('0xb'),auth[_0xf894('0x9')](),controller[_0xf894('0xc')]);router['get'](_0xf894('0xd'),auth[_0xf894('0x9')](),controller['getVoiceQueuesReport']);router[_0xf894('0x8')](_0xf894('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xf894('0xf')]('/',auth[_0xf894('0x9')](),controller[_0xf894('0x10')]);router[_0xf894('0x11')](_0xf894('0xe'),auth[_0xf894('0x9')](),controller[_0xf894('0x12')]);router['delete'](_0xf894('0xe'),auth[_0xf894('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c39b290..865de16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3050=['queuecallerleaveAt','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','INTEGER','sequelize','moment','exports','STRING','DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue'];(function(_0x3674c3,_0x4a1dbe){var _0x2071be=function(_0x574884){while(--_0x574884){_0x3674c3['push'](_0x3674c3['shift']());}};_0x2071be(++_0x4a1dbe);}(_0x3050,0xee));var _0x0305=function(_0x22367e,_0x37b94a){_0x22367e=_0x22367e-0x0;var _0x41ad37=_0x3050[_0x22367e];return _0x41ad37;};'use strict';var Sequelize=require(_0x0305('0x0'));var moment=require(_0x0305('0x1'));module[_0x0305('0x2')]={'type':{'type':Sequelize[_0x0305('0x3')]},'uniqueid':{'type':Sequelize[_0x0305('0x3')]},'calleridnum':{'type':Sequelize[_0x0305('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x0305('0x4')],'set':function(_0x11445d){var _0x127769=moment(_0x11445d);var _0x52e74f=moment(this['getDataValue'](_0x0305('0x5')))['format'](_0x0305('0x6'));var _0xa92252=_0x127769[_0x0305('0x7')](_0x52e74f,'seconds');this[_0x0305('0x8')](_0x0305('0x9'),_0x11445d);this['setDataValue']('holdtime',_0xa92252||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0x0305('0xa')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x0305('0x4')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x0305('0x4')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x0305('0x3')],'comment':_0x0305('0xb')},'originalposition':{'type':Sequelize[_0x0305('0xc')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0305('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x0305('0x3')]},'context':{'type':Sequelize[_0x0305('0x3')]},'exten':{'type':Sequelize[_0x0305('0x3')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize[_0x0305('0xc')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x0305('0xa')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x0305('0x3')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x0305('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'note':{'type':Sequelize[_0x0305('0x3')]}};
\ No newline at end of file
+var _0x1ac8=['holdtime','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt'];(function(_0x43d5d9,_0x548c1a){var _0x547666=function(_0x5bd752){while(--_0x5bd752){_0x43d5d9['push'](_0x43d5d9['shift']());}};_0x547666(++_0x548c1a);}(_0x1ac8,0x82));var _0x81ac=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x1ac8[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x81ac('0x0'));module[_0x81ac('0x1')]={'type':{'type':Sequelize[_0x81ac('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x81ac('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x81ac('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x81ac('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x81ac('0x3')],'set':function(_0x5ad218){var _0x49ebeb=moment(_0x5ad218);var _0x53a6bc=moment(this['getDataValue']('queuecallerjoinAt'))[_0x81ac('0x4')](_0x81ac('0x5'));var _0x2adcc2=_0x49ebeb[_0x81ac('0x6')](_0x53a6bc,_0x81ac('0x7'));this[_0x81ac('0x8')](_0x81ac('0x9'),_0x5ad218);this[_0x81ac('0x8')](_0x81ac('0xa'),_0x2adcc2||null);}},'position':{'type':Sequelize[_0x81ac('0xb')]},'count':{'type':Sequelize[_0x81ac('0xb')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x81ac('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x81ac('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x81ac('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x81ac('0x2')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x81ac('0xb')]},'channel':{'type':Sequelize[_0x81ac('0x2')]},'connectedlinenum':{'type':Sequelize[_0x81ac('0x2')]},'connectedlinename':{'type':Sequelize[_0x81ac('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x81ac('0x2')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize[_0x81ac('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x81ac('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x81ac('0x2')]},'transfer':{'type':Sequelize[_0x81ac('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x81ac('0xd')},'transferexten':{'type':Sequelize[_0x81ac('0x2')]},'transferuniqueid':{'type':Sequelize[_0x81ac('0x2')]},'disposition':{'type':Sequelize[_0x81ac('0x2')]},'secondDisposition':{'type':Sequelize[_0x81ac('0x2')]},'thirdDisposition':{'type':Sequelize[_0x81ac('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x81ac('0xb')],'defaultValue':0x0},'note':{'type':Sequelize['STRING']}};
\ No newline at end of file
index be03c1a..d57c40d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a08=['../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','update','then','destroy','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceQueueReport','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','describe','hasOwnProperty','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service'];(function(_0x3140ec,_0x49ce93){var _0x180904=function(_0x4ebb0e){while(--_0x4ebb0e){_0x3140ec['push'](_0x3140ec['shift']());}};_0x180904(++_0x49ce93);}(_0x8a08,0x17f));var _0x88a0=function(_0x1113a8,_0x1b4668){_0x1113a8=_0x1113a8-0x0;var _0x18580c=_0x8a08[_0x1113a8];return _0x18580c;};'use strict';var emlformat=require(_0x88a0('0x0'));var rimraf=require(_0x88a0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x88a0('0x2'));var rp=require(_0x88a0('0x3'));var moment=require(_0x88a0('0x4'));var BPromise=require(_0x88a0('0x5'));var Mustache=require(_0x88a0('0x6'));var util=require('util');var path=require('path');var sox=require(_0x88a0('0x7'));var csv=require(_0x88a0('0x8'));var ejs=require(_0x88a0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x88a0('0xa'));var squel=require(_0x88a0('0xb'));var crypto=require(_0x88a0('0xc'));var jsforce=require(_0x88a0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x88a0('0x8'));var querystring=require('querystring');var Papa=require(_0x88a0('0xe'));var Redis=require(_0x88a0('0xf'));var authService=require(_0x88a0('0x10'));var qs=require(_0x88a0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x88a0('0x12'));var logger=require('../../config/logger')(_0x88a0('0x13'));var utils=require(_0x88a0('0x14'));var config=require(_0x88a0('0x15'));var licenseUtil=require(_0x88a0('0x16'));var db=require(_0x88a0('0x17'))['db'];config[_0x88a0('0x18')]=_[_0x88a0('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x88a0('0x1a'))(new Redis(config[_0x88a0('0x18')]));require(_0x88a0('0x1b'))[_0x88a0('0x1c')](socket);function respondWithStatusCode(_0x8e0d27,_0x4e2846){_0x4e2846=_0x4e2846||0xcc;return function(_0x37786a){if(_0x37786a){return _0x8e0d27[_0x88a0('0x1d')](_0x4e2846);}return _0x8e0d27['status'](_0x4e2846)[_0x88a0('0x1e')]();};}function respondWithResult(_0x4c2027,_0x345539){_0x345539=_0x345539||0xc8;return function(_0x4424dd){if(_0x4424dd){return _0x4c2027[_0x88a0('0x1f')](_0x345539)[_0x88a0('0x20')](_0x4424dd);}};}function respondWithFilteredResult(_0x54aeb7,_0x267560){return function(_0x27c812){if(_0x27c812){var _0x1c37d6=typeof _0x267560[_0x88a0('0x21')]==='undefined'&&typeof _0x267560[_0x88a0('0x22')]==='undefined';var _0x49040b=_0x27c812[_0x88a0('0x23')];var _0x47e2a8=_0x1c37d6?0x0:_0x267560[_0x88a0('0x21')];var _0x803064=_0x1c37d6?_0x27c812[_0x88a0('0x23')]:_0x267560['offset']+_0x267560[_0x88a0('0x22')];var _0x21a12e;if(_0x803064>=_0x49040b){_0x803064=_0x49040b;_0x21a12e=0xc8;}else{_0x21a12e=0xce;}_0x54aeb7[_0x88a0('0x1f')](_0x21a12e);return _0x54aeb7[_0x88a0('0x24')](_0x88a0('0x25'),_0x47e2a8+'-'+_0x803064+'/'+_0x49040b)[_0x88a0('0x20')](_0x27c812);}return null;};}function patchUpdates(_0x1d5f44){return function(_0x581ac6){try{jsonpatch[_0x88a0('0x26')](_0x581ac6,_0x1d5f44,!![]);}catch(_0x57c739){return BPromise['reject'](_0x57c739);}return _0x581ac6['save']();};}function saveUpdates(_0x43e8af,_0x4574b5){return function(_0x13dbe2){if(_0x13dbe2){return _0x13dbe2[_0x88a0('0x27')](_0x43e8af)[_0x88a0('0x28')](function(_0xf6edb5){return _0xf6edb5;});}return null;};}function removeEntity(_0x37e75c,_0x1813e8){return function(_0x184603){if(_0x184603){return _0x184603[_0x88a0('0x29')]()['then'](function(){_0x37e75c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x50a6a0,_0x46ab5d){return function(_0x5be7b0){if(!_0x5be7b0){_0x50a6a0[_0x88a0('0x1d')](0x194);}return _0x5be7b0;};}function handleError(_0x1d493a,_0x49d39a){_0x49d39a=_0x49d39a||0x1f4;return function(_0x2a0489){logger['error'](_0x2a0489['stack']);if(_0x2a0489[_0x88a0('0x2a')]){delete _0x2a0489[_0x88a0('0x2a')];}_0x1d493a['status'](_0x49d39a)[_0x88a0('0x2b')](_0x2a0489);};}exports[_0x88a0('0x2c')]=function(_0x3b9176,_0x524039){var _0x3b62ce={},_0x45983b={},_0x5b80ab={'count':0x0,'rows':[]};var _0x232186=_[_0x88a0('0x2d')](db['VoiceQueueReport'][_0x88a0('0x2e')],function(_0x114a0d){return{'name':_0x114a0d[_0x88a0('0x2f')],'type':_0x114a0d[_0x88a0('0x30')][_0x88a0('0x31')]};});_0x45983b[_0x88a0('0x32')]=_[_0x88a0('0x2d')](_0x232186,_0x88a0('0x2a'));_0x45983b[_0x88a0('0x33')]=_[_0x88a0('0x34')](_0x3b9176[_0x88a0('0x33')]);_0x45983b[_0x88a0('0x35')]=_['intersection'](_0x45983b[_0x88a0('0x32')],_0x45983b[_0x88a0('0x33')]);_0x3b62ce[_0x88a0('0x36')]=_[_0x88a0('0x37')](_0x45983b[_0x88a0('0x32')],qs[_0x88a0('0x38')](_0x3b9176[_0x88a0('0x33')][_0x88a0('0x38')]));_0x3b62ce[_0x88a0('0x36')]=_0x3b62ce[_0x88a0('0x36')]['length']?_0x3b62ce[_0x88a0('0x36')]:_0x45983b[_0x88a0('0x32')];if(!_0x3b9176[_0x88a0('0x33')]['hasOwnProperty'](_0x88a0('0x39'))){_0x3b62ce[_0x88a0('0x22')]=qs[_0x88a0('0x22')](_0x3b9176[_0x88a0('0x33')][_0x88a0('0x22')]);_0x3b62ce[_0x88a0('0x21')]=qs[_0x88a0('0x21')](_0x3b9176[_0x88a0('0x33')][_0x88a0('0x21')]);}_0x3b62ce[_0x88a0('0x3a')]=qs[_0x88a0('0x3b')](_0x3b9176['query']['sort']);_0x3b62ce[_0x88a0('0x3c')]=qs[_0x88a0('0x35')](_[_0x88a0('0x3d')](_0x3b9176['query'],_0x45983b[_0x88a0('0x35')]),_0x232186);if(_0x3b9176[_0x88a0('0x33')][_0x88a0('0x3e')]){_0x3b62ce[_0x88a0('0x3c')]=_[_0x88a0('0x3f')](_0x3b62ce[_0x88a0('0x3c')],{'$or':_[_0x88a0('0x2d')](_0x232186,function(_0x37766b){if(_0x37766b[_0x88a0('0x30')]!==_0x88a0('0x40')){var _0x5cbe4e={};_0x5cbe4e[_0x37766b[_0x88a0('0x2a')]]={'$like':'%'+_0x3b9176['query'][_0x88a0('0x3e')]+'%'};return _0x5cbe4e;}})});}_0x3b62ce=_['merge']({},_0x3b62ce,_0x3b9176[_0x88a0('0x41')]);var _0x408d80={'where':_0x3b62ce['where']};return db[_0x88a0('0x42')]['count'](_0x408d80)[_0x88a0('0x28')](function(_0x1eabde){_0x5b80ab['count']=_0x1eabde;if(_0x3b9176[_0x88a0('0x33')][_0x88a0('0x43')]){_0x3b62ce['include']=[{'all':!![]}];}return db[_0x88a0('0x42')][_0x88a0('0x44')](_0x3b62ce);})[_0x88a0('0x28')](function(_0x2b902e){_0x5b80ab[_0x88a0('0x45')]=_0x2b902e;return _0x5b80ab;})[_0x88a0('0x28')](respondWithFilteredResult(_0x524039,_0x3b62ce))[_0x88a0('0x46')](handleError(_0x524039,null));};exports[_0x88a0('0x47')]=function(_0x40b579,_0x4cfd57){var _0x29c492={'raw':![],'where':{'id':_0x40b579[_0x88a0('0x48')]['id']}},_0x11f66f={};_0x11f66f[_0x88a0('0x32')]=_[_0x88a0('0x34')](db[_0x88a0('0x42')]['rawAttributes']);_0x11f66f[_0x88a0('0x33')]=_['keys'](_0x40b579['query']);_0x11f66f['filters']=_[_0x88a0('0x37')](_0x11f66f['model'],_0x11f66f['query']);_0x29c492['attributes']=_[_0x88a0('0x37')](_0x11f66f[_0x88a0('0x32')],qs['fields'](_0x40b579[_0x88a0('0x33')][_0x88a0('0x38')]));_0x29c492[_0x88a0('0x36')]=_0x29c492['attributes'][_0x88a0('0x49')]?_0x29c492['attributes']:_0x11f66f[_0x88a0('0x32')];if(_0x40b579['query'][_0x88a0('0x43')]){_0x29c492[_0x88a0('0x4a')]=[{'all':!![]}];}_0x29c492=_[_0x88a0('0x3f')]({},_0x29c492,_0x40b579[_0x88a0('0x41')]);return db['VoiceQueueReport'][_0x88a0('0x4b')](_0x29c492)[_0x88a0('0x28')](handleEntityNotFound(_0x4cfd57,null))[_0x88a0('0x28')](respondWithResult(_0x4cfd57,null))[_0x88a0('0x46')](handleError(_0x4cfd57,null));};exports[_0x88a0('0x4c')]=function(_0x590b7b,_0x53509f){return db[_0x88a0('0x42')][_0x88a0('0x4c')](_0x590b7b['body'],{})[_0x88a0('0x28')](respondWithResult(_0x53509f,0xc9))[_0x88a0('0x46')](handleError(_0x53509f,null));};exports['update']=function(_0x166df9,_0x2f4b7e){if(_0x166df9[_0x88a0('0x4d')]['id']){delete _0x166df9['body']['id'];}return db['VoiceQueueReport'][_0x88a0('0x4b')]({'where':{'id':_0x166df9['params']['id']}})[_0x88a0('0x28')](handleEntityNotFound(_0x2f4b7e,null))['then'](saveUpdates(_0x166df9[_0x88a0('0x4d')],null))[_0x88a0('0x28')](respondWithResult(_0x2f4b7e,null))[_0x88a0('0x46')](handleError(_0x2f4b7e,null));};exports[_0x88a0('0x29')]=function(_0x115a16,_0x4581dd){return db[_0x88a0('0x42')][_0x88a0('0x4b')]({'where':{'id':_0x115a16[_0x88a0('0x48')]['id']}})[_0x88a0('0x28')](handleEntityNotFound(_0x4581dd,null))[_0x88a0('0x28')](removeEntity(_0x4581dd,null))[_0x88a0('0x46')](handleError(_0x4581dd,null));};exports[_0x88a0('0x4e')]=function(_0x4c4fef,_0x324cc1){return db[_0x88a0('0x42')][_0x88a0('0x4e')]()[_0x88a0('0x28')](respondWithResult(_0x324cc1,null))[_0x88a0('0x46')](handleError(_0x324cc1,null));};exports['getVoiceQueuesReport']=function(_0x2d35a8,_0x4d395a){var _0x1e4708={},_0x22272a={},_0x333a0a={'count':0x0,'rows':[]};_0x22272a['model']=_[_0x88a0('0x34')](db[_0x88a0('0x42')][_0x88a0('0x2e')]);_0x22272a['query']=_['keys'](_0x2d35a8[_0x88a0('0x33')]);_0x22272a['filters']=_[_0x88a0('0x37')](_0x22272a[_0x88a0('0x32')],_0x22272a[_0x88a0('0x33')]);_0x1e4708[_0x88a0('0x36')]=_[_0x88a0('0x37')](_0x22272a[_0x88a0('0x32')],qs[_0x88a0('0x38')](_0x2d35a8['query'][_0x88a0('0x38')]));_0x1e4708[_0x88a0('0x36')]=_0x1e4708[_0x88a0('0x36')][_0x88a0('0x49')]?_0x1e4708[_0x88a0('0x36')]:_0x22272a[_0x88a0('0x32')];if(!_0x2d35a8[_0x88a0('0x33')][_0x88a0('0x4f')]('nolimit')){_0x1e4708[_0x88a0('0x22')]=qs[_0x88a0('0x22')](_0x2d35a8[_0x88a0('0x33')][_0x88a0('0x22')]);_0x1e4708[_0x88a0('0x21')]=qs[_0x88a0('0x21')](_0x2d35a8[_0x88a0('0x33')][_0x88a0('0x21')]);}_0x1e4708[_0x88a0('0x3a')]=qs[_0x88a0('0x3b')](_0x2d35a8['query'][_0x88a0('0x3b')]);_0x1e4708[_0x88a0('0x3c')]=qs['filters'](_[_0x88a0('0x3d')](_0x2d35a8[_0x88a0('0x33')],_0x22272a[_0x88a0('0x35')]));if(_0x2d35a8[_0x88a0('0x33')][_0x88a0('0x3e')]){_0x1e4708[_0x88a0('0x3c')]=_[_0x88a0('0x3f')](_0x1e4708['where'],{'$or':_[_0x88a0('0x2d')](_0x1e4708[_0x88a0('0x36')],function(_0x5381f7){var _0x86e86f={};_0x86e86f[_0x5381f7]={'$like':'%'+_0x2d35a8[_0x88a0('0x33')][_0x88a0('0x3e')]+'%'};return _0x86e86f;})});}_0x1e4708=_['merge']({},_0x1e4708,_0x2d35a8[_0x88a0('0x41')]);var _0x1c2606={'where':_0x1e4708[_0x88a0('0x3c')]};return db[_0x88a0('0x42')][_0x88a0('0x23')](_0x1c2606)['then'](function(_0x5ac5ee){_0x333a0a[_0x88a0('0x23')]=_0x5ac5ee;if(_0x2d35a8[_0x88a0('0x33')][_0x88a0('0x43')]){_0x1e4708[_0x88a0('0x4a')]=[{'all':!![]}];}return db[_0x88a0('0x42')][_0x88a0('0x44')](_0x1e4708);})[_0x88a0('0x28')](function(_0x4ec13c){_0x333a0a[_0x88a0('0x45')]=_0x4ec13c;return _0x333a0a;})['then'](respondWithFilteredResult(_0x4d395a,_0x1e4708,'getVoiceQueuesReport'))['catch'](handleError(_0x4d395a,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0xbc49=['offset','limit','undefined','count','json','apply','update','then','destroy','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','length','find','catch','create','body','params','getVoiceQueuesReport','order','sort','pick','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./voiceQueueReport.socket','register','sendStatus','status'];(function(_0x196e10,_0x3f0318){var _0x2fca9c=function(_0x3b1823){while(--_0x3b1823){_0x196e10['push'](_0x196e10['shift']());}};_0x2fca9c(++_0x3f0318);}(_0xbc49,0x1d8));var _0x9bc4=function(_0xe84805,_0x2702d9){_0xe84805=_0xe84805-0x0;var _0x398efd=_0xbc49[_0xe84805];return _0x398efd;};'use strict';var emlformat=require(_0x9bc4('0x0'));var rimraf=require(_0x9bc4('0x1'));var zipdir=require(_0x9bc4('0x2'));var jsonpatch=require(_0x9bc4('0x3'));var rp=require(_0x9bc4('0x4'));var moment=require(_0x9bc4('0x5'));var BPromise=require(_0x9bc4('0x6'));var Mustache=require(_0x9bc4('0x7'));var util=require(_0x9bc4('0x8'));var path=require(_0x9bc4('0x9'));var sox=require(_0x9bc4('0xa'));var csv=require(_0x9bc4('0xb'));var ejs=require(_0x9bc4('0xc'));var fs=require('fs');var fs_extra=require(_0x9bc4('0xd'));var _=require(_0x9bc4('0xe'));var squel=require(_0x9bc4('0xf'));var crypto=require('crypto');var jsforce=require(_0x9bc4('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x9bc4('0xb'));var querystring=require(_0x9bc4('0x11'));var Papa=require(_0x9bc4('0x12'));var Redis=require(_0x9bc4('0x13'));var authService=require(_0x9bc4('0x14'));var qs=require(_0x9bc4('0x15'));var as=require(_0x9bc4('0x16'));var hardwareService=require(_0x9bc4('0x17'));var logger=require(_0x9bc4('0x18'))(_0x9bc4('0x19'));var utils=require(_0x9bc4('0x1a'));var config=require(_0x9bc4('0x1b'));var licenseUtil=require(_0x9bc4('0x1c'));var db=require(_0x9bc4('0x1d'))['db'];config['redis']=_[_0x9bc4('0x1e')](config['redis'],{'host':_0x9bc4('0x1f'),'port':0x18eb});var socket=require(_0x9bc4('0x20'))(new Redis(config[_0x9bc4('0x21')]));require(_0x9bc4('0x22'))[_0x9bc4('0x23')](socket);function respondWithStatusCode(_0x2a8ddc,_0x54dd65){_0x54dd65=_0x54dd65||0xcc;return function(_0x4353fa){if(_0x4353fa){return _0x2a8ddc[_0x9bc4('0x24')](_0x54dd65);}return _0x2a8ddc[_0x9bc4('0x25')](_0x54dd65)['end']();};}function respondWithResult(_0x48ef30,_0x375639){_0x375639=_0x375639||0xc8;return function(_0x3dde5e){if(_0x3dde5e){return _0x48ef30[_0x9bc4('0x25')](_0x375639)['json'](_0x3dde5e);}};}function respondWithFilteredResult(_0x12ba3e,_0x5c49a0){return function(_0x11597f){if(_0x11597f){var _0x3254eb=typeof _0x5c49a0[_0x9bc4('0x26')]==='undefined'&&typeof _0x5c49a0[_0x9bc4('0x27')]===_0x9bc4('0x28');var _0x4076e3=_0x11597f['count'];var _0x314ea9=_0x3254eb?0x0:_0x5c49a0['offset'];var _0x479b10=_0x3254eb?_0x11597f[_0x9bc4('0x29')]:_0x5c49a0[_0x9bc4('0x26')]+_0x5c49a0[_0x9bc4('0x27')];var _0x5179f6;if(_0x479b10>=_0x4076e3){_0x479b10=_0x4076e3;_0x5179f6=0xc8;}else{_0x5179f6=0xce;}_0x12ba3e[_0x9bc4('0x25')](_0x5179f6);return _0x12ba3e['set']('Content-Range',_0x314ea9+'-'+_0x479b10+'/'+_0x4076e3)[_0x9bc4('0x2a')](_0x11597f);}return null;};}function patchUpdates(_0x41aa26){return function(_0x1886f4){try{jsonpatch[_0x9bc4('0x2b')](_0x1886f4,_0x41aa26,!![]);}catch(_0xc575bd){return BPromise['reject'](_0xc575bd);}return _0x1886f4['save']();};}function saveUpdates(_0x5064a8,_0x194a2f){return function(_0x45c3ec){if(_0x45c3ec){return _0x45c3ec[_0x9bc4('0x2c')](_0x5064a8)[_0x9bc4('0x2d')](function(_0x8dd4ab){return _0x8dd4ab;});}return null;};}function removeEntity(_0x5c376f,_0x373267){return function(_0x4d483e){if(_0x4d483e){return _0x4d483e[_0x9bc4('0x2e')]()[_0x9bc4('0x2d')](function(){_0x5c376f[_0x9bc4('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20c3f5,_0x2da9c1){return function(_0x9b065f){if(!_0x9b065f){_0x20c3f5[_0x9bc4('0x24')](0x194);}return _0x9b065f;};}function handleError(_0x1c3b9d,_0x532261){_0x532261=_0x532261||0x1f4;return function(_0x3ce028){logger[_0x9bc4('0x2f')](_0x3ce028[_0x9bc4('0x30')]);if(_0x3ce028[_0x9bc4('0x31')]){delete _0x3ce028[_0x9bc4('0x31')];}_0x1c3b9d['status'](_0x532261)[_0x9bc4('0x32')](_0x3ce028);};}exports[_0x9bc4('0x33')]=function(_0xaa30ee,_0x11d619){var _0x24c319={},_0x1cb6bb={},_0x5c3fea={'count':0x0,'rows':[]};var _0x58bf65=_[_0x9bc4('0x34')](db[_0x9bc4('0x35')][_0x9bc4('0x36')],function(_0x4dbc2e){return{'name':_0x4dbc2e[_0x9bc4('0x37')],'type':_0x4dbc2e[_0x9bc4('0x38')]['key']};});_0x1cb6bb[_0x9bc4('0x39')]=_[_0x9bc4('0x34')](_0x58bf65,_0x9bc4('0x31'));_0x1cb6bb[_0x9bc4('0x3a')]=_[_0x9bc4('0x3b')](_0xaa30ee[_0x9bc4('0x3a')]);_0x1cb6bb['filters']=_[_0x9bc4('0x3c')](_0x1cb6bb[_0x9bc4('0x39')],_0x1cb6bb[_0x9bc4('0x3a')]);_0x24c319[_0x9bc4('0x3d')]=_[_0x9bc4('0x3c')](_0x1cb6bb[_0x9bc4('0x39')],qs[_0x9bc4('0x3e')](_0xaa30ee[_0x9bc4('0x3a')][_0x9bc4('0x3e')]));_0x24c319['attributes']=_0x24c319['attributes']['length']?_0x24c319['attributes']:_0x1cb6bb[_0x9bc4('0x39')];if(!_0xaa30ee['query'][_0x9bc4('0x3f')](_0x9bc4('0x40'))){_0x24c319[_0x9bc4('0x27')]=qs[_0x9bc4('0x27')](_0xaa30ee[_0x9bc4('0x3a')]['limit']);_0x24c319[_0x9bc4('0x26')]=qs[_0x9bc4('0x26')](_0xaa30ee[_0x9bc4('0x3a')]['offset']);}_0x24c319['order']=qs['sort'](_0xaa30ee[_0x9bc4('0x3a')]['sort']);_0x24c319[_0x9bc4('0x41')]=qs[_0x9bc4('0x42')](_['pick'](_0xaa30ee[_0x9bc4('0x3a')],_0x1cb6bb[_0x9bc4('0x42')]),_0x58bf65);if(_0xaa30ee[_0x9bc4('0x3a')][_0x9bc4('0x43')]){_0x24c319[_0x9bc4('0x41')]=_[_0x9bc4('0x44')](_0x24c319['where'],{'$or':_['map'](_0x58bf65,function(_0x50f48a){if(_0x50f48a[_0x9bc4('0x38')]!==_0x9bc4('0x45')){var _0x1c5f4f={};_0x1c5f4f[_0x50f48a[_0x9bc4('0x31')]]={'$like':'%'+_0xaa30ee[_0x9bc4('0x3a')]['filter']+'%'};return _0x1c5f4f;}})});}_0x24c319=_[_0x9bc4('0x44')]({},_0x24c319,_0xaa30ee[_0x9bc4('0x46')]);var _0xd73850={'where':_0x24c319[_0x9bc4('0x41')]};return db['VoiceQueueReport'][_0x9bc4('0x29')](_0xd73850)[_0x9bc4('0x2d')](function(_0x9da490){_0x5c3fea['count']=_0x9da490;if(_0xaa30ee[_0x9bc4('0x3a')][_0x9bc4('0x47')]){_0x24c319[_0x9bc4('0x48')]=[{'all':!![]}];}return db[_0x9bc4('0x35')][_0x9bc4('0x49')](_0x24c319);})[_0x9bc4('0x2d')](function(_0x57a33d){_0x5c3fea['rows']=_0x57a33d;return _0x5c3fea;})[_0x9bc4('0x2d')](respondWithFilteredResult(_0x11d619,_0x24c319))['catch'](handleError(_0x11d619,null));};exports[_0x9bc4('0x4a')]=function(_0x4605ed,_0x1174e6){var _0x4983f5={'raw':![],'where':{'id':_0x4605ed['params']['id']}},_0x275cb0={};_0x275cb0[_0x9bc4('0x39')]=_[_0x9bc4('0x3b')](db[_0x9bc4('0x35')][_0x9bc4('0x36')]);_0x275cb0[_0x9bc4('0x3a')]=_['keys'](_0x4605ed[_0x9bc4('0x3a')]);_0x275cb0[_0x9bc4('0x42')]=_[_0x9bc4('0x3c')](_0x275cb0['model'],_0x275cb0[_0x9bc4('0x3a')]);_0x4983f5[_0x9bc4('0x3d')]=_['intersection'](_0x275cb0[_0x9bc4('0x39')],qs[_0x9bc4('0x3e')](_0x4605ed['query'][_0x9bc4('0x3e')]));_0x4983f5[_0x9bc4('0x3d')]=_0x4983f5[_0x9bc4('0x3d')][_0x9bc4('0x4b')]?_0x4983f5[_0x9bc4('0x3d')]:_0x275cb0[_0x9bc4('0x39')];if(_0x4605ed[_0x9bc4('0x3a')]['includeAll']){_0x4983f5[_0x9bc4('0x48')]=[{'all':!![]}];}_0x4983f5=_[_0x9bc4('0x44')]({},_0x4983f5,_0x4605ed[_0x9bc4('0x46')]);return db[_0x9bc4('0x35')][_0x9bc4('0x4c')](_0x4983f5)[_0x9bc4('0x2d')](handleEntityNotFound(_0x1174e6,null))[_0x9bc4('0x2d')](respondWithResult(_0x1174e6,null))[_0x9bc4('0x4d')](handleError(_0x1174e6,null));};exports[_0x9bc4('0x4e')]=function(_0x11875b,_0x2af341){return db['VoiceQueueReport'][_0x9bc4('0x4e')](_0x11875b[_0x9bc4('0x4f')],{})[_0x9bc4('0x2d')](respondWithResult(_0x2af341,0xc9))['catch'](handleError(_0x2af341,null));};exports[_0x9bc4('0x2c')]=function(_0x50ed3f,_0x4ff146){if(_0x50ed3f['body']['id']){delete _0x50ed3f['body']['id'];}return db[_0x9bc4('0x35')][_0x9bc4('0x4c')]({'where':{'id':_0x50ed3f[_0x9bc4('0x50')]['id']}})[_0x9bc4('0x2d')](handleEntityNotFound(_0x4ff146,null))['then'](saveUpdates(_0x50ed3f[_0x9bc4('0x4f')],null))['then'](respondWithResult(_0x4ff146,null))[_0x9bc4('0x4d')](handleError(_0x4ff146,null));};exports[_0x9bc4('0x2e')]=function(_0x1de185,_0x3d4d94){return db['VoiceQueueReport']['find']({'where':{'id':_0x1de185[_0x9bc4('0x50')]['id']}})['then'](handleEntityNotFound(_0x3d4d94,null))[_0x9bc4('0x2d')](removeEntity(_0x3d4d94,null))[_0x9bc4('0x4d')](handleError(_0x3d4d94,null));};exports['describe']=function(_0x4c6179,_0x359b28){return db['VoiceQueueReport']['describe']()[_0x9bc4('0x2d')](respondWithResult(_0x359b28,null))['catch'](handleError(_0x359b28,null));};exports[_0x9bc4('0x51')]=function(_0x45019d,_0x10457e){var _0x5f510a={},_0x255216={},_0x9a59a5={'count':0x0,'rows':[]};_0x255216[_0x9bc4('0x39')]=_[_0x9bc4('0x3b')](db[_0x9bc4('0x35')][_0x9bc4('0x36')]);_0x255216[_0x9bc4('0x3a')]=_[_0x9bc4('0x3b')](_0x45019d[_0x9bc4('0x3a')]);_0x255216['filters']=_[_0x9bc4('0x3c')](_0x255216[_0x9bc4('0x39')],_0x255216[_0x9bc4('0x3a')]);_0x5f510a['attributes']=_[_0x9bc4('0x3c')](_0x255216[_0x9bc4('0x39')],qs[_0x9bc4('0x3e')](_0x45019d['query'][_0x9bc4('0x3e')]));_0x5f510a['attributes']=_0x5f510a['attributes'][_0x9bc4('0x4b')]?_0x5f510a[_0x9bc4('0x3d')]:_0x255216['model'];if(!_0x45019d[_0x9bc4('0x3a')][_0x9bc4('0x3f')](_0x9bc4('0x40'))){_0x5f510a[_0x9bc4('0x27')]=qs['limit'](_0x45019d['query'][_0x9bc4('0x27')]);_0x5f510a[_0x9bc4('0x26')]=qs[_0x9bc4('0x26')](_0x45019d[_0x9bc4('0x3a')][_0x9bc4('0x26')]);}_0x5f510a[_0x9bc4('0x52')]=qs[_0x9bc4('0x53')](_0x45019d[_0x9bc4('0x3a')][_0x9bc4('0x53')]);_0x5f510a[_0x9bc4('0x41')]=qs[_0x9bc4('0x42')](_[_0x9bc4('0x54')](_0x45019d[_0x9bc4('0x3a')],_0x255216[_0x9bc4('0x42')]));if(_0x45019d[_0x9bc4('0x3a')]['filter']){_0x5f510a[_0x9bc4('0x41')]=_['merge'](_0x5f510a['where'],{'$or':_[_0x9bc4('0x34')](_0x5f510a[_0x9bc4('0x3d')],function(_0x1aa8fc){var _0x2265c3={};_0x2265c3[_0x1aa8fc]={'$like':'%'+_0x45019d[_0x9bc4('0x3a')][_0x9bc4('0x43')]+'%'};return _0x2265c3;})});}_0x5f510a=_[_0x9bc4('0x44')]({},_0x5f510a,_0x45019d[_0x9bc4('0x46')]);var _0x48d9a9={'where':_0x5f510a[_0x9bc4('0x41')]};return db[_0x9bc4('0x35')]['count'](_0x48d9a9)['then'](function(_0x5a0d16){_0x9a59a5['count']=_0x5a0d16;if(_0x45019d[_0x9bc4('0x3a')]['includeAll']){_0x5f510a[_0x9bc4('0x48')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x5f510a);})[_0x9bc4('0x2d')](function(_0x5321bd){_0x9a59a5['rows']=_0x5321bd;return _0x9a59a5;})[_0x9bc4('0x2d')](respondWithFilteredResult(_0x10457e,_0x5f510a,_0x9bc4('0x51')))[_0x9bc4('0x4d')](handleError(_0x10457e,null,_0x9bc4('0x51')));};
\ No newline at end of file
index cbee1d2..e6c5225 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aec=['VoiceQueueReport','save','emit','exports','events','../../mysqldb'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x0aec,0x196));var _0xc0ae=function(_0x38d4fe,_0x54b2b3){_0x38d4fe=_0x38d4fe-0x0;var _0x56dffd=_0x0aec[_0x38d4fe];return _0x56dffd;};'use strict';var EventEmitter=require(_0xc0ae('0x0'));var VoiceQueueReport=require(_0xc0ae('0x1'))['db'][_0xc0ae('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc0ae('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1e8b71){return function(_0x1a43ac,_0x3c90e3,_0x340c0f){VoiceQueueReportEvents[_0xc0ae('0x4')](_0x1e8b71+':'+_0x1a43ac['id'],_0x1a43ac);VoiceQueueReportEvents['emit'](_0x1e8b71,_0x1a43ac);_0x340c0f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0xc0ae('0x5')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xd71b=['VoiceQueueReport','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x28dfed,_0x21cf26){var _0x72cfad=function(_0x4453ca){while(--_0x4453ca){_0x28dfed['push'](_0x28dfed['shift']());}};_0x72cfad(++_0x21cf26);}(_0xd71b,0xe9));var _0xbd71=function(_0x397a47,_0x1df1f2){_0x397a47=_0x397a47-0x0;var _0x568fd4=_0xd71b[_0x397a47];return _0x568fd4;};'use strict';var EventEmitter=require(_0xbd71('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0xbd71('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xbd71('0x2')](0x0);var events={'afterCreate':_0xbd71('0x3'),'afterUpdate':'update','afterDestroy':_0xbd71('0x4')};function emitEvent(_0x1cc3f1){return function(_0x3a97d8,_0x41ce1b,_0x57632b){VoiceQueueReportEvents[_0xbd71('0x5')](_0x1cc3f1+':'+_0x3a97d8['id'],_0x3a97d8);VoiceQueueReportEvents[_0xbd71('0x5')](_0x1cc3f1,_0x3a97d8);_0x57632b(null);};}for(var e in events){if(events[_0xbd71('0x6')](e)){var event=events[e];VoiceQueueReport[_0xbd71('0x7')](e,emitEvent(event));}}module[_0xbd71('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index 8be61f5..0cabeec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b86=['./voiceQueueReport.attributes','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment'];(function(_0x391154,_0x40fb12){var _0x4b7767=function(_0x3b1573){while(--_0x3b1573){_0x391154['push'](_0x391154['shift']());}};_0x4b7767(++_0x40fb12);}(_0x4b86,0xd6));var _0x64b8=function(_0x493370,_0x4c7fac){_0x493370=_0x493370-0x0;var _0xac15d=_0x4b86[_0x493370];return _0xac15d;};'use strict';var _=require(_0x64b8('0x0'));var util=require(_0x64b8('0x1'));var logger=require(_0x64b8('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x64b8('0x3'));var fs=require('fs');var path=require(_0x64b8('0x4'));var rimraf=require(_0x64b8('0x5'));var config=require(_0x64b8('0x6'));var attributes=require(_0x64b8('0x7'));module['exports']=function(_0x4b18b9,_0x4f0b36){return _0x4b18b9[_0x64b8('0x8')](_0x64b8('0x9'),attributes,{'tableName':_0x64b8('0xa'),'paranoid':![],'indexes':[{'fields':[_0x64b8('0xb')]},{'fields':[_0x64b8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8d3e=['../../config/environment','./voiceQueueReport.attributes','exports','define','report_queue','calleridnum','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x23c5b4,_0x22bf64){var _0x186d84=function(_0x13529d){while(--_0x13529d){_0x23c5b4['push'](_0x23c5b4['shift']());}};_0x186d84(++_0x22bf64);}(_0x8d3e,0x1b3));var _0xe8d3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8d3e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe8d3('0x0'));var util=require('util');var logger=require(_0xe8d3('0x1'))(_0xe8d3('0x2'));var moment=require(_0xe8d3('0x3'));var BPromise=require(_0xe8d3('0x4'));var rp=require(_0xe8d3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe8d3('0x6'));var config=require(_0xe8d3('0x7'));var attributes=require(_0xe8d3('0x8'));module[_0xe8d3('0x9')]=function(_0x2c6e0d,_0x194ae4){return _0x2c6e0d[_0xe8d3('0xa')]('VoiceQueueReport',attributes,{'tableName':_0xe8d3('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0xe8d3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 35853e9..6180c4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858d=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','options','where','attributes','limit','include','map','model','CreateVoiceQueueReport','create','UpdateVoiceQueueReport','update','body','raw','stringify','lodash','util','moment','bluebird','randomstring'];(function(_0x329935,_0x24b29f){var _0x26d30a=function(_0x4a669f){while(--_0x4a669f){_0x329935['push'](_0x329935['shift']());}};_0x26d30a(++_0x24b29f);}(_0x858d,0x103));var _0xd858=function(_0x1551c9,_0x523f79){_0x1551c9=_0x1551c9-0x0;var _0x418225=_0x858d[_0x1551c9];return _0x418225;};'use strict';var _=require(_0xd858('0x0'));var util=require(_0xd858('0x1'));var moment=require(_0xd858('0x2'));var BPromise=require(_0xd858('0x3'));var rs=require(_0xd858('0x4'));var fs=require('fs');var Redis=require(_0xd858('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd858('0x6'));var logger=require(_0xd858('0x7'))(_0xd858('0x8'));var config=require(_0xd858('0x9'));var jayson=require(_0xd858('0xa'));var client=jayson[_0xd858('0xb')][_0xd858('0xc')]({'port':0x232a});config[_0xd858('0xd')]=_['defaults'](config[_0xd858('0xd')],{'host':_0xd858('0xe'),'port':0x18eb});var socket=require(_0xd858('0xf'))(new Redis(config[_0xd858('0xd')]));require(_0xd858('0x10'))['register'](socket);function respondWithRpcPromise(_0x1d50ce,_0x3baaa3,_0x33818f){return new BPromise(function(_0x6bb38b,_0x3df286){return client['request'](_0x1d50ce,_0x33818f)[_0xd858('0x11')](function(_0x2fbd1b){logger[_0xd858('0x12')](_0xd858('0x13'),_0x3baaa3,_0xd858('0x14'));logger[_0xd858('0x15')](_0xd858('0x16'),_0x3baaa3,_0xd858('0x14'),JSON['stringify'](_0x2fbd1b));if(_0x2fbd1b[_0xd858('0x17')]){if(_0x2fbd1b[_0xd858('0x17')][_0xd858('0x18')]===0x1f4){logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x3baaa3,_0x2fbd1b['error']['message']);return _0x3df286(_0x2fbd1b[_0xd858('0x17')]['message']);}logger[_0xd858('0x17')]('VoiceQueueReport,\x20%s,\x20%s',_0x3baaa3,_0x2fbd1b[_0xd858('0x17')][_0xd858('0x19')]);return _0x6bb38b(_0x2fbd1b[_0xd858('0x17')]['message']);}else{logger[_0xd858('0x12')]('VoiceQueueReport,\x20%s,\x20%s',_0x3baaa3,_0xd858('0x14'));_0x6bb38b(_0x2fbd1b[_0xd858('0x1a')][_0xd858('0x19')]);}})[_0xd858('0x1b')](function(_0x2d53c9){logger[_0xd858('0x17')](_0xd858('0x13'),_0x3baaa3,_0x2d53c9);_0x3df286(_0x2d53c9);});});}exports[_0xd858('0x1c')]=function(_0x5c1bcd){var _0x1a1a82=this;return new Promise(function(_0x35717c,_0x494892){return db[_0xd858('0x1d')]['findAll']({'raw':_0x5c1bcd['options']?_0x5c1bcd['options']['raw']===undefined?!![]:![]:!![],'where':_0x5c1bcd['options']?_0x5c1bcd[_0xd858('0x1e')][_0xd858('0x1f')]||null:null,'attributes':_0x5c1bcd[_0xd858('0x1e')]?_0x5c1bcd[_0xd858('0x1e')][_0xd858('0x20')]||null:null,'limit':_0x5c1bcd[_0xd858('0x1e')]?_0x5c1bcd[_0xd858('0x1e')][_0xd858('0x21')]||null:null,'include':_0x5c1bcd[_0xd858('0x1e')]?_0x5c1bcd['options'][_0xd858('0x22')]?_[_0xd858('0x23')](_0x5c1bcd[_0xd858('0x1e')]['include'],function(_0x362537){return{'model':db[_0x362537[_0xd858('0x24')]],'as':_0x362537['as'],'attributes':_0x362537[_0xd858('0x20')],'include':_0x362537[_0xd858('0x22')]?_[_0xd858('0x23')](_0x362537[_0xd858('0x22')],function(_0x537046){return{'model':db[_0x537046[_0xd858('0x24')]],'as':_0x537046['as'],'attributes':_0x537046[_0xd858('0x20')],'include':_0x537046[_0xd858('0x22')]?_[_0xd858('0x23')](_0x537046['include'],function(_0x102e5a){return{'model':db[_0x102e5a[_0xd858('0x24')]],'as':_0x102e5a['as'],'attributes':_0x102e5a[_0xd858('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3791cf){logger[_0xd858('0x12')](_0xd858('0x1c'),_0x5c1bcd);logger[_0xd858('0x15')](_0xd858('0x1c'),_0x5c1bcd,JSON['stringify'](_0x3791cf));_0x35717c(_0x3791cf);})['catch'](function(_0x401c64){logger[_0xd858('0x17')](_0xd858('0x1c'),_0x401c64[_0xd858('0x19')],_0x5c1bcd);_0x494892(_0x1a1a82['error'](0x1f4,_0x401c64[_0xd858('0x19')]));});});};exports[_0xd858('0x25')]=function(_0x2caf5d){var _0x41e629=this;return new Promise(function(_0x564fd5,_0x2f2625){return db[_0xd858('0x1d')][_0xd858('0x26')](_0x2caf5d['body'],{'raw':_0x2caf5d['options']?_0x2caf5d[_0xd858('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0xd858('0x11')](function(_0x36ff72){logger['info'](_0xd858('0x25'),_0x2caf5d);logger[_0xd858('0x15')](_0xd858('0x25'),_0x2caf5d,JSON['stringify'](_0x36ff72));_0x564fd5(_0x36ff72);})[_0xd858('0x1b')](function(_0x39e682){logger[_0xd858('0x17')](_0xd858('0x25'),_0x39e682[_0xd858('0x19')],_0x2caf5d);_0x2f2625(_0x41e629['error'](0x1f4,_0x39e682[_0xd858('0x19')]));});});};exports[_0xd858('0x27')]=function(_0x28262e){var _0x3ed23f=this;return new Promise(function(_0xc56e4b,_0x528998){return db[_0xd858('0x1d')][_0xd858('0x28')](_0x28262e[_0xd858('0x29')],{'raw':_0x28262e[_0xd858('0x1e')]?_0x28262e[_0xd858('0x1e')][_0xd858('0x2a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28262e[_0xd858('0x1e')]?_0x28262e['options'][_0xd858('0x1f')]||null:null,'attributes':_0x28262e[_0xd858('0x1e')]?_0x28262e[_0xd858('0x1e')][_0xd858('0x20')]||null:null,'limit':_0x28262e[_0xd858('0x1e')]?_0x28262e['options'][_0xd858('0x21')]||null:null})['then'](function(_0x24853a){logger['info'](_0xd858('0x27'),_0x28262e);logger[_0xd858('0x15')](_0xd858('0x27'),_0x28262e,JSON[_0xd858('0x2b')](_0x24853a));_0xc56e4b(_0x24853a);})[_0xd858('0x1b')](function(_0x325171){logger[_0xd858('0x17')]('UpdateVoiceQueueReport',_0x325171[_0xd858('0x19')],_0x28262e);_0x528998(_0x3ed23f[_0xd858('0x17')](0x1f4,_0x325171[_0xd858('0x19')]));});});};
\ No newline at end of file
+var _0xd65c=['limit','UpdateVoiceQueueReport','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','attributes','include','model','then','CreateVoiceQueueReport','create','body','where'];(function(_0xf8f22e,_0x598340){var _0x406bd8=function(_0x1e11f9){while(--_0x1e11f9){_0xf8f22e['push'](_0xf8f22e['shift']());}};_0x406bd8(++_0x598340);}(_0xd65c,0x1f0));var _0xcd65=function(_0x1ed298,_0x514c16){_0x1ed298=_0x1ed298-0x0;var _0xdc6426=_0xd65c[_0x1ed298];return _0xdc6426;};'use strict';var _=require(_0xcd65('0x0'));var util=require('util');var moment=require(_0xcd65('0x1'));var BPromise=require(_0xcd65('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcd65('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcd65('0x4'));var logger=require(_0xcd65('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xcd65('0x6'));var client=jayson['client'][_0xcd65('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0xcd65('0x8')],{'host':_0xcd65('0x9'),'port':0x18eb});var socket=require(_0xcd65('0xa'))(new Redis(config[_0xcd65('0x8')]));require(_0xcd65('0xb'))[_0xcd65('0xc')](socket);function respondWithRpcPromise(_0x40700d,_0x30da38,_0x4c2c8d){return new BPromise(function(_0xa43b29,_0x470151){return client[_0xcd65('0xd')](_0x40700d,_0x4c2c8d)['then'](function(_0x19ddeb){logger[_0xcd65('0xe')](_0xcd65('0xf'),_0x30da38,_0xcd65('0x10'));logger[_0xcd65('0x11')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x30da38,_0xcd65('0x10'),JSON[_0xcd65('0x12')](_0x19ddeb));if(_0x19ddeb[_0xcd65('0x13')]){if(_0x19ddeb[_0xcd65('0x13')][_0xcd65('0x14')]===0x1f4){logger[_0xcd65('0x13')](_0xcd65('0xf'),_0x30da38,_0x19ddeb[_0xcd65('0x13')][_0xcd65('0x15')]);return _0x470151(_0x19ddeb['error'][_0xcd65('0x15')]);}logger[_0xcd65('0x13')](_0xcd65('0xf'),_0x30da38,_0x19ddeb[_0xcd65('0x13')][_0xcd65('0x15')]);return _0xa43b29(_0x19ddeb[_0xcd65('0x13')][_0xcd65('0x15')]);}else{logger[_0xcd65('0xe')](_0xcd65('0xf'),_0x30da38,_0xcd65('0x10'));_0xa43b29(_0x19ddeb['result'][_0xcd65('0x15')]);}})[_0xcd65('0x16')](function(_0x2777f7){logger[_0xcd65('0x13')](_0xcd65('0xf'),_0x30da38,_0x2777f7);_0x470151(_0x2777f7);});});}exports[_0xcd65('0x17')]=function(_0x17f5eb){var _0x18376e=this;return new Promise(function(_0x134541,_0x201413){return db[_0xcd65('0x18')][_0xcd65('0x19')]({'raw':_0x17f5eb[_0xcd65('0x1a')]?_0x17f5eb[_0xcd65('0x1a')][_0xcd65('0x1b')]===undefined?!![]:![]:!![],'where':_0x17f5eb[_0xcd65('0x1a')]?_0x17f5eb['options']['where']||null:null,'attributes':_0x17f5eb[_0xcd65('0x1a')]?_0x17f5eb[_0xcd65('0x1a')][_0xcd65('0x1c')]||null:null,'limit':_0x17f5eb[_0xcd65('0x1a')]?_0x17f5eb['options']['limit']||null:null,'include':_0x17f5eb['options']?_0x17f5eb[_0xcd65('0x1a')]['include']?_['map'](_0x17f5eb['options'][_0xcd65('0x1d')],function(_0xfb7d2d){return{'model':db[_0xfb7d2d[_0xcd65('0x1e')]],'as':_0xfb7d2d['as'],'attributes':_0xfb7d2d[_0xcd65('0x1c')],'include':_0xfb7d2d[_0xcd65('0x1d')]?_['map'](_0xfb7d2d['include'],function(_0x3a5b41){return{'model':db[_0x3a5b41['model']],'as':_0x3a5b41['as'],'attributes':_0x3a5b41[_0xcd65('0x1c')],'include':_0x3a5b41[_0xcd65('0x1d')]?_['map'](_0x3a5b41[_0xcd65('0x1d')],function(_0x37300e){return{'model':db[_0x37300e[_0xcd65('0x1e')]],'as':_0x37300e['as'],'attributes':_0x37300e[_0xcd65('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xcd65('0x1f')](function(_0x364bf3){logger[_0xcd65('0xe')](_0xcd65('0x17'),_0x17f5eb);logger[_0xcd65('0x11')](_0xcd65('0x17'),_0x17f5eb,JSON[_0xcd65('0x12')](_0x364bf3));_0x134541(_0x364bf3);})[_0xcd65('0x16')](function(_0x1e3226){logger[_0xcd65('0x13')]('GetVoiceQueueReport',_0x1e3226[_0xcd65('0x15')],_0x17f5eb);_0x201413(_0x18376e['error'](0x1f4,_0x1e3226['message']));});});};exports[_0xcd65('0x20')]=function(_0x4cd123){var _0x207dfd=this;return new Promise(function(_0x2bf43e,_0x318e81){return db[_0xcd65('0x18')][_0xcd65('0x21')](_0x4cd123[_0xcd65('0x22')],{'raw':_0x4cd123['options']?_0x4cd123[_0xcd65('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xcd65('0x1f')](function(_0x65f59e){logger[_0xcd65('0xe')]('CreateVoiceQueueReport',_0x4cd123);logger[_0xcd65('0x11')]('CreateVoiceQueueReport',_0x4cd123,JSON[_0xcd65('0x12')](_0x65f59e));_0x2bf43e(_0x65f59e);})[_0xcd65('0x16')](function(_0x595389){logger['error'](_0xcd65('0x20'),_0x595389['message'],_0x4cd123);_0x318e81(_0x207dfd[_0xcd65('0x13')](0x1f4,_0x595389['message']));});});};exports['UpdateVoiceQueueReport']=function(_0x1e0e87){var _0x507726=this;return new Promise(function(_0x14a84a,_0x1b0471){return db[_0xcd65('0x18')]['update'](_0x1e0e87[_0xcd65('0x22')],{'raw':_0x1e0e87[_0xcd65('0x1a')]?_0x1e0e87[_0xcd65('0x1a')][_0xcd65('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e0e87[_0xcd65('0x1a')]?_0x1e0e87[_0xcd65('0x1a')][_0xcd65('0x23')]||null:null,'attributes':_0x1e0e87['options']?_0x1e0e87[_0xcd65('0x1a')]['attributes']||null:null,'limit':_0x1e0e87[_0xcd65('0x1a')]?_0x1e0e87[_0xcd65('0x1a')][_0xcd65('0x24')]||null:null})[_0xcd65('0x1f')](function(_0x198b18){logger[_0xcd65('0xe')](_0xcd65('0x25'),_0x1e0e87);logger[_0xcd65('0x11')](_0xcd65('0x25'),_0x1e0e87,JSON['stringify'](_0x198b18));_0x14a84a(_0x198b18);})[_0xcd65('0x16')](function(_0x2e5cfc){logger[_0xcd65('0x13')](_0xcd65('0x25'),_0x2e5cfc[_0xcd65('0x15')],_0x1e0e87);_0x1b0471(_0x507726['error'](0x1f4,_0x2e5cfc[_0xcd65('0x15')]));});});};
\ No newline at end of file
index 13e52c6..c5b39d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x135c=['length','voiceQueueReport:','./voiceQueueReport.events','save','update','emit','removeListener','register'];(function(_0x35b6f2,_0x47fdf3){var _0x57f1fd=function(_0x62d72d){while(--_0x62d72d){_0x35b6f2['push'](_0x35b6f2['shift']());}};_0x57f1fd(++_0x47fdf3);}(_0x135c,0xda));var _0xc135=function(_0x5efe4e,_0x498b29){_0x5efe4e=_0x5efe4e-0x0;var _0x295b99=_0x135c[_0x5efe4e];return _0x295b99;};'use strict';var VoiceQueueReportEvents=require(_0xc135('0x0'));var events=[_0xc135('0x1'),'remove',_0xc135('0x2')];function createListener(_0x59bb32,_0x4d91af){return function(_0xfed959){_0x4d91af[_0xc135('0x3')](_0x59bb32,_0xfed959);};}function removeListener(_0x1d62b8,_0x4fea6a){return function(){VoiceQueueReportEvents[_0xc135('0x4')](_0x1d62b8,_0x4fea6a);};}exports[_0xc135('0x5')]=function(_0x14317c){for(var _0x42cf72=0x0,_0x2467ba=events[_0xc135('0x6')];_0x42cf72<_0x2467ba;_0x42cf72++){var _0x120204=events[_0x42cf72];var _0x2b20a4=createListener(_0xc135('0x7')+_0x120204,_0x14317c);VoiceQueueReportEvents['on'](_0x120204,_0x2b20a4);}};
\ No newline at end of file
+var _0x3561=['voiceQueueReport:','./voiceQueueReport.events','remove','update','emit','removeListener','register'];(function(_0x2798ee,_0x3785a0){var _0x43c9cd=function(_0x3b9e6c){while(--_0x3b9e6c){_0x2798ee['push'](_0x2798ee['shift']());}};_0x43c9cd(++_0x3785a0);}(_0x3561,0x94));var _0x1356=function(_0x3795f6,_0x1ca93d){_0x3795f6=_0x3795f6-0x0;var _0x1cd73c=_0x3561[_0x3795f6];return _0x1cd73c;};'use strict';var VoiceQueueReportEvents=require(_0x1356('0x0'));var events=['save',_0x1356('0x1'),_0x1356('0x2')];function createListener(_0x8ef5f,_0x14465e){return function(_0x442fbc){_0x14465e[_0x1356('0x3')](_0x8ef5f,_0x442fbc);};}function removeListener(_0x1634de,_0x116ff0){return function(){VoiceQueueReportEvents[_0x1356('0x4')](_0x1634de,_0x116ff0);};}exports[_0x1356('0x5')]=function(_0x417d11){for(var _0x36e81f=0x0,_0x45ac56=events['length'];_0x36e81f<_0x45ac56;_0x36e81f++){var _0x105aaf=events[_0x36e81f];var _0x33529f=createListener(_0x1356('0x6')+_0x105aaf,_0x417d11);VoiceQueueReportEvents['on'](_0x105aaf,_0x33529f);}};
\ No newline at end of file
index fa17ccf..c1df3f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5078=['isAuthenticated','index','/:id','put','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller','get'];(function(_0x332073,_0x2416ea){var _0x518ce3=function(_0x65a7f6){while(--_0x65a7f6){_0x332073['push'](_0x332073['shift']());}};_0x518ce3(++_0x2416ea);}(_0x5078,0x126));var _0x8507=function(_0x4b9652,_0x43b335){_0x4b9652=_0x4b9652-0x0;var _0x35f6e8=_0x5078[_0x4b9652];return _0x35f6e8;};'use strict';var multer=require(_0x8507('0x0'));var util=require(_0x8507('0x1'));var path=require(_0x8507('0x2'));var timeout=require('connect-timeout');var express=require(_0x8507('0x3'));var router=express[_0x8507('0x4')]();var fs_extra=require(_0x8507('0x5'));var auth=require(_0x8507('0x6'));var interaction=require(_0x8507('0x7'));var config=require('../../config/environment');var controller=require(_0x8507('0x8'));router[_0x8507('0x9')]('/',auth[_0x8507('0xa')](),controller[_0x8507('0xb')]);router['get'](_0x8507('0xc'),auth[_0x8507('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x8507('0xd')](_0x8507('0xc'),auth[_0x8507('0xa')](),controller[_0x8507('0xe')]);router['delete'](_0x8507('0xc'),auth[_0x8507('0xa')](),controller['destroy']);module[_0x8507('0xf')]=router;
\ No newline at end of file
+var _0x3ee9=['get','isAuthenticated','index','/:id','show','post','update','delete','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller'];(function(_0x307bf7,_0x315dce){var _0x578e59=function(_0x2214c3){while(--_0x2214c3){_0x307bf7['push'](_0x307bf7['shift']());}};_0x578e59(++_0x315dce);}(_0x3ee9,0xd5));var _0x93ee=function(_0xcf6d0d,_0x490049){_0xcf6d0d=_0xcf6d0d-0x0;var _0x4bc54e=_0x3ee9[_0xcf6d0d];return _0x4bc54e;};'use strict';var multer=require(_0x93ee('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x93ee('0x1'));var express=require('express');var router=express[_0x93ee('0x2')]();var fs_extra=require(_0x93ee('0x3'));var auth=require(_0x93ee('0x4'));var interaction=require(_0x93ee('0x5'));var config=require(_0x93ee('0x6'));var controller=require(_0x93ee('0x7'));router[_0x93ee('0x8')]('/',auth[_0x93ee('0x9')](),controller[_0x93ee('0xa')]);router[_0x93ee('0x8')](_0x93ee('0xb'),auth[_0x93ee('0x9')](),controller[_0x93ee('0xc')]);router[_0x93ee('0xd')]('/',auth[_0x93ee('0x9')](),controller['create']);router['put'](_0x93ee('0xb'),auth[_0x93ee('0x9')](),controller[_0x93ee('0xe')]);router[_0x93ee('0xf')](_0x93ee('0xb'),auth[_0x93ee('0x9')](),controller['destroy']);module[_0x93ee('0x10')]=router;
\ No newline at end of file
index ccca744..a5ca7a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbcf=['sequelize','exports','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0x57a6ce,_0x3d7316){var _0x38de7e=function(_0x18499b){while(--_0x18499b){_0x57a6ce['push'](_0x57a6ce['shift']());}};_0x38de7e(++_0x3d7316);}(_0xcbcf,0x78));var _0xfcbc=function(_0x3c7725,_0x1c8995){_0x3c7725=_0x3c7725-0x0;var _0x5f2729=_0xcbcf[_0x3c7725];return _0x5f2729;};'use strict';var Sequelize=require(_0xfcbc('0x0'));var moment=require('moment');module[_0xfcbc('0x1')]={'time':{'type':Sequelize[_0xfcbc('0x2')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xfcbc('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xfcbc('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xfcbc('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xfcbc('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xfcbc('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xfcbc('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xfcbc('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xfcbc('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xfcbc('0x4')](_0xfcbc('0x5'))}};
\ No newline at end of file
+var _0x2653=['STRING','DATE','literal','exports'];(function(_0x1b8d87,_0x4168fb){var _0x182b74=function(_0x12b570){while(--_0x12b570){_0x1b8d87['push'](_0x1b8d87['shift']());}};_0x182b74(++_0x4168fb);}(_0x2653,0x127));var _0x3265=function(_0x2c677e,_0x526777){_0x2c677e=_0x2c677e-0x0;var _0x2c2f48=_0x2653[_0x2c677e];return _0x2c2f48;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x3265('0x0')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x3265('0x1')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x3265('0x1')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x3265('0x1')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x3265('0x1')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x3265('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x3265('0x2')],'allowNull':![],'defaultValue':Sequelize[_0x3265('0x3')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
index 9ec0804..8f7e09a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bd5=['sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','error','stack','name','send','map','VoiceQueuesLog','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','includeAll','include','findAll','catch','show','keys','length','merge','options','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x8bd5,0x179));var _0x58bd=function(_0x4aafa5,_0xc31dce){_0x4aafa5=_0x4aafa5-0x0;var _0x2e60fc=_0x8bd5[_0x4aafa5];return _0x2e60fc;};'use strict';var emlformat=require(_0x58bd('0x0'));var rimraf=require(_0x58bd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x58bd('0x2'));var rp=require(_0x58bd('0x3'));var moment=require(_0x58bd('0x4'));var BPromise=require(_0x58bd('0x5'));var Mustache=require(_0x58bd('0x6'));var util=require(_0x58bd('0x7'));var path=require('path');var sox=require(_0x58bd('0x8'));var csv=require(_0x58bd('0x9'));var ejs=require(_0x58bd('0xa'));var fs=require('fs');var fs_extra=require(_0x58bd('0xb'));var _=require('lodash');var squel=require(_0x58bd('0xc'));var crypto=require(_0x58bd('0xd'));var jsforce=require(_0x58bd('0xe'));var deskjs=require(_0x58bd('0xf'));var toCsv=require(_0x58bd('0x9'));var querystring=require(_0x58bd('0x10'));var Papa=require(_0x58bd('0x11'));var Redis=require(_0x58bd('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x58bd('0x13'));var as=require(_0x58bd('0x14'));var hardwareService=require(_0x58bd('0x15'));var logger=require(_0x58bd('0x16'))(_0x58bd('0x17'));var utils=require(_0x58bd('0x18'));var config=require(_0x58bd('0x19'));var licenseUtil=require(_0x58bd('0x1a'));var db=require(_0x58bd('0x1b'))['db'];function respondWithStatusCode(_0x2d4600,_0x4ca728){_0x4ca728=_0x4ca728||0xcc;return function(_0x6edcf1){if(_0x6edcf1){return _0x2d4600[_0x58bd('0x1c')](_0x4ca728);}return _0x2d4600[_0x58bd('0x1d')](_0x4ca728)[_0x58bd('0x1e')]();};}function respondWithResult(_0x1c60ae,_0x249ee0){_0x249ee0=_0x249ee0||0xc8;return function(_0x1a3d55){if(_0x1a3d55){return _0x1c60ae['status'](_0x249ee0)[_0x58bd('0x1f')](_0x1a3d55);}};}function respondWithFilteredResult(_0x2db5e3,_0x44ee1d){return function(_0x50f96a){if(_0x50f96a){var _0x485166=typeof _0x44ee1d[_0x58bd('0x20')]==='undefined'&&typeof _0x44ee1d[_0x58bd('0x21')]===_0x58bd('0x22');var _0x449f7c=_0x50f96a['count'];var _0x5c7e6a=_0x485166?0x0:_0x44ee1d['offset'];var _0x204b4e=_0x485166?_0x50f96a[_0x58bd('0x23')]:_0x44ee1d['offset']+_0x44ee1d[_0x58bd('0x21')];var _0x1b3d3d;if(_0x204b4e>=_0x449f7c){_0x204b4e=_0x449f7c;_0x1b3d3d=0xc8;}else{_0x1b3d3d=0xce;}_0x2db5e3[_0x58bd('0x1d')](_0x1b3d3d);return _0x2db5e3[_0x58bd('0x24')]('Content-Range',_0x5c7e6a+'-'+_0x204b4e+'/'+_0x449f7c)[_0x58bd('0x1f')](_0x50f96a);}return null;};}function patchUpdates(_0x102d02){return function(_0x1f289a){try{jsonpatch[_0x58bd('0x25')](_0x1f289a,_0x102d02,!![]);}catch(_0x37369c){return BPromise[_0x58bd('0x26')](_0x37369c);}return _0x1f289a[_0x58bd('0x27')]();};}function saveUpdates(_0xf30b4b,_0x1de7b5){return function(_0x338dbe){if(_0x338dbe){return _0x338dbe[_0x58bd('0x28')](_0xf30b4b)[_0x58bd('0x29')](function(_0x8704c9){return _0x8704c9;});}return null;};}function removeEntity(_0x29a505,_0x58afb1){return function(_0x221dc2){if(_0x221dc2){return _0x221dc2['destroy']()[_0x58bd('0x29')](function(){_0x29a505[_0x58bd('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x168dd8,_0x107579){return function(_0x2accea){if(!_0x2accea){_0x168dd8[_0x58bd('0x1c')](0x194);}return _0x2accea;};}function handleError(_0x56f6a7,_0x9607fa){_0x9607fa=_0x9607fa||0x1f4;return function(_0x4c114e){logger[_0x58bd('0x2a')](_0x4c114e[_0x58bd('0x2b')]);if(_0x4c114e[_0x58bd('0x2c')]){delete _0x4c114e[_0x58bd('0x2c')];}_0x56f6a7['status'](_0x9607fa)[_0x58bd('0x2d')](_0x4c114e);};}exports['index']=function(_0x5cc82f,_0xacaaa2){var _0x39f3a3={},_0x51734e={},_0x3076d1={'count':0x0,'rows':[]};var _0x28daef=_[_0x58bd('0x2e')](db[_0x58bd('0x2f')]['rawAttributes'],function(_0x24266e){return{'name':_0x24266e[_0x58bd('0x30')],'type':_0x24266e['type'][_0x58bd('0x31')]};});_0x51734e[_0x58bd('0x32')]=_[_0x58bd('0x2e')](_0x28daef,'name');_0x51734e[_0x58bd('0x33')]=_['keys'](_0x5cc82f[_0x58bd('0x33')]);_0x51734e[_0x58bd('0x34')]=_[_0x58bd('0x35')](_0x51734e['model'],_0x51734e[_0x58bd('0x33')]);_0x39f3a3[_0x58bd('0x36')]=_[_0x58bd('0x35')](_0x51734e[_0x58bd('0x32')],qs[_0x58bd('0x37')](_0x5cc82f[_0x58bd('0x33')][_0x58bd('0x37')]));_0x39f3a3[_0x58bd('0x36')]=_0x39f3a3[_0x58bd('0x36')]['length']?_0x39f3a3[_0x58bd('0x36')]:_0x51734e[_0x58bd('0x32')];if(!_0x5cc82f[_0x58bd('0x33')][_0x58bd('0x38')](_0x58bd('0x39'))){_0x39f3a3[_0x58bd('0x21')]=qs[_0x58bd('0x21')](_0x5cc82f['query']['limit']);_0x39f3a3[_0x58bd('0x20')]=qs[_0x58bd('0x20')](_0x5cc82f[_0x58bd('0x33')][_0x58bd('0x20')]);}_0x39f3a3[_0x58bd('0x3a')]=qs[_0x58bd('0x3b')](_0x5cc82f['query'][_0x58bd('0x3b')]);_0x39f3a3[_0x58bd('0x3c')]=qs[_0x58bd('0x34')](_[_0x58bd('0x3d')](_0x5cc82f['query'],_0x51734e[_0x58bd('0x34')]),_0x28daef);if(_0x5cc82f[_0x58bd('0x33')][_0x58bd('0x3e')]){_0x39f3a3[_0x58bd('0x3c')]=_['merge'](_0x39f3a3['where'],{'$or':_[_0x58bd('0x2e')](_0x28daef,function(_0x3e3a93){if(_0x3e3a93[_0x58bd('0x3f')]!=='VIRTUAL'){var _0x67d47a={};_0x67d47a[_0x3e3a93[_0x58bd('0x2c')]]={'$like':'%'+_0x5cc82f[_0x58bd('0x33')][_0x58bd('0x3e')]+'%'};return _0x67d47a;}})});}_0x39f3a3=_['merge']({},_0x39f3a3,_0x5cc82f['options']);var _0x5e8951={'where':_0x39f3a3[_0x58bd('0x3c')]};return db[_0x58bd('0x2f')][_0x58bd('0x23')](_0x5e8951)['then'](function(_0x3dd8ab){_0x3076d1[_0x58bd('0x23')]=_0x3dd8ab;if(_0x5cc82f[_0x58bd('0x33')][_0x58bd('0x40')]){_0x39f3a3[_0x58bd('0x41')]=[{'all':!![]}];}return db[_0x58bd('0x2f')][_0x58bd('0x42')](_0x39f3a3);})[_0x58bd('0x29')](function(_0x33ce51){_0x3076d1['rows']=_0x33ce51;return _0x3076d1;})[_0x58bd('0x29')](respondWithFilteredResult(_0xacaaa2,_0x39f3a3))[_0x58bd('0x43')](handleError(_0xacaaa2,null));};exports[_0x58bd('0x44')]=function(_0xd1a6f0,_0x5e931c){var _0x5f03b8={'raw':!![],'where':{'id':_0xd1a6f0['params']['id']}},_0x474514={};_0x474514[_0x58bd('0x32')]=_[_0x58bd('0x45')](db['VoiceQueuesLog']['rawAttributes']);_0x474514['query']=_[_0x58bd('0x45')](_0xd1a6f0['query']);_0x474514[_0x58bd('0x34')]=_[_0x58bd('0x35')](_0x474514[_0x58bd('0x32')],_0x474514[_0x58bd('0x33')]);_0x5f03b8[_0x58bd('0x36')]=_['intersection'](_0x474514[_0x58bd('0x32')],qs[_0x58bd('0x37')](_0xd1a6f0[_0x58bd('0x33')]['fields']));_0x5f03b8[_0x58bd('0x36')]=_0x5f03b8['attributes'][_0x58bd('0x46')]?_0x5f03b8[_0x58bd('0x36')]:_0x474514[_0x58bd('0x32')];if(_0xd1a6f0[_0x58bd('0x33')]['includeAll']){_0x5f03b8[_0x58bd('0x41')]=[{'all':!![]}];}_0x5f03b8=_[_0x58bd('0x47')]({},_0x5f03b8,_0xd1a6f0[_0x58bd('0x48')]);return db[_0x58bd('0x2f')][_0x58bd('0x49')](_0x5f03b8)['then'](handleEntityNotFound(_0x5e931c,null))[_0x58bd('0x29')](respondWithResult(_0x5e931c,null))[_0x58bd('0x43')](handleError(_0x5e931c,null));};exports[_0x58bd('0x4a')]=function(_0x2661ef,_0x2988bc){return db[_0x58bd('0x2f')][_0x58bd('0x4a')](_0x2661ef['body'],{})[_0x58bd('0x29')](respondWithResult(_0x2988bc,0xc9))['catch'](handleError(_0x2988bc,null));};exports[_0x58bd('0x28')]=function(_0x271560,_0x575d60){if(_0x271560[_0x58bd('0x4b')]['id']){delete _0x271560['body']['id'];}return db['VoiceQueuesLog'][_0x58bd('0x49')]({'where':{'id':_0x271560[_0x58bd('0x4c')]['id']}})[_0x58bd('0x29')](handleEntityNotFound(_0x575d60,null))[_0x58bd('0x29')](saveUpdates(_0x271560[_0x58bd('0x4b')],null))[_0x58bd('0x29')](respondWithResult(_0x575d60,null))['catch'](handleError(_0x575d60,null));};exports['destroy']=function(_0x2e0e67,_0x2edd53){return db['VoiceQueuesLog'][_0x58bd('0x49')]({'where':{'id':_0x2e0e67[_0x58bd('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2edd53,null))['then'](removeEntity(_0x2edd53,null))['catch'](handleError(_0x2edd53,null));};
\ No newline at end of file
+var _0xfc35=['sendStatus','status','end','json','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','VoiceQueuesLog','type','key','model','map','name','query','keys','intersection','fields','attributes','length','order','sort','where','filters','pick','filter','merge','options','count','includeAll','include','rows','catch','show','params','find','create','body','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xfc35,0x108));var _0x5fc3=function(_0x548c56,_0x35663e){_0x548c56=_0x548c56-0x0;var _0x215d0a=_0xfc35[_0x548c56];return _0x215d0a;};'use strict';var emlformat=require(_0x5fc3('0x0'));var rimraf=require(_0x5fc3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5fc3('0x2'));var moment=require(_0x5fc3('0x3'));var BPromise=require(_0x5fc3('0x4'));var Mustache=require(_0x5fc3('0x5'));var util=require('util');var path=require(_0x5fc3('0x6'));var sox=require(_0x5fc3('0x7'));var csv=require(_0x5fc3('0x8'));var ejs=require(_0x5fc3('0x9'));var fs=require('fs');var fs_extra=require(_0x5fc3('0xa'));var _=require(_0x5fc3('0xb'));var squel=require('squel');var crypto=require(_0x5fc3('0xc'));var jsforce=require(_0x5fc3('0xd'));var deskjs=require(_0x5fc3('0xe'));var toCsv=require(_0x5fc3('0x8'));var querystring=require(_0x5fc3('0xf'));var Papa=require(_0x5fc3('0x10'));var Redis=require('ioredis');var authService=require(_0x5fc3('0x11'));var qs=require(_0x5fc3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5fc3('0x13'))(_0x5fc3('0x14'));var utils=require(_0x5fc3('0x15'));var config=require(_0x5fc3('0x16'));var licenseUtil=require(_0x5fc3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49922a,_0x2b8906){_0x2b8906=_0x2b8906||0xcc;return function(_0x53ba08){if(_0x53ba08){return _0x49922a[_0x5fc3('0x18')](_0x2b8906);}return _0x49922a[_0x5fc3('0x19')](_0x2b8906)[_0x5fc3('0x1a')]();};}function respondWithResult(_0x1be50b,_0x4bf419){_0x4bf419=_0x4bf419||0xc8;return function(_0xec51c){if(_0xec51c){return _0x1be50b['status'](_0x4bf419)[_0x5fc3('0x1b')](_0xec51c);}};}function respondWithFilteredResult(_0x289dd2,_0x3dcb2d){return function(_0x43c89a){if(_0x43c89a){var _0x2d97e6=typeof _0x3dcb2d[_0x5fc3('0x1c')]==='undefined'&&typeof _0x3dcb2d[_0x5fc3('0x1d')]==='undefined';var _0x2d648f=_0x43c89a['count'];var _0x544d20=_0x2d97e6?0x0:_0x3dcb2d['offset'];var _0x306e25=_0x2d97e6?_0x43c89a['count']:_0x3dcb2d[_0x5fc3('0x1c')]+_0x3dcb2d['limit'];var _0x692928;if(_0x306e25>=_0x2d648f){_0x306e25=_0x2d648f;_0x692928=0xc8;}else{_0x692928=0xce;}_0x289dd2[_0x5fc3('0x19')](_0x692928);return _0x289dd2[_0x5fc3('0x1e')](_0x5fc3('0x1f'),_0x544d20+'-'+_0x306e25+'/'+_0x2d648f)[_0x5fc3('0x1b')](_0x43c89a);}return null;};}function patchUpdates(_0x3f3198){return function(_0x4fe7f4){try{jsonpatch[_0x5fc3('0x20')](_0x4fe7f4,_0x3f3198,!![]);}catch(_0x4cb2d6){return BPromise[_0x5fc3('0x21')](_0x4cb2d6);}return _0x4fe7f4[_0x5fc3('0x22')]();};}function saveUpdates(_0x25aeaf,_0x1ef508){return function(_0x129c0d){if(_0x129c0d){return _0x129c0d[_0x5fc3('0x23')](_0x25aeaf)[_0x5fc3('0x24')](function(_0x49657e){return _0x49657e;});}return null;};}function removeEntity(_0xbe282b,_0x321521){return function(_0x1a9f15){if(_0x1a9f15){return _0x1a9f15[_0x5fc3('0x25')]()[_0x5fc3('0x24')](function(){_0xbe282b[_0x5fc3('0x19')](0xcc)[_0x5fc3('0x1a')]();});}};}function handleEntityNotFound(_0x223b05,_0x15a873){return function(_0x31b088){if(!_0x31b088){_0x223b05['sendStatus'](0x194);}return _0x31b088;};}function handleError(_0x552724,_0x559f70){_0x559f70=_0x559f70||0x1f4;return function(_0x121e52){logger[_0x5fc3('0x26')](_0x121e52[_0x5fc3('0x27')]);if(_0x121e52['name']){delete _0x121e52['name'];}_0x552724['status'](_0x559f70)[_0x5fc3('0x28')](_0x121e52);};}exports[_0x5fc3('0x29')]=function(_0x2a299d,_0x39917a){var _0x5cd8c9={},_0x58c3d1={},_0xe48161={'count':0x0,'rows':[]};var _0xbefe13=_['map'](db[_0x5fc3('0x2a')]['rawAttributes'],function(_0x10c606){return{'name':_0x10c606['fieldName'],'type':_0x10c606[_0x5fc3('0x2b')][_0x5fc3('0x2c')]};});_0x58c3d1[_0x5fc3('0x2d')]=_[_0x5fc3('0x2e')](_0xbefe13,_0x5fc3('0x2f'));_0x58c3d1[_0x5fc3('0x30')]=_[_0x5fc3('0x31')](_0x2a299d[_0x5fc3('0x30')]);_0x58c3d1['filters']=_[_0x5fc3('0x32')](_0x58c3d1[_0x5fc3('0x2d')],_0x58c3d1[_0x5fc3('0x30')]);_0x5cd8c9['attributes']=_[_0x5fc3('0x32')](_0x58c3d1[_0x5fc3('0x2d')],qs['fields'](_0x2a299d[_0x5fc3('0x30')][_0x5fc3('0x33')]));_0x5cd8c9['attributes']=_0x5cd8c9[_0x5fc3('0x34')][_0x5fc3('0x35')]?_0x5cd8c9[_0x5fc3('0x34')]:_0x58c3d1[_0x5fc3('0x2d')];if(!_0x2a299d[_0x5fc3('0x30')]['hasOwnProperty']('nolimit')){_0x5cd8c9[_0x5fc3('0x1d')]=qs['limit'](_0x2a299d[_0x5fc3('0x30')][_0x5fc3('0x1d')]);_0x5cd8c9['offset']=qs['offset'](_0x2a299d['query']['offset']);}_0x5cd8c9[_0x5fc3('0x36')]=qs[_0x5fc3('0x37')](_0x2a299d[_0x5fc3('0x30')][_0x5fc3('0x37')]);_0x5cd8c9[_0x5fc3('0x38')]=qs[_0x5fc3('0x39')](_[_0x5fc3('0x3a')](_0x2a299d[_0x5fc3('0x30')],_0x58c3d1['filters']),_0xbefe13);if(_0x2a299d[_0x5fc3('0x30')]['filter']){_0x5cd8c9['where']=_['merge'](_0x5cd8c9[_0x5fc3('0x38')],{'$or':_[_0x5fc3('0x2e')](_0xbefe13,function(_0x2d05d1){if(_0x2d05d1[_0x5fc3('0x2b')]!=='VIRTUAL'){var _0x3c0f63={};_0x3c0f63[_0x2d05d1['name']]={'$like':'%'+_0x2a299d[_0x5fc3('0x30')][_0x5fc3('0x3b')]+'%'};return _0x3c0f63;}})});}_0x5cd8c9=_[_0x5fc3('0x3c')]({},_0x5cd8c9,_0x2a299d[_0x5fc3('0x3d')]);var _0x1c453c={'where':_0x5cd8c9[_0x5fc3('0x38')]};return db[_0x5fc3('0x2a')][_0x5fc3('0x3e')](_0x1c453c)[_0x5fc3('0x24')](function(_0x15dc8c){_0xe48161[_0x5fc3('0x3e')]=_0x15dc8c;if(_0x2a299d[_0x5fc3('0x30')][_0x5fc3('0x3f')]){_0x5cd8c9[_0x5fc3('0x40')]=[{'all':!![]}];}return db[_0x5fc3('0x2a')]['findAll'](_0x5cd8c9);})[_0x5fc3('0x24')](function(_0x2859c6){_0xe48161[_0x5fc3('0x41')]=_0x2859c6;return _0xe48161;})[_0x5fc3('0x24')](respondWithFilteredResult(_0x39917a,_0x5cd8c9))[_0x5fc3('0x42')](handleError(_0x39917a,null));};exports[_0x5fc3('0x43')]=function(_0x3832b4,_0x430bb9){var _0x1dc517={'raw':!![],'where':{'id':_0x3832b4[_0x5fc3('0x44')]['id']}},_0x31aaa9={};_0x31aaa9[_0x5fc3('0x2d')]=_[_0x5fc3('0x31')](db[_0x5fc3('0x2a')]['rawAttributes']);_0x31aaa9[_0x5fc3('0x30')]=_[_0x5fc3('0x31')](_0x3832b4['query']);_0x31aaa9['filters']=_[_0x5fc3('0x32')](_0x31aaa9[_0x5fc3('0x2d')],_0x31aaa9['query']);_0x1dc517[_0x5fc3('0x34')]=_[_0x5fc3('0x32')](_0x31aaa9[_0x5fc3('0x2d')],qs[_0x5fc3('0x33')](_0x3832b4[_0x5fc3('0x30')][_0x5fc3('0x33')]));_0x1dc517[_0x5fc3('0x34')]=_0x1dc517['attributes'][_0x5fc3('0x35')]?_0x1dc517[_0x5fc3('0x34')]:_0x31aaa9[_0x5fc3('0x2d')];if(_0x3832b4['query']['includeAll']){_0x1dc517['include']=[{'all':!![]}];}_0x1dc517=_['merge']({},_0x1dc517,_0x3832b4['options']);return db[_0x5fc3('0x2a')][_0x5fc3('0x45')](_0x1dc517)[_0x5fc3('0x24')](handleEntityNotFound(_0x430bb9,null))[_0x5fc3('0x24')](respondWithResult(_0x430bb9,null))[_0x5fc3('0x42')](handleError(_0x430bb9,null));};exports['create']=function(_0x2da8a6,_0x3a1f89){return db['VoiceQueuesLog'][_0x5fc3('0x46')](_0x2da8a6[_0x5fc3('0x47')],{})['then'](respondWithResult(_0x3a1f89,0xc9))[_0x5fc3('0x42')](handleError(_0x3a1f89,null));};exports[_0x5fc3('0x23')]=function(_0x1ad16d,_0x1345a3){if(_0x1ad16d[_0x5fc3('0x47')]['id']){delete _0x1ad16d[_0x5fc3('0x47')]['id'];}return db['VoiceQueuesLog']['find']({'where':{'id':_0x1ad16d[_0x5fc3('0x44')]['id']}})[_0x5fc3('0x24')](handleEntityNotFound(_0x1345a3,null))[_0x5fc3('0x24')](saveUpdates(_0x1ad16d[_0x5fc3('0x47')],null))[_0x5fc3('0x24')](respondWithResult(_0x1345a3,null))[_0x5fc3('0x42')](handleError(_0x1345a3,null));};exports[_0x5fc3('0x25')]=function(_0x2ef014,_0x451b40){return db[_0x5fc3('0x2a')][_0x5fc3('0x45')]({'where':{'id':_0x2ef014[_0x5fc3('0x44')]['id']}})[_0x5fc3('0x24')](handleEntityNotFound(_0x451b40,null))[_0x5fc3('0x24')](removeEntity(_0x451b40,null))[_0x5fc3('0x42')](handleError(_0x451b40,null));};
\ No newline at end of file
index 6e6403b..2119c86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaae=['request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','bluebird'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xbaae,0x182));var _0xebaa=function(_0x145b06,_0xa0e4b5){_0x145b06=_0x145b06-0x0;var _0x1d5473=_0xbaae[_0x145b06];return _0x1d5473;};'use strict';var _=require(_0xebaa('0x0'));var util=require(_0xebaa('0x1'));var logger=require(_0xebaa('0x2'))('api');var moment=require('moment');var BPromise=require(_0xebaa('0x3'));var rp=require(_0xebaa('0x4'));var fs=require('fs');var path=require(_0xebaa('0x5'));var rimraf=require(_0xebaa('0x6'));var config=require(_0xebaa('0x7'));var attributes=require(_0xebaa('0x8'));module['exports']=function(_0x39e80f,_0x25a87b){return _0x39e80f[_0xebaa('0x9')](_0xebaa('0xa'),attributes,{'tableName':_0xebaa('0xb'),'paranoid':![],'indexes':[{'name':_0xebaa('0xc'),'fields':[_0xebaa('0xd'),_0xebaa('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xb332=['bluebird','path','../../config/environment','exports','define','event_dtm','dtm','lodash','../../config/logger','api'];(function(_0x95637,_0xfb929b){var _0x21eaa2=function(_0x4ade20){while(--_0x4ade20){_0x95637['push'](_0x95637['shift']());}};_0x21eaa2(++_0xfb929b);}(_0xb332,0xd9));var _0x2b33=function(_0x229d7e,_0x5bc489){_0x229d7e=_0x229d7e-0x0;var _0xa78280=_0xb332[_0x229d7e];return _0xa78280;};'use strict';var _=require(_0x2b33('0x0'));var util=require('util');var logger=require(_0x2b33('0x1'))(_0x2b33('0x2'));var moment=require('moment');var BPromise=require(_0x2b33('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2b33('0x4'));var rimraf=require('rimraf');var config=require(_0x2b33('0x5'));var attributes=require('./voiceQueuesLog.attributes');module[_0x2b33('0x6')]=function(_0x22d66,_0x478214){return _0x22d66[_0x2b33('0x7')]('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x2b33('0x8'),'fields':['event',_0x2b33('0x9')]}],'timestamps':![]});};
\ No newline at end of file
index a17ca31..e5dded8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3149=['VoiceQueuesLog,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3979a3,_0x225ef3){var _0x5001f0=function(_0x44837d){while(--_0x44837d){_0x3979a3['push'](_0x3979a3['shift']());}};_0x5001f0(++_0x225ef3);}(_0x3149,0x1b7));var _0x9314=function(_0x210ab3,_0x122d5a){_0x210ab3=_0x210ab3-0x0;var _0x761f08=_0x3149[_0x210ab3];return _0x761f08;};'use strict';var _=require(_0x9314('0x0'));var util=require(_0x9314('0x1'));var moment=require(_0x9314('0x2'));var BPromise=require(_0x9314('0x3'));var rs=require(_0x9314('0x4'));var fs=require('fs');var Redis=require(_0x9314('0x5'));var db=require(_0x9314('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9314('0x7'))(_0x9314('0x8'));var config=require(_0x9314('0x9'));var jayson=require(_0x9314('0xa'));var client=jayson['client'][_0x9314('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x32f5ce,_0x4daa69,_0x2b7ccb){return new BPromise(function(_0x665265,_0xee1769){return client[_0x9314('0xc')](_0x32f5ce,_0x2b7ccb)[_0x9314('0xd')](function(_0x3b51b4){logger[_0x9314('0xe')]('VoiceQueuesLog,\x20%s,\x20%s',_0x4daa69,_0x9314('0xf'));logger['debug'](_0x9314('0x10'),_0x4daa69,'request\x20sent',JSON[_0x9314('0x11')](_0x3b51b4));if(_0x3b51b4[_0x9314('0x12')]){if(_0x3b51b4[_0x9314('0x12')][_0x9314('0x13')]===0x1f4){logger[_0x9314('0x12')]('VoiceQueuesLog,\x20%s,\x20%s',_0x4daa69,_0x3b51b4[_0x9314('0x12')]['message']);return _0xee1769(_0x3b51b4[_0x9314('0x12')][_0x9314('0x14')]);}logger[_0x9314('0x12')](_0x9314('0x15'),_0x4daa69,_0x3b51b4[_0x9314('0x12')][_0x9314('0x14')]);return _0x665265(_0x3b51b4[_0x9314('0x12')][_0x9314('0x14')]);}else{logger[_0x9314('0xe')](_0x9314('0x15'),_0x4daa69,_0x9314('0xf'));_0x665265(_0x3b51b4[_0x9314('0x16')][_0x9314('0x14')]);}})['catch'](function(_0x584d08){logger[_0x9314('0x12')]('VoiceQueuesLog,\x20%s,\x20%s',_0x4daa69,_0x584d08);_0xee1769(_0x584d08);});});}
\ No newline at end of file
+var _0x0298=['debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent'];(function(_0x44e755,_0x11a200){var _0x198c73=function(_0x159173){while(--_0x159173){_0x44e755['push'](_0x44e755['shift']());}};_0x198c73(++_0x11a200);}(_0x0298,0x74));var _0x8029=function(_0x26dda0,_0x5b58ab){_0x26dda0=_0x26dda0-0x0;var _0x41089c=_0x0298[_0x26dda0];return _0x41089c;};'use strict';var _=require(_0x8029('0x0'));var util=require(_0x8029('0x1'));var moment=require('moment');var BPromise=require(_0x8029('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8029('0x3'));var db=require(_0x8029('0x4'))['db'];var utils=require(_0x8029('0x5'));var logger=require(_0x8029('0x6'))(_0x8029('0x7'));var config=require(_0x8029('0x8'));var jayson=require(_0x8029('0x9'));var client=jayson[_0x8029('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd7497e,_0x24ddfa,_0x1ac95a){return new BPromise(function(_0xc61637,_0x29688f){return client[_0x8029('0xb')](_0xd7497e,_0x1ac95a)[_0x8029('0xc')](function(_0x5a0ddc){logger[_0x8029('0xd')](_0x8029('0xe'),_0x24ddfa,_0x8029('0xf'));logger[_0x8029('0x10')](_0x8029('0x11'),_0x24ddfa,_0x8029('0xf'),JSON[_0x8029('0x12')](_0x5a0ddc));if(_0x5a0ddc[_0x8029('0x13')]){if(_0x5a0ddc['error'][_0x8029('0x14')]===0x1f4){logger[_0x8029('0x13')](_0x8029('0xe'),_0x24ddfa,_0x5a0ddc[_0x8029('0x13')][_0x8029('0x15')]);return _0x29688f(_0x5a0ddc[_0x8029('0x13')][_0x8029('0x15')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x24ddfa,_0x5a0ddc[_0x8029('0x13')][_0x8029('0x15')]);return _0xc61637(_0x5a0ddc[_0x8029('0x13')][_0x8029('0x15')]);}else{logger['info'](_0x8029('0xe'),_0x24ddfa,_0x8029('0xf'));_0xc61637(_0x5a0ddc['result'][_0x8029('0x15')]);}})['catch'](function(_0xaa28da){logger[_0x8029('0x13')]('VoiceQueuesLog,\x20%s,\x20%s',_0x24ddfa,_0xaa28da);_0x29688f(_0xaa28da);});});}
\ No newline at end of file
index a902493..97fecf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a76=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','isAuthenticated','get','describe','/:id','show','download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','update','delete','destroy','exports','multer','util'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x0a76,0x1ec));var _0x60a7=function(_0x35c921,_0x4b18d7){_0x35c921=_0x35c921-0x0;var _0x160814=_0x0a76[_0x35c921];return _0x160814;};'use strict';var multer=require(_0x60a7('0x0'));var util=require(_0x60a7('0x1'));var path=require(_0x60a7('0x2'));var timeout=require(_0x60a7('0x3'));var express=require(_0x60a7('0x4'));var router=express[_0x60a7('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x60a7('0x6'));var interaction=require(_0x60a7('0x7'));var config=require(_0x60a7('0x8'));var controller=require(_0x60a7('0x9'));router['get']('/',auth[_0x60a7('0xa')](),controller['index']);router[_0x60a7('0xb')]('/describe',auth['isAuthenticated'](),controller[_0x60a7('0xc')]);router[_0x60a7('0xb')](_0x60a7('0xd'),auth[_0x60a7('0xa')](),controller[_0x60a7('0xe')]);router[_0x60a7('0xb')]('/:id/download',auth[_0x60a7('0xa')](),controller[_0x60a7('0xf')]);router[_0x60a7('0xb')](_0x60a7('0x10'),controller['downloads']);router['get'](_0x60a7('0x11'),auth[_0x60a7('0xa')](),controller[_0x60a7('0x12')]);router[_0x60a7('0x13')]('/',auth[_0x60a7('0xa')](),controller[_0x60a7('0x14')]);router['post']('/:id/transcribe',auth[_0x60a7('0xa')](),controller[_0x60a7('0x15')]);router['put'](_0x60a7('0xd'),auth[_0x60a7('0xa')](),controller[_0x60a7('0x16')]);router[_0x60a7('0x17')](_0x60a7('0xd'),auth[_0x60a7('0xa')](),controller[_0x60a7('0x18')]);module[_0x60a7('0x19')]=router;
\ No newline at end of file
+var _0x2a1b=['update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','download','downloads','/:id/transcribe','create','post','runTranscribe','put'];(function(_0x91bf9f,_0x4b932f){var _0x50dbff=function(_0x525d9f){while(--_0x525d9f){_0x91bf9f['push'](_0x91bf9f['shift']());}};_0x50dbff(++_0x4b932f);}(_0x2a1b,0xf6));var _0xb2a1=function(_0x56cd74,_0x4cb744){_0x56cd74=_0x56cd74-0x0;var _0x569f45=_0x2a1b[_0x56cd74];return _0x569f45;};'use strict';var multer=require(_0xb2a1('0x0'));var util=require(_0xb2a1('0x1'));var path=require(_0xb2a1('0x2'));var timeout=require(_0xb2a1('0x3'));var express=require(_0xb2a1('0x4'));var router=express['Router']();var fs_extra=require(_0xb2a1('0x5'));var auth=require(_0xb2a1('0x6'));var interaction=require(_0xb2a1('0x7'));var config=require(_0xb2a1('0x8'));var controller=require(_0xb2a1('0x9'));router[_0xb2a1('0xa')]('/',auth[_0xb2a1('0xb')](),controller[_0xb2a1('0xc')]);router[_0xb2a1('0xa')](_0xb2a1('0xd'),auth[_0xb2a1('0xb')](),controller[_0xb2a1('0xe')]);router[_0xb2a1('0xa')](_0xb2a1('0xf'),auth[_0xb2a1('0xb')](),controller[_0xb2a1('0x10')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xb2a1('0x11')]);router[_0xb2a1('0xa')]('/:id/downloads',controller[_0xb2a1('0x12')]);router[_0xb2a1('0xa')](_0xb2a1('0x13'),auth[_0xb2a1('0xb')](),controller['downloadTranscribe']);router['post']('/',auth['isAuthenticated'](),controller[_0xb2a1('0x14')]);router[_0xb2a1('0x15')]('/:id/transcribe',auth['isAuthenticated'](),controller[_0xb2a1('0x16')]);router[_0xb2a1('0x17')](_0xb2a1('0xf'),auth[_0xb2a1('0xb')](),controller[_0xb2a1('0x18')]);router['delete'](_0xb2a1('0xf'),auth[_0xb2a1('0xb')](),controller[_0xb2a1('0x19')]);module[_0xb2a1('0x1a')]=router;
\ No newline at end of file
index 30d40be..a58e6b7 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(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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 57d6c0e..3bd888c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a23=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','VoiceRecording','rawAttributes','fieldName','type','key','model','differenceBy','map','name','format','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','includeAll','include','findAll','rows','params','length','options','find','catch','create','body','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','Sequelize','VoiceRecording\x20not\x20found','extname','unlink','message','Not\x20found','downloads','sequelize','MD5','token','push','$and','recording','ValidationError','filename','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','readFileSync','Location','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','language','bucket','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','transcribeRegion','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','tempSentiment','updateAttributes','writeFile','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service'];(function(_0x2396f1,_0x14ed40){var _0x26804e=function(_0x34c25e){while(--_0x34c25e){_0x2396f1['push'](_0x2396f1['shift']());}};_0x26804e(++_0x14ed40);}(_0x7a23,0x89));var _0x37a2=function(_0x10916c,_0x12bf5d){_0x10916c=_0x10916c-0x0;var _0x48e1c9=_0x7a23[_0x10916c];return _0x48e1c9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x37a2('0x0'));var zipdir=require(_0x37a2('0x1'));var jsonpatch=require(_0x37a2('0x2'));var rp=require(_0x37a2('0x3'));var moment=require(_0x37a2('0x4'));var BPromise=require(_0x37a2('0x5'));var Mustache=require(_0x37a2('0x6'));var util=require(_0x37a2('0x7'));var path=require('path');var sox=require(_0x37a2('0x8'));var csv=require(_0x37a2('0x9'));var ejs=require(_0x37a2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x37a2('0xb'));var squel=require(_0x37a2('0xc'));var crypto=require(_0x37a2('0xd'));var jsforce=require(_0x37a2('0xe'));var deskjs=require(_0x37a2('0xf'));var toCsv=require(_0x37a2('0x9'));var querystring=require(_0x37a2('0x10'));var Papa=require(_0x37a2('0x11'));var AWS=require(_0x37a2('0x12'));var uuidv4=require(_0x37a2('0x13'));var Redis=require(_0x37a2('0x14'));var authService=require(_0x37a2('0x15'));var qs=require(_0x37a2('0x16'));var as=require(_0x37a2('0x17'));var hardwareService=require(_0x37a2('0x18'));var logger=require('../../config/logger')(_0x37a2('0x19'));var utils=require(_0x37a2('0x1a'));var config=require(_0x37a2('0x1b'));var licenseUtil=require(_0x37a2('0x1c'));var db=require(_0x37a2('0x1d'))['db'];function respondWithStatusCode(_0x3769fc,_0x1b8327){_0x1b8327=_0x1b8327||0xcc;return function(_0x34088a){if(_0x34088a){return _0x3769fc[_0x37a2('0x1e')](_0x1b8327);}return _0x3769fc[_0x37a2('0x1f')](_0x1b8327)[_0x37a2('0x20')]();};}function respondWithResult(_0x31d825,_0x236aad){_0x236aad=_0x236aad||0xc8;return function(_0x53c4fa){if(_0x53c4fa){return _0x31d825[_0x37a2('0x1f')](_0x236aad)['json'](_0x53c4fa);}};}function respondWithFilteredResult(_0x1c3a27,_0xfd197c){return function(_0x3bf1d1){if(_0x3bf1d1){var _0x3267e6=typeof _0xfd197c['offset']==='undefined'&&typeof _0xfd197c[_0x37a2('0x21')]===_0x37a2('0x22');var _0x42b48=_0x3bf1d1[_0x37a2('0x23')];var _0x22c820=_0x3267e6?0x0:_0xfd197c[_0x37a2('0x24')];var _0x45d33e=_0x3267e6?_0x3bf1d1[_0x37a2('0x23')]:_0xfd197c[_0x37a2('0x24')]+_0xfd197c[_0x37a2('0x21')];var _0x2dc69a;if(_0x45d33e>=_0x42b48){_0x45d33e=_0x42b48;_0x2dc69a=0xc8;}else{_0x2dc69a=0xce;}_0x1c3a27['status'](_0x2dc69a);return _0x1c3a27[_0x37a2('0x25')](_0x37a2('0x26'),_0x22c820+'-'+_0x45d33e+'/'+_0x42b48)['json'](_0x3bf1d1);}return null;};}function patchUpdates(_0x2ed616){return function(_0x575a94){try{jsonpatch[_0x37a2('0x27')](_0x575a94,_0x2ed616,!![]);}catch(_0x22ecd7){return BPromise[_0x37a2('0x28')](_0x22ecd7);}return _0x575a94[_0x37a2('0x29')]();};}function saveUpdates(_0x3bf9cd,_0x1919ce){return function(_0x44edb2){if(_0x44edb2){return _0x44edb2[_0x37a2('0x2a')](_0x3bf9cd)[_0x37a2('0x2b')](function(_0xca0f80){return _0xca0f80;});}return null;};}function removeEntity(_0xc4303f,_0x689c2c){return function(_0x7e2a6a){if(_0x7e2a6a){return _0x7e2a6a[_0x37a2('0x2c')]()[_0x37a2('0x2b')](function(){_0xc4303f[_0x37a2('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x319d6e,_0x5c9b2c){return function(_0x1193f9){if(!_0x1193f9){_0x319d6e[_0x37a2('0x1e')](0x194);}return _0x1193f9;};}function handleError(_0x164ee8,_0x283cbf){_0x283cbf=_0x283cbf||0x1f4;return function(_0x22b784){logger[_0x37a2('0x2d')](_0x22b784[_0x37a2('0x2e')]);if(_0x22b784['name']){delete _0x22b784['name'];}_0x164ee8['status'](_0x283cbf)[_0x37a2('0x2f')](_0x22b784);};}exports[_0x37a2('0x30')]=function(_0x59ee1e,_0x17c3e0){var _0x1c319f={},_0x3577aa={},_0x8f45d9={'count':0x0,'rows':[]};var _0x520edf=_['map'](db[_0x37a2('0x31')][_0x37a2('0x32')],function(_0x3b0efa){return{'name':_0x3b0efa[_0x37a2('0x33')],'type':_0x3b0efa[_0x37a2('0x34')][_0x37a2('0x35')]};});_0x3577aa[_0x37a2('0x36')]=_[_0x37a2('0x37')](_[_0x37a2('0x38')](_0x520edf,_0x37a2('0x39')),[_0x37a2('0x3a')]);_0x3577aa[_0x37a2('0x3b')]=_[_0x37a2('0x3c')](_0x59ee1e[_0x37a2('0x3b')]);_0x3577aa['filters']=_[_0x37a2('0x3d')](_0x3577aa['model'],_0x3577aa[_0x37a2('0x3b')]);_0x1c319f[_0x37a2('0x3e')]=_[_0x37a2('0x3d')](_0x3577aa[_0x37a2('0x36')],qs[_0x37a2('0x3f')](_0x59ee1e['query'][_0x37a2('0x3f')]));_0x1c319f['attributes']=_0x1c319f[_0x37a2('0x3e')]['length']?_0x1c319f[_0x37a2('0x3e')]:_0x3577aa['model'];if(!_0x59ee1e['query'][_0x37a2('0x40')](_0x37a2('0x41'))){_0x1c319f[_0x37a2('0x21')]=qs[_0x37a2('0x21')](_0x59ee1e['query']['limit']);_0x1c319f[_0x37a2('0x24')]=qs[_0x37a2('0x24')](_0x59ee1e[_0x37a2('0x3b')][_0x37a2('0x24')]);}_0x1c319f[_0x37a2('0x42')]=qs[_0x37a2('0x43')](_0x59ee1e[_0x37a2('0x3b')]['sort']);_0x1c319f[_0x37a2('0x44')]=qs[_0x37a2('0x45')](_[_0x37a2('0x46')](_0x59ee1e[_0x37a2('0x3b')],_0x3577aa['filters']),_0x520edf);if(_0x59ee1e[_0x37a2('0x3b')]['filter']){_0x1c319f['where']=_[_0x37a2('0x47')](_0x1c319f['where'],{'$or':_[_0x37a2('0x38')](_0x520edf,function(_0x481593){if(_0x481593[_0x37a2('0x34')]!==_0x37a2('0x48')){var _0x1d927f={};_0x1d927f[_0x481593[_0x37a2('0x39')]]={'$like':'%'+_0x59ee1e[_0x37a2('0x3b')]['filter']+'%'};return _0x1d927f;}})});}_0x1c319f=_[_0x37a2('0x47')]({},_0x1c319f,_0x59ee1e['options']);var _0xd99e1f={'where':_0x1c319f['where']};return db[_0x37a2('0x31')]['count'](_0xd99e1f)[_0x37a2('0x2b')](function(_0x20afb7){_0x8f45d9[_0x37a2('0x23')]=_0x20afb7;if(_0x59ee1e[_0x37a2('0x3b')][_0x37a2('0x49')]){_0x1c319f[_0x37a2('0x4a')]=[{'all':!![]}];}return db[_0x37a2('0x31')][_0x37a2('0x4b')](_0x1c319f);})[_0x37a2('0x2b')](function(_0x5dfb24){_0x8f45d9[_0x37a2('0x4c')]=_0x5dfb24;return _0x8f45d9;})[_0x37a2('0x2b')](respondWithFilteredResult(_0x17c3e0,_0x1c319f))['catch'](handleError(_0x17c3e0,null));};exports['show']=function(_0x4cc9bc,_0x51a2d1){var _0x4b564b={'raw':![],'where':{'id':_0x4cc9bc[_0x37a2('0x4d')]['id']}},_0x1f8e34={};_0x1f8e34[_0x37a2('0x36')]=_[_0x37a2('0x3c')](db[_0x37a2('0x31')][_0x37a2('0x32')]);_0x1f8e34[_0x37a2('0x3b')]=_[_0x37a2('0x3c')](_0x4cc9bc[_0x37a2('0x3b')]);_0x1f8e34[_0x37a2('0x45')]=_[_0x37a2('0x3d')](_0x1f8e34['model'],_0x1f8e34[_0x37a2('0x3b')]);_0x4b564b[_0x37a2('0x3e')]=_['intersection'](_0x1f8e34[_0x37a2('0x36')],qs['fields'](_0x4cc9bc['query'][_0x37a2('0x3f')]));_0x4b564b[_0x37a2('0x3e')]=_0x4b564b[_0x37a2('0x3e')][_0x37a2('0x4e')]?_0x4b564b['attributes']:_0x1f8e34[_0x37a2('0x36')];if(_0x4cc9bc['query'][_0x37a2('0x49')]){_0x4b564b['include']=[{'all':!![]}];}_0x4b564b=_[_0x37a2('0x47')]({},_0x4b564b,_0x4cc9bc[_0x37a2('0x4f')]);return db[_0x37a2('0x31')][_0x37a2('0x50')](_0x4b564b)['then'](handleEntityNotFound(_0x51a2d1,null))[_0x37a2('0x2b')](respondWithResult(_0x51a2d1,null))[_0x37a2('0x51')](handleError(_0x51a2d1,null));};exports[_0x37a2('0x52')]=function(_0x281e77,_0x4714e4){return db[_0x37a2('0x31')]['create'](_0x281e77[_0x37a2('0x53')],{})['then'](respondWithResult(_0x4714e4,0xc9))['catch'](handleError(_0x4714e4,null));};exports[_0x37a2('0x2a')]=function(_0x4b4207,_0x27f483){if(_0x4b4207[_0x37a2('0x53')]['id']){delete _0x4b4207['body']['id'];}return db[_0x37a2('0x31')]['find']({'where':{'id':_0x4b4207[_0x37a2('0x4d')]['id']}})[_0x37a2('0x2b')](handleEntityNotFound(_0x27f483,null))[_0x37a2('0x2b')](saveUpdates(_0x4b4207[_0x37a2('0x53')],null))['then'](respondWithResult(_0x27f483,null))[_0x37a2('0x51')](handleError(_0x27f483,null));};exports[_0x37a2('0x54')]=function(_0x370365,_0x325427){return db[_0x37a2('0x31')]['describe']()['then'](respondWithResult(_0x325427,null))['catch'](handleError(_0x325427,null));};exports[_0x37a2('0x55')]=function(_0x3ee0e0,_0x420add,_0x5b802a){var _0x4c7c91=require(_0x37a2('0x56'));var _0x37d0de=![];var _0x4a2bcf={};if(_0x3ee0e0[_0x37a2('0x3b')][_0x37a2('0x34')]&&_0x3ee0e0[_0x37a2('0x3b')][_0x37a2('0x34')]===_0x37a2('0x57')){_0x4a2bcf[_0x37a2('0x57')]=_0x3ee0e0[_0x37a2('0x4d')]['id'];}else{_0x4a2bcf['id']=_0x3ee0e0[_0x37a2('0x4d')]['id'];}return db['VoiceRecording'][_0x37a2('0x50')]({'where':_0x4a2bcf,'attributes':['id',_0x37a2('0x58')],'raw':!![]})[_0x37a2('0x2b')](handleEntityNotFound(_0x420add,null))[_0x37a2('0x2b')](function(_0x380a46){if(_0x380a46){var _0x32fd1f=_0x380a46[_0x37a2('0x58')];var _0x55e863=util['format'](_0x37a2('0x59'),_0x32fd1f);if(fs[_0x37a2('0x5a')](_0x55e863)){_0x37d0de=!![];return _0x4c7c91[_0x37a2('0x5b')](_0x55e863,_0x32fd1f,config[_0x37a2('0x5c')]['recording'])[_0x37a2('0x2b')](function(){return _0x380a46;});}return _0x380a46;}})[_0x37a2('0x2b')](function(_0x5d6bfe){if(_0x5d6bfe){var _0x1e5d72=_0x5d6bfe['value'];if(!fs['existsSync'](_0x1e5d72)){throw new db[(_0x37a2('0x5d'))]['ValidationError'](_0x37a2('0x5e'));}if(_0x5d6bfe['filename']){return _0x420add[_0x37a2('0x55')](_0x1e5d72,_0x5d6bfe['filename']+path[_0x37a2('0x5f')](_0x1e5d72),function(){if(_0x37d0de){fs[_0x37a2('0x60')](_0x1e5d72);}});}else{return _0x420add[_0x37a2('0x55')](_0x1e5d72,function(_0x4046f5){if(_0x37d0de){fs[_0x37a2('0x60')](_0x1e5d72);}});}}})['catch'](function(_0x24e2ae){if(_0x24e2ae[_0x37a2('0x61')]===_0x37a2('0x5e')){_0x420add[_0x37a2('0x1f')](0x194)[_0x37a2('0x2f')](_0x37a2('0x62'));}else{return handleError(_0x420add,null);}});};exports[_0x37a2('0x63')]=function(_0x403664,_0x4d254f,_0x3af972){var _0x52088d=require('../../components/encryptor');var _0x4d3ab3=![];var _0x3483f1={'$and':[db[_0x37a2('0x64')][_0x37a2('0x44')](db[_0x37a2('0x64')]['fn'](_0x37a2('0x65'),db['sequelize']['col'](_0x37a2('0x57'))),_0x403664['query'][_0x37a2('0x66')])]};if(_0x403664[_0x37a2('0x3b')][_0x37a2('0x34')]&&_0x403664[_0x37a2('0x3b')][_0x37a2('0x34')]===_0x37a2('0x57')){_0x3483f1['$and'][_0x37a2('0x67')]({'uniqueid':_0x403664[_0x37a2('0x4d')]['id']});}else{_0x3483f1[_0x37a2('0x68')][_0x37a2('0x67')]({'id':_0x403664['params']['id']});}return db[_0x37a2('0x31')]['find']({'where':_0x3483f1,'attributes':['id',_0x37a2('0x58')],'raw':!![]})['then'](handleEntityNotFound(_0x4d254f,null))[_0x37a2('0x2b')](function(_0x4429e8){if(_0x4429e8){var _0x24a1b3=util[_0x37a2('0x3a')](_0x37a2('0x59'),_0x4429e8[_0x37a2('0x58')]);if(fs[_0x37a2('0x5a')](_0x24a1b3)){_0x4d3ab3=!![];return _0x52088d['decryptFile'](_0x24a1b3,_0x4429e8[_0x37a2('0x58')],config[_0x37a2('0x5c')][_0x37a2('0x69')])[_0x37a2('0x2b')](function(){return _0x4429e8;});}return _0x4429e8;}})['then'](function(_0x5cb37d){if(_0x5cb37d){if(!fs[_0x37a2('0x5a')](_0x5cb37d[_0x37a2('0x58')])){throw new db[(_0x37a2('0x5d'))][(_0x37a2('0x6a'))](_0x37a2('0x5e'));}if(_0x5cb37d[_0x37a2('0x6b')]){return _0x4d254f[_0x37a2('0x55')](_0x5cb37d[_0x37a2('0x58')],_0x5cb37d[_0x37a2('0x6b')]+path[_0x37a2('0x5f')](_0x5cb37d[_0x37a2('0x58')]),function(){if(_0x4d3ab3){fs[_0x37a2('0x60')](_0x5cb37d[_0x37a2('0x58')]);}});}else{return _0x4d254f[_0x37a2('0x55')](_0x5cb37d[_0x37a2('0x58')],function(_0x11881d){if(_0x4d3ab3){fs['unlink'](_0x5cb37d[_0x37a2('0x58')]);}});}}})[_0x37a2('0x51')](handleError(_0x4d254f,null));};exports[_0x37a2('0x2c')]=function(_0x121440,_0x201f9a){return db[_0x37a2('0x31')]['find']({'where':{'id':_0x121440[_0x37a2('0x4d')]['id']}})['then'](function(_0x2c02c9){if(_[_0x37a2('0x6c')](_0x2c02c9)){throw new ReferenceError(_0x37a2('0x6d'));}return _0x2c02c9;})[_0x37a2('0x2b')](function(_0x279dd0){var _0x28e558=_0x279dd0['value'];logger[_0x37a2('0x6e')](_0x37a2('0x6f'),_0x28e558);if(!_[_0x37a2('0x6c')](_0x279dd0[_0x37a2('0x58')])&&fs[_0x37a2('0x5a')](_0x28e558)){logger[_0x37a2('0x6e')](_0x37a2('0x70')+_0x28e558+_0x37a2('0x71'));fs[_0x37a2('0x72')](_0x28e558);}_0x28e558=_0x28e558+'.cypher';if(!_['isNil'](_0x279dd0[_0x37a2('0x58')])&&fs[_0x37a2('0x5a')](_0x28e558)){logger[_0x37a2('0x6e')](_0x37a2('0x70')+_0x28e558+_0x37a2('0x71'));fs['unlinkSync'](_0x28e558);}return _0x279dd0;})['then'](function(_0x1e36e0){if(!_0x1e36e0)throw new InternalError();return _0x1e36e0[_0x37a2('0x2c')]();})[_0x37a2('0x2b')](function(){_0x201f9a[_0x37a2('0x1f')](0xcc)[_0x37a2('0x20')]();})[_0x37a2('0x51')](handleError(_0x201f9a,null));};function getBucketslist(_0xfd3c43,_0x42a562,_0xff7278){return new Promise(function(_0x2f2b19,_0x5e6018){var _0x4d0dda=new AWS['S3']({'accessKeyId':_0x42a562,'secretAccessKey':_0xfd3c43,'region':_0xff7278});_0x4d0dda['listBuckets']({},function(_0xdd1bfc,_0x13070f){if(_0xdd1bfc){return _0x5e6018(_0xdd1bfc);}else{return _0x2f2b19(_0x13070f);}});});}function createBucket(_0x5c142b,_0x8ab612,_0x4b4b76,_0xc582c3){return new Promise(function(_0x560d28,_0x3211b9){var _0xe0d5fd=new AWS['S3']({'accessKeyId':_0x8ab612,'secretAccessKey':_0x5c142b,'region':_0x4b4b76});_0xe0d5fd[_0x37a2('0x73')]({'Bucket':_0xc582c3},function(_0x2b46ec,_0x5ad239){if(_0x2b46ec){return _0x3211b9(_0x2b46ec);}else{return _0x560d28(_0x5ad239);}});});}function uploadFile(_0x32140d,_0x52cc90,_0x195a46,_0x45347c,_0x3f3f9e,_0x2662ce){return new Promise(function(_0x4041d3,_0x4f9cd7){var _0x53ca3d=new AWS['S3']({'accessKeyId':_0x52cc90,'secretAccessKey':_0x32140d,'region':_0x195a46});_0x53ca3d[_0x37a2('0x74')]({'Bucket':_0x45347c,'Key':_0x3f3f9e,'Body':_0x2662ce},function(_0x432af9,_0x3a1479){if(_0x432af9){return _0x4f9cd7(_0x432af9);}else{return _0x4041d3(_0x3a1479);}});});}function startTranscribe(_0xcf3c55,_0x2e49c5,_0x1bebd9,_0x18374b,_0x1a9a86,_0x55e88d){return new Promise(function(_0x440b24,_0x1397d9){var _0x4860a4=new AWS[(_0x37a2('0x75'))]({'accessKeyId':_0x2e49c5,'secretAccessKey':_0xcf3c55,'region':_0x1bebd9});_0x4860a4[_0x37a2('0x76')]({'TranscriptionJobName':_0x18374b,'LanguageCode':_0x1a9a86,'Media':{'MediaFileUri':_0x55e88d}},function(_0x758e5f,_0x51504f){if(_0x758e5f){return _0x1397d9(_0x758e5f);}else{return _0x440b24(_0x51504f);}});});}function transcribe(_0x5885cf,_0x2d8916,_0x27b09a,_0xeaccc4,_0x52d666,_0x56845e,_0x24a530){return new Promise(function(_0x2e65ba,_0x580d0a){var _0x407838={};logger[_0x37a2('0x6e')](util[_0x37a2('0x3a')](_0x37a2('0x77'),_0x5885cf,_0x52d666));return uploadFile(_0x2d8916,_0x27b09a,_0xeaccc4,_0x52d666,path['basename'](_0x56845e),fs[_0x37a2('0x78')](_0x56845e))[_0x37a2('0x2b')](function(_0x34ebcd){logger['info'](util[_0x37a2('0x3a')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x5885cf,_0x52d666,_0x34ebcd[_0x37a2('0x79')]));_0x407838['bucket']=_0x34ebcd[_0x37a2('0x7a')];_0x407838[_0x37a2('0x7b')]=_0x34ebcd[_0x37a2('0x79')];logger[_0x37a2('0x6e')](util[_0x37a2('0x3a')](_0x37a2('0x7c'),_0x5885cf));return startTranscribe(_0x2d8916,_0x27b09a,_0xeaccc4,uuidv4(),_0x24a530,_0x34ebcd[_0x37a2('0x79')]);})['then'](function(_0x43d690){logger[_0x37a2('0x6e')](util[_0x37a2('0x3a')](_0x37a2('0x7d'),_0x5885cf,_0x43d690[_0x37a2('0x7e')][_0x37a2('0x7f')]));_0x407838[_0x37a2('0x80')]=_0x43d690['TranscriptionJob'][_0x37a2('0x7f')];_0x407838[_0x37a2('0x81')]=_0x43d690[_0x37a2('0x7e')][_0x37a2('0x82')];return _0x2e65ba(_0x407838);})['catch'](function(_0x5a8193){return _0x580d0a(_0x5a8193);});});}exports['runTranscribe']=function(_0x3b9696,_0x2c9e8f,_0x4fc8a6){var _0x23e39b;var _0x58b268;var _0x3fb33d;var _0x2310bf=require('../../components/encryptor');return db[_0x37a2('0x31')]['findOne']({'where':{'id':_0x3b9696['params']['id']}})[_0x37a2('0x2b')](function(_0x21df07){if(_0x21df07){var _0x2dfa45=util[_0x37a2('0x3a')](_0x37a2('0x59'),_0x21df07[_0x37a2('0x58')]);if(fs[_0x37a2('0x5a')](_0x2dfa45)){cypher=!![];return _0x2310bf[_0x37a2('0x5b')](_0x2dfa45,_0x21df07[_0x37a2('0x58')],config[_0x37a2('0x5c')][_0x37a2('0x69')])[_0x37a2('0x2b')](function(){return _0x21df07;});}return _0x21df07;}})[_0x37a2('0x2b')](function(_0x1b83d9){if(!_0x1b83d9){throw new db['Sequelize'][(_0x37a2('0x6a'))](_0x37a2('0x83'));}_0x58b268=_0x1b83d9;return db[_0x37a2('0x84')][_0x37a2('0x85')]({'where':{'id':0x1}});})[_0x37a2('0x2b')](handleEntityNotFound(_0x2c9e8f,null))[_0x37a2('0x2b')](function(_0x30c231){if(_0x30c231){_0x23e39b=_0x30c231;if(!_0x23e39b[_0x37a2('0x86')]||!_0x23e39b['transcribeAccountId']||!_0x23e39b['transcribeRegion']||!_0x23e39b[_0x37a2('0x87')]||!_0x23e39b[_0x37a2('0x88')]){throw new db['Sequelize'][(_0x37a2('0x6a'))](_0x37a2('0x89'));}if(_0x3b9696['body'][_0x37a2('0x8a')]&&(!_0x23e39b[_0x37a2('0x8b')]||!_0x23e39b[_0x37a2('0x8c')]||!_0x23e39b['sentimentRegion']||!_0x23e39b['language']||!_0x23e39b[_0x37a2('0x88')])){throw new db[(_0x37a2('0x5d'))][(_0x37a2('0x6a'))]('Sentiment\x20Analysis\x20not\x20configured');}return db[_0x37a2('0x8d')][_0x37a2('0x85')]({'where':{'id':_0x23e39b['transcribeAccountId']}});}})[_0x37a2('0x2b')](function(_0x1b9977){if(!_0x1b9977){throw new db[(_0x37a2('0x5d'))][(_0x37a2('0x6a'))](_0x37a2('0x8e'));}if(!_0x1b9977[_0x37a2('0x8f')]||!_0x1b9977[_0x37a2('0x90')]){throw new db[(_0x37a2('0x5d'))][(_0x37a2('0x6a'))](_0x37a2('0x91'));}_0x3fb33d=_0x1b9977;return getBucketslist(_0x3fb33d[_0x37a2('0x8f')],_0x3fb33d['data2'],_0x23e39b['transcribeRegion']);})[_0x37a2('0x2b')](function(_0x300f89){if(_0x300f89&&_0x300f89['Buckets']){var _0x4378c2=_[_0x37a2('0x50')](_0x300f89[_0x37a2('0x92')],function(_0x358161){return _0x358161['Name']===_0x23e39b['bucket'];});if(!_0x4378c2){logger['info'](util[_0x37a2('0x3a')](_0x37a2('0x93'),_0x3b9696[_0x37a2('0x4d')]['id'],_0x23e39b['bucket']));return createBucket(_0x3fb33d[_0x37a2('0x8f')],_0x3fb33d[_0x37a2('0x90')],_0x23e39b[_0x37a2('0x94')],_0x23e39b[_0x37a2('0x88')]);}logger[_0x37a2('0x6e')](util['format'](_0x37a2('0x95'),_0x3b9696[_0x37a2('0x4d')]['id'],_0x23e39b[_0x37a2('0x88')]));return;}})[_0x37a2('0x2b')](function(_0x3716cd){if(_0x58b268['transcribeStatus']===_0x37a2('0x96')){return transcribe(_0x3b9696['params']['id'],_0x3fb33d['data1'],_0x3fb33d[_0x37a2('0x90')],_0x23e39b[_0x37a2('0x94')],_0x23e39b[_0x37a2('0x88')],_0x58b268[_0x37a2('0x58')],_0x23e39b['language']);}else{logger[_0x37a2('0x6e')](util['format']('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x3b9696[_0x37a2('0x4d')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})['then'](function(_0x9d8404){if(_0x9d8404){_0x9d8404[_0x37a2('0x97')]=_0x3b9696[_0x37a2('0x53')]['runSentiment'];return _0x58b268[_0x37a2('0x98')](_0x9d8404);}})[_0x37a2('0x2b')](respondWithResult(_0x2c9e8f,null))[_0x37a2('0x51')](handleError(_0x2c9e8f,null));};function writeFile(_0xe05f9f,_0x5117b2){return new Promise(function(_0x31d314,_0x2f7082){fs[_0x37a2('0x99')](_0x5117b2,_0xe05f9f,function(_0x5bfa8e,_0x120abc){if(_0x5bfa8e){return _0x2f7082(_0x5bfa8e);}else{return _0x31d314(_0x120abc);}});});}exports['downloadTranscribe']=function(_0x3ce15d,_0x61687b,_0x3dd63e){return db[_0x37a2('0x31')][_0x37a2('0x85')]({'where':{'id':_0x3ce15d[_0x37a2('0x4d')]['id']}})[_0x37a2('0x2b')](handleEntityNotFound(_0x61687b))[_0x37a2('0x2b')](function(_0x2b74e1){if(_0x2b74e1&&_0x2b74e1[_0x37a2('0x9a')]){var _0x2e1d95=_0x2b74e1[_0x37a2('0x9a')];var _0x261175=config[_0x37a2('0x9b')]+_0x37a2('0x9c')+_0x2b74e1['id']+_0x37a2('0x9d');if(fs['existsSync'](_0x261175)){return _0x261175;}return writeFile(_0x2e1d95,_0x261175)[_0x37a2('0x2b')](function(){return _0x261175;});}else{throw new db[(_0x37a2('0x5d'))][(_0x37a2('0x6a'))](_0x37a2('0x9e'));}})[_0x37a2('0x2b')](function(_0x104391){return _0x61687b[_0x37a2('0x55')](_0x104391);})['catch'](handleError(_0x61687b));};
\ No newline at end of file
+var _0x53d2=['unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribeAccountId','transcribeRegion','language','bucket','Transcribe\x20not\x20configured','sentiment','sentimentAccountId','sentimentRegion','CloudProvider','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','IN_PROGRESS','tempSentiment','runSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','.txt','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','aws-sdk','uuid/v4','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','count','Content-Range','apply','save','update','then','destroy','stack','name','send','map','VoiceRecording','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','fields','nolimit','order','sort','where','pick','merge','filter','options','include','findAll','catch','show','params','keys','length','includeAll','create','body','describe','download','../../components/encryptor','uniqueid','find','value','format','existsSync','decryptFile','secrets','Sequelize','filename','extname','unlink','message','VoiceRecording\x20not\x20found','Not\x20found','sequelize','MD5','col','$and','push','%s.cypher','recording','ValidationError','isNil','info','cancellazione\x20fisica\x20documento\x20%s'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x53d2,0x169));var _0x253d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53d2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x253d('0x0'));var zipdir=require(_0x253d('0x1'));var jsonpatch=require(_0x253d('0x2'));var rp=require('request-promise');var moment=require(_0x253d('0x3'));var BPromise=require(_0x253d('0x4'));var Mustache=require('mustache');var util=require(_0x253d('0x5'));var path=require(_0x253d('0x6'));var sox=require(_0x253d('0x7'));var csv=require(_0x253d('0x8'));var ejs=require(_0x253d('0x9'));var fs=require('fs');var fs_extra=require(_0x253d('0xa'));var _=require(_0x253d('0xb'));var squel=require(_0x253d('0xc'));var crypto=require(_0x253d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x253d('0xe'));var toCsv=require(_0x253d('0x8'));var querystring=require(_0x253d('0xf'));var Papa=require(_0x253d('0x10'));var AWS=require(_0x253d('0x11'));var uuidv4=require(_0x253d('0x12'));var Redis=require(_0x253d('0x13'));var authService=require(_0x253d('0x14'));var qs=require(_0x253d('0x15'));var as=require(_0x253d('0x16'));var hardwareService=require(_0x253d('0x17'));var logger=require('../../config/logger')(_0x253d('0x18'));var utils=require(_0x253d('0x19'));var config=require(_0x253d('0x1a'));var licenseUtil=require(_0x253d('0x1b'));var db=require(_0x253d('0x1c'))['db'];function respondWithStatusCode(_0x433861,_0x13052e){_0x13052e=_0x13052e||0xcc;return function(_0x513a1e){if(_0x513a1e){return _0x433861[_0x253d('0x1d')](_0x13052e);}return _0x433861[_0x253d('0x1e')](_0x13052e)[_0x253d('0x1f')]();};}function respondWithResult(_0x4df156,_0x5c7364){_0x5c7364=_0x5c7364||0xc8;return function(_0xaf7f4f){if(_0xaf7f4f){return _0x4df156[_0x253d('0x1e')](_0x5c7364)[_0x253d('0x20')](_0xaf7f4f);}};}function respondWithFilteredResult(_0x1e4877,_0x2861ae){return function(_0x3c4c7f){if(_0x3c4c7f){var _0x20ad61=typeof _0x2861ae[_0x253d('0x21')]===_0x253d('0x22')&&typeof _0x2861ae[_0x253d('0x23')]===_0x253d('0x22');var _0x401606=_0x3c4c7f[_0x253d('0x24')];var _0x233fc4=_0x20ad61?0x0:_0x2861ae[_0x253d('0x21')];var _0x23d47b=_0x20ad61?_0x3c4c7f['count']:_0x2861ae[_0x253d('0x21')]+_0x2861ae[_0x253d('0x23')];var _0x3a4c61;if(_0x23d47b>=_0x401606){_0x23d47b=_0x401606;_0x3a4c61=0xc8;}else{_0x3a4c61=0xce;}_0x1e4877[_0x253d('0x1e')](_0x3a4c61);return _0x1e4877['set'](_0x253d('0x25'),_0x233fc4+'-'+_0x23d47b+'/'+_0x401606)[_0x253d('0x20')](_0x3c4c7f);}return null;};}function patchUpdates(_0x205cfd){return function(_0x15dc52){try{jsonpatch[_0x253d('0x26')](_0x15dc52,_0x205cfd,!![]);}catch(_0x440ae5){return BPromise['reject'](_0x440ae5);}return _0x15dc52[_0x253d('0x27')]();};}function saveUpdates(_0x5045d2,_0x4a6bbf){return function(_0x3422a8){if(_0x3422a8){return _0x3422a8[_0x253d('0x28')](_0x5045d2)[_0x253d('0x29')](function(_0x1864f1){return _0x1864f1;});}return null;};}function removeEntity(_0x4f0239,_0x2597ee){return function(_0x1b29b8){if(_0x1b29b8){return _0x1b29b8[_0x253d('0x2a')]()['then'](function(){_0x4f0239[_0x253d('0x1e')](0xcc)[_0x253d('0x1f')]();});}};}function handleEntityNotFound(_0x41ebb0,_0x35d3f4){return function(_0x2b0f7e){if(!_0x2b0f7e){_0x41ebb0[_0x253d('0x1d')](0x194);}return _0x2b0f7e;};}function handleError(_0x4e6b4a,_0x401bd5){_0x401bd5=_0x401bd5||0x1f4;return function(_0x5450b9){logger['error'](_0x5450b9[_0x253d('0x2b')]);if(_0x5450b9[_0x253d('0x2c')]){delete _0x5450b9['name'];}_0x4e6b4a[_0x253d('0x1e')](_0x401bd5)[_0x253d('0x2d')](_0x5450b9);};}exports['index']=function(_0x489982,_0x8529ce){var _0x193f79={},_0x5c9e5c={},_0x5e39a0={'count':0x0,'rows':[]};var _0x5a2f97=_[_0x253d('0x2e')](db[_0x253d('0x2f')][_0x253d('0x30')],function(_0x52b58a){return{'name':_0x52b58a[_0x253d('0x31')],'type':_0x52b58a[_0x253d('0x32')][_0x253d('0x33')]};});_0x5c9e5c['model']=_['differenceBy'](_[_0x253d('0x2e')](_0x5a2f97,_0x253d('0x2c')),['format']);_0x5c9e5c[_0x253d('0x34')]=_['keys'](_0x489982[_0x253d('0x34')]);_0x5c9e5c[_0x253d('0x35')]=_[_0x253d('0x36')](_0x5c9e5c['model'],_0x5c9e5c[_0x253d('0x34')]);_0x193f79[_0x253d('0x37')]=_[_0x253d('0x36')](_0x5c9e5c[_0x253d('0x38')],qs['fields'](_0x489982[_0x253d('0x34')][_0x253d('0x39')]));_0x193f79['attributes']=_0x193f79[_0x253d('0x37')]['length']?_0x193f79[_0x253d('0x37')]:_0x5c9e5c[_0x253d('0x38')];if(!_0x489982[_0x253d('0x34')]['hasOwnProperty'](_0x253d('0x3a'))){_0x193f79[_0x253d('0x23')]=qs[_0x253d('0x23')](_0x489982[_0x253d('0x34')]['limit']);_0x193f79[_0x253d('0x21')]=qs[_0x253d('0x21')](_0x489982[_0x253d('0x34')]['offset']);}_0x193f79[_0x253d('0x3b')]=qs[_0x253d('0x3c')](_0x489982[_0x253d('0x34')][_0x253d('0x3c')]);_0x193f79[_0x253d('0x3d')]=qs[_0x253d('0x35')](_[_0x253d('0x3e')](_0x489982['query'],_0x5c9e5c[_0x253d('0x35')]),_0x5a2f97);if(_0x489982[_0x253d('0x34')]['filter']){_0x193f79[_0x253d('0x3d')]=_[_0x253d('0x3f')](_0x193f79[_0x253d('0x3d')],{'$or':_[_0x253d('0x2e')](_0x5a2f97,function(_0x1e5745){if(_0x1e5745[_0x253d('0x32')]!=='VIRTUAL'){var _0x199326={};_0x199326[_0x1e5745[_0x253d('0x2c')]]={'$like':'%'+_0x489982[_0x253d('0x34')][_0x253d('0x40')]+'%'};return _0x199326;}})});}_0x193f79=_['merge']({},_0x193f79,_0x489982[_0x253d('0x41')]);var _0x9cfdbd={'where':_0x193f79['where']};return db[_0x253d('0x2f')][_0x253d('0x24')](_0x9cfdbd)[_0x253d('0x29')](function(_0x4d3638){_0x5e39a0[_0x253d('0x24')]=_0x4d3638;if(_0x489982['query']['includeAll']){_0x193f79[_0x253d('0x42')]=[{'all':!![]}];}return db['VoiceRecording'][_0x253d('0x43')](_0x193f79);})[_0x253d('0x29')](function(_0x252be5){_0x5e39a0['rows']=_0x252be5;return _0x5e39a0;})[_0x253d('0x29')](respondWithFilteredResult(_0x8529ce,_0x193f79))[_0x253d('0x44')](handleError(_0x8529ce,null));};exports[_0x253d('0x45')]=function(_0x5be032,_0x4be416){var _0x226015={'raw':![],'where':{'id':_0x5be032[_0x253d('0x46')]['id']}},_0x186cb8={};_0x186cb8['model']=_[_0x253d('0x47')](db[_0x253d('0x2f')]['rawAttributes']);_0x186cb8[_0x253d('0x34')]=_[_0x253d('0x47')](_0x5be032['query']);_0x186cb8[_0x253d('0x35')]=_[_0x253d('0x36')](_0x186cb8[_0x253d('0x38')],_0x186cb8[_0x253d('0x34')]);_0x226015[_0x253d('0x37')]=_[_0x253d('0x36')](_0x186cb8[_0x253d('0x38')],qs[_0x253d('0x39')](_0x5be032[_0x253d('0x34')]['fields']));_0x226015['attributes']=_0x226015[_0x253d('0x37')][_0x253d('0x48')]?_0x226015['attributes']:_0x186cb8[_0x253d('0x38')];if(_0x5be032['query'][_0x253d('0x49')]){_0x226015[_0x253d('0x42')]=[{'all':!![]}];}_0x226015=_[_0x253d('0x3f')]({},_0x226015,_0x5be032[_0x253d('0x41')]);return db[_0x253d('0x2f')]['find'](_0x226015)[_0x253d('0x29')](handleEntityNotFound(_0x4be416,null))[_0x253d('0x29')](respondWithResult(_0x4be416,null))['catch'](handleError(_0x4be416,null));};exports[_0x253d('0x4a')]=function(_0x5169d1,_0x166efa){return db[_0x253d('0x2f')][_0x253d('0x4a')](_0x5169d1['body'],{})['then'](respondWithResult(_0x166efa,0xc9))['catch'](handleError(_0x166efa,null));};exports[_0x253d('0x28')]=function(_0x50d977,_0x2b58c0){if(_0x50d977[_0x253d('0x4b')]['id']){delete _0x50d977[_0x253d('0x4b')]['id'];}return db['VoiceRecording']['find']({'where':{'id':_0x50d977['params']['id']}})[_0x253d('0x29')](handleEntityNotFound(_0x2b58c0,null))[_0x253d('0x29')](saveUpdates(_0x50d977[_0x253d('0x4b')],null))[_0x253d('0x29')](respondWithResult(_0x2b58c0,null))[_0x253d('0x44')](handleError(_0x2b58c0,null));};exports[_0x253d('0x4c')]=function(_0x21a4aa,_0x4382c0){return db['VoiceRecording']['describe']()[_0x253d('0x29')](respondWithResult(_0x4382c0,null))[_0x253d('0x44')](handleError(_0x4382c0,null));};exports[_0x253d('0x4d')]=function(_0x17f6bf,_0x3d6c1b,_0x4f8698){var _0xb7bb64=require(_0x253d('0x4e'));var _0x1113b5=![];var _0x54dd94={};if(_0x17f6bf['query']['type']&&_0x17f6bf[_0x253d('0x34')][_0x253d('0x32')]===_0x253d('0x4f')){_0x54dd94[_0x253d('0x4f')]=_0x17f6bf[_0x253d('0x46')]['id'];}else{_0x54dd94['id']=_0x17f6bf[_0x253d('0x46')]['id'];}return db[_0x253d('0x2f')][_0x253d('0x50')]({'where':_0x54dd94,'attributes':['id','value'],'raw':!![]})[_0x253d('0x29')](handleEntityNotFound(_0x3d6c1b,null))[_0x253d('0x29')](function(_0x47ce1a){if(_0x47ce1a){var _0x573d1a=_0x47ce1a[_0x253d('0x51')];var _0x38c72a=util[_0x253d('0x52')]('%s.cypher',_0x573d1a);if(fs[_0x253d('0x53')](_0x38c72a)){_0x1113b5=!![];return _0xb7bb64[_0x253d('0x54')](_0x38c72a,_0x573d1a,config[_0x253d('0x55')]['recording'])['then'](function(){return _0x47ce1a;});}return _0x47ce1a;}})['then'](function(_0x469b2d){if(_0x469b2d){var _0x2429c8=_0x469b2d[_0x253d('0x51')];if(!fs[_0x253d('0x53')](_0x2429c8)){throw new db[(_0x253d('0x56'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x469b2d[_0x253d('0x57')]){return _0x3d6c1b[_0x253d('0x4d')](_0x2429c8,_0x469b2d[_0x253d('0x57')]+path[_0x253d('0x58')](_0x2429c8),function(){if(_0x1113b5){fs[_0x253d('0x59')](_0x2429c8);}});}else{return _0x3d6c1b['download'](_0x2429c8,function(_0x157846){if(_0x1113b5){fs[_0x253d('0x59')](_0x2429c8);}});}}})[_0x253d('0x44')](function(_0x51a6ab){if(_0x51a6ab[_0x253d('0x5a')]===_0x253d('0x5b')){_0x3d6c1b[_0x253d('0x1e')](0x194)[_0x253d('0x2d')](_0x253d('0x5c'));}else{return handleError(_0x3d6c1b,null);}});};exports['downloads']=function(_0x505975,_0x3a43ae,_0x445515){var _0xcf06f=require(_0x253d('0x4e'));var _0x312c15=![];var _0x51e262={'$and':[db[_0x253d('0x5d')][_0x253d('0x3d')](db[_0x253d('0x5d')]['fn'](_0x253d('0x5e'),db[_0x253d('0x5d')][_0x253d('0x5f')](_0x253d('0x4f'))),_0x505975[_0x253d('0x34')]['token'])]};if(_0x505975[_0x253d('0x34')][_0x253d('0x32')]&&_0x505975['query'][_0x253d('0x32')]===_0x253d('0x4f')){_0x51e262[_0x253d('0x60')][_0x253d('0x61')]({'uniqueid':_0x505975[_0x253d('0x46')]['id']});}else{_0x51e262['$and'][_0x253d('0x61')]({'id':_0x505975[_0x253d('0x46')]['id']});}return db['VoiceRecording'][_0x253d('0x50')]({'where':_0x51e262,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x3a43ae,null))['then'](function(_0x22a021){if(_0x22a021){var _0x2e7934=util[_0x253d('0x52')](_0x253d('0x62'),_0x22a021[_0x253d('0x51')]);if(fs[_0x253d('0x53')](_0x2e7934)){_0x312c15=!![];return _0xcf06f[_0x253d('0x54')](_0x2e7934,_0x22a021[_0x253d('0x51')],config['secrets'][_0x253d('0x63')])[_0x253d('0x29')](function(){return _0x22a021;});}return _0x22a021;}})['then'](function(_0x4e6326){if(_0x4e6326){if(!fs['existsSync'](_0x4e6326[_0x253d('0x51')])){throw new db['Sequelize'][(_0x253d('0x64'))](_0x253d('0x5b'));}if(_0x4e6326[_0x253d('0x57')]){return _0x3a43ae[_0x253d('0x4d')](_0x4e6326[_0x253d('0x51')],_0x4e6326[_0x253d('0x57')]+path[_0x253d('0x58')](_0x4e6326[_0x253d('0x51')]),function(){if(_0x312c15){fs[_0x253d('0x59')](_0x4e6326[_0x253d('0x51')]);}});}else{return _0x3a43ae['download'](_0x4e6326[_0x253d('0x51')],function(_0x5a4ccd){if(_0x312c15){fs[_0x253d('0x59')](_0x4e6326[_0x253d('0x51')]);}});}}})[_0x253d('0x44')](handleError(_0x3a43ae,null));};exports[_0x253d('0x2a')]=function(_0x567e46,_0xb94a44){return db[_0x253d('0x2f')]['find']({'where':{'id':_0x567e46[_0x253d('0x46')]['id']}})[_0x253d('0x29')](function(_0x2784e5){if(_[_0x253d('0x65')](_0x2784e5)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2784e5;})[_0x253d('0x29')](function(_0x4e6291){var _0x4bdbe7=_0x4e6291[_0x253d('0x51')];logger[_0x253d('0x66')](_0x253d('0x67'),_0x4bdbe7);if(!_[_0x253d('0x65')](_0x4e6291[_0x253d('0x51')])&&fs[_0x253d('0x53')](_0x4bdbe7)){logger[_0x253d('0x66')]('File:\x20\x22'+_0x4bdbe7+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x253d('0x68')](_0x4bdbe7);}_0x4bdbe7=_0x4bdbe7+_0x253d('0x69');if(!_[_0x253d('0x65')](_0x4e6291[_0x253d('0x51')])&&fs['existsSync'](_0x4bdbe7)){logger[_0x253d('0x66')]('File:\x20\x22'+_0x4bdbe7+_0x253d('0x6a'));fs[_0x253d('0x68')](_0x4bdbe7);}return _0x4e6291;})[_0x253d('0x29')](function(_0x2a59db){if(!_0x2a59db)throw new InternalError();return _0x2a59db[_0x253d('0x2a')]();})[_0x253d('0x29')](function(){_0xb94a44['status'](0xcc)[_0x253d('0x1f')]();})['catch'](handleError(_0xb94a44,null));};function getBucketslist(_0x122091,_0x315e42,_0x1d1008){return new Promise(function(_0xe81309,_0x128201){var _0x4eab6f=new AWS['S3']({'accessKeyId':_0x315e42,'secretAccessKey':_0x122091,'region':_0x1d1008});_0x4eab6f[_0x253d('0x6b')]({},function(_0x289ee3,_0x1a244a){if(_0x289ee3){return _0x128201(_0x289ee3);}else{return _0xe81309(_0x1a244a);}});});}function createBucket(_0x15be98,_0x6b92bd,_0x56d4e2,_0x21cab9){return new Promise(function(_0x4c6a51,_0x195c07){var _0x7c837b=new AWS['S3']({'accessKeyId':_0x6b92bd,'secretAccessKey':_0x15be98,'region':_0x56d4e2});_0x7c837b[_0x253d('0x6c')]({'Bucket':_0x21cab9},function(_0x260db9,_0x4ff4e3){if(_0x260db9){return _0x195c07(_0x260db9);}else{return _0x4c6a51(_0x4ff4e3);}});});}function uploadFile(_0xcfb580,_0x1c4b21,_0x31be0d,_0x241cb3,_0x358421,_0x435073){return new Promise(function(_0x2bdd14,_0x5772fa){var _0x17d508=new AWS['S3']({'accessKeyId':_0x1c4b21,'secretAccessKey':_0xcfb580,'region':_0x31be0d});_0x17d508[_0x253d('0x6d')]({'Bucket':_0x241cb3,'Key':_0x358421,'Body':_0x435073},function(_0x4f8d4d,_0x5d187f){if(_0x4f8d4d){return _0x5772fa(_0x4f8d4d);}else{return _0x2bdd14(_0x5d187f);}});});}function startTranscribe(_0xa701d3,_0x420902,_0x51f2ce,_0xeab7e5,_0x26fd3a,_0x1b81aa){return new Promise(function(_0x430267,_0x314500){var _0x20e57c=new AWS[(_0x253d('0x6e'))]({'accessKeyId':_0x420902,'secretAccessKey':_0xa701d3,'region':_0x51f2ce});_0x20e57c[_0x253d('0x6f')]({'TranscriptionJobName':_0xeab7e5,'LanguageCode':_0x26fd3a,'Media':{'MediaFileUri':_0x1b81aa}},function(_0x3c3b90,_0xc33b5){if(_0x3c3b90){return _0x314500(_0x3c3b90);}else{return _0x430267(_0xc33b5);}});});}function transcribe(_0x37d1e8,_0x4cdc10,_0x374277,_0x2619ec,_0x37282f,_0x33816a,_0x1ed2a3){return new Promise(function(_0x427f09,_0x14db46){var _0x973ce1={};logger[_0x253d('0x66')](util[_0x253d('0x52')](_0x253d('0x70'),_0x37d1e8,_0x37282f));return uploadFile(_0x4cdc10,_0x374277,_0x2619ec,_0x37282f,path[_0x253d('0x71')](_0x33816a),fs[_0x253d('0x72')](_0x33816a))[_0x253d('0x29')](function(_0x25018b){logger['info'](util['format'](_0x253d('0x73'),_0x37d1e8,_0x37282f,_0x25018b[_0x253d('0x74')]));_0x973ce1['bucket']=_0x25018b[_0x253d('0x75')];_0x973ce1[_0x253d('0x76')]=_0x25018b['Location'];logger[_0x253d('0x66')](util[_0x253d('0x52')](_0x253d('0x77'),_0x37d1e8));return startTranscribe(_0x4cdc10,_0x374277,_0x2619ec,uuidv4(),_0x1ed2a3,_0x25018b[_0x253d('0x74')]);})[_0x253d('0x29')](function(_0x586067){logger[_0x253d('0x66')](util[_0x253d('0x52')](_0x253d('0x78'),_0x37d1e8,_0x586067[_0x253d('0x79')][_0x253d('0x7a')]));_0x973ce1[_0x253d('0x7b')]=_0x586067[_0x253d('0x79')]['TranscriptionJobName'];_0x973ce1[_0x253d('0x7c')]=_0x586067[_0x253d('0x79')][_0x253d('0x7d')];return _0x427f09(_0x973ce1);})[_0x253d('0x44')](function(_0x40bd06){return _0x14db46(_0x40bd06);});});}exports[_0x253d('0x7e')]=function(_0x448b29,_0x1698e2,_0xa5abe9){var _0x456b14;var _0x13864a;var _0x1997a0;var _0x40024a=require(_0x253d('0x4e'));return db[_0x253d('0x2f')]['findOne']({'where':{'id':_0x448b29[_0x253d('0x46')]['id']}})[_0x253d('0x29')](function(_0x5cee9e){if(_0x5cee9e){var _0x155e84=util[_0x253d('0x52')](_0x253d('0x62'),_0x5cee9e['value']);if(fs[_0x253d('0x53')](_0x155e84)){cypher=!![];return _0x40024a[_0x253d('0x54')](_0x155e84,_0x5cee9e[_0x253d('0x51')],config['secrets'][_0x253d('0x63')])[_0x253d('0x29')](function(){return _0x5cee9e;});}return _0x5cee9e;}})[_0x253d('0x29')](function(_0x4f2d01){if(!_0x4f2d01){throw new db['Sequelize'][(_0x253d('0x64'))](_0x253d('0x7f'));}_0x13864a=_0x4f2d01;return db[_0x253d('0x80')][_0x253d('0x81')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x1698e2,null))[_0x253d('0x29')](function(_0xf9a0f){if(_0xf9a0f){_0x456b14=_0xf9a0f;if(!_0x456b14['transcribe']||!_0x456b14[_0x253d('0x82')]||!_0x456b14[_0x253d('0x83')]||!_0x456b14[_0x253d('0x84')]||!_0x456b14[_0x253d('0x85')]){throw new db[(_0x253d('0x56'))]['ValidationError'](_0x253d('0x86'));}if(_0x448b29[_0x253d('0x4b')]['runSentiment']&&(!_0x456b14[_0x253d('0x87')]||!_0x456b14[_0x253d('0x88')]||!_0x456b14[_0x253d('0x89')]||!_0x456b14[_0x253d('0x84')]||!_0x456b14[_0x253d('0x85')])){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}return db[_0x253d('0x8a')][_0x253d('0x81')]({'where':{'id':_0x456b14['transcribeAccountId']}});}})[_0x253d('0x29')](function(_0x53e3fa){if(!_0x53e3fa){throw new db[(_0x253d('0x56'))][(_0x253d('0x64'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x53e3fa[_0x253d('0x8b')]||!_0x53e3fa[_0x253d('0x8c')]){throw new db[(_0x253d('0x56'))][(_0x253d('0x64'))](_0x253d('0x8d'));}_0x1997a0=_0x53e3fa;return getBucketslist(_0x1997a0['data1'],_0x1997a0[_0x253d('0x8c')],_0x456b14[_0x253d('0x83')]);})[_0x253d('0x29')](function(_0x3b4936){if(_0x3b4936&&_0x3b4936[_0x253d('0x8e')]){var _0x418e4d=_[_0x253d('0x50')](_0x3b4936[_0x253d('0x8e')],function(_0x229e73){return _0x229e73[_0x253d('0x8f')]===_0x456b14['bucket'];});if(!_0x418e4d){logger[_0x253d('0x66')](util[_0x253d('0x52')](_0x253d('0x90'),_0x448b29[_0x253d('0x46')]['id'],_0x456b14[_0x253d('0x85')]));return createBucket(_0x1997a0[_0x253d('0x8b')],_0x1997a0['data2'],_0x456b14[_0x253d('0x83')],_0x456b14[_0x253d('0x85')]);}logger['info'](util[_0x253d('0x52')](_0x253d('0x91'),_0x448b29[_0x253d('0x46')]['id'],_0x456b14['bucket']));return;}})[_0x253d('0x29')](function(_0xd2bab){if(_0x13864a[_0x253d('0x7c')]==='NEW'){return transcribe(_0x448b29[_0x253d('0x46')]['id'],_0x1997a0['data1'],_0x1997a0[_0x253d('0x8c')],_0x456b14['transcribeRegion'],_0x456b14[_0x253d('0x85')],_0x13864a[_0x253d('0x51')],_0x456b14['language']);}else{logger[_0x253d('0x66')](util[_0x253d('0x52')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x448b29[_0x253d('0x46')]['id']));return{'transcribeStatus':_0x253d('0x92')};}})['then'](function(_0x122830){if(_0x122830){_0x122830[_0x253d('0x93')]=_0x448b29[_0x253d('0x4b')][_0x253d('0x94')];return _0x13864a[_0x253d('0x95')](_0x122830);}})[_0x253d('0x29')](respondWithResult(_0x1698e2,null))[_0x253d('0x44')](handleError(_0x1698e2,null));};function writeFile(_0x787992,_0x230fd3){return new Promise(function(_0x4586da,_0x4eeaa5){fs[_0x253d('0x96')](_0x230fd3,_0x787992,function(_0x5509ba,_0x5bf314){if(_0x5509ba){return _0x4eeaa5(_0x5509ba);}else{return _0x4586da(_0x5bf314);}});});}exports[_0x253d('0x97')]=function(_0x5df61b,_0x71e1,_0x18e695){return db[_0x253d('0x2f')]['findOne']({'where':{'id':_0x5df61b[_0x253d('0x46')]['id']}})['then'](handleEntityNotFound(_0x71e1))[_0x253d('0x29')](function(_0x4b606e){if(_0x4b606e&&_0x4b606e[_0x253d('0x98')]){var _0x28eece=_0x4b606e[_0x253d('0x98')];var _0x38a6e9=config[_0x253d('0x99')]+'/server/files/transcribes/transcribe_'+_0x4b606e['id']+_0x253d('0x9a');if(fs['existsSync'](_0x38a6e9)){return _0x38a6e9;}return writeFile(_0x28eece,_0x38a6e9)['then'](function(){return _0x38a6e9;});}else{throw new db[(_0x253d('0x56'))][(_0x253d('0x64'))]('Transcript\x20not\x20available');}})[_0x253d('0x29')](function(_0x3c849e){return _0x71e1[_0x253d('0x4d')](_0x3c849e);})['catch'](handleError(_0x71e1));};
\ No newline at end of file
index cf79e34..811016e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['./voiceRecording.attributes','exports','VoiceRecording','voice_recordings','uniqueid','transcribeStatus'];(function(_0x4c94d1,_0x573a4f){var _0x48c2c3=function(_0x326bcc){while(--_0x326bcc){_0x4c94d1['push'](_0x4c94d1['shift']());}};_0x48c2c3(++_0x573a4f);}(_0x34e8,0x12c));var _0x834e=function(_0x1487a,_0x373bba){_0x1487a=_0x1487a-0x0;var _0x41eb19=_0x34e8[_0x1487a];return _0x41eb19;};'use strict';var attributes=require(_0x834e('0x0'));module[_0x834e('0x1')]=function(_0x8b339,_0x35e6fb){return _0x8b339['define'](_0x834e('0x2'),attributes,{'tableName':_0x834e('0x3'),'paranoid':![],'indexes':[{'name':_0x834e('0x4'),'fields':[_0x834e('0x4')]},{'name':_0x834e('0x5'),'fields':[_0x834e('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0faf=['./voiceRecording.attributes','define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus'];(function(_0x467c92,_0x3e54b6){var _0x5c691c=function(_0x32b1f0){while(--_0x32b1f0){_0x467c92['push'](_0x467c92['shift']());}};_0x5c691c(++_0x3e54b6);}(_0x0faf,0x132));var _0xf0fa=function(_0x44c974,_0x1bcfde){_0x44c974=_0x44c974-0x0;var _0x5214c6=_0x0faf[_0x44c974];return _0x5214c6;};'use strict';var attributes=require(_0xf0fa('0x0'));module['exports']=function(_0x43fe7a,_0x1b4763){return _0x43fe7a[_0xf0fa('0x1')](_0xf0fa('0x2'),attributes,{'tableName':_0xf0fa('0x3'),'paranoid':![],'indexes':[{'name':_0xf0fa('0x4'),'fields':[_0xf0fa('0x4')]},{'name':_0xf0fa('0x5'),'fields':[_0xf0fa('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
index e6d5bb2..edcbf22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['create','value','format','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','error','code','VoiceRecording,\x20%s,\x20%s','message','info','result','catch','UpdateVoiceRecording','update','options','raw','attributes','limit','debug','stringify','CreateVoiceRecording','findOne','callRecordingEncryption'];(function(_0x5958de,_0x33e6f3){var _0x591e60=function(_0x4a52d1){while(--_0x4a52d1){_0x5958de['push'](_0x5958de['shift']());}};_0x591e60(++_0x33e6f3);}(_0xdf55,0x83));var _0x5df5=function(_0x1a71ef,_0x31ed01){_0x1a71ef=_0x1a71ef-0x0;var _0x1899f7=_0xdf55[_0x1a71ef];return _0x1899f7;};'use strict';var _=require(_0x5df5('0x0'));var util=require(_0x5df5('0x1'));var moment=require('moment');var BPromise=require(_0x5df5('0x2'));var rs=require(_0x5df5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5df5('0x4'))['db'];var utils=require(_0x5df5('0x5'));var logger=require(_0x5df5('0x6'))('rpc');var config=require(_0x5df5('0x7'));var jayson=require(_0x5df5('0x8'));var client=jayson[_0x5df5('0x9')][_0x5df5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9b8756,_0x2b7ed9,_0x4722a2){return new BPromise(function(_0x3743f3,_0x4d43a3){return client[_0x5df5('0xb')](_0x9b8756,_0x4722a2)[_0x5df5('0xc')](function(_0x41941e){logger['info']('VoiceRecording,\x20%s,\x20%s',_0x2b7ed9,_0x5df5('0xd'));logger['debug'](_0x5df5('0xe'),_0x2b7ed9,_0x5df5('0xd'),JSON['stringify'](_0x41941e));if(_0x41941e['error']){if(_0x41941e[_0x5df5('0xf')][_0x5df5('0x10')]===0x1f4){logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);return _0x4d43a3(_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);}logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e['error'][_0x5df5('0x12')]);return _0x3743f3(_0x41941e['error'][_0x5df5('0x12')]);}else{logger[_0x5df5('0x13')](_0x5df5('0x11'),_0x2b7ed9,_0x5df5('0xd'));_0x3743f3(_0x41941e[_0x5df5('0x14')]['message']);}})[_0x5df5('0x15')](function(_0x457205){logger['error'](_0x5df5('0x11'),_0x2b7ed9,_0x457205);_0x4d43a3(_0x457205);});});}exports[_0x5df5('0x16')]=function(_0xb7e1c2){var _0x44f700=this;return new Promise(function(_0x215d59,_0x4b499d){return db['VoiceRecording'][_0x5df5('0x17')](_0xb7e1c2['body'],{'raw':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2[_0x5df5('0x18')]['where']||null:null,'attributes':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1a')]||null:null,'limit':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1b')]||null:null})['then'](function(_0x2e99a1){logger[_0x5df5('0x13')](_0x5df5('0x16'),_0xb7e1c2);logger[_0x5df5('0x1c')]('UpdateVoiceRecording',_0xb7e1c2,JSON[_0x5df5('0x1d')](_0x2e99a1));_0x215d59(_0x2e99a1);})[_0x5df5('0x15')](function(_0x395f3e){logger['error']('UpdateVoiceRecording',_0x395f3e['message'],_0xb7e1c2);_0x4b499d(_0x44f700[_0x5df5('0xf')](0x1f4,_0x395f3e[_0x5df5('0x12')]));});});};exports[_0x5df5('0x1e')]=function(_0xa7f4b3){var _0x1baf52=this;return new Promise(function(_0x1fd83c,_0x210d20){var _0x28723e=require('../../components/encryptor');var _0x18bb61;return db['Setting'][_0x5df5('0x1f')]({'attributes':['id',_0x5df5('0x20')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x3854d0){_0x18bb61=_0x3854d0;return db['VoiceRecording'][_0x5df5('0x21')](_0xa7f4b3['body']);})[_0x5df5('0xc')](function(_0x4afe36){if(_0x18bb61[_0x5df5('0x20')]&&fs['existsSync'](_0x4afe36[_0x5df5('0x22')])){var _0x47bebb=util[_0x5df5('0x23')]('%s.cypher',_0x4afe36[_0x5df5('0x22')]);return _0x28723e[_0x5df5('0x24')](_0x4afe36[_0x5df5('0x22')],_0x47bebb,config[_0x5df5('0x25')][_0x5df5('0x26')])[_0x5df5('0xc')](function(){fs[_0x5df5('0x27')](_0x4afe36['value']);logger['info'](_0x5df5('0x28'));return _0x4afe36;});}return _0x4afe36;})[_0x5df5('0xc')](function(_0x3bbd2b){logger[_0x5df5('0x13')](_0x5df5('0x1e'),_0xa7f4b3);logger[_0x5df5('0x1c')]('CreateVoiceRecording',_0xa7f4b3,JSON[_0x5df5('0x1d')](_0x3bbd2b));_0x1fd83c(_0x3bbd2b);})[_0x5df5('0x15')](function(_0x2f1001){logger[_0x5df5('0xf')]('CreateVoiceRecording',_0x2f1001[_0x5df5('0x12')],_0xa7f4b3);_0x210d20(_0x1baf52['error'](0x1f4,_0x2f1001[_0x5df5('0x12')]));});});};
\ No newline at end of file
+var _0x4325=['attributes','CreateVoiceRecording','Setting','findOne','create','existsSync','value','%s.cypher','encryptFile','secrets','recording','unlink','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','VoiceRecording,\x20%s,\x20%s','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where'];(function(_0xcbda08,_0x523f37){var _0x3f8713=function(_0x561b9d){while(--_0x561b9d){_0xcbda08['push'](_0xcbda08['shift']());}};_0x3f8713(++_0x523f37);}(_0x4325,0x1da));var _0x5432=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4325[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x5432('0x0'));var util=require(_0x5432('0x1'));var moment=require('moment');var BPromise=require(_0x5432('0x2'));var rs=require(_0x5432('0x3'));var fs=require('fs');var Redis=require(_0x5432('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5432('0x5'))(_0x5432('0x6'));var config=require(_0x5432('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5432('0x8')][_0x5432('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a6e76,_0x106ec9,_0x50394d){return new BPromise(function(_0xc8252e,_0x1c9762){return client[_0x5432('0xa')](_0x4a6e76,_0x50394d)[_0x5432('0xb')](function(_0x263a0c){logger['info'](_0x5432('0xc'),_0x106ec9,'request\x20sent');logger[_0x5432('0xd')](_0x5432('0xe'),_0x106ec9,_0x5432('0xf'),JSON[_0x5432('0x10')](_0x263a0c));if(_0x263a0c['error']){if(_0x263a0c['error'][_0x5432('0x11')]===0x1f4){logger[_0x5432('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x106ec9,_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);return _0x1c9762(_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);}logger[_0x5432('0x12')](_0x5432('0xc'),_0x106ec9,_0x263a0c['error']['message']);return _0xc8252e(_0x263a0c[_0x5432('0x12')][_0x5432('0x13')]);}else{logger[_0x5432('0x14')](_0x5432('0xc'),_0x106ec9,_0x5432('0xf'));_0xc8252e(_0x263a0c[_0x5432('0x15')]['message']);}})[_0x5432('0x16')](function(_0x49e8fd){logger[_0x5432('0x12')](_0x5432('0xc'),_0x106ec9,_0x49e8fd);_0x1c9762(_0x49e8fd);});});}exports[_0x5432('0x17')]=function(_0x32fe60){var _0x4221a8=this;return new Promise(function(_0x5f011f,_0x3f3873){return db[_0x5432('0x18')][_0x5432('0x19')](_0x32fe60[_0x5432('0x1a')],{'raw':_0x32fe60[_0x5432('0x1b')]?_0x32fe60[_0x5432('0x1b')][_0x5432('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32fe60['options']?_0x32fe60[_0x5432('0x1b')][_0x5432('0x1d')]||null:null,'attributes':_0x32fe60[_0x5432('0x1b')]?_0x32fe60[_0x5432('0x1b')][_0x5432('0x1e')]||null:null,'limit':_0x32fe60['options']?_0x32fe60['options']['limit']||null:null})[_0x5432('0xb')](function(_0xb900f2){logger[_0x5432('0x14')](_0x5432('0x17'),_0x32fe60);logger['debug']('UpdateVoiceRecording',_0x32fe60,JSON[_0x5432('0x10')](_0xb900f2));_0x5f011f(_0xb900f2);})[_0x5432('0x16')](function(_0x4a40fc){logger[_0x5432('0x12')](_0x5432('0x17'),_0x4a40fc[_0x5432('0x13')],_0x32fe60);_0x3f3873(_0x4221a8['error'](0x1f4,_0x4a40fc[_0x5432('0x13')]));});});};exports[_0x5432('0x1f')]=function(_0xe7eda2){var _0x520da1=this;return new Promise(function(_0x4ab09d,_0x1f2055){var _0x2114b8=require('../../components/encryptor');var _0x1abe73;return db[_0x5432('0x20')][_0x5432('0x21')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x5432('0xb')](function(_0x5be867){_0x1abe73=_0x5be867;return db['VoiceRecording'][_0x5432('0x22')](_0xe7eda2['body']);})[_0x5432('0xb')](function(_0x578281){if(_0x1abe73['callRecordingEncryption']&&fs[_0x5432('0x23')](_0x578281[_0x5432('0x24')])){var _0x345b51=util['format'](_0x5432('0x25'),_0x578281[_0x5432('0x24')]);return _0x2114b8[_0x5432('0x26')](_0x578281[_0x5432('0x24')],_0x345b51,config[_0x5432('0x27')][_0x5432('0x28')])[_0x5432('0xb')](function(){fs[_0x5432('0x29')](_0x578281[_0x5432('0x24')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x578281;});}return _0x578281;})[_0x5432('0xb')](function(_0x42ab1e){logger[_0x5432('0x14')](_0x5432('0x1f'),_0xe7eda2);logger[_0x5432('0xd')]('CreateVoiceRecording',_0xe7eda2,JSON[_0x5432('0x10')](_0x42ab1e));_0x4ab09d(_0x42ab1e);})['catch'](function(_0x2955e0){logger[_0x5432('0x12')](_0x5432('0x1f'),_0x2955e0[_0x5432('0x13')],_0xe7eda2);_0x1f2055(_0x520da1[_0x5432('0x12')](0x1f4,_0x2955e0[_0x5432('0x13')]));});});};
\ No newline at end of file
index 1c62d7f..162e27d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bbd=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x8bbd,0x1b3));var _0xd8bb=function(_0x2c05ed,_0x27c72e){_0x2c05ed=_0x2c05ed-0x0;var _0x62ed73=_0x8bbd[_0x2c05ed];return _0x62ed73;};'use strict';var multer=require(_0xd8bb('0x0'));var util=require(_0xd8bb('0x1'));var path=require(_0xd8bb('0x2'));var timeout=require(_0xd8bb('0x3'));var express=require('express');var router=express[_0xd8bb('0x4')]();var fs_extra=require(_0xd8bb('0x5'));var auth=require(_0xd8bb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd8bb('0x7'));var controller=require('./voiceTransferReport.controller');router[_0xd8bb('0x8')]('/',auth[_0xd8bb('0x9')](),controller[_0xd8bb('0xa')]);router['get'](_0xd8bb('0xb'),auth['isAuthenticated'](),controller[_0xd8bb('0xc')]);router[_0xd8bb('0x8')](_0xd8bb('0xd'),auth['isAuthenticated'](),controller[_0xd8bb('0xe')]);router['post']('/',auth[_0xd8bb('0x9')](),controller[_0xd8bb('0xf')]);router[_0xd8bb('0x10')](_0xd8bb('0xd'),auth[_0xd8bb('0x9')](),controller[_0xd8bb('0x11')]);router[_0xd8bb('0x12')](_0xd8bb('0xd'),auth[_0xd8bb('0x9')](),controller[_0xd8bb('0x13')]);module[_0xd8bb('0x14')]=router;
\ No newline at end of file
+var _0xb0c3=['../../config/environment','isAuthenticated','index','get','describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service'];(function(_0x30a43e,_0xe75825){var _0x7f4af9=function(_0x419891){while(--_0x419891){_0x30a43e['push'](_0x30a43e['shift']());}};_0x7f4af9(++_0xe75825);}(_0xb0c3,0xcb));var _0x3b0c=function(_0x6d9a0a,_0x5aa364){_0x6d9a0a=_0x6d9a0a-0x0;var _0x376544=_0xb0c3[_0x6d9a0a];return _0x376544;};'use strict';var multer=require(_0x3b0c('0x0'));var util=require(_0x3b0c('0x1'));var path=require(_0x3b0c('0x2'));var timeout=require('connect-timeout');var express=require(_0x3b0c('0x3'));var router=express['Router']();var fs_extra=require(_0x3b0c('0x4'));var auth=require(_0x3b0c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3b0c('0x6'));var controller=require('./voiceTransferReport.controller');router['get']('/',auth[_0x3b0c('0x7')](),controller[_0x3b0c('0x8')]);router[_0x3b0c('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x3b0c('0xa')]);router[_0x3b0c('0x9')](_0x3b0c('0xb'),auth[_0x3b0c('0x7')](),controller['show']);router[_0x3b0c('0xc')]('/',auth[_0x3b0c('0x7')](),controller[_0x3b0c('0xd')]);router[_0x3b0c('0xe')](_0x3b0c('0xb'),auth[_0x3b0c('0x7')](),controller[_0x3b0c('0xf')]);router[_0x3b0c('0x10')](_0x3b0c('0xb'),auth[_0x3b0c('0x7')](),controller[_0x3b0c('0x11')]);module[_0x3b0c('0x12')]=router;
\ No newline at end of file
index 2d1f929..1943a88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f5=['moment','exports','ENUM','attended','STRING','sequelize'];(function(_0xc96ce9,_0x39dab2){var _0x4f8966=function(_0x5739ef){while(--_0x5739ef){_0xc96ce9['push'](_0xc96ce9['shift']());}};_0x4f8966(++_0x39dab2);}(_0x08f5,0xcb));var _0x508f=function(_0xd8f7bd,_0x45dc8c){_0xd8f7bd=_0xd8f7bd-0x0;var _0x1bd5ee=_0x08f5[_0xd8f7bd];return _0x1bd5ee;};'use strict';var Sequelize=require(_0x508f('0x0'));var moment=require(_0x508f('0x1'));module[_0x508f('0x2')]={'type':{'type':Sequelize[_0x508f('0x3')]('blind',_0x508f('0x4'))},'result':{'type':Sequelize[_0x508f('0x5')]},'transfererchannel':{'type':Sequelize[_0x508f('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x508f('0x5')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x508f('0x5')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x508f('0x5')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x508f('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize[_0x508f('0x5')]},'transfereeexten':{'type':Sequelize[_0x508f('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x508f('0x5')]},'isexternal':{'type':Sequelize[_0x508f('0x3')]('Yes','No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x508f('0x5')]}};
\ No newline at end of file
+var _0x104a=['STRING','Yes','sequelize','moment','ENUM','blind'];(function(_0x44c423,_0x5b534b){var _0x3a44bb=function(_0xe34e7b){while(--_0xe34e7b){_0x44c423['push'](_0x44c423['shift']());}};_0x3a44bb(++_0x5b534b);}(_0x104a,0x128));var _0xa104=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0x104a[_0x1992f1];return _0x413dfe;};'use strict';var Sequelize=require(_0xa104('0x0'));var moment=require(_0xa104('0x1'));module['exports']={'type':{'type':Sequelize[_0xa104('0x2')](_0xa104('0x3'),'attended')},'result':{'type':Sequelize[_0xa104('0x4')]},'transfererchannel':{'type':Sequelize[_0xa104('0x4')]},'transferercalleridnum':{'type':Sequelize[_0xa104('0x4')]},'transferercalleridname':{'type':Sequelize[_0xa104('0x4')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0xa104('0x4')]},'transfereraccountcode':{'type':Sequelize[_0xa104('0x4')]},'transferercontext':{'type':Sequelize[_0xa104('0x4')]},'transfererexten':{'type':Sequelize[_0xa104('0x4')]},'transfererlinkedid':{'type':Sequelize[_0xa104('0x4')]},'transfereechannel':{'type':Sequelize[_0xa104('0x4')]},'transfereecalleridnum':{'type':Sequelize[_0xa104('0x4')]},'transfereecalleridname':{'type':Sequelize[_0xa104('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xa104('0x4')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize[_0xa104('0x4')]},'transfereeexten':{'type':Sequelize[_0xa104('0x4')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize['ENUM'](_0xa104('0x5'),'No')},'context':{'type':Sequelize[_0xa104('0x4')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index fafbf04..5e4538a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63d8=['attributes','intersection','fields','length','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','send','index','map','VoiceTransferReport','rawAttributes','type','key','model','query','keys','filters'];(function(_0x4259bd,_0x2be674){var _0x5d32a9=function(_0x50cf9e){while(--_0x50cf9e){_0x4259bd['push'](_0x4259bd['shift']());}};_0x5d32a9(++_0x2be674);}(_0x63d8,0xae));var _0x863d=function(_0x1a0d8c,_0x5bb891){_0x1a0d8c=_0x1a0d8c-0x0;var _0xa1e330=_0x63d8[_0x1a0d8c];return _0xa1e330;};'use strict';var emlformat=require(_0x863d('0x0'));var rimraf=require(_0x863d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x863d('0x2'));var rp=require('request-promise');var moment=require(_0x863d('0x3'));var BPromise=require(_0x863d('0x4'));var Mustache=require(_0x863d('0x5'));var util=require(_0x863d('0x6'));var path=require('path');var sox=require(_0x863d('0x7'));var csv=require('to-csv');var ejs=require(_0x863d('0x8'));var fs=require('fs');var fs_extra=require(_0x863d('0x9'));var _=require(_0x863d('0xa'));var squel=require(_0x863d('0xb'));var crypto=require(_0x863d('0xc'));var jsforce=require(_0x863d('0xd'));var deskjs=require(_0x863d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x863d('0xf'));var Papa=require(_0x863d('0x10'));var Redis=require(_0x863d('0x11'));var authService=require(_0x863d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x863d('0x13'));var hardwareService=require(_0x863d('0x14'));var logger=require(_0x863d('0x15'))(_0x863d('0x16'));var utils=require(_0x863d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x863d('0x18'));var db=require(_0x863d('0x19'))['db'];function respondWithStatusCode(_0xe7b1a6,_0x505a33){_0x505a33=_0x505a33||0xcc;return function(_0x4913a9){if(_0x4913a9){return _0xe7b1a6[_0x863d('0x1a')](_0x505a33);}return _0xe7b1a6['status'](_0x505a33)[_0x863d('0x1b')]();};}function respondWithResult(_0x422cda,_0x4577a7){_0x4577a7=_0x4577a7||0xc8;return function(_0xc5a66){if(_0xc5a66){return _0x422cda[_0x863d('0x1c')](_0x4577a7)['json'](_0xc5a66);}};}function respondWithFilteredResult(_0x4b1014,_0xfc788f){return function(_0x216e63){if(_0x216e63){var _0x34c24b=typeof _0xfc788f[_0x863d('0x1d')]===_0x863d('0x1e')&&typeof _0xfc788f['limit']===_0x863d('0x1e');var _0x17f134=_0x216e63[_0x863d('0x1f')];var _0x3251fc=_0x34c24b?0x0:_0xfc788f[_0x863d('0x1d')];var _0x5e5fa9=_0x34c24b?_0x216e63[_0x863d('0x1f')]:_0xfc788f[_0x863d('0x1d')]+_0xfc788f[_0x863d('0x20')];var _0x181595;if(_0x5e5fa9>=_0x17f134){_0x5e5fa9=_0x17f134;_0x181595=0xc8;}else{_0x181595=0xce;}_0x4b1014['status'](_0x181595);return _0x4b1014['set'](_0x863d('0x21'),_0x3251fc+'-'+_0x5e5fa9+'/'+_0x17f134)[_0x863d('0x22')](_0x216e63);}return null;};}function patchUpdates(_0xb637ec){return function(_0x23fc74){try{jsonpatch[_0x863d('0x23')](_0x23fc74,_0xb637ec,!![]);}catch(_0x48cdf7){return BPromise[_0x863d('0x24')](_0x48cdf7);}return _0x23fc74['save']();};}function saveUpdates(_0x1ca58d,_0x2067c4){return function(_0x583b82){if(_0x583b82){return _0x583b82[_0x863d('0x25')](_0x1ca58d)[_0x863d('0x26')](function(_0xd68873){return _0xd68873;});}return null;};}function removeEntity(_0x4e94cb,_0x485ceb){return function(_0x2e0ddf){if(_0x2e0ddf){return _0x2e0ddf[_0x863d('0x27')]()[_0x863d('0x26')](function(){_0x4e94cb[_0x863d('0x1c')](0xcc)[_0x863d('0x1b')]();});}};}function handleEntityNotFound(_0x113753,_0x32571f){return function(_0x4272cc){if(!_0x4272cc){_0x113753[_0x863d('0x1a')](0x194);}return _0x4272cc;};}function handleError(_0xfd254f,_0x304aec){_0x304aec=_0x304aec||0x1f4;return function(_0x35c4e3){logger[_0x863d('0x28')](_0x35c4e3[_0x863d('0x29')]);if(_0x35c4e3[_0x863d('0x2a')]){delete _0x35c4e3[_0x863d('0x2a')];}_0xfd254f[_0x863d('0x1c')](_0x304aec)[_0x863d('0x2b')](_0x35c4e3);};}exports[_0x863d('0x2c')]=function(_0x4fd0be,_0x42bad1){var _0x3cf3a2={},_0x1de653={},_0xbba6f0={'count':0x0,'rows':[]};var _0x52308a=_[_0x863d('0x2d')](db[_0x863d('0x2e')][_0x863d('0x2f')],function(_0x5c5ab1){return{'name':_0x5c5ab1['fieldName'],'type':_0x5c5ab1[_0x863d('0x30')][_0x863d('0x31')]};});_0x1de653[_0x863d('0x32')]=_[_0x863d('0x2d')](_0x52308a,_0x863d('0x2a'));_0x1de653[_0x863d('0x33')]=_[_0x863d('0x34')](_0x4fd0be[_0x863d('0x33')]);_0x1de653[_0x863d('0x35')]=_['intersection'](_0x1de653['model'],_0x1de653['query']);_0x3cf3a2[_0x863d('0x36')]=_[_0x863d('0x37')](_0x1de653[_0x863d('0x32')],qs[_0x863d('0x38')](_0x4fd0be[_0x863d('0x33')]['fields']));_0x3cf3a2[_0x863d('0x36')]=_0x3cf3a2['attributes'][_0x863d('0x39')]?_0x3cf3a2[_0x863d('0x36')]:_0x1de653[_0x863d('0x32')];if(!_0x4fd0be['query']['hasOwnProperty'](_0x863d('0x3a'))){_0x3cf3a2[_0x863d('0x20')]=qs['limit'](_0x4fd0be[_0x863d('0x33')][_0x863d('0x20')]);_0x3cf3a2[_0x863d('0x1d')]=qs[_0x863d('0x1d')](_0x4fd0be[_0x863d('0x33')][_0x863d('0x1d')]);}_0x3cf3a2['order']=qs['sort'](_0x4fd0be[_0x863d('0x33')][_0x863d('0x3b')]);_0x3cf3a2[_0x863d('0x3c')]=qs[_0x863d('0x35')](_[_0x863d('0x3d')](_0x4fd0be[_0x863d('0x33')],_0x1de653[_0x863d('0x35')]),_0x52308a);if(_0x4fd0be[_0x863d('0x33')][_0x863d('0x3e')]){_0x3cf3a2[_0x863d('0x3c')]=_[_0x863d('0x3f')](_0x3cf3a2[_0x863d('0x3c')],{'$or':_[_0x863d('0x2d')](_0x52308a,function(_0x14e14d){if(_0x14e14d[_0x863d('0x30')]!=='VIRTUAL'){var _0x28dbea={};_0x28dbea[_0x14e14d[_0x863d('0x2a')]]={'$like':'%'+_0x4fd0be[_0x863d('0x33')]['filter']+'%'};return _0x28dbea;}})});}_0x3cf3a2=_[_0x863d('0x3f')]({},_0x3cf3a2,_0x4fd0be[_0x863d('0x40')]);var _0x2359f6={'where':_0x3cf3a2[_0x863d('0x3c')]};return db[_0x863d('0x2e')][_0x863d('0x1f')](_0x2359f6)[_0x863d('0x26')](function(_0x983482){_0xbba6f0[_0x863d('0x1f')]=_0x983482;if(_0x4fd0be[_0x863d('0x33')][_0x863d('0x41')]){_0x3cf3a2[_0x863d('0x42')]=[{'all':!![]}];}return db['VoiceTransferReport'][_0x863d('0x43')](_0x3cf3a2);})[_0x863d('0x26')](function(_0x219f02){_0xbba6f0[_0x863d('0x44')]=_0x219f02;return _0xbba6f0;})[_0x863d('0x26')](respondWithFilteredResult(_0x42bad1,_0x3cf3a2))[_0x863d('0x45')](handleError(_0x42bad1,null));};exports[_0x863d('0x46')]=function(_0x483d8c,_0x51327f){var _0x96b93a={'raw':!![],'where':{'id':_0x483d8c[_0x863d('0x47')]['id']}},_0x5da65c={};_0x5da65c[_0x863d('0x32')]=_[_0x863d('0x34')](db['VoiceTransferReport'][_0x863d('0x2f')]);_0x5da65c[_0x863d('0x33')]=_['keys'](_0x483d8c[_0x863d('0x33')]);_0x5da65c[_0x863d('0x35')]=_[_0x863d('0x37')](_0x5da65c['model'],_0x5da65c[_0x863d('0x33')]);_0x96b93a[_0x863d('0x36')]=_[_0x863d('0x37')](_0x5da65c[_0x863d('0x32')],qs['fields'](_0x483d8c[_0x863d('0x33')][_0x863d('0x38')]));_0x96b93a['attributes']=_0x96b93a['attributes'][_0x863d('0x39')]?_0x96b93a['attributes']:_0x5da65c[_0x863d('0x32')];if(_0x483d8c['query'][_0x863d('0x41')]){_0x96b93a['include']=[{'all':!![]}];}_0x96b93a=_[_0x863d('0x3f')]({},_0x96b93a,_0x483d8c[_0x863d('0x40')]);return db[_0x863d('0x2e')][_0x863d('0x48')](_0x96b93a)[_0x863d('0x26')](handleEntityNotFound(_0x51327f,null))[_0x863d('0x26')](respondWithResult(_0x51327f,null))['catch'](handleError(_0x51327f,null));};exports[_0x863d('0x49')]=function(_0x49c54c,_0x3b6b5b){return db['VoiceTransferReport'][_0x863d('0x49')](_0x49c54c[_0x863d('0x4a')],{})[_0x863d('0x26')](respondWithResult(_0x3b6b5b,0xc9))[_0x863d('0x45')](handleError(_0x3b6b5b,null));};exports[_0x863d('0x25')]=function(_0xf02a82,_0x2f6608){if(_0xf02a82[_0x863d('0x4a')]['id']){delete _0xf02a82['body']['id'];}return db[_0x863d('0x2e')][_0x863d('0x48')]({'where':{'id':_0xf02a82['params']['id']}})[_0x863d('0x26')](handleEntityNotFound(_0x2f6608,null))['then'](saveUpdates(_0xf02a82['body'],null))['then'](respondWithResult(_0x2f6608,null))[_0x863d('0x45')](handleError(_0x2f6608,null));};exports['destroy']=function(_0x214cb9,_0x2bf48c){return db[_0x863d('0x2e')][_0x863d('0x48')]({'where':{'id':_0x214cb9[_0x863d('0x47')]['id']}})['then'](handleEntityNotFound(_0x2bf48c,null))['then'](removeEntity(_0x2bf48c,null))[_0x863d('0x45')](handleError(_0x2bf48c,null));};exports[_0x863d('0x4b')]=function(_0x2d9be0,_0x2f1311){return db['VoiceTransferReport'][_0x863d('0x4b')]()['then'](respondWithResult(_0x2f1311,null))[_0x863d('0x45')](handleError(_0x2f1311,null));};
\ No newline at end of file
+var _0x772c=['map','rawAttributes','key','model','query','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','VoiceTransferReport','include','findAll','rows','catch','show','params','keys','fields','includeAll','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','end','stack','name','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x772c,0xfb));var _0xc772=function(_0x304ec2,_0x507b33){_0x304ec2=_0x304ec2-0x0;var _0x26e56d=_0x772c[_0x304ec2];return _0x26e56d;};'use strict';var emlformat=require(_0xc772('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc772('0x1'));var jsonpatch=require(_0xc772('0x2'));var rp=require(_0xc772('0x3'));var moment=require(_0xc772('0x4'));var BPromise=require(_0xc772('0x5'));var Mustache=require(_0xc772('0x6'));var util=require('util');var path=require(_0xc772('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc772('0x8'));var _=require(_0xc772('0x9'));var squel=require(_0xc772('0xa'));var crypto=require(_0xc772('0xb'));var jsforce=require(_0xc772('0xc'));var deskjs=require(_0xc772('0xd'));var toCsv=require(_0xc772('0xe'));var querystring=require(_0xc772('0xf'));var Papa=require(_0xc772('0x10'));var Redis=require(_0xc772('0x11'));var authService=require(_0xc772('0x12'));var qs=require(_0xc772('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xc772('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xc772('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1cb13a,_0x8ee1ed){_0x8ee1ed=_0x8ee1ed||0xcc;return function(_0x3c9a37){if(_0x3c9a37){return _0x1cb13a[_0xc772('0x16')](_0x8ee1ed);}return _0x1cb13a['status'](_0x8ee1ed)['end']();};}function respondWithResult(_0x14d0be,_0x1e44d1){_0x1e44d1=_0x1e44d1||0xc8;return function(_0x5f1ea5){if(_0x5f1ea5){return _0x14d0be[_0xc772('0x17')](_0x1e44d1)[_0xc772('0x18')](_0x5f1ea5);}};}function respondWithFilteredResult(_0x14dd44,_0x59d039){return function(_0x5f54d5){if(_0x5f54d5){var _0x31cd4e=typeof _0x59d039[_0xc772('0x19')]===_0xc772('0x1a')&&typeof _0x59d039[_0xc772('0x1b')]===_0xc772('0x1a');var _0x3ab16a=_0x5f54d5[_0xc772('0x1c')];var _0x47726b=_0x31cd4e?0x0:_0x59d039[_0xc772('0x19')];var _0x4c62a6=_0x31cd4e?_0x5f54d5[_0xc772('0x1c')]:_0x59d039[_0xc772('0x19')]+_0x59d039[_0xc772('0x1b')];var _0x222922;if(_0x4c62a6>=_0x3ab16a){_0x4c62a6=_0x3ab16a;_0x222922=0xc8;}else{_0x222922=0xce;}_0x14dd44[_0xc772('0x17')](_0x222922);return _0x14dd44[_0xc772('0x1d')](_0xc772('0x1e'),_0x47726b+'-'+_0x4c62a6+'/'+_0x3ab16a)[_0xc772('0x18')](_0x5f54d5);}return null;};}function patchUpdates(_0x579608){return function(_0x15f56e){try{jsonpatch[_0xc772('0x1f')](_0x15f56e,_0x579608,!![]);}catch(_0x2c006a){return BPromise[_0xc772('0x20')](_0x2c006a);}return _0x15f56e[_0xc772('0x21')]();};}function saveUpdates(_0x120c44,_0x4a57b9){return function(_0x1ef986){if(_0x1ef986){return _0x1ef986[_0xc772('0x22')](_0x120c44)['then'](function(_0x1cf044){return _0x1cf044;});}return null;};}function removeEntity(_0x323a94,_0xc19df3){return function(_0x19403e){if(_0x19403e){return _0x19403e[_0xc772('0x23')]()[_0xc772('0x24')](function(){_0x323a94['status'](0xcc)[_0xc772('0x25')]();});}};}function handleEntityNotFound(_0x688f11,_0x1360a7){return function(_0x269a9e){if(!_0x269a9e){_0x688f11['sendStatus'](0x194);}return _0x269a9e;};}function handleError(_0x42bd22,_0x53c469){_0x53c469=_0x53c469||0x1f4;return function(_0xdfddb7){logger['error'](_0xdfddb7[_0xc772('0x26')]);if(_0xdfddb7[_0xc772('0x27')]){delete _0xdfddb7['name'];}_0x42bd22[_0xc772('0x17')](_0x53c469)['send'](_0xdfddb7);};}exports[_0xc772('0x28')]=function(_0x118163,_0x59af9a){var _0x32abd5={},_0x2f1776={},_0x561277={'count':0x0,'rows':[]};var _0x12964d=_[_0xc772('0x29')](db['VoiceTransferReport'][_0xc772('0x2a')],function(_0x12530f){return{'name':_0x12530f['fieldName'],'type':_0x12530f['type'][_0xc772('0x2b')]};});_0x2f1776[_0xc772('0x2c')]=_['map'](_0x12964d,'name');_0x2f1776[_0xc772('0x2d')]=_['keys'](_0x118163[_0xc772('0x2d')]);_0x2f1776[_0xc772('0x2e')]=_['intersection'](_0x2f1776[_0xc772('0x2c')],_0x2f1776[_0xc772('0x2d')]);_0x32abd5[_0xc772('0x2f')]=_[_0xc772('0x30')](_0x2f1776['model'],qs['fields'](_0x118163[_0xc772('0x2d')]['fields']));_0x32abd5[_0xc772('0x2f')]=_0x32abd5[_0xc772('0x2f')]['length']?_0x32abd5['attributes']:_0x2f1776['model'];if(!_0x118163[_0xc772('0x2d')][_0xc772('0x31')](_0xc772('0x32'))){_0x32abd5[_0xc772('0x1b')]=qs[_0xc772('0x1b')](_0x118163[_0xc772('0x2d')][_0xc772('0x1b')]);_0x32abd5[_0xc772('0x19')]=qs[_0xc772('0x19')](_0x118163['query'][_0xc772('0x19')]);}_0x32abd5[_0xc772('0x33')]=qs[_0xc772('0x34')](_0x118163[_0xc772('0x2d')][_0xc772('0x34')]);_0x32abd5[_0xc772('0x35')]=qs[_0xc772('0x2e')](_[_0xc772('0x36')](_0x118163['query'],_0x2f1776[_0xc772('0x2e')]),_0x12964d);if(_0x118163[_0xc772('0x2d')]['filter']){_0x32abd5[_0xc772('0x35')]=_[_0xc772('0x37')](_0x32abd5[_0xc772('0x35')],{'$or':_['map'](_0x12964d,function(_0x58895e){if(_0x58895e[_0xc772('0x38')]!==_0xc772('0x39')){var _0x52ca50={};_0x52ca50[_0x58895e[_0xc772('0x27')]]={'$like':'%'+_0x118163[_0xc772('0x2d')][_0xc772('0x3a')]+'%'};return _0x52ca50;}})});}_0x32abd5=_[_0xc772('0x37')]({},_0x32abd5,_0x118163['options']);var _0xa45089={'where':_0x32abd5['where']};return db[_0xc772('0x3b')][_0xc772('0x1c')](_0xa45089)[_0xc772('0x24')](function(_0x8ce743){_0x561277[_0xc772('0x1c')]=_0x8ce743;if(_0x118163[_0xc772('0x2d')]['includeAll']){_0x32abd5[_0xc772('0x3c')]=[{'all':!![]}];}return db[_0xc772('0x3b')][_0xc772('0x3d')](_0x32abd5);})[_0xc772('0x24')](function(_0x3bdfcb){_0x561277[_0xc772('0x3e')]=_0x3bdfcb;return _0x561277;})[_0xc772('0x24')](respondWithFilteredResult(_0x59af9a,_0x32abd5))[_0xc772('0x3f')](handleError(_0x59af9a,null));};exports[_0xc772('0x40')]=function(_0x53f122,_0x8c7a5b){var _0x1780b2={'raw':!![],'where':{'id':_0x53f122[_0xc772('0x41')]['id']}},_0x4909c2={};_0x4909c2['model']=_[_0xc772('0x42')](db[_0xc772('0x3b')][_0xc772('0x2a')]);_0x4909c2[_0xc772('0x2d')]=_['keys'](_0x53f122[_0xc772('0x2d')]);_0x4909c2[_0xc772('0x2e')]=_[_0xc772('0x30')](_0x4909c2[_0xc772('0x2c')],_0x4909c2[_0xc772('0x2d')]);_0x1780b2[_0xc772('0x2f')]=_[_0xc772('0x30')](_0x4909c2['model'],qs['fields'](_0x53f122[_0xc772('0x2d')][_0xc772('0x43')]));_0x1780b2[_0xc772('0x2f')]=_0x1780b2[_0xc772('0x2f')]['length']?_0x1780b2[_0xc772('0x2f')]:_0x4909c2[_0xc772('0x2c')];if(_0x53f122[_0xc772('0x2d')][_0xc772('0x44')]){_0x1780b2[_0xc772('0x3c')]=[{'all':!![]}];}_0x1780b2=_['merge']({},_0x1780b2,_0x53f122['options']);return db[_0xc772('0x3b')][_0xc772('0x45')](_0x1780b2)[_0xc772('0x24')](handleEntityNotFound(_0x8c7a5b,null))[_0xc772('0x24')](respondWithResult(_0x8c7a5b,null))[_0xc772('0x3f')](handleError(_0x8c7a5b,null));};exports[_0xc772('0x46')]=function(_0x48ae4a,_0x26fc73){return db['VoiceTransferReport'][_0xc772('0x46')](_0x48ae4a[_0xc772('0x47')],{})[_0xc772('0x24')](respondWithResult(_0x26fc73,0xc9))['catch'](handleError(_0x26fc73,null));};exports['update']=function(_0x5cd741,_0x41c7f6){if(_0x5cd741['body']['id']){delete _0x5cd741[_0xc772('0x47')]['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x5cd741[_0xc772('0x41')]['id']}})[_0xc772('0x24')](handleEntityNotFound(_0x41c7f6,null))['then'](saveUpdates(_0x5cd741['body'],null))['then'](respondWithResult(_0x41c7f6,null))[_0xc772('0x3f')](handleError(_0x41c7f6,null));};exports[_0xc772('0x23')]=function(_0x541fd1,_0x292433){return db['VoiceTransferReport'][_0xc772('0x45')]({'where':{'id':_0x541fd1['params']['id']}})[_0xc772('0x24')](handleEntityNotFound(_0x292433,null))[_0xc772('0x24')](removeEntity(_0x292433,null))[_0xc772('0x3f')](handleError(_0x292433,null));};exports[_0xc772('0x48')]=function(_0x5945ab,_0x58e927){return db[_0xc772('0x3b')][_0xc772('0x48')]()[_0xc772('0x24')](respondWithResult(_0x58e927,null))[_0xc772('0x3f')](handleError(_0x58e927,null));};
\ No newline at end of file
index 059be59..3d7dbf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a4=['exports','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x3b2254,_0x235a59){var _0x592ebe=function(_0x5874e){while(--_0x5874e){_0x3b2254['push'](_0x3b2254['shift']());}};_0x592ebe(++_0x235a59);}(_0x99a4,0x1b0));var _0x499a=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x99a4[_0x1d9aa0];return _0x226868;};'use strict';var _=require(_0x499a('0x0'));var util=require(_0x499a('0x1'));var logger=require(_0x499a('0x2'))(_0x499a('0x3'));var moment=require(_0x499a('0x4'));var BPromise=require('bluebird');var rp=require(_0x499a('0x5'));var fs=require('fs');var path=require(_0x499a('0x6'));var rimraf=require('rimraf');var config=require(_0x499a('0x7'));var attributes=require('./voiceTransferReport.attributes');module[_0x499a('0x8')]=function(_0x43d1e0,_0x16cb82){return _0x43d1e0['define'](_0x499a('0x9'),attributes,{'tableName':_0x499a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd67=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','VoiceTransferReport','report_call_transfer'];(function(_0x3d88ad,_0x3ac338){var _0xa57f06=function(_0x12d0e4){while(--_0x12d0e4){_0x3d88ad['push'](_0x3d88ad['shift']());}};_0xa57f06(++_0x3ac338);}(_0xdd67,0x9c));var _0x7dd6=function(_0x5e9bd4,_0x5c5112){_0x5e9bd4=_0x5e9bd4-0x0;var _0x1374cd=_0xdd67[_0x5e9bd4];return _0x1374cd;};'use strict';var _=require('lodash');var util=require(_0x7dd6('0x0'));var logger=require(_0x7dd6('0x1'))(_0x7dd6('0x2'));var moment=require(_0x7dd6('0x3'));var BPromise=require(_0x7dd6('0x4'));var rp=require(_0x7dd6('0x5'));var fs=require('fs');var path=require(_0x7dd6('0x6'));var rimraf=require(_0x7dd6('0x7'));var config=require(_0x7dd6('0x8'));var attributes=require(_0x7dd6('0x9'));module[_0x7dd6('0xa')]=function(_0x4fbee6,_0x32f6e9){return _0x4fbee6['define'](_0x7dd6('0xb'),attributes,{'tableName':_0x7dd6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8366b93..7ae7107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeab3=['raw','catch','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','CreateVoiceTransferReport','create','body','options'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeab3,0x13a));var _0x3eab=function(_0xe07094,_0x1cd13b){_0xe07094=_0xe07094-0x0;var _0x2d447b=_0xeab3[_0xe07094];return _0x2d447b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3eab('0x0'));var BPromise=require(_0x3eab('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3eab('0x2'));var db=require(_0x3eab('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x3eab('0x4'))('rpc');var config=require(_0x3eab('0x5'));var jayson=require(_0x3eab('0x6'));var client=jayson[_0x3eab('0x7')][_0x3eab('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2cabed,_0x2d8516,_0xedc565){return new BPromise(function(_0x3ed681,_0x3dd839){return client['request'](_0x2cabed,_0xedc565)[_0x3eab('0x9')](function(_0xc20b2b){logger['info'](_0x3eab('0xa'),_0x2d8516,_0x3eab('0xb'));logger[_0x3eab('0xc')](_0x3eab('0xd'),_0x2d8516,_0x3eab('0xb'),JSON[_0x3eab('0xe')](_0xc20b2b));if(_0xc20b2b[_0x3eab('0xf')]){if(_0xc20b2b['error'][_0x3eab('0x10')]===0x1f4){logger[_0x3eab('0xf')](_0x3eab('0xa'),_0x2d8516,_0xc20b2b[_0x3eab('0xf')][_0x3eab('0x11')]);return _0x3dd839(_0xc20b2b['error'][_0x3eab('0x11')]);}logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x2d8516,_0xc20b2b['error']['message']);return _0x3ed681(_0xc20b2b[_0x3eab('0xf')][_0x3eab('0x11')]);}else{logger[_0x3eab('0x12')](_0x3eab('0xa'),_0x2d8516,_0x3eab('0xb'));_0x3ed681(_0xc20b2b[_0x3eab('0x13')][_0x3eab('0x11')]);}})['catch'](function(_0x4833e4){logger[_0x3eab('0xf')]('VoiceTransferReport,\x20%s,\x20%s',_0x2d8516,_0x4833e4);_0x3dd839(_0x4833e4);});});}exports[_0x3eab('0x14')]=function(_0x3bbccb){var _0x5840b4=this;return new Promise(function(_0x744a57,_0x596b4d){return db['VoiceTransferReport'][_0x3eab('0x15')](_0x3bbccb[_0x3eab('0x16')],{'raw':_0x3bbccb[_0x3eab('0x17')]?_0x3bbccb[_0x3eab('0x17')][_0x3eab('0x18')]===undefined?!![]:![]:!![]})[_0x3eab('0x9')](function(_0x4c3d32){logger[_0x3eab('0x12')](_0x3eab('0x14'),_0x3bbccb);logger[_0x3eab('0xc')](_0x3eab('0x14'),_0x3bbccb,JSON[_0x3eab('0xe')](_0x4c3d32));_0x744a57(_0x4c3d32);})[_0x3eab('0x19')](function(_0x49d2d4){logger[_0x3eab('0xf')](_0x3eab('0x14'),_0x49d2d4[_0x3eab('0x11')],_0x3bbccb);_0x596b4d(_0x5840b4['error'](0x1f4,_0x49d2d4[_0x3eab('0x11')]));});});};
\ No newline at end of file
+var _0x80ef=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','code','VoiceTransferReport,\x20%s,\x20%s','message','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','stringify','catch','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x57928b,_0x29a111){var _0x49aad6=function(_0x34a268){while(--_0x34a268){_0x57928b['push'](_0x57928b['shift']());}};_0x49aad6(++_0x29a111);}(_0x80ef,0x157));var _0xf80e=function(_0x3142b1,_0x3cf732){_0x3142b1=_0x3142b1-0x0;var _0x35c702=_0x80ef[_0x3142b1];return _0x35c702;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf80e('0x0'));var BPromise=require(_0xf80e('0x1'));var rs=require(_0xf80e('0x2'));var fs=require('fs');var Redis=require(_0xf80e('0x3'));var db=require(_0xf80e('0x4'))['db'];var utils=require(_0xf80e('0x5'));var logger=require(_0xf80e('0x6'))(_0xf80e('0x7'));var config=require(_0xf80e('0x8'));var jayson=require(_0xf80e('0x9'));var client=jayson[_0xf80e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c9926,_0x45bd6c,_0x2cbeef){return new BPromise(function(_0x15dbf4,_0x23adf7){return client[_0xf80e('0xb')](_0x2c9926,_0x2cbeef)[_0xf80e('0xc')](function(_0x11aff1){logger[_0xf80e('0xd')]('VoiceTransferReport,\x20%s,\x20%s',_0x45bd6c,_0xf80e('0xe'));logger[_0xf80e('0xf')](_0xf80e('0x10'),_0x45bd6c,_0xf80e('0xe'),JSON['stringify'](_0x11aff1));if(_0x11aff1['error']){if(_0x11aff1[_0xf80e('0x11')][_0xf80e('0x12')]===0x1f4){logger[_0xf80e('0x11')](_0xf80e('0x13'),_0x45bd6c,_0x11aff1[_0xf80e('0x11')][_0xf80e('0x14')]);return _0x23adf7(_0x11aff1[_0xf80e('0x11')][_0xf80e('0x14')]);}logger[_0xf80e('0x11')](_0xf80e('0x13'),_0x45bd6c,_0x11aff1['error'][_0xf80e('0x14')]);return _0x15dbf4(_0x11aff1[_0xf80e('0x11')][_0xf80e('0x14')]);}else{logger['info'](_0xf80e('0x13'),_0x45bd6c,_0xf80e('0xe'));_0x15dbf4(_0x11aff1['result'][_0xf80e('0x14')]);}})['catch'](function(_0x552c75){logger['error'](_0xf80e('0x13'),_0x45bd6c,_0x552c75);_0x23adf7(_0x552c75);});});}exports[_0xf80e('0x15')]=function(_0x1cac21){var _0x408d2a=this;return new Promise(function(_0x15f6b4,_0x3f6f43){return db[_0xf80e('0x16')][_0xf80e('0x17')](_0x1cac21[_0xf80e('0x18')],{'raw':_0x1cac21[_0xf80e('0x19')]?_0x1cac21[_0xf80e('0x19')][_0xf80e('0x1a')]===undefined?!![]:![]:!![]})[_0xf80e('0xc')](function(_0x215b8e){logger['info']('CreateVoiceTransferReport',_0x1cac21);logger['debug']('CreateVoiceTransferReport',_0x1cac21,JSON[_0xf80e('0x1b')](_0x215b8e));_0x15f6b4(_0x215b8e);})[_0xf80e('0x1c')](function(_0x255d0f){logger[_0xf80e('0x11')](_0xf80e('0x15'),_0x255d0f[_0xf80e('0x14')],_0x1cac21);_0x3f6f43(_0x408d2a[_0xf80e('0x11')](0x1f4,_0x255d0f[_0xf80e('0x14')]));});});};
\ No newline at end of file
index 2326bbb..d271530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/transfer','express','Router','../../components/auth/service','post','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','hangup','/answer','answer','/hold','hold','/unhold','/calls','calls'];(function(_0x503af1,_0x455cd8){var _0x441490=function(_0x47c848){while(--_0x47c848){_0x503af1['push'](_0x503af1['shift']());}};_0x441490(++_0x455cd8);}(_0xe706,0xa3));var _0x6e70=function(_0x569a45,_0x2da15b){_0x569a45=_0x569a45-0x0;var _0x1a5ef8=_0xe706[_0x569a45];return _0x1a5ef8;};'use strict';var express=require(_0x6e70('0x0'));var router=express[_0x6e70('0x1')]();var auth=require(_0x6e70('0x2'));var controller=require('./webbar.controller');router[_0x6e70('0x3')](_0x6e70('0x4'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0x7')]);router[_0x6e70('0x3')](_0x6e70('0x8'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0x9')]);router[_0x6e70('0x3')](_0x6e70('0xa'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0xb')]);router[_0x6e70('0x3')](_0x6e70('0xc'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0xd')]);router[_0x6e70('0x3')](_0x6e70('0xe'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller['unhold']);router['post'](_0x6e70('0xf'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x3')](_0x6e70('0x11'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller['transfer']);module['exports']=router;
\ No newline at end of file
+var _0xe5b3=['transfer','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','hangup','answer','hold','/unhold','unhold','/calls','calls','/transfer'];(function(_0x5b7a65,_0x21a5e6){var _0x239661=function(_0x5d640b){while(--_0x5d640b){_0x5b7a65['push'](_0x5b7a65['shift']());}};_0x239661(++_0x21a5e6);}(_0xe5b3,0x133));var _0x3e5b=function(_0x1e0acf,_0x14eae2){_0x1e0acf=_0x1e0acf-0x0;var _0x2d0df0=_0xe5b3[_0x1e0acf];return _0x2d0df0;};'use strict';var express=require('express');var router=express[_0x3e5b('0x0')]();var auth=require(_0x3e5b('0x1'));var controller=require(_0x3e5b('0x2'));router[_0x3e5b('0x3')](_0x3e5b('0x4'),auth[_0x3e5b('0x5')](),auth[_0x3e5b('0x6')](),controller[_0x3e5b('0x7')]);router[_0x3e5b('0x3')](_0x3e5b('0x8'),auth[_0x3e5b('0x5')](),auth['isWebrtcLicence'](),controller[_0x3e5b('0x9')]);router[_0x3e5b('0x3')]('/answer',auth[_0x3e5b('0x5')](),auth[_0x3e5b('0x6')](),controller[_0x3e5b('0xa')]);router[_0x3e5b('0x3')]('/hold',auth['isAuthenticated'](),auth[_0x3e5b('0x6')](),controller[_0x3e5b('0xb')]);router[_0x3e5b('0x3')](_0x3e5b('0xc'),auth[_0x3e5b('0x5')](),auth['isWebrtcLicence'](),controller[_0x3e5b('0xd')]);router['post'](_0x3e5b('0xe'),auth[_0x3e5b('0x5')](),auth[_0x3e5b('0x6')](),controller[_0x3e5b('0xf')]);router[_0x3e5b('0x3')](_0x3e5b('0x10'),auth[_0x3e5b('0x5')](),auth['isWebrtcLicence'](),controller[_0x3e5b('0x11')]);module['exports']=router;
\ No newline at end of file
index 52921d7..9401291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc788=['all','filter','rows','sessionId','length','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callbackUrl','entityFound:','format','webbar:originate','hangup','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer\x20fired:','user:%s','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','bluebird','jayson/promise','client','http','../../config/logger','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','error','name','send','status','NotFound','request','then','code','message','result','catch','findOne','agent','VoiceChannels'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0xc788,0xc4));var _0x8c78=function(_0x192331,_0x535ca2){_0x192331=_0x192331-0x0;var _0x403fb4=_0xc788[_0x192331];return _0x403fb4;};'use strict';var path=require(_0x8c78('0x0'));var fs=require('fs');var _=require(_0x8c78('0x1'));var db=require(_0x8c78('0x2'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require(_0x8c78('0x3'));var jayson=require(_0x8c78('0x4'));var amiClient=jayson[_0x8c78('0x5')][_0x8c78('0x6')]({'port':0x232a});var logger=require(_0x8c78('0x7'))('webbarapi');var Redis=require(_0x8c78('0x8'));config[_0x8c78('0x9')]=_[_0x8c78('0xa')](config[_0x8c78('0x9')],{'host':_0x8c78('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8c78('0x9')]));var Schema=require(_0x8c78('0xc'));var originateValidation=new Schema({'userId':{'type':_0x8c78('0xd'),'required':[!![],_0x8c78('0xe')]},'callNumber':{'type':_0x8c78('0xf'),'required':[!![],_0x8c78('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x8c78('0xf')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8c78('0xe')]},'sessionId':{'type':_0x8c78('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8c78('0xe')]},'sessionId':{'type':_0x8c78('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8c78('0xe')]},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x8c78('0xf'),'required':[!![],_0x8c78('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x8c78('0xd'),'required':[!![],_0x8c78('0xe')]},'sessionId':{'type':_0x8c78('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x8c78('0xd'),'required':[!![],_0x8c78('0xe')]},'sessionId':{'type':_0x8c78('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x8c78('0xd'),'required':[!![],_0x8c78('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8c78('0xe')]}});function emit(_0x293cfe,_0x57ad11,_0x45b85f){logger[_0x8c78('0x12')](_0x293cfe,_0x57ad11,JSON[_0x8c78('0x13')](_0x45b85f));io['to'](_0x293cfe)[_0x8c78('0x14')](_0x57ad11,_0x45b85f);}function handleError(_0x2a982c){return function(_0x461eff){console['log']('handleError:',_0x461eff,_0x461eff instanceof RangeError);logger[_0x8c78('0x15')](_0x461eff['stack']);if(_0x461eff instanceof RangeError){if(_0x461eff['name']){delete _0x461eff[_0x8c78('0x16')];}_0x2a982c['status'](0x194)[_0x8c78('0x17')](_0x461eff);}else{if(_0x461eff[_0x8c78('0x16')]){delete _0x461eff['name'];}_0x2a982c[_0x8c78('0x18')](0x1f4)['send'](_0x461eff);}};}function checkError(){return function(_0x2dba52){if(!_0x2dba52){throw new RangeError(_0x8c78('0x19'));}return _0x2dba52;};}function respondWithRpcPromise(_0x5a254d,_0xd1ae4d){return new BPromise(function(_0x188cc3,_0x499603){var _0x2bc595=amiClient;return _0x2bc595[_0x8c78('0x1a')](_0x5a254d,_0xd1ae4d)[_0x8c78('0x1b')](function(_0x9581c6){if(_0x9581c6[_0x8c78('0x15')]){if(_0x9581c6[_0x8c78('0x15')][_0x8c78('0x1c')]===0x1f4){return _0x499603(_0x9581c6[_0x8c78('0x15')][_0x8c78('0x1d')]);}return _0x188cc3(_0x9581c6['error'][_0x8c78('0x1d')]);}else{_0x188cc3(_0x9581c6[_0x8c78('0x1e')]);}})[_0x8c78('0x1f')](function(_0x49cccb){_0x499603(_0x49cccb);});});}function getAgent(_0x331bfe){return db['User'][_0x8c78('0x20')]({'where':{'id':_0x331bfe,'role':_0x8c78('0x21')}})[_0x8c78('0x1b')](checkError());}function getAgentCheckSession(_0x496c51,_0x583a74){return new BPromise(function(_0x2568d5,_0x4be49d){var _0x20b128=respondWithRpcPromise(_0x8c78('0x22'));var _0x394c1d=getAgent(_0x496c51);Promise[_0x8c78('0x23')]([_0x20b128,_0x394c1d])[_0x8c78('0x1b')](function(_0x2ab5cc){var _0x5ba7d4=_0x2ab5cc[0x0];var _0x1c3039=_0x2ab5cc[0x1];var _0x51add6=_[_0x8c78('0x24')](_0x5ba7d4[_0x8c78('0x25')],function(_0xb69c52){return _0xb69c52['UserId']==_0x1c3039['id']&&_0xb69c52[_0x8c78('0x26')]==_0x583a74;});if(_0x51add6[_0x8c78('0x27')]==0x1){_0x2568d5(_0x1c3039);}else{_0x4be49d(new RangeError('sessionId\x20'+_0x583a74+_0x8c78('0x28')));}});});}exports[_0x8c78('0x29')]=function(_0x32bc1f,_0x487a4c){logger[_0x8c78('0x12')](_0x8c78('0x2a'),_0x32bc1f[_0x8c78('0x2b')]);var _0x5348ab=originateValidation[_0x8c78('0xc')](_0x32bc1f[_0x8c78('0x2b')]);if(_0x5348ab['length']>0x0){return _0x487a4c[_0x8c78('0x18')](0x190)[_0x8c78('0x2c')](_0x5348ab);}var _0x3a9372=_0x32bc1f[_0x8c78('0x2b')][_0x8c78('0x2d')];var _0x5b5429=_0x32bc1f[_0x8c78('0x2b')][_0x8c78('0x2e')];var _0x201a43=_0x32bc1f[_0x8c78('0x2b')]['callerId'];var _0x3e9bf1=_0x32bc1f[_0x8c78('0x2b')][_0x8c78('0x2f')];return getAgent(_0x3a9372)[_0x8c78('0x1b')](function(_0x34481a){logger['info'](_0x8c78('0x30'),_0x34481a[_0x8c78('0x16')]);emit(util[_0x8c78('0x31')]('user:%s',_0x34481a[_0x8c78('0x16')]),_0x8c78('0x32'),{'callNumber':_0x5b5429,'callerId':_0x201a43,'callbackUrl':_0x3e9bf1});return _0x487a4c['status'](0xc8)[_0x8c78('0x2c')]({'error':![],'message':'originate\x20executed!'});})[_0x8c78('0x1f')](handleError(_0x487a4c));};exports[_0x8c78('0x33')]=function(_0x245f62,_0x157b81){logger['info'](_0x8c78('0x34'),_0x245f62['body']);var _0x3b8f4f=hangupValidation[_0x8c78('0xc')](_0x245f62[_0x8c78('0x2b')]);if(_0x3b8f4f['length']>0x0){return _0x157b81['status'](0x190)[_0x8c78('0x2c')](_0x3b8f4f);}var _0x25d143=_0x245f62[_0x8c78('0x2b')][_0x8c78('0x2d')];var _0x2eb3ef=_0x245f62[_0x8c78('0x2b')][_0x8c78('0x26')];return getAgent(_0x25d143)[_0x8c78('0x1b')](function(_0x1f0a2b){logger[_0x8c78('0x12')](_0x8c78('0x30'),_0x1f0a2b[_0x8c78('0x16')]);emit(util[_0x8c78('0x31')]('user:%s',_0x1f0a2b[_0x8c78('0x16')]),_0x8c78('0x35'),{'sessionId':_0x2eb3ef});return _0x157b81['status'](0xc8)['json']({'error':![],'message':_0x8c78('0x36')});})[_0x8c78('0x1f')](handleError(_0x157b81));};exports['answer']=function(_0x224c4b,_0x57ff42){logger['info'](_0x8c78('0x37'),_0x224c4b[_0x8c78('0x2b')]);var _0x57e2c7=answerValidation[_0x8c78('0xc')](_0x224c4b[_0x8c78('0x2b')]);if(_0x57e2c7[_0x8c78('0x27')]>0x0){return _0x57ff42[_0x8c78('0x18')](0x190)[_0x8c78('0x2c')](_0x57e2c7);}var _0x4e4880=_0x224c4b['body'][_0x8c78('0x2d')];var _0x2f6a6b=_0x224c4b[_0x8c78('0x2b')][_0x8c78('0x26')];return getAgent(_0x4e4880)[_0x8c78('0x1b')](function(_0x460821){logger[_0x8c78('0x12')](_0x8c78('0x30'),_0x460821[_0x8c78('0x16')]);emit(util[_0x8c78('0x31')](_0x8c78('0x38'),_0x460821['name']),_0x8c78('0x39'),{'sessionId':_0x2f6a6b});return _0x57ff42[_0x8c78('0x18')](0xc8)[_0x8c78('0x2c')]({'error':![],'message':_0x8c78('0x3a')});})[_0x8c78('0x1f')](handleError(_0x57ff42));};exports['hold']=function(_0x356e47,_0x4588cd){logger[_0x8c78('0x12')](_0x8c78('0x3b'),_0x356e47[_0x8c78('0x2b')]);var _0x5cc829=holdValidation[_0x8c78('0xc')](_0x356e47['body']);if(_0x5cc829['length']>0x0){return _0x4588cd[_0x8c78('0x18')](0x190)[_0x8c78('0x2c')](_0x5cc829);}var _0x61e20=_0x356e47['body'][_0x8c78('0x2d')];var _0xc6ba23=_0x356e47[_0x8c78('0x2b')][_0x8c78('0x26')];return getAgent(_0x61e20)[_0x8c78('0x1b')](function(_0x38083e){logger[_0x8c78('0x12')](_0x8c78('0x30'),_0x38083e[_0x8c78('0x16')]);emit(util['format'](_0x8c78('0x38'),_0x38083e[_0x8c78('0x16')]),_0x8c78('0x3c'),{'sessionId':_0xc6ba23});return _0x4588cd[_0x8c78('0x18')](0xc8)['json']({'error':![],'message':_0x8c78('0x3d')});})[_0x8c78('0x1f')](handleError(_0x4588cd));};exports[_0x8c78('0x3e')]=function(_0x431125,_0x53e75c){logger[_0x8c78('0x12')](_0x8c78('0x3f'),_0x431125[_0x8c78('0x2b')]);var _0x551e0f=unholdValidation[_0x8c78('0xc')](_0x431125['body']);if(_0x551e0f[_0x8c78('0x27')]>0x0){return _0x53e75c[_0x8c78('0x18')](0x190)[_0x8c78('0x2c')](_0x551e0f);}var _0xa87aba=_0x431125[_0x8c78('0x2b')][_0x8c78('0x2d')];var _0xf68e0=_0x431125[_0x8c78('0x2b')][_0x8c78('0x26')];return getAgent(_0xa87aba)[_0x8c78('0x1b')](function(_0x23e568){logger[_0x8c78('0x12')](_0x8c78('0x30'),_0x23e568[_0x8c78('0x16')]);emit(util['format'](_0x8c78('0x38'),_0x23e568[_0x8c78('0x16')]),_0x8c78('0x40'),{'sessionId':_0xf68e0});return _0x53e75c[_0x8c78('0x18')](0xc8)['json']({'error':![],'message':_0x8c78('0x41')});})[_0x8c78('0x1f')](handleError(_0x53e75c));};exports[_0x8c78('0x42')]=function(_0x2b9b18,_0x40025d){logger[_0x8c78('0x12')]('calls\x20fired:',_0x40025d[_0x8c78('0x2b')]);var _0x42a34e=callsValidation['validate'](_0x2b9b18[_0x8c78('0x2b')]);if(_0x42a34e['length']>0x0){return _0x40025d[_0x8c78('0x18')](0x190)[_0x8c78('0x2c')](_0x42a34e);}var _0x257533=_0x2b9b18[_0x8c78('0x2b')][_0x8c78('0x2d')];var _0x35cf85=respondWithRpcPromise(_0x8c78('0x22'));var _0x49fa4c=getAgent(_0x257533);return Promise[_0x8c78('0x23')]([_0x35cf85,_0x49fa4c])[_0x8c78('0x1b')](function(_0x4e77a9){var _0x110e7b=_0x4e77a9[0x0];var _0x3529aa=_0x4e77a9[0x1];var _0x577361=_[_0x8c78('0x24')](_0x110e7b[_0x8c78('0x25')],function(_0x3e2160){return _0x3e2160[_0x8c78('0x43')]==_0x3529aa['id'];});return _0x40025d[_0x8c78('0x18')](0xc8)[_0x8c78('0x2c')]({'count':_0x577361[_0x8c78('0x27')],'rows':_0x577361});})[_0x8c78('0x1f')](handleError(_0x40025d));};exports[_0x8c78('0x44')]=function(_0x1b3600,_0x25b8bc){logger[_0x8c78('0x12')](_0x8c78('0x45'),_0x1b3600[_0x8c78('0x2b')]);var _0x50ae7d=conferenceValidation[_0x8c78('0xc')](_0x1b3600['body']);if(_0x50ae7d[_0x8c78('0x27')]>0x0){return _0x25b8bc['status'](0x190)['json'](_0x50ae7d);}var _0x57a4b1=_0x1b3600[_0x8c78('0x2b')]['userId'];return getAgent(_0x57a4b1)['then'](function(_0x502991){logger[_0x8c78('0x12')](_0x8c78('0x30'),_0x502991[_0x8c78('0x16')]);emit(util[_0x8c78('0x31')]('user:%s',_0x502991[_0x8c78('0x16')]),_0x8c78('0x46'));return _0x25b8bc[_0x8c78('0x18')](0xc8)[_0x8c78('0x2c')]({'error':![],'message':_0x8c78('0x47')});})[_0x8c78('0x1f')](handleError(_0x25b8bc));};exports[_0x8c78('0x48')]=function(_0x54d561,_0x25c255){logger[_0x8c78('0x12')](_0x8c78('0x49'),_0x54d561[_0x8c78('0x2b')]);var _0x3e1ee0=transferValidation[_0x8c78('0xc')](_0x54d561['body']);if(_0x3e1ee0[_0x8c78('0x27')]>0x0){return _0x25c255['status'](0x190)[_0x8c78('0x2c')](_0x3e1ee0);}var _0x28d1a7=_0x54d561[_0x8c78('0x2b')]['userId'];var _0x97df9c=_0x54d561[_0x8c78('0x2b')][_0x8c78('0x26')];var _0x4fa0b0=_0x54d561[_0x8c78('0x2b')][_0x8c78('0x4a')];return getAgent(_0x28d1a7)['then'](function(_0xbfafd1){logger[_0x8c78('0x12')](_0x8c78('0x30'),_0xbfafd1['name']);emit(util[_0x8c78('0x31')](_0x8c78('0x38'),_0xbfafd1[_0x8c78('0x16')]),_0x8c78('0x4b'),{'sessionId':_0x97df9c,'transferNumber':_0x4fa0b0});return _0x25c255[_0x8c78('0x18')](0xc8)[_0x8c78('0x2c')]({'error':![],'message':_0x8c78('0x4c')});})[_0x8c78('0x1f')](handleError(_0x25c255));};
\ No newline at end of file
+var _0x00bb=['hangup\x20fired:','webbar:hangup','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','all','conference','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','jayson/promise','client','../../config/logger','webbarapi','redis','localhost','socket.io-emitter','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','handleError:','stack','name','status','send','NotFound','request','error','code','message','result','catch','User','VoiceChannels','then','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','json','body','userId','callNumber','callbackUrl','entityFound:','format','user:%s','webbar:originate'];(function(_0x5dfeb8,_0x375a72){var _0x2a6db3=function(_0x26070c){while(--_0x26070c){_0x5dfeb8['push'](_0x5dfeb8['shift']());}};_0x2a6db3(++_0x375a72);}(_0x00bb,0x1d8));var _0xb00b=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x00bb[_0x491a7f];return _0x3d8f44;};'use strict';var path=require(_0xb00b('0x0'));var fs=require('fs');var _=require(_0xb00b('0x1'));var db=require(_0xb00b('0x2'))['db'];var config=require('../../config/environment');var util=require(_0xb00b('0x3'));var BPromise=require('bluebird');var jayson=require(_0xb00b('0x4'));var amiClient=jayson[_0xb00b('0x5')]['http']({'port':0x232a});var logger=require(_0xb00b('0x6'))(_0xb00b('0x7'));var Redis=require('ioredis');config['redis']=_['defaults'](config[_0xb00b('0x8')],{'host':_0xb00b('0x9'),'port':0x18eb});var io=require(_0xb00b('0xa'))(new Redis(config[_0xb00b('0x8')]));var Schema=require(_0xb00b('0xb'));var originateValidation=new Schema({'userId':{'type':_0xb00b('0xc'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0xb00b('0xd')]},'callerId':{'type':_0xb00b('0xe')},'callbackUrl':{'type':_0xb00b('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0xb00b('0xc'),'required':[!![],_0xb00b('0xf')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xb00b('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb00b('0xf')]},'sessionId':{'type':_0xb00b('0xe'),'required':[!![],_0xb00b('0x10')]},'transferNumber':{'type':_0xb00b('0xe'),'required':[!![],_0xb00b('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xb00b('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb00b('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xb00b('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb00b('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xb00b('0xc'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb00b('0xf')]}});function emit(_0x4dcd45,_0x51d136,_0x1f9c78){logger[_0xb00b('0x12')](_0x4dcd45,_0x51d136,JSON[_0xb00b('0x13')](_0x1f9c78));io['to'](_0x4dcd45)[_0xb00b('0x14')](_0x51d136,_0x1f9c78);}function handleError(_0x58d65f){return function(_0x2a7231){console['log'](_0xb00b('0x15'),_0x2a7231,_0x2a7231 instanceof RangeError);logger['error'](_0x2a7231[_0xb00b('0x16')]);if(_0x2a7231 instanceof RangeError){if(_0x2a7231['name']){delete _0x2a7231[_0xb00b('0x17')];}_0x58d65f[_0xb00b('0x18')](0x194)['send'](_0x2a7231);}else{if(_0x2a7231['name']){delete _0x2a7231[_0xb00b('0x17')];}_0x58d65f['status'](0x1f4)[_0xb00b('0x19')](_0x2a7231);}};}function checkError(){return function(_0x43da66){if(!_0x43da66){throw new RangeError(_0xb00b('0x1a'));}return _0x43da66;};}function respondWithRpcPromise(_0x3501af,_0x56c189){return new BPromise(function(_0x362ee0,_0x4df284){var _0x25a973=amiClient;return _0x25a973[_0xb00b('0x1b')](_0x3501af,_0x56c189)['then'](function(_0x231293){if(_0x231293[_0xb00b('0x1c')]){if(_0x231293['error'][_0xb00b('0x1d')]===0x1f4){return _0x4df284(_0x231293[_0xb00b('0x1c')]['message']);}return _0x362ee0(_0x231293[_0xb00b('0x1c')][_0xb00b('0x1e')]);}else{_0x362ee0(_0x231293[_0xb00b('0x1f')]);}})[_0xb00b('0x20')](function(_0x520e55){_0x4df284(_0x520e55);});});}function getAgent(_0x50be6c){return db[_0xb00b('0x21')]['findOne']({'where':{'id':_0x50be6c,'role':'agent'}})['then'](checkError());}function getAgentCheckSession(_0x16ac55,_0x73b6b0){return new BPromise(function(_0x2592cf,_0x3825af){var _0x1f14fa=respondWithRpcPromise(_0xb00b('0x22'));var _0x15d3b9=getAgent(_0x16ac55);Promise['all']([_0x1f14fa,_0x15d3b9])[_0xb00b('0x23')](function(_0x503c9c){var _0x450129=_0x503c9c[0x0];var _0x348165=_0x503c9c[0x1];var _0x5424ca=_['filter'](_0x450129[_0xb00b('0x24')],function(_0x280ed3){return _0x280ed3[_0xb00b('0x25')]==_0x348165['id']&&_0x280ed3[_0xb00b('0x26')]==_0x73b6b0;});if(_0x5424ca[_0xb00b('0x27')]==0x1){_0x2592cf(_0x348165);}else{_0x3825af(new RangeError(_0xb00b('0x28')+_0x73b6b0+_0xb00b('0x29')));}});});}exports[_0xb00b('0x2a')]=function(_0x149c1a,_0x54e247){logger[_0xb00b('0x12')](_0xb00b('0x2b'),_0x149c1a['body']);var _0x593659=originateValidation[_0xb00b('0xb')](_0x149c1a['body']);if(_0x593659[_0xb00b('0x27')]>0x0){return _0x54e247['status'](0x190)[_0xb00b('0x2c')](_0x593659);}var _0x4117f2=_0x149c1a[_0xb00b('0x2d')][_0xb00b('0x2e')];var _0x338864=_0x149c1a[_0xb00b('0x2d')][_0xb00b('0x2f')];var _0x594840=_0x149c1a['body']['callerId'];var _0x347e73=_0x149c1a[_0xb00b('0x2d')][_0xb00b('0x30')];return getAgent(_0x4117f2)[_0xb00b('0x23')](function(_0x5cfa60){logger[_0xb00b('0x12')](_0xb00b('0x31'),_0x5cfa60[_0xb00b('0x17')]);emit(util[_0xb00b('0x32')](_0xb00b('0x33'),_0x5cfa60[_0xb00b('0x17')]),_0xb00b('0x34'),{'callNumber':_0x338864,'callerId':_0x594840,'callbackUrl':_0x347e73});return _0x54e247[_0xb00b('0x18')](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})[_0xb00b('0x20')](handleError(_0x54e247));};exports['hangup']=function(_0x1c8258,_0x1c5400){logger[_0xb00b('0x12')](_0xb00b('0x35'),_0x1c8258[_0xb00b('0x2d')]);var _0x142cdd=hangupValidation[_0xb00b('0xb')](_0x1c8258['body']);if(_0x142cdd[_0xb00b('0x27')]>0x0){return _0x1c5400[_0xb00b('0x18')](0x190)[_0xb00b('0x2c')](_0x142cdd);}var _0xd9c03f=_0x1c8258[_0xb00b('0x2d')][_0xb00b('0x2e')];var _0x59fb00=_0x1c8258[_0xb00b('0x2d')][_0xb00b('0x26')];return getAgent(_0xd9c03f)['then'](function(_0x17ff34){logger[_0xb00b('0x12')](_0xb00b('0x31'),_0x17ff34[_0xb00b('0x17')]);emit(util[_0xb00b('0x32')]('user:%s',_0x17ff34[_0xb00b('0x17')]),_0xb00b('0x36'),{'sessionId':_0x59fb00});return _0x1c5400[_0xb00b('0x18')](0xc8)[_0xb00b('0x2c')]({'error':![],'message':'hangup\x20executed!'});})['catch'](handleError(_0x1c5400));};exports[_0xb00b('0x37')]=function(_0xf6ae0c,_0x10a348){logger[_0xb00b('0x12')](_0xb00b('0x38'),_0xf6ae0c[_0xb00b('0x2d')]);var _0x275664=answerValidation['validate'](_0xf6ae0c[_0xb00b('0x2d')]);if(_0x275664[_0xb00b('0x27')]>0x0){return _0x10a348[_0xb00b('0x18')](0x190)[_0xb00b('0x2c')](_0x275664);}var _0x302ded=_0xf6ae0c[_0xb00b('0x2d')][_0xb00b('0x2e')];var _0x974a29=_0xf6ae0c[_0xb00b('0x2d')][_0xb00b('0x26')];return getAgent(_0x302ded)[_0xb00b('0x23')](function(_0x419113){logger['info'](_0xb00b('0x31'),_0x419113[_0xb00b('0x17')]);emit(util[_0xb00b('0x32')](_0xb00b('0x33'),_0x419113[_0xb00b('0x17')]),_0xb00b('0x39'),{'sessionId':_0x974a29});return _0x10a348[_0xb00b('0x18')](0xc8)[_0xb00b('0x2c')]({'error':![],'message':_0xb00b('0x3a')});})[_0xb00b('0x20')](handleError(_0x10a348));};exports[_0xb00b('0x3b')]=function(_0x3b3031,_0x5dbe00){logger['info']('hold\x20fired:',_0x3b3031[_0xb00b('0x2d')]);var _0x23d858=holdValidation['validate'](_0x3b3031[_0xb00b('0x2d')]);if(_0x23d858[_0xb00b('0x27')]>0x0){return _0x5dbe00[_0xb00b('0x18')](0x190)[_0xb00b('0x2c')](_0x23d858);}var _0x4b62b3=_0x3b3031['body'][_0xb00b('0x2e')];var _0x40c2fd=_0x3b3031['body']['sessionId'];return getAgent(_0x4b62b3)[_0xb00b('0x23')](function(_0x3a205d){logger['info'](_0xb00b('0x31'),_0x3a205d['name']);emit(util['format']('user:%s',_0x3a205d[_0xb00b('0x17')]),'webbar:hold',{'sessionId':_0x40c2fd});return _0x5dbe00[_0xb00b('0x18')](0xc8)[_0xb00b('0x2c')]({'error':![],'message':_0xb00b('0x3c')});})[_0xb00b('0x20')](handleError(_0x5dbe00));};exports[_0xb00b('0x3d')]=function(_0xda60ca,_0x4846c9){logger['info'](_0xb00b('0x3e'),_0xda60ca[_0xb00b('0x2d')]);var _0x559357=unholdValidation[_0xb00b('0xb')](_0xda60ca[_0xb00b('0x2d')]);if(_0x559357['length']>0x0){return _0x4846c9[_0xb00b('0x18')](0x190)[_0xb00b('0x2c')](_0x559357);}var _0x3b5d82=_0xda60ca['body']['userId'];var _0x19f907=_0xda60ca[_0xb00b('0x2d')][_0xb00b('0x26')];return getAgent(_0x3b5d82)[_0xb00b('0x23')](function(_0x489b49){logger[_0xb00b('0x12')](_0xb00b('0x31'),_0x489b49['name']);emit(util['format'](_0xb00b('0x33'),_0x489b49['name']),_0xb00b('0x3f'),{'sessionId':_0x19f907});return _0x4846c9[_0xb00b('0x18')](0xc8)[_0xb00b('0x2c')]({'error':![],'message':_0xb00b('0x40')});})[_0xb00b('0x20')](handleError(_0x4846c9));};exports[_0xb00b('0x41')]=function(_0x5a3b85,_0x5d52a5){logger['info'](_0xb00b('0x42'),_0x5d52a5[_0xb00b('0x2d')]);var _0x4129ba=callsValidation['validate'](_0x5a3b85[_0xb00b('0x2d')]);if(_0x4129ba[_0xb00b('0x27')]>0x0){return _0x5d52a5[_0xb00b('0x18')](0x190)['json'](_0x4129ba);}var _0x24e826=_0x5a3b85[_0xb00b('0x2d')][_0xb00b('0x2e')];var _0x385029=respondWithRpcPromise(_0xb00b('0x22'));var _0x279467=getAgent(_0x24e826);return Promise[_0xb00b('0x43')]([_0x385029,_0x279467])[_0xb00b('0x23')](function(_0x4c3067){var _0x153551=_0x4c3067[0x0];var _0x2cbe80=_0x4c3067[0x1];var _0x1b4860=_['filter'](_0x153551[_0xb00b('0x24')],function(_0x24a8a2){return _0x24a8a2[_0xb00b('0x25')]==_0x2cbe80['id'];});return _0x5d52a5[_0xb00b('0x18')](0xc8)[_0xb00b('0x2c')]({'count':_0x1b4860['length'],'rows':_0x1b4860});})[_0xb00b('0x20')](handleError(_0x5d52a5));};exports[_0xb00b('0x44')]=function(_0x2e3c56,_0x1cad79){logger['info'](_0xb00b('0x45'),_0x2e3c56[_0xb00b('0x2d')]);var _0x2c93db=conferenceValidation[_0xb00b('0xb')](_0x2e3c56[_0xb00b('0x2d')]);if(_0x2c93db[_0xb00b('0x27')]>0x0){return _0x1cad79[_0xb00b('0x18')](0x190)['json'](_0x2c93db);}var _0x2b090a=_0x2e3c56['body'][_0xb00b('0x2e')];return getAgent(_0x2b090a)['then'](function(_0x3b3272){logger['info'](_0xb00b('0x31'),_0x3b3272['name']);emit(util[_0xb00b('0x32')](_0xb00b('0x33'),_0x3b3272[_0xb00b('0x17')]),'webbar:conference');return _0x1cad79['status'](0xc8)['json']({'error':![],'message':_0xb00b('0x46')});})[_0xb00b('0x20')](handleError(_0x1cad79));};exports[_0xb00b('0x47')]=function(_0x49246b,_0x311f49){logger[_0xb00b('0x12')](_0xb00b('0x48'),_0x49246b[_0xb00b('0x2d')]);var _0x1f4a96=transferValidation['validate'](_0x49246b[_0xb00b('0x2d')]);if(_0x1f4a96[_0xb00b('0x27')]>0x0){return _0x311f49['status'](0x190)[_0xb00b('0x2c')](_0x1f4a96);}var _0x36ac5a=_0x49246b[_0xb00b('0x2d')]['userId'];var _0x4e8b85=_0x49246b[_0xb00b('0x2d')][_0xb00b('0x26')];var _0x23762e=_0x49246b['body']['transferNumber'];return getAgent(_0x36ac5a)['then'](function(_0x5e9677){logger[_0xb00b('0x12')]('entityFound:',_0x5e9677[_0xb00b('0x17')]);emit(util[_0xb00b('0x32')]('user:%s',_0x5e9677[_0xb00b('0x17')]),_0xb00b('0x49'),{'sessionId':_0x4e8b85,'transferNumber':_0x23762e});return _0x311f49[_0xb00b('0x18')](0xc8)[_0xb00b('0x2c')]({'error':![],'message':_0xb00b('0x4a')});})['catch'](handleError(_0x311f49));};
\ No newline at end of file
index 755ffc4..4c00585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbce=['destroy','removeDispositions','/:id/canned_answers','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/users','getAgents','/:id/applications','post','create','addDisposition','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','put','update','delete'];(function(_0x39660b,_0xadbcd6){var _0x1a6039=function(_0x1d2031){while(--_0x1d2031){_0x39660b['push'](_0x39660b['shift']());}};_0x1a6039(++_0xadbcd6);}(_0xfbce,0x1a7));var _0xefbc=function(_0x117eac,_0x4d11d3){_0x117eac=_0x117eac-0x0;var _0x35fa81=_0xfbce[_0x117eac];return _0x35fa81;};'use strict';var multer=require('multer');var util=require(_0xefbc('0x0'));var path=require(_0xefbc('0x1'));var timeout=require(_0xefbc('0x2'));var express=require(_0xefbc('0x3'));var router=express[_0xefbc('0x4')]();var fs_extra=require(_0xefbc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xefbc('0x6'));var config=require('../../config/environment');var controller=require(_0xefbc('0x7'));router[_0xefbc('0x8')]('/',auth[_0xefbc('0x9')](),controller[_0xefbc('0xa')]);router[_0xefbc('0x8')](_0xefbc('0xb'),auth[_0xefbc('0x9')](),controller[_0xefbc('0xc')]);router[_0xefbc('0x8')](_0xefbc('0xd'),auth[_0xefbc('0x9')](),controller[_0xefbc('0xe')]);router['get'](_0xefbc('0xf'),auth[_0xefbc('0x9')](),controller[_0xefbc('0x10')]);router[_0xefbc('0x8')]('/:id/canned_answers',auth[_0xefbc('0x9')](),controller[_0xefbc('0x11')]);router[_0xefbc('0x8')](_0xefbc('0x12'),auth[_0xefbc('0x9')](),controller[_0xefbc('0x13')]);router[_0xefbc('0x8')](_0xefbc('0x14'),auth[_0xefbc('0x9')](),controller['getApplications']);router[_0xefbc('0x15')]('/',auth[_0xefbc('0x9')](),controller[_0xefbc('0x16')]);router[_0xefbc('0x15')](_0xefbc('0xf'),auth[_0xefbc('0x9')](),controller[_0xefbc('0x17')]);router[_0xefbc('0x15')]('/:id/canned_answers',auth[_0xefbc('0x9')](),controller[_0xefbc('0x18')]);router[_0xefbc('0x15')](_0xefbc('0x12'),auth['isAuthenticated'](),controller[_0xefbc('0x19')]);router[_0xefbc('0x15')]('/:id/applications',auth[_0xefbc('0x9')](),controller[_0xefbc('0x1a')]);router[_0xefbc('0x15')](_0xefbc('0x1b'),controller[_0xefbc('0x1c')]);router[_0xefbc('0x15')](_0xefbc('0x1d'),auth[_0xefbc('0x9')](),controller['send']);router[_0xefbc('0x1e')](_0xefbc('0xd'),auth['isAuthenticated'](),controller[_0xefbc('0x1f')]);router[_0xefbc('0x20')](_0xefbc('0xd'),auth[_0xefbc('0x9')](),controller[_0xefbc('0x21')]);router['delete'](_0xefbc('0xf'),auth['isAuthenticated'](),controller[_0xefbc('0x22')]);router[_0xefbc('0x20')](_0xefbc('0x23'),auth[_0xefbc('0x9')](),controller['removeAnswers']);router[_0xefbc('0x20')](_0xefbc('0x12'),auth['isAuthenticated'](),controller[_0xefbc('0x24')]);module[_0xefbc('0x25')]=router;
\ No newline at end of file
+var _0xb993=['getApplications','post','create','/:id/dispositions','addDisposition','addAnswer','notify','/:id/send','send','/:id','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','express','Router','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','show','getDispositions','/:id/canned_answers','/:id/users','getAgents','/:id/applications'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb993,0x8c));var _0x3b99=function(_0x204bdc,_0x2bee50){_0x204bdc=_0x204bdc-0x0;var _0x24bf1=_0xb993[_0x204bdc];return _0x24bf1;};'use strict';var multer=require(_0x3b99('0x0'));var util=require(_0x3b99('0x1'));var path=require(_0x3b99('0x2'));var timeout=require('connect-timeout');var express=require(_0x3b99('0x3'));var router=express[_0x3b99('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3b99('0x5'));var config=require('../../config/environment');var controller=require(_0x3b99('0x6'));router[_0x3b99('0x7')]('/',auth[_0x3b99('0x8')](),controller['index']);router[_0x3b99('0x7')]('/describe',auth[_0x3b99('0x8')](),controller['describe']);router[_0x3b99('0x7')]('/:id',auth[_0x3b99('0x8')](),controller[_0x3b99('0x9')]);router[_0x3b99('0x7')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x3b99('0xa')]);router['get'](_0x3b99('0xb'),auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x3b99('0xc'),auth['isAuthenticated'](),controller[_0x3b99('0xd')]);router[_0x3b99('0x7')](_0x3b99('0xe'),auth[_0x3b99('0x8')](),controller[_0x3b99('0xf')]);router[_0x3b99('0x10')]('/',auth[_0x3b99('0x8')](),controller[_0x3b99('0x11')]);router['post'](_0x3b99('0x12'),auth['isAuthenticated'](),controller[_0x3b99('0x13')]);router['post']('/:id/canned_answers',auth[_0x3b99('0x8')](),controller[_0x3b99('0x14')]);router[_0x3b99('0x10')](_0x3b99('0xc'),auth[_0x3b99('0x8')](),controller['addAgents']);router[_0x3b99('0x10')](_0x3b99('0xe'),auth['isAuthenticated'](),controller['addApplications']);router[_0x3b99('0x10')]('/:id/notify',controller[_0x3b99('0x15')]);router[_0x3b99('0x10')](_0x3b99('0x16'),auth['isAuthenticated'](),controller[_0x3b99('0x17')]);router['put'](_0x3b99('0x18'),auth[_0x3b99('0x8')](),controller[_0x3b99('0x19')]);router[_0x3b99('0x1a')](_0x3b99('0x18'),auth['isAuthenticated'](),controller['destroy']);router[_0x3b99('0x1a')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x3b99('0x1b')]);router[_0x3b99('0x1a')](_0x3b99('0xb'),auth[_0x3b99('0x8')](),controller[_0x3b99('0x1c')]);router[_0x3b99('0x1a')]('/:id/users',auth[_0x3b99('0x8')](),controller[_0x3b99('0x1d')]);module[_0x3b99('0x1e')]=router;
\ No newline at end of file
index 970955c..73f0ec6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4689=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','randomstring','exports','name','STRING','generate','ENUM','sinch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4689,0x108));var _0x9468=function(_0x2f307a,_0x390925){_0x2f307a=_0x2f307a-0x0;var _0x585ea7=_0x4689[_0x2f307a];return _0x585ea7;};'use strict';var Sequelize=require(_0x9468('0x0'));var rs=require(_0x9468('0x1'));module[_0x9468('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x9468('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x9468('0x4')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x9468('0x5')]();}},'phone':{'type':Sequelize[_0x9468('0x4')]},'type':{'type':Sequelize[_0x9468('0x6')]('twilio',_0x9468('0x7'))},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize[_0x9468('0x4')]},'authToken':{'type':Sequelize[_0x9468('0x4')]},'notificationTemplate':{'type':Sequelize[_0x9468('0x8')],'defaultValue':function(){return _0x9468('0x9');}},'notificationSound':{'type':Sequelize[_0x9468('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x9468('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x9468('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9468('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9468('0xb')],'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[_0x9468('0xb')],'comment':_0x9468('0xc')},'mandatoryDisposition':{'type':Sequelize[_0x9468('0xa')],'defaultValue':![],'comment':_0x9468('0xd'),'set':function(_0x22f7bc){if(!_0x22f7bc){this['setDataValue'](_0x9468('0xe'),null);}this[_0x9468('0xf')]('mandatoryDisposition',_0x22f7bc);}},'description':{'type':Sequelize[_0x9468('0x4')]}};
\ No newline at end of file
+var _0x4b24=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','ENUM','twilio','sinch','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x4af925,_0x412f25){var _0xa7b75d=function(_0x1cd600){while(--_0x1cd600){_0x4af925['push'](_0x4af925['shift']());}};_0xa7b75d(++_0x412f25);}(_0x4b24,0xa3));var _0x44b2=function(_0x38ea3c,_0x2f0c72){_0x38ea3c=_0x38ea3c-0x0;var _0x573582=_0x4b24[_0x38ea3c];return _0x573582;};'use strict';var Sequelize=require(_0x44b2('0x0'));var rs=require(_0x44b2('0x1'));module[_0x44b2('0x2')]={'name':{'type':Sequelize[_0x44b2('0x3')],'unique':_0x44b2('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x44b2('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x44b2('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x44b2('0x3')],'defaultValue':function(){return rs[_0x44b2('0x5')]();}},'phone':{'type':Sequelize[_0x44b2('0x3')]},'type':{'type':Sequelize[_0x44b2('0x6')](_0x44b2('0x7'),_0x44b2('0x8'))},'accountSid':{'type':Sequelize[_0x44b2('0x3')]},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x44b2('0x3')]},'notificationTemplate':{'type':Sequelize[_0x44b2('0x9')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x44b2('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x44b2('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x44b2('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x44b2('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x44b2('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x44b2('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x44b2('0xb')],'comment':_0x44b2('0xc')},'mandatoryDisposition':{'type':Sequelize[_0x44b2('0xa')],'defaultValue':![],'comment':_0x44b2('0xd'),'set':function(_0x3402e6){if(!_0x3402e6){this[_0x44b2('0xe')]('mandatoryDispositionPauseId',null);}this['setDataValue'](_0x44b2('0xf'),_0x3402e6);}},'description':{'type':Sequelize[_0x44b2('0x3')]}};
\ No newline at end of file
index 2e953d8..0fe065a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf31=['ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','jayson/promise','client','http','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','get','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','WhatsappAccount','fieldName','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','type','merge','options','includeAll','include','catch','find','create','body','role','user','WhatsappAccounts','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','rawAttributes','hasOwnProperty','findAll','rows','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','addApplications','sequelize','Transaction','WhatsappApplication','findAndCountAll','finally','getApplications','notify','whatsapp','account','statuses','state','WhatsappMessage','timestamp','message_id','applications','orderBy','Applications','priority','asc','CmContact','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','ListId','mobile','twilio','from','From','replace','Body','messageId','sinch','notifications','isNil','Sequelize','from\x20is\x20mandatory','mapKey','DESC','Contacts','contact','interaction','created','autoclose','push','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','User','unshift','WhatsappQueue','queueId','queue','waitForTheAssignedQueue','Start','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','CmList','List','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox'];(function(_0x379ad5,_0x33f168){var _0x1b464d=function(_0x16fad0){while(--_0x16fad0){_0x379ad5['push'](_0x379ad5['shift']());}};_0x1b464d(++_0x33f168);}(_0xbf31,0xbb));var _0x1bf3=function(_0x5a0a5f,_0x1a53d4){_0x5a0a5f=_0x5a0a5f-0x0;var _0x40c36a=_0xbf31[_0x5a0a5f];return _0x40c36a;};'use strict';var emlformat=require(_0x1bf3('0x0'));var rimraf=require(_0x1bf3('0x1'));var zipdir=require(_0x1bf3('0x2'));var jsonpatch=require(_0x1bf3('0x3'));var rp=require('request-promise');var moment=require(_0x1bf3('0x4'));var BPromise=require(_0x1bf3('0x5'));var Mustache=require(_0x1bf3('0x6'));var util=require(_0x1bf3('0x7'));var path=require('path');var sox=require(_0x1bf3('0x8'));var csv=require('to-csv');var ejs=require(_0x1bf3('0x9'));var fs=require('fs');var fs_extra=require(_0x1bf3('0xa'));var _=require(_0x1bf3('0xb'));var squel=require('squel');var crypto=require(_0x1bf3('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1bf3('0xd'));var toCsv=require(_0x1bf3('0xe'));var querystring=require(_0x1bf3('0xf'));var Papa=require(_0x1bf3('0x10'));var Redis=require(_0x1bf3('0x11'));var authService=require(_0x1bf3('0x12'));var qs=require(_0x1bf3('0x13'));var as=require(_0x1bf3('0x14'));var hardwareService=require(_0x1bf3('0x15'));var logger=require('../../config/logger')(_0x1bf3('0x16'));var utils=require(_0x1bf3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x1bf3('0x18'));var db=require(_0x1bf3('0x19'))['db'];config[_0x1bf3('0x1a')]=_[_0x1bf3('0x1b')](config[_0x1bf3('0x1a')],{'host':_0x1bf3('0x1c'),'port':0x18eb});var socket=require(_0x1bf3('0x1d'))(new Redis(config[_0x1bf3('0x1a')]));require(_0x1bf3('0x1e'))['register'](socket);var jayson=require(_0x1bf3('0x1f'));var client=jayson[_0x1bf3('0x20')][_0x1bf3('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x5e9bcc,_0x2191cc,_0x571cf4,_0x1c0e1e){return new BPromise(function(_0xe4926,_0x12a435){var _0x3c7a8e=_0x1c0e1e||client;return _0x3c7a8e['request'](_0x5e9bcc,_0x571cf4)[_0x1bf3('0x22')](function(_0x59e2ce){logger[_0x1bf3('0x23')]('WhatsappAccount,\x20%s,\x20%s',_0x2191cc,_0x1bf3('0x24'));logger[_0x1bf3('0x25')](_0x1bf3('0x26'),_0x2191cc,_0x1bf3('0x24'),JSON[_0x1bf3('0x27')](_0x59e2ce));if(_0x59e2ce['error']){if(_0x59e2ce[_0x1bf3('0x28')][_0x1bf3('0x29')]===0x1f4){logger[_0x1bf3('0x28')](_0x1bf3('0x2a'),_0x2191cc,_0x59e2ce['error'][_0x1bf3('0x2b')]);return _0x12a435(_0x59e2ce['error'][_0x1bf3('0x2b')]);}logger[_0x1bf3('0x28')](_0x1bf3('0x2a'),_0x2191cc,_0x59e2ce[_0x1bf3('0x28')][_0x1bf3('0x2b')]);return _0xe4926(_0x59e2ce[_0x1bf3('0x28')][_0x1bf3('0x2b')]);}else{logger['info'](_0x1bf3('0x2a'),_0x2191cc,_0x1bf3('0x24'));_0xe4926(_0x59e2ce['result']['message']);}})['catch'](function(_0x569ec2){logger['error'](_0x1bf3('0x2a'),_0x2191cc,_0x569ec2);_0x12a435(_0x569ec2);});});}function respondWithStatusCode(_0x5d56aa,_0x33b0ab){_0x33b0ab=_0x33b0ab||0xcc;return function(_0x5961aa){if(_0x5961aa){return _0x5d56aa['sendStatus'](_0x33b0ab);}return _0x5d56aa[_0x1bf3('0x2c')](_0x33b0ab)[_0x1bf3('0x2d')]();};}function respondWithResult(_0x160462,_0xa53e4f){_0xa53e4f=_0xa53e4f||0xc8;return function(_0x244c80){if(_0x244c80){return _0x160462['status'](_0xa53e4f)[_0x1bf3('0x2e')](_0x244c80);}};}function respondWithFilteredResult(_0x3e7886,_0x51e492){return function(_0x12609f){if(_0x12609f){var _0x110230=typeof _0x51e492[_0x1bf3('0x2f')]===_0x1bf3('0x30')&&typeof _0x51e492[_0x1bf3('0x31')]===_0x1bf3('0x30');var _0x222dab=_0x12609f[_0x1bf3('0x32')];var _0x635284=_0x110230?0x0:_0x51e492[_0x1bf3('0x2f')];var _0x1f2acc=_0x110230?_0x12609f['count']:_0x51e492[_0x1bf3('0x2f')]+_0x51e492['limit'];var _0x2a26aa;if(_0x1f2acc>=_0x222dab){_0x1f2acc=_0x222dab;_0x2a26aa=0xc8;}else{_0x2a26aa=0xce;}_0x3e7886['status'](_0x2a26aa);return _0x3e7886[_0x1bf3('0x33')](_0x1bf3('0x34'),_0x635284+'-'+_0x1f2acc+'/'+_0x222dab)[_0x1bf3('0x2e')](_0x12609f);}return null;};}function patchUpdates(_0x255162){return function(_0x358c05){try{jsonpatch[_0x1bf3('0x35')](_0x358c05,_0x255162,!![]);}catch(_0x44b233){return BPromise[_0x1bf3('0x36')](_0x44b233);}return _0x358c05[_0x1bf3('0x37')]();};}function saveUpdates(_0x432c7e,_0x220c4b){return function(_0x44965b){if(_0x44965b){return _0x44965b['update'](_0x432c7e)[_0x1bf3('0x22')](function(_0x2de610){return _0x2de610;});}return null;};}function removeEntity(_0x116761,_0x40c523){return function(_0x2a44f7){if(_0x2a44f7){return _0x2a44f7[_0x1bf3('0x38')]()[_0x1bf3('0x22')](function(){var _0x11a27f=_0x2a44f7[_0x1bf3('0x39')]({'plain':!![]});var _0x26ff80='WhatsappAccounts';return db['UserProfileResource']['destroy']({'where':{'type':_0x26ff80,'resourceId':_0x11a27f['id']}})['then'](function(){return _0x2a44f7;});})[_0x1bf3('0x22')](function(){_0x116761[_0x1bf3('0x2c')](0xcc)[_0x1bf3('0x2d')]();});}};}function handleEntityNotFound(_0x4512e4,_0x345d22){return function(_0x1d0853){if(!_0x1d0853){_0x4512e4[_0x1bf3('0x3a')](0x194);}return _0x1d0853;};}function handleError(_0x1670f1,_0x45de4d){_0x45de4d=_0x45de4d||0x1f4;return function(_0x1d8fa9){logger[_0x1bf3('0x28')](_0x1d8fa9[_0x1bf3('0x3b')]);if(_0x1d8fa9['name']){delete _0x1d8fa9[_0x1bf3('0x3c')];}_0x1670f1[_0x1bf3('0x2c')](_0x45de4d)[_0x1bf3('0x3d')](_0x1d8fa9);};}exports[_0x1bf3('0x3e')]=function(_0x221918,_0x44bde3){var _0x2c4b92={'include':[{'model':db[_0x1bf3('0x3f')],'as':_0x1bf3('0x40')}]},_0x96df7c={},_0x38f5b2={'count':0x0,'rows':[]};var _0x54d769=_['map'](db[_0x1bf3('0x41')]['rawAttributes'],function(_0x54225d){return{'name':_0x54225d[_0x1bf3('0x42')],'type':_0x54225d['type']['key']};});_0x96df7c[_0x1bf3('0x43')]=_[_0x1bf3('0x44')](_0x54d769,'name');_0x96df7c[_0x1bf3('0x45')]=_[_0x1bf3('0x46')](_0x221918[_0x1bf3('0x45')]);_0x96df7c[_0x1bf3('0x47')]=_[_0x1bf3('0x48')](_0x96df7c[_0x1bf3('0x43')],_0x96df7c['query']);_0x2c4b92['attributes']=_[_0x1bf3('0x48')](_0x96df7c[_0x1bf3('0x43')],qs[_0x1bf3('0x49')](_0x221918[_0x1bf3('0x45')]['fields']));_0x2c4b92[_0x1bf3('0x4a')]=_0x2c4b92['attributes'][_0x1bf3('0x4b')]?_0x2c4b92['attributes']:_0x96df7c['model'];if(!_0x221918[_0x1bf3('0x45')]['hasOwnProperty'](_0x1bf3('0x4c'))){_0x2c4b92[_0x1bf3('0x31')]=qs[_0x1bf3('0x31')](_0x221918[_0x1bf3('0x45')]['limit']);_0x2c4b92[_0x1bf3('0x2f')]=qs[_0x1bf3('0x2f')](_0x221918[_0x1bf3('0x45')][_0x1bf3('0x2f')]);}_0x2c4b92[_0x1bf3('0x4d')]=qs[_0x1bf3('0x4e')](_0x221918[_0x1bf3('0x45')][_0x1bf3('0x4e')]);_0x2c4b92[_0x1bf3('0x4f')]=qs[_0x1bf3('0x47')](_[_0x1bf3('0x50')](_0x221918[_0x1bf3('0x45')],_0x96df7c['filters']),_0x54d769);if(_0x221918[_0x1bf3('0x45')][_0x1bf3('0x51')]){_0x2c4b92[_0x1bf3('0x4f')]=_['merge'](_0x2c4b92[_0x1bf3('0x4f')],{'$or':_['map'](_0x54d769,function(_0xdf8dd3){if(_0xdf8dd3[_0x1bf3('0x52')]!=='VIRTUAL'){var _0x3913c9={};_0x3913c9[_0xdf8dd3['name']]={'$like':'%'+_0x221918[_0x1bf3('0x45')][_0x1bf3('0x51')]+'%'};return _0x3913c9;}})});}_0x2c4b92=_[_0x1bf3('0x53')]({},_0x2c4b92,_0x221918[_0x1bf3('0x54')]);var _0x3be1c8={'where':_0x2c4b92['where']};return db['WhatsappAccount'][_0x1bf3('0x32')](_0x3be1c8)[_0x1bf3('0x22')](function(_0x545582){_0x38f5b2[_0x1bf3('0x32')]=_0x545582;if(_0x221918['query'][_0x1bf3('0x55')]){_0x2c4b92[_0x1bf3('0x56')]=[{'all':!![]}];}return db[_0x1bf3('0x41')]['findAll'](_0x2c4b92);})[_0x1bf3('0x22')](function(_0x12726d){_0x38f5b2['rows']=_0x12726d;return _0x38f5b2;})[_0x1bf3('0x22')](respondWithFilteredResult(_0x44bde3,_0x2c4b92))[_0x1bf3('0x57')](handleError(_0x44bde3,null));};exports['show']=function(_0x529b0e,_0x1584d3){var _0xd1828a={'raw':![],'where':{'id':_0x529b0e['params']['id']},'include':[{'model':db[_0x1bf3('0x3f')],'as':'mandatoryDispositionPause'}]},_0x3cfa6c={};_0x3cfa6c[_0x1bf3('0x43')]=_[_0x1bf3('0x46')](db['WhatsappAccount']['rawAttributes']);_0x3cfa6c[_0x1bf3('0x45')]=_[_0x1bf3('0x46')](_0x529b0e['query']);_0x3cfa6c[_0x1bf3('0x47')]=_[_0x1bf3('0x48')](_0x3cfa6c[_0x1bf3('0x43')],_0x3cfa6c['query']);_0xd1828a[_0x1bf3('0x4a')]=_[_0x1bf3('0x48')](_0x3cfa6c[_0x1bf3('0x43')],qs[_0x1bf3('0x49')](_0x529b0e[_0x1bf3('0x45')]['fields']));_0xd1828a[_0x1bf3('0x4a')]=_0xd1828a[_0x1bf3('0x4a')]['length']?_0xd1828a[_0x1bf3('0x4a')]:_0x3cfa6c[_0x1bf3('0x43')];if(_0x529b0e['query'][_0x1bf3('0x55')]){_0xd1828a['include']=[{'all':!![]}];}_0xd1828a=_['merge']({},_0xd1828a,_0x529b0e['options']);return db['WhatsappAccount'][_0x1bf3('0x58')](_0xd1828a)[_0x1bf3('0x22')](handleEntityNotFound(_0x1584d3,null))['then'](respondWithResult(_0x1584d3,null))[_0x1bf3('0x57')](handleError(_0x1584d3,null));};exports['create']=function(_0x4ba30b,_0x3a4b6a){return db['WhatsappAccount'][_0x1bf3('0x59')](_0x4ba30b[_0x1bf3('0x5a')],{})[_0x1bf3('0x22')](function(_0x26ce1b){var _0x42965d=_0x4ba30b['user']['get']({'plain':!![]});if(!_0x42965d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x42965d[_0x1bf3('0x5b')]===_0x1bf3('0x5c')){var _0x15adf7=_0x26ce1b[_0x1bf3('0x39')]({'plain':!![]});var _0x20dd98=_0x1bf3('0x5d');return db[_0x1bf3('0x5e')][_0x1bf3('0x58')]({'where':{'name':_0x20dd98,'userProfileId':_0x42965d[_0x1bf3('0x5f')]},'raw':!![]})[_0x1bf3('0x22')](function(_0xb7953a){if(_0xb7953a&&_0xb7953a[_0x1bf3('0x60')]===0x0){return db[_0x1bf3('0x61')][_0x1bf3('0x59')]({'name':_0x15adf7[_0x1bf3('0x3c')],'resourceId':_0x15adf7['id'],'type':_0xb7953a[_0x1bf3('0x3c')],'sectionId':_0xb7953a['id']},{})[_0x1bf3('0x22')](function(){return _0x26ce1b;});}else{return _0x26ce1b;}})[_0x1bf3('0x57')](function(_0x21abbb){logger['error'](_0x1bf3('0x62'),_0x21abbb);throw _0x21abbb;});}return _0x26ce1b;})[_0x1bf3('0x22')](respondWithResult(_0x3a4b6a,0xc9))[_0x1bf3('0x57')](handleError(_0x3a4b6a,null));};exports[_0x1bf3('0x63')]=function(_0x152ec2,_0x221ede){if(_0x152ec2['body']['id']){delete _0x152ec2[_0x1bf3('0x5a')]['id'];}return db[_0x1bf3('0x41')]['find']({'where':{'id':_0x152ec2[_0x1bf3('0x64')]['id']},'include':[{'model':db['Pause'],'as':_0x1bf3('0x40')}]})[_0x1bf3('0x22')](handleEntityNotFound(_0x221ede,null))[_0x1bf3('0x22')](saveUpdates(_0x152ec2[_0x1bf3('0x5a')],null))[_0x1bf3('0x22')](respondWithResult(_0x221ede,null))[_0x1bf3('0x57')](handleError(_0x221ede,null));};exports[_0x1bf3('0x38')]=function(_0x5843a3,_0x5cb2df){return db[_0x1bf3('0x41')][_0x1bf3('0x58')]({'where':{'id':_0x5843a3[_0x1bf3('0x64')]['id']}})[_0x1bf3('0x22')](handleEntityNotFound(_0x5cb2df,null))['then'](removeEntity(_0x5cb2df,null))[_0x1bf3('0x57')](handleError(_0x5cb2df,null));};exports[_0x1bf3('0x65')]=function(_0x43d934,_0x2f890c){return db[_0x1bf3('0x41')][_0x1bf3('0x65')]()[_0x1bf3('0x22')](respondWithResult(_0x2f890c,null))[_0x1bf3('0x57')](handleError(_0x2f890c,null));};exports[_0x1bf3('0x66')]=function(_0x57d19e,_0x353c76,_0xae2815){if(_0x57d19e[_0x1bf3('0x5a')]['id']){delete _0x57d19e[_0x1bf3('0x5a')]['id'];}return db[_0x1bf3('0x41')][_0x1bf3('0x58')]({'where':{'id':_0x57d19e[_0x1bf3('0x64')]['id']}})['then'](handleEntityNotFound(_0x353c76,null))[_0x1bf3('0x22')](function(_0x1aa49f){if(_0x1aa49f){_0x57d19e[_0x1bf3('0x5a')][_0x1bf3('0x67')]=_0x1aa49f['id'];return db[_0x1bf3('0x68')][_0x1bf3('0x59')](_0x57d19e[_0x1bf3('0x5a')]);}})['then'](respondWithResult(_0x353c76,null))['catch'](handleError(_0x353c76,null));};exports[_0x1bf3('0x69')]=function(_0x186498,_0x5ebf6a,_0x20eb5b){var _0x590d51={'raw':![],'where':{}};var _0x1f002b={};var _0x5cf8a6={'count':0x0,'rows':[]};return db[_0x1bf3('0x41')][_0x1bf3('0x6a')]({'where':{'id':_0x186498['params']['id']}})[_0x1bf3('0x22')](handleEntityNotFound(_0x5ebf6a,null))[_0x1bf3('0x22')](function(_0x51127e){if(_0x51127e){_0x1f002b[_0x1bf3('0x43')]=_[_0x1bf3('0x46')](db[_0x1bf3('0x68')][_0x1bf3('0x6b')]);_0x1f002b[_0x1bf3('0x45')]=_['keys'](_0x186498[_0x1bf3('0x45')]);_0x1f002b[_0x1bf3('0x47')]=_[_0x1bf3('0x48')](_0x1f002b[_0x1bf3('0x43')],_0x1f002b[_0x1bf3('0x45')]);_0x590d51['attributes']=_[_0x1bf3('0x48')](_0x1f002b['model'],qs[_0x1bf3('0x49')](_0x186498[_0x1bf3('0x45')][_0x1bf3('0x49')]));_0x590d51[_0x1bf3('0x4a')]=_0x590d51['attributes'][_0x1bf3('0x4b')]?_0x590d51['attributes']:_0x1f002b[_0x1bf3('0x43')];if(!_0x186498[_0x1bf3('0x45')][_0x1bf3('0x6c')](_0x1bf3('0x4c'))){_0x590d51[_0x1bf3('0x31')]=qs[_0x1bf3('0x31')](_0x186498[_0x1bf3('0x45')]['limit']);_0x590d51[_0x1bf3('0x2f')]=qs[_0x1bf3('0x2f')](_0x186498['query'][_0x1bf3('0x2f')]);}_0x590d51['order']=qs['sort'](_0x186498[_0x1bf3('0x45')][_0x1bf3('0x4e')]);_0x590d51[_0x1bf3('0x4f')]=qs[_0x1bf3('0x47')](_[_0x1bf3('0x50')](_0x186498['query'],_0x1f002b[_0x1bf3('0x47')]));_0x590d51[_0x1bf3('0x4f')][_0x1bf3('0x67')]=_0x51127e['id'];if(_0x186498[_0x1bf3('0x45')][_0x1bf3('0x51')]){_0x590d51[_0x1bf3('0x4f')]=_[_0x1bf3('0x53')](_0x590d51[_0x1bf3('0x4f')],{'$or':_['map'](_0x590d51[_0x1bf3('0x4a')],function(_0x2d27d8){var _0x19a234={};_0x19a234[_0x2d27d8]={'$like':'%'+_0x186498['query'][_0x1bf3('0x51')]+'%'};return _0x19a234;})});}_0x590d51=_[_0x1bf3('0x53')]({},_0x590d51,_0x186498[_0x1bf3('0x54')]);return db[_0x1bf3('0x68')][_0x1bf3('0x32')]({'where':_0x590d51[_0x1bf3('0x4f')]})[_0x1bf3('0x22')](function(_0x5a2c42){_0x5cf8a6[_0x1bf3('0x32')]=_0x5a2c42;if(_0x186498[_0x1bf3('0x45')]['includeAll']){_0x590d51[_0x1bf3('0x56')]=[{'all':!![]}];}return db['Disposition'][_0x1bf3('0x6d')](_0x590d51);})[_0x1bf3('0x22')](function(_0x1b9681){_0x5cf8a6[_0x1bf3('0x6e')]=_0x1b9681;return _0x5cf8a6;});}})['then'](respondWithFilteredResult(_0x5ebf6a,_0x590d51))[_0x1bf3('0x57')](handleError(_0x5ebf6a,null));};exports[_0x1bf3('0x6f')]=function(_0x5a316c,_0x31b0bd,_0x2999cb){return db['WhatsappAccount'][_0x1bf3('0x58')]({'where':{'id':_0x5a316c[_0x1bf3('0x64')]['id']}})[_0x1bf3('0x22')](handleEntityNotFound(_0x31b0bd,null))[_0x1bf3('0x22')](function(_0x5bdc86){if(_0x5bdc86){return _0x5bdc86[_0x1bf3('0x6f')](_0x5a316c['query'][_0x1bf3('0x70')]);}})[_0x1bf3('0x22')](respondWithStatusCode(_0x31b0bd,null))['catch'](handleError(_0x31b0bd,null));};exports[_0x1bf3('0x71')]=function(_0x2b08e3,_0x3807f3,_0x428064){if(_0x2b08e3['body']['id']){delete _0x2b08e3[_0x1bf3('0x5a')]['id'];}return db[_0x1bf3('0x41')][_0x1bf3('0x58')]({'where':{'id':_0x2b08e3[_0x1bf3('0x64')]['id']}})['then'](handleEntityNotFound(_0x3807f3,null))[_0x1bf3('0x22')](function(_0x1cef82){if(_0x1cef82){_0x2b08e3[_0x1bf3('0x5a')][_0x1bf3('0x67')]=_0x1cef82['id'];return db['CannedAnswer']['create'](_0x2b08e3[_0x1bf3('0x5a')]);}})[_0x1bf3('0x22')](respondWithResult(_0x3807f3,null))[_0x1bf3('0x57')](handleError(_0x3807f3,null));};exports['getAnswers']=function(_0xb2d2ea,_0x174752,_0x910d3d){var _0x59d1c9={'raw':![],'where':{}};var _0x2d87ee={};var _0x1bbdce={'count':0x0,'rows':[]};return db[_0x1bf3('0x41')][_0x1bf3('0x6a')]({'where':{'id':_0xb2d2ea[_0x1bf3('0x64')]['id']}})[_0x1bf3('0x22')](handleEntityNotFound(_0x174752,null))['then'](function(_0x5cbde4){if(_0x5cbde4){_0x2d87ee[_0x1bf3('0x43')]=_[_0x1bf3('0x46')](db[_0x1bf3('0x72')]['rawAttributes']);_0x2d87ee[_0x1bf3('0x45')]=_[_0x1bf3('0x46')](_0xb2d2ea['query']);_0x2d87ee[_0x1bf3('0x47')]=_['intersection'](_0x2d87ee[_0x1bf3('0x43')],_0x2d87ee[_0x1bf3('0x45')]);_0x59d1c9[_0x1bf3('0x4a')]=_[_0x1bf3('0x48')](_0x2d87ee[_0x1bf3('0x43')],qs[_0x1bf3('0x49')](_0xb2d2ea['query'][_0x1bf3('0x49')]));_0x59d1c9[_0x1bf3('0x4a')]=_0x59d1c9['attributes'][_0x1bf3('0x4b')]?_0x59d1c9[_0x1bf3('0x4a')]:_0x2d87ee[_0x1bf3('0x43')];if(!_0xb2d2ea[_0x1bf3('0x45')]['hasOwnProperty'](_0x1bf3('0x4c'))){_0x59d1c9['limit']=qs[_0x1bf3('0x31')](_0xb2d2ea[_0x1bf3('0x45')][_0x1bf3('0x31')]);_0x59d1c9[_0x1bf3('0x2f')]=qs[_0x1bf3('0x2f')](_0xb2d2ea[_0x1bf3('0x45')]['offset']);}_0x59d1c9[_0x1bf3('0x4d')]=qs['sort'](_0xb2d2ea[_0x1bf3('0x45')][_0x1bf3('0x4e')]);_0x59d1c9[_0x1bf3('0x4f')]=qs[_0x1bf3('0x47')](_[_0x1bf3('0x50')](_0xb2d2ea[_0x1bf3('0x45')],_0x2d87ee[_0x1bf3('0x47')]));_0x59d1c9['where'][_0x1bf3('0x67')]=_0x5cbde4['id'];if(_0xb2d2ea[_0x1bf3('0x45')][_0x1bf3('0x51')]){_0x59d1c9[_0x1bf3('0x4f')]=_[_0x1bf3('0x53')](_0x59d1c9[_0x1bf3('0x4f')],{'$or':_['map'](_0x59d1c9[_0x1bf3('0x4a')],function(_0x1074f8){var _0x45f792={};_0x45f792[_0x1074f8]={'$like':'%'+_0xb2d2ea['query'][_0x1bf3('0x51')]+'%'};return _0x45f792;})});}_0x59d1c9=_[_0x1bf3('0x53')]({},_0x59d1c9,_0xb2d2ea[_0x1bf3('0x54')]);return db['CannedAnswer'][_0x1bf3('0x32')]({'where':_0x59d1c9[_0x1bf3('0x4f')]})[_0x1bf3('0x22')](function(_0xbc7cc){_0x1bbdce['count']=_0xbc7cc;if(_0xb2d2ea[_0x1bf3('0x45')][_0x1bf3('0x55')]){_0x59d1c9['include']=[{'all':!![]}];}return db[_0x1bf3('0x72')][_0x1bf3('0x6d')](_0x59d1c9);})[_0x1bf3('0x22')](function(_0x5a1bc2){_0x1bbdce[_0x1bf3('0x6e')]=_0x5a1bc2;return _0x1bbdce;});}})[_0x1bf3('0x22')](respondWithFilteredResult(_0x174752,_0x59d1c9))[_0x1bf3('0x57')](handleError(_0x174752,null));};exports['removeAnswers']=function(_0x86f49c,_0x3d0702,_0x44e0a9){return db[_0x1bf3('0x41')][_0x1bf3('0x58')]({'where':{'id':_0x86f49c[_0x1bf3('0x64')]['id']}})['then'](handleEntityNotFound(_0x3d0702,null))['then'](function(_0x4deda9){if(_0x4deda9){return _0x4deda9[_0x1bf3('0x73')](_0x86f49c[_0x1bf3('0x45')][_0x1bf3('0x70')]);}})['then'](respondWithStatusCode(_0x3d0702,null))[_0x1bf3('0x57')](handleError(_0x3d0702,null));};exports[_0x1bf3('0x74')]=function(_0x4cf3d9,_0x3278cf,_0x30afb5){return db[_0x1bf3('0x41')][_0x1bf3('0x58')]({'where':{'id':_0x4cf3d9[_0x1bf3('0x64')]['id']}})[_0x1bf3('0x22')](handleEntityNotFound(_0x3278cf,null))[_0x1bf3('0x22')](function(_0x1f5b51){if(_0x1f5b51){return _0x1f5b51['addAgents'](_0x4cf3d9[_0x1bf3('0x5a')][_0x1bf3('0x70')],_[_0x1bf3('0x75')](_0x4cf3d9['body'],[_0x1bf3('0x70'),'id'])||{})[_0x1bf3('0x76')](function(_0x20e3d0){for(var _0x401e91=0x0;_0x401e91<_0x4cf3d9[_0x1bf3('0x5a')]['ids'][_0x1bf3('0x4b')];_0x401e91+=0x1){socket[_0x1bf3('0x77')](_0x1bf3('0x78'),{'UserId':Number(_0x4cf3d9[_0x1bf3('0x5a')][_0x1bf3('0x70')][_0x401e91]),'WhatsappAccountId':Number(_0x4cf3d9[_0x1bf3('0x64')]['id'])});}return _0x20e3d0;});}})['then'](respondWithResult(_0x3278cf,null))[_0x1bf3('0x57')](handleError(_0x3278cf,null));};exports[_0x1bf3('0x79')]=function(_0x1e4b22,_0x242e8f,_0x263f26){return db[_0x1bf3('0x41')][_0x1bf3('0x58')]({'where':{'id':_0x1e4b22[_0x1bf3('0x64')]['id']}})['then'](handleEntityNotFound(_0x242e8f,null))[_0x1bf3('0x22')](function(_0x14758d){if(_0x14758d){return _0x14758d[_0x1bf3('0x79')](_0x1e4b22[_0x1bf3('0x45')][_0x1bf3('0x70')])[_0x1bf3('0x22')](function(){if(_[_0x1bf3('0x7a')](_0x1e4b22['query'][_0x1bf3('0x70')])){for(var _0x3bc04b=0x0;_0x3bc04b<_0x1e4b22[_0x1bf3('0x45')][_0x1bf3('0x70')][_0x1bf3('0x4b')];_0x3bc04b+=0x1){socket[_0x1bf3('0x77')](_0x1bf3('0x7b'),{'UserId':Number(_0x1e4b22[_0x1bf3('0x45')][_0x1bf3('0x70')][_0x3bc04b]),'WhatsappAccountId':Number(_0x1e4b22[_0x1bf3('0x64')]['id'])});}}else{socket[_0x1bf3('0x77')]('userWhatsappAccount:remove',{'UserId':Number(_0x1e4b22[_0x1bf3('0x45')]['ids']),'WhatsappAccountId':Number(_0x1e4b22[_0x1bf3('0x64')]['id'])});}});}})[_0x1bf3('0x22')](respondWithStatusCode(_0x242e8f,null))[_0x1bf3('0x57')](handleError(_0x242e8f,null));};exports['getAgents']=function(_0x2ab033,_0x2b8b74,_0x30b557){var _0x3bbc8c={};var _0x5bc221={};var _0x72e4cb;var _0x75f6f3;return db['WhatsappAccount'][_0x1bf3('0x6a')]({'where':{'id':_0x2ab033[_0x1bf3('0x64')]['id']}})['then'](handleEntityNotFound(_0x2b8b74,null))[_0x1bf3('0x22')](function(_0xb399da){if(_0xb399da){_0x72e4cb=_0xb399da;_0x5bc221[_0x1bf3('0x43')]=_[_0x1bf3('0x46')](db['User']['rawAttributes']);_0x5bc221[_0x1bf3('0x45')]=_[_0x1bf3('0x46')](_0x2ab033[_0x1bf3('0x45')]);_0x5bc221[_0x1bf3('0x47')]=_[_0x1bf3('0x48')](_0x5bc221[_0x1bf3('0x43')],_0x5bc221[_0x1bf3('0x45')]);_0x3bbc8c[_0x1bf3('0x4a')]=_['intersection'](_0x5bc221['model'],qs[_0x1bf3('0x49')](_0x2ab033[_0x1bf3('0x45')][_0x1bf3('0x49')]));_0x3bbc8c[_0x1bf3('0x4a')]=_0x3bbc8c['attributes'][_0x1bf3('0x4b')]?_0x3bbc8c[_0x1bf3('0x4a')]:_0x5bc221['model'];_0x3bbc8c[_0x1bf3('0x4d')]=qs[_0x1bf3('0x4e')](_0x2ab033[_0x1bf3('0x45')][_0x1bf3('0x4e')]);_0x3bbc8c['where']=qs[_0x1bf3('0x47')](_[_0x1bf3('0x50')](_0x2ab033[_0x1bf3('0x45')],_0x5bc221[_0x1bf3('0x47')]));if(_0x2ab033[_0x1bf3('0x45')][_0x1bf3('0x51')]){_0x3bbc8c[_0x1bf3('0x4f')]=_['merge'](_0x3bbc8c['where'],{'$or':_[_0x1bf3('0x44')](_0x3bbc8c[_0x1bf3('0x4a')],function(_0x4f0ffe){var _0x30c98b={};_0x30c98b[_0x4f0ffe]={'$like':'%'+_0x2ab033[_0x1bf3('0x45')][_0x1bf3('0x51')]+'%'};return _0x30c98b;})});}_0x3bbc8c=_[_0x1bf3('0x53')]({},_0x3bbc8c,_0x2ab033[_0x1bf3('0x54')]);return _0x72e4cb[_0x1bf3('0x7c')](_0x3bbc8c);}})[_0x1bf3('0x22')](function(_0x2e517d){if(_0x2e517d){_0x75f6f3=_0x2e517d[_0x1bf3('0x4b')];if(!_0x2ab033[_0x1bf3('0x45')][_0x1bf3('0x6c')](_0x1bf3('0x4c'))){_0x3bbc8c[_0x1bf3('0x31')]=qs[_0x1bf3('0x31')](_0x2ab033[_0x1bf3('0x45')][_0x1bf3('0x31')]);_0x3bbc8c['offset']=qs[_0x1bf3('0x2f')](_0x2ab033[_0x1bf3('0x45')][_0x1bf3('0x2f')]);}return _0x72e4cb['getAgents'](_0x3bbc8c);}})['then'](function(_0x2f7f71){if(_0x2f7f71){return _0x2f7f71?{'count':_0x75f6f3,'rows':_0x2f7f71}:null;}})['then'](respondWithResult(_0x2b8b74,null))[_0x1bf3('0x57')](handleError(_0x2b8b74,null));};exports[_0x1bf3('0x7d')]=function(_0x4d72ca,_0x78f306){var _0x5a2060=_0x4d72ca[_0x1bf3('0x64')]['id'];var _0x1bacf5=_0x4d72ca[_0x1bf3('0x5a')];var _0x17a48c=0xc8;var _0x30543b=null;return db[_0x1bf3('0x7e')]['transaction']({'isolationLevel':db[_0x1bf3('0x7e')][_0x1bf3('0x7f')]['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x6d0144){return db[_0x1bf3('0x41')]['findOne']({'where':{'id':_0x5a2060},'transaction':_0x6d0144})[_0x1bf3('0x22')](function(_0x52326c){if(_0x52326c){return db[_0x1bf3('0x80')][_0x1bf3('0x38')]({'where':{'WhatsappAccountId':_0x5a2060},'transaction':_0x6d0144})[_0x1bf3('0x22')](function(){var _0x49615e=_[_0x1bf3('0x44')](_0x1bacf5,function(_0x523b49){_0x523b49['WhatsappAccountId']=_0x5a2060;return _0x523b49;});return db[_0x1bf3('0x80')]['bulkCreate'](_0x49615e,{'transaction':_0x6d0144});});}else{_0x17a48c=0x194;_0x30543b=[];}});})[_0x1bf3('0x22')](function(){if(_0x17a48c!==0x194){return db[_0x1bf3('0x80')][_0x1bf3('0x81')]({'where':{'WhatsappAccountId':_0x5a2060},'order':'priority'})[_0x1bf3('0x22')](function(_0x9d89e7){_0x30543b=_0x9d89e7;});}})['catch'](function(_0x67886){_0x17a48c=0x1f4;logger[_0x1bf3('0x28')](_0x67886['stack']);if(_0x67886['name']){delete _0x67886['name'];}_0x30543b=_0x67886;})[_0x1bf3('0x82')](function(){if(_0x30543b===null){_0x78f306[_0x1bf3('0x3a')](_0x17a48c);}else{if(_0x17a48c===0x1f4){_0x78f306[_0x1bf3('0x2c')](_0x17a48c)[_0x1bf3('0x3d')](_0x30543b);}else{_0x78f306[_0x1bf3('0x2c')](_0x17a48c)[_0x1bf3('0x2e')](_0x30543b);}}});};exports[_0x1bf3('0x83')]=function(_0x3db0d5,_0x2e5cfe,_0x504e53){var _0x320ff9={};var _0x4278d3={};var _0x111906;var _0x5a45a4;return db[_0x1bf3('0x41')][_0x1bf3('0x6a')]({'where':{'id':_0x3db0d5[_0x1bf3('0x64')]['id']}})[_0x1bf3('0x22')](handleEntityNotFound(_0x2e5cfe,null))[_0x1bf3('0x22')](function(_0x3af84c){if(_0x3af84c){_0x111906=_0x3af84c;_0x4278d3[_0x1bf3('0x43')]=_[_0x1bf3('0x46')](db[_0x1bf3('0x80')][_0x1bf3('0x6b')]);_0x4278d3[_0x1bf3('0x45')]=_[_0x1bf3('0x46')](_0x3db0d5[_0x1bf3('0x45')]);_0x4278d3[_0x1bf3('0x47')]=_[_0x1bf3('0x48')](_0x4278d3['model'],_0x4278d3['query']);_0x320ff9[_0x1bf3('0x4a')]=_[_0x1bf3('0x48')](_0x4278d3[_0x1bf3('0x43')],qs[_0x1bf3('0x49')](_0x3db0d5[_0x1bf3('0x45')][_0x1bf3('0x49')]));_0x320ff9[_0x1bf3('0x4a')]=_0x320ff9[_0x1bf3('0x4a')][_0x1bf3('0x4b')]?_0x320ff9[_0x1bf3('0x4a')]:_0x4278d3['model'];_0x320ff9[_0x1bf3('0x4d')]=qs[_0x1bf3('0x4e')](_0x3db0d5['query'][_0x1bf3('0x4e')]);_0x320ff9[_0x1bf3('0x4f')]=qs['filters'](_[_0x1bf3('0x50')](_0x3db0d5[_0x1bf3('0x45')],_0x4278d3[_0x1bf3('0x47')]));if(_0x3db0d5[_0x1bf3('0x45')][_0x1bf3('0x51')]){_0x320ff9['where']=_['merge'](_0x320ff9[_0x1bf3('0x4f')],{'$or':_[_0x1bf3('0x44')](_0x320ff9[_0x1bf3('0x4a')],function(_0x11e362){var _0x16b60b={};_0x16b60b[_0x11e362]={'$like':'%'+_0x3db0d5[_0x1bf3('0x45')][_0x1bf3('0x51')]+'%'};return _0x16b60b;})});}_0x320ff9=_[_0x1bf3('0x53')]({},_0x320ff9,_0x3db0d5[_0x1bf3('0x54')]);return _0x111906[_0x1bf3('0x83')](_0x320ff9);}})['then'](function(_0x5ea6ac){if(_0x5ea6ac){_0x5a45a4=_0x5ea6ac['length'];if(!_0x3db0d5[_0x1bf3('0x45')][_0x1bf3('0x6c')]('nolimit')){_0x320ff9['limit']=qs['limit'](_0x3db0d5[_0x1bf3('0x45')][_0x1bf3('0x31')]);_0x320ff9[_0x1bf3('0x2f')]=qs[_0x1bf3('0x2f')](_0x3db0d5[_0x1bf3('0x45')][_0x1bf3('0x2f')]);}return _0x111906[_0x1bf3('0x83')](_0x320ff9);}})[_0x1bf3('0x22')](function(_0x5574ff){if(_0x5574ff){return _0x5574ff?{'count':_0x5a45a4,'rows':_0x5574ff}:null;}})[_0x1bf3('0x22')](respondWithResult(_0x2e5cfe,null))[_0x1bf3('0x57')](handleError(_0x2e5cfe,null));};exports[_0x1bf3('0x84')]=function(_0x4dbce4,_0x147849,_0x12744e){var _0x28434b={'channel':_0x1bf3('0x85')};var _0x3edb6a=[];var _0x2fb388=[];var _0x3b7b7b={};return db[_0x1bf3('0x41')][_0x1bf3('0x58')]({'where':{'id':_0x4dbce4[_0x1bf3('0x64')]['id']},'include':[{'model':db[_0x1bf3('0x80')],'as':'Applications'}]})['then'](handleEntityNotFound(_0x147849,null))[_0x1bf3('0x22')](function(_0x142d11){_0x28434b[_0x1bf3('0x86')]=_0x142d11;if(_0x28434b[_0x1bf3('0x86')]&&_0x28434b[_0x1bf3('0x86')][_0x1bf3('0x52')]==='sinch'&&_0x4dbce4[_0x1bf3('0x5a')][_0x1bf3('0x87')]){if(_0x4dbce4[_0x1bf3('0x5a')][_0x1bf3('0x87')][_0x1bf3('0x4b')]===0x0)return;if(_0x4dbce4[_0x1bf3('0x5a')][_0x1bf3('0x87')][0x0][_0x1bf3('0x88')]!=='read')return;return db[_0x1bf3('0x89')]['update']({'read':!![],'readAt':_0x4dbce4['body']['statuses'][0x0][_0x1bf3('0x8a')]},{'where':{'messageId':_0x4dbce4[_0x1bf3('0x5a')]['statuses'][0x0][_0x1bf3('0x8b')]},'individualHooks':!![]})[_0x1bf3('0x22')](function(_0x38a475){return _0x147849[_0x1bf3('0x2c')](0xc8)[_0x1bf3('0x2e')](_0x38a475);});}_0x28434b[_0x1bf3('0x8c')]=_[_0x1bf3('0x8d')](_0x142d11[_0x1bf3('0x8e')],[_0x1bf3('0x8f')],[_0x1bf3('0x90')]);if(_0x28434b[_0x1bf3('0x86')][_0x1bf3('0x8e')]){delete _0x28434b[_0x1bf3('0x86')][_0x1bf3('0x8e')];}return db[_0x1bf3('0x91')]['describe']()[_0x1bf3('0x22')](function(_0x2ae001){if(!_0x2ae001){throw new db['Sequelize'][(_0x1bf3('0x92'))](_0x1bf3('0x93'));}_0x3edb6a=_[_0x1bf3('0x94')](_[_0x1bf3('0x46')](_0x2ae001),['createdAt',_0x1bf3('0x95')]);_0x2fb388=_[_0x1bf3('0x94')](_['keys'](_0x2ae001),[_0x1bf3('0x96'),'updatedAt',_0x1bf3('0x97'),_0x1bf3('0x98')]);_0x28434b['body']={'mapKey':_0x1bf3('0x99')};if(_0x28434b[_0x1bf3('0x86')]&&_0x28434b['account'][_0x1bf3('0x52')]===_0x1bf3('0x9a')){_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0x9b')]=_0x4dbce4['body'][_0x1bf3('0x9c')][_0x1bf3('0x9d')]('whatsapp:','');_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0x5a')]=_0x4dbce4[_0x1bf3('0x5a')][_0x1bf3('0x9e')];_0x28434b['body'][_0x1bf3('0x9f')]=_0x4dbce4[_0x1bf3('0x5a')]['MessageSid'];}if(_0x28434b[_0x1bf3('0x86')]&&_0x28434b['account'][_0x1bf3('0x52')]===_0x1bf3('0xa0')){_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0x9b')]=_0x4dbce4[_0x1bf3('0x5a')][_0x1bf3('0xa1')][0x0]['from'];_0x28434b['body']['body']=_0x4dbce4[_0x1bf3('0x5a')][_0x1bf3('0xa1')][0x0]['message'][_0x1bf3('0x5a')];_0x28434b[_0x1bf3('0x5a')]['messageId']=_0x4dbce4[_0x1bf3('0x5a')][_0x1bf3('0xa1')][0x0][_0x1bf3('0x8b')];}if(_0x28434b[_0x1bf3('0x5a')]['id']){delete _0x28434b[_0x1bf3('0x5a')]['id'];}if(_[_0x1bf3('0xa2')](_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0x9b')])){throw new db[(_0x1bf3('0xa3'))][(_0x1bf3('0x92'))](_0x1bf3('0xa4'));}if(_[_0x1bf3('0xa2')](_0x28434b[_0x1bf3('0x5a')]['body'])||_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0x5a')]===''){throw new db[(_0x1bf3('0xa3'))][(_0x1bf3('0x92'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x1bf3('0xa2')](_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0xa5')])){throw new db['Sequelize'][(_0x1bf3('0x92'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2fb388);}if(!_['includes'](_0x2fb388,_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0xa5')])){throw new db['Sequelize'][(_0x1bf3('0x92'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2fb388);}_0x3b7b7b[_0x28434b['body'][_0x1bf3('0xa5')]]=_0x28434b[_0x1bf3('0x5a')]['from'];return db['CmList'][_0x1bf3('0x58')]({'where':{'id':_0x28434b[_0x1bf3('0x86')][_0x1bf3('0x98')]},'include':[{'model':db[_0x1bf3('0x91')],'as':'Contacts','where':_0x3b7b7b,'limit':0x1,'order':[[_0x1bf3('0x95'),_0x1bf3('0xa6')]]}]});})[_0x1bf3('0x22')](handleEntityNotFound(_0x147849,null))[_0x1bf3('0x22')](function(_0x595235){if(_0x595235){_0x28434b['list']=_[_0x1bf3('0x75')](_0x595235,[_0x1bf3('0xa7')]);if(_0x595235[_0x1bf3('0xa7')][_0x1bf3('0x4b')]){return _0x595235[_0x1bf3('0xa7')][0x0];}var _0x343e4a=_[_0x1bf3('0x1b')](_0x28434b[_0x1bf3('0x5a')],{'firstName':_0x28434b['body'][_0x1bf3('0x9b')],'ListId':_0x595235['id']});_0x343e4a[_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0xa5')]]=_0x28434b['body'][_0x1bf3('0x9b')];return db['CmContact'][_0x1bf3('0x59')](_0x343e4a,{'fields':_0x3edb6a,'raw':!![]});}})[_0x1bf3('0x22')](handleEntityNotFound(_0x147849,null))[_0x1bf3('0x22')](function(_0x5b4119){if(_0x5b4119){_0x28434b[_0x1bf3('0xa8')]=_0x5b4119;var _0x46db5b={'ContactId':_0x5b4119['id'],'phone':_0x28434b[_0x1bf3('0x5a')]['from'],'WhatsappAccountId':_0x4dbce4[_0x1bf3('0x64')]['id']};var _0x3e79e0={'ContactId':_0x5b4119['id'],'WhatsappAccountId':_0x4dbce4[_0x1bf3('0x64')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x1bf3('0x58')]({'where':_0x3e79e0})[_0x1bf3('0x22')](function(_0x218e55){if(_0x218e55){return[_0x218e55,![]];}return db['WhatsappInteraction'][_0x1bf3('0x59')](_0x46db5b)['then'](function(_0x183eb6){return[_0x183eb6,!![]];});});}})[_0x1bf3('0x76')](function(_0x488918,_0x3258a4){_0x28434b[_0x1bf3('0xa9')]=_0x488918[_0x1bf3('0x39')]({'plain':!![]});_0x28434b[_0x1bf3('0xa9')][_0x1bf3('0xaa')]=![];if(_0x3258a4){if(_0x28434b['account'][_0x1bf3('0xab')]){_0x28434b['applications'][_0x1bf3('0xac')]({'id':0x0,'priority':_0x28434b[_0x1bf3('0x8c')][_0x1bf3('0x4b')]+0x1,'app':'close','appdata':_0x1bf3('0xad'),'interval':_0x1bf3('0xae')});}_0x28434b[_0x1bf3('0xa9')][_0x1bf3('0xaa')]=!![];}return db[_0x1bf3('0x89')][_0x1bf3('0x59')]({'phone':_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0x9b')],'messageId':_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0x9f')],'body':_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0x5a')],'WhatsappAccountId':_0x4dbce4[_0x1bf3('0x64')]['id'],'WhatsappInteractionId':_0x488918['id'],'direction':'in','ContactId':_0x488918[_0x1bf3('0xaf')],'AttachmentId':_0x28434b[_0x1bf3('0x5a')][_0x1bf3('0xb0')]});})[_0x1bf3('0x22')](function(_0x2476b6){_0x28434b['message']=_0x2476b6;if(!_0x28434b[_0x1bf3('0xa9')][_0x1bf3('0xb1')])return;return db[_0x1bf3('0xb2')][_0x1bf3('0x58')]({'attributes':['id','name'],'where':{'id':_0x28434b[_0x1bf3('0xa9')][_0x1bf3('0xb1')]}});})[_0x1bf3('0x22')](function(_0x343692){if(_0x343692){_0x28434b[_0x1bf3('0x8c')][_0x1bf3('0xb3')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x343692[_0x1bf3('0x3c')]+','+(_0x28434b['account']['waitForTheAssignedAgent']||0xa),'interval':_0x1bf3('0xae')});}if(!_0x28434b['interaction']['queueId'])return;return db[_0x1bf3('0xb4')][_0x1bf3('0x58')]({'attributes':['id',_0x1bf3('0x3c')],'where':{'id':_0x28434b[_0x1bf3('0xa9')][_0x1bf3('0xb5')]}});})[_0x1bf3('0x22')](function(_0x1c789f){if(_0x1c789f){_0x28434b[_0x1bf3('0x8c')]['unshift']({'id':0x0,'priority':0x1,'app':_0x1bf3('0xb6'),'appdata':_0x1c789f[_0x1bf3('0x3c')]+','+(_0x28434b['account'][_0x1bf3('0xb7')]||0x12c),'interval':_0x1bf3('0xae')});}return respondWithRpcPromise(_0x1bf3('0xb8'),'startRouting',_0x28434b);})[_0x1bf3('0x22')](function(_0x2aa7f8){if(_0x2aa7f8){var _0x2b97bb=0xc8;var _0x339ad9=_0x1bf3('0xb9');logger[_0x1bf3('0x23')](_0x1bf3('0x26'),_0x339ad9,_0x2b97bb,'entity\x20found');logger[_0x1bf3('0x25')](_0x1bf3('0xba'),_0x339ad9,_0x2b97bb,_0x1bf3('0xbb'),JSON['stringify'](_0x2aa7f8));if(_0x28434b['account'][_0x1bf3('0x52')]===_0x1bf3('0x9a')){return _0x147849['status'](_0x2b97bb)[_0x1bf3('0x33')](_0x1bf3('0xbc'),_0x1bf3('0xbd'))[_0x1bf3('0x3d')](_0x1bf3('0xbe'));}else{return _0x147849[_0x1bf3('0x2c')](_0x2b97bb)[_0x1bf3('0x2e')](_0x2aa7f8);}}});})[_0x1bf3('0x57')](handleError(_0x147849,null));};exports[_0x1bf3('0x3d')]=function(_0x345e21,_0x500c19,_0x2faacb){var _0x48b84f,_0x48876e,_0x280dd8;if(_['isNil'](_0x345e21['body'][_0x1bf3('0x5a')])||_0x345e21[_0x1bf3('0x5a')][_0x1bf3('0x5a')]===''){throw new db[(_0x1bf3('0xa3'))]['ValidationError'](_0x1bf3('0xbf'));}if(_[_0x1bf3('0xa2')](_0x345e21[_0x1bf3('0x5a')]['to'])){throw new db[(_0x1bf3('0xa3'))][(_0x1bf3('0x92'))]('to\x20is\x20mandatory');}_0x48b84f=_0x345e21[_0x1bf3('0x5a')]['to'];return db[_0x1bf3('0x41')][_0x1bf3('0x58')]({'where':{'id':_0x345e21[_0x1bf3('0x64')]['id']},'include':[{'model':db[_0x1bf3('0xc0')],'as':_0x1bf3('0xc1'),'include':[{'model':db[_0x1bf3('0x91')],'as':_0x1bf3('0xa7'),'where':{'mobile':_0x48b84f},'limit':0x1,'order':[[_0x1bf3('0x95'),'DESC']]}]}]})[_0x1bf3('0x22')](handleEntityNotFound(_0x500c19,null))[_0x1bf3('0x22')](function(_0x1f51c6){if(_0x1f51c6&&_0x1f51c6['List']){_0x48876e=_0x1f51c6[_0x1bf3('0x39')]({'plain':!![]});if(_0x48876e[_0x1bf3('0xc1')]&&_0x48876e[_0x1bf3('0xc1')][_0x1bf3('0xa7')][_0x1bf3('0x4b')]){return _0x48876e[_0x1bf3('0xc1')]['Contacts'][0x0];}return db[_0x1bf3('0x91')][_0x1bf3('0x59')](_['defaults'](_0x345e21[_0x1bf3('0x5a')],{'firstName':_0x48b84f,'mobile':_0x48b84f,'phone':_0x48b84f,'ListId':_0x48876e[_0x1bf3('0x98')]}));}})['then'](handleEntityNotFound(_0x500c19,null))[_0x1bf3('0x22')](function(_0x4b318b){if(_0x4b318b){_0x280dd8=_0x4b318b;return db['WhatsappInteraction'][_0x1bf3('0x58')]({'where':{'ContactId':_0x280dd8['id'],'closed':![],'WhatsappAccountId':_0x48876e['id']}})[_0x1bf3('0x22')](function(_0x437cd6){if(_0x437cd6){return[_0x437cd6,![]];}return db['WhatsappInteraction'][_0x1bf3('0x59')]({'UserId':_0x345e21[_0x1bf3('0x5c')]['id'],'ContactId':_0x280dd8['id'],'WhatsappAccountId':_0x48876e['id'],'phone':_0x48b84f,'firstMsgDirection':'out','Messages':[_[_0x1bf3('0x53')](_0x345e21[_0x1bf3('0x5a')],{'read':![],'body':_0x345e21[_0x1bf3('0x5a')][_0x1bf3('0x5a')],'phone':_0x48b84f,'WhatsappAccountId':_0x48876e['id'],'UserId':_0x345e21[_0x1bf3('0x5c')]['id'],'ContactId':_0x280dd8['id']})]},{'include':[{'model':db[_0x1bf3('0x89')],'as':'Messages'}]})[_0x1bf3('0x22')](function(_0xb4ba6a){return[_0xb4ba6a,!![]];});});}})[_0x1bf3('0x76')](function(_0x115ce2,_0x573ab7){if(_0x573ab7){return _0x115ce2;}return db[_0x1bf3('0x89')][_0x1bf3('0x59')](_[_0x1bf3('0x53')](_0x345e21[_0x1bf3('0x5a')],{'read':![],'body':_0x345e21['body'][_0x1bf3('0x5a')],'phone':_0x48b84f,'WhatsappAccountId':_0x48876e['id'],'WhatsappInteractionId':_0x115ce2['id'],'UserId':_0x345e21[_0x1bf3('0x5c')]['id'],'ContactId':_0x280dd8['id']}))[_0x1bf3('0x22')](function(_0x249a92){_0x115ce2[_0x1bf3('0xc2')][_0x1bf3('0xc3')]=[];_0x115ce2['dataValues'][_0x1bf3('0xc3')][_0x1bf3('0xac')](_0x249a92[_0x1bf3('0xc2')]);return _0x115ce2;});})[_0x1bf3('0x22')](respondWithResult(_0x500c19,null))[_0x1bf3('0x57')](handleError(_0x500c19,null));};
\ No newline at end of file
+var _0xa184=['User','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','priority','finally','getApplications','notify','whatsapp','Applications','account','statuses','state','read','WhatsappMessage','timestamp','applications','orderBy','asc','CmContact','Sequelize','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','from','whatsapp:','messageId','sinch','notifications','message_id','isNil','from\x20is\x20mandatory','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','contact','WhatsappInteraction','interaction','created','autoclose','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','queueId','WhatsappQueue','queue','waitForTheAssignedQueue','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','jayson/promise','client','http','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','limit','count','set','reject','save','update','destroy','get','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','params','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','WhatsappAccounts','UserProfileSection','userProfileId','autoAssociation','find','describe','WhatsappAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','addAgents','omit','spread','userWhatsappAccount:save','isArray','emit','userWhatsappAccount:remove','getAgents'];(function(_0x46c7ff,_0xaa3094){var _0x56783c=function(_0x346023){while(--_0x346023){_0x46c7ff['push'](_0x46c7ff['shift']());}};_0x56783c(++_0xaa3094);}(_0xa184,0x110));var _0x4a18=function(_0x2a0738,_0x3c0bc5){_0x2a0738=_0x2a0738-0x0;var _0x159679=_0xa184[_0x2a0738];return _0x159679;};'use strict';var emlformat=require(_0x4a18('0x0'));var rimraf=require(_0x4a18('0x1'));var zipdir=require(_0x4a18('0x2'));var jsonpatch=require(_0x4a18('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4a18('0x4'));var Mustache=require(_0x4a18('0x5'));var util=require('util');var path=require(_0x4a18('0x6'));var sox=require(_0x4a18('0x7'));var csv=require('to-csv');var ejs=require(_0x4a18('0x8'));var fs=require('fs');var fs_extra=require(_0x4a18('0x9'));var _=require(_0x4a18('0xa'));var squel=require('squel');var crypto=require(_0x4a18('0xb'));var jsforce=require(_0x4a18('0xc'));var deskjs=require(_0x4a18('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4a18('0xe'));var Papa=require(_0x4a18('0xf'));var Redis=require(_0x4a18('0x10'));var authService=require(_0x4a18('0x11'));var qs=require(_0x4a18('0x12'));var as=require(_0x4a18('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4a18('0x14'))(_0x4a18('0x15'));var utils=require(_0x4a18('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x4a18('0x17'));var db=require(_0x4a18('0x18'))['db'];config[_0x4a18('0x19')]=_[_0x4a18('0x1a')](config[_0x4a18('0x19')],{'host':_0x4a18('0x1b'),'port':0x18eb});var socket=require(_0x4a18('0x1c'))(new Redis(config[_0x4a18('0x19')]));require(_0x4a18('0x1d'))['register'](socket);var jayson=require(_0x4a18('0x1e'));var client=jayson[_0x4a18('0x1f')][_0x4a18('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x44206e,_0x17b687,_0x57e44d,_0x34c423){return new BPromise(function(_0x5c7e4b,_0x5bec0f){var _0x5f1588=_0x34c423||client;return _0x5f1588['request'](_0x44206e,_0x57e44d)[_0x4a18('0x21')](function(_0x2b6822){logger[_0x4a18('0x22')](_0x4a18('0x23'),_0x17b687,_0x4a18('0x24'));logger[_0x4a18('0x25')](_0x4a18('0x26'),_0x17b687,'request\x20sent',JSON[_0x4a18('0x27')](_0x2b6822));if(_0x2b6822[_0x4a18('0x28')]){if(_0x2b6822['error'][_0x4a18('0x29')]===0x1f4){logger[_0x4a18('0x28')](_0x4a18('0x23'),_0x17b687,_0x2b6822[_0x4a18('0x28')][_0x4a18('0x2a')]);return _0x5bec0f(_0x2b6822[_0x4a18('0x28')][_0x4a18('0x2a')]);}logger[_0x4a18('0x28')](_0x4a18('0x23'),_0x17b687,_0x2b6822[_0x4a18('0x28')]['message']);return _0x5c7e4b(_0x2b6822['error'][_0x4a18('0x2a')]);}else{logger[_0x4a18('0x22')](_0x4a18('0x23'),_0x17b687,'request\x20sent');_0x5c7e4b(_0x2b6822[_0x4a18('0x2b')][_0x4a18('0x2a')]);}})['catch'](function(_0x230104){logger['error'](_0x4a18('0x23'),_0x17b687,_0x230104);_0x5bec0f(_0x230104);});});}function respondWithStatusCode(_0x5b1c79,_0x28bbee){_0x28bbee=_0x28bbee||0xcc;return function(_0x68d636){if(_0x68d636){return _0x5b1c79[_0x4a18('0x2c')](_0x28bbee);}return _0x5b1c79[_0x4a18('0x2d')](_0x28bbee)[_0x4a18('0x2e')]();};}function respondWithResult(_0x4d76ca,_0x200f66){_0x200f66=_0x200f66||0xc8;return function(_0x2ebf51){if(_0x2ebf51){return _0x4d76ca[_0x4a18('0x2d')](_0x200f66)[_0x4a18('0x2f')](_0x2ebf51);}};}function respondWithFilteredResult(_0x3eab01,_0x275c1a){return function(_0x59fd98){if(_0x59fd98){var _0x4df062=typeof _0x275c1a[_0x4a18('0x30')]==='undefined'&&typeof _0x275c1a[_0x4a18('0x31')]==='undefined';var _0x395309=_0x59fd98[_0x4a18('0x32')];var _0x5dbbde=_0x4df062?0x0:_0x275c1a[_0x4a18('0x30')];var _0x3197b4=_0x4df062?_0x59fd98[_0x4a18('0x32')]:_0x275c1a[_0x4a18('0x30')]+_0x275c1a['limit'];var _0x50a38d;if(_0x3197b4>=_0x395309){_0x3197b4=_0x395309;_0x50a38d=0xc8;}else{_0x50a38d=0xce;}_0x3eab01[_0x4a18('0x2d')](_0x50a38d);return _0x3eab01[_0x4a18('0x33')]('Content-Range',_0x5dbbde+'-'+_0x3197b4+'/'+_0x395309)['json'](_0x59fd98);}return null;};}function patchUpdates(_0x28f367){return function(_0x477467){try{jsonpatch['apply'](_0x477467,_0x28f367,!![]);}catch(_0x118609){return BPromise[_0x4a18('0x34')](_0x118609);}return _0x477467[_0x4a18('0x35')]();};}function saveUpdates(_0x4919f2,_0x57fc2e){return function(_0x4d7e1f){if(_0x4d7e1f){return _0x4d7e1f[_0x4a18('0x36')](_0x4919f2)[_0x4a18('0x21')](function(_0x1aa8f5){return _0x1aa8f5;});}return null;};}function removeEntity(_0x370cc9,_0x31dcda){return function(_0x46b73d){if(_0x46b73d){return _0x46b73d[_0x4a18('0x37')]()['then'](function(){var _0x4e115b=_0x46b73d[_0x4a18('0x38')]({'plain':!![]});var _0x2b4117='WhatsappAccounts';return db[_0x4a18('0x39')][_0x4a18('0x37')]({'where':{'type':_0x2b4117,'resourceId':_0x4e115b['id']}})[_0x4a18('0x21')](function(){return _0x46b73d;});})[_0x4a18('0x21')](function(){_0x370cc9[_0x4a18('0x2d')](0xcc)[_0x4a18('0x2e')]();});}};}function handleEntityNotFound(_0x549734,_0x4be933){return function(_0x34c643){if(!_0x34c643){_0x549734[_0x4a18('0x2c')](0x194);}return _0x34c643;};}function handleError(_0x5a7de7,_0x21322c){_0x21322c=_0x21322c||0x1f4;return function(_0x47e8ab){logger['error'](_0x47e8ab[_0x4a18('0x3a')]);if(_0x47e8ab[_0x4a18('0x3b')]){delete _0x47e8ab[_0x4a18('0x3b')];}_0x5a7de7[_0x4a18('0x2d')](_0x21322c)[_0x4a18('0x3c')](_0x47e8ab);};}exports[_0x4a18('0x3d')]=function(_0x591e9c,_0x5b9e50){var _0x58dd2d={'include':[{'model':db[_0x4a18('0x3e')],'as':_0x4a18('0x3f')}]},_0x4907e0={},_0x4934e2={'count':0x0,'rows':[]};var _0x1ac90b=_[_0x4a18('0x40')](db[_0x4a18('0x41')][_0x4a18('0x42')],function(_0x48532c){return{'name':_0x48532c[_0x4a18('0x43')],'type':_0x48532c[_0x4a18('0x44')][_0x4a18('0x45')]};});_0x4907e0[_0x4a18('0x46')]=_[_0x4a18('0x40')](_0x1ac90b,_0x4a18('0x3b'));_0x4907e0[_0x4a18('0x47')]=_[_0x4a18('0x48')](_0x591e9c[_0x4a18('0x47')]);_0x4907e0['filters']=_[_0x4a18('0x49')](_0x4907e0['model'],_0x4907e0[_0x4a18('0x47')]);_0x58dd2d[_0x4a18('0x4a')]=_[_0x4a18('0x49')](_0x4907e0[_0x4a18('0x46')],qs[_0x4a18('0x4b')](_0x591e9c[_0x4a18('0x47')]['fields']));_0x58dd2d[_0x4a18('0x4a')]=_0x58dd2d[_0x4a18('0x4a')][_0x4a18('0x4c')]?_0x58dd2d[_0x4a18('0x4a')]:_0x4907e0[_0x4a18('0x46')];if(!_0x591e9c[_0x4a18('0x47')]['hasOwnProperty'](_0x4a18('0x4d'))){_0x58dd2d[_0x4a18('0x31')]=qs[_0x4a18('0x31')](_0x591e9c[_0x4a18('0x47')][_0x4a18('0x31')]);_0x58dd2d[_0x4a18('0x30')]=qs[_0x4a18('0x30')](_0x591e9c['query'][_0x4a18('0x30')]);}_0x58dd2d[_0x4a18('0x4e')]=qs[_0x4a18('0x4f')](_0x591e9c['query']['sort']);_0x58dd2d[_0x4a18('0x50')]=qs[_0x4a18('0x51')](_[_0x4a18('0x52')](_0x591e9c[_0x4a18('0x47')],_0x4907e0[_0x4a18('0x51')]),_0x1ac90b);if(_0x591e9c[_0x4a18('0x47')][_0x4a18('0x53')]){_0x58dd2d[_0x4a18('0x50')]=_['merge'](_0x58dd2d[_0x4a18('0x50')],{'$or':_[_0x4a18('0x40')](_0x1ac90b,function(_0x54872f){if(_0x54872f['type']!=='VIRTUAL'){var _0x4e9f68={};_0x4e9f68[_0x54872f[_0x4a18('0x3b')]]={'$like':'%'+_0x591e9c[_0x4a18('0x47')][_0x4a18('0x53')]+'%'};return _0x4e9f68;}})});}_0x58dd2d=_[_0x4a18('0x54')]({},_0x58dd2d,_0x591e9c[_0x4a18('0x55')]);var _0x37013c={'where':_0x58dd2d['where']};return db[_0x4a18('0x41')][_0x4a18('0x32')](_0x37013c)[_0x4a18('0x21')](function(_0x47ed26){_0x4934e2[_0x4a18('0x32')]=_0x47ed26;if(_0x591e9c[_0x4a18('0x47')][_0x4a18('0x56')]){_0x58dd2d[_0x4a18('0x57')]=[{'all':!![]}];}return db[_0x4a18('0x41')][_0x4a18('0x58')](_0x58dd2d);})[_0x4a18('0x21')](function(_0x1ef4d7){_0x4934e2[_0x4a18('0x59')]=_0x1ef4d7;return _0x4934e2;})['then'](respondWithFilteredResult(_0x5b9e50,_0x58dd2d))['catch'](handleError(_0x5b9e50,null));};exports['show']=function(_0x5cbbe5,_0x34b24a){var _0x5c2a4c={'raw':![],'where':{'id':_0x5cbbe5[_0x4a18('0x5a')]['id']},'include':[{'model':db[_0x4a18('0x3e')],'as':_0x4a18('0x3f')}]},_0x20610b={};_0x20610b['model']=_[_0x4a18('0x48')](db[_0x4a18('0x41')]['rawAttributes']);_0x20610b[_0x4a18('0x47')]=_['keys'](_0x5cbbe5[_0x4a18('0x47')]);_0x20610b[_0x4a18('0x51')]=_[_0x4a18('0x49')](_0x20610b[_0x4a18('0x46')],_0x20610b['query']);_0x5c2a4c[_0x4a18('0x4a')]=_[_0x4a18('0x49')](_0x20610b[_0x4a18('0x46')],qs[_0x4a18('0x4b')](_0x5cbbe5[_0x4a18('0x47')][_0x4a18('0x4b')]));_0x5c2a4c['attributes']=_0x5c2a4c[_0x4a18('0x4a')]['length']?_0x5c2a4c[_0x4a18('0x4a')]:_0x20610b[_0x4a18('0x46')];if(_0x5cbbe5[_0x4a18('0x47')][_0x4a18('0x56')]){_0x5c2a4c[_0x4a18('0x57')]=[{'all':!![]}];}_0x5c2a4c=_[_0x4a18('0x54')]({},_0x5c2a4c,_0x5cbbe5[_0x4a18('0x55')]);return db['WhatsappAccount']['find'](_0x5c2a4c)[_0x4a18('0x21')](handleEntityNotFound(_0x34b24a,null))['then'](respondWithResult(_0x34b24a,null))[_0x4a18('0x5b')](handleError(_0x34b24a,null));};exports[_0x4a18('0x5c')]=function(_0x15e4d9,_0xa09471){return db[_0x4a18('0x41')][_0x4a18('0x5c')](_0x15e4d9[_0x4a18('0x5d')],{})[_0x4a18('0x21')](function(_0x3f53d4){var _0x120d02=_0x15e4d9['user']['get']({'plain':!![]});if(!_0x120d02)throw new Error(_0x4a18('0x5e'));if(_0x120d02[_0x4a18('0x5f')]===_0x4a18('0x60')){var _0xbc0e26=_0x3f53d4[_0x4a18('0x38')]({'plain':!![]});var _0x23bfaa=_0x4a18('0x61');return db[_0x4a18('0x62')]['find']({'where':{'name':_0x23bfaa,'userProfileId':_0x120d02[_0x4a18('0x63')]},'raw':!![]})[_0x4a18('0x21')](function(_0x36bce7){if(_0x36bce7&&_0x36bce7[_0x4a18('0x64')]===0x0){return db[_0x4a18('0x39')][_0x4a18('0x5c')]({'name':_0xbc0e26['name'],'resourceId':_0xbc0e26['id'],'type':_0x36bce7[_0x4a18('0x3b')],'sectionId':_0x36bce7['id']},{})[_0x4a18('0x21')](function(){return _0x3f53d4;});}else{return _0x3f53d4;}})['catch'](function(_0x11e5a6){logger[_0x4a18('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x11e5a6);throw _0x11e5a6;});}return _0x3f53d4;})['then'](respondWithResult(_0xa09471,0xc9))[_0x4a18('0x5b')](handleError(_0xa09471,null));};exports[_0x4a18('0x36')]=function(_0x43dd3b,_0x176848){if(_0x43dd3b['body']['id']){delete _0x43dd3b[_0x4a18('0x5d')]['id'];}return db[_0x4a18('0x41')][_0x4a18('0x65')]({'where':{'id':_0x43dd3b[_0x4a18('0x5a')]['id']},'include':[{'model':db[_0x4a18('0x3e')],'as':_0x4a18('0x3f')}]})[_0x4a18('0x21')](handleEntityNotFound(_0x176848,null))[_0x4a18('0x21')](saveUpdates(_0x43dd3b[_0x4a18('0x5d')],null))[_0x4a18('0x21')](respondWithResult(_0x176848,null))[_0x4a18('0x5b')](handleError(_0x176848,null));};exports[_0x4a18('0x37')]=function(_0x3e4f4e,_0x30a168){return db[_0x4a18('0x41')]['find']({'where':{'id':_0x3e4f4e[_0x4a18('0x5a')]['id']}})['then'](handleEntityNotFound(_0x30a168,null))[_0x4a18('0x21')](removeEntity(_0x30a168,null))[_0x4a18('0x5b')](handleError(_0x30a168,null));};exports[_0x4a18('0x66')]=function(_0x26a226,_0x4bed64){return db[_0x4a18('0x41')][_0x4a18('0x66')]()[_0x4a18('0x21')](respondWithResult(_0x4bed64,null))[_0x4a18('0x5b')](handleError(_0x4bed64,null));};exports['addDisposition']=function(_0x4a945c,_0x4d07a3,_0x4959d8){if(_0x4a945c[_0x4a18('0x5d')]['id']){delete _0x4a945c[_0x4a18('0x5d')]['id'];}return db[_0x4a18('0x41')]['find']({'where':{'id':_0x4a945c[_0x4a18('0x5a')]['id']}})[_0x4a18('0x21')](handleEntityNotFound(_0x4d07a3,null))[_0x4a18('0x21')](function(_0x589653){if(_0x589653){_0x4a945c[_0x4a18('0x5d')][_0x4a18('0x67')]=_0x589653['id'];return db['Disposition'][_0x4a18('0x5c')](_0x4a945c[_0x4a18('0x5d')]);}})[_0x4a18('0x21')](respondWithResult(_0x4d07a3,null))['catch'](handleError(_0x4d07a3,null));};exports[_0x4a18('0x68')]=function(_0xec6802,_0x2b2000,_0x17f8d9){var _0x589e24={'raw':![],'where':{}};var _0x32b798={};var _0x251b24={'count':0x0,'rows':[]};return db[_0x4a18('0x41')][_0x4a18('0x69')]({'where':{'id':_0xec6802[_0x4a18('0x5a')]['id']}})[_0x4a18('0x21')](handleEntityNotFound(_0x2b2000,null))['then'](function(_0xa8bd8f){if(_0xa8bd8f){_0x32b798['model']=_['keys'](db['Disposition']['rawAttributes']);_0x32b798[_0x4a18('0x47')]=_[_0x4a18('0x48')](_0xec6802[_0x4a18('0x47')]);_0x32b798[_0x4a18('0x51')]=_[_0x4a18('0x49')](_0x32b798[_0x4a18('0x46')],_0x32b798[_0x4a18('0x47')]);_0x589e24[_0x4a18('0x4a')]=_['intersection'](_0x32b798[_0x4a18('0x46')],qs['fields'](_0xec6802['query'][_0x4a18('0x4b')]));_0x589e24[_0x4a18('0x4a')]=_0x589e24['attributes'][_0x4a18('0x4c')]?_0x589e24[_0x4a18('0x4a')]:_0x32b798['model'];if(!_0xec6802[_0x4a18('0x47')]['hasOwnProperty'](_0x4a18('0x4d'))){_0x589e24['limit']=qs[_0x4a18('0x31')](_0xec6802[_0x4a18('0x47')][_0x4a18('0x31')]);_0x589e24[_0x4a18('0x30')]=qs[_0x4a18('0x30')](_0xec6802['query'][_0x4a18('0x30')]);}_0x589e24[_0x4a18('0x4e')]=qs[_0x4a18('0x4f')](_0xec6802[_0x4a18('0x47')]['sort']);_0x589e24['where']=qs['filters'](_['pick'](_0xec6802[_0x4a18('0x47')],_0x32b798[_0x4a18('0x51')]));_0x589e24[_0x4a18('0x50')]['WhatsappAccountId']=_0xa8bd8f['id'];if(_0xec6802[_0x4a18('0x47')]['filter']){_0x589e24[_0x4a18('0x50')]=_[_0x4a18('0x54')](_0x589e24[_0x4a18('0x50')],{'$or':_['map'](_0x589e24[_0x4a18('0x4a')],function(_0x191d1d){var _0x2ba44c={};_0x2ba44c[_0x191d1d]={'$like':'%'+_0xec6802[_0x4a18('0x47')][_0x4a18('0x53')]+'%'};return _0x2ba44c;})});}_0x589e24=_['merge']({},_0x589e24,_0xec6802['options']);return db[_0x4a18('0x6a')][_0x4a18('0x32')]({'where':_0x589e24[_0x4a18('0x50')]})[_0x4a18('0x21')](function(_0x28be69){_0x251b24['count']=_0x28be69;if(_0xec6802[_0x4a18('0x47')][_0x4a18('0x56')]){_0x589e24['include']=[{'all':!![]}];}return db[_0x4a18('0x6a')][_0x4a18('0x58')](_0x589e24);})[_0x4a18('0x21')](function(_0x1d6e5a){_0x251b24[_0x4a18('0x59')]=_0x1d6e5a;return _0x251b24;});}})[_0x4a18('0x21')](respondWithFilteredResult(_0x2b2000,_0x589e24))[_0x4a18('0x5b')](handleError(_0x2b2000,null));};exports['removeDispositions']=function(_0x977bb7,_0x4f9fd7,_0x21cd8d){return db['WhatsappAccount']['find']({'where':{'id':_0x977bb7[_0x4a18('0x5a')]['id']}})[_0x4a18('0x21')](handleEntityNotFound(_0x4f9fd7,null))[_0x4a18('0x21')](function(_0x2b881c){if(_0x2b881c){return _0x2b881c[_0x4a18('0x6b')](_0x977bb7['query'][_0x4a18('0x6c')]);}})[_0x4a18('0x21')](respondWithStatusCode(_0x4f9fd7,null))[_0x4a18('0x5b')](handleError(_0x4f9fd7,null));};exports[_0x4a18('0x6d')]=function(_0x115964,_0x1f84a0,_0x568af0){if(_0x115964[_0x4a18('0x5d')]['id']){delete _0x115964[_0x4a18('0x5d')]['id'];}return db['WhatsappAccount'][_0x4a18('0x65')]({'where':{'id':_0x115964[_0x4a18('0x5a')]['id']}})[_0x4a18('0x21')](handleEntityNotFound(_0x1f84a0,null))[_0x4a18('0x21')](function(_0xff3ccb){if(_0xff3ccb){_0x115964[_0x4a18('0x5d')]['WhatsappAccountId']=_0xff3ccb['id'];return db[_0x4a18('0x6e')][_0x4a18('0x5c')](_0x115964[_0x4a18('0x5d')]);}})['then'](respondWithResult(_0x1f84a0,null))[_0x4a18('0x5b')](handleError(_0x1f84a0,null));};exports[_0x4a18('0x6f')]=function(_0x5af43d,_0x1058d2,_0x1b0fb8){var _0x59f579={'raw':![],'where':{}};var _0x14d9e6={};var _0x3d43e3={'count':0x0,'rows':[]};return db[_0x4a18('0x41')]['findOne']({'where':{'id':_0x5af43d[_0x4a18('0x5a')]['id']}})[_0x4a18('0x21')](handleEntityNotFound(_0x1058d2,null))[_0x4a18('0x21')](function(_0x27e75d){if(_0x27e75d){_0x14d9e6[_0x4a18('0x46')]=_[_0x4a18('0x48')](db[_0x4a18('0x6e')][_0x4a18('0x42')]);_0x14d9e6[_0x4a18('0x47')]=_[_0x4a18('0x48')](_0x5af43d[_0x4a18('0x47')]);_0x14d9e6[_0x4a18('0x51')]=_[_0x4a18('0x49')](_0x14d9e6[_0x4a18('0x46')],_0x14d9e6[_0x4a18('0x47')]);_0x59f579['attributes']=_[_0x4a18('0x49')](_0x14d9e6[_0x4a18('0x46')],qs[_0x4a18('0x4b')](_0x5af43d[_0x4a18('0x47')][_0x4a18('0x4b')]));_0x59f579[_0x4a18('0x4a')]=_0x59f579[_0x4a18('0x4a')][_0x4a18('0x4c')]?_0x59f579['attributes']:_0x14d9e6[_0x4a18('0x46')];if(!_0x5af43d[_0x4a18('0x47')][_0x4a18('0x70')]('nolimit')){_0x59f579[_0x4a18('0x31')]=qs[_0x4a18('0x31')](_0x5af43d[_0x4a18('0x47')]['limit']);_0x59f579[_0x4a18('0x30')]=qs['offset'](_0x5af43d[_0x4a18('0x47')]['offset']);}_0x59f579[_0x4a18('0x4e')]=qs[_0x4a18('0x4f')](_0x5af43d[_0x4a18('0x47')][_0x4a18('0x4f')]);_0x59f579[_0x4a18('0x50')]=qs[_0x4a18('0x51')](_[_0x4a18('0x52')](_0x5af43d[_0x4a18('0x47')],_0x14d9e6['filters']));_0x59f579['where'][_0x4a18('0x67')]=_0x27e75d['id'];if(_0x5af43d['query'][_0x4a18('0x53')]){_0x59f579[_0x4a18('0x50')]=_[_0x4a18('0x54')](_0x59f579[_0x4a18('0x50')],{'$or':_['map'](_0x59f579['attributes'],function(_0x2941ca){var _0x2df65f={};_0x2df65f[_0x2941ca]={'$like':'%'+_0x5af43d[_0x4a18('0x47')][_0x4a18('0x53')]+'%'};return _0x2df65f;})});}_0x59f579=_[_0x4a18('0x54')]({},_0x59f579,_0x5af43d[_0x4a18('0x55')]);return db[_0x4a18('0x6e')]['count']({'where':_0x59f579[_0x4a18('0x50')]})[_0x4a18('0x21')](function(_0x1c5711){_0x3d43e3[_0x4a18('0x32')]=_0x1c5711;if(_0x5af43d[_0x4a18('0x47')][_0x4a18('0x56')]){_0x59f579[_0x4a18('0x57')]=[{'all':!![]}];}return db[_0x4a18('0x6e')][_0x4a18('0x58')](_0x59f579);})[_0x4a18('0x21')](function(_0x3b29e0){_0x3d43e3['rows']=_0x3b29e0;return _0x3d43e3;});}})[_0x4a18('0x21')](respondWithFilteredResult(_0x1058d2,_0x59f579))[_0x4a18('0x5b')](handleError(_0x1058d2,null));};exports[_0x4a18('0x71')]=function(_0x1c7ee3,_0x33d4cb,_0xc49cf7){return db[_0x4a18('0x41')][_0x4a18('0x65')]({'where':{'id':_0x1c7ee3[_0x4a18('0x5a')]['id']}})[_0x4a18('0x21')](handleEntityNotFound(_0x33d4cb,null))['then'](function(_0x3e81df){if(_0x3e81df){return _0x3e81df[_0x4a18('0x71')](_0x1c7ee3[_0x4a18('0x47')][_0x4a18('0x6c')]);}})[_0x4a18('0x21')](respondWithStatusCode(_0x33d4cb,null))[_0x4a18('0x5b')](handleError(_0x33d4cb,null));};exports[_0x4a18('0x72')]=function(_0x4db625,_0x56c027,_0x2bcc02){return db[_0x4a18('0x41')][_0x4a18('0x65')]({'where':{'id':_0x4db625[_0x4a18('0x5a')]['id']}})[_0x4a18('0x21')](handleEntityNotFound(_0x56c027,null))['then'](function(_0x25fea5){if(_0x25fea5){return _0x25fea5[_0x4a18('0x72')](_0x4db625[_0x4a18('0x5d')][_0x4a18('0x6c')],_[_0x4a18('0x73')](_0x4db625[_0x4a18('0x5d')],[_0x4a18('0x6c'),'id'])||{})[_0x4a18('0x74')](function(_0x3c9636){for(var _0xef13d1=0x0;_0xef13d1<_0x4db625[_0x4a18('0x5d')]['ids'][_0x4a18('0x4c')];_0xef13d1+=0x1){socket['emit'](_0x4a18('0x75'),{'UserId':Number(_0x4db625[_0x4a18('0x5d')]['ids'][_0xef13d1]),'WhatsappAccountId':Number(_0x4db625[_0x4a18('0x5a')]['id'])});}return _0x3c9636;});}})[_0x4a18('0x21')](respondWithResult(_0x56c027,null))['catch'](handleError(_0x56c027,null));};exports['removeAgents']=function(_0x401b5c,_0x455162,_0x486c7f){return db['WhatsappAccount']['find']({'where':{'id':_0x401b5c[_0x4a18('0x5a')]['id']}})['then'](handleEntityNotFound(_0x455162,null))[_0x4a18('0x21')](function(_0x208ca9){if(_0x208ca9){return _0x208ca9['removeAgents'](_0x401b5c[_0x4a18('0x47')][_0x4a18('0x6c')])[_0x4a18('0x21')](function(){if(_[_0x4a18('0x76')](_0x401b5c[_0x4a18('0x47')]['ids'])){for(var _0x1ce694=0x0;_0x1ce694<_0x401b5c['query'][_0x4a18('0x6c')][_0x4a18('0x4c')];_0x1ce694+=0x1){socket[_0x4a18('0x77')](_0x4a18('0x78'),{'UserId':Number(_0x401b5c[_0x4a18('0x47')][_0x4a18('0x6c')][_0x1ce694]),'WhatsappAccountId':Number(_0x401b5c[_0x4a18('0x5a')]['id'])});}}else{socket[_0x4a18('0x77')](_0x4a18('0x78'),{'UserId':Number(_0x401b5c['query'][_0x4a18('0x6c')]),'WhatsappAccountId':Number(_0x401b5c[_0x4a18('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x455162,null))['catch'](handleError(_0x455162,null));};exports[_0x4a18('0x79')]=function(_0x975687,_0x4d39e3,_0x10d31f){var _0x10e8b8={};var _0x4a3ffb={};var _0x3d9cd9;var _0x42e9a6;return db[_0x4a18('0x41')][_0x4a18('0x69')]({'where':{'id':_0x975687[_0x4a18('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4d39e3,null))[_0x4a18('0x21')](function(_0x5dcca9){if(_0x5dcca9){_0x3d9cd9=_0x5dcca9;_0x4a3ffb['model']=_[_0x4a18('0x48')](db[_0x4a18('0x7a')][_0x4a18('0x42')]);_0x4a3ffb[_0x4a18('0x47')]=_[_0x4a18('0x48')](_0x975687[_0x4a18('0x47')]);_0x4a3ffb[_0x4a18('0x51')]=_[_0x4a18('0x49')](_0x4a3ffb[_0x4a18('0x46')],_0x4a3ffb[_0x4a18('0x47')]);_0x10e8b8[_0x4a18('0x4a')]=_[_0x4a18('0x49')](_0x4a3ffb['model'],qs['fields'](_0x975687[_0x4a18('0x47')]['fields']));_0x10e8b8[_0x4a18('0x4a')]=_0x10e8b8[_0x4a18('0x4a')][_0x4a18('0x4c')]?_0x10e8b8[_0x4a18('0x4a')]:_0x4a3ffb[_0x4a18('0x46')];_0x10e8b8['order']=qs['sort'](_0x975687[_0x4a18('0x47')][_0x4a18('0x4f')]);_0x10e8b8['where']=qs[_0x4a18('0x51')](_[_0x4a18('0x52')](_0x975687[_0x4a18('0x47')],_0x4a3ffb[_0x4a18('0x51')]));if(_0x975687['query'][_0x4a18('0x53')]){_0x10e8b8[_0x4a18('0x50')]=_[_0x4a18('0x54')](_0x10e8b8['where'],{'$or':_[_0x4a18('0x40')](_0x10e8b8[_0x4a18('0x4a')],function(_0x1ab67d){var _0x488e8b={};_0x488e8b[_0x1ab67d]={'$like':'%'+_0x975687[_0x4a18('0x47')]['filter']+'%'};return _0x488e8b;})});}_0x10e8b8=_[_0x4a18('0x54')]({},_0x10e8b8,_0x975687[_0x4a18('0x55')]);return _0x3d9cd9['getAgents'](_0x10e8b8);}})[_0x4a18('0x21')](function(_0x423ca5){if(_0x423ca5){_0x42e9a6=_0x423ca5[_0x4a18('0x4c')];if(!_0x975687[_0x4a18('0x47')][_0x4a18('0x70')]('nolimit')){_0x10e8b8[_0x4a18('0x31')]=qs['limit'](_0x975687[_0x4a18('0x47')][_0x4a18('0x31')]);_0x10e8b8[_0x4a18('0x30')]=qs['offset'](_0x975687['query'][_0x4a18('0x30')]);}return _0x3d9cd9[_0x4a18('0x79')](_0x10e8b8);}})['then'](function(_0x2d0966){if(_0x2d0966){return _0x2d0966?{'count':_0x42e9a6,'rows':_0x2d0966}:null;}})[_0x4a18('0x21')](respondWithResult(_0x4d39e3,null))['catch'](handleError(_0x4d39e3,null));};exports[_0x4a18('0x7b')]=function(_0x155846,_0x189324){var _0xb9f0d7=_0x155846[_0x4a18('0x5a')]['id'];var _0x2dfed7=_0x155846[_0x4a18('0x5d')];var _0x2498c5=0xc8;var _0x21bcf3=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x4a18('0x7c')][_0x4a18('0x7d')][_0x4a18('0x7e')][_0x4a18('0x7f')]},function(_0x31f048){return db['WhatsappAccount'][_0x4a18('0x69')]({'where':{'id':_0xb9f0d7},'transaction':_0x31f048})[_0x4a18('0x21')](function(_0x4e187f){if(_0x4e187f){return db['WhatsappApplication'][_0x4a18('0x37')]({'where':{'WhatsappAccountId':_0xb9f0d7},'transaction':_0x31f048})['then'](function(){var _0x3b5261=_[_0x4a18('0x40')](_0x2dfed7,function(_0x102b0e){_0x102b0e['WhatsappAccountId']=_0xb9f0d7;return _0x102b0e;});return db[_0x4a18('0x80')]['bulkCreate'](_0x3b5261,{'transaction':_0x31f048});});}else{_0x2498c5=0x194;_0x21bcf3=[];}});})['then'](function(){if(_0x2498c5!==0x194){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0xb9f0d7},'order':_0x4a18('0x81')})[_0x4a18('0x21')](function(_0x44a033){_0x21bcf3=_0x44a033;});}})[_0x4a18('0x5b')](function(_0x26988e){_0x2498c5=0x1f4;logger[_0x4a18('0x28')](_0x26988e[_0x4a18('0x3a')]);if(_0x26988e['name']){delete _0x26988e[_0x4a18('0x3b')];}_0x21bcf3=_0x26988e;})[_0x4a18('0x82')](function(){if(_0x21bcf3===null){_0x189324['sendStatus'](_0x2498c5);}else{if(_0x2498c5===0x1f4){_0x189324[_0x4a18('0x2d')](_0x2498c5)[_0x4a18('0x3c')](_0x21bcf3);}else{_0x189324['status'](_0x2498c5)[_0x4a18('0x2f')](_0x21bcf3);}}});};exports['getApplications']=function(_0x12be5b,_0x20e3be,_0x4e7578){var _0x521a17={};var _0x8da094={};var _0x5a7296;var _0x3547bc;return db[_0x4a18('0x41')][_0x4a18('0x69')]({'where':{'id':_0x12be5b[_0x4a18('0x5a')]['id']}})[_0x4a18('0x21')](handleEntityNotFound(_0x20e3be,null))[_0x4a18('0x21')](function(_0x2a6b2f){if(_0x2a6b2f){_0x5a7296=_0x2a6b2f;_0x8da094[_0x4a18('0x46')]=_['keys'](db[_0x4a18('0x80')][_0x4a18('0x42')]);_0x8da094[_0x4a18('0x47')]=_[_0x4a18('0x48')](_0x12be5b[_0x4a18('0x47')]);_0x8da094['filters']=_[_0x4a18('0x49')](_0x8da094['model'],_0x8da094[_0x4a18('0x47')]);_0x521a17[_0x4a18('0x4a')]=_[_0x4a18('0x49')](_0x8da094[_0x4a18('0x46')],qs[_0x4a18('0x4b')](_0x12be5b[_0x4a18('0x47')][_0x4a18('0x4b')]));_0x521a17[_0x4a18('0x4a')]=_0x521a17[_0x4a18('0x4a')][_0x4a18('0x4c')]?_0x521a17[_0x4a18('0x4a')]:_0x8da094[_0x4a18('0x46')];_0x521a17[_0x4a18('0x4e')]=qs[_0x4a18('0x4f')](_0x12be5b['query'][_0x4a18('0x4f')]);_0x521a17[_0x4a18('0x50')]=qs['filters'](_[_0x4a18('0x52')](_0x12be5b[_0x4a18('0x47')],_0x8da094['filters']));if(_0x12be5b['query'][_0x4a18('0x53')]){_0x521a17[_0x4a18('0x50')]=_[_0x4a18('0x54')](_0x521a17[_0x4a18('0x50')],{'$or':_[_0x4a18('0x40')](_0x521a17[_0x4a18('0x4a')],function(_0x2b4d47){var _0x4108e6={};_0x4108e6[_0x2b4d47]={'$like':'%'+_0x12be5b[_0x4a18('0x47')][_0x4a18('0x53')]+'%'};return _0x4108e6;})});}_0x521a17=_[_0x4a18('0x54')]({},_0x521a17,_0x12be5b['options']);return _0x5a7296[_0x4a18('0x83')](_0x521a17);}})[_0x4a18('0x21')](function(_0x5c3ab9){if(_0x5c3ab9){_0x3547bc=_0x5c3ab9[_0x4a18('0x4c')];if(!_0x12be5b[_0x4a18('0x47')][_0x4a18('0x70')](_0x4a18('0x4d'))){_0x521a17[_0x4a18('0x31')]=qs[_0x4a18('0x31')](_0x12be5b[_0x4a18('0x47')][_0x4a18('0x31')]);_0x521a17[_0x4a18('0x30')]=qs['offset'](_0x12be5b[_0x4a18('0x47')][_0x4a18('0x30')]);}return _0x5a7296[_0x4a18('0x83')](_0x521a17);}})['then'](function(_0x567562){if(_0x567562){return _0x567562?{'count':_0x3547bc,'rows':_0x567562}:null;}})[_0x4a18('0x21')](respondWithResult(_0x20e3be,null))[_0x4a18('0x5b')](handleError(_0x20e3be,null));};exports[_0x4a18('0x84')]=function(_0x56dbeb,_0x295f3a,_0x34b023){var _0x8bfa2d={'channel':_0x4a18('0x85')};var _0x188189=[];var _0x415a15=[];var _0x51ff27={};return db[_0x4a18('0x41')][_0x4a18('0x65')]({'where':{'id':_0x56dbeb[_0x4a18('0x5a')]['id']},'include':[{'model':db[_0x4a18('0x80')],'as':_0x4a18('0x86')}]})[_0x4a18('0x21')](handleEntityNotFound(_0x295f3a,null))['then'](function(_0xbc54f8){_0x8bfa2d[_0x4a18('0x87')]=_0xbc54f8;if(_0x8bfa2d[_0x4a18('0x87')]&&_0x8bfa2d[_0x4a18('0x87')][_0x4a18('0x44')]==='sinch'&&_0x56dbeb[_0x4a18('0x5d')][_0x4a18('0x88')]){if(_0x56dbeb[_0x4a18('0x5d')][_0x4a18('0x88')]['length']===0x0)return;if(_0x56dbeb[_0x4a18('0x5d')]['statuses'][0x0][_0x4a18('0x89')]!==_0x4a18('0x8a'))return;return db[_0x4a18('0x8b')]['update']({'read':!![],'readAt':_0x56dbeb[_0x4a18('0x5d')][_0x4a18('0x88')][0x0][_0x4a18('0x8c')]},{'where':{'messageId':_0x56dbeb[_0x4a18('0x5d')][_0x4a18('0x88')][0x0]['message_id']},'individualHooks':!![]})[_0x4a18('0x21')](function(_0x41c13f){return _0x295f3a['status'](0xc8)[_0x4a18('0x2f')](_0x41c13f);});}_0x8bfa2d[_0x4a18('0x8d')]=_[_0x4a18('0x8e')](_0xbc54f8[_0x4a18('0x86')],[_0x4a18('0x81')],[_0x4a18('0x8f')]);if(_0x8bfa2d[_0x4a18('0x87')][_0x4a18('0x86')]){delete _0x8bfa2d[_0x4a18('0x87')][_0x4a18('0x86')];}return db[_0x4a18('0x90')]['describe']()['then'](function(_0x46d7ea){if(!_0x46d7ea){throw new db[(_0x4a18('0x91'))]['ValidationError'](_0x4a18('0x92'));}_0x188189=_['difference'](_[_0x4a18('0x48')](_0x46d7ea),[_0x4a18('0x93'),_0x4a18('0x94')]);_0x415a15=_[_0x4a18('0x95')](_[_0x4a18('0x48')](_0x46d7ea),[_0x4a18('0x93'),_0x4a18('0x94'),_0x4a18('0x96'),_0x4a18('0x97')]);_0x8bfa2d[_0x4a18('0x5d')]={'mapKey':'mobile'};if(_0x8bfa2d['account']&&_0x8bfa2d[_0x4a18('0x87')][_0x4a18('0x44')]==='twilio'){_0x8bfa2d['body'][_0x4a18('0x98')]=_0x56dbeb['body']['From']['replace'](_0x4a18('0x99'),'');_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x5d')]=_0x56dbeb['body']['Body'];_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x9a')]=_0x56dbeb[_0x4a18('0x5d')]['MessageSid'];}if(_0x8bfa2d[_0x4a18('0x87')]&&_0x8bfa2d[_0x4a18('0x87')][_0x4a18('0x44')]===_0x4a18('0x9b')){_0x8bfa2d[_0x4a18('0x5d')]['from']=_0x56dbeb[_0x4a18('0x5d')]['notifications'][0x0][_0x4a18('0x98')];_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x5d')]=_0x56dbeb['body']['notifications'][0x0]['message']['body'];_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x9a')]=_0x56dbeb[_0x4a18('0x5d')][_0x4a18('0x9c')][0x0][_0x4a18('0x9d')];}if(_0x8bfa2d['body']['id']){delete _0x8bfa2d[_0x4a18('0x5d')]['id'];}if(_[_0x4a18('0x9e')](_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x98')])){throw new db['Sequelize']['ValidationError'](_0x4a18('0x9f'));}if(_['isNil'](_0x8bfa2d['body'][_0x4a18('0x5d')])||_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x5d')]===''){throw new db[(_0x4a18('0x91'))][(_0x4a18('0xa0'))](_0x4a18('0xa1'));}if(_[_0x4a18('0x9e')](_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0xa2')])){throw new db[(_0x4a18('0x91'))][(_0x4a18('0xa0'))](_0x4a18('0xa3')+_0x415a15);}if(!_['includes'](_0x415a15,_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0xa2')])){throw new db['Sequelize'][(_0x4a18('0xa0'))](_0x4a18('0xa4')+_0x415a15);}_0x51ff27[_0x8bfa2d[_0x4a18('0x5d')]['mapKey']]=_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x98')];return db[_0x4a18('0xa5')]['find']({'where':{'id':_0x8bfa2d[_0x4a18('0x87')][_0x4a18('0x97')]},'include':[{'model':db[_0x4a18('0x90')],'as':_0x4a18('0xa6'),'where':_0x51ff27,'limit':0x1,'order':[[_0x4a18('0x94'),_0x4a18('0xa7')]]}]});})[_0x4a18('0x21')](handleEntityNotFound(_0x295f3a,null))[_0x4a18('0x21')](function(_0x5013b4){if(_0x5013b4){_0x8bfa2d[_0x4a18('0xa8')]=_['omit'](_0x5013b4,['Contacts']);if(_0x5013b4[_0x4a18('0xa6')][_0x4a18('0x4c')]){return _0x5013b4[_0x4a18('0xa6')][0x0];}var _0x58b28f=_['defaults'](_0x8bfa2d[_0x4a18('0x5d')],{'firstName':_0x8bfa2d['body']['from'],'ListId':_0x5013b4['id']});_0x58b28f[_0x8bfa2d[_0x4a18('0x5d')]['mapKey']]=_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x98')];return db[_0x4a18('0x90')][_0x4a18('0x5c')](_0x58b28f,{'fields':_0x188189,'raw':!![]});}})[_0x4a18('0x21')](handleEntityNotFound(_0x295f3a,null))['then'](function(_0x13c792){if(_0x13c792){_0x8bfa2d[_0x4a18('0xa9')]=_0x13c792;var _0x1a29b0={'ContactId':_0x13c792['id'],'phone':_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x98')],'WhatsappAccountId':_0x56dbeb['params']['id']};var _0x58ea44={'ContactId':_0x13c792['id'],'WhatsappAccountId':_0x56dbeb[_0x4a18('0x5a')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x4a18('0x65')]({'where':_0x58ea44})[_0x4a18('0x21')](function(_0x1e1d5f){if(_0x1e1d5f){return[_0x1e1d5f,![]];}return db[_0x4a18('0xaa')][_0x4a18('0x5c')](_0x1a29b0)[_0x4a18('0x21')](function(_0x786ce8){return[_0x786ce8,!![]];});});}})[_0x4a18('0x74')](function(_0xf6fab4,_0x1baed6){_0x8bfa2d[_0x4a18('0xab')]=_0xf6fab4[_0x4a18('0x38')]({'plain':!![]});_0x8bfa2d[_0x4a18('0xab')][_0x4a18('0xac')]=![];if(_0x1baed6){if(_0x8bfa2d['account'][_0x4a18('0xad')]){_0x8bfa2d['applications']['push']({'id':0x0,'priority':_0x8bfa2d[_0x4a18('0x8d')][_0x4a18('0x4c')]+0x1,'app':'close','appdata':'unmanaged','interval':'*,*,*,*'});}_0x8bfa2d[_0x4a18('0xab')][_0x4a18('0xac')]=!![];}return db[_0x4a18('0x8b')][_0x4a18('0x5c')]({'phone':_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0x98')],'messageId':_0x8bfa2d['body'][_0x4a18('0x9a')],'body':_0x8bfa2d['body'][_0x4a18('0x5d')],'WhatsappAccountId':_0x56dbeb[_0x4a18('0x5a')]['id'],'WhatsappInteractionId':_0xf6fab4['id'],'direction':'in','ContactId':_0xf6fab4[_0x4a18('0xae')],'AttachmentId':_0x8bfa2d[_0x4a18('0x5d')][_0x4a18('0xaf')]});})[_0x4a18('0x21')](function(_0xb53a0e){_0x8bfa2d['message']=_0xb53a0e;if(!_0x8bfa2d[_0x4a18('0xab')][_0x4a18('0xb0')])return;return db[_0x4a18('0x7a')]['find']({'attributes':['id',_0x4a18('0x3b')],'where':{'id':_0x8bfa2d[_0x4a18('0xab')][_0x4a18('0xb0')]}});})[_0x4a18('0x21')](function(_0x4672df){if(_0x4672df){_0x8bfa2d[_0x4a18('0x8d')][_0x4a18('0xb1')]({'id':0x0,'priority':0x0,'app':_0x4a18('0xb2'),'appdata':_0x4672df[_0x4a18('0x3b')]+','+(_0x8bfa2d[_0x4a18('0x87')][_0x4a18('0xb3')]||0xa),'interval':'*,*,*,*'});}if(!_0x8bfa2d['interaction'][_0x4a18('0xb4')])return;return db[_0x4a18('0xb5')][_0x4a18('0x65')]({'attributes':['id',_0x4a18('0x3b')],'where':{'id':_0x8bfa2d[_0x4a18('0xab')][_0x4a18('0xb4')]}});})[_0x4a18('0x21')](function(_0x2bf9a7){if(_0x2bf9a7){_0x8bfa2d[_0x4a18('0x8d')]['unshift']({'id':0x0,'priority':0x1,'app':_0x4a18('0xb6'),'appdata':_0x2bf9a7['name']+','+(_0x8bfa2d[_0x4a18('0x87')][_0x4a18('0xb7')]||0x12c),'interval':_0x4a18('0xb8')});}return respondWithRpcPromise(_0x4a18('0xb9'),_0x4a18('0xba'),_0x8bfa2d);})[_0x4a18('0x21')](function(_0x44bb2b){if(_0x44bb2b){var _0x2b4bfd=0xc8;var _0x5d7ad8=_0x4a18('0xbb');logger[_0x4a18('0x22')](_0x4a18('0x26'),_0x5d7ad8,_0x2b4bfd,_0x4a18('0xbc'));logger[_0x4a18('0x25')](_0x4a18('0xbd'),_0x5d7ad8,_0x2b4bfd,_0x4a18('0xbc'),JSON['stringify'](_0x44bb2b));if(_0x8bfa2d[_0x4a18('0x87')]['type']==='twilio'){return _0x295f3a[_0x4a18('0x2d')](_0x2b4bfd)[_0x4a18('0x33')](_0x4a18('0xbe'),'text/xml')[_0x4a18('0x3c')](_0x4a18('0xbf'));}else{return _0x295f3a[_0x4a18('0x2d')](_0x2b4bfd)[_0x4a18('0x2f')](_0x44bb2b);}}});})[_0x4a18('0x5b')](handleError(_0x295f3a,null));};exports[_0x4a18('0x3c')]=function(_0x36770a,_0x29c844,_0x13c25f){var _0x1f1838,_0xc1b803,_0x50ca25;if(_['isNil'](_0x36770a[_0x4a18('0x5d')][_0x4a18('0x5d')])||_0x36770a[_0x4a18('0x5d')][_0x4a18('0x5d')]===''){throw new db[(_0x4a18('0x91'))][(_0x4a18('0xa0'))](_0x4a18('0xa1'));}if(_[_0x4a18('0x9e')](_0x36770a[_0x4a18('0x5d')]['to'])){throw new db[(_0x4a18('0x91'))][(_0x4a18('0xa0'))](_0x4a18('0xc0'));}_0x1f1838=_0x36770a[_0x4a18('0x5d')]['to'];return db[_0x4a18('0x41')]['find']({'where':{'id':_0x36770a[_0x4a18('0x5a')]['id']},'include':[{'model':db[_0x4a18('0xa5')],'as':'List','include':[{'model':db[_0x4a18('0x90')],'as':_0x4a18('0xa6'),'where':{'mobile':_0x1f1838},'limit':0x1,'order':[[_0x4a18('0x94'),_0x4a18('0xa7')]]}]}]})[_0x4a18('0x21')](handleEntityNotFound(_0x29c844,null))['then'](function(_0x4a1145){if(_0x4a1145&&_0x4a1145['List']){_0xc1b803=_0x4a1145[_0x4a18('0x38')]({'plain':!![]});if(_0xc1b803[_0x4a18('0xc1')]&&_0xc1b803[_0x4a18('0xc1')]['Contacts'][_0x4a18('0x4c')]){return _0xc1b803[_0x4a18('0xc1')][_0x4a18('0xa6')][0x0];}return db[_0x4a18('0x90')][_0x4a18('0x5c')](_[_0x4a18('0x1a')](_0x36770a[_0x4a18('0x5d')],{'firstName':_0x1f1838,'mobile':_0x1f1838,'phone':_0x1f1838,'ListId':_0xc1b803[_0x4a18('0x97')]}));}})[_0x4a18('0x21')](handleEntityNotFound(_0x29c844,null))[_0x4a18('0x21')](function(_0x7f3b3d){if(_0x7f3b3d){_0x50ca25=_0x7f3b3d;return db[_0x4a18('0xaa')][_0x4a18('0x65')]({'where':{'ContactId':_0x50ca25['id'],'closed':![],'WhatsappAccountId':_0xc1b803['id']}})[_0x4a18('0x21')](function(_0x2c6dc9){if(_0x2c6dc9){return[_0x2c6dc9,![]];}return db['WhatsappInteraction']['create']({'UserId':_0x36770a['user']['id'],'ContactId':_0x50ca25['id'],'WhatsappAccountId':_0xc1b803['id'],'phone':_0x1f1838,'firstMsgDirection':'out','Messages':[_[_0x4a18('0x54')](_0x36770a[_0x4a18('0x5d')],{'read':![],'body':_0x36770a[_0x4a18('0x5d')]['body'],'phone':_0x1f1838,'WhatsappAccountId':_0xc1b803['id'],'UserId':_0x36770a['user']['id'],'ContactId':_0x50ca25['id']})]},{'include':[{'model':db[_0x4a18('0x8b')],'as':_0x4a18('0xc2')}]})['then'](function(_0x3cffce){return[_0x3cffce,!![]];});});}})['spread'](function(_0x381b97,_0x27ee94){if(_0x27ee94){return _0x381b97;}return db[_0x4a18('0x8b')][_0x4a18('0x5c')](_[_0x4a18('0x54')](_0x36770a[_0x4a18('0x5d')],{'read':![],'body':_0x36770a['body'][_0x4a18('0x5d')],'phone':_0x1f1838,'WhatsappAccountId':_0xc1b803['id'],'WhatsappInteractionId':_0x381b97['id'],'UserId':_0x36770a[_0x4a18('0x60')]['id'],'ContactId':_0x50ca25['id']}))['then'](function(_0x50e412){_0x381b97[_0x4a18('0xc3')]['Messages']=[];_0x381b97[_0x4a18('0xc3')][_0x4a18('0xc2')][_0x4a18('0xc4')](_0x50e412[_0x4a18('0xc3')]);return _0x381b97;});})[_0x4a18('0x21')](respondWithResult(_0x29c844,null))[_0x4a18('0x5b')](handleError(_0x29c844,null));};
\ No newline at end of file
index bdc2647..ab74cdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8814=['WhatsappAccount','save','update','remove','emit','hook','exports','events'];(function(_0x4a650b,_0x48e257){var _0x2acc22=function(_0x26a3b1){while(--_0x26a3b1){_0x4a650b['push'](_0x4a650b['shift']());}};_0x2acc22(++_0x48e257);}(_0x8814,0x187));var _0x4881=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0x8814[_0x2d34d6];return _0x1d3d12;};'use strict';var EventEmitter=require(_0x4881('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0x4881('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4881('0x2'),'afterUpdate':_0x4881('0x3'),'afterDestroy':_0x4881('0x4')};function emitEvent(_0x41e2fe){return function(_0x192227,_0x321e42,_0x194a98){WhatsappAccountEvents[_0x4881('0x5')](_0x41e2fe+':'+_0x192227['id'],_0x192227);WhatsappAccountEvents[_0x4881('0x5')](_0x41e2fe,_0x192227);_0x194a98(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x4881('0x6')](e,emitEvent(event));}}module[_0x4881('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xe3dd=['../../mysqldb','WhatsappAccount','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x2835e1,_0x4ccc9e){var _0x3a0e3b=function(_0x4da542){while(--_0x4da542){_0x2835e1['push'](_0x2835e1['shift']());}};_0x3a0e3b(++_0x4ccc9e);}(_0xe3dd,0x1b7));var _0xde3d=function(_0x5d722c,_0x4d65d4){_0x5d722c=_0x5d722c-0x0;var _0x37046b=_0xe3dd[_0x5d722c];return _0x37046b;};'use strict';var EventEmitter=require(_0xde3d('0x0'));var WhatsappAccount=require(_0xde3d('0x1'))['db'][_0xde3d('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xde3d('0x3')](0x0);var events={'afterCreate':_0xde3d('0x4'),'afterUpdate':_0xde3d('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2bea1c){return function(_0x1cf546,_0x27a34,_0x5d5298){WhatsappAccountEvents[_0xde3d('0x6')](_0x2bea1c+':'+_0x1cf546['id'],_0x1cf546);WhatsappAccountEvents[_0xde3d('0x6')](_0x2bea1c,_0x1cf546);_0x5d5298(null);};}for(var e in events){if(events[_0xde3d('0x7')](e)){var event=events[e];WhatsappAccount[_0xde3d('0x8')](e,emitEvent(event));}}module[_0xde3d('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
index 58cdc44..5ed4d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f8a=['../../config/environment','exports','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x2ae8d6,_0x4d7876){var _0x3d5145=function(_0x3c3638){while(--_0x3c3638){_0x2ae8d6['push'](_0x2ae8d6['shift']());}};_0x3d5145(++_0x4d7876);}(_0x9f8a,0xd4));var _0xa9f8=function(_0x1c83c0,_0x5b83fd){_0x1c83c0=_0x1c83c0-0x0;var _0x326639=_0x9f8a[_0x1c83c0];return _0x326639;};'use strict';var _=require(_0xa9f8('0x0'));var util=require(_0xa9f8('0x1'));var logger=require(_0xa9f8('0x2'))(_0xa9f8('0x3'));var moment=require('moment');var BPromise=require(_0xa9f8('0x4'));var rp=require(_0xa9f8('0x5'));var fs=require('fs');var path=require(_0xa9f8('0x6'));var rimraf=require(_0xa9f8('0x7'));var config=require(_0xa9f8('0x8'));var attributes=require('./whatsappAccount.attributes');module[_0xa9f8('0x9')]=function(_0x57d336,_0x502043){return _0x57d336['define']('WhatsappAccount',attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc403=['bluebird','request-promise','path','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger'];(function(_0x15602c,_0x4aa06a){var _0xe4586a=function(_0x5b05cb){while(--_0x5b05cb){_0x15602c['push'](_0x15602c['shift']());}};_0xe4586a(++_0x4aa06a);}(_0xc403,0x69));var _0x3c40=function(_0x3c199f,_0x5c25b4){_0x3c199f=_0x3c199f-0x0;var _0x263bf2=_0xc403[_0x3c199f];return _0x263bf2;};'use strict';var _=require(_0x3c40('0x0'));var util=require(_0x3c40('0x1'));var logger=require(_0x3c40('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3c40('0x3'));var rp=require(_0x3c40('0x4'));var fs=require('fs');var path=require(_0x3c40('0x5'));var rimraf=require('rimraf');var config=require(_0x3c40('0x6'));var attributes=require(_0x3c40('0x7'));module[_0x3c40('0x8')]=function(_0x4faedb,_0x33ca68){return _0x4faedb[_0x3c40('0x9')](_0x3c40('0xa'),attributes,{'tableName':_0x3c40('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3aee431..e2981fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b5c=['catch','ShowWhatsappAccount','WhatsappAccount','find','options','where','attributes','include','map','model','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x9ae61,_0x410260){var _0x4a29d6=function(_0x29c4f5){while(--_0x29c4f5){_0x9ae61['push'](_0x9ae61['shift']());}};_0x4a29d6(++_0x410260);}(_0x8b5c,0x10d));var _0xc8b5=function(_0x33de6e,_0x3d3208){_0x33de6e=_0x33de6e-0x0;var _0x492aed=_0x8b5c[_0x33de6e];return _0x492aed;};'use strict';var _=require('lodash');var util=require(_0xc8b5('0x0'));var moment=require('moment');var BPromise=require(_0xc8b5('0x1'));var rs=require(_0xc8b5('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc8b5('0x3'))['db'];var utils=require(_0xc8b5('0x4'));var logger=require('../../config/logger')(_0xc8b5('0x5'));var config=require('../../config/environment');var jayson=require(_0xc8b5('0x6'));var client=jayson[_0xc8b5('0x7')][_0xc8b5('0x8')]({'port':0x232a});config[_0xc8b5('0x9')]=_[_0xc8b5('0xa')](config[_0xc8b5('0x9')],{'host':_0xc8b5('0xb'),'port':0x18eb});var socket=require(_0xc8b5('0xc'))(new Redis(config['redis']));require(_0xc8b5('0xd'))[_0xc8b5('0xe')](socket);function respondWithRpcPromise(_0x433d32,_0x2d2592,_0x3eb742){return new BPromise(function(_0x30948b,_0x181461){return client[_0xc8b5('0xf')](_0x433d32,_0x3eb742)[_0xc8b5('0x10')](function(_0x2380e8){logger[_0xc8b5('0x11')](_0xc8b5('0x12'),_0x2d2592,_0xc8b5('0x13'));logger[_0xc8b5('0x14')](_0xc8b5('0x15'),_0x2d2592,_0xc8b5('0x13'),JSON[_0xc8b5('0x16')](_0x2380e8));if(_0x2380e8[_0xc8b5('0x17')]){if(_0x2380e8[_0xc8b5('0x17')][_0xc8b5('0x18')]===0x1f4){logger[_0xc8b5('0x17')](_0xc8b5('0x12'),_0x2d2592,_0x2380e8[_0xc8b5('0x17')][_0xc8b5('0x19')]);return _0x181461(_0x2380e8['error']['message']);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x2d2592,_0x2380e8[_0xc8b5('0x17')]['message']);return _0x30948b(_0x2380e8['error'][_0xc8b5('0x19')]);}else{logger['info'](_0xc8b5('0x12'),_0x2d2592,'request\x20sent');_0x30948b(_0x2380e8[_0xc8b5('0x1a')][_0xc8b5('0x19')]);}})[_0xc8b5('0x1b')](function(_0x32c890){logger[_0xc8b5('0x17')](_0xc8b5('0x12'),_0x2d2592,_0x32c890);_0x181461(_0x32c890);});});}exports[_0xc8b5('0x1c')]=function(_0x3f918f){var _0x4241ba=this;return new Promise(function(_0x52c209,_0x460630){return db[_0xc8b5('0x1d')][_0xc8b5('0x1e')]({'raw':_0x3f918f[_0xc8b5('0x1f')]?_0x3f918f['options']['raw']===undefined?!![]:![]:!![],'where':_0x3f918f[_0xc8b5('0x1f')]?_0x3f918f[_0xc8b5('0x1f')][_0xc8b5('0x20')]||null:null,'attributes':_0x3f918f[_0xc8b5('0x1f')]?_0x3f918f[_0xc8b5('0x1f')][_0xc8b5('0x21')]||null:null,'include':_0x3f918f[_0xc8b5('0x1f')]?_0x3f918f[_0xc8b5('0x1f')][_0xc8b5('0x22')]?_[_0xc8b5('0x23')](_0x3f918f['options'][_0xc8b5('0x22')],function(_0x2769be){return{'model':db[_0x2769be['model']],'as':_0x2769be['as'],'attributes':_0x2769be[_0xc8b5('0x21')],'include':_0x2769be['include']?_[_0xc8b5('0x23')](_0x2769be[_0xc8b5('0x22')],function(_0x3af8ad){return{'model':db[_0x3af8ad['model']],'as':_0x3af8ad['as'],'attributes':_0x3af8ad['attributes'],'include':_0x3af8ad[_0xc8b5('0x22')]?_[_0xc8b5('0x23')](_0x3af8ad[_0xc8b5('0x22')],function(_0x54275d){return{'model':db[_0x54275d[_0xc8b5('0x24')]],'as':_0x54275d['as'],'attributes':_0x54275d[_0xc8b5('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x37bd73){logger[_0xc8b5('0x11')]('ShowWhatsappAccount',_0x3f918f);logger[_0xc8b5('0x14')](_0xc8b5('0x1c'),_0x3f918f,JSON[_0xc8b5('0x16')](_0x37bd73));_0x52c209(_0x37bd73);})['catch'](function(_0x5e89d6){logger[_0xc8b5('0x17')](_0xc8b5('0x1c'),_0x5e89d6[_0xc8b5('0x19')],_0x3f918f);_0x460630(_0x4241ba[_0xc8b5('0x17')](0x1f4,_0x5e89d6[_0xc8b5('0x19')]));});});};
\ No newline at end of file
+var _0x80f7=['jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','catch','ShowWhatsappAccount','WhatsappAccount','find','raw','options','where','attributes','include','map','model','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment'];(function(_0x15d18f,_0x126b0e){var _0xd12bf7=function(_0x19e661){while(--_0x19e661){_0x15d18f['push'](_0x15d18f['shift']());}};_0xd12bf7(++_0x126b0e);}(_0x80f7,0xd6));var _0x780f=function(_0x49f37e,_0x4d9211){_0x49f37e=_0x49f37e-0x0;var _0x3c30e6=_0x80f7[_0x49f37e];return _0x3c30e6;};'use strict';var _=require(_0x780f('0x0'));var util=require('util');var moment=require(_0x780f('0x1'));var BPromise=require(_0x780f('0x2'));var rs=require(_0x780f('0x3'));var fs=require('fs');var Redis=require(_0x780f('0x4'));var db=require(_0x780f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x780f('0x6'));var config=require(_0x780f('0x7'));var jayson=require(_0x780f('0x8'));var client=jayson[_0x780f('0x9')]['http']({'port':0x232a});config[_0x780f('0xa')]=_[_0x780f('0xb')](config[_0x780f('0xa')],{'host':_0x780f('0xc'),'port':0x18eb});var socket=require(_0x780f('0xd'))(new Redis(config['redis']));require(_0x780f('0xe'))[_0x780f('0xf')](socket);function respondWithRpcPromise(_0x361457,_0x3ed1ef,_0x1fdcf9){return new BPromise(function(_0x5a93b0,_0x1160bb){return client[_0x780f('0x10')](_0x361457,_0x1fdcf9)[_0x780f('0x11')](function(_0x3a80ab){logger[_0x780f('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x3ed1ef,_0x780f('0x13'));logger[_0x780f('0x14')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x3ed1ef,_0x780f('0x13'),JSON[_0x780f('0x15')](_0x3a80ab));if(_0x3a80ab[_0x780f('0x16')]){if(_0x3a80ab[_0x780f('0x16')][_0x780f('0x17')]===0x1f4){logger[_0x780f('0x16')](_0x780f('0x18'),_0x3ed1ef,_0x3a80ab[_0x780f('0x16')]['message']);return _0x1160bb(_0x3a80ab[_0x780f('0x16')][_0x780f('0x19')]);}logger[_0x780f('0x16')](_0x780f('0x18'),_0x3ed1ef,_0x3a80ab[_0x780f('0x16')][_0x780f('0x19')]);return _0x5a93b0(_0x3a80ab[_0x780f('0x16')][_0x780f('0x19')]);}else{logger['info'](_0x780f('0x18'),_0x3ed1ef,_0x780f('0x13'));_0x5a93b0(_0x3a80ab['result'][_0x780f('0x19')]);}})[_0x780f('0x1a')](function(_0x285a7e){logger[_0x780f('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x3ed1ef,_0x285a7e);_0x1160bb(_0x285a7e);});});}exports[_0x780f('0x1b')]=function(_0x5d0ce1){var _0x46dd57=this;return new Promise(function(_0xdce1bf,_0x53347e){return db[_0x780f('0x1c')][_0x780f('0x1d')]({'raw':_0x5d0ce1['options']?_0x5d0ce1['options'][_0x780f('0x1e')]===undefined?!![]:![]:!![],'where':_0x5d0ce1[_0x780f('0x1f')]?_0x5d0ce1[_0x780f('0x1f')][_0x780f('0x20')]||null:null,'attributes':_0x5d0ce1['options']?_0x5d0ce1[_0x780f('0x1f')][_0x780f('0x21')]||null:null,'include':_0x5d0ce1[_0x780f('0x1f')]?_0x5d0ce1[_0x780f('0x1f')][_0x780f('0x22')]?_[_0x780f('0x23')](_0x5d0ce1[_0x780f('0x1f')][_0x780f('0x22')],function(_0x5690e6){return{'model':db[_0x5690e6['model']],'as':_0x5690e6['as'],'attributes':_0x5690e6[_0x780f('0x21')],'include':_0x5690e6[_0x780f('0x22')]?_[_0x780f('0x23')](_0x5690e6[_0x780f('0x22')],function(_0x4312c0){return{'model':db[_0x4312c0[_0x780f('0x24')]],'as':_0x4312c0['as'],'attributes':_0x4312c0['attributes'],'include':_0x4312c0[_0x780f('0x22')]?_[_0x780f('0x23')](_0x4312c0[_0x780f('0x22')],function(_0x132a99){return{'model':db[_0x132a99[_0x780f('0x24')]],'as':_0x132a99['as'],'attributes':_0x132a99[_0x780f('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d0415){logger[_0x780f('0x12')](_0x780f('0x1b'),_0x5d0ce1);logger[_0x780f('0x14')](_0x780f('0x1b'),_0x5d0ce1,JSON['stringify'](_0x4d0415));_0xdce1bf(_0x4d0415);})[_0x780f('0x1a')](function(_0x5501ae){logger['error']('ShowWhatsappAccount',_0x5501ae['message'],_0x5d0ce1);_0x53347e(_0x46dd57[_0x780f('0x16')](0x1f4,_0x5501ae[_0x780f('0x19')]));});});};
\ No newline at end of file
index 72bf671..4d1bf52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd520=['emit','removeListener','register','length','whatsappAccount:','./whatsappAccount.events','save','remove'];(function(_0x1f8e99,_0x27878f){var _0xf4c2c6=function(_0x3fcb2f){while(--_0x3fcb2f){_0x1f8e99['push'](_0x1f8e99['shift']());}};_0xf4c2c6(++_0x27878f);}(_0xd520,0x10d));var _0x0d52=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xd520[_0x2b4411];return _0x8e41ef;};'use strict';var WhatsappAccountEvents=require(_0x0d52('0x0'));var events=[_0x0d52('0x1'),_0x0d52('0x2'),'update'];function createListener(_0x211a6b,_0x4a29bb){return function(_0x272291){_0x4a29bb[_0x0d52('0x3')](_0x211a6b,_0x272291);};}function removeListener(_0x428e26,_0x2f40a6){return function(){WhatsappAccountEvents[_0x0d52('0x4')](_0x428e26,_0x2f40a6);};}exports[_0x0d52('0x5')]=function(_0x1c31cf){for(var _0x16fc0c=0x0,_0x17d5db=events[_0x0d52('0x6')];_0x16fc0c<_0x17d5db;_0x16fc0c++){var _0x30ca29=events[_0x16fc0c];var _0x47e1c8=createListener(_0x0d52('0x7')+_0x30ca29,_0x1c31cf);WhatsappAccountEvents['on'](_0x30ca29,_0x47e1c8);}};
\ No newline at end of file
+var _0x6e73=['save','emit','removeListener','register','length','whatsappAccount:','./whatsappAccount.events'];(function(_0x16b273,_0x3a8aac){var _0x511f9f=function(_0x16e515){while(--_0x16e515){_0x16b273['push'](_0x16b273['shift']());}};_0x511f9f(++_0x3a8aac);}(_0x6e73,0xbc));var _0x36e7=function(_0x6ba738,_0x388187){_0x6ba738=_0x6ba738-0x0;var _0x3f4422=_0x6e73[_0x6ba738];return _0x3f4422;};'use strict';var WhatsappAccountEvents=require(_0x36e7('0x0'));var events=[_0x36e7('0x1'),'remove','update'];function createListener(_0x57df16,_0x3f5a84){return function(_0x50130c){_0x3f5a84[_0x36e7('0x2')](_0x57df16,_0x50130c);};}function removeListener(_0x1a184b,_0x51f02a){return function(){WhatsappAccountEvents[_0x36e7('0x3')](_0x1a184b,_0x51f02a);};}exports[_0x36e7('0x4')]=function(_0x2625bd){for(var _0x5293c0=0x0,_0xdbc92=events[_0x36e7('0x5')];_0x5293c0<_0xdbc92;_0x5293c0++){var _0x141e70=events[_0x5293c0];var _0x197250=createListener(_0x36e7('0x6')+_0x141e70,_0x2625bd);WhatsappAccountEvents['on'](_0x141e70,_0x197250);}};
\ No newline at end of file
index e39ae5c..7c0e30f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ab0=['post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','/:id','show'];(function(_0x350879,_0x152826){var _0x3a8b16=function(_0x14acff){while(--_0x14acff){_0x350879['push'](_0x350879['shift']());}};_0x3a8b16(++_0x152826);}(_0x5ab0,0xfd));var _0x05ab=function(_0x38e1d1,_0x404a47){_0x38e1d1=_0x38e1d1-0x0;var _0x1896e=_0x5ab0[_0x38e1d1];return _0x1896e;};'use strict';var multer=require(_0x05ab('0x0'));var util=require(_0x05ab('0x1'));var path=require(_0x05ab('0x2'));var timeout=require('connect-timeout');var express=require(_0x05ab('0x3'));var router=express[_0x05ab('0x4')]();var fs_extra=require(_0x05ab('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x05ab('0x6'));var config=require(_0x05ab('0x7'));var controller=require(_0x05ab('0x8'));router[_0x05ab('0x9')]('/',auth[_0x05ab('0xa')](),controller['index']);router[_0x05ab('0x9')](_0x05ab('0xb'),auth['isAuthenticated'](),controller[_0x05ab('0xc')]);router[_0x05ab('0xd')]('/',auth[_0x05ab('0xa')](),controller[_0x05ab('0xe')]);router[_0x05ab('0xf')](_0x05ab('0xb'),auth['isAuthenticated'](),controller[_0x05ab('0x10')]);router[_0x05ab('0x11')](_0x05ab('0xb'),auth['isAuthenticated'](),controller[_0x05ab('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x91aa=['/:id','post','create','put','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','isAuthenticated'];(function(_0x501624,_0x3ffbf9){var _0x512894=function(_0xe214b0){while(--_0xe214b0){_0x501624['push'](_0x501624['shift']());}};_0x512894(++_0x3ffbf9);}(_0x91aa,0x15a));var _0xa91a=function(_0x18bd9,_0x1ef045){_0x18bd9=_0x18bd9-0x0;var _0x3dee22=_0x91aa[_0x18bd9];return _0x3dee22;};'use strict';var multer=require(_0xa91a('0x0'));var util=require(_0xa91a('0x1'));var path=require(_0xa91a('0x2'));var timeout=require(_0xa91a('0x3'));var express=require(_0xa91a('0x4'));var router=express[_0xa91a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa91a('0x6'));var config=require(_0xa91a('0x7'));var controller=require(_0xa91a('0x8'));router[_0xa91a('0x9')]('/',auth[_0xa91a('0xa')](),controller['index']);router[_0xa91a('0x9')](_0xa91a('0xb'),auth[_0xa91a('0xa')](),controller['show']);router[_0xa91a('0xc')]('/',auth[_0xa91a('0xa')](),controller[_0xa91a('0xd')]);router[_0xa91a('0xe')](_0xa91a('0xb'),auth[_0xa91a('0xa')](),controller['update']);router[_0xa91a('0xf')]('/:id',auth[_0xa91a('0xa')](),controller[_0xa91a('0x10')]);module['exports']=router;
\ No newline at end of file
index 69ca595..36ce8e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc065=['INTEGER','STRING','TEXT','*,*,*,*','exports'];(function(_0x517412,_0x2cb1ba){var _0x30bdc0=function(_0x1136f3){while(--_0x1136f3){_0x517412['push'](_0x517412['shift']());}};_0x30bdc0(++_0x2cb1ba);}(_0xc065,0x18a));var _0x5c06=function(_0x117388,_0x9b2771){_0x117388=_0x117388-0x0;var _0x558ce9=_0xc065[_0x117388];return _0x558ce9;};'use strict';var Sequelize=require('sequelize');module[_0x5c06('0x0')]={'priority':{'type':Sequelize[_0x5c06('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x5c06('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x5c06('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x5c06('0x2')],'defaultValue':_0x5c06('0x4')}};
\ No newline at end of file
+var _0xe6a6=['*,*,*,*','INTEGER','STRING','noop'];(function(_0x12e13a,_0x3f8461){var _0xf4cf3c=function(_0x54012f){while(--_0x54012f){_0x12e13a['push'](_0x12e13a['shift']());}};_0xf4cf3c(++_0x3f8461);}(_0xe6a6,0x195));var _0x6e6a=function(_0x418687,_0x9f3c7b){_0x418687=_0x418687-0x0;var _0xfcec38=_0xe6a6[_0x418687];return _0xfcec38;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0x6e6a('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0x6e6a('0x1')],'allowNull':![],'defaultValue':_0x6e6a('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x6e6a('0x1')],'defaultValue':_0x6e6a('0x3')}};
\ No newline at end of file
index 2b401e9..d1eb4ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca4=['stack','name','send','index','map','rawAttributes','type','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','WhatsappApplication','include','findAll','rows','catch','show','params','keys','includeAll','create','body','update','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','save','then','error'];(function(_0xefac8b,_0x2fac8d){var _0xeebc50=function(_0x475fd8){while(--_0x475fd8){_0xefac8b['push'](_0xefac8b['shift']());}};_0xeebc50(++_0x2fac8d);}(_0x4ca4,0x100));var _0x44ca=function(_0x5f2a53,_0x1ae0ee){_0x5f2a53=_0x5f2a53-0x0;var _0x27688b=_0x4ca4[_0x5f2a53];return _0x27688b;};'use strict';var emlformat=require(_0x44ca('0x0'));var rimraf=require(_0x44ca('0x1'));var zipdir=require(_0x44ca('0x2'));var jsonpatch=require(_0x44ca('0x3'));var rp=require(_0x44ca('0x4'));var moment=require(_0x44ca('0x5'));var BPromise=require(_0x44ca('0x6'));var Mustache=require(_0x44ca('0x7'));var util=require('util');var path=require(_0x44ca('0x8'));var sox=require(_0x44ca('0x9'));var csv=require(_0x44ca('0xa'));var ejs=require(_0x44ca('0xb'));var fs=require('fs');var fs_extra=require(_0x44ca('0xc'));var _=require(_0x44ca('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x44ca('0xe'));var toCsv=require(_0x44ca('0xa'));var querystring=require('querystring');var Papa=require(_0x44ca('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x44ca('0x10'));var as=require(_0x44ca('0x11'));var hardwareService=require(_0x44ca('0x12'));var logger=require(_0x44ca('0x13'))(_0x44ca('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x44ca('0x15'));var db=require(_0x44ca('0x16'))['db'];function respondWithStatusCode(_0x516df1,_0x4f9865){_0x4f9865=_0x4f9865||0xcc;return function(_0x95f0e3){if(_0x95f0e3){return _0x516df1[_0x44ca('0x17')](_0x4f9865);}return _0x516df1[_0x44ca('0x18')](_0x4f9865)[_0x44ca('0x19')]();};}function respondWithResult(_0x5824c6,_0x1991e4){_0x1991e4=_0x1991e4||0xc8;return function(_0x14b5ee){if(_0x14b5ee){return _0x5824c6[_0x44ca('0x18')](_0x1991e4)['json'](_0x14b5ee);}};}function respondWithFilteredResult(_0x11173c,_0x389d0d){return function(_0x50fb0d){if(_0x50fb0d){var _0x334e34=typeof _0x389d0d[_0x44ca('0x1a')]==='undefined'&&typeof _0x389d0d[_0x44ca('0x1b')]===_0x44ca('0x1c');var _0x1dc8ce=_0x50fb0d[_0x44ca('0x1d')];var _0x3bea76=_0x334e34?0x0:_0x389d0d[_0x44ca('0x1a')];var _0x1fe960=_0x334e34?_0x50fb0d[_0x44ca('0x1d')]:_0x389d0d[_0x44ca('0x1a')]+_0x389d0d['limit'];var _0x1bc607;if(_0x1fe960>=_0x1dc8ce){_0x1fe960=_0x1dc8ce;_0x1bc607=0xc8;}else{_0x1bc607=0xce;}_0x11173c[_0x44ca('0x18')](_0x1bc607);return _0x11173c[_0x44ca('0x1e')](_0x44ca('0x1f'),_0x3bea76+'-'+_0x1fe960+'/'+_0x1dc8ce)['json'](_0x50fb0d);}return null;};}function patchUpdates(_0x377c0c){return function(_0x479c83){try{jsonpatch[_0x44ca('0x20')](_0x479c83,_0x377c0c,!![]);}catch(_0x18b932){return BPromise['reject'](_0x18b932);}return _0x479c83[_0x44ca('0x21')]();};}function saveUpdates(_0x3e0f19,_0x1cf198){return function(_0x2ec184){if(_0x2ec184){return _0x2ec184['update'](_0x3e0f19)[_0x44ca('0x22')](function(_0x4d127b){return _0x4d127b;});}return null;};}function removeEntity(_0x1e3f2c,_0x36c49e){return function(_0x4f93e0){if(_0x4f93e0){return _0x4f93e0['destroy']()['then'](function(){_0x1e3f2c['status'](0xcc)[_0x44ca('0x19')]();});}};}function handleEntityNotFound(_0x15c454,_0x56181e){return function(_0x117ba0){if(!_0x117ba0){_0x15c454[_0x44ca('0x17')](0x194);}return _0x117ba0;};}function handleError(_0xb75196,_0x1affc6){_0x1affc6=_0x1affc6||0x1f4;return function(_0x43008b){logger[_0x44ca('0x23')](_0x43008b[_0x44ca('0x24')]);if(_0x43008b[_0x44ca('0x25')]){delete _0x43008b[_0x44ca('0x25')];}_0xb75196[_0x44ca('0x18')](_0x1affc6)[_0x44ca('0x26')](_0x43008b);};}exports[_0x44ca('0x27')]=function(_0x529705,_0x8fe148){var _0x58da42={},_0x38187b={},_0x5763c5={'count':0x0,'rows':[]};var _0x94f15a=_[_0x44ca('0x28')](db['WhatsappApplication'][_0x44ca('0x29')],function(_0x58d458){return{'name':_0x58d458['fieldName'],'type':_0x58d458[_0x44ca('0x2a')]['key']};});_0x38187b[_0x44ca('0x2b')]=_[_0x44ca('0x28')](_0x94f15a,_0x44ca('0x25'));_0x38187b['query']=_['keys'](_0x529705['query']);_0x38187b[_0x44ca('0x2c')]=_[_0x44ca('0x2d')](_0x38187b['model'],_0x38187b[_0x44ca('0x2e')]);_0x58da42['attributes']=_[_0x44ca('0x2d')](_0x38187b[_0x44ca('0x2b')],qs[_0x44ca('0x2f')](_0x529705[_0x44ca('0x2e')][_0x44ca('0x2f')]));_0x58da42[_0x44ca('0x30')]=_0x58da42[_0x44ca('0x30')][_0x44ca('0x31')]?_0x58da42[_0x44ca('0x30')]:_0x38187b[_0x44ca('0x2b')];if(!_0x529705[_0x44ca('0x2e')][_0x44ca('0x32')](_0x44ca('0x33'))){_0x58da42[_0x44ca('0x1b')]=qs['limit'](_0x529705['query'][_0x44ca('0x1b')]);_0x58da42['offset']=qs[_0x44ca('0x1a')](_0x529705['query'][_0x44ca('0x1a')]);}_0x58da42[_0x44ca('0x34')]=qs[_0x44ca('0x35')](_0x529705[_0x44ca('0x2e')][_0x44ca('0x35')]);_0x58da42[_0x44ca('0x36')]=qs[_0x44ca('0x2c')](_[_0x44ca('0x37')](_0x529705[_0x44ca('0x2e')],_0x38187b[_0x44ca('0x2c')]),_0x94f15a);if(_0x529705[_0x44ca('0x2e')][_0x44ca('0x38')]){_0x58da42[_0x44ca('0x36')]=_[_0x44ca('0x39')](_0x58da42[_0x44ca('0x36')],{'$or':_[_0x44ca('0x28')](_0x94f15a,function(_0x1dd193){if(_0x1dd193[_0x44ca('0x2a')]!=='VIRTUAL'){var _0x3c99b8={};_0x3c99b8[_0x1dd193['name']]={'$like':'%'+_0x529705[_0x44ca('0x2e')][_0x44ca('0x38')]+'%'};return _0x3c99b8;}})});}_0x58da42=_['merge']({},_0x58da42,_0x529705[_0x44ca('0x3a')]);var _0x1dca02={'where':_0x58da42[_0x44ca('0x36')]};return db[_0x44ca('0x3b')]['count'](_0x1dca02)[_0x44ca('0x22')](function(_0x1a8bb5){_0x5763c5[_0x44ca('0x1d')]=_0x1a8bb5;if(_0x529705['query']['includeAll']){_0x58da42[_0x44ca('0x3c')]=[{'all':!![]}];}return db[_0x44ca('0x3b')][_0x44ca('0x3d')](_0x58da42);})[_0x44ca('0x22')](function(_0x191a7b){_0x5763c5[_0x44ca('0x3e')]=_0x191a7b;return _0x5763c5;})[_0x44ca('0x22')](respondWithFilteredResult(_0x8fe148,_0x58da42))[_0x44ca('0x3f')](handleError(_0x8fe148,null));};exports[_0x44ca('0x40')]=function(_0x1da5ab,_0x5fa486){var _0x345eff={'raw':!![],'where':{'id':_0x1da5ab[_0x44ca('0x41')]['id']}},_0x1b4ec1={};_0x1b4ec1[_0x44ca('0x2b')]=_['keys'](db[_0x44ca('0x3b')][_0x44ca('0x29')]);_0x1b4ec1[_0x44ca('0x2e')]=_[_0x44ca('0x42')](_0x1da5ab[_0x44ca('0x2e')]);_0x1b4ec1[_0x44ca('0x2c')]=_[_0x44ca('0x2d')](_0x1b4ec1[_0x44ca('0x2b')],_0x1b4ec1[_0x44ca('0x2e')]);_0x345eff[_0x44ca('0x30')]=_[_0x44ca('0x2d')](_0x1b4ec1[_0x44ca('0x2b')],qs[_0x44ca('0x2f')](_0x1da5ab[_0x44ca('0x2e')][_0x44ca('0x2f')]));_0x345eff[_0x44ca('0x30')]=_0x345eff[_0x44ca('0x30')][_0x44ca('0x31')]?_0x345eff[_0x44ca('0x30')]:_0x1b4ec1[_0x44ca('0x2b')];if(_0x1da5ab['query'][_0x44ca('0x43')]){_0x345eff[_0x44ca('0x3c')]=[{'all':!![]}];}_0x345eff=_[_0x44ca('0x39')]({},_0x345eff,_0x1da5ab[_0x44ca('0x3a')]);return db[_0x44ca('0x3b')]['find'](_0x345eff)[_0x44ca('0x22')](handleEntityNotFound(_0x5fa486,null))[_0x44ca('0x22')](respondWithResult(_0x5fa486,null))[_0x44ca('0x3f')](handleError(_0x5fa486,null));};exports[_0x44ca('0x44')]=function(_0x2d9486,_0x20d612){return db['WhatsappApplication']['create'](_0x2d9486[_0x44ca('0x45')],{})[_0x44ca('0x22')](respondWithResult(_0x20d612,0xc9))[_0x44ca('0x3f')](handleError(_0x20d612,null));};exports[_0x44ca('0x46')]=function(_0x181914,_0x455ded){if(_0x181914[_0x44ca('0x45')]['id']){delete _0x181914[_0x44ca('0x45')]['id'];}return db[_0x44ca('0x3b')][_0x44ca('0x47')]({'where':{'id':_0x181914[_0x44ca('0x41')]['id']}})[_0x44ca('0x22')](handleEntityNotFound(_0x455ded,null))['then'](saveUpdates(_0x181914['body'],null))[_0x44ca('0x22')](respondWithResult(_0x455ded,null))[_0x44ca('0x3f')](handleError(_0x455ded,null));};exports[_0x44ca('0x48')]=function(_0x4c8b07,_0x142034){return db['WhatsappApplication']['find']({'where':{'id':_0x4c8b07[_0x44ca('0x41')]['id']}})['then'](handleEntityNotFound(_0x142034,null))[_0x44ca('0x22')](removeEntity(_0x142034,null))[_0x44ca('0x3f')](handleError(_0x142034,null));};
\ No newline at end of file
+var _0x6343=['hasOwnProperty','nolimit','order','where','filter','merge','VIRTUAL','options','WhatsappApplication','then','rows','catch','show','params','keys','includeAll','include','create','body','find','zip-dir','fast-json-patch','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','stack','send','map','rawAttributes','fieldName','type','key','model','name','filters','query','attributes','intersection','fields','length'];(function(_0x1c98d2,_0x4689a3){var _0xc65c49=function(_0x50cf50){while(--_0x50cf50){_0x1c98d2['push'](_0x1c98d2['shift']());}};_0xc65c49(++_0x4689a3);}(_0x6343,0x168));var _0x3634=function(_0x1fd7ff,_0x1b3aae){_0x1fd7ff=_0x1fd7ff-0x0;var _0x29bc67=_0x6343[_0x1fd7ff];return _0x29bc67;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3634('0x0'));var jsonpatch=require(_0x3634('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3634('0x2'));var path=require(_0x3634('0x3'));var sox=require('sox');var csv=require(_0x3634('0x4'));var ejs=require(_0x3634('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3634('0x6'));var squel=require(_0x3634('0x7'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3634('0x8'));var toCsv=require(_0x3634('0x4'));var querystring=require(_0x3634('0x9'));var Papa=require(_0x3634('0xa'));var Redis=require(_0x3634('0xb'));var authService=require(_0x3634('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3634('0xd'));var logger=require(_0x3634('0xe'))('api');var utils=require(_0x3634('0xf'));var config=require(_0x3634('0x10'));var licenseUtil=require(_0x3634('0x11'));var db=require(_0x3634('0x12'))['db'];function respondWithStatusCode(_0x1e6a04,_0x151c8c){_0x151c8c=_0x151c8c||0xcc;return function(_0x35ae07){if(_0x35ae07){return _0x1e6a04[_0x3634('0x13')](_0x151c8c);}return _0x1e6a04[_0x3634('0x14')](_0x151c8c)[_0x3634('0x15')]();};}function respondWithResult(_0x299e53,_0x71d09b){_0x71d09b=_0x71d09b||0xc8;return function(_0x7e4801){if(_0x7e4801){return _0x299e53[_0x3634('0x14')](_0x71d09b)['json'](_0x7e4801);}};}function respondWithFilteredResult(_0x167247,_0x48787f){return function(_0x69609d){if(_0x69609d){var _0x18285c=typeof _0x48787f[_0x3634('0x16')]===_0x3634('0x17')&&typeof _0x48787f[_0x3634('0x18')]==='undefined';var _0x3121a3=_0x69609d['count'];var _0x50350d=_0x18285c?0x0:_0x48787f[_0x3634('0x16')];var _0x4b2115=_0x18285c?_0x69609d[_0x3634('0x19')]:_0x48787f[_0x3634('0x16')]+_0x48787f[_0x3634('0x18')];var _0x5603d2;if(_0x4b2115>=_0x3121a3){_0x4b2115=_0x3121a3;_0x5603d2=0xc8;}else{_0x5603d2=0xce;}_0x167247[_0x3634('0x14')](_0x5603d2);return _0x167247[_0x3634('0x1a')]('Content-Range',_0x50350d+'-'+_0x4b2115+'/'+_0x3121a3)[_0x3634('0x1b')](_0x69609d);}return null;};}function patchUpdates(_0x506281){return function(_0x742e56){try{jsonpatch[_0x3634('0x1c')](_0x742e56,_0x506281,!![]);}catch(_0x5b77a7){return BPromise[_0x3634('0x1d')](_0x5b77a7);}return _0x742e56[_0x3634('0x1e')]();};}function saveUpdates(_0x206c8e,_0x505026){return function(_0x22b7ef){if(_0x22b7ef){return _0x22b7ef[_0x3634('0x1f')](_0x206c8e)['then'](function(_0x3936ee){return _0x3936ee;});}return null;};}function removeEntity(_0x596acb,_0x5e9188){return function(_0x3a8c41){if(_0x3a8c41){return _0x3a8c41[_0x3634('0x20')]()['then'](function(){_0x596acb[_0x3634('0x14')](0xcc)[_0x3634('0x15')]();});}};}function handleEntityNotFound(_0x17db44,_0x225ddc){return function(_0x363ca2){if(!_0x363ca2){_0x17db44[_0x3634('0x13')](0x194);}return _0x363ca2;};}function handleError(_0x38e863,_0x4762b1){_0x4762b1=_0x4762b1||0x1f4;return function(_0x22f1f1){logger['error'](_0x22f1f1[_0x3634('0x21')]);if(_0x22f1f1['name']){delete _0x22f1f1['name'];}_0x38e863['status'](_0x4762b1)[_0x3634('0x22')](_0x22f1f1);};}exports['index']=function(_0x3bf28b,_0x12b80e){var _0x49804f={},_0x55a77f={},_0x282f73={'count':0x0,'rows':[]};var _0x5bd4e0=_[_0x3634('0x23')](db['WhatsappApplication'][_0x3634('0x24')],function(_0x3d7322){return{'name':_0x3d7322[_0x3634('0x25')],'type':_0x3d7322[_0x3634('0x26')][_0x3634('0x27')]};});_0x55a77f[_0x3634('0x28')]=_[_0x3634('0x23')](_0x5bd4e0,_0x3634('0x29'));_0x55a77f['query']=_['keys'](_0x3bf28b['query']);_0x55a77f[_0x3634('0x2a')]=_['intersection'](_0x55a77f[_0x3634('0x28')],_0x55a77f[_0x3634('0x2b')]);_0x49804f[_0x3634('0x2c')]=_[_0x3634('0x2d')](_0x55a77f[_0x3634('0x28')],qs[_0x3634('0x2e')](_0x3bf28b['query'][_0x3634('0x2e')]));_0x49804f[_0x3634('0x2c')]=_0x49804f[_0x3634('0x2c')][_0x3634('0x2f')]?_0x49804f[_0x3634('0x2c')]:_0x55a77f[_0x3634('0x28')];if(!_0x3bf28b[_0x3634('0x2b')][_0x3634('0x30')](_0x3634('0x31'))){_0x49804f['limit']=qs[_0x3634('0x18')](_0x3bf28b[_0x3634('0x2b')][_0x3634('0x18')]);_0x49804f[_0x3634('0x16')]=qs['offset'](_0x3bf28b[_0x3634('0x2b')][_0x3634('0x16')]);}_0x49804f[_0x3634('0x32')]=qs['sort'](_0x3bf28b['query']['sort']);_0x49804f[_0x3634('0x33')]=qs[_0x3634('0x2a')](_['pick'](_0x3bf28b[_0x3634('0x2b')],_0x55a77f[_0x3634('0x2a')]),_0x5bd4e0);if(_0x3bf28b[_0x3634('0x2b')][_0x3634('0x34')]){_0x49804f[_0x3634('0x33')]=_[_0x3634('0x35')](_0x49804f[_0x3634('0x33')],{'$or':_['map'](_0x5bd4e0,function(_0x416987){if(_0x416987['type']!==_0x3634('0x36')){var _0x3ae966={};_0x3ae966[_0x416987[_0x3634('0x29')]]={'$like':'%'+_0x3bf28b[_0x3634('0x2b')][_0x3634('0x34')]+'%'};return _0x3ae966;}})});}_0x49804f=_['merge']({},_0x49804f,_0x3bf28b[_0x3634('0x37')]);var _0x33af29={'where':_0x49804f[_0x3634('0x33')]};return db[_0x3634('0x38')][_0x3634('0x19')](_0x33af29)[_0x3634('0x39')](function(_0x28c8d0){_0x282f73[_0x3634('0x19')]=_0x28c8d0;if(_0x3bf28b[_0x3634('0x2b')]['includeAll']){_0x49804f['include']=[{'all':!![]}];}return db[_0x3634('0x38')]['findAll'](_0x49804f);})['then'](function(_0x5948db){_0x282f73[_0x3634('0x3a')]=_0x5948db;return _0x282f73;})['then'](respondWithFilteredResult(_0x12b80e,_0x49804f))[_0x3634('0x3b')](handleError(_0x12b80e,null));};exports[_0x3634('0x3c')]=function(_0x53c1ea,_0x505be7){var _0x4896ab={'raw':!![],'where':{'id':_0x53c1ea[_0x3634('0x3d')]['id']}},_0x324970={};_0x324970['model']=_[_0x3634('0x3e')](db[_0x3634('0x38')][_0x3634('0x24')]);_0x324970[_0x3634('0x2b')]=_[_0x3634('0x3e')](_0x53c1ea['query']);_0x324970['filters']=_[_0x3634('0x2d')](_0x324970[_0x3634('0x28')],_0x324970[_0x3634('0x2b')]);_0x4896ab[_0x3634('0x2c')]=_[_0x3634('0x2d')](_0x324970[_0x3634('0x28')],qs['fields'](_0x53c1ea[_0x3634('0x2b')][_0x3634('0x2e')]));_0x4896ab[_0x3634('0x2c')]=_0x4896ab['attributes']['length']?_0x4896ab[_0x3634('0x2c')]:_0x324970[_0x3634('0x28')];if(_0x53c1ea[_0x3634('0x2b')][_0x3634('0x3f')]){_0x4896ab[_0x3634('0x40')]=[{'all':!![]}];}_0x4896ab=_[_0x3634('0x35')]({},_0x4896ab,_0x53c1ea[_0x3634('0x37')]);return db[_0x3634('0x38')]['find'](_0x4896ab)[_0x3634('0x39')](handleEntityNotFound(_0x505be7,null))[_0x3634('0x39')](respondWithResult(_0x505be7,null))[_0x3634('0x3b')](handleError(_0x505be7,null));};exports[_0x3634('0x41')]=function(_0x615276,_0x151654){return db[_0x3634('0x38')][_0x3634('0x41')](_0x615276[_0x3634('0x42')],{})['then'](respondWithResult(_0x151654,0xc9))[_0x3634('0x3b')](handleError(_0x151654,null));};exports[_0x3634('0x1f')]=function(_0x4a4a94,_0x3c356b){if(_0x4a4a94[_0x3634('0x42')]['id']){delete _0x4a4a94[_0x3634('0x42')]['id'];}return db[_0x3634('0x38')][_0x3634('0x43')]({'where':{'id':_0x4a4a94[_0x3634('0x3d')]['id']}})['then'](handleEntityNotFound(_0x3c356b,null))[_0x3634('0x39')](saveUpdates(_0x4a4a94[_0x3634('0x42')],null))[_0x3634('0x39')](respondWithResult(_0x3c356b,null))[_0x3634('0x3b')](handleError(_0x3c356b,null));};exports[_0x3634('0x20')]=function(_0x582475,_0x66f6a4){return db[_0x3634('0x38')]['find']({'where':{'id':_0x582475['params']['id']}})[_0x3634('0x39')](handleEntityNotFound(_0x66f6a4,null))['then'](removeEntity(_0x66f6a4,null))[_0x3634('0x3b')](handleError(_0x66f6a4,null));};
\ No newline at end of file
index 05fa41d..c37ff1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x291c=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0x291c,0x137));var _0xc291=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x291c[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xc291('0x0'));var util=require(_0xc291('0x1'));var logger=require(_0xc291('0x2'))(_0xc291('0x3'));var moment=require(_0xc291('0x4'));var BPromise=require(_0xc291('0x5'));var rp=require(_0xc291('0x6'));var fs=require('fs');var path=require(_0xc291('0x7'));var rimraf=require(_0xc291('0x8'));var config=require(_0xc291('0x9'));var attributes=require(_0xc291('0xa'));module['exports']=function(_0x2c96a8,_0x5f2563){return _0x2c96a8['define'](_0xc291('0xb'),attributes,{'tableName':_0xc291('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc291('0xd'),'collate':_0xc291('0xe')});};
\ No newline at end of file
+var _0xd4b6=['lodash','util','api','moment','request-promise','./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4'];(function(_0x151222,_0x5d83b6){var _0x4e8232=function(_0x2ddf51){while(--_0x2ddf51){_0x151222['push'](_0x151222['shift']());}};_0x4e8232(++_0x5d83b6);}(_0xd4b6,0x13f));var _0x6d4b=function(_0x41c173,_0x3b499e){_0x41c173=_0x41c173-0x0;var _0x35a186=_0xd4b6[_0x41c173];return _0x35a186;};'use strict';var _=require(_0x6d4b('0x0'));var util=require(_0x6d4b('0x1'));var logger=require('../../config/logger')(_0x6d4b('0x2'));var moment=require(_0x6d4b('0x3'));var BPromise=require('bluebird');var rp=require(_0x6d4b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6d4b('0x5'));module[_0x6d4b('0x6')]=function(_0x442164,_0x5daf08){return _0x442164[_0x6d4b('0x7')](_0x6d4b('0x8'),attributes,{'tableName':_0x6d4b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6d4b('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 1e08f0e..e5f71b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['then','info','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','WhatsappApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x2cc594,_0x4d727b){var _0x4abff7=function(_0x22b01d){while(--_0x22b01d){_0x2cc594['push'](_0x2cc594['shift']());}};_0x4abff7(++_0x4d727b);}(_0xeec6,0x1c2));var _0x6eec=function(_0x25b4a4,_0x2e081b){_0x25b4a4=_0x25b4a4-0x0;var _0x707267=_0xeec6[_0x25b4a4];return _0x707267;};'use strict';var _=require(_0x6eec('0x0'));var util=require(_0x6eec('0x1'));var moment=require(_0x6eec('0x2'));var BPromise=require(_0x6eec('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6eec('0x4'));var db=require(_0x6eec('0x5'))['db'];var utils=require(_0x6eec('0x6'));var logger=require(_0x6eec('0x7'))(_0x6eec('0x8'));var config=require(_0x6eec('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6eec('0xa')][_0x6eec('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48064a,_0x5a5e47,_0x1c810e){return new BPromise(function(_0x3443c2,_0x834c2){return client['request'](_0x48064a,_0x1c810e)[_0x6eec('0xc')](function(_0x3aca38){logger[_0x6eec('0xd')]('WhatsappApplication,\x20%s,\x20%s',_0x5a5e47,'request\x20sent');logger['debug'](_0x6eec('0xe'),_0x5a5e47,_0x6eec('0xf'),JSON['stringify'](_0x3aca38));if(_0x3aca38['error']){if(_0x3aca38[_0x6eec('0x10')]['code']===0x1f4){logger[_0x6eec('0x10')](_0x6eec('0x11'),_0x5a5e47,_0x3aca38[_0x6eec('0x10')][_0x6eec('0x12')]);return _0x834c2(_0x3aca38[_0x6eec('0x10')]['message']);}logger[_0x6eec('0x10')](_0x6eec('0x11'),_0x5a5e47,_0x3aca38[_0x6eec('0x10')][_0x6eec('0x12')]);return _0x3443c2(_0x3aca38[_0x6eec('0x10')][_0x6eec('0x12')]);}else{logger[_0x6eec('0xd')](_0x6eec('0x11'),_0x5a5e47,_0x6eec('0xf'));_0x3443c2(_0x3aca38[_0x6eec('0x13')]['message']);}})[_0x6eec('0x14')](function(_0x5f1f33){logger[_0x6eec('0x10')](_0x6eec('0x11'),_0x5a5e47,_0x5f1f33);_0x834c2(_0x5f1f33);});});}
\ No newline at end of file
+var _0x0e85=['bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util'];(function(_0x897f4d,_0x537f71){var _0x57a2f2=function(_0x564ff8){while(--_0x564ff8){_0x897f4d['push'](_0x897f4d['shift']());}};_0x57a2f2(++_0x537f71);}(_0x0e85,0x7c));var _0x50e8=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x0e85[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var moment=require('moment');var BPromise=require(_0x50e8('0x2'));var rs=require(_0x50e8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x50e8('0x4'))('rpc');var config=require(_0x50e8('0x5'));var jayson=require(_0x50e8('0x6'));var client=jayson[_0x50e8('0x7')][_0x50e8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e8b01,_0x3ce904,_0x108edc){return new BPromise(function(_0x42665e,_0x988da0){return client[_0x50e8('0x9')](_0x5e8b01,_0x108edc)[_0x50e8('0xa')](function(_0x5825f5){logger[_0x50e8('0xb')](_0x50e8('0xc'),_0x3ce904,_0x50e8('0xd'));logger[_0x50e8('0xe')](_0x50e8('0xf'),_0x3ce904,_0x50e8('0xd'),JSON[_0x50e8('0x10')](_0x5825f5));if(_0x5825f5[_0x50e8('0x11')]){if(_0x5825f5['error']['code']===0x1f4){logger[_0x50e8('0x11')](_0x50e8('0xc'),_0x3ce904,_0x5825f5['error']['message']);return _0x988da0(_0x5825f5[_0x50e8('0x11')][_0x50e8('0x12')]);}logger[_0x50e8('0x11')](_0x50e8('0xc'),_0x3ce904,_0x5825f5['error'][_0x50e8('0x12')]);return _0x42665e(_0x5825f5[_0x50e8('0x11')][_0x50e8('0x12')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x3ce904,_0x50e8('0xd'));_0x42665e(_0x5825f5[_0x50e8('0x13')][_0x50e8('0x12')]);}})[_0x50e8('0x14')](function(_0x211731){logger[_0x50e8('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x3ce904,_0x211731);_0x988da0(_0x211731);});});}
\ No newline at end of file
index 69d3100..ab67d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe714=['post','/:id/tags','whatsapp','/:id','whatsappinteraction:update','update','delete','tracked','whatsappinteraction:destroy','destroy','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','describe','/:id/messages','getMessages','/:id/download','download','create'];(function(_0x360a59,_0x57eca5){var _0x1b7395=function(_0x1f11a1){while(--_0x1f11a1){_0x360a59['push'](_0x360a59['shift']());}};_0x1b7395(++_0x57eca5);}(_0xe714,0xe2));var _0x4e71=function(_0x4c8cf9,_0x401a3d){_0x4c8cf9=_0x4c8cf9-0x0;var _0x3155eb=_0xe714[_0x4c8cf9];return _0x3155eb;};'use strict';var multer=require(_0x4e71('0x0'));var util=require('util');var path=require(_0x4e71('0x1'));var timeout=require(_0x4e71('0x2'));var express=require(_0x4e71('0x3'));var router=express[_0x4e71('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4e71('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4e71('0x6'));var controller=require(_0x4e71('0x7'));router[_0x4e71('0x8')]('/',auth[_0x4e71('0x9')](),controller[_0x4e71('0xa')]);router[_0x4e71('0x8')]('/describe',auth[_0x4e71('0x9')](),controller[_0x4e71('0xb')]);router[_0x4e71('0x8')]('/:id',auth[_0x4e71('0x9')](),controller['show']);router[_0x4e71('0x8')](_0x4e71('0xc'),auth[_0x4e71('0x9')](),controller[_0x4e71('0xd')]);router[_0x4e71('0x8')](_0x4e71('0xe'),auth[_0x4e71('0x9')](),controller[_0x4e71('0xf')]);router['post']('/',auth[_0x4e71('0x9')](),controller[_0x4e71('0x10')]);router['post'](_0x4e71('0xc'),auth[_0x4e71('0x9')](),controller['addMessage']);router[_0x4e71('0x11')](_0x4e71('0x12'),auth['isAuthenticated'](),interaction['tracked'](_0x4e71('0x13'),'whatsappinteraction:addtags'),controller['addTags']);router['put'](_0x4e71('0x14'),auth[_0x4e71('0x9')](),interaction['tracked']('whatsapp',_0x4e71('0x15')),controller[_0x4e71('0x16')]);router[_0x4e71('0x17')](_0x4e71('0x14'),auth[_0x4e71('0x9')](),interaction[_0x4e71('0x18')]('whatsapp',_0x4e71('0x19')),controller[_0x4e71('0x1a')]);router['delete'](_0x4e71('0x12'),auth[_0x4e71('0x9')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0xa6b0=['/describe','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','update','whatsappinteraction:destroy','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index'];(function(_0x4020a3,_0x16e619){var _0x178f7a=function(_0x1697bc){while(--_0x1697bc){_0x4020a3['push'](_0x4020a3['shift']());}};_0x178f7a(++_0x16e619);}(_0xa6b0,0xaf));var _0x0a6b=function(_0xf10102,_0x5c92e4){_0xf10102=_0xf10102-0x0;var _0x420523=_0xa6b0[_0xf10102];return _0x420523;};'use strict';var multer=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0a6b('0x2'));var router=express[_0x0a6b('0x3')]();var fs_extra=require(_0x0a6b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0a6b('0x5'));var config=require(_0x0a6b('0x6'));var controller=require(_0x0a6b('0x7'));router[_0x0a6b('0x8')]('/',auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xa')]);router[_0x0a6b('0x8')](_0x0a6b('0xb'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xc')]);router[_0x0a6b('0x8')](_0x0a6b('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x0a6b('0x8')](_0x0a6b('0xe'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0xf')]);router[_0x0a6b('0x8')](_0x0a6b('0x10'),auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x11')]);router[_0x0a6b('0x12')]('/',auth[_0x0a6b('0x9')](),controller[_0x0a6b('0x13')]);router[_0x0a6b('0x12')](_0x0a6b('0xe'),auth[_0x0a6b('0x9')](),controller['addMessage']);router['post'](_0x0a6b('0x14'),auth[_0x0a6b('0x9')](),interaction[_0x0a6b('0x15')](_0x0a6b('0x16'),_0x0a6b('0x17')),controller[_0x0a6b('0x18')]);router[_0x0a6b('0x19')](_0x0a6b('0xd'),auth[_0x0a6b('0x9')](),interaction[_0x0a6b('0x15')]('whatsapp',_0x0a6b('0x1a')),controller[_0x0a6b('0x1b')]);router['delete'](_0x0a6b('0xd'),auth['isAuthenticated'](),interaction[_0x0a6b('0x15')](_0x0a6b('0x16'),_0x0a6b('0x1c')),controller[_0x0a6b('0x1d')]);router['delete'](_0x0a6b('0x14'),auth[_0x0a6b('0x9')](),controller['removeTags']);module[_0x0a6b('0x1e')]=router;
\ No newline at end of file
index 02f5de1..b5f3162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aab=['BOOLEAN','INTEGER','sequelize','moment','exports','DATE','STRING','ENUM','out'];(function(_0x8a6f81,_0x5e03a5){var _0x12e901=function(_0x9a1521){while(--_0x9a1521){_0x8a6f81['push'](_0x8a6f81['shift']());}};_0x12e901(++_0x5e03a5);}(_0x1aab,0x122));var _0xb1aa=function(_0x286c17,_0x4aade4){_0x286c17=_0x286c17-0x0;var _0x416cf5=_0x1aab[_0x286c17];return _0x416cf5;};'use strict';var Sequelize=require(_0xb1aa('0x0'));var moment=require(_0xb1aa('0x1'));module[_0xb1aa('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb1aa('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xb1aa('0x4')]},'thirdDisposition':{'type':Sequelize[_0xb1aa('0x4')]},'note':{'type':Sequelize[_0xb1aa('0x4')]},'phone':{'type':Sequelize[_0xb1aa('0x4')]},'read1stAt':{'type':Sequelize[_0xb1aa('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xb1aa('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xb1aa('0x5')]('in',_0xb1aa('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xb1aa('0x7')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xb1aa('0x8')]}};
\ No newline at end of file
+var _0x13cc=['out','ENUM','INTEGER','exports','BOOLEAN','STRING','DATE'];(function(_0x112c6f,_0xf90729){var _0x235efe=function(_0x506b7c){while(--_0x506b7c){_0x112c6f['push'](_0x112c6f['shift']());}};_0x235efe(++_0xf90729);}(_0x13cc,0x161));var _0xc13c=function(_0x1d7bbd,_0x327073){_0x1d7bbd=_0x1d7bbd-0x0;var _0x520685=_0x13cc[_0x1d7bbd];return _0x520685;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xc13c('0x0')]={'closed':{'type':Sequelize[_0xc13c('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xc13c('0x2')]},'secondDisposition':{'type':Sequelize[_0xc13c('0x2')]},'thirdDisposition':{'type':Sequelize[_0xc13c('0x2')]},'note':{'type':Sequelize[_0xc13c('0x2')]},'phone':{'type':Sequelize[_0xc13c('0x2')]},'read1stAt':{'type':Sequelize[_0xc13c('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xc13c('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xc13c('0x5')]('in',_0xc13c('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xc13c('0x1')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xc13c('0x6')]}};
\ No newline at end of file
index fec4fae..cd2d987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44ff=['setTags','spread','Tag','whatsappInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','lastName','Attachment','Messages','direction','secret','read','get','mkdirSync','Account','Owner','N.A.','createdAt','closed','closedAt','disposition','basename','createReadStream','pipe','createWriteStream','out','System','firstName','value','renderFile','views','downloadInteraction.ejs','transcript-','Whatsapp','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','count','offset','set','Content-Range','update','then','error','stack','name','send','index','map','WhatsappInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','whatsapp','user','catch','show','model','keys','query','filters','intersection','attributes','include','merge','options','find','create','body','destroy','describe','WhatsappMessage','ids','omit','getMessages','findOne','params','fields','length','nolimit','limit','order','sort','where','pick','WhatsappInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags'];(function(_0x2e6c19,_0x131233){var _0x52885d=function(_0x38f224){while(--_0x38f224){_0x2e6c19['push'](_0x2e6c19['shift']());}};_0x52885d(++_0x131233);}(_0x44ff,0x13c));var _0xf44f=function(_0x231b1e,_0x14795d){_0x231b1e=_0x231b1e-0x0;var _0x549c0f=_0x44ff[_0x231b1e];return _0x549c0f;};'use strict';var rimraf=require(_0xf44f('0x0'));var zipdir=require(_0xf44f('0x1'));var moment=require(_0xf44f('0x2'));var BPromise=require(_0xf44f('0x3'));var util=require('util');var path=require(_0xf44f('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xf44f('0x5'));var Redis=require(_0xf44f('0x6'));var interaction=require(_0xf44f('0x7'));var qs=require(_0xf44f('0x8'));var pdf=require(_0xf44f('0x9'));var logger=require(_0xf44f('0xa'))(_0xf44f('0xb'));var config=require('../../config/environment');var db=require(_0xf44f('0xc'))['db'];config['redis']=_['defaults'](config[_0xf44f('0xd')],{'host':_0xf44f('0xe'),'port':0x18eb});var socket=require(_0xf44f('0xf'))(new Redis(config[_0xf44f('0xd')]));require('./whatsappInteraction.socket')[_0xf44f('0x10')](socket);function respondWithStatusCode(_0x3f3499,_0x3a367f){_0x3a367f=_0x3a367f||0xcc;return function(_0x44133f){if(_0x44133f){return _0x3f3499[_0xf44f('0x11')](_0x3a367f);}return _0x3f3499[_0xf44f('0x12')](_0x3a367f)[_0xf44f('0x13')]();};}function respondWithResult(_0x4f0a87,_0xf9a64f){_0xf9a64f=_0xf9a64f||0xc8;return function(_0x4cebe9){if(_0x4cebe9){return _0x4f0a87[_0xf44f('0x12')](_0xf9a64f)[_0xf44f('0x14')](_0x4cebe9);}};}function respondWithFilteredResult(_0x3cb91c,_0x52e6bd){return function(_0x20a88d){if(_0x20a88d){var _0x31fb8f=typeof _0x52e6bd['offset']==='undefined'&&typeof _0x52e6bd['limit']==='undefined';var _0x338910=_0x20a88d[_0xf44f('0x15')];var _0x251cc7=_0x31fb8f?0x0:_0x52e6bd['offset'];var _0x3206f6=_0x31fb8f?_0x20a88d[_0xf44f('0x15')]:_0x52e6bd[_0xf44f('0x16')]+_0x52e6bd['limit'];var _0x2d2ff5;if(_0x3206f6>=_0x338910){_0x3206f6=_0x338910;_0x2d2ff5=0xc8;}else{_0x2d2ff5=0xce;}_0x3cb91c[_0xf44f('0x12')](_0x2d2ff5);return _0x3cb91c[_0xf44f('0x17')](_0xf44f('0x18'),_0x251cc7+'-'+_0x3206f6+'/'+_0x338910)[_0xf44f('0x14')](_0x20a88d);}return null;};}function saveUpdates(_0x1a688f){return function(_0x3dc457){if(_0x3dc457){return _0x3dc457[_0xf44f('0x19')](_0x1a688f)[_0xf44f('0x1a')](function(_0x1529f2){return _0x1529f2;});}return null;};}function removeEntity(_0x248c8c){return function(_0x1c6b05){if(_0x1c6b05){return _0x1c6b05['destroy']()[_0xf44f('0x1a')](function(){_0x248c8c[_0xf44f('0x12')](0xcc)[_0xf44f('0x13')]();});}};}function handleEntityNotFound(_0x17f9fe){return function(_0x5159bd){if(!_0x5159bd){_0x17f9fe[_0xf44f('0x11')](0x194);}return _0x5159bd;};}function handleError(_0x588fa8,_0x519f32){_0x519f32=_0x519f32||0x1f4;return function(_0x4a1827){logger[_0xf44f('0x1b')](_0x4a1827[_0xf44f('0x1c')]);if(_0x4a1827[_0xf44f('0x1d')]){delete _0x4a1827[_0xf44f('0x1d')];}_0x588fa8[_0xf44f('0x12')](_0x519f32)[_0xf44f('0x1e')](_0x4a1827);};}exports[_0xf44f('0x1f')]=function(_0x41b2d9,_0x5b6021){var _0x304212={};var _0xa8a987=_[_0xf44f('0x20')](db[_0xf44f('0x21')][_0xf44f('0x22')],function(_0x4c073d){return{'name':_0x4c073d[_0xf44f('0x23')],'type':_0x4c073d[_0xf44f('0x24')][_0xf44f('0x25')]};});_0x304212=qs[_0xf44f('0x26')](_0xa8a987,_0x41b2d9);return interaction[_0xf44f('0x27')](_0xf44f('0x28'),_0x41b2d9['query'],_0x41b2d9[_0xf44f('0x29')],_0x304212,_0xa8a987)[_0xf44f('0x1a')](respondWithFilteredResult(_0x5b6021,_0x304212))[_0xf44f('0x2a')](handleError(_0x5b6021,null));};exports[_0xf44f('0x2b')]=function(_0x19e974,_0x43ba61){var _0x32aa71={'raw':![],'where':{'id':_0x19e974['params']['id']}},_0x353d49={};_0x353d49[_0xf44f('0x2c')]=_[_0xf44f('0x2d')](db[_0xf44f('0x21')][_0xf44f('0x22')]);_0x353d49['query']=_['keys'](_0x19e974[_0xf44f('0x2e')]);_0x353d49[_0xf44f('0x2f')]=_[_0xf44f('0x30')](_0x353d49['model'],_0x353d49['query']);_0x32aa71[_0xf44f('0x31')]=_[_0xf44f('0x30')](_0x353d49[_0xf44f('0x2c')],qs['fields'](_0x19e974[_0xf44f('0x2e')]['fields']));_0x32aa71[_0xf44f('0x31')]=_0x32aa71[_0xf44f('0x31')]['length']?_0x32aa71[_0xf44f('0x31')]:_0x353d49['model'];if(_0x19e974[_0xf44f('0x2e')]['includeAll']){_0x32aa71[_0xf44f('0x32')]=[{'all':!![]}];}_0x32aa71=_[_0xf44f('0x33')]({},_0x32aa71,_0x19e974[_0xf44f('0x34')]);return db[_0xf44f('0x21')][_0xf44f('0x35')](_0x32aa71)[_0xf44f('0x1a')](handleEntityNotFound(_0x43ba61,null))[_0xf44f('0x1a')](respondWithResult(_0x43ba61,null))[_0xf44f('0x2a')](handleError(_0x43ba61,null));};exports[_0xf44f('0x36')]=function(_0x15d3f6,_0x7d1f3f){return db['WhatsappInteraction'][_0xf44f('0x36')](_0x15d3f6[_0xf44f('0x37')],{})[_0xf44f('0x1a')](respondWithResult(_0x7d1f3f,0xc9))[_0xf44f('0x2a')](handleError(_0x7d1f3f,null));};exports[_0xf44f('0x19')]=function(_0x207546,_0xb9b828){if(_0x207546[_0xf44f('0x37')]['id']){delete _0x207546[_0xf44f('0x37')]['id'];}return db[_0xf44f('0x21')][_0xf44f('0x35')]({'where':{'id':_0x207546['params']['id']}})['then'](handleEntityNotFound(_0xb9b828,null))[_0xf44f('0x1a')](saveUpdates(_0x207546[_0xf44f('0x37')],null))[_0xf44f('0x1a')](respondWithResult(_0xb9b828,null))[_0xf44f('0x2a')](handleError(_0xb9b828,null));};exports[_0xf44f('0x38')]=function(_0xbebaec,_0xe99d64){return db[_0xf44f('0x21')]['find']({'where':{'id':_0xbebaec['params']['id']}})[_0xf44f('0x1a')](handleEntityNotFound(_0xe99d64,null))[_0xf44f('0x1a')](removeEntity(_0xe99d64,null))[_0xf44f('0x2a')](handleError(_0xe99d64,null));};exports[_0xf44f('0x39')]=function(_0x537e80,_0x2fde45){return db[_0xf44f('0x21')][_0xf44f('0x39')]()['then'](respondWithResult(_0x2fde45,null))[_0xf44f('0x2a')](handleError(_0x2fde45,null));};exports['addMessage']=function(_0x218ee0,_0x3d6a33){return db[_0xf44f('0x3a')]['find']({'where':{'id':_0x218ee0['params']['id']}})['then'](handleEntityNotFound(_0x3d6a33,null))[_0xf44f('0x1a')](function(_0x2855ae){if(_0x2855ae){return _0x2855ae['addMessage'](_0x218ee0[_0xf44f('0x37')][_0xf44f('0x3b')],_[_0xf44f('0x3c')](_0x218ee0[_0xf44f('0x37')],['ids','id'])||{});}})[_0xf44f('0x1a')](respondWithResult(_0x3d6a33,null))['catch'](handleError(_0x3d6a33,null));};exports[_0xf44f('0x3d')]=function(_0x5b56a5,_0xf48339){var _0x186c59={'raw':![],'where':{}};var _0x170bc3={};var _0x49132b={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xf44f('0x3e')]({'where':{'id':_0x5b56a5[_0xf44f('0x3f')]['id']}})[_0xf44f('0x1a')](handleEntityNotFound(_0xf48339,null))[_0xf44f('0x1a')](function(_0x1fc0a5){if(_0x1fc0a5){_0x170bc3[_0xf44f('0x2c')]=_[_0xf44f('0x2d')](db[_0xf44f('0x3a')][_0xf44f('0x22')]);_0x170bc3[_0xf44f('0x2e')]=_['keys'](_0x5b56a5[_0xf44f('0x2e')]);_0x170bc3['filters']=_[_0xf44f('0x30')](_0x170bc3[_0xf44f('0x2c')],_0x170bc3[_0xf44f('0x2e')]);_0x186c59['attributes']=_[_0xf44f('0x30')](_0x170bc3[_0xf44f('0x2c')],qs[_0xf44f('0x40')](_0x5b56a5[_0xf44f('0x2e')]['fields']));_0x186c59[_0xf44f('0x31')]=_0x186c59['attributes'][_0xf44f('0x41')]?_0x186c59[_0xf44f('0x31')]:_0x170bc3[_0xf44f('0x2c')];if(!_0x5b56a5['query']['hasOwnProperty'](_0xf44f('0x42'))){_0x186c59['limit']=qs[_0xf44f('0x43')](_0x5b56a5[_0xf44f('0x2e')][_0xf44f('0x43')]);_0x186c59[_0xf44f('0x16')]=qs[_0xf44f('0x16')](_0x5b56a5[_0xf44f('0x2e')][_0xf44f('0x16')]);}_0x186c59[_0xf44f('0x44')]=qs['sort'](_0x5b56a5[_0xf44f('0x2e')][_0xf44f('0x45')]);_0x186c59[_0xf44f('0x46')]=qs[_0xf44f('0x2f')](_[_0xf44f('0x47')](_0x5b56a5[_0xf44f('0x2e')],_0x170bc3[_0xf44f('0x2f')]));_0x186c59[_0xf44f('0x46')][_0xf44f('0x48')]=_0x1fc0a5['id'];if(_0x5b56a5[_0xf44f('0x2e')][_0xf44f('0x49')]){_0x186c59[_0xf44f('0x46')]=_['merge'](_0x186c59['where'],{'$or':_['map'](_0x186c59[_0xf44f('0x31')],function(_0x34a6bd){var _0x5d5b90={};_0x5d5b90[_0x34a6bd]={'$like':'%'+_0x5b56a5[_0xf44f('0x2e')][_0xf44f('0x49')]+'%'};return _0x5d5b90;})});}if(_0x5b56a5[_0xf44f('0x2e')][_0xf44f('0x4a')]){var _0x58e564=_0x5b56a5[_0xf44f('0x2e')]['$gte'][_0xf44f('0x4b')](',');var _0x55afab={};_0x55afab[_0x58e564[0x0]]={'$gte':moment(_0x58e564[0x1])[_0xf44f('0x4c')](_0xf44f('0x4d'))};_0x186c59['where']=_['merge'](_0x186c59[_0xf44f('0x46')],_0x55afab);}_0x186c59=_['merge']({},_0x186c59,_0x5b56a5[_0xf44f('0x34')]);return db[_0xf44f('0x3a')][_0xf44f('0x15')]({'where':_0x186c59[_0xf44f('0x46')]})[_0xf44f('0x1a')](function(_0x295989){_0x49132b['count']=_0x295989;if(_0x5b56a5[_0xf44f('0x2e')][_0xf44f('0x4e')]){_0x186c59[_0xf44f('0x32')]=[{'all':!![]}];}return db[_0xf44f('0x3a')]['findAll'](_0x186c59);})[_0xf44f('0x1a')](function(_0x6cccb2){_0x49132b['rows']=_0x6cccb2;return _0x49132b;});}})['then'](respondWithFilteredResult(_0xf48339,_0x186c59))[_0xf44f('0x2a')](handleError(_0xf48339,null));};exports[_0xf44f('0x4f')]=function(_0x193ad9,_0x24d40d){return db[_0xf44f('0x21')][_0xf44f('0x35')]({'where':{'id':_0x193ad9[_0xf44f('0x3f')]['id']}})[_0xf44f('0x1a')](handleEntityNotFound(_0x24d40d,null))[_0xf44f('0x1a')](function(_0x2ebe8b){if(_0x2ebe8b){return _0x2ebe8b[_0xf44f('0x50')](_0x193ad9['body'][_0xf44f('0x3b')],_[_0xf44f('0x3c')](_0x193ad9[_0xf44f('0x37')],[_0xf44f('0x3b'),'id'])||{})[_0xf44f('0x51')](function(){return db[_0xf44f('0x52')][_0xf44f('0x27')]({'attributes':['id',_0xf44f('0x1d'),'color'],'where':{'id':_0x193ad9[_0xf44f('0x37')][_0xf44f('0x3b')]}});})[_0xf44f('0x1a')](function(_0x1ed8f4){socket['emit'](_0xf44f('0x53'),{'id':Number(_0x193ad9[_0xf44f('0x3f')]['id']),'tags':_0x1ed8f4||[]});return{'id':Number(_0x193ad9[_0xf44f('0x3f')]['id']),'tags':_0x1ed8f4||[]};});}})[_0xf44f('0x1a')](respondWithResult(_0x24d40d,null))['catch'](handleError(_0x24d40d,null));};exports[_0xf44f('0x54')]=function(_0x328c3d,_0x28c897){return db[_0xf44f('0x21')][_0xf44f('0x35')]({'where':{'id':_0x328c3d[_0xf44f('0x3f')]['id']}})['then'](handleEntityNotFound(_0x28c897,null))[_0xf44f('0x1a')](function(_0x13e65d){if(_0x13e65d){return _0x13e65d[_0xf44f('0x54')](_0x328c3d[_0xf44f('0x2e')]['ids']);}})['then'](respondWithStatusCode(_0x28c897,null))['catch'](handleError(_0x28c897,null));};exports[_0xf44f('0x55')]=function(_0x814dc8,_0x404927){var _0x492c6f=moment()[_0xf44f('0x56')]()[_0xf44f('0x57')]();var _0x2dc11a=path[_0xf44f('0x58')](config[_0xf44f('0x59')],_0xf44f('0x5a'),_0xf44f('0x5b'),_0xf44f('0x5c'));var _0x267bc6=path[_0xf44f('0x58')](config[_0xf44f('0x59')],'server',_0xf44f('0x5b'),_0xf44f('0x5d'));var _0x5b71a3=path[_0xf44f('0x58')](_0x2dc11a,_0x492c6f);var _0x4a0436=util['format'](_0xf44f('0x5e'),_0x814dc8[_0xf44f('0x3f')]['id'],_0x492c6f);var _0x4ef600=path[_0xf44f('0x58')](_0x2dc11a,_0x4a0436);var _0x1d7c3b=[];_0x1d7c3b[_0xf44f('0x5f')]({'model':db[_0xf44f('0x60')],'as':_0xf44f('0x60'),'attributes':['id',_0xf44f('0x61')],'raw':!![]});_0x1d7c3b['push']({'model':db[_0xf44f('0x62')],'as':_0xf44f('0x63'),'attributes':['id','firstName',_0xf44f('0x64')],'raw':!![]});if(_0x814dc8[_0xf44f('0x2e')]['attachments']){_0x1d7c3b[_0xf44f('0x5f')]({'model':db[_0xf44f('0x65')],'as':'Attachment','raw':!![]});}var _0x48e146=[{'model':db[_0xf44f('0x3a')],'as':_0xf44f('0x66'),'attributes':['id',_0xf44f('0x37'),'createdAt',_0xf44f('0x67'),_0xf44f('0x68'),_0xf44f('0x69')],'include':_0x1d7c3b}];_0x48e146['push']({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0xf44f('0x1d')]});_0x48e146[_0xf44f('0x5f')]({'model':db[_0xf44f('0x60')],'as':'Owner','attributes':['id',_0xf44f('0x61')]});return db['WhatsappInteraction'][_0xf44f('0x35')]({'where':{'id':_0x814dc8['params']['id']},'include':_0x48e146})[_0xf44f('0x1a')](handleEntityNotFound(_0x404927,null))[_0xf44f('0x1a')](function(_0xe9c37a){if(_0xe9c37a){var _0x25f1ba=_0xe9c37a[_0xf44f('0x6a')]({'plain':!![]});fs[_0xf44f('0x6b')](_0x5b71a3);var _0x24157a={'channel':'Whatsapp','account':_0x25f1ba[_0xf44f('0x6c')][_0xf44f('0x1d')],'agent':_0x25f1ba['Owner']?_0x25f1ba[_0xf44f('0x6d')][_0xf44f('0x61')]:_0xf44f('0x6e'),'createdAt':moment(_0x25f1ba[_0xf44f('0x6f')])[_0xf44f('0x4c')](_0xf44f('0x4d'))[_0xf44f('0x57')](),'closedAt':_0x25f1ba[_0xf44f('0x70')]?moment(_0x25f1ba[_0xf44f('0x71')])[_0xf44f('0x4c')](_0xf44f('0x4d'))[_0xf44f('0x57')]():'','disposition':_0x25f1ba[_0xf44f('0x72')],'messages':_(_0x25f1ba[_0xf44f('0x66')])[_0xf44f('0x49')]({'secret':![]})[_0xf44f('0x20')](function(_0x36022b){if(_0x36022b['Attachment']){var _0x50e115=path[_0xf44f('0x58')](_0x267bc6,_0x36022b[_0xf44f('0x65')][_0xf44f('0x73')]);if(fs['existsSync'](_0x50e115)){fs[_0xf44f('0x74')](_0x50e115)[_0xf44f('0x75')](fs[_0xf44f('0x76')](path[_0xf44f('0x58')](_0x5b71a3,_0x36022b[_0xf44f('0x65')][_0xf44f('0x73')])));}}return{'date':moment(_0x36022b['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x36022b[_0xf44f('0x67')]===_0xf44f('0x77')?_0x36022b[_0xf44f('0x60')]?_0x36022b['User'][_0xf44f('0x61')]:_0xf44f('0x78'):_0x36022b[_0xf44f('0x63')][_0xf44f('0x79')]+(_0x36022b[_0xf44f('0x63')][_0xf44f('0x64')]?'\x20'+_0x36022b['Contact']['lastName']:''),'body':_0x36022b[_0xf44f('0x65')]?_0x36022b[_0xf44f('0x65')][_0xf44f('0x73')]:_0x36022b['body'],'direction':_0x36022b['direction']==='out'?'A':'C','secret':_0x36022b['secret'],'read':_0x36022b['read'],'attachment':_0x36022b[_0xf44f('0x65')]};})[_0xf44f('0x7a')]()};return ejs[_0xf44f('0x7b')](path['join'](config[_0xf44f('0x59')],_0xf44f('0x5a'),_0xf44f('0x7c'),_0xf44f('0x7d')),{'interaction':_0x24157a})['then'](function(_0x58240f){var _0x3fb5d5=path[_0xf44f('0x58')](_0x5b71a3,_0xf44f('0x7e')+_0x25f1ba['id']+'-'+_0x492c6f+'.pdf');var _0x3b2467={'path':_0x3fb5d5,'channel':_0xf44f('0x7f'),'interactionId':_0x25f1ba['id']};return pdf[_0xf44f('0x80')](_0x58240f,_0x3b2467);})[_0xf44f('0x1a')](function(){return new BPromise(function(_0x1057b8,_0x3fb234){zipdir(_0x5b71a3,{'saveTo':_0x4ef600},function(_0x85ed29,_0x2b8430){if(_0x85ed29)return _0x3fb234(_0x85ed29);return _0x1057b8(_0x2b8430);});})['then'](function(){return new BPromise(function(_0x4a88a2,_0x2cf1ea){rimraf(_0x5b71a3,function(_0x44a8fc){if(_0x44a8fc)_0x2cf1ea(_0x44a8fc);return _0x4a88a2();});});})[_0xf44f('0x1a')](function(){return _0x404927[_0xf44f('0x55')](_0x4ef600,_0x4a0436,function(_0x17a78a){if(_0x17a78a){console[_0xf44f('0x81')](_0xf44f('0x82'),_0x17a78a);}else{fs[_0xf44f('0x83')](_0x4ef600);}});});});}else{return _0x404927[_0xf44f('0x11')](0xc8);}})[_0xf44f('0x2a')](handleError(_0x404927,null));};
\ No newline at end of file
+var _0xabb5=['basename','existsSync','pipe','out','firstName','secret','value','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','moment','bluebird','path','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','sendStatus','status','end','offset','limit','count','set','Content-Range','update','then','error','name','send','index','map','WhatsappInteraction','rawAttributes','fieldName','type','getOptions','findAll','whatsapp','query','user','show','model','keys','filters','intersection','attributes','fields','includeAll','include','options','find','create','body','params','catch','describe','WhatsappMessage','ids','omit','getMessages','findOne','length','nolimit','order','sort','pick','where','WhatsappInteractionId','filter','$gte','split','format','merge','addTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','join','server','tmp','root','files','attachments','push','User','fullname','CmContact','Contact','lastName','Attachment','Messages','createdAt','direction','read','Owner','mkdirSync','Whatsapp','N.A.','YYYY-MM-DD\x20HH:mm:ss','toString','closedAt','disposition'];(function(_0x32e6b0,_0x1968ce){var _0x840c53=function(_0x622d4e){while(--_0x622d4e){_0x32e6b0['push'](_0x32e6b0['shift']());}};_0x840c53(++_0x1968ce);}(_0xabb5,0x1e2));var _0x5abb=function(_0x546ccd,_0x2342db){_0x546ccd=_0x546ccd-0x0;var _0x560093=_0xabb5[_0x546ccd];return _0x560093;};'use strict';var rimraf=require(_0x5abb('0x0'));var zipdir=require(_0x5abb('0x1'));var moment=require(_0x5abb('0x2'));var BPromise=require(_0x5abb('0x3'));var util=require('util');var path=require(_0x5abb('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var Redis=require(_0x5abb('0x5'));var interaction=require('../../components/interaction/service');var qs=require(_0x5abb('0x6'));var pdf=require('../../components/export/pdf');var logger=require(_0x5abb('0x7'))('api');var config=require(_0x5abb('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x5abb('0x9')](config[_0x5abb('0xa')],{'host':_0x5abb('0xb'),'port':0x18eb});var socket=require(_0x5abb('0xc'))(new Redis(config[_0x5abb('0xa')]));require(_0x5abb('0xd'))['register'](socket);function respondWithStatusCode(_0x37bbf9,_0x1576e9){_0x1576e9=_0x1576e9||0xcc;return function(_0x40d9b2){if(_0x40d9b2){return _0x37bbf9[_0x5abb('0xe')](_0x1576e9);}return _0x37bbf9[_0x5abb('0xf')](_0x1576e9)[_0x5abb('0x10')]();};}function respondWithResult(_0x56031e,_0x1b0255){_0x1b0255=_0x1b0255||0xc8;return function(_0x326826){if(_0x326826){return _0x56031e['status'](_0x1b0255)['json'](_0x326826);}};}function respondWithFilteredResult(_0x4529c4,_0x3fd1a9){return function(_0x55d2dc){if(_0x55d2dc){var _0x137878=typeof _0x3fd1a9[_0x5abb('0x11')]==='undefined'&&typeof _0x3fd1a9[_0x5abb('0x12')]==='undefined';var _0x455ab5=_0x55d2dc['count'];var _0x545d56=_0x137878?0x0:_0x3fd1a9['offset'];var _0xb6146c=_0x137878?_0x55d2dc[_0x5abb('0x13')]:_0x3fd1a9[_0x5abb('0x11')]+_0x3fd1a9[_0x5abb('0x12')];var _0x2eaddd;if(_0xb6146c>=_0x455ab5){_0xb6146c=_0x455ab5;_0x2eaddd=0xc8;}else{_0x2eaddd=0xce;}_0x4529c4[_0x5abb('0xf')](_0x2eaddd);return _0x4529c4[_0x5abb('0x14')](_0x5abb('0x15'),_0x545d56+'-'+_0xb6146c+'/'+_0x455ab5)['json'](_0x55d2dc);}return null;};}function saveUpdates(_0x1663bf){return function(_0x3414b4){if(_0x3414b4){return _0x3414b4[_0x5abb('0x16')](_0x1663bf)[_0x5abb('0x17')](function(_0x5cdc3a){return _0x5cdc3a;});}return null;};}function removeEntity(_0x54e48e){return function(_0x2c7cf2){if(_0x2c7cf2){return _0x2c7cf2['destroy']()[_0x5abb('0x17')](function(){_0x54e48e[_0x5abb('0xf')](0xcc)[_0x5abb('0x10')]();});}};}function handleEntityNotFound(_0x33bbc8){return function(_0x9ef4a5){if(!_0x9ef4a5){_0x33bbc8[_0x5abb('0xe')](0x194);}return _0x9ef4a5;};}function handleError(_0x2d3f58,_0x17f315){_0x17f315=_0x17f315||0x1f4;return function(_0x411bad){logger[_0x5abb('0x18')](_0x411bad['stack']);if(_0x411bad[_0x5abb('0x19')]){delete _0x411bad[_0x5abb('0x19')];}_0x2d3f58[_0x5abb('0xf')](_0x17f315)[_0x5abb('0x1a')](_0x411bad);};}exports[_0x5abb('0x1b')]=function(_0x115fec,_0x2f736f){var _0xd9c1cc={};var _0x5d84ef=_[_0x5abb('0x1c')](db[_0x5abb('0x1d')][_0x5abb('0x1e')],function(_0x20d276){return{'name':_0x20d276[_0x5abb('0x1f')],'type':_0x20d276[_0x5abb('0x20')]['key']};});_0xd9c1cc=qs[_0x5abb('0x21')](_0x5d84ef,_0x115fec);return interaction[_0x5abb('0x22')](_0x5abb('0x23'),_0x115fec[_0x5abb('0x24')],_0x115fec[_0x5abb('0x25')],_0xd9c1cc,_0x5d84ef)['then'](respondWithFilteredResult(_0x2f736f,_0xd9c1cc))['catch'](handleError(_0x2f736f,null));};exports[_0x5abb('0x26')]=function(_0x51d8ef,_0x17fe31){var _0x275ac9={'raw':![],'where':{'id':_0x51d8ef['params']['id']}},_0x17d8e0={};_0x17d8e0[_0x5abb('0x27')]=_[_0x5abb('0x28')](db[_0x5abb('0x1d')]['rawAttributes']);_0x17d8e0['query']=_[_0x5abb('0x28')](_0x51d8ef[_0x5abb('0x24')]);_0x17d8e0[_0x5abb('0x29')]=_[_0x5abb('0x2a')](_0x17d8e0[_0x5abb('0x27')],_0x17d8e0[_0x5abb('0x24')]);_0x275ac9[_0x5abb('0x2b')]=_[_0x5abb('0x2a')](_0x17d8e0['model'],qs['fields'](_0x51d8ef[_0x5abb('0x24')][_0x5abb('0x2c')]));_0x275ac9[_0x5abb('0x2b')]=_0x275ac9[_0x5abb('0x2b')]['length']?_0x275ac9[_0x5abb('0x2b')]:_0x17d8e0['model'];if(_0x51d8ef[_0x5abb('0x24')][_0x5abb('0x2d')]){_0x275ac9[_0x5abb('0x2e')]=[{'all':!![]}];}_0x275ac9=_['merge']({},_0x275ac9,_0x51d8ef[_0x5abb('0x2f')]);return db[_0x5abb('0x1d')][_0x5abb('0x30')](_0x275ac9)[_0x5abb('0x17')](handleEntityNotFound(_0x17fe31,null))[_0x5abb('0x17')](respondWithResult(_0x17fe31,null))['catch'](handleError(_0x17fe31,null));};exports[_0x5abb('0x31')]=function(_0x33b5fa,_0x59723e){return db[_0x5abb('0x1d')]['create'](_0x33b5fa[_0x5abb('0x32')],{})[_0x5abb('0x17')](respondWithResult(_0x59723e,0xc9))['catch'](handleError(_0x59723e,null));};exports[_0x5abb('0x16')]=function(_0x5f34ea,_0x29b47d){if(_0x5f34ea[_0x5abb('0x32')]['id']){delete _0x5f34ea['body']['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x5f34ea[_0x5abb('0x33')]['id']}})[_0x5abb('0x17')](handleEntityNotFound(_0x29b47d,null))[_0x5abb('0x17')](saveUpdates(_0x5f34ea[_0x5abb('0x32')],null))['then'](respondWithResult(_0x29b47d,null))[_0x5abb('0x34')](handleError(_0x29b47d,null));};exports['destroy']=function(_0x12fc12,_0x2e6bd0){return db[_0x5abb('0x1d')][_0x5abb('0x30')]({'where':{'id':_0x12fc12[_0x5abb('0x33')]['id']}})[_0x5abb('0x17')](handleEntityNotFound(_0x2e6bd0,null))['then'](removeEntity(_0x2e6bd0,null))[_0x5abb('0x34')](handleError(_0x2e6bd0,null));};exports[_0x5abb('0x35')]=function(_0x41d5fe,_0xc50bad){return db[_0x5abb('0x1d')][_0x5abb('0x35')]()[_0x5abb('0x17')](respondWithResult(_0xc50bad,null))['catch'](handleError(_0xc50bad,null));};exports['addMessage']=function(_0x1965d4,_0x735946){return db[_0x5abb('0x36')]['find']({'where':{'id':_0x1965d4[_0x5abb('0x33')]['id']}})['then'](handleEntityNotFound(_0x735946,null))[_0x5abb('0x17')](function(_0x5d836f){if(_0x5d836f){return _0x5d836f['addMessage'](_0x1965d4['body'][_0x5abb('0x37')],_[_0x5abb('0x38')](_0x1965d4[_0x5abb('0x32')],[_0x5abb('0x37'),'id'])||{});}})[_0x5abb('0x17')](respondWithResult(_0x735946,null))[_0x5abb('0x34')](handleError(_0x735946,null));};exports[_0x5abb('0x39')]=function(_0x4f7c2c,_0x382ba4){var _0x1b99d3={'raw':![],'where':{}};var _0x2fa42f={};var _0x49ab61={'count':0x0,'rows':[]};return db[_0x5abb('0x1d')][_0x5abb('0x3a')]({'where':{'id':_0x4f7c2c['params']['id']}})['then'](handleEntityNotFound(_0x382ba4,null))[_0x5abb('0x17')](function(_0x25954b){if(_0x25954b){_0x2fa42f[_0x5abb('0x27')]=_[_0x5abb('0x28')](db[_0x5abb('0x36')][_0x5abb('0x1e')]);_0x2fa42f[_0x5abb('0x24')]=_['keys'](_0x4f7c2c[_0x5abb('0x24')]);_0x2fa42f[_0x5abb('0x29')]=_[_0x5abb('0x2a')](_0x2fa42f[_0x5abb('0x27')],_0x2fa42f[_0x5abb('0x24')]);_0x1b99d3[_0x5abb('0x2b')]=_[_0x5abb('0x2a')](_0x2fa42f[_0x5abb('0x27')],qs[_0x5abb('0x2c')](_0x4f7c2c['query']['fields']));_0x1b99d3[_0x5abb('0x2b')]=_0x1b99d3[_0x5abb('0x2b')][_0x5abb('0x3b')]?_0x1b99d3[_0x5abb('0x2b')]:_0x2fa42f[_0x5abb('0x27')];if(!_0x4f7c2c[_0x5abb('0x24')]['hasOwnProperty'](_0x5abb('0x3c'))){_0x1b99d3[_0x5abb('0x12')]=qs[_0x5abb('0x12')](_0x4f7c2c[_0x5abb('0x24')][_0x5abb('0x12')]);_0x1b99d3['offset']=qs[_0x5abb('0x11')](_0x4f7c2c[_0x5abb('0x24')][_0x5abb('0x11')]);}_0x1b99d3[_0x5abb('0x3d')]=qs[_0x5abb('0x3e')](_0x4f7c2c[_0x5abb('0x24')]['sort']);_0x1b99d3['where']=qs[_0x5abb('0x29')](_[_0x5abb('0x3f')](_0x4f7c2c['query'],_0x2fa42f[_0x5abb('0x29')]));_0x1b99d3[_0x5abb('0x40')][_0x5abb('0x41')]=_0x25954b['id'];if(_0x4f7c2c[_0x5abb('0x24')]['filter']){_0x1b99d3[_0x5abb('0x40')]=_['merge'](_0x1b99d3[_0x5abb('0x40')],{'$or':_[_0x5abb('0x1c')](_0x1b99d3[_0x5abb('0x2b')],function(_0xaa2d4c){var _0x3dba3a={};_0x3dba3a[_0xaa2d4c]={'$like':'%'+_0x4f7c2c[_0x5abb('0x24')][_0x5abb('0x42')]+'%'};return _0x3dba3a;})});}if(_0x4f7c2c[_0x5abb('0x24')][_0x5abb('0x43')]){var _0x4ec85f=_0x4f7c2c['query'][_0x5abb('0x43')][_0x5abb('0x44')](',');var _0x40aa3e={};_0x40aa3e[_0x4ec85f[0x0]]={'$gte':moment(_0x4ec85f[0x1])[_0x5abb('0x45')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1b99d3[_0x5abb('0x40')]=_[_0x5abb('0x46')](_0x1b99d3[_0x5abb('0x40')],_0x40aa3e);}_0x1b99d3=_[_0x5abb('0x46')]({},_0x1b99d3,_0x4f7c2c[_0x5abb('0x2f')]);return db['WhatsappMessage'][_0x5abb('0x13')]({'where':_0x1b99d3[_0x5abb('0x40')]})['then'](function(_0x224a36){_0x49ab61[_0x5abb('0x13')]=_0x224a36;if(_0x4f7c2c['query'][_0x5abb('0x2d')]){_0x1b99d3['include']=[{'all':!![]}];}return db[_0x5abb('0x36')][_0x5abb('0x22')](_0x1b99d3);})[_0x5abb('0x17')](function(_0x533caf){_0x49ab61['rows']=_0x533caf;return _0x49ab61;});}})['then'](respondWithFilteredResult(_0x382ba4,_0x1b99d3))[_0x5abb('0x34')](handleError(_0x382ba4,null));};exports[_0x5abb('0x47')]=function(_0x127c3a,_0x5e0ce0){return db[_0x5abb('0x1d')][_0x5abb('0x30')]({'where':{'id':_0x127c3a[_0x5abb('0x33')]['id']}})[_0x5abb('0x17')](handleEntityNotFound(_0x5e0ce0,null))[_0x5abb('0x17')](function(_0x1e2a4d){if(_0x1e2a4d){return _0x1e2a4d['setTags'](_0x127c3a[_0x5abb('0x32')][_0x5abb('0x37')],_[_0x5abb('0x38')](_0x127c3a[_0x5abb('0x32')],[_0x5abb('0x37'),'id'])||{})[_0x5abb('0x48')](function(){return db[_0x5abb('0x49')][_0x5abb('0x22')]({'attributes':['id',_0x5abb('0x19'),_0x5abb('0x4a')],'where':{'id':_0x127c3a['body'][_0x5abb('0x37')]}});})['then'](function(_0x1ccd20){socket[_0x5abb('0x4b')](_0x5abb('0x4c'),{'id':Number(_0x127c3a[_0x5abb('0x33')]['id']),'tags':_0x1ccd20||[]});return{'id':Number(_0x127c3a[_0x5abb('0x33')]['id']),'tags':_0x1ccd20||[]};});}})[_0x5abb('0x17')](respondWithResult(_0x5e0ce0,null))[_0x5abb('0x34')](handleError(_0x5e0ce0,null));};exports[_0x5abb('0x4d')]=function(_0x3affe2,_0x1776df){return db[_0x5abb('0x1d')]['find']({'where':{'id':_0x3affe2[_0x5abb('0x33')]['id']}})['then'](handleEntityNotFound(_0x1776df,null))['then'](function(_0x3c7588){if(_0x3c7588){return _0x3c7588[_0x5abb('0x4d')](_0x3affe2[_0x5abb('0x24')][_0x5abb('0x37')]);}})[_0x5abb('0x17')](respondWithStatusCode(_0x1776df,null))[_0x5abb('0x34')](handleError(_0x1776df,null));};exports['download']=function(_0xde8984,_0x191bbb){var _0x1341b6=moment()['unix']()['toString']();var _0x2f3dc2=path[_0x5abb('0x4e')](config['root'],_0x5abb('0x4f'),'files',_0x5abb('0x50'));var _0x3ca1c7=path['join'](config[_0x5abb('0x51')],_0x5abb('0x4f'),_0x5abb('0x52'),_0x5abb('0x53'));var _0x2287dc=path[_0x5abb('0x4e')](_0x2f3dc2,_0x1341b6);var _0x39f6f1=util[_0x5abb('0x45')]('transcript-%d-%s.zip',_0xde8984[_0x5abb('0x33')]['id'],_0x1341b6);var _0x4f2d8f=path[_0x5abb('0x4e')](_0x2f3dc2,_0x39f6f1);var _0x282ffb=[];_0x282ffb[_0x5abb('0x54')]({'model':db[_0x5abb('0x55')],'as':_0x5abb('0x55'),'attributes':['id',_0x5abb('0x56')],'raw':!![]});_0x282ffb[_0x5abb('0x54')]({'model':db[_0x5abb('0x57')],'as':_0x5abb('0x58'),'attributes':['id','firstName',_0x5abb('0x59')],'raw':!![]});if(_0xde8984[_0x5abb('0x24')]['attachments']){_0x282ffb[_0x5abb('0x54')]({'model':db['Attachment'],'as':_0x5abb('0x5a'),'raw':!![]});}var _0x1a34da=[{'model':db[_0x5abb('0x36')],'as':_0x5abb('0x5b'),'attributes':['id',_0x5abb('0x32'),_0x5abb('0x5c'),_0x5abb('0x5d'),'secret',_0x5abb('0x5e')],'include':_0x282ffb}];_0x1a34da[_0x5abb('0x54')]({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0x5abb('0x19')]});_0x1a34da[_0x5abb('0x54')]({'model':db[_0x5abb('0x55')],'as':_0x5abb('0x5f'),'attributes':['id','fullname']});return db[_0x5abb('0x1d')][_0x5abb('0x30')]({'where':{'id':_0xde8984[_0x5abb('0x33')]['id']},'include':_0x1a34da})[_0x5abb('0x17')](handleEntityNotFound(_0x191bbb,null))[_0x5abb('0x17')](function(_0x251747){if(_0x251747){var _0x2d32f6=_0x251747['get']({'plain':!![]});fs[_0x5abb('0x60')](_0x2287dc);var _0x1e6948={'channel':_0x5abb('0x61'),'account':_0x2d32f6['Account']['name'],'agent':_0x2d32f6[_0x5abb('0x5f')]?_0x2d32f6[_0x5abb('0x5f')][_0x5abb('0x56')]:_0x5abb('0x62'),'createdAt':moment(_0x2d32f6[_0x5abb('0x5c')])['format'](_0x5abb('0x63'))[_0x5abb('0x64')](),'closedAt':_0x2d32f6['closed']?moment(_0x2d32f6[_0x5abb('0x65')])[_0x5abb('0x45')](_0x5abb('0x63'))[_0x5abb('0x64')]():'','disposition':_0x2d32f6[_0x5abb('0x66')],'messages':_(_0x2d32f6['Messages'])[_0x5abb('0x42')]({'secret':![]})[_0x5abb('0x1c')](function(_0x28096b){if(_0x28096b['Attachment']){var _0x50ac87=path['join'](_0x3ca1c7,_0x28096b[_0x5abb('0x5a')][_0x5abb('0x67')]);if(fs[_0x5abb('0x68')](_0x50ac87)){fs['createReadStream'](_0x50ac87)[_0x5abb('0x69')](fs['createWriteStream'](path['join'](_0x2287dc,_0x28096b[_0x5abb('0x5a')][_0x5abb('0x67')])));}}return{'date':moment(_0x28096b[_0x5abb('0x5c')])[_0x5abb('0x45')]('YYYY-MM-DD\x20HH:mm:ss')[_0x5abb('0x64')](),'sender':_0x28096b[_0x5abb('0x5d')]===_0x5abb('0x6a')?_0x28096b['User']?_0x28096b[_0x5abb('0x55')][_0x5abb('0x56')]:'System':_0x28096b[_0x5abb('0x58')][_0x5abb('0x6b')]+(_0x28096b[_0x5abb('0x58')][_0x5abb('0x59')]?'\x20'+_0x28096b[_0x5abb('0x58')][_0x5abb('0x59')]:''),'body':_0x28096b['Attachment']?_0x28096b['Attachment'][_0x5abb('0x67')]:_0x28096b[_0x5abb('0x32')],'direction':_0x28096b[_0x5abb('0x5d')]===_0x5abb('0x6a')?'A':'C','secret':_0x28096b[_0x5abb('0x6c')],'read':_0x28096b[_0x5abb('0x5e')],'attachment':_0x28096b['Attachment']};})[_0x5abb('0x6d')]()};return ejs['renderFile'](path[_0x5abb('0x4e')](config[_0x5abb('0x51')],'server',_0x5abb('0x6e'),_0x5abb('0x6f')),{'interaction':_0x1e6948})[_0x5abb('0x17')](function(_0x4e3de8){var _0x1c5ccd=path['join'](_0x2287dc,_0x5abb('0x70')+_0x2d32f6['id']+'-'+_0x1341b6+_0x5abb('0x71'));var _0x2f6abc={'path':_0x1c5ccd,'channel':'Whatsapp','interactionId':_0x2d32f6['id']};return pdf[_0x5abb('0x72')](_0x4e3de8,_0x2f6abc);})[_0x5abb('0x17')](function(){return new BPromise(function(_0x27a0d7,_0x39ab4f){zipdir(_0x2287dc,{'saveTo':_0x4f2d8f},function(_0x21afb4,_0x14771e){if(_0x21afb4)return _0x39ab4f(_0x21afb4);return _0x27a0d7(_0x14771e);});})[_0x5abb('0x17')](function(){return new BPromise(function(_0x22c3cb,_0x4caef5){rimraf(_0x2287dc,function(_0x387d47){if(_0x387d47)_0x4caef5(_0x387d47);return _0x22c3cb();});});})[_0x5abb('0x17')](function(){return _0x191bbb['download'](_0x4f2d8f,_0x39f6f1,function(_0x2fb85a){if(_0x2fb85a){console['log'](_0x5abb('0x73'),_0x2fb85a);}else{fs[_0x5abb('0x74')](_0x4f2d8f);}});});});}else{return _0x191bbb[_0x5abb('0xe')](0xc8);}})[_0x5abb('0x34')](handleError(_0x191bbb,null));};
\ No newline at end of file
index 7e64669..d4d4b09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x152f=['exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','save','update','remove','getUsers','map','then','unreadMessages','length','emit','catch','hasOwnProperty','hook'];(function(_0x24d01a,_0xc3c1f2){var _0x5f01bb=function(_0x22b11e){while(--_0x22b11e){_0x24d01a['push'](_0x24d01a['shift']());}};_0x5f01bb(++_0xc3c1f2);}(_0x152f,0x144));var _0xf152=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0x152f[_0x257642];return _0x3d813b;};'use strict';var EventEmitter=require(_0xf152('0x0'));var WhatsappInteraction=require(_0xf152('0x1'))['db'][_0xf152('0x2')];var WhatsappMessage=require(_0xf152('0x1'))['db'][_0xf152('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf152('0x4'),'afterUpdate':_0xf152('0x5'),'afterDestroy':_0xf152('0x6')};function emitEvent(_0x303e32){return function(_0x51ddec,_0x286a5f,_0x542973){_0x51ddec[_0xf152('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x36498a){_0x51ddec['setDataValue']('Users',_0x36498a[_0xf152('0x8')](function(_0x270135){return{'id':_0x270135['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x51ddec['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf152('0x9')](function(_0x3223fa){_0x51ddec['setDataValue'](_0xf152('0xa'),_0x3223fa[_0xf152('0xb')]);WhatsappInteractionEvents[_0xf152('0xc')](_0x303e32+':'+_0x51ddec['id'],_0x51ddec);WhatsappInteractionEvents[_0xf152('0xc')](_0x303e32,_0x51ddec);_0x542973(null);})[_0xf152('0xd')](_0x542973(null));};}for(var e in events){if(events[_0xf152('0xe')](e)){var event=events[e];WhatsappInteraction[_0xf152('0xf')](e,emitEvent(event));}}module[_0xf152('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xd87e=['../../mysqldb','WhatsappMessage','setMaxListeners','update','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','exports','events'];(function(_0x111ca0,_0x4faf25){var _0x42d01c=function(_0x1f3aeb){while(--_0x1f3aeb){_0x111ca0['push'](_0x111ca0['shift']());}};_0x42d01c(++_0x4faf25);}(_0xd87e,0x1bf));var _0xed87=function(_0x58217c,_0x2aea63){_0x58217c=_0x58217c-0x0;var _0x4de8d6=_0xd87e[_0x58217c];return _0x4de8d6;};'use strict';var EventEmitter=require(_0xed87('0x0'));var WhatsappInteraction=require(_0xed87('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0xed87('0x1'))['db'][_0xed87('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xed87('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xed87('0x4'),'afterDestroy':'remove'};function emitEvent(_0x11a5d9){return function(_0x41ca7c,_0x5c9f03,_0x17adfe){_0x41ca7c['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0xa33c67){_0x41ca7c[_0xed87('0x5')](_0xed87('0x6'),_0xa33c67[_0xed87('0x7')](function(_0x569d66){return{'id':_0x569d66['id']};}));return WhatsappMessage[_0xed87('0x8')]({'where':{'WhatsappInteractionId':_0x41ca7c['id'],'direction':'in','read':![]},'raw':!![]});})[_0xed87('0x9')](function(_0x21d399){_0x41ca7c[_0xed87('0x5')](_0xed87('0xa'),_0x21d399[_0xed87('0xb')]);WhatsappInteractionEvents[_0xed87('0xc')](_0x11a5d9+':'+_0x41ca7c['id'],_0x41ca7c);WhatsappInteractionEvents['emit'](_0x11a5d9,_0x41ca7c);_0x17adfe(null);})[_0xed87('0xd')](_0x17adfe(null));};}for(var e in events){if(events[_0xed87('0xe')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0xed87('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index 9034591..7015350 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeb3=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','bluebird','path','rimraf','define','WhatsappInteraction','closed'];(function(_0x587da3,_0x7f5205){var _0x3047a3=function(_0x5b9893){while(--_0x5b9893){_0x587da3['push'](_0x587da3['shift']());}};_0x3047a3(++_0x7f5205);}(_0xeeb3,0xc3));var _0x3eeb=function(_0x4576db,_0x170123){_0x4576db=_0x4576db-0x0;var _0x5ea1c0=_0xeeb3[_0x4576db];return _0x5ea1c0;};'use strict';var _=require('lodash');var util=require(_0x3eeb('0x0'));var logger=require(_0x3eeb('0x1'))(_0x3eeb('0x2'));var moment=require('moment');var BPromise=require(_0x3eeb('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3eeb('0x4'));var rimraf=require(_0x3eeb('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0x35f4bd,_0x333984){return _0x35f4bd[_0x3eeb('0x6')](_0x3eeb('0x7'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4d2a57,_0x177a18,_0x53afe8){if(_0x4d2a57['changed'](_0x3eeb('0x8'))){_0x4d2a57[_0x3eeb('0x9')]=moment()[_0x3eeb('0xa')](_0x3eeb('0xb'));}_0x53afe8(null,_0x4d2a57);}}});};
\ No newline at end of file
+var _0x337f=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','WhatsappInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x337f,0x11c));var _0xf337=function(_0x4f0e29,_0x1f3709){_0x4f0e29=_0x4f0e29-0x0;var _0x310707=_0x337f[_0x4f0e29];return _0x310707;};'use strict';var _=require(_0xf337('0x0'));var util=require(_0xf337('0x1'));var logger=require(_0xf337('0x2'))('api');var moment=require(_0xf337('0x3'));var BPromise=require(_0xf337('0x4'));var rp=require(_0xf337('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf337('0x6'));var config=require(_0xf337('0x7'));var attributes=require('./whatsappInteraction.attributes');module[_0xf337('0x8')]=function(_0x485b2a,_0x4580a3){return _0x485b2a['define'](_0xf337('0x9'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4b80a2,_0x1f0a95,_0x5a8308){if(_0x4b80a2[_0xf337('0xa')](_0xf337('0xb'))){_0x4b80a2[_0xf337('0xc')]=moment()[_0xf337('0xd')](_0xf337('0xe'));}_0x5a8308(null,_0x4b80a2);}}});};
\ No newline at end of file
index 2245d5f..2d42902 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4f=['debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappInteraction','body','raw','options','where','attributes','limit','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent'];(function(_0xb5942f,_0x56940f){var _0x394025=function(_0x562b52){while(--_0x562b52){_0xb5942f['push'](_0xb5942f['shift']());}};_0x394025(++_0x56940f);}(_0xee4f,0x10c));var _0xfee4=function(_0x4e9d76,_0xeec4ae){_0x4e9d76=_0x4e9d76-0x0;var _0x12f4bf=_0xee4f[_0x4e9d76];return _0x12f4bf;};'use strict';var _=require(_0xfee4('0x0'));var util=require(_0xfee4('0x1'));var moment=require(_0xfee4('0x2'));var BPromise=require(_0xfee4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfee4('0x4'));var db=require(_0xfee4('0x5'))['db'];var utils=require(_0xfee4('0x6'));var logger=require(_0xfee4('0x7'))('rpc');var config=require(_0xfee4('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xfee4('0x9')]=_[_0xfee4('0xa')](config['redis'],{'host':_0xfee4('0xb'),'port':0x18eb});var socket=require(_0xfee4('0xc'))(new Redis(config[_0xfee4('0x9')]));require(_0xfee4('0xd'))[_0xfee4('0xe')](socket);function respondWithRpcPromise(_0x16aa48,_0x3d11d6,_0x4317c2){return new BPromise(function(_0x51a2e3,_0x4efb38){return client['request'](_0x16aa48,_0x4317c2)[_0xfee4('0xf')](function(_0x318116){logger[_0xfee4('0x10')](_0xfee4('0x11'),_0x3d11d6,_0xfee4('0x12'));logger[_0xfee4('0x13')](_0xfee4('0x14'),_0x3d11d6,_0xfee4('0x12'),JSON[_0xfee4('0x15')](_0x318116));if(_0x318116[_0xfee4('0x16')]){if(_0x318116[_0xfee4('0x16')][_0xfee4('0x17')]===0x1f4){logger[_0xfee4('0x16')](_0xfee4('0x11'),_0x3d11d6,_0x318116[_0xfee4('0x16')][_0xfee4('0x18')]);return _0x4efb38(_0x318116['error'][_0xfee4('0x18')]);}logger[_0xfee4('0x16')](_0xfee4('0x11'),_0x3d11d6,_0x318116[_0xfee4('0x16')][_0xfee4('0x18')]);return _0x51a2e3(_0x318116[_0xfee4('0x16')]['message']);}else{logger['info'](_0xfee4('0x11'),_0x3d11d6,'request\x20sent');_0x51a2e3(_0x318116[_0xfee4('0x19')][_0xfee4('0x18')]);}})[_0xfee4('0x1a')](function(_0x138534){logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x3d11d6,_0x138534);_0x4efb38(_0x138534);});});}exports['UpdateWhatsappInteraction']=function(_0x4877fd){var _0x16b0c6=this;return new Promise(function(_0x184d84,_0x5b3494){return db[_0xfee4('0x1b')]['update'](_0x4877fd[_0xfee4('0x1c')],{'raw':_0x4877fd['options']?_0x4877fd['options'][_0xfee4('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4877fd[_0xfee4('0x1e')]?_0x4877fd[_0xfee4('0x1e')][_0xfee4('0x1f')]||null:null,'attributes':_0x4877fd[_0xfee4('0x1e')]?_0x4877fd[_0xfee4('0x1e')][_0xfee4('0x20')]||null:null,'limit':_0x4877fd[_0xfee4('0x1e')]?_0x4877fd[_0xfee4('0x1e')][_0xfee4('0x21')]||null:null})['then'](function(_0x50dc52){logger[_0xfee4('0x10')]('UpdateWhatsappInteraction',_0x4877fd);logger[_0xfee4('0x13')](_0xfee4('0x22'),_0x4877fd,JSON['stringify'](_0x50dc52));_0x184d84(_0x50dc52);})[_0xfee4('0x1a')](function(_0x3d46c7){logger[_0xfee4('0x16')](_0xfee4('0x22'),_0x3d46c7[_0xfee4('0x18')],_0x4877fd);_0x5b3494(_0x16b0c6[_0xfee4('0x16')](0x1f4,_0x3d46c7['message']));});});};exports[_0xfee4('0x23')]=function(_0x4a7686){return new Promise(function(_0x1bbc2b,_0x3ad70f){return db[_0xfee4('0x1b')]['find']({'where':_0x4a7686['options']?_0x4a7686[_0xfee4('0x1e')][_0xfee4('0x1f')]||null:null})[_0xfee4('0xf')](function(_0x31e79a){if(_0x31e79a){return _0x31e79a[_0xfee4('0x24')](_0x4a7686[_0xfee4('0x1c')][_0xfee4('0x25')],_[_0xfee4('0x26')](_0x4a7686[_0xfee4('0x1c')],[_0xfee4('0x25'),'id'])||{});}})[_0xfee4('0x27')](function(_0xb8dcca){logger[_0xfee4('0x10')](_0xfee4('0x28'),_0x4a7686);logger[_0xfee4('0x13')]('AddTags',_0x4a7686,JSON[_0xfee4('0x15')](_0xb8dcca));_0x1bbc2b(_0xb8dcca);})[_0xfee4('0x1a')](function(_0x1cb614){logger[_0xfee4('0x16')]('AddTags',_0x1cb614[_0xfee4('0x18')],_0x4a7686);_0x3ad70f(_this[_0xfee4('0x16')](0x1f4,_0x1cb614['message']));});});};
\ No newline at end of file
+var _0xbfec=['UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','addTags','ids','spread','AddTags','catch','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','update','body','options','raw','where','attributes','limit'];(function(_0x31df6f,_0x380e73){var _0x31e353=function(_0x3a434b){while(--_0x3a434b){_0x31df6f['push'](_0x31df6f['shift']());}};_0x31e353(++_0x380e73);}(_0xbfec,0x147));var _0xcbfe=function(_0x502db4,_0x4e1361){_0x502db4=_0x502db4-0x0;var _0x2efca2=_0xbfec[_0x502db4];return _0x2efca2;};'use strict';var _=require('lodash');var util=require(_0xcbfe('0x0'));var moment=require(_0xcbfe('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcbfe('0x2'));var db=require(_0xcbfe('0x3'))['db'];var utils=require(_0xcbfe('0x4'));var logger=require(_0xcbfe('0x5'))('rpc');var config=require(_0xcbfe('0x6'));var jayson=require(_0xcbfe('0x7'));var client=jayson[_0xcbfe('0x8')][_0xcbfe('0x9')]({'port':0x232a});config['redis']=_[_0xcbfe('0xa')](config[_0xcbfe('0xb')],{'host':_0xcbfe('0xc'),'port':0x18eb});var socket=require(_0xcbfe('0xd'))(new Redis(config[_0xcbfe('0xb')]));require(_0xcbfe('0xe'))['register'](socket);function respondWithRpcPromise(_0x22951c,_0x3fc241,_0x17e1cc){return new BPromise(function(_0x1471e2,_0x28b7ac){return client[_0xcbfe('0xf')](_0x22951c,_0x17e1cc)[_0xcbfe('0x10')](function(_0xba5862){logger[_0xcbfe('0x11')](_0xcbfe('0x12'),_0x3fc241,_0xcbfe('0x13'));logger[_0xcbfe('0x14')](_0xcbfe('0x15'),_0x3fc241,_0xcbfe('0x13'),JSON['stringify'](_0xba5862));if(_0xba5862[_0xcbfe('0x16')]){if(_0xba5862[_0xcbfe('0x16')][_0xcbfe('0x17')]===0x1f4){logger[_0xcbfe('0x16')](_0xcbfe('0x12'),_0x3fc241,_0xba5862['error']['message']);return _0x28b7ac(_0xba5862[_0xcbfe('0x16')][_0xcbfe('0x18')]);}logger[_0xcbfe('0x16')](_0xcbfe('0x12'),_0x3fc241,_0xba5862['error'][_0xcbfe('0x18')]);return _0x1471e2(_0xba5862[_0xcbfe('0x16')][_0xcbfe('0x18')]);}else{logger[_0xcbfe('0x11')](_0xcbfe('0x12'),_0x3fc241,_0xcbfe('0x13'));_0x1471e2(_0xba5862[_0xcbfe('0x19')]['message']);}})['catch'](function(_0x4bc0fe){logger['error'](_0xcbfe('0x12'),_0x3fc241,_0x4bc0fe);_0x28b7ac(_0x4bc0fe);});});}exports['UpdateWhatsappInteraction']=function(_0x4f6b50){var _0x2f1a9b=this;return new Promise(function(_0x176456,_0x56d53){return db['WhatsappInteraction'][_0xcbfe('0x1a')](_0x4f6b50[_0xcbfe('0x1b')],{'raw':_0x4f6b50[_0xcbfe('0x1c')]?_0x4f6b50[_0xcbfe('0x1c')][_0xcbfe('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6b50[_0xcbfe('0x1c')]?_0x4f6b50[_0xcbfe('0x1c')][_0xcbfe('0x1e')]||null:null,'attributes':_0x4f6b50[_0xcbfe('0x1c')]?_0x4f6b50[_0xcbfe('0x1c')][_0xcbfe('0x1f')]||null:null,'limit':_0x4f6b50[_0xcbfe('0x1c')]?_0x4f6b50[_0xcbfe('0x1c')][_0xcbfe('0x20')]||null:null})[_0xcbfe('0x10')](function(_0x287983){logger['info'](_0xcbfe('0x21'),_0x4f6b50);logger['debug'](_0xcbfe('0x21'),_0x4f6b50,JSON['stringify'](_0x287983));_0x176456(_0x287983);})['catch'](function(_0x5247ff){logger[_0xcbfe('0x16')](_0xcbfe('0x21'),_0x5247ff[_0xcbfe('0x18')],_0x4f6b50);_0x56d53(_0x2f1a9b[_0xcbfe('0x16')](0x1f4,_0x5247ff[_0xcbfe('0x18')]));});});};exports[_0xcbfe('0x22')]=function(_0xaf85fe){return new Promise(function(_0x176f50,_0x445a78){return db['WhatsappInteraction']['find']({'where':_0xaf85fe[_0xcbfe('0x1c')]?_0xaf85fe[_0xcbfe('0x1c')]['where']||null:null})['then'](function(_0x1d2e5e){if(_0x1d2e5e){return _0x1d2e5e[_0xcbfe('0x23')](_0xaf85fe[_0xcbfe('0x1b')][_0xcbfe('0x24')],_['omit'](_0xaf85fe[_0xcbfe('0x1b')],[_0xcbfe('0x24'),'id'])||{});}})[_0xcbfe('0x25')](function(_0x2ae899){logger[_0xcbfe('0x11')]('AddTags',_0xaf85fe);logger[_0xcbfe('0x14')](_0xcbfe('0x26'),_0xaf85fe,JSON['stringify'](_0x2ae899));_0x176f50(_0x2ae899);})[_0xcbfe('0x27')](function(_0x4fcb5a){logger['error']('AddTags',_0x4fcb5a[_0xcbfe('0x18')],_0xaf85fe);_0x445a78(_this[_0xcbfe('0x16')](0x1f4,_0x4fcb5a['message']));});});};
\ No newline at end of file
index 0866210..60bf5e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc8e=['removeListener','register','length','whatsappInteraction:','save','remove','emit'];(function(_0x55f56f,_0x36f3d4){var _0x30e351=function(_0x34b1e2){while(--_0x34b1e2){_0x55f56f['push'](_0x55f56f['shift']());}};_0x30e351(++_0x36f3d4);}(_0xdc8e,0x115));var _0xedc8=function(_0x261522,_0x1adc1f){_0x261522=_0x261522-0x0;var _0x98a25a=_0xdc8e[_0x261522];return _0x98a25a;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0xedc8('0x0'),_0xedc8('0x1'),'update'];function createListener(_0x4d96b5,_0x3aca75){return function(_0x203421){_0x3aca75[_0xedc8('0x2')](_0x4d96b5,_0x203421);};}function removeListener(_0x5ab734,_0x3e849a){return function(){WhatsappInteractionEvents[_0xedc8('0x3')](_0x5ab734,_0x3e849a);};}exports[_0xedc8('0x4')]=function(_0x4f74af){for(var _0x3c36af=0x0,_0x449cb1=events[_0xedc8('0x5')];_0x3c36af<_0x449cb1;_0x3c36af++){var _0x22b5a2=events[_0x3c36af];var _0x199030=createListener(_0xedc8('0x6')+_0x22b5a2,_0x4f74af);WhatsappInteractionEvents['on'](_0x22b5a2,_0x199030);}};
\ No newline at end of file
+var _0xe0dc=['emit','removeListener','register','length','./whatsappInteraction.events','save','remove'];(function(_0x42fa8f,_0x1102ed){var _0x3f5ad0=function(_0x4adb84){while(--_0x4adb84){_0x42fa8f['push'](_0x42fa8f['shift']());}};_0x3f5ad0(++_0x1102ed);}(_0xe0dc,0x18c));var _0xce0d=function(_0x74a76c,_0x87c60d){_0x74a76c=_0x74a76c-0x0;var _0x3d8e25=_0xe0dc[_0x74a76c];return _0x3d8e25;};'use strict';var WhatsappInteractionEvents=require(_0xce0d('0x0'));var events=[_0xce0d('0x1'),_0xce0d('0x2'),'update'];function createListener(_0x2f956b,_0x2a9ccb){return function(_0x167372){_0x2a9ccb[_0xce0d('0x3')](_0x2f956b,_0x167372);};}function removeListener(_0x1007d2,_0x193d40){return function(){WhatsappInteractionEvents[_0xce0d('0x4')](_0x1007d2,_0x193d40);};}exports[_0xce0d('0x5')]=function(_0x45bca5){for(var _0x5cb215=0x0,_0x16c280=events[_0xce0d('0x6')];_0x5cb215<_0x16c280;_0x5cb215++){var _0x21b7ad=events[_0x5cb215];var _0x2c848e=createListener('whatsappInteraction:'+_0x21b7ad,_0x45bca5);WhatsappInteractionEvents['on'](_0x21b7ad,_0x2c848e);}};
\ No newline at end of file
index f2731f0..0d64ddb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x595d=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','tracked','whatsappmessage:create','create','/:id/status','status','put','/:id/accept','accept','reject','destroy'];(function(_0x30e1a6,_0x1e3338){var _0x49ec0a=function(_0x36c20d){while(--_0x36c20d){_0x30e1a6['push'](_0x30e1a6['shift']());}};_0x49ec0a(++_0x1e3338);}(_0x595d,0x16d));var _0xd595=function(_0x3f1710,_0x3877a2){_0x3f1710=_0x3f1710-0x0;var _0x528458=_0x595d[_0x3f1710];return _0x528458;};'use strict';var multer=require(_0xd595('0x0'));var util=require(_0xd595('0x1'));var path=require(_0xd595('0x2'));var timeout=require(_0xd595('0x3'));var express=require(_0xd595('0x4'));var router=express[_0xd595('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xd595('0x6'));var interaction=require(_0xd595('0x7'));var config=require('../../config/environment');var controller=require(_0xd595('0x8'));router['get']('/',auth[_0xd595('0x9')](),controller[_0xd595('0xa')]);router[_0xd595('0xb')](_0xd595('0xc'),auth[_0xd595('0x9')](),controller[_0xd595('0xd')]);router[_0xd595('0xb')](_0xd595('0xe'),auth[_0xd595('0x9')](),controller[_0xd595('0xf')]);router[_0xd595('0x10')]('/',auth[_0xd595('0x9')](),interaction[_0xd595('0x11')]('whatsapp',_0xd595('0x12')),controller[_0xd595('0x13')]);router[_0xd595('0x10')](_0xd595('0x14'),controller[_0xd595('0x15')]);router['put']('/:id',auth[_0xd595('0x9')](),controller['update']);router[_0xd595('0x16')](_0xd595('0x17'),auth['isAuthenticated'](),controller[_0xd595('0x18')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0xd595('0x19')]);router['delete'](_0xd595('0xe'),auth[_0xd595('0x9')](),controller[_0xd595('0x1a')]);module[_0xd595('0x1b')]=router;
\ No newline at end of file
+var _0x0804=['/:id/status','status','update','put','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','whatsapp','whatsappmessage:create','create','post'];(function(_0x4fa4fd,_0x4c656b){var _0x3c50d0=function(_0x223600){while(--_0x223600){_0x4fa4fd['push'](_0x4fa4fd['shift']());}};_0x3c50d0(++_0x4c656b);}(_0x0804,0x9b));var _0x4080=function(_0x2d2ca2,_0x51873f){_0x2d2ca2=_0x2d2ca2-0x0;var _0x48489d=_0x0804[_0x2d2ca2];return _0x48489d;};'use strict';var multer=require(_0x4080('0x0'));var util=require('util');var path=require(_0x4080('0x1'));var timeout=require(_0x4080('0x2'));var express=require(_0x4080('0x3'));var router=express['Router']();var fs_extra=require(_0x4080('0x4'));var auth=require(_0x4080('0x5'));var interaction=require(_0x4080('0x6'));var config=require('../../config/environment');var controller=require(_0x4080('0x7'));router['get']('/',auth[_0x4080('0x8')](),controller[_0x4080('0x9')]);router[_0x4080('0xa')](_0x4080('0xb'),auth[_0x4080('0x8')](),controller[_0x4080('0xc')]);router[_0x4080('0xa')](_0x4080('0xd'),auth['isAuthenticated'](),controller[_0x4080('0xe')]);router['post']('/',auth[_0x4080('0x8')](),interaction['tracked'](_0x4080('0xf'),_0x4080('0x10')),controller[_0x4080('0x11')]);router[_0x4080('0x12')](_0x4080('0x13'),controller[_0x4080('0x14')]);router['put'](_0x4080('0xd'),auth[_0x4080('0x8')](),controller[_0x4080('0x15')]);router[_0x4080('0x16')](_0x4080('0x17'),auth[_0x4080('0x8')](),controller[_0x4080('0x18')]);router[_0x4080('0x16')](_0x4080('0x19'),auth[_0x4080('0x8')](),controller[_0x4080('0x1a')]);router[_0x4080('0x1b')](_0x4080('0xd'),auth[_0x4080('0x8')](),controller['destroy']);module[_0x4080('0x1c')]=router;
\ No newline at end of file
index 53553da..51477c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10f9=['medium','BOOLEAN','ENUM','out','STRING','DATE','sequelize','exports','TEXT'];(function(_0xde43e1,_0x4820c4){var _0x332a19=function(_0x244d01){while(--_0x244d01){_0xde43e1['push'](_0xde43e1['shift']());}};_0x332a19(++_0x4820c4);}(_0x10f9,0x69));var _0x910f=function(_0x4506d7,_0x22dff8){_0x4506d7=_0x4506d7-0x0;var _0x3cf9a9=_0x10f9[_0x4506d7];return _0x3cf9a9;};'use strict';var Sequelize=require(_0x910f('0x0'));module[_0x910f('0x1')]={'body':{'type':Sequelize[_0x910f('0x2')](_0x910f('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x910f('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x910f('0x5')]('in',_0x910f('0x6')),'defaultValue':_0x910f('0x6'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x910f('0x7')]},'readAt':{'type':Sequelize[_0x910f('0x8')]},'secret':{'type':Sequelize[_0x910f('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x910f('0x7')]},'providerResponse':{'type':Sequelize[_0x910f('0x2')]}};
\ No newline at end of file
+var _0xb493=['BOOLEAN','ENUM','out','STRING','DATE','TEXT','medium'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb493,0x116));var _0x3b49=function(_0x3540ef,_0x20ed26){_0x3540ef=_0x3540ef-0x0;var _0x6be53c=_0xb493[_0x3540ef];return _0x6be53c;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x3b49('0x0')](_0x3b49('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x3b49('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3b49('0x3')]('in',_0x3b49('0x4')),'defaultValue':_0x3b49('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3b49('0x5')](0xbe)},'phone':{'type':Sequelize[_0x3b49('0x5')]},'readAt':{'type':Sequelize[_0x3b49('0x6')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 52103b6..1df03a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf957=['update','destroy','sendStatus','send','index','map','WhatsappMessage','rawAttributes','fieldName','key','name','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','whatsapp-interactions','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','ContactId','SELECT','contact','User','agent','fullname','internal','manual','interface','channel','motionChannel','event','accept','EventManager','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','QueryTypes','SIP/%s','rejectmessage','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','type','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','to-csv','lodash','crypto','jsforce','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','end','status','offset','undefined','count','limit','set','json','apply','reject','save'];(function(_0xd7458d,_0x21ed31){var _0x219f3=function(_0x5f07ed){while(--_0x5f07ed){_0xd7458d['push'](_0xd7458d['shift']());}};_0x219f3(++_0x21ed31);}(_0xf957,0x16b));var _0x7f95=function(_0x58d106,_0x59086f){_0x58d106=_0x58d106-0x0;var _0x28e724=_0xf957[_0x58d106];return _0x28e724;};'use strict';var emlformat=require(_0x7f95('0x0'));var rimraf=require(_0x7f95('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7f95('0x2'));var rp=require('request-promise');var moment=require(_0x7f95('0x3'));var BPromise=require(_0x7f95('0x4'));var Mustache=require(_0x7f95('0x5'));var util=require(_0x7f95('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x7f95('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7f95('0x8'));var squel=require('squel');var crypto=require(_0x7f95('0x9'));var jsforce=require(_0x7f95('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x7f95('0x7'));var querystring=require('querystring');var Papa=require(_0x7f95('0xb'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7f95('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7f95('0xd'))(_0x7f95('0xe'));var utils=require(_0x7f95('0xf'));var config=require(_0x7f95('0x10'));var licenseUtil=require(_0x7f95('0x11'));var db=require(_0x7f95('0x12'))['db'];config[_0x7f95('0x13')]=_[_0x7f95('0x14')](config[_0x7f95('0x13')],{'host':_0x7f95('0x15'),'port':0x18eb});var socket=require(_0x7f95('0x16'))(new Redis(config[_0x7f95('0x13')]));require(_0x7f95('0x17'))[_0x7f95('0x18')](socket);var jayson=require(_0x7f95('0x19'));var client=jayson[_0x7f95('0x1a')][_0x7f95('0x1b')]({'port':0x232c});var client9002=jayson[_0x7f95('0x1a')][_0x7f95('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x5c564f,_0x45590f,_0x15b4a2,_0x55bbd4){return new BPromise(function(_0x5eb599,_0x5a2df0){var _0x1ab467=_0x55bbd4||client;return _0x1ab467[_0x7f95('0x1c')](_0x5c564f,_0x15b4a2)[_0x7f95('0x1d')](function(_0x225815){logger[_0x7f95('0x1e')]('WhatsappMessage,\x20%s,\x20%s',_0x45590f,_0x7f95('0x1f'));logger[_0x7f95('0x20')](_0x7f95('0x21'),_0x45590f,_0x7f95('0x1f'),JSON[_0x7f95('0x22')](_0x225815));if(_0x225815[_0x7f95('0x23')]){if(_0x225815[_0x7f95('0x23')][_0x7f95('0x24')]===0x1f4){logger[_0x7f95('0x23')](_0x7f95('0x25'),_0x45590f,_0x225815[_0x7f95('0x23')][_0x7f95('0x26')]);return _0x5a2df0(_0x225815[_0x7f95('0x23')][_0x7f95('0x26')]);}logger['error'](_0x7f95('0x25'),_0x45590f,_0x225815[_0x7f95('0x23')]['message']);return _0x5eb599(_0x225815[_0x7f95('0x23')][_0x7f95('0x26')]);}else{logger[_0x7f95('0x1e')](_0x7f95('0x25'),_0x45590f,_0x7f95('0x1f'));_0x5eb599(_0x225815[_0x7f95('0x27')][_0x7f95('0x26')]);}})['catch'](function(_0x53a046){logger[_0x7f95('0x23')](_0x7f95('0x25'),_0x45590f,_0x53a046);_0x5a2df0(_0x53a046);});});}function respondWithStatusCode(_0x4af22d,_0x1312a8){_0x1312a8=_0x1312a8||0xcc;return function(_0x3bb379){if(_0x3bb379){return _0x4af22d['sendStatus'](_0x1312a8);}return _0x4af22d['status'](_0x1312a8)[_0x7f95('0x28')]();};}function respondWithResult(_0x4d081f,_0x18be04){_0x18be04=_0x18be04||0xc8;return function(_0x194e82){if(_0x194e82){return _0x4d081f[_0x7f95('0x29')](_0x18be04)['json'](_0x194e82);}};}function respondWithFilteredResult(_0x45af03,_0xe8a3f9){return function(_0x4a6a52){if(_0x4a6a52){var _0xb67b1c=typeof _0xe8a3f9[_0x7f95('0x2a')]===_0x7f95('0x2b')&&typeof _0xe8a3f9['limit']===_0x7f95('0x2b');var _0x565ac4=_0x4a6a52[_0x7f95('0x2c')];var _0x3667b2=_0xb67b1c?0x0:_0xe8a3f9[_0x7f95('0x2a')];var _0x5f1e68=_0xb67b1c?_0x4a6a52[_0x7f95('0x2c')]:_0xe8a3f9[_0x7f95('0x2a')]+_0xe8a3f9[_0x7f95('0x2d')];var _0x1ff870;if(_0x5f1e68>=_0x565ac4){_0x5f1e68=_0x565ac4;_0x1ff870=0xc8;}else{_0x1ff870=0xce;}_0x45af03[_0x7f95('0x29')](_0x1ff870);return _0x45af03[_0x7f95('0x2e')]('Content-Range',_0x3667b2+'-'+_0x5f1e68+'/'+_0x565ac4)[_0x7f95('0x2f')](_0x4a6a52);}return null;};}function patchUpdates(_0xd8b33e){return function(_0x118d3a){try{jsonpatch[_0x7f95('0x30')](_0x118d3a,_0xd8b33e,!![]);}catch(_0x4e9487){return BPromise[_0x7f95('0x31')](_0x4e9487);}return _0x118d3a[_0x7f95('0x32')]();};}function saveUpdates(_0x4dae43,_0xc1c52c){return function(_0x4a25cd){if(_0x4a25cd){return _0x4a25cd[_0x7f95('0x33')](_0x4dae43)[_0x7f95('0x1d')](function(_0x5cf92c){return _0x5cf92c;});}return null;};}function removeEntity(_0x39bafb,_0x59bcb4){return function(_0x40bc99){if(_0x40bc99){return _0x40bc99[_0x7f95('0x34')]()[_0x7f95('0x1d')](function(){_0x39bafb['status'](0xcc)[_0x7f95('0x28')]();});}};}function handleEntityNotFound(_0x2cd158,_0x10470d){return function(_0x22068d){if(!_0x22068d){_0x2cd158[_0x7f95('0x35')](0x194);}return _0x22068d;};}function handleError(_0x56ce03,_0x343bf3){_0x343bf3=_0x343bf3||0x1f4;return function(_0x5f2086){logger['error'](_0x5f2086['stack']);if(_0x5f2086['name']){delete _0x5f2086['name'];}_0x56ce03[_0x7f95('0x29')](_0x343bf3)[_0x7f95('0x36')](_0x5f2086);};}exports[_0x7f95('0x37')]=function(_0x1ee097,_0x409d21){var _0x4acebc={},_0x50c6f9={},_0x384499={'count':0x0,'rows':[]};var _0x19e145=_[_0x7f95('0x38')](db[_0x7f95('0x39')][_0x7f95('0x3a')],function(_0x332102){return{'name':_0x332102[_0x7f95('0x3b')],'type':_0x332102['type'][_0x7f95('0x3c')]};});_0x50c6f9['model']=_[_0x7f95('0x38')](_0x19e145,_0x7f95('0x3d'));_0x50c6f9['query']=_['keys'](_0x1ee097[_0x7f95('0x3e')]);_0x50c6f9[_0x7f95('0x3f')]=_[_0x7f95('0x40')](_0x50c6f9[_0x7f95('0x41')],_0x50c6f9[_0x7f95('0x3e')]);_0x4acebc[_0x7f95('0x42')]=_[_0x7f95('0x40')](_0x50c6f9['model'],qs[_0x7f95('0x43')](_0x1ee097[_0x7f95('0x3e')][_0x7f95('0x43')]));_0x4acebc[_0x7f95('0x42')]=_0x4acebc[_0x7f95('0x42')][_0x7f95('0x44')]?_0x4acebc[_0x7f95('0x42')]:_0x50c6f9[_0x7f95('0x41')];if(!_0x1ee097[_0x7f95('0x3e')][_0x7f95('0x45')](_0x7f95('0x46'))){_0x4acebc[_0x7f95('0x2d')]=qs[_0x7f95('0x2d')](_0x1ee097['query'][_0x7f95('0x2d')]);_0x4acebc['offset']=qs[_0x7f95('0x2a')](_0x1ee097[_0x7f95('0x3e')]['offset']);}_0x4acebc['order']=qs['sort'](_0x1ee097[_0x7f95('0x3e')][_0x7f95('0x47')]);_0x4acebc['where']=qs[_0x7f95('0x3f')](_['pick'](_0x1ee097['query'],_0x50c6f9[_0x7f95('0x3f')]),_0x19e145);if(_0x1ee097['query']['filter']){_0x4acebc[_0x7f95('0x48')]=_[_0x7f95('0x49')](_0x4acebc[_0x7f95('0x48')],{'$or':_[_0x7f95('0x38')](_0x19e145,function(_0x22eb92){if(_0x22eb92['type']!==_0x7f95('0x4a')){var _0x532cba={};_0x532cba[_0x22eb92[_0x7f95('0x3d')]]={'$like':'%'+_0x1ee097[_0x7f95('0x3e')][_0x7f95('0x4b')]+'%'};return _0x532cba;}})});}_0x4acebc=_[_0x7f95('0x49')]({},_0x4acebc,_0x1ee097[_0x7f95('0x4c')]);var _0x185b77={'where':_0x4acebc[_0x7f95('0x48')]};return db[_0x7f95('0x39')][_0x7f95('0x2c')](_0x185b77)[_0x7f95('0x1d')](function(_0x22461f){_0x384499[_0x7f95('0x2c')]=_0x22461f;if(_0x1ee097[_0x7f95('0x3e')][_0x7f95('0x4d')]){_0x4acebc[_0x7f95('0x4e')]=[{'all':!![]}];}return db[_0x7f95('0x39')][_0x7f95('0x4f')](_0x4acebc);})[_0x7f95('0x1d')](function(_0x21ccd7){_0x384499[_0x7f95('0x50')]=_0x21ccd7;return _0x384499;})['then'](respondWithFilteredResult(_0x409d21,_0x4acebc))[_0x7f95('0x51')](handleError(_0x409d21,null));};exports[_0x7f95('0x52')]=function(_0x36e6bc,_0x3fbf37){var _0x3d762={'raw':!![],'where':{'id':_0x36e6bc[_0x7f95('0x53')]['id']}},_0x86cb2f={};_0x86cb2f['model']=_[_0x7f95('0x54')](db['WhatsappMessage'][_0x7f95('0x3a')]);_0x86cb2f[_0x7f95('0x3e')]=_[_0x7f95('0x54')](_0x36e6bc[_0x7f95('0x3e')]);_0x86cb2f[_0x7f95('0x3f')]=_[_0x7f95('0x40')](_0x86cb2f[_0x7f95('0x41')],_0x86cb2f[_0x7f95('0x3e')]);_0x3d762[_0x7f95('0x42')]=_[_0x7f95('0x40')](_0x86cb2f[_0x7f95('0x41')],qs[_0x7f95('0x43')](_0x36e6bc[_0x7f95('0x3e')][_0x7f95('0x43')]));_0x3d762['attributes']=_0x3d762['attributes'][_0x7f95('0x44')]?_0x3d762['attributes']:_0x86cb2f['model'];if(_0x36e6bc['query'][_0x7f95('0x4d')]){_0x3d762[_0x7f95('0x4e')]=[{'all':!![]}];}_0x3d762=_[_0x7f95('0x49')]({},_0x3d762,_0x36e6bc[_0x7f95('0x4c')]);return db[_0x7f95('0x39')][_0x7f95('0x55')](_0x3d762)[_0x7f95('0x1d')](handleEntityNotFound(_0x3fbf37,null))[_0x7f95('0x1d')](respondWithResult(_0x3fbf37,null))['catch'](handleError(_0x3fbf37,null));};exports[_0x7f95('0x56')]=function(_0x11432f,_0x1a660e){return db['WhatsappMessage']['create'](_0x11432f[_0x7f95('0x57')],{})[_0x7f95('0x1d')](respondWithResult(_0x1a660e,0xc9))[_0x7f95('0x51')](handleError(_0x1a660e,null));};exports[_0x7f95('0x33')]=function(_0x4009da,_0xcbea93){if(_0x4009da['body']['id']){delete _0x4009da[_0x7f95('0x57')]['id'];}return db['WhatsappMessage'][_0x7f95('0x55')]({'where':{'id':_0x4009da[_0x7f95('0x53')]['id']}})[_0x7f95('0x1d')](handleEntityNotFound(_0xcbea93,null))[_0x7f95('0x1d')](saveUpdates(_0x4009da[_0x7f95('0x57')],null))[_0x7f95('0x1d')](respondWithResult(_0xcbea93,null))['catch'](handleError(_0xcbea93,null));};exports[_0x7f95('0x34')]=function(_0x1cd70c,_0x58c90f){return db[_0x7f95('0x39')][_0x7f95('0x55')]({'where':{'id':_0x1cd70c['params']['id']}})['then'](handleEntityNotFound(_0x58c90f,null))[_0x7f95('0x1d')](removeEntity(_0x58c90f,null))[_0x7f95('0x51')](handleError(_0x58c90f,null));};exports[_0x7f95('0x58')]=function(_0x3887d1,_0x13650d){return db['WhatsappMessage']['describe']()[_0x7f95('0x1d')](respondWithResult(_0x13650d,null))[_0x7f95('0x51')](handleError(_0x13650d,null));};var interaction_log=require(_0x7f95('0xd'))(_0x7f95('0x59'));exports['accept']=function(_0x544d05,_0x3843d2,_0x5b3dd6){var _0x1ff094={'agent':{},'channel':_0x7f95('0x5a')};if(_0x544d05[_0x7f95('0x57')]['id']){delete _0x544d05[_0x7f95('0x57')]['id'];}_0x544d05[_0x7f95('0x57')][_0x7f95('0x5b')]=!![];_0x544d05['body'][_0x7f95('0x5c')]=moment()[_0x7f95('0x5d')](_0x7f95('0x5e'));_0x544d05[_0x7f95('0x57')][_0x7f95('0x5f')]=_0x544d05['body'][_0x7f95('0x5f')]||_0x544d05[_0x7f95('0x60')]['id'];_0x1ff094['agent']['id']=_0x544d05[_0x7f95('0x57')][_0x7f95('0x5f')];return db[_0x7f95('0x39')][_0x7f95('0x55')]({'where':{'id':_0x544d05[_0x7f95('0x53')]['id'],'UserId':null}})[_0x7f95('0x1d')](handleEntityNotFound(_0x3843d2,null))['then'](saveUpdates(_0x544d05[_0x7f95('0x57')],null))[_0x7f95('0x1d')](function(_0x3931b5){if(_0x3931b5){_0x1ff094[_0x7f95('0x26')]=_0x3931b5[_0x7f95('0x61')]({'plain':!![]});return db[_0x7f95('0x62')][_0x7f95('0x55')]({'where':{'id':_0x3931b5[_0x7f95('0x63')]}});}return null;})[_0x7f95('0x1d')](handleEntityNotFound(_0x3843d2,null))[_0x7f95('0x1d')](function(_0x14f427){if(_0x14f427){return _0x14f427['update']({'UserId':_0x544d05['body'][_0x7f95('0x5f')],'read1stAt':_[_0x7f95('0x64')](_0x14f427['read1stAt'])?moment()[_0x7f95('0x5d')](_0x7f95('0x5e')):undefined});}return null;})[_0x7f95('0x1d')](function(_0x20cab8){if(_0x20cab8){_0x1ff094[_0x7f95('0x65')]=_0x20cab8[_0x7f95('0x61')]({'plain':!![]});interaction_log['info'](_0x7f95('0x66'),_0x544d05[_0x7f95('0x60')]['id'],_0x544d05[_0x7f95('0x60')]['name'],_0x544d05[_0x7f95('0x60')][_0x7f95('0x67')],_0x1ff094['interaction']['id'],_0x544d05[_0x7f95('0x57')]?JSON[_0x7f95('0x22')](_0x544d05['body']):_0x7f95('0x68'));return respondWithRpcPromise(_0x7f95('0x69'),_0x7f95('0x6a'),_0x1ff094);}return null;})['then'](function(_0x232cbc){var _0x47d809='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x232cbc['message'][_0x7f95('0x6b')];return db['sequelize']['query'](_0x47d809,{'type':db['Sequelize']['QueryTypes'][_0x7f95('0x6c')],'raw':!![]})[_0x7f95('0x1d')](function(_0x243d6d){return _0x243d6d;});})[_0x7f95('0x1d')](function(_0x16785e){if(_0x16785e){_0x1ff094['message'][_0x7f95('0x6d')]=_0x16785e[0x0];if(!_0x544d05[_0x7f95('0x57')][_0x7f95('0x5f')])return;return db[_0x7f95('0x6e')][_0x7f95('0x55')]({'where':{'id':_0x544d05['body'][_0x7f95('0x5f')],'role':_0x7f95('0x6f')},'attributes':['id',_0x7f95('0x3d'),_0x7f95('0x70'),'email',_0x7f95('0x71')],'raw':!![]});}return null;})[_0x7f95('0x1d')](function(_0x449982){if(!_0x449982)return null;_0x1ff094[_0x7f95('0x26')][_0x7f95('0x6f')]=_0x449982;return _0x1ff094;})[_0x7f95('0x1d')](function(_0x597e5f){if(_0x597e5f){if(_0x544d05[_0x7f95('0x57')][_0x7f95('0x72')]){_0x1ff094[_0x7f95('0x26')][_0x7f95('0x73')]=util[_0x7f95('0x5d')]('SIP/%s',_0x544d05[_0x7f95('0x60')][_0x7f95('0x3d')]);_0x1ff094['message']['channel']=_0x1ff094[_0x7f95('0x74')];_0x1ff094['message'][_0x7f95('0x75')]=_0x1ff094[_0x7f95('0x74')];_0x1ff094['message'][_0x7f95('0x76')]=_0x7f95('0x77');return respondWithRpcPromise('EventManager',_0x7f95('0x78'),{'event':'acceptmessage','message':_0x1ff094[_0x7f95('0x26')]},client9002)[_0x7f95('0x1d')](function(){return _0x1ff094;});}return _0x1ff094;}return null;})[_0x7f95('0x1d')](respondWithResult(_0x3843d2,null))['catch'](handleError(_0x3843d2,null));};var interaction_log=require(_0x7f95('0xd'))(_0x7f95('0x59'));exports['reject']=function(_0x569fcb,_0x1ce682,_0x5bf7f3){var _0x468a8a={'agent':{},'channel':_0x7f95('0x5a')};if(_0x569fcb[_0x7f95('0x57')]['id']){delete _0x569fcb[_0x7f95('0x57')]['id'];}_0x569fcb[_0x7f95('0x57')][_0x7f95('0x5f')]=_0x569fcb[_0x7f95('0x57')][_0x7f95('0x5f')]||_0x569fcb[_0x7f95('0x60')]['id'];_0x468a8a[_0x7f95('0x6f')]['id']=_0x569fcb[_0x7f95('0x57')][_0x7f95('0x5f')];return db[_0x7f95('0x39')][_0x7f95('0x55')]({'where':{'id':_0x569fcb[_0x7f95('0x53')]['id'],'UserId':null}})[_0x7f95('0x1d')](handleEntityNotFound(_0x1ce682,null))[_0x7f95('0x1d')](function(_0x24219c){if(_0x24219c){_0x468a8a[_0x7f95('0x26')]=_0x24219c[_0x7f95('0x61')]({'plain':!![]});return db[_0x7f95('0x62')]['find']({'where':{'id':_0x24219c[_0x7f95('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x1ce682,null))[_0x7f95('0x1d')](function(_0x5c54a0){if(_0x5c54a0){_0x468a8a['interaction']=_0x5c54a0['get']({'plain':!![]});interaction_log[_0x7f95('0x1e')](_0x7f95('0x79'),_0x569fcb[_0x7f95('0x60')]['id'],_0x569fcb['user'][_0x7f95('0x3d')],_0x569fcb[_0x7f95('0x60')]['role'],_0x468a8a[_0x7f95('0x65')]['id'],_0x569fcb[_0x7f95('0x57')]?JSON[_0x7f95('0x22')](_0x569fcb[_0x7f95('0x57')]):_0x7f95('0x68'));return respondWithRpcPromise(_0x7f95('0x7a'),_0x7f95('0x7b'),_0x468a8a);}return null;})[_0x7f95('0x1d')](function(_0x2c5d24){var _0x492f1c='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2c5d24[_0x7f95('0x26')][_0x7f95('0x6b')];return db[_0x7f95('0x7c')][_0x7f95('0x3e')](_0x492f1c,{'type':db['Sequelize'][_0x7f95('0x7d')]['SELECT'],'raw':!![]})[_0x7f95('0x1d')](function(_0x854501){return _0x854501;});})[_0x7f95('0x1d')](function(_0x526c81){if(_0x526c81){_0x468a8a[_0x7f95('0x26')][_0x7f95('0x6d')]=_0x526c81[0x0];if(!_0x569fcb[_0x7f95('0x57')][_0x7f95('0x5f')])return;return db[_0x7f95('0x6e')][_0x7f95('0x55')]({'where':{'id':_0x569fcb[_0x7f95('0x57')]['UserId'],'role':_0x7f95('0x6f')},'attributes':['id','name',_0x7f95('0x70'),'email',_0x7f95('0x71')],'raw':!![]});}return null;})[_0x7f95('0x1d')](function(_0x596638){if(!_0x596638)return null;_0x468a8a[_0x7f95('0x26')]['agent']=_0x596638;return _0x468a8a;})['then'](function(_0x53c004){if(_0x53c004){_0x53c004[_0x7f95('0x26')][_0x7f95('0x73')]=util[_0x7f95('0x5d')](_0x7f95('0x7e'),_0x569fcb[_0x7f95('0x60')][_0x7f95('0x3d')]);_0x53c004[_0x7f95('0x26')][_0x7f95('0x74')]=_0x468a8a[_0x7f95('0x74')];_0x53c004[_0x7f95('0x26')][_0x7f95('0x75')]=_0x468a8a[_0x7f95('0x74')];_0x53c004['message']['event']=_0x7f95('0x31');respondWithRpcPromise(_0x7f95('0x78'),_0x7f95('0x78'),{'event':_0x7f95('0x7f'),'message':_0x53c004['message']},client9002);return _0x468a8a;}return null;})['then'](respondWithResult(_0x1ce682,null))[_0x7f95('0x51')](handleError(_0x1ce682,null));};exports[_0x7f95('0x29')]=function(_0x4ea51d,_0x57b2f2,_0x887962){if(_0x4ea51d['body']['id']){delete _0x4ea51d[_0x7f95('0x57')]['id'];}var _0x535dd3;return db[_0x7f95('0x39')]['find']({'where':{'id':_0x4ea51d[_0x7f95('0x53')]['id']}})[_0x7f95('0x1d')](handleEntityNotFound(_0x57b2f2,null))['then'](function(_0x17bc4d){if(_0x17bc4d){_0x535dd3=_0x17bc4d;return db[_0x7f95('0x80')][_0x7f95('0x55')]({'where':{'id':_0x17bc4d['WhatsappAccountId']}});}})[_0x7f95('0x1d')](handleEntityNotFound(_0x57b2f2,null))[_0x7f95('0x1d')](function(_0x1c265a){if(_0x1c265a){logger[_0x7f95('0x20')](_0x7f95('0x81'),_0x7f95('0x29'),_0x7f95('0x82'),_0x1c265a['type'],util[_0x7f95('0x83')](_0x4ea51d[_0x7f95('0x57')],{'showHidden':![],'depth':null}));switch(_0x1c265a[_0x7f95('0x84')]){case _0x7f95('0x85'):if(_0x4ea51d['body'][_0x7f95('0x86')]&&_0x4ea51d[_0x7f95('0x57')][_0x7f95('0x86')]===_0x535dd3[_0x7f95('0x87')]&&_0x4ea51d[_0x7f95('0x57')]['MessageStatus']&&_0x4ea51d[_0x7f95('0x57')][_0x7f95('0x88')]===_0x7f95('0x5b')){return _0x535dd3[_0x7f95('0x33')]({'read':!![]});}else{logger['error'](_0x7f95('0x89'),'status','twilio',util[_0x7f95('0x83')](_0x4ea51d[_0x7f95('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x535dd3;}})[_0x7f95('0x1d')](respondWithResult(_0x57b2f2,null))[_0x7f95('0x51')](handleError(_0x57b2f2,null));};
\ No newline at end of file
+var _0x7f0e=['WhatsappAccount','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../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','./whatsappMessage.socket','jayson/promise','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','map','WhatsappMessage','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','UserId','user','agent','get','isNil','YYYY-MM-DD\x20HH:mm:ss','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','internal','interface','rejectmessage'];(function(_0x34ad8d,_0x4a02a8){var _0x2b7956=function(_0x3f5345){while(--_0x3f5345){_0x34ad8d['push'](_0x34ad8d['shift']());}};_0x2b7956(++_0x4a02a8);}(_0x7f0e,0x1af));var _0xe7f0=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7f0e[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe7f0('0x0'));var zipdir=require(_0xe7f0('0x1'));var jsonpatch=require(_0xe7f0('0x2'));var rp=require('request-promise');var moment=require(_0xe7f0('0x3'));var BPromise=require(_0xe7f0('0x4'));var Mustache=require(_0xe7f0('0x5'));var util=require(_0xe7f0('0x6'));var path=require(_0xe7f0('0x7'));var sox=require(_0xe7f0('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe7f0('0x9'));var _=require(_0xe7f0('0xa'));var squel=require(_0xe7f0('0xb'));var crypto=require(_0xe7f0('0xc'));var jsforce=require(_0xe7f0('0xd'));var deskjs=require(_0xe7f0('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe7f0('0xf'));var qs=require(_0xe7f0('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe7f0('0x11'));var logger=require(_0xe7f0('0x12'))(_0xe7f0('0x13'));var utils=require(_0xe7f0('0x14'));var config=require(_0xe7f0('0x15'));var licenseUtil=require(_0xe7f0('0x16'));var db=require(_0xe7f0('0x17'))['db'];config[_0xe7f0('0x18')]=_[_0xe7f0('0x19')](config[_0xe7f0('0x18')],{'host':_0xe7f0('0x1a'),'port':0x18eb});var socket=require(_0xe7f0('0x1b'))(new Redis(config[_0xe7f0('0x18')]));require(_0xe7f0('0x1c'))['register'](socket);var jayson=require(_0xe7f0('0x1d'));var client=jayson['client'][_0xe7f0('0x1e')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x41d542,_0x55ce57,_0x3513cd,_0x2bb41e){return new BPromise(function(_0x759e35,_0x58e0fe){var _0x5d6b27=_0x2bb41e||client;return _0x5d6b27[_0xe7f0('0x1f')](_0x41d542,_0x3513cd)[_0xe7f0('0x20')](function(_0x31aec9){logger[_0xe7f0('0x21')](_0xe7f0('0x22'),_0x55ce57,_0xe7f0('0x23'));logger[_0xe7f0('0x24')](_0xe7f0('0x25'),_0x55ce57,_0xe7f0('0x23'),JSON['stringify'](_0x31aec9));if(_0x31aec9[_0xe7f0('0x26')]){if(_0x31aec9[_0xe7f0('0x26')][_0xe7f0('0x27')]===0x1f4){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x55ce57,_0x31aec9['error']['message']);return _0x58e0fe(_0x31aec9[_0xe7f0('0x26')][_0xe7f0('0x28')]);}logger[_0xe7f0('0x26')](_0xe7f0('0x22'),_0x55ce57,_0x31aec9['error'][_0xe7f0('0x28')]);return _0x759e35(_0x31aec9[_0xe7f0('0x26')][_0xe7f0('0x28')]);}else{logger[_0xe7f0('0x21')](_0xe7f0('0x22'),_0x55ce57,_0xe7f0('0x23'));_0x759e35(_0x31aec9[_0xe7f0('0x29')][_0xe7f0('0x28')]);}})['catch'](function(_0x280b0a){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x55ce57,_0x280b0a);_0x58e0fe(_0x280b0a);});});}function respondWithStatusCode(_0x3b5186,_0x169698){_0x169698=_0x169698||0xcc;return function(_0x34519f){if(_0x34519f){return _0x3b5186[_0xe7f0('0x2a')](_0x169698);}return _0x3b5186[_0xe7f0('0x2b')](_0x169698)[_0xe7f0('0x2c')]();};}function respondWithResult(_0x32674f,_0x5769ad){_0x5769ad=_0x5769ad||0xc8;return function(_0x3675c6){if(_0x3675c6){return _0x32674f[_0xe7f0('0x2b')](_0x5769ad)[_0xe7f0('0x2d')](_0x3675c6);}};}function respondWithFilteredResult(_0x2e08bc,_0x33e9e3){return function(_0x22d2a5){if(_0x22d2a5){var _0x3b3d25=typeof _0x33e9e3[_0xe7f0('0x2e')]===_0xe7f0('0x2f')&&typeof _0x33e9e3[_0xe7f0('0x30')]===_0xe7f0('0x2f');var _0x3cbd8c=_0x22d2a5[_0xe7f0('0x31')];var _0x15b80c=_0x3b3d25?0x0:_0x33e9e3[_0xe7f0('0x2e')];var _0x4567d1=_0x3b3d25?_0x22d2a5[_0xe7f0('0x31')]:_0x33e9e3[_0xe7f0('0x2e')]+_0x33e9e3[_0xe7f0('0x30')];var _0x5d8e9b;if(_0x4567d1>=_0x3cbd8c){_0x4567d1=_0x3cbd8c;_0x5d8e9b=0xc8;}else{_0x5d8e9b=0xce;}_0x2e08bc[_0xe7f0('0x2b')](_0x5d8e9b);return _0x2e08bc[_0xe7f0('0x32')](_0xe7f0('0x33'),_0x15b80c+'-'+_0x4567d1+'/'+_0x3cbd8c)['json'](_0x22d2a5);}return null;};}function patchUpdates(_0x5a4c4c){return function(_0x1d95de){try{jsonpatch[_0xe7f0('0x34')](_0x1d95de,_0x5a4c4c,!![]);}catch(_0x3ef641){return BPromise[_0xe7f0('0x35')](_0x3ef641);}return _0x1d95de[_0xe7f0('0x36')]();};}function saveUpdates(_0x182561,_0x324433){return function(_0x1334f9){if(_0x1334f9){return _0x1334f9[_0xe7f0('0x37')](_0x182561)[_0xe7f0('0x20')](function(_0x1ee67c){return _0x1ee67c;});}return null;};}function removeEntity(_0x3a7268,_0x440822){return function(_0x61f563){if(_0x61f563){return _0x61f563[_0xe7f0('0x38')]()[_0xe7f0('0x20')](function(){_0x3a7268['status'](0xcc)[_0xe7f0('0x2c')]();});}};}function handleEntityNotFound(_0x4f6780,_0x3d5980){return function(_0x380348){if(!_0x380348){_0x4f6780[_0xe7f0('0x2a')](0x194);}return _0x380348;};}function handleError(_0x422dcc,_0x463f40){_0x463f40=_0x463f40||0x1f4;return function(_0xaf9589){logger['error'](_0xaf9589[_0xe7f0('0x39')]);if(_0xaf9589[_0xe7f0('0x3a')]){delete _0xaf9589[_0xe7f0('0x3a')];}_0x422dcc[_0xe7f0('0x2b')](_0x463f40)[_0xe7f0('0x3b')](_0xaf9589);};}exports['index']=function(_0xce5ba8,_0xd3f7d9){var _0x3d3eba={},_0x591315={},_0x364297={'count':0x0,'rows':[]};var _0x5747b6=_[_0xe7f0('0x3c')](db[_0xe7f0('0x3d')][_0xe7f0('0x3e')],function(_0x2a305d){return{'name':_0x2a305d['fieldName'],'type':_0x2a305d[_0xe7f0('0x3f')]['key']};});_0x591315[_0xe7f0('0x40')]=_['map'](_0x5747b6,'name');_0x591315[_0xe7f0('0x41')]=_[_0xe7f0('0x42')](_0xce5ba8[_0xe7f0('0x41')]);_0x591315['filters']=_[_0xe7f0('0x43')](_0x591315[_0xe7f0('0x40')],_0x591315['query']);_0x3d3eba[_0xe7f0('0x44')]=_[_0xe7f0('0x43')](_0x591315[_0xe7f0('0x40')],qs[_0xe7f0('0x45')](_0xce5ba8[_0xe7f0('0x41')][_0xe7f0('0x45')]));_0x3d3eba[_0xe7f0('0x44')]=_0x3d3eba[_0xe7f0('0x44')][_0xe7f0('0x46')]?_0x3d3eba[_0xe7f0('0x44')]:_0x591315[_0xe7f0('0x40')];if(!_0xce5ba8['query']['hasOwnProperty'](_0xe7f0('0x47'))){_0x3d3eba[_0xe7f0('0x30')]=qs[_0xe7f0('0x30')](_0xce5ba8[_0xe7f0('0x41')][_0xe7f0('0x30')]);_0x3d3eba[_0xe7f0('0x2e')]=qs[_0xe7f0('0x2e')](_0xce5ba8['query'][_0xe7f0('0x2e')]);}_0x3d3eba[_0xe7f0('0x48')]=qs[_0xe7f0('0x49')](_0xce5ba8['query'][_0xe7f0('0x49')]);_0x3d3eba['where']=qs[_0xe7f0('0x4a')](_[_0xe7f0('0x4b')](_0xce5ba8[_0xe7f0('0x41')],_0x591315[_0xe7f0('0x4a')]),_0x5747b6);if(_0xce5ba8[_0xe7f0('0x41')][_0xe7f0('0x4c')]){_0x3d3eba['where']=_['merge'](_0x3d3eba[_0xe7f0('0x4d')],{'$or':_[_0xe7f0('0x3c')](_0x5747b6,function(_0x1760ad){if(_0x1760ad[_0xe7f0('0x3f')]!=='VIRTUAL'){var _0x50c025={};_0x50c025[_0x1760ad[_0xe7f0('0x3a')]]={'$like':'%'+_0xce5ba8['query'][_0xe7f0('0x4c')]+'%'};return _0x50c025;}})});}_0x3d3eba=_[_0xe7f0('0x4e')]({},_0x3d3eba,_0xce5ba8[_0xe7f0('0x4f')]);var _0x7eb49a={'where':_0x3d3eba['where']};return db['WhatsappMessage'][_0xe7f0('0x31')](_0x7eb49a)[_0xe7f0('0x20')](function(_0xcd9fe6){_0x364297[_0xe7f0('0x31')]=_0xcd9fe6;if(_0xce5ba8[_0xe7f0('0x41')][_0xe7f0('0x50')]){_0x3d3eba[_0xe7f0('0x51')]=[{'all':!![]}];}return db[_0xe7f0('0x3d')][_0xe7f0('0x52')](_0x3d3eba);})['then'](function(_0x2e52f9){_0x364297[_0xe7f0('0x53')]=_0x2e52f9;return _0x364297;})[_0xe7f0('0x20')](respondWithFilteredResult(_0xd3f7d9,_0x3d3eba))[_0xe7f0('0x54')](handleError(_0xd3f7d9,null));};exports[_0xe7f0('0x55')]=function(_0x40698b,_0x371725){var _0x17bb8c={'raw':!![],'where':{'id':_0x40698b[_0xe7f0('0x56')]['id']}},_0x4d774f={};_0x4d774f[_0xe7f0('0x40')]=_[_0xe7f0('0x42')](db[_0xe7f0('0x3d')][_0xe7f0('0x3e')]);_0x4d774f[_0xe7f0('0x41')]=_['keys'](_0x40698b[_0xe7f0('0x41')]);_0x4d774f[_0xe7f0('0x4a')]=_[_0xe7f0('0x43')](_0x4d774f[_0xe7f0('0x40')],_0x4d774f[_0xe7f0('0x41')]);_0x17bb8c[_0xe7f0('0x44')]=_[_0xe7f0('0x43')](_0x4d774f['model'],qs[_0xe7f0('0x45')](_0x40698b[_0xe7f0('0x41')][_0xe7f0('0x45')]));_0x17bb8c[_0xe7f0('0x44')]=_0x17bb8c[_0xe7f0('0x44')][_0xe7f0('0x46')]?_0x17bb8c['attributes']:_0x4d774f['model'];if(_0x40698b[_0xe7f0('0x41')]['includeAll']){_0x17bb8c[_0xe7f0('0x51')]=[{'all':!![]}];}_0x17bb8c=_[_0xe7f0('0x4e')]({},_0x17bb8c,_0x40698b[_0xe7f0('0x4f')]);return db['WhatsappMessage'][_0xe7f0('0x57')](_0x17bb8c)[_0xe7f0('0x20')](handleEntityNotFound(_0x371725,null))[_0xe7f0('0x20')](respondWithResult(_0x371725,null))[_0xe7f0('0x54')](handleError(_0x371725,null));};exports[_0xe7f0('0x58')]=function(_0x4313e9,_0x265d11){return db[_0xe7f0('0x3d')][_0xe7f0('0x58')](_0x4313e9['body'],{})[_0xe7f0('0x20')](respondWithResult(_0x265d11,0xc9))[_0xe7f0('0x54')](handleError(_0x265d11,null));};exports['update']=function(_0x232953,_0x1be94e){if(_0x232953[_0xe7f0('0x59')]['id']){delete _0x232953['body']['id'];}return db[_0xe7f0('0x3d')][_0xe7f0('0x57')]({'where':{'id':_0x232953[_0xe7f0('0x56')]['id']}})[_0xe7f0('0x20')](handleEntityNotFound(_0x1be94e,null))[_0xe7f0('0x20')](saveUpdates(_0x232953[_0xe7f0('0x59')],null))[_0xe7f0('0x20')](respondWithResult(_0x1be94e,null))[_0xe7f0('0x54')](handleError(_0x1be94e,null));};exports[_0xe7f0('0x38')]=function(_0x4b3cd2,_0x4b85f9){return db[_0xe7f0('0x3d')]['find']({'where':{'id':_0x4b3cd2[_0xe7f0('0x56')]['id']}})[_0xe7f0('0x20')](handleEntityNotFound(_0x4b85f9,null))['then'](removeEntity(_0x4b85f9,null))[_0xe7f0('0x54')](handleError(_0x4b85f9,null));};exports[_0xe7f0('0x5a')]=function(_0x2c5945,_0x36e26a){return db['WhatsappMessage'][_0xe7f0('0x5a')]()[_0xe7f0('0x20')](respondWithResult(_0x36e26a,null))[_0xe7f0('0x54')](handleError(_0x36e26a,null));};var interaction_log=require(_0xe7f0('0x12'))(_0xe7f0('0x5b'));exports[_0xe7f0('0x5c')]=function(_0x38e702,_0x5d2352,_0x1bf921){var _0x406608={'agent':{},'channel':_0xe7f0('0x5d')};if(_0x38e702['body']['id']){delete _0x38e702[_0xe7f0('0x59')]['id'];}_0x38e702[_0xe7f0('0x59')][_0xe7f0('0x5e')]=!![];_0x38e702[_0xe7f0('0x59')][_0xe7f0('0x5f')]=moment()[_0xe7f0('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x38e702['body'][_0xe7f0('0x61')]=_0x38e702[_0xe7f0('0x59')][_0xe7f0('0x61')]||_0x38e702[_0xe7f0('0x62')]['id'];_0x406608[_0xe7f0('0x63')]['id']=_0x38e702[_0xe7f0('0x59')]['UserId'];return db[_0xe7f0('0x3d')][_0xe7f0('0x57')]({'where':{'id':_0x38e702[_0xe7f0('0x56')]['id'],'UserId':null}})[_0xe7f0('0x20')](handleEntityNotFound(_0x5d2352,null))['then'](saveUpdates(_0x38e702['body'],null))['then'](function(_0x250876){if(_0x250876){_0x406608['message']=_0x250876[_0xe7f0('0x64')]({'plain':!![]});return db['WhatsappInteraction'][_0xe7f0('0x57')]({'where':{'id':_0x250876['WhatsappInteractionId']}});}return null;})[_0xe7f0('0x20')](handleEntityNotFound(_0x5d2352,null))[_0xe7f0('0x20')](function(_0x5933d1){if(_0x5933d1){return _0x5933d1['update']({'UserId':_0x38e702[_0xe7f0('0x59')][_0xe7f0('0x61')],'read1stAt':_[_0xe7f0('0x65')](_0x5933d1['read1stAt'])?moment()[_0xe7f0('0x60')](_0xe7f0('0x66')):undefined});}return null;})['then'](function(_0x120783){if(_0x120783){_0x406608[_0xe7f0('0x67')]=_0x120783[_0xe7f0('0x64')]({'plain':!![]});interaction_log['info'](_0xe7f0('0x68'),_0x38e702[_0xe7f0('0x62')]['id'],_0x38e702['user'][_0xe7f0('0x3a')],_0x38e702[_0xe7f0('0x62')][_0xe7f0('0x69')],_0x406608[_0xe7f0('0x67')]['id'],_0x38e702[_0xe7f0('0x59')]?JSON[_0xe7f0('0x6a')](_0x38e702[_0xe7f0('0x59')]):_0xe7f0('0x6b'));return respondWithRpcPromise(_0xe7f0('0x6c'),_0xe7f0('0x6d'),_0x406608);}return null;})[_0xe7f0('0x20')](function(_0x68d16b){var _0x5ac25d=_0xe7f0('0x6e')+_0x68d16b[_0xe7f0('0x28')][_0xe7f0('0x6f')];return db[_0xe7f0('0x70')]['query'](_0x5ac25d,{'type':db[_0xe7f0('0x71')][_0xe7f0('0x72')][_0xe7f0('0x73')],'raw':!![]})['then'](function(_0x4e5ea9){return _0x4e5ea9;});})[_0xe7f0('0x20')](function(_0x1faad){if(_0x1faad){_0x406608['message'][_0xe7f0('0x74')]=_0x1faad[0x0];if(!_0x38e702[_0xe7f0('0x59')][_0xe7f0('0x61')])return;return db[_0xe7f0('0x75')][_0xe7f0('0x57')]({'where':{'id':_0x38e702['body'][_0xe7f0('0x61')],'role':'agent'},'attributes':['id',_0xe7f0('0x3a'),_0xe7f0('0x76'),_0xe7f0('0x77'),'internal'],'raw':!![]});}return null;})['then'](function(_0x1a06fc){if(!_0x1a06fc)return null;_0x406608[_0xe7f0('0x28')][_0xe7f0('0x63')]=_0x1a06fc;return _0x406608;})['then'](function(_0x537286){if(_0x537286){if(_0x38e702['body'][_0xe7f0('0x78')]){_0x406608['message']['interface']=util[_0xe7f0('0x60')](_0xe7f0('0x79'),_0x38e702['user'][_0xe7f0('0x3a')]);_0x406608['message'][_0xe7f0('0x7a')]=_0x406608[_0xe7f0('0x7a')];_0x406608[_0xe7f0('0x28')][_0xe7f0('0x7b')]=_0x406608[_0xe7f0('0x7a')];_0x406608[_0xe7f0('0x28')][_0xe7f0('0x7c')]=_0xe7f0('0x5c');return respondWithRpcPromise(_0xe7f0('0x7d'),_0xe7f0('0x7d'),{'event':_0xe7f0('0x7e'),'message':_0x406608[_0xe7f0('0x28')]},client9002)['then'](function(){return _0x406608;});}return _0x406608;}return null;})['then'](respondWithResult(_0x5d2352,null))['catch'](handleError(_0x5d2352,null));};var interaction_log=require('../../config/logger')('whatsapp-interactions');exports[_0xe7f0('0x35')]=function(_0xa3d0c8,_0x231680,_0x26fb94){var _0x372b58={'agent':{},'channel':_0xe7f0('0x5d')};if(_0xa3d0c8[_0xe7f0('0x59')]['id']){delete _0xa3d0c8[_0xe7f0('0x59')]['id'];}_0xa3d0c8['body'][_0xe7f0('0x61')]=_0xa3d0c8[_0xe7f0('0x59')][_0xe7f0('0x61')]||_0xa3d0c8[_0xe7f0('0x62')]['id'];_0x372b58['agent']['id']=_0xa3d0c8[_0xe7f0('0x59')]['UserId'];return db[_0xe7f0('0x3d')][_0xe7f0('0x57')]({'where':{'id':_0xa3d0c8[_0xe7f0('0x56')]['id'],'UserId':null}})[_0xe7f0('0x20')](handleEntityNotFound(_0x231680,null))[_0xe7f0('0x20')](function(_0x573e1a){if(_0x573e1a){_0x372b58[_0xe7f0('0x28')]=_0x573e1a[_0xe7f0('0x64')]({'plain':!![]});return db['WhatsappInteraction'][_0xe7f0('0x57')]({'where':{'id':_0x573e1a['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x231680,null))[_0xe7f0('0x20')](function(_0x18e466){if(_0x18e466){_0x372b58[_0xe7f0('0x67')]=_0x18e466[_0xe7f0('0x64')]({'plain':!![]});interaction_log[_0xe7f0('0x21')](_0xe7f0('0x7f'),_0xa3d0c8['user']['id'],_0xa3d0c8[_0xe7f0('0x62')][_0xe7f0('0x3a')],_0xa3d0c8[_0xe7f0('0x62')][_0xe7f0('0x69')],_0x372b58[_0xe7f0('0x67')]['id'],_0xa3d0c8[_0xe7f0('0x59')]?JSON[_0xe7f0('0x6a')](_0xa3d0c8[_0xe7f0('0x59')]):'null');return respondWithRpcPromise(_0xe7f0('0x80'),_0xe7f0('0x81'),_0x372b58);}return null;})['then'](function(_0x100d01){var _0x4a55e4=_0xe7f0('0x6e')+_0x100d01[_0xe7f0('0x28')][_0xe7f0('0x6f')];return db['sequelize'][_0xe7f0('0x41')](_0x4a55e4,{'type':db[_0xe7f0('0x71')][_0xe7f0('0x72')]['SELECT'],'raw':!![]})[_0xe7f0('0x20')](function(_0x5721d7){return _0x5721d7;});})[_0xe7f0('0x20')](function(_0xc518d9){if(_0xc518d9){_0x372b58[_0xe7f0('0x28')]['contact']=_0xc518d9[0x0];if(!_0xa3d0c8[_0xe7f0('0x59')][_0xe7f0('0x61')])return;return db['User']['find']({'where':{'id':_0xa3d0c8[_0xe7f0('0x59')][_0xe7f0('0x61')],'role':_0xe7f0('0x63')},'attributes':['id',_0xe7f0('0x3a'),_0xe7f0('0x76'),_0xe7f0('0x77'),_0xe7f0('0x82')],'raw':!![]});}return null;})[_0xe7f0('0x20')](function(_0x1738d6){if(!_0x1738d6)return null;_0x372b58[_0xe7f0('0x28')][_0xe7f0('0x63')]=_0x1738d6;return _0x372b58;})[_0xe7f0('0x20')](function(_0x5c8f43){if(_0x5c8f43){_0x5c8f43[_0xe7f0('0x28')][_0xe7f0('0x83')]=util[_0xe7f0('0x60')](_0xe7f0('0x79'),_0xa3d0c8[_0xe7f0('0x62')][_0xe7f0('0x3a')]);_0x5c8f43[_0xe7f0('0x28')]['channel']=_0x372b58[_0xe7f0('0x7a')];_0x5c8f43[_0xe7f0('0x28')][_0xe7f0('0x7b')]=_0x372b58[_0xe7f0('0x7a')];_0x5c8f43['message'][_0xe7f0('0x7c')]=_0xe7f0('0x35');respondWithRpcPromise(_0xe7f0('0x7d'),_0xe7f0('0x7d'),{'event':_0xe7f0('0x84'),'message':_0x5c8f43['message']},client9002);return _0x372b58;}return null;})[_0xe7f0('0x20')](respondWithResult(_0x231680,null))[_0xe7f0('0x54')](handleError(_0x231680,null));};exports[_0xe7f0('0x2b')]=function(_0x1d9f88,_0x2f898d,_0x1fdbf5){if(_0x1d9f88['body']['id']){delete _0x1d9f88[_0xe7f0('0x59')]['id'];}var _0x40713b;return db[_0xe7f0('0x3d')][_0xe7f0('0x57')]({'where':{'id':_0x1d9f88[_0xe7f0('0x56')]['id']}})[_0xe7f0('0x20')](handleEntityNotFound(_0x2f898d,null))[_0xe7f0('0x20')](function(_0x13b6be){if(_0x13b6be){_0x40713b=_0x13b6be;return db[_0xe7f0('0x85')][_0xe7f0('0x57')]({'where':{'id':_0x13b6be['WhatsappAccountId']}});}})['then'](handleEntityNotFound(_0x2f898d,null))[_0xe7f0('0x20')](function(_0x139fe7){if(_0x139fe7){logger[_0xe7f0('0x24')]('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0xe7f0('0x2b'),_0xe7f0('0x86'),_0x139fe7[_0xe7f0('0x3f')],util[_0xe7f0('0x87')](_0x1d9f88[_0xe7f0('0x59')],{'showHidden':![],'depth':null}));switch(_0x139fe7[_0xe7f0('0x3f')]){case'twilio':if(_0x1d9f88['body'][_0xe7f0('0x88')]&&_0x1d9f88['body']['MessageSid']===_0x40713b[_0xe7f0('0x89')]&&_0x1d9f88[_0xe7f0('0x59')]['MessageStatus']&&_0x1d9f88[_0xe7f0('0x59')][_0xe7f0('0x8a')]===_0xe7f0('0x5e')){return _0x40713b[_0xe7f0('0x37')]({'read':!![]});}else{logger[_0xe7f0('0x26')](_0xe7f0('0x8b'),_0xe7f0('0x2b'),_0xe7f0('0x8c'),util['inspect'](_0x1d9f88[_0xe7f0('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x40713b;}})[_0xe7f0('0x20')](respondWithResult(_0x2f898d,null))['catch'](handleError(_0x2f898d,null));};
\ No newline at end of file
index bce4048..220c7d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235a=['../../mysqldb','WhatsappMessage','save','remove','emit','hasOwnProperty','exports','events'];(function(_0xddbbcb,_0x36af49){var _0x3730f2=function(_0x2a2c07){while(--_0x2a2c07){_0xddbbcb['push'](_0xddbbcb['shift']());}};_0x3730f2(++_0x36af49);}(_0x235a,0x1ef));var _0xa235=function(_0x10748a,_0x2c2be7){_0x10748a=_0x10748a-0x0;var _0x4f102f=_0x235a[_0x10748a];return _0x4f102f;};'use strict';var EventEmitter=require(_0xa235('0x0'));var WhatsappMessage=require(_0xa235('0x1'))['db'][_0xa235('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa235('0x3'),'afterUpdate':'update','afterDestroy':_0xa235('0x4')};function emitEvent(_0x2f7920){return function(_0x277a68,_0x314ebf,_0x2e6eca){WhatsappMessageEvents[_0xa235('0x5')](_0x2f7920+':'+_0x277a68['id'],_0x277a68);WhatsappMessageEvents[_0xa235('0x5')](_0x2f7920,_0x277a68);_0x2e6eca(null);};}for(var e in events){if(events[_0xa235('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0xa235('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x44a3=['emit','hasOwnProperty','events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove'];(function(_0x3e4ecc,_0x3c3803){var _0x26af00=function(_0x1f6158){while(--_0x1f6158){_0x3e4ecc['push'](_0x3e4ecc['shift']());}};_0x26af00(++_0x3c3803);}(_0x44a3,0x1a9));var _0x344a=function(_0x2975f1,_0x453f49){_0x2975f1=_0x2975f1-0x0;var _0x2c08d5=_0x44a3[_0x2975f1];return _0x2c08d5;};'use strict';var EventEmitter=require(_0x344a('0x0'));var WhatsappMessage=require(_0x344a('0x1'))['db'][_0x344a('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x344a('0x3')](0x0);var events={'afterCreate':_0x344a('0x4'),'afterUpdate':_0x344a('0x5'),'afterDestroy':_0x344a('0x6')};function emitEvent(_0x212a39){return function(_0x528a13,_0x23004c,_0x1bc716){WhatsappMessageEvents[_0x344a('0x7')](_0x212a39+':'+_0x528a13['id'],_0x528a13);WhatsappMessageEvents[_0x344a('0x7')](_0x212a39,_0x528a13);_0x1bc716(null);};}for(var e in events){if(events[_0x344a('0x8')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index edfc85d..81238ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1374=['POST','application/json','statuses','message_id','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define','WhatsappMessage','whatsapp_messages','messageId','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','WhatsappInteractionId','then','update','catch','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','authToken','phone','create','whatsapp:','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','accountSid','baseUrl','/whatsapp/v1/','/messages/','body'];(function(_0x5b15c0,_0x214f5a){var _0x42c219=function(_0x55521e){while(--_0x55521e){_0x5b15c0['push'](_0x5b15c0['shift']());}};_0x42c219(++_0x214f5a);}(_0x1374,0x1e0));var _0x4137=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x1374[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0x4137('0x0'));var util=require(_0x4137('0x1'));var logger=require(_0x4137('0x2'))(_0x4137('0x3'));var moment=require(_0x4137('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fetch=require('node-fetch');var fs=require('fs');var path=require(_0x4137('0x5'));var rimraf=require(_0x4137('0x6'));var config=require(_0x4137('0x7'));var attributes=require('./whatsappMessage.attributes');module[_0x4137('0x8')]=function(_0x5393d4,_0x3b7188){return _0x5393d4[_0x4137('0x9')](_0x4137('0xa'),attributes,{'tableName':_0x4137('0xb'),'paranoid':![],'indexes':[{'name':_0x4137('0xc'),'fields':[_0x4137('0xc')]},{'name':'fti_whatsapp_messages','fields':['body'],'type':_0x4137('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x48da04,_0x9b9fa6,_0x5b9c08){var _0x137c00=_0x5393d4[_0x4137('0xe')];var _0x440557=_0x48da04[_0x4137('0xf')]({'plain':!![]});if(_0x440557[_0x4137('0x10')][_0x4137('0x11')]()==='in'||_0x440557[_0x4137('0x10')]['toLowerCase']()===_0x4137('0x12')&&!_0x440557[_0x4137('0x13')]&&!_[_0x4137('0x14')](_0x440557[_0x4137('0x15')])){_0x137c00['WhatsappInteraction'][_0x4137('0x16')]({'where':{'id':_0x440557[_0x4137('0x17')]}})[_0x4137('0x18')](function(_0x521586){if(_0x521586){_0x521586[_0x4137('0x19')]({'lastMsgAt':_0x440557['createdAt'],'lastMsgDirection':_0x440557['direction'][_0x4137('0x11')]()});}})[_0x4137('0x1a')](function(_0x26b6bf){console[_0x4137('0x1b')](_0x26b6bf);});}if(_0x440557['direction']===_0x4137('0x12')&&!_0x440557[_0x4137('0x13')]){var _0x10fd68;_0x137c00[_0x4137('0x1c')][_0x4137('0x1d')]({'where':{'id':_0x440557[_0x4137('0x1e')]},'raw':!![]})['then'](function(_0x3e6ab0){_0x10fd68=_0x3e6ab0;if(_0x10fd68&&_0x10fd68[_0x4137('0x1f')]){switch(_0x10fd68[_0x4137('0x1f')]){case _0x4137('0x20'):var _0x18d989=require(_0x4137('0x20'));if(_0x10fd68['accountSid']&&_0x10fd68[_0x4137('0x21')]&&_0x10fd68[_0x4137('0x22')]){var _0x4064da=new _0x18d989(_0x10fd68['accountSid'],_0x10fd68['authToken']);_0x4064da['messages'][_0x4137('0x23')]({'body':_0x440557['body'],'to':'whatsapp:'+_0x440557[_0x4137('0x22')],'from':_0x4137('0x24')+_0x10fd68[_0x4137('0x22')],'statusCallback':_0x10fd68['remote']+_0x4137('0x25')+_0x440557['id']+_0x4137('0x26')+_0x10fd68[_0x4137('0x27')]})[_0x4137('0x18')](function(_0x4702af){if(_0x4702af['sid']){return _0x48da04[_0x4137('0x19')]({'messageId':_0x4702af[_0x4137('0x28')]});}})['catch'](function(_0x2c52a1){logger[_0x4137('0x1b')](_0x4137('0x29'),_0x4137('0x2a'),'twilio',util[_0x4137('0x2b')](_0x2c52a1,{'showHidden':![],'depth':null}));});}else{logger[_0x4137('0x1b')](_0x4137('0x29'),_0x4137('0x2a'),'twilio',_0x4137('0x2c'));}break;case _0x4137('0x2d'):var _0x390bcf=_0x10fd68[_0x4137('0x2e')];var _0xb82084=_0x10fd68['authToken'];var _0x5b8cec=_0x10fd68[_0x4137('0x2f')]+_0x4137('0x30')+_0x390bcf+_0x4137('0x31');var _0x13512f={'to':[_0x440557[_0x4137('0x22')]],'message':{'type':'text','text':_0x440557[_0x4137('0x32')]}};var _0x2e9a47={'method':_0x4137('0x33'),'uri':_0x5b8cec,'headers':{'Authorization':'Bearer\x20'+_0xb82084,'Content-Type':_0x4137('0x34')},'body':_0x13512f,'json':!![]};rp(_0x2e9a47)['then'](function(_0x581646){if(_0x581646[_0x4137('0x35')][0x0]['message_id']){return _0x48da04[_0x4137('0x19')]({'messageId':_0x581646[_0x4137('0x35')][0x0][_0x4137('0x36')]});}})[_0x4137('0x1a')](function(_0x382520){logger['err'](_0x4137('0x37'),_0x382520);});break;}}})[_0x4137('0x38')](function(){_0x5b9c08();});}else{_0x5b9c08();}}},'charset':_0x4137('0x39'),'collate':_0x4137('0x3a')});};
\ No newline at end of file
+var _0xcd0e=['WhatsappInteraction','findOne','update','createdAt','catch','error','WhatsappAccount','find','then','type','twilio','authToken','phone','accountSid','messages','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','/whatsapp/v1/','text','Bearer\x20','application/json','statuses','message_id','err','WhatsappMessage,\x20%s','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','out','secret','isNil','UserId'];(function(_0x1e393b,_0x355f6b){var _0x3d0bfe=function(_0x320830){while(--_0x320830){_0x1e393b['push'](_0x1e393b['shift']());}};_0x3d0bfe(++_0x355f6b);}(_0xcd0e,0x18c));var _0xecd0=function(_0x35a274,_0x98b399){_0x35a274=_0x35a274-0x0;var _0x40d905=_0xcd0e[_0x35a274];return _0x40d905;};'use strict';var _=require(_0xecd0('0x0'));var util=require(_0xecd0('0x1'));var logger=require(_0xecd0('0x2'))(_0xecd0('0x3'));var moment=require(_0xecd0('0x4'));var BPromise=require(_0xecd0('0x5'));var rp=require(_0xecd0('0x6'));var fetch=require(_0xecd0('0x7'));var fs=require('fs');var path=require(_0xecd0('0x8'));var rimraf=require(_0xecd0('0x9'));var config=require(_0xecd0('0xa'));var attributes=require(_0xecd0('0xb'));module['exports']=function(_0x4f07f7,_0x408d0f){return _0x4f07f7['define']('WhatsappMessage',attributes,{'tableName':_0xecd0('0xc'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xecd0('0xd')]},{'name':_0xecd0('0xe'),'fields':[_0xecd0('0xf')],'type':_0xecd0('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x24b63a,_0x3d0811,_0x545900){var _0xbf7762=_0x4f07f7[_0xecd0('0x11')];var _0x254409=_0x24b63a[_0xecd0('0x12')]({'plain':!![]});if(_0x254409[_0xecd0('0x13')]['toLowerCase']()==='in'||_0x254409[_0xecd0('0x13')]['toLowerCase']()===_0xecd0('0x14')&&!_0x254409[_0xecd0('0x15')]&&!_[_0xecd0('0x16')](_0x254409[_0xecd0('0x17')])){_0xbf7762[_0xecd0('0x18')][_0xecd0('0x19')]({'where':{'id':_0x254409['WhatsappInteractionId']}})['then'](function(_0x2a88a1){if(_0x2a88a1){_0x2a88a1[_0xecd0('0x1a')]({'lastMsgAt':_0x254409[_0xecd0('0x1b')],'lastMsgDirection':_0x254409[_0xecd0('0x13')]['toLowerCase']()});}})[_0xecd0('0x1c')](function(_0x2706b1){console[_0xecd0('0x1d')](_0x2706b1);});}if(_0x254409['direction']===_0xecd0('0x14')&&!_0x254409[_0xecd0('0x15')]){var _0x214341;_0xbf7762[_0xecd0('0x1e')][_0xecd0('0x1f')]({'where':{'id':_0x254409['WhatsappAccountId']},'raw':!![]})[_0xecd0('0x20')](function(_0x7c22eb){_0x214341=_0x7c22eb;if(_0x214341&&_0x214341[_0xecd0('0x21')]){switch(_0x214341[_0xecd0('0x21')]){case'twilio':var _0x53e6af=require(_0xecd0('0x22'));if(_0x214341['accountSid']&&_0x214341[_0xecd0('0x23')]&&_0x214341[_0xecd0('0x24')]){var _0x58c26c=new _0x53e6af(_0x214341[_0xecd0('0x25')],_0x214341[_0xecd0('0x23')]);_0x58c26c[_0xecd0('0x26')][_0xecd0('0x27')]({'body':_0x254409[_0xecd0('0xf')],'to':'whatsapp:'+_0x254409[_0xecd0('0x24')],'from':_0xecd0('0x28')+_0x214341['phone'],'statusCallback':_0x214341[_0xecd0('0x29')]+_0xecd0('0x2a')+_0x254409['id']+_0xecd0('0x2b')+_0x214341['token']})['then'](function(_0x5b9737){if(_0x5b9737[_0xecd0('0x2c')]){return _0x24b63a['update']({'messageId':_0x5b9737[_0xecd0('0x2c')]});}})[_0xecd0('0x1c')](function(_0x14d2fd){logger['error'](_0xecd0('0x2d'),_0xecd0('0x2e'),_0xecd0('0x22'),util[_0xecd0('0x2f')](_0x14d2fd,{'showHidden':![],'depth':null}));});}else{logger[_0xecd0('0x1d')]('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio',_0xecd0('0x30'));}break;case _0xecd0('0x31'):var _0x3874a7=_0x214341[_0xecd0('0x25')];var _0x5bdd71=_0x214341[_0xecd0('0x23')];var _0x5b1265=_0x214341['baseUrl']+_0xecd0('0x32')+_0x3874a7+'/messages/';var _0x34894={'to':[_0x254409[_0xecd0('0x24')]],'message':{'type':_0xecd0('0x33'),'text':_0x254409[_0xecd0('0xf')]}};var _0xc86a48={'method':'POST','uri':_0x5b1265,'headers':{'Authorization':_0xecd0('0x34')+_0x5bdd71,'Content-Type':_0xecd0('0x35')},'body':_0x34894,'json':!![]};rp(_0xc86a48)['then'](function(_0x391ab3){if(_0x391ab3[_0xecd0('0x36')][0x0][_0xecd0('0x37')]){return _0x24b63a[_0xecd0('0x1a')]({'messageId':_0x391ab3[_0xecd0('0x36')][0x0][_0xecd0('0x37')]});}})['catch'](function(_0x3cb2d4){logger[_0xecd0('0x38')](_0xecd0('0x39'),_0x3cb2d4);});break;}}})['finally'](function(){_0x545900();});}else{_0x545900();}}},'charset':_0xecd0('0x3a'),'collate':_0xecd0('0x3b')});};
\ No newline at end of file
index ee4b607..e9f4392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ddc=['body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','localhost','socket.io-emitter','redis','register','request','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateWhatsappMessage','WhatsappMessage','create'];(function(_0x5c8761,_0x4ad0b9){var _0x5047a8=function(_0x5a5779){while(--_0x5a5779){_0x5c8761['push'](_0x5c8761['shift']());}};_0x5047a8(++_0x4ad0b9);}(_0x0ddc,0x161));var _0xc0dd=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x0ddc[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xc0dd('0x0'));var util=require(_0xc0dd('0x1'));var moment=require('moment');var BPromise=require(_0xc0dd('0x2'));var rs=require(_0xc0dd('0x3'));var fs=require('fs');var Redis=require(_0xc0dd('0x4'));var db=require(_0xc0dd('0x5'))['db'];var utils=require(_0xc0dd('0x6'));var logger=require(_0xc0dd('0x7'))(_0xc0dd('0x8'));var config=require(_0xc0dd('0x9'));var jayson=require(_0xc0dd('0xa'));var client=jayson['client'][_0xc0dd('0xb')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xc0dd('0xc'),'port':0x18eb});var socket=require(_0xc0dd('0xd'))(new Redis(config[_0xc0dd('0xe')]));require('./whatsappMessage.socket')[_0xc0dd('0xf')](socket);function respondWithRpcPromise(_0x371d91,_0x248a39,_0x28e225){return new BPromise(function(_0x32707e,_0x576ac6){return client[_0xc0dd('0x10')](_0x371d91,_0x28e225)[_0xc0dd('0x11')](function(_0x5a2683){logger['info'](_0xc0dd('0x12'),_0x248a39,_0xc0dd('0x13'));logger[_0xc0dd('0x14')](_0xc0dd('0x15'),_0x248a39,_0xc0dd('0x13'),JSON[_0xc0dd('0x16')](_0x5a2683));if(_0x5a2683['error']){if(_0x5a2683[_0xc0dd('0x17')][_0xc0dd('0x18')]===0x1f4){logger[_0xc0dd('0x17')](_0xc0dd('0x12'),_0x248a39,_0x5a2683[_0xc0dd('0x17')][_0xc0dd('0x19')]);return _0x576ac6(_0x5a2683[_0xc0dd('0x17')]['message']);}logger['error'](_0xc0dd('0x12'),_0x248a39,_0x5a2683['error'][_0xc0dd('0x19')]);return _0x32707e(_0x5a2683[_0xc0dd('0x17')][_0xc0dd('0x19')]);}else{logger[_0xc0dd('0x1a')](_0xc0dd('0x12'),_0x248a39,_0xc0dd('0x13'));_0x32707e(_0x5a2683[_0xc0dd('0x1b')]['message']);}})[_0xc0dd('0x1c')](function(_0x287871){logger[_0xc0dd('0x17')](_0xc0dd('0x12'),_0x248a39,_0x287871);_0x576ac6(_0x287871);});});}exports[_0xc0dd('0x1d')]=function(_0x594dd8){var _0x7c26ba=this;return new Promise(function(_0xbf4a74,_0x295410){return db[_0xc0dd('0x1e')][_0xc0dd('0x1f')](_0x594dd8[_0xc0dd('0x20')],{'raw':_0x594dd8['options']?_0x594dd8[_0xc0dd('0x21')][_0xc0dd('0x22')]===undefined?!![]:![]:!![]})[_0xc0dd('0x11')](function(_0x204ef0){logger[_0xc0dd('0x1a')](_0xc0dd('0x1d'),_0x594dd8);logger['debug'](_0xc0dd('0x1d'),_0x594dd8,JSON[_0xc0dd('0x16')](_0x204ef0));_0xbf4a74(_0x204ef0);})[_0xc0dd('0x1c')](function(_0x172ba6){logger['error'](_0xc0dd('0x1d'),_0x172ba6[_0xc0dd('0x19')],_0x594dd8);_0x295410(_0x7c26ba[_0xc0dd('0x17')](0x1f4,_0x172ba6['message']));});});};
\ No newline at end of file
+var _0x377c=['message','result','catch','WhatsappMessage,\x20%s,\x20%s','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1fcaf1,_0x21c3c2){var _0x55f464=function(_0x348eb3){while(--_0x348eb3){_0x1fcaf1['push'](_0x1fcaf1['shift']());}};_0x55f464(++_0x21c3c2);}(_0x377c,0x19d));var _0xc377=function(_0x4eb045,_0x1adeee){_0x4eb045=_0x4eb045-0x0;var _0x528fa6=_0x377c[_0x4eb045];return _0x528fa6;};'use strict';var _=require(_0xc377('0x0'));var util=require(_0xc377('0x1'));var moment=require('moment');var BPromise=require(_0xc377('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc377('0x3'));var db=require(_0xc377('0x4'))['db'];var utils=require(_0xc377('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc377('0x6')][_0xc377('0x7')]({'port':0x232a});config['redis']=_[_0xc377('0x8')](config[_0xc377('0x9')],{'host':_0xc377('0xa'),'port':0x18eb});var socket=require(_0xc377('0xb'))(new Redis(config[_0xc377('0x9')]));require('./whatsappMessage.socket')[_0xc377('0xc')](socket);function respondWithRpcPromise(_0x2046a0,_0x117202,_0x1a104a){return new BPromise(function(_0x57338f,_0x39d7a5){return client[_0xc377('0xd')](_0x2046a0,_0x1a104a)[_0xc377('0xe')](function(_0x7f1492){logger[_0xc377('0xf')]('WhatsappMessage,\x20%s,\x20%s',_0x117202,_0xc377('0x10'));logger['debug'](_0xc377('0x11'),_0x117202,_0xc377('0x10'),JSON[_0xc377('0x12')](_0x7f1492));if(_0x7f1492[_0xc377('0x13')]){if(_0x7f1492['error'][_0xc377('0x14')]===0x1f4){logger[_0xc377('0x13')]('WhatsappMessage,\x20%s,\x20%s',_0x117202,_0x7f1492['error'][_0xc377('0x15')]);return _0x39d7a5(_0x7f1492[_0xc377('0x13')][_0xc377('0x15')]);}logger[_0xc377('0x13')]('WhatsappMessage,\x20%s,\x20%s',_0x117202,_0x7f1492['error'][_0xc377('0x15')]);return _0x57338f(_0x7f1492[_0xc377('0x13')][_0xc377('0x15')]);}else{logger[_0xc377('0xf')]('WhatsappMessage,\x20%s,\x20%s',_0x117202,_0xc377('0x10'));_0x57338f(_0x7f1492[_0xc377('0x16')]['message']);}})[_0xc377('0x17')](function(_0x1b829c){logger['error'](_0xc377('0x18'),_0x117202,_0x1b829c);_0x39d7a5(_0x1b829c);});});}exports[_0xc377('0x19')]=function(_0x34f06f){var _0x17c6b4=this;return new Promise(function(_0x5fd5ef,_0x38eabb){return db[_0xc377('0x1a')][_0xc377('0x1b')](_0x34f06f[_0xc377('0x1c')],{'raw':_0x34f06f[_0xc377('0x1d')]?_0x34f06f[_0xc377('0x1d')][_0xc377('0x1e')]===undefined?!![]:![]:!![]})[_0xc377('0xe')](function(_0x244253){logger[_0xc377('0xf')]('CreateWhatsappMessage',_0x34f06f);logger['debug'](_0xc377('0x19'),_0x34f06f,JSON['stringify'](_0x244253));_0x5fd5ef(_0x244253);})[_0xc377('0x17')](function(_0x147562){logger[_0xc377('0x13')]('CreateWhatsappMessage',_0x147562[_0xc377('0x15')],_0x34f06f);_0x38eabb(_0x17c6b4[_0xc377('0x13')](0x1f4,_0x147562[_0xc377('0x15')]));});});};
\ No newline at end of file
index 8127aae..7d0b7c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc170=['save','remove','update','removeListener','register','length','whatsappMessage:'];(function(_0x1af5b2,_0x1b82fe){var _0xf1aa2d=function(_0x2ceae2){while(--_0x2ceae2){_0x1af5b2['push'](_0x1af5b2['shift']());}};_0xf1aa2d(++_0x1b82fe);}(_0xc170,0x150));var _0x0c17=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xc170[_0x1d24eb];return _0x1dc576;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0x0c17('0x0'),_0x0c17('0x1'),_0x0c17('0x2')];function createListener(_0x31bf82,_0x4cdf79){return function(_0x2d4513){_0x4cdf79['emit'](_0x31bf82,_0x2d4513);};}function removeListener(_0x2dab11,_0x1d2eca){return function(){WhatsappMessageEvents[_0x0c17('0x3')](_0x2dab11,_0x1d2eca);};}exports[_0x0c17('0x4')]=function(_0xd705d8){for(var _0x2566aa=0x0,_0x217339=events[_0x0c17('0x5')];_0x2566aa<_0x217339;_0x2566aa++){var _0x184f54=events[_0x2566aa];var _0x21c977=createListener(_0x0c17('0x6')+_0x184f54,_0xd705d8);WhatsappMessageEvents['on'](_0x184f54,_0x21c977);}};
\ No newline at end of file
+var _0x7103=['removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save','remove','update'];(function(_0x332e65,_0x368a12){var _0x1b19dc=function(_0x5be18f){while(--_0x5be18f){_0x332e65['push'](_0x332e65['shift']());}};_0x1b19dc(++_0x368a12);}(_0x7103,0xc4));var _0x3710=function(_0x55b69e,_0x3ce1f9){_0x55b69e=_0x55b69e-0x0;var _0x403210=_0x7103[_0x55b69e];return _0x403210;};'use strict';var WhatsappMessageEvents=require(_0x3710('0x0'));var events=[_0x3710('0x1'),_0x3710('0x2'),_0x3710('0x3')];function createListener(_0x1be74f,_0x44c4bb){return function(_0x1a76b3){_0x44c4bb['emit'](_0x1be74f,_0x1a76b3);};}function removeListener(_0x1c873f,_0x3fb734){return function(){WhatsappMessageEvents[_0x3710('0x4')](_0x1c873f,_0x3fb734);};}exports[_0x3710('0x5')]=function(_0x4356dd){for(var _0x1da3a0=0x0,_0x1e79af=events[_0x3710('0x6')];_0x1da3a0<_0x1e79af;_0x1da3a0++){var _0x4de1eb=events[_0x1da3a0];var _0x23ba6b=createListener(_0x3710('0x7')+_0x4de1eb,_0x4356dd);WhatsappMessageEvents['on'](_0x4de1eb,_0x23ba6b);}};
\ No newline at end of file
index 9f11fa8..1ed44ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x489d=['get','isAuthenticated','/describe','describe','/:id','/:id/members','getAgents','create','post','/:id/teams','addTeams','update','destroy','delete','/:id/users','removeAgents','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller'];(function(_0x2224df,_0x4b0c4a){var _0x5391a5=function(_0x5886a0){while(--_0x5886a0){_0x2224df['push'](_0x2224df['shift']());}};_0x5391a5(++_0x4b0c4a);}(_0x489d,0x178));var _0xd489=function(_0x4d80e7,_0x422433){_0x4d80e7=_0x4d80e7-0x0;var _0x4f6410=_0x489d[_0x4d80e7];return _0x4f6410;};'use strict';var multer=require('multer');var util=require(_0xd489('0x0'));var path=require(_0xd489('0x1'));var timeout=require(_0xd489('0x2'));var express=require(_0xd489('0x3'));var router=express['Router']();var fs_extra=require(_0xd489('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd489('0x5'));var config=require(_0xd489('0x6'));var controller=require(_0xd489('0x7'));router[_0xd489('0x8')]('/',auth[_0xd489('0x9')](),controller['index']);router[_0xd489('0x8')](_0xd489('0xa'),auth['isAuthenticated'](),controller[_0xd489('0xb')]);router[_0xd489('0x8')](_0xd489('0xc'),auth[_0xd489('0x9')](),controller['show']);router[_0xd489('0x8')](_0xd489('0xd'),auth[_0xd489('0x9')](),controller['getMembers']);router[_0xd489('0x8')]('/:id/teams',auth[_0xd489('0x9')](),controller['getTeams']);router[_0xd489('0x8')]('/:id/users',auth[_0xd489('0x9')](),controller[_0xd489('0xe')]);router['post']('/',auth[_0xd489('0x9')](),controller[_0xd489('0xf')]);router[_0xd489('0x10')](_0xd489('0x11'),auth[_0xd489('0x9')](),controller[_0xd489('0x12')]);router[_0xd489('0x10')]('/:id/users',auth[_0xd489('0x9')](),controller['addAgents']);router['put'](_0xd489('0xc'),auth[_0xd489('0x9')](),controller[_0xd489('0x13')]);router['delete'](_0xd489('0xc'),auth[_0xd489('0x9')](),controller[_0xd489('0x14')]);router[_0xd489('0x15')]('/:id/teams',auth[_0xd489('0x9')](),controller['removeTeams']);router['delete'](_0xd489('0x16'),auth[_0xd489('0x9')](),controller[_0xd489('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x2275=['/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','create','addTeams','post','/:id/users','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index'];(function(_0x425716,_0x3e9d1c){var _0x2d39af=function(_0x1febc1){while(--_0x1febc1){_0x425716['push'](_0x425716['shift']());}};_0x2d39af(++_0x3e9d1c);}(_0x2275,0xfa));var _0x5227=function(_0x5a42a3,_0x34c696){_0x5a42a3=_0x5a42a3-0x0;var _0x377122=_0x2275[_0x5a42a3];return _0x377122;};'use strict';var multer=require(_0x5227('0x0'));var util=require(_0x5227('0x1'));var path=require(_0x5227('0x2'));var timeout=require(_0x5227('0x3'));var express=require(_0x5227('0x4'));var router=express[_0x5227('0x5')]();var fs_extra=require(_0x5227('0x6'));var auth=require(_0x5227('0x7'));var interaction=require(_0x5227('0x8'));var config=require(_0x5227('0x9'));var controller=require(_0x5227('0xa'));router[_0x5227('0xb')]('/',auth[_0x5227('0xc')](),controller[_0x5227('0xd')]);router['get'](_0x5227('0xe'),auth[_0x5227('0xc')](),controller[_0x5227('0xf')]);router[_0x5227('0xb')](_0x5227('0x10'),auth['isAuthenticated'](),controller[_0x5227('0x11')]);router[_0x5227('0xb')]('/:id/members',auth[_0x5227('0xc')](),controller[_0x5227('0x12')]);router[_0x5227('0xb')](_0x5227('0x13'),auth['isAuthenticated'](),controller[_0x5227('0x14')]);router[_0x5227('0xb')]('/:id/users',auth[_0x5227('0xc')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x5227('0x15')]);router['post'](_0x5227('0x13'),auth[_0x5227('0xc')](),controller[_0x5227('0x16')]);router[_0x5227('0x17')](_0x5227('0x18'),auth[_0x5227('0xc')](),controller[_0x5227('0x19')]);router[_0x5227('0x1a')](_0x5227('0x10'),auth[_0x5227('0xc')](),controller[_0x5227('0x1b')]);router[_0x5227('0x1c')](_0x5227('0x10'),auth[_0x5227('0xc')](),controller[_0x5227('0x1d')]);router[_0x5227('0x1c')](_0x5227('0x13'),auth[_0x5227('0xc')](),controller[_0x5227('0x1e')]);router[_0x5227('0x1c')]('/:id/users',auth[_0x5227('0xc')](),controller[_0x5227('0x1f')]);module[_0x5227('0x20')]=router;
\ No newline at end of file
index 70f3c9e..c187e33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbfa=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x3f4891,_0x4e6f62){var _0x54f2d8=function(_0x2b11ee){while(--_0x2b11ee){_0x3f4891['push'](_0x3f4891['shift']());}};_0x54f2d8(++_0x4e6f62);}(_0xbbfa,0x1e9));var _0xabbf=function(_0x38a54d,_0x132fde){_0x38a54d=_0x38a54d-0x0;var _0x2d1b0e=_0xbbfa[_0x38a54d];return _0x2d1b0e;};'use strict';var Sequelize=require(_0xabbf('0x0'));module['exports']={'name':{'type':Sequelize[_0xabbf('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xabbf('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xabbf('0x3')](_0xabbf('0x4'),_0xabbf('0x5'),_0xabbf('0x6'))},'description':{'type':Sequelize[_0xabbf('0x1')]}};
\ No newline at end of file
+var _0x0bb5=['sequelize','exports','INTEGER','ENUM','rrmemory','beepall','roundrobin','STRING'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x0bb5,0x148));var _0x50bb=function(_0x5d83c8,_0x7b640f){_0x5d83c8=_0x5d83c8-0x0;var _0x84ef2f=_0x0bb5[_0x5d83c8];return _0x84ef2f;};'use strict';var Sequelize=require(_0x50bb('0x0'));module[_0x50bb('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x50bb('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x50bb('0x3')](_0x50bb('0x4'),_0x50bb('0x5'),_0x50bb('0x6'))},'description':{'type':Sequelize[_0x50bb('0x7')]}};
\ No newline at end of file
index d9e6f38..d698a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd32d=['destroy','UserProfileResource','error','stack','send','index','map','rawAttributes','fieldName','type','key','getOptions','where','WhatsappQueue','include','findAll','rows','show','params','keys','query','intersection','model','attributes','fields','options','find','catch','create','body','user','get','role','WhatsappQueues','UserProfileSection','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','filters','hasOwnProperty','sort','pick','filter','merge','User','findAndCountAll','UserId','agent','whatsappPause','createdAt','format','%s/%s','length','order','nolimit','addTeams','Team','Agents','online','voicePause','flatMap','sequelize','each','findOrCreate','forEach','emit','removeTeams','ids','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','compact','value','transaction','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','userWhatsappQueue:save','getAgents','bluebird','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then'];(function(_0x324d6a,_0x457528){var _0x125101=function(_0x26836c){while(--_0x26836c){_0x324d6a['push'](_0x324d6a['shift']());}};_0x125101(++_0x457528);}(_0xd32d,0x64));var _0xdd32=function(_0x3bbec4,_0x2f55f7){_0x3bbec4=_0x3bbec4-0x0;var _0x4950b4=_0xd32d[_0x3bbec4];return _0x4950b4;};'use strict';var BPromise=require(_0xdd32('0x0'));var util=require(_0xdd32('0x1'));var _=require(_0xdd32('0x2'));var squel=require(_0xdd32('0x3'));var Redis=require(_0xdd32('0x4'));var qs=require(_0xdd32('0x5'));var logger=require(_0xdd32('0x6'))(_0xdd32('0x7'));var config=require(_0xdd32('0x8'));var db=require(_0xdd32('0x9'))['db'];config[_0xdd32('0xa')]=_[_0xdd32('0xb')](config[_0xdd32('0xa')],{'host':_0xdd32('0xc'),'port':0x18eb});var socket=require(_0xdd32('0xd'))(new Redis(config[_0xdd32('0xa')]));require(_0xdd32('0xe'))[_0xdd32('0xf')](socket);function respondWithStatusCode(_0x2a57d6,_0x410b8c){_0x410b8c=_0x410b8c||0xcc;return function(_0x3a57c7){if(_0x3a57c7){return _0x2a57d6[_0xdd32('0x10')](_0x410b8c);}return _0x2a57d6[_0xdd32('0x11')](_0x410b8c)[_0xdd32('0x12')]();};}function respondWithResult(_0x114495,_0x326e8f){_0x326e8f=_0x326e8f||0xc8;return function(_0x24297a){if(_0x24297a){return _0x114495['status'](_0x326e8f)[_0xdd32('0x13')](_0x24297a);}};}function respondWithFilteredResult(_0x18759c,_0x389972){return function(_0xdd8150){if(_0xdd8150){var _0x1c098d=typeof _0x389972[_0xdd32('0x14')]==='undefined'&&typeof _0x389972[_0xdd32('0x15')]===_0xdd32('0x16');var _0xbf7f30=_0xdd8150[_0xdd32('0x17')];var _0x50ddfd=_0x1c098d?0x0:_0x389972[_0xdd32('0x14')];var _0x1f1063=_0x1c098d?_0xdd8150[_0xdd32('0x17')]:_0x389972[_0xdd32('0x14')]+_0x389972['limit'];var _0x300348;if(_0x1f1063>=_0xbf7f30){_0x1f1063=_0xbf7f30;_0x300348=0xc8;}else{_0x300348=0xce;}_0x18759c[_0xdd32('0x11')](_0x300348);return _0x18759c[_0xdd32('0x18')](_0xdd32('0x19'),_0x50ddfd+'-'+_0x1f1063+'/'+_0xbf7f30)[_0xdd32('0x13')](_0xdd8150);}return null;};}function saveUpdates(_0x292b74){return function(_0x1f8012){if(_0x1f8012){return _0x1f8012[_0xdd32('0x1a')](_0x292b74)[_0xdd32('0x1b')](function(_0x5083f9){return _0x5083f9;});}return null;};}function removeEntity(_0x940cd9){return function(_0x2b80be){if(_0x2b80be){return _0x2b80be[_0xdd32('0x1c')]()[_0xdd32('0x1b')](function(){var _0x1bd683=_0x2b80be['get']({'plain':!![]});var _0x32218c='WhatsappQueues';return db[_0xdd32('0x1d')][_0xdd32('0x1c')]({'where':{'type':_0x32218c,'resourceId':_0x1bd683['id']}})[_0xdd32('0x1b')](function(){return _0x2b80be;});})['then'](function(){_0x940cd9[_0xdd32('0x11')](0xcc)[_0xdd32('0x12')]();});}};}function handleEntityNotFound(_0x158a3a){return function(_0x394b68){if(!_0x394b68){_0x158a3a[_0xdd32('0x10')](0x194);}return _0x394b68;};}function handleError(_0x4c8da8,_0x325354){_0x325354=_0x325354||0x1f4;return function(_0x310630){logger[_0xdd32('0x1e')](_0x310630[_0xdd32('0x1f')]);if(_0x310630['name']){delete _0x310630['name'];}_0x4c8da8[_0xdd32('0x11')](_0x325354)[_0xdd32('0x20')](_0x310630);};}exports[_0xdd32('0x21')]=function(_0x3b03fc,_0x4b4229){var _0x58e29f={};var _0x3146f4={'count':0x0,'rows':[]};var _0x2bb688=_[_0xdd32('0x22')](db['WhatsappQueue'][_0xdd32('0x23')],function(_0x7dd226){return{'name':_0x7dd226[_0xdd32('0x24')],'type':_0x7dd226[_0xdd32('0x25')][_0xdd32('0x26')]};});_0x58e29f=qs[_0xdd32('0x27')](_0x2bb688,_0x3b03fc);var _0x3772fa={'where':_0x58e29f[_0xdd32('0x28')]};return db[_0xdd32('0x29')][_0xdd32('0x17')](_0x3772fa)['then'](function(_0x468f4a){_0x3146f4[_0xdd32('0x17')]=_0x468f4a;_0x58e29f['include']=qs[_0xdd32('0x2a')](_0x3b03fc['query']);return db['WhatsappQueue'][_0xdd32('0x2b')](_0x58e29f);})['then'](function(_0x4f17c8){_0x3146f4[_0xdd32('0x2c')]=_0x4f17c8;return _0x3146f4;})[_0xdd32('0x1b')](respondWithFilteredResult(_0x4b4229,_0x58e29f))['catch'](handleError(_0x4b4229,null));};exports[_0xdd32('0x2d')]=function(_0x44ca8b,_0x1470e2){var _0x5e8868={'raw':!![],'where':{'id':_0x44ca8b[_0xdd32('0x2e')]['id']}},_0x3f73e7={};_0x3f73e7['model']=_[_0xdd32('0x2f')](db[_0xdd32('0x29')][_0xdd32('0x23')]);_0x3f73e7[_0xdd32('0x30')]=_[_0xdd32('0x2f')](_0x44ca8b['query']);_0x3f73e7['filters']=_[_0xdd32('0x31')](_0x3f73e7[_0xdd32('0x32')],_0x3f73e7[_0xdd32('0x30')]);_0x5e8868[_0xdd32('0x33')]=_[_0xdd32('0x31')](_0x3f73e7[_0xdd32('0x32')],qs[_0xdd32('0x34')](_0x44ca8b[_0xdd32('0x30')][_0xdd32('0x34')]));_0x5e8868[_0xdd32('0x33')]=_0x5e8868[_0xdd32('0x33')]['length']?_0x5e8868[_0xdd32('0x33')]:_0x3f73e7['model'];if(_0x44ca8b['query']['includeAll']){_0x5e8868['include']=[{'all':!![]}];}_0x5e8868=_['merge']({},_0x5e8868,_0x44ca8b[_0xdd32('0x35')]);return db[_0xdd32('0x29')][_0xdd32('0x36')](_0x5e8868)[_0xdd32('0x1b')](handleEntityNotFound(_0x1470e2,null))['then'](respondWithResult(_0x1470e2,null))[_0xdd32('0x37')](handleError(_0x1470e2,null));};exports[_0xdd32('0x38')]=function(_0x562cd5,_0x5c9606){return db['WhatsappQueue'][_0xdd32('0x38')](_0x562cd5[_0xdd32('0x39')],{})['then'](function(_0x5ccf7a){var _0x194cbb=_0x562cd5[_0xdd32('0x3a')][_0xdd32('0x3b')]({'plain':!![]});if(!_0x194cbb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x194cbb[_0xdd32('0x3c')]===_0xdd32('0x3a')){var _0x5cb9e3=_0x5ccf7a[_0xdd32('0x3b')]({'plain':!![]});var _0x3c820a=_0xdd32('0x3d');return db[_0xdd32('0x3e')]['find']({'where':{'name':_0x3c820a,'userProfileId':_0x194cbb['userProfileId']},'raw':!![]})[_0xdd32('0x1b')](function(_0x487048){if(_0x487048&&_0x487048[_0xdd32('0x3f')]===0x0){return db['UserProfileResource'][_0xdd32('0x38')]({'name':_0x5cb9e3[_0xdd32('0x40')],'resourceId':_0x5cb9e3['id'],'type':_0x487048[_0xdd32('0x40')],'sectionId':_0x487048['id']},{})['then'](function(){return _0x5ccf7a;});}else{return _0x5ccf7a;}})[_0xdd32('0x37')](function(_0x53d516){logger[_0xdd32('0x1e')](_0xdd32('0x41'),_0x53d516);throw _0x53d516;});}return _0x5ccf7a;})[_0xdd32('0x1b')](respondWithResult(_0x5c9606,0xc9))[_0xdd32('0x37')](handleError(_0x5c9606,null));};exports[_0xdd32('0x1a')]=function(_0x305fc,_0x23b3fd){if(_0x305fc['body']['id']){delete _0x305fc[_0xdd32('0x39')]['id'];}return db[_0xdd32('0x29')]['find']({'where':{'id':_0x305fc[_0xdd32('0x2e')]['id']}})[_0xdd32('0x1b')](handleEntityNotFound(_0x23b3fd,null))[_0xdd32('0x1b')](saveUpdates(_0x305fc['body'],null))[_0xdd32('0x1b')](respondWithResult(_0x23b3fd,null))[_0xdd32('0x37')](handleError(_0x23b3fd,null));};exports[_0xdd32('0x1c')]=function(_0x2c993c,_0x55f365){return db[_0xdd32('0x29')]['find']({'where':{'id':_0x2c993c[_0xdd32('0x2e')]['id']}})['then'](handleEntityNotFound(_0x55f365,null))[_0xdd32('0x1b')](removeEntity(_0x55f365,null))['catch'](handleError(_0x55f365,null));};exports[_0xdd32('0x42')]=function(_0x4e21e1,_0x492e1f){return db[_0xdd32('0x29')][_0xdd32('0x42')]()['then'](respondWithResult(_0x492e1f,null))[_0xdd32('0x37')](handleError(_0x492e1f,null));};exports[_0xdd32('0x43')]=function(_0x48140a,_0x5092c3){var _0x4af70b={'raw':!![],'where':{}},_0x5f0415={},_0x35ae22;return db['WhatsappQueue'][_0xdd32('0x44')]({'where':{'id':_0x48140a[_0xdd32('0x2e')]['id']}})[_0xdd32('0x1b')](handleEntityNotFound(_0x5092c3,null))['then'](function(_0x2dedf6){if(_0x2dedf6){_0x35ae22=_0x2dedf6[_0xdd32('0x3b')]({'plain':!![]});_0x5f0415[_0xdd32('0x32')]=_['keys'](db[_0xdd32('0x45')][_0xdd32('0x23')]);_0x5f0415['query']=_[_0xdd32('0x2f')](_0x48140a['query']);_0x5f0415[_0xdd32('0x46')]=_[_0xdd32('0x31')](_0x5f0415[_0xdd32('0x32')],_0x5f0415['query']);_0x4af70b[_0xdd32('0x33')]=_['intersection'](_0x5f0415['model'],qs['fields'](_0x48140a[_0xdd32('0x30')][_0xdd32('0x34')]));_0x4af70b[_0xdd32('0x33')]=_0x4af70b[_0xdd32('0x33')]['length']?_0x4af70b[_0xdd32('0x33')]:_0x5f0415[_0xdd32('0x32')];if(!_0x48140a[_0xdd32('0x30')][_0xdd32('0x47')]('nolimit')){_0x4af70b[_0xdd32('0x15')]=qs[_0xdd32('0x15')](_0x48140a[_0xdd32('0x30')]['limit']);_0x4af70b['offset']=qs[_0xdd32('0x14')](_0x48140a[_0xdd32('0x30')][_0xdd32('0x14')]);}_0x4af70b['order']=qs[_0xdd32('0x48')](_0x48140a[_0xdd32('0x30')][_0xdd32('0x48')]);_0x4af70b[_0xdd32('0x28')]=qs[_0xdd32('0x46')](_[_0xdd32('0x49')](_0x48140a['query'],_0x5f0415[_0xdd32('0x46')]));_0x4af70b[_0xdd32('0x28')]['WhatsappQueueId']=_0x2dedf6['id'];if(_0x48140a[_0xdd32('0x30')][_0xdd32('0x4a')]){_0x4af70b[_0xdd32('0x28')]=_[_0xdd32('0x4b')](_0x4af70b[_0xdd32('0x28')],{'$or':_[_0xdd32('0x22')](_0x4af70b[_0xdd32('0x33')],function(_0x555dfe){var _0xd3b006={};_0xd3b006[_0x555dfe]={'$like':'%'+_0x48140a[_0xdd32('0x30')][_0xdd32('0x4a')]+'%'};return _0xd3b006;})});}_0x4af70b=_[_0xdd32('0x4b')]({},_0x4af70b,_0x48140a[_0xdd32('0x35')]);return db['UserWhatsappQueue'][_0xdd32('0x2b')](_0x4af70b);}})[_0xdd32('0x1b')](function(_0x34c865){if(_0x34c865){return db[_0xdd32('0x4c')][_0xdd32('0x4d')]({'where':{'id':_[_0xdd32('0x22')](_0x34c865,_0xdd32('0x4e')),'role':_0xdd32('0x4f')},'attributes':['id',_0xdd32('0x40'),_0xdd32('0x50'),'updatedAt',_0xdd32('0x51')]});}})[_0xdd32('0x1b')](function(_0x5e3f9f){if(_0x5e3f9f){return{'count':_0x5e3f9f[_0xdd32('0x17')],'rows':_[_0xdd32('0x22')](_0x5e3f9f[_0xdd32('0x2c')],function(_0x4d6604){return{'membername':_0x4d6604[_0xdd32('0x40')],'UserId':_0x4d6604['id'],'queue_name':_0x35ae22[_0xdd32('0x40')],'WhatsappQueueId':_0x35ae22['id'],'interface':util[_0xdd32('0x52')](_0xdd32('0x53'),'SIP',_0x4d6604[_0xdd32('0x40')]),'penalty':0x0,'paused':_0x4d6604[_0xdd32('0x50')],'createdAt':_0x4d6604[_0xdd32('0x51')],'updatedAt':_0x4d6604['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5092c3,_0x4af70b))[_0xdd32('0x37')](handleError(_0x5092c3,null));};exports['getTeams']=function(_0x4cc831,_0x3b5e55){var _0x315911={};var _0x1d2cc7={};var _0x465c89;var _0x32a88c;return db[_0xdd32('0x29')][_0xdd32('0x44')]({'where':{'id':_0x4cc831[_0xdd32('0x2e')]['id']}})['then'](handleEntityNotFound(_0x3b5e55,null))['then'](function(_0x27f3aa){if(_0x27f3aa){_0x465c89=_0x27f3aa;_0x1d2cc7['model']=_['keys'](db['Team'][_0xdd32('0x23')]);_0x1d2cc7[_0xdd32('0x30')]=_[_0xdd32('0x2f')](_0x4cc831[_0xdd32('0x30')]);_0x1d2cc7['filters']=_['intersection'](_0x1d2cc7[_0xdd32('0x32')],_0x1d2cc7['query']);_0x315911[_0xdd32('0x33')]=_[_0xdd32('0x31')](_0x1d2cc7[_0xdd32('0x32')],qs[_0xdd32('0x34')](_0x4cc831['query'][_0xdd32('0x34')]));_0x315911[_0xdd32('0x33')]=_0x315911[_0xdd32('0x33')][_0xdd32('0x54')]?_0x315911[_0xdd32('0x33')]:_0x1d2cc7['model'];_0x315911[_0xdd32('0x55')]=qs['sort'](_0x4cc831['query'][_0xdd32('0x48')]);_0x315911[_0xdd32('0x28')]=qs[_0xdd32('0x46')](_[_0xdd32('0x49')](_0x4cc831[_0xdd32('0x30')],_0x1d2cc7[_0xdd32('0x46')]));if(_0x4cc831[_0xdd32('0x30')][_0xdd32('0x4a')]){_0x315911['where']=_[_0xdd32('0x4b')](_0x315911[_0xdd32('0x28')],{'$or':_['map'](_0x315911[_0xdd32('0x33')],function(_0x5cc669){var _0x3d1225={};_0x3d1225[_0x5cc669]={'$like':'%'+_0x4cc831[_0xdd32('0x30')][_0xdd32('0x4a')]+'%'};return _0x3d1225;})});}_0x315911=_[_0xdd32('0x4b')]({},_0x315911,_0x4cc831['options']);return _0x465c89['getTeams'](_0x315911);}})[_0xdd32('0x1b')](function(_0x1ca5ca){if(_0x1ca5ca){_0x32a88c=_0x1ca5ca[_0xdd32('0x54')];if(!_0x4cc831['query'][_0xdd32('0x47')](_0xdd32('0x56'))){_0x315911['limit']=qs[_0xdd32('0x15')](_0x4cc831[_0xdd32('0x30')]['limit']);_0x315911['offset']=qs['offset'](_0x4cc831['query'][_0xdd32('0x14')]);}return _0x465c89['getTeams'](_0x315911);}})[_0xdd32('0x1b')](function(_0x4580e0){if(_0x4580e0){return _0x4580e0?{'count':_0x32a88c,'rows':_0x4580e0}:null;}})['then'](respondWithResult(_0x3b5e55,null))[_0xdd32('0x37')](handleError(_0x3b5e55,null));};exports[_0xdd32('0x57')]=function(_0x4c5e63,_0x292a59){var _0x45eb57=_0x4c5e63[_0xdd32('0x39')]['ids'];return db[_0xdd32('0x58')][_0xdd32('0x2b')]({'where':{'id':_0x45eb57},'attributes':['id'],'include':[{'model':db['User'],'as':_0xdd32('0x59'),'attributes':['id',_0xdd32('0x40'),_0xdd32('0x5a'),_0xdd32('0x5b'),'interface'],'raw':!![]}]})[_0xdd32('0x1b')](function(_0x346672){if(_0x346672){var _0x557157=_[_0xdd32('0x5c')](_0x346672,function(_0x3f7dc6){var _0x3d0779=_0x3f7dc6[_0xdd32('0x3b')]({'plain':!![]});return _0x3d0779[_0xdd32('0x59')];});return db[_0xdd32('0x29')][_0xdd32('0x36')]({'where':{'id':_0x4c5e63['params']['id']}})[_0xdd32('0x1b')](function(_0x2aa0ea){return db[_0xdd32('0x5d')]['transaction'](function(_0x58ae19){return _0x2aa0ea[_0xdd32('0x57')](_0x45eb57,{'transaction':_0x58ae19})[_0xdd32('0x1b')](function(){return BPromise[_0xdd32('0x5e')](_0x557157,function(_0x3df2a8){return db['UserWhatsappQueue'][_0xdd32('0x5f')]({'where':{'UserId':_0x3df2a8['id'],'WhatsappQueueId':_0x4c5e63[_0xdd32('0x2e')]['id']},'transaction':_0x58ae19});});})[_0xdd32('0x1b')](function(){_0x557157[_0xdd32('0x60')](function(_0x3328d0){socket[_0xdd32('0x61')]('userWhatsappQueue:save',{'UserId':_0x3328d0['id'],'WhatsappQueueId':_0x2aa0ea['id']});});});});});}})[_0xdd32('0x1b')](respondWithStatusCode(_0x292a59,null))[_0xdd32('0x37')](handleError(_0x292a59,null));};exports[_0xdd32('0x62')]=function(_0x1d2c1d,_0x3be248){return db[_0xdd32('0x58')][_0xdd32('0x2b')]({'where':{'id':_0x1d2c1d[_0xdd32('0x30')][_0xdd32('0x63')]},'attributes':['id'],'include':[{'model':db[_0xdd32('0x4c')],'as':_0xdd32('0x59'),'attributes':['id'],'raw':!![]}]})[_0xdd32('0x1b')](handleEntityNotFound(_0x3be248,null))[_0xdd32('0x1b')](function(_0x2776f8){var _0x354418=_['map'](_0x2776f8,'id');var _0x43fafe=[];var _0x464ac4=[];var _0x43cfba=squel[_0xdd32('0x64')]();_0x43cfba[_0xdd32('0x65')](_0xdd32('0x66'))[_0xdd32('0x67')](_0xdd32('0x68'),'tq')[_0xdd32('0x69')]('user_has_teams','ut',_0xdd32('0x6a'))['where'](_0xdd32('0x6b'),_0x1d2c1d[_0xdd32('0x2e')]['id']);for(var _0xe21baf=0x0;_0xe21baf<_0x2776f8[_0xdd32('0x54')];_0xe21baf+=0x1){let _0x37dd58=_0x2776f8[_0xe21baf];for(var _0x571bea=0x0;_0x571bea<_0x37dd58['Agents'][_0xdd32('0x54')];_0x571bea+=0x1){let _0x24a314=_0x37dd58[_0xdd32('0x59')][_0x571bea];var _0xd7cf15=_0x43cfba[_0xdd32('0x6c')]();_0xd7cf15['where'](_0xdd32('0x6d'),_0x24a314['id']);_0x464ac4[_0xdd32('0x6e')](db[_0xdd32('0x5d')]['query'](_0xd7cf15[_0xdd32('0x6f')](),{'type':db['sequelize'][_0xdd32('0x70')][_0xdd32('0x71')]})['then'](function(_0x1ab264){if(_0x1ab264[_0xdd32('0x54')]===0x1){return _0x24a314['id'];}else{var _0x10ff9b=_[_0xdd32('0x72')](_[_0xdd32('0x22')](_0x1ab264,_0xdd32('0x73')),function(_0x5cf729){return _['includes'](_0x354418,_0x5cf729);});if(_0x10ff9b){return _0x24a314['id'];}}}));}}return BPromise[_0xdd32('0x74')](_0x464ac4)['then'](function(_0x356d93){_0x43fafe=_(_0x43fafe)['union'](_0x356d93)[_0xdd32('0x75')]()[_0xdd32('0x76')]();return db[_0xdd32('0x29')][_0xdd32('0x36')]({'where':{'id':_0x1d2c1d[_0xdd32('0x2e')]['id']}})[_0xdd32('0x1b')](function(_0xd4aba5){return db[_0xdd32('0x5d')][_0xdd32('0x77')](function(_0x3f83b9){return _0xd4aba5[_0xdd32('0x62')](_0x1d2c1d[_0xdd32('0x30')][_0xdd32('0x63')],{'transaction':_0x3f83b9})[_0xdd32('0x1b')](function(){if(!_[_0xdd32('0x78')](_0x43fafe)){return _0xd4aba5[_0xdd32('0x79')](_0x43fafe,{'transaction':_0x3f83b9});}})[_0xdd32('0x1b')](function(){_0x43fafe['forEach'](function(_0x3499f6){socket[_0xdd32('0x61')](_0xdd32('0x7a'),{'UserId':_0x3499f6,'WhatsappQueueId':_0xd4aba5['id']});});});});});});})[_0xdd32('0x1b')](respondWithStatusCode(_0x3be248,null))[_0xdd32('0x37')](handleError(_0x3be248,null));};exports['addAgents']=function(_0x16b586,_0x1103cb){return db[_0xdd32('0x29')][_0xdd32('0x36')]({'where':{'id':_0x16b586[_0xdd32('0x2e')]['id']}})[_0xdd32('0x1b')](handleEntityNotFound(_0x1103cb,null))[_0xdd32('0x1b')](function(_0x565789){if(_0x565789){return _0x565789[_0xdd32('0x7b')](_0x16b586[_0xdd32('0x39')]['ids'],_[_0xdd32('0x7c')](_0x16b586[_0xdd32('0x39')],[_0xdd32('0x63'),'id'])||{})[_0xdd32('0x7d')](function(_0x2fb8f1){for(var _0x5421b8=0x0;_0x5421b8<_0x16b586[_0xdd32('0x39')][_0xdd32('0x63')][_0xdd32('0x54')];_0x5421b8+=0x1){socket[_0xdd32('0x61')](_0xdd32('0x7e'),{'UserId':Number(_0x16b586[_0xdd32('0x39')][_0xdd32('0x63')][_0x5421b8]),'WhatsappQueueId':Number(_0x16b586[_0xdd32('0x2e')]['id'])});}return _0x2fb8f1;});}})['then'](respondWithResult(_0x1103cb,null))[_0xdd32('0x37')](handleError(_0x1103cb,null));};exports[_0xdd32('0x79')]=function(_0x3ff636,_0x44ce5d){return db[_0xdd32('0x29')][_0xdd32('0x36')]({'where':{'id':_0x3ff636['params']['id']}})[_0xdd32('0x1b')](handleEntityNotFound(_0x44ce5d,null))[_0xdd32('0x1b')](function(_0xadccc5){if(_0xadccc5){return _0xadccc5[_0xdd32('0x79')](_0x3ff636[_0xdd32('0x30')][_0xdd32('0x63')])[_0xdd32('0x1b')](function(){if(_['isArray'](_0x3ff636[_0xdd32('0x30')]['ids'])){for(var _0x308496=0x0;_0x308496<_0x3ff636[_0xdd32('0x30')][_0xdd32('0x63')][_0xdd32('0x54')];_0x308496+=0x1){socket[_0xdd32('0x61')]('userWhatsappQueue:remove',{'UserId':Number(_0x3ff636['query'][_0xdd32('0x63')][_0x308496]),'WhatsappQueueId':Number(_0x3ff636[_0xdd32('0x2e')]['id'])});}}else{socket[_0xdd32('0x61')]('userWhatsappQueue:remove',{'UserId':Number(_0x3ff636[_0xdd32('0x30')][_0xdd32('0x63')]),'WhatsappQueueId':Number(_0x3ff636[_0xdd32('0x2e')]['id'])});}});}})[_0xdd32('0x1b')](respondWithStatusCode(_0x44ce5d,null))[_0xdd32('0x37')](handleError(_0x44ce5d,null));};exports[_0xdd32('0x7f')]=function(_0x1811c2,_0x3a6e8e){var _0xfea256={};var _0x1e677b={};var _0x32d045;var _0xc54787;return db[_0xdd32('0x29')][_0xdd32('0x44')]({'where':{'id':_0x1811c2['params']['id']}})[_0xdd32('0x1b')](handleEntityNotFound(_0x3a6e8e,null))['then'](function(_0x58e586){if(_0x58e586){_0x32d045=_0x58e586;_0x1e677b[_0xdd32('0x32')]=_[_0xdd32('0x2f')](db['User'][_0xdd32('0x23')]);_0x1e677b[_0xdd32('0x30')]=_[_0xdd32('0x2f')](_0x1811c2['query']);_0x1e677b[_0xdd32('0x46')]=_[_0xdd32('0x31')](_0x1e677b[_0xdd32('0x32')],_0x1e677b[_0xdd32('0x30')]);_0xfea256['attributes']=_[_0xdd32('0x31')](_0x1e677b[_0xdd32('0x32')],qs[_0xdd32('0x34')](_0x1811c2['query']['fields']));_0xfea256[_0xdd32('0x33')]=_0xfea256[_0xdd32('0x33')][_0xdd32('0x54')]?_0xfea256[_0xdd32('0x33')]:_0x1e677b[_0xdd32('0x32')];_0xfea256[_0xdd32('0x55')]=qs[_0xdd32('0x48')](_0x1811c2[_0xdd32('0x30')][_0xdd32('0x48')]);_0xfea256['where']=qs['filters'](_[_0xdd32('0x49')](_0x1811c2[_0xdd32('0x30')],_0x1e677b[_0xdd32('0x46')]));if(_0x1811c2[_0xdd32('0x30')][_0xdd32('0x4a')]){_0xfea256['where']=_['merge'](_0xfea256[_0xdd32('0x28')],{'$or':_[_0xdd32('0x22')](_0xfea256[_0xdd32('0x33')],function(_0xd4d291){var _0x1efce7={};_0x1efce7[_0xd4d291]={'$like':'%'+_0x1811c2[_0xdd32('0x30')]['filter']+'%'};return _0x1efce7;})});}_0xfea256=_[_0xdd32('0x4b')]({},_0xfea256,_0x1811c2['options']);return _0x32d045[_0xdd32('0x7f')](_0xfea256);}})['then'](function(_0x4565e6){if(_0x4565e6){_0xc54787=_0x4565e6['length'];if(!_0x1811c2[_0xdd32('0x30')][_0xdd32('0x47')](_0xdd32('0x56'))){_0xfea256[_0xdd32('0x15')]=qs[_0xdd32('0x15')](_0x1811c2[_0xdd32('0x30')][_0xdd32('0x15')]);_0xfea256[_0xdd32('0x14')]=qs[_0xdd32('0x14')](_0x1811c2[_0xdd32('0x30')][_0xdd32('0x14')]);}return _0x32d045['getAgents'](_0xfea256);}})[_0xdd32('0x1b')](function(_0x38fbec){if(_0x38fbec){return _0x38fbec?{'count':_0xc54787,'rows':_0x38fbec}:null;}})[_0xdd32('0x1b')](respondWithResult(_0x3a6e8e,null))[_0xdd32('0x37')](handleError(_0x3a6e8e,null));};
\ No newline at end of file
+var _0x4d44=['hasOwnProperty','bluebird','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','then','get','WhatsappQueues','UserProfileResource','destroy','error','stack','name','send','map','WhatsappQueue','rawAttributes','fieldName','key','getOptions','where','include','query','rows','catch','show','params','keys','filters','intersection','model','attributes','fields','length','includeAll','merge','options','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','update','body','describe','getMembers','findOne','UserWhatsappQueue','nolimit','order','sort','WhatsappQueueId','filter','findAll','User','findAndCountAll','agent','whatsappPause','updatedAt','format','%s/%s','SIP','createdAt','Team','pick','getTeams','addTeams','interface','flatMap','transaction','each','forEach','emit','ids','select','field','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','Agents','clone','sequelize','toString','SELECT','every','TeamId','includes','all','union','compact','removeTeams','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','getAgents'];(function(_0x599f34,_0x375ce0){var _0x128e0e=function(_0x1c793c){while(--_0x1c793c){_0x599f34['push'](_0x599f34['shift']());}};_0x128e0e(++_0x375ce0);}(_0x4d44,0x16c));var _0x44d4=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x4d44[_0x19950b];return _0x3c6b41;};'use strict';var BPromise=require(_0x44d4('0x0'));var util=require(_0x44d4('0x1'));var _=require(_0x44d4('0x2'));var squel=require(_0x44d4('0x3'));var Redis=require(_0x44d4('0x4'));var qs=require(_0x44d4('0x5'));var logger=require(_0x44d4('0x6'))(_0x44d4('0x7'));var config=require(_0x44d4('0x8'));var db=require(_0x44d4('0x9'))['db'];config[_0x44d4('0xa')]=_[_0x44d4('0xb')](config[_0x44d4('0xa')],{'host':_0x44d4('0xc'),'port':0x18eb});var socket=require(_0x44d4('0xd'))(new Redis(config[_0x44d4('0xa')]));require('./whatsappQueue.socket')[_0x44d4('0xe')](socket);function respondWithStatusCode(_0x3294e1,_0x578656){_0x578656=_0x578656||0xcc;return function(_0x5cb7c6){if(_0x5cb7c6){return _0x3294e1[_0x44d4('0xf')](_0x578656);}return _0x3294e1[_0x44d4('0x10')](_0x578656)[_0x44d4('0x11')]();};}function respondWithResult(_0x4baab2,_0x2c4545){_0x2c4545=_0x2c4545||0xc8;return function(_0x1a0703){if(_0x1a0703){return _0x4baab2['status'](_0x2c4545)[_0x44d4('0x12')](_0x1a0703);}};}function respondWithFilteredResult(_0x125b69,_0x34e24d){return function(_0x30f295){if(_0x30f295){var _0x164f4b=typeof _0x34e24d[_0x44d4('0x13')]==='undefined'&&typeof _0x34e24d[_0x44d4('0x14')]===_0x44d4('0x15');var _0x2a6f59=_0x30f295[_0x44d4('0x16')];var _0x369ff6=_0x164f4b?0x0:_0x34e24d[_0x44d4('0x13')];var _0x3321b5=_0x164f4b?_0x30f295[_0x44d4('0x16')]:_0x34e24d['offset']+_0x34e24d[_0x44d4('0x14')];var _0xc597fa;if(_0x3321b5>=_0x2a6f59){_0x3321b5=_0x2a6f59;_0xc597fa=0xc8;}else{_0xc597fa=0xce;}_0x125b69[_0x44d4('0x10')](_0xc597fa);return _0x125b69['set'](_0x44d4('0x17'),_0x369ff6+'-'+_0x3321b5+'/'+_0x2a6f59)[_0x44d4('0x12')](_0x30f295);}return null;};}function saveUpdates(_0x38b43e){return function(_0x3a465e){if(_0x3a465e){return _0x3a465e['update'](_0x38b43e)[_0x44d4('0x18')](function(_0x343a65){return _0x343a65;});}return null;};}function removeEntity(_0x6a9038){return function(_0x4de4cd){if(_0x4de4cd){return _0x4de4cd['destroy']()[_0x44d4('0x18')](function(){var _0x262835=_0x4de4cd[_0x44d4('0x19')]({'plain':!![]});var _0x4799e3=_0x44d4('0x1a');return db[_0x44d4('0x1b')][_0x44d4('0x1c')]({'where':{'type':_0x4799e3,'resourceId':_0x262835['id']}})[_0x44d4('0x18')](function(){return _0x4de4cd;});})[_0x44d4('0x18')](function(){_0x6a9038[_0x44d4('0x10')](0xcc)[_0x44d4('0x11')]();});}};}function handleEntityNotFound(_0x20f4c3){return function(_0x26903f){if(!_0x26903f){_0x20f4c3['sendStatus'](0x194);}return _0x26903f;};}function handleError(_0x41730e,_0x33dbf1){_0x33dbf1=_0x33dbf1||0x1f4;return function(_0x1d43dd){logger[_0x44d4('0x1d')](_0x1d43dd[_0x44d4('0x1e')]);if(_0x1d43dd['name']){delete _0x1d43dd[_0x44d4('0x1f')];}_0x41730e['status'](_0x33dbf1)[_0x44d4('0x20')](_0x1d43dd);};}exports['index']=function(_0x331019,_0x3a5fa6){var _0x37f139={};var _0x33ecee={'count':0x0,'rows':[]};var _0x2ba999=_[_0x44d4('0x21')](db[_0x44d4('0x22')][_0x44d4('0x23')],function(_0x48b306){return{'name':_0x48b306[_0x44d4('0x24')],'type':_0x48b306['type'][_0x44d4('0x25')]};});_0x37f139=qs[_0x44d4('0x26')](_0x2ba999,_0x331019);var _0x2332e2={'where':_0x37f139[_0x44d4('0x27')]};return db['WhatsappQueue'][_0x44d4('0x16')](_0x2332e2)[_0x44d4('0x18')](function(_0xa3e079){_0x33ecee['count']=_0xa3e079;_0x37f139[_0x44d4('0x28')]=qs[_0x44d4('0x28')](_0x331019[_0x44d4('0x29')]);return db['WhatsappQueue']['findAll'](_0x37f139);})[_0x44d4('0x18')](function(_0x216b06){_0x33ecee[_0x44d4('0x2a')]=_0x216b06;return _0x33ecee;})[_0x44d4('0x18')](respondWithFilteredResult(_0x3a5fa6,_0x37f139))[_0x44d4('0x2b')](handleError(_0x3a5fa6,null));};exports[_0x44d4('0x2c')]=function(_0x59cf73,_0x18921c){var _0x17fd0c={'raw':!![],'where':{'id':_0x59cf73[_0x44d4('0x2d')]['id']}},_0x40c132={};_0x40c132['model']=_[_0x44d4('0x2e')](db[_0x44d4('0x22')]['rawAttributes']);_0x40c132['query']=_[_0x44d4('0x2e')](_0x59cf73[_0x44d4('0x29')]);_0x40c132[_0x44d4('0x2f')]=_[_0x44d4('0x30')](_0x40c132[_0x44d4('0x31')],_0x40c132[_0x44d4('0x29')]);_0x17fd0c[_0x44d4('0x32')]=_[_0x44d4('0x30')](_0x40c132[_0x44d4('0x31')],qs[_0x44d4('0x33')](_0x59cf73[_0x44d4('0x29')][_0x44d4('0x33')]));_0x17fd0c[_0x44d4('0x32')]=_0x17fd0c['attributes'][_0x44d4('0x34')]?_0x17fd0c[_0x44d4('0x32')]:_0x40c132['model'];if(_0x59cf73[_0x44d4('0x29')][_0x44d4('0x35')]){_0x17fd0c[_0x44d4('0x28')]=[{'all':!![]}];}_0x17fd0c=_[_0x44d4('0x36')]({},_0x17fd0c,_0x59cf73[_0x44d4('0x37')]);return db[_0x44d4('0x22')][_0x44d4('0x38')](_0x17fd0c)[_0x44d4('0x18')](handleEntityNotFound(_0x18921c,null))[_0x44d4('0x18')](respondWithResult(_0x18921c,null))[_0x44d4('0x2b')](handleError(_0x18921c,null));};exports[_0x44d4('0x39')]=function(_0x1abe2c,_0x470bfc){return db[_0x44d4('0x22')]['create'](_0x1abe2c['body'],{})[_0x44d4('0x18')](function(_0x330c93){var _0x296ed7=_0x1abe2c[_0x44d4('0x3a')][_0x44d4('0x19')]({'plain':!![]});if(!_0x296ed7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x296ed7[_0x44d4('0x3b')]==='user'){var _0x2eba5c=_0x330c93['get']({'plain':!![]});var _0x104090=_0x44d4('0x1a');return db[_0x44d4('0x3c')][_0x44d4('0x38')]({'where':{'name':_0x104090,'userProfileId':_0x296ed7[_0x44d4('0x3d')]},'raw':!![]})[_0x44d4('0x18')](function(_0xf53070){if(_0xf53070&&_0xf53070[_0x44d4('0x3e')]===0x0){return db[_0x44d4('0x1b')][_0x44d4('0x39')]({'name':_0x2eba5c[_0x44d4('0x1f')],'resourceId':_0x2eba5c['id'],'type':_0xf53070['name'],'sectionId':_0xf53070['id']},{})['then'](function(){return _0x330c93;});}else{return _0x330c93;}})[_0x44d4('0x2b')](function(_0x24dc18){logger[_0x44d4('0x1d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x24dc18);throw _0x24dc18;});}return _0x330c93;})[_0x44d4('0x18')](respondWithResult(_0x470bfc,0xc9))[_0x44d4('0x2b')](handleError(_0x470bfc,null));};exports[_0x44d4('0x3f')]=function(_0x36875b,_0x594bb8){if(_0x36875b[_0x44d4('0x40')]['id']){delete _0x36875b[_0x44d4('0x40')]['id'];}return db[_0x44d4('0x22')][_0x44d4('0x38')]({'where':{'id':_0x36875b['params']['id']}})[_0x44d4('0x18')](handleEntityNotFound(_0x594bb8,null))[_0x44d4('0x18')](saveUpdates(_0x36875b[_0x44d4('0x40')],null))['then'](respondWithResult(_0x594bb8,null))[_0x44d4('0x2b')](handleError(_0x594bb8,null));};exports[_0x44d4('0x1c')]=function(_0x1b6374,_0x51978c){return db['WhatsappQueue'][_0x44d4('0x38')]({'where':{'id':_0x1b6374[_0x44d4('0x2d')]['id']}})[_0x44d4('0x18')](handleEntityNotFound(_0x51978c,null))['then'](removeEntity(_0x51978c,null))[_0x44d4('0x2b')](handleError(_0x51978c,null));};exports[_0x44d4('0x41')]=function(_0x135a67,_0x38e978){return db[_0x44d4('0x22')][_0x44d4('0x41')]()[_0x44d4('0x18')](respondWithResult(_0x38e978,null))[_0x44d4('0x2b')](handleError(_0x38e978,null));};exports[_0x44d4('0x42')]=function(_0x250440,_0x2073bc){var _0x52f773={'raw':!![],'where':{}},_0x379343={},_0x3f3933;return db[_0x44d4('0x22')][_0x44d4('0x43')]({'where':{'id':_0x250440[_0x44d4('0x2d')]['id']}})[_0x44d4('0x18')](handleEntityNotFound(_0x2073bc,null))[_0x44d4('0x18')](function(_0xd4718b){if(_0xd4718b){_0x3f3933=_0xd4718b[_0x44d4('0x19')]({'plain':!![]});_0x379343[_0x44d4('0x31')]=_['keys'](db[_0x44d4('0x44')][_0x44d4('0x23')]);_0x379343[_0x44d4('0x29')]=_[_0x44d4('0x2e')](_0x250440[_0x44d4('0x29')]);_0x379343[_0x44d4('0x2f')]=_[_0x44d4('0x30')](_0x379343[_0x44d4('0x31')],_0x379343[_0x44d4('0x29')]);_0x52f773[_0x44d4('0x32')]=_['intersection'](_0x379343['model'],qs[_0x44d4('0x33')](_0x250440[_0x44d4('0x29')][_0x44d4('0x33')]));_0x52f773[_0x44d4('0x32')]=_0x52f773['attributes'][_0x44d4('0x34')]?_0x52f773['attributes']:_0x379343[_0x44d4('0x31')];if(!_0x250440['query']['hasOwnProperty'](_0x44d4('0x45'))){_0x52f773[_0x44d4('0x14')]=qs[_0x44d4('0x14')](_0x250440[_0x44d4('0x29')]['limit']);_0x52f773[_0x44d4('0x13')]=qs[_0x44d4('0x13')](_0x250440[_0x44d4('0x29')][_0x44d4('0x13')]);}_0x52f773[_0x44d4('0x46')]=qs['sort'](_0x250440[_0x44d4('0x29')][_0x44d4('0x47')]);_0x52f773[_0x44d4('0x27')]=qs[_0x44d4('0x2f')](_['pick'](_0x250440[_0x44d4('0x29')],_0x379343[_0x44d4('0x2f')]));_0x52f773[_0x44d4('0x27')][_0x44d4('0x48')]=_0xd4718b['id'];if(_0x250440[_0x44d4('0x29')][_0x44d4('0x49')]){_0x52f773[_0x44d4('0x27')]=_[_0x44d4('0x36')](_0x52f773[_0x44d4('0x27')],{'$or':_[_0x44d4('0x21')](_0x52f773[_0x44d4('0x32')],function(_0x46c374){var _0x1e1629={};_0x1e1629[_0x46c374]={'$like':'%'+_0x250440[_0x44d4('0x29')][_0x44d4('0x49')]+'%'};return _0x1e1629;})});}_0x52f773=_[_0x44d4('0x36')]({},_0x52f773,_0x250440[_0x44d4('0x37')]);return db['UserWhatsappQueue'][_0x44d4('0x4a')](_0x52f773);}})[_0x44d4('0x18')](function(_0xf41f84){if(_0xf41f84){return db[_0x44d4('0x4b')][_0x44d4('0x4c')]({'where':{'id':_[_0x44d4('0x21')](_0xf41f84,'UserId'),'role':_0x44d4('0x4d')},'attributes':['id',_0x44d4('0x1f'),_0x44d4('0x4e'),_0x44d4('0x4f'),'createdAt']});}})[_0x44d4('0x18')](function(_0x72f52f){if(_0x72f52f){return{'count':_0x72f52f[_0x44d4('0x16')],'rows':_[_0x44d4('0x21')](_0x72f52f[_0x44d4('0x2a')],function(_0x3440b5){return{'membername':_0x3440b5[_0x44d4('0x1f')],'UserId':_0x3440b5['id'],'queue_name':_0x3f3933[_0x44d4('0x1f')],'WhatsappQueueId':_0x3f3933['id'],'interface':util[_0x44d4('0x50')](_0x44d4('0x51'),_0x44d4('0x52'),_0x3440b5[_0x44d4('0x1f')]),'penalty':0x0,'paused':_0x3440b5['whatsappPause'],'createdAt':_0x3440b5[_0x44d4('0x53')],'updatedAt':_0x3440b5['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2073bc,_0x52f773))[_0x44d4('0x2b')](handleError(_0x2073bc,null));};exports['getTeams']=function(_0x2e1cf6,_0x324a8d){var _0x1bcdd4={};var _0x51daee={};var _0xfce6ea;var _0x7dd759;return db[_0x44d4('0x22')][_0x44d4('0x43')]({'where':{'id':_0x2e1cf6['params']['id']}})[_0x44d4('0x18')](handleEntityNotFound(_0x324a8d,null))[_0x44d4('0x18')](function(_0x3c6902){if(_0x3c6902){_0xfce6ea=_0x3c6902;_0x51daee[_0x44d4('0x31')]=_[_0x44d4('0x2e')](db[_0x44d4('0x54')][_0x44d4('0x23')]);_0x51daee[_0x44d4('0x29')]=_[_0x44d4('0x2e')](_0x2e1cf6['query']);_0x51daee[_0x44d4('0x2f')]=_[_0x44d4('0x30')](_0x51daee[_0x44d4('0x31')],_0x51daee['query']);_0x1bcdd4[_0x44d4('0x32')]=_[_0x44d4('0x30')](_0x51daee[_0x44d4('0x31')],qs[_0x44d4('0x33')](_0x2e1cf6['query']['fields']));_0x1bcdd4[_0x44d4('0x32')]=_0x1bcdd4[_0x44d4('0x32')][_0x44d4('0x34')]?_0x1bcdd4['attributes']:_0x51daee[_0x44d4('0x31')];_0x1bcdd4['order']=qs[_0x44d4('0x47')](_0x2e1cf6['query']['sort']);_0x1bcdd4[_0x44d4('0x27')]=qs['filters'](_[_0x44d4('0x55')](_0x2e1cf6[_0x44d4('0x29')],_0x51daee[_0x44d4('0x2f')]));if(_0x2e1cf6['query'][_0x44d4('0x49')]){_0x1bcdd4[_0x44d4('0x27')]=_[_0x44d4('0x36')](_0x1bcdd4[_0x44d4('0x27')],{'$or':_[_0x44d4('0x21')](_0x1bcdd4[_0x44d4('0x32')],function(_0x750d35){var _0x2870b8={};_0x2870b8[_0x750d35]={'$like':'%'+_0x2e1cf6['query'][_0x44d4('0x49')]+'%'};return _0x2870b8;})});}_0x1bcdd4=_[_0x44d4('0x36')]({},_0x1bcdd4,_0x2e1cf6[_0x44d4('0x37')]);return _0xfce6ea[_0x44d4('0x56')](_0x1bcdd4);}})[_0x44d4('0x18')](function(_0x1f9b8d){if(_0x1f9b8d){_0x7dd759=_0x1f9b8d[_0x44d4('0x34')];if(!_0x2e1cf6[_0x44d4('0x29')]['hasOwnProperty'](_0x44d4('0x45'))){_0x1bcdd4['limit']=qs[_0x44d4('0x14')](_0x2e1cf6['query'][_0x44d4('0x14')]);_0x1bcdd4[_0x44d4('0x13')]=qs['offset'](_0x2e1cf6[_0x44d4('0x29')][_0x44d4('0x13')]);}return _0xfce6ea[_0x44d4('0x56')](_0x1bcdd4);}})[_0x44d4('0x18')](function(_0x4914e8){if(_0x4914e8){return _0x4914e8?{'count':_0x7dd759,'rows':_0x4914e8}:null;}})[_0x44d4('0x18')](respondWithResult(_0x324a8d,null))[_0x44d4('0x2b')](handleError(_0x324a8d,null));};exports[_0x44d4('0x57')]=function(_0x443ad1,_0x49c291){var _0x242af8=_0x443ad1[_0x44d4('0x40')]['ids'];return db[_0x44d4('0x54')][_0x44d4('0x4a')]({'where':{'id':_0x242af8},'attributes':['id'],'include':[{'model':db[_0x44d4('0x4b')],'as':'Agents','attributes':['id',_0x44d4('0x1f'),'online','voicePause',_0x44d4('0x58')],'raw':!![]}]})['then'](function(_0x11a123){if(_0x11a123){var _0x299934=_[_0x44d4('0x59')](_0x11a123,function(_0x12e118){var _0x13e275=_0x12e118['get']({'plain':!![]});return _0x13e275['Agents'];});return db[_0x44d4('0x22')][_0x44d4('0x38')]({'where':{'id':_0x443ad1[_0x44d4('0x2d')]['id']}})['then'](function(_0x1d4600){return db['sequelize'][_0x44d4('0x5a')](function(_0x4ab158){return _0x1d4600['addTeams'](_0x242af8,{'transaction':_0x4ab158})[_0x44d4('0x18')](function(){return BPromise[_0x44d4('0x5b')](_0x299934,function(_0x4e23b2){return db[_0x44d4('0x44')]['findOrCreate']({'where':{'UserId':_0x4e23b2['id'],'WhatsappQueueId':_0x443ad1[_0x44d4('0x2d')]['id']},'transaction':_0x4ab158});});})[_0x44d4('0x18')](function(){_0x299934[_0x44d4('0x5c')](function(_0x1ebb42){socket[_0x44d4('0x5d')]('userWhatsappQueue:save',{'UserId':_0x1ebb42['id'],'WhatsappQueueId':_0x1d4600['id']});});});});});}})[_0x44d4('0x18')](respondWithStatusCode(_0x49c291,null))[_0x44d4('0x2b')](handleError(_0x49c291,null));};exports['removeTeams']=function(_0x2489c8,_0x168468){return db[_0x44d4('0x54')]['findAll']({'where':{'id':_0x2489c8['query'][_0x44d4('0x5e')]},'attributes':['id'],'include':[{'model':db[_0x44d4('0x4b')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x44d4('0x18')](handleEntityNotFound(_0x168468,null))[_0x44d4('0x18')](function(_0x4faba4){var _0x503665=_['map'](_0x4faba4,'id');var _0x335ee7=[];var _0xfb597a=[];var _0x3a2020=squel[_0x44d4('0x5f')]();_0x3a2020[_0x44d4('0x60')]('tq.TeamId')[_0x44d4('0x61')](_0x44d4('0x62'),'tq')[_0x44d4('0x63')](_0x44d4('0x64'),'ut',_0x44d4('0x65'))['where']('WhatsappQueueId\x20=\x20?',_0x2489c8[_0x44d4('0x2d')]['id']);for(var _0x55098e=0x0;_0x55098e<_0x4faba4[_0x44d4('0x34')];_0x55098e+=0x1){let _0x251170=_0x4faba4[_0x55098e];for(var _0x2fc457=0x0;_0x2fc457<_0x251170[_0x44d4('0x66')][_0x44d4('0x34')];_0x2fc457+=0x1){let _0x55010b=_0x251170[_0x44d4('0x66')][_0x2fc457];var _0x149b1b=_0x3a2020[_0x44d4('0x67')]();_0x149b1b[_0x44d4('0x27')]('ut.UserId\x20=\x20?',_0x55010b['id']);_0xfb597a['push'](db[_0x44d4('0x68')][_0x44d4('0x29')](_0x149b1b[_0x44d4('0x69')](),{'type':db[_0x44d4('0x68')]['QueryTypes'][_0x44d4('0x6a')]})[_0x44d4('0x18')](function(_0x1a1bdf){if(_0x1a1bdf[_0x44d4('0x34')]===0x1){return _0x55010b['id'];}else{var _0x30e101=_[_0x44d4('0x6b')](_[_0x44d4('0x21')](_0x1a1bdf,_0x44d4('0x6c')),function(_0x5592ec){return _[_0x44d4('0x6d')](_0x503665,_0x5592ec);});if(_0x30e101){return _0x55010b['id'];}}}));}}return BPromise[_0x44d4('0x6e')](_0xfb597a)[_0x44d4('0x18')](function(_0x2fdb1b){_0x335ee7=_(_0x335ee7)[_0x44d4('0x6f')](_0x2fdb1b)[_0x44d4('0x70')]()['value']();return db[_0x44d4('0x22')]['find']({'where':{'id':_0x2489c8[_0x44d4('0x2d')]['id']}})['then'](function(_0x72b1bd){return db[_0x44d4('0x68')]['transaction'](function(_0x7a6257){return _0x72b1bd[_0x44d4('0x71')](_0x2489c8[_0x44d4('0x29')][_0x44d4('0x5e')],{'transaction':_0x7a6257})['then'](function(){if(!_['isEmpty'](_0x335ee7)){return _0x72b1bd[_0x44d4('0x72')](_0x335ee7,{'transaction':_0x7a6257});}})[_0x44d4('0x18')](function(){_0x335ee7[_0x44d4('0x5c')](function(_0x254bde){socket['emit'](_0x44d4('0x73'),{'UserId':_0x254bde,'WhatsappQueueId':_0x72b1bd['id']});});});});});});})[_0x44d4('0x18')](respondWithStatusCode(_0x168468,null))[_0x44d4('0x2b')](handleError(_0x168468,null));};exports[_0x44d4('0x74')]=function(_0x5c9c90,_0xad8d5e){return db[_0x44d4('0x22')]['find']({'where':{'id':_0x5c9c90[_0x44d4('0x2d')]['id']}})['then'](handleEntityNotFound(_0xad8d5e,null))[_0x44d4('0x18')](function(_0x2d44d6){if(_0x2d44d6){return _0x2d44d6['addAgents'](_0x5c9c90['body'][_0x44d4('0x5e')],_[_0x44d4('0x75')](_0x5c9c90[_0x44d4('0x40')],['ids','id'])||{})[_0x44d4('0x76')](function(_0x1c1771){for(var _0x4b60d8=0x0;_0x4b60d8<_0x5c9c90['body'][_0x44d4('0x5e')]['length'];_0x4b60d8+=0x1){socket[_0x44d4('0x5d')]('userWhatsappQueue:save',{'UserId':Number(_0x5c9c90[_0x44d4('0x40')][_0x44d4('0x5e')][_0x4b60d8]),'WhatsappQueueId':Number(_0x5c9c90[_0x44d4('0x2d')]['id'])});}return _0x1c1771;});}})[_0x44d4('0x18')](respondWithResult(_0xad8d5e,null))[_0x44d4('0x2b')](handleError(_0xad8d5e,null));};exports[_0x44d4('0x72')]=function(_0x46326a,_0x470cf9){return db[_0x44d4('0x22')][_0x44d4('0x38')]({'where':{'id':_0x46326a[_0x44d4('0x2d')]['id']}})['then'](handleEntityNotFound(_0x470cf9,null))[_0x44d4('0x18')](function(_0x57c291){if(_0x57c291){return _0x57c291[_0x44d4('0x72')](_0x46326a['query'][_0x44d4('0x5e')])[_0x44d4('0x18')](function(){if(_['isArray'](_0x46326a['query'][_0x44d4('0x5e')])){for(var _0x23d2bd=0x0;_0x23d2bd<_0x46326a[_0x44d4('0x29')][_0x44d4('0x5e')][_0x44d4('0x34')];_0x23d2bd+=0x1){socket['emit'](_0x44d4('0x73'),{'UserId':Number(_0x46326a['query']['ids'][_0x23d2bd]),'WhatsappQueueId':Number(_0x46326a[_0x44d4('0x2d')]['id'])});}}else{socket[_0x44d4('0x5d')](_0x44d4('0x73'),{'UserId':Number(_0x46326a[_0x44d4('0x29')][_0x44d4('0x5e')]),'WhatsappQueueId':Number(_0x46326a[_0x44d4('0x2d')]['id'])});}});}})['then'](respondWithStatusCode(_0x470cf9,null))[_0x44d4('0x2b')](handleError(_0x470cf9,null));};exports[_0x44d4('0x77')]=function(_0x2bb00d,_0x4d1e68){var _0x44d20a={};var _0x2d01bf={};var _0xebbe51;var _0x460116;return db['WhatsappQueue'][_0x44d4('0x43')]({'where':{'id':_0x2bb00d['params']['id']}})[_0x44d4('0x18')](handleEntityNotFound(_0x4d1e68,null))['then'](function(_0x36fb99){if(_0x36fb99){_0xebbe51=_0x36fb99;_0x2d01bf['model']=_[_0x44d4('0x2e')](db[_0x44d4('0x4b')]['rawAttributes']);_0x2d01bf['query']=_[_0x44d4('0x2e')](_0x2bb00d[_0x44d4('0x29')]);_0x2d01bf[_0x44d4('0x2f')]=_[_0x44d4('0x30')](_0x2d01bf['model'],_0x2d01bf[_0x44d4('0x29')]);_0x44d20a[_0x44d4('0x32')]=_[_0x44d4('0x30')](_0x2d01bf[_0x44d4('0x31')],qs[_0x44d4('0x33')](_0x2bb00d['query'][_0x44d4('0x33')]));_0x44d20a['attributes']=_0x44d20a[_0x44d4('0x32')][_0x44d4('0x34')]?_0x44d20a[_0x44d4('0x32')]:_0x2d01bf['model'];_0x44d20a[_0x44d4('0x46')]=qs[_0x44d4('0x47')](_0x2bb00d[_0x44d4('0x29')]['sort']);_0x44d20a[_0x44d4('0x27')]=qs[_0x44d4('0x2f')](_[_0x44d4('0x55')](_0x2bb00d[_0x44d4('0x29')],_0x2d01bf['filters']));if(_0x2bb00d['query'][_0x44d4('0x49')]){_0x44d20a[_0x44d4('0x27')]=_[_0x44d4('0x36')](_0x44d20a[_0x44d4('0x27')],{'$or':_[_0x44d4('0x21')](_0x44d20a['attributes'],function(_0x59994a){var _0x52b2fc={};_0x52b2fc[_0x59994a]={'$like':'%'+_0x2bb00d[_0x44d4('0x29')]['filter']+'%'};return _0x52b2fc;})});}_0x44d20a=_['merge']({},_0x44d20a,_0x2bb00d[_0x44d4('0x37')]);return _0xebbe51[_0x44d4('0x77')](_0x44d20a);}})[_0x44d4('0x18')](function(_0x717039){if(_0x717039){_0x460116=_0x717039[_0x44d4('0x34')];if(!_0x2bb00d[_0x44d4('0x29')][_0x44d4('0x78')](_0x44d4('0x45'))){_0x44d20a[_0x44d4('0x14')]=qs[_0x44d4('0x14')](_0x2bb00d[_0x44d4('0x29')][_0x44d4('0x14')]);_0x44d20a[_0x44d4('0x13')]=qs['offset'](_0x2bb00d[_0x44d4('0x29')][_0x44d4('0x13')]);}return _0xebbe51[_0x44d4('0x77')](_0x44d20a);}})[_0x44d4('0x18')](function(_0x2b8d25){if(_0x2b8d25){return _0x2b8d25?{'count':_0x460116,'rows':_0x2b8d25}:null;}})[_0x44d4('0x18')](respondWithResult(_0x4d1e68,null))[_0x44d4('0x2b')](handleError(_0x4d1e68,null));};
\ No newline at end of file
index aa44c9e..738737e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0586=['remove','emit','hasOwnProperty','events','../../mysqldb','WhatsappQueue','setMaxListeners','save','update'];(function(_0x1439e3,_0x18fff0){var _0x2f2a90=function(_0x2c615d){while(--_0x2c615d){_0x1439e3['push'](_0x1439e3['shift']());}};_0x2f2a90(++_0x18fff0);}(_0x0586,0x1d7));var _0x6058=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0586[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x6058('0x0'));var WhatsappQueue=require(_0x6058('0x1'))['db'][_0x6058('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x6058('0x3')](0x0);var events={'afterCreate':_0x6058('0x4'),'afterUpdate':_0x6058('0x5'),'afterDestroy':_0x6058('0x6')};function emitEvent(_0x5c6985){return function(_0x36c465,_0x136cc7,_0x9a3704){WhatsappQueueEvents[_0x6058('0x7')](_0x5c6985+':'+_0x36c465['id'],_0x36c465);WhatsappQueueEvents[_0x6058('0x7')](_0x5c6985,_0x36c465);_0x9a3704(null);};}for(var e in events){if(events[_0x6058('0x8')](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0x8f09=['save','update','remove','emit','hook','events','../../mysqldb','WhatsappQueue','setMaxListeners'];(function(_0x32bdd4,_0x143a69){var _0x4b54d3=function(_0x5c38d6){while(--_0x5c38d6){_0x32bdd4['push'](_0x32bdd4['shift']());}};_0x4b54d3(++_0x143a69);}(_0x8f09,0x191));var _0x98f0=function(_0x57f121,_0x16f9f2){_0x57f121=_0x57f121-0x0;var _0x1bc0b6=_0x8f09[_0x57f121];return _0x1bc0b6;};'use strict';var EventEmitter=require(_0x98f0('0x0'));var WhatsappQueue=require(_0x98f0('0x1'))['db'][_0x98f0('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x98f0('0x3')](0x0);var events={'afterCreate':_0x98f0('0x4'),'afterUpdate':_0x98f0('0x5'),'afterDestroy':_0x98f0('0x6')};function emitEvent(_0x517ed3){return function(_0x17bf95,_0x536dd7,_0x40af97){WhatsappQueueEvents[_0x98f0('0x7')](_0x517ed3+':'+_0x17bf95['id'],_0x17bf95);WhatsappQueueEvents['emit'](_0x517ed3,_0x17bf95);_0x40af97(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0x98f0('0x8')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index c522139..f2d62bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f4=['WhatsappQueue','whatsapp_queues','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./whatsappQueue.attributes','exports'];(function(_0x423645,_0x574f16){var _0x26e6ba=function(_0x71894e){while(--_0x71894e){_0x423645['push'](_0x423645['shift']());}};_0x26e6ba(++_0x574f16);}(_0x64f4,0x115));var _0x464f=function(_0x5da1be,_0x386002){_0x5da1be=_0x5da1be-0x0;var _0x186d33=_0x64f4[_0x5da1be];return _0x186d33;};'use strict';var _=require('lodash');var util=require(_0x464f('0x0'));var logger=require(_0x464f('0x1'))(_0x464f('0x2'));var moment=require('moment');var BPromise=require(_0x464f('0x3'));var rp=require(_0x464f('0x4'));var fs=require('fs');var path=require(_0x464f('0x5'));var rimraf=require(_0x464f('0x6'));var config=require('../../config/environment');var attributes=require(_0x464f('0x7'));module[_0x464f('0x8')]=function(_0x54de4f,_0x2195ac){return _0x54de4f['define'](_0x464f('0x9'),attributes,{'tableName':_0x464f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e3e=['exports','define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./whatsappQueue.attributes'];(function(_0x2a5099,_0x329e92){var _0x2802f1=function(_0x53f99b){while(--_0x53f99b){_0x2a5099['push'](_0x2a5099['shift']());}};_0x2802f1(++_0x329e92);}(_0x9e3e,0xa0));var _0xe9e3=function(_0x21065c,_0x23839c){_0x21065c=_0x21065c-0x0;var _0x3500c0=_0x9e3e[_0x21065c];return _0x3500c0;};'use strict';var _=require(_0xe9e3('0x0'));var util=require(_0xe9e3('0x1'));var logger=require(_0xe9e3('0x2'))(_0xe9e3('0x3'));var moment=require('moment');var BPromise=require(_0xe9e3('0x4'));var rp=require(_0xe9e3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe9e3('0x6'));var config=require(_0xe9e3('0x7'));var attributes=require(_0xe9e3('0x8'));module[_0xe9e3('0x9')]=function(_0x5990c5,_0x35953f){return _0x5990c5[_0xe9e3('0xa')](_0xe9e3('0xb'),attributes,{'tableName':_0xe9e3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b1f2dae..84e0729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ab6=['map','include','model','then','GetWhatsappQueue','catch','find','ShowWhatsappQueue','lodash','util','moment','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./whatsappQueue.socket','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','WhatsappQueue','findAll','options','raw','where','attributes','limit'];(function(_0xc46218,_0x189027){var _0x55d25a=function(_0xadfb1){while(--_0xadfb1){_0xc46218['push'](_0xc46218['shift']());}};_0x55d25a(++_0x189027);}(_0x1ab6,0x77));var _0x61ab=function(_0x2728e8,_0x37a3a8){_0x2728e8=_0x2728e8-0x0;var _0x439ef9=_0x1ab6[_0x2728e8];return _0x439ef9;};'use strict';var _=require(_0x61ab('0x0'));var util=require(_0x61ab('0x1'));var moment=require(_0x61ab('0x2'));var BPromise=require('bluebird');var rs=require(_0x61ab('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x61ab('0x4'));var logger=require('../../config/logger')(_0x61ab('0x5'));var config=require(_0x61ab('0x6'));var jayson=require(_0x61ab('0x7'));var client=jayson[_0x61ab('0x8')]['http']({'port':0x232a});config[_0x61ab('0x9')]=_[_0x61ab('0xa')](config[_0x61ab('0x9')],{'host':_0x61ab('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x61ab('0x9')]));require(_0x61ab('0xc'))['register'](socket);function respondWithRpcPromise(_0x4a235a,_0x20fd36,_0x2a84d0){return new BPromise(function(_0x1ecbfe,_0x18e449){return client['request'](_0x4a235a,_0x2a84d0)['then'](function(_0x56d8e9){logger[_0x61ab('0xd')](_0x61ab('0xe'),_0x20fd36,_0x61ab('0xf'));logger[_0x61ab('0x10')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x20fd36,_0x61ab('0xf'),JSON[_0x61ab('0x11')](_0x56d8e9));if(_0x56d8e9[_0x61ab('0x12')]){if(_0x56d8e9[_0x61ab('0x12')][_0x61ab('0x13')]===0x1f4){logger[_0x61ab('0x12')]('WhatsappQueue,\x20%s,\x20%s',_0x20fd36,_0x56d8e9[_0x61ab('0x12')][_0x61ab('0x14')]);return _0x18e449(_0x56d8e9[_0x61ab('0x12')][_0x61ab('0x14')]);}logger[_0x61ab('0x12')]('WhatsappQueue,\x20%s,\x20%s',_0x20fd36,_0x56d8e9[_0x61ab('0x12')][_0x61ab('0x14')]);return _0x1ecbfe(_0x56d8e9[_0x61ab('0x12')][_0x61ab('0x14')]);}else{logger[_0x61ab('0xd')](_0x61ab('0xe'),_0x20fd36,_0x61ab('0xf'));_0x1ecbfe(_0x56d8e9[_0x61ab('0x15')][_0x61ab('0x14')]);}})['catch'](function(_0x3f69ed){logger[_0x61ab('0x12')](_0x61ab('0xe'),_0x20fd36,_0x3f69ed);_0x18e449(_0x3f69ed);});});}exports['GetWhatsappQueue']=function(_0x3ab80c){var _0x16ea5d=this;return new Promise(function(_0x55c4b3,_0xaac7a0){return db[_0x61ab('0x16')][_0x61ab('0x17')]({'raw':_0x3ab80c[_0x61ab('0x18')]?_0x3ab80c[_0x61ab('0x18')][_0x61ab('0x19')]===undefined?!![]:![]:!![],'where':_0x3ab80c[_0x61ab('0x18')]?_0x3ab80c[_0x61ab('0x18')][_0x61ab('0x1a')]||null:null,'attributes':_0x3ab80c[_0x61ab('0x18')]?_0x3ab80c['options'][_0x61ab('0x1b')]||null:null,'limit':_0x3ab80c[_0x61ab('0x18')]?_0x3ab80c[_0x61ab('0x18')][_0x61ab('0x1c')]||null:null,'include':_0x3ab80c[_0x61ab('0x18')]?_0x3ab80c['options']['include']?_[_0x61ab('0x1d')](_0x3ab80c['options'][_0x61ab('0x1e')],function(_0x1ee999){return{'model':db[_0x1ee999[_0x61ab('0x1f')]],'as':_0x1ee999['as'],'attributes':_0x1ee999[_0x61ab('0x1b')],'include':_0x1ee999[_0x61ab('0x1e')]?_['map'](_0x1ee999[_0x61ab('0x1e')],function(_0x459f6c){return{'model':db[_0x459f6c[_0x61ab('0x1f')]],'as':_0x459f6c['as'],'attributes':_0x459f6c[_0x61ab('0x1b')],'include':_0x459f6c[_0x61ab('0x1e')]?_[_0x61ab('0x1d')](_0x459f6c[_0x61ab('0x1e')],function(_0x5d4f7c){return{'model':db[_0x5d4f7c['model']],'as':_0x5d4f7c['as'],'attributes':_0x5d4f7c[_0x61ab('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x61ab('0x20')](function(_0x3241e3){logger[_0x61ab('0xd')](_0x61ab('0x21'),_0x3ab80c);logger[_0x61ab('0x10')](_0x61ab('0x21'),_0x3ab80c,JSON[_0x61ab('0x11')](_0x3241e3));_0x55c4b3(_0x3241e3);})[_0x61ab('0x22')](function(_0x5b50de){logger[_0x61ab('0x12')](_0x61ab('0x21'),_0x5b50de[_0x61ab('0x14')],_0x3ab80c);_0xaac7a0(_0x16ea5d[_0x61ab('0x12')](0x1f4,_0x5b50de[_0x61ab('0x14')]));});});};exports['ShowWhatsappQueue']=function(_0x58e39d){var _0x2a227a=this;return new Promise(function(_0x354129,_0x4783a7){return db[_0x61ab('0x16')][_0x61ab('0x23')]({'raw':_0x58e39d[_0x61ab('0x18')]?_0x58e39d[_0x61ab('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x58e39d[_0x61ab('0x18')]?_0x58e39d['options'][_0x61ab('0x1a')]||null:null,'attributes':_0x58e39d[_0x61ab('0x18')]?_0x58e39d['options']['attributes']||null:null,'include':_0x58e39d['options']?_0x58e39d[_0x61ab('0x18')][_0x61ab('0x1e')]?_[_0x61ab('0x1d')](_0x58e39d[_0x61ab('0x18')][_0x61ab('0x1e')],function(_0x4d8b9f){return{'model':db[_0x4d8b9f[_0x61ab('0x1f')]],'as':_0x4d8b9f['as'],'attributes':_0x4d8b9f[_0x61ab('0x1b')],'include':_0x4d8b9f[_0x61ab('0x1e')]?_[_0x61ab('0x1d')](_0x4d8b9f['include'],function(_0x57095d){return{'model':db[_0x57095d['model']],'as':_0x57095d['as'],'attributes':_0x57095d[_0x61ab('0x1b')],'include':_0x57095d[_0x61ab('0x1e')]?_['map'](_0x57095d[_0x61ab('0x1e')],function(_0x57298f){return{'model':db[_0x57298f[_0x61ab('0x1f')]],'as':_0x57298f['as'],'attributes':_0x57298f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x15ca8c){logger['info']('ShowWhatsappQueue',_0x58e39d);logger[_0x61ab('0x10')](_0x61ab('0x24'),_0x58e39d,JSON['stringify'](_0x15ca8c));_0x354129(_0x15ca8c);})[_0x61ab('0x22')](function(_0x3f775f){logger['error'](_0x61ab('0x24'),_0x3f775f['message'],_0x58e39d);_0x4783a7(_0x2a227a['error'](0x1f4,_0x3f775f[_0x61ab('0x14')]));});});};
\ No newline at end of file
+var _0xf766=['request\x20sent','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','where','attributes','limit','include','map','model','then','ShowWhatsappQueue','find','raw','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','redis','socket.io-emitter','./whatsappQueue.socket','register','info','WhatsappQueue,\x20%s,\x20%s','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2a6aea,_0x49052a){var _0x37e283=function(_0x3cd6f9){while(--_0x3cd6f9){_0x2a6aea['push'](_0x2a6aea['shift']());}};_0x37e283(++_0x49052a);}(_0xf766,0xf5));var _0x6f76=function(_0x23be51,_0xc02a1b){_0x23be51=_0x23be51-0x0;var _0x47a26d=_0xf766[_0x23be51];return _0x47a26d;};'use strict';var _=require(_0x6f76('0x0'));var util=require(_0x6f76('0x1'));var moment=require(_0x6f76('0x2'));var BPromise=require(_0x6f76('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6f76('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6f76('0x5'));var logger=require(_0x6f76('0x6'))(_0x6f76('0x7'));var config=require('../../config/environment');var jayson=require(_0x6f76('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x6f76('0x9')]=_['defaults'](config[_0x6f76('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x6f76('0xa'))(new Redis(config[_0x6f76('0x9')]));require(_0x6f76('0xb'))[_0x6f76('0xc')](socket);function respondWithRpcPromise(_0x34218b,_0x469821,_0x54d7dd){return new BPromise(function(_0x2ed8d6,_0x11c6f2){return client['request'](_0x34218b,_0x54d7dd)['then'](function(_0x1354ec){logger[_0x6f76('0xd')](_0x6f76('0xe'),_0x469821,'request\x20sent');logger[_0x6f76('0xf')](_0x6f76('0x10'),_0x469821,'request\x20sent',JSON[_0x6f76('0x11')](_0x1354ec));if(_0x1354ec[_0x6f76('0x12')]){if(_0x1354ec[_0x6f76('0x12')][_0x6f76('0x13')]===0x1f4){logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x469821,_0x1354ec[_0x6f76('0x12')]['message']);return _0x11c6f2(_0x1354ec[_0x6f76('0x12')]['message']);}logger['error'](_0x6f76('0xe'),_0x469821,_0x1354ec[_0x6f76('0x12')][_0x6f76('0x14')]);return _0x2ed8d6(_0x1354ec[_0x6f76('0x12')][_0x6f76('0x14')]);}else{logger['info'](_0x6f76('0xe'),_0x469821,_0x6f76('0x15'));_0x2ed8d6(_0x1354ec[_0x6f76('0x16')][_0x6f76('0x14')]);}})[_0x6f76('0x17')](function(_0x47fbb9){logger[_0x6f76('0x12')](_0x6f76('0xe'),_0x469821,_0x47fbb9);_0x11c6f2(_0x47fbb9);});});}exports[_0x6f76('0x18')]=function(_0x24b047){var _0xec372e=this;return new Promise(function(_0xf1182b,_0x34e0e4){return db[_0x6f76('0x19')][_0x6f76('0x1a')]({'raw':_0x24b047[_0x6f76('0x1b')]?_0x24b047['options']['raw']===undefined?!![]:![]:!![],'where':_0x24b047[_0x6f76('0x1b')]?_0x24b047[_0x6f76('0x1b')][_0x6f76('0x1c')]||null:null,'attributes':_0x24b047['options']?_0x24b047[_0x6f76('0x1b')][_0x6f76('0x1d')]||null:null,'limit':_0x24b047['options']?_0x24b047['options'][_0x6f76('0x1e')]||null:null,'include':_0x24b047[_0x6f76('0x1b')]?_0x24b047[_0x6f76('0x1b')][_0x6f76('0x1f')]?_[_0x6f76('0x20')](_0x24b047[_0x6f76('0x1b')][_0x6f76('0x1f')],function(_0x554eb4){return{'model':db[_0x554eb4[_0x6f76('0x21')]],'as':_0x554eb4['as'],'attributes':_0x554eb4[_0x6f76('0x1d')],'include':_0x554eb4[_0x6f76('0x1f')]?_[_0x6f76('0x20')](_0x554eb4['include'],function(_0x4f5115){return{'model':db[_0x4f5115[_0x6f76('0x21')]],'as':_0x4f5115['as'],'attributes':_0x4f5115[_0x6f76('0x1d')],'include':_0x4f5115[_0x6f76('0x1f')]?_[_0x6f76('0x20')](_0x4f5115['include'],function(_0x204792){return{'model':db[_0x204792[_0x6f76('0x21')]],'as':_0x204792['as'],'attributes':_0x204792[_0x6f76('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6f76('0x22')](function(_0x13e7f5){logger['info'](_0x6f76('0x18'),_0x24b047);logger[_0x6f76('0xf')](_0x6f76('0x18'),_0x24b047,JSON[_0x6f76('0x11')](_0x13e7f5));_0xf1182b(_0x13e7f5);})['catch'](function(_0x340ba3){logger[_0x6f76('0x12')](_0x6f76('0x18'),_0x340ba3[_0x6f76('0x14')],_0x24b047);_0x34e0e4(_0xec372e['error'](0x1f4,_0x340ba3['message']));});});};exports[_0x6f76('0x23')]=function(_0x38a1eb){var _0x238d4d=this;return new Promise(function(_0x5389fd,_0x128d0f){return db[_0x6f76('0x19')][_0x6f76('0x24')]({'raw':_0x38a1eb[_0x6f76('0x1b')]?_0x38a1eb[_0x6f76('0x1b')][_0x6f76('0x25')]===undefined?!![]:![]:!![],'where':_0x38a1eb[_0x6f76('0x1b')]?_0x38a1eb[_0x6f76('0x1b')][_0x6f76('0x1c')]||null:null,'attributes':_0x38a1eb[_0x6f76('0x1b')]?_0x38a1eb[_0x6f76('0x1b')][_0x6f76('0x1d')]||null:null,'include':_0x38a1eb['options']?_0x38a1eb[_0x6f76('0x1b')][_0x6f76('0x1f')]?_['map'](_0x38a1eb[_0x6f76('0x1b')]['include'],function(_0x2aa4e7){return{'model':db[_0x2aa4e7[_0x6f76('0x21')]],'as':_0x2aa4e7['as'],'attributes':_0x2aa4e7[_0x6f76('0x1d')],'include':_0x2aa4e7[_0x6f76('0x1f')]?_[_0x6f76('0x20')](_0x2aa4e7[_0x6f76('0x1f')],function(_0x20c625){return{'model':db[_0x20c625[_0x6f76('0x21')]],'as':_0x20c625['as'],'attributes':_0x20c625[_0x6f76('0x1d')],'include':_0x20c625[_0x6f76('0x1f')]?_[_0x6f76('0x20')](_0x20c625[_0x6f76('0x1f')],function(_0x186c61){return{'model':db[_0x186c61['model']],'as':_0x186c61['as'],'attributes':_0x186c61[_0x6f76('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6f76('0x22')](function(_0xb80459){logger[_0x6f76('0xd')](_0x6f76('0x23'),_0x38a1eb);logger['debug'](_0x6f76('0x23'),_0x38a1eb,JSON[_0x6f76('0x11')](_0xb80459));_0x5389fd(_0xb80459);})['catch'](function(_0x589a20){logger[_0x6f76('0x12')](_0x6f76('0x23'),_0x589a20[_0x6f76('0x14')],_0x38a1eb);_0x128d0f(_0x238d4d[_0x6f76('0x12')](0x1f4,_0x589a20[_0x6f76('0x14')]));});});};
\ No newline at end of file
index e5a2961..f90dac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1924=['update','register','length','whatsappQueue:','./whatsappQueue.events','remove'];(function(_0xf8a92c,_0x58684c){var _0x588ca7=function(_0x84a1a9){while(--_0x84a1a9){_0xf8a92c['push'](_0xf8a92c['shift']());}};_0x588ca7(++_0x58684c);}(_0x1924,0x1de));var _0x4192=function(_0x2202d9,_0xfc672a){_0x2202d9=_0x2202d9-0x0;var _0x55b9ce=_0x1924[_0x2202d9];return _0x55b9ce;};'use strict';var WhatsappQueueEvents=require(_0x4192('0x0'));var events=['save',_0x4192('0x1'),_0x4192('0x2')];function createListener(_0x13a07a,_0x24d0c4){return function(_0x4159d0){_0x24d0c4['emit'](_0x13a07a,_0x4159d0);};}function removeListener(_0x4e5b4f,_0x204077){return function(){WhatsappQueueEvents['removeListener'](_0x4e5b4f,_0x204077);};}exports[_0x4192('0x3')]=function(_0x254197){for(var _0x19c400=0x0,_0x4afcaa=events[_0x4192('0x4')];_0x19c400<_0x4afcaa;_0x19c400++){var _0xe589f1=events[_0x19c400];var _0x1fa3fe=createListener(_0x4192('0x5')+_0xe589f1,_0x254197);WhatsappQueueEvents['on'](_0xe589f1,_0x1fa3fe);}};
\ No newline at end of file
+var _0x60de=['remove','update','emit','length','whatsappQueue:','save'];(function(_0x333174,_0x3408c2){var _0x461682=function(_0x2ffefe){while(--_0x2ffefe){_0x333174['push'](_0x333174['shift']());}};_0x461682(++_0x3408c2);}(_0x60de,0x71));var _0xe60d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x60de[_0x57b54c];return _0x59cc19;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0xe60d('0x0'),_0xe60d('0x1'),_0xe60d('0x2')];function createListener(_0x57ee3d,_0x405e8a){return function(_0x1688ee){_0x405e8a[_0xe60d('0x3')](_0x57ee3d,_0x1688ee);};}function removeListener(_0x2e71eb,_0x5dfc35){return function(){WhatsappQueueEvents['removeListener'](_0x2e71eb,_0x5dfc35);};}exports['register']=function(_0x363809){for(var _0x49bfe3=0x0,_0x4ba1c5=events[_0xe60d('0x4')];_0x49bfe3<_0x4ba1c5;_0x49bfe3++){var _0x59d33c=events[_0x49bfe3];var _0x579674=createListener(_0xe60d('0x5')+_0x59d33c,_0x363809);WhatsappQueueEvents['on'](_0x59d33c,_0x579674);}};
\ No newline at end of file
index e392f53..e0a31fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f71=['../../config/environment','isAuthenticated','index','/describe','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x3e5e71,_0x2b3036){var _0x13bc71=function(_0x35fc0c){while(--_0x35fc0c){_0x3e5e71['push'](_0x3e5e71['shift']());}};_0x13bc71(++_0x2b3036);}(_0x0f71,0x1dc));var _0x10f7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0f71[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x10f7('0x0'));var util=require(_0x10f7('0x1'));var path=require('path');var timeout=require(_0x10f7('0x2'));var express=require(_0x10f7('0x3'));var router=express[_0x10f7('0x4')]();var fs_extra=require(_0x10f7('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x10f7('0x6'));var config=require(_0x10f7('0x7'));var controller=require('./whatsappQueueReport.controller');router['get']('/',auth[_0x10f7('0x8')](),controller[_0x10f7('0x9')]);router['get'](_0x10f7('0xa'),auth[_0x10f7('0x8')](),controller['describe']);router[_0x10f7('0xb')](_0x10f7('0xc'),auth['isAuthenticated'](),controller[_0x10f7('0xd')]);router[_0x10f7('0xe')]('/',auth[_0x10f7('0x8')](),controller[_0x10f7('0xf')]);router[_0x10f7('0x10')](_0x10f7('0xc'),auth[_0x10f7('0x8')](),controller[_0x10f7('0x11')]);router[_0x10f7('0x12')]('/:id',auth[_0x10f7('0x8')](),controller[_0x10f7('0x13')]);module[_0x10f7('0x14')]=router;
\ No newline at end of file
+var _0xca8d=['Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','post','put','/:id','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x1a5322,_0x8e492d){var _0x47475b=function(_0x24779c){while(--_0x24779c){_0x1a5322['push'](_0x1a5322['shift']());}};_0x47475b(++_0x8e492d);}(_0xca8d,0x10d));var _0xdca8=function(_0xc492a3,_0x2b42ee){_0xc492a3=_0xc492a3-0x0;var _0x414593=_0xca8d[_0xc492a3];return _0x414593;};'use strict';var multer=require(_0xdca8('0x0'));var util=require('util');var path=require(_0xdca8('0x1'));var timeout=require(_0xdca8('0x2'));var express=require(_0xdca8('0x3'));var router=express[_0xdca8('0x4')]();var fs_extra=require(_0xdca8('0x5'));var auth=require(_0xdca8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdca8('0x7'));var controller=require(_0xdca8('0x8'));router[_0xdca8('0x9')]('/',auth[_0xdca8('0xa')](),controller[_0xdca8('0xb')]);router['get'](_0xdca8('0xc'),auth['isAuthenticated'](),controller[_0xdca8('0xd')]);router['get']('/:id',auth[_0xdca8('0xa')](),controller[_0xdca8('0xe')]);router[_0xdca8('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xdca8('0x10')](_0xdca8('0x11'),auth['isAuthenticated'](),controller[_0xdca8('0x12')]);router['delete'](_0xdca8('0x11'),auth[_0xdca8('0xa')](),controller[_0xdca8('0x13')]);module[_0xdca8('0x14')]=router;
\ No newline at end of file
index 662410a..50b61a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x4631a0,_0x3e62f4){var _0x59f485=function(_0x142fbf){while(--_0x142fbf){_0x4631a0['push'](_0x4631a0['shift']());}};_0x59f485(++_0x3e62f4);}(_0x7a54,0x106));var _0x47a5=function(_0x28e94e,_0x4ba375){_0x28e94e=_0x28e94e-0x0;var _0x307f5f=_0x7a54[_0x28e94e];return _0x307f5f;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x5acd2b,_0x926213){var _0x17d8f7=function(_0x33d1f1){while(--_0x33d1f1){_0x5acd2b['push'](_0x5acd2b['shift']());}};_0x17d8f7(++_0x926213);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'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 721df40..7786ad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a0=['fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','save','update','destroy','then','name','map','WhatsappQueueReport'];(function(_0x3300f5,_0x5cd0c1){var _0x1ae058=function(_0x9f6bd4){while(--_0x9f6bd4){_0x3300f5['push'](_0x3300f5['shift']());}};_0x1ae058(++_0x5cd0c1);}(_0x84a0,0x66));var _0x084a=function(_0x2590d2,_0x38d885){_0x2590d2=_0x2590d2-0x0;var _0x5ec857=_0x84a0[_0x2590d2];return _0x5ec857;};'use strict';var emlformat=require(_0x084a('0x0'));var rimraf=require(_0x084a('0x1'));var zipdir=require(_0x084a('0x2'));var jsonpatch=require(_0x084a('0x3'));var rp=require('request-promise');var moment=require(_0x084a('0x4'));var BPromise=require(_0x084a('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x084a('0x6'));var sox=require(_0x084a('0x7'));var csv=require('to-csv');var ejs=require(_0x084a('0x8'));var fs=require('fs');var fs_extra=require(_0x084a('0x9'));var _=require(_0x084a('0xa'));var squel=require(_0x084a('0xb'));var crypto=require(_0x084a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x084a('0xd'));var toCsv=require(_0x084a('0xe'));var querystring=require(_0x084a('0xf'));var Papa=require(_0x084a('0x10'));var Redis=require(_0x084a('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x084a('0x12'));var hardwareService=require(_0x084a('0x13'));var logger=require(_0x084a('0x14'))(_0x084a('0x15'));var utils=require(_0x084a('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x084a('0x17'))['db'];function respondWithStatusCode(_0x3ca72f,_0xec90a5){_0xec90a5=_0xec90a5||0xcc;return function(_0x9245b1){if(_0x9245b1){return _0x3ca72f[_0x084a('0x18')](_0xec90a5);}return _0x3ca72f[_0x084a('0x19')](_0xec90a5)[_0x084a('0x1a')]();};}function respondWithResult(_0x3a76d1,_0x5aef40){_0x5aef40=_0x5aef40||0xc8;return function(_0x4277c9){if(_0x4277c9){return _0x3a76d1['status'](_0x5aef40)[_0x084a('0x1b')](_0x4277c9);}};}function respondWithFilteredResult(_0x3ccaca,_0x366624){return function(_0x2d35b8){if(_0x2d35b8){var _0xd20527=typeof _0x366624['offset']===_0x084a('0x1c')&&typeof _0x366624['limit']===_0x084a('0x1c');var _0x355b45=_0x2d35b8['count'];var _0xf2c333=_0xd20527?0x0:_0x366624[_0x084a('0x1d')];var _0x4134b9=_0xd20527?_0x2d35b8[_0x084a('0x1e')]:_0x366624[_0x084a('0x1d')]+_0x366624[_0x084a('0x1f')];var _0x447a19;if(_0x4134b9>=_0x355b45){_0x4134b9=_0x355b45;_0x447a19=0xc8;}else{_0x447a19=0xce;}_0x3ccaca[_0x084a('0x19')](_0x447a19);return _0x3ccaca[_0x084a('0x20')](_0x084a('0x21'),_0xf2c333+'-'+_0x4134b9+'/'+_0x355b45)[_0x084a('0x1b')](_0x2d35b8);}return null;};}function patchUpdates(_0x279e25){return function(_0x116328){try{jsonpatch[_0x084a('0x22')](_0x116328,_0x279e25,!![]);}catch(_0xf0dd98){return BPromise['reject'](_0xf0dd98);}return _0x116328[_0x084a('0x23')]();};}function saveUpdates(_0x1ad257,_0x41a90f){return function(_0x2d62bf){if(_0x2d62bf){return _0x2d62bf[_0x084a('0x24')](_0x1ad257)['then'](function(_0x755c24){return _0x755c24;});}return null;};}function removeEntity(_0x288e9e,_0x6346a5){return function(_0x1f2c9f){if(_0x1f2c9f){return _0x1f2c9f[_0x084a('0x25')]()[_0x084a('0x26')](function(){_0x288e9e['status'](0xcc)[_0x084a('0x1a')]();});}};}function handleEntityNotFound(_0x2af138,_0x54233b){return function(_0x5b1474){if(!_0x5b1474){_0x2af138[_0x084a('0x18')](0x194);}return _0x5b1474;};}function handleError(_0x3dd8b9,_0xfc9b8c){_0xfc9b8c=_0xfc9b8c||0x1f4;return function(_0x4c5658){logger['error'](_0x4c5658['stack']);if(_0x4c5658['name']){delete _0x4c5658[_0x084a('0x27')];}_0x3dd8b9['status'](_0xfc9b8c)['send'](_0x4c5658);};}exports['index']=function(_0x3b8176,_0x4651e6){var _0x388062={},_0x2c4149={},_0x3be7a6={'count':0x0,'rows':[]};var _0x25a2a1=_[_0x084a('0x28')](db[_0x084a('0x29')]['rawAttributes'],function(_0x2ed3cd){return{'name':_0x2ed3cd[_0x084a('0x2a')],'type':_0x2ed3cd['type'][_0x084a('0x2b')]};});_0x2c4149[_0x084a('0x2c')]=_[_0x084a('0x28')](_0x25a2a1,_0x084a('0x27'));_0x2c4149[_0x084a('0x2d')]=_[_0x084a('0x2e')](_0x3b8176[_0x084a('0x2d')]);_0x2c4149[_0x084a('0x2f')]=_[_0x084a('0x30')](_0x2c4149[_0x084a('0x2c')],_0x2c4149[_0x084a('0x2d')]);_0x388062[_0x084a('0x31')]=_[_0x084a('0x30')](_0x2c4149['model'],qs['fields'](_0x3b8176[_0x084a('0x2d')][_0x084a('0x32')]));_0x388062[_0x084a('0x31')]=_0x388062[_0x084a('0x31')][_0x084a('0x33')]?_0x388062['attributes']:_0x2c4149[_0x084a('0x2c')];if(!_0x3b8176[_0x084a('0x2d')][_0x084a('0x34')]('nolimit')){_0x388062[_0x084a('0x1f')]=qs[_0x084a('0x1f')](_0x3b8176[_0x084a('0x2d')]['limit']);_0x388062['offset']=qs['offset'](_0x3b8176[_0x084a('0x2d')][_0x084a('0x1d')]);}_0x388062[_0x084a('0x35')]=qs['sort'](_0x3b8176[_0x084a('0x2d')][_0x084a('0x36')]);_0x388062[_0x084a('0x37')]=qs[_0x084a('0x2f')](_[_0x084a('0x38')](_0x3b8176[_0x084a('0x2d')],_0x2c4149[_0x084a('0x2f')]),_0x25a2a1);if(_0x3b8176[_0x084a('0x2d')][_0x084a('0x39')]){_0x388062[_0x084a('0x37')]=_[_0x084a('0x3a')](_0x388062[_0x084a('0x37')],{'$or':_[_0x084a('0x28')](_0x25a2a1,function(_0x1659d3){if(_0x1659d3[_0x084a('0x3b')]!=='VIRTUAL'){var _0x220f88={};_0x220f88[_0x1659d3[_0x084a('0x27')]]={'$like':'%'+_0x3b8176[_0x084a('0x2d')][_0x084a('0x39')]+'%'};return _0x220f88;}})});}_0x388062=_[_0x084a('0x3a')]({},_0x388062,_0x3b8176[_0x084a('0x3c')]);var _0xa7b652={'where':_0x388062[_0x084a('0x37')]};return db[_0x084a('0x29')]['count'](_0xa7b652)[_0x084a('0x26')](function(_0x3d1aa5){_0x3be7a6[_0x084a('0x1e')]=_0x3d1aa5;if(_0x3b8176[_0x084a('0x2d')][_0x084a('0x3d')]){_0x388062[_0x084a('0x3e')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0x084a('0x3f')](_0x388062);})[_0x084a('0x26')](function(_0x55c5f4){_0x3be7a6[_0x084a('0x40')]=_0x55c5f4;return _0x3be7a6;})[_0x084a('0x26')](respondWithFilteredResult(_0x4651e6,_0x388062))[_0x084a('0x41')](handleError(_0x4651e6,null));};exports['show']=function(_0x1aa4ea,_0xba1081){var _0x4fe9c2={'raw':!![],'where':{'id':_0x1aa4ea[_0x084a('0x42')]['id']}},_0x3e2b92={};_0x3e2b92['model']=_['keys'](db[_0x084a('0x29')][_0x084a('0x43')]);_0x3e2b92[_0x084a('0x2d')]=_[_0x084a('0x2e')](_0x1aa4ea[_0x084a('0x2d')]);_0x3e2b92[_0x084a('0x2f')]=_[_0x084a('0x30')](_0x3e2b92[_0x084a('0x2c')],_0x3e2b92[_0x084a('0x2d')]);_0x4fe9c2[_0x084a('0x31')]=_[_0x084a('0x30')](_0x3e2b92['model'],qs['fields'](_0x1aa4ea[_0x084a('0x2d')][_0x084a('0x32')]));_0x4fe9c2[_0x084a('0x31')]=_0x4fe9c2['attributes'][_0x084a('0x33')]?_0x4fe9c2[_0x084a('0x31')]:_0x3e2b92[_0x084a('0x2c')];if(_0x1aa4ea[_0x084a('0x2d')][_0x084a('0x3d')]){_0x4fe9c2['include']=[{'all':!![]}];}_0x4fe9c2=_[_0x084a('0x3a')]({},_0x4fe9c2,_0x1aa4ea['options']);return db[_0x084a('0x29')][_0x084a('0x44')](_0x4fe9c2)[_0x084a('0x26')](handleEntityNotFound(_0xba1081,null))['then'](respondWithResult(_0xba1081,null))['catch'](handleError(_0xba1081,null));};exports[_0x084a('0x45')]=function(_0xef8fc7,_0x505965){return db[_0x084a('0x29')][_0x084a('0x45')](_0xef8fc7[_0x084a('0x46')],{})[_0x084a('0x26')](respondWithResult(_0x505965,0xc9))['catch'](handleError(_0x505965,null));};exports[_0x084a('0x24')]=function(_0x865368,_0x31677b){if(_0x865368[_0x084a('0x46')]['id']){delete _0x865368['body']['id'];}return db[_0x084a('0x29')][_0x084a('0x44')]({'where':{'id':_0x865368[_0x084a('0x42')]['id']}})[_0x084a('0x26')](handleEntityNotFound(_0x31677b,null))['then'](saveUpdates(_0x865368['body'],null))[_0x084a('0x26')](respondWithResult(_0x31677b,null))[_0x084a('0x41')](handleError(_0x31677b,null));};exports[_0x084a('0x25')]=function(_0x264f09,_0xf936e){return db[_0x084a('0x29')][_0x084a('0x44')]({'where':{'id':_0x264f09[_0x084a('0x42')]['id']}})[_0x084a('0x26')](handleEntityNotFound(_0xf936e,null))[_0x084a('0x26')](removeEntity(_0xf936e,null))[_0x084a('0x41')](handleError(_0xf936e,null));};exports[_0x084a('0x47')]=function(_0x4fe1b5,_0xcdd5b){return db[_0x084a('0x29')][_0x084a('0x47')]()[_0x084a('0x26')](respondWithResult(_0xcdd5b,null))[_0x084a('0x41')](handleError(_0xcdd5b,null));};
\ No newline at end of file
+var _0x96cc=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x51477d,_0x489c34){var _0x16be13=function(_0x2c99bd){while(--_0x2c99bd){_0x51477d['push'](_0x51477d['shift']());}};_0x16be13(++_0x489c34);}(_0x96cc,0x16c));var _0xc96c=function(_0x1ad53c,_0x13ebf8){_0x1ad53c=_0x1ad53c-0x0;var _0x33afe4=_0x96cc[_0x1ad53c];return _0x33afe4;};'use strict';var emlformat=require(_0xc96c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc96c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc96c('0x2'));var moment=require(_0xc96c('0x3'));var BPromise=require(_0xc96c('0x4'));var Mustache=require(_0xc96c('0x5'));var util=require(_0xc96c('0x6'));var path=require(_0xc96c('0x7'));var sox=require(_0xc96c('0x8'));var csv=require(_0xc96c('0x9'));var ejs=require(_0xc96c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc96c('0xb'));var squel=require(_0xc96c('0xc'));var crypto=require(_0xc96c('0xd'));var jsforce=require(_0xc96c('0xe'));var deskjs=require(_0xc96c('0xf'));var toCsv=require(_0xc96c('0x9'));var querystring=require(_0xc96c('0x10'));var Papa=require('papaparse');var Redis=require(_0xc96c('0x11'));var authService=require(_0xc96c('0x12'));var qs=require(_0xc96c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc96c('0x14'));var logger=require('../../config/logger')(_0xc96c('0x15'));var utils=require('../../config/utils');var config=require(_0xc96c('0x16'));var licenseUtil=require(_0xc96c('0x17'));var db=require(_0xc96c('0x18'))['db'];function respondWithStatusCode(_0x246a95,_0x5f27f3){_0x5f27f3=_0x5f27f3||0xcc;return function(_0x3fe3d5){if(_0x3fe3d5){return _0x246a95[_0xc96c('0x19')](_0x5f27f3);}return _0x246a95[_0xc96c('0x1a')](_0x5f27f3)[_0xc96c('0x1b')]();};}function respondWithResult(_0x48de8d,_0x35da94){_0x35da94=_0x35da94||0xc8;return function(_0xbed0c9){if(_0xbed0c9){return _0x48de8d[_0xc96c('0x1a')](_0x35da94)[_0xc96c('0x1c')](_0xbed0c9);}};}function respondWithFilteredResult(_0x377dbc,_0x46455a){return function(_0x1765d9){if(_0x1765d9){var _0x23e357=typeof _0x46455a[_0xc96c('0x1d')]===_0xc96c('0x1e')&&typeof _0x46455a[_0xc96c('0x1f')]==='undefined';var _0x509376=_0x1765d9[_0xc96c('0x20')];var _0x99c402=_0x23e357?0x0:_0x46455a[_0xc96c('0x1d')];var _0x2ae19a=_0x23e357?_0x1765d9['count']:_0x46455a[_0xc96c('0x1d')]+_0x46455a[_0xc96c('0x1f')];var _0x2a361c;if(_0x2ae19a>=_0x509376){_0x2ae19a=_0x509376;_0x2a361c=0xc8;}else{_0x2a361c=0xce;}_0x377dbc[_0xc96c('0x1a')](_0x2a361c);return _0x377dbc[_0xc96c('0x21')](_0xc96c('0x22'),_0x99c402+'-'+_0x2ae19a+'/'+_0x509376)[_0xc96c('0x1c')](_0x1765d9);}return null;};}function patchUpdates(_0x41daba){return function(_0x28d762){try{jsonpatch[_0xc96c('0x23')](_0x28d762,_0x41daba,!![]);}catch(_0x2bb397){return BPromise[_0xc96c('0x24')](_0x2bb397);}return _0x28d762[_0xc96c('0x25')]();};}function saveUpdates(_0x45edee,_0x325c54){return function(_0x3b5c6c){if(_0x3b5c6c){return _0x3b5c6c[_0xc96c('0x26')](_0x45edee)['then'](function(_0xd63951){return _0xd63951;});}return null;};}function removeEntity(_0x4be783,_0x4456bf){return function(_0x10ae21){if(_0x10ae21){return _0x10ae21[_0xc96c('0x27')]()[_0xc96c('0x28')](function(){_0x4be783[_0xc96c('0x1a')](0xcc)[_0xc96c('0x1b')]();});}};}function handleEntityNotFound(_0x1a77df,_0x14f171){return function(_0x50fc07){if(!_0x50fc07){_0x1a77df[_0xc96c('0x19')](0x194);}return _0x50fc07;};}function handleError(_0x117f17,_0x3f87cc){_0x3f87cc=_0x3f87cc||0x1f4;return function(_0x294fee){logger['error'](_0x294fee['stack']);if(_0x294fee[_0xc96c('0x29')]){delete _0x294fee[_0xc96c('0x29')];}_0x117f17[_0xc96c('0x1a')](_0x3f87cc)[_0xc96c('0x2a')](_0x294fee);};}exports[_0xc96c('0x2b')]=function(_0x5e1727,_0x427cb2){var _0x1c911b={},_0xa0efbc={},_0x27925f={'count':0x0,'rows':[]};var _0x325cda=_[_0xc96c('0x2c')](db[_0xc96c('0x2d')][_0xc96c('0x2e')],function(_0x556108){return{'name':_0x556108[_0xc96c('0x2f')],'type':_0x556108['type'][_0xc96c('0x30')]};});_0xa0efbc[_0xc96c('0x31')]=_[_0xc96c('0x2c')](_0x325cda,'name');_0xa0efbc[_0xc96c('0x32')]=_[_0xc96c('0x33')](_0x5e1727[_0xc96c('0x32')]);_0xa0efbc[_0xc96c('0x34')]=_['intersection'](_0xa0efbc['model'],_0xa0efbc[_0xc96c('0x32')]);_0x1c911b[_0xc96c('0x35')]=_[_0xc96c('0x36')](_0xa0efbc['model'],qs[_0xc96c('0x37')](_0x5e1727[_0xc96c('0x32')][_0xc96c('0x37')]));_0x1c911b[_0xc96c('0x35')]=_0x1c911b['attributes'][_0xc96c('0x38')]?_0x1c911b[_0xc96c('0x35')]:_0xa0efbc['model'];if(!_0x5e1727[_0xc96c('0x32')][_0xc96c('0x39')](_0xc96c('0x3a'))){_0x1c911b[_0xc96c('0x1f')]=qs[_0xc96c('0x1f')](_0x5e1727[_0xc96c('0x32')]['limit']);_0x1c911b[_0xc96c('0x1d')]=qs[_0xc96c('0x1d')](_0x5e1727[_0xc96c('0x32')][_0xc96c('0x1d')]);}_0x1c911b[_0xc96c('0x3b')]=qs[_0xc96c('0x3c')](_0x5e1727['query']['sort']);_0x1c911b[_0xc96c('0x3d')]=qs[_0xc96c('0x34')](_['pick'](_0x5e1727['query'],_0xa0efbc[_0xc96c('0x34')]),_0x325cda);if(_0x5e1727[_0xc96c('0x32')][_0xc96c('0x3e')]){_0x1c911b[_0xc96c('0x3d')]=_[_0xc96c('0x3f')](_0x1c911b[_0xc96c('0x3d')],{'$or':_[_0xc96c('0x2c')](_0x325cda,function(_0x257750){if(_0x257750[_0xc96c('0x40')]!==_0xc96c('0x41')){var _0x1b68e6={};_0x1b68e6[_0x257750['name']]={'$like':'%'+_0x5e1727[_0xc96c('0x32')][_0xc96c('0x3e')]+'%'};return _0x1b68e6;}})});}_0x1c911b=_[_0xc96c('0x3f')]({},_0x1c911b,_0x5e1727[_0xc96c('0x42')]);var _0x4eb180={'where':_0x1c911b[_0xc96c('0x3d')]};return db[_0xc96c('0x2d')][_0xc96c('0x20')](_0x4eb180)['then'](function(_0x510252){_0x27925f[_0xc96c('0x20')]=_0x510252;if(_0x5e1727[_0xc96c('0x32')][_0xc96c('0x43')]){_0x1c911b['include']=[{'all':!![]}];}return db[_0xc96c('0x2d')][_0xc96c('0x44')](_0x1c911b);})[_0xc96c('0x28')](function(_0x2a8ea7){_0x27925f[_0xc96c('0x45')]=_0x2a8ea7;return _0x27925f;})[_0xc96c('0x28')](respondWithFilteredResult(_0x427cb2,_0x1c911b))[_0xc96c('0x46')](handleError(_0x427cb2,null));};exports[_0xc96c('0x47')]=function(_0x25df41,_0x4d5a1b){var _0x4c3088={'raw':!![],'where':{'id':_0x25df41[_0xc96c('0x48')]['id']}},_0x30b3ac={};_0x30b3ac[_0xc96c('0x31')]=_[_0xc96c('0x33')](db['WhatsappQueueReport']['rawAttributes']);_0x30b3ac[_0xc96c('0x32')]=_[_0xc96c('0x33')](_0x25df41[_0xc96c('0x32')]);_0x30b3ac[_0xc96c('0x34')]=_[_0xc96c('0x36')](_0x30b3ac[_0xc96c('0x31')],_0x30b3ac[_0xc96c('0x32')]);_0x4c3088['attributes']=_[_0xc96c('0x36')](_0x30b3ac[_0xc96c('0x31')],qs[_0xc96c('0x37')](_0x25df41[_0xc96c('0x32')]['fields']));_0x4c3088['attributes']=_0x4c3088[_0xc96c('0x35')][_0xc96c('0x38')]?_0x4c3088[_0xc96c('0x35')]:_0x30b3ac[_0xc96c('0x31')];if(_0x25df41[_0xc96c('0x32')][_0xc96c('0x43')]){_0x4c3088[_0xc96c('0x49')]=[{'all':!![]}];}_0x4c3088=_[_0xc96c('0x3f')]({},_0x4c3088,_0x25df41[_0xc96c('0x42')]);return db[_0xc96c('0x2d')][_0xc96c('0x4a')](_0x4c3088)[_0xc96c('0x28')](handleEntityNotFound(_0x4d5a1b,null))[_0xc96c('0x28')](respondWithResult(_0x4d5a1b,null))['catch'](handleError(_0x4d5a1b,null));};exports[_0xc96c('0x4b')]=function(_0x2e5045,_0x307d58){return db[_0xc96c('0x2d')]['create'](_0x2e5045[_0xc96c('0x4c')],{})['then'](respondWithResult(_0x307d58,0xc9))[_0xc96c('0x46')](handleError(_0x307d58,null));};exports[_0xc96c('0x26')]=function(_0x565812,_0x2581ae){if(_0x565812[_0xc96c('0x4c')]['id']){delete _0x565812[_0xc96c('0x4c')]['id'];}return db[_0xc96c('0x2d')][_0xc96c('0x4a')]({'where':{'id':_0x565812[_0xc96c('0x48')]['id']}})['then'](handleEntityNotFound(_0x2581ae,null))['then'](saveUpdates(_0x565812['body'],null))[_0xc96c('0x28')](respondWithResult(_0x2581ae,null))['catch'](handleError(_0x2581ae,null));};exports[_0xc96c('0x27')]=function(_0x22b2e3,_0x65a0a7){return db[_0xc96c('0x2d')][_0xc96c('0x4a')]({'where':{'id':_0x22b2e3[_0xc96c('0x48')]['id']}})[_0xc96c('0x28')](handleEntityNotFound(_0x65a0a7,null))[_0xc96c('0x28')](removeEntity(_0x65a0a7,null))[_0xc96c('0x46')](handleError(_0x65a0a7,null));};exports[_0xc96c('0x4d')]=function(_0x573177,_0x3adefb){return db[_0xc96c('0x2d')][_0xc96c('0x4d')]()[_0xc96c('0x28')](respondWithResult(_0x3adefb,null))[_0xc96c('0x46')](handleError(_0x3adefb,null));};
\ No newline at end of file
index edce7f0..b5d8bb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3224=['bluebird','request-promise','rimraf','./whatsappQueueReport.attributes','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x3224,0x1b4));var _0x4322=function(_0x1b51ea,_0x394fd9){_0x1b51ea=_0x1b51ea-0x0;var _0x18bbdc=_0x3224[_0x1b51ea];return _0x18bbdc;};'use strict';var _=require(_0x4322('0x0'));var util=require('util');var logger=require(_0x4322('0x1'))(_0x4322('0x2'));var moment=require(_0x4322('0x3'));var BPromise=require(_0x4322('0x4'));var rp=require(_0x4322('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4322('0x6'));var config=require('../../config/environment');var attributes=require(_0x4322('0x7'));module['exports']=function(_0x4fc921,_0x169690){return _0x4fc921['define'](_0x4322('0x8'),attributes,{'tableName':_0x4322('0x9'),'paranoid':![],'indexes':[{'name':_0x4322('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7309=['api','bluebird','rimraf','../../config/environment','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','util'];(function(_0x1138d0,_0x8df64f){var _0x108a20=function(_0x29fa50){while(--_0x29fa50){_0x1138d0['push'](_0x1138d0['shift']());}};_0x108a20(++_0x8df64f);}(_0x7309,0x185));var _0x9730=function(_0x2c9c67,_0x4c8a85){_0x2c9c67=_0x2c9c67-0x0;var _0x2166c4=_0x7309[_0x2c9c67];return _0x2166c4;};'use strict';var _=require('lodash');var util=require(_0x9730('0x0'));var logger=require('../../config/logger')(_0x9730('0x1'));var moment=require('moment');var BPromise=require(_0x9730('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9730('0x3'));var config=require(_0x9730('0x4'));var attributes=require('./whatsappQueueReport.attributes');module[_0x9730('0x5')]=function(_0x11a889,_0x1925be){return _0x11a889[_0x9730('0x6')](_0x9730('0x7'),attributes,{'tableName':_0x9730('0x8'),'paranoid':![],'indexes':[{'name':_0x9730('0x9'),'fields':[_0x9730('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index aed55ac..61f015e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbb7=['../../mysqldb','../../config/logger','../../config/environment','client','http','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','options','raw','UpdateWhatsappQueueReport','attributes','limit','lodash','moment','ioredis'];(function(_0x164539,_0x4c37a9){var _0x37aa02=function(_0x164b2b){while(--_0x164b2b){_0x164539['push'](_0x164539['shift']());}};_0x37aa02(++_0x4c37a9);}(_0xcbb7,0x1bd));var _0x7cbb=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xcbb7[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x7cbb('0x0'));var util=require('util');var moment=require(_0x7cbb('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7cbb('0x2'));var db=require(_0x7cbb('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7cbb('0x4'))('rpc');var config=require(_0x7cbb('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x7cbb('0x6')][_0x7cbb('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5d77e6,_0x207cfc,_0x1b7b95){return new BPromise(function(_0x2d6b48,_0x511b0c){return client['request'](_0x5d77e6,_0x1b7b95)[_0x7cbb('0x8')](function(_0x4eaa04){logger[_0x7cbb('0x9')](_0x7cbb('0xa'),_0x207cfc,_0x7cbb('0xb'));logger[_0x7cbb('0xc')](_0x7cbb('0xd'),_0x207cfc,'request\x20sent',JSON[_0x7cbb('0xe')](_0x4eaa04));if(_0x4eaa04[_0x7cbb('0xf')]){if(_0x4eaa04[_0x7cbb('0xf')][_0x7cbb('0x10')]===0x1f4){logger['error'](_0x7cbb('0xa'),_0x207cfc,_0x4eaa04[_0x7cbb('0xf')][_0x7cbb('0x11')]);return _0x511b0c(_0x4eaa04[_0x7cbb('0xf')][_0x7cbb('0x11')]);}logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x207cfc,_0x4eaa04[_0x7cbb('0xf')]['message']);return _0x2d6b48(_0x4eaa04[_0x7cbb('0xf')]['message']);}else{logger[_0x7cbb('0x9')]('WhatsappQueueReport,\x20%s,\x20%s',_0x207cfc,'request\x20sent');_0x2d6b48(_0x4eaa04[_0x7cbb('0x12')][_0x7cbb('0x11')]);}})[_0x7cbb('0x13')](function(_0x16a1f9){logger[_0x7cbb('0xf')](_0x7cbb('0xa'),_0x207cfc,_0x16a1f9);_0x511b0c(_0x16a1f9);});});}exports[_0x7cbb('0x14')]=function(_0x17ed92){var _0x558ff8=this;return new Promise(function(_0xa92ed5,_0x5006fa){return db[_0x7cbb('0x15')][_0x7cbb('0x16')](_0x17ed92['body'],{'raw':_0x17ed92['options']?_0x17ed92[_0x7cbb('0x17')][_0x7cbb('0x18')]===undefined?!![]:![]:!![]})[_0x7cbb('0x8')](function(_0x1ea618){logger[_0x7cbb('0x9')](_0x7cbb('0x14'),_0x17ed92);logger[_0x7cbb('0xc')](_0x7cbb('0x14'),_0x17ed92,JSON['stringify'](_0x1ea618));_0xa92ed5(_0x1ea618);})[_0x7cbb('0x13')](function(_0x52b765){logger[_0x7cbb('0xf')](_0x7cbb('0x14'),_0x52b765[_0x7cbb('0x11')],_0x17ed92);_0x5006fa(_0x558ff8['error'](0x1f4,_0x52b765['message']));});});};exports[_0x7cbb('0x19')]=function(_0x2b2ce6){var _0x333a66=this;return new Promise(function(_0x1658b1,_0x4c9eaa){return db[_0x7cbb('0x15')]['update'](_0x2b2ce6['body'],{'raw':_0x2b2ce6[_0x7cbb('0x17')]?_0x2b2ce6[_0x7cbb('0x17')][_0x7cbb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b2ce6[_0x7cbb('0x17')]?_0x2b2ce6[_0x7cbb('0x17')]['where']||null:null,'attributes':_0x2b2ce6['options']?_0x2b2ce6['options'][_0x7cbb('0x1a')]||null:null,'limit':_0x2b2ce6[_0x7cbb('0x17')]?_0x2b2ce6['options'][_0x7cbb('0x1b')]||null:null})[_0x7cbb('0x8')](function(_0x35521f){logger[_0x7cbb('0x9')](_0x7cbb('0x19'),_0x2b2ce6);logger[_0x7cbb('0xc')](_0x7cbb('0x19'),_0x2b2ce6,JSON[_0x7cbb('0xe')](_0x35521f));_0x1658b1(_0x35521f);})[_0x7cbb('0x13')](function(_0x4f4994){logger[_0x7cbb('0xf')]('UpdateWhatsappQueueReport',_0x4f4994[_0x7cbb('0x11')],_0x2b2ce6);_0x4c9eaa(_0x333a66[_0x7cbb('0xf')](0x1f4,_0x4f4994[_0x7cbb('0x11')]));});});};
\ No newline at end of file
+var _0x38e1=['UpdateWhatsappQueueReport','WhatsappQueueReport','update','raw','attributes','limit','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateWhatsappQueueReport','create','body','options','debug'];(function(_0xfb7ee3,_0x6f1f19){var _0x5c061d=function(_0x404867){while(--_0x404867){_0xfb7ee3['push'](_0xfb7ee3['shift']());}};_0x5c061d(++_0x6f1f19);}(_0x38e1,0x114));var _0x138e=function(_0x5a2506,_0x148b50){_0x5a2506=_0x5a2506-0x0;var _0x1f6fb4=_0x38e1[_0x5a2506];return _0x1f6fb4;};'use strict';var _=require(_0x138e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x138e('0x1'));var rs=require(_0x138e('0x2'));var fs=require('fs');var Redis=require(_0x138e('0x3'));var db=require(_0x138e('0x4'))['db'];var utils=require(_0x138e('0x5'));var logger=require('../../config/logger')(_0x138e('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x138e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x17c629,_0x33c6d8,_0x4480fb){return new BPromise(function(_0x286f9a,_0x3bfef0){return client[_0x138e('0x8')](_0x17c629,_0x4480fb)[_0x138e('0x9')](function(_0x4ef908){logger[_0x138e('0xa')](_0x138e('0xb'),_0x33c6d8,'request\x20sent');logger['debug']('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x33c6d8,_0x138e('0xc'),JSON[_0x138e('0xd')](_0x4ef908));if(_0x4ef908[_0x138e('0xe')]){if(_0x4ef908['error'][_0x138e('0xf')]===0x1f4){logger[_0x138e('0xe')](_0x138e('0xb'),_0x33c6d8,_0x4ef908['error'][_0x138e('0x10')]);return _0x3bfef0(_0x4ef908[_0x138e('0xe')][_0x138e('0x10')]);}logger[_0x138e('0xe')](_0x138e('0xb'),_0x33c6d8,_0x4ef908['error'][_0x138e('0x10')]);return _0x286f9a(_0x4ef908[_0x138e('0xe')][_0x138e('0x10')]);}else{logger[_0x138e('0xa')](_0x138e('0xb'),_0x33c6d8,_0x138e('0xc'));_0x286f9a(_0x4ef908[_0x138e('0x11')][_0x138e('0x10')]);}})[_0x138e('0x12')](function(_0x293f93){logger[_0x138e('0xe')](_0x138e('0xb'),_0x33c6d8,_0x293f93);_0x3bfef0(_0x293f93);});});}exports[_0x138e('0x13')]=function(_0x75bbf1){var _0xca6cd2=this;return new Promise(function(_0x53080f,_0x2f9460){return db['WhatsappQueueReport'][_0x138e('0x14')](_0x75bbf1[_0x138e('0x15')],{'raw':_0x75bbf1[_0x138e('0x16')]?_0x75bbf1['options']['raw']===undefined?!![]:![]:!![]})[_0x138e('0x9')](function(_0x57f5ba){logger['info'](_0x138e('0x13'),_0x75bbf1);logger[_0x138e('0x17')](_0x138e('0x13'),_0x75bbf1,JSON['stringify'](_0x57f5ba));_0x53080f(_0x57f5ba);})['catch'](function(_0x1fc220){logger[_0x138e('0xe')](_0x138e('0x13'),_0x1fc220['message'],_0x75bbf1);_0x2f9460(_0xca6cd2['error'](0x1f4,_0x1fc220['message']));});});};exports[_0x138e('0x18')]=function(_0x186b82){var _0x4e3b8b=this;return new Promise(function(_0x73725e,_0x9bc432){return db[_0x138e('0x19')][_0x138e('0x1a')](_0x186b82[_0x138e('0x15')],{'raw':_0x186b82[_0x138e('0x16')]?_0x186b82[_0x138e('0x16')][_0x138e('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x186b82[_0x138e('0x16')]?_0x186b82['options']['where']||null:null,'attributes':_0x186b82['options']?_0x186b82[_0x138e('0x16')][_0x138e('0x1c')]||null:null,'limit':_0x186b82[_0x138e('0x16')]?_0x186b82[_0x138e('0x16')][_0x138e('0x1d')]||null:null})[_0x138e('0x9')](function(_0x3983cc){logger['info'](_0x138e('0x18'),_0x186b82);logger['debug'](_0x138e('0x18'),_0x186b82,JSON[_0x138e('0xd')](_0x3983cc));_0x73725e(_0x3983cc);})[_0x138e('0x12')](function(_0x1528ea){logger[_0x138e('0xe')](_0x138e('0x18'),_0x1528ea['message'],_0x186b82);_0x9bc432(_0x4e3b8b[_0x138e('0xe')](0x1f4,_0x1528ea[_0x138e('0x10')]));});});};
\ No newline at end of file
index f64d403..03b173d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe16d=['destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','index','get','/describe','isAuthenticated','describe','/:id','show','put','delete'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0xe16d,0x1cd));var _0xde16=function(_0x41b010,_0x2b14f9){_0x41b010=_0x41b010-0x0;var _0x18869d=_0xe16d[_0x41b010];return _0x18869d;};'use strict';var multer=require(_0xde16('0x0'));var util=require('util');var path=require(_0xde16('0x1'));var timeout=require(_0xde16('0x2'));var express=require(_0xde16('0x3'));var router=express[_0xde16('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xde16('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./whatsappTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xde16('0x6')]);router[_0xde16('0x7')](_0xde16('0x8'),auth[_0xde16('0x9')](),controller[_0xde16('0xa')]);router[_0xde16('0x7')](_0xde16('0xb'),auth[_0xde16('0x9')](),controller[_0xde16('0xc')]);router['post']('/',auth[_0xde16('0x9')](),controller['create']);router[_0xde16('0xd')]('/:id',auth[_0xde16('0x9')](),controller['update']);router[_0xde16('0xe')](_0xde16('0xb'),auth['isAuthenticated'](),controller[_0xde16('0xf')]);module[_0xde16('0x10')]=router;
\ No newline at end of file
+var _0x32bb=['util','express','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','show','post','create','/:id','update','destroy'];(function(_0x5dd98d,_0x37997c){var _0xa3605b=function(_0x363bf5){while(--_0x363bf5){_0x5dd98d['push'](_0x5dd98d['shift']());}};_0xa3605b(++_0x37997c);}(_0x32bb,0x1b2));var _0xb32b=function(_0x5e8eae,_0x4f81e0){_0x5e8eae=_0x5e8eae-0x0;var _0xdd09cd=_0x32bb[_0x5e8eae];return _0xdd09cd;};'use strict';var multer=require('multer');var util=require(_0xb32b('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb32b('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb32b('0x2'));var config=require(_0xb32b('0x3'));var controller=require('./whatsappTransferReport.controller');router[_0xb32b('0x4')]('/',auth[_0xb32b('0x5')](),controller['index']);router[_0xb32b('0x4')](_0xb32b('0x6'),auth['isAuthenticated'](),controller[_0xb32b('0x7')]);router[_0xb32b('0x4')]('/:id',auth[_0xb32b('0x5')](),controller[_0xb32b('0x8')]);router[_0xb32b('0x9')]('/',auth['isAuthenticated'](),controller[_0xb32b('0xa')]);router['put'](_0xb32b('0xb'),auth[_0xb32b('0x5')](),controller[_0xb32b('0xc')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xb32b('0xd')]);module['exports']=router;
\ No newline at end of file
index c6c1706..3b4d59a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca7=['STRING','account','agent','sequelize','exports'];(function(_0x4a8426,_0x493d17){var _0x4908b1=function(_0xac35ad){while(--_0xac35ad){_0x4a8426['push'](_0x4a8426['shift']());}};_0x4908b1(++_0x493d17);}(_0x4ca7,0x1e3));var _0x74ca=function(_0x3ab1d4,_0x4e7da0){_0x3ab1d4=_0x3ab1d4-0x0;var _0x45b41b=_0x4ca7[_0x3ab1d4];return _0x45b41b;};'use strict';var Sequelize=require(_0x74ca('0x0'));module[_0x74ca('0x1')]={'uniqueid':{'type':Sequelize[_0x74ca('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x74ca('0x3'),_0x74ca('0x4'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x0936=['STRING','ENUM','account','agent','queue','sequelize','exports'];(function(_0x3a4aaf,_0x49339e){var _0x5eecee=function(_0x496ac2){while(--_0x496ac2){_0x3a4aaf['push'](_0x3a4aaf['shift']());}};_0x5eecee(++_0x49339e);}(_0x0936,0xde));var _0x6093=function(_0x2e5c0b,_0x33b67d){_0x2e5c0b=_0x2e5c0b-0x0;var _0x1d8f8b=_0x0936[_0x2e5c0b];return _0x1d8f8b;};'use strict';var Sequelize=require(_0x6093('0x0'));module[_0x6093('0x1')]={'uniqueid':{'type':Sequelize[_0x6093('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x6093('0x3')](_0x6093('0x4'),_0x6093('0x5'),_0x6093('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 8ad5132..c4ea3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c0=['apply','reject','save','update','then','destroy','stack','name','send','index','map','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','options','includeAll','include','WhatsappTransferReport','rows','catch','params','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range'];(function(_0x18a11e,_0x48460e){var _0x2419bb=function(_0x28b74e){while(--_0x28b74e){_0x18a11e['push'](_0x18a11e['shift']());}};_0x2419bb(++_0x48460e);}(_0x37c0,0x18b));var _0x037c=function(_0x41b18b,_0x1a9989){_0x41b18b=_0x41b18b-0x0;var _0x383680=_0x37c0[_0x41b18b];return _0x383680;};'use strict';var emlformat=require(_0x037c('0x0'));var rimraf=require(_0x037c('0x1'));var zipdir=require(_0x037c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x037c('0x3'));var BPromise=require(_0x037c('0x4'));var Mustache=require(_0x037c('0x5'));var util=require(_0x037c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x037c('0x7'));var ejs=require(_0x037c('0x8'));var fs=require('fs');var fs_extra=require(_0x037c('0x9'));var _=require(_0x037c('0xa'));var squel=require(_0x037c('0xb'));var crypto=require(_0x037c('0xc'));var jsforce=require(_0x037c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x037c('0x7'));var querystring=require(_0x037c('0xe'));var Papa=require(_0x037c('0xf'));var Redis=require(_0x037c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x037c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x037c('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x037c('0x13'));var config=require(_0x037c('0x14'));var licenseUtil=require(_0x037c('0x15'));var db=require(_0x037c('0x16'))['db'];function respondWithStatusCode(_0x543a2d,_0x429979){_0x429979=_0x429979||0xcc;return function(_0x42ec9f){if(_0x42ec9f){return _0x543a2d[_0x037c('0x17')](_0x429979);}return _0x543a2d[_0x037c('0x18')](_0x429979)[_0x037c('0x19')]();};}function respondWithResult(_0x84f2d8,_0x488f73){_0x488f73=_0x488f73||0xc8;return function(_0x4f8fad){if(_0x4f8fad){return _0x84f2d8[_0x037c('0x18')](_0x488f73)[_0x037c('0x1a')](_0x4f8fad);}};}function respondWithFilteredResult(_0x20c56e,_0x3cf39e){return function(_0x5030e7){if(_0x5030e7){var _0x454285=typeof _0x3cf39e[_0x037c('0x1b')]===_0x037c('0x1c')&&typeof _0x3cf39e[_0x037c('0x1d')]===_0x037c('0x1c');var _0x2247f3=_0x5030e7['count'];var _0x31066d=_0x454285?0x0:_0x3cf39e['offset'];var _0xcc7c79=_0x454285?_0x5030e7['count']:_0x3cf39e[_0x037c('0x1b')]+_0x3cf39e['limit'];var _0x33e980;if(_0xcc7c79>=_0x2247f3){_0xcc7c79=_0x2247f3;_0x33e980=0xc8;}else{_0x33e980=0xce;}_0x20c56e['status'](_0x33e980);return _0x20c56e['set'](_0x037c('0x1e'),_0x31066d+'-'+_0xcc7c79+'/'+_0x2247f3)[_0x037c('0x1a')](_0x5030e7);}return null;};}function patchUpdates(_0x2c1ed7){return function(_0x4bb6a9){try{jsonpatch[_0x037c('0x1f')](_0x4bb6a9,_0x2c1ed7,!![]);}catch(_0x5a9dc2){return BPromise[_0x037c('0x20')](_0x5a9dc2);}return _0x4bb6a9[_0x037c('0x21')]();};}function saveUpdates(_0xd330a4,_0x58bca3){return function(_0x2940d2){if(_0x2940d2){return _0x2940d2[_0x037c('0x22')](_0xd330a4)[_0x037c('0x23')](function(_0x30b96a){return _0x30b96a;});}return null;};}function removeEntity(_0x5c7804,_0x126027){return function(_0x5a25a3){if(_0x5a25a3){return _0x5a25a3[_0x037c('0x24')]()[_0x037c('0x23')](function(){_0x5c7804['status'](0xcc)[_0x037c('0x19')]();});}};}function handleEntityNotFound(_0x54d85d,_0x32a946){return function(_0x5979a7){if(!_0x5979a7){_0x54d85d[_0x037c('0x17')](0x194);}return _0x5979a7;};}function handleError(_0x5bbc07,_0x51b97d){_0x51b97d=_0x51b97d||0x1f4;return function(_0x527500){logger['error'](_0x527500[_0x037c('0x25')]);if(_0x527500[_0x037c('0x26')]){delete _0x527500[_0x037c('0x26')];}_0x5bbc07[_0x037c('0x18')](_0x51b97d)[_0x037c('0x27')](_0x527500);};}exports[_0x037c('0x28')]=function(_0x2061f9,_0x6c3196){var _0x539697={},_0x5eac89={},_0x44cccc={'count':0x0,'rows':[]};var _0x4d65e3=_[_0x037c('0x29')](db['WhatsappTransferReport']['rawAttributes'],function(_0x5b1f8b){return{'name':_0x5b1f8b[_0x037c('0x2a')],'type':_0x5b1f8b['type'][_0x037c('0x2b')]};});_0x5eac89[_0x037c('0x2c')]=_[_0x037c('0x29')](_0x4d65e3,_0x037c('0x26'));_0x5eac89[_0x037c('0x2d')]=_[_0x037c('0x2e')](_0x2061f9[_0x037c('0x2d')]);_0x5eac89[_0x037c('0x2f')]=_['intersection'](_0x5eac89[_0x037c('0x2c')],_0x5eac89[_0x037c('0x2d')]);_0x539697[_0x037c('0x30')]=_[_0x037c('0x31')](_0x5eac89[_0x037c('0x2c')],qs[_0x037c('0x32')](_0x2061f9[_0x037c('0x2d')]['fields']));_0x539697['attributes']=_0x539697[_0x037c('0x30')][_0x037c('0x33')]?_0x539697[_0x037c('0x30')]:_0x5eac89[_0x037c('0x2c')];if(!_0x2061f9[_0x037c('0x2d')][_0x037c('0x34')](_0x037c('0x35'))){_0x539697['limit']=qs['limit'](_0x2061f9['query'][_0x037c('0x1d')]);_0x539697[_0x037c('0x1b')]=qs['offset'](_0x2061f9[_0x037c('0x2d')]['offset']);}_0x539697[_0x037c('0x36')]=qs[_0x037c('0x37')](_0x2061f9[_0x037c('0x2d')][_0x037c('0x37')]);_0x539697['where']=qs[_0x037c('0x2f')](_[_0x037c('0x38')](_0x2061f9[_0x037c('0x2d')],_0x5eac89[_0x037c('0x2f')]),_0x4d65e3);if(_0x2061f9[_0x037c('0x2d')]['filter']){_0x539697[_0x037c('0x39')]=_['merge'](_0x539697[_0x037c('0x39')],{'$or':_[_0x037c('0x29')](_0x4d65e3,function(_0x57ed98){if(_0x57ed98['type']!=='VIRTUAL'){var _0x3d1c5a={};_0x3d1c5a[_0x57ed98[_0x037c('0x26')]]={'$like':'%'+_0x2061f9[_0x037c('0x2d')]['filter']+'%'};return _0x3d1c5a;}})});}_0x539697=_[_0x037c('0x3a')]({},_0x539697,_0x2061f9[_0x037c('0x3b')]);var _0x1be996={'where':_0x539697[_0x037c('0x39')]};return db['WhatsappTransferReport']['count'](_0x1be996)[_0x037c('0x23')](function(_0x261524){_0x44cccc['count']=_0x261524;if(_0x2061f9[_0x037c('0x2d')][_0x037c('0x3c')]){_0x539697[_0x037c('0x3d')]=[{'all':!![]}];}return db[_0x037c('0x3e')]['findAll'](_0x539697);})['then'](function(_0x2b888c){_0x44cccc[_0x037c('0x3f')]=_0x2b888c;return _0x44cccc;})['then'](respondWithFilteredResult(_0x6c3196,_0x539697))[_0x037c('0x40')](handleError(_0x6c3196,null));};exports['show']=function(_0x459f23,_0x403d46){var _0x520f9e={'raw':!![],'where':{'id':_0x459f23[_0x037c('0x41')]['id']}},_0x3e8c7f={};_0x3e8c7f[_0x037c('0x2c')]=_[_0x037c('0x2e')](db[_0x037c('0x3e')][_0x037c('0x42')]);_0x3e8c7f[_0x037c('0x2d')]=_['keys'](_0x459f23[_0x037c('0x2d')]);_0x3e8c7f[_0x037c('0x2f')]=_[_0x037c('0x31')](_0x3e8c7f[_0x037c('0x2c')],_0x3e8c7f[_0x037c('0x2d')]);_0x520f9e[_0x037c('0x30')]=_[_0x037c('0x31')](_0x3e8c7f[_0x037c('0x2c')],qs[_0x037c('0x32')](_0x459f23[_0x037c('0x2d')][_0x037c('0x32')]));_0x520f9e[_0x037c('0x30')]=_0x520f9e[_0x037c('0x30')]['length']?_0x520f9e[_0x037c('0x30')]:_0x3e8c7f['model'];if(_0x459f23[_0x037c('0x2d')][_0x037c('0x3c')]){_0x520f9e[_0x037c('0x3d')]=[{'all':!![]}];}_0x520f9e=_[_0x037c('0x3a')]({},_0x520f9e,_0x459f23[_0x037c('0x3b')]);return db[_0x037c('0x3e')][_0x037c('0x43')](_0x520f9e)['then'](handleEntityNotFound(_0x403d46,null))[_0x037c('0x23')](respondWithResult(_0x403d46,null))[_0x037c('0x40')](handleError(_0x403d46,null));};exports[_0x037c('0x44')]=function(_0x431961,_0x2cdbff){return db['WhatsappTransferReport'][_0x037c('0x44')](_0x431961[_0x037c('0x45')],{})[_0x037c('0x23')](respondWithResult(_0x2cdbff,0xc9))[_0x037c('0x40')](handleError(_0x2cdbff,null));};exports[_0x037c('0x22')]=function(_0x1d894f,_0x49e213){if(_0x1d894f['body']['id']){delete _0x1d894f[_0x037c('0x45')]['id'];}return db['WhatsappTransferReport']['find']({'where':{'id':_0x1d894f['params']['id']}})[_0x037c('0x23')](handleEntityNotFound(_0x49e213,null))[_0x037c('0x23')](saveUpdates(_0x1d894f['body'],null))['then'](respondWithResult(_0x49e213,null))['catch'](handleError(_0x49e213,null));};exports[_0x037c('0x24')]=function(_0x42e4e1,_0x2bc260){return db['WhatsappTransferReport'][_0x037c('0x43')]({'where':{'id':_0x42e4e1[_0x037c('0x41')]['id']}})[_0x037c('0x23')](handleEntityNotFound(_0x2bc260,null))['then'](removeEntity(_0x2bc260,null))['catch'](handleError(_0x2bc260,null));};exports[_0x037c('0x46')]=function(_0x3de668,_0x2ed35c){return db['WhatsappTransferReport'][_0x037c('0x46')]()[_0x037c('0x23')](respondWithResult(_0x2ed35c,null))[_0x037c('0x40')](handleError(_0x2ed35c,null));};
\ No newline at end of file
+var _0x4bab=['save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','filters','filter','where','merge','type','VIRTUAL','options','WhatsappTransferReport','includeAll','findAll','rows','catch','show','include','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','reject'];(function(_0x49ae20,_0x27a7b7){var _0xda9f07=function(_0xd46d69){while(--_0xd46d69){_0x49ae20['push'](_0x49ae20['shift']());}};_0xda9f07(++_0x27a7b7);}(_0x4bab,0xc8));var _0xb4ba=function(_0x200900,_0x58c997){_0x200900=_0x200900-0x0;var _0x29952c=_0x4bab[_0x200900];return _0x29952c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb4ba('0x0'));var zipdir=require(_0xb4ba('0x1'));var jsonpatch=require(_0xb4ba('0x2'));var rp=require(_0xb4ba('0x3'));var moment=require(_0xb4ba('0x4'));var BPromise=require(_0xb4ba('0x5'));var Mustache=require(_0xb4ba('0x6'));var util=require(_0xb4ba('0x7'));var path=require('path');var sox=require(_0xb4ba('0x8'));var csv=require(_0xb4ba('0x9'));var ejs=require(_0xb4ba('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb4ba('0xb'));var squel=require(_0xb4ba('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb4ba('0x9'));var querystring=require(_0xb4ba('0xd'));var Papa=require(_0xb4ba('0xe'));var Redis=require(_0xb4ba('0xf'));var authService=require(_0xb4ba('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xb4ba('0x11'));var hardwareService=require(_0xb4ba('0x12'));var logger=require(_0xb4ba('0x13'))(_0xb4ba('0x14'));var utils=require(_0xb4ba('0x15'));var config=require(_0xb4ba('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb4ba('0x17'))['db'];function respondWithStatusCode(_0x2ff2ee,_0x5ccd64){_0x5ccd64=_0x5ccd64||0xcc;return function(_0x3d2b37){if(_0x3d2b37){return _0x2ff2ee[_0xb4ba('0x18')](_0x5ccd64);}return _0x2ff2ee[_0xb4ba('0x19')](_0x5ccd64)[_0xb4ba('0x1a')]();};}function respondWithResult(_0x17124b,_0xf59cbd){_0xf59cbd=_0xf59cbd||0xc8;return function(_0x414cf9){if(_0x414cf9){return _0x17124b[_0xb4ba('0x19')](_0xf59cbd)[_0xb4ba('0x1b')](_0x414cf9);}};}function respondWithFilteredResult(_0x3208b8,_0x5efb5a){return function(_0x2fcf29){if(_0x2fcf29){var _0x588028=typeof _0x5efb5a[_0xb4ba('0x1c')]===_0xb4ba('0x1d')&&typeof _0x5efb5a['limit']==='undefined';var _0x52038d=_0x2fcf29[_0xb4ba('0x1e')];var _0x1fea10=_0x588028?0x0:_0x5efb5a[_0xb4ba('0x1c')];var _0x5cfb95=_0x588028?_0x2fcf29[_0xb4ba('0x1e')]:_0x5efb5a[_0xb4ba('0x1c')]+_0x5efb5a['limit'];var _0x241bf8;if(_0x5cfb95>=_0x52038d){_0x5cfb95=_0x52038d;_0x241bf8=0xc8;}else{_0x241bf8=0xce;}_0x3208b8[_0xb4ba('0x19')](_0x241bf8);return _0x3208b8[_0xb4ba('0x1f')]('Content-Range',_0x1fea10+'-'+_0x5cfb95+'/'+_0x52038d)[_0xb4ba('0x1b')](_0x2fcf29);}return null;};}function patchUpdates(_0x2fc858){return function(_0x11db73){try{jsonpatch[_0xb4ba('0x20')](_0x11db73,_0x2fc858,!![]);}catch(_0x59b2cd){return BPromise[_0xb4ba('0x21')](_0x59b2cd);}return _0x11db73[_0xb4ba('0x22')]();};}function saveUpdates(_0x1ee113,_0x30925b){return function(_0x3ec220){if(_0x3ec220){return _0x3ec220[_0xb4ba('0x23')](_0x1ee113)[_0xb4ba('0x24')](function(_0x141cb6){return _0x141cb6;});}return null;};}function removeEntity(_0x5153ac,_0x48269a){return function(_0x53d189){if(_0x53d189){return _0x53d189[_0xb4ba('0x25')]()[_0xb4ba('0x24')](function(){_0x5153ac['status'](0xcc)[_0xb4ba('0x1a')]();});}};}function handleEntityNotFound(_0x15d06e,_0x488a14){return function(_0x4a1e6b){if(!_0x4a1e6b){_0x15d06e[_0xb4ba('0x18')](0x194);}return _0x4a1e6b;};}function handleError(_0x1257e0,_0x5d4509){_0x5d4509=_0x5d4509||0x1f4;return function(_0x224ace){logger[_0xb4ba('0x26')](_0x224ace[_0xb4ba('0x27')]);if(_0x224ace[_0xb4ba('0x28')]){delete _0x224ace['name'];}_0x1257e0['status'](_0x5d4509)[_0xb4ba('0x29')](_0x224ace);};}exports[_0xb4ba('0x2a')]=function(_0x22fe53,_0x329510){var _0x3350dd={},_0x448b37={},_0x6a3ab8={'count':0x0,'rows':[]};var _0x206136=_[_0xb4ba('0x2b')](db['WhatsappTransferReport'][_0xb4ba('0x2c')],function(_0x4a39ab){return{'name':_0x4a39ab[_0xb4ba('0x2d')],'type':_0x4a39ab['type'][_0xb4ba('0x2e')]};});_0x448b37[_0xb4ba('0x2f')]=_['map'](_0x206136,_0xb4ba('0x28'));_0x448b37['query']=_[_0xb4ba('0x30')](_0x22fe53[_0xb4ba('0x31')]);_0x448b37['filters']=_['intersection'](_0x448b37[_0xb4ba('0x2f')],_0x448b37[_0xb4ba('0x31')]);_0x3350dd[_0xb4ba('0x32')]=_[_0xb4ba('0x33')](_0x448b37['model'],qs[_0xb4ba('0x34')](_0x22fe53[_0xb4ba('0x31')][_0xb4ba('0x34')]));_0x3350dd[_0xb4ba('0x32')]=_0x3350dd[_0xb4ba('0x32')][_0xb4ba('0x35')]?_0x3350dd[_0xb4ba('0x32')]:_0x448b37[_0xb4ba('0x2f')];if(!_0x22fe53[_0xb4ba('0x31')][_0xb4ba('0x36')](_0xb4ba('0x37'))){_0x3350dd[_0xb4ba('0x38')]=qs[_0xb4ba('0x38')](_0x22fe53[_0xb4ba('0x31')][_0xb4ba('0x38')]);_0x3350dd['offset']=qs[_0xb4ba('0x1c')](_0x22fe53[_0xb4ba('0x31')][_0xb4ba('0x1c')]);}_0x3350dd[_0xb4ba('0x39')]=qs[_0xb4ba('0x3a')](_0x22fe53[_0xb4ba('0x31')]['sort']);_0x3350dd['where']=qs[_0xb4ba('0x3b')](_['pick'](_0x22fe53['query'],_0x448b37[_0xb4ba('0x3b')]),_0x206136);if(_0x22fe53[_0xb4ba('0x31')][_0xb4ba('0x3c')]){_0x3350dd[_0xb4ba('0x3d')]=_[_0xb4ba('0x3e')](_0x3350dd[_0xb4ba('0x3d')],{'$or':_[_0xb4ba('0x2b')](_0x206136,function(_0x16f35e){if(_0x16f35e[_0xb4ba('0x3f')]!==_0xb4ba('0x40')){var _0x52c3c2={};_0x52c3c2[_0x16f35e[_0xb4ba('0x28')]]={'$like':'%'+_0x22fe53['query'][_0xb4ba('0x3c')]+'%'};return _0x52c3c2;}})});}_0x3350dd=_[_0xb4ba('0x3e')]({},_0x3350dd,_0x22fe53[_0xb4ba('0x41')]);var _0x24a40d={'where':_0x3350dd[_0xb4ba('0x3d')]};return db[_0xb4ba('0x42')][_0xb4ba('0x1e')](_0x24a40d)[_0xb4ba('0x24')](function(_0xc03daf){_0x6a3ab8[_0xb4ba('0x1e')]=_0xc03daf;if(_0x22fe53['query'][_0xb4ba('0x43')]){_0x3350dd['include']=[{'all':!![]}];}return db[_0xb4ba('0x42')][_0xb4ba('0x44')](_0x3350dd);})[_0xb4ba('0x24')](function(_0x49f947){_0x6a3ab8[_0xb4ba('0x45')]=_0x49f947;return _0x6a3ab8;})[_0xb4ba('0x24')](respondWithFilteredResult(_0x329510,_0x3350dd))[_0xb4ba('0x46')](handleError(_0x329510,null));};exports[_0xb4ba('0x47')]=function(_0x44470a,_0x4fad16){var _0x265f99={'raw':!![],'where':{'id':_0x44470a['params']['id']}},_0x44c8c6={};_0x44c8c6[_0xb4ba('0x2f')]=_[_0xb4ba('0x30')](db[_0xb4ba('0x42')][_0xb4ba('0x2c')]);_0x44c8c6[_0xb4ba('0x31')]=_[_0xb4ba('0x30')](_0x44470a[_0xb4ba('0x31')]);_0x44c8c6[_0xb4ba('0x3b')]=_[_0xb4ba('0x33')](_0x44c8c6[_0xb4ba('0x2f')],_0x44c8c6['query']);_0x265f99[_0xb4ba('0x32')]=_['intersection'](_0x44c8c6[_0xb4ba('0x2f')],qs[_0xb4ba('0x34')](_0x44470a[_0xb4ba('0x31')]['fields']));_0x265f99[_0xb4ba('0x32')]=_0x265f99['attributes'][_0xb4ba('0x35')]?_0x265f99[_0xb4ba('0x32')]:_0x44c8c6[_0xb4ba('0x2f')];if(_0x44470a[_0xb4ba('0x31')][_0xb4ba('0x43')]){_0x265f99[_0xb4ba('0x48')]=[{'all':!![]}];}_0x265f99=_[_0xb4ba('0x3e')]({},_0x265f99,_0x44470a[_0xb4ba('0x41')]);return db[_0xb4ba('0x42')][_0xb4ba('0x49')](_0x265f99)[_0xb4ba('0x24')](handleEntityNotFound(_0x4fad16,null))[_0xb4ba('0x24')](respondWithResult(_0x4fad16,null))['catch'](handleError(_0x4fad16,null));};exports[_0xb4ba('0x4a')]=function(_0x481321,_0x294c82){return db['WhatsappTransferReport'][_0xb4ba('0x4a')](_0x481321[_0xb4ba('0x4b')],{})[_0xb4ba('0x24')](respondWithResult(_0x294c82,0xc9))[_0xb4ba('0x46')](handleError(_0x294c82,null));};exports[_0xb4ba('0x23')]=function(_0x52d253,_0x5e1a0b){if(_0x52d253[_0xb4ba('0x4b')]['id']){delete _0x52d253['body']['id'];}return db[_0xb4ba('0x42')]['find']({'where':{'id':_0x52d253[_0xb4ba('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5e1a0b,null))[_0xb4ba('0x24')](saveUpdates(_0x52d253['body'],null))[_0xb4ba('0x24')](respondWithResult(_0x5e1a0b,null))['catch'](handleError(_0x5e1a0b,null));};exports[_0xb4ba('0x25')]=function(_0x300ec5,_0x2db964){return db[_0xb4ba('0x42')][_0xb4ba('0x49')]({'where':{'id':_0x300ec5['params']['id']}})['then'](handleEntityNotFound(_0x2db964,null))[_0xb4ba('0x24')](removeEntity(_0x2db964,null))[_0xb4ba('0x46')](handleError(_0x2db964,null));};exports[_0xb4ba('0x4d')]=function(_0x52415d,_0x8eefa0){return db[_0xb4ba('0x42')][_0xb4ba('0x4d')]()[_0xb4ba('0x24')](respondWithResult(_0x8eefa0,null))[_0xb4ba('0x46')](handleError(_0x8eefa0,null));};
\ No newline at end of file
index a043ffb..4c81146 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca44=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappTransferReport.attributes','define','uniqueid','util','../../config/logger'];(function(_0xadb070,_0x47edd4){var _0x5f4f5a=function(_0x5ba3a7){while(--_0x5ba3a7){_0xadb070['push'](_0xadb070['shift']());}};_0x5f4f5a(++_0x47edd4);}(_0xca44,0x106));var _0x4ca4=function(_0x400fc3,_0x49c2bc){_0x400fc3=_0x400fc3-0x0;var _0x3fb3f4=_0xca44[_0x400fc3];return _0x3fb3f4;};'use strict';var _=require('lodash');var util=require(_0x4ca4('0x0'));var logger=require(_0x4ca4('0x1'))(_0x4ca4('0x2'));var moment=require(_0x4ca4('0x3'));var BPromise=require(_0x4ca4('0x4'));var rp=require(_0x4ca4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4ca4('0x6'));var config=require(_0x4ca4('0x7'));var attributes=require(_0x4ca4('0x8'));module['exports']=function(_0x31972a,_0x5e26d6){return _0x31972a[_0x4ca4('0x9')]('WhatsappTransferReport',attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0x4ca4('0xa'),'fields':[_0x4ca4('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc770=['bluebird','request-promise','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','moment'];(function(_0x2b529b,_0x337af4){var _0x49bb0b=function(_0x57c04b){while(--_0x57c04b){_0x2b529b['push'](_0x2b529b['shift']());}};_0x49bb0b(++_0x337af4);}(_0xc770,0x19d));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 logger=require('../../config/logger')('api');var moment=require(_0x0c77('0x2'));var BPromise=require(_0x0c77('0x3'));var rp=require(_0x0c77('0x4'));var fs=require('fs');var path=require(_0x0c77('0x5'));var rimraf=require(_0x0c77('0x6'));var config=require(_0x0c77('0x7'));var attributes=require(_0x0c77('0x8'));module[_0x0c77('0x9')]=function(_0x101dca,_0x2a2b0f){return _0x101dca['define'](_0x0c77('0xa'),attributes,{'tableName':_0x0c77('0xb'),'paranoid':![],'indexes':[{'name':_0x0c77('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index b3a2df1..b048ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f5=['message','result','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappTransferReport,\x20%s,\x20%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x13f5,0x1d0));var _0x513f=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x13f5[_0x4565bf];return _0x5610ba;};'use strict';var _=require('lodash');var util=require(_0x513f('0x0'));var moment=require(_0x513f('0x1'));var BPromise=require(_0x513f('0x2'));var rs=require(_0x513f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x513f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x513f('0x5'))(_0x513f('0x6'));var config=require(_0x513f('0x7'));var jayson=require(_0x513f('0x8'));var client=jayson[_0x513f('0x9')][_0x513f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x328e02,_0x35270a,_0x571a9f){return new BPromise(function(_0xc2f468,_0x15272c){return client[_0x513f('0xb')](_0x328e02,_0x571a9f)['then'](function(_0x48893f){logger[_0x513f('0xc')]('WhatsappTransferReport,\x20%s,\x20%s',_0x35270a,'request\x20sent');logger[_0x513f('0xd')](_0x513f('0xe'),_0x35270a,_0x513f('0xf'),JSON[_0x513f('0x10')](_0x48893f));if(_0x48893f[_0x513f('0x11')]){if(_0x48893f[_0x513f('0x11')][_0x513f('0x12')]===0x1f4){logger[_0x513f('0x11')](_0x513f('0x13'),_0x35270a,_0x48893f[_0x513f('0x11')]['message']);return _0x15272c(_0x48893f['error'][_0x513f('0x14')]);}logger[_0x513f('0x11')](_0x513f('0x13'),_0x35270a,_0x48893f[_0x513f('0x11')][_0x513f('0x14')]);return _0xc2f468(_0x48893f[_0x513f('0x11')]['message']);}else{logger['info']('WhatsappTransferReport,\x20%s,\x20%s',_0x35270a,'request\x20sent');_0xc2f468(_0x48893f[_0x513f('0x15')][_0x513f('0x14')]);}})['catch'](function(_0x28c740){logger[_0x513f('0x11')](_0x513f('0x13'),_0x35270a,_0x28c740);_0x15272c(_0x28c740);});});}
\ No newline at end of file
+var _0x3ea3=['../../config/utils','../../config/logger','client','http','request','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x40d601,_0x1ae3e6){var _0x2b9ad6=function(_0x5f053c){while(--_0x5f053c){_0x40d601['push'](_0x40d601['shift']());}};_0x2b9ad6(++_0x1ae3e6);}(_0x3ea3,0x175));var _0x33ea=function(_0x3cbc20,_0x4a37e2){_0x3cbc20=_0x3cbc20-0x0;var _0x43c527=_0x3ea3[_0x3cbc20];return _0x43c527;};'use strict';var _=require(_0x33ea('0x0'));var util=require(_0x33ea('0x1'));var moment=require(_0x33ea('0x2'));var BPromise=require(_0x33ea('0x3'));var rs=require(_0x33ea('0x4'));var fs=require('fs');var Redis=require(_0x33ea('0x5'));var db=require(_0x33ea('0x6'))['db'];var utils=require(_0x33ea('0x7'));var logger=require(_0x33ea('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x33ea('0x9')][_0x33ea('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x157679,_0x4da21e,_0x3858df){return new BPromise(function(_0x5c8b0f,_0x1e7264){return client[_0x33ea('0xb')](_0x157679,_0x3858df)['then'](function(_0x25f8bb){logger[_0x33ea('0xc')](_0x33ea('0xd'),_0x4da21e,_0x33ea('0xe'));logger[_0x33ea('0xf')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x4da21e,'request\x20sent',JSON['stringify'](_0x25f8bb));if(_0x25f8bb['error']){if(_0x25f8bb[_0x33ea('0x10')]['code']===0x1f4){logger[_0x33ea('0x10')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4da21e,_0x25f8bb[_0x33ea('0x10')]['message']);return _0x1e7264(_0x25f8bb[_0x33ea('0x10')][_0x33ea('0x11')]);}logger[_0x33ea('0x10')](_0x33ea('0xd'),_0x4da21e,_0x25f8bb[_0x33ea('0x10')][_0x33ea('0x11')]);return _0x5c8b0f(_0x25f8bb[_0x33ea('0x10')][_0x33ea('0x11')]);}else{logger[_0x33ea('0xc')](_0x33ea('0xd'),_0x4da21e,_0x33ea('0xe'));_0x5c8b0f(_0x25f8bb[_0x33ea('0x12')][_0x33ea('0x11')]);}})['catch'](function(_0x20fc57){logger[_0x33ea('0x10')](_0x33ea('0xd'),_0x4da21e,_0x20fc57);_0x1e7264(_0x20fc57);});});}
\ No newline at end of file
index d612f74..739a75c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8098=['number','length','map','name','Online\x20apps:','join','Offline\x20apps:','status','online','None','log','App\x20Ready!','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','then','seedDB','default','listen','info','start','filter','exitCode'];(function(_0x5e2f1e,_0x480e76){var _0x234def=function(_0x54e7b4){while(--_0x54e7b4){_0x5e2f1e['push'](_0x5e2f1e['shift']());}};_0x234def(++_0x480e76);}(_0x8098,0x1ba));var _0x8809=function(_0x199673,_0x196667){_0x199673=_0x199673-0x0;var _0x20ecd4=_0x8098[_0x199673];return _0x20ecd4;};'use strict';var _=require('lodash');var db=require('./mysqldb')['db'];var seedDb=require(_0x8809('0x0'));var checkLicense=require(_0x8809('0x1'));var rpc=require(_0x8809('0x2'));var config=require(_0x8809('0x3'));var logger=require(_0x8809('0x4'))('app');var pm2=require(_0x8809('0x5'));var pm2Config=require(_0x8809('0x6'));var schedule=require(_0x8809('0x7'));var chat=require(_0x8809('0x8'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x8809('0x9'));var provider=require(_0x8809('0xa'));function main(){return db['sequelize'][_0x8809('0xb')]()[_0x8809('0xc')](function(){if(config[_0x8809('0xd')]){return seedDb[_0x8809('0xe')]();}})[_0x8809('0xc')](function(){return checkLicense[_0x8809('0xe')]();})[_0x8809('0xc')](function(){return rpc[_0x8809('0xf')]();})[_0x8809('0xc')](function(_0x1d0338){logger[_0x8809('0x10')](_0x1d0338);return chat[_0x8809('0x11')]();})[_0x8809('0xc')](function(){return whatsapp[_0x8809('0x11')]();})[_0x8809('0xc')](function(){return schedule[_0x8809('0x11')]();})['then'](function(){return transcribe[_0x8809('0x11')]();})[_0x8809('0xc')](function(){return provider['start']();})[_0x8809('0xc')](function(_0x388b82){logger['info'](_0x388b82);return pm2['start'](pm2Config);})[_0x8809('0xc')](function(_0x2e4279){var _0x1c438f=_0x2e4279[_0x8809('0x12')](function(_0x131716){return typeof _0x131716[_0x8809('0x13')]===_0x8809('0x14')&&_0x131716['exitCode']>=0x0;});if(_0x1c438f[_0x8809('0x15')]>0x0){throw new Error(_0x1c438f[_0x8809('0x15')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_[_0x8809('0x16')](_0x1c438f,function(_0x369d58){return'\x22'+_0x369d58['pm2_env'][_0x8809('0x17')]+'\x22';}));}logger[_0x8809('0x10')](_0x8809('0x18'),_[_0x8809('0x16')](_[_0x8809('0x12')](_0x2e4279,{'status':'online'}),'name')[_0x8809('0x19')]());logger[_0x8809('0x10')](_0x8809('0x1a'),_[_0x8809('0x16')](_[_0x8809('0x12')](_0x2e4279,function(_0x91de1e){return _0x91de1e[_0x8809('0x1b')]!==_0x8809('0x1c');}),_0x8809('0x17'))[_0x8809('0x19')]()||_0x8809('0x1d'));console[_0x8809('0x1e')](_0x8809('0x1f'));})['catch'](function(_0x59e99a){console[_0x8809('0x1e')](_0x8809('0x20'),_0x59e99a);logger['error']('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x59e99a);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0xfd6e=['Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./config/seedDB','./rpc','./config/environment','./config/pm2/config','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','default','then','listen','info','start','filter','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','Online\x20apps:','online','Offline\x20apps:','status','join','log','App\x20Ready!','catch'];(function(_0x3e7554,_0x54396f){var _0x13ceb4=function(_0x58b4d4){while(--_0x58b4d4){_0x3e7554['push'](_0x3e7554['shift']());}};_0x13ceb4(++_0x54396f);}(_0xfd6e,0x16e));var _0xefd6=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xfd6e[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xefd6('0x0'));var db=require('./mysqldb')['db'];var seedDb=require(_0xefd6('0x1'));var checkLicense=require('./config/license');var rpc=require(_0xefd6('0x2'));var config=require(_0xefd6('0x3'));var logger=require('./config/logger')('app');var pm2=require('./config/pm2');var pm2Config=require(_0xefd6('0x4'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0xefd6('0x5'));var transcribe=require(_0xefd6('0x6'));var provider=require(_0xefd6('0x7'));function main(){return db[_0xefd6('0x8')][_0xefd6('0x9')]()['then'](function(){if(config['seedDB']){return seedDb[_0xefd6('0xa')]();}})[_0xefd6('0xb')](function(){return checkLicense[_0xefd6('0xa')]();})['then'](function(){return rpc[_0xefd6('0xc')]();})[_0xefd6('0xb')](function(_0x10fe07){logger[_0xefd6('0xd')](_0x10fe07);return chat['start']();})[_0xefd6('0xb')](function(){return whatsapp[_0xefd6('0xe')]();})[_0xefd6('0xb')](function(){return schedule[_0xefd6('0xe')]();})[_0xefd6('0xb')](function(){return transcribe[_0xefd6('0xe')]();})[_0xefd6('0xb')](function(){return provider[_0xefd6('0xe')]();})['then'](function(_0x265b8a){logger[_0xefd6('0xd')](_0x265b8a);return pm2[_0xefd6('0xe')](pm2Config);})[_0xefd6('0xb')](function(_0x1a8cc9){var _0x4bb43c=_0x1a8cc9[_0xefd6('0xf')](function(_0x4be0f8){return typeof _0x4be0f8[_0xefd6('0x10')]==='number'&&_0x4be0f8[_0xefd6('0x10')]>=0x0;});if(_0x4bb43c[_0xefd6('0x11')]>0x0){throw new Error(_0x4bb43c['length']+_0xefd6('0x12')+_[_0xefd6('0x13')](_0x4bb43c,function(_0x41e998){return'\x22'+_0x41e998[_0xefd6('0x14')][_0xefd6('0x15')]+'\x22';}));}logger[_0xefd6('0xd')](_0xefd6('0x16'),_[_0xefd6('0x13')](_[_0xefd6('0xf')](_0x1a8cc9,{'status':_0xefd6('0x17')}),_0xefd6('0x15'))['join']());logger[_0xefd6('0xd')](_0xefd6('0x18'),_[_0xefd6('0x13')](_[_0xefd6('0xf')](_0x1a8cc9,function(_0x122009){return _0x122009[_0xefd6('0x19')]!=='online';}),_0xefd6('0x15'))[_0xefd6('0x1a')]()||'None');console[_0xefd6('0x1b')](_0xefd6('0x1c'));})[_0xefd6('0x1d')](function(_0x57b184){console['log'](_0xefd6('0x1e'),_0x57b184);logger[_0xefd6('0x1f')](_0xefd6('0x20'),_0x57b184);process['exit'](0x1);});}main();
\ No newline at end of file
index 8213b80..41b1528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['Setting','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','catch','User\x20object\x20not\x20found.','update','isWebrtcLicence','getLicense','webrtc','Forbidden','isMiddleware','signToken','setTokenCookie','cookie','motion.token','redirect','/dashboards/general','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','Sequelize','updatePasswordsHistory','length','splice','unshift','encryptString','join','sign','secret','session','options','promisify','verify','randomBytes','toString','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','secrets','role','fullname','internal','email','permissions','md5secret','voicePause','chatPause','faxPause','smsPause','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','findOne','params','closed','disposition','then','status','unmanaged','Unmanaged.','Forbidden.','headers','authorization','startsWith','Basic','User','authenticate','pass','json','Wrong\x20credentials.','Unknown\x20authorization\x20format','query','apikey','getUuid','find','sub'];(function(_0x14e9f0,_0x287f90){var _0xa63f7e=function(_0x4829d6){while(--_0x4829d6){_0x14e9f0['push'](_0x14e9f0['shift']());}};_0xa63f7e(++_0x287f90);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x4c9915,_0x406b1a){_0x4c9915=_0x4c9915-0x0;var _0x473218=_0x4cf8[_0x4c9915];return _0x473218;};'use strict';var db=require(_0x84cf('0x0'))['db'];var config=require(_0x84cf('0x1'));var hardwareConf=require(_0x84cf('0x2'));var licenseUtil=require(_0x84cf('0x3'));var encryptor=require(_0x84cf('0x4'));var _=require(_0x84cf('0x5'));var jwt=require(_0x84cf('0x6'));var expressJwt=require(_0x84cf('0x7'));var compose=require(_0x84cf('0x8'));var basicAuth=require(_0x84cf('0x9'));var crypto=require(_0x84cf('0xa'));var BPromise=require(_0x84cf('0xb'));var util=require('util');var moment=require('moment');var validateJwt=expressJwt({'secret':config[_0x84cf('0xc')]['session']});var userAttributes=['id',_0x84cf('0xd'),_0x84cf('0xe'),'name',_0x84cf('0xf'),_0x84cf('0x10'),'userpic',_0x84cf('0x11'),_0x84cf('0x12'),_0x84cf('0x13'),_0x84cf('0x14'),'mailPause',_0x84cf('0x15'),_0x84cf('0x16'),'openchannelPause','pauseType',_0x84cf('0x17'),_0x84cf('0x18'),_0x84cf('0x19'),_0x84cf('0x1a'),_0x84cf('0x1b'),_0x84cf('0x1c'),_0x84cf('0x1d'),_0x84cf('0x1e'),_0x84cf('0x1f'),_0x84cf('0x20'),_0x84cf('0x21'),_0x84cf('0x22'),_0x84cf('0x23'),_0x84cf('0x24'),_0x84cf('0x25'),_0x84cf('0x26'),_0x84cf('0x27'),_0x84cf('0x28'),_0x84cf('0x29'),'userProfileId',_0x84cf('0x2a'),_0x84cf('0x2b'),_0x84cf('0x2c'),_0x84cf('0x2d'),_0x84cf('0x2e'),_0x84cf('0x2f'),_0x84cf('0x30'),'selectRecallMeCampaign','chatAutoanswer',_0x84cf('0x31'),_0x84cf('0x32'),_0x84cf('0x33'),_0x84cf('0x34'),_0x84cf('0x35'),'openchannelAutoanswer',_0x84cf('0x36'),_0x84cf('0x37'),_0x84cf('0x38'),_0x84cf('0x39'),_0x84cf('0x3a'),'messengerSoundNotification'];exports[_0x84cf('0x3b')]=function(){return this[_0x84cf('0x3c')](!![])[_0x84cf('0x3d')](function(_0x23e1e7,_0x3e5e94,_0x29e9e1){if(_0x23e1e7[_0x84cf('0x3e')]){_0x29e9e1();}else{return db['ChatInteraction'][_0x84cf('0x3f')]({'where':{'id':_0x23e1e7[_0x84cf('0x40')]['id']},'attributes':['id',_0x84cf('0x41'),_0x84cf('0x42')],'raw':!![]})[_0x84cf('0x43')](function(_0x44d4bf){if(_0x44d4bf&&_0x44d4bf[_0x84cf('0x41')]){return _0x3e5e94[_0x84cf('0x44')](_0x44d4bf[_0x84cf('0x42')]===_0x84cf('0x45')?0x195:0x193)['json']({'message':_0x44d4bf[_0x84cf('0x42')]===_0x84cf('0x45')?_0x84cf('0x46'):_0x84cf('0x47')});}else{_0x29e9e1();}})['catch'](function(_0x1595dd){_0x29e9e1(_0x1595dd);});}});};exports['isAuthenticated']=function isAuthenticated(_0x29455e){return compose()[_0x84cf('0x3d')](function(_0x43b41b,_0xc15298,_0x51adcf){var _0x20de4b;if(_0x43b41b[_0x84cf('0x48')][_0x84cf('0x49')]){if(_[_0x84cf('0x4a')](_0x43b41b[_0x84cf('0x48')][_0x84cf('0x49')],_0x84cf('0x4b'))){var _0x18243d=basicAuth(_0x43b41b);db[_0x84cf('0x4c')]['find']({'where':{'name':_0x18243d['name']}})[_0x84cf('0x43')](function(_0x25de3a){if(!_0x25de3a||!_0x25de3a[_0x84cf('0x4d')](_0x18243d[_0x84cf('0x4e')])){return _0xc15298[_0x84cf('0x44')](0x191)[_0x84cf('0x4f')]({'message':_0x84cf('0x50')});}_0x43b41b[_0x84cf('0x3e')]={'id':_0x25de3a['id']};_0x51adcf();})['catch'](function(_0x113b3e){_0x51adcf(_0x113b3e);});}else if(_[_0x84cf('0x4a')](_0x43b41b['headers'][_0x84cf('0x49')],'Bearer')){validateJwt(_0x43b41b,_0xc15298,_0x51adcf);}else{if(_0x29455e){_0x51adcf();}else{return _0xc15298[_0x84cf('0x44')](0x193)[_0x84cf('0x4f')]({'message':_0x84cf('0x51')});}}}else if(_0x43b41b[_0x84cf('0x52')][_0x84cf('0x53')]){try{var _0x49d415={'audience':hardwareConf[_0x84cf('0x54')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x43b41b['query'][_0x84cf('0x53')],_0x49d415)[_0x84cf('0x43')](function(_0x4c4676){return db[_0x84cf('0x4c')][_0x84cf('0x55')]({'where':{'id':_0x4c4676[_0x84cf('0x56')]}})[_0x84cf('0x43')](function(_0xd13908){_0x20de4b=_0xd13908;return db[_0x84cf('0x57')]['findOne']({'where':{'id':0x1},'attributes':[_0x84cf('0x58'),_0x84cf('0x59')],'raw':!![]});})[_0x84cf('0x43')](function(_0x32cff6){if(!_0x20de4b||!_[_0x84cf('0x5a')](_0x20de4b[_0x84cf('0x5b')],_0x4c4676['nonce'])){return _0xc15298[_0x84cf('0x44')](0x191)['json']({'message':_0x84cf('0x5c')});}if(_0x20de4b[_0x84cf('0x5d')]){return _0xc15298[_0x84cf('0x44')](0x191)[_0x84cf('0x4f')]({'message':_0x84cf('0x5e')});}if(_0x20de4b[_0x84cf('0x5f')]){if(_0x32cff6[_0x84cf('0x59')]>0x0){if(moment(_0x20de4b[_0x84cf('0x60')])[_0x84cf('0x61')](_0x32cff6['blockDuration'],_0x84cf('0x62'))>moment()){return _0xc15298['status'](0x191)[_0x84cf('0x4f')]({'message':_0x84cf('0x5e')});}}else{return _0xc15298['status'](0x191)[_0x84cf('0x4f')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x43b41b[_0x84cf('0x3e')]={'id':_0x20de4b['id']};_0x51adcf();});})['catch'](function(){return _0xc15298[_0x84cf('0x44')](0x191)['json']({'message':_0x84cf('0x5e')});});}catch(_0x40ae50){_0x51adcf(_0x40ae50);}}else if(_0x29455e){_0x51adcf();}else{return _0xc15298['status'](0x193)[_0x84cf('0x4f')]({'message':_0x84cf('0x51')});}})[_0x84cf('0x3d')](function(_0x5ef5fb,_0x3c1314,_0x5f1b8e){if(_0x5ef5fb[_0x84cf('0x3e')]){db['User']['find']({'where':{'id':_0x5ef5fb['user']['id']},'attributes':userAttributes})[_0x84cf('0x43')](function(_0xcf14ba){if(!_0xcf14ba){return _0x3c1314['status'](0x194)[_0x84cf('0x4f')]({'message':'User\x20not\x20found.'});}_0x5ef5fb[_0x84cf('0x3e')]=_0xcf14ba;_0x5f1b8e();})[_0x84cf('0x63')](function(_0x5ce309){_0x5f1b8e(_0x5ce309);});}else if(_0x29455e){_0x5f1b8e();}else{return _0x3c1314[_0x84cf('0x44')](0x194)['json']({'message':_0x84cf('0x64')});}});};exports['canUpdate']=function canUpdate(){return compose()['use'](function(_0x5d8b69,_0x5498ec,_0x585644){return licenseUtil['getLicense']()['then'](function(_0x210d9b){if(_0x210d9b[_0x84cf('0x65')]){_0x585644();}else{return _0x5498ec[_0x84cf('0x44')](0x193)[_0x84cf('0x4f')]({'message':'Forbidden'});}})[_0x84cf('0x63')](function(_0x4af229){_0x585644(_0x4af229);});});};exports[_0x84cf('0x66')]=function isWebrtcLicence(){return compose()[_0x84cf('0x3d')](function(_0x1533a7,_0x253464,_0x121bb9){return licenseUtil[_0x84cf('0x67')]()['then'](function(_0x2f7da6){if(_0x2f7da6[_0x84cf('0x68')]){_0x121bb9();}else{return _0x253464['status'](0x193)[_0x84cf('0x4f')]({'message':_0x84cf('0x69')});}})[_0x84cf('0x63')](function(_0x5212ec){_0x121bb9(_0x5212ec);});});};exports['isMiddleware']=function(_0x5499f9,_0x1cf3f6,_0x104421){_0x5499f9[_0x84cf('0x6a')]=!![];return _0x104421();};exports[_0x84cf('0x6b')]=function signToken(_0x271cc3){return signJwt(_0x271cc3);};exports[_0x84cf('0x6c')]=function(_0x51d725,_0x350985){if(!_0x51d725['user']){return _0x350985[_0x84cf('0x44')](0x194)['json']({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x46c595={'payload':{'id':_0x51d725[_0x84cf('0x3e')]['id'],'role':_0x51d725[_0x84cf('0x3e')]['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x46c595)['then'](function(_0x290a4d){_0x350985[_0x84cf('0x6d')](_0x84cf('0x6e'),_0x290a4d);_0x350985[_0x84cf('0x6f')](_0x84cf('0x70'));})['catch'](function(_0xcfe28f){return _0x350985[_0x84cf('0x44')](0x1f4)['send'](_0xcfe28f);});};exports[_0x84cf('0x71')]=function(_0x5baea8){if(_['isNil'](_0x5baea8[_0x84cf('0x5b')])||_[_0x84cf('0x72')](_0x5baea8['apiKeyIat'])){return null;}else{return createJwt(_0x5baea8);}};exports['generateApiKey']=function(_0x31176c){_0x31176c[_0x84cf('0x5b')]=generateNonce();_0x31176c[_0x84cf('0x73')]=generateIssuedAt();return createJwt(_0x31176c);};exports[_0x84cf('0x74')]=function(_0x406c33,_0x3edaec){var _0x3a0eb4=_0x406c33[_0x84cf('0x52')]['apikey'];if(_0x3a0eb4){var _0x1bc15c={'nonce':_0x3edaec[_0x84cf('0x5b')],'iat':_0x3edaec['apiKeyIat'],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x84cf('0x54')]()};return verifyJwt(_0x3a0eb4,_0x1bc15c)[_0x84cf('0x43')](function(){return generateApiKey(_0x3edaec);});}else{throw{'message':_0x84cf('0x75')};}};exports[_0x84cf('0x76')]=function(_0x340915){var _0xfec87d=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0xfec87d[_0x84cf('0x77')](_0x340915))throw new db['Sequelize'][(_0x84cf('0x78'))]('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[_0x84cf('0x79')]=function(_0x5c0122,_0x2a60bc,_0x1c2f1b){var _0x55d8c4=encryptor[_0x84cf('0x7a')](_0x2a60bc)[_0x84cf('0x7b')](',');for(var _0x52a3f1=0x0;_0x52a3f1<_0x1c2f1b;_0x52a3f1++){if(!_0x55d8c4[_0x52a3f1])break;if(_0x5c0122[_0x84cf('0x7c')]()===_0x55d8c4[_0x52a3f1]['toLowerCase']()){var _0x577d55=util['format']('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x1c2f1b);if(_0x1c2f1b===0x1){_0x577d55=_0x84cf('0x7d');}throw new db[(_0x84cf('0x7e'))][(_0x84cf('0x78'))](_0x577d55);}}return;};exports[_0x84cf('0x7f')]=function(_0x480c3e,_0x32aa8b){var _0x3c1c55=_0x32aa8b?encryptor['decryptString'](_0x32aa8b)[_0x84cf('0x7b')](','):[];if(_0x3c1c55[_0x84cf('0x80')]===0x5){_0x3c1c55[_0x84cf('0x81')](-0x1,0x1);}_0x3c1c55[_0x84cf('0x82')](_0x480c3e);return encryptor[_0x84cf('0x83')](_0x3c1c55[_0x84cf('0x84')](','));};function signJwt(_0x1f1f76){var _0x39a336=BPromise['promisify'](jwt[_0x84cf('0x85')],{'context':jwt});var _0x58a96a=_0x1f1f76[_0x84cf('0x86')]||config[_0x84cf('0xc')][_0x84cf('0x87')];return new BPromise(function(_0x276ab1,_0x2602b7){_0x39a336(_0x1f1f76['payload'],_0x58a96a,_0x1f1f76[_0x84cf('0x88')])[_0x84cf('0x43')](function(_0xe1a1d9){_0x276ab1(_0xe1a1d9);})['catch'](function(_0xdb9b0c){_0x2602b7(_0xdb9b0c);});});}function verifyJwt(_0x240cca,_0x4e6077,_0x84d9cb){var _0x482958=BPromise[_0x84cf('0x89')](jwt[_0x84cf('0x8a')],{'context':jwt});var _0x57f1f2=_0x84d9cb||config[_0x84cf('0xc')][_0x84cf('0x87')];return new BPromise(function(_0x4a7905,_0x40b33e){_0x482958(_0x240cca,_0x57f1f2,_0x4e6077)[_0x84cf('0x43')](function(_0x262ae1){_0x4a7905(_0x262ae1);})[_0x84cf('0x63')](function(_0x577ade){_0x40b33e(_0x577ade);});});}function generateNonce(){return crypto[_0x84cf('0x8b')](0x10)[_0x84cf('0x8c')]('hex');}function generateIssuedAt(){return Math['floor'](Date['now']()/0x3e8)[_0x84cf('0x8c')]();}function createJwt(_0x8399f4){var _0xfcd0d={'payload':{'iat':_0x8399f4['apiKeyIat'],'nonce':_0x8399f4['apiKeyNonce']},'options':{'algorithm':_0x84cf('0x8d'),'subject':_0x8399f4['id'][_0x84cf('0x8c')](),'issuer':hardwareConf[_0x84cf('0x54')](),'audience':hardwareConf[_0x84cf('0x54')]()}};return signJwt(_0xfcd0d)[_0x84cf('0x43')](function(_0x39bd44){return{'iat':_0x8399f4[_0x84cf('0x73')],'nonce':_0x8399f4[_0x84cf('0x5b')],'token':_0x39bd44};});}
\ No newline at end of file
+var _0xab13=['getUuid','then','User','sub','Setting','findOne','allowedLoginAttempts','apiKeyNonce','disabled','Invalid\x20API\x20access\x20key','blockDuration','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','promisify','sign','secret','session','payload','options','randomBytes','toString','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','basic-auth','crypto','util','moment','secrets','role','fullname','name','internal','email','userpic','md5secret','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarPrefixRequired','phoneBarRemoteControl','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadAttachments','ignorePauseForPreviewCalls','chatAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','messengerSoundNotification','isChatInteractionAuthorized','isAuthenticated','use','ChatInteraction','closed','query','forceDownload','status','unmanaged','json','disposition','Unmanaged.','catch','headers','authorization','startsWith','Basic','find','authenticate','Wrong\x20credentials.','user','Bearer','Unknown\x20authorization\x20format'];(function(_0x243ec7,_0x5b376e){var _0x39d41f=function(_0x5647b4){while(--_0x5647b4){_0x243ec7['push'](_0x243ec7['shift']());}};_0x39d41f(++_0x5b376e);}(_0xab13,0x149));var _0x3ab1=function(_0x19737b,_0x212909){_0x19737b=_0x19737b-0x0;var _0x16329e=_0xab13[_0x19737b];return _0x16329e;};'use strict';var db=require(_0x3ab1('0x0'))['db'];var config=require(_0x3ab1('0x1'));var hardwareConf=require(_0x3ab1('0x2'));var licenseUtil=require(_0x3ab1('0x3'));var encryptor=require(_0x3ab1('0x4'));var _=require(_0x3ab1('0x5'));var jwt=require(_0x3ab1('0x6'));var expressJwt=require(_0x3ab1('0x7'));var compose=require('composable-middleware');var basicAuth=require(_0x3ab1('0x8'));var crypto=require(_0x3ab1('0x9'));var BPromise=require('bluebird');var util=require(_0x3ab1('0xa'));var moment=require(_0x3ab1('0xb'));var validateJwt=expressJwt({'secret':config[_0x3ab1('0xc')]['session']});var userAttributes=['id',_0x3ab1('0xd'),_0x3ab1('0xe'),_0x3ab1('0xf'),_0x3ab1('0x10'),_0x3ab1('0x11'),_0x3ab1('0x12'),'permissions',_0x3ab1('0x13'),_0x3ab1('0x14'),_0x3ab1('0x15'),_0x3ab1('0x16'),_0x3ab1('0x17'),_0x3ab1('0x18'),_0x3ab1('0x19'),'pauseType',_0x3ab1('0x1a'),_0x3ab1('0x1b'),_0x3ab1('0x1c'),_0x3ab1('0x1d'),_0x3ab1('0x1e'),_0x3ab1('0x1f'),'alias',_0x3ab1('0x20'),'phoneBarAutoAnswerDelay',_0x3ab1('0x21'),'phoneBarEnableRecording',_0x3ab1('0x22'),'phoneBarEnableSettings','phoneBarExpires',_0x3ab1('0x23'),_0x3ab1('0x24'),'phoneBarRemoteControlPort',_0x3ab1('0x25'),_0x3ab1('0x26'),_0x3ab1('0x27'),_0x3ab1('0x28'),_0x3ab1('0x29'),_0x3ab1('0x2a'),_0x3ab1('0x2b'),'downloadOmnichannelInteractions',_0x3ab1('0x2c'),_0x3ab1('0x2d'),'selectRecallMeCampaign','chatAutoanswer',_0x3ab1('0x2e'),'emailAutoanswer','emailAutoanswerDelay',_0x3ab1('0x2f'),_0x3ab1('0x30'),_0x3ab1('0x31'),_0x3ab1('0x32'),_0x3ab1('0x33'),'faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay',_0x3ab1('0x34')];exports[_0x3ab1('0x35')]=function(){return this[_0x3ab1('0x36')](!![])[_0x3ab1('0x37')](function(_0x113595,_0x5dd0e8,_0x457539){if(_0x113595['user']){_0x457539();}else{return db[_0x3ab1('0x38')]['findOne']({'where':{'id':_0x113595['params']['id']},'attributes':['id',_0x3ab1('0x39'),'disposition'],'raw':!![]})['then'](function(_0x4741ed){if(_0x4741ed&&_0x4741ed[_0x3ab1('0x39')]&&!_0x113595[_0x3ab1('0x3a')][_0x3ab1('0x3b')]){return _0x5dd0e8[_0x3ab1('0x3c')](_0x4741ed['disposition']===_0x3ab1('0x3d')?0x195:0x193)[_0x3ab1('0x3e')]({'message':_0x4741ed[_0x3ab1('0x3f')]===_0x3ab1('0x3d')?_0x3ab1('0x40'):'Forbidden.'});}else{_0x457539();}})[_0x3ab1('0x41')](function(_0x283901){_0x457539(_0x283901);});}});};exports[_0x3ab1('0x36')]=function isAuthenticated(_0x5a0778){return compose()[_0x3ab1('0x37')](function(_0x42f4cf,_0x3f3cec,_0x4bd9f3){var _0x23a4cd;if(_0x42f4cf[_0x3ab1('0x42')][_0x3ab1('0x43')]){if(_[_0x3ab1('0x44')](_0x42f4cf[_0x3ab1('0x42')][_0x3ab1('0x43')],_0x3ab1('0x45'))){var _0x59b888=basicAuth(_0x42f4cf);db['User'][_0x3ab1('0x46')]({'where':{'name':_0x59b888['name']}})['then'](function(_0x5220fa){if(!_0x5220fa||!_0x5220fa[_0x3ab1('0x47')](_0x59b888['pass'])){return _0x3f3cec[_0x3ab1('0x3c')](0x191)['json']({'message':_0x3ab1('0x48')});}_0x42f4cf[_0x3ab1('0x49')]={'id':_0x5220fa['id']};_0x4bd9f3();})[_0x3ab1('0x41')](function(_0x458525){_0x4bd9f3(_0x458525);});}else if(_['startsWith'](_0x42f4cf[_0x3ab1('0x42')][_0x3ab1('0x43')],_0x3ab1('0x4a'))){validateJwt(_0x42f4cf,_0x3f3cec,_0x4bd9f3);}else{if(_0x5a0778){_0x4bd9f3();}else{return _0x3f3cec['status'](0x193)[_0x3ab1('0x3e')]({'message':_0x3ab1('0x4b')});}}}else if(_0x42f4cf[_0x3ab1('0x3a')]['apikey']){try{var _0x4275d6={'audience':hardwareConf[_0x3ab1('0x4c')](),'issuer':hardwareConf[_0x3ab1('0x4c')]()};verifyJwt(_0x42f4cf[_0x3ab1('0x3a')]['apikey'],_0x4275d6)[_0x3ab1('0x4d')](function(_0x5172f3){return db[_0x3ab1('0x4e')][_0x3ab1('0x46')]({'where':{'id':_0x5172f3[_0x3ab1('0x4f')]}})[_0x3ab1('0x4d')](function(_0x3c5707){_0x23a4cd=_0x3c5707;return db[_0x3ab1('0x50')][_0x3ab1('0x51')]({'where':{'id':0x1},'attributes':[_0x3ab1('0x52'),'blockDuration'],'raw':!![]});})[_0x3ab1('0x4d')](function(_0x55ba7d){if(!_0x23a4cd||!_['isEqual'](_0x23a4cd[_0x3ab1('0x53')],_0x5172f3['nonce'])){return _0x3f3cec[_0x3ab1('0x3c')](0x191)[_0x3ab1('0x3e')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x23a4cd[_0x3ab1('0x54')]){return _0x3f3cec[_0x3ab1('0x3c')](0x191)[_0x3ab1('0x3e')]({'message':_0x3ab1('0x55')});}if(_0x23a4cd['blocked']){if(_0x55ba7d[_0x3ab1('0x56')]>0x0){if(moment(_0x23a4cd[_0x3ab1('0x57')])[_0x3ab1('0x58')](_0x55ba7d[_0x3ab1('0x56')],_0x3ab1('0x59'))>moment()){return _0x3f3cec[_0x3ab1('0x3c')](0x191)[_0x3ab1('0x3e')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x3f3cec[_0x3ab1('0x3c')](0x191)[_0x3ab1('0x3e')]({'message':_0x3ab1('0x55')});}}_0x42f4cf[_0x3ab1('0x49')]={'id':_0x23a4cd['id']};_0x4bd9f3();});})[_0x3ab1('0x41')](function(){return _0x3f3cec['status'](0x191)[_0x3ab1('0x3e')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x2423a7){_0x4bd9f3(_0x2423a7);}}else if(_0x5a0778){_0x4bd9f3();}else{return _0x3f3cec[_0x3ab1('0x3c')](0x193)[_0x3ab1('0x3e')]({'message':_0x3ab1('0x4b')});}})[_0x3ab1('0x37')](function(_0x3be592,_0x568692,_0x52623c){if(_0x3be592[_0x3ab1('0x49')]){db[_0x3ab1('0x4e')][_0x3ab1('0x46')]({'where':{'id':_0x3be592[_0x3ab1('0x49')]['id']},'attributes':userAttributes})['then'](function(_0xc6413c){if(!_0xc6413c){return _0x568692[_0x3ab1('0x3c')](0x194)['json']({'message':_0x3ab1('0x5a')});}_0x3be592[_0x3ab1('0x49')]=_0xc6413c;_0x52623c();})[_0x3ab1('0x41')](function(_0x3b31c0){_0x52623c(_0x3b31c0);});}else if(_0x5a0778){_0x52623c();}else{return _0x568692['status'](0x194)[_0x3ab1('0x3e')]({'message':_0x3ab1('0x5b')});}});};exports[_0x3ab1('0x5c')]=function canUpdate(){return compose()[_0x3ab1('0x37')](function(_0x24b372,_0x4c945f,_0x39effd){return licenseUtil[_0x3ab1('0x5d')]()[_0x3ab1('0x4d')](function(_0x198520){if(_0x198520[_0x3ab1('0x5e')]){_0x39effd();}else{return _0x4c945f['status'](0x193)[_0x3ab1('0x3e')]({'message':_0x3ab1('0x5f')});}})[_0x3ab1('0x41')](function(_0x3f82c1){_0x39effd(_0x3f82c1);});});};exports[_0x3ab1('0x60')]=function isWebrtcLicence(){return compose()[_0x3ab1('0x37')](function(_0x1e76fc,_0x57e4a3,_0xa13124){return licenseUtil['getLicense']()['then'](function(_0x561587){if(_0x561587['webrtc']){_0xa13124();}else{return _0x57e4a3['status'](0x193)['json']({'message':_0x3ab1('0x5f')});}})['catch'](function(_0x516ebc){_0xa13124(_0x516ebc);});});};exports[_0x3ab1('0x61')]=function(_0x279a60,_0x326399,_0x13f775){_0x279a60[_0x3ab1('0x61')]=!![];return _0x13f775();};exports[_0x3ab1('0x62')]=function signToken(_0x7f24ed){return signJwt(_0x7f24ed);};exports[_0x3ab1('0x63')]=function(_0x4a47cd,_0xfaec62){if(!_0x4a47cd[_0x3ab1('0x49')]){return _0xfaec62[_0x3ab1('0x3c')](0x194)['json']({'message':_0x3ab1('0x64')});}var _0x11b99a={'payload':{'id':_0x4a47cd[_0x3ab1('0x49')]['id'],'role':_0x4a47cd['user'][_0x3ab1('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x11b99a)[_0x3ab1('0x4d')](function(_0x90385d){_0xfaec62['cookie']('motion.token',_0x90385d);_0xfaec62[_0x3ab1('0x65')](_0x3ab1('0x66'));})['catch'](function(_0x3b34ee){return _0xfaec62['status'](0x1f4)[_0x3ab1('0x67')](_0x3b34ee);});};exports[_0x3ab1('0x68')]=function(_0x4edcb8){if(_[_0x3ab1('0x69')](_0x4edcb8[_0x3ab1('0x53')])||_['isNil'](_0x4edcb8[_0x3ab1('0x6a')])){return null;}else{return createJwt(_0x4edcb8);}};exports['generateApiKey']=function(_0xf5fd05){_0xf5fd05[_0x3ab1('0x53')]=generateNonce();_0xf5fd05[_0x3ab1('0x6a')]=generateIssuedAt();return createJwt(_0xf5fd05);};exports[_0x3ab1('0x6b')]=function(_0x3ce0b6,_0x361e19){var _0x2dcb7d=_0x3ce0b6[_0x3ab1('0x3a')]['apikey'];if(_0x2dcb7d){var _0x2c31aa={'nonce':_0x361e19['apiKeyNonce'],'iat':_0x361e19['apiKeyIat'],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x3ab1('0x4c')]()};return verifyJwt(_0x2dcb7d,_0x2c31aa)[_0x3ab1('0x4d')](function(){return generateApiKey(_0x361e19);});}else{throw{'message':_0x3ab1('0x6c')};}};exports[_0x3ab1('0x6d')]=function(_0x48cd32){var _0x59e91d=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x59e91d[_0x3ab1('0x6e')](_0x48cd32))throw new db[(_0x3ab1('0x6f'))][(_0x3ab1('0x70'))]('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[_0x3ab1('0x71')]=function(_0x3ae8b1,_0x31897d,_0x5b4a7f){var _0x1ddaf1=encryptor[_0x3ab1('0x72')](_0x31897d)[_0x3ab1('0x73')](',');for(var _0x57b356=0x0;_0x57b356<_0x5b4a7f;_0x57b356++){if(!_0x1ddaf1[_0x57b356])break;if(_0x3ae8b1['toLowerCase']()===_0x1ddaf1[_0x57b356][_0x3ab1('0x74')]()){var _0x78de26=util[_0x3ab1('0x75')](_0x3ab1('0x76'),_0x5b4a7f);if(_0x5b4a7f===0x1){_0x78de26='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db['Sequelize'][(_0x3ab1('0x70'))](_0x78de26);}}return;};exports[_0x3ab1('0x77')]=function(_0x2951fb,_0x504c9d){var _0x13cb9a=_0x504c9d?encryptor[_0x3ab1('0x72')](_0x504c9d)['split'](','):[];if(_0x13cb9a[_0x3ab1('0x78')]===0x5){_0x13cb9a[_0x3ab1('0x79')](-0x1,0x1);}_0x13cb9a[_0x3ab1('0x7a')](_0x2951fb);return encryptor[_0x3ab1('0x7b')](_0x13cb9a['join'](','));};function signJwt(_0x42d8ba){var _0x5a0811=BPromise[_0x3ab1('0x7c')](jwt[_0x3ab1('0x7d')],{'context':jwt});var _0x3a4698=_0x42d8ba[_0x3ab1('0x7e')]||config['secrets'][_0x3ab1('0x7f')];return new BPromise(function(_0x59e8a4,_0x3fb36){_0x5a0811(_0x42d8ba[_0x3ab1('0x80')],_0x3a4698,_0x42d8ba[_0x3ab1('0x81')])['then'](function(_0x348d05){_0x59e8a4(_0x348d05);})[_0x3ab1('0x41')](function(_0x2cede6){_0x3fb36(_0x2cede6);});});}function verifyJwt(_0x4f97ea,_0x4d87da,_0x236458){var _0x36eab7=BPromise['promisify'](jwt['verify'],{'context':jwt});var _0x295338=_0x236458||config[_0x3ab1('0xc')]['session'];return new BPromise(function(_0x733de8,_0x2ac358){_0x36eab7(_0x4f97ea,_0x295338,_0x4d87da)[_0x3ab1('0x4d')](function(_0x4c2046){_0x733de8(_0x4c2046);})['catch'](function(_0x551641){_0x2ac358(_0x551641);});});}function generateNonce(){return crypto[_0x3ab1('0x82')](0x10)[_0x3ab1('0x83')]('hex');}function generateIssuedAt(){return Math[_0x3ab1('0x84')](Date[_0x3ab1('0x85')]()/0x3e8)[_0x3ab1('0x83')]();}function createJwt(_0x54b8cc){var _0x287932={'payload':{'iat':_0x54b8cc[_0x3ab1('0x6a')],'nonce':_0x54b8cc[_0x3ab1('0x53')]},'options':{'algorithm':_0x3ab1('0x86'),'subject':_0x54b8cc['id'][_0x3ab1('0x83')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x287932)['then'](function(_0xf152db){return{'iat':_0x54b8cc['apiKeyIat'],'nonce':_0x54b8cc[_0x3ab1('0x53')],'token':_0xf152db};});}
\ No newline at end of file
index 6e1703a..98996e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fbe=['all','length','fieldType','type','./sql-utils','findAll','skipContactsQuery','resolve','getContactsSubquery','then','parseQueryParameters','where','default','fields','filter','user','clause','skip','checkListsRestrictions','search','ids','countFilteredContacts','count','User','buildContactsQuery','getFilteredContacts','rows','catch','CmContact','describe','keys','cf_','map','CmCustomField','slice'];(function(_0x4a025d,_0x475008){var _0x1ea4bf=function(_0x1e7581){while(--_0x1e7581){_0x4a025d['push'](_0x4a025d['shift']());}};_0x1ea4bf(++_0x475008);}(_0x0fbe,0xd6));var _0xe0fb=function(_0xcd3fdd,_0x30424c){_0xcd3fdd=_0xcd3fdd-0x0;var _0x1ab32c=_0x0fbe[_0xcd3fdd];return _0x1ab32c;};'use strict';var _=require('lodash');var sqlUtils=require(_0xe0fb('0x0'));var db=require('../../mysqldb')['db'];exports[_0xe0fb('0x1')]=function(_0x4b0630,_0x3798bc,_0x1c1182,_0x30b0c9){var _0x3a9577={'count':0x0,'rows':[]};var _0x35da64=sqlUtils[_0xe0fb('0x2')](_0x3798bc,_0x4b0630);if(_0x35da64){return Promise[_0xe0fb('0x3')](_0x3a9577);}var _0x15a1c7=sqlUtils[_0xe0fb('0x4')]();var _0x42f26a={};var _0x523e4b=![];var _0x1643a8=![];return Promise[_0xe0fb('0x3')]()[_0xe0fb('0x5')](function(){if(_0x4b0630['search']){return sqlUtils['parseAdvancedSearchFilter'](_0x4b0630['search'],_0x30b0c9);}else{return sqlUtils[_0xe0fb('0x6')](_0x4b0630,_0x30b0c9);}})[_0xe0fb('0x5')](function(_0x5a76e1){_0x15a1c7[_0xe0fb('0x7')](_0x5a76e1[_0xe0fb('0x8')]);_0x15a1c7[_0xe0fb('0x7')](_0x5a76e1[_0xe0fb('0x9')]);_0x15a1c7[_0xe0fb('0x7')](_0x5a76e1[_0xe0fb('0xa')]);_0x15a1c7[_0xe0fb('0x7')](_0x5a76e1[_0xe0fb('0xb')][_0xe0fb('0xc')]);_0x42f26a=_0x5a76e1['tags'];_0x1643a8=_0x5a76e1[_0xe0fb('0xb')][_0xe0fb('0xd')];return sqlUtils[_0xe0fb('0xe')](_0x3798bc,_0x4b0630,_0x1643a8);})[_0xe0fb('0x5')](function(_0x36531c){_0x15a1c7[_0xe0fb('0x7')](_0x36531c);var _0x1bf7fe=_0x4b0630[_0xe0fb('0xf')]?_0x42f26a[_0xe0fb('0x10')]:_0x4b0630['tag'];_0x523e4b=_0x1bf7fe?!![]:![];return sqlUtils[_0xe0fb('0x11')](_0x15a1c7,_0x1bf7fe);})[_0xe0fb('0x5')](function(_0x4bcdee){_0x3a9577['count']=_0x4bcdee;if(_0x3a9577[_0xe0fb('0x12')]===0x0){return;}if(_0x4b0630[_0xe0fb('0x13')]){_0x1643a8=!![];}return sqlUtils[_0xe0fb('0x14')](_0x15a1c7,_0x4b0630[_0xe0fb('0x9')],_0x1c1182,_0x523e4b,_0x42f26a['clause'],_0x1643a8);})[_0xe0fb('0x5')](function(_0x1a7417){if(!_0x1a7417){return[];}return sqlUtils[_0xe0fb('0x15')](_0x1a7417,_0x4b0630,_0x1c1182);})[_0xe0fb('0x5')](function(_0x4881bb){_0x3a9577[_0xe0fb('0x16')]=_0x4881bb;return _0x3a9577;})[_0xe0fb('0x17')](function(_0x482561){throw _0x482561;});};exports['describe']=function(){var _0x556e37={};var _0x1f4849=[];return db[_0xe0fb('0x18')][_0xe0fb('0x19')]()[_0xe0fb('0x5')](function(_0x1be4ca){_0x556e37=_0x1be4ca;var _0x39e689=Object[_0xe0fb('0x1a')](_0x556e37)[_0xe0fb('0xa')](function(_0x874f3e){return _['startsWith'](_0x874f3e,_0xe0fb('0x1b'))?_0x874f3e:undefined;});var _0x4fb107=_0x39e689[_0xe0fb('0x1c')](function(_0x354d5e){return db[_0xe0fb('0x1d')]['findOne']({'where':{'id':_0x354d5e[_0xe0fb('0x1e')](0x3)},'raw':!![]});});return Promise[_0xe0fb('0x1f')](_0x4fb107);})['then'](function(_0x11eff0){for(var _0x3b62f8=0x0;_0x3b62f8<_0x11eff0[_0xe0fb('0x20')];_0x3b62f8++){if(_0x11eff0[_0x3b62f8]){var _0xc47f56=_0xe0fb('0x1b')+_0x11eff0[_0x3b62f8]['id'];_0x556e37[_0xc47f56][_0xe0fb('0x21')]=_0x11eff0[_0x3b62f8]['type'];}}_0x1f4849=_[_0xe0fb('0x1c')](Object['keys'](_0x556e37),function(_0x3e4b2b){return{'name':_0x3e4b2b,'type':_0x556e37[_0x3e4b2b][_0xe0fb('0x22')]};});return _0x1f4849;})[_0xe0fb('0x17')](function(_0x6b8b86){throw _0x6b8b86;});};
\ No newline at end of file
+var _0x040a=['map','lodash','./sql-utils','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','search','parseAdvancedSearchFilter','default','filter','where','clause','user','tag','countFilteredContacts','count','fields','getFilteredContacts','rows','catch','describe','CmContact','keys','cf_','all','length','fieldType','type'];(function(_0x386c3e,_0x44a375){var _0x4b8e13=function(_0x583c8f){while(--_0x583c8f){_0x386c3e['push'](_0x386c3e['shift']());}};_0x4b8e13(++_0x44a375);}(_0x040a,0x175));var _0xa040=function(_0x4cfc1d,_0x2c0927){_0x4cfc1d=_0x4cfc1d-0x0;var _0x1c01a0=_0x040a[_0x4cfc1d];return _0x1c01a0;};'use strict';var _=require(_0xa040('0x0'));var sqlUtils=require(_0xa040('0x1'));var db=require(_0xa040('0x2'))['db'];exports[_0xa040('0x3')]=function(_0x1abd28,_0x10c0f2,_0x1d91d6,_0x255589){var _0x342c07={'count':0x0,'rows':[]};var _0x566be2=sqlUtils[_0xa040('0x4')](_0x10c0f2,_0x1abd28);if(_0x566be2){return Promise[_0xa040('0x5')](_0x342c07);}var _0x5e7096=sqlUtils[_0xa040('0x6')]();var _0x4db07e={};var _0x107be6=![];var _0x2cedff=![];return Promise['resolve']()[_0xa040('0x7')](function(){if(_0x1abd28[_0xa040('0x8')]){return sqlUtils[_0xa040('0x9')](_0x1abd28[_0xa040('0x8')],_0x255589);}else{return sqlUtils['parseQueryParameters'](_0x1abd28,_0x255589);}})['then'](function(_0x29e67f){_0x5e7096['where'](_0x29e67f[_0xa040('0xa')]);_0x5e7096['where'](_0x29e67f['fields']);_0x5e7096['where'](_0x29e67f[_0xa040('0xb')]);_0x5e7096[_0xa040('0xc')](_0x29e67f['user'][_0xa040('0xd')]);_0x4db07e=_0x29e67f['tags'];_0x2cedff=_0x29e67f[_0xa040('0xe')]['skip'];return sqlUtils['checkListsRestrictions'](_0x10c0f2,_0x1abd28,_0x2cedff);})[_0xa040('0x7')](function(_0x2f1441){_0x5e7096[_0xa040('0xc')](_0x2f1441);var _0x5f0960=_0x1abd28['search']?_0x4db07e['ids']:_0x1abd28[_0xa040('0xf')];_0x107be6=_0x5f0960?!![]:![];return sqlUtils[_0xa040('0x10')](_0x5e7096,_0x5f0960);})[_0xa040('0x7')](function(_0x2bc54d){_0x342c07[_0xa040('0x11')]=_0x2bc54d;if(_0x342c07[_0xa040('0x11')]===0x0){return;}if(_0x1abd28['User']){_0x2cedff=!![];}return sqlUtils['buildContactsQuery'](_0x5e7096,_0x1abd28[_0xa040('0x12')],_0x1d91d6,_0x107be6,_0x4db07e[_0xa040('0xd')],_0x2cedff);})[_0xa040('0x7')](function(_0x28a1b7){if(!_0x28a1b7){return[];}return sqlUtils[_0xa040('0x13')](_0x28a1b7,_0x1abd28,_0x1d91d6);})[_0xa040('0x7')](function(_0x5cd25e){_0x342c07[_0xa040('0x14')]=_0x5cd25e;return _0x342c07;})[_0xa040('0x15')](function(_0x1bb84c){throw _0x1bb84c;});};exports[_0xa040('0x16')]=function(){var _0xa55dc4={};var _0xb83c24=[];return db[_0xa040('0x17')][_0xa040('0x16')]()[_0xa040('0x7')](function(_0x4b1435){_0xa55dc4=_0x4b1435;var _0x3f36dd=Object[_0xa040('0x18')](_0xa55dc4)[_0xa040('0xb')](function(_0x24d493){return _['startsWith'](_0x24d493,_0xa040('0x19'))?_0x24d493:undefined;});var _0x14c02e=_0x3f36dd['map'](function(_0x4cca61){return db['CmCustomField']['findOne']({'where':{'id':_0x4cca61['slice'](0x3)},'raw':!![]});});return Promise[_0xa040('0x1a')](_0x14c02e);})[_0xa040('0x7')](function(_0x3775a4){for(var _0x8fda45=0x0;_0x8fda45<_0x3775a4[_0xa040('0x1b')];_0x8fda45++){if(_0x3775a4[_0x8fda45]){var _0x37f742=_0xa040('0x19')+_0x3775a4[_0x8fda45]['id'];_0xa55dc4[_0x37f742][_0xa040('0x1c')]=_0x3775a4[_0x8fda45][_0xa040('0x1d')];}}_0xb83c24=_[_0xa040('0x1e')](Object[_0xa040('0x18')](_0xa55dc4),function(_0x44d1c9){return{'name':_0x44d1c9,'type':_0xa55dc4[_0x44d1c9][_0xa040('0x1d')]};});return _0xb83c24;})['catch'](function(_0x13a743){throw _0x13a743;});};
\ No newline at end of file
index 5d596d3..c413259 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eef=['user','uc.UserId\x20=\x20?','skip','keys','some','Contact','User','and','c.ListId\x20IN\x20?','concat','\x20=\x20?','resolve','then','fields','tag','clause','filter','getLists','c.ListId\x20IS\x20NULL','attributes','select','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','clone','isEmpty','t.id\x20IN\x20?','COUNT(*)','exports','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','role','agent','search','ListId','autocomplete','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','uc.CmContactId\x20=\x20','cm_contact_has_tags','.id','left_join','tools_tags','subqry','firstName','mobile','fax','email','createdAt','updatedAt','includes','push','forEach','TagIds','field','expr','getSelectedTags','replace','split','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','dateOfBirth','datetime','castTo','DATE','buildExpression','type','text','value','end','Tag','map','tags'];(function(_0x22dbc3,_0x4c9feb){var _0x573ef9=function(_0x1e2d06){while(--_0x1e2d06){_0x22dbc3['push'](_0x22dbc3['shift']());}};_0x573ef9(++_0x4c9feb);}(_0x7eef,0x103));var _0xf7ee=function(_0x153e7d,_0x10a35f){_0x153e7d=_0x153e7d-0x0;var _0x3c22dd=_0x7eef[_0x153e7d];return _0x3c22dd;};'use strict';var _=require('lodash');var squel=require(_0xf7ee('0x0'));var as=require(_0xf7ee('0x1'));var qs=require(_0xf7ee('0x2'));var utils=require(_0xf7ee('0x3'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x59ab51,_0x3eece1){var _0x58a077=![];if(_0x59ab51[_0xf7ee('0x4')]===_0xf7ee('0x5')&&!_0x3eece1[_0xf7ee('0x6')]&&!_0x3eece1[_0xf7ee('0x7')]&&_0x3eece1[_0xf7ee('0x8')]!=='true'){_0x58a077=!![];}return _0x58a077;}function getContactsSubquery(){return squel['select']()[_0xf7ee('0x9')](_0xf7ee('0xa'),'c')[_0xf7ee('0xb')](_0xf7ee('0xc'));}function applyJoinClauses(_0xdc90ca,_0x33565f){var _0x203371=_0x33565f?'c':'subqry';_0xdc90ca['left_join']('cm_user_has_contacts','uc',_0xf7ee('0xd')+_0x203371+'.id')['left_join'](_0xf7ee('0xe'),'ct','ct.CmContactId\x20=\x20'+_0x203371+_0xf7ee('0xf'))[_0xf7ee('0x10')](_0xf7ee('0x11'),'t','t.id\x20=\x20ct.TagId');return _0xdc90ca;}function addFieldsToQuery(_0x4ed4a1,_0xae21ea,_0x53d2ae,_0x1d0ce6,_0x5ae6b7){var _0x2b8169=_0x5ae6b7?'c':_0xf7ee('0x12');if(!_0xae21ea){_0xae21ea=['id',_0xf7ee('0x13'),'lastName','phone',_0xf7ee('0x14'),_0xf7ee('0x15'),_0xf7ee('0x16'),_0xf7ee('0x7'),'CompanyId',_0xf7ee('0x17'),_0xf7ee('0x18'),'deletedAt','TagIds'];}else if(!_0xae21ea[_0xf7ee('0x19')]('id')){_0xae21ea[_0xf7ee('0x1a')]('id');}var _0x1e078f=_0x53d2ae&&_0x5ae6b7||!_0x53d2ae&&!_0x5ae6b7;if(_0x1d0ce6){_0x1e078f=_0x1d0ce6&&_0x5ae6b7||!_0x1d0ce6&&!_0x5ae6b7;}_0xae21ea[_0xf7ee('0x1b')](function(_0x1dba48){if(_0x1dba48===_0xf7ee('0x1c')){if(_0x1e078f){_0x4ed4a1['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x1dba48);}else if(_0x53d2ae||_0x1d0ce6){_0x4ed4a1[_0xf7ee('0x1d')](_0x2b8169+'.'+_0x1dba48);}}else{_0x4ed4a1[_0xf7ee('0x1d')](_0x2b8169+'.'+_0x1dba48);}});return _0x4ed4a1;}function getSqlClauses(){var _0x321569={'default':squel['expr'](),'fields':squel[_0xf7ee('0x1e')](),'filter':squel['expr'](),'tags':{'clause':squel[_0xf7ee('0x1e')](),'ids':null},'user':{'clause':squel[_0xf7ee('0x1e')](),'skip':![]}};return _0x321569;}function parseTagParameter(_0x85d8c9){var _0x326f88=squel[_0xf7ee('0x1e')]();if(_0x85d8c9){var _0x1e2d70=utils[_0xf7ee('0x1f')](_0x85d8c9);_0x1e2d70[_0xf7ee('0x1b')](function(_0x4efc88){_0x326f88['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4efc88+',%');});}return _0x326f88;}function parseSearchFilter(_0x58e128){var _0x17ea43=squel[_0xf7ee('0x1e')]();if(_0x58e128){var _0x11780d=_0x58e128[_0xf7ee('0x20')]('\x5c','\x5c\x5c')[_0xf7ee('0x20')](/'/g,'\x27\x27');if(_0x11780d[_0xf7ee('0x21')]('\x20')[_0xf7ee('0x22')]>0x1){_0x17ea43['or'](_0xf7ee('0x23'),qs['getFullTextValue'](_0x11780d,!![]),null);}else{if(qs[_0xf7ee('0x24')](_0x11780d)){_0x17ea43['or'](_0xf7ee('0x25'),_0x11780d+'%');_0x17ea43['or'](_0xf7ee('0x26'),_0x11780d+'%');_0x17ea43['or'](_0xf7ee('0x27'),_0x11780d+'%');_0x17ea43['or'](_0xf7ee('0x28'),_0x11780d+'%');}else if(qs[_0xf7ee('0x29')](_0x11780d)){_0x17ea43['or'](_0xf7ee('0x2a'),_0x11780d+'%');}else{_0x17ea43['or'](_0xf7ee('0x2b'),'%'+_0x11780d+'%');_0x17ea43['or'](_0xf7ee('0x2c'),'%'+_0x11780d+'%');_0x17ea43['or'](_0xf7ee('0x2a'),'%'+_0x11780d+'%');}}}return _0x17ea43;}function parseAdvancedSearchFilter(_0x865bdc,_0x508a48){var _0x13184f=getSqlClauses();var _0x3b19e4=as[_0xf7ee('0x2d')](_0x865bdc);var _0x3881e1=_0x3b19e4[_0xf7ee('0x2e')];for(var _0x5c048f=0x0;_0x5c048f<_0x3b19e4[_0xf7ee('0x2f')][_0xf7ee('0x22')];_0x5c048f++){var _0x21989e=_0x3b19e4[_0xf7ee('0x2f')][_0x5c048f];var _0xa1e210='c';var _0x2ce650=_[_0xf7ee('0x30')](_0x508a48,[_0xf7ee('0x31'),_0x21989e[_0xf7ee('0x1d')]]);if(_0x2ce650){if(_0x21989e['field']===_0xf7ee('0x32')||_0x2ce650['fieldType']===_0xf7ee('0x33')){_0x21989e[_0xf7ee('0x34')]=_0xf7ee('0x35');}var _0x4456d1=as[_0xf7ee('0x36')](_0xa1e210,_0x2ce650[_0xf7ee('0x37')],_0x21989e);_0x13184f['default'][_0x3881e1](_0x4456d1[_0xf7ee('0x38')],_0x4456d1[_0xf7ee('0x39')]['start'],_0x4456d1[_0xf7ee('0x39')][_0xf7ee('0x3a')]);}else{if(_0x21989e['field']===_0xf7ee('0x3b')){var _0x610fc2=_0x21989e[_0xf7ee('0x39')][_0xf7ee('0x21')](',')[_0xf7ee('0x3c')](function(_0x52cffb){return Number(_0x52cffb);});var _0x3fcaf6=parseTagParameter(_0x610fc2);_0x13184f[_0xf7ee('0x3d')]['clause']['and'](_0x3fcaf6);_0x13184f['tags']['ids']=_0x610fc2;}else if(_0x21989e['field']==='User'){_0x13184f[_0xf7ee('0x3e')]['clause']['and'](_0xf7ee('0x3f'),_0x21989e[_0xf7ee('0x39')]);_0x13184f['user'][_0xf7ee('0x40')]=!![];}}}return _0x13184f;}function parseModelFields(_0x590377,_0x471fbb){var _0x152d25=squel[_0xf7ee('0x1e')]();var _0xf49549=_(_0x590377)[_0xf7ee('0x41')]()['map'](function(_0x36e111){return _[_0xf7ee('0x42')](_0x471fbb,['name',_0x36e111])?_0x36e111:undefined;})['compact']()[_0xf7ee('0x39')]();if(_0x590377['Contact']){_0xf49549[_0xf7ee('0x1a')](_0xf7ee('0x43'));}if(_0x590377[_0xf7ee('0x44')]){_0xf49549['push'](_0xf7ee('0x44'));}if(_0xf49549[_0xf7ee('0x22')]>0x0){_0xf49549['forEach'](function(_0x4926f8){if(_0x4926f8===_0xf7ee('0x7')){_0x152d25[_0xf7ee('0x45')](_0xf7ee('0x46'),[][_0xf7ee('0x47')](_0x590377[_0x4926f8]));}else if(_0x4926f8===_0xf7ee('0x43')){var _0x562117='%'+_0x590377[_0x4926f8]+'%';_0x152d25[_0xf7ee('0x45')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x562117);}else if(_0x4926f8===_0xf7ee('0x44')){_0x152d25[_0xf7ee('0x45')]('uc.UserId\x20=\x20?',_0x590377[_0x4926f8]);}else{_0x152d25[_0xf7ee('0x45')]('c.'+_0x4926f8+_0xf7ee('0x48'),_0x590377[_0x4926f8]);}});}return _0x152d25;}function parseQueryParameters(_0x4b1f33,_0xc802a3){var _0x263d43=getSqlClauses();return Promise[_0xf7ee('0x49')]()[_0xf7ee('0x4a')](function(){return parseModelFields(_0x4b1f33,_0xc802a3);})['then'](function(_0x2d646e){_0x263d43[_0xf7ee('0x4b')]['and'](_0x2d646e);return parseTagParameter(_0x4b1f33[_0xf7ee('0x4c')]);})[_0xf7ee('0x4a')](function(_0x49986c){_0x263d43[_0xf7ee('0x3d')][_0xf7ee('0x4d')]['and'](_0x49986c);return parseSearchFilter(_0x4b1f33['filter']);})[_0xf7ee('0x4a')](function(_0x4facb0){_0x263d43[_0xf7ee('0x4e')]=_0x4facb0;return _0x263d43;});}function checkListsRestrictions(_0x3506eb,_0x34ff6b,_0x4895e6){var _0x27953f=squel[_0xf7ee('0x1e')]();return Promise[_0xf7ee('0x49')]()[_0xf7ee('0x4a')](function(){if(_0x34ff6b[_0xf7ee('0x6')]&&_0x3506eb[_0xf7ee('0x4')]===_0xf7ee('0x5')&&!_0x4895e6){return _0x3506eb[_0xf7ee('0x4f')]({'attributes':['id'],'raw':!![]});}})[_0xf7ee('0x4a')](function(_0xcc49e7){if(_0xcc49e7){if(_0xcc49e7[_0xf7ee('0x22')]===0x0){_0x27953f[_0xf7ee('0x45')](_0xf7ee('0x50'));}else{_0x27953f[_0xf7ee('0x45')](_0xf7ee('0x46'),_[_0xf7ee('0x3c')](_0xcc49e7,'id'));}}})['then'](function(){return _0x27953f;});}function buildContactsQuery(_0x33d284,_0xbfe378,_0x276ca7,_0x1b5f50,_0x4ec77d,_0x8a190b){if(_0xbfe378){_0xbfe378=_0x276ca7[_0xf7ee('0x51')];}_0x33d284=addFieldsToQuery(_0x33d284,_0xbfe378,_0x1b5f50,_0x8a190b,!![]);var _0x47067b=squel[_0xf7ee('0x52')]();_0x47067b=addFieldsToQuery(_0x47067b,_0xbfe378,_0x1b5f50,_0x8a190b,![]);if(_0x1b5f50||_0x8a190b){_0x33d284=applyJoinClauses(_0x33d284,!![]);_0x33d284[_0xf7ee('0x53')](_0xf7ee('0x54'));if(_0x276ca7[_0xf7ee('0x55')]){_0x47067b['limit'](_0x276ca7[_0xf7ee('0x55')]);}if(_0x276ca7[_0xf7ee('0x56')]){_0x47067b[_0xf7ee('0x56')](_0x276ca7[_0xf7ee('0x56')]);}}else{_0x47067b=applyJoinClauses(_0x47067b,![]);_0x47067b[_0xf7ee('0x53')](_0xf7ee('0x57'));if(_0x276ca7[_0xf7ee('0x55')]){_0x33d284[_0xf7ee('0x55')](_0x276ca7[_0xf7ee('0x55')]);}if(_0x276ca7[_0xf7ee('0x56')]){_0x33d284['offset'](_0x276ca7[_0xf7ee('0x56')]);}}_0x47067b[_0xf7ee('0x58')](_0x4ec77d);if(_0x276ca7[_0xf7ee('0x59')]){_0x276ca7[_0xf7ee('0x59')]['forEach'](function(_0x2aa95a){_0x33d284[_0xf7ee('0x59')]('c.'+_0x2aa95a[0x0],_0x2aa95a[0x1]===_0xf7ee('0x5a')?![]:!![]);_0x47067b[_0xf7ee('0x59')](_0xf7ee('0x5b')+_0x2aa95a[0x0],_0x2aa95a[0x1]===_0xf7ee('0x5a')?![]:!![]);});}_0x47067b[_0xf7ee('0x9')](_0x33d284,_0xf7ee('0x12'));return _0x47067b;}function getFilteredContacts(_0x12925e){var _0x4ca113=[];return db['Tag']['findAll']({'attributes':['id',_0xf7ee('0x31'),_0xf7ee('0x5c')],'raw':!![]})[_0xf7ee('0x4a')](function(_0x100650){_0x4ca113=_[_0xf7ee('0x5d')](_0x100650,'id');var _0x594a5d={'type':db[_0xf7ee('0x5e')][_0xf7ee('0x5f')][_0xf7ee('0x60')],'model':db[_0xf7ee('0x61')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xf7ee('0x62')][_0xf7ee('0x63')](_0x12925e[_0xf7ee('0x64')](),_0x594a5d);})['then'](function(_0x738c83){_0x738c83[_0xf7ee('0x1b')](function(_0x497d73){if(_0x497d73[_0xf7ee('0x1c')]){_0x497d73[_0xf7ee('0x65')]=[];_0x497d73[_0xf7ee('0x1c')][_0xf7ee('0x21')](',')[_0xf7ee('0x1b')](function(_0x5a530b){_0x497d73['Tags'][_0xf7ee('0x1a')](_0x4ca113[_0x5a530b]);});}delete _0x497d73[_0xf7ee('0x1c')];});return _0x738c83;});}function countFilteredContacts(_0x144cb9,_0x3b6e71){var _0x14830a=_0x144cb9[_0xf7ee('0x66')]();_0x14830a[_0xf7ee('0x1d')]('COUNT(*)');_0x14830a=applyJoinClauses(_0x14830a,!![]);_0x144cb9[_0xf7ee('0x53')](_0xf7ee('0x54'));var _0x1bf808=utils[_0xf7ee('0x1f')](_0x3b6e71);if(!_[_0xf7ee('0x67')](_0x1bf808)){_0x14830a[_0xf7ee('0xb')](_0xf7ee('0x68'),_0x1bf808);}var _0x114ef5={'type':db[_0xf7ee('0x5e')][_0xf7ee('0x5f')][_0xf7ee('0x60')],'raw':!![]};return db[_0xf7ee('0x62')][_0xf7ee('0x63')](_0x14830a[_0xf7ee('0x64')](),_0x114ef5)[_0xf7ee('0x4a')](function(_0x37d5e1){return _0x37d5e1[0x0][_0xf7ee('0x69')];});}module[_0xf7ee('0x6a')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0xfd86=['uc.UserId\x20=\x20?','\x20=\x20?','resolve','then','fields','filter','search','c.ListId\x20IS\x20NULL','attributes','group','c.id','limit','offset','subqry.id','having','order','subqry.','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','toString','Tags','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','query','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','role','agent','ListId','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','tools_tags','phone','mobile','fax','createdAt','updatedAt','deletedAt','TagIds','includes','forEach','GROUP_CONCAT(DISTINCT\x20t.id)','field','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','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.mobile\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','conditions','name','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','default','text','value','end','Tag','map','clause','and','tags','ids','User','user','skip','some','compact','Contact','push','c.ListId\x20IN\x20?'];(function(_0x4a963e,_0x2ed7d6){var _0x435fd3=function(_0x33ff39){while(--_0x33ff39){_0x4a963e['push'](_0x4a963e['shift']());}};_0x435fd3(++_0x2ed7d6);}(_0xfd86,0x14d));var _0x6fd8=function(_0x5ad220,_0x27407e){_0x5ad220=_0x5ad220-0x0;var _0xdec77d=_0xfd86[_0x5ad220];return _0xdec77d;};'use strict';var _=require(_0x6fd8('0x0'));var squel=require(_0x6fd8('0x1'));var as=require(_0x6fd8('0x2'));var qs=require(_0x6fd8('0x3'));var utils=require(_0x6fd8('0x4'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x1e5cd4,_0x349b24){var _0x12e87c=![];if(_0x1e5cd4[_0x6fd8('0x5')]===_0x6fd8('0x6')&&!_0x349b24['search']&&!_0x349b24[_0x6fd8('0x7')]&&_0x349b24['autocomplete']!=='true'){_0x12e87c=!![];}return _0x12e87c;}function getContactsSubquery(){return squel[_0x6fd8('0x8')]()[_0x6fd8('0x9')](_0x6fd8('0xa'),'c')[_0x6fd8('0xb')](_0x6fd8('0xc'));}function applyJoinClauses(_0x819b45,_0xebc06){var _0x1d8ada=_0xebc06?'c':'subqry';_0x819b45[_0x6fd8('0xd')](_0x6fd8('0xe'),'uc',_0x6fd8('0xf')+_0x1d8ada+'.id')[_0x6fd8('0xd')]('cm_contact_has_tags','ct','ct.CmContactId\x20=\x20'+_0x1d8ada+_0x6fd8('0x10'))[_0x6fd8('0xd')](_0x6fd8('0x11'),'t','t.id\x20=\x20ct.TagId');return _0x819b45;}function addFieldsToQuery(_0x17d5e8,_0x155262,_0x11a017,_0x3150c9,_0x570302){var _0x4ba8be=_0x570302?'c':'subqry';if(!_0x155262){_0x155262=['id','firstName','lastName',_0x6fd8('0x12'),_0x6fd8('0x13'),_0x6fd8('0x14'),'email',_0x6fd8('0x7'),'CompanyId',_0x6fd8('0x15'),_0x6fd8('0x16'),_0x6fd8('0x17'),_0x6fd8('0x18')];}else if(!_0x155262[_0x6fd8('0x19')]('id')){_0x155262['push']('id');}var _0x13ffd6=_0x11a017&&_0x570302||!_0x11a017&&!_0x570302;if(_0x3150c9){_0x13ffd6=_0x3150c9&&_0x570302||!_0x3150c9&&!_0x570302;}_0x155262[_0x6fd8('0x1a')](function(_0x531993){if(_0x531993===_0x6fd8('0x18')){if(_0x13ffd6){_0x17d5e8['field'](_0x6fd8('0x1b'),_0x531993);}else if(_0x11a017||_0x3150c9){_0x17d5e8[_0x6fd8('0x1c')](_0x4ba8be+'.'+_0x531993);}}else{_0x17d5e8[_0x6fd8('0x1c')](_0x4ba8be+'.'+_0x531993);}});return _0x17d5e8;}function getSqlClauses(){var _0x26ec7f={'default':squel['expr'](),'fields':squel[_0x6fd8('0x1d')](),'filter':squel[_0x6fd8('0x1d')](),'tags':{'clause':squel[_0x6fd8('0x1d')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x26ec7f;}function parseTagParameter(_0x5786c1){var _0x2e9622=squel[_0x6fd8('0x1d')]();if(_0x5786c1){var _0x7daa8=utils[_0x6fd8('0x1e')](_0x5786c1);_0x7daa8[_0x6fd8('0x1a')](function(_0x3d78ac){_0x2e9622['or'](_0x6fd8('0x1f'),'%,'+_0x3d78ac+',%');});}return _0x2e9622;}function parseSearchFilter(_0x55638f){var _0x419e76=squel['expr']();if(_0x55638f){var _0x93130a=_0x55638f[_0x6fd8('0x20')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x93130a[_0x6fd8('0x21')]('\x20')[_0x6fd8('0x22')]>0x1){_0x419e76['or'](_0x6fd8('0x23'),qs[_0x6fd8('0x24')](_0x93130a,!![]),null);}else{if(qs[_0x6fd8('0x25')](_0x93130a)){_0x419e76['or'](_0x6fd8('0x26'),_0x93130a+'%');_0x419e76['or']('c.phone\x20LIKE\x20?',_0x93130a+'%');_0x419e76['or'](_0x6fd8('0x27'),_0x93130a+'%');_0x419e76['or']('c.fax\x20LIKE\x20?',_0x93130a+'%');}else if(qs[_0x6fd8('0x28')](_0x93130a)){_0x419e76['or'](_0x6fd8('0x29'),_0x93130a+'%');}else{_0x419e76['or'](_0x6fd8('0x2a'),'%'+_0x93130a+'%');_0x419e76['or'](_0x6fd8('0x2b'),'%'+_0x93130a+'%');_0x419e76['or'](_0x6fd8('0x29'),'%'+_0x93130a+'%');}}}return _0x419e76;}function parseAdvancedSearchFilter(_0x22ea45,_0x492eb4){var _0x25ad54=getSqlClauses();var _0x596fb8=as[_0x6fd8('0x2c')](_0x22ea45);var _0x1db8c2=_0x596fb8['sqlOperator'];for(var _0x2618eb=0x0;_0x2618eb<_0x596fb8[_0x6fd8('0x2d')][_0x6fd8('0x22')];_0x2618eb++){var _0x1ff400=_0x596fb8[_0x6fd8('0x2d')][_0x2618eb];var _0x52d201='c';var _0x1ea61c=_['find'](_0x492eb4,[_0x6fd8('0x2e'),_0x1ff400[_0x6fd8('0x1c')]]);if(_0x1ea61c){if(_0x1ff400[_0x6fd8('0x1c')]===_0x6fd8('0x2f')||_0x1ea61c[_0x6fd8('0x30')]===_0x6fd8('0x31')){_0x1ff400['castTo']=_0x6fd8('0x32');}var _0x5318b8=as[_0x6fd8('0x33')](_0x52d201,_0x1ea61c[_0x6fd8('0x34')],_0x1ff400);_0x25ad54[_0x6fd8('0x35')][_0x1db8c2](_0x5318b8[_0x6fd8('0x36')],_0x5318b8[_0x6fd8('0x37')]['start'],_0x5318b8['value'][_0x6fd8('0x38')]);}else{if(_0x1ff400[_0x6fd8('0x1c')]===_0x6fd8('0x39')){var _0x218297=_0x1ff400[_0x6fd8('0x37')][_0x6fd8('0x21')](',')[_0x6fd8('0x3a')](function(_0x5166ed){return Number(_0x5166ed);});var _0x3c178f=parseTagParameter(_0x218297);_0x25ad54['tags'][_0x6fd8('0x3b')][_0x6fd8('0x3c')](_0x3c178f);_0x25ad54[_0x6fd8('0x3d')][_0x6fd8('0x3e')]=_0x218297;}else if(_0x1ff400[_0x6fd8('0x1c')]===_0x6fd8('0x3f')){_0x25ad54['user'][_0x6fd8('0x3b')][_0x6fd8('0x3c')]('uc.UserId\x20=\x20?',_0x1ff400['value']);_0x25ad54[_0x6fd8('0x40')][_0x6fd8('0x41')]=!![];}}}return _0x25ad54;}function parseModelFields(_0x2eb5d5,_0x209a56){var _0x107c38=squel[_0x6fd8('0x1d')]();var _0x331e74=_(_0x2eb5d5)['keys']()[_0x6fd8('0x3a')](function(_0x1930df){return _[_0x6fd8('0x42')](_0x209a56,[_0x6fd8('0x2e'),_0x1930df])?_0x1930df:undefined;})[_0x6fd8('0x43')]()[_0x6fd8('0x37')]();if(_0x2eb5d5[_0x6fd8('0x44')]){_0x331e74[_0x6fd8('0x45')]('Contact');}if(_0x2eb5d5[_0x6fd8('0x3f')]){_0x331e74['push'](_0x6fd8('0x3f'));}if(_0x331e74['length']>0x0){_0x331e74[_0x6fd8('0x1a')](function(_0x1271e0){if(_0x1271e0===_0x6fd8('0x7')){_0x107c38[_0x6fd8('0x3c')](_0x6fd8('0x46'),[]['concat'](_0x2eb5d5[_0x1271e0]));}else if(_0x1271e0===_0x6fd8('0x44')){var _0x416ffd='%'+_0x2eb5d5[_0x1271e0]+'%';_0x107c38['and']('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x416ffd);}else if(_0x1271e0===_0x6fd8('0x3f')){_0x107c38[_0x6fd8('0x3c')](_0x6fd8('0x47'),_0x2eb5d5[_0x1271e0]);}else{_0x107c38[_0x6fd8('0x3c')]('c.'+_0x1271e0+_0x6fd8('0x48'),_0x2eb5d5[_0x1271e0]);}});}return _0x107c38;}function parseQueryParameters(_0xdb8f50,_0x3452a4){var _0x554cbb=getSqlClauses();return Promise[_0x6fd8('0x49')]()[_0x6fd8('0x4a')](function(){return parseModelFields(_0xdb8f50,_0x3452a4);})[_0x6fd8('0x4a')](function(_0x12efc9){_0x554cbb[_0x6fd8('0x4b')][_0x6fd8('0x3c')](_0x12efc9);return parseTagParameter(_0xdb8f50['tag']);})[_0x6fd8('0x4a')](function(_0x1a057a){_0x554cbb['tags'][_0x6fd8('0x3b')][_0x6fd8('0x3c')](_0x1a057a);return parseSearchFilter(_0xdb8f50['filter']);})[_0x6fd8('0x4a')](function(_0x214060){_0x554cbb[_0x6fd8('0x4c')]=_0x214060;return _0x554cbb;});}function checkListsRestrictions(_0xeb79d9,_0x3275a0,_0x253101){var _0x44a9b=squel[_0x6fd8('0x1d')]();return Promise['resolve']()[_0x6fd8('0x4a')](function(){if(_0x3275a0[_0x6fd8('0x4d')]&&_0xeb79d9[_0x6fd8('0x5')]===_0x6fd8('0x6')&&!_0x253101){return _0xeb79d9['getLists']({'attributes':['id'],'raw':!![]});}})['then'](function(_0x22954c){if(_0x22954c){if(_0x22954c[_0x6fd8('0x22')]===0x0){_0x44a9b[_0x6fd8('0x3c')](_0x6fd8('0x4e'));}else{_0x44a9b[_0x6fd8('0x3c')]('c.ListId\x20IN\x20?',_[_0x6fd8('0x3a')](_0x22954c,'id'));}}})[_0x6fd8('0x4a')](function(){return _0x44a9b;});}function buildContactsQuery(_0x57489e,_0x4dbbd0,_0x7732f9,_0x148c13,_0x413440,_0x397ca7){if(_0x4dbbd0){_0x4dbbd0=_0x7732f9[_0x6fd8('0x4f')];}_0x57489e=addFieldsToQuery(_0x57489e,_0x4dbbd0,_0x148c13,_0x397ca7,!![]);var _0x51e244=squel[_0x6fd8('0x8')]();_0x51e244=addFieldsToQuery(_0x51e244,_0x4dbbd0,_0x148c13,_0x397ca7,![]);if(_0x148c13||_0x397ca7){_0x57489e=applyJoinClauses(_0x57489e,!![]);_0x57489e[_0x6fd8('0x50')](_0x6fd8('0x51'));if(_0x7732f9['limit']){_0x51e244[_0x6fd8('0x52')](_0x7732f9[_0x6fd8('0x52')]);}if(_0x7732f9[_0x6fd8('0x53')]){_0x51e244[_0x6fd8('0x53')](_0x7732f9[_0x6fd8('0x53')]);}}else{_0x51e244=applyJoinClauses(_0x51e244,![]);_0x51e244[_0x6fd8('0x50')](_0x6fd8('0x54'));if(_0x7732f9[_0x6fd8('0x52')]){_0x57489e[_0x6fd8('0x52')](_0x7732f9[_0x6fd8('0x52')]);}if(_0x7732f9['offset']){_0x57489e[_0x6fd8('0x53')](_0x7732f9[_0x6fd8('0x53')]);}}_0x51e244[_0x6fd8('0x55')](_0x413440);if(_0x7732f9[_0x6fd8('0x56')]){_0x7732f9['order'][_0x6fd8('0x1a')](function(_0x5a3b1d){_0x57489e[_0x6fd8('0x56')]('c.'+_0x5a3b1d[0x0],_0x5a3b1d[0x1]==='DESC'?![]:!![]);_0x51e244[_0x6fd8('0x56')](_0x6fd8('0x57')+_0x5a3b1d[0x0],_0x5a3b1d[0x1]==='DESC'?![]:!![]);});}_0x51e244[_0x6fd8('0x9')](_0x57489e,'subqry');return _0x51e244;}function getFilteredContacts(_0x485509){var _0x190503=[];return db[_0x6fd8('0x39')]['findAll']({'attributes':['id',_0x6fd8('0x2e'),'color'],'raw':!![]})['then'](function(_0x145fc8){_0x190503=_[_0x6fd8('0x58')](_0x145fc8,'id');var _0x2f4b2b={'type':db[_0x6fd8('0x59')][_0x6fd8('0x5a')][_0x6fd8('0x5b')],'model':db[_0x6fd8('0x5c')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x6fd8('0x5d')]['query'](_0x485509[_0x6fd8('0x5e')](),_0x2f4b2b);})[_0x6fd8('0x4a')](function(_0x5acee7){_0x5acee7[_0x6fd8('0x1a')](function(_0x59e2d6){if(_0x59e2d6['TagIds']){_0x59e2d6[_0x6fd8('0x5f')]=[];_0x59e2d6['TagIds'][_0x6fd8('0x21')](',')['forEach'](function(_0x3889d9){_0x59e2d6[_0x6fd8('0x5f')]['push'](_0x190503[_0x3889d9]);});}delete _0x59e2d6[_0x6fd8('0x18')];});return _0x5acee7;});}function countFilteredContacts(_0x2453af,_0x149d70){var _0x3e5ecf=_0x2453af[_0x6fd8('0x60')]();_0x3e5ecf['field'](_0x6fd8('0x61'));_0x3e5ecf=applyJoinClauses(_0x3e5ecf,!![]);_0x2453af['group'](_0x6fd8('0x51'));var _0x5844f8=utils[_0x6fd8('0x1e')](_0x149d70);if(!_[_0x6fd8('0x62')](_0x5844f8)){_0x3e5ecf[_0x6fd8('0xb')](_0x6fd8('0x63'),_0x5844f8);}var _0x5b35a8={'type':db[_0x6fd8('0x59')]['QueryTypes'][_0x6fd8('0x5b')],'raw':!![]};return db[_0x6fd8('0x5d')][_0x6fd8('0x64')](_0x3e5ecf['toString'](),_0x5b35a8)['then'](function(_0x6a0928){return _0x6a0928[0x0][_0x6fd8('0x61')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 5511767..60ed02a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c35=['secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','hasOwnProperty','encryptFile','createWriteStream','data','update','end','final','binary','write','close','createReadStream','createDecipher','unlink','encryptString','secret','utf8','base64','decryptString','crypto','bluebird','../../config/environment','app'];(function(_0x39a6a3,_0x43d929){var _0x5a39b7=function(_0x32e5ad){while(--_0x32e5ad){_0x39a6a3['push'](_0x39a6a3['shift']());}};_0x5a39b7(++_0x43d929);}(_0x9c35,0x146));var _0x59c3=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0x9c35[_0x4b7b62];return _0x2280df;};'use strict';var crypto=require(_0x59c3('0x0'));var fs=require('fs');var BPromise=require(_0x59c3('0x1'));var _=require('lodash');var config=require(_0x59c3('0x2'));var logger=require('../../config/logger')(_0x59c3('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x59c3('0x4')][_0x59c3('0x5')],'algorithm':_0x59c3('0x6')};const fileOptions={'algorithm':_0x59c3('0x7')};if(config[_0x59c3('0x8')]&&config[_0x59c3('0x8')][_0x59c3('0x9')]){var isSupported=isAlgorithmSupported(config[_0x59c3('0x8')][_0x59c3('0x9')]);if(isSupported){fileOptions['algorithm']=config['encrypt']['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x59c3('0xa')](',\x20');logger[_0x59c3('0xb')](config[_0x59c3('0x8')][_0x59c3('0x9')],_0x59c3('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x41e293){return AES_SUPPORTED_RX[_0x59c3('0xd')](_0x41e293);}function getSupportedCiphers(){return crypto[_0x59c3('0xe')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x320aa0){return getSupportedCiphers()['indexOf'](_0x320aa0)>-0x1;}function combineOptions(_0xaf0f95){var _0x3a8271={};for(var _0x199149 in fileOptions){if(fileOptions[_0x59c3('0xf')](_0x199149)){_0x3a8271[_0x199149]=fileOptions[_0x199149];}}if(_0xaf0f95){for(var _0x25f3b9 in _0xaf0f95){if(_0xaf0f95[_0x59c3('0xf')](_0x25f3b9)){_0x3a8271[_0x25f3b9]=_0xaf0f95[_0x25f3b9];}}}return _0x3a8271;}exports[_0x59c3('0x10')]=function(_0x5b0722,_0x11d1ad,_0x2c608f,_0x131560){return new BPromise(function(_0x138ef4,_0x3d314a){_0x131560=combineOptions(_0x131560);var _0x36153b=new Buffer(_0x2c608f);var _0x55bab6=fs['createReadStream'](_0x5b0722);var _0x105c57=fs[_0x59c3('0x11')](_0x11d1ad);var _0x3bd045=crypto['createCipher'](_0x131560['algorithm'],_0x36153b);_0x55bab6['on'](_0x59c3('0x12'),function(_0x264923){var _0x2141d7=new Buffer(_0x3bd045[_0x59c3('0x13')](_0x264923),'binary');_0x105c57['write'](_0x2141d7);});_0x55bab6['on'](_0x59c3('0x14'),function(){try{var _0x3a2b8c=new Buffer(_0x3bd045[_0x59c3('0x15')](_0x59c3('0x16')),_0x59c3('0x16'));_0x105c57[_0x59c3('0x17')](_0x3a2b8c);_0x105c57[_0x59c3('0x14')]();_0x105c57['on'](_0x59c3('0x18'),function(){return _0x138ef4(_0x11d1ad);});}catch(_0x352ba0){fs['unlink'](_0x11d1ad);return _0x3d314a(_0x352ba0);}});});};exports['decryptFile']=function(_0x5c3a26,_0x42f94c,_0x3a315b,_0x274c60){return new BPromise(function(_0x25d7da,_0x1ff307){_0x274c60=combineOptions(_0x274c60);var _0x437e93=new Buffer(_0x3a315b);var _0x2863e7=fs[_0x59c3('0x19')](_0x5c3a26);var _0x4d526f=fs[_0x59c3('0x11')](_0x42f94c);var _0x3cd40e=crypto[_0x59c3('0x1a')](_0x274c60['algorithm'],_0x437e93);_0x2863e7['on'](_0x59c3('0x12'),function(_0x2826aa){var _0xeaeabe=new Buffer(_0x3cd40e[_0x59c3('0x13')](_0x2826aa),_0x59c3('0x16'));_0x4d526f[_0x59c3('0x17')](_0xeaeabe);});_0x2863e7['on']('end',function(){try{var _0x1ba5a5=new Buffer(_0x3cd40e['final'](_0x59c3('0x16')),_0x59c3('0x16'));_0x4d526f[_0x59c3('0x17')](_0x1ba5a5);_0x4d526f[_0x59c3('0x14')]();_0x4d526f['on'](_0x59c3('0x18'),function(){return _0x25d7da(_0x42f94c);});}catch(_0x402ace){fs[_0x59c3('0x1b')](_0x42f94c);return _0x1ff307(_0x402ace);}});});};exports[_0x59c3('0x1c')]=function(_0x26ab5b,_0x2499e1,_0x3dab66){var _0x3d9eaf=_0x3dab66||stringOptions[_0x59c3('0x9')];var _0x2d0250=_0x2499e1||stringOptions[_0x59c3('0x1d')];var _0x370a11=crypto['createCipher'](_0x3d9eaf,_0x2d0250);var _0x4e8fa9=_0x370a11[_0x59c3('0x13')](_0x26ab5b,_0x59c3('0x1e'),'base64');_0x4e8fa9+=_0x370a11[_0x59c3('0x15')](_0x59c3('0x1f'));return _0x4e8fa9;};exports[_0x59c3('0x20')]=function(_0x293c1a,_0x459c43,_0x8c13a5){var _0x1c4845=_0x8c13a5||stringOptions[_0x59c3('0x9')];var _0x73b36=_0x459c43||stringOptions['secret'];var _0x3fa7c0=crypto[_0x59c3('0x1a')](_0x1c4845,_0x73b36);var _0x3a8e46=_0x3fa7c0[_0x59c3('0x13')](_0x293c1a,_0x59c3('0x1f'),'utf8');_0x3a8e46+=_0x3fa7c0[_0x59c3('0x15')](_0x59c3('0x1e'));return _0x3a8e46;};
\ No newline at end of file
+var _0x7835=['createDecipher','encryptString','secret','base64','decryptString','utf8','crypto','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','indexOf','hasOwnProperty','encryptFile','createReadStream','createCipher','data','update','binary','write','end','final','close','unlink','decryptFile','createWriteStream'];(function(_0x4dc7b9,_0x319d5a){var _0x3ab114=function(_0x51a9df){while(--_0x51a9df){_0x4dc7b9['push'](_0x4dc7b9['shift']());}};_0x3ab114(++_0x319d5a);}(_0x7835,0x12e));var _0x5783=function(_0x26eb82,_0x12aefc){_0x26eb82=_0x26eb82-0x0;var _0x39aab5=_0x7835[_0x26eb82];return _0x39aab5;};'use strict';var crypto=require(_0x5783('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x5783('0x1'));var config=require(_0x5783('0x2'));var logger=require(_0x5783('0x3'))(_0x5783('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x5783('0x5')][_0x5783('0x6')],'algorithm':_0x5783('0x7')};const fileOptions={'algorithm':_0x5783('0x8')};if(config[_0x5783('0x9')]&&config['encrypt']['algorithm']){var isSupported=isAlgorithmSupported(config['encrypt'][_0x5783('0xa')]);if(isSupported){fileOptions[_0x5783('0xa')]=config[_0x5783('0x9')][_0x5783('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x5783('0xb')](',\x20');logger[_0x5783('0xc')](config[_0x5783('0x9')][_0x5783('0xa')],_0x5783('0xd'),supportedAlgorithms);}}function isASupportedCipher(_0x2a5133){return AES_SUPPORTED_RX[_0x5783('0xe')](_0x2a5133);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x5783('0xf')](isASupportedCipher);}function isAlgorithmSupported(_0xf23b8f){return getSupportedCiphers()[_0x5783('0x10')](_0xf23b8f)>-0x1;}function combineOptions(_0x4b38e1){var _0x5a4e14={};for(var _0x448253 in fileOptions){if(fileOptions[_0x5783('0x11')](_0x448253)){_0x5a4e14[_0x448253]=fileOptions[_0x448253];}}if(_0x4b38e1){for(var _0x5d2bfd in _0x4b38e1){if(_0x4b38e1[_0x5783('0x11')](_0x5d2bfd)){_0x5a4e14[_0x5d2bfd]=_0x4b38e1[_0x5d2bfd];}}}return _0x5a4e14;}exports[_0x5783('0x12')]=function(_0x4a1d92,_0x5bb0af,_0x587c6d,_0x2ff0b4){return new BPromise(function(_0x4fb98d,_0x2aedd7){_0x2ff0b4=combineOptions(_0x2ff0b4);var _0xca070d=new Buffer(_0x587c6d);var _0x1f7226=fs[_0x5783('0x13')](_0x4a1d92);var _0x184246=fs['createWriteStream'](_0x5bb0af);var _0x216b01=crypto[_0x5783('0x14')](_0x2ff0b4[_0x5783('0xa')],_0xca070d);_0x1f7226['on'](_0x5783('0x15'),function(_0x14174c){var _0x2c6a49=new Buffer(_0x216b01[_0x5783('0x16')](_0x14174c),_0x5783('0x17'));_0x184246[_0x5783('0x18')](_0x2c6a49);});_0x1f7226['on'](_0x5783('0x19'),function(){try{var _0x1fe533=new Buffer(_0x216b01[_0x5783('0x1a')](_0x5783('0x17')),_0x5783('0x17'));_0x184246[_0x5783('0x18')](_0x1fe533);_0x184246['end']();_0x184246['on'](_0x5783('0x1b'),function(){return _0x4fb98d(_0x5bb0af);});}catch(_0x4b08b8){fs[_0x5783('0x1c')](_0x5bb0af);return _0x2aedd7(_0x4b08b8);}});});};exports[_0x5783('0x1d')]=function(_0x4a3b0f,_0x344cde,_0x46e9ef,_0x36ec12){return new BPromise(function(_0x181e67,_0x761ef2){_0x36ec12=combineOptions(_0x36ec12);var _0x3e66c0=new Buffer(_0x46e9ef);var _0x33a0f8=fs[_0x5783('0x13')](_0x4a3b0f);var _0xef9176=fs[_0x5783('0x1e')](_0x344cde);var _0x1c65ce=crypto[_0x5783('0x1f')](_0x36ec12[_0x5783('0xa')],_0x3e66c0);_0x33a0f8['on'](_0x5783('0x15'),function(_0x3ca903){var _0x8b08b3=new Buffer(_0x1c65ce[_0x5783('0x16')](_0x3ca903),_0x5783('0x17'));_0xef9176[_0x5783('0x18')](_0x8b08b3);});_0x33a0f8['on'](_0x5783('0x19'),function(){try{var _0x4ba31a=new Buffer(_0x1c65ce[_0x5783('0x1a')](_0x5783('0x17')),'binary');_0xef9176[_0x5783('0x18')](_0x4ba31a);_0xef9176[_0x5783('0x19')]();_0xef9176['on'](_0x5783('0x1b'),function(){return _0x181e67(_0x344cde);});}catch(_0x3efc28){fs[_0x5783('0x1c')](_0x344cde);return _0x761ef2(_0x3efc28);}});});};exports[_0x5783('0x20')]=function(_0xf324f,_0x452df1,_0x4e4a48){var _0x2ecd0b=_0x4e4a48||stringOptions[_0x5783('0xa')];var _0x14f4c3=_0x452df1||stringOptions[_0x5783('0x21')];var _0x42e74b=crypto[_0x5783('0x14')](_0x2ecd0b,_0x14f4c3);var _0x3652c5=_0x42e74b['update'](_0xf324f,'utf8',_0x5783('0x22'));_0x3652c5+=_0x42e74b[_0x5783('0x1a')](_0x5783('0x22'));return _0x3652c5;};exports[_0x5783('0x23')]=function(_0x4425b3,_0x4aa16f,_0x1a7701){var _0x42c1c3=_0x1a7701||stringOptions['algorithm'];var _0x194c61=_0x4aa16f||stringOptions[_0x5783('0x21')];var _0x2f2264=crypto['createDecipher'](_0x42c1c3,_0x194c61);var _0x2ba4e5=_0x2f2264[_0x5783('0x16')](_0x4425b3,_0x5783('0x22'),_0x5783('0x24'));_0x2ba4e5+=_0x2f2264['final'](_0x5783('0x24'));return _0x2ba4e5;};
\ No newline at end of file
index 4710ddd..0a71f00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd67c=['mkdirSync','csv','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','inspect','Failed','finally','exit','util','lodash','to-csv','rimraf','../../mysqldb','dbH','analytics','argv','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','num','Empty','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.csv','join'];(function(_0xbdc7cc,_0xa15a2f){var _0x3df136=function(_0x4096d9){while(--_0x4096d9){_0xbdc7cc['push'](_0xbdc7cc['shift']());}};_0x3df136(++_0xa15a2f);}(_0xd67c,0xf1));var _0xcd67=function(_0xdd0313,_0x251c2b){_0xdd0313=_0xdd0313-0x0;var _0x2bd7e8=_0xd67c[_0xdd0313];return _0x2bd7e8;};'use strict';var util=require(_0xcd67('0x0'));var path=require('path');var _=require(_0xcd67('0x1'));var csv=require(_0xcd67('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0xcd67('0x3'));var db=require('../../mysqldb')['db'];var dbH=require(_0xcd67('0x4'))[_0xcd67('0x5')];var logger=require('../../config/logger')(_0xcd67('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0xcd67('0x7')][0x2]);var QUERY=process[_0xcd67('0x7')][0x3];var PATH=process[_0xcd67('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x25f267,_0x5d213d){var _0x168152={'status':_0x25f267};var _0xbb5691={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5d213d){_0x168152['savename']=_0x5d213d;}return db[_0xcd67('0x8')][_0xcd67('0x9')](_0x168152,_0xbb5691);}function main(){var _0x2b1499=0x1388;var _0x46083c;logger[_0xcd67('0xa')](util[_0xcd67('0xb')](_0xcd67('0xc'),EXTRACTED_REPORT_ID,_0xcd67('0xd')));return db['Setting'][_0xcd67('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xcd67('0xf'),_0xcd67('0x10')]})['then'](function(_0xcda4c1){if(_0xcda4c1){_0x46083c=_0xcda4c1;_0x2b1499=_0x46083c['splitSizeCsv']||0x1388;}})[_0xcd67('0x11')](function(){return dbH[_0xcd67('0x12')][_0xcd67('0x13')](util[_0xcd67('0xb')](_0xcd67('0x14'),QUERY),{'type':dbH[_0xcd67('0x12')]['QueryTypes'][_0xcd67('0x15')]});})[_0xcd67('0x11')](function(_0x3daab2){if(!_0x3daab2[0x0][_0xcd67('0x16')]){return analyticExtractedReport(_0xcd67('0x17'));}var _0x1b641e=[];var _0x550122=0x0;if(_0x46083c[_0xcd67('0xf')]){if(_0x3daab2&&_0x3daab2[_0xcd67('0x18')]){var _0x21f3f4=_[_0xcd67('0x19')](_0x3daab2[0x0][_0xcd67('0x16')]/_0x2b1499);var _0x1dbc0d=Number[_0xcd67('0x1a')](_0x3daab2[0x0][_0xcd67('0x16')]/_0x2b1499)?_0x3daab2[0x0][_0xcd67('0x16')]%_0x2b1499:0x0;_0x21f3f4[_0xcd67('0x1b')](function(_0x3864b4){if(_0x3864b4>0x0){_0x550122+=_0x2b1499;}_0x1b641e[_0xcd67('0x1c')](dbH[_0xcd67('0x12')][_0xcd67('0x13')](util['format'](_0xcd67('0x1d'),QUERY,_0x2b1499,_0x550122),{'type':dbH[_0xcd67('0x12')][_0xcd67('0x1e')][_0xcd67('0x15')]}));});if(_0x1dbc0d>0x0){_0x550122+=_0x2b1499;_0x1b641e['push'](dbH['sequelize'][_0xcd67('0x13')](util['format'](_0xcd67('0x1d'),QUERY,_0x1dbc0d,_0x550122),{'type':dbH[_0xcd67('0x12')][_0xcd67('0x1e')][_0xcd67('0x15')]}));}}}else{_0x1b641e['push'](dbH[_0xcd67('0x12')][_0xcd67('0x13')](QUERY,{'type':dbH['sequelize'][_0xcd67('0x1e')][_0xcd67('0x15')]}));}var _0x247641=path[_0xcd67('0x1f')](PATH);var _0x58374a=path[_0xcd67('0x20')](PATH,_0xcd67('0x21'));var _0x1dca54=_0x46083c[_0xcd67('0xf')]&&_0x1b641e[_0xcd67('0x18')]>0x1;var _0x2f6f63=[];if(!fs['existsSync'](path[_0xcd67('0x22')](_0x247641,_0x58374a))&&_0x1dca54){fs[_0xcd67('0x23')](path[_0xcd67('0x22')](_0x247641,_0x58374a));}return BPromise['each'](_0x1b641e,function(_0x2f93bd){_0x2f6f63[_0xcd67('0x1c')](_0x2f93bd);})['then'](function(){for(var _0x33c082=0x0;_0x33c082<_0x2f6f63[_0xcd67('0x18')];_0x33c082+=0x1){var _0x2347d8;var _0x346209=_0x2f6f63[_0x33c082];if(_0x1dca54){_0x2347d8=path['join'](_0x247641,_0x58374a,util[_0xcd67('0xb')]('%s%d.%s',_0x58374a,_0x33c082,_0xcd67('0x24')));}else{_0x2347d8=path[_0xcd67('0x22')](_0x247641,util[_0xcd67('0xb')]('%s.%s',_0x58374a,'csv'));}fs[_0xcd67('0x25')](_0x2347d8,csv(_0x346209));}})[_0xcd67('0x11')](function(){if(_0x1dca54){return new Promise(function(_0x1d40ed){zipdir(path[_0xcd67('0x22')](_0x247641,_0x58374a),{'saveTo':path['join'](_0x247641,util['format']('%s.%s',_0x58374a,_0xcd67('0x26')))},function(_0x3142e0,_0x2689ac){rimraf(path[_0xcd67('0x22')](_0x247641,_0x58374a),function(){});_0x1d40ed(_0xcd67('0x27'));});});}})['then'](function(){logger[_0xcd67('0xa')](util['format'](_0xcd67('0x28'),EXTRACTED_REPORT_ID,_0xcd67('0xd')));return analyticExtractedReport('Completed',_0x1dca54?util[_0xcd67('0xb')]('%s.%s',_0x58374a,_0x1dca54?_0xcd67('0x26'):'csv'):null);});})[_0xcd67('0x29')](function(_0x5e980f){logger[_0xcd67('0xa')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xcd67('0xd')),util[_0xcd67('0x2a')](_0x5e980f,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xcd67('0x2b'));})[_0xcd67('0x2c')](function(){process[_0xcd67('0x2d')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x866d=['Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','util','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','savename','update','info','CSV','Setting','split','splitSizeCsv','then','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','existsSync','join','mkdirSync','each','csv','%s.%s','writeFileSync','zip','zip\x20finished'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x866d,0xe5));var _0xd866=function(_0x309bc4,_0x7780f2){_0x309bc4=_0x309bc4-0x0;var _0x32c905=_0x866d[_0x309bc4];return _0x32c905;};'use strict';var util=require(_0xd866('0x0'));var path=require('path');var _=require('lodash');var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0xd866('0x1'));var zipdir=require(_0xd866('0x2'));var rimraf=require(_0xd866('0x3'));var db=require(_0xd866('0x4'))['db'];var dbH=require('../../mysqldb')[_0xd866('0x5')];var logger=require('../../config/logger')(_0xd866('0x6'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xd866('0x7')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2a9158,_0x5227ea){var _0x240661={'status':_0x2a9158};var _0x58db91={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5227ea){_0x240661[_0xd866('0x8')]=_0x5227ea;}return db['AnalyticExtractedReport'][_0xd866('0x9')](_0x240661,_0x58db91);}function main(){var _0x1f5f44=0x1388;var _0x409a4d;logger[_0xd866('0xa')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xd866('0xb')));return db[_0xd866('0xc')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xd866('0xd'),_0xd866('0xe')]})['then'](function(_0x1181dd){if(_0x1181dd){_0x409a4d=_0x1181dd;_0x1f5f44=_0x409a4d[_0xd866('0xe')]||0x1388;}})[_0xd866('0xf')](function(){return dbH['sequelize'][_0xd866('0x10')](util[_0xd866('0x11')](_0xd866('0x12'),QUERY),{'type':dbH[_0xd866('0x13')][_0xd866('0x14')][_0xd866('0x15')]});})[_0xd866('0xf')](function(_0x5e6746){if(!_0x5e6746[0x0][_0xd866('0x16')]){return analyticExtractedReport(_0xd866('0x17'));}var _0x52b6df=[];var _0x20c44b=0x0;if(_0x409a4d[_0xd866('0xd')]){if(_0x5e6746&&_0x5e6746[_0xd866('0x18')]){var _0x152c23=_['range'](_0x5e6746[0x0]['num']/_0x1f5f44);var _0x3a117a=Number[_0xd866('0x19')](_0x5e6746[0x0][_0xd866('0x16')]/_0x1f5f44)?_0x5e6746[0x0]['num']%_0x1f5f44:0x0;_0x152c23[_0xd866('0x1a')](function(_0x4e81bb){if(_0x4e81bb>0x0){_0x20c44b+=_0x1f5f44;}_0x52b6df[_0xd866('0x1b')](dbH[_0xd866('0x13')][_0xd866('0x10')](util[_0xd866('0x11')](_0xd866('0x1c'),QUERY,_0x1f5f44,_0x20c44b),{'type':dbH[_0xd866('0x13')][_0xd866('0x14')][_0xd866('0x15')]}));});if(_0x3a117a>0x0){_0x20c44b+=_0x1f5f44;_0x52b6df[_0xd866('0x1b')](dbH['sequelize'][_0xd866('0x10')](util[_0xd866('0x11')](_0xd866('0x1c'),QUERY,_0x3a117a,_0x20c44b),{'type':dbH[_0xd866('0x13')][_0xd866('0x14')]['SELECT']}));}}}else{_0x52b6df[_0xd866('0x1b')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0xd866('0x13')][_0xd866('0x14')][_0xd866('0x15')]}));}var _0x3712ac=path[_0xd866('0x1d')](PATH);var _0x4011d9=path[_0xd866('0x1e')](PATH,_0xd866('0x1f'));var _0x5e4b97=_0x409a4d[_0xd866('0xd')]&&_0x52b6df[_0xd866('0x18')]>0x1;var _0x1c8c72=[];if(!fs[_0xd866('0x20')](path[_0xd866('0x21')](_0x3712ac,_0x4011d9))&&_0x5e4b97){fs[_0xd866('0x22')](path[_0xd866('0x21')](_0x3712ac,_0x4011d9));}return BPromise[_0xd866('0x23')](_0x52b6df,function(_0x2e4e7c){_0x1c8c72['push'](_0x2e4e7c);})[_0xd866('0xf')](function(){for(var _0xc257b1=0x0;_0xc257b1<_0x1c8c72[_0xd866('0x18')];_0xc257b1+=0x1){var _0x384416;var _0x4a9c95=_0x1c8c72[_0xc257b1];if(_0x5e4b97){_0x384416=path[_0xd866('0x21')](_0x3712ac,_0x4011d9,util[_0xd866('0x11')]('%s%d.%s',_0x4011d9,_0xc257b1,_0xd866('0x24')));}else{_0x384416=path[_0xd866('0x21')](_0x3712ac,util[_0xd866('0x11')](_0xd866('0x25'),_0x4011d9,_0xd866('0x24')));}fs[_0xd866('0x26')](_0x384416,csv(_0x4a9c95));}})[_0xd866('0xf')](function(){if(_0x5e4b97){return new Promise(function(_0x197353){zipdir(path[_0xd866('0x21')](_0x3712ac,_0x4011d9),{'saveTo':path['join'](_0x3712ac,util[_0xd866('0x11')](_0xd866('0x25'),_0x4011d9,_0xd866('0x27')))},function(_0x4dbb0a,_0x394fdb){rimraf(path['join'](_0x3712ac,_0x4011d9),function(){});_0x197353(_0xd866('0x28'));});});}})['then'](function(){logger[_0xd866('0xa')](util[_0xd866('0x11')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xd866('0x29'),_0x5e4b97?util[_0xd866('0x11')](_0xd866('0x25'),_0x4011d9,_0x5e4b97?_0xd866('0x27'):'csv'):null);});})['catch'](function(_0xe53a6a){logger[_0xd866('0xa')](util[_0xd866('0x11')](_0xd866('0x2a'),EXTRACTED_REPORT_ID,_0xd866('0xb')),util[_0xd866('0x2b')](_0xe53a6a,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xd866('0x2c'));})['finally'](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index d3c21b9..c8c978c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a62=['then','range','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','dirname','basename','.pdf','join','mkdirSync','each','flatten','pdf','%s.%s','all','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','findOne','query','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','interactionId','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfKitDocument','path','util','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','map','pick','toString','value','fill','length','auto','body','push','concat','forEach','format','name','startDate','endDate','header','pageBreak','before','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x7a62,0x1d9));var _0x27a6=function(_0x4246ea,_0xb40194){_0x4246ea=_0x4246ea-0x0;var _0x3747a7=_0x7a62[_0x4246ea];return _0x3747a7;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x27a6('0x0'));var path=require('path');var moment=require(_0x27a6('0x1'));var htmlToPdfmake=require(_0x27a6('0x2'));var PdfPrinter=require(_0x27a6('0x3'));var zipdir=require(_0x27a6('0x4'));var rimraf=require(_0x27a6('0x5'));var JSDOM=require('jsdom')['JSDOM'];var window=new JSDOM('')['window'];var BPromise=require(_0x27a6('0x6'));var db=require(_0x27a6('0x7'))['db'];var dbH=require(_0x27a6('0x7'))[_0x27a6('0x8')];var logger=require(_0x27a6('0x9'))(_0x27a6('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x27a6('0xb')][0x2]);var QUERY=process[_0x27a6('0xb')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x27a6('0xb')][0x5];var FORMAT=_0x27a6('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x82384e,_0x453d4e){var _0x269a96={'status':_0x82384e};var _0x18be56={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x453d4e){_0x269a96['savename']=_0x453d4e;}return db[_0x27a6('0xd')]['update'](_0x269a96,_0x18be56);}function getHeaders(_0x34851a){return _[_0x27a6('0xe')](_0x34851a,function(_0xbc9776){return{'text':_0xbc9776,'style':'tableHeader'};});}function getRows(_0x34f328,_0x53ce05){return _['map'](_0x53ce05,function(_0x1a849a){return _(_0x1a849a)[_0x27a6('0xf')](_0x34f328)[_0x27a6('0xe')](function(_0x5f2470){return _0x5f2470?_[_0x27a6('0x10')](_0x5f2470):'';})[_0x27a6('0x11')]();});}function createTable(_0x462c25,_0x2860f2){var _0x36e1fe={'widths':_[_0x27a6('0x12')](Array(_0x462c25[_0x27a6('0x13')]),0x91),'heights':function(_0x77c851){return _0x77c851===0x0?_0x27a6('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x10d5dc=getHeaders(_0x462c25);_0x36e1fe[_0x27a6('0x15')][_0x27a6('0x16')](_0x10d5dc);var _0x47e813=getRows(_0x462c25,_0x2860f2);_0x36e1fe[_0x27a6('0x15')]=_0x36e1fe[_0x27a6('0x15')][_0x27a6('0x17')](_0x47e813);return _0x36e1fe;}function createTables(_0x31a65f){var _0x3e1907=[];var _0x1c880b=_['chunk'](Object['keys'](_0x31a65f[0x0]),0x5);_0x1c880b[_0x27a6('0x18')](function(_0x24204c){_0x3e1907['push'](createTable(_0x24204c,_0x31a65f));});return _0x3e1907;}function getPDFDocDefinition(_0x2e8d55){var _0xeddafa=util[_0x27a6('0x19')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0x27a6('0x1a')],moment(EXTRACTED_REPORT[_0x27a6('0x1b')])[_0x27a6('0x19')](FORMAT),moment(EXTRACTED_REPORT[_0x27a6('0x1c')])[_0x27a6('0x19')](FORMAT));var _0x579f87=[];for(var _0x50ed59=0x0;_0x50ed59<_0x2e8d55[_0x27a6('0x13')];_0x50ed59++){var _0x3e271e=[];if(_0x50ed59===0x0){_0x3e271e[_0x27a6('0x16')]({'text':_0xeddafa,'style':_0x27a6('0x1d')});}var _0x19e1ef={'table':_0x2e8d55[_0x50ed59]};if(_0x50ed59>0x0){_0x19e1ef[_0x27a6('0x1e')]=_0x27a6('0x1f');_0x19e1ef['margin']=[0x0,0x46,0x0,0x0];}_0x3e271e['push'](_0x19e1ef);_0x579f87[_0x27a6('0x16')](_0x3e271e);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x579f87,'footer':function(_0x2d4dd7,_0x3ee24c){return{'text':_0x2d4dd7[_0x27a6('0x10')]()+_0x27a6('0x20')+_0x3ee24c,'style':_0x27a6('0x21')};},'defaultStyle':{'font':_0x27a6('0x22')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x27a6('0x23')},'footer':{'alignment':_0x27a6('0x24'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x446378){var _0x175a0f=0x1388;var _0x1a0f80;if(!_0x446378[0x0][_0x27a6('0x25')]){return analyticExtractedReport(_0x27a6('0x26'));}return db[_0x27a6('0x27')][_0x27a6('0x28')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x27a6('0x29'),_0x27a6('0x2a')]})[_0x27a6('0x2b')](function(_0x185cd6){if(_0x185cd6){_0x1a0f80=_0x185cd6;_0x175a0f=_0x1a0f80[_0x27a6('0x2a')]||0x3e8;}})['then'](function(){var _0xcf6d37=[];var _0x53c7c6=0x0;if(_0x1a0f80[_0x27a6('0x29')]){if(_0x446378&&_0x446378['length']){var _0x4c44df=_[_0x27a6('0x2c')](_0x446378[0x0]['num']/_0x175a0f);var _0x1d559b=Number['isInteger'](_0x446378[0x0]['num']/_0x175a0f)?_0x446378[0x0]['num']%_0x175a0f:0x0;_0x4c44df[_0x27a6('0x18')](function(_0x19c02e){if(_0x19c02e>0x0){_0x53c7c6+=_0x175a0f;}_0xcf6d37[_0x27a6('0x16')](dbH[_0x27a6('0x2d')]['query'](util['format'](_0x27a6('0x2e'),QUERY,_0x175a0f,_0x53c7c6),{'type':dbH[_0x27a6('0x2d')]['QueryTypes'][_0x27a6('0x2f')]}));});if(_0x1d559b>0x0){_0x53c7c6+=_0x175a0f;_0xcf6d37[_0x27a6('0x16')](dbH[_0x27a6('0x2d')]['query'](util[_0x27a6('0x19')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x1d559b,_0x53c7c6),{'type':dbH['sequelize'][_0x27a6('0x30')][_0x27a6('0x2f')]}));}}}else{_0xcf6d37['push'](dbH[_0x27a6('0x2d')]['query'](QUERY,{'type':dbH[_0x27a6('0x2d')][_0x27a6('0x30')][_0x27a6('0x2f')]}));}var _0x3c0d06=path[_0x27a6('0x31')](PATH);var _0x393708=path[_0x27a6('0x32')](PATH,_0x27a6('0x33'));var _0x4697d0=_0x1a0f80[_0x27a6('0x29')]&&_0xcf6d37['length']>0x1;var _0x456ad4=[];if(!fs['existsSync'](path[_0x27a6('0x34')](_0x3c0d06,_0x393708))&&_0x4697d0){fs[_0x27a6('0x35')](path[_0x27a6('0x34')](_0x3c0d06,_0x393708));}return BPromise[_0x27a6('0x36')](_0xcf6d37,function(_0x4aea36){_0x456ad4[_0x27a6('0x16')](_0x4aea36);})[_0x27a6('0x2b')](function(){var _0x465500=[];for(var _0x511258=0x0;_0x511258<_0x456ad4[_0x27a6('0x13')];_0x511258+=0x1){var _0x2ff7af=_0x456ad4[_0x511258];var _0xff7074=createTables(_[_0x27a6('0x37')](_0x2ff7af));var _0x404c86;var _0x3ca78b=getPDFDocDefinition(_0xff7074);var _0x1d922b=getPDFPrinter();var _0x1af902=_0x1d922b['createPdfKitDocument'](_0x3ca78b);if(_0x4697d0){_0x404c86=path[_0x27a6('0x34')](_0x3c0d06,_0x393708,util[_0x27a6('0x19')]('%s%d.%s',_0x393708,_0x511258,_0x27a6('0x38')));}else{_0x404c86=path[_0x27a6('0x34')](_0x3c0d06,util[_0x27a6('0x19')](_0x27a6('0x39'),_0x393708,_0x27a6('0x38')));}_0x465500[_0x27a6('0x16')](writePDFDocument(_0x1af902,_0x404c86));}return Promise[_0x27a6('0x3a')](_0x465500);})['then'](function(){if(_0x4697d0){return new Promise(function(_0x2fd36f){zipdir(path['join'](_0x3c0d06,_0x393708),{'saveTo':path['join'](_0x3c0d06,util[_0x27a6('0x19')](_0x27a6('0x39'),_0x393708,_0x27a6('0x3b')))},function(){rimraf(path[_0x27a6('0x34')](_0x3c0d06,_0x393708),function(){});_0x2fd36f(_0x27a6('0x3c'));});});}})[_0x27a6('0x2b')](function(){if(!_0x4697d0)return;rimraf(path[_0x27a6('0x34')](_0x3c0d06,_0x393708),function(){});})[_0x27a6('0x2b')](function(){logger['info'](util[_0x27a6('0x19')](_0x27a6('0x3d'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x27a6('0x3e'),_0x4697d0?util[_0x27a6('0x19')](_0x27a6('0x39'),_0x393708,_0x4697d0?_0x27a6('0x3b'):_0x27a6('0x38')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util['format'](_0x27a6('0x3f'),EXTRACTED_REPORT_ID,_0x27a6('0x40')));return db[_0x27a6('0xd')][_0x27a6('0x41')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x27a6('0x2b')](function(_0x349cc1){EXTRACTED_REPORT=_0x349cc1;return dbH[_0x27a6('0x2d')][_0x27a6('0x42')](util[_0x27a6('0x19')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x27a6('0x2d')][_0x27a6('0x30')][_0x27a6('0x2f')]});})['then'](extractReport)[_0x27a6('0x43')](function(_0x5a688f){logger['info'](util[_0x27a6('0x19')](_0x27a6('0x44'),EXTRACTED_REPORT_ID,_0x27a6('0x40')),util[_0x27a6('0x45')](_0x5a688f,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x27a6('0x46')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x8d1e6c=new PdfPrinter({'Arial':{'normal':__dirname+_0x27a6('0x47'),'bold':__dirname+_0x27a6('0x48'),'italics':__dirname+_0x27a6('0x49'),'bolditalics':__dirname+_0x27a6('0x4a')}});return _0x8d1e6c;}function getPDFDocDefinitionFromHTML(_0xf506b8,_0x211e95){var _0x19b650=util['format'](_0x27a6('0x4b'),_0x211e95['channel'],_0x211e95[_0x27a6('0x4c')]);var _0x3b3efc=moment()[_0x27a6('0x19')]('YYYY-MM-DD')[_0x27a6('0x10')]();var _0x117c86=htmlToPdfmake(_0xf506b8,{'window':window,'tableAutoSize':!![]});return{'content':[_0x117c86],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x27a6('0x4d'),'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':_0x27a6('0x4d')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x27a6('0x1d')}];},'footer':function(_0x244b28,_0x23f4fd){return[{'text':util[_0x27a6('0x19')](_0x27a6('0x4e'),_0x19b650,_0x244b28,_0x23f4fd,_0x3b3efc),'style':_0x27a6('0x21')}];}};}function writePDFDocument(_0x2bdf6e,_0x564dc1){return new Promise(function(_0x459219,_0x145ab0){var _0x4ccf40=_0x2bdf6e[_0x27a6('0x4f')](fs[_0x27a6('0x50')](_0x564dc1));_0x4ccf40['on'](_0x27a6('0x51'),function(){_0x459219('finish');});_0x4ccf40['on'](_0x27a6('0x52'),function(_0xd249e){_0x145ab0(_0xd249e);});_0x2bdf6e[_0x27a6('0x53')]();});}exports['createPdfFromHTML']=function(_0x7fbfef,_0x197591){var _0x442e8d=getPDFPrinter();var _0x2ba61d=getPDFDocDefinitionFromHTML(_0x7fbfef,_0x197591);var _0x119c01=_0x442e8d[_0x27a6('0x54')](_0x2ba61d);return writePDFDocument(_0x119c01,_0x197591[_0x27a6('0x55')])['catch'](function(_0x3a5ec5){throw _0x3a5ec5;});};
\ No newline at end of file
+var _0xb3f8=['each','flatten','createPdfKitDocument','pdf','%s.%s','all','zip','zip\x20finished','info','PDF','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','Failed','finally','/fonts/arial-regular.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','tableHeader','map','fill','length','body','push','chunk','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','format','endDate','header','pageBreak','before','margin','landscape','toString','\x20/\x20','footer','find','split','splitSizePdf','then','range','num','isInteger','forEach','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','mkdirSync'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0xb3f8,0xcd));var _0x8b3f=function(_0x210d7f,_0x2abe4f){_0x210d7f=_0x210d7f-0x0;var _0x42d687=_0xb3f8[_0x210d7f];return _0x42d687;};'use strict';var _=require(_0x8b3f('0x0'));var fs=require('fs');var util=require(_0x8b3f('0x1'));var path=require(_0x8b3f('0x2'));var moment=require(_0x8b3f('0x3'));var htmlToPdfmake=require(_0x8b3f('0x4'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require('zip-dir');var rimraf=require(_0x8b3f('0x5'));var JSDOM=require(_0x8b3f('0x6'))[_0x8b3f('0x7')];var window=new JSDOM('')[_0x8b3f('0x8')];var BPromise=require(_0x8b3f('0x9'));var db=require(_0x8b3f('0xa'))['db'];var dbH=require(_0x8b3f('0xa'))[_0x8b3f('0xb')];var logger=require(_0x8b3f('0xc'))(_0x8b3f('0xd'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x8b3f('0xe')][0x3];var PATH=process[_0x8b3f('0xe')][0x4];var NAME=process[_0x8b3f('0xe')][0x5];var FORMAT=_0x8b3f('0xf');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1f78fc,_0x54bd82){var _0x1c09a5={'status':_0x1f78fc};var _0x5161f3={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x54bd82){_0x1c09a5[_0x8b3f('0x10')]=_0x54bd82;}return db[_0x8b3f('0x11')]['update'](_0x1c09a5,_0x5161f3);}function getHeaders(_0x10f9aa){return _['map'](_0x10f9aa,function(_0x5cbda6){return{'text':_0x5cbda6,'style':_0x8b3f('0x12')};});}function getRows(_0x54781e,_0x5d607e){return _[_0x8b3f('0x13')](_0x5d607e,function(_0x2f06e9){return _(_0x2f06e9)['pick'](_0x54781e)[_0x8b3f('0x13')](function(_0x223da3){return _0x223da3?_['toString'](_0x223da3):'';})['value']();});}function createTable(_0x1f9544,_0x203ea1){var _0x1bcae3={'widths':_[_0x8b3f('0x14')](Array(_0x1f9544[_0x8b3f('0x15')]),0x91),'heights':function(_0x54bdac){return _0x54bdac===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x8ee7ae=getHeaders(_0x1f9544);_0x1bcae3[_0x8b3f('0x16')][_0x8b3f('0x17')](_0x8ee7ae);var _0xbd79a7=getRows(_0x1f9544,_0x203ea1);_0x1bcae3[_0x8b3f('0x16')]=_0x1bcae3[_0x8b3f('0x16')]['concat'](_0xbd79a7);return _0x1bcae3;}function createTables(_0x4c4c2b){var _0x4e5027=[];var _0x2b6c69=_[_0x8b3f('0x18')](Object['keys'](_0x4c4c2b[0x0]),0x5);_0x2b6c69['forEach'](function(_0x31dcdf){_0x4e5027[_0x8b3f('0x17')](createTable(_0x31dcdf,_0x4c4c2b));});return _0x4e5027;}function getPDFDocDefinition(_0x5a4a2a){var _0x582dec=util['format'](_0x8b3f('0x19'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x8b3f('0x1a')])[_0x8b3f('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0x8b3f('0x1c')])[_0x8b3f('0x1b')](FORMAT));var _0x3558f0=[];for(var _0x31216d=0x0;_0x31216d<_0x5a4a2a[_0x8b3f('0x15')];_0x31216d++){var _0x3c5e92=[];if(_0x31216d===0x0){_0x3c5e92['push']({'text':_0x582dec,'style':_0x8b3f('0x1d')});}var _0x52ef15={'table':_0x5a4a2a[_0x31216d]};if(_0x31216d>0x0){_0x52ef15[_0x8b3f('0x1e')]=_0x8b3f('0x1f');_0x52ef15[_0x8b3f('0x20')]=[0x0,0x46,0x0,0x0];}_0x3c5e92['push'](_0x52ef15);_0x3558f0[_0x8b3f('0x17')](_0x3c5e92);}return{'pageSize':'A4','pageOrientation':_0x8b3f('0x21'),'content':_0x3558f0,'footer':function(_0x5e401c,_0xbc2ff4){return{'text':_0x5e401c[_0x8b3f('0x22')]()+_0x8b3f('0x23')+_0xbc2ff4,'style':_0x8b3f('0x24')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x39d330){var _0x5af164=0x1388;var _0x12e0b5;if(!_0x39d330[0x0]['num']){return analyticExtractedReport('Empty');}return db['Setting'][_0x8b3f('0x25')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x8b3f('0x26'),_0x8b3f('0x27')]})[_0x8b3f('0x28')](function(_0x466c17){if(_0x466c17){_0x12e0b5=_0x466c17;_0x5af164=_0x12e0b5[_0x8b3f('0x27')]||0x3e8;}})[_0x8b3f('0x28')](function(){var _0xacd8d=[];var _0x2fc238=0x0;if(_0x12e0b5['split']){if(_0x39d330&&_0x39d330[_0x8b3f('0x15')]){var _0x320627=_[_0x8b3f('0x29')](_0x39d330[0x0][_0x8b3f('0x2a')]/_0x5af164);var _0x19db74=Number[_0x8b3f('0x2b')](_0x39d330[0x0][_0x8b3f('0x2a')]/_0x5af164)?_0x39d330[0x0][_0x8b3f('0x2a')]%_0x5af164:0x0;_0x320627[_0x8b3f('0x2c')](function(_0x5ba6ee){if(_0x5ba6ee>0x0){_0x2fc238+=_0x5af164;}_0xacd8d[_0x8b3f('0x17')](dbH[_0x8b3f('0x2d')][_0x8b3f('0x2e')](util[_0x8b3f('0x1b')](_0x8b3f('0x2f'),QUERY,_0x5af164,_0x2fc238),{'type':dbH[_0x8b3f('0x2d')][_0x8b3f('0x30')][_0x8b3f('0x31')]}));});if(_0x19db74>0x0){_0x2fc238+=_0x5af164;_0xacd8d[_0x8b3f('0x17')](dbH[_0x8b3f('0x2d')][_0x8b3f('0x2e')](util[_0x8b3f('0x1b')](_0x8b3f('0x2f'),QUERY,_0x19db74,_0x2fc238),{'type':dbH['sequelize'][_0x8b3f('0x30')][_0x8b3f('0x31')]}));}}}else{_0xacd8d['push'](dbH['sequelize'][_0x8b3f('0x2e')](QUERY,{'type':dbH[_0x8b3f('0x2d')][_0x8b3f('0x30')][_0x8b3f('0x31')]}));}var _0x5f2556=path[_0x8b3f('0x32')](PATH);var _0x4c3ab9=path[_0x8b3f('0x33')](PATH,_0x8b3f('0x34'));var _0x18236b=_0x12e0b5['split']&&_0xacd8d['length']>0x1;var _0x54d22d=[];if(!fs[_0x8b3f('0x35')](path[_0x8b3f('0x36')](_0x5f2556,_0x4c3ab9))&&_0x18236b){fs[_0x8b3f('0x37')](path[_0x8b3f('0x36')](_0x5f2556,_0x4c3ab9));}return BPromise[_0x8b3f('0x38')](_0xacd8d,function(_0x9c03bc){_0x54d22d[_0x8b3f('0x17')](_0x9c03bc);})[_0x8b3f('0x28')](function(){var _0x552b93=[];for(var _0x132048=0x0;_0x132048<_0x54d22d['length'];_0x132048+=0x1){var _0x1aec86=_0x54d22d[_0x132048];var _0x3a73e9=createTables(_[_0x8b3f('0x39')](_0x1aec86));var _0x52b7f6;var _0x2af430=getPDFDocDefinition(_0x3a73e9);var _0xeffe96=getPDFPrinter();var _0x36758b=_0xeffe96[_0x8b3f('0x3a')](_0x2af430);if(_0x18236b){_0x52b7f6=path[_0x8b3f('0x36')](_0x5f2556,_0x4c3ab9,util['format']('%s%d.%s',_0x4c3ab9,_0x132048,_0x8b3f('0x3b')));}else{_0x52b7f6=path[_0x8b3f('0x36')](_0x5f2556,util['format'](_0x8b3f('0x3c'),_0x4c3ab9,'pdf'));}_0x552b93[_0x8b3f('0x17')](writePDFDocument(_0x36758b,_0x52b7f6));}return Promise[_0x8b3f('0x3d')](_0x552b93);})['then'](function(){if(_0x18236b){return new Promise(function(_0x548319){zipdir(path[_0x8b3f('0x36')](_0x5f2556,_0x4c3ab9),{'saveTo':path[_0x8b3f('0x36')](_0x5f2556,util[_0x8b3f('0x1b')](_0x8b3f('0x3c'),_0x4c3ab9,_0x8b3f('0x3e')))},function(){rimraf(path[_0x8b3f('0x36')](_0x5f2556,_0x4c3ab9),function(){});_0x548319(_0x8b3f('0x3f'));});});}})[_0x8b3f('0x28')](function(){if(!_0x18236b)return;rimraf(path['join'](_0x5f2556,_0x4c3ab9),function(){});})[_0x8b3f('0x28')](function(){logger[_0x8b3f('0x40')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x8b3f('0x41')));return analyticExtractedReport('Completed',_0x18236b?util[_0x8b3f('0x1b')]('%s.%s',_0x4c3ab9,_0x18236b?_0x8b3f('0x3e'):_0x8b3f('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x8b3f('0x1b')](_0x8b3f('0x42'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x8b3f('0x11')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x8b3f('0x28')](function(_0x3c331f){EXTRACTED_REPORT=_0x3c331f;return dbH[_0x8b3f('0x2d')][_0x8b3f('0x2e')](util[_0x8b3f('0x1b')](_0x8b3f('0x43'),QUERY),{'type':dbH[_0x8b3f('0x2d')][_0x8b3f('0x30')][_0x8b3f('0x31')]});})[_0x8b3f('0x28')](extractReport)[_0x8b3f('0x44')](function(_0x9f1f10){logger['info'](util[_0x8b3f('0x1b')](_0x8b3f('0x45'),EXTRACTED_REPORT_ID,_0x8b3f('0x41')),util['inspect'](_0x9f1f10,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x8b3f('0x46'));})[_0x8b3f('0x47')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x51e858=new PdfPrinter({'Arial':{'normal':__dirname+_0x8b3f('0x48'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0x8b3f('0x49'),'bolditalics':__dirname+_0x8b3f('0x4a')}});return _0x51e858;}function getPDFDocDefinitionFromHTML(_0x2359b0,_0x38b298){var _0x5a3c6c=util[_0x8b3f('0x1b')](_0x8b3f('0x4b'),_0x38b298[_0x8b3f('0x4c')],_0x38b298['interactionId']);var _0x274e7f=moment()[_0x8b3f('0x1b')](_0x8b3f('0x4d'))[_0x8b3f('0x22')]();var _0x569dbb=htmlToPdfmake(_0x2359b0,{'window':window,'tableAutoSize':!![]});return{'content':[_0x569dbb],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x8b3f('0x4e'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x8b3f('0x4e')}},'header':function(){return[{'text':_0x8b3f('0x4f'),'style':'header'}];},'footer':function(_0x32d8d6,_0x33059f){return[{'text':util[_0x8b3f('0x1b')](_0x8b3f('0x50'),_0x5a3c6c,_0x32d8d6,_0x33059f,_0x274e7f),'style':_0x8b3f('0x24')}];}};}function writePDFDocument(_0x410bf3,_0x5f05f0){return new Promise(function(_0x130125,_0x2f4efb){var _0x394762=_0x410bf3[_0x8b3f('0x51')](fs[_0x8b3f('0x52')](_0x5f05f0));_0x394762['on']('finish',function(){_0x130125(_0x8b3f('0x53'));});_0x394762['on'](_0x8b3f('0x54'),function(_0x5bc165){_0x2f4efb(_0x5bc165);});_0x410bf3[_0x8b3f('0x55')]();});}exports[_0x8b3f('0x56')]=function(_0x13afaf,_0x234366){var _0x3bdad3=getPDFPrinter();var _0x444008=getPDFDocDefinitionFromHTML(_0x13afaf,_0x234366);var _0x279ac4=_0x3bdad3['createPdfKitDocument'](_0x444008);return writePDFDocument(_0x279ac4,_0x234366[_0x8b3f('0x2')])['catch'](function(_0x3d5e65){throw _0x3d5e65;});};
\ No newline at end of file
index 9a6837d..9ba44fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a62=['push','QueryTypes','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','existsSync','mkdirSync','join','each','xlsx','%s.%s','binary','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','inspect','Failed','exit','util','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','split','then','splitSizeXlsx','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','num','Empty','length','range','isInteger','forEach'];(function(_0x2a41eb,_0x2ded95){var _0x2b3036=function(_0x122932){while(--_0x122932){_0x2a41eb['push'](_0x2a41eb['shift']());}};_0x2b3036(++_0x2ded95);}(_0x7a62,0x17b));var _0x27a6=function(_0x2c816,_0x473c2f){_0x2c816=_0x2c816-0x0;var _0x92172=_0x7a62[_0x2c816];return _0x92172;};'use strict';var util=require(_0x27a6('0x0'));var path=require('path');var _=require('lodash');var fs=require('fs');var json2xls=require('json2xls');var BPromise=require('bluebird');var zipdir=require(_0x27a6('0x1'));var rimraf=require(_0x27a6('0x2'));var db=require(_0x27a6('0x3'))['db'];var dbH=require('../../mysqldb')[_0x27a6('0x4')];var logger=require(_0x27a6('0x5'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x27a6('0x6')][0x2]);var QUERY=process[_0x27a6('0x6')][0x3];var PATH=process[_0x27a6('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3f4883,_0x229677){var _0x51d69a={'status':_0x3f4883};var _0x4696d9={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x229677){_0x51d69a[_0x27a6('0x7')]=_0x229677;}return db['AnalyticExtractedReport'][_0x27a6('0x8')](_0x51d69a,_0x4696d9);}function main(){var _0xac8b1f=0x1388;var _0x1bf01c;logger['info'](util[_0x27a6('0x9')](_0x27a6('0xa'),EXTRACTED_REPORT_ID,_0x27a6('0xb')));return db[_0x27a6('0xc')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x27a6('0xd'),'splitSizeXlsx']})[_0x27a6('0xe')](function(_0x5c40e1){if(_0x5c40e1){_0x1bf01c=_0x5c40e1;_0xac8b1f=_0x1bf01c[_0x27a6('0xf')]||0x1388;}})[_0x27a6('0xe')](function(){return dbH[_0x27a6('0x10')][_0x27a6('0x11')](util[_0x27a6('0x9')](_0x27a6('0x12'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x27a6('0x13')]});})[_0x27a6('0xe')](function(_0x3babac){if(!_0x3babac[0x0][_0x27a6('0x14')]){return analyticExtractedReport(_0x27a6('0x15'));}var _0x5cc458=[];var _0x3c69d7=0x0;if(_0x1bf01c['split']){if(_0x3babac&&_0x3babac[_0x27a6('0x16')]){var _0x3437ca=_[_0x27a6('0x17')](_0x3babac[0x0][_0x27a6('0x14')]/_0xac8b1f);var _0x1b0c0d=Number[_0x27a6('0x18')](_0x3babac[0x0][_0x27a6('0x14')]/_0xac8b1f)?_0x3babac[0x0]['num']%_0xac8b1f:0x0;_0x3437ca[_0x27a6('0x19')](function(_0x203cb5){if(_0x203cb5>0x0){_0x3c69d7+=_0xac8b1f;}_0x5cc458[_0x27a6('0x1a')](dbH[_0x27a6('0x10')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0xac8b1f,_0x3c69d7),{'type':dbH[_0x27a6('0x10')][_0x27a6('0x1b')][_0x27a6('0x13')]}));});if(_0x1b0c0d>0x0){_0x3c69d7+=_0xac8b1f;_0x5cc458['push'](dbH[_0x27a6('0x10')][_0x27a6('0x11')](util['format'](_0x27a6('0x1c'),QUERY,_0x1b0c0d,_0x3c69d7),{'type':dbH[_0x27a6('0x10')]['QueryTypes'][_0x27a6('0x13')]}));}}}else{_0x5cc458[_0x27a6('0x1a')](dbH[_0x27a6('0x10')][_0x27a6('0x11')](QUERY,{'type':dbH[_0x27a6('0x10')]['QueryTypes'][_0x27a6('0x13')]}));}var _0xcc313d=path['dirname'](PATH);var _0x3d71a0=path[_0x27a6('0x1d')](PATH,'.xlsx');var _0x1f8c68=_0x1bf01c['split']&&_0x5cc458['length']>0x1;var _0x440f1f=[];if(!fs[_0x27a6('0x1e')](path['join'](_0xcc313d,_0x3d71a0))&&_0x1f8c68){fs[_0x27a6('0x1f')](path[_0x27a6('0x20')](_0xcc313d,_0x3d71a0));}return BPromise[_0x27a6('0x21')](_0x5cc458,function(_0x3ac3cb){_0x440f1f[_0x27a6('0x1a')](_0x3ac3cb);})[_0x27a6('0xe')](function(){for(var _0x4d39e4=0x0;_0x4d39e4<_0x440f1f[_0x27a6('0x16')];_0x4d39e4+=0x1){var _0x318b1c;var _0x11edc6=_0x440f1f[_0x4d39e4];if(_0x1f8c68){_0x318b1c=path[_0x27a6('0x20')](_0xcc313d,_0x3d71a0,util[_0x27a6('0x9')]('%s%d.%s',_0x3d71a0,_0x4d39e4,_0x27a6('0x22')));}else{_0x318b1c=path['join'](_0xcc313d,util[_0x27a6('0x9')](_0x27a6('0x23'),_0x3d71a0,_0x27a6('0x22')));}fs['writeFileSync'](_0x318b1c,json2xls(_0x11edc6),_0x27a6('0x24'));}})[_0x27a6('0xe')](function(){if(_0x1f8c68){return new Promise(function(_0x5527f4){zipdir(path[_0x27a6('0x20')](_0xcc313d,_0x3d71a0),{'saveTo':path[_0x27a6('0x20')](_0xcc313d,util['format']('%s.%s',_0x3d71a0,_0x27a6('0x25')))},function(_0x21d25a,_0x21abd0){rimraf(path[_0x27a6('0x20')](_0xcc313d,_0x3d71a0),function(){});_0x5527f4(_0x27a6('0x26'));});});}})['then'](function(){logger[_0x27a6('0x27')](util[_0x27a6('0x9')](_0x27a6('0x28'),EXTRACTED_REPORT_ID,_0x27a6('0xb')));return analyticExtractedReport(_0x27a6('0x29'),_0x1f8c68?util[_0x27a6('0x9')](_0x27a6('0x23'),_0x3d71a0,_0x1f8c68?'zip':_0x27a6('0x22')):null);});})['catch'](function(_0x15af5b){logger['info'](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x27a6('0xb')),util[_0x27a6('0x2a')](_0x15af5b,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x27a6('0x2b'));})['finally'](function(){process[_0x27a6('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x1e7b=['update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','Empty','length','range','num','isInteger','forEach','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','binary','zip\x20finished','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','inspect','Failed','exit','util','path','json2xls','bluebird','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport'];(function(_0x3f378f,_0x2a7723){var _0x56d027=function(_0xf32b62){while(--_0xf32b62){_0x3f378f['push'](_0x3f378f['shift']());}};_0x56d027(++_0x2a7723);}(_0x1e7b,0x12d));var _0xb1e7=function(_0x1e1299,_0x4fbdf0){_0x1e1299=_0x1e1299-0x0;var _0x3cfaf9=_0x1e7b[_0x1e1299];return _0x3cfaf9;};'use strict';var util=require(_0xb1e7('0x0'));var path=require(_0xb1e7('0x1'));var _=require('lodash');var fs=require('fs');var json2xls=require(_0xb1e7('0x2'));var BPromise=require(_0xb1e7('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0xb1e7('0x4'));var db=require(_0xb1e7('0x5'))['db'];var dbH=require(_0xb1e7('0x5'))[_0xb1e7('0x6')];var logger=require('../../config/logger')(_0xb1e7('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0xb1e7('0x8')][0x2]);var QUERY=process[_0xb1e7('0x8')][0x3];var PATH=process[_0xb1e7('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3a83ba,_0x578f37){var _0x161376={'status':_0x3a83ba};var _0xca6a82={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x578f37){_0x161376[_0xb1e7('0x9')]=_0x578f37;}return db[_0xb1e7('0xa')][_0xb1e7('0xb')](_0x161376,_0xca6a82);}function main(){var _0x1c27e8=0x1388;var _0x842e0a;logger[_0xb1e7('0xc')](util[_0xb1e7('0xd')](_0xb1e7('0xe'),EXTRACTED_REPORT_ID,_0xb1e7('0xf')));return db[_0xb1e7('0x10')][_0xb1e7('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xb1e7('0x12'),_0xb1e7('0x13')]})['then'](function(_0x5894c2){if(_0x5894c2){_0x842e0a=_0x5894c2;_0x1c27e8=_0x842e0a[_0xb1e7('0x13')]||0x1388;}})[_0xb1e7('0x14')](function(){return dbH[_0xb1e7('0x15')]['query'](util[_0xb1e7('0xd')](_0xb1e7('0x16'),QUERY),{'type':dbH[_0xb1e7('0x15')]['QueryTypes'][_0xb1e7('0x17')]});})[_0xb1e7('0x14')](function(_0x276540){if(!_0x276540[0x0]['num']){return analyticExtractedReport(_0xb1e7('0x18'));}var _0x2f677d=[];var _0xe090d0=0x0;if(_0x842e0a[_0xb1e7('0x12')]){if(_0x276540&&_0x276540[_0xb1e7('0x19')]){var _0x2d1dd0=_[_0xb1e7('0x1a')](_0x276540[0x0][_0xb1e7('0x1b')]/_0x1c27e8);var _0x37de68=Number[_0xb1e7('0x1c')](_0x276540[0x0][_0xb1e7('0x1b')]/_0x1c27e8)?_0x276540[0x0][_0xb1e7('0x1b')]%_0x1c27e8:0x0;_0x2d1dd0[_0xb1e7('0x1d')](function(_0xf92d57){if(_0xf92d57>0x0){_0xe090d0+=_0x1c27e8;}_0x2f677d[_0xb1e7('0x1e')](dbH['sequelize'][_0xb1e7('0x1f')](util[_0xb1e7('0xd')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x1c27e8,_0xe090d0),{'type':dbH[_0xb1e7('0x15')]['QueryTypes'][_0xb1e7('0x17')]}));});if(_0x37de68>0x0){_0xe090d0+=_0x1c27e8;_0x2f677d[_0xb1e7('0x1e')](dbH[_0xb1e7('0x15')][_0xb1e7('0x1f')](util[_0xb1e7('0xd')](_0xb1e7('0x20'),QUERY,_0x37de68,_0xe090d0),{'type':dbH['sequelize'][_0xb1e7('0x21')][_0xb1e7('0x17')]}));}}}else{_0x2f677d['push'](dbH['sequelize'][_0xb1e7('0x1f')](QUERY,{'type':dbH[_0xb1e7('0x15')][_0xb1e7('0x21')]['SELECT']}));}var _0x1265d9=path[_0xb1e7('0x22')](PATH);var _0x125eb3=path[_0xb1e7('0x23')](PATH,'.xlsx');var _0x582dcc=_0x842e0a[_0xb1e7('0x12')]&&_0x2f677d['length']>0x1;var _0x2853f9=[];if(!fs[_0xb1e7('0x24')](path[_0xb1e7('0x25')](_0x1265d9,_0x125eb3))&&_0x582dcc){fs[_0xb1e7('0x26')](path[_0xb1e7('0x25')](_0x1265d9,_0x125eb3));}return BPromise[_0xb1e7('0x27')](_0x2f677d,function(_0x2a1dd6){_0x2853f9[_0xb1e7('0x1e')](_0x2a1dd6);})[_0xb1e7('0x14')](function(){for(var _0x2ad5e7=0x0;_0x2ad5e7<_0x2853f9[_0xb1e7('0x19')];_0x2ad5e7+=0x1){var _0x235f63;var _0x2a0ede=_0x2853f9[_0x2ad5e7];if(_0x582dcc){_0x235f63=path['join'](_0x1265d9,_0x125eb3,util[_0xb1e7('0xd')](_0xb1e7('0x28'),_0x125eb3,_0x2ad5e7,_0xb1e7('0x29')));}else{_0x235f63=path[_0xb1e7('0x25')](_0x1265d9,util['format'](_0xb1e7('0x2a'),_0x125eb3,'xlsx'));}fs['writeFileSync'](_0x235f63,json2xls(_0x2a0ede),_0xb1e7('0x2b'));}})[_0xb1e7('0x14')](function(){if(_0x582dcc){return new Promise(function(_0x3d0c48){zipdir(path[_0xb1e7('0x25')](_0x1265d9,_0x125eb3),{'saveTo':path[_0xb1e7('0x25')](_0x1265d9,util['format']('%s.%s',_0x125eb3,'zip'))},function(_0x329a7a,_0x193622){rimraf(path[_0xb1e7('0x25')](_0x1265d9,_0x125eb3),function(){});_0x3d0c48(_0xb1e7('0x2c'));});});}})[_0xb1e7('0x14')](function(){logger['info'](util[_0xb1e7('0xd')](_0xb1e7('0x2d'),EXTRACTED_REPORT_ID,_0xb1e7('0xf')));return analyticExtractedReport(_0xb1e7('0x2e'),_0x582dcc?util[_0xb1e7('0xd')]('%s.%s',_0x125eb3,_0x582dcc?'zip':_0xb1e7('0x29')):null);});})[_0xb1e7('0x2f')](function(_0x213084){logger['info'](util[_0xb1e7('0xd')](_0xb1e7('0x30'),EXTRACTED_REPORT_ID,_0xb1e7('0xf')),util[_0xb1e7('0x31')](_0x213084,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xb1e7('0x32'));})['finally'](function(){process[_0xb1e7('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
index 9a18713..125df14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5708=['Interval','then','intervals','IntervalId','VoiceExtension','findAll','map','CAST(priority\x20AS\x20UNSIGNED)','filter','queue','playback','hasOwnProperty','priority','extensions','extension','exten','push','Set','format','CDR(type)=%s','context','VoiceExtensionId','type','CDR(routeid)=','CDR(destination)=','${EXTEN:','cutdigits','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','length','toLowerCase','updatedAt','*,*,*,*','interval','tag','CDR(tag)=','outbound','callerID','ExecIf','$[${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','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','sortBy','error','lodash','util','models'];(function(_0x436a87,_0x2cff03){var _0x33a6af=function(_0x4af54c){while(--_0x4af54c){_0x436a87['push'](_0x436a87['shift']());}};_0x33a6af(++_0x2cff03);}(_0x5708,0xcc));var _0x8570=function(_0x9074bb,_0x54d680){_0x9074bb=_0x9074bb-0x0;var _0x2b8b7e=_0x5708[_0x9074bb];return _0x2b8b7e;};'use strict';var _=require(_0x8570('0x0'));var util=require(_0x8570('0x1'));function rewrite(_0x190023,_0x3f73fe){var _0x390e3c=this;return _0x190023[_0x8570('0x2')][_0x8570('0x3')]['findAll']({'raw':!![]})[_0x8570('0x4')](function(_0x3ceed2){_0x390e3c[_0x8570('0x5')]=_0x3ceed2;return _0x190023[_0x8570('0x2')]['VoiceExtension']['findAll']({'where':{'IntervalId':_0x3f73fe[_0x8570('0x6')]},'raw':!![]});})[_0x8570('0x4')](function(_0x173532){return _0x190023[_0x8570('0x2')][_0x8570('0x7')][_0x8570('0x8')]({'where':{'exten':{'$in':_['uniq'](_[_0x8570('0x9')](_0x173532,'exten'))}},'order':[{'raw':_0x8570('0xa')}],'raw':!![]});})['then'](function(_0x30bc33){var _0xffab69=_[_0x8570('0xb')](_0x30bc33,{'priority':'1'});var _0x4a39b2=_[_0x8570('0xb')](_0x30bc33,{'isApp':0x1});var _0x32f969=_['groupBy'](_0x4a39b2,'exten');var _0x4f758e=[_0x8570('0xc'),_0x8570('0xd')];var _0x2c02a9=[];var _0x5b4f54=[];for(var _0x2aba81 in _0x32f969){if(_0x32f969[_0x8570('0xe')](_0x2aba81)){_0x390e3c[_0x8570('0xf')]=0x2;_0x390e3c[_0x8570('0x10')]=[];_0x390e3c[_0x8570('0x11')]=_['find'](_0xffab69,{'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')]});_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0]['type'],'app':_0x8570('0x14'),'appdata':util[_0x8570('0x15')](_0x8570('0x16'),_0x32f969[_0x2aba81][0x0]['type']),'context':_0x32f969[_0x2aba81][0x0][_0x8570('0x17')],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c[_0x8570('0xf')]++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});if(_0x32f969[_0x2aba81][0x0]['type']==='inbound'){_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':_0x8570('0x14'),'appdata':_0x8570('0x1a')+_0x32f969[_0x2aba81][0x0]['VoiceExtensionId'],'context':_0x32f969[_0x2aba81][0x0][_0x8570('0x17')],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c['priority']++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});}else if(_0x32f969[_0x2aba81][0x0][_0x8570('0x19')]==='outbound'){if(_0x390e3c[_0x8570('0x11')]){_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0]['type'],'app':'Set','appdata':_0x8570('0x1b')+(_0x390e3c[_0x8570('0x11')]['cutdigits']?_0x8570('0x1c')+_0x390e3c[_0x8570('0x11')][_0x8570('0x1d')]+'}':'${EXTEN}'),'context':_0x32f969[_0x2aba81][0x0]['context'],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c[_0x8570('0xf')]++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0]['VoiceExtensionId']});}_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':_0x8570('0x14'),'appdata':_0x8570('0x1a')+_0x32f969[_0x2aba81][0x0][_0x8570('0x18')],'context':_0x32f969[_0x2aba81][0x0]['context'],'exten':_0x32f969[_0x2aba81][0x0]['exten'],'priority':_0x390e3c[_0x8570('0xf')]++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});var _0x4753e5=_0x390e3c[_0x8570('0xf')]++;_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0]['type'],'app':'ExecIf','appdata':_0x8570('0x1e')+(_0x4753e5+0x2)+_0x8570('0x1f')+(_0x4753e5+0x1)+')','context':_0x32f969[_0x2aba81][0x0]['context'],'exten':_0x32f969[_0x2aba81][0x0]['exten'],'priority':_0x4753e5,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});if(_0x390e3c[_0x8570('0x11')]){_0x390e3c[_0x8570('0x10')]['push']({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':'Set','appdata':_0x390e3c[_0x8570('0x11')][_0x8570('0x1d')]?_0x8570('0x20')+_0x390e3c[_0x8570('0x11')][_0x8570('0x1d')]+'}':'CDR(prefix)=noprefix','context':_0x32f969[_0x2aba81][0x0][_0x8570('0x17')],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c[_0x8570('0xf')]++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});}_0x390e3c[_0x8570('0x10')]['push']({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':_0x8570('0x14'),'appdata':_0x8570('0x21')+_0x32f969[_0x2aba81][0x0][_0x8570('0x18')],'context':_0x32f969[_0x2aba81][0x0][_0x8570('0x17')],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c['priority']++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});if(_0x390e3c[_0x8570('0x11')]&&_0x390e3c['extension']['hasOwnProperty'](_0x8570('0x22'))&&_0x390e3c[_0x8570('0x11')][_0x8570('0x22')]!==_0x8570('0x23')){_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':_0x8570('0x14'),'appdata':_0x8570('0x24'),'context':_0x32f969[_0x2aba81][0x0]['context'],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c[_0x8570('0xf')]++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0]['VoiceExtensionId']});_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':_0x8570('0x14'),'appdata':_0x8570('0x25')+_0x390e3c[_0x8570('0x11')][_0x8570('0x22')]||_0x8570('0x26'),'context':_0x32f969[_0x2aba81][0x0][_0x8570('0x17')],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c['priority']++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});}}_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':'Set','appdata':_0x8570('0x27'),'context':_0x32f969[_0x2aba81][0x0][_0x8570('0x17')],'exten':_0x32f969[_0x2aba81][0x0]['exten'],'priority':_0x390e3c['priority']++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':_0x8570('0x14'),'appdata':_0x8570('0x28'),'context':_0x32f969[_0x2aba81][0x0][_0x8570('0x17')],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c[_0x8570('0xf')]++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0][_0x8570('0x19')],'app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0x32f969[_0x2aba81][0x0]['context'],'exten':_0x32f969[_0x2aba81][0x0][_0x8570('0x12')],'priority':_0x390e3c['priority']++,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0]['VoiceExtensionId']});for(var _0x2ff9a9=0x0,_0x4067da=0x0;_0x2ff9a9<_0x32f969[_0x2aba81][_0x8570('0x29')];_0x2ff9a9+=0x1,_0x4067da=0x0){var _0x17e749=_0x32f969[_0x2aba81][_0x2ff9a9];if(_0x17e749['type']){_0x17e749['type']=_0x17e749[_0x8570('0x19')][_0x8570('0x2a')]();}var _0x4ec745=[];var _0x285544=[];delete _0x17e749['id'];delete _0x17e749['createdAt'];delete _0x17e749[_0x8570('0x2b')];var _0x4bb5cc=_0x17e749['interval']!==_0x8570('0x2c')?[_0x17e749[_0x8570('0x2d')]]:_0x17e749[_0x8570('0x6')]?_[_0x8570('0x9')](_[_0x8570('0xb')](_0x390e3c[_0x8570('0x5')],{'IntervalId':_0x17e749[_0x8570('0x6')]}),_0x8570('0x2d')):[];if(_0x17e749[_0x8570('0xe')](_0x8570('0x2e'))){if(_0x17e749[_0x8570('0x2e')]&&_0x17e749['tag']!=='--'){_0x4ec745[_0x8570('0x13')]({'type':_0x17e749[_0x8570('0x19')],'app':_0x8570('0x14'),'appdata':_0x8570('0x2f')+_0x17e749[_0x8570('0x2e')],'context':_0x17e749[_0x8570('0x17')],'exten':_0x17e749['exten'],'priority':_0x4bb5cc['length']+_0x390e3c[_0x8570('0xf')]+_0x4067da++,'VoiceExtensionId':_0x17e749[_0x8570('0x18')]});}}if(_0x17e749[_0x8570('0x19')]===_0x8570('0x30')&&_0x17e749['hasOwnProperty'](_0x8570('0x31'))){if(_0x17e749[_0x8570('0x31')]){_0x4ec745[_0x8570('0x13')]({'type':_0x17e749['type'],'app':_0x8570('0x32'),'appdata':_0x8570('0x33')+_0x17e749[_0x8570('0x31')]+')','context':_0x17e749[_0x8570('0x17')],'exten':_0x17e749[_0x8570('0x12')],'priority':_0x4bb5cc[_0x8570('0x29')]+_0x390e3c[_0x8570('0xf')]+_0x4067da++,'VoiceExtensionId':_0x17e749[_0x8570('0x18')]});}else{_0x4ec745[_0x8570('0x13')]({'type':_0x17e749[_0x8570('0x19')],'app':_0x8570('0x32'),'appdata':_0x8570('0x34'),'context':_0x17e749[_0x8570('0x17')],'exten':_0x17e749[_0x8570('0x12')],'priority':_0x4bb5cc[_0x8570('0x29')]+_0x390e3c[_0x8570('0xf')]+_0x4067da++,'VoiceExtensionId':_0x17e749[_0x8570('0x18')]});}}if(_0x17e749[_0x8570('0xe')](_0x8570('0x35'))){if(_0x4f758e[_0x8570('0x36')](_0x17e749[_0x8570('0x37')][_0x8570('0x2a')]())>=0x0&&_0x17e749[_0x8570('0x38')]!=='custom'){if(_0x17e749['answer']){_0x4ec745['push']({'type':_0x17e749[_0x8570('0x19')],'app':_0x8570('0x32'),'appdata':_0x8570('0x39'),'context':_0x17e749[_0x8570('0x17')],'exten':_0x17e749[_0x8570('0x12')],'priority':_0x4bb5cc[_0x8570('0x29')]+_0x390e3c['priority']+_0x4067da++,'VoiceExtensionId':_0x17e749[_0x8570('0x18')]});_0x4ec745['push']({'type':_0x17e749[_0x8570('0x19')],'app':_0x8570('0x14'),'appdata':_0x8570('0x3a'),'context':_0x17e749['context'],'exten':_0x17e749[_0x8570('0x12')],'priority':_0x4bb5cc[_0x8570('0x29')]+_0x390e3c[_0x8570('0xf')]+_0x4067da++,'VoiceExtensionId':_0x17e749[_0x8570('0x18')]});}else{_0x4ec745['push']({'type':_0x17e749[_0x8570('0x19')],'app':'ExecIf','appdata':_0x8570('0x3b'),'context':_0x17e749[_0x8570('0x17')],'exten':_0x17e749['exten'],'priority':_0x4bb5cc[_0x8570('0x29')]+_0x390e3c[_0x8570('0xf')]+_0x4067da++,'VoiceExtensionId':_0x17e749[_0x8570('0x18')]});_0x4ec745['push']({'type':_0x17e749[_0x8570('0x19')],'app':'Set','appdata':_0x8570('0x3c'),'context':_0x17e749[_0x8570('0x17')],'exten':_0x17e749[_0x8570('0x12')],'priority':_0x4bb5cc['length']+_0x390e3c[_0x8570('0xf')]+_0x4067da++,'VoiceExtensionId':_0x17e749[_0x8570('0x18')]});}}}for(var _0x2a523c=0x0;_0x2a523c<_0x4bb5cc[_0x8570('0x29')];_0x2a523c+=0x1){var _0x4b24f2=_0x390e3c[_0x8570('0xf')]+_0x4bb5cc['length'];var _0x18c69f=_0x2a523c===_0x4bb5cc['length']-0x1?_0x390e3c[_0x8570('0xf')]+_0x4ec745['length']+_0x285544[_0x8570('0x29')]+0x2:_0x390e3c[_0x8570('0xf')]+_0x2a523c+0x1;_0x4ec745['splice'](_0x2a523c,0x0,{'type':_0x17e749['type'],'app':_0x8570('0x3d'),'appdata':_0x4bb5cc[_0x2a523c]+'?'+_0x17e749[_0x8570('0x17')]+_0x8570('0x3e')+_0x4b24f2+':'+_0x17e749[_0x8570('0x17')]+_0x8570('0x3e')+_0x18c69f,'exten':_0x17e749[_0x8570('0x12')],'context':_0x17e749[_0x8570('0x17')],'priority':_0x390e3c[_0x8570('0xf')]+_0x2a523c,'VoiceExtensionId':_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]});}_0x17e749[_0x8570('0xf')]=_0x4ec745[_0x8570('0x29')]?_[_0x8570('0x3f')](_0x4ec745)[_0x8570('0xf')]+0x1:_0x390e3c[_0x8570('0xf')];_0x390e3c[_0x8570('0xf')]=(_0x285544[_0x8570('0x29')]?_['last'](_0x285544)[_0x8570('0xf')]:_0x17e749[_0x8570('0xf')])+0x1;_0x390e3c[_0x8570('0x10')]=_[_0x8570('0x40')](_0x390e3c[_0x8570('0x10')],_0x4ec745,[_0x17e749],_0x285544);}_0x390e3c[_0x8570('0x10')][_0x8570('0x13')]({'type':_0x32f969[_0x2aba81][0x0]['type'],'app':'Hangup','exten':_0x32f969[_0x2aba81][0x0]['exten'],'context':_0x32f969[_0x2aba81][0x0][_0x8570('0x17')],'priority':_0x390e3c[_0x8570('0xf')],'VoiceExtensionId':_0x32f969[_0x2aba81][0x0]['VoiceExtensionId']});_0x2c02a9[_0x8570('0x13')](_0x32f969[_0x2aba81][0x0][_0x8570('0x18')]);_0x5b4f54=_[_0x8570('0x40')](_0x5b4f54,_0x390e3c[_0x8570('0x10')]);}}return _0x190023[_0x8570('0x41')](function(_0x5ef4d3){return _0x190023[_0x8570('0x2')][_0x8570('0x7')][_0x8570('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x2c02a9}},'transaction':_0x5ef4d3})[_0x8570('0x4')](function(_0x207a36){return _0x190023[_0x8570('0x2')][_0x8570('0x7')]['bulkCreate'](_[_0x8570('0x43')](_0x5b4f54,_0x8570('0xf')),{'transaction':_0x5ef4d3});});});})['catch'](function(_0x29cdc7){console[_0x8570('0x44')](_0x29cdc7);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0xbdf1=['VoiceExtensionId','cutdigits','${EXTEN}','ExecIf','):Goto(','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','interval','*,*,*,*','IntervalId','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','sortBy','rewrite','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','map','exten','filter','queue','playback','hasOwnProperty','priority','extensions','extension','find','push','type','Set','format','CDR(routeid)=','context'];(function(_0x51ec5c,_0x3506ef){var _0x5b04b8=function(_0x2e741f){while(--_0x2e741f){_0x51ec5c['push'](_0x51ec5c['shift']());}};_0x5b04b8(++_0x3506ef);}(_0xbdf1,0xa2));var _0x1bdf=function(_0x96db3e,_0x5359eb){_0x96db3e=_0x96db3e-0x0;var _0x4dc76a=_0xbdf1[_0x96db3e];return _0x4dc76a;};'use strict';var _=require(_0x1bdf('0x0'));var util=require(_0x1bdf('0x1'));function rewrite(_0x36edb3,_0xa8e22a){var _0x11aea2=this;return _0x36edb3[_0x1bdf('0x2')][_0x1bdf('0x3')][_0x1bdf('0x4')]({'raw':!![]})[_0x1bdf('0x5')](function(_0x322c38){_0x11aea2[_0x1bdf('0x6')]=_0x322c38;return _0x36edb3[_0x1bdf('0x2')][_0x1bdf('0x7')][_0x1bdf('0x4')]({'where':{'IntervalId':_0xa8e22a['IntervalId']},'raw':!![]});})[_0x1bdf('0x5')](function(_0x4f7b99){return _0x36edb3[_0x1bdf('0x2')][_0x1bdf('0x7')]['findAll']({'where':{'exten':{'$in':_['uniq'](_[_0x1bdf('0x8')](_0x4f7b99,_0x1bdf('0x9')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x1bdf('0x5')](function(_0x1e3710){var _0xc02500=_[_0x1bdf('0xa')](_0x1e3710,{'priority':'1'});var _0x30e8f5=_[_0x1bdf('0xa')](_0x1e3710,{'isApp':0x1});var _0x268139=_['groupBy'](_0x30e8f5,'exten');var _0x47933b=[_0x1bdf('0xb'),_0x1bdf('0xc')];var _0x2e709b=[];var _0x401976=[];for(var _0x3048de in _0x268139){if(_0x268139[_0x1bdf('0xd')](_0x3048de)){_0x11aea2[_0x1bdf('0xe')]=0x2;_0x11aea2[_0x1bdf('0xf')]=[];_0x11aea2[_0x1bdf('0x10')]=_[_0x1bdf('0x11')](_0xc02500,{'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')]});_0x11aea2['extensions'][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':util[_0x1bdf('0x15')]('CDR(type)=%s',_0x268139[_0x3048de][0x0][_0x1bdf('0x13')]),'context':_0x268139[_0x3048de][0x0]['context'],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2['priority']++,'VoiceExtensionId':_0x268139[_0x3048de][0x0]['VoiceExtensionId']});if(_0x268139[_0x3048de][0x0][_0x1bdf('0x13')]==='inbound'){_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':_0x1bdf('0x16')+_0x268139[_0x3048de][0x0]['VoiceExtensionId'],'context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2[_0x1bdf('0xe')]++,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});}else if(_0x268139[_0x3048de][0x0][_0x1bdf('0x13')]==='outbound'){if(_0x11aea2[_0x1bdf('0x10')]){_0x11aea2['extensions'][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':'CDR(destination)='+(_0x11aea2['extension']['cutdigits']?'${EXTEN:'+_0x11aea2[_0x1bdf('0x10')][_0x1bdf('0x19')]+'}':_0x1bdf('0x1a')),'context':_0x268139[_0x3048de][0x0]['context'],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2[_0x1bdf('0xe')]++,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});}_0x11aea2[_0x1bdf('0xf')]['push']({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':_0x1bdf('0x16')+_0x268139[_0x3048de][0x0][_0x1bdf('0x18')],'context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2['priority']++,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});var _0x3e2fbb=_0x11aea2[_0x1bdf('0xe')]++;_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x1b'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x3e2fbb+0x2)+_0x1bdf('0x1c')+(_0x3e2fbb+0x1)+')','context':_0x268139[_0x3048de][0x0]['context'],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x3e2fbb,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});if(_0x11aea2[_0x1bdf('0x10')]){_0x11aea2[_0x1bdf('0xf')]['push']({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':_0x11aea2[_0x1bdf('0x10')]['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0x11aea2[_0x1bdf('0x10')][_0x1bdf('0x19')]+'}':'CDR(prefix)=noprefix','context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2[_0x1bdf('0xe')]++,'VoiceExtensionId':_0x268139[_0x3048de][0x0]['VoiceExtensionId']});}_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':_0x1bdf('0x1d')+_0x268139[_0x3048de][0x0]['VoiceExtensionId'],'context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2['priority']++,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});if(_0x11aea2[_0x1bdf('0x10')]&&_0x11aea2[_0x1bdf('0x10')]['hasOwnProperty']('recordingFormat')&&_0x11aea2[_0x1bdf('0x10')][_0x1bdf('0x1e')]!=='none'){_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2['priority']++,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0]['type'],'app':_0x1bdf('0x14'),'appdata':_0x1bdf('0x1f')+_0x11aea2[_0x1bdf('0x10')]['recordingFormat']||_0x1bdf('0x20'),'context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2[_0x1bdf('0xe')]++,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});}}_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0]['type'],'app':'Set','appdata':_0x1bdf('0x21'),'context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2[_0x1bdf('0xe')]++,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':_0x1bdf('0x22'),'context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'priority':_0x11aea2['priority']++,'VoiceExtensionId':_0x268139[_0x3048de][0x0]['VoiceExtensionId']});_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0]['type'],'app':_0x1bdf('0x14'),'appdata':_0x1bdf('0x23'),'context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'exten':_0x268139[_0x3048de][0x0]['exten'],'priority':_0x11aea2[_0x1bdf('0xe')]++,'VoiceExtensionId':_0x268139[_0x3048de][0x0][_0x1bdf('0x18')]});for(var _0x339bed=0x0,_0x62b75b=0x0;_0x339bed<_0x268139[_0x3048de][_0x1bdf('0x24')];_0x339bed+=0x1,_0x62b75b=0x0){var _0x10d1e9=_0x268139[_0x3048de][_0x339bed];if(_0x10d1e9[_0x1bdf('0x13')]){_0x10d1e9['type']=_0x10d1e9[_0x1bdf('0x13')][_0x1bdf('0x25')]();}var _0x4c7878=[];var _0x282927=[];delete _0x10d1e9['id'];delete _0x10d1e9[_0x1bdf('0x26')];delete _0x10d1e9['updatedAt'];var _0x44bada=_0x10d1e9[_0x1bdf('0x27')]!==_0x1bdf('0x28')?[_0x10d1e9[_0x1bdf('0x27')]]:_0x10d1e9[_0x1bdf('0x29')]?_['map'](_[_0x1bdf('0xa')](_0x11aea2[_0x1bdf('0x6')],{'IntervalId':_0x10d1e9[_0x1bdf('0x29')]}),_0x1bdf('0x27')):[];if(_0x10d1e9[_0x1bdf('0xd')](_0x1bdf('0x2a'))){if(_0x10d1e9['tag']&&_0x10d1e9[_0x1bdf('0x2a')]!=='--'){_0x4c7878[_0x1bdf('0x12')]({'type':_0x10d1e9[_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':_0x1bdf('0x2b')+_0x10d1e9[_0x1bdf('0x2a')],'context':_0x10d1e9['context'],'exten':_0x10d1e9['exten'],'priority':_0x44bada[_0x1bdf('0x24')]+_0x11aea2[_0x1bdf('0xe')]+_0x62b75b++,'VoiceExtensionId':_0x10d1e9[_0x1bdf('0x18')]});}}if(_0x10d1e9[_0x1bdf('0x13')]==='outbound'&&_0x10d1e9[_0x1bdf('0xd')](_0x1bdf('0x2c'))){if(_0x10d1e9[_0x1bdf('0x2c')]){_0x4c7878[_0x1bdf('0x12')]({'type':_0x10d1e9[_0x1bdf('0x13')],'app':_0x1bdf('0x1b'),'appdata':_0x1bdf('0x2d')+_0x10d1e9['callerID']+')','context':_0x10d1e9[_0x1bdf('0x17')],'exten':_0x10d1e9['exten'],'priority':_0x44bada[_0x1bdf('0x24')]+_0x11aea2['priority']+_0x62b75b++,'VoiceExtensionId':_0x10d1e9[_0x1bdf('0x18')]});}else{_0x4c7878[_0x1bdf('0x12')]({'type':_0x10d1e9[_0x1bdf('0x13')],'app':_0x1bdf('0x1b'),'appdata':_0x1bdf('0x2e'),'context':_0x10d1e9[_0x1bdf('0x17')],'exten':_0x10d1e9[_0x1bdf('0x9')],'priority':_0x44bada[_0x1bdf('0x24')]+_0x11aea2['priority']+_0x62b75b++,'VoiceExtensionId':_0x10d1e9[_0x1bdf('0x18')]});}}if(_0x10d1e9['hasOwnProperty'](_0x1bdf('0x2f'))){if(_0x47933b['indexOf'](_0x10d1e9[_0x1bdf('0x30')][_0x1bdf('0x25')]())>=0x0&&_0x10d1e9[_0x1bdf('0x31')]!==_0x1bdf('0x32')){if(_0x10d1e9['answer']){_0x4c7878[_0x1bdf('0x12')]({'type':_0x10d1e9['type'],'app':_0x1bdf('0x1b'),'appdata':_0x1bdf('0x33'),'context':_0x10d1e9[_0x1bdf('0x17')],'exten':_0x10d1e9['exten'],'priority':_0x44bada['length']+_0x11aea2[_0x1bdf('0xe')]+_0x62b75b++,'VoiceExtensionId':_0x10d1e9['VoiceExtensionId']});_0x4c7878[_0x1bdf('0x12')]({'type':_0x10d1e9[_0x1bdf('0x13')],'app':_0x1bdf('0x14'),'appdata':_0x1bdf('0x34'),'context':_0x10d1e9['context'],'exten':_0x10d1e9['exten'],'priority':_0x44bada['length']+_0x11aea2[_0x1bdf('0xe')]+_0x62b75b++,'VoiceExtensionId':_0x10d1e9['VoiceExtensionId']});}else{_0x4c7878['push']({'type':_0x10d1e9[_0x1bdf('0x13')],'app':'ExecIf','appdata':_0x1bdf('0x35'),'context':_0x10d1e9[_0x1bdf('0x17')],'exten':_0x10d1e9[_0x1bdf('0x9')],'priority':_0x44bada['length']+_0x11aea2[_0x1bdf('0xe')]+_0x62b75b++,'VoiceExtensionId':_0x10d1e9[_0x1bdf('0x18')]});_0x4c7878['push']({'type':_0x10d1e9['type'],'app':_0x1bdf('0x14'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x10d1e9[_0x1bdf('0x17')],'exten':_0x10d1e9[_0x1bdf('0x9')],'priority':_0x44bada[_0x1bdf('0x24')]+_0x11aea2['priority']+_0x62b75b++,'VoiceExtensionId':_0x10d1e9[_0x1bdf('0x18')]});}}}for(var _0x54d258=0x0;_0x54d258<_0x44bada['length'];_0x54d258+=0x1){var _0x238d48=_0x11aea2[_0x1bdf('0xe')]+_0x44bada[_0x1bdf('0x24')];var _0x1a8f51=_0x54d258===_0x44bada[_0x1bdf('0x24')]-0x1?_0x11aea2[_0x1bdf('0xe')]+_0x4c7878[_0x1bdf('0x24')]+_0x282927[_0x1bdf('0x24')]+0x2:_0x11aea2['priority']+_0x54d258+0x1;_0x4c7878[_0x1bdf('0x36')](_0x54d258,0x0,{'type':_0x10d1e9['type'],'app':_0x1bdf('0x37'),'appdata':_0x44bada[_0x54d258]+'?'+_0x10d1e9[_0x1bdf('0x17')]+_0x1bdf('0x38')+_0x238d48+':'+_0x10d1e9[_0x1bdf('0x17')]+_0x1bdf('0x38')+_0x1a8f51,'exten':_0x10d1e9['exten'],'context':_0x10d1e9[_0x1bdf('0x17')],'priority':_0x11aea2[_0x1bdf('0xe')]+_0x54d258,'VoiceExtensionId':_0x268139[_0x3048de][0x0]['VoiceExtensionId']});}_0x10d1e9[_0x1bdf('0xe')]=_0x4c7878[_0x1bdf('0x24')]?_[_0x1bdf('0x39')](_0x4c7878)[_0x1bdf('0xe')]+0x1:_0x11aea2['priority'];_0x11aea2[_0x1bdf('0xe')]=(_0x282927[_0x1bdf('0x24')]?_[_0x1bdf('0x39')](_0x282927)[_0x1bdf('0xe')]:_0x10d1e9['priority'])+0x1;_0x11aea2['extensions']=_[_0x1bdf('0x3a')](_0x11aea2[_0x1bdf('0xf')],_0x4c7878,[_0x10d1e9],_0x282927);}_0x11aea2[_0x1bdf('0xf')][_0x1bdf('0x12')]({'type':_0x268139[_0x3048de][0x0][_0x1bdf('0x13')],'app':_0x1bdf('0x3b'),'exten':_0x268139[_0x3048de][0x0][_0x1bdf('0x9')],'context':_0x268139[_0x3048de][0x0][_0x1bdf('0x17')],'priority':_0x11aea2[_0x1bdf('0xe')],'VoiceExtensionId':_0x268139[_0x3048de][0x0]['VoiceExtensionId']});_0x2e709b[_0x1bdf('0x12')](_0x268139[_0x3048de][0x0]['VoiceExtensionId']);_0x401976=_[_0x1bdf('0x3a')](_0x401976,_0x11aea2[_0x1bdf('0xf')]);}}return _0x36edb3['transaction'](function(_0x10d43b){return _0x36edb3['models']['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':{'$in':_0x2e709b}},'transaction':_0x10d43b})[_0x1bdf('0x5')](function(_0x5e8ae4){return _0x36edb3[_0x1bdf('0x2')][_0x1bdf('0x7')]['bulkCreate'](_[_0x1bdf('0x3c')](_0x401976,_0x1bdf('0xe')),{'transaction':_0x10d43b});});});})['catch'](function(_0x128abc){console['error'](_0x128abc);});}exports[_0x1bdf('0x3d')]=rewrite;
\ No newline at end of file
index f8588d3..bc58216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5f9=['emit','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','squel','ioredis','../../../mysqldb','../../../config/logger','redis','defaults','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','CompanyId','CmContact','create','keys','then','push','pick','catch','stringify','cmContact','checkHopper','inspect','into','cm_hopper','ContactId','ListId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','insert','fromQuery','id\x20IN\x20?','str','calleridnum','cm_hopper_final','\x20=\x20?','findAll','dialCheckDuplicateType','CmList','Lists','get','always','sequelize','VoiceQueueId','onlyIfOpen','query','all','VoiceQueue','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','contact:csv_','resume','resolve'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xd5f9,0x7b));var _0x9d5f=function(_0x572165,_0x6a45cc){_0x572165=_0x572165-0x0;var _0x8c8709=_0xd5f9[_0x572165];return _0x8c8709;};'use strict';var BPromise=require(_0x9d5f('0x0'));var util=require(_0x9d5f('0x1'));var _=require('lodash');var fs=require('fs');var squel=require(_0x9d5f('0x2'));var Papa=require('papaparse');var Redis=require(_0x9d5f('0x3'));var db=require(_0x9d5f('0x4'))['db'];var config=require('../../../config/environment');var logger=require(_0x9d5f('0x5'))('api');config[_0x9d5f('0x6')]=_[_0x9d5f('0x7')](config[_0x9d5f('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0x9d5f('0x8'))(new Redis(config['redis']));require(_0x9d5f('0x9'))[_0x9d5f('0xa')](socket);try{if(!process[_0x9d5f('0xb')][0x2]||process[_0x9d5f('0xb')][0x2]===_0x9d5f('0xc')||process[_0x9d5f('0xb')][0x2]==='null'){throw new Error(_0x9d5f('0xd'));}var FILEPATH=process['argv'][0x2];if(!process[_0x9d5f('0xb')][0x3]||process[_0x9d5f('0xb')][0x3]===_0x9d5f('0xc')||process[_0x9d5f('0xb')][0x3]===_0x9d5f('0xe')||!process[_0x9d5f('0xb')][0x4]||process[_0x9d5f('0xb')][0x4]===_0x9d5f('0xc')||process[_0x9d5f('0xb')][0x4]==='null'){throw new Error(_0x9d5f('0xf'));}var FIELDS=_['zipObject'](process[_0x9d5f('0xb')][0x3][_0x9d5f('0x10')](','),process['argv'][0x4][_0x9d5f('0x10')](','));if(!process[_0x9d5f('0xb')][0x5]||process[_0x9d5f('0xb')][0x5]===_0x9d5f('0xc')||process[_0x9d5f('0xb')][0x5]==='null'){throw new Error(_0x9d5f('0x11'));}var LISTID=process[_0x9d5f('0xb')][0x5];var COMPANYID=process[_0x9d5f('0xb')][0x6]&&process[_0x9d5f('0xb')][0x6]!=='undefined'&&process[_0x9d5f('0xb')][0x6]!=='null'?process[_0x9d5f('0xb')][0x6]:null;var DUPLICATES=process[_0x9d5f('0xb')][0x7]&&process[_0x9d5f('0xb')][0x7]!==_0x9d5f('0xc')&&process[_0x9d5f('0xb')][0x7]!==_0x9d5f('0xe')?process[_0x9d5f('0xb')][0x7]:null;if(!process[_0x9d5f('0xb')][0x8]||process[_0x9d5f('0xb')][0x8]===_0x9d5f('0xc')||process['argv'][0x8]===_0x9d5f('0xe')){throw new Error(_0x9d5f('0x12'));}var SOCKET_TIMESTAMP=process[_0x9d5f('0xb')][0x8];}catch(_0x1d6a5b){logger[_0x9d5f('0x13')](_0x1d6a5b);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(_0x187b56,_0x58125a,_0x47d820,_0xbc273){var _0x3924f9={'message':_0x58125a};_0x3924f9[_0x187b56]=!![];if(_0x47d820){_0x3924f9[_0x9d5f('0x14')]=_0x47d820;}if(_0xbc273){_0x3924f9[_0x9d5f('0x15')]=_0xbc273;}return _0x3924f9;}function isEmail(_0x307046){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))*$/[_0x9d5f('0x16')](_0x307046);}function checkRow(_0x3d228b,_0x197fe4,_0x3fb081){return new BPromise(function(_0x1020d0,_0x106862){if(_[_0x9d5f('0x17')](_0x3d228b)){return _0x106862(handleCheckRowError(_0x9d5f('0x13'),_0x9d5f('0x18'),null,_0x3fb081));}if(_0x3d228b[_0x9d5f('0x19')]&&_0x3d228b[_0x9d5f('0x19')][_0x9d5f('0x1a')]){var _0x2d9b9d=_[_0x9d5f('0x1b')](_0x3d228b['errors'],_0x9d5f('0x1c'))[_0x9d5f('0x1d')](';');return _0x106862(handleCheckRowError(_0x9d5f('0x13'),_0x2d9b9d,null,_0x3fb081));}var _0x208a6a={};for(var _0x1133f7 in FIELDS){if(FIELDS[_0x9d5f('0x1e')](_0x1133f7)&&FIELDS[_0x1133f7]){_0x208a6a[_0x1133f7]=_0x3d228b['data'][0x0][FIELDS[_0x1133f7]]||_0x3d228b[_0x9d5f('0x1f')][0x0]['\ufeff'+FIELDS[_0x1133f7]];}}if(!_0x208a6a[_0x9d5f('0x20')]){return _0x106862(handleCheckRowError(_0x9d5f('0x13'),_0x9d5f('0x21'),null,_0x3fb081));}if(!_0x208a6a[_0x9d5f('0x22')]){return _0x106862(handleCheckRowError(_0x9d5f('0x13'),_0x9d5f('0x23'),null,_0x3fb081));}if(_0x208a6a[_0x9d5f('0x24')]){var _0x138ced=moment(_0x208a6a[_0x9d5f('0x24')],_0x9d5f('0x25'));if(!_0x138ced[_0x9d5f('0x26')]()){return _0x106862(handleCheckRowError(_0x9d5f('0x13'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x3fb081));}}if(_0x208a6a['email']){if(!isEmail(_0x208a6a[_0x9d5f('0x27')])){return _0x106862(handleCheckRowError(_0x9d5f('0x13'),'email\x20format\x20is\x20not\x20valid!',null,_0x3fb081));}}_0x208a6a['ListId']=LISTID;_0x208a6a[_0x9d5f('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x197fe4){var _0x1db03e={};for(var _0x1c1e4f=0x0,_0x4935b4=DUPLICATES[_0x9d5f('0x1a')];_0x1c1e4f<_0x4935b4;_0x1c1e4f+=0x1){_0x1db03e[DUPLICATES[_0x1c1e4f]]=_0x208a6a[DUPLICATES[_0x1c1e4f]];}var _0x4ac11a=_['find'](_0x197fe4,_0x1db03e);if(_0x4ac11a){return _0x106862(handleCheckRowError('duplicate','Duplicate\x20Contact',_0x4ac11a,_0x3fb081));}}return db[_0x9d5f('0x29')][_0x9d5f('0x2a')](_0x208a6a,{'raw':!![],'hooks':![],'fields':_[_0x9d5f('0x2b')](_0x208a6a)})[_0x9d5f('0x2c')](function(_0x44c505){if(DUPLICATES&&DUPLICATES[_0x9d5f('0x1a')]&&_0x197fe4){_0x197fe4[_0x9d5f('0x2d')](_[_0x9d5f('0x2e')](_0x208a6a,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x44c505['id'];return _0x1020d0();})[_0x9d5f('0x2f')](function(_0x2e54d3){return _0x106862(handleCheckRowError(_0x9d5f('0x13'),'Error\x20while\x20creating\x20contact:\x20'+(_0x2e54d3[_0x9d5f('0x1c')]||JSON[_0x9d5f('0x30')](_0x2e54d3)),null,_0x3fb081));});});}function checkHopper(){function _0x3b9c5c(){return function(_0x5040fe){logger['error'](_0x9d5f('0x31'),_0x9d5f('0x32'),util[_0x9d5f('0x33')](_0x5040fe,{'showHidden':![],'depth':null}));};}var _0x16443d=function(_0x3c1651,_0x4eddaf){var _0x4c24c4=squel['insert']()[_0x9d5f('0x34')](_0x9d5f('0x35'))['fromQuery']([_0x9d5f('0x22'),'scheduledAt',_0x9d5f('0x36'),_0x9d5f('0x37'),_0x4eddaf,_0x9d5f('0x38'),_0x9d5f('0x39')],squel[_0x9d5f('0x3a')]()[_0x9d5f('0x3b')](_0x9d5f('0x22'),'phone')[_0x9d5f('0x3b')](_0x9d5f('0x3c'),_0x9d5f('0x3d'))['field']('id',_0x9d5f('0x36'))[_0x9d5f('0x3b')](LISTID[_0x9d5f('0x3e')](),_0x9d5f('0x37'))[_0x9d5f('0x3b')](_0x3c1651['id']['toString'](),_0x4eddaf)[_0x9d5f('0x3b')](_0x9d5f('0x3c'),_0x9d5f('0x38'))[_0x9d5f('0x3b')]('NOW()','updatedAt')[_0x9d5f('0x3f')](_0x9d5f('0x40'))[_0x9d5f('0x41')](_0x9d5f('0x42'))[_0x9d5f('0x41')](_0x9d5f('0x43'),LISTID[_0x9d5f('0x3e')]())[_0x9d5f('0x41')](_0x9d5f('0x44'))['where'](_0x9d5f('0x45'),squel[_0x9d5f('0x3a')]()[_0x9d5f('0x3b')](_0x9d5f('0x22'))['from'](_0x9d5f('0x35'))['where'](_0x4eddaf+'\x20=\x20?',_0x3c1651['id'][_0x9d5f('0x3e')]())))[_0x9d5f('0x3e')]();return _0x4c24c4;};var _0xb9c111=function(_0x2b97b3,_0x200da5){var _0x40f27a=squel[_0x9d5f('0x46')]()[_0x9d5f('0x34')](_0x9d5f('0x35'))[_0x9d5f('0x47')]([_0x9d5f('0x22'),_0x9d5f('0x3d'),'ContactId',_0x9d5f('0x37'),_0x200da5,'createdAt',_0x9d5f('0x39')],squel['select']()[_0x9d5f('0x3b')](_0x9d5f('0x22'),_0x9d5f('0x22'))[_0x9d5f('0x3b')](_0x9d5f('0x3c'),'scheduledAt')[_0x9d5f('0x3b')]('id','ContactId')[_0x9d5f('0x3b')](LISTID[_0x9d5f('0x3e')](),'ListId')[_0x9d5f('0x3b')](_0x2b97b3['id'][_0x9d5f('0x3e')](),_0x200da5)[_0x9d5f('0x3b')](_0x9d5f('0x3c'),_0x9d5f('0x38'))['field']('NOW()',_0x9d5f('0x39'))[_0x9d5f('0x3f')](_0x9d5f('0x40'))['where'](_0x9d5f('0x42'))['where']('ListId\x20=\x20?',LISTID[_0x9d5f('0x3e')]())[_0x9d5f('0x41')](_0x9d5f('0x48'),squel[_0x9d5f('0x49')](hopperContacts))[_0x9d5f('0x41')](_0x9d5f('0x44'))['where'](_0x9d5f('0x45'),squel[_0x9d5f('0x3a')]()[_0x9d5f('0x3b')](_0x9d5f('0x4a'))[_0x9d5f('0x3f')](_0x9d5f('0x4b'))[_0x9d5f('0x41')](_0x200da5+_0x9d5f('0x4c'),_0x2b97b3['id'][_0x9d5f('0x3e')]()))[_0x9d5f('0x41')](_0x9d5f('0x45'),squel[_0x9d5f('0x3a')]()[_0x9d5f('0x3b')](_0x9d5f('0x22'))['from'](_0x9d5f('0x35'))[_0x9d5f('0x41')](_0x200da5+_0x9d5f('0x4c'),_0x2b97b3['id']['toString']())))[_0x9d5f('0x3e')]();return _0x40f27a;};function _0x4d45cf(_0x12b5a9,_0x3f1067){var _0x58903b=squel[_0x9d5f('0x46')]()[_0x9d5f('0x34')](_0x9d5f('0x35'))['fromQuery'](['phone',_0x9d5f('0x3d'),_0x9d5f('0x36'),_0x9d5f('0x37'),_0x3f1067,_0x9d5f('0x38'),'updatedAt'],squel[_0x9d5f('0x3a')]()[_0x9d5f('0x3b')](_0x9d5f('0x22'),_0x9d5f('0x22'))[_0x9d5f('0x3b')](_0x9d5f('0x3c'),'scheduledAt')[_0x9d5f('0x3b')]('id',_0x9d5f('0x36'))[_0x9d5f('0x3b')](LISTID[_0x9d5f('0x3e')](),_0x9d5f('0x37'))['field'](_0x12b5a9['id'][_0x9d5f('0x3e')](),_0x3f1067)['field'](_0x9d5f('0x3c'),_0x9d5f('0x38'))['field']('NOW()','updatedAt')[_0x9d5f('0x3f')](_0x9d5f('0x40'))[_0x9d5f('0x41')]('deletedAt\x20IS\x20NULL')[_0x9d5f('0x41')](_0x9d5f('0x43'),LISTID['toString']())[_0x9d5f('0x41')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0x9d5f('0x41')](_0x9d5f('0x44')))[_0x9d5f('0x3e')]();return _0x58903b;}function _0x1cda36(_0x1800c8,_0x398a30){var _0x173fde=squel['insert']()[_0x9d5f('0x34')]('cm_hopper_black')['fromQuery']([_0x9d5f('0x22'),_0x9d5f('0x36'),_0x9d5f('0x37'),_0x398a30,'createdAt','updatedAt'],squel[_0x9d5f('0x3a')]()['field']('phone',_0x9d5f('0x22'))[_0x9d5f('0x3b')]('id',_0x9d5f('0x36'))[_0x9d5f('0x3b')](LISTID[_0x9d5f('0x3e')](),_0x9d5f('0x37'))[_0x9d5f('0x3b')](_0x1800c8['id'][_0x9d5f('0x3e')](),_0x398a30)['field'](_0x9d5f('0x3c'),'createdAt')[_0x9d5f('0x3b')](_0x9d5f('0x3c'),_0x9d5f('0x39'))[_0x9d5f('0x3f')]('cm_contacts')[_0x9d5f('0x41')](_0x9d5f('0x42'))[_0x9d5f('0x41')](_0x9d5f('0x43'),LISTID['toString']())[_0x9d5f('0x41')](_0x9d5f('0x48'),squel[_0x9d5f('0x49')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0x9d5f('0x3e')]();return _0x173fde;}return db['VoiceQueue'][_0x9d5f('0x4d')]({'where':{'type':'outbound'},'attributes':['id',_0x9d5f('0x4e')],'include':[{'model':db[_0x9d5f('0x4f')],'as':_0x9d5f('0x50'),'where':{'id':LISTID}}]})[_0x9d5f('0x2c')](function(_0x497528){var _0x36fa5d=[];if(_0x497528){var _0x163202;for(var _0x174b49=0x0,_0x588807;_0x174b49<_0x497528[_0x9d5f('0x1a')];_0x174b49+=0x1){_0x588807=_0x497528[_0x174b49][_0x9d5f('0x51')]({'plain':!![]});switch(_0x588807['dialCheckDuplicateType']){case _0x9d5f('0x52'):_0x36fa5d[_0x9d5f('0x2d')](db[_0x9d5f('0x53')]['query'](_0xb9c111(_0x588807,_0x9d5f('0x54')))[_0x9d5f('0x2c')](function(){})[_0x9d5f('0x2f')](_0x3b9c5c()));break;case _0x9d5f('0x55'):_0x36fa5d['push'](db[_0x9d5f('0x53')][_0x9d5f('0x56')](_0x16443d(_0x588807,_0x9d5f('0x54')))['then'](function(){})[_0x9d5f('0x2f')](_0x3b9c5c()));break;default:_0x36fa5d[_0x9d5f('0x2d')](db['sequelize'][_0x9d5f('0x56')](_0x4d45cf(_0x588807,_0x9d5f('0x54')))[_0x9d5f('0x2c')](function(){})[_0x9d5f('0x2f')](_0x3b9c5c()));}}}return _0x36fa5d;})[_0x9d5f('0x57')]()[_0x9d5f('0x2c')](function(){return db[_0x9d5f('0x58')][_0x9d5f('0x4d')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x9d5f('0x4f')],'as':_0x9d5f('0x59'),'where':{'id':LISTID}}]})[_0x9d5f('0x2c')](function(_0x20cd11){var _0x1cc0f0=[];if(_0x20cd11){var _0x1ad291;for(var _0x24127e=0x0,_0x531f1d;_0x24127e<_0x20cd11[_0x9d5f('0x1a')];_0x24127e+=0x1){_0x531f1d=_0x20cd11[_0x24127e][_0x9d5f('0x51')]({'plain':!![]});_0x1cc0f0['push'](db['sequelize'][_0x9d5f('0x56')](_0x1cda36(_0x531f1d,_0x9d5f('0x54')))[_0x9d5f('0x2c')](function(){})[_0x9d5f('0x2f')](_0x3b9c5c()));}}return _0x1cc0f0;})[_0x9d5f('0x57')]();})['then'](function(){return db[_0x9d5f('0x5a')][_0x9d5f('0x4d')]({'attributes':['id',_0x9d5f('0x4e')],'include':[{'model':db[_0x9d5f('0x4f')],'as':_0x9d5f('0x50'),'where':{'id':LISTID}}]})[_0x9d5f('0x2c')](function(_0x460762){var _0x43272a=[];if(_0x460762){for(var _0x16dbaf=0x0,_0xc7791;_0x16dbaf<_0x460762[_0x9d5f('0x1a')];_0x16dbaf+=0x1){_0xc7791=_0x460762[_0x16dbaf][_0x9d5f('0x51')]({'plain':!![]});switch(_0xc7791[_0x9d5f('0x4e')]){case _0x9d5f('0x52'):_0x43272a[_0x9d5f('0x2d')](db['sequelize'][_0x9d5f('0x56')](_0xb9c111(_0xc7791,_0x9d5f('0x5b')))[_0x9d5f('0x2c')](function(){})[_0x9d5f('0x2f')](_0x3b9c5c()));break;case _0x9d5f('0x55'):_0x43272a[_0x9d5f('0x2d')](db[_0x9d5f('0x53')][_0x9d5f('0x56')](_0x16443d(_0xc7791,'CampaignId'))[_0x9d5f('0x2c')](function(){})['catch'](_0x3b9c5c()));break;default:_0x43272a[_0x9d5f('0x2d')](db[_0x9d5f('0x53')][_0x9d5f('0x56')](_0x4d45cf(_0xc7791,_0x9d5f('0x5b')))[_0x9d5f('0x2c')](function(){})[_0x9d5f('0x2f')](_0x3b9c5c()));}}}return _0x43272a;})[_0x9d5f('0x57')]();})[_0x9d5f('0x2c')](function(){return db[_0x9d5f('0x5a')][_0x9d5f('0x4d')]({'attributes':['id'],'include':[{'model':db[_0x9d5f('0x4f')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x9d5f('0x2c')](function(_0x3a5137){var _0x444f5a=[];if(_0x3a5137){for(var _0x1506a5=0x0,_0x494c59;_0x1506a5<_0x3a5137[_0x9d5f('0x1a')];_0x1506a5+=0x1){_0x494c59=_0x3a5137[_0x1506a5]['get']({'plain':!![]});_0x444f5a['push'](db[_0x9d5f('0x53')]['query'](_0x1cda36(_0x494c59,_0x9d5f('0x5b')))[_0x9d5f('0x2c')](function(){})[_0x9d5f('0x2f')](_0x3b9c5c()));}}return _0x444f5a;})[_0x9d5f('0x57')]();})['catch'](function(_0x3d1465){logger[_0x9d5f('0x13')](_0x9d5f('0x5c'),_0x9d5f('0x5d'),_0x3d1465[_0x9d5f('0x1c')]);});}var processPromises=function(_0x5ba8a2){return BPromise[_0x9d5f('0x57')](promises)['then'](function(_0x360645){})[_0x9d5f('0x2f')](function(_0x238b8b){logger[_0x9d5f('0x13')](_0x9d5f('0x5e'),JSON['stringify'](_0x238b8b));})[_0x9d5f('0x5f')](function(){socket['emit'](_0x9d5f('0x60')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x5ba8a2){return _0x5ba8a2[_0x9d5f('0x61')]();}});};var endCsv=function(){return BPromise[_0x9d5f('0x62')]()[_0x9d5f('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0x9d5f('0x2c')](function(){socket[_0x9d5f('0x63')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x5edd61){logger[_0x9d5f('0x13')](_0x9d5f('0x64'),JSON[_0x9d5f('0x30')](_0x5edd61));}finally{process[_0x9d5f('0x65')](0x0);}});};process['on'](_0x9d5f('0x66'),function(){logger[_0x9d5f('0x67')](_0x9d5f('0x68'));endCsv();});function main(){return BPromise[_0x9d5f('0x62')]()[_0x9d5f('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x9d5f('0x10')](',');return db[_0x9d5f('0x29')][_0x9d5f('0x4d')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x9d5f('0x2c')](function(_0x45fd76){var _0x4f238a=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x9d5f('0x69')](_0x4f238a,{'header':!![],'skipEmptyLines':!![],'step':function(_0x2de64d,_0x557aa3){total+=0x1;var _0xe4eeeb=total;promises[_0x9d5f('0x2d')](checkRow(_0x2de64d,_0x45fd76,_0xe4eeeb)[_0x9d5f('0x2c')](function(){success+=0x1;})[_0x9d5f('0x2f')](function(_0x428fa0){if(_0x428fa0[_0x9d5f('0x13')]){errors+=0x1;delete _0x428fa0[_0x9d5f('0x13')];}else if(_0x428fa0[_0x9d5f('0x6a')]){duplicates+=0x1;delete _0x428fa0['duplicate'];}rows['push'](_0x428fa0);}));if(total%0xc8===0x0){_0x557aa3[_0x9d5f('0x6b')]();return processPromises(_0x557aa3);}},'complete':function(){return processPromises()[_0x9d5f('0x2c')](function(){logger[_0x9d5f('0x67')](_0x9d5f('0x6c'));endCsv();});},'error':function(_0x5d5d9c,_0x55b53e){logger[_0x9d5f('0x67')](_0x9d5f('0x6d'),JSON[_0x9d5f('0x30')](_0x5d5d9c));endCsv();}});})[_0x9d5f('0x2f')](function(_0x3a7094){logger['error'](_0x9d5f('0x6e'),JSON['stringify'](_0x3a7094));});}main();
\ No newline at end of file
+var _0x06e4=['findAll','outbound','dialCheckDuplicateType','CmList','get','always','sequelize','query','VoiceQueueId','onlyIfOpen','catch','all','VoiceQueue','Campaign','Lists','CampaignId','BlackLists','generalCheckHopper','contact:csv_','resume','resolve','emit','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','papaparse','../../../mysqldb','../../../config/environment','../../../config/logger','defaults','redis','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','Missing\x20filepath\x20parameter!','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','index','test','isNil','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','message','join','hasOwnProperty','data','firstName\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','CompanyId','length','find','CmContact','keys','then','push','pick','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','into','cm_hopper','fromQuery','phone','ContactId','ListId','createdAt','select','field','NOW()','scheduledAt','toString','updatedAt','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','insert','id\x20IN\x20?','str','calleridnum','cm_hopper_final','\x20=\x20?','deletedAt\x20IS\x20NULL','cm_hopper_black'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x06e4,0x16c));var _0x406e=function(_0x12e073,_0x2a6387){_0x12e073=_0x12e073-0x0;var _0x17e67b=_0x06e4[_0x12e073];return _0x17e67b;};'use strict';var BPromise=require(_0x406e('0x0'));var util=require(_0x406e('0x1'));var _=require('lodash');var fs=require('fs');var squel=require('squel');var Papa=require(_0x406e('0x2'));var Redis=require('ioredis');var db=require(_0x406e('0x3'))['db'];var config=require(_0x406e('0x4'));var logger=require(_0x406e('0x5'))('api');config['redis']=_[_0x406e('0x6')](config[_0x406e('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x406e('0x8'))(new Redis(config[_0x406e('0x7')]));require(_0x406e('0x9'))[_0x406e('0xa')](socket);try{if(!process[_0x406e('0xb')][0x2]||process[_0x406e('0xb')][0x2]==='undefined'||process[_0x406e('0xb')][0x2]==='null'){throw new Error(_0x406e('0xc'));}var FILEPATH=process[_0x406e('0xb')][0x2];if(!process['argv'][0x3]||process[_0x406e('0xb')][0x3]===_0x406e('0xd')||process[_0x406e('0xb')][0x3]===_0x406e('0xe')||!process[_0x406e('0xb')][0x4]||process['argv'][0x4]===_0x406e('0xd')||process['argv'][0x4]===_0x406e('0xe')){throw new Error(_0x406e('0xf'));}var FIELDS=_[_0x406e('0x10')](process[_0x406e('0xb')][0x3][_0x406e('0x11')](','),process[_0x406e('0xb')][0x4]['split'](','));if(!process[_0x406e('0xb')][0x5]||process[_0x406e('0xb')][0x5]===_0x406e('0xd')||process[_0x406e('0xb')][0x5]===_0x406e('0xe')){throw new Error(_0x406e('0x12'));}var LISTID=process[_0x406e('0xb')][0x5];var COMPANYID=process[_0x406e('0xb')][0x6]&&process[_0x406e('0xb')][0x6]!==_0x406e('0xd')&&process[_0x406e('0xb')][0x6]!=='null'?process[_0x406e('0xb')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x406e('0xb')][0x7]!==_0x406e('0xd')&&process[_0x406e('0xb')][0x7]!=='null'?process['argv'][0x7]:null;if(!process[_0x406e('0xb')][0x8]||process[_0x406e('0xb')][0x8]===_0x406e('0xd')||process[_0x406e('0xb')][0x8]==='null'){throw new Error(_0x406e('0x13'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x528c6f){logger['error'](_0x528c6f);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(_0x2038f0,_0x24b13c,_0x15eb2f,_0x434057){var _0xaa9d8f={'message':_0x24b13c};_0xaa9d8f[_0x2038f0]=!![];if(_0x15eb2f){_0xaa9d8f[_0x406e('0x14')]=_0x15eb2f;}if(_0x434057){_0xaa9d8f[_0x406e('0x15')]=_0x434057;}return _0xaa9d8f;}function isEmail(_0x2b61cb){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))*$/[_0x406e('0x16')](_0x2b61cb);}function checkRow(_0x1bf21d,_0x131336,_0x3b17a0){return new BPromise(function(_0xb5fb48,_0x333239){if(_[_0x406e('0x17')](_0x1bf21d)){return _0x333239(handleCheckRowError(_0x406e('0x18'),_0x406e('0x19'),null,_0x3b17a0));}if(_0x1bf21d[_0x406e('0x1a')]&&_0x1bf21d['errors']['length']){var _0x5adab4=_[_0x406e('0x1b')](_0x1bf21d[_0x406e('0x1a')],_0x406e('0x1c'))[_0x406e('0x1d')](';');return _0x333239(handleCheckRowError(_0x406e('0x18'),_0x5adab4,null,_0x3b17a0));}var _0x219ded={};for(var _0xb3d5d9 in FIELDS){if(FIELDS[_0x406e('0x1e')](_0xb3d5d9)&&FIELDS[_0xb3d5d9]){_0x219ded[_0xb3d5d9]=_0x1bf21d[_0x406e('0x1f')][0x0][FIELDS[_0xb3d5d9]]||_0x1bf21d[_0x406e('0x1f')][0x0]['\ufeff'+FIELDS[_0xb3d5d9]];}}if(!_0x219ded['firstName']){return _0x333239(handleCheckRowError(_0x406e('0x18'),_0x406e('0x20'),null,_0x3b17a0));}if(!_0x219ded['phone']){return _0x333239(handleCheckRowError(_0x406e('0x18'),'phone\x20not\x20specified!',null,_0x3b17a0));}if(_0x219ded[_0x406e('0x21')]){var _0x52c60c=moment(_0x219ded[_0x406e('0x21')],_0x406e('0x22'));if(!_0x52c60c[_0x406e('0x23')]()){return _0x333239(handleCheckRowError('error','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x3b17a0));}}if(_0x219ded[_0x406e('0x24')]){if(!isEmail(_0x219ded[_0x406e('0x24')])){return _0x333239(handleCheckRowError(_0x406e('0x18'),'email\x20format\x20is\x20not\x20valid!',null,_0x3b17a0));}}_0x219ded['ListId']=LISTID;_0x219ded[_0x406e('0x25')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x406e('0x26')]&&_0x131336){var _0x2f63a8={};for(var _0x3cf7dc=0x0,_0x15ec42=DUPLICATES[_0x406e('0x26')];_0x3cf7dc<_0x15ec42;_0x3cf7dc+=0x1){_0x2f63a8[DUPLICATES[_0x3cf7dc]]=_0x219ded[DUPLICATES[_0x3cf7dc]];}var _0x596359=_[_0x406e('0x27')](_0x131336,_0x2f63a8);if(_0x596359){return _0x333239(handleCheckRowError('duplicate','Duplicate\x20Contact',_0x596359,_0x3b17a0));}}return db[_0x406e('0x28')]['create'](_0x219ded,{'raw':!![],'hooks':![],'fields':_[_0x406e('0x29')](_0x219ded)})[_0x406e('0x2a')](function(_0x578caa){if(DUPLICATES&&DUPLICATES[_0x406e('0x26')]&&_0x131336){_0x131336[_0x406e('0x2b')](_[_0x406e('0x2c')](_0x219ded,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x578caa['id'];return _0xb5fb48();})['catch'](function(_0x11a520){return _0x333239(handleCheckRowError(_0x406e('0x18'),_0x406e('0x2d')+(_0x11a520['message']||JSON[_0x406e('0x2e')](_0x11a520)),null,_0x3b17a0));});});}function checkHopper(){function _0x44d8a3(){return function(_0x26fbd7){logger['error'](_0x406e('0x2f'),_0x406e('0x30'),util['inspect'](_0x26fbd7,{'showHidden':![],'depth':null}));};}var _0x537edb=function(_0x1bbf4f,_0x3baf83){var _0x369f4d=squel['insert']()[_0x406e('0x31')](_0x406e('0x32'))[_0x406e('0x33')]([_0x406e('0x34'),'scheduledAt',_0x406e('0x35'),_0x406e('0x36'),_0x3baf83,_0x406e('0x37'),'updatedAt'],squel[_0x406e('0x38')]()['field'](_0x406e('0x34'),_0x406e('0x34'))[_0x406e('0x39')](_0x406e('0x3a'),_0x406e('0x3b'))[_0x406e('0x39')]('id',_0x406e('0x35'))[_0x406e('0x39')](LISTID[_0x406e('0x3c')](),_0x406e('0x36'))['field'](_0x1bbf4f['id'][_0x406e('0x3c')](),_0x3baf83)['field'](_0x406e('0x3a'),_0x406e('0x37'))[_0x406e('0x39')]('NOW()',_0x406e('0x3d'))['from'](_0x406e('0x3e'))[_0x406e('0x3f')]('deletedAt\x20IS\x20NULL')[_0x406e('0x3f')](_0x406e('0x40'),LISTID[_0x406e('0x3c')]())['where'](_0x406e('0x41'))[_0x406e('0x3f')](_0x406e('0x42'),squel[_0x406e('0x38')]()[_0x406e('0x39')](_0x406e('0x34'))[_0x406e('0x43')](_0x406e('0x32'))['where'](_0x3baf83+'\x20=\x20?',_0x1bbf4f['id'][_0x406e('0x3c')]())))[_0x406e('0x3c')]();return _0x369f4d;};var _0x1ef02e=function(_0x160faa,_0x3a09bd){var _0x3133ad=squel[_0x406e('0x44')]()[_0x406e('0x31')](_0x406e('0x32'))['fromQuery'](['phone','scheduledAt',_0x406e('0x35'),'ListId',_0x3a09bd,_0x406e('0x37'),'updatedAt'],squel[_0x406e('0x38')]()['field'](_0x406e('0x34'),'phone')[_0x406e('0x39')](_0x406e('0x3a'),_0x406e('0x3b'))[_0x406e('0x39')]('id',_0x406e('0x35'))[_0x406e('0x39')](LISTID[_0x406e('0x3c')](),_0x406e('0x36'))['field'](_0x160faa['id']['toString'](),_0x3a09bd)[_0x406e('0x39')](_0x406e('0x3a'),_0x406e('0x37'))[_0x406e('0x39')](_0x406e('0x3a'),'updatedAt')[_0x406e('0x43')]('cm_contacts')[_0x406e('0x3f')]('deletedAt\x20IS\x20NULL')['where'](_0x406e('0x40'),LISTID['toString']())[_0x406e('0x3f')](_0x406e('0x45'),squel[_0x406e('0x46')](hopperContacts))[_0x406e('0x3f')](_0x406e('0x41'))[_0x406e('0x3f')](_0x406e('0x42'),squel[_0x406e('0x38')]()[_0x406e('0x39')](_0x406e('0x47'))[_0x406e('0x43')](_0x406e('0x48'))[_0x406e('0x3f')](_0x3a09bd+_0x406e('0x49'),_0x160faa['id'][_0x406e('0x3c')]()))[_0x406e('0x3f')](_0x406e('0x42'),squel[_0x406e('0x38')]()[_0x406e('0x39')]('phone')[_0x406e('0x43')]('cm_hopper')[_0x406e('0x3f')](_0x3a09bd+'\x20=\x20?',_0x160faa['id'][_0x406e('0x3c')]())))[_0x406e('0x3c')]();return _0x3133ad;};function _0x4dfe4a(_0x3d5cd2,_0x2f8425){var _0x28f0a8=squel['insert']()[_0x406e('0x31')](_0x406e('0x32'))['fromQuery']([_0x406e('0x34'),_0x406e('0x3b'),'ContactId',_0x406e('0x36'),_0x2f8425,_0x406e('0x37'),_0x406e('0x3d')],squel[_0x406e('0x38')]()[_0x406e('0x39')]('phone',_0x406e('0x34'))[_0x406e('0x39')](_0x406e('0x3a'),'scheduledAt')[_0x406e('0x39')]('id',_0x406e('0x35'))['field'](LISTID[_0x406e('0x3c')](),_0x406e('0x36'))[_0x406e('0x39')](_0x3d5cd2['id'][_0x406e('0x3c')](),_0x2f8425)['field']('NOW()',_0x406e('0x37'))[_0x406e('0x39')](_0x406e('0x3a'),_0x406e('0x3d'))[_0x406e('0x43')](_0x406e('0x3e'))[_0x406e('0x3f')](_0x406e('0x4a'))[_0x406e('0x3f')](_0x406e('0x40'),LISTID[_0x406e('0x3c')]())['where'](_0x406e('0x45'),squel[_0x406e('0x46')](hopperContacts))[_0x406e('0x3f')](_0x406e('0x41')))['toString']();return _0x28f0a8;}function _0x36abb2(_0xffc297,_0x8b22c6){var _0x23b8d4=squel['insert']()[_0x406e('0x31')](_0x406e('0x4b'))[_0x406e('0x33')](['phone','ContactId','ListId',_0x8b22c6,_0x406e('0x37'),_0x406e('0x3d')],squel[_0x406e('0x38')]()[_0x406e('0x39')](_0x406e('0x34'),_0x406e('0x34'))['field']('id',_0x406e('0x35'))[_0x406e('0x39')](LISTID[_0x406e('0x3c')](),'ListId')['field'](_0xffc297['id'][_0x406e('0x3c')](),_0x8b22c6)['field'](_0x406e('0x3a'),_0x406e('0x37'))['field'](_0x406e('0x3a'),_0x406e('0x3d'))[_0x406e('0x43')]('cm_contacts')[_0x406e('0x3f')](_0x406e('0x4a'))[_0x406e('0x3f')](_0x406e('0x40'),LISTID[_0x406e('0x3c')]())['where'](_0x406e('0x45'),squel[_0x406e('0x46')](hopperContacts))[_0x406e('0x3f')](_0x406e('0x41')))[_0x406e('0x3c')]();return _0x23b8d4;}return db['VoiceQueue'][_0x406e('0x4c')]({'where':{'type':_0x406e('0x4d')},'attributes':['id',_0x406e('0x4e')],'include':[{'model':db[_0x406e('0x4f')],'as':'Lists','where':{'id':LISTID}}]})[_0x406e('0x2a')](function(_0x264b27){var _0x38036e=[];if(_0x264b27){var _0x38e1f7;for(var _0x190ee4=0x0,_0x531510;_0x190ee4<_0x264b27[_0x406e('0x26')];_0x190ee4+=0x1){_0x531510=_0x264b27[_0x190ee4][_0x406e('0x50')]({'plain':!![]});switch(_0x531510[_0x406e('0x4e')]){case _0x406e('0x51'):_0x38036e['push'](db[_0x406e('0x52')][_0x406e('0x53')](_0x1ef02e(_0x531510,_0x406e('0x54')))[_0x406e('0x2a')](function(){})['catch'](_0x44d8a3()));break;case _0x406e('0x55'):_0x38036e['push'](db[_0x406e('0x52')]['query'](_0x537edb(_0x531510,'VoiceQueueId'))[_0x406e('0x2a')](function(){})[_0x406e('0x56')](_0x44d8a3()));break;default:_0x38036e['push'](db['sequelize'][_0x406e('0x53')](_0x4dfe4a(_0x531510,'VoiceQueueId'))[_0x406e('0x2a')](function(){})[_0x406e('0x56')](_0x44d8a3()));}}}return _0x38036e;})[_0x406e('0x57')]()[_0x406e('0x2a')](function(){return db[_0x406e('0x58')][_0x406e('0x4c')]({'where':{'type':_0x406e('0x4d')},'attributes':['id'],'include':[{'model':db[_0x406e('0x4f')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x406e('0x2a')](function(_0x41eb1f){var _0x1989e6=[];if(_0x41eb1f){var _0x5e24dc;for(var _0x62ff4f=0x0,_0x2f6bc2;_0x62ff4f<_0x41eb1f[_0x406e('0x26')];_0x62ff4f+=0x1){_0x2f6bc2=_0x41eb1f[_0x62ff4f]['get']({'plain':!![]});_0x1989e6['push'](db['sequelize'][_0x406e('0x53')](_0x36abb2(_0x2f6bc2,_0x406e('0x54')))['then'](function(){})[_0x406e('0x56')](_0x44d8a3()));}}return _0x1989e6;})['all']();})[_0x406e('0x2a')](function(){return db[_0x406e('0x59')][_0x406e('0x4c')]({'attributes':['id',_0x406e('0x4e')],'include':[{'model':db[_0x406e('0x4f')],'as':_0x406e('0x5a'),'where':{'id':LISTID}}]})[_0x406e('0x2a')](function(_0x428c18){var _0x1a0c19=[];if(_0x428c18){for(var _0xbb8375=0x0,_0x40f6c2;_0xbb8375<_0x428c18[_0x406e('0x26')];_0xbb8375+=0x1){_0x40f6c2=_0x428c18[_0xbb8375]['get']({'plain':!![]});switch(_0x40f6c2[_0x406e('0x4e')]){case'always':_0x1a0c19[_0x406e('0x2b')](db['sequelize'][_0x406e('0x53')](_0x1ef02e(_0x40f6c2,'CampaignId'))['then'](function(){})[_0x406e('0x56')](_0x44d8a3()));break;case'onlyIfOpen':_0x1a0c19[_0x406e('0x2b')](db[_0x406e('0x52')][_0x406e('0x53')](_0x537edb(_0x40f6c2,_0x406e('0x5b')))[_0x406e('0x2a')](function(){})[_0x406e('0x56')](_0x44d8a3()));break;default:_0x1a0c19[_0x406e('0x2b')](db['sequelize'][_0x406e('0x53')](_0x4dfe4a(_0x40f6c2,_0x406e('0x5b')))[_0x406e('0x2a')](function(){})['catch'](_0x44d8a3()));}}}return _0x1a0c19;})[_0x406e('0x57')]();})[_0x406e('0x2a')](function(){return db['Campaign'][_0x406e('0x4c')]({'attributes':['id'],'include':[{'model':db[_0x406e('0x4f')],'as':_0x406e('0x5c'),'where':{'id':LISTID}}]})[_0x406e('0x2a')](function(_0x457ab8){var _0x56a7eb=[];if(_0x457ab8){for(var _0x1a5526=0x0,_0x55ce0b;_0x1a5526<_0x457ab8[_0x406e('0x26')];_0x1a5526+=0x1){_0x55ce0b=_0x457ab8[_0x1a5526]['get']({'plain':!![]});_0x56a7eb[_0x406e('0x2b')](db[_0x406e('0x52')][_0x406e('0x53')](_0x36abb2(_0x55ce0b,'CampaignId'))[_0x406e('0x2a')](function(){})[_0x406e('0x56')](_0x44d8a3()));}}return _0x56a7eb;})['all']();})[_0x406e('0x56')](function(_0x60030e){logger[_0x406e('0x18')]('cmContact,\x20%s,\x20%s',_0x406e('0x5d'),_0x60030e[_0x406e('0x1c')]);});}var processPromises=function(_0x543416){return BPromise[_0x406e('0x57')](promises)['then'](function(_0x1e47d8){})['catch'](function(_0x5f3de6){logger[_0x406e('0x18')]('Error\x20processing\x20rows\x20block:',JSON[_0x406e('0x2e')](_0x5f3de6));})['finally'](function(){socket['emit'](_0x406e('0x5e')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x543416){return _0x543416[_0x406e('0x5f')]();}});};var endCsv=function(){return BPromise[_0x406e('0x60')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x406e('0x2a')](function(){socket[_0x406e('0x61')](_0x406e('0x5e')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x406e('0x62')](FILEPATH);}catch(_0x541df4){logger['error'](_0x406e('0x63'),JSON[_0x406e('0x2e')](_0x541df4));}finally{process[_0x406e('0x64')](0x0);}});};process['on'](_0x406e('0x65'),function(){logger[_0x406e('0x66')](_0x406e('0x67'));endCsv();});function main(){return BPromise[_0x406e('0x60')]()[_0x406e('0x2a')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x406e('0x11')](',');return db['CmContact'][_0x406e('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x406e('0x2a')](function(_0x295ecf){var _0x4c533f=fs[_0x406e('0x68')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x4c533f,{'header':!![],'skipEmptyLines':!![],'step':function(_0x26b27d,_0x44b8cb){total+=0x1;var _0x41613f=total;promises['push'](checkRow(_0x26b27d,_0x295ecf,_0x41613f)[_0x406e('0x2a')](function(){success+=0x1;})[_0x406e('0x56')](function(_0x11cfd6){if(_0x11cfd6[_0x406e('0x18')]){errors+=0x1;delete _0x11cfd6[_0x406e('0x18')];}else if(_0x11cfd6[_0x406e('0x69')]){duplicates+=0x1;delete _0x11cfd6[_0x406e('0x69')];}rows[_0x406e('0x2b')](_0x11cfd6);}));if(total%0xc8===0x0){_0x44b8cb[_0x406e('0x6a')]();return processPromises(_0x44b8cb);}},'complete':function(){return processPromises()['then'](function(){logger[_0x406e('0x66')](_0x406e('0x6b'));endCsv();});},'error':function(_0x148166,_0x21eaed){logger[_0x406e('0x66')](_0x406e('0x6c'),JSON[_0x406e('0x2e')](_0x148166));endCsv();}});})[_0x406e('0x56')](function(_0xfc36bf){logger[_0x406e('0x18')](_0x406e('0x6d'),JSON[_0x406e('0x2e')](_0xfc36bf));});}main();
\ No newline at end of file
index d42b9aa..45f3dc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaa0=['CmContactHasItem','findOne','update','updated','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','ContactId','ListId','updatedAt','priority','UserId','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.createdAt','cm_hopper_black','ListId\x20=\x20?','toString','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','scheduledat','createdAt','.CmListId','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','keys','scheduledAt','deletedAt\x20IS\x20NULL','MIN(id)','min_id','group','error','exit','errors','code','message','info','sequelize','spread','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','query','catch','voice_queues.id','voice_queues.dialTimezone','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','timezones','set','offset','dialTimezone','main','stringify','send','start','clone','socket_timestamp','root','server/files/tmp','.csv','includes','header','ContactItemType','name','_description','writeFileSync','createReadStream','data','rows','find','hasOwnProperty','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','email','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','utcOffset','firstName','\x20not\x20specified','replace','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','step','duplicates','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','CREATE\x20TABLE\x20','each','dialTimezone,utcOffset',',\x20scheduledAt\x20=\x20NOW()','contactId','contactTypeId','orderBy','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','parse','binding','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','SIGINT','uncaughtException','lodash','util','bluebird','moment','squel','ioredis','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','join','.id\x20=\x20','\x20=\x20','where','findAll','length','push','all','then','AdditionalPhones','split','isNil'];(function(_0x36940e,_0x11f338){var _0x3283f2=function(_0x418008){while(--_0x418008){_0x36940e['push'](_0x36940e['shift']());}};_0x3283f2(++_0x11f338);}(_0xbaa0,0x152));var _0x0baa=function(_0x57ecfc,_0x480156){_0x57ecfc=_0x57ecfc-0x0;var _0xf05a20=_0xbaa0[_0x57ecfc];return _0xf05a20;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0x0baa('0x0'));var Papa=require('papaparse');var util=require(_0x0baa('0x1'));var BPromise=require(_0x0baa('0x2'));var moment=require(_0x0baa('0x3'));var squel=require(_0x0baa('0x4'));var Redis=require(_0x0baa('0x5'));var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var shared=require('../../../config/environment/shared');var logger=require(_0x0baa('0x6'))(_0x0baa('0x7'));config[_0x0baa('0x8')]=_[_0x0baa('0x9')](config[_0x0baa('0x8')],{'host':_0x0baa('0xa'),'port':0x18eb});var socket=require(_0x0baa('0xb'))(new Redis(config[_0x0baa('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x0baa('0xc')](_0x0baa('0xd'));function isEmail(_0x5c0151){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))*$/[_0x0baa('0xe')](_0x5c0151);}function selectNotIn(_0x2254c8,_0x3a0945,_0x2cb03d,_0x5f0044,_0x251652){return squel[_0x0baa('0xf')]()[_0x0baa('0x10')](_0x0baa('0x11'))['from'](_0x5f0044)[_0x0baa('0x12')](_0x3a0945,null,_0x3a0945+_0x0baa('0x13')+_0x5f0044+'.'+_0x2cb03d)['where'](_0x5f0044+'.'+_0x2cb03d+_0x0baa('0x14')+_0x2254c8+'.'+_0x2cb03d)[_0x0baa('0x15')](_0x3a0945+'.dialCheckDuplicateType\x20IN\x20('+_0x251652[_0x0baa('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x312d2b,_0x1e8b26){promisesAdditionalPhones=[];return db['CmContact'][_0x0baa('0x16')]({'raw':!![],'attributes':['id','AdditionalPhones'],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x4e4664){if(_0x4e4664!==null){var _0x2189a1=[];for(var _0x4aecb7=0x0;_0x4aecb7<_0x4e4664[_0x0baa('0x17')];_0x4aecb7++){var _0x3e2e8f=_0x4e4664[_0x4aecb7];_0x2189a1[_0x0baa('0x18')](insertAdditionalPhones(_0x3e2e8f));}}Promise[_0x0baa('0x19')](_0x2189a1)[_0x0baa('0x1a')](function(){_0x312d2b({'val':0x1});});});});}function insertAdditionalPhones(_0x2e84e4){return new Promise(function(_0x2ed28e,_0x33fb1a){var _0x2759da=_0x2e84e4[_0x0baa('0x1b')];var _0x24c7c4=_0x2759da[_0x0baa('0x1c')](';');var _0x51856b=[];orderBy=0x0;for(var _0x58e639=0x0;_0x58e639<_0x24c7c4['length'];_0x58e639++){_0x51856b[_0x0baa('0x18')](splitAdditionalPhone(_0x2e84e4['id'],_0x24c7c4[_0x58e639]));}Promise[_0x0baa('0x19')](_0x51856b)['then'](function(){_0x2ed28e({'val':_0x24c7c4['length']});});});}function splitAdditionalPhone(_0x23179f,_0x33200f){return new Promise(function(_0x31d476,_0x407a70){var _0x3bb8df=_0x33200f[_0x0baa('0x1c')](':');var _0x326576=_0x3bb8df[0x0];var _0x580a27=_0x3bb8df[0x1];if(!_[_0x0baa('0x1d')](_0x580a27)){var _0x5c3156=_0x580a27[_0x0baa('0x1c')]('|');var _0x422c96=[];for(var _0x470a4b=0x0;_0x470a4b<_0x5c3156[_0x0baa('0x17')];_0x470a4b++){if(_0x5c3156[_0x470a4b]!==''){var _0x1fe677=_['filter'](promisesAdditionalPhones,{'contactId':_0x23179f,'phone':_0x5c3156[_0x470a4b]});if(_0x1fe677[_0x0baa('0x17')]==0x0){orderBy++;promisesAdditionalPhones[_0x0baa('0x18')]({'contactId':_0x23179f,'contactTypeId':_0x326576,'phone':_0x5c3156[_0x470a4b],'orderBy':orderBy});}}}_0x31d476({'ok':0x1});}else _0x31d476({'res':0x0});});}function createAdditionalPhone(_0x5941d,_0x17e51a,_0x55cf9a,_0x2fe67a){var _0x56e0ec='';var _0x86950e='';var _0x27ff71=_0x55cf9a[_0x0baa('0x1c')]('§');_0x56e0ec=_0x27ff71[0x0];if(_0x27ff71['length']==0x2)_0x86950e=_0x27ff71[0x1];return new Promise(function(_0x4a24c1,_0x1ed6d3){return db[_0x0baa('0x1e')][_0x0baa('0x1f')]({'where':{'CmContactId':_0x5941d,'item':_0x56e0ec}})[_0x0baa('0x1a')](function(_0x310062){if(_0x310062){return db['CmContactHasItem'][_0x0baa('0x20')]({'ItemTypeId':_0x17e51a,'description':_0x86950e,'OrderBy':_0x2fe67a},{'where':{'CmContactId':_0x5941d,'item':_0x56e0ec}})['then'](function(_0x54ea5c){_0x4a24c1({'res':_0x0baa('0x21')});});}else{return db[_0x0baa('0x1e')][_0x0baa('0x22')]({'CmContactId':_0x5941d,'item':_0x56e0ec,'description':_0x86950e,'ItemTypeId':_0x17e51a,'OrderBy':_0x2fe67a,'ItemClass':_0x0baa('0x23')})[_0x0baa('0x1a')](function(_0x43c892){_0x4a24c1({'res':_0x0baa('0x24')});});}});});}function insertCmHopper(_0x25e999,_0x2a13cc,_0x584e3a,_0x24d46d,_0x4a5088){var _0x3ba70a=[_0x0baa('0x25'),_0x0baa('0x26'),_0x0baa('0x27'),_0x0baa('0x28'),_0x2a13cc+'.'+_0x24d46d,'cm_contacts.createdAt',_0x0baa('0x29'),_0x0baa('0x2a'),_0x0baa('0x2b'),'\x22'+_0x4a5088+'\x22'];return squel[_0x0baa('0x2c')]()[_0x0baa('0x2d')](_0x0baa('0x2e'))[_0x0baa('0x2f')]([_0x0baa('0x11'),'scheduledat',_0x0baa('0x30'),_0x0baa('0x31'),_0x24d46d,'createdAt',_0x0baa('0x32'),_0x0baa('0x33'),_0x0baa('0x34'),_0x0baa('0x35')],squel[_0x0baa('0xf')]()[_0x0baa('0x36')](_0x3ba70a)[_0x0baa('0x37')](_0x2a13cc)[_0x0baa('0x12')](_0x0baa('0x38'),null,_0x0baa('0x39')+_0x2a13cc+'.CmListId')[_0x0baa('0x12')](_0x584e3a,null,_0x584e3a+_0x0baa('0x13')+_0x2a13cc+'.'+_0x24d46d)[_0x0baa('0x15')](_0x2a13cc+_0x0baa('0x3a'),_0x25e999)[_0x0baa('0x15')](_0x0baa('0x3b'),NOW)[_0x0baa('0x15')](_0x0baa('0x3c'),selectNotIn(_0x2a13cc,_0x584e3a,_0x24d46d,'cm_hopper',[_0x0baa('0x3d'),_0x0baa('0x3e')]))[_0x0baa('0x15')](_0x0baa('0x3c'),selectNotIn(_0x2a13cc,_0x584e3a,_0x24d46d,_0x0baa('0x2e'),[_0x0baa('0x3d')])))['toString']();}function insertCmHopperBlack(_0xab7dda,_0x58d862,_0x4d02e5,_0x2ab263){var _0x2a1007=[_0x0baa('0x25'),_0x0baa('0x27'),_0x0baa('0x28'),_0x58d862+'.'+_0x2ab263,_0x0baa('0x3f'),'cm_contacts.updatedAt'];return squel[_0x0baa('0x2c')]()['into'](_0x0baa('0x40'))[_0x0baa('0x2f')]([_0x0baa('0x11'),_0x0baa('0x30'),_0x0baa('0x31'),_0x2ab263,'createdAt',_0x0baa('0x32')],squel[_0x0baa('0xf')]()[_0x0baa('0x36')](_0x2a1007)[_0x0baa('0x37')](_0x58d862)[_0x0baa('0x12')](_0x0baa('0x38'),null,'cm_contacts.ListId\x20=\x20'+_0x58d862+'.CmListId')[_0x0baa('0x12')](_0x4d02e5,null,_0x4d02e5+_0x0baa('0x13')+_0x58d862+'.'+_0x2ab263)[_0x0baa('0x15')](_0x58d862+_0x0baa('0x3a'),_0xab7dda)[_0x0baa('0x15')](_0x0baa('0x3b'),NOW)[_0x0baa('0x15')](_0x0baa('0x3c'),squel[_0x0baa('0xf')]()[_0x0baa('0x10')](_0x0baa('0x11'))[_0x0baa('0x37')](_0x0baa('0x40'))['where'](_0x0baa('0x41'),_0xab7dda)[_0x0baa('0x15')](_0x2ab263+_0x0baa('0x14')+_0x58d862+'.'+_0x2ab263)))[_0x0baa('0x42')]();}function insertTzCmHopper(_0x2585b3,_0x2bdecb,_0x4d43a5,_0x13fdb1,_0x342ae5,_0xe23990){var _0x829aa7=[_0x0baa('0x25'),_0x0baa('0x43')+_0xe23990+_0x0baa('0x44'),'cm_contacts.id','cm_contacts.ListId',_0x2bdecb+'.'+_0x13fdb1,_0x0baa('0x3f'),_0x0baa('0x29'),'cm_contacts.priority',_0x0baa('0x2b'),'\x22'+_0x342ae5+'\x22'];var _0x13e8aa=squel[_0x0baa('0x2c')]()[_0x0baa('0x2d')](_0x0baa('0x2e'))[_0x0baa('0x2f')](['phone',_0x0baa('0x45'),_0x0baa('0x30'),_0x0baa('0x31'),_0x13fdb1,_0x0baa('0x46'),_0x0baa('0x32'),_0x0baa('0x33'),'UserId',_0x0baa('0x35')],squel[_0x0baa('0xf')]()[_0x0baa('0x36')](_0x829aa7)[_0x0baa('0x37')](_0x2bdecb)[_0x0baa('0x12')](_0x0baa('0x38'),null,_0x0baa('0x39')+_0x2bdecb+_0x0baa('0x47'))[_0x0baa('0x12')](_0x4d43a5,null,_0x4d43a5+_0x0baa('0x13')+_0x2bdecb+'.'+_0x13fdb1)['join'](_0xe23990,null,_0xe23990+_0x0baa('0x13')+_0x2bdecb+'.'+_0x13fdb1)[_0x0baa('0x15')](_0x2bdecb+_0x0baa('0x3a'),_0x2585b3)[_0x0baa('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x0baa('0x3c'),selectNotIn(_0x2bdecb,_0x4d43a5,_0x13fdb1,_0x0baa('0x2e'),['\x22always\x22',_0x0baa('0x3e')]))[_0x0baa('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x2bdecb,_0x4d43a5,_0x13fdb1,_0x0baa('0x2e'),[_0x0baa('0x3d')])))[_0x0baa('0x42')]();return _0x13e8aa;}function insertTzCmHopperBlack(_0x5cc8d9,_0x4f894c,_0x47eb23,_0x952e88){var _0x340639=[_0x0baa('0x25'),_0x0baa('0x27'),_0x0baa('0x28'),_0x4f894c+'.'+_0x952e88,_0x0baa('0x3f'),_0x0baa('0x29')];return squel['insert']()['into']('cm_hopper_black')[_0x0baa('0x2f')]([_0x0baa('0x11'),'ContactId',_0x0baa('0x31'),_0x952e88,_0x0baa('0x46'),_0x0baa('0x32')],squel['select']()[_0x0baa('0x36')](_0x340639)[_0x0baa('0x37')](_0x4f894c)['join'](_0x0baa('0x38'),null,_0x0baa('0x39')+_0x4f894c+_0x0baa('0x47'))[_0x0baa('0x12')](_0x47eb23,null,_0x47eb23+_0x0baa('0x13')+_0x4f894c+'.'+_0x952e88)[_0x0baa('0x15')](_0x4f894c+_0x0baa('0x3a'),_0x5cc8d9)[_0x0baa('0x15')](_0x0baa('0x3b'),NOW)[_0x0baa('0x15')](_0x0baa('0x3c'),squel[_0x0baa('0xf')]()[_0x0baa('0x10')](_0x0baa('0x11'))['from'](_0x0baa('0x40'))[_0x0baa('0x15')](_0x0baa('0x41'),_0x5cc8d9)[_0x0baa('0x15')](_0x952e88+_0x0baa('0x14')+_0x4f894c+'.'+_0x952e88)))[_0x0baa('0x42')]();}function insertCmHopperAdditionalPhones(_0x434073){var _0x73c02b=['cm_hopper.id','cm_contact_has_items.item',_0x0baa('0x48'),_0x0baa('0x49'),_0x0baa('0x4a')];return squel[_0x0baa('0x2c')]()['into']('cm_hopper_additional_phones')['fromQuery']([_0x0baa('0x4b'),_0x0baa('0x11'),_0x0baa('0x4c'),_0x0baa('0x46'),_0x0baa('0x32')],squel[_0x0baa('0xf')]()[_0x0baa('0x36')](_0x73c02b)[_0x0baa('0x37')]('cm_hopper')[_0x0baa('0x12')](_0x0baa('0x38'),null,_0x0baa('0x4d'))[_0x0baa('0x12')](_0x0baa('0x4e'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')['where'](_0x0baa('0x4f'),_0x434073)[_0x0baa('0x15')](_0x0baa('0x3b'),NOW))[_0x0baa('0x42')]();}function insertCmContact(_0x420e4b,_0x4f8ef4,_0x4d1886,_0x4b70c2){var _0x124004=_[_0x0baa('0x50')](_[_0x0baa('0x51')](_0x4b70c2),[_0x0baa('0x31'),'CompanyId',_0x0baa('0x46'),_0x0baa('0x32'),_0x0baa('0x52')]);return squel['insert']()[_0x0baa('0x2d')](_0x0baa('0x38'))[_0x0baa('0x2f')](_0x124004,squel[_0x0baa('0xf')]()[_0x0baa('0x36')](_0x124004)[_0x0baa('0x37')](_0x4f8ef4)[_0x0baa('0x15')]('('+_0x4d1886[_0x0baa('0x12')](',')+')\x20NOT\x20IN\x20?',squel[_0x0baa('0xf')]()[_0x0baa('0x36')](_0x4d1886)[_0x0baa('0x37')]('cm_contacts')[_0x0baa('0x15')](_0x0baa('0x41'),_0x420e4b)[_0x0baa('0x15')](_0x0baa('0x53')))['where']('id\x20IN\x20?',squel[_0x0baa('0xf')]()['field'](_0x0baa('0x54'),_0x0baa('0x55'))['from'](_0x4f8ef4)[_0x0baa('0x56')](_0x4d1886['join'](','))))[_0x0baa('0x42')]();}function handleStop(){logger['info']('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x2ded70){logger[_0x0baa('0x57')](_0x2ded70['message']);process[_0x0baa('0x58')](0x1);}function handleError(_0x119a5d,_0x46387c){stats[_0x0baa('0x59')]['push']({'name':_0x46387c[_0x0baa('0x5a')],'message':_0x46387c[_0x0baa('0x5b')],'row':_0x119a5d});}function handleQuery(_0x400e27){logger[_0x0baa('0x5c')](_0x400e27);return db[_0x0baa('0x5d')]['query'](_0x400e27)[_0x0baa('0x5e')](function(_0x4e83cc){results[_0x0baa('0x18')](_0x4e83cc);})['catch'](function(_0x3381e8){logger[_0x0baa('0x57')](_0x3381e8[_0x0baa('0x5b')]);});}function updateTzCampaigns(_0x377cd1){return new Promise(function(_0x3c3545,_0x370881){var _0x586b41=squel[_0x0baa('0xf')]()[_0x0baa('0x36')]([_0x0baa('0x5f'),_0x0baa('0x60')])[_0x0baa('0x37')](_0x0baa('0x61'))[_0x0baa('0x12')](_0x0baa('0x62'),null,_0x0baa('0x63'))[_0x0baa('0x15')]('campaigns_has_cm_lists.CmListId='+_0x377cd1);db[_0x0baa('0x5d')][_0x0baa('0x64')](_0x586b41[_0x0baa('0x42')]())[_0x0baa('0x5e')](function(_0x5910ca){var _0x208b39=[];for(var _0xd722b6=0x0;_0xd722b6<_0x5910ca['length'];_0xd722b6++){_0x208b39['push'](getTimezoneData(_0x5910ca[_0xd722b6],tmp_campaigns));}BPromise['all'](_0x208b39)[_0x0baa('0x1a')](function(){_0x3c3545({'val':0x1});});})[_0x0baa('0x65')](function(_0x788e4e){logger[_0x0baa('0x57')](_0x788e4e[_0x0baa('0x5b')]);_0x3c3545({'val':0x0});});});}function updateTzVoiceQueues(_0x3cfc41){return new Promise(function(_0x1a7b21,_0x52cd0a){var _0x21d619=squel['select']()[_0x0baa('0x36')]([_0x0baa('0x66'),_0x0baa('0x67')])[_0x0baa('0x37')]('voice_queues')[_0x0baa('0x12')](_0x0baa('0x68'),null,_0x0baa('0x69'))[_0x0baa('0x15')]('voice_queues_has_cm_lists.CmListId='+_0x3cfc41);db[_0x0baa('0x5d')]['query'](_0x21d619['toString']())[_0x0baa('0x5e')](function(_0x6cb720){var _0x155f2c=[];for(var _0x3ad31a=0x0;_0x3ad31a<_0x6cb720[_0x0baa('0x17')];_0x3ad31a++){_0x155f2c[_0x0baa('0x18')](getTimezoneData(_0x6cb720[_0x3ad31a],tmp_voice_queues));}BPromise[_0x0baa('0x19')](_0x155f2c)[_0x0baa('0x1a')](function(){_0x1a7b21({'val':0x1});});})['catch'](function(_0x1b7859){logger[_0x0baa('0x57')](_0x1b7859[_0x0baa('0x5b')]);_0x1a7b21({'val':0x0});});});}function getTimezoneData(_0x9db8d7,_0x1a862c){return new Promise(function(_0x1d7908,_0x2907f5){var _0x46e688=shared[_0x0baa('0x6a')];var _0xd63bc1=_0x46e688[_0x9db8d7['dialTimezone']];if(_[_0x0baa('0x1d')](_0xd63bc1)){_0x1d7908({'ret':0x1});}else{var _0x1c287b=_0xd63bc1['utcOffset'];var _0x1e722f=squel[_0x0baa('0x2c')]()[_0x0baa('0x2d')](_0x1a862c)[_0x0baa('0x6b')]('id',_0x9db8d7['id'])[_0x0baa('0x6b')](_0x0baa('0x6c'),_0x1c287b)[_0x0baa('0x6b')](_0x0baa('0x6d'),_0x9db8d7[_0x0baa('0x6d')])[_0x0baa('0x42')]();return db[_0x0baa('0x5d')][_0x0baa('0x64')](_0x1e722f)[_0x0baa('0x5e')](function(_0x38bef7){_0x1d7908({'ret':0x1});})[_0x0baa('0x65')](function(_0x3cd376){logger['error'](_0x3cd376[_0x0baa('0x5b')]);_0x2907f5({'ret':0x1});});}});}function handleTZQuery(_0x4c845b){logger['info'](_0x4c845b);return db['sequelize'][_0x0baa('0x64')](_0x4c845b)[_0x0baa('0x5e')](function(_0x3332ba){})[_0x0baa('0x65')](function(_0x34d39d){logger['error'](_0x34d39d[_0x0baa('0x5b')]);});}function main(_0x53504d,_0x2249b7,_0x77f139,_0x3cad44){logger[_0x0baa('0x5c')](_0x0baa('0x6e'),_0x53504d,JSON[_0x0baa('0x6f')](_0x2249b7));process[_0x0baa('0x70')](_0x0baa('0x71'));var _0x29511e=_0x2249b7['binding'];var _0x2f6e31=_[_0x0baa('0x72')](_0x29511e);var _0x53f1d0=_0x2249b7[_0x0baa('0x73')];var _0x134227=path[_0x0baa('0x12')](config[_0x0baa('0x74')],_0x0baa('0x75'),_0x53f1d0+_0x0baa('0x76'));hasTZ=_[_0x0baa('0x51')](_0x29511e)[_0x0baa('0x77')](_0x0baa('0x6d'));var _0x10296e=_[_0x0baa('0x51')](_0x29511e)['join']();logger[_0x0baa('0x5c')](_0x0baa('0x78'),_0x10296e);db[_0x0baa('0x79')]['findAll']({'raw':!![],'attributes':['id',_0x0baa('0x7a')]})[_0x0baa('0x1a')](function(_0x32e9b1){for(var _0x3c02cc=0x0;_0x3c02cc<_0x32e9b1[_0x0baa('0x17')];_0x3c02cc++){if(_0x32e9b1[_0x3c02cc][_0x0baa('0x7a')]in _0x29511e){contactItemTypes['push'](_0x32e9b1[_0x3c02cc]);delete _0x2f6e31[_0x32e9b1[_0x3c02cc][_0x0baa('0x7a')]];hasAdditionalPhones=!![];}for(var _0x2ac660 in _0x29511e){if(_0x32e9b1[_0x3c02cc]['name']+_0x0baa('0x7b')===_0x2ac660){phoneDescriptions[_0x0baa('0x18')]({'itemTypeId':_0x32e9b1[_0x3c02cc]['id'],'description':_0x2ac660});delete _0x2f6e31[_0x2ac660];}}}if(hasAdditionalPhones)_0x2f6e31[_0x0baa('0x1b')]='';var _0x11dfda=_[_0x0baa('0x51')](_0x2f6e31)['join']();logger['info'](_0x0baa('0x78'),_0x11dfda);fs[_0x0baa('0x7c')](_0x134227,_0x11dfda+'\x0a');Papa['parse'](fs[_0x0baa('0x7d')](_0x53504d),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2c5006,_0x29e15b){try{for(var _0x579152=0x0,_0x47155b=[];_0x579152<_0x2c5006[_0x0baa('0x7e')][_0x0baa('0x17')];_0x579152++){stats[_0x0baa('0x7f')]+=0x1;if(_0x2c5006['errors'][_0x579152]){handleError(_0x2c5006['data'][_0x579152],_0x2c5006['errors'][_0x579152]);}else{var _0x1d3d7f=[];var _0x14fd91=[];var _0x2de574={};for(var _0x2614b7 in _0x29511e){let _0x22078d=contactItemTypes['find'](_0x7e499=>_0x7e499[_0x0baa('0x7a')]===_0x2614b7);let _0x4466ff=contactItemTypes[_0x0baa('0x80')](_0x23b82b=>_0x23b82b[_0x0baa('0x7a')]+_0x0baa('0x7b')===_0x2614b7);if(_[_0x0baa('0x1d')](_0x22078d)&&_[_0x0baa('0x1d')](_0x4466ff)){if(_0x29511e[_0x0baa('0x81')](_0x2614b7)){if(_0x2c5006[_0x0baa('0x7e')][_0x579152][_0x29511e[_0x2614b7]]){var _0x2840e0=_[_0x0baa('0x82')](_0x2c5006[_0x0baa('0x7e')][_0x579152][_0x29511e[_0x2614b7]]['replace'](/"/g,'\x27'));switch(_0x2614b7){case _0x0baa('0x45'):var _0x2a4751=moment(_0x2840e0,_0x0baa('0xd'),!![]);if(_0x2a4751[_0x0baa('0x83')]()){_0x47155b[_0x0baa('0x18')]('\x22'+_0x2840e0+'\x22');}else{_0x1d3d7f[_0x0baa('0x18')](_0x0baa('0x84'));}break;case _0x0baa('0x33'):var _0x5fc618=parseInt(_0x2840e0);_0x2840e0=_[_0x0baa('0x85')](_0x5fc618)||_0x5fc618<0x0||_0x5fc618>0x4?_0x3cad44?0x3:0x2:_0x5fc618;_0x47155b['push']('\x22'+_0x2840e0+'\x22');break;case'UserId':var _0x289bd0=parseInt(_0x2840e0);if(_[_0x0baa('0x86')](_0x289bd0)&&_[_0x0baa('0x77')](_0x77f139,_0x289bd0)){_0x47155b[_0x0baa('0x18')]('\x22'+_0x289bd0+'\x22');}else{_0x1d3d7f[_0x0baa('0x18')](_0x0baa('0x87'));}break;case _0x0baa('0x88'):if(isEmail(_0x2840e0)){_0x47155b[_0x0baa('0x18')]('\x22'+_0x2840e0+'\x22');}else{_0x1d3d7f[_0x0baa('0x18')]('email\x20wrong\x20format');}break;case _0x0baa('0x89'):var _0x34226e=moment(_0x2840e0,_0x0baa('0x8a'),!![]);if(_0x34226e[_0x0baa('0x83')]()){_0x47155b[_0x0baa('0x18')]('\x22'+_0x2840e0+'\x22');}else{_0x1d3d7f['push'](_0x0baa('0x8b'));}break;case'dialTimezone':var _0x4d6f0f=shared[_0x0baa('0x6a')];var _0x9351a7=_0x4d6f0f[_0x2840e0];if(!_[_0x0baa('0x1d')](_0x9351a7)){var _0x4e27c9=_0x9351a7[_0x0baa('0x8c')];_0x47155b[_0x0baa('0x18')]('\x22'+_0x2840e0+'\x22');_0x47155b[_0x0baa('0x18')]('\x22'+_0x4e27c9+'\x22');}break;default:_0x47155b[_0x0baa('0x18')]('\x22'+_0x2840e0+'\x22');}}else{switch(_0x2614b7){case _0x0baa('0x8d'):case _0x0baa('0x11'):_0x1d3d7f[_0x0baa('0x18')](_0x2614b7+_0x0baa('0x8e'));break;default:_0x47155b[_0x0baa('0x18')]('\x22\x22');}}}}else{var _0x38f729='';if(!_[_0x0baa('0x1d')](_0x22078d)){if(!_0x2de574[_0x0baa('0x81')](_0x22078d['id'])){if(!_[_0x0baa('0x1d')](_0x2c5006[_0x0baa('0x7e')][_0x579152][_0x29511e[_0x2614b7]])){var _0x2840e0=_[_0x0baa('0x82')](_0x2c5006[_0x0baa('0x7e')][_0x579152][_0x29511e[_0x2614b7]][_0x0baa('0x8f')](/"/g,'\x27'));var _0x189957=phoneDescriptions['find'](_0x20dbc7=>_0x20dbc7['itemTypeId']===_0x22078d['id']);if(!_[_0x0baa('0x1d')](_0x189957)){var _0x53a9d7=_[_0x0baa('0x82')](_0x2c5006['data'][_0x579152][_0x29511e[_0x189957[_0x0baa('0x90')]]][_0x0baa('0x8f')](/"/g,'\x27'));if(!_[_0x0baa('0x1d')](_0x53a9d7))_0x2840e0=_0x2840e0+'§'+_0x53a9d7;}if(_0x38f729=='')_0x38f729=_0x2840e0;else _0x38f729+='|'+_0x2840e0;}_0x14fd91[_0x0baa('0x18')](_0x22078d['id']+':'+_0x38f729);_0x2de574[_0x22078d['id']]=0x1;}}}}if(hasAdditionalPhones){_0x47155b[_0x0baa('0x18')]('\x22'+_0x14fd91['join'](';')+'\x22');}if(_0x1d3d7f[_0x0baa('0x17')]){handleError(_0x2c5006[_0x0baa('0x7e')][_0x579152],{'code':_0x0baa('0x91'),'message':_0x1d3d7f[_0x0baa('0x12')]()});}else{fs[_0x0baa('0x92')](_0x134227,_0x47155b[_0x0baa('0x12')]()+'\x0a');}_0x47155b=[];}if(!(stats['rows']%0xc8)){socket[_0x0baa('0x93')](_0x0baa('0x94')+_0x53f1d0,stats);stats[_0x0baa('0x59')]=[];}}if(stopped){logger[_0x0baa('0x5c')](_0x0baa('0x95'));_0x29e15b['abort']();}}catch(_0x2b164e){handleError(_0x2c5006[_0x0baa('0x7e')][_0x579152],{'code':_0x0baa('0x96'),'message':_0x2b164e[_0x0baa('0x5b')]});logger[_0x0baa('0x57')](_0x0baa('0x97'),_0x2b164e[_0x0baa('0x5b')]);}},'complete':function(){try{var _0x45e4cb=[];var _0x2fca12=[];var _0x463497=_0x0baa('0x38');if(_0x2249b7[_0x0baa('0x98')]&&_0x2249b7['duplicates'][_0x0baa('0x17')]){_0x463497='cm_contacts_'+_0x53f1d0;_0x45e4cb['push']('CREATE\x20TABLE\x20'+_0x463497+_0x0baa('0x99'));}tmp_campaigns=_0x0baa('0x9a')+_0x53f1d0;tmp_voice_queues=_0x0baa('0x9b')+_0x53f1d0;_0x2fca12[_0x0baa('0x18')]('CREATE\x20TABLE\x20'+tmp_campaigns+_0x0baa('0x9c'));_0x2fca12[_0x0baa('0x18')](_0x0baa('0x9d')+tmp_voice_queues+_0x0baa('0x9c'));BPromise[_0x0baa('0x9e')](_0x2fca12,handleTZQuery)[_0x0baa('0x1a')](function(_0x360540){updateTzCampaigns(_0x2249b7[_0x0baa('0x31')])[_0x0baa('0x1a')](function(_0x44ae5d){updateTzVoiceQueues(_0x2249b7[_0x0baa('0x31')])[_0x0baa('0x1a')](function(_0x5dc7f3){if(hasTZ)_0x11dfda=_0x11dfda[_0x0baa('0x8f')](_0x0baa('0x6d'),_0x0baa('0x9f'));var _0x3a2c15=util[_0x0baa('0xc')]('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',_0x134227,_0x463497,_0x11dfda,_0x2249b7[_0x0baa('0x31')],_0x2249b7['CompanyId']||null,NOW,NOW);if(_[_0x0baa('0x1d')](_0x29511e[_0x0baa('0x45')])){_0x3a2c15+=_0x0baa('0xa0');}_0x45e4cb[_0x0baa('0x18')](_0x3a2c15);if(_0x2249b7['duplicates']&&_0x2249b7[_0x0baa('0x98')][_0x0baa('0x17')]){_0x45e4cb['push'](insertCmContact(_0x2249b7[_0x0baa('0x31')],_0x463497,_0x2249b7[_0x0baa('0x98')],_0x29511e));_0x45e4cb[_0x0baa('0x18')]('DROP\x20TABLE\x20'+_0x463497+';');}BPromise['each'](_0x45e4cb,handleQuery)[_0x0baa('0x1a')](function(_0x815943){BPromise[_0x0baa('0x19')]([handleAdditionalPhones()])['then'](function(){_0x45e4cb=[];for(var _0x5e40c0=0x0;_0x5e40c0<promisesAdditionalPhones[_0x0baa('0x17')];_0x5e40c0++){if(promisesAdditionalPhones[_0x5e40c0]['phone']!='§'){_0x45e4cb[_0x0baa('0x18')](createAdditionalPhone(promisesAdditionalPhones[_0x5e40c0][_0x0baa('0xa1')],promisesAdditionalPhones[_0x5e40c0][_0x0baa('0xa2')],promisesAdditionalPhones[_0x5e40c0][_0x0baa('0x11')],promisesAdditionalPhones[_0x5e40c0][_0x0baa('0xa3')]));}}BPromise[_0x0baa('0x19')](_0x45e4cb)[_0x0baa('0x1a')](function(){_0x45e4cb=[];if(hasTZ){_0x45e4cb[_0x0baa('0x18')](insertTzCmHopper(_0x2249b7['ListId'],_0x0baa('0x68'),_0x0baa('0xa4'),_0x0baa('0xa5'),_0x3cad44,tmp_voice_queues));_0x45e4cb[_0x0baa('0x18')](insertTzCmHopperBlack(_0x2249b7[_0x0baa('0x31')],_0x0baa('0xa6'),_0x0baa('0xa4'),'VoiceQueueId'));_0x45e4cb[_0x0baa('0x18')](insertTzCmHopper(_0x2249b7[_0x0baa('0x31')],'campaigns_has_cm_lists',_0x0baa('0x61'),_0x0baa('0xa7'),_0x3cad44,tmp_campaigns));_0x45e4cb[_0x0baa('0x18')](insertTzCmHopperBlack(_0x2249b7[_0x0baa('0x31')],_0x0baa('0xa8'),_0x0baa('0x61'),_0x0baa('0xa7')));_0x45e4cb[_0x0baa('0x18')](insertCmHopperAdditionalPhones(_0x2249b7[_0x0baa('0x31')]));}else{_0x45e4cb['push'](insertCmHopper(_0x2249b7['ListId'],_0x0baa('0x68'),_0x0baa('0xa4'),_0x0baa('0xa5'),_0x3cad44));_0x45e4cb['push'](insertCmHopperBlack(_0x2249b7['ListId'],'voice_queues_has_cm_blacklists','voice_queues',_0x0baa('0xa5')));_0x45e4cb[_0x0baa('0x18')](insertCmHopper(_0x2249b7['ListId'],'campaigns_has_cm_lists',_0x0baa('0x61'),_0x0baa('0xa7'),_0x3cad44));_0x45e4cb[_0x0baa('0x18')](insertCmHopperBlack(_0x2249b7[_0x0baa('0x31')],'campaigns_has_cm_blacklists',_0x0baa('0x61'),_0x0baa('0xa7')));_0x45e4cb[_0x0baa('0x18')](insertCmHopperAdditionalPhones(_0x2249b7['ListId']));}_0x45e4cb['push']('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x45e4cb[_0x0baa('0x18')]('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0x0baa('0x9e')](_0x45e4cb,handleQuery)[_0x0baa('0x1a')](function(_0x4b6025){stats['finish']=!![];stats['affectedRows']=_0x2249b7[_0x0baa('0x98')]&&_0x2249b7[_0x0baa('0x98')]['length']?results[0x2]['affectedRows']:results[0x0]['affectedRows'];socket['emit'](_0x0baa('0x94')+_0x53f1d0,stats);fs[_0x0baa('0xa9')](_0x53504d);fs[_0x0baa('0xa9')](_0x134227);process[_0x0baa('0x58')](0x0);})['catch'](function(_0x5c5349){logger[_0x0baa('0x57')](_0x5c5349[_0x0baa('0x5b')]);process[_0x0baa('0x58')](0x1);});});});})['catch'](function(_0x2ddc2f){logger[_0x0baa('0x57')](_0x2ddc2f[_0x0baa('0x5b')]);process[_0x0baa('0x58')](0x1);});});});});}catch(_0x2b30ff){logger[_0x0baa('0x57')](_0x0baa('0xaa'),_0x2b30ff[_0x0baa('0x5b')]);process[_0x0baa('0x58')](0x1);}},'error':function(_0x12b586,_0xad0027,_0x17df0f,_0x52d0ef){throw new Error(_0x52d0ef);}});});}function validate(){if(process[_0x0baa('0xab')]&&process[_0x0baa('0xab')][_0x0baa('0x17')]<0x4){throw new Error(_0x0baa('0xac'));}var _0x498877=path[_0x0baa('0x12')](config[_0x0baa('0x74')],_0x0baa('0x75'),process[_0x0baa('0xab')][0x2]);if(!fs[_0x0baa('0xad')](_0x498877)){throw new Error(_0x0baa('0xae'));}var _0x30045e={};try{_0x30045e=JSON[_0x0baa('0xaf')](process[_0x0baa('0xab')][0x3]);if(!_0x30045e[_0x0baa('0xb0')]){throw new Error(_0x0baa('0xb1'));}if(!_0x30045e[_0x0baa('0xb0')]['phone']){throw new Error(_0x0baa('0xb2'));}if(!_0x30045e[_0x0baa('0xb0')][_0x0baa('0x8d')]){throw new Error(_0x0baa('0xb3'));}var _0x33819d=0x0;if(_0x30045e['binding'][_0x0baa('0x34')]){_0x33819d=0x1;}if(!_0x30045e['ListId']){throw new Error(_0x0baa('0xb4'));}}catch(_0x3dc770){throw new Error(_0x0baa('0xb5'));}var _0x3871a3=[];try{_0x3871a3=_['map'](JSON[_0x0baa('0xaf')](process[_0x0baa('0xab')][0x4]),'id');}catch(_0x28d7f0){logger[_0x0baa('0x5c')]('No\x20agent\x20available');}main(_0x498877,_0x30045e,_0x3871a3,_0x33819d);}validate();process['on'](_0x0baa('0xb6'),handleStop);process['on'](_0x0baa('0xb7'),handleUncaughtException);
\ No newline at end of file
+var _0x1a36=['papaparse','util','moment','squel','../../../mysqldb','../../../config/logger','import','redis','defaults','localhost','format','YYYY-MM-DD\x20HH:mm:ss','field','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','findAll','AdditionalPhones','then','split','length','push','all','CmContactHasItem','findOne','update','create','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ListId','createdAt','updatedAt','priority','UserId','select','fields','cm_contacts','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.updatedAt','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_hopper_black','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.id','ContactId','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId','deletedAt\x20IS\x20NULL','id\x20IN\x20?','group','info','Received\x20SIGINT','error','message','exit','errors','code','sequelize','query','catch','campaigns','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','spread','voice_queues.id','voice_queues','voice_queues_has_cm_lists','timezones','dialTimezone','isNil','utcOffset','set','offset','main','stringify','clone','socket_timestamp','.csv','includes','header','ContactItemType','name','_description','writeFileSync','createReadStream','data','rows','find','hasOwnProperty','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','replace','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','cm_contacts_','CREATE\x20TABLE\x20','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','dialTimezone,utcOffset','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','duplicates','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_blacklists','CampaignId','each','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','binding','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','No\x20agent\x20available','uncaughtException','path','lodash'];(function(_0x1d5ad0,_0x40aeae){var _0x57a56b=function(_0x560999){while(--_0x560999){_0x1d5ad0['push'](_0x1d5ad0['shift']());}};_0x57a56b(++_0x40aeae);}(_0x1a36,0x15a));var _0x61a3=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1a36[_0x17d9e3];return _0x14192d;};'use strict';var fs=require('fs');var path=require(_0x61a3('0x0'));var _=require(_0x61a3('0x1'));var Papa=require(_0x61a3('0x2'));var util=require(_0x61a3('0x3'));var BPromise=require('bluebird');var moment=require(_0x61a3('0x4'));var squel=require(_0x61a3('0x5'));var Redis=require('ioredis');var db=require(_0x61a3('0x6'))['db'];var config=require('../../../config/environment');var shared=require('../../../config/environment/shared');var logger=require(_0x61a3('0x7'))(_0x61a3('0x8'));config[_0x61a3('0x9')]=_[_0x61a3('0xa')](config[_0x61a3('0x9')],{'host':_0x61a3('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x61a3('0xc')](_0x61a3('0xd'));function isEmail(_0x5d055a){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x5d055a);}function selectNotIn(_0x29e4dd,_0x4c9141,_0x3aa7bf,_0x2c03e3,_0x545486){return squel['select']()[_0x61a3('0xe')](_0x61a3('0xf'))[_0x61a3('0x10')](_0x2c03e3)[_0x61a3('0x11')](_0x4c9141,null,_0x4c9141+_0x61a3('0x12')+_0x2c03e3+'.'+_0x3aa7bf)[_0x61a3('0x13')](_0x2c03e3+'.'+_0x3aa7bf+'\x20=\x20'+_0x29e4dd+'.'+_0x3aa7bf)['where'](_0x4c9141+_0x61a3('0x14')+_0x545486[_0x61a3('0x11')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x29c5c3,_0x518d4f){promisesAdditionalPhones=[];return db['CmContact'][_0x61a3('0x15')]({'raw':!![],'attributes':['id',_0x61a3('0x16')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x61a3('0x17')](function(_0x482ae9){if(_0x482ae9!==null){var _0x1685c2=[];for(var _0x5e9d2c=0x0;_0x5e9d2c<_0x482ae9['length'];_0x5e9d2c++){var _0x36a654=_0x482ae9[_0x5e9d2c];_0x1685c2['push'](insertAdditionalPhones(_0x36a654));}}Promise['all'](_0x1685c2)[_0x61a3('0x17')](function(){_0x29c5c3({'val':0x1});});});});}function insertAdditionalPhones(_0x5f4331){return new Promise(function(_0x41f179,_0x52c04c){var _0x5b489d=_0x5f4331['AdditionalPhones'];var _0x1122d4=_0x5b489d[_0x61a3('0x18')](';');var _0x518de1=[];orderBy=0x0;for(var _0x59fb91=0x0;_0x59fb91<_0x1122d4[_0x61a3('0x19')];_0x59fb91++){_0x518de1[_0x61a3('0x1a')](splitAdditionalPhone(_0x5f4331['id'],_0x1122d4[_0x59fb91]));}Promise[_0x61a3('0x1b')](_0x518de1)[_0x61a3('0x17')](function(){_0x41f179({'val':_0x1122d4['length']});});});}function splitAdditionalPhone(_0x23fb42,_0x38d33d){return new Promise(function(_0xb2f24,_0x29cf05){var _0x37f4a7=_0x38d33d['split'](':');var _0x2e1d8c=_0x37f4a7[0x0];var _0x49d5fd=_0x37f4a7[0x1];if(!_['isNil'](_0x49d5fd)){var _0x530666=_0x49d5fd[_0x61a3('0x18')]('|');var _0x234820=[];for(var _0x262551=0x0;_0x262551<_0x530666['length'];_0x262551++){if(_0x530666[_0x262551]!==''){var _0x3595d3=_['filter'](promisesAdditionalPhones,{'contactId':_0x23fb42,'phone':_0x530666[_0x262551]});if(_0x3595d3[_0x61a3('0x19')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x23fb42,'contactTypeId':_0x2e1d8c,'phone':_0x530666[_0x262551],'orderBy':orderBy});}}}_0xb2f24({'ok':0x1});}else _0xb2f24({'res':0x0});});}function createAdditionalPhone(_0x550a95,_0x2a42cd,_0xc5a316,_0x2d5167){var _0xf25ce4='';var _0x113b6c='';var _0x53cac9=_0xc5a316[_0x61a3('0x18')]('§');_0xf25ce4=_0x53cac9[0x0];if(_0x53cac9[_0x61a3('0x19')]==0x2)_0x113b6c=_0x53cac9[0x1];return new Promise(function(_0x3b58fe,_0x4bf16d){return db[_0x61a3('0x1c')][_0x61a3('0x1d')]({'where':{'CmContactId':_0x550a95,'item':_0xf25ce4}})[_0x61a3('0x17')](function(_0x58a2c0){if(_0x58a2c0){return db[_0x61a3('0x1c')][_0x61a3('0x1e')]({'ItemTypeId':_0x2a42cd,'description':_0x113b6c,'OrderBy':_0x2d5167},{'where':{'CmContactId':_0x550a95,'item':_0xf25ce4}})[_0x61a3('0x17')](function(_0x227a37){_0x3b58fe({'res':'updated'});});}else{return db[_0x61a3('0x1c')][_0x61a3('0x1f')]({'CmContactId':_0x550a95,'item':_0xf25ce4,'description':_0x113b6c,'ItemTypeId':_0x2a42cd,'OrderBy':_0x2d5167,'ItemClass':'PHONE'})[_0x61a3('0x17')](function(_0x448431){_0x3b58fe({'res':_0x61a3('0x20')});});}});});}function insertCmHopper(_0x1d307a,_0x1abfe4,_0x4bca99,_0xd9210a,_0x2aede9){var _0x2de177=[_0x61a3('0x21'),_0x61a3('0x22'),'cm_contacts.id',_0x61a3('0x23'),_0x1abfe4+'.'+_0xd9210a,_0x61a3('0x24'),'cm_contacts.updatedAt',_0x61a3('0x25'),_0x61a3('0x26'),'\x22'+_0x2aede9+'\x22'];return squel[_0x61a3('0x27')]()[_0x61a3('0x28')](_0x61a3('0x29'))[_0x61a3('0x2a')](['phone',_0x61a3('0x2b'),'ContactId',_0x61a3('0x2c'),_0xd9210a,_0x61a3('0x2d'),_0x61a3('0x2e'),_0x61a3('0x2f'),_0x61a3('0x30'),'recallme'],squel[_0x61a3('0x31')]()[_0x61a3('0x32')](_0x2de177)[_0x61a3('0x10')](_0x1abfe4)[_0x61a3('0x11')](_0x61a3('0x33'),null,'cm_contacts.ListId\x20=\x20'+_0x1abfe4+_0x61a3('0x34'))[_0x61a3('0x11')](_0x4bca99,null,_0x4bca99+_0x61a3('0x12')+_0x1abfe4+'.'+_0xd9210a)[_0x61a3('0x13')](_0x1abfe4+'.CmListId\x20=\x20?',_0x1d307a)[_0x61a3('0x13')](_0x61a3('0x35'),NOW)['where'](_0x61a3('0x36'),selectNotIn(_0x1abfe4,_0x4bca99,_0xd9210a,_0x61a3('0x29'),[_0x61a3('0x37'),_0x61a3('0x38')]))[_0x61a3('0x13')](_0x61a3('0x36'),selectNotIn(_0x1abfe4,_0x4bca99,_0xd9210a,'cm_hopper',[_0x61a3('0x37')])))[_0x61a3('0x39')]();}function insertCmHopperBlack(_0xb922f2,_0x1000bb,_0x1306f7,_0x3bae5f){var _0x41cb3e=[_0x61a3('0x21'),'cm_contacts.id',_0x61a3('0x23'),_0x1000bb+'.'+_0x3bae5f,_0x61a3('0x24'),_0x61a3('0x3a')];return squel[_0x61a3('0x27')]()[_0x61a3('0x28')]('cm_hopper_black')[_0x61a3('0x2a')](['phone','ContactId',_0x61a3('0x2c'),_0x3bae5f,_0x61a3('0x2d'),_0x61a3('0x2e')],squel[_0x61a3('0x31')]()['fields'](_0x41cb3e)[_0x61a3('0x10')](_0x1000bb)['join'](_0x61a3('0x33'),null,_0x61a3('0x3b')+_0x1000bb+_0x61a3('0x34'))[_0x61a3('0x11')](_0x1306f7,null,_0x1306f7+_0x61a3('0x12')+_0x1000bb+'.'+_0x3bae5f)['where'](_0x1000bb+_0x61a3('0x3c'),_0xb922f2)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x61a3('0x13')](_0x61a3('0x36'),squel[_0x61a3('0x31')]()[_0x61a3('0xe')](_0x61a3('0xf'))[_0x61a3('0x10')](_0x61a3('0x3d'))[_0x61a3('0x13')](_0x61a3('0x3e'),_0xb922f2)[_0x61a3('0x13')](_0x3bae5f+'\x20=\x20'+_0x1000bb+'.'+_0x3bae5f)))[_0x61a3('0x39')]();}function insertTzCmHopper(_0x5d0f04,_0x40bf79,_0x18a078,_0x106365,_0x940616,_0x1383b6){var _0x3785c8=['cm_contacts.phone',_0x61a3('0x3f')+_0x1383b6+_0x61a3('0x40'),'cm_contacts.id',_0x61a3('0x23'),_0x40bf79+'.'+_0x106365,_0x61a3('0x24'),'cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','\x22'+_0x940616+'\x22'];var _0x246813=squel[_0x61a3('0x27')]()['into'](_0x61a3('0x29'))[_0x61a3('0x2a')]([_0x61a3('0xf'),_0x61a3('0x2b'),'ContactId',_0x61a3('0x2c'),_0x106365,_0x61a3('0x2d'),_0x61a3('0x2e'),_0x61a3('0x2f'),_0x61a3('0x30'),'recallme'],squel[_0x61a3('0x31')]()[_0x61a3('0x32')](_0x3785c8)[_0x61a3('0x10')](_0x40bf79)[_0x61a3('0x11')](_0x61a3('0x33'),null,_0x61a3('0x3b')+_0x40bf79+_0x61a3('0x34'))['join'](_0x18a078,null,_0x18a078+_0x61a3('0x12')+_0x40bf79+'.'+_0x106365)[_0x61a3('0x11')](_0x1383b6,null,_0x1383b6+_0x61a3('0x12')+_0x40bf79+'.'+_0x106365)[_0x61a3('0x13')](_0x40bf79+'.CmListId\x20=\x20?',_0x5d0f04)[_0x61a3('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x61a3('0x13')](_0x61a3('0x36'),selectNotIn(_0x40bf79,_0x18a078,_0x106365,_0x61a3('0x29'),['\x22always\x22',_0x61a3('0x38')]))[_0x61a3('0x13')](_0x61a3('0x36'),selectNotIn(_0x40bf79,_0x18a078,_0x106365,_0x61a3('0x29'),[_0x61a3('0x37')])))[_0x61a3('0x39')]();return _0x246813;}function insertTzCmHopperBlack(_0x3e08c8,_0x17802f,_0xf0aea7,_0x3d9515){var _0x4e1bf2=[_0x61a3('0x21'),_0x61a3('0x41'),'cm_contacts.ListId',_0x17802f+'.'+_0x3d9515,_0x61a3('0x24'),_0x61a3('0x3a')];return squel[_0x61a3('0x27')]()[_0x61a3('0x28')](_0x61a3('0x3d'))[_0x61a3('0x2a')]([_0x61a3('0xf'),_0x61a3('0x42'),_0x61a3('0x2c'),_0x3d9515,'createdAt','updatedAt'],squel[_0x61a3('0x31')]()[_0x61a3('0x32')](_0x4e1bf2)[_0x61a3('0x10')](_0x17802f)[_0x61a3('0x11')](_0x61a3('0x33'),null,_0x61a3('0x3b')+_0x17802f+'.CmListId')[_0x61a3('0x11')](_0xf0aea7,null,_0xf0aea7+_0x61a3('0x12')+_0x17802f+'.'+_0x3d9515)[_0x61a3('0x13')](_0x17802f+_0x61a3('0x3c'),_0x3e08c8)[_0x61a3('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x61a3('0x36'),squel[_0x61a3('0x31')]()['field'](_0x61a3('0xf'))[_0x61a3('0x10')](_0x61a3('0x3d'))[_0x61a3('0x13')](_0x61a3('0x3e'),_0x3e08c8)[_0x61a3('0x13')](_0x3d9515+'\x20=\x20'+_0x17802f+'.'+_0x3d9515)))['toString']();}function insertCmHopperAdditionalPhones(_0x4df5e5){var _0x3a6da4=['cm_hopper.id',_0x61a3('0x43'),_0x61a3('0x44'),_0x61a3('0x45'),_0x61a3('0x46')];return squel[_0x61a3('0x27')]()[_0x61a3('0x28')]('cm_hopper_additional_phones')[_0x61a3('0x2a')](['CmHopperId',_0x61a3('0xf'),_0x61a3('0x47'),'createdAt',_0x61a3('0x2e')],squel['select']()['fields'](_0x3a6da4)[_0x61a3('0x10')](_0x61a3('0x29'))[_0x61a3('0x11')](_0x61a3('0x33'),null,_0x61a3('0x48'))[_0x61a3('0x11')]('cm_contact_has_items',null,_0x61a3('0x49'))[_0x61a3('0x13')](_0x61a3('0x4a'),_0x4df5e5)[_0x61a3('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x61a3('0x39')]();}function insertCmContact(_0x5dc2a8,_0x2af693,_0xafa2e6,_0x593175){var _0x37f62b=_[_0x61a3('0x4b')](_[_0x61a3('0x4c')](_0x593175),['ListId',_0x61a3('0x4d'),_0x61a3('0x2d'),'updatedAt','scheduledAt']);return squel['insert']()[_0x61a3('0x28')](_0x61a3('0x33'))[_0x61a3('0x2a')](_0x37f62b,squel[_0x61a3('0x31')]()['fields'](_0x37f62b)[_0x61a3('0x10')](_0x2af693)[_0x61a3('0x13')]('('+_0xafa2e6[_0x61a3('0x11')](',')+')\x20NOT\x20IN\x20?',squel['select']()['fields'](_0xafa2e6)[_0x61a3('0x10')](_0x61a3('0x33'))[_0x61a3('0x13')]('ListId\x20=\x20?',_0x5dc2a8)[_0x61a3('0x13')](_0x61a3('0x4e')))['where'](_0x61a3('0x4f'),squel[_0x61a3('0x31')]()[_0x61a3('0xe')]('MIN(id)','min_id')[_0x61a3('0x10')](_0x2af693)[_0x61a3('0x50')](_0xafa2e6[_0x61a3('0x11')](','))))['toString']();}function handleStop(){logger[_0x61a3('0x51')](_0x61a3('0x52'));stopped=!![];}function handleUncaughtException(_0x12f6ff){logger[_0x61a3('0x53')](_0x12f6ff[_0x61a3('0x54')]);process[_0x61a3('0x55')](0x1);}function handleError(_0x346281,_0x18ae7c){stats[_0x61a3('0x56')][_0x61a3('0x1a')]({'name':_0x18ae7c[_0x61a3('0x57')],'message':_0x18ae7c[_0x61a3('0x54')],'row':_0x346281});}function handleQuery(_0x53cac7){logger[_0x61a3('0x51')](_0x53cac7);return db[_0x61a3('0x58')][_0x61a3('0x59')](_0x53cac7)['spread'](function(_0x49dd10){results['push'](_0x49dd10);})[_0x61a3('0x5a')](function(_0x151031){logger[_0x61a3('0x53')](_0x151031[_0x61a3('0x54')]);});}function updateTzCampaigns(_0x14fe67){return new Promise(function(_0x2f1f51,_0x3034e9){var _0x6293b6=squel[_0x61a3('0x31')]()['fields'](['campaigns.id','campaigns.dialTimezone'])[_0x61a3('0x10')](_0x61a3('0x5b'))[_0x61a3('0x11')](_0x61a3('0x5c'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x61a3('0x13')](_0x61a3('0x5d')+_0x14fe67);db[_0x61a3('0x58')][_0x61a3('0x59')](_0x6293b6['toString']())[_0x61a3('0x5e')](function(_0x421832){var _0x4aba24=[];for(var _0x408d7e=0x0;_0x408d7e<_0x421832['length'];_0x408d7e++){_0x4aba24[_0x61a3('0x1a')](getTimezoneData(_0x421832[_0x408d7e],tmp_campaigns));}BPromise['all'](_0x4aba24)[_0x61a3('0x17')](function(){_0x2f1f51({'val':0x1});});})[_0x61a3('0x5a')](function(_0x403e86){logger[_0x61a3('0x53')](_0x403e86[_0x61a3('0x54')]);_0x2f1f51({'val':0x0});});});}function updateTzVoiceQueues(_0x6b6569){return new Promise(function(_0x204115,_0x1db054){var _0x5109f8=squel['select']()[_0x61a3('0x32')]([_0x61a3('0x5f'),'voice_queues.dialTimezone'])[_0x61a3('0x10')](_0x61a3('0x60'))[_0x61a3('0x11')](_0x61a3('0x61'),null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0x61a3('0x13')]('voice_queues_has_cm_lists.CmListId='+_0x6b6569);db[_0x61a3('0x58')][_0x61a3('0x59')](_0x5109f8[_0x61a3('0x39')]())[_0x61a3('0x5e')](function(_0x1a5e44){var _0x3c3037=[];for(var _0x29e80a=0x0;_0x29e80a<_0x1a5e44[_0x61a3('0x19')];_0x29e80a++){_0x3c3037['push'](getTimezoneData(_0x1a5e44[_0x29e80a],tmp_voice_queues));}BPromise[_0x61a3('0x1b')](_0x3c3037)['then'](function(){_0x204115({'val':0x1});});})[_0x61a3('0x5a')](function(_0x44a7db){logger['error'](_0x44a7db[_0x61a3('0x54')]);_0x204115({'val':0x0});});});}function getTimezoneData(_0x4c173e,_0x11b169){return new Promise(function(_0x3b7a97,_0x749bd0){var _0x564211=shared[_0x61a3('0x62')];var _0x5e63da=_0x564211[_0x4c173e[_0x61a3('0x63')]];if(_[_0x61a3('0x64')](_0x5e63da)){_0x3b7a97({'ret':0x1});}else{var _0x41d281=_0x5e63da[_0x61a3('0x65')];var _0x4c8806=squel[_0x61a3('0x27')]()[_0x61a3('0x28')](_0x11b169)[_0x61a3('0x66')]('id',_0x4c173e['id'])[_0x61a3('0x66')](_0x61a3('0x67'),_0x41d281)[_0x61a3('0x66')](_0x61a3('0x63'),_0x4c173e[_0x61a3('0x63')])[_0x61a3('0x39')]();return db[_0x61a3('0x58')][_0x61a3('0x59')](_0x4c8806)[_0x61a3('0x5e')](function(_0x10f16e){_0x3b7a97({'ret':0x1});})[_0x61a3('0x5a')](function(_0x39f53a){logger[_0x61a3('0x53')](_0x39f53a[_0x61a3('0x54')]);_0x749bd0({'ret':0x1});});}});}function handleTZQuery(_0x2646fa){logger[_0x61a3('0x51')](_0x2646fa);return db[_0x61a3('0x58')][_0x61a3('0x59')](_0x2646fa)[_0x61a3('0x5e')](function(_0x284bc8){})['catch'](function(_0x3317dc){logger[_0x61a3('0x53')](_0x3317dc[_0x61a3('0x54')]);});}function main(_0x275da9,_0x1d805e,_0x1070cd,_0x7d180d){logger['info'](_0x61a3('0x68'),_0x275da9,JSON[_0x61a3('0x69')](_0x1d805e));process['send']('start');var _0x186c1c=_0x1d805e['binding'];var _0x1af343=_[_0x61a3('0x6a')](_0x186c1c);var _0x24de0e=_0x1d805e[_0x61a3('0x6b')];var _0x5d54d3=path[_0x61a3('0x11')](config['root'],'server/files/tmp',_0x24de0e+_0x61a3('0x6c'));hasTZ=_[_0x61a3('0x4c')](_0x186c1c)[_0x61a3('0x6d')](_0x61a3('0x63'));var _0x4d9863=_[_0x61a3('0x4c')](_0x186c1c)[_0x61a3('0x11')]();logger['info'](_0x61a3('0x6e'),_0x4d9863);db[_0x61a3('0x6f')][_0x61a3('0x15')]({'raw':!![],'attributes':['id',_0x61a3('0x70')]})[_0x61a3('0x17')](function(_0x18edef){for(var _0x58032b=0x0;_0x58032b<_0x18edef[_0x61a3('0x19')];_0x58032b++){if(_0x18edef[_0x58032b][_0x61a3('0x70')]in _0x186c1c){contactItemTypes[_0x61a3('0x1a')](_0x18edef[_0x58032b]);delete _0x1af343[_0x18edef[_0x58032b]['name']];hasAdditionalPhones=!![];}for(var _0x28f6bb in _0x186c1c){if(_0x18edef[_0x58032b][_0x61a3('0x70')]+_0x61a3('0x71')===_0x28f6bb){phoneDescriptions[_0x61a3('0x1a')]({'itemTypeId':_0x18edef[_0x58032b]['id'],'description':_0x28f6bb});delete _0x1af343[_0x28f6bb];}}}if(hasAdditionalPhones)_0x1af343[_0x61a3('0x16')]='';var _0x26bc17=_[_0x61a3('0x4c')](_0x1af343)[_0x61a3('0x11')]();logger[_0x61a3('0x51')](_0x61a3('0x6e'),_0x26bc17);fs[_0x61a3('0x72')](_0x5d54d3,_0x26bc17+'\x0a');Papa['parse'](fs[_0x61a3('0x73')](_0x275da9),{'header':!![],'skipEmptyLines':!![],'step':function(_0x641de0,_0x4fc347){try{for(var _0x533902=0x0,_0x1b8a11=[];_0x533902<_0x641de0[_0x61a3('0x74')][_0x61a3('0x19')];_0x533902++){stats[_0x61a3('0x75')]+=0x1;if(_0x641de0[_0x61a3('0x56')][_0x533902]){handleError(_0x641de0[_0x61a3('0x74')][_0x533902],_0x641de0[_0x61a3('0x56')][_0x533902]);}else{var _0x14ddc0=[];var _0x39212f=[];var _0x91a42a={};for(var _0x137e9a in _0x186c1c){let _0x2f127f=contactItemTypes[_0x61a3('0x76')](_0x4feaad=>_0x4feaad[_0x61a3('0x70')]===_0x137e9a);let _0x428014=contactItemTypes[_0x61a3('0x76')](_0x494a2b=>_0x494a2b[_0x61a3('0x70')]+_0x61a3('0x71')===_0x137e9a);if(_[_0x61a3('0x64')](_0x2f127f)&&_[_0x61a3('0x64')](_0x428014)){if(_0x186c1c[_0x61a3('0x77')](_0x137e9a)){if(_0x641de0[_0x61a3('0x74')][_0x533902][_0x186c1c[_0x137e9a]]){var _0x11072d=_[_0x61a3('0x78')](_0x641de0[_0x61a3('0x74')][_0x533902][_0x186c1c[_0x137e9a]]['replace'](/"/g,'\x27'));switch(_0x137e9a){case _0x61a3('0x2b'):var _0x4bf938=moment(_0x11072d,_0x61a3('0xd'),!![]);if(_0x4bf938[_0x61a3('0x79')]()){_0x1b8a11[_0x61a3('0x1a')]('\x22'+_0x11072d+'\x22');}else{_0x14ddc0[_0x61a3('0x1a')](_0x61a3('0x7a'));}break;case _0x61a3('0x2f'):var _0x29ef96=parseInt(_0x11072d);_0x11072d=_['isNaN'](_0x29ef96)||_0x29ef96<0x0||_0x29ef96>0x4?_0x7d180d?0x3:0x2:_0x29ef96;_0x1b8a11[_0x61a3('0x1a')]('\x22'+_0x11072d+'\x22');break;case'UserId':var _0x196493=parseInt(_0x11072d);if(_[_0x61a3('0x7b')](_0x196493)&&_[_0x61a3('0x6d')](_0x1070cd,_0x196493)){_0x1b8a11[_0x61a3('0x1a')]('\x22'+_0x196493+'\x22');}else{_0x14ddc0['push'](_0x61a3('0x7c'));}break;case _0x61a3('0x7d'):if(isEmail(_0x11072d)){_0x1b8a11[_0x61a3('0x1a')]('\x22'+_0x11072d+'\x22');}else{_0x14ddc0[_0x61a3('0x1a')](_0x61a3('0x7e'));}break;case'dateOfBirth':var _0xb418c7=moment(_0x11072d,'YYYY-MM-DD',!![]);if(_0xb418c7[_0x61a3('0x79')]()){_0x1b8a11[_0x61a3('0x1a')]('\x22'+_0x11072d+'\x22');}else{_0x14ddc0['push'](_0x61a3('0x7f'));}break;case _0x61a3('0x63'):var _0x2d8185=shared[_0x61a3('0x62')];var _0x3e68fb=_0x2d8185[_0x11072d];if(!_[_0x61a3('0x64')](_0x3e68fb)){var _0x46d71f=_0x3e68fb[_0x61a3('0x65')];_0x1b8a11['push']('\x22'+_0x11072d+'\x22');_0x1b8a11[_0x61a3('0x1a')]('\x22'+_0x46d71f+'\x22');}break;default:_0x1b8a11[_0x61a3('0x1a')]('\x22'+_0x11072d+'\x22');}}else{switch(_0x137e9a){case _0x61a3('0x80'):case _0x61a3('0xf'):_0x14ddc0[_0x61a3('0x1a')](_0x137e9a+'\x20not\x20specified');break;default:_0x1b8a11[_0x61a3('0x1a')]('\x22\x22');}}}}else{var _0x3e4b96='';if(!_['isNil'](_0x2f127f)){if(!_0x91a42a['hasOwnProperty'](_0x2f127f['id'])){if(!_[_0x61a3('0x64')](_0x641de0[_0x61a3('0x74')][_0x533902][_0x186c1c[_0x137e9a]])){var _0x11072d=_[_0x61a3('0x78')](_0x641de0['data'][_0x533902][_0x186c1c[_0x137e9a]][_0x61a3('0x81')](/"/g,'\x27'));var _0x1bc689=phoneDescriptions[_0x61a3('0x76')](_0x4ce5a9=>_0x4ce5a9[_0x61a3('0x82')]===_0x2f127f['id']);if(!_[_0x61a3('0x64')](_0x1bc689)){var _0x1bba58=_[_0x61a3('0x78')](_0x641de0[_0x61a3('0x74')][_0x533902][_0x186c1c[_0x1bc689[_0x61a3('0x83')]]][_0x61a3('0x81')](/"/g,'\x27'));if(!_[_0x61a3('0x64')](_0x1bba58))_0x11072d=_0x11072d+'§'+_0x1bba58;}if(_0x3e4b96=='')_0x3e4b96=_0x11072d;else _0x3e4b96+='|'+_0x11072d;}_0x39212f[_0x61a3('0x1a')](_0x2f127f['id']+':'+_0x3e4b96);_0x91a42a[_0x2f127f['id']]=0x1;}}}}if(hasAdditionalPhones){_0x1b8a11[_0x61a3('0x1a')]('\x22'+_0x39212f['join'](';')+'\x22');}if(_0x14ddc0[_0x61a3('0x19')]){handleError(_0x641de0['data'][_0x533902],{'code':_0x61a3('0x84'),'message':_0x14ddc0[_0x61a3('0x11')]()});}else{fs[_0x61a3('0x85')](_0x5d54d3,_0x1b8a11[_0x61a3('0x11')]()+'\x0a');}_0x1b8a11=[];}if(!(stats[_0x61a3('0x75')]%0xc8)){socket[_0x61a3('0x86')](_0x61a3('0x87')+_0x24de0e,stats);stats[_0x61a3('0x56')]=[];}}if(stopped){logger[_0x61a3('0x51')](_0x61a3('0x88'));_0x4fc347['abort']();}}catch(_0x57ffaa){handleError(_0x641de0['data'][_0x533902],{'code':_0x61a3('0x89'),'message':_0x57ffaa[_0x61a3('0x54')]});logger[_0x61a3('0x53')]('step',_0x57ffaa[_0x61a3('0x54')]);}},'complete':function(){try{var _0x4a9d9a=[];var _0x3de4ee=[];var _0x2a0139=_0x61a3('0x33');if(_0x1d805e['duplicates']&&_0x1d805e['duplicates'][_0x61a3('0x19')]){_0x2a0139=_0x61a3('0x8a')+_0x24de0e;_0x4a9d9a[_0x61a3('0x1a')](_0x61a3('0x8b')+_0x2a0139+'\x20LIKE\x20cm_contacts;');}tmp_campaigns=_0x61a3('0x8c')+_0x24de0e;tmp_voice_queues=_0x61a3('0x8d')+_0x24de0e;_0x3de4ee['push'](_0x61a3('0x8b')+tmp_campaigns+_0x61a3('0x8e'));_0x3de4ee[_0x61a3('0x1a')](_0x61a3('0x8b')+tmp_voice_queues+_0x61a3('0x8e'));BPromise['each'](_0x3de4ee,handleTZQuery)[_0x61a3('0x17')](function(_0x25c371){updateTzCampaigns(_0x1d805e['ListId'])[_0x61a3('0x17')](function(_0x5ce047){updateTzVoiceQueues(_0x1d805e[_0x61a3('0x2c')])[_0x61a3('0x17')](function(_0x3c9748){if(hasTZ)_0x26bc17=_0x26bc17[_0x61a3('0x81')](_0x61a3('0x63'),_0x61a3('0x8f'));var _0x56078f=util['format'](_0x61a3('0x90'),_0x5d54d3,_0x2a0139,_0x26bc17,_0x1d805e[_0x61a3('0x2c')],_0x1d805e[_0x61a3('0x4d')]||null,NOW,NOW);if(_[_0x61a3('0x64')](_0x186c1c[_0x61a3('0x2b')])){_0x56078f+=_0x61a3('0x91');}_0x4a9d9a[_0x61a3('0x1a')](_0x56078f);if(_0x1d805e[_0x61a3('0x92')]&&_0x1d805e[_0x61a3('0x92')]['length']){_0x4a9d9a[_0x61a3('0x1a')](insertCmContact(_0x1d805e[_0x61a3('0x2c')],_0x2a0139,_0x1d805e[_0x61a3('0x92')],_0x186c1c));_0x4a9d9a[_0x61a3('0x1a')](_0x61a3('0x93')+_0x2a0139+';');}BPromise['each'](_0x4a9d9a,handleQuery)[_0x61a3('0x17')](function(_0x126cc4){BPromise[_0x61a3('0x1b')]([handleAdditionalPhones()])[_0x61a3('0x17')](function(){_0x4a9d9a=[];for(var _0x59fe36=0x0;_0x59fe36<promisesAdditionalPhones['length'];_0x59fe36++){if(promisesAdditionalPhones[_0x59fe36][_0x61a3('0xf')]!='§'){_0x4a9d9a[_0x61a3('0x1a')](createAdditionalPhone(promisesAdditionalPhones[_0x59fe36][_0x61a3('0x94')],promisesAdditionalPhones[_0x59fe36][_0x61a3('0x95')],promisesAdditionalPhones[_0x59fe36][_0x61a3('0xf')],promisesAdditionalPhones[_0x59fe36][_0x61a3('0x96')]));}}BPromise['all'](_0x4a9d9a)['then'](function(){_0x4a9d9a=[];if(hasTZ){_0x4a9d9a[_0x61a3('0x1a')](insertTzCmHopper(_0x1d805e[_0x61a3('0x2c')],_0x61a3('0x61'),'voice_queues',_0x61a3('0x97'),_0x7d180d,tmp_voice_queues));_0x4a9d9a[_0x61a3('0x1a')](insertTzCmHopperBlack(_0x1d805e[_0x61a3('0x2c')],_0x61a3('0x98'),_0x61a3('0x60'),_0x61a3('0x97')));_0x4a9d9a[_0x61a3('0x1a')](insertTzCmHopper(_0x1d805e[_0x61a3('0x2c')],'campaigns_has_cm_lists',_0x61a3('0x5b'),'CampaignId',_0x7d180d,tmp_campaigns));_0x4a9d9a['push'](insertTzCmHopperBlack(_0x1d805e[_0x61a3('0x2c')],'campaigns_has_cm_blacklists',_0x61a3('0x5b'),'CampaignId'));_0x4a9d9a[_0x61a3('0x1a')](insertCmHopperAdditionalPhones(_0x1d805e[_0x61a3('0x2c')]));}else{_0x4a9d9a[_0x61a3('0x1a')](insertCmHopper(_0x1d805e[_0x61a3('0x2c')],_0x61a3('0x61'),'voice_queues','VoiceQueueId',_0x7d180d));_0x4a9d9a['push'](insertCmHopperBlack(_0x1d805e[_0x61a3('0x2c')],_0x61a3('0x98'),_0x61a3('0x60'),'VoiceQueueId'));_0x4a9d9a['push'](insertCmHopper(_0x1d805e[_0x61a3('0x2c')],_0x61a3('0x5c'),_0x61a3('0x5b'),'CampaignId',_0x7d180d));_0x4a9d9a['push'](insertCmHopperBlack(_0x1d805e[_0x61a3('0x2c')],_0x61a3('0x99'),_0x61a3('0x5b'),_0x61a3('0x9a')));_0x4a9d9a[_0x61a3('0x1a')](insertCmHopperAdditionalPhones(_0x1d805e[_0x61a3('0x2c')]));}_0x4a9d9a[_0x61a3('0x1a')](_0x61a3('0x93')+tmp_campaigns+';');_0x4a9d9a[_0x61a3('0x1a')]('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0x61a3('0x9b')](_0x4a9d9a,handleQuery)[_0x61a3('0x17')](function(_0x420203){stats[_0x61a3('0x9c')]=!![];stats[_0x61a3('0x9d')]=_0x1d805e[_0x61a3('0x92')]&&_0x1d805e['duplicates'][_0x61a3('0x19')]?results[0x2][_0x61a3('0x9d')]:results[0x0][_0x61a3('0x9d')];socket[_0x61a3('0x86')](_0x61a3('0x87')+_0x24de0e,stats);fs['unlink'](_0x275da9);fs[_0x61a3('0x9e')](_0x5d54d3);process[_0x61a3('0x55')](0x0);})[_0x61a3('0x5a')](function(_0x4c57f0){logger[_0x61a3('0x53')](_0x4c57f0['message']);process[_0x61a3('0x55')](0x1);});});});})['catch'](function(_0x408793){logger[_0x61a3('0x53')](_0x408793[_0x61a3('0x54')]);process[_0x61a3('0x55')](0x1);});});});});}catch(_0x5c9f93){logger[_0x61a3('0x53')](_0x61a3('0x9f'),_0x5c9f93[_0x61a3('0x54')]);process[_0x61a3('0x55')](0x1);}},'error':function(_0x247285,_0x4a92d4,_0xa7e712,_0x1a5f04){throw new Error(_0x1a5f04);}});});}function validate(){if(process['argv']&&process[_0x61a3('0xa0')][_0x61a3('0x19')]<0x4){throw new Error(_0x61a3('0xa1'));}var _0x3f21a9=path[_0x61a3('0x11')](config[_0x61a3('0xa2')],_0x61a3('0xa3'),process[_0x61a3('0xa0')][0x2]);if(!fs[_0x61a3('0xa4')](_0x3f21a9)){throw new Error(_0x61a3('0xa5'));}var _0x41a056={};try{_0x41a056=JSON[_0x61a3('0xa6')](process[_0x61a3('0xa0')][0x3]);if(!_0x41a056['binding']){throw new Error(_0x61a3('0xa7'));}if(!_0x41a056[_0x61a3('0xa8')][_0x61a3('0xf')]){throw new Error(_0x61a3('0xa9'));}if(!_0x41a056[_0x61a3('0xa8')][_0x61a3('0x80')]){throw new Error(_0x61a3('0xaa'));}var _0xf92784=0x0;if(_0x41a056[_0x61a3('0xa8')][_0x61a3('0x30')]){_0xf92784=0x1;}if(!_0x41a056[_0x61a3('0x2c')]){throw new Error(_0x61a3('0xab'));}}catch(_0x5400cf){throw new Error('body\x20id\x20mandatory');}var _0x28277f=[];try{_0x28277f=_['map'](JSON[_0x61a3('0xa6')](process[_0x61a3('0xa0')][0x4]),'id');}catch(_0x18340b){logger['info'](_0x61a3('0xac'));}main(_0x3f21a9,_0x41a056,_0x28277f,_0xf92784);}validate();process['on']('SIGINT',handleStop);process['on'](_0x61a3('0xad'),handleUncaughtException);
\ No newline at end of file
index 9825d67..2e570af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3192=['abort','step','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\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contactId','contactTypeId','DROP\x20TABLE\x20','finish','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','map','SIGINT','uncaughtException','papaparse','util','bluebird','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','localhost','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','field','phone','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','spread','length','isNil','push','all','catch','message','AdditionalPhones','then','split','filter','findOne','CmContactHasItem','updated','create','PHONE','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','fromQuery','ContactId','ListId','updatedAt','priority','recallme','select','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.updatedAt','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','into','cm_hopper_additional_phones','CmHopperId','OrderBy','createdAt','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','keys',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','exit','code','info','sequelize','query','main','stringify','binding','clone','socket_timestamp','root','.csv','body','ContactItemType','findAll','name','_description','header','writeFileSync','parse','createReadStream','data','errors','find','hasOwnProperty','trim','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','UserId','isNumber','includes','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','itemTypeId','description','appendFileSync','rows','emit','contact:import:','Abort\x20parser'];(function(_0x4ccf96,_0x34978e){var _0xd103b7=function(_0x55736b){while(--_0x55736b){_0x4ccf96['push'](_0x4ccf96['shift']());}};_0xd103b7(++_0x34978e);}(_0x3192,0x147));var _0x2319=function(_0x47cfc4,_0x5b44c7){_0x47cfc4=_0x47cfc4-0x0;var _0x2b0817=_0x3192[_0x47cfc4];return _0x2b0817;};'use strict';var fs=require('fs');var path=require('path');var _=require('lodash');var Papa=require(_0x2319('0x0'));var util=require(_0x2319('0x1'));var BPromise=require(_0x2319('0x2'));var moment=require('moment');var squel=require('squel');var Redis=require(_0x2319('0x3'));var db=require(_0x2319('0x4'))['db'];var config=require(_0x2319('0x5'));var logger=require(_0x2319('0x6'))('import');config['redis']=_['defaults'](config[_0x2319('0x7')],{'host':_0x2319('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2319('0x7')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x2319('0x9')](_0x2319('0xa'));var tempTableName=_0x2319('0xb')+moment()[_0x2319('0x9')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x4e03b0){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x4e03b0);}function selectNotIn(_0x4f7a72,_0x33ea73,_0x5c8c15,_0x1d1cb0,_0x2316ea){return squel['select']()[_0x2319('0xc')](_0x2319('0xd'))['from'](_0x1d1cb0)[_0x2319('0xe')](_0x33ea73,null,_0x33ea73+_0x2319('0xf')+_0x1d1cb0+'.'+_0x5c8c15)[_0x2319('0x10')](_0x1d1cb0+'.'+_0x5c8c15+_0x2319('0x11')+_0x4f7a72+'.'+_0x5c8c15)[_0x2319('0x10')](_0x33ea73+_0x2319('0x12')+_0x2316ea[_0x2319('0xe')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x6c6eb6,_0x4e279f){promisesAdditionalPhones=[];promisesContact=[];return db['sequelize']['query']('select\x20*\x20from\x20'+tempTableName)[_0x2319('0x13')](function(_0x39ff41){if(_0x39ff41!==null){var _0x6e64d7=[];for(var _0x5f5024=0x0;_0x5f5024<_0x39ff41[_0x2319('0x14')];_0x5f5024++){var _0x104db7=_0x39ff41[_0x5f5024];if(!_[_0x2319('0x15')](_0x104db7[_0x2319('0xd')])){if(!_[_0x2319('0x15')](_0x104db7['AdditionalPhones']))_0x6e64d7['push'](insertAdditionalPhones(_0x104db7));promisesContact[_0x2319('0x16')]({'contact':_0x104db7});}}}Promise[_0x2319('0x17')](_0x6e64d7)['then'](function(){_0x6c6eb6({'val':0x1});});})[_0x2319('0x18')](function(_0x4a0ea7){logger['error'](_0x4a0ea7[_0x2319('0x19')]);});});}function insertAdditionalPhones(_0x6fe3c4){return new Promise(function(_0x44763e,_0x5d9061){var _0x1d2dea=_0x6fe3c4[_0x2319('0x1a')];if(_['isNil'](_0x1d2dea))_0x5d9061({'val':0x0});else{var _0x9e3841=_0x1d2dea['split'](';');var _0x21c63f=[];orderBy=0x0;for(var _0x384fd=0x0;_0x384fd<_0x9e3841['length'];_0x384fd++){_0x21c63f[_0x2319('0x16')](splitAdditionalPhone(_0x6fe3c4['id'],_0x9e3841[_0x384fd]));}Promise[_0x2319('0x17')](_0x21c63f)[_0x2319('0x1b')](function(){_0x44763e({'val':_0x9e3841[_0x2319('0x14')]});});}});}function splitAdditionalPhone(_0x34dd50,_0xa413c5){return new Promise(function(_0x5cdea7,_0x4fd5e7){var _0x507e14=_0xa413c5[_0x2319('0x1c')](':');var _0x441d44=_0x507e14[0x0];var _0x45cba0=_0x507e14[0x1];if(_0x45cba0!==''){var _0x2fecc7=_0x45cba0[_0x2319('0x1c')]('|');var _0x17081b=[];for(var _0x22f2d3=0x0;_0x22f2d3<_0x2fecc7[_0x2319('0x14')];_0x22f2d3++){if(_0x2fecc7[_0x22f2d3]!==''){var _0x47f342=_[_0x2319('0x1d')](promisesAdditionalPhones,{'contactId':_0x34dd50,'phone':_0x2fecc7[_0x22f2d3]});if(_0x47f342[_0x2319('0x14')]==0x0){orderBy++;promisesAdditionalPhones[_0x2319('0x16')]({'contactId':_0x34dd50,'contactTypeId':_0x441d44,'phone':_0x2fecc7[_0x22f2d3],'orderBy':orderBy});}}}_0x5cdea7({'ok':0x1});}else _0x5cdea7({'res':0x0});});}function createAdditionalPhone(_0x4d9120,_0x12a1a1,_0x3f3874,_0x21f678){var _0x4dc924='';var _0x55d373='';var _0xa4f685=_0x3f3874['split']('§');_0x4dc924=_0xa4f685[0x0];if(_0xa4f685[_0x2319('0x14')]==0x2)_0x55d373=_0xa4f685[0x1];return new Promise(function(_0x1726fa,_0x333d0c){return db['CmContactHasItem'][_0x2319('0x1e')]({'where':{'CmContactId':_0x4d9120,'item':_0x4dc924}})[_0x2319('0x1b')](function(_0x26c77b){if(_0x26c77b){return db[_0x2319('0x1f')]['update']({'ItemTypeId':_0x12a1a1,'description':_0x55d373,'OrderBy':_0x21f678},{'where':{'CmContactId':_0x4d9120,'item':_0x4dc924}})[_0x2319('0x1b')](function(_0x10d498){_0x1726fa({'res':_0x2319('0x20')});});}else{return db[_0x2319('0x1f')][_0x2319('0x21')]({'CmContactId':_0x4d9120,'item':_0x4dc924,'ItemTypeId':_0x12a1a1,'description':_0x55d373,'OrderBy':_0x21f678,'ItemClass':_0x2319('0x22')})[_0x2319('0x1b')](function(_0xe354c9){_0x1726fa({'res':_0x2319('0x23')});});}});});}function updateContact(_0x1854df){return new Promise(function(_0x2e1edf,_0x2ffe61){var _0x476dca=_0x1854df['id'];delete _0x1854df['id'];return db[_0x2319('0x24')]['update'](_0x1854df,{'where':{'id':_0x476dca}})[_0x2319('0x1b')](function(_0x1d94b1){updatedRows+=0x1;return db[_0x2319('0x25')]['update']({'phone':_0x1854df[_0x2319('0xd')]},{'where':{'ContactId':_0x476dca}})[_0x2319('0x1b')](function(_0x51c04c){_0x2e1edf({'ret':'OK'});});});});}function insertCmHopper(_0x378119,_0x4325c3,_0x1c6af3,_0x19b47e,_0x46554f){var _0x4430dc=[_0x2319('0x26'),'cm_contacts.scheduledat',_0x2319('0x27'),_0x2319('0x28'),_0x4325c3+'.'+_0x19b47e,_0x2319('0x29'),'cm_contacts.updatedAt',_0x2319('0x2a'),_0x2319('0x2b'),'\x22'+_0x46554f+'\x22'];return squel[_0x2319('0x2c')]()['into'](_0x2319('0x2d'))[_0x2319('0x2e')]([_0x2319('0xd'),'scheduledat',_0x2319('0x2f'),_0x2319('0x30'),_0x19b47e,'createdAt',_0x2319('0x31'),_0x2319('0x32'),'UserId',_0x2319('0x33')],squel[_0x2319('0x34')]()[_0x2319('0x35')](_0x4430dc)[_0x2319('0x36')](_0x4325c3)[_0x2319('0xe')](_0x2319('0x37'),null,_0x2319('0x38')+_0x4325c3+_0x2319('0x39'))[_0x2319('0xe')](_0x1c6af3,null,_0x1c6af3+_0x2319('0xf')+_0x4325c3+'.'+_0x19b47e)[_0x2319('0x10')](_0x4325c3+_0x2319('0x3a'),_0x378119)[_0x2319('0x10')](_0x2319('0x3b'),NOW)[_0x2319('0x10')](_0x2319('0x3c'),selectNotIn(_0x4325c3,_0x1c6af3,_0x19b47e,_0x2319('0x2d'),[_0x2319('0x3d'),_0x2319('0x3e')]))[_0x2319('0x10')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x4325c3,_0x1c6af3,_0x19b47e,_0x2319('0x2d'),[_0x2319('0x3d')])))[_0x2319('0x3f')]();}function insertCmHopperBlack(_0x4493fc,_0x43bdc9,_0x10ce29,_0x54755b){var _0x182d35=[_0x2319('0x26'),'cm_contacts.id','cm_contacts.ListId',_0x43bdc9+'.'+_0x54755b,_0x2319('0x29'),_0x2319('0x40')];return squel[_0x2319('0x2c')]()['into'](_0x2319('0x41'))['fromQuery']([_0x2319('0xd'),'ContactId',_0x2319('0x30'),_0x54755b,'createdAt','updatedAt'],squel['select']()[_0x2319('0x35')](_0x182d35)[_0x2319('0x36')](_0x43bdc9)[_0x2319('0xe')](_0x2319('0x37'),null,_0x2319('0x38')+_0x43bdc9+_0x2319('0x39'))[_0x2319('0xe')](_0x10ce29,null,_0x10ce29+'.id\x20=\x20'+_0x43bdc9+'.'+_0x54755b)[_0x2319('0x10')](_0x43bdc9+'.CmListId\x20=\x20?',_0x4493fc)[_0x2319('0x10')](_0x2319('0x3b'),NOW)[_0x2319('0x10')](_0x2319('0x3c'),squel[_0x2319('0x34')]()[_0x2319('0xc')](_0x2319('0xd'))[_0x2319('0x36')](_0x2319('0x41'))['where'](_0x2319('0x42'),_0x4493fc)[_0x2319('0x10')](_0x54755b+_0x2319('0x43'),_0x43bdc9+'.'+_0x54755b)))['toString']();}function insertCmHopperAdditionalPhones(_0x4a1911){var _0x134374=['cm_hopper.id',_0x2319('0x44'),_0x2319('0x45'),_0x2319('0x46'),_0x2319('0x47')];return squel['insert']()[_0x2319('0x48')](_0x2319('0x49'))[_0x2319('0x2e')]([_0x2319('0x4a'),_0x2319('0xd'),_0x2319('0x4b'),_0x2319('0x4c'),_0x2319('0x31')],squel[_0x2319('0x34')]()[_0x2319('0x35')](_0x134374)[_0x2319('0x36')](_0x2319('0x2d'))[_0x2319('0xe')](_0x2319('0x37'),null,_0x2319('0x4d'))[_0x2319('0xe')]('cm_contact_has_items',null,_0x2319('0x4e'))[_0x2319('0x10')]('cm_hopper.ListId\x20=\x20?',_0x4a1911)['where']('cm_contacts.createdAt\x20=\x20?',NOW))[_0x2319('0x3f')]();}function insertCmContact(_0x3d75c3,_0x3f529f,_0x56c769,_0x2bdcfb){var _0x13e65e=_['concat'](_[_0x2319('0x4f')](_0x2bdcfb),[_0x2319('0x30'),'CompanyId',_0x2319('0x4c'),_0x2319('0x31')]);return squel['insert']()[_0x2319('0x48')](_0x2319('0x37'))[_0x2319('0x2e')](_0x13e65e,squel[_0x2319('0x34')]()[_0x2319('0x35')](_0x13e65e)[_0x2319('0x36')](_0x3f529f)[_0x2319('0x10')]('('+_0x56c769[_0x2319('0xe')](',')+_0x2319('0x50'),squel[_0x2319('0x34')]()[_0x2319('0x35')](_0x56c769)['from'](_0x2319('0x37'))[_0x2319('0x10')](_0x2319('0x42'),_0x3d75c3))[_0x2319('0x10')](_0x2319('0x51'),squel[_0x2319('0x34')]()[_0x2319('0xc')](_0x2319('0x52'),_0x2319('0x53'))[_0x2319('0x36')](_0x3f529f)[_0x2319('0x54')](_0x56c769[_0x2319('0xe')](','))))['toString']();}function handleStop(){logger['info'](_0x2319('0x55'));stopped=!![];}function handleUncaughtException(_0xed0402){logger[_0x2319('0x56')](_0xed0402[_0x2319('0x19')]);process[_0x2319('0x57')](0x1);}function handleError(_0x2bf5f3,_0xb5da15){stats['errors'][_0x2319('0x16')]({'name':_0xb5da15[_0x2319('0x58')],'message':_0xb5da15[_0x2319('0x19')],'row':_0x2bf5f3});}function handleQuery(_0x4de7ec){logger[_0x2319('0x59')](_0x4de7ec);return db[_0x2319('0x5a')][_0x2319('0x5b')](_0x4de7ec)[_0x2319('0x13')](function(_0x47fea3){results['push'](_0x47fea3);})[_0x2319('0x18')](function(_0x34f705){logger[_0x2319('0x56')](_0x34f705[_0x2319('0x19')]);});}function main(_0x5d2ba7,_0x4868d0,_0x21323a,_0x3c6941){logger[_0x2319('0x59')](_0x2319('0x5c'),_0x5d2ba7,JSON[_0x2319('0x5d')](_0x4868d0));process['send']('start');var _0x19e83b=_0x4868d0[_0x2319('0x5e')];var _0x762d71=_[_0x2319('0x5f')](_0x19e83b);var _0x17f407=_0x4868d0[_0x2319('0x60')];var _0x2a435d=path[_0x2319('0xe')](config[_0x2319('0x61')],'server/files/tmp',_0x17f407+_0x2319('0x62'));logger[_0x2319('0x59')](_0x2319('0x63'),_0x4868d0);db[_0x2319('0x64')][_0x2319('0x65')]({'raw':!![],'attributes':['id',_0x2319('0x66')]})[_0x2319('0x1b')](function(_0x124cdf){for(var _0xebedd6=0x0;_0xebedd6<_0x124cdf[_0x2319('0x14')];_0xebedd6++){if(_0x124cdf[_0xebedd6][_0x2319('0x66')]in _0x19e83b){contactItemTypes[_0x2319('0x16')](_0x124cdf[_0xebedd6]);delete _0x762d71[_0x124cdf[_0xebedd6]['name']];hasAdditionalPhones=!![];}for(var _0x287f2e in _0x19e83b){if(_0x124cdf[_0xebedd6][_0x2319('0x66')]+_0x2319('0x67')===_0x287f2e){phoneDescriptions[_0x2319('0x16')]({'itemTypeId':_0x124cdf[_0xebedd6]['id'],'description':_0x287f2e});delete _0x762d71[_0x287f2e];}}}if(hasAdditionalPhones)_0x762d71[_0x2319('0x1a')]='';var _0x410d90=_['keys'](_0x762d71)[_0x2319('0xe')]();logger[_0x2319('0x59')](_0x2319('0x68'),_0x410d90);fs[_0x2319('0x69')](_0x2a435d,_0x410d90+'\x0a');Papa[_0x2319('0x6a')](fs[_0x2319('0x6b')](_0x5d2ba7),{'header':!![],'skipEmptyLines':!![],'step':function(_0x11228c,_0x26fee3){try{for(var _0xf915c1=0x0,_0x2175f0=[];_0xf915c1<_0x11228c[_0x2319('0x6c')][_0x2319('0x14')];_0xf915c1++){stats['rows']+=0x1;if(_0x11228c['errors'][_0xf915c1]){handleError(_0x11228c[_0x2319('0x6c')][_0xf915c1],_0x11228c[_0x2319('0x6d')][_0xf915c1]);}else{var _0x20b81c=[];var _0x22cda4=[];var _0x1ca5e2={};for(var _0x101b87 in _0x19e83b){let _0xabed40=contactItemTypes[_0x2319('0x6e')](_0xc8e62=>_0xc8e62['name']===_0x101b87);let _0x512ce1=contactItemTypes[_0x2319('0x6e')](_0x510f9d=>_0x510f9d[_0x2319('0x66')]+'_description'===_0x101b87);if(_[_0x2319('0x15')](_0xabed40)&&_[_0x2319('0x15')](_0x512ce1)){if(_0x19e83b[_0x2319('0x6f')](_0x101b87)){if(_0x11228c[_0x2319('0x6c')][_0xf915c1][_0x19e83b[_0x101b87]]){var _0x43ea29=_[_0x2319('0x70')](_0x11228c[_0x2319('0x6c')][_0xf915c1][_0x19e83b[_0x101b87]][_0x2319('0x71')](/"/g,'\x27'));switch(_0x101b87){case _0x2319('0x72'):var _0x2bc0b5=moment(_0x43ea29,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x2bc0b5[_0x2319('0x73')]()){_0x2175f0[_0x2319('0x16')]('\x22'+_0x43ea29+'\x22');}else{_0x20b81c[_0x2319('0x16')](_0x2319('0x74'));}break;case _0x2319('0x32'):var _0x3009f5=parseInt(_0x43ea29);_0x43ea29=_[_0x2319('0x75')](_0x3009f5)||_0x3009f5<0x0||_0x3009f5>0x4?_0x3c6941?0x3:0x2:_0x3009f5;_0x2175f0[_0x2319('0x16')]('\x22'+_0x43ea29+'\x22');break;case _0x2319('0x76'):var _0x350d87=parseInt(_0x43ea29);if(_[_0x2319('0x77')](_0x350d87)&&_[_0x2319('0x78')](_0x21323a,_0x350d87)){_0x2175f0[_0x2319('0x16')]('\x22'+_0x350d87+'\x22');}else{_0x20b81c[_0x2319('0x16')]('agent\x20not\x20exists');}break;case _0x2319('0x79'):if(isEmail(_0x43ea29)){_0x2175f0[_0x2319('0x16')]('\x22'+_0x43ea29+'\x22');}else{_0x20b81c['push'](_0x2319('0x7a'));}break;case _0x2319('0x7b'):var _0x53b8b5=moment(_0x43ea29,_0x2319('0x7c'),!![]);if(_0x53b8b5[_0x2319('0x73')]()){_0x2175f0[_0x2319('0x16')]('\x22'+_0x43ea29+'\x22');}else{_0x20b81c[_0x2319('0x16')](_0x2319('0x7d'));}break;default:_0x2175f0[_0x2319('0x16')]('\x22'+_0x43ea29+'\x22');}}else{switch(_0x101b87){case _0x2319('0x7e'):case _0x2319('0xd'):_0x20b81c[_0x2319('0x16')](_0x101b87+_0x2319('0x7f'));break;default:_0x2175f0[_0x2319('0x16')]('\x22\x22');}}}}else{var _0x104660='';if(!_[_0x2319('0x15')](_0xabed40)){if(!_0x1ca5e2[_0x2319('0x6f')](_0xabed40['id'])){for(var _0x2b63b0=0x0;_0x2b63b0<_0x19e83b[_0x101b87][_0x2319('0x14')];_0x2b63b0++){var _0x43ea29=_[_0x2319('0x70')](_0x11228c[_0x2319('0x6c')][_0xf915c1][_0x19e83b[_0x101b87][_0x2b63b0]][_0x2319('0x71')](/"/g,'\x27'));var _0x82f0e6=phoneDescriptions[_0x2319('0x6e')](_0x3ccfa1=>_0x3ccfa1[_0x2319('0x80')]===_0xabed40['id']);if(!_[_0x2319('0x15')](_0x82f0e6)){var _0x52c503=_[_0x2319('0x70')](_0x11228c['data'][_0xf915c1][_0x19e83b[_0x82f0e6[_0x2319('0x81')]][0x0]][_0x2319('0x71')](/"/g,'\x27'));if(!_[_0x2319('0x15')](_0x52c503))_0x43ea29=_0x43ea29+'§'+_0x52c503;}if(_0x104660=='')_0x104660=_0x43ea29;else _0x104660+='|'+_0x43ea29;}_0x22cda4['push'](_0xabed40['id']+':'+_0x104660);_0x1ca5e2[_0xabed40['id']]=0x1;}}}}if(hasAdditionalPhones){_0x2175f0[_0x2319('0x16')]('\x22'+_0x22cda4[_0x2319('0xe')](';')+'\x22');}if(_0x20b81c[_0x2319('0x14')]){handleError(_0x11228c[_0x2319('0x6c')][_0xf915c1],{'code':'SystemRow','message':_0x20b81c[_0x2319('0xe')]()});}else{fs[_0x2319('0x82')](_0x2a435d,_0x2175f0[_0x2319('0xe')]()+'\x0a');}_0x2175f0=[];}if(!(stats[_0x2319('0x83')]%0xc8)){socket[_0x2319('0x84')](_0x2319('0x85')+_0x17f407,stats);stats[_0x2319('0x6d')]=[];}}if(stopped){logger[_0x2319('0x59')](_0x2319('0x86'));_0x26fee3[_0x2319('0x87')]();}}catch(_0x5bce50){handleError(_0x11228c['data'][_0xf915c1],{'code':'SystemError','message':_0x5bce50[_0x2319('0x19')]});logger['error'](_0x2319('0x88'),_0x5bce50[_0x2319('0x19')]);}},'complete':function(){try{var _0x15ff4a=[];var _0x190f09=tempTableName;_0x15ff4a[_0x2319('0x16')]('CREATE\x20TABLE\x20'+_0x190f09+'\x20LIKE\x20cm_contacts;');logger[_0x2319('0x59')]('CIS\x20len',contactItemTypes['length']);var _0x3bd078=util[_0x2319('0x9')](_0x2319('0x89'),_0x2a435d,_0x190f09,_0x410d90,_0x4868d0[_0x2319('0x30')],_0x4868d0['CompanyId']||null,NOW,NOW);if(_[_0x2319('0x15')](_0x19e83b[_0x2319('0x72')])){_0x3bd078+=_0x2319('0x8a');}_0x15ff4a[_0x2319('0x16')](_0x3bd078);BPromise[_0x2319('0x8b')](_0x15ff4a,handleQuery)[_0x2319('0x1b')](function(_0x2dd2ed){BPromise[_0x2319('0x17')]([handleAdditionalPhones()])[_0x2319('0x1b')](function(){_0x15ff4a=[];for(var _0x26965a=0x0;_0x26965a<promisesContact[_0x2319('0x14')];_0x26965a++){_0x15ff4a[_0x2319('0x16')](updateContact(promisesContact[_0x26965a]['contact']));}BPromise[_0x2319('0x17')](_0x15ff4a)[_0x2319('0x1b')](function(){_0x15ff4a=[];for(var _0x2028c1=0x0;_0x2028c1<promisesAdditionalPhones[_0x2319('0x14')];_0x2028c1++){_0x15ff4a[_0x2319('0x16')](createAdditionalPhone(promisesAdditionalPhones[_0x2028c1][_0x2319('0x8c')],promisesAdditionalPhones[_0x2028c1][_0x2319('0x8d')],promisesAdditionalPhones[_0x2028c1]['phone'],promisesAdditionalPhones[_0x2028c1]['orderBy']));}BPromise[_0x2319('0x17')](_0x15ff4a)[_0x2319('0x1b')](function(){_0x15ff4a=[];_0x15ff4a[_0x2319('0x16')](insertCmHopperAdditionalPhones(_0x4868d0[_0x2319('0x30')]));_0x15ff4a[_0x2319('0x16')](_0x2319('0x8e')+_0x190f09+';');BPromise['each'](_0x15ff4a,handleQuery)[_0x2319('0x1b')](function(_0x51cf19){stats[_0x2319('0x8f')]=!![];stats['affectedRows']=updatedRows;socket['emit'](_0x2319('0x85')+_0x17f407,stats);fs['unlink'](_0x5d2ba7);fs[_0x2319('0x90')](_0x2a435d);process[_0x2319('0x57')](0x0);})[_0x2319('0x18')](function(_0x221f1d){logger[_0x2319('0x56')](_0x221f1d[_0x2319('0x19')]);process['exit'](0x1);});});});});})[_0x2319('0x18')](function(_0x2ef24a){logger[_0x2319('0x56')](_0x2ef24a[_0x2319('0x19')]);process[_0x2319('0x57')](0x1);});}catch(_0xa48f0d){logger[_0x2319('0x56')](_0x2319('0x91'),_0xa48f0d[_0x2319('0x19')]);process[_0x2319('0x57')](0x1);}},'error':function(_0x2d367c,_0x35b145,_0x295bcf,_0x30b011){throw new Error(_0x30b011);}});});}function validate(){if(process[_0x2319('0x92')]&&process[_0x2319('0x92')][_0x2319('0x14')]<0x4){throw new Error(_0x2319('0x93'));}var _0x283001=path[_0x2319('0xe')](config[_0x2319('0x61')],'server/files/tmp',process[_0x2319('0x92')][0x2]);if(!fs[_0x2319('0x94')](_0x283001)){throw new Error(_0x2319('0x95'));}var _0xa2bcb={};try{_0xa2bcb=JSON['parse'](process['argv'][0x3]);if(!_0xa2bcb[_0x2319('0x5e')]){throw new Error('binding\x20doesn\x27t\x20exists');}var _0x374c0f=0x0;if(_0xa2bcb['binding'][_0x2319('0x76')]){_0x374c0f=0x1;}if(!_0xa2bcb[_0x2319('0x30')]){throw new Error(_0x2319('0x96'));}}catch(_0x400d6d){throw new Error('body\x20id\x20mandatory');}var _0x300765=[];try{_0x300765=_[_0x2319('0x97')](JSON[_0x2319('0x6a')](process[_0x2319('0x92')][0x4]),'id');}catch(_0x55dc7d){logger[_0x2319('0x59')]('No\x20agent\x20available');}main(_0x283001,_0xa2bcb,_0x300765,_0x374c0f);}validate();process['on'](_0x2319('0x98'),handleStop);process['on'](_0x2319('0x99'),handleUncaughtException);
\ No newline at end of file
+var _0x4e2e=['abort','SystemError','step','CREATE\x20TABLE\x20','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\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','emit','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','binding\x20doesn\x27t\x20exists','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','lodash','papaparse','util','bluebird','moment','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','phone','from','join','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','query','select\x20*\x20from\x20','spread','length','isNil','push','all','then','catch','error','message','AdditionalPhones','split','filter','findOne','CmContactHasItem','update','updated','create','PHONE','inserted','CmContact','CmHopper','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.phone','insert','cm_hopper_black','createdAt','field','ListId\x20=\x20?','\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','concat','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','min_id','group','info','Received\x20SIGINT','exit','errors','code','sequelize','main','stringify','send','start','binding','clone','socket_timestamp','root','server/files/tmp','ContactItemType','findAll','name','_description','keys','header','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','trim','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','UserId','isNumber','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','firstName','\x20not\x20specified','description','SystemRow','appendFileSync','contact:import:','Abort\x20parser'];(function(_0x5f3905,_0x43a651){var _0x2923b1=function(_0x3c72d8){while(--_0x3c72d8){_0x5f3905['push'](_0x5f3905['shift']());}};_0x2923b1(++_0x43a651);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x4f541f,_0x3de9a6){_0x4f541f=_0x4f541f-0x0;var _0x44a136=_0x4e2e[_0x4f541f];return _0x44a136;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xe4e2('0x0'));var Papa=require(_0xe4e2('0x1'));var util=require(_0xe4e2('0x2'));var BPromise=require(_0xe4e2('0x3'));var moment=require(_0xe4e2('0x4'));var squel=require(_0xe4e2('0x5'));var Redis=require('ioredis');var db=require(_0xe4e2('0x6'))['db'];var config=require(_0xe4e2('0x7'));var logger=require(_0xe4e2('0x8'))(_0xe4e2('0x9'));config['redis']=_[_0xe4e2('0xa')](config[_0xe4e2('0xb')],{'host':_0xe4e2('0xc'),'port':0x18eb});var socket=require(_0xe4e2('0xd'))(new Redis(config[_0xe4e2('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0xe4e2('0xe')](_0xe4e2('0xf'));var tempTableName=_0xe4e2('0x10')+moment()['format'](_0xe4e2('0x11'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x14fe0d){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))*$/[_0xe4e2('0x12')](_0x14fe0d);}function selectNotIn(_0x5b7889,_0x1954f8,_0x42a1f0,_0x137047,_0x107816){return squel[_0xe4e2('0x13')]()['field'](_0xe4e2('0x14'))[_0xe4e2('0x15')](_0x137047)[_0xe4e2('0x16')](_0x1954f8,null,_0x1954f8+_0xe4e2('0x17')+_0x137047+'.'+_0x42a1f0)['where'](_0x137047+'.'+_0x42a1f0+_0xe4e2('0x18')+_0x5b7889+'.'+_0x42a1f0)[_0xe4e2('0x19')](_0x1954f8+_0xe4e2('0x1a')+_0x107816[_0xe4e2('0x16')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x202486,_0x50678d){promisesAdditionalPhones=[];promisesContact=[];return db['sequelize'][_0xe4e2('0x1b')](_0xe4e2('0x1c')+tempTableName)[_0xe4e2('0x1d')](function(_0x28ee12){if(_0x28ee12!==null){var _0x217ea5=[];for(var _0x54107a=0x0;_0x54107a<_0x28ee12[_0xe4e2('0x1e')];_0x54107a++){var _0x3e8bb6=_0x28ee12[_0x54107a];if(!_[_0xe4e2('0x1f')](_0x3e8bb6['phone'])){if(!_[_0xe4e2('0x1f')](_0x3e8bb6['AdditionalPhones']))_0x217ea5[_0xe4e2('0x20')](insertAdditionalPhones(_0x3e8bb6));promisesContact[_0xe4e2('0x20')]({'contact':_0x3e8bb6});}}}Promise[_0xe4e2('0x21')](_0x217ea5)[_0xe4e2('0x22')](function(){_0x202486({'val':0x1});});})[_0xe4e2('0x23')](function(_0x156243){logger[_0xe4e2('0x24')](_0x156243[_0xe4e2('0x25')]);});});}function insertAdditionalPhones(_0x4769dd){return new Promise(function(_0x362741,_0x5a84c5){var _0xb7b3ab=_0x4769dd[_0xe4e2('0x26')];if(_[_0xe4e2('0x1f')](_0xb7b3ab))_0x5a84c5({'val':0x0});else{var _0x3491ff=_0xb7b3ab[_0xe4e2('0x27')](';');var _0x23b466=[];orderBy=0x0;for(var _0x16f14b=0x0;_0x16f14b<_0x3491ff['length'];_0x16f14b++){_0x23b466[_0xe4e2('0x20')](splitAdditionalPhone(_0x4769dd['id'],_0x3491ff[_0x16f14b]));}Promise[_0xe4e2('0x21')](_0x23b466)[_0xe4e2('0x22')](function(){_0x362741({'val':_0x3491ff['length']});});}});}function splitAdditionalPhone(_0x353030,_0x12ad33){return new Promise(function(_0x598fa3,_0xcba85a){var _0x234c38=_0x12ad33[_0xe4e2('0x27')](':');var _0x3f5265=_0x234c38[0x0];var _0x249b7e=_0x234c38[0x1];if(_0x249b7e!==''){var _0x5887c9=_0x249b7e[_0xe4e2('0x27')]('|');var _0x357903=[];for(var _0x1f6d1f=0x0;_0x1f6d1f<_0x5887c9['length'];_0x1f6d1f++){if(_0x5887c9[_0x1f6d1f]!==''){var _0x3a31b8=_[_0xe4e2('0x28')](promisesAdditionalPhones,{'contactId':_0x353030,'phone':_0x5887c9[_0x1f6d1f]});if(_0x3a31b8[_0xe4e2('0x1e')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x353030,'contactTypeId':_0x3f5265,'phone':_0x5887c9[_0x1f6d1f],'orderBy':orderBy});}}}_0x598fa3({'ok':0x1});}else _0x598fa3({'res':0x0});});}function createAdditionalPhone(_0x2e5a65,_0x50b4d9,_0x477b5c,_0x1e21c0){var _0x52c849='';var _0x46926a='';var _0x18e2e5=_0x477b5c[_0xe4e2('0x27')]('§');_0x52c849=_0x18e2e5[0x0];if(_0x18e2e5[_0xe4e2('0x1e')]==0x2)_0x46926a=_0x18e2e5[0x1];return new Promise(function(_0x1f7bcc,_0x4d33de){return db['CmContactHasItem'][_0xe4e2('0x29')]({'where':{'CmContactId':_0x2e5a65,'item':_0x52c849}})[_0xe4e2('0x22')](function(_0x12848d){if(_0x12848d){return db[_0xe4e2('0x2a')][_0xe4e2('0x2b')]({'ItemTypeId':_0x50b4d9,'description':_0x46926a,'OrderBy':_0x1e21c0},{'where':{'CmContactId':_0x2e5a65,'item':_0x52c849}})[_0xe4e2('0x22')](function(_0x1c7f9a){_0x1f7bcc({'res':_0xe4e2('0x2c')});});}else{return db[_0xe4e2('0x2a')][_0xe4e2('0x2d')]({'CmContactId':_0x2e5a65,'item':_0x52c849,'ItemTypeId':_0x50b4d9,'description':_0x46926a,'OrderBy':_0x1e21c0,'ItemClass':_0xe4e2('0x2e')})[_0xe4e2('0x22')](function(_0x4ce75b){_0x1f7bcc({'res':_0xe4e2('0x2f')});});}});});}function updateContact(_0x8ffc6){return new Promise(function(_0xe0846a,_0x1fd3c5){var _0x1431b0=_0x8ffc6['id'];delete _0x8ffc6['id'];return db[_0xe4e2('0x30')]['update'](_0x8ffc6,{'where':{'id':_0x1431b0}})[_0xe4e2('0x22')](function(_0x286714){updatedRows+=0x1;return db[_0xe4e2('0x31')][_0xe4e2('0x2b')]({'phone':_0x8ffc6[_0xe4e2('0x14')]},{'where':{'ContactId':_0x1431b0}})[_0xe4e2('0x22')](function(_0x444b99){_0xe0846a({'ret':'OK'});});});});}function insertCmHopper(_0x36a26d,_0xe3d34a,_0x337b42,_0x2767df,_0x4ac14d){var _0x2c831f=['cm_contacts.phone',_0xe4e2('0x32'),_0xe4e2('0x33'),'cm_contacts.ListId',_0xe3d34a+'.'+_0x2767df,_0xe4e2('0x34'),_0xe4e2('0x35'),_0xe4e2('0x36'),_0xe4e2('0x37'),'\x22'+_0x4ac14d+'\x22'];return squel['insert']()[_0xe4e2('0x38')]('cm_hopper')[_0xe4e2('0x39')](['phone',_0xe4e2('0x3a'),_0xe4e2('0x3b'),_0xe4e2('0x3c'),_0x2767df,'createdAt',_0xe4e2('0x3d'),_0xe4e2('0x3e'),'UserId',_0xe4e2('0x3f')],squel[_0xe4e2('0x13')]()[_0xe4e2('0x40')](_0x2c831f)[_0xe4e2('0x15')](_0xe3d34a)[_0xe4e2('0x16')](_0xe4e2('0x41'),null,_0xe4e2('0x42')+_0xe3d34a+_0xe4e2('0x43'))[_0xe4e2('0x16')](_0x337b42,null,_0x337b42+'.id\x20=\x20'+_0xe3d34a+'.'+_0x2767df)['where'](_0xe3d34a+_0xe4e2('0x44'),_0x36a26d)[_0xe4e2('0x19')](_0xe4e2('0x45'),NOW)[_0xe4e2('0x19')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0xe3d34a,_0x337b42,_0x2767df,'cm_hopper',[_0xe4e2('0x46'),_0xe4e2('0x47')]))[_0xe4e2('0x19')](_0xe4e2('0x48'),selectNotIn(_0xe3d34a,_0x337b42,_0x2767df,'cm_hopper',[_0xe4e2('0x46')])))[_0xe4e2('0x49')]();}function insertCmHopperBlack(_0x385572,_0x577d4c,_0x1b54f6,_0x4789cf){var _0x67ee4f=[_0xe4e2('0x4a'),'cm_contacts.id','cm_contacts.ListId',_0x577d4c+'.'+_0x4789cf,_0xe4e2('0x34'),_0xe4e2('0x35')];return squel[_0xe4e2('0x4b')]()['into'](_0xe4e2('0x4c'))[_0xe4e2('0x39')](['phone',_0xe4e2('0x3b'),_0xe4e2('0x3c'),_0x4789cf,_0xe4e2('0x4d'),_0xe4e2('0x3d')],squel[_0xe4e2('0x13')]()[_0xe4e2('0x40')](_0x67ee4f)[_0xe4e2('0x15')](_0x577d4c)[_0xe4e2('0x16')]('cm_contacts',null,_0xe4e2('0x42')+_0x577d4c+_0xe4e2('0x43'))['join'](_0x1b54f6,null,_0x1b54f6+'.id\x20=\x20'+_0x577d4c+'.'+_0x4789cf)[_0xe4e2('0x19')](_0x577d4c+_0xe4e2('0x44'),_0x385572)[_0xe4e2('0x19')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xe4e2('0x19')](_0xe4e2('0x48'),squel[_0xe4e2('0x13')]()[_0xe4e2('0x4e')]('phone')[_0xe4e2('0x15')](_0xe4e2('0x4c'))[_0xe4e2('0x19')](_0xe4e2('0x4f'),_0x385572)['where'](_0x4789cf+_0xe4e2('0x50'),_0x577d4c+'.'+_0x4789cf)))[_0xe4e2('0x49')]();}function insertCmHopperAdditionalPhones(_0x59c52d){var _0x37a988=[_0xe4e2('0x51'),_0xe4e2('0x52'),'cm_contact_has_items.OrderBy',_0xe4e2('0x53'),_0xe4e2('0x54')];return squel[_0xe4e2('0x4b')]()['into']('cm_hopper_additional_phones')[_0xe4e2('0x39')](['CmHopperId',_0xe4e2('0x14'),'OrderBy',_0xe4e2('0x4d'),_0xe4e2('0x3d')],squel[_0xe4e2('0x13')]()['fields'](_0x37a988)[_0xe4e2('0x15')]('cm_hopper')[_0xe4e2('0x16')](_0xe4e2('0x41'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0xe4e2('0x16')]('cm_contact_has_items',null,_0xe4e2('0x55'))[_0xe4e2('0x19')]('cm_hopper.ListId\x20=\x20?',_0x59c52d)[_0xe4e2('0x19')](_0xe4e2('0x45'),NOW))[_0xe4e2('0x49')]();}function insertCmContact(_0x3e540d,_0x3c0107,_0xf7409d,_0x315255){var _0x37b33b=_[_0xe4e2('0x56')](_['keys'](_0x315255),[_0xe4e2('0x3c'),_0xe4e2('0x57'),_0xe4e2('0x4d'),_0xe4e2('0x3d')]);return squel[_0xe4e2('0x4b')]()[_0xe4e2('0x38')](_0xe4e2('0x41'))[_0xe4e2('0x39')](_0x37b33b,squel[_0xe4e2('0x13')]()[_0xe4e2('0x40')](_0x37b33b)[_0xe4e2('0x15')](_0x3c0107)['where']('('+_0xf7409d[_0xe4e2('0x16')](',')+_0xe4e2('0x58'),squel[_0xe4e2('0x13')]()[_0xe4e2('0x40')](_0xf7409d)['from'](_0xe4e2('0x41'))[_0xe4e2('0x19')]('ListId\x20=\x20?',_0x3e540d))[_0xe4e2('0x19')](_0xe4e2('0x59'),squel[_0xe4e2('0x13')]()[_0xe4e2('0x4e')]('MIN(id)',_0xe4e2('0x5a'))['from'](_0x3c0107)[_0xe4e2('0x5b')](_0xf7409d[_0xe4e2('0x16')](','))))[_0xe4e2('0x49')]();}function handleStop(){logger[_0xe4e2('0x5c')](_0xe4e2('0x5d'));stopped=!![];}function handleUncaughtException(_0x26ab38){logger[_0xe4e2('0x24')](_0x26ab38[_0xe4e2('0x25')]);process[_0xe4e2('0x5e')](0x1);}function handleError(_0x230969,_0x3cb0d2){stats[_0xe4e2('0x5f')]['push']({'name':_0x3cb0d2[_0xe4e2('0x60')],'message':_0x3cb0d2['message'],'row':_0x230969});}function handleQuery(_0x5eb739){logger[_0xe4e2('0x5c')](_0x5eb739);return db[_0xe4e2('0x61')][_0xe4e2('0x1b')](_0x5eb739)['spread'](function(_0x477acd){results['push'](_0x477acd);})[_0xe4e2('0x23')](function(_0x9ba757){logger['error'](_0x9ba757[_0xe4e2('0x25')]);});}function main(_0x14f7da,_0x55d442,_0x3f2b39,_0x4e3a01){logger['info'](_0xe4e2('0x62'),_0x14f7da,JSON[_0xe4e2('0x63')](_0x55d442));process[_0xe4e2('0x64')](_0xe4e2('0x65'));var _0x4bd248=_0x55d442[_0xe4e2('0x66')];var _0x3f94ef=_[_0xe4e2('0x67')](_0x4bd248);var _0x133f62=_0x55d442[_0xe4e2('0x68')];var _0x472b0d=path[_0xe4e2('0x16')](config[_0xe4e2('0x69')],_0xe4e2('0x6a'),_0x133f62+'.csv');logger['info']('body',_0x55d442);db[_0xe4e2('0x6b')][_0xe4e2('0x6c')]({'raw':!![],'attributes':['id',_0xe4e2('0x6d')]})[_0xe4e2('0x22')](function(_0x346e88){for(var _0x2c38a7=0x0;_0x2c38a7<_0x346e88[_0xe4e2('0x1e')];_0x2c38a7++){if(_0x346e88[_0x2c38a7]['name']in _0x4bd248){contactItemTypes[_0xe4e2('0x20')](_0x346e88[_0x2c38a7]);delete _0x3f94ef[_0x346e88[_0x2c38a7][_0xe4e2('0x6d')]];hasAdditionalPhones=!![];}for(var _0x1a96af in _0x4bd248){if(_0x346e88[_0x2c38a7][_0xe4e2('0x6d')]+_0xe4e2('0x6e')===_0x1a96af){phoneDescriptions[_0xe4e2('0x20')]({'itemTypeId':_0x346e88[_0x2c38a7]['id'],'description':_0x1a96af});delete _0x3f94ef[_0x1a96af];}}}if(hasAdditionalPhones)_0x3f94ef[_0xe4e2('0x26')]='';var _0x38eb8a=_[_0xe4e2('0x6f')](_0x3f94ef)[_0xe4e2('0x16')]();logger[_0xe4e2('0x5c')](_0xe4e2('0x70'),_0x38eb8a);fs[_0xe4e2('0x71')](_0x472b0d,_0x38eb8a+'\x0a');Papa[_0xe4e2('0x72')](fs[_0xe4e2('0x73')](_0x14f7da),{'header':!![],'skipEmptyLines':!![],'step':function(_0x51d58d,_0x4434c9){try{for(var _0xdeb76a=0x0,_0x32185b=[];_0xdeb76a<_0x51d58d[_0xe4e2('0x74')][_0xe4e2('0x1e')];_0xdeb76a++){stats[_0xe4e2('0x75')]+=0x1;if(_0x51d58d[_0xe4e2('0x5f')][_0xdeb76a]){handleError(_0x51d58d[_0xe4e2('0x74')][_0xdeb76a],_0x51d58d[_0xe4e2('0x5f')][_0xdeb76a]);}else{var _0x23e014=[];var _0x57a7eb=[];var _0x31cdfe={};for(var _0x46b5bc in _0x4bd248){let _0x11679c=contactItemTypes[_0xe4e2('0x76')](_0x24859b=>_0x24859b[_0xe4e2('0x6d')]===_0x46b5bc);let _0xacef79=contactItemTypes[_0xe4e2('0x76')](_0x4d6bbd=>_0x4d6bbd[_0xe4e2('0x6d')]+_0xe4e2('0x6e')===_0x46b5bc);if(_[_0xe4e2('0x1f')](_0x11679c)&&_[_0xe4e2('0x1f')](_0xacef79)){if(_0x4bd248[_0xe4e2('0x77')](_0x46b5bc)){if(_0x51d58d[_0xe4e2('0x74')][_0xdeb76a][_0x4bd248[_0x46b5bc]]){var _0x150c1a=_[_0xe4e2('0x78')](_0x51d58d[_0xe4e2('0x74')][_0xdeb76a][_0x4bd248[_0x46b5bc]][_0xe4e2('0x79')](/"/g,'\x27'));switch(_0x46b5bc){case'scheduledat':var _0x10fe72=moment(_0x150c1a,_0xe4e2('0xf'),!![]);if(_0x10fe72['isValid']()){_0x32185b[_0xe4e2('0x20')]('\x22'+_0x150c1a+'\x22');}else{_0x23e014[_0xe4e2('0x20')](_0xe4e2('0x7a'));}break;case _0xe4e2('0x3e'):var _0x16f0d1=parseInt(_0x150c1a);_0x150c1a=_['isNaN'](_0x16f0d1)||_0x16f0d1<0x0||_0x16f0d1>0x4?_0x4e3a01?0x3:0x2:_0x16f0d1;_0x32185b[_0xe4e2('0x20')]('\x22'+_0x150c1a+'\x22');break;case _0xe4e2('0x7b'):var _0x287546=parseInt(_0x150c1a);if(_[_0xe4e2('0x7c')](_0x287546)&&_[_0xe4e2('0x7d')](_0x3f2b39,_0x287546)){_0x32185b[_0xe4e2('0x20')]('\x22'+_0x287546+'\x22');}else{_0x23e014[_0xe4e2('0x20')](_0xe4e2('0x7e'));}break;case'email':if(isEmail(_0x150c1a)){_0x32185b[_0xe4e2('0x20')]('\x22'+_0x150c1a+'\x22');}else{_0x23e014[_0xe4e2('0x20')](_0xe4e2('0x7f'));}break;case _0xe4e2('0x80'):var _0x2fec7a=moment(_0x150c1a,_0xe4e2('0x81'),!![]);if(_0x2fec7a[_0xe4e2('0x82')]()){_0x32185b[_0xe4e2('0x20')]('\x22'+_0x150c1a+'\x22');}else{_0x23e014[_0xe4e2('0x20')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x32185b[_0xe4e2('0x20')]('\x22'+_0x150c1a+'\x22');}}else{switch(_0x46b5bc){case _0xe4e2('0x83'):case _0xe4e2('0x14'):_0x23e014[_0xe4e2('0x20')](_0x46b5bc+_0xe4e2('0x84'));break;default:_0x32185b[_0xe4e2('0x20')]('\x22\x22');}}}}else{var _0x1255e0='';if(!_[_0xe4e2('0x1f')](_0x11679c)){if(!_0x31cdfe[_0xe4e2('0x77')](_0x11679c['id'])){for(var _0x428f83=0x0;_0x428f83<_0x4bd248[_0x46b5bc][_0xe4e2('0x1e')];_0x428f83++){var _0x150c1a=_[_0xe4e2('0x78')](_0x51d58d['data'][_0xdeb76a][_0x4bd248[_0x46b5bc][_0x428f83]][_0xe4e2('0x79')](/"/g,'\x27'));var _0x5ed108=phoneDescriptions[_0xe4e2('0x76')](_0x18e8b3=>_0x18e8b3['itemTypeId']===_0x11679c['id']);if(!_[_0xe4e2('0x1f')](_0x5ed108)){var _0xd829a8=_[_0xe4e2('0x78')](_0x51d58d[_0xe4e2('0x74')][_0xdeb76a][_0x4bd248[_0x5ed108[_0xe4e2('0x85')]][0x0]][_0xe4e2('0x79')](/"/g,'\x27'));if(!_[_0xe4e2('0x1f')](_0xd829a8))_0x150c1a=_0x150c1a+'§'+_0xd829a8;}if(_0x1255e0=='')_0x1255e0=_0x150c1a;else _0x1255e0+='|'+_0x150c1a;}_0x57a7eb['push'](_0x11679c['id']+':'+_0x1255e0);_0x31cdfe[_0x11679c['id']]=0x1;}}}}if(hasAdditionalPhones){_0x32185b[_0xe4e2('0x20')]('\x22'+_0x57a7eb[_0xe4e2('0x16')](';')+'\x22');}if(_0x23e014['length']){handleError(_0x51d58d['data'][_0xdeb76a],{'code':_0xe4e2('0x86'),'message':_0x23e014[_0xe4e2('0x16')]()});}else{fs[_0xe4e2('0x87')](_0x472b0d,_0x32185b['join']()+'\x0a');}_0x32185b=[];}if(!(stats[_0xe4e2('0x75')]%0xc8)){socket['emit'](_0xe4e2('0x88')+_0x133f62,stats);stats[_0xe4e2('0x5f')]=[];}}if(stopped){logger['info'](_0xe4e2('0x89'));_0x4434c9[_0xe4e2('0x8a')]();}}catch(_0x45ecb8){handleError(_0x51d58d[_0xe4e2('0x74')][_0xdeb76a],{'code':_0xe4e2('0x8b'),'message':_0x45ecb8[_0xe4e2('0x25')]});logger[_0xe4e2('0x24')](_0xe4e2('0x8c'),_0x45ecb8[_0xe4e2('0x25')]);}},'complete':function(){try{var _0x18fb51=[];var _0x5a6a7c=tempTableName;_0x18fb51[_0xe4e2('0x20')](_0xe4e2('0x8d')+_0x5a6a7c+'\x20LIKE\x20cm_contacts;');logger[_0xe4e2('0x5c')]('CIS\x20len',contactItemTypes[_0xe4e2('0x1e')]);var _0x388f48=util[_0xe4e2('0xe')](_0xe4e2('0x8e'),_0x472b0d,_0x5a6a7c,_0x38eb8a,_0x55d442['ListId'],_0x55d442[_0xe4e2('0x57')]||null,NOW,NOW);if(_[_0xe4e2('0x1f')](_0x4bd248[_0xe4e2('0x3a')])){_0x388f48+=_0xe4e2('0x8f');}_0x18fb51[_0xe4e2('0x20')](_0x388f48);BPromise[_0xe4e2('0x90')](_0x18fb51,handleQuery)[_0xe4e2('0x22')](function(_0x526a50){BPromise['all']([handleAdditionalPhones()])[_0xe4e2('0x22')](function(){_0x18fb51=[];for(var _0x3d7f70=0x0;_0x3d7f70<promisesContact[_0xe4e2('0x1e')];_0x3d7f70++){_0x18fb51[_0xe4e2('0x20')](updateContact(promisesContact[_0x3d7f70][_0xe4e2('0x91')]));}BPromise[_0xe4e2('0x21')](_0x18fb51)[_0xe4e2('0x22')](function(){_0x18fb51=[];for(var _0x35bf89=0x0;_0x35bf89<promisesAdditionalPhones[_0xe4e2('0x1e')];_0x35bf89++){_0x18fb51[_0xe4e2('0x20')](createAdditionalPhone(promisesAdditionalPhones[_0x35bf89][_0xe4e2('0x92')],promisesAdditionalPhones[_0x35bf89][_0xe4e2('0x93')],promisesAdditionalPhones[_0x35bf89][_0xe4e2('0x14')],promisesAdditionalPhones[_0x35bf89][_0xe4e2('0x94')]));}BPromise[_0xe4e2('0x21')](_0x18fb51)[_0xe4e2('0x22')](function(){_0x18fb51=[];_0x18fb51[_0xe4e2('0x20')](insertCmHopperAdditionalPhones(_0x55d442[_0xe4e2('0x3c')]));_0x18fb51[_0xe4e2('0x20')]('DROP\x20TABLE\x20'+_0x5a6a7c+';');BPromise[_0xe4e2('0x90')](_0x18fb51,handleQuery)[_0xe4e2('0x22')](function(_0x38f5ea){stats['finish']=!![];stats['affectedRows']=updatedRows;socket[_0xe4e2('0x95')]('contact:import:'+_0x133f62,stats);fs[_0xe4e2('0x96')](_0x14f7da);fs[_0xe4e2('0x96')](_0x472b0d);process[_0xe4e2('0x5e')](0x0);})[_0xe4e2('0x23')](function(_0x41e636){logger[_0xe4e2('0x24')](_0x41e636[_0xe4e2('0x25')]);process[_0xe4e2('0x5e')](0x1);});});});});})[_0xe4e2('0x23')](function(_0x4a53fb){logger[_0xe4e2('0x24')](_0x4a53fb[_0xe4e2('0x25')]);process['exit'](0x1);});}catch(_0x4ab01e){logger[_0xe4e2('0x24')](_0xe4e2('0x97'),_0x4ab01e[_0xe4e2('0x25')]);process[_0xe4e2('0x5e')](0x1);}},'error':function(_0x11707e,_0x11a6f4,_0x38675b,_0x39fcac){throw new Error(_0x39fcac);}});});}function validate(){if(process[_0xe4e2('0x98')]&&process[_0xe4e2('0x98')]['length']<0x4){throw new Error(_0xe4e2('0x99'));}var _0x466aa2=path[_0xe4e2('0x16')](config[_0xe4e2('0x69')],_0xe4e2('0x6a'),process[_0xe4e2('0x98')][0x2]);if(!fs[_0xe4e2('0x9a')](_0x466aa2)){throw new Error('file\x20doesn\x27t\x20exists');}var _0xceeaed={};try{_0xceeaed=JSON[_0xe4e2('0x72')](process[_0xe4e2('0x98')][0x3]);if(!_0xceeaed[_0xe4e2('0x66')]){throw new Error(_0xe4e2('0x9b'));}var _0x108f5a=0x0;if(_0xceeaed[_0xe4e2('0x66')][_0xe4e2('0x7b')]){_0x108f5a=0x1;}if(!_0xceeaed[_0xe4e2('0x3c')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0xd1362c){throw new Error(_0xe4e2('0x9c'));}var _0x132da5=[];try{_0x132da5=_['map'](JSON[_0xe4e2('0x72')](process[_0xe4e2('0x98')][0x4]),'id');}catch(_0x30a6f5){logger[_0xe4e2('0x5c')](_0xe4e2('0x9d'));}main(_0x466aa2,_0xceeaed,_0x132da5,_0x108f5a);}validate();process['on'](_0xe4e2('0x9e'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 8f6c285..2c95294 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa50a=['membername','uniqueid','starttime','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','endtime','Duration','Billable\x20Time','getSubjects','string','toLowerCase','voice','inbound','push','variable','queue','calleridnum','Outbound\x20Call','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Name','calleridname','Call\x20To','destexten','UniqueId','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','Agent\x20Ring','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','outbound','Called\x20Number','Member\x20Name'];(function(_0x1ddb68,_0x37938e){var _0x59c817=function(_0xcc7f47){while(--_0xcc7f47){_0x1ddb68['push'](_0x1ddb68['shift']());}};_0x59c817(++_0x37938e);}(_0xa50a,0x111));var _0xaa50=function(_0x5e4ecd,_0x54f6e3){_0x5e4ecd=_0x5e4ecd-0x0;var _0x2b2c16=_0xa50a[_0x5e4ecd];return _0x2b2c16;};'use strict';exports[_0xaa50('0x0')]=function(_0x2369ec,_0x53511b){var _0x1d3ac1=[{'type':_0xaa50('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x2369ec[_0xaa50('0x2')]()){case _0xaa50('0x3'):switch(_0x53511b[_0xaa50('0x2')]()){case _0xaa50('0x4'):_0x1d3ac1[_0xaa50('0x5')]({'type':_0xaa50('0x6'),'content':'','variableName':_0xaa50('0x7')});_0x1d3ac1[_0xaa50('0x5')]({'type':_0xaa50('0x6'),'content':'','variableName':_0xaa50('0x8')});break;case'outbound':_0x1d3ac1[_0xaa50('0x5')]({'type':_0xaa50('0x1'),'content':_0xaa50('0x9'),'variableName':null});_0x1d3ac1[_0xaa50('0x5')]({'type':'variable','content':'','variableName':'destcalleridnum'});break;}}return _0x1d3ac1;};exports[_0xaa50('0xa')]=function(_0x18b81a,_0x3c6faa){var _0x549b01=[];switch(_0x18b81a['toLowerCase']()){case'voice':switch(_0x3c6faa['toLowerCase']()){case _0xaa50('0x4'):_0x549b01=[{'type':_0xaa50('0x1'),'content':_0xaa50('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0xaa50('0xc'),'content':'','key':'Caller\x20Number','keyType':_0xaa50('0x6'),'variableName':_0xaa50('0x8')},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0xd'),'keyType':_0xaa50('0x6'),'variableName':_0xaa50('0xe')},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0xf'),'keyType':_0xaa50('0x6'),'variableName':_0xaa50('0x10')},{'type':_0xaa50('0xc'),'content':'','key':'Queue','keyType':_0xaa50('0x6'),'variableName':_0xaa50('0x7')},{'type':'keyValue','content':'','key':_0xaa50('0x11'),'keyType':_0xaa50('0x6'),'variableName':'uniqueid'},{'type':'keyValue','content':'','key':_0xaa50('0x12'),'keyType':_0xaa50('0x6'),'variableName':_0xaa50('0x13')},{'type':'string','content':_0xaa50('0x14'),'key':null,'keyType':null,'variableName':null},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x15'),'keyType':_0xaa50('0x6'),'variableName':_0xaa50('0x16')},{'type':'keyValue','content':'','key':_0xaa50('0x17'),'keyType':_0xaa50('0x6'),'variableName':'destcalleridnum'},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x18'),'keyType':'variable','variableName':_0xaa50('0x13')},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x19'),'keyType':'variable','variableName':'agentconnectAt'},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x1a'),'keyType':_0xaa50('0x6'),'variableName':_0xaa50('0x1b')},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x1c'),'keyType':_0xaa50('0x6'),'variableName':_0xaa50('0x1d')},{'type':'keyValue','content':'','key':_0xaa50('0x1e'),'keyType':'variable','variableName':_0xaa50('0x1f')}];break;case _0xaa50('0x20'):_0x549b01=[{'type':_0xaa50('0x1'),'content':_0xaa50('0xb'),'variableName':null},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x21'),'keyType':_0xaa50('0x6'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x22'),'keyType':_0xaa50('0x6'),'keyContent':'','variableName':_0xaa50('0x23')},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x11'),'keyType':_0xaa50('0x6'),'keyContent':'','variableName':_0xaa50('0x24')},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x12'),'keyType':_0xaa50('0x6'),'keyContent':'','variableName':_0xaa50('0x25')},{'type':_0xaa50('0x1'),'content':_0xaa50('0x26')},{'type':'keyValue','content':'','key':_0xaa50('0x27'),'keyType':_0xaa50('0x6'),'keyContent':'','variableName':_0xaa50('0x28')},{'type':_0xaa50('0xc'),'content':'','key':'Complete\x20Time','keyType':_0xaa50('0x6'),'keyContent':'','variableName':_0xaa50('0x29')},{'type':'keyValue','content':'','key':_0xaa50('0x2a'),'keyType':_0xaa50('0x6'),'keyContent':'','variableName':'duration'},{'type':_0xaa50('0xc'),'content':'','key':_0xaa50('0x2b'),'keyType':_0xaa50('0x6'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x549b01;};
\ No newline at end of file
+var _0x344e=['toLowerCase','voice','inbound','push','variable','queue','outbound','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','Duration','getSubjects','string','[xCALLY\x20Ticket]'];(function(_0x22a3de,_0x313c87){var _0x732f76=function(_0x43971e){while(--_0x43971e){_0x22a3de['push'](_0x22a3de['shift']());}};_0x732f76(++_0x313c87);}(_0x344e,0xb1));var _0xe344=function(_0x1b0b64,_0x91ebbe){_0x1b0b64=_0x1b0b64-0x0;var _0x3a1b0a=_0x344e[_0x1b0b64];return _0x3a1b0a;};'use strict';exports[_0xe344('0x0')]=function(_0x3c3479,_0x204e6a){var _0x41ec7f=[{'type':_0xe344('0x1'),'content':_0xe344('0x2'),'variableName':null}];switch(_0x3c3479[_0xe344('0x3')]()){case _0xe344('0x4'):switch(_0x204e6a[_0xe344('0x3')]()){case _0xe344('0x5'):_0x41ec7f[_0xe344('0x6')]({'type':_0xe344('0x7'),'content':'','variableName':_0xe344('0x8')});_0x41ec7f[_0xe344('0x6')]({'type':_0xe344('0x7'),'content':'','variableName':'calleridnum'});break;case _0xe344('0x9'):_0x41ec7f['push']({'type':_0xe344('0x1'),'content':'Outbound\x20Call','variableName':null});_0x41ec7f[_0xe344('0x6')]({'type':_0xe344('0x7'),'content':'','variableName':_0xe344('0xa')});break;}}return _0x41ec7f;};exports[_0xe344('0xb')]=function(_0x537f6a,_0x1a4bdb){var _0x428779=[];switch(_0x537f6a[_0xe344('0x3')]()){case _0xe344('0x4'):switch(_0x1a4bdb[_0xe344('0x3')]()){case _0xe344('0x5'):_0x428779=[{'type':'string','content':_0xe344('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0xe'),'keyType':_0xe344('0x7'),'variableName':_0xe344('0xf')},{'type':_0xe344('0xd'),'content':'','key':'Caller\x20Name','keyType':_0xe344('0x7'),'variableName':_0xe344('0x10')},{'type':'keyValue','content':'','key':_0xe344('0x11'),'keyType':_0xe344('0x7'),'variableName':_0xe344('0x12')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x13'),'keyType':_0xe344('0x7'),'variableName':_0xe344('0x8')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x14'),'keyType':'variable','variableName':_0xe344('0x15')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x16'),'keyType':'variable','variableName':_0xe344('0x17')},{'type':_0xe344('0x1'),'content':_0xe344('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x19'),'keyType':'variable','variableName':_0xe344('0x1a')},{'type':_0xe344('0xd'),'content':'','key':'Agent\x20Number','keyType':'variable','variableName':_0xe344('0xa')},{'type':_0xe344('0x1'),'content':_0xe344('0x1b'),'key':null,'keyType':null,'variableName':null},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x1c'),'keyType':'variable','variableName':_0xe344('0x17')},{'type':'keyValue','content':'','key':_0xe344('0x1d'),'keyType':'variable','variableName':_0xe344('0x1e')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x1f'),'keyType':_0xe344('0x7'),'variableName':_0xe344('0x20')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x21'),'keyType':_0xe344('0x7'),'variableName':_0xe344('0x22')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x23'),'keyType':_0xe344('0x7'),'variableName':_0xe344('0x24')}];break;case'outbound':_0x428779=[{'type':_0xe344('0x1'),'content':_0xe344('0xc'),'variableName':null},{'type':'keyValue','content':'','key':_0xe344('0x25'),'keyType':_0xe344('0x7'),'keyContent':'','variableName':_0xe344('0xa')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x26'),'keyType':_0xe344('0x7'),'keyContent':'','variableName':_0xe344('0x27')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x14'),'keyType':_0xe344('0x7'),'keyContent':'','variableName':_0xe344('0x15')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x16'),'keyType':'variable','keyContent':'','variableName':_0xe344('0x28')},{'type':_0xe344('0x1'),'content':_0xe344('0x1b')},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x29'),'keyType':_0xe344('0x7'),'keyContent':'','variableName':_0xe344('0x2a')},{'type':'keyValue','content':'','key':_0xe344('0x2b'),'keyType':_0xe344('0x7'),'keyContent':'','variableName':'endtime'},{'type':_0xe344('0xd'),'content':'','key':_0xe344('0x2c'),'keyType':_0xe344('0x7'),'keyContent':'','variableName':'duration'},{'type':_0xe344('0xd'),'content':'','key':'Billable\x20Time','keyType':_0xe344('0x7'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x428779;};
\ No newline at end of file
index 26614f0..4ab8dad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x528b=['order','forEach','closed','getClosedOrderClause','DESC','rows','catch','query','clone','body','omit','html','phone','fax','updateUser','lodash','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','then','search','where','fields','user','having','read','tags','checkAccountsRestrictions','group','i.id','ids','tag','countFilteredInteractions','count','length'];(function(_0x8dea46,_0x462cd4){var _0x40add3=function(_0xe4e429){while(--_0xe4e429){_0x8dea46['push'](_0x8dea46['shift']());}};_0x40add3(++_0x462cd4);}(_0x528b,0x1d7));var _0xb528=function(_0x4e25fb,_0x6829b){_0x4e25fb=_0x4e25fb-0x0;var _0x75c97=_0x528b[_0x4e25fb];return _0x75c97;};'use strict';var _=require(_0xb528('0x0'));var sqlUtils=require(_0xb528('0x1'));var utils=require(_0xb528('0x2'));exports[_0xb528('0x3')]=function(_0x4f3f87,_0x3bd67a,_0x310afc,_0xb63e71,_0x35f2df){var _0x41df7a={'count':0x0,'rows':[]};var _0x3a5495=sqlUtils[_0xb528('0x4')](_0x4f3f87,_0x310afc,_0x3bd67a);if(_0x3a5495){return Promise[_0xb528('0x5')](_0x41df7a);}var _0x1516ad=sqlUtils[_0xb528('0x6')](_0x4f3f87);var _0x571fe6={};return Promise[_0xb528('0x5')]()[_0xb528('0x7')](function(){if(_0x3bd67a['search']){return sqlUtils['parseAdvancedSearchFilter'](_0x3bd67a[_0xb528('0x8')],_0x35f2df);}else{return sqlUtils['parseQueryParameters'](_0x4f3f87,_0x3bd67a,_0x35f2df);}})[_0xb528('0x7')](function(_0x70412e){_0x1516ad['where'](_0x70412e['body']);_0x1516ad[_0xb528('0x9')](_0x70412e['contact']);_0x1516ad[_0xb528('0x9')](_0x70412e['default']);_0x1516ad[_0xb528('0x9')](_0x70412e[_0xb528('0xa')]);_0x1516ad[_0xb528('0x9')](_0x70412e['filter']);_0x1516ad[_0xb528('0x9')](_0x70412e[_0xb528('0xb')]);_0x1516ad[_0xb528('0xc')](_0x70412e[_0xb528('0xd')]);_0x571fe6=_0x70412e[_0xb528('0xe')];return sqlUtils[_0xb528('0xf')](_0x4f3f87,_0x310afc,_0x3bd67a);})[_0xb528('0x7')](function(_0x1f0faa){_0x1516ad['where'](_0x1f0faa);_0x1516ad[_0xb528('0x10')](_0xb528('0x11'));var _0x557759=_0x3bd67a[_0xb528('0x8')]?_0x571fe6[_0xb528('0x12')]:_0x3bd67a[_0xb528('0x13')];return sqlUtils[_0xb528('0x14')](_0x1516ad,_0x557759);})[_0xb528('0x7')](function(_0x5494a1){_0x41df7a[_0xb528('0x15')]=_0x5494a1[_0xb528('0x16')];if(_0x41df7a[_0xb528('0x15')]===0x0){return[];}_0x1516ad[_0xb528('0xc')](_0x571fe6['clause']);if(_0xb63e71[_0xb528('0x17')]){_0xb63e71['order'][_0xb528('0x18')](function(_0x21807d){var _0x58ef9e=_0x21807d[0x0]==='contactName'?_0x21807d[0x0]:'i.'+_0x21807d[0x0];_0x1516ad[_0xb528('0x17')](_0x58ef9e,_0x21807d[0x1]==='DESC'?![]:!![]);if(_0x21807d[0x0]===_0xb528('0x19')){var _0x1add65=sqlUtils[_0xb528('0x1a')](_0x4f3f87,_0x3bd67a);_0x1516ad[_0xb528('0x17')](_0x1add65,_0x21807d[0x1]===_0xb528('0x1b')?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0x4f3f87,_0x1516ad,_0x3bd67a,_0xb63e71);})['then'](function(_0x38d564){_0x41df7a[_0xb528('0x1c')]=_0x38d564;return _0x41df7a;})[_0xb528('0x1d')](function(_0x1b5b43){throw _0x1b5b43;});};exports['tracked']=function(_0x9bb85d,_0xd2710){return function(_0x9cda83,_0x3dfdf9,_0x1dffef){var _0xd9b789=_0x9cda83[_0xb528('0xb')];var _0x1d2d19={};var _0x28bd83=_0x9cda83[_0xb528('0x1e')];if(_0x1d2d19){_0x1d2d19=_[_0xb528('0x1f')](_0x9cda83[_0xb528('0x20')]);_0x1d2d19=_[_0xb528('0x21')](_0x1d2d19,[_0xb528('0x20'),_0xb528('0x22'),_0xb528('0x23'),_0xb528('0x24'),'mobile']);}utils[_0xb528('0x25')](_0xd9b789,_0x1d2d19,_0x28bd83,_0x9bb85d,_0xd2710);_0x1dffef(null);};};
\ No newline at end of file
+var _0x8561=['i.id','tag','countFilteredInteractions','length','count','clause','order','forEach','contactName','DESC','closed','getClosedOrderClause','rows','catch','tracked','query','clone','body','omit','html','phone','fax','updateUser','lodash','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','search','parseAdvancedSearchFilter','parseQueryParameters','where','fields','filter','having','read','tags','checkAccountsRestrictions','then','group'];(function(_0x459e81,_0x52aeb0){var _0x4fac6a=function(_0x2880ae){while(--_0x2880ae){_0x459e81['push'](_0x459e81['shift']());}};_0x4fac6a(++_0x52aeb0);}(_0x8561,0xe9));var _0x1856=function(_0x57b8f,_0x46bd03){_0x57b8f=_0x57b8f-0x0;var _0x500dc9=_0x8561[_0x57b8f];return _0x500dc9;};'use strict';var _=require(_0x1856('0x0'));var sqlUtils=require(_0x1856('0x1'));var utils=require(_0x1856('0x2'));exports[_0x1856('0x3')]=function(_0x1b8699,_0x436772,_0xf68aae,_0x47d699,_0x264716){var _0x2cb585={'count':0x0,'rows':[]};var _0x41a2d0=sqlUtils[_0x1856('0x4')](_0x1b8699,_0xf68aae,_0x436772);if(_0x41a2d0){return Promise[_0x1856('0x5')](_0x2cb585);}var _0x4d50d9=sqlUtils[_0x1856('0x6')](_0x1b8699);var _0x5ae7d8={};return Promise[_0x1856('0x5')]()['then'](function(){if(_0x436772[_0x1856('0x7')]){return sqlUtils[_0x1856('0x8')](_0x436772['search'],_0x264716);}else{return sqlUtils[_0x1856('0x9')](_0x1b8699,_0x436772,_0x264716);}})['then'](function(_0x189618){_0x4d50d9[_0x1856('0xa')](_0x189618['body']);_0x4d50d9['where'](_0x189618['contact']);_0x4d50d9['where'](_0x189618['default']);_0x4d50d9[_0x1856('0xa')](_0x189618[_0x1856('0xb')]);_0x4d50d9[_0x1856('0xa')](_0x189618[_0x1856('0xc')]);_0x4d50d9[_0x1856('0xa')](_0x189618['user']);_0x4d50d9[_0x1856('0xd')](_0x189618[_0x1856('0xe')]);_0x5ae7d8=_0x189618[_0x1856('0xf')];return sqlUtils[_0x1856('0x10')](_0x1b8699,_0xf68aae,_0x436772);})[_0x1856('0x11')](function(_0x41d8fa){_0x4d50d9[_0x1856('0xa')](_0x41d8fa);_0x4d50d9[_0x1856('0x12')](_0x1856('0x13'));var _0x389b52=_0x436772[_0x1856('0x7')]?_0x5ae7d8['ids']:_0x436772[_0x1856('0x14')];return sqlUtils[_0x1856('0x15')](_0x4d50d9,_0x389b52);})[_0x1856('0x11')](function(_0x1f6dd0){_0x2cb585['count']=_0x1f6dd0[_0x1856('0x16')];if(_0x2cb585[_0x1856('0x17')]===0x0){return[];}_0x4d50d9['having'](_0x5ae7d8[_0x1856('0x18')]);if(_0x47d699[_0x1856('0x19')]){_0x47d699[_0x1856('0x19')][_0x1856('0x1a')](function(_0x40c5ce){var _0xa54200=_0x40c5ce[0x0]===_0x1856('0x1b')?_0x40c5ce[0x0]:'i.'+_0x40c5ce[0x0];_0x4d50d9[_0x1856('0x19')](_0xa54200,_0x40c5ce[0x1]===_0x1856('0x1c')?![]:!![]);if(_0x40c5ce[0x0]===_0x1856('0x1d')){var _0x149484=sqlUtils[_0x1856('0x1e')](_0x1b8699,_0x436772);_0x4d50d9[_0x1856('0x19')](_0x149484,_0x40c5ce[0x1]==='DESC'?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0x1b8699,_0x4d50d9,_0x436772,_0x47d699);})['then'](function(_0x26c196){_0x2cb585[_0x1856('0x1f')]=_0x26c196;return _0x2cb585;})[_0x1856('0x20')](function(_0x31eaab){throw _0x31eaab;});};exports[_0x1856('0x21')]=function(_0x2149f3,_0x4e3b0b){return function(_0x1e11a3,_0x19ae04,_0xaacf7e){var _0x4ea129=_0x1e11a3['user'];var _0x73a9f3={};var _0x1d3c21=_0x1e11a3[_0x1856('0x22')];if(_0x73a9f3){_0x73a9f3=_[_0x1856('0x23')](_0x1e11a3[_0x1856('0x24')]);_0x73a9f3=_[_0x1856('0x25')](_0x73a9f3,[_0x1856('0x24'),_0x1856('0x26'),_0x1856('0x27'),_0x1856('0x28'),'mobile']);}utils[_0x1856('0x29')](_0x4ea129,_0x73a9f3,_0x1d3c21,_0x2149f3,_0x4e3b0b);_0xaacf7e(null);};};
\ No newline at end of file
index fdb26a6..ae804e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9e1=['attributes','Account.key','a.mandatoryDisposition','a.email','Account.email','contactName','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.ContactId','i.MailAccountId','i.UserId','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','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.mobile','Contact.mobile','c.fax','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','limit','offset','groupBy','Setting','enableEmailPreview','all','COUNT(*)','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','t.id\x20IN\x20?','lodash','squel','../parsers/advancedSearch','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','agent','search','select','field','tools_tags','user_has_','_interactions','u.id','u.fullname','users','u.id\x20=\x20ui.UserId','length','where','ui.','\x20IN\x20?','map','getInteractionFK','from','interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','accounts','a.id\x20=\x20i.','me.','it.','\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','includes','fax','openchannel','i.from\x20LIKE\x20?','mail','isEmail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','sqlOperator','conditions','find','name','buildExpression','type','text','value','end','unreadMessages','and','Contact','operator','$substring','split','contact','ContactId','tags','clause','ids','User','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','plainBody','body','keys','compact','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','resolve','then','read','filter','get','chat','Accounts','role','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','unshift','i.substatus','shift','join','capitalize','Interaction','Sequelize','QueryTypes','SELECT','sequelize','query','toString','keyBy','merge','fields'];(function(_0x557741,_0x43d009){var _0x4cd544=function(_0xde56cc){while(--_0xde56cc){_0x557741['push'](_0x557741['shift']());}};_0x4cd544(++_0x43d009);}(_0xc9e1,0x1f3));var _0x1c9e=function(_0xa65e22,_0x4a5c10){_0xa65e22=_0xa65e22-0x0;var _0x2869ba=_0xc9e1[_0xa65e22];return _0x2869ba;};'use strict';var _=require(_0x1c9e('0x0'));var squel=require(_0x1c9e('0x1'));var as=require(_0x1c9e('0x2'));var qs=require('../parsers/qs');var updateInteraction=require(_0x1c9e('0x3'))[_0x1c9e('0x4')];var utils=require(_0x1c9e('0x5'));var db=require(_0x1c9e('0x6'))['db'];function skipInteractionsQuery(_0x234af1,_0x559e43,_0x5a0783){var _0x4c610e=![];var _0x29905b=utils[_0x1c9e('0x7')](_0x234af1);if(_0x559e43['role']===_0x1c9e('0x8')&&!_0x5a0783[_0x1c9e('0x9')]&&!_0x5a0783[_0x29905b]){_0x4c610e=!![];}return _0x4c610e;}function getTagsQuery(){return squel[_0x1c9e('0xa')]()[_0x1c9e('0xb')]('id')['field']('name')[_0x1c9e('0xb')]('color')['from'](_0x1c9e('0xc'));}function getUsersQuery(_0x56fba6,_0x1b73fa){var _0xb6b56a=utils['getInteractionFK'](_0x56fba6);var _0x325f79=_0x1c9e('0xd')+_0x56fba6+_0x1c9e('0xe');var _0x16db1c=squel['select']()[_0x1c9e('0xb')](_0x1c9e('0xf'))[_0x1c9e('0xb')](_0x1c9e('0x10'))[_0x1c9e('0xb')]('ui.'+_0xb6b56a)['from'](_0x325f79,'ui')['left_join'](_0x1c9e('0x11'),'u',_0x1c9e('0x12'));if(_0x1b73fa[_0x1c9e('0x13')]>0x0){_0x16db1c[_0x1c9e('0x14')](_0x1c9e('0x15')+_0xb6b56a+_0x1c9e('0x16'),_[_0x1c9e('0x17')](_0x1b73fa,'id'));}return _0x16db1c;}function getInteractionsQuery(_0x363bd2){var _0x2ba33f=utils['getInteractionsTables'](_0x363bd2);var _0x17aa22=utils['getAccountFK'](_0x363bd2);var _0x3c213a=utils[_0x1c9e('0x18')](_0x363bd2);return squel[_0x1c9e('0xa')]()[_0x1c9e('0x19')](_0x2ba33f[_0x1c9e('0x1a')],'i')[_0x1c9e('0x1b')](_0x1c9e('0x1c'),'c',_0x1c9e('0x1d'))[_0x1c9e('0x1b')](_0x1c9e('0x11'),'o',_0x1c9e('0x1e'))['left_join'](_0x2ba33f[_0x1c9e('0x1f')],'a',_0x1c9e('0x20')+_0x17aa22)['left_join'](_0x2ba33f['messages'],'me',_0x1c9e('0x21')+_0x3c213a+'\x20=\x20i.id')['left_join'](_0x2ba33f['interactionsTags'],'it',_0x1c9e('0x22')+_0x3c213a+_0x1c9e('0x23'))[_0x1c9e('0x1b')]('tools_tags','t',_0x1c9e('0x24'));}function getSqlClauses(){var _0x48bd61={'body':squel[_0x1c9e('0x25')](),'contact':squel[_0x1c9e('0x25')](),'default':squel['expr'](),'fields':squel['expr'](),'filter':squel[_0x1c9e('0x25')](),'read':squel['expr'](),'tags':{'clause':squel[_0x1c9e('0x25')](),'ids':null},'user':squel[_0x1c9e('0x25')]()};return _0x48bd61;}function parseTagParameter(_0x138656){var _0x3ad2fe=squel[_0x1c9e('0x25')]();if(_0x138656){var _0x349c15=utils[_0x1c9e('0x26')](_0x138656);_0x349c15[_0x1c9e('0x27')](function(_0x5402a6){_0x3ad2fe['or'](_0x1c9e('0x28'),'%,'+_0x5402a6+',%');});}return _0x3ad2fe;}function parseReadParameter(_0x1d9eff){var _0x393e42='';if(_0x1d9eff){_0x393e42='unreadMessages\x20{OPERATOR}\x200';if(_0x1d9eff==='1'){_0x393e42=_0x393e42[_0x1c9e('0x29')](_0x1c9e('0x2a'),'=');}else{_0x393e42=_0x393e42[_0x1c9e('0x29')](_0x1c9e('0x2a'),'>');}}return _0x393e42;}function parseSearchFilter(_0x256444,_0x3887f6){var _0x3ca441=squel[_0x1c9e('0x25')]();if(_0x3887f6){var _0x4b6b23=_0x3887f6[_0x1c9e('0x29')]('\x5c','\x5c\x5c')[_0x1c9e('0x29')](/'/g,'\x27\x27');if(qs[_0x1c9e('0x2b')](_0x4b6b23)){_0x3ca441['or'](_0x1c9e('0x2c'),_0x4b6b23+'%');if([_0x1c9e('0x2d'),'whatsapp'][_0x1c9e('0x2e')](_0x256444)){_0x3ca441['or']('i.phone\x20LIKE\x20?',_0x4b6b23+'%');}else if(_0x256444===_0x1c9e('0x2f')){_0x3ca441['or']('i.fax\x20LIKE\x20?',_0x4b6b23+'%');}else if(_0x256444===_0x1c9e('0x30')){_0x3ca441['or'](_0x1c9e('0x31'),_0x4b6b23+'%');}}else if(_0x256444===_0x1c9e('0x32')&&qs[_0x1c9e('0x33')](_0x4b6b23)){_0x3ca441['or']('c.email\x20LIKE\x20?',_0x4b6b23+'%');}else{if(_0x256444===_0x1c9e('0x32')){_0x3ca441['or'](_0x1c9e('0x34'),qs[_0x1c9e('0x35')](_0x4b6b23,!![]))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x1c9e('0x35')](_0x4b6b23));}else if(_0x256444!==_0x1c9e('0x2f')){_0x3ca441['or'](_0x1c9e('0x36'),qs[_0x1c9e('0x35')](_0x4b6b23));}_0x3ca441['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x4b6b23,!![]),null);}}return _0x3ca441;}function parseAdvancedSearchFilter(_0x290d11,_0x290da0){var _0x13dd88=getSqlClauses();var _0x143610=as['parseSearch'](_0x290d11);var _0x30daf7=_0x143610[_0x1c9e('0x37')];for(var _0x583f9c=0x0;_0x583f9c<_0x143610[_0x1c9e('0x38')]['length'];_0x583f9c++){var _0x418833=_0x143610['conditions'][_0x583f9c];var _0x2f1338='i';var _0x37344e=_[_0x1c9e('0x39')](_0x290da0,[_0x1c9e('0x3a'),_0x418833[_0x1c9e('0xb')]]);if(_0x37344e){var _0x2f1232=as[_0x1c9e('0x3b')](_0x2f1338,_0x37344e[_0x1c9e('0x3c')],_0x418833);_0x13dd88['default'][_0x30daf7](_0x2f1232[_0x1c9e('0x3d')],_0x2f1232[_0x1c9e('0x3e')]['start'],_0x2f1232[_0x1c9e('0x3e')][_0x1c9e('0x3f')]);}else{switch(_0x418833[_0x1c9e('0xb')]){case _0x1c9e('0x40'):var _0x250f07=parseReadParameter(_0x418833[_0x1c9e('0x3e')]);_0x13dd88['read'][_0x1c9e('0x41')](_0x250f07);break;case _0x1c9e('0x42'):if(_0x418833[_0x1c9e('0x43')]===_0x1c9e('0x44')){if(_0x418833[_0x1c9e('0x3e')][_0x1c9e('0x45')]('\x20')[_0x1c9e('0x13')]>0x1){_0x13dd88[_0x1c9e('0x46')][_0x30daf7]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x1c9e('0x35')](_0x418833[_0x1c9e('0x3e')],!![]),null);}else{var _0x4dd5d7='%'+_0x418833['value']+'%';_0x13dd88['contact'][_0x30daf7]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x4dd5d7,_0x4dd5d7,_0x4dd5d7);}}else{_0x37344e=_[_0x1c9e('0x39')](_0x290da0,[_0x1c9e('0x3a'),_0x1c9e('0x47')]);_0x418833[_0x1c9e('0xb')]='ContactId';_0x2f1232=as[_0x1c9e('0x3b')](_0x2f1338,_0x37344e['type'],_0x418833);_0x13dd88['contact'][_0x30daf7](_0x2f1232[_0x1c9e('0x3d')],_0x2f1232[_0x1c9e('0x3e')]['start'],_0x2f1232[_0x1c9e('0x3e')]['end']);}break;case'Tag':var _0x3f3783=_0x418833[_0x1c9e('0x3e')][_0x1c9e('0x45')](',')['map'](function(_0x4acfd3){return Number(_0x4acfd3);});var _0x59dd31=parseTagParameter(_0x3f3783);_0x13dd88[_0x1c9e('0x48')][_0x1c9e('0x49')][_0x1c9e('0x41')](_0x59dd31);_0x13dd88[_0x1c9e('0x48')][_0x1c9e('0x4a')]=_0x3f3783;break;case _0x1c9e('0x4b'):if(_0x418833[_0x1c9e('0x43')]==='$substring'){_0x13dd88[_0x1c9e('0x4c')][_0x30daf7](_0x1c9e('0x4d'),'%'+_0x418833[_0x1c9e('0x3e')]+'%',null);}else{_0x37344e=_[_0x1c9e('0x39')](_0x290da0,[_0x1c9e('0x3a'),_0x1c9e('0x4e')]);_0x418833['field']=_0x1c9e('0x4e');_0x2f1232=as[_0x1c9e('0x3b')](_0x2f1338,_0x37344e[_0x1c9e('0x3c')],_0x418833);_0x13dd88['user'][_0x30daf7](_0x2f1232['text'],_0x2f1232[_0x1c9e('0x3e')]['start'],_0x2f1232[_0x1c9e('0x3e')][_0x1c9e('0x3f')]);}break;case'body':case _0x1c9e('0x4f'):_0x2f1232=as[_0x1c9e('0x3b')]('me',null,_0x418833);_0x13dd88[_0x1c9e('0x50')][_0x30daf7](_0x2f1232['text'],_0x2f1232[_0x1c9e('0x3e')]['start'],_0x2f1232['value'][_0x1c9e('0x3f')]);break;}}}return _0x13dd88;}function parseModelFields(_0x41b7f7,_0x2786da,_0x1ec62d){var _0x92619e=utils[_0x1c9e('0x7')](_0x41b7f7);var _0x4b3a1b=squel[_0x1c9e('0x25')]();var _0x5aa71e=_(_0x2786da)[_0x1c9e('0x51')]()[_0x1c9e('0x17')](function(_0x191740){return _['some'](_0x1ec62d,[_0x1c9e('0x3a'),_0x191740])?_0x191740:undefined;})[_0x1c9e('0x52')]()[_0x1c9e('0x3e')]();if(_0x5aa71e['length']>0x0){_0x5aa71e['forEach'](function(_0x699bd8){if(_0x699bd8===_0x92619e){_0x4b3a1b[_0x1c9e('0x41')]('i.'+_0x92619e+_0x1c9e('0x16'),[][_0x1c9e('0x53')](_0x2786da[_0x699bd8]));}else if(_0x699bd8===_0x1c9e('0x54')){var _0x1ceb45=JSON['parse'](_0x2786da[_0x699bd8])[_0x1c9e('0x55')];var _0x4d6542=JSON[_0x1c9e('0x56')](_0x2786da[_0x699bd8])[_0x1c9e('0x57')];_0x4b3a1b[_0x1c9e('0x41')](_0x1c9e('0x58'),_0x1ceb45,_0x4d6542);}else{if(_0x2786da[_0x699bd8]==='null'){_0x4b3a1b['and']('i.'+_0x699bd8+_0x1c9e('0x59'));}else{_0x4b3a1b['and']('i.'+_0x699bd8+'\x20=\x20?',_0x2786da[_0x699bd8]);}}});}return _0x4b3a1b;}function parseQueryParameters(_0x2dbba1,_0x2cee00,_0x102073){var _0xe4a380=getSqlClauses();return Promise[_0x1c9e('0x5a')]()[_0x1c9e('0x5b')](function(){return parseModelFields(_0x2dbba1,_0x2cee00,_0x102073);})[_0x1c9e('0x5b')](function(_0x41357a){_0xe4a380['fields'][_0x1c9e('0x41')](_0x41357a);return parseReadParameter(_0x2cee00['read']);})[_0x1c9e('0x5b')](function(_0x106a1c){_0xe4a380[_0x1c9e('0x5c')][_0x1c9e('0x41')](_0x106a1c);return parseTagParameter(_0x2cee00['tag']);})['then'](function(_0xdbeb33){_0xe4a380['tags'][_0x1c9e('0x49')][_0x1c9e('0x41')](_0xdbeb33);return parseSearchFilter(_0x2dbba1,_0x2cee00[_0x1c9e('0x5d')]);})[_0x1c9e('0x5b')](function(_0x12b7fa){_0xe4a380[_0x1c9e('0x5d')]=_0x12b7fa;return _0xe4a380;});}function checkAccountsRestrictions(_0x1a68d7,_0x2be690,_0x4dc847){var _0x79cbfc=utils['getAccountFK'](_0x1a68d7);var _0x458c03=_0x1c9e('0x5e')+_['capitalize'](_0x1a68d7)+(_0x1a68d7===_0x1c9e('0x5f')?'Websites':_0x1c9e('0x60'));var _0x4fa7a5=squel['expr']();return Promise['resolve']()[_0x1c9e('0x5b')](function(){if(_0x4dc847[_0x1c9e('0x9')]&&_0x2be690[_0x1c9e('0x61')]==='agent'){return _0x2be690[_0x458c03]({'attributes':['id'],'raw':!![]});}})['then'](function(_0xedcd0f){if(_0xedcd0f){if(_0xedcd0f[_0x1c9e('0x13')]===0x0){_0x4fa7a5[_0x1c9e('0x41')]('i.'+_0x79cbfc+_0x1c9e('0x59'));}else{_0x4fa7a5[_0x1c9e('0x41')]('i.'+_0x79cbfc+'\x20IN\x20?',_[_0x1c9e('0x17')](_0xedcd0f,'id'));}}else if(!_0x4dc847[_0x79cbfc]){_0x4fa7a5['and']('i.'+_0x79cbfc+_0x1c9e('0x62'));}})['then'](function(){return _0x4fa7a5;});}function getClosedOrderClause(_0x375624,_0x300105){var _0x18adeb='';var _0x2e956a=[_0x1c9e('0x63'),_0x1c9e('0x64'),_0x1c9e('0x65')];if(_0x375624===_0x1c9e('0x32')){_0x2e956a[_0x1c9e('0x66')](_0x1c9e('0x67'));}if(_0x300105['closed']==='0'&&_0x375624===_0x1c9e('0x32')){_0x18adeb='i.substatus';}else{if(_0x300105['closed']==='1'){_0x2e956a[_0x1c9e('0x68')]();}_0x18adeb='CONCAT_WS(\x27\x27,\x20'+_0x2e956a[_0x1c9e('0x69')](',\x20')+')';}return _0x18adeb;}function getFilteredInteractions(_0x55b638,_0x4554b4,_0x396d05,_0x4e2fc2){var _0x442a1c=utils[_0x1c9e('0x18')](_0x55b638);var _0x54f521=_[_0x1c9e('0x6a')](_0x55b638)+_0x1c9e('0x6b');var _0x2bb789=[];var _0x4cfefa=getTagsQuery();var _0xc8fa52={'type':db[_0x1c9e('0x6c')][_0x1c9e('0x6d')][_0x1c9e('0x6e')],'raw':!![]};var _0x312dca=[];var _0x5e2ca4=[];return db[_0x1c9e('0x6f')][_0x1c9e('0x70')](_0x4cfefa[_0x1c9e('0x71')](),_0xc8fa52)['then'](function(_0xb348f5){_0x2bb789=_[_0x1c9e('0x72')](_0xb348f5,'id');_0xc8fa52=_[_0x1c9e('0x73')](_0xc8fa52,{'model':db[_0x54f521],'mapToModel':!![],'nest':!![]});if(_0x396d05[_0x1c9e('0x74')]){_0x4e2fc2[_0x1c9e('0x75')][_0x1c9e('0x27')](function(_0x2830a2){_0x4554b4[_0x1c9e('0xb')]('i.'+_0x2830a2);});}else{_0x4554b4[_0x1c9e('0xb')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x1c9e('0x40'));_0x4554b4['field']('a.key',_0x1c9e('0x76'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x77'),'Account.mandatoryDisposition');if(_0x55b638==='mail'){_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x78'),_0x1c9e('0x79'));_0x4554b4[_0x1c9e('0xb')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_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',_0x1c9e('0x7a'));_0x4554b4[_0x1c9e('0xb')]('i.id');_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x7b'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x7c'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x7d'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x7e'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x7f'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x80'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x81'));_0x4554b4[_0x1c9e('0xb')]('i.subject');_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x65'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x64'));_0x4554b4[_0x1c9e('0xb')]('i.thirdDisposition');_0x4554b4['field'](_0x1c9e('0x67'));_0x4554b4[_0x1c9e('0xb')]('i.to');_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x82'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x83'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x84'));}else if(_0x55b638===_0x1c9e('0x30')){_0x4554b4['field'](_0x1c9e('0x85'),_0x1c9e('0x7a'));}else{_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x86'),_0x1c9e('0x7a'));}if(_0x55b638!==_0x1c9e('0x32')){_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x87'));}_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x88'),'Contact.firstName');_0x4554b4['field'](_0x1c9e('0x89'),_0x1c9e('0x8a'));_0x4554b4[_0x1c9e('0xb')]('c.email','Contact.email');_0x4554b4['field']('c.phone','Contact.phone');_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x8b'),_0x1c9e('0x8c'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x8d'),'Contact.fax');_0x4554b4['field']('o.fullname','Owner.fullname');_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x8e'),_0x1c9e('0x8f'));_0x4554b4[_0x1c9e('0xb')](_0x1c9e('0x90'),'TagIds');}if(_0x4e2fc2[_0x1c9e('0x91')]){_0x4554b4[_0x1c9e('0x91')](_0x4e2fc2[_0x1c9e('0x91')]);}if(_0x4e2fc2[_0x1c9e('0x92')]){_0x4554b4[_0x1c9e('0x92')](_0x4e2fc2['offset']);}return db['sequelize'][_0x1c9e('0x70')](_0x4554b4[_0x1c9e('0x71')](),_0xc8fa52);})[_0x1c9e('0x5b')](function(_0x242c68){_0x312dca=_0x242c68;var _0x3c6a3e=getUsersQuery(_0x55b638,_0x312dca);return db[_0x1c9e('0x6f')][_0x1c9e('0x70')](_0x3c6a3e[_0x1c9e('0x71')](),_0xc8fa52);})[_0x1c9e('0x5b')](function(_0x5c8651){_0x5e2ca4=_[_0x1c9e('0x93')](_0x5c8651,_0x442a1c);if(_0x55b638==='mail'){return db[_0x1c9e('0x94')]['findOne']({'attributes':[_0x1c9e('0x95')],'raw':!![]});}})['then'](function(_0x10bea9){var _0x246908=_0x10bea9?_0x10bea9[_0x1c9e('0x95')]:undefined;var _0x30c391=_0x312dca[_0x1c9e('0x17')](function(_0x5cc26e){return updateInteraction(_0x5cc26e,_0x2bb789,_0x5e2ca4,_0x246908);});return Promise[_0x1c9e('0x96')](_0x30c391);});}function countFilteredInteractions(_0x114440,_0x5cd1aa){var _0x4d5aff=_0x114440['clone']();_0x4d5aff[_0x1c9e('0xb')](_0x1c9e('0x97'));_0x4d5aff['field'](_0x1c9e('0x98'),_0x1c9e('0x40'));var _0x325556=utils['getSelectedTags'](_0x5cd1aa);if(!_['isEmpty'](_0x325556)){_0x4d5aff[_0x1c9e('0x14')](_0x1c9e('0x99'),_0x325556);}var _0x4f7cc2={'type':db[_0x1c9e('0x6c')][_0x1c9e('0x6d')]['SELECT'],'raw':!![]};return db[_0x1c9e('0x6f')][_0x1c9e('0x70')](_0x4d5aff[_0x1c9e('0x71')](),_0x4f7cc2);}module['exports']={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0x8745=['u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','map','getInteractionsTables','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','accounts','a.id\x20=\x20i.','messages','me.','\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','forEach','unreadMessages\x20{OPERATOR}\x200','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','openchannel','isEmail','c.email\x20LIKE\x20?','mail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','length','conditions','find','name','buildExpression','default','text','value','start','end','unreadMessages','operator','$substring','split','contact','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','Tag','tags','clause','and','ids','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','user','plainBody','keys','some','compact','\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','then','fields','read','tag','filter','get','Accounts','resolve','\x20IS\x20NULL','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.substatus','closed','shift','join','capitalize','Interaction','Sequelize','QueryTypes','SELECT','sequelize','query','toString','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_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.id','i.createdAt','i.updatedAt','i.closedAt','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.MailAccountId','i.UserId','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','Contact.lastName','c.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','enableEmailPreview','clone','COUNT(*)','getSelectedTags','where','t.id\x20IN\x20?','exports','squel','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','role','agent','search','select','field','color','from','tools_tags','getInteractionFK','user_has_','_interactions','u.id'];(function(_0x2aa785,_0x541b5b){var _0x1dc83c=function(_0x18e93a){while(--_0x18e93a){_0x2aa785['push'](_0x2aa785['shift']());}};_0x1dc83c(++_0x541b5b);}(_0x8745,0x1d1));var _0x5874=function(_0x24b4ab,_0x19d58d){_0x24b4ab=_0x24b4ab-0x0;var _0x3f09d4=_0x8745[_0x24b4ab];return _0x3f09d4;};'use strict';var _=require('lodash');var squel=require(_0x5874('0x0'));var as=require('../parsers/advancedSearch');var qs=require('../parsers/qs');var updateInteraction=require(_0x5874('0x1'))[_0x5874('0x2')];var utils=require(_0x5874('0x3'));var db=require(_0x5874('0x4'))['db'];function skipInteractionsQuery(_0x5cd3cf,_0x577de3,_0x4d98eb){var _0xd0737b=![];var _0x48f0cb=utils[_0x5874('0x5')](_0x5cd3cf);if(_0x577de3[_0x5874('0x6')]===_0x5874('0x7')&&!_0x4d98eb[_0x5874('0x8')]&&!_0x4d98eb[_0x48f0cb]){_0xd0737b=!![];}return _0xd0737b;}function getTagsQuery(){return squel[_0x5874('0x9')]()[_0x5874('0xa')]('id')['field']('name')[_0x5874('0xa')](_0x5874('0xb'))[_0x5874('0xc')](_0x5874('0xd'));}function getUsersQuery(_0x58d563,_0x254ae9){var _0x195d9b=utils[_0x5874('0xe')](_0x58d563);var _0x4f895b=_0x5874('0xf')+_0x58d563+_0x5874('0x10');var _0x12251b=squel['select']()['field'](_0x5874('0x11'))[_0x5874('0xa')](_0x5874('0x12'))['field'](_0x5874('0x13')+_0x195d9b)[_0x5874('0xc')](_0x4f895b,'ui')[_0x5874('0x14')](_0x5874('0x15'),'u',_0x5874('0x16'));if(_0x254ae9['length']>0x0){_0x12251b['where'](_0x5874('0x13')+_0x195d9b+'\x20IN\x20?',_[_0x5874('0x17')](_0x254ae9,'id'));}return _0x12251b;}function getInteractionsQuery(_0x14f26b){var _0x1292e5=utils[_0x5874('0x18')](_0x14f26b);var _0x4897ef=utils['getAccountFK'](_0x14f26b);var _0x63f49f=utils[_0x5874('0xe')](_0x14f26b);return squel[_0x5874('0x9')]()[_0x5874('0xc')](_0x1292e5['interactions'],'i')[_0x5874('0x14')](_0x5874('0x19'),'c',_0x5874('0x1a'))[_0x5874('0x14')](_0x5874('0x15'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x1292e5[_0x5874('0x1b')],'a',_0x5874('0x1c')+_0x4897ef)[_0x5874('0x14')](_0x1292e5[_0x5874('0x1d')],'me',_0x5874('0x1e')+_0x63f49f+_0x5874('0x1f'))['left_join'](_0x1292e5['interactionsTags'],'it','it.'+_0x63f49f+_0x5874('0x1f'))[_0x5874('0x14')](_0x5874('0xd'),'t',_0x5874('0x20'));}function getSqlClauses(){var _0x204e80={'body':squel['expr'](),'contact':squel[_0x5874('0x21')](),'default':squel[_0x5874('0x21')](),'fields':squel[_0x5874('0x21')](),'filter':squel['expr'](),'read':squel[_0x5874('0x21')](),'tags':{'clause':squel[_0x5874('0x21')](),'ids':null},'user':squel['expr']()};return _0x204e80;}function parseTagParameter(_0x526fb4){var _0x13331c=squel[_0x5874('0x21')]();if(_0x526fb4){var _0x59c8d1=utils['getSelectedTags'](_0x526fb4);_0x59c8d1[_0x5874('0x22')](function(_0x591d4d){_0x13331c['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x591d4d+',%');});}return _0x13331c;}function parseReadParameter(_0x5bd79f){var _0x14d3a7='';if(_0x5bd79f){_0x14d3a7=_0x5874('0x23');if(_0x5bd79f==='1'){_0x14d3a7=_0x14d3a7['replace'](_0x5874('0x24'),'=');}else{_0x14d3a7=_0x14d3a7['replace'](_0x5874('0x24'),'>');}}return _0x14d3a7;}function parseSearchFilter(_0x5a1d1b,_0x9e7474){var _0x2f1096=squel[_0x5874('0x21')]();if(_0x9e7474){var _0x55f2ec=_0x9e7474['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x5874('0x25')](_0x55f2ec)){_0x2f1096['or'](_0x5874('0x26'),_0x55f2ec+'%');if([_0x5874('0x27'),_0x5874('0x28')][_0x5874('0x29')](_0x5a1d1b)){_0x2f1096['or'](_0x5874('0x2a'),_0x55f2ec+'%');}else if(_0x5a1d1b===_0x5874('0x2b')){_0x2f1096['or']('i.fax\x20LIKE\x20?',_0x55f2ec+'%');}else if(_0x5a1d1b===_0x5874('0x2c')){_0x2f1096['or']('i.from\x20LIKE\x20?',_0x55f2ec+'%');}}else if(_0x5a1d1b==='mail'&&qs[_0x5874('0x2d')](_0x55f2ec)){_0x2f1096['or'](_0x5874('0x2e'),_0x55f2ec+'%');}else{if(_0x5a1d1b===_0x5874('0x2f')){_0x2f1096['or'](_0x5874('0x30'),qs[_0x5874('0x31')](_0x55f2ec,!![]))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x5874('0x31')](_0x55f2ec));}else if(_0x5a1d1b!=='fax'){_0x2f1096['or'](_0x5874('0x32'),qs[_0x5874('0x31')](_0x55f2ec));}_0x2f1096['or'](_0x5874('0x33'),qs[_0x5874('0x31')](_0x55f2ec,!![]),null);}}return _0x2f1096;}function parseAdvancedSearchFilter(_0x400df5,_0x3e915b){var _0x317689=getSqlClauses();var _0xb30dcf=as[_0x5874('0x34')](_0x400df5);var _0x4ff737=_0xb30dcf[_0x5874('0x35')];for(var _0x30418d=0x0;_0x30418d<_0xb30dcf['conditions'][_0x5874('0x36')];_0x30418d++){var _0xc96816=_0xb30dcf[_0x5874('0x37')][_0x30418d];var _0x2f0364='i';var _0x2f80e3=_[_0x5874('0x38')](_0x3e915b,[_0x5874('0x39'),_0xc96816[_0x5874('0xa')]]);if(_0x2f80e3){var _0x271452=as[_0x5874('0x3a')](_0x2f0364,_0x2f80e3['type'],_0xc96816);_0x317689[_0x5874('0x3b')][_0x4ff737](_0x271452[_0x5874('0x3c')],_0x271452[_0x5874('0x3d')][_0x5874('0x3e')],_0x271452[_0x5874('0x3d')][_0x5874('0x3f')]);}else{switch(_0xc96816[_0x5874('0xa')]){case _0x5874('0x40'):var _0x31abc3=parseReadParameter(_0xc96816[_0x5874('0x3d')]);_0x317689['read']['and'](_0x31abc3);break;case'Contact':if(_0xc96816[_0x5874('0x41')]===_0x5874('0x42')){if(_0xc96816[_0x5874('0x3d')][_0x5874('0x43')]('\x20')[_0x5874('0x36')]>0x1){_0x317689[_0x5874('0x44')][_0x4ff737]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x5874('0x31')](_0xc96816[_0x5874('0x3d')],!![]),null);}else{var _0x524357='%'+_0xc96816[_0x5874('0x3d')]+'%';_0x317689[_0x5874('0x44')][_0x4ff737](_0x5874('0x45'),_0x524357,_0x524357,_0x524357);}}else{_0x2f80e3=_[_0x5874('0x38')](_0x3e915b,[_0x5874('0x39'),_0x5874('0x46')]);_0xc96816[_0x5874('0xa')]='ContactId';_0x271452=as[_0x5874('0x3a')](_0x2f0364,_0x2f80e3['type'],_0xc96816);_0x317689[_0x5874('0x44')][_0x4ff737](_0x271452[_0x5874('0x3c')],_0x271452[_0x5874('0x3d')][_0x5874('0x3e')],_0x271452['value']['end']);}break;case _0x5874('0x47'):var _0x38ca53=_0xc96816[_0x5874('0x3d')][_0x5874('0x43')](',')['map'](function(_0x1e2265){return Number(_0x1e2265);});var _0x46a668=parseTagParameter(_0x38ca53);_0x317689[_0x5874('0x48')][_0x5874('0x49')][_0x5874('0x4a')](_0x46a668);_0x317689['tags'][_0x5874('0x4b')]=_0x38ca53;break;case'User':if(_0xc96816[_0x5874('0x41')]===_0x5874('0x42')){_0x317689['user'][_0x4ff737](_0x5874('0x4c'),'%'+_0xc96816[_0x5874('0x3d')]+'%',null);}else{_0x2f80e3=_[_0x5874('0x38')](_0x3e915b,[_0x5874('0x39'),_0x5874('0x4d')]);_0xc96816[_0x5874('0xa')]='UserId';_0x271452=as[_0x5874('0x3a')](_0x2f0364,_0x2f80e3['type'],_0xc96816);_0x317689[_0x5874('0x4e')][_0x4ff737](_0x271452['text'],_0x271452[_0x5874('0x3d')][_0x5874('0x3e')],_0x271452[_0x5874('0x3d')][_0x5874('0x3f')]);}break;case'body':case _0x5874('0x4f'):_0x271452=as['buildExpression']('me',null,_0xc96816);_0x317689['body'][_0x4ff737](_0x271452[_0x5874('0x3c')],_0x271452[_0x5874('0x3d')][_0x5874('0x3e')],_0x271452[_0x5874('0x3d')][_0x5874('0x3f')]);break;}}}return _0x317689;}function parseModelFields(_0x1013d7,_0x5068b9,_0x4b59bb){var _0xbd0015=utils[_0x5874('0x5')](_0x1013d7);var _0x70ceb5=squel['expr']();var _0x41c013=_(_0x5068b9)[_0x5874('0x50')]()[_0x5874('0x17')](function(_0x398ad4){return _[_0x5874('0x51')](_0x4b59bb,['name',_0x398ad4])?_0x398ad4:undefined;})[_0x5874('0x52')]()[_0x5874('0x3d')]();if(_0x41c013['length']>0x0){_0x41c013['forEach'](function(_0x5541f7){if(_0x5541f7===_0xbd0015){_0x70ceb5[_0x5874('0x4a')]('i.'+_0xbd0015+_0x5874('0x53'),[][_0x5874('0x54')](_0x5068b9[_0x5541f7]));}else if(_0x5541f7===_0x5874('0x55')){var _0x30c255=JSON[_0x5874('0x56')](_0x5068b9[_0x5541f7])[_0x5874('0x57')];var _0x461e41=JSON[_0x5874('0x56')](_0x5068b9[_0x5541f7])[_0x5874('0x58')];_0x70ceb5['and'](_0x5874('0x59'),_0x30c255,_0x461e41);}else{if(_0x5068b9[_0x5541f7]===_0x5874('0x5a')){_0x70ceb5[_0x5874('0x4a')]('i.'+_0x5541f7+'\x20IS\x20NULL');}else{_0x70ceb5[_0x5874('0x4a')]('i.'+_0x5541f7+'\x20=\x20?',_0x5068b9[_0x5541f7]);}}});}return _0x70ceb5;}function parseQueryParameters(_0x19d9c4,_0x461588,_0x202f64){var _0xe7dd55=getSqlClauses();return Promise['resolve']()[_0x5874('0x5b')](function(){return parseModelFields(_0x19d9c4,_0x461588,_0x202f64);})['then'](function(_0x1d8b03){_0xe7dd55[_0x5874('0x5c')][_0x5874('0x4a')](_0x1d8b03);return parseReadParameter(_0x461588[_0x5874('0x5d')]);})['then'](function(_0x5ab2d1){_0xe7dd55['read'][_0x5874('0x4a')](_0x5ab2d1);return parseTagParameter(_0x461588[_0x5874('0x5e')]);})['then'](function(_0x2f32e0){_0xe7dd55[_0x5874('0x48')][_0x5874('0x49')][_0x5874('0x4a')](_0x2f32e0);return parseSearchFilter(_0x19d9c4,_0x461588[_0x5874('0x5f')]);})['then'](function(_0x589f39){_0xe7dd55[_0x5874('0x5f')]=_0x589f39;return _0xe7dd55;});}function checkAccountsRestrictions(_0x35a285,_0x412b0,_0x472549){var _0xf71be6=utils[_0x5874('0x5')](_0x35a285);var _0x3e1e55=_0x5874('0x60')+_['capitalize'](_0x35a285)+(_0x35a285==='chat'?'Websites':_0x5874('0x61'));var _0x2adeab=squel[_0x5874('0x21')]();return Promise[_0x5874('0x62')]()[_0x5874('0x5b')](function(){if(_0x472549[_0x5874('0x8')]&&_0x412b0[_0x5874('0x6')]===_0x5874('0x7')){return _0x412b0[_0x3e1e55]({'attributes':['id'],'raw':!![]});}})[_0x5874('0x5b')](function(_0x275d85){if(_0x275d85){if(_0x275d85[_0x5874('0x36')]===0x0){_0x2adeab[_0x5874('0x4a')]('i.'+_0xf71be6+_0x5874('0x63'));}else{_0x2adeab[_0x5874('0x4a')]('i.'+_0xf71be6+_0x5874('0x53'),_['map'](_0x275d85,'id'));}}else if(!_0x472549[_0xf71be6]){_0x2adeab[_0x5874('0x4a')]('i.'+_0xf71be6+_0x5874('0x64'));}})['then'](function(){return _0x2adeab;});}function getClosedOrderClause(_0x234986,_0x36efce){var _0x4cdc12='';var _0x508b02=[_0x5874('0x65'),_0x5874('0x66'),'i.disposition'];if(_0x234986===_0x5874('0x2f')){_0x508b02['unshift'](_0x5874('0x67'));}if(_0x36efce[_0x5874('0x68')]==='0'&&_0x234986==='mail'){_0x4cdc12=_0x5874('0x67');}else{if(_0x36efce['closed']==='1'){_0x508b02[_0x5874('0x69')]();}_0x4cdc12='CONCAT_WS(\x27\x27,\x20'+_0x508b02[_0x5874('0x6a')](',\x20')+')';}return _0x4cdc12;}function getFilteredInteractions(_0x505be4,_0x171023,_0x3fcc31,_0x108cb6){var _0x4df256=utils[_0x5874('0xe')](_0x505be4);var _0x2c288f=_[_0x5874('0x6b')](_0x505be4)+_0x5874('0x6c');var _0x414e89=[];var _0x4c132d=getTagsQuery();var _0x3ab6f0={'type':db[_0x5874('0x6d')][_0x5874('0x6e')][_0x5874('0x6f')],'raw':!![]};var _0x177286=[];var _0x33c1d2=[];return db[_0x5874('0x70')][_0x5874('0x71')](_0x4c132d[_0x5874('0x72')](),_0x3ab6f0)[_0x5874('0x5b')](function(_0x206f86){_0x414e89=_[_0x5874('0x73')](_0x206f86,'id');_0x3ab6f0=_[_0x5874('0x74')](_0x3ab6f0,{'model':db[_0x2c288f],'mapToModel':!![],'nest':!![]});if(_0x3fcc31[_0x5874('0x5c')]){_0x108cb6[_0x5874('0x75')][_0x5874('0x22')](function(_0x2d9aaf){_0x171023[_0x5874('0xa')]('i.'+_0x2d9aaf);});}else{_0x171023[_0x5874('0xa')](_0x5874('0x76'),_0x5874('0x40'));_0x171023[_0x5874('0xa')](_0x5874('0x77'),_0x5874('0x78'));_0x171023[_0x5874('0xa')](_0x5874('0x79'),_0x5874('0x7a'));if(_0x505be4===_0x5874('0x2f')){_0x171023[_0x5874('0xa')]('a.email',_0x5874('0x7b'));_0x171023[_0x5874('0xa')](_0x5874('0x7c'),_0x5874('0x7d'));_0x171023[_0x5874('0xa')](_0x5874('0x7e'));_0x171023[_0x5874('0xa')](_0x5874('0x7f'));_0x171023[_0x5874('0xa')](_0x5874('0x80'));_0x171023[_0x5874('0xa')]('i.closed');_0x171023[_0x5874('0xa')](_0x5874('0x81'));_0x171023[_0x5874('0xa')]('i.attach');_0x171023[_0x5874('0xa')](_0x5874('0x82'));_0x171023[_0x5874('0xa')](_0x5874('0x83'));_0x171023['field'](_0x5874('0x84'));_0x171023[_0x5874('0xa')](_0x5874('0x85'));_0x171023[_0x5874('0xa')](_0x5874('0x66'));_0x171023[_0x5874('0xa')](_0x5874('0x65'));_0x171023[_0x5874('0xa')](_0x5874('0x67'));_0x171023[_0x5874('0xa')]('i.to');_0x171023[_0x5874('0xa')]('i.ContactId');_0x171023['field'](_0x5874('0x86'));_0x171023[_0x5874('0xa')](_0x5874('0x87'));}else if(_0x505be4===_0x5874('0x2c')){_0x171023[_0x5874('0xa')](_0x5874('0x88'),_0x5874('0x7d'));}else{_0x171023[_0x5874('0xa')]('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',_0x5874('0x7d'));}if(_0x505be4!==_0x5874('0x2f')){_0x171023[_0x5874('0xa')](_0x5874('0x89'));}_0x171023[_0x5874('0xa')](_0x5874('0x8a'),_0x5874('0x8b'));_0x171023[_0x5874('0xa')]('c.lastName',_0x5874('0x8c'));_0x171023[_0x5874('0xa')](_0x5874('0x8d'),'Contact.email');_0x171023[_0x5874('0xa')](_0x5874('0x8e'),'Contact.phone');_0x171023[_0x5874('0xa')](_0x5874('0x8f'),_0x5874('0x90'));_0x171023['field'](_0x5874('0x91'),_0x5874('0x92'));_0x171023['field'](_0x5874('0x93'),_0x5874('0x94'));_0x171023[_0x5874('0xa')](_0x5874('0x95'),'Owner.internal');_0x171023['field'](_0x5874('0x96'),_0x5874('0x97'));}if(_0x108cb6['limit']){_0x171023[_0x5874('0x98')](_0x108cb6['limit']);}if(_0x108cb6[_0x5874('0x99')]){_0x171023[_0x5874('0x99')](_0x108cb6[_0x5874('0x99')]);}return db[_0x5874('0x70')][_0x5874('0x71')](_0x171023['toString'](),_0x3ab6f0);})['then'](function(_0x506c26){_0x177286=_0x506c26;var _0x47388b=getUsersQuery(_0x505be4,_0x177286);return db[_0x5874('0x70')][_0x5874('0x71')](_0x47388b[_0x5874('0x72')](),_0x3ab6f0);})['then'](function(_0x136886){_0x33c1d2=_['groupBy'](_0x136886,_0x4df256);if(_0x505be4===_0x5874('0x2f')){return db['Setting']['findOne']({'attributes':[_0x5874('0x9a')],'raw':!![]});}})['then'](function(_0x24aae1){var _0x40e1e4=_0x24aae1?_0x24aae1[_0x5874('0x9a')]:undefined;var _0x234165=_0x177286[_0x5874('0x17')](function(_0x1ca5f9){return updateInteraction(_0x1ca5f9,_0x414e89,_0x33c1d2,_0x40e1e4);});return Promise['all'](_0x234165);});}function countFilteredInteractions(_0x16ed44,_0x139d48){var _0x138e61=_0x16ed44[_0x5874('0x9b')]();_0x138e61[_0x5874('0xa')](_0x5874('0x9c'));_0x138e61[_0x5874('0xa')](_0x5874('0x76'),_0x5874('0x40'));var _0x486f4c=utils[_0x5874('0x9d')](_0x139d48);if(!_['isEmpty'](_0x486f4c)){_0x138e61[_0x5874('0x9e')](_0x5874('0x9f'),_0x486f4c);}var _0x87650={'type':db[_0x5874('0x6d')][_0x5874('0x6e')][_0x5874('0x6f')],'raw':!![]};return db[_0x5874('0x70')][_0x5874('0x71')](_0x138e61[_0x5874('0x72')](),_0x87650);}module[_0x5874('0xa0')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index a359ebe..8a05214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97d0=['abandoned','total','closed','disposition','UserId','MailMessage','findOne','out','plainBody','then','trimStart','Users','TagIds','Tags','lodash','../../mysqldb','map','fullname','split','forEach','push','waiting','talking','answered','unmanaged'];(function(_0x4b36e2,_0x1e4c93){var _0x477759=function(_0x38abc0){while(--_0x38abc0){_0x4b36e2['push'](_0x4b36e2['shift']());}};_0x477759(++_0x1e4c93);}(_0x97d0,0x153));var _0x097d=function(_0x35e2d8,_0x1b2a4c){_0x35e2d8=_0x35e2d8-0x0;var _0x3251b1=_0x97d0[_0x35e2d8];return _0x3251b1;};'use strict';var _=require(_0x097d('0x0'));var db=require(_0x097d('0x1'))['db'];function getInteractionUsers(_0x36fa6b,_0x4af0ec){return new Promise(function(_0x3b22ff,_0x1675b4){try{var _0xd0f6a8=[];if(_0x4af0ec[_0x36fa6b]){_0xd0f6a8=_0x4af0ec[_0x36fa6b][_0x097d('0x2')](function(_0x34ea30){return{'id':_0x34ea30['id'],'fullname':_0x34ea30[_0x097d('0x3')]};});}return _0x3b22ff(_0xd0f6a8);}catch(_0x124d64){_0x1675b4(_0x124d64);}});}function getInteractionTags(_0x1b28a6,_0x2796e9){var _0x54412b=[];if(_0x1b28a6){_0x1b28a6[_0x097d('0x4')](',')[_0x097d('0x5')](function(_0x43d9ed){_0x54412b[_0x097d('0x6')](_0x2796e9[_0x43d9ed]);});}return _0x54412b;}function updateWaitingCounter(_0x3e63d7){if(_0x3e63d7[_0x097d('0x7')]){_0x3e63d7[_0x097d('0x7')]-=0x1;}}function updateInteractionCounters(_0x2c4684){_0x2c4684[_0x097d('0x7')]=0x0;_0x2c4684[_0x097d('0x8')]=0x0;_0x2c4684[_0x097d('0x9')]=0x0;_0x2c4684[_0x097d('0xa')]=0x0;_0x2c4684[_0x097d('0xb')]=0x0;_0x2c4684[_0x097d('0xc')]=0x0;if(_0x2c4684[_0x097d('0xd')]){if(_0x2c4684[_0x097d('0xe')]===_0x097d('0xb')){_0x2c4684[_0x097d('0xb')]+=0x1;updateWaitingCounter(_0x2c4684);}if(_0x2c4684[_0x097d('0xf')]){_0x2c4684[_0x097d('0x9')]+=0x1;if(_0x2c4684[_0x097d('0x8')]){_0x2c4684[_0x097d('0x8')]-=0x1;}}else{if(_0x2c4684[_0x097d('0xe')]){_0x2c4684[_0x097d('0xa')]+=0x1;updateWaitingCounter(_0x2c4684);}}}else{if(!_0x2c4684['UserId']){_0x2c4684['waiting']+=0x1;}if(_0x2c4684[_0x097d('0xf')]){_0x2c4684[_0x097d('0x8')]+=0x1;updateWaitingCounter(_0x2c4684);}}_0x2c4684['total']+=0x1;return _0x2c4684;}function getLastMessageText(_0x28930c){return db[_0x097d('0x10')][_0x097d('0x11')]({'where':{'$and':[{'MailInteractionId':_0x28930c['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x097d('0x12')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x097d('0x13')],'order':'-id','raw':!![]})[_0x097d('0x14')](function(_0x48e55d){if(_0x48e55d&&_0x48e55d[_0x097d('0x13')]){_0x28930c['lastMsgText']=_[_0x097d('0x15')](_0x48e55d[_0x097d('0x13')]);}return _0x28930c;})['catch'](function(_0x13b027){throw _0x13b027;});}exports['updateInteraction']=function(_0x438b55,_0x2f4703,_0x5c0ad5,_0x5f12af){return new Promise(function(_0x3fe664,_0x153aa8){return getInteractionUsers(_0x438b55['id'],_0x5c0ad5)[_0x097d('0x14')](function(_0x3aa238){_0x438b55[_0x097d('0x16')]=_0x3aa238;return getInteractionTags(_0x438b55[_0x097d('0x17')],_0x2f4703);})[_0x097d('0x14')](function(_0xf95082){_0x438b55[_0x097d('0x18')]=_0xf95082;delete _0x438b55[_0x097d('0x17')];return updateInteractionCounters(_0x438b55);})[_0x097d('0x14')](function(_0x3ea7e3){if(_0x5f12af){return getLastMessageText(_0x3ea7e3);}else{return _0x3ea7e3;}})['then'](function(_0x7495f5){_0x3fe664(_0x7495f5);})['catch'](function(_0x2a73ae){_0x153aa8(_0x2a73ae);});});};
\ No newline at end of file
+var _0xf4a0=['total','disposition','abandoned','UserId','waiting','MailMessage','out','-id','plainBody','lastMsgText','trimStart','catch','then','Users','TagIds','Tags','lodash','map','fullname','split','push','talking','answered','unmanaged'];(function(_0x370d7c,_0x473365){var _0x1727d7=function(_0x2c212e){while(--_0x2c212e){_0x370d7c['push'](_0x370d7c['shift']());}};_0x1727d7(++_0x473365);}(_0xf4a0,0x178));var _0x0f4a=function(_0x2c3a07,_0x384eb9){_0x2c3a07=_0x2c3a07-0x0;var _0x46aa2a=_0xf4a0[_0x2c3a07];return _0x46aa2a;};'use strict';var _=require(_0x0f4a('0x0'));var db=require('../../mysqldb')['db'];function getInteractionUsers(_0x276511,_0xed2f2e){return new Promise(function(_0x4e41a0,_0x307c06){try{var _0x595c77=[];if(_0xed2f2e[_0x276511]){_0x595c77=_0xed2f2e[_0x276511][_0x0f4a('0x1')](function(_0xfe22b5){return{'id':_0xfe22b5['id'],'fullname':_0xfe22b5[_0x0f4a('0x2')]};});}return _0x4e41a0(_0x595c77);}catch(_0x252666){_0x307c06(_0x252666);}});}function getInteractionTags(_0x3f5869,_0x54e19c){var _0xe63f42=[];if(_0x3f5869){_0x3f5869[_0x0f4a('0x3')](',')['forEach'](function(_0x1fee1d){_0xe63f42[_0x0f4a('0x4')](_0x54e19c[_0x1fee1d]);});}return _0xe63f42;}function updateWaitingCounter(_0x32828e){if(_0x32828e['waiting']){_0x32828e['waiting']-=0x1;}}function updateInteractionCounters(_0x49e918){_0x49e918['waiting']=0x0;_0x49e918[_0x0f4a('0x5')]=0x0;_0x49e918[_0x0f4a('0x6')]=0x0;_0x49e918[_0x0f4a('0x7')]=0x0;_0x49e918['abandoned']=0x0;_0x49e918[_0x0f4a('0x8')]=0x0;if(_0x49e918['closed']){if(_0x49e918[_0x0f4a('0x9')]===_0x0f4a('0xa')){_0x49e918[_0x0f4a('0xa')]+=0x1;updateWaitingCounter(_0x49e918);}if(_0x49e918[_0x0f4a('0xb')]){_0x49e918[_0x0f4a('0x6')]+=0x1;if(_0x49e918[_0x0f4a('0x5')]){_0x49e918[_0x0f4a('0x5')]-=0x1;}}else{if(_0x49e918[_0x0f4a('0x9')]){_0x49e918[_0x0f4a('0x7')]+=0x1;updateWaitingCounter(_0x49e918);}}}else{if(!_0x49e918['UserId']){_0x49e918[_0x0f4a('0xc')]+=0x1;}if(_0x49e918['UserId']){_0x49e918[_0x0f4a('0x5')]+=0x1;updateWaitingCounter(_0x49e918);}}_0x49e918['total']+=0x1;return _0x49e918;}function getLastMessageText(_0x25c939){return db[_0x0f4a('0xd')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x25c939['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0f4a('0xe')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0f4a('0xf'),'raw':!![]})['then'](function(_0x53e14e){if(_0x53e14e&&_0x53e14e[_0x0f4a('0x10')]){_0x25c939[_0x0f4a('0x11')]=_[_0x0f4a('0x12')](_0x53e14e[_0x0f4a('0x10')]);}return _0x25c939;})[_0x0f4a('0x13')](function(_0x458755){throw _0x458755;});}exports['updateInteraction']=function(_0x3aa22d,_0x5d7b98,_0x7e45df,_0x30a77c){return new Promise(function(_0x1e1b5b,_0x5e1cd4){return getInteractionUsers(_0x3aa22d['id'],_0x7e45df)[_0x0f4a('0x14')](function(_0x4aa9bb){_0x3aa22d[_0x0f4a('0x15')]=_0x4aa9bb;return getInteractionTags(_0x3aa22d[_0x0f4a('0x16')],_0x5d7b98);})[_0x0f4a('0x14')](function(_0x3d40c6){_0x3aa22d[_0x0f4a('0x17')]=_0x3d40c6;delete _0x3aa22d[_0x0f4a('0x16')];return updateInteractionCounters(_0x3aa22d);})[_0x0f4a('0x14')](function(_0xf2a97e){if(_0x30a77c){return getLastMessageText(_0xf2a97e);}else{return _0xf2a97e;}})['then'](function(_0x1f904b){_0x1e1b5b(_0x1f904b);})[_0x0f4a('0x13')](function(_0x300372){_0x5e1cd4(_0x300372);});});};
\ No newline at end of file
index 00909d9..1e4d321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0558=['null','findOne','then','info','catch','error','lodash','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','chat-interactions','capitalize','chat','Website','Account','InteractionId','upperFirst','unknown','websites','accounts','_interactions','_interaction_has_tags','_messages','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify'];(function(_0x44ca4e,_0x4adfdb){var _0x36a969=function(_0x188676){while(--_0x188676){_0x44ca4e['push'](_0x44ca4e['shift']());}};_0x36a969(++_0x4adfdb);}(_0x0558,0x18c));var _0x8055=function(_0x40927b,_0xf9b0a0){_0x40927b=_0x40927b-0x0;var _0x2635e8=_0x0558[_0x40927b];return _0x2635e8;};'use strict';var _=require(_0x8055('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0x8055('0x1'))(_0x8055('0x2')),'mail':require(_0x8055('0x1'))(_0x8055('0x3')),'fax':require('../../config/logger')('fax-interactions'),'sms':require(_0x8055('0x1'))(_0x8055('0x4')),'chat':require('../../config/logger')(_0x8055('0x5')),'whatsapp':require('../../config/logger')('whatsapp-interactions')};function getAccountFK(_0x5a4675){return _[_0x8055('0x6')](_0x5a4675)+(_0x5a4675===_0x8055('0x7')?_0x8055('0x8'):_0x8055('0x9'))+'Id';}function getInteractionFK(_0x5c6199){return _[_0x8055('0x6')](_0x5c6199)+_0x8055('0xa');}function getInteractionId(_0x34c913,_0x50f30f,_0x2d1907){if(_0x34c913&&_0x34c913[_[_0x8055('0xb')](_0x2d1907)+'InteractionId']){return _0x34c913[_[_0x8055('0xb')](_0x2d1907)+_0x8055('0xa')];}else if(_0x34c913&&_0x34c913['id']){return _0x34c913['id'];}else if(_0x50f30f&&_0x50f30f['id']){return _0x50f30f['id'];}else{return _0x8055('0xc');}}function getInteractionsTables(_0x1e72b8){return{'accounts':_0x1e72b8+'_'+(_0x1e72b8==='chat'?_0x8055('0xd'):_0x8055('0xe')),'interactions':_0x1e72b8+_0x8055('0xf'),'interactionsTags':_0x1e72b8+_0x8055('0x10'),'messages':_0x1e72b8+_0x8055('0x11'),'userInteractions':'user_has_'+_0x1e72b8+_0x8055('0xf')};}function getSelectedTags(_0x4fe3e8){var _0x229c05=[];if(_0x4fe3e8){_0x229c05=Array[_0x8055('0x12')](_0x4fe3e8)?_0x4fe3e8:[_0x4fe3e8];}return _0x229c05;}function log(_0x498998,_0x33af1b,_0x2c3009,_0x2c7f3c,_0x11d9e8,_0x2ba654){loggers[_0x11d9e8[_0x8055('0x13')]()][_0x498998](_0x8055('0x14'),_0x2ba654['toUpperCase'](),_0x33af1b?_0x33af1b['id']:null,_0x33af1b?_0x33af1b[_0x8055('0x15')]:null,_0x33af1b?_0x33af1b[_0x8055('0x16')]:null,getInteractionId(_0x2c3009,_0x2c7f3c,_0x11d9e8),_0x2c3009?JSON[_0x8055('0x17')](_0x2c3009):_0x8055('0x18'));}function updateUser(_0x41e0f9,_0x47f8a5,_0x1a72cf,_0x39139f,_0x9829e5){db[_[_0x8055('0xb')](_0x39139f)+'Interaction'][_0x8055('0x19')]({'where':{'id':getInteractionId(_0x47f8a5,_0x1a72cf,_0x39139f)}})[_0x8055('0x1a')](function(_0x36a3df){if(_0x36a3df){return _0x36a3df['update']({'UserId':_0x41e0f9?_0x41e0f9['id']:null});}})[_0x8055('0x1a')](function(_0x9719e6){if(_0x9719e6){log(_0x8055('0x1b'),_0x41e0f9,_0x47f8a5,_0x1a72cf,_0x39139f,_0x9829e5);}})[_0x8055('0x1c')](function(){log(_0x8055('0x1d'),_0x41e0f9,_0x47f8a5,_0x1a72cf,_0x39139f,_0x9829e5);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0x1fa5=['null','Interaction','findOne','then','update','catch','error','exports','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','chat-interactions','whatsapp-interactions','capitalize','chat','Website','Account','InteractionId','upperFirst','unknown','websites','accounts','_interactions','_interaction_has_tags','user_has_','isArray','toLowerCase','toUpperCase','name','role','stringify'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1fa5,0x118));var _0x51fa=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x1fa5[_0x173441];return _0x2423a8;};'use strict';var _=require(_0x51fa('0x0'));var db=require(_0x51fa('0x1'))['db'];var loggers={'openchannel':require(_0x51fa('0x2'))(_0x51fa('0x3')),'mail':require(_0x51fa('0x2'))(_0x51fa('0x4')),'fax':require('../../config/logger')(_0x51fa('0x5')),'sms':require('../../config/logger')('sms-interactions'),'chat':require(_0x51fa('0x2'))(_0x51fa('0x6')),'whatsapp':require(_0x51fa('0x2'))(_0x51fa('0x7'))};function getAccountFK(_0x30479a){return _[_0x51fa('0x8')](_0x30479a)+(_0x30479a===_0x51fa('0x9')?_0x51fa('0xa'):_0x51fa('0xb'))+'Id';}function getInteractionFK(_0x4c002a){return _[_0x51fa('0x8')](_0x4c002a)+_0x51fa('0xc');}function getInteractionId(_0x1c15af,_0x28920f,_0x2efa06){if(_0x1c15af&&_0x1c15af[_[_0x51fa('0xd')](_0x2efa06)+_0x51fa('0xc')]){return _0x1c15af[_[_0x51fa('0xd')](_0x2efa06)+_0x51fa('0xc')];}else if(_0x1c15af&&_0x1c15af['id']){return _0x1c15af['id'];}else if(_0x28920f&&_0x28920f['id']){return _0x28920f['id'];}else{return _0x51fa('0xe');}}function getInteractionsTables(_0x410497){return{'accounts':_0x410497+'_'+(_0x410497==='chat'?_0x51fa('0xf'):_0x51fa('0x10')),'interactions':_0x410497+_0x51fa('0x11'),'interactionsTags':_0x410497+_0x51fa('0x12'),'messages':_0x410497+'_messages','userInteractions':_0x51fa('0x13')+_0x410497+'_interactions'};}function getSelectedTags(_0x283b3c){var _0x5c907c=[];if(_0x283b3c){_0x5c907c=Array[_0x51fa('0x14')](_0x283b3c)?_0x283b3c:[_0x283b3c];}return _0x5c907c;}function log(_0x5ee266,_0x3a569e,_0x5420be,_0x57a0ba,_0x45b401,_0xfbe1){loggers[_0x45b401[_0x51fa('0x15')]()][_0x5ee266]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xfbe1[_0x51fa('0x16')](),_0x3a569e?_0x3a569e['id']:null,_0x3a569e?_0x3a569e[_0x51fa('0x17')]:null,_0x3a569e?_0x3a569e[_0x51fa('0x18')]:null,getInteractionId(_0x5420be,_0x57a0ba,_0x45b401),_0x5420be?JSON[_0x51fa('0x19')](_0x5420be):_0x51fa('0x1a'));}function updateUser(_0xcde132,_0x17898d,_0x2327af,_0x4e0ff9,_0x248804){db[_[_0x51fa('0xd')](_0x4e0ff9)+_0x51fa('0x1b')][_0x51fa('0x1c')]({'where':{'id':getInteractionId(_0x17898d,_0x2327af,_0x4e0ff9)}})[_0x51fa('0x1d')](function(_0x6a8399){if(_0x6a8399){return _0x6a8399[_0x51fa('0x1e')]({'UserId':_0xcde132?_0xcde132['id']:null});}})['then'](function(_0x3aba15){if(_0x3aba15){log('info',_0xcde132,_0x17898d,_0x2327af,_0x4e0ff9,_0x248804);}})[_0x51fa('0x1f')](function(){log(_0x51fa('0x20'),_0xcde132,_0x17898d,_0x2327af,_0x4e0ff9,_0x248804);});}module[_0x51fa('0x21')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 0c432bb..c8c2617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x918e=['crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','base64','utf8','final','use','License','findOne','then','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','isUserLimit'];(function(_0x13d60f,_0xaa3f3b){var _0x3081ec=function(_0x51fe0a){while(--_0x51fe0a){_0x13d60f['push'](_0x13d60f['shift']());}};_0x3081ec(++_0xaa3f3b);}(_0x918e,0xd8));var _0xe918=function(_0x1d3a5d,_0x17fc32){_0x1d3a5d=_0x1d3a5d-0x0;var _0x257078=_0x918e[_0x1d3a5d];return _0x257078;};'use strict';var crypto=require(_0xe918('0x0'));var util=require(_0xe918('0x1'));var compose=require(_0xe918('0x2'));var db=require(_0xe918('0x3'))['db'];var config=require(_0xe918('0x4'));function getValueFromLicense(_0x42b2cb,_0x333cef){if(_0x42b2cb&&_0x333cef){if(_0x333cef[_0xe918('0x5')]&&_0x333cef['license']){var _0x4b695a=_0x333cef[_0xe918('0x5')];var _0xf27cbd=_0x333cef[_0xe918('0x6')];var _0x28a1d7=_0x4b695a[_0xe918('0x7')]('-')[0x4];var _0x1dd7db=_0x4b695a[_0xe918('0x7')]('-')[0x0];var _0x26de87=crypto[_0xe918('0x8')](_0xe918('0x9'),util[_0xe918('0xa')](_0xe918('0xb'),_0x28a1d7,_0x4b695a,_0x1dd7db));var _0x215fc7=_0x26de87['update'](_0xf27cbd,_0xe918('0xc'),_0xe918('0xd'));_0x215fc7+=_0x26de87[_0xe918('0xe')](_0xe918('0xd'));var _0x2e9960=JSON['parse'](_0x215fc7);return _0x2e9960['hasOwnProperty'](_0x42b2cb)?_0x2e9960[_0x42b2cb]:null;}}return null;}function isLimit(_0x1195d5,_0xa3090c,_0x16b2c9,_0x339794){var _0x24fa46=_0xa3090c;return compose()[_0xe918('0xf')](function(_0x2817a9,_0x396583,_0x331046){return db[_0xe918('0x10')][_0xe918('0x11')]({'where':{'id':0x1},'raw':!![]})[_0xe918('0x12')](function(_0x177b5c){var _0x57b63c=getValueFromLicense(_0x1195d5,_0x177b5c);return _0x57b63c?_0x57b63c:_0x24fa46;})['then'](function(_0x569e34){_0x24fa46=_0x569e34;return _0x16b2c9['count'](_0x339794);})[_0xe918('0x12')](function(_0x468faf){if(_0x468faf>=_0x24fa46){return _0x396583['status'](0x193)[_0xe918('0x13')]({'message':util[_0xe918('0xa')](_0xe918('0x14'),_0x1195d5)});}_0x331046();})[_0xe918('0x15')](function(_0x588ce3){_0x331046(_0x588ce3);});});}function isUserLimit(){return isLimit(_0xe918('0x16'),0x1,db[_0xe918('0x17')],{'where':{'$or':[{'role':_0xe918('0x18')},{'role':_0xe918('0x19')}]}});}exports[_0xe918('0x1a')]=isUserLimit;
\ No newline at end of file
+var _0x8510=['Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','user','isUserLimit','crypto','composable-middleware','../../mysqldb','../../config/environment','license','data1','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','License','then','count','json'];(function(_0x1b4bfa,_0x2f2e9f){var _0x2a9733=function(_0x157e02){while(--_0x157e02){_0x1b4bfa['push'](_0x1b4bfa['shift']());}};_0x2a9733(++_0x2f2e9f);}(_0x8510,0xf9));var _0x0851=function(_0x38325,_0x262d3c){_0x38325=_0x38325-0x0;var _0x2994d6=_0x8510[_0x38325];return _0x2994d6;};'use strict';var crypto=require(_0x0851('0x0'));var util=require('util');var compose=require(_0x0851('0x1'));var db=require(_0x0851('0x2'))['db'];var config=require(_0x0851('0x3'));function getValueFromLicense(_0x2522b4,_0x558782){if(_0x2522b4&&_0x558782){if(_0x558782['data1']&&_0x558782[_0x0851('0x4')]){var _0x5dd972=_0x558782[_0x0851('0x5')];var _0xd73681=_0x558782[_0x0851('0x4')];var _0x2bc334=_0x5dd972[_0x0851('0x6')]('-')[0x4];var _0x4af5f5=_0x5dd972[_0x0851('0x6')]('-')[0x0];var _0x2b20fa=crypto[_0x0851('0x7')](_0x0851('0x8'),util[_0x0851('0x9')](_0x0851('0xa'),_0x2bc334,_0x5dd972,_0x4af5f5));var _0x2a16eb=_0x2b20fa[_0x0851('0xb')](_0xd73681,_0x0851('0xc'),_0x0851('0xd'));_0x2a16eb+=_0x2b20fa[_0x0851('0xe')](_0x0851('0xd'));var _0x3f8eec=JSON[_0x0851('0xf')](_0x2a16eb);return _0x3f8eec[_0x0851('0x10')](_0x2522b4)?_0x3f8eec[_0x2522b4]:null;}}return null;}function isLimit(_0x39e63a,_0x1295a2,_0x4d0ca5,_0xa3014c){var _0x5a36b5=_0x1295a2;return compose()['use'](function(_0x2f7cfb,_0x4101ab,_0x560845){return db[_0x0851('0x11')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x0851('0x12')](function(_0x3869cc){var _0x3dfb7f=getValueFromLicense(_0x39e63a,_0x3869cc);return _0x3dfb7f?_0x3dfb7f:_0x5a36b5;})[_0x0851('0x12')](function(_0x30a31a){_0x5a36b5=_0x30a31a;return _0x4d0ca5[_0x0851('0x13')](_0xa3014c);})[_0x0851('0x12')](function(_0xde27a6){if(_0xde27a6>=_0x5a36b5){return _0x4101ab['status'](0x193)[_0x0851('0x14')]({'message':util['format'](_0x0851('0x15'),_0x39e63a)});}_0x560845();})[_0x0851('0x16')](function(_0x2b45d2){_0x560845(_0x2b45d2);});});}function isUserLimit(){return isLimit(_0x0851('0x17'),0x1,db['User'],{'where':{'$or':[{'role':_0x0851('0x18')},{'role':_0x0851('0x19')}]}});}exports[_0x0851('0x1a')]=isUserLimit;
\ No newline at end of file
index e4e0164..c0311c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x192e=['replace','[$and]','split','length','slice','forEach','shift','filter','conditions','push','buildExpression','DATE','operator','$between','value','includes','$gt','add','days','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','$eq','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','>\x20?','$lte','<=\x20?','$gte','BETWEEN\x20?\x20AND\x20?','start','pop','format','hours','minutes','seconds','lodash','moment','parseSearch','startsWith','[$or]','and'];(function(_0x10d064,_0x3ee2ce){var _0x388ed4=function(_0x3538f9){while(--_0x3538f9){_0x10d064['push'](_0x10d064['shift']());}};_0x388ed4(++_0x3ee2ce);}(_0x192e,0x9c));var _0xe192=function(_0x58958a,_0x486701){_0x58958a=_0x58958a-0x0;var _0x2521ea=_0x192e[_0x58958a];return _0x2521ea;};'use strict';var _=require(_0xe192('0x0'));var moment=require(_0xe192('0x1'));exports[_0xe192('0x2')]=function(_0x8dd156){var _0x48349a={'conditions':[]};_0x48349a['sqlOperator']=_[_0xe192('0x3')](_0x8dd156,_0xe192('0x4'))?'or':_0xe192('0x5');var _0x5d0fa1=_0x8dd156[_0xe192('0x6')](_0xe192('0x7'),'')['replace'](_0xe192('0x4'),'')[_0xe192('0x8')]('||');for(var _0x3645a0=0x0;_0x3645a0<_0x5d0fa1[_0xe192('0x9')];_0x3645a0++){var _0x21aef5=_0x5d0fa1[_0x3645a0][_0xe192('0x8')](':=');var _0x585eab=_0x21aef5[0x0];var _0x15bf2a=_0x21aef5[_0xe192('0xa')](0x1);_0x15bf2a[_0xe192('0xb')](function(_0x41d993){var _0x300818=_0x41d993[_0xe192('0x8')]('[')[_0xe192('0xc')]();var _0x55acda=_0x41d993['match'](/\[(.*?)\]/g);_0x55acda[_0xe192('0xb')](function(_0x9770eb){var _0x2fa696=_0x9770eb[_0xe192('0x8')]('[')[_0xe192('0xd')](function(_0x2ee109){return _0x2ee109['indexOf'](']')>-0x1;})['map'](function(_0x390275){return _0x390275[_0xe192('0x8')](']')[0x0];})[0x0];_0x48349a[_0xe192('0xe')][_0xe192('0xf')]({'field':_0x585eab,'operator':_0x300818,'value':_0x2fa696});});});}return _0x48349a;};exports[_0xe192('0x10')]=function(_0x7b0e32,_0xc94836,_0x3e734f){var _0x101dc9={};if(_0xc94836===_0xe192('0x11')){if(_0x3e734f['operator']==='$eq'){_0x3e734f[_0xe192('0x12')]=_0xe192('0x13');_0x3e734f[_0xe192('0x14')]+=','+_0x3e734f[_0xe192('0x14')];}else if(_[_0xe192('0x15')]([_0xe192('0x16'),'$lte'],_0x3e734f[_0xe192('0x12')])){_0x3e734f[_0xe192('0x14')]=moment(_0x3e734f[_0xe192('0x14')])[_0xe192('0x17')](0x1,_0xe192('0x18'))['format']('YYYY-MM-DD');}}if(_0x3e734f['castTo']){_0xc94836=_0x3e734f[_0xe192('0x19')];_0x101dc9[_0xe192('0x1a')]=_0xe192('0x1b')+_0x7b0e32+'.'+_0x3e734f[_0xe192('0x1c')]+_0xe192('0x1d')+_0x3e734f['castTo']+')\x20'+parseOperator(_0x3e734f['operator']);}else{_0x101dc9[_0xe192('0x1a')]=_0x7b0e32+'.'+_0x3e734f[_0xe192('0x1c')]+'\x20'+parseOperator(_0x3e734f[_0xe192('0x12')]);}if(_[_0xe192('0x15')]([_0xe192('0x1e'),_0xe192('0x1f')],_0x3e734f[_0xe192('0x12')]))_0x101dc9[_0xe192('0x1a')]='('+_0x101dc9['text']+_0xe192('0x20')+_0x7b0e32+'.'+_0x3e734f[_0xe192('0x1c')]+_0xe192('0x21');_0x101dc9[_0xe192('0x14')]=parseValue(_0xc94836,_0x3e734f[_0xe192('0x12')],_0x3e734f[_0xe192('0x14')]);return _0x101dc9;};function parseOperator(_0x12111a){var _0x57f519;switch(_0x12111a){case _0xe192('0x22'):_0x57f519=_0xe192('0x23');break;case _0xe192('0x1f'):_0x57f519=_0xe192('0x24');break;case _0xe192('0x25'):_0x57f519='=\x20?';break;case'$ne':_0x57f519='<>\x20?';break;case _0xe192('0x26'):case _0xe192('0x27'):case _0xe192('0x28'):_0x57f519=_0xe192('0x29');break;case'$lt':_0x57f519=_0xe192('0x2a');break;case _0xe192('0x16'):_0x57f519=_0xe192('0x2b');break;case _0xe192('0x2c'):_0x57f519=_0xe192('0x2d');break;case _0xe192('0x2e'):_0x57f519='>=\x20?';break;case'$between':_0x57f519=_0xe192('0x2f');break;}return _0x57f519;}function parseValue(_0x3b8754,_0x131483,_0x49fee1){var _0x4e501e={'start':undefined,'end':undefined};switch(_0x131483){case'$in':case _0xe192('0x1f'):_0x4e501e[_0xe192('0x30')]=_0x49fee1['split'](',');break;case _0xe192('0x26'):_0x4e501e[_0xe192('0x30')]='%'+_0x49fee1+'%';break;case'$startsWith':_0x4e501e['start']=_0x49fee1+'%';break;case _0xe192('0x28'):_0x4e501e[_0xe192('0x30')]='%'+_0x49fee1;break;case'$between':var _0x5de5c0=_0x49fee1['split'](',');var _0x49fee1=_0x5de5c0[_0xe192('0xc')]();var _0x2ae9e9=_0x5de5c0[_0xe192('0x31')]();if(_0x3b8754===_0xe192('0x11')){_0x49fee1=moment(_0x49fee1)['utcOffset'](0x0,!![])[_0xe192('0x32')]();_0x2ae9e9=moment(_0x2ae9e9)['utcOffset'](0x0,!![])['add'](0x17,_0xe192('0x33'))[_0xe192('0x17')](0x3b,_0xe192('0x34'))[_0xe192('0x17')](0x3b,_0xe192('0x35'))[_0xe192('0x32')]();}_0x4e501e={'start':_0x49fee1,'end':_0x2ae9e9};break;default:_0x4e501e[_0xe192('0x30')]=_0x49fee1;break;}return _0x4e501e;}
\ No newline at end of file
+var _0xdb92=['$in','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','>\x20?','$lte','<=\x20?','$gte','start','pop','DATE','utcOffset','format','hours','minutes','seconds','moment','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','length','slice','forEach','shift','filter','indexOf','map','conditions','buildExpression','operator','$eq','$between','value','includes','$gt','add','days','YYYY-MM-DD','castTo','text','CAST(','field','$ne','$notIn','\x20OR\x20'];(function(_0x335f5c,_0xce622c){var _0x27458c=function(_0x108b7f){while(--_0x108b7f){_0x335f5c['push'](_0x335f5c['shift']());}};_0x27458c(++_0xce622c);}(_0xdb92,0x159));var _0x2db9=function(_0x111ca9,_0x495f80){_0x111ca9=_0x111ca9-0x0;var _0x47342b=_0xdb92[_0x111ca9];return _0x47342b;};'use strict';var _=require('lodash');var moment=require(_0x2db9('0x0'));exports['parseSearch']=function(_0x2ce892){var _0x47aed8={'conditions':[]};_0x47aed8[_0x2db9('0x1')]=_[_0x2db9('0x2')](_0x2ce892,_0x2db9('0x3'))?'or':_0x2db9('0x4');var _0x2461e7=_0x2ce892[_0x2db9('0x5')](_0x2db9('0x6'),'')[_0x2db9('0x5')]('[$or]','')[_0x2db9('0x7')]('||');for(var _0x46dace=0x0;_0x46dace<_0x2461e7[_0x2db9('0x8')];_0x46dace++){var _0x58f48a=_0x2461e7[_0x46dace][_0x2db9('0x7')](':=');var _0xabb022=_0x58f48a[0x0];var _0x1243cc=_0x58f48a[_0x2db9('0x9')](0x1);_0x1243cc[_0x2db9('0xa')](function(_0x1d243d){var _0x5b9d58=_0x1d243d[_0x2db9('0x7')]('[')[_0x2db9('0xb')]();var _0x169eae=_0x1d243d['match'](/\[(.*?)\]/g);_0x169eae['forEach'](function(_0x75e81a){var _0x31b203=_0x75e81a[_0x2db9('0x7')]('[')[_0x2db9('0xc')](function(_0x20e3d5){return _0x20e3d5[_0x2db9('0xd')](']')>-0x1;})[_0x2db9('0xe')](function(_0x316921){return _0x316921['split'](']')[0x0];})[0x0];_0x47aed8[_0x2db9('0xf')]['push']({'field':_0xabb022,'operator':_0x5b9d58,'value':_0x31b203});});});}return _0x47aed8;};exports[_0x2db9('0x10')]=function(_0x1fb005,_0x168791,_0x28c35c){var _0x1b0b9a={};if(_0x168791==='DATE'){if(_0x28c35c[_0x2db9('0x11')]===_0x2db9('0x12')){_0x28c35c[_0x2db9('0x11')]=_0x2db9('0x13');_0x28c35c[_0x2db9('0x14')]+=','+_0x28c35c[_0x2db9('0x14')];}else if(_[_0x2db9('0x15')]([_0x2db9('0x16'),'$lte'],_0x28c35c[_0x2db9('0x11')])){_0x28c35c[_0x2db9('0x14')]=moment(_0x28c35c[_0x2db9('0x14')])[_0x2db9('0x17')](0x1,_0x2db9('0x18'))['format'](_0x2db9('0x19'));}}if(_0x28c35c[_0x2db9('0x1a')]){_0x168791=_0x28c35c[_0x2db9('0x1a')];_0x1b0b9a[_0x2db9('0x1b')]=_0x2db9('0x1c')+_0x1fb005+'.'+_0x28c35c[_0x2db9('0x1d')]+'\x20AS\x20'+_0x28c35c[_0x2db9('0x1a')]+')\x20'+parseOperator(_0x28c35c[_0x2db9('0x11')]);}else{_0x1b0b9a['text']=_0x1fb005+'.'+_0x28c35c['field']+'\x20'+parseOperator(_0x28c35c[_0x2db9('0x11')]);}if(_[_0x2db9('0x15')]([_0x2db9('0x1e'),_0x2db9('0x1f')],_0x28c35c['operator']))_0x1b0b9a[_0x2db9('0x1b')]='('+_0x1b0b9a['text']+_0x2db9('0x20')+_0x1fb005+'.'+_0x28c35c[_0x2db9('0x1d')]+'\x20IS\x20NULL)';_0x1b0b9a[_0x2db9('0x14')]=parseValue(_0x168791,_0x28c35c[_0x2db9('0x11')],_0x28c35c['value']);return _0x1b0b9a;};function parseOperator(_0xa7031){var _0x24b6ec;switch(_0xa7031){case _0x2db9('0x21'):_0x24b6ec='IN\x20?';break;case'$notIn':_0x24b6ec=_0x2db9('0x22');break;case _0x2db9('0x12'):_0x24b6ec=_0x2db9('0x23');break;case _0x2db9('0x1e'):_0x24b6ec=_0x2db9('0x24');break;case _0x2db9('0x25'):case _0x2db9('0x26'):case _0x2db9('0x27'):_0x24b6ec=_0x2db9('0x28');break;case'$lt':_0x24b6ec=_0x2db9('0x29');break;case _0x2db9('0x16'):_0x24b6ec=_0x2db9('0x2a');break;case _0x2db9('0x2b'):_0x24b6ec=_0x2db9('0x2c');break;case _0x2db9('0x2d'):_0x24b6ec='>=\x20?';break;case _0x2db9('0x13'):_0x24b6ec='BETWEEN\x20?\x20AND\x20?';break;}return _0x24b6ec;}function parseValue(_0x57cc8a,_0x12e270,_0x41fc22){var _0x3fe653={'start':undefined,'end':undefined};switch(_0x12e270){case _0x2db9('0x21'):case _0x2db9('0x1f'):_0x3fe653['start']=_0x41fc22[_0x2db9('0x7')](',');break;case _0x2db9('0x25'):_0x3fe653['start']='%'+_0x41fc22+'%';break;case'$startsWith':_0x3fe653[_0x2db9('0x2e')]=_0x41fc22+'%';break;case _0x2db9('0x27'):_0x3fe653[_0x2db9('0x2e')]='%'+_0x41fc22;break;case _0x2db9('0x13'):var _0x5152ee=_0x41fc22[_0x2db9('0x7')](',');var _0x41fc22=_0x5152ee[_0x2db9('0xb')]();var _0x59f9f3=_0x5152ee[_0x2db9('0x2f')]();if(_0x57cc8a===_0x2db9('0x30')){_0x41fc22=moment(_0x41fc22)[_0x2db9('0x31')](0x0,!![])[_0x2db9('0x32')]();_0x59f9f3=moment(_0x59f9f3)[_0x2db9('0x31')](0x0,!![])[_0x2db9('0x17')](0x17,_0x2db9('0x33'))[_0x2db9('0x17')](0x3b,_0x2db9('0x34'))[_0x2db9('0x17')](0x3b,_0x2db9('0x35'))[_0x2db9('0x32')]();}_0x3fe653={'start':_0x41fc22,'end':_0x59f9f3};break;default:_0x3fe653[_0x2db9('0x2e')]=_0x41fc22;break;}return _0x3fe653;}
\ No newline at end of file
index 91af169..102e36e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b0a=['isArray','limit','offset','sort','map','indexOf','priority','cast','col','DESC','ASC','omit','length','isObject','isString','unset','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','\x22{EXPR}\x22','{EXPR}','forEach','replace','push','join','getOptions','$id','query','intersection','attributes','nolimit','pick','filter','columns','value','where','merge','lower','include','includeAll','sequelize','moment','../../mysqldb','keys','includes','parse','model','raw','fields','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject','format','utc','$lte','subtract','name','uniqueid'];(function(_0x298f26,_0x20cbf2){var _0x4bd7a8=function(_0x20b180){while(--_0x20b180){_0x298f26['push'](_0x298f26['shift']());}};_0x4bd7a8(++_0x20cbf2);}(_0x3b0a,0xa9));var _0xa3b0=function(_0x4ab972,_0x5ce87b){_0x4ab972=_0x4ab972-0x0;var _0xfd1b6d=_0x3b0a[_0x4ab972];return _0xfd1b6d;};'use strict';var _=require('lodash');var sequelize=require(_0xa3b0('0x0'));var moment=require(_0xa3b0('0x1'));var db=require(_0xa3b0('0x2'))['db'];var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x21c97a){var _0x47207c=['ne'];try{var _0x1b72fc=JSON['parse'](_0x21c97a);var _0x2c0bfe=Object[_0xa3b0('0x3')](_0x1b72fc)[0x0];return _0x47207c[_0xa3b0('0x4')](_0x2c0bfe);}catch(_0x505f19){return![];}}function getOperatorValue(_0x29863f){var _0x4446db=JSON[_0xa3b0('0x5')](_0x29863f);var _0x157e6b=Object[_0xa3b0('0x3')](_0x4446db)[0x0];var _0x5d8405=_0x4446db[_0x157e6b];return{['$'+_0x157e6b]:_0x5d8405};}function parseIncludeModel(_0x6e0a85){var _0x463402=JSON[_0xa3b0('0x5')](_0x6e0a85);return{'model':db[_0x463402[_0xa3b0('0x6')]],'as':_0x463402['alias'],'attributes':_0x463402['fields'],'raw':_0x463402[_0xa3b0('0x7')]};}exports[_0xa3b0('0x8')]=function(_0x4281d6){var _0xb63514=null;if(_0x4281d6){_0xb63514=_0x4281d6[_0xa3b0('0x9')](',');}return _0xb63514;};exports[_0xa3b0('0xa')]=function(_0x48e96c,_0x5f46ed){var _0x832f44={};if(!_[_0xa3b0('0xb')](_0x48e96c)){_[_0xa3b0('0xc')](_0x48e96c,function(_0x2c2579,_0x33757b){try{if(_0x5f46ed){var _0x28401c=_[_0xa3b0('0xd')](_0x5f46ed,{'name':_0x33757b})||{};if(hasSequelizeOperator(_0x2c2579)){_0x832f44[_0x33757b]=getOperatorValue(_0x2c2579);}else if(_0x28401c[_0xa3b0('0xe')]===_0xa3b0('0xf')&&_[_0xa3b0('0x10')](_0x2c2579)){var _0x46499f=JSON['parse'](_0x2c2579);var _0x3d6296={'$gte':moment(moment(_0x46499f['$gte'])[_0xa3b0('0x11')]('YYYY-MM-DD'))[_0xa3b0('0x12')]()[_0xa3b0('0x11')](),'$lte':moment(moment(_0x46499f[_0xa3b0('0x13')])[_0xa3b0('0x11')]('YYYY-MM-DD'))[_0xa3b0('0x12')]()[_0xa3b0('0x14')](0x1,'s')[_0xa3b0('0x11')]()};_0x832f44[_0x33757b]=_0x3d6296;}else if(_0x28401c[_0xa3b0('0x15')]===_0xa3b0('0x16')){_0x832f44[_0x33757b]=_0x2c2579;}else{_0x832f44[_0x33757b]=_['isArray'](_0x2c2579)?_0x2c2579:JSON[_0xa3b0('0x5')](_0x2c2579);}}else{_0x832f44[_0x33757b]=_[_0xa3b0('0x17')](_0x2c2579)?_0x2c2579:JSON[_0xa3b0('0x5')](_0x2c2579);}}catch(_0x5a77ef){_0x832f44[_0x33757b]=_0x2c2579['split'](',');}});}return _0x832f44;};exports[_0xa3b0('0x18')]=function(_0x9934d0){_0x9934d0=parseInt(_0x9934d0,0xa);if(!_0x9934d0||_0x9934d0<0x0){_0x9934d0=LIMIT_VALUE;}return _0x9934d0;};exports[_0xa3b0('0x19')]=function(_0x3e5cc2){_0x3e5cc2=parseInt(_0x3e5cc2,0xa);if(!_0x3e5cc2||_0x3e5cc2<0x0){_0x3e5cc2=0x0;}return _0x3e5cc2;};exports[_0xa3b0('0x1a')]=function(_0x8ee65){var _0xd942fa,_0x5db1fc=null;if(_0x8ee65){_0xd942fa=_0x8ee65['split'](',');_0x5db1fc=_[_0xa3b0('0x1b')](_0xd942fa,function(_0x58b07b){if(_0x58b07b[_0xa3b0('0x1c')]('-')===0x0){return[_0x58b07b===_0xa3b0('0x1d')?sequelize[_0xa3b0('0x1e')](sequelize[_0xa3b0('0x1f')](_0xa3b0('0x1d')),'unsigned'):_0x58b07b['substr'](0x1),_0xa3b0('0x20')];}else{return[_0x58b07b==='priority'?sequelize[_0xa3b0('0x1e')](sequelize[_0xa3b0('0x1f')](_0xa3b0('0x1d')),'unsigned'):_0x58b07b,_0xa3b0('0x21')];}});}return _0x5db1fc;};exports[_0xa3b0('0x22')]=function(_0x257615,_0x41ba89){if(_[_0xa3b0('0xb')](_0x257615)){return _0x257615;}if(_[_0xa3b0('0x17')](_0x257615)){for(var _0x10e63d=0x0;_0x10e63d<_0x257615[_0xa3b0('0x23')];_0x10e63d+=0x1){_0x257615[_0x10e63d]=this[_0xa3b0('0x22')](_0x257615[_0x10e63d],_0x41ba89);}return _0x257615;}if(!_[_0xa3b0('0x24')](_0x257615)){return _0x257615;}if(_[_0xa3b0('0x25')](_0x41ba89)){_0x41ba89=[_0x41ba89];}if(!_['isArray'](_0x41ba89)){return _0x257615;}for(var _0xd58570=0x0;_0xd58570<_0x41ba89[_0xa3b0('0x23')];_0xd58570+=0x1){_[_0xa3b0('0x26')](_0x257615,_0x41ba89[_0xd58570]);}for(var _0x51d2a9 in _0x257615){if(_0x257615[_0xa3b0('0x27')](_0x51d2a9)){_0x257615[_0x51d2a9]=this[_0xa3b0('0x22')](_0x257615[_0x51d2a9],_0x41ba89);}}return _0x257615;};exports['isNumeric']=function(_0x5a357a){return _0x5a357a[_0xa3b0('0x28')](RegExp(_0xa3b0('0x29')))?!![]:![];};exports[_0xa3b0('0x2a')]=function(_0x4cd7cc){return _0x4cd7cc[_0xa3b0('0x28')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x56b090,_0x19eeb8){var _0x4244fb=[];var _0x10dff0=/[ `!@#$%^&*()_\-?~]/;var _0x5803cf=_0x19eeb8?_0xa3b0('0x2b'):_0xa3b0('0x2c');_0x56b090['split'](/[ ,]+/)[_0xa3b0('0x2d')](function(_0x284d39){_0x284d39=_0x284d39[_0xa3b0('0x2e')](/([^:]")"+/g,'$1');_0x284d39='+'+_0x284d39+'*';var _0x262d21=_0x284d39[_0xa3b0('0x28')](_0x10dff0);if(_0x262d21){_0x284d39='\x22'+_0x284d39+'\x22';}_0x4244fb[_0xa3b0('0x2f')](_0x284d39);});_0x5803cf=_0x5803cf[_0xa3b0('0x2e')](_0xa3b0('0x2c'),_0x4244fb[_0xa3b0('0x30')]('\x20'));return _0x5803cf;};exports[_0xa3b0('0x31')]=function(_0xc1e1fa,_0x41706c,_0x450201){var _0x931bdf={},_0x4e3497={};if(_0x41706c['query'][_0xa3b0('0x32')]){_0x41706c['query']['id']=_0x41706c[_0xa3b0('0x33')][_0xa3b0('0x32')];delete _0x41706c['query']['$id'];}_0x931bdf[_0xa3b0('0x6')]=_[_0xa3b0('0x1b')](_0xc1e1fa,_0xa3b0('0x15'));_0x931bdf[_0xa3b0('0x33')]=_[_0xa3b0('0x3')](_0x41706c['query']);_0x931bdf[_0xa3b0('0xa')]=_[_0xa3b0('0x34')](_0x931bdf[_0xa3b0('0x6')],_0x931bdf['query']);_0x4e3497['attributes']=_['intersection'](_0x931bdf['model'],this[_0xa3b0('0x8')](_0x41706c[_0xa3b0('0x33')][_0xa3b0('0x8')]));_0x4e3497[_0xa3b0('0x35')]=_0x4e3497[_0xa3b0('0x35')][_0xa3b0('0x23')]?_0x4e3497[_0xa3b0('0x35')]:_0x931bdf[_0xa3b0('0x6')];if(!_0x41706c['query']['hasOwnProperty'](_0xa3b0('0x36'))){_0x4e3497[_0xa3b0('0x18')]=this['limit'](_0x41706c[_0xa3b0('0x33')][_0xa3b0('0x18')]);_0x4e3497[_0xa3b0('0x19')]=this['offset'](_0x41706c[_0xa3b0('0x33')][_0xa3b0('0x19')]);}_0x4e3497['order']=this[_0xa3b0('0x1a')](_0x41706c[_0xa3b0('0x33')][_0xa3b0('0x1a')]);_0x4e3497['where']=this[_0xa3b0('0xa')](_[_0xa3b0('0x37')](_0x41706c[_0xa3b0('0x33')],_0x931bdf['filters']),_0xc1e1fa);if(_0x41706c['query'][_0xa3b0('0x38')]){var _0x2f379e=_0xc1e1fa;var _0x59ef56=_0x41706c[_0xa3b0('0x33')][_0xa3b0('0x38')];if(typeof _0x59ef56==='object'){_0x2f379e=_[_0xa3b0('0x38')](_0xc1e1fa,function(_0x30e34b){return _[_0xa3b0('0x4')](_0x59ef56[_0xa3b0('0x39')],_0x30e34b['name']);});_0x59ef56=_0x59ef56[_0xa3b0('0x3a')];}_0x4e3497[_0xa3b0('0x3b')]=_[_0xa3b0('0x3c')](_0x4e3497[_0xa3b0('0x3b')],{'$or':_[_0xa3b0('0x1b')](_0x2f379e,function(_0x30779d){if(_0x30779d[_0xa3b0('0xe')]!=='VIRTUAL'){if(_0x450201){return sequelize['where'](sequelize['fn'](_0xa3b0('0x3d'),sequelize['col'](_0x30779d['name'])),{'$like':sequelize['fn'](_0xa3b0('0x3d'),'%'+_0x41706c[_0xa3b0('0x33')][_0xa3b0('0x38')]+'%')});}else{var _0x258dd4={};_0x258dd4[_0x30779d['name']]={'$like':'%'+_0x41706c[_0xa3b0('0x33')][_0xa3b0('0x38')]+'%'};return _0x258dd4;}}})});}_0x4e3497=_[_0xa3b0('0x3c')]({},_0x4e3497,_0x41706c['options']);return _0x4e3497;};exports[_0xa3b0('0x3e')]=function(_0x5b0603){var _0x47980f=[];if(_0x5b0603[_0xa3b0('0x3f')]){_0x47980f['push']({'all':!![]});}else if(_0x5b0603[_0xa3b0('0x3e')]){if(Array['isArray'](_0x5b0603[_0xa3b0('0x3e')])){_0x47980f=Object[_0xa3b0('0x3')](_0x5b0603['include'])[_0xa3b0('0x1b')](function(_0x4e54db){return parseIncludeModel(_0x5b0603[_0xa3b0('0x3e')][_0x4e54db]);});}else{var _0x21780e=parseIncludeModel(_0x5b0603[_0xa3b0('0x3e')]);_0x47980f[_0xa3b0('0x2f')](_0x21780e);}}return _0x47980f;};
\ No newline at end of file
+var _0x04f1=['ASC','omit','length','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','getFullTextValue','{EXPR}','forEach','replace','join','query','$id','attributes','intersection','nolimit','where','pick','filter','merge','VIRTUAL','lower','include','includeAll','push','lodash','sequelize','moment','parse','keys','model','raw','fields','split','filters','isEmpty','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','name','isArray','limit','offset','sort','map','priority','col','unsigned','DESC','cast'];(function(_0x6d4288,_0x33d776){var _0x95aebe=function(_0x5acf07){while(--_0x5acf07){_0x6d4288['push'](_0x6d4288['shift']());}};_0x95aebe(++_0x33d776);}(_0x04f1,0x92));var _0x104f=function(_0x317869,_0x4c497f){_0x317869=_0x317869-0x0;var _0x3e2bab=_0x04f1[_0x317869];return _0x3e2bab;};'use strict';var _=require(_0x104f('0x0'));var sequelize=require(_0x104f('0x1'));var moment=require(_0x104f('0x2'));var db=require('../../mysqldb')['db'];var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x49868f){var _0x1c9941=['ne'];try{var _0x442b5d=JSON[_0x104f('0x3')](_0x49868f);var _0x55c56e=Object['keys'](_0x442b5d)[0x0];return _0x1c9941['includes'](_0x55c56e);}catch(_0x4f9e77){return![];}}function getOperatorValue(_0x4e767b){var _0x20a746=JSON[_0x104f('0x3')](_0x4e767b);var _0x5b7110=Object[_0x104f('0x4')](_0x20a746)[0x0];var _0x57acf5=_0x20a746[_0x5b7110];return{['$'+_0x5b7110]:_0x57acf5};}function parseIncludeModel(_0x47582b){var _0x258503=JSON[_0x104f('0x3')](_0x47582b);return{'model':db[_0x258503[_0x104f('0x5')]],'as':_0x258503['alias'],'attributes':_0x258503['fields'],'raw':_0x258503[_0x104f('0x6')]};}exports[_0x104f('0x7')]=function(_0x1e5996){var _0x2a62e7=null;if(_0x1e5996){_0x2a62e7=_0x1e5996[_0x104f('0x8')](',');}return _0x2a62e7;};exports[_0x104f('0x9')]=function(_0x395321,_0x175506){var _0x294cdc={};if(!_[_0x104f('0xa')](_0x395321)){_['forOwn'](_0x395321,function(_0x11b95f,_0x346442){try{if(_0x175506){var _0x149a32=_[_0x104f('0xb')](_0x175506,{'name':_0x346442})||{};if(hasSequelizeOperator(_0x11b95f)){_0x294cdc[_0x346442]=getOperatorValue(_0x11b95f);}else if(_0x149a32[_0x104f('0xc')]===_0x104f('0xd')&&_[_0x104f('0xe')](_0x11b95f)){var _0x373b4f=JSON[_0x104f('0x3')](_0x11b95f);var _0x67d2be={'$gte':moment(moment(_0x373b4f[_0x104f('0xf')])[_0x104f('0x10')](_0x104f('0x11')))[_0x104f('0x12')]()['format'](),'$lte':moment(moment(_0x373b4f[_0x104f('0x13')])[_0x104f('0x10')](_0x104f('0x11')))[_0x104f('0x12')]()['subtract'](0x1,'s')[_0x104f('0x10')]()};_0x294cdc[_0x346442]=_0x67d2be;}else if(_0x149a32[_0x104f('0x14')]==='uniqueid'){_0x294cdc[_0x346442]=_0x11b95f;}else{_0x294cdc[_0x346442]=_[_0x104f('0x15')](_0x11b95f)?_0x11b95f:JSON[_0x104f('0x3')](_0x11b95f);}}else{_0x294cdc[_0x346442]=_['isArray'](_0x11b95f)?_0x11b95f:JSON[_0x104f('0x3')](_0x11b95f);}}catch(_0x2760da){_0x294cdc[_0x346442]=_0x11b95f[_0x104f('0x8')](',');}});}return _0x294cdc;};exports[_0x104f('0x16')]=function(_0x2a256a){_0x2a256a=parseInt(_0x2a256a,0xa);if(!_0x2a256a||_0x2a256a<0x0){_0x2a256a=LIMIT_VALUE;}return _0x2a256a;};exports[_0x104f('0x17')]=function(_0x4f712e){_0x4f712e=parseInt(_0x4f712e,0xa);if(!_0x4f712e||_0x4f712e<0x0){_0x4f712e=0x0;}return _0x4f712e;};exports[_0x104f('0x18')]=function(_0x49f853){var _0x54c992,_0x18a7bf=null;if(_0x49f853){_0x54c992=_0x49f853[_0x104f('0x8')](',');_0x18a7bf=_[_0x104f('0x19')](_0x54c992,function(_0x4a84ef){if(_0x4a84ef['indexOf']('-')===0x0){return[_0x4a84ef===_0x104f('0x1a')?sequelize['cast'](sequelize[_0x104f('0x1b')](_0x104f('0x1a')),_0x104f('0x1c')):_0x4a84ef['substr'](0x1),_0x104f('0x1d')];}else{return[_0x4a84ef==='priority'?sequelize[_0x104f('0x1e')](sequelize[_0x104f('0x1b')](_0x104f('0x1a')),'unsigned'):_0x4a84ef,_0x104f('0x1f')];}});}return _0x18a7bf;};exports[_0x104f('0x20')]=function(_0x307a45,_0xd7adde){if(_['isEmpty'](_0x307a45)){return _0x307a45;}if(_[_0x104f('0x15')](_0x307a45)){for(var _0x48261e=0x0;_0x48261e<_0x307a45[_0x104f('0x21')];_0x48261e+=0x1){_0x307a45[_0x48261e]=this[_0x104f('0x20')](_0x307a45[_0x48261e],_0xd7adde);}return _0x307a45;}if(!_['isObject'](_0x307a45)){return _0x307a45;}if(_[_0x104f('0x22')](_0xd7adde)){_0xd7adde=[_0xd7adde];}if(!_['isArray'](_0xd7adde)){return _0x307a45;}for(var _0x28fe5c=0x0;_0x28fe5c<_0xd7adde[_0x104f('0x21')];_0x28fe5c+=0x1){_[_0x104f('0x23')](_0x307a45,_0xd7adde[_0x28fe5c]);}for(var _0x3f6005 in _0x307a45){if(_0x307a45[_0x104f('0x24')](_0x3f6005)){_0x307a45[_0x3f6005]=this[_0x104f('0x20')](_0x307a45[_0x3f6005],_0xd7adde);}}return _0x307a45;};exports[_0x104f('0x25')]=function(_0x4661f6){return _0x4661f6[_0x104f('0x26')](RegExp(_0x104f('0x27')))?!![]:![];};exports['isEmail']=function(_0x55d63c){return _0x55d63c[_0x104f('0x26')](/^\S+@\S+$/)?!![]:![];};exports[_0x104f('0x28')]=function(_0x1b0714,_0x245853){var _0x39d8cf=[];var _0x295b42=/[ `!@#$%^&*()_\-?~]/;var _0x4d988b=_0x245853?'\x22{EXPR}\x22':_0x104f('0x29');_0x1b0714[_0x104f('0x8')](/[ ,]+/)[_0x104f('0x2a')](function(_0x1e633d){_0x1e633d=_0x1e633d[_0x104f('0x2b')](/([^:]")"+/g,'$1');_0x1e633d='+'+_0x1e633d+'*';var _0x1e3c73=_0x1e633d['match'](_0x295b42);if(_0x1e3c73){_0x1e633d='\x22'+_0x1e633d+'\x22';}_0x39d8cf['push'](_0x1e633d);});_0x4d988b=_0x4d988b['replace'](_0x104f('0x29'),_0x39d8cf[_0x104f('0x2c')]('\x20'));return _0x4d988b;};exports['getOptions']=function(_0x1d7a1b,_0x538735,_0x5d9e79){var _0x30198d={},_0x488e5f={};if(_0x538735['query']['$id']){_0x538735[_0x104f('0x2d')]['id']=_0x538735['query'][_0x104f('0x2e')];delete _0x538735[_0x104f('0x2d')]['$id'];}_0x30198d['model']=_[_0x104f('0x19')](_0x1d7a1b,'name');_0x30198d[_0x104f('0x2d')]=_[_0x104f('0x4')](_0x538735['query']);_0x30198d[_0x104f('0x9')]=_['intersection'](_0x30198d['model'],_0x30198d['query']);_0x488e5f[_0x104f('0x2f')]=_[_0x104f('0x30')](_0x30198d['model'],this['fields'](_0x538735[_0x104f('0x2d')][_0x104f('0x7')]));_0x488e5f[_0x104f('0x2f')]=_0x488e5f[_0x104f('0x2f')][_0x104f('0x21')]?_0x488e5f[_0x104f('0x2f')]:_0x30198d['model'];if(!_0x538735[_0x104f('0x2d')]['hasOwnProperty'](_0x104f('0x31'))){_0x488e5f['limit']=this[_0x104f('0x16')](_0x538735['query']['limit']);_0x488e5f[_0x104f('0x17')]=this[_0x104f('0x17')](_0x538735[_0x104f('0x2d')][_0x104f('0x17')]);}_0x488e5f['order']=this[_0x104f('0x18')](_0x538735[_0x104f('0x2d')][_0x104f('0x18')]);_0x488e5f[_0x104f('0x32')]=this[_0x104f('0x9')](_[_0x104f('0x33')](_0x538735['query'],_0x30198d['filters']),_0x1d7a1b);if(_0x538735[_0x104f('0x2d')][_0x104f('0x34')]){var _0x428841=_0x1d7a1b;var _0x144d8c=_0x538735[_0x104f('0x2d')][_0x104f('0x34')];if(typeof _0x144d8c==='object'){_0x428841=_[_0x104f('0x34')](_0x1d7a1b,function(_0x5613ad){return _['includes'](_0x144d8c['columns'],_0x5613ad[_0x104f('0x14')]);});_0x144d8c=_0x144d8c['value'];}_0x488e5f[_0x104f('0x32')]=_[_0x104f('0x35')](_0x488e5f[_0x104f('0x32')],{'$or':_[_0x104f('0x19')](_0x428841,function(_0x10de7){if(_0x10de7[_0x104f('0xc')]!==_0x104f('0x36')){if(_0x5d9e79){return sequelize['where'](sequelize['fn'](_0x104f('0x37'),sequelize[_0x104f('0x1b')](_0x10de7['name'])),{'$like':sequelize['fn'](_0x104f('0x37'),'%'+_0x538735[_0x104f('0x2d')][_0x104f('0x34')]+'%')});}else{var _0x5a0be6={};_0x5a0be6[_0x10de7[_0x104f('0x14')]]={'$like':'%'+_0x538735[_0x104f('0x2d')][_0x104f('0x34')]+'%'};return _0x5a0be6;}}})});}_0x488e5f=_[_0x104f('0x35')]({},_0x488e5f,_0x538735['options']);return _0x488e5f;};exports[_0x104f('0x38')]=function(_0xce92f){var _0x51d9fa=[];if(_0xce92f[_0x104f('0x39')]){_0x51d9fa[_0x104f('0x3a')]({'all':!![]});}else if(_0xce92f[_0x104f('0x38')]){if(Array['isArray'](_0xce92f[_0x104f('0x38')])){_0x51d9fa=Object[_0x104f('0x4')](_0xce92f['include'])[_0x104f('0x19')](function(_0x48f454){return parseIncludeModel(_0xce92f[_0x104f('0x38')][_0x48f454]);});}else{var _0x485ba1=parseIncludeModel(_0xce92f['include']);_0x51d9fa[_0x104f('0x3a')](_0x485ba1);}}return _0x51d9fa;};
\ No newline at end of file
index 4be4855..2cd14cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['lastPauseAt','openchannelCapacity','mailCapacity','whatsappCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatus','faxStatus','chatStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','filterAgentAttributes','online','faxStatusTime','openchannelStatusTime','voiceStatusTime','faxCapacity','smsCapacity','smsCurrentCapacity','onhold','lodash','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','mailPause','smsPause','whatsappPause','filter','length','idle','unknown','unavailable','isNil','voiceStatus','voicePause','pause','mailStatus','openchannelStatus','smsStatus','whatsappStatus','request','then','error','catch','*pause','busy','getAgentStatus','isArray','startCase','Queue','map','findOne','getAgents','uniq','value','getAgentIdsByQueues','getAgentIdsByStatus','resolve','includes','name','fullname','openchannelPause','pauseType','find','merge','fields','startsWith','DESC','fullname,internal','internal','validateSortParameter','sort','globalStatus','toLowerCase','sortAgentsByStatus','userpic','lastLoginAt'];(function(_0x125ad0,_0x321963){var _0x1f3f04=function(_0x3e7d24){while(--_0x3e7d24){_0x125ad0['push'](_0x125ad0['shift']());}};_0x1f3f04(++_0x321963);}(_0x98a8,0x12c));var _0x898a=function(_0x1c8ad2,_0x4162ad){_0x1c8ad2=_0x1c8ad2-0x0;var _0x432c0e=_0x98a8[_0x1c8ad2];return _0x432c0e;};'use strict';var _=require(_0x898a('0x0'));var jayson=require(_0x898a('0x1'));var db=require(_0x898a('0x2'))['db'];var amiClient=jayson[_0x898a('0x3')][_0x898a('0x4')]({'port':0x232a});var routingClient=jayson[_0x898a('0x3')][_0x898a('0x4')]({'port':0x232c});function isAgentPaused(_0x4a0836,_0x2bb3e2){var _0xf84a19=[_0x4a0836[_0x898a('0x5')],_0x4a0836[_0x898a('0x6')],_0x4a0836[_0x898a('0x7')],_0x4a0836['openchannelPause'],_0x4a0836[_0x898a('0x8')],_0x4a0836['voicePause'],_0x4a0836[_0x898a('0x9')]];if(!_0x2bb3e2)return _['every'](_0xf84a19);var _0x42021d=_[_0x898a('0xa')](_0xf84a19);return _0x42021d[_0x898a('0xb')]>0x0&&_0x42021d[_0x898a('0xb')]<_0xf84a19[_0x898a('0xb')]?!![]:![];}function isIdle(_0x388a47){return _0x388a47===_0x898a('0xc')||_0x388a47===_0x898a('0xd')||_0x388a47===_0x898a('0xe')||_0x388a47==='ringing'||_[_0x898a('0xf')](_0x388a47);}function isAgentIdle(_0x502e95){if(_0x502e95[_0x898a('0x10')]!=='idle'&&_0x502e95[_0x898a('0x11')]){_0x502e95[_0x898a('0x10')]=_0x898a('0x12');return![];}return _['every']([_0x502e95['chatStatus'],_0x502e95['faxStatus'],_0x502e95[_0x898a('0x13')],_0x502e95[_0x898a('0x14')],_0x502e95[_0x898a('0x15')],_0x502e95[_0x898a('0x10')],_0x502e95[_0x898a('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x898a('0x17')]('Agents',{})[_0x898a('0x18')](function(_0x53a4b8){if(_0x53a4b8[_0x898a('0x19')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x303321=_0x53a4b8['result'];return routingClient[_0x898a('0x17')]('Agents',{})[_0x898a('0x18')](function(_0x3197f7){if(_0x3197f7[_0x898a('0x19')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x1faf4c=_0x3197f7['result'];return _['merge']({},_0x303321,_0x1faf4c);});})[_0x898a('0x1a')](function(_0x1455ab){throw _0x1455ab;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x4d374b){var _0x12bc0f=_0x898a('0xd');if(isAgentPaused(_0x4d374b))_0x12bc0f=_0x898a('0x12');else if(isAgentPaused(_0x4d374b,!![]))_0x12bc0f=_0x898a('0x1b');else if(isAgentIdle(_0x4d374b))_0x12bc0f=_0x898a('0xc');else _0x12bc0f=_0x898a('0x1c');return _0x12bc0f;}exports[_0x898a('0x1d')]=getAgentStatus;function getAgentIdsByQueues(_0x483212,_0x247cfc){var _0x50718e=_[_0x898a('0x1e')](_0x483212)?_0x483212:[_0x483212];var _0x3cfd9c=_[_0x898a('0x1f')](_0x247cfc)+_0x898a('0x20');var _0x4e254d=_[_0x898a('0x21')](_0x50718e,function(_0x16c318){return db[_0x3cfd9c][_0x898a('0x22')]({'where':{'id':_0x16c318}})[_0x898a('0x18')](function(_0x3901ab){if(!_0x3901ab)return[];return _0x3901ab[_0x898a('0x23')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x4e254d)[_0x898a('0x18')](function(_0x51d501){var _0x513c6b=_(_0x51d501)['flatten']()[_0x898a('0x21')]('id')[_0x898a('0x24')]()[_0x898a('0x25')]();return _0x513c6b;});}exports[_0x898a('0x26')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x28ae6a,_0x2efde2,_0x398e98){try{if(_0x2efde2[_0x898a('0xb')]>0x0){_0x28ae6a=_0x28ae6a[_0x898a('0xa')](function(_0x58149d){return _0x2efde2['includes'](_0x58149d['id']);});}var _0x47f1ed=_0x28ae6a[_0x898a('0xa')](function(_0x62fe93){var _0x3b7704=_0x898a('0x1c');if(isAgentIdle(_0x62fe93)){_0x3b7704=_0x898a('0xc');}return _0x3b7704===_0x398e98;});return _[_0x898a('0x21')](_0x47f1ed,'id');}catch(_0xe3c983){throw _0xe3c983;}}exports[_0x898a('0x27')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x18773a,_0x4287da,_0x44c5d2){return Promise[_0x898a('0x28')]()['then'](function(){if(_0x4287da[_0x898a('0xb')]>0x0){_0x18773a=_0x18773a[_0x898a('0xa')](function(_0x26eead){return _0x4287da[_0x898a('0x29')](_0x26eead['id']);});}return _0x18773a;})[_0x898a('0x18')](function(){return db['User']['findAll']({'attributes':['id',_0x898a('0x2a'),_0x898a('0x2b'),_0x898a('0x5'),'faxPause',_0x898a('0x7'),_0x898a('0x2c'),_0x898a('0x8'),_0x898a('0x11'),_0x898a('0x9'),_0x898a('0x2d')],'where':{'id':{'$in':_[_0x898a('0x21')](_0x18773a,'id')}},'raw':!![]});})[_0x898a('0x18')](function(_0x50bb4b){return _0x50bb4b[_0x898a('0x21')](function(_0x5baf5b){var _0x573eb3=_[_0x898a('0x2e')](_0x18773a,['id',_0x5baf5b['id']]);var _0x58d997=filterAgentAttributes(_0x573eb3);_[_0x898a('0x2f')](_0x5baf5b,_0x58d997);_0x5baf5b['globalStatus']=getAgentStatus(_0x5baf5b);return _0x5baf5b;});})[_0x898a('0x18')](function(_0x4f202c){var _0x299371=sortAgentsByStatus(_0x4f202c,_0x44c5d2);return _[_0x898a('0x21')](_0x299371,'id');})[_0x898a('0x1a')](function(_0x50c0e4){throw _0x50c0e4;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x47966e){var _0x1575d2={'fields':[],'order':null};var _0x429c32=_0x47966e['split'](',');_0x1575d2[_0x898a('0x30')]=_[_0x898a('0xa')](_0x429c32,function(_0xe84f7e){if(!_0xe84f7e[_0x898a('0x29')]('globalStatus')){return!![];}_0x1575d2['order']=_[_0x898a('0x31')](_0xe84f7e,'-')?_0x898a('0x32'):'ASC';return![];});return _0x1575d2;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x168f92){if(!_0x168f92){_0x168f92=_0x898a('0x33');}if(_0x168f92[_0x898a('0x29')](_0x898a('0x2b'))&&!_0x168f92['includes'](_0x898a('0x34'))){var _0x369c02=_0x168f92['substring'](0x0,_0x168f92['indexOf']('fullname'));_0x168f92+=','+_0x369c02+_0x898a('0x34');}return _0x168f92;}exports[_0x898a('0x35')]=validateSortParameter;function sortAgentsByStatus(_0x35d767,_0x22f464){var _0x20a6eb=_0x35d767[_0x898a('0x36')](function(_0x10daf6,_0x1432ec){if(_0x10daf6[_0x898a('0x37')]===_0x1432ec[_0x898a('0x37')]){if(_0x10daf6[_0x898a('0x37')]===_0x898a('0x12')){if(_0x22f464===_0x898a('0x32')){return(_0x10daf6[_0x898a('0x2d')]||'')<(_0x1432ec[_0x898a('0x2d')]||'')||_0x10daf6['fullname'][_0x898a('0x38')]()>_0x1432ec[_0x898a('0x2b')][_0x898a('0x38')]()?0x1:-0x1;}else{return(_0x10daf6['pauseType']||'')<(_0x1432ec[_0x898a('0x2d')]||'')||_0x10daf6[_0x898a('0x2b')][_0x898a('0x38')]()>_0x1432ec[_0x898a('0x2b')][_0x898a('0x38')]()?-0x1:0x1;}}else{if(_0x22f464===_0x898a('0x32')){return _0x10daf6[_0x898a('0x2b')][_0x898a('0x38')]()<_0x1432ec['fullname'][_0x898a('0x38')]()?0x1:-0x1;}else{return _0x10daf6[_0x898a('0x2b')][_0x898a('0x38')]()<_0x1432ec[_0x898a('0x2b')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x22f464===_0x898a('0x32')){return _0x10daf6[_0x898a('0x37')]<_0x1432ec['globalStatus']?0x1:-0x1;}else{return _0x10daf6[_0x898a('0x37')]<_0x1432ec['globalStatus']?-0x1:0x1;}}});return _0x20a6eb;}exports[_0x898a('0x39')]=sortAgentsByStatus;function filterAgentAttributes(_0x5137c4){var _0x486e66=[_0x898a('0x3a'),'online',_0x898a('0x3b'),_0x898a('0x3c'),'pauseType',_0x898a('0x3c'),_0x898a('0x34'),'address',_0x898a('0x5'),_0x898a('0x2c'),_0x898a('0x7'),_0x898a('0x8'),'whatsappPause',_0x898a('0x6'),_0x898a('0x11'),'chatCapacity',_0x898a('0x3d'),_0x898a('0x3e'),'smsCapacity',_0x898a('0x3f'),'faxCapacity',_0x898a('0x40'),_0x898a('0x41'),_0x898a('0x42'),'smsCurrentCapacity',_0x898a('0x43'),_0x898a('0x44'),_0x898a('0x45'),_0x898a('0x14'),'mailStatus',_0x898a('0x15'),'whatsappStatus',_0x898a('0x46'),_0x898a('0x10'),_0x898a('0x47'),'openchannelStatusTime',_0x898a('0x48'),_0x898a('0x49'),_0x898a('0x4a'),'faxStatusTime','voiceStatusTime',_0x898a('0x4b'),_0x898a('0x4c'),_0x898a('0x4d'),_0x898a('0x4e'),_0x898a('0x4f'),_0x898a('0x50')];var _0x369f33=[_0x898a('0x5'),_0x898a('0x2c'),_0x898a('0x7'),_0x898a('0x8'),'whatsappPause',_0x898a('0x6'),_0x898a('0x11'),'online'];var _0x36d7aa=_(_0x5137c4)['omit'](_0x369f33)['pick'](_0x486e66)[_0x898a('0x25')]();return _0x36d7aa;}exports[_0x898a('0x51')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0x898a('0x2a'),'fullname','role',_0x898a('0x34'),_0x898a('0x52'),'globalStatus',_0x898a('0x3a'),_0x898a('0x3b'),'pauseType',_0x898a('0x3c'),_0x898a('0x6'),_0x898a('0x5'),'mailPause',_0x898a('0x2c'),_0x898a('0x8'),_0x898a('0x11'),_0x898a('0x9'),_0x898a('0x45'),_0x898a('0x46'),'mailStatus',_0x898a('0x14'),'smsStatus',_0x898a('0x10'),_0x898a('0x16'),_0x898a('0x47'),_0x898a('0x53'),_0x898a('0x48'),_0x898a('0x54'),_0x898a('0x49'),_0x898a('0x55'),_0x898a('0x4a'),'chatCapacity',_0x898a('0x56'),_0x898a('0x3e'),_0x898a('0x3d'),_0x898a('0x57'),_0x898a('0x3f'),_0x898a('0x40'),_0x898a('0x44'),_0x898a('0x42'),_0x898a('0x41'),_0x898a('0x58'),_0x898a('0x43'),_0x898a('0x4e'),_0x898a('0x4f'),_0x898a('0x4c'),_0x898a('0x59'),'queue',_0x898a('0x50'),_0x898a('0x4d')];}exports['getRealtimeAgentsQueryFields']=getRealtimeAgentsQueryFields;
\ No newline at end of file
+var _0x55ca=['mailPause','openchannelPause','smsPause','whatsappPause','every','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','voicePause','openchannelStatus','smsStatus','whatsappStatus','request','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','pause','busy','isArray','Queue','findOne','getAgents','all','flatten','map','uniq','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','User','findAll','name','fullname','pauseType','find','getSortedAgentsIdsByStatus','split','globalStatus','order','ASC','fullname,internal','substring','indexOf','internal','sort','DESC','toLowerCase','sortAgentsByStatus','online','lastLoginAt','lastPauseAt','address','chatCapacity','mailCapacity','smsCapacity','whatsappCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatus','mailStatus','faxStatus','openchannelStatusTime','mailStatusTime','smsStatusTime','faxStatusTime','voiceStatusTime','destconnectedlinenum','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','filterAgentAttributes','userpic','chatStatusTime','whatsappStatusTime','openchannelCapacity','mailCurrentCapacity','onhold','queue','screenrecording','getRealtimeAgentsQueryFields','lodash','jayson/promise','client','http','chatPause','faxPause'];(function(_0x195ff5,_0xe3e93c){var _0x376924=function(_0x4ee15d){while(--_0x4ee15d){_0x195ff5['push'](_0x195ff5['shift']());}};_0x376924(++_0xe3e93c);}(_0x55ca,0x126));var _0xa55c=function(_0x4dd71c,_0x23a24e){_0x4dd71c=_0x4dd71c-0x0;var _0x8e4e36=_0x55ca[_0x4dd71c];return _0x8e4e36;};'use strict';var _=require(_0xa55c('0x0'));var jayson=require(_0xa55c('0x1'));var db=require('../../mysqldb')['db'];var amiClient=jayson['client']['http']({'port':0x232a});var routingClient=jayson[_0xa55c('0x2')][_0xa55c('0x3')]({'port':0x232c});function isAgentPaused(_0x5dc716,_0x3b478a){var _0x2db02a=[_0x5dc716[_0xa55c('0x4')],_0x5dc716[_0xa55c('0x5')],_0x5dc716[_0xa55c('0x6')],_0x5dc716[_0xa55c('0x7')],_0x5dc716[_0xa55c('0x8')],_0x5dc716['voicePause'],_0x5dc716[_0xa55c('0x9')]];if(!_0x3b478a)return _[_0xa55c('0xa')](_0x2db02a);var _0x57e069=_[_0xa55c('0xb')](_0x2db02a);return _0x57e069[_0xa55c('0xc')]>0x0&&_0x57e069['length']<_0x2db02a['length']?!![]:![];}function isIdle(_0x473d0e){return _0x473d0e===_0xa55c('0xd')||_0x473d0e===_0xa55c('0xe')||_0x473d0e===_0xa55c('0xf')||_0x473d0e===_0xa55c('0x10')||_[_0xa55c('0x11')](_0x473d0e);}function isAgentIdle(_0x508342){if(_0x508342[_0xa55c('0x12')]!==_0xa55c('0xd')&&_0x508342[_0xa55c('0x13')]){_0x508342['voiceStatus']='pause';return![];}return _[_0xa55c('0xa')]([_0x508342['chatStatus'],_0x508342['faxStatus'],_0x508342['mailStatus'],_0x508342[_0xa55c('0x14')],_0x508342[_0xa55c('0x15')],_0x508342[_0xa55c('0x12')],_0x508342[_0xa55c('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient[_0xa55c('0x17')](_0xa55c('0x18'),{})['then'](function(_0x3ccf65){if(_0x3ccf65[_0xa55c('0x19')]){throw new Error(_0xa55c('0x1a'));}var _0x31e10d=_0x3ccf65[_0xa55c('0x1b')];return routingClient[_0xa55c('0x17')](_0xa55c('0x18'),{})[_0xa55c('0x1c')](function(_0x24783b){if(_0x24783b['error']){throw new Error(_0xa55c('0x1d'));}var _0x104a99=_0x24783b[_0xa55c('0x1b')];return _[_0xa55c('0x1e')]({},_0x31e10d,_0x104a99);});})[_0xa55c('0x1f')](function(_0x5426e5){throw _0x5426e5;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x5f5158){var _0xd643cc=_0xa55c('0xe');if(isAgentPaused(_0x5f5158))_0xd643cc=_0xa55c('0x20');else if(isAgentPaused(_0x5f5158,!![]))_0xd643cc='*pause';else if(isAgentIdle(_0x5f5158))_0xd643cc=_0xa55c('0xd');else _0xd643cc=_0xa55c('0x21');return _0xd643cc;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x187a87,_0x133096){var _0x940f28=_[_0xa55c('0x22')](_0x187a87)?_0x187a87:[_0x187a87];var _0x234372=_['startCase'](_0x133096)+_0xa55c('0x23');var _0x504c24=_['map'](_0x940f28,function(_0x59d89a){return db[_0x234372][_0xa55c('0x24')]({'where':{'id':_0x59d89a}})['then'](function(_0x3ecbe7){if(!_0x3ecbe7)return[];return _0x3ecbe7[_0xa55c('0x25')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xa55c('0x26')](_0x504c24)[_0xa55c('0x1c')](function(_0x2313a9){var _0x170ba4=_(_0x2313a9)[_0xa55c('0x27')]()[_0xa55c('0x28')]('id')[_0xa55c('0x29')]()[_0xa55c('0x2a')]();return _0x170ba4;});}exports[_0xa55c('0x2b')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x57f271,_0x430d55,_0x28814f){try{if(_0x430d55[_0xa55c('0xc')]>0x0){_0x57f271=_0x57f271[_0xa55c('0xb')](function(_0x5d940d){return _0x430d55[_0xa55c('0x2c')](_0x5d940d['id']);});}var _0x22f6b6=_0x57f271[_0xa55c('0xb')](function(_0x201941){var _0x45ee8d=_0xa55c('0x21');if(isAgentIdle(_0x201941)){_0x45ee8d='idle';}return _0x45ee8d===_0x28814f;});return _[_0xa55c('0x28')](_0x22f6b6,'id');}catch(_0x490b7d){throw _0x490b7d;}}exports[_0xa55c('0x2d')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x1d730b,_0x1cc53e,_0x223813){return Promise['resolve']()[_0xa55c('0x1c')](function(){if(_0x1cc53e[_0xa55c('0xc')]>0x0){_0x1d730b=_0x1d730b[_0xa55c('0xb')](function(_0x20da31){return _0x1cc53e[_0xa55c('0x2c')](_0x20da31['id']);});}return _0x1d730b;})[_0xa55c('0x1c')](function(){return db[_0xa55c('0x2e')][_0xa55c('0x2f')]({'attributes':['id',_0xa55c('0x30'),_0xa55c('0x31'),_0xa55c('0x4'),'faxPause','mailPause',_0xa55c('0x7'),_0xa55c('0x8'),'voicePause',_0xa55c('0x9'),_0xa55c('0x32')],'where':{'id':{'$in':_[_0xa55c('0x28')](_0x1d730b,'id')}},'raw':!![]});})[_0xa55c('0x1c')](function(_0x30d4f8){return _0x30d4f8[_0xa55c('0x28')](function(_0x3ce1b3){var _0x222d4b=_[_0xa55c('0x33')](_0x1d730b,['id',_0x3ce1b3['id']]);var _0x53590c=filterAgentAttributes(_0x222d4b);_['merge'](_0x3ce1b3,_0x53590c);_0x3ce1b3['globalStatus']=getAgentStatus(_0x3ce1b3);return _0x3ce1b3;});})[_0xa55c('0x1c')](function(_0x18e00e){var _0x2bb4f0=sortAgentsByStatus(_0x18e00e,_0x223813);return _['map'](_0x2bb4f0,'id');})[_0xa55c('0x1f')](function(_0x547930){throw _0x547930;});}exports[_0xa55c('0x34')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x4ad813){var _0x18c6f1={'fields':[],'order':null};var _0x39267c=_0x4ad813[_0xa55c('0x35')](',');_0x18c6f1['fields']=_[_0xa55c('0xb')](_0x39267c,function(_0x30f23b){if(!_0x30f23b['includes'](_0xa55c('0x36'))){return!![];}_0x18c6f1[_0xa55c('0x37')]=_['startsWith'](_0x30f23b,'-')?'DESC':_0xa55c('0x38');return![];});return _0x18c6f1;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x1e75dc){if(!_0x1e75dc){_0x1e75dc=_0xa55c('0x39');}if(_0x1e75dc['includes']('fullname')&&!_0x1e75dc['includes']('internal')){var _0x3b3308=_0x1e75dc[_0xa55c('0x3a')](0x0,_0x1e75dc[_0xa55c('0x3b')](_0xa55c('0x31')));_0x1e75dc+=','+_0x3b3308+_0xa55c('0x3c');}return _0x1e75dc;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x3d52d8,_0x7cc363){var _0x77d623=_0x3d52d8[_0xa55c('0x3d')](function(_0x43bac0,_0x23cef5){if(_0x43bac0['globalStatus']===_0x23cef5[_0xa55c('0x36')]){if(_0x43bac0['globalStatus']==='pause'){if(_0x7cc363===_0xa55c('0x3e')){return(_0x43bac0[_0xa55c('0x32')]||'')<(_0x23cef5['pauseType']||'')||_0x43bac0[_0xa55c('0x31')]['toLowerCase']()>_0x23cef5['fullname'][_0xa55c('0x3f')]()?0x1:-0x1;}else{return(_0x43bac0[_0xa55c('0x32')]||'')<(_0x23cef5[_0xa55c('0x32')]||'')||_0x43bac0['fullname'][_0xa55c('0x3f')]()>_0x23cef5[_0xa55c('0x31')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x7cc363===_0xa55c('0x3e')){return _0x43bac0['fullname'][_0xa55c('0x3f')]()<_0x23cef5[_0xa55c('0x31')]['toLowerCase']()?0x1:-0x1;}else{return _0x43bac0[_0xa55c('0x31')][_0xa55c('0x3f')]()<_0x23cef5['fullname'][_0xa55c('0x3f')]()?-0x1:0x1;}}}else{if(_0x7cc363===_0xa55c('0x3e')){return _0x43bac0[_0xa55c('0x36')]<_0x23cef5['globalStatus']?0x1:-0x1;}else{return _0x43bac0[_0xa55c('0x36')]<_0x23cef5['globalStatus']?-0x1:0x1;}}});return _0x77d623;}exports[_0xa55c('0x40')]=sortAgentsByStatus;function filterAgentAttributes(_0x3a8af4){var _0x451269=['userpic',_0xa55c('0x41'),_0xa55c('0x42'),'lastPauseAt',_0xa55c('0x32'),_0xa55c('0x43'),'internal',_0xa55c('0x44'),_0xa55c('0x4'),'openchannelPause',_0xa55c('0x6'),_0xa55c('0x8'),_0xa55c('0x9'),_0xa55c('0x5'),'voicePause',_0xa55c('0x45'),'openchannelCapacity',_0xa55c('0x46'),_0xa55c('0x47'),_0xa55c('0x48'),'faxCapacity',_0xa55c('0x49'),_0xa55c('0x4a'),'mailCurrentCapacity',_0xa55c('0x4b'),_0xa55c('0x4c'),_0xa55c('0x4d'),_0xa55c('0x4e'),_0xa55c('0x14'),_0xa55c('0x4f'),_0xa55c('0x15'),_0xa55c('0x16'),_0xa55c('0x50'),_0xa55c('0x12'),'chatStatusTime',_0xa55c('0x51'),_0xa55c('0x52'),_0xa55c('0x53'),'whatsappStatusTime',_0xa55c('0x54'),_0xa55c('0x55'),'queue',_0xa55c('0x56'),'screenrecording',_0xa55c('0x57'),_0xa55c('0x58'),_0xa55c('0x59')];var _0x3f9313=[_0xa55c('0x4'),'openchannelPause',_0xa55c('0x6'),_0xa55c('0x8'),'whatsappPause',_0xa55c('0x5'),_0xa55c('0x13'),_0xa55c('0x41')];var _0x30693a=_(_0x3a8af4)['omit'](_0x3f9313)['pick'](_0x451269)[_0xa55c('0x2a')]();return _0x30693a;}exports[_0xa55c('0x5a')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0xa55c('0x30'),_0xa55c('0x31'),'role',_0xa55c('0x3c'),'online',_0xa55c('0x36'),_0xa55c('0x5b'),_0xa55c('0x42'),_0xa55c('0x32'),_0xa55c('0x43'),'faxPause',_0xa55c('0x4'),'mailPause',_0xa55c('0x7'),_0xa55c('0x8'),_0xa55c('0x13'),_0xa55c('0x9'),_0xa55c('0x4e'),_0xa55c('0x50'),_0xa55c('0x4f'),'openchannelStatus',_0xa55c('0x15'),_0xa55c('0x12'),_0xa55c('0x16'),_0xa55c('0x5c'),_0xa55c('0x54'),'mailStatusTime',_0xa55c('0x51'),_0xa55c('0x53'),_0xa55c('0x55'),_0xa55c('0x5d'),_0xa55c('0x45'),'faxCapacity',_0xa55c('0x46'),_0xa55c('0x5e'),_0xa55c('0x47'),_0xa55c('0x48'),_0xa55c('0x49'),'faxCurrentCapacity',_0xa55c('0x5f'),'openchannelCurrentCapacity',_0xa55c('0x4b'),'whatsappCurrentCapacity',_0xa55c('0x57'),'phoneBarEnableAutomaticScreenRecording',_0xa55c('0x56'),_0xa55c('0x60'),_0xa55c('0x61'),_0xa55c('0x59'),_0xa55c('0x62')];}exports[_0xa55c('0x63')]=getRealtimeAgentsQueryFields;
\ No newline at end of file
index f23a7e3..0e7f767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb78=['invalid','loggedInDb','onHold','ringInUse','talking','unavailable','pTalking','originated','message','statusMessage','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','voice','request','Queues','then','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','getRealtimeQueues','inbound','concat','outbound','map','loggedIn','find','merge','pick','lodash','jayson/promise','client','http','paused','waiting','busy'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xdb78,0xb5));var _0x8db7=function(_0x3c6bae,_0x47496d){_0x3c6bae=_0x3c6bae-0x0;var _0x7f8436=_0xdb78[_0x3c6bae];return _0x7f8436;};'use strict';var _=require(_0x8db7('0x0'));var jayson=require(_0x8db7('0x1'));var util=require('util');var amiClient=jayson[_0x8db7('0x2')][_0x8db7('0x3')]({'port':0x232a});var routingClient=jayson['client'][_0x8db7('0x3')]({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=['available','loggedIn',_0x8db7('0x4'),_0x8db7('0x5')];var VOICE_QUEUE_ATTRIBUTES=[_0x8db7('0x6'),'inUse',_0x8db7('0x7'),_0x8db7('0x8'),'notInUse',_0x8db7('0x9'),'ringing',_0x8db7('0xa'),_0x8db7('0xb'),_0x8db7('0xc'),'unknown'];var OUTBOUND_QUEUE_ATTRIBUTES=[_0x8db7('0xd'),_0x8db7('0xe'),_0x8db7('0xf'),_0x8db7('0x10'),_0x8db7('0x11'),_0x8db7('0x12'),_0x8db7('0x13'),_0x8db7('0x14'),_0x8db7('0x15'),_0x8db7('0x16'),'erlangCallToSecond','erlangAbandonmentRate',_0x8db7('0x17'),_0x8db7('0x18'),_0x8db7('0x19'),_0x8db7('0x1a'),'predictiveIntervalAvailable',_0x8db7('0x1b'),_0x8db7('0x1c'),'predictiveIntervalDroppedCallsTimeout',_0x8db7('0x1d'),'predictiveIntervalAvgHoldtime',_0x8db7('0x1e')];function getRealtimeQueues(_0x130294,_0x4eda9a){var _0x2bc8f5=_0x4eda9a===_0x8db7('0x1f')?amiClient:routingClient;return _0x2bc8f5[_0x8db7('0x20')](_['startCase'](_0x4eda9a)+_0x8db7('0x21'),_0x130294)[_0x8db7('0x22')](function(_0x52b726){if(_0x52b726['error'])throw new Error(util['format'](_0x8db7('0x23'),_0x4eda9a));return _0x52b726[_0x8db7('0x24')];})[_0x8db7('0x25')](function(_0x24a8bc){throw _0x24a8bc;});}exports[_0x8db7('0x26')]=getRealtimeQueues;function initializeQueues(_0x29a7a0,_0x1ead8c,_0x343fe2,_0x598fe3){var _0x1de666=DEFAULT_QUEUE_ATTRIBUTES;if(_0x343fe2==='voice'){if(_0x598fe3===_0x8db7('0x27')){_0x1de666=_0x1de666[_0x8db7('0x28')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x598fe3===_0x8db7('0x29')){_0x1de666=_0x1de666['concat'](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x29a7a0[_0x8db7('0x2a')](function(_0xe42c28){var _0x1bfc4d=_0xe42c28['get']({'plain':!![]});_0x1bfc4d['paused']=0x0;_0x1bfc4d[_0x8db7('0x8')]=0x0;_0x1bfc4d[_0x8db7('0x2b')]=0x0;_0x1bfc4d['available']=0x0;_0x1bfc4d['waiting']=0x0;if(_0x343fe2===_0x8db7('0x1f')){_0x1bfc4d[_0x8db7('0xb')]=0x0;_0x1bfc4d[_0x8db7('0x6')]=0x0;if(_0x598fe3===_0x8db7('0x29')){_0x1bfc4d['pTalking']=0x0;_0x1bfc4d['originated']=0x0;}}var _0x2e0fcb=_[_0x8db7('0x2c')](_0x1ead8c,['id',_0x1bfc4d['id']]);if(_0x2e0fcb){_[_0x8db7('0x2d')](_0x1bfc4d,_[_0x8db7('0x2e')](_0x2e0fcb,_0x1de666));}return _0x1bfc4d;});}exports['initializeQueues']=initializeQueues;
\ No newline at end of file
+var _0xcf4c=['predictiveIntervalAvgHoldtime','Queues','then','error','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','getRealtimeQueues','voice','inbound','concat','outbound','waiting','find','pick','initializeQueues','lodash','jayson/promise','util','client','http','available','loggedIn','paused','busy','inUse','invalid','loggedInDb','notInUse','ringInUse','talking','pTalking','originated','statusMessage','dialActive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit'];(function(_0x5c868d,_0x8b071){var _0x30b436=function(_0x5b75ff){while(--_0x5b75ff){_0x5c868d['push'](_0x5c868d['shift']());}};_0x30b436(++_0x8b071);}(_0xcf4c,0xa1));var _0xccf4=function(_0x1232e3,_0xde73a8){_0x1232e3=_0x1232e3-0x0;var _0x5b88eb=_0xcf4c[_0x1232e3];return _0x5b88eb;};'use strict';var _=require(_0xccf4('0x0'));var jayson=require(_0xccf4('0x1'));var util=require(_0xccf4('0x2'));var amiClient=jayson[_0xccf4('0x3')][_0xccf4('0x4')]({'port':0x232a});var routingClient=jayson['client'][_0xccf4('0x4')]({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=[_0xccf4('0x5'),_0xccf4('0x6'),_0xccf4('0x7'),'waiting'];var VOICE_QUEUE_ATTRIBUTES=[_0xccf4('0x8'),_0xccf4('0x9'),_0xccf4('0xa'),_0xccf4('0xb'),_0xccf4('0xc'),'onHold','ringing',_0xccf4('0xd'),_0xccf4('0xe'),'unavailable','unknown'];var OUTBOUND_QUEUE_ATTRIBUTES=[_0xccf4('0xf'),_0xccf4('0x10'),'message',_0xccf4('0x11'),_0xccf4('0x12'),'dialMethod','Trunk','startPredictive',_0xccf4('0x13'),_0xccf4('0x14'),_0xccf4('0x15'),_0xccf4('0x16'),_0xccf4('0x17'),_0xccf4('0x18'),_0xccf4('0x19'),_0xccf4('0x1a'),_0xccf4('0x1b'),_0xccf4('0x1c'),'predictiveIntervalAnsweredCalls',_0xccf4('0x1d'),_0xccf4('0x1e'),_0xccf4('0x1f'),'predictiveIntervalAvgTalktime'];function getRealtimeQueues(_0x1488bc,_0x40a4bd){var _0x513307=_0x40a4bd==='voice'?amiClient:routingClient;return _0x513307['request'](_['startCase'](_0x40a4bd)+_0xccf4('0x20'),_0x1488bc)[_0xccf4('0x21')](function(_0x329615){if(_0x329615[_0xccf4('0x22')])throw new Error(util[_0xccf4('0x23')](_0xccf4('0x24'),_0x40a4bd));return _0x329615[_0xccf4('0x25')];})[_0xccf4('0x26')](function(_0x4b96f2){throw _0x4b96f2;});}exports[_0xccf4('0x27')]=getRealtimeQueues;function initializeQueues(_0x80cf1d,_0x1922ab,_0x2aab51,_0x27689e){var _0x3c1512=DEFAULT_QUEUE_ATTRIBUTES;if(_0x2aab51===_0xccf4('0x28')){if(_0x27689e===_0xccf4('0x29')){_0x3c1512=_0x3c1512[_0xccf4('0x2a')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x27689e===_0xccf4('0x2b')){_0x3c1512=_0x3c1512['concat'](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x80cf1d['map'](function(_0x27377b){var _0x2b7e92=_0x27377b['get']({'plain':!![]});_0x2b7e92[_0xccf4('0x7')]=0x0;_0x2b7e92['loggedInDb']=0x0;_0x2b7e92[_0xccf4('0x6')]=0x0;_0x2b7e92[_0xccf4('0x5')]=0x0;_0x2b7e92[_0xccf4('0x2c')]=0x0;if(_0x2aab51===_0xccf4('0x28')){_0x2b7e92['talking']=0x0;_0x2b7e92['busy']=0x0;if(_0x27689e===_0xccf4('0x2b')){_0x2b7e92[_0xccf4('0xf')]=0x0;_0x2b7e92['originated']=0x0;}}var _0x78232c=_[_0xccf4('0x2d')](_0x1922ab,['id',_0x2b7e92['id']]);if(_0x78232c){_['merge'](_0x2b7e92,_[_0xccf4('0x2e')](_0x78232c,_0x3c1512));}return _0x2b7e92;});}exports[_0xccf4('0x2f')]=initializeQueues;
\ No newline at end of file
index 810d74a..ff4fbc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['get','production','set','appPath','public','join','root','client','use','toISOString','split','static','views','/server/views','engine','html','ejs','urlencoded','50mb','json','initialize','express','method-override','cookie-parser','passport','./environment','default'];(function(_0x53f715,_0x52587b){var _0x16c757=function(_0x5cc9bf){while(--_0x5cc9bf){_0x53f715['push'](_0x53f715['shift']());}};_0x16c757(++_0x52587b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'use strict';var express=require(_0x0a9e('0x0'));var methodOverride=require(_0x0a9e('0x1'));var cookieParser=require(_0x0a9e('0x2'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x0a9e('0x3'));var cors=require('cors');var config=require(_0x0a9e('0x4'));exports[_0x0a9e('0x5')]=function(_0x2ab90b){var _0x991246=_0x2ab90b[_0x0a9e('0x6')]('env');if(_0x991246===_0x0a9e('0x7')){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path['join'](config['root'],_0x0a9e('0xa')));}if(_0x991246==='development'||_0x991246==='test'){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path[_0x0a9e('0xb')](config[_0x0a9e('0xc')],_0x0a9e('0xd')));_0x2ab90b[_0x0a9e('0xe')](errorHandler());}_0x2ab90b['set']('json\x20replacer',function(_0x527cdd,_0x4cfe67){if(this[_0x527cdd]instanceof Date){_0x4cfe67=this[_0x527cdd][_0x0a9e('0xf')]()[_0x0a9e('0x10')]('.')[0x0]+'Z';}return _0x4cfe67;});_0x2ab90b[_0x0a9e('0xe')](express[_0x0a9e('0x11')](_0x2ab90b[_0x0a9e('0x6')](_0x0a9e('0x9'))));_0x2ab90b['set'](_0x0a9e('0x12'),config[_0x0a9e('0xc')]+_0x0a9e('0x13'));_0x2ab90b[_0x0a9e('0x14')](_0x0a9e('0x15'),require(_0x0a9e('0x16'))['renderFile']);_0x2ab90b[_0x0a9e('0x8')]('view\x20engine',_0x0a9e('0x15'));_0x2ab90b['use'](express[_0x0a9e('0x17')]({'limit':_0x0a9e('0x18'),'extended':!![]}));_0x2ab90b['use'](express[_0x0a9e('0x19')]({'limit':'50mb'}));_0x2ab90b[_0x0a9e('0xe')](cors());_0x2ab90b[_0x0a9e('0xe')](methodOverride());_0x2ab90b[_0x0a9e('0xe')](cookieParser());_0x2ab90b[_0x0a9e('0xe')](passport[_0x0a9e('0x1a')]());};
\ No newline at end of file
+var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x4da7cd,_0x2d5596){var _0x448ddf=function(_0x55177a){while(--_0x55177a){_0x4da7cd['push'](_0x4da7cd['shift']());}};_0x448ddf(++_0x2d5596);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
index fec6773..9bf5d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90ad=['lodash','bimedia-machine-uuid','../environment','networkInterfaces','orderBy','keys','length','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','cpus','join','md5','update','digest','platform','test','licenseToken','dmidecode\x20--string\x20system-uuid','replace','hostname','macAddress','ipAddress','createHash','hex','substring'];(function(_0x44268d,_0xad8443){var _0x4be92d=function(_0x8a57ff){while(--_0x8a57ff){_0x44268d['push'](_0x44268d['shift']());}};_0x4be92d(++_0xad8443);}(_0x90ad,0xc0));var _0xd90a=function(_0x1e1965,_0x55785c){_0x1e1965=_0x1e1965-0x0;var _0x1a2e96=_0x90ad[_0x1e1965];return _0x1a2e96;};'use strict';var _=require(_0xd90a('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0xd90a('0x1'));var exec=require('child_process')['execSync'];var config=require(_0xd90a('0x2'));function getInterfaces(){var _0x3037dd=[];var _0x1f5a1b=os[_0xd90a('0x3')]();var _0x1abf1a=_[_0xd90a('0x4')](_[_0xd90a('0x5')](_0x1f5a1b));for(var _0x55a692=0x0;_0x55a692<_0x1abf1a[_0xd90a('0x6')];_0x55a692++){var _0x36761c=_0x1f5a1b[_0x1abf1a[_0x55a692]]['filter'](function(_0x3554f2){return _0x3554f2[_0xd90a('0x7')]===_0xd90a('0x8')&&_0x3554f2[_0xd90a('0x9')]===![];});_0x3037dd=_0x3037dd[_0xd90a('0xa')](_0x36761c);}return _0x3037dd;}function getFirstInterface(){var _0x57c7b3=_[_0xd90a('0xb')](getInterfaces());return{'macAddress':_0x57c7b3&&_0x57c7b3['mac']?_0x57c7b3[_0xd90a('0xc')]:_0xd90a('0xd'),'ipAddress':_0x57c7b3&&_0x57c7b3[_0xd90a('0xe')]?_0x57c7b3[_0xd90a('0xe')]:_0xd90a('0xf')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x1a0578=_[_0xd90a('0x4')](os[_0xd90a('0x10')]()['map'](function(_0x5293dc){return _0x5293dc['model'];}))[_0xd90a('0x11')](':');return crypto['createHash'](_0xd90a('0x12'))[_0xd90a('0x13')](_0x1a0578)[_0xd90a('0x14')]('hex');}exports['getUuid']=function(){var _0x19a60f=os[_0xd90a('0x15')]();var _0x71af82=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x71af82[_0xd90a('0x16')](config[_0xd90a('0x17')])){return config[_0xd90a('0x17')];}else if(_0x19a60f==='win32'){return exec(_0xd90a('0x18'),{'encoding':'utf8'})[_0xd90a('0x19')]('\x0d\x0a','');}else{var _0x2b4445=getFirstInterface();var _0x50ad61=getCPUhash();var _0x3eac2c=_0x50ad61+'|'+os[_0xd90a('0x1a')]()+'|'+_0x2b4445[_0xd90a('0x1b')]+'|'+_0x2b4445[_0xd90a('0x1c')];var _0x1d2592=crypto[_0xd90a('0x1d')]('md5')[_0xd90a('0x13')](_0x3eac2c)[_0xd90a('0x14')](_0xd90a('0x1e'));return _0x1d2592[_0xd90a('0x1f')](0x0,0x8)+'-'+_0x1d2592[_0xd90a('0x1f')](0x8,0xc)+'-'+_0x1d2592[_0xd90a('0x1f')](0xc,0x10)+'-'+_0x1d2592[_0xd90a('0x1f')](0x10,0x14)+'-'+_0x1d2592[_0xd90a('0x1f')](0x14);}};
\ No newline at end of file
+var _0x0e6e=['createHash','md5','update','digest','hex','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','macAddress','ipAddress','substring','lodash','crypto','bimedia-machine-uuid','execSync','networkInterfaces','orderBy','length','family','IPv4','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','map','model'];(function(_0xdfb3c3,_0x59788d){var _0x4f9a74=function(_0x2f1544){while(--_0x2f1544){_0xdfb3c3['push'](_0xdfb3c3['shift']());}};_0x4f9a74(++_0x59788d);}(_0x0e6e,0xef));var _0xe0e6=function(_0x9433a8,_0x386fe0){_0x9433a8=_0x9433a8-0x0;var _0x59fda5=_0x0e6e[_0x9433a8];return _0x59fda5;};'use strict';var _=require(_0xe0e6('0x0'));var os=require('os');var crypto=require(_0xe0e6('0x1'));var machine=require(_0xe0e6('0x2'));var exec=require('child_process')[_0xe0e6('0x3')];var config=require('../environment');function getInterfaces(){var _0x289686=[];var _0x2747a3=os[_0xe0e6('0x4')]();var _0x1b219f=_[_0xe0e6('0x5')](_['keys'](_0x2747a3));for(var _0x208432=0x0;_0x208432<_0x1b219f[_0xe0e6('0x6')];_0x208432++){var _0x1f0874=_0x2747a3[_0x1b219f[_0x208432]]['filter'](function(_0x53995c){return _0x53995c[_0xe0e6('0x7')]===_0xe0e6('0x8')&&_0x53995c['internal']===![];});_0x289686=_0x289686['concat'](_0x1f0874);}return _0x289686;}function getFirstInterface(){var _0x4916b7=_[_0xe0e6('0x9')](getInterfaces());return{'macAddress':_0x4916b7&&_0x4916b7[_0xe0e6('0xa')]?_0x4916b7[_0xe0e6('0xa')]:_0xe0e6('0xb'),'ipAddress':_0x4916b7&&_0x4916b7[_0xe0e6('0xc')]?_0x4916b7[_0xe0e6('0xc')]:_0xe0e6('0xd')};}exports[_0xe0e6('0xe')]=getFirstInterface;function getCPUhash(){var _0x3dbc33=_['orderBy'](os['cpus']()[_0xe0e6('0xf')](function(_0x26c4a8){return _0x26c4a8[_0xe0e6('0x10')];}))['join'](':');return crypto[_0xe0e6('0x11')](_0xe0e6('0x12'))[_0xe0e6('0x13')](_0x3dbc33)[_0xe0e6('0x14')](_0xe0e6('0x15'));}exports['getUuid']=function(){var _0x52fbfc=os[_0xe0e6('0x16')]();var _0x4df1e6=/[0-9a-f-]{36}/;if(config[_0xe0e6('0x17')]&&_0x4df1e6[_0xe0e6('0x18')](config['licenseToken'])){return config[_0xe0e6('0x17')];}else if(_0x52fbfc===_0xe0e6('0x19')){return exec(_0xe0e6('0x1a'),{'encoding':_0xe0e6('0x1b')})[_0xe0e6('0x1c')]('\x0d\x0a','');}else{var _0x341bd3=getFirstInterface();var _0x2374ee=getCPUhash();var _0x5f4544=_0x2374ee+'|'+os['hostname']()+'|'+_0x341bd3[_0xe0e6('0x1d')]+'|'+_0x341bd3[_0xe0e6('0x1e')];var _0x4c0d20=crypto[_0xe0e6('0x11')]('md5')[_0xe0e6('0x13')](_0x5f4544)[_0xe0e6('0x14')]('hex');return _0x4c0d20[_0xe0e6('0x1f')](0x0,0x8)+'-'+_0x4c0d20['substring'](0x8,0xc)+'-'+_0x4c0d20[_0xe0e6('0x1f')](0xc,0x10)+'-'+_0x4c0d20[_0xe0e6('0x1f')](0x10,0x14)+'-'+_0x4c0d20[_0xe0e6('0x1f')](0x14);}};
\ No newline at end of file
index 0876756..3b0e16b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61d7=['findOrCreate','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','error','message','finally','getUuid'];(function(_0x649e3c,_0x445df6){var _0x48380a=function(_0x550037){while(--_0x550037){_0x649e3c['push'](_0x649e3c['shift']());}};_0x48380a(++_0x445df6);}(_0x61d7,0x153));var _0x761d=function(_0x35cd60,_0x1c72f1){_0x35cd60=_0x35cd60-0x0;var _0x3a7b16=_0x61d7[_0x35cd60];return _0x3a7b16;};'use strict';var util=require(_0x761d('0x0'));var moment=require(_0x761d('0x1'));var rp=require(_0x761d('0x2'));var BPromise=require(_0x761d('0x3'));var pkginfo=require(_0x761d('0x4'))(module,_0x761d('0x5'));var db=require(_0x761d('0x6'))['db'];var encryptor=require(_0x761d('0x7'));var hardware=require(_0x761d('0x8'));var logger=require('../logger')(_0x761d('0x9'));var HOST=_0x761d('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x1f2255){return new BPromise(function(_0x2dd6a2,_0x2412f6){var _0x550bc6=util[_0x761d('0xb')](_0x761d('0xc'),HOST,_0x1f2255,module[_0x761d('0xd')][_0x761d('0x5')]);if(oldToken){_0x550bc6=util[_0x761d('0xb')](_0x761d('0xe'),HOST,_0x1f2255,module[_0x761d('0xd')]['version'],oldToken);}var _0x3d88e0={'uri':_0x550bc6,'method':_0x761d('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x3d88e0)[_0x761d('0x10')](function(_0x290376){_0x2dd6a2(_0x290376);})[_0x761d('0x11')](function(_0x272385){_0x2412f6(_0x272385);});});}function manageLicense(_0x3b1606,_0x575fdf){var _0x2497f8=_0x575fdf[_0x761d('0x12')]({'plain':!![]});if(!isOldTokenSent&&_0x2497f8[_0x761d('0x13')]!==_0x3b1606&&!_0x2497f8[_0x761d('0x14')]){oldToken=_0x2497f8[_0x761d('0x13')];}httpRequest(_0x3b1606)['then'](function(_0x47946f){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x47946f['active']){isOldTokenSent=![];if(!_0x2497f8[_0x761d('0x9')]&&_0x2497f8[_0x761d('0x9')]!=_0x47946f[_0x761d('0x9')]||_0x2497f8['license']&&_0x2497f8[_0x761d('0x14')]){logger[_0x761d('0x15')](_0x761d('0x16'));}if(_0x2497f8[_0x761d('0x9')]&&!_0x2497f8[_0x761d('0x14')]&&_0x2497f8[_0x761d('0x9')]!=_0x47946f['license']){logger[_0x761d('0x15')](_0x761d('0x17'));}if(_0x2497f8[_0x761d('0x9')]&&!_0x2497f8[_0x761d('0x14')]&&_0x2497f8['license']==_0x47946f['license']){return _0x575fdf;}return _0x575fdf[_0x761d('0x18')]({'data1':_0x3b1606,'data2':null,'license':_0x47946f['license']});}else{if(_0x47946f[_0x761d('0x9')]||_0x2497f8[_0x761d('0x9')]){if(!_0x2497f8[_0x761d('0x14')]){if(_0x2497f8[_0x761d('0x13')]==_0x3b1606){GRAY_PERIOD_REASON=_0x761d('0x19');logger['info'](_0x761d('0x1a'));}else{GRAY_PERIOD_REASON='Changed';logger['info'](_0x761d('0x1b'),_0x2497f8[_0x761d('0x13')],_0x3b1606);}logger['info'](_0x761d('0x1c'),GRAY_PERIOD_REASON[_0x761d('0x1d')](),moment()['format'](_0x761d('0x1e')));return _0x575fdf[_0x761d('0x18')]({'data2':encryptor['encryptString'](moment()['format'](_0x761d('0x1e')))});}else{if(moment()[_0x761d('0x1f')](encryptor[_0x761d('0x20')](_0x2497f8[_0x761d('0x14')]),_0x761d('0x21'))>DAYS){logger['info'](_0x761d('0x22'),moment()[_0x761d('0xb')](_0x761d('0x1e')));isOldTokenSent=![];return _0x575fdf[_0x761d('0x18')]({'data1':_0x3b1606,'data2':null,'license':null});}}}else{if(_0x2497f8[_0x761d('0x13')]!=_0x3b1606){logger[_0x761d('0x15')](_0x761d('0x1b'),_0x2497f8[_0x761d('0x13')],_0x3b1606);return _0x575fdf['update']({'data1':_0x3b1606,'data2':null,'license':null});}}}return _0x575fdf;})[_0x761d('0x10')](function(_0x2ef6ed){_0x575fdf=_0x2ef6ed;})[_0x761d('0x11')](function(_0x272eca){logger[_0x761d('0x23')](_0x272eca[_0x761d('0x24')]);})[_0x761d('0x25')](function(){setTimeout(function(){manageLicense(hardware[_0x761d('0x26')](),_0x575fdf);},TIME);});}function defaultLicense(){var _0x1eca6d=hardware['getUuid']();if(_0x1eca6d){return db['License'][_0x761d('0x27')]({'where':{'id':0x1},'defaults':{'data1':_0x1eca6d}})['spread'](function(_0x1a2d5f,_0x105a09){logger[_0x761d('0x15')](_0x761d('0x28'),_0x1eca6d);manageLicense(_0x1eca6d,_0x1a2d5f);})[_0x761d('0x11')](function(_0x3aac7e){logger[_0x761d('0x23')](_0x3aac7e[_0x761d('0x24')]);});}}exports[_0x761d('0x29')]=defaultLicense;
\ No newline at end of file
+var _0x107c=['get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','decryptString','DEMO\x20START\x20AT\x20%s','error','finally','getUuid','License','message','default','util','request-promise','bluebird','pkginfo','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','version','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','catch'];(function(_0x3e3162,_0x5d5421){var _0x5c0f2a=function(_0x1b3d27){while(--_0x1b3d27){_0x3e3162['push'](_0x3e3162['shift']());}};_0x5c0f2a(++_0x5d5421);}(_0x107c,0x128));var _0xc107=function(_0xe71cf6,_0x120a90){_0xe71cf6=_0xe71cf6-0x0;var _0x1ffd42=_0x107c[_0xe71cf6];return _0x1ffd42;};'use strict';var util=require(_0xc107('0x0'));var moment=require('moment');var rp=require(_0xc107('0x1'));var BPromise=require(_0xc107('0x2'));var pkginfo=require(_0xc107('0x3'))(module,'version');var db=require('../../mysqldb')['db'];var encryptor=require(_0xc107('0x4'));var hardware=require(_0xc107('0x5'));var logger=require(_0xc107('0x6'))(_0xc107('0x7'));var HOST=_0xc107('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x1b0978){return new BPromise(function(_0x3daf2d,_0x359486){var _0x4d7382=util[_0xc107('0x9')](_0xc107('0xa'),HOST,_0x1b0978,module[_0xc107('0xb')][_0xc107('0xc')]);if(oldToken){_0x4d7382=util[_0xc107('0x9')](_0xc107('0xd'),HOST,_0x1b0978,module[_0xc107('0xb')][_0xc107('0xc')],oldToken);}var _0xb4dbb2={'uri':_0x4d7382,'method':_0xc107('0xe'),'timeout':0xea60,'json':!![]};return rp(_0xb4dbb2)['then'](function(_0x29984f){_0x3daf2d(_0x29984f);})[_0xc107('0xf')](function(_0x197ca1){_0x359486(_0x197ca1);});});}function manageLicense(_0x3757c5,_0x2b7cb8){var _0x526395=_0x2b7cb8[_0xc107('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x526395[_0xc107('0x11')]!==_0x3757c5&&!_0x526395[_0xc107('0x12')]){oldToken=_0x526395[_0xc107('0x11')];}httpRequest(_0x3757c5)['then'](function(_0x306835){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x306835[_0xc107('0x13')]){isOldTokenSent=![];if(!_0x526395[_0xc107('0x7')]&&_0x526395[_0xc107('0x7')]!=_0x306835['license']||_0x526395[_0xc107('0x7')]&&_0x526395['data2']){logger[_0xc107('0x14')](_0xc107('0x15'));}if(_0x526395['license']&&!_0x526395['data2']&&_0x526395[_0xc107('0x7')]!=_0x306835[_0xc107('0x7')]){logger[_0xc107('0x14')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x526395['license']&&!_0x526395['data2']&&_0x526395['license']==_0x306835[_0xc107('0x7')]){return _0x2b7cb8;}return _0x2b7cb8[_0xc107('0x16')]({'data1':_0x3757c5,'data2':null,'license':_0x306835['license']});}else{if(_0x306835[_0xc107('0x7')]||_0x526395[_0xc107('0x7')]){if(!_0x526395['data2']){if(_0x526395['data1']==_0x3757c5){GRAY_PERIOD_REASON=_0xc107('0x17');logger[_0xc107('0x14')](_0xc107('0x18'));}else{GRAY_PERIOD_REASON=_0xc107('0x19');logger['info'](_0xc107('0x1a'),_0x526395[_0xc107('0x11')],_0x3757c5);}logger[_0xc107('0x14')](_0xc107('0x1b'),GRAY_PERIOD_REASON[_0xc107('0x1c')](),moment()[_0xc107('0x9')](_0xc107('0x1d')));return _0x2b7cb8[_0xc107('0x16')]({'data2':encryptor[_0xc107('0x1e')](moment()['format'](_0xc107('0x1d')))});}else{if(moment()['diff'](encryptor[_0xc107('0x1f')](_0x526395['data2']),'days')>DAYS){logger[_0xc107('0x14')](_0xc107('0x20'),moment()['format'](_0xc107('0x1d')));isOldTokenSent=![];return _0x2b7cb8['update']({'data1':_0x3757c5,'data2':null,'license':null});}}}else{if(_0x526395['data1']!=_0x3757c5){logger[_0xc107('0x14')](_0xc107('0x1a'),_0x526395[_0xc107('0x11')],_0x3757c5);return _0x2b7cb8[_0xc107('0x16')]({'data1':_0x3757c5,'data2':null,'license':null});}}}return _0x2b7cb8;})['then'](function(_0x4ff806){_0x2b7cb8=_0x4ff806;})[_0xc107('0xf')](function(_0x1f6677){logger[_0xc107('0x21')](_0x1f6677['message']);})[_0xc107('0x22')](function(){setTimeout(function(){manageLicense(hardware[_0xc107('0x23')](),_0x2b7cb8);},TIME);});}function defaultLicense(){var _0x312ca8=hardware[_0xc107('0x23')]();if(_0x312ca8){return db[_0xc107('0x24')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x312ca8}})['spread'](function(_0x5dbd4e,_0xf285de){logger['info']('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x312ca8);manageLicense(_0x312ca8,_0x5dbd4e);})['catch'](function(_0x197164){logger[_0xc107('0x21')](_0x197164[_0xc107('0x25')]);});}}exports[_0xc107('0x26')]=defaultLicense;
\ No newline at end of file
index 0670167..df6d7c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9a2=['data1','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','%s:%s:%s','parse','demo','uuid','machineUuid','gray','add','format','changed','message','User','sequelize','COUNT','col','role','count','admin','user','telephone','users','telephones','catch','pick','countBy','License\x20limit\x20reached\x20for\x20users','exports','util','moment','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then'];(function(_0x26fdb3,_0x400a18){var _0x3305d7=function(_0x388b4a){while(--_0x388b4a){_0x26fdb3['push'](_0x26fdb3['shift']());}};_0x3305d7(++_0x400a18);}(_0xd9a2,0x153));var _0x2d9a=function(_0x2f561f,_0x19ab79){_0x2f561f=_0x2f561f-0x0;var _0x59fbbe=_0xd9a2[_0x2f561f];return _0x59fbbe;};'use strict';var util=require(_0x2d9a('0x0'));var _=require('lodash');var moment=require(_0x2d9a('0x1'));var BPromise=require('bluebird');var hardware=require(_0x2d9a('0x2'));var encryptor=require(_0x2d9a('0x3'));var db=require(_0x2d9a('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2d9a('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x2d9a('0x6'),'machineUuid':hardware[_0x2d9a('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x2d9a('0x8'),'machineUuid':hardware[_0x2d9a('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2447dd){return new BPromise(function(_0x18a2fa,_0x2463af){return db[_0x2d9a('0x9')][_0x2d9a('0xa')](_[_0x2d9a('0xb')](_0x2447dd,{'raw':!![],'where':{'id':0x1}}))[_0x2d9a('0xc')](function(_0x57dcc7){return checkLicense(_0x57dcc7,null);})[_0x2d9a('0xc')](function(_0x3feefe){_0x18a2fa(_0x3feefe);return;})['catch'](function(_0x211191){_0x2463af(_0x211191);});});}function checkLicense(_0xffebda,_0x49fb42){if(!_0xffebda){demoLicense['uuid']=_0xffebda[_0x2d9a('0xd')];return demoLicense;}try{var _0x3690ce=_0x49fb42||_0xffebda['license'];if(_[_0x2d9a('0xe')](_0x3690ce)){throw new Error(_0x2d9a('0xf'));}var _0x732031=_0xffebda[_0x2d9a('0xd')];var _0x50c589=_0xffebda['data2'];var _0x4688c1=_0x732031[_0x2d9a('0x10')]('-')[0x4];var _0xe7853c=_0x732031[_0x2d9a('0x10')]('-')[0x0];var _0x29523e=encryptor[_0x2d9a('0x11')](_0x3690ce,util['format'](_0x2d9a('0x12'),_0x4688c1,_0x732031,_0xe7853c));var _0x1f7412=JSON[_0x2d9a('0x13')](_0x29523e);_0x1f7412[_0x2d9a('0x14')]=![];_0x1f7412[_0x2d9a('0x15')]=_0x732031;_0x1f7412[_0x2d9a('0x16')]=hardware['getUuid']();if(_0x50c589){var _0x306b93=encryptor[_0x2d9a('0x11')](_0x50c589);_0x1f7412[_0x2d9a('0x17')]=_0x306b93;_0x1f7412['deadline']=moment(_0x306b93)[_0x2d9a('0x18')](0x7,'days')[_0x2d9a('0x19')]();_0x1f7412['grayReason']=_0x1f7412[_0x2d9a('0x15')]!=_0x1f7412[_0x2d9a('0x16')]?_0x2d9a('0x1a'):'disabled';}return _0x1f7412;}catch(_0x58207c){breakingLicense['uuid']=_0xffebda['data1'];breakingLicense[_0x2d9a('0x1b')]=_0x58207c['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x89407f,_0xebf14e){getLicense()['then'](function(_0x24c94d){return db[_0x2d9a('0x1c')]['findAll']({'attributes':['role',[db[_0x2d9a('0x1d')]['fn'](_0x2d9a('0x1e'),db[_0x2d9a('0x1d')][_0x2d9a('0x1f')](_0x2d9a('0x20'))),_0x2d9a('0x21')]],'group':_0x2d9a('0x20'),'where':{'role':{'$or':[_0x2d9a('0x22'),_0x2d9a('0x23'),_0x2d9a('0x24')]}},'raw':!![]})[_0x2d9a('0xc')](function(_0x20a30c){var _0x39a7f3={'user':_0x24c94d[_0x2d9a('0x25')]||0x0,'telephone':_0x24c94d[_0x2d9a('0x26')]||0x0};_0x20a30c['forEach'](function(_0x18dd89){var _0x103406=_0x18dd89[_0x2d9a('0x20')]===_0x2d9a('0x22')?'user':_0x18dd89[_0x2d9a('0x20')];_0x39a7f3[_0x103406]-=_0x18dd89[_0x2d9a('0x21')];if(_0x39a7f3[_0x103406]<0x0)_0x39a7f3[_0x103406]=0x0;});_0x89407f(_0x39a7f3);return;});})[_0x2d9a('0x27')](function(_0xc3b96e){_0xebf14e(_0xc3b96e);});});}function checkUserLimits(_0x161b61){return new BPromise(function(_0x406885,_0x19b1bd){getLimits()[_0x2d9a('0xc')](function(_0x3ec5b5){var _0x3a10a9=_[_0x2d9a('0x28')](_[_0x2d9a('0x29')](_0x161b61,_0x2d9a('0x20')),[_0x2d9a('0x22'),_0x2d9a('0x23'),_0x2d9a('0x24')]);var _0x43d34f=(_0x3a10a9[_0x2d9a('0x22')]||0x0)+(_0x3a10a9[_0x2d9a('0x23')]||0x0);var _0x3ffb0a=_0x3a10a9[_0x2d9a('0x24')]||0x0;if(_0x43d34f>_0x3ec5b5[_0x2d9a('0x23')])return _0x19b1bd(_0x2d9a('0x2a'));if(_0x3ffb0a>_0x3ec5b5[_0x2d9a('0x24')])return _0x19b1bd('License\x20limit\x20reached\x20for\x20telephones');return _0x406885();})[_0x2d9a('0x27')](function(_0x15c6a8){_0x19b1bd(_0x15c6a8);});});}module[_0x2d9a('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x8fbd=['demo','machineUuid','getUuid','deadline','add','grayReason','message','User','findAll','role','sequelize','admin','user','telephone','users','forEach','count','catch','pick','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','moment','bluebird','./hardware','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','find','defaults','then','uuid','data1','license','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s'];(function(_0x51167d,_0x208fdf){var _0x59203b=function(_0x205bdf){while(--_0x205bdf){_0x51167d['push'](_0x51167d['shift']());}};_0x59203b(++_0x208fdf);}(_0x8fbd,0x187));var _0xd8fb=function(_0x4619ec,_0xdadf6c){_0x4619ec=_0x4619ec-0x0;var _0x3aeba0=_0x8fbd[_0x4619ec];return _0x3aeba0;};'use strict';var util=require(_0xd8fb('0x0'));var _=require('lodash');var moment=require(_0xd8fb('0x1'));var BPromise=require(_0xd8fb('0x2'));var hardware=require(_0xd8fb('0x3'));var encryptor=require('../../components/encryptor');var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd8fb('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xd8fb('0x5'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xd8fb('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xd8fb('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5f35f5){return new BPromise(function(_0x1fe9d0,_0x2a107c){return db['License'][_0xd8fb('0x7')](_[_0xd8fb('0x8')](_0x5f35f5,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x3b5575){return checkLicense(_0x3b5575,null);})[_0xd8fb('0x9')](function(_0x2e74eb){_0x1fe9d0(_0x2e74eb);return;})['catch'](function(_0x49de8a){_0x2a107c(_0x49de8a);});});}function checkLicense(_0x25ebbf,_0x2502e2){if(!_0x25ebbf){demoLicense[_0xd8fb('0xa')]=_0x25ebbf[_0xd8fb('0xb')];return demoLicense;}try{var _0x37d2a0=_0x2502e2||_0x25ebbf[_0xd8fb('0xc')];if(_['isEmpty'](_0x37d2a0)){throw new Error(_0xd8fb('0xd'));}var _0x4dd90e=_0x25ebbf[_0xd8fb('0xb')];var _0x132693=_0x25ebbf[_0xd8fb('0xe')];var _0x521dfd=_0x4dd90e[_0xd8fb('0xf')]('-')[0x4];var _0x183d57=_0x4dd90e[_0xd8fb('0xf')]('-')[0x0];var _0x48347a=encryptor[_0xd8fb('0x10')](_0x37d2a0,util[_0xd8fb('0x11')](_0xd8fb('0x12'),_0x521dfd,_0x4dd90e,_0x183d57));var _0x528d32=JSON['parse'](_0x48347a);_0x528d32[_0xd8fb('0x13')]=![];_0x528d32[_0xd8fb('0xa')]=_0x4dd90e;_0x528d32[_0xd8fb('0x14')]=hardware[_0xd8fb('0x15')]();if(_0x132693){var _0x242274=encryptor['decryptString'](_0x132693);_0x528d32['gray']=_0x242274;_0x528d32[_0xd8fb('0x16')]=moment(_0x242274)[_0xd8fb('0x17')](0x7,'days')[_0xd8fb('0x11')]();_0x528d32[_0xd8fb('0x18')]=_0x528d32[_0xd8fb('0xa')]!=_0x528d32[_0xd8fb('0x14')]?'changed':'disabled';}return _0x528d32;}catch(_0x428f72){breakingLicense[_0xd8fb('0xa')]=_0x25ebbf['data1'];breakingLicense[_0xd8fb('0x19')]=_0x428f72[_0xd8fb('0x19')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0xe69089,_0x58d7ea){getLicense()[_0xd8fb('0x9')](function(_0x2a1f2a){return db[_0xd8fb('0x1a')][_0xd8fb('0x1b')]({'attributes':[_0xd8fb('0x1c'),[db[_0xd8fb('0x1d')]['fn']('COUNT',db[_0xd8fb('0x1d')]['col'](_0xd8fb('0x1c'))),'count']],'group':_0xd8fb('0x1c'),'where':{'role':{'$or':[_0xd8fb('0x1e'),_0xd8fb('0x1f'),_0xd8fb('0x20')]}},'raw':!![]})['then'](function(_0x3e45a5){var _0x52e0c2={'user':_0x2a1f2a[_0xd8fb('0x21')]||0x0,'telephone':_0x2a1f2a['telephones']||0x0};_0x3e45a5[_0xd8fb('0x22')](function(_0x284def){var _0x3810ff=_0x284def[_0xd8fb('0x1c')]===_0xd8fb('0x1e')?'user':_0x284def[_0xd8fb('0x1c')];_0x52e0c2[_0x3810ff]-=_0x284def[_0xd8fb('0x23')];if(_0x52e0c2[_0x3810ff]<0x0)_0x52e0c2[_0x3810ff]=0x0;});_0xe69089(_0x52e0c2);return;});})[_0xd8fb('0x24')](function(_0x19a4f9){_0x58d7ea(_0x19a4f9);});});}function checkUserLimits(_0x29d529){return new BPromise(function(_0x46092b,_0x42f13d){getLimits()['then'](function(_0x5b31a2){var _0x3df547=_[_0xd8fb('0x25')](_['countBy'](_0x29d529,'role'),[_0xd8fb('0x1e'),_0xd8fb('0x1f'),_0xd8fb('0x20')]);var _0x1295fb=(_0x3df547[_0xd8fb('0x1e')]||0x0)+(_0x3df547[_0xd8fb('0x1f')]||0x0);var _0x345c5e=_0x3df547[_0xd8fb('0x20')]||0x0;if(_0x1295fb>_0x5b31a2[_0xd8fb('0x1f')])return _0x42f13d(_0xd8fb('0x26'));if(_0x345c5e>_0x5b31a2[_0xd8fb('0x20')])return _0x42f13d(_0xd8fb('0x27'));return _0x46092b();})[_0xd8fb('0x24')](function(_0x2ed4bb){_0x42f13d(_0x2ed4bb);});});}module[_0xd8fb('0x28')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 5c2707d..ebdcaba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ce=['exports','http://localhost:9000','myappanuglar-secret','secret'];(function(_0x430546,_0x271eba){var _0x1eecaf=function(_0x4e14e2){while(--_0x4e14e2){_0x430546['push'](_0x430546['shift']());}};_0x1eecaf(++_0x271eba);}(_0x02ce,0x1ac));var _0xe02c=function(_0x2b3af2,_0x249f20){_0x2b3af2=_0x2b3af2-0x0;var _0x37debd=_0x02ce[_0x2b3af2];return _0x37debd;};'use strict';module[_0xe02c('0x0')]={'DOMAIN':_0xe02c('0x1'),'SESSION_SECRET':_0xe02c('0x2'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xe02c('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0x1775=['myappanuglar-secret','app-id','secret','http://localhost:9000'];(function(_0x5f0805,_0xa3a28c){var _0xbbc661=function(_0x3d7e4c){while(--_0x3d7e4c){_0x5f0805['push'](_0x5f0805['shift']());}};_0xbbc661(++_0xa3a28c);}(_0x1775,0x1db));var _0x5177=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x1775[_0x432682];return _0x463d05;};'use strict';module['exports']={'DOMAIN':_0x5177('0x0'),'SESSION_SECRET':_0x5177('0x1'),'GOOGLE_ID':_0x5177('0x2'),'GOOGLE_SECRET':_0x5177('0x3'),'DEBUG':''};
\ No newline at end of file
index 84c431b..81d6d66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8758=['../utils/loggers','fileLogger','exports'];(function(_0x14a862,_0x2b559d){var _0x245eb5=function(_0x6e014c){while(--_0x6e014c){_0x14a862['push'](_0x14a862['shift']());}};_0x245eb5(++_0x2b559d);}(_0x8758,0x19b));var _0x8875=function(_0x555265,_0x4fee98){_0x555265=_0x555265-0x0;var _0x2772f0=_0x8758[_0x555265];return _0x2772f0;};'use strict';var fileLogger=require(_0x8875('0x0'))[_0x8875('0x1')];module[_0x8875('0x2')]=fileLogger;
\ No newline at end of file
+var _0x85e7=['fileLogger','../utils/loggers'];(function(_0x5506b2,_0x430302){var _0x3c0f7f=function(_0x442dba){while(--_0x442dba){_0x5506b2['push'](_0x5506b2['shift']());}};_0x3c0f7f(++_0x430302);}(_0x85e7,0xa1));var _0x785e=function(_0xd40e86,_0x36caa1){_0xd40e86=_0xd40e86-0x0;var _0x3135e0=_0x85e7[_0xd40e86];return _0x3135e0;};'use strict';var fileLogger=require(_0x785e('0x0'))[_0x785e('0x1')];module['exports']=fileLogger;
\ No newline at end of file
index 7f87f2c..b571e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3842=['../../services/ami/index.js','../../services/agi/index.js','../../services/email/index.js','routing','../../services/routing/index.js','xdr','exports','resolve','join','express','../../services/express/index.js','ami'];(function(_0x514177,_0x5b1f19){var _0x28594c=function(_0x1157c7){while(--_0x1157c7){_0x514177['push'](_0x514177['shift']());}};_0x28594c(++_0x5b1f19);}(_0x3842,0x1b7));var _0x2384=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x3842[_0x2641f9];return _0x585741;};'use strict';var path=require('path');var cfg=require('../../config/environment');var env={'NODE_PATH':path[_0x2384('0x0')](path[_0x2384('0x1')](cfg['root'],'legacy-libs'))};var pm2config={'apps':[{'name':_0x2384('0x2'),'script':path[_0x2384('0x1')](__dirname,_0x2384('0x3')),'env':env},{'name':_0x2384('0x4'),'script':path['join'](__dirname,_0x2384('0x5')),'env':env},{'name':'agi','script':path['join'](__dirname,_0x2384('0x6')),'env':env},{'name':'email','script':path[_0x2384('0x1')](__dirname,_0x2384('0x7')),'env':env},{'name':_0x2384('0x8'),'script':path[_0x2384('0x1')](__dirname,_0x2384('0x9')),'env':env},{'name':_0x2384('0xa'),'script':path[_0x2384('0x1')](__dirname,'../../services/xdr/index.js'),'env':env}]};module[_0x2384('0xb')]=pm2config;
\ No newline at end of file
+var _0xcc95=['../../services/ami/index.js','agi','../../services/agi/index.js','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','path','../../config/environment','resolve','root','legacy-libs','express','join','../../services/express/index.js','ami'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xcc95,0xc3));var _0x5cc9=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xcc95[_0x3b5250];return _0xc844a1;};'use strict';var path=require(_0x5cc9('0x0'));var cfg=require(_0x5cc9('0x1'));var env={'NODE_PATH':path[_0x5cc9('0x2')](path['join'](cfg[_0x5cc9('0x3')],_0x5cc9('0x4')))};var pm2config={'apps':[{'name':_0x5cc9('0x5'),'script':path[_0x5cc9('0x6')](__dirname,_0x5cc9('0x7')),'env':env},{'name':_0x5cc9('0x8'),'script':path[_0x5cc9('0x6')](__dirname,_0x5cc9('0x9')),'env':env},{'name':_0x5cc9('0xa'),'script':path[_0x5cc9('0x6')](__dirname,_0x5cc9('0xb')),'env':env},{'name':_0x5cc9('0xc'),'script':path[_0x5cc9('0x6')](__dirname,_0x5cc9('0xd')),'env':env},{'name':_0x5cc9('0xe'),'script':path[_0x5cc9('0x6')](__dirname,_0x5cc9('0xf')),'env':env},{'name':_0x5cc9('0x10'),'script':path['join'](__dirname,'../../services/xdr/index.js'),'env':env}]};module['exports']=pm2config;
\ No newline at end of file
index f96e472..e4b10a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cdc=['list','describe','delete','dump','pm2','bluebird','./config','connect','connected','start','disconnect','stop','then','restart'];(function(_0x230bb8,_0xa1718){var _0x16cb9a=function(_0x2848fe){while(--_0x2848fe){_0x230bb8['push'](_0x230bb8['shift']());}};_0x16cb9a(++_0xa1718);}(_0x4cdc,0x138));var _0xc4cd=function(_0x18adde,_0x205c06){_0x18adde=_0x18adde-0x0;var _0x7f8469=_0x4cdc[_0x18adde];return _0x7f8469;};'use strict';var pm2=require(_0xc4cd('0x0'));var BPromise=require(_0xc4cd('0x1'));var config=require(_0xc4cd('0x2'));function connect(){return new BPromise(function(_0x36dfcd,_0x1bdcf1){return pm2[_0xc4cd('0x3')](function(_0x3d571e){if(_0x3d571e){return _0x1bdcf1(_0x3d571e);}return _0x36dfcd(_0xc4cd('0x4'));});});};exports[_0xc4cd('0x5')]=function(_0x56c62d){return connect()['then'](function(){return new BPromise(function(_0x5b7bb1,_0x26036f){return pm2[_0xc4cd('0x5')](_0x56c62d,function(_0x4e0bd2,_0x4002ba){if(_0x4e0bd2){return _0x26036f(_0x4e0bd2);}pm2[_0xc4cd('0x6')]();return _0x5b7bb1(_0x4002ba);});});});};exports[_0xc4cd('0x7')]=function(_0x199329){return connect()['then'](function(){return new BPromise(function(_0xa6b741,_0x1d4d5b){return pm2['stop'](_0x199329,function(_0xfc371c,_0x516f17){if(_0xfc371c){return _0x1d4d5b(_0xfc371c);}pm2[_0xc4cd('0x6')]();return _0xa6b741(_0x516f17);});});});};exports['restart']=function(_0x2fbe9d){return connect()[_0xc4cd('0x8')](function(){return new BPromise(function(_0x43e07a,_0x31f6c5){return pm2[_0xc4cd('0x9')](_0x2fbe9d,function(_0x2bfc1e,_0x2ffcdc){if(_0x2bfc1e){return _0x31f6c5(_0x2bfc1e);}pm2['disconnect']();return _0x43e07a(_0x2ffcdc);});});});};exports['list']=function(){return connect()['then'](function(){return new BPromise(function(_0x545f58,_0x2d2d10){return pm2[_0xc4cd('0xa')](function(_0x40edd9,_0x4360a9){if(_0x40edd9){return _0x2d2d10(_0x40edd9);}pm2[_0xc4cd('0x6')]();return _0x545f58(_0x4360a9);});});});};exports['describe']=function(_0x17ff30){return connect()[_0xc4cd('0x8')](function(){return new BPromise(function(_0x2dbf4a,_0x2c05ff){return pm2[_0xc4cd('0xb')](_0x17ff30,function(_0x2e66a0,_0x4324d2){if(_0x2e66a0){return _0x2c05ff(_0x2e66a0);}pm2['disconnect']();return _0x2dbf4a(_0x4324d2);});});});};exports[_0xc4cd('0xc')]=function(_0x9029d3){return connect()[_0xc4cd('0x8')](function(){return new BPromise(function(_0x3ab020,_0x961e4d){return pm2[_0xc4cd('0xc')](_0x9029d3,function(_0x5c12d0,_0x1f7cd7){if(_0x5c12d0){return _0x961e4d(_0x5c12d0);}pm2[_0xc4cd('0x6')]();return _0x3ab020(_0x1f7cd7);});});});};exports[_0xc4cd('0xd')]=function(){return connect()[_0xc4cd('0x8')](function(){return new BPromise(function(_0x2d88da,_0x4898d2){return pm2[_0xc4cd('0xd')](function(_0x5cd3b8){if(_0x5cd3b8){return _0x4898d2(_0x5cd3b8);}return _0x2d88da('saved');});});});};
\ No newline at end of file
+var _0xca5f=['pm2','bluebird','connect','connected','start','then','stop','disconnect','list','describe','delete','saved'];(function(_0x5523ba,_0x312e5e){var _0x4ce263=function(_0x5d3beb){while(--_0x5d3beb){_0x5523ba['push'](_0x5523ba['shift']());}};_0x4ce263(++_0x312e5e);}(_0xca5f,0x1e0));var _0xfca5=function(_0x28a531,_0xd02938){_0x28a531=_0x28a531-0x0;var _0x59c356=_0xca5f[_0x28a531];return _0x59c356;};'use strict';var pm2=require(_0xfca5('0x0'));var BPromise=require(_0xfca5('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x32fdbe,_0x2ceee1){return pm2[_0xfca5('0x2')](function(_0x34b791){if(_0x34b791){return _0x2ceee1(_0x34b791);}return _0x32fdbe(_0xfca5('0x3'));});});};exports[_0xfca5('0x4')]=function(_0x3028b7){return connect()[_0xfca5('0x5')](function(){return new BPromise(function(_0x54d290,_0x3cd6bf){return pm2[_0xfca5('0x4')](_0x3028b7,function(_0x1f4611,_0x2bcc84){if(_0x1f4611){return _0x3cd6bf(_0x1f4611);}pm2['disconnect']();return _0x54d290(_0x2bcc84);});});});};exports[_0xfca5('0x6')]=function(_0x23e2e6){return connect()[_0xfca5('0x5')](function(){return new BPromise(function(_0x4f6246,_0x9b89a4){return pm2[_0xfca5('0x6')](_0x23e2e6,function(_0x2d59ae,_0x190a9c){if(_0x2d59ae){return _0x9b89a4(_0x2d59ae);}pm2[_0xfca5('0x7')]();return _0x4f6246(_0x190a9c);});});});};exports['restart']=function(_0x1d204f){return connect()['then'](function(){return new BPromise(function(_0x42a919,_0xf6a72e){return pm2['restart'](_0x1d204f,function(_0x4cefbd,_0x558849){if(_0x4cefbd){return _0xf6a72e(_0x4cefbd);}pm2[_0xfca5('0x7')]();return _0x42a919(_0x558849);});});});};exports[_0xfca5('0x8')]=function(){return connect()['then'](function(){return new BPromise(function(_0x30033f,_0x1b3d0b){return pm2['list'](function(_0x39bbbe,_0xf6954b){if(_0x39bbbe){return _0x1b3d0b(_0x39bbbe);}pm2[_0xfca5('0x7')]();return _0x30033f(_0xf6954b);});});});};exports[_0xfca5('0x9')]=function(_0x42cd28){return connect()[_0xfca5('0x5')](function(){return new BPromise(function(_0x5c9547,_0x3a7233){return pm2[_0xfca5('0x9')](_0x42cd28,function(_0x1ef9cf,_0x30bf24){if(_0x1ef9cf){return _0x3a7233(_0x1ef9cf);}pm2[_0xfca5('0x7')]();return _0x5c9547(_0x30bf24);});});});};exports['delete']=function(_0xb2bd6d){return connect()['then'](function(){return new BPromise(function(_0x243a8d,_0x628d05){return pm2[_0xfca5('0xa')](_0xb2bd6d,function(_0x2370c9,_0x375d3e){if(_0x2370c9){return _0x628d05(_0x2370c9);}pm2['disconnect']();return _0x243a8d(_0x375d3e);});});});};exports['dump']=function(){return connect()[_0xfca5('0x5')](function(){return new BPromise(function(_0x52544d,_0x31e5ab){return pm2['dump'](function(_0x3ad899){if(_0x3ad899){return _0x31e5ab(_0x3ad899);}return _0x52544d(_0xfca5('0xb'));});});});};
\ No newline at end of file
index 1acda9b..647fc8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c2d=['chatTimeout','ChatInteraction','findAll','subtract','minutes','then','length','map','update','timeout','YYYY-MM-DD\x20HH:mm:ss','info','join','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','start','lodash','moment','ioredis','../../mysqldb','../logger','schedule','redis','localhost','socket.io-emitter','Setting','find'];(function(_0x2ef770,_0x492cd3){var _0x2554b0=function(_0x2b6146){while(--_0x2b6146){_0x2ef770['push'](_0x2ef770['shift']());}};_0x2554b0(++_0x492cd3);}(_0x4c2d,0xa9));var _0xd4c2=function(_0x2d041a,_0x1e9871){_0x2d041a=_0x2d041a-0x0;var _0x491965=_0x4c2d[_0x2d041a];return _0x491965;};'use strict';var _=require(_0xd4c2('0x0'));var moment=require(_0xd4c2('0x1'));var Redis=require(_0xd4c2('0x2'));var util=require('util');var config=require('../../config/environment');var db=require(_0xd4c2('0x3'))['db'];var logger=require(_0xd4c2('0x4'))(_0xd4c2('0x5'));config['redis']=_['defaults'](config[_0xd4c2('0x6')],{'host':_0xd4c2('0x7'),'port':0x18eb});var io=require(_0xd4c2('0x8'))(new Redis(config[_0xd4c2('0x6')]));function closeInteractions(){var _0xb1ef=0x0;var _0x11d171=[];return db[_0xd4c2('0x9')][_0xd4c2('0xa')]({'raw':!![],'attributes':['id',_0xd4c2('0xb')],'where':{'id':0x1}})['then'](function(_0x582ea1){_0xb1ef=_0x582ea1[_0xd4c2('0xb')];if(_0xb1ef){return db[_0xd4c2('0xc')][_0xd4c2('0xd')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xd4c2('0xe')](_0x582ea1[_0xd4c2('0xb')],_0xd4c2('0xf'))}}});}else{return[];}})[_0xd4c2('0x10')](function(_0x596120){if(_0x596120&&_0x596120[_0xd4c2('0x11')]){_0x11d171=_[_0xd4c2('0x12')](_0x596120||[],'id');logger['info']('[CHAT]\x20Interactions\x20to\x20close:',_0x11d171['join']());return db[_0xd4c2('0xc')][_0xd4c2('0x13')]({'closeReason':'system','disposition':_0xd4c2('0x14'),'closed':!![],'closedAt':moment()['format'](_0xd4c2('0x15'))},{'where':{'id':_0x11d171}});}})[_0xd4c2('0x10')](function(){if(_0x11d171&&_0x11d171['length']){logger[_0xd4c2('0x16')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x11d171[_0xd4c2('0x17')]());for(var _0x4c60b9=0x0;_0x4c60b9<_0x11d171[_0xd4c2('0x11')];_0x4c60b9++){io[_0xd4c2('0x18')](_0xd4c2('0x19'),{'id':_0x11d171[_0x4c60b9],'closed':!![]});}}})[_0xd4c2('0x1a')](function(_0x306efd){logger[_0xd4c2('0x1b')](_0xd4c2('0x1c'),_0x306efd?util['inspect'](_0x306efd,{'showHidden':![],'depth':null}):'');});}exports[_0xd4c2('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x0782=['schedule','defaults','redis','socket.io-emitter','chatTimeout','ChatInteraction','findAll','subtract','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','then','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment','../../mysqldb'];(function(_0x1c7f15,_0x37a3eb){var _0x366929=function(_0x410a1a){while(--_0x410a1a){_0x1c7f15['push'](_0x1c7f15['shift']());}};_0x366929(++_0x37a3eb);}(_0x0782,0x81));var _0x2078=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x0782[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0x2078('0x0'));var moment=require(_0x2078('0x1'));var Redis=require(_0x2078('0x2'));var util=require(_0x2078('0x3'));var config=require(_0x2078('0x4'));var db=require(_0x2078('0x5'))['db'];var logger=require('../logger')(_0x2078('0x6'));config['redis']=_[_0x2078('0x7')](config[_0x2078('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x2078('0x9'))(new Redis(config[_0x2078('0x8')]));function closeInteractions(){var _0x1d8e85=0x0;var _0x281346=[];return db['Setting']['find']({'raw':!![],'attributes':['id',_0x2078('0xa')],'where':{'id':0x1}})['then'](function(_0x3310d2){_0x1d8e85=_0x3310d2[_0x2078('0xa')];if(_0x1d8e85){return db[_0x2078('0xb')][_0x2078('0xc')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x2078('0xd')](_0x3310d2[_0x2078('0xa')],'minutes')}}});}else{return[];}})['then'](function(_0x4e8e23){if(_0x4e8e23&&_0x4e8e23['length']){_0x281346=_['map'](_0x4e8e23||[],'id');logger[_0x2078('0xe')](_0x2078('0xf'),_0x281346[_0x2078('0x10')]());return db[_0x2078('0xb')][_0x2078('0x11')]({'closeReason':_0x2078('0x12'),'disposition':_0x2078('0x13'),'closed':!![],'closedAt':moment()[_0x2078('0x14')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x281346}});}})[_0x2078('0x15')](function(){if(_0x281346&&_0x281346[_0x2078('0x16')]){logger[_0x2078('0xe')](_0x2078('0x17'),_0x281346[_0x2078('0x10')]());for(var _0x2518c5=0x0;_0x2518c5<_0x281346['length'];_0x2518c5++){io[_0x2078('0x18')]('chatInteraction:update',{'id':_0x281346[_0x2518c5],'closed':!![]});}}})['catch'](function(_0x3e4c59){logger['error'](_0x2078('0x19'),_0x3e4c59?util[_0x2078('0x1a')](_0x3e4c59,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 839d83d..ceec590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf068=['exports','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x3c4f1f,_0x20d3ec){var _0x19cb69=function(_0x2e04bc){while(--_0x2e04bc){_0x3c4f1f['push'](_0x3c4f1f['shift']());}};_0x19cb69(++_0x20d3ec);}(_0xf068,0x13b));var _0x8f06=function(_0x5701b1,_0x195513){_0x5701b1=_0x5701b1-0x0;var _0x599bbe=_0xf068[_0x5701b1];return _0x599bbe;};'use strict';function start(){var _0x1bebb1=require(_0x8f06('0x0'));return _0x1bebb1['startAllRefreshIntervals']();}module[_0x8f06('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0xf118=['startAllRefreshIntervals','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x6b9475,_0x93a936){var _0x5bb2ca=function(_0x4bf4de){while(--_0x4bf4de){_0x6b9475['push'](_0x6b9475['shift']());}};_0x5bb2ca(++_0x93a936);}(_0xf118,0x113));var _0x8f11=function(_0x51904f,_0x439694){_0x51904f=_0x51904f-0x0;var _0x24dc27=_0xf118[_0x51904f];return _0x24dc27;};'use strict';function start(){var _0x37fec3=require(_0x8f11('0x0'));return _0x37fec3[_0x8f11('0x1')]();}module['exports']={'intervals':{},'start':start};
\ No newline at end of file
index 887dac6..81982bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x407f=['extname','join','existsSync','status','Sent','attachments','message','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','text','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','jobs','map','keyBy','toString','difference','exists','stop','deleteJob','toRun','index','my\x20id','run\x20job','cron','startAt','add\x20cron','stop\x20cron','isBetween','endAt','update','update\x20cron','run','util','path','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','Smtp','user','subtractNumber','subtractUnit','../../files/reports','%s.%s','savename'];(function(_0x5a845c,_0x161ab9){var _0x114ea8=function(_0x53d24b){while(--_0x53d24b){_0x5a845c['push'](_0x5a845c['shift']());}};_0x114ea8(++_0x161ab9);}(_0x407f,0x8a));var _0xf407=function(_0xca632f,_0x911029){_0xca632f=_0xca632f-0x0;var _0x49da41=_0x407f[_0xca632f];return _0x49da41;};'use strict';var fs=require('fs');var util=require(_0xf407('0x0'));var path=require(_0xf407('0x1'));var _=require('lodash');var moment=require(_0xf407('0x2'));var CronJobManager=require(_0xf407('0x3'));var jayson=require(_0xf407('0x4'));var BPromise=require(_0xf407('0x5'));var logger=require(_0xf407('0x6'))(_0xf407('0x7'));var db=require(_0xf407('0x8'))['db'];var analyticCustomReportController=require(_0xf407('0x9'));var analyticDefaultReportController=require(_0xf407('0xa'));var client=jayson[_0xf407('0xb')][_0xf407('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3fdcbc,_0x2db2ac){return function(){logger[_0xf407('0xd')](_0xf407('0xe'),_0x3fdcbc[_0xf407('0xf')]);var _0x2c9808=!![];var _0x11a39e=_0x3fdcbc[_0xf407('0x10')][_0xf407('0x11')]();var _0xdb4586={'account':_0x11a39e,'message':{'from':util[_0xf407('0x12')](_0xf407('0x13'),_0x3fdcbc['MailAccount'][_0xf407('0x14')],_0x3fdcbc[_0xf407('0x10')]['email']||_0x3fdcbc['MailAccount'][_0xf407('0x15')][_0xf407('0x16')]),'to':_0x3fdcbc['email'],'cc':_0x3fdcbc['cc'],'bcc':_0x3fdcbc['bcc'],'subject':util[_0xf407('0x12')]('Report\x20%s\x20last\x20%s\x20%s',_0x2db2ac[_0xf407('0x14')],_0x3fdcbc[_0xf407('0x17')],_0x3fdcbc[_0xf407('0x18')])}};var _0x3fc9da=path['join'](__dirname,_0xf407('0x19'));var _0x7106e3=_0x2db2ac['savename'];var _0x3a7424=util[_0xf407('0x12')](_0xf407('0x1a'),path['basename'](_0x2db2ac[_0xf407('0x1b')],path[_0xf407('0x1c')](_0x2db2ac[_0xf407('0x1b')])),'zip');var _0x42cf55=path[_0xf407('0x1d')](_0x3fc9da,_0x7106e3);var _0x25f500=path[_0xf407('0x1d')](_0x3fc9da,_0x3a7424);if(fs[_0xf407('0x1e')](_0x42cf55)){_0x2db2ac[_0xf407('0x1f')]=_0xf407('0x20');_0xdb4586['message'][_0xf407('0x21')]=[{'filename':_0x7106e3,'path':_0x42cf55}];_0xdb4586[_0xf407('0x22')]['text']=util[_0xf407('0x12')](_0xf407('0x23'),JSON[_0xf407('0x24')](_0x2db2ac,null,0x2));}else if(fs[_0xf407('0x1e')](_0x25f500)){_0x2db2ac[_0xf407('0x1f')]=_0xf407('0x20');_0xdb4586[_0xf407('0x22')][_0xf407('0x21')]=[{'filename':_0x3a7424,'path':_0x25f500}];}else{_0xdb4586[_0xf407('0x22')][_0xf407('0x25')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x3fdcbc[_0xf407('0x26')]){_0x2c9808=![];logger['info'](_0xf407('0x27'));}}if(_0x2c9808){return client[_0xf407('0x28')](_0xf407('0x29'),_0xdb4586)[_0xf407('0x2a')](function(_0xfa585a){if(_0xfa585a[_0xf407('0x2b')]){return logger[_0xf407('0x2b')](_0xf407('0x2c'),JSON[_0xf407('0x24')](_0xfa585a));}return logger[_0xf407('0xd')](_0xf407('0x2d'));})[_0xf407('0x2e')](function(_0x4eb3cf){return logger[_0xf407('0x2b')](_0xf407('0x2c'),JSON[_0xf407('0x24')](_0x4eb3cf));});}};}function handleError(){return function(_0x3662fe){return logger[_0xf407('0x2b')](JSON[_0xf407('0x24')](_0x3662fe));};}function handleResult(_0x3a59a4){return function(_0x5ef042){logger['info']('data',JSON['stringify'](_0x5ef042));if(_0x3a59a4[_0xf407('0x10')]&&_0x3a59a4[_0xf407('0x10')][_0xf407('0x15')]&&!_[_0xf407('0x2f')](_0x3a59a4['email'])){setTimeout(handleSendEmail(_0x3a59a4,_0x5ef042),0x3c*0x3e8);}};}function handleJob(_0xdfc7be){return function(){try{if(_[_0xf407('0x2f')](_0xdfc7be[_0xf407('0x17')])){return logger[_0xf407('0xd')](_0xf407('0x30'));}if(_['isNil'](_0xdfc7be[_0xf407('0x18')])){return logger[_0xf407('0xd')]('subtractUnit\x20null\x20or\x20undefined');}var _0x4b7775={'startDate':moment()[_0xf407('0x31')](_0xdfc7be[_0xf407('0x17')],_0xdfc7be[_0xf407('0x18')])[_0xf407('0x12')](_0xf407('0x32')),'endDate':moment()[_0xf407('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0xdfc7be[_0xf407('0x33')],'name':_0xdfc7be['name']};if(!_[_0xf407('0x2f')](_0xdfc7be['DefaultReportId'])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0xdfc7be[_0xf407('0x34')]);return analyticDefaultReportController[_0xf407('0x35')]({'id':_0xdfc7be['DefaultReportId']},_0x4b7775)['then'](handleResult(_0xdfc7be))['catch'](handleError());}if(!_['isNil'](_0xdfc7be[_0xf407('0x36')])){logger['info'](_0xf407('0x37'),_0xdfc7be[_0xf407('0x36')]);return analyticCustomReportController[_0xf407('0x35')]({'id':_0xdfc7be[_0xf407('0x36')]},_0x4b7775)[_0xf407('0x2a')](handleResult(_0xdfc7be))[_0xf407('0x2e')](handleError());}}catch(_0x255f8b){logger[_0xf407('0x2b')](JSON[_0xf407('0x24')](_0x255f8b));}return logger[_0xf407('0xd')](_0xf407('0x38'));};}function getJobs(_0x3892c9){var _0x5b5a85={};if(_0x3892c9){_0x5b5a85['id']=_0x3892c9;}return db[_0xf407('0x39')][_0xf407('0x3a')]({'where':_0x5b5a85,'include':[{'model':db[_0xf407('0x10')],'attributes':['id',_0xf407('0x14'),_0xf407('0xf')],'include':[{'model':db[_0xf407('0x3b')],'as':_0xf407('0x15'),'include':[{'model':db['CloudProvider'],'as':_0xf407('0x3c')}]}]}]})[_0xf407('0x2a')](function(_0x5e9e53){var _0x558309=_[_0xf407('0x3d')](manager[_0xf407('0x3e')]);var _0x4d3e1f=_[_0xf407('0x3f')](_0x5e9e53,function(_0x5c042a){return _0x5c042a['id']['toString']();});var _0x43cf2c=_[_0xf407('0x40')](_0x5e9e53,function(_0x47587f){return _0x47587f['id'][_0xf407('0x41')]();});var _0x3302e4=_0x3892c9?_0x4d3e1f:_['difference'](_0x4d3e1f,_0x558309);var _0x945601=_['intersection'](_0x4d3e1f,_0x558309);var _0x391b35=_[_0xf407('0x42')](_0x558309,_0x4d3e1f);var _0x519512;var _0x38d9ca;for(_0x519512=0x0;_0x519512<_0x391b35['length']&&!_0x3892c9;_0x519512+=0x1){_0x38d9ca=_0x391b35[_0x519512]['toString']();if(manager[_0xf407('0x43')](_0x38d9ca)){manager[_0xf407('0x44')](_0x38d9ca);manager[_0xf407('0x45')](_0x38d9ca);logger['info']('delete\x20cron',_0x38d9ca);}}logger['info'](_0xf407('0x46'),JSON[_0xf407('0x24')](_0x3302e4));for(_0x519512=0x0;_0x519512<_0x3302e4['length'];_0x519512+=0x1){_0x38d9ca=_0x3302e4[_0x519512][_0xf407('0x41')]();logger[_0xf407('0xd')](_0xf407('0x47'),_0x38d9ca);if(_0x3892c9){logger[_0xf407('0xd')](_0xf407('0x48'),_0x3892c9);logger[_0xf407('0xd')](JSON[_0xf407('0x24')](_0x43cf2c[_0x38d9ca]));BPromise['resolve']()[_0xf407('0x2a')](handleJob(_0x43cf2c[_0x38d9ca]));logger[_0xf407('0xd')](_0xf407('0x49'),_0x43cf2c[_0x38d9ca]['name'],_0x43cf2c[_0x38d9ca][_0xf407('0x4a')]);}else if(_0x43cf2c[_0x38d9ca]['cron']&&_0x43cf2c[_0x38d9ca]['active']&&moment()['isBetween'](_0x43cf2c[_0x38d9ca][_0xf407('0x4b')],_0x43cf2c[_0x38d9ca]['endAt'])){manager['add'](_0x38d9ca,_0x43cf2c[_0x38d9ca][_0xf407('0x4a')],handleJob(_0x43cf2c[_0x38d9ca]));manager['start'](_0x38d9ca);logger[_0xf407('0xd')](_0xf407('0x4c'),_0x43cf2c[_0x38d9ca][_0xf407('0x14')],_0x43cf2c[_0x38d9ca][_0xf407('0x4a')]);}else if(manager['exists'](_0x38d9ca)){manager[_0xf407('0x44')](_0x38d9ca);manager[_0xf407('0x45')](_0x38d9ca);logger['info'](_0xf407('0x4d'),_0x43cf2c[_0x38d9ca][_0xf407('0x14')],_0x43cf2c[_0x38d9ca][_0xf407('0x4a')]);}}for(_0x519512=0x0,_0x38d9ca;_0x519512<_0x945601['length']&&!_0x3892c9;_0x519512+=0x1){_0x38d9ca=_0x945601[_0x519512][_0xf407('0x41')]();if(manager[_0xf407('0x43')](_0x38d9ca)){if(_0x43cf2c[_0x38d9ca][_0xf407('0x4a')]&&_0x43cf2c[_0x38d9ca]['active']&&moment()[_0xf407('0x4e')](_0x43cf2c[_0x38d9ca][_0xf407('0x4b')],_0x43cf2c[_0x38d9ca][_0xf407('0x4f')])){manager[_0xf407('0x50')](_0x38d9ca,_0x43cf2c[_0x38d9ca][_0xf407('0x4a')],handleJob(_0x43cf2c[_0x38d9ca]));logger[_0xf407('0xd')](_0xf407('0x51'),_0x43cf2c[_0x38d9ca]['name'],_0x43cf2c[_0x38d9ca]['cron']);}else{manager['stop'](_0x38d9ca);manager[_0xf407('0x45')](_0x38d9ca);logger[_0xf407('0xd')]('stop\x20cron',_0x43cf2c[_0x38d9ca][_0xf407('0x14')],_0x43cf2c[_0x38d9ca]['cron']);}}}})[_0xf407('0x2e')](function(_0x8f1aae){logger[_0xf407('0x2b')](JSON[_0xf407('0x24')](_0x8f1aae));});}exports[_0xf407('0x52')]=function(_0x463435){return getJobs(_0x463435);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xdb0f=['subtractNumber','subtractUnit','join','../../files/reports','%s.%s','basename','savename','extname','existsSync','Sent','message','attachments','text','stringify','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','catch','error\x20mail','isNil','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','runReport','DefaultReportId','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','MailServerOut','CloudProvider','keys','jobs','map','toString','keyBy','difference','intersection','exists','stop','deleteJob','delete\x20cron','toRun','my\x20id','run\x20job','cron','active','add','start','add\x20cron','stop\x20cron','length','isBetween','startAt','update','update\x20cron','run','lodash','cron-job-manager','jayson/promise','../logger','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','name','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s'];(function(_0x2069be,_0x36d91f){var _0x46a3f2=function(_0x5bb706){while(--_0x5bb706){_0x2069be['push'](_0x2069be['shift']());}};_0x46a3f2(++_0x36d91f);}(_0xdb0f,0x1c4));var _0xfdb0=function(_0x479978,_0x46ab1e){_0x479978=_0x479978-0x0;var _0x567a9f=_0xdb0f[_0x479978];return _0x567a9f;};'use strict';var fs=require('fs');var util=require('util');var path=require('path');var _=require(_0xfdb0('0x0'));var moment=require('moment');var CronJobManager=require(_0xfdb0('0x1'));var jayson=require(_0xfdb0('0x2'));var BPromise=require('bluebird');var logger=require(_0xfdb0('0x3'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xfdb0('0x4'));var client=jayson['client'][_0xfdb0('0x5')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x307438,_0x1d0c67){return function(){logger['info'](_0xfdb0('0x6'),_0x307438[_0xfdb0('0x7')]);var _0x4ae3ca=!![];var _0x31c56a=_0x307438[_0xfdb0('0x8')][_0xfdb0('0x9')]();var _0x551cd8={'account':_0x31c56a,'message':{'from':util[_0xfdb0('0xa')]('\x22%s\x22\x20<%s>',_0x307438[_0xfdb0('0x8')][_0xfdb0('0xb')],_0x307438[_0xfdb0('0x8')][_0xfdb0('0x7')]||_0x307438[_0xfdb0('0x8')][_0xfdb0('0xc')][_0xfdb0('0xd')]),'to':_0x307438['email'],'cc':_0x307438['cc'],'bcc':_0x307438[_0xfdb0('0xe')],'subject':util['format'](_0xfdb0('0xf'),_0x1d0c67[_0xfdb0('0xb')],_0x307438[_0xfdb0('0x10')],_0x307438[_0xfdb0('0x11')])}};var _0x51353c=path[_0xfdb0('0x12')](__dirname,_0xfdb0('0x13'));var _0x54e69f=_0x1d0c67['savename'];var _0x360ff6=util['format'](_0xfdb0('0x14'),path[_0xfdb0('0x15')](_0x1d0c67[_0xfdb0('0x16')],path[_0xfdb0('0x17')](_0x1d0c67[_0xfdb0('0x16')])),'zip');var _0x4f8138=path[_0xfdb0('0x12')](_0x51353c,_0x54e69f);var _0x517d36=path['join'](_0x51353c,_0x360ff6);if(fs[_0xfdb0('0x18')](_0x4f8138)){_0x1d0c67['status']=_0xfdb0('0x19');_0x551cd8[_0xfdb0('0x1a')][_0xfdb0('0x1b')]=[{'filename':_0x54e69f,'path':_0x4f8138}];_0x551cd8[_0xfdb0('0x1a')][_0xfdb0('0x1c')]=util[_0xfdb0('0xa')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xfdb0('0x1d')](_0x1d0c67,null,0x2));}else if(fs[_0xfdb0('0x18')](_0x517d36)){_0x1d0c67['status']='Sent';_0x551cd8[_0xfdb0('0x1a')]['attachments']=[{'filename':_0x360ff6,'path':_0x517d36}];}else{_0x551cd8[_0xfdb0('0x1a')][_0xfdb0('0x1c')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x307438['sendIfEmpty']){_0x4ae3ca=![];logger[_0xfdb0('0x1e')](_0xfdb0('0x1f'));}}if(_0x4ae3ca){return client[_0xfdb0('0x20')](_0xfdb0('0x21'),_0x551cd8)[_0xfdb0('0x22')](function(_0x4ead5e){if(_0x4ead5e[_0xfdb0('0x23')]){return logger[_0xfdb0('0x23')]('error\x20mail',JSON[_0xfdb0('0x1d')](_0x4ead5e));}return logger[_0xfdb0('0x1e')]('email\x20sent');})[_0xfdb0('0x24')](function(_0x330d38){return logger[_0xfdb0('0x23')](_0xfdb0('0x25'),JSON[_0xfdb0('0x1d')](_0x330d38));});}};}function handleError(){return function(_0x38f9f6){return logger[_0xfdb0('0x23')](JSON[_0xfdb0('0x1d')](_0x38f9f6));};}function handleResult(_0x576332){return function(_0x4bca27){logger[_0xfdb0('0x1e')]('data',JSON[_0xfdb0('0x1d')](_0x4bca27));if(_0x576332[_0xfdb0('0x8')]&&_0x576332[_0xfdb0('0x8')][_0xfdb0('0xc')]&&!_[_0xfdb0('0x26')](_0x576332['email'])){setTimeout(handleSendEmail(_0x576332,_0x4bca27),0x3c*0x3e8);}};}function handleJob(_0x1749c6){return function(){try{if(_['isNil'](_0x1749c6[_0xfdb0('0x10')])){return logger[_0xfdb0('0x1e')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x1749c6[_0xfdb0('0x11')])){return logger[_0xfdb0('0x1e')](_0xfdb0('0x27'));}var _0x18b261={'startDate':moment()['subtract'](_0x1749c6[_0xfdb0('0x10')],_0x1749c6[_0xfdb0('0x11')])[_0xfdb0('0xa')](_0xfdb0('0x28')),'endDate':moment()[_0xfdb0('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xfdb0('0x29'),'output':_0x1749c6[_0xfdb0('0x2a')],'name':_0x1749c6[_0xfdb0('0xb')]};if(!_['isNil'](_0x1749c6['DefaultReportId'])){logger['info'](_0xfdb0('0x2b'),_0x1749c6['DefaultReportId']);return analyticDefaultReportController[_0xfdb0('0x2c')]({'id':_0x1749c6[_0xfdb0('0x2d')]},_0x18b261)['then'](handleResult(_0x1749c6))[_0xfdb0('0x24')](handleError());}if(!_[_0xfdb0('0x26')](_0x1749c6[_0xfdb0('0x2e')])){logger[_0xfdb0('0x1e')](_0xfdb0('0x2f'),_0x1749c6[_0xfdb0('0x2e')]);return analyticCustomReportController[_0xfdb0('0x2c')]({'id':_0x1749c6[_0xfdb0('0x2e')]},_0x18b261)['then'](handleResult(_0x1749c6))[_0xfdb0('0x24')](handleError());}}catch(_0x552a63){logger[_0xfdb0('0x23')](JSON['stringify'](_0x552a63));}return logger[_0xfdb0('0x1e')](_0xfdb0('0x30'));};}function getJobs(_0xae797b){var _0x417267={};if(_0xae797b){_0x417267['id']=_0xae797b;}return db[_0xfdb0('0x31')]['findAll']({'where':_0x417267,'include':[{'model':db[_0xfdb0('0x8')],'attributes':['id','name',_0xfdb0('0x7')],'include':[{'model':db[_0xfdb0('0x32')],'as':_0xfdb0('0xc'),'include':[{'model':db[_0xfdb0('0x33')],'as':'CloudProvider'}]}]}]})[_0xfdb0('0x22')](function(_0x4ef078){var _0x3e9de3=_[_0xfdb0('0x34')](manager[_0xfdb0('0x35')]);var _0x5bf300=_[_0xfdb0('0x36')](_0x4ef078,function(_0x5557a6){return _0x5557a6['id'][_0xfdb0('0x37')]();});var _0xf4e247=_[_0xfdb0('0x38')](_0x4ef078,function(_0x245ad4){return _0x245ad4['id'][_0xfdb0('0x37')]();});var _0x33a0d8=_0xae797b?_0x5bf300:_[_0xfdb0('0x39')](_0x5bf300,_0x3e9de3);var _0x31e807=_[_0xfdb0('0x3a')](_0x5bf300,_0x3e9de3);var _0x7561ad=_[_0xfdb0('0x39')](_0x3e9de3,_0x5bf300);var _0x4a1dba;var _0x5efaa2;for(_0x4a1dba=0x0;_0x4a1dba<_0x7561ad['length']&&!_0xae797b;_0x4a1dba+=0x1){_0x5efaa2=_0x7561ad[_0x4a1dba]['toString']();if(manager[_0xfdb0('0x3b')](_0x5efaa2)){manager[_0xfdb0('0x3c')](_0x5efaa2);manager[_0xfdb0('0x3d')](_0x5efaa2);logger['info'](_0xfdb0('0x3e'),_0x5efaa2);}}logger[_0xfdb0('0x1e')](_0xfdb0('0x3f'),JSON[_0xfdb0('0x1d')](_0x33a0d8));for(_0x4a1dba=0x0;_0x4a1dba<_0x33a0d8['length'];_0x4a1dba+=0x1){_0x5efaa2=_0x33a0d8[_0x4a1dba]['toString']();logger[_0xfdb0('0x1e')]('index',_0x5efaa2);if(_0xae797b){logger['info'](_0xfdb0('0x40'),_0xae797b);logger[_0xfdb0('0x1e')](JSON[_0xfdb0('0x1d')](_0xf4e247[_0x5efaa2]));BPromise['resolve']()[_0xfdb0('0x22')](handleJob(_0xf4e247[_0x5efaa2]));logger[_0xfdb0('0x1e')](_0xfdb0('0x41'),_0xf4e247[_0x5efaa2]['name'],_0xf4e247[_0x5efaa2][_0xfdb0('0x42')]);}else if(_0xf4e247[_0x5efaa2][_0xfdb0('0x42')]&&_0xf4e247[_0x5efaa2][_0xfdb0('0x43')]&&moment()['isBetween'](_0xf4e247[_0x5efaa2]['startAt'],_0xf4e247[_0x5efaa2]['endAt'])){manager[_0xfdb0('0x44')](_0x5efaa2,_0xf4e247[_0x5efaa2]['cron'],handleJob(_0xf4e247[_0x5efaa2]));manager[_0xfdb0('0x45')](_0x5efaa2);logger[_0xfdb0('0x1e')](_0xfdb0('0x46'),_0xf4e247[_0x5efaa2]['name'],_0xf4e247[_0x5efaa2][_0xfdb0('0x42')]);}else if(manager[_0xfdb0('0x3b')](_0x5efaa2)){manager[_0xfdb0('0x3c')](_0x5efaa2);manager['deleteJob'](_0x5efaa2);logger[_0xfdb0('0x1e')](_0xfdb0('0x47'),_0xf4e247[_0x5efaa2][_0xfdb0('0xb')],_0xf4e247[_0x5efaa2][_0xfdb0('0x42')]);}}for(_0x4a1dba=0x0,_0x5efaa2;_0x4a1dba<_0x31e807[_0xfdb0('0x48')]&&!_0xae797b;_0x4a1dba+=0x1){_0x5efaa2=_0x31e807[_0x4a1dba][_0xfdb0('0x37')]();if(manager[_0xfdb0('0x3b')](_0x5efaa2)){if(_0xf4e247[_0x5efaa2][_0xfdb0('0x42')]&&_0xf4e247[_0x5efaa2][_0xfdb0('0x43')]&&moment()[_0xfdb0('0x49')](_0xf4e247[_0x5efaa2][_0xfdb0('0x4a')],_0xf4e247[_0x5efaa2]['endAt'])){manager[_0xfdb0('0x4b')](_0x5efaa2,_0xf4e247[_0x5efaa2][_0xfdb0('0x42')],handleJob(_0xf4e247[_0x5efaa2]));logger['info'](_0xfdb0('0x4c'),_0xf4e247[_0x5efaa2][_0xfdb0('0xb')],_0xf4e247[_0x5efaa2][_0xfdb0('0x42')]);}else{manager[_0xfdb0('0x3c')](_0x5efaa2);manager[_0xfdb0('0x3d')](_0x5efaa2);logger[_0xfdb0('0x1e')](_0xfdb0('0x47'),_0xf4e247[_0x5efaa2][_0xfdb0('0xb')],_0xf4e247[_0x5efaa2][_0xfdb0('0x42')]);}}}})[_0xfdb0('0x24')](function(_0x221e28){logger['error'](JSON[_0xfdb0('0x1d')](_0x221e28));});}exports[_0xfdb0('0x4d')]=function(_0x467a2a){return getJobs(_0x467a2a);};exports[_0xfdb0('0x45')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 3a7188e..db7dac9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c9c=['name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','catch','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','[RECORDING:%d]\x20Get\x20transcript','Transcript','TranscriptFileUri','transcripts','results','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','SentimentScore','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Transcript\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','COMPLETED'];(function(_0x54162d,_0x3b4a60){var _0x38b0f6=function(_0x51a1c5){while(--_0x51a1c5){_0x54162d['push'](_0x54162d['shift']());}};_0x38b0f6(++_0x3b4a60);}(_0x6c9c,0x12a));var _0xc6c9=function(_0x112295,_0x5cee66){_0x112295=_0x112295-0x0;var _0x4f2576=_0x6c9c[_0x112295];return _0x4f2576;};var _=require(_0xc6c9('0x0'));var AWS=require(_0xc6c9('0x1'));var rp=require('request-promise');var util=require(_0xc6c9('0x2'));var BPromise=require(_0xc6c9('0x3'));var db=require(_0xc6c9('0x4'))['db'];var logger=require(_0xc6c9('0x5'))('transcribe');function getTranscriptionJob(_0x3257fa,_0x459e90,_0x102361,_0x31e999){return new Promise(function(_0x422195,_0x84b96e){var _0xf9e43e=new AWS[(_0xc6c9('0x6'))]({'accessKeyId':_0x459e90,'secretAccessKey':_0x3257fa,'region':_0x102361});_0xf9e43e[_0xc6c9('0x7')]({'TranscriptionJobName':_0x31e999},function(_0x15cf6e,_0xb11c68){if(_0x15cf6e){return _0x84b96e(_0x15cf6e);}else{return _0x422195(_0xb11c68);}});});}function sentiment(_0x1773ec,_0x2d0793,_0x46f3c5,_0x2fb627,_0x10a3d4){return new Promise(function(_0x190435,_0x239e72){var _0x577848=new AWS[(_0xc6c9('0x8'))]({'accessKeyId':_0x2d0793,'secretAccessKey':_0x1773ec,'region':_0x46f3c5});_0x577848['detectSentiment']({'Text':_0x2fb627,'LanguageCode':_0x10a3d4['substring'](0x0,0x2)},function(_0x56a3a1,_0x28c778){if(_0x56a3a1){return _0x239e72(_0x56a3a1);}else{return _0x190435(_0x28c778);}});});}function checkTranscribeJob(_0x3fbdee,_0x2d35c9,_0x30c84f){var _0x21d910;return new BPromise(function(_0x36f457,_0x545cd9){logger['info'](util[_0xc6c9('0x9')](_0xc6c9('0xa'),_0x3fbdee['id'],_0x3fbdee[_0xc6c9('0xb')]));return getTranscriptionJob(_0x30c84f[_0xc6c9('0xc')],_0x30c84f[_0xc6c9('0xd')],_0x2d35c9[_0xc6c9('0xe')],_0x3fbdee['transcribeName'])[_0xc6c9('0xf')](function(_0x242d20){logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')](_0xc6c9('0x11'),_0x3fbdee['id'],_0x3fbdee[_0xc6c9('0xb')],_0x242d20[_0xc6c9('0x12')][_0xc6c9('0x13')]));if(!_0x3fbdee[_0xc6c9('0x14')]){switch(_0x242d20[_0xc6c9('0x12')][_0xc6c9('0x13')]){case'COMPLETED':var _0x5e5dd0={'transcribeStatus':_0x242d20[_0xc6c9('0x12')][_0xc6c9('0x13')],'fileUri':_0x242d20[_0xc6c9('0x12')]['Transcript']['TranscriptFileUri']};logger['info'](util['format'](_0xc6c9('0x15'),_0x3fbdee['id']));return rp({'uri':_0x242d20[_0xc6c9('0x12')][_0xc6c9('0x16')][_0xc6c9('0x17')],'json':!![]})[_0xc6c9('0xf')](function(_0x59d4b0){logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x3fbdee['id']));if(_0x59d4b0&&_0x59d4b0['results']&&_0x59d4b0['results'][_0xc6c9('0x18')]&&_0x59d4b0[_0xc6c9('0x19')][_0xc6c9('0x18')][_0xc6c9('0x1a')]){_0x5e5dd0[_0xc6c9('0x14')]='';for(var _0x589dbf=0x0;_0x589dbf<_0x59d4b0['results'][_0xc6c9('0x18')][_0xc6c9('0x1a')];_0x589dbf++){_0x5e5dd0[_0xc6c9('0x14')]+=_0x59d4b0['results'][_0xc6c9('0x18')][_0x589dbf][_0xc6c9('0x1b')]+'';}}return _0x3fbdee[_0xc6c9('0x1c')](_0x5e5dd0);})['then'](function(){logger['info'](util['format'](_0xc6c9('0x1d'),_0x3fbdee['id']));if(!_0x3fbdee[_0xc6c9('0x1e')]){throw new db[(_0xc6c9('0x1f'))][(_0xc6c9('0x20'))](_0xc6c9('0x21'));}if(!_0x2d35c9['sentiment']||!_0x2d35c9[_0xc6c9('0x22')]||!_0x2d35c9[_0xc6c9('0x23')]||!_0x2d35c9['language']||!_0x2d35c9[_0xc6c9('0x24')]){throw new db[(_0xc6c9('0x1f'))][(_0xc6c9('0x20'))](_0xc6c9('0x25'));}if(!_0x5e5dd0[_0xc6c9('0x14')]){throw new Error('Transcript\x20not\x20available');}if(_0x2d35c9[_0xc6c9('0x22')]===_0x30c84f['id']){return _0x30c84f;}else{return db[_0xc6c9('0x26')][_0xc6c9('0x27')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xc6c9('0xf')](function(_0x1493ca){if(!_0x1493ca){throw new db[(_0xc6c9('0x1f'))][(_0xc6c9('0x20'))](_0xc6c9('0x28'));}if(!_0x1493ca[_0xc6c9('0xc')]||!_0x1493ca[_0xc6c9('0xd')]){throw new db[(_0xc6c9('0x1f'))][(_0xc6c9('0x20'))](_0xc6c9('0x29'));}_0x21d910=_0x1493ca;logger['info'](util[_0xc6c9('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x3fbdee['id']));return sentiment(_0x21d910[_0xc6c9('0xc')],_0x21d910['data2'],_0x2d35c9['sentimentRegion'],_0x5e5dd0[_0xc6c9('0x14')],_0x2d35c9[_0xc6c9('0x2a')]);})[_0xc6c9('0xf')](function(_0x4c2389){logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')](_0xc6c9('0x2b'),_0x3fbdee['id']));return _0x3fbdee[_0xc6c9('0x1c')]({'sentiment':_0x4c2389[_0xc6c9('0x2c')],'sPositive':_0x4c2389['SentimentScore'][_0xc6c9('0x2d')],'sNegative':_0x4c2389[_0xc6c9('0x2e')][_0xc6c9('0x2f')],'sMixed':_0x4c2389['SentimentScore'][_0xc6c9('0x30')],'sNeutral':_0x4c2389[_0xc6c9('0x2e')][_0xc6c9('0x31')]});})[_0xc6c9('0xf')](function(){logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')](_0xc6c9('0x1d'),_0x3fbdee['id']));_0x36f457();});case _0xc6c9('0x32'):return _0x3fbdee[_0xc6c9('0x1c')]({'transcribeStatus':_0xc6c9('0x32'),'failureReason':_0x242d20[_0xc6c9('0x12')]['FailureReason']})[_0xc6c9('0xf')](function(){logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')](_0xc6c9('0x1d'),_0x3fbdee['id']));_0x36f457();});default:logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')](_0xc6c9('0x33'),_0x3fbdee['id']));break;}}else{return BPromise[_0xc6c9('0x34')]()['then'](function(){if(!_0x3fbdee[_0xc6c9('0x1e')]){throw new db['Sequelize']['ValidationError'](_0xc6c9('0x21'));}if(!_0x2d35c9[_0xc6c9('0x35')]||!_0x2d35c9[_0xc6c9('0x22')]||!_0x2d35c9[_0xc6c9('0x23')]||!_0x2d35c9['language']||!_0x2d35c9[_0xc6c9('0x24')]){throw new db[(_0xc6c9('0x1f'))]['ValidationError'](_0xc6c9('0x25'));}if(!_0x3fbdee[_0xc6c9('0x14')]){throw new Error(_0xc6c9('0x36'));}if(_0x2d35c9['sentimentAccountId']===_0x30c84f['id']){return _0x30c84f;}else{return db[_0xc6c9('0x26')][_0xc6c9('0x27')]({'where':{'id':_settings[_0xc6c9('0x22')]}});}})[_0xc6c9('0xf')](function(_0x3b61b2){if(!_0x3b61b2){throw new db['Sequelize'][(_0xc6c9('0x20'))](_0xc6c9('0x28'));}if(!_0x3b61b2['data1']||!_0x3b61b2[_0xc6c9('0xd')]){throw new db['Sequelize'][(_0xc6c9('0x20'))](_0xc6c9('0x29'));}_0x21d910=_0x3b61b2;logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')](_0xc6c9('0x37'),_0x3fbdee['id']));return sentiment(_0x21d910[_0xc6c9('0xc')],_0x21d910['data2'],_0x2d35c9['sentimentRegion'],_0x3fbdee[_0xc6c9('0x14')],_0x2d35c9['language']);})[_0xc6c9('0xf')](function(_0xa2dde9){logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')](_0xc6c9('0x2b'),_0x3fbdee['id']));return _0x3fbdee[_0xc6c9('0x1c')]({'sentiment':_0xa2dde9[_0xc6c9('0x2c')],'sPositive':_0xa2dde9[_0xc6c9('0x2e')]['Positive'],'sNegative':_0xa2dde9[_0xc6c9('0x2e')][_0xc6c9('0x2f')],'sMixed':_0xa2dde9[_0xc6c9('0x2e')][_0xc6c9('0x30')],'sNeutral':_0xa2dde9['SentimentScore'][_0xc6c9('0x31')],'transcribeStatus':_0xc6c9('0x38')});})[_0xc6c9('0xf')](function(){logger[_0xc6c9('0x10')](util[_0xc6c9('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3fbdee['id']));_0x36f457();});}})['catch'](function(_0x421a45){if(_0x421a45){if(!_0x421a45[_0xc6c9('0x39')]||_0x421a45[_0xc6c9('0x39')]!==_0xc6c9('0x3a')){logger[_0xc6c9('0x3b')](util[_0xc6c9('0x9')](_0xc6c9('0x3c'),_0x3fbdee['id']),util[_0xc6c9('0x3d')](_0x421a45,{'showHidden':![],'depth':null}));}}_0x36f457();});});}function checkTranscribe(){var _0x297d55;var _0x3c16b5;var _0x839fa4;return db[_0xc6c9('0x3e')][_0xc6c9('0x3f')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xc6c9('0xf')](function(_0x87bf95){if(!_0x87bf95||!_0x87bf95[_0xc6c9('0x1a')]){throw new db['Sequelize'][(_0xc6c9('0x20'))]('No\x20transcribe\x20job\x20to\x20check');}_0x297d55=_0x87bf95;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0xc6c9('0xf')](function(_0x19ecc6){if(!_0x19ecc6){throw new db[(_0xc6c9('0x1f'))][(_0xc6c9('0x20'))]('Settings\x20not\x20available');}_0x3c16b5=_0x19ecc6;if(!_0x3c16b5[_0xc6c9('0x40')]||!_0x3c16b5[_0xc6c9('0x41')]||!_0x3c16b5[_0xc6c9('0xe')]||!_0x3c16b5[_0xc6c9('0x2a')]||!_0x3c16b5['bucket']){throw new db[(_0xc6c9('0x1f'))][(_0xc6c9('0x20'))](_0xc6c9('0x42'));}return db[_0xc6c9('0x26')]['findOne']({'where':{'id':_0x3c16b5['transcribeAccountId']}});})[_0xc6c9('0xf')](function(_0x422ee4){if(!_0x422ee4){throw new db[(_0xc6c9('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x422ee4[_0xc6c9('0xc')]||!_0x422ee4[_0xc6c9('0xd')]){throw new db['Sequelize'][(_0xc6c9('0x20'))]('Cloud\x20Provider\x20not\x20configured');}_0x839fa4=_0x422ee4;var _0x5b4641=[];_0x297d55[_0xc6c9('0x43')](function(_0x553abb){_0x5b4641[_0xc6c9('0x44')](checkTranscribeJob(_0x553abb,_0x3c16b5,_0x839fa4));});return BPromise['all'](_0x5b4641);})[_0xc6c9('0x45')](function(_0x1d44b5){if(_0x1d44b5){if(!_0x1d44b5[_0xc6c9('0x39')]||_0x1d44b5[_0xc6c9('0x39')]!=='SequelizeValidationError'){logger[_0xc6c9('0x3b')](util[_0xc6c9('0x3d')](_0x1d44b5,{'showHidden':![],'depth':null}));}}});}exports[_0xc6c9('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xae87=['[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Neutral','FAILED','resolve','sentiment','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','Sentiment','Negative','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Settings\x20not\x20available','Transcribe\x20not\x20configured','transcribeAccountId','push','all','catch','error','inspect','start','bluebird','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','Comprehend','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','COMPLETED','TranscriptionJob','TranscriptFileUri'];(function(_0x58af5d,_0x3b13c1){var _0x16645e=function(_0x2c7b8b){while(--_0x2c7b8b){_0x58af5d['push'](_0x58af5d['shift']());}};_0x16645e(++_0x3b13c1);}(_0xae87,0x1ce));var _0x7ae8=function(_0x37ae26,_0x2ecd70){_0x37ae26=_0x37ae26-0x0;var _0x1b1902=_0xae87[_0x37ae26];return _0x1b1902;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require('request-promise');var util=require('util');var BPromise=require(_0x7ae8('0x0'));var db=require(_0x7ae8('0x1'))['db'];var logger=require('../../config/logger')(_0x7ae8('0x2'));function getTranscriptionJob(_0x4a22a5,_0x4ca11e,_0x3b95c1,_0x33b313){return new Promise(function(_0x141978,_0x3b6a2d){var _0x57d2f2=new AWS[(_0x7ae8('0x3'))]({'accessKeyId':_0x4ca11e,'secretAccessKey':_0x4a22a5,'region':_0x3b95c1});_0x57d2f2[_0x7ae8('0x4')]({'TranscriptionJobName':_0x33b313},function(_0x26d4bb,_0x2aa2d5){if(_0x26d4bb){return _0x3b6a2d(_0x26d4bb);}else{return _0x141978(_0x2aa2d5);}});});}function sentiment(_0x1f049b,_0x45dfc2,_0x2138eb,_0x48d84d,_0x4a63d6){return new Promise(function(_0x2cc5f6,_0x334ae7){var _0x595760=new AWS[(_0x7ae8('0x5'))]({'accessKeyId':_0x45dfc2,'secretAccessKey':_0x1f049b,'region':_0x2138eb});_0x595760['detectSentiment']({'Text':_0x48d84d,'LanguageCode':_0x4a63d6[_0x7ae8('0x6')](0x0,0x2)},function(_0x5e7200,_0x24bddd){if(_0x5e7200){return _0x334ae7(_0x5e7200);}else{return _0x2cc5f6(_0x24bddd);}});});}function checkTranscribeJob(_0x4bf950,_0x218df1,_0x428e16){var _0x3e41c1;return new BPromise(function(_0x510852,_0x42af18){logger[_0x7ae8('0x7')](util['format'](_0x7ae8('0x8'),_0x4bf950['id'],_0x4bf950[_0x7ae8('0x9')]));return getTranscriptionJob(_0x428e16[_0x7ae8('0xa')],_0x428e16[_0x7ae8('0xb')],_0x218df1[_0x7ae8('0xc')],_0x4bf950[_0x7ae8('0x9')])[_0x7ae8('0xd')](function(_0x16fbcc){logger[_0x7ae8('0x7')](util[_0x7ae8('0xe')](_0x7ae8('0xf'),_0x4bf950['id'],_0x4bf950[_0x7ae8('0x9')],_0x16fbcc['TranscriptionJob'][_0x7ae8('0x10')]));if(!_0x4bf950[_0x7ae8('0x11')]){switch(_0x16fbcc['TranscriptionJob'][_0x7ae8('0x10')]){case _0x7ae8('0x12'):var _0x408e0b={'transcribeStatus':_0x16fbcc[_0x7ae8('0x13')]['TranscriptionJobStatus'],'fileUri':_0x16fbcc['TranscriptionJob']['Transcript'][_0x7ae8('0x14')]};logger[_0x7ae8('0x7')](util['format'](_0x7ae8('0x15'),_0x4bf950['id']));return rp({'uri':_0x16fbcc['TranscriptionJob'][_0x7ae8('0x16')][_0x7ae8('0x14')],'json':!![]})[_0x7ae8('0xd')](function(_0x35cbed){logger[_0x7ae8('0x7')](util[_0x7ae8('0xe')](_0x7ae8('0x17'),_0x4bf950['id']));if(_0x35cbed&&_0x35cbed[_0x7ae8('0x18')]&&_0x35cbed[_0x7ae8('0x18')][_0x7ae8('0x19')]&&_0x35cbed[_0x7ae8('0x18')][_0x7ae8('0x19')][_0x7ae8('0x1a')]){_0x408e0b[_0x7ae8('0x11')]='';for(var _0x2e11d9=0x0;_0x2e11d9<_0x35cbed['results']['transcripts'][_0x7ae8('0x1a')];_0x2e11d9++){_0x408e0b['fileText']+=_0x35cbed['results'][_0x7ae8('0x19')][_0x2e11d9]['transcript']+'';}}return _0x4bf950[_0x7ae8('0x1b')](_0x408e0b);})[_0x7ae8('0xd')](function(){logger['info'](util[_0x7ae8('0xe')](_0x7ae8('0x1c'),_0x4bf950['id']));if(!_0x4bf950[_0x7ae8('0x1d')]){throw new db[(_0x7ae8('0x1e'))][(_0x7ae8('0x1f'))](_0x7ae8('0x20'));}if(!_0x218df1['sentiment']||!_0x218df1[_0x7ae8('0x21')]||!_0x218df1['sentimentRegion']||!_0x218df1[_0x7ae8('0x22')]||!_0x218df1[_0x7ae8('0x23')]){throw new db[(_0x7ae8('0x1e'))]['ValidationError'](_0x7ae8('0x24'));}if(!_0x408e0b[_0x7ae8('0x11')]){throw new Error(_0x7ae8('0x25'));}if(_0x218df1['sentimentAccountId']===_0x428e16['id']){return _0x428e16;}else{return db[_0x7ae8('0x26')][_0x7ae8('0x27')]({'where':{'id':_settings[_0x7ae8('0x21')]}});}})[_0x7ae8('0xd')](function(_0x4d7c50){if(!_0x4d7c50){throw new db[(_0x7ae8('0x1e'))][(_0x7ae8('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x4d7c50[_0x7ae8('0xa')]||!_0x4d7c50[_0x7ae8('0xb')]){throw new db[(_0x7ae8('0x1e'))]['ValidationError'](_0x7ae8('0x28'));}_0x3e41c1=_0x4d7c50;logger[_0x7ae8('0x7')](util[_0x7ae8('0xe')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x4bf950['id']));return sentiment(_0x3e41c1[_0x7ae8('0xa')],_0x3e41c1['data2'],_0x218df1['sentimentRegion'],_0x408e0b['fileText'],_0x218df1[_0x7ae8('0x22')]);})[_0x7ae8('0xd')](function(_0x533bf8){logger[_0x7ae8('0x7')](util[_0x7ae8('0xe')](_0x7ae8('0x29'),_0x4bf950['id']));return _0x4bf950[_0x7ae8('0x1b')]({'sentiment':_0x533bf8['Sentiment'],'sPositive':_0x533bf8[_0x7ae8('0x2a')][_0x7ae8('0x2b')],'sNegative':_0x533bf8[_0x7ae8('0x2a')]['Negative'],'sMixed':_0x533bf8[_0x7ae8('0x2a')]['Mixed'],'sNeutral':_0x533bf8[_0x7ae8('0x2a')][_0x7ae8('0x2c')]});})[_0x7ae8('0xd')](function(){logger[_0x7ae8('0x7')](util['format'](_0x7ae8('0x1c'),_0x4bf950['id']));_0x510852();});case _0x7ae8('0x2d'):return _0x4bf950[_0x7ae8('0x1b')]({'transcribeStatus':'FAILED','failureReason':_0x16fbcc[_0x7ae8('0x13')]['FailureReason']})['then'](function(){logger[_0x7ae8('0x7')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x4bf950['id']));_0x510852();});default:logger[_0x7ae8('0x7')](util[_0x7ae8('0xe')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x4bf950['id']));break;}}else{return BPromise[_0x7ae8('0x2e')]()[_0x7ae8('0xd')](function(){if(!_0x4bf950[_0x7ae8('0x1d')]){throw new db['Sequelize'][(_0x7ae8('0x1f'))](_0x7ae8('0x20'));}if(!_0x218df1[_0x7ae8('0x2f')]||!_0x218df1[_0x7ae8('0x21')]||!_0x218df1['sentimentRegion']||!_0x218df1[_0x7ae8('0x22')]||!_0x218df1[_0x7ae8('0x23')]){throw new db[(_0x7ae8('0x1e'))][(_0x7ae8('0x1f'))](_0x7ae8('0x24'));}if(!_0x4bf950['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x218df1['sentimentAccountId']===_0x428e16['id']){return _0x428e16;}else{return db[_0x7ae8('0x26')][_0x7ae8('0x27')]({'where':{'id':_settings[_0x7ae8('0x21')]}});}})[_0x7ae8('0xd')](function(_0x4e2adb){if(!_0x4e2adb){throw new db[(_0x7ae8('0x1e'))][(_0x7ae8('0x1f'))](_0x7ae8('0x30'));}if(!_0x4e2adb[_0x7ae8('0xa')]||!_0x4e2adb[_0x7ae8('0xb')]){throw new db[(_0x7ae8('0x1e'))][(_0x7ae8('0x1f'))](_0x7ae8('0x28'));}_0x3e41c1=_0x4e2adb;logger[_0x7ae8('0x7')](util[_0x7ae8('0xe')](_0x7ae8('0x31'),_0x4bf950['id']));return sentiment(_0x3e41c1[_0x7ae8('0xa')],_0x3e41c1[_0x7ae8('0xb')],_0x218df1[_0x7ae8('0x32')],_0x4bf950[_0x7ae8('0x11')],_0x218df1[_0x7ae8('0x22')]);})[_0x7ae8('0xd')](function(_0x36f942){logger[_0x7ae8('0x7')](util['format'](_0x7ae8('0x29'),_0x4bf950['id']));return _0x4bf950['update']({'sentiment':_0x36f942[_0x7ae8('0x33')],'sPositive':_0x36f942[_0x7ae8('0x2a')][_0x7ae8('0x2b')],'sNegative':_0x36f942[_0x7ae8('0x2a')][_0x7ae8('0x34')],'sMixed':_0x36f942[_0x7ae8('0x2a')]['Mixed'],'sNeutral':_0x36f942[_0x7ae8('0x2a')][_0x7ae8('0x2c')],'transcribeStatus':_0x7ae8('0x12')});})[_0x7ae8('0xd')](function(){logger[_0x7ae8('0x7')](util[_0x7ae8('0xe')](_0x7ae8('0x1c'),_0x4bf950['id']));_0x510852();});}})['catch'](function(_0x5eee24){if(_0x5eee24){if(!_0x5eee24[_0x7ae8('0x35')]||_0x5eee24[_0x7ae8('0x35')]!==_0x7ae8('0x36')){logger['error'](util[_0x7ae8('0xe')](_0x7ae8('0x37'),_0x4bf950['id']),util['inspect'](_0x5eee24,{'showHidden':![],'depth':null}));}}_0x510852();});});}function checkTranscribe(){var _0x42ec4a;var _0x10e6b9;var _0x5c6435;return db[_0x7ae8('0x38')][_0x7ae8('0x39')]({'where':{'transcribeStatus':_0x7ae8('0x3a')}})['then'](function(_0x58f513){if(!_0x58f513||!_0x58f513['length']){throw new db['Sequelize'][(_0x7ae8('0x1f'))](_0x7ae8('0x3b'));}_0x42ec4a=_0x58f513;return db['Setting'][_0x7ae8('0x27')]({'where':{'id':0x1}});})[_0x7ae8('0xd')](function(_0x21dac6){if(!_0x21dac6){throw new db[(_0x7ae8('0x1e'))][(_0x7ae8('0x1f'))](_0x7ae8('0x3c'));}_0x10e6b9=_0x21dac6;if(!_0x10e6b9[_0x7ae8('0x2')]||!_0x10e6b9['transcribeAccountId']||!_0x10e6b9[_0x7ae8('0xc')]||!_0x10e6b9['language']||!_0x10e6b9[_0x7ae8('0x23')]){throw new db[(_0x7ae8('0x1e'))]['ValidationError'](_0x7ae8('0x3d'));}return db['CloudProvider'][_0x7ae8('0x27')]({'where':{'id':_0x10e6b9[_0x7ae8('0x3e')]}});})[_0x7ae8('0xd')](function(_0x2af06d){if(!_0x2af06d){throw new db[(_0x7ae8('0x1e'))]['ValidationError'](_0x7ae8('0x30'));}if(!_0x2af06d['data1']||!_0x2af06d[_0x7ae8('0xb')]){throw new db[(_0x7ae8('0x1e'))][(_0x7ae8('0x1f'))](_0x7ae8('0x28'));}_0x5c6435=_0x2af06d;var _0xf5e180=[];_0x42ec4a['forEach'](function(_0x5c2bae){_0xf5e180[_0x7ae8('0x3f')](checkTranscribeJob(_0x5c2bae,_0x10e6b9,_0x5c6435));});return BPromise[_0x7ae8('0x40')](_0xf5e180);})[_0x7ae8('0x41')](function(_0x1e6eb8){if(_0x1e6eb8){if(!_0x1e6eb8[_0x7ae8('0x35')]||_0x1e6eb8[_0x7ae8('0x35')]!==_0x7ae8('0x36')){logger[_0x7ae8('0x42')](util[_0x7ae8('0x43')](_0x1e6eb8,{'showHidden':![],'depth':null}));}}});}exports[_0x7ae8('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 3266018..6986549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa104=['map','info','update','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','join','emit','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','schedule','defaults','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','length'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xa104,0x9d));var _0x4a10=function(_0x5d15c8,_0x1257bc){_0x5d15c8=_0x5d15c8-0x0;var _0x4dd548=_0xa104[_0x5d15c8];return _0x4dd548;};'use strict';var _=require(_0x4a10('0x0'));var moment=require(_0x4a10('0x1'));var Redis=require(_0x4a10('0x2'));var util=require(_0x4a10('0x3'));var config=require(_0x4a10('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0x4a10('0x5'));config['redis']=_[_0x4a10('0x6')](config[_0x4a10('0x7')],{'host':_0x4a10('0x8'),'port':0x18eb});var io=require(_0x4a10('0x9'))(new Redis(config[_0x4a10('0x7')]));function closeInteractions(){var _0x2db8c3=[];return db[_0x4a10('0xa')][_0x4a10('0xb')]({'raw':!![],'attributes':['id',_0x4a10('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x4a10('0xd')](0x18,_0x4a10('0xe'))}}})[_0x4a10('0xf')](function(_0x491848){if(_0x491848&&_0x491848[_0x4a10('0x10')]){_0x2db8c3=_[_0x4a10('0x11')](_0x491848||[],'id');logger[_0x4a10('0x12')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x2db8c3['join']());return db[_0x4a10('0xa')][_0x4a10('0x13')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0x4a10('0x14')](_0x4a10('0x15'))},{'where':{'id':_0x2db8c3}});}})['then'](function(){if(_0x2db8c3&&_0x2db8c3['length']){logger[_0x4a10('0x12')](_0x4a10('0x16'),_0x2db8c3[_0x4a10('0x17')]());for(var _0x37b3dc=0x0;_0x37b3dc<_0x2db8c3[_0x4a10('0x10')];_0x37b3dc++){io[_0x4a10('0x18')]('whatsappInteraction:update',{'id':_0x2db8c3[_0x37b3dc],'closed':!![]});}}})['catch'](function(_0x174a96){logger[_0x4a10('0x19')](_0x4a10('0x1a'),_0x174a96?util[_0x4a10('0x1b')](_0x174a96,{'showHidden':![],'depth':null}):'');});}exports[_0x4a10('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xcf2e=['lastMsgAt','subtract','hours','then','length','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','format','YYYY-MM-DD\x20HH:mm:ss','emit','whatsappInteraction:update','catch','error','inspect','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll'];(function(_0x3fa7fd,_0x80fff2){var _0x19ec6a=function(_0x2bbf71){while(--_0x2bbf71){_0x3fa7fd['push'](_0x3fa7fd['shift']());}};_0x19ec6a(++_0x80fff2);}(_0xcf2e,0x197));var _0xecf2=function(_0x21ecc8,_0x2bdead){_0x21ecc8=_0x21ecc8-0x0;var _0x510c1d=_0xcf2e[_0x21ecc8];return _0x510c1d;};'use strict';var _=require(_0xecf2('0x0'));var moment=require(_0xecf2('0x1'));var Redis=require(_0xecf2('0x2'));var util=require(_0xecf2('0x3'));var config=require(_0xecf2('0x4'));var db=require(_0xecf2('0x5'))['db'];var logger=require(_0xecf2('0x6'))(_0xecf2('0x7'));config[_0xecf2('0x8')]=_['defaults'](config[_0xecf2('0x8')],{'host':_0xecf2('0x9'),'port':0x18eb});var io=require(_0xecf2('0xa'))(new Redis(config[_0xecf2('0x8')]));function closeInteractions(){var _0x5c2c06=[];return db[_0xecf2('0xb')][_0xecf2('0xc')]({'raw':!![],'attributes':['id',_0xecf2('0xd')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xecf2('0xe')](0x18,_0xecf2('0xf'))}}})[_0xecf2('0x10')](function(_0x1f5f16){if(_0x1f5f16&&_0x1f5f16[_0xecf2('0x11')]){_0x5c2c06=_['map'](_0x1f5f16||[],'id');logger[_0xecf2('0x12')](_0xecf2('0x13'),_0x5c2c06[_0xecf2('0x14')]());return db[_0xecf2('0xb')][_0xecf2('0x15')]({'closeReason':_0xecf2('0x16'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xecf2('0x17')](_0xecf2('0x18'))},{'where':{'id':_0x5c2c06}});}})[_0xecf2('0x10')](function(){if(_0x5c2c06&&_0x5c2c06[_0xecf2('0x11')]){logger['info']('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x5c2c06['join']());for(var _0x304d9c=0x0;_0x304d9c<_0x5c2c06[_0xecf2('0x11')];_0x304d9c++){io[_0xecf2('0x19')](_0xecf2('0x1a'),{'id':_0x5c2c06[_0x304d9c],'closed':!![]});}}})[_0xecf2('0x1b')](function(_0x34060e){logger[_0xecf2('0x1c')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x34060e?util[_0xecf2('0x1d')](_0x34060e,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 83995b3..b95d377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3f1=['@xcally.com','now','innocenzo.biondo','CmContact','destroy','then','bulkCreate','finished\x20populating','CmHopper','log','hopper1','hopper2','catch','util','../mysqldb','push','Innocenzo','Biondo'];(function(_0x5062bd,_0x2304de){var _0xe69554=function(_0x2d6db3){while(--_0x2d6db3){_0x5062bd['push'](_0x5062bd['shift']());}};_0xe69554(++_0x2304de);}(_0xf3f1,0x1cf));var _0x1f3f=function(_0x260b48,_0x117977){_0x260b48=_0x260b48-0x0;var _0x3f730b=_0xf3f1[_0x260b48];return _0x3f730b;};'use strict';var util=require(_0x1f3f('0x0'));var db=require(_0x1f3f('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x1f3f('0x2')]({'id':i,'firstName':_0x1f3f('0x3')+i,'lastName':_0x1f3f('0x4')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x1f3f('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x1f3f('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x1f3f('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x1f3f('0x6')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x1f3f('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x1f3f('0x7')+i+_0x1f3f('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x1f3f('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x1f3f('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x1f3f('0x6')](),'updatedAt':Date[_0x1f3f('0x6')]()});}db[_0x1f3f('0x8')][_0x1f3f('0x9')]({'where':{}})[_0x1f3f('0xa')](function(){return db[_0x1f3f('0x8')][_0x1f3f('0xb')](contacts);})[_0x1f3f('0xa')](function(){console['log'](_0x1f3f('0xc'),'contacts1');return db[_0x1f3f('0xd')][_0x1f3f('0x9')]({'where':{}});})[_0x1f3f('0xa')](function(){return db['CmHopper'][_0x1f3f('0xb')](hopper);})['then'](function(){console[_0x1f3f('0xe')](_0x1f3f('0xc'),_0x1f3f('0xf'));return db[_0x1f3f('0x8')][_0x1f3f('0xb')](contacts2);})[_0x1f3f('0xa')](function(){console[_0x1f3f('0xe')](_0x1f3f('0xc'),'contacts2');return db[_0x1f3f('0xd')][_0x1f3f('0xb')](hopper2);})[_0x1f3f('0xa')](function(){console[_0x1f3f('0xe')](_0x1f3f('0xc'),_0x1f3f('0x10'));})[_0x1f3f('0x11')](function(_0x120fea){console['log'](_0x120fea);});
\ No newline at end of file
+var _0x4d43=['contacts1','CmHopper','hopper1','contacts2','hopper2','catch','util','push','Innocenzo','innocenzo.biondo','@xcally.com','now','CmContact','destroy','then','bulkCreate','log','finished\x20populating'];(function(_0x3a062d,_0x503f80){var _0x2c5410=function(_0x1a5d54){while(--_0x1a5d54){_0x3a062d['push'](_0x3a062d['shift']());}};_0x2c5410(++_0x503f80);}(_0x4d43,0xcc));var _0x34d4=function(_0x88596e,_0x207f81){_0x88596e=_0x88596e-0x0;var _0x166774=_0x4d43[_0x88596e];return _0x166774;};'use strict';var util=require(_0x34d4('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x34d4('0x1')]({'id':i,'firstName':_0x34d4('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x34d4('0x3')+i+_0x34d4('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x34d4('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x34d4('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x34d4('0x5')](),'updatedAt':Date[_0x34d4('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x34d4('0x1')]({'id':i,'firstName':_0x34d4('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x34d4('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x34d4('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x34d4('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x34d4('0x5')](),'updatedAt':Date['now']()});}db[_0x34d4('0x6')][_0x34d4('0x7')]({'where':{}})[_0x34d4('0x8')](function(){return db[_0x34d4('0x6')][_0x34d4('0x9')](contacts);})[_0x34d4('0x8')](function(){console[_0x34d4('0xa')](_0x34d4('0xb'),_0x34d4('0xc'));return db['CmHopper']['destroy']({'where':{}});})[_0x34d4('0x8')](function(){return db[_0x34d4('0xd')][_0x34d4('0x9')](hopper);})[_0x34d4('0x8')](function(){console[_0x34d4('0xa')](_0x34d4('0xb'),_0x34d4('0xe'));return db[_0x34d4('0x6')]['bulkCreate'](contacts2);})[_0x34d4('0x8')](function(){console['log'](_0x34d4('0xb'),_0x34d4('0xf'));return db['CmHopper'][_0x34d4('0x9')](hopper2);})[_0x34d4('0x8')](function(){console[_0x34d4('0xa')](_0x34d4('0xb'),_0x34d4('0x10'));})[_0x34d4('0x11')](function(_0x3cac22){console[_0x34d4('0xa')](_0x3cac22);});
\ No newline at end of file
index 7fa15a6..c6d703a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb01d=['all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','catch','util','../mysqldb','format','agent','%s%s','%s%s@xcally.com','password','friend','udp','wss'];(function(_0x195a7b,_0x111390){var _0x20c65d=function(_0x3319b2){while(--_0x3319b2){_0x195a7b['push'](_0x195a7b['shift']());}};_0x20c65d(++_0x111390);}(_0xb01d,0x1d9));var _0xdb01=function(_0x37c69,_0x5392ff){_0x37c69=_0x37c69-0x0;var _0xeef1ab=_0xb01d[_0x37c69];return _0xeef1ab;};'use strict';var util=require(_0xdb01('0x0'));var db=require(_0xdb01('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0xdb01('0x2')]('%s%s',_0xdb01('0x3'),i),'fullname':util[_0xdb01('0x2')](_0xdb01('0x4'),_0xdb01('0x3'),i),'email':util[_0xdb01('0x2')](_0xdb01('0x5'),_0xdb01('0x3'),i),'role':_0xdb01('0x3'),'password':_0xdb01('0x6'),'internal':0xfa0+i,'type':_0xdb01('0x7'),'transport':[_0xdb01('0x8'),'ws',_0xdb01('0x9')],'disallow':[_0xdb01('0xa')],'allow':[_0xdb01('0xb')],'defaultuser':util[_0xdb01('0x2')](_0xdb01('0x4'),_0xdb01('0x3'),i),'encryption':_0xdb01('0xc'),'avpf':'yes','force_avp':'yes','icesupport':_0xdb01('0xc'),'dtlsenable':_0xdb01('0xc'),'dtlsverify':'no','dtlscertfile':_0xdb01('0xd'),'dtlsprivatekey':_0xdb01('0xe'),'dtlssetup':_0xdb01('0xf'),'callerid':util['format'](_0xdb01('0x10'),util['format']('%s%s',_0xdb01('0x3'),i),0xfa0+i)});}db[_0xdb01('0x11')][_0xdb01('0x12')](users)[_0xdb01('0x13')](function(){console[_0xdb01('0x14')](_0xdb01('0x15'));})[_0xdb01('0x16')](function(_0x4a36a8){console[_0xdb01('0x14')](_0x4a36a8);});
\ No newline at end of file
+var _0x3d1a=['%s%s@xcally.com','password','udp','wss','yes','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','catch','util','push','format','%s%s','agent'];(function(_0x5678c4,_0x3a6da6){var _0x78c4c7=function(_0x8a4d35){while(--_0x8a4d35){_0x5678c4['push'](_0x5678c4['shift']());}};_0x78c4c7(++_0x3a6da6);}(_0x3d1a,0x67));var _0xa3d1=function(_0x5015c2,_0x2f6198){_0x5015c2=_0x5015c2-0x0;var _0x338b23=_0x3d1a[_0x5015c2];return _0x338b23;};'use strict';var util=require(_0xa3d1('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xa3d1('0x1')]({'name':util[_0xa3d1('0x2')](_0xa3d1('0x3'),_0xa3d1('0x4'),i),'fullname':util[_0xa3d1('0x2')](_0xa3d1('0x3'),_0xa3d1('0x4'),i),'email':util[_0xa3d1('0x2')](_0xa3d1('0x5'),'agent',i),'role':_0xa3d1('0x4'),'password':_0xa3d1('0x6'),'internal':0xfa0+i,'type':'friend','transport':[_0xa3d1('0x7'),'ws',_0xa3d1('0x8')],'disallow':['all'],'allow':['ulaw'],'defaultuser':util[_0xa3d1('0x2')](_0xa3d1('0x3'),_0xa3d1('0x4'),i),'encryption':_0xa3d1('0x9'),'avpf':_0xa3d1('0x9'),'force_avp':_0xa3d1('0x9'),'icesupport':_0xa3d1('0x9'),'dtlsenable':_0xa3d1('0x9'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0xa3d1('0xa'),'dtlssetup':_0xa3d1('0xb'),'callerid':util[_0xa3d1('0x2')](_0xa3d1('0xc'),util[_0xa3d1('0x2')](_0xa3d1('0x3'),_0xa3d1('0x4'),i),0xfa0+i)});}db[_0xa3d1('0xd')][_0xa3d1('0xe')](users)[_0xa3d1('0xf')](function(){console[_0xa3d1('0x10')]('add\x20user');})[_0xa3d1('0x11')](function(_0x19e491){console[_0xa3d1('0x10')](_0x19e491);});
\ No newline at end of file
index a096b47..6c3ea0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb3=['trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','default','connection','address','remoteAddress','request','remotePort','connectedAt','SocketIO\x20','disconnect','log','DISCONNECTED','lodash','util','bluebird','../mysqldb','./environment','User','name','role','agent','telephone','type','ivr','UserProfileSection','findOne','VoiceQueues','ChatQueues','FaxQueues','MailQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','map','where','Campaign','then','format','%s:queue:%s','Agents','user:%s','handshake','query','userProfileId','ChatInteraction','ChatInteractions','FaxInteraction','FaxInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','user','WhatsappQueues','getVoiceQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','fax','sms','mail','openchannel','whatsapp'];(function(_0x366c8f,_0x28b8e1){var _0x555828=function(_0xff92f8){while(--_0xff92f8){_0x366c8f['push'](_0x366c8f['shift']());}};_0x555828(++_0x28b8e1);}(_0x9bb3,0x134));var _0x39bb=function(_0x7da6e8,_0x4756af){_0x7da6e8=_0x7da6e8-0x0;var _0x3e1217=_0x9bb3[_0x7da6e8];return _0x3e1217;};'use strict';var _=require(_0x39bb('0x0'));var util=require(_0x39bb('0x1'));var BPromise=require(_0x39bb('0x2'));var db=require(_0x39bb('0x3'))['db'];var config=require(_0x39bb('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':'Agents','model':db[_0x39bb('0x5')],'attributes':['id',_0x39bb('0x6'),_0x39bb('0x7')],'raw':!![],'where':{'role':_0x39bb('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x39bb('0x6')],'where':{'role':_0x39bb('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x39bb('0x6')]};var queryAgents={'raw':!![],'attributes':['id',_0x39bb('0x6')],'where':{'role':_0x39bb('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x39bb('0x6'),_0x39bb('0xa')],'where':{'type':_0x39bb('0xb')}};function getAssociatedResources(_0x191348,_0x543d90,_0x47ec32){return db[_0x39bb('0xc')][_0x39bb('0xd')]({'where':{'name':_0x191348,'userProfileId':_0x543d90},'raw':!![]})['then'](function(_0x15c485){if(_0x15c485){if(_0x15c485['autoAssociation']){switch(_0x191348){case _0x39bb('0xe'):case _0x39bb('0xf'):case _0x39bb('0x10'):case'SmsQueues':case _0x39bb('0x11'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x47ec32][_0x39bb('0x12')](queryQueues);case _0x39bb('0x13'):return db[_0x47ec32][_0x39bb('0x12')](queryTelephones);case _0x39bb('0x14'):return db[_0x47ec32][_0x39bb('0x12')](queryTrunks);case _0x39bb('0x15'):return db[_0x47ec32][_0x39bb('0x12')](queryCampaigns);}}else{return db['UserProfileResource']['findAll']({'attributes':[_0x39bb('0x16')],'where':{'sectionId':_0x15c485['id']},'raw':!![]})['then'](function(_0x46e92a){if(_0x46e92a){var _0x40ee8f={'where':{'id':_[_0x39bb('0x17')](_0x46e92a,_0x39bb('0x16'))},'raw':!![]};switch(_0x47ec32){case _0x39bb('0x5'):_0x40ee8f[_0x39bb('0x18')][_0x39bb('0x7')]=_0x39bb('0x9');break;case _0x39bb('0x19'):_0x40ee8f[_0x39bb('0x18')]['type']=_0x39bb('0xb');break;}return db[_0x47ec32][_0x39bb('0x12')](_0x40ee8f);}else{return[];}});}}else{return[];}})[_0x39bb('0x1a')](function(_0x541cec){return _0x541cec;});}function joinOrLeaveQueues(_0x12b6a4,_0x281359,_0xd92981,_0x1b90a4){_0x12b6a4[_0x281359](util[_0x39bb('0x1b')](_0x39bb('0x1c'),_0xd92981,_0x1b90a4[_0x39bb('0x6')]));if(_0x1b90a4[_0x39bb('0x1d')]){for(var _0x50adc6=0x0;_0x50adc6<_0x1b90a4[_0x39bb('0x1d')]['length'];_0x50adc6+=0x1){_0x12b6a4[_0x281359](util['format'](_0x39bb('0x1e'),_0x1b90a4[_0x39bb('0x1d')][_0x50adc6]['name']));}}}function joinOrLeave(_0x4e00ba,_0x1f2e4f,_0x2ee1c9){var _0x54509b;if(_0x4e00ba[_0x39bb('0x1f')][_0x39bb('0x20')]['id']){db[_0x39bb('0x5')]['find']({'attributes':['id',_0x39bb('0x6'),'role',_0x39bb('0x21')],'where':{'id':_0x4e00ba[_0x39bb('0x1f')][_0x39bb('0x20')]['id']},'include':[{'model':db[_0x39bb('0x22')],'as':_0x39bb('0x23'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x39bb('0x24')],'as':_0x39bb('0x25'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x39bb('0x26')],'as':_0x39bb('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x39bb('0x28')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x39bb('0x1a')](function(_0x512573){if(_0x512573){_0x54509b=_0x512573;_0x4e00ba[_0x1f2e4f](util[_0x39bb('0x1b')](_0x39bb('0x1e'),_0x512573['name']));var _0x454fc5=[];switch(_0x512573[_0x39bb('0x7')]){case _0x39bb('0x29'):_0x4e00ba[_0x1f2e4f](_0x39bb('0x2a'));_0x4e00ba[_0x1f2e4f](_0x39bb('0x2b'));if(queryQueues[_0x39bb('0x2c')](_0x39bb('0x2d'))){delete queryQueues[_0x39bb('0x2d')];}_0x454fc5[_0x39bb('0x2e')](db[_0x39bb('0x2f')][_0x39bb('0x12')](queryQueues));_0x454fc5[_0x39bb('0x2e')](db[_0x39bb('0x30')]['findAll'](queryQueues));_0x454fc5[_0x39bb('0x2e')](db[_0x39bb('0x31')]['findAll'](queryQueues));_0x454fc5[_0x39bb('0x2e')](db[_0x39bb('0x32')]['findAll'](queryQueues));_0x454fc5[_0x39bb('0x2e')](db[_0x39bb('0x33')][_0x39bb('0x12')](queryQueues));_0x454fc5['push'](db['OpenchannelQueue']['findAll'](queryQueues));_0x454fc5[_0x39bb('0x2e')](db[_0x39bb('0x34')][_0x39bb('0x12')](queryQueues));_0x454fc5[_0x39bb('0x2e')](db['User'][_0x39bb('0x12')](queryTelephones));_0x454fc5['push'](db[_0x39bb('0x35')]['findAll'](queryTrunks));_0x454fc5['push'](db['Campaign']['findAll'](queryCampaigns));_0x454fc5[_0x39bb('0x2e')](db[_0x39bb('0x5')]['findAll'](queryAgents));break;case _0x39bb('0x36'):_0x4e00ba[_0x1f2e4f](_0x39bb('0x2a'));_0x4e00ba[_0x1f2e4f]('voice:outbound');_0x454fc5['push'](getAssociatedResources(_0x39bb('0xe'),_0x512573[_0x39bb('0x21')],_0x39bb('0x2f')));_0x454fc5[_0x39bb('0x2e')](getAssociatedResources(_0x39bb('0xf'),_0x512573[_0x39bb('0x21')],_0x39bb('0x30')));_0x454fc5[_0x39bb('0x2e')](getAssociatedResources(_0x39bb('0x10'),_0x512573[_0x39bb('0x21')],_0x39bb('0x31')));_0x454fc5['push'](getAssociatedResources('SmsQueues',_0x512573[_0x39bb('0x21')],_0x39bb('0x32')));_0x454fc5[_0x39bb('0x2e')](getAssociatedResources(_0x39bb('0x11'),_0x512573[_0x39bb('0x21')],'MailQueue'));_0x454fc5['push'](getAssociatedResources('OpenchannelQueues',_0x512573['userProfileId'],'OpenchannelQueue'));_0x454fc5['push'](getAssociatedResources(_0x39bb('0x37'),_0x512573['userProfileId'],'WhatsappQueue'));_0x454fc5[_0x39bb('0x2e')](getAssociatedResources('Telephones',_0x512573['userProfileId'],_0x39bb('0x5')));_0x454fc5[_0x39bb('0x2e')](getAssociatedResources(_0x39bb('0x14'),_0x512573[_0x39bb('0x21')],_0x39bb('0x35')));_0x454fc5[_0x39bb('0x2e')](getAssociatedResources(_0x39bb('0x15'),_0x512573[_0x39bb('0x21')],'Campaign'));_0x454fc5['push'](db[_0x39bb('0x5')][_0x39bb('0x12')](queryAgents));break;case _0x39bb('0x8'):_0x4e00ba[_0x1f2e4f](_0x39bb('0x2a'));_0x4e00ba[_0x1f2e4f](_0x39bb('0x2b'));_0x454fc5[_0x39bb('0x2e')](_0x512573[_0x39bb('0x38')]({'attributes':['id',_0x39bb('0x6')]}));_0x454fc5[_0x39bb('0x2e')](_0x512573['getChatQueues']({'attributes':['id',_0x39bb('0x6')]}));_0x454fc5['push'](_0x512573['getFaxQueues']({'attributes':['id',_0x39bb('0x6')]}));_0x454fc5[_0x39bb('0x2e')](_0x512573['getSmsQueues']({'attributes':['id',_0x39bb('0x6')]}));_0x454fc5[_0x39bb('0x2e')](_0x512573[_0x39bb('0x39')]({'attributes':['id','name']}));_0x454fc5[_0x39bb('0x2e')](_0x512573[_0x39bb('0x3a')]({'attributes':['id',_0x39bb('0x6')]}));_0x454fc5[_0x39bb('0x2e')](_0x512573[_0x39bb('0x3b')]({'attributes':['id',_0x39bb('0x6')]}));break;}return BPromise[_0x39bb('0x3c')](_0x454fc5);}})[_0x39bb('0x1a')](function(_0x2bd781){if(_0x2bd781&&_0x2bd781[_0x39bb('0x3d')]){for(var _0x168b89=0x0;_0x168b89<_0x2bd781[_0x39bb('0x3d')];_0x168b89+=0x1){for(var _0x21f201=0x0;_0x21f201<_0x2bd781[_0x168b89][_0x39bb('0x3d')];_0x21f201+=0x1){switch(_0x168b89){case 0x0:joinOrLeaveQueues(_0x4e00ba,_0x1f2e4f,_0x39bb('0x3e'),_0x2bd781[_0x168b89][_0x21f201]);break;case 0x1:joinOrLeaveQueues(_0x4e00ba,_0x1f2e4f,'chat',_0x2bd781[_0x168b89][_0x21f201]);break;case 0x2:joinOrLeaveQueues(_0x4e00ba,_0x1f2e4f,_0x39bb('0x3f'),_0x2bd781[_0x168b89][_0x21f201]);break;case 0x3:joinOrLeaveQueues(_0x4e00ba,_0x1f2e4f,_0x39bb('0x40'),_0x2bd781[_0x168b89][_0x21f201]);break;case 0x4:joinOrLeaveQueues(_0x4e00ba,_0x1f2e4f,_0x39bb('0x41'),_0x2bd781[_0x168b89][_0x21f201]);break;case 0x5:joinOrLeaveQueues(_0x4e00ba,_0x1f2e4f,_0x39bb('0x42'),_0x2bd781[_0x168b89][_0x21f201]);break;case 0x6:joinOrLeaveQueues(_0x4e00ba,_0x1f2e4f,_0x39bb('0x43'),_0x2bd781[_0x168b89][_0x21f201]);break;case 0x7:if(_0x54509b['role']!=='agent')_0x4e00ba[_0x1f2e4f](util[_0x39bb('0x1b')]('telephone:%s',_0x2bd781[_0x168b89][_0x21f201][_0x39bb('0x6')]));break;case 0x8:if(_0x54509b[_0x39bb('0x7')]!==_0x39bb('0x8'))_0x4e00ba[_0x1f2e4f](util[_0x39bb('0x1b')](_0x39bb('0x44'),_0x2bd781[_0x168b89][_0x21f201]['name']));break;case 0x9:if(_0x54509b[_0x39bb('0x7')]!==_0x39bb('0x8'))_0x4e00ba[_0x1f2e4f](util[_0x39bb('0x1b')](_0x39bb('0x45'),_0x2bd781[_0x168b89][_0x21f201][_0x39bb('0xa')],_0x2bd781[_0x168b89][_0x21f201][_0x39bb('0x6')]));break;case 0xa:_0x4e00ba[_0x1f2e4f](util[_0x39bb('0x1b')](_0x39bb('0x1e'),_0x2bd781[_0x168b89][_0x21f201][_0x39bb('0x6')]));break;}}}}})[_0x39bb('0x1a')](function(){if(_0x1f2e4f===_0x39bb('0x46')){var _0x5539d4=_[_0x39bb('0x17')](_0x54509b[_0x39bb('0x23')],'id');return _0x54509b[_0x39bb('0x47')](_0x5539d4)[_0x39bb('0x1a')](function(){for(var _0x7bac51=0x0;_0x7bac51<_0x5539d4[_0x39bb('0x3d')];_0x7bac51+=0x1){_0x2ee1c9[_0x39bb('0x48')](_0x39bb('0x49'),{'ChatInteractionId':Number(_0x5539d4[_0x7bac51]),'UserId':Number(_0x54509b['id'])});}});}})['then'](function(){if(_0x1f2e4f==='leave'){var _0x1da906=_[_0x39bb('0x17')](_0x54509b[_0x39bb('0x4a')],'id');return _0x54509b['removeMailInteractions'](_0x1da906)[_0x39bb('0x1a')](function(){for(var _0x449837=0x0;_0x449837<_0x1da906[_0x39bb('0x3d')];_0x449837+=0x1){_0x2ee1c9['emit'](_0x39bb('0x4b'),{'MailInteractionId':Number(_0x1da906[_0x449837]),'UserId':Number(_0x54509b['id'])});}});}})[_0x39bb('0x1a')](function(){if(_0x1f2e4f===_0x39bb('0x46')){var _0x4c11b3=_[_0x39bb('0x17')](_0x54509b[_0x39bb('0x25')],'id');return _0x54509b[_0x39bb('0x4c')](_0x4c11b3)[_0x39bb('0x1a')](function(){for(var _0x2dbb4e=0x0;_0x2dbb4e<_0x4c11b3['length'];_0x2dbb4e+=0x1){_0x2ee1c9[_0x39bb('0x48')](_0x39bb('0x4d'),{'FaxInteractionId':Number(_0x4c11b3[_0x2dbb4e]),'UserId':Number(_0x54509b['id'])});}});}})['then'](function(){if(_0x1f2e4f===_0x39bb('0x46')){var _0x39eed3=_[_0x39bb('0x17')](_0x54509b['SmsInteractions'],'id');return _0x54509b[_0x39bb('0x4e')](_0x39eed3)[_0x39bb('0x1a')](function(){for(var _0x2d83bd=0x0;_0x2d83bd<_0x39eed3['length'];_0x2d83bd+=0x1){_0x2ee1c9[_0x39bb('0x48')](_0x39bb('0x4f'),{'SmsInteractionId':Number(_0x39eed3[_0x2d83bd]),'UserId':Number(_0x54509b['id'])});}});}})[_0x39bb('0x1a')](function(){if(_0x1f2e4f===_0x39bb('0x46')){var _0x19c718=_[_0x39bb('0x17')](_0x54509b[_0x39bb('0x27')],'id');return _0x54509b['removeOpenchannelInteractions'](_0x19c718)[_0x39bb('0x1a')](function(){for(var _0x79ad5d=0x0;_0x79ad5d<_0x19c718['length'];_0x79ad5d+=0x1){_0x2ee1c9['emit'](_0x39bb('0x50'),{'OpenchannelInteractionId':Number(_0x19c718[_0x79ad5d]),'UserId':Number(_0x54509b['id'])});}});}})[_0x39bb('0x1a')](function(){if(_0x1f2e4f===_0x39bb('0x46')){var _0x343051=_['map'](_0x54509b['WhatsappInteractions'],'id');return _0x54509b['removeWhatsappInteractions'](_0x343051)[_0x39bb('0x1a')](function(){for(var _0x9e31f8=0x0;_0x9e31f8<_0x343051[_0x39bb('0x3d')];_0x9e31f8+=0x1){_0x2ee1c9['emit'](_0x39bb('0x51'),{'WhatsappInteractionId':Number(_0x343051[_0x9e31f8]),'UserId':Number(_0x54509b['id'])});}});}})[_0x39bb('0x52')](function(_0x4cfc55){_0x4e00ba['log'](_0x4cfc55);});}}function onDisconnect(_0x544649,_0x243704){joinOrLeave(_0x544649,_0x39bb('0x46'),_0x243704);}function onConnect(_0x17062e){joinOrLeave(_0x17062e,'join');}exports[_0x39bb('0x53')]=function(_0x2b70c6){_0x2b70c6['on'](_0x39bb('0x54'),function(_0x5dbdd6){_0x5dbdd6['setMaxListeners'](0x0);_0x5dbdd6[_0x39bb('0x55')]=_0x5dbdd6['request'][_0x39bb('0x54')][_0x39bb('0x56')]+':'+_0x5dbdd6[_0x39bb('0x57')][_0x39bb('0x54')][_0x39bb('0x58')];_0x5dbdd6[_0x39bb('0x59')]=new Date();_0x5dbdd6['log']=function(_0x12d548){console['log'](_0x39bb('0x5a')+_0x5dbdd6['nsp'][_0x39bb('0x6')]+'['+_0x5dbdd6['address']+']',_0x12d548);};_0x5dbdd6['on'](_0x39bb('0x5b'),function(){onDisconnect(_0x5dbdd6,_0x2b70c6);_0x5dbdd6[_0x39bb('0x5c')](_0x39bb('0x5d'));});onConnect(_0x5dbdd6);_0x5dbdd6[_0x39bb('0x5c')]('CONNECTED');});};
\ No newline at end of file
+var _0xd01d=['telephone','type','ivr','UserProfileSection','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','findAll','Telephones','Trunks','resourceId','map','Campaign','then','%s:queue:%s','length','format','user:%s','query','find','userProfileId','handshake','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','FaxQueue','SmsQueues','WhatsappQueues','IvrCampaigns','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','voice','fax','sms','openchannel','whatsapp','trunk:%s','campaign:%s:%s','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','SmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','SocketIO\x20','disconnect','CONNECTED','util','../mysqldb','./environment','name','Agents','User','role','agent'];(function(_0x102cdf,_0x5e709e){var _0x434739=function(_0x2ef3ef){while(--_0x2ef3ef){_0x102cdf['push'](_0x102cdf['shift']());}};_0x434739(++_0x5e709e);}(_0xd01d,0xbe));var _0xdd01=function(_0x39794b,_0x198617){_0x39794b=_0x39794b-0x0;var _0x9a115a=_0xd01d[_0x39794b];return _0x9a115a;};'use strict';var _=require('lodash');var util=require(_0xdd01('0x0'));var BPromise=require('bluebird');var db=require(_0xdd01('0x1'))['db'];var config=require(_0xdd01('0x2'));var queryQueues={'attributes':['id',_0xdd01('0x3')],'include':[{'as':_0xdd01('0x4'),'model':db[_0xdd01('0x5')],'attributes':['id',_0xdd01('0x3'),_0xdd01('0x6')],'raw':!![],'where':{'role':_0xdd01('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xdd01('0x3')],'where':{'role':_0xdd01('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xdd01('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xdd01('0x3'),_0xdd01('0x9')],'where':{'type':_0xdd01('0xa')}};function getAssociatedResources(_0xf29a16,_0x5a40fc,_0x2c9fd4){return db[_0xdd01('0xb')]['findOne']({'where':{'name':_0xf29a16,'userProfileId':_0x5a40fc},'raw':!![]})['then'](function(_0x1fc7e8){if(_0x1fc7e8){if(_0x1fc7e8[_0xdd01('0xc')]){switch(_0xf29a16){case _0xdd01('0xd'):case _0xdd01('0xe'):case _0xdd01('0xf'):case'SmsQueues':case _0xdd01('0x10'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x2c9fd4][_0xdd01('0x11')](queryQueues);case _0xdd01('0x12'):return db[_0x2c9fd4][_0xdd01('0x11')](queryTelephones);case _0xdd01('0x13'):return db[_0x2c9fd4][_0xdd01('0x11')](queryTrunks);case'IvrCampaigns':return db[_0x2c9fd4][_0xdd01('0x11')](queryCampaigns);}}else{return db['UserProfileResource'][_0xdd01('0x11')]({'attributes':[_0xdd01('0x14')],'where':{'sectionId':_0x1fc7e8['id']},'raw':!![]})['then'](function(_0x113b25){if(_0x113b25){var _0x580efc={'where':{'id':_[_0xdd01('0x15')](_0x113b25,_0xdd01('0x14'))},'raw':!![]};switch(_0x2c9fd4){case _0xdd01('0x5'):_0x580efc['where'][_0xdd01('0x6')]=_0xdd01('0x8');break;case _0xdd01('0x16'):_0x580efc['where'][_0xdd01('0x9')]=_0xdd01('0xa');break;}return db[_0x2c9fd4][_0xdd01('0x11')](_0x580efc);}else{return[];}});}}else{return[];}})[_0xdd01('0x17')](function(_0x19cae7){return _0x19cae7;});}function joinOrLeaveQueues(_0xf9f29,_0x43ccd2,_0x351331,_0x90d731){_0xf9f29[_0x43ccd2](util['format'](_0xdd01('0x18'),_0x351331,_0x90d731['name']));if(_0x90d731[_0xdd01('0x4')]){for(var _0xa4ef26=0x0;_0xa4ef26<_0x90d731[_0xdd01('0x4')][_0xdd01('0x19')];_0xa4ef26+=0x1){_0xf9f29[_0x43ccd2](util[_0xdd01('0x1a')](_0xdd01('0x1b'),_0x90d731[_0xdd01('0x4')][_0xa4ef26][_0xdd01('0x3')]));}}}function joinOrLeave(_0x542f0f,_0x1d0d38,_0x24fb8f){var _0x40e654;if(_0x542f0f['handshake'][_0xdd01('0x1c')]['id']){db[_0xdd01('0x5')][_0xdd01('0x1d')]({'attributes':['id',_0xdd01('0x3'),_0xdd01('0x6'),_0xdd01('0x1e')],'where':{'id':_0x542f0f[_0xdd01('0x1f')]['query']['id']},'include':[{'model':db[_0xdd01('0x20')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xdd01('0x21')],'as':_0xdd01('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xdd01('0x23')],'as':_0xdd01('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xdd01('0x25')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xdd01('0x26')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xdd01('0x27')],'as':_0xdd01('0x28'),'attributes':['id'],'raw':!![]}]})[_0xdd01('0x17')](function(_0x17181f){if(_0x17181f){_0x40e654=_0x17181f;_0x542f0f[_0x1d0d38](util[_0xdd01('0x1a')](_0xdd01('0x1b'),_0x17181f[_0xdd01('0x3')]));var _0x6ff499=[];switch(_0x17181f[_0xdd01('0x6')]){case _0xdd01('0x29'):_0x542f0f[_0x1d0d38](_0xdd01('0x2a'));_0x542f0f[_0x1d0d38](_0xdd01('0x2b'));if(queryQueues[_0xdd01('0x2c')]('include')){delete queryQueues[_0xdd01('0x2d')];}_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x2f')][_0xdd01('0x11')](queryQueues));_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x30')][_0xdd01('0x11')](queryQueues));_0x6ff499[_0xdd01('0x2e')](db['FaxQueue'][_0xdd01('0x11')](queryQueues));_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x31')][_0xdd01('0x11')](queryQueues));_0x6ff499['push'](db[_0xdd01('0x32')][_0xdd01('0x11')](queryQueues));_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x33')][_0xdd01('0x11')](queryQueues));_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x34')]['findAll'](queryQueues));_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x5')]['findAll'](queryTelephones));_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x35')][_0xdd01('0x11')](queryTrunks));_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x16')][_0xdd01('0x11')](queryCampaigns));_0x6ff499[_0xdd01('0x2e')](db['User'][_0xdd01('0x11')](queryAgents));break;case _0xdd01('0x36'):_0x542f0f[_0x1d0d38](_0xdd01('0x2a'));_0x542f0f[_0x1d0d38](_0xdd01('0x2b'));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources(_0xdd01('0xd'),_0x17181f['userProfileId'],'VoiceQueue'));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources(_0xdd01('0xe'),_0x17181f[_0xdd01('0x1e')],'ChatQueue'));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources('FaxQueues',_0x17181f['userProfileId'],_0xdd01('0x37')));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources(_0xdd01('0x38'),_0x17181f[_0xdd01('0x1e')],_0xdd01('0x31')));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources('MailQueues',_0x17181f[_0xdd01('0x1e')],'MailQueue'));_0x6ff499['push'](getAssociatedResources('OpenchannelQueues',_0x17181f[_0xdd01('0x1e')],_0xdd01('0x33')));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources(_0xdd01('0x39'),_0x17181f[_0xdd01('0x1e')],_0xdd01('0x34')));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources('Telephones',_0x17181f[_0xdd01('0x1e')],_0xdd01('0x5')));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources(_0xdd01('0x13'),_0x17181f[_0xdd01('0x1e')],_0xdd01('0x35')));_0x6ff499[_0xdd01('0x2e')](getAssociatedResources(_0xdd01('0x3a'),_0x17181f[_0xdd01('0x1e')],'Campaign'));_0x6ff499[_0xdd01('0x2e')](db[_0xdd01('0x5')][_0xdd01('0x11')](queryAgents));break;case _0xdd01('0x7'):_0x542f0f[_0x1d0d38]('voice:inbound');_0x542f0f[_0x1d0d38]('voice:outbound');_0x6ff499[_0xdd01('0x2e')](_0x17181f[_0xdd01('0x3b')]({'attributes':['id',_0xdd01('0x3')]}));_0x6ff499[_0xdd01('0x2e')](_0x17181f[_0xdd01('0x3c')]({'attributes':['id',_0xdd01('0x3')]}));_0x6ff499['push'](_0x17181f['getFaxQueues']({'attributes':['id','name']}));_0x6ff499['push'](_0x17181f[_0xdd01('0x3d')]({'attributes':['id',_0xdd01('0x3')]}));_0x6ff499[_0xdd01('0x2e')](_0x17181f[_0xdd01('0x3e')]({'attributes':['id',_0xdd01('0x3')]}));_0x6ff499[_0xdd01('0x2e')](_0x17181f[_0xdd01('0x3f')]({'attributes':['id',_0xdd01('0x3')]}));_0x6ff499[_0xdd01('0x2e')](_0x17181f[_0xdd01('0x40')]({'attributes':['id',_0xdd01('0x3')]}));break;}return BPromise['all'](_0x6ff499);}})['then'](function(_0x54ddf7){if(_0x54ddf7&&_0x54ddf7[_0xdd01('0x19')]){for(var _0x1287b7=0x0;_0x1287b7<_0x54ddf7['length'];_0x1287b7+=0x1){for(var _0x19706b=0x0;_0x19706b<_0x54ddf7[_0x1287b7][_0xdd01('0x19')];_0x19706b+=0x1){switch(_0x1287b7){case 0x0:joinOrLeaveQueues(_0x542f0f,_0x1d0d38,_0xdd01('0x41'),_0x54ddf7[_0x1287b7][_0x19706b]);break;case 0x1:joinOrLeaveQueues(_0x542f0f,_0x1d0d38,'chat',_0x54ddf7[_0x1287b7][_0x19706b]);break;case 0x2:joinOrLeaveQueues(_0x542f0f,_0x1d0d38,_0xdd01('0x42'),_0x54ddf7[_0x1287b7][_0x19706b]);break;case 0x3:joinOrLeaveQueues(_0x542f0f,_0x1d0d38,_0xdd01('0x43'),_0x54ddf7[_0x1287b7][_0x19706b]);break;case 0x4:joinOrLeaveQueues(_0x542f0f,_0x1d0d38,'mail',_0x54ddf7[_0x1287b7][_0x19706b]);break;case 0x5:joinOrLeaveQueues(_0x542f0f,_0x1d0d38,_0xdd01('0x44'),_0x54ddf7[_0x1287b7][_0x19706b]);break;case 0x6:joinOrLeaveQueues(_0x542f0f,_0x1d0d38,_0xdd01('0x45'),_0x54ddf7[_0x1287b7][_0x19706b]);break;case 0x7:if(_0x40e654[_0xdd01('0x6')]!==_0xdd01('0x7'))_0x542f0f[_0x1d0d38](util[_0xdd01('0x1a')]('telephone:%s',_0x54ddf7[_0x1287b7][_0x19706b][_0xdd01('0x3')]));break;case 0x8:if(_0x40e654[_0xdd01('0x6')]!==_0xdd01('0x7'))_0x542f0f[_0x1d0d38](util[_0xdd01('0x1a')](_0xdd01('0x46'),_0x54ddf7[_0x1287b7][_0x19706b]['name']));break;case 0x9:if(_0x40e654[_0xdd01('0x6')]!==_0xdd01('0x7'))_0x542f0f[_0x1d0d38](util[_0xdd01('0x1a')](_0xdd01('0x47'),_0x54ddf7[_0x1287b7][_0x19706b][_0xdd01('0x9')],_0x54ddf7[_0x1287b7][_0x19706b][_0xdd01('0x3')]));break;case 0xa:_0x542f0f[_0x1d0d38](util[_0xdd01('0x1a')]('user:%s',_0x54ddf7[_0x1287b7][_0x19706b][_0xdd01('0x3')]));break;}}}}})['then'](function(){if(_0x1d0d38==='leave'){var _0x7b5b42=_[_0xdd01('0x15')](_0x40e654[_0xdd01('0x48')],'id');return _0x40e654[_0xdd01('0x49')](_0x7b5b42)[_0xdd01('0x17')](function(){for(var _0x258aa8=0x0;_0x258aa8<_0x7b5b42[_0xdd01('0x19')];_0x258aa8+=0x1){_0x24fb8f[_0xdd01('0x4a')](_0xdd01('0x4b'),{'ChatInteractionId':Number(_0x7b5b42[_0x258aa8]),'UserId':Number(_0x40e654['id'])});}});}})[_0xdd01('0x17')](function(){if(_0x1d0d38===_0xdd01('0x4c')){var _0x5daee2=_[_0xdd01('0x15')](_0x40e654[_0xdd01('0x22')],'id');return _0x40e654[_0xdd01('0x4d')](_0x5daee2)[_0xdd01('0x17')](function(){for(var _0x47913e=0x0;_0x47913e<_0x5daee2['length'];_0x47913e+=0x1){_0x24fb8f[_0xdd01('0x4a')](_0xdd01('0x4e'),{'MailInteractionId':Number(_0x5daee2[_0x47913e]),'UserId':Number(_0x40e654['id'])});}});}})[_0xdd01('0x17')](function(){if(_0x1d0d38===_0xdd01('0x4c')){var _0x3f9cd5=_[_0xdd01('0x15')](_0x40e654[_0xdd01('0x24')],'id');return _0x40e654['removeFaxInteractions'](_0x3f9cd5)[_0xdd01('0x17')](function(){for(var _0x20cb95=0x0;_0x20cb95<_0x3f9cd5['length'];_0x20cb95+=0x1){_0x24fb8f[_0xdd01('0x4a')](_0xdd01('0x4f'),{'FaxInteractionId':Number(_0x3f9cd5[_0x20cb95]),'UserId':Number(_0x40e654['id'])});}});}})[_0xdd01('0x17')](function(){if(_0x1d0d38==='leave'){var _0x39e310=_[_0xdd01('0x15')](_0x40e654[_0xdd01('0x50')],'id');return _0x40e654['removeSmsInteractions'](_0x39e310)[_0xdd01('0x17')](function(){for(var _0x5374b1=0x0;_0x5374b1<_0x39e310[_0xdd01('0x19')];_0x5374b1+=0x1){_0x24fb8f[_0xdd01('0x4a')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x39e310[_0x5374b1]),'UserId':Number(_0x40e654['id'])});}});}})[_0xdd01('0x17')](function(){if(_0x1d0d38===_0xdd01('0x4c')){var _0x4c3e8d=_[_0xdd01('0x15')](_0x40e654[_0xdd01('0x51')],'id');return _0x40e654[_0xdd01('0x52')](_0x4c3e8d)[_0xdd01('0x17')](function(){for(var _0x291c76=0x0;_0x291c76<_0x4c3e8d[_0xdd01('0x19')];_0x291c76+=0x1){_0x24fb8f[_0xdd01('0x4a')](_0xdd01('0x53'),{'OpenchannelInteractionId':Number(_0x4c3e8d[_0x291c76]),'UserId':Number(_0x40e654['id'])});}});}})[_0xdd01('0x17')](function(){if(_0x1d0d38===_0xdd01('0x4c')){var _0x394d45=_[_0xdd01('0x15')](_0x40e654['WhatsappInteractions'],'id');return _0x40e654[_0xdd01('0x54')](_0x394d45)[_0xdd01('0x17')](function(){for(var _0x5ede6d=0x0;_0x5ede6d<_0x394d45[_0xdd01('0x19')];_0x5ede6d+=0x1){_0x24fb8f[_0xdd01('0x4a')](_0xdd01('0x55'),{'WhatsappInteractionId':Number(_0x394d45[_0x5ede6d]),'UserId':Number(_0x40e654['id'])});}});}})[_0xdd01('0x56')](function(_0x577a42){_0x542f0f[_0xdd01('0x57')](_0x577a42);});}}function onDisconnect(_0x3512b1,_0x20443b){joinOrLeave(_0x3512b1,_0xdd01('0x4c'),_0x20443b);}function onConnect(_0x495c86){joinOrLeave(_0x495c86,'join');}exports[_0xdd01('0x58')]=function(_0x372df4){_0x372df4['on']('connection',function(_0xb62444){_0xb62444[_0xdd01('0x59')](0x0);_0xb62444[_0xdd01('0x5a')]=_0xb62444[_0xdd01('0x5b')][_0xdd01('0x5c')][_0xdd01('0x5d')]+':'+_0xb62444[_0xdd01('0x5b')][_0xdd01('0x5c')][_0xdd01('0x5e')];_0xb62444[_0xdd01('0x5f')]=new Date();_0xb62444[_0xdd01('0x57')]=function(_0x2dc2e8){console[_0xdd01('0x57')](_0xdd01('0x60')+_0xb62444['nsp'][_0xdd01('0x3')]+'['+_0xb62444[_0xdd01('0x5a')]+']',_0x2dc2e8);};_0xb62444['on'](_0xdd01('0x61'),function(){onDisconnect(_0xb62444,_0x372df4);_0xb62444[_0xdd01('0x57')]('DISCONNECTED');});onConnect(_0xb62444);_0xb62444[_0xdd01('0x57')](_0xdd01('0x62'));});};
\ No newline at end of file
index 3ff4109..22324ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf017=['WhatsappMessage','Fax','FaxMessage','MailInteraction','Mail','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','EventManager','then','info','Trigger,\x20%s','error','code','channel','motionChannel','event','direction','resolve','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','SELECT','UserId','format','SIP/%s','name','agent','outgoingmessage','catch','AfterCreateMessage','get','opened','ContactId','QueryTypes','contact','interface','AfterCreate','changed','closed','substatus','AfterUpdate','User','find','email','hasOwnProperty','model','hook','toLowerCase','condition','jayson/promise','../logger','triggers','client','http','Chat','ChatInteraction','afterCreate','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','Whatsapp','newinteraction','WhatsappInteraction'];(function(_0x3ec333,_0x26bcbe){var _0x15ccb8=function(_0x2c4d0c){while(--_0x2c4d0c){_0x3ec333['push'](_0x3ec333['shift']());}};_0x15ccb8(++_0x26bcbe);}(_0xf017,0x198));var _0x7f01=function(_0x11fe4f,_0xfe5f22){_0x11fe4f=_0x11fe4f-0x0;var _0x1198da=_0xf017[_0x11fe4f];return _0x1198da;};'use strict';var util=require('util');var db=require('../../mysqldb')['db'];var jayson=require(_0x7f01('0x0'));var logger=require(_0x7f01('0x1'))(_0x7f01('0x2'));var client=jayson[_0x7f01('0x3')][_0x7f01('0x4')]({'port':0x232a});var triggers=[{'channel':_0x7f01('0x5'),'model':_0x7f01('0x6'),'event':_0x7f01('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x7f01('0x5'),'model':_0x7f01('0x6'),'event':_0x7f01('0x8'),'condition':_0x7f01('0x9'),'callback':afterUpdate},{'channel':_0x7f01('0x5'),'model':_0x7f01('0xa'),'event':'afterCreate','condition':_0x7f01('0xb'),'callback':afterCreateMessage},{'channel':_0x7f01('0x5'),'model':_0x7f01('0xc'),'event':_0x7f01('0x7'),'condition':_0x7f01('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0x7f01('0xd'),'model':_0x7f01('0xe'),'event':_0x7f01('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x7f01('0xd'),'model':_0x7f01('0xe'),'event':_0x7f01('0x8'),'condition':_0x7f01('0x9'),'callback':afterUpdate},{'channel':_0x7f01('0xd'),'model':'SmsMessage','event':'afterCreate','condition':_0x7f01('0xb'),'callback':afterCreateMessage},{'channel':_0x7f01('0xf'),'model':'WhatsappInteraction','event':_0x7f01('0x7'),'condition':_0x7f01('0x10'),'callback':afterCreate},{'channel':_0x7f01('0xf'),'model':_0x7f01('0x11'),'event':_0x7f01('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x7f01('0xf'),'model':_0x7f01('0x12'),'event':_0x7f01('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x7f01('0x13'),'model':'FaxInteraction','event':_0x7f01('0x7'),'condition':_0x7f01('0x10'),'callback':afterCreate},{'channel':_0x7f01('0x13'),'model':'FaxInteraction','event':_0x7f01('0x8'),'condition':_0x7f01('0x9'),'callback':afterUpdate},{'channel':'Fax','model':_0x7f01('0x14'),'event':_0x7f01('0x7'),'condition':_0x7f01('0xb'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x7f01('0x15'),'event':'afterCreate','condition':_0x7f01('0x10'),'callback':afterCreate},{'channel':'Mail','model':_0x7f01('0x15'),'event':_0x7f01('0x8'),'condition':_0x7f01('0x9'),'callback':afterUpdate},{'channel':_0x7f01('0x16'),'model':_0x7f01('0x17'),'event':_0x7f01('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Openchannel','model':'OpenchannelInteraction','event':_0x7f01('0x7'),'condition':_0x7f01('0x10'),'callback':afterCreate},{'channel':_0x7f01('0x18'),'model':_0x7f01('0x19'),'event':'afterUpdate','condition':_0x7f01('0x9'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x7f01('0x1a'),'event':_0x7f01('0x7'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x2e15a5){return client['request'](_0x7f01('0x1b'),_0x2e15a5)[_0x7f01('0x1c')](function(_0x5e8e59){logger[_0x7f01('0x1d')](_0x7f01('0x1e'),_0x7f01('0x1b'),_0x5e8e59);if(_0x5e8e59['error']){if(_0x5e8e59[_0x7f01('0x1f')][_0x7f01('0x20')]===0x1f4){logger[_0x7f01('0x1f')](_0x7f01('0x1e'),_0x7f01('0x1b'),_0x5e8e59[_0x7f01('0x1f')]);}}})['catch'](function(_0x4ef07c){logger[_0x7f01('0x1f')](_0x7f01('0x1e'),_0x7f01('0x1b'),_0x4ef07c);});}function afterCreateMessage(_0xe015a5){return function(_0x78b29a){_0x78b29a=_0x78b29a['get']({'plain':!![]});_0x78b29a[_0x7f01('0x21')]=_0xe015a5;_0x78b29a[_0x7f01('0x22')]=_0xe015a5;_0x78b29a[_0x7f01('0x23')]=_0x78b29a[_0x7f01('0x24')];Promise[_0x7f01('0x25')]()[_0x7f01('0x1c')](function(){if(typeof _0x78b29a['ContactId']===_0x7f01('0x26'))return null;var _0x2d22bb=_0x7f01('0x27')+_0x78b29a['ContactId'];return db[_0x7f01('0x28')][_0x7f01('0x29')](_0x2d22bb,{'type':db[_0x7f01('0x2a')]['QueryTypes'][_0x7f01('0x2b')],'raw':!![]});})[_0x7f01('0x1c')](function(_0x209d5d){if(_0x209d5d){_0x78b29a['contact']=_0x209d5d[0x0];}if(typeof _0x78b29a[_0x7f01('0x2c')]===_0x7f01('0x26'))return;return getAgent(_0x78b29a[_0x7f01('0x2c')]);})[_0x7f01('0x1c')](function(_0x4b410c){if(_0x4b410c){_0x78b29a['interface']=util[_0x7f01('0x2d')](_0x7f01('0x2e'),_0x4b410c[_0x7f01('0x2f')]);_0x78b29a[_0x7f01('0x30')]=_0x4b410c;_0x78b29a['channel']=_0xe015a5;return request({'event':'incomingmessage','message':_0x78b29a});}else{return request({'event':_0x7f01('0x31'),'message':_0x78b29a});}})[_0x7f01('0x32')](function(_0x5043c0){logger['error'](_0x7f01('0x1e'),_0x7f01('0x33'),_0x5043c0);});};}function afterCreateOfflineMessage(_0x56c2f3){return function(_0x44c8bf){_0x44c8bf=_0x44c8bf[_0x7f01('0x34')]({'plain':!![]});_0x44c8bf[_0x7f01('0x21')]=_0x56c2f3;_0x44c8bf[_0x7f01('0x22')]=_0x56c2f3;_0x44c8bf[_0x7f01('0x23')]='offlineMessage';return request({'event':_0x44c8bf[_0x7f01('0x23')],'message':_0x44c8bf});};}function afterCreate(_0x5cd5f0,_0x2ee5f5){return function(_0x45da6a){_0x45da6a=_0x45da6a['get']({'plain':!![]});_0x45da6a['channel']=_0x5cd5f0;_0x45da6a[_0x7f01('0x22')]=_0x5cd5f0;_0x45da6a[_0x7f01('0x23')]=_0x7f01('0x35');Promise[_0x7f01('0x25')]()['then'](function(){var _0x149446=_0x7f01('0x27')+_0x45da6a[_0x7f01('0x36')];return db[_0x7f01('0x28')][_0x7f01('0x29')](_0x149446,{'type':db[_0x7f01('0x2a')][_0x7f01('0x37')]['SELECT'],'raw':!![]});})[_0x7f01('0x1c')](function(_0x3fe725){if(_0x3fe725){_0x45da6a[_0x7f01('0x38')]=_0x3fe725[0x0];}if(typeof _0x45da6a['UserId']===_0x7f01('0x26'))return;return getAgent(_0x45da6a[_0x7f01('0x2c')]);})['then'](function(_0x4542dc){if(_0x4542dc){_0x45da6a[_0x7f01('0x39')]=util[_0x7f01('0x2d')]('SIP/%s',_0x4542dc[_0x7f01('0x2f')]);_0x45da6a[_0x7f01('0x30')]=_0x4542dc;}return request({'event':_0x2ee5f5,'message':_0x45da6a});})[_0x7f01('0x32')](function(_0x2fbf61){logger[_0x7f01('0x1f')]('Trigger,\x20%s',_0x7f01('0x3a'),_0x2fbf61);});};}function afterUpdate(_0x13b7dc){return function(_0x241878){var _0x218e92=_0x241878[_0x7f01('0x3b')](_0x7f01('0x3c'))&&_0x241878[_0x7f01('0x3c')];var _0x1409d8=_0x241878[_0x7f01('0x3b')](_0x7f01('0x3d'));if(_0x218e92||_0x1409d8){var _0x1620c8=_0x218e92?_0x7f01('0x9'):'substatus';var _0x5c17b1=_0x241878[_0x7f01('0x34')]({'plain':!![]});_0x5c17b1['channel']=_0x13b7dc;_0x5c17b1[_0x7f01('0x22')]=_0x13b7dc;_0x5c17b1[_0x7f01('0x23')]=_0x218e92?_0x7f01('0x3c'):_0x7f01('0x3d');var _0x13beeb=_0x7f01('0x27')+_0x5c17b1[_0x7f01('0x36')];return db[_0x7f01('0x28')][_0x7f01('0x29')](_0x13beeb,{'type':db[_0x7f01('0x2a')][_0x7f01('0x37')][_0x7f01('0x2b')],'raw':!![]})[_0x7f01('0x1c')](function(_0x46a627){if(_0x46a627){_0x5c17b1['contact']=_0x46a627[0x0];}if(typeof _0x5c17b1[_0x7f01('0x2c')]==='undefined')return;return getAgent(_0x5c17b1[_0x7f01('0x2c')]);})[_0x7f01('0x1c')](function(_0x2d8866){if(_0x2d8866){_0x5c17b1[_0x7f01('0x39')]=util[_0x7f01('0x2d')](_0x7f01('0x2e'),_0x2d8866[_0x7f01('0x2f')]);_0x5c17b1[_0x7f01('0x30')]=_0x2d8866;}return request({'event':_0x1620c8,'message':_0x5c17b1});})[_0x7f01('0x32')](function(_0x47c280){logger[_0x7f01('0x1f')](_0x7f01('0x1e'),_0x7f01('0x3e'),_0x47c280);});}};}function getAgent(_0x46f2a6){return db[_0x7f01('0x3f')][_0x7f01('0x40')]({'where':{'id':_0x46f2a6},'attributes':['id',_0x7f01('0x2f'),'fullname',_0x7f01('0x41'),'internal'],'raw':!![]})['then'](function(_0x5881c5){return _0x5881c5;});}exports['default']=function(){for(var _0x46d67e=0x0;_0x46d67e<triggers['length'];_0x46d67e+=0x1){if(db[_0x7f01('0x42')](triggers[_0x46d67e][_0x7f01('0x43')])){db[triggers[_0x46d67e][_0x7f01('0x43')]][_0x7f01('0x44')](triggers[_0x46d67e]['event'],triggers[_0x46d67e]['callback'](triggers[_0x46d67e][_0x7f01('0x21')][_0x7f01('0x45')](),triggers[_0x46d67e][_0x7f01('0x46')]));}}};
\ No newline at end of file
+var _0x32a9=['newinteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','Mail','MailInteraction','MailMessage','OpenchannelInteraction','request','EventManager','info','Trigger,\x20%s','error','code','get','channel','motionChannel','event','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','then','contact','UserId','interface','format','SIP/%s','name','agent','incomingmessage','outgoingmessage','catch','AfterCreateMessage','opened','SELECT','AfterCreate','changed','closed','substatus','query','AfterUpdate','User','find','fullname','email','internal','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','jayson/promise','triggers','client','http','Chat','ChatInteraction','afterCreate','afterUpdate','closedinteraction','newmessage','SmsInteraction'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x32a9,0x84));var _0x932a=function(_0x494ee1,_0x1f18e1){_0x494ee1=_0x494ee1-0x0;var _0x1e0057=_0x32a9[_0x494ee1];return _0x1e0057;};'use strict';var util=require(_0x932a('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0x932a('0x1'));var logger=require('../logger')(_0x932a('0x2'));var client=jayson[_0x932a('0x3')][_0x932a('0x4')]({'port':0x232a});var triggers=[{'channel':_0x932a('0x5'),'model':_0x932a('0x6'),'event':_0x932a('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':'Chat','model':_0x932a('0x6'),'event':_0x932a('0x8'),'condition':_0x932a('0x9'),'callback':afterUpdate},{'channel':_0x932a('0x5'),'model':'ChatMessage','event':_0x932a('0x7'),'condition':_0x932a('0xa'),'callback':afterCreateMessage},{'channel':_0x932a('0x5'),'model':'ChatOfflineMessage','event':_0x932a('0x7'),'condition':_0x932a('0xa'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':_0x932a('0xb'),'event':'afterCreate','condition':_0x932a('0xc'),'callback':afterCreate},{'channel':'Sms','model':_0x932a('0xb'),'event':_0x932a('0x8'),'condition':_0x932a('0x9'),'callback':afterUpdate},{'channel':'Sms','model':_0x932a('0xd'),'event':'afterCreate','condition':_0x932a('0xa'),'callback':afterCreateMessage},{'channel':_0x932a('0xe'),'model':_0x932a('0xf'),'event':_0x932a('0x7'),'condition':_0x932a('0xc'),'callback':afterCreate},{'channel':'Whatsapp','model':'WhatsappInteraction','event':'afterUpdate','condition':_0x932a('0x9'),'callback':afterUpdate},{'channel':_0x932a('0xe'),'model':_0x932a('0x10'),'event':_0x932a('0x7'),'condition':_0x932a('0xa'),'callback':afterCreateMessage},{'channel':_0x932a('0x11'),'model':_0x932a('0x12'),'event':_0x932a('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x932a('0x11'),'model':_0x932a('0x12'),'event':_0x932a('0x8'),'condition':_0x932a('0x9'),'callback':afterUpdate},{'channel':'Fax','model':'FaxMessage','event':_0x932a('0x7'),'condition':_0x932a('0xa'),'callback':afterCreateMessage},{'channel':_0x932a('0x13'),'model':_0x932a('0x14'),'event':_0x932a('0x7'),'condition':_0x932a('0xc'),'callback':afterCreate},{'channel':'Mail','model':'MailInteraction','event':_0x932a('0x8'),'condition':_0x932a('0x9'),'callback':afterUpdate},{'channel':_0x932a('0x13'),'model':_0x932a('0x15'),'event':_0x932a('0x7'),'condition':_0x932a('0xa'),'callback':afterCreateMessage},{'channel':'Openchannel','model':'OpenchannelInteraction','event':'afterCreate','condition':_0x932a('0xc'),'callback':afterCreate},{'channel':'Openchannel','model':_0x932a('0x16'),'event':_0x932a('0x8'),'condition':_0x932a('0x9'),'callback':afterUpdate},{'channel':'Openchannel','model':'OpenchannelMessage','event':_0x932a('0x7'),'condition':_0x932a('0xa'),'callback':afterCreateMessage}];function request(_0x5512e3){return client[_0x932a('0x17')](_0x932a('0x18'),_0x5512e3)['then'](function(_0x4e9ab7){logger[_0x932a('0x19')](_0x932a('0x1a'),_0x932a('0x18'),_0x4e9ab7);if(_0x4e9ab7[_0x932a('0x1b')]){if(_0x4e9ab7[_0x932a('0x1b')][_0x932a('0x1c')]===0x1f4){logger['error'](_0x932a('0x1a'),_0x932a('0x18'),_0x4e9ab7[_0x932a('0x1b')]);}}})['catch'](function(_0x3ba75c){logger[_0x932a('0x1b')](_0x932a('0x1a'),_0x932a('0x18'),_0x3ba75c);});}function afterCreateMessage(_0x237aeb){return function(_0x3930c8){_0x3930c8=_0x3930c8[_0x932a('0x1d')]({'plain':!![]});_0x3930c8[_0x932a('0x1e')]=_0x237aeb;_0x3930c8[_0x932a('0x1f')]=_0x237aeb;_0x3930c8[_0x932a('0x20')]=_0x3930c8['direction'];Promise[_0x932a('0x21')]()['then'](function(){if(typeof _0x3930c8[_0x932a('0x22')]===_0x932a('0x23'))return null;var _0x3756e8=_0x932a('0x24')+_0x3930c8['ContactId'];return db[_0x932a('0x25')]['query'](_0x3756e8,{'type':db[_0x932a('0x26')][_0x932a('0x27')]['SELECT'],'raw':!![]});})[_0x932a('0x28')](function(_0x16b5e5){if(_0x16b5e5){_0x3930c8[_0x932a('0x29')]=_0x16b5e5[0x0];}if(typeof _0x3930c8[_0x932a('0x2a')]===_0x932a('0x23'))return;return getAgent(_0x3930c8[_0x932a('0x2a')]);})[_0x932a('0x28')](function(_0x54243d){if(_0x54243d){_0x3930c8[_0x932a('0x2b')]=util[_0x932a('0x2c')](_0x932a('0x2d'),_0x54243d[_0x932a('0x2e')]);_0x3930c8[_0x932a('0x2f')]=_0x54243d;_0x3930c8['channel']=_0x237aeb;return request({'event':_0x932a('0x30'),'message':_0x3930c8});}else{return request({'event':_0x932a('0x31'),'message':_0x3930c8});}})[_0x932a('0x32')](function(_0x52cdd9){logger[_0x932a('0x1b')](_0x932a('0x1a'),_0x932a('0x33'),_0x52cdd9);});};}function afterCreateOfflineMessage(_0x3bc2aa){return function(_0x3cd9f9){_0x3cd9f9=_0x3cd9f9['get']({'plain':!![]});_0x3cd9f9[_0x932a('0x1e')]=_0x3bc2aa;_0x3cd9f9['motionChannel']=_0x3bc2aa;_0x3cd9f9[_0x932a('0x20')]='offlineMessage';return request({'event':_0x3cd9f9[_0x932a('0x20')],'message':_0x3cd9f9});};}function afterCreate(_0x4b2e2a,_0x7b2eac){return function(_0x3da334){_0x3da334=_0x3da334[_0x932a('0x1d')]({'plain':!![]});_0x3da334['channel']=_0x4b2e2a;_0x3da334[_0x932a('0x1f')]=_0x4b2e2a;_0x3da334[_0x932a('0x20')]=_0x932a('0x34');Promise[_0x932a('0x21')]()[_0x932a('0x28')](function(){var _0x1f33f7=_0x932a('0x24')+_0x3da334['ContactId'];return db['sequelize']['query'](_0x1f33f7,{'type':db[_0x932a('0x26')][_0x932a('0x27')][_0x932a('0x35')],'raw':!![]});})[_0x932a('0x28')](function(_0x45a407){if(_0x45a407){_0x3da334[_0x932a('0x29')]=_0x45a407[0x0];}if(typeof _0x3da334[_0x932a('0x2a')]===_0x932a('0x23'))return;return getAgent(_0x3da334[_0x932a('0x2a')]);})['then'](function(_0x2c8bb2){if(_0x2c8bb2){_0x3da334[_0x932a('0x2b')]=util['format'](_0x932a('0x2d'),_0x2c8bb2['name']);_0x3da334[_0x932a('0x2f')]=_0x2c8bb2;}return request({'event':_0x7b2eac,'message':_0x3da334});})['catch'](function(_0x47c987){logger[_0x932a('0x1b')](_0x932a('0x1a'),_0x932a('0x36'),_0x47c987);});};}function afterUpdate(_0xf17d45){return function(_0x1b4199){var _0xd6e8a=_0x1b4199[_0x932a('0x37')](_0x932a('0x38'))&&_0x1b4199[_0x932a('0x38')];var _0xbb6bcb=_0x1b4199[_0x932a('0x37')](_0x932a('0x39'));if(_0xd6e8a||_0xbb6bcb){var _0x3be36e=_0xd6e8a?_0x932a('0x9'):'substatus';var _0x10e1a4=_0x1b4199[_0x932a('0x1d')]({'plain':!![]});_0x10e1a4['channel']=_0xf17d45;_0x10e1a4[_0x932a('0x1f')]=_0xf17d45;_0x10e1a4[_0x932a('0x20')]=_0xd6e8a?_0x932a('0x38'):'substatus';var _0x1cb38f=_0x932a('0x24')+_0x10e1a4[_0x932a('0x22')];return db[_0x932a('0x25')][_0x932a('0x3a')](_0x1cb38f,{'type':db[_0x932a('0x26')][_0x932a('0x27')]['SELECT'],'raw':!![]})[_0x932a('0x28')](function(_0x27cf09){if(_0x27cf09){_0x10e1a4[_0x932a('0x29')]=_0x27cf09[0x0];}if(typeof _0x10e1a4[_0x932a('0x2a')]===_0x932a('0x23'))return;return getAgent(_0x10e1a4['UserId']);})[_0x932a('0x28')](function(_0x5713d1){if(_0x5713d1){_0x10e1a4['interface']=util[_0x932a('0x2c')](_0x932a('0x2d'),_0x5713d1['name']);_0x10e1a4[_0x932a('0x2f')]=_0x5713d1;}return request({'event':_0x3be36e,'message':_0x10e1a4});})[_0x932a('0x32')](function(_0x59556a){logger[_0x932a('0x1b')](_0x932a('0x1a'),_0x932a('0x3b'),_0x59556a);});}};}function getAgent(_0x4accf6){return db[_0x932a('0x3c')][_0x932a('0x3d')]({'where':{'id':_0x4accf6},'attributes':['id',_0x932a('0x2e'),_0x932a('0x3e'),_0x932a('0x3f'),_0x932a('0x40')],'raw':!![]})[_0x932a('0x28')](function(_0x288914){return _0x288914;});}exports['default']=function(){for(var _0x996e0b=0x0;_0x996e0b<triggers[_0x932a('0x41')];_0x996e0b+=0x1){if(db[_0x932a('0x42')](triggers[_0x996e0b][_0x932a('0x43')])){db[triggers[_0x996e0b][_0x932a('0x43')]][_0x932a('0x44')](triggers[_0x996e0b][_0x932a('0x20')],triggers[_0x996e0b][_0x932a('0x45')](triggers[_0x996e0b][_0x932a('0x1e')][_0x932a('0x46')](),triggers[_0x996e0b][_0x932a('0x47')]));}}};
\ No newline at end of file
index ed99f96..cf35b32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x013d=['role','agent','then','Maximum\x20login\x20has\x20been\x20reached','catch','bluebird','./license/util','voice','mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense'];(function(_0x58d606,_0x36bfbe){var _0x3acbeb=function(_0x521e5e){while(--_0x521e5e){_0x58d606['push'](_0x58d606['shift']());}};_0x3acbeb(++_0x36bfbe);}(_0x013d,0xeb));var _0xd013=function(_0xa62163,_0x4a26fb){_0xa62163=_0xa62163-0x0;var _0x46b4fb=_0x013d[_0xa62163];return _0x46b4fb;};'use strict';var _=require('lodash');var BPromise=require(_0xd013('0x0'));var db=require('../mysqldb')['db'];var util=require(_0xd013('0x1'));var channels=[_0xd013('0x2'),_0xd013('0x3'),_0xd013('0x4'),_0xd013('0x5'),_0xd013('0x6'),_0xd013('0x7'),_0xd013('0x8')];exports[_0xd013('0x9')]=function(){return channels;};exports[_0xd013('0xa')]=function(_0x5f4692){_0x5f4692=_0x5f4692[_0xd013('0xb')]();return _[_0xd013('0xc')](channels,_0x5f4692);};exports[_0xd013('0xd')]=function(_0x3ecee6,_0x37e099,_0x245440,_0x45fc27){var _0x2c2e7a={'loginAttempts':_0x37e099,'blocked':_0x245440};if(!_[_0xd013('0xe')](_0x45fc27)){_0x2c2e7a[_0xd013('0xf')]=_0x45fc27;}return _0x3ecee6[_0xd013('0x10')](_0x2c2e7a);};exports[_0xd013('0x11')]=function(_0x22bafd){return new BPromise(function(_0x498cb7,_0x18d514){var _0x1a4585=0x0;if(_0x22bafd[_0xd013('0x12')]!==_0xd013('0x13')){_0x498cb7(_0x22bafd);}db['User']['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x22bafd['id']}}})[_0xd013('0x14')](function(_0x11e27b){_0x1a4585=_0x11e27b;return util['getLicense']();})[_0xd013('0x14')](function(_0xc34558){if(_0xc34558&&_0xc34558['agents']&&_0x1a4585>=_0xc34558['agents']){throw Error(_0xd013('0x15'));}_0x498cb7(_0x22bafd);})[_0xd013('0x16')](function(_0x40cbf4){_0x18d514(_0x40cbf4);});});};
\ No newline at end of file
+var _0xfde9=['chat','sms','whatsapp','openchannel','getChannels','isValidChannel','includes','isUndefined','blockedAt','updateAttributes','role','User','agent','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','voice','mail'];(function(_0x48b7e6,_0x5dd606){var _0xb98580=function(_0x5ca7ab){while(--_0x5ca7ab){_0x48b7e6['push'](_0x48b7e6['shift']());}};_0xb98580(++_0x5dd606);}(_0xfde9,0x16a));var _0x9fde=function(_0x291f8b,_0x3b5591){_0x291f8b=_0x291f8b-0x0;var _0x275171=_0xfde9[_0x291f8b];return _0x275171;};'use strict';var _=require(_0x9fde('0x0'));var BPromise=require(_0x9fde('0x1'));var db=require(_0x9fde('0x2'))['db'];var util=require(_0x9fde('0x3'));var channels=[_0x9fde('0x4'),_0x9fde('0x5'),_0x9fde('0x6'),'fax',_0x9fde('0x7'),_0x9fde('0x8'),_0x9fde('0x9')];exports[_0x9fde('0xa')]=function(){return channels;};exports[_0x9fde('0xb')]=function(_0x203d3b){_0x203d3b=_0x203d3b['toLowerCase']();return _[_0x9fde('0xc')](channels,_0x203d3b);};exports['clearBlockUser']=function(_0x2834cc,_0x4f08e4,_0x5916b0,_0x78e58){var _0x3e2a61={'loginAttempts':_0x4f08e4,'blocked':_0x5916b0};if(!_[_0x9fde('0xd')](_0x78e58)){_0x3e2a61[_0x9fde('0xe')]=_0x78e58;}return _0x2834cc[_0x9fde('0xf')](_0x3e2a61);};exports['getLicense']=function(_0x22241a){return new BPromise(function(_0x2fb776,_0x4979d5){var _0x131be1=0x0;if(_0x22241a[_0x9fde('0x10')]!=='agent'){_0x2fb776(_0x22241a);}db[_0x9fde('0x11')]['count']({'where':{'role':_0x9fde('0x12'),'online':!![],'id':{'$ne':_0x22241a['id']}}})[_0x9fde('0x13')](function(_0x516501){_0x131be1=_0x516501;return util[_0x9fde('0x14')]();})[_0x9fde('0x13')](function(_0x1be772){if(_0x1be772&&_0x1be772[_0x9fde('0x15')]&&_0x131be1>=_0x1be772[_0x9fde('0x15')]){throw Error(_0x9fde('0x16'));}_0x2fb776(_0x22241a);})['catch'](function(_0x788cf0){_0x4979d5(_0x788cf0);});});};
\ No newline at end of file
index 57d3034..f9d1008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Bad\x20Request','Forbidden','Out\x20Of\x20Interval','Not\x20Found','error','stack','statusMessage','status','send','exports','util','../config/logger','api','message','name','Error','inherits','Entity\x20not\x20found'];(function(_0x3278f5,_0x112baa){var _0x5b478b=function(_0x52f999){while(--_0x52f999){_0x3278f5['push'](_0x3278f5['shift']());}};_0x5b478b(++_0x112baa);}(_0x7a54,0x106));var _0x47a5=function(_0x39498d,_0x367a2c){_0x39498d=_0x39498d-0x0;var _0x522c3=_0x7a54[_0x39498d];return _0x522c3;};'use strict';var util=require(_0x47a5('0x0'));var logger=require(_0x47a5('0x1'))(_0x47a5('0x2'));var APIError=function(_0x58157c,_0x1d33e){this[_0x47a5('0x3')]=_0x58157c||'Internal\x20Server\x20Error';this[_0x47a5('0x4')]=_0x1d33e||_0x47a5('0x5');util[_0x47a5('0x6')](APIError,Error);};var APIBadRequestError=function(_0x3717e1){this[_0x47a5('0x3')]=_0x3717e1||'Bad\x20Request';this[_0x47a5('0x4')]='Bad\x20Request';util[_0x47a5('0x6')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x30e405){this['message']=_0x30e405||_0x47a5('0x7');this['name']='Not\x20Found';util['inherits'](APINotFoundError,APIError);};var APIOutOfIntervalError=function(_0x2a0e98){this[_0x47a5('0x3')]=_0x2a0e98||'Message\x20sent\x20outside\x20a\x20valid\x20interval';this[_0x47a5('0x4')]='Out\x20Of\x20Interval';util['inherits'](APIOutOfIntervalError,APIError);};function getStatusCode(_0x1f47f4){switch(_0x1f47f4){case _0x47a5('0x8'):return 0x190;case _0x47a5('0x9'),_0x47a5('0xa'):return 0x193;case _0x47a5('0xb'):return 0x194;default:return 0x1f4;}}function getCustomStatusMessage(_0xd308b8){if(_0xd308b8===_0x47a5('0xa'))return _0xd308b8;return null;}function handleError(_0x5beb89){return function(_0x44bd3e){logger[_0x47a5('0xc')](_0x44bd3e[_0x47a5('0xd')]);var _0x711793=getStatusCode(_0x44bd3e[_0x47a5('0x4')]);var _0x620ee9=getCustomStatusMessage(_0x44bd3e[_0x47a5('0x4')]);if(_0x44bd3e[_0x47a5('0x4')])delete _0x44bd3e['name'];if(_0x620ee9)_0x5beb89[_0x47a5('0xe')]=_0x620ee9;return _0x5beb89[_0x47a5('0xf')](_0x711793)[_0x47a5('0x10')](_0x44bd3e);};}module[_0x47a5('0x11')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APIOutOfIntervalError':APIOutOfIntervalError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0x92e5=['name','Not\x20Found','Message\x20sent\x20outside\x20a\x20valid\x20interval','code','details','Resource\x20Conflict','Conflict','Out\x20Of\x20Interval','error','statusMessage','status','send','exports','util','../config/logger','api','Internal\x20Server\x20Error','Error','inherits','message','Bad\x20Request','Forbidden','Entity\x20not\x20found'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x92e5,0x1c2));var _0x592e=function(_0x30ff87,_0x38f522){_0x30ff87=_0x30ff87-0x0;var _0x9e6ddf=_0x92e5[_0x30ff87];return _0x9e6ddf;};'use strict';var util=require(_0x592e('0x0'));var logger=require(_0x592e('0x1'))(_0x592e('0x2'));var APIError=function(_0x520d00,_0x1c95c8){this['message']=_0x520d00||_0x592e('0x3');this['name']=_0x1c95c8||_0x592e('0x4');util[_0x592e('0x5')](APIError,Error);};var APIBadRequestError=function(_0x1cde40){this[_0x592e('0x6')]=_0x1cde40||'Bad\x20Request';this['name']=_0x592e('0x7');util[_0x592e('0x5')](APIBadRequestError,APIError);};var APIForbiddenError=function(_0x4c4b1a){this['message']=_0x4c4b1a||_0x592e('0x8');this['name']=_0x592e('0x8');util[_0x592e('0x5')](APIForbiddenError,APIError);};var APINotFoundError=function(_0x2881f1){this[_0x592e('0x6')]=_0x2881f1||_0x592e('0x9');this[_0x592e('0xa')]=_0x592e('0xb');util[_0x592e('0x5')](APINotFoundError,APIError);};var APIOutOfIntervalError=function(_0x42ce49){this['message']=_0x42ce49||_0x592e('0xc');this['name']='Out\x20Of\x20Interval';this[_0x592e('0xd')]=0x193;this[_0x592e('0xe')]={'type':'OutOfInterval'};util[_0x592e('0x5')](APIOutOfIntervalError,APIError);};var APIConflictError=function(_0x25c7fc){this[_0x592e('0x6')]=_0x25c7fc||_0x592e('0xf');this[_0x592e('0xa')]=_0x592e('0x10');util[_0x592e('0x5')](APIBadRequestError,APIError);};function getStatusCode(_0x3ff32d){switch(_0x3ff32d){case _0x592e('0x7'):return 0x190;case _0x592e('0x8'),_0x592e('0x11'):return 0x193;case _0x592e('0xb'):return 0x194;case'Conflict':return 0x199;default:return 0x1f4;}}function getCustomStatusMessage(_0x3a674e){if(_0x3a674e==='Out\x20Of\x20Interval')return _0x3a674e;return null;}function handleError(_0x8abe9d){return function(_0x126321){logger[_0x592e('0x12')](_0x126321['stack']);var _0x4536ff=getStatusCode(_0x126321[_0x592e('0xa')]);var _0x4b87a0=getCustomStatusMessage(_0x126321['name']);if(_0x126321['name']){delete _0x126321[_0x592e('0xa')];}if(_0x4b87a0){_0x8abe9d[_0x592e('0x13')]=_0x4b87a0;}return _0x8abe9d[_0x592e('0x14')](_0x4536ff)[_0x592e('0x15')](_0x126321);};}module[_0x592e('0x16')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APIForbiddenError':APIForbiddenError,'APINotFoundError':APINotFoundError,'APIOutOfIntervalError':APIOutOfIntervalError,'APIConflict':APIConflictError,'handleError':handleError};
\ No newline at end of file
index 0769b45..5fd8897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc90=['render','404','status'];(function(_0x4b4b0c,_0x138d48){var _0x11f292=function(_0x578df1){while(--_0x578df1){_0x4b4b0c['push'](_0x4b4b0c['shift']());}};_0x11f292(++_0x138d48);}(_0xbc90,0xee));var _0x0bc9=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbc90[_0x432682];return _0x463d05;};'use strict';module['exports'][0x194]=function pageNotFound(_0x411873,_0x3f0526){var _0x4c7cd9=_0x0bc9('0x0');var _0x437e7d=0x194;var _0x30ccf3={'status':_0x437e7d};_0x3f0526['status'](_0x30ccf3[_0x0bc9('0x1')]);_0x3f0526[_0x0bc9('0x2')](_0x4c7cd9,{},function(_0x182910,_0xeaf1a4){if(_0x182910){return _0x3f0526[_0x0bc9('0x1')](_0x30ccf3[_0x0bc9('0x1')])['json'](_0x30ccf3);}_0x3f0526['send'](_0xeaf1a4);});};
\ No newline at end of file
+var _0x85f8=['404','status','render','json','send','exports'];(function(_0x6bd06d,_0x1a434d){var _0x4d2df3=function(_0x5c91a9){while(--_0x5c91a9){_0x6bd06d['push'](_0x6bd06d['shift']());}};_0x4d2df3(++_0x1a434d);}(_0x85f8,0xd7));var _0x885f=function(_0x399fa4,_0x124cd5){_0x399fa4=_0x399fa4-0x0;var _0x7ae905=_0x85f8[_0x399fa4];return _0x7ae905;};'use strict';module[_0x885f('0x0')][0x194]=function pageNotFound(_0x4186b0,_0x1fe991){var _0x33099b=_0x885f('0x1');var _0x21c4c8=0x194;var _0x18de5b={'status':_0x21c4c8};_0x1fe991[_0x885f('0x2')](_0x18de5b['status']);_0x1fe991[_0x885f('0x3')](_0x33099b,{},function(_0x42dc60,_0x135a23){if(_0x42dc60){return _0x1fe991['status'](_0x18de5b[_0x885f('0x2')])[_0x885f('0x4')](_0x18de5b);}_0x1fe991[_0x885f('0x5')](_0x135a23);});};
\ No newline at end of file
index a59425a..1ff58f2 100644 (file)
@@ -152,7 +152,7 @@ Migration.prototype.final = function(resolve) {
 };
 
 module.exports = {
-  up: function(queryInterface /*, Sequelize */) {
+  up: function(queryInterface /*, Sequelize */ ) {
     return new BPromise(function(resolve) {
       var migration = new Migration(queryInterface);
       // Add your migration code here
index a59425a..c3f0d98 100644 (file)
@@ -152,11 +152,16 @@ Migration.prototype.final = function(resolve) {
 };
 
 module.exports = {
-  up: function(queryInterface /*, Sequelize */) {
+  up: function(queryInterface /*, Sequelize */ ) {
     return new BPromise(function(resolve) {
       var migration = new Migration(queryInterface);
       // Add your migration code here
 
+      //START cm_hopper
+      migration.query('ALTER TABLE `cm_hopper` DROP FOREIGN KEY `cm_hopper_ibfk_3`;');
+      migration.query('ALTER TABLE `cm_hopper` ADD CONSTRAINT `cm_hopper_ibfk_3` FOREIGN KEY (`UserId`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;');
+      //END cm_hopper
+
       // START FINAL
       migration.final(resolve);
       // END FINAL
index fadb0d7..be81097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','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','SquareProject'];(function(_0x20fdc1,_0xde1296){var _0x25397c=function(_0x814b51){while(--_0x814b51){_0x20fdc1['push'](_0x20fdc1['shift']());}};_0x25397c(++_0xde1296);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xe032=['../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','../api/faxAccount/faxAccount.model','FaxApplication','FaxInteraction','../api/faxInteraction/faxInteraction.model','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','DeskAccount','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','Plugin','MailTransferReport','ChatTransferReport','FaxTransferReport','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','VoicePrefix','../api/voicePrefix/voicePrefix.model','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappTransferReport/whatsappTransferReport.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','VoiceMail','UserId','userSetting','cascade','hasMany','Recordings','CmHopperFinal','HopperHistory','OpenchannelInteraction','ChatInteraction','ChatInteractions','SmsInteractions','MailInteractions','WhatsappInteraction','WhatsappInteractions','UserNotification','SenderId','Hoppers','UserProfile','belongsToMany','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','MailQueues','UserMailQueue','ChatQueues','SmsQueue','OpenchannelQueues','WhatsappQueues','ChatWebsites','FaxAccount','FaxAccounts','MailAccounts','user_has_mail_accounts','OpenchannelAccount','OpenchannelAccounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','Sound','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks','belongsTo','Trunk','TrunkBackupId','Interval','IntervalId','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','Contact','ContactId','MailAccount','MailAccountId','CloudProviderId','restrict','Imap','Smtp','Dispositions','Answers','Interactions','Applications','List','ListId','Template','TemplateId','team_has_mail_queues','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessage','TagId','MailQueueReport','Items','FaxAccountId','Exntensions','mandatoryDispositionPause','user_has_fax_accounts','FaxMessage','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','user_has_openchannel_accounts','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','Agent','Queue','Website','ChatInteractionId','chat_interaction_has_tags','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','chat_group_has_users','CompanyId','Phones','CmContactId','HopperFinals','JscriptySessions','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','OwnerId','CampaignId','All','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','Extensions','MailApplications','ChatApplications','FaxApplications','SmsApplications','Schedule','AnalyticDefaultReport','DefaultReportId','Mohs','whatsapp_interaction_has_tags','ItemType','ItemTypeId','CmHopperId','AllConditions','AllCondition','TriggerAllId','AnyCondition','TriggerId','Fields','CustomReportId','Configurations','AccountId','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Field','VariableId','SugarcrmField','Description','int_desk_configuration_has_tags','DeskField','ZendeskConfiguration','int_zendesk_configuration_has_tags','VtigerField','ServicenowConfiguration','Dynamics365Field','FreshsalesField','FromId','ToId','SessionId','ProjectId','user_has_teams','FaxQueues','team_has_whatsapp_queues','TeamVoicePrefix','TrunkId','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','FromFaxAccountId','FromAgent','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','userProfileId','Resources','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','WhatsappQueue','WhatsappTransferReport','FromWhatsappAccountId','WhatsappQueueId','user','exports','../config/environment','sequelize','lodash','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','database','username','password','options','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceExtension','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','../api/memberReport/memberReport.model','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','MailServerOut'];(function(_0x14cd6f,_0x263dfd){var _0x1a31ce=function(_0xf199d4){while(--_0xf199d4){_0x14cd6f['push'](_0x14cd6f['shift']());}};_0x1a31ce(++_0x263dfd);}(_0xe032,0x1cb));var _0x2e03=function(_0x13c174,_0xda25fe){_0x13c174=_0x13c174-0x0;var _0x160654=_0xe032[_0x13c174];return _0x160654;};'use strict';var config=require(_0x2e03('0x0'));var Sequelize=require(_0x2e03('0x1'));var _=require(_0x2e03('0x2'));var jstz=require('jstz');var timezone=jstz[_0x2e03('0x3')]();config[_0x2e03('0x1')]=_[_0x2e03('0x4')](config[_0x2e03('0x1')],{'database':_0x2e03('0x5'),'username':_0x2e03('0x6'),'password':_0x2e03('0x7'),'options':{'host':_0x2e03('0x8'),'port':0xcea,'dialect':_0x2e03('0x9'),'dialectOptions':{'charset':_0x2e03('0xa')},'logging':![],'timezone':timezone[_0x2e03('0xb')](),'define':{'charset':_0x2e03('0xc'),'collate':_0x2e03('0xd')}}});config[_0x2e03('0xe')]=_[_0x2e03('0x4')](config[_0x2e03('0xe')],{'database':_0x2e03('0x5'),'username':'xcall','password':_0x2e03('0x7'),'options':{'host':_0x2e03('0x8'),'port':0xcea,'dialect':_0x2e03('0x9'),'dialectOptions':{'charset':_0x2e03('0xa')},'logging':![],'timezone':timezone[_0x2e03('0xb')](),'define':{'charset':_0x2e03('0xc'),'collate':_0x2e03('0xd')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x2e03('0x1')][_0x2e03('0xf')],config[_0x2e03('0x1')][_0x2e03('0x10')],config[_0x2e03('0x1')][_0x2e03('0x11')],config[_0x2e03('0x1')][_0x2e03('0x12')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x2e03('0xf')],config[_0x2e03('0xe')][_0x2e03('0x10')],config[_0x2e03('0xe')][_0x2e03('0x11')],config[_0x2e03('0xe')][_0x2e03('0x12')])};db[_0x2e03('0x13')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x15'));db[_0x2e03('0x16')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x17'));db['VoiceContext']=db[_0x2e03('0x1')]['import']('../api/voiceContext/voiceContext.model');db[_0x2e03('0x18')]=db['sequelize'][_0x2e03('0x14')]('../api/voiceExtension/voiceExtension.model');db[_0x2e03('0x19')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x1a'));db[_0x2e03('0x1b')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x1c'));db[_0x2e03('0x1d')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x1e'));db[_0x2e03('0x1f')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x20'));db['VoiceMail']=db[_0x2e03('0x1')]['import'](_0x2e03('0x21'));db[_0x2e03('0x22')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x23'));db[_0x2e03('0x24')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x25'));db[_0x2e03('0x26')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/voiceDialReport/voiceDialReport.model');db[_0x2e03('0x27')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x28'));db[_0x2e03('0x29')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x2a'));db['MemberReport']=db['sequelize']['import'](_0x2e03('0x2b'));db['Trunk']=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x2c'));db['VoiceTransferReport']=db[_0x2e03('0x1')]['import'](_0x2e03('0x2d'));db[_0x2e03('0x2e')]=db[_0x2e03('0x1')]['import']('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0x2e03('0x2f')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x30'));db[_0x2e03('0x31')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x32'));db['UserMailQueue']=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/userMailQueue/userMailQueue.model');db[_0x2e03('0x33')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x34'));db[_0x2e03('0x35')]=db['sequelize'][_0x2e03('0x14')]('../api/userSmsQueue/userSmsQueue.model');db[_0x2e03('0x36')]=db['sequelize']['import'](_0x2e03('0x37'));db[_0x2e03('0x38')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x39'));db[_0x2e03('0x3a')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/mailServerIn/mailServerIn.model');db[_0x2e03('0x3b')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x3c'));db['MailAccount']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x3d'));db[_0x2e03('0x3e')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x3f'));db[_0x2e03('0x40')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x41'));db[_0x2e03('0x42')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x43'));db[_0x2e03('0x44')]=db[_0x2e03('0x1')]['import'](_0x2e03('0x45'));db[_0x2e03('0x46')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x47'));db['MailQueueReport']=db['sequelize']['import'](_0x2e03('0x48'));db[_0x2e03('0x49')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x4a'));db[_0x2e03('0x4b')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x4c'));db['FaxAccount']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x4d'));db[_0x2e03('0x4e')]=db['sequelize'][_0x2e03('0x14')]('../api/faxApplication/faxApplication.model');db[_0x2e03('0x4f')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x50'));db['FaxMessage']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x51'));db[_0x2e03('0x52')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x53'));db[_0x2e03('0x54')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x55'));db[_0x2e03('0x56')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x57'));db[_0x2e03('0x58')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x59'));db[_0x2e03('0x5a')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x5b'));db[_0x2e03('0x5c')]=db[_0x2e03('0x1')]['import'](_0x2e03('0x5d'));db['SmsQueue']=db[_0x2e03('0x1')]['import'](_0x2e03('0x5e'));db['OpenchannelAccount']=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/openchannelAccount/openchannelAccount.model');db[_0x2e03('0x5f')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x60'));db['OpenchannelInteraction']=db['sequelize']['import'](_0x2e03('0x61'));db[_0x2e03('0x62')]=db['sequelize'][_0x2e03('0x14')]('../api/openchannelMessage/openchannelMessage.model');db[_0x2e03('0x63')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x64'));db[_0x2e03('0x65')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x66'));db[_0x2e03('0x67')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x68'));db[_0x2e03('0x69')]=db['sequelize'][_0x2e03('0x14')]('../api/chatApplication/chatApplication.model');db['ChatInteraction']=db[_0x2e03('0x1')]['import'](_0x2e03('0x6a'));db[_0x2e03('0x6b')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x6c'));db['ChatOfflineMessage']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x6d'));db[_0x2e03('0x6e')]=db[_0x2e03('0x1')]['import'](_0x2e03('0x6f'));db[_0x2e03('0x70')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x71'));db[_0x2e03('0x72')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x73'));db[_0x2e03('0x74')]=db['sequelize']['import'](_0x2e03('0x75'));db[_0x2e03('0x76')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x77'));db[_0x2e03('0x78')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/cmHopper/cmHopper.model');db[_0x2e03('0x79')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x7a'));db['CmHopperFinal']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x7b'));db[_0x2e03('0x7c')]=db['sequelize'][_0x2e03('0x14')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x2e03('0x7d')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x7e'));db[_0x2e03('0x7f')]=db[_0x2e03('0x1')]['import'](_0x2e03('0x80'));db[_0x2e03('0x81')]=db['sequelize']['import'](_0x2e03('0x82'));db[_0x2e03('0x83')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x84'));db[_0x2e03('0x85')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x86'));db[_0x2e03('0x87')]=db['sequelize']['import'](_0x2e03('0x88'));db[_0x2e03('0x89')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x8a'));db['Interval']=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/interval/interval.model');db[_0x2e03('0x8b')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x8c'));db[_0x2e03('0x8d')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x8e'));db[_0x2e03('0x8f')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x90'));db['Schedule']=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/schedule/schedule.model');db['Sound']=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/sound/sound.model');db[_0x2e03('0x91')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x92'));db[_0x2e03('0x93')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x94'));db[_0x2e03('0x95')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/cmContactHasItem/cmContactHasItem.model');db['CmHopperAdditionalPhone']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x96'));db['Template']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x97'));db[_0x2e03('0x98')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x99'));db[_0x2e03('0x9a')]=db['sequelize'][_0x2e03('0x14')]('../api/variable/variable.model');db[_0x2e03('0x9b')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x9c'));db[_0x2e03('0x9d')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x9e'));db[_0x2e03('0x9f')]=db['sequelize'][_0x2e03('0x14')]('../api/analyticCustomReport/analyticCustomReport.model');db['AnalyticDefaultReport']=db['sequelize'][_0x2e03('0x14')](_0x2e03('0xa0'));db[_0x2e03('0xa1')]=db['sequelize']['import'](_0x2e03('0xa2'));db[_0x2e03('0xa3')]=db['sequelize']['import'](_0x2e03('0xa4'));db[_0x2e03('0xa5')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xa6'));db['AnalyticTreeReport']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xa7'));db[_0x2e03('0xa8')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0x2e03('0xa9')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db[_0x2e03('0xaa')]=db[_0x2e03('0x1')]['import']('../api/intSalesforceField/intSalesforceField.model');db[_0x2e03('0xab')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xac'));db[_0x2e03('0xad')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xae'));db['SugarcrmField']=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/intSugarcrmField/intSugarcrmField.model');db[_0x2e03('0xaf')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/intDeskAccount/intDeskAccount.model');db[_0x2e03('0xb0')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xb1'));db['DeskField']=db['sequelize'][_0x2e03('0x14')]('../api/intDeskField/intDeskField.model');db[_0x2e03('0xb2')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xb3'));db[_0x2e03('0xb4')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0x2e03('0xb5')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0xb6'));db[_0x2e03('0xb7')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xb8'));db['ZendeskConfiguration']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xb9'));db[_0x2e03('0xba')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xbb'));db[_0x2e03('0xbc')]=db[_0x2e03('0x1')]['import'](_0x2e03('0xbd'));db[_0x2e03('0xbe')]=db['sequelize']['import']('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0x2e03('0xbf')]=db[_0x2e03('0x1')]['import'](_0x2e03('0xc0'));db[_0x2e03('0xc1')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/intVtigerAccount/intVtigerAccount.model');db[_0x2e03('0xc2')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xc3'));db['VtigerField']=db[_0x2e03('0x1')]['import'](_0x2e03('0xc4'));db[_0x2e03('0xc5')]=db['sequelize'][_0x2e03('0x14')]('../api/intServicenowAccount/intServicenowAccount.model');db['ServicenowConfiguration']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xc6'));db[_0x2e03('0xc7')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xc8'));db[_0x2e03('0xc9')]=db[_0x2e03('0x1')]['import'](_0x2e03('0xca'));db[_0x2e03('0xcb')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db['Dynamics365Field']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xcc'));db[_0x2e03('0xcd')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0xce'));db[_0x2e03('0xcf')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0xd0'));db['FreshsalesField']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xd1'));db[_0x2e03('0x9b')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/integration/integration.model');db[_0x2e03('0xd2')]=db['sequelize']['import'](_0x2e03('0xd3'));db[_0x2e03('0xd4')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xd5'));db[_0x2e03('0xd6')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xd7'));db[_0x2e03('0xd8')]=db['sequelize']['import'](_0x2e03('0xd9'));db[_0x2e03('0xda')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0xdb'));db[_0x2e03('0xdc')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xdd'));db[_0x2e03('0xde')]=db['sequelize'][_0x2e03('0x14')]('../api/smsQueueReport/smsQueueReport.model');db['SquareReport']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xdf'));db[_0x2e03('0xe0')]=db['sequelize']['import'](_0x2e03('0xe1'));db[_0x2e03('0xe2')]=db['sequelize'][_0x2e03('0x14')]('../api/jscriptyProject/jscriptyProject.model');db[_0x2e03('0xe3')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xe4'));db[_0x2e03('0xe5')]=db['sequelize'][_0x2e03('0x14')](_0x2e03('0xe6'));db[_0x2e03('0xe7')]=db['sequelize']['import'](_0x2e03('0xe8'));db[_0x2e03('0xe9')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xea'));db[_0x2e03('0xeb')]=db[_0x2e03('0x1')]['import'](_0x2e03('0xec'));db[_0x2e03('0xed')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xee'));db[_0x2e03('0xef')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xf0'));db[_0x2e03('0xf1')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xf2'));db[_0x2e03('0xf3')]=db[_0x2e03('0x1')]['import'](_0x2e03('0xf4'));db[_0x2e03('0xf5')]=db['sequelize'][_0x2e03('0x14')]('../api/attachment/attachment.model');db[_0x2e03('0xf6')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/plugin/plugin.model');db[_0x2e03('0xf7')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/mailTransferReport/mailTransferReport.model');db[_0x2e03('0xf8')]=db['sequelize']['import']('../api/chatTransferReport/chatTransferReport.model');db[_0x2e03('0xf9')]=db['sequelize']['import']('../api/faxTransferReport/faxTransferReport.model');db[_0x2e03('0xfa')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xfb'));db[_0x2e03('0xfc')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0xfd'));db[_0x2e03('0xfe')]=db[_0x2e03('0x1')]['import']('../api/cmList/cmList.model');db[_0x2e03('0xff')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x100'));db['UserProfile']=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x101'));db[_0x2e03('0x102')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x103'));db[_0x2e03('0x104')]=db[_0x2e03('0x1')]['import'](_0x2e03('0x105'));db['UserNotification']=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x106'));db[_0x2e03('0x107')]=db['sequelize']['import'](_0x2e03('0x108'));db[_0x2e03('0x109')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x10a'));db['WhatsappInteraction']=db['sequelize'][_0x2e03('0x14')](_0x2e03('0x10b'));db['WhatsappMessage']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x10c'));db[_0x2e03('0x10d')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/whatsappQueueReport/whatsappQueueReport.model');db['WhatsappTransferReport']=db[_0x2e03('0x1')]['import'](_0x2e03('0x10e'));db['WhatsappQueue']=db['sequelize'][_0x2e03('0x14')]('../api/whatsappQueue/whatsappQueue.model');db[_0x2e03('0x10f')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x110'));db[_0x2e03('0x111')]=db[_0x2e03('0x1')][_0x2e03('0x14')]('../api/teamVoiceQueue/teamVoiceQueue.model');db['TeamVoicePrefix']=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x112'));db[_0x2e03('0x113')]=db[_0x2e03('0x1')][_0x2e03('0x14')](_0x2e03('0x114'));db[_0x2e03('0x115')]=db[_0x2e03('0x1')]['import'](_0x2e03('0x116'));db['User'][_0x2e03('0x117')](db[_0x2e03('0x118')],{'as':_0x2e03('0x118'),'onDelete':'cascade','foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')]['hasOne'](db[_0x2e03('0x115')],{'as':_0x2e03('0x11a'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')][_0x2e03('0x11c')](db[_0x2e03('0x1d')],{'as':_0x2e03('0x11d'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')][_0x2e03('0x11c')](db['UserVoiceQueueRt'],{'as':'VoiceQueuesRt','foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')]['hasMany'](db[_0x2e03('0x18')],{'as':'Extensions','onDelete':_0x2e03('0x11b'),'hooks':!![]});db[_0x2e03('0x13')][_0x2e03('0x11c')](db[_0x2e03('0x11e')],{'as':'HopperFinals','foreignKey':_0x2e03('0x119')});db['User'][_0x2e03('0x11c')](db[_0x2e03('0x7c')],{'as':_0x2e03('0x11f'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')][_0x2e03('0x11c')](db['ReportAgentPreview'],{'as':_0x2e03('0x7d'),'foreignKey':_0x2e03('0x119')});db['User'][_0x2e03('0x11c')](db[_0x2e03('0x120')],{'as':'OpenchannelInteractions','foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')]['hasMany'](db[_0x2e03('0x121')],{'as':_0x2e03('0x122'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')][_0x2e03('0x11c')](db[_0x2e03('0x5a')],{'as':_0x2e03('0x123'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')]['hasMany'](db[_0x2e03('0x4f')],{'as':'FaxInteractions','foreignKey':_0x2e03('0x119')});db['User'][_0x2e03('0x11c')](db[_0x2e03('0x42')],{'as':_0x2e03('0x124'),'foreignKey':'UserId'});db['User'][_0x2e03('0x11c')](db[_0x2e03('0x125')],{'as':_0x2e03('0x126'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x13')][_0x2e03('0x11c')](db[_0x2e03('0x127')],{'as':'UserNotifications','foreignKey':_0x2e03('0x128')});db['User'][_0x2e03('0x11c')](db['CmHopper'],{'as':_0x2e03('0x129'),'foreignKey':_0x2e03('0x119'),'onDelete':'SET\x20NULL'});db['User']['belongsTo'](db['UserProfile'],{'as':_0x2e03('0x12a'),'foreignKey':'userProfileId'});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0x70')],{'as':'Groups','through':'chat_group_has_users'});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0x76')],{'as':_0x2e03('0x12c'),'through':_0x2e03('0x12d')});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x12e'),'through':_0x2e03('0x12f')});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0xed')],{'through':'user_has_teams'});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0x42')],{'as':_0x2e03('0x124'),'through':_0x2e03('0x130')});db['User']['belongsToMany'](db[_0x2e03('0x121')],{'as':_0x2e03('0x122'),'through':_0x2e03('0x131')});db['User'][_0x2e03('0x12b')](db[_0x2e03('0x4f')],{'as':_0x2e03('0x132'),'through':_0x2e03('0x133')});db[_0x2e03('0x13')][_0x2e03('0x12b')](db['SmsInteraction'],{'as':_0x2e03('0x123'),'through':_0x2e03('0x134')});db['User'][_0x2e03('0x12b')](db[_0x2e03('0x120')],{'as':'OpenchannelInteractions','through':_0x2e03('0x135')});db['User'][_0x2e03('0x12b')](db[_0x2e03('0x125')],{'as':_0x2e03('0x126'),'through':_0x2e03('0x136')});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0x1b')],{'as':_0x2e03('0x137'),'through':_0x2e03('0x2f'),'required':![]});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0xff')],{'as':_0x2e03('0x138'),'through':'UserVoicePrefix','required':![]});db[_0x2e03('0x13')][_0x2e03('0x12b')](db['MailQueue'],{'as':_0x2e03('0x139'),'through':_0x2e03('0x13a'),'required':![]});db['User']['belongsToMany'](db[_0x2e03('0x6e')],{'as':_0x2e03('0x13b'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0x52')],{'as':'FaxQueues','through':_0x2e03('0x33'),'required':![]});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0x13c')],{'as':'SmsQueues','through':_0x2e03('0x35'),'required':![]});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0x63')],{'as':_0x2e03('0x13d'),'through':'UserOpenchannelQueue','required':![]});db[_0x2e03('0x13')][_0x2e03('0x12b')](db['WhatsappQueue'],{'as':_0x2e03('0x13e'),'through':_0x2e03('0x38'),'required':![]});db[_0x2e03('0x13')]['belongsToMany'](db[_0x2e03('0xfe')],{'through':_0x2e03('0x12f')});db[_0x2e03('0x13')][_0x2e03('0x12b')](db['ChatWebsite'],{'as':_0x2e03('0x13f'),'through':'user_has_chat_websites'});db['User']['belongsToMany'](db[_0x2e03('0x140')],{'as':_0x2e03('0x141'),'through':'user_has_fax_accounts'});db[_0x2e03('0x13')][_0x2e03('0x12b')](db['MailAccount'],{'as':_0x2e03('0x142'),'through':_0x2e03('0x143')});db[_0x2e03('0x13')]['belongsToMany'](db[_0x2e03('0x144')],{'as':_0x2e03('0x145'),'through':'user_has_openchannel_accounts'});db[_0x2e03('0x13')][_0x2e03('0x12b')](db[_0x2e03('0x56')],{'as':_0x2e03('0x146'),'through':_0x2e03('0x147')});db[_0x2e03('0x13')]['belongsToMany'](db[_0x2e03('0x107')],{'as':_0x2e03('0x148'),'through':_0x2e03('0x149')});db[_0x2e03('0x16')][_0x2e03('0x11c')](db[_0x2e03('0x18')],{'as':_0x2e03('0x14a'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x14b')});db['VoiceContext'][_0x2e03('0x11c')](db[_0x2e03('0x18')],{'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x18')]['hasMany'](db[_0x2e03('0x18')],{'as':'Applications','onDelete':_0x2e03('0x11b')});db['VoiceMusicOnHold'][_0x2e03('0x12b')](db[_0x2e03('0x14c')],{'as':_0x2e03('0x14d'),'through':_0x2e03('0x14e')});db[_0x2e03('0x1b')][_0x2e03('0x11c')](db[_0x2e03('0x2e')],{'as':_0x2e03('0x14f'),'foreignKey':'VoiceQueueId'});db[_0x2e03('0x1b')][_0x2e03('0x11c')](db[_0x2e03('0x78')],{'as':_0x2e03('0x129'),'foreignKey':_0x2e03('0x150')});db[_0x2e03('0x1b')][_0x2e03('0x11c')](db[_0x2e03('0x11e')],{'as':'HopperFinals','foreignKey':_0x2e03('0x150')});db['VoiceQueue']['hasMany'](db[_0x2e03('0x7c')],{'as':_0x2e03('0x151'),'foreignKey':_0x2e03('0x150')});db['VoiceQueue'][_0x2e03('0x11c')](db[_0x2e03('0x7d')],{'as':_0x2e03('0x7d'),'foreignKey':_0x2e03('0x150')});db[_0x2e03('0x1b')][_0x2e03('0x11c')](db['CmHopperBlack'],{'as':_0x2e03('0x152'),'foreignKey':_0x2e03('0x150')});db['VoiceQueue'][_0x2e03('0x11c')](db[_0x2e03('0xdc')],{'as':'JscriptySessions','foreignKey':_0x2e03('0x150')});db['VoiceQueue'][_0x2e03('0x153')](db[_0x2e03('0x154')],{'as':_0x2e03('0x154'),'foreignKey':'TrunkId'});db[_0x2e03('0x1b')]['belongsTo'](db[_0x2e03('0x154')],{'as':'TrunkBackup','foreignKey':_0x2e03('0x155')});db[_0x2e03('0x1b')][_0x2e03('0x153')](db[_0x2e03('0x156')],{'as':'Interval','foreignKey':_0x2e03('0x157')});db[_0x2e03('0x1b')][_0x2e03('0x153')](db[_0x2e03('0x8b')],{'as':'mandatoryDispositionPause','foreignKey':_0x2e03('0x158')});db[_0x2e03('0x1b')][_0x2e03('0x12b')](db[_0x2e03('0xfe')],{'as':'Lists','through':_0x2e03('0x159')});db[_0x2e03('0x1b')]['belongsToMany'](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':'UserVoiceQueue'});db[_0x2e03('0x1b')][_0x2e03('0x12b')](db['Team'],{'as':_0x2e03('0x15b'),'through':_0x2e03('0x111')});db[_0x2e03('0x1b')]['belongsToMany'](db[_0x2e03('0xfe')],{'as':'BlackLists','through':_0x2e03('0x15c')});db[_0x2e03('0x1d')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'as':'User','foreignKey':_0x2e03('0x119')});db[_0x2e03('0x1f')][_0x2e03('0x153')](db['User'],{'as':_0x2e03('0x13'),'foreignKey':'UserId'});db['VoiceMail']['hasMany'](db[_0x2e03('0x22')],{'as':_0x2e03('0x15d'),'onDelete':'cascade','foreignKey':_0x2e03('0x15e'),'sourceKey':_0x2e03('0x15f')});db[_0x2e03('0x22')]['belongsTo'](db[_0x2e03('0x118')],{'foreignKey':_0x2e03('0x15e'),'targetKey':_0x2e03('0x15f')});db[_0x2e03('0x24')][_0x2e03('0x11c')](db[_0x2e03('0x29')],{'as':_0x2e03('0x160'),'foreignKey':_0x2e03('0x161'),'constraints':![]});db[_0x2e03('0x24')][_0x2e03('0x11c')](db[_0x2e03('0x27')],{'as':'AgentReports','foreignKey':_0x2e03('0x161'),'constraints':![]});db[_0x2e03('0x24')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'as':'User','foreignKey':_0x2e03('0x119')});db['VoiceCallReport'][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x3a')][_0x2e03('0x153')](db[_0x2e03('0x164')],{'as':_0x2e03('0x164'),'foreignKey':_0x2e03('0x165')});db['MailServerIn'][_0x2e03('0x153')](db[_0x2e03('0x10f')],{'as':_0x2e03('0x10f'),'foreignKey':_0x2e03('0x166'),'onDelete':_0x2e03('0x167')});db[_0x2e03('0x3b')][_0x2e03('0x153')](db[_0x2e03('0x164')],{'as':'MailAccount','foreignKey':_0x2e03('0x165')});db['MailServerOut']['belongsTo'](db['CloudProvider'],{'as':_0x2e03('0x10f'),'foreignKey':'CloudProviderId','onDelete':_0x2e03('0x167')});db[_0x2e03('0x164')][_0x2e03('0x117')](db['MailServerIn'],{'as':_0x2e03('0x168'),'onDelete':_0x2e03('0x11b')});db['MailAccount'][_0x2e03('0x117')](db[_0x2e03('0x3b')],{'as':_0x2e03('0x169'),'onDelete':'cascade'});db[_0x2e03('0x164')][_0x2e03('0x11c')](db['Disposition'],{'as':_0x2e03('0x16a'),'foreignKey':_0x2e03('0x165'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x164')][_0x2e03('0x11c')](db[_0x2e03('0x85')],{'as':_0x2e03('0x16b'),'foreignKey':_0x2e03('0x165')});db[_0x2e03('0x164')]['hasMany'](db[_0x2e03('0x44')],{'as':_0x2e03('0x15d'),'foreignKey':'MailAccountId'});db[_0x2e03('0x164')][_0x2e03('0x11c')](db[_0x2e03('0x42')],{'as':_0x2e03('0x16c')});db['MailAccount'][_0x2e03('0x11c')](db[_0x2e03('0x46')],{'as':_0x2e03('0x16d'),'foreignKey':'MailAccountId','onDelete':_0x2e03('0x11b')});db[_0x2e03('0x164')][_0x2e03('0x153')](db['CmList'],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f')});db[_0x2e03('0x164')]['belongsTo'](db['Template'],{'as':_0x2e03('0x170'),'foreignKey':_0x2e03('0x171')});db[_0x2e03('0x164')][_0x2e03('0x153')](db[_0x2e03('0x8b')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x2e03('0x164')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':'Agents','through':_0x2e03('0x143')});db[_0x2e03('0x3e')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':'Agents','through':_0x2e03('0x13a')});db[_0x2e03('0x3e')][_0x2e03('0x12b')](db[_0x2e03('0xed')],{'through':_0x2e03('0x172'),'as':'Teams'});db['MailInteraction'][_0x2e03('0x11c')](db[_0x2e03('0x44')],{'as':_0x2e03('0x15d'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x173')});db[_0x2e03('0x42')][_0x2e03('0x153')](db[_0x2e03('0x164')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x165')});db[_0x2e03('0x42')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x42')]['belongsTo'](db[_0x2e03('0x13')],{'as':_0x2e03('0x175'),'foreignKey':'UserId'});db['MailInteraction'][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x176'),'as':_0x2e03('0x177')});db[_0x2e03('0x42')]['belongsToMany'](db[_0x2e03('0x91')],{'through':_0x2e03('0x176'),'as':_0x2e03('0x178')});db[_0x2e03('0x42')]['belongsToMany'](db[_0x2e03('0x13')],{'as':_0x2e03('0x179'),'through':_0x2e03('0x130'),'foreignKey':_0x2e03('0x173')});db[_0x2e03('0x44')]['hasMany'](db[_0x2e03('0xf5')],{'as':_0x2e03('0x17a'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x44')]['belongsTo'](db[_0x2e03('0x13')],{'as':_0x2e03('0x13')});db['MailMessage'][_0x2e03('0x153')](db[_0x2e03('0x76')],{'onDelete':_0x2e03('0x11b'),'as':_0x2e03('0x162')});db[_0x2e03('0x44')]['belongsTo'](db[_0x2e03('0x42')],{'as':_0x2e03('0x17b'),'foreignKey':_0x2e03('0x173')});db[_0x2e03('0x44')][_0x2e03('0x153')](db[_0x2e03('0x164')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x165')});db[_0x2e03('0x44')][_0x2e03('0x153')](db[_0x2e03('0x65')],{'as':_0x2e03('0x65'),'foreignKey':_0x2e03('0x17c')});db[_0x2e03('0x44')][_0x2e03('0x153')](db[_0x2e03('0x17d')],{'as':_0x2e03('0x17d'),'foreignKey':'ChatOfflineMessageId'});db[_0x2e03('0x46')]['belongsTo'](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x167')});db['MailApplication'][_0x2e03('0x153')](db[_0x2e03('0x3e')],{'onDelete':_0x2e03('0x167')});db[_0x2e03('0x46')][_0x2e03('0x153')](db[_0x2e03('0x164')],{'onDelete':_0x2e03('0x167')});db[_0x2e03('0x46')]['belongsTo'](db[_0x2e03('0x156')],{'onDelete':_0x2e03('0x167'),'foreignKey':_0x2e03('0x157')});db['MailApplication'][_0x2e03('0x153')](db['Tag'],{'onDelete':_0x2e03('0x167'),'foreignKey':_0x2e03('0x17e')});db[_0x2e03('0x17f')]['belongsTo'](db[_0x2e03('0x164')],{});db[_0x2e03('0x17f')][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':'List','foreignKey':_0x2e03('0x16f')});db[_0x2e03('0x17f')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':'Contact','foreignKey':_0x2e03('0x163')});db[_0x2e03('0x17f')][_0x2e03('0x153')](db['MailInteraction'],{});db[_0x2e03('0x17f')]['belongsTo'](db[_0x2e03('0x44')],{});db[_0x2e03('0x17f')][_0x2e03('0x153')](db[_0x2e03('0x13')],{});db[_0x2e03('0x17f')][_0x2e03('0x153')](db['MailQueue'],{});db[_0x2e03('0x49')][_0x2e03('0x11c')](db[_0x2e03('0x4b')],{'as':_0x2e03('0x180'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x140')][_0x2e03('0x11c')](db['Disposition'],{'as':_0x2e03('0x16a'),'foreignKey':_0x2e03('0x181'),'onDelete':'cascade'});db['FaxAccount'][_0x2e03('0x11c')](db[_0x2e03('0x85')],{'as':_0x2e03('0x16b'),'foreignKey':_0x2e03('0x181')});db['FaxAccount'][_0x2e03('0x11c')](db[_0x2e03('0x4f')],{'as':'Interactions'});db[_0x2e03('0x140')][_0x2e03('0x11c')](db[_0x2e03('0x4e')],{'as':'Applications','foreignKey':'FaxAccountId','onDelete':_0x2e03('0x11b')});db[_0x2e03('0x140')][_0x2e03('0x11c')](db[_0x2e03('0x18')],{'as':_0x2e03('0x182'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x140')][_0x2e03('0x11c')](db['FaxMessage'],{'as':_0x2e03('0x15d')});db['FaxAccount']['belongsTo'](db[_0x2e03('0x154')],{'as':_0x2e03('0x154')});db['FaxAccount'][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f')});db[_0x2e03('0x140')][_0x2e03('0x153')](db[_0x2e03('0x8b')],{'as':_0x2e03('0x183'),'foreignKey':_0x2e03('0x158')});db[_0x2e03('0x140')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':_0x2e03('0x184')});db[_0x2e03('0x4e')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x167')});db['FaxApplication']['belongsTo'](db[_0x2e03('0x52')],{'onDelete':_0x2e03('0x167')});db['FaxApplication'][_0x2e03('0x153')](db[_0x2e03('0x140')],{'onDelete':_0x2e03('0x167')});db[_0x2e03('0x4e')][_0x2e03('0x153')](db[_0x2e03('0x91')],{'onDelete':_0x2e03('0x167'),'foreignKey':'TagId'});db[_0x2e03('0x4f')][_0x2e03('0x11c')](db[_0x2e03('0x185')],{'as':_0x2e03('0x15d'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x186')});db['FaxInteraction']['belongsTo'](db[_0x2e03('0x140')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x181')});db['FaxInteraction'][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x4f')][_0x2e03('0x153')](db['User'],{'as':'Owner','foreignKey':_0x2e03('0x119')});db[_0x2e03('0x4f')][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x187'),'as':_0x2e03('0x177')});db[_0x2e03('0x4f')][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x187'),'as':'ThroughTags'});db[_0x2e03('0x4f')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x179'),'through':_0x2e03('0x133'),'foreignKey':_0x2e03('0x186')});db[_0x2e03('0x185')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x11b'),'as':_0x2e03('0x13')});db[_0x2e03('0x185')][_0x2e03('0x153')](db[_0x2e03('0x4f')],{'as':_0x2e03('0x17b'),'foreignKey':'FaxInteractionId'});db[_0x2e03('0x185')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'onDelete':_0x2e03('0x11b'),'as':_0x2e03('0x162')});db[_0x2e03('0x185')]['belongsTo'](db['Attachment'],{'as':_0x2e03('0xf5'),'foreignKey':_0x2e03('0x188')});db[_0x2e03('0x185')][_0x2e03('0x153')](db[_0x2e03('0x140')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x181')});db[_0x2e03('0x52')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':_0x2e03('0x33')});db[_0x2e03('0x52')][_0x2e03('0x12b')](db[_0x2e03('0xed')],{'through':_0x2e03('0x189'),'as':_0x2e03('0x15b')});db[_0x2e03('0x54')][_0x2e03('0x153')](db[_0x2e03('0x140')],{});db[_0x2e03('0x54')][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f')});db[_0x2e03('0x54')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x54')][_0x2e03('0x153')](db['FaxInteraction'],{});db[_0x2e03('0x54')][_0x2e03('0x153')](db[_0x2e03('0x185')],{});db[_0x2e03('0x54')][_0x2e03('0x153')](db[_0x2e03('0x13')],{});db['FaxQueueReport'][_0x2e03('0x153')](db[_0x2e03('0x52')],{});db[_0x2e03('0x56')][_0x2e03('0x11c')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x2e03('0x18a'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x56')][_0x2e03('0x11c')](db['CannedAnswer'],{'as':_0x2e03('0x16b'),'foreignKey':'SmsAccountId'});db[_0x2e03('0x56')][_0x2e03('0x11c')](db[_0x2e03('0x5c')],{'as':_0x2e03('0x15d'),'foreignKey':_0x2e03('0x18a')});db[_0x2e03('0x56')][_0x2e03('0x11c')](db[_0x2e03('0x5a')],{'as':'Interactions'});db[_0x2e03('0x56')][_0x2e03('0x11c')](db[_0x2e03('0x58')],{'as':'Applications','foreignKey':_0x2e03('0x18a'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x56')][_0x2e03('0x153')](db['CmList'],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f')});db['SmsAccount']['belongsTo'](db[_0x2e03('0x8b')],{'as':'mandatoryDispositionPause','foreignKey':_0x2e03('0x158')});db['SmsAccount'][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':_0x2e03('0x147')});db['SmsApplication']['belongsTo'](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x167')});db[_0x2e03('0x58')][_0x2e03('0x153')](db[_0x2e03('0x13c')],{'onDelete':_0x2e03('0x167')});db['SmsApplication']['belongsTo'](db[_0x2e03('0x56')],{'onDelete':_0x2e03('0x167')});db[_0x2e03('0x58')][_0x2e03('0x153')](db['Interval'],{'onDelete':_0x2e03('0x167'),'foreignKey':_0x2e03('0x157')});db[_0x2e03('0x58')][_0x2e03('0x153')](db[_0x2e03('0x91')],{'onDelete':_0x2e03('0x167'),'foreignKey':_0x2e03('0x17e')});db[_0x2e03('0x5a')][_0x2e03('0x11c')](db['SmsMessage'],{'as':_0x2e03('0x15d'),'onDelete':'cascade','foreignKey':_0x2e03('0x18b')});db['SmsInteraction'][_0x2e03('0x153')](db[_0x2e03('0x56')],{'as':_0x2e03('0x174'),'foreignKey':'SmsAccountId'});db[_0x2e03('0x5a')]['belongsTo'](db['CmContact'],{'as':_0x2e03('0x162'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x5a')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'as':_0x2e03('0x175'),'foreignKey':'UserId'});db[_0x2e03('0x5a')][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x18c'),'as':_0x2e03('0x177')});db['SmsInteraction'][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x18c'),'as':'ThroughTags'});db[_0x2e03('0x5a')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x179'),'through':_0x2e03('0x134'),'foreignKey':_0x2e03('0x18b')});db[_0x2e03('0x5c')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'as':_0x2e03('0x13')});db['SmsMessage'][_0x2e03('0x153')](db[_0x2e03('0x76')],{'onDelete':_0x2e03('0x11b'),'as':_0x2e03('0x162')});db[_0x2e03('0x5c')][_0x2e03('0x153')](db[_0x2e03('0x5a')],{'onDelete':_0x2e03('0x11b'),'as':'Interaction','foreignKey':_0x2e03('0x18b')});db[_0x2e03('0x5c')][_0x2e03('0x153')](db['SmsAccount'],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x18a')});db[_0x2e03('0x13c')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':'Agents','through':_0x2e03('0x35'),'foreignKey':_0x2e03('0x18d')});db[_0x2e03('0x13c')][_0x2e03('0x12b')](db[_0x2e03('0xed')],{'through':_0x2e03('0x18e'),'as':_0x2e03('0x15b')});db[_0x2e03('0x144')][_0x2e03('0x11c')](db['Disposition'],{'as':_0x2e03('0x16a'),'foreignKey':_0x2e03('0x18f'),'onDelete':_0x2e03('0x11b')});db['OpenchannelAccount'][_0x2e03('0x11c')](db[_0x2e03('0x85')],{'as':_0x2e03('0x16b'),'foreignKey':_0x2e03('0x18f')});db['OpenchannelAccount'][_0x2e03('0x11c')](db[_0x2e03('0x120')],{'as':_0x2e03('0x16c'),'foreignKey':_0x2e03('0x18f')});db[_0x2e03('0x144')][_0x2e03('0x11c')](db[_0x2e03('0x62')],{'as':_0x2e03('0x15d'),'foreignKey':_0x2e03('0x18f')});db['OpenchannelAccount'][_0x2e03('0x11c')](db[_0x2e03('0x5f')],{'as':_0x2e03('0x16d'),'foreignKey':_0x2e03('0x18f'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x144')]['belongsTo'](db[_0x2e03('0xfe')],{'as':'List','foreignKey':_0x2e03('0x16f')});db[_0x2e03('0x144')]['belongsTo'](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x2e03('0x158')});db['OpenchannelAccount']['belongsToMany'](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':_0x2e03('0x190')});db['OpenchannelApplication'][_0x2e03('0x153')](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x167')});db['OpenchannelApplication'][_0x2e03('0x153')](db['OpenchannelQueue'],{'onDelete':_0x2e03('0x167'),'foreignKey':_0x2e03('0x191')});db[_0x2e03('0x5f')][_0x2e03('0x153')](db[_0x2e03('0x144')],{'onDelete':'restrict','foreignKey':_0x2e03('0x18f')});db['OpenchannelApplication']['belongsTo'](db[_0x2e03('0x156')],{'onDelete':_0x2e03('0x167'),'foreignKey':_0x2e03('0x157')});db['OpenchannelApplication'][_0x2e03('0x153')](db[_0x2e03('0x91')],{'onDelete':_0x2e03('0x167'),'foreignKey':_0x2e03('0x17e')});db[_0x2e03('0x120')][_0x2e03('0x11c')](db[_0x2e03('0x62')],{'as':_0x2e03('0x15d'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x192')});db['OpenchannelInteraction']['belongsTo'](db['OpenchannelAccount'],{'as':'Account','foreignKey':'OpenchannelAccountId'});db['OpenchannelInteraction'][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':'Contact','foreignKey':'ContactId'});db[_0x2e03('0x120')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'as':_0x2e03('0x175'),'foreignKey':_0x2e03('0x119')});db['OpenchannelInteraction'][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x193'),'as':_0x2e03('0x177')});db[_0x2e03('0x120')][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x193'),'as':_0x2e03('0x178')});db[_0x2e03('0x120')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x179'),'through':_0x2e03('0x135'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0x2e03('0x153')](db[_0x2e03('0x13')],{'onDelete':'cascade','as':_0x2e03('0x13')});db['OpenchannelMessage'][_0x2e03('0x153')](db[_0x2e03('0x76')],{'onDelete':'cascade','as':_0x2e03('0x162')});db[_0x2e03('0x62')]['belongsTo'](db[_0x2e03('0x120')],{'onDelete':_0x2e03('0x11b'),'as':'Interaction','foreignKey':_0x2e03('0x192')});db[_0x2e03('0x62')]['belongsTo'](db['Attachment'],{'as':_0x2e03('0xf5'),'foreignKey':_0x2e03('0x188')});db[_0x2e03('0x62')]['belongsTo'](db[_0x2e03('0x144')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x18f')});db['OpenchannelQueue'][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':_0x2e03('0x36'),'foreignKey':_0x2e03('0x191')});db['OpenchannelQueue'][_0x2e03('0x12b')](db[_0x2e03('0xed')],{'through':_0x2e03('0x194'),'as':_0x2e03('0x15b')});db[_0x2e03('0x65')][_0x2e03('0x11c')](db[_0x2e03('0x87')],{'as':'Dispositions','foreignKey':_0x2e03('0x17c'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x65')][_0x2e03('0x11c')](db['CannedAnswer'],{'as':_0x2e03('0x16b'),'foreignKey':_0x2e03('0x17c')});db[_0x2e03('0x65')][_0x2e03('0x11c')](db['ChatProactiveAction'],{'as':_0x2e03('0x195')});db[_0x2e03('0x65')][_0x2e03('0x11c')](db['ChatInteraction'],{'as':_0x2e03('0x16c')});db[_0x2e03('0x65')]['hasMany'](db['ChatApplication'],{'as':_0x2e03('0x16d'),'foreignKey':_0x2e03('0x17c'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x65')][_0x2e03('0x11c')](db['ChatMessage'],{'as':_0x2e03('0x15d')});db['ChatWebsite'][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f')});db['ChatWebsite'][_0x2e03('0x153')](db['Interval'],{'as':'Interval','foreignKey':_0x2e03('0x157')});db[_0x2e03('0x65')][_0x2e03('0x153')](db[_0x2e03('0x164')],{'as':_0x2e03('0x164'),'foreignKey':_0x2e03('0x165')});db[_0x2e03('0x65')][_0x2e03('0x153')](db[_0x2e03('0x8b')],{'as':'mandatoryDispositionPause','foreignKey':_0x2e03('0x158')});db[_0x2e03('0x65')]['belongsToMany'](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':'user_has_chat_websites'});db[_0x2e03('0x67')][_0x2e03('0x153')](db[_0x2e03('0x144')],{});db[_0x2e03('0x67')][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x16e'),'foreignKey':'ListId'});db['OpenchannelQueueReport']['belongsTo'](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x67')][_0x2e03('0x153')](db['OpenchannelInteraction'],{});db['OpenchannelQueueReport']['belongsTo'](db[_0x2e03('0x62')],{});db[_0x2e03('0x67')]['belongsTo'](db[_0x2e03('0x13')],{});db[_0x2e03('0x67')][_0x2e03('0x153')](db['OpenchannelQueue'],{});db['ChatApplication']['belongsTo'](db[_0x2e03('0x13')],{'as':_0x2e03('0x196'),'foreignKey':_0x2e03('0x119'),'onDelete':_0x2e03('0x167')});db[_0x2e03('0x69')][_0x2e03('0x153')](db[_0x2e03('0x6e')],{'as':_0x2e03('0x197'),'foreignKey':'ChatQueueId','onDelete':_0x2e03('0x167')});db['ChatApplication'][_0x2e03('0x153')](db[_0x2e03('0x65')],{'as':_0x2e03('0x198'),'foreignKey':_0x2e03('0x17c'),'onDelete':_0x2e03('0x167')});db[_0x2e03('0x69')][_0x2e03('0x153')](db[_0x2e03('0x91')],{'onDelete':_0x2e03('0x167'),'foreignKey':_0x2e03('0x17e')});db[_0x2e03('0x121')][_0x2e03('0x11c')](db['ChatMessage'],{'as':_0x2e03('0x15d'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x199')});db[_0x2e03('0x121')][_0x2e03('0x153')](db[_0x2e03('0x65')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x17c')});db[_0x2e03('0x121')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':_0x2e03('0x163')});db['ChatInteraction']['belongsTo'](db['User'],{'as':_0x2e03('0x175'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x121')][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x19a'),'as':_0x2e03('0x177')});db[_0x2e03('0x121')][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x19a'),'as':_0x2e03('0x178')});db[_0x2e03('0x121')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x179'),'through':_0x2e03('0x131'),'foreignKey':_0x2e03('0x199')});db[_0x2e03('0x6b')]['belongsTo'](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x11b'),'as':'User'});db[_0x2e03('0x6b')][_0x2e03('0x153')](db['CmContact'],{'onDelete':_0x2e03('0x11b'),'as':'Contact','foreignKey':'ContactId'});db['ChatMessage'][_0x2e03('0x153')](db[_0x2e03('0x121')],{'onDelete':_0x2e03('0x11b'),'as':'Interaction','foreignKey':_0x2e03('0x199')});db[_0x2e03('0x6b')][_0x2e03('0x153')](db['Attachment'],{'as':_0x2e03('0xf5'),'foreignKey':_0x2e03('0x188')});db[_0x2e03('0x6b')]['belongsTo'](db['ChatWebsite'],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x17c')});db[_0x2e03('0x17d')]['hasMany'](db[_0x2e03('0xf5')],{'as':'Attachments','foreignKey':_0x2e03('0x19b'),'onDelete':_0x2e03('0x11b'),'hooks':!![]});db[_0x2e03('0x17d')]['belongsTo'](db[_0x2e03('0x76')],{'onDelete':_0x2e03('0x11b'),'as':_0x2e03('0x162'),'foreignKey':'ContactId'});db[_0x2e03('0x17d')][_0x2e03('0x153')](db['ChatWebsite'],{'as':'Account','foreignKey':_0x2e03('0x17c')});db[_0x2e03('0x6e')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':_0x2e03('0x31'),'hooks':!![]});db[_0x2e03('0x6e')]['belongsToMany'](db[_0x2e03('0xed')],{'through':_0x2e03('0x19c'),'as':_0x2e03('0x15b')});db[_0x2e03('0x70')][_0x2e03('0x11c')](db['ChatInternalMessage'],{'as':_0x2e03('0x15d'),'foreignKey':_0x2e03('0x19d'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x70')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x14f'),'through':_0x2e03('0x19e')});db['ChatProactiveAction']['belongsTo'](db[_0x2e03('0x65')],{'as':'Website','foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x2e03('0x11c')](db[_0x2e03('0x76')],{'as':_0x2e03('0x12c'),'foreignKey':_0x2e03('0x19f')});db[_0x2e03('0x76')][_0x2e03('0x11c')](db[_0x2e03('0x95')],{'as':_0x2e03('0x1a0'),'foreignKey':_0x2e03('0x1a1')});db[_0x2e03('0x76')][_0x2e03('0x11c')](db['CmHopper'],{'as':_0x2e03('0x129'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x76')][_0x2e03('0x11c')](db['CmHopperFinal'],{'as':_0x2e03('0x1a2'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x76')][_0x2e03('0x11c')](db['CmHopperHistory'],{'as':_0x2e03('0x151'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0x76')]['hasMany'](db[_0x2e03('0x7d')],{'as':'ReportAgentPreview','foreignKey':_0x2e03('0x163')});db[_0x2e03('0x76')][_0x2e03('0x11c')](db[_0x2e03('0xdc')],{'as':_0x2e03('0x1a3'),'foreignKey':'ContactId'});db[_0x2e03('0x76')]['hasMany'](db[_0x2e03('0x120')],{'as':'OpenchannelInteractions','foreignKey':_0x2e03('0x163'),'onDelete':_0x2e03('0x167')});db[_0x2e03('0x76')][_0x2e03('0x11c')](db[_0x2e03('0x121')],{'as':_0x2e03('0x122'),'foreignKey':_0x2e03('0x163'),'onDelete':_0x2e03('0x167')});db['CmContact'][_0x2e03('0x11c')](db[_0x2e03('0x5a')],{'as':_0x2e03('0x123'),'foreignKey':'ContactId','onDelete':'restrict'});db[_0x2e03('0x76')][_0x2e03('0x11c')](db[_0x2e03('0x4f')],{'as':_0x2e03('0x132'),'foreignKey':_0x2e03('0x163'),'onDelete':_0x2e03('0x167')});db[_0x2e03('0x76')][_0x2e03('0x11c')](db['MailInteraction'],{'as':'MailInteractions','foreignKey':'ContactId','onDelete':'restrict'});db[_0x2e03('0x76')][_0x2e03('0x153')](db[_0x2e03('0x74')],{'as':_0x2e03('0x1a4'),'foreignKey':'CompanyId'});db[_0x2e03('0x76')]['belongsTo'](db['CmList'],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x76')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':'Users','through':_0x2e03('0x12d')});db['CmContact']['belongsToMany'](db[_0x2e03('0x91')],{'as':_0x2e03('0x177'),'through':'cm_contact_has_tags'});db['CmContact'][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x1a5'),'as':_0x2e03('0x178')});db[_0x2e03('0x78')]['hasMany'](db[_0x2e03('0x1a6')],{'as':_0x2e03('0x1a7'),'foreignKey':'CmHopperId'});db['CmHopper'][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':'Contact','foreignKey':_0x2e03('0x163'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x78')][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f'),'onDelete':'cascade'});db[_0x2e03('0x78')][_0x2e03('0x153')](db['User'],{'as':_0x2e03('0x196'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x78')][_0x2e03('0x153')](db[_0x2e03('0x1b')],{'as':_0x2e03('0x197'),'foreignKey':_0x2e03('0x150'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x78')][_0x2e03('0x153')](db[_0x2e03('0xf1')],{'as':_0x2e03('0xf1'),'foreignKey':'CampaignId','onDelete':_0x2e03('0x11b')});db[_0x2e03('0x78')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'as':_0x2e03('0x175'),'foreignKey':_0x2e03('0x1a8')});db['CmHopperBlack'][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':'Contact','foreignKey':_0x2e03('0x163'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x79')]['belongsTo'](db[_0x2e03('0xfe')],{'as':'List','foreignKey':_0x2e03('0x16f'),'onDelete':_0x2e03('0x11b')});db['CmHopperBlack']['belongsTo'](db[_0x2e03('0x1b')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x2e03('0x79')][_0x2e03('0x153')](db['Campaign'],{'as':_0x2e03('0xf1'),'foreignKey':_0x2e03('0x1a9'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x83')][_0x2e03('0x11c')](db[_0x2e03('0x89')],{'as':{'plural':_0x2e03('0x1aa'),'singular':'OneAll'},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x2e03('0x83')][_0x2e03('0x11c')](db[_0x2e03('0x89')],{'as':{'plural':_0x2e03('0x1ab'),'singular':_0x2e03('0x1ac')},'foreignKey':_0x2e03('0x1ad'),'onDelete':_0x2e03('0x11b'),'hooks':!![]});db[_0x2e03('0x83')][_0x2e03('0x11c')](db[_0x2e03('0x81')],{'as':_0x2e03('0x1ae'),'foreignKey':_0x2e03('0x1af'),'onDelete':_0x2e03('0x11b'),'hooks':!![]});db[_0x2e03('0x87')][_0x2e03('0x11c')](db[_0x2e03('0x87')],{'as':'Dispositions','foreignKey':_0x2e03('0x1b0'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x156')][_0x2e03('0x11c')](db['Interval'],{'as':_0x2e03('0x1b1'),'foreignKey':_0x2e03('0x157'),'onDelete':_0x2e03('0x11b'),'hooks':!![],'required':![]});db[_0x2e03('0x156')][_0x2e03('0x11c')](db['VoiceExtension'],{'as':_0x2e03('0x1b2'),'foreignKey':_0x2e03('0x157'),'onDelete':'restrict'});db[_0x2e03('0x156')][_0x2e03('0x11c')](db[_0x2e03('0x46')],{'as':_0x2e03('0x1b3'),'foreignKey':_0x2e03('0x157')});db[_0x2e03('0x156')][_0x2e03('0x11c')](db[_0x2e03('0x69')],{'as':_0x2e03('0x1b4'),'foreignKey':_0x2e03('0x157')});db['Interval'][_0x2e03('0x11c')](db[_0x2e03('0x4e')],{'as':_0x2e03('0x1b5'),'foreignKey':'IntervalId'});db[_0x2e03('0x156')][_0x2e03('0x11c')](db['SmsApplication'],{'as':_0x2e03('0x1b6'),'foreignKey':_0x2e03('0x157')});db['Schedule'][_0x2e03('0x153')](db[_0x2e03('0x164')],{});db[_0x2e03('0x1b7')][_0x2e03('0x153')](db[_0x2e03('0x1b8')],{'foreignKey':_0x2e03('0x1b9')});db[_0x2e03('0x1b7')][_0x2e03('0x153')](db[_0x2e03('0x9f')],{'foreignKey':'CustomReportId'});db[_0x2e03('0x14c')]['belongsToMany'](db[_0x2e03('0x19')],{'as':_0x2e03('0x1ba'),'through':_0x2e03('0x14e'),'onDelete':_0x2e03('0x167')});db[_0x2e03('0x91')][_0x2e03('0x12b')](db['CmContact'],{'through':'cm_contact_has_tags'});db[_0x2e03('0x91')]['belongsToMany'](db['ChatInteraction'],{'through':_0x2e03('0x19a')});db[_0x2e03('0x91')][_0x2e03('0x12b')](db[_0x2e03('0x42')],{'through':_0x2e03('0x176')});db[_0x2e03('0x91')][_0x2e03('0x12b')](db[_0x2e03('0x5a')],{'through':_0x2e03('0x18c')});db[_0x2e03('0x91')]['belongsToMany'](db['FaxInteraction'],{'through':_0x2e03('0x187')});db['Tag']['belongsToMany'](db['OpenchannelInteraction'],{'through':_0x2e03('0x193')});db[_0x2e03('0x91')][_0x2e03('0x12b')](db[_0x2e03('0x125')],{'through':_0x2e03('0x1bb')});db['CmContactHasItem']['belongsTo'](db[_0x2e03('0x93')],{'as':_0x2e03('0x1bc'),'foreignKey':_0x2e03('0x1bd')});db[_0x2e03('0x1a6')][_0x2e03('0x153')](db[_0x2e03('0x78')],{'as':'Hopper','foreignKey':_0x2e03('0x1be')});db[_0x2e03('0x95')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':'Contact','foreignKey':_0x2e03('0x1a1')});db[_0x2e03('0x98')][_0x2e03('0x11c')](db['Condition'],{'as':{'plural':_0x2e03('0x1bf'),'singular':_0x2e03('0x1c0')},'foreignKey':_0x2e03('0x1c1'),'onDelete':'cascade','hooks':!![]});db['Trigger'][_0x2e03('0x11c')](db[_0x2e03('0x89')],{'as':{'plural':'AnyConditions','singular':_0x2e03('0x1c2')},'foreignKey':'TriggerAnyId','onDelete':_0x2e03('0x11b'),'hooks':!![]});db[_0x2e03('0x98')][_0x2e03('0x11c')](db[_0x2e03('0x81')],{'as':_0x2e03('0x1ae'),'foreignKey':_0x2e03('0x1c3'),'onDelete':_0x2e03('0x11b'),'hooks':!![]});db[_0x2e03('0x9f')][_0x2e03('0x11c')](db['AnalyticFieldReport'],{'as':_0x2e03('0x1c4'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1c5'),'hooks':!![]});db[_0x2e03('0x1b8')][_0x2e03('0x11c')](db['AnalyticFieldReport'],{'as':_0x2e03('0x1c4'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x2e03('0xa3')][_0x2e03('0x11c')](db['AnalyticFieldReport'],{'as':_0x2e03('0x1c4'),'onDelete':_0x2e03('0x11b'),'foreignKey':'MetricId'});db[_0x2e03('0xa5')][_0x2e03('0x153')](db[_0x2e03('0xa3')],{'foreignKey':'MetricId'});db[_0x2e03('0xa8')][_0x2e03('0x11c')](db['SalesforceConfiguration'],{'as':_0x2e03('0x1c6'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xa9')][_0x2e03('0x11c')](db[_0x2e03('0xaa')],{'as':_0x2e03('0x1c8'),'onDelete':'cascade','foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xa9')]['hasMany'](db['SalesforceField'],{'as':_0x2e03('0x1ca'),'onDelete':'cascade','foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0xa9')][_0x2e03('0x11c')](db['SalesforceField'],{'as':_0x2e03('0x1c4'),'onDelete':'cascade','foreignKey':_0x2e03('0x1cc')});db['SalesforceConfiguration'][_0x2e03('0x153')](db[_0x2e03('0xa8')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xaa')][_0x2e03('0x11c')](db['SalesforceField'],{'as':_0x2e03('0x1cd'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xaa')][_0x2e03('0x11c')](db[_0x2e03('0xaa')],{'as':'Description','foreignKey':_0x2e03('0x1cb')});db['SalesforceField'][_0x2e03('0x11c')](db[_0x2e03('0xaa')],{'as':_0x2e03('0x1ce'),'foreignKey':_0x2e03('0x1cc')});db['SalesforceField'][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':_0x2e03('0x9a'),'foreignKey':_0x2e03('0x1cf')});db[_0x2e03('0xab')][_0x2e03('0x11c')](db['SugarcrmConfiguration'],{'as':_0x2e03('0x1c6'),'onDelete':'cascade','foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xad')][_0x2e03('0x11c')](db[_0x2e03('0x1d0')],{'as':_0x2e03('0x1c8'),'onDelete':'cascade','foreignKey':'SubjectId'});db['SugarcrmConfiguration'][_0x2e03('0x11c')](db[_0x2e03('0x1d0')],{'as':_0x2e03('0x1ca'),'onDelete':_0x2e03('0x11b'),'foreignKey':'DescriptionId'});db['SugarcrmConfiguration'][_0x2e03('0x11c')](db[_0x2e03('0x1d0')],{'as':'Fields','onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1cc')});db['SugarcrmConfiguration'][_0x2e03('0x153')](db[_0x2e03('0xab')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0x1d0')][_0x2e03('0x11c')](db[_0x2e03('0x1d0')],{'as':_0x2e03('0x1cd'),'foreignKey':_0x2e03('0x1c9')});db['SugarcrmField'][_0x2e03('0x11c')](db['SugarcrmField'],{'as':_0x2e03('0x1d1'),'foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0x1d0')][_0x2e03('0x11c')](db['SugarcrmField'],{'as':_0x2e03('0x1ce'),'foreignKey':'FieldId'});db[_0x2e03('0x1d0')]['belongsTo'](db[_0x2e03('0x9a')],{'as':_0x2e03('0x9a'),'foreignKey':'VariableId'});db[_0x2e03('0xaf')][_0x2e03('0x11c')](db['DeskConfiguration'],{'as':_0x2e03('0x1c6'),'onDelete':_0x2e03('0x11b'),'foreignKey':'AccountId'});db['DeskConfiguration'][_0x2e03('0x11c')](db['DeskField'],{'as':_0x2e03('0x1c8'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xb0')][_0x2e03('0x11c')](db['DeskField'],{'as':_0x2e03('0x1ca'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1cb')});db['DeskConfiguration'][_0x2e03('0x11c')](db['DeskField'],{'as':'Fields','onDelete':'cascade','foreignKey':_0x2e03('0x1cc')});db[_0x2e03('0xb0')][_0x2e03('0x153')](db[_0x2e03('0xaf')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xb0')][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x1d2')});db[_0x2e03('0x1d3')][_0x2e03('0x11c')](db[_0x2e03('0x1d3')],{'as':'Subject','foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0x1d3')][_0x2e03('0x11c')](db['DeskField'],{'as':_0x2e03('0x1d1'),'foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0x1d3')][_0x2e03('0x11c')](db[_0x2e03('0x1d3')],{'as':_0x2e03('0x1ce'),'foreignKey':_0x2e03('0x1cc')});db['DeskField'][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':_0x2e03('0x9a'),'foreignKey':_0x2e03('0x1cf')});db[_0x2e03('0xb2')]['hasMany'](db[_0x2e03('0xb4')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xb4')][_0x2e03('0x11c')](db['ZohoField'],{'as':_0x2e03('0x1c8'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x2e03('0xb4')]['hasMany'](db['ZohoField'],{'as':'Descriptions','onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0xb4')]['hasMany'](db[_0x2e03('0xb5')],{'as':_0x2e03('0x1c4'),'onDelete':'cascade','foreignKey':_0x2e03('0x1cc')});db['ZohoConfiguration'][_0x2e03('0x153')](db[_0x2e03('0xb2')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xb5')][_0x2e03('0x11c')](db[_0x2e03('0xb5')],{'as':_0x2e03('0x1cd'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xb5')][_0x2e03('0x11c')](db[_0x2e03('0xb5')],{'as':_0x2e03('0x1d1'),'foreignKey':_0x2e03('0x1cb')});db['ZohoField'][_0x2e03('0x11c')](db[_0x2e03('0xb5')],{'as':_0x2e03('0x1ce'),'foreignKey':'FieldId'});db[_0x2e03('0xb5')][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':'Variable','foreignKey':_0x2e03('0x1cf')});db['ZendeskAccount']['hasMany'](db[_0x2e03('0x1d4')],{'as':_0x2e03('0x1c6'),'onDelete':'cascade','foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0x1d4')]['hasMany'](db['ZendeskField'],{'as':_0x2e03('0x1c8'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0x1d4')][_0x2e03('0x11c')](db[_0x2e03('0xba')],{'as':_0x2e03('0x1ca'),'foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0x1d4')][_0x2e03('0x11c')](db[_0x2e03('0xba')],{'as':_0x2e03('0x1c4'),'foreignKey':'FieldId'});db[_0x2e03('0x1d4')]['belongsTo'](db[_0x2e03('0xb7')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1c7')});db['ZendeskConfiguration'][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x1d5')});db[_0x2e03('0xba')][_0x2e03('0x11c')](db[_0x2e03('0xba')],{'as':'Subject','foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xba')][_0x2e03('0x11c')](db[_0x2e03('0xba')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x2e03('0xba')][_0x2e03('0x11c')](db[_0x2e03('0xba')],{'as':_0x2e03('0x1ce'),'foreignKey':'FieldId'});db[_0x2e03('0xba')][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':_0x2e03('0x9a'),'foreignKey':'VariableId'});db[_0x2e03('0xbc')]['hasMany'](db[_0x2e03('0xbe')],{'as':_0x2e03('0x1c6'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xbe')]['hasMany'](db[_0x2e03('0xbf')],{'as':_0x2e03('0x1c8'),'onDelete':_0x2e03('0x11b'),'foreignKey':'SubjectId'});db[_0x2e03('0xbe')][_0x2e03('0x11c')](db[_0x2e03('0xbf')],{'as':_0x2e03('0x1ca'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0xbe')][_0x2e03('0x11c')](db['FreshdeskField'],{'as':_0x2e03('0x1c4'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1cc')});db['FreshdeskConfiguration'][_0x2e03('0x153')](db['FreshdeskAccount'],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1c7')});db['FreshdeskConfiguration'][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x2e03('0xbf')][_0x2e03('0x11c')](db[_0x2e03('0xbf')],{'as':_0x2e03('0x1cd'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xbf')]['hasMany'](db['FreshdeskField'],{'as':_0x2e03('0x1d1'),'foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0xbf')][_0x2e03('0x11c')](db['FreshdeskField'],{'as':_0x2e03('0x1ce'),'foreignKey':'FieldId'});db['FreshdeskField'][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':_0x2e03('0x9a'),'foreignKey':'VariableId'});db[_0x2e03('0xc1')][_0x2e03('0x11c')](db['VtigerConfiguration'],{'as':_0x2e03('0x1c6'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xc2')]['hasMany'](db[_0x2e03('0x1d6')],{'as':_0x2e03('0x1c8'),'foreignKey':'SubjectId'});db[_0x2e03('0xc2')]['hasMany'](db[_0x2e03('0x1d6')],{'as':'Descriptions','foreignKey':_0x2e03('0x1cb')});db['VtigerConfiguration']['hasMany'](db[_0x2e03('0x1d6')],{'as':_0x2e03('0x1c4'),'foreignKey':'FieldId'});db[_0x2e03('0xc2')][_0x2e03('0x153')](db[_0x2e03('0xc1')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0x1d6')][_0x2e03('0x11c')](db[_0x2e03('0x1d6')],{'as':_0x2e03('0x1cd'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0x1d6')][_0x2e03('0x11c')](db[_0x2e03('0x1d6')],{'as':_0x2e03('0x1d1'),'foreignKey':_0x2e03('0x1cb')});db['VtigerField'][_0x2e03('0x11c')](db['VtigerField'],{'as':_0x2e03('0x1ce'),'foreignKey':'FieldId'});db[_0x2e03('0x1d6')][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':'Variable','foreignKey':'VariableId'});db[_0x2e03('0xc5')][_0x2e03('0x11c')](db[_0x2e03('0x1d7')],{'as':_0x2e03('0x1c6'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0x1d7')][_0x2e03('0x11c')](db[_0x2e03('0xc7')],{'as':_0x2e03('0x1c8'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0x1d7')][_0x2e03('0x11c')](db[_0x2e03('0xc7')],{'as':'Descriptions','foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0x1d7')]['hasMany'](db[_0x2e03('0xc7')],{'as':_0x2e03('0x1c4'),'foreignKey':_0x2e03('0x1cc')});db[_0x2e03('0x1d7')][_0x2e03('0x153')](db[_0x2e03('0xc5')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xc7')][_0x2e03('0x11c')](db[_0x2e03('0xc7')],{'as':_0x2e03('0x1cd'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xc7')][_0x2e03('0x11c')](db['ServicenowField'],{'as':_0x2e03('0x1d1'),'foreignKey':_0x2e03('0x1cb')});db['ServicenowField'][_0x2e03('0x11c')](db[_0x2e03('0xc7')],{'as':_0x2e03('0x1ce'),'foreignKey':_0x2e03('0x1cc')});db[_0x2e03('0xc7')][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':_0x2e03('0x9a'),'foreignKey':'VariableId'});db[_0x2e03('0xc9')]['hasMany'](db[_0x2e03('0xcb')],{'as':_0x2e03('0x1c6'),'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1c7')});db[_0x2e03('0xc9')][_0x2e03('0x153')](db['CloudProvider'],{'as':'CloudProvider','foreignKey':_0x2e03('0x166')});db[_0x2e03('0xcb')][_0x2e03('0x11c')](db[_0x2e03('0x1d8')],{'as':'Subjects','onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xcb')][_0x2e03('0x11c')](db[_0x2e03('0x1d8')],{'as':_0x2e03('0x1ca'),'onDelete':_0x2e03('0x11b'),'foreignKey':'DescriptionId'});db[_0x2e03('0xcb')][_0x2e03('0x11c')](db[_0x2e03('0x1d8')],{'as':_0x2e03('0x1c4'),'onDelete':'cascade','foreignKey':_0x2e03('0x1cc')});db[_0x2e03('0xcb')][_0x2e03('0x153')](db[_0x2e03('0xc9')],{'as':'Account','foreignKey':_0x2e03('0x1c7')});db['Dynamics365Field']['hasMany'](db[_0x2e03('0x1d8')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x2e03('0x1d8')][_0x2e03('0x11c')](db['Dynamics365Field'],{'as':'Description','foreignKey':'DescriptionId'});db['Dynamics365Field'][_0x2e03('0x11c')](db['Dynamics365Field'],{'as':'Field','foreignKey':_0x2e03('0x1cc')});db[_0x2e03('0x1d8')][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':_0x2e03('0x9a'),'foreignKey':_0x2e03('0x1cf')});db[_0x2e03('0xcd')][_0x2e03('0x11c')](db[_0x2e03('0xcf')],{'as':_0x2e03('0x1c6'),'onDelete':_0x2e03('0x11b'),'foreignKey':'AccountId'});db['FreshsalesConfiguration'][_0x2e03('0x11c')](db[_0x2e03('0x1d9')],{'as':_0x2e03('0x1c8'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0xcf')][_0x2e03('0x11c')](db[_0x2e03('0x1d9')],{'as':_0x2e03('0x1ca'),'foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0xcf')][_0x2e03('0x11c')](db[_0x2e03('0x1d9')],{'as':_0x2e03('0x1c4'),'foreignKey':_0x2e03('0x1cc')});db['FreshsalesConfiguration'][_0x2e03('0x153')](db['FreshsalesAccount'],{'as':_0x2e03('0x174'),'foreignKey':'AccountId'});db['FreshsalesField'][_0x2e03('0x11c')](db[_0x2e03('0x1d9')],{'as':_0x2e03('0x1cd'),'foreignKey':_0x2e03('0x1c9')});db[_0x2e03('0x1d9')][_0x2e03('0x11c')](db[_0x2e03('0x1d9')],{'as':_0x2e03('0x1d1'),'foreignKey':_0x2e03('0x1cb')});db[_0x2e03('0x1d9')]['hasMany'](db[_0x2e03('0x1d9')],{'as':_0x2e03('0x1ce'),'foreignKey':_0x2e03('0x1cc')});db[_0x2e03('0x1d9')][_0x2e03('0x153')](db[_0x2e03('0x9a')],{'as':_0x2e03('0x9a'),'foreignKey':_0x2e03('0x1cf')});db[_0x2e03('0xd4')]['belongsTo'](db[_0x2e03('0x65')],{});db['ChatQueueReport'][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f')});db[_0x2e03('0xd4')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':'ContactId'});db['ChatQueueReport'][_0x2e03('0x153')](db[_0x2e03('0x121')],{});db[_0x2e03('0xd4')][_0x2e03('0x153')](db[_0x2e03('0x6b')],{});db['ChatQueueReport'][_0x2e03('0x153')](db[_0x2e03('0x13')],{});db[_0x2e03('0xd4')]['belongsTo'](db[_0x2e03('0x6e')],{});db[_0x2e03('0xd6')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1da')});db[_0x2e03('0xd6')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x1db')});db[_0x2e03('0xdc')][_0x2e03('0x11c')](db[_0x2e03('0xda')],{'foreignKey':_0x2e03('0x1dc'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0xdc')][_0x2e03('0x11c')](db[_0x2e03('0xd8')],{'foreignKey':_0x2e03('0x1dc'),'onDelete':_0x2e03('0x11b')});db['SmsQueueReport'][_0x2e03('0x153')](db[_0x2e03('0x56')],{});db['SmsQueueReport'][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x16e'),'foreignKey':'ListId'});db[_0x2e03('0xde')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':_0x2e03('0x163')});db[_0x2e03('0xde')][_0x2e03('0x153')](db[_0x2e03('0x5a')],{});db[_0x2e03('0xde')][_0x2e03('0x153')](db[_0x2e03('0x5c')],{});db[_0x2e03('0xde')][_0x2e03('0x153')](db[_0x2e03('0x13')],{});db[_0x2e03('0xde')][_0x2e03('0x153')](db[_0x2e03('0x13c')],{});db[_0x2e03('0xe2')][_0x2e03('0x11c')](db[_0x2e03('0xdc')],{'foreignKey':_0x2e03('0x1dd')});db[_0x2e03('0xe2')][_0x2e03('0x11c')](db[_0x2e03('0xda')],{'foreignKey':_0x2e03('0x1dd')});db[_0x2e03('0xe2')]['hasMany'](db[_0x2e03('0xd8')],{'foreignKey':'ProjectId'});db[_0x2e03('0xed')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':'Agents','through':_0x2e03('0x1de')});db['Team'][_0x2e03('0x12b')](db[_0x2e03('0x1b')],{'through':_0x2e03('0x111'),'as':_0x2e03('0x137')});db[_0x2e03('0xed')][_0x2e03('0x12b')](db['MailQueue'],{'through':'team_has_mail_queues','as':_0x2e03('0x139')});db['Team'][_0x2e03('0x12b')](db[_0x2e03('0x6e')],{'through':_0x2e03('0x19c'),'as':'ChatQueues'});db[_0x2e03('0xed')][_0x2e03('0x12b')](db[_0x2e03('0x52')],{'through':_0x2e03('0x189'),'as':_0x2e03('0x1df')});db[_0x2e03('0xed')][_0x2e03('0x12b')](db['SmsQueue'],{'through':_0x2e03('0x18e'),'as':'SmsQueues'});db[_0x2e03('0xed')][_0x2e03('0x12b')](db[_0x2e03('0x63')],{'through':_0x2e03('0x194'),'as':'OpenchannelQueues'});db[_0x2e03('0xed')][_0x2e03('0x12b')](db['WhatsappQueue'],{'through':_0x2e03('0x1e0'),'as':_0x2e03('0x13e')});db['Team'][_0x2e03('0x12b')](db[_0x2e03('0xff')],{'through':_0x2e03('0x1e1'),'as':'VoicePrefixes'});db[_0x2e03('0xf1')][_0x2e03('0x11c')](db[_0x2e03('0x78')],{'as':_0x2e03('0x129'),'foreignKey':_0x2e03('0x1a9')});db[_0x2e03('0xf1')][_0x2e03('0x11c')](db[_0x2e03('0x11e')],{'as':_0x2e03('0x1a2'),'foreignKey':_0x2e03('0x1a9')});db[_0x2e03('0xf1')][_0x2e03('0x11c')](db[_0x2e03('0x7c')],{'as':'HopperHistories','foreignKey':_0x2e03('0x1a9')});db[_0x2e03('0xf1')][_0x2e03('0x11c')](db[_0x2e03('0x79')],{'as':_0x2e03('0x152'),'foreignKey':_0x2e03('0x1a9')});db[_0x2e03('0xf1')][_0x2e03('0x153')](db[_0x2e03('0x154')],{'as':_0x2e03('0x154'),'foreignKey':_0x2e03('0x1e2')});db[_0x2e03('0xf1')][_0x2e03('0x153')](db[_0x2e03('0x154')],{'as':'TrunkBackup','foreignKey':'TrunkBackupId'});db[_0x2e03('0xf1')][_0x2e03('0x153')](db[_0x2e03('0x156')],{'as':_0x2e03('0x156'),'foreignKey':_0x2e03('0x157')});db['Campaign'][_0x2e03('0x153')](db[_0x2e03('0xe7')],{'as':_0x2e03('0xe7'),'foreignKey':_0x2e03('0x1e3')});db[_0x2e03('0xf1')][_0x2e03('0x12b')](db['CmList'],{'as':_0x2e03('0x12e'),'through':_0x2e03('0x1e4')});db['Campaign'][_0x2e03('0x12b')](db[_0x2e03('0xfe')],{'as':'BlackLists','through':_0x2e03('0x1e5')});db[_0x2e03('0xf5')][_0x2e03('0x153')](db[_0x2e03('0x17d')],{'as':_0x2e03('0x17d'),'foreignKey':_0x2e03('0x19b')});db[_0x2e03('0xf7')][_0x2e03('0x153')](db[_0x2e03('0x44')],{});db[_0x2e03('0xf7')][_0x2e03('0x153')](db[_0x2e03('0x42')],{});db[_0x2e03('0xf7')][_0x2e03('0x153')](db['MailAccount'],{'foreignKey':_0x2e03('0x1e6'),'as':_0x2e03('0x1e7')});db[_0x2e03('0xf7')][_0x2e03('0x153')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db['MailTransferReport'][_0x2e03('0x153')](db[_0x2e03('0x13')],{'foreignKey':_0x2e03('0x1e8'),'as':_0x2e03('0x1e9')});db[_0x2e03('0xf7')][_0x2e03('0x153')](db[_0x2e03('0x3e')],{'foreignKey':_0x2e03('0x1ea'),'as':_0x2e03('0x1eb')});db[_0x2e03('0xf7')][_0x2e03('0x153')](db['MailAccount'],{'foreignKey':'ToMailAccountId','as':_0x2e03('0x1ec')});db['ChatTransferReport'][_0x2e03('0x153')](db[_0x2e03('0x6b')],{});db[_0x2e03('0xf8')][_0x2e03('0x153')](db[_0x2e03('0x121')],{});db[_0x2e03('0xf8')]['belongsTo'](db[_0x2e03('0x65')],{'foreignKey':_0x2e03('0x1ed'),'as':'FromAccount'});db[_0x2e03('0xf8')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'foreignKey':_0x2e03('0x1ee'),'as':'FromAgent'});db['ChatTransferReport'][_0x2e03('0x153')](db['User'],{'foreignKey':_0x2e03('0x1e8'),'as':_0x2e03('0x1e9')});db[_0x2e03('0xf8')][_0x2e03('0x153')](db[_0x2e03('0x6e')],{'foreignKey':_0x2e03('0x1ef'),'as':'ToQueue'});db['ChatTransferReport'][_0x2e03('0x153')](db[_0x2e03('0x65')],{'foreignKey':'ToChatWebsiteId','as':_0x2e03('0x1ec')});db[_0x2e03('0xf9')][_0x2e03('0x153')](db[_0x2e03('0x185')],{});db['FaxTransferReport'][_0x2e03('0x153')](db[_0x2e03('0x4f')],{});db['FaxTransferReport'][_0x2e03('0x153')](db[_0x2e03('0x140')],{'foreignKey':_0x2e03('0x1f0'),'as':_0x2e03('0x1e7')});db[_0x2e03('0xf9')]['belongsTo'](db[_0x2e03('0x13')],{'foreignKey':_0x2e03('0x1ee'),'as':_0x2e03('0x1f1')});db[_0x2e03('0xf9')][_0x2e03('0x153')](db['User'],{'foreignKey':_0x2e03('0x1e8'),'as':_0x2e03('0x1e9')});db[_0x2e03('0xf9')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x2e03('0x1f2'),'as':_0x2e03('0x1eb')});db[_0x2e03('0xf9')][_0x2e03('0x153')](db[_0x2e03('0x140')],{'foreignKey':_0x2e03('0x1f3'),'as':_0x2e03('0x1ec')});db[_0x2e03('0xfa')][_0x2e03('0x153')](db[_0x2e03('0x62')],{});db[_0x2e03('0xfa')][_0x2e03('0x153')](db['OpenchannelInteraction'],{});db[_0x2e03('0xfa')][_0x2e03('0x153')](db[_0x2e03('0x144')],{'foreignKey':_0x2e03('0x1f4'),'as':_0x2e03('0x1e7')});db[_0x2e03('0xfa')]['belongsTo'](db[_0x2e03('0x13')],{'foreignKey':_0x2e03('0x1ee'),'as':_0x2e03('0x1f1')});db['OpenchannelTransferReport'][_0x2e03('0x153')](db[_0x2e03('0x13')],{'foreignKey':_0x2e03('0x1e8'),'as':'ToAgent'});db[_0x2e03('0xfa')][_0x2e03('0x153')](db[_0x2e03('0x63')],{'foreignKey':'ToOpenchannelQueueId','as':_0x2e03('0x1eb')});db[_0x2e03('0xfa')][_0x2e03('0x153')](db[_0x2e03('0x144')],{'foreignKey':_0x2e03('0x1f5'),'as':_0x2e03('0x1ec')});db['SmsTransferReport'][_0x2e03('0x153')](db[_0x2e03('0x5c')],{});db[_0x2e03('0xfc')]['belongsTo'](db[_0x2e03('0x5a')],{});db[_0x2e03('0xfc')][_0x2e03('0x153')](db['SmsAccount'],{'foreignKey':_0x2e03('0x1f6'),'as':'FromAccount'});db[_0x2e03('0xfc')]['belongsTo'](db['User'],{'foreignKey':_0x2e03('0x1ee'),'as':_0x2e03('0x1f1')});db['SmsTransferReport'][_0x2e03('0x153')](db['User'],{'foreignKey':_0x2e03('0x1e8'),'as':'ToAgent'});db['SmsTransferReport'][_0x2e03('0x153')](db['SmsQueue'],{'foreignKey':_0x2e03('0x1f7'),'as':'ToQueue'});db[_0x2e03('0xfc')][_0x2e03('0x153')](db[_0x2e03('0x56')],{'foreignKey':_0x2e03('0x1f8'),'as':_0x2e03('0x1ec')});db['CmList'][_0x2e03('0x11c')](db[_0x2e03('0x87')],{'as':_0x2e03('0x16a'),'foreignKey':_0x2e03('0x16f'),'onDelete':'cascade'});db['CmList'][_0x2e03('0x11c')](db[_0x2e03('0x7f')],{'as':_0x2e03('0x1f9'),'foreignKey':'ListId'});db[_0x2e03('0xfe')]['hasMany'](db[_0x2e03('0x76')],{'as':'Contacts','onDelete':'cascade','foreignKey':_0x2e03('0x16f')});db[_0x2e03('0xfe')][_0x2e03('0x11c')](db[_0x2e03('0x11e')],{'as':_0x2e03('0x1a2'),'foreignKey':_0x2e03('0x16f')});db[_0x2e03('0xfe')][_0x2e03('0x11c')](db[_0x2e03('0x7c')],{'as':'HopperHistory','foreignKey':_0x2e03('0x16f')});db[_0x2e03('0xfe')]['hasMany'](db['ReportAgentPreview'],{'as':_0x2e03('0x7d'),'foreignKey':_0x2e03('0x16f')});db['CmList'][_0x2e03('0x12b')](db['VoiceQueue'],{'as':_0x2e03('0x1fa'),'through':_0x2e03('0x159')});db[_0x2e03('0xfe')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':_0x2e03('0x12f')});db[_0x2e03('0xff')][_0x2e03('0x11c')](db[_0x2e03('0x18')],{'as':_0x2e03('0x1b2'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0xff')][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':'Agents','through':_0x2e03('0x113')});db[_0x2e03('0xff')]['belongsToMany'](db['Team'],{'through':_0x2e03('0x1e1'),'as':_0x2e03('0x15b')});db[_0x2e03('0x12a')][_0x2e03('0x11c')](db['User'],{'as':'Users','foreignKey':_0x2e03('0x1fb')});db[_0x2e03('0x12a')][_0x2e03('0x11c')](db[_0x2e03('0x102')],{'as':'UserProfileSections','foreignKey':'userProfileId','onDelete':_0x2e03('0x11b')});db['UserProfileSection'][_0x2e03('0x11c')](db[_0x2e03('0x104')],{'as':_0x2e03('0x1fc'),'foreignKey':_0x2e03('0x1fd'),'onDelete':_0x2e03('0x11b')});db['WhatsappAccount'][_0x2e03('0x11c')](db[_0x2e03('0x87')],{'as':'Dispositions','foreignKey':_0x2e03('0x1fe'),'onDelete':_0x2e03('0x11b')});db['WhatsappAccount']['hasMany'](db[_0x2e03('0x85')],{'as':'Answers','foreignKey':_0x2e03('0x1fe')});db[_0x2e03('0x107')][_0x2e03('0x11c')](db[_0x2e03('0x1ff')],{'as':_0x2e03('0x15d'),'foreignKey':_0x2e03('0x1fe')});db[_0x2e03('0x107')][_0x2e03('0x11c')](db[_0x2e03('0x125')],{'as':_0x2e03('0x16c')});db['WhatsappAccount'][_0x2e03('0x11c')](db['WhatsappApplication'],{'as':'Applications','foreignKey':_0x2e03('0x1fe'),'onDelete':_0x2e03('0x11b')});db[_0x2e03('0x107')][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':_0x2e03('0x16e'),'foreignKey':_0x2e03('0x16f')});db[_0x2e03('0x107')][_0x2e03('0x153')](db['Pause'],{'as':_0x2e03('0x183'),'foreignKey':_0x2e03('0x158')});db[_0x2e03('0x107')][_0x2e03('0x12b')](db['User'],{'as':_0x2e03('0x15a'),'through':'user_has_whatsapp_accounts'});db[_0x2e03('0x109')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'onDelete':_0x2e03('0x167')});db[_0x2e03('0x109')][_0x2e03('0x153')](db['WhatsappQueue'],{'onDelete':_0x2e03('0x167')});db['WhatsappApplication'][_0x2e03('0x153')](db[_0x2e03('0x107')],{'onDelete':_0x2e03('0x167')});db[_0x2e03('0x109')][_0x2e03('0x153')](db[_0x2e03('0x156')],{'onDelete':_0x2e03('0x167'),'foreignKey':'IntervalId'});db['WhatsappApplication'][_0x2e03('0x153')](db[_0x2e03('0x91')],{'onDelete':'restrict','foreignKey':_0x2e03('0x17e')});db['WhatsappInteraction']['hasMany'](db[_0x2e03('0x1ff')],{'as':'Messages','onDelete':_0x2e03('0x11b'),'foreignKey':_0x2e03('0x200')});db[_0x2e03('0x125')]['belongsTo'](db[_0x2e03('0x107')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1fe')});db[_0x2e03('0x125')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':'Contact','foreignKey':_0x2e03('0x163')});db[_0x2e03('0x125')][_0x2e03('0x153')](db['User'],{'as':_0x2e03('0x175'),'foreignKey':_0x2e03('0x119')});db[_0x2e03('0x125')][_0x2e03('0x12b')](db[_0x2e03('0x91')],{'through':_0x2e03('0x1bb'),'as':_0x2e03('0x177')});db['WhatsappInteraction']['belongsToMany'](db[_0x2e03('0x91')],{'through':_0x2e03('0x1bb'),'as':_0x2e03('0x178')});db['WhatsappInteraction'][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x179'),'through':_0x2e03('0x136'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x2e03('0x153')](db[_0x2e03('0x13')],{'as':'User'});db[_0x2e03('0x1ff')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'onDelete':'cascade','as':_0x2e03('0x162')});db[_0x2e03('0x1ff')][_0x2e03('0x153')](db[_0x2e03('0x125')],{'onDelete':_0x2e03('0x11b'),'as':_0x2e03('0x17b'),'foreignKey':'WhatsappInteractionId'});db[_0x2e03('0x1ff')][_0x2e03('0x153')](db[_0x2e03('0x107')],{'as':_0x2e03('0x174'),'foreignKey':_0x2e03('0x1fe')});db['WhatsappQueueReport'][_0x2e03('0x153')](db[_0x2e03('0x107')],{});db[_0x2e03('0x10d')][_0x2e03('0x153')](db[_0x2e03('0xfe')],{'as':'List','foreignKey':_0x2e03('0x16f')});db[_0x2e03('0x10d')][_0x2e03('0x153')](db[_0x2e03('0x76')],{'as':_0x2e03('0x162'),'foreignKey':'ContactId'});db[_0x2e03('0x10d')][_0x2e03('0x153')](db[_0x2e03('0x125')],{});db[_0x2e03('0x10d')][_0x2e03('0x153')](db[_0x2e03('0x201')],{});db[_0x2e03('0x10d')][_0x2e03('0x153')](db[_0x2e03('0x1ff')],{});db['WhatsappQueueReport']['belongsTo'](db[_0x2e03('0x13')],{});db[_0x2e03('0x202')][_0x2e03('0x153')](db[_0x2e03('0x1ff')],{});db[_0x2e03('0x202')][_0x2e03('0x153')](db[_0x2e03('0x125')],{});db[_0x2e03('0x202')][_0x2e03('0x153')](db[_0x2e03('0x107')],{'foreignKey':_0x2e03('0x203'),'as':_0x2e03('0x1e7')});db[_0x2e03('0x202')][_0x2e03('0x153')](db[_0x2e03('0x107')],{'foreignKey':'ToWhatsappAccountId','as':_0x2e03('0x1ec')});db[_0x2e03('0x202')][_0x2e03('0x153')](db[_0x2e03('0x201')],{'foreignKey':'ToQueueId','as':_0x2e03('0x1eb')});db[_0x2e03('0x202')]['belongsTo'](db['User'],{'foreignKey':_0x2e03('0x1ee'),'as':_0x2e03('0x1f1')});db[_0x2e03('0x202')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'foreignKey':_0x2e03('0x1e8'),'as':_0x2e03('0x1e9')});db['WhatsappQueue'][_0x2e03('0x12b')](db[_0x2e03('0x13')],{'as':_0x2e03('0x15a'),'through':_0x2e03('0x38'),'foreignKey':_0x2e03('0x204')});db[_0x2e03('0x201')]['belongsToMany'](db[_0x2e03('0xed')],{'through':_0x2e03('0x1e0'),'as':_0x2e03('0x15b')});db[_0x2e03('0x115')][_0x2e03('0x153')](db[_0x2e03('0x13')],{'as':_0x2e03('0x205'),'foreignKey':_0x2e03('0x119'),'onDelete':_0x2e03('0x11b'),'hooks':!![]});db[_0x2e03('0x10f')]['hasOne'](db[_0x2e03('0xc9')],{'as':_0x2e03('0xc9'),'onDelete':'restrict'});db[_0x2e03('0x10f')][_0x2e03('0x117')](db['MailServerIn'],{'as':'Imap','onDelete':_0x2e03('0x167')});db[_0x2e03('0x10f')][_0x2e03('0x117')](db[_0x2e03('0x3b')],{'as':_0x2e03('0x169'),'onDelete':_0x2e03('0x167')});module[_0x2e03('0x206')]={'db':db,'dbH':dbH};
\ No newline at end of file
index cefae6d..f56dd28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76bc=['./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','./api/campaign','/api/migrations','./api/migration','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/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/whatsappApplication','/api/whatsapp/interactions','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappQueueReport','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','./api/authLocal','/api/auth/google','./api/authGoogle','./api/authActiveDirectory','./api/jira','/api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','./api/webbar','/api/logs','/apidoc','static','join','root','/www','/demo','/snippet','snippet','3.5.0','/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','path','express','./errors','./config/environment','./utils/client-side-logger','default','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','./api/voiceAgentReport','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','/api/mail/reports/queue','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatOfflineMessage','/api/chat/queues','./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/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','./api/cmCustomField','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/pause','./api/cdr','./api/voiceQueuesLog','/api/schedules','/api/sounds','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','./api/integration','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','./api/intVtigerAccount','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports'];(function(_0x333cb9,_0x30d8e2){var _0x488551=function(_0x583284){while(--_0x583284){_0x333cb9['push'](_0x333cb9['shift']());}};_0x488551(++_0x30d8e2);}(_0x76bc,0x17f));var _0xc76b=function(_0xe3e0af,_0x4564ed){_0xe3e0af=_0xe3e0af-0x0;var _0x4828e9=_0x76bc[_0xe3e0af];return _0x4828e9;};'use strict';var path=require(_0xc76b('0x0'));var express=require(_0xc76b('0x1'));var errors=require(_0xc76b('0x2'));var config=require(_0xc76b('0x3'));var setupLoggers=require(_0xc76b('0x4'))['setupLoggers'];var clientSideLogs=require('./api/client-side-logs');exports[_0xc76b('0x5')]=function(_0x161ef3){return setupLoggers(_0x161ef3)[_0xc76b('0x6')](function(){_0x161ef3[_0xc76b('0x7')](_0xc76b('0x8'),require(_0xc76b('0x9')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xa'),require(_0xc76b('0xb')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xc'),require(_0xc76b('0xd')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xe'),require(_0xc76b('0xf')));_0x161ef3[_0xc76b('0x7')]('/api/voice/mohs',require(_0xc76b('0x10')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x11'),require(_0xc76b('0x12')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x13'),require('./api/voiceRecording'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x14'),require(_0xc76b('0x15')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x16'),require(_0xc76b('0x17')));_0x161ef3[_0xc76b('0x7')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x18'),require(_0xc76b('0x19')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x1a'),require('./api/voiceDialReport'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x1b'),require(_0xc76b('0x1c')));_0x161ef3['use']('/api/voice/queues/reports',require(_0xc76b('0x1d')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x1e'),require(_0xc76b('0x1f')));_0x161ef3[_0xc76b('0x7')]('/api/trunks',require('./api/trunk'));_0x161ef3['use'](_0xc76b('0x20'),require(_0xc76b('0x21')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x22'),require(_0xc76b('0x23')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x24'),require(_0xc76b('0x25')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x26'),require('./api/mailQueue'));_0x161ef3[_0xc76b('0x7')]('/api/mail/substatuses',require(_0xc76b('0x27')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x28'),require(_0xc76b('0x29')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x2a'),require(_0xc76b('0x2b')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x2c'),require('./api/mailApplication'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x2d'),require('./api/mailQueueReport'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x2e'),require(_0xc76b('0x2f')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x30'),require(_0xc76b('0x31')));_0x161ef3['use']('/api/fax/accounts',require(_0xc76b('0x32')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x33'),require(_0xc76b('0x34')));_0x161ef3['use'](_0xc76b('0x35'),require(_0xc76b('0x36')));_0x161ef3[_0xc76b('0x7')]('/api/fax/messages',require(_0xc76b('0x37')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x38'),require(_0xc76b('0x39')));_0x161ef3['use'](_0xc76b('0x3a'),require(_0xc76b('0x3b')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x3c'),require(_0xc76b('0x3d')));_0x161ef3['use'](_0xc76b('0x3e'),require('./api/smsApplication'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x3f'),require(_0xc76b('0x40')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x41'),require(_0xc76b('0x42')));_0x161ef3['use']('/api/sms/queues',require(_0xc76b('0x43')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x44'),require(_0xc76b('0x45')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x46'),require(_0xc76b('0x47')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x48'),require(_0xc76b('0x49')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x4a'),require(_0xc76b('0x4b')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x4c'),require('./api/openchannelQueue'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x4d'),require(_0xc76b('0x4e')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x4f'),require(_0xc76b('0x50')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x51'),require(_0xc76b('0x52')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x53'),require(_0xc76b('0x54')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x55'),require('./api/chatMessage'));_0x161ef3[_0xc76b('0x7')]('/api/chat/offline_messages',require(_0xc76b('0x56')));_0x161ef3['use'](_0xc76b('0x57'),require(_0xc76b('0x58')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x59'),require(_0xc76b('0x5a')));_0x161ef3['use'](_0xc76b('0x5b'),require(_0xc76b('0x5c')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x5d'),require(_0xc76b('0x5e')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x5f'),require(_0xc76b('0x60')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x61'),require('./api/cmHopper'));_0x161ef3[_0xc76b('0x7')]('/api/cm/hopper_black',require(_0xc76b('0x62')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x63'),require(_0xc76b('0x64')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x65'),require(_0xc76b('0x66')));_0x161ef3[_0xc76b('0x7')]('/api/cm/custom_fields',require(_0xc76b('0x67')));_0x161ef3['use']('/api/actions',require(_0xc76b('0x68')));_0x161ef3['use'](_0xc76b('0x69'),require(_0xc76b('0x6a')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x6b'),require(_0xc76b('0x6c')));_0x161ef3['use'](_0xc76b('0x6d'),require(_0xc76b('0x6e')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x6f'),require(_0xc76b('0x70')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x71'),require('./api/interval'));_0x161ef3[_0xc76b('0x7')]('/api/pauses',require(_0xc76b('0x72')));_0x161ef3[_0xc76b('0x7')]('/api/cdr',require(_0xc76b('0x73')));_0x161ef3[_0xc76b('0x7')]('/api/voiceQueuesLog',require(_0xc76b('0x74')));_0x161ef3['use'](_0xc76b('0x75'),require('./api/schedule'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x76'),require('./api/sound'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x77'),require(_0xc76b('0x78')));_0x161ef3['use'](_0xc76b('0x79'),require(_0xc76b('0x7a')));_0x161ef3[_0xc76b('0x7')]('/api/cm_contact_has_items',require(_0xc76b('0x7b')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x7c'),require(_0xc76b('0x7d')));_0x161ef3['use'](_0xc76b('0x7e'),require(_0xc76b('0x7f')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x80'),require(_0xc76b('0x81')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x82'),require(_0xc76b('0x83')));_0x161ef3[_0xc76b('0x7')]('/api/integrations',require(_0xc76b('0x84')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x85'),require('./api/integrationReport'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x86'),require(_0xc76b('0x87')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x88'),require(_0xc76b('0x89')));_0x161ef3['use'](_0xc76b('0x8a'),require(_0xc76b('0x8b')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x8c'),require('./api/analyticMetric'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x8d'),require(_0xc76b('0x8e')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x8f'),require(_0xc76b('0x90')));_0x161ef3['use']('/api/integrations/salesforce/accounts',require(_0xc76b('0x91')));_0x161ef3['use'](_0xc76b('0x92'),require(_0xc76b('0x93')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x94'),require('./api/intSalesforceField'));_0x161ef3[_0xc76b('0x7')]('/api/integrations/sugarcrm/accounts',require(_0xc76b('0x95')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x96'),require('./api/intSugarcrmConfiguration'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x97'),require(_0xc76b('0x98')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x99'),require(_0xc76b('0x9a')));_0x161ef3[_0xc76b('0x7')]('/api/integrations/desk/configurations',require(_0xc76b('0x9b')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x9c'),require(_0xc76b('0x9d')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x9e'),require('./api/intZohoAccount'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x9f'),require(_0xc76b('0xa0')));_0x161ef3['use'](_0xc76b('0xa1'),require(_0xc76b('0xa2')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xa3'),require(_0xc76b('0xa4')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xa5'),require(_0xc76b('0xa6')));_0x161ef3['use'](_0xc76b('0xa7'),require(_0xc76b('0xa8')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xa9'),require(_0xc76b('0xaa')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xab'),require(_0xc76b('0xac')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xad'),require(_0xc76b('0xae')));_0x161ef3[_0xc76b('0x7')]('/api/integrations/vtiger/accounts',require(_0xc76b('0xaf')));_0x161ef3[_0xc76b('0x7')]('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x161ef3[_0xc76b('0x7')]('/api/integrations/vtiger/fields',require(_0xc76b('0xb0')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xb1'),require(_0xc76b('0xb2')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xb3'),require(_0xc76b('0xb4')));_0x161ef3[_0xc76b('0x7')]('/api/integrations/servicenow/fields',require(_0xc76b('0xb5')));_0x161ef3['use'](_0xc76b('0xb6'),require('./api/intDynamics365Account'));_0x161ef3['use']('/api/integrations/dynamics365/configurations',require(_0xc76b('0xb7')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xb8'),require(_0xc76b('0xb9')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xba'),require(_0xc76b('0xbb')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xbc'),require('./api/intFreshsalesConfiguration'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xbd'),require('./api/intFreshsalesField'));_0x161ef3[_0xc76b('0x7')]('/api/networks',require(_0xc76b('0xbe')));_0x161ef3['use'](_0xc76b('0xbf'),require('./api/chatQueueReport'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xc0'),require(_0xc76b('0xc1')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xc2'),require(_0xc76b('0xc3')));_0x161ef3['use']('/api/jscripty/questions/reports',require(_0xc76b('0xc4')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xc5'),require(_0xc76b('0xc6')));_0x161ef3[_0xc76b('0x7')]('/api/sms/reports/queue',require('./api/smsQueueReport'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xc7'),require('./api/squareReport'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xc8'),require(_0xc76b('0xc9')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xca'),require(_0xc76b('0xcb')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xcc'),require(_0xc76b('0xcd')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xce'),require(_0xc76b('0xcf')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xd0'),require(_0xc76b('0xd1')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xd2'),require('./api/squareRecording'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xd3'),require(_0xc76b('0xd4')));_0x161ef3['use'](_0xc76b('0xd5'),require(_0xc76b('0xd6')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xd7'),require(_0xc76b('0xd8')));_0x161ef3[_0xc76b('0x7')]('/api/campaigns',require(_0xc76b('0xd9')));_0x161ef3['use'](_0xc76b('0xda'),require(_0xc76b('0xdb')));_0x161ef3[_0xc76b('0x7')]('/api/attachments',require(_0xc76b('0xdc')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xdd'),require(_0xc76b('0xde')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xdf'),require('./api/mailTransferReport'));_0x161ef3['use'](_0xc76b('0xe0'),require(_0xc76b('0xe1')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xe2'),require('./api/faxTransferReport'));_0x161ef3['use'](_0xc76b('0xe3'),require(_0xc76b('0xe4')));_0x161ef3['use'](_0xc76b('0xe5'),require(_0xc76b('0xe6')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xe7'),require(_0xc76b('0xe8')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xe9'),require(_0xc76b('0xea')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xeb'),require(_0xc76b('0xec')));_0x161ef3['use'](_0xc76b('0xed'),require(_0xc76b('0xee')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xef'),require(_0xc76b('0xf0')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xf1'),require(_0xc76b('0xf2')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xf3'),require(_0xc76b('0xf4')));_0x161ef3['use'](_0xc76b('0xf5'),require(_0xc76b('0xf6')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xf7'),require('./api/whatsappInteraction'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xf8'),require('./api/whatsappMessage'));_0x161ef3['use'](_0xc76b('0xf9'),require(_0xc76b('0xfa')));_0x161ef3['use']('/api/whatsapp/reports/transfer',require(_0xc76b('0xfb')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xfc'),require('./api/whatsappQueue'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xfd'),require(_0xc76b('0xfe')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0xff'),require(_0xc76b('0x100')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x101'),require(_0xc76b('0x102')));_0x161ef3[_0xc76b('0x7')]('/api/auth/local',require(_0xc76b('0x103')));_0x161ef3['use'](_0xc76b('0x104'),require(_0xc76b('0x105')));_0x161ef3[_0xc76b('0x7')]('/api/auth/activedirectory',require(_0xc76b('0x106')));_0x161ef3['use']('/api/jira',require(_0xc76b('0x107')));_0x161ef3['use'](_0xc76b('0x108'),require('./api/rpc'));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x109'),require(_0xc76b('0x10a')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x10b'),require(_0xc76b('0x10c')));_0x161ef3['use'](_0xc76b('0x10d'),require(_0xc76b('0x10e')));_0x161ef3[_0xc76b('0x7')]('/api/webbar',require(_0xc76b('0x10f')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x110'),clientSideLogs);_0x161ef3[_0xc76b('0x7')](_0xc76b('0x111'),express[_0xc76b('0x112')](path[_0xc76b('0x113')](config[_0xc76b('0x114')],_0xc76b('0x111'))));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x115'),express[_0xc76b('0x112')](path[_0xc76b('0x113')](config[_0xc76b('0x114')],'/www')));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x116'),express[_0xc76b('0x112')](path[_0xc76b('0x113')](config[_0xc76b('0x114')],_0xc76b('0x116'))));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x117'),express['static'](path[_0xc76b('0x113')](config['root'],_0xc76b('0x118'),_0xc76b('0x119'))));_0x161ef3[_0xc76b('0x7')](_0xc76b('0x11a'),express[_0xc76b('0x112')](path[_0xc76b('0x113')](config[_0xc76b('0x114')],'/server/files/plugins')));_0x161ef3[_0xc76b('0x11b')](_0xc76b('0x11c'))[_0xc76b('0x11d')](errors[0x194]);_0x161ef3['route']('/*')[_0xc76b('0x11d')](function(_0x81b4ba,_0x475534){_0x475534[_0xc76b('0x11e')](path[_0xc76b('0x11f')](_0x161ef3[_0xc76b('0x11d')]('appPath')+_0xc76b('0x120')));});return _0x161ef3;});};
\ No newline at end of file
+var _0x7aa3=['./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','/api/dispositions','./api/disposition','/api/pauses','./api/pause','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','/api/analytics/field_reports','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','/api/integrations/desk/configurations','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','./api/squareProject','/api/square/recordings','./api/squareRecording','./api/squareMessage','/api/teams','./api/team','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','/api/rpc','./api/rpc','/api/version','./api/version','./api/system','/api/pm2','./api/webbar','/apidoc','static','join','root','/www','/demo','/snippet','snippet','3.8.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','./errors','./utils/client-side-logger','setupLoggers','./api/client-side-logs','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','./api/voiceQueue','./api/voiceRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','/api/voice/calls/reports','/api/voice/dials/reports','/api/voice/agents/reports','./api/voiceAgentReport','./api/voiceQueueReport','/api/members/reports','./api/trunk','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailApplication','/api/mail/reports/queue','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','/api/sms/queues','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','./api/openchannelQueueReport','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts'];(function(_0xce4830,_0x11218d){var _0x50c1d3=function(_0x21f78d){while(--_0x21f78d){_0xce4830['push'](_0xce4830['shift']());}};_0x50c1d3(++_0x11218d);}(_0x7aa3,0x1c9));var _0x37aa=function(_0x249e26,_0x2d953e){_0x249e26=_0x249e26-0x0;var _0x2a45c4=_0x7aa3[_0x249e26];return _0x2a45c4;};'use strict';var path=require(_0x37aa('0x0'));var express=require('express');var errors=require(_0x37aa('0x1'));var config=require('./config/environment');var setupLoggers=require(_0x37aa('0x2'))[_0x37aa('0x3')];var clientSideLogs=require(_0x37aa('0x4'));exports['default']=function(_0x5d0cd9){return setupLoggers(_0x5d0cd9)[_0x37aa('0x5')](function(){_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x7'),require(_0x37aa('0x8')));_0x5d0cd9['use'](_0x37aa('0x9'),require('./api/voiceChanSpy'));_0x5d0cd9[_0x37aa('0x6')]('/api/voice/contexts',require(_0x37aa('0xa')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xb'),require(_0x37aa('0xc')));_0x5d0cd9[_0x37aa('0x6')]('/api/voice/mohs',require(_0x37aa('0xd')));_0x5d0cd9['use']('/api/voice/queues',require(_0x37aa('0xe')));_0x5d0cd9[_0x37aa('0x6')]('/api/voice/recordings',require(_0x37aa('0xf')));_0x5d0cd9[_0x37aa('0x6')]('/api/screen/recordings',require('./api/screenRecording'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x10'),require(_0x37aa('0x11')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x12'),require('./api/voiceMailMessage'));_0x5d0cd9['use'](_0x37aa('0x13'),require('./api/voiceCallReport'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x14'),require('./api/voiceDialReport'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x15'),require(_0x37aa('0x16')));_0x5d0cd9[_0x37aa('0x6')]('/api/voice/queues/reports',require(_0x37aa('0x17')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x18'),require('./api/memberReport'));_0x5d0cd9[_0x37aa('0x6')]('/api/trunks',require(_0x37aa('0x19')));_0x5d0cd9['use']('/api/voice/transfers/reports',require('./api/voiceTransferReport'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x1a'),require(_0x37aa('0x1b')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x1c'),require(_0x37aa('0x1d')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x1e'),require(_0x37aa('0x1f')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x20'),require(_0x37aa('0x21')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x22'),require(_0x37aa('0x23')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x24'),require('./api/mailMessage'));_0x5d0cd9['use']('/api/mail/applications',require(_0x37aa('0x25')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x26'),require('./api/mailQueueReport'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x27'),require(_0x37aa('0x28')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x29'),require(_0x37aa('0x2a')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x2b'),require(_0x37aa('0x2c')));_0x5d0cd9[_0x37aa('0x6')]('/api/fax/applications',require(_0x37aa('0x2d')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x2e'),require(_0x37aa('0x2f')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x30'),require(_0x37aa('0x31')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x32'),require(_0x37aa('0x33')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x34'),require('./api/faxQueueReport'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x35'),require(_0x37aa('0x36')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x37'),require(_0x37aa('0x38')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x39'),require(_0x37aa('0x3a')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x3b'),require('./api/smsMessage'));_0x5d0cd9['use'](_0x37aa('0x3c'),require('./api/smsQueue'));_0x5d0cd9[_0x37aa('0x6')]('/api/openchannel/accounts',require(_0x37aa('0x3d')));_0x5d0cd9['use'](_0x37aa('0x3e'),require(_0x37aa('0x3f')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x40'),require('./api/openchannelInteraction'));_0x5d0cd9[_0x37aa('0x6')]('/api/openchannel/messages',require(_0x37aa('0x41')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x42'),require(_0x37aa('0x43')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x44'),require('./api/chatWebsite'));_0x5d0cd9['use'](_0x37aa('0x45'),require(_0x37aa('0x46')));_0x5d0cd9[_0x37aa('0x6')]('/api/chat/applications',require(_0x37aa('0x47')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x48'),require(_0x37aa('0x49')));_0x5d0cd9[_0x37aa('0x6')]('/api/chat/messages',require(_0x37aa('0x4a')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x4b'),require('./api/chatOfflineMessage'));_0x5d0cd9['use'](_0x37aa('0x4c'),require(_0x37aa('0x4d')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x4e'),require('./api/chatGroup'));_0x5d0cd9['use']('/api/chat/proactive_actions',require(_0x37aa('0x4f')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x50'),require(_0x37aa('0x51')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x52'),require(_0x37aa('0x53')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x54'),require(_0x37aa('0x55')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x56'),require('./api/cmHopperBlack'));_0x5d0cd9['use'](_0x37aa('0x57'),require(_0x37aa('0x58')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x59'),require(_0x37aa('0x5a')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x5b'),require('./api/cmCustomField'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x5c'),require(_0x37aa('0x5d')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x5e'),require(_0x37aa('0x5f')));_0x5d0cd9['use']('/api/canned_answers',require('./api/cannedAnswer'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x60'),require(_0x37aa('0x61')));_0x5d0cd9[_0x37aa('0x6')]('/api/conditions',require('./api/condition'));_0x5d0cd9[_0x37aa('0x6')]('/api/intervals',require('./api/interval'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x62'),require(_0x37aa('0x63')));_0x5d0cd9[_0x37aa('0x6')]('/api/cdr',require('./api/cdr'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x64'),require(_0x37aa('0x65')));_0x5d0cd9['use'](_0x37aa('0x66'),require(_0x37aa('0x67')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x68'),require('./api/sound'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x69'),require(_0x37aa('0x6a')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x6b'),require(_0x37aa('0x6c')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x6d'),require(_0x37aa('0x6e')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x6f'),require('./api/cmHopperAdditionalPhone'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x70'),require(_0x37aa('0x71')));_0x5d0cd9['use'](_0x37aa('0x72'),require(_0x37aa('0x73')));_0x5d0cd9['use'](_0x37aa('0x74'),require(_0x37aa('0x75')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x76'),require('./api/integration'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x77'),require('./api/integrationReport'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x78'),require(_0x37aa('0x79')));_0x5d0cd9[_0x37aa('0x6')]('/api/analytics/default_reports',require(_0x37aa('0x7a')));_0x5d0cd9['use'](_0x37aa('0x7b'),require('./api/analyticExtractedReport'));_0x5d0cd9['use'](_0x37aa('0x7c'),require('./api/analyticMetric'));_0x5d0cd9['use'](_0x37aa('0x7d'),require('./api/analyticFieldReport'));_0x5d0cd9['use'](_0x37aa('0x7e'),require(_0x37aa('0x7f')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x80'),require('./api/intSalesforceAccount'));_0x5d0cd9[_0x37aa('0x6')]('/api/integrations/salesforce/configurations',require(_0x37aa('0x81')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x82'),require(_0x37aa('0x83')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x84'),require('./api/intSugarcrmAccount'));_0x5d0cd9['use']('/api/integrations/sugarcrm/configurations',require(_0x37aa('0x85')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x86'),require(_0x37aa('0x87')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x88'),require('./api/intDeskAccount'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x89'),require('./api/intDeskConfiguration'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x8a'),require(_0x37aa('0x8b')));_0x5d0cd9['use'](_0x37aa('0x8c'),require('./api/intZohoAccount'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x8d'),require(_0x37aa('0x8e')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x8f'),require(_0x37aa('0x90')));_0x5d0cd9['use'](_0x37aa('0x91'),require('./api/intZendeskAccount'));_0x5d0cd9['use'](_0x37aa('0x92'),require('./api/intZendeskConfiguration'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x93'),require(_0x37aa('0x94')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x95'),require(_0x37aa('0x96')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x97'),require('./api/intFreshdeskConfiguration'));_0x5d0cd9[_0x37aa('0x6')]('/api/integrations/freshdesk/fields',require(_0x37aa('0x98')));_0x5d0cd9['use'](_0x37aa('0x99'),require(_0x37aa('0x9a')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x9b'),require(_0x37aa('0x9c')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x9d'),require('./api/intVtigerField'));_0x5d0cd9['use'](_0x37aa('0x9e'),require(_0x37aa('0x9f')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xa0'),require('./api/intServicenowConfiguration'));_0x5d0cd9['use'](_0x37aa('0xa1'),require('./api/intServicenowField'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xa2'),require(_0x37aa('0xa3')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xa4'),require(_0x37aa('0xa5')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xa6'),require(_0x37aa('0xa7')));_0x5d0cd9[_0x37aa('0x6')]('/api/integrations/freshsales/accounts',require(_0x37aa('0xa8')));_0x5d0cd9['use'](_0x37aa('0xa9'),require(_0x37aa('0xaa')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xab'),require('./api/intFreshsalesField'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xac'),require(_0x37aa('0xad')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xae'),require(_0x37aa('0xaf')));_0x5d0cd9[_0x37aa('0x6')]('/api/chat/internal/messages',require('./api/chatInternalMessage'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xb0'),require(_0x37aa('0xb1')));_0x5d0cd9[_0x37aa('0x6')]('/api/jscripty/questions/reports',require(_0x37aa('0xb2')));_0x5d0cd9['use'](_0x37aa('0xb3'),require(_0x37aa('0xb4')));_0x5d0cd9[_0x37aa('0x6')]('/api/sms/reports/queue',require(_0x37aa('0xb5')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xb6'),require(_0x37aa('0xb7')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xb8'),require('./api/squareReportDetail'));_0x5d0cd9[_0x37aa('0x6')]('/api/jscripty/projects',require(_0x37aa('0xb9')));_0x5d0cd9['use'](_0x37aa('0xba'),require(_0x37aa('0xbb')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xbc'),require(_0x37aa('0xbd')));_0x5d0cd9[_0x37aa('0x6')]('/api/square/projects',require(_0x37aa('0xbe')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xbf'),require(_0x37aa('0xc0')));_0x5d0cd9[_0x37aa('0x6')]('/api/square/messages',require(_0x37aa('0xc1')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xc2'),require(_0x37aa('0xc3')));_0x5d0cd9['use']('/api/license',require('./api/license'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xc4'),require(_0x37aa('0xc5')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xc6'),require(_0x37aa('0xc7')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xc8'),require('./api/attachment'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xc9'),require(_0x37aa('0xca')));_0x5d0cd9['use'](_0x37aa('0xcb'),require('./api/mailTransferReport'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xcc'),require(_0x37aa('0xcd')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xce'),require(_0x37aa('0xcf')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xd0'),require(_0x37aa('0xd1')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xd2'),require(_0x37aa('0xd3')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xd4'),require(_0x37aa('0xd5')));_0x5d0cd9[_0x37aa('0x6')]('/api/voice/prefixes',require(_0x37aa('0xd6')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xd7'),require(_0x37aa('0xd8')));_0x5d0cd9[_0x37aa('0x6')]('/api/userProfile/sections',require(_0x37aa('0xd9')));_0x5d0cd9['use'](_0x37aa('0xda'),require(_0x37aa('0xdb')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xdc'),require(_0x37aa('0xdd')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xde'),require(_0x37aa('0xdf')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xe0'),require(_0x37aa('0xe1')));_0x5d0cd9[_0x37aa('0x6')]('/api/whatsapp/interactions',require(_0x37aa('0xe2')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xe3'),require(_0x37aa('0xe4')));_0x5d0cd9['use'](_0x37aa('0xe5'),require('./api/whatsappQueueReport'));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xe6'),require(_0x37aa('0xe7')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xe8'),require(_0x37aa('0xe9')));_0x5d0cd9['use']('/api/cloudProviders',require(_0x37aa('0xea')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xeb'),require(_0x37aa('0xec')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xed'),require(_0x37aa('0xee')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xef'),require(_0x37aa('0xf0')));_0x5d0cd9[_0x37aa('0x6')]('/api/auth/google',require(_0x37aa('0xf1')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xf2'),require(_0x37aa('0xf3')));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xf4'),require('./api/jira'));_0x5d0cd9['use'](_0x37aa('0xf5'),require(_0x37aa('0xf6')));_0x5d0cd9['use'](_0x37aa('0xf7'),require(_0x37aa('0xf8')));_0x5d0cd9['use']('/api/system',require(_0x37aa('0xf9')));_0x5d0cd9['use'](_0x37aa('0xfa'),require('./api/pm2'));_0x5d0cd9['use']('/api/webbar',require(_0x37aa('0xfb')));_0x5d0cd9['use']('/api/logs',clientSideLogs);_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0xfc'),express[_0x37aa('0xfd')](path[_0x37aa('0xfe')](config[_0x37aa('0xff')],_0x37aa('0xfc'))));_0x5d0cd9['use'](_0x37aa('0x100'),express[_0x37aa('0xfd')](path[_0x37aa('0xfe')](config[_0x37aa('0xff')],_0x37aa('0x100'))));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x101'),express[_0x37aa('0xfd')](path[_0x37aa('0xfe')](config[_0x37aa('0xff')],_0x37aa('0x101'))));_0x5d0cd9[_0x37aa('0x6')](_0x37aa('0x102'),express[_0x37aa('0xfd')](path['join'](config[_0x37aa('0xff')],_0x37aa('0x103'),_0x37aa('0x104'))));_0x5d0cd9['use'](_0x37aa('0x105'),express['static'](path[_0x37aa('0xfe')](config[_0x37aa('0xff')],_0x37aa('0x106'))));_0x5d0cd9[_0x37aa('0x107')](_0x37aa('0x108'))['get'](errors[0x194]);_0x5d0cd9['route']('/*')[_0x37aa('0x109')](function(_0x3d53a5,_0x3bb772){_0x3bb772[_0x37aa('0x10a')](path[_0x37aa('0x10b')](_0x5d0cd9[_0x37aa('0x109')](_0x37aa('0x10c'))+_0x37aa('0x10d')));});return _0x5d0cd9;});};
\ No newline at end of file
index ce4681b..b42d5b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ea3=['../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.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/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/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/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','server','http','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','jayson/promise','lodash','../config/environment','listen','../api/user/user.rpc','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x9ea3,0x12b));var _0x39ea=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0x9ea3[_0x580647];return _0x5f0792;};'use strict';var jayson=require(_0x39ea('0x0'));var _=require(_0x39ea('0x1'));var config=require(_0x39ea('0x2'));exports[_0x39ea('0x3')]=function(){return new Promise(function(_0x29fa61,_0xe542cc){var _0x42ebe8={};_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x4')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x6')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x7')));_0x42ebe8=_['merge'](_0x42ebe8,require('../api/voiceRecording/voiceRecording.rpc'));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x8')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x9')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0xa')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/memberReport/memberReport.rpc'));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0xb')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0xc')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0xd')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0xe')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/mailAccount/mailAccount.rpc'));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0xf')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x10')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x11')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x12')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x13')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x14')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/faxApplication/faxApplication.rpc'));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x15')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x16')));_0x42ebe8=_['merge'](_0x42ebe8,require('../api/faxQueue/faxQueue.rpc'));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x17')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x18')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/smsInteraction/smsInteraction.rpc'));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x19')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x1a')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x1b')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x1c')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x1d')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x1e')));_0x42ebe8=_['merge'](_0x42ebe8,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x1f')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x20')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x21')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x22')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x23')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x24')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x25')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x26')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x27')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x28')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/pause/pause.rpc'));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x29')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x2a')));_0x42ebe8=_['merge'](_0x42ebe8,require('../api/template/template.rpc'));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/trigger/trigger.rpc'));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x2b')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x2c')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x2d')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x2e')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x2f')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x30')));_0x42ebe8=_['merge'](_0x42ebe8,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x42ebe8=_['merge'](_0x42ebe8,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x31')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x32')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x33')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x34')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x35')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x36')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x37')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x38')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x39')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x3a')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x3b')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x3c')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x3d')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x3e')));_0x42ebe8=_['merge'](_0x42ebe8,require(_0x39ea('0x3f')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x40')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x41')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require(_0x39ea('0x42')));_0x42ebe8=_[_0x39ea('0x5')](_0x42ebe8,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x113c6e=jayson[_0x39ea('0x43')](_0x42ebe8)[_0x39ea('0x44')]();var _0x2b93a9=config[_0x39ea('0x45')][_0x39ea('0x46')]||config[_0x39ea('0x46')]+0x1;var _0x317edd=config[_0x39ea('0x45')]['ip']||_0x39ea('0x47');_0x113c6e['on'](_0x39ea('0x48'),function(_0x2f72ec){return _0xe542cc(_0x2f72ec);});_0x113c6e[_0x39ea('0x3')](_0x2b93a9,_0x317edd,function(){console[_0x39ea('0x49')](_0x39ea('0x4a'),_0x317edd,_0x2b93a9);require(_0x39ea('0x4b'))[_0x39ea('0x4c')]();return _0x29fa61('RPC\x20listening\x20on\x20'+_0x317edd+':'+_0x2b93a9);});});};
\ No newline at end of file
+var _0xf5dc=['../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','server','http','rpc','port','localhost','error','log','../config/triggers','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../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/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc'];(function(_0x445b31,_0x53ed18){var _0x55dd44=function(_0x11c035){while(--_0x11c035){_0x445b31['push'](_0x445b31['shift']());}};_0x55dd44(++_0x53ed18);}(_0xf5dc,0x117));var _0xcf5d=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xf5dc[_0x3ab51d];return _0x29a04e;};'use strict';var jayson=require('jayson/promise');var _=require('lodash');var config=require(_0xcf5d('0x0'));exports[_0xcf5d('0x1')]=function(){return new Promise(function(_0x5f11e5,_0x50c2d8){var _0x177b2d={};_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x3')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x4')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x5')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x6')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x7')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x8')));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0x9')));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0xa')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/memberReport/memberReport.rpc'));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0xb')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0xc')));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0xd')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0xe')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/mailAccount/mailAccount.rpc'));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0xf')));_0x177b2d=_['merge'](_0x177b2d,require('../api/mailInteraction/mailInteraction.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x10')));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0x11')));_0x177b2d=_['merge'](_0x177b2d,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x12')));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0x13')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/faxInteraction/faxInteraction.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x14')));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0x15')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x16')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x17')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x18')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/smsMessage/smsMessage.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x19')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x1a')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x1b')));_0x177b2d=_['merge'](_0x177b2d,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x1c')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x1d')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x1e')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x1f')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x20')));_0x177b2d=_['merge'](_0x177b2d,require('../api/cmHopper/cmHopper.rpc'));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0x21')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x22')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x23')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x24')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/sound/sound.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x25')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x26')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x27')));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0x28')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x29')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x2a')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x2b')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0x2c')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x2d')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x2e')));_0x177b2d=_['merge'](_0x177b2d,require(_0xcf5d('0x2f')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x30')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/squareReport/squareReport.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x31')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x32')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x33')));_0x177b2d=_['merge'](_0x177b2d,require('../api/squareProject/squareProject.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/squareRecording/squareRecording.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/squareMessage/squareMessage.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x34')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x35')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x36')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x37')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require(_0xcf5d('0x38')));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x177b2d=_[_0xcf5d('0x2')](_0x177b2d,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x5c23a8=jayson[_0xcf5d('0x39')](_0x177b2d)[_0xcf5d('0x3a')]();var _0x249cde=config[_0xcf5d('0x3b')][_0xcf5d('0x3c')]||config[_0xcf5d('0x3c')]+0x1;var _0xba42fc=config[_0xcf5d('0x3b')]['ip']||_0xcf5d('0x3d');_0x5c23a8['on'](_0xcf5d('0x3e'),function(_0x52c1d1){return _0x50c2d8(_0x52c1d1);});_0x5c23a8[_0xcf5d('0x1')](_0x249cde,_0xba42fc,function(){console[_0xcf5d('0x3f')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0xba42fc,_0x249cde);require(_0xcf5d('0x40'))['default']();return _0x5f11e5('RPC\x20listening\x20on\x20'+_0xba42fc+':'+_0x249cde);});});};
\ No newline at end of file
index 93d5162..1aedf15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7c4=['AGI','WAIT','error','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','lodash','events','./reply','call','setEncoding','utf8','headers','emit','ready','toLowerCase','hangup','substring','search','520\x20End\x20of\x20proper','no\x20code','replace','result=','indexOf','substr','startsWith','length','match','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','destroy','pipe','command','function','sync','prototype','sendRequest','ANSWER','getData','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22'];(function(_0x432fca,_0xb0b1b5){var _0x3adba4=function(_0x5e3ae4){while(--_0x5e3ae4){_0x432fca['push'](_0x432fca['shift']());}};_0x3adba4(++_0xb0b1b5);}(_0xd7c4,0x168));var _0x4d7c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd7c4[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var _=require(_0x4d7c('0x0'));var EventEmitter=require(_0x4d7c('0x1'))['EventEmitter'];var AGIReply=require(_0x4d7c('0x2'));var AGIError=require('./error');function AGIChannel(_0x363279){var _0x306b01=this,_0x3ff38d=new AGIReply(),_0x3fe3b1=![],_0x41736a={};EventEmitter[_0x4d7c('0x3')](_0x306b01);_0x363279[_0x4d7c('0x4')](_0x4d7c('0x5'));_0x363279['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x3ff38d[_0x4d7c('0x4')](_0x4d7c('0x5'));_0x3ff38d['on'](_0x4d7c('0x6'),function(_0x48047c){for(var _0x481f6a in _0x48047c){_0x306b01[_0x481f6a]=_0x48047c[_0x481f6a];}_0x306b01[_0x4d7c('0x7')](_0x4d7c('0x8'));});_0x3ff38d['on']('line',function(_0x153be0){if(_0x153be0[_0x4d7c('0x9')]()==_0x4d7c('0xa')){_0x306b01[_0x4d7c('0x7')](_0x4d7c('0xa'));return;}if(_0x153be0[_0x4d7c('0xb')](0x0,0xb)=='520-Invalid'){_0x3fe3b1=!![];}if(_0x3fe3b1){_0x41736a['rx']+=_0x153be0+'\x0a';if(_0x153be0[_0x4d7c('0xc')](_0x4d7c('0xd'))!=-0x1){_0x3fe3b1=![];}}else{_0x41736a['rx']=_0x153be0;}if(_0x3fe3b1){return;}if(typeof _0x41736a['cb']=='function'){var _0x55e3d4=_0x41736a['rx'][_0x4d7c('0xb')](0x0,0x3),_0xcb9903=null,_0x5135fd=null;_0x55e3d4=parseInt(_0x55e3d4);if(isNaN(_0x55e3d4)){_0x41736a['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x4d7c('0xe')});return;}if(_0x55e3d4!=0xc8){_0x41736a['cb'](null,{'code':_0x55e3d4,'result':-0x1,'extra':'KO'});return;}_0xcb9903=_0x41736a['rx'][_0x4d7c('0xb')](0x4)[_0x4d7c('0xf')](_0x4d7c('0x10'),'');if(_0xcb9903[_0x4d7c('0x11')]('\x20')!=-0x1){_0xcb9903=_0xcb9903[_0x4d7c('0x12')](0x0,_0xcb9903[_0x4d7c('0x11')]('\x20'));}if(_[_0x4d7c('0x13')](_0xcb9903,'-1')){_0xcb9903=parseInt(_0xcb9903);}_0x5135fd=_0x41736a['rx']['split']('\x20');if(_0x5135fd['length']==0x3){_0x5135fd=_0x5135fd[0x2][_0x4d7c('0xb')](0x1,_0x5135fd[0x2][_0x4d7c('0x14')]-0x1);}else if(_0x5135fd[_0x4d7c('0x14')]>0x3){var _0x4e25ef=/\((.+)\)/;var _0x563d5c=_0x41736a['rx'][_0x4d7c('0x15')](_0x4e25ef);if(_0x563d5c){_0x5135fd=_0x563d5c[0x1];}else{_0x5135fd=null;}}else{_0x5135fd=null;}_0x41736a['cb'](null,{'code':_0x55e3d4,'result':_0xcb9903,'extra':_0x5135fd});}});_0x363279['on']('error',function(_0x7f4c9d){_0x306b01[_0x4d7c('0x7')]('error',new AGIError(_0x4d7c('0x16'),_0x7f4c9d[_0x4d7c('0x17')]));});_0x363279['on'](_0x4d7c('0x18'),function(){_0x306b01['emit'](_0x4d7c('0x18'),new AGIError(_0x4d7c('0x19')));});_0x363279['on'](_0x4d7c('0x1a'),function(){_0x306b01[_0x4d7c('0x7')](_0x4d7c('0x1a'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x363279[_0x4d7c('0x1b')]();});_0x363279[_0x4d7c('0x1c')](_0x3ff38d);this[_0x4d7c('0x1d')]=function(_0x1dfb84,_0x246704){var _0x1dfb84=_0x1dfb84||'',_0x246704=typeof _0x246704==_0x4d7c('0x1e')?_0x246704:new Function();_0x41736a={'tx':_0x1dfb84,'rx':'','cb':_0x246704};_0x363279['write'](_0x1dfb84+'\x0a');},this['close']=function(){_0x363279[_0x4d7c('0x1b')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel['prototype']['sendRequest']=function(_0x2776ef){return this[_0x4d7c('0x1d')][_0x4d7c('0x1f')](this,_0x2776ef);};AGIChannel[_0x4d7c('0x20')]['answer']=function(){return this[_0x4d7c('0x21')](_0x4d7c('0x22'));};AGIChannel[_0x4d7c('0x20')][_0x4d7c('0x23')]=function(_0x2d9d77,_0x522a2e,_0x25ce8b){_0x2d9d77=_0x2d9d77===undefined?'beep':_0x2d9d77;_0x522a2e=_0x522a2e===undefined?'5':_0x522a2e;_0x25ce8b=_0x25ce8b===undefined?'1':_0x25ce8b;return this[_0x4d7c('0x21')](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x2d9d77,_0x522a2e*0x3e8,_0x25ce8b));};AGIChannel[_0x4d7c('0x20')][_0x4d7c('0x24')]=function(_0x174e7d){_0x174e7d=_0x174e7d||_0x4d7c('0x25');return this[_0x4d7c('0x21')](util[_0x4d7c('0x26')](_0x4d7c('0x27'),_0x174e7d));};AGIChannel['prototype'][_0x4d7c('0x28')]=function(_0x2417d5,_0x2905da){if(_[_0x4d7c('0x29')](_0x2905da)){return this[_0x4d7c('0x21')](util[_0x4d7c('0x26')](_0x4d7c('0x2a'),_0x2417d5,_0x2905da['join'](',')));}return this['sendRequest'](util[_0x4d7c('0x26')](_0x4d7c('0x2a'),_0x2417d5,_0x2905da));};AGIChannel[_0x4d7c('0x20')][_0x4d7c('0x2b')]=function(_0x5dec29){return this[_0x4d7c('0x21')](util['format'](_0x4d7c('0x2c'),_0x5dec29));};AGIChannel['prototype'][_0x4d7c('0x2d')]=function(_0x4fcf45){return this[_0x4d7c('0x21')](util[_0x4d7c('0x26')](_0x4d7c('0x2e'),_0x4fcf45));};AGIChannel['prototype'][_0x4d7c('0x2f')]=function(_0xcb5c82){return this['sendRequest'](util[_0x4d7c('0x26')](_0x4d7c('0x30'),_0xcb5c82));};AGIChannel['prototype'][_0x4d7c('0xa')]=function(){return this['sendRequest']('HANGUP');};AGIChannel['prototype'][_0x4d7c('0x31')]=function(_0x581592,_0x4a6769){var _0x5833cc=_[_0x4d7c('0x32')](_0x4a6769)||_[_0x4d7c('0x33')](_0x4a6769)?_0x4a6769[_0x4d7c('0x34')]():_0x4a6769;return this['sendRequest'](util[_0x4d7c('0x26')](_0x4d7c('0x35'),_0x581592,_0x5833cc?_0x5833cc['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x4d7c('0x36')]=function(_0x4a5fb3,_0x1ac592){return this['sendRequest'](util['format'](_0x4d7c('0x37'),_0x4a5fb3,_0x1ac592));};AGIChannel[_0x4d7c('0x20')][_0x4d7c('0x38')]=function(_0x2d4071,_0x35da0d){return this['sendRequest'](util[_0x4d7c('0x26')]('SAY\x20DIGITS\x20%s\x20%s',_0x2d4071,_0x35da0d));};AGIChannel['prototype']['sayPhonetic']=function(_0x12abf0,_0x2ae8b1){return this[_0x4d7c('0x21')](util[_0x4d7c('0x26')](_0x4d7c('0x39'),_0x12abf0,_0x2ae8b1));};AGIChannel['prototype']['continueAt']=function(_0x100fc5,_0x1d4fbb,_0x4fb964){_0x1d4fbb=_0x1d4fbb||this['extension'];_0x4fb964=_0x4fb964||0x1;this[_0x4d7c('0x2b')](_0x100fc5);this[_0x4d7c('0x2d')](_0x1d4fbb);this[_0x4d7c('0x2f')](_0x4fb964);return this[_0x4d7c('0x24')](util[_0x4d7c('0x26')]('GOTO\x20%s\x20%s\x20%s',_0x100fc5,_0x1d4fbb,_0x4fb964));};AGIChannel[_0x4d7c('0x20')][_0x4d7c('0x3a')]=function(_0x162939){return this[_0x4d7c('0x21')](util[_0x4d7c('0x26')](_0x4d7c('0x3b'),_0x162939));};AGIChannel[_0x4d7c('0x20')][_0x4d7c('0x3c')]=function(_0x335349,_0x3bcd71,_0x233342,_0x4f8af6,_0x2c18ea,_0x3215e9){_0x3bcd71=_0x3bcd71||_0x4d7c('0x3d');_0x233342=_0x233342||'';_0x4f8af6=_0x4f8af6===undefined?-0x1:_0x4f8af6==='-1'?-0x1:_0x4f8af6*0x3e8;_0x2c18ea=_0x2c18ea===undefined?'':'s='+_0x2c18ea;_0x3215e9=_0x3215e9?_0x4d7c('0x3e'):'';return this[_0x4d7c('0x21')](util['format'](_0x4d7c('0x3f'),_0x335349,_0x3bcd71,_0x233342,_0x4f8af6,_0x3215e9,_0x2c18ea));};AGIChannel['prototype'][_0x4d7c('0x40')]=function(_0x471352,_0x2f7cf6){_0x2f7cf6=_0x2f7cf6||'';return this[_0x4d7c('0x21')](util[_0x4d7c('0x26')](_0x4d7c('0x41'),_0x471352,_0x2f7cf6));};AGIChannel[_0x4d7c('0x20')]['agi']=function(_0x38f401){return this['exec'](_0x4d7c('0x42'),_0x38f401);};AGIChannel[_0x4d7c('0x20')]['wait']=function(_0x338499){return this[_0x4d7c('0x28')](_0x4d7c('0x43'),_0x338499);};AGIChannel[_0x4d7c('0x20')][_0x4d7c('0x44')]=function(_0x4b0bb3,_0x5329a6){this[_0x4d7c('0x24')](util[_0x4d7c('0x26')](_0x4d7c('0x45'),_0x4b0bb3['id'],_0x4b0bb3[_0x4d7c('0x46')],_0x5329a6));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0xef66=['STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','exports','util','lodash','events','EventEmitter','./reply','call','setEncoding','utf8','setTimeout','emit','ready','line','toLowerCase','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','replace','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','write','inherits','prototype','sendRequest','sync','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','join','setContext','setExtension','SET\x20PRIORITY\x20%s','isBoolean','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','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','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile'];(function(_0x1e1526,_0x37e3d3){var _0x2ffb34=function(_0x5ed43b){while(--_0x5ed43b){_0x1e1526['push'](_0x1e1526['shift']());}};_0x2ffb34(++_0x37e3d3);}(_0xef66,0x1db));var _0x6ef6=function(_0x3dda21,_0x2d53bf){_0x3dda21=_0x3dda21-0x0;var _0x1eb3d1=_0xef66[_0x3dda21];return _0x1eb3d1;};'use strict';var util=require(_0x6ef6('0x0'));var _=require(_0x6ef6('0x1'));var EventEmitter=require(_0x6ef6('0x2'))[_0x6ef6('0x3')];var AGIReply=require(_0x6ef6('0x4'));var AGIError=require('./error');function AGIChannel(_0x555330){var _0x447651=this,_0x2443db=new AGIReply(),_0x337718=![],_0x1cc212={};EventEmitter[_0x6ef6('0x5')](_0x447651);_0x555330[_0x6ef6('0x6')](_0x6ef6('0x7'));_0x555330[_0x6ef6('0x8')](0x8*0x3c*0x3c*0x3e8);_0x2443db[_0x6ef6('0x6')]('utf8');_0x2443db['on']('headers',function(_0xc0d555){for(var _0xeccd37 in _0xc0d555){_0x447651[_0xeccd37]=_0xc0d555[_0xeccd37];}_0x447651[_0x6ef6('0x9')](_0x6ef6('0xa'));});_0x2443db['on'](_0x6ef6('0xb'),function(_0x49fed5){if(_0x49fed5[_0x6ef6('0xc')]()=='hangup'){_0x447651['emit'](_0x6ef6('0xd'));return;}if(_0x49fed5['substring'](0x0,0xb)==_0x6ef6('0xe')){_0x337718=!![];}if(_0x337718){_0x1cc212['rx']+=_0x49fed5+'\x0a';if(_0x49fed5[_0x6ef6('0xf')](_0x6ef6('0x10'))!=-0x1){_0x337718=![];}}else{_0x1cc212['rx']=_0x49fed5;}if(_0x337718){return;}if(typeof _0x1cc212['cb']==_0x6ef6('0x11')){var _0x596b91=_0x1cc212['rx'][_0x6ef6('0x12')](0x0,0x3),_0x3aa045=null,_0x22b44e=null;_0x596b91=parseInt(_0x596b91);if(isNaN(_0x596b91)){_0x1cc212['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x6ef6('0x13')});return;}if(_0x596b91!=0xc8){_0x1cc212['cb'](null,{'code':_0x596b91,'result':-0x1,'extra':'KO'});return;}_0x3aa045=_0x1cc212['rx']['substring'](0x4)[_0x6ef6('0x14')]('result=','');if(_0x3aa045[_0x6ef6('0x15')]('\x20')!=-0x1){_0x3aa045=_0x3aa045[_0x6ef6('0x16')](0x0,_0x3aa045['indexOf']('\x20'));}if(_[_0x6ef6('0x17')](_0x3aa045,'-1')){_0x3aa045=parseInt(_0x3aa045);}_0x22b44e=_0x1cc212['rx'][_0x6ef6('0x18')]('\x20');if(_0x22b44e[_0x6ef6('0x19')]==0x3){_0x22b44e=_0x22b44e[0x2][_0x6ef6('0x12')](0x1,_0x22b44e[0x2][_0x6ef6('0x19')]-0x1);}else if(_0x22b44e[_0x6ef6('0x19')]>0x3){var _0x4ea222=/\((.+)\)/;var _0x30b8e8=_0x1cc212['rx'][_0x6ef6('0x1a')](_0x4ea222);if(_0x30b8e8){_0x22b44e=_0x30b8e8[0x1];}else{_0x22b44e=null;}}else{_0x22b44e=null;}_0x1cc212['cb'](null,{'code':_0x596b91,'result':_0x3aa045,'extra':_0x22b44e});}});_0x555330['on'](_0x6ef6('0x1b'),function(_0x53586d){_0x447651[_0x6ef6('0x9')](_0x6ef6('0x1b'),new AGIError(_0x6ef6('0x1c'),_0x53586d[_0x6ef6('0x1d')]));});_0x555330['on'](_0x6ef6('0x1e'),function(){_0x447651[_0x6ef6('0x9')](_0x6ef6('0x1e'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x555330['on'](_0x6ef6('0x1f'),function(){_0x447651[_0x6ef6('0x9')](_0x6ef6('0x1f'),new AGIError(_0x6ef6('0x20')));_0x555330['destroy']();});_0x555330[_0x6ef6('0x21')](_0x2443db);this[_0x6ef6('0x22')]=function(_0xed332b,_0x4f6df6){var _0xed332b=_0xed332b||'',_0x4f6df6=typeof _0x4f6df6=='function'?_0x4f6df6:new Function();_0x1cc212={'tx':_0xed332b,'rx':'','cb':_0x4f6df6};_0x555330[_0x6ef6('0x23')](_0xed332b+'\x0a');},this[_0x6ef6('0x1e')]=function(){_0x555330['destroy']();};}util[_0x6ef6('0x24')](AGIChannel,EventEmitter);AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x26')]=function(_0x414def){return this[_0x6ef6('0x22')][_0x6ef6('0x27')](this,_0x414def);};AGIChannel[_0x6ef6('0x25')]['answer']=function(){return this[_0x6ef6('0x26')]('ANSWER');};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x28')]=function(_0x443ded,_0xada7a8,_0x1faa2c){_0x443ded=_0x443ded===undefined?_0x6ef6('0x29'):_0x443ded;_0xada7a8=_0xada7a8===undefined?'5':_0xada7a8;_0x1faa2c=_0x1faa2c===undefined?'1':_0x1faa2c;return this[_0x6ef6('0x26')](util[_0x6ef6('0x2a')](_0x6ef6('0x2b'),_0x443ded,_0xada7a8*0x3e8,_0x1faa2c));};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x2c')]=function(_0x2d87a8){_0x2d87a8=_0x2d87a8||_0x6ef6('0x2d');return this[_0x6ef6('0x26')](util[_0x6ef6('0x2a')](_0x6ef6('0x2e'),_0x2d87a8));};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x2f')]=function(_0x24eeae,_0x23f979){if(_['isArray'](_0x23f979)){return this[_0x6ef6('0x26')](util['format'](_0x6ef6('0x30'),_0x24eeae,_0x23f979[_0x6ef6('0x31')](',')));}return this[_0x6ef6('0x26')](util['format']('EXEC\x20%s\x20%s',_0x24eeae,_0x23f979));};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x32')]=function(_0x335b1d){return this['sendRequest'](util[_0x6ef6('0x2a')]('SET\x20CONTEXT\x20%s',_0x335b1d));};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x33')]=function(_0x4cdb58){return this['sendRequest'](util[_0x6ef6('0x2a')]('SET\x20EXTENSION\x20%s',_0x4cdb58));};AGIChannel[_0x6ef6('0x25')]['setPriority']=function(_0x3f0ada){return this['sendRequest'](util['format'](_0x6ef6('0x34'),_0x3f0ada));};AGIChannel[_0x6ef6('0x25')]['hangup']=function(){return this[_0x6ef6('0x26')]('HANGUP');};AGIChannel[_0x6ef6('0x25')]['setVariable']=function(_0x215daf,_0x5cf0ea){var _0x28dda7=_[_0x6ef6('0x35')](_0x5cf0ea)||_[_0x6ef6('0x36')](_0x5cf0ea)?_0x5cf0ea['toString']():_0x5cf0ea;return this['sendRequest'](util[_0x6ef6('0x2a')](_0x6ef6('0x37'),_0x215daf,_0x28dda7?_0x28dda7[_0x6ef6('0x38')]()[_0x6ef6('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype']['sayNumber']=function(_0x2ed80c,_0x55212c){return this['sendRequest'](util[_0x6ef6('0x2a')]('SAY\x20NUMBER\x20%s\x20%s',_0x2ed80c,_0x55212c));};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x39')]=function(_0x30649c,_0x31facc){return this[_0x6ef6('0x26')](util[_0x6ef6('0x2a')](_0x6ef6('0x3a'),_0x30649c,_0x31facc));};AGIChannel['prototype'][_0x6ef6('0x3b')]=function(_0x58fed8,_0x522399){return this[_0x6ef6('0x26')](util[_0x6ef6('0x2a')](_0x6ef6('0x3c'),_0x58fed8,_0x522399));};AGIChannel['prototype'][_0x6ef6('0x3d')]=function(_0x3855b5,_0x215529,_0x513103){_0x215529=_0x215529||this[_0x6ef6('0x3e')];_0x513103=_0x513103||0x1;this[_0x6ef6('0x32')](_0x3855b5);this[_0x6ef6('0x33')](_0x215529);this[_0x6ef6('0x3f')](_0x513103);return this[_0x6ef6('0x2c')](util[_0x6ef6('0x2a')](_0x6ef6('0x40'),_0x3855b5,_0x215529,_0x513103));};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x41')]=function(_0x230f30){return this['sendRequest'](util[_0x6ef6('0x2a')](_0x6ef6('0x42'),_0x230f30));};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x43')]=function(_0x4f3b4f,_0x23abee,_0x2bbbbd,_0x16cc42,_0x1418e8,_0x3592a5){_0x23abee=_0x23abee||_0x6ef6('0x44');_0x2bbbbd=_0x2bbbbd||'';_0x16cc42=_0x16cc42===undefined?-0x1:_0x16cc42==='-1'?-0x1:_0x16cc42*0x3e8;_0x1418e8=_0x1418e8===undefined?'':'s='+_0x1418e8;_0x3592a5=_0x3592a5?'BEEP':'';return this[_0x6ef6('0x26')](util['format'](_0x6ef6('0x45'),_0x4f3b4f,_0x23abee,_0x2bbbbd,_0x16cc42,_0x3592a5,_0x1418e8));};AGIChannel['prototype'][_0x6ef6('0x46')]=function(_0x16edb3,_0x5aa8f3){_0x5aa8f3=_0x5aa8f3||'';return this[_0x6ef6('0x26')](util[_0x6ef6('0x2a')](_0x6ef6('0x47'),_0x16edb3,_0x5aa8f3));};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x48')]=function(_0x5dfd25){return this[_0x6ef6('0x2f')](_0x6ef6('0x49'),_0x5dfd25);};AGIChannel[_0x6ef6('0x25')][_0x6ef6('0x4a')]=function(_0x26e869){return this[_0x6ef6('0x2f')](_0x6ef6('0x4b'),_0x26e869);};AGIChannel[_0x6ef6('0x25')]['error']=function(_0x367df3,_0x2d54c0){this['noop'](util['format'](_0x6ef6('0x4c'),_0x367df3['id'],_0x367df3['label'],_0x2d54c0));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x6ef6('0x4d')]=AGIChannel;
\ No newline at end of file
index 5476fe3..cdbe8b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be5=['Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply','message','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.'];(function(_0x117456,_0x307e42){var _0x2f0634=function(_0x2a72e0){while(--_0x2a72e0){_0x117456['push'](_0x117456['shift']());}};_0x2f0634(++_0x307e42);}(_0x8be5,0x1dc));var _0x58be=function(_0x55f292,_0x21dded){_0x55f292=_0x55f292-0x0;var _0x35c126=_0x8be5[_0x55f292];return _0x35c126;};'use strict';var util=require(_0x58be('0x0'));var error={'E_AGI_UNDEFINED':_0x58be('0x1'),'E_AGI_ARGUMENT_PORT':_0x58be('0x2'),'E_AGI_SERVER_ERROR':_0x58be('0x3'),'E_AGI_SERVER_CLOSE':_0x58be('0x4'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x58be('0x5'),'E_AGI_SOCKET_ERROR':_0x58be('0x6'),'E_AGI_SOCKET_CLOSE':_0x58be('0x7'),'E_AGI_SOCKET_TIMEOUT':_0x58be('0x8'),'E_AGI_COMMAND_EMPTY':_0x58be('0x9'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x58be('0xa')};function AGIError(_0x1bd6f7){var _0x1bd6f7=_0x1bd6f7||null,_0x49806f=_0x49806f||[],_0x43b7d4=0x1,_0x48bf5f='';if(!error[_0x1bd6f7]){_0x1bd6f7=_0x58be('0xb');}_0x49806f[_0x58be('0xc')](error[_0x1bd6f7]);while(arguments[_0x43b7d4]){_0x49806f[_0x58be('0xc')](arguments[_0x43b7d4]);_0x43b7d4++;}_0x48bf5f=util['format'][_0x58be('0xd')](util,_0x49806f);this[_0x58be('0xe')]=_0x48bf5f;this['name']=_0x1bd6f7;}module[_0x58be('0xf')]=AGIError;
\ No newline at end of file
+var _0xd3d5=['[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','push','format','message','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.'];(function(_0x482cb9,_0x448f4d){var _0x2c5647=function(_0x147bf2){while(--_0x147bf2){_0x482cb9['push'](_0x482cb9['shift']());}};_0x2c5647(++_0x448f4d);}(_0xd3d5,0x8e));var _0x5d3d=function(_0x236f98,_0x20aa59){_0x236f98=_0x236f98-0x0;var _0xff6ca6=_0xd3d5[_0x236f98];return _0xff6ca6;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0x5d3d('0x0'),'E_AGI_SERVER_ERROR':_0x5d3d('0x1'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0x5d3d('0x2'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0x5d3d('0x3'),'E_AGI_COMMAND_EMPTY':_0x5d3d('0x4'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x5d3d('0x5'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x79717){var _0x79717=_0x79717||null,_0x16e49d=_0x16e49d||[],_0x549de0=0x1,_0x3eae09='';if(!error[_0x79717]){_0x79717='E_AGI_UNDEFINED';}_0x16e49d[_0x5d3d('0x6')](error[_0x79717]);while(arguments[_0x549de0]){_0x16e49d[_0x5d3d('0x6')](arguments[_0x549de0]);_0x549de0++;}_0x3eae09=util[_0x5d3d('0x7')]['apply'](util,_0x16e49d);this[_0x5d3d('0x8')]=_0x3eae09;this['name']=_0x79717;}module['exports']=AGIError;
\ No newline at end of file
index 3349a5c..b0f71e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03eb=['lodash','ioredis','./error','redis','defaults','subscribe','agi','emit','error','E_AGI_SERVER_ERROR','parse','projectUpdate','exports'];(function(_0xb94c31,_0x2ebf53){var _0x2070db=function(_0x1d4a08){while(--_0x1d4a08){_0xb94c31['push'](_0xb94c31['shift']());}};_0x2070db(++_0x2ebf53);}(_0x03eb,0xa9));var _0xb03e=function(_0x2a85df,_0x21230a){_0x2a85df=_0x2a85df-0x0;var _0x428275=_0x03eb[_0x2a85df];return _0x428275;};'use strict';var _=require(_0xb03e('0x0'));var EventEmitter=require('events')['EventEmitter'];var Redis=require(_0xb03e('0x1'));var AGIError=require(_0xb03e('0x2'));var config=require('../../config/environment');config[_0xb03e('0x3')]=_[_0xb03e('0x4')](config[_0xb03e('0x3')],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0xb03e('0x3')]);sub[_0xb03e('0x5')](_0xb03e('0x6'),function(_0x1465a6){if(_0x1465a6)return eventEmitter[_0xb03e('0x7')](_0xb03e('0x8'),new AGIError(_0xb03e('0x9'),_0x1465a6));});sub['on']('message',function(_0x39ef74,_0x383060){if(_0x39ef74!==_0xb03e('0x6'))return;try{var _0x5a17f7=JSON[_0xb03e('0xa')](_0x383060);eventEmitter[_0xb03e('0x7')](_0xb03e('0xb'),_0x5a17f7);}catch(_0x4941d7){eventEmitter[_0xb03e('0x7')](_0xb03e('0x8'),new AGIError(_0xb03e('0x9'),_0x4941d7));}});module[_0xb03e('0xc')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x12cf=['projectUpdate','exports','lodash','events','EventEmitter','ioredis','./error','../../config/environment','redis','defaults','subscribe','emit','error','E_AGI_SERVER_ERROR','parse'];(function(_0x5ca353,_0x21eb37){var _0x4f2fe5=function(_0x14cd1b){while(--_0x14cd1b){_0x5ca353['push'](_0x5ca353['shift']());}};_0x4f2fe5(++_0x21eb37);}(_0x12cf,0x98));var _0xf12c=function(_0x43b468,_0x46c33c){_0x43b468=_0x43b468-0x0;var _0x47ee4b=_0x12cf[_0x43b468];return _0x47ee4b;};'use strict';var _=require(_0xf12c('0x0'));var EventEmitter=require(_0xf12c('0x1'))[_0xf12c('0x2')];var Redis=require(_0xf12c('0x3'));var AGIError=require(_0xf12c('0x4'));var config=require(_0xf12c('0x5'));config[_0xf12c('0x6')]=_[_0xf12c('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0xf12c('0x6')]);sub[_0xf12c('0x8')]('agi',function(_0x33087d){if(_0x33087d)return eventEmitter[_0xf12c('0x9')](_0xf12c('0xa'),new AGIError(_0xf12c('0xb'),_0x33087d));});sub['on']('message',function(_0x342057,_0x55d7a3){if(_0x342057!=='agi')return;try{var _0x2b9f79=JSON[_0xf12c('0xc')](_0x55d7a3);eventEmitter[_0xf12c('0x9')](_0xf12c('0xd'),_0x2b9f79);}catch(_0x26546f){eventEmitter[_0xf12c('0x9')]('error',new AGIError(_0xf12c('0xb'),_0x26546f));}});module[_0xf12c('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 6123899..c4acbeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x226a=['size','getVertex','traverseBFS','info','length','no\x20edge/s\x20available','condition','split','agicommand','default','target','invalid','vswitch','includes','condition\x20not\x20found','exports','lodash','agi','menu','getdigits','vertices','numberOfEdges','prototype','addVertex','addEdge','edges','push'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x226a,0x97));var _0xa226=function(_0xf2628e,_0x521bf7){_0xf2628e=_0xf2628e-0x0;var _0x13863a=_0x226a[_0xf2628e];return _0x13863a;};'use strict';var _=require(_0xa226('0x0'));var logger=require('../../../config/logger')(_0xa226('0x1'));var verticesWithRetry=[_0xa226('0x2'),_0xa226('0x3'),'getsecretdigits'];var Graph=function(){this[_0xa226('0x4')]={};this['edges']={};this[_0xa226('0x5')]=0x0;};Graph[_0xa226('0x6')][_0xa226('0x7')]=function(_0x40c3be){this['vertices'][_0x40c3be['id']]=_0x40c3be;this['edges'][_0x40c3be['id']]=[];};Graph['prototype'][_0xa226('0x8')]=function(_0x2ca330,_0x3da8d9,_0x4b7322){this[_0xa226('0x9')][_0x2ca330][_0xa226('0xa')]({'target':_0x3da8d9,'condition':_0x4b7322});this[_0xa226('0x5')]+=0x1;};Graph[_0xa226('0x6')][_0xa226('0xb')]=function(){return _[_0xa226('0xb')](this['vertices']);};Graph[_0xa226('0x6')]['relations']=function(){return this['numberOfEdges'];};Graph[_0xa226('0x6')][_0xa226('0xc')]=function(_0x3ab47f){return this['vertices'][_0x3ab47f];};Graph[_0xa226('0x6')][_0xa226('0xd')]=function(_0x419a65,_0x54592f){if(!this['vertices'][_0x419a65]){return logger[_0xa226('0xe')]('no\x20vertex\x20found');}var _0x4864c6=_0x54592f(this[_0xa226('0x4')][_0x419a65]);if(!_0x4864c6){return logger['info']('stop\x20traverse');}if(this[_0xa226('0x9')][_0x419a65][_0xa226('0xf')]===0x0){return logger[_0xa226('0xe')](_0xa226('0x10'));}for(var _0x16d9c7=0x0,_0x453d7f=[],_0x26d186=![];_0x16d9c7<this[_0xa226('0x9')][_0x419a65][_0xa226('0xf')];_0x16d9c7+=0x1){if(this[_0xa226('0x9')][_0x419a65][_0x16d9c7][_0xa226('0x11')]){_0x453d7f=this['edges'][_0x419a65][_0x16d9c7]['condition'][_0xa226('0x12')](',');for(var _0x590809=0x0;_0x590809<_0x453d7f[_0xa226('0xf')];_0x590809+=0x1){if(this[_0xa226('0x4')][_0x419a65][_0xa226('0x13')]==='vswitch'&&_0x453d7f[_0x590809]==='-'){_0x26d186=this[_0xa226('0x9')][_0x419a65][_0x16d9c7]['target'];logger[_0xa226('0xe')](_0xa226('0x14'),_0x453d7f[_0x590809],this[_0xa226('0x9')][_0x419a65][_0x16d9c7][_0xa226('0x15')]);}else if(this[_0xa226('0x4')][_0x419a65][_0xa226('0x13')]===_0xa226('0x2')&&_0x453d7f[_0x590809]==='i'){_0x26d186=this[_0xa226('0x9')][_0x419a65][_0x16d9c7][_0xa226('0x15')];logger['info'](_0xa226('0x16'),_0x453d7f[_0x590809],this[_0xa226('0x9')][_0x419a65][_0x16d9c7][_0xa226('0x15')]);}if(_0x453d7f[_0x590809]===_0x4864c6){return this['traverseBFS'](this[_0xa226('0x9')][_0x419a65][_0x16d9c7][_0xa226('0x15')],_0x54592f);}}}else{return this[_0xa226('0xd')](this[_0xa226('0x9')][_0x419a65][_0x16d9c7]['target'],_0x54592f);}}if(_0x453d7f[_0xa226('0xf')]){if(this['vertices'][_0x419a65][_0xa226('0x13')]===_0xa226('0x17')){if(_0x26d186){return this[_0xa226('0xd')](_0x26d186,_0x54592f);}return logger['info']('default\x20on\x20switch\x20not\x20found');}else if(_[_0xa226('0x18')](verticesWithRetry,this[_0xa226('0x4')][_0x419a65][_0xa226('0x13')])){if(_0x4864c6==='-'){return logger[_0xa226('0xe')]('max\x20retry\x20reach');}if(_0x26d186&&_0x4864c6!=='t'){return this['traverseBFS'](_0x26d186,_0x54592f);}return this['traverseBFS'](_0x419a65,_0x54592f);}return logger[_0xa226('0xe')](_0xa226('0x19'));}};module[_0xa226('0x1a')]=Graph;
\ No newline at end of file
+var _0x4ee2=['no\x20vertex\x20found','stop\x20traverse','no\x20edge/s\x20available','length','split','agicommand','target','vswitch','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','edges','numberOfEdges','prototype','addVertex','push','size','vertices','relations','traverseBFS','info'];(function(_0x58712a,_0x1d88a9){var _0x342032=function(_0x5365f0){while(--_0x5365f0){_0x58712a['push'](_0x58712a['shift']());}};_0x342032(++_0x1d88a9);}(_0x4ee2,0x140));var _0x24ee=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x4ee2[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x24ee('0x0'));var logger=require(_0x24ee('0x1'))(_0x24ee('0x2'));var verticesWithRetry=[_0x24ee('0x3'),_0x24ee('0x4'),_0x24ee('0x5')];var Graph=function(){this['vertices']={};this[_0x24ee('0x6')]={};this[_0x24ee('0x7')]=0x0;};Graph[_0x24ee('0x8')][_0x24ee('0x9')]=function(_0xa36002){this['vertices'][_0xa36002['id']]=_0xa36002;this[_0x24ee('0x6')][_0xa36002['id']]=[];};Graph['prototype']['addEdge']=function(_0x4210e7,_0x44f6a2,_0x18dabe){this[_0x24ee('0x6')][_0x4210e7][_0x24ee('0xa')]({'target':_0x44f6a2,'condition':_0x18dabe});this[_0x24ee('0x7')]+=0x1;};Graph[_0x24ee('0x8')][_0x24ee('0xb')]=function(){return _[_0x24ee('0xb')](this[_0x24ee('0xc')]);};Graph[_0x24ee('0x8')][_0x24ee('0xd')]=function(){return this[_0x24ee('0x7')];};Graph[_0x24ee('0x8')]['getVertex']=function(_0x32e382){return this[_0x24ee('0xc')][_0x32e382];};Graph[_0x24ee('0x8')][_0x24ee('0xe')]=function(_0x330be8,_0x28fc31){if(!this['vertices'][_0x330be8]){return logger[_0x24ee('0xf')](_0x24ee('0x10'));}var _0x30e53a=_0x28fc31(this[_0x24ee('0xc')][_0x330be8]);if(!_0x30e53a){return logger[_0x24ee('0xf')](_0x24ee('0x11'));}if(this[_0x24ee('0x6')][_0x330be8]['length']===0x0){return logger[_0x24ee('0xf')](_0x24ee('0x12'));}for(var _0x5b049f=0x0,_0x14b0d0=[],_0x2cb4ba=![];_0x5b049f<this[_0x24ee('0x6')][_0x330be8][_0x24ee('0x13')];_0x5b049f+=0x1){if(this[_0x24ee('0x6')][_0x330be8][_0x5b049f]['condition']){_0x14b0d0=this[_0x24ee('0x6')][_0x330be8][_0x5b049f]['condition'][_0x24ee('0x14')](',');for(var _0x2c703b=0x0;_0x2c703b<_0x14b0d0['length'];_0x2c703b+=0x1){if(this[_0x24ee('0xc')][_0x330be8][_0x24ee('0x15')]==='vswitch'&&_0x14b0d0[_0x2c703b]==='-'){_0x2cb4ba=this['edges'][_0x330be8][_0x5b049f]['target'];logger[_0x24ee('0xf')]('default',_0x14b0d0[_0x2c703b],this[_0x24ee('0x6')][_0x330be8][_0x5b049f]['target']);}else if(this[_0x24ee('0xc')][_0x330be8][_0x24ee('0x15')]===_0x24ee('0x3')&&_0x14b0d0[_0x2c703b]==='i'){_0x2cb4ba=this[_0x24ee('0x6')][_0x330be8][_0x5b049f][_0x24ee('0x16')];logger[_0x24ee('0xf')]('invalid',_0x14b0d0[_0x2c703b],this[_0x24ee('0x6')][_0x330be8][_0x5b049f]['target']);}if(_0x14b0d0[_0x2c703b]===_0x30e53a){return this[_0x24ee('0xe')](this['edges'][_0x330be8][_0x5b049f][_0x24ee('0x16')],_0x28fc31);}}}else{return this[_0x24ee('0xe')](this[_0x24ee('0x6')][_0x330be8][_0x5b049f][_0x24ee('0x16')],_0x28fc31);}}if(_0x14b0d0['length']){if(this[_0x24ee('0xc')][_0x330be8]['agicommand']===_0x24ee('0x17')){if(_0x2cb4ba){return this['traverseBFS'](_0x2cb4ba,_0x28fc31);}return logger['info']('default\x20on\x20switch\x20not\x20found');}else if(_[_0x24ee('0x18')](verticesWithRetry,this[_0x24ee('0xc')][_0x330be8]['agicommand'])){if(_0x30e53a==='-'){return logger['info'](_0x24ee('0x19'));}if(_0x2cb4ba&&_0x30e53a!=='t'){return this['traverseBFS'](_0x2cb4ba,_0x28fc31);}return this['traverseBFS'](_0x330be8,_0x28fc31);}return logger['info'](_0x24ee('0x1a'));}};module[_0x24ee('0x1b')]=Graph;
\ No newline at end of file
index c4b622c..689f850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7db7=['../../config/license/util','./rpc','./events','defaults','127.0.0.1','projectUpdate','nextTick','error','findIndex','splice','push','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[ERROR]\x20%s','arg_1','callerid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','uniqueid','calleridname','evtHangup','createSquareReport','catch','hasOwnProperty','indexOf','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','find','handleNotFound','handleUnpublished','initialize','getLicense','then','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','getAll','[LICENSE]','finally','./server','connection','lodash','syncho','../../config/environment','../../config/logger','agi'];(function(_0x144017,_0x20ae3e){var _0x344537=function(_0x4f5e8b){while(--_0x4f5e8b){_0x144017['push'](_0x144017['shift']());}};_0x344537(++_0x20ae3e);}(_0x7db7,0xe3));var _0x77db=function(_0x392821,_0x17ca1c){_0x392821=_0x392821-0x0;var _0x5b81e2=_0x7db7[_0x392821];return _0x5b81e2;};'use strict';var _=require(_0x77db('0x0'));var syncho=require(_0x77db('0x1'));var util=require('util');var config=require(_0x77db('0x2'));var logger=require(_0x77db('0x3'))(_0x77db('0x4'));var utilLicense=require(_0x77db('0x5'));var rpc=require(_0x77db('0x6'));var Project=require('./project');var AGIEmitter=require(_0x77db('0x7'))['EventEmitter'];var projects=[];config[_0x77db('0x4')]=_[_0x77db('0x8')](config[_0x77db('0x4')],{'ip':_0x77db('0x9'),'port':0x11dd});AGIEmitter['on'](_0x77db('0xa'),projectUpdateHandler);function connectionHandler(_0x5c9332){process[_0x77db('0xb')](function(){syncho(function(){try{setChannelVariables(_0x5c9332);agiHandler(_0x5c9332);}catch(_0x13ba04){logger[_0x77db('0xc')](_0x13ba04['stack']);}});});}function projectUpdateHandler(_0x193327){try{var _0x2a83c9=_[_0x77db('0xd')](projects,['id',_0x193327['id']]);if(_0x2a83c9>-0x1){if(_0x193327['deleted']===!![]){projects[_0x77db('0xe')](_0x2a83c9,0x1);}else{projects[_0x2a83c9]=_0x193327;}}else{projects[_0x77db('0xf')](_0x193327);}}catch(_0x27c602){logger['error'](_0x27c602[_0x77db('0x10')]);}}function listeningHandler(){console['log'](_0x77db('0x11'),config[_0x77db('0x4')][_0x77db('0x12')]);logger[_0x77db('0x13')](util[_0x77db('0x14')](_0x77db('0x15'),config[_0x77db('0x4')]['ip'],config[_0x77db('0x4')][_0x77db('0x12')]));}function errorHandler(_0x2ff1ca){if(_0x2ff1ca&&_0x2ff1ca[_0x77db('0x16')]&&_0x2ff1ca[_0x77db('0x17')]){logger[_0x77db('0xc')](util[_0x77db('0x14')]('[%s]\x20%s',_0x2ff1ca[_0x77db('0x16')],_0x2ff1ca[_0x77db('0x17')]));}else{logger[_0x77db('0xc')](util[_0x77db('0x14')](_0x77db('0x18'),_0x2ff1ca[_0x77db('0x10')]));}}function closeHandler(){logger[_0x77db('0x13')](util[_0x77db('0x14')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x77db('0x19')],this['calleridname'],this[_0x77db('0x1a')],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x59736b){logger[_0x77db('0xc')](_0x59736b[_0x77db('0x10')]);}}function timeoutHandler(){logger[_0x77db('0x13')](util[_0x77db('0x14')](_0x77db('0x1b'),this[_0x77db('0x19')],this['calleridname'],this[_0x77db('0x1a')],this[_0x77db('0x1c')],this[_0x77db('0x1d')]));}function hangupHandler(){logger[_0x77db('0x13')](util[_0x77db('0x14')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x77db('0x19')],this[_0x77db('0x1e')],this[_0x77db('0x1a')],this[_0x77db('0x1c')],this[_0x77db('0x1d')]));this[_0x77db('0x1f')]=!![];}function createSquareReport(_0x5ee4c4,_0x6b1a70){rpc[_0x77db('0x20')](_0x5ee4c4)['then'](function(_0x1c0843){if(_0x6b1a70){_0x6b1a70(null,_0x1c0843);}})[_0x77db('0x21')](function(_0x4681e3){if(_0x6b1a70){_0x6b1a70(null,_0x4681e3);}});}function setChannelVariables(_0x599a6f){for(var _0x52b6d5 in _0x599a6f){if(_0x599a6f[_0x77db('0x22')](_0x52b6d5)){if(_0x52b6d5[_0x77db('0x23')]('agi_')===0x0){_0x599a6f[_0x52b6d5[_0x77db('0x24')](0x4)]=_0x599a6f[_0x52b6d5];delete _0x599a6f[_0x52b6d5];}}}}function agiHandler(_0x309fe9){logger[_0x77db('0x25')](_0x77db('0x26'),JSON[_0x77db('0x27')](_0x309fe9,null,0x2));logger[_0x77db('0x13')](util[_0x77db('0x14')](_0x77db('0x28'),_0x309fe9[_0x77db('0x19')],_0x309fe9[_0x77db('0x1e')],_0x309fe9[_0x77db('0x1a')],_0x309fe9[_0x77db('0x1c')],_0x309fe9[_0x77db('0x1d')]));_0x309fe9['on'](_0x77db('0xc'),errorHandler);_0x309fe9['on'](_0x77db('0x29'),closeHandler);_0x309fe9['on'](_0x77db('0x2a'),timeoutHandler);_0x309fe9[_0x77db('0x1f')]=![];_0x309fe9['on']('hangup',hangupHandler);var _0x4ad78e=_[_0x77db('0x2b')](projects,['name',_0x309fe9[_0x77db('0x19')]]);if(!_0x4ad78e)return Project[_0x77db('0x2c')](_0x309fe9);if(!_0x4ad78e['production'])return Project[_0x77db('0x2d')](_0x309fe9);return Project[_0x77db('0x2e')](_0x4ad78e,_0x309fe9);}function main(){var _0x147533;return utilLicense[_0x77db('0x2f')]()[_0x77db('0x30')](function(_0x2f424f){if(!_0x2f424f)return;if(_0x2f424f[_0x77db('0x31')]){if(_0x2f424f[_0x77db('0x32')]&&_0x2f424f[_0x77db('0x32')]>0x0){logger[_0x77db('0x13')](util[_0x77db('0x14')](_0x77db('0x33'),_0x2f424f[_0x77db('0x32')]));_0x147533=_0x2f424f[_0x77db('0x32')];}else{logger[_0x77db('0x13')](_0x77db('0x34'));}}else{logger[_0x77db('0x13')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x147533=-0x1;}})[_0x77db('0x30')](function(){return Project[_0x77db('0x35')]();})[_0x77db('0x30')](function(_0x164931){projects=_0x164931;return;})[_0x77db('0x21')](function(_0x319ae1){logger[_0x77db('0xc')](_0x77db('0x36'),_0x319ae1['stack']);})[_0x77db('0x37')](function(){var _0x354574=require(_0x77db('0x38'))(config[_0x77db('0x4')][_0x77db('0x12')],config[_0x77db('0x4')]['ip'],_0x147533);_0x354574['on'](_0x77db('0xc'),errorHandler);_0x354574['on']('listening',listeningHandler);_0x354574['on'](_0x77db('0x39'),connectionHandler);_0x354574['on'](_0x77db('0x29'),closeHandler);});}main();
\ No newline at end of file
+var _0xd07a=['name','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','createSquareReport','then','catch','hasOwnProperty','agi_','substring','debug','variables','stringify','timeout','evtHangup','hangup','find','handleNotFound','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','getAll','[LICENSE]','listening','connection','close','lodash','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./project','EventEmitter','defaults','127.0.0.1','error','stack','findIndex','splice','push','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xd07a,0x175));var _0xad07=function(_0x4996d5,_0x123daf){_0x4996d5=_0x4996d5-0x0;var _0x4793f9=_0xd07a[_0x4996d5];return _0x4793f9;};'use strict';var _=require(_0xad07('0x0'));var syncho=require('syncho');var util=require('util');var config=require(_0xad07('0x1'));var logger=require(_0xad07('0x2'))(_0xad07('0x3'));var utilLicense=require(_0xad07('0x4'));var rpc=require(_0xad07('0x5'));var Project=require(_0xad07('0x6'));var AGIEmitter=require('./events')[_0xad07('0x7')];var projects=[];config[_0xad07('0x3')]=_[_0xad07('0x8')](config['agi'],{'ip':_0xad07('0x9'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x576ddb){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x576ddb);agiHandler(_0x576ddb);}catch(_0x1af0ab){logger[_0xad07('0xa')](_0x1af0ab[_0xad07('0xb')]);}});});}function projectUpdateHandler(_0x1c5532){try{var _0x4a0b3c=_[_0xad07('0xc')](projects,['id',_0x1c5532['id']]);if(_0x4a0b3c>-0x1){if(_0x1c5532['deleted']===!![]){projects[_0xad07('0xd')](_0x4a0b3c,0x1);}else{projects[_0x4a0b3c]=_0x1c5532;}}else{projects[_0xad07('0xe')](_0x1c5532);}}catch(_0x1f429c){logger[_0xad07('0xa')](_0x1f429c[_0xad07('0xb')]);}}function listeningHandler(){console['log'](_0xad07('0xf'),config[_0xad07('0x3')][_0xad07('0x10')]);logger[_0xad07('0x11')](util[_0xad07('0x12')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config['agi']['ip'],config['agi']['port']));}function errorHandler(_0x2b04fb){if(_0x2b04fb&&_0x2b04fb[_0xad07('0x13')]&&_0x2b04fb['message']){logger[_0xad07('0xa')](util[_0xad07('0x12')](_0xad07('0x14'),_0x2b04fb[_0xad07('0x13')],_0x2b04fb['message']));}else{logger[_0xad07('0xa')](util[_0xad07('0x12')](_0xad07('0x15'),_0x2b04fb[_0xad07('0xb')]));}}function closeHandler(){logger['info'](util[_0xad07('0x12')](_0xad07('0x16'),this[_0xad07('0x17')],this['calleridname'],this['callerid'],this[_0xad07('0x18')],this['uniqueid']));try{createSquareReport(this);}catch(_0x5c09c1){logger['error'](_0x5c09c1[_0xad07('0xb')]);}}function timeoutHandler(){logger['info'](util[_0xad07('0x12')](_0xad07('0x19'),this[_0xad07('0x17')],this[_0xad07('0x1a')],this[_0xad07('0x1b')],this[_0xad07('0x18')],this[_0xad07('0x1c')]));}function hangupHandler(){logger[_0xad07('0x11')](util[_0xad07('0x12')](_0xad07('0x1d'),this['arg_1'],this[_0xad07('0x1a')],this[_0xad07('0x1b')],this[_0xad07('0x18')],this[_0xad07('0x1c')]));this['evtHangup']=!![];}function createSquareReport(_0x3bbd41,_0x2f3536){rpc[_0xad07('0x1e')](_0x3bbd41)[_0xad07('0x1f')](function(_0x33403a){if(_0x2f3536){_0x2f3536(null,_0x33403a);}})[_0xad07('0x20')](function(_0x583d92){if(_0x2f3536){_0x2f3536(null,_0x583d92);}});}function setChannelVariables(_0x513798){for(var _0x590b19 in _0x513798){if(_0x513798[_0xad07('0x21')](_0x590b19)){if(_0x590b19['indexOf'](_0xad07('0x22'))===0x0){_0x513798[_0x590b19[_0xad07('0x23')](0x4)]=_0x513798[_0x590b19];delete _0x513798[_0x590b19];}}}}function agiHandler(_0x27a75d){logger[_0xad07('0x24')](_0xad07('0x25'),JSON[_0xad07('0x26')](_0x27a75d,null,0x2));logger[_0xad07('0x11')](util[_0xad07('0x12')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x27a75d[_0xad07('0x17')],_0x27a75d[_0xad07('0x1a')],_0x27a75d['callerid'],_0x27a75d[_0xad07('0x18')],_0x27a75d['uniqueid']));_0x27a75d['on'](_0xad07('0xa'),errorHandler);_0x27a75d['on']('close',closeHandler);_0x27a75d['on'](_0xad07('0x27'),timeoutHandler);_0x27a75d[_0xad07('0x28')]=![];_0x27a75d['on'](_0xad07('0x29'),hangupHandler);var _0x4f5565=_[_0xad07('0x2a')](projects,['name',_0x27a75d[_0xad07('0x17')]]);if(!_0x4f5565)return Project[_0xad07('0x2b')](_0x27a75d);if(!_0x4f5565['production'])return Project[_0xad07('0x2c')](_0x27a75d);return Project[_0xad07('0x2d')](_0x4f5565,_0x27a75d);}function main(){var _0x56b8df;return utilLicense[_0xad07('0x2e')]()['then'](function(_0x216056){if(!_0x216056)return;if(_0x216056[_0xad07('0x2f')]){if(_0x216056[_0xad07('0x30')]&&_0x216056['callysquare']>0x0){logger[_0xad07('0x11')](util[_0xad07('0x12')](_0xad07('0x31'),_0x216056[_0xad07('0x30')]));_0x56b8df=_0x216056['callysquare'];}else{logger[_0xad07('0x11')](_0xad07('0x32'));}}else{logger[_0xad07('0x11')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x56b8df=-0x1;}})['then'](function(){return Project[_0xad07('0x33')]();})[_0xad07('0x1f')](function(_0x1ed852){projects=_0x1ed852;return;})[_0xad07('0x20')](function(_0x45aee9){logger['error'](_0xad07('0x34'),_0x45aee9[_0xad07('0xb')]);})['finally'](function(){var _0x2a49fa=require('./server')(config[_0xad07('0x3')]['port'],config[_0xad07('0x3')]['ip'],_0x56b8df);_0x2a49fa['on']('error',errorHandler);_0x2a49fa['on'](_0xad07('0x35'),listeningHandler);_0x2a49fa['on'](_0xad07('0x36'),connectionHandler);_0x2a49fa['on'](_0xad07('0x37'),closeHandler);});}main();
\ No newline at end of file
index 8d31d08..83072d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0842=['http','request','error','message','catch','sendMailMessage','bluebird','jayson/promise','client'];(function(_0x536ef0,_0x77446d){var _0x5c6c3d=function(_0x2f5c98){while(--_0x2f5c98){_0x536ef0['push'](_0x536ef0['shift']());}};_0x5c6c3d(++_0x77446d);}(_0x0842,0xe7));var _0x2084=function(_0x537fff,_0x4a9362){_0x537fff=_0x537fff-0x0;var _0x3c9874=_0x0842[_0x537fff];return _0x3c9874;};'use strict';var BPromise=require(_0x2084('0x0'));var jayson=require(_0x2084('0x1'));var client=jayson[_0x2084('0x2')][_0x2084('0x3')]({'port':0x232b});function request(_0x3dc8e1,_0x52816d){return new BPromise(function(_0x468b47,_0x141928){return client[_0x2084('0x4')](_0x3dc8e1,_0x52816d)['then'](function(_0x22bce8){if(_0x22bce8[_0x2084('0x5')]){return _0x141928(_0x22bce8['error'][_0x2084('0x6')]);}else{return _0x468b47(_0x22bce8['result']);}})[_0x2084('0x7')](function(_0x3a0311){return _0x141928(_0x3a0311);});});}exports[_0x2084('0x8')]=function(_0x82e69f,_0x22fea1){return request('SendMail',{'account':_0x82e69f,'message':_0x22fea1});};
\ No newline at end of file
+var _0xeee0=['client','request','then','error','catch','bluebird'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0xeee0,0x14f));var _0x0eee=function(_0x71e493,_0x4308b7){_0x71e493=_0x71e493-0x0;var _0x3d40ab=_0xeee0[_0x71e493];return _0x3d40ab;};'use strict';var BPromise=require(_0x0eee('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x0eee('0x1')]['http']({'port':0x232b});function request(_0x5c50db,_0x4fcf00){return new BPromise(function(_0x5e6c58,_0x4ff316){return client[_0x0eee('0x2')](_0x5c50db,_0x4fcf00)[_0x0eee('0x3')](function(_0x3ccb6e){if(_0x3ccb6e['error']){return _0x4ff316(_0x3ccb6e[_0x0eee('0x4')]['message']);}else{return _0x5e6c58(_0x3ccb6e['result']);}})[_0x0eee('0x5')](function(_0x34cea3){return _0x4ff316(_0x34cea3);});});}exports['sendMailMessage']=function(_0x259c62,_0x12548e){return request('SendMail',{'account':_0x259c62,'message':_0x12548e});};
\ No newline at end of file
index 13e56f8..7cb6c67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x349f=['getSquareProjects','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','retry','mxCell','length','target','addEdge','source','value','mxGraphModel','root','start','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','traverseBFS','clear','agicommand','gotoc','info','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','result','evtHangup','isUndefined','error','response','agicommand\x20not\x20found','finally','calleridname','uniqueid','debug','format','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','exports','lodash','moment','xml2json','../../config/logger','agi','./rpc','./mailRpc','./graph'];(function(_0x2ee0ba,_0x531595){var _0x1c2143=function(_0x267713){while(--_0x267713){_0x2ee0ba['push'](_0x2ee0ba['shift']());}};_0x1c2143(++_0x531595);}(_0x349f,0xd8));var _0xf349=function(_0x13a3ff,_0x1c3457){_0x13a3ff=_0x13a3ff-0x0;var _0x28bcb8=_0x349f[_0x13a3ff];return _0x28bcb8;};'use strict';var _=require(_0xf349('0x0'));var moment=require(_0xf349('0x1'));var parser=require(_0xf349('0x2'));var util=require('util');var logger=require(_0xf349('0x3'))(_0xf349('0x4'));var rpc=require(_0xf349('0x5'));var mailRpc=require(_0xf349('0x6'));var Graph=require(_0xf349('0x7'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xf349('0x8')]()['catch'](function(_0x4c9578){logger['error'](_0xf349('0x9'),_0x4c9578[_0xf349('0xa')]);return[];});}function addVertex(_0x67633d,_0x1b1d84,_0x2de753){_0x1b1d84['agicommand']=_0x2de753;if(_0x1b1d84[_0xf349('0xb')](_0xf349('0xc'))){_0x1b1d84['maxRetry']=parseInt(_0x1b1d84[_0xf349('0xc')],0xa);}_0x67633d['addVertex'](_['omit'](_0x1b1d84,_0xf349('0xd')));}function initGraph(_0x579471,_0x1bd07c){var _0x30b16d=new Graph();for(var _0x19b727 in _0x579471){if(_0x579471[_0xf349('0xb')](_0x19b727)){if(_['isArray'](_0x579471[_0x19b727])){for(var _0x4e5313=0x0;_0x4e5313<_0x579471[_0x19b727][_0xf349('0xe')];_0x4e5313+=0x1){addVertex(_0x30b16d,_0x579471[_0x19b727][_0x4e5313],_0x19b727);}}else{addVertex(_0x30b16d,_0x579471[_0x19b727],_0x19b727);}}}for(var _0x1411cc=0x0;_0x1411cc<_0x1bd07c['length'];_0x1411cc+=0x1){if(_0x1bd07c[_0x1411cc]['source']&&_0x1bd07c[_0x1411cc][_0xf349('0xf')]){_0x30b16d[_0xf349('0x10')](_0x1bd07c[_0x1411cc][_0xf349('0x11')],_0x1bd07c[_0x1411cc][_0xf349('0xf')],_0x1bd07c[_0x1411cc][_0xf349('0x12')]);}}return _0x30b16d;}function getRoot(_0x4508e4){return parser['toJson'](_0x4508e4,{'object':!![]})[_0xf349('0x13')][_0xf349('0x14')];}function inspect(_0x339de6){return util['inspect'](_0x339de6,{'showHidden':![],'depth':null});}function initialize(_0x5cff1e,_0x65c662){var _0x52acfa=getRoot(_0x5cff1e['production']);if(!_0x52acfa||!_0x52acfa[_0xf349('0x15')])return;var _0x27f805,_0x14cb12,_0x1ad0d2;logger['debug']('root',JSON[_0xf349('0x16')](_0x52acfa,null,0x2));_0x65c662[_0xf349('0x17')]=moment()['format'](_0xf349('0x18'));_0x27f805=initGraph(_['omit'](_0x52acfa,_0xf349('0xd')),_0x52acfa[_0xf349('0xd')]);_0x14cb12=new Vertices(_0x65c662,rpc,mailRpc);logger['info'](util['format'](_0xf349('0x19'),_0x65c662[_0xf349('0x1a')],_0x65c662['calleridname'],_0x65c662[_0xf349('0x1b')],_0x65c662[_0xf349('0x1c')],_0x65c662['uniqueid']));_0x27f805[_0xf349('0x1d')](_0x52acfa[_0xf349('0x15')]['id'],function(_0x57bc63){try{_0x57bc63=_0x14cb12[_0xf349('0x1e')](_0x57bc63);logger['debug']('vertex',JSON[_0xf349('0x16')](_0x57bc63,null,0x2));if(_0x57bc63[_0xf349('0x1f')]===_0xf349('0x20')){logger[_0xf349('0x21')](_0xf349('0x22'));_0x65c662[_0xf349('0x23')]=_0x57bc63['context']||_0x65c662[_0xf349('0x23')];_0x65c662[_0xf349('0x24')]=_0x57bc63[_0xf349('0x24')];_0x65c662['priority']=_0x57bc63[_0xf349('0x25')]?_0x57bc63['priority']-0x1:0x1;return null;}else if(_0x57bc63&&_0x14cb12[_0x57bc63[_0xf349('0x1f')]]){_0x1ad0d2=_0x14cb12[_0x57bc63[_0xf349('0x1f')]](_0x57bc63);logger['info']('response',JSON[_0xf349('0x16')](_0x1ad0d2,null,0x2));if(_0x1ad0d2&&_0x1ad0d2[_0xf349('0x26')]===AGI_CODE_SUCCESS&&_0x1ad0d2[_0xf349('0x27')]!==AGI_RESULT_ERROR&&!_0x65c662[_0xf349('0x28')]){logger['debug']('response',inspect(_0x1ad0d2));return _[_0xf349('0x29')](_0x1ad0d2[_0xf349('0x27')])?null:_0x1ad0d2[_0xf349('0x27')]['toString']();}else{logger[_0xf349('0x2a')](_0xf349('0x2b'),inspect(_0x1ad0d2));return null;}}else{logger[_0xf349('0x2a')](_0xf349('0x2c'));return null;}}catch(_0x1fa9ae){logger[_0xf349('0x2a')](_0x1fa9ae['stack']);return null;}});if(_0x52acfa[_0xf349('0x2d')]){logger['info'](util['format']('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x65c662['arg_1'],_0x65c662[_0xf349('0x2e')],_0x65c662[_0xf349('0x1b')],_0x65c662['dnid'],_0x65c662[_0xf349('0x2f')]));_0x27f805[_0xf349('0x1d')](_0x52acfa[_0xf349('0x2d')]['id'],function(_0x11afcb){try{_0x11afcb=_0x14cb12[_0xf349('0x1e')](_0x11afcb);logger[_0xf349('0x30')]('vertex',JSON[_0xf349('0x16')](_0x11afcb,null,0x2));if(_0x11afcb&&_0x14cb12[_0x11afcb['agicommand']]){_0x1ad0d2=_0x14cb12[_0x11afcb[_0xf349('0x1f')]](_0x11afcb);if(_0x1ad0d2){logger[_0xf349('0x30')](_0xf349('0x2b'),inspect(_0x1ad0d2));return _[_0xf349('0x29')](_0x1ad0d2[_0xf349('0x27')])?null:_0x1ad0d2[_0xf349('0x27')]['toString']();}else{logger['error'](_0xf349('0x2b'),inspect(_0x1ad0d2));return null;}}else{logger[_0xf349('0x2a')](_0xf349('0x2c'));return null;}}catch(_0x4b6927){logger[_0xf349('0x2a')](_0x4b6927[_0xf349('0xa')]);return null;}});}logger[_0xf349('0x21')](util[_0xf349('0x31')](_0xf349('0x32'),_0x65c662[_0xf349('0x1a')],_0x65c662['calleridname'],_0x65c662[_0xf349('0x1b')],_0x65c662[_0xf349('0x1c')],_0x65c662[_0xf349('0x2f')]));logger[_0xf349('0x21')](util[_0xf349('0x31')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x65c662[_0xf349('0x23')],_0x65c662[_0xf349('0x24')],parseInt(_0x65c662[_0xf349('0x25')],0xa)+0x1));_0x65c662[_0xf349('0x33')](_0x65c662[_0xf349('0x23')],_0x65c662['extension'],parseInt(_0x65c662[_0xf349('0x25')],0xa)+0x1);_0x65c662[_0xf349('0x34')]();}function handleNotFound(_0x5d7cba){logger[_0xf349('0x2a')](util[_0xf349('0x31')](_0xf349('0x35'),_0x5d7cba[_0xf349('0x1a')]));_0x5d7cba[_0xf349('0x33')](_0x5d7cba[_0xf349('0x23')],_0x5d7cba[_0xf349('0x24')],parseInt(_0x5d7cba[_0xf349('0x25')],0xa)+0x1);_0x5d7cba[_0xf349('0x34')]();}function handleUnpublished(_0x4c4230){logger['error'](util['format'](_0xf349('0x36'),_0x4c4230[_0xf349('0x1a')]));_0x4c4230[_0xf349('0x33')](_0x4c4230[_0xf349('0x23')],_0x4c4230[_0xf349('0x24')],parseInt(_0x4c4230[_0xf349('0x25')],0xa)+0x1);_0x4c4230[_0xf349('0x34')]();}module[_0xf349('0x37')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0xe0ed=['agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','evtHangup','toString','error','agicommand\x20not\x20found','finally','calleridname','isUndefined','[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','close','Project\x20%s\x20not\x20found','continueAt','lodash','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./vertices','catch','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','maxRetry','retry','mxCell','isArray','length','source','target','value','toJson','mxGraphModel','root','inspect','production','start','debug','joinAt','omit','info','format','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','clear','vertex','stringify'];(function(_0x11a505,_0x3fd181){var _0x1605a6=function(_0x128d96){while(--_0x128d96){_0x11a505['push'](_0x11a505['shift']());}};_0x1605a6(++_0x3fd181);}(_0xe0ed,0x105));var _0xde0e=function(_0x386827,_0x3616e6){_0x386827=_0x386827-0x0;var _0x4b08b1=_0xe0ed[_0x386827];return _0x4b08b1;};'use strict';var _=require(_0xde0e('0x0'));var moment=require('moment');var parser=require(_0xde0e('0x1'));var util=require(_0xde0e('0x2'));var logger=require(_0xde0e('0x3'))(_0xde0e('0x4'));var rpc=require(_0xde0e('0x5'));var mailRpc=require(_0xde0e('0x6'));var Graph=require('./graph');var Vertices=require(_0xde0e('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()[_0xde0e('0x8')](function(_0x142fb2){logger['error'](_0xde0e('0x9'),_0x142fb2[_0xde0e('0xa')]);return[];});}function addVertex(_0x877dfe,_0x37da43,_0x54237d){_0x37da43['agicommand']=_0x54237d;if(_0x37da43[_0xde0e('0xb')]('retry')){_0x37da43[_0xde0e('0xc')]=parseInt(_0x37da43[_0xde0e('0xd')],0xa);}_0x877dfe['addVertex'](_['omit'](_0x37da43,_0xde0e('0xe')));}function initGraph(_0xd62409,_0x30ef47){var _0x3bced2=new Graph();for(var _0x3cabee in _0xd62409){if(_0xd62409['hasOwnProperty'](_0x3cabee)){if(_[_0xde0e('0xf')](_0xd62409[_0x3cabee])){for(var _0x365ae9=0x0;_0x365ae9<_0xd62409[_0x3cabee][_0xde0e('0x10')];_0x365ae9+=0x1){addVertex(_0x3bced2,_0xd62409[_0x3cabee][_0x365ae9],_0x3cabee);}}else{addVertex(_0x3bced2,_0xd62409[_0x3cabee],_0x3cabee);}}}for(var _0x3a7431=0x0;_0x3a7431<_0x30ef47[_0xde0e('0x10')];_0x3a7431+=0x1){if(_0x30ef47[_0x3a7431]['source']&&_0x30ef47[_0x3a7431]['target']){_0x3bced2['addEdge'](_0x30ef47[_0x3a7431][_0xde0e('0x11')],_0x30ef47[_0x3a7431][_0xde0e('0x12')],_0x30ef47[_0x3a7431][_0xde0e('0x13')]);}}return _0x3bced2;}function getRoot(_0x526a3d){return parser[_0xde0e('0x14')](_0x526a3d,{'object':!![]})[_0xde0e('0x15')][_0xde0e('0x16')];}function inspect(_0x566aab){return util[_0xde0e('0x17')](_0x566aab,{'showHidden':![],'depth':null});}function initialize(_0x57d4f6,_0x41956c){var _0x3f5530=getRoot(_0x57d4f6[_0xde0e('0x18')]);if(!_0x3f5530||!_0x3f5530[_0xde0e('0x19')])return;var _0x3efe46,_0x437e2c,_0x571349;logger[_0xde0e('0x1a')](_0xde0e('0x16'),JSON['stringify'](_0x3f5530,null,0x2));_0x41956c[_0xde0e('0x1b')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3efe46=initGraph(_[_0xde0e('0x1c')](_0x3f5530,_0xde0e('0xe')),_0x3f5530['mxCell']);_0x437e2c=new Vertices(_0x41956c,rpc,mailRpc);logger[_0xde0e('0x1d')](util[_0xde0e('0x1e')](_0xde0e('0x1f'),_0x41956c[_0xde0e('0x20')],_0x41956c['calleridname'],_0x41956c[_0xde0e('0x21')],_0x41956c[_0xde0e('0x22')],_0x41956c[_0xde0e('0x23')]));_0x3efe46['traverseBFS'](_0x3f5530[_0xde0e('0x19')]['id'],function(_0x29cada){try{_0x29cada=_0x437e2c[_0xde0e('0x24')](_0x29cada);logger[_0xde0e('0x1a')](_0xde0e('0x25'),JSON[_0xde0e('0x26')](_0x29cada,null,0x2));if(_0x29cada[_0xde0e('0x27')]===_0xde0e('0x28')){logger[_0xde0e('0x1d')](_0xde0e('0x29'));_0x41956c[_0xde0e('0x2a')]=_0x29cada['context']||_0x41956c[_0xde0e('0x2a')];_0x41956c['extension']=_0x29cada[_0xde0e('0x2b')];_0x41956c[_0xde0e('0x2c')]=_0x29cada['priority']?_0x29cada[_0xde0e('0x2c')]-0x1:0x1;return null;}else if(_0x29cada&&_0x437e2c[_0x29cada[_0xde0e('0x27')]]){_0x571349=_0x437e2c[_0x29cada[_0xde0e('0x27')]](_0x29cada);logger[_0xde0e('0x1d')](_0xde0e('0x2d'),JSON[_0xde0e('0x26')](_0x571349,null,0x2));if(_0x571349&&_0x571349[_0xde0e('0x2e')]===AGI_CODE_SUCCESS&&_0x571349[_0xde0e('0x2f')]!==AGI_RESULT_ERROR&&!_0x41956c[_0xde0e('0x30')]){logger[_0xde0e('0x1a')](_0xde0e('0x2d'),inspect(_0x571349));return _['isUndefined'](_0x571349[_0xde0e('0x2f')])?null:_0x571349[_0xde0e('0x2f')][_0xde0e('0x31')]();}else{logger[_0xde0e('0x32')]('response',inspect(_0x571349));return null;}}else{logger[_0xde0e('0x32')](_0xde0e('0x33'));return null;}}catch(_0x228043){logger[_0xde0e('0x32')](_0x228043['stack']);return null;}});if(_0x3f5530[_0xde0e('0x34')]){logger[_0xde0e('0x1d')](util[_0xde0e('0x1e')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x41956c[_0xde0e('0x20')],_0x41956c[_0xde0e('0x35')],_0x41956c[_0xde0e('0x21')],_0x41956c[_0xde0e('0x22')],_0x41956c[_0xde0e('0x23')]));_0x3efe46['traverseBFS'](_0x3f5530[_0xde0e('0x34')]['id'],function(_0x268c18){try{_0x268c18=_0x437e2c[_0xde0e('0x24')](_0x268c18);logger['debug'](_0xde0e('0x25'),JSON[_0xde0e('0x26')](_0x268c18,null,0x2));if(_0x268c18&&_0x437e2c[_0x268c18[_0xde0e('0x27')]]){_0x571349=_0x437e2c[_0x268c18[_0xde0e('0x27')]](_0x268c18);if(_0x571349){logger[_0xde0e('0x1a')](_0xde0e('0x2d'),inspect(_0x571349));return _[_0xde0e('0x36')](_0x571349[_0xde0e('0x2f')])?null:_0x571349[_0xde0e('0x2f')][_0xde0e('0x31')]();}else{logger[_0xde0e('0x32')](_0xde0e('0x2d'),inspect(_0x571349));return null;}}else{logger['error'](_0xde0e('0x33'));return null;}}catch(_0x14b25b){logger['error'](_0x14b25b[_0xde0e('0xa')]);return null;}});}logger[_0xde0e('0x1d')](util['format'](_0xde0e('0x37'),_0x41956c[_0xde0e('0x20')],_0x41956c[_0xde0e('0x35')],_0x41956c['callerid'],_0x41956c[_0xde0e('0x22')],_0x41956c[_0xde0e('0x23')]));logger[_0xde0e('0x1d')](util[_0xde0e('0x1e')](_0xde0e('0x38'),_0x41956c[_0xde0e('0x2a')],_0x41956c[_0xde0e('0x2b')],parseInt(_0x41956c[_0xde0e('0x2c')],0xa)+0x1));_0x41956c['continueAt'](_0x41956c[_0xde0e('0x2a')],_0x41956c[_0xde0e('0x2b')],parseInt(_0x41956c[_0xde0e('0x2c')],0xa)+0x1);_0x41956c[_0xde0e('0x39')]();}function handleNotFound(_0x3abb6b){logger['error'](util[_0xde0e('0x1e')](_0xde0e('0x3a'),_0x3abb6b['arg_1']));_0x3abb6b[_0xde0e('0x3b')](_0x3abb6b['context'],_0x3abb6b[_0xde0e('0x2b')],parseInt(_0x3abb6b['priority'],0xa)+0x1);_0x3abb6b['close']();}function handleUnpublished(_0x3d9ff7){logger[_0xde0e('0x32')](util[_0xde0e('0x1e')]('Project\x20%s\x20not\x20published',_0x3d9ff7['arg_1']));_0x3d9ff7[_0xde0e('0x3b')](_0x3d9ff7['context'],_0x3d9ff7[_0xde0e('0x2b')],parseInt(_0x3d9ff7[_0xde0e('0x2c')],0xa)+0x1);_0x3d9ff7[_0xde0e('0x39')]();}module['exports']={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index bcce46a..a6461b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdadf=['inherits','prototype','_transform','\x0d\x0a\x0d\x0a','substring','length','split','indexOf','slice','headers','exports','util','stream','Transform','call','_localBuffer','_inBody'];(function(_0x593683,_0x2b3213){var _0x44cc39=function(_0x5f085d){while(--_0x5f085d){_0x593683['push'](_0x593683['shift']());}};_0x44cc39(++_0x2b3213);}(_0xdadf,0x1e7));var _0xfdad=function(_0x4e7eea,_0x25e0cf){_0x4e7eea=_0x4e7eea-0x0;var _0x47d56e=_0xdadf[_0x4e7eea];return _0x47d56e;};'use strict';var util=require(_0xfdad('0x0'));var Transform=require(_0xfdad('0x1'))[_0xfdad('0x2')];function AGIReply(_0x51a5b2){Transform[_0xfdad('0x3')](this,_0x51a5b2);this[_0xfdad('0x4')]='';this[_0xfdad('0x5')]=![];}util[_0xfdad('0x6')](AGIReply,Transform);AGIReply[_0xfdad('0x7')][_0xfdad('0x8')]=function(_0x85a51,_0x31ff3b,_0xca49f0){var _0x4998ad='\x0a',_0x3b48ba=['\x0a\x0a',_0xfdad('0x9')],_0x155de2=-0x1,_0x12b6fd=-0x1,_0x48befc='',_0x2dabf3=0x0,_0x1f1fd3='',_0xa252ec='';this[_0xfdad('0x4')]+=_0x85a51['toString']();_0x1f1fd3=this['_localBuffer'];if(!this[_0xfdad('0x5')]){_0x2dabf3=0x0;while(_0x3b48ba[_0x2dabf3]){while((_0x12b6fd=_0x1f1fd3['indexOf'](_0x3b48ba[_0x2dabf3]))!=-0x1){_0x48befc=_0x3b48ba[_0x2dabf3];_0xa252ec=_0x1f1fd3['substring'](0x0,_0x12b6fd);_0x1f1fd3=_0x1f1fd3[_0xfdad('0xa')](_0x12b6fd+_0x48befc[_0xfdad('0xb')]);var _0x1e9f90=_0xa252ec[_0xfdad('0xc')](_0x4998ad),_0x22223d=0x0,_0x5224c3={},_0x3add88='',_0x43cb7a='',_0x40959d=-0x1;while(_0x1e9f90[_0x22223d]){_0x40959d=_0x1e9f90[_0x22223d][_0xfdad('0xd')](':');if(_0x40959d!=-0x1){_0x3add88=_0x1e9f90[_0x22223d][_0xfdad('0xe')](0x0,_0x40959d)['trim']();_0x43cb7a=_0x1e9f90[_0x22223d][_0xfdad('0xe')](_0x40959d+0x1)['trim']();if(_0x3add88['length']>0x0){_0x5224c3[_0x3add88]=_0x43cb7a;}}else{}_0x22223d++;}this['emit'](_0xfdad('0xf'),_0x5224c3);this[_0xfdad('0x5')]=!![];}_0x2dabf3++;}this[_0xfdad('0x4')]=_0x1f1fd3;}else{while((_0x155de2=_0x1f1fd3[_0xfdad('0xd')](_0x4998ad))!=-0x1){_0xa252ec=_0x1f1fd3['substring'](0x0,_0x155de2);this['emit']('line',_0xa252ec);_0x1f1fd3=_0x1f1fd3[_0xfdad('0xa')](_0x155de2+_0x4998ad[_0xfdad('0xb')]);}this[_0xfdad('0x4')]=_0x1f1fd3;}_0xca49f0();};module[_0xfdad('0x10')]=AGIReply;
\ No newline at end of file
+var _0xe373=['inherits','prototype','_transform','\x0d\x0a\x0d\x0a','toString','_inBody','indexOf','substring','split','slice','trim','length','emit','exports','util','stream','Transform','_localBuffer'];(function(_0x3f3053,_0x3940c9){var _0x105221=function(_0x98d89){while(--_0x98d89){_0x3f3053['push'](_0x3f3053['shift']());}};_0x105221(++_0x3940c9);}(_0xe373,0x11c));var _0x3e37=function(_0x4255b2,_0x4fac86){_0x4255b2=_0x4255b2-0x0;var _0x15e39c=_0xe373[_0x4255b2];return _0x15e39c;};'use strict';var util=require(_0x3e37('0x0'));var Transform=require(_0x3e37('0x1'))[_0x3e37('0x2')];function AGIReply(_0x50ee30){Transform['call'](this,_0x50ee30);this[_0x3e37('0x3')]='';this['_inBody']=![];}util[_0x3e37('0x4')](AGIReply,Transform);AGIReply[_0x3e37('0x5')][_0x3e37('0x6')]=function(_0x2ecfde,_0x1d9c2a,_0x62b337){var _0x539870='\x0a',_0x42d6e3=['\x0a\x0a',_0x3e37('0x7')],_0x2e8fc8=-0x1,_0x563c98=-0x1,_0x5e2509='',_0x435f3f=0x0,_0x8b6133='',_0x5896d6='';this[_0x3e37('0x3')]+=_0x2ecfde[_0x3e37('0x8')]();_0x8b6133=this['_localBuffer'];if(!this[_0x3e37('0x9')]){_0x435f3f=0x0;while(_0x42d6e3[_0x435f3f]){while((_0x563c98=_0x8b6133[_0x3e37('0xa')](_0x42d6e3[_0x435f3f]))!=-0x1){_0x5e2509=_0x42d6e3[_0x435f3f];_0x5896d6=_0x8b6133['substring'](0x0,_0x563c98);_0x8b6133=_0x8b6133[_0x3e37('0xb')](_0x563c98+_0x5e2509['length']);var _0x428d01=_0x5896d6[_0x3e37('0xc')](_0x539870),_0x52c557=0x0,_0x2554ff={},_0x5508eb='',_0x5c9151='',_0x4fb220=-0x1;while(_0x428d01[_0x52c557]){_0x4fb220=_0x428d01[_0x52c557][_0x3e37('0xa')](':');if(_0x4fb220!=-0x1){_0x5508eb=_0x428d01[_0x52c557][_0x3e37('0xd')](0x0,_0x4fb220)['trim']();_0x5c9151=_0x428d01[_0x52c557]['slice'](_0x4fb220+0x1)[_0x3e37('0xe')]();if(_0x5508eb[_0x3e37('0xf')]>0x0){_0x2554ff[_0x5508eb]=_0x5c9151;}}else{}_0x52c557++;}this[_0x3e37('0x10')]('headers',_0x2554ff);this[_0x3e37('0x9')]=!![];}_0x435f3f++;}this[_0x3e37('0x3')]=_0x8b6133;}else{while((_0x2e8fc8=_0x8b6133[_0x3e37('0xa')](_0x539870))!=-0x1){_0x5896d6=_0x8b6133[_0x3e37('0xb')](0x0,_0x2e8fc8);this[_0x3e37('0x10')]('line',_0x5896d6);_0x8b6133=_0x8b6133['substring'](_0x2e8fc8+_0x539870[_0x3e37('0xf')]);}this[_0x3e37('0x3')]=_0x8b6133;}_0x62b337();};module[_0x3e37('0x11')]=AGIReply;
\ No newline at end of file
index c97a8ee..6781368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af3=['arg_2','format','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ListId','then','CreateCmContact','getPauseById','ShowPause','agentLogin','agentPause','agentUnpause','UnpauseUser','agentLogout','LogoutUser','lodash','moment','jayson/promise','client','http','request','error','message','catch','getSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','MailServerOut','Smtp','CloudProvider','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById','ShowTrunk','getSoundById','ShowSound','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','merge','arg_1'];(function(_0x4947c0,_0x19593d){var _0x43dcaf=function(_0x270594){while(--_0x270594){_0x4947c0['push'](_0x4947c0['shift']());}};_0x43dcaf(++_0x19593d);}(_0x1af3,0x1ca));var _0x31af=function(_0x45346d,_0xffd56b){_0x45346d=_0x45346d-0x0;var _0x5ce7ca=_0x1af3[_0x45346d];return _0x5ce7ca;};'use strict';var _=require(_0x31af('0x0'));var moment=require(_0x31af('0x1'));var jayson=require(_0x31af('0x2'));var client=jayson[_0x31af('0x3')][_0x31af('0x4')]({'port':0x2329});function request(_0xf27e22,_0x3d693c){return new Promise(function(_0x1a6ea6,_0x3d64ae){return client[_0x31af('0x5')](_0xf27e22,_0x3d693c)['then'](function(_0x19acd1){if(_0x19acd1[_0x31af('0x6')]){return _0x3d64ae(_0x19acd1[_0x31af('0x6')][_0x31af('0x7')]);}else{return _0x1a6ea6(_0x19acd1['result']);}})[_0x31af('0x8')](function(_0x1833de){return _0x3d64ae(_0x1833de);});});}exports[_0x31af('0x9')]=function(){return request('GetSquareProjects',{'options':{'raw':![],'attributes':['id',_0x31af('0xa'),_0x31af('0xb')]}});};exports[_0x31af('0xc')]=function(_0x1d2cd0){return request(_0x31af('0xd'),{'options':{'raw':![],'where':{'name':_0x1d2cd0},'attributes':[_0x31af('0xb')]}});};exports[_0x31af('0xe')]=function(_0x33b4a5){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x33b4a5},'include':[{'model':_0x31af('0xf'),'as':_0x31af('0x10'),'include':[{'model':_0x31af('0x11'),'as':_0x31af('0x11')}]}],'attributes':['id',_0x31af('0xa'),'email'],'smtp':!![]}});};exports[_0x31af('0x12')]=function(_0x4fc1ca){return request('ShowSquareProject',{'options':{'where':{'id':_0x4fc1ca},'attributes':['name']}});};exports[_0x31af('0x13')]=function(_0x46a494){return request(_0x31af('0x14'),{'options':{'where':{'id':_0x46a494},'attributes':[_0x31af('0xa')]}});};exports[_0x31af('0x15')]=function(_0x1d35fa){return request(_0x31af('0x16'),{'options':{'where':{'id':_0x1d35fa},'attributes':[_0x31af('0xa')]}});};exports[_0x31af('0x17')]=function(_0x5a651f){return request(_0x31af('0x18'),{'options':{'where':{'id':_0x5a651f},'attributes':['dsn']}});};exports[_0x31af('0x19')]=function(_0xd33b3f){return request(_0x31af('0x1a'),{'options':{'where':{'id':_0xd33b3f},'attributes':[_0x31af('0xa')]}});};exports[_0x31af('0x1b')]=function(_0x30a112){return request(_0x31af('0x1c'),{'options':{'where':{'phone':_0x30a112[_0x31af('0x1d')]},'attributes':['id']}});};exports[_0x31af('0x1e')]=function(_0x550870){return request(_0x31af('0x1f'),{'options':{'where':{'id':_0x550870},'attributes':[_0x31af('0xa')]}});};exports[_0x31af('0x20')]=function(_0x2ce4c2){return request(_0x31af('0x21'),{'options':{'where':{'id':_0x2ce4c2},'attributes':['save_name']}});};exports[_0x31af('0x22')]=function(_0x46b03e){return request(_0x31af('0x23'),{'options':{'raw':![],'where':{'id':_0x46b03e},'include':[{'model':_0x31af('0x24'),'as':_0x31af('0x25')}]}});};exports[_0x31af('0x26')]=function(_0x1ddfba){return request(_0x31af('0x27'),{'options':{'where':{'id':_0x1ddfba},'attributes':['id',_0x31af('0xa')]}});};exports[_0x31af('0x28')]=function(_0x40aa32){return request(_0x31af('0x29'),{'body':_0x40aa32});};exports[_0x31af('0x2a')]=function(_0x34a5a7){return request(_0x31af('0x2b'),{'body':_0x34a5a7});};exports['createSquareReport']=function(_0x5b74ca){return request('CreateSquareReport',{'body':_[_0x31af('0x2c')](_0x5b74ca,{'project_name':_0x5b74ca[_0x31af('0x2d')],'prev_project_name':_0x5b74ca['arg_2']||'','is_subproject':_0x5b74ca[_0x31af('0x2e')]?!![]:![],'leaveAt':moment()[_0x31af('0x2f')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x31af('0x30')]=function(_0x21e227){return request('CreateSquareRecording',{'body':_0x21e227});};exports[_0x31af('0x31')]=function(_0x28bb13){return request(_0x31af('0x32'),{'body':_0x28bb13});};exports[_0x31af('0x33')]=function(_0x3326a7){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x3326a7[_0x31af('0x1d')],'ListId':_0x3326a7[_0x31af('0x34')]}}})[_0x31af('0x35')](function(_0x1f4eae){if(_0x1f4eae){return _0x1f4eae;}return request(_0x31af('0x36'),{'body':_0x3326a7});});};exports[_0x31af('0x37')]=function(_0x149d01){return request(_0x31af('0x38'),{'options':{'where':{'id':_0x149d01},'attributes':[_0x31af('0xa')]}});};exports[_0x31af('0x39')]=function(_0x388e9c,_0x27ad23){return request('LoginUser',{'body':{'interface':_0x27ad23},'options':{'where':_0x388e9c}});};exports[_0x31af('0x3a')]=function(_0xf58cfe,_0x4d5166,_0x4cabed){return request('PauseUser',{'body':{'type':_0x4d5166,'uniqueid':_0x4cabed},'options':{'where':_0xf58cfe}});};exports[_0x31af('0x3b')]=function(_0x49783f){return request(_0x31af('0x3c'),{'body':{},'options':{'where':_0x49783f}});};exports[_0x31af('0x3d')]=function(_0x2899a0){return request(_0x31af('0x3e'),{'body':{},'options':{'where':_0x2899a0}});};
\ No newline at end of file
+var _0x4f29=['getTrunkById','ShowTrunk','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','createSquareDetailsReport','createSquareReport','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createCmContact','ShowCmHopper','ListId','CreateCmContact','ShowPause','agentLogin','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','moment','jayson/promise','client','http','request','then','message','result','catch','getSquareProjects','getSquareProject','ShowSquareProject','production','getMailAccountById','MailServerOut','Smtp','CloudProvider','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','ShowVariable','ShowSquareOdbc','ShowUser','GetContactByPhone','phone'];(function(_0x3ad8d1,_0xdb6b71){var _0x2ed13f=function(_0x5f4942){while(--_0x5f4942){_0x3ad8d1['push'](_0x3ad8d1['shift']());}};_0x2ed13f(++_0xdb6b71);}(_0x4f29,0xfd));var _0x94f2=function(_0x3e56e6,_0xace190){_0x3e56e6=_0x3e56e6-0x0;var _0x474363=_0x4f29[_0x3e56e6];return _0x474363;};'use strict';var _=require('lodash');var moment=require(_0x94f2('0x0'));var jayson=require(_0x94f2('0x1'));var client=jayson[_0x94f2('0x2')][_0x94f2('0x3')]({'port':0x2329});function request(_0xc16ee3,_0x36e06e){return new Promise(function(_0x338fe2,_0x2a6535){return client[_0x94f2('0x4')](_0xc16ee3,_0x36e06e)[_0x94f2('0x5')](function(_0x273314){if(_0x273314['error']){return _0x2a6535(_0x273314['error'][_0x94f2('0x6')]);}else{return _0x338fe2(_0x273314[_0x94f2('0x7')]);}})[_0x94f2('0x8')](function(_0x224a93){return _0x2a6535(_0x224a93);});});}exports[_0x94f2('0x9')]=function(){return request('GetSquareProjects',{'options':{'raw':![],'attributes':['id','name','production']}});};exports[_0x94f2('0xa')]=function(_0x511952){return request(_0x94f2('0xb'),{'options':{'raw':![],'where':{'name':_0x511952},'attributes':[_0x94f2('0xc')]}});};exports[_0x94f2('0xd')]=function(_0x117396){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x117396},'include':[{'model':_0x94f2('0xe'),'as':_0x94f2('0xf'),'include':[{'model':_0x94f2('0x10'),'as':_0x94f2('0x10')}]}],'attributes':['id',_0x94f2('0x11'),_0x94f2('0x12')],'smtp':!![]}});};exports[_0x94f2('0x13')]=function(_0x490142){return request(_0x94f2('0xb'),{'options':{'where':{'id':_0x490142},'attributes':['name']}});};exports[_0x94f2('0x14')]=function(_0x7a3dc0){return request(_0x94f2('0x15'),{'options':{'where':{'id':_0x7a3dc0},'attributes':['name']}});};exports['getVariableById']=function(_0x292953){return request(_0x94f2('0x16'),{'options':{'where':{'id':_0x292953},'attributes':[_0x94f2('0x11')]}});};exports['getSquareOdbcById']=function(_0x8496f1){return request(_0x94f2('0x17'),{'options':{'where':{'id':_0x8496f1},'attributes':['dsn']}});};exports['getUserById']=function(_0x423aa8){return request(_0x94f2('0x18'),{'options':{'where':{'id':_0x423aa8},'attributes':[_0x94f2('0x11')]}});};exports['getContactByPhone']=function(_0x302c00){return request(_0x94f2('0x19'),{'options':{'where':{'phone':_0x302c00[_0x94f2('0x1a')]},'attributes':['id']}});};exports[_0x94f2('0x1b')]=function(_0x4ceba8){return request(_0x94f2('0x1c'),{'options':{'where':{'id':_0x4ceba8},'attributes':[_0x94f2('0x11')]}});};exports['getSoundById']=function(_0x397744){return request(_0x94f2('0x1d'),{'options':{'where':{'id':_0x397744},'attributes':[_0x94f2('0x1e')]}});};exports[_0x94f2('0x1f')]=function(_0x6858ba){return request(_0x94f2('0x20'),{'options':{'raw':![],'where':{'id':_0x6858ba},'include':[{'model':_0x94f2('0x21'),'as':_0x94f2('0x22')}]}});};exports[_0x94f2('0x23')]=function(_0xed0b88){return request(_0x94f2('0x24'),{'options':{'where':{'id':_0xed0b88},'attributes':['id',_0x94f2('0x11')]}});};exports[_0x94f2('0x25')]=function(_0x35b31d){return request('CreateSmsMessage',{'body':_0x35b31d});};exports[_0x94f2('0x26')]=function(_0xf4eeb0){return request('CreateSquareDetailsReport',{'body':_0xf4eeb0});};exports[_0x94f2('0x27')]=function(_0x3e2e0a){return request('CreateSquareReport',{'body':_['merge'](_0x3e2e0a,{'project_name':_0x3e2e0a['arg_1'],'prev_project_name':_0x3e2e0a['arg_2']||'','is_subproject':_0x3e2e0a['arg_2']?!![]:![],'leaveAt':moment()[_0x94f2('0x28')](_0x94f2('0x29'))})});};exports[_0x94f2('0x2a')]=function(_0x14ae14){return request(_0x94f2('0x2b'),{'body':_0x14ae14});};exports['createSquareMessage']=function(_0x1ccf31){return request('CreateSquareMessage',{'body':_0x1ccf31});};exports[_0x94f2('0x2c')]=function(_0xd5b804){return request(_0x94f2('0x2d'),{'options':{'raw':![],'where':{'phone':_0xd5b804[_0x94f2('0x1a')],'ListId':_0xd5b804[_0x94f2('0x2e')]}}})[_0x94f2('0x5')](function(_0x27d85f){if(_0x27d85f){return _0x27d85f;}return request(_0x94f2('0x2f'),{'body':_0xd5b804});});};exports['getPauseById']=function(_0x134a0f){return request(_0x94f2('0x30'),{'options':{'where':{'id':_0x134a0f},'attributes':[_0x94f2('0x11')]}});};exports[_0x94f2('0x31')]=function(_0x547a48,_0xd54694){return request('LoginUser',{'body':{'interface':_0xd54694},'options':{'where':_0x547a48}});};exports[_0x94f2('0x32')]=function(_0x1e8033,_0x3096bf,_0x4c8c14){return request(_0x94f2('0x33'),{'body':{'type':_0x3096bf,'uniqueid':_0x4c8c14},'options':{'where':_0x1e8033}});};exports[_0x94f2('0x34')]=function(_0x280ae4){return request(_0x94f2('0x35'),{'body':{},'options':{'where':_0x280ae4}});};exports[_0x94f2('0x36')]=function(_0x25c0b0){return request(_0x94f2('0x37'),{'body':{},'options':{'where':_0x25c0b0}});};
\ No newline at end of file
index 35ef82b..ad452da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5e0=['./lex','exports','./polly'];(function(_0x4b88d6,_0x463bd2){var _0x4ef951=function(_0x224514){while(--_0x224514){_0x4b88d6['push'](_0x4b88d6['shift']());}};_0x4ef951(++_0x463bd2);}(_0xe5e0,0x1be));var _0x0e5e=function(_0x397fe1,_0x5020cf){_0x397fe1=_0x397fe1-0x0;var _0x59f12e=_0xe5e0[_0x397fe1];return _0x59f12e;};var polly=require(_0x0e5e('0x0'));var lex=require(_0x0e5e('0x1'));module[_0x0e5e('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x6c45=['./lex','./polly'];(function(_0x2a9352,_0x2c92f9){var _0x4eb483=function(_0x3e6c16){while(--_0x3e6c16){_0x2a9352['push'](_0x2a9352['shift']());}};_0x4eb483(++_0x2c92f9);}(_0x6c45,0xb1));var _0x56c4=function(_0x1727bc,_0x4d5590){_0x1727bc=_0x1727bc-0x0;var _0x10e45f=_0x6c45[_0x1727bc];return _0x10e45f;};var polly=require(_0x56c4('0x0'));var lex=require(_0x56c4('0x1'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index 909fc2d..930651b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['exports'];(function(_0x170772,_0x1f1ee7){var _0x3ef69c=function(_0x4cde12){while(--_0x4cde12){_0x170772['push'](_0x170772['shift']());}};_0x3ef69c(++_0x1f1ee7);}(_0xda3f,0xec));var _0xfda3=function(_0xa57b,_0x321bfe){_0xa57b=_0xa57b-0x0;var _0x23a6f6=_0xda3f[_0xa57b];return _0x23a6f6;};'use strict';var lex=require('./lib/api');module[_0xfda3('0x0')]=function(_0xf4e78,_0x534697,_0x5299b0,_0x5d7071,_0x3859fe,_0x581693){return lex(_0xf4e78,_0x534697,_0x5299b0,_0x5d7071,_0x3859fe,_0x581693);};
\ No newline at end of file
+var _0x6c76=['./lib/api','exports'];(function(_0x3a98db,_0x35330e){var _0xce13bc=function(_0x5db35d){while(--_0x5db35d){_0x3a98db['push'](_0x3a98db['shift']());}};_0xce13bc(++_0x35330e);}(_0x6c76,0x184));var _0x66c7=function(_0x17c364,_0x4194f5){_0x17c364=_0x17c364-0x0;var _0xc1ed5=_0x6c76[_0x17c364];return _0xc1ed5;};'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 b477312..e2f4d11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x8cfcf0,_0x51fcdc){var _0x167c92=function(_0x23c0b7){while(--_0x23c0b7){_0x8cfcf0['push'](_0x8cfcf0['shift']());}};_0x167c92(++_0x51fcdc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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(_0x257523,_0x28cd48){var _0x20e793=function(_0x153dc9){while(--_0x153dc9){_0x257523['push'](_0x257523['shift']());}};_0x20e793(++_0x28cd48);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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 1e66c82..903cac5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x698c=['exports','./lib/api'];(function(_0x2cf99b,_0x460003){var _0x4b4ac9=function(_0x10ace5){while(--_0x10ace5){_0x2cf99b['push'](_0x2cf99b['shift']());}};_0x4b4ac9(++_0x460003);}(_0x698c,0xb7));var _0xc698=function(_0x475b60,_0x1243a7){_0x475b60=_0x475b60-0x0;var _0x397fe1=_0x698c[_0x475b60];return _0x397fe1;};'use strict';var polly=require(_0xc698('0x0'));module[_0xc698('0x1')]=function(_0x524b3e,_0xbed23f,_0x3d88c7,_0x2e421b,_0x5c5a3f,_0x19d3c1,_0x20dcf0){return polly(_0x524b3e,_0xbed23f,_0x3d88c7,_0x2e421b,_0x5c5a3f,_0x19d3c1,_0x20dcf0);};
\ No newline at end of file
+var _0x342f=['exports','./lib/api'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x342f,0xbb));var _0xf342=function(_0x15cf85,_0x46015f){_0x15cf85=_0x15cf85-0x0;var _0x12fb0e=_0x342f[_0x15cf85];return _0x12fb0e;};'use strict';var polly=require(_0xf342('0x0'));module[_0xf342('0x1')]=function(_0x559e10,_0x1fe9e5,_0x977a5c,_0x398666,_0x118b31,_0x4a979d,_0x1f76ba){return polly(_0x559e10,_0x1fe9e5,_0x977a5c,_0x398666,_0x118b31,_0x4a979d,_0x1f76ba);};
\ No newline at end of file
index 18e6b0a..2e10c2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7734=['aws-sdk','synthesizeSpeech','AudioStream','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','path','bluebird','randomstring'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x7734,0x7b));var _0x4773=function(_0xd79de2,_0x37a4cb){_0xd79de2=_0xd79de2-0x0;var _0x211e3c=_0x7734[_0xd79de2];return _0x211e3c;};'use strict';var fs=require('fs');var path=require(_0x4773('0x0'));var BPromise=require(_0x4773('0x1'));var rs=require(_0x4773('0x2'));var AWS=require(_0x4773('0x3'));function pollyResult(_0x48fc4f,_0x418616,_0x2b9967){return new BPromise(function(_0x1abfd8,_0x3cadf0){_0x48fc4f[_0x4773('0x4')](_0x418616,function(_0x15c82c,_0x311989){if(_0x15c82c){_0x3cadf0(_0x15c82c);}else if(_0x311989){if(_0x311989[_0x4773('0x5')]instanceof Buffer){fs['writeFile'](_0x2b9967,_0x311989[_0x4773('0x5')],function(_0x3ee6e2){if(_0x3ee6e2){_0x3cadf0(_0x3ee6e2);}else{_0x1abfd8();}});}else{_0x3cadf0(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x3cadf0(new Error(_0x4773('0x6')));}});});}module[_0x4773('0x7')]=function(_0x3649ad,_0x4b0a1d,_0x37a79a,_0x4b49e4,_0x4a8c4c,_0x4648b7,_0x93785e){var _0x7e0e=new AWS['Polly']({'accessKeyId':_0x3649ad,'secretAccessKey':_0x4b0a1d,'region':_0x37a79a});var _0x7587de={'Text':_0x4a8c4c,'TextType':_0x4648b7||_0x4773('0x8'),'OutputFormat':'mp3','VoiceId':_0x4b49e4};return pollyResult(_0x7e0e,_0x7587de,_0x93785e);};
\ No newline at end of file
+var _0x59d2=['randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','path','bluebird'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x59d2,0xe5));var _0x259d=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x59d2[_0xa1e3e3];return _0xc980e9;};'use strict';var fs=require('fs');var path=require(_0x259d('0x0'));var BPromise=require(_0x259d('0x1'));var rs=require(_0x259d('0x2'));var AWS=require(_0x259d('0x3'));function pollyResult(_0x17b1f1,_0x5e55e6,_0x3f4cca){return new BPromise(function(_0x3c8b4e,_0x3564b7){_0x17b1f1[_0x259d('0x4')](_0x5e55e6,function(_0x11e35f,_0x12bc1b){if(_0x11e35f){_0x3564b7(_0x11e35f);}else if(_0x12bc1b){if(_0x12bc1b[_0x259d('0x5')]instanceof Buffer){fs[_0x259d('0x6')](_0x3f4cca,_0x12bc1b[_0x259d('0x5')],function(_0x5edcf3){if(_0x5edcf3){_0x3564b7(_0x5edcf3);}else{_0x3c8b4e();}});}else{_0x3564b7(new Error(_0x259d('0x7')));}}else{_0x3564b7(new Error(_0x259d('0x8')));}});});}module[_0x259d('0x9')]=function(_0x5efb45,_0xa93f05,_0x3b3b3e,_0x4a4e44,_0x307363,_0x3e8067,_0x1cf3de){var _0x53ca6a=new AWS['Polly']({'accessKeyId':_0x5efb45,'secretAccessKey':_0xa93f05,'region':_0x3b3b3e});var _0x432e95={'Text':_0x307363,'TextType':_0x3e8067||_0x259d('0xa'),'OutputFormat':'mp3','VoiceId':_0x4a4e44};return pollyResult(_0x53ca6a,_0x432e95,_0x1cf3de);};
\ No newline at end of file
index 7d74415..16b35c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8726=['./lib/api'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x8726,0x1cc));var _0x6872=function(_0x3f6574,_0x579ea3){_0x3f6574=_0x3f6574-0x0;var _0x524251=_0x8726[_0x3f6574];return _0x524251;};'use strict';var asr=require(_0x6872('0x0'));module['exports']=function(_0x219908,_0x44658e,_0x12f126,_0xbeeba){return asr(_0x219908,_0x44658e,_0x12f126);};
\ No newline at end of file
+var _0x3437=['exports','./lib/api'];(function(_0x5c92a4,_0x819c46){var _0x2007e7=function(_0x4235f6){while(--_0x4235f6){_0x5c92a4['push'](_0x5c92a4['shift']());}};_0x2007e7(++_0x819c46);}(_0x3437,0x191));var _0x7343=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x3437[_0x21a9d9];return _0x46adce;};'use strict';var asr=require(_0x7343('0x0'));module[_0x7343('0x1')]=function(_0x30a371,_0x202ed2,_0x4fb1e7,_0x4306f6){return asr(_0x30a371,_0x202ed2,_0x4fb1e7);};
\ No newline at end of file
index 68d99bb..e95f613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a47=['base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','length','filepath\x20should\x20be\x20a\x20string','string','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString'];(function(_0x30924b,_0x43646a){var _0x579041=function(_0x17760c){while(--_0x17760c){_0x30924b['push'](_0x30924b['shift']());}};_0x579041(++_0x43646a);}(_0x4a47,0xb5));var _0x74a4=function(_0x4421b5,_0x13d0f6){_0x4421b5=_0x4421b5-0x0;var _0x26cca3=_0x4a47[_0x4421b5];return _0x26cca3;};'use strict';var url=require(_0x74a4('0x0'));var BPromise=require(_0x74a4('0x1'));var fs=require('fs');var host=_0x74a4('0x2');module[_0x74a4('0x3')]=function(_0x43adbe,_0x54d63a,_0x24cff9){return new BPromise(function(_0x55c541,_0x2aa3d1){var _0x450c10;if(typeof _0x43adbe!=='string'||_0x43adbe[_0x74a4('0x4')]===0x0){return _0x2aa3d1(_0x74a4('0x5'));}if(typeof _0x54d63a!==_0x74a4('0x6')||_0x54d63a['length']===0x0){return _0x2aa3d1(_0x74a4('0x7'));}if(typeof _0x24cff9!=='undefined'&&(typeof _0x24cff9!==_0x74a4('0x6')||_0x24cff9['length']===0x0)){return _0x2aa3d1(_0x74a4('0x8'));}try{_0x450c10=fs[_0x74a4('0x9')](_0x43adbe)[_0x74a4('0xa')](_0x74a4('0xb'));}catch(_0x56a17a){return _0x2aa3d1(_0x56a17a);}return _0x55c541({'method':_0x74a4('0xc'),'uri':host+_0x74a4('0xd')+_0x54d63a,'body':{'config':{'encoding':_0x74a4('0xe'),'sampleRateHertz':_0x74a4('0xf'),'languageCode':_0x24cff9},'audio':{'content':_0x450c10}},'json':!![]});});};
\ No newline at end of file
+var _0x8db0=['length','string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','exports'];(function(_0x3ebd42,_0x29741a){var _0x41cd10=function(_0x390fc4){while(--_0x390fc4){_0x3ebd42['push'](_0x3ebd42['shift']());}};_0x41cd10(++_0x29741a);}(_0x8db0,0x65));var _0x08db=function(_0x3be2e2,_0x5c166d){_0x3be2e2=_0x3be2e2-0x0;var _0x53b9c5=_0x8db0[_0x3be2e2];return _0x53b9c5;};'use strict';var url=require(_0x08db('0x0'));var BPromise=require(_0x08db('0x1'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0x08db('0x2')]=function(_0x2ac694,_0x17ccf3,_0x5eb423){return new BPromise(function(_0x3b5170,_0x55e572){var _0x4f4614;if(typeof _0x2ac694!=='string'||_0x2ac694[_0x08db('0x3')]===0x0){return _0x55e572('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x17ccf3!==_0x08db('0x4')||_0x17ccf3['length']===0x0){return _0x55e572(_0x08db('0x5'));}if(typeof _0x5eb423!==_0x08db('0x6')&&(typeof _0x5eb423!==_0x08db('0x4')||_0x5eb423[_0x08db('0x3')]===0x0)){return _0x55e572(_0x08db('0x7'));}try{_0x4f4614=fs['readFileSync'](_0x2ac694)['toString'](_0x08db('0x8'));}catch(_0x2fe457){return _0x55e572(_0x2fe457);}return _0x3b5170({'method':_0x08db('0x9'),'uri':host+_0x08db('0xa')+_0x17ccf3,'body':{'config':{'encoding':_0x08db('0xb'),'sampleRateHertz':_0x08db('0xc'),'languageCode':_0x5eb423},'audio':{'content':_0x4f4614}},'json':!![]});});};
\ No newline at end of file
index eaf25a7..182994c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9353=['./asr'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x9353,0x7d));var _0x3935=function(_0x4ec15e,_0x3040d8){_0x4ec15e=_0x4ec15e-0x0;var _0x408b47=_0x9353[_0x4ec15e];return _0x408b47;};var asr=require(_0x3935('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x428b=['exports'];(function(_0x454064,_0x1c6c86){var _0x1a18c1=function(_0xdceeba){while(--_0xdceeba){_0x454064['push'](_0x454064['shift']());}};_0x1a18c1(++_0x1c6c86);}(_0x428b,0x72));var _0xb428=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0x428b[_0x4a747d];return _0x3a5b5c;};var asr=require('./asr');module[_0xb428('0x0')]={'asr':asr};
\ No newline at end of file
index 0ba755f..21a6bda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7211=['http','https','path','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./google','./tilde','../../../config/logger','agi','protocol','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','finish\x20download\x20file','close','unlink','pipe','data','end','transcode','wav','finish\x20to\x20convert','start','resolve','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','?key=','ssml','input','audioConfig','MP3','text:synthesize','POST','tmp','generate','.mp3','from','audioContent','info','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','jQ1olc','stringify','generic','slice','length','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','writeFileSync','goggleTTS\x20path','googleASR','asr','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','speech','score','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','languageCode','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','.wav','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','bluebird'];(function(_0x46a563,_0x586712){var _0x10aa22=function(_0x199db8){while(--_0x199db8){_0x46a563['push'](_0x46a563['shift']());}};_0x10aa22(++_0x586712);}(_0x7211,0x86));var _0x1721=function(_0x394544,_0xf991c2){_0x394544=_0x394544-0x0;var _0x549582=_0x7211[_0x394544];return _0x549582;};'use strict';var apiai=require(_0x1721('0x0'));var BPromise=require(_0x1721('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x1721('0x2'));var https=require(_0x1721('0x3'));var md5=require('md5');var path=require(_0x1721('0x4'));var querystring=require(_0x1721('0x5'));var rp=require(_0x1721('0x6'));var rs=require(_0x1721('0x7'));var sox=require('sox');var tts=require(_0x1721('0x8'));var urlParse=require(_0x1721('0x9'))[_0x1721('0xa')];var util=require(_0x1721('0xb'));var aws=require('./aws');var google=require(_0x1721('0xc'));var sestek=require('./sestek');var tilde=require(_0x1721('0xd'));var logger=require(_0x1721('0xe'))(_0x1721('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x4f48e3,_0x4afa0c){return new BPromise(function(_0x509bde,_0x324b50){var _0x309064=urlParse(_0x4f48e3);var _0x16dde0=_0x309064[_0x1721('0x10')]===_0x1721('0x11')?https:http;var _0xb1e7bf={'host':_0x309064[_0x1721('0x12')],'path':_0x309064[_0x1721('0x4')],'headers':{'user-agent':_0x1721('0x13')}};_0x16dde0[_0x1721('0x14')](_0xb1e7bf,function(_0xb422d1){if(_0xb422d1[_0x1721('0x15')]!==0xc8){logger[_0x1721('0x16')](_0x1721('0x17')+_0x4f48e3+_0x1721('0x18')+_0xb422d1[_0x1721('0x15')]+'\x20('+_0xb422d1[_0x1721('0x19')]+')');_0x324b50(new Error('request\x20to\x20'+_0x4f48e3+'\x20failed,\x20status\x20code\x20=\x20'+_0xb422d1[_0x1721('0x15')]+'\x20('+_0xb422d1['statusMessage']+')'));return;}var _0x9309dd=fs[_0x1721('0x1a')](_0x4afa0c);_0x9309dd['on'](_0x1721('0x1b'),function(){logger['info'](_0x1721('0x1c'));_0x9309dd[_0x1721('0x1d')](_0x509bde);});_0x9309dd['on'](_0x1721('0x16'),function(_0x3947ce){fs[_0x1721('0x1e')](_0x4afa0c);logger['error']('download\x20error',_0x3947ce);_0x324b50(_0x3947ce);});_0xb422d1[_0x1721('0x1f')](_0x9309dd);})['on']('error',function(_0x54c89b){logger[_0x1721('0x16')](_0x54c89b);_0x324b50(_0x54c89b);})['end']();});}function uploadFile(_0x15554c){return new BPromise(function(_0x460cc2,_0xaf20b9){var _0x23ab0c=urlParse(_0x15554c);var _0x12d49b=_0x23ab0c['protocol']===_0x1721('0x11')?https:http;var _0x2fdc3b={'host':_0x23ab0c[_0x1721('0x12')],'path':_0x23ab0c[_0x1721('0x4')],'headers':{'user-agent':_0x1721('0x13')}};_0x12d49b[_0x1721('0x14')](_0x2fdc3b,function(_0x1850ce){if(_0x1850ce[_0x1721('0x15')]!==0xc8){_0xaf20b9(new Error(_0x1721('0x17')+_0x15554c+_0x1721('0x18')+_0x1850ce[_0x1721('0x15')]+'\x20('+_0x1850ce['statusMessage']+')'));return;}var _0x686c18='';_0x1850ce['on'](_0x1721('0x20'),function(_0x169f50){_0x686c18+=_0x169f50;});_0x1850ce['on'](_0x1721('0x21'),function(){_0x460cc2(_0x686c18);});})['on'](_0x1721('0x16'),function(_0x48c7fa){_0xaf20b9(_0x48c7fa);})['end']();});}function convertFile(_0x5e9f83,_0x57c2f9){return new BPromise(function(_0x2374e0,_0x72eb21){var _0x3f81b8=sox[_0x1721('0x22')](_0x5e9f83,_0x57c2f9,{'sampleRate':0x1f40,'format':_0x1721('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3f81b8['on'](_0x1721('0x16'),function(_0x2425e3){logger['error']('error\x20convert',_0x2425e3);_0x72eb21(_0x2425e3);});_0x3f81b8['on'](_0x1721('0x21'),function(){logger['info'](_0x1721('0x24'));_0x2374e0();});_0x3f81b8[_0x1721('0x25')]();});}function base64Decode(_0x820ebd,_0x58b298){var _0x328717=path[_0x1721('0x26')](__dirname,'tmp',rs['generate'](0x4)+'.wav');fs['writeFileSync'](_0x328717,_0x820ebd,_0x1721('0x27'));return convertFile(_0x328717,_0x58b298)[_0x1721('0x28')](function(){try{fs[_0x1721('0x1e')](_0x328717);fs[_0x1721('0x29')](_0x58b298,_0x1721('0x2a'));}catch(_0x486627){logger[_0x1721('0x16')](_0x486627);}return _0x58b298[_0x1721('0x2b')]('.')[0x0];});}function base64Encode(_0xab7974){var _0x3ee5e7=fs[_0x1721('0x2c')](_0xab7974);return new Buffer(_0x3ee5e7)[_0x1721('0x2d')](_0x1721('0x27'));}exports[_0x1721('0x2e')]=function(_0x29f734,_0x260efa,_0x4d9860,_0x87b92e,_0x1c1a03,_0x568737){var _0x1c05b7,_0x2e0dfb;var _0x42d2de='https://texttospeech.googleapis.com/v1/';var _0x2237e4=_0x1721('0x2f')+_0x29f734;var _0x249291={};if(_0x260efa===_0x1721('0x30')){_0x249291[_0x1721('0x31')]={'ssml':_0x4d9860};}else{_0x249291['input']={'text':_0x4d9860};};_0x249291['voice']={'languageCode':_0x87b92e,'ssmlGender':_0x1c1a03};_0x249291[_0x1721('0x32')]={'audioEncoding':_0x1721('0x33'),'sampleRateHertz':0x1f40};var _0xb80084={'url':_0x42d2de+_0x1721('0x34')+_0x2237e4,'method':_0x1721('0x35'),'json':!![],'body':_0x249291};return rp(_0xb80084)[_0x1721('0x28')](function(_0x5dac15){return new BPromise(function(_0x38e3b4,_0x50ca1a){_0x1c05b7=path[_0x1721('0x26')](__dirname,_0x1721('0x36'),rs[_0x1721('0x37')](0x4)+_0x1721('0x38'));var _0x879ab1=Buffer[_0x1721('0x39')](_0x5dac15[_0x1721('0x3a')],_0x1721('0x27'));return fs['writeFile'](_0x1c05b7,_0x879ab1,function(_0x169850){_0x50ca1a(_0x169850);},function(_0x3d0176){fs['chmodSync'](_0x1c05b7,'777');_0x38e3b4(_0x3d0176);});});})[_0x1721('0x28')](function(_0x164410){_0x2e0dfb=path['resolve'](__dirname,'tmp',rs[_0x1721('0x37')](0x4)+'.wav');return convertFile(_0x1c05b7,_0x2e0dfb);})['then'](function(){try{fs[_0x1721('0x1e')](_0x1c05b7);fs['chmodSync'](_0x2e0dfb,_0x1721('0x2a'));}catch(_0x4462b4){logger[_0x1721('0x16')](_0x4462b4);}logger[_0x1721('0x3b')]('googleCloudTTS\x20path',_0x2e0dfb[_0x1721('0x2b')]('.')[0x0]);return _0x2e0dfb[_0x1721('0x2b')]('.')[0x0];});};exports[_0x1721('0x3c')]=function(_0x696679,_0x112fdd){var _0x50299e=_0x1721('0x3d');var _0x23abed,_0x347b29;var _0x3b9a06;var _0x5b4662={'encoding':_0x1721('0x3e'),'method':_0x1721('0x35'),'timeout':0x2710,'url':_0x50299e,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x1721('0x3f')+encodeURIComponent(JSON['stringify']([[[_0x1721('0x40'),JSON[_0x1721('0x41')]([_0x696679,_0x112fdd||'en',![],'null']),null,_0x1721('0x42')]]]))};return rp(_0x5b4662)[_0x1721('0x28')](function(_0x124b5d){try{_0x3b9a06=eval(_0x124b5d[_0x1721('0x43')](0x5))[0x0][0x2];}catch(_0x4f77ad){throw new Error('parse\x20response\x20failed:\x0a'+_0x124b5d[_0x1721('0x20')]);}if(!_0x3b9a06){if(_0x696679[_0x1721('0x44')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x1721('0x45')+_0x112fdd+_0x1721('0x46'));}}try{_0x3b9a06=eval(_0x3b9a06)[0x0];}catch(_0x39ffba){throw new Error(_0x1721('0x47')+res[_0x1721('0x20')]);}const _0x51ffe1=_0x3b9a06;_0x23abed=path[_0x1721('0x26')](__dirname,_0x1721('0x36'),rs[_0x1721('0x37')](0x4)+_0x1721('0x38'));fs[_0x1721('0x48')](_0x23abed,_0x3b9a06,{'encoding':'base64'});_0x347b29=path['resolve'](__dirname,_0x1721('0x36'),rs['generate'](0x4)+'.wav');return convertFile(_0x23abed,_0x347b29);})[_0x1721('0x28')](function(){try{fs[_0x1721('0x1e')](_0x23abed);fs[_0x1721('0x29')](_0x347b29,_0x1721('0x2a'));}catch(_0x275af8){logger[_0x1721('0x16')](_0x275af8);}logger[_0x1721('0x3b')](_0x1721('0x49'),_0x347b29[_0x1721('0x2b')]('.')[0x0]);return _0x347b29[_0x1721('0x2b')]('.')[0x0];});};exports[_0x1721('0x4a')]=function(_0x3bdf44,_0xef4aec,_0x5e8c4f){return google[_0x1721('0x4b')](_0x3bdf44,_0xef4aec,_0x5e8c4f)['then'](function(_0x4a5b81){logger[_0x1721('0x3b')](_0x4a5b81['uri']);return rp(_0x4a5b81);})[_0x1721('0x28')](function(_0x27c8d0){var _0x3c56e7='';var _0x1eb9e4=0x0;try{fs[_0x1721('0x1e')](_0x3bdf44);}catch(_0x343733){logger[_0x1721('0x16')](_0x343733);}if(_0x27c8d0&&_0x27c8d0[_0x1721('0x4c')]){_0x3c56e7=_0x27c8d0[_0x1721('0x4c')]['map'](function(_0x59e533){return _0x59e533&&_0x59e533['alternatives'][0x0]&&_0x59e533[_0x1721('0x4d')][0x0]['transcript']?_0x59e533[_0x1721('0x4d')][0x0][_0x1721('0x4e')]:'';})[_0x1721('0x4f')]('\x0a');_0x1eb9e4=_0x27c8d0['results'][_0x1721('0x50')](function(_0x29cd31){return _0x29cd31&&_0x29cd31[_0x1721('0x4d')][0x0]&&_0x29cd31[_0x1721('0x4d')][0x0][_0x1721('0x51')]?_0x29cd31[_0x1721('0x4d')][0x0][_0x1721('0x51')]:0x0;})['join']('\x0a');}logger[_0x1721('0x3b')](_0x1721('0x52'),_0x3c56e7);logger[_0x1721('0x3b')](_0x1721('0x53'),_0x1eb9e4);return{'transcript':_0x3c56e7,'confidence':_0x1eb9e4};})['catch'](function(_0x2b22fa){logger[_0x1721('0x16')](_0x1721('0x54'),_0x2b22fa[_0x1721('0x15')],_0x2b22fa[_0x1721('0x55')],_0x2b22fa[_0x1721('0x56')]);});};exports[_0x1721('0x57')]=function(_0x382e1c,_0x94f16,_0x4f3f2d,_0x1b474e){var _0x4356af=apiai(_0x94f16,{'language':_0x1b474e||'en'});return _0x4356af[_0x1721('0x58')](_0x4f3f2d,{'sessionId':md5(_0x382e1c)})[_0x1721('0x28')](function(_0x7b9a19){logger[_0x1721('0x3b')](JSON['stringify'](_0x7b9a19));return{'source':_0x7b9a19[_0x1721('0x59')][_0x1721('0x5a')],'resolvedQuery':_0x7b9a19[_0x1721('0x59')][_0x1721('0x5b')],'action':_0x7b9a19[_0x1721('0x59')][_0x1721('0x5c')],'actionIncomplete':_0x7b9a19[_0x1721('0x59')][_0x1721('0x5d')],'speech':_0x7b9a19[_0x1721('0x59')]['fulfillment'][_0x1721('0x5e')],'score':_0x7b9a19[_0x1721('0x59')][_0x1721('0x5f')],'statusCode':_0x7b9a19['status'][_0x1721('0x60')],'endConversation':_0x7b9a19['result'][_0x1721('0x61')][_0x1721('0x62')]||![],'isFallbackIntent':_0x7b9a19[_0x1721('0x59')]['metadata'][_0x1721('0x63')]};});};exports[_0x1721('0x64')]=function(_0x3938c6,_0x31b6e9,_0xb8c1f0,_0x3ee238,_0x3d4571,_0x17b8d6){var _0x1d49c7=_0x3ee238[_0x1721('0x65')](/\\n/g,'\x0a');var _0x34f6a1={'credentials':{'private_key':_0x1d49c7,'client_email':_0xb8c1f0}};var _0x3a0703=new dialogflow['SessionsClient'](_0x34f6a1);var _0xc73955=_0x3a0703[_0x1721('0x66')](_0x31b6e9,md5(_0x3938c6));var _0x1c85b6={'session':_0xc73955,'queryInput':{'text':{'text':_0x3d4571,'languageCode':_0x17b8d6}}};return _0x3a0703[_0x1721('0x67')](_0x1c85b6)[_0x1721('0x28')](function(_0x2859fe){if(_0x2859fe&&_0x2859fe[_0x1721('0x44')]){logger[_0x1721('0x3b')](_0x1721('0x68'),JSON[_0x1721('0x41')](_0x2859fe));var _0x318862=_0x2859fe[0x0];if(_0x318862){var _0x3e8c9f={'action':_0x318862[_0x1721('0x69')][_0x1721('0x5c')],'allRequiredParamsPresent':_0x318862[_0x1721('0x69')]['allRequiredParamsPresent'],'endConversation':_0x318862[_0x1721('0x69')][_0x1721('0x6a')]&&_0x318862[_0x1721('0x69')]['diagnosticInfo'][_0x1721('0x6b')]?_0x318862[_0x1721('0x69')]['diagnosticInfo'][_0x1721('0x6b')][_0x1721('0x6c')][_0x1721('0x6d')]:![],'fulfillmentText':_0x318862['queryResult'][_0x1721('0x6e')],'intentName':_0x318862['queryResult']['intent'][_0x1721('0x55')],'intentDisplayName':_0x318862[_0x1721('0x69')][_0x1721('0x6f')]['displayName'],'isFallbackIntent':_0x318862[_0x1721('0x69')][_0x1721('0x6f')]['isFallback'],'languageCode':_0x318862[_0x1721('0x69')][_0x1721('0x70')],'queryText':_0x318862[_0x1721('0x69')]['queryText'],'responseId':_0x318862[_0x1721('0x71')],'score':_0x318862['queryResult'][_0x1721('0x72')],'speech':_0x318862[_0x1721('0x69')][_0x1721('0x6e')],'providerResponse':JSON[_0x1721('0x41')](_0x2859fe)};return _0x3e8c9f;}}});};exports[_0x1721('0x73')]=function(_0x51d5b8,_0x19fa05,_0x1acacc,_0x244a1c){return tilde[_0x1721('0x4b')](_0x51d5b8,_0x19fa05,_0x1acacc,_0x244a1c)[_0x1721('0x28')](function(_0x26ff11){try{fs[_0x1721('0x1e')](_0x51d5b8);}catch(_0x5e8648){logger[_0x1721('0x16')](_0x5e8648);}logger[_0x1721('0x3b')](_0x1721('0x74'),_0x26ff11[_0x1721('0x4e')]);logger[_0x1721('0x3b')](_0x1721('0x75'),_0x26ff11['confidence']);return _0x26ff11;});};exports[_0x1721('0x76')]=function(_0x5751e3,_0x48abc9,_0x50cb2d,_0x5a6fcf,_0x1b58d4,_0x4bac40){var _0x389b84=path[_0x1721('0x26')](__dirname,_0x1721('0x36'),rs[_0x1721('0x37')](0x4)+_0x1721('0x38'));var _0x5b0baa;return aws['polly'](_0x5751e3,_0x48abc9,_0x50cb2d,_0x5a6fcf,_0x1b58d4,_0x4bac40,_0x389b84)['then'](function(){_0x5b0baa=path['resolve'](__dirname,_0x1721('0x36'),rs['generate'](0x4)+'.wav');return convertFile(_0x389b84,_0x5b0baa);})['then'](function(){try{fs[_0x1721('0x1e')](_0x389b84);fs[_0x1721('0x29')](_0x5b0baa,'777');}catch(_0x42a799){logger[_0x1721('0x16')](_0x42a799);}return _0x5b0baa[_0x1721('0x2b')]('.')[0x0];});};exports['awsLex']=function(_0x32e68e,_0x49326c,_0x38b2,_0x4d7374,_0xeecf8d,_0x427b24){return aws[_0x1721('0x77')](_0x32e68e,_0x49326c,_0x38b2,_0x4d7374,_0xeecf8d,_0x427b24)[_0x1721('0x28')](function(_0x18270a){logger['info'](JSON[_0x1721('0x41')](_0x18270a));return _0x18270a;});};exports[_0x1721('0x78')]=function(_0x1b3043,_0x3334d9,_0x47f87e,_0x20a666){var _0x3826c7=util[_0x1721('0x79')](_0x1721('0x7a'),ISPEECH_API,_0x1b3043,encodeURIComponent(_0x3334d9),_0x47f87e,_0x20a666);var _0x1e3097=path[_0x1721('0x26')](__dirname,_0x1721('0x36'),rs[_0x1721('0x37')](0x4)+'.mp3');var _0x5d71ed;return downloadFile(_0x3826c7,_0x1e3097)[_0x1721('0x28')](function(){_0x5d71ed=path[_0x1721('0x26')](__dirname,_0x1721('0x36'),rs[_0x1721('0x37')](0x4)+_0x1721('0x7b'));return convertFile(_0x1e3097,_0x5d71ed);})[_0x1721('0x28')](function(){try{fs['unlink'](_0x1e3097);fs['chmodSync'](_0x5d71ed,_0x1721('0x2a'));}catch(_0x19fcfa){logger[_0x1721('0x16')](_0x19fcfa);}return _0x5d71ed[_0x1721('0x2b')]('.')[0x0];});};exports[_0x1721('0x7c')]=function(_0x2e7c4e,_0x4ad8ca,_0x44187a,_0x1438e3){var _0x41e1a0=util[_0x1721('0x79')](_0x1721('0x7d'),ISPEECH_API,_0x4ad8ca,_0x44187a,base64Encode(_0x2e7c4e),_0x1438e3?util['format'](_0x1721('0x7e'),encodeURIComponent(_0x1438e3)):_0x1721('0x7f'));return uploadFile(_0x41e1a0)[_0x1721('0x28')](function(_0x395a4a){return querystring[_0x1721('0xa')](_0x395a4a);});};exports[_0x1721('0x80')]=function(_0x18a637,_0x46704d){return sestek[_0x1721('0x81')](_0x18a637,_0x46704d)['then'](function(_0x522287){logger[_0x1721('0x3b')](JSON[_0x1721('0x41')](_0x522287));var _0x7214c5={'speech':_0x522287['text'],'action':_0x522287['channelData']?_0x522287[_0x1721('0x82')][_0x1721('0x83')]:undefined,'actiondata':_0x522287[_0x1721('0x82')]?_0x522287['channelData'][_0x1721('0x84')]:undefined};if(_0x522287[_0x1721('0x82')]&&_0x522287[_0x1721('0x82')][_0x1721('0x85')]){return base64Decode(_0x522287[_0x1721('0x82')]['AudioFromTts'][_0x1721('0x86')],path[_0x1721('0x26')](__dirname,_0x1721('0x36'),rs['generate'](0x4)+_0x1721('0x7b')))[_0x1721('0x28')](function(_0x4d47c7){_0x7214c5[_0x1721('0x87')]=_0x4d47c7;return _0x7214c5;});}return _0x7214c5;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x4e30=['https','path','querystring','request-promise','url','parse','./aws','./google','./sestek','./tilde','../../../config/logger','host','WHAT_EVER','get','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','finish\x20download\x20file','unlink','download\x20error','end','protocol','https:','request\x20to\x20','data','transcode','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','777','split','readFileSync','toString','googleCloudTTS','?key=','ssml','input','voice','MP3','text:synthesize','POST','.mp3','from','audioContent','writeFile','chmodSync','info','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','jQ1olc','stringify','generic','slice','parse\x20response\x20failed:\x0a','length','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','metadata','endConversation','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','name','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','Tilde\x20ASR\x20transcription','polly','awsLex','ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','channelData','audiofile','dirName','apiai-promise','bluebird','dialogflow','http'];(function(_0x20cc7c,_0x4a7401){var _0x1de7be=function(_0x599500){while(--_0x599500){_0x20cc7c['push'](_0x20cc7c['shift']());}};_0x1de7be(++_0x4a7401);}(_0x4e30,0x80));var _0x04e3=function(_0x18be85,_0x436c70){_0x18be85=_0x18be85-0x0;var _0x409c2a=_0x4e30[_0x18be85];return _0x409c2a;};'use strict';var apiai=require(_0x04e3('0x0'));var BPromise=require(_0x04e3('0x1'));var dialogflow=require(_0x04e3('0x2'));var fs=require('fs');var http=require(_0x04e3('0x3'));var https=require(_0x04e3('0x4'));var md5=require('md5');var path=require(_0x04e3('0x5'));var querystring=require(_0x04e3('0x6'));var rp=require(_0x04e3('0x7'));var rs=require('randomstring');var sox=require('sox');var tts=require('google-tts-api');var urlParse=require(_0x04e3('0x8'))[_0x04e3('0x9')];var util=require('util');var aws=require(_0x04e3('0xa'));var google=require(_0x04e3('0xb'));var sestek=require(_0x04e3('0xc'));var tilde=require(_0x04e3('0xd'));var logger=require(_0x04e3('0xe'))('agi');var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x579907,_0x44e19a){return new BPromise(function(_0x108ca9,_0x6bd871){var _0x48f159=urlParse(_0x579907);var _0x36bc1e=_0x48f159['protocol']==='https:'?https:http;var _0x412eec={'host':_0x48f159[_0x04e3('0xf')],'path':_0x48f159[_0x04e3('0x5')],'headers':{'user-agent':_0x04e3('0x10')}};_0x36bc1e[_0x04e3('0x11')](_0x412eec,function(_0x2af55b){if(_0x2af55b[_0x04e3('0x12')]!==0xc8){logger[_0x04e3('0x13')]('request\x20to\x20'+_0x579907+_0x04e3('0x14')+_0x2af55b[_0x04e3('0x12')]+'\x20('+_0x2af55b[_0x04e3('0x15')]+')');_0x6bd871(new Error('request\x20to\x20'+_0x579907+_0x04e3('0x14')+_0x2af55b[_0x04e3('0x12')]+'\x20('+_0x2af55b[_0x04e3('0x15')]+')'));return;}var _0x3b1956=fs['createWriteStream'](_0x44e19a);_0x3b1956['on'](_0x04e3('0x16'),function(){logger['info'](_0x04e3('0x17'));_0x3b1956['close'](_0x108ca9);});_0x3b1956['on'](_0x04e3('0x13'),function(_0x4810c0){fs[_0x04e3('0x18')](_0x44e19a);logger[_0x04e3('0x13')](_0x04e3('0x19'),_0x4810c0);_0x6bd871(_0x4810c0);});_0x2af55b['pipe'](_0x3b1956);})['on']('error',function(_0x45da5a){logger[_0x04e3('0x13')](_0x45da5a);_0x6bd871(_0x45da5a);})[_0x04e3('0x1a')]();});}function uploadFile(_0x1c3dfa){return new BPromise(function(_0x41064a,_0x4e8960){var _0x8dc8aa=urlParse(_0x1c3dfa);var _0x2777a2=_0x8dc8aa[_0x04e3('0x1b')]===_0x04e3('0x1c')?https:http;var _0x246d13={'host':_0x8dc8aa[_0x04e3('0xf')],'path':_0x8dc8aa[_0x04e3('0x5')],'headers':{'user-agent':_0x04e3('0x10')}};_0x2777a2[_0x04e3('0x11')](_0x246d13,function(_0x29db5d){if(_0x29db5d['statusCode']!==0xc8){_0x4e8960(new Error(_0x04e3('0x1d')+_0x1c3dfa+_0x04e3('0x14')+_0x29db5d[_0x04e3('0x12')]+'\x20('+_0x29db5d[_0x04e3('0x15')]+')'));return;}var _0x41c35c='';_0x29db5d['on'](_0x04e3('0x1e'),function(_0x4bfcf9){_0x41c35c+=_0x4bfcf9;});_0x29db5d['on'](_0x04e3('0x1a'),function(){_0x41064a(_0x41c35c);});})['on'](_0x04e3('0x13'),function(_0x3131f5){_0x4e8960(_0x3131f5);})[_0x04e3('0x1a')]();});}function convertFile(_0x19e627,_0x12c713){return new BPromise(function(_0x336559,_0xc6d5cb){var _0x54aff7=sox[_0x04e3('0x1f')](_0x19e627,_0x12c713,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x54aff7['on'](_0x04e3('0x13'),function(_0x863498){logger['error'](_0x04e3('0x20'),_0x863498);_0xc6d5cb(_0x863498);});_0x54aff7['on'](_0x04e3('0x1a'),function(){logger['info'](_0x04e3('0x21'));_0x336559();});_0x54aff7[_0x04e3('0x22')]();});}function base64Decode(_0x53908c,_0x5e2455){var _0x39e192=path[_0x04e3('0x23')](__dirname,_0x04e3('0x24'),rs[_0x04e3('0x25')](0x4)+_0x04e3('0x26'));fs[_0x04e3('0x27')](_0x39e192,_0x53908c,_0x04e3('0x28'));return convertFile(_0x39e192,_0x5e2455)[_0x04e3('0x29')](function(){try{fs[_0x04e3('0x18')](_0x39e192);fs['chmodSync'](_0x5e2455,_0x04e3('0x2a'));}catch(_0x2c5c39){logger['error'](_0x2c5c39);}return _0x5e2455[_0x04e3('0x2b')]('.')[0x0];});}function base64Encode(_0x45736d){var _0x3cff61=fs[_0x04e3('0x2c')](_0x45736d);return new Buffer(_0x3cff61)[_0x04e3('0x2d')]('base64');}exports[_0x04e3('0x2e')]=function(_0x2b8756,_0x2bb749,_0x36bd5d,_0x2b4264,_0x5811e2,_0x2da810){var _0x568629,_0x3cfdb8;var _0x306668='https://texttospeech.googleapis.com/v1/';var _0x1f2f4a=_0x04e3('0x2f')+_0x2b8756;var _0x36ce6e={};if(_0x2bb749===_0x04e3('0x30')){_0x36ce6e[_0x04e3('0x31')]={'ssml':_0x36bd5d};}else{_0x36ce6e[_0x04e3('0x31')]={'text':_0x36bd5d};};_0x36ce6e[_0x04e3('0x32')]={'languageCode':_0x2b4264,'ssmlGender':_0x5811e2};_0x36ce6e['audioConfig']={'audioEncoding':_0x04e3('0x33'),'sampleRateHertz':0x1f40};var _0x4f7bd6={'url':_0x306668+_0x04e3('0x34')+_0x1f2f4a,'method':_0x04e3('0x35'),'json':!![],'body':_0x36ce6e};return rp(_0x4f7bd6)[_0x04e3('0x29')](function(_0xb40f4a){return new BPromise(function(_0x1be812,_0x34a267){_0x568629=path['resolve'](__dirname,'tmp',rs[_0x04e3('0x25')](0x4)+_0x04e3('0x36'));var _0x13947a=Buffer[_0x04e3('0x37')](_0xb40f4a[_0x04e3('0x38')],_0x04e3('0x28'));return fs[_0x04e3('0x39')](_0x568629,_0x13947a,function(_0x165799){_0x34a267(_0x165799);},function(_0x597350){fs['chmodSync'](_0x568629,_0x04e3('0x2a'));_0x1be812(_0x597350);});});})[_0x04e3('0x29')](function(_0x4f3d25){_0x3cfdb8=path['resolve'](__dirname,_0x04e3('0x24'),rs[_0x04e3('0x25')](0x4)+_0x04e3('0x26'));return convertFile(_0x568629,_0x3cfdb8);})['then'](function(){try{fs[_0x04e3('0x18')](_0x568629);fs[_0x04e3('0x3a')](_0x3cfdb8,_0x04e3('0x2a'));}catch(_0x3c356a){logger[_0x04e3('0x13')](_0x3c356a);}logger[_0x04e3('0x3b')](_0x04e3('0x3c'),_0x3cfdb8[_0x04e3('0x2b')]('.')[0x0]);return _0x3cfdb8[_0x04e3('0x2b')]('.')[0x0];});};exports['googleTTS']=function(_0x49ddb4,_0x3df7da){var _0x396d26=_0x04e3('0x3d');var _0x26bafc,_0xc0f204;var _0x2a57d4;var _0x266fcd={'encoding':_0x04e3('0x3e'),'method':_0x04e3('0x35'),'timeout':0x2710,'url':_0x396d26,'headers':{'Content-Type':_0x04e3('0x3f')},'body':_0x04e3('0x40')+encodeURIComponent(JSON['stringify']([[[_0x04e3('0x41'),JSON[_0x04e3('0x42')]([_0x49ddb4,_0x3df7da||'en',![],'null']),null,_0x04e3('0x43')]]]))};return rp(_0x266fcd)[_0x04e3('0x29')](function(_0x488840){try{_0x2a57d4=eval(_0x488840[_0x04e3('0x44')](0x5))[0x0][0x2];}catch(_0x40aeda){throw new Error(_0x04e3('0x45')+_0x488840['data']);}if(!_0x2a57d4){if(_0x49ddb4[_0x04e3('0x46')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error('lang\x20\x22'+_0x3df7da+_0x04e3('0x47'));}}try{_0x2a57d4=eval(_0x2a57d4)[0x0];}catch(_0x53188d){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x04e3('0x1e')]);}const _0x16d6cc=_0x2a57d4;_0x26bafc=path[_0x04e3('0x23')](__dirname,_0x04e3('0x24'),rs['generate'](0x4)+_0x04e3('0x36'));fs['writeFileSync'](_0x26bafc,_0x2a57d4,{'encoding':'base64'});_0xc0f204=path[_0x04e3('0x23')](__dirname,_0x04e3('0x24'),rs[_0x04e3('0x25')](0x4)+_0x04e3('0x26'));return convertFile(_0x26bafc,_0xc0f204);})[_0x04e3('0x29')](function(){try{fs[_0x04e3('0x18')](_0x26bafc);fs[_0x04e3('0x3a')](_0xc0f204,'777');}catch(_0xb51ca8){logger[_0x04e3('0x13')](_0xb51ca8);}logger[_0x04e3('0x3b')](_0x04e3('0x48'),_0xc0f204[_0x04e3('0x2b')]('.')[0x0]);return _0xc0f204[_0x04e3('0x2b')]('.')[0x0];});};exports[_0x04e3('0x49')]=function(_0x4003f8,_0x4ffad0,_0x52469f){return google[_0x04e3('0x4a')](_0x4003f8,_0x4ffad0,_0x52469f)[_0x04e3('0x29')](function(_0x511eca){logger['info'](_0x511eca[_0x04e3('0x4b')]);return rp(_0x511eca);})['then'](function(_0x1a8a29){var _0x1d1c75='';var _0x1fafc1=0x0;try{fs[_0x04e3('0x18')](_0x4003f8);}catch(_0xa69573){logger['error'](_0xa69573);}if(_0x1a8a29&&_0x1a8a29['results']){_0x1d1c75=_0x1a8a29[_0x04e3('0x4c')][_0x04e3('0x4d')](function(_0x2fb51b){return _0x2fb51b&&_0x2fb51b[_0x04e3('0x4e')][0x0]&&_0x2fb51b['alternatives'][0x0][_0x04e3('0x4f')]?_0x2fb51b['alternatives'][0x0][_0x04e3('0x4f')]:'';})['join']('\x0a');_0x1fafc1=_0x1a8a29[_0x04e3('0x4c')][_0x04e3('0x4d')](function(_0x1d51ad){return _0x1d51ad&&_0x1d51ad['alternatives'][0x0]&&_0x1d51ad[_0x04e3('0x4e')][0x0][_0x04e3('0x50')]?_0x1d51ad[_0x04e3('0x4e')][0x0][_0x04e3('0x50')]:0x0;})[_0x04e3('0x51')]('\x0a');}logger[_0x04e3('0x3b')](_0x04e3('0x52'),_0x1d1c75);logger[_0x04e3('0x3b')](_0x04e3('0x53'),_0x1fafc1);return{'transcript':_0x1d1c75,'confidence':_0x1fafc1};})['catch'](function(_0x562bae){logger['error'](_0x04e3('0x54'),_0x562bae[_0x04e3('0x12')],_0x562bae['name'],_0x562bae[_0x04e3('0x55')]);});};exports[_0x04e3('0x56')]=function(_0x424e92,_0xd09185,_0xe3bd9c,_0xa758e3){var _0x295887=apiai(_0xd09185,{'language':_0xa758e3||'en'});return _0x295887[_0x04e3('0x57')](_0xe3bd9c,{'sessionId':md5(_0x424e92)})[_0x04e3('0x29')](function(_0x3bb92c){logger[_0x04e3('0x3b')](JSON[_0x04e3('0x42')](_0x3bb92c));return{'source':_0x3bb92c[_0x04e3('0x58')][_0x04e3('0x59')],'resolvedQuery':_0x3bb92c[_0x04e3('0x58')][_0x04e3('0x5a')],'action':_0x3bb92c[_0x04e3('0x58')][_0x04e3('0x5b')],'actionIncomplete':_0x3bb92c[_0x04e3('0x58')][_0x04e3('0x5c')],'speech':_0x3bb92c[_0x04e3('0x58')][_0x04e3('0x5d')]['speech'],'score':_0x3bb92c['result'][_0x04e3('0x5e')],'statusCode':_0x3bb92c[_0x04e3('0x5f')][_0x04e3('0x60')],'endConversation':_0x3bb92c[_0x04e3('0x58')][_0x04e3('0x61')][_0x04e3('0x62')]||![],'isFallbackIntent':_0x3bb92c[_0x04e3('0x58')][_0x04e3('0x61')]['isFallbackIntent']};});};exports[_0x04e3('0x63')]=function(_0xe4f6f3,_0x230979,_0x43c0d1,_0x1d387a,_0x4c0794,_0x7c2658){var _0x4c91b4=_0x1d387a[_0x04e3('0x64')](/\\n/g,'\x0a');var _0x3058ec={'credentials':{'private_key':_0x4c91b4,'client_email':_0x43c0d1}};var _0x4f7371=new dialogflow[(_0x04e3('0x65'))](_0x3058ec);var _0xd999a=_0x4f7371[_0x04e3('0x66')](_0x230979,md5(_0xe4f6f3));var _0x1a6034={'session':_0xd999a,'queryInput':{'text':{'text':_0x4c0794,'languageCode':_0x7c2658}}};return _0x4f7371[_0x04e3('0x67')](_0x1a6034)[_0x04e3('0x29')](function(_0x352fdc){if(_0x352fdc&&_0x352fdc[_0x04e3('0x46')]){logger[_0x04e3('0x3b')](_0x04e3('0x68'),JSON[_0x04e3('0x42')](_0x352fdc));var _0x358d7b=_0x352fdc[0x0];if(_0x358d7b){var _0x38f8a4={'action':_0x358d7b[_0x04e3('0x69')]['action'],'allRequiredParamsPresent':_0x358d7b[_0x04e3('0x69')][_0x04e3('0x6a')],'endConversation':_0x358d7b[_0x04e3('0x69')][_0x04e3('0x6b')]&&_0x358d7b['queryResult'][_0x04e3('0x6b')]['fields']?_0x358d7b[_0x04e3('0x69')][_0x04e3('0x6b')][_0x04e3('0x6c')]['end_conversation'][_0x04e3('0x6d')]:![],'fulfillmentText':_0x358d7b[_0x04e3('0x69')][_0x04e3('0x6e')],'intentName':_0x358d7b[_0x04e3('0x69')][_0x04e3('0x6f')][_0x04e3('0x70')],'intentDisplayName':_0x358d7b[_0x04e3('0x69')]['intent'][_0x04e3('0x71')],'isFallbackIntent':_0x358d7b[_0x04e3('0x69')][_0x04e3('0x6f')][_0x04e3('0x72')],'languageCode':_0x358d7b[_0x04e3('0x69')][_0x04e3('0x73')],'queryText':_0x358d7b['queryResult'][_0x04e3('0x74')],'responseId':_0x358d7b[_0x04e3('0x75')],'score':_0x358d7b[_0x04e3('0x69')][_0x04e3('0x76')],'speech':_0x358d7b[_0x04e3('0x69')][_0x04e3('0x6e')],'providerResponse':JSON['stringify'](_0x352fdc)};return _0x38f8a4;}}});};exports['tildeASR']=function(_0x45e9f7,_0x1d575d,_0x1b8cfb,_0x1f9317){return tilde[_0x04e3('0x4a')](_0x45e9f7,_0x1d575d,_0x1b8cfb,_0x1f9317)['then'](function(_0x20c2cc){try{fs[_0x04e3('0x18')](_0x45e9f7);}catch(_0x55a3a4){logger[_0x04e3('0x13')](_0x55a3a4);}logger[_0x04e3('0x3b')](_0x04e3('0x77'),_0x20c2cc[_0x04e3('0x4f')]);logger[_0x04e3('0x3b')]('Tilde\x20ASR\x20confidence',_0x20c2cc[_0x04e3('0x50')]);return _0x20c2cc;});};exports['awsPolly']=function(_0xde4235,_0x599d68,_0x506e15,_0x41191a,_0x40a1ec,_0x2ee7f1){var _0xe3f51c=path[_0x04e3('0x23')](__dirname,_0x04e3('0x24'),rs['generate'](0x4)+_0x04e3('0x36'));var _0x3a6472;return aws[_0x04e3('0x78')](_0xde4235,_0x599d68,_0x506e15,_0x41191a,_0x40a1ec,_0x2ee7f1,_0xe3f51c)[_0x04e3('0x29')](function(){_0x3a6472=path['resolve'](__dirname,'tmp',rs[_0x04e3('0x25')](0x4)+_0x04e3('0x26'));return convertFile(_0xe3f51c,_0x3a6472);})[_0x04e3('0x29')](function(){try{fs[_0x04e3('0x18')](_0xe3f51c);fs['chmodSync'](_0x3a6472,'777');}catch(_0x1ae253){logger['error'](_0x1ae253);}return _0x3a6472[_0x04e3('0x2b')]('.')[0x0];});};exports[_0x04e3('0x79')]=function(_0x3bdcd9,_0x2d679d,_0x3a5703,_0x421c23,_0x21b0f0,_0x59c96b){return aws['lex'](_0x3bdcd9,_0x2d679d,_0x3a5703,_0x421c23,_0x21b0f0,_0x59c96b)['then'](function(_0x20583a){logger[_0x04e3('0x3b')](JSON[_0x04e3('0x42')](_0x20583a));return _0x20583a;});};exports[_0x04e3('0x7a')]=function(_0xec6977,_0x4e1924,_0x1d1862,_0x386389){var _0x5a56f3=util[_0x04e3('0x7b')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0xec6977,encodeURIComponent(_0x4e1924),_0x1d1862,_0x386389);var _0x59730b=path['resolve'](__dirname,_0x04e3('0x24'),rs['generate'](0x4)+_0x04e3('0x36'));var _0x588442;return downloadFile(_0x5a56f3,_0x59730b)[_0x04e3('0x29')](function(){_0x588442=path[_0x04e3('0x23')](__dirname,_0x04e3('0x24'),rs[_0x04e3('0x25')](0x4)+_0x04e3('0x26'));return convertFile(_0x59730b,_0x588442);})[_0x04e3('0x29')](function(){try{fs['unlink'](_0x59730b);fs[_0x04e3('0x3a')](_0x588442,_0x04e3('0x2a'));}catch(_0x55e5f8){logger[_0x04e3('0x13')](_0x55e5f8);}return _0x588442[_0x04e3('0x2b')]('.')[0x0];});};exports[_0x04e3('0x7c')]=function(_0x21b72f,_0x3a83cb,_0x51a71d,_0x49e2e5){var _0x19c91b=util['format'](_0x04e3('0x7d'),ISPEECH_API,_0x3a83cb,_0x51a71d,base64Encode(_0x21b72f),_0x49e2e5?util[_0x04e3('0x7b')](_0x04e3('0x7e'),encodeURIComponent(_0x49e2e5)):_0x04e3('0x7f'));return uploadFile(_0x19c91b)[_0x04e3('0x29')](function(_0x6e9c08){return querystring[_0x04e3('0x9')](_0x6e9c08);});};exports[_0x04e3('0x80')]=function(_0x2e95f8,_0x26e686){return sestek['nda'](_0x2e95f8,_0x26e686)['then'](function(_0x11d72b){logger['info'](JSON[_0x04e3('0x42')](_0x11d72b));var _0x2a7d6d={'speech':_0x11d72b['text'],'action':_0x11d72b['channelData']?_0x11d72b[_0x04e3('0x81')]['CustomAction']:undefined,'actiondata':_0x11d72b['channelData']?_0x11d72b['channelData']['CustomActionData']:undefined};if(_0x11d72b['channelData']&&_0x11d72b[_0x04e3('0x81')]['AudioFromTts']){return base64Decode(_0x11d72b['channelData']['AudioFromTts']['Data'],path[_0x04e3('0x23')](__dirname,_0x04e3('0x24'),rs['generate'](0x4)+_0x04e3('0x26')))['then'](function(_0x59921f){_0x2a7d6d[_0x04e3('0x82')]=_0x59921f;return _0x2a7d6d;});}return _0x2a7d6d;});};exports[_0x04e3('0x83')]=function(){return __dirname;};
\ No newline at end of file
index ab6271a..8456417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27db=['exports'];(function(_0x349915,_0x124261){var _0x8be4f3=function(_0x3a82a9){while(--_0x3a82a9){_0x349915['push'](_0x349915['shift']());}};_0x8be4f3(++_0x124261);}(_0x27db,0x18a));var _0xb27d=function(_0x1c6ef2,_0x8d926a){_0x1c6ef2=_0x1c6ef2-0x0;var _0x404b8c=_0x27db[_0x1c6ef2];return _0x404b8c;};var nda=require('./nda');module[_0xb27d('0x0')]={'nda':nda};
\ No newline at end of file
+var _0x0a91=['./nda'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0a91,0xb2));var _0x10a9=function(_0x2d982d,_0x121028){_0x2d982d=_0x2d982d-0x0;var _0x4f36b0=_0x0a91[_0x2d982d];return _0x4f36b0;};var nda=require(_0x10a9('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
index 3c9ef5c..5d2c61e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa20a=['message','Nda','callerid','calleridname','extension','text','Bearer\x20','access_token','project','body','ProjectName','ndagenerate_audio','channelData','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','stringify','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa20a,0x74));var _0xaa20=function(_0xbf8ebe,_0x3b69a5){_0xbf8ebe=_0xbf8ebe-0x0;var _0x1e25e8=_0xa20a[_0xbf8ebe];return _0x1e25e8;};'use strict';var rp=require('request-promise');var url=require('url');var logger=require(_0xaa20('0x0'))(_0xaa20('0x1'));module[_0xaa20('0x2')]=function(_0x1d1b40,_0x5d88f1){var _0xb41a3d={'method':_0xaa20('0x3'),'uri':url[_0xaa20('0x4')](_0x5d88f1[_0xaa20('0x5')],_0xaa20('0x6')),'form':{'grant_type':'password','username':_0x5d88f1['username'],'password':_0x5d88f1[_0xaa20('0x7')]},'json':!![]};return rp(_0xb41a3d)[_0xaa20('0x8')](function(_0x23a712){var _0x181df0={'method':_0xaa20('0x3'),'uri':url[_0xaa20('0x4')](_0x5d88f1[_0xaa20('0x9')],_0xaa20('0xa')),'body':{'type':_0x5d88f1[_0xaa20('0xb')]||_0xaa20('0xc'),'channelId':_0xaa20('0xd'),'conversation':{'id':_0x1d1b40['uniqueid']},'from':{'id':_0x1d1b40[_0xaa20('0xe')],'name':_0x1d1b40[_0xaa20('0xf')]},'recipient':{'id':_0x1d1b40['dnid'],'name':_0x1d1b40[_0xaa20('0x10')]},'text':_0x5d88f1[_0xaa20('0x11')],'channelData':{}},'headers':{'Authorization':_0xaa20('0x12')+_0x23a712[_0xaa20('0x13')]},'json':!![]};if(_0x5d88f1[_0xaa20('0x14')]){_0x181df0[_0xaa20('0x15')]['channelData'][_0xaa20('0x16')]=_0x5d88f1[_0xaa20('0x14')];}if(_0x5d88f1[_0xaa20('0x17')]=='1'){_0x181df0[_0xaa20('0x15')][_0xaa20('0x18')][_0xaa20('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xaa20('0x1a')};}if(_0x5d88f1[_0xaa20('0x1b')]){_0x181df0[_0xaa20('0x15')][_0xaa20('0x18')][_0xaa20('0x1c')]=_0x5d88f1[_0xaa20('0x1b')];if(_0x5d88f1[_0xaa20('0x1d')]){_0x181df0[_0xaa20('0x15')][_0xaa20('0x18')][_0xaa20('0x1e')]=_0x5d88f1[_0xaa20('0x1d')];}}logger['info'](JSON[_0xaa20('0x1f')](_0x181df0));return rp(_0x181df0);});};
\ No newline at end of file
+var _0xb75c=['../../../../../config/logger','exports','POST','ndauth_url','username','password','then','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','message','uniqueid','calleridname','extension','text','Bearer\x20','access_token','body','channelData','ProjectName','project','ndagenerate_audio','AudioOutputSettings','custom_action','custom_action_data','CustomActionData','info','request-promise','url'];(function(_0x19dd7a,_0x51de21){var _0x3feb6a=function(_0x4a3c84){while(--_0x4a3c84){_0x19dd7a['push'](_0x19dd7a['shift']());}};_0x3feb6a(++_0x51de21);}(_0xb75c,0x1ce));var _0xcb75=function(_0x23b5e0,_0x278bb5){_0x23b5e0=_0x23b5e0-0x0;var _0x5a347a=_0xb75c[_0x23b5e0];return _0x5a347a;};'use strict';var rp=require(_0xcb75('0x0'));var url=require(_0xcb75('0x1'));var logger=require(_0xcb75('0x2'))('agi');module[_0xcb75('0x3')]=function(_0x4da54f,_0x21a350){var _0x12aaaa={'method':_0xcb75('0x4'),'uri':url['resolve'](_0x21a350[_0xcb75('0x5')],'/token'),'form':{'grant_type':'password','username':_0x21a350[_0xcb75('0x6')],'password':_0x21a350[_0xcb75('0x7')]},'json':!![]};return rp(_0x12aaaa)[_0xcb75('0x8')](function(_0x498656){var _0x57ef56={'method':'POST','uri':url[_0xcb75('0x9')](_0x21a350[_0xcb75('0xa')],_0xcb75('0xb')),'body':{'type':_0x21a350['ndaactivity_type']||_0xcb75('0xc'),'channelId':'Nda','conversation':{'id':_0x4da54f[_0xcb75('0xd')]},'from':{'id':_0x4da54f['callerid'],'name':_0x4da54f[_0xcb75('0xe')]},'recipient':{'id':_0x4da54f['dnid'],'name':_0x4da54f[_0xcb75('0xf')]},'text':_0x21a350[_0xcb75('0x10')],'channelData':{}},'headers':{'Authorization':_0xcb75('0x11')+_0x498656[_0xcb75('0x12')]},'json':!![]};if(_0x21a350['project']){_0x57ef56[_0xcb75('0x13')][_0xcb75('0x14')][_0xcb75('0x15')]=_0x21a350[_0xcb75('0x16')];}if(_0x21a350[_0xcb75('0x17')]=='1'){_0x57ef56[_0xcb75('0x13')][_0xcb75('0x14')][_0xcb75('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x21a350['custom_action']){_0x57ef56[_0xcb75('0x13')][_0xcb75('0x14')]['CustomAction']=_0x21a350[_0xcb75('0x19')];if(_0x21a350[_0xcb75('0x1a')]){_0x57ef56['body'][_0xcb75('0x14')][_0xcb75('0x1b')]=_0x21a350[_0xcb75('0x1a')];}}logger[_0xcb75('0x1c')](JSON['stringify'](_0x57ef56));return rp(_0x57ef56);});};
\ No newline at end of file
index 5de338f..9d1837c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe364=['./lib/api'];(function(_0x519a79,_0x2c2b8e){var _0xab5d8a=function(_0x417d02){while(--_0x417d02){_0x519a79['push'](_0x519a79['shift']());}};_0xab5d8a(++_0x2c2b8e);}(_0xe364,0x65));var _0x4e36=function(_0xe73080,_0x24c56d){_0xe73080=_0xe73080-0x0;var _0x12cbc4=_0xe364[_0xe73080];return _0x12cbc4;};'use strict';var asr=require(_0x4e36('0x0'));module['exports']=function(_0x25f467,_0x23f687,_0x542bdc,_0x4d5077){return asr(_0x25f467,_0x23f687,_0x542bdc,_0x4d5077);};
\ No newline at end of file
+var _0x6521=['./lib/api'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x6521,0x8d));var _0x1652=function(_0x39efbf,_0x118364){_0x39efbf=_0x39efbf-0x0;var _0xcbd510=_0x6521[_0x39efbf];return _0xcbd510;};'use strict';var asr=require(_0x1652('0x0'));module['exports']=function(_0x220e41,_0x338b58,_0x41bfa8,_0x2eccce){return asr(_0x220e41,_0x338b58,_0x41bfa8,_0x2eccce);};
\ No newline at end of file
index 36de316..9ca0738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d34=['createHash','sha1','update','digest','hex','info','Open\x20Tilde\x20ASR\x20socket','send','stringify','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','hypotheses','transcript','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','error','isObject','open','message','close','bluebird','moment','crypto','../../../../../../config/logger','agi','exports','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech'];(function(_0x2bddf9,_0x22c873){var _0x3f3ae9=function(_0x2d91ac){while(--_0x2d91ac){_0x2bddf9['push'](_0x2bddf9['shift']());}};_0x3f3ae9(++_0x22c873);}(_0x4d34,0x12f));var _0x44d3=function(_0x5de50d,_0x3c938c){_0x5de50d=_0x5de50d-0x0;var _0x6fc45f=_0x4d34[_0x5de50d];return _0x6fc45f;};'use strict';var BPromise=require(_0x44d3('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x44d3('0x1'));var crypto=require(_0x44d3('0x2'));var logger=require(_0x44d3('0x3'))(_0x44d3('0x4'));module[_0x44d3('0x5')]=function(_0x46ce97,_0x2c636c,_0x4a7103,_0x25ba25){return new BPromise(function(_0x19b7d0,_0x12a0b6){logger['info'](_0x44d3('0x6'),_0x25ba25||_0x44d3('0x7'));var _0x5125a1=new WebSocket(_0x25ba25||_0x44d3('0x7'),{'perMessageDeflate':![]});var _0x22ebe3='';var _0x1193f9='0';var _0x2a75b7='1';var _0x204376=_0x44d3('0x8');function _0x1a06f7(_0x3560f1){var _0x5aa0f9=crypto[_0x44d3('0x9')](_0x44d3('0xa'));_0x5aa0f9[_0x44d3('0xb')](_0x3560f1);return _0x5aa0f9[_0x44d3('0xc')](_0x44d3('0xd'));}function _0x429762(){try{logger[_0x44d3('0xe')](_0x44d3('0xf'));var _0x51913b=moment()['unix']();var _0x58b88b=_0x1a06f7(_0x51913b+_0x2c636c+_0x4a7103);_0x5125a1[_0x44d3('0x10')](JSON[_0x44d3('0x11')]({'appID':_0x2c636c,'timestamp':_0x51913b,'appKey':_0x58b88b}));var _0xcc4958=fs['createReadStream'](_0x46ce97);_0xcc4958['on']('data',function(_0x3a2987){_0x5125a1[_0x44d3('0x10')](_0x3a2987);});_0xcc4958['on']('close',function(){_0x5125a1['send']('EOS');});}catch(_0x7dab70){logger['error'](_0x44d3('0x12'),JSON[_0x44d3('0x11')](_0x7dab70));_0x5125a1[_0x44d3('0x13')]();}}function _0x2d2dba(_0xb3eeb){try{if(_0xb3eeb){var _0x1d70c2=JSON[_0x44d3('0x14')](_0xb3eeb);switch(_0x1d70c2[_0x44d3('0x15')]){case 0x0:if(_0x1d70c2['result']){if(_0x1d70c2[_0x44d3('0x16')][_0x44d3('0x17')]){logger[_0x44d3('0xe')]('Tilde\x20ASR\x20hypoteses',JSON[_0x44d3('0x11')](_0x1d70c2[_0x44d3('0x16')][_0x44d3('0x18')]));_0x22ebe3=_0x1d70c2[_0x44d3('0x16')][_0x44d3('0x18')][0x0][_0x44d3('0x19')];_0x1193f9=_0x1d70c2[_0x44d3('0x16')][_0x44d3('0x18')][0x0]['likelihood'];_0x2a75b7='0';_0x204376=_0x44d3('0x1a');_0x5125a1[_0x44d3('0x13')]();}}break;case 0x1:logger[_0x44d3('0xe')](_0x44d3('0x8'));_0x2a75b7='1';_0x204376=_0x44d3('0x8');break;case 0x2:logger[_0x44d3('0xe')](_0x44d3('0x1b'));_0x2a75b7='2';_0x204376=_0x44d3('0x1b');break;case 0x9:logger['info'](_0x44d3('0x1c'));_0x2a75b7='9';_0x204376='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x44d3('0xe')]('Authentication\x20failed.');_0x2a75b7='10';_0x204376=_0x44d3('0x1d');break;case 0xb:logger['info']('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x2a75b7='11';_0x204376=_0x44d3('0x1e');}}}catch(_0x2370e9){logger['error'](_0x44d3('0x1f'),JSON[_0x44d3('0x11')](_0x2370e9));_0x5125a1[_0x44d3('0x13')]();}}function _0x557c13(){logger[_0x44d3('0xe')]('Close\x20Tilde\x20ASR\x20socket');_0x19b7d0({'transcript':_0x22ebe3,'confidence':_0x1193f9,'status':_0x2a75b7,'status_message':_0x204376});}function _0x2c2061(_0x2a998f){logger['error'](_0x44d3('0x20'));if(!_[_0x44d3('0x21')](_0x2a998f)){logger[_0x44d3('0x22')](_[_0x44d3('0x23')](_0x2a998f)?JSON[_0x44d3('0x11')](_0x2a998f):_0x2a998f);}}_0x5125a1['on'](_0x44d3('0x24'),_0x429762);_0x5125a1['on'](_0x44d3('0x25'),_0x2d2dba);_0x5125a1['on'](_0x44d3('0x26'),_0x557c13);_0x5125a1['on'](_0x44d3('0x22'),_0x2c2061);});};
\ No newline at end of file
+var _0xd86d=['close','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','open','bluebird','lodash','moment','crypto','../../../../../../config/logger','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','createHash','sha1','digest','unix','send','stringify','createReadStream','data'];(function(_0x2d79fe,_0x33dcb0){var _0x666ce4=function(_0x442d94){while(--_0x442d94){_0x2d79fe['push'](_0x2d79fe['shift']());}};_0x666ce4(++_0x33dcb0);}(_0xd86d,0xf7));var _0xdd86=function(_0x58e3de,_0x40f92c){_0x58e3de=_0x58e3de-0x0;var _0x2c0fd2=_0xd86d[_0x58e3de];return _0x2c0fd2;};'use strict';var BPromise=require(_0xdd86('0x0'));var _=require(_0xdd86('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xdd86('0x2'));var crypto=require(_0xdd86('0x3'));var logger=require(_0xdd86('0x4'))(_0xdd86('0x5'));module[_0xdd86('0x6')]=function(_0x3bc547,_0x4f9d92,_0x3aaa03,_0x51c3ce){return new BPromise(function(_0x4ebf30,_0x41b2a2){logger[_0xdd86('0x7')](_0xdd86('0x8'),_0x51c3ce||_0xdd86('0x9'));var _0x3c8059=new WebSocket(_0x51c3ce||_0xdd86('0x9'),{'perMessageDeflate':![]});var _0x3ed49e='';var _0x20bafe='0';var _0x2a8f24='1';var _0x52b342=_0xdd86('0xa');function _0x1543e6(_0x1fdce9){var _0x48d025=crypto[_0xdd86('0xb')](_0xdd86('0xc'));_0x48d025['update'](_0x1fdce9);return _0x48d025[_0xdd86('0xd')]('hex');}function _0xafbfed(){try{logger['info']('Open\x20Tilde\x20ASR\x20socket');var _0x1274e2=moment()[_0xdd86('0xe')]();var _0x187697=_0x1543e6(_0x1274e2+_0x4f9d92+_0x3aaa03);_0x3c8059[_0xdd86('0xf')](JSON[_0xdd86('0x10')]({'appID':_0x4f9d92,'timestamp':_0x1274e2,'appKey':_0x187697}));var _0x20c51b=fs[_0xdd86('0x11')](_0x3bc547);_0x20c51b['on'](_0xdd86('0x12'),function(_0x30175e){_0x3c8059[_0xdd86('0xf')](_0x30175e);});_0x20c51b['on'](_0xdd86('0x13'),function(){_0x3c8059[_0xdd86('0xf')]('EOS');});}catch(_0x586a63){logger[_0xdd86('0x14')](_0xdd86('0x15'),JSON[_0xdd86('0x10')](_0x586a63));_0x3c8059[_0xdd86('0x16')]();}}function _0x2a85fb(_0xfa10e){try{if(_0xfa10e){var _0x49f4ce=JSON['parse'](_0xfa10e);switch(_0x49f4ce[_0xdd86('0x17')]){case 0x0:if(_0x49f4ce[_0xdd86('0x18')]){if(_0x49f4ce[_0xdd86('0x18')]['final']){logger['info'](_0xdd86('0x19'),JSON['stringify'](_0x49f4ce[_0xdd86('0x18')][_0xdd86('0x1a')]));_0x3ed49e=_0x49f4ce[_0xdd86('0x18')]['hypotheses'][0x0][_0xdd86('0x1b')];_0x20bafe=_0x49f4ce[_0xdd86('0x18')][_0xdd86('0x1a')][0x0][_0xdd86('0x1c')];_0x2a8f24='0';_0x52b342=_0xdd86('0x1d');_0x3c8059['terminate']();}}break;case 0x1:logger['info'](_0xdd86('0xa'));_0x2a8f24='1';_0x52b342=_0xdd86('0xa');break;case 0x2:logger[_0xdd86('0x7')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x2a8f24='2';_0x52b342='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger['info'](_0xdd86('0x1e'));_0x2a8f24='9';_0x52b342=_0xdd86('0x1e');break;case 0xa:logger[_0xdd86('0x7')](_0xdd86('0x1f'));_0x2a8f24='10';_0x52b342=_0xdd86('0x1f');break;case 0xb:logger[_0xdd86('0x7')](_0xdd86('0x20'));_0x2a8f24='11';_0x52b342=_0xdd86('0x20');}}}catch(_0x5bf688){logger[_0xdd86('0x14')](_0xdd86('0x21'),JSON[_0xdd86('0x10')](_0x5bf688));_0x3c8059[_0xdd86('0x16')]();}}function _0x276428(){logger[_0xdd86('0x7')](_0xdd86('0x22'));_0x4ebf30({'transcript':_0x3ed49e,'confidence':_0x20bafe,'status':_0x2a8f24,'status_message':_0x52b342});}function _0x1546f4(_0x5a3465){logger[_0xdd86('0x14')](_0xdd86('0x23'));if(!_[_0xdd86('0x24')](_0x5a3465)){logger['error'](_['isObject'](_0x5a3465)?JSON[_0xdd86('0x10')](_0x5a3465):_0x5a3465);}}_0x3c8059['on'](_0xdd86('0x25'),_0xafbfed);_0x3c8059['on']('message',_0x2a85fb);_0x3c8059['on'](_0xdd86('0x13'),_0x276428);_0x3c8059['on'](_0xdd86('0x14'),_0x1546f4);});};
\ No newline at end of file
index 744229e..5e29f5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82c4=['./asr','exports'];(function(_0x9ebb81,_0x2b0ce2){var _0x780bbf=function(_0x3eccf8){while(--_0x3eccf8){_0x9ebb81['push'](_0x9ebb81['shift']());}};_0x780bbf(++_0x2b0ce2);}(_0x82c4,0x168));var _0x482c=function(_0x382189,_0x4c38a9){_0x382189=_0x382189-0x0;var _0x36f350=_0x82c4[_0x382189];return _0x36f350;};var asr=require(_0x482c('0x0'));module[_0x482c('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x8611=['exports','./asr'];(function(_0x1aa3fe,_0x27c5fa){var _0x163cee=function(_0x2a1505){while(--_0x2a1505){_0x1aa3fe['push'](_0x1aa3fe['shift']());}};_0x163cee(++_0x27c5fa);}(_0x8611,0x12b));var _0x1861=function(_0x2d1736,_0x1efc37){_0x2d1736=_0x2d1736-0x0;var _0x15714b=_0x8611[_0x2d1736];return _0x15714b;};var asr=require(_0x1861('0x0'));module[_0x1861('0x1')]={'asr':asr};
\ No newline at end of file
index 83588bd..bfb3d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','exports','util','net','events','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x3a833e,_0x5a1878){var _0xdff445=function(_0x1715a3){while(--_0x1715a3){_0x3a833e['push'](_0x3a833e['shift']());}};_0xdff445(++_0x5a1878);}(_0xe706,0xa3));var _0x6e70=function(_0x48b8ad,_0xe28403){_0x48b8ad=_0x48b8ad-0x0;var _0x4d1bae=_0xe706[_0x48b8ad];return _0x4d1bae;};'use strict';var util=require(_0x6e70('0x0'));var net=require(_0x6e70('0x1'));var EventEmitter=require(_0x6e70('0x2'))['EventEmitter'];var AGIError=require(_0x6e70('0x3'));var AGIChannel=require(_0x6e70('0x4'));var AGIServer=function(_0x2ca810,_0x7dfbc3,_0x142c27){var _0x2164a4=this;var _0x376a8d=null;var _0x506db9=0x0;if(!_0x2ca810)_0x2ca810=0x11dd;if(!_0x7dfbc3)_0x7dfbc3=_0x6e70('0x5');EventEmitter[_0x6e70('0x6')](_0x2164a4);function _0x36357b(){if(!_0x2ca810){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x9')));return![];}_0x376a8d=net[_0x6e70('0xa')]();_0x376a8d[_0x6e70('0xb')](_0x2ca810,_0x7dfbc3);_0x376a8d['on'](_0x6e70('0xc'),function(){_0x2164a4[_0x6e70('0x7')](_0x6e70('0xc'));});_0x376a8d['on'](_0x6e70('0xd'),function(_0x743eb5){_0x376a8d[_0x6e70('0xe')](function(_0x37b3e0,_0x4600f9){if(_0x37b3e0){_0x2164a4['emit']('error',new AGIError(_0x6e70('0xf'),_0x37b3e0));}else if(_0x142c27&&_0x142c27<0x0){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x10')));_0x743eb5[_0x6e70('0x11')]();}else if(_0x142c27&&_0x142c27>0x0&&_0x142c27<_0x4600f9){_0x506db9+=0x1;_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x12'),_0x506db9));_0x743eb5['destroy']();}else{var _0x52737e=new AGIChannel(_0x743eb5);_0x52737e['on']('ready',function(){_0x2164a4[_0x6e70('0x7')]('connection',_0x52737e);});}});});_0x376a8d['on']('error',function(_0x304716){_0x2164a4[_0x6e70('0x7')]('error',new AGIError(_0x6e70('0xf'),_0x304716['code']));});_0x376a8d['on'](_0x6e70('0x13'),function(){_0x2164a4[_0x6e70('0x7')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6e70('0x14')](function(){_0x36357b();});};util['inherits'](AGIServer,EventEmitter);module[_0x6e70('0x15')]=function(_0x173afe,_0x53acdc,_0x497d61){return new AGIServer(_0x173afe,_0x53acdc,_0x497d61);};
\ No newline at end of file
+var _0x34e8=['E_AGI_ARGUMENT_PORT','createServer','listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','inherits','exports','util','net','events','EventEmitter','./channel','call','emit','error'];(function(_0x2e5a67,_0x37dadb){var _0x1f37b9=function(_0x47a076){while(--_0x47a076){_0x2e5a67['push'](_0x2e5a67['shift']());}};_0x1f37b9(++_0x37dadb);}(_0x34e8,0x12c));var _0x834e=function(_0x262c0d,_0x2ec705){_0x262c0d=_0x262c0d-0x0;var _0x29bc2e=_0x34e8[_0x262c0d];return _0x29bc2e;};'use strict';var util=require(_0x834e('0x0'));var net=require(_0x834e('0x1'));var EventEmitter=require(_0x834e('0x2'))[_0x834e('0x3')];var AGIError=require('./error');var AGIChannel=require(_0x834e('0x4'));var AGIServer=function(_0x21e2e0,_0x472111,_0x31bf20){var _0x289ef2=this;var _0x19a3e0=null;var _0x398bee=0x0;if(!_0x21e2e0)_0x21e2e0=0x11dd;if(!_0x472111)_0x472111='127.0.0.1';EventEmitter[_0x834e('0x5')](_0x289ef2);function _0x52056d(){if(!_0x21e2e0){_0x289ef2[_0x834e('0x6')](_0x834e('0x7'),new AGIError(_0x834e('0x8')));return![];}_0x19a3e0=net[_0x834e('0x9')]();_0x19a3e0[_0x834e('0xa')](_0x21e2e0,_0x472111);_0x19a3e0['on'](_0x834e('0xb'),function(){_0x289ef2[_0x834e('0x6')](_0x834e('0xb'));});_0x19a3e0['on'](_0x834e('0xc'),function(_0x186b3b){_0x19a3e0[_0x834e('0xd')](function(_0x36e124,_0x14038b){if(_0x36e124){_0x289ef2[_0x834e('0x6')](_0x834e('0x7'),new AGIError(_0x834e('0xe'),_0x36e124));}else if(_0x31bf20&&_0x31bf20<0x0){_0x289ef2[_0x834e('0x6')]('error',new AGIError(_0x834e('0xf')));_0x186b3b[_0x834e('0x10')]();}else if(_0x31bf20&&_0x31bf20>0x0&&_0x31bf20<_0x14038b){_0x398bee+=0x1;_0x289ef2['emit'](_0x834e('0x7'),new AGIError(_0x834e('0x11'),_0x398bee));_0x186b3b[_0x834e('0x10')]();}else{var _0x21cc0a=new AGIChannel(_0x186b3b);_0x21cc0a['on']('ready',function(){_0x289ef2[_0x834e('0x6')](_0x834e('0xc'),_0x21cc0a);});}});});_0x19a3e0['on']('error',function(_0x316205){_0x289ef2['emit'](_0x834e('0x7'),new AGIError(_0x834e('0xe'),_0x316205['code']));});_0x19a3e0['on'](_0x834e('0x12'),function(){_0x289ef2[_0x834e('0x6')](_0x834e('0x12'),new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x834e('0x13')](function(){_0x52056d();});};util[_0x834e('0x14')](AGIServer,EventEmitter);module[_0x834e('0x15')]=function(_0xb993a1,_0x237947,_0x254677){return new AGIServer(_0xb993a1,_0x237947,_0x254677);};
\ No newline at end of file
index 4515d70..c1f68ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['agent','agentPause','agentUnpause','agentLogout','internal','%s/%s@from-sip/n','agentLogin','shellCommand','exec','trim','googleCloudTTS','apiKey','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','google_tts_language','restAPI','url','number','timeout','POST','PUT','method','parse','headers','rawHeaders','computedVariables','uri','render','body','stringify','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','key','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appsecret','clear','includes','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','saveRestApiResult','%s.%s','length','setVariable','split','extra','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','createSquareDetailsReport','maxRetry','mrcpsynth','noop','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','getAndSetVariable','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','scheduledAt','delay','sync','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','SESTEK_ASR_INSTANCE','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','getSquareOdbc','no\x20query\x20configured','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','keys','debug','no\x20user\x20selected','sip_id','no\x20user\x20found','opts','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','toUpperCase','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','private_key','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','speech','out','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','trunk_name','no\x20trunk\x20selected','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','generate','hiddendigitspos','first','substr','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','recordFile','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','no\x20condition\x20configured','condition','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','NOBEEP','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','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','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','pause','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','%s_STATUS_CODE','statusCode','200','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','saydigits','sayDigits','digits','replace','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','XMCS-UNIQUEID','yes','Answer','Skipped\x20Answer','project_id','arg_1','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','127.0.0.1','system','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','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','replaceAll','join','util','shelljs','odbc','randomstring','moment','request-promise','../../config/logger','agi','/var/opt/motion2/server/files','rawBody','menu','getdigits','rpc','mailRpc','prototype','getVariable','getVariableById','then','catch','getVoiceQueue','getSquareProject','getSquareProjectById','name','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','interval','getSoundPath','format','getQueryOdbc','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','query','info','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','channel','uniqueid','label','agicommand','callerid','createSquareRecording','calleridname','priority','accountcode','file','createSquareMessage','createCmContact','isEmpty','isNil','random','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById'];(function(_0x53c52d,_0x207d70){var _0x4e6598=function(_0x46000e){while(--_0x46000e){_0x53c52d['push'](_0x53c52d['shift']());}};_0x4e6598(++_0x207d70);}(_0x6aa7,0x178));var _0x76aa=function(_0x14e7ec,_0x4b2e66){_0x14e7ec=_0x14e7ec-0x0;var _0x38e896=_0x6aa7[_0x14e7ec];return _0x38e896;};'use strict';var fs=require('fs');var util=require(_0x76aa('0x0'));var _=require('lodash');var sh=require(_0x76aa('0x1'));var odbc=require(_0x76aa('0x2'))();var rs=require(_0x76aa('0x3'));var moment=require(_0x76aa('0x4'));var Mustache=require('mustache');var rp=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var scripts=require('./scripts');var FILES_PATH=_0x76aa('0x8');var recursiveMapAttributes=['rawHeaders',_0x76aa('0x9')];var verticesWithRetry=[_0x76aa('0xa'),_0x76aa('0xb'),'getsecretdigits'];var AGIVertices=function(_0x3dae33,_0x266bd5,_0x3a3f36){this['channel']=_0x3dae33;this[_0x76aa('0xc')]=_0x266bd5;this[_0x76aa('0xd')]=_0x3a3f36;};AGIVertices[_0x76aa('0xe')][_0x76aa('0xf')]=function(_0x37f1ab,_0x128435){this[_0x76aa('0xc')][_0x76aa('0x10')](_0x37f1ab)[_0x76aa('0x11')](function(_0x17a417){_0x128435(null,_0x17a417?_0x17a417['name']:![]);})[_0x76aa('0x12')](function(_0x5df49c){_0x128435(_0x5df49c);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x13')]=function(_0x3f8f6b,_0x8e44ed){this[_0x76aa('0xc')]['getVoiceQueueById'](_0x3f8f6b)['then'](function(_0x2b3b4f){_0x8e44ed(null,_0x2b3b4f?_0x2b3b4f['name']:![]);})[_0x76aa('0x12')](function(_0x319bf1){_0x8e44ed(_0x319bf1);});};AGIVertices['prototype'][_0x76aa('0x14')]=function(_0x550d9a,_0x328381){this['rpc'][_0x76aa('0x15')](_0x550d9a)[_0x76aa('0x11')](function(_0x2ab30b){_0x328381(null,_0x2ab30b?_0x2ab30b[_0x76aa('0x16')]:![]);})[_0x76aa('0x12')](function(_0x3ead3f){_0x328381(_0x3ead3f);});};AGIVertices['prototype']['getSquareOdbc']=function(_0x256636,_0x454dd3){this[_0x76aa('0xc')][_0x76aa('0x17')](_0x256636)[_0x76aa('0x11')](function(_0x191560){_0x454dd3(null,_0x191560?_0x191560[_0x76aa('0x18')]:![]);})[_0x76aa('0x12')](function(_0x385157){_0x454dd3(_0x385157);});};AGIVertices['prototype'][_0x76aa('0x19')]=function(_0x21064c,_0x338a6b){this['rpc'][_0x76aa('0x1a')](_0x21064c)[_0x76aa('0x11')](function(_0x31252f){_0x338a6b(null,_0x31252f?_0x31252f[_0x76aa('0x16')]:![]);})[_0x76aa('0x12')](function(_0xc1044c){_0x338a6b(_0xc1044c);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x1b')]=function(_0x32bf9f,_0x2cba6d){this[_0x76aa('0xc')][_0x76aa('0x1c')](_0x32bf9f)[_0x76aa('0x11')](function(_0x4ef9b0){_0x2cba6d(null,_0x4ef9b0?_0x4ef9b0[_0x76aa('0x16')]:![]);})[_0x76aa('0x12')](function(_0x25c614){_0x2cba6d(_0x25c614);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x1d')]=function(_0x2f9316,_0x25a803){var _0x282d0a=this;this[_0x76aa('0xc')][_0x76aa('0x1e')](_0x2f9316)['then'](function(_0x3fcb7f){_0x25a803(null,_0x3fcb7f?_0x282d0a['getSoundPath'](_0x3fcb7f[_0x76aa('0x1f')]):![]);})[_0x76aa('0x12')](function(_0x2dec94){_0x25a803(_0x2dec94);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x20')]=function(_0x2d6213,_0x2ee0f9){this[_0x76aa('0xc')][_0x76aa('0x21')](_0x2d6213)[_0x76aa('0x11')](function(_0x5edcd8){_0x2ee0f9(null,_0x5edcd8?_0x5edcd8:![]);})[_0x76aa('0x12')](function(_0x5532c7){_0x2ee0f9(_0x5532c7);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x22')]=function(_0x458ac3,_0x38ecd1,_0x35a705){this['mailRpc'][_0x76aa('0x22')](_0x458ac3,_0x38ecd1)[_0x76aa('0x11')](function(){_0x35a705(null);})['catch'](function(_0x2ee338){_0x35a705(_0x2ee338);});};AGIVertices['prototype'][_0x76aa('0x23')]=function(_0x4c90b6,_0x8479a3){this['rpc']['getIntervalById'](_0x4c90b6)[_0x76aa('0x11')](function(_0x282c56){if(_0x282c56){if(_0x282c56[_0x76aa('0x24')]){_0x8479a3(null,[_0x282c56[_0x76aa('0x25')]]);}else{_0x8479a3(null,_['map'](_0x282c56['Intervals'],_0x76aa('0x25')));}}else{_0x8479a3(null,![]);}})[_0x76aa('0x12')](function(_0x58127c){_0x8479a3(_0x58127c);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x26')]=function(_0x5b57d8){return util[_0x76aa('0x27')]('%s/sounds/converted/%s',FILES_PATH,_0x5b57d8);};AGIVertices['prototype'][_0x76aa('0x28')]=function(_0x36d64e,_0x181216,_0x127bc4){odbc['open'](_0x36d64e,function(_0x401c07){if(_0x401c07){logger[_0x76aa('0x29')](_0x76aa('0x2a'),_0x401c07);_0x127bc4(_0x401c07);}else{logger['info'](_0x76aa('0x2b'));odbc[_0x76aa('0x2c')](_0x181216,function(_0x2f7726,_0x147c03){if(_0x2f7726){logger[_0x76aa('0x2d')](_0x76aa('0x2e'),_0x181216);_0x127bc4(_0x2f7726);}else{logger[_0x76aa('0x2d')](_0x76aa('0x2f'),_0x181216);odbc[_0x76aa('0x30')](function(_0x5f022a){if(_0x5f022a){logger[_0x76aa('0x29')](_0x76aa('0x31'),_0x5f022a);}_0x127bc4(null,_0x147c03);});}});}});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x32')]=function(_0x64612e,_0x2957aa){this['rpc']['getSmsAccountById'](_0x64612e)[_0x76aa('0x11')](function(_0x262906){_0x2957aa(null,_0x262906?_0x262906:![]);})[_0x76aa('0x12')](function(_0x365612){_0x2957aa(_0x365612);});};AGIVertices['prototype'][_0x76aa('0x33')]=function(_0x403084,_0x154567){this[_0x76aa('0xc')][_0x76aa('0x33')](_0x403084)['then'](function(_0x13dafe){_0x154567(null,_0x13dafe);})['catch'](function(_0xbb3136){_0x154567(_0xbb3136);});};AGIVertices['prototype']['createSquareDetailsReport']=function(_0x4f7f3a,_0x144f0a,_0x541594){this['rpc']['createSquareDetailsReport']({'uniqueid':this[_0x76aa('0x34')][_0x76aa('0x35')],'node':_0x4f7f3a[_0x76aa('0x36')],'application':_0x4f7f3a[_0x76aa('0x37')],'data':_0x144f0a||null,'project_name':this[_0x76aa('0x34')]['arg_1'],'callerid':this[_0x76aa('0x34')][_0x76aa('0x38')]})[_0x76aa('0x11')](function(_0x2d6b7f){if(_0x541594){_0x541594(null,_0x2d6b7f);}})[_0x76aa('0x12')](function(_0x47a308){if(_0x541594){_0x541594(_0x47a308);}});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x39')]=function(_0x5dc67e,_0x2d3441,_0x5a984e,_0x3aa858){this[_0x76aa('0xc')][_0x76aa('0x39')]({'uniqueid':this[_0x76aa('0x34')][_0x76aa('0x35')],'callerid':this[_0x76aa('0x34')][_0x76aa('0x38')],'calleridname':this[_0x76aa('0x34')][_0x76aa('0x3a')],'context':this[_0x76aa('0x34')]['context'],'extension':this[_0x76aa('0x34')]['extension'],'priority':this[_0x76aa('0x34')][_0x76aa('0x3b')],'accountcode':this[_0x76aa('0x34')][_0x76aa('0x3c')],'dnid':this['channel']['dnid'],'projectName':this[_0x76aa('0x34')]['arg_1'],'saveName':_0x2d3441,'filename':_0x5dc67e[_0x76aa('0x3d')]||_0x2d3441,'savePath':_0x5a984e})[_0x76aa('0x11')](function(_0x4315b3){_0x3aa858(null,_0x4315b3);})[_0x76aa('0x12')](function(_0x30c577){_0x3aa858(_0x30c577);});};AGIVertices[_0x76aa('0xe')]['createSquareMessage']=function(_0x564546,_0x2fcf8f,_0x1eafb2,_0x1708d4,_0x40e8ff){this[_0x76aa('0xc')][_0x76aa('0x3e')]({'uniqueid':this['channel'][_0x76aa('0x35')],'body':_0x564546,'direction':_0x2fcf8f,'providerName':_0x1eafb2,'providerResponse':_0x1708d4})[_0x76aa('0x11')](function(_0x26db69){if(_0x40e8ff){_0x40e8ff(null,_0x26db69);}})['catch'](function(_0x30d930){if(_0x40e8ff){_0x40e8ff(_0x30d930);}});};AGIVertices['prototype'][_0x76aa('0x3f')]=function(_0x5e1d84,_0x339b0d){this[_0x76aa('0xc')][_0x76aa('0x3f')]({'firstName':_[_0x76aa('0x40')](_0x5e1d84[_0x76aa('0x16')])||_[_0x76aa('0x41')](_0x5e1d84[_0x76aa('0x16')])?'callback_'+Math[_0x76aa('0x42')]():_0x5e1d84['name'],'lastName':_[_0x76aa('0x40')](_0x5e1d84[_0x76aa('0x43')])||_[_0x76aa('0x41')](_0x5e1d84[_0x76aa('0x43')])?null:_0x5e1d84[_0x76aa('0x43')],'phone':_0x5e1d84[_0x76aa('0x44')],'ListId':_0x5e1d84[_0x76aa('0x45')],'scheduledat':_0x5e1d84['scheduledAt'],'callbackUniqueid':this[_0x76aa('0x34')][_0x76aa('0x35')],'tags':_0x76aa('0x46'),'description':_0x76aa('0x47')+_0x5e1d84['scheduledAt'][_0x76aa('0x48')](),'priority':_0x5e1d84[_0x76aa('0x49')]})[_0x76aa('0x11')](function(_0x410933){_0x339b0d(null,_0x410933);})[_0x76aa('0x12')](function(_0xf7732){_0x339b0d(_0xf7732);});};AGIVertices['prototype'][_0x76aa('0x4a')]=function(_0xbf78c7,_0x2886eb){this[_0x76aa('0xc')][_0x76aa('0x4b')](_0xbf78c7)[_0x76aa('0x11')](function(_0x37babe){_0x2886eb(null,_0x37babe?_0x37babe['name']:![]);})['catch'](function(_0x2c59a6){_0x2886eb(_0x2c59a6);});};AGIVertices[_0x76aa('0xe')]['agentPause']=function(_0x3d7802,_0x1e6f3c,_0x4f832d){var _0x3354b6={'role':_0x76aa('0x4c')};_0x3354b6[_0x3d7802]=this[_0x76aa('0x34')][_0x76aa('0x38')];this[_0x76aa('0xc')][_0x76aa('0x4d')](_0x3354b6,_0x1e6f3c,this[_0x76aa('0x34')][_0x76aa('0x35')])[_0x76aa('0x11')](function(_0x57d778){_0x4f832d(null,_[_0x76aa('0x41')](_0x57d778)?![]:!![]);})['catch'](function(_0x40e746){logger[_0x76aa('0x29')](_0x40e746);_0x4f832d(null,![]);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x4e')]=function(_0x343cf1,_0x260ad2){var _0x18c4b8={'role':_0x76aa('0x4c')};_0x18c4b8[_0x343cf1]=this[_0x76aa('0x34')]['callerid'];this[_0x76aa('0xc')][_0x76aa('0x4e')](_0x18c4b8)[_0x76aa('0x11')](function(_0xe5957d){_0x260ad2(null,_[_0x76aa('0x41')](_0xe5957d)?![]:!![]);})[_0x76aa('0x12')](function(_0x3d6d10){logger[_0x76aa('0x29')](_0x3d6d10);_0x260ad2(null,![]);});};AGIVertices['prototype'][_0x76aa('0x4f')]=function(_0x4d3ad0,_0x35bd2b){var _0x35881c={'role':_0x76aa('0x4c')};_0x35881c[_0x4d3ad0]=this[_0x76aa('0x34')][_0x76aa('0x38')];this[_0x76aa('0xc')][_0x76aa('0x4f')](_0x35881c)['then'](function(_0x9ea0af){_0x35bd2b(null,_[_0x76aa('0x41')](_0x9ea0af)?![]:!![]);})['catch'](function(_0x54334b){logger[_0x76aa('0x29')](_0x54334b);_0x35bd2b(null,![]);});};AGIVertices[_0x76aa('0xe')]['agentLogin']=function(_0x21b99c,_0x35a21f){var _0x12aeee={'role':'agent'};_0x12aeee[_0x21b99c]=this[_0x76aa('0x34')]['callerid'];var _0xf31e1f=_0x21b99c!=_0x76aa('0x50')?util[_0x76aa('0x27')](_0x76aa('0x51'),'LOCAL',this['channel'][_0x76aa('0x38')]):undefined;this['rpc'][_0x76aa('0x52')](_0x12aeee,_0xf31e1f)[_0x76aa('0x11')](function(_0x368a95){_0x35a21f(null,_[_0x76aa('0x41')](_0x368a95)?![]:!![]);})[_0x76aa('0x12')](function(_0x30837c){logger[_0x76aa('0x29')](_0x30837c);_0x35a21f(null,![]);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x53')]=function(_0x54390f,_0x7d02e7){sh[_0x76aa('0x54')](_[_0x76aa('0x55')](_0x54390f),function(_0x45ae9f,_0x4eb2e7){var _0x4c0af4=_0x4eb2e7['replace'](/(\r\n|\n|\r)/gm,'');_0x7d02e7(null,_0x4c0af4);});};AGIVertices[_0x76aa('0xe')]['googleCloudTTS']=function(_0xb61e5,_0x256195){scripts[_0x76aa('0x56')](_0xb61e5[_0x76aa('0x57')],_0xb61e5['google_cloud_tts_text_type']||_0x76aa('0x58'),_0xb61e5['text'],_0xb61e5[_0x76aa('0x59')]||_0x76aa('0x5a'),_0xb61e5[_0x76aa('0x5b')]||_0x76aa('0x5c'),_0xb61e5[_0x76aa('0x5d')]||'MP3')[_0x76aa('0x11')](function(_0x13ae5d){_0x256195(null,_0x13ae5d);})[_0x76aa('0x12')](function(_0x3601d6){_0x256195(_0x3601d6);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x5e')]=function(_0x1d9c6e,_0x18c88a){scripts['googleTTS'](_0x1d9c6e[_0x76aa('0x58')],_0x1d9c6e[_0x76aa('0x5f')]||'en',0x1)['then'](function(_0x3c1b98){_0x18c88a(null,_0x3c1b98);})[_0x76aa('0x12')](function(_0x325487){_0x18c88a(_0x325487);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x60')]=function(_0x51b101,_0x2eaeb5){var _0x5dc923={'uri':_0x51b101[_0x76aa('0x61')],'method':_0x51b101['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x51b101['timeout'])===_0x76aa('0x62')&&parseInt(_0x51b101[_0x76aa('0x63')])>=0x1?parseInt(_0x51b101['timeout'])*0x3e8:0x5*0x3e8};if(_['includes']([_0x76aa('0x64'),_0x76aa('0x65')],_0x5dc923[_0x76aa('0x66')]['toUpperCase']())){try{_0x5dc923['body']=_0x51b101[_0x76aa('0x9')]?JSON[_0x76aa('0x67')](_0x51b101[_0x76aa('0x9')]):{};}catch(_0x5d65ec){logger[_0x76aa('0x29')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5d65ec);}}try{_0x5dc923[_0x76aa('0x68')]=_0x51b101[_0x76aa('0x69')]?JSON[_0x76aa('0x67')](_0x51b101[_0x76aa('0x69')]):{};}catch(_0x1e539f){logger['error']('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x1e539f);}if(_0x51b101[_0x76aa('0x6a')]){try{var _0x272a28=require(_0x51b101[_0x76aa('0x6a')])['sync'](this,_0x5dc923);_0x5dc923[_0x76aa('0x6b')]=Mustache[_0x76aa('0x6c')](_0x51b101[_0x76aa('0x61')],_0x272a28,{},['$$','$$']);if(_0x5dc923[_0x76aa('0x68')]){_0x5dc923[_0x76aa('0x68')]=JSON['parse'](Mustache[_0x76aa('0x6c')](JSON['stringify'](_0x5dc923[_0x76aa('0x68')]),_0x272a28,{},['$$','$$']));}if(_0x5dc923[_0x76aa('0x6d')]){_0x5dc923[_0x76aa('0x6d')]=JSON[_0x76aa('0x67')](Mustache[_0x76aa('0x6c')](JSON[_0x76aa('0x6e')](_0x5dc923['body']),_0x272a28,{},['$$','$$']));}}catch(_0x555682){logger['error']('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x555682);}}rp(_0x5dc923)['then'](function(_0x2203c3){var _0x22f44f={'statusCode':_0x2203c3['statusCode']||0xc8,'statusMessage':_0x2203c3['statusMessage']||'OK','headers':_0x2203c3['headers']||{},'body':_0x2203c3[_0x76aa('0x6d')]||{}};_0x2eaeb5(null,_0x22f44f);})[_0x76aa('0x12')](function(_0x161593){var _0x506a41={'statusCode':_0x161593['statusCode']||0x1f4,'statusMessage':_0x161593[_0x76aa('0x6f')]||_0x76aa('0x70'),'headers':_0x161593[_0x76aa('0x71')][_0x76aa('0x68')]||{},'body':_0x161593[_0x76aa('0x71')]['body']||{}};_0x2eaeb5(null,_0x506a41);});};AGIVertices['prototype'][_0x76aa('0x72')]=function(_0x5c18b4,_0x5d9381){scripts['googleDialogflow'](this[_0x76aa('0x34')][_0x76aa('0x35')],_0x5c18b4['key'],_0x5c18b4[_0x76aa('0x58')],_0x5c18b4[_0x76aa('0x73')]||'en')['then'](function(_0x22063f){_0x5d9381(null,_0x22063f);})[_0x76aa('0x12')](function(_0x11d91f){_0x5d9381(_0x11d91f);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x74')]=function(_0x458ab9,_0x1a8b6b){scripts[_0x76aa('0x74')](this[_0x76aa('0x34')]['uniqueid'],_0x458ab9[_0x76aa('0x75')],_0x458ab9[_0x76aa('0x76')],_0x458ab9['private_key'],_0x458ab9[_0x76aa('0x58')],_0x458ab9[_0x76aa('0x77')]||'en')[_0x76aa('0x11')](function(_0x5653b3){_0x1a8b6b(null,_0x5653b3);})[_0x76aa('0x12')](function(_0x1ae1ab){_0x1a8b6b(_0x1ae1ab);});};AGIVertices['prototype'][_0x76aa('0x78')]=function(_0x3320a2,_0x203b1f){scripts['sestekNDA'](this[_0x76aa('0x34')],_0x3320a2)[_0x76aa('0x11')](function(_0x50a51f){_0x203b1f(null,_0x50a51f);})['catch'](function(_0x5941a5){_0x203b1f(_0x5941a5);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x79')]=function(_0x10acb2,_0x16643e){scripts['ispeechTTS'](_0x10acb2['key'],_0x10acb2['text'],_0x10acb2[_0x76aa('0x7a')]||'en-US',_0x10acb2[_0x76aa('0x7b')])[_0x76aa('0x11')](function(_0x5f3c24){_0x16643e(null,_0x5f3c24);})[_0x76aa('0x12')](function(_0x33781c){_0x16643e(_0x33781c);});};AGIVertices['prototype'][_0x76aa('0x7c')]=function(_0x238832,_0x41200c,_0xb766ec){scripts[_0x76aa('0x7c')](_0x41200c,_0x238832[_0x76aa('0x7d')],_0x238832['ispeech_asr_language']||_0x76aa('0x5a'),this['isConfigured'](_0x238832['model'])?_0x238832['model']:undefined)['then'](function(_0x519359){_0xb766ec(null,_0x519359);})[_0x76aa('0x12')](function(_0x11f59f){_0xb766ec(_0x11f59f);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x7e')]=function(_0x47c0de,_0x447103){scripts[_0x76aa('0x7e')](_0x47c0de[_0x76aa('0x7f')],_0x47c0de[_0x76aa('0x80')],_0x47c0de[_0x76aa('0x81')],_0x47c0de['aws_polly_voice']||_0x76aa('0x82'),_0x47c0de[_0x76aa('0x58')],_0x47c0de[_0x76aa('0x83')]||_0x76aa('0x58'))[_0x76aa('0x11')](function(_0x40f4a3){_0x447103(null,_0x40f4a3);})[_0x76aa('0x12')](function(_0x5aef82){_0x447103(_0x5aef82);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x84')]=function(_0x537917,_0x5c523b){scripts[_0x76aa('0x84')](this[_0x76aa('0x34')]['uniqueid'],_0x537917[_0x76aa('0x7f')],_0x537917['aws_secret_access_key'],_0x537917[_0x76aa('0x85')],_0x537917['text'],_0x537917[_0x76aa('0x86')])[_0x76aa('0x11')](function(_0x45227e){_0x5c523b(null,_0x45227e);})[_0x76aa('0x12')](function(_0x3d392d){_0x5c523b(_0x3d392d);});};AGIVertices['prototype'][_0x76aa('0x87')]=function(_0x54bfd7,_0x1af32e,_0x9b5fbb){scripts['googleASR'](_0x1af32e,_0x54bfd7['key'],_0x54bfd7[_0x76aa('0x88')]||_0x76aa('0x5a'))[_0x76aa('0x11')](function(_0x238818){_0x9b5fbb(null,_0x238818);})['catch'](function(_0x5a1577){_0x9b5fbb(_0x5a1577);});};AGIVertices[_0x76aa('0xe')]['tildeASR']=function(_0x3c928d,_0x5d18f8,_0x45b761){scripts[_0x76aa('0x89')](_0x5d18f8,_0x3c928d['appid'],_0x3c928d[_0x76aa('0x8a')],_0x3c928d['uri'])['then'](function(_0x32fe97){_0x45b761(null,_0x32fe97);})[_0x76aa('0x12')](function(_0x517096){_0x45b761(_0x517096);});};AGIVertices[_0x76aa('0xe')][_0x76aa('0x8b')]=function(_0x12cd19){var _0x52762c=_[_0x76aa('0x8c')](verticesWithRetry,_0x12cd19[_0x76aa('0x37')])?_0x12cd19:_[_0x76aa('0x8d')](_0x12cd19);for(var _0x1fc2f2 in _0x52762c){if(_0x52762c[_0x76aa('0x8e')](_0x1fc2f2)){if(_0x52762c[_0x1fc2f2]&&_[_0x76aa('0x8f')](_0x52762c[_0x1fc2f2])){if(_[_0x76aa('0x8c')](recursiveMapAttributes,_0x1fc2f2)){_0x52762c[_0x1fc2f2]=this[_0x76aa('0x90')](_0x52762c[_0x1fc2f2]);}else{_0x52762c[_0x1fc2f2]=this[_0x76aa('0x91')](_0x52762c[_0x1fc2f2]);}}}}return _0x52762c;};AGIVertices[_0x76aa('0xe')][_0x76aa('0x92')]=function(_0x3d21e4){for(var _0x488150 in _0x3d21e4){if(_0x3d21e4[_0x76aa('0x8e')](_0x488150)){if(_[_0x76aa('0x93')](_0x3d21e4[_0x488150])){this['recursiveNodeIndex'](_0x3d21e4[_0x488150]);}else if(_[_0x76aa('0x94')](_0x3d21e4[_0x488150])){for(var _0x1d165c=0x0;_0x1d165c<_0x3d21e4[_0x488150]['length'];_0x1d165c++){this['recursiveNodeIndex'](_0x3d21e4[_0x488150][_0x1d165c]);}}else if(_[_0x76aa('0x8f')](_0x3d21e4[_0x488150])){_0x3d21e4[_0x488150]=this[_0x76aa('0x91')](_0x3d21e4[_0x488150]);}}}};AGIVertices['prototype'][_0x76aa('0x95')]=function(_0x429500,_0x24af48){for(var _0x5010c8 in _0x429500){if(_0x429500[_0x76aa('0x8e')](_0x5010c8)){if(_[_0x76aa('0x93')](_0x429500[_0x5010c8])){if(!_['isEmpty'](_0x429500[_0x5010c8])){this[_0x76aa('0x95')](_0x429500[_0x5010c8],util[_0x76aa('0x27')](_0x76aa('0x96'),_0x24af48,_0x5010c8));}}else if(_[_0x76aa('0x94')](_0x429500[_0x5010c8])){for(var _0x2f7f2a=0x0;_0x2f7f2a<_0x429500[_0x5010c8][_0x76aa('0x97')];_0x2f7f2a++){this['saveRestApiResult'](_0x429500[_0x5010c8][_0x2f7f2a],util[_0x76aa('0x27')]('%s.%s',_0x24af48,_0x5010c8+'['+_0x2f7f2a+']'));}}else{if(!_[_0x76aa('0x41')](_0x429500[_0x5010c8])){this[_0x76aa('0x34')][_0x76aa('0x98')](util['format']('%s.%s',_0x24af48,_0x5010c8),_0x429500[_0x5010c8]);}}}}};AGIVertices[_0x76aa('0xe')][_0x76aa('0x90')]=function(_0x19982e){try{var _0xa6fd62=JSON[_0x76aa('0x67')](_0x19982e);this[_0x76aa('0x92')](_0xa6fd62);return JSON['stringify'](_0xa6fd62);}catch(_0x5a4c03){return this[_0x76aa('0x91')](_0x19982e);}};AGIVertices[_0x76aa('0xe')][_0x76aa('0x91')]=function(_0x46614f){var _0x507d7f=_0x46614f[_0x76aa('0x99')]('{');for(var _0x5a6d82=0x1;_0x5a6d82<_0x507d7f['length'];_0x5a6d82+=0x1){var _0x4bc8e3=_0x507d7f[_0x5a6d82][_0x76aa('0x99')]('}');if(_0x4bc8e3[_0x76aa('0x97')]>0x1){_0x46614f=_0x46614f['replaceAll']('{'+_0x4bc8e3[0x0]+'}',this[_0x76aa('0x34')][_0x76aa('0xf')](_0x4bc8e3[0x0])[_0x76aa('0x9a')]||_0x4bc8e3[0x0]);}}if(_0x507d7f[_0x76aa('0x97')]===0x1){return _0x46614f[_0x76aa('0x48')]();}return this[_0x76aa('0x91')](_0x46614f);};AGIVertices[_0x76aa('0xe')]['getAndSetVariable']=function(_0x344ea4,_0x2a3bbf){var _0x212adb=this[_0x76aa('0x34')][_0x76aa('0xf')](_0x344ea4);if(_0x212adb[_0x76aa('0x9b')]===-0x1){return _0x212adb;}logger['info'](util[_0x76aa('0x27')](_0x76aa('0x9c'),_0x2a3bbf,_0x212adb[_0x76aa('0x9a')]));return this[_0x76aa('0x34')]['setVariable'](_0x2a3bbf,_0x212adb[_0x76aa('0x9a')]);};AGIVertices[_0x76aa('0xe')][_0x76aa('0x9d')]=function(_0x3e837d){return _0x3e837d&&_0x3e837d!=='0'&&_0x3e837d!=='-1'&&_0x3e837d!=='';};AGIVertices[_0x76aa('0xe')]['maxRetry']=function(_0x203bc2){this[_0x76aa('0x9e')]['sync'](this,_0x203bc2,'-');_0x203bc2['retry']=_0x203bc2[_0x76aa('0x9f')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x76aa('0xe')][_0x76aa('0xa0')]=function(_0x461075){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x461075[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x461075[_0x76aa('0x58')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xa2'));}var _0x59c946='\x22'+_0x461075[_0x76aa('0x58')]+'\x22';if(this[_0x76aa('0x9d')](_0x461075[_0x76aa('0x71')])){_0x59c946+=','+_0x461075[_0x76aa('0x71')];}var _0x42d71d=this[_0x76aa('0x34')]['exec'](_0x76aa('0xa3'),_0x59c946);if(_0x42d71d['result']===-0x1){return _0x42d71d;}return this[_0x76aa('0x34')]['noop'](util[_0x76aa('0x27')](_0x76aa('0xa4'),_0x59c946));};AGIVertices['prototype'][_0x76aa('0xa5')]=function(_0x85a254){logger[_0x76aa('0x2d')](util['format'](_0x76aa('0xa6'),_0x85a254[_0x76aa('0x36')]));if(!this['isConfigured'](_0x85a254[_0x76aa('0xa7')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xa8'));}var _0x3b9ed5=_0x85a254[_0x76aa('0xa7')];if(this['isConfigured'](_0x85a254[_0x76aa('0x71')])){_0x3b9ed5+=','+_0x85a254[_0x76aa('0x71')];}var _0x3de02b=this[_0x76aa('0x34')][_0x76aa('0x54')](_0x76aa('0xa9'),_0x3b9ed5);if(_0x3de02b[_0x76aa('0x9b')]===-0x1){return _0x3de02b;}var _0x6962da=this[_0x76aa('0xaa')](_0x76aa('0xab'),_0x76aa('0xac'));if(_0x6962da['result']===-0x1){return _0x6962da;}var _0x219e47=this[_0x76aa('0xaa')](_0x76aa('0xad'),_0x76aa('0xae'));if(_0x219e47[_0x76aa('0x9b')]===-0x1){return _0x219e47;}var _0x81b7ea=this[_0x76aa('0xaa')](_0x76aa('0xaf'),'MRCP_RECOG_INSTANCE');if(_0x81b7ea[_0x76aa('0x9b')]===-0x1){return _0x81b7ea;}return this['channel'][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xb0'),_0x3b9ed5));};AGIVertices['prototype'][_0x76aa('0x7')]=function(_0x41316b){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0xb1'),_0x41316b['label']));return this[_0x76aa('0x34')]['agi']([_0x41316b[_0x76aa('0xb2')],_0x41316b[_0x76aa('0xb3')]]);};AGIVertices['prototype'][_0x76aa('0xb4')]=function(_0x20fb0a){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0xb5'),_0x20fb0a[_0x76aa('0x36')]));if(this[_0x76aa('0x9d')](_0x20fb0a[_0x76aa('0x63')])){logger['info'](util[_0x76aa('0x27')](_0x76aa('0xb6'),_0x20fb0a[_0x76aa('0x63')]));var _0x2be7da=this[_0x76aa('0x34')][_0x76aa('0xb7')](_0x20fb0a[_0x76aa('0x63')]);if(_0x2be7da[_0x76aa('0x9b')]===-0x1){return _0x2be7da;}}return this['channel'][_0x76aa('0xb4')]();};AGIVertices[_0x76aa('0xe')][_0x76aa('0x46')]=function(_0x54e450){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0xb8'),_0x54e450[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x54e450['list_id'])){return this[_0x76aa('0x34')]['error'](_0x54e450,_0x76aa('0xb9'));}_0x54e450[_0x76aa('0xba')]=moment();if(this[_0x76aa('0x9d')](_0x54e450[_0x76aa('0xbb')])){_0x54e450[_0x76aa('0xba')]=moment()['add'](_0x54e450[_0x76aa('0xbb')],'minutes');}if(!this[_0x76aa('0x9d')](_0x54e450[_0x76aa('0x49')])){_0x54e450[_0x76aa('0x49')]=0x2;}this['createCmContact'][_0x76aa('0xbc')](this,_0x54e450);return this['channel'][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xbd'),_0x54e450[_0x76aa('0x44')],_0x54e450[_0x76aa('0x45')],_0x54e450[_0x76aa('0xba')]));};AGIVertices['prototype'][_0x76aa('0xbe')]=function(_0x195e95){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0xbf'),_0x195e95[_0x76aa('0x36')]));var _0xbfa5f8=this[_0x76aa('0x34')][_0x76aa('0x54')](_0x195e95[_0x76aa('0xc0')],_0x195e95[_0x76aa('0x71')]);if(_0xbfa5f8[_0x76aa('0x9b')]===-0x1){return _0xbfa5f8;}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xc1'),_0x195e95[_0x76aa('0xc0')],_0x195e95[_0x76aa('0x71')]));};AGIVertices['prototype'][_0x76aa('0xc2')]=function(_0x4a9fd7){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x4a9fd7[_0x76aa('0x36')]));if(!this['isConfigured'](_0x4a9fd7[_0x76aa('0x58')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')]('no\x20text\x20configured');}var _0x2e6093='\x22'+_0x4a9fd7['text']+'\x22';if(this['isConfigured'](_0x4a9fd7[_0x76aa('0x71')])){_0x2e6093+=','+_0x4a9fd7['options'];}var _0x85012d=this['channel']['exec'](_0x76aa('0xa3'),_0x2e6093);if(_0x85012d[_0x76aa('0x9b')]===-0x1){return _0x85012d;}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xa4'),_0x2e6093));};AGIVertices[_0x76aa('0xe')][_0x76aa('0xc3')]=function(_0x334615){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0xc4'),_0x334615[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x334615['text'])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xa2'));}var _0x1fe2c7='\x22'+_0x334615['text']+'\x22';if(this[_0x76aa('0x9d')](_0x334615['options'])){_0x1fe2c7+=','+_0x334615[_0x76aa('0x71')];}var _0x4dc018=this[_0x76aa('0x34')]['exec'](_0x76aa('0xa3'),_0x1fe2c7);if(_0x4dc018['result']===-0x1){return _0x4dc018;}return this[_0x76aa('0x34')]['noop'](util[_0x76aa('0x27')](_0x76aa('0xa4'),_0x1fe2c7));};AGIVertices['prototype'][_0x76aa('0xc5')]=function(_0x51feca){logger[_0x76aa('0x2d')](util['format'](_0x76aa('0xc6'),_0x51feca['label']));if(!this['isConfigured'](_0x51feca[_0x76aa('0xa7')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xa8'));}var _0x1f56f6=_0x51feca[_0x76aa('0xa7')];if(this[_0x76aa('0x9d')](_0x51feca[_0x76aa('0x71')])){_0x1f56f6+=','+_0x51feca[_0x76aa('0x71')];}var _0xca1831=this['channel'][_0x76aa('0x54')](_0x76aa('0xa9'),_0x1f56f6);if(_0xca1831[_0x76aa('0x9b')]===-0x1){return _0xca1831;}var _0x7121d6=this[_0x76aa('0xaa')](_0x76aa('0xab'),_0x76aa('0xc7'));if(_0x7121d6[_0x76aa('0x9b')]===-0x1){return _0x7121d6;}var _0x1cb8ad=this[_0x76aa('0xaa')](_0x76aa('0xad'),_0x76aa('0xc8'));if(_0x1cb8ad[_0x76aa('0x9b')]===-0x1){return _0x1cb8ad;}var _0x1d4f1c=this['getAndSetVariable']('RECOG_INSTANCE()',_0x76aa('0xc9'));if(_0x1d4f1c[_0x76aa('0x9b')]===-0x1){return _0x1d4f1c;}return this[_0x76aa('0x34')]['noop'](util['format'](_0x76aa('0xb0'),_0x1f56f6));};AGIVertices[_0x76aa('0xe')][_0x76aa('0xca')]=function(_0x580390){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x580390['label']));if(!this['isConfigured'](_0x580390[_0x76aa('0xa7')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')]('no\x20grammar\x20configured');}var _0x21ec5a=_0x580390[_0x76aa('0xa7')];if(this['isConfigured'](_0x580390['options'])){_0x21ec5a+=','+_0x580390[_0x76aa('0x71')];}var _0x31d0a4=this[_0x76aa('0x34')]['exec'](_0x76aa('0xa9'),_0x21ec5a);if(_0x31d0a4[_0x76aa('0x9b')]===-0x1){return _0x31d0a4;}var _0x546770=this[_0x76aa('0xaa')](_0x76aa('0xab'),'SESTEK_ASR_CONFIDENCE');if(_0x546770[_0x76aa('0x9b')]===-0x1){return _0x546770;}var _0x347211=this['getAndSetVariable'](_0x76aa('0xad'),'SESTEK_ASR_TRANSCRIPT');if(_0x347211['result']===-0x1){return _0x347211;}var _0x159215=this[_0x76aa('0xaa')](_0x76aa('0xaf'),_0x76aa('0xcb'));if(_0x159215[_0x76aa('0x9b')]===-0x1){return _0x159215;}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xb0'),_0x21ec5a));};AGIVertices[_0x76aa('0xe')]['database']=function(_0x539e4d){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0xcc'),_0x539e4d[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x539e4d[_0x76aa('0xcd')])){return this['channel'][_0x76aa('0x29')](_0x539e4d,_0x76aa('0xce'));}var _0x17f15e=this[_0x76aa('0xcf')][_0x76aa('0xbc')](this,_0x539e4d[_0x76aa('0xcd')]);if(!_0x17f15e){return this[_0x76aa('0x34')]['error'](_0x539e4d,'no\x20odbc\x20database\x20found');}if(!this['isConfigured'](_0x539e4d[_0x76aa('0x2c')])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x539e4d,_0x76aa('0xd0'));}var _0x25188a=_0x539e4d['query']['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xd1'),_0x25188a));var _0xe6e51a=this['getQueryOdbc'][_0x76aa('0xbc')](this,_0x17f15e,_0x25188a);this['createSquareDetailsReport'][_0x76aa('0xbc')](this,_0x539e4d,_0x25188a);if(!this['isConfigured'](_0x539e4d['variable_id'])){return this[_0x76aa('0x34')]['noop'](_0x76aa('0xd2'));}var _0x419c5c=this[_0x76aa('0xf')][_0x76aa('0xbc')](this,_0x539e4d[_0x76aa('0xd3')]);if(!_0x419c5c){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x539e4d,_0x76aa('0xd4'));}var _0x5db468=this;_0xe6e51a[_0x76aa('0xd5')](function(_0x37fba1,_0x3ab5c6){Object[_0x76aa('0xd6')](_0x37fba1)[_0x76aa('0xd5')](function(_0x4e9063){_0x5db468[_0x76aa('0x34')]['setVariable'](util[_0x76aa('0x27')]('%s[%s][%s]',_0x419c5c,_0x3ab5c6,_0x4e9063),_0x37fba1[_0x4e9063]);});});this[_0x76aa('0x34')]['setVariable'](util[_0x76aa('0x27')]('%s_ROWS_COUNT',_0x419c5c),_0xe6e51a[_0x76aa('0x97')]);return this[_0x76aa('0x34')][_0x76aa('0xa1')](util['format']('variable\x20%s\x20set',_0x419c5c));};AGIVertices[_0x76aa('0xe')]['dial']=function(_0x36c7ff){logger[_0x76aa('0xd7')](util[_0x76aa('0x27')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x36c7ff['label']));if(!this['isConfigured'](_0x36c7ff['sip_id'])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x36c7ff,_0x76aa('0xd8'));}var _0x1ef07e=this[_0x76aa('0x19')][_0x76aa('0xbc')](this,_0x36c7ff[_0x76aa('0xd9')]);if(!_0x1ef07e){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x36c7ff,_0x76aa('0xda'));}var _0x2484fd=this[_0x76aa('0x34')][_0x76aa('0x54')]('DIAL',[util[_0x76aa('0x27')]('SIP/%s',_0x1ef07e),_0x36c7ff[_0x76aa('0x63')],_0x36c7ff[_0x76aa('0xdb')],_0x36c7ff[_0x76aa('0x61')]]);if(_0x2484fd[_0x76aa('0x9b')]===-0x1){return _0x2484fd;}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xdc'),_0x76aa('0xdd')));};AGIVertices[_0x76aa('0xe')][_0x76aa('0xde')]=function(_0x50f9a4){logger['info'](util[_0x76aa('0x27')](_0x76aa('0xdf'),_0x50f9a4['label']));if(!this[_0x76aa('0x9d')](_0x50f9a4[_0x76aa('0x7d')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xe0'));}if(!this[_0x76aa('0x9d')](_0x50f9a4[_0x76aa('0x58')])){return this['channel'][_0x76aa('0xa1')](_0x76aa('0xa2'));}this['channel']['bot']=!![];this[_0x76aa('0x9e')](_0x50f9a4);this[_0x76aa('0x3e')](_0x50f9a4[_0x76aa('0x58')],'in','','');this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xe1'),_0x50f9a4[_0x76aa('0x58')]));var _0x3b6241=this[_0x76aa('0x72')][_0x76aa('0xbc')](this,_0x50f9a4);if(_0x3b6241){for(var _0x1cf023 in _0x3b6241){if(_0x3b6241[_0x76aa('0x8e')](_0x1cf023)){this['channel']['setVariable'](util[_0x76aa('0x27')](_0x76aa('0xe2'),_0x1cf023[_0x76aa('0xe3')]()),_0x3b6241[_0x1cf023]);}}this[_0x76aa('0x3e')](_0x3b6241['speech'],'out',_0x76aa('0xde'),'');return this[_0x76aa('0x34')][_0x76aa('0xa1')](util['format']('Dialogflow\x20Result\x20%s',_0x3b6241['speech']));}return this[_0x76aa('0x34')]['error'](_0x50f9a4,_0x76aa('0xe4'));};AGIVertices[_0x76aa('0xe')][_0x76aa('0xe5')]=function(_0x22f2cd){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0xe6'),_0x22f2cd[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x22f2cd[_0x76aa('0x75')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xe7'));}if(!this[_0x76aa('0x9d')](_0x22f2cd[_0x76aa('0x76')])){return this[_0x76aa('0x34')]['noop'](_0x76aa('0xe8'));}if(!this['isConfigured'](_0x22f2cd[_0x76aa('0xe9')])){return this['channel'][_0x76aa('0xa1')]('no\x20private_key\x20configured');}if(!this[_0x76aa('0x9d')](_0x22f2cd['dialogflowV2_language'])){return this['channel'][_0x76aa('0xa1')](_0x76aa('0xea'));}if(!this[_0x76aa('0x9d')](_0x22f2cd[_0x76aa('0x58')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')]('no\x20text\x20configured');}this[_0x76aa('0x34')][_0x76aa('0xeb')]=!![];this[_0x76aa('0x9e')](_0x22f2cd);this[_0x76aa('0x3e')](_0x22f2cd['text'],'in','','');this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xec'),_0x22f2cd[_0x76aa('0x58')]));var _0x106e9a=this[_0x76aa('0x74')][_0x76aa('0xbc')](this,_0x22f2cd);if(_0x106e9a){for(var _0x364dcf in _0x106e9a){if(_0x106e9a[_0x76aa('0x8e')](_0x364dcf)){if(_0x364dcf!==_0x76aa('0xed')){this[_0x76aa('0x34')]['setVariable'](util['format'](_0x76aa('0xe2'),_0x364dcf[_0x76aa('0xe3')]()),_0x106e9a[_0x364dcf]);}}}this[_0x76aa('0x3e')](_0x106e9a[_0x76aa('0xee')],_0x76aa('0xef'),_0x76aa('0xe5'),_0x106e9a[_0x76aa('0xed')]);return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xf0'),_0x106e9a['speech']));}return this[_0x76aa('0x34')]['error'](_0x22f2cd,_0x76aa('0xf1'));};AGIVertices[_0x76aa('0xe')][_0x76aa('0xf2')]=function(_0x14256c){logger[_0x76aa('0x2d')](util['format']('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x14256c[_0x76aa('0x36')]));if(!this['isConfigured'](_0x14256c[_0x76aa('0xf3')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xf4'));}if(!this[_0x76aa('0x9d')](_0x14256c['username'])){return this['channel'][_0x76aa('0xa1')](_0x76aa('0xf5'));}if(!this[_0x76aa('0x9d')](_0x14256c[_0x76aa('0xf6')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xf7'));}if(!this[_0x76aa('0x9d')](_0x14256c[_0x76aa('0xf8')])){return this[_0x76aa('0x34')]['noop'](_0x76aa('0xa2'));}this[_0x76aa('0x34')]['bot']=!![];this[_0x76aa('0x9e')](_0x14256c);this[_0x76aa('0x3e')](_0x14256c[_0x76aa('0x58')],'in','','');this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xf9'),_0x14256c['text']));var _0x3c2089=this[_0x76aa('0x78')][_0x76aa('0xbc')](this,_0x14256c);if(_0x3c2089){for(var _0x2f2a27 in _0x3c2089){if(_0x3c2089['hasOwnProperty'](_0x2f2a27)){this[_0x76aa('0x34')][_0x76aa('0x98')](util[_0x76aa('0x27')](_0x76aa('0xfa'),_0x2f2a27[_0x76aa('0xe3')]()),_0x3c2089[_0x2f2a27]);}}this[_0x76aa('0x3e')](_0x3c2089[_0x76aa('0xee')],_0x76aa('0xef'),_0x76aa('0xf2'),'');if(_0x3c2089[_0x76aa('0xfb')]){this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xfc'),_0x3c2089['audiofile']));var _0x52bea1=this[_0x76aa('0x34')][_0x76aa('0xfd')](_0x3c2089['audiofile']);try{fs[_0x76aa('0xfe')](_0x3c2089['audiofile']+_0x76aa('0xff'));}catch(_0x2e9c1a){logger[_0x76aa('0x29')](_0x2e9c1a);}return _0x52bea1;}else{return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x100'),_0x3c2089[_0x76aa('0xee')]));}}return this['channel'][_0x76aa('0x29')](_0x14256c,_0x76aa('0x101'));};AGIVertices['prototype']['end']=function(_0x19cf37){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x102'),_0x19cf37[_0x76aa('0x36')]));return this['channel'][_0x76aa('0xa1')]('end');};AGIVertices[_0x76aa('0xe')][_0x76aa('0x103')]=function(_0x33e5f0){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x104'),_0x33e5f0[_0x76aa('0x36')]));var _0x3ce540='';if(_0x33e5f0[_0x76aa('0x105')]){if(!this[_0x76aa('0x9d')](_0x33e5f0[_0x76aa('0x105')])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x33e5f0,'no\x20trunk\x20selected');}else{var _0x4236bb=parseInt(_0x33e5f0['trunk_id'],0xa);if(isNaN(_0x4236bb)){_0x3ce540=_0x33e5f0['trunk_id'];}else{_0x3ce540=this['getTrunk'][_0x76aa('0xbc')](this,_0x33e5f0['trunk_id']);if(!_0x3ce540){return this['channel']['error'](_0x33e5f0,'no\x20trunk\x20found');}}}}else if(_0x33e5f0[_0x76aa('0x106')]){_0x3ce540=_0x33e5f0[_0x76aa('0x106')];}else{return this['channel'][_0x76aa('0x29')](_0x33e5f0,_0x76aa('0x107'));}var _0x70ce1=this['channel']['exec']('DIAL',[util[_0x76aa('0x27')]('SIP/%s/%s',_0x3ce540,_0x33e5f0[_0x76aa('0x44')]),_0x33e5f0[_0x76aa('0x63')],_0x33e5f0['opts'],_0x33e5f0[_0x76aa('0x61')]]);if(_0x70ce1[_0x76aa('0x9b')]===-0x1){return _0x70ce1;}return this['channel'][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0xdc'),_0x76aa('0xdd')));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x108')]=function(_0x26c6c8){logger[_0x76aa('0x2d')](util['format'](_0x76aa('0x109'),_0x26c6c8[_0x76aa('0x36')]));return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x108'));};AGIVertices[_0x76aa('0xe')][_0x76aa('0xb')]=function(_0x3271a5){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x3271a5[_0x76aa('0x36')]));if(_0x3271a5[_0x76aa('0x10a')]===0x0){return this[_0x76aa('0x9f')](_0x3271a5);}_0x3271a5['retry']-=0x1;if(!this['isConfigured'](_0x3271a5['file_id'])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x3271a5,'no\x20file\x20audio\x20selected');}var _0x1fb2ad=this['getSound']['sync'](this,_0x3271a5[_0x76aa('0x10b')]);if(!_0x1fb2ad){return this[_0x76aa('0x34')]['error'](_0x3271a5,_0x76aa('0x10c'));}if(!this[_0x76aa('0x9d')](_0x3271a5[_0x76aa('0xd3')])){return this['channel'][_0x76aa('0x29')](_0x76aa('0xd2'));}var _0x44ed9a=this[_0x76aa('0x34')][_0x76aa('0x10d')](_0x1fb2ad,_0x3271a5[_0x76aa('0x10e')],_0x3271a5[_0x76aa('0x10f')]);var _0x29edc7=_0x44ed9a[_0x76aa('0x9b')]?_0x44ed9a[_0x76aa('0x9b')][_0x76aa('0x48')]():'';logger['info'](_0x76aa('0x110'),JSON[_0x76aa('0x6e')](_0x44ed9a));if(_0x44ed9a[_0x76aa('0x9b')]===-0x1){this['createSquareDetailsReport']['sync'](this,_0x3271a5,_0x29edc7);return _0x44ed9a;}else if(_0x44ed9a[_0x76aa('0x9a')]===_0x76aa('0x63')){_0x44ed9a[_0x76aa('0x9b')]=_0x29edc7['length']>=parseInt(_0x3271a5[_0x76aa('0x111')])?'x':'i';}else{_0x44ed9a[_0x76aa('0x9b')]=_0x29edc7[_0x76aa('0x97')]>=parseInt(_0x3271a5[_0x76aa('0x111')])&&_0x29edc7[_0x76aa('0x97')]<=parseInt(_0x3271a5[_0x76aa('0x10f')])?'x':'i';}var _0x353fef=this[_0x76aa('0xf')][_0x76aa('0xbc')](this,_0x3271a5[_0x76aa('0xd3')]);if(!_0x353fef){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x3271a5,_0x76aa('0xd4'));}this[_0x76aa('0x34')]['setVariable'](_0x353fef,_0x29edc7);if(this[_0x76aa('0x9d')](_0x3271a5['hiddendigitsnum'])){var _0xe9987d=parseInt(_0x3271a5['hiddendigitsnum'],0xa);var _0x452a57=rs[_0x76aa('0x112')]({'charset':'*','length':_0xe9987d});var _0x1420c4=_0x29edc7['length'];if(_0x1420c4>0x0){if(_0x1420c4>_0xe9987d){this[_0x76aa('0x9e')][_0x76aa('0xbc')](this,_0x3271a5,_0x3271a5[_0x76aa('0x113')]===_0x76aa('0x114')?_0x452a57+_0x29edc7[_0x76aa('0x115')](_0xe9987d):_0x29edc7[_0x76aa('0x115')](0x0,_0x1420c4-_0xe9987d)+_0x452a57);}else{this['createSquareDetailsReport']['sync'](this,_0x3271a5,rs[_0x76aa('0x112')]({'charset':'*','length':_0x1420c4}));}}else{this[_0x76aa('0x9e')][_0x76aa('0xbc')](this,_0x3271a5,'');}}else{this['createSquareDetailsReport']['sync'](this,_0x3271a5,_0x29edc7);}return _0x44ed9a;};AGIVertices[_0x76aa('0xe')][_0x76aa('0x116')]=function(_0x1fdbca){logger['info'](util['format'](_0x76aa('0x117'),_0x1fdbca[_0x76aa('0x36')]));return this[_0x76aa('0xb')](_0x1fdbca);};AGIVertices[_0x76aa('0xe')][_0x76aa('0x118')]=function(_0x2ebf47){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x2ebf47[_0x76aa('0x36')]));this[_0x76aa('0x9e')][_0x76aa('0xbc')](this,_0x2ebf47,_0x2ebf47['goalname']);return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')]('GOAL\x20%s',_0x2ebf47['goalname']));};AGIVertices[_0x76aa('0xe')]['awspolly']=function(_0x405c3a){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x119'),_0x405c3a['label']));if(!this['isConfigured'](_0x405c3a[_0x76aa('0x7f')])||!this[_0x76aa('0x9d')](_0x405c3a[_0x76aa('0x80')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x11a'));}if(!this['isConfigured'](_0x405c3a[_0x76aa('0x58')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')]('no\x20text\x20configured');}this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')]('Trying\x20aws\x20Polly\x20%s',_0x405c3a[_0x76aa('0x58')]));var _0x547766=this['awsPolly'][_0x76aa('0xbc')](this,_0x405c3a);if(_0x547766){this[_0x76aa('0x34')][_0x76aa('0xa1')](util['format'](_0x76aa('0x11b'),_0x547766));var _0x4b198e=this[_0x76aa('0x34')][_0x76aa('0xfd')](_0x547766);try{fs['unlink'](_0x547766+_0x76aa('0xff'));}catch(_0x4806d5){logger['error'](_0x4806d5);}return _0x4b198e;}return this['channel'][_0x76aa('0x29')](_0x405c3a,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x76aa('0xe')]['awslex']=function(_0x51d54c){logger[_0x76aa('0x2d')](util['format']('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x51d54c[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x51d54c[_0x76aa('0x7f')])||!this[_0x76aa('0x9d')](_0x51d54c[_0x76aa('0x80')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')]('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x51d54c[_0x76aa('0x86')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x11c'));}if(!this[_0x76aa('0x9d')](_0x51d54c[_0x76aa('0x58')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xa2'));}this['channel']['bot']=!![];this[_0x76aa('0x9e')](_0x51d54c);this[_0x76aa('0x3e')](_0x51d54c[_0x76aa('0x58')],'in','','');this[_0x76aa('0x34')]['noop'](util['format'](_0x76aa('0x11d'),_0x51d54c['text']));var _0x28c627=this[_0x76aa('0x84')]['sync'](this,_0x51d54c);if(_0x28c627){for(var _0x71483 in _0x28c627){if(_0x28c627[_0x76aa('0x8e')](_0x71483)&&_[_0x76aa('0x8f')](_0x28c627[_0x71483])){this[_0x76aa('0x34')][_0x76aa('0x98')](util['format'](_0x76aa('0x11e'),_0x71483[_0x76aa('0xe3')]()),_0x28c627[_0x71483]);}}if(_['isNil'](_0x28c627['message'])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x11f'));}else{this[_0x76aa('0x3e')](_0x28c627[_0x76aa('0x6f')],_0x76aa('0xef'),_0x76aa('0x120'),'');return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x121'),_0x28c627['message']));}}return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x51d54c,_0x76aa('0x122'));};AGIVertices[_0x76aa('0xe')]['googleasr']=function(_0x5392a3){logger['info'](util['format'](_0x76aa('0x123'),_0x5392a3[_0x76aa('0x36')],_0x5392a3[_0x76aa('0x63')]));if(!this[_0x76aa('0x9d')](_0x5392a3[_0x76aa('0x7d')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')]('no\x20key\x20configured');}var _0x4ab296=_0x76aa('0x124');var _0x499a12=util[_0x76aa('0x27')](_0x76aa('0x125'),FILES_PATH,rs[_0x76aa('0x112')](0x4));var _0x5e3622=util[_0x76aa('0x27')](_0x76aa('0x96'),_0x499a12,_0x4ab296);var _0x29e112=!![];if(_0x5392a3[_0x76aa('0x126')]==='NOBEEP'){_0x29e112=![];}var _0x220744=this[_0x76aa('0x34')][_0x76aa('0x127')](_0x499a12,_0x4ab296,_0x5392a3['intKey'],_0x5392a3[_0x76aa('0x63')],undefined,_0x29e112);if(_0x220744[_0x76aa('0x9b')]!==-0x1){this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x128'),_0x5e3622));var _0x158b65=this['googleASR']['sync'](this,_0x5392a3,_0x5e3622);if(_0x158b65){for(var _0x72b9a in _0x158b65){if(_0x158b65[_0x76aa('0x8e')](_0x72b9a)){this[_0x76aa('0x34')][_0x76aa('0x98')](util[_0x76aa('0x27')](_0x76aa('0x129'),_0x72b9a[_0x76aa('0xe3')]()),_0x158b65[_0x72b9a]);}}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x12a'),JSON[_0x76aa('0x6e')](_0x158b65)));}}return _0x220744;};AGIVertices[_0x76aa('0xe')][_0x76aa('0x12b')]=function(_0x1d5b00){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x12c'),_0x1d5b00[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x1d5b00[_0x76aa('0x12d')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x12e'));}if(!this[_0x76aa('0x9d')](_0x1d5b00[_0x76aa('0x8a')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')]('no\x20appsecret\x20configured');}var _0x4588c5=_0x76aa('0x124');var _0xd6cdd3=util[_0x76aa('0x27')]('%s/recordings/%s',FILES_PATH,rs[_0x76aa('0x112')](0x4));var _0x30dab8=util[_0x76aa('0x27')]('%s.%s',_0xd6cdd3,_0x4588c5);var _0x252d37=!![];if(_0x1d5b00[_0x76aa('0x126')]==='NOBEEP'){_0x252d37=![];}var _0x3a86cd=this['channel'][_0x76aa('0x127')](_0xd6cdd3,_0x4588c5,_0x1d5b00[_0x76aa('0x12f')],_0x1d5b00[_0x76aa('0x63')],undefined,_0x252d37);if(_0x3a86cd[_0x76aa('0x9b')]!==-0x1){this['channel'][_0x76aa('0xa1')](util['format'](_0x76aa('0x130'),_0x30dab8));var _0x5eb2b9=this[_0x76aa('0x89')]['sync'](this,_0x1d5b00,_0x30dab8);if(_0x5eb2b9){for(var _0x41df74 in _0x5eb2b9){if(_0x5eb2b9[_0x76aa('0x8e')](_0x41df74)){this[_0x76aa('0x34')][_0x76aa('0x98')](util[_0x76aa('0x27')](_0x76aa('0x131'),_0x41df74['toUpperCase']()),_0x5eb2b9[_0x41df74]);}}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x132'),JSON['stringify'](_0x5eb2b9)));}}return _0x3a86cd;};AGIVertices[_0x76aa('0xe')][_0x76aa('0x133')]=function(_0x506cad){logger['info'](util[_0x76aa('0x27')](_0x76aa('0x134'),_0x506cad[_0x76aa('0x36')]));return this[_0x76aa('0x34')]['continueAt'](_0x506cad['context'],_0x506cad[_0x76aa('0x135')],_0x506cad[_0x76aa('0x3b')]);};AGIVertices[_0x76aa('0xe')][_0x76aa('0x136')]=function(_0x4b05fa){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x137'),_0x4b05fa[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x4b05fa['condition'])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x4b05fa,_0x76aa('0x138'));}try{var _0x35a411=eval(_0x4b05fa[_0x76aa('0x139')])?_0x76aa('0x13a'):_0x76aa('0x13b');this[_0x76aa('0x34')]['noop'](util[_0x76aa('0x27')](_0x76aa('0x13c'),_0x4b05fa[_0x76aa('0x139')],_0x35a411));return{'code':0xc8,'result':_0x35a411};}catch(_0x1cd01e){return{'code':0xc8,'result':_0x76aa('0x13b')};}};AGIVertices['prototype'][_0x76aa('0x13d')]=function(_0x29f36c){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x13e'),_0x29f36c[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x29f36c[_0x76aa('0x13f')])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x29f36c,'no\x20interval\x20configured');}var _0x4d2c63=this['getIntervals'][_0x76aa('0xbc')](this,_0x29f36c[_0x76aa('0x13f')]);if(!_0x4d2c63){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x29f36c,_0x76aa('0x140'));}for(var _0x174700=0x0;_0x174700<_0x4d2c63['length'];_0x174700+=0x1){var _0x2feda=this[_0x76aa('0x34')]['getVariable'](util[_0x76aa('0x27')](_0x76aa('0x141'),_0x4d2c63[_0x174700]));if(_0x2feda['result']===-0x1){return _0x2feda;}logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x142'),_0x4d2c63[_0x174700],_0x2feda[_0x76aa('0x9a')]));if(_0x2feda[_0x76aa('0x9a')]==='true'){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x142'),_0x4d2c63[_0x174700],_0x76aa('0x13a')));this[_0x76aa('0x34')]['noop'](util[_0x76aa('0x27')](_0x76aa('0x142'),_0x4d2c63[_0x174700],_0x76aa('0x13a')));return{'code':0xc8,'result':'true'};}else{logger['info'](util[_0x76aa('0x27')](_0x76aa('0x142'),_0x4d2c63[_0x174700],_0x76aa('0x13b')));this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')]('IFTIME\x20%s\x20%s',_0x4d2c63[_0x174700],_0x76aa('0x13b')));}}return{'code':0xc8,'result':_0x76aa('0x13b')};};AGIVertices[_0x76aa('0xe')][_0x76aa('0x143')]=function(_0x4dff0f){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x4dff0f[_0x76aa('0x36')]));return this[_0x76aa('0x34')][_0x76aa('0x143')]();};AGIVertices[_0x76aa('0xe')]['ispeechasr']=function(_0x4d8b5e){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x144'),_0x4d8b5e[_0x76aa('0x36')]));if(!this['isConfigured'](_0x4d8b5e['key'])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xe0'));}var _0x102d0b=_0x76aa('0x124');var _0xe0216f=util[_0x76aa('0x27')](_0x76aa('0x125'),FILES_PATH,rs[_0x76aa('0x112')](0x4));var _0x15ec84=util[_0x76aa('0x27')](_0x76aa('0x96'),_0xe0216f,_0x102d0b);var _0x348b30=!![];if(_0x4d8b5e[_0x76aa('0x126')]===_0x76aa('0x145')){_0x348b30=![];}var _0x3e66b5=this['channel'][_0x76aa('0x127')](_0xe0216f,_0x102d0b,_0x4d8b5e[_0x76aa('0x12f')],_0x4d8b5e[_0x76aa('0x63')],undefined,_0x348b30);if(_0x3e66b5[_0x76aa('0x9b')]!==-0x1){this[_0x76aa('0x34')][_0x76aa('0xa1')](util['format'](_0x76aa('0x146'),_0x15ec84));var _0x585dc6=this['ispeechASR'][_0x76aa('0xbc')](this,_0x4d8b5e,_0x15ec84);if(_0x585dc6){for(var _0x5ee91d in _0x585dc6){if(_0x585dc6['hasOwnProperty'](_0x5ee91d)){this[_0x76aa('0x34')]['setVariable'](util[_0x76aa('0x27')]('ISPEECH_ASR_%s',_0x5ee91d[_0x76aa('0xe3')]()),_0x585dc6[_0x5ee91d]);}}return this[_0x76aa('0x34')]['noop'](util[_0x76aa('0x27')](_0x76aa('0x147'),JSON[_0x76aa('0x6e')](_0x585dc6)));}}return _0x3e66b5;};AGIVertices[_0x76aa('0xe')][_0x76aa('0x148')]=function(_0x15fbbe){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x149'),_0x15fbbe[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x15fbbe['key'])){return this[_0x76aa('0x34')]['noop'](_0x76aa('0xe0'));}if(!this['isConfigured'](_0x15fbbe[_0x76aa('0x58')])){return this['channel'][_0x76aa('0xa1')](_0x76aa('0xa2'));}this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')]('Trying\x20ispeech\x20TTS\x20%s',_0x15fbbe[_0x76aa('0x58')]));var _0x5262f0=this[_0x76aa('0x79')][_0x76aa('0xbc')](this,_0x15fbbe);if(_0x5262f0){this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x146'),_0x5262f0));var _0x2925bd=this['channel']['streamFile'](_0x5262f0,_0x15fbbe['intKey']);try{fs['unlink'](_0x5262f0+_0x76aa('0xff'));}catch(_0x3693ab){logger[_0x76aa('0x29')](_0x3693ab);}return _0x2925bd;}return this['channel'][_0x76aa('0x29')](_0x15fbbe,_0x76aa('0x14a'));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x14b')]=function(_0xa55da2){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0xa55da2[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0xa55da2['findBy'])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0xa55da2,_0x76aa('0x14c'));}logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x14d'),this[_0x76aa('0x34')]['callerid'],_0xa55da2[_0x76aa('0x14e')]));var _0x69ad17=this[_0x76aa('0x52')][_0x76aa('0xbc')](this,_0xa55da2[_0x76aa('0x14e')]);if(_0x69ad17){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x76aa('0x34')][_0x76aa('0x38')],_0xa55da2[_0x76aa('0x14e')]));this[_0x76aa('0x34')]['noop'](util[_0x76aa('0x27')](_0x76aa('0x14f'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0xa55da2[_0x76aa('0x14e')]));return{'code':0xc8,'result':_0x76aa('0x150')};}else{logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x76aa('0x34')][_0x76aa('0x38')],_0xa55da2[_0x76aa('0x14e')]));this['channel'][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x151'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0xa55da2[_0x76aa('0x14e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x76aa('0x152')]=function(_0x8490f9){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x8490f9['label']));if(!this[_0x76aa('0x9d')](_0x8490f9[_0x76aa('0x14e')])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x8490f9,_0x76aa('0x14c'));}logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x14d'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x8490f9[_0x76aa('0x14e')]));var _0x1ff5bd=this[_0x76aa('0x4f')][_0x76aa('0xbc')](this,_0x8490f9['findBy']);if(_0x1ff5bd){logger['info'](util[_0x76aa('0x27')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x76aa('0x34')]['callerid'],_0x8490f9[_0x76aa('0x14e')]));this['channel'][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x14f'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x8490f9['findBy']));return{'code':0xc8,'result':_0x76aa('0x150')};}else{logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x76aa('0x34')][_0x76aa('0x38')],_0x8490f9[_0x76aa('0x14e')]));this['channel'][_0x76aa('0xa1')](util['format'](_0x76aa('0x151'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x8490f9[_0x76aa('0x14e')]));return{'code':0xc8,'result':_0x76aa('0x153')};}};AGIVertices[_0x76aa('0xe')][_0x76aa('0x154')]=function(_0x6003d4){logger['info'](util[_0x76aa('0x27')](_0x76aa('0x155'),_0x6003d4['label']));if(!this['isConfigured'](_0x6003d4[_0x76aa('0x156')])){return this['channel'][_0x76aa('0x29')](_0x6003d4,_0x76aa('0x157'));}this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x158'),_0x6003d4[_0x76aa('0x156')]));var _0xa5c1c3=eval(_0x6003d4['operation']);if(!this[_0x76aa('0x9d')](_0x6003d4['variable_id'])){return this['channel'][_0x76aa('0xa1')](_0x76aa('0xd2'));}var _0x10f1ac=this['getVariable'][_0x76aa('0xbc')](this,_0x6003d4[_0x76aa('0xd3')]);if(!_0x10f1ac){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x6003d4,_0x76aa('0xd4'));}if(_[_0x76aa('0x94')](_0xa5c1c3)){var _0x4f36f6=this;_0xa5c1c3['forEach'](function(_0x5d61b0,_0x48fdfb){_0x4f36f6[_0x76aa('0x34')]['setVariable'](util[_0x76aa('0x27')]('%s[%s]',_0x10f1ac,_0x48fdfb),_0x5d61b0);});return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x159'),_0x10f1ac));}else{return this[_0x76aa('0x34')][_0x76aa('0x98')](_0x10f1ac,_0xa5c1c3);}};AGIVertices[_0x76aa('0xe')][_0x76aa('0xa')]=function(_0x513ec5){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x15a'),_0x513ec5[_0x76aa('0x36')]));if(_0x513ec5['retry']===0x0){return this[_0x76aa('0x9f')](_0x513ec5);}_0x513ec5[_0x76aa('0x10a')]-=0x1;if(!this[_0x76aa('0x9d')](_0x513ec5[_0x76aa('0x10b')])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x513ec5,_0x76aa('0x15b'));}var _0x18aaf1=this[_0x76aa('0x1d')][_0x76aa('0xbc')](this,_0x513ec5['file_id']);if(!_0x18aaf1){return this['channel'][_0x76aa('0x29')](_0x513ec5,_0x76aa('0x10c'));}var _0x15b286=this['channel'][_0x76aa('0x10d')](_0x18aaf1,_0x513ec5[_0x76aa('0x10e')],_0x513ec5['digit']);var _0x40b440=_0x15b286[_0x76aa('0x9b')];if(_0x15b286[_0x76aa('0x9b')]===-0x1){this[_0x76aa('0x9e')]['sync'](this,_0x513ec5,'-1');return _0x15b286;}else if(_0x15b286['extra']===_0x76aa('0x63')){_0x15b286[_0x76aa('0x9b')]=_0x15b286['result'][_0x76aa('0x97')]>0x0?_0x15b286[_0x76aa('0x9b')]:'t';}else if(_[_0x76aa('0x40')](_0x15b286[_0x76aa('0x9b')])){_0x15b286['result']='#';_0x40b440='#';}if(!this['isConfigured'](_0x513ec5[_0x76aa('0xd3')])){this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0xd2'));}else{var _0x83ccb3=this[_0x76aa('0xf')][_0x76aa('0xbc')](this,_0x513ec5['variable_id']);if(!_0x83ccb3){return this[_0x76aa('0x34')]['error'](_0x513ec5,_0x76aa('0xd4'));}this[_0x76aa('0x34')][_0x76aa('0x98')](_0x83ccb3,_0x40b440);}this[_0x76aa('0x9e')]['sync'](this,_0x513ec5,_0x40b440);return _0x15b286;};AGIVertices[_0x76aa('0xe')]['noop']=function(_0x590373){logger['info'](util['format']('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x590373['label']));return this[_0x76aa('0x34')]['noop'](_0x590373['output']||_0x590373[_0x76aa('0x36')]);};AGIVertices[_0x76aa('0xe')][_0x76aa('0x15c')]=function(_0x72c15a){logger['info'](util[_0x76aa('0x27')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x72c15a['label']));if(!this[_0x76aa('0x9d')](_0x72c15a['findBy'])){return this[_0x76aa('0x34')]['error'](_0x72c15a,'no\x20find\x20by\x20configured');}logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x14d'),this[_0x76aa('0x34')]['callerid'],_0x72c15a[_0x76aa('0x14e')]));var _0x53f673=this[_0x76aa('0x4a')]['sync'](this,_0x72c15a[_0x76aa('0x15d')]);var _0x3e353d=this[_0x76aa('0x4d')][_0x76aa('0xbc')](this,_0x72c15a[_0x76aa('0x14e')],_0x53f673);if(_0x3e353d){logger[_0x76aa('0x2d')](util['format'](_0x76aa('0x14f'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x72c15a['findBy']));this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x14f'),this[_0x76aa('0x34')]['callerid'],_0x72c15a[_0x76aa('0x14e')]));return{'code':0xc8,'result':_0x76aa('0x150')};}else{logger['info'](util[_0x76aa('0x27')](_0x76aa('0x151'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x72c15a['findBy']));this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x14f'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x72c15a['findBy']));return{'code':0xc8,'result':_0x76aa('0x153')};}};AGIVertices[_0x76aa('0xe')]['playback']=function(_0x1bebab){logger[_0x76aa('0x2d')](util['format'](_0x76aa('0x15e'),_0x1bebab['label']));if(!this[_0x76aa('0x9d')](_0x1bebab[_0x76aa('0x10b')])){return this['channel'][_0x76aa('0x29')](_0x1bebab,_0x76aa('0x15b'));}var _0x5c11db=this[_0x76aa('0x1d')][_0x76aa('0xbc')](this,_0x1bebab[_0x76aa('0x10b')]);if(!_0x5c11db){return this['channel']['error'](_0x1bebab,_0x76aa('0x10c'));}var _0x4f2f37=this[_0x76aa('0x34')]['exec']('PLAYBACK',[_0x5c11db,_0x1bebab['opts']]);if(_0x4f2f37[_0x76aa('0x9b')]===-0x1){return _0x4f2f37;}return this['channel'][_0x76aa('0xa1')](util['format'](_0x76aa('0xc1'),'PLAYBACK',_0x5c11db));};AGIVertices['prototype'][_0x76aa('0x15f')]=function(_0x544cc2){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x160'),_0x544cc2['label']));if(!this['isConfigured'](_0x544cc2[_0x76aa('0x161')])){return this[_0x76aa('0x34')]['error'](_0x544cc2,_0x76aa('0x162'));}var _0x55c9c2='';var _0x4857fb=parseInt(_0x544cc2[_0x76aa('0x161')],0xa);if(isNaN(_0x4857fb)){_0x55c9c2=_0x544cc2[_0x76aa('0x161')];}else{_0x55c9c2=this[_0x76aa('0x13')][_0x76aa('0xbc')](this,_0x544cc2[_0x76aa('0x161')]);if(!_0x55c9c2){return this['channel'][_0x76aa('0x29')](_0x544cc2,_0x76aa('0x163'));}}var _0x4a00fc='';if(this[_0x76aa('0x9d')](_0x544cc2[_0x76aa('0x10b')])){var _0x26fe2e=this[_0x76aa('0x1d')][_0x76aa('0xbc')](this,_0x544cc2[_0x76aa('0x10b')]);if(_0x26fe2e){_0x4a00fc=_0x26fe2e;}}this[_0x76aa('0x9e')][_0x76aa('0xbc')](this,_0x544cc2,_0x55c9c2);if(_0x544cc2['opts'][_0x76aa('0x164')]('x')<0x0){_0x544cc2[_0x76aa('0xdb')]+='x';}if(_0x544cc2[_0x76aa('0xdb')]['indexOf']('X')<0x0){_0x544cc2[_0x76aa('0xdb')]+='X';}this['channel']['setVariable'](_0x76aa('0x165'),_0x55c9c2?_0x55c9c2[_0x76aa('0x166')]():'');var _0x5c8984=this[_0x76aa('0x34')][_0x76aa('0x54')](_0x76aa('0x167'),[_0x55c9c2,_0x544cc2[_0x76aa('0xdb')],_0x544cc2[_0x76aa('0x61')],_0x4a00fc,_0x544cc2[_0x76aa('0x63')],_0x544cc2[_0x76aa('0x7')],_0x544cc2[_0x76aa('0x168')],_0x544cc2[_0x76aa('0x169')],'',_0x544cc2[_0x76aa('0x16a')]]);if(_0x5c8984[_0x76aa('0x9b')]===-0x1){return _0x5c8984;}return this[_0x76aa('0x34')]['noop'](util[_0x76aa('0x27')](_0x76aa('0xc1'),_0x76aa('0x167'),_0x55c9c2));};AGIVertices[_0x76aa('0xe')]['record']=function(_0x35d0af){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x16b'),_0x35d0af[_0x76aa('0x36')]));var _0x8f330=_0x35d0af[_0x76aa('0x16c')]||'wav';var _0x2a8966=util[_0x76aa('0x27')]('%s_%s',this['channel'][_0x76aa('0x35')],rs[_0x76aa('0x112')](0x5));var _0x1d823e=util[_0x76aa('0x27')](_0x76aa('0x16d'),FILES_PATH,_0x2a8966,_0x8f330);var _0x468264=util[_0x76aa('0x27')](_0x76aa('0x125'),FILES_PATH,_0x2a8966);this['createSquareRecording']['sync'](this,_0x35d0af,_0x2a8966,_0x1d823e);this[_0x76aa('0x34')][_0x76aa('0x98')]('RECORDING_SAVENAME',_0x2a8966);logger[_0x76aa('0x2d')](_0x76aa('0x16e'),_0x468264,_0x8f330,_0x35d0af[_0x76aa('0x16f')],_0x35d0af['timeout']);return this['channel'][_0x76aa('0x127')](_0x468264,_0x8f330,_0x35d0af[_0x76aa('0x16f')],_0x35d0af[_0x76aa('0x63')],undefined,!![]);};AGIVertices[_0x76aa('0xe')]['restapi']=function(_0x55baaa){logger['info'](util[_0x76aa('0x27')](_0x76aa('0x170'),_0x55baaa[_0x76aa('0x36')]));if(!this['isConfigured'](_0x55baaa['url'])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x171'));}var _0x415b6f=this['restAPI'][_0x76aa('0xbc')](this,_0x55baaa);logger[_0x76aa('0x2d')](util['format'](_0x76aa('0x172'),util[_0x76aa('0x173')](_0x415b6f,{'showHidden':![],'depth':null})));if(!this[_0x76aa('0x9d')](_0x55baaa[_0x76aa('0xd3')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x4d8ec6=this[_0x76aa('0xf')][_0x76aa('0xbc')](this,_0x55baaa[_0x76aa('0xd3')]);if(!_0x4d8ec6){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x55baaa,_0x76aa('0xd4'));}this[_0x76aa('0x34')][_0x76aa('0x98')](util[_0x76aa('0x27')](_0x76aa('0x174'),_0x4d8ec6),_0x415b6f[_0x76aa('0x175')]?_0x415b6f[_0x76aa('0x175')]:_0x76aa('0x176'));this['channel'][_0x76aa('0x98')](util[_0x76aa('0x27')](_0x76aa('0x177'),_0x4d8ec6),_0x415b6f[_0x76aa('0x178')]?_0x415b6f['statusMessage']:'OK');if(_0x415b6f[_0x76aa('0x6d')]){try{this[_0x76aa('0x95')](_0x415b6f['body'],_0x4d8ec6);}catch(_0x39393d){logger['error'](util['format'](_0x76aa('0x179'),_0x4d8ec6));}}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x17a'),_0x4d8ec6));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x17b')]=function(_0xb34891){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0xb34891[_0x76aa('0x36')]));return this[_0x76aa('0x34')][_0x76aa('0x17c')](_0xb34891[_0x76aa('0x17d')][_0x76aa('0x17e')](/\s+/g,''),_0xb34891[_0x76aa('0x16f')]);};AGIVertices[_0x76aa('0xe')][_0x76aa('0x17f')]=function(_0x503562){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x180'),_0x503562['label']));return this[_0x76aa('0x34')]['sayNumber'](_0x503562[_0x76aa('0x62')][_0x76aa('0x17e')](/\s+/g,''),_0x503562[_0x76aa('0x16f')]);};AGIVertices['prototype'][_0x76aa('0x181')]=function(_0x28a4c2){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x182'),_0x28a4c2['label']));return this[_0x76aa('0x34')][_0x76aa('0x183')](_0x28a4c2['text'],_0x28a4c2['escape_digits']);};AGIVertices[_0x76aa('0xe')][_0x76aa('0x184')]=function(_0x41e6e1){logger['info'](util[_0x76aa('0x27')](_0x76aa('0x185'),_0x41e6e1[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x41e6e1['account_id'])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x186'));}var _0x4b702b=this['getMailAccount'][_0x76aa('0xbc')](this,_0x41e6e1[_0x76aa('0x187')]);if(!_0x4b702b||!_0x4b702b[_0x76aa('0x188')]){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x41e6e1,_0x76aa('0x189'));}var _0x2684ce={'from':util['format'](_0x76aa('0x18a'),_0x4b702b[_0x76aa('0x16')],_0x4b702b[_0x76aa('0x18b')]||_0x4b702b[_0x76aa('0x188')][_0x76aa('0x18c')]),'to':_0x41e6e1['to']||'','cc':_0x41e6e1['cc']||'','bcc':_0x41e6e1[_0x76aa('0x18d')]||'','subject':_0x41e6e1[_0x76aa('0x18e')],'html':_0x41e6e1['text'],'text':_0x41e6e1['text']};if(this[_0x76aa('0x9d')](_0x41e6e1[_0x76aa('0x18f')])){}logger[_0x76aa('0xd7')](_0x76aa('0x190'),JSON[_0x76aa('0x6e')](_0x2684ce));this['createSquareDetailsReport'][_0x76aa('0xbc')](this,_0x41e6e1,_0x41e6e1[_0x76aa('0x187')]);this[_0x76aa('0x34')][_0x76aa('0xa1')](util['format'](_0x76aa('0x191'),_0x4b702b[_0x76aa('0x16')]));this['sendMailMessage']['sync'](this,_0x4b702b[_0x76aa('0x192')],_0x2684ce);return this[_0x76aa('0x34')]['noop'](_0x76aa('0x193'));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x194')]=function(_0x4e7643){logger['info'](util[_0x76aa('0x27')](_0x76aa('0x195'),_0x4e7643[_0x76aa('0x36')]));return this['channel'][_0x76aa('0xa1')](_0x76aa('0x196'));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x197')]=function(_0x143a95){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x198'),_0x143a95['label']));if(!this['isConfigured'](_0x143a95[_0x76aa('0x199')])){return this[_0x76aa('0x34')]['noop'](_0x76aa('0x19a'));}var _0x4bb772=this[_0x76aa('0x32')][_0x76aa('0xbc')](this,_0x143a95[_0x76aa('0x199')]);if(!_0x4bb772){return this[_0x76aa('0x34')]['error'](_0x143a95,_0x76aa('0x19b'));}var _0x626db5={'body':_0x143a95[_0x76aa('0x19c')],'phone':_0x143a95['to']||'','SmsAccountId':_0x4bb772['id']};logger[_0x76aa('0xd7')](_0x76aa('0x19d'),JSON[_0x76aa('0x6e')](_0x626db5));this[_0x76aa('0x9e')]['sync'](this,_0x143a95,_0x143a95[_0x76aa('0x199')]);this[_0x76aa('0x34')]['noop'](util[_0x76aa('0x27')](_0x76aa('0x19e'),_0x4bb772[_0x76aa('0x16')]));this[_0x76aa('0x33')][_0x76aa('0xbc')](this,_0x626db5);return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x19f'));};AGIVertices['prototype'][_0x76aa('0x1a0')]=function(_0x3d2607){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x1a1'),_0x3d2607[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x3d2607[_0x76aa('0xd3')])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x3d2607,'no\x20variable\x20selected');}var _0x573787=this[_0x76aa('0xf')][_0x76aa('0xbc')](this,_0x3d2607['variable_id']);if(!_0x573787){return this[_0x76aa('0x34')]['error'](_0x3d2607,'no\x20variable\x20found');}return this[_0x76aa('0x34')][_0x76aa('0x98')](_0x573787,_0x3d2607[_0x76aa('0x1a2')]);};AGIVertices[_0x76aa('0xe')][_0x76aa('0x1a3')]=function(_0x3a1c1c){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x1a4'),_0x3a1c1c[_0x76aa('0x36')]));this[_0x76aa('0x34')]['noop']('START\x20CALLY\x20SQUARE');var _0x44242d=this['channel'][_0x76aa('0xf')](_0x76aa('0x1a5'));if(!_[_0x76aa('0x40')](_0x44242d[_0x76aa('0x9a')])){this[_0x76aa('0x34')][_0x76aa('0x35')]=_0x44242d[_0x76aa('0x9a')];}if(_0x3a1c1c['answer']===_0x76aa('0x1a6')){this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x1a7'));return this[_0x76aa('0x34')][_0x76aa('0xb4')]();}return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x1a8'));};AGIVertices[_0x76aa('0xe')]['subproject']=function(_0x225cdb){logger[_0x76aa('0x2d')](util['format']('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x225cdb[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x225cdb[_0x76aa('0x1a9')])){return this[_0x76aa('0x34')]['error'](_0x225cdb,'no\x20subproject\x20selected');}var _0x2b434f=this[_0x76aa('0x14')][_0x76aa('0xbc')](this,_0x225cdb[_0x76aa('0x1a9')]);if(!this[_0x76aa('0x9d')](_0x2b434f)){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x225cdb,util['format']('no\x20subproject\x20found\x20with\x20id\x20%d',_0x225cdb[_0x76aa('0x1a9')]));}if(_0x2b434f===this[_0x76aa('0x34')][_0x76aa('0x1aa')]){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x225cdb,_0x76aa('0x1ab'));}this[_0x76aa('0x9e')][_0x76aa('0xbc')](this,_0x225cdb,_0x2b434f);var _0x383c26=this[_0x76aa('0x34')][_0x76aa('0x54')](_0x76aa('0x1ac'),util['format'](_0x76aa('0x1ad'),config[_0x76aa('0x7')][_0x76aa('0x1ae')]||_0x76aa('0x1af'),_0x2b434f,this['channel']['arg_1']));if(_0x383c26[_0x76aa('0x9b')]===-0x1){return _0x383c26;}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util['format']('Executed\x20command\x20%s\x20%s',_0x76aa('0x1ac'),_0x2b434f));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x1b0')]=function(_0x1e2c28){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')]('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x1e2c28['label']));var _0x1ca1b0=this[_0x76aa('0x53')][_0x76aa('0xbc')](this,_0x1e2c28[_0x76aa('0xb2')]);this[_0x76aa('0x9e')][_0x76aa('0xbc')](this,_0x1e2c28,_0x1e2c28['command']);if(this[_0x76aa('0x9d')](_0x1e2c28['variable_id'])){var _0x3c4e7e=this['getVariable']['sync'](this,_0x1e2c28[_0x76aa('0xd3')]);if(_0x3c4e7e){this['channel'][_0x76aa('0x98')](_0x3c4e7e,_0x1ca1b0);return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x1e2c28[_0x76aa('0xb2')],_0x3c4e7e));}}return this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x1b1'),_0x1e2c28[_0x76aa('0xb2')]));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x1b2')]=function(_0x3cc82a){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x1b3'),_0x3cc82a['label']));_0x3cc82a[_0x76aa('0x58')]=_0x3cc82a['text'][_0x76aa('0x17e')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x76aa('0x9d')](_0x3cc82a[_0x76aa('0x57')])){return this[_0x76aa('0x34')][_0x76aa('0xa1')](_0x76aa('0x1b4'));}if(!this[_0x76aa('0x9d')](_0x3cc82a[_0x76aa('0x58')])){return this['channel'][_0x76aa('0xa1')](_0x76aa('0xa2'));}this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x1b5'),_0x3cc82a['text']));var _0x95270d=this[_0x76aa('0x56')]['sync'](this,_0x3cc82a);if(_0x95270d){this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x95270d));var _0xb4d1bb=this['channel']['streamFile'](_0x95270d);try{fs[_0x76aa('0xfe')](_0x95270d+_0x76aa('0xff'));}catch(_0x4950f3){logger[_0x76aa('0x29')](_0x4950f3);}return _0xb4d1bb;}return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x3cc82a,_0x76aa('0x1b6'));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x1b7')]=function(_0x38d9d8){logger[_0x76aa('0x2d')](util['format'](_0x76aa('0x1b8'),_0x38d9d8[_0x76aa('0x36')]));_0x38d9d8[_0x76aa('0x58')]=_0x38d9d8[_0x76aa('0x58')][_0x76aa('0x17e')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x76aa('0x9d')](_0x38d9d8['text'])){return this['channel'][_0x76aa('0xa1')](_0x76aa('0xa2'));}this['channel'][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x1b9'),_0x38d9d8[_0x76aa('0x58')]));var _0x32c93a=this[_0x76aa('0x5e')][_0x76aa('0xbc')](this,_0x38d9d8);if(_0x32c93a){this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')]('Google\x20TTS\x20%s\x20file\x20created',_0x32c93a));var _0x3225bc=this[_0x76aa('0x34')][_0x76aa('0xfd')](_0x32c93a);try{fs['unlink'](_0x32c93a+_0x76aa('0xff'));}catch(_0x4a7914){logger[_0x76aa('0x29')](_0x4a7914);}return _0x3225bc;}return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x38d9d8,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x76aa('0xe')]['unpause']=function(_0x5dbe55){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x1ba'),_0x5dbe55[_0x76aa('0x36')]));if(!this[_0x76aa('0x9d')](_0x5dbe55['findBy'])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x5dbe55,'no\x20find\x20by\x20configured');}logger[_0x76aa('0x2d')](util['format'](_0x76aa('0x14d'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x5dbe55[_0x76aa('0x14e')]));var _0x3c4df7=this[_0x76aa('0x4e')][_0x76aa('0xbc')](this,_0x5dbe55[_0x76aa('0x14e')]);if(_0x3c4df7){logger['info'](util[_0x76aa('0x27')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x76aa('0x34')]['callerid'],_0x5dbe55['findBy']));this['channel']['noop'](util[_0x76aa('0x27')](_0x76aa('0x14f'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x5dbe55[_0x76aa('0x14e')]));return{'code':0xc8,'result':_0x76aa('0x150')};}else{logger['info'](util['format'](_0x76aa('0x151'),this[_0x76aa('0x34')]['callerid'],_0x5dbe55[_0x76aa('0x14e')]));this[_0x76aa('0x34')][_0x76aa('0xa1')](util[_0x76aa('0x27')](_0x76aa('0x151'),this[_0x76aa('0x34')][_0x76aa('0x38')],_0x5dbe55[_0x76aa('0x14e')]));return{'code':0xc8,'result':_0x76aa('0x153')};}};AGIVertices[_0x76aa('0xe')][_0x76aa('0x1bb')]=function(_0x383bb3){logger['info'](util[_0x76aa('0x27')](_0x76aa('0x1bc'),_0x383bb3[_0x76aa('0x36')]));var _0x436e5b=this['channel'][_0x76aa('0x54')](_0x76aa('0x1bd'),[_0x383bb3[_0x76aa('0x1be')],_0x383bb3[_0x76aa('0x71')]]);if(_0x436e5b[_0x76aa('0x9b')]===-0x1){return _0x436e5b;}return this['channel'][_0x76aa('0xa1')](util['format']('Executed\x20command\x20%s\x20%s','VOICEMAIL',_0x383bb3[_0x76aa('0x1be')]));};AGIVertices[_0x76aa('0xe')][_0x76aa('0x1bf')]=function(_0x3266cf){logger[_0x76aa('0x2d')](util[_0x76aa('0x27')](_0x76aa('0x1c0'),_0x3266cf[_0x76aa('0x36')]));if(!this['isConfigured'](_0x3266cf[_0x76aa('0xd3')])){return this[_0x76aa('0x34')][_0x76aa('0x29')](_0x3266cf,_0x76aa('0x1c1'));}var _0x55510f=this['getVariable']['sync'](this,_0x3266cf[_0x76aa('0xd3')]);if(!_0x55510f){return this[_0x76aa('0x34')]['error'](_0x3266cf,_0x76aa('0xd4'));}var _0x749cba=this[_0x76aa('0x34')][_0x76aa('0xf')](_0x55510f);return{'code':0xc8,'result':_0x749cba[_0x76aa('0x9a')]?_0x749cba['extra']:'-'};};String['prototype'][_0x76aa('0x1c2')]=function(_0x42dba3,_0x40bc23){return this[_0x76aa('0x99')](_0x42dba3)[_0x76aa('0x1c3')](_0x40bc23);};module['exports']=AGIVertices;
\ No newline at end of file
+var _0x0fda=['arg_1','createSquareRecording','callerid','calleridname','extension','priority','accountcode','createSquareMessage','createCmContact','isNil','callback_','random','isEmpty','lastName','scheduledAt','callback','toString','getPause','getPauseById','agentPause','agentUnpause','agent','agentLogout','internal','LOCAL','agentLogin','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','MALE','audioEncoding','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','POST','PUT','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','model','awsPolly','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_access_key_id','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','hasOwnProperty','isString','replaceObjectAllVariables','recursiveNodeIndex','length','saveRestApiResult','isPlainObject','%s.%s','isArray','setVariable','replaceAllVariables','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','maxRetry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','MRCPSynth','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','add','delay','minutes','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','Executed\x20command\x20MRCPSynth\x20%s','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','no\x20odbc\x20database\x20found','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','%s[%s][%s]','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','no\x20text\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','toUpperCase','speech','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','private_key','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','out','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','username','no\x20username\x20configured','password','ndassistant_url','Trying\x20SestekNDA:\x20%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','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','getData','response','maxdigit','test','mindigit','no\x20variable\x20found','hiddendigitsnum','generate','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','NOBEEP','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','no\x20condition\x20configured','condition','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','no\x20find\x20by\x20configured','math','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','math\x20%s','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20found','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','getSound','indexOf','QUEUE','gosub','Enter\x20in\x20RECORD\x20(%s)\x20block','%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','Response:','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','template_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','getSmsAccount','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','XMCS-UNIQUEID','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','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','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','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','util','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','./scripts','rawBody','menu','getdigits','getsecretdigits','channel','rpc','prototype','getVariable','getVariableById','then','name','getVoiceQueue','getVoiceQueueById','catch','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getSoundPath','getMailAccount','getMailAccountById','getIntervals','getIntervalById','IntervalId','map','format','getQueryOdbc','open','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand'];(function(_0x45bc76,_0x22a744){var _0x22eae3=function(_0x156a6d){while(--_0x156a6d){_0x45bc76['push'](_0x45bc76['shift']());}};_0x22eae3(++_0x22a744);}(_0x0fda,0x1a0));var _0xa0fd=function(_0x127495,_0x124924){_0x127495=_0x127495-0x0;var _0x224caa=_0x0fda[_0x127495];return _0x224caa;};'use strict';var fs=require('fs');var util=require(_0xa0fd('0x0'));var _=require('lodash');var sh=require(_0xa0fd('0x1'));var odbc=require(_0xa0fd('0x2'))();var rs=require(_0xa0fd('0x3'));var moment=require(_0xa0fd('0x4'));var Mustache=require(_0xa0fd('0x5'));var rp=require(_0xa0fd('0x6'));var logger=require(_0xa0fd('0x7'))('agi');var config=require('../../config/environment');var scripts=require(_0xa0fd('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=['rawHeaders',_0xa0fd('0x9')];var verticesWithRetry=[_0xa0fd('0xa'),_0xa0fd('0xb'),_0xa0fd('0xc')];var AGIVertices=function(_0x5d996b,_0x29da4c,_0xe93771){this[_0xa0fd('0xd')]=_0x5d996b;this[_0xa0fd('0xe')]=_0x29da4c;this['mailRpc']=_0xe93771;};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x10')]=function(_0x36634c,_0x5c1786){this[_0xa0fd('0xe')][_0xa0fd('0x11')](_0x36634c)[_0xa0fd('0x12')](function(_0x2af372){_0x5c1786(null,_0x2af372?_0x2af372[_0xa0fd('0x13')]:![]);})['catch'](function(_0x490112){_0x5c1786(_0x490112);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x14')]=function(_0x5a7274,_0x21acc2){this[_0xa0fd('0xe')][_0xa0fd('0x15')](_0x5a7274)[_0xa0fd('0x12')](function(_0x2b0993){_0x21acc2(null,_0x2b0993?_0x2b0993[_0xa0fd('0x13')]:![]);})[_0xa0fd('0x16')](function(_0x4fe62c){_0x21acc2(_0x4fe62c);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x17')]=function(_0x5605ae,_0x50aa6d){this[_0xa0fd('0xe')][_0xa0fd('0x18')](_0x5605ae)['then'](function(_0x2b8d15){_0x50aa6d(null,_0x2b8d15?_0x2b8d15[_0xa0fd('0x13')]:![]);})[_0xa0fd('0x16')](function(_0x5073a8){_0x50aa6d(_0x5073a8);});};AGIVertices['prototype'][_0xa0fd('0x19')]=function(_0x558109,_0x40e288){this[_0xa0fd('0xe')][_0xa0fd('0x1a')](_0x558109)[_0xa0fd('0x12')](function(_0x263591){_0x40e288(null,_0x263591?_0x263591[_0xa0fd('0x1b')]:![]);})[_0xa0fd('0x16')](function(_0x515b0d){_0x40e288(_0x515b0d);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x1c')]=function(_0x701d7,_0x18eaa8){this[_0xa0fd('0xe')][_0xa0fd('0x1d')](_0x701d7)[_0xa0fd('0x12')](function(_0x411205){_0x18eaa8(null,_0x411205?_0x411205[_0xa0fd('0x13')]:![]);})[_0xa0fd('0x16')](function(_0x28dbda){_0x18eaa8(_0x28dbda);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x1e')]=function(_0x54cacc,_0x37177b){this[_0xa0fd('0xe')]['getTrunkById'](_0x54cacc)[_0xa0fd('0x12')](function(_0x3cd5b0){_0x37177b(null,_0x3cd5b0?_0x3cd5b0['name']:![]);})['catch'](function(_0x2e9b0d){_0x37177b(_0x2e9b0d);});};AGIVertices[_0xa0fd('0xf')]['getSound']=function(_0x5c70fb,_0x5b50c0){var _0x58b786=this;this[_0xa0fd('0xe')]['getSoundById'](_0x5c70fb)[_0xa0fd('0x12')](function(_0x1db300){_0x5b50c0(null,_0x1db300?_0x58b786[_0xa0fd('0x1f')](_0x1db300['save_name']):![]);})[_0xa0fd('0x16')](function(_0x19c352){_0x5b50c0(_0x19c352);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x20')]=function(_0x26e39c,_0x58ddb3){this[_0xa0fd('0xe')][_0xa0fd('0x21')](_0x26e39c)[_0xa0fd('0x12')](function(_0x2993aa){_0x58ddb3(null,_0x2993aa?_0x2993aa:![]);})['catch'](function(_0x33785f){_0x58ddb3(_0x33785f);});};AGIVertices[_0xa0fd('0xf')]['sendMailMessage']=function(_0x4fddf9,_0x581071,_0x1fc249){this['mailRpc']['sendMailMessage'](_0x4fddf9,_0x581071)[_0xa0fd('0x12')](function(){_0x1fc249(null);})['catch'](function(_0xbaa5d2){_0x1fc249(_0xbaa5d2);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x22')]=function(_0x2081dc,_0x1f6e72){this[_0xa0fd('0xe')][_0xa0fd('0x23')](_0x2081dc)[_0xa0fd('0x12')](function(_0x4ce77f){if(_0x4ce77f){if(_0x4ce77f[_0xa0fd('0x24')]){_0x1f6e72(null,[_0x4ce77f['interval']]);}else{_0x1f6e72(null,_[_0xa0fd('0x25')](_0x4ce77f['Intervals'],'interval'));}}else{_0x1f6e72(null,![]);}})[_0xa0fd('0x16')](function(_0x4bcec1){_0x1f6e72(_0x4bcec1);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x1f')]=function(_0x431d31){return util[_0xa0fd('0x26')]('%s/sounds/converted/%s',FILES_PATH,_0x431d31);};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x27')]=function(_0x3b06ef,_0x3f6146,_0x2e3cfa){odbc[_0xa0fd('0x28')](_0x3b06ef,function(_0x41feca){if(_0x41feca){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x41feca);_0x2e3cfa(_0x41feca);}else{logger[_0xa0fd('0x29')](_0xa0fd('0x2a'));odbc[_0xa0fd('0x2b')](_0x3f6146,function(_0x155f5,_0x5e1a77){if(_0x155f5){logger[_0xa0fd('0x29')](_0xa0fd('0x2c'),_0x3f6146);_0x2e3cfa(_0x155f5);}else{logger[_0xa0fd('0x29')](_0xa0fd('0x2d'),_0x3f6146);odbc[_0xa0fd('0x2e')](function(_0x5d5fdd){if(_0x5d5fdd){logger[_0xa0fd('0x2f')](_0xa0fd('0x30'),_0x5d5fdd);}_0x2e3cfa(null,_0x5e1a77);});}});}});};AGIVertices['prototype']['getSmsAccount']=function(_0x27082a,_0x163023){this[_0xa0fd('0xe')][_0xa0fd('0x31')](_0x27082a)[_0xa0fd('0x12')](function(_0xbeca16){_0x163023(null,_0xbeca16?_0xbeca16:![]);})[_0xa0fd('0x16')](function(_0xc147b5){_0x163023(_0xc147b5);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x32')]=function(_0x12d66a,_0x1c9bba){this[_0xa0fd('0xe')][_0xa0fd('0x32')](_0x12d66a)[_0xa0fd('0x12')](function(_0x515449){_0x1c9bba(null,_0x515449);})['catch'](function(_0x4dd042){_0x1c9bba(_0x4dd042);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x33')]=function(_0x399eb1,_0x54fb8c,_0x428255){this[_0xa0fd('0xe')][_0xa0fd('0x33')]({'uniqueid':this['channel'][_0xa0fd('0x34')],'node':_0x399eb1[_0xa0fd('0x35')],'application':_0x399eb1[_0xa0fd('0x36')],'data':_0x54fb8c||null,'project_name':this[_0xa0fd('0xd')][_0xa0fd('0x37')],'callerid':this[_0xa0fd('0xd')]['callerid']})[_0xa0fd('0x12')](function(_0x2b58a0){if(_0x428255){_0x428255(null,_0x2b58a0);}})[_0xa0fd('0x16')](function(_0x2498da){if(_0x428255){_0x428255(_0x2498da);}});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x38')]=function(_0x56cfca,_0x2ccdf7,_0x781be5,_0xf1c674){this[_0xa0fd('0xe')][_0xa0fd('0x38')]({'uniqueid':this['channel']['uniqueid'],'callerid':this[_0xa0fd('0xd')][_0xa0fd('0x39')],'calleridname':this[_0xa0fd('0xd')][_0xa0fd('0x3a')],'context':this[_0xa0fd('0xd')]['context'],'extension':this[_0xa0fd('0xd')][_0xa0fd('0x3b')],'priority':this[_0xa0fd('0xd')][_0xa0fd('0x3c')],'accountcode':this[_0xa0fd('0xd')][_0xa0fd('0x3d')],'dnid':this['channel']['dnid'],'projectName':this['channel'][_0xa0fd('0x37')],'saveName':_0x2ccdf7,'filename':_0x56cfca['file']||_0x2ccdf7,'savePath':_0x781be5})['then'](function(_0xcf725e){_0xf1c674(null,_0xcf725e);})['catch'](function(_0x357324){_0xf1c674(_0x357324);});};AGIVertices[_0xa0fd('0xf')]['createSquareMessage']=function(_0x4abff8,_0x213e67,_0x38a66b,_0x42376a,_0x167503){this[_0xa0fd('0xe')][_0xa0fd('0x3e')]({'uniqueid':this['channel']['uniqueid'],'body':_0x4abff8,'direction':_0x213e67,'providerName':_0x38a66b,'providerResponse':_0x42376a})['then'](function(_0x59742b){if(_0x167503){_0x167503(null,_0x59742b);}})[_0xa0fd('0x16')](function(_0x43fc4a){if(_0x167503){_0x167503(_0x43fc4a);}});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x3f')]=function(_0x32d251,_0x53c1a2){this['rpc']['createCmContact']({'firstName':_['isEmpty'](_0x32d251['name'])||_[_0xa0fd('0x40')](_0x32d251[_0xa0fd('0x13')])?_0xa0fd('0x41')+Math[_0xa0fd('0x42')]():_0x32d251[_0xa0fd('0x13')],'lastName':_[_0xa0fd('0x43')](_0x32d251[_0xa0fd('0x44')])||_[_0xa0fd('0x40')](_0x32d251[_0xa0fd('0x44')])?null:_0x32d251[_0xa0fd('0x44')],'phone':_0x32d251['phone'],'ListId':_0x32d251['list_id'],'scheduledat':_0x32d251[_0xa0fd('0x45')],'callbackUniqueid':this[_0xa0fd('0xd')][_0xa0fd('0x34')],'tags':_0xa0fd('0x46'),'description':'Callback\x20scheduled\x20at\x20'+_0x32d251[_0xa0fd('0x45')][_0xa0fd('0x47')](),'priority':_0x32d251['callback_priority']})[_0xa0fd('0x12')](function(_0x4a662a){_0x53c1a2(null,_0x4a662a);})[_0xa0fd('0x16')](function(_0x39578a){_0x53c1a2(_0x39578a);});};AGIVertices['prototype'][_0xa0fd('0x48')]=function(_0x2d658e,_0x10d3c3){this[_0xa0fd('0xe')][_0xa0fd('0x49')](_0x2d658e)[_0xa0fd('0x12')](function(_0x47675b){_0x10d3c3(null,_0x47675b?_0x47675b[_0xa0fd('0x13')]:![]);})['catch'](function(_0x201fd5){_0x10d3c3(_0x201fd5);});};AGIVertices['prototype'][_0xa0fd('0x4a')]=function(_0x4205ac,_0x2e3344,_0x1483d5){var _0xa37ca9={'role':'agent'};_0xa37ca9[_0x4205ac]=this[_0xa0fd('0xd')][_0xa0fd('0x39')];this['rpc'][_0xa0fd('0x4a')](_0xa37ca9,_0x2e3344,this[_0xa0fd('0xd')][_0xa0fd('0x34')])['then'](function(_0x44083d){_0x1483d5(null,_['isNil'](_0x44083d)?![]:!![]);})[_0xa0fd('0x16')](function(_0x5e720f){logger[_0xa0fd('0x2f')](_0x5e720f);_0x1483d5(null,![]);});};AGIVertices['prototype'][_0xa0fd('0x4b')]=function(_0x62c3e7,_0x3f9d1e){var _0x981780={'role':_0xa0fd('0x4c')};_0x981780[_0x62c3e7]=this[_0xa0fd('0xd')][_0xa0fd('0x39')];this['rpc'][_0xa0fd('0x4b')](_0x981780)[_0xa0fd('0x12')](function(_0x221c5b){_0x3f9d1e(null,_[_0xa0fd('0x40')](_0x221c5b)?![]:!![]);})[_0xa0fd('0x16')](function(_0x587adf){logger['error'](_0x587adf);_0x3f9d1e(null,![]);});};AGIVertices['prototype'][_0xa0fd('0x4d')]=function(_0x5e3b77,_0x420d66){var _0x589433={'role':_0xa0fd('0x4c')};_0x589433[_0x5e3b77]=this[_0xa0fd('0xd')][_0xa0fd('0x39')];this[_0xa0fd('0xe')][_0xa0fd('0x4d')](_0x589433)[_0xa0fd('0x12')](function(_0x471a34){_0x420d66(null,_[_0xa0fd('0x40')](_0x471a34)?![]:!![]);})[_0xa0fd('0x16')](function(_0x39b8e8){logger[_0xa0fd('0x2f')](_0x39b8e8);_0x420d66(null,![]);});};AGIVertices[_0xa0fd('0xf')]['agentLogin']=function(_0x5366d0,_0x385b00){var _0x1169a0={'role':_0xa0fd('0x4c')};_0x1169a0[_0x5366d0]=this[_0xa0fd('0xd')][_0xa0fd('0x39')];var _0x40186a=_0x5366d0!=_0xa0fd('0x4e')?util[_0xa0fd('0x26')]('%s/%s@from-sip/n',_0xa0fd('0x4f'),this[_0xa0fd('0xd')][_0xa0fd('0x39')]):undefined;this[_0xa0fd('0xe')][_0xa0fd('0x50')](_0x1169a0,_0x40186a)[_0xa0fd('0x12')](function(_0x45f7df){_0x385b00(null,_[_0xa0fd('0x40')](_0x45f7df)?![]:!![]);})[_0xa0fd('0x16')](function(_0x1bc5db){logger[_0xa0fd('0x2f')](_0x1bc5db);_0x385b00(null,![]);});};AGIVertices[_0xa0fd('0xf')]['shellCommand']=function(_0x436f4f,_0x3cd5a5){sh[_0xa0fd('0x51')](_[_0xa0fd('0x52')](_0x436f4f),function(_0x4147b4,_0x1c73ca){var _0x2d70a7=_0x1c73ca[_0xa0fd('0x53')](/(\r\n|\n|\r)/gm,'');_0x3cd5a5(null,_0x2d70a7);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x54')]=function(_0x4d97eb,_0x174f31){scripts[_0xa0fd('0x54')](_0x4d97eb[_0xa0fd('0x55')],_0x4d97eb[_0xa0fd('0x56')]||_0xa0fd('0x57'),_0x4d97eb[_0xa0fd('0x57')],_0x4d97eb[_0xa0fd('0x58')]||_0xa0fd('0x59'),_0x4d97eb['ssmlGender']||_0xa0fd('0x5a'),_0x4d97eb[_0xa0fd('0x5b')]||'MP3')[_0xa0fd('0x12')](function(_0x1b9799){_0x174f31(null,_0x1b9799);})[_0xa0fd('0x16')](function(_0x62efea){_0x174f31(_0x62efea);});};AGIVertices[_0xa0fd('0xf')]['googleTTS']=function(_0xb6fed,_0x306ca1){scripts[_0xa0fd('0x5c')](_0xb6fed[_0xa0fd('0x57')],_0xb6fed[_0xa0fd('0x5d')]||'en',0x1)[_0xa0fd('0x12')](function(_0x34ae5a){_0x306ca1(null,_0x34ae5a);})[_0xa0fd('0x16')](function(_0xaaeabf){_0x306ca1(_0xaaeabf);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x5e')]=function(_0x245012,_0x36452c){var _0x7d5b1d={'uri':_0x245012[_0xa0fd('0x5f')],'method':_0x245012[_0xa0fd('0x60')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x245012[_0xa0fd('0x61')])===_0xa0fd('0x62')&&parseInt(_0x245012[_0xa0fd('0x61')])>=0x1?parseInt(_0x245012['timeout'])*0x3e8:0x5*0x3e8};if(_[_0xa0fd('0x63')]([_0xa0fd('0x64'),_0xa0fd('0x65')],_0x7d5b1d[_0xa0fd('0x60')]['toUpperCase']())){try{_0x7d5b1d[_0xa0fd('0x66')]=_0x245012[_0xa0fd('0x9')]?JSON[_0xa0fd('0x67')](_0x245012[_0xa0fd('0x9')]):{};}catch(_0xc2f803){logger['error'](_0xa0fd('0x68'),_0xc2f803);}}try{_0x7d5b1d[_0xa0fd('0x69')]=_0x245012['rawHeaders']?JSON['parse'](_0x245012[_0xa0fd('0x6a')]):{};}catch(_0x5aa5eb){logger['error'](_0xa0fd('0x6b'),_0x5aa5eb);}if(_0x245012[_0xa0fd('0x6c')]){try{var _0x576c79=require(_0x245012[_0xa0fd('0x6c')])[_0xa0fd('0x6d')](this,_0x7d5b1d);_0x7d5b1d[_0xa0fd('0x6e')]=Mustache[_0xa0fd('0x6f')](_0x245012[_0xa0fd('0x5f')],_0x576c79,{},['$$','$$']);if(_0x7d5b1d['headers']){_0x7d5b1d[_0xa0fd('0x69')]=JSON[_0xa0fd('0x67')](Mustache['render'](JSON[_0xa0fd('0x70')](_0x7d5b1d[_0xa0fd('0x69')]),_0x576c79,{},['$$','$$']));}if(_0x7d5b1d[_0xa0fd('0x66')]){_0x7d5b1d['body']=JSON[_0xa0fd('0x67')](Mustache['render'](JSON[_0xa0fd('0x70')](_0x7d5b1d[_0xa0fd('0x66')]),_0x576c79,{},['$$','$$']));}}catch(_0xe9600b){logger[_0xa0fd('0x2f')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0xe9600b);}}rp(_0x7d5b1d)[_0xa0fd('0x12')](function(_0x2d8792){var _0x438fc3={'statusCode':_0x2d8792[_0xa0fd('0x71')]||0xc8,'statusMessage':_0x2d8792[_0xa0fd('0x72')]||'OK','headers':_0x2d8792[_0xa0fd('0x69')]||{},'body':_0x2d8792['body']||{}};_0x36452c(null,_0x438fc3);})[_0xa0fd('0x16')](function(_0x33c39f){var _0x2a32d5={'statusCode':_0x33c39f[_0xa0fd('0x71')]||0x1f4,'statusMessage':_0x33c39f[_0xa0fd('0x73')]||_0xa0fd('0x74'),'headers':_0x33c39f['options']['headers']||{},'body':_0x33c39f[_0xa0fd('0x75')][_0xa0fd('0x66')]||{}};_0x36452c(null,_0x2a32d5);});};AGIVertices['prototype'][_0xa0fd('0x76')]=function(_0x42a27d,_0x1bdcb){scripts[_0xa0fd('0x76')](this[_0xa0fd('0xd')][_0xa0fd('0x34')],_0x42a27d[_0xa0fd('0x77')],_0x42a27d[_0xa0fd('0x57')],_0x42a27d[_0xa0fd('0x78')]||'en')['then'](function(_0x2f8807){_0x1bdcb(null,_0x2f8807);})[_0xa0fd('0x16')](function(_0x379af6){_0x1bdcb(_0x379af6);});};AGIVertices['prototype'][_0xa0fd('0x79')]=function(_0x23e557,_0x4c3da0){scripts['googleDialogflowV2'](this[_0xa0fd('0xd')][_0xa0fd('0x34')],_0x23e557[_0xa0fd('0x7a')],_0x23e557[_0xa0fd('0x7b')],_0x23e557['private_key'],_0x23e557['text'],_0x23e557[_0xa0fd('0x7c')]||'en')[_0xa0fd('0x12')](function(_0x316177){_0x4c3da0(null,_0x316177);})[_0xa0fd('0x16')](function(_0x31cf5e){_0x4c3da0(_0x31cf5e);});};AGIVertices['prototype']['sestekNDA']=function(_0x2b3963,_0x1e9404){scripts[_0xa0fd('0x7d')](this[_0xa0fd('0xd')],_0x2b3963)[_0xa0fd('0x12')](function(_0x3daa8f){_0x1e9404(null,_0x3daa8f);})[_0xa0fd('0x16')](function(_0x392700){_0x1e9404(_0x392700);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x7e')]=function(_0x369fa2,_0x227b1b){scripts[_0xa0fd('0x7e')](_0x369fa2[_0xa0fd('0x77')],_0x369fa2['text'],_0x369fa2[_0xa0fd('0x7f')]||_0xa0fd('0x59'),_0x369fa2[_0xa0fd('0x80')])[_0xa0fd('0x12')](function(_0x5706c5){_0x227b1b(null,_0x5706c5);})['catch'](function(_0x785ba5){_0x227b1b(_0x785ba5);});};AGIVertices['prototype'][_0xa0fd('0x81')]=function(_0x18c33e,_0x11eef0,_0x18046f){scripts['ispeechASR'](_0x11eef0,_0x18c33e['key'],_0x18c33e['ispeech_asr_language']||'en-US',this['isConfigured'](_0x18c33e['model'])?_0x18c33e[_0xa0fd('0x82')]:undefined)[_0xa0fd('0x12')](function(_0xabf058){_0x18046f(null,_0xabf058);})['catch'](function(_0x3b22d1){_0x18046f(_0x3b22d1);});};AGIVertices['prototype'][_0xa0fd('0x83')]=function(_0x47115d,_0xc12eb7){scripts[_0xa0fd('0x83')](_0x47115d['aws_access_key_id'],_0x47115d[_0xa0fd('0x84')],_0x47115d[_0xa0fd('0x85')],_0x47115d[_0xa0fd('0x86')]||_0xa0fd('0x87'),_0x47115d[_0xa0fd('0x57')],_0x47115d[_0xa0fd('0x88')]||'text')[_0xa0fd('0x12')](function(_0x2e4ec0){_0xc12eb7(null,_0x2e4ec0);})[_0xa0fd('0x16')](function(_0x33cfc6){_0xc12eb7(_0x33cfc6);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x89')]=function(_0x2d46f2,_0x2276f5){scripts['awsLex'](this[_0xa0fd('0xd')]['uniqueid'],_0x2d46f2[_0xa0fd('0x8a')],_0x2d46f2[_0xa0fd('0x84')],_0x2d46f2[_0xa0fd('0x8b')],_0x2d46f2['text'],_0x2d46f2[_0xa0fd('0x8c')])[_0xa0fd('0x12')](function(_0x3cee7a){_0x2276f5(null,_0x3cee7a);})[_0xa0fd('0x16')](function(_0x598374){_0x2276f5(_0x598374);});};AGIVertices['prototype'][_0xa0fd('0x8d')]=function(_0x50503e,_0xc54804,_0x3f7ce0){scripts[_0xa0fd('0x8d')](_0xc54804,_0x50503e['key'],_0x50503e[_0xa0fd('0x8e')]||_0xa0fd('0x59'))['then'](function(_0x333844){_0x3f7ce0(null,_0x333844);})['catch'](function(_0x58614d){_0x3f7ce0(_0x58614d);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x8f')]=function(_0x2438a0,_0x4dcb19,_0x2fb169){scripts['tildeASR'](_0x4dcb19,_0x2438a0[_0xa0fd('0x90')],_0x2438a0[_0xa0fd('0x91')],_0x2438a0[_0xa0fd('0x6e')])[_0xa0fd('0x12')](function(_0x342216){_0x2fb169(null,_0x342216);})['catch'](function(_0xb491e6){_0x2fb169(_0xb491e6);});};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x92')]=function(_0x2f712f){var _0x3f630a=_[_0xa0fd('0x63')](verticesWithRetry,_0x2f712f[_0xa0fd('0x36')])?_0x2f712f:_['clone'](_0x2f712f);for(var _0xc9573f in _0x3f630a){if(_0x3f630a[_0xa0fd('0x93')](_0xc9573f)){if(_0x3f630a[_0xc9573f]&&_[_0xa0fd('0x94')](_0x3f630a[_0xc9573f])){if(_[_0xa0fd('0x63')](recursiveMapAttributes,_0xc9573f)){_0x3f630a[_0xc9573f]=this[_0xa0fd('0x95')](_0x3f630a[_0xc9573f]);}else{_0x3f630a[_0xc9573f]=this['replaceAllVariables'](_0x3f630a[_0xc9573f]);}}}}return _0x3f630a;};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x96')]=function(_0x14ea72){for(var _0x2c7bdf in _0x14ea72){if(_0x14ea72['hasOwnProperty'](_0x2c7bdf)){if(_['isPlainObject'](_0x14ea72[_0x2c7bdf])){this[_0xa0fd('0x96')](_0x14ea72[_0x2c7bdf]);}else if(_['isArray'](_0x14ea72[_0x2c7bdf])){for(var _0x345ed6=0x0;_0x345ed6<_0x14ea72[_0x2c7bdf][_0xa0fd('0x97')];_0x345ed6++){this['recursiveNodeIndex'](_0x14ea72[_0x2c7bdf][_0x345ed6]);}}else if(_[_0xa0fd('0x94')](_0x14ea72[_0x2c7bdf])){_0x14ea72[_0x2c7bdf]=this['replaceAllVariables'](_0x14ea72[_0x2c7bdf]);}}}};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x98')]=function(_0x4e335c,_0x545f2f){for(var _0x108fa0 in _0x4e335c){if(_0x4e335c['hasOwnProperty'](_0x108fa0)){if(_[_0xa0fd('0x99')](_0x4e335c[_0x108fa0])){if(!_['isEmpty'](_0x4e335c[_0x108fa0])){this[_0xa0fd('0x98')](_0x4e335c[_0x108fa0],util['format'](_0xa0fd('0x9a'),_0x545f2f,_0x108fa0));}}else if(_[_0xa0fd('0x9b')](_0x4e335c[_0x108fa0])){for(var _0x2ca1c9=0x0;_0x2ca1c9<_0x4e335c[_0x108fa0][_0xa0fd('0x97')];_0x2ca1c9++){this['saveRestApiResult'](_0x4e335c[_0x108fa0][_0x2ca1c9],util[_0xa0fd('0x26')](_0xa0fd('0x9a'),_0x545f2f,_0x108fa0+'['+_0x2ca1c9+']'));}}else{if(!_['isNil'](_0x4e335c[_0x108fa0])){this[_0xa0fd('0xd')][_0xa0fd('0x9c')](util['format'](_0xa0fd('0x9a'),_0x545f2f,_0x108fa0),_0x4e335c[_0x108fa0]);}}}}};AGIVertices[_0xa0fd('0xf')]['replaceObjectAllVariables']=function(_0x7ba27f){try{var _0x384c86=JSON[_0xa0fd('0x67')](_0x7ba27f);this[_0xa0fd('0x96')](_0x384c86);return JSON[_0xa0fd('0x70')](_0x384c86);}catch(_0xf65b43){return this[_0xa0fd('0x9d')](_0x7ba27f);}};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x9d')]=function(_0x4875de){var _0x197a0e=_0x4875de[_0xa0fd('0x9e')]('{');for(var _0x4a7beb=0x1;_0x4a7beb<_0x197a0e['length'];_0x4a7beb+=0x1){var _0x45861e=_0x197a0e[_0x4a7beb][_0xa0fd('0x9e')]('}');if(_0x45861e[_0xa0fd('0x97')]>0x1){_0x4875de=_0x4875de[_0xa0fd('0x9f')]('{'+_0x45861e[0x0]+'}',this[_0xa0fd('0xd')]['getVariable'](_0x45861e[0x0])[_0xa0fd('0xa0')]||_0x45861e[0x0]);}}if(_0x197a0e[_0xa0fd('0x97')]===0x1){return _0x4875de[_0xa0fd('0x47')]();}return this['replaceAllVariables'](_0x4875de);};AGIVertices['prototype'][_0xa0fd('0xa1')]=function(_0x4418c5,_0x1b0de8){var _0x7698a0=this[_0xa0fd('0xd')]['getVariable'](_0x4418c5);if(_0x7698a0[_0xa0fd('0xa2')]===-0x1){return _0x7698a0;}logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0xa3'),_0x1b0de8,_0x7698a0[_0xa0fd('0xa0')]));return this[_0xa0fd('0xd')]['setVariable'](_0x1b0de8,_0x7698a0[_0xa0fd('0xa0')]);};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xa4')]=function(_0x3f6f09){return _0x3f6f09&&_0x3f6f09!=='0'&&_0x3f6f09!=='-1'&&_0x3f6f09!=='';};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xa5')]=function(_0x294b03){this['createSquareDetailsReport'][_0xa0fd('0x6d')](this,_0x294b03,'-');_0x294b03['retry']=_0x294b03['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices['prototype']['mrcpsynth']=function(_0x54b24f){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0xa6'),_0x54b24f['label']));if(!this[_0xa0fd('0xa4')](_0x54b24f[_0xa0fd('0x57')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')]('no\x20text\x20configured');}var _0xbbbadb='\x22'+_0x54b24f[_0xa0fd('0x57')]+'\x22';if(this[_0xa0fd('0xa4')](_0x54b24f[_0xa0fd('0x75')])){_0xbbbadb+=','+_0x54b24f[_0xa0fd('0x75')];}var _0x239982=this['channel'][_0xa0fd('0x51')](_0xa0fd('0xa8'),_0xbbbadb);if(_0x239982[_0xa0fd('0xa2')]===-0x1){return _0x239982;}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')]('Executed\x20command\x20MRCPSynth\x20%s',_0xbbbadb));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xa9')]=function(_0x4bbe91){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0xaa'),_0x4bbe91['label']));if(!this['isConfigured'](_0x4bbe91[_0xa0fd('0xab')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xac'));}var _0x22619c=_0x4bbe91[_0xa0fd('0xab')];if(this[_0xa0fd('0xa4')](_0x4bbe91['options'])){_0x22619c+=','+_0x4bbe91[_0xa0fd('0x75')];}var _0x5d87ad=this[_0xa0fd('0xd')]['exec'](_0xa0fd('0xad'),_0x22619c);if(_0x5d87ad[_0xa0fd('0xa2')]===-0x1){return _0x5d87ad;}var _0x2a15f2=this[_0xa0fd('0xa1')](_0xa0fd('0xae'),'MRCP_RECOG_CONFIDENCE');if(_0x2a15f2[_0xa0fd('0xa2')]===-0x1){return _0x2a15f2;}var _0x5d847d=this[_0xa0fd('0xa1')]('RECOG_INPUT()',_0xa0fd('0xaf'));if(_0x5d847d['result']===-0x1){return _0x5d847d;}var _0x269b52=this['getAndSetVariable'](_0xa0fd('0xb0'),'MRCP_RECOG_INSTANCE');if(_0x269b52[_0xa0fd('0xa2')]===-0x1){return _0x269b52;}return this['channel']['noop'](util[_0xa0fd('0x26')](_0xa0fd('0xb1'),_0x22619c));};AGIVertices['prototype'][_0xa0fd('0xb2')]=function(_0x585bc9){logger['info'](util['format'](_0xa0fd('0xb3'),_0x585bc9['label']));return this['channel'][_0xa0fd('0xb2')]([_0x585bc9['command'],_0x585bc9[_0xa0fd('0xb4')]]);};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xb5')]=function(_0x575f53){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0xb6'),_0x575f53[_0xa0fd('0x35')]));if(this[_0xa0fd('0xa4')](_0x575f53[_0xa0fd('0x61')])){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0xb7'),_0x575f53[_0xa0fd('0x61')]));var _0x52e4c8=this[_0xa0fd('0xd')][_0xa0fd('0xb8')](_0x575f53[_0xa0fd('0x61')]);if(_0x52e4c8['result']===-0x1){return _0x52e4c8;}}return this[_0xa0fd('0xd')]['answer']();};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x46')]=function(_0x333c83){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0xb9'),_0x333c83[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x333c83[_0xa0fd('0xba')])){return this['channel'][_0xa0fd('0x2f')](_0x333c83,_0xa0fd('0xbb'));}_0x333c83[_0xa0fd('0x45')]=moment();if(this['isConfigured'](_0x333c83['delay'])){_0x333c83[_0xa0fd('0x45')]=moment()[_0xa0fd('0xbc')](_0x333c83[_0xa0fd('0xbd')],_0xa0fd('0xbe'));}if(!this[_0xa0fd('0xa4')](_0x333c83[_0xa0fd('0xbf')])){_0x333c83[_0xa0fd('0xbf')]=0x2;}this[_0xa0fd('0x3f')][_0xa0fd('0x6d')](this,_0x333c83);return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xc0'),_0x333c83[_0xa0fd('0xc1')],_0x333c83['list_id'],_0x333c83[_0xa0fd('0x45')]));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xc2')]=function(_0x45e291){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0xc3'),_0x45e291[_0xa0fd('0x35')]));var _0x2b6d98=this[_0xa0fd('0xd')][_0xa0fd('0x51')](_0x45e291[_0xa0fd('0xc4')],_0x45e291[_0xa0fd('0x75')]);if(_0x2b6d98[_0xa0fd('0xa2')]===-0x1){return _0x2b6d98;}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xc5'),_0x45e291[_0xa0fd('0xc4')],_0x45e291[_0xa0fd('0x75')]));};AGIVertices[_0xa0fd('0xf')]['lumenvoxtts']=function(_0x4a8690){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0xc6'),_0x4a8690['label']));if(!this['isConfigured'](_0x4a8690['text'])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')]('no\x20text\x20configured');}var _0x3e028e='\x22'+_0x4a8690[_0xa0fd('0x57')]+'\x22';if(this[_0xa0fd('0xa4')](_0x4a8690[_0xa0fd('0x75')])){_0x3e028e+=','+_0x4a8690[_0xa0fd('0x75')];}var _0xd6ecdd=this[_0xa0fd('0xd')][_0xa0fd('0x51')](_0xa0fd('0xa8'),_0x3e028e);if(_0xd6ecdd[_0xa0fd('0xa2')]===-0x1){return _0xd6ecdd;}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format'](_0xa0fd('0xc7'),_0x3e028e));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xc8')]=function(_0x827eed){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0xc9'),_0x827eed[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x827eed[_0xa0fd('0x57')])){return this['channel'][_0xa0fd('0xa7')]('no\x20text\x20configured');}var _0x582997='\x22'+_0x827eed['text']+'\x22';if(this[_0xa0fd('0xa4')](_0x827eed[_0xa0fd('0x75')])){_0x582997+=','+_0x827eed[_0xa0fd('0x75')];}var _0x51ec05=this['channel'][_0xa0fd('0x51')](_0xa0fd('0xa8'),_0x582997);if(_0x51ec05[_0xa0fd('0xa2')]===-0x1){return _0x51ec05;}return this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xc7'),_0x582997));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xca')]=function(_0x3077ff){logger[_0xa0fd('0x29')](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x3077ff[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x3077ff[_0xa0fd('0xab')])){return this['channel']['noop']('no\x20grammar\x20configured');}var _0x2ddfa6=_0x3077ff['grammar'];if(this[_0xa0fd('0xa4')](_0x3077ff[_0xa0fd('0x75')])){_0x2ddfa6+=','+_0x3077ff['options'];}var _0x2a5d54=this[_0xa0fd('0xd')][_0xa0fd('0x51')](_0xa0fd('0xad'),_0x2ddfa6);if(_0x2a5d54[_0xa0fd('0xa2')]===-0x1){return _0x2a5d54;}var _0x483258=this[_0xa0fd('0xa1')](_0xa0fd('0xae'),_0xa0fd('0xcb'));if(_0x483258[_0xa0fd('0xa2')]===-0x1){return _0x483258;}var _0x5251be=this[_0xa0fd('0xa1')](_0xa0fd('0xcc'),_0xa0fd('0xcd'));if(_0x5251be[_0xa0fd('0xa2')]===-0x1){return _0x5251be;}var _0x2cbf51=this[_0xa0fd('0xa1')]('RECOG_INSTANCE()',_0xa0fd('0xce'));if(_0x2cbf51[_0xa0fd('0xa2')]===-0x1){return _0x2cbf51;}return this['channel'][_0xa0fd('0xa7')](util['format'](_0xa0fd('0xb1'),_0x2ddfa6));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xcf')]=function(_0x43324d){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0xd0'),_0x43324d[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x43324d['grammar'])){return this['channel'][_0xa0fd('0xa7')]('no\x20grammar\x20configured');}var _0x69ebb3=_0x43324d[_0xa0fd('0xab')];if(this[_0xa0fd('0xa4')](_0x43324d[_0xa0fd('0x75')])){_0x69ebb3+=','+_0x43324d[_0xa0fd('0x75')];}var _0x389ce9=this[_0xa0fd('0xd')]['exec'](_0xa0fd('0xad'),_0x69ebb3);if(_0x389ce9[_0xa0fd('0xa2')]===-0x1){return _0x389ce9;}var _0x43d934=this[_0xa0fd('0xa1')]('RECOG_CONFIDENCE()',_0xa0fd('0xd1'));if(_0x43d934[_0xa0fd('0xa2')]===-0x1){return _0x43d934;}var _0x13e0fd=this[_0xa0fd('0xa1')](_0xa0fd('0xcc'),_0xa0fd('0xd2'));if(_0x13e0fd[_0xa0fd('0xa2')]===-0x1){return _0x13e0fd;}var _0x39c4c4=this['getAndSetVariable'](_0xa0fd('0xb0'),_0xa0fd('0xd3'));if(_0x39c4c4[_0xa0fd('0xa2')]===-0x1){return _0x39c4c4;}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format'](_0xa0fd('0xb1'),_0x69ebb3));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xd4')]=function(_0x5bbfb9){logger['info'](util['format'](_0xa0fd('0xd5'),_0x5bbfb9[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x5bbfb9['odbc_id'])){return this[_0xa0fd('0xd')]['error'](_0x5bbfb9,_0xa0fd('0xd6'));}var _0x5d506d=this['getSquareOdbc']['sync'](this,_0x5bbfb9['odbc_id']);if(!_0x5d506d){return this['channel'][_0xa0fd('0x2f')](_0x5bbfb9,_0xa0fd('0xd7'));}if(!this[_0xa0fd('0xa4')](_0x5bbfb9['query'])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x5bbfb9,'no\x20query\x20configured');}var _0x41bcb3=_0x5bbfb9['query'][_0xa0fd('0x53')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0xa0fd('0xa7')](util['format'](_0xa0fd('0xd8'),_0x41bcb3));var _0x5ca26c=this[_0xa0fd('0x27')][_0xa0fd('0x6d')](this,_0x5d506d,_0x41bcb3);this[_0xa0fd('0x33')][_0xa0fd('0x6d')](this,_0x5bbfb9,_0x41bcb3);if(!this['isConfigured'](_0x5bbfb9[_0xa0fd('0xd9')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xda'));}var _0x226ad4=this[_0xa0fd('0x10')][_0xa0fd('0x6d')](this,_0x5bbfb9['variable_id']);if(!_0x226ad4){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x5bbfb9,'no\x20variable\x20found');}var _0x2a48b2=this;_0x5ca26c[_0xa0fd('0xdb')](function(_0x34bb25,_0xf5dff9){Object['keys'](_0x34bb25)[_0xa0fd('0xdb')](function(_0x2acc74){_0x2a48b2[_0xa0fd('0xd')][_0xa0fd('0x9c')](util[_0xa0fd('0x26')](_0xa0fd('0xdc'),_0x226ad4,_0xf5dff9,_0x2acc74),_0x34bb25[_0x2acc74]);});});this[_0xa0fd('0xd')]['setVariable'](util[_0xa0fd('0x26')]('%s_ROWS_COUNT',_0x226ad4),_0x5ca26c[_0xa0fd('0x97')]);return this['channel']['noop'](util['format'](_0xa0fd('0xdd'),_0x226ad4));};AGIVertices['prototype'][_0xa0fd('0xde')]=function(_0x2b6727){logger[_0xa0fd('0xdf')](util[_0xa0fd('0x26')](_0xa0fd('0xe0'),_0x2b6727[_0xa0fd('0x35')]));if(!this['isConfigured'](_0x2b6727['sip_id'])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x2b6727,_0xa0fd('0xe1'));}var _0x4c940d=this[_0xa0fd('0x1c')]['sync'](this,_0x2b6727[_0xa0fd('0xe2')]);if(!_0x4c940d){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x2b6727,_0xa0fd('0xe3'));}var _0x285d31=this[_0xa0fd('0xd')][_0xa0fd('0x51')](_0xa0fd('0xe4'),[util[_0xa0fd('0x26')](_0xa0fd('0xe5'),_0x4c940d),_0x2b6727[_0xa0fd('0x61')],_0x2b6727[_0xa0fd('0xe6')],_0x2b6727[_0xa0fd('0x5f')]]);if(_0x285d31['result']===-0x1){return _0x285d31;}return this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xe7'),_0xa0fd('0xe4')));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xe8')]=function(_0x4c4e40){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x4c4e40[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x4c4e40[_0xa0fd('0x77')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xe9'));}if(!this[_0xa0fd('0xa4')](_0x4c4e40[_0xa0fd('0x57')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xea'));}this[_0xa0fd('0xd')][_0xa0fd('0xeb')]=!![];this[_0xa0fd('0x33')](_0x4c4e40);this[_0xa0fd('0x3e')](_0x4c4e40['text'],'in','','');this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xec'),_0x4c4e40[_0xa0fd('0x57')]));var _0x4dfc2f=this['googleDialogflow'][_0xa0fd('0x6d')](this,_0x4c4e40);if(_0x4dfc2f){for(var _0x19bc9b in _0x4dfc2f){if(_0x4dfc2f[_0xa0fd('0x93')](_0x19bc9b)){this[_0xa0fd('0xd')]['setVariable'](util[_0xa0fd('0x26')](_0xa0fd('0xed'),_0x19bc9b[_0xa0fd('0xee')]()),_0x4dfc2f[_0x19bc9b]);}}this[_0xa0fd('0x3e')](_0x4dfc2f[_0xa0fd('0xef')],'out',_0xa0fd('0xe8'),'');return this['channel'][_0xa0fd('0xa7')](util['format'](_0xa0fd('0xf0'),_0x4dfc2f[_0xa0fd('0xef')]));}return this[_0xa0fd('0xd')]['error'](_0x4c4e40,_0xa0fd('0xf1'));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xf2')]=function(_0x33852f){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0xf3'),_0x33852f[_0xa0fd('0x35')]));if(!this['isConfigured'](_0x33852f[_0xa0fd('0x7a')])){return this[_0xa0fd('0xd')]['noop'](_0xa0fd('0xf4'));}if(!this[_0xa0fd('0xa4')](_0x33852f[_0xa0fd('0x7b')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xf5'));}if(!this[_0xa0fd('0xa4')](_0x33852f[_0xa0fd('0xf6')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')]('no\x20private_key\x20configured');}if(!this[_0xa0fd('0xa4')](_0x33852f[_0xa0fd('0x7c')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xf7'));}if(!this[_0xa0fd('0xa4')](_0x33852f['text'])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')]('no\x20text\x20configured');}this[_0xa0fd('0xd')]['bot']=!![];this[_0xa0fd('0x33')](_0x33852f);this[_0xa0fd('0x3e')](_0x33852f[_0xa0fd('0x57')],'in','','');this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xf8'),_0x33852f[_0xa0fd('0x57')]));var _0xa60500=this[_0xa0fd('0x79')][_0xa0fd('0x6d')](this,_0x33852f);if(_0xa60500){for(var _0x2590c4 in _0xa60500){if(_0xa60500[_0xa0fd('0x93')](_0x2590c4)){if(_0x2590c4!==_0xa0fd('0xf9')){this['channel']['setVariable'](util[_0xa0fd('0x26')](_0xa0fd('0xed'),_0x2590c4[_0xa0fd('0xee')]()),_0xa60500[_0x2590c4]);}}}this['createSquareMessage'](_0xa60500[_0xa0fd('0xef')],_0xa0fd('0xfa'),'dialogflowV2',_0xa60500[_0xa0fd('0xf9')]);return this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xfb'),_0xa60500[_0xa0fd('0xef')]));}return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x33852f,_0xa0fd('0xfc'));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xfd')]=function(_0x549ac2){logger['info'](util['format'](_0xa0fd('0xfe'),_0x549ac2[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x549ac2[_0xa0fd('0xff')])){return this['channel']['noop']('no\x20ndauth\x20url\x20configured');}if(!this[_0xa0fd('0xa4')](_0x549ac2[_0xa0fd('0x100')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x101'));}if(!this['isConfigured'](_0x549ac2[_0xa0fd('0x102')])){return this['channel'][_0xa0fd('0xa7')]('no\x20password\x20configured');}if(!this[_0xa0fd('0xa4')](_0x549ac2[_0xa0fd('0x103')])){return this[_0xa0fd('0xd')]['noop'](_0xa0fd('0xea'));}this['channel'][_0xa0fd('0xeb')]=!![];this['createSquareDetailsReport'](_0x549ac2);this[_0xa0fd('0x3e')](_0x549ac2[_0xa0fd('0x57')],'in','','');this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x104'),_0x549ac2[_0xa0fd('0x57')]));var _0x14df37=this[_0xa0fd('0x7d')][_0xa0fd('0x6d')](this,_0x549ac2);if(_0x14df37){for(var _0x861438 in _0x14df37){if(_0x14df37[_0xa0fd('0x93')](_0x861438)){this[_0xa0fd('0xd')][_0xa0fd('0x9c')](util[_0xa0fd('0x26')]('SESTEK_NDA_%s',_0x861438['toUpperCase']()),_0x14df37[_0x861438]);}}this[_0xa0fd('0x3e')](_0x14df37[_0xa0fd('0xef')],'out',_0xa0fd('0xfd'),'');if(_0x14df37[_0xa0fd('0x105')]){this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x106'),_0x14df37[_0xa0fd('0x105')]));var _0x434d65=this[_0xa0fd('0xd')][_0xa0fd('0x107')](_0x14df37[_0xa0fd('0x105')]);try{fs[_0xa0fd('0x108')](_0x14df37[_0xa0fd('0x105')]+_0xa0fd('0x109'));}catch(_0x384fd9){logger[_0xa0fd('0x2f')](_0x384fd9);}return _0x434d65;}else{return this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x10a'),_0x14df37[_0xa0fd('0xef')]));}}return this['channel'][_0xa0fd('0x2f')](_0x549ac2,_0xa0fd('0x10b'));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x10c')]=function(_0x548cd1){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x10d'),_0x548cd1['label']));return this['channel'][_0xa0fd('0xa7')](_0xa0fd('0x10c'));};AGIVertices['prototype']['ext_dial']=function(_0x33639b){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x10e'),_0x33639b[_0xa0fd('0x35')]));var _0x426988='';if(_0x33639b[_0xa0fd('0x10f')]){if(!this[_0xa0fd('0xa4')](_0x33639b['trunk_id'])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x33639b,_0xa0fd('0x110'));}else{var _0x3de6da=parseInt(_0x33639b[_0xa0fd('0x10f')],0xa);if(isNaN(_0x3de6da)){_0x426988=_0x33639b[_0xa0fd('0x10f')];}else{_0x426988=this['getTrunk'][_0xa0fd('0x6d')](this,_0x33639b[_0xa0fd('0x10f')]);if(!_0x426988){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x33639b,'no\x20trunk\x20found');}}}}else if(_0x33639b['trunk_name']){_0x426988=_0x33639b[_0xa0fd('0x111')];}else{return this[_0xa0fd('0xd')]['error'](_0x33639b,_0xa0fd('0x110'));}var _0x3b43b3=this[_0xa0fd('0xd')][_0xa0fd('0x51')](_0xa0fd('0xe4'),[util[_0xa0fd('0x26')](_0xa0fd('0x112'),_0x426988,_0x33639b[_0xa0fd('0xc1')]),_0x33639b[_0xa0fd('0x61')],_0x33639b[_0xa0fd('0xe6')],_0x33639b['url']]);if(_0x3b43b3['result']===-0x1){return _0x3b43b3;}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xe7'),_0xa0fd('0xe4')));};AGIVertices['prototype']['finally']=function(_0x362771){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x113'),_0x362771[_0xa0fd('0x35')]));return this['channel']['noop'](_0xa0fd('0x114'));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0xb')]=function(_0x39e2bf){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x115'),_0x39e2bf[_0xa0fd('0x35')]));if(_0x39e2bf[_0xa0fd('0x116')]===0x0){return this[_0xa0fd('0xa5')](_0x39e2bf);}_0x39e2bf[_0xa0fd('0x116')]-=0x1;if(!this[_0xa0fd('0xa4')](_0x39e2bf[_0xa0fd('0x117')])){return this[_0xa0fd('0xd')]['error'](_0x39e2bf,_0xa0fd('0x118'));}var _0x2990ab=this['getSound'][_0xa0fd('0x6d')](this,_0x39e2bf['file_id']);if(!_0x2990ab){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x39e2bf,'no\x20file\x20audio\x20found');}if(!this[_0xa0fd('0xa4')](_0x39e2bf[_0xa0fd('0xd9')])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0xa0fd('0xda'));}var _0x55ff3f=this['channel'][_0xa0fd('0x119')](_0x2990ab,_0x39e2bf[_0xa0fd('0x11a')],_0x39e2bf[_0xa0fd('0x11b')]);var _0x45b2e1=_0x55ff3f[_0xa0fd('0xa2')]?_0x55ff3f[_0xa0fd('0xa2')][_0xa0fd('0x47')]():'';logger['info'](_0xa0fd('0x11c'),JSON[_0xa0fd('0x70')](_0x55ff3f));if(_0x55ff3f[_0xa0fd('0xa2')]===-0x1){this[_0xa0fd('0x33')][_0xa0fd('0x6d')](this,_0x39e2bf,_0x45b2e1);return _0x55ff3f;}else if(_0x55ff3f['extra']===_0xa0fd('0x61')){_0x55ff3f[_0xa0fd('0xa2')]=_0x45b2e1[_0xa0fd('0x97')]>=parseInt(_0x39e2bf[_0xa0fd('0x11d')])?'x':'i';}else{_0x55ff3f[_0xa0fd('0xa2')]=_0x45b2e1[_0xa0fd('0x97')]>=parseInt(_0x39e2bf['mindigit'])&&_0x45b2e1[_0xa0fd('0x97')]<=parseInt(_0x39e2bf['maxdigit'])?'x':'i';}var _0x5ced4f=this[_0xa0fd('0x10')][_0xa0fd('0x6d')](this,_0x39e2bf['variable_id']);if(!_0x5ced4f){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x39e2bf,_0xa0fd('0x11e'));}this[_0xa0fd('0xd')][_0xa0fd('0x9c')](_0x5ced4f,_0x45b2e1);if(this[_0xa0fd('0xa4')](_0x39e2bf[_0xa0fd('0x11f')])){var _0x84c94=parseInt(_0x39e2bf['hiddendigitsnum'],0xa);var _0x6fec6c=rs[_0xa0fd('0x120')]({'charset':'*','length':_0x84c94});var _0xfd47ab=_0x45b2e1['length'];if(_0xfd47ab>0x0){if(_0xfd47ab>_0x84c94){this[_0xa0fd('0x33')][_0xa0fd('0x6d')](this,_0x39e2bf,_0x39e2bf['hiddendigitspos']===_0xa0fd('0x121')?_0x6fec6c+_0x45b2e1[_0xa0fd('0x122')](_0x84c94):_0x45b2e1[_0xa0fd('0x122')](0x0,_0xfd47ab-_0x84c94)+_0x6fec6c);}else{this['createSquareDetailsReport'][_0xa0fd('0x6d')](this,_0x39e2bf,rs[_0xa0fd('0x120')]({'charset':'*','length':_0xfd47ab}));}}else{this['createSquareDetailsReport'][_0xa0fd('0x6d')](this,_0x39e2bf,'');}}else{this[_0xa0fd('0x33')][_0xa0fd('0x6d')](this,_0x39e2bf,_0x45b2e1);}return _0x55ff3f;};AGIVertices[_0xa0fd('0xf')]['getsecretdigits']=function(_0x499956){logger['info'](util['format'](_0xa0fd('0x123'),_0x499956[_0xa0fd('0x35')]));return this[_0xa0fd('0xb')](_0x499956);};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x124')]=function(_0xebb0e0){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x125'),_0xebb0e0[_0xa0fd('0x35')]));this['createSquareDetailsReport'][_0xa0fd('0x6d')](this,_0xebb0e0,_0xebb0e0[_0xa0fd('0x126')]);return this['channel'][_0xa0fd('0xa7')](util['format'](_0xa0fd('0x127'),_0xebb0e0[_0xa0fd('0x126')]));};AGIVertices['prototype']['awspolly']=function(_0x184747){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x128'),_0x184747[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x184747[_0xa0fd('0x8a')])||!this[_0xa0fd('0xa4')](_0x184747['aws_secret_access_key'])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x129'));}if(!this[_0xa0fd('0xa4')](_0x184747['text'])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xea'));}this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x12a'),_0x184747[_0xa0fd('0x57')]));var _0x169292=this['awsPolly'][_0xa0fd('0x6d')](this,_0x184747);if(_0x169292){this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x12b'),_0x169292));var _0x1540d0=this[_0xa0fd('0xd')][_0xa0fd('0x107')](_0x169292);try{fs[_0xa0fd('0x108')](_0x169292+_0xa0fd('0x109'));}catch(_0x23945a){logger[_0xa0fd('0x2f')](_0x23945a);}return _0x1540d0;}return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x184747,_0xa0fd('0x12c'));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x12d')]=function(_0x206d47){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x12e'),_0x206d47['label']));if(!this[_0xa0fd('0xa4')](_0x206d47[_0xa0fd('0x8a')])||!this['isConfigured'](_0x206d47['aws_secret_access_key'])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x129'));}if(!this[_0xa0fd('0xa4')](_0x206d47[_0xa0fd('0x8c')])){return this[_0xa0fd('0xd')]['noop'](_0xa0fd('0x12f'));}if(!this[_0xa0fd('0xa4')](_0x206d47['text'])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xea'));}this['channel'][_0xa0fd('0xeb')]=!![];this[_0xa0fd('0x33')](_0x206d47);this[_0xa0fd('0x3e')](_0x206d47['text'],'in','','');this[_0xa0fd('0xd')]['noop'](util[_0xa0fd('0x26')](_0xa0fd('0x130'),_0x206d47[_0xa0fd('0x57')]));var _0x1ed7c4=this[_0xa0fd('0x89')][_0xa0fd('0x6d')](this,_0x206d47);if(_0x1ed7c4){for(var _0xe2fb30 in _0x1ed7c4){if(_0x1ed7c4[_0xa0fd('0x93')](_0xe2fb30)&&_[_0xa0fd('0x94')](_0x1ed7c4[_0xe2fb30])){this[_0xa0fd('0xd')][_0xa0fd('0x9c')](util[_0xa0fd('0x26')](_0xa0fd('0x131'),_0xe2fb30[_0xa0fd('0xee')]()),_0x1ed7c4[_0xe2fb30]);}}if(_['isNil'](_0x1ed7c4[_0xa0fd('0x73')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x132'));}else{this[_0xa0fd('0x3e')](_0x1ed7c4[_0xa0fd('0x73')],_0xa0fd('0xfa'),_0xa0fd('0x133'),'');return this[_0xa0fd('0xd')]['noop'](util[_0xa0fd('0x26')]('Amazon\x20Lex\x20Result\x20%s',_0x1ed7c4[_0xa0fd('0x73')]));}}return this[_0xa0fd('0xd')]['error'](_0x206d47,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices['prototype'][_0xa0fd('0x134')]=function(_0x5a6a2c){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x135'),_0x5a6a2c[_0xa0fd('0x35')],_0x5a6a2c[_0xa0fd('0x61')]));if(!this[_0xa0fd('0xa4')](_0x5a6a2c[_0xa0fd('0x77')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')]('no\x20key\x20configured');}var _0x29de9b=_0xa0fd('0x136');var _0x4d1788=util[_0xa0fd('0x26')](_0xa0fd('0x137'),FILES_PATH,rs['generate'](0x4));var _0x21ce41=util[_0xa0fd('0x26')]('%s.%s',_0x4d1788,_0x29de9b);var _0x97e736=!![];if(_0x5a6a2c[_0xa0fd('0x138')]==='NOBEEP'){_0x97e736=![];}var _0x2b257c=this[_0xa0fd('0xd')][_0xa0fd('0x139')](_0x4d1788,_0x29de9b,_0x5a6a2c[_0xa0fd('0x13a')],_0x5a6a2c[_0xa0fd('0x61')],undefined,_0x97e736);if(_0x2b257c[_0xa0fd('0xa2')]!==-0x1){this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')]('google\x20%s\x20file\x20created',_0x21ce41));var _0x411298=this[_0xa0fd('0x8d')][_0xa0fd('0x6d')](this,_0x5a6a2c,_0x21ce41);if(_0x411298){for(var _0x1b9688 in _0x411298){if(_0x411298['hasOwnProperty'](_0x1b9688)){this[_0xa0fd('0xd')][_0xa0fd('0x9c')](util[_0xa0fd('0x26')](_0xa0fd('0x13b'),_0x1b9688[_0xa0fd('0xee')]()),_0x411298[_0x1b9688]);}}return this[_0xa0fd('0xd')]['noop'](util[_0xa0fd('0x26')](_0xa0fd('0x13c'),JSON[_0xa0fd('0x70')](_0x411298)));}}return _0x2b257c;};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x13d')]=function(_0x5c2b1a){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x13e'),_0x5c2b1a[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x5c2b1a['appid'])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')]('no\x20appid\x20configured');}if(!this[_0xa0fd('0xa4')](_0x5c2b1a[_0xa0fd('0x91')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x13f'));}var _0x3af596=_0xa0fd('0x136');var _0x4ba0ea=util[_0xa0fd('0x26')](_0xa0fd('0x137'),FILES_PATH,rs[_0xa0fd('0x120')](0x4));var _0x493f9c=util[_0xa0fd('0x26')](_0xa0fd('0x9a'),_0x4ba0ea,_0x3af596);var _0x4a7236=!![];if(_0x5c2b1a[_0xa0fd('0x138')]===_0xa0fd('0x140')){_0x4a7236=![];}var _0x5b631b=this[_0xa0fd('0xd')][_0xa0fd('0x139')](_0x4ba0ea,_0x3af596,_0x5c2b1a[_0xa0fd('0x13a')],_0x5c2b1a[_0xa0fd('0x61')],undefined,_0x4a7236);if(_0x5b631b[_0xa0fd('0xa2')]!==-0x1){this[_0xa0fd('0xd')]['noop'](util['format'](_0xa0fd('0x141'),_0x493f9c));var _0x5265fa=this[_0xa0fd('0x8f')][_0xa0fd('0x6d')](this,_0x5c2b1a,_0x493f9c);if(_0x5265fa){for(var _0x3f4953 in _0x5265fa){if(_0x5265fa[_0xa0fd('0x93')](_0x3f4953)){this[_0xa0fd('0xd')]['setVariable'](util[_0xa0fd('0x26')]('TILDE_ASR_%s',_0x3f4953['toUpperCase']()),_0x5265fa[_0x3f4953]);}}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format'](_0xa0fd('0x142'),JSON['stringify'](_0x5265fa)));}}return _0x5b631b;};AGIVertices['prototype'][_0xa0fd('0x143')]=function(_0x14a866){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x144'),_0x14a866[_0xa0fd('0x35')]));return this[_0xa0fd('0xd')][_0xa0fd('0x145')](_0x14a866[_0xa0fd('0x146')],_0x14a866[_0xa0fd('0x3b')],_0x14a866['priority']);};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x147')]=function(_0x2ff3aa){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x148'),_0x2ff3aa[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x2ff3aa['condition'])){return this['channel'][_0xa0fd('0x2f')](_0x2ff3aa,_0xa0fd('0x149'));}try{var _0x2f0838=eval(_0x2ff3aa[_0xa0fd('0x14a')])?_0xa0fd('0x14b'):_0xa0fd('0x14c');this[_0xa0fd('0xd')]['noop'](util['format'](_0xa0fd('0x14d'),_0x2ff3aa[_0xa0fd('0x14a')],_0x2f0838));return{'code':0xc8,'result':_0x2f0838};}catch(_0x1c90ca){return{'code':0xc8,'result':_0xa0fd('0x14c')};}};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x14e')]=function(_0x50150f){logger['info'](util[_0xa0fd('0x26')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x50150f[_0xa0fd('0x35')]));if(!this['isConfigured'](_0x50150f[_0xa0fd('0x14f')])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x50150f,_0xa0fd('0x150'));}var _0x39b66b=this[_0xa0fd('0x22')]['sync'](this,_0x50150f[_0xa0fd('0x14f')]);if(!_0x39b66b){return this['channel'][_0xa0fd('0x2f')](_0x50150f,'no\x20intervals\x20found');}for(var _0x41a1ac=0x0;_0x41a1ac<_0x39b66b['length'];_0x41a1ac+=0x1){var _0x1c831d=this[_0xa0fd('0xd')][_0xa0fd('0x10')](util[_0xa0fd('0x26')](_0xa0fd('0x151'),_0x39b66b[_0x41a1ac]));if(_0x1c831d['result']===-0x1){return _0x1c831d;}logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x152'),_0x39b66b[_0x41a1ac],_0x1c831d[_0xa0fd('0xa0')]));if(_0x1c831d[_0xa0fd('0xa0')]===_0xa0fd('0x14b')){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x152'),_0x39b66b[_0x41a1ac],_0xa0fd('0x14b')));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format'](_0xa0fd('0x152'),_0x39b66b[_0x41a1ac],_0xa0fd('0x14b')));return{'code':0xc8,'result':_0xa0fd('0x14b')};}else{logger['info'](util['format'](_0xa0fd('0x152'),_0x39b66b[_0x41a1ac],_0xa0fd('0x14c')));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format'](_0xa0fd('0x152'),_0x39b66b[_0x41a1ac],_0xa0fd('0x14c')));}}return{'code':0xc8,'result':_0xa0fd('0x14c')};};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x153')]=function(_0x34f530){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x154'),_0x34f530[_0xa0fd('0x35')]));return this[_0xa0fd('0xd')][_0xa0fd('0x153')]();};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x155')]=function(_0x117444){logger['info'](util['format'](_0xa0fd('0x156'),_0x117444['label']));if(!this[_0xa0fd('0xa4')](_0x117444[_0xa0fd('0x77')])){return this['channel']['noop'](_0xa0fd('0xe9'));}var _0x46f6dd='wav';var _0x32bde5=util['format'](_0xa0fd('0x137'),FILES_PATH,rs[_0xa0fd('0x120')](0x4));var _0x2a7bdf=util['format']('%s.%s',_0x32bde5,_0x46f6dd);var _0x5e1a61=!![];if(_0x117444['beep']===_0xa0fd('0x140')){_0x5e1a61=![];}var _0x53b749=this[_0xa0fd('0xd')][_0xa0fd('0x139')](_0x32bde5,_0x46f6dd,_0x117444[_0xa0fd('0x13a')],_0x117444['timeout'],undefined,_0x5e1a61);if(_0x53b749[_0xa0fd('0xa2')]!==-0x1){this[_0xa0fd('0xd')]['noop'](util['format'](_0xa0fd('0x157'),_0x2a7bdf));var _0x322e36=this[_0xa0fd('0x81')][_0xa0fd('0x6d')](this,_0x117444,_0x2a7bdf);if(_0x322e36){for(var _0x23fe02 in _0x322e36){if(_0x322e36[_0xa0fd('0x93')](_0x23fe02)){this[_0xa0fd('0xd')][_0xa0fd('0x9c')](util[_0xa0fd('0x26')](_0xa0fd('0x158'),_0x23fe02[_0xa0fd('0xee')]()),_0x322e36[_0x23fe02]);}}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')]('IspeechASR\x20Result\x20%s',JSON[_0xa0fd('0x70')](_0x322e36)));}}return _0x53b749;};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x159')]=function(_0x2d4dc4){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x15a'),_0x2d4dc4[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x2d4dc4[_0xa0fd('0x77')])){return this[_0xa0fd('0xd')]['noop']('no\x20key\x20configured');}if(!this[_0xa0fd('0xa4')](_0x2d4dc4[_0xa0fd('0x57')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xea'));}this[_0xa0fd('0xd')]['noop'](util['format'](_0xa0fd('0x15b'),_0x2d4dc4[_0xa0fd('0x57')]));var _0x267854=this['ispeechTTS'][_0xa0fd('0x6d')](this,_0x2d4dc4);if(_0x267854){this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format']('ispeech\x20%s\x20file\x20created',_0x267854));var _0x288573=this[_0xa0fd('0xd')][_0xa0fd('0x107')](_0x267854,_0x2d4dc4['intKey']);try{fs[_0xa0fd('0x108')](_0x267854+_0xa0fd('0x109'));}catch(_0x1de3fe){logger[_0xa0fd('0x2f')](_0x1de3fe);}return _0x288573;}return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x2d4dc4,_0xa0fd('0x15c'));};AGIVertices['prototype'][_0xa0fd('0x15d')]=function(_0x35ce77){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x15e'),_0x35ce77[_0xa0fd('0x35')]));if(!this['isConfigured'](_0x35ce77[_0xa0fd('0x15f')])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x35ce77,'no\x20find\x20by\x20configured');}logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x160'),this[_0xa0fd('0xd')]['callerid'],_0x35ce77[_0xa0fd('0x15f')]));var _0x7810b9=this[_0xa0fd('0x50')][_0xa0fd('0x6d')](this,_0x35ce77['findBy']);if(_0x7810b9){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x161'),this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x35ce77[_0xa0fd('0x15f')]));this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xa0fd('0xd')]['callerid'],_0x35ce77[_0xa0fd('0x15f')]));return{'code':0xc8,'result':_0xa0fd('0x162')};}else{logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x163'),this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x35ce77[_0xa0fd('0x15f')]));this['channel']['noop'](util[_0xa0fd('0x26')](_0xa0fd('0x163'),this['channel'][_0xa0fd('0x39')],_0x35ce77['findBy']));return{'code':0xc8,'result':_0xa0fd('0x164')};}};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x165')]=function(_0x3a263a){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x3a263a[_0xa0fd('0x35')]));if(!this['isConfigured'](_0x3a263a[_0xa0fd('0x15f')])){return this['channel'][_0xa0fd('0x2f')](_0x3a263a,_0xa0fd('0x166'));}logger['info'](util['format'](_0xa0fd('0x160'),this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x3a263a['findBy']));var _0xe40db=this['agentLogout'][_0xa0fd('0x6d')](this,_0x3a263a[_0xa0fd('0x15f')]);if(_0xe40db){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x161'),this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x3a263a[_0xa0fd('0x15f')]));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x3a263a[_0xa0fd('0x15f')]));return{'code':0xc8,'result':_0xa0fd('0x162')};}else{logger['info'](util['format'](_0xa0fd('0x163'),this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x3a263a[_0xa0fd('0x15f')]));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format'](_0xa0fd('0x163'),this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x3a263a['findBy']));return{'code':0xc8,'result':_0xa0fd('0x164')};}};AGIVertices['prototype'][_0xa0fd('0x167')]=function(_0x7ec6c7){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x168'),_0x7ec6c7[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x7ec6c7['operation'])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x7ec6c7,_0xa0fd('0x169'));}this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x16a'),_0x7ec6c7[_0xa0fd('0x16b')]));var _0x5e205e=eval(_0x7ec6c7[_0xa0fd('0x16b')]);if(!this['isConfigured'](_0x7ec6c7[_0xa0fd('0xd9')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xda'));}var _0x3bef47=this[_0xa0fd('0x10')][_0xa0fd('0x6d')](this,_0x7ec6c7[_0xa0fd('0xd9')]);if(!_0x3bef47){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x7ec6c7,_0xa0fd('0x11e'));}if(_['isArray'](_0x5e205e)){var _0x1afbef=this;_0x5e205e[_0xa0fd('0xdb')](function(_0x30325f,_0x457f84){_0x1afbef[_0xa0fd('0xd')][_0xa0fd('0x9c')](util[_0xa0fd('0x26')](_0xa0fd('0x16c'),_0x3bef47,_0x457f84),_0x30325f);});return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x16d'),_0x3bef47));}else{return this['channel']['setVariable'](_0x3bef47,_0x5e205e);}};AGIVertices['prototype'][_0xa0fd('0xa')]=function(_0x14dce9){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x16e'),_0x14dce9[_0xa0fd('0x35')]));if(_0x14dce9[_0xa0fd('0x116')]===0x0){return this[_0xa0fd('0xa5')](_0x14dce9);}_0x14dce9['retry']-=0x1;if(!this['isConfigured'](_0x14dce9[_0xa0fd('0x117')])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x14dce9,_0xa0fd('0x118'));}var _0x257777=this['getSound'][_0xa0fd('0x6d')](this,_0x14dce9['file_id']);if(!_0x257777){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x14dce9,_0xa0fd('0x16f'));}var _0x8a3e07=this[_0xa0fd('0xd')][_0xa0fd('0x119')](_0x257777,_0x14dce9[_0xa0fd('0x11a')],_0x14dce9[_0xa0fd('0x170')]);var _0x6225e4=_0x8a3e07[_0xa0fd('0xa2')];if(_0x8a3e07[_0xa0fd('0xa2')]===-0x1){this['createSquareDetailsReport'][_0xa0fd('0x6d')](this,_0x14dce9,'-1');return _0x8a3e07;}else if(_0x8a3e07['extra']==='timeout'){_0x8a3e07[_0xa0fd('0xa2')]=_0x8a3e07[_0xa0fd('0xa2')]['length']>0x0?_0x8a3e07['result']:'t';}else if(_[_0xa0fd('0x43')](_0x8a3e07[_0xa0fd('0xa2')])){_0x8a3e07['result']='#';_0x6225e4='#';}if(!this[_0xa0fd('0xa4')](_0x14dce9['variable_id'])){this[_0xa0fd('0xd')]['noop'](_0xa0fd('0xda'));}else{var _0x34c989=this[_0xa0fd('0x10')][_0xa0fd('0x6d')](this,_0x14dce9[_0xa0fd('0xd9')]);if(!_0x34c989){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x14dce9,_0xa0fd('0x11e'));}this[_0xa0fd('0xd')][_0xa0fd('0x9c')](_0x34c989,_0x6225e4);}this['createSquareDetailsReport']['sync'](this,_0x14dce9,_0x6225e4);return _0x8a3e07;};AGIVertices[_0xa0fd('0xf')]['noop']=function(_0x429fd6){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x171'),_0x429fd6[_0xa0fd('0x35')]));return this[_0xa0fd('0xd')]['noop'](_0x429fd6[_0xa0fd('0x172')]||_0x429fd6[_0xa0fd('0x35')]);};AGIVertices['prototype']['pause']=function(_0x19561e){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x173'),_0x19561e[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x19561e['findBy'])){return this[_0xa0fd('0xd')]['error'](_0x19561e,_0xa0fd('0x166'));}logger[_0xa0fd('0x29')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xa0fd('0xd')]['callerid'],_0x19561e[_0xa0fd('0x15f')]));var _0x45dfa1=this[_0xa0fd('0x48')]['sync'](this,_0x19561e['pause_id']);var _0x3361ba=this['agentPause'][_0xa0fd('0x6d')](this,_0x19561e[_0xa0fd('0x15f')],_0x45dfa1);if(_0x3361ba){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xa0fd('0xd')]['callerid'],_0x19561e[_0xa0fd('0x15f')]));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x161'),this[_0xa0fd('0xd')]['callerid'],_0x19561e[_0xa0fd('0x15f')]));return{'code':0xc8,'result':_0xa0fd('0x162')};}else{logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x163'),this['channel'][_0xa0fd('0x39')],_0x19561e[_0xa0fd('0x15f')]));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xa0fd('0xd')]['callerid'],_0x19561e['findBy']));return{'code':0xc8,'result':_0xa0fd('0x164')};}};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x174')]=function(_0x2db8f9){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x175'),_0x2db8f9[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x2db8f9[_0xa0fd('0x117')])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x2db8f9,_0xa0fd('0x118'));}var _0x27d3a1=this['getSound'][_0xa0fd('0x6d')](this,_0x2db8f9['file_id']);if(!_0x27d3a1){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x2db8f9,'no\x20file\x20audio\x20found');}var _0xbfa39d=this[_0xa0fd('0xd')][_0xa0fd('0x51')](_0xa0fd('0x176'),[_0x27d3a1,_0x2db8f9[_0xa0fd('0xe6')]]);if(_0xbfa39d[_0xa0fd('0xa2')]===-0x1){return _0xbfa39d;}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format'](_0xa0fd('0xc5'),_0xa0fd('0x176'),_0x27d3a1));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x177')]=function(_0x7abf6e){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x178'),_0x7abf6e[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x7abf6e[_0xa0fd('0x179')])){return this[_0xa0fd('0xd')]['error'](_0x7abf6e,_0xa0fd('0x17a'));}var _0x5f6c33='';var _0x40397e=parseInt(_0x7abf6e[_0xa0fd('0x179')],0xa);if(isNaN(_0x40397e)){_0x5f6c33=_0x7abf6e['queue_id'];}else{_0x5f6c33=this[_0xa0fd('0x14')][_0xa0fd('0x6d')](this,_0x7abf6e[_0xa0fd('0x179')]);if(!_0x5f6c33){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x7abf6e,_0xa0fd('0x17b'));}}var _0x5b6bcf='';if(this[_0xa0fd('0xa4')](_0x7abf6e[_0xa0fd('0x117')])){var _0x314951=this[_0xa0fd('0x17c')][_0xa0fd('0x6d')](this,_0x7abf6e['file_id']);if(_0x314951){_0x5b6bcf=_0x314951;}}this['createSquareDetailsReport'][_0xa0fd('0x6d')](this,_0x7abf6e,_0x5f6c33);if(_0x7abf6e[_0xa0fd('0xe6')]['indexOf']('x')<0x0){_0x7abf6e[_0xa0fd('0xe6')]+='x';}if(_0x7abf6e[_0xa0fd('0xe6')][_0xa0fd('0x17d')]('X')<0x0){_0x7abf6e[_0xa0fd('0xe6')]+='X';}this[_0xa0fd('0xd')]['setVariable']('XMCS-QUEUE',_0x5f6c33?_0x5f6c33['toLowerCase']():'');var _0x3200b3=this[_0xa0fd('0xd')][_0xa0fd('0x51')](_0xa0fd('0x17e'),[_0x5f6c33,_0x7abf6e['opts'],_0x7abf6e[_0xa0fd('0x5f')],_0x5b6bcf,_0x7abf6e['timeout'],_0x7abf6e['agi'],_0x7abf6e['macro'],_0x7abf6e[_0xa0fd('0x17f')],'',_0x7abf6e['position']]);if(_0x3200b3[_0xa0fd('0xa2')]===-0x1){return _0x3200b3;}return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xc5'),_0xa0fd('0x17e'),_0x5f6c33));};AGIVertices[_0xa0fd('0xf')]['record']=function(_0x208d9a){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x180'),_0x208d9a['label']));var _0x1a8a69=_0x208d9a['recordingFormat']||_0xa0fd('0x136');var _0x3596a6=util['format']('%s_%s',this['channel']['uniqueid'],rs[_0xa0fd('0x120')](0x5));var _0x1fb42a=util[_0xa0fd('0x26')](_0xa0fd('0x181'),FILES_PATH,_0x3596a6,_0x1a8a69);var _0xc21460=util['format'](_0xa0fd('0x137'),FILES_PATH,_0x3596a6);this[_0xa0fd('0x38')]['sync'](this,_0x208d9a,_0x3596a6,_0x1fb42a);this[_0xa0fd('0xd')][_0xa0fd('0x9c')](_0xa0fd('0x182'),_0x3596a6);logger[_0xa0fd('0x29')](_0xa0fd('0x183'),_0xc21460,_0x1a8a69,_0x208d9a[_0xa0fd('0x184')],_0x208d9a[_0xa0fd('0x61')]);return this[_0xa0fd('0xd')][_0xa0fd('0x139')](_0xc21460,_0x1a8a69,_0x208d9a['escape_digits'],_0x208d9a['timeout'],undefined,!![]);};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x185')]=function(_0x4b5d48){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x186'),_0x4b5d48['label']));if(!this[_0xa0fd('0xa4')](_0x4b5d48[_0xa0fd('0x5f')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x187'));}var _0x2c8689=this['restAPI'][_0xa0fd('0x6d')](this,_0x4b5d48);logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x188'),util['inspect'](_0x2c8689,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x4b5d48[_0xa0fd('0xd9')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x189'));}var _0x266c55=this[_0xa0fd('0x10')][_0xa0fd('0x6d')](this,_0x4b5d48[_0xa0fd('0xd9')]);if(!_0x266c55){return this['channel'][_0xa0fd('0x2f')](_0x4b5d48,'no\x20variable\x20found');}this[_0xa0fd('0xd')]['setVariable'](util['format'](_0xa0fd('0x18a'),_0x266c55),_0x2c8689[_0xa0fd('0x71')]?_0x2c8689['statusCode']:_0xa0fd('0x18b'));this[_0xa0fd('0xd')][_0xa0fd('0x9c')](util[_0xa0fd('0x26')](_0xa0fd('0x18c'),_0x266c55),_0x2c8689['statusMessage']?_0x2c8689[_0xa0fd('0x72')]:'OK');if(_0x2c8689[_0xa0fd('0x66')]){try{this[_0xa0fd('0x98')](_0x2c8689[_0xa0fd('0x66')],_0x266c55);}catch(_0x4ac077){logger[_0xa0fd('0x2f')](util[_0xa0fd('0x26')](_0xa0fd('0x18d'),_0x266c55));}}return this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xdd'),_0x266c55));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x18e')]=function(_0x2cd9dc){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x2cd9dc['label']));return this[_0xa0fd('0xd')][_0xa0fd('0x18f')](_0x2cd9dc[_0xa0fd('0x190')][_0xa0fd('0x53')](/\s+/g,''),_0x2cd9dc['escape_digits']);};AGIVertices['prototype'][_0xa0fd('0x191')]=function(_0x5c330c){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x192'),_0x5c330c['label']));return this['channel']['sayNumber'](_0x5c330c['number'][_0xa0fd('0x53')](/\s+/g,''),_0x5c330c[_0xa0fd('0x184')]);};AGIVertices['prototype']['sayphonetic']=function(_0x36dc23){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x36dc23['label']));return this[_0xa0fd('0xd')][_0xa0fd('0x193')](_0x36dc23[_0xa0fd('0x57')],_0x36dc23[_0xa0fd('0x184')]);};AGIVertices['prototype'][_0xa0fd('0x194')]=function(_0x4a4414){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x195'),_0x4a4414[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x4a4414['account_id'])){return this[_0xa0fd('0xd')]['noop'](_0xa0fd('0x196'));}var _0x3a2d25=this[_0xa0fd('0x20')][_0xa0fd('0x6d')](this,_0x4a4414[_0xa0fd('0x197')]);if(!_0x3a2d25||!_0x3a2d25[_0xa0fd('0x198')]){return this['channel'][_0xa0fd('0x2f')](_0x4a4414,_0xa0fd('0x199'));}var _0x47c31a={'from':util[_0xa0fd('0x26')](_0xa0fd('0x19a'),_0x3a2d25['name'],_0x3a2d25[_0xa0fd('0x19b')]||_0x3a2d25[_0xa0fd('0x198')][_0xa0fd('0x19c')]),'to':_0x4a4414['to']||'','cc':_0x4a4414['cc']||'','bcc':_0x4a4414[_0xa0fd('0x19d')]||'','subject':_0x4a4414[_0xa0fd('0x19e')],'html':_0x4a4414[_0xa0fd('0x57')],'text':_0x4a4414[_0xa0fd('0x57')]};if(this['isConfigured'](_0x4a4414[_0xa0fd('0x19f')])){}logger[_0xa0fd('0xdf')]('sendMail\x20message',JSON['stringify'](_0x47c31a));this[_0xa0fd('0x33')][_0xa0fd('0x6d')](this,_0x4a4414,_0x4a4414['account_id']);this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x1a0'),_0x3a2d25[_0xa0fd('0x13')]));this['sendMailMessage']['sync'](this,_0x3a2d25[_0xa0fd('0x1a1')],_0x47c31a);return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x1a2'));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x1a3')]=function(_0xf2b24){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x1a4'),_0xf2b24[_0xa0fd('0x35')]));return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x1a5'));};AGIVertices[_0xa0fd('0xf')]['sendSMS']=function(_0x128b61){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x1a6'),_0x128b61[_0xa0fd('0x35')]));if(!this['isConfigured'](_0x128b61[_0xa0fd('0x1a7')])){return this['channel'][_0xa0fd('0xa7')]('no\x20sms\x20account\x20configured');}var _0x2579de=this[_0xa0fd('0x1a8')][_0xa0fd('0x6d')](this,_0x128b61[_0xa0fd('0x1a7')]);if(!_0x2579de){return this[_0xa0fd('0xd')]['error'](_0x128b61,_0xa0fd('0x1a9'));}var _0x3dde5f={'body':_0x128b61[_0xa0fd('0x1aa')],'phone':_0x128b61['to']||'','SmsAccountId':_0x2579de['id']};logger[_0xa0fd('0xdf')](_0xa0fd('0x1ab'),JSON[_0xa0fd('0x70')](_0x3dde5f));this[_0xa0fd('0x33')][_0xa0fd('0x6d')](this,_0x128b61,_0x128b61[_0xa0fd('0x1a7')]);this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format']('Trying\x20SendSMS\x20with\x20account\x20%s',_0x2579de[_0xa0fd('0x13')]));this[_0xa0fd('0x32')]['sync'](this,_0x3dde5f);return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x1ac'));};AGIVertices['prototype'][_0xa0fd('0x1ad')]=function(_0x478038){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x478038[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x478038[_0xa0fd('0xd9')])){return this[_0xa0fd('0xd')]['error'](_0x478038,_0xa0fd('0x1ae'));}var _0x357903=this[_0xa0fd('0x10')][_0xa0fd('0x6d')](this,_0x478038[_0xa0fd('0xd9')]);if(!_0x357903){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x478038,_0xa0fd('0x11e'));}return this[_0xa0fd('0xd')][_0xa0fd('0x9c')](_0x357903,_0x478038[_0xa0fd('0x1af')]);};AGIVertices[_0xa0fd('0xf')]['start']=function(_0x28abd9){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x1b0'),_0x28abd9[_0xa0fd('0x35')]));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x1b1'));var _0x3a8193=this['channel'][_0xa0fd('0x10')](_0xa0fd('0x1b2'));if(!_['isEmpty'](_0x3a8193[_0xa0fd('0xa0')])){this['channel'][_0xa0fd('0x34')]=_0x3a8193[_0xa0fd('0xa0')];}if(_0x28abd9[_0xa0fd('0xb5')]===_0xa0fd('0x1b3')){this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x1b4'));return this['channel'][_0xa0fd('0xb5')]();}return this[_0xa0fd('0xd')]['noop'](_0xa0fd('0x1b5'));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x1b6')]=function(_0x467a4e){logger['info'](util[_0xa0fd('0x26')](_0xa0fd('0x1b7'),_0x467a4e[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x467a4e[_0xa0fd('0x1b8')])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x467a4e,_0xa0fd('0x1b9'));}var _0x36ba6c=this[_0xa0fd('0x17')][_0xa0fd('0x6d')](this,_0x467a4e[_0xa0fd('0x1b8')]);if(!this[_0xa0fd('0xa4')](_0x36ba6c)){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x467a4e,util[_0xa0fd('0x26')](_0xa0fd('0x1ba'),_0x467a4e[_0xa0fd('0x1b8')]));}if(_0x36ba6c===this[_0xa0fd('0xd')][_0xa0fd('0x37')]){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x467a4e,_0xa0fd('0x1bb'));}this['createSquareDetailsReport'][_0xa0fd('0x6d')](this,_0x467a4e,_0x36ba6c);var _0x4f8331=this['channel'][_0xa0fd('0x51')](_0xa0fd('0x1bc'),util['format'](_0xa0fd('0x1bd'),config[_0xa0fd('0xb2')][_0xa0fd('0x1be')]||_0xa0fd('0x1bf'),_0x36ba6c,this[_0xa0fd('0xd')][_0xa0fd('0x37')]));if(_0x4f8331[_0xa0fd('0xa2')]===-0x1){return _0x4f8331;}return this['channel']['noop'](util[_0xa0fd('0x26')](_0xa0fd('0xc5'),_0xa0fd('0x1bc'),_0x36ba6c));};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x1c0')]=function(_0x325cb6){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x1c1'),_0x325cb6[_0xa0fd('0x35')]));var _0x433ea9=this[_0xa0fd('0x1c2')][_0xa0fd('0x6d')](this,_0x325cb6[_0xa0fd('0x1c3')]);this['createSquareDetailsReport'][_0xa0fd('0x6d')](this,_0x325cb6,_0x325cb6['command']);if(this[_0xa0fd('0xa4')](_0x325cb6[_0xa0fd('0xd9')])){var _0xa7a535=this[_0xa0fd('0x10')][_0xa0fd('0x6d')](this,_0x325cb6['variable_id']);if(_0xa7a535){this[_0xa0fd('0xd')][_0xa0fd('0x9c')](_0xa7a535,_0x433ea9);return this['channel'][_0xa0fd('0xa7')](util['format'](_0xa0fd('0x1c4'),_0x325cb6['command'],_0xa7a535));}}return this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x1c5'),_0x325cb6[_0xa0fd('0x1c3')]));};AGIVertices['prototype'][_0xa0fd('0x1c6')]=function(_0x5497bc){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x1c7'),_0x5497bc['label']));_0x5497bc[_0xa0fd('0x57')]=_0x5497bc[_0xa0fd('0x57')][_0xa0fd('0x53')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xa0fd('0xa4')](_0x5497bc['apiKey'])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0x1c8'));}if(!this[_0xa0fd('0xa4')](_0x5497bc[_0xa0fd('0x57')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')](_0xa0fd('0xea'));}this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x1c9'),_0x5497bc[_0xa0fd('0x57')]));var _0x451f28=this[_0xa0fd('0x54')][_0xa0fd('0x6d')](this,_0x5497bc);if(_0x451f28){this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format'](_0xa0fd('0x1ca'),_0x451f28));var _0x1c1ed8=this[_0xa0fd('0xd')][_0xa0fd('0x107')](_0x451f28);try{fs[_0xa0fd('0x108')](_0x451f28+_0xa0fd('0x109'));}catch(_0x3fbbd9){logger[_0xa0fd('0x2f')](_0x3fbbd9);}return _0x1c1ed8;}return this['channel'][_0xa0fd('0x2f')](_0x5497bc,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0xa0fd('0xf')]['tts']=function(_0x5066ce){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x1cb'),_0x5066ce[_0xa0fd('0x35')]));_0x5066ce['text']=_0x5066ce[_0xa0fd('0x57')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xa0fd('0xa4')](_0x5066ce[_0xa0fd('0x57')])){return this[_0xa0fd('0xd')][_0xa0fd('0xa7')]('no\x20text\x20configured');}this[_0xa0fd('0xd')]['noop'](util[_0xa0fd('0x26')](_0xa0fd('0x1cc'),_0x5066ce[_0xa0fd('0x57')]));var _0xb6f230=this['googleTTS']['sync'](this,_0x5066ce);if(_0xb6f230){this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')]('Google\x20TTS\x20%s\x20file\x20created',_0xb6f230));var _0x55d3e4=this[_0xa0fd('0xd')][_0xa0fd('0x107')](_0xb6f230);try{fs[_0xa0fd('0x108')](_0xb6f230+_0xa0fd('0x109'));}catch(_0xf14d25){logger[_0xa0fd('0x2f')](_0xf14d25);}return _0x55d3e4;}return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x5066ce,_0xa0fd('0x1cd'));};AGIVertices[_0xa0fd('0xf')]['unpause']=function(_0x45a67a){logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x1ce'),_0x45a67a['label']));if(!this['isConfigured'](_0x45a67a[_0xa0fd('0x15f')])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x45a67a,_0xa0fd('0x166'));}logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x160'),this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x45a67a['findBy']));var _0x2b4fd3=this[_0xa0fd('0x4b')][_0xa0fd('0x6d')](this,_0x45a67a[_0xa0fd('0x15f')]);if(_0x2b4fd3){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x161'),this['channel'][_0xa0fd('0x39')],_0x45a67a[_0xa0fd('0x15f')]));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0x161'),this[_0xa0fd('0xd')][_0xa0fd('0x39')],_0x45a67a['findBy']));return{'code':0xc8,'result':_0xa0fd('0x162')};}else{logger[_0xa0fd('0x29')](util[_0xa0fd('0x26')](_0xa0fd('0x163'),this[_0xa0fd('0xd')]['callerid'],_0x45a67a[_0xa0fd('0x15f')]));this[_0xa0fd('0xd')][_0xa0fd('0xa7')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xa0fd('0x39')],_0x45a67a[_0xa0fd('0x15f')]));return{'code':0xc8,'result':_0xa0fd('0x164')};}};AGIVertices[_0xa0fd('0xf')][_0xa0fd('0x1cf')]=function(_0x1504d1){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x1d0'),_0x1504d1[_0xa0fd('0x35')]));var _0x40cd22=this[_0xa0fd('0xd')][_0xa0fd('0x51')](_0xa0fd('0x1d1'),[_0x1504d1[_0xa0fd('0x1d2')],_0x1504d1[_0xa0fd('0x75')]]);if(_0x40cd22[_0xa0fd('0xa2')]===-0x1){return _0x40cd22;}return this['channel'][_0xa0fd('0xa7')](util[_0xa0fd('0x26')](_0xa0fd('0xc5'),_0xa0fd('0x1d1'),_0x1504d1['mailbox']));};AGIVertices['prototype'][_0xa0fd('0x1d3')]=function(_0x349e85){logger[_0xa0fd('0x29')](util['format'](_0xa0fd('0x1d4'),_0x349e85[_0xa0fd('0x35')]));if(!this[_0xa0fd('0xa4')](_0x349e85[_0xa0fd('0xd9')])){return this[_0xa0fd('0xd')][_0xa0fd('0x2f')](_0x349e85,_0xa0fd('0x1ae'));}var _0x4f099f=this[_0xa0fd('0x10')][_0xa0fd('0x6d')](this,_0x349e85['variable_id']);if(!_0x4f099f){return this[_0xa0fd('0xd')]['error'](_0x349e85,_0xa0fd('0x11e'));}var _0x122cad=this['channel']['getVariable'](_0x4f099f);return{'code':0xc8,'result':_0x122cad[_0xa0fd('0xa0')]?_0x122cad[_0xa0fd('0xa0')]:'-'};};String['prototype'][_0xa0fd('0x9f')]=function(_0x36287,_0x4d804e){return this[_0xa0fd('0x9e')](_0x36287)[_0xa0fd('0x1d5')](_0x4d804e);};module[_0xa0fd('0x1d6')]=AGIVertices;
\ No newline at end of file
index de975ae..83e53ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7295=['transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','all','Auto-Pause','lodash','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncBlindTransfer','milliseconds','diff','prototype','updateAcw','timer','uniqueid','then','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','startAcw','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','resolve','getAgent','voicePause','info','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','paused','stopAcw','acwTimeout','format','YYYY-MM-DD\x20HH:mm:ss','finally','message','[%s][TIMER][STOP][AGENT:%s]','pauseType','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','interface','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','transfereeuniqueid','secondtransfereruniqueid','isNil','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid'];(function(_0x390d7e,_0x59679d){var _0x3cfc36=function(_0xf2907b){while(--_0xf2907b){_0x390d7e['push'](_0x390d7e['shift']());}};_0x3cfc36(++_0x59679d);}(_0x7295,0x131));var _0x5729=function(_0x2c38c1,_0x108063){_0x2c38c1=_0x2c38c1-0x0;var _0x180ee2=_0x7295[_0x2c38c1];return _0x180ee2;};'use strict';var _=require(_0x5729('0x0'));var moment=require(_0x5729('0x1'));var ami=require(_0x5729('0x2'));var logger=require('../../../config/logger')(_0x5729('0x3'));var RpcUser=require(_0x5729('0x4'));var RpcVoiceAgentReport=require(_0x5729('0x5'));function Acw(_0x377886){this[_0x5729('0x6')]=_0x377886[_0x5729('0x6')];this[_0x5729('0x7')]=_0x377886[_0x5729('0x7')];this['timers']=_0x377886[_0x5729('0x8')];this[_0x5729('0x9')]={};ami['on']('agentconnect',this[_0x5729('0xa')][_0x5729('0xb')](this));ami['on']('hanguprequest',this[_0x5729('0xc')][_0x5729('0xb')](this));ami['on'](_0x5729('0xd'),this[_0x5729('0xe')]['bind'](this));ami['on'](_0x5729('0xf'),this['syncAgentRingNoAnswer'][_0x5729('0xb')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on']('blindtransfer',this[_0x5729('0x10')][_0x5729('0xb')](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview'][_0x5729('0xb')](this));}function getDiff(_0x206d82){var _0x1434b5=moment()[_0x5729('0x11')](0x0);var _0xeb69dc=moment(_0x206d82)['milliseconds'](0x0);return _0x1434b5[_0x5729('0x12')](_0xeb69dc,'seconds');}Acw[_0x5729('0x13')][_0x5729('0x14')]=function(_0x201b72,_0x268d74){var _0x5b075d=this;var _0x1ee25a=getDiff(_0x5b075d[_0x5729('0x8')][_0x201b72]['lastPauseAt']);clearTimeout(_0x5b075d['timers'][_0x201b72][_0x5729('0x15')]);_0x5b075d['timers'][_0x201b72][_0x5729('0x15')]=![];return RpcVoiceAgentReport['update']({'acwtime':_0x1ee25a},_0x5b075d[_0x5729('0x8')][_0x201b72][_0x5729('0x16')],_0x201b72)[_0x5729('0x17')](function(_0xe98a45){logger['info'](_0x5729('0x18'),_0x268d74,_0x1ee25a,_0xe98a45);})[_0x5729('0x19')](function(_0x4034cd){logger[_0x5729('0x1a')](_0x5729('0x1b'),_0x268d74,_0x4034cd);})['finally'](function(){delete _0x5b075d['timers'][_0x201b72];});};Acw[_0x5729('0x13')][_0x5729('0x1c')]=function(_0x3117e6){try{var _0x4bc17e=this;var _0x5a30c6=this[_0x5729('0x9')][_0x3117e6]['interface'];var _0x39fc8f=this[_0x5729('0x9')][_0x3117e6][_0x5729('0x1d')];var _0x337283=this[_0x5729('0x6')][_0x39fc8f];var _0x548d81=![];var _0xdf5e75=_0x5729('0x1e');if(_0x337283[_0x5729('0x1f')]&&_0x337283[_0x5729('0x20')][_0x5729('0x21')]){_0x548d81=!![];_0xdf5e75=_0x337283['mandatoryDispositionPause'][_0x5729('0x21')];}if(!_0x4bc17e[_0x5729('0x7')][_0x5a30c6]){return Promise[_0x5729('0x22')]();}return RpcUser[_0x5729('0x23')](_0x4bc17e[_0x5729('0x7')][_0x5a30c6]['id'])[_0x5729('0x17')](function(_0xf63a8a){if(!_0xf63a8a||_0xf63a8a[_0x5729('0x24')]){logger[_0x5729('0x25')](_0x5729('0x26'),_0x3117e6,_0x5a30c6,_0x39fc8f);return;}logger[_0x5729('0x25')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x3117e6,_0x5a30c6,_0x39fc8f);var _0x4bae97=_0x4bc17e['channels'][_0x3117e6][_0x5729('0x27')]&&_0x4bc17e['channels'][_0x3117e6]['destlinkedid']?_0x4bc17e[_0x5729('0x9')][_0x3117e6][_0x5729('0x28')]:_0x3117e6;return RpcUser[_0x5729('0x29')](_0x4bc17e[_0x5729('0x7')][_0x5a30c6],_0xdf5e75,_0x4bae97)['then'](function(_0x110978){_0x4bc17e[_0x5729('0x6')][_0x39fc8f]['available']-=0x1;_0x4bc17e[_0x5729('0x6')][_0x39fc8f][_0x5729('0x2a')]+=0x1;return _0x110978;});})['then'](function(_0x380701){if(_0x548d81||!_0x380701){return;}_0x4bc17e[_0x5729('0x8')][_0x5a30c6]={};logger[_0x5729('0x25')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3117e6,_0x4bc17e[_0x5729('0x6')][_0x39fc8f]['acwTimeout'],_0x5a30c6,_0x39fc8f);_0x4bc17e[_0x5729('0x8')][_0x5a30c6][_0x5729('0x15')]=setTimeout(_0x4bc17e[_0x5729('0x2b')][_0x5729('0xb')](_0x4bc17e,_0x5a30c6),_0x4bc17e[_0x5729('0x6')][_0x39fc8f][_0x5729('0x2c')]*0x3e8);_0x4bc17e[_0x5729('0x8')][_0x5a30c6]['lastPauseAt']=moment()[_0x5729('0x2d')](_0x5729('0x2e'));_0x4bc17e[_0x5729('0x8')][_0x5a30c6][_0x5729('0x16')]=_0x3117e6;_0x4bc17e[_0x5729('0x8')][_0x5a30c6][_0x5729('0x1d')]=_0x39fc8f;_0x4bc17e[_0x5729('0x8')][_0x5a30c6][_0x5729('0x14')]=_0x4bc17e[_0x5729('0x14')][_0x5729('0xb')](_0x4bc17e,_0x5a30c6,_0x3117e6);})[_0x5729('0x19')](function(){logger[_0x5729('0x1a')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3117e6,_0x4bc17e[_0x5729('0x6')][_0x39fc8f][_0x5729('0x2c')],_0x5a30c6,_0x39fc8f);})[_0x5729('0x2f')](function(){delete _0x4bc17e[_0x5729('0x9')][_0x3117e6];});}catch(_0x58d7d0){logger[_0x5729('0x1a')]('[ACW][START]\x20%s',_0x58d7d0[_0x5729('0x30')]);}};Acw['prototype'][_0x5729('0x2b')]=function(_0x14822a){try{var _0x13afe7=this;if(_0x13afe7['timers'][_0x14822a]){_0x13afe7[_0x5729('0x8')][_0x14822a][_0x5729('0x15')]=![];var _0x2babd2=_0x13afe7[_0x5729('0x8')][_0x14822a]['uniqueid'];var _0x2028ca=_0x13afe7[_0x5729('0x8')][_0x14822a][_0x5729('0x1d')];var _0x1b2552=_0x13afe7['voiceQueues'][_0x2028ca][_0x5729('0x2c')];logger['info'](_0x5729('0x31'),_0x2babd2,_0x14822a);RpcUser[_0x5729('0x23')](this['agents'][_0x14822a]['id'])[_0x5729('0x17')](function(_0x38d468){if(_0x38d468[_0x5729('0x32')]===_0x5729('0x1e')){return RpcUser[_0x5729('0x33')](_0x13afe7['agents'][_0x14822a]);}});RpcVoiceAgentReport['update']({'acwtime':_0x1b2552,'agentacw':!![]},_0x2babd2,_0x14822a)['then'](function(_0x43518c){logger[_0x5729('0x25')]('[%s][UPDATE][ACWTIME:%s]',_0x2babd2,_0x1b2552,_0x43518c);})[_0x5729('0x19')](function(_0x138f83){logger[_0x5729('0x1a')]('[%s][UPDATE][ERRORS:%s]',_0x2babd2,_0x138f83);});}else{logger[_0x5729('0x1a')](_0x5729('0x34'),_0x14822a);if(_0x13afe7['timers']){logger[_0x5729('0x25')](_0x5729('0x35'),JSON[_0x5729('0x36')](_0x13afe7[_0x5729('0x8')]));}}}catch(_0x4b3721){logger[_0x5729('0x1a')](_0x5729('0x37'),_0x4b3721['message']);}};Acw['prototype'][_0x5729('0xa')]=function(_0x21cff5){try{if(this[_0x5729('0x6')][_0x21cff5[_0x5729('0x1d')]]&&(this[_0x5729('0x6')][_0x21cff5[_0x5729('0x1d')]][_0x5729('0x3')]||this[_0x5729('0x6')][_0x21cff5[_0x5729('0x1d')]][_0x5729('0x1f')])){if(this[_0x5729('0x7')][_0x21cff5[_0x5729('0x38')]]){this[_0x5729('0x9')][_0x21cff5[_0x5729('0x16')]]={'queue':_0x21cff5['queue'],'interface':_0x21cff5[_0x5729('0x38')],'destlinkedid':_0x21cff5['destlinkedid']};}}}catch(_0x5f3b94){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x5f3b94['message']);}};Acw[_0x5729('0x13')][_0x5729('0x39')]=function(_0x321d49){try{if(this[_0x5729('0x6')][_0x321d49[_0x5729('0x1d')]]&&(this[_0x5729('0x6')][_0x321d49[_0x5729('0x1d')]]['acw']||this['voiceQueues'][_0x321d49[_0x5729('0x1d')]][_0x5729('0x1f')])){if(this[_0x5729('0x7')][_0x321d49[_0x5729('0x38')]]){this['channels'][_0x321d49[_0x5729('0x16')]]={'queue':_0x321d49[_0x5729('0x1d')],'interface':_0x321d49[_0x5729('0x38')]};}}}catch(_0x1ab932){logger[_0x5729('0x1a')](_0x5729('0x3a'),_0x1ab932[_0x5729('0x30')]);}};Acw['prototype'][_0x5729('0xc')]=function(_0x57ee92){try{if(this[_0x5729('0x9')][_0x57ee92[_0x5729('0x16')]]&&_[_0x5729('0x3b')](this[_0x5729('0x9')][_0x57ee92[_0x5729('0x16')]]['attended'])){logger[_0x5729('0x25')](_0x5729('0x3c'),_0x57ee92['uniqueid']);this[_0x5729('0x1c')](_0x57ee92[_0x5729('0x16')]);}else if(this['channels'][_0x57ee92[_0x5729('0x3d')]]&&_[_0x5729('0x3b')](this['channels'][_0x57ee92[_0x5729('0x3d')]][_0x5729('0x27')])){logger[_0x5729('0x25')](_0x5729('0x3e'),_0x57ee92[_0x5729('0x3d')]);this[_0x5729('0x1c')](_0x57ee92['linkedid']);}}catch(_0xf0b1b5){logger[_0x5729('0x1a')]('[ACW][syncHangupRequest]\x20%s',_0xf0b1b5['message']);}};Acw[_0x5729('0x13')][_0x5729('0xe')]=function(_0x52fc96){try{if(this[_0x5729('0x9')][_0x52fc96[_0x5729('0x16')]]&&this['channels'][_0x52fc96[_0x5729('0x16')]][_0x5729('0x27')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x52fc96[_0x5729('0x16')]);this['startAcw'](_0x52fc96[_0x5729('0x16')]);}else if(this[_0x5729('0x9')][_0x52fc96[_0x5729('0x3d')]]&&this[_0x5729('0x9')][_0x52fc96[_0x5729('0x3d')]]['attended']){logger[_0x5729('0x25')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x52fc96['linkedid']);this[_0x5729('0x1c')](_0x52fc96[_0x5729('0x3d')]);}}catch(_0x7e950d){logger[_0x5729('0x1a')]('[ACW][syncHangup]\x20%s',_0x7e950d['message']);}};Acw['prototype']['syncAttendedTransfer']=function(_0x4bb9c9){try{if(!_['isNil'](this['channels'][_0x4bb9c9[_0x5729('0x3f')]])){this['startAcw'](_0x4bb9c9[_0x5729('0x3f')]);if(this[_0x5729('0x9')][_0x4bb9c9['secondtransfereruniqueid']]){this[_0x5729('0x9')][_0x4bb9c9['secondtransfereruniqueid']][_0x5729('0x27')]=!![];this['channels'][_0x4bb9c9['transfertargetuniqueid']]=this['channels'][_0x4bb9c9[_0x5729('0x40')]];delete this['channels'][_0x4bb9c9[_0x5729('0x40')]];}}else if(!_[_0x5729('0x41')](this[_0x5729('0x9')][_0x4bb9c9['transfertargetuniqueid']])){this[_0x5729('0x1c')](_0x4bb9c9[_0x5729('0x42')]);if(this[_0x5729('0x9')][_0x4bb9c9[_0x5729('0x43')]]){this[_0x5729('0x9')][_0x4bb9c9[_0x5729('0x43')]]['attended']=!![];this['channels'][_0x4bb9c9['transfereeuniqueid']]=this[_0x5729('0x9')][_0x4bb9c9[_0x5729('0x43')]];delete this[_0x5729('0x9')][_0x4bb9c9['origtransfereruniqueid']];}}}catch(_0x8370ad){logger[_0x5729('0x1a')](_0x5729('0x44'),_0x8370ad['message']);}};Acw[_0x5729('0x13')][_0x5729('0x10')]=function(_0x4e0186){try{if(this['channels'][_0x4e0186[_0x5729('0x45')]]){logger[_0x5729('0x25')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x4e0186[_0x5729('0x45')]));this[_0x5729('0x1c')](_0x4e0186['transfereruniqueid']);}else if(this[_0x5729('0x9')][_0x4e0186[_0x5729('0x46')]]){logger[_0x5729('0x25')](_0x5729('0x47'),JSON['stringify'](_0x4e0186[_0x5729('0x46')]));this[_0x5729('0x1c')](_0x4e0186[_0x5729('0x46')]);}}catch(_0x3f0240){logger[_0x5729('0x1a')]('[ACW][syncBlindTransfer]\x20%s',_0x3f0240[_0x5729('0x30')]);}};Acw[_0x5729('0x13')]['syncAgentRingNoAnswer']=function(_0x3f99a4){try{if(this[_0x5729('0x6')][_0x3f99a4[_0x5729('0x1d')]]&&this['voiceQueues'][_0x3f99a4[_0x5729('0x1d')]][_0x5729('0x48')]===_0x5729('0x49')){if(this[_0x5729('0x7')][_0x3f99a4['interface']]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x3f99a4[_0x5729('0x16')],_0x3f99a4['interface'],_0x3f99a4[_0x5729('0x1d')]);return RpcUser[_0x5729('0x29')](this[_0x5729('0x7')][_0x3f99a4[_0x5729('0x38')]],_0x5729('0x4a'),_0x3f99a4['uniqueid']);}}}catch(_0x540156){logger[_0x5729('0x1a')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x540156[_0x5729('0x30')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0xe082=['[ACW][syncAgentConnect]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%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','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','hangup','syncHangup','bind','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','updateAcw','lastPauseAt','timer','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','error','finally','startAcw','interface','queue','mandatoryDisposition','name','resolve','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','catch','[ACW][START]\x20%s','message','prototype','getAgent','ACW','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','acw'];(function(_0x28580c,_0x2b0dc7){var _0x5c5100=function(_0x18d7d4){while(--_0x18d7d4){_0x28580c['push'](_0x28580c['shift']());}};_0x5c5100(++_0x2b0dc7);}(_0xe082,0x75));var _0x2e08=function(_0x42f687,_0x558724){_0x42f687=_0x42f687-0x0;var _0x108838=_0xe082[_0x42f687];return _0x108838;};'use strict';var _=require(_0x2e08('0x0'));var moment=require(_0x2e08('0x1'));var ami=require(_0x2e08('0x2'));var logger=require(_0x2e08('0x3'))('acw');var RpcUser=require(_0x2e08('0x4'));var RpcVoiceAgentReport=require(_0x2e08('0x5'));function Acw(_0x42972){this[_0x2e08('0x6')]=_0x42972[_0x2e08('0x6')];this[_0x2e08('0x7')]=_0x42972[_0x2e08('0x7')];this[_0x2e08('0x8')]=_0x42972[_0x2e08('0x8')];this[_0x2e08('0x9')]={};ami['on'](_0x2e08('0xa'),this[_0x2e08('0xb')]['bind'](this));ami['on'](_0x2e08('0xc'),this[_0x2e08('0xd')]['bind'](this));ami['on'](_0x2e08('0xe'),this[_0x2e08('0xf')][_0x2e08('0x10')](this));ami['on'](_0x2e08('0x11'),this[_0x2e08('0x12')]['bind'](this));ami['on'](_0x2e08('0x13'),this[_0x2e08('0x14')][_0x2e08('0x10')](this));ami['on'](_0x2e08('0x15'),this[_0x2e08('0x16')]['bind'](this));ami['on'](_0x2e08('0x17'),this[_0x2e08('0x18')][_0x2e08('0x10')](this));}function getDiff(_0x697c19){var _0x9ea798=moment()[_0x2e08('0x19')](0x0);var _0x3b88a4=moment(_0x697c19)[_0x2e08('0x19')](0x0);return _0x9ea798[_0x2e08('0x1a')](_0x3b88a4,'seconds');}Acw['prototype'][_0x2e08('0x1b')]=function(_0x2555e8,_0x52cc67){var _0x432ddb=this;var _0x35b78b=getDiff(_0x432ddb[_0x2e08('0x8')][_0x2555e8][_0x2e08('0x1c')]);clearTimeout(_0x432ddb['timers'][_0x2555e8]['timer']);_0x432ddb[_0x2e08('0x8')][_0x2555e8][_0x2e08('0x1d')]=![];return RpcVoiceAgentReport['update']({'acwtime':_0x35b78b},_0x432ddb[_0x2e08('0x8')][_0x2555e8][_0x2e08('0x1e')],_0x2555e8)[_0x2e08('0x1f')](function(_0xea341d){logger[_0x2e08('0x20')](_0x2e08('0x21'),_0x52cc67,_0x35b78b,_0xea341d);})['catch'](function(_0x10aed0){logger[_0x2e08('0x22')]('[%s][UPDATE][ERRORS:%s]',_0x52cc67,_0x10aed0);})[_0x2e08('0x23')](function(){delete _0x432ddb[_0x2e08('0x8')][_0x2555e8];});};Acw['prototype'][_0x2e08('0x24')]=function(_0x5cf2e3){try{var _0x5485ba=this;var _0x165920=this[_0x2e08('0x9')][_0x5cf2e3][_0x2e08('0x25')];var _0x49eae0=this[_0x2e08('0x9')][_0x5cf2e3][_0x2e08('0x26')];var _0x27a08f=this[_0x2e08('0x6')][_0x49eae0];var _0x21e4fd=![];var _0x17913a='ACW';if(_0x27a08f[_0x2e08('0x27')]&&_0x27a08f['mandatoryDispositionPause'][_0x2e08('0x28')]){_0x21e4fd=!![];_0x17913a=_0x27a08f['mandatoryDispositionPause'][_0x2e08('0x28')];}if(!_0x5485ba['agents'][_0x165920]){return Promise[_0x2e08('0x29')]();}return RpcUser['getAgent'](_0x5485ba[_0x2e08('0x7')][_0x165920]['id'])['then'](function(_0x3758cf){if(!_0x3758cf||_0x3758cf[_0x2e08('0x2a')]){logger[_0x2e08('0x20')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x5cf2e3,_0x165920,_0x49eae0);return;}logger['info'](_0x2e08('0x2b'),_0x5cf2e3,_0x165920,_0x49eae0);var _0x3d2657=_0x5485ba[_0x2e08('0x9')][_0x5cf2e3][_0x2e08('0x2c')]&&_0x5485ba[_0x2e08('0x9')][_0x5cf2e3][_0x2e08('0x2d')]?_0x5485ba[_0x2e08('0x9')][_0x5cf2e3]['destlinkedid']:_0x5cf2e3;return RpcUser['savePause'](_0x5485ba[_0x2e08('0x7')][_0x165920],_0x17913a,_0x3d2657)['then'](function(_0x55425e){_0x5485ba[_0x2e08('0x6')][_0x49eae0][_0x2e08('0x2e')]-=0x1;_0x5485ba[_0x2e08('0x6')][_0x49eae0][_0x2e08('0x2f')]+=0x1;return _0x55425e;});})['then'](function(_0x58ffd3){if(_0x21e4fd||!_0x58ffd3){return;}_0x5485ba[_0x2e08('0x8')][_0x165920]={};logger[_0x2e08('0x20')](_0x2e08('0x30'),_0x5cf2e3,_0x5485ba[_0x2e08('0x6')][_0x49eae0][_0x2e08('0x31')],_0x165920,_0x49eae0);_0x5485ba['timers'][_0x165920][_0x2e08('0x1d')]=setTimeout(_0x5485ba[_0x2e08('0x32')][_0x2e08('0x10')](_0x5485ba,_0x165920),_0x5485ba[_0x2e08('0x6')][_0x49eae0][_0x2e08('0x31')]*0x3e8);_0x5485ba[_0x2e08('0x8')][_0x165920][_0x2e08('0x1c')]=moment()[_0x2e08('0x33')](_0x2e08('0x34'));_0x5485ba[_0x2e08('0x8')][_0x165920][_0x2e08('0x1e')]=_0x5cf2e3;_0x5485ba['timers'][_0x165920]['queue']=_0x49eae0;_0x5485ba[_0x2e08('0x8')][_0x165920][_0x2e08('0x1b')]=_0x5485ba[_0x2e08('0x1b')]['bind'](_0x5485ba,_0x165920,_0x5cf2e3);})[_0x2e08('0x35')](function(){logger[_0x2e08('0x22')](_0x2e08('0x30'),_0x5cf2e3,_0x5485ba[_0x2e08('0x6')][_0x49eae0]['acwTimeout'],_0x165920,_0x49eae0);})['finally'](function(){delete _0x5485ba['channels'][_0x5cf2e3];});}catch(_0x3bd7f7){logger[_0x2e08('0x22')](_0x2e08('0x36'),_0x3bd7f7[_0x2e08('0x37')]);}};Acw[_0x2e08('0x38')][_0x2e08('0x32')]=function(_0x2f5cc5){try{var _0x4f5009=this;if(_0x4f5009[_0x2e08('0x8')][_0x2f5cc5]){_0x4f5009[_0x2e08('0x8')][_0x2f5cc5][_0x2e08('0x1d')]=![];var _0x4488d6=_0x4f5009[_0x2e08('0x8')][_0x2f5cc5]['uniqueid'];var _0x16d927=_0x4f5009[_0x2e08('0x8')][_0x2f5cc5]['queue'];var _0xd42a80=_0x4f5009[_0x2e08('0x6')][_0x16d927][_0x2e08('0x31')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x4488d6,_0x2f5cc5);RpcUser[_0x2e08('0x39')](this['agents'][_0x2f5cc5]['id'])[_0x2e08('0x1f')](function(_0x541366){if(_0x541366['pauseType']===_0x2e08('0x3a')){return RpcUser[_0x2e08('0x3b')](_0x4f5009[_0x2e08('0x7')][_0x2f5cc5]);}});RpcVoiceAgentReport[_0x2e08('0x3c')]({'acwtime':_0xd42a80,'agentacw':!![]},_0x4488d6,_0x2f5cc5)[_0x2e08('0x1f')](function(_0xafdbe4){logger[_0x2e08('0x20')](_0x2e08('0x21'),_0x4488d6,_0xd42a80,_0xafdbe4);})['catch'](function(_0xc289fd){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x4488d6,_0xc289fd);});}else{logger[_0x2e08('0x22')](_0x2e08('0x3d'),_0x2f5cc5);if(_0x4f5009[_0x2e08('0x8')]){logger[_0x2e08('0x20')](_0x2e08('0x3e'),JSON[_0x2e08('0x3f')](_0x4f5009[_0x2e08('0x8')]));}}}catch(_0x3709c1){logger[_0x2e08('0x22')]('[ACW][STOP]\x20%s',_0x3709c1[_0x2e08('0x37')]);}};Acw[_0x2e08('0x38')][_0x2e08('0xb')]=function(_0x28f0e6){try{if(this[_0x2e08('0x6')][_0x28f0e6[_0x2e08('0x26')]]&&(this['voiceQueues'][_0x28f0e6[_0x2e08('0x26')]][_0x2e08('0x40')]||this[_0x2e08('0x6')][_0x28f0e6[_0x2e08('0x26')]][_0x2e08('0x27')])){if(this['agents'][_0x28f0e6[_0x2e08('0x25')]]){this['channels'][_0x28f0e6[_0x2e08('0x1e')]]={'queue':_0x28f0e6[_0x2e08('0x26')],'interface':_0x28f0e6[_0x2e08('0x25')],'destlinkedid':_0x28f0e6[_0x2e08('0x2d')]};}}}catch(_0x2414c1){logger[_0x2e08('0x22')](_0x2e08('0x41'),_0x2414c1[_0x2e08('0x37')]);}};Acw['prototype'][_0x2e08('0x18')]=function(_0x1f3e7f){try{if(this[_0x2e08('0x6')][_0x1f3e7f[_0x2e08('0x26')]]&&(this['voiceQueues'][_0x1f3e7f[_0x2e08('0x26')]]['acw']||this[_0x2e08('0x6')][_0x1f3e7f['queue']][_0x2e08('0x27')])){if(this[_0x2e08('0x7')][_0x1f3e7f['interface']]){this[_0x2e08('0x9')][_0x1f3e7f['uniqueid']]={'queue':_0x1f3e7f[_0x2e08('0x26')],'interface':_0x1f3e7f['interface']};}}}catch(_0x4de769){logger[_0x2e08('0x22')]('[ACW][syncAgentConnectPreview]\x20%s',_0x4de769[_0x2e08('0x37')]);}};Acw[_0x2e08('0x38')][_0x2e08('0xd')]=function(_0x4abb39){try{if(this[_0x2e08('0x9')][_0x4abb39[_0x2e08('0x1e')]]&&_['isUndefined'](this[_0x2e08('0x9')][_0x4abb39[_0x2e08('0x1e')]][_0x2e08('0x2c')])){logger['info']('[%s][HANGUP:UNIQUEID]',_0x4abb39[_0x2e08('0x1e')]);this['startAcw'](_0x4abb39['uniqueid']);}else if(this['channels'][_0x4abb39['linkedid']]&&_[_0x2e08('0x42')](this['channels'][_0x4abb39[_0x2e08('0x43')]][_0x2e08('0x2c')])){logger[_0x2e08('0x20')](_0x2e08('0x44'),_0x4abb39[_0x2e08('0x43')]);this[_0x2e08('0x24')](_0x4abb39[_0x2e08('0x43')]);}}catch(_0x5d1566){logger[_0x2e08('0x22')](_0x2e08('0x45'),_0x5d1566[_0x2e08('0x37')]);}};Acw[_0x2e08('0x38')][_0x2e08('0xf')]=function(_0x564c24){try{if(this[_0x2e08('0x9')][_0x564c24[_0x2e08('0x1e')]]&&this[_0x2e08('0x9')][_0x564c24[_0x2e08('0x1e')]]['attended']){logger[_0x2e08('0x20')](_0x2e08('0x46'),_0x564c24[_0x2e08('0x1e')]);this[_0x2e08('0x24')](_0x564c24['uniqueid']);}else if(this[_0x2e08('0x9')][_0x564c24[_0x2e08('0x43')]]&&this[_0x2e08('0x9')][_0x564c24[_0x2e08('0x43')]][_0x2e08('0x2c')]){logger[_0x2e08('0x20')](_0x2e08('0x47'),_0x564c24['linkedid']);this[_0x2e08('0x24')](_0x564c24['linkedid']);}}catch(_0x3d3c37){logger[_0x2e08('0x22')](_0x2e08('0x48'),_0x3d3c37[_0x2e08('0x37')]);}};Acw[_0x2e08('0x38')]['syncAttendedTransfer']=function(_0x17d5e7){try{if(!_[_0x2e08('0x49')](this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4a')]])){this['startAcw'](_0x17d5e7['transfereeuniqueid']);if(this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4b')]]){this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4b')]][_0x2e08('0x2c')]=!![];this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4c')]]=this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4b')]];delete this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4b')]];}}else if(!_[_0x2e08('0x49')](this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4c')]])){this[_0x2e08('0x24')](_0x17d5e7[_0x2e08('0x4c')]);if(this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4d')]]){this[_0x2e08('0x9')][_0x17d5e7['origtransfereruniqueid']][_0x2e08('0x2c')]=!![];this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4a')]]=this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4d')]];delete this[_0x2e08('0x9')][_0x17d5e7[_0x2e08('0x4d')]];}}}catch(_0x52278f){logger[_0x2e08('0x22')](_0x2e08('0x4e'),_0x52278f[_0x2e08('0x37')]);}};Acw[_0x2e08('0x38')][_0x2e08('0x16')]=function(_0x1c8607){try{if(this[_0x2e08('0x9')][_0x1c8607[_0x2e08('0x4f')]]){logger[_0x2e08('0x20')](_0x2e08('0x50'),JSON['stringify'](_0x1c8607[_0x2e08('0x4f')]));this[_0x2e08('0x24')](_0x1c8607['transfereruniqueid']);}else if(this[_0x2e08('0x9')][_0x1c8607[_0x2e08('0x51')]]){logger['info'](_0x2e08('0x52'),JSON[_0x2e08('0x3f')](_0x1c8607[_0x2e08('0x51')]));this[_0x2e08('0x24')](_0x1c8607['transfererlinkedid']);}}catch(_0x286dd9){logger[_0x2e08('0x22')](_0x2e08('0x53'),_0x286dd9[_0x2e08('0x37')]);}};Acw['prototype'][_0x2e08('0x12')]=function(_0x40c104){try{if(this[_0x2e08('0x6')][_0x40c104[_0x2e08('0x26')]]&&this['voiceQueues'][_0x40c104[_0x2e08('0x26')]][_0x2e08('0x54')]===_0x2e08('0x55')){if(this[_0x2e08('0x7')][_0x40c104[_0x2e08('0x25')]]){logger[_0x2e08('0x20')](_0x2e08('0x56'),_0x40c104[_0x2e08('0x1e')],_0x40c104[_0x2e08('0x25')],_0x40c104[_0x2e08('0x26')]);return RpcUser[_0x2e08('0x57')](this[_0x2e08('0x7')][_0x40c104[_0x2e08('0x25')]],_0x2e08('0x58'),_0x40c104['uniqueid']);}}}catch(_0x5c1e4e){logger['error'](_0x2e08('0x59'),_0x5c1e4e[_0x2e08('0x37')]);}};module[_0x2e08('0x5a')]=Acw;
\ No newline at end of file
index 14d1143..af9c317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e7=['password','keepConnected','Action','promisify','action','format','username','inspect','error','sipshowregistry','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','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','actionSipShowRegistry','actionDeviceStateList','[ami.js][fullybooted]','close','exports','../../config/logger','ami','../../config/environment','port','asterisk'];(function(_0x43d16c,_0x2b5447){var _0x208cce=function(_0x371720){while(--_0x371720){_0x43d16c['push'](_0x43d16c['shift']());}};_0x208cce(++_0x2b5447);}(_0x70e7,0x67));var _0x770e=function(_0x169482,_0x8c4ecd){_0x169482=_0x169482-0x0;var _0x3d4ac1=_0x70e7[_0x169482];return _0x3d4ac1;};'use strict';var Manager=require('asterisk-manager');var BPromise=require('bluebird');var util=require('util');var logger=require(_0x770e('0x0'))(_0x770e('0x1'));var config=require(_0x770e('0x2'));var ami=new Manager(config['asterisk'][_0x770e('0x3')],config[_0x770e('0x4')]['ip'],config[_0x770e('0x4')]['username'],config[_0x770e('0x4')][_0x770e('0x5')],!![]);ami[_0x770e('0x6')]();ami[_0x770e('0x7')]=BPromise[_0x770e('0x8')](ami[_0x770e('0x9')]);function error(_0x19dbc7){logger['error'](util[_0x770e('0xa')]('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config[_0x770e('0x4')][_0x770e('0xb')],config['asterisk']['ip'],config[_0x770e('0x4')][_0x770e('0x3')],util[_0x770e('0xc')](_0x19dbc7,![],null)));}function close(){logger[_0x770e('0xd')](util[_0x770e('0xa')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0x770e('0x4')][_0x770e('0xb')],config[_0x770e('0x4')]['ip'],config[_0x770e('0x4')][_0x770e('0x3')]));}ami['actionSipShowRegistry']=function(){return function(){return ami['Action']({'action':_0x770e('0xe')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x770e('0x7')]({'action':_0x770e('0xf')});};};ami[_0x770e('0x10')]=function(){return function(){return ami[_0x770e('0x7')]({'action':_0x770e('0x11')});};};ami[_0x770e('0x12')]=function(){return function(){return ami['Action']({'action':_0x770e('0x13')});};};ami[_0x770e('0x14')]=function(){return function(){return ami[_0x770e('0x7')]({'action':_0x770e('0x15')});};};function connect(){logger[_0x770e('0x16')](util[_0x770e('0xa')](_0x770e('0x17'),config['asterisk'][_0x770e('0xb')],config[_0x770e('0x4')]['ip'],config[_0x770e('0x4')][_0x770e('0x3')]));ami[_0x770e('0x18')](_0x770e('0xd'),error);ami[_0x770e('0x18')]('close',close);}ami['on'](_0x770e('0x19'),connect);ami['on']('shutdown',function(_0xd0eb22){logger['info'](util[_0x770e('0xa')](_0x770e('0x1a'),config['asterisk'][_0x770e('0xb')],config[_0x770e('0x4')]['ip'],config[_0x770e('0x4')][_0x770e('0x3')],util['inspect'](_0xd0eb22,![],null)));});ami['on'](_0x770e('0x1b'),function(){logger[_0x770e('0x16')](util['format'](_0x770e('0x1c'),config[_0x770e('0x4')][_0x770e('0xb')],config[_0x770e('0x4')]['ip'],config[_0x770e('0x4')][_0x770e('0x3')]));return Promise[_0x770e('0x1d')]()[_0x770e('0x1e')](ami[_0x770e('0x1f')]())[_0x770e('0x1e')](ami[_0x770e('0x20')]())[_0x770e('0x1e')](ami[_0x770e('0x10')]())[_0x770e('0x1e')](ami[_0x770e('0x12')]())[_0x770e('0x1e')](ami[_0x770e('0x14')]())['catch'](function(_0x5345c7){logger[_0x770e('0xd')](_0x770e('0x21'),util[_0x770e('0xc')](_0x5345c7,{'showHidden':![],'depth':null}));});});ami[_0x770e('0x18')]('error',error);ami[_0x770e('0x18')](_0x770e('0x22'),close);module[_0x770e('0x23')]=ami;
\ No newline at end of file
+var _0x1334=['Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','connect','shutdown','inspect','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionDeviceStateList','actionQueueSummary','catch','close','exports','asterisk-manager','bluebird','util','../../config/logger','ami','../../config/environment','port','asterisk','Action','promisify','error','format','username','actionSipShowRegistry','sipshowregistry','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info'];(function(_0x4fbd85,_0x26945a){var _0x3341da=function(_0xeeb51){while(--_0xeeb51){_0x4fbd85['push'](_0x4fbd85['shift']());}};_0x3341da(++_0x26945a);}(_0x1334,0x1a5));var _0x4133=function(_0xcfeff4,_0x3f2e19){_0xcfeff4=_0xcfeff4-0x0;var _0xb2fadc=_0x1334[_0xcfeff4];return _0xb2fadc;};'use strict';var Manager=require(_0x4133('0x0'));var BPromise=require(_0x4133('0x1'));var util=require(_0x4133('0x2'));var logger=require(_0x4133('0x3'))(_0x4133('0x4'));var config=require(_0x4133('0x5'));var ami=new Manager(config['asterisk'][_0x4133('0x6')],config[_0x4133('0x7')]['ip'],config[_0x4133('0x7')]['username'],config[_0x4133('0x7')]['password'],!![]);ami['keepConnected']();ami[_0x4133('0x8')]=BPromise[_0x4133('0x9')](ami['action']);function error(_0x458b97){logger[_0x4133('0xa')](util[_0x4133('0xb')]('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config[_0x4133('0x7')][_0x4133('0xc')],config['asterisk']['ip'],config['asterisk'][_0x4133('0x6')],util['inspect'](_0x458b97,![],null)));}function close(){logger['error'](util[_0x4133('0xb')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0x4133('0x7')][_0x4133('0xc')],config[_0x4133('0x7')]['ip'],config['asterisk'][_0x4133('0x6')]));}ami[_0x4133('0xd')]=function(){return function(){return ami[_0x4133('0x8')]({'action':_0x4133('0xe')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x4133('0x8')]({'action':'devicestatelist'});};};ami[_0x4133('0xf')]=function(){return function(){return ami[_0x4133('0x8')]({'action':_0x4133('0x10')});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x4133('0x8')]({'action':_0x4133('0x11')});};};ami[_0x4133('0x12')]=function(){return function(){return ami['Action']({'action':_0x4133('0x13')});};};function connect(){logger[_0x4133('0x14')](util['format'](_0x4133('0x15'),config[_0x4133('0x7')][_0x4133('0xc')],config[_0x4133('0x7')]['ip'],config[_0x4133('0x7')]['port']));ami['once'](_0x4133('0xa'),error);ami[_0x4133('0x16')]('close',close);}ami['on'](_0x4133('0x17'),connect);ami['on'](_0x4133('0x18'),function(_0x142fcd){logger['info'](util[_0x4133('0xb')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0x4133('0x7')][_0x4133('0xc')],config['asterisk']['ip'],config[_0x4133('0x7')]['port'],util[_0x4133('0x19')](_0x142fcd,![],null)));});ami['on']('fullybooted',function(){logger[_0x4133('0x14')](util['format'](_0x4133('0x1a'),config[_0x4133('0x7')][_0x4133('0xc')],config[_0x4133('0x7')]['ip'],config['asterisk'][_0x4133('0x6')]));return Promise[_0x4133('0x1b')]()[_0x4133('0x1c')](ami[_0x4133('0xd')]())[_0x4133('0x1c')](ami[_0x4133('0x1d')]())[_0x4133('0x1c')](ami[_0x4133('0xf')]())[_0x4133('0x1c')](ami[_0x4133('0x1e')]())[_0x4133('0x1c')](ami['actionCoreShowChannels']())[_0x4133('0x1f')](function(_0x36c417){logger[_0x4133('0xa')]('[ami.js][fullybooted]',util['inspect'](_0x36c417,{'showHidden':![],'depth':null}));});});ami[_0x4133('0x16')](_0x4133('0xa'),error);ami['once'](_0x4133('0x20'),close);module[_0x4133('0x21')]=ami;
\ No newline at end of file
index 5112387..21a82c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','request','then','debug','rpc','memberReport','error','message'];(function(_0x2c27ed,_0x5c50f0){var _0x597bd1=function(_0xd6db18){while(--_0xd6db18){_0x2c27ed['push'](_0x2c27ed['shift']());}};_0x597bd1(++_0x5c50f0);}(_0xe706,0xa3));var _0x6e70=function(_0x5dc03e,_0x54e60c){_0x5dc03e=_0x5dc03e-0x0;var _0x466a07=_0xe706[_0x5dc03e];return _0x466a07;};'use strict';var jayson=require(_0x6e70('0x0'));var BPromise=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('ami');var client=jayson[_0x6e70('0x3')][_0x6e70('0x4')]({'port':0x2329});client[_0x6e70('0x5')]=function(_0x7dfbc3,_0x142c27){return new BPromise(function(_0x2164a4,_0x376a8d){return client[_0x6e70('0x6')](_0x7dfbc3,_0x142c27)[_0x6e70('0x7')](function(_0x4381d1){logger[_0x6e70('0x8')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x142c27,_0x4381d1);if(_0x4381d1[_0x6e70('0xb')]){logger[_0x6e70('0xb')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')],_0x142c27);return _0x376a8d(_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')]);}else{return _0x2164a4(_0x4381d1[_0x6e70('0xd')]);}})[_0x6e70('0xe')](function(_0x4600f9){logger['error']('rpc',_0x6e70('0xa'),_0x7dfbc3,_0x4600f9,_0x142c27);return _0x376a8d(_0x4600f9);});});};module[_0x6e70('0xf')]=client;
\ No newline at end of file
+var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x4f3b2d,_0x3bbf46){var _0x3dddfa=function(_0xb8179a){while(--_0xb8179a){_0x4f3b2d['push'](_0x4f3b2d['shift']());}};_0x3dddfa(++_0x3bbf46);}(_0xb7e7,0x121));var _0x7b7e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb7e7[_0x20a584];return _0x4b41a8;};'use strict';var jayson=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b7e('0x1'))('ami');var client=jayson[_0x7b7e('0x2')]['http']({'port':0x2329});client[_0x7b7e('0x3')]=function(_0x556d68,_0x31d0ed){return new BPromise(function(_0x118577,_0x1d9384){return client['request'](_0x556d68,_0x31d0ed)['then'](function(_0x333fa4){logger[_0x7b7e('0x4')](_0x7b7e('0x5'),'memberReport',_0x556d68,_0x31d0ed,_0x333fa4);if(_0x333fa4[_0x7b7e('0x6')]){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x333fa4[_0x7b7e('0x6')][_0x7b7e('0x8')],_0x31d0ed);return _0x1d9384(_0x333fa4[_0x7b7e('0x6')]['message']);}else{return _0x118577(_0x333fa4[_0x7b7e('0x9')]);}})[_0x7b7e('0xa')](function(_0x10a666){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x10a666,_0x31d0ed);return _0x1d9384(_0x10a666);});});};module[_0x7b7e('0xb')]=client;
\ No newline at end of file
index 84956ff..437e390 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5835=['contactAgent-idHopper:\x20','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','getQueue','response','Success','[callProgressDetecting]\x20','variable','amdstatus','exten','dialAMDActive','value','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','emit','[syncAgentComplete][createHistory][0]','countbusyretry','countnosuchnumberretry','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','[rescheduleContact][Machine]','saveInDb','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countcongestionretry','countnoanswerretry','dialGlobalMaxRetry','stateGlobal','add','ivrAnswerCallsDay','[syncHangupIvr]','AnswerAGI','AGI','dialQueueProject','cause-txt','Unknow','[syncHangupIvr][createHistory]','running','statusMessage','getQueueCampaignStatusMessage','pTalking','ACTIVE','[syncQueueSummary]','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','assign','filter','dialPreviewRecallmeReminder','online','length','handlePreviewRecallNotifications','map','Agent','user:%s','user:dialPreviewRecallReminder','clearZombieChannels','[uniqueid]','[actions]','undefined','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','UserId','[emptyContact][createHistory]','[emptyContact]','[syncAgentComplete][createHistory]','[syncQueueCallerAbandon]\x20[Drop]','checkPreviewRecallReminder','launchHandleIvr','handleIvr','object','originate','voiceQueue\x20is\x20undefine','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','isOutboundQueue','\x22%s,%s%s,,,%s\x22','dialQueueOptions','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','setXMDContactVariables','Contact','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','callerid','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','phone','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','xcally-motion-dialer','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','checkRetriveMax','countagentrejectretry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialNoSuchNumberMaxRetry','[rescheduleContact][NoSuchNumber]','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','nosuchnumber','dialNoSuchNumberRetryFrequency','reason\x200\x20no\x20such\x20number....','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','outboundUnknownCallsDay','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','predictiveIntervalMaxThreshold','round','predictiveIntervalAvailable','predictiveIntervalMinThreshold','available','talking','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','predictiveIntervalErlangCallsDroppedCalls','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','avgHandleTime','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','predictiveIntervalDroppedCallsCallersExit','dialPredictiveOptimizationPercentage','abandonmentRate','agentBusyFactor','Unknown\x20Predictive','[getDataPredictive]','getDataPredictiveOld','loggedIn','predictiveIntervalPauses','outboundQueuePauses','predictiveIntervalHitRate','[CatchErlangB]','getVoiceQueueRtPauses','busyFactor','check\x20failure','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','actionOriginate','dialRecallMeTimeout','voicePause','dialRecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][MoveBlacklist]','limitCalls','getContactDialerIvr','checkContactEmpty','[getContactCampaign2][Empty]','emptyContact','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','countReScheduled','[countReScheduled]\x20','RUNNING','[getContactDialer2]','tryOriginatePredictive','dialOrderByScheduledAt','checkIsBlackList','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','p\x20=\x20','interval\x20=\x20','erlangb','----\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','util','uuid','moment','ioredis','./utils','./utils/hopper','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','defaults','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/voiceQueueRt','../rpc/setting','../rpc/interval','./models/history','./models/final','./models/agentComplete','./models/queueCallerAbandon','XCALLY_IP_AGI','127.0.0.1','prototype','enqueue','tail','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','uniqueId','optionPredictive','startProgressive','ivrOriginated','queuesSummary','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','syncQueueSummaryComplete','hangup','syncHangup','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','isUndefined','type','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','voice:queue:%s','name','voice_queue:save','-----\x20Stats\x20Predictive\x20---','info','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAnsweredCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','predictiveIntervalAvgTalktime','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---------','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','erlangBusyFactor','merge','getSeconds','startProgressive\x20value\x20cleared','startPredictive','startPredictive\x20value\x20cleared','handlePredictive','handlePredictive\x20interval\x20cleared','error','inspect','checkContactLowerLimitOriginate','temp','message','CAMPAIGN_STATUS','[getContactDialer2][ReScheduled]','contactsRescheduled','[getContactDialer2][Empty]','statedesc','endtime','starttime','queueStatusComplete','[unlockQueueStatus][undefined]','stringify','pick','Interval','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','isIVRCampaignActive','INACTIVE','isIVRCampaign','format','campaign:ivr:%s','campaign:save','sendMessageOneNotActive','originated','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','is\x20disactive','[ifTime][Action]','Error','isTrunkReachable','active','SIP/%s','status','reachable','unmonitored','checkIsTrunkReachable','Trunk','TrunkBackup','TRUNK_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTimeIntervals','ifTimeIvr','ifTime','Failure','EMPTY_INTERVAL','\x20Intervals\x20is\x20empty\x20','timezones','UNKNOWN_TIMEZONE','isArray','push','command','iftime\x20%s,%s','content','true','Action','catch','some','OVERTIME_GLOBAL_INTERVAL','OVERTIME_INTERVAL','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','syncCampaigns','resolve','checkIfTime','dialTimezone','[syncCampaigns]','checkDialMethod','dialMethod','progressive','handlePower','power','dialPowerLevel','Queue','dialGlobalInterval','silly','Dialer::ifTime()','Voice\x20Queue\x20%s\x20$s','\x20Interval\x20is\x20overtime:\x20','isGlobal','AMI\x20IfTime','queue','uniqueid','ivr','YYYY-MM-DD\x20HH:mm:ss','outboundAnswerCallsDay','reason','agiafterat','dialAgiAfterHangupAgent','createHistory','moveContactManagedDialer','[syncAgentComplete]','updateOriginated','droptime','responsetime','predictiveIntervalDroppedCallsTimeout','outboundDropCallsDayTimeout','state','Drop','dropreason','dialQueueProject2','countdropretry','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','additional','dialDropMaxRetry','queueCallerAbandonCreateState','rescheduleContact','minutes','ContactId','VoiceQueueId','CampaignId','[rescheduleContact][Drop]','calleridname','calleridnum','swapAdditionalPhones','Abandoned','CALLEREXIT','countabandonedretry','countglobal','verifyAdditionalPhones','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','channel','actionid','strategy','locked','rrmemory','stateinterface','isNil','queueBooked','idHopper','paused','roundrobin','run','finally','ListId','[unlock][syncQueueStatusComplete]','queueBookedRR','unlockRR','[booked][RR]','Agent:\x20'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x5835,0x115));var _0x5583=function(_0x54e62a,_0x49f734){_0x54e62a=_0x54e62a-0x0;var _0x141999=_0x5835[_0x54e62a];return _0x141999;};'use strict';var util=require(_0x5583('0x0'));var _=require('lodash');var uuid=require(_0x5583('0x1'));var moment=require(_0x5583('0x2'));var rr=require('rr');var Redis=require(_0x5583('0x3'));var utils=require(_0x5583('0x4'));var hopperUtils=require(_0x5583('0x5'));var ut=require('../preview/util/util');var config=require(_0x5583('0x6'));var logger=require(_0x5583('0x7'))(_0x5583('0x8'));var loggerBooked=require('../../../config/logger')(_0x5583('0x9'));var loggerPredictive=require(_0x5583('0x7'))(_0x5583('0xa'));var loggerPredictiveCalls=require('../../../config/logger')(_0x5583('0xb'));var loggerSyncQueueSummary=require(_0x5583('0x7'))(_0x5583('0xc'));var ami=require('../ami');config['redis']=_[_0x5583('0xd')](config[_0x5583('0xe')],{'host':_0x5583('0xf'),'port':0x18eb});var io=require(_0x5583('0x10'))(new Redis(config[_0x5583('0xe')]));var cmHopper=require(_0x5583('0x11'));var voiceQueueRt=require(_0x5583('0x12'));var RpcSetting=require(_0x5583('0x13'));var Interval=require(_0x5583('0x14'));var Action=require('./models/action');var History=require(_0x5583('0x15'));var Final=require(_0x5583('0x16'));var AgentComplete=require(_0x5583('0x17'));var QueueCallerAbandon=require(_0x5583('0x18'));var Hangup=require('./models/hangup');var ipAgi=process['env'][_0x5583('0x19')]||_0x5583('0x1a');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x5583('0x1b')][_0x5583('0x1c')]=function(_0x2efd0d){this[_0x5583('0x1d')]=this[_0x5583('0x1d')]?this[_0x5583('0x1d')]['finally'](_0x2efd0d):_0x2efd0d();};function Dialer(_0x44d3a0,_0x50a3c5){this[_0x5583('0x1e')]=new Sequence();this[_0x5583('0x1f')]=_0x50a3c5;this['voiceQueues']=_0x44d3a0[_0x5583('0x20')];this[_0x5583('0x21')]=_0x44d3a0[_0x5583('0x21')];this[_0x5583('0x22')]=_0x44d3a0[_0x5583('0x22')];this[_0x5583('0x23')]=_0x44d3a0['trunks'];this[_0x5583('0x24')]=config[_0x5583('0x24')]||0x2;this[_0x5583('0x25')]={};this[_0x5583('0x26')]={};this['contactsId']={};this[_0x5583('0x27')]={};this[_0x5583('0x28')]={};this['startPredictive']={};this[_0x5583('0x29')]={};this[_0x5583('0x2a')]={};this['queueBooked']={};this['queueBookedRR']={};this[_0x5583('0x2b')]={};ami['on']('agentconnect',this[_0x5583('0x2c')][_0x5583('0x2d')](this));ami['on'](_0x5583('0x2e'),this[_0x5583('0x2f')]['bind'](this));ami['on'](_0x5583('0x30'),this[_0x5583('0x31')][_0x5583('0x2d')](this));ami['on'](_0x5583('0x32'),this[_0x5583('0x33')][_0x5583('0x2d')](this));ami['on']('custom:queuesummary',this[_0x5583('0xc')][_0x5583('0x2d')](this));ami['on']('custom:queuesummarycomplete',this[_0x5583('0x34')][_0x5583('0x2d')](this));ami['on'](_0x5583('0x35'),this[_0x5583('0x36')][_0x5583('0x2d')](this));ami['on']('newexten',this[_0x5583('0x37')][_0x5583('0x2d')](this));ami['on'](_0x5583('0x38'),this[_0x5583('0x39')][_0x5583('0x2d')](this));ami['on'](_0x5583('0x3a'),this[_0x5583('0x3b')][_0x5583('0x2d')](this));ami['on'](_0x5583('0x3c'),this[_0x5583('0x3d')][_0x5583('0x2d')](this));this[_0x5583('0x3e')]();this[_0x5583('0x3f')]();RpcSetting[_0x5583('0x40')]()[_0x5583('0x41')](function(_0x541ff4){previewRecallmeReminderInterval=_0x541ff4[_0x5583('0x42')];});}function isNotNull(_0x3461a0){return _0x3461a0!==null&&!_[_0x5583('0x43')](_0x3461a0);}function msgResponse(_0x1e523c,_0x559c2e,_0x3ac207){return{'action':_0x1e523c,'response':_0x559c2e,'message':_0x3ac207,'stack':_0x3ac207};}function emit(_0x1960ad,_0x4e9dda,_0x37657b){io['to'](_0x1960ad)['emit'](_0x4e9dda,_0x37657b);}function emitOutboundVoiceQueueSummary(_0x418143){if(_0x418143[_0x5583('0x44')]==='outbound'){logger[_0x5583('0x45')](_0x5583('0x46'),util['inspect'](_0x418143,{'showHidden':![],'depth':null}));emit(util['format'](_0x5583('0x47'),_0x418143[_0x5583('0x48')]),_0x5583('0x49'),_0x418143);}}function checkGetDataPredictive(_0x2e2260){if(isNotNull(_0x2e2260)&&!_['isEmpty'](_0x2e2260)){loggerPredictive['info'](_0x5583('0x4a'));loggerPredictive[_0x5583('0x4b')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2e2260[_0x5583('0x4c')]);loggerPredictive[_0x5583('0x4b')](_0x5583('0x4d'),_0x2e2260[_0x5583('0x4e')]);loggerPredictive[_0x5583('0x4b')](_0x5583('0x4f'),_0x2e2260['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0x5583('0x4b')](_0x5583('0x50'),_0x2e2260['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive['info'](_0x5583('0x51'),_0x2e2260[_0x5583('0x52')]);loggerPredictive['info'](_0x5583('0x53'),_0x2e2260['predictiveIntervalAvgTalktime']);loggerPredictive[_0x5583('0x4b')](_0x5583('0x54'));if(_0x2e2260[_0x5583('0x4c')]>0x0){if(!_[_0x5583('0x43')](_0x2e2260[_0x5583('0x55')])&&_0x2e2260[_0x5583('0x55')]>0x0){return!![];}loggerPredictive[_0x5583('0x4b')](_0x5583('0x56'));if(!_[_0x5583('0x43')](_0x2e2260[_0x5583('0x52')])&&_0x2e2260[_0x5583('0x52')]>0x0){return!![];}loggerPredictive[_0x5583('0x4b')](_0x5583('0x57'));}else{loggerPredictive[_0x5583('0x4b')](_0x5583('0x58'));}}else{loggerPredictive[_0x5583('0x4b')](_0x5583('0x59'));}return![];}function mergeDataErlangB(_0x469ade){return function(_0x1d4ffd){loggerPredictive[_0x5583('0x4b')](_0x5583('0x5a'));loggerPredictive[_0x5583('0x4b')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1d4ffd[_0x5583('0x5b')]);loggerPredictive[_0x5583('0x4b')](_0x5583('0x5c'),_0x1d4ffd[_0x5583('0x5d')]);loggerPredictive['info'](_0x5583('0x5e'),_0x1d4ffd[_0x5583('0x5f')]);loggerPredictive['info']('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1d4ffd[_0x5583('0x60')]);loggerPredictive[_0x5583('0x4b')](_0x5583('0x5e'),_0x1d4ffd['erlangAbandonmentRate']);loggerPredictive[_0x5583('0x4b')](_0x5583('0x54'));_[_0x5583('0x61')](_0x469ade,_0x1d4ffd);};}function ifInterval(_0x599717,_0x18ef53){if(_['isUndefined'](_0x18ef53)){return![];}return utils[_0x5583('0x62')](undefined,_0x18ef53)<_0x599717*0x3c;}function clearPredictiveAttributes(_0x464c44){if(_0x464c44['startProgressive']){_0x464c44[_0x5583('0x29')]=undefined;loggerPredictive[_0x5583('0x45')](_0x464c44[_0x5583('0x48')],_0x5583('0x63'));}if(_0x464c44[_0x5583('0x64')]){_0x464c44['startPredictive']=undefined;loggerPredictive['debug'](_0x464c44[_0x5583('0x48')],_0x5583('0x65'));}if(_0x464c44[_0x5583('0x66')]){clearInterval(_0x464c44[_0x5583('0x66')]);_0x464c44[_0x5583('0x66')]=undefined;loggerPredictive[_0x5583('0x45')](_0x464c44[_0x5583('0x48')],_0x5583('0x67'));}}function loggerCatchPredictive(_0x398614,_0x5132c4){return function(_0xa8d68d){loggerPredictive[_0x5583('0x68')](_0x5132c4[_0x5583('0x48')],_0x398614);loggerPredictive[_0x5583('0x68')](_0xa8d68d['stack']);clearPredictiveAttributes(_0x5132c4);};}function loggerCatch(_0x479dfc){return function(_0x1adacf){logger[_0x5583('0x68')](_0x479dfc,util[_0x5583('0x69')](_0x1adacf,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x6cb644,_0x419650,_0x59e568){return function(_0x23a632){utils[_0x5583('0x6a')](_0x419650,_0x59e568,0x0);_0x419650[_0x5583('0x6b')]=0x0;logger['error'](_0x6cb644,util['inspect'](_0x23a632,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x2d3141){return function(_0x35eb42){if(isNotNull(_0x35eb42)&&isNotNull(_0x35eb42[0x0])){if(_0x35eb42[0x0]['contactsRescheduled']>0x0){_0x2d3141[_0x5583('0x6c')]=utils[_0x5583('0x6d')]['CONTACTS_RESCHEDULED'];logger[_0x5583('0x4b')](_0x5583('0x6e')+_0x2d3141[_0x5583('0x48')],_0x35eb42[0x0][_0x5583('0x6f')],'contacts');}else{_0x2d3141[_0x5583('0x6c')]=utils[_0x5583('0x6d')]['NO_AVAILABLE_CONTACTS'];logger[_0x5583('0x4b')](_0x5583('0x70')+_0x2d3141[_0x5583('0x48')]);}}};}function createObjHistory(_0x4bb7f5,_0x2c8476,_0x30f3b7,_0x4f2540,_0x5c3680){_0x4bb7f5[_0x5583('0x6c')]=_0x30f3b7;var _0x5590a6=new Action(_0x4bb7f5,_0x2c8476);var _0x1edda1=new History(_0x5590a6);_0x1edda1['state']=_0x4f2540;_0x1edda1[_0x5583('0x71')]=_0x5c3680;_0x1edda1[_0x5583('0x72')]=_0x5590a6[_0x5583('0x73')];return _0x1edda1;}function unlockQueueStatus(_0x3ef3b3,_0xddccf5){setTimeout(function(){if(_[_0x5583('0x43')](_0x3ef3b3[_0x5583('0x74')])){loggerBooked['error'](_0x5583('0x75'),_0xddccf5);}_0x3ef3b3['queueStatusComplete']=!![];loggerBooked[_0x5583('0x4b')]('[booked][unlockQueueStatus]',_0xddccf5,JSON[_0x5583('0x76')](_[_0x5583('0x77')](_0x3ef3b3,[_0x5583('0x48'),'queueStatusComplete'])));},0x1f3);}function checkInterval(_0x2177a8){return function(){if(!isNotNull(_0x2177a8[_0x5583('0x78')])){_0x2177a8[_0x5583('0x6c')]=utils['CAMPAIGN_STATUS'][_0x5583('0x79')];throw _0x2177a8[_0x5583('0x48')]+_0x5583('0x7a');}if(!isNotNull(_0x2177a8[_0x5583('0x78')][_0x5583('0x7b')])){_0x2177a8['message']=utils['CAMPAIGN_STATUS'][_0x5583('0x79')];throw _0x2177a8[_0x5583('0x48')]+_0x5583('0x7a');}if(!isNotNull(_[_0x5583('0x7c')](_0x2177a8[_0x5583('0x78')]['Intervals']))){_0x2177a8[_0x5583('0x6c')]=utils[_0x5583('0x6d')]['NULL_INTERVAL'];throw _0x2177a8[_0x5583('0x48')]+'\x20INTERVAL_IS_NULL';}};}function checkIsIVRCampaignActive(_0x1b184b){return function(){if(!utils[_0x5583('0x7d')](_0x1b184b)){_0x1b184b[_0x5583('0x6c')]=utils[_0x5583('0x6d')][_0x5583('0x7e')];throw _0x1b184b[_0x5583('0x48')]+'\x20NOT\x20Active';}};}function emitCampaignSummary(_0x6dcdc0){if(utils[_0x5583('0x7f')](_0x6dcdc0)){emit(util[_0x5583('0x80')](_0x5583('0x81'),_0x6dcdc0['name']),_0x5583('0x82'),_0x6dcdc0);}}function loggerCatchQueueSummary(_0x5ed947,_0x34bdd5){return function(_0x16657c){clearPredictiveAttributes(_0x34bdd5);emitCampaignSummary(_0x34bdd5);loggerSyncQueueSummary[_0x5583('0x45')](_0x5ed947,util[_0x5583('0x69')](_0x16657c,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x344b3d){if(_0x344b3d[_0x5583('0x83')]){if(_0x344b3d[_0x5583('0x84')]===0x0){_0x344b3d[_0x5583('0x83')]=![];_0x344b3d[_0x5583('0x6c')]=utils[_0x5583('0x6d')]['INACTIVE'];loggerSyncQueueSummary['debug'](_0x5583('0x85'),_0x344b3d['name'],_0x5583('0x86'));}else{_0x344b3d[_0x5583('0x6c')]=utils[_0x5583('0x6d')]['DISACTIVED'];loggerSyncQueueSummary[_0x5583('0x45')](_0x5583('0x85'),_0x344b3d['name'],_0x5583('0x87'));}emitCampaignSummary(_0x344b3d);}}function myreject(_0x102d7f){return function(_0x5337e2){return _0x102d7f(msgResponse(_0x5583('0x88'),_0x5583('0x89'),JSON[_0x5583('0x76')](_0x5337e2)));};}Dialer[_0x5583('0x1b')][_0x5583('0x8a')]=function(_0xbdccfb){return!_[_0x5583('0x43')](_0xbdccfb)&&_0xbdccfb&&!_['isUndefined'](_0xbdccfb[_0x5583('0x48')])&&!_['isUndefined'](_0xbdccfb[_0x5583('0x8b')])&&_0xbdccfb[_0x5583('0x8b')]&&(this[_0x5583('0x23')][util[_0x5583('0x80')](_0x5583('0x8c'),_0xbdccfb[_0x5583('0x48')])][_0x5583('0x8d')]===_0x5583('0x8e')||this[_0x5583('0x23')][util[_0x5583('0x80')](_0x5583('0x8c'),_0xbdccfb[_0x5583('0x48')])]['status']===_0x5583('0x8f'));};Dialer['prototype'][_0x5583('0x90')]=function(_0x39d36e){var _0x13da23=this;return function(){if(!_0x13da23[_0x5583('0x8a')](_0x39d36e[_0x5583('0x91')])){if(!_0x13da23['isTrunkReachable'](_0x39d36e[_0x5583('0x92')])){_0x39d36e[_0x5583('0x6c')]=utils[_0x5583('0x6d')][_0x5583('0x93')];throw _0x39d36e[_0x5583('0x48')]+_0x5583('0x94');}}};};Dialer[_0x5583('0x1b')]['checkIfTime']=function(_0x5e1986,_0x1d0bc0,_0x1148c8,_0xe2079b){var _0x56f155=this;return function(){var _0x725049=!![];return _0x56f155['ifTimeIvr'](_0x5e1986,_0x1d0bc0,_0x1148c8,_0xe2079b,_0x725049);};};Dialer[_0x5583('0x1b')][_0x5583('0x95')]=function(_0x1d7583,_0x107dde,_0x422f48,_0x5d378a){var _0x5caeeb=this;return function(){var _0xc88256=![];return _0x5caeeb[_0x5583('0x96')](_0x1d7583[_0x5583('0x7b')],_0x107dde,_0x422f48,_0x5d378a,_0xc88256);};};Dialer[_0x5583('0x1b')][_0x5583('0x96')]=function(_0x26c6fb,_0x50dbf2,_0x39804e,_0x2c5f8d,_0x466b80){var _0x1c4318=[];return new Promise(function(_0x47567a,_0x63be7){if(!isNotNull(_0x26c6fb)){_0x2c5f8d[_0x5583('0x6c')]=utils[_0x5583('0x6d')][_0x5583('0x79')];return _0x63be7(msgResponse(_0x5583('0x97'),_0x5583('0x98'),_0x39804e+'\x20Intervals\x20is\x20null\x20'));}if(_[_0x5583('0x7c')](_0x26c6fb)){_0x2c5f8d[_0x5583('0x6c')]=utils[_0x5583('0x6d')][_0x5583('0x99')];return _0x63be7(msgResponse(_0x5583('0x97'),_0x5583('0x98'),_0x39804e+_0x5583('0x9a')));}if(_0x50dbf2&&_[_0x5583('0x43')](config[_0x5583('0x9b')][_0x50dbf2])){_0x2c5f8d[_0x5583('0x6c')]=utils[_0x5583('0x6d')][_0x5583('0x9c')];return _0x63be7(msgResponse(_0x5583('0x97'),_0x5583('0x98'),_0x39804e+'\x20Timezone\x20unknow\x20'+_0x50dbf2));}if(_[_0x5583('0x9d')](_0x26c6fb)){for(var _0x66fab=0x0;_0x66fab<_0x26c6fb['length'];_0x66fab+=0x1){_0x1c4318[_0x5583('0x9e')](ami['Action']({'action':_0x5583('0x9f'),'command':util[_0x5583('0x80')](_0x5583('0xa0'),_0x26c6fb[_0x66fab]['interval'],!_[_0x5583('0x43')](config[_0x5583('0x9b')][_0x50dbf2])?_0x50dbf2:'')})['then'](function(_0x757f8b){return _0x757f8b[_0x5583('0xa1')]['indexOf'](_0x5583('0xa2'))>=0x0;})['catch'](myreject(_0x63be7)));}}else{_0x1c4318['push'](ami[_0x5583('0xa3')]({'action':_0x5583('0x9f'),'command':util['format'](_0x5583('0xa0'),_0x26c6fb,!_['isUndefined'](config[_0x5583('0x9b')][_0x50dbf2])?_0x50dbf2:'')})[_0x5583('0x41')](function(_0xd35836){return _0xd35836['content']['indexOf'](_0x5583('0xa2'))>=0x0;})[_0x5583('0xa4')](myreject(_0x63be7)));}Promise['all'](_0x1c4318)[_0x5583('0x41')](function(_0x23f539){var _0x44aef3=_[_0x5583('0xa5')](_0x23f539);if(_0x44aef3){return _0x47567a(_0x44aef3);}else{_0x2c5f8d[_0x5583('0x6c')]=_0x466b80?utils['CAMPAIGN_STATUS'][_0x5583('0xa6')]:utils[_0x5583('0x6d')][_0x5583('0xa7')];return _0x63be7(msgResponse(_0x5583('0xa8'),_0x5583('0x98'),_0x5583('0xa9')+_0x466b80+'\x20'+_0x39804e+'\x20Interval\x20is\x20overtime:\x20'+util[_0x5583('0x69')](_0x26c6fb,{'showHidden':![],'depth':null})+_0x5583('0xaa')+_0x50dbf2));}})[_0x5583('0xa4')](function(_0x383c89){return _0x63be7(msgResponse(_0x5583('0x97'),_0x5583('0x98'),JSON['stringify'](_0x383c89)));});});};Dialer[_0x5583('0x1b')][_0x5583('0x3e')]=function(){var _0x1cfaa3=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})[_0x5583('0x41')](function(){setInterval(function(){_0x1cfaa3['syncCampaigns']();},0x3e8);});};Dialer['prototype'][_0x5583('0xab')]=function(){var _0x1690c3=this;var _0x26c7d4;for(var _0xddd645 in this[_0x5583('0x21')]){if(typeof this['campaigns'][_0xddd645]!=='undefined'){_0x26c7d4=this[_0x5583('0x21')][_0xddd645];if(utils[_0x5583('0x7f')](_0x26c7d4)&&utils[_0x5583('0x7d')](_0x26c7d4)){_0x26c7d4[_0x5583('0x83')]=!![];Promise[_0x5583('0xac')]()['then'](checkIsIVRCampaignActive(_0x26c7d4))['then'](checkInterval(_0x26c7d4))[_0x5583('0x41')](_0x1690c3[_0x5583('0x90')](_0x26c7d4))[_0x5583('0x41')](_0x1690c3[_0x5583('0xad')](_0x26c7d4['dialGlobalInterval'],_0x26c7d4[_0x5583('0xae')],_0x26c7d4[_0x5583('0x48')],_0x26c7d4))[_0x5583('0x41')](_0x1690c3['checkIfTimeIntervals'](_0x26c7d4[_0x5583('0x78')],_0x26c7d4[_0x5583('0xae')],_0x26c7d4[_0x5583('0x48')],_0x26c7d4))[_0x5583('0x41')](_0x1690c3['launchHandleIvr'](_0x26c7d4))[_0x5583('0xa4')](loggerCatchQueueSummary(_0x5583('0xaf'),_0x26c7d4));}else{notSendMessagesCampaign(_0x26c7d4);}}}};Dialer[_0x5583('0x1b')][_0x5583('0xb0')]=function(_0x18f865){if(_0x18f865[_0x5583('0xb1')]!==_0x5583('0xa')){clearPredictiveAttributes(_0x18f865);}switch(_0x18f865[_0x5583('0xb1')]){case _0x5583('0xb2'):this[_0x5583('0xb3')](_0x18f865,0x1);break;case _0x5583('0xb4'):this['handlePower'](_0x18f865,_0x18f865[_0x5583('0xb5')]);break;case _0x5583('0xa'):this[_0x5583('0xa')](_0x18f865);break;case'booked':this['handlePower'](_0x18f865,0x1);break;default:logger[_0x5583('0x68')](_0x5583('0xb6'),_0x18f865[_0x5583('0x48')],'method\x20not\x20recognized');}};Dialer['prototype'][_0x5583('0x97')]=function(_0x1a5b2a,_0x4ab717){var _0x12747d=_0x1a5b2a[_0x5583('0xae')];var _0x4a4d81=_0x4ab717?_0x1a5b2a[_0x5583('0xb7')]:_0x1a5b2a['Interval'][_0x5583('0x7b')];logger[_0x5583('0xb8')](_0x5583('0xb9'),_0x4a4d81,_0x12747d,_0x1a5b2a[_0x5583('0x48')],util['format'](_0x5583('0xba'),_0x1a5b2a[_0x5583('0x48')],_0x1a5b2a['id']));var _0x20c793=null;return Interval['intervalIftime'](_0x4a4d81,_0x12747d)['then'](function(_0x11fcbf){if(_0x11fcbf===!![]){return _0x11fcbf;}else{_0x1a5b2a[_0x5583('0x6c')]=_0x4ab717?utils[_0x5583('0x6d')][_0x5583('0xa6')]:utils[_0x5583('0x6d')][_0x5583('0xa7')];_0x20c793=msgResponse(_0x5583('0xa8'),_0x5583('0x98'),_0x5583('0xa9')+_0x4ab717+'\x20'+_0x1a5b2a[_0x5583('0x48')]+_0x5583('0xbb')+util[_0x5583('0x69')](_0x4a4d81,{'showHidden':![],'depth':null})+_0x5583('0xaa')+_0x12747d);}if(_0x20c793!==null){logger[_0x5583('0xb8')]('Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:',_0x20c793);_0x20c793[_0x5583('0xbc')]=_0x4ab717;throw _0x20c793;}})[_0x5583('0xa4')](function(_0x26404b){logger[_0x5583('0x68')](_0x5583('0xbd'),_0x26404b);throw msgResponse(_0x5583('0x88'),_0x5583('0x89'),util['inspect'](_0x26404b,{'showHidden':![],'depth':null}));});};Dialer[_0x5583('0x1b')][_0x5583('0x2c')]=function(_0x1c5baa){if(this[_0x5583('0x20')][_0x1c5baa[_0x5583('0xbe')]]){if(this[_0x5583('0x27')][_0x1c5baa[_0x5583('0xbf')]]&&this['uniqueId'][_0x1c5baa[_0x5583('0xbf')]][_0x5583('0x44')]!==_0x5583('0xc0')){this['updateOriginated'](this[_0x5583('0x20')][_0x1c5baa[_0x5583('0xbe')]]);this[_0x5583('0x27')][_0x1c5baa['uniqueid']]['answertime']=moment()[_0x5583('0x80')](_0x5583('0xc1'));}}};Dialer[_0x5583('0x1b')][_0x5583('0x33')]=function(_0x31ecff){var _0x185e9a=this[_0x5583('0x27')][_0x31ecff[_0x5583('0xbf')]];if(this[_0x5583('0x20')][_0x31ecff[_0x5583('0xbe')]]){if(_0x185e9a&&_0x185e9a[_0x5583('0x44')]!==_0x5583('0xc0')){delete this['uniqueId'][_0x31ecff[_0x5583('0xbf')]];this['voiceQueues'][_0x31ecff['queue']][_0x5583('0xc2')]+=0x1;var _0x1109c3=new AgentComplete(_0x185e9a,_0x31ecff);if(_0x31ecff[_0x5583('0xc3')]==='agent'){_0x1109c3[_0x5583('0xc4')]=this[_0x5583('0x20')][_0x31ecff[_0x5583('0xbe')]]['dialQueueProject2']&&this[_0x5583('0x20')][_0x31ecff[_0x5583('0xbe')]][_0x5583('0xc5')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;}hopperUtils[_0x5583('0xc6')](_0x1109c3)[_0x5583('0xa4')](loggerCatch('[syncAgentComplete][createHistory]'));hopperUtils[_0x5583('0xc7')](_0x1109c3)[_0x5583('0xa4')](loggerCatch(_0x5583('0xc8')));}}};Dialer[_0x5583('0x1b')]['syncQueueCallerAbandon']=function(_0x379d4e){var _0xf67a3a=this['uniqueId'][_0x379d4e[_0x5583('0xbf')]];var _0x2796be=this;var _0x159bc7=![];var _0x4d9163;var _0x246f58;if(this[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]]){if(_0xf67a3a&&_0xf67a3a[_0x5583('0x44')]!==_0x5583('0xc0')){delete this[_0x5583('0x27')][_0x379d4e['uniqueid']];this[_0x5583('0xc9')](this[_0x5583('0x20')][_0x379d4e['queue']]);_0xf67a3a[_0x5583('0xca')]=moment()[_0x5583('0x80')]('YYYY-MM-DD\x20HH:mm:ss');var _0x2143b9=new QueueCallerAbandon(_0xf67a3a,_0x379d4e);if(utils[_0x5583('0x62')](_0xf67a3a['droptime'],_0xf67a3a[_0x5583('0xcb')])>=_0xf67a3a['dialQueueTimeout']){this[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]][_0x5583('0xcc')]+=0x1;this[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]][_0x5583('0xcd')]+=0x1;this[_0x5583('0x20')][_0x379d4e['queue']]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x2143b9[_0x5583('0xce')]=0xa;_0x2143b9['statedesc']=_0x5583('0xcf');_0x2143b9[_0x5583('0xd0')]='TIMEOUT';_0x2143b9[_0x5583('0xc4')]=this['voiceQueues'][_0x379d4e['queue']][_0x5583('0xd1')]?moment()[_0x5583('0x80')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x2143b9[_0x5583('0xd2')]+=0x1;_0x2143b9['countglobal']+=0x1;_0x4d9163=this[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]][_0x5583('0xd3')];_0x246f58=this[_0x5583('0x20')][_0x379d4e['queue']][_0x5583('0xd4')];hopperUtils['verifyAdditionalPhones'](_0x2143b9,_0x2143b9[_0x5583('0xce')],_0xf67a3a[_0x5583('0xd5')])['then'](function(_0x1b68d6){_0x159bc7=_0x1b68d6[_0x5583('0xd6')]==0x1;if(_0x2143b9['countdropretry']>=_0x2796be[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]][_0x5583('0xd7')]){_0x2796be[_0x5583('0xd8')](_0x2143b9,_0x1b68d6[_0x5583('0xd6')]);}else{hopperUtils[_0x5583('0xd9')]({'active':![],'countdropretry':_0x2143b9[_0x5583('0xd2')],'scheduledat':moment()['add'](_0x2796be[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]][_0x5583('0xd3')],_0x5583('0xda'))[_0x5583('0x80')](_0x5583('0xc1')),'ContactId':_0xf67a3a[_0x5583('0xdb')],'ListId':_0xf67a3a['ListId'],'VoiceQueueId':_0xf67a3a[_0x5583('0xdc')]||undefined,'CampaignId':_0xf67a3a[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0xde')));var _0x49377f=new History(_0x2143b9);_0x49377f[_0x5583('0xce')]=0xa;_0x49377f[_0x5583('0x71')]=_0x5583('0xcf');_0x49377f['starttime']=moment()[_0x5583('0x80')]('YYYY-MM-DD\x20HH:mm:ss');_0x49377f[_0x5583('0x72')]=_0x49377f[_0x5583('0x73')];_0x49377f[_0x5583('0xdf')]=_0x2143b9['calleridname'];_0x49377f['calleridnum']=_0x2143b9[_0x5583('0xe0')];hopperUtils['createHistory'](_0x49377f)[_0x5583('0xa4')](loggerCatch('[syncAgentComplete][createHistory][10]'));}})[_0x5583('0x41')](function(){if(_0x159bc7)hopperUtils[_0x5583('0xe1')](_0x2143b9,_0x4d9163,_0x246f58)['then'](function(){return 0x1;});});}else{this[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this['voiceQueues'][_0x379d4e[_0x5583('0xbe')]]['outboundDropCallsDayCallersExit']+=0x1;_0x2143b9[_0x5583('0xce')]=0xb;_0x2143b9[_0x5583('0x71')]=_0x5583('0xe2');_0x2143b9[_0x5583('0xd0')]=_0x5583('0xe3');_0x2143b9[_0x5583('0xe4')]+=0x1;_0x2143b9[_0x5583('0xe5')]+=0x1;_0x4d9163=this[_0x5583('0x20')][_0x379d4e['queue']]['dialAbandonedRetryFrequency'];_0x246f58=this[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]][_0x5583('0xd4')];hopperUtils[_0x5583('0xe6')](_0x2143b9,_0x2143b9['state'],_0xf67a3a['voiceQueue'])['then'](function(_0x28a372){if(_0x2143b9[_0x5583('0xe4')]>=_0x2796be['voiceQueues'][_0x379d4e[_0x5583('0xbe')]][_0x5583('0xe7')]){_0x2796be['queueCallerAbandonCreateState'](_0x2143b9,_0x28a372['additional']);}else{hopperUtils['rescheduleContact']({'active':![],'countabandonedretry':_0x2143b9['countabandonedretry'],'scheduledat':moment()['add'](_0x2796be[_0x5583('0x20')][_0x379d4e[_0x5583('0xbe')]][_0x5583('0xe8')],_0x5583('0xda'))[_0x5583('0x80')](_0x5583('0xc1')),'ContactId':_0xf67a3a['ContactId'],'ListId':_0xf67a3a['ListId'],'VoiceQueueId':_0xf67a3a[_0x5583('0xdc')]||undefined,'CampaignId':_0xf67a3a[_0x5583('0xdd')]||undefined})['catch'](loggerCatch(_0x5583('0xe9')));var _0x579258=new History(_0x2143b9);_0x579258[_0x5583('0xce')]=0xb;_0x579258[_0x5583('0x71')]=_0x5583('0xe2');_0x579258['starttime']=moment()[_0x5583('0x80')](_0x5583('0xc1'));_0x579258[_0x5583('0x72')]=_0x579258['starttime'];_0x579258[_0x5583('0xdf')]=_0x2143b9['calleridname'];_0x579258[_0x5583('0xe0')]=_0x2143b9[_0x5583('0xe0')];hopperUtils[_0x5583('0xc6')](_0x579258)[_0x5583('0xa4')](loggerCatch(_0x5583('0xea')));}})[_0x5583('0x41')](function(){if(_0x159bc7)hopperUtils['swapAdditionalPhones'](_0x2143b9,_0x4d9163,_0x246f58)['then'](function(){return 0x1;});});}}}};Dialer[_0x5583('0x1b')][_0x5583('0x37')]=function(_0x3fcb70){if(this[_0x5583('0x26')][_0x3fcb70[_0x5583('0xbf')]]){this[_0x5583('0x26')][_0x3fcb70['uniqueid']][_0x5583('0xeb')]=_0x3fcb70[_0x5583('0xeb')];}if(this[_0x5583('0x27')][_0x3fcb70[_0x5583('0xbf')]]){this['uniqueId'][_0x3fcb70[_0x5583('0xbf')]]['channel']=_0x3fcb70[_0x5583('0xeb')];}};Dialer[_0x5583('0x1b')][_0x5583('0x3b')]=function(_0x640140){if(!this[_0x5583('0x26')][_0x640140[_0x5583('0xec')]]){return;}var _0x2cb5e5=this[_0x5583('0x20')][this['actions'][_0x640140['actionid']][_0x5583('0xbe')]][_0x5583('0xed')]||'rrmemory';if(_0x2cb5e5==='roundrobin'){if(this[_0x5583('0x26')][_0x640140['actionid']]&&_['isNil'](this[_0x5583('0x26')][_0x640140[_0x5583('0xec')]]['locked'])&&_0x640140['status']==='1'&&_0x640140['paused']==='0'){if(this[_0x5583('0x22')][_0x640140['stateinterface']]){if(!this[_0x5583('0x22')][_0x640140['stateinterface']][_0x5583('0xee')]){this[_0x5583('0x22')][_0x640140['stateinterface']][_0x5583('0xee')]=!![];this['actions'][_0x640140[_0x5583('0xec')]]['locked']=!![];this['actions'][_0x640140['actionid']]['stateinterface']=_0x640140['stateinterface'];}}}}else if(_0x2cb5e5===_0x5583('0xef')){if(this['actions'][_0x640140['actionid']]){if(this[_0x5583('0x22')][_0x640140[_0x5583('0xf0')]]){this['actions'][_0x640140[_0x5583('0xec')]][_0x5583('0xf0')]=_0x640140[_0x5583('0xf0')];if(_[_0x5583('0xf1')](this['queueBooked'][this['actions'][_0x640140[_0x5583('0xec')]][_0x5583('0xbe')]])){this['queueBooked'][this[_0x5583('0x26')][_0x640140['actionid']][_0x5583('0xbe')]]=[];}this[_0x5583('0xf2')][this[_0x5583('0x26')][_0x640140[_0x5583('0xec')]][_0x5583('0xbe')]][_0x5583('0x9e')](_[_0x5583('0x61')](_[_0x5583('0x77')](this[_0x5583('0x26')][_0x640140[_0x5583('0xec')]],[_0x5583('0xf3'),_0x5583('0xf0')]),{'status':_0x640140['status'],'paused':_0x640140[_0x5583('0xf4')]}));}}}};Dialer['prototype'][_0x5583('0x3d')]=function(_0x3da191){if(!this[_0x5583('0x26')][_0x3da191['actionid']]){return;}var _0x23682f=this;var _0x15335e=this[_0x5583('0x20')][this[_0x5583('0x26')][_0x3da191['actionid']][_0x5583('0xbe')]];var _0x2447e6=_0x15335e[_0x5583('0xed')]||_0x5583('0xef');if(_0x2447e6===_0x5583('0xf5')){if(this['actions'][_0x3da191[_0x5583('0xec')]]&&this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xf0')]){this[_0x5583('0x1f')][_0x5583('0xf6')](this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xf3')],this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xf0')])['catch'](function(_0x151108){logger[_0x5583('0x68')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x5583('0x69')](_0x151108,{'showHidden':![],'depth':null}));})[_0x5583('0xf7')](function(){_0x23682f[_0x5583('0xc9')](_0x23682f['voiceQueues'][_0x23682f[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]);_0x23682f[_0x5583('0x22')][_0x23682f[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xf0')]][_0x5583('0xee')]=![];delete _0x23682f[_0x5583('0x26')][_0x3da191['actionid']];unlockQueueStatus(_0x15335e);});}else{this[_0x5583('0xc9')](this[_0x5583('0x20')][this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]]['queue']]);hopperUtils[_0x5583('0xd9')]({'active':![],'ContactId':this['actions'][_0x3da191[_0x5583('0xec')]]['ContactId'],'ListId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xf8')],'VoiceQueueId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0xf9')));delete this['actions'][_0x3da191[_0x5583('0xec')]];unlockQueueStatus(_0x15335e);}}else if(_0x2447e6==='rrmemory'){var _0xbdd611;if(this['actions'][_0x3da191[_0x5583('0xec')]]&&!_['isEmpty'](this[_0x5583('0xf2')][this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]])){if(this[_0x5583('0xfa')][_0x23682f[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]){this[_0x5583('0xfa')][_0x23682f[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]=this['queueBookedRR'][this['actions'][_0x3da191[_0x5583('0xec')]]['queue']]?this[_0x5583('0xfa')][this['actions'][_0x3da191[_0x5583('0xec')]]['queue']]:this[_0x5583('0xf2')][this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]]['queue']]?this[_0x5583('0xf2')][this[_0x5583('0x26')][_0x3da191['actionid']][_0x5583('0xbe')]]['_rr']||0x0:0x0;}this[_0x5583('0xf2')][this[_0x5583('0x26')][_0x3da191['actionid']][_0x5583('0xbe')]]['_rr']=this[_0x5583('0xfa')][this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]];for(var _0x31238b=0x0;_0x31238b<this[_0x5583('0xf2')][this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]['length'];_0x31238b+=0x1){_0xbdd611=rr(this[_0x5583('0xf2')][this[_0x5583('0x26')][_0x3da191['actionid']][_0x5583('0xbe')]]);this[_0x5583('0xfa')][_0x23682f[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]=this[_0x5583('0xf2')][this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]['_rr'];if(_0xbdd611[_0x5583('0x8d')]==='1'&&_0xbdd611[_0x5583('0xf4')]==='0'){break;}}if(!_['isNil'](_0xbdd611)){this[_0x5583('0x22')][_0xbdd611[_0x5583('0xf0')]][_0x5583('0xfb')]=_['isUndefined'](this['agents'][_0xbdd611[_0x5583('0xf0')]][_0x5583('0xfb')])?!![]:this[_0x5583('0x22')][_0xbdd611[_0x5583('0xf0')]]['unlockRR'];}loggerBooked[_0x5583('0x4b')](_0x5583('0xfc'),_0x3da191[_0x5583('0xec')],_0x5583('0xfd'),JSON[_0x5583('0x76')](_[_0x5583('0x77')](this[_0x5583('0x22')][_0xbdd611['stateinterface']],[_0x5583('0x48'),'unlockRR'])),_0x5583('0xfe'),JSON['stringify'](_0xbdd611[_0x5583('0xf3')]));if(!_[_0x5583('0xf1')](_0xbdd611)&&_0xbdd611['status']==='1'&&_0xbdd611[_0x5583('0xf4')]==='0'&&this[_0x5583('0x22')][_0xbdd611['stateinterface']][_0x5583('0xfb')]){this['agents'][_0xbdd611[_0x5583('0xf0')]][_0x5583('0xfb')]=![];this['queueBooked'][_0x23682f[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]=[];this[_0x5583('0x1f')]['run'](_0xbdd611[_0x5583('0xf3')],_0xbdd611[_0x5583('0xf0')])[_0x5583('0xa4')](function(_0x33a4de){logger[_0x5583('0x68')](_0x5583('0xff'),util[_0x5583('0x69')](_0x33a4de,{'showHidden':![],'depth':null}));})[_0x5583('0xf7')](function(){_0x23682f['updateOriginated'](_0x23682f[_0x5583('0x20')][_0x23682f[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]);setTimeout(function(){_0x23682f[_0x5583('0x22')][_0xbdd611[_0x5583('0xf0')]][_0x5583('0xfb')]=!![];loggerBooked[_0x5583('0x4b')](_0x5583('0x100'),_0x3da191['actionid'],_0x5583('0xfd'),JSON['stringify'](_[_0x5583('0x77')](_0x23682f['agents'][_0xbdd611[_0x5583('0xf0')]],[_0x5583('0x48'),_0x5583('0xfb')])),_0x5583('0xfe'),JSON[_0x5583('0x76')](_0xbdd611[_0x5583('0xf3')]));},0xc7);delete _0x23682f[_0x5583('0x26')][_0x3da191['actionid']];unlockQueueStatus(_0x15335e,_0x3da191[_0x5583('0xec')]);});}else{loggerBooked[_0x5583('0x4b')](_0x5583('0x101'));this[_0x5583('0xc9')](this['voiceQueues'][this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]);hopperUtils[_0x5583('0xd9')]({'active':![],'ContactId':this[_0x5583('0x26')][_0x3da191['actionid']][_0x5583('0xdb')],'ListId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xf8')],'VoiceQueueId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xdc')]||undefined,'CampaignId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xdd')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]];unlockQueueStatus(_0x15335e);}}else{loggerBooked['info'](_0x5583('0x102'));this[_0x5583('0xc9')](this['voiceQueues'][this[_0x5583('0x26')][_0x3da191['actionid']][_0x5583('0xbe')]]);hopperUtils['rescheduleContact']({'active':![],'ContactId':this[_0x5583('0x26')][_0x3da191['actionid']][_0x5583('0xdb')],'ListId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xf8')],'VoiceQueueId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xdc')]||undefined,'CampaignId':this['actions'][_0x3da191['actionid']]['CampaignId']||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0x103')));delete this['actions'][_0x3da191[_0x5583('0xec')]];unlockQueueStatus(_0x15335e);}}else{loggerBooked[_0x5583('0x4b')](_0x5583('0x104'));this[_0x5583('0xc9')](this[_0x5583('0x20')][this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xbe')]]);hopperUtils['rescheduleContact']({'active':![],'ContactId':this[_0x5583('0x26')][_0x3da191['actionid']][_0x5583('0xdb')],'ListId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xf8')],'VoiceQueueId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xdc')]||undefined,'CampaignId':this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]][_0x5583('0xdd')]||undefined})['catch'](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x5583('0x26')][_0x3da191[_0x5583('0xec')]];unlockQueueStatus(_0x15335e);}};Dialer[_0x5583('0x1b')]['syncOriginateResponse']=function(_0x702217){var _0x28afb5=this[_0x5583('0x26')][_0x702217[_0x5583('0xec')]];if(_0x28afb5){delete this[_0x5583('0x26')][_0x702217[_0x5583('0xec')]];_0x28afb5['responsetime']=moment()[_0x5583('0x80')](_0x5583('0xc1'));var _0x395ff6=_0x28afb5['type']===_0x5583('0xc0')?this[_0x5583('0x21')][_0x28afb5['queue']]:this[_0x5583('0x20')][_0x28afb5[_0x5583('0x105')]()];if(_0x702217[_0x5583('0x106')]!==_0x5583('0x107')){this['updateOriginated'](_0x395ff6);return this['callProgressDetecting'](_0x28afb5,_0x395ff6,_0x702217)[_0x5583('0xa4')](loggerCatch(_0x5583('0x108')));}this[_0x5583('0x27')][_0x702217['uniqueid']]=_0x28afb5;}};Dialer[_0x5583('0x1b')][_0x5583('0x39')]=function(_0x4365ab){var _0x1ece8d=this;var _0x41fbd9=this[_0x5583('0x27')][_0x4365ab[_0x5583('0xbf')]];var _0x129a4f;if(!_[_0x5583('0xf1')](_0x4365ab)&&!_[_0x5583('0xf1')](_0x4365ab[_0x5583('0x109')])&&!_[_0x5583('0xf1')](_0x4365ab[_0x5583('0x109')][_0x5583('0x10a')])&&_0x4365ab[_0x5583('0x10b')]==='xcally-motion-dialer'&&_0x41fbd9){if(_0x41fbd9['type']!==_0x5583('0xc0')&&this['voiceQueues'][_0x41fbd9[_0x5583('0xbe')]][_0x5583('0x10c')]&&_0x4365ab[_0x5583('0x10d')]===_0x5583('0x10e')){delete this[_0x5583('0x27')][_0x4365ab['uniqueid']];this[_0x5583('0xc9')](this['voiceQueues'][_0x41fbd9[_0x5583('0xbe')]]);this['voiceQueues'][_0x41fbd9['queue']][_0x5583('0xc2')]+=0x1;this[_0x5583('0x20')][_0x41fbd9['queue']][_0x5583('0x10f')]+=0x1;_0x129a4f=new Hangup(_0x41fbd9,_0x4365ab);_0x129a4f[_0x5583('0xce')]=0x12;_0x129a4f['statedesc']=_0x5583('0x110');_0x129a4f[_0x5583('0x111')]=_0x5583('0x112');ami['emit'](_0x5583('0x113'),ut[_0x5583('0x114')](_0x129a4f,_0x5583('0x115')));this['saveInDb'](_0x129a4f,_0x5583('0x116'),_0x5583('0x117'));}if(_0x41fbd9[_0x5583('0x44')]!==_0x5583('0xc0')&&this['voiceQueues'][_0x41fbd9[_0x5583('0xbe')]]['dialAMDActive']&&_0x4365ab[_0x5583('0x10d')]===_0x5583('0x118')){return new Promise(function(_0x3feb7b,_0x47f3f5){delete _0x1ece8d[_0x5583('0x27')][_0x4365ab[_0x5583('0xbf')]];_0x1ece8d[_0x5583('0xc9')](_0x1ece8d[_0x5583('0x20')][_0x41fbd9[_0x5583('0xbe')]]);_0x1ece8d[_0x5583('0x20')][_0x41fbd9[_0x5583('0xbe')]][_0x5583('0xc2')]+=0x1;_0x1ece8d[_0x5583('0x20')][_0x41fbd9[_0x5583('0xbe')]][_0x5583('0x10f')]+=0x1;var _0x5520e4=_0x1ece8d[_0x5583('0x20')][_0x41fbd9[_0x5583('0xbe')]];var _0xd7e6d=new Hangup(_0x41fbd9,_0x4365ab);_0xd7e6d[_0x5583('0xce')]=0x13;_0xd7e6d['statedesc']=_0x5583('0x119');_0xd7e6d[_0x5583('0x111')]=_0x5583('0x112');_0xd7e6d[_0x5583('0x11a')]+=0x1;_0xd7e6d[_0x5583('0xe5')]+=0x1;_0xd7e6d[_0x5583('0x115')]=!![];ami[_0x5583('0x11b')](_0x5583('0x113'),ut['buildObj'](_0xd7e6d,_0x5583('0x115')));hopperUtils[_0x5583('0xc6')](_0xd7e6d)[_0x5583('0xa4')](loggerCatch(_0x5583('0x11c')));if(_0xd7e6d[_0x5583('0x11d')]+_0xd7e6d['countcongestionretry']+_0xd7e6d['countnoanswerretry']+_0xd7e6d[_0x5583('0x11e')]+_0xd7e6d[_0x5583('0xd2')]+_0xd7e6d[_0x5583('0xe4')]+_0xd7e6d[_0x5583('0x11a')]+_0xd7e6d['countagentrejectretry']>=_0x5520e4['dialGlobalMaxRetry']){_0x1ece8d['stateGlobal'](_0xd7e6d,_0x3feb7b,_0x47f3f5,_0x5583('0x11f'));}else{if(_0xd7e6d[_0x5583('0x11a')]>=_0x5520e4[_0x5583('0x120')]){_0x1ece8d[_0x5583('0x121')](_0xd7e6d,_0x3feb7b,_0x47f3f5,_0x5583('0x122'));}else{hopperUtils[_0x5583('0xd9')]({'active':![],'countmachineretry':_0xd7e6d[_0x5583('0x11a')],'scheduledat':moment()['add'](_0x5520e4['dialMachineRetryFrequency'],_0x5583('0xda'))[_0x5583('0x80')](_0x5583('0xc1')),'ContactId':_0xd7e6d[_0x5583('0xdb')],'ListId':_0xd7e6d[_0x5583('0xf8')],'VoiceQueueId':_0xd7e6d['VoiceQueueId']||undefined,'CampaignId':_0xd7e6d[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0x123')));_0x3feb7b({'reschedule':0x1});}}});}if(_0x41fbd9[_0x5583('0x44')]==='ivr'&&this[_0x5583('0x21')][_0x41fbd9[_0x5583('0xbe')]]['dialAMDActive']&&_0x4365ab[_0x5583('0x10d')]===_0x5583('0x10e')){delete this[_0x5583('0x27')][_0x4365ab[_0x5583('0xbf')]];this['updateOriginated'](this[_0x5583('0x21')][_0x41fbd9[_0x5583('0xbe')]]);_0x129a4f=new Hangup(_0x41fbd9,_0x4365ab);_0x129a4f[_0x5583('0xce')]=0x12;_0x129a4f[_0x5583('0x71')]=_0x5583('0x110');_0x129a4f[_0x5583('0x111')]='AMD';ami[_0x5583('0x11b')](_0x5583('0x113'),ut[_0x5583('0x114')](_0x129a4f,'amd'));this[_0x5583('0x124')](_0x129a4f,_0x5583('0x125'),_0x5583('0x126'));}if(_0x41fbd9['type']===_0x5583('0xc0')&&this['campaigns'][_0x41fbd9[_0x5583('0xbe')]]['dialAMDActive']&&_0x4365ab['value']===_0x5583('0x118')){return new Promise(function(_0x5a3607,_0x4330ec){delete _0x1ece8d[_0x5583('0x27')][_0x4365ab[_0x5583('0xbf')]];_0x1ece8d[_0x5583('0xc9')](_0x1ece8d[_0x5583('0x21')][_0x41fbd9[_0x5583('0xbe')]]);_0x1ece8d[_0x5583('0x21')][_0x41fbd9[_0x5583('0xbe')]]['outboundAnswerCallsDay']+=0x1;_0x1ece8d[_0x5583('0x21')][_0x41fbd9['queue']][_0x5583('0x10f')]+=0x1;var _0x5534c=_0x1ece8d['campaigns'][_0x41fbd9[_0x5583('0xbe')]];var _0x26e90a=new Hangup(_0x41fbd9,_0x4365ab);_0x26e90a[_0x5583('0xce')]=0x13;_0x26e90a['statedesc']=_0x5583('0x119');_0x26e90a[_0x5583('0x111')]=_0x5583('0x112');_0x26e90a[_0x5583('0x11a')]+=0x1;_0x26e90a[_0x5583('0xe5')]+=0x1;_0x26e90a['amd']=!![];ami['emit']('custom:amd',ut['buildObj'](_0x26e90a,_0x5583('0x115')));hopperUtils[_0x5583('0xc6')](_0x26e90a)[_0x5583('0xa4')](loggerCatch(_0x5583('0x11c')));if(_0x26e90a['countbusyretry']+_0x26e90a[_0x5583('0x127')]+_0x26e90a[_0x5583('0x128')]+_0x26e90a[_0x5583('0x11e')]+_0x26e90a['countdropretry']+_0x26e90a['countabandonedretry']+_0x26e90a['countmachineretry']+_0x26e90a['countagentrejectretry']>=_0x5534c[_0x5583('0x129')]){_0x1ece8d[_0x5583('0x12a')](_0x26e90a,_0x5a3607,_0x4330ec,_0x5583('0x11f'));}else{if(_0x26e90a['countmachineretry']>=_0x5534c[_0x5583('0x120')]){_0x1ece8d[_0x5583('0x121')](_0x26e90a,_0x5a3607,_0x4330ec,'reason\x2019\x20machine....');}else{hopperUtils[_0x5583('0xd9')]({'active':![],'countmachineretry':_0x26e90a[_0x5583('0x11a')],'scheduledat':moment()[_0x5583('0x12b')](_0x5534c['dialMachineRetryFrequency'],_0x5583('0xda'))['format'](_0x5583('0xc1')),'ContactId':_0x26e90a[_0x5583('0xdb')],'ListId':_0x26e90a['ListId'],'VoiceQueueId':_0x26e90a[_0x5583('0xdc')]||undefined,'CampaignId':_0x26e90a[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch('[rescheduleContact][Machine]'));_0x5a3607({'reschedule':0x1});}}});}}};Dialer[_0x5583('0x1b')][_0x5583('0x36')]=function(_0x39e7af){var _0x65f976=this[_0x5583('0x27')][_0x39e7af['uniqueid']];var _0x193267;if(_0x65f976&&_0x65f976['type']==='ivr'){delete this[_0x5583('0x27')][_0x39e7af[_0x5583('0xbf')]];this['updateOriginated'](this[_0x5583('0x21')][_0x65f976[_0x5583('0xbe')]]);this[_0x5583('0x21')][_0x65f976[_0x5583('0xbe')]][_0x5583('0x12c')]+=0x1;_0x193267=new Hangup(_0x65f976,_0x39e7af);hopperUtils[_0x5583('0xc6')](_0x193267)[_0x5583('0xa4')](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils[_0x5583('0xc7')](_0x193267)[_0x5583('0xa4')](loggerCatch(_0x5583('0x12d')));}if(_0x65f976&&_0x65f976['type']!=='ivr'&&isNotNull(this['voiceQueues'][_0x65f976[_0x5583('0xbe')]]['dialQueueProject'])){delete this[_0x5583('0x27')][_0x39e7af[_0x5583('0xbf')]];this[_0x5583('0xc9')](this[_0x5583('0x20')][_0x65f976['queue']]);this[_0x5583('0x20')][_0x65f976[_0x5583('0xbe')]]['outboundAnswerCallsDay']+=0x1;this[_0x5583('0x20')][_0x65f976[_0x5583('0xbe')]][_0x5583('0x10f')]+=0x1;_0x193267=new Hangup(_0x65f976,_0x39e7af);_0x193267[_0x5583('0xce')]=0x10;_0x193267[_0x5583('0x71')]=_0x5583('0x12e');_0x193267[_0x5583('0x111')]=_0x5583('0x12f');hopperUtils[_0x5583('0xc6')](_0x193267)['catch'](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils['moveContactManagedDialer'](_0x193267)[_0x5583('0xa4')](loggerCatch(_0x5583('0x12d')));}if(_0x65f976&&_0x65f976[_0x5583('0x44')]!==_0x5583('0xc0')&&!isNotNull(this[_0x5583('0x20')][_0x65f976[_0x5583('0xbe')]][_0x5583('0x130')])){delete this['uniqueId'][_0x39e7af[_0x5583('0xbf')]];this[_0x5583('0xc9')](this[_0x5583('0x20')][_0x65f976[_0x5583('0xbe')]]);this[_0x5583('0x20')][_0x65f976['queue']]['outboundUnknownCallsDay']+=0x1;_0x193267=new Hangup(_0x65f976,_0x39e7af);_0x193267[_0x5583('0xce')]=0xc;_0x193267[_0x5583('0x71')]=_0x39e7af[_0x5583('0x131')];_0x193267[_0x5583('0x111')]=_0x5583('0x132');hopperUtils[_0x5583('0xc6')](_0x193267)[_0x5583('0xa4')](loggerCatch(_0x5583('0x133')));hopperUtils['moveContactManagedDialer'](_0x193267)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer[_0x5583('0x1b')][_0x5583('0xc')]=function(_0x4e4ab1){var _0x30899d=this;if(!_0x30899d[_0x5583('0x2b')][_0x4e4ab1[_0x5583('0x48')]]){_0x30899d[_0x5583('0x2b')][_0x4e4ab1[_0x5583('0x48')]]={'running':![]};}else if(_0x30899d[_0x5583('0x2b')][_0x4e4ab1[_0x5583('0x48')]][_0x5583('0x134')]===!![]){return;}else if(_0x30899d[_0x5583('0x2b')][_0x4e4ab1[_0x5583('0x48')]][_0x5583('0x134')]===![]){_0x30899d[_0x5583('0x2b')][_0x4e4ab1[_0x5583('0x48')]][_0x5583('0x134')]=!![];}var _0x39d665=_0x30899d[_0x5583('0x20')][_0x4e4ab1[_0x5583('0x48')]];var _0x53986b=_0x39d665['message']!==utils[_0x5583('0x6d')][_0x5583('0x7e')];var _0x360b0c=utils['isPreviewCampaign'](_0x39d665);_0x39d665[_0x5583('0x135')]=utils[_0x5583('0x136')](_0x39d665,_0x30899d[_0x5583('0x23')]);Promise['resolve']()[_0x5583('0x41')](function(){if(_0x39d665['statusMessage']===utils[_0x5583('0x6d')][_0x5583('0x7e')]){if(_0x53986b){clearPredictiveAttributes(_0x39d665);_0x4e4ab1[_0x5583('0x64')]=undefined;_0x4e4ab1[_0x5583('0x29')]=undefined;}if(_0x39d665[_0x5583('0x135')]===utils[_0x5583('0x6d')][_0x5583('0x7e')]){_0x4e4ab1['available']=0x0;_0x4e4ab1[_0x5583('0xf4')]=0x0;_0x4e4ab1['inUse']=0x0;_0x4e4ab1['talking']=0x0;_0x4e4ab1[_0x5583('0x137')]=0x0;}}else if(_0x39d665[_0x5583('0x135')]===utils['CAMPAIGN_STATUS'][_0x5583('0x138')]&&!_0x360b0c){return _0x30899d[_0x5583('0x97')](_0x39d665,!![])[_0x5583('0x41')](function(){return _0x30899d[_0x5583('0x97')](_0x39d665,![]);})[_0x5583('0x41')](function(){return _0x30899d[_0x5583('0xb0')](_0x39d665);})['catch'](function(_0x13df95){loggerSyncQueueSummary[_0x5583('0x45')](_0x5583('0x139'),util[_0x5583('0x69')](_0x13df95,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x39d665);});}else{clearPredictiveAttributes(_0x39d665);}})[_0x5583('0x41')](function(){var _0x15daaa=_0x4e4ab1[_0x5583('0x13a')](_0x39d665);if(_0x15daaa||_0x39d665[_0x5583('0x13b')]){_0x39d665[_0x5583('0x13b')]=![];_0x4e4ab1[_0x5583('0x13c')](_0x39d665);Object[_0x5583('0x13d')](_0x39d665,_0x4e4ab1);emitOutboundVoiceQueueSummary(_0x4e4ab1);}_0x30899d[_0x5583('0x2b')][_0x39d665[_0x5583('0x48')]]['running']=![];})[_0x5583('0xa4')](function(_0x863efb){logger[_0x5583('0x68')]('[syncQueueSummary]',util['inspect'](_0x863efb,{'showHidden':![],'depth':null}));_0x30899d[_0x5583('0x2b')][_0x39d665[_0x5583('0x48')]]['running']=![];});};Dialer[_0x5583('0x1b')][_0x5583('0x34')]=_['throttle'](function(){var _0x3a4532=_[_0x5583('0x13e')](this['voiceQueues'],function(_0x1eda58){return _0x1eda58[_0x5583('0x13f')];});var _0x5afe8b=_[_0x5583('0x13e')](this[_0x5583('0x22')],function(_0x5da007){return _0x5da007[_0x5583('0x140')]&&_0x5da007[_0x5583('0x8d')]==='reachable';});if(_0x3a4532[_0x5583('0x141')]>0x0&&_0x5afe8b[_0x5583('0x141')]>0x0){return Promise['resolve']()['then'](cmHopper[_0x5583('0x142')](_['map'](_0x3a4532,'id'),previewRecallmeReminderInterval,_[_0x5583('0x143')](_0x5afe8b,'id')))[_0x5583('0x41')](function(_0x1f0873){for(var _0x4402d0=0x0;_0x4402d0<_0x1f0873['length'];_0x4402d0++){var _0x182fde=_0x1f0873[_0x4402d0][_0x5583('0x144')][_0x5583('0x48')];if(_0x182fde)io['to'](util[_0x5583('0x80')](_0x5583('0x145'),_0x182fde))[_0x5583('0x11b')](_0x5583('0x146'),{'hopper':_0x1f0873[_0x4402d0]});}})[_0x5583('0xa4')](function(_0x3b65b6){logger[_0x5583('0x68')]('checkPreviewRecallReminder',_0x3b65b6);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x5583('0x1b')][_0x5583('0x3f')]=function(){var _0x467808=this;setInterval(function(){_0x467808[_0x5583('0x147')](_0x467808[_0x5583('0x27')],_0x5583('0x148'));_0x467808['clearZombieChannels'](_0x467808[_0x5583('0x26')],_0x5583('0x149'));},0x32c8);};Dialer['prototype'][_0x5583('0x147')]=function(_0x17b966,_0x535f70){var _0x4d33fe=this;for(var _0x243610 in _0x17b966){if(typeof _0x17b966[_0x243610]!==_0x5583('0x14a')){this[_0x5583('0x1e')][_0x5583('0x1c')](function(){if(!_[_0x5583('0xf1')](_0x17b966[_0x243610])){return ami[_0x5583('0xa3')]({'action':_0x5583('0x8d'),'channel':_0x17b966[_0x243610][_0x5583('0xeb')]})[_0x5583('0xa4')](function(_0x1123d7){if(_0x1123d7[_0x5583('0x6c')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x17b966[_0x243610]&&_0x17b966[_0x243610]['type']!==_0x5583('0xc0')){_0x4d33fe['updateOriginated'](_0x4d33fe[_0x5583('0x20')][_0x17b966[_0x243610][_0x5583('0xbe')]]);logger[_0x5583('0x68')](_0x5583('0x14b'),_0x535f70,_0x243610,_0x17b966[_0x243610][_0x5583('0xbe')]);delete _0x17b966[_0x243610];}if(_0x17b966[_0x243610]&&_0x17b966[_0x243610]['type']===_0x5583('0xc0')){_0x4d33fe[_0x5583('0xc9')](_0x4d33fe[_0x5583('0x21')][_0x17b966[_0x243610]['queue']]);logger[_0x5583('0x68')](_0x5583('0x14c'),_0x535f70,_0x243610,_0x17b966[_0x243610]['queue']);delete _0x17b966[_0x243610];}},0x2328);}});}});}}};Dialer['prototype']['getVoiceQueueRtPauses']=function(_0x36947c){return Promise[_0x5583('0xac')]()[_0x5583('0x41')](voiceQueueRt['getVoiceQueueRtPauses'](_0x36947c))[_0x5583('0xa4')](loggerCatch(_0x5583('0x14d')));};Dialer[_0x5583('0x1b')][_0x5583('0xc9')]=function(_0x5232c8){if(!_[_0x5583('0x43')](_0x5232c8)&&_0x5232c8!==null){if(typeof _0x5232c8[_0x5583('0x84')]!==_0x5583('0x14a')){if(_0x5232c8[_0x5583('0x84')]>0x0){_0x5232c8[_0x5583('0x84')]-=0x1;}else{logger[_0x5583('0x68')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger['error'](_0x5583('0x14e'));}};Dialer[_0x5583('0x1b')][_0x5583('0x14f')]=function(_0x31d628,_0x15bc53){var _0x2ff8aa=this;return function(_0x59993f){_0x2ff8aa[_0x5583('0xc9')](_0x15bc53);logger[_0x5583('0x68')](_0x31d628,util['inspect'](_0x59993f,{'showHidden':![],'depth':null}));};};Dialer[_0x5583('0x1b')]['emptyContact']=function(_0x54d1cd,_0x4e32d7,_0x558f02){var _0x5e8e66={'state':0x19,'statedesc':'notFound'};this[_0x5583('0xc9')](_0x4e32d7);this[_0x5583('0x124')](_[_0x5583('0x61')](_0x5e8e66,_['pick'](_0x558f02,[_0x5583('0xdb'),'ListId',_0x5583('0x150'),_0x5583('0xdc'),_0x5583('0xdd')])),_0x5583('0x151'),_0x5583('0x152'));logger[_0x5583('0x68')](_0x54d1cd);};Dialer[_0x5583('0x1b')][_0x5583('0x124')]=function(_0x1afb44,_0x2282cd,_0x380c7a){hopperUtils[_0x5583('0xc6')](_0x1afb44)[_0x5583('0xa4')](loggerCatch(_0x2282cd));hopperUtils[_0x5583('0xc7')](_0x1afb44)['catch'](loggerCatch(_0x380c7a));};Dialer[_0x5583('0x1b')][_0x5583('0xd8')]=function(_0x2b746d,_0x39e57e){hopperUtils['createHistory'](_0x2b746d)[_0x5583('0xa4')](loggerCatch(_0x5583('0x153')));if(_0x39e57e==0x0){hopperUtils['moveContactManagedDialer'](_0x2b746d)['catch'](loggerCatch(_0x5583('0x154')));}};Dialer['prototype'][_0x5583('0x155')]=function(_0x378036){return Promise[_0x5583('0xac')]()[_0x5583('0x41')](cmHopper[_0x5583('0x142')](_0x378036['id'],previewRecallmeReminderInterval))[_0x5583('0x41')](function(_0x52d1d6){for(var _0x3bbe3d=0x0;_0x3bbe3d<_0x52d1d6[_0x5583('0x141')];_0x3bbe3d++){var _0xf1b8f9=_0x52d1d6[_0x3bbe3d][_0x5583('0x144')][_0x5583('0x48')];if(_0xf1b8f9)io['to'](util[_0x5583('0x80')](_0x5583('0x145'),_0xf1b8f9))[_0x5583('0x11b')](_0x5583('0x146'),{'hopper':_0x52d1d6[_0x3bbe3d]});}})[_0x5583('0xa4')](function(){});};Dialer[_0x5583('0x1b')][_0x5583('0x156')]=function(_0x282192){var _0x48e9b5=this;return function(){_0x48e9b5[_0x5583('0x157')](_0x282192);};};Dialer[_0x5583('0x1b')]['actionOriginate']=function(_0xce1ec0,_0x43b147){var _0xfddab3=this;var _0xf3f55f=uuid['v4']();this[_0x5583('0x26')][_0xf3f55f]=new Action(_0xce1ec0,_0x43b147,_0xf3f55f);return new Promise(function(_0x2b2c0,_0x307be9){if(_['isUndefined'](_0xce1ec0)&&typeof _0xce1ec0!==_0x5583('0x158')){return _0x307be9(msgResponse(_0x5583('0x159'),'Failure',_0x5583('0x15a')));}if(_[_0x5583('0x43')](_0x43b147['phone'])||_0x43b147['phone']===null){return _0x307be9(msgResponse(_0x5583('0x159'),_0x5583('0x98'),_0x5583('0x15b')));}var _0x4559cd={'XMD-CALLERID':_0xfddab3['actions'][_0xf3f55f][_0x5583('0x15c')](),'XMD-AGI':_0xce1ec0['dialQueueProject']?util[_0x5583('0x80')](_0x5583('0x15d'),ipAgi,_0xce1ec0[_0x5583('0x130')]):'NONE','XMD-AGIAFTER':_0xce1ec0[_0x5583('0xd1')]?util[_0x5583('0x80')](_0x5583('0x15d'),ipAgi,_0xce1ec0[_0x5583('0xd1')]):_0x5583('0x15e'),'XMD-QUEUE':utils[_0x5583('0x15f')](_0xce1ec0)?util[_0x5583('0x80')](_0x5583('0x160'),_0xce1ec0['name'],_0xce1ec0[_0x5583('0x161')]||'',_0xce1ec0[_0x5583('0xc5')]?'c':'',_0xce1ec0['dialQueueTimeout']||0x3):_0x5583('0x15e'),'XMD-CONTACTID':_0x43b147['ContactId'],'XMD-CDRTYPE':_0x5583('0x8'),'CALLERID(all)':_0xfddab3[_0x5583('0x26')][_0xf3f55f][_0x5583('0x15c')](),'XMD-AMD':_0xce1ec0[_0x5583('0x10c')]?_0x5583('0x138'):_0x5583('0x15e'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0xce1ec0[_0x5583('0x10c')]){_0x4559cd[_0x5583('0x162')]=_0xce1ec0['dialAMDInitialSilence']||0x9c4;_0x4559cd[_0x5583('0x163')]=_0xce1ec0[_0x5583('0x164')]||0x5dc;_0x4559cd['XMD-AMDAFTERGREETINGSILENCE']=_0xce1ec0[_0x5583('0x165')]||0x320;_0x4559cd['XMD-AMDTOTALANALYSISTIME']=_0xce1ec0[_0x5583('0x166')]||0x1388;_0x4559cd[_0x5583('0x167')]=_0xce1ec0['dialAMDMinWordLength']||0x64;_0x4559cd[_0x5583('0x168')]=_0xce1ec0['dialAMDBetweenWordsSilence']||0x32;_0x4559cd['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0xce1ec0['dialAMDMaximumNumberOfWords']||0x3;_0x4559cd[_0x5583('0x169')]=_0xce1ec0[_0x5583('0x16a')]||0x100;_0x4559cd[_0x5583('0x16b')]=_0xce1ec0[_0x5583('0x16c')]||0x1388;}if(utils['isOutboundQueue'](_0xce1ec0)){_0x4559cd[_0x5583('0x16d')]=_0x43b147['VoiceQueueId'];}else{_0x4559cd[_0x5583('0x16e')]=_0x43b147['CampaignId'];}var _0xe18eec=utils[_0x5583('0x16f')](_0x43b147[_0x5583('0x170')]);Object['assign'](_0x4559cd,_0xe18eec);var _0x4b9b42=_0xfddab3[_0x5583('0x8a')](_0xce1ec0[_0x5583('0x91')])?utils[_0x5583('0x171')](_0xce1ec0[_0x5583('0x91')]['callerid'],_0xce1ec0['dialOriginateCallerIdName'],_0xce1ec0[_0x5583('0x172')]>0x0?utils[_0x5583('0x173')](_0xce1ec0['dialOriginateCallerIdNumber'],_0xce1ec0['dialRandomLastDigitCallerIdNumber']):_0xce1ec0[_0x5583('0x174')]):utils['getCallerId'](_[_0x5583('0xf1')](_0xce1ec0['TrunkBackup'])?_0xce1ec0[_0x5583('0x91')][_0x5583('0x175')]:_0xce1ec0[_0x5583('0x92')][_0x5583('0x175')],_0xce1ec0['dialOriginateCallerIdName'],_0xce1ec0[_0x5583('0x172')]>0x0?utils['getCallerIdRandom'](_0xce1ec0['dialOriginateCallerIdNumber'],_0xce1ec0[_0x5583('0x172')]):_0xce1ec0[_0x5583('0x174')]);if(_0x4b9b42){_0x4559cd[_0x5583('0x176')]=_0xfddab3[_0x5583('0x26')][_0xf3f55f][_0x5583('0x177')]=utils['extractCalleridName'](_0x4b9b42);_0x4559cd[_0x5583('0x178')]=_0x43b147[_0x5583('0x179')];}_0xce1ec0['variables']=_0x4559cd;return ami[_0x5583('0xa3')]({'actionid':_0xf3f55f,'action':_0x5583('0x159'),'channel':_0xfddab3[_0x5583('0x8a')](_0xce1ec0[_0x5583('0x91')])?util['format'](_0x5583('0x17a'),_0xce1ec0[_0x5583('0x91')]['name'],isNotNull(_0xce1ec0[_0x5583('0x17b')])?_0xce1ec0[_0x5583('0x17b')][_0x5583('0x17c')]()||'':'',_0xce1ec0[_0x5583('0x17d')]>0x0?_0x43b147[_0x5583('0x179')]['substring'](_0xce1ec0['dialCutDigit']):_0x43b147[_0x5583('0x179')]):util[_0x5583('0x80')](_0x5583('0x17a'),_[_0x5583('0xf1')](_0xce1ec0[_0x5583('0x92')])?_0xce1ec0[_0x5583('0x91')][_0x5583('0x48')]:_0xce1ec0['TrunkBackup'][_0x5583('0x48')],isNotNull(_0xce1ec0[_0x5583('0x17b')])?_0xce1ec0[_0x5583('0x17b')][_0x5583('0x17c')]()||'':'',_0xce1ec0[_0x5583('0x17d')]>0x0?_0x43b147['phone'][_0x5583('0x17e')](_0xce1ec0[_0x5583('0x17d')]):_0x43b147['phone']),'callerid':_0x4b9b42,'Exten':_0x5583('0x17f'),'Context':_0x5583('0x180'),'Priority':'1','variable':_0x4559cd,'timeout':(_0xce1ec0['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0xf3f55f})[_0x5583('0x41')](function(_0xcb630b){return _0x2b2c0(_0xcb630b);})[_0x5583('0xa4')](function(_0x1e97f6){_0xce1ec0['outboundOriginateFailureCallsDay']+=0x1;var _0x5235ee=new History(_0xfddab3[_0x5583('0x26')][_0xf3f55f]);logger['error'](util[_0x5583('0x80')](_0x5583('0x181'),JSON['stringify'](_0x1e97f6)));_0x5235ee[_0x5583('0xce')]=0xe;_0x5235ee['statedesc']=_0x5583('0x182');_0x5235ee[_0x5583('0x73')]=moment()[_0x5583('0x80')](_0x5583('0xc1'));_0x5235ee['endtime']=_0x5235ee[_0x5583('0x73')];hopperUtils[_0x5583('0xc6')](_0x5235ee)['catch'](loggerCatch(_0x5583('0x183')));_0xfddab3[_0x5583('0xc7')](_0x5235ee)[_0x5583('0xa4')](loggerCatch(_0x5583('0x183')))['finally'](function(){delete _0xfddab3[_0x5583('0x26')][_0xf3f55f];return _0x307be9(msgResponse(_0x5583('0x159'),'Error',_0x5583('0x184')));});});});};Dialer['prototype'][_0x5583('0x185')]=function(_0x2ac373,_0x5a7dc8,_0x126ee7){var _0x4181ba=new History(_0x5a7dc8);if(_0x4181ba[_0x5583('0x11d')]+_0x4181ba[_0x5583('0x127')]+_0x4181ba['countnoanswerretry']+_0x4181ba[_0x5583('0x11e')]+_0x4181ba['countdropretry']+_0x4181ba[_0x5583('0xe4')]+_0x4181ba[_0x5583('0x11a')]+_0x4181ba[_0x5583('0x186')]>=_0x126ee7['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x2ac373){case 0x3:if(_0x4181ba[_0x5583('0x128')]>=_0x126ee7['dialNoAnswerMaxRetry']-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countnoanswerretry':_0x4181ba[_0x5583('0x128')]+=0x1,'scheduledat':moment()[_0x5583('0x12b')](_0x126ee7[_0x5583('0x187')],'minutes')[_0x5583('0x80')](_0x5583('0xc1')),'ContactId':_0x4181ba[_0x5583('0xdb')],'ListId':_0x4181ba[_0x5583('0xf8')],'VoiceQueueId':_0x4181ba[_0x5583('0xdc')]||undefined,'CampaignId':_0x4181ba[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0x188')));break;case 0x5:if(_0x4181ba['countbusyretry']>=_0x126ee7[_0x5583('0x189')]-0x1){return!![];}hopperUtils[_0x5583('0xd9')]({'active':![],'countbusyretry':_0x4181ba[_0x5583('0x11d')]+=0x1,'scheduledat':moment()['add'](_0x126ee7[_0x5583('0x18a')],'minutes')['format'](_0x5583('0xc1')),'ContactId':_0x4181ba['ContactId'],'ListId':_0x4181ba[_0x5583('0xf8')],'VoiceQueueId':_0x4181ba[_0x5583('0xdc')]||undefined,'CampaignId':_0x4181ba[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0x18b')));break;case 0x8:if(_0x4181ba[_0x5583('0x127')]>=_0x126ee7['dialCongestionMaxRetry']-0x1){return!![];}hopperUtils[_0x5583('0xd9')]({'active':![],'countcongestionretry':_0x4181ba[_0x5583('0x127')]+=0x1,'scheduledat':moment()[_0x5583('0x12b')](_0x126ee7['dialCongestionRetryFrequency'],_0x5583('0xda'))[_0x5583('0x80')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4181ba[_0x5583('0xdb')],'ListId':_0x4181ba['ListId'],'VoiceQueueId':_0x4181ba[_0x5583('0xdc')]||undefined,'CampaignId':_0x4181ba['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x4181ba['countnosuchnumberretry']>=_0x126ee7[_0x5583('0x18c')]-0x1){return!![];}else{hopperUtils[_0x5583('0xd9')]({'active':![],'countnosuchnumberretry':_0x4181ba[_0x5583('0x11e')]+=0x1,'scheduledat':moment()['add'](_0x126ee7['dialNoSuchNumberRetryFrequency'],_0x5583('0xda'))[_0x5583('0x80')](_0x5583('0xc1')),'ContactId':_0x4181ba[_0x5583('0xdb')],'ListId':_0x4181ba[_0x5583('0xf8')],'VoiceQueueId':_0x4181ba[_0x5583('0xdc')]||undefined,'CampaignId':_0x4181ba[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0x18d')));}break;case 0xa:if(_0x4181ba[_0x5583('0xd2')]>=_0x126ee7[_0x5583('0xd7')]-0x1){return!![];}hopperUtils[_0x5583('0xd9')]({'active':![],'countdropretry':_0x4181ba['countdropretry']+=0x1,'scheduledat':moment()['add'](_0x126ee7[_0x5583('0xd3')],_0x5583('0xda'))[_0x5583('0x80')](_0x5583('0xc1')),'ContactId':_0x4181ba['ContactId'],'ListId':_0x4181ba[_0x5583('0xf8')],'VoiceQueueId':_0x4181ba[_0x5583('0xdc')]||undefined,'CampaignId':_0x4181ba[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0xde')));break;case 0xb:if(_0x4181ba[_0x5583('0xe4')]>=_0x126ee7['dialAbandonedMaxRetry']-0x1){return!![];}hopperUtils[_0x5583('0xd9')]({'active':![],'countabandonedretry':_0x4181ba[_0x5583('0xe4')]+=0x1,'scheduledat':moment()[_0x5583('0x12b')](_0x126ee7[_0x5583('0xe8')],_0x5583('0xda'))[_0x5583('0x80')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4181ba[_0x5583('0xdb')],'ListId':_0x4181ba[_0x5583('0xf8')],'VoiceQueueId':_0x4181ba['VoiceQueueId']||undefined,'CampaignId':_0x4181ba[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0xe9')));break;case 0x13:if(_0x4181ba[_0x5583('0x11a')]>=_0x126ee7[_0x5583('0x120')]-0x1){return!![];}hopperUtils[_0x5583('0xd9')]({'active':![],'countmachineretry':_0x4181ba[_0x5583('0x11a')]+=0x1,'scheduledat':moment()[_0x5583('0x12b')](_0x126ee7[_0x5583('0x18e')],_0x5583('0xda'))['format'](_0x5583('0xc1')),'ContactId':_0x4181ba[_0x5583('0xdb')],'ListId':_0x4181ba[_0x5583('0xf8')],'VoiceQueueId':_0x4181ba['VoiceQueueId']||undefined,'CampaignId':_0x4181ba[_0x5583('0xdd')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x4181ba['countagentrejectretry']>=_0x126ee7['dialAgentRejectMaxRetry']-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countagentrejectretry':_0x4181ba[_0x5583('0x186')]+=0x1,'scheduledat':moment()[_0x5583('0x12b')](_0x126ee7[_0x5583('0x18f')],_0x5583('0xda'))[_0x5583('0x80')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4181ba[_0x5583('0xdb')],'ListId':_0x4181ba[_0x5583('0xf8')],'VoiceQueueId':_0x4181ba[_0x5583('0xdc')]||undefined,'CampaignId':_0x4181ba[_0x5583('0xdd')]||undefined})[_0x5583('0xa4')](loggerCatch(_0x5583('0x190')));break;default:return!![];}};Dialer[_0x5583('0x1b')]['callProgressDetecting']=function(_0x43d2cc,_0x221e28,_0x16f611){var _0x351a2d=this;var _0x4d50bf=new History(_0x43d2cc);var _0x14496c=![];var _0x1242e2;var _0x3693af;return new Promise(function(_0x42baf0,_0x1bb572){if(_[_0x5583('0x43')](_0x221e28)&&typeof _0x221e28!=='object'){return _0x1bb572(msgResponse(_0x5583('0x191'),_0x5583('0x98'),_0x5583('0x192')));}if(_[_0x5583('0x43')](_0x16f611)&&typeof _0x16f611!==_0x5583('0x158')){return _0x1bb572(msgResponse(_0x5583('0x191'),'Failure',_0x5583('0x193')));}hopperUtils[_0x5583('0xe6')](_0x4d50bf,_0x16f611[_0x5583('0xc3')],_0x221e28)[_0x5583('0x41')](function(_0xb83b21){if(_0xb83b21[_0x5583('0xd6')]==0x1)_0x14496c=!![];switch(_0x16f611[_0x5583('0xc3')]){case'0':_0x221e28[_0x5583('0x194')]+=0x1;_0x4d50bf[_0x5583('0xce')]=0x0;_0x4d50bf['statedesc']=_0x5583('0x195');_0x4d50bf['countnosuchnumberretry']+=0x1;_0x4d50bf[_0x5583('0xe5')]+=0x1;ami[_0x5583('0x11b')]('custom:agentnosuchnumber',ut['buildObj'](_0x43d2cc,_0x5583('0x196')));_0x1242e2=_0x221e28[_0x5583('0x197')];_0x3693af=_0x221e28[_0x5583('0xd4')];hopperUtils[_0x5583('0xc6')](_0x4d50bf)[_0x5583('0xa4')](loggerCatch(_0x5583('0x11c')));if(_0x351a2d['checkRetriveMax'](0x0,_0x43d2cc,_0x221e28)&&!_0x14496c){if(_0x4d50bf[_0x5583('0x11e')]>=_0x221e28[_0x5583('0x18c')]){_0x351a2d[_0x5583('0x121')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x198'));}else{_0x351a2d[_0x5583('0x12a')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x198'));}}break;case'3':_0x221e28['outboundNoAnswerCallsDay']+=0x1;_0x4d50bf[_0x5583('0xce')]=0x3;_0x4d50bf[_0x5583('0x71')]=_0x5583('0x199');_0x4d50bf['countnoanswerretry']+=0x1;_0x4d50bf[_0x5583('0xe5')]+=0x1;var _0x1287f6=ut[_0x5583('0x19a')](_0x43d2cc,_0x221e28);ami[_0x5583('0x11b')](_0x5583('0x19b'),_0x1287f6);_0x1242e2=_0x221e28[_0x5583('0x187')];_0x3693af=_0x221e28[_0x5583('0xd4')];hopperUtils[_0x5583('0xc6')](_0x4d50bf)[_0x5583('0xa4')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x351a2d['checkRetriveMax'](0x3,_0x43d2cc,_0x221e28)&&!_0x14496c){if(_0x4d50bf[_0x5583('0x128')]>=_0x221e28['dialNoAnswerMaxRetry']){_0x351a2d[_0x5583('0x121')](_0x4d50bf,_0x42baf0,_0x1bb572,'reason\x203\x20ringing\x20no\x20answer');}else{_0x351a2d[_0x5583('0x12a')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x19c'));}}break;case'5':_0x221e28['outboundBusyCallsDay']+=0x1;_0x4d50bf[_0x5583('0xce')]=0x5;_0x4d50bf['statedesc']=_0x5583('0x19d');_0x4d50bf[_0x5583('0x11d')]+=0x1;_0x4d50bf[_0x5583('0xe5')]+=0x1;ami[_0x5583('0x11b')](_0x5583('0x19e'),ut[_0x5583('0x114')](_0x43d2cc,_0x5583('0x19f')));_0x1242e2=_0x221e28['dialBusyRetryFrequency'];_0x3693af=_0x221e28[_0x5583('0xd4')];hopperUtils[_0x5583('0xc6')](_0x4d50bf)[_0x5583('0xa4')](loggerCatch(_0x5583('0x1a0')));if(_0x351a2d[_0x5583('0x185')](0x5,_0x43d2cc,_0x221e28)&&!_0x14496c){if(_0x4d50bf[_0x5583('0x11d')]>=_0x221e28[_0x5583('0x189')]){_0x351a2d['createStateFinal'](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x1a1'));}else{_0x351a2d[_0x5583('0x12a')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x1a1'));}}break;case'8':_0x221e28[_0x5583('0x1a2')]+=0x1;_0x4d50bf['state']=0x8;_0x4d50bf[_0x5583('0x71')]=_0x5583('0x1a3');_0x4d50bf[_0x5583('0x127')]+=0x1;_0x4d50bf[_0x5583('0xe5')]+=0x1;_0x1242e2=_0x221e28['dialCongestionRetryFrequency'];_0x3693af=_0x221e28['callAdditionalPhoneAfterMin'];ami[_0x5583('0x11b')](_0x5583('0x1a4'),ut[_0x5583('0x114')](_0x43d2cc,_0x5583('0x1a5')));hopperUtils['createHistory'](_0x4d50bf)[_0x5583('0xa4')](loggerCatch(_0x5583('0x1a6')));if(_0x351a2d[_0x5583('0x185')](0x8,_0x43d2cc,_0x221e28)&&!_0x14496c){if(_0x4d50bf[_0x5583('0x127')]>=_0x221e28['dialCongestionMaxRetry']){_0x351a2d['createStateFinal'](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x1a7'));}else{_0x351a2d['stateGlobal'](_0x4d50bf,_0x42baf0,_0x1bb572,'reason\x208\x20congestion');}}break;case'11':_0x221e28[_0x5583('0x1a8')]+=0x1;_0x4d50bf['state']=0xb;_0x4d50bf[_0x5583('0x71')]=_0x5583('0xe2');_0x4d50bf[_0x5583('0xe4')]+=0x1;_0x4d50bf['countglobal']+=0x1;_0x1242e2=_0x221e28[_0x5583('0xe8')];_0x3693af=_0x221e28[_0x5583('0xd4')];hopperUtils['createHistory'](_0x4d50bf)[_0x5583('0xa4')](loggerCatch(_0x5583('0xea')));if(_0x351a2d[_0x5583('0x185')](0xb,_0x43d2cc,_0x221e28)&&!_0x14496c){if(_0x4d50bf[_0x5583('0xe4')]>=_0x221e28[_0x5583('0xe7')]){_0x351a2d[_0x5583('0x121')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x1a9'));}else{_0x351a2d[_0x5583('0x12a')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x1a9'));}}break;case'20':_0x221e28[_0x5583('0x1aa')]+=0x1;_0x4d50bf[_0x5583('0xce')]=0x14;_0x4d50bf[_0x5583('0x71')]=_0x5583('0x1ab');_0x4d50bf[_0x5583('0x186')]+=0x1;_0x4d50bf[_0x5583('0xe5')]+=0x1;_0x1242e2=_0x221e28[_0x5583('0x18f')];_0x3693af=_0x221e28['callAdditionalPhoneAfterMin'];ami[_0x5583('0x11b')](_0x5583('0x1ac'),ut[_0x5583('0x114')](_0x43d2cc,_0x5583('0x1ad')));hopperUtils[_0x5583('0xc6')](_0x4d50bf)['catch'](loggerCatch(_0x5583('0x1ae')));if(_0x351a2d['checkRetriveMax'](0x14,_0x43d2cc,_0x221e28)&&!_0x14496c){if(_0x4d50bf['countagentrejectretry']>=_0x221e28['dialAgentRejectMaxRetry']){_0x351a2d[_0x5583('0x121')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x1af'));}else{_0x351a2d[_0x5583('0x12a')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x5583('0x1af'));}}break;default:_0x221e28[_0x5583('0x1b0')]+=0x1;_0x4d50bf[_0x5583('0xce')]=0xc;_0x4d50bf[_0x5583('0x71')]=_0x16f611['reason'];_0x1242e2=_0x221e28[_0x5583('0x18f')];_0x3693af=_0x221e28[_0x5583('0xd4')];hopperUtils[_0x5583('0xc6')](_0x4d50bf)[_0x5583('0xa4')](loggerCatch(_0x5583('0x1b1')));if(_0x351a2d[_0x5583('0x185')](_0x16f611[_0x5583('0xc3')],_0x43d2cc,_0x221e28)&&!_0x14496c){if(_0x4d50bf[_0x5583('0x11d')]+_0x4d50bf[_0x5583('0x127')]+_0x4d50bf[_0x5583('0x128')]+_0x4d50bf[_0x5583('0x11e')]+_0x4d50bf['countdropretry']+_0x4d50bf[_0x5583('0xe4')]+_0x4d50bf[_0x5583('0x11a')]+_0x4d50bf[_0x5583('0x186')]>=_0x221e28[_0x5583('0x129')]){_0x351a2d[_0x5583('0x12a')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x16f611[_0x5583('0xc3')]);}else{_0x351a2d[_0x5583('0x121')](_0x4d50bf,_0x42baf0,_0x1bb572,_0x16f611[_0x5583('0xc3')]);}}}})[_0x5583('0x41')](function(){if(_0x14496c){hopperUtils[_0x5583('0xe1')](_0x4d50bf,_0x1242e2,_0x3693af)[_0x5583('0x41')](function(){return _0x42baf0(0x1);});}});});};Dialer[_0x5583('0x1b')][_0x5583('0x12a')]=function(_0x528794,_0x4ab53c,_0x482d14,_0x44af93){var _0x1b167b=new Final(_0x528794);_0x1b167b[_0x5583('0xce')]=0xf;_0x1b167b[_0x5583('0x71')]=_0x5583('0x1b2');this[_0x5583('0x121')](_0x1b167b,_0x4ab53c,_0x482d14,_0x44af93);};Dialer[_0x5583('0x1b')][_0x5583('0x121')]=function(_0x243f76,_0x25d9c7,_0x47c12e,_0x3956ab){hopperUtils['moveContactManagedDialer'](_0x243f76)['then'](function(){return _0x25d9c7(msgResponse(_0x5583('0x191'),'Success',_0x3956ab));})['catch'](function(){return _0x47c12e(msgResponse(_0x5583('0x1b3'),_0x5583('0x98'),_0x5583('0x1b4')));});};Dialer[_0x5583('0x1b')][_0x5583('0xa')]=function(_0x1d286f){var _0x2438ea=_0x1d286f['dialPredictiveOptimizationPercentage']/0x64;var _0x17ed3f=_0x1d286f['outboundDropCallsDayTimeout']/(_0x1d286f['outboundDropCallsDayTimeout']+_0x1d286f[_0x5583('0xc2')]);var _0x2bfdb5=Math['round'](_0x1d286f['predictiveIntervalAvailable']*(_0x1d286f[_0x5583('0x1b5')]/0x64));var _0xe9d2a6=Math[_0x5583('0x1b6')](_0x1d286f[_0x5583('0x1b7')]*(_0x1d286f[_0x5583('0x1b8')]/0x64));var _0x5e6673=_0x1d286f[_0x5583('0x1b9')]+_0x1d286f[_0x5583('0x1ba')];var _0x20eda3=Math[_0x5583('0x1bb')](_0x1d286f[_0x5583('0x5b')]*_0x1d286f[_0x5583('0x5f')]*_0x1d286f['predictiveIntervalHitRate']*_0x1d286f[_0x5583('0x1bc')]);if(_[_0x5583('0x43')](_0x1d286f[_0x5583('0x29')])){if(!_[_0x5583('0x43')](_0x1d286f[_0x5583('0x64')])){_0x1d286f['startPredictive']=undefined;loggerPredictive[_0x5583('0x68')](_0x5583('0x1bd'),_0x5583('0x1be'));}if(!_[_0x5583('0x43')](_0x1d286f[_0x5583('0x66')])){loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0x5583('0x1bf'));clearInterval(_0x1d286f['handlePredictive']);_0x1d286f[_0x5583('0x66')]=undefined;}_0x1d286f[_0x5583('0x29')]=moment()[_0x5583('0x80')](_0x5583('0xc1'));loggerPredictive['info'](_0x1d286f[_0x5583('0x48')],'collection\x20data\x20in\x20progressive\x20at',_0x1d286f['startProgressive']);this[_0x5583('0xb3')](_0x1d286f,0x1);}else if(ifInterval(_0x1d286f[_0x5583('0x1c0')],_0x1d286f[_0x5583('0x29')])){this[_0x5583('0xb3')](_0x1d286f,0x1);loggerPredictiveCalls[_0x5583('0x4b')](_0x5583('0x1c1'),_0x1d286f[_0x5583('0x29')],_0x1d286f[_0x5583('0x48')]);_0x1d286f[_0x5583('0x5b')]=0x0;_0x1d286f['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x2438ea<_0x17ed3f&&_0x1d286f[_0x5583('0x1c2')]===_0x5583('0x1c3')){clearPredictiveAttributes(_0x1d286f);loggerPredictive[_0x5583('0x4b')](_0x5583('0x1c4'),_0x5583('0x1c5'),_0x17ed3f,'startProgressive',_0x1d286f[_0x5583('0x48')]);}else if(_0x20eda3<_0x1d286f[_0x5583('0x1c6')]&&_0x1d286f[_0x5583('0x1c2')]===_0x5583('0x1c3')){clearPredictiveAttributes(_0x1d286f);loggerPredictive['info'](_0x5583('0x1c7'),'Max\x20Drop\x20',_0x20eda3,_0x5583('0x1c8'),_0x1d286f[_0x5583('0x1c6')],_0x5583('0x29'),_0x1d286f['name']);}else if(!ifInterval(_0x1d286f[_0x5583('0x1c0')],_0x1d286f[_0x5583('0x29')])&&_[_0x5583('0x43')](_0x1d286f['startPredictive'])&&!_['isUndefined'](_0x1d286f[_0x5583('0x29')])){_0x1d286f[_0x5583('0x64')]=moment()[_0x5583('0x80')](_0x5583('0xc1'));loggerPredictive[_0x5583('0x4b')](_0x1d286f[_0x5583('0x48')],'started\x20in\x20predictive\x20at',_0x1d286f[_0x5583('0x64')]);hopperUtils[_0x5583('0x1c9')](_0x1d286f[_0x5583('0x1c0')])[_0x5583('0x41')](this[_0x5583('0x1ca')](_0x1d286f))['then'](mergeDataErlangB(_0x1d286f))[_0x5583('0x41')](this[_0x5583('0x1cb')](_0x1d286f))[_0x5583('0xa4')](loggerCatchPredictive(_0x5583('0x1cc'),_0x1d286f));}else if(!ifInterval(_0x1d286f[_0x5583('0x1c0')],_0x1d286f[_0x5583('0x64')])){_0x1d286f[_0x5583('0x1c6')]=0x0;_0x1d286f[_0x5583('0x64')]=moment()['format'](_0x5583('0xc1'));loggerPredictive[_0x5583('0x4b')](_0x1d286f[_0x5583('0x48')],'recalculate\x20predictive\x20at',_0x1d286f[_0x5583('0x64')]);clearInterval(_0x1d286f[_0x5583('0x66')]);_0x1d286f['handlePredictive']=undefined;hopperUtils[_0x5583('0x1c9')](_0x1d286f[_0x5583('0x1c0')])[_0x5583('0x41')](this['getDataPredictive'](_0x1d286f))[_0x5583('0x41')](mergeDataErlangB(_0x1d286f))[_0x5583('0x41')](this[_0x5583('0x1cb')](_0x1d286f))[_0x5583('0xa4')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x1d286f));}else if(_0x1d286f[_0x5583('0x1b7')]&&_0x5e6673<_0x1d286f[_0x5583('0x1b7')]-_0xe9d2a6){clearPredictiveAttributes(_0x1d286f);loggerPredictive['info'](_0x1d286f[_0x5583('0x48')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x5e6673,')\x20are\x20less\x20than\x20threshold\x20(',_0x1d286f['predictiveIntervalAvailable'],'-',_0xe9d2a6,'=',_0x1d286f[_0x5583('0x1b7')]-_0xe9d2a6,')');}else if(_0x1d286f['predictiveIntervalAvailable']&&_0x5e6673>_0x1d286f[_0x5583('0x1b7')]+_0x2bfdb5){clearPredictiveAttributes(_0x1d286f);loggerPredictive[_0x5583('0x4b')](_0x1d286f[_0x5583('0x48')],_0x5583('0x1cd'),_0x5e6673,_0x5583('0x1ce'),_0x1d286f[_0x5583('0x1b7')],'+',_0x2bfdb5,'=',_0x1d286f[_0x5583('0x1b7')]+_0x2bfdb5,')');}};Dialer[_0x5583('0x1b')][_0x5583('0x1ca')]=function(_0x1d3505){var _0x4c84a0=this;return function(_0x539823){return new Promise(function(_0x5c02c7,_0x400492){_[_0x5583('0x61')](_0x1d3505,_0x539823[0x0]);if(checkGetDataPredictive(_0x539823[0x0])){var _0x39906c=_0x1d3505['predictiveIntervalAvailable']=_0x1d3505[_0x5583('0x1ba')]+_0x1d3505['available'];var _0x19956e=_0x1d3505[_0x5583('0x1c0')]*0x3c;var _0x4e2b2c=_0x539823[0x0][_0x5583('0x55')]+_0x539823[0x0]['predictiveIntervalAvgHoldtime'];var _0x3334e0=(_0x539823[0x0][_0x5583('0x4e')]+_0x539823[0x0][_0x5583('0xcc')]+_0x539823[0x0][_0x5583('0x1cf')])/_0x539823[0x0][_0x5583('0x4c')];_0x1d3505['predictiveIntervalHitRate']=_0x3334e0>0x0?_0x3334e0:0x1;switch(_0x1d3505[_0x5583('0x1c2')]){case _0x5583('0x1c3'):var _0x3c299a=_0x1d3505[_0x5583('0x1d0')]/0x64;return _0x4c84a0[_0x5583('0x1d1')](_0x39906c,_0x19956e,_0x4e2b2c,_0x3334e0,_0x3c299a)['then'](function(_0x59cf6f){return _0x5c02c7(_0x59cf6f);});case _0x5583('0x1d2'):var _0xc3afbb=_0x1d3505[_0x5583('0x1d0')]/0x64;return _0x4c84a0['busyFactor'](_0x39906c,_0x19956e,_0x4e2b2c,_0x3334e0,_0xc3afbb)[_0x5583('0x41')](function(_0x3227e6){return _0x5c02c7(_0x3227e6);});default:return _0x400492(msgResponse('[getDataPredictive]',_0x5583('0x98'),_0x5583('0x1d3')));}}else{return _0x400492(msgResponse(_0x5583('0x1d4'),'Failure','check\x20failure'));}});};};Dialer[_0x5583('0x1b')][_0x5583('0x1d5')]=function(_0x1b6d85){var _0x3bcce5=this;return function(_0x5133fd){return new Promise(function(_0x3428a7,_0x5e6b98){_[_0x5583('0x61')](_0x1b6d85,_0x5133fd[0x0]);if(checkGetDataPredictive(_0x5133fd[0x0])){loggerPredictive[_0x5583('0x4b')](JSON[_0x5583('0x76')](_0x5133fd[0x0]));if(_0x1b6d85[_0x5583('0x1c2')]===_0x5583('0x1c3')){return _0x3bcce5['getVoiceQueueRtPauses'](_0x1b6d85['id'])[_0x5583('0x41')](function(_0x1cb12a){var _0x1918d0=_0x1b6d85[_0x5583('0x1d6')]-_0x1cb12a[0x0]['outboundQueuePauses'];var _0x141787=_0x1b6d85[_0x5583('0x1c0')]*0x3c;var _0x53e378=_0x5133fd[0x0][_0x5583('0x55')]+_0x5133fd[0x0]['predictiveIntervalAvgHoldtime'];var _0x1a6984=(_0x5133fd[0x0][_0x5583('0x4e')]+_0x5133fd[0x0][_0x5583('0xcc')]+_0x5133fd[0x0][_0x5583('0x1cf')])/_0x5133fd[0x0][_0x5583('0x4c')];var _0x475ed7=_0x1b6d85[_0x5583('0x1d0')]/0x64;_0x1b6d85[_0x5583('0x1d7')]=_0x1cb12a[0x0][_0x5583('0x1d8')]||0x0;_0x1b6d85[_0x5583('0x1d9')]=_0x1a6984>0x0?_0x1a6984:0x1;return _0x3bcce5[_0x5583('0x1d1')](_0x1918d0,_0x141787,_0x53e378,_0x1a6984,_0x475ed7);})['then'](function(_0x370d96){return _0x3428a7(_0x370d96);})['catch'](function(_0x607431){return _0x5e6b98(msgResponse(_0x5583('0x1da'),_0x5583('0x98'),JSON['stringify'](_0x607431)));});}if(_0x1b6d85['dialPredictiveOptimization']===_0x5583('0x1d2')){return _0x3bcce5[_0x5583('0x1db')](_0x1b6d85['id'])[_0x5583('0x41')](function(_0x51b554){var _0x529805=_0x1b6d85[_0x5583('0x1d6')]-_0x51b554[0x0][_0x5583('0x1d8')];var _0x597d47=_0x1b6d85[_0x5583('0x1c0')]*0x3c;var _0x2f3c5c=_0x5133fd[0x0][_0x5583('0x55')]+_0x5133fd[0x0][_0x5583('0x52')];var _0x4d96b2=(_0x5133fd[0x0][_0x5583('0x4e')]+_0x5133fd[0x0][_0x5583('0xcc')]+_0x5133fd[0x0][_0x5583('0x1cf')])/_0x5133fd[0x0][_0x5583('0x4c')];var _0x4126d0=_0x1b6d85[_0x5583('0x1d0')]/0x64;_0x1b6d85['predictiveIntervalPauses']=_0x51b554[0x0][_0x5583('0x1d8')]||0x0;_0x1b6d85[_0x5583('0x1d9')]=_0x4d96b2>0x0?_0x4d96b2:0x1;return _0x3bcce5[_0x5583('0x1dc')](_0x529805,_0x597d47,_0x2f3c5c,_0x4d96b2,_0x4126d0);})[_0x5583('0x41')](function(_0x2027fe){return _0x3428a7(_0x2027fe);})['catch'](function(_0x7b0541){return _0x5e6b98(msgResponse(_0x5583('0x1da'),'Failure',JSON[_0x5583('0x76')](_0x7b0541)));});}}else{return _0x5e6b98(msgResponse(_0x5583('0x1d4'),_0x5583('0x98'),_0x5583('0x1dd')));}});};};Dialer[_0x5583('0x1b')][_0x5583('0x1cb')]=function(_0x202372){var _0x846280=this;return function(){var _0x333bc2=0x0;var _0x405119=Math[_0x5583('0x1bb')](_0x202372[_0x5583('0x5d')]*0x3e8);if(_0x405119>0x0){_0x405119=_0x405119<0x64?0x64:_0x405119;loggerPredictive['info'](_0x202372[_0x5583('0x48')],_0x5583('0x1de'),_0x405119,'milliseconds');_0x202372[_0x5583('0x66')]=setInterval(function(){_0x846280['handlePredictive'](_0x202372);loggerPredictiveCalls['info']('[handlePredictive]',_0x333bc2+=0x1);},_0x405119);}else{loggerPredictive['info'](_0x202372[_0x5583('0x48')],_0x5583('0x1df'));}};};Dialer[_0x5583('0x1b')][_0x5583('0x1e0')]=function(_0x5b6b03,_0x24dbc9){var _0x227596=this;return function(_0xacc79d){if(_[_0x5583('0x7c')](_0xacc79d)){if(_[_0x5583('0xf1')](_0x24dbc9[_0x5583('0x150')])||!_0x24dbc9[_0x5583('0x1e1')]){if(_0x5b6b03[_0x5583('0xb1')]===_0x5583('0x9')){_0x5b6b03['queueStatusComplete']=_[_0x5583('0x43')](_0x5b6b03[_0x5583('0x74')])?!![]:_0x5b6b03[_0x5583('0x74')];var _0x1abcb7=uuid['v4']();_0x227596[_0x5583('0x26')][_0x1abcb7]=new Action(_0x5b6b03,_0x24dbc9,_0x1abcb7);loggerBooked['info'](_0x5583('0x1e2'),_0x1abcb7,'queueStatusComplete:\x20',JSON[_0x5583('0x76')](_0x5b6b03[_0x5583('0x74')]),_0x5583('0x1e3'),_0x5b6b03[_0x5583('0x48')]);if(_0x5b6b03[_0x5583('0x74')]){_0x5b6b03[_0x5583('0x74')]=![];_0x227596[_0x5583('0xf2')][_0x227596[_0x5583('0x26')][_0x1abcb7]['queue']]=[];ami[_0x5583('0xa3')]({'actionid':_0x1abcb7,'action':_0x5583('0x1e4'),'queue':_0x5b6b03['name']})[_0x5583('0xa4')](function(){_0x227596[_0x5583('0xc9')](_0x5b6b03);hopperUtils[_0x5583('0xd9')]({'active':![],'ContactId':_0x227596['actions'][_0x1abcb7]['ContactId'],'ListId':_0x227596['actions'][_0x1abcb7][_0x5583('0xf8')],'VoiceQueueId':_0x227596[_0x5583('0x26')][_0x1abcb7]['VoiceQueueId']||undefined,'CampaignId':_0x227596[_0x5583('0x26')][_0x1abcb7]['CampaignId']||undefined})['catch'](loggerCatch(_0x5583('0x1e5')));delete _0x227596[_0x5583('0x26')][_0x1abcb7];});}else{loggerBooked[_0x5583('0x4b')](_0x5583('0x1e6'),JSON[_0x5583('0x76')](_0x5b6b03[_0x5583('0x74')]),_0x5583('0x1e3'),_0x5b6b03[_0x5583('0x48')]);_0x227596[_0x5583('0xc9')](_0x5b6b03);hopperUtils[_0x5583('0xd9')]({'active':![],'ContactId':_0x227596[_0x5583('0x26')][_0x1abcb7][_0x5583('0xdb')],'ListId':_0x227596['actions'][_0x1abcb7][_0x5583('0xf8')],'VoiceQueueId':_0x227596[_0x5583('0x26')][_0x1abcb7]['VoiceQueueId']||undefined,'CampaignId':_0x227596[_0x5583('0x26')][_0x1abcb7]['CampaignId']||undefined})['catch'](loggerCatch(_0x5583('0x1e5')));delete _0x227596['actions'][_0x1abcb7];}}else{return _0x227596[_0x5583('0x1e7')](_0x5b6b03,_0x24dbc9);}}else{if(utils[_0x5583('0x62')](undefined,_0x24dbc9['scheduledat'])<_0x5b6b03[_0x5583('0x1e8')]*0x3c){if(_0x24dbc9[_0x5583('0x144')]&&!_0x24dbc9[_0x5583('0x144')][_0x5583('0x1e9')]){_0x227596['preview'][_0x5583('0xf6')](_0x24dbc9['id'])[_0x5583('0xf7')](function(){_0x227596[_0x5583('0xc9')](_0x5b6b03);});}else{hopperUtils['unlockContact']({'active':![]},_0x24dbc9['id'],0x1)[_0x5583('0xf7')](function(){_0x227596[_0x5583('0xc9')](_0x5b6b03);});}}else{_0x5b6b03['outboundReCallsDay']+=0x1;_0x227596[_0x5583('0xc9')](_0x5b6b03);if(_0x5b6b03[_0x5583('0x1ea')]){hopperUtils['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x24dbc9['ContactId'],'ListId':_0x24dbc9[_0x5583('0xf8')],'VoiceQueueId':_0x24dbc9[_0x5583('0xdc')]||undefined,'CampaignId':_0x24dbc9['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][dialRecallInQueue]'));hopperUtils[_0x5583('0xc6')](createObjHistory(_0x5b6b03,_0x24dbc9,utils['CAMPAIGN_STATUS']['QUEUE_RECALL'],0x17,'RecallInQueue'))[_0x5583('0xa4')](loggerCatch(_0x5583('0x1eb')));}else{_0x227596[_0x5583('0x124')](createObjHistory(_0x5b6b03,_0x24dbc9,utils[_0x5583('0x6d')]['RECALL_TIMEOUT'],0x16,'RecallFailedTimeout'),'[Originate][HistoryRecallClose][historyCatch]',_0x5583('0x1ec'));}}}}else{_0x5b6b03[_0x5583('0x1ed')]+=0x1;_0x227596[_0x5583('0x124')](createObjHistory(_0x5b6b03,_0x24dbc9,utils[_0x5583('0x6d')][_0x5583('0x1ee')],0xd,_0x5583('0x1ef')),'[Originate][historyBlacklist]',_0x5583('0x1f0'));throw'inBlackList';}};};Dialer[_0x5583('0x1b')][_0x5583('0x157')]=function(_0x1863b9){var _0xb76b4e=this;var _0x197e83=_0x1863b9[_0x5583('0x1f1')]-_0x1863b9[_0x5583('0x84')];emitCampaignSummary(_0x1863b9);if(_0x197e83>0x0&&_0x1863b9[_0x5583('0x6b')]==0x0){if(_0x197e83>this[_0x5583('0x24')]){_0x197e83=this[_0x5583('0x24')];}_0x1863b9[_0x5583('0x6b')]=0x1;hopperUtils[_0x5583('0x1f2')](_0x1863b9,_0x197e83)['then'](function(_0x5633ba){_0x1863b9[_0x5583('0x6b')]=0x0;if(_0x5633ba){if(!utils[_0x5583('0x1f3')](_0x5633ba)){_0x1863b9[_0x5583('0x6c')]=utils['CAMPAIGN_STATUS']['NO_AVAILABLE_CONTACTS'];logger[_0x5583('0x4b')](_0x5583('0x1f4')+_0x1863b9[_0x5583('0x48')]);}else{_0x1863b9['originated']+=_0x5633ba[_0x5583('0x141')];_0x1863b9[_0x5583('0x6c')]=utils[_0x5583('0x6d')]['RUNNING'];for(var _0x39a999=0x0;_0x39a999<_0x5633ba[_0x5583('0x141')];_0x39a999+=0x1){_0x1863b9['ivrTotalCallsDays']+=0x1;if(_[_0x5583('0xf1')](_0x5633ba[_0x39a999])||_[_0x5583('0xf1')](_0x5633ba[_0x39a999][_0x5583('0x170')])||_[_0x5583('0xf1')](_0x5633ba[_0x39a999][_0x5583('0x179')])){_0xb76b4e[_0x5583('0x1f5')](_0x5583('0x1f6'),_0x1863b9,_0x5633ba[_0x39a999]);}else{hopperUtils['checkIsBlackListIvr'](_[_0x5583('0x77')](_0x5633ba[_0x39a999],[_0x5583('0xdd'),'phone']))[_0x5583('0x41')](_0xb76b4e[_0x5583('0x1e0')](_0x1863b9,_0x5633ba[_0x39a999]))[_0x5583('0xa4')](_0xb76b4e[_0x5583('0x14f')](_0x5583('0x1f7'),_0x1863b9));}}}}})[_0x5583('0xa4')](loggerGetContactDialer(_0x5583('0x1f8'),_0x1863b9,_0x197e83));}};Dialer[_0x5583('0x1b')][_0x5583('0xb3')]=function(_0xe8a66c,_0x3e8778){var _0xa4f5b=this;var _0x55c5d6=[];if(_0x3e8778<0x1||_0xe8a66c['dialMethod']===_0x5583('0x9')){_0x3e8778=0x1;}var _0x40e5c6=Math[_0x5583('0x1bb')](_0xe8a66c[_0x5583('0x1b9')]*_0x3e8778)-_0xe8a66c[_0x5583('0x84')];if(_0xe8a66c[_0x5583('0x1f9')]>0x0){var _0x241d7e=_0xe8a66c[_0x5583('0x1f9')]-_0xe8a66c[_0x5583('0x84')]-_0xe8a66c['talking']-_0xe8a66c[_0x5583('0x137')];if(_0x40e5c6>_0x241d7e){_0x40e5c6=_0x241d7e;}}if(_0x40e5c6>0x0&&_0xe8a66c['temp']==0x0){if(_0xe8a66c[_0x5583('0xb1')]===_0x5583('0x9')){_0x40e5c6=0x1;}if(_0x40e5c6>this[_0x5583('0x24')]){_0x40e5c6=this[_0x5583('0x24')];}for(var _0x374b00 in this[_0x5583('0x22')]){if(typeof this['agents'][_0x374b00]!=='undefined'){if(this[_0x5583('0x22')][_0x374b00][_0x5583('0xce')]===_0x5583('0x1fa')&&this['agents'][_0x374b00][_0x5583('0x8d')]==='reachable'){_0x55c5d6[_0x5583('0x9e')](this['agents'][_0x374b00]['id']);}}}_0xe8a66c['temp']=0x1;hopperUtils[_0x5583('0x1fb')](_0xe8a66c,_0x55c5d6,_0x40e5c6)['then'](function(_0x306453){_0xe8a66c[_0x5583('0x6b')]=0x0;if(_0x306453){if(!utils[_0x5583('0x1f3')](_0x306453)){hopperUtils[_0x5583('0x1fc')](_0xe8a66c)[_0x5583('0x41')](sendMessageReschedule(_0xe8a66c))[_0x5583('0xa4')](loggerCatch(_0x5583('0x1fd')));}else{_0xe8a66c[_0x5583('0x84')]+=_0x306453[_0x5583('0x141')];_0xe8a66c[_0x5583('0x6c')]=_0xe8a66c['dialMethod']===_0x5583('0x9')?utils[_0x5583('0x6d')]['ACTIVE']:utils[_0x5583('0x6d')][_0x5583('0x1fe')];for(var _0x3cb98a=0x0;_0x3cb98a<_0x306453[_0x5583('0x141')];_0x3cb98a+=0x1){if(_[_0x5583('0xf1')](_0x306453[_0x3cb98a])||_[_0x5583('0xf1')](_0x306453[_0x3cb98a]['Contact'])||_[_0x5583('0xf1')](_0x306453[_0x3cb98a]['phone'])){_0xa4f5b[_0x5583('0x1f5')](_0x5583('0x1f6'),_0xe8a66c,_0x306453[_0x3cb98a]);}else{hopperUtils['checkIsBlackList'](_[_0x5583('0x77')](_0x306453[_0x3cb98a],[_0x5583('0xdc'),_0x5583('0x179')]))['then'](_0xa4f5b[_0x5583('0x1e0')](_0xe8a66c,_0x306453[_0x3cb98a]))[_0x5583('0xa4')](_0xa4f5b['loggerHandler'](_0x5583('0x1f6'),_0xe8a66c));}}}}})[_0x5583('0xa4')](loggerGetContactDialer(_0x5583('0x1ff'),_0xe8a66c,_0x40e5c6));}};Dialer[_0x5583('0x1b')][_0x5583('0x66')]=function(_0x225f27){if(_0x225f27['dialLimitQueue']>0x0){var _0x3adb95=_0x225f27[_0x5583('0x1f9')]-_0x225f27[_0x5583('0x84')]-_0x225f27[_0x5583('0x1ba')];if(_0x3adb95>0x0&&_0x225f27['temp']==0x0){this[_0x5583('0x200')](_0x225f27);}else{loggerPredictiveCalls[_0x5583('0x4b')]('[handlePredictive][limitChannel]');}}else{this[_0x5583('0x200')](_0x225f27);}};Dialer[_0x5583('0x1b')][_0x5583('0x200')]=function(_0x3847f8){var _0x18dbf8=this;var _0x3054f6=[];_0x3847f8[_0x5583('0x84')]+=0x1;for(var _0x38d0ae in this[_0x5583('0x22')]){if(typeof this[_0x5583('0x22')][_0x38d0ae]!==_0x5583('0x14a')){if(this[_0x5583('0x22')][_0x38d0ae][_0x5583('0xce')]===_0x5583('0x1fa')&&this[_0x5583('0x22')][_0x38d0ae]['status']===_0x5583('0x8e')){_0x3054f6[_0x5583('0x9e')](this[_0x5583('0x22')][_0x38d0ae]['id']);}}}_0x3847f8[_0x5583('0x6b')]=0x1;return this[_0x5583('0x1fb')](_0x3847f8['id'],_0x3054f6,0x1,_0x3847f8[_0x5583('0x201')],_0x3847f8)[_0x5583('0x41')](function(_0xc38c8c){_0x3847f8[_0x5583('0x6b')]=0x1;if(_0xc38c8c){if(!utils['checkContactEmpty'](_0xc38c8c)){utils[_0x5583('0x6a')](_0x3847f8,0x1,0x0);return hopperUtils[_0x5583('0x1fc')](_0x3847f8)[_0x5583('0x41')](sendMessageReschedule(_0x3847f8))[_0x5583('0xa4')](loggerCatch(_0x5583('0x1fd')));}else{_0x3847f8[_0x5583('0x6c')]=utils['CAMPAIGN_STATUS']['RUNNING'];if(_[_0x5583('0xf1')](_0xc38c8c[0x0])||_[_0x5583('0xf1')](_0xc38c8c[0x0]['Contact'])||_[_0x5583('0xf1')](_0xc38c8c[0x0][_0x5583('0x179')])){_0x18dbf8[_0x5583('0x1f5')]('[actionOriginate]\x20',_0x3847f8,_0xc38c8c[0x0]);}else{return hopperUtils[_0x5583('0x202')](_[_0x5583('0x77')](_0xc38c8c[0x0],[_0x5583('0xdc'),_0x5583('0x179')]))['then'](_0x18dbf8[_0x5583('0x1e0')](_0x3847f8,_0xc38c8c[0x0]))['catch'](_0x18dbf8[_0x5583('0x14f')]('[actionOriginatePredictive]\x20',_0x3847f8));}}}})['catch'](loggerGetContactDialer(_0x5583('0x203'),_0x3847f8,0x1));};Dialer[_0x5583('0x1b')][_0x5583('0x1d1')]=function(_0x3c0216,_0x186910,_0x26db00,_0x346d4e,_0x237041,_0x4622ed){loggerPredictive[_0x5583('0x4b')](_0x5583('0x204'));loggerPredictive[_0x5583('0x4b')](_0x5583('0x205'),_0x3c0216);loggerPredictive[_0x5583('0x4b')](_0x5583('0x206'),_0x186910);loggerPredictive[_0x5583('0x4b')](_0x5583('0x207'),_0x26db00);loggerPredictive[_0x5583('0x4b')](_0x5583('0x208'),_0x346d4e);loggerPredictive[_0x5583('0x4b')](_0x5583('0x209'),_0x237041);loggerPredictive[_0x5583('0x4b')](_0x5583('0x54'));return new Promise(function(_0x334213,_0x296fef){if(_0x3c0216<=0x0||isNaN(_0x3c0216)){return _0x296fef(msgResponse(_0x5583('0x20a'),_0x5583('0x89'),_0x5583('0x20b')+_0x3c0216));}if(_0x26db00<=0x0||isNaN(_0x26db00)){return _0x296fef(msgResponse(_0x5583('0x20a'),_0x5583('0x89'),'Ts\x20=\x20'+_0x26db00));}if(_0x346d4e<=0x0||isNaN(_0x346d4e)){return _0x296fef(msgResponse(_0x5583('0x20a'),'Error',_0x5583('0x20c')+_0x346d4e));}if(_0x186910<=0x0||isNaN(_0x186910)){return _0x296fef(msgResponse(_0x5583('0x20a'),'Error',_0x5583('0x20d')+_0x186910));}if(_0x237041<=0x0||isNaN(_0x237041)){return _0x296fef(msgResponse(_0x5583('0x20a'),'Error','Amax\x20=\x20'+_0x237041));}_0x4622ed=_0x4622ed||0x0;var _0x3ad331=0x1/_0x26db00;var _0x2e4a43=0x0;var _0x54f350=0x0;var _0x51a424=0x0;var _0x54ea67=0x0;for(var _0x28f0ef=0x0;_0x51a424<_0x237041;_0x28f0ef+=0x1){_0x54f350=_0x28f0ef/_0x186910;_0x2e4a43=(_0x346d4e*_0x54f350+_0x4622ed)/_0x3ad331;_0x51a424=utils[_0x5583('0x20e')](_0x2e4a43,_0x3c0216);_0x54ea67=_0x2e4a43/_0x3c0216*(0x1-utils[_0x5583('0x20e')](_0x2e4a43,_0x3c0216));}return _0x334213({'erlangCalls':_0x28f0ef,'erlangCallToSecond':_0x186910/_0x28f0ef,'erlangAbandonmentRate':_0x51a424,'erlangBusyFactor':_0x54ea67});});};Dialer[_0x5583('0x1b')][_0x5583('0x1dc')]=function(_0x890232,_0x345547,_0x207856,_0x27ce22,_0x3dddfd,_0x3ae09c){loggerPredictive[_0x5583('0x4b')](_0x5583('0x20f'));loggerPredictive['info'](_0x5583('0x205'),_0x890232);loggerPredictive[_0x5583('0x4b')](_0x5583('0x206'),_0x345547);loggerPredictive[_0x5583('0x4b')](_0x5583('0x207'),_0x207856);loggerPredictive['info'](_0x5583('0x208'),_0x27ce22);loggerPredictive[_0x5583('0x4b')](_0x5583('0x210'),_0x3dddfd);loggerPredictive[_0x5583('0x4b')](_0x5583('0x54'));return new Promise(function(_0x44e593,_0x21e1ab){if(_0x890232<=0x0||isNaN(_0x890232)){return _0x21e1ab(msgResponse('[busyFactor]','Error','m\x20=\x20'+_0x890232));}if(_0x207856<=0x0||isNaN(_0x207856)){return _0x21e1ab(msgResponse(_0x5583('0x211'),_0x5583('0x89'),'Ts\x20=\x20'+_0x207856));}if(_0x27ce22<=0x0||isNaN(_0x27ce22)){return _0x21e1ab(msgResponse('[busyFactor]',_0x5583('0x89'),'p\x20=\x20'+_0x27ce22));}if(_0x345547<=0x0||isNaN(_0x345547)){return _0x21e1ab(msgResponse(_0x5583('0x211'),_0x5583('0x89'),_0x5583('0x20d')+_0x345547));}if(_0x3dddfd<=0x0||isNaN(_0x3dddfd)){return _0x21e1ab(msgResponse(_0x5583('0x211'),'Error',_0x5583('0x212')+_0x3dddfd));}_0x3ae09c=_0x3ae09c||0x0;var _0x33f6f2=0x1/_0x207856;var _0x367003=0x0;var _0x114440=0x0;var _0x76247=0x0;var _0x31c559=0x0;for(var _0x26457d=0x0;_0x31c559<_0x3dddfd;_0x26457d+=0x1){_0x114440=_0x26457d/_0x345547;_0x367003=(_0x27ce22*_0x114440+_0x3ae09c)/_0x33f6f2;_0x76247=utils[_0x5583('0x20e')](_0x367003,_0x890232);_0x31c559=_0x367003/_0x890232*(0x1-utils[_0x5583('0x20e')](_0x367003,_0x890232));}return _0x44e593({'erlangCalls':_0x26457d,'erlangCallToSecond':_0x345547/_0x26457d,'erlangAbandonmentRate':_0x76247,'erlangBusyFactor':_0x31c559});});};module['exports']=Dialer;
\ No newline at end of file
+var _0x1b1a=['[emptyContact]','[syncQueueCallerAbandon]\x20[Drop]','launchHandleIvr','handleIvr','actionOriginate','object','voiceQueue\x20is\x20undefine','phone','originate','getCaller','\x22agi://%s/square,%s\x22','NONE','isOutboundQueue','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','setXMDContactVariables','Trunk','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','from-sip','dialOriginateTimeout','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialNoSuchNumberMaxRetry','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Drop]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','reason','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberRetryFrequency','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','custom:agentnoanswer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','custom:agentcongestion','congestion','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalAvailable','round','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','dialPredictiveInterval','avgHandleTime','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','getDataPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','predictiveIntervalHitRate','dialPredictiveOptimization','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','getDataPredictiveOld','outboundQueuePauses','predictiveIntervalAnsweredCalls','predictiveIntervalPauses','[CatchErlangB]','loggedIn','predictiveIntervalTotalCalls','check\x20failure','milliseconds','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','dialRecallMeTimeout','voicePause','unlockContact','outboundReCallsDay','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','QUEUE_RECALL','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALL_TIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','temp','getContactDialerIvr','checkContactEmpty','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','checkIsBlackListIvr','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','RUNNING','Contact','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','checkContactLowerLimitOriginate','countReScheduled','[countReScheduled]\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','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','interval\x20=\x20','Amax\x20=\x20','erlangb','----\x20Agent\x20Busy\x20Factor\x20----','[busyFactor]','p\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','ioredis','./utils/hopper','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/voiceQueueRt','../rpc/setting','../rpc/interval','./models/action','./models/history','./models/final','./models/agentComplete','./models/queueCallerAbandon','./models/hangup','env','XCALLY_IP_AGI','127.0.0.1','enqueue','tail','finally','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','queuesSummary','bind','queuecallerabandon','originateresponse','syncOriginateResponse','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','syncQueueMember','syncQueueStatusComplete','loopCampaigns','getSettings','then','previewRecallmeReminderInterval','emit','type','outbound','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','name','isEmpty','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','isUndefined','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','predictiveIntervalAvgHoldtime','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','erlangBusyFactor','---------------------------','merge','getSeconds','startProgressive\x20value\x20cleared','startPredictive','handlePredictive','handlePredictive\x20interval\x20cleared','error','stack','contactsRescheduled','message','CAMPAIGN_STATUS','CONTACTS_RESCHEDULED','[getContactDialer2][ReScheduled]','contacts','NO_AVAILABLE_CONTACTS','[getContactDialer2][Empty]','state','statedesc','starttime','queueStatusComplete','[booked][unlockQueueStatus]','stringify','Interval','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Intervals','INACTIVE','\x20NOT\x20Active','campaign:ivr:%s','campaign:save','sendMessageOneNotActive','originated','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','DISACTIVED','is\x20disactive','[ifTime][Action]','Error','prototype','isTrunkReachable','active','SIP/%s','status','reachable','unmonitored','checkIsTrunkReachable','TrunkBackup','TRUNK_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTimeIvr','Failure','\x20Intervals\x20is\x20null\x20','ifTime','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','length','push','Action','command','interval','content','true','catch','iftime\x20%s,%s','indexOf','some','OVERTIME_INTERVAL','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','syncCampaigns','undefined','isIVRCampaign','isIVRCampaignActive','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','[syncCampaigns]','checkDialMethod','dialMethod','progressive','dialPowerLevel','handlePower','Queue','method\x20not\x20recognized','silly','Dialer::ifTime()','Voice\x20Queue\x20%s\x20$s','intervalIftime','OVERTIME_GLOBAL_INTERVAL','\x20Interval\x20is\x20overtime:\x20','isGlobal','AMI\x20IfTime','queue','uniqueid','answertime','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','YYYY-MM-DD\x20HH:mm:ss','createHistory','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','syncQueueCallerAbandon','ivr','updateOriginated','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','TIMEOUT','countdropretry','countglobal','dialDropRetryFrequency','callAdditionalPhoneAfterMin','verifyAdditionalPhones','voiceQueue','additional','dialDropMaxRetry','queueCallerAbandonCreateState','rescheduleContact','add','ContactId','ListId','VoiceQueueId','Drop','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','swapAdditionalPhones','Abandoned','dropreason','CALLEREXIT','dialAbandonedRetryFrequency','dialAbandonedMaxRetry','countabandonedretry','minutes','[rescheduleContact][Abandoned]','channel','actions','actionid','strategy','rrmemory','isNil','locked','stateinterface','pick','idHopper','paused','roundrobin','run','CampaignId','[unlock][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','preview','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock3][syncQueueStatusComplete]','Success','callProgressDetecting','[callProgressDetecting]\x20','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','AMD','buildObj','[syncHangupInAMD]','MACHINE','membername','countmachineretry','custom:amd','amd','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','countnosuchnumberretry','dialGlobalMaxRetry','dialMachineRetryFrequency','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','cause-txt','outboundUnknownCallsDay','Unknow','[syncHangupIvr]','running','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','resolve','available','talking','pTalking','ACTIVE','[syncQueueSummary]','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','assign','syncQueueSummaryComplete','throttle','dialPreviewRecallmeReminder','filter','online','handlePreviewRecallNotifications','map','Agent','user:dialPreviewRecallReminder','checkPreviewRecallReminder','loopClearZombieChannels','[uniqueid]','clearZombieChannels','[actions]','No\x20such\x20channel','getVoiceQueueRtPauses','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','notFound','saveInDb','UserId','[emptyContact][createHistory]'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x1b1a,0xce));var _0xa1b1=function(_0x5471ec,_0x1ce81a){_0x5471ec=_0x5471ec-0x0;var _0x121d4c=_0x1b1a[_0x5471ec];return _0x121d4c;};'use strict';var util=require(_0xa1b1('0x0'));var _=require(_0xa1b1('0x1'));var uuid=require(_0xa1b1('0x2'));var moment=require(_0xa1b1('0x3'));var rr=require('rr');var Redis=require(_0xa1b1('0x4'));var utils=require('./utils');var hopperUtils=require(_0xa1b1('0x5'));var ut=require('../preview/util/util');var config=require('../../../config/environment/');var logger=require(_0xa1b1('0x6'))(_0xa1b1('0x7'));var loggerBooked=require('../../../config/logger')(_0xa1b1('0x8'));var loggerPredictive=require('../../../config/logger')(_0xa1b1('0x9'));var loggerPredictiveCalls=require(_0xa1b1('0x6'))(_0xa1b1('0xa'));var loggerSyncQueueSummary=require(_0xa1b1('0x6'))(_0xa1b1('0xb'));var ami=require(_0xa1b1('0xc'));config[_0xa1b1('0xd')]=_['defaults'](config[_0xa1b1('0xd')],{'host':_0xa1b1('0xe'),'port':0x18eb});var io=require(_0xa1b1('0xf'))(new Redis(config[_0xa1b1('0xd')]));var cmHopper=require(_0xa1b1('0x10'));var voiceQueueRt=require(_0xa1b1('0x11'));var RpcSetting=require(_0xa1b1('0x12'));var Interval=require(_0xa1b1('0x13'));var Action=require(_0xa1b1('0x14'));var History=require(_0xa1b1('0x15'));var Final=require(_0xa1b1('0x16'));var AgentComplete=require(_0xa1b1('0x17'));var QueueCallerAbandon=require(_0xa1b1('0x18'));var Hangup=require(_0xa1b1('0x19'));var ipAgi=process[_0xa1b1('0x1a')][_0xa1b1('0x1b')]||_0xa1b1('0x1c');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0xa1b1('0x1d')]=function(_0x492873){this[_0xa1b1('0x1e')]=this[_0xa1b1('0x1e')]?this['tail'][_0xa1b1('0x1f')](_0x492873):_0x492873();};function Dialer(_0x3fadf2,_0x2d170c){this['sequence']=new Sequence();this['preview']=_0x2d170c;this['voiceQueues']=_0x3fadf2[_0xa1b1('0x20')];this[_0xa1b1('0x21')]=_0x3fadf2[_0xa1b1('0x21')];this[_0xa1b1('0x22')]=_0x3fadf2[_0xa1b1('0x22')];this['trunks']=_0x3fadf2[_0xa1b1('0x23')];this[_0xa1b1('0x24')]=config['maxNumberOriginate']||0x2;this[_0xa1b1('0x25')]={};this['actions']={};this[_0xa1b1('0x26')]={};this[_0xa1b1('0x27')]={};this[_0xa1b1('0x28')]={};this['startPredictive']={};this[_0xa1b1('0x29')]={};this[_0xa1b1('0x2a')]={};this[_0xa1b1('0x2b')]={};this[_0xa1b1('0x2c')]={};this[_0xa1b1('0x2d')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0xa1b1('0x2e')](this));ami['on'](_0xa1b1('0x2f'),this['syncQueueCallerAbandon'][_0xa1b1('0x2e')](this));ami['on'](_0xa1b1('0x30'),this[_0xa1b1('0x31')]['bind'](this));ami['on']('agentcomplete',this[_0xa1b1('0x32')][_0xa1b1('0x2e')](this));ami['on'](_0xa1b1('0x33'),this[_0xa1b1('0xb')][_0xa1b1('0x2e')](this));ami['on']('custom:queuesummarycomplete',this['syncQueueSummaryComplete']['bind'](this));ami['on'](_0xa1b1('0x34'),this[_0xa1b1('0x35')][_0xa1b1('0x2e')](this));ami['on'](_0xa1b1('0x36'),this[_0xa1b1('0x37')][_0xa1b1('0x2e')](this));ami['on'](_0xa1b1('0x38'),this[_0xa1b1('0x39')][_0xa1b1('0x2e')](this));ami['on']('queuemember',this[_0xa1b1('0x3a')][_0xa1b1('0x2e')](this));ami['on']('queuestatuscomplete',this[_0xa1b1('0x3b')][_0xa1b1('0x2e')](this));this[_0xa1b1('0x3c')]();this['loopClearZombieChannels']();RpcSetting[_0xa1b1('0x3d')]()[_0xa1b1('0x3e')](function(_0x1c6597){previewRecallmeReminderInterval=_0x1c6597[_0xa1b1('0x3f')];});}function isNotNull(_0x3f4eb9){return _0x3f4eb9!==null&&!_['isUndefined'](_0x3f4eb9);}function msgResponse(_0x38de1b,_0x5760f4,_0x5a9521){return{'action':_0x38de1b,'response':_0x5760f4,'message':_0x5a9521,'stack':_0x5a9521};}function emit(_0x4c5109,_0x45889c,_0x144730){io['to'](_0x4c5109)[_0xa1b1('0x40')](_0x45889c,_0x144730);}function emitOutboundVoiceQueueSummary(_0x27b3f2){if(_0x27b3f2[_0xa1b1('0x41')]===_0xa1b1('0x42')){logger[_0xa1b1('0x43')](_0xa1b1('0x44'),util[_0xa1b1('0x45')](_0x27b3f2,{'showHidden':![],'depth':null}));emit(util[_0xa1b1('0x46')]('voice:queue:%s',_0x27b3f2[_0xa1b1('0x47')]),'voice_queue:save',_0x27b3f2);}}function checkGetDataPredictive(_0x4a8875){if(isNotNull(_0x4a8875)&&!_[_0xa1b1('0x48')](_0x4a8875)){loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x4a'));loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x4b'),_0x4a8875['predictiveIntervalTotalCalls']);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x4c'),_0x4a8875['predictiveIntervalAnsweredCalls']);loggerPredictive[_0xa1b1('0x49')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4a8875[_0xa1b1('0x4d')]);loggerPredictive[_0xa1b1('0x49')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4a8875[_0xa1b1('0x4e')]);loggerPredictive[_0xa1b1('0x49')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4a8875['predictiveIntervalAvgHoldtime']);loggerPredictive['info']('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4a8875[_0xa1b1('0x4f')]);loggerPredictive['info']('---------------------------');if(_0x4a8875['predictiveIntervalTotalCalls']>0x0){if(!_[_0xa1b1('0x50')](_0x4a8875[_0xa1b1('0x4f')])&&_0x4a8875[_0xa1b1('0x4f')]>0x0){return!![];}loggerPredictive['info'](_0xa1b1('0x51'));if(!_['isUndefined'](_0x4a8875[_0xa1b1('0x52')])&&_0x4a8875[_0xa1b1('0x52')]>0x0){return!![];}loggerPredictive[_0xa1b1('0x49')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info']('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x53'));}return![];}function mergeDataErlangB(_0x28b0e5){return function(_0x459dfc){loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x54'));loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x55'),_0x459dfc[_0xa1b1('0x56')]);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x459dfc[_0xa1b1('0x57')]);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x58'),_0x459dfc[_0xa1b1('0x59')]);loggerPredictive['info']('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x459dfc[_0xa1b1('0x5a')]);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x58'),_0x459dfc['erlangAbandonmentRate']);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x5b'));_[_0xa1b1('0x5c')](_0x28b0e5,_0x459dfc);};}function ifInterval(_0x4d77ff,_0x3851d6){if(_['isUndefined'](_0x3851d6)){return![];}return utils[_0xa1b1('0x5d')](undefined,_0x3851d6)<_0x4d77ff*0x3c;}function clearPredictiveAttributes(_0x5a4805){if(_0x5a4805['startProgressive']){_0x5a4805['startProgressive']=undefined;loggerPredictive[_0xa1b1('0x43')](_0x5a4805[_0xa1b1('0x47')],_0xa1b1('0x5e'));}if(_0x5a4805['startPredictive']){_0x5a4805[_0xa1b1('0x5f')]=undefined;loggerPredictive[_0xa1b1('0x43')](_0x5a4805['name'],'startPredictive\x20value\x20cleared');}if(_0x5a4805[_0xa1b1('0x60')]){clearInterval(_0x5a4805[_0xa1b1('0x60')]);_0x5a4805['handlePredictive']=undefined;loggerPredictive[_0xa1b1('0x43')](_0x5a4805[_0xa1b1('0x47')],_0xa1b1('0x61'));}}function loggerCatchPredictive(_0x4c5a23,_0x43e2a9){return function(_0x2165e5){loggerPredictive[_0xa1b1('0x62')](_0x43e2a9[_0xa1b1('0x47')],_0x4c5a23);loggerPredictive['error'](_0x2165e5[_0xa1b1('0x63')]);clearPredictiveAttributes(_0x43e2a9);};}function loggerCatch(_0x3d6b53){return function(_0x255868){logger['error'](_0x3d6b53,util[_0xa1b1('0x45')](_0x255868,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x34c8cb,_0x4ebfdb,_0x4af02f){return function(_0x21ce59){utils['checkContactLowerLimitOriginate'](_0x4ebfdb,_0x4af02f,0x0);_0x4ebfdb['temp']=0x0;logger[_0xa1b1('0x62')](_0x34c8cb,util[_0xa1b1('0x45')](_0x21ce59,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x583dff){return function(_0x18d067){if(isNotNull(_0x18d067)&&isNotNull(_0x18d067[0x0])){if(_0x18d067[0x0][_0xa1b1('0x64')]>0x0){_0x583dff[_0xa1b1('0x65')]=utils[_0xa1b1('0x66')][_0xa1b1('0x67')];logger[_0xa1b1('0x49')](_0xa1b1('0x68')+_0x583dff[_0xa1b1('0x47')],_0x18d067[0x0][_0xa1b1('0x64')],_0xa1b1('0x69'));}else{_0x583dff['message']=utils[_0xa1b1('0x66')][_0xa1b1('0x6a')];logger['info'](_0xa1b1('0x6b')+_0x583dff[_0xa1b1('0x47')]);}}};}function createObjHistory(_0x33a587,_0x24bbd3,_0x141a85,_0x1acae0,_0x218a72){_0x33a587[_0xa1b1('0x65')]=_0x141a85;var _0x2a577c=new Action(_0x33a587,_0x24bbd3);var _0x26ec79=new History(_0x2a577c);_0x26ec79[_0xa1b1('0x6c')]=_0x1acae0;_0x26ec79[_0xa1b1('0x6d')]=_0x218a72;_0x26ec79['endtime']=_0x2a577c[_0xa1b1('0x6e')];return _0x26ec79;}function unlockQueueStatus(_0x48f9bb,_0x39f8c1){setTimeout(function(){if(_['isUndefined'](_0x48f9bb['queueStatusComplete'])){loggerBooked['error']('[unlockQueueStatus][undefined]',_0x39f8c1);}_0x48f9bb[_0xa1b1('0x6f')]=!![];loggerBooked[_0xa1b1('0x49')](_0xa1b1('0x70'),_0x39f8c1,JSON[_0xa1b1('0x71')](_['pick'](_0x48f9bb,[_0xa1b1('0x47'),'queueStatusComplete'])));},0x1f3);}function checkInterval(_0x3ae183){return function(){if(!isNotNull(_0x3ae183[_0xa1b1('0x72')])){_0x3ae183['message']=utils[_0xa1b1('0x66')][_0xa1b1('0x73')];throw _0x3ae183['name']+_0xa1b1('0x74');}if(!isNotNull(_0x3ae183[_0xa1b1('0x72')][_0xa1b1('0x75')])){_0x3ae183[_0xa1b1('0x65')]=utils['CAMPAIGN_STATUS'][_0xa1b1('0x73')];throw _0x3ae183[_0xa1b1('0x47')]+_0xa1b1('0x74');}if(!isNotNull(_[_0xa1b1('0x48')](_0x3ae183[_0xa1b1('0x72')][_0xa1b1('0x75')]))){_0x3ae183['message']=utils['CAMPAIGN_STATUS'][_0xa1b1('0x73')];throw _0x3ae183[_0xa1b1('0x47')]+'\x20INTERVAL_IS_NULL';}};}function checkIsIVRCampaignActive(_0x3a8aa1){return function(){if(!utils['isIVRCampaignActive'](_0x3a8aa1)){_0x3a8aa1[_0xa1b1('0x65')]=utils[_0xa1b1('0x66')][_0xa1b1('0x76')];throw _0x3a8aa1[_0xa1b1('0x47')]+_0xa1b1('0x77');}};}function emitCampaignSummary(_0x444581){if(utils['isIVRCampaign'](_0x444581)){emit(util[_0xa1b1('0x46')](_0xa1b1('0x78'),_0x444581[_0xa1b1('0x47')]),_0xa1b1('0x79'),_0x444581);}}function loggerCatchQueueSummary(_0x6ddc67,_0x699d40){return function(_0x382aa0){clearPredictiveAttributes(_0x699d40);emitCampaignSummary(_0x699d40);loggerSyncQueueSummary['debug'](_0x6ddc67,util['inspect'](_0x382aa0,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x1c4478){if(_0x1c4478[_0xa1b1('0x7a')]){if(_0x1c4478[_0xa1b1('0x7b')]===0x0){_0x1c4478[_0xa1b1('0x7a')]=![];_0x1c4478[_0xa1b1('0x65')]=utils['CAMPAIGN_STATUS'][_0xa1b1('0x76')];loggerSyncQueueSummary[_0xa1b1('0x43')](_0xa1b1('0x7c'),_0x1c4478[_0xa1b1('0x47')],_0xa1b1('0x7d'));}else{_0x1c4478[_0xa1b1('0x65')]=utils[_0xa1b1('0x66')][_0xa1b1('0x7e')];loggerSyncQueueSummary['debug']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x1c4478[_0xa1b1('0x47')],_0xa1b1('0x7f'));}emitCampaignSummary(_0x1c4478);}}function myreject(_0x2fc784){return function(_0x5cded0){return _0x2fc784(msgResponse(_0xa1b1('0x80'),_0xa1b1('0x81'),JSON[_0xa1b1('0x71')](_0x5cded0)));};}Dialer[_0xa1b1('0x82')][_0xa1b1('0x83')]=function(_0x4112b8){return!_['isUndefined'](_0x4112b8)&&_0x4112b8&&!_['isUndefined'](_0x4112b8[_0xa1b1('0x47')])&&!_[_0xa1b1('0x50')](_0x4112b8[_0xa1b1('0x84')])&&_0x4112b8[_0xa1b1('0x84')]&&(this[_0xa1b1('0x23')][util['format'](_0xa1b1('0x85'),_0x4112b8['name'])][_0xa1b1('0x86')]===_0xa1b1('0x87')||this[_0xa1b1('0x23')][util['format'](_0xa1b1('0x85'),_0x4112b8[_0xa1b1('0x47')])][_0xa1b1('0x86')]===_0xa1b1('0x88'));};Dialer[_0xa1b1('0x82')][_0xa1b1('0x89')]=function(_0x4c071f){var _0x5023c9=this;return function(){if(!_0x5023c9[_0xa1b1('0x83')](_0x4c071f['Trunk'])){if(!_0x5023c9[_0xa1b1('0x83')](_0x4c071f[_0xa1b1('0x8a')])){_0x4c071f[_0xa1b1('0x65')]=utils['CAMPAIGN_STATUS'][_0xa1b1('0x8b')];throw _0x4c071f['name']+_0xa1b1('0x8c');}}};};Dialer['prototype'][_0xa1b1('0x8d')]=function(_0x51e473,_0x200b95,_0x538410,_0x35a10a){var _0x528745=this;return function(){var _0x28c3fd=!![];return _0x528745[_0xa1b1('0x8e')](_0x51e473,_0x200b95,_0x538410,_0x35a10a,_0x28c3fd);};};Dialer[_0xa1b1('0x82')]['checkIfTimeIntervals']=function(_0x5a42e3,_0x3ace32,_0x2b7c72,_0x48ad70){var _0x545f82=this;return function(){var _0x4c4c15=![];return _0x545f82['ifTimeIvr'](_0x5a42e3['Intervals'],_0x3ace32,_0x2b7c72,_0x48ad70,_0x4c4c15);};};Dialer[_0xa1b1('0x82')][_0xa1b1('0x8e')]=function(_0xa487d3,_0x1bbe78,_0x210e2f,_0x363f4c,_0x460362){var _0x4e4ff2=[];return new Promise(function(_0x222fd3,_0x1a6ba7){if(!isNotNull(_0xa487d3)){_0x363f4c['message']=utils[_0xa1b1('0x66')]['NULL_INTERVAL'];return _0x1a6ba7(msgResponse('ifTime',_0xa1b1('0x8f'),_0x210e2f+_0xa1b1('0x90')));}if(_[_0xa1b1('0x48')](_0xa487d3)){_0x363f4c[_0xa1b1('0x65')]=utils[_0xa1b1('0x66')]['EMPTY_INTERVAL'];return _0x1a6ba7(msgResponse(_0xa1b1('0x91'),_0xa1b1('0x8f'),_0x210e2f+'\x20Intervals\x20is\x20empty\x20'));}if(_0x1bbe78&&_['isUndefined'](config[_0xa1b1('0x92')][_0x1bbe78])){_0x363f4c[_0xa1b1('0x65')]=utils[_0xa1b1('0x66')][_0xa1b1('0x93')];return _0x1a6ba7(msgResponse(_0xa1b1('0x91'),_0xa1b1('0x8f'),_0x210e2f+_0xa1b1('0x94')+_0x1bbe78));}if(_[_0xa1b1('0x95')](_0xa487d3)){for(var _0x11052b=0x0;_0x11052b<_0xa487d3[_0xa1b1('0x96')];_0x11052b+=0x1){_0x4e4ff2[_0xa1b1('0x97')](ami[_0xa1b1('0x98')]({'action':_0xa1b1('0x99'),'command':util[_0xa1b1('0x46')]('iftime\x20%s,%s',_0xa487d3[_0x11052b][_0xa1b1('0x9a')],!_['isUndefined'](config[_0xa1b1('0x92')][_0x1bbe78])?_0x1bbe78:'')})[_0xa1b1('0x3e')](function(_0x16bf03){return _0x16bf03[_0xa1b1('0x9b')]['indexOf'](_0xa1b1('0x9c'))>=0x0;})[_0xa1b1('0x9d')](myreject(_0x1a6ba7)));}}else{_0x4e4ff2[_0xa1b1('0x97')](ami[_0xa1b1('0x98')]({'action':_0xa1b1('0x99'),'command':util['format'](_0xa1b1('0x9e'),_0xa487d3,!_[_0xa1b1('0x50')](config[_0xa1b1('0x92')][_0x1bbe78])?_0x1bbe78:'')})[_0xa1b1('0x3e')](function(_0x24f8f8){return _0x24f8f8[_0xa1b1('0x9b')][_0xa1b1('0x9f')](_0xa1b1('0x9c'))>=0x0;})[_0xa1b1('0x9d')](myreject(_0x1a6ba7)));}Promise['all'](_0x4e4ff2)['then'](function(_0x27c20d){var _0x272faa=_[_0xa1b1('0xa0')](_0x27c20d);if(_0x272faa){return _0x222fd3(_0x272faa);}else{_0x363f4c['message']=_0x460362?utils['CAMPAIGN_STATUS']['OVERTIME_GLOBAL_INTERVAL']:utils[_0xa1b1('0x66')][_0xa1b1('0xa1')];return _0x1a6ba7(msgResponse(_0xa1b1('0xa2'),_0xa1b1('0x8f'),_0xa1b1('0xa3')+_0x460362+'\x20'+_0x210e2f+'\x20Interval\x20is\x20overtime:\x20'+util[_0xa1b1('0x45')](_0xa487d3,{'showHidden':![],'depth':null})+_0xa1b1('0xa4')+_0x1bbe78));}})[_0xa1b1('0x9d')](function(_0x280fc5){return _0x1a6ba7(msgResponse(_0xa1b1('0x91'),'Failure',JSON[_0xa1b1('0x71')](_0x280fc5)));});});};Dialer[_0xa1b1('0x82')]['loopCampaigns']=function(){var _0x453f1a=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})[_0xa1b1('0x3e')](function(){setInterval(function(){_0x453f1a[_0xa1b1('0xa5')]();},0x3e8);});};Dialer[_0xa1b1('0x82')][_0xa1b1('0xa5')]=function(){var _0x20bc05=this;var _0x48f6a3;for(var _0x54e4ff in this['campaigns']){if(typeof this[_0xa1b1('0x21')][_0x54e4ff]!==_0xa1b1('0xa6')){_0x48f6a3=this['campaigns'][_0x54e4ff];if(utils[_0xa1b1('0xa7')](_0x48f6a3)&&utils[_0xa1b1('0xa8')](_0x48f6a3)){_0x48f6a3[_0xa1b1('0x7a')]=!![];Promise['resolve']()[_0xa1b1('0x3e')](checkIsIVRCampaignActive(_0x48f6a3))[_0xa1b1('0x3e')](checkInterval(_0x48f6a3))[_0xa1b1('0x3e')](_0x20bc05[_0xa1b1('0x89')](_0x48f6a3))[_0xa1b1('0x3e')](_0x20bc05[_0xa1b1('0x8d')](_0x48f6a3[_0xa1b1('0xa9')],_0x48f6a3[_0xa1b1('0xaa')],_0x48f6a3[_0xa1b1('0x47')],_0x48f6a3))['then'](_0x20bc05[_0xa1b1('0xab')](_0x48f6a3[_0xa1b1('0x72')],_0x48f6a3[_0xa1b1('0xaa')],_0x48f6a3[_0xa1b1('0x47')],_0x48f6a3))[_0xa1b1('0x3e')](_0x20bc05['launchHandleIvr'](_0x48f6a3))[_0xa1b1('0x9d')](loggerCatchQueueSummary(_0xa1b1('0xac'),_0x48f6a3));}else{notSendMessagesCampaign(_0x48f6a3);}}}};Dialer[_0xa1b1('0x82')][_0xa1b1('0xad')]=function(_0x3384b9){if(_0x3384b9['dialMethod']!==_0xa1b1('0x9')){clearPredictiveAttributes(_0x3384b9);}switch(_0x3384b9[_0xa1b1('0xae')]){case _0xa1b1('0xaf'):this['handlePower'](_0x3384b9,0x1);break;case'power':this['handlePower'](_0x3384b9,_0x3384b9[_0xa1b1('0xb0')]);break;case _0xa1b1('0x9'):this[_0xa1b1('0x9')](_0x3384b9);break;case _0xa1b1('0x8'):this[_0xa1b1('0xb1')](_0x3384b9,0x1);break;default:logger[_0xa1b1('0x62')](_0xa1b1('0xb2'),_0x3384b9[_0xa1b1('0x47')],_0xa1b1('0xb3'));}};Dialer['prototype'][_0xa1b1('0x91')]=function(_0x15b436,_0x1f8591){var _0x6d1cef=_0x15b436['dialTimezone'];var _0x1f8491=_0x1f8591?_0x15b436[_0xa1b1('0xa9')]:_0x15b436['Interval']['Intervals'];logger[_0xa1b1('0xb4')](_0xa1b1('0xb5'),_0x1f8491,_0x6d1cef,_0x15b436[_0xa1b1('0x47')],util[_0xa1b1('0x46')](_0xa1b1('0xb6'),_0x15b436[_0xa1b1('0x47')],_0x15b436['id']));var _0x24840c=null;return Interval[_0xa1b1('0xb7')](_0x1f8491,_0x6d1cef)[_0xa1b1('0x3e')](function(_0x2f7cd6){if(_0x2f7cd6===!![]){return _0x2f7cd6;}else{_0x15b436[_0xa1b1('0x65')]=_0x1f8591?utils[_0xa1b1('0x66')][_0xa1b1('0xb8')]:utils['CAMPAIGN_STATUS']['OVERTIME_INTERVAL'];_0x24840c=msgResponse(_0xa1b1('0xa2'),_0xa1b1('0x8f'),'Global:\x20'+_0x1f8591+'\x20'+_0x15b436['name']+_0xa1b1('0xb9')+util['inspect'](_0x1f8491,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x6d1cef);}if(_0x24840c!==null){logger[_0xa1b1('0xb4')]('Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:',_0x24840c);_0x24840c[_0xa1b1('0xba')]=_0x1f8591;throw _0x24840c;}})['catch'](function(_0x3a6a2f){logger['error'](_0xa1b1('0xbb'),_0x3a6a2f);throw msgResponse('[ifTime][Action]','Error',util[_0xa1b1('0x45')](_0x3a6a2f,{'showHidden':![],'depth':null}));});};Dialer[_0xa1b1('0x82')]['syncAgentConnect']=function(_0x3010c0){if(this[_0xa1b1('0x20')][_0x3010c0[_0xa1b1('0xbc')]]){if(this[_0xa1b1('0x27')][_0x3010c0[_0xa1b1('0xbd')]]&&this[_0xa1b1('0x27')][_0x3010c0[_0xa1b1('0xbd')]][_0xa1b1('0x41')]!=='ivr'){this['updateOriginated'](this[_0xa1b1('0x20')][_0x3010c0[_0xa1b1('0xbc')]]);this[_0xa1b1('0x27')][_0x3010c0['uniqueid']][_0xa1b1('0xbe')]=moment()[_0xa1b1('0x46')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xa1b1('0x82')][_0xa1b1('0x32')]=function(_0x597033){var _0x3ac0ca=this['uniqueId'][_0x597033[_0xa1b1('0xbd')]];if(this['voiceQueues'][_0x597033[_0xa1b1('0xbc')]]){if(_0x3ac0ca&&_0x3ac0ca[_0xa1b1('0x41')]!=='ivr'){delete this[_0xa1b1('0x27')][_0x597033[_0xa1b1('0xbd')]];this[_0xa1b1('0x20')][_0x597033['queue']]['outboundAnswerCallsDay']+=0x1;var _0x45dee8=new AgentComplete(_0x3ac0ca,_0x597033);if(_0x597033['reason']==='agent'){_0x45dee8[_0xa1b1('0xbf')]=this[_0xa1b1('0x20')][_0x597033[_0xa1b1('0xbc')]][_0xa1b1('0xc0')]&&this[_0xa1b1('0x20')][_0x597033[_0xa1b1('0xbc')]][_0xa1b1('0xc1')]?moment()[_0xa1b1('0x46')](_0xa1b1('0xc2')):undefined;}hopperUtils[_0xa1b1('0xc3')](_0x45dee8)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0xc4')));hopperUtils[_0xa1b1('0xc5')](_0x45dee8)['catch'](loggerCatch(_0xa1b1('0xc6')));}}};Dialer['prototype'][_0xa1b1('0xc7')]=function(_0x1fd312){var _0x467e90=this['uniqueId'][_0x1fd312['uniqueid']];var _0x4b6e3b=this;var _0x5df357=![];var _0x2e29e0;var _0x427732;if(this['voiceQueues'][_0x1fd312['queue']]){if(_0x467e90&&_0x467e90[_0xa1b1('0x41')]!==_0xa1b1('0xc8')){delete this[_0xa1b1('0x27')][_0x1fd312[_0xa1b1('0xbd')]];this[_0xa1b1('0xc9')](this[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]]);_0x467e90[_0xa1b1('0xca')]=moment()[_0xa1b1('0x46')]('YYYY-MM-DD\x20HH:mm:ss');var _0x265425=new QueueCallerAbandon(_0x467e90,_0x1fd312);if(utils['getSeconds'](_0x467e90[_0xa1b1('0xca')],_0x467e90[_0xa1b1('0xcb')])>=_0x467e90[_0xa1b1('0xcc')]){this[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]][_0xa1b1('0x4d')]+=0x1;this[_0xa1b1('0x20')][_0x1fd312['queue']][_0xa1b1('0xcd')]+=0x1;this[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]][_0xa1b1('0xce')]+=0x1;_0x265425[_0xa1b1('0x6c')]=0xa;_0x265425[_0xa1b1('0x6d')]='Drop';_0x265425['dropreason']=_0xa1b1('0xcf');_0x265425[_0xa1b1('0xbf')]=this[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]]['dialQueueProject2']?moment()[_0xa1b1('0x46')](_0xa1b1('0xc2')):undefined;_0x265425[_0xa1b1('0xd0')]+=0x1;_0x265425[_0xa1b1('0xd1')]+=0x1;_0x2e29e0=this['voiceQueues'][_0x1fd312[_0xa1b1('0xbc')]][_0xa1b1('0xd2')];_0x427732=this[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]][_0xa1b1('0xd3')];hopperUtils[_0xa1b1('0xd4')](_0x265425,_0x265425[_0xa1b1('0x6c')],_0x467e90[_0xa1b1('0xd5')])[_0xa1b1('0x3e')](function(_0x121140){_0x5df357=_0x121140[_0xa1b1('0xd6')]==0x1;if(_0x265425[_0xa1b1('0xd0')]>=_0x4b6e3b[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]][_0xa1b1('0xd7')]){_0x4b6e3b[_0xa1b1('0xd8')](_0x265425,_0x121140[_0xa1b1('0xd6')]);}else{hopperUtils[_0xa1b1('0xd9')]({'active':![],'countdropretry':_0x265425[_0xa1b1('0xd0')],'scheduledat':moment()[_0xa1b1('0xda')](_0x4b6e3b[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]][_0xa1b1('0xd2')],'minutes')[_0xa1b1('0x46')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x467e90[_0xa1b1('0xdb')],'ListId':_0x467e90[_0xa1b1('0xdc')],'VoiceQueueId':_0x467e90[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x467e90['CampaignId']||undefined})[_0xa1b1('0x9d')](loggerCatch('[rescheduleContact][Drop]'));var _0x382b47=new History(_0x265425);_0x382b47['state']=0xa;_0x382b47['statedesc']=_0xa1b1('0xde');_0x382b47[_0xa1b1('0x6e')]=moment()[_0xa1b1('0x46')](_0xa1b1('0xc2'));_0x382b47[_0xa1b1('0xdf')]=_0x382b47[_0xa1b1('0x6e')];_0x382b47[_0xa1b1('0xe0')]=_0x265425[_0xa1b1('0xe0')];_0x382b47[_0xa1b1('0xe1')]=_0x265425[_0xa1b1('0xe1')];hopperUtils[_0xa1b1('0xc3')](_0x382b47)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0xe2')));}})[_0xa1b1('0x3e')](function(){if(_0x5df357)hopperUtils[_0xa1b1('0xe3')](_0x265425,_0x2e29e0,_0x427732)[_0xa1b1('0x3e')](function(){return 0x1;});});}else{this[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]][_0xa1b1('0x4e')]+=0x1;this[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]]['outboundDropCallsDayCallersExit']+=0x1;_0x265425['state']=0xb;_0x265425[_0xa1b1('0x6d')]=_0xa1b1('0xe4');_0x265425[_0xa1b1('0xe5')]=_0xa1b1('0xe6');_0x265425['countabandonedretry']+=0x1;_0x265425[_0xa1b1('0xd1')]+=0x1;_0x2e29e0=this[_0xa1b1('0x20')][_0x1fd312['queue']][_0xa1b1('0xe7')];_0x427732=this[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]][_0xa1b1('0xd3')];hopperUtils[_0xa1b1('0xd4')](_0x265425,_0x265425[_0xa1b1('0x6c')],_0x467e90[_0xa1b1('0xd5')])[_0xa1b1('0x3e')](function(_0x1a226c){if(_0x265425['countabandonedretry']>=_0x4b6e3b['voiceQueues'][_0x1fd312['queue']][_0xa1b1('0xe8')]){_0x4b6e3b[_0xa1b1('0xd8')](_0x265425,_0x1a226c[_0xa1b1('0xd6')]);}else{hopperUtils[_0xa1b1('0xd9')]({'active':![],'countabandonedretry':_0x265425[_0xa1b1('0xe9')],'scheduledat':moment()[_0xa1b1('0xda')](_0x4b6e3b[_0xa1b1('0x20')][_0x1fd312[_0xa1b1('0xbc')]]['dialAbandonedRetryFrequency'],_0xa1b1('0xea'))[_0xa1b1('0x46')](_0xa1b1('0xc2')),'ContactId':_0x467e90[_0xa1b1('0xdb')],'ListId':_0x467e90['ListId'],'VoiceQueueId':_0x467e90[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x467e90['CampaignId']||undefined})['catch'](loggerCatch(_0xa1b1('0xeb')));var _0x4d235b=new History(_0x265425);_0x4d235b['state']=0xb;_0x4d235b['statedesc']=_0xa1b1('0xe4');_0x4d235b[_0xa1b1('0x6e')]=moment()['format'](_0xa1b1('0xc2'));_0x4d235b[_0xa1b1('0xdf')]=_0x4d235b[_0xa1b1('0x6e')];_0x4d235b[_0xa1b1('0xe0')]=_0x265425[_0xa1b1('0xe0')];_0x4d235b[_0xa1b1('0xe1')]=_0x265425[_0xa1b1('0xe1')];hopperUtils[_0xa1b1('0xc3')](_0x4d235b)['catch'](loggerCatch('[syncAgentComplete][createHistory][11]'));}})[_0xa1b1('0x3e')](function(){if(_0x5df357)hopperUtils[_0xa1b1('0xe3')](_0x265425,_0x2e29e0,_0x427732)['then'](function(){return 0x1;});});}}}};Dialer[_0xa1b1('0x82')][_0xa1b1('0x37')]=function(_0x4f2cf7){if(this['actions'][_0x4f2cf7['uniqueid']]){this['actions'][_0x4f2cf7[_0xa1b1('0xbd')]]['channel']=_0x4f2cf7[_0xa1b1('0xec')];}if(this[_0xa1b1('0x27')][_0x4f2cf7[_0xa1b1('0xbd')]]){this[_0xa1b1('0x27')][_0x4f2cf7[_0xa1b1('0xbd')]]['channel']=_0x4f2cf7[_0xa1b1('0xec')];}};Dialer[_0xa1b1('0x82')][_0xa1b1('0x3a')]=function(_0x262475){if(!this[_0xa1b1('0xed')][_0x262475[_0xa1b1('0xee')]]){return;}var _0x5aeb8a=this['voiceQueues'][this[_0xa1b1('0xed')][_0x262475['actionid']]['queue']][_0xa1b1('0xef')]||_0xa1b1('0xf0');if(_0x5aeb8a==='roundrobin'){if(this[_0xa1b1('0xed')][_0x262475[_0xa1b1('0xee')]]&&_[_0xa1b1('0xf1')](this['actions'][_0x262475[_0xa1b1('0xee')]][_0xa1b1('0xf2')])&&_0x262475['status']==='1'&&_0x262475['paused']==='0'){if(this[_0xa1b1('0x22')][_0x262475[_0xa1b1('0xf3')]]){if(!this[_0xa1b1('0x22')][_0x262475[_0xa1b1('0xf3')]][_0xa1b1('0xf2')]){this['agents'][_0x262475[_0xa1b1('0xf3')]]['locked']=!![];this[_0xa1b1('0xed')][_0x262475[_0xa1b1('0xee')]][_0xa1b1('0xf2')]=!![];this[_0xa1b1('0xed')][_0x262475['actionid']][_0xa1b1('0xf3')]=_0x262475[_0xa1b1('0xf3')];}}}}else if(_0x5aeb8a===_0xa1b1('0xf0')){if(this[_0xa1b1('0xed')][_0x262475[_0xa1b1('0xee')]]){if(this[_0xa1b1('0x22')][_0x262475[_0xa1b1('0xf3')]]){this[_0xa1b1('0xed')][_0x262475[_0xa1b1('0xee')]][_0xa1b1('0xf3')]=_0x262475['stateinterface'];if(_['isNil'](this[_0xa1b1('0x2b')][this['actions'][_0x262475[_0xa1b1('0xee')]][_0xa1b1('0xbc')]])){this[_0xa1b1('0x2b')][this[_0xa1b1('0xed')][_0x262475[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]=[];}this[_0xa1b1('0x2b')][this[_0xa1b1('0xed')][_0x262475[_0xa1b1('0xee')]][_0xa1b1('0xbc')]][_0xa1b1('0x97')](_[_0xa1b1('0x5c')](_[_0xa1b1('0xf4')](this[_0xa1b1('0xed')][_0x262475['actionid']],[_0xa1b1('0xf5'),'stateinterface']),{'status':_0x262475[_0xa1b1('0x86')],'paused':_0x262475[_0xa1b1('0xf6')]}));}}}};Dialer[_0xa1b1('0x82')]['syncQueueStatusComplete']=function(_0x5dbaf1){if(!this['actions'][_0x5dbaf1[_0xa1b1('0xee')]]){return;}var _0x1ab585=this;var _0x3a5081=this[_0xa1b1('0x20')][this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]];var _0xf0d67d=_0x3a5081['strategy']||_0xa1b1('0xf0');if(_0xf0d67d===_0xa1b1('0xf7')){if(this[_0xa1b1('0xed')][_0x5dbaf1['actionid']]&&this[_0xa1b1('0xed')][_0x5dbaf1['actionid']]['stateinterface']){this['preview'][_0xa1b1('0xf8')](this['actions'][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xf5')],this['actions'][_0x5dbaf1[_0xa1b1('0xee')]]['stateinterface'])[_0xa1b1('0x9d')](function(_0x53641e){logger[_0xa1b1('0x62')]('[Catch][Preview][syncQueueStatusComplete]',util[_0xa1b1('0x45')](_0x53641e,{'showHidden':![],'depth':null}));})[_0xa1b1('0x1f')](function(){_0x1ab585[_0xa1b1('0xc9')](_0x1ab585['voiceQueues'][_0x1ab585[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]]['queue']]);_0x1ab585[_0xa1b1('0x22')][_0x1ab585[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xf3')]][_0xa1b1('0xf2')]=![];delete _0x1ab585[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]];unlockQueueStatus(_0x3a5081);});}else{this[_0xa1b1('0xc9')](this[_0xa1b1('0x20')][this[_0xa1b1('0xed')][_0x5dbaf1['actionid']][_0xa1b1('0xbc')]]);hopperUtils[_0xa1b1('0xd9')]({'active':![],'ContactId':this[_0xa1b1('0xed')][_0x5dbaf1['actionid']][_0xa1b1('0xdb')],'ListId':this['actions'][_0x5dbaf1[_0xa1b1('0xee')]]['ListId'],'VoiceQueueId':this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0xfa')));delete this[_0xa1b1('0xed')][_0x5dbaf1['actionid']];unlockQueueStatus(_0x3a5081);}}else if(_0xf0d67d===_0xa1b1('0xf0')){var _0x56a4f4;if(this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]]&&!_[_0xa1b1('0x48')](this[_0xa1b1('0x2b')][this['actions'][_0x5dbaf1[_0xa1b1('0xee')]]['queue']])){if(this[_0xa1b1('0x2c')][_0x1ab585[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]){this[_0xa1b1('0x2c')][_0x1ab585[_0xa1b1('0xed')][_0x5dbaf1['actionid']]['queue']]=this[_0xa1b1('0x2c')][this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]]['queue']]?this[_0xa1b1('0x2c')][this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]:this[_0xa1b1('0x2b')][this['actions'][_0x5dbaf1[_0xa1b1('0xee')]]['queue']]?this[_0xa1b1('0x2b')][this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]][_0xa1b1('0xfb')]||0x0:0x0;}this[_0xa1b1('0x2b')][this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]['_rr']=this['queueBookedRR'][this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]]['queue']];for(var _0x5595df=0x0;_0x5595df<this['queueBooked'][this[_0xa1b1('0xed')][_0x5dbaf1['actionid']][_0xa1b1('0xbc')]][_0xa1b1('0x96')];_0x5595df+=0x1){_0x56a4f4=rr(this['queueBooked'][this['actions'][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]);this[_0xa1b1('0x2c')][_0x1ab585[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]=this[_0xa1b1('0x2b')][this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]][_0xa1b1('0xfb')];if(_0x56a4f4[_0xa1b1('0x86')]==='1'&&_0x56a4f4['paused']==='0'){break;}}if(!_[_0xa1b1('0xf1')](_0x56a4f4)){this[_0xa1b1('0x22')][_0x56a4f4[_0xa1b1('0xf3')]][_0xa1b1('0xfc')]=_[_0xa1b1('0x50')](this[_0xa1b1('0x22')][_0x56a4f4[_0xa1b1('0xf3')]]['unlockRR'])?!![]:this[_0xa1b1('0x22')][_0x56a4f4[_0xa1b1('0xf3')]][_0xa1b1('0xfc')];}loggerBooked[_0xa1b1('0x49')]('[booked][RR]',_0x5dbaf1['actionid'],_0xa1b1('0xfd'),JSON[_0xa1b1('0x71')](_[_0xa1b1('0xf4')](this['agents'][_0x56a4f4[_0xa1b1('0xf3')]],[_0xa1b1('0x47'),'unlockRR'])),_0xa1b1('0xfe'),JSON[_0xa1b1('0x71')](_0x56a4f4['idHopper']));if(!_[_0xa1b1('0xf1')](_0x56a4f4)&&_0x56a4f4[_0xa1b1('0x86')]==='1'&&_0x56a4f4[_0xa1b1('0xf6')]==='0'&&this[_0xa1b1('0x22')][_0x56a4f4[_0xa1b1('0xf3')]][_0xa1b1('0xfc')]){this[_0xa1b1('0x22')][_0x56a4f4[_0xa1b1('0xf3')]][_0xa1b1('0xfc')]=![];this['queueBooked'][_0x1ab585[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]=[];this[_0xa1b1('0xff')][_0xa1b1('0xf8')](_0x56a4f4[_0xa1b1('0xf5')],_0x56a4f4[_0xa1b1('0xf3')])['catch'](function(_0x80712c){logger[_0xa1b1('0x62')](_0xa1b1('0x100'),util[_0xa1b1('0x45')](_0x80712c,{'showHidden':![],'depth':null}));})['finally'](function(){_0x1ab585[_0xa1b1('0xc9')](_0x1ab585[_0xa1b1('0x20')][_0x1ab585['actions'][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]);setTimeout(function(){_0x1ab585['agents'][_0x56a4f4[_0xa1b1('0xf3')]][_0xa1b1('0xfc')]=!![];loggerBooked[_0xa1b1('0x49')](_0xa1b1('0x101'),_0x5dbaf1[_0xa1b1('0xee')],_0xa1b1('0xfd'),JSON[_0xa1b1('0x71')](_[_0xa1b1('0xf4')](_0x1ab585[_0xa1b1('0x22')][_0x56a4f4[_0xa1b1('0xf3')]],[_0xa1b1('0x47'),_0xa1b1('0xfc')])),_0xa1b1('0xfe'),JSON[_0xa1b1('0x71')](_0x56a4f4[_0xa1b1('0xf5')]));},0xc7);delete _0x1ab585[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]];unlockQueueStatus(_0x3a5081,_0x5dbaf1['actionid']);});}else{loggerBooked[_0xa1b1('0x49')](_0xa1b1('0x102'));this[_0xa1b1('0xc9')](this[_0xa1b1('0x20')][this[_0xa1b1('0xed')][_0x5dbaf1['actionid']]['queue']]);hopperUtils[_0xa1b1('0xd9')]({'active':![],'ContactId':this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xdb')],'ListId':this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xdc')],'VoiceQueueId':this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xdd')]||undefined,'CampaignId':this[_0xa1b1('0xed')][_0x5dbaf1['actionid']][_0xa1b1('0xf9')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xa1b1('0xed')][_0x5dbaf1['actionid']];unlockQueueStatus(_0x3a5081);}}else{loggerBooked['info'](_0xa1b1('0x103'));this['updateOriginated'](this[_0xa1b1('0x20')][this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xbc')]]);hopperUtils[_0xa1b1('0xd9')]({'active':![],'ContactId':this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xdb')],'ListId':this['actions'][_0x5dbaf1['actionid']][_0xa1b1('0xdc')],'VoiceQueueId':this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xdd')]||undefined,'CampaignId':this['actions'][_0x5dbaf1[_0xa1b1('0xee')]]['CampaignId']||undefined})[_0xa1b1('0x9d')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0xa1b1('0xed')][_0x5dbaf1['actionid']];unlockQueueStatus(_0x3a5081);}}else{loggerBooked['info']('[booked][unlock3]');this[_0xa1b1('0xc9')](this[_0xa1b1('0x20')][this[_0xa1b1('0xed')][_0x5dbaf1['actionid']]['queue']]);hopperUtils[_0xa1b1('0xd9')]({'active':![],'ContactId':this['actions'][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xdb')],'ListId':this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xdc')],'VoiceQueueId':this['actions'][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xdd')]||undefined,'CampaignId':this['actions'][_0x5dbaf1[_0xa1b1('0xee')]][_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x104')));delete this[_0xa1b1('0xed')][_0x5dbaf1[_0xa1b1('0xee')]];unlockQueueStatus(_0x3a5081);}};Dialer['prototype'][_0xa1b1('0x31')]=function(_0xbb2d1e){var _0x2a1044=this[_0xa1b1('0xed')][_0xbb2d1e['actionid']];if(_0x2a1044){delete this['actions'][_0xbb2d1e['actionid']];_0x2a1044['responsetime']=moment()[_0xa1b1('0x46')](_0xa1b1('0xc2'));var _0xa6dff1=_0x2a1044[_0xa1b1('0x41')]===_0xa1b1('0xc8')?this['campaigns'][_0x2a1044[_0xa1b1('0xbc')]]:this[_0xa1b1('0x20')][_0x2a1044['getQueue']()];if(_0xbb2d1e['response']!==_0xa1b1('0x105')){this['updateOriginated'](_0xa6dff1);return this[_0xa1b1('0x106')](_0x2a1044,_0xa6dff1,_0xbb2d1e)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x107')));}this['uniqueId'][_0xbb2d1e['uniqueid']]=_0x2a1044;}};Dialer[_0xa1b1('0x82')][_0xa1b1('0x39')]=function(_0x79e7e1){var _0x179416=this;var _0x20190a=this['uniqueId'][_0x79e7e1[_0xa1b1('0xbd')]];var _0xf2f43f;if(!_[_0xa1b1('0xf1')](_0x79e7e1)&&!_[_0xa1b1('0xf1')](_0x79e7e1[_0xa1b1('0x108')])&&!_['isNil'](_0x79e7e1[_0xa1b1('0x108')][_0xa1b1('0x109')])&&_0x79e7e1[_0xa1b1('0x10a')]===_0xa1b1('0x10b')&&_0x20190a){if(_0x20190a[_0xa1b1('0x41')]!==_0xa1b1('0xc8')&&this[_0xa1b1('0x20')][_0x20190a[_0xa1b1('0xbc')]][_0xa1b1('0x10c')]&&_0x79e7e1[_0xa1b1('0x10d')]===_0xa1b1('0x10e')){delete this[_0xa1b1('0x27')][_0x79e7e1[_0xa1b1('0xbd')]];this['updateOriginated'](this[_0xa1b1('0x20')][_0x20190a[_0xa1b1('0xbc')]]);this[_0xa1b1('0x20')][_0x20190a['queue']][_0xa1b1('0x10f')]+=0x1;this['voiceQueues'][_0x20190a['queue']][_0xa1b1('0x110')]+=0x1;_0xf2f43f=new Hangup(_0x20190a,_0x79e7e1);_0xf2f43f[_0xa1b1('0x6c')]=0x12;_0xf2f43f[_0xa1b1('0x6d')]='HangupInAMD';_0xf2f43f['membername']=_0xa1b1('0x111');ami[_0xa1b1('0x40')]('custom:amd',ut[_0xa1b1('0x112')](_0xf2f43f,'amd'));this['saveInDb'](_0xf2f43f,'[syncHangupInAMD][createHistory]',_0xa1b1('0x113'));}if(_0x20190a[_0xa1b1('0x41')]!=='ivr'&&this[_0xa1b1('0x20')][_0x20190a[_0xa1b1('0xbc')]][_0xa1b1('0x10c')]&&_0x79e7e1[_0xa1b1('0x10d')]===_0xa1b1('0x114')){return new Promise(function(_0x2a8b51,_0x5861ce){delete _0x179416[_0xa1b1('0x27')][_0x79e7e1[_0xa1b1('0xbd')]];_0x179416['updateOriginated'](_0x179416[_0xa1b1('0x20')][_0x20190a[_0xa1b1('0xbc')]]);_0x179416[_0xa1b1('0x20')][_0x20190a[_0xa1b1('0xbc')]][_0xa1b1('0x10f')]+=0x1;_0x179416['voiceQueues'][_0x20190a[_0xa1b1('0xbc')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x4501d1=_0x179416['voiceQueues'][_0x20190a[_0xa1b1('0xbc')]];var _0x5d0bf1=new Hangup(_0x20190a,_0x79e7e1);_0x5d0bf1[_0xa1b1('0x6c')]=0x13;_0x5d0bf1[_0xa1b1('0x6d')]='Machine';_0x5d0bf1[_0xa1b1('0x115')]=_0xa1b1('0x111');_0x5d0bf1[_0xa1b1('0x116')]+=0x1;_0x5d0bf1[_0xa1b1('0xd1')]+=0x1;_0x5d0bf1['amd']=!![];ami['emit'](_0xa1b1('0x117'),ut[_0xa1b1('0x112')](_0x5d0bf1,_0xa1b1('0x118')));hopperUtils['createHistory'](_0x5d0bf1)[_0xa1b1('0x9d')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x5d0bf1[_0xa1b1('0x119')]+_0x5d0bf1[_0xa1b1('0x11a')]+_0x5d0bf1[_0xa1b1('0x11b')]+_0x5d0bf1['countnosuchnumberretry']+_0x5d0bf1[_0xa1b1('0xd0')]+_0x5d0bf1[_0xa1b1('0xe9')]+_0x5d0bf1[_0xa1b1('0x116')]+_0x5d0bf1[_0xa1b1('0x11c')]>=_0x4501d1['dialGlobalMaxRetry']){_0x179416[_0xa1b1('0x11d')](_0x5d0bf1,_0x2a8b51,_0x5861ce,_0xa1b1('0x11e'));}else{if(_0x5d0bf1['countmachineretry']>=_0x4501d1[_0xa1b1('0x11f')]){_0x179416[_0xa1b1('0x120')](_0x5d0bf1,_0x2a8b51,_0x5861ce,_0xa1b1('0x121'));}else{hopperUtils[_0xa1b1('0xd9')]({'active':![],'countmachineretry':_0x5d0bf1[_0xa1b1('0x116')],'scheduledat':moment()['add'](_0x4501d1['dialMachineRetryFrequency'],'minutes')[_0xa1b1('0x46')](_0xa1b1('0xc2')),'ContactId':_0x5d0bf1[_0xa1b1('0xdb')],'ListId':_0x5d0bf1[_0xa1b1('0xdc')],'VoiceQueueId':_0x5d0bf1[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x5d0bf1['CampaignId']||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x122')));_0x2a8b51({'reschedule':0x1});}}});}if(_0x20190a[_0xa1b1('0x41')]==='ivr'&&this[_0xa1b1('0x21')][_0x20190a['queue']][_0xa1b1('0x10c')]&&_0x79e7e1[_0xa1b1('0x10d')]===_0xa1b1('0x10e')){delete this[_0xa1b1('0x27')][_0x79e7e1[_0xa1b1('0xbd')]];this[_0xa1b1('0xc9')](this[_0xa1b1('0x21')][_0x20190a[_0xa1b1('0xbc')]]);_0xf2f43f=new Hangup(_0x20190a,_0x79e7e1);_0xf2f43f[_0xa1b1('0x6c')]=0x12;_0xf2f43f[_0xa1b1('0x6d')]='HangupInAMD';_0xf2f43f[_0xa1b1('0x115')]=_0xa1b1('0x111');ami[_0xa1b1('0x40')](_0xa1b1('0x117'),ut[_0xa1b1('0x112')](_0xf2f43f,_0xa1b1('0x118')));this['saveInDb'](_0xf2f43f,_0xa1b1('0x123'),_0xa1b1('0x124'));}if(_0x20190a['type']===_0xa1b1('0xc8')&&this['campaigns'][_0x20190a[_0xa1b1('0xbc')]]['dialAMDActive']&&_0x79e7e1[_0xa1b1('0x10d')]===_0xa1b1('0x114')){return new Promise(function(_0x5177f,_0x5e9135){delete _0x179416['uniqueId'][_0x79e7e1['uniqueid']];_0x179416[_0xa1b1('0xc9')](_0x179416[_0xa1b1('0x21')][_0x20190a[_0xa1b1('0xbc')]]);_0x179416['campaigns'][_0x20190a['queue']][_0xa1b1('0x10f')]+=0x1;_0x179416[_0xa1b1('0x21')][_0x20190a[_0xa1b1('0xbc')]][_0xa1b1('0x110')]+=0x1;var _0x497650=_0x179416['campaigns'][_0x20190a[_0xa1b1('0xbc')]];var _0x158494=new Hangup(_0x20190a,_0x79e7e1);_0x158494['state']=0x13;_0x158494['statedesc']='Machine';_0x158494[_0xa1b1('0x115')]=_0xa1b1('0x111');_0x158494[_0xa1b1('0x116')]+=0x1;_0x158494['countglobal']+=0x1;_0x158494[_0xa1b1('0x118')]=!![];ami['emit'](_0xa1b1('0x117'),ut['buildObj'](_0x158494,'amd'));hopperUtils[_0xa1b1('0xc3')](_0x158494)['catch'](loggerCatch(_0xa1b1('0x125')));if(_0x158494['countbusyretry']+_0x158494[_0xa1b1('0x11a')]+_0x158494[_0xa1b1('0x11b')]+_0x158494[_0xa1b1('0x126')]+_0x158494[_0xa1b1('0xd0')]+_0x158494[_0xa1b1('0xe9')]+_0x158494[_0xa1b1('0x116')]+_0x158494[_0xa1b1('0x11c')]>=_0x497650[_0xa1b1('0x127')]){_0x179416['stateGlobal'](_0x158494,_0x5177f,_0x5e9135,_0xa1b1('0x11e'));}else{if(_0x158494['countmachineretry']>=_0x497650[_0xa1b1('0x11f')]){_0x179416[_0xa1b1('0x120')](_0x158494,_0x5177f,_0x5e9135,_0xa1b1('0x121'));}else{hopperUtils[_0xa1b1('0xd9')]({'active':![],'countmachineretry':_0x158494[_0xa1b1('0x116')],'scheduledat':moment()['add'](_0x497650[_0xa1b1('0x128')],_0xa1b1('0xea'))[_0xa1b1('0x46')](_0xa1b1('0xc2')),'ContactId':_0x158494[_0xa1b1('0xdb')],'ListId':_0x158494['ListId'],'VoiceQueueId':_0x158494['VoiceQueueId']||undefined,'CampaignId':_0x158494[_0xa1b1('0xf9')]||undefined})['catch'](loggerCatch(_0xa1b1('0x122')));_0x5177f({'reschedule':0x1});}}});}}};Dialer[_0xa1b1('0x82')][_0xa1b1('0x35')]=function(_0x1402b8){var _0x19cbf6=this[_0xa1b1('0x27')][_0x1402b8[_0xa1b1('0xbd')]];var _0x568649;if(_0x19cbf6&&_0x19cbf6[_0xa1b1('0x41')]===_0xa1b1('0xc8')){delete this[_0xa1b1('0x27')][_0x1402b8[_0xa1b1('0xbd')]];this[_0xa1b1('0xc9')](this[_0xa1b1('0x21')][_0x19cbf6[_0xa1b1('0xbc')]]);this[_0xa1b1('0x21')][_0x19cbf6[_0xa1b1('0xbc')]][_0xa1b1('0x129')]+=0x1;_0x568649=new Hangup(_0x19cbf6,_0x1402b8);hopperUtils[_0xa1b1('0xc3')](_0x568649)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x12a')));hopperUtils[_0xa1b1('0xc5')](_0x568649)[_0xa1b1('0x9d')](loggerCatch('[syncHangupIvr]'));}if(_0x19cbf6&&_0x19cbf6[_0xa1b1('0x41')]!=='ivr'&&isNotNull(this[_0xa1b1('0x20')][_0x19cbf6[_0xa1b1('0xbc')]][_0xa1b1('0x12b')])){delete this[_0xa1b1('0x27')][_0x1402b8[_0xa1b1('0xbd')]];this[_0xa1b1('0xc9')](this['voiceQueues'][_0x19cbf6[_0xa1b1('0xbc')]]);this['voiceQueues'][_0x19cbf6[_0xa1b1('0xbc')]][_0xa1b1('0x10f')]+=0x1;this[_0xa1b1('0x20')][_0x19cbf6[_0xa1b1('0xbc')]][_0xa1b1('0x110')]+=0x1;_0x568649=new Hangup(_0x19cbf6,_0x1402b8);_0x568649[_0xa1b1('0x6c')]=0x10;_0x568649['statedesc']=_0xa1b1('0x12c');_0x568649['membername']=_0xa1b1('0x12d');hopperUtils[_0xa1b1('0xc3')](_0x568649)['catch'](loggerCatch(_0xa1b1('0x12a')));hopperUtils[_0xa1b1('0xc5')](_0x568649)[_0xa1b1('0x9d')](loggerCatch('[syncHangupIvr]'));}if(_0x19cbf6&&_0x19cbf6[_0xa1b1('0x41')]!==_0xa1b1('0xc8')&&!isNotNull(this[_0xa1b1('0x20')][_0x19cbf6['queue']]['dialQueueProject'])){if(_0x1402b8[_0xa1b1('0x12e')]==='Normal\x20Clearing'){delete this[_0xa1b1('0x27')][_0x1402b8['uniqueid']];this[_0xa1b1('0x20')][_0x19cbf6[_0xa1b1('0xbc')]][_0xa1b1('0x10f')]+=0x1;const _0x2147e7=new AgentComplete(_0x19cbf6,_0x1402b8);_0x2147e7['CampaignId']=this[_0xa1b1('0x20')][_0x19cbf6[_0xa1b1('0xbc')]]['id'];hopperUtils['createHistory'](_0x2147e7)['catch'](loggerCatch(_0xa1b1('0xc4')));hopperUtils[_0xa1b1('0xc5')](_0x2147e7)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0xc6')));}else{delete this[_0xa1b1('0x27')][_0x1402b8['uniqueid']];this[_0xa1b1('0xc9')](this[_0xa1b1('0x20')][_0x19cbf6[_0xa1b1('0xbc')]]);this['voiceQueues'][_0x19cbf6[_0xa1b1('0xbc')]][_0xa1b1('0x12f')]+=0x1;_0x568649=new Hangup(_0x19cbf6,_0x1402b8);_0x568649[_0xa1b1('0x6c')]=0xc;_0x568649['statedesc']=_0x1402b8['cause-txt'];_0x568649[_0xa1b1('0x115')]=_0xa1b1('0x130');hopperUtils[_0xa1b1('0xc3')](_0x568649)['catch'](loggerCatch(_0xa1b1('0x12a')));hopperUtils[_0xa1b1('0xc5')](_0x568649)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x131')));}}};Dialer[_0xa1b1('0x82')]['syncQueueSummary']=function(_0x1ef3a0){var _0x3cde2d=this;if(!_0x3cde2d[_0xa1b1('0x2d')][_0x1ef3a0[_0xa1b1('0x47')]]){_0x3cde2d[_0xa1b1('0x2d')][_0x1ef3a0[_0xa1b1('0x47')]]={'running':![]};}else if(_0x3cde2d[_0xa1b1('0x2d')][_0x1ef3a0[_0xa1b1('0x47')]]['running']===!![]){return;}else if(_0x3cde2d['queuesSummary'][_0x1ef3a0[_0xa1b1('0x47')]][_0xa1b1('0x132')]===![]){_0x3cde2d[_0xa1b1('0x2d')][_0x1ef3a0[_0xa1b1('0x47')]][_0xa1b1('0x132')]=!![];}var _0x5b1164=_0x3cde2d[_0xa1b1('0x20')][_0x1ef3a0[_0xa1b1('0x47')]];var _0x191d3f=_0x5b1164[_0xa1b1('0x65')]!==utils[_0xa1b1('0x66')][_0xa1b1('0x76')];var _0x12c3ee=utils[_0xa1b1('0x133')](_0x5b1164);_0x5b1164[_0xa1b1('0x134')]=utils[_0xa1b1('0x135')](_0x5b1164,_0x3cde2d[_0xa1b1('0x23')]);Promise[_0xa1b1('0x136')]()[_0xa1b1('0x3e')](function(){if(_0x5b1164[_0xa1b1('0x134')]===utils[_0xa1b1('0x66')]['INACTIVE']){if(_0x191d3f){clearPredictiveAttributes(_0x5b1164);_0x1ef3a0[_0xa1b1('0x5f')]=undefined;_0x1ef3a0[_0xa1b1('0x29')]=undefined;}if(_0x5b1164[_0xa1b1('0x134')]===utils['CAMPAIGN_STATUS'][_0xa1b1('0x76')]){_0x1ef3a0[_0xa1b1('0x137')]=0x0;_0x1ef3a0[_0xa1b1('0xf6')]=0x0;_0x1ef3a0['inUse']=0x0;_0x1ef3a0[_0xa1b1('0x138')]=0x0;_0x1ef3a0[_0xa1b1('0x139')]=0x0;}}else if(_0x5b1164[_0xa1b1('0x134')]===utils[_0xa1b1('0x66')][_0xa1b1('0x13a')]&&!_0x12c3ee){return _0x3cde2d[_0xa1b1('0x91')](_0x5b1164,!![])[_0xa1b1('0x3e')](function(){return _0x3cde2d[_0xa1b1('0x91')](_0x5b1164,![]);})[_0xa1b1('0x3e')](function(){return _0x3cde2d['checkDialMethod'](_0x5b1164);})[_0xa1b1('0x9d')](function(_0x2ead9a){loggerSyncQueueSummary[_0xa1b1('0x43')](_0xa1b1('0x13b'),util[_0xa1b1('0x45')](_0x2ead9a,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x5b1164);});}else{clearPredictiveAttributes(_0x5b1164);}})[_0xa1b1('0x3e')](function(){var _0x3c9bd3=_0x1ef3a0[_0xa1b1('0x13c')](_0x5b1164);if(_0x3c9bd3||_0x5b1164[_0xa1b1('0x13d')]){_0x5b1164[_0xa1b1('0x13d')]=![];_0x1ef3a0[_0xa1b1('0x13e')](_0x5b1164);Object[_0xa1b1('0x13f')](_0x5b1164,_0x1ef3a0);emitOutboundVoiceQueueSummary(_0x1ef3a0);}_0x3cde2d[_0xa1b1('0x2d')][_0x5b1164[_0xa1b1('0x47')]]['running']=![];})[_0xa1b1('0x9d')](function(_0x2cc3e3){logger['error'](_0xa1b1('0x13b'),util[_0xa1b1('0x45')](_0x2cc3e3,{'showHidden':![],'depth':null}));_0x3cde2d[_0xa1b1('0x2d')][_0x5b1164['name']][_0xa1b1('0x132')]=![];});};Dialer[_0xa1b1('0x82')][_0xa1b1('0x140')]=_[_0xa1b1('0x141')](function(){var _0x17610e=_['filter'](this[_0xa1b1('0x20')],function(_0x21e85a){return _0x21e85a[_0xa1b1('0x142')];});var _0x104668=_[_0xa1b1('0x143')](this[_0xa1b1('0x22')],function(_0x20fe7e){return _0x20fe7e[_0xa1b1('0x144')]&&_0x20fe7e[_0xa1b1('0x86')]===_0xa1b1('0x87');});if(_0x17610e[_0xa1b1('0x96')]>0x0&&_0x104668[_0xa1b1('0x96')]>0x0){return Promise[_0xa1b1('0x136')]()[_0xa1b1('0x3e')](cmHopper[_0xa1b1('0x145')](_[_0xa1b1('0x146')](_0x17610e,'id'),previewRecallmeReminderInterval,_['map'](_0x104668,'id')))[_0xa1b1('0x3e')](function(_0x244b59){for(var _0x4de936=0x0;_0x4de936<_0x244b59['length'];_0x4de936++){var _0x9a113b=_0x244b59[_0x4de936][_0xa1b1('0x147')]['name'];if(_0x9a113b)io['to'](util[_0xa1b1('0x46')]('user:%s',_0x9a113b))[_0xa1b1('0x40')](_0xa1b1('0x148'),{'hopper':_0x244b59[_0x4de936]});}})['catch'](function(_0x3ffc38){logger[_0xa1b1('0x62')](_0xa1b1('0x149'),_0x3ffc38);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xa1b1('0x82')][_0xa1b1('0x14a')]=function(){var _0x1e2b7=this;setInterval(function(){_0x1e2b7['clearZombieChannels'](_0x1e2b7[_0xa1b1('0x27')],_0xa1b1('0x14b'));_0x1e2b7[_0xa1b1('0x14c')](_0x1e2b7['actions'],_0xa1b1('0x14d'));},0x32c8);};Dialer['prototype'][_0xa1b1('0x14c')]=function(_0x405ce5,_0x693895){var _0x14b510=this;for(var _0x27a931 in _0x405ce5){if(typeof _0x405ce5[_0x27a931]!==_0xa1b1('0xa6')){this['sequence'][_0xa1b1('0x1d')](function(){if(!_[_0xa1b1('0xf1')](_0x405ce5[_0x27a931])){return ami[_0xa1b1('0x98')]({'action':_0xa1b1('0x86'),'channel':_0x405ce5[_0x27a931][_0xa1b1('0xec')]})[_0xa1b1('0x9d')](function(_0x39c4f8){if(_0x39c4f8[_0xa1b1('0x65')]===_0xa1b1('0x14e')){setTimeout(function(){if(_0x405ce5[_0x27a931]&&_0x405ce5[_0x27a931][_0xa1b1('0x41')]!==_0xa1b1('0xc8')){_0x14b510[_0xa1b1('0xc9')](_0x14b510[_0xa1b1('0x20')][_0x405ce5[_0x27a931][_0xa1b1('0xbc')]]);logger[_0xa1b1('0x62')]('[Dialer][checkChannel]',_0x693895,_0x27a931,_0x405ce5[_0x27a931][_0xa1b1('0xbc')]);delete _0x405ce5[_0x27a931];}if(_0x405ce5[_0x27a931]&&_0x405ce5[_0x27a931]['type']==='ivr'){_0x14b510[_0xa1b1('0xc9')](_0x14b510[_0xa1b1('0x21')][_0x405ce5[_0x27a931][_0xa1b1('0xbc')]]);logger[_0xa1b1('0x62')]('[Dialer][checkChannel][ivr]',_0x693895,_0x27a931,_0x405ce5[_0x27a931]['queue']);delete _0x405ce5[_0x27a931];}},0x2328);}});}});}}};Dialer[_0xa1b1('0x82')][_0xa1b1('0x14f')]=function(_0x2e96da){return Promise['resolve']()[_0xa1b1('0x3e')](voiceQueueRt[_0xa1b1('0x14f')](_0x2e96da))[_0xa1b1('0x9d')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer[_0xa1b1('0x82')][_0xa1b1('0xc9')]=function(_0x3b55df){if(!_[_0xa1b1('0x50')](_0x3b55df)&&_0x3b55df!==null){if(typeof _0x3b55df[_0xa1b1('0x7b')]!==_0xa1b1('0xa6')){if(_0x3b55df[_0xa1b1('0x7b')]>0x0){_0x3b55df[_0xa1b1('0x7b')]-=0x1;}else{logger[_0xa1b1('0x62')](_0xa1b1('0x150'));}}}else{logger[_0xa1b1('0x62')](_0xa1b1('0x151'));}};Dialer['prototype'][_0xa1b1('0x152')]=function(_0x12ac9b,_0x347a48){var _0x279e88=this;return function(_0x50c118){_0x279e88['updateOriginated'](_0x347a48);logger[_0xa1b1('0x62')](_0x12ac9b,util[_0xa1b1('0x45')](_0x50c118,{'showHidden':![],'depth':null}));};};Dialer['prototype']['emptyContact']=function(_0x736df6,_0xb7bd42,_0x427733){var _0x1eb097={'state':0x19,'statedesc':_0xa1b1('0x153')};this[_0xa1b1('0xc9')](_0xb7bd42);this[_0xa1b1('0x154')](_[_0xa1b1('0x5c')](_0x1eb097,_[_0xa1b1('0xf4')](_0x427733,[_0xa1b1('0xdb'),_0xa1b1('0xdc'),_0xa1b1('0x155'),_0xa1b1('0xdd'),_0xa1b1('0xf9')])),_0xa1b1('0x156'),_0xa1b1('0x157'));logger[_0xa1b1('0x62')](_0x736df6);};Dialer['prototype'][_0xa1b1('0x154')]=function(_0xf648ae,_0x18314c,_0x4daab4){hopperUtils[_0xa1b1('0xc3')](_0xf648ae)['catch'](loggerCatch(_0x18314c));hopperUtils[_0xa1b1('0xc5')](_0xf648ae)[_0xa1b1('0x9d')](loggerCatch(_0x4daab4));};Dialer[_0xa1b1('0x82')][_0xa1b1('0xd8')]=function(_0x8de310,_0xc4b80c){hopperUtils[_0xa1b1('0xc3')](_0x8de310)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0xc4')));if(_0xc4b80c==0x0){hopperUtils['moveContactManagedDialer'](_0x8de310)['catch'](loggerCatch(_0xa1b1('0x158')));}};Dialer[_0xa1b1('0x82')][_0xa1b1('0x149')]=function(_0x239cbb){return Promise[_0xa1b1('0x136')]()['then'](cmHopper[_0xa1b1('0x145')](_0x239cbb['id'],previewRecallmeReminderInterval))[_0xa1b1('0x3e')](function(_0x357e51){for(var _0x28c2be=0x0;_0x28c2be<_0x357e51['length'];_0x28c2be++){var _0x1c6fd8=_0x357e51[_0x28c2be][_0xa1b1('0x147')][_0xa1b1('0x47')];if(_0x1c6fd8)io['to'](util[_0xa1b1('0x46')]('user:%s',_0x1c6fd8))['emit'](_0xa1b1('0x148'),{'hopper':_0x357e51[_0x28c2be]});}})[_0xa1b1('0x9d')](function(){});};Dialer[_0xa1b1('0x82')][_0xa1b1('0x159')]=function(_0x568b19){var _0x59096f=this;return function(){_0x59096f[_0xa1b1('0x15a')](_0x568b19);};};Dialer[_0xa1b1('0x82')][_0xa1b1('0x15b')]=function(_0xf008d,_0x2388d1){var _0x316614=this;var _0x56a9d5=uuid['v4']();this[_0xa1b1('0xed')][_0x56a9d5]=new Action(_0xf008d,_0x2388d1,_0x56a9d5);return new Promise(function(_0x47fa46,_0x3b0b55){if(_[_0xa1b1('0x50')](_0xf008d)&&typeof _0xf008d!==_0xa1b1('0x15c')){return _0x3b0b55(msgResponse('originate',_0xa1b1('0x8f'),_0xa1b1('0x15d')));}if(_['isUndefined'](_0x2388d1[_0xa1b1('0x15e')])||_0x2388d1[_0xa1b1('0x15e')]===null){return _0x3b0b55(msgResponse(_0xa1b1('0x15f'),'Failure','contact\x20is\x20undefine'));}var _0x4b04ab={'XMD-CALLERID':_0x316614['actions'][_0x56a9d5][_0xa1b1('0x160')](),'XMD-AGI':_0xf008d[_0xa1b1('0x12b')]?util[_0xa1b1('0x46')](_0xa1b1('0x161'),ipAgi,_0xf008d[_0xa1b1('0x12b')]):'NONE','XMD-AGIAFTER':_0xf008d[_0xa1b1('0xc0')]?util[_0xa1b1('0x46')](_0xa1b1('0x161'),ipAgi,_0xf008d[_0xa1b1('0xc0')]):_0xa1b1('0x162'),'XMD-QUEUE':utils[_0xa1b1('0x163')](_0xf008d)?util[_0xa1b1('0x46')]('\x22%s,%s%s,,,%s\x22',_0xf008d[_0xa1b1('0x47')],_0xf008d['dialQueueOptions']||'',_0xf008d[_0xa1b1('0xc1')]?'c':'',_0xf008d['dialQueueTimeout']||0x3):_0xa1b1('0x162'),'XMD-CONTACTID':_0x2388d1['ContactId'],'XMD-CDRTYPE':_0xa1b1('0x7'),'CALLERID(all)':_0x316614[_0xa1b1('0xed')][_0x56a9d5][_0xa1b1('0x160')](),'XMD-AMD':_0xf008d['dialAMDActive']?'ACTIVE':_0xa1b1('0x162'),'XMD-DESTINATION':_0xa1b1('0x10b')};if(_0xf008d[_0xa1b1('0x10c')]){_0x4b04ab[_0xa1b1('0x164')]=_0xf008d[_0xa1b1('0x165')]||0x9c4;_0x4b04ab[_0xa1b1('0x166')]=_0xf008d['dialAMDGreeting']||0x5dc;_0x4b04ab[_0xa1b1('0x167')]=_0xf008d[_0xa1b1('0x168')]||0x320;_0x4b04ab[_0xa1b1('0x169')]=_0xf008d['dialAMDTotalAnalysisTime']||0x1388;_0x4b04ab[_0xa1b1('0x16a')]=_0xf008d['dialAMDMinWordLength']||0x64;_0x4b04ab[_0xa1b1('0x16b')]=_0xf008d[_0xa1b1('0x16c')]||0x32;_0x4b04ab[_0xa1b1('0x16d')]=_0xf008d[_0xa1b1('0x16e')]||0x3;_0x4b04ab[_0xa1b1('0x16f')]=_0xf008d[_0xa1b1('0x170')]||0x100;_0x4b04ab[_0xa1b1('0x171')]=_0xf008d[_0xa1b1('0x172')]||0x1388;}if(utils['isOutboundQueue'](_0xf008d)){_0x4b04ab[_0xa1b1('0x173')]=_0x2388d1['VoiceQueueId'];}else{_0x4b04ab[_0xa1b1('0x174')]=_0x2388d1[_0xa1b1('0xf9')];}var _0x19400d=utils[_0xa1b1('0x175')](_0x2388d1['Contact']);Object['assign'](_0x4b04ab,_0x19400d);var _0x4385c3=_0x316614[_0xa1b1('0x83')](_0xf008d[_0xa1b1('0x176')])?utils[_0xa1b1('0x177')](_0xf008d['Trunk'][_0xa1b1('0x178')],_0xf008d[_0xa1b1('0x179')],_0xf008d[_0xa1b1('0x17a')]>0x0?utils[_0xa1b1('0x17b')](_0xf008d[_0xa1b1('0x17c')],_0xf008d[_0xa1b1('0x17a')]):_0xf008d[_0xa1b1('0x17c')]):utils[_0xa1b1('0x177')](_[_0xa1b1('0xf1')](_0xf008d[_0xa1b1('0x8a')])?_0xf008d[_0xa1b1('0x176')][_0xa1b1('0x178')]:_0xf008d['TrunkBackup'][_0xa1b1('0x178')],_0xf008d['dialOriginateCallerIdName'],_0xf008d[_0xa1b1('0x17a')]>0x0?utils[_0xa1b1('0x17b')](_0xf008d['dialOriginateCallerIdNumber'],_0xf008d['dialRandomLastDigitCallerIdNumber']):_0xf008d[_0xa1b1('0x17c')]);if(_0x4385c3){_0x4b04ab[_0xa1b1('0x17d')]=_0x316614[_0xa1b1('0xed')][_0x56a9d5][_0xa1b1('0x17e')]=utils['extractCalleridName'](_0x4385c3);_0x4b04ab[_0xa1b1('0x17f')]=_0x2388d1['phone'];}_0xf008d[_0xa1b1('0x180')]=_0x4b04ab;return ami['Action']({'actionid':_0x56a9d5,'action':_0xa1b1('0x15f'),'channel':_0x316614[_0xa1b1('0x83')](_0xf008d[_0xa1b1('0x176')])?util[_0xa1b1('0x46')](_0xa1b1('0x181'),_0xf008d['Trunk'][_0xa1b1('0x47')],isNotNull(_0xf008d[_0xa1b1('0x182')])?_0xf008d['dialPrefix'][_0xa1b1('0x183')]()||'':'',_0xf008d[_0xa1b1('0x184')]>0x0?_0x2388d1[_0xa1b1('0x15e')]['substring'](_0xf008d[_0xa1b1('0x184')]):_0x2388d1[_0xa1b1('0x15e')]):util[_0xa1b1('0x46')](_0xa1b1('0x181'),_['isNil'](_0xf008d[_0xa1b1('0x8a')])?_0xf008d[_0xa1b1('0x176')][_0xa1b1('0x47')]:_0xf008d['TrunkBackup'][_0xa1b1('0x47')],isNotNull(_0xf008d[_0xa1b1('0x182')])?_0xf008d[_0xa1b1('0x182')][_0xa1b1('0x183')]()||'':'',_0xf008d[_0xa1b1('0x184')]>0x0?_0x2388d1[_0xa1b1('0x15e')][_0xa1b1('0x185')](_0xf008d[_0xa1b1('0x184')]):_0x2388d1['phone']),'callerid':_0x4385c3,'Exten':_0xa1b1('0x10b'),'Context':_0xa1b1('0x186'),'Priority':'1','variable':_0x4b04ab,'timeout':(_0xf008d[_0xa1b1('0x187')]||0x1e)*0x3e8,'async':!![],'channelid':_0x56a9d5})[_0xa1b1('0x3e')](function(_0x13f2af){return _0x47fa46(_0x13f2af);})[_0xa1b1('0x9d')](function(_0x1549df){_0xf008d['outboundOriginateFailureCallsDay']+=0x1;var _0xf2d6ab=new History(_0x316614['actions'][_0x56a9d5]);logger[_0xa1b1('0x62')](util['format'](_0xa1b1('0x188'),JSON[_0xa1b1('0x71')](_0x1549df)));_0xf2d6ab[_0xa1b1('0x6c')]=0xe;_0xf2d6ab[_0xa1b1('0x6d')]=_0xa1b1('0x189');_0xf2d6ab['starttime']=moment()['format'](_0xa1b1('0xc2'));_0xf2d6ab[_0xa1b1('0xdf')]=_0xf2d6ab[_0xa1b1('0x6e')];hopperUtils['createHistory'](_0xf2d6ab)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x18a')));_0x316614[_0xa1b1('0xc5')](_0xf2d6ab)[_0xa1b1('0x9d')](loggerCatch('[originate][error]'))[_0xa1b1('0x1f')](function(){delete _0x316614['actions'][_0x56a9d5];return _0x3b0b55(msgResponse(_0xa1b1('0x15f'),'Error',_0xa1b1('0x18b')));});});});};Dialer['prototype'][_0xa1b1('0x18c')]=function(_0x4cff28,_0x556340,_0x38906e){var _0x3a5c55=new History(_0x556340);if(_0x3a5c55[_0xa1b1('0x119')]+_0x3a5c55[_0xa1b1('0x11a')]+_0x3a5c55['countnoanswerretry']+_0x3a5c55[_0xa1b1('0x126')]+_0x3a5c55[_0xa1b1('0xd0')]+_0x3a5c55[_0xa1b1('0xe9')]+_0x3a5c55[_0xa1b1('0x116')]+_0x3a5c55[_0xa1b1('0x11c')]>=_0x38906e[_0xa1b1('0x127')]-0x1){return!![];}switch(_0x4cff28){case 0x3:if(_0x3a5c55['countnoanswerretry']>=_0x38906e[_0xa1b1('0x18d')]-0x1){return!![];}hopperUtils[_0xa1b1('0xd9')]({'active':![],'countnoanswerretry':_0x3a5c55[_0xa1b1('0x11b')]+=0x1,'scheduledat':moment()[_0xa1b1('0xda')](_0x38906e[_0xa1b1('0x18e')],_0xa1b1('0xea'))[_0xa1b1('0x46')](_0xa1b1('0xc2')),'ContactId':_0x3a5c55[_0xa1b1('0xdb')],'ListId':_0x3a5c55['ListId'],'VoiceQueueId':_0x3a5c55['VoiceQueueId']||undefined,'CampaignId':_0x3a5c55[_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x18f')));break;case 0x5:if(_0x3a5c55[_0xa1b1('0x119')]>=_0x38906e[_0xa1b1('0x190')]-0x1){return!![];}hopperUtils[_0xa1b1('0xd9')]({'active':![],'countbusyretry':_0x3a5c55[_0xa1b1('0x119')]+=0x1,'scheduledat':moment()['add'](_0x38906e[_0xa1b1('0x191')],_0xa1b1('0xea'))['format'](_0xa1b1('0xc2')),'ContactId':_0x3a5c55[_0xa1b1('0xdb')],'ListId':_0x3a5c55[_0xa1b1('0xdc')],'VoiceQueueId':_0x3a5c55['VoiceQueueId']||undefined,'CampaignId':_0x3a5c55[_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x192')));break;case 0x8:if(_0x3a5c55[_0xa1b1('0x11a')]>=_0x38906e['dialCongestionMaxRetry']-0x1){return!![];}hopperUtils[_0xa1b1('0xd9')]({'active':![],'countcongestionretry':_0x3a5c55['countcongestionretry']+=0x1,'scheduledat':moment()[_0xa1b1('0xda')](_0x38906e['dialCongestionRetryFrequency'],_0xa1b1('0xea'))[_0xa1b1('0x46')](_0xa1b1('0xc2')),'ContactId':_0x3a5c55[_0xa1b1('0xdb')],'ListId':_0x3a5c55[_0xa1b1('0xdc')],'VoiceQueueId':_0x3a5c55[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x3a5c55[_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x3a5c55[_0xa1b1('0x126')]>=_0x38906e[_0xa1b1('0x193')]-0x1){return!![];}else{hopperUtils[_0xa1b1('0xd9')]({'active':![],'countnosuchnumberretry':_0x3a5c55[_0xa1b1('0x126')]+=0x1,'scheduledat':moment()[_0xa1b1('0xda')](_0x38906e['dialNoSuchNumberRetryFrequency'],'minutes')['format'](_0xa1b1('0xc2')),'ContactId':_0x3a5c55[_0xa1b1('0xdb')],'ListId':_0x3a5c55['ListId'],'VoiceQueueId':_0x3a5c55[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x3a5c55[_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x194')));}break;case 0xa:if(_0x3a5c55['countdropretry']>=_0x38906e['dialDropMaxRetry']-0x1){return!![];}hopperUtils[_0xa1b1('0xd9')]({'active':![],'countdropretry':_0x3a5c55[_0xa1b1('0xd0')]+=0x1,'scheduledat':moment()['add'](_0x38906e[_0xa1b1('0xd2')],_0xa1b1('0xea'))[_0xa1b1('0x46')](_0xa1b1('0xc2')),'ContactId':_0x3a5c55[_0xa1b1('0xdb')],'ListId':_0x3a5c55[_0xa1b1('0xdc')],'VoiceQueueId':_0x3a5c55[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x3a5c55[_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x195')));break;case 0xb:if(_0x3a5c55[_0xa1b1('0xe9')]>=_0x38906e[_0xa1b1('0xe8')]-0x1){return!![];}hopperUtils[_0xa1b1('0xd9')]({'active':![],'countabandonedretry':_0x3a5c55[_0xa1b1('0xe9')]+=0x1,'scheduledat':moment()['add'](_0x38906e['dialAbandonedRetryFrequency'],_0xa1b1('0xea'))[_0xa1b1('0x46')](_0xa1b1('0xc2')),'ContactId':_0x3a5c55[_0xa1b1('0xdb')],'ListId':_0x3a5c55[_0xa1b1('0xdc')],'VoiceQueueId':_0x3a5c55[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x3a5c55['CampaignId']||undefined})['catch'](loggerCatch(_0xa1b1('0xeb')));break;case 0x13:if(_0x3a5c55['countmachineretry']>=_0x38906e[_0xa1b1('0x11f')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countmachineretry':_0x3a5c55[_0xa1b1('0x116')]+=0x1,'scheduledat':moment()[_0xa1b1('0xda')](_0x38906e[_0xa1b1('0x128')],_0xa1b1('0xea'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3a5c55['ContactId'],'ListId':_0x3a5c55['ListId'],'VoiceQueueId':_0x3a5c55[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x3a5c55[_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x3a5c55[_0xa1b1('0x11c')]>=_0x38906e[_0xa1b1('0x196')]-0x1){return!![];}hopperUtils[_0xa1b1('0xd9')]({'active':![],'countagentrejectretry':_0x3a5c55[_0xa1b1('0x11c')]+=0x1,'scheduledat':moment()[_0xa1b1('0xda')](_0x38906e[_0xa1b1('0x197')],'minutes')[_0xa1b1('0x46')](_0xa1b1('0xc2')),'ContactId':_0x3a5c55[_0xa1b1('0xdb')],'ListId':_0x3a5c55[_0xa1b1('0xdc')],'VoiceQueueId':_0x3a5c55[_0xa1b1('0xdd')]||undefined,'CampaignId':_0x3a5c55[_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x198')));break;default:return!![];}};Dialer[_0xa1b1('0x82')][_0xa1b1('0x106')]=function(_0x4f0bd4,_0x1904ab,_0xd59a58){var _0x287332=this;var _0x5eec3c=new History(_0x4f0bd4);var _0x41f3aa=![];var _0x281d08;var _0x1e303d;return new Promise(function(_0x273d80,_0x413015){if(_[_0xa1b1('0x50')](_0x1904ab)&&typeof _0x1904ab!=='object'){return _0x413015(msgResponse('[callProgressDetecting]',_0xa1b1('0x8f'),'entity\x20is\x20undefine'));}if(_['isUndefined'](_0xd59a58)&&typeof _0xd59a58!==_0xa1b1('0x15c')){return _0x413015(msgResponse(_0xa1b1('0x199'),_0xa1b1('0x8f'),'evt\x20is\x20undefine'));}hopperUtils['verifyAdditionalPhones'](_0x5eec3c,_0xd59a58[_0xa1b1('0x19a')],_0x1904ab)[_0xa1b1('0x3e')](function(_0x2b610c){if(_0x2b610c[_0xa1b1('0xd6')]==0x1)_0x41f3aa=!![];switch(_0xd59a58['reason']){case'0':_0x1904ab[_0xa1b1('0x19b')]+=0x1;_0x5eec3c['state']=0x0;_0x5eec3c[_0xa1b1('0x6d')]=_0xa1b1('0x19c');_0x5eec3c[_0xa1b1('0x126')]+=0x1;_0x5eec3c[_0xa1b1('0xd1')]+=0x1;ami[_0xa1b1('0x40')](_0xa1b1('0x19d'),ut[_0xa1b1('0x112')](_0x4f0bd4,_0xa1b1('0x19e')));_0x281d08=_0x1904ab[_0xa1b1('0x19f')];_0x1e303d=_0x1904ab['callAdditionalPhoneAfterMin'];hopperUtils[_0xa1b1('0xc3')](_0x5eec3c)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x125')));if(_0x287332[_0xa1b1('0x18c')](0x0,_0x4f0bd4,_0x1904ab)&&!_0x41f3aa){if(_0x5eec3c[_0xa1b1('0x126')]>=_0x1904ab[_0xa1b1('0x193')]){_0x287332[_0xa1b1('0x120')](_0x5eec3c,_0x273d80,_0x413015,_0xa1b1('0x1a0'));}else{_0x287332[_0xa1b1('0x11d')](_0x5eec3c,_0x273d80,_0x413015,_0xa1b1('0x1a0'));}}break;case'3':_0x1904ab[_0xa1b1('0x1a1')]+=0x1;_0x5eec3c[_0xa1b1('0x6c')]=0x3;_0x5eec3c[_0xa1b1('0x6d')]=_0xa1b1('0x1a2');_0x5eec3c[_0xa1b1('0x11b')]+=0x1;_0x5eec3c[_0xa1b1('0xd1')]+=0x1;var _0x557d21=ut['buildNoAnswerEventPayload'](_0x4f0bd4,_0x1904ab);ami[_0xa1b1('0x40')](_0xa1b1('0x1a3'),_0x557d21);_0x281d08=_0x1904ab['dialNoAnswerRetryFrequency'];_0x1e303d=_0x1904ab['callAdditionalPhoneAfterMin'];hopperUtils['createHistory'](_0x5eec3c)[_0xa1b1('0x9d')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x287332['checkRetriveMax'](0x3,_0x4f0bd4,_0x1904ab)&&!_0x41f3aa){if(_0x5eec3c[_0xa1b1('0x11b')]>=_0x1904ab[_0xa1b1('0x18d')]){_0x287332[_0xa1b1('0x120')](_0x5eec3c,_0x273d80,_0x413015,'reason\x203\x20ringing\x20no\x20answer');}else{_0x287332[_0xa1b1('0x11d')](_0x5eec3c,_0x273d80,_0x413015,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x1904ab[_0xa1b1('0x1a4')]+=0x1;_0x5eec3c[_0xa1b1('0x6c')]=0x5;_0x5eec3c[_0xa1b1('0x6d')]=_0xa1b1('0x1a5');_0x5eec3c['countbusyretry']+=0x1;_0x5eec3c[_0xa1b1('0xd1')]+=0x1;ami['emit'](_0xa1b1('0x1a6'),ut['buildObj'](_0x4f0bd4,_0xa1b1('0x1a7')));_0x281d08=_0x1904ab[_0xa1b1('0x191')];_0x1e303d=_0x1904ab[_0xa1b1('0xd3')];hopperUtils['createHistory'](_0x5eec3c)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x1a8')));if(_0x287332[_0xa1b1('0x18c')](0x5,_0x4f0bd4,_0x1904ab)&&!_0x41f3aa){if(_0x5eec3c[_0xa1b1('0x119')]>=_0x1904ab[_0xa1b1('0x190')]){_0x287332[_0xa1b1('0x120')](_0x5eec3c,_0x273d80,_0x413015,_0xa1b1('0x1a9'));}else{_0x287332[_0xa1b1('0x11d')](_0x5eec3c,_0x273d80,_0x413015,'reason\x205\x20busy');}}break;case'8':_0x1904ab[_0xa1b1('0x1aa')]+=0x1;_0x5eec3c['state']=0x8;_0x5eec3c[_0xa1b1('0x6d')]=_0xa1b1('0x1ab');_0x5eec3c[_0xa1b1('0x11a')]+=0x1;_0x5eec3c[_0xa1b1('0xd1')]+=0x1;_0x281d08=_0x1904ab['dialCongestionRetryFrequency'];_0x1e303d=_0x1904ab[_0xa1b1('0xd3')];ami['emit'](_0xa1b1('0x1ac'),ut['buildObj'](_0x4f0bd4,_0xa1b1('0x1ad')));hopperUtils[_0xa1b1('0xc3')](_0x5eec3c)[_0xa1b1('0x9d')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x287332[_0xa1b1('0x18c')](0x8,_0x4f0bd4,_0x1904ab)&&!_0x41f3aa){if(_0x5eec3c['countcongestionretry']>=_0x1904ab[_0xa1b1('0x1ae')]){_0x287332[_0xa1b1('0x120')](_0x5eec3c,_0x273d80,_0x413015,_0xa1b1('0x1af'));}else{_0x287332[_0xa1b1('0x11d')](_0x5eec3c,_0x273d80,_0x413015,_0xa1b1('0x1af'));}}break;case'11':_0x1904ab[_0xa1b1('0x1b0')]+=0x1;_0x5eec3c[_0xa1b1('0x6c')]=0xb;_0x5eec3c[_0xa1b1('0x6d')]=_0xa1b1('0xe4');_0x5eec3c[_0xa1b1('0xe9')]+=0x1;_0x5eec3c['countglobal']+=0x1;_0x281d08=_0x1904ab[_0xa1b1('0xe7')];_0x1e303d=_0x1904ab[_0xa1b1('0xd3')];hopperUtils[_0xa1b1('0xc3')](_0x5eec3c)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x1b1')));if(_0x287332[_0xa1b1('0x18c')](0xb,_0x4f0bd4,_0x1904ab)&&!_0x41f3aa){if(_0x5eec3c[_0xa1b1('0xe9')]>=_0x1904ab[_0xa1b1('0xe8')]){_0x287332[_0xa1b1('0x120')](_0x5eec3c,_0x273d80,_0x413015,'reason\x2011\x20abandoned');}else{_0x287332[_0xa1b1('0x11d')](_0x5eec3c,_0x273d80,_0x413015,_0xa1b1('0x1b2'));}}break;case'20':_0x1904ab[_0xa1b1('0x1b3')]+=0x1;_0x5eec3c[_0xa1b1('0x6c')]=0x14;_0x5eec3c['statedesc']=_0xa1b1('0x1b4');_0x5eec3c[_0xa1b1('0x11c')]+=0x1;_0x5eec3c[_0xa1b1('0xd1')]+=0x1;_0x281d08=_0x1904ab[_0xa1b1('0x197')];_0x1e303d=_0x1904ab[_0xa1b1('0xd3')];ami[_0xa1b1('0x40')](_0xa1b1('0x1b5'),ut[_0xa1b1('0x112')](_0x4f0bd4,'agentreject'));hopperUtils[_0xa1b1('0xc3')](_0x5eec3c)[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x1b6')));if(_0x287332['checkRetriveMax'](0x14,_0x4f0bd4,_0x1904ab)&&!_0x41f3aa){if(_0x5eec3c[_0xa1b1('0x11c')]>=_0x1904ab[_0xa1b1('0x196')]){_0x287332['createStateFinal'](_0x5eec3c,_0x273d80,_0x413015,_0xa1b1('0x1b7'));}else{_0x287332['stateGlobal'](_0x5eec3c,_0x273d80,_0x413015,_0xa1b1('0x1b7'));}}break;default:_0x1904ab['outboundUnknownCallsDay']+=0x1;_0x5eec3c['state']=0xc;_0x5eec3c['statedesc']=_0xd59a58[_0xa1b1('0x19a')];_0x281d08=_0x1904ab[_0xa1b1('0x197')];_0x1e303d=_0x1904ab[_0xa1b1('0xd3')];hopperUtils['createHistory'](_0x5eec3c)['catch'](loggerCatch(_0xa1b1('0x1b8')));if(_0x287332[_0xa1b1('0x18c')](_0xd59a58[_0xa1b1('0x19a')],_0x4f0bd4,_0x1904ab)&&!_0x41f3aa){if(_0x5eec3c[_0xa1b1('0x119')]+_0x5eec3c[_0xa1b1('0x11a')]+_0x5eec3c[_0xa1b1('0x11b')]+_0x5eec3c[_0xa1b1('0x126')]+_0x5eec3c[_0xa1b1('0xd0')]+_0x5eec3c[_0xa1b1('0xe9')]+_0x5eec3c['countmachineretry']+_0x5eec3c[_0xa1b1('0x11c')]>=_0x1904ab[_0xa1b1('0x127')]){_0x287332['stateGlobal'](_0x5eec3c,_0x273d80,_0x413015,_0xd59a58[_0xa1b1('0x19a')]);}else{_0x287332[_0xa1b1('0x120')](_0x5eec3c,_0x273d80,_0x413015,_0xd59a58[_0xa1b1('0x19a')]);}}}})[_0xa1b1('0x3e')](function(){if(_0x41f3aa){hopperUtils[_0xa1b1('0xe3')](_0x5eec3c,_0x281d08,_0x1e303d)[_0xa1b1('0x3e')](function(){return _0x273d80(0x1);});}});});};Dialer[_0xa1b1('0x82')][_0xa1b1('0x11d')]=function(_0x4127a3,_0x492ae3,_0x165ed9,_0x481334){var _0xe8ec41=new Final(_0x4127a3);_0xe8ec41['state']=0xf;_0xe8ec41['statedesc']=_0xa1b1('0x1b9');this[_0xa1b1('0x120')](_0xe8ec41,_0x492ae3,_0x165ed9,_0x481334);};Dialer[_0xa1b1('0x82')]['createStateFinal']=function(_0x3267fa,_0x20ef21,_0x196492,_0x1cce52){hopperUtils['moveContactManagedDialer'](_0x3267fa)[_0xa1b1('0x3e')](function(){return _0x20ef21(msgResponse(_0xa1b1('0x199'),_0xa1b1('0x105'),_0x1cce52));})[_0xa1b1('0x9d')](function(){return _0x196492(msgResponse(_0xa1b1('0x1ba'),_0xa1b1('0x8f'),_0xa1b1('0x1bb')));});};Dialer[_0xa1b1('0x82')][_0xa1b1('0x9')]=function(_0x2a6079){var _0x4f33bd=_0x2a6079[_0xa1b1('0x1bc')]/0x64;var _0x46106c=_0x2a6079[_0xa1b1('0xcd')]/(_0x2a6079[_0xa1b1('0xcd')]+_0x2a6079[_0xa1b1('0x10f')]);var _0x2eb989=Math['round'](_0x2a6079[_0xa1b1('0x1bd')]*(_0x2a6079['predictiveIntervalMaxThreshold']/0x64));var _0x26849c=Math[_0xa1b1('0x1be')](_0x2a6079[_0xa1b1('0x1bd')]*(_0x2a6079[_0xa1b1('0x1bf')]/0x64));var _0x3042ac=_0x2a6079['available']+_0x2a6079[_0xa1b1('0x138')];var _0x1af45a=Math[_0xa1b1('0x1c0')](_0x2a6079[_0xa1b1('0x56')]*_0x2a6079[_0xa1b1('0x59')]*_0x2a6079['predictiveIntervalHitRate']*_0x2a6079[_0xa1b1('0x1c1')]);if(_[_0xa1b1('0x50')](_0x2a6079[_0xa1b1('0x29')])){if(!_['isUndefined'](_0x2a6079[_0xa1b1('0x5f')])){_0x2a6079[_0xa1b1('0x5f')]=undefined;loggerPredictive[_0xa1b1('0x62')](_0xa1b1('0x1c2'),_0xa1b1('0x1c3'));}if(!_[_0xa1b1('0x50')](_0x2a6079[_0xa1b1('0x60')])){loggerPredictive[_0xa1b1('0x62')](_0xa1b1('0x1c2'),_0xa1b1('0x1c4'));clearInterval(_0x2a6079[_0xa1b1('0x60')]);_0x2a6079[_0xa1b1('0x60')]=undefined;}_0x2a6079['startProgressive']=moment()[_0xa1b1('0x46')](_0xa1b1('0xc2'));loggerPredictive[_0xa1b1('0x49')](_0x2a6079['name'],_0xa1b1('0x1c5'),_0x2a6079[_0xa1b1('0x29')]);this[_0xa1b1('0xb1')](_0x2a6079,0x1);}else if(ifInterval(_0x2a6079['dialPredictiveInterval'],_0x2a6079[_0xa1b1('0x29')])){this[_0xa1b1('0xb1')](_0x2a6079,0x1);loggerPredictiveCalls['info'](_0xa1b1('0x1c6'),_0x2a6079[_0xa1b1('0x29')],_0x2a6079[_0xa1b1('0x47')]);_0x2a6079[_0xa1b1('0x56')]=0x0;_0x2a6079[_0xa1b1('0xce')]=0x0;}else if(_0x4f33bd<_0x46106c&&_0x2a6079['dialPredictiveOptimization']==='dropRate'){clearPredictiveAttributes(_0x2a6079);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x1c7'),_0xa1b1('0x1c8'),_0x46106c,_0xa1b1('0x29'),_0x2a6079['name']);}else if(_0x1af45a<_0x2a6079[_0xa1b1('0xce')]&&_0x2a6079['dialPredictiveOptimization']===_0xa1b1('0x1c9')){clearPredictiveAttributes(_0x2a6079);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x1ca'),_0xa1b1('0x1cb'),_0x1af45a,'Drop\x20in\x20this\x20interval',_0x2a6079['predictiveIntervalErlangCallsDroppedCalls'],_0xa1b1('0x29'),_0x2a6079['name']);}else if(!ifInterval(_0x2a6079[_0xa1b1('0x1cc')],_0x2a6079[_0xa1b1('0x29')])&&_[_0xa1b1('0x50')](_0x2a6079[_0xa1b1('0x5f')])&&!_[_0xa1b1('0x50')](_0x2a6079[_0xa1b1('0x29')])){_0x2a6079[_0xa1b1('0x5f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x2a6079[_0xa1b1('0x47')],'started\x20in\x20predictive\x20at',_0x2a6079[_0xa1b1('0x5f')]);hopperUtils[_0xa1b1('0x1cd')](_0x2a6079[_0xa1b1('0x1cc')])['then'](this['getDataPredictive'](_0x2a6079))[_0xa1b1('0x3e')](mergeDataErlangB(_0x2a6079))[_0xa1b1('0x3e')](this[_0xa1b1('0x1ce')](_0x2a6079))[_0xa1b1('0x9d')](loggerCatchPredictive(_0xa1b1('0x1cf'),_0x2a6079));}else if(!ifInterval(_0x2a6079[_0xa1b1('0x1cc')],_0x2a6079[_0xa1b1('0x5f')])){_0x2a6079['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x2a6079[_0xa1b1('0x5f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xa1b1('0x49')](_0x2a6079['name'],_0xa1b1('0x1d0'),_0x2a6079['startPredictive']);clearInterval(_0x2a6079['handlePredictive']);_0x2a6079[_0xa1b1('0x60')]=undefined;hopperUtils['avgHandleTime'](_0x2a6079[_0xa1b1('0x1cc')])[_0xa1b1('0x3e')](this[_0xa1b1('0x1d1')](_0x2a6079))['then'](mergeDataErlangB(_0x2a6079))[_0xa1b1('0x3e')](this[_0xa1b1('0x1ce')](_0x2a6079))['catch'](loggerCatchPredictive(_0xa1b1('0x1d2'),_0x2a6079));}else if(_0x2a6079['predictiveIntervalAvailable']&&_0x3042ac<_0x2a6079[_0xa1b1('0x1bd')]-_0x26849c){clearPredictiveAttributes(_0x2a6079);loggerPredictive['info'](_0x2a6079[_0xa1b1('0x47')],_0xa1b1('0x1d3'),_0x3042ac,_0xa1b1('0x1d4'),_0x2a6079[_0xa1b1('0x1bd')],'-',_0x26849c,'=',_0x2a6079[_0xa1b1('0x1bd')]-_0x26849c,')');}else if(_0x2a6079['predictiveIntervalAvailable']&&_0x3042ac>_0x2a6079[_0xa1b1('0x1bd')]+_0x2eb989){clearPredictiveAttributes(_0x2a6079);loggerPredictive[_0xa1b1('0x49')](_0x2a6079['name'],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x3042ac,_0xa1b1('0x1d5'),_0x2a6079[_0xa1b1('0x1bd')],'+',_0x2eb989,'=',_0x2a6079[_0xa1b1('0x1bd')]+_0x2eb989,')');}};Dialer['prototype'][_0xa1b1('0x1d1')]=function(_0x2e0978){var _0x3a68a4=this;return function(_0x6af23c){return new Promise(function(_0x626668,_0x42bdb5){_[_0xa1b1('0x5c')](_0x2e0978,_0x6af23c[0x0]);if(checkGetDataPredictive(_0x6af23c[0x0])){var _0x574aee=_0x2e0978['predictiveIntervalAvailable']=_0x2e0978[_0xa1b1('0x138')]+_0x2e0978[_0xa1b1('0x137')];var _0x19dc06=_0x2e0978['dialPredictiveInterval']*0x3c;var _0x3bb707=_0x6af23c[0x0][_0xa1b1('0x4f')]+_0x6af23c[0x0][_0xa1b1('0x52')];var _0x3138f4=(_0x6af23c[0x0]['predictiveIntervalAnsweredCalls']+_0x6af23c[0x0][_0xa1b1('0x4d')]+_0x6af23c[0x0][_0xa1b1('0x4e')])/_0x6af23c[0x0]['predictiveIntervalTotalCalls'];_0x2e0978[_0xa1b1('0x1d6')]=_0x3138f4>0x0?_0x3138f4:0x1;switch(_0x2e0978[_0xa1b1('0x1d7')]){case _0xa1b1('0x1c9'):var _0x18d49d=_0x2e0978['dialPredictiveOptimizationPercentage']/0x64;return _0x3a68a4[_0xa1b1('0x1d8')](_0x574aee,_0x19dc06,_0x3bb707,_0x3138f4,_0x18d49d)['then'](function(_0x478456){return _0x626668(_0x478456);});case _0xa1b1('0x1d9'):var _0x51387e=_0x2e0978[_0xa1b1('0x1bc')]/0x64;return _0x3a68a4[_0xa1b1('0x1da')](_0x574aee,_0x19dc06,_0x3bb707,_0x3138f4,_0x51387e)[_0xa1b1('0x3e')](function(_0x251f0c){return _0x626668(_0x251f0c);});default:return _0x42bdb5(msgResponse(_0xa1b1('0x1db'),_0xa1b1('0x8f'),_0xa1b1('0x1dc')));}}else{return _0x42bdb5(msgResponse(_0xa1b1('0x1db'),_0xa1b1('0x8f'),'check\x20failure'));}});};};Dialer[_0xa1b1('0x82')][_0xa1b1('0x1dd')]=function(_0x5d04f5){var _0x5b1315=this;return function(_0x3aa580){return new Promise(function(_0xb6ef55,_0xccdfca){_[_0xa1b1('0x5c')](_0x5d04f5,_0x3aa580[0x0]);if(checkGetDataPredictive(_0x3aa580[0x0])){loggerPredictive[_0xa1b1('0x49')](JSON[_0xa1b1('0x71')](_0x3aa580[0x0]));if(_0x5d04f5[_0xa1b1('0x1d7')]==='dropRate'){return _0x5b1315[_0xa1b1('0x14f')](_0x5d04f5['id'])[_0xa1b1('0x3e')](function(_0x231349){var _0x8fcf1b=_0x5d04f5['loggedIn']-_0x231349[0x0][_0xa1b1('0x1de')];var _0x4aa69d=_0x5d04f5[_0xa1b1('0x1cc')]*0x3c;var _0x1b7cb6=_0x3aa580[0x0][_0xa1b1('0x4f')]+_0x3aa580[0x0][_0xa1b1('0x52')];var _0x1e1b8e=(_0x3aa580[0x0][_0xa1b1('0x1df')]+_0x3aa580[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x3aa580[0x0][_0xa1b1('0x4e')])/_0x3aa580[0x0]['predictiveIntervalTotalCalls'];var _0x7eedca=_0x5d04f5['dialPredictiveOptimizationPercentage']/0x64;_0x5d04f5[_0xa1b1('0x1e0')]=_0x231349[0x0][_0xa1b1('0x1de')]||0x0;_0x5d04f5[_0xa1b1('0x1d6')]=_0x1e1b8e>0x0?_0x1e1b8e:0x1;return _0x5b1315['abandonmentRate'](_0x8fcf1b,_0x4aa69d,_0x1b7cb6,_0x1e1b8e,_0x7eedca);})[_0xa1b1('0x3e')](function(_0x2ab990){return _0xb6ef55(_0x2ab990);})[_0xa1b1('0x9d')](function(_0x76781c){return _0xccdfca(msgResponse(_0xa1b1('0x1e1'),'Failure',JSON['stringify'](_0x76781c)));});}if(_0x5d04f5[_0xa1b1('0x1d7')]===_0xa1b1('0x1d9')){return _0x5b1315[_0xa1b1('0x14f')](_0x5d04f5['id'])[_0xa1b1('0x3e')](function(_0x102273){var _0x3d8aff=_0x5d04f5[_0xa1b1('0x1e2')]-_0x102273[0x0][_0xa1b1('0x1de')];var _0x19e5bd=_0x5d04f5[_0xa1b1('0x1cc')]*0x3c;var _0x31ba17=_0x3aa580[0x0]['predictiveIntervalAvgTalktime']+_0x3aa580[0x0][_0xa1b1('0x52')];var _0x4728e2=(_0x3aa580[0x0][_0xa1b1('0x1df')]+_0x3aa580[0x0][_0xa1b1('0x4d')]+_0x3aa580[0x0][_0xa1b1('0x4e')])/_0x3aa580[0x0][_0xa1b1('0x1e3')];var _0x450870=_0x5d04f5[_0xa1b1('0x1bc')]/0x64;_0x5d04f5[_0xa1b1('0x1e0')]=_0x102273[0x0][_0xa1b1('0x1de')]||0x0;_0x5d04f5[_0xa1b1('0x1d6')]=_0x4728e2>0x0?_0x4728e2:0x1;return _0x5b1315['busyFactor'](_0x3d8aff,_0x19e5bd,_0x31ba17,_0x4728e2,_0x450870);})[_0xa1b1('0x3e')](function(_0x56c055){return _0xb6ef55(_0x56c055);})[_0xa1b1('0x9d')](function(_0x1ac255){return _0xccdfca(msgResponse('[CatchErlangB]',_0xa1b1('0x8f'),JSON[_0xa1b1('0x71')](_0x1ac255)));});}}else{return _0xccdfca(msgResponse(_0xa1b1('0x1db'),'Failure',_0xa1b1('0x1e4')));}});};};Dialer[_0xa1b1('0x82')][_0xa1b1('0x1ce')]=function(_0xa227bb){var _0x19dfc7=this;return function(){var _0x423fb9=0x0;var _0x477e37=Math[_0xa1b1('0x1c0')](_0xa227bb['erlangCallToSecond']*0x3e8);if(_0x477e37>0x0){_0x477e37=_0x477e37<0x64?0x64:_0x477e37;loggerPredictive[_0xa1b1('0x49')](_0xa227bb['name'],'one\x20call\x20every:',_0x477e37,_0xa1b1('0x1e5'));_0xa227bb[_0xa1b1('0x60')]=setInterval(function(){_0x19dfc7['handlePredictive'](_0xa227bb);loggerPredictiveCalls[_0xa1b1('0x49')](_0xa1b1('0x1e6'),_0x423fb9+=0x1);},_0x477e37);}else{loggerPredictive[_0xa1b1('0x49')](_0xa227bb[_0xa1b1('0x47')],_0xa1b1('0x1e7'));}};};Dialer[_0xa1b1('0x82')][_0xa1b1('0x1e8')]=function(_0x58e76b,_0xd7b31a){var _0x5cbbd7=this;return function(_0x46c338){if(_[_0xa1b1('0x48')](_0x46c338)){if(_[_0xa1b1('0xf1')](_0xd7b31a[_0xa1b1('0x155')])||!_0xd7b31a[_0xa1b1('0x1e9')]){if(_0x58e76b[_0xa1b1('0xae')]==='booked'){_0x58e76b[_0xa1b1('0x6f')]=_[_0xa1b1('0x50')](_0x58e76b[_0xa1b1('0x6f')])?!![]:_0x58e76b['queueStatusComplete'];var _0x4afeec=uuid['v4']();_0x5cbbd7[_0xa1b1('0xed')][_0x4afeec]=new Action(_0x58e76b,_0xd7b31a,_0x4afeec);loggerBooked[_0xa1b1('0x49')](_0xa1b1('0x1ea'),_0x4afeec,_0xa1b1('0x1eb'),JSON['stringify'](_0x58e76b['queueStatusComplete']),_0xa1b1('0x1ec'),_0x58e76b[_0xa1b1('0x47')]);if(_0x58e76b[_0xa1b1('0x6f')]){_0x58e76b['queueStatusComplete']=![];_0x5cbbd7['queueBooked'][_0x5cbbd7[_0xa1b1('0xed')][_0x4afeec][_0xa1b1('0xbc')]]=[];ami['Action']({'actionid':_0x4afeec,'action':_0xa1b1('0x1ed'),'queue':_0x58e76b['name']})[_0xa1b1('0x9d')](function(){_0x5cbbd7[_0xa1b1('0xc9')](_0x58e76b);hopperUtils['rescheduleContact']({'active':![],'ContactId':_0x5cbbd7[_0xa1b1('0xed')][_0x4afeec][_0xa1b1('0xdb')],'ListId':_0x5cbbd7[_0xa1b1('0xed')][_0x4afeec][_0xa1b1('0xdc')],'VoiceQueueId':_0x5cbbd7['actions'][_0x4afeec][_0xa1b1('0xdd')]||undefined,'CampaignId':_0x5cbbd7[_0xa1b1('0xed')][_0x4afeec][_0xa1b1('0xf9')]||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x5cbbd7[_0xa1b1('0xed')][_0x4afeec];});}else{loggerBooked[_0xa1b1('0x49')](_0xa1b1('0x1ee'),JSON[_0xa1b1('0x71')](_0x58e76b['queueStatusComplete']),_0xa1b1('0x1ec'),_0x58e76b[_0xa1b1('0x47')]);_0x5cbbd7[_0xa1b1('0xc9')](_0x58e76b);hopperUtils[_0xa1b1('0xd9')]({'active':![],'ContactId':_0x5cbbd7['actions'][_0x4afeec]['ContactId'],'ListId':_0x5cbbd7['actions'][_0x4afeec][_0xa1b1('0xdc')],'VoiceQueueId':_0x5cbbd7[_0xa1b1('0xed')][_0x4afeec][_0xa1b1('0xdd')]||undefined,'CampaignId':_0x5cbbd7[_0xa1b1('0xed')][_0x4afeec]['CampaignId']||undefined})[_0xa1b1('0x9d')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x5cbbd7['actions'][_0x4afeec];}}else{return _0x5cbbd7[_0xa1b1('0x15b')](_0x58e76b,_0xd7b31a);}}else{if(utils[_0xa1b1('0x5d')](undefined,_0xd7b31a['scheduledat'])<_0x58e76b[_0xa1b1('0x1ef')]*0x3c){if(_0xd7b31a[_0xa1b1('0x147')]&&!_0xd7b31a[_0xa1b1('0x147')][_0xa1b1('0x1f0')]){_0x5cbbd7[_0xa1b1('0xff')]['run'](_0xd7b31a['id'])['finally'](function(){_0x5cbbd7['updateOriginated'](_0x58e76b);});}else{hopperUtils[_0xa1b1('0x1f1')]({'active':![]},_0xd7b31a['id'],0x1)['finally'](function(){_0x5cbbd7[_0xa1b1('0xc9')](_0x58e76b);});}}else{_0x58e76b[_0xa1b1('0x1f2')]+=0x1;_0x5cbbd7[_0xa1b1('0xc9')](_0x58e76b);if(_0x58e76b[_0xa1b1('0x1f3')]){hopperUtils[_0xa1b1('0xd9')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0xd7b31a[_0xa1b1('0xdb')],'ListId':_0xd7b31a[_0xa1b1('0xdc')],'VoiceQueueId':_0xd7b31a[_0xa1b1('0xdd')]||undefined,'CampaignId':_0xd7b31a[_0xa1b1('0xf9')]||undefined})[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x1f4')));hopperUtils['createHistory'](createObjHistory(_0x58e76b,_0xd7b31a,utils[_0xa1b1('0x66')][_0xa1b1('0x1f5')],0x17,_0xa1b1('0x1f6')))[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x1f7')));}else{_0x5cbbd7[_0xa1b1('0x154')](createObjHistory(_0x58e76b,_0xd7b31a,utils[_0xa1b1('0x66')][_0xa1b1('0x1f8')],0x16,_0xa1b1('0x1f9')),_0xa1b1('0x1fa'),_0xa1b1('0x1fb'));}}}}else{_0x58e76b[_0xa1b1('0x1fc')]+=0x1;_0x5cbbd7['saveInDb'](createObjHistory(_0x58e76b,_0xd7b31a,utils['CAMPAIGN_STATUS'][_0xa1b1('0x1fd')],0xd,_0xa1b1('0x1fe')),_0xa1b1('0x1ff'),_0xa1b1('0x200'));throw'inBlackList';}};};Dialer['prototype'][_0xa1b1('0x15a')]=function(_0x516710){var _0x370929=this;var _0x464652=_0x516710[_0xa1b1('0x201')]-_0x516710[_0xa1b1('0x7b')];emitCampaignSummary(_0x516710);if(_0x464652>0x0&&_0x516710[_0xa1b1('0x202')]==0x0){if(_0x464652>this['maxNumberOriginate']){_0x464652=this[_0xa1b1('0x24')];}_0x516710[_0xa1b1('0x202')]=0x1;hopperUtils[_0xa1b1('0x203')](_0x516710,_0x464652)[_0xa1b1('0x3e')](function(_0x5a232d){_0x516710['temp']=0x0;if(_0x5a232d){if(!utils[_0xa1b1('0x204')](_0x5a232d)){_0x516710[_0xa1b1('0x65')]=utils[_0xa1b1('0x66')][_0xa1b1('0x6a')];logger[_0xa1b1('0x49')]('[getContactCampaign2][Empty]'+_0x516710[_0xa1b1('0x47')]);}else{_0x516710[_0xa1b1('0x7b')]+=_0x5a232d[_0xa1b1('0x96')];_0x516710[_0xa1b1('0x65')]=utils[_0xa1b1('0x66')]['RUNNING'];for(var _0x39808b=0x0;_0x39808b<_0x5a232d[_0xa1b1('0x96')];_0x39808b+=0x1){_0x516710[_0xa1b1('0x205')]+=0x1;if(_['isNil'](_0x5a232d[_0x39808b])||_['isNil'](_0x5a232d[_0x39808b]['Contact'])||_[_0xa1b1('0xf1')](_0x5a232d[_0x39808b][_0xa1b1('0x15e')])){_0x370929[_0xa1b1('0x206')](_0xa1b1('0x207'),_0x516710,_0x5a232d[_0x39808b]);}else{hopperUtils[_0xa1b1('0x208')](_[_0xa1b1('0xf4')](_0x5a232d[_0x39808b],[_0xa1b1('0xf9'),_0xa1b1('0x15e')]))['then'](_0x370929['checkContactBlack'](_0x516710,_0x5a232d[_0x39808b]))[_0xa1b1('0x9d')](_0x370929[_0xa1b1('0x152')]('[actionOriginateIvr]\x20',_0x516710));}}}}})['catch'](loggerGetContactDialer(_0xa1b1('0x209'),_0x516710,_0x464652));}};Dialer[_0xa1b1('0x82')][_0xa1b1('0xb1')]=function(_0x239409,_0x1ccd58){var _0x1d61b6=this;var _0x359d70=[];if(_0x1ccd58<0x1||_0x239409[_0xa1b1('0xae')]===_0xa1b1('0x8')){_0x1ccd58=0x1;}var _0x584df3=Math[_0xa1b1('0x1c0')](_0x239409[_0xa1b1('0x137')]*_0x1ccd58)-_0x239409['originated'];if(_0x239409[_0xa1b1('0x20a')]>0x0){var _0x57fa9b=_0x239409[_0xa1b1('0x20a')]-_0x239409['originated']-_0x239409[_0xa1b1('0x138')]-_0x239409[_0xa1b1('0x139')];if(_0x584df3>_0x57fa9b){_0x584df3=_0x57fa9b;}}if(_0x584df3>0x0&&_0x239409[_0xa1b1('0x202')]==0x0){if(_0x239409[_0xa1b1('0xae')]===_0xa1b1('0x8')){_0x584df3=0x1;}if(_0x584df3>this[_0xa1b1('0x24')]){_0x584df3=this['maxNumberOriginate'];}for(var _0x12559c in this['agents']){if(typeof this[_0xa1b1('0x22')][_0x12559c]!=='undefined'){if(this[_0xa1b1('0x22')][_0x12559c][_0xa1b1('0x6c')]===_0xa1b1('0x20b')&&this[_0xa1b1('0x22')][_0x12559c][_0xa1b1('0x86')]===_0xa1b1('0x87')){_0x359d70[_0xa1b1('0x97')](this['agents'][_0x12559c]['id']);}}}_0x239409[_0xa1b1('0x202')]=0x1;hopperUtils[_0xa1b1('0x20c')](_0x239409,_0x359d70,_0x584df3)[_0xa1b1('0x3e')](function(_0x1ceadc){_0x239409['temp']=0x0;if(_0x1ceadc){if(!utils[_0xa1b1('0x204')](_0x1ceadc)){hopperUtils['countReScheduled'](_0x239409)['then'](sendMessageReschedule(_0x239409))[_0xa1b1('0x9d')](loggerCatch('[countReScheduled]\x20'));}else{_0x239409[_0xa1b1('0x7b')]+=_0x1ceadc[_0xa1b1('0x96')];_0x239409[_0xa1b1('0x65')]=_0x239409[_0xa1b1('0xae')]===_0xa1b1('0x8')?utils['CAMPAIGN_STATUS'][_0xa1b1('0x13a')]:utils[_0xa1b1('0x66')][_0xa1b1('0x20d')];for(var _0x1fe039=0x0;_0x1fe039<_0x1ceadc['length'];_0x1fe039+=0x1){if(_[_0xa1b1('0xf1')](_0x1ceadc[_0x1fe039])||_[_0xa1b1('0xf1')](_0x1ceadc[_0x1fe039][_0xa1b1('0x20e')])||_[_0xa1b1('0xf1')](_0x1ceadc[_0x1fe039][_0xa1b1('0x15e')])){_0x1d61b6[_0xa1b1('0x206')](_0xa1b1('0x207'),_0x239409,_0x1ceadc[_0x1fe039]);}else{hopperUtils[_0xa1b1('0x20f')](_[_0xa1b1('0xf4')](_0x1ceadc[_0x1fe039],['VoiceQueueId',_0xa1b1('0x15e')]))[_0xa1b1('0x3e')](_0x1d61b6[_0xa1b1('0x1e8')](_0x239409,_0x1ceadc[_0x1fe039]))[_0xa1b1('0x9d')](_0x1d61b6['loggerHandler'](_0xa1b1('0x207'),_0x239409));}}}}})[_0xa1b1('0x9d')](loggerGetContactDialer(_0xa1b1('0x210'),_0x239409,_0x584df3));}};Dialer['prototype'][_0xa1b1('0x60')]=function(_0x3ba557){if(_0x3ba557[_0xa1b1('0x20a')]>0x0){var _0x1c01f5=_0x3ba557['dialLimitQueue']-_0x3ba557[_0xa1b1('0x7b')]-_0x3ba557[_0xa1b1('0x138')];if(_0x1c01f5>0x0&&_0x3ba557[_0xa1b1('0x202')]==0x0){this[_0xa1b1('0x211')](_0x3ba557);}else{loggerPredictiveCalls[_0xa1b1('0x49')](_0xa1b1('0x212'));}}else{this[_0xa1b1('0x211')](_0x3ba557);}};Dialer['prototype'][_0xa1b1('0x211')]=function(_0x32e115){var _0x128734=this;var _0x575bf9=[];_0x32e115['originated']+=0x1;for(var _0x4d7d5a in this[_0xa1b1('0x22')]){if(typeof this[_0xa1b1('0x22')][_0x4d7d5a]!==_0xa1b1('0xa6')){if(this['agents'][_0x4d7d5a][_0xa1b1('0x6c')]===_0xa1b1('0x20b')&&this[_0xa1b1('0x22')][_0x4d7d5a]['status']===_0xa1b1('0x87')){_0x575bf9[_0xa1b1('0x97')](this[_0xa1b1('0x22')][_0x4d7d5a]['id']);}}}_0x32e115[_0xa1b1('0x202')]=0x1;return this[_0xa1b1('0x20c')](_0x32e115['id'],_0x575bf9,0x1,_0x32e115['dialOrderByScheduledAt'],_0x32e115)['then'](function(_0x35572){_0x32e115[_0xa1b1('0x202')]=0x1;if(_0x35572){if(!utils[_0xa1b1('0x204')](_0x35572)){utils[_0xa1b1('0x213')](_0x32e115,0x1,0x0);return hopperUtils[_0xa1b1('0x214')](_0x32e115)['then'](sendMessageReschedule(_0x32e115))[_0xa1b1('0x9d')](loggerCatch(_0xa1b1('0x215')));}else{_0x32e115[_0xa1b1('0x65')]=utils[_0xa1b1('0x66')][_0xa1b1('0x20d')];if(_[_0xa1b1('0xf1')](_0x35572[0x0])||_[_0xa1b1('0xf1')](_0x35572[0x0][_0xa1b1('0x20e')])||_[_0xa1b1('0xf1')](_0x35572[0x0][_0xa1b1('0x15e')])){_0x128734['emptyContact'](_0xa1b1('0x207'),_0x32e115,_0x35572[0x0]);}else{return hopperUtils[_0xa1b1('0x20f')](_[_0xa1b1('0xf4')](_0x35572[0x0],[_0xa1b1('0xdd'),_0xa1b1('0x15e')]))[_0xa1b1('0x3e')](_0x128734[_0xa1b1('0x1e8')](_0x32e115,_0x35572[0x0]))[_0xa1b1('0x9d')](_0x128734[_0xa1b1('0x152')]('[actionOriginatePredictive]\x20',_0x32e115));}}}})['catch'](loggerGetContactDialer(_0xa1b1('0x216'),_0x32e115,0x1));};Dialer['prototype'][_0xa1b1('0x1d8')]=function(_0x58bbb0,_0x492614,_0x3cab98,_0x1795c9,_0x42429f,_0x148ba1){loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x217'));loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x218'),_0x58bbb0);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x219'),_0x492614);loggerPredictive['info']('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3cab98);loggerPredictive[_0xa1b1('0x49')]('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',_0x1795c9);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x21a'),_0x42429f);loggerPredictive['info']('---------------------------');return new Promise(function(_0x2019d8,_0x571bf9){if(_0x58bbb0<=0x0||isNaN(_0x58bbb0)){return _0x571bf9(msgResponse('[abandonmentRate]',_0xa1b1('0x81'),'m\x20=\x20'+_0x58bbb0));}if(_0x3cab98<=0x0||isNaN(_0x3cab98)){return _0x571bf9(msgResponse(_0xa1b1('0x21b'),_0xa1b1('0x81'),_0xa1b1('0x21c')+_0x3cab98));}if(_0x1795c9<=0x0||isNaN(_0x1795c9)){return _0x571bf9(msgResponse('[abandonmentRate]',_0xa1b1('0x81'),'p\x20=\x20'+_0x1795c9));}if(_0x492614<=0x0||isNaN(_0x492614)){return _0x571bf9(msgResponse(_0xa1b1('0x21b'),_0xa1b1('0x81'),_0xa1b1('0x21d')+_0x492614));}if(_0x42429f<=0x0||isNaN(_0x42429f)){return _0x571bf9(msgResponse(_0xa1b1('0x21b'),_0xa1b1('0x81'),_0xa1b1('0x21e')+_0x42429f));}_0x148ba1=_0x148ba1||0x0;var _0x31c504=0x1/_0x3cab98;var _0x53e823=0x0;var _0x4e22e4=0x0;var _0x48af26=0x0;var _0x78bbb1=0x0;for(var _0x2629b3=0x0;_0x48af26<_0x42429f;_0x2629b3+=0x1){_0x4e22e4=_0x2629b3/_0x492614;_0x53e823=(_0x1795c9*_0x4e22e4+_0x148ba1)/_0x31c504;_0x48af26=utils[_0xa1b1('0x21f')](_0x53e823,_0x58bbb0);_0x78bbb1=_0x53e823/_0x58bbb0*(0x1-utils[_0xa1b1('0x21f')](_0x53e823,_0x58bbb0));}return _0x2019d8({'erlangCalls':_0x2629b3,'erlangCallToSecond':_0x492614/_0x2629b3,'erlangAbandonmentRate':_0x48af26,'erlangBusyFactor':_0x78bbb1});});};Dialer[_0xa1b1('0x82')]['busyFactor']=function(_0x4d6b38,_0x4088b4,_0x11057b,_0x188041,_0x24cc90,_0x2d5cc3){loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x220'));loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x218'),_0x4d6b38);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x219'),_0x4088b4);loggerPredictive[_0xa1b1('0x49')]('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',_0x11057b);loggerPredictive[_0xa1b1('0x49')]('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',_0x188041);loggerPredictive[_0xa1b1('0x49')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x24cc90);loggerPredictive[_0xa1b1('0x49')](_0xa1b1('0x5b'));return new Promise(function(_0x43420e,_0x36b99a){if(_0x4d6b38<=0x0||isNaN(_0x4d6b38)){return _0x36b99a(msgResponse(_0xa1b1('0x221'),_0xa1b1('0x81'),'m\x20=\x20'+_0x4d6b38));}if(_0x11057b<=0x0||isNaN(_0x11057b)){return _0x36b99a(msgResponse(_0xa1b1('0x221'),_0xa1b1('0x81'),_0xa1b1('0x21c')+_0x11057b));}if(_0x188041<=0x0||isNaN(_0x188041)){return _0x36b99a(msgResponse(_0xa1b1('0x221'),_0xa1b1('0x81'),_0xa1b1('0x222')+_0x188041));}if(_0x4088b4<=0x0||isNaN(_0x4088b4)){return _0x36b99a(msgResponse(_0xa1b1('0x221'),_0xa1b1('0x81'),_0xa1b1('0x21d')+_0x4088b4));}if(_0x24cc90<=0x0||isNaN(_0x24cc90)){return _0x36b99a(msgResponse('[busyFactor]',_0xa1b1('0x81'),_0xa1b1('0x223')+_0x24cc90));}_0x2d5cc3=_0x2d5cc3||0x0;var _0xcf646c=0x1/_0x11057b;var _0x3b9493=0x0;var _0xb9bb5e=0x0;var _0x2f3070=0x0;var _0x376121=0x0;for(var _0x324879=0x0;_0x376121<_0x24cc90;_0x324879+=0x1){_0xb9bb5e=_0x324879/_0x4088b4;_0x3b9493=(_0x188041*_0xb9bb5e+_0x2d5cc3)/_0xcf646c;_0x2f3070=utils[_0xa1b1('0x21f')](_0x3b9493,_0x4d6b38);_0x376121=_0x3b9493/_0x4d6b38*(0x1-utils[_0xa1b1('0x21f')](_0x3b9493,_0x4d6b38));}return _0x43420e({'erlangCalls':_0x324879,'erlangCallToSecond':_0x4088b4/_0x324879,'erlangAbandonmentRate':_0x2f3070,'erlangBusyFactor':_0x376121});});};module[_0xa1b1('0x224')]=Dialer;
\ No newline at end of file
index 45bef1b..9e8af64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd977=['countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','callback','callbackuniqueid','recallme','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','dialCutDigit','number','substring','getQueue','queue','exports','util','moment','isNil','string','voiceQueue','uniqueid','Contact','phone','firstName','name','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0xb6bd50,_0x3e794d){var _0x58e9ed=function(_0x3accd3){while(--_0x3accd3){_0xb6bd50['push'](_0xb6bd50['shift']());}};_0x58e9ed(++_0x3e794d);}(_0xd977,0x17b));var _0x7d97=function(_0x52c7f4,_0x2b3ad5){_0x52c7f4=_0x52c7f4-0x0;var _0x513d5b=_0xd977[_0x52c7f4];return _0x513d5b;};'use strict';var util=require(_0x7d97('0x0'));var _=require('lodash');var moment=require(_0x7d97('0x1'));function checkNameSurname(_0x443ba7,_0x4d4782,_0x48ca74){var _0x59a859='';if(!_[_0x7d97('0x2')](_0x4d4782)&&_0x7d97('0x3')===typeof _0x4d4782){_0x59a859+=_0x4d4782;}if(!_[_0x7d97('0x2')](_0x48ca74)&&_0x7d97('0x3')===typeof _0x48ca74){_0x59a859+='\x20'+_0x48ca74;}if(_0x59a859!==''){return _0x59a859;}return _0x443ba7;}function Action(_0x422709,_0x2ec9b5,_0x65dd7d){this[_0x7d97('0x4')]=_0x422709;this[_0x7d97('0x5')]=_0x65dd7d||undefined;this['name']=checkNameSurname(_0x2ec9b5[_0x7d97('0x6')][_0x7d97('0x7')],_0x2ec9b5[_0x7d97('0x6')][_0x7d97('0x8')],_0x2ec9b5[_0x7d97('0x6')]['lastName']);this['number']=_0x2ec9b5['phone'];this['queue']=_0x422709[_0x7d97('0x9')];this['active']=_0x2ec9b5[_0x7d97('0xa')]||![];this[_0x7d97('0xb')]=_0x422709[_0x7d97('0xb')];this[_0x7d97('0xc')]=_0x422709['dialQueueTimeout']||0x3;this[_0x7d97('0xd')]=_0x2ec9b5[_0x7d97('0xd')];this[_0x7d97('0xe')]=_0x2ec9b5['countbusyretry'];this[_0x7d97('0xf')]=_0x2ec9b5['countcongestionretry'];this[_0x7d97('0x10')]=_0x2ec9b5[_0x7d97('0x10')];this[_0x7d97('0x11')]=_0x2ec9b5[_0x7d97('0x11')];this[_0x7d97('0x12')]=_0x2ec9b5[_0x7d97('0x12')];this[_0x7d97('0x13')]=_0x2ec9b5[_0x7d97('0x13')];this[_0x7d97('0x14')]=_0x2ec9b5['countmachineretry'];this[_0x7d97('0x15')]=_0x2ec9b5[_0x7d97('0x15')];this[_0x7d97('0x16')]=_0x2ec9b5['ContactId'];this[_0x7d97('0x17')]=_0x2ec9b5[_0x7d97('0x17')];this['UserId']=_0x2ec9b5[_0x7d97('0x18')];this[_0x7d97('0x19')]=_0x2ec9b5[_0x7d97('0x19')];this[_0x7d97('0x1a')]=_0x2ec9b5[_0x7d97('0x1a')];this[_0x7d97('0x1b')]=_0x2ec9b5['id'];this[_0x7d97('0x1c')]=_0x2ec9b5[_0x7d97('0x6')][_0x7d97('0x8')]||'';this[_0x7d97('0x1d')]=moment()[_0x7d97('0x1e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x7d97('0x1f')]=_0x2ec9b5[_0x7d97('0x1f')];this['callbackuniqueid']=_0x2ec9b5[_0x7d97('0x20')];this['callbackat']=_0x2ec9b5['callbackat'];this[_0x7d97('0x21')]=_0x2ec9b5['recallme'];this[_0x7d97('0x22')]='';this[_0x7d97('0x23')]='';}Action[_0x7d97('0x24')]['getCaller']=function(){return util['format'](_0x7d97('0x25'),this[_0x7d97('0x9')],this['voiceQueue'][_0x7d97('0x26')]>0x0?this[_0x7d97('0x27')][_0x7d97('0x28')](this[_0x7d97('0x4')][_0x7d97('0x26')]):this[_0x7d97('0x27')]);};Action[_0x7d97('0x24')][_0x7d97('0x29')]=function(){return this[_0x7d97('0x2a')];};module[_0x7d97('0x2b')]=Action;
\ No newline at end of file
+var _0xb17d=['phone','firstName','lastName','number','queue','active','type','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridname','\x22%s\x22\x20<%s>','voiceQueue','dialCutDigit','substring','prototype','exports','util','lodash','moment','isNil','string','uniqueid','name','Contact'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0xb17d,0xf4));var _0xdb17=function(_0x391d18,_0x2cdd28){_0x391d18=_0x391d18-0x0;var _0x1d9c65=_0xb17d[_0x391d18];return _0x1d9c65;};'use strict';var util=require(_0xdb17('0x0'));var _=require(_0xdb17('0x1'));var moment=require(_0xdb17('0x2'));function checkNameSurname(_0x30e78d,_0x47b0d8,_0x2743c2){var _0x241cbf='';if(!_[_0xdb17('0x3')](_0x47b0d8)&&_0xdb17('0x4')===typeof _0x47b0d8){_0x241cbf+=_0x47b0d8;}if(!_['isNil'](_0x2743c2)&&_0xdb17('0x4')===typeof _0x2743c2){_0x241cbf+='\x20'+_0x2743c2;}if(_0x241cbf!==''){return _0x241cbf;}return _0x30e78d;}function Action(_0x411d90,_0x244348,_0x3c0b58){this['voiceQueue']=_0x411d90;this[_0xdb17('0x5')]=_0x3c0b58||undefined;this[_0xdb17('0x6')]=checkNameSurname(_0x244348[_0xdb17('0x7')][_0xdb17('0x8')],_0x244348['Contact'][_0xdb17('0x9')],_0x244348[_0xdb17('0x7')][_0xdb17('0xa')]);this[_0xdb17('0xb')]=_0x244348['phone'];this[_0xdb17('0xc')]=_0x411d90[_0xdb17('0x6')];this[_0xdb17('0xd')]=_0x244348[_0xdb17('0xd')]||![];this[_0xdb17('0xe')]=_0x411d90[_0xdb17('0xe')];this['dialQueueTimeout']=_0x411d90['dialQueueTimeout']||0x3;this['scheduledat']=_0x244348['scheduledat'];this[_0xdb17('0xf')]=_0x244348[_0xdb17('0xf')];this[_0xdb17('0x10')]=_0x244348[_0xdb17('0x10')];this['countnoanswerretry']=_0x244348[_0xdb17('0x11')];this[_0xdb17('0x12')]=_0x244348[_0xdb17('0x12')];this[_0xdb17('0x13')]=_0x244348['countdropretry'];this[_0xdb17('0x14')]=_0x244348['countabandonedretry'];this[_0xdb17('0x15')]=_0x244348[_0xdb17('0x15')];this[_0xdb17('0x16')]=_0x244348[_0xdb17('0x16')];this[_0xdb17('0x17')]=_0x244348[_0xdb17('0x17')];this[_0xdb17('0x18')]=_0x244348[_0xdb17('0x18')];this[_0xdb17('0x19')]=_0x244348['UserId'];this[_0xdb17('0x1a')]=_0x244348['VoiceQueueId'];this[_0xdb17('0x1b')]=_0x244348['CampaignId'];this['idHopper']=_0x244348['id'];this[_0xdb17('0x1c')]=_0x244348[_0xdb17('0x7')]['firstName']||'';this['starttime']=moment()[_0xdb17('0x1d')](_0xdb17('0x1e'));this[_0xdb17('0x1f')]=_0x244348[_0xdb17('0x1f')];this['callbackuniqueid']=_0x244348[_0xdb17('0x20')];this[_0xdb17('0x21')]=_0x244348[_0xdb17('0x21')];this[_0xdb17('0x22')]=_0x244348['recallme'];this['originatecalleridnum']='';this[_0xdb17('0x23')]='';}Action['prototype']['getCaller']=function(){return util[_0xdb17('0x1d')](_0xdb17('0x24'),this[_0xdb17('0x6')],this[_0xdb17('0x25')][_0xdb17('0x26')]>0x0?this[_0xdb17('0xb')][_0xdb17('0x27')](this[_0xdb17('0x25')][_0xdb17('0x26')]):this[_0xdb17('0xb')]);};Action[_0xdb17('0x28')]['getQueue']=function(){return this[_0xdb17('0xc')];};module[_0xdb17('0x29')]=Action;
\ No newline at end of file
index f60d3ea..5a4cac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d1d=['agiafterat','exports','moment','../utils','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','talktime','endtime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname'];(function(_0x1240d4,_0x5a73b7){var _0x4e1950=function(_0x16cf0a){while(--_0x16cf0a){_0x1240d4['push'](_0x1240d4['shift']());}};_0x4e1950(++_0x5a73b7);}(_0x0d1d,0x1ce));var _0xd0d1=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0d1d[_0x14add3];return _0x4a174f;};'use strict';var moment=require(_0xd0d1('0x0'));var utils=require(_0xd0d1('0x1'));function AgentComplete(_0x4dee5f,_0x36b297){this[_0xd0d1('0x2')]=0x4;this[_0xd0d1('0x3')]='Answer';this[_0xd0d1('0x4')]=_0x4dee5f['scheduledat'];this['type']=_0x4dee5f[_0xd0d1('0x5')];this[_0xd0d1('0x6')]=_0x4dee5f[_0xd0d1('0x5')]===_0xd0d1('0x7')?_0xd0d1('0x8'):_0x4dee5f[_0xd0d1('0x5')];this[_0xd0d1('0x9')]=_0x4dee5f[_0xd0d1('0x9')];this[_0xd0d1('0xa')]=_0x4dee5f[_0xd0d1('0xa')];this[_0xd0d1('0xb')]=_0x4dee5f['countnoanswerretry'];this[_0xd0d1('0xc')]=_0x4dee5f[_0xd0d1('0x9')]+_0x4dee5f[_0xd0d1('0xa')]+_0x4dee5f[_0xd0d1('0xb')]+_0x4dee5f['countnosuchnumberretry']+_0x4dee5f[_0xd0d1('0xd')]+_0x4dee5f[_0xd0d1('0xe')]+_0x4dee5f[_0xd0d1('0xf')]+_0x4dee5f[_0xd0d1('0x10')];this[_0xd0d1('0x11')]=_0x4dee5f[_0xd0d1('0x11')];this[_0xd0d1('0xd')]=_0x4dee5f[_0xd0d1('0xd')];this[_0xd0d1('0xe')]=_0x4dee5f[_0xd0d1('0xe')];this[_0xd0d1('0xf')]=_0x4dee5f[_0xd0d1('0xf')];this[_0xd0d1('0x10')]=_0x4dee5f[_0xd0d1('0x10')];this[_0xd0d1('0x12')]=_0x36b297[_0xd0d1('0x12')];this[_0xd0d1('0x13')]=_0x4dee5f[_0xd0d1('0x14')];this[_0xd0d1('0x15')]=_0x4dee5f[_0xd0d1('0x16')];this[_0xd0d1('0x17')]=_0x4dee5f[_0xd0d1('0x17')];this[_0xd0d1('0x18')]=_0x4dee5f[_0xd0d1('0x18')];this[_0xd0d1('0x19')]=_0x4dee5f[_0xd0d1('0x19')];this['endtime']=moment()['format'](_0xd0d1('0x1a'));this[_0xd0d1('0x1b')]=utils[_0xd0d1('0x1c')](_0x4dee5f['responsetime'],_0x4dee5f[_0xd0d1('0x17')]);this['holdtime']=utils['getSeconds'](_0x4dee5f[_0xd0d1('0x19')],_0x4dee5f[_0xd0d1('0x18')]);this[_0xd0d1('0x1d')]=utils[_0xd0d1('0x1c')](this[_0xd0d1('0x1e')],_0x4dee5f[_0xd0d1('0x19')]);this[_0xd0d1('0x8')]=_0x36b297[_0xd0d1('0x8')];this[_0xd0d1('0x1f')]=_0x36b297[_0xd0d1('0x1f')];this[_0xd0d1('0x20')]=_0x36b297[_0xd0d1('0x20')];this['callback']=_0x4dee5f[_0xd0d1('0x21')];this[_0xd0d1('0x22')]=_0x4dee5f[_0xd0d1('0x22')];this[_0xd0d1('0x23')]=_0x4dee5f[_0xd0d1('0x23')];this[_0xd0d1('0x24')]=_0x4dee5f[_0xd0d1('0x24')];this[_0xd0d1('0x25')]=_0x4dee5f['ContactId'];this['ListId']=_0x4dee5f[_0xd0d1('0x26')];this[_0xd0d1('0x27')]=_0x4dee5f[_0xd0d1('0x27')];this[_0xd0d1('0x28')]=_0x4dee5f[_0xd0d1('0x28')];this[_0xd0d1('0x29')]=_0x4dee5f[_0xd0d1('0x29')];this[_0xd0d1('0x2a')]=_0x4dee5f[_0xd0d1('0x2a')]||'';this['originatecalleridname']=_0x4dee5f[_0xd0d1('0x2b')]||'';this[_0xd0d1('0x2c')]=_0x4dee5f[_0xd0d1('0x2c')];}module[_0xd0d1('0x2d')]=AgentComplete;
\ No newline at end of file
+var _0x9c50=['countagentrejectretry','countdropretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','answertime','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','holdtime','talktime','endtime','membername','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','exports','moment','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry'];(function(_0x506a66,_0x4fab8a){var _0x10780d=function(_0x45a2b3){while(--_0x45a2b3){_0x506a66['push'](_0x506a66['shift']());}};_0x10780d(++_0x4fab8a);}(_0x9c50,0x158));var _0x09c5=function(_0x283257,_0x145ec7){_0x283257=_0x283257-0x0;var _0x30a6f0=_0x9c50[_0x283257];return _0x30a6f0;};'use strict';var moment=require(_0x09c5('0x0'));var utils=require('../utils');function AgentComplete(_0x558ea2,_0x524d23){this[_0x09c5('0x1')]=0x4;this[_0x09c5('0x2')]=_0x09c5('0x3');this['scheduledat']=_0x558ea2[_0x09c5('0x4')];this['type']=_0x558ea2[_0x09c5('0x5')];this[_0x09c5('0x6')]=_0x558ea2['type']===_0x09c5('0x7')?_0x09c5('0x8'):_0x558ea2[_0x09c5('0x5')];this[_0x09c5('0x9')]=_0x558ea2[_0x09c5('0x9')];this['countcongestionretry']=_0x558ea2[_0x09c5('0xa')];this[_0x09c5('0xb')]=_0x558ea2['countnoanswerretry'];this[_0x09c5('0xc')]=_0x558ea2[_0x09c5('0x9')]+_0x558ea2[_0x09c5('0xa')]+_0x558ea2[_0x09c5('0xb')]+_0x558ea2[_0x09c5('0xd')]+_0x558ea2['countdropretry']+_0x558ea2[_0x09c5('0xe')]+_0x558ea2[_0x09c5('0xf')]+_0x558ea2[_0x09c5('0x10')];this['countnosuchnumberretry']=_0x558ea2[_0x09c5('0xd')];this['countdropretry']=_0x558ea2[_0x09c5('0x11')];this[_0x09c5('0xe')]=_0x558ea2[_0x09c5('0xe')];this['countmachineretry']=_0x558ea2['countmachineretry'];this['countagentrejectretry']=_0x558ea2['countagentrejectretry'];this['uniqueid']=_0x524d23[_0x09c5('0x12')];this[_0x09c5('0x13')]=_0x558ea2[_0x09c5('0x14')];this[_0x09c5('0x15')]=_0x558ea2['number'];this[_0x09c5('0x16')]=_0x558ea2[_0x09c5('0x16')];this[_0x09c5('0x17')]=_0x558ea2[_0x09c5('0x17')];this[_0x09c5('0x18')]=_0x558ea2[_0x09c5('0x18')];this['endtime']=moment()['format'](_0x09c5('0x19'));this[_0x09c5('0x1a')]=utils[_0x09c5('0x1b')](_0x558ea2[_0x09c5('0x17')],_0x558ea2['starttime']);this[_0x09c5('0x1c')]=utils[_0x09c5('0x1b')](_0x558ea2['answertime'],_0x558ea2[_0x09c5('0x17')]);this[_0x09c5('0x1d')]=utils[_0x09c5('0x1b')](this[_0x09c5('0x1e')],_0x558ea2['answertime']);this[_0x09c5('0x8')]=_0x524d23['queue'];this['membername']=_0x524d23[_0x09c5('0x1f')];this['reason']=_0x524d23['reason'];this[_0x09c5('0x20')]=_0x558ea2[_0x09c5('0x20')];this[_0x09c5('0x21')]=_0x558ea2[_0x09c5('0x21')];this[_0x09c5('0x22')]=_0x558ea2['callbackat'];this[_0x09c5('0x23')]=_0x558ea2['recallme'];this[_0x09c5('0x24')]=_0x558ea2[_0x09c5('0x24')];this[_0x09c5('0x25')]=_0x558ea2[_0x09c5('0x25')];this['UserId']=_0x558ea2[_0x09c5('0x26')];this[_0x09c5('0x27')]=_0x558ea2['VoiceQueueId'];this[_0x09c5('0x28')]=_0x558ea2[_0x09c5('0x28')];this[_0x09c5('0x29')]=_0x558ea2['originatecalleridnum']||'';this[_0x09c5('0x2a')]=_0x558ea2[_0x09c5('0x2a')]||'';this[_0x09c5('0x2b')]=_0x558ea2[_0x09c5('0x2b')];}module[_0x09c5('0x2c')]=AgentComplete;
\ No newline at end of file
index 0c78a94..7393b37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9268=['ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','uniqueid','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','calleridnum','starttime','responsetime','endtime'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x9268,0x1d7));var _0x8926=function(_0x217ff6,_0x36f75d){_0x217ff6=_0x217ff6-0x0;var _0x417c93=_0x9268[_0x217ff6];return _0x417c93;};'use strict';function Final(_0x314255){this[_0x8926('0x0')]=_0x314255[_0x8926('0x0')];this[_0x8926('0x1')]=_0x314255[_0x8926('0x1')];this[_0x8926('0x2')]=_0x314255['type'];this['campaigntype']=_0x314255[_0x8926('0x2')]===_0x8926('0x3')?'queue':_0x314255[_0x8926('0x2')];this[_0x8926('0x4')]=_0x314255[_0x8926('0x4')];this['countcongestionretry']=_0x314255[_0x8926('0x5')];this[_0x8926('0x6')]=_0x314255[_0x8926('0x6')];this[_0x8926('0x7')]=_0x314255[_0x8926('0x4')]+_0x314255[_0x8926('0x5')]+_0x314255[_0x8926('0x6')]+_0x314255[_0x8926('0x8')]+_0x314255[_0x8926('0x9')]+_0x314255[_0x8926('0xa')]+_0x314255[_0x8926('0xb')]+_0x314255[_0x8926('0xc')];this[_0x8926('0x8')]=_0x314255[_0x8926('0x8')];this[_0x8926('0x9')]=_0x314255['countdropretry'];this[_0x8926('0xa')]=_0x314255['countabandonedretry'];this['countmachineretry']=_0x314255['countmachineretry'];this[_0x8926('0xc')]=_0x314255[_0x8926('0xc')];this[_0x8926('0xd')]=_0x314255[_0x8926('0xd')];this[_0x8926('0xe')]=_0x314255[_0x8926('0xe')];this['calleridnum']=_0x314255[_0x8926('0xf')];this[_0x8926('0x10')]=_0x314255[_0x8926('0x10')];this[_0x8926('0x11')]=_0x314255[_0x8926('0x11')];this[_0x8926('0x12')]=_0x314255['responsetime'];this[_0x8926('0x13')]=_0x314255[_0x8926('0x13')]||0x0;this[_0x8926('0x14')]=_0x314255[_0x8926('0x14')]||0x0;this[_0x8926('0x15')]=_0x314255[_0x8926('0x15')]||0x0;this[_0x8926('0x16')]=_0x314255[_0x8926('0x16')];this['callbackuniqueid']=_0x314255[_0x8926('0x17')];this[_0x8926('0x18')]=_0x314255[_0x8926('0x18')];this[_0x8926('0x19')]=_0x314255[_0x8926('0x19')];this[_0x8926('0x1a')]=_0x314255['ContactId'];this[_0x8926('0x1b')]=_0x314255[_0x8926('0x1b')];this[_0x8926('0x1c')]=_0x314255[_0x8926('0x1c')];this[_0x8926('0x1d')]=_0x314255[_0x8926('0x1d')];this[_0x8926('0x1e')]=_0x314255[_0x8926('0x1e')];this[_0x8926('0x1f')]=_0x314255['originatecalleridnum']||'';this[_0x8926('0x20')]=_0x314255[_0x8926('0x20')]||'';this[_0x8926('0x21')]=_0x314255[_0x8926('0x21')];this[_0x8926('0x22')]=_0x314255[_0x8926('0x22')];}module['exports']=Final;
\ No newline at end of file
+var _0x2951=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0xcb5ece,_0x2d699f){var _0x221fcc=function(_0x4c5056){while(--_0x4c5056){_0xcb5ece['push'](_0xcb5ece['shift']());}};_0x221fcc(++_0x2d699f);}(_0x2951,0x15a));var _0x1295=function(_0x2e9187,_0x3763f6){_0x2e9187=_0x2e9187-0x0;var _0x1fc3a8=_0x2951[_0x2e9187];return _0x1fc3a8;};'use strict';function Final(_0xe89959){this[_0x1295('0x0')]=_0xe89959[_0x1295('0x0')];this[_0x1295('0x1')]=_0xe89959[_0x1295('0x1')];this[_0x1295('0x2')]=_0xe89959[_0x1295('0x2')];this['campaigntype']=_0xe89959[_0x1295('0x2')]===_0x1295('0x3')?_0x1295('0x4'):_0xe89959[_0x1295('0x2')];this[_0x1295('0x5')]=_0xe89959[_0x1295('0x5')];this[_0x1295('0x6')]=_0xe89959[_0x1295('0x6')];this['countnoanswerretry']=_0xe89959['countnoanswerretry'];this[_0x1295('0x7')]=_0xe89959[_0x1295('0x5')]+_0xe89959[_0x1295('0x6')]+_0xe89959['countnoanswerretry']+_0xe89959[_0x1295('0x8')]+_0xe89959[_0x1295('0x9')]+_0xe89959[_0x1295('0xa')]+_0xe89959[_0x1295('0xb')]+_0xe89959[_0x1295('0xc')];this[_0x1295('0x8')]=_0xe89959[_0x1295('0x8')];this['countdropretry']=_0xe89959[_0x1295('0x9')];this['countabandonedretry']=_0xe89959[_0x1295('0xa')];this[_0x1295('0xb')]=_0xe89959[_0x1295('0xb')];this['countagentrejectretry']=_0xe89959[_0x1295('0xc')];this[_0x1295('0x4')]=_0xe89959[_0x1295('0x4')];this[_0x1295('0xd')]=_0xe89959[_0x1295('0xd')];this[_0x1295('0xe')]=_0xe89959[_0x1295('0xe')];this[_0x1295('0xf')]=_0xe89959[_0x1295('0xf')];this[_0x1295('0x10')]=_0xe89959['responsetime'];this[_0x1295('0x11')]=_0xe89959['responsetime'];this[_0x1295('0x12')]=_0xe89959[_0x1295('0x12')]||0x0;this[_0x1295('0x13')]=_0xe89959['holdtime']||0x0;this[_0x1295('0x14')]=_0xe89959['talktime']||0x0;this[_0x1295('0x15')]=_0xe89959[_0x1295('0x15')];this[_0x1295('0x16')]=_0xe89959['callbackuniqueid'];this['callbackat']=_0xe89959[_0x1295('0x17')];this[_0x1295('0x18')]=_0xe89959[_0x1295('0x18')];this['ContactId']=_0xe89959[_0x1295('0x19')];this[_0x1295('0x1a')]=_0xe89959[_0x1295('0x1a')];this[_0x1295('0x1b')]=_0xe89959[_0x1295('0x1b')];this[_0x1295('0x1c')]=_0xe89959[_0x1295('0x1c')];this['CampaignId']=_0xe89959[_0x1295('0x1d')];this[_0x1295('0x1e')]=_0xe89959[_0x1295('0x1e')]||'';this[_0x1295('0x1f')]=_0xe89959[_0x1295('0x1f')]||'';this[_0x1295('0x20')]=_0xe89959['state'];this[_0x1295('0x21')]=_0xe89959['statedesc'];}module['exports']=Final;
\ No newline at end of file
index 5477425..8c606b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdab7=['name','number','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','starttime','holdtime','talktime','queue','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','state','Answer','scheduledat','type','campaigntype','outbound','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname'];(function(_0xe36b2b,_0xa18c0a){var _0xfc3d45=function(_0x5def0d){while(--_0x5def0d){_0xe36b2b['push'](_0xe36b2b['shift']());}};_0xfc3d45(++_0xa18c0a);}(_0xdab7,0x11b));var _0x7dab=function(_0x340be8,_0x4069b2){_0x340be8=_0x340be8-0x0;var _0x91d41c=_0xdab7[_0x340be8];return _0x91d41c;};'use strict';var moment=require('moment');var utils=require('../utils');function Hangup(_0x1b2712,_0x8328e9){this[_0x7dab('0x0')]=0x4;this['statedesc']=_0x7dab('0x1');this[_0x7dab('0x2')]=_0x1b2712[_0x7dab('0x2')];this[_0x7dab('0x3')]=_0x1b2712[_0x7dab('0x3')];this[_0x7dab('0x4')]=_0x1b2712[_0x7dab('0x3')]===_0x7dab('0x5')?'queue':_0x1b2712[_0x7dab('0x3')];this[_0x7dab('0x6')]=_0x1b2712['amd']||![];this['countbusyretry']=_0x1b2712[_0x7dab('0x7')];this[_0x7dab('0x8')]=_0x1b2712[_0x7dab('0x8')];this[_0x7dab('0x9')]=_0x1b2712[_0x7dab('0x9')];this[_0x7dab('0xa')]=_0x1b2712[_0x7dab('0x7')]+_0x1b2712[_0x7dab('0x8')]+_0x1b2712[_0x7dab('0x9')]+_0x1b2712[_0x7dab('0xb')]+_0x1b2712[_0x7dab('0xc')]+_0x1b2712[_0x7dab('0xd')]+_0x1b2712[_0x7dab('0xe')]+_0x1b2712[_0x7dab('0xf')];this['countnosuchnumberretry']=_0x1b2712['countnosuchnumberretry'];this['countdropretry']=_0x1b2712[_0x7dab('0xc')];this[_0x7dab('0xd')]=_0x1b2712['countabandonedretry'];this[_0x7dab('0xe')]=_0x1b2712['countmachineretry'];this[_0x7dab('0xf')]=_0x1b2712['countagentrejectretry'];this[_0x7dab('0x10')]=_0x8328e9[_0x7dab('0x10')];this[_0x7dab('0x11')]=_0x1b2712[_0x7dab('0x12')];this['calleridnum']=_0x1b2712[_0x7dab('0x13')];this['starttime']=_0x1b2712['starttime'];this[_0x7dab('0x14')]=_0x1b2712['responsetime'];this['endtime']=moment()[_0x7dab('0x15')](_0x7dab('0x16'));this[_0x7dab('0x17')]=utils[_0x7dab('0x18')](_0x1b2712['responsetime'],_0x1b2712[_0x7dab('0x19')]);this[_0x7dab('0x1a')]=0x0;this[_0x7dab('0x1b')]=utils['getSeconds'](this['endtime'],_0x1b2712[_0x7dab('0x14')]);this[_0x7dab('0x1c')]=_0x1b2712[_0x7dab('0x1c')];this[_0x7dab('0x1d')]=_0x7dab('0x1e');this[_0x7dab('0x1f')]=_0x8328e9[_0x7dab('0x20')];this[_0x7dab('0x21')]=_0x1b2712['callback'];this[_0x7dab('0x22')]=_0x1b2712['callbackuniqueid'];this[_0x7dab('0x23')]=_0x1b2712[_0x7dab('0x23')];this[_0x7dab('0x24')]=_0x1b2712['recallme'];this[_0x7dab('0x25')]=_0x1b2712[_0x7dab('0x25')];this[_0x7dab('0x26')]=_0x1b2712['ListId'];this['UserId']=_0x1b2712[_0x7dab('0x27')];this['VoiceQueueId']=_0x1b2712[_0x7dab('0x28')];this[_0x7dab('0x29')]=_0x1b2712[_0x7dab('0x29')];}module[_0x7dab('0x2a')]=Hangup;
\ No newline at end of file
+var _0x4b0c=['recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','../utils','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','responsetime','format','ringtime','getSeconds','starttime','holdtime','queue','IVR','cause-txt','callback','callbackuniqueid','callbackat'];(function(_0x2ed8f3,_0x4aa12f){var _0x525a55=function(_0x4cfb58){while(--_0x4cfb58){_0x2ed8f3['push'](_0x2ed8f3['shift']());}};_0x525a55(++_0x4aa12f);}(_0x4b0c,0x181));var _0xc4b0=function(_0xb283cf,_0x2a471a){_0xb283cf=_0xb283cf-0x0;var _0x4c9f26=_0x4b0c[_0xb283cf];return _0x4c9f26;};'use strict';var moment=require('moment');var utils=require(_0xc4b0('0x0'));function Hangup(_0x421044,_0x426f2f){this[_0xc4b0('0x1')]=0x4;this[_0xc4b0('0x2')]=_0xc4b0('0x3');this[_0xc4b0('0x4')]=_0x421044[_0xc4b0('0x4')];this['type']=_0x421044[_0xc4b0('0x5')];this[_0xc4b0('0x6')]=_0x421044['type']===_0xc4b0('0x7')?'queue':_0x421044[_0xc4b0('0x5')];this[_0xc4b0('0x8')]=_0x421044[_0xc4b0('0x8')]||![];this[_0xc4b0('0x9')]=_0x421044['countbusyretry'];this[_0xc4b0('0xa')]=_0x421044['countcongestionretry'];this[_0xc4b0('0xb')]=_0x421044['countnoanswerretry'];this[_0xc4b0('0xc')]=_0x421044[_0xc4b0('0x9')]+_0x421044[_0xc4b0('0xa')]+_0x421044[_0xc4b0('0xb')]+_0x421044[_0xc4b0('0xd')]+_0x421044[_0xc4b0('0xe')]+_0x421044[_0xc4b0('0xf')]+_0x421044[_0xc4b0('0x10')]+_0x421044[_0xc4b0('0x11')];this['countnosuchnumberretry']=_0x421044['countnosuchnumberretry'];this['countdropretry']=_0x421044[_0xc4b0('0xe')];this[_0xc4b0('0xf')]=_0x421044[_0xc4b0('0xf')];this[_0xc4b0('0x10')]=_0x421044[_0xc4b0('0x10')];this[_0xc4b0('0x11')]=_0x421044[_0xc4b0('0x11')];this[_0xc4b0('0x12')]=_0x426f2f['uniqueid'];this[_0xc4b0('0x13')]=_0x421044[_0xc4b0('0x14')];this[_0xc4b0('0x15')]=_0x421044[_0xc4b0('0x16')];this['starttime']=_0x421044['starttime'];this[_0xc4b0('0x17')]=_0x421044[_0xc4b0('0x17')];this['endtime']=moment()[_0xc4b0('0x18')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc4b0('0x19')]=utils[_0xc4b0('0x1a')](_0x421044[_0xc4b0('0x17')],_0x421044[_0xc4b0('0x1b')]);this[_0xc4b0('0x1c')]=0x0;this['talktime']=utils[_0xc4b0('0x1a')](this['endtime'],_0x421044['responsetime']);this[_0xc4b0('0x1d')]=_0x421044['queue'];this['membername']=_0xc4b0('0x1e');this['reason']=_0x426f2f[_0xc4b0('0x1f')];this[_0xc4b0('0x20')]=_0x421044[_0xc4b0('0x20')];this[_0xc4b0('0x21')]=_0x421044[_0xc4b0('0x21')];this[_0xc4b0('0x22')]=_0x421044[_0xc4b0('0x22')];this[_0xc4b0('0x23')]=_0x421044[_0xc4b0('0x23')];this[_0xc4b0('0x24')]=_0x421044[_0xc4b0('0x24')];this['ListId']=_0x421044[_0xc4b0('0x25')];this[_0xc4b0('0x26')]=_0x421044[_0xc4b0('0x26')];this[_0xc4b0('0x27')]=_0x421044[_0xc4b0('0x27')];this[_0xc4b0('0x28')]=_0x421044['CampaignId'];}module[_0xc4b0('0x29')]=Hangup;
\ No newline at end of file
index 06b071d..ded46c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c09=['UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','../utils','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countdropretry','countmachineretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','calleridname','calleridnum','number','starttime','responsetime','endtime','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x3033a,_0x481c8e){var _0x10c4a7=function(_0x485c0b){while(--_0x485c0b){_0x3033a['push'](_0x3033a['shift']());}};_0x10c4a7(++_0x481c8e);}(_0x0c09,0xe0));var _0x90c0=function(_0x11799b,_0x34d945){_0x11799b=_0x11799b-0x0;var _0x250321=_0x0c09[_0x11799b];return _0x250321;};'use strict';var utils=require(_0x90c0('0x0'));function History(_0xe46f30){this[_0x90c0('0x1')]=_0xe46f30[_0x90c0('0x1')];this[_0x90c0('0x2')]=_0xe46f30[_0x90c0('0x2')]||undefined;this[_0x90c0('0x3')]=_0xe46f30[_0x90c0('0x3')];this[_0x90c0('0x4')]=_0xe46f30[_0x90c0('0x3')]===_0x90c0('0x5')?_0x90c0('0x6'):_0xe46f30[_0x90c0('0x3')];this[_0x90c0('0x7')]=_0xe46f30['countbusyretry'];this['countcongestionretry']=_0xe46f30['countcongestionretry'];this[_0x90c0('0x8')]=_0xe46f30[_0x90c0('0x8')];this[_0x90c0('0x9')]=_0xe46f30[_0x90c0('0x7')]+_0xe46f30[_0x90c0('0xa')]+_0xe46f30[_0x90c0('0x8')]+_0xe46f30['countnosuchnumberretry']+_0xe46f30[_0x90c0('0xb')]+_0xe46f30['countabandonedretry']+_0xe46f30[_0x90c0('0xc')]+_0xe46f30['countagentrejectretry'];this[_0x90c0('0xd')]=_0xe46f30[_0x90c0('0xd')];this[_0x90c0('0xb')]=_0xe46f30[_0x90c0('0xb')];this[_0x90c0('0xe')]=_0xe46f30[_0x90c0('0xe')];this[_0x90c0('0xc')]=_0xe46f30[_0x90c0('0xc')];this[_0x90c0('0xf')]=_0xe46f30[_0x90c0('0xf')];this[_0x90c0('0x6')]=_0xe46f30['queue'];this[_0x90c0('0x10')]=_0xe46f30['name'];this[_0x90c0('0x11')]=_0xe46f30[_0x90c0('0x12')];this['starttime']=_0xe46f30[_0x90c0('0x13')];this[_0x90c0('0x14')]=_0xe46f30[_0x90c0('0x14')];this[_0x90c0('0x15')]=_0xe46f30['responsetime'];this['ringtime']=utils['getSeconds'](_0xe46f30['responsetime'],_0xe46f30['starttime']);this[_0x90c0('0x16')]=0x0;this['talktime']=0x0;this[_0x90c0('0x17')]=_0xe46f30[_0x90c0('0x17')];this[_0x90c0('0x18')]=_0xe46f30[_0x90c0('0x18')];this[_0x90c0('0x19')]=_0xe46f30[_0x90c0('0x19')];this[_0x90c0('0x1a')]=_0xe46f30[_0x90c0('0x1a')];this[_0x90c0('0x1b')]=_0xe46f30[_0x90c0('0x1b')];this['ListId']=_0xe46f30['ListId'];this[_0x90c0('0x1c')]=_0xe46f30['UserId'];this[_0x90c0('0x1d')]=_0xe46f30['VoiceQueueId'];this[_0x90c0('0x1e')]=_0xe46f30[_0x90c0('0x1e')];this[_0x90c0('0x1f')]=_0xe46f30[_0x90c0('0x1f')]||'';this[_0x90c0('0x20')]=_0xe46f30[_0x90c0('0x20')]||'';this[_0x90c0('0x21')]=_0xe46f30[_0x90c0('0x21')];this[_0x90c0('0x22')]=_0xe46f30[_0x90c0('0x22')];}module[_0x90c0('0x23')]=History;
\ No newline at end of file
+var _0x5c42=['ringtime','getSeconds','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','../utils','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','name','number','starttime','responsetime','endtime'];(function(_0x3ba422,_0x53303c){var _0x20b5dd=function(_0x10b8a7){while(--_0x10b8a7){_0x3ba422['push'](_0x3ba422['shift']());}};_0x20b5dd(++_0x53303c);}(_0x5c42,0xa9));var _0x25c4=function(_0x1c8f6f,_0x1de15b){_0x1c8f6f=_0x1c8f6f-0x0;var _0x33b77d=_0x5c42[_0x1c8f6f];return _0x33b77d;};'use strict';var utils=require(_0x25c4('0x0'));function History(_0x52d6e8){this[_0x25c4('0x1')]=_0x52d6e8[_0x25c4('0x1')];this[_0x25c4('0x2')]=_0x52d6e8[_0x25c4('0x2')]||undefined;this[_0x25c4('0x3')]=_0x52d6e8[_0x25c4('0x3')];this[_0x25c4('0x4')]=_0x52d6e8[_0x25c4('0x3')]===_0x25c4('0x5')?_0x25c4('0x6'):_0x52d6e8[_0x25c4('0x3')];this[_0x25c4('0x7')]=_0x52d6e8[_0x25c4('0x7')];this[_0x25c4('0x8')]=_0x52d6e8[_0x25c4('0x8')];this[_0x25c4('0x9')]=_0x52d6e8[_0x25c4('0x9')];this['countglobal']=_0x52d6e8[_0x25c4('0x7')]+_0x52d6e8[_0x25c4('0x8')]+_0x52d6e8[_0x25c4('0x9')]+_0x52d6e8[_0x25c4('0xa')]+_0x52d6e8['countdropretry']+_0x52d6e8[_0x25c4('0xb')]+_0x52d6e8[_0x25c4('0xc')]+_0x52d6e8[_0x25c4('0xd')];this[_0x25c4('0xa')]=_0x52d6e8[_0x25c4('0xa')];this[_0x25c4('0xe')]=_0x52d6e8[_0x25c4('0xe')];this[_0x25c4('0xb')]=_0x52d6e8[_0x25c4('0xb')];this[_0x25c4('0xc')]=_0x52d6e8[_0x25c4('0xc')];this['countagentrejectretry']=_0x52d6e8[_0x25c4('0xd')];this['queue']=_0x52d6e8['queue'];this[_0x25c4('0xf')]=_0x52d6e8[_0x25c4('0x10')];this['calleridnum']=_0x52d6e8[_0x25c4('0x11')];this[_0x25c4('0x12')]=_0x52d6e8[_0x25c4('0x12')];this[_0x25c4('0x13')]=_0x52d6e8['responsetime'];this[_0x25c4('0x14')]=_0x52d6e8[_0x25c4('0x13')];this[_0x25c4('0x15')]=utils[_0x25c4('0x16')](_0x52d6e8[_0x25c4('0x13')],_0x52d6e8['starttime']);this[_0x25c4('0x17')]=0x0;this['talktime']=0x0;this[_0x25c4('0x18')]=_0x52d6e8[_0x25c4('0x18')];this[_0x25c4('0x19')]=_0x52d6e8[_0x25c4('0x19')];this[_0x25c4('0x1a')]=_0x52d6e8[_0x25c4('0x1a')];this[_0x25c4('0x1b')]=_0x52d6e8[_0x25c4('0x1b')];this[_0x25c4('0x1c')]=_0x52d6e8['ContactId'];this[_0x25c4('0x1d')]=_0x52d6e8[_0x25c4('0x1d')];this[_0x25c4('0x1e')]=_0x52d6e8[_0x25c4('0x1e')];this[_0x25c4('0x1f')]=_0x52d6e8[_0x25c4('0x1f')];this[_0x25c4('0x20')]=_0x52d6e8['CampaignId'];this[_0x25c4('0x21')]=_0x52d6e8[_0x25c4('0x21')]||'';this[_0x25c4('0x22')]=_0x52d6e8[_0x25c4('0x22')]||'';this['state']=_0x52d6e8[_0x25c4('0x23')];this[_0x25c4('0x24')]=_0x52d6e8['statedesc'];}module[_0x25c4('0x25')]=History;
\ No newline at end of file
index d46a56f..5770684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2725=['state','statedesc','exports','../utils','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countmachineretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','dropreason','endtime','ringtime','getSeconds','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat'];(function(_0x2fe9cf,_0x418069){var _0x3a1fe0=function(_0x329a54){while(--_0x329a54){_0x2fe9cf['push'](_0x2fe9cf['shift']());}};_0x3a1fe0(++_0x418069);}(_0x2725,0x186));var _0x5272=function(_0x170772,_0x1f1ee7){_0x170772=_0x170772-0x0;var _0x3ef69c=_0x2725[_0x170772];return _0x3ef69c;};'use strict';var utils=require(_0x5272('0x0'));function QueueCallerAbandon(_0x29e886,_0x3ac6cd){this[_0x5272('0x1')]=_0x29e886[_0x5272('0x1')];this[_0x5272('0x2')]=_0x29e886[_0x5272('0x2')];this[_0x5272('0x3')]=_0x29e886[_0x5272('0x2')]==='outbound'?_0x5272('0x4'):_0x29e886[_0x5272('0x2')];this[_0x5272('0x5')]=_0x29e886[_0x5272('0x5')];this[_0x5272('0x6')]=_0x29e886[_0x5272('0x6')];this['countnoanswerretry']=_0x29e886['countnoanswerretry'];this['countglobal']=_0x29e886['countbusyretry']+_0x29e886['countcongestionretry']+_0x29e886[_0x5272('0x7')]+_0x29e886['countnosuchnumberretry']+_0x29e886[_0x5272('0x8')]+_0x29e886['countabandonedretry']+_0x29e886[_0x5272('0x9')]+_0x29e886['countagentrejectretry'];this[_0x5272('0xa')]=_0x29e886[_0x5272('0xa')];this[_0x5272('0x8')]=_0x29e886[_0x5272('0x8')];this[_0x5272('0xb')]=_0x29e886[_0x5272('0xb')];this['countmachineretry']=_0x29e886[_0x5272('0x9')];this[_0x5272('0xc')]=_0x29e886[_0x5272('0xc')];this[_0x5272('0xd')]=_0x3ac6cd[_0x5272('0xd')];this[_0x5272('0xe')]=_0x29e886[_0x5272('0xf')];this[_0x5272('0x10')]=_0x29e886['number'];this[_0x5272('0x11')]=_0x29e886[_0x5272('0x11')];this[_0x5272('0x12')]=_0x29e886['responsetime'];this[_0x5272('0x13')]=_0x29e886[_0x5272('0x13')];this[_0x5272('0x14')]=_0x29e886[_0x5272('0x14')];this[_0x5272('0x15')]=this[_0x5272('0x13')];this[_0x5272('0x16')]=utils[_0x5272('0x17')](_0x29e886['responsetime'],_0x29e886[_0x5272('0x11')]);this[_0x5272('0x18')]=utils[_0x5272('0x17')](this[_0x5272('0x13')],_0x29e886[_0x5272('0x12')]);this[_0x5272('0x19')]=0x0;this[_0x5272('0x4')]=_0x3ac6cd['queue'];this[_0x5272('0x1a')]=_0x3ac6cd[_0x5272('0x1b')];this[_0x5272('0x1c')]=_0x3ac6cd[_0x5272('0x1c')];this[_0x5272('0x1d')]=_0x29e886[_0x5272('0x1d')];this[_0x5272('0x1e')]=_0x29e886['callbackuniqueid'];this[_0x5272('0x1f')]=_0x29e886[_0x5272('0x1f')];this[_0x5272('0x20')]=_0x29e886[_0x5272('0x20')];this[_0x5272('0x21')]=_0x29e886[_0x5272('0x21')];this['ListId']=_0x29e886['ListId'];this['UserId']=_0x29e886[_0x5272('0x22')];this[_0x5272('0x23')]=_0x29e886['VoiceQueueId'];this[_0x5272('0x24')]=_0x29e886[_0x5272('0x24')];this[_0x5272('0x25')]=_0x29e886[_0x5272('0x25')]||'';this[_0x5272('0x26')]=_0x29e886[_0x5272('0x26')]||'';this['agiafterat']=_0x29e886[_0x5272('0x27')];this[_0x5272('0x28')]=_0x29e886[_0x5272('0x28')];this[_0x5272('0x29')]=_0x29e886[_0x5272('0x29')];}module[_0x5272('0x2a')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x4a88=['countdropretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','droptime','dropreason','ringtime','getSeconds','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','exports','../utils','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x4a88,0x1ad));var _0x84a8=function(_0x34cc73,_0x3a3c21){_0x34cc73=_0x34cc73-0x0;var _0x427632=_0x4a88[_0x34cc73];return _0x427632;};'use strict';var utils=require(_0x84a8('0x0'));function QueueCallerAbandon(_0x332ec5,_0x18ed74){this['scheduledat']=_0x332ec5[_0x84a8('0x1')];this[_0x84a8('0x2')]=_0x332ec5[_0x84a8('0x2')];this[_0x84a8('0x3')]=_0x332ec5[_0x84a8('0x2')]==='outbound'?'queue':_0x332ec5[_0x84a8('0x2')];this[_0x84a8('0x4')]=_0x332ec5[_0x84a8('0x4')];this[_0x84a8('0x5')]=_0x332ec5[_0x84a8('0x5')];this[_0x84a8('0x6')]=_0x332ec5['countnoanswerretry'];this[_0x84a8('0x7')]=_0x332ec5[_0x84a8('0x4')]+_0x332ec5[_0x84a8('0x5')]+_0x332ec5[_0x84a8('0x6')]+_0x332ec5[_0x84a8('0x8')]+_0x332ec5['countdropretry']+_0x332ec5[_0x84a8('0x9')]+_0x332ec5[_0x84a8('0xa')]+_0x332ec5['countagentrejectretry'];this[_0x84a8('0x8')]=_0x332ec5['countnosuchnumberretry'];this[_0x84a8('0xb')]=_0x332ec5[_0x84a8('0xb')];this[_0x84a8('0x9')]=_0x332ec5[_0x84a8('0x9')];this[_0x84a8('0xa')]=_0x332ec5['countmachineretry'];this[_0x84a8('0xc')]=_0x332ec5[_0x84a8('0xc')];this[_0x84a8('0xd')]=_0x18ed74[_0x84a8('0xd')];this[_0x84a8('0xe')]=_0x332ec5[_0x84a8('0xf')];this['calleridnum']=_0x332ec5[_0x84a8('0x10')];this[_0x84a8('0x11')]=_0x332ec5[_0x84a8('0x11')];this[_0x84a8('0x12')]=_0x332ec5[_0x84a8('0x12')];this[_0x84a8('0x13')]=_0x332ec5[_0x84a8('0x13')];this[_0x84a8('0x14')]=_0x332ec5[_0x84a8('0x14')];this['endtime']=this[_0x84a8('0x13')];this[_0x84a8('0x15')]=utils[_0x84a8('0x16')](_0x332ec5[_0x84a8('0x12')],_0x332ec5[_0x84a8('0x11')]);this[_0x84a8('0x17')]=utils[_0x84a8('0x16')](this[_0x84a8('0x13')],_0x332ec5[_0x84a8('0x12')]);this[_0x84a8('0x18')]=0x0;this[_0x84a8('0x19')]=_0x18ed74[_0x84a8('0x19')];this[_0x84a8('0x1a')]=_0x18ed74[_0x84a8('0x1b')];this[_0x84a8('0x1c')]=_0x18ed74[_0x84a8('0x1c')];this[_0x84a8('0x1d')]=_0x332ec5['callback'];this['callbackuniqueid']=_0x332ec5[_0x84a8('0x1e')];this[_0x84a8('0x1f')]=_0x332ec5[_0x84a8('0x1f')];this['recallme']=_0x332ec5[_0x84a8('0x20')];this['ContactId']=_0x332ec5[_0x84a8('0x21')];this[_0x84a8('0x22')]=_0x332ec5[_0x84a8('0x22')];this[_0x84a8('0x23')]=_0x332ec5[_0x84a8('0x23')];this[_0x84a8('0x24')]=_0x332ec5[_0x84a8('0x24')];this[_0x84a8('0x25')]=_0x332ec5[_0x84a8('0x25')];this[_0x84a8('0x26')]=_0x332ec5['originatecalleridnum']||'';this[_0x84a8('0x27')]=_0x332ec5[_0x84a8('0x27')]||'';this[_0x84a8('0x28')]=_0x332ec5[_0x84a8('0x28')];this[_0x84a8('0x29')]=_0x332ec5[_0x84a8('0x29')];this['statedesc']=_0x332ec5[_0x84a8('0x2a')];}module[_0x84a8('0x2b')]=QueueCallerAbandon;
\ No newline at end of file
index 76bfdf4..8e4be41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['[checkIsBlackListIvr]','verifyAdditionalPhones','[verifyAdditionalPhone]','swapAdditionalPhones','avgHandleTime','[avgHandleTime]','[createHistory]','util','../../../../config/logger','dialer','../../rpc/cmHopper','../../rpc/cmHopperAdditionalPhone','../../rpc/cmHopperBlack','../../rpc/cmHopperHistory','inspect','dialOrderByScheduledAt','catch','temp','[getContactDialer]','getContactDialer','getContactDialerIvr','error','[getContactDialerIvr]','countReScheduled','[countReScheduled]','rescheduleContact','[rescheduleContact]','unlockContact','[moveContactManagedDialer]','moveContactManagedDialer','checkIsBlackList','checkIsBlackListIvr'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x4745,0x1e7));var _0x5474=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x4745[_0x92c450];return _0x2a9599;};'use strict';var util=require(_0x5474('0x0'));var logger=require(_0x5474('0x1'))(_0x5474('0x2'));var cmHopper=require(_0x5474('0x3'));var cmHopperAdditionalPhone=require(_0x5474('0x4'));var cmHopperBlack=require(_0x5474('0x5'));var cmHopperHistory=require(_0x5474('0x6'));function inspectError(_0x19bbf0){return util[_0x5474('0x7')](_0x19bbf0,{'showHidden':![],'depth':null});}function getContactDialer(_0x39fb9b,_0x45a895,_0x34f89b){return cmHopper['getContactDialer'](_0x39fb9b['id'],_0x45a895,_0x34f89b,_0x39fb9b[_0x5474('0x8')])[_0x5474('0x9')](function(_0x57add7){_0x39fb9b[_0x5474('0xa')]=0x0;logger['error'](_0x5474('0xb'),inspectError(_0x57add7));});}exports[_0x5474('0xc')]=getContactDialer;function getContactDialerIvr(_0x4fae2b,_0xf876f8){return cmHopper[_0x5474('0xd')](_0x4fae2b['id'],_0xf876f8,_0x4fae2b[_0x5474('0x8')])[_0x5474('0x9')](function(_0x4444dd){_0x4fae2b[_0x5474('0xa')]=0x0;logger[_0x5474('0xe')](_0x5474('0xf'),inspectError(_0x4444dd));});}exports['getContactDialerIvr']=getContactDialerIvr;function countReScheduled(_0x38dadb){return cmHopper[_0x5474('0x10')](_0x38dadb)[_0x5474('0x9')](function(_0x12cd7f){logger[_0x5474('0xe')](_0x5474('0x11'),inspectError(_0x12cd7f));});}exports[_0x5474('0x10')]=countReScheduled;function rescheduleContact(_0xc05a28){return cmHopper[_0x5474('0x12')](_0xc05a28)['catch'](function(_0xb828fe){logger[_0x5474('0xe')](_0x5474('0x13'),inspectError(_0xb828fe));});}exports[_0x5474('0x12')]=rescheduleContact;function unlockContact(_0x5a6353,_0x540e31,_0x50b949){return cmHopper['unlockContact'](_0x5a6353,_0x540e31,_0x50b949)[_0x5474('0x9')](function(_0x172bcb){logger[_0x5474('0xe')]('[unlockContact]',inspectError(_0x172bcb));});}exports[_0x5474('0x14')]=unlockContact;function moveContactManagedDialer(_0x2be746){return cmHopper['moveContactManagedDialer'](_0x2be746)[_0x5474('0x9')](function(_0x198fc8){logger[_0x5474('0xe')](_0x5474('0x15'),inspectError(_0x198fc8));});}exports[_0x5474('0x16')]=moveContactManagedDialer;function checkIsBlackList(_0x4ab269){return cmHopperBlack[_0x5474('0x17')](_0x4ab269)['catch'](function(_0x3023cd){logger[_0x5474('0xe')]('[checkIsBlackList]',inspectError(_0x3023cd));});}exports['checkIsBlackList']=checkIsBlackList;function checkIsBlackListIvr(_0x563539){return cmHopperBlack[_0x5474('0x18')](_0x563539)[_0x5474('0x9')](function(_0x475374){logger[_0x5474('0xe')](_0x5474('0x19'),inspectError(_0x475374));});}exports[_0x5474('0x18')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0xe4850d,_0x1e512d,_0x219be1){return cmHopperAdditionalPhone[_0x5474('0x1a')](_0xe4850d,_0x1e512d,_0x219be1)['catch'](function(_0x5f065d){logger[_0x5474('0xe')](_0x5474('0x1b'),inspectError(_0x5f065d));});}exports[_0x5474('0x1a')]=verifyAdditionalPhones;function swapAdditionalPhones(_0x4b40e0,_0x24997a,_0x49f691){return cmHopperAdditionalPhone[_0x5474('0x1c')](_0x4b40e0,_0x24997a,_0x49f691)[_0x5474('0x9')](function(_0x4b8985){logger[_0x5474('0xe')]('[swapAdditionalPhone]',inspectError(_0x4b8985));});}exports[_0x5474('0x1c')]=swapAdditionalPhones;function avgHandleTime(_0x5efa8d){return cmHopperHistory[_0x5474('0x1d')](_0x5efa8d)[_0x5474('0x9')](function(_0x2a8730){logger['error'](_0x5474('0x1e'),inspectError(_0x2a8730));});}exports[_0x5474('0x1d')]=avgHandleTime;function createHistory(_0x479e44){return cmHopperHistory['createHistory'](_0x479e44)['catch'](function(_0x492a31){logger[_0x5474('0xe')](_0x5474('0x1f'),inspectError(_0x492a31));});}exports['createHistory']=createHistory;
\ No newline at end of file
+var _0x7096=['countReScheduled','[countReScheduled]','rescheduleContact','[rescheduleContact]','unlockContact','moveContactManagedDialer','[moveContactManagedDialer]','checkIsBlackList','[checkIsBlackList]','checkIsBlackListIvr','[checkIsBlackListIvr]','verifyAdditionalPhones','[swapAdditionalPhone]','swapAdditionalPhones','avgHandleTime','[createHistory]','../../../../config/logger','../../rpc/cmHopper','../../rpc/cmHopperBlack','../../rpc/cmHopperHistory','inspect','getContactDialer','dialOrderByScheduledAt','catch','temp','error','getContactDialerIvr','[getContactDialerIvr]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7096,0x10c));var _0x6709=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x7096[_0x4e9628];return _0x27bc8c;};'use strict';var util=require('util');var logger=require(_0x6709('0x0'))('dialer');var cmHopper=require(_0x6709('0x1'));var cmHopperAdditionalPhone=require('../../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x6709('0x2'));var cmHopperHistory=require(_0x6709('0x3'));function inspectError(_0x3e85e4){return util[_0x6709('0x4')](_0x3e85e4,{'showHidden':![],'depth':null});}function getContactDialer(_0x3cd087,_0x3c8599,_0xb8fe6d){return cmHopper[_0x6709('0x5')](_0x3cd087['id'],_0x3c8599,_0xb8fe6d,_0x3cd087[_0x6709('0x6')])[_0x6709('0x7')](function(_0x11ad23){_0x3cd087[_0x6709('0x8')]=0x0;logger[_0x6709('0x9')]('[getContactDialer]',inspectError(_0x11ad23));});}exports['getContactDialer']=getContactDialer;function getContactDialerIvr(_0x2c07b1,_0x2d8c0b){return cmHopper[_0x6709('0xa')](_0x2c07b1['id'],_0x2d8c0b,_0x2c07b1[_0x6709('0x6')])[_0x6709('0x7')](function(_0x426ea1){_0x2c07b1['temp']=0x0;logger['error'](_0x6709('0xb'),inspectError(_0x426ea1));});}exports[_0x6709('0xa')]=getContactDialerIvr;function countReScheduled(_0x275dd3){return cmHopper[_0x6709('0xc')](_0x275dd3)[_0x6709('0x7')](function(_0x288f51){logger[_0x6709('0x9')](_0x6709('0xd'),inspectError(_0x288f51));});}exports['countReScheduled']=countReScheduled;function rescheduleContact(_0x78ce3){return cmHopper[_0x6709('0xe')](_0x78ce3)[_0x6709('0x7')](function(_0x3706e1){logger['error'](_0x6709('0xf'),inspectError(_0x3706e1));});}exports['rescheduleContact']=rescheduleContact;function unlockContact(_0x41af1f,_0x4bc059,_0x149233){return cmHopper[_0x6709('0x10')](_0x41af1f,_0x4bc059,_0x149233)[_0x6709('0x7')](function(_0x3d5c28){logger['error']('[unlockContact]',inspectError(_0x3d5c28));});}exports['unlockContact']=unlockContact;function moveContactManagedDialer(_0x3fa5b1){return cmHopper[_0x6709('0x11')](_0x3fa5b1)['catch'](function(_0x9c1fd8){logger[_0x6709('0x9')](_0x6709('0x12'),inspectError(_0x9c1fd8));});}exports['moveContactManagedDialer']=moveContactManagedDialer;function checkIsBlackList(_0x13cf04){return cmHopperBlack[_0x6709('0x13')](_0x13cf04)[_0x6709('0x7')](function(_0x27a27b){logger['error'](_0x6709('0x14'),inspectError(_0x27a27b));});}exports[_0x6709('0x13')]=checkIsBlackList;function checkIsBlackListIvr(_0x373047){return cmHopperBlack[_0x6709('0x15')](_0x373047)[_0x6709('0x7')](function(_0x224e8a){logger[_0x6709('0x9')](_0x6709('0x16'),inspectError(_0x224e8a));});}exports[_0x6709('0x15')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0x1c5153,_0x2f3415,_0xa36371){return cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x1c5153,_0x2f3415,_0xa36371)[_0x6709('0x7')](function(_0x81138e){logger[_0x6709('0x9')]('[verifyAdditionalPhone]',inspectError(_0x81138e));});}exports[_0x6709('0x17')]=verifyAdditionalPhones;function swapAdditionalPhones(_0x32d346,_0x20a347,_0x44b465){return cmHopperAdditionalPhone['swapAdditionalPhones'](_0x32d346,_0x20a347,_0x44b465)[_0x6709('0x7')](function(_0x3076fe){logger['error'](_0x6709('0x18'),inspectError(_0x3076fe));});}exports[_0x6709('0x19')]=swapAdditionalPhones;function avgHandleTime(_0x5dbb87){return cmHopperHistory[_0x6709('0x1a')](_0x5dbb87)[_0x6709('0x7')](function(_0x50ada6){logger[_0x6709('0x9')]('[avgHandleTime]',inspectError(_0x50ada6));});}exports[_0x6709('0x1a')]=avgHandleTime;function createHistory(_0x3cd555){return cmHopperHistory['createHistory'](_0x3cd555)[_0x6709('0x7')](function(_0x4e6989){logger[_0x6709('0x9')](_0x6709('0x1b'),inspectError(_0x4e6989));});}exports['createHistory']=createHistory;
\ No newline at end of file
index 9b6d4b1..90efd90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60eb=['\x5cw{0,','pow','random','getCallerIdRandom','error','[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative','decrementOriginate','length','checkContactEmpty','erlangb','checkContactLowerLimitOriginate','createdAt','tags','updatedAt','undefined','XMD-','toUpperCase','setXMDContactVariables','moment','../../../../config/logger','dialer','../../../../config/environment/shared','timezones','ACTIVE','RESCHEDULED_CONTACTS','IS_DISACTIVED','NOT_ACTIVE','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_NULL','INTERVAL_IS_OVERTIME','RECALLINQUEUE','RECALLFAILEDTIMEOUT','TIMEZONE_UNKNOW','TRUNK_IS_NOT_REACHABLE','dialMethod','preview','isPreviewCampaign','type','ivr','isIVRCampaign','outbound','isOutboundQueue','dialActive','isQueueCampaignActive','milliseconds','diff','seconds','getSeconds','message','available','loggedIn','loggedInDb','paused','talking','pTalking','waiting','inUse','originated','Trunk','name','active','dialTimezone','isNil','Interval','Intervals','NULL_INTERVAL','isEmpty','EMPTY_INTERVAL','UNKNOWN_TIMEZONE','SIP/','reachable','unmonitored','status','TrunkBackup','includes','INACTIVE','DISACTIVED','NO_AGENTS_LOGGED','getQueueCampaignStatusMessage','getQueueCampaignActiveStatusMessage','match','extractCalleridName','isUndefined','string','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>'];(function(_0x27c21c,_0x303182){var _0x3803a8=function(_0x1b5ba2){while(--_0x1b5ba2){_0x27c21c['push'](_0x27c21c['shift']());}};_0x3803a8(++_0x303182);}(_0x60eb,0x172));var _0xb60e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x60eb[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var moment=require(_0xb60e('0x0'));var util=require('util');var logger=require(_0xb60e('0x1'))(_0xb60e('0x2'));var timezones=require(_0xb60e('0x3'))[_0xb60e('0x4')];var CAMPAIGN_STATUS={'ACTIVE':_0xb60e('0x5'),'BLACKLIST':'BLACKLIST','CONTACTS_RESCHEDULED':_0xb60e('0x6'),'DEACTIVATED':'DEACTIVATED','DISACTIVED':_0xb60e('0x7'),'EMPTY_INTERVAL':'INTERVAL_IS_EMPTY','INACTIVE':_0xb60e('0x8'),'NO_AGENTS_LOGGED':_0xb60e('0x9'),'NO_AVAILABLE_CONTACTS':_0xb60e('0xa'),'NULL_INTERVAL':_0xb60e('0xb'),'OVERTIME_INTERVAL':_0xb60e('0xc'),'OVERTIME_GLOBAL_INTERVAL':'GLOBAL_INTERVAL_IS_OVERTIME','QUEUE_RECALL':_0xb60e('0xd'),'RECALL_TIMEOUT':_0xb60e('0xe'),'RUNNING':'RUNNING','UNKNOWN_TIMEZONE':_0xb60e('0xf'),'UNREACHABLE_TRUNK':_0xb60e('0x10')};exports['CAMPAIGN_STATUS']=CAMPAIGN_STATUS;function isPreviewCampaign(_0x1b8541){return _0x1b8541[_0xb60e('0x11')]===_0xb60e('0x12');}exports[_0xb60e('0x13')]=isPreviewCampaign;function isIVRCampaign(_0xe62022){return _0xe62022[_0xb60e('0x14')]===_0xb60e('0x15');}exports[_0xb60e('0x16')]=isIVRCampaign;function isOutboundQueue(_0x224074){return _0x224074['type']===_0xb60e('0x17');}exports[_0xb60e('0x18')]=isOutboundQueue;function isQueueCampaignActive(_0x23dcb6){return _0x23dcb6[_0xb60e('0x19')];}exports[_0xb60e('0x1a')]=isQueueCampaignActive;function isIVRCampaignActive(_0x39fedf){return _0x39fedf['active'];}exports['isIVRCampaignActive']=isIVRCampaignActive;function getSeconds(_0x254da2,_0x439159){var _0xf4369b=moment(_0x254da2)['milliseconds'](0x0);var _0x5f3053=moment(_0x439159)[_0xb60e('0x1b')](0x0);return _0xf4369b[_0xb60e('0x1c')](_0x5f3053,_0xb60e('0x1d'));}exports[_0xb60e('0x1e')]=getSeconds;function hasQueueCampaignDataChanged(_0xb0d3dd,_0x23322b){var _0x193a60=![];var _0x162150=_0xb0d3dd[_0xb60e('0x11')]!==_0x23322b[_0xb60e('0x11')]||_0xb0d3dd[_0xb60e('0x19')]!==_0x23322b[_0xb60e('0x19')]||_0xb0d3dd['message']!==_0x23322b[_0xb60e('0x1f')];var _0x158457=_0xb0d3dd[_0xb60e('0x20')]!==_0x23322b[_0xb60e('0x20')]||_0xb0d3dd[_0xb60e('0x21')]!==_0x23322b[_0xb60e('0x21')]||_0xb0d3dd[_0xb60e('0x22')]!==_0x23322b['loggedInDb']||_0xb0d3dd[_0xb60e('0x23')]!==_0x23322b[_0xb60e('0x23')]||_0xb0d3dd[_0xb60e('0x24')]!==_0x23322b[_0xb60e('0x24')]||_0xb0d3dd[_0xb60e('0x25')]!==_0x23322b['pTalking']||_0xb0d3dd['waiting']!==_0x23322b[_0xb60e('0x26')]||_0xb0d3dd[_0xb60e('0x27')]!==_0x23322b['inUse']||_0xb0d3dd[_0xb60e('0x28')]!==_0x23322b['originated'];if(_0xb0d3dd[_0xb60e('0x29')]&&_0x23322b[_0xb60e('0x29')]){_0x193a60=_0xb0d3dd[_0xb60e('0x29')][_0xb60e('0x2a')]!==_0x23322b[_0xb60e('0x29')][_0xb60e('0x2a')]||_0xb0d3dd[_0xb60e('0x29')][_0xb60e('0x2b')]!==_0x23322b['Trunk'][_0xb60e('0x2b')];}return _0x162150||_0x158457||_0x193a60;}exports['hasQueueCampaignDataChanged']=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x4f145b){var _0xe56f67=null;var _0x516af3=_0x4f145b[_0xb60e('0x2c')];if(_[_0xb60e('0x2d')](_0x4f145b['dialGlobalInterval'])||_[_0xb60e('0x2d')](_0x4f145b[_0xb60e('0x2e')])||_[_0xb60e('0x2d')](_0x4f145b[_0xb60e('0x2e')][_0xb60e('0x2f')])){_0xe56f67=CAMPAIGN_STATUS[_0xb60e('0x30')];}else if(_[_0xb60e('0x31')](_0x4f145b['dialGlobalInterval'])||_['isEmpty'](_0x4f145b['Interval'][_0xb60e('0x2f')])){_0xe56f67=CAMPAIGN_STATUS[_0xb60e('0x32')];}else if(_0x516af3&&!timezones[_0x516af3]){_0xe56f67=CAMPAIGN_STATUS[_0xb60e('0x33')];}return _0xe56f67;}function checkAnyValidTrunk(_0x16e65f,_0x520428){var _0x24712b=null;var _0x3ec0e9=_0xb60e('0x34');var _0x16a119=[_0xb60e('0x35'),_0xb60e('0x36')];var _0x90a40c=!![];if(_0x16e65f[_0xb60e('0x29')]&&_0x16e65f[_0xb60e('0x29')]['active']){_0x3ec0e9+=_0x16e65f[_0xb60e('0x29')][_0xb60e('0x2a')];_0x24712b=_0x520428[_0x3ec0e9];_0x90a40c=_0x16a119['includes'](_0x24712b[_0xb60e('0x37')]);}else if(_0x16e65f[_0xb60e('0x38')]&&_0x16e65f[_0xb60e('0x38')][_0xb60e('0x2b')]){_0x3ec0e9+=_0x16e65f[_0xb60e('0x38')][_0xb60e('0x2a')];_0x24712b=_0x520428[_0x3ec0e9];_0x90a40c=_0x16a119[_0xb60e('0x39')](_0x24712b[_0xb60e('0x37')]);}return _0x90a40c;}function getQueueCampaignStatusMessage(_0xd8a722,_0x4957da){var _0x33ac44=CAMPAIGN_STATUS[_0xb60e('0x5')];var _0x2f8606=isPreviewCampaign(_0xd8a722);if(!isQueueCampaignActive(_0xd8a722)){if(_0x2f8606){_0x33ac44=CAMPAIGN_STATUS['INACTIVE'];}else{if(_0xd8a722[_0xb60e('0x28')]===0x0&&_0xd8a722[_0xb60e('0x24')]===0x0&&_0xd8a722['waiting']===0x0&&(_0xd8a722['pTalking']||0x0)===0x0){_0x33ac44=CAMPAIGN_STATUS[_0xb60e('0x3a')];}else{_0x33ac44=CAMPAIGN_STATUS[_0xb60e('0x3b')];}}}else if(_0xd8a722['loggedIn']===0x0){_0x33ac44=CAMPAIGN_STATUS[_0xb60e('0x3c')];}else if(!checkAnyValidTrunk(_0xd8a722,_0x4957da)){_0x33ac44=CAMPAIGN_STATUS['UNREACHABLE_TRUNK'];}else if(!isPreviewCampaign(_0xd8a722)){var _0x50d15f=checkAnyValidQueueCampaignInterval(_0xd8a722);if(_0x50d15f){_0x33ac44=_0x50d15f;}}return _0x33ac44;}exports[_0xb60e('0x3d')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x5d955c){var _0x4e0db2=CAMPAIGN_STATUS[_0xb60e('0x3b')];if(_0x5d955c[_0xb60e('0x28')]===0x0&&_0x5d955c[_0xb60e('0x24')]===0x0&&_0x5d955c[_0xb60e('0x26')]===0x0&&(_0x5d955c[_0xb60e('0x25')]||0x0)===0x0){_0x4e0db2=CAMPAIGN_STATUS[_0xb60e('0x3a')];}return _0x4e0db2;}exports[_0xb60e('0x3e')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x2f1b41){var _0x3e1b1f=_0x2f1b41[_0xb60e('0x3f')](/"(.*?)"/);return _0x3e1b1f?_0x3e1b1f[0x1]:_0x2f1b41;}exports[_0xb60e('0x40')]=extractCalleridName;function getCallerId(_0x23300e,_0x2a4430,_0x3a7790){if(!_[_0xb60e('0x41')](_0x3a7790)&&typeof _0x3a7790===_0xb60e('0x42')&&!_[_0xb60e('0x31')](_0x3a7790)){if(!_[_0xb60e('0x41')](_0x2a4430)&&typeof _0x2a4430===_0xb60e('0x42')&&!_[_0xb60e('0x31')](_0x2a4430)){return util[_0xb60e('0x43')](_0xb60e('0x44'),_0x2a4430,_0x3a7790);}return util[_0xb60e('0x43')](_0xb60e('0x44'),_0x3a7790,_0x3a7790);}if(!_[_0xb60e('0x41')](_0x23300e)&&typeof _0x23300e==='string'&&!_[_0xb60e('0x31')](_0x23300e)){return _0x23300e;}return _0xb60e('0x45');}exports['getCallerId']=getCallerId;function getCallerIdRandom(_0x4cd2aa,_0x35b5bc){var _0x3c8f65;var _0x138f15;var _0x46254f;if(_0x35b5bc<=0x0){_0x35b5bc=0x1;}_0x3c8f65=new RegExp(_0xb60e('0x46')+_0x35b5bc+'}$');_0x138f15=Math[_0xb60e('0x47')](0xa,_0x35b5bc-0x1);_0x46254f=Math[_0xb60e('0x47')](0xa,_0x35b5bc)-0x1;return util[_0xb60e('0x43')]('%s',_['replace'](_0x4cd2aa,_0x3c8f65,_[_0xb60e('0x48')](_0x138f15,_0x46254f)['toString']()));}exports[_0xb60e('0x49')]=getCallerIdRandom;function decrementOriginate(_0x576291){if(_0x576291[_0xb60e('0x28')]&&_0x576291[_0xb60e('0x28')]>0x0){_0x576291[_0xb60e('0x28')]-=0x1;}else{logger[_0xb60e('0x4a')](_0xb60e('0x4b'));}}exports[_0xb60e('0x4c')]=decrementOriginate;function checkContactEmpty(_0x17f113){return _0x17f113&&_0x17f113[_0xb60e('0x4d')]>0x0;}exports[_0xb60e('0x4e')]=checkContactEmpty;function erlangb(_0x486100,_0xeef3ef){if(_0xeef3ef===0x0){return 0x0;}var _0x20328b=0x1;for(var _0x249add=0x1;_0x249add<=_0xeef3ef;_0x249add+=0x1){_0x20328b=0x1+_0x20328b*_0x249add/_0x486100;}return 0x1/_0x20328b;}exports[_0xb60e('0x4f')]=erlangb;function checkContactLowerLimitOriginate(_0x529b0b,_0x36e15e,_0x27f2b2){if(_0x36e15e>_0x27f2b2){for(var _0x2cb2b7=0x0;_0x2cb2b7<_0x36e15e-_0x27f2b2;_0x2cb2b7+=0x1){decrementOriginate(_0x529b0b);}}}exports[_0xb60e('0x50')]=checkContactLowerLimitOriginate;function setXMDContactVariables(_0xae397a){var _0x888fe9={};var _0x3a17f8=['id',_0xb60e('0x51'),'description',_0xb60e('0x52'),_0xb60e('0x53')];if(_0xae397a){for(var _0x5b3e9e in _0xae397a){if(typeof _0xae397a[_0x5b3e9e]!==_0xb60e('0x54')){if(!_[_0xb60e('0x2d')](_0xae397a[_0x5b3e9e])&&!_0x3a17f8['includes'](_0x5b3e9e)){_0x888fe9[util[_0xb60e('0x43')]('%s%s',_0xb60e('0x55'),_0x5b3e9e[_0xb60e('0x56')]())]=_0xae397a[_0x5b3e9e];}}}}return _0x888fe9;}exports[_0xb60e('0x57')]=setXMDContactVariables;
\ No newline at end of file
+var _0x9b58=['IS_DISACTIVED','INTERVAL_IS_EMPTY','NOT_ACTIVE','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_OVERTIME','GLOBAL_INTERVAL_IS_OVERTIME','RECALLINQUEUE','RECALLFAILEDTIMEOUT','CAMPAIGN_STATUS','dialMethod','preview','isPreviewCampaign','ivr','isIVRCampaign','type','isOutboundQueue','dialActive','isQueueCampaignActive','isIVRCampaignActive','diff','seconds','getSeconds','message','available','loggedIn','loggedInDb','paused','talking','pTalking','waiting','inUse','originated','Trunk','name','active','hasQueueCampaignDataChanged','dialTimezone','isNil','dialGlobalInterval','Interval','Intervals','NULL_INTERVAL','isEmpty','EMPTY_INTERVAL','UNKNOWN_TIMEZONE','SIP/','reachable','includes','TrunkBackup','INACTIVE','DISACTIVED','NO_AGENTS_LOGGED','UNREACHABLE_TRUNK','getQueueCampaignStatusMessage','getQueueCampaignActiveStatusMessage','match','extractCalleridName','isUndefined','string','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','getCallerId','pow','replace','random','toString','getCallerIdRandom','error','decrementOriginate','length','checkContactEmpty','erlangb','tags','updatedAt','undefined','description','XMD-','toUpperCase','substring','setXMDContactVariables','lodash','moment','util','dialer','../../../../config/environment/shared','timezones','ACTIVE','BLACKLIST'];(function(_0x39b957,_0x45ed84){var _0x17609a=function(_0x701d3e){while(--_0x701d3e){_0x39b957['push'](_0x39b957['shift']());}};_0x17609a(++_0x45ed84);}(_0x9b58,0x160));var _0x89b5=function(_0x1b4d59,_0x52610a){_0x1b4d59=_0x1b4d59-0x0;var _0x5e3006=_0x9b58[_0x1b4d59];return _0x5e3006;};'use strict';var _=require(_0x89b5('0x0'));var moment=require(_0x89b5('0x1'));var util=require(_0x89b5('0x2'));var logger=require('../../../../config/logger')(_0x89b5('0x3'));var timezones=require(_0x89b5('0x4'))[_0x89b5('0x5')];var CAMPAIGN_STATUS={'ACTIVE':_0x89b5('0x6'),'BLACKLIST':_0x89b5('0x7'),'CONTACTS_RESCHEDULED':'RESCHEDULED_CONTACTS','DEACTIVATED':'DEACTIVATED','DISACTIVED':_0x89b5('0x8'),'EMPTY_INTERVAL':_0x89b5('0x9'),'INACTIVE':_0x89b5('0xa'),'NO_AGENTS_LOGGED':_0x89b5('0xb'),'NO_AVAILABLE_CONTACTS':_0x89b5('0xc'),'NULL_INTERVAL':'INTERVAL_IS_NULL','OVERTIME_INTERVAL':_0x89b5('0xd'),'OVERTIME_GLOBAL_INTERVAL':_0x89b5('0xe'),'QUEUE_RECALL':_0x89b5('0xf'),'RECALL_TIMEOUT':_0x89b5('0x10'),'RUNNING':'RUNNING','UNKNOWN_TIMEZONE':'TIMEZONE_UNKNOW','UNREACHABLE_TRUNK':'TRUNK_IS_NOT_REACHABLE'};exports[_0x89b5('0x11')]=CAMPAIGN_STATUS;function isPreviewCampaign(_0x11ff2d){return _0x11ff2d[_0x89b5('0x12')]===_0x89b5('0x13');}exports[_0x89b5('0x14')]=isPreviewCampaign;function isIVRCampaign(_0x4e3cb3){return _0x4e3cb3['type']===_0x89b5('0x15');}exports[_0x89b5('0x16')]=isIVRCampaign;function isOutboundQueue(_0x3a05f2){return _0x3a05f2[_0x89b5('0x17')]==='outbound';}exports[_0x89b5('0x18')]=isOutboundQueue;function isQueueCampaignActive(_0x53841f){return _0x53841f[_0x89b5('0x19')];}exports[_0x89b5('0x1a')]=isQueueCampaignActive;function isIVRCampaignActive(_0x3ffa33){return _0x3ffa33['active'];}exports[_0x89b5('0x1b')]=isIVRCampaignActive;function getSeconds(_0x1193d1,_0x556725){var _0x56c5b4=moment(_0x1193d1)['milliseconds'](0x0);var _0x32add1=moment(_0x556725)['milliseconds'](0x0);return _0x56c5b4[_0x89b5('0x1c')](_0x32add1,_0x89b5('0x1d'));}exports[_0x89b5('0x1e')]=getSeconds;function hasQueueCampaignDataChanged(_0x3f9625,_0x197e84){var _0xf14e6d=![];var _0x3d4813=_0x3f9625[_0x89b5('0x12')]!==_0x197e84[_0x89b5('0x12')]||_0x3f9625['dialActive']!==_0x197e84[_0x89b5('0x19')]||_0x3f9625['message']!==_0x197e84[_0x89b5('0x1f')];var _0xac4283=_0x3f9625[_0x89b5('0x20')]!==_0x197e84[_0x89b5('0x20')]||_0x3f9625[_0x89b5('0x21')]!==_0x197e84['loggedIn']||_0x3f9625[_0x89b5('0x22')]!==_0x197e84[_0x89b5('0x22')]||_0x3f9625[_0x89b5('0x23')]!==_0x197e84[_0x89b5('0x23')]||_0x3f9625[_0x89b5('0x24')]!==_0x197e84['talking']||_0x3f9625[_0x89b5('0x25')]!==_0x197e84[_0x89b5('0x25')]||_0x3f9625[_0x89b5('0x26')]!==_0x197e84[_0x89b5('0x26')]||_0x3f9625[_0x89b5('0x27')]!==_0x197e84['inUse']||_0x3f9625[_0x89b5('0x28')]!==_0x197e84[_0x89b5('0x28')];if(_0x3f9625[_0x89b5('0x29')]&&_0x197e84[_0x89b5('0x29')]){_0xf14e6d=_0x3f9625['Trunk'][_0x89b5('0x2a')]!==_0x197e84[_0x89b5('0x29')][_0x89b5('0x2a')]||_0x3f9625[_0x89b5('0x29')][_0x89b5('0x2b')]!==_0x197e84['Trunk'][_0x89b5('0x2b')];}return _0x3d4813||_0xac4283||_0xf14e6d;}exports[_0x89b5('0x2c')]=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x7db09c){var _0x8669f9=null;var _0x6fbb7b=_0x7db09c[_0x89b5('0x2d')];if(_[_0x89b5('0x2e')](_0x7db09c[_0x89b5('0x2f')])||_['isNil'](_0x7db09c[_0x89b5('0x30')])||_['isNil'](_0x7db09c[_0x89b5('0x30')][_0x89b5('0x31')])){_0x8669f9=CAMPAIGN_STATUS[_0x89b5('0x32')];}else if(_[_0x89b5('0x33')](_0x7db09c[_0x89b5('0x2f')])||_[_0x89b5('0x33')](_0x7db09c[_0x89b5('0x30')]['Intervals'])){_0x8669f9=CAMPAIGN_STATUS[_0x89b5('0x34')];}else if(_0x6fbb7b&&!timezones[_0x6fbb7b]){_0x8669f9=CAMPAIGN_STATUS[_0x89b5('0x35')];}return _0x8669f9;}function checkAnyValidTrunk(_0x58a374,_0x4f83c9){var _0x362982=null;var _0x24a43f=_0x89b5('0x36');var _0x2a620f=[_0x89b5('0x37'),'unmonitored'];var _0x4bd9d7=!![];if(_0x58a374[_0x89b5('0x29')]&&_0x58a374['Trunk']['active']){_0x24a43f+=_0x58a374[_0x89b5('0x29')][_0x89b5('0x2a')];_0x362982=_0x4f83c9[_0x24a43f];_0x4bd9d7=_0x2a620f[_0x89b5('0x38')](_0x362982['status']);}else if(_0x58a374[_0x89b5('0x39')]&&_0x58a374[_0x89b5('0x39')]['active']){_0x24a43f+=_0x58a374[_0x89b5('0x39')]['name'];_0x362982=_0x4f83c9[_0x24a43f];_0x4bd9d7=_0x2a620f['includes'](_0x362982['status']);}return _0x4bd9d7;}function getQueueCampaignStatusMessage(_0x2a5244,_0x394e35){var _0x243cd2=CAMPAIGN_STATUS[_0x89b5('0x6')];var _0x3fe9f9=isPreviewCampaign(_0x2a5244);if(!isQueueCampaignActive(_0x2a5244)){if(_0x3fe9f9){_0x243cd2=CAMPAIGN_STATUS['INACTIVE'];}else{if(_0x2a5244['originated']===0x0&&_0x2a5244[_0x89b5('0x24')]===0x0&&_0x2a5244['waiting']===0x0&&(_0x2a5244[_0x89b5('0x25')]||0x0)===0x0){_0x243cd2=CAMPAIGN_STATUS[_0x89b5('0x3a')];}else{_0x243cd2=CAMPAIGN_STATUS[_0x89b5('0x3b')];}}}else if(_0x2a5244['loggedIn']===0x0){_0x243cd2=CAMPAIGN_STATUS[_0x89b5('0x3c')];}else if(!checkAnyValidTrunk(_0x2a5244,_0x394e35)){_0x243cd2=CAMPAIGN_STATUS[_0x89b5('0x3d')];}else if(!isPreviewCampaign(_0x2a5244)){var _0x39dd5c=checkAnyValidQueueCampaignInterval(_0x2a5244);if(_0x39dd5c){_0x243cd2=_0x39dd5c;}}return _0x243cd2;}exports[_0x89b5('0x3e')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x525ab1){var _0x5a7d5d=CAMPAIGN_STATUS[_0x89b5('0x3b')];if(_0x525ab1[_0x89b5('0x28')]===0x0&&_0x525ab1[_0x89b5('0x24')]===0x0&&_0x525ab1[_0x89b5('0x26')]===0x0&&(_0x525ab1[_0x89b5('0x25')]||0x0)===0x0){_0x5a7d5d=CAMPAIGN_STATUS[_0x89b5('0x3a')];}return _0x5a7d5d;}exports[_0x89b5('0x3f')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x20c13b){var _0x1dcdf7=_0x20c13b[_0x89b5('0x40')](/"(.*?)"/);return _0x1dcdf7?_0x1dcdf7[0x1]:_0x20c13b;}exports[_0x89b5('0x41')]=extractCalleridName;function getCallerId(_0x130310,_0x495f04,_0x4184b4){if(!_[_0x89b5('0x42')](_0x4184b4)&&typeof _0x4184b4===_0x89b5('0x43')&&!_[_0x89b5('0x33')](_0x4184b4)){if(!_[_0x89b5('0x42')](_0x495f04)&&typeof _0x495f04==='string'&&!_[_0x89b5('0x33')](_0x495f04)){return util['format'](_0x89b5('0x44'),_0x495f04,_0x4184b4);}return util[_0x89b5('0x45')](_0x89b5('0x44'),_0x4184b4,_0x4184b4);}if(!_['isUndefined'](_0x130310)&&typeof _0x130310===_0x89b5('0x43')&&!_['isEmpty'](_0x130310)){return _0x130310;}return _0x89b5('0x46');}exports[_0x89b5('0x47')]=getCallerId;function getCallerIdRandom(_0x5f5561,_0x51dfdf){var _0x4465f8;var _0x5a4bd8;var _0x34ec8f;if(_0x51dfdf<=0x0){_0x51dfdf=0x1;}_0x4465f8=new RegExp('\x5cw{0,'+_0x51dfdf+'}$');_0x5a4bd8=Math[_0x89b5('0x48')](0xa,_0x51dfdf-0x1);_0x34ec8f=Math[_0x89b5('0x48')](0xa,_0x51dfdf)-0x1;return util[_0x89b5('0x45')]('%s',_[_0x89b5('0x49')](_0x5f5561,_0x4465f8,_[_0x89b5('0x4a')](_0x5a4bd8,_0x34ec8f)[_0x89b5('0x4b')]()));}exports[_0x89b5('0x4c')]=getCallerIdRandom;function decrementOriginate(_0x549d48){if(_0x549d48[_0x89b5('0x28')]&&_0x549d48[_0x89b5('0x28')]>0x0){_0x549d48[_0x89b5('0x28')]-=0x1;}else{logger[_0x89b5('0x4d')]('[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative');}}exports[_0x89b5('0x4e')]=decrementOriginate;function checkContactEmpty(_0x1066ec){return _0x1066ec&&_0x1066ec[_0x89b5('0x4f')]>0x0;}exports[_0x89b5('0x50')]=checkContactEmpty;function erlangb(_0x2114b3,_0x13bc46){if(_0x13bc46===0x0){return 0x0;}var _0x555d1e=0x1;for(var _0x412e0b=0x1;_0x412e0b<=_0x13bc46;_0x412e0b+=0x1){_0x555d1e=0x1+_0x555d1e*_0x412e0b/_0x2114b3;}return 0x1/_0x555d1e;}exports[_0x89b5('0x51')]=erlangb;function checkContactLowerLimitOriginate(_0x5bf922,_0xe32361,_0x3c222d){if(_0xe32361>_0x3c222d){for(var _0x1910ed=0x0;_0x1910ed<_0xe32361-_0x3c222d;_0x1910ed+=0x1){decrementOriginate(_0x5bf922);}}}exports['checkContactLowerLimitOriginate']=checkContactLowerLimitOriginate;function setXMDContactVariables(_0x4c5743){var _0x4efce2={};var _0x4f3923=['id','createdAt',_0x89b5('0x52'),_0x89b5('0x53')];const _0x219e9c=0xfa;if(_0x4c5743){for(var _0x32082b in _0x4c5743){if(typeof _0x4c5743[_0x32082b]!==_0x89b5('0x54')){if(!_[_0x89b5('0x2e')](_0x4c5743[_0x32082b])&&!_0x4f3923['includes'](_0x32082b)){if(_0x32082b===_0x89b5('0x55')&&_0x4c5743[_0x32082b][_0x89b5('0x4f')]>_0x219e9c){_0x4efce2[_0x89b5('0x56')+_0x32082b[_0x89b5('0x57')]()]=_0x4c5743[_0x32082b]['toString']()[_0x89b5('0x58')](0x0,_0x219e9c);}else{_0x4efce2[_0x89b5('0x56')+_0x32082b['toUpperCase']()]=_0x4c5743[_0x32082b];}}}}}return _0x4efce2;}exports[_0x89b5('0x59')]=setXMDContactVariables;
\ No newline at end of file
index 2a3b0fd..d66f409 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(_0x5b34ef,_0x454975){var _0x3563b0=function(_0x15e805){while(--_0x15e805){_0x5b34ef['push'](_0x5b34ef['shift']());}};_0x3563b0(++_0x454975);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'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(_0x33877b,_0x54db8e){var _0x13f29c=function(_0x5a38bb){while(--_0x5a38bb){_0x33877b['push'](_0x33877b['shift']());}};_0x13f29c(++_0x54db8e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 0e78b60..0bcb959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd6e=['bind','varset','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','faxAccounts','uniqueid','channel','name','info','\x20syncNewchannel\x20','syncVarSet','variable','syncNewState','channelstate','channelstatedesc','operation','status','localstationid','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','notify','calleridnum','catch','error','stringify','\x20receiveFax\x20','merge','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','updateStatus','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','path','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','exports','util','bluebird','moment','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./channel','./util/util','./action','../rpc/faxAccount','../rpc/faxMessage','channels','trunks','actions','newchannel','syncNewchannel'];(function(_0x41e44f,_0x277a85){var _0x353324=function(_0x4f5261){while(--_0x4f5261){_0x41e44f['push'](_0x41e44f['shift']());}};_0x353324(++_0x277a85);}(_0xdd6e,0xe6));var _0xedd6=function(_0x16df11,_0x265110){_0x16df11=_0x16df11-0x0;var _0x1d7205=_0xdd6e[_0x16df11];return _0x1d7205;};'use strict';var util=require(_0xedd6('0x0'));var _=require('lodash');var BPromise=require(_0xedd6('0x1'));var uuid=require('uuid');var moment=require(_0xedd6('0x2'));var path=require('path');var tiff2pdf=require(_0xedd6('0x3'));var gs=require(_0xedd6('0x4'));var logger=require(_0xedd6('0x5'))(_0xedd6('0x6'));var ami=require(_0xedd6('0x7'));var rpcDb=require('./rpcDb');var Channel=require(_0xedd6('0x8'));var ut=require(_0xedd6('0x9'));var Action=require(_0xedd6('0xa'));var faxAccount=require(_0xedd6('0xb'));var attachment=require('../rpc/attachment');var faxMessage=require(_0xedd6('0xc'));function Fax(_0x521292){this[_0xedd6('0xd')]={};this['faxAccounts']=_0x521292['faxAccounts'];this[_0xedd6('0xe')]=_0x521292[_0xedd6('0xe')];this[_0xedd6('0xf')]={};ami['on'](_0xedd6('0x10'),this[_0xedd6('0x11')][_0xedd6('0x12')](this));ami['on'](_0xedd6('0x13'),this['syncVarSet'][_0xedd6('0x12')](this));ami['on']('newstate',this['syncNewState'][_0xedd6('0x12')](this));ami['on'](_0xedd6('0x14'),this[_0xedd6('0x15')][_0xedd6('0x12')](this));ami['on'](_0xedd6('0x16'),this[_0xedd6('0x17')][_0xedd6('0x12')](this));ami['on'](_0xedd6('0x18'),this[_0xedd6('0x19')][_0xedd6('0x12')](this));ami['on'](_0xedd6('0x1a'),this[_0xedd6('0x1b')][_0xedd6('0x12')](this));ami['on']('originateresponse',this[_0xedd6('0x1c')][_0xedd6('0x12')](this));}Fax[_0xedd6('0x1d')][_0xedd6('0x11')]=function(_0x4be8f4){if(_0x4be8f4[_0xedd6('0x1e')]===_0xedd6('0x1f')){for(var _0x4f0d6b in this['faxAccounts']){if(this['faxAccounts'][_0xedd6('0x20')](_0x4f0d6b)){if(_0x4be8f4[_0xedd6('0x21')]===this[_0xedd6('0x22')][_0x4f0d6b]['localstationid']){this[_0xedd6('0xd')][_0x4be8f4[_0xedd6('0x23')]]={};this[_0xedd6('0xd')][_0x4be8f4[_0xedd6('0x23')]][_0xedd6('0x24')]=_0x4be8f4[_0xedd6('0x24')];this[_0xedd6('0xd')][_0x4be8f4[_0xedd6('0x23')]]['id']=this[_0xedd6('0x22')][_0x4f0d6b]['id'];this[_0xedd6('0xd')][_0x4be8f4[_0xedd6('0x23')]][_0xedd6('0x25')]=this[_0xedd6('0x22')][_0x4f0d6b][_0xedd6('0x25')];logger[_0xedd6('0x26')](_0x4be8f4['uniqueid'],_0xedd6('0x27'));}}}}if(this[_0xedd6('0xf')][_0x4be8f4['uniqueid']]){this[_0xedd6('0xd')][_0x4be8f4[_0xedd6('0x23')]]={};this[_0xedd6('0xd')][_0x4be8f4['uniqueid']]['channel']=_0x4be8f4[_0xedd6('0x24')];logger[_0xedd6('0x26')](_0x4be8f4['uniqueid'],_0xedd6('0x27'));}};Fax[_0xedd6('0x1d')][_0xedd6('0x28')]=function(_0x34872b){if(this[_0xedd6('0xd')][_0x34872b[_0xedd6('0x23')]]){for(var _0x4dc594 in _0x34872b[_0xedd6('0x29')]){if(_0x34872b[_0xedd6('0x29')]['hasOwnProperty'](_0x4dc594)){this[_0xedd6('0xd')][_0x34872b[_0xedd6('0x23')]][_0x4dc594]=_0x34872b['value'];}}}};Fax[_0xedd6('0x1d')][_0xedd6('0x2a')]=function(_0x2f8658){if(this['channels'][_0x2f8658[_0xedd6('0x23')]]){this['channels'][_0x2f8658[_0xedd6('0x23')]][_0xedd6('0x2b')]=_0x2f8658['channelstate'];this[_0xedd6('0xd')][_0x2f8658[_0xedd6('0x23')]]['channelstatedesc']=_0x2f8658[_0xedd6('0x2c')];}};Fax[_0xedd6('0x1d')][_0xedd6('0x15')]=function(_0x12ff42){if(this[_0xedd6('0xd')][_0x12ff42[_0xedd6('0x23')]]){for(var _0x4efdd6 in _0x12ff42[_0xedd6('0x29')]){if(_0x12ff42['variable']['hasOwnProperty'](_0x4efdd6)){this['channels'][_0x12ff42[_0xedd6('0x23')]][_0x4efdd6]=_0x12ff42['value'];}}}};Fax['prototype'][_0xedd6('0x17')]=function(_0x141585){if(this['channels'][_0x141585[_0xedd6('0x23')]]){this['channels'][_0x141585[_0xedd6('0x23')]][_0xedd6('0x2d')]=_0x141585[_0xedd6('0x2d')];this[_0xedd6('0xd')][_0x141585[_0xedd6('0x23')]]['status']=_0x141585[_0xedd6('0x2e')];this[_0xedd6('0xd')][_0x141585[_0xedd6('0x23')]]['localstationid']=_0x141585[_0xedd6('0x2f')];this[_0xedd6('0xd')][_0x141585[_0xedd6('0x23')]][_0xedd6('0x30')]=_0x141585[_0xedd6('0x30')];logger['info'](_0x141585[_0xedd6('0x23')],_0xedd6('0x31'));}};Fax[_0xedd6('0x1d')]['syncReceiveFax']=function(_0x43a5db){var _0x59a837=this;if(this[_0xedd6('0xd')][_0x43a5db[_0xedd6('0x23')]]){var _0x459415=this['channels'][_0x43a5db[_0xedd6('0x23')]]['id'];this['channels'][_0x43a5db[_0xedd6('0x23')]][_0xedd6('0x32')]=_0x43a5db['remotestationid'];this[_0xedd6('0xd')][_0x43a5db[_0xedd6('0x23')]][_0xedd6('0x33')]=_0x43a5db[_0xedd6('0x33')];this[_0xedd6('0xd')][_0x43a5db[_0xedd6('0x23')]][_0xedd6('0x2f')]=_0x43a5db[_0xedd6('0x2f')];this['channels'][_0x43a5db[_0xedd6('0x23')]]['resolution']=_0x43a5db[_0xedd6('0x34')];this['channels'][_0x43a5db[_0xedd6('0x23')]][_0xedd6('0x35')]=_0x43a5db[_0xedd6('0x35')];this[_0xedd6('0xd')][_0x43a5db[_0xedd6('0x23')]]['filename']=_0x43a5db['filename'];this[_0xedd6('0xd')][_0x43a5db[_0xedd6('0x23')]]['calleridnum']=_0x43a5db['calleridnum'];if(this[_0xedd6('0xd')][_0x43a5db[_0xedd6('0x23')]][_0xedd6('0x33')]>0x0){tiff2pdf(_0x43a5db[_0xedd6('0x30')],_0xedd6('0x36'),function(_0x1da498){logger[_0xedd6('0x26')](_0x43a5db[_0xedd6('0x23')],_0xedd6('0x37'),_0x1da498[_0xedd6('0x38')]);attachment[_0xedd6('0x39')]({'name':path[_0xedd6('0x3a')](_0x43a5db[_0xedd6('0x30')])['name'],'basename':path[_0xedd6('0x3a')](_0x43a5db[_0xedd6('0x30')])[_0xedd6('0x25')]+_0xedd6('0x3b'),'type':_0xedd6('0x3c')})[_0xedd6('0x3d')](function(_0x4056f0){faxAccount[_0xedd6('0x3e')](_0x459415,{'from':_0x43a5db[_0xedd6('0x3f')],'mapKey':_0xedd6('0x6'),'body':path[_0xedd6('0x3a')](_0x43a5db[_0xedd6('0x30')])[_0xedd6('0x25')]+_0xedd6('0x3b'),'AttachmentId':_0x4056f0['id']})[_0xedd6('0x40')](function(_0x5d3c22){logger[_0xedd6('0x41')](_0x43a5db['uniqueid'],'\x20notify\x20',JSON[_0xedd6('0x42')](_0x5d3c22));});})[_0xedd6('0x40')](function(_0x52d1d5){logger[_0xedd6('0x41')](_0x43a5db[_0xedd6('0x23')],_0xedd6('0x43'),JSON[_0xedd6('0x42')](_0x52d1d5));});});}logger['info'](_0x43a5db[_0xedd6('0x23')],'\x20receiveFax\x20');}};Fax[_0xedd6('0x1d')]['syncOriginateResponse']=function(_0x27da89){if(this[_0xedd6('0xf')][_0x27da89[_0xedd6('0x23')]]){_[_0xedd6('0x44')](this[_0xedd6('0xd')][_0x27da89['uniqueid']],_[_0xedd6('0x45')](_0x27da89,[_0xedd6('0x46'),_0xedd6('0x47')]));}};function updateStatus(_0x5f02f3){if(_0x5f02f3[_0xedd6('0x48')]){faxMessage[_0xedd6('0x49')](_0x5f02f3[_0xedd6('0x48')],{'failMessage':_0xedd6('0x4a')})['then'](function(_0x3a4f4a){ut[_0xedd6('0x4b')](_0xedd6('0x4c'),_0x3a4f4a);})['catch'](function(_0x38cb6a){ut[_0xedd6('0x4b')]('[Fax][Message][Error][NoUpdate1]',_0x38cb6a);});}else{ut[_0xedd6('0x4b')](_0xedd6('0x4d'));}}Fax[_0xedd6('0x1d')]['updateStatus']=function(_0xa41acb,_0x217c99,_0x78990c){var _0x4c9924=this;var _0x5082d0={};if(_0x217c99){_0x5082d0={'read':_0x217c99};}else{_0x5082d0={'failMessage':_0x78990c};}if(this[_0xedd6('0xf')][_0xa41acb][_0xedd6('0x48')]){faxMessage[_0xedd6('0x49')](this[_0xedd6('0xf')][_0xa41acb][_0xedd6('0x48')],_0x5082d0)[_0xedd6('0x3d')](function(_0x5bcc92){ut[_0xedd6('0x4b')](_0xedd6('0x4e'),_0x5bcc92);})[_0xedd6('0x40')](function(_0x475269){ut[_0xedd6('0x4b')](_0xedd6('0x4f'),_0x475269);})['finally'](function(){delete _0x4c9924['channels'][_0xa41acb];delete _0x4c9924[_0xedd6('0xf')][_0xa41acb];});}else{ut['logger'](_0xedd6('0x50'));delete this[_0xedd6('0xd')][_0xa41acb];delete this[_0xedd6('0xf')][_0xa41acb];}};Fax[_0xedd6('0x1d')][_0xedd6('0x1b')]=function(_0x4ce6b0){var _0x35a610=this;if(this[_0xedd6('0xd')][_0x4ce6b0[_0xedd6('0x23')]]){if(this['actions'][_0x4ce6b0[_0xedd6('0x23')]]){this[_0xedd6('0xd')][_0x4ce6b0['uniqueid']]['id']=this[_0xedd6('0xf')][_0x4ce6b0['uniqueid']]['id'];this['channels'][_0x4ce6b0[_0xedd6('0x23')]][_0xedd6('0x25')]=this[_0xedd6('0xf')][_0x4ce6b0[_0xedd6('0x23')]][_0xedd6('0x25')];}logger[_0xedd6('0x26')](_0x4ce6b0[_0xedd6('0x23')],this[_0xedd6('0xf')][_0x4ce6b0[_0xedd6('0x23')]]?_0xedd6('0x51'):_0xedd6('0x52'),JSON['stringify'](this['channels'][_0x4ce6b0[_0xedd6('0x23')]]));if(this[_0xedd6('0xf')][_0x4ce6b0[_0xedd6('0x23')]]){if(this[_0xedd6('0xd')][_0x4ce6b0[_0xedd6('0x23')]][_0xedd6('0x53')]>0x0&&this['channels'][_0x4ce6b0[_0xedd6('0x23')]]['faxstatus']===_0xedd6('0x54')){this['updateStatus'](_0x4ce6b0['uniqueid'],!![]);}else{this[_0xedd6('0x55')](_0x4ce6b0['uniqueid'],![],this[_0xedd6('0xd')][_0x4ce6b0['uniqueid']][_0xedd6('0x56')]?_0xedd6('0x57')+this[_0xedd6('0xd')][_0x4ce6b0[_0xedd6('0x23')]][_0xedd6('0x56')]:_0xedd6('0x58'));}}}};Fax[_0xedd6('0x1d')][_0xedd6('0x59')]=function(_0x387ac9){var _0x9f2c76=this;return new BPromise(function(_0x149ea5,_0x68b065){_0x9f2c76[_0xedd6('0x5a')](_0x387ac9,_0x9f2c76[_0xedd6('0x22')][_0x387ac9[_0xedd6('0x5b')]])[_0xedd6('0x3d')](function(_0x248bfa){ut[_0xedd6('0x4b')](_0xedd6('0x5c'),_0x248bfa);_0x149ea5(ut[_0xedd6('0x38')](_0xedd6('0x5d')));})[_0xedd6('0x40')](function(_0xa7bf9){ut['logger']('[Fax][execOriginate][failure]',_0xa7bf9);updateStatus(_0x387ac9);_0x68b065(ut[_0xedd6('0x38')](_0xedd6('0x5e')));});});};Fax[_0xedd6('0x1d')][_0xedd6('0x5f')]=function(_0x429563){var _0x340c4c=this;return new BPromise(function(_0x260119,_0x5e06f6){var _0x46c43e=_0x340c4c[_0xedd6('0x60')](_0x340c4c[_0xedd6('0x22')][_0x429563['FaxAccountId']][_0xedd6('0x61')],_0x429563);if(_0x46c43e[_0xedd6('0x62')]){_0x260119(ut[_0xedd6('0x38')](_0xedd6('0x63')));}else{_0x5e06f6(ut[_0xedd6('0x38')](_0x46c43e[_0xedd6('0x38')]));}});};function originate(_0x12c1b8,_0x1c2580,_0x8f505e){return new BPromise(function(_0x24af6c,_0x597bb8){if(_0x8f505e){var _0x2a6984=util[_0xedd6('0x64')]('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[_0xedd6('0x3a')](_0x12c1b8['path'])[_0xedd6('0x25')],_0x12c1b8[_0xedd6('0x65')]);gs[_0xedd6('0x66')](_0x2a6984)[_0xedd6('0x3d')](function(){_0x12c1b8[_0xedd6('0x65')]=util[_0xedd6('0x64')](_0xedd6('0x67'),path[_0xedd6('0x3a')](_0x12c1b8['path'])[_0xedd6('0x68')],path['parse'](_0x12c1b8['path'])[_0xedd6('0x25')]);_0x1c2580[_0xedd6('0x69')]=_0x12c1b8['path'];ut[_0xedd6('0x4b')](_0xedd6('0x6a'),'');ami[_0xedd6('0x6b')](ut[_0xedd6('0x6c')](_0x12c1b8,_0x1c2580))[_0xedd6('0x3d')](function(_0x4ee32b){_0x24af6c(_0x4ee32b);})[_0xedd6('0x40')](function(_0x8ffdda){_0x597bb8(_0x8ffdda);});})[_0xedd6('0x40')](function(_0x57e7f3){_0x597bb8(_0x57e7f3);});}else{ami['Action'](ut[_0xedd6('0x6c')](_0x12c1b8,_0x1c2580))[_0xedd6('0x3d')](function(_0x1de557){_0x24af6c(_0x1de557);})[_0xedd6('0x40')](function(_0x5906d5){_0x597bb8(_0x5906d5);});}});}Fax[_0xedd6('0x1d')][_0xedd6('0x5a')]=function(_0x1b9dee,_0x45c239){var _0x1c0c9d=this;return new BPromise(function(_0x128fd1,_0x5b3401){var _0xb11542=uuid['v4']();var _0x4b76cd=ut['addVariables'](_0x1b9dee,_0x45c239);_0x1c0c9d[_0xedd6('0xf')][_0xb11542]=new Action(_0xb11542,_0x45c239,_0x1b9dee);var _0x573bd8=_0x1c0c9d['actions'][_0xb11542];if(path[_0xedd6('0x3a')](_0x1b9dee[_0xedd6('0x65')])[_0xedd6('0x6d')]==='.pdf'){originate(_0x573bd8,_0x4b76cd,!![])[_0xedd6('0x3d')](function(_0x5f17eb){_0x128fd1(_0x5f17eb);})[_0xedd6('0x40')](function(_0x337cb0){_0x5b3401(_0x337cb0);});}else{originate(_0x573bd8,_0x4b76cd,![])[_0xedd6('0x3d')](function(_0x324350){_0x128fd1(_0x324350);})['catch'](function(_0x5e3a82){_0x5b3401(_0x5e3a82);});}});};Fax[_0xedd6('0x1d')][_0xedd6('0x6e')]=function(_0x1f380d){return!_['isNil'](_0x1f380d)&&!_[_0xedd6('0x6f')](_0x1f380d[_0xedd6('0x25')])&&!_[_0xedd6('0x6f')](_0x1f380d[_0xedd6('0x70')])&&_0x1f380d['active']&&!_[_0xedd6('0x6f')](this[_0xedd6('0xe')][util['format'](_0xedd6('0x71'),_0x1f380d[_0xedd6('0x25')])])&&!_['isNil'](this['trunks'][util[_0xedd6('0x64')]('SIP/%s',_0x1f380d[_0xedd6('0x25')])]['status'])&&(this[_0xedd6('0xe')][util[_0xedd6('0x64')]('SIP/%s',_0x1f380d[_0xedd6('0x25')])]['status']===_0xedd6('0x72')||this[_0xedd6('0xe')][util['format'](_0xedd6('0x71'),_0x1f380d[_0xedd6('0x25')])][_0xedd6('0x2e')]===_0xedd6('0x73'));};Fax[_0xedd6('0x1d')]['checkTrunk']=function(_0x10bf5e,_0x4ee708){if(!this['isTrunkReachable'](_0x10bf5e)){ut['logger'](_0xedd6('0x74'),_['isNil'](_0x10bf5e)?'':_0x10bf5e['name']+_0xedd6('0x75'));return{'isValid':![],'message':_0xedd6('0x76')};}if(_[_0xedd6('0x6f')](_0x4ee708['fax'])){ut[_0xedd6('0x4b')](_0xedd6('0x77'),JSON[_0xedd6('0x42')](_0x4ee708));return{'isValid':![],'message':_0xedd6('0x78')};}if(_['isNil'](_0x4ee708['path'])){ut['logger'](_0xedd6('0x79'),JSON[_0xedd6('0x42')](_0x4ee708));return{'isValid':![],'message':_0xedd6('0x7a')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0xedd6('0x7b')]=Fax;
\ No newline at end of file
+var _0xaa08=['./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','bind','varset','newstate','syncNewState','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','context','from-voip-provider','exten','localstationid','uniqueid','channel','\x20syncNewchannel\x20','actions','info','syncVarSet','variable','hasOwnProperty','value','channelstate','channelstatedesc','prototype','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','name','.pdf','then','catch','\x20notify\x20','stringify','error','merge','pick','response','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','update','[Fax][Message][Updated]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxpages','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','fax','../ami','./rpcDb'];(function(_0x1efc82,_0x10c1ed){var _0x1686d8=function(_0x334a86){while(--_0x334a86){_0x1efc82['push'](_0x1efc82['shift']());}};_0x1686d8(++_0x10c1ed);}(_0xaa08,0x15b));var _0x8aa0=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xaa08[_0x397e5f];return _0x5302b8;};'use strict';var util=require('util');var _=require(_0x8aa0('0x0'));var BPromise=require(_0x8aa0('0x1'));var uuid=require(_0x8aa0('0x2'));var moment=require(_0x8aa0('0x3'));var path=require(_0x8aa0('0x4'));var tiff2pdf=require(_0x8aa0('0x5'));var gs=require(_0x8aa0('0x6'));var logger=require('../../../config/logger')(_0x8aa0('0x7'));var ami=require(_0x8aa0('0x8'));var rpcDb=require(_0x8aa0('0x9'));var Channel=require(_0x8aa0('0xa'));var ut=require(_0x8aa0('0xb'));var Action=require(_0x8aa0('0xc'));var faxAccount=require(_0x8aa0('0xd'));var attachment=require(_0x8aa0('0xe'));var faxMessage=require(_0x8aa0('0xf'));function Fax(_0x229050){this[_0x8aa0('0x10')]={};this[_0x8aa0('0x11')]=_0x229050[_0x8aa0('0x11')];this['trunks']=_0x229050[_0x8aa0('0x12')];this['actions']={};ami['on'](_0x8aa0('0x13'),this[_0x8aa0('0x14')][_0x8aa0('0x15')](this));ami['on'](_0x8aa0('0x16'),this['syncVarSet'][_0x8aa0('0x15')](this));ami['on'](_0x8aa0('0x17'),this[_0x8aa0('0x18')][_0x8aa0('0x15')](this));ami['on']('newexten',this[_0x8aa0('0x19')][_0x8aa0('0x15')](this));ami['on'](_0x8aa0('0x1a'),this[_0x8aa0('0x1b')][_0x8aa0('0x15')](this));ami['on'](_0x8aa0('0x1c'),this[_0x8aa0('0x1d')][_0x8aa0('0x15')](this));ami['on'](_0x8aa0('0x1e'),this[_0x8aa0('0x1f')]['bind'](this));ami['on'](_0x8aa0('0x20'),this['syncOriginateResponse'][_0x8aa0('0x15')](this));}Fax['prototype'][_0x8aa0('0x14')]=function(_0x5719d6){if(_0x5719d6[_0x8aa0('0x21')]===_0x8aa0('0x22')){for(var _0x38b962 in this[_0x8aa0('0x11')]){if(this[_0x8aa0('0x11')]['hasOwnProperty'](_0x38b962)){if(_0x5719d6[_0x8aa0('0x23')]===this[_0x8aa0('0x11')][_0x38b962][_0x8aa0('0x24')]){this[_0x8aa0('0x10')][_0x5719d6[_0x8aa0('0x25')]]={};this['channels'][_0x5719d6['uniqueid']]['channel']=_0x5719d6[_0x8aa0('0x26')];this[_0x8aa0('0x10')][_0x5719d6[_0x8aa0('0x25')]]['id']=this[_0x8aa0('0x11')][_0x38b962]['id'];this[_0x8aa0('0x10')][_0x5719d6['uniqueid']]['name']=this[_0x8aa0('0x11')][_0x38b962]['name'];logger['info'](_0x5719d6[_0x8aa0('0x25')],_0x8aa0('0x27'));}}}}if(this[_0x8aa0('0x28')][_0x5719d6[_0x8aa0('0x25')]]){this[_0x8aa0('0x10')][_0x5719d6[_0x8aa0('0x25')]]={};this['channels'][_0x5719d6['uniqueid']][_0x8aa0('0x26')]=_0x5719d6[_0x8aa0('0x26')];logger[_0x8aa0('0x29')](_0x5719d6[_0x8aa0('0x25')],_0x8aa0('0x27'));}};Fax['prototype'][_0x8aa0('0x2a')]=function(_0x5563a1){if(this[_0x8aa0('0x10')][_0x5563a1[_0x8aa0('0x25')]]){for(var _0x196b04 in _0x5563a1[_0x8aa0('0x2b')]){if(_0x5563a1['variable'][_0x8aa0('0x2c')](_0x196b04)){this[_0x8aa0('0x10')][_0x5563a1[_0x8aa0('0x25')]][_0x196b04]=_0x5563a1[_0x8aa0('0x2d')];}}}};Fax['prototype'][_0x8aa0('0x18')]=function(_0x179b81){if(this['channels'][_0x179b81[_0x8aa0('0x25')]]){this[_0x8aa0('0x10')][_0x179b81[_0x8aa0('0x25')]][_0x8aa0('0x2e')]=_0x179b81[_0x8aa0('0x2e')];this[_0x8aa0('0x10')][_0x179b81['uniqueid']][_0x8aa0('0x2f')]=_0x179b81[_0x8aa0('0x2f')];}};Fax[_0x8aa0('0x30')][_0x8aa0('0x19')]=function(_0x159f81){if(this[_0x8aa0('0x10')][_0x159f81[_0x8aa0('0x25')]]){for(var _0xb67910 in _0x159f81[_0x8aa0('0x2b')]){if(_0x159f81['variable']['hasOwnProperty'](_0xb67910)){this[_0x8aa0('0x10')][_0x159f81['uniqueid']][_0xb67910]=_0x159f81['value'];}}}};Fax[_0x8aa0('0x30')][_0x8aa0('0x1b')]=function(_0x4092f3){if(this[_0x8aa0('0x10')][_0x4092f3[_0x8aa0('0x25')]]){this['channels'][_0x4092f3[_0x8aa0('0x25')]][_0x8aa0('0x31')]=_0x4092f3[_0x8aa0('0x31')];this[_0x8aa0('0x10')][_0x4092f3[_0x8aa0('0x25')]][_0x8aa0('0x32')]=_0x4092f3[_0x8aa0('0x32')];this[_0x8aa0('0x10')][_0x4092f3[_0x8aa0('0x25')]][_0x8aa0('0x24')]=_0x4092f3[_0x8aa0('0x24')];this[_0x8aa0('0x10')][_0x4092f3[_0x8aa0('0x25')]][_0x8aa0('0x33')]=_0x4092f3[_0x8aa0('0x33')];logger[_0x8aa0('0x29')](_0x4092f3[_0x8aa0('0x25')],_0x8aa0('0x34'));}};Fax[_0x8aa0('0x30')][_0x8aa0('0x1d')]=function(_0x17b786){var _0x4fbc54=this;if(this[_0x8aa0('0x10')][_0x17b786['uniqueid']]){var _0x18e4ed=this['channels'][_0x17b786['uniqueid']]['id'];this[_0x8aa0('0x10')][_0x17b786[_0x8aa0('0x25')]]['remotestationid']=_0x17b786[_0x8aa0('0x35')];this[_0x8aa0('0x10')][_0x17b786[_0x8aa0('0x25')]][_0x8aa0('0x36')]=_0x17b786[_0x8aa0('0x36')];this[_0x8aa0('0x10')][_0x17b786[_0x8aa0('0x25')]]['localstationid']=_0x17b786[_0x8aa0('0x24')];this[_0x8aa0('0x10')][_0x17b786[_0x8aa0('0x25')]][_0x8aa0('0x37')]=_0x17b786[_0x8aa0('0x37')];this[_0x8aa0('0x10')][_0x17b786[_0x8aa0('0x25')]]['transferrate']=_0x17b786[_0x8aa0('0x38')];this[_0x8aa0('0x10')][_0x17b786[_0x8aa0('0x25')]][_0x8aa0('0x33')]=_0x17b786[_0x8aa0('0x33')];this[_0x8aa0('0x10')][_0x17b786['uniqueid']]['calleridnum']=_0x17b786[_0x8aa0('0x39')];if(this[_0x8aa0('0x10')][_0x17b786[_0x8aa0('0x25')]][_0x8aa0('0x36')]>0x0){tiff2pdf(_0x17b786[_0x8aa0('0x33')],_0x8aa0('0x3a'),function(_0x59642f){logger['info'](_0x17b786[_0x8aa0('0x25')],_0x8aa0('0x3b'),_0x59642f[_0x8aa0('0x3c')]);attachment[_0x8aa0('0x3d')]({'name':path[_0x8aa0('0x3e')](_0x17b786[_0x8aa0('0x33')])[_0x8aa0('0x3f')],'basename':path[_0x8aa0('0x3e')](_0x17b786[_0x8aa0('0x33')])[_0x8aa0('0x3f')]+_0x8aa0('0x40'),'type':'application/pdf'})[_0x8aa0('0x41')](function(_0x52ffdd){faxAccount['notify'](_0x18e4ed,{'from':_0x17b786['calleridnum'],'mapKey':_0x8aa0('0x7'),'body':path[_0x8aa0('0x3e')](_0x17b786[_0x8aa0('0x33')])[_0x8aa0('0x3f')]+_0x8aa0('0x40'),'AttachmentId':_0x52ffdd['id']})[_0x8aa0('0x42')](function(_0x25e3a3){logger['error'](_0x17b786[_0x8aa0('0x25')],_0x8aa0('0x43'),JSON[_0x8aa0('0x44')](_0x25e3a3));});})[_0x8aa0('0x42')](function(_0x5dad08){logger[_0x8aa0('0x45')](_0x17b786[_0x8aa0('0x25')],'\x20receiveFax\x20',JSON[_0x8aa0('0x44')](_0x5dad08));});});}logger[_0x8aa0('0x29')](_0x17b786[_0x8aa0('0x25')],'\x20receiveFax\x20');}};Fax[_0x8aa0('0x30')]['syncOriginateResponse']=function(_0xbdb399){if(this[_0x8aa0('0x28')][_0xbdb399[_0x8aa0('0x25')]]){_[_0x8aa0('0x46')](this['channels'][_0xbdb399['uniqueid']],_[_0x8aa0('0x47')](_0xbdb399,[_0x8aa0('0x48'),'reason']));}};function updateStatus(_0xf4c948){if(_0xf4c948[_0x8aa0('0x49')]){faxMessage['update'](_0xf4c948[_0x8aa0('0x49')],{'failMessage':_0x8aa0('0x4a')})['then'](function(_0x546ffb){ut[_0x8aa0('0x4b')](_0x8aa0('0x4c'),_0x546ffb);})['catch'](function(_0x1c6e1f){ut[_0x8aa0('0x4b')]('[Fax][Message][Error][NoUpdate1]',_0x1c6e1f);});}else{ut[_0x8aa0('0x4b')](_0x8aa0('0x4d'));}}Fax[_0x8aa0('0x30')][_0x8aa0('0x4e')]=function(_0xdcb409,_0x3b5a55,_0x30e420){var _0x177265=this;var _0x3fc0fd={};if(_0x3b5a55){_0x3fc0fd={'read':_0x3b5a55};}else{_0x3fc0fd={'failMessage':_0x30e420};}if(this[_0x8aa0('0x28')][_0xdcb409]['AttachmentId']){faxMessage[_0x8aa0('0x4f')](this[_0x8aa0('0x28')][_0xdcb409][_0x8aa0('0x49')],_0x3fc0fd)['then'](function(_0x2b0ab7){ut['logger'](_0x8aa0('0x50'),_0x2b0ab7);})[_0x8aa0('0x42')](function(_0x3f38a7){ut['logger']('[Fax][Message][NoUpdate1]',_0x3f38a7);})[_0x8aa0('0x51')](function(){delete _0x177265[_0x8aa0('0x10')][_0xdcb409];delete _0x177265['actions'][_0xdcb409];});}else{ut['logger'](_0x8aa0('0x52'));delete this[_0x8aa0('0x10')][_0xdcb409];delete this[_0x8aa0('0x28')][_0xdcb409];}};Fax['prototype'][_0x8aa0('0x1f')]=function(_0xe1f2e7){var _0xaac743=this;if(this[_0x8aa0('0x10')][_0xe1f2e7[_0x8aa0('0x25')]]){if(this[_0x8aa0('0x28')][_0xe1f2e7[_0x8aa0('0x25')]]){this[_0x8aa0('0x10')][_0xe1f2e7['uniqueid']]['id']=this['actions'][_0xe1f2e7['uniqueid']]['id'];this[_0x8aa0('0x10')][_0xe1f2e7[_0x8aa0('0x25')]][_0x8aa0('0x3f')]=this['actions'][_0xe1f2e7['uniqueid']][_0x8aa0('0x3f')];}logger[_0x8aa0('0x29')](_0xe1f2e7[_0x8aa0('0x25')],this['actions'][_0xe1f2e7[_0x8aa0('0x25')]]?_0x8aa0('0x53'):'\x20hangup\x20faxRiceive\x20',JSON[_0x8aa0('0x44')](this[_0x8aa0('0x10')][_0xe1f2e7[_0x8aa0('0x25')]]));if(this[_0x8aa0('0x28')][_0xe1f2e7[_0x8aa0('0x25')]]){if(this['channels'][_0xe1f2e7['uniqueid']][_0x8aa0('0x54')]>0x0&&this[_0x8aa0('0x10')][_0xe1f2e7[_0x8aa0('0x25')]]['faxstatus']==='SUCCESS'){this['updateStatus'](_0xe1f2e7['uniqueid'],!![]);}else{this['updateStatus'](_0xe1f2e7['uniqueid'],![],this[_0x8aa0('0x10')][_0xe1f2e7[_0x8aa0('0x25')]][_0x8aa0('0x55')]?_0x8aa0('0x56')+this[_0x8aa0('0x10')][_0xe1f2e7[_0x8aa0('0x25')]][_0x8aa0('0x55')]:_0x8aa0('0x57'));}}}};Fax['prototype']['send']=function(_0x2d19f1){var _0x821b6a=this;return new BPromise(function(_0x976513,_0x3b113e){_0x821b6a[_0x8aa0('0x58')](_0x2d19f1,_0x821b6a[_0x8aa0('0x11')][_0x2d19f1[_0x8aa0('0x59')]])['then'](function(_0x1baa35){ut[_0x8aa0('0x4b')](_0x8aa0('0x5a'),_0x1baa35);_0x976513(ut[_0x8aa0('0x3c')](_0x8aa0('0x5b')));})['catch'](function(_0x3578a1){ut['logger'](_0x8aa0('0x5c'),_0x3578a1);updateStatus(_0x2d19f1);_0x3b113e(ut[_0x8aa0('0x3c')](_0x8aa0('0x5d')));});});};Fax[_0x8aa0('0x30')]['checkAfterSend']=function(_0x5c8d11){var _0x46a79b=this;return new BPromise(function(_0x231ed7,_0x13bab0){var _0x10d633=_0x46a79b[_0x8aa0('0x5e')](_0x46a79b['faxAccounts'][_0x5c8d11[_0x8aa0('0x59')]]['Trunk'],_0x5c8d11);if(_0x10d633[_0x8aa0('0x5f')]){_0x231ed7(ut['message'](_0x8aa0('0x60')));}else{_0x13bab0(ut[_0x8aa0('0x3c')](_0x10d633[_0x8aa0('0x3c')]));}});};function originate(_0xf4ab9,_0x184f98,_0x467f1c){return new BPromise(function(_0xf061b1,_0x1eb95d){if(_0x467f1c){var _0x3bd62e=util[_0x8aa0('0x61')](_0x8aa0('0x62'),path[_0x8aa0('0x3e')](_0xf4ab9[_0x8aa0('0x4')])[_0x8aa0('0x3f')],_0xf4ab9[_0x8aa0('0x4')]);gs[_0x8aa0('0x63')](_0x3bd62e)['then'](function(){_0xf4ab9['path']=util[_0x8aa0('0x61')](_0x8aa0('0x64'),path[_0x8aa0('0x3e')](_0xf4ab9[_0x8aa0('0x4')])['dir'],path['parse'](_0xf4ab9[_0x8aa0('0x4')])[_0x8aa0('0x3f')]);_0x184f98[_0x8aa0('0x65')]=_0xf4ab9['path'];ut[_0x8aa0('0x4b')](_0x8aa0('0x66'),'');ami[_0x8aa0('0x67')](ut[_0x8aa0('0x68')](_0xf4ab9,_0x184f98))['then'](function(_0x4a5a4f){_0xf061b1(_0x4a5a4f);})[_0x8aa0('0x42')](function(_0x530755){_0x1eb95d(_0x530755);});})[_0x8aa0('0x42')](function(_0x48909a){_0x1eb95d(_0x48909a);});}else{ami[_0x8aa0('0x67')](ut[_0x8aa0('0x68')](_0xf4ab9,_0x184f98))[_0x8aa0('0x41')](function(_0x25baf4){_0xf061b1(_0x25baf4);})[_0x8aa0('0x42')](function(_0x86a748){_0x1eb95d(_0x86a748);});}});}Fax[_0x8aa0('0x30')][_0x8aa0('0x58')]=function(_0x5802c8,_0x2fb99e){var _0x5e4131=this;return new BPromise(function(_0x4d9a31,_0x5be7c8){var _0x45394d=uuid['v4']();var _0x1dc0b1=ut['addVariables'](_0x5802c8,_0x2fb99e);_0x5e4131['actions'][_0x45394d]=new Action(_0x45394d,_0x2fb99e,_0x5802c8);var _0x1ae60f=_0x5e4131[_0x8aa0('0x28')][_0x45394d];if(path[_0x8aa0('0x3e')](_0x5802c8[_0x8aa0('0x4')])['ext']===_0x8aa0('0x40')){originate(_0x1ae60f,_0x1dc0b1,!![])[_0x8aa0('0x41')](function(_0x2ef8ad){_0x4d9a31(_0x2ef8ad);})['catch'](function(_0x32e790){_0x5be7c8(_0x32e790);});}else{originate(_0x1ae60f,_0x1dc0b1,![])[_0x8aa0('0x41')](function(_0x4c9cdd){_0x4d9a31(_0x4c9cdd);})[_0x8aa0('0x42')](function(_0x5c8acb){_0x5be7c8(_0x5c8acb);});}});};Fax[_0x8aa0('0x30')][_0x8aa0('0x69')]=function(_0x416d78){return!_[_0x8aa0('0x6a')](_0x416d78)&&!_[_0x8aa0('0x6a')](_0x416d78[_0x8aa0('0x3f')])&&!_[_0x8aa0('0x6a')](_0x416d78[_0x8aa0('0x6b')])&&_0x416d78[_0x8aa0('0x6b')]&&!_[_0x8aa0('0x6a')](this[_0x8aa0('0x12')][util[_0x8aa0('0x61')](_0x8aa0('0x6c'),_0x416d78[_0x8aa0('0x3f')])])&&!_[_0x8aa0('0x6a')](this['trunks'][util[_0x8aa0('0x61')](_0x8aa0('0x6c'),_0x416d78[_0x8aa0('0x3f')])][_0x8aa0('0x32')])&&(this[_0x8aa0('0x12')][util[_0x8aa0('0x61')](_0x8aa0('0x6c'),_0x416d78[_0x8aa0('0x3f')])][_0x8aa0('0x32')]===_0x8aa0('0x6d')||this[_0x8aa0('0x12')][util[_0x8aa0('0x61')](_0x8aa0('0x6c'),_0x416d78[_0x8aa0('0x3f')])]['status']===_0x8aa0('0x6e'));};Fax[_0x8aa0('0x30')]['checkTrunk']=function(_0x3a5cdd,_0x5a1949){if(!this[_0x8aa0('0x69')](_0x3a5cdd)){ut[_0x8aa0('0x4b')](_0x8aa0('0x6f'),_['isNil'](_0x3a5cdd)?'':_0x3a5cdd[_0x8aa0('0x3f')]+_0x8aa0('0x70'));return{'isValid':![],'message':_0x8aa0('0x71')};}if(_[_0x8aa0('0x6a')](_0x5a1949[_0x8aa0('0x7')])){ut[_0x8aa0('0x4b')](_0x8aa0('0x72'),JSON['stringify'](_0x5a1949));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x8aa0('0x6a')](_0x5a1949[_0x8aa0('0x4')])){ut[_0x8aa0('0x4b')](_0x8aa0('0x73'),JSON[_0x8aa0('0x44')](_0x5a1949));return{'isValid':![],'message':_0x8aa0('0x74')};}return{'isValid':!![],'message':_0x8aa0('0x75')};};module[_0x8aa0('0x76')]=Fax;
\ No newline at end of file
index af1ff7e..a2bd20a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc149=['bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','then','catch','[Notify]\x20','util'];(function(_0x3aa2b9,_0x28c86d){var _0x5f0f12=function(_0x36891f){while(--_0x36891f){_0x3aa2b9['push'](_0x3aa2b9['shift']());}};_0x5f0f12(++_0x28c86d);}(_0xc149,0x81));var _0x9c14=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xc149[_0x5b644e];return _0x49c6bf;};'use strict';var util=require(_0x9c14('0x0'));var BPromise=require(_0x9c14('0x1'));var logger=require(_0x9c14('0x2'))(_0x9c14('0x3'));var _=require(_0x9c14('0x4'));var faxAccount=require(_0x9c14('0x5'));function loggerCatch(_0x2497e4){return function(_0xf6cff8){logger[_0x9c14('0x6')](_0x2497e4,util[_0x9c14('0x7')](_0xf6cff8,{'showHidden':![],'depth':null}));};}exports[_0x9c14('0x8')]=function(_0x29ce76,_0x386e69){return BPromise[_0x9c14('0x9')]()[_0x9c14('0xa')](faxAccount[_0x9c14('0x8')](_0x29ce76,_0x386e69))[_0x9c14('0xb')](loggerCatch(_0x9c14('0xc')));};
\ No newline at end of file
+var _0x26d1=['catch','[Notify]\x20','util','../../../config/logger','preview','lodash','../rpc/faxAccount','error','notify','resolve'];(function(_0x5d2a31,_0x4920fb){var _0x577a7e=function(_0x164c39){while(--_0x164c39){_0x5d2a31['push'](_0x5d2a31['shift']());}};_0x577a7e(++_0x4920fb);}(_0x26d1,0x1e2));var _0x126d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x26d1[_0x21a9d9];return _0x46adce;};'use strict';var util=require(_0x126d('0x0'));var BPromise=require('bluebird');var logger=require(_0x126d('0x1'))(_0x126d('0x2'));var _=require(_0x126d('0x3'));var faxAccount=require(_0x126d('0x4'));function loggerCatch(_0x24d000){return function(_0x5ed806){logger[_0x126d('0x5')](_0x24d000,util['inspect'](_0x5ed806,{'showHidden':![],'depth':null}));};}exports[_0x126d('0x6')]=function(_0x25a8d7,_0xa24d4){return BPromise[_0x126d('0x7')]()['then'](faxAccount[_0x126d('0x6')](_0x25a8d7,_0xa24d4))[_0x126d('0x8')](loggerCatch(_0x126d('0x9')));};
\ No newline at end of file
index 715a78f..714543e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a85=['child_process','info','Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','fax','bluebird'];(function(_0x1c4105,_0x4fcd78){var _0x1bdd4b=function(_0x55bb4f){while(--_0x55bb4f){_0x1c4105['push'](_0x1c4105['shift']());}};_0x1bdd4b(++_0x4fcd78);}(_0x2a85,0x191));var _0x52a8=function(_0x5bd20c,_0xcb49f4){_0x5bd20c=_0x5bd20c-0x0;var _0x1d5aaa=_0x2a85[_0x5bd20c];return _0x1d5aaa;};'use strict';var util=require(_0x52a8('0x0'));var logger=require(_0x52a8('0x1'))(_0x52a8('0x2'));var BPromise=require(_0x52a8('0x3'));var exec=require(_0x52a8('0x4'))['exec'];exports['execute']=function(_0x288aa7){return new BPromise(function(_0x54e17e,_0x21a0f3){exec(_0x288aa7,function(_0x30f70e,_0x2ded24,_0x1f9d34){logger[_0x52a8('0x5')](_0x52a8('0x6'),_0x2ded24);if(_0x30f70e){logger[_0x52a8('0x5')](_0x52a8('0x6'),_0x52a8('0x7'),util[_0x52a8('0x8')](_0x30f70e,{'showHidden':![],'depth':null}),_0x2ded24,_0x1f9d34);_0x21a0f3(_0x30f70e);}_0x54e17e(_0x2ded24);});});};
\ No newline at end of file
+var _0xf96e=['child_process','info','\x20Error\x20:','../../../../config/logger','bluebird'];(function(_0x54b180,_0x6de701){var _0x426b2a=function(_0x41224d){while(--_0x41224d){_0x54b180['push'](_0x54b180['shift']());}};_0x426b2a(++_0x6de701);}(_0xf96e,0x99));var _0xef96=function(_0x3db345,_0x33d6be){_0x3db345=_0x3db345-0x0;var _0x37ec46=_0xf96e[_0x3db345];return _0x37ec46;};'use strict';var util=require('util');var logger=require(_0xef96('0x0'))('fax');var BPromise=require(_0xef96('0x1'));var exec=require(_0xef96('0x2'))['exec'];exports['execute']=function(_0x1d0559){return new BPromise(function(_0x7df4e9,_0x2b52fb){exec(_0x1d0559,function(_0xc7a3f2,_0x5c0484,_0x5beb92){logger[_0xef96('0x3')]('Exec\x20gs',_0x5c0484);if(_0xc7a3f2){logger['info']('Exec\x20gs',_0xef96('0x4'),util['inspect'](_0xc7a3f2,{'showHidden':![],'depth':null}),_0x5c0484,_0x5beb92);_0x2b52fb(_0xc7a3f2);}_0x7df4e9(_0x5c0484);});});};
\ No newline at end of file
index 295ec2e..d129e36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ef=['headerinfo','minrate','maxrate','format','\x22%s\x22','t38timeout','localstationid','path','variablesAction','uniqueid','originate','from-sip','\x22%s\x22\x20<%s>','util','moment','../../../../config/logger','message','logger','info','inspect','addVariables'];(function(_0x101653,_0x3993f1){var _0x51154d=function(_0x21bcae){while(--_0x21bcae){_0x101653['push'](_0x101653['shift']());}};_0x51154d(++_0x3993f1);}(_0x24ef,0xdf));var _0xf24e=function(_0x285ee2,_0x390a13){_0x285ee2=_0x285ee2-0x0;var _0x229525=_0x24ef[_0x285ee2];return _0x229525;};'use strict';var util=require(_0xf24e('0x0'));var _=require('lodash');var moment=require(_0xf24e('0x1'));var logger=require(_0xf24e('0x2'))('fax');exports[_0xf24e('0x3')]=function(_0x415cbf){return{'message':_0x415cbf};};exports[_0xf24e('0x4')]=function(_0x3a3175,_0xee7ebf){logger[_0xf24e('0x5')](_0x3a3175,util[_0xf24e('0x6')](_0xee7ebf,{'showHidden':![],'depth':null}));};exports[_0xf24e('0x7')]=function(_0x117218,_0x335179){var _0x45eb1b={'XMF-ECM':_0x335179['ecm'],'XMF-HEADERINFO':_0x335179[_0xf24e('0x8')],'XMF-MINRATE':_0x335179[_0xf24e('0x9')],'XMF-MAXRATE':_0x335179[_0xf24e('0xa')],'XMF-MODEM':util[_0xf24e('0xb')](_0xf24e('0xc'),_0x335179['modem']),'XMF-GATEWAY':_0x335179['gateway'],'XMF-FAXDETECT':_0x335179['faxdetect'],'XMF-T38TIMEOUT':_0x335179[_0xf24e('0xd')],'XMF-LOCALSTATIONID':_0x335179[_0xf24e('0xe')],'XMF-PATH':_0x117218[_0xf24e('0xf')]};return _0x45eb1b;};exports[_0xf24e('0x10')]=function(_0x22ef01,_0xf82047){return{'actionid':_0x22ef01[_0xf24e('0x11')],'action':_0xf24e('0x12'),'channel':_0x22ef01['channel'],'Exten':'xcally-motion-fax','Context':_0xf24e('0x13'),'Priority':'1','callerid':util[_0xf24e('0xb')](_0xf24e('0x14'),_0x22ef01['headerinfo']?_0x22ef01[_0xf24e('0x8')]:'',_0x22ef01['localstationid']),'variable':_0xf82047,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x22ef01[_0xf24e('0x11')]};};
\ No newline at end of file
+var _0x1a1e=['minrate','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','\x22%s\x22\x20<%s>','localstationid','moment','../../../../config/logger','fax','message','logger','info','inspect','addVariables','ecm','headerinfo'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x1a1e,0x114));var _0xe1a1=function(_0x36e64e,_0x3a5e9a){_0x36e64e=_0x36e64e-0x0;var _0x3e9125=_0x1a1e[_0x36e64e];return _0x3e9125;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0xe1a1('0x0'));var logger=require(_0xe1a1('0x1'))(_0xe1a1('0x2'));exports[_0xe1a1('0x3')]=function(_0x323e19){return{'message':_0x323e19};};exports[_0xe1a1('0x4')]=function(_0x5abf35,_0x30ab25){logger[_0xe1a1('0x5')](_0x5abf35,util[_0xe1a1('0x6')](_0x30ab25,{'showHidden':![],'depth':null}));};exports[_0xe1a1('0x7')]=function(_0x3305d2,_0xb0db3b){var _0x48c4d0={'XMF-ECM':_0xb0db3b[_0xe1a1('0x8')],'XMF-HEADERINFO':_0xb0db3b[_0xe1a1('0x9')],'XMF-MINRATE':_0xb0db3b[_0xe1a1('0xa')],'XMF-MAXRATE':_0xb0db3b[_0xe1a1('0xb')],'XMF-MODEM':util[_0xe1a1('0xc')](_0xe1a1('0xd'),_0xb0db3b[_0xe1a1('0xe')]),'XMF-GATEWAY':_0xb0db3b[_0xe1a1('0xf')],'XMF-FAXDETECT':_0xb0db3b[_0xe1a1('0x10')],'XMF-T38TIMEOUT':_0xb0db3b[_0xe1a1('0x11')],'XMF-LOCALSTATIONID':_0xb0db3b['localstationid'],'XMF-PATH':_0x3305d2[_0xe1a1('0x12')]};return _0x48c4d0;};exports[_0xe1a1('0x13')]=function(_0x51e7d5,_0x2f814f){return{'actionid':_0x51e7d5[_0xe1a1('0x14')],'action':_0xe1a1('0x15'),'channel':_0x51e7d5[_0xe1a1('0x16')],'Exten':_0xe1a1('0x17'),'Context':'from-sip','Priority':'1','callerid':util[_0xe1a1('0xc')](_0xe1a1('0x18'),_0x51e7d5[_0xe1a1('0x9')]?_0x51e7d5[_0xe1a1('0x9')]:'',_0x51e7d5[_0xe1a1('0x19')]),'variable':_0x2f814f,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x51e7d5['uniqueid']};};
\ No newline at end of file
index f9a5174..0109248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0814=['getCampaignHopperHistory','getVoiceCallReports','catch','error','inspect','sync','util','moment','./realtime','./report','./acw','./trigger','./dialer','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/dynamics365','../../config/logger','get','hour','resolve','then','getAgents','initAgents','getTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','getFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory'];(function(_0x46ecbb,_0x1ca801){var _0x55eefc=function(_0x5a4476){while(--_0x5a4476){_0x46ecbb['push'](_0x46ecbb['shift']());}};_0x55eefc(++_0x1ca801);}(_0x0814,0x1bf));var _0x4081=function(_0x407f45,_0x1a518c){_0x407f45=_0x407f45-0x0;var _0x2c1523=_0x0814[_0x407f45];return _0x2c1523;};'use strict';var util=require(_0x4081('0x0'));var moment=require(_0x4081('0x1'));var server=require('./server');var Realtime=require(_0x4081('0x2'));var Report=require(_0x4081('0x3'));var Acw=require(_0x4081('0x4'));var Trigger=require(_0x4081('0x5'));var Dialer=require(_0x4081('0x6'));var Preview=require('./preview');var Fax=require(_0x4081('0x7'));var user=require(_0x4081('0x8'));var voiceQueue=require(_0x4081('0x9'));var voiceQueueReport=require(_0x4081('0xa'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x4081('0xb'));var trigger=require('./rpc/trigger');var template=require('./rpc/template');var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x4081('0xc'));var voiceExtension=require(_0x4081('0xd'));var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0x4081('0xe'));var salesforce=require(_0x4081('0xf'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0x4081('0x10'));var desk=require(_0x4081('0x11'));var zoho=require(_0x4081('0x12'));var vtiger=require(_0x4081('0x13'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x4081('0x14'));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(_0x4081('0x15'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x4081('0x16')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x4081('0x16')](_0x4081('0x17'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x4081('0x18')]()[_0x4081('0x19')](user[_0x4081('0x1a')]())[_0x4081('0x19')](realtime[_0x4081('0x1b')]())[_0x4081('0x19')](user[_0x4081('0x1c')]())[_0x4081('0x19')](realtime['initTelephones']())[_0x4081('0x19')](trunk[_0x4081('0x1d')]())[_0x4081('0x19')](realtime[_0x4081('0x1e')]())['then'](voiceQueue[_0x4081('0x1f')]())[_0x4081('0x19')](realtime[_0x4081('0x20')]())[_0x4081('0x19')](trigger[_0x4081('0x21')]())[_0x4081('0x19')](realtime['initTriggers']())['then'](template[_0x4081('0x22')]())['then'](realtime[_0x4081('0x23')]())[_0x4081('0x19')](zendesk[_0x4081('0x24')]())[_0x4081('0x19')](realtime[_0x4081('0x25')]())[_0x4081('0x19')](salesforce[_0x4081('0x26')]())['then'](realtime['initSalesforceAccounts']())[_0x4081('0x19')](sugarcrm['getSugarcrmAccounts']())['then'](realtime['initSugarcrmAccounts']())[_0x4081('0x19')](freshdesk[_0x4081('0x27')]())[_0x4081('0x19')](realtime['initFreshdeskAccounts']())[_0x4081('0x19')](desk['getDeskAccounts']())[_0x4081('0x19')](realtime[_0x4081('0x28')]())['then'](zoho[_0x4081('0x29')]())[_0x4081('0x19')](realtime[_0x4081('0x2a')]())[_0x4081('0x19')](vtiger[_0x4081('0x2b')]())[_0x4081('0x19')](realtime[_0x4081('0x2c')]())[_0x4081('0x19')](freshsales['getFreshsalesAccounts']())[_0x4081('0x19')](realtime['initFreshsalesAccounts']())['then'](servicenow[_0x4081('0x2d')]())[_0x4081('0x19')](realtime[_0x4081('0x2e')]())[_0x4081('0x19')](dynamics365[_0x4081('0x2f')]())[_0x4081('0x19')](realtime['initDynamics365Accounts']())['then'](campaign[_0x4081('0x30')]())[_0x4081('0x19')](realtime[_0x4081('0x31')]())[_0x4081('0x19')](voiceExtension[_0x4081('0x32')]())['then'](realtime[_0x4081('0x33')]())[_0x4081('0x19')](faxAccount[_0x4081('0x34')]())['then'](realtime[_0x4081('0x35')]())[_0x4081('0x19')](function(){return realtime;});}function initParams(){return Promise[_0x4081('0x18')]()[_0x4081('0x19')](voiceQueueReport[_0x4081('0x36')]())[_0x4081('0x19')](realtime[_0x4081('0x37')]())[_0x4081('0x19')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x4081('0x19')](realtime[_0x4081('0x38')]())[_0x4081('0x19')](cmHopperHistory[_0x4081('0x39')]())[_0x4081('0x19')](realtime['initCampaignHopperHistory']())[_0x4081('0x19')](voiceCallReport[_0x4081('0x3a')]())['then'](realtime['initVoiceCallReports']())[_0x4081('0x3b')](function(_0x6b3e44){logger[_0x4081('0x3c')]('[index.js][initParams]',util[_0x4081('0x3d')](_0x6b3e44,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)[_0x4081('0x19')](function(){return initRealtime();})['then'](function(){return initParams();})[_0x4081('0x19')](function(){report[_0x4081('0x3e')]();setInterval(initRealtime,0x1388);})[_0x4081('0x3b')](function(_0x3d4c95){logger[_0x4081('0x3c')]('[index.js][main]',util['inspect'](_0x3d4c95,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x2d58=['./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','getVoiceQueueReports','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','sync','[index.js][main]','moment','./realtime','./report','./acw','./trigger','./fax','./rpc/user','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/template','./rpc/cmHopperHistory'];(function(_0x437d4d,_0x214aeb){var _0x234105=function(_0x8d2904){while(--_0x8d2904){_0x437d4d['push'](_0x437d4d['shift']());}};_0x234105(++_0x214aeb);}(_0x2d58,0xd2));var _0x82d5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2d58[_0x20a584];return _0x4b41a8;};'use strict';var util=require('util');var moment=require(_0x82d5('0x0'));var server=require('./server');var Realtime=require(_0x82d5('0x1'));var Report=require(_0x82d5('0x2'));var Acw=require(_0x82d5('0x3'));var Trigger=require(_0x82d5('0x4'));var Dialer=require('./dialer');var Preview=require('./preview');var Fax=require(_0x82d5('0x5'));var user=require(_0x82d5('0x6'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require(_0x82d5('0x7'));var voiceCallReport=require(_0x82d5('0x8'));var trunk=require(_0x82d5('0x9'));var trigger=require('./rpc/trigger');var template=require(_0x82d5('0xa'));var cmHopperHistory=require(_0x82d5('0xb'));var campaign=require(_0x82d5('0xc'));var voiceExtension=require(_0x82d5('0xd'));var faxAccount=require(_0x82d5('0xe'));var zendesk=require(_0x82d5('0xf'));var salesforce=require(_0x82d5('0x10'));var sugarcrm=require(_0x82d5('0x11'));var freshdesk=require(_0x82d5('0x12'));var desk=require('./rpc/integrations/desk');var zoho=require(_0x82d5('0x13'));var vtiger=require(_0x82d5('0x14'));var freshsales=require(_0x82d5('0x15'));var servicenow=require(_0x82d5('0x16'));var dynamics365=require(_0x82d5('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(_0x82d5('0x18'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x82d5('0x19')](_0x82d5('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x82d5('0x19')](_0x82d5('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x82d5('0x1b')]()[_0x82d5('0x1c')](user[_0x82d5('0x1d')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x1e')]())[_0x82d5('0x1c')](user[_0x82d5('0x1f')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x20')]())[_0x82d5('0x1c')](trunk[_0x82d5('0x21')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x22')]())['then'](voiceQueue[_0x82d5('0x23')]())[_0x82d5('0x1c')](realtime['initVoiceQueues']())[_0x82d5('0x1c')](trigger[_0x82d5('0x24')]())[_0x82d5('0x1c')](realtime['initTriggers']())['then'](template['getTemplates']())[_0x82d5('0x1c')](realtime[_0x82d5('0x25')]())['then'](zendesk[_0x82d5('0x26')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x27')]())[_0x82d5('0x1c')](salesforce[_0x82d5('0x28')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x29')]())[_0x82d5('0x1c')](sugarcrm['getSugarcrmAccounts']())[_0x82d5('0x1c')](realtime[_0x82d5('0x2a')]())[_0x82d5('0x1c')](freshdesk[_0x82d5('0x2b')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x2c')]())['then'](desk[_0x82d5('0x2d')]())['then'](realtime[_0x82d5('0x2e')]())['then'](zoho[_0x82d5('0x2f')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x30')]())['then'](vtiger[_0x82d5('0x31')]())['then'](realtime[_0x82d5('0x32')]())[_0x82d5('0x1c')](freshsales[_0x82d5('0x33')]())['then'](realtime[_0x82d5('0x34')]())[_0x82d5('0x1c')](servicenow[_0x82d5('0x35')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x36')]())[_0x82d5('0x1c')](dynamics365[_0x82d5('0x37')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x38')]())[_0x82d5('0x1c')](campaign[_0x82d5('0x39')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x3a')]())[_0x82d5('0x1c')](voiceExtension[_0x82d5('0x3b')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x3c')]())[_0x82d5('0x1c')](faxAccount[_0x82d5('0x3d')]())[_0x82d5('0x1c')](realtime['initFaxAccounts']())[_0x82d5('0x1c')](function(){return realtime;});}function initParams(){return Promise['resolve']()['then'](voiceQueueReport[_0x82d5('0x3e')]())[_0x82d5('0x1c')](realtime['initVoiceQueueReports']())[_0x82d5('0x1c')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x82d5('0x1c')](realtime[_0x82d5('0x3f')]())['then'](cmHopperHistory[_0x82d5('0x40')]())[_0x82d5('0x1c')](realtime[_0x82d5('0x41')]())['then'](voiceCallReport['getVoiceCallReports']())[_0x82d5('0x1c')](realtime[_0x82d5('0x42')]())[_0x82d5('0x43')](function(_0x280aa8){logger[_0x82d5('0x44')](_0x82d5('0x45'),util[_0x82d5('0x46')](_0x280aa8,{'showHidden':![],'depth':null}));});}function main(){return server[_0x82d5('0x47')](realtime,preview,fax)['then'](function(){return initRealtime();})[_0x82d5('0x1c')](function(){return initParams();})[_0x82d5('0x1c')](function(){report[_0x82d5('0x48')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x12d4c9){logger[_0x82d5('0x44')](_0x82d5('0x49'),util[_0x82d5('0x46')](_0x12d4c9,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index d2ca688..9f0bd17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x224d=['prototype','updateStatusRealtime','state','toLowerCase','not_inuse','toNumber','voiceStatusCallerIdNumber','stringify','format','user:%s','emit','user:ami:update','omit','user:presence','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','email','accountcode','fullname','unknown','stateTime','status','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusQueue','onhold','local'];(function(_0x388346,_0x41005e){var _0x3a84d0=function(_0x414db0){while(--_0x414db0){_0x388346['push'](_0x388346['shift']());}};_0x3a84d0(++_0x41005e);}(_0x224d,0x1e2));var _0xd224=function(_0x4d189e,_0x2c0a04){_0x4d189e=_0x4d189e-0x0;var _0x1b36df=_0x224d[_0x4d189e];return _0x1b36df;};'use strict';var _=require(_0xd224('0x0'));var util=require('util');var moment=require(_0xd224('0x1'));var md5=require(_0xd224('0x2'));var Redis=require(_0xd224('0x3'));var config=require(_0xd224('0x4'));config[_0xd224('0x5')]=_[_0xd224('0x6')](config['redis'],{'host':_0xd224('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd224('0x5')]));function Agent(_0x414b9e){this['id']=_0x414b9e['id']||0x0;this[_0xd224('0x8')]=_0x414b9e[_0xd224('0x8')]||'';this[_0xd224('0x9')]=_0x414b9e['email']||'';this['accountcode']=_0x414b9e[_0xd224('0xa')]||'';this['fullname']=_0x414b9e[_0xd224('0xb')]||'';this['state']=_0xd224('0xc');this[_0xd224('0xd')]=0x0;this[_0xd224('0xe')]=_0xd224('0xc');this[_0xd224('0xf')]='';this[_0xd224('0x10')]='';this[_0xd224('0x11')]='';this[_0xd224('0x12')]='';this[_0xd224('0x13')]=_0x414b9e[_0xd224('0x13')]||![];this[_0xd224('0x14')]=_0xd224('0xc');this[_0xd224('0x15')]=0x0;this['voiceStatusCallerIdNumber']='';this[_0xd224('0x16')]='';this[_0xd224('0x17')]=![];this[_0xd224('0x18')]=![];this['md5']='';}Agent[_0xd224('0x19')][_0xd224('0x1a')]=function(_0x1bc580){var _0x1ef08e;if(_0x1bc580&&_0x1bc580[_0xd224('0x1b')]){_0x1ef08e=_0x1bc580[_0xd224('0x1b')][_0xd224('0x1c')]();switch(_0x1ef08e){case _0xd224('0x1d'):_0x1ef08e='idle';break;case'inuse':_0x1ef08e='talking';break;}}if(_0x1ef08e&&this[_0xd224('0x14')]!==_0x1ef08e||_0x1bc580['statePause']){this[_0xd224('0x15')]=_[_0xd224('0x1e')](moment()['format']('x'));}if(_0x1ef08e){this['voiceStatus']=_0x1ef08e;}var _0x3de789={'id':this['id'],'name':this[_0xd224('0x8')],'email':this[_0xd224('0x9')],'accountcode':this[_0xd224('0xa')],'fullname':this['fullname'],'state':this[_0xd224('0x1b')],'stateTime':this[_0xd224('0xd')],'status':this[_0xd224('0xe')],'address':this['address'],'online':this[_0xd224('0x13')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0xd224('0x15')],'voiceStatusCallerIdNumber':this[_0xd224('0x1f')],'voiceStatusQueue':this[_0xd224('0x16')],'interface':this[_0xd224('0x12')],'onhold':this[_0xd224('0x17')]};var _0x18e983=md5(JSON[_0xd224('0x20')](_0x3de789));if(this[_0xd224('0x2')]!==_0x18e983){this[_0xd224('0x2')]=_0x18e983;io['to'](util[_0xd224('0x21')](_0xd224('0x22'),_0x3de789[_0xd224('0x8')]))[_0xd224('0x23')](_0xd224('0x24'),_[_0xd224('0x25')](_0x3de789,[_0xd224('0x13')]));io[_0xd224('0x23')](_0xd224('0x26'),_0x3de789);}};module['exports']=Agent;
\ No newline at end of file
+var _0xedd6=['voiceStatusTime','toNumber','format','stateTime','voiceStatusQueue','stringify','emit','user:ami:update','omit','user:presence','exports','lodash','util','moment','md5','ioredis','../../../config/environment','redis','name','email','accountcode','fullname','state','unknown','status','address','phone','interface','online','voiceStatus','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','idle','inuse','talking','statePause'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0xedd6,0x1df));var _0x6edd=function(_0x385553,_0x3d9568){_0x385553=_0x385553-0x0;var _0x30d012=_0xedd6[_0x385553];return _0x30d012;};'use strict';var _=require(_0x6edd('0x0'));var util=require(_0x6edd('0x1'));var moment=require(_0x6edd('0x2'));var md5=require(_0x6edd('0x3'));var Redis=require(_0x6edd('0x4'));var config=require(_0x6edd('0x5'));config[_0x6edd('0x6')]=_['defaults'](config[_0x6edd('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6edd('0x6')]));function Agent(_0x114cbf){this['id']=_0x114cbf['id']||0x0;this[_0x6edd('0x7')]=_0x114cbf['name']||'';this[_0x6edd('0x8')]=_0x114cbf[_0x6edd('0x8')]||'';this['accountcode']=_0x114cbf[_0x6edd('0x9')]||'';this[_0x6edd('0xa')]=_0x114cbf[_0x6edd('0xa')]||'';this[_0x6edd('0xb')]=_0x6edd('0xc');this['stateTime']=0x0;this[_0x6edd('0xd')]='unknown';this[_0x6edd('0xe')]='';this[_0x6edd('0xf')]='';this['mobile']='';this[_0x6edd('0x10')]='';this[_0x6edd('0x11')]=_0x114cbf['online']||![];this[_0x6edd('0x12')]=_0x6edd('0xc');this['voiceStatusTime']=0x0;this[_0x6edd('0x13')]='';this['voiceStatusQueue']='';this[_0x6edd('0x14')]=![];this[_0x6edd('0x15')]=![];this['md5']='';}Agent[_0x6edd('0x16')][_0x6edd('0x17')]=function(_0xa23ec2){var _0x39b243;if(_0xa23ec2&&_0xa23ec2[_0x6edd('0xb')]){_0x39b243=_0xa23ec2[_0x6edd('0xb')]['toLowerCase']();switch(_0x39b243){case'not_inuse':_0x39b243=_0x6edd('0x18');break;case _0x6edd('0x19'):_0x39b243=_0x6edd('0x1a');break;}}if(_0x39b243&&this['voiceStatus']!==_0x39b243||_0xa23ec2[_0x6edd('0x1b')]){this[_0x6edd('0x1c')]=_[_0x6edd('0x1d')](moment()[_0x6edd('0x1e')]('x'));}if(_0x39b243){this[_0x6edd('0x12')]=_0x39b243;}var _0x1a7788={'id':this['id'],'name':this[_0x6edd('0x7')],'email':this[_0x6edd('0x8')],'accountcode':this[_0x6edd('0x9')],'fullname':this[_0x6edd('0xa')],'state':this[_0x6edd('0xb')],'stateTime':this[_0x6edd('0x1f')],'status':this[_0x6edd('0xd')],'address':this['address'],'online':this[_0x6edd('0x11')],'voiceStatus':this[_0x6edd('0x12')],'voiceStatusTime':this[_0x6edd('0x1c')],'voiceStatusCallerIdNumber':this[_0x6edd('0x13')],'voiceStatusQueue':this[_0x6edd('0x20')],'interface':this['interface'],'onhold':this[_0x6edd('0x14')]};var _0x1f891c=md5(JSON[_0x6edd('0x21')](_0x1a7788));if(this[_0x6edd('0x3')]!==_0x1f891c){this[_0x6edd('0x3')]=_0x1f891c;io['to'](util['format']('user:%s',_0x1a7788[_0x6edd('0x7')]))[_0x6edd('0x22')](_0x6edd('0x23'),_[_0x6edd('0x24')](_0x1a7788,[_0x6edd('0x11')]));io[_0x6edd('0x22')](_0x6edd('0x25'),_0x1a7788);}};module[_0x6edd('0x26')]=Agent;
\ No newline at end of file
index 539485a..6970204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf460=['Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','temp','ivrAnswerCallsDay','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk'];(function(_0x2bef7c,_0x6b1f7c){var _0x41d99e=function(_0x4016cc){while(--_0x4016cc){_0x2bef7c['push'](_0x2bef7c['shift']());}};_0x41d99e(++_0x6b1f7c);}(_0xf460,0xfd));var _0x0f46=function(_0x5b110c,_0xc5dccc){_0x5b110c=_0x5b110c-0x0;var _0xd28a1a=_0xf460[_0x5b110c];return _0xd28a1a;};'use strict';function Campaign(_0x2173a9){this['id']=_0x2173a9['id']||0x0;this[_0x0f46('0x0')]=_0x2173a9['name']||'';this[_0x0f46('0x1')]=_0x2173a9[_0x0f46('0x1')]||_0x0f46('0x2');this[_0x0f46('0x3')]=0x0;this[_0x0f46('0x4')]=0x0;this[_0x0f46('0x5')]=0x0;this['ivrTotalCallsDays']=0x0;this['message']='';this[_0x0f46('0x6')]=!![];this[_0x0f46('0x7')]=_0x2173a9[_0x0f46('0x7')];this[_0x0f46('0x8')]=_0x2173a9[_0x0f46('0x8')];this[_0x0f46('0x9')]=_0x2173a9[_0x0f46('0x9')]||null;this[_0x0f46('0xa')]=_0x2173a9['dialGlobalInterval']?_0x2173a9[_0x0f46('0xa')]:null;this[_0x0f46('0xb')]=_0x2173a9[_0x0f46('0xb')];this[_0x0f46('0xc')]=_0x2173a9[_0x0f46('0xc')];this['dialOriginateTimeout']=_0x2173a9[_0x0f46('0xd')]||0x1e;this['dialCongestionMaxRetry']=_0x2173a9['dialCongestionMaxRetry'];this['dialCongestionRetryFrequency']=_0x2173a9[_0x0f46('0xe')];this[_0x0f46('0xf')]=_0x2173a9[_0x0f46('0xf')];this[_0x0f46('0x10')]=_0x2173a9[_0x0f46('0x10')];this[_0x0f46('0x11')]=_0x2173a9[_0x0f46('0x11')];this[_0x0f46('0x12')]=_0x2173a9[_0x0f46('0x12')];this[_0x0f46('0x13')]=_0x2173a9[_0x0f46('0x13')];this[_0x0f46('0x14')]=_0x2173a9['dialNoSuchNumberMaxRetry']||0x3;this['dialNoSuchNumberRetryFrequency']=_0x2173a9['dialNoSuchNumberRetryFrequency']||0x96;this[_0x0f46('0x15')]=_0x2173a9[_0x0f46('0x15')]||0x3;this['dialDropRetryFrequency']=_0x2173a9[_0x0f46('0x16')]||0x96;this[_0x0f46('0x17')]=_0x2173a9[_0x0f46('0x17')]||0x3;this[_0x0f46('0x18')]=_0x2173a9[_0x0f46('0x18')]||0x96;this[_0x0f46('0x19')]=_0x2173a9[_0x0f46('0x19')]||0x3;this[_0x0f46('0x1a')]=_0x2173a9[_0x0f46('0x1a')]||0x96;this['dialAgentRejectMaxRetry']=_0x2173a9['dialAgentRejectMaxRetry']||0x3;this[_0x0f46('0x1b')]=_0x2173a9[_0x0f46('0x1b')]||0x96;this[_0x0f46('0x1c')]=_0x2173a9[_0x0f46('0x1c')]||_0x0f46('0x1d');this[_0x0f46('0x1e')]=_0x2173a9[_0x0f46('0x1e')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x2173a9[_0x0f46('0x1f')]||undefined;this['dialCutDigit']=_0x2173a9[_0x0f46('0x20')]||undefined;this[_0x0f46('0x21')]=_0x2173a9[_0x0f46('0x21')]?_0x2173a9[_0x0f46('0x21')]:undefined;this[_0x0f46('0x22')]=_0x2173a9[_0x0f46('0x22')]?_0x2173a9['Trunk']:undefined;this[_0x0f46('0x23')]=_0x2173a9[_0x0f46('0x23')]?_0x2173a9[_0x0f46('0x23')]:undefined;this[_0x0f46('0x24')]=_0x2173a9[_0x0f46('0x24')]?_0x2173a9[_0x0f46('0x24')]:undefined;this['dialQueueProject']=_0x2173a9[_0x0f46('0x24')]?_0x2173a9[_0x0f46('0x24')][_0x0f46('0x0')]:undefined;this[_0x0f46('0x25')]=_0x2173a9['dialAMDActive']||![];this[_0x0f46('0x26')]=_0x2173a9['dialAMDInitialSilence'];this[_0x0f46('0x27')]=_0x2173a9['dialAMDGreeting'];this[_0x0f46('0x28')]=_0x2173a9[_0x0f46('0x28')];this[_0x0f46('0x29')]=_0x2173a9[_0x0f46('0x29')];this[_0x0f46('0x2a')]=_0x2173a9['dialAMDMinWordLength'];this[_0x0f46('0x2b')]=_0x2173a9[_0x0f46('0x2b')];this[_0x0f46('0x2c')]=_0x2173a9['dialAMDMaximumNumberOfWords'];this[_0x0f46('0x2d')]=_0x2173a9[_0x0f46('0x2d')];this[_0x0f46('0x2e')]=_0x2173a9[_0x0f46('0x2e')];}module[_0x0f46('0x2f')]=Campaign;
\ No newline at end of file
+var _0x0a56=['dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','type','campaign','originated','ivrAnswerCallsDay','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x0a56,0x1de));var _0x60a5=function(_0x91bdcb,_0xc35800){_0x91bdcb=_0x91bdcb-0x0;var _0x3ee55f=_0x0a56[_0x91bdcb];return _0x3ee55f;};'use strict';function Campaign(_0x2d6634){this['id']=_0x2d6634['id']||0x0;this['name']=_0x2d6634['name']||'';this['type']=_0x2d6634[_0x60a5('0x0')]||_0x60a5('0x1');this[_0x60a5('0x2')]=0x0;this['temp']=0x0;this[_0x60a5('0x3')]=0x0;this[_0x60a5('0x4')]=0x0;this['message']='';this[_0x60a5('0x5')]=!![];this[_0x60a5('0x6')]=_0x2d6634[_0x60a5('0x6')];this[_0x60a5('0x7')]=_0x2d6634[_0x60a5('0x7')];this[_0x60a5('0x8')]=_0x2d6634[_0x60a5('0x8')]||null;this[_0x60a5('0x9')]=_0x2d6634['dialGlobalInterval']?_0x2d6634['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x2d6634[_0x60a5('0xa')];this['dialOriginateCallerIdNumber']=_0x2d6634[_0x60a5('0xb')];this[_0x60a5('0xc')]=_0x2d6634[_0x60a5('0xc')]||0x1e;this['dialCongestionMaxRetry']=_0x2d6634[_0x60a5('0xd')];this[_0x60a5('0xe')]=_0x2d6634[_0x60a5('0xe')];this[_0x60a5('0xf')]=_0x2d6634['dialBusyMaxRetry'];this[_0x60a5('0x10')]=_0x2d6634['dialBusyRetryFrequency'];this['dialNoAnswerMaxRetry']=_0x2d6634[_0x60a5('0x11')];this[_0x60a5('0x12')]=_0x2d6634[_0x60a5('0x12')];this[_0x60a5('0x13')]=_0x2d6634[_0x60a5('0x13')];this[_0x60a5('0x14')]=_0x2d6634[_0x60a5('0x14')]||0x3;this[_0x60a5('0x15')]=_0x2d6634['dialNoSuchNumberRetryFrequency']||0x96;this['dialDropMaxRetry']=_0x2d6634[_0x60a5('0x16')]||0x3;this[_0x60a5('0x17')]=_0x2d6634[_0x60a5('0x17')]||0x96;this[_0x60a5('0x18')]=_0x2d6634[_0x60a5('0x18')]||0x3;this[_0x60a5('0x19')]=_0x2d6634['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x2d6634[_0x60a5('0x1a')]||0x3;this[_0x60a5('0x1b')]=_0x2d6634[_0x60a5('0x1b')]||0x96;this[_0x60a5('0x1c')]=_0x2d6634[_0x60a5('0x1c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x2d6634[_0x60a5('0x1d')]||0x96;this['dialOrderByScheduledAt']=_0x2d6634[_0x60a5('0x1e')]||_0x60a5('0x1f');this[_0x60a5('0x20')]=_0x2d6634[_0x60a5('0x20')]||undefined;this[_0x60a5('0x21')]=_0x2d6634[_0x60a5('0x21')]||undefined;this['dialCutDigit']=_0x2d6634['dialCutDigit']||undefined;this[_0x60a5('0x22')]=_0x2d6634['TrunkBackup']?_0x2d6634[_0x60a5('0x22')]:undefined;this['Trunk']=_0x2d6634[_0x60a5('0x23')]?_0x2d6634[_0x60a5('0x23')]:undefined;this[_0x60a5('0x24')]=_0x2d6634[_0x60a5('0x24')]?_0x2d6634[_0x60a5('0x24')]:undefined;this['SquareProject']=_0x2d6634[_0x60a5('0x25')]?_0x2d6634[_0x60a5('0x25')]:undefined;this[_0x60a5('0x26')]=_0x2d6634[_0x60a5('0x25')]?_0x2d6634[_0x60a5('0x25')]['name']:undefined;this[_0x60a5('0x27')]=_0x2d6634[_0x60a5('0x27')]||![];this[_0x60a5('0x28')]=_0x2d6634[_0x60a5('0x28')];this[_0x60a5('0x29')]=_0x2d6634[_0x60a5('0x29')];this[_0x60a5('0x2a')]=_0x2d6634[_0x60a5('0x2a')];this[_0x60a5('0x2b')]=_0x2d6634[_0x60a5('0x2b')];this[_0x60a5('0x2c')]=_0x2d6634['dialAMDMinWordLength'];this[_0x60a5('0x2d')]=_0x2d6634[_0x60a5('0x2d')];this[_0x60a5('0x2e')]=_0x2d6634[_0x60a5('0x2e')];this[_0x60a5('0x2f')]=_0x2d6634[_0x60a5('0x2f')];this[_0x60a5('0x30')]=_0x2d6634[_0x60a5('0x30')];}module[_0x60a5('0x31')]=Campaign;
\ No newline at end of file
index 1aa8d11..b673d50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c91=['disposition','monitorFilename','queue','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','lastapplication','lastdata','billableseconds','holdtime','tag'];(function(_0x339dfe,_0x6ab0c7){var _0x8b0587=function(_0x2e5c57){while(--_0x2e5c57){_0x339dfe['push'](_0x339dfe['shift']());}};_0x8b0587(++_0x6ab0c7);}(_0x2c91,0x158));var _0x12c9=function(_0x201480,_0xa00128){_0x201480=_0x201480-0x0;var _0x12df28=_0x2c91[_0x201480];return _0x12df28;};'use strict';function Channel(){this[_0x12c9('0x0')]=null;this[_0x12c9('0x1')]='';this[_0x12c9('0x2')]='';this[_0x12c9('0x3')]=0x0;this[_0x12c9('0x4')]='';this[_0x12c9('0x5')]=undefined;this[_0x12c9('0x6')]=undefined;this[_0x12c9('0x7')]=0x0;this['context']='';this[_0x12c9('0x8')]=0x0;this[_0x12c9('0x9')]=0x0;this[_0x12c9('0xa')]=0x0;this[_0x12c9('0xb')]=![];this[_0x12c9('0xc')]=null;this[_0x12c9('0xd')]=null;this[_0x12c9('0xe')]=![];this['abandoned']=![];this[_0x12c9('0xf')]='';this[_0x12c9('0x10')]='';this['duration']=0x0;this[_0x12c9('0x11')]=0x0;this[_0x12c9('0x12')]=0x0;this['type']=null;this[_0x12c9('0x13')]=null;this[_0x12c9('0x14')]=null;this['monitor']=![];this[_0x12c9('0x15')]=null;this[_0x12c9('0x16')]=null;this['monitors']=[];this[_0x12c9('0x17')]=undefined;this[_0x12c9('0x18')]=undefined;this[_0x12c9('0x19')]=undefined;this[_0x12c9('0x1a')]=0x0;}module[_0x12c9('0x1b')]=Channel;
\ No newline at end of file
+var _0x235b=['calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','linkedid','exten','answered','endtime','unmanaged','abandoned','lastapplication','lastdata','holdtime','type','tag','disposition','monitor','monitorFilename','queue','monitors','transferconnectedlinenum','transferType','mohtime','starttime'];(function(_0x5e3b04,_0xbb6795){var _0x1fc44d=function(_0x3472a1){while(--_0x3472a1){_0x5e3b04['push'](_0x5e3b04['shift']());}};_0x1fc44d(++_0xbb6795);}(_0x235b,0x1ed));var _0xb235=function(_0x4167e0,_0x955464){_0x4167e0=_0x4167e0-0x0;var _0x55a313=_0x235b[_0x4167e0];return _0x55a313;};'use strict';function Channel(){this[_0xb235('0x0')]=null;this['channel']='';this['destinationchannel']='';this[_0xb235('0x1')]=0x0;this[_0xb235('0x2')]='';this[_0xb235('0x3')]=undefined;this[_0xb235('0x4')]=undefined;this[_0xb235('0x5')]=0x0;this[_0xb235('0x6')]='';this['uniqueid']=0x0;this[_0xb235('0x7')]=0x0;this[_0xb235('0x8')]=0x0;this[_0xb235('0x9')]=![];this['answertime']=null;this[_0xb235('0xa')]=null;this[_0xb235('0xb')]=![];this[_0xb235('0xc')]=![];this[_0xb235('0xd')]='';this[_0xb235('0xe')]='';this['duration']=0x0;this['billableseconds']=0x0;this[_0xb235('0xf')]=0x0;this[_0xb235('0x10')]=null;this[_0xb235('0x11')]=null;this[_0xb235('0x12')]=null;this[_0xb235('0x13')]=![];this[_0xb235('0x14')]=null;this[_0xb235('0x15')]=null;this[_0xb235('0x16')]=[];this['transfercalleridnum']=undefined;this[_0xb235('0x17')]=undefined;this[_0xb235('0x18')]=undefined;this[_0xb235('0x19')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 053780b..ff8ff52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f26=['Configurations','name','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type'];(function(_0x5e407a,_0x451f59){var _0x2c4a58=function(_0x264e99){while(--_0x264e99){_0x5e407a['push'](_0x5e407a['shift']());}};_0x2c4a58(++_0x451f59);}(_0x4f26,0x83));var _0x64f2=function(_0x3bfd5,_0x57eec9){_0x3bfd5=_0x3bfd5-0x0;var _0x149115=_0x4f26[_0x3bfd5];return _0x149115;};'use strict';function DeskAccount(_0x4e75b8){this['id']=_0x4e75b8['id']||0x0;this['name']=_0x4e75b8[_0x64f2('0x0')]||'';this['username']=_0x4e75b8['username']||'';this[_0x64f2('0x1')]=_0x4e75b8[_0x64f2('0x1')]||'';this[_0x64f2('0x2')]=_0x4e75b8['authType']||'';this[_0x64f2('0x3')]=_0x4e75b8[_0x64f2('0x3')]||'';this['consumerKey']=_0x4e75b8[_0x64f2('0x4')]||'';this[_0x64f2('0x5')]=_0x4e75b8['consumerSecret']||'';this['token']=_0x4e75b8[_0x64f2('0x6')]||'';this['tokenSecret']=_0x4e75b8[_0x64f2('0x7')]||'';this['type']=_0x4e75b8[_0x64f2('0x8')]||'';this['serverUrl']=_0x4e75b8['serverUrl']||'';this[_0x64f2('0x9')]=_0x4e75b8[_0x64f2('0x9')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x4bc2=['token','tokenSecret','type','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret'];(function(_0x3777c2,_0x41cae1){var _0x37ec12=function(_0x27b12d){while(--_0x27b12d){_0x3777c2['push'](_0x3777c2['shift']());}};_0x37ec12(++_0x41cae1);}(_0x4bc2,0x1d9));var _0x24bc=function(_0x4418b6,_0x4f24a0){_0x4418b6=_0x4418b6-0x0;var _0x312c31=_0x4bc2[_0x4418b6];return _0x312c31;};'use strict';function DeskAccount(_0x2d13b3){this['id']=_0x2d13b3['id']||0x0;this[_0x24bc('0x0')]=_0x2d13b3['name']||'';this[_0x24bc('0x1')]=_0x2d13b3[_0x24bc('0x1')]||'';this[_0x24bc('0x2')]=_0x2d13b3[_0x24bc('0x2')]||'';this['authType']=_0x2d13b3[_0x24bc('0x3')]||'';this['password']=_0x2d13b3[_0x24bc('0x4')]||'';this['consumerKey']=_0x2d13b3[_0x24bc('0x5')]||'';this[_0x24bc('0x6')]=_0x2d13b3[_0x24bc('0x6')]||'';this[_0x24bc('0x7')]=_0x2d13b3[_0x24bc('0x7')]||'';this[_0x24bc('0x8')]=_0x2d13b3[_0x24bc('0x8')]||'';this[_0x24bc('0x9')]=_0x2d13b3[_0x24bc('0x9')]||'';this['serverUrl']=_0x2d13b3['serverUrl']||'';this['Configurations']=_0x2d13b3[_0x24bc('0xa')]||{};}module[_0x24bc('0xb')]=DeskAccount;
\ No newline at end of file
index 57d8da6..c035ea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x004d=['tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','name','username','password','remoteUri'];(function(_0x170178,_0x212c9f){var _0x1c0706=function(_0x2269eb){while(--_0x2269eb){_0x170178['push'](_0x170178['shift']());}};_0x1c0706(++_0x212c9f);}(_0x004d,0xb7));var _0xd004=function(_0x4cf101,_0x1d004e){_0x4cf101=_0x4cf101-0x0;var _0x2b0844=_0x004d[_0x4cf101];return _0x2b0844;};'use strict';function Dynamics365Account(_0x567589){this['id']=_0x567589['id']||0x0;this['name']=_0x567589[_0xd004('0x0')]||'';this[_0xd004('0x1')]=_0x567589[_0xd004('0x1')]||'';this[_0xd004('0x2')]=_0x567589[_0xd004('0x2')]||'';this[_0xd004('0x3')]=_0x567589[_0xd004('0x3')]||'';this[_0xd004('0x4')]=_0x567589[_0xd004('0x4')]||'';this['clientId']=_0x567589[_0xd004('0x5')]||'';this[_0xd004('0x6')]=_0x567589[_0xd004('0x6')]||{};this[_0xd004('0x7')]=_0x567589[_0xd004('0x7')]||'';this['modernAuthentication']=_0x567589[_0xd004('0x8')]||![];this[_0xd004('0x9')]=_0x567589['Configurations']||{};this[_0xd004('0xa')]=_0x567589[_0xd004('0xa')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0xed16=['CloudProvider','name','username','password','remoteUri','tenantId','clientId','serverUrl','Configurations'];(function(_0x108904,_0x52c660){var _0x52df85=function(_0x2cc877){while(--_0x2cc877){_0x108904['push'](_0x108904['shift']());}};_0x52df85(++_0x52c660);}(_0xed16,0xbe));var _0x6ed1=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0xed16[_0x4e9628];return _0x27bc8c;};'use strict';function Dynamics365Account(_0x1f1492){this['id']=_0x1f1492['id']||0x0;this[_0x6ed1('0x0')]=_0x1f1492[_0x6ed1('0x0')]||'';this[_0x6ed1('0x1')]=_0x1f1492[_0x6ed1('0x1')]||'';this[_0x6ed1('0x2')]=_0x1f1492[_0x6ed1('0x2')]||'';this[_0x6ed1('0x3')]=_0x1f1492[_0x6ed1('0x3')]||'';this['tenantId']=_0x1f1492[_0x6ed1('0x4')]||'';this[_0x6ed1('0x5')]=_0x1f1492[_0x6ed1('0x5')]||'';this['clientSecret']=_0x1f1492['clientSecret']||{};this['serverUrl']=_0x1f1492[_0x6ed1('0x6')]||'';this['modernAuthentication']=_0x1f1492['modernAuthentication']||![];this[_0x6ed1('0x7')]=_0x1f1492[_0x6ed1('0x7')]||{};this[_0x6ed1('0x8')]=_0x1f1492[_0x6ed1('0x8')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index c16b8b0..337c16a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x400e=['ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','exports','name','description'];(function(_0xe9d05e,_0x10e541){var _0x802d81=function(_0x595a97){while(--_0x595a97){_0xe9d05e['push'](_0xe9d05e['shift']());}};_0x802d81(++_0x10e541);}(_0x400e,0xb9));var _0xe400=function(_0xa79977,_0x4f7f12){_0xa79977=_0xa79977-0x0;var _0x109f10=_0x400e[_0xa79977];return _0x109f10;};'use strict';function FaxAccount(_0x347736){this['id']=_0x347736['id']||0x0;this[_0xe400('0x0')]=_0x347736[_0xe400('0x0')]||'';this[_0xe400('0x1')]=_0x347736['description'];this[_0xe400('0x2')]=_0x347736[_0xe400('0x2')];this['headerinfo']=_0x347736[_0xe400('0x3')];this[_0xe400('0x4')]=_0x347736[_0xe400('0x4')];this[_0xe400('0x5')]=_0x347736[_0xe400('0x5')]||0x960;this[_0xe400('0x6')]=_0x347736[_0xe400('0x6')]||0x3840;this[_0xe400('0x7')]=_0x347736['modem']||_0xe400('0x8');this[_0xe400('0x9')]=_0x347736[_0xe400('0x9')]||'no';this[_0xe400('0xa')]=_0x347736[_0xe400('0xa')]||'no';this[_0xe400('0xb')]=_0x347736['t38timeout']||0x1388;this[_0xe400('0xc')]=_0x347736['tech']||_0xe400('0xd');this[_0xe400('0xe')]=_0x347736[_0xe400('0xe')]?_0x347736[_0xe400('0xe')]:undefined;this[_0xe400('0xf')]=_0x347736['ListId'];this['key']=_0x347736['key'];}module[_0xe400('0x10')]=FaxAccount;
\ No newline at end of file
+var _0xf26b=['gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29'];(function(_0x1c87ea,_0x136680){var _0xf5eec4=function(_0x581fc4){while(--_0x581fc4){_0x1c87ea['push'](_0x1c87ea['shift']());}};_0xf5eec4(++_0x136680);}(_0xf26b,0x17e));var _0xbf26=function(_0x1d0b74,_0x2b9295){_0x1d0b74=_0x1d0b74-0x0;var _0x1c18e7=_0xf26b[_0x1d0b74];return _0x1c18e7;};'use strict';function FaxAccount(_0x3173d1){this['id']=_0x3173d1['id']||0x0;this[_0xbf26('0x0')]=_0x3173d1[_0xbf26('0x0')]||'';this[_0xbf26('0x1')]=_0x3173d1[_0xbf26('0x1')];this[_0xbf26('0x2')]=_0x3173d1['ecm'];this['headerinfo']=_0x3173d1[_0xbf26('0x3')];this['localstationid']=_0x3173d1[_0xbf26('0x4')];this[_0xbf26('0x5')]=_0x3173d1['minrate']||0x960;this[_0xbf26('0x6')]=_0x3173d1[_0xbf26('0x6')]||0x3840;this['modem']=_0x3173d1[_0xbf26('0x7')]||_0xbf26('0x8');this[_0xbf26('0x9')]=_0x3173d1[_0xbf26('0x9')]||'no';this[_0xbf26('0xa')]=_0x3173d1[_0xbf26('0xa')]||'no';this[_0xbf26('0xb')]=_0x3173d1['t38timeout']||0x1388;this[_0xbf26('0xc')]=_0x3173d1[_0xbf26('0xc')]||_0xbf26('0xd');this['Trunk']=_0x3173d1[_0xbf26('0xe')]?_0x3173d1[_0xbf26('0xe')]:undefined;this[_0xbf26('0xf')]=_0x3173d1[_0xbf26('0xf')];this[_0xbf26('0x10')]=_0x3173d1['key'];}module['exports']=FaxAccount;
\ No newline at end of file
index 478c3f5..b8c7e04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0233=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x0233,0xfc));var _0x3023=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x0233[_0x24f31b];return _0x488401;};'use strict';function FreshdeskAccount(_0x3c3a46){this['id']=_0x3c3a46['id']||0x0;this[_0x3023('0x0')]=_0x3c3a46[_0x3023('0x0')]||'';this[_0x3023('0x1')]=_0x3c3a46[_0x3023('0x1')]||'';this[_0x3023('0x2')]=_0x3c3a46[_0x3023('0x3')]||'';this[_0x3023('0x4')]=_0x3c3a46['remoteUri']||'';this[_0x3023('0x5')]=_0x3c3a46['serverUrl']||'';this[_0x3023('0x6')]=_0x3c3a46['Configurations']||{};}module[_0x3023('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0x03da=['remoteUri','serverUrl','name','username','apiKey'];(function(_0x2a94d8,_0x47d4fe){var _0xe1f74d=function(_0x1c5735){while(--_0x1c5735){_0x2a94d8['push'](_0x2a94d8['shift']());}};_0xe1f74d(++_0x47d4fe);}(_0x03da,0xd4));var _0xa03d=function(_0x2a478e,_0x404251){_0x2a478e=_0x2a478e-0x0;var _0x51322c=_0x03da[_0x2a478e];return _0x51322c;};'use strict';function FreshdeskAccount(_0x19c563){this['id']=_0x19c563['id']||0x0;this[_0xa03d('0x0')]=_0x19c563[_0xa03d('0x0')]||'';this[_0xa03d('0x1')]=_0x19c563[_0xa03d('0x1')]||'';this[_0xa03d('0x2')]=_0x19c563['token']||'';this[_0xa03d('0x3')]=_0x19c563['remoteUri']||'';this[_0xa03d('0x4')]=_0x19c563[_0xa03d('0x4')]||'';this['Configurations']=_0x19c563['Configurations']||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index a546233..335aba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb491=['name','username','apiKey','remoteUri','serverUrl','Configurations'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xb491,0x18c));var _0x1b49=function(_0x2211ed,_0x1bca0b){_0x2211ed=_0x2211ed-0x0;var _0x4d78cc=_0xb491[_0x2211ed];return _0x4d78cc;};'use strict';function FreshsalesAccount(_0x15701e){this['id']=_0x15701e['id']||0x0;this[_0x1b49('0x0')]=_0x15701e[_0x1b49('0x0')]||'';this[_0x1b49('0x1')]=_0x15701e[_0x1b49('0x1')]||'';this[_0x1b49('0x2')]=_0x15701e['token']||'';this[_0x1b49('0x3')]=_0x15701e[_0x1b49('0x3')]||'';this['serverUrl']=_0x15701e[_0x1b49('0x4')]||'';this[_0x1b49('0x5')]=_0x15701e[_0x1b49('0x5')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0xac0a=['apiKey','token','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x13fe64,_0xc50d55){var _0x2908cf=function(_0x263f80){while(--_0x263f80){_0x13fe64['push'](_0x13fe64['shift']());}};_0x2908cf(++_0xc50d55);}(_0xac0a,0x11e));var _0xaac0=function(_0x5958a5,_0x576571){_0x5958a5=_0x5958a5-0x0;var _0x17cae9=_0xac0a[_0x5958a5];return _0x17cae9;};'use strict';function FreshsalesAccount(_0x886d8){this['id']=_0x886d8['id']||0x0;this['name']=_0x886d8[_0xaac0('0x0')]||'';this[_0xaac0('0x1')]=_0x886d8['username']||'';this[_0xaac0('0x2')]=_0x886d8[_0xaac0('0x3')]||'';this[_0xaac0('0x4')]=_0x886d8[_0xaac0('0x4')]||'';this[_0xaac0('0x5')]=_0x886d8[_0xaac0('0x5')]||'';this[_0xaac0('0x6')]=_0x886d8[_0xaac0('0x6')]||{};}module[_0xaac0('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 79925d1..a671e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebe1=['accountcode','context','exten','priority','holdtime','assigned','lastAssignedTo','motionChannel','routealias','mohtime','exports','type','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','originalposition','channel','connectedlinenum','connectedlinename'];(function(_0x177e72,_0x28bf32){var _0x392698=function(_0x45a052){while(--_0x45a052){_0x177e72['push'](_0x177e72['shift']());}};_0x392698(++_0x28bf32);}(_0xebe1,0x1be));var _0x1ebe=function(_0x2de34b,_0x1f5196){_0x2de34b=_0x2de34b-0x0;var _0x344bc4=_0xebe1[_0x2de34b];return _0x344bc4;};'use strict';function QueueReport(){this[_0x1ebe('0x0')]=_0x1ebe('0x1');this[_0x1ebe('0x2')]='';this[_0x1ebe('0x3')]='';this[_0x1ebe('0x4')]='';this[_0x1ebe('0x5')]='';this[_0x1ebe('0x6')]=null;this['queuecallerleaveAt']=null;this[_0x1ebe('0x7')]=0x1;this[_0x1ebe('0x8')]=0x1;this[_0x1ebe('0x9')]=![];this[_0x1ebe('0xa')]=null;this[_0x1ebe('0xb')]=![];this[_0x1ebe('0xc')]=null;this[_0x1ebe('0xd')]=![];this['queuecallerexitAt']=null;this[_0x1ebe('0xe')]=0x1;this[_0x1ebe('0xf')]='';this[_0x1ebe('0x10')]='';this[_0x1ebe('0x11')]='';this[_0x1ebe('0x12')]='';this[_0x1ebe('0x13')]='';this[_0x1ebe('0x14')]='';this[_0x1ebe('0x15')]='';this[_0x1ebe('0x16')]=0x0;this[_0x1ebe('0x17')]=![];this[_0x1ebe('0x18')]='';this[_0x1ebe('0x19')]='voice';this[_0x1ebe('0x1a')]=null;this[_0x1ebe('0x1b')]=0x0;this['variables']={};}module[_0x1ebe('0x1c')]=QueueReport;
\ No newline at end of file
+var _0x0594=['uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','originalposition','channel','connectedlinenum','connectedlinename','accountcode','exten','priority','routealias','mohtime','exports','type','inbound'];(function(_0x3774b0,_0x35b50f){var _0x427685=function(_0x31df15){while(--_0x31df15){_0x3774b0['push'](_0x3774b0['shift']());}};_0x427685(++_0x35b50f);}(_0x0594,0x1a7));var _0x4059=function(_0x103096,_0x3ed91b){_0x103096=_0x103096-0x0;var _0x322f4f=_0x0594[_0x103096];return _0x322f4f;};'use strict';function QueueReport(){this[_0x4059('0x0')]=_0x4059('0x1');this[_0x4059('0x2')]='';this[_0x4059('0x3')]='';this[_0x4059('0x4')]='';this[_0x4059('0x5')]='';this[_0x4059('0x6')]=null;this[_0x4059('0x7')]=null;this[_0x4059('0x8')]=0x1;this[_0x4059('0x9')]=0x1;this[_0x4059('0xa')]=![];this[_0x4059('0xb')]=null;this[_0x4059('0xc')]=![];this[_0x4059('0xd')]=null;this[_0x4059('0xe')]=![];this['queuecallerexitAt']=null;this[_0x4059('0xf')]=0x1;this[_0x4059('0x10')]='';this[_0x4059('0x11')]='';this[_0x4059('0x12')]='';this[_0x4059('0x13')]='';this['context']='';this[_0x4059('0x14')]='';this[_0x4059('0x15')]='';this['holdtime']=0x0;this['assigned']=![];this['lastAssignedTo']='';this['motionChannel']='voice';this[_0x4059('0x16')]=null;this[_0x4059('0x17')]=0x0;this['variables']={};}module[_0x4059('0x18')]=QueueReport;
\ No newline at end of file
index 3e9d775..68392bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cca=['exports','username','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations'];(function(_0x2422c7,_0x294d94){var _0x48f1cd=function(_0x3a8892){while(--_0x3a8892){_0x2422c7['push'](_0x2422c7['shift']());}};_0x48f1cd(++_0x294d94);}(_0x1cca,0x12d));var _0xa1cc=function(_0x1cf82f,_0x355aa3){_0x1cf82f=_0x1cf82f-0x0;var _0x4c89d5=_0x1cca[_0x1cf82f];return _0x4c89d5;};'use strict';function SalesforceAccount(_0x17eabe){this['id']=_0x17eabe['id']||0x0;this['name']=_0x17eabe['name']||'';this[_0xa1cc('0x0')]=_0x17eabe[_0xa1cc('0x0')]||'';this['remoteUri']=_0x17eabe['remoteUri']||'';this[_0xa1cc('0x1')]=_0x17eabe[_0xa1cc('0x1')]||'';this[_0xa1cc('0x2')]=_0x17eabe['clientId']||'';this['clientSecret']=_0x17eabe[_0xa1cc('0x3')]||'';this[_0xa1cc('0x4')]=_0x17eabe[_0xa1cc('0x4')]||'';this[_0xa1cc('0x5')]=_0x17eabe[_0xa1cc('0x5')]||_0xa1cc('0x6');this['serverUrl']=_0x17eabe[_0xa1cc('0x7')]||'';this[_0xa1cc('0x8')]=_0x17eabe['Configurations']||{};}module[_0xa1cc('0x9')]=SalesforceAccount;
\ No newline at end of file
+var _0x5732=['name','username','remoteUri','password','clientId','clientSecret','type','integrationTab','Configurations','exports'];(function(_0x574617,_0x42eccc){var _0x29de90=function(_0x367aff){while(--_0x367aff){_0x574617['push'](_0x574617['shift']());}};_0x29de90(++_0x42eccc);}(_0x5732,0xdc));var _0x2573=function(_0x5021b9,_0x1440d7){_0x5021b9=_0x5021b9-0x0;var _0x516b81=_0x5732[_0x5021b9];return _0x516b81;};'use strict';function SalesforceAccount(_0x401a17){this['id']=_0x401a17['id']||0x0;this[_0x2573('0x0')]=_0x401a17[_0x2573('0x0')]||'';this[_0x2573('0x1')]=_0x401a17['username']||'';this[_0x2573('0x2')]=_0x401a17[_0x2573('0x2')]||'';this[_0x2573('0x3')]=_0x401a17[_0x2573('0x3')]||'';this[_0x2573('0x4')]=_0x401a17[_0x2573('0x4')]||'';this[_0x2573('0x5')]=_0x401a17['clientSecret']||'';this['securityToken']=_0x401a17['securityToken']||'';this[_0x2573('0x6')]=_0x401a17[_0x2573('0x6')]||_0x2573('0x7');this['serverUrl']=_0x401a17['serverUrl']||'';this[_0x2573('0x8')]=_0x401a17['Configurations']||{};}module[_0x2573('0x9')]=SalesforceAccount;
\ No newline at end of file
index b22e943..65825fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d4f=['Configurations','name','username','password','remoteUri','serverUrl'];(function(_0x39bd3f,_0x45b058){var _0x5ce625=function(_0x127975){while(--_0x127975){_0x39bd3f['push'](_0x39bd3f['shift']());}};_0x5ce625(++_0x45b058);}(_0x8d4f,0x181));var _0xf8d4=function(_0x179e6a,_0x23c5f8){_0x179e6a=_0x179e6a-0x0;var _0x515f39=_0x8d4f[_0x179e6a];return _0x515f39;};'use strict';function ServicenowAccount(_0x2f9d8c){this['id']=_0x2f9d8c['id']||0x0;this[_0xf8d4('0x0')]=_0x2f9d8c['name']||'';this[_0xf8d4('0x1')]=_0x2f9d8c[_0xf8d4('0x1')]||'';this[_0xf8d4('0x2')]=_0x2f9d8c['password']||'';this[_0xf8d4('0x3')]=_0x2f9d8c[_0xf8d4('0x3')]||'';this[_0xf8d4('0x4')]=_0x2f9d8c[_0xf8d4('0x4')]||'';this[_0xf8d4('0x5')]=_0x2f9d8c[_0xf8d4('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0x8428=['remoteUri','Configurations','exports','name','username','password'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x8428,0x159));var _0x8842=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8428[_0x14add3];return _0x4a174f;};'use strict';function ServicenowAccount(_0x3c39fd){this['id']=_0x3c39fd['id']||0x0;this['name']=_0x3c39fd[_0x8842('0x0')]||'';this[_0x8842('0x1')]=_0x3c39fd['username']||'';this[_0x8842('0x2')]=_0x3c39fd[_0x8842('0x2')]||'';this[_0x8842('0x3')]=_0x3c39fd[_0x8842('0x3')]||'';this['serverUrl']=_0x3c39fd['serverUrl']||'';this[_0x8842('0x4')]=_0x3c39fd[_0x8842('0x4')]||{};}module[_0x8842('0x5')]=ServicenowAccount;
\ No newline at end of file
index 7802895..c87fceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed31=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x37d5ff,_0x5ee83b){var _0x146b37=function(_0x596170){while(--_0x596170){_0x37d5ff['push'](_0x37d5ff['shift']());}};_0x146b37(++_0x5ee83b);}(_0xed31,0x14f));var _0x1ed3=function(_0x428f7e,_0x593967){_0x428f7e=_0x428f7e-0x0;var _0x47b3c3=_0xed31[_0x428f7e];return _0x47b3c3;};'use strict';function SugarcrmAccount(_0xa95b71){this['id']=_0xa95b71['id']||0x0;this[_0x1ed3('0x0')]=_0xa95b71['name']||'';this[_0x1ed3('0x1')]=_0xa95b71['username']||'';this[_0x1ed3('0x2')]=_0xa95b71[_0x1ed3('0x2')]||'';this[_0x1ed3('0x3')]=_0xa95b71[_0x1ed3('0x3')]||'';this[_0x1ed3('0x4')]=_0xa95b71[_0x1ed3('0x4')]||'';this[_0x1ed3('0x5')]=_0xa95b71[_0x1ed3('0x5')]||{};}module[_0x1ed3('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0xb36e=['remoteUri','serverUrl','Configurations','name','username','password'];(function(_0x1b3235,_0x39d7ff){var _0x4af933=function(_0x1ff9c5){while(--_0x1ff9c5){_0x1b3235['push'](_0x1b3235['shift']());}};_0x4af933(++_0x39d7ff);}(_0xb36e,0xc3));var _0xeb36=function(_0x2479d1,_0x368393){_0x2479d1=_0x2479d1-0x0;var _0x5104d3=_0xb36e[_0x2479d1];return _0x5104d3;};'use strict';function SugarcrmAccount(_0x21fcf9){this['id']=_0x21fcf9['id']||0x0;this[_0xeb36('0x0')]=_0x21fcf9[_0xeb36('0x0')]||'';this[_0xeb36('0x1')]=_0x21fcf9[_0xeb36('0x1')]||'';this['password']=_0x21fcf9[_0xeb36('0x2')]||'';this[_0xeb36('0x3')]=_0x21fcf9[_0xeb36('0x3')]||'';this[_0xeb36('0x4')]=_0x21fcf9[_0xeb36('0x4')]||'';this[_0xeb36('0x5')]=_0x21fcf9[_0xeb36('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index abf113b..7eba497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb00=['accountcode','state','unknown','stateTime','address','name'];(function(_0x2bc5cc,_0x42bcfd){var _0x1bb7c2=function(_0x7cdc4){while(--_0x7cdc4){_0x2bc5cc['push'](_0x2bc5cc['shift']());}};_0x1bb7c2(++_0x42bcfd);}(_0xfb00,0x167));var _0x0fb0=function(_0x15aaff,_0x16d0c2){_0x15aaff=_0x15aaff-0x0;var _0x5aa315=_0xfb00[_0x15aaff];return _0x5aa315;};'use strict';function Telephone(_0x3983fc){this['id']=_0x3983fc['id']||0x0;this['name']=_0x3983fc[_0x0fb0('0x0')]||'';this[_0x0fb0('0x1')]=_0x3983fc[_0x0fb0('0x1')]||'';this[_0x0fb0('0x2')]=_0x0fb0('0x3');this[_0x0fb0('0x4')]=0x0;this['status']=_0x0fb0('0x3');this[_0x0fb0('0x5')]='';}module['exports']=Telephone;
\ No newline at end of file
+var _0x8747=['stateTime','status','address','name','accountcode','state','unknown'];(function(_0x4c97d8,_0xf49b5c){var _0x4b257f=function(_0x421482){while(--_0x421482){_0x4c97d8['push'](_0x4c97d8['shift']());}};_0x4b257f(++_0xf49b5c);}(_0x8747,0xab));var _0x7874=function(_0x810025,_0x34bb04){_0x810025=_0x810025-0x0;var _0x4dbc81=_0x8747[_0x810025];return _0x4dbc81;};'use strict';function Telephone(_0x53ac1b){this['id']=_0x53ac1b['id']||0x0;this['name']=_0x53ac1b[_0x7874('0x0')]||'';this['accountcode']=_0x53ac1b[_0x7874('0x1')]||'';this[_0x7874('0x2')]=_0x7874('0x3');this[_0x7874('0x4')]=0x0;this[_0x7874('0x5')]=_0x7874('0x3');this[_0x7874('0x6')]='';}module['exports']=Telephone;
\ No newline at end of file
index e65e8a6..f767df2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x2be006,_0x369d8e){var _0x2fe64f=function(_0x22cb88){while(--_0x22cb88){_0x2be006['push'](_0x2be006['shift']());}};_0x2fe64f(++_0x369d8e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x941c29,_0x4a9928){var _0x45a501=function(_0x3cca61){while(--_0x3cca61){_0x941c29['push'](_0x941c29['shift']());}};_0x45a501(++_0x4a9928);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index 9135797..57d740d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['channel','voice','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x50f446,_0x470716){var _0x580210=function(_0x4cfc0a){while(--_0x4cfc0a){_0x50f446['push'](_0x50f446['shift']());}};_0x580210(++_0x470716);}(_0xda2d,0x102));var _0xdda2=function(_0x4e8da8,_0x430673){_0x4e8da8=_0x4e8da8-0x0;var _0x12fff1=_0xda2d[_0x4e8da8];return _0x12fff1;};'use strict';function Trigger(_0x2625ed){this['id']=_0x2625ed['id']||0x0;this[_0xdda2('0x0')]=_0x2625ed[_0xdda2('0x0')]||'';this[_0xdda2('0x1')]=_0x2625ed[_0xdda2('0x1')]||_0xdda2('0x2');this['status']=_0x2625ed['status']||![];this['AllConditions']=_0x2625ed[_0xdda2('0x3')]||[];this[_0xdda2('0x4')]=_0x2625ed[_0xdda2('0x4')]||[];this[_0xdda2('0x5')]=_0x2625ed[_0xdda2('0x5')]||[];}module[_0xdda2('0x6')]=Trigger;
\ No newline at end of file
+var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x4363a4,_0x262d0e){var _0x171867=function(_0x1a4f02){while(--_0x1a4f02){_0x4363a4['push'](_0x4363a4['shift']());}};_0x171867(++_0x262d0e);}(_0xb10b,0x12a));var _0xbb10=function(_0x2b91ac,_0x310741){_0x2b91ac=_0x2b91ac-0x0;var _0xe88814=_0xb10b[_0x2b91ac];return _0xe88814;};'use strict';function Trigger(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'voice';this[_0xbb10('0x2')]=_0x13ce8d[_0xbb10('0x2')]||![];this[_0xbb10('0x3')]=_0x13ce8d[_0xbb10('0x3')]||[];this[_0xbb10('0x4')]=_0x13ce8d[_0xbb10('0x4')]||[];this['Actions']=_0x13ce8d[_0xbb10('0x5')]||[];}module[_0xbb10('0x6')]=Trigger;
\ No newline at end of file
index d408c05..a9de10f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab35=['registrationtime','address','defaultuser','exports','name','state','unknown','status','registry','indexOf','split','host','port','domain','domainport','refresh'];(function(_0x1df538,_0x54a242){var _0x3a9806=function(_0x5c0258){while(--_0x5c0258){_0x1df538['push'](_0x1df538['shift']());}};_0x3a9806(++_0x54a242);}(_0xab35,0x174));var _0x5ab3=function(_0x1e9424,_0x191cba){_0x1e9424=_0x1e9424-0x0;var _0x1bd96c=_0xab35[_0x1e9424];return _0x1bd96c;};'use strict';function Trunk(_0x5350e9){this['id']=_0x5350e9['id']||0x0;this['active']=_0x5350e9['active']||![];this[_0x5ab3('0x0')]=_0x5350e9[_0x5ab3('0x0')]||'';this[_0x5ab3('0x1')]=_0x5ab3('0x2');this['stateTime']=0x0;this[_0x5ab3('0x3')]=_0x5ab3('0x2');this[_0x5ab3('0x4')]=_0x5350e9['registry']&&_0x5350e9[_0x5ab3('0x4')][_0x5ab3('0x5')](':')?_0x5350e9[_0x5ab3('0x4')][_0x5ab3('0x6')](':')[0x0]:'';this[_0x5ab3('0x7')]='';this[_0x5ab3('0x8')]='';this[_0x5ab3('0x9')]='';this[_0x5ab3('0xa')]='';this[_0x5ab3('0xb')]='';this['stateRegistry']=_0x5ab3('0x2');this[_0x5ab3('0xc')]='';this[_0x5ab3('0xd')]='';this['defaultuser']=_0x5350e9[_0x5ab3('0xe')]||'';}module[_0x5ab3('0xf')]=Trunk;
\ No newline at end of file
+var _0xd3db=['split','host','port','domain','refresh','stateRegistry','registrationtime','address','defaultuser','active','unknown','stateTime','status','registry','indexOf'];(function(_0x40f09a,_0x3743b6){var _0x2eb96c=function(_0xe6203d){while(--_0xe6203d){_0x40f09a['push'](_0x40f09a['shift']());}};_0x2eb96c(++_0x3743b6);}(_0xd3db,0x1ad));var _0xbd3d=function(_0x3ea942,_0x1a0bd5){_0x3ea942=_0x3ea942-0x0;var _0x3185a2=_0xd3db[_0x3ea942];return _0x3185a2;};'use strict';function Trunk(_0x1e35be){this['id']=_0x1e35be['id']||0x0;this[_0xbd3d('0x0')]=_0x1e35be['active']||![];this['name']=_0x1e35be['name']||'';this['state']=_0xbd3d('0x1');this[_0xbd3d('0x2')]=0x0;this[_0xbd3d('0x3')]=_0xbd3d('0x1');this[_0xbd3d('0x4')]=_0x1e35be[_0xbd3d('0x4')]&&_0x1e35be[_0xbd3d('0x4')][_0xbd3d('0x5')](':')?_0x1e35be['registry'][_0xbd3d('0x6')](':')[0x0]:'';this[_0xbd3d('0x7')]='';this[_0xbd3d('0x8')]='';this[_0xbd3d('0x9')]='';this['domainport']='';this[_0xbd3d('0xa')]='';this[_0xbd3d('0xb')]=_0xbd3d('0x1');this[_0xbd3d('0xc')]='';this[_0xbd3d('0xd')]='';this[_0xbd3d('0xe')]=_0x1e35be[_0xbd3d('0xe')]||'';}module['exports']=Trunk;
\ No newline at end of file
index 8c7c62d..bedd19b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1133=['exports','exten','recordingFormat','none','mandatoryDisposition'];(function(_0x5c3828,_0x31e8bb){var _0x37c344=function(_0x1afaaa){while(--_0x1afaaa){_0x5c3828['push'](_0x5c3828['shift']());}};_0x37c344(++_0x31e8bb);}(_0x1133,0xf6));var _0x3113=function(_0xe16149,_0x4844d8){_0xe16149=_0xe16149-0x0;var _0x5aa9fd=_0x1133[_0xe16149];return _0x5aa9fd;};'use strict';function voiceExtension(_0x5c8d92){this['id']=_0x5c8d92['id']||0x0;this[_0x3113('0x0')]=_0x5c8d92[_0x3113('0x0')]||'';this[_0x3113('0x1')]=_0x5c8d92[_0x3113('0x1')]||_0x3113('0x2');this[_0x3113('0x3')]=_0x5c8d92[_0x3113('0x3')]||![];}module[_0x3113('0x4')]=voiceExtension;
\ No newline at end of file
+var _0xec2d=['exten','recordingFormat','none','mandatoryDisposition'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xec2d,0x198));var _0xdec2=function(_0x2a0a38,_0x4a6de5){_0x2a0a38=_0x2a0a38-0x0;var _0x4a200e=_0xec2d[_0x2a0a38];return _0x4a200e;};'use strict';function voiceExtension(_0x5a6c7f){this['id']=_0x5a6c7f['id']||0x0;this[_0xdec2('0x0')]=_0x5a6c7f[_0xdec2('0x0')]||'';this[_0xdec2('0x1')]=_0x5a6c7f[_0xdec2('0x1')]||_0xdec2('0x2');this[_0xdec2('0x3')]=_0x5a6c7f[_0xdec2('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
index 4ce9017..ddc7926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9829=['dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startProgressive','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','exports','wav','wav49','gsm','fewestcalls','leastrecent','random','ringall','roundrobin','rrordered','wrandom','name','monitor_format','type','inbound','waiting','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','available','busy','inUse','invalid','loggedIn','notInUse','onHold','ringing','ringInUse','unavailable','acw','acwTimeout','autopause','sendMessageOneNotActive','message','statusMessage','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency'];(function(_0x2d16f3,_0x54e11e){var _0x42fa71=function(_0x1147fc){while(--_0x1147fc){_0x2d16f3['push'](_0x2d16f3['shift']());}};_0x42fa71(++_0x54e11e);}(_0x9829,0xc4));var _0x9982=function(_0xd578cb,_0x2167a3){_0xd578cb=_0xd578cb-0x0;var _0x775533=_0x9829[_0xd578cb];return _0x775533;};'use strict';var monitorFormat={'wav':_0x9982('0x0'),'wav49':_0x9982('0x1'),'gsm':_0x9982('0x2')};var strategy={'fewestcalls':_0x9982('0x3'),'leastrecent':_0x9982('0x4'),'linear':'linear','random':_0x9982('0x5'),'ringall':_0x9982('0x6'),'rr':_0x9982('0x7'),'rrmemory':'rrmemory','rrordered':_0x9982('0x8'),'wrandom':_0x9982('0x9')};function VoiceQueue(_0x58f8fe){this['id']=_0x58f8fe['id']||0x0;this['name']=_0x58f8fe[_0x9982('0xa')]||'';this[_0x9982('0xb')]=_0x58f8fe['monitor_format']||'';this[_0x9982('0xc')]=_0x58f8fe[_0x9982('0xc')]||_0x9982('0xd');this[_0x9982('0xe')]=0x0;this[_0x9982('0xf')]=0x0;this[_0x9982('0x10')]=0x0;this[_0x9982('0x11')]=0x0;this[_0x9982('0x12')]=0x0;this[_0x9982('0x13')]=0x0;this[_0x9982('0x14')]=0x0;this[_0x9982('0x15')]=0x0;this[_0x9982('0x16')]=0x0;this[_0x9982('0x17')]=0x0;this[_0x9982('0x18')]=0x0;this[_0x9982('0x19')]=0x0;this[_0x9982('0x1a')]=0x0;this[_0x9982('0x1b')]=0x0;this[_0x9982('0x1c')]=0x0;this['paused']=0x0;this[_0x9982('0x1d')]=0x0;this[_0x9982('0x1e')]=0x0;this['talking']=0x0;this[_0x9982('0x1f')]=0x0;this['unknown']=0x0;this[_0x9982('0x20')]=_0x58f8fe[_0x9982('0x20')]||![];this[_0x9982('0x21')]=_0x58f8fe[_0x9982('0x21')]||0xa;this[_0x9982('0x22')]=_0x58f8fe[_0x9982('0x22')]||'no';this[_0x9982('0x23')]=!![];this[_0x9982('0x24')]='';this[_0x9982('0x25')]='';this['originated']=0x0;this[_0x9982('0x26')]=0x0;this['dialTimezone']=_0x58f8fe[_0x9982('0x27')]||null;this[_0x9982('0x28')]=_0x58f8fe['dialGlobalInterval']?_0x58f8fe[_0x9982('0x28')]:null;this[_0x9982('0x29')]=_0x58f8fe[_0x9982('0x29')];this[_0x9982('0x2a')]=_0x58f8fe[_0x9982('0x2a')]||_0x9982('0x2b');this['dialLimitChannel']=_0x58f8fe[_0x9982('0x2c')]||0x0;this[_0x9982('0x2d')]=_0x58f8fe['dialLimitQueue']||0x0;this[_0x9982('0x2e')]=_0x58f8fe[_0x9982('0x2e')]||0x1;this[_0x9982('0x2f')]=_0x58f8fe[_0x9982('0x2f')]||_0x9982('0x30');this[_0x9982('0x31')]=_0x58f8fe[_0x9982('0x31')]||0.03;this[_0x9982('0x32')]=_0x58f8fe[_0x9982('0x32')]||0x258;this[_0x9982('0x33')]=_0x58f8fe[_0x9982('0x33')]||_0x9982('0x34');this[_0x9982('0x35')]=_0x58f8fe['dialOriginateCallerIdNumber']||_0x9982('0x34');this[_0x9982('0x36')]=_0x58f8fe[_0x9982('0x36')]||0x1e;this[_0x9982('0x37')]=_0x58f8fe[_0x9982('0x37')]||_0x9982('0x38');this[_0x9982('0x39')]=_0x58f8fe[_0x9982('0x39')]||0x3;this[_0x9982('0x3a')]=_0x58f8fe[_0x9982('0x3a')]||undefined;this[_0x9982('0x3b')]=_0x58f8fe[_0x9982('0x3b')]||0x3;this[_0x9982('0x3c')]=_0x58f8fe[_0x9982('0x3c')]||0x96;this[_0x9982('0x3d')]=_0x58f8fe[_0x9982('0x3d')]||0x3;this[_0x9982('0x3e')]=_0x58f8fe[_0x9982('0x3e')]||0x96;this['dialNoAnswerMaxRetry']=_0x58f8fe['dialNoAnswerMaxRetry']||0x3;this[_0x9982('0x3f')]=_0x58f8fe[_0x9982('0x3f')]||0x96;this[_0x9982('0x40')]=_0x58f8fe[_0x9982('0x40')]||0x3;this[_0x9982('0x41')]=_0x58f8fe[_0x9982('0x41')]||0x96;this[_0x9982('0x42')]=_0x58f8fe[_0x9982('0x42')]||0x3;this[_0x9982('0x43')]=_0x58f8fe[_0x9982('0x43')]||0x96;this[_0x9982('0x44')]=_0x58f8fe[_0x9982('0x44')]||0x3;this['dialAbandonedRetryFrequency']=_0x58f8fe[_0x9982('0x45')]||0x96;this[_0x9982('0x46')]=_0x58f8fe[_0x9982('0x46')]||0x3;this[_0x9982('0x47')]=_0x58f8fe[_0x9982('0x47')]||0x96;this[_0x9982('0x48')]=_0x58f8fe['dialAgentRejectMaxRetry']||0x3;this[_0x9982('0x49')]=_0x58f8fe['dialAgentRejectRetryFrequency']||0x96;this[_0x9982('0x4a')]=_0x58f8fe[_0x9982('0x4a')]||0x3;this[_0x9982('0x4b')]=_0x58f8fe[_0x9982('0x4b')]||0x4;this[_0x9982('0x4c')]=_0x58f8fe[_0x9982('0x4c')]?_0x58f8fe[_0x9982('0x4c')]:undefined;this['TrunkBackup']=_0x58f8fe[_0x9982('0x4d')]?_0x58f8fe[_0x9982('0x4d')]:undefined;this[_0x9982('0x4e')]=_0x58f8fe[_0x9982('0x4e')]||undefined;this[_0x9982('0x4f')]=_0x58f8fe['Interval']?_0x58f8fe[_0x9982('0x4f')]:undefined;this['dialOrderByScheduledAt']=_0x58f8fe['dialOrderByScheduledAt']||_0x9982('0x50');this[_0x9982('0x51')]=_0x58f8fe['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x9982('0x52')]=_0x58f8fe[_0x9982('0x52')]||undefined;this[_0x9982('0x53')]=strategy[_0x58f8fe[_0x9982('0x53')]];this[_0x9982('0x54')]=!![];this[_0x9982('0x55')]=_0x58f8fe[_0x9982('0x55')]||![];this[_0x9982('0x56')]=_0x58f8fe[_0x9982('0x56')];this[_0x9982('0x57')]=_0x58f8fe[_0x9982('0x57')];this[_0x9982('0x58')]=_0x58f8fe['dialAMDAfterGreetingSilence'];this[_0x9982('0x59')]=_0x58f8fe[_0x9982('0x59')];this[_0x9982('0x5a')]=_0x58f8fe[_0x9982('0x5a')];this[_0x9982('0x5b')]=_0x58f8fe['dialAMDBetweenWordsSilence'];this['dialAMDMaximumNumberOfWords']=_0x58f8fe['dialAMDMaximumNumberOfWords'];this[_0x9982('0x5c')]=_0x58f8fe[_0x9982('0x5c')];this['dialAMDMaximumWordLength']=_0x58f8fe[_0x9982('0x5d')];this[_0x9982('0x5e')]=0x0;this[_0x9982('0x5f')]=0x0;this[_0x9982('0x60')]=_0x58f8fe['timeout'];this[_0x9982('0x61')]=0x0;this[_0x9982('0x62')]=0x0;this[_0x9982('0x63')]=0x0;this[_0x9982('0x64')]=0x0;this[_0x9982('0x65')]=0x0;this[_0x9982('0x66')]=0x0;this['outboundUnknownCallsDay']=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0x9982('0x67')]=0x0;this[_0x9982('0x68')]=0x0;this[_0x9982('0x69')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x9982('0x6a')]=0x0;this[_0x9982('0x6b')]=0x0;this[_0x9982('0x6c')]=undefined;this['startPredictive']=undefined;this['handlePredictive']=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this['predictiveIntervalTotalCalls']=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this[_0x9982('0x6d')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x9982('0x6e')]=0x0;this[_0x9982('0x6f')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0x9982('0x70')]=0x0;this[_0x9982('0x71')]=_0x58f8fe[_0x9982('0x72')]||0x14;this[_0x9982('0x73')]=_0x58f8fe[_0x9982('0x72')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x9982('0x74')]=0x0;this[_0x9982('0x75')]=0x1;this[_0x9982('0x76')]=0x0;this[_0x9982('0x77')]=0x0;this[_0x9982('0x78')]=0x0;this[_0x9982('0x79')]=0x0;this[_0x9982('0x7a')]=_0x58f8fe[_0x9982('0x7a')]||0x1e;this[_0x9982('0x7b')]=_0x58f8fe['dialRecallInQueue']||![];this[_0x9982('0x7c')]=!!_0x58f8fe['dialPreviewAutoRecallMe']||![];this['dialPreviewRecallmeReminder']=!!_0x58f8fe[_0x9982('0x7d')]||![];this[_0x9982('0x7e')]=_0x58f8fe['dialQueueProject2']||undefined;this[_0x9982('0x7f')]=_0x58f8fe[_0x9982('0x7f')]||![];this[_0x9982('0x80')]=_0x58f8fe[_0x9982('0x80')]||![];this[_0x9982('0xb')]=monitorFormat[_0x58f8fe['monitor_format']]?monitorFormat[_0x58f8fe[_0x9982('0xb')]]:undefined;this['mandatoryDisposition']=_0x58f8fe[_0x9982('0x81')]||![];this[_0x9982('0x82')]=_0x58f8fe['mandatoryDispositionPause']?_0x58f8fe[_0x9982('0x82')]:undefined;this[_0x9982('0x83')]=![];}module[_0x9982('0x84')]=VoiceQueue;
\ No newline at end of file
+var _0xcf12=['dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','exports','wav49','fewestcalls','leastrecent','linear','ringall','roundrobin','rrmemory','rrordered','wrandom','name','monitor_format','type','inbound','waiting','total','answered','unmanaged','available','busy','inUse','loggedIn','onHold','paused','ringing','ringInUse','talking','unavailable','unknown','acw','acwTimeout','autopause','sendMessageOneNotActive','message','statusMessage','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval'];(function(_0x2e4795,_0x350ba2){var _0x344b5b=function(_0x4a7558){while(--_0x4a7558){_0x2e4795['push'](_0x2e4795['shift']());}};_0x344b5b(++_0x350ba2);}(_0xcf12,0x140));var _0x2cf1=function(_0x4ba5f5,_0x52b2ca){_0x4ba5f5=_0x4ba5f5-0x0;var _0x4b6ab4=_0xcf12[_0x4ba5f5];return _0x4b6ab4;};'use strict';var monitorFormat={'wav':'wav','wav49':_0x2cf1('0x0'),'gsm':'gsm'};var strategy={'fewestcalls':_0x2cf1('0x1'),'leastrecent':_0x2cf1('0x2'),'linear':_0x2cf1('0x3'),'random':'random','ringall':_0x2cf1('0x4'),'rr':_0x2cf1('0x5'),'rrmemory':_0x2cf1('0x6'),'rrordered':_0x2cf1('0x7'),'wrandom':_0x2cf1('0x8')};function VoiceQueue(_0x2da534){this['id']=_0x2da534['id']||0x0;this[_0x2cf1('0x9')]=_0x2da534[_0x2cf1('0x9')]||'';this[_0x2cf1('0xa')]=_0x2da534['monitor_format']||'';this[_0x2cf1('0xb')]=_0x2da534[_0x2cf1('0xb')]||_0x2cf1('0xc');this[_0x2cf1('0xd')]=0x0;this[_0x2cf1('0xe')]=0x0;this[_0x2cf1('0xf')]=0x0;this['sumDuration']=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0x2cf1('0x10')]=0x0;this['abandoned']=0x0;this[_0x2cf1('0x11')]=0x0;this[_0x2cf1('0x12')]=0x0;this[_0x2cf1('0x13')]=0x0;this['invalid']=0x0;this[_0x2cf1('0x14')]=0x0;this['notInUse']=0x0;this[_0x2cf1('0x15')]=0x0;this[_0x2cf1('0x16')]=0x0;this[_0x2cf1('0x17')]=0x0;this[_0x2cf1('0x18')]=0x0;this[_0x2cf1('0x19')]=0x0;this[_0x2cf1('0x1a')]=0x0;this[_0x2cf1('0x1b')]=0x0;this[_0x2cf1('0x1c')]=_0x2da534[_0x2cf1('0x1c')]||![];this['acwTimeout']=_0x2da534[_0x2cf1('0x1d')]||0xa;this[_0x2cf1('0x1e')]=_0x2da534['autopause']||'no';this[_0x2cf1('0x1f')]=!![];this[_0x2cf1('0x20')]='';this[_0x2cf1('0x21')]='';this[_0x2cf1('0x22')]=0x0;this[_0x2cf1('0x23')]=0x0;this[_0x2cf1('0x24')]=_0x2da534[_0x2cf1('0x24')]||null;this[_0x2cf1('0x25')]=_0x2da534[_0x2cf1('0x25')]?_0x2da534[_0x2cf1('0x25')]:null;this[_0x2cf1('0x26')]=_0x2da534['dialActive'];this[_0x2cf1('0x27')]=_0x2da534['dialMethod']||_0x2cf1('0x28');this[_0x2cf1('0x29')]=_0x2da534[_0x2cf1('0x29')]||0x0;this[_0x2cf1('0x2a')]=_0x2da534[_0x2cf1('0x2a')]||0x0;this[_0x2cf1('0x2b')]=_0x2da534[_0x2cf1('0x2b')]||0x1;this[_0x2cf1('0x2c')]=_0x2da534['dialPredictiveOptimization']||_0x2cf1('0x2d');this[_0x2cf1('0x2e')]=_0x2da534[_0x2cf1('0x2e')]||0.03;this['dialPredictiveInterval']=_0x2da534[_0x2cf1('0x2f')]||0x258;this['dialOriginateCallerIdName']=_0x2da534[_0x2cf1('0x30')]||_0x2cf1('0x31');this[_0x2cf1('0x32')]=_0x2da534[_0x2cf1('0x32')]||'anonymous';this[_0x2cf1('0x33')]=_0x2da534[_0x2cf1('0x33')]||0x1e;this[_0x2cf1('0x34')]=_0x2da534[_0x2cf1('0x34')]||'tTxX';this[_0x2cf1('0x35')]=_0x2da534['dialQueueTimeout']||0x3;this['dialQueueProject']=_0x2da534[_0x2cf1('0x36')]||undefined;this['dialCongestionMaxRetry']=_0x2da534[_0x2cf1('0x37')]||0x3;this[_0x2cf1('0x38')]=_0x2da534[_0x2cf1('0x38')]||0x96;this['dialBusyMaxRetry']=_0x2da534[_0x2cf1('0x39')]||0x3;this[_0x2cf1('0x3a')]=_0x2da534['dialBusyRetryFrequency']||0x96;this[_0x2cf1('0x3b')]=_0x2da534[_0x2cf1('0x3b')]||0x3;this[_0x2cf1('0x3c')]=_0x2da534[_0x2cf1('0x3c')]||0x96;this[_0x2cf1('0x3d')]=_0x2da534[_0x2cf1('0x3d')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x2da534['dialNoSuchNumberRetryFrequency']||0x96;this[_0x2cf1('0x3e')]=_0x2da534[_0x2cf1('0x3e')]||0x3;this[_0x2cf1('0x3f')]=_0x2da534[_0x2cf1('0x3f')]||0x96;this[_0x2cf1('0x40')]=_0x2da534[_0x2cf1('0x40')]||0x3;this['dialAbandonedRetryFrequency']=_0x2da534[_0x2cf1('0x41')]||0x96;this['dialMachineMaxRetry']=_0x2da534[_0x2cf1('0x42')]||0x3;this['dialMachineRetryFrequency']=_0x2da534[_0x2cf1('0x43')]||0x96;this[_0x2cf1('0x44')]=_0x2da534['dialAgentRejectMaxRetry']||0x3;this[_0x2cf1('0x45')]=_0x2da534[_0x2cf1('0x45')]||0x96;this[_0x2cf1('0x46')]=_0x2da534[_0x2cf1('0x46')]||0x3;this['dialGlobalMaxRetry']=_0x2da534[_0x2cf1('0x47')]||0x4;this[_0x2cf1('0x48')]=_0x2da534[_0x2cf1('0x48')]?_0x2da534[_0x2cf1('0x48')]:undefined;this[_0x2cf1('0x49')]=_0x2da534[_0x2cf1('0x49')]?_0x2da534['TrunkBackup']:undefined;this['dialPrefix']=_0x2da534[_0x2cf1('0x4a')]||undefined;this['Interval']=_0x2da534[_0x2cf1('0x4b')]?_0x2da534[_0x2cf1('0x4b')]:undefined;this[_0x2cf1('0x4c')]=_0x2da534[_0x2cf1('0x4c')]||_0x2cf1('0x4d');this[_0x2cf1('0x4e')]=_0x2da534['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x2cf1('0x4f')]=_0x2da534[_0x2cf1('0x4f')]||undefined;this[_0x2cf1('0x50')]=strategy[_0x2da534[_0x2cf1('0x50')]];this[_0x2cf1('0x51')]=!![];this[_0x2cf1('0x52')]=_0x2da534['dialAMDActive']||![];this[_0x2cf1('0x53')]=_0x2da534[_0x2cf1('0x53')];this[_0x2cf1('0x54')]=_0x2da534['dialAMDGreeting'];this[_0x2cf1('0x55')]=_0x2da534[_0x2cf1('0x55')];this[_0x2cf1('0x56')]=_0x2da534['dialAMDTotalAnalysisTime'];this[_0x2cf1('0x57')]=_0x2da534['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x2da534[_0x2cf1('0x58')];this['dialAMDMaximumNumberOfWords']=_0x2da534[_0x2cf1('0x59')];this[_0x2cf1('0x5a')]=_0x2da534[_0x2cf1('0x5a')];this[_0x2cf1('0x5b')]=_0x2da534['dialAMDMaximumWordLength'];this[_0x2cf1('0x5c')]=0x0;this[_0x2cf1('0x5d')]=0x0;this[_0x2cf1('0x5e')]=_0x2da534[_0x2cf1('0x5e')];this[_0x2cf1('0x5f')]=0x0;this[_0x2cf1('0x60')]=0x0;this[_0x2cf1('0x61')]=0x0;this['outboundBusyCallsDay']=0x0;this[_0x2cf1('0x62')]=0x0;this[_0x2cf1('0x63')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0x2cf1('0x64')]=0x0;this[_0x2cf1('0x65')]=0x0;this[_0x2cf1('0x66')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x2cf1('0x67')]=0x0;this['outboundReCallsDay']=0x0;this[_0x2cf1('0x68')]=0x0;this[_0x2cf1('0x69')]=undefined;this['startPredictive']=undefined;this[_0x2cf1('0x6a')]=undefined;this[_0x2cf1('0x6b')]=1.05;this[_0x2cf1('0x6c')]=0x0;this[_0x2cf1('0x6d')]=0x0;this[_0x2cf1('0x6e')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x2cf1('0x6f')]=0x0;this[_0x2cf1('0x70')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0x2cf1('0x71')]=0x0;this[_0x2cf1('0x72')]=_0x2da534[_0x2cf1('0x73')]||0x14;this['predictiveIntervalMinThreshold']=_0x2da534[_0x2cf1('0x73')]||0xa;this[_0x2cf1('0x74')]=0x0;this[_0x2cf1('0x75')]=0x0;this[_0x2cf1('0x76')]=0x1;this[_0x2cf1('0x77')]=0x0;this['erlangCallToSecond']=0x0;this[_0x2cf1('0x78')]=0x0;this[_0x2cf1('0x79')]=0x0;this[_0x2cf1('0x7a')]=_0x2da534[_0x2cf1('0x7a')]||0x1e;this[_0x2cf1('0x7b')]=_0x2da534['dialRecallInQueue']||![];this[_0x2cf1('0x7c')]=!!_0x2da534[_0x2cf1('0x7c')]||![];this['dialPreviewRecallmeReminder']=!!_0x2da534['dialPreviewRecallmeReminder']||![];this[_0x2cf1('0x7d')]=_0x2da534[_0x2cf1('0x7d')]||undefined;this[_0x2cf1('0x7e')]=_0x2da534[_0x2cf1('0x7e')]||![];this[_0x2cf1('0x7f')]=_0x2da534[_0x2cf1('0x7f')]||![];this[_0x2cf1('0xa')]=monitorFormat[_0x2da534[_0x2cf1('0xa')]]?monitorFormat[_0x2da534[_0x2cf1('0xa')]]:undefined;this[_0x2cf1('0x80')]=_0x2da534[_0x2cf1('0x80')]||![];this[_0x2cf1('0x81')]=_0x2da534[_0x2cf1('0x81')]?_0x2da534['mandatoryDispositionPause']:undefined;this[_0x2cf1('0x82')]=![];}module[_0x2cf1('0x83')]=VoiceQueue;
\ No newline at end of file
index 176e64e..d6a0519 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0c3=['total','name','strategy','abandoned','busy','invalid','notInUse','ringInUse','unavailable','unknown','unmanaged','type','pTalking','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','message','statusMessage','Trunk','active','callerid','prototype','onHold','loggedin','callers','length','online','status','booked','exten','xcally-motion-preview','compareToInboundQueue','some','compareToOutboundQueue','updateReportFromOutboundQueue','preview','exports','available','loggedInDb','paused','ringing','talking','waiting','answered','inUse','loggedIn','outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','sumBillable','sumDuration'];(function(_0x43aa34,_0xffb4bc){var _0x2da2ad=function(_0x2a769){while(--_0x2a769){_0x43aa34['push'](_0x43aa34['shift']());}};_0x2da2ad(++_0xffb4bc);}(_0xe0c3,0xea));var _0x3e0c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe0c3[_0x321bb2];return _0x9c12ed;};'use strict';var INBOUND_COUNTERS=[_0x3e0c('0x0'),'loggedIn',_0x3e0c('0x1'),_0x3e0c('0x2'),_0x3e0c('0x3'),_0x3e0c('0x4'),_0x3e0c('0x5')];var OUTBOUND_COUNTERS=[_0x3e0c('0x0'),_0x3e0c('0x6'),_0x3e0c('0x7'),_0x3e0c('0x8'),'loggedInDb','originated',_0x3e0c('0x9'),_0x3e0c('0xa'),_0x3e0c('0xb'),_0x3e0c('0xc'),_0x3e0c('0xd'),_0x3e0c('0xe'),_0x3e0c('0xf'),_0x3e0c('0x10'),_0x3e0c('0x11'),_0x3e0c('0x12'),_0x3e0c('0x2'),'pTalking','talking',_0x3e0c('0x13'),_0x3e0c('0x14'),_0x3e0c('0x15'),_0x3e0c('0x5')];function VoiceQueueSummary(_0x1cee70){this['id']=_0x1cee70['id'];this[_0x3e0c('0x16')]=_0x1cee70[_0x3e0c('0x16')];this['strategy']=_0x1cee70[_0x3e0c('0x17')];this['abandoned']=_0x1cee70[_0x3e0c('0x18')]||0x0;this[_0x3e0c('0x6')]=_0x1cee70['answered']||0x0;this[_0x3e0c('0x0')]=_0x1cee70[_0x3e0c('0x0')]||0x0;this[_0x3e0c('0x19')]=_0x1cee70[_0x3e0c('0x19')]||0x0;this[_0x3e0c('0x7')]=_0x1cee70[_0x3e0c('0x7')]||0x0;this[_0x3e0c('0x1a')]=_0x1cee70[_0x3e0c('0x1a')]||0x0;this[_0x3e0c('0x8')]=_0x1cee70[_0x3e0c('0x8')]||0x0;this[_0x3e0c('0x1')]=_0x1cee70[_0x3e0c('0x1')]||0x0;this['onHold']=_0x1cee70['onHold']||0x0;this[_0x3e0c('0x1b')]=_0x1cee70[_0x3e0c('0x1b')]||0x0;this[_0x3e0c('0x2')]=_0x1cee70[_0x3e0c('0x2')]||0x0;this[_0x3e0c('0x3')]=_0x1cee70[_0x3e0c('0x3')]||0x0;this['ringInUse']=_0x1cee70[_0x3e0c('0x1c')];this[_0x3e0c('0x13')]=_0x1cee70[_0x3e0c('0x13')];this['sumDuration']=_0x1cee70[_0x3e0c('0x14')];this['sumHoldTime']=_0x1cee70['sumHoldTime']||0x0;this[_0x3e0c('0x4')]=_0x1cee70[_0x3e0c('0x4')]||0x0;this[_0x3e0c('0x15')]=_0x1cee70[_0x3e0c('0x15')]||0x0;this['type']=_0x1cee70['type'];this[_0x3e0c('0x1d')]=_0x1cee70['unavailable']||0x0;this['unknown']=_0x1cee70[_0x3e0c('0x1e')]||0x0;this[_0x3e0c('0x1f')]=_0x1cee70[_0x3e0c('0x1f')]||0x0;this['waiting']=_0x1cee70[_0x3e0c('0x5')]||0x0;if(_0x1cee70[_0x3e0c('0x20')]==='outbound'){this[_0x3e0c('0x21')]=_0x1cee70[_0x3e0c('0x21')]||0x0;this[_0x3e0c('0x22')]=_0x1cee70[_0x3e0c('0x22')];this['dialMethod']=_0x1cee70[_0x3e0c('0x23')];this[_0x3e0c('0x24')]=_0x1cee70[_0x3e0c('0x24')];this[_0x3e0c('0x25')]=_0x1cee70['dialOriginateCallerIdNumber'];this[_0x3e0c('0x26')]=_0x1cee70['dialOriginateTimeout'];this['dialPrefix']=_0x1cee70[_0x3e0c('0x27')];this[_0x3e0c('0x28')]=_0x1cee70['temp'];this[_0x3e0c('0x29')]=_0x1cee70[_0x3e0c('0x29')];this[_0x3e0c('0xa')]=_0x1cee70['outboundAnswerCallsDay'];this[_0x3e0c('0xb')]=_0x1cee70[_0x3e0c('0xb')];this['outboundBusyCallsDay']=_0x1cee70[_0x3e0c('0xc')];this[_0x3e0c('0xd')]=_0x1cee70[_0x3e0c('0xd')];this[_0x3e0c('0x2a')]=_0x1cee70['outboundDropCallsDayACS'];this[_0x3e0c('0x2b')]=_0x1cee70[_0x3e0c('0x2b')];this[_0x3e0c('0x2c')]=_0x1cee70['outboundDropCallsDayTimeout'];this[_0x3e0c('0xe')]=_0x1cee70[_0x3e0c('0xe')];this[_0x3e0c('0xf')]=_0x1cee70['outboundNoSuchCallsDay'];this[_0x3e0c('0x2d')]=_0x1cee70[_0x3e0c('0x2d')];this[_0x3e0c('0x10')]=_0x1cee70[_0x3e0c('0x10')];this[_0x3e0c('0x11')]=_0x1cee70[_0x3e0c('0x11')];this[_0x3e0c('0x12')]=_0x1cee70[_0x3e0c('0x12')];this[_0x3e0c('0x2e')]=_0x1cee70[_0x3e0c('0x2e')];this[_0x3e0c('0x2f')]=_0x1cee70[_0x3e0c('0x2f')];this[_0x3e0c('0x30')]=_0x1cee70[_0x3e0c('0x30')];this['predictiveIntervalDroppedCallsCallersExit']=_0x1cee70[_0x3e0c('0x31')];this[_0x3e0c('0x32')]=_0x1cee70[_0x3e0c('0x32')];this[_0x3e0c('0x33')]=_0x1cee70[_0x3e0c('0x33')];this[_0x3e0c('0x34')]=_0x1cee70[_0x3e0c('0x34')];this[_0x3e0c('0x35')]=_0x1cee70['predictiveIntervalHitRate'];this['predictiveIntervalMultiplicativeFactor']=_0x1cee70[_0x3e0c('0x36')];this[_0x3e0c('0x37')]=_0x1cee70[_0x3e0c('0x37')];this[_0x3e0c('0x38')]=_0x1cee70[_0x3e0c('0x38')];this[_0x3e0c('0x39')]=_0x1cee70['predictiveIntervalTotalCalls'];this[_0x3e0c('0x3a')]=_0x1cee70[_0x3e0c('0x3a')];this['erlangCalls']=_0x1cee70['erlangCalls'];this['erlangCallToSecond']=_0x1cee70[_0x3e0c('0x3b')];this[_0x3e0c('0x3c')]=_0x1cee70[_0x3e0c('0x3c')];this[_0x3e0c('0x3d')]=_0x1cee70[_0x3e0c('0x3d')];this[_0x3e0c('0x3e')]=_0x1cee70[_0x3e0c('0x3e')];this[_0x3e0c('0x3f')]=_0x1cee70[_0x3e0c('0x3f')];this[_0x3e0c('0x40')]=_0x1cee70[_0x3e0c('0x40')];this[_0x3e0c('0x41')]=_0x1cee70['statusMessage'];}if(_0x1cee70['Trunk']){this['Trunk']={'id':_0x1cee70[_0x3e0c('0x42')]['id'],'name':_0x1cee70[_0x3e0c('0x42')]['name'],'active':_0x1cee70['Trunk'][_0x3e0c('0x43')],'callerid':_0x1cee70[_0x3e0c('0x42')][_0x3e0c('0x44')]};}}VoiceQueueSummary[_0x3e0c('0x45')]['createReport']=function(_0x2e562f,_0x363205,_0x81da81,_0x12cf58){this[_0x3e0c('0x1')]=0x0;this['talking']=0x0;this[_0x3e0c('0x2')]=0x0;this['unknown']=0x0;this[_0x3e0c('0x1b')]=0x0;this[_0x3e0c('0x7')]=0x0;this['busy']=0x0;this['invalid']=0x0;this[_0x3e0c('0x1d')]=0x0;this[_0x3e0c('0x3')]=0x0;this['ringInUse']=0x0;this[_0x3e0c('0x46')]=0x0;if(_0x81da81){if(_0x81da81[_0x3e0c('0x0')]){this[_0x3e0c('0x0')]=Number(_0x81da81[_0x3e0c('0x0')]);}if(_0x81da81[_0x3e0c('0x47')]){this[_0x3e0c('0x8')]=Number(_0x81da81['loggedin']);}if(_0x81da81[_0x3e0c('0x48')]){this[_0x3e0c('0x5')]=Number(_0x81da81[_0x3e0c('0x48')]);}}for(var _0x301c07=0x0;_0x301c07<_0x2e562f[_0x3e0c('0x49')];_0x301c07++){var _0x1ad20d=_0x363205['SIP/'+_0x2e562f[_0x301c07][_0x3e0c('0x16')]];if(_0x1ad20d&&_0x1ad20d[_0x3e0c('0x4a')]){this[_0x3e0c('0x1')]+=0x1;}if(_0x2e562f[_0x301c07]['incall']==='1'){this[_0x3e0c('0x4')]+=0x1;}if(_0x2e562f[_0x301c07][_0x3e0c('0x2')]==='1'&&!['2','7','8']['includes'](_0x2e562f[_0x301c07][_0x3e0c('0x4b')])){this[_0x3e0c('0x2')]+=0x1;}switch(_0x2e562f[_0x301c07][_0x3e0c('0x4b')]){case'0':this['unknown']+=0x1;break;case'1':this[_0x3e0c('0x1b')]+=0x1;break;case'2':this[_0x3e0c('0x7')]+=0x1;break;case'3':this[_0x3e0c('0x19')]+=0x1;break;case'4':this[_0x3e0c('0x1a')]+=0x1;break;case'5':this[_0x3e0c('0x1d')]+=0x1;break;case'6':this[_0x3e0c('0x3')]+=0x1;break;case'7':this[_0x3e0c('0x1c')]+=0x1;break;case'8':this[_0x3e0c('0x46')]+=0x1;break;}}if(this[_0x3e0c('0x23')]===_0x3e0c('0x4c')){var _0x1b0432=Object['keys'](_0x12cf58);for(var _0x20c9df=0x0;_0x20c9df<_0x1b0432['length'];_0x20c9df++){var _0x4b2062=_0x1b0432[_0x20c9df];var _0x2ef425=_0x12cf58[_0x4b2062];if(_0x2ef425['queue']===this[_0x3e0c('0x16')]&&_0x2ef425[_0x3e0c('0x20')]==='dialer'&&_0x2ef425[_0x3e0c('0x4d')]===_0x3e0c('0x4e')){this['talking']+=0x1;}}if(this[_0x3e0c('0x4')]>this[_0x3e0c('0x7')]){this[_0x3e0c('0x4')]=this[_0x3e0c('0x7')];}this[_0x3e0c('0x21')]=0x0;}return this;};VoiceQueueSummary[_0x3e0c('0x45')][_0x3e0c('0x4f')]=function(_0x436223){var _0x1e6fcb=![];if(_0x436223){_0x1e6fcb=INBOUND_COUNTERS[_0x3e0c('0x50')](function(_0x4d0f77){return this[_0x4d0f77]!==_0x436223[_0x4d0f77];},this);}return _0x1e6fcb;};VoiceQueueSummary[_0x3e0c('0x45')][_0x3e0c('0x51')]=function(_0x30af1d){var _0x39acf6=![];var _0x1a2cf2=![];var _0x14299c=![];if(_0x30af1d){_0x39acf6=this[_0x3e0c('0x23')]!==_0x30af1d[_0x3e0c('0x23')]||this[_0x3e0c('0x22')]!==_0x30af1d[_0x3e0c('0x22')]||this[_0x3e0c('0x40')]!==_0x30af1d[_0x3e0c('0x40')]||this[_0x3e0c('0x41')]!==_0x30af1d[_0x3e0c('0x41')];_0x1a2cf2=OUTBOUND_COUNTERS['some'](function(_0x32c0fd){return this[_0x32c0fd]!==_0x30af1d[_0x32c0fd];},this);if(this[_0x3e0c('0x42')]&&_0x30af1d[_0x3e0c('0x42')]){_0x14299c=this['Trunk'][_0x3e0c('0x16')]!==_0x30af1d[_0x3e0c('0x42')][_0x3e0c('0x16')]||this[_0x3e0c('0x42')][_0x3e0c('0x43')]!==_0x30af1d[_0x3e0c('0x42')][_0x3e0c('0x43')];}}return _0x39acf6||_0x1a2cf2||_0x14299c;};VoiceQueueSummary[_0x3e0c('0x45')][_0x3e0c('0x52')]=function(_0x2f9547){this['answered']=_0x2f9547[_0x3e0c('0x6')];this[_0x3e0c('0x40')]=_0x2f9547['message'];this[_0x3e0c('0x41')]=_0x2f9547['statusMessage'];this[_0x3e0c('0x3a')]=_0x2f9547[_0x3e0c('0x3a')];this[_0x3e0c('0x9')]=_0x2f9547[_0x3e0c('0x9')];this[_0x3e0c('0xa')]=_0x2f9547[_0x3e0c('0xa')];this[_0x3e0c('0xb')]=_0x2f9547[_0x3e0c('0xb')];this[_0x3e0c('0xc')]=_0x2f9547[_0x3e0c('0xc')];this[_0x3e0c('0xd')]=_0x2f9547[_0x3e0c('0xd')];this[_0x3e0c('0xe')]=_0x2f9547[_0x3e0c('0xe')];this[_0x3e0c('0xf')]=_0x2f9547[_0x3e0c('0xf')];this[_0x3e0c('0x10')]=_0x2f9547[_0x3e0c('0x10')];this[_0x3e0c('0x11')]=_0x2f9547[_0x3e0c('0x11')];this[_0x3e0c('0x12')]=_0x2f9547[_0x3e0c('0x12')];this[_0x3e0c('0x13')]=_0x2f9547[_0x3e0c('0x13')];this[_0x3e0c('0x14')]=_0x2f9547[_0x3e0c('0x14')];this['total']=_0x2f9547[_0x3e0c('0x15')];if(this[_0x3e0c('0x23')]===_0x3e0c('0x53')){this[_0x3e0c('0x21')]=_0x2f9547['pTalking'];}};module[_0x3e0c('0x54')]=VoiceQueueSummary;
\ No newline at end of file
+var _0x44e8=['originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','message','statusMessage','Trunk','active','callerid','prototype','loggedin','callers','length','SIP/','online','includes','status','booked','keys','queue','dialer','exten','xcally-motion-preview','compareToInboundQueue','some','compareToOutboundQueue','preview','exports','available','paused','ringing','talking','waiting','answered','inUse','loggedIn','loggedInDb','outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','sumBillable','sumDuration','total','name','strategy','abandoned','busy','invalid','onHold','notInUse','ringInUse','sumHoldTime','type','unavailable','unknown','unmanaged','outbound','pTalking','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls'];(function(_0x2511c6,_0x5859ca){var _0x10a803=function(_0x3fb3a2){while(--_0x3fb3a2){_0x2511c6['push'](_0x2511c6['shift']());}};_0x10a803(++_0x5859ca);}(_0x44e8,0xd7));var _0x844e=function(_0x436171,_0x2616fb){_0x436171=_0x436171-0x0;var _0x41fdd1=_0x44e8[_0x436171];return _0x41fdd1;};'use strict';var INBOUND_COUNTERS=[_0x844e('0x0'),'loggedIn','loggedInDb',_0x844e('0x1'),_0x844e('0x2'),_0x844e('0x3'),_0x844e('0x4')];var OUTBOUND_COUNTERS=['available',_0x844e('0x5'),_0x844e('0x6'),_0x844e('0x7'),_0x844e('0x8'),'originated',_0x844e('0x9'),_0x844e('0xa'),_0x844e('0xb'),_0x844e('0xc'),'outboundCongestionCallsDay',_0x844e('0xd'),_0x844e('0xe'),_0x844e('0xf'),_0x844e('0x10'),_0x844e('0x11'),_0x844e('0x1'),'pTalking',_0x844e('0x3'),_0x844e('0x12'),_0x844e('0x13'),_0x844e('0x14'),_0x844e('0x4')];function VoiceQueueSummary(_0x37b2a3){this['id']=_0x37b2a3['id'];this[_0x844e('0x15')]=_0x37b2a3['name'];this[_0x844e('0x16')]=_0x37b2a3[_0x844e('0x16')];this['abandoned']=_0x37b2a3[_0x844e('0x17')]||0x0;this[_0x844e('0x5')]=_0x37b2a3['answered']||0x0;this[_0x844e('0x0')]=_0x37b2a3[_0x844e('0x0')]||0x0;this[_0x844e('0x18')]=_0x37b2a3['busy']||0x0;this[_0x844e('0x6')]=_0x37b2a3[_0x844e('0x6')]||0x0;this[_0x844e('0x19')]=_0x37b2a3[_0x844e('0x19')]||0x0;this[_0x844e('0x7')]=_0x37b2a3[_0x844e('0x7')]||0x0;this[_0x844e('0x8')]=_0x37b2a3[_0x844e('0x8')]||0x0;this['onHold']=_0x37b2a3[_0x844e('0x1a')]||0x0;this['notInUse']=_0x37b2a3[_0x844e('0x1b')]||0x0;this['paused']=_0x37b2a3[_0x844e('0x1')]||0x0;this['ringing']=_0x37b2a3[_0x844e('0x2')]||0x0;this[_0x844e('0x1c')]=_0x37b2a3[_0x844e('0x1c')];this[_0x844e('0x12')]=_0x37b2a3[_0x844e('0x12')];this[_0x844e('0x13')]=_0x37b2a3[_0x844e('0x13')];this[_0x844e('0x1d')]=_0x37b2a3['sumHoldTime']||0x0;this[_0x844e('0x3')]=_0x37b2a3['talking']||0x0;this['total']=_0x37b2a3[_0x844e('0x14')]||0x0;this[_0x844e('0x1e')]=_0x37b2a3[_0x844e('0x1e')];this[_0x844e('0x1f')]=_0x37b2a3['unavailable']||0x0;this[_0x844e('0x20')]=_0x37b2a3[_0x844e('0x20')]||0x0;this['unmanaged']=_0x37b2a3[_0x844e('0x21')]||0x0;this[_0x844e('0x4')]=_0x37b2a3[_0x844e('0x4')]||0x0;if(_0x37b2a3[_0x844e('0x1e')]===_0x844e('0x22')){this[_0x844e('0x23')]=_0x37b2a3['pTalking']||0x0;this[_0x844e('0x24')]=_0x37b2a3[_0x844e('0x24')];this[_0x844e('0x25')]=_0x37b2a3[_0x844e('0x25')];this[_0x844e('0x26')]=_0x37b2a3['dialOriginateCallerIdName'];this[_0x844e('0x27')]=_0x37b2a3['dialOriginateCallerIdNumber'];this['dialOriginateTimeout']=_0x37b2a3[_0x844e('0x28')];this[_0x844e('0x29')]=_0x37b2a3[_0x844e('0x29')];this['temp']=_0x37b2a3[_0x844e('0x2a')];this[_0x844e('0x2b')]=_0x37b2a3[_0x844e('0x2b')];this['outboundAnswerCallsDay']=_0x37b2a3[_0x844e('0xa')];this[_0x844e('0xb')]=_0x37b2a3[_0x844e('0xb')];this[_0x844e('0xc')]=_0x37b2a3[_0x844e('0xc')];this[_0x844e('0x2c')]=_0x37b2a3[_0x844e('0x2c')];this[_0x844e('0x2d')]=_0x37b2a3[_0x844e('0x2d')];this[_0x844e('0x2e')]=_0x37b2a3['outboundDropCallsDayCallersExit'];this[_0x844e('0x2f')]=_0x37b2a3[_0x844e('0x2f')];this[_0x844e('0xd')]=_0x37b2a3[_0x844e('0xd')];this[_0x844e('0xe')]=_0x37b2a3[_0x844e('0xe')];this[_0x844e('0x30')]=_0x37b2a3['outboundOriginateFailureCallsDay'];this[_0x844e('0xf')]=_0x37b2a3[_0x844e('0xf')];this[_0x844e('0x10')]=_0x37b2a3['outboundRejectCallsDay'];this[_0x844e('0x11')]=_0x37b2a3[_0x844e('0x11')];this['predictiveIntervalAnsweredCalls']=_0x37b2a3[_0x844e('0x31')];this[_0x844e('0x32')]=_0x37b2a3['predictiveIntervalAvgHoldtime'];this[_0x844e('0x33')]=_0x37b2a3[_0x844e('0x33')];this[_0x844e('0x34')]=_0x37b2a3[_0x844e('0x34')];this[_0x844e('0x35')]=_0x37b2a3[_0x844e('0x35')];this[_0x844e('0x36')]=_0x37b2a3['predictiveIntervalErlangCalls'];this[_0x844e('0x37')]=_0x37b2a3[_0x844e('0x37')];this[_0x844e('0x38')]=_0x37b2a3[_0x844e('0x38')];this[_0x844e('0x39')]=_0x37b2a3[_0x844e('0x39')];this[_0x844e('0x3a')]=_0x37b2a3[_0x844e('0x3a')];this[_0x844e('0x3b')]=_0x37b2a3[_0x844e('0x3b')];this[_0x844e('0x3c')]=_0x37b2a3['predictiveIntervalTotalCalls'];this['originated']=_0x37b2a3[_0x844e('0x3d')];this[_0x844e('0x3e')]=_0x37b2a3[_0x844e('0x3e')];this[_0x844e('0x3f')]=_0x37b2a3[_0x844e('0x3f')];this[_0x844e('0x40')]=_0x37b2a3[_0x844e('0x40')];this[_0x844e('0x41')]=_0x37b2a3[_0x844e('0x41')];this['startPredictive']=_0x37b2a3[_0x844e('0x42')];this['startProgressive']=_0x37b2a3[_0x844e('0x43')];this['message']=_0x37b2a3[_0x844e('0x44')];this['statusMessage']=_0x37b2a3[_0x844e('0x45')];}if(_0x37b2a3[_0x844e('0x46')]){this[_0x844e('0x46')]={'id':_0x37b2a3[_0x844e('0x46')]['id'],'name':_0x37b2a3[_0x844e('0x46')][_0x844e('0x15')],'active':_0x37b2a3[_0x844e('0x46')][_0x844e('0x47')],'callerid':_0x37b2a3[_0x844e('0x46')][_0x844e('0x48')]};}}VoiceQueueSummary[_0x844e('0x49')]['createReport']=function(_0x3ecb60,_0x39de35,_0x3eb5b9,_0x511c83){this['loggedInDb']=0x0;this[_0x844e('0x3')]=0x0;this[_0x844e('0x1')]=0x0;this[_0x844e('0x20')]=0x0;this['notInUse']=0x0;this['inUse']=0x0;this['busy']=0x0;this['invalid']=0x0;this[_0x844e('0x1f')]=0x0;this[_0x844e('0x2')]=0x0;this[_0x844e('0x1c')]=0x0;this[_0x844e('0x1a')]=0x0;if(_0x3eb5b9){if(_0x3eb5b9[_0x844e('0x0')]){this['available']=Number(_0x3eb5b9[_0x844e('0x0')]);}if(_0x3eb5b9['loggedin']){this['loggedIn']=Number(_0x3eb5b9[_0x844e('0x4a')]);}if(_0x3eb5b9[_0x844e('0x4b')]){this[_0x844e('0x4')]=Number(_0x3eb5b9[_0x844e('0x4b')]);}}for(var _0x55c938=0x0;_0x55c938<_0x3ecb60[_0x844e('0x4c')];_0x55c938++){var _0x46f258=_0x39de35[_0x844e('0x4d')+_0x3ecb60[_0x55c938]['name']];if(_0x46f258&&_0x46f258[_0x844e('0x4e')]){this[_0x844e('0x8')]+=0x1;}if(_0x3ecb60[_0x55c938]['incall']==='1'){this[_0x844e('0x3')]+=0x1;}if(_0x3ecb60[_0x55c938][_0x844e('0x1')]==='1'&&!['2','7','8'][_0x844e('0x4f')](_0x3ecb60[_0x55c938][_0x844e('0x50')])){this[_0x844e('0x1')]+=0x1;}switch(_0x3ecb60[_0x55c938][_0x844e('0x50')]){case'0':this['unknown']+=0x1;break;case'1':this[_0x844e('0x1b')]+=0x1;break;case'2':this[_0x844e('0x6')]+=0x1;break;case'3':this[_0x844e('0x18')]+=0x1;break;case'4':this[_0x844e('0x19')]+=0x1;break;case'5':this[_0x844e('0x1f')]+=0x1;break;case'6':this[_0x844e('0x2')]+=0x1;break;case'7':this[_0x844e('0x1c')]+=0x1;break;case'8':this[_0x844e('0x1a')]+=0x1;break;}}if(this[_0x844e('0x25')]===_0x844e('0x51')){var _0x4a6924=Object[_0x844e('0x52')](_0x511c83);for(var _0x694791=0x0;_0x694791<_0x4a6924[_0x844e('0x4c')];_0x694791++){var _0x510089=_0x4a6924[_0x694791];var _0xe74f8=_0x511c83[_0x510089];if(_0xe74f8[_0x844e('0x53')]===this[_0x844e('0x15')]&&_0xe74f8[_0x844e('0x1e')]===_0x844e('0x54')&&_0xe74f8[_0x844e('0x55')]===_0x844e('0x56')){this['talking']+=0x1;}}if(this[_0x844e('0x3')]>this[_0x844e('0x6')]){this[_0x844e('0x3')]=this[_0x844e('0x6')];}this[_0x844e('0x23')]=0x0;}return this;};VoiceQueueSummary[_0x844e('0x49')][_0x844e('0x57')]=function(_0x3acef5){var _0x202fbc=![];if(_0x3acef5){_0x202fbc=INBOUND_COUNTERS[_0x844e('0x58')](function(_0x3af2fe){return this[_0x3af2fe]!==_0x3acef5[_0x3af2fe];},this);}return _0x202fbc;};VoiceQueueSummary[_0x844e('0x49')][_0x844e('0x59')]=function(_0x5356e4){var _0x166466=![];var _0x3d4a20=![];var _0x5dca66=![];if(_0x5356e4){_0x166466=this[_0x844e('0x25')]!==_0x5356e4[_0x844e('0x25')]||this[_0x844e('0x24')]!==_0x5356e4['dialActive']||this[_0x844e('0x44')]!==_0x5356e4[_0x844e('0x44')]||this['statusMessage']!==_0x5356e4[_0x844e('0x45')];_0x3d4a20=OUTBOUND_COUNTERS[_0x844e('0x58')](function(_0x2e94ac){return this[_0x2e94ac]!==_0x5356e4[_0x2e94ac];},this);if(this[_0x844e('0x46')]&&_0x5356e4[_0x844e('0x46')]){_0x5dca66=this[_0x844e('0x46')][_0x844e('0x15')]!==_0x5356e4[_0x844e('0x46')][_0x844e('0x15')]||this[_0x844e('0x46')][_0x844e('0x47')]!==_0x5356e4[_0x844e('0x46')][_0x844e('0x47')];}}return _0x166466||_0x3d4a20||_0x5dca66;};VoiceQueueSummary[_0x844e('0x49')]['updateReportFromOutboundQueue']=function(_0x44d3de){this[_0x844e('0x5')]=_0x44d3de['answered'];this[_0x844e('0x44')]=_0x44d3de['message'];this[_0x844e('0x45')]=_0x44d3de[_0x844e('0x45')];this[_0x844e('0x3d')]=_0x44d3de['originated'];this['outboundAbandonedCallsDay']=_0x44d3de[_0x844e('0x9')];this[_0x844e('0xa')]=_0x44d3de[_0x844e('0xa')];this[_0x844e('0xb')]=_0x44d3de[_0x844e('0xb')];this['outboundBusyCallsDay']=_0x44d3de[_0x844e('0xc')];this[_0x844e('0x2c')]=_0x44d3de[_0x844e('0x2c')];this[_0x844e('0xd')]=_0x44d3de['outboundNoAnswerCallsDay'];this[_0x844e('0xe')]=_0x44d3de[_0x844e('0xe')];this[_0x844e('0xf')]=_0x44d3de['outboundReCallsDay'];this['outboundRejectCallsDay']=_0x44d3de[_0x844e('0x10')];this[_0x844e('0x11')]=_0x44d3de[_0x844e('0x11')];this['sumBillable']=_0x44d3de['sumBillable'];this[_0x844e('0x13')]=_0x44d3de[_0x844e('0x13')];this[_0x844e('0x14')]=_0x44d3de['total'];if(this[_0x844e('0x25')]===_0x844e('0x5a')){this[_0x844e('0x23')]=_0x44d3de['pTalking'];}};module[_0x844e('0x5b')]=VoiceQueueSummary;
\ No newline at end of file
index 7d39606..f6d8867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe88a=['Configurations','exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x29f80e,_0x9027ff){var _0x5c7eaa=function(_0x48ec7c){while(--_0x48ec7c){_0x29f80e['push'](_0x29f80e['shift']());}};_0x5c7eaa(++_0x9027ff);}(_0xe88a,0xc6));var _0xae88=function(_0x5bbd57,_0x5a7ea0){_0x5bbd57=_0x5bbd57-0x0;var _0x54b719=_0xe88a[_0x5bbd57];return _0x54b719;};'use strict';function VtigerAccount(_0x136223){this['id']=_0x136223['id']||0x0;this[_0xae88('0x0')]=_0x136223['name']||'';this[_0xae88('0x1')]=_0x136223[_0xae88('0x1')]||'';this['accessKey']=_0x136223[_0xae88('0x2')]||'';this[_0xae88('0x3')]=_0x136223[_0xae88('0x3')]||'';this[_0xae88('0x4')]=_0x136223[_0xae88('0x4')]||'';this['Configurations']=_0x136223[_0xae88('0x5')]||{};}module[_0xae88('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0xb601=['accessKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x860d3f,_0x1414af){var _0x5b6019=function(_0x51bfdf){while(--_0x51bfdf){_0x860d3f['push'](_0x860d3f['shift']());}};_0x5b6019(++_0x1414af);}(_0xb601,0xc2));var _0x1b60=function(_0x7c4840,_0x43dc5c){_0x7c4840=_0x7c4840-0x0;var _0x1a19a5=_0xb601[_0x7c4840];return _0x1a19a5;};'use strict';function VtigerAccount(_0x408ed6){this['id']=_0x408ed6['id']||0x0;this[_0x1b60('0x0')]=_0x408ed6[_0x1b60('0x0')]||'';this['username']=_0x408ed6[_0x1b60('0x1')]||'';this[_0x1b60('0x2')]=_0x408ed6[_0x1b60('0x2')]||'';this[_0x1b60('0x3')]=_0x408ed6[_0x1b60('0x3')]||'';this['serverUrl']=_0x408ed6[_0x1b60('0x4')]||'';this['Configurations']=_0x408ed6[_0x1b60('0x5')]||{};}module[_0x1b60('0x6')]=VtigerAccount;
\ No newline at end of file
index fb10bac..ccfc6e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6deb=['name','username','password','token','remoteUri','authType','type','serverUrl','Configurations','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6deb,0xaa));var _0xb6de=function(_0x26702f,_0x494b96){_0x26702f=_0x26702f-0x0;var _0x64a289=_0x6deb[_0x26702f];return _0x64a289;};'use strict';function ZendeskAccount(_0x443781){this['id']=_0x443781['id']||0x0;this[_0xb6de('0x0')]=_0x443781[_0xb6de('0x0')]||'';this[_0xb6de('0x1')]=_0x443781[_0xb6de('0x1')]||'';this[_0xb6de('0x2')]=_0x443781['password']||'';this[_0xb6de('0x3')]=_0x443781[_0xb6de('0x3')]||'';this[_0xb6de('0x4')]=_0x443781['remoteUri']||'';this[_0xb6de('0x5')]=_0x443781[_0xb6de('0x5')]||'';this[_0xb6de('0x6')]=_0x443781['type']||'integrationTab';this[_0xb6de('0x7')]=_0x443781['serverUrl']||'';this[_0xb6de('0x8')]=_0x443781[_0xb6de('0x8')]||{};}module[_0xb6de('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0xce15=['remoteUri','authType','type','integrationTab','serverUrl','name','username','password'];(function(_0x3409ae,_0x11e373){var _0x1dd163=function(_0x1a7d98){while(--_0x1a7d98){_0x3409ae['push'](_0x3409ae['shift']());}};_0x1dd163(++_0x11e373);}(_0xce15,0x8d));var _0x5ce1=function(_0x22a028,_0x5bb05e){_0x22a028=_0x22a028-0x0;var _0x3184d4=_0xce15[_0x22a028];return _0x3184d4;};'use strict';function ZendeskAccount(_0x18edc3){this['id']=_0x18edc3['id']||0x0;this[_0x5ce1('0x0')]=_0x18edc3[_0x5ce1('0x0')]||'';this[_0x5ce1('0x1')]=_0x18edc3[_0x5ce1('0x1')]||'';this[_0x5ce1('0x2')]=_0x18edc3[_0x5ce1('0x2')]||'';this['token']=_0x18edc3['token']||'';this['remoteUri']=_0x18edc3[_0x5ce1('0x3')]||'';this[_0x5ce1('0x4')]=_0x18edc3[_0x5ce1('0x4')]||'';this['type']=_0x18edc3[_0x5ce1('0x5')]||_0x5ce1('0x6');this[_0x5ce1('0x7')]=_0x18edc3[_0x5ce1('0x7')]||'';this['Configurations']=_0x18edc3['Configurations']||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index 48b1ff2..512cb0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ebd=['zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','name','description','host'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x7ebd,0x1b5));var _0xd7eb=function(_0x338337,_0x22fa27){_0x338337=_0x338337-0x0;var _0x3580c4=_0x7ebd[_0x338337];return _0x3580c4;};'use strict';function ZohoAccount(_0x1ad935){this['id']=_0x1ad935['id']||0x0;this['name']=_0x1ad935[_0xd7eb('0x0')]||'';this[_0xd7eb('0x1')]=_0x1ad935[_0xd7eb('0x1')]||'';this[_0xd7eb('0x2')]=_0x1ad935[_0xd7eb('0x2')]||'';this[_0xd7eb('0x3')]=_0x1ad935[_0xd7eb('0x3')]||'';this[_0xd7eb('0x4')]=_0x1ad935[_0xd7eb('0x4')]||'';this[_0xd7eb('0x5')]=_0x1ad935[_0xd7eb('0x5')]||'';this['serverUrl']=_0x1ad935[_0xd7eb('0x6')]||'';this[_0xd7eb('0x7')]=_0x1ad935[_0xd7eb('0x7')]||'';this[_0xd7eb('0x8')]=_0x1ad935[_0xd7eb('0x8')]||'';this['Configurations']=_0x1ad935[_0xd7eb('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0xa156=['code','refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret'];(function(_0x26425a,_0x1b4d6f){var _0x12802a=function(_0x5db8a7){while(--_0x5db8a7){_0x26425a['push'](_0x26425a['shift']());}};_0x12802a(++_0x1b4d6f);}(_0xa156,0x176));var _0x6a15=function(_0x31a30a,_0x1c635e){_0x31a30a=_0x31a30a-0x0;var _0x2c2146=_0xa156[_0x31a30a];return _0x2c2146;};'use strict';function ZohoAccount(_0x351dbf){this['id']=_0x351dbf['id']||0x0;this[_0x6a15('0x0')]=_0x351dbf['name']||'';this['description']=_0x351dbf[_0x6a15('0x1')]||'';this[_0x6a15('0x2')]=_0x351dbf[_0x6a15('0x2')]||'';this[_0x6a15('0x3')]=_0x351dbf[_0x6a15('0x3')]||'';this[_0x6a15('0x4')]=_0x351dbf[_0x6a15('0x4')]||'';this[_0x6a15('0x5')]=_0x351dbf[_0x6a15('0x5')]||'';this['serverUrl']=_0x351dbf['serverUrl']||'';this[_0x6a15('0x6')]=_0x351dbf[_0x6a15('0x6')]||'';this[_0x6a15('0x7')]=_0x351dbf['refreshToken']||'';this[_0x6a15('0x8')]=_0x351dbf[_0x6a15('0x8')]||{};}module[_0x6a15('0x9')]=ZohoAccount;
\ No newline at end of file
index 5e2a8e4..41e3a7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa456=['originatecalleridnum','originatecalleridname','getCaller','format','\x22%s\x22\x20<%s>','number','exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','type','campaigntype','dialAnswer','membername','name','channelAgent','calleridname','Contact','phone','lastName','active','calleridnum','scheduledat','countcongestionretry','countnoanswerretry','countbusyretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','countabandonedretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','Agent','VoiceQueueId'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xa456,0x142));var _0x6a45=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xa456[_0x36ed48];return _0x51c63a;};'use strict';var util=require(_0x6a45('0x0'));var _=require(_0x6a45('0x1'));var moment=require(_0x6a45('0x2'));function checkNameSurname(_0xd5464e,_0x587626,_0x3bfbe6){var _0x206f6b='';if(!_[_0x6a45('0x3')](_0x587626)&&'string'===typeof _0x587626){_0x206f6b+=_0x587626;}if(!_[_0x6a45('0x3')](_0x3bfbe6)&&_0x6a45('0x4')===typeof _0x3bfbe6){_0x206f6b+='\x20'+_0x3bfbe6;}if(_0x206f6b!==''){return _0x206f6b;}return _0xd5464e;}function Action(_0x1e5882,_0x14da6b,_0x4dfbfa,_0x25cf8d,_0x26bfc0){this[_0x6a45('0x5')]=_0x4dfbfa||undefined;this[_0x6a45('0x6')]=_0x1e5882['id'];this[_0x6a45('0x7')]=_0x14da6b['name'];this[_0x6a45('0x8')]=_0x14da6b['type'];this[_0x6a45('0x9')]=_0x6a45('0x7');this[_0x6a45('0xa')]=![];this[_0x6a45('0xb')]=_[_0x6a45('0x3')](_0x1e5882['Agent'])?undefined:_0x1e5882['Agent'][_0x6a45('0xc')];this[_0x6a45('0xd')]=this['membername']?util['format']('SIP/%s',this[_0x6a45('0xb')]):_0x25cf8d||undefined;this[_0x6a45('0xe')]=checkNameSurname(_0x1e5882[_0x6a45('0xf')][_0x6a45('0x10')],_0x1e5882[_0x6a45('0xf')]['firstName'],_0x1e5882['Contact'][_0x6a45('0x11')]);this[_0x6a45('0x12')]=_0x1e5882['active']||![];this[_0x6a45('0x13')]=_0x1e5882[_0x6a45('0x10')];this[_0x6a45('0x14')]=_0x1e5882[_0x6a45('0x14')];this['countbusyretry']=_0x1e5882['countbusyretry']||0x0;this['countcongestionretry']=_0x1e5882[_0x6a45('0x15')]||0x0;this[_0x6a45('0x16')]=_0x1e5882[_0x6a45('0x16')]||0x0;this['countglobal']=(_0x1e5882[_0x6a45('0x17')]||0x0)+(_0x1e5882[_0x6a45('0x15')]||0x0)+(_0x1e5882[_0x6a45('0x16')]||0x0)+(_0x1e5882['countnosuchnumberretry']||0x0)+(_0x1e5882['countdropretry']||0x0)+(_0x1e5882['countabandonedretry']||0x0)+(_0x1e5882[_0x6a45('0x18')]||0x0)+(_0x1e5882[_0x6a45('0x19')]||0x0);this['countnosuchnumberretry']=_0x1e5882[_0x6a45('0x1a')]||0x0;this[_0x6a45('0x1b')]=_0x1e5882['countdropretry']||0x0;this[_0x6a45('0x1c')]=_0x1e5882[_0x6a45('0x1c')]||0x0;this[_0x6a45('0x18')]=_0x1e5882[_0x6a45('0x18')]||0x0;this[_0x6a45('0x19')]=_0x1e5882['countagentrejectretry']||0x0;this['callback']=_0x1e5882[_0x6a45('0x1d')];this[_0x6a45('0x1e')]=_0x1e5882[_0x6a45('0x1e')];this[_0x6a45('0x1f')]=_0x1e5882[_0x6a45('0x1f')];this[_0x6a45('0x20')]=_0x1e5882[_0x6a45('0x20')];this[_0x6a45('0x21')]=_0x1e5882[_0x6a45('0x21')];this[_0x6a45('0x22')]=_0x1e5882[_0x6a45('0x22')];this[_0x6a45('0x23')]=_['isNil'](_0x1e5882[_0x6a45('0x24')])?_0x1e5882['UserId']:_0x1e5882[_0x6a45('0x24')]['id'];this[_0x6a45('0x25')]=_0x1e5882[_0x6a45('0x25')];this[_0x6a45('0x26')]='';this[_0x6a45('0x27')]='';}Action['prototype'][_0x6a45('0x28')]=function(){return util[_0x6a45('0x29')](_0x6a45('0x2a'),this[_0x6a45('0xe')],this[_0x6a45('0x2b')]);};module[_0x6a45('0x2c')]=Action;
\ No newline at end of file
+var _0x8e3f=['prototype','getCaller','format','\x22%s\x22\x20<%s>','number','util','lodash','moment','string','isNil','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','SIP/%s','calleridname','Contact','firstName','active','calleridnum','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x8e3f[_0x4a9fb1];return _0x348672;};'use strict';var util=require(_0xf8e3('0x0'));var _=require(_0xf8e3('0x1'));var moment=require(_0xf8e3('0x2'));function checkNameSurname(_0x4d334a,_0x3f3440,_0x292de5){var _0x3b07a5='';if(!_['isNil'](_0x3f3440)&&_0xf8e3('0x3')===typeof _0x3f3440){_0x3b07a5+=_0x3f3440;}if(!_[_0xf8e3('0x4')](_0x292de5)&&'string'===typeof _0x292de5){_0x3b07a5+='\x20'+_0x292de5;}if(_0x3b07a5!==''){return _0x3b07a5;}return _0x4d334a;}function Action(_0x35e88f,_0xb21f8d,_0x2621c5,_0x1ee9f3,_0x4e9e57){this[_0xf8e3('0x5')]=_0x2621c5||undefined;this[_0xf8e3('0x6')]=_0x35e88f['id'];this[_0xf8e3('0x7')]=_0xb21f8d[_0xf8e3('0x8')];this[_0xf8e3('0x9')]=_0xb21f8d[_0xf8e3('0x9')];this[_0xf8e3('0xa')]=_0xf8e3('0x7');this[_0xf8e3('0xb')]=![];this[_0xf8e3('0xc')]=_[_0xf8e3('0x4')](_0x35e88f[_0xf8e3('0xd')])?undefined:_0x35e88f['Agent'][_0xf8e3('0x8')];this[_0xf8e3('0xe')]=this[_0xf8e3('0xc')]?util['format'](_0xf8e3('0xf'),this[_0xf8e3('0xc')]):_0x1ee9f3||undefined;this[_0xf8e3('0x10')]=checkNameSurname(_0x35e88f[_0xf8e3('0x11')]['phone'],_0x35e88f[_0xf8e3('0x11')][_0xf8e3('0x12')],_0x35e88f[_0xf8e3('0x11')]['lastName']);this[_0xf8e3('0x13')]=_0x35e88f['active']||![];this[_0xf8e3('0x14')]=_0x35e88f[_0xf8e3('0x15')];this[_0xf8e3('0x16')]=_0x35e88f['scheduledat'];this['countbusyretry']=_0x35e88f[_0xf8e3('0x17')]||0x0;this[_0xf8e3('0x18')]=_0x35e88f[_0xf8e3('0x18')]||0x0;this[_0xf8e3('0x19')]=_0x35e88f[_0xf8e3('0x19')]||0x0;this[_0xf8e3('0x1a')]=(_0x35e88f[_0xf8e3('0x17')]||0x0)+(_0x35e88f[_0xf8e3('0x18')]||0x0)+(_0x35e88f[_0xf8e3('0x19')]||0x0)+(_0x35e88f[_0xf8e3('0x1b')]||0x0)+(_0x35e88f['countdropretry']||0x0)+(_0x35e88f[_0xf8e3('0x1c')]||0x0)+(_0x35e88f[_0xf8e3('0x1d')]||0x0)+(_0x35e88f[_0xf8e3('0x1e')]||0x0);this[_0xf8e3('0x1b')]=_0x35e88f[_0xf8e3('0x1b')]||0x0;this[_0xf8e3('0x1f')]=_0x35e88f[_0xf8e3('0x1f')]||0x0;this[_0xf8e3('0x1c')]=_0x35e88f['countabandonedretry']||0x0;this[_0xf8e3('0x1d')]=_0x35e88f[_0xf8e3('0x1d')]||0x0;this[_0xf8e3('0x1e')]=_0x35e88f[_0xf8e3('0x1e')]||0x0;this['callback']=_0x35e88f[_0xf8e3('0x20')];this['callbackuniqueid']=_0x35e88f[_0xf8e3('0x21')];this[_0xf8e3('0x22')]=_0x35e88f[_0xf8e3('0x22')];this[_0xf8e3('0x23')]=_0x35e88f[_0xf8e3('0x23')];this[_0xf8e3('0x24')]=_0x35e88f['ContactId'];this[_0xf8e3('0x25')]=_0x35e88f[_0xf8e3('0x25')];this[_0xf8e3('0x26')]=_[_0xf8e3('0x4')](_0x35e88f[_0xf8e3('0xd')])?_0x35e88f[_0xf8e3('0x26')]:_0x35e88f[_0xf8e3('0xd')]['id'];this[_0xf8e3('0x27')]=_0x35e88f['VoiceQueueId'];this[_0xf8e3('0x28')]='';this[_0xf8e3('0x29')]='';}Action[_0xf8e3('0x2a')][_0xf8e3('0x2b')]=function(){return util[_0xf8e3('0x2c')](_0xf8e3('0x2d'),this[_0xf8e3('0x10')],this[_0xf8e3('0x2e')]);};module['exports']=Action;
\ No newline at end of file
index 6bb1d40..530553a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','info','format','voice:queue:%s','name','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','originated','pTalking','available','CAMPAIGN_STATUS','INACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','dialMethod','booked','type','outbound','dialActive','setMessage','recallMe','clearZombieChannel','sequence','isNil','Queue','queue','originated:\x20','stringify','pick','UserId','VoiceQueueId','ListId','channel','message','No\x20such\x20channel','dialAnswer','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','size','getContactRecallMe','then','length','getDiff','scheduledat','Agent','voicePause','run','[RecallMe]','catch','logger2','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[getContactRecallMe]','IsNotLoggedIn','NO_AGENTS_LOGGED','isActive','isTrunkReachable','UNREACHABLE_TRUNK','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','cloneAction','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','activeContact','linkedid','idContact','incrementPreviewCounters','ANSWER','answertime','[syncHangup][talking][increment]','pTalking:\x20','custom:agentconnect','connect','acw','mandatoryDisposition','custom:agentConnectPreview','channelAgent','uniqueid','custom:agentcomplete','complete','outboundAnswerCallsDay','answered','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','sumBillable','[syncHangup][talking][decrement]','\x20Queue','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','unlockAgent','NOANSWER','countnoanswerretry','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','outboundCongestionCallsDay','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','swapAdditionalPhones','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','countmachineretry','cause-txt','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','outboundUnknownCallsDay','dialstatus','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','object','isUndefined','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','resolve','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','status','reachable','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','checkIsBlackList','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','Trunk','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','dialPrefix','trim','dialCutDigit','substring','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variables','variablesAction','Action','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','responsetime','response','rejected','Answer','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','syncHangupRequest','addVariable','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','../../../config/environment','preview','../../../config/logger','actionPreview','../ami','./rpcDb','./action','./util/util','../dialer/utils','redis','prototype','enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncDialEnd','syncNewExten'];(function(_0x4d1246,_0x32dbbc){var _0x3425cc=function(_0x312e48){while(--_0x312e48){_0x4d1246['push'](_0x4d1246['shift']());}};_0x3425cc(++_0x32dbbc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var uuid=require(_0x0a9e('0x2'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));var logger=require('../../../config/logger')(_0x0a9e('0x4'));var loggerAction=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var ami=require(_0x0a9e('0x7'));var rpcDb=require(_0x0a9e('0x8'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0x0a9e('0x9'));var ut=require(_0x0a9e('0xa'));var utils=require(_0x0a9e('0xb'));config['redis']=_['defaults'](config[_0x0a9e('0xc')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0xc')]));var Sequence=function(){};Sequence[_0x0a9e('0xd')][_0x0a9e('0xe')]=function(_0x3ab53f){this[_0x0a9e('0xf')]=this[_0x0a9e('0xf')]?this['tail']['finally'](_0x3ab53f):_0x3ab53f();};function Preview(_0x527cdd){this['sequence']=new Sequence();this[_0x0a9e('0x10')]=_0x527cdd[_0x0a9e('0x11')];this[_0x0a9e('0x12')]=_0x527cdd[_0x0a9e('0x12')];this[_0x0a9e('0x13')]={};this[_0x0a9e('0x14')]=_0x527cdd['agents'];this[_0x0a9e('0x15')]=0x0;ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x19'),this[_0x0a9e('0x1a')]['bind'](this));ami['on'](_0x0a9e('0x1b'),this['syncHangupRequest'][_0x0a9e('0x18')](this));ami['on']('dialend',this[_0x0a9e('0x1c')][_0x0a9e('0x18')](this));ami['on']('newexten',this[_0x0a9e('0x1d')]['bind'](this));ami['on'](_0x0a9e('0x1e'),this[_0x0a9e('0x1f')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x20'),this[_0x0a9e('0x21')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x22'),this[_0x0a9e('0x23')][_0x0a9e('0x18')](this));this[_0x0a9e('0x24')](this[_0x0a9e('0x10')]);}function emit(_0x105080,_0x4bb1e3,_0x2c3407){io['to'](_0x105080)[_0x0a9e('0x25')](_0x4bb1e3,_0x2c3407);}function emitVoiceQueueChannelRemove(_0x53682f){logger[_0x0a9e('0x26')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON['stringify'](_0x53682f));emit(util[_0x0a9e('0x27')](_0x0a9e('0x28'),_0x53682f[_0x0a9e('0x29')]),_0x0a9e('0x2a'),_0x53682f);io['emit'](_0x0a9e('0x2b'),_0x53682f);}function notSendMessagesQueue(_0x2fb0e4){if(_0x2fb0e4[_0x0a9e('0x2c')]){if(_0x2fb0e4[_0x0a9e('0x2d')]===0x0&&_0x2fb0e4[_0x0a9e('0x2e')]===0x0){_0x2fb0e4[_0x0a9e('0x2c')]=![];_0x2fb0e4[_0x0a9e('0x2f')]=0x0;_0x2fb0e4['paused']=0x0;_0x2fb0e4['message']=utils[_0x0a9e('0x30')][_0x0a9e('0x31')];ut[_0x0a9e('0x32')](_0x0a9e('0x33'),_0x2fb0e4['name']+_0x0a9e('0x34'));}else{_0x2fb0e4['message']=utils[_0x0a9e('0x30')]['DEACTIVATED'];ut[_0x0a9e('0x32')](_0x0a9e('0x33'),_0x2fb0e4[_0x0a9e('0x29')]+_0x0a9e('0x35'));}}}Preview[_0x0a9e('0xd')][_0x0a9e('0x24')]=function(){var _0x11c3b6=this;setInterval(function(){_0x11c3b6[_0x0a9e('0x36')]();},0x7cf);};Preview['prototype'][_0x0a9e('0x36')]=function(){var _0x468813=this[_0x0a9e('0x10')];this[_0x0a9e('0x15')]+=0x1;for(var _0x5c877d in _0x468813){if(_0x468813[_0x0a9e('0x37')](_0x5c877d)&&(_0x468813[_0x5c877d][_0x0a9e('0x38')]===_0x0a9e('0x4')||_0x468813[_0x5c877d][_0x0a9e('0x38')]===_0x0a9e('0x39'))&&_0x468813[_0x5c877d][_0x0a9e('0x3a')]===_0x0a9e('0x3b')){if(this[_0x0a9e('0x15')]>0x7){this[_0x0a9e('0x15')]=0x0;this['clearZombieChannels']();}}if(_0x468813[_0x0a9e('0x37')](_0x5c877d)&&_0x468813[_0x5c877d]['dialMethod']===_0x0a9e('0x4')&&_0x468813[_0x5c877d][_0x0a9e('0x3a')]===_0x0a9e('0x3b')){if(_0x468813[_0x5c877d][_0x0a9e('0x3c')]){this[_0x0a9e('0x3d')](_0x468813[_0x5c877d]);if(_0x468813[_0x5c877d]['dialPreviewAutoRecallMe'])this[_0x0a9e('0x3e')](_0x468813[_0x5c877d]);}else{notSendMessagesQueue(_0x468813[_0x5c877d]);}}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x3f')]=function(_0x2da5c0){var _0x2b45ea=this;this[_0x0a9e('0x40')][_0x0a9e('0xe')](function(){if(!_[_0x0a9e('0x41')](_0x2b45ea['actions'][_0x2da5c0])){loggerAction[_0x0a9e('0x26')]('[clearZombieChannels][talking]',_0x2da5c0,_0x0a9e('0x42'),_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')],_0x0a9e('0x44'),JSON['stringify'](_0x2b45ea[_0x0a9e('0x10')][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]][_0x0a9e('0x2d')]),'pTalking:\x20',JSON['stringify'](_0x2b45ea[_0x0a9e('0x10')][_0x2b45ea['actions'][_0x2da5c0][_0x0a9e('0x43')]][_0x0a9e('0x2e')]),JSON[_0x0a9e('0x45')](_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0]['dialAnswer']),JSON[_0x0a9e('0x45')](_[_0x0a9e('0x46')](_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0],['contactId',_0x0a9e('0x47'),_0x0a9e('0x48'),_0x0a9e('0x49')])));return ami['Action']({'action':'status','channel':_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x4a')]})['catch'](function(_0x2b814e){if(_0x2b814e[_0x0a9e('0x4b')]===_0x0a9e('0x4c')){setTimeout(function(){if(_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0]){ut['updateOriginated'](_0x2b45ea['campaignsPreview'][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]],'[clearZombieChannel]');if(_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x4d')]===!![]){ut[_0x0a9e('0x4e')](_0x2b45ea['campaignsPreview'][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]],_0x0a9e('0x4f'));ut[_0x0a9e('0x50')](_0x0a9e('0x51')+_0x2da5c0,_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]);}ut[_0x0a9e('0x50')](_0x0a9e('0x52')+_0x2da5c0,_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]);delete _0x2b45ea[_0x0a9e('0x13')][_0x2da5c0];}},0x2328);}});}});};Preview[_0x0a9e('0xd')][_0x0a9e('0x53')]=function(){var _0x37f6cc=this;loggerAction['info']('[action]',_[_0x0a9e('0x54')](this[_0x0a9e('0x13')]));for(var _0x405c8f in this[_0x0a9e('0x13')]){if(_0x37f6cc[_0x0a9e('0x13')][_0x0a9e('0x37')](_0x405c8f)){_0x37f6cc[_0x0a9e('0x3f')](_0x405c8f);}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x3e')]=function(_0x25c6e6){var _0x2c2cb0=this;rpcDb[_0x0a9e('0x55')](_0x25c6e6['id'],ut['agentReadyId'](this[_0x0a9e('0x14')]))[_0x0a9e('0x56')](function(_0xdd268f){if(!_[_0x0a9e('0x41')](_0xdd268f)){for(var _0x2e8caf=0x0;_0x2e8caf<_0xdd268f[_0x0a9e('0x57')];_0x2e8caf+=0x1){if(ut[_0x0a9e('0x58')](_0xdd268f[_0x2e8caf][_0x0a9e('0x59')])<_0x25c6e6['dialRecallMeTimeout']*0x3c){if(_0xdd268f[_0x2e8caf][_0x0a9e('0x5a')]&&!_0xdd268f[_0x2e8caf]['Agent'][_0x0a9e('0x5b')]){_0x2c2cb0[_0x0a9e('0x5c')](_0xdd268f[_0x2e8caf]['id'])[_0x0a9e('0x56')](ut['logger2'](_0x0a9e('0x5d')))[_0x0a9e('0x5e')](ut[_0x0a9e('0x5f')](_0x0a9e('0x5d')));}else{rpcDb[_0x0a9e('0x60')](_0xdd268f[_0x2e8caf]['id']);}}else{var _0x37be73=new Action(_0xdd268f[_0x2e8caf],_0x25c6e6);_0x37be73[_0x0a9e('0x61')]=moment()['format'](_0x0a9e('0x62'));_0x25c6e6[_0x0a9e('0x63')]+=0x1;ut[_0x0a9e('0x64')](_0x37be73,0x17,_0x0a9e('0x65'));if(_0x25c6e6[_0x0a9e('0x66')]){rpcDb[_0x0a9e('0x67')](ut[_0x0a9e('0x68')](_0xdd268f[_0x2e8caf]));rpcDb[_0x0a9e('0x69')](_0x37be73,_0x0a9e('0x6a'));}else{ut['logCustomer'](_0x37be73,0x16,_0x0a9e('0x6b'));rpcDb[_0x0a9e('0x69')](_0x37be73,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x37be73,'[HistoryRecallClose]');}}}}})[_0x0a9e('0x5e')](ut[_0x0a9e('0x5f')](_0x0a9e('0x6c')));};Preview[_0x0a9e('0xd')][_0x0a9e('0x3d')]=function(_0x30decb){_0x30decb[_0x0a9e('0x2c')]=!![];if(ut[_0x0a9e('0x6d')](_0x30decb['loggedIn'])){_0x30decb['message']=utils['CAMPAIGN_STATUS'][_0x0a9e('0x6e')];}else if(!ut[_0x0a9e('0x6f')](_0x30decb[_0x0a9e('0x3c')])){_0x30decb['message']=utils[_0x0a9e('0x30')][_0x0a9e('0x31')];}else if(!this['isTrunkReachable'](_0x30decb['Trunk'])){if(!this[_0x0a9e('0x70')](_0x30decb['TrunkBackup'])){_0x30decb[_0x0a9e('0x4b')]=utils['CAMPAIGN_STATUS'][_0x0a9e('0x71')];}else{_0x30decb[_0x0a9e('0x4b')]=utils[_0x0a9e('0x30')]['ACTIVE'];}}else{_0x30decb[_0x0a9e('0x4b')]=utils[_0x0a9e('0x30')]['ACTIVE'];}};Preview['prototype'][_0x0a9e('0x72')]=function(_0x3aedd0,_0x49c095,_0x145931){var _0x5ce9ac=this;var _0x211ef9=this['actions'][_0x49c095];var _0xe22ccc=this['campaignsPreview'][_0x211ef9['queue']];var _0x5df0ad;var _0x2da03c=![];var _0x47de4c=0x2;var _0x2f7092=0x3;if(_0xe22ccc){switch(_0x145931){case'1':_0xe22ccc[_0x0a9e('0x73')]+=0x1;_0x211ef9[_0x0a9e('0x74')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x0,_0x0a9e('0x77'));ami[_0x0a9e('0x25')]('custom:agentnosuchnumber',ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0x79')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0x7a'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'0',_0xe22ccc)[_0x0a9e('0x56')](function(_0x5d86e9){_0x2da03c=_0x5d86e9[_0x0a9e('0x7c')]==0x1;_0x47de4c=_0xe22ccc[_0x0a9e('0x7d')];_0x2f7092=_0xe22ccc['callAdditionalPhoneAfterMin'];if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc['dialGlobalMaxRetry']){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,'Global');rpcDb['createCustomerFinal'](_0x5df0ad,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x211ef9[_0x0a9e('0x74')]>=_0xe22ccc['dialNoSuchNumberMaxRetry']){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0x80'));}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,_0x0a9e('0x74'),_0xe22ccc[_0x0a9e('0x7d')]),_0x211ef9['unlockAgent'],_0x211ef9[_0x0a9e('0x83')]);}}delete this['actions'][_0x3aedd0[_0x0a9e('0x84')]];}else{_0x211ef9[_0x0a9e('0x74')]++;logger[_0x0a9e('0x26')]('actioncountonusuch',_0x211ef9[_0x0a9e('0x74')]);logger[_0x0a9e('0x26')]('id',_0x211ef9[_0x0a9e('0x85')]);_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9['idContact'],'field':{'countnosuchnumberretry':_0x211ef9[_0x0a9e('0x74')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0x87'):var _0x88dcbf=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));_0x211ef9['responsetime']=_0x88dcbf;_0x211ef9[_0x0a9e('0x88')]=_0x88dcbf;_0x211ef9[_0x0a9e('0x4d')]=!![];_0xe22ccc[_0x0a9e('0x2e')]+=0x1;logger['info'](_0x0a9e('0x89'),_0x211ef9['uniqueid'],'\x20Queue',_0xe22ccc[_0x0a9e('0x29')],_0x0a9e('0x8a'),_0xe22ccc[_0x0a9e('0x2e')]);ami[_0x0a9e('0x25')](_0x0a9e('0x8b'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0x8c'),this[_0x0a9e('0x10')][_0x211ef9[_0x0a9e('0x43')]]));if(_0xe22ccc[_0x0a9e('0x8d')]||_0xe22ccc[_0x0a9e('0x8e')]){ami[_0x0a9e('0x25')](_0x0a9e('0x8f'),{'queue':_0x211ef9[_0x0a9e('0x43')],'interface':_0x211ef9[_0x0a9e('0x90')],'uniqueid':_0x211ef9[_0x0a9e('0x91')]});}break;case'16':ami[_0x0a9e('0x25')](_0x0a9e('0x92'),ut['buildObj'](_0x211ef9,_0x0a9e('0x93'),this[_0x0a9e('0x10')][_0x211ef9[_0x0a9e('0x43')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x211ef9,_0x0a9e('0x93')));_0xe22ccc[_0x0a9e('0x94')]+=0x1;_0xe22ccc['total']+=0x1;_0xe22ccc[_0x0a9e('0x95')]+=0x1;ut[_0x0a9e('0x4e')](_0xe22ccc,_0x0a9e('0x96'));_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x4,'Answer');rpcDb['createCustomerHistory'](_0x211ef9,_0x0a9e('0x97'));rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0x98'));rpcDb[_0x0a9e('0x99')](_0x211ef9);_0xe22ccc[_0x0a9e('0x9a')]+=_0x211ef9[_0x0a9e('0x9b')];_0xe22ccc[_0x0a9e('0x9c')]+=_0x211ef9[_0x0a9e('0x9b')];logger['info'](_0x0a9e('0x9d'),_0x211ef9[_0x0a9e('0x91')],_0x0a9e('0x9e'),_0xe22ccc['name'],_0x0a9e('0x8a'),_0xe22ccc['pTalking']);delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;case'BUSY':_0xe22ccc[_0x0a9e('0x9f')]+=0x1;_0x211ef9[_0x0a9e('0xa0')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x5,_0x0a9e('0xa1'));_0x47de4c=_0xe22ccc[_0x0a9e('0xa2')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami[_0x0a9e('0x25')]('custom:agentbusy',ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xa4')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xa5'));_0x5ce9ac['verifyAdditionalPhones'](_0x211ef9,'5',_0xe22ccc)[_0x0a9e('0x56')](function(_0x3511c9){_0x2da03c=_0x3511c9[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xa8'));}else{if(_0x211ef9[_0x0a9e('0xa0')]>=_0xe22ccc[_0x0a9e('0xa9')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xa5'));}else{rpcDb[_0x0a9e('0x81')](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xa0'),_0xe22ccc[_0x0a9e('0xa2')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xa0')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countbusyretry':_0x211ef9[_0x0a9e('0xa0')]}})['then'](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0xab'):_0xe22ccc['outboundNoAnswerCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xac')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x3,'NoAnswer');_0x47de4c=_0xe22ccc[_0x0a9e('0xad')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];var _0x2d2286=ut[_0x0a9e('0xae')](_0x211ef9,_0xe22ccc);ami[_0x0a9e('0x25')](_0x0a9e('0xaf'),_0x2d2286);rpcDb[_0x0a9e('0x69')](_0x211ef9,'[callProgressDetectingCustomer][logNoAnswer]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'3',_0xe22ccc)[_0x0a9e('0x56')](function(_0x45c109){_0x2da03c=_0x45c109[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,'Global');rpcDb[_0x0a9e('0x7f')](_0x5df0ad,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x211ef9[_0x0a9e('0xac')]>=_0xe22ccc[_0x0a9e('0xb0')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xb1'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xac'),_0xe22ccc[_0x0a9e('0xad')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9['idContact'],'field':{'countnoanswerretry':_0x211ef9['countnoanswerretry']}})[_0x0a9e('0x56')](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});break;case'CONGESTION':_0xe22ccc[_0x0a9e('0xb2')]+=0x1;_0x211ef9[_0x0a9e('0xb3')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x8,_0x0a9e('0xb4'));_0x47de4c=_0xe22ccc['dialCongestionRetryFrequency'];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami['emit'](_0x0a9e('0xb5'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xb6')));rpcDb[_0x0a9e('0x69')](_0x211ef9,'[callProgressDetectingCustomer][logCongestion]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'8',_0xe22ccc)[_0x0a9e('0x56')](function(_0x1d4877){_0x2da03c=_0x1d4877['additional']==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xb7'));}else{if(_0x211ef9[_0x0a9e('0xb3')]>=_0xe22ccc[_0x0a9e('0xb8')]){rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xb9'));}else{rpcDb[_0x0a9e('0x81')](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xb3'),_0xe22ccc[_0x0a9e('0xa2')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xb3')]++;_0x5ce9ac['incrementPreviewCounters']({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countcongestionretry':_0x211ef9[_0x0a9e('0xb3')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0xbb'):_0xe22ccc[_0x0a9e('0xbc')]+=0x1;_0x211ef9[_0x0a9e('0xbd')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x14,_0x0a9e('0xbe'));_0x47de4c=_0xe22ccc[_0x0a9e('0xbf')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami[_0x0a9e('0x25')](_0x0a9e('0xc0'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xc1')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xc2'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'20',_0xe22ccc)[_0x0a9e('0x56')](function(_0x4989f9){_0x2da03c=_0x4989f9[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0x14,_0x0a9e('0xbe'));rpcDb['createCustomerFinal'](_0x5df0ad,_0x0a9e('0xc3'));}else{if(_0x211ef9[_0x0a9e('0xbd')]>=_0xe22ccc['dialAgentRejectMaxRetry']){rpcDb[_0x0a9e('0x7f')](_0x211ef9,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,_0x0a9e('0xbd'),_0xe22ccc[_0x0a9e('0xbf')]),_0x211ef9['unlockAgent'],_0x211ef9[_0x0a9e('0x83')]);}}}else{_0x211ef9['countnoanswerretry']++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9['countnoanswerretry']}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case'ABANDONED':_0xe22ccc['outboundAbandonedCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xc4')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0xb,_0x0a9e('0xc5'));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xc6'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'11',_0xe22ccc)[_0x0a9e('0x56')](function(_0x586510){_0x2da03c=_0x586510[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xc6'));}else{if(_0x211ef9['countabandonedetry']>=_0xe22ccc[_0x0a9e('0xc7')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xc6'));}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,'countabandonedretry',_0xe22ccc['dialAbandonedRetryFrequency']),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});break;case'18':_0xe22ccc['outboundUnknownCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xc8')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x12,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0['dialstatus']);ami['emit'](_0x0a9e('0xca'),ut[_0x0a9e('0x78')](_0x211ef9,'amd'));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xcb'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'18',_0xe22ccc)[_0x0a9e('0x56')](function(_0x2eb028){_0x2da03c=_0x2eb028['additional']==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0x12,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xcb'));}else{rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xcb'));}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac['incrementPreviewCounters']({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;case'19':_0xe22ccc[_0x0a9e('0xcc')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x13,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0[_0x0a9e('0xcd')]);ami[_0x0a9e('0x25')](_0x0a9e('0xca'),ut[_0x0a9e('0x78')](_0x211ef9,'amd'));rpcDb['createCustomerHistory'](_0x211ef9,_0x0a9e('0xce'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'18',_0xe22ccc)[_0x0a9e('0x56')](function(_0x2fea95){_0x2da03c=_0x2fea95[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb['createCustomerFinal'](_0x5df0ad,_0x0a9e('0xce'));}else{rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xce'));}}else{_0x211ef9['countnoanswerretry']++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})['then'](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;default:if(_0x211ef9[_0x0a9e('0x4d')]){ut[_0x0a9e('0x4e')](_0xe22ccc,_0x0a9e('0xcf'));ut[_0x0a9e('0x50')](_0x0a9e('0xd0')+_0xe22ccc[_0x0a9e('0x29')],_0x3aedd0);}_0xe22ccc[_0x0a9e('0xcc')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0xc,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0[_0x0a9e('0xcd')]);_0x47de4c=_0xe22ccc[_0x0a9e('0xbf')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];rpcDb['createCustomerHistory'](_0x211ef9,'[callProgressDetectingCustomer][logUnknown]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'20',_0xe22ccc)['then'](function(_0x1d999b){_0x2da03c=_0x1d999b[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xd1'));}delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];}else{_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});}});}if(!(_0x211ef9[_0x0a9e('0x4d')]&&_0x145931==='16')){ut[_0x0a9e('0xd2')](_0xe22ccc,'[callProgressDetectingCustomer]');logger[_0x0a9e('0x26')](_0x0a9e('0xd3'),_0x211ef9[_0x0a9e('0x91')],'\x20Queue',_0xe22ccc[_0x0a9e('0x29')],_0x0a9e('0x44'),_0xe22ccc[_0x0a9e('0x2d')]);}if(_0x145931!==_0x0a9e('0x87')){delete this[_0x0a9e('0x13')][_0x3aedd0['linkedid']];delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0xd4')]];}_0xe22ccc['queueSummaryCountersUpdated']=!![];}};Preview[_0x0a9e('0xd')][_0x0a9e('0xd5')]=function(_0x1f6f1c,_0x5822a7,_0x5c3b6f){if(_['isUndefined'](_0x5822a7)&&_0x0a9e('0xd6')!==typeof _0x5822a7){return;}if(_[_0x0a9e('0xd7')](_0x5c3b6f)&&'object'!==typeof _0x5c3b6f){return;}switch(_0x5c3b6f[_0x0a9e('0xd8')]){case'0':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x0,_0x0a9e('0x77'));rpcDb['createAgentHistory'](_0x1f6f1c,_0x0a9e('0xda'));break;case'3':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x3,_0x0a9e('0xdb'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xdd'));break;case'5':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x5,_0x0a9e('0xa1'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xde'));break;case'8':ut['logAgent'](_0x1f6f1c,0x8,_0x0a9e('0xb4'));rpcDb['createAgentHistory'](_0x1f6f1c,_0x0a9e('0xdf'));break;case'22':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x16,_0x0a9e('0xe0'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xe1'));break;default:ut[_0x0a9e('0xd9')](_0x1f6f1c,0xc,_0x5c3b6f['reason']);rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xdf'));}ut[_0x0a9e('0xd2')](_0x5822a7,_0x0a9e('0xe2'));logger['info'](_0x0a9e('0xe3'),_0x1f6f1c[_0x0a9e('0x91')],_0x0a9e('0x9e'),_0x5822a7[_0x0a9e('0x29')],_0x0a9e('0x44'),_0x5822a7[_0x0a9e('0x2d')]);delete this[_0x0a9e('0x13')][_0x1f6f1c[_0x0a9e('0x91')]];};Preview[_0x0a9e('0xd')][_0x0a9e('0x7b')]=function(_0x57f0ad,_0x2272bc,_0x88b25f){return cmHopperAdditionalPhone[_0x0a9e('0x7b')](_0x57f0ad,_0x2272bc,_0x88b25f)[_0x0a9e('0x5e')](logger[_0x0a9e('0x26')](_0x0a9e('0xe4')));};Preview[_0x0a9e('0xd')][_0x0a9e('0xba')]=function(_0x566b90,_0x3b581c,_0xd2391){return cmHopperAdditionalPhone[_0x0a9e('0xba')](_0x566b90,_0x3b581c,_0xd2391)['catch'](logger[_0x0a9e('0x26')](_0x0a9e('0xe5')));};Preview[_0x0a9e('0xd')][_0x0a9e('0x86')]=function(_0x370b5e){return Promise[_0x0a9e('0xe6')]()[_0x0a9e('0x56')](cmHopperAdditionalPhone[_0x0a9e('0x86')](_0x370b5e))[_0x0a9e('0x5e')](logger[_0x0a9e('0x26')]('[incrementPreviewCounters]\x20'));};Preview[_0x0a9e('0xd')][_0x0a9e('0xe7')]=function(_0x15a9ed,_0x3db98f,_0x2b624e,_0x3942fd,_0x5cb48d){var _0x382687=this;return new Promise(function(_0x4f854b,_0x5bd139){if(_['isNil'](_0x3db98f)||_[_0x0a9e('0x41')](_0x3db98f[_0x0a9e('0xe8')])||_[_0x0a9e('0x41')](_0x3db98f[_0x0a9e('0xe9')])||_['isNil'](_0x3db98f[_0x0a9e('0x48')])){_0x5bd139(ut[_0x0a9e('0x4b')](_0x0a9e('0xea'),_0x3942fd,_0x5cb48d));return;}var _0x1fdb10=uuid['v4']();var _0x2c8d1d=_0x382687['campaignsPreview'][_0x3db98f['Queue'][_0x0a9e('0x29')]];var _0x33bcb2=_0x2b624e?_0x382687[_0x0a9e('0x14')][_0x2b624e]['id']:undefined;_0x382687['actions'][_0x1fdb10]=new Action(_0x3db98f,_0x2c8d1d,_0x1fdb10,_0x2b624e,_0x33bcb2);var _0x319752=_0x382687[_0x0a9e('0x13')][_0x1fdb10];_0x319752[_0x0a9e('0xaa')]=_0x3942fd;_0x319752['activeContact']=_0x5cb48d;_0x319752[_0x0a9e('0xeb')]=_0x2b624e;if(_[_0x0a9e('0xec')](_0x15a9ed)){_0x382687[_0x0a9e('0xed')](_0x319752,_0x2c8d1d,_0x3db98f,_0x2b624e)['then'](function(_0x272291){logger[_0x0a9e('0x26')](_0x0a9e('0xee'),'Queue:\x20'+_0x319752['queue']+'\x20IdHopper:\x20'+_0x319752[_0x0a9e('0x85')],JSON[_0x0a9e('0x45')](_0x272291));ami[_0x0a9e('0x25')](_0x0a9e('0xef'),ut['buildObj'](_0x319752,_0x0a9e('0xf0'),_0x382687['campaignsPreview'][_0x319752[_0x0a9e('0x43')]]));_0x4f854b(ut[_0x0a9e('0x4b')](_0x0a9e('0xf1')));})['catch'](function(_0x33b4b3){ut[_0x0a9e('0x32')](_0x0a9e('0xf2'),_0x33b4b3);_0x5bd139(ut['message'](_0x0a9e('0xf3'),_0x3942fd,_0x5cb48d));});}else{_0x2c8d1d['outboundBlacklistCallsDay']+=0x1;ut[_0x0a9e('0xf4')](_0x319752);rpcDb['createHistory'](_0x319752,_0x0a9e('0xf5'));delete _0x382687['actions'][_0x1fdb10];_0x5bd139(ut[_0x0a9e('0x4b')](_0x0a9e('0xf6'),_0x3942fd,_0x5cb48d));}});};Preview[_0x0a9e('0xd')][_0x0a9e('0x70')]=function(_0x1e306c){return!_[_0x0a9e('0x41')](_0x1e306c)&&!_[_0x0a9e('0x41')](_0x1e306c['name'])&&!_[_0x0a9e('0x41')](_0x1e306c[_0x0a9e('0xf7')])&&_0x1e306c['active']&&!_[_0x0a9e('0x41')](this[_0x0a9e('0x12')][util['format'](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])])&&!_[_0x0a9e('0x41')](this['trunks'][util[_0x0a9e('0x27')](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')])&&(this[_0x0a9e('0x12')][util[_0x0a9e('0x27')](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')]===_0x0a9e('0xfa')||this['trunks'][util[_0x0a9e('0x27')]('SIP/%s',_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')]===_0x0a9e('0xfb'));};Preview[_0x0a9e('0xd')][_0x0a9e('0x5c')]=function(_0x2d45db,_0x5691ac){return this[_0x0a9e('0xfc')](_0x2d45db,_0x5691ac)[_0x0a9e('0x56')](function(_0x2977a7){return _['pick'](_0x2977a7,[_0x0a9e('0x4b')]);})[_0x0a9e('0x5e')](function(_0x4435d2){if(_0x4435d2[_0x0a9e('0xfd')]){rpcDb[_0x0a9e('0xfe')](_0x2d45db);}if(_0x4435d2[_0x0a9e('0xf7')]){rpcDb[_0x0a9e('0x60')](_0x2d45db);}throw _['pick'](_0x4435d2,[_0x0a9e('0x4b')]);});};Preview[_0x0a9e('0xd')][_0x0a9e('0xfc')]=function(_0x2ce3be,_0x3de77e){var _0x241404=this;var _0x8120e,_0x5d6a48;return rpcDb['getContactPreview'](_0x2ce3be)[_0x0a9e('0x56')](function(_0x3f507c){if(!_[_0x0a9e('0x41')](_0x3f507c[0x0])){_0x5d6a48=_0x3f507c[0x0][_0x0a9e('0xff')]?![]:!![];_0x8120e=_0x3f507c[0x0][_0x0a9e('0xff')]?!![]:![];_0x8120e=_0x3de77e?!![]:_0x8120e;}var _0x131da8=_0x241404[_0x0a9e('0x100')](_0x3f507c);if(_0x131da8['isValid']){rpcDb[_0x0a9e('0x101')](_[_0x0a9e('0x46')](_0x3f507c[0x0],[_0x0a9e('0x48'),_0x0a9e('0xe9')]))[_0x0a9e('0x56')](function(_0x3c6082){_0x241404[_0x0a9e('0xe7')](_0x3c6082,_0x3f507c[0x0],_0x3de77e,_0x5d6a48,_0x8120e)['then'](function(_0x311288){return _0x311288;})[_0x0a9e('0x5e')](function(_0x231826){throw _0x231826;});})['catch'](function(_0x2b8ad4){ut[_0x0a9e('0x32')](_0x0a9e('0x102'),_0x2b8ad4);throw ut[_0x0a9e('0x4b')]('Call\x20unsuccessful',_0x5d6a48,_0x8120e);});}else{throw ut[_0x0a9e('0x4b')](_0x131da8[_0x0a9e('0x4b')],_0x5d6a48,_0x8120e);}})[_0x0a9e('0x5e')](function(_0x93d953){ut[_0x0a9e('0x32')](_0x0a9e('0x103'),_0x93d953);throw ut[_0x0a9e('0x4b')](_0x0a9e('0x104'),![],!![]);});};Preview['prototype'][_0x0a9e('0x100')]=function(_0x266aa1){if(_[_0x0a9e('0x41')](_0x266aa1)||_[_0x0a9e('0xec')](_0x266aa1)||!_['isNil'](_0x266aa1[0x0]['Agent'])&&_[_0x0a9e('0x41')](_0x266aa1[0x0][_0x0a9e('0x5a')][_0x0a9e('0x29')])){ut['logger'](_0x0a9e('0x105'),_0x266aa1);return{'isValid':![],'message':_0x0a9e('0x106')};}var _0x4d8a67=this[_0x0a9e('0x10')][_0x266aa1[0x0]['Queue'][_0x0a9e('0x29')]];_0x4d8a67['message']=utils['CAMPAIGN_STATUS']['ACTIVE'];if(_[_0x0a9e('0x41')](_0x4d8a67)){ut[_0x0a9e('0x32')](_0x0a9e('0x107'),_0x4d8a67);return{'isValid':![],'message':_0x0a9e('0x108')};}if(!this[_0x0a9e('0x70')](_0x4d8a67[_0x0a9e('0x109')])){ut['logger'](_0x0a9e('0x10a'),_0x0a9e('0x10b')+_0x4d8a67[_0x0a9e('0x29')]+_0x0a9e('0x10c'));if(!this[_0x0a9e('0x70')](_0x4d8a67[_0x0a9e('0x10d')])){ut[_0x0a9e('0x32')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x4d8a67['name']+_0x0a9e('0x10e'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0x0a9e('0x6f')](_0x4d8a67[_0x0a9e('0x3c')])){ut[_0x0a9e('0x32')](_0x0a9e('0x10f'),_0x4d8a67[_0x0a9e('0x29')]+_0x0a9e('0x110'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x4d8a67[_0x0a9e('0x29')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x0a9e('0xd')]['execCall']=function(_0x38dceb,_0x5dc978,_0x550cbf,_0x26223f){var _0x4a7a3c=this;return new Promise(function(_0x24470a,_0x142e53){var _0xe1ab0d=_0x38dceb['uniqueid'];var _0x4152cd=_0x4a7a3c[_0x0a9e('0x70')](_0x5dc978[_0x0a9e('0x109')])?util['format']('SIP/%s/%s%s',_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x29')],_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x111')])?'':_0x5dc978[_0x0a9e('0x111')][_0x0a9e('0x112')]()||'',_0x5dc978[_0x0a9e('0x113')]>0x0?_0x550cbf[_0x0a9e('0xe9')][_0x0a9e('0x114')](_0x5dc978[_0x0a9e('0x113')]):_0x550cbf['phone']):util['format']('SIP/%s/%s%s',_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x10d')])?_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x29')]:_0x5dc978[_0x0a9e('0x10d')][_0x0a9e('0x29')],_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x111')])?'':_0x5dc978['dialPrefix']['trim']()||'',_0x5dc978[_0x0a9e('0x113')]>0x0?_0x550cbf[_0x0a9e('0xe9')]['substring'](_0x5dc978[_0x0a9e('0x113')]):_0x550cbf[_0x0a9e('0xe9')]);var _0x2e2280=_0x4a7a3c[_0x0a9e('0x70')](_0x5dc978[_0x0a9e('0x109')])?ut[_0x0a9e('0x115')](_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x116')],_0x5dc978[_0x0a9e('0x117')],_0x5dc978[_0x0a9e('0x118')]>0x0?ut[_0x0a9e('0x119')](_0x5dc978[_0x0a9e('0x11a')],_0x5dc978['dialRandomLastDigitCallerIdNumber']):_0x5dc978[_0x0a9e('0x11a')]):ut[_0x0a9e('0x115')](_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x10d')])?_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x116')]:_0x5dc978[_0x0a9e('0x10d')][_0x0a9e('0x116')],_0x5dc978[_0x0a9e('0x117')],_0x5dc978[_0x0a9e('0x118')]>0x0?ut[_0x0a9e('0x119')](_0x5dc978[_0x0a9e('0x11a')],_0x5dc978['dialRandomLastDigitCallerIdNumber']):_0x5dc978['dialOriginateCallerIdNumber']);if(_0x2e2280){_0x38dceb[_0x0a9e('0x11b')]=ut[_0x0a9e('0x11c')](_0x2e2280);_0x38dceb[_0x0a9e('0x11d')]=ut[_0x0a9e('0x11e')](_0x2e2280);}var _0x33359a=ut[_0x0a9e('0x11f')](_0x5dc978,_0x550cbf,_0x4152cd,_0x2e2280,_0xe1ab0d,_0x38dceb);var _0xa8b5de=utils['setXMDContactVariables'](_0x550cbf[_0x0a9e('0xe8')]);Object['assign'](_0x33359a,_0xa8b5de);_[_0x0a9e('0x120')](_0x38dceb,ut[_0x0a9e('0x121')](_0x33359a));_0x38dceb[_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));_0x5dc978[_0x0a9e('0x122')]=_0x33359a;var _0x465003=ut[_0x0a9e('0x123')](_0x38dceb,_0x5dc978,_0x33359a,_0x38dceb[_0x0a9e('0x83')],_0x26223f);return ami[_0x0a9e('0x124')](_0x465003)[_0x0a9e('0x56')](function(_0x8231e5){_0x5dc978[_0x0a9e('0x2d')]+=0x1;logger[_0x0a9e('0x26')](_0x0a9e('0x125'),_0xe1ab0d,_0x0a9e('0x9e'),_0x5dc978['name'],'originated:\x20',_0x5dc978[_0x0a9e('0x2d')]);_0x24470a(_0x8231e5);})[_0x0a9e('0x5e')](function(_0x52b365){ut['logAgent'](_0x38dceb,0xe,_0x0a9e('0x126'));rpcDb[_0x0a9e('0xdc')](_0x38dceb,_0x0a9e('0x127'));_0x142e53(_0x52b365);});});};Preview['prototype'][_0x0a9e('0x1d')]=function(_0x5b6447){if(this[_0x0a9e('0x13')][_0x5b6447['linkedid']]){this[_0x0a9e('0x13')][_0x5b6447['linkedid']][_0x0a9e('0x4a')]=_0x5b6447[_0x0a9e('0x4a')];}};Preview[_0x0a9e('0xd')]['syncOriginateResponse']=function(_0x316b51){var _0x497fda=this;var _0x505ffd=this[_0x0a9e('0x13')][_0x316b51[_0x0a9e('0x128')]];if(_0x505ffd){if(_0x505ffd[_0x0a9e('0xeb')]&&this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]]){ut[_0x0a9e('0x129')](_0x505ffd,this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]][_0x0a9e('0x29')],this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]]['id']);}var _0x98bf26=_[_0x0a9e('0x12a')](_0x505ffd);_0x98bf26[_0x0a9e('0x12b')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));var _0x310026=_0x497fda[_0x0a9e('0x10')][_0x505ffd[_0x0a9e('0x43')]];if(ut['isFailure'](_0x316b51[_0x0a9e('0x12c')])){if(_0x505ffd[_0x0a9e('0xaa')]){rpcDb[_0x0a9e('0xfe')](_0x505ffd[_0x0a9e('0x85')]);}if(_0x505ffd['activeContact']){rpcDb['disableContact'](_0x505ffd['idContact']);}ami[_0x0a9e('0x25')]('custom:agentringnoanswer',ut[_0x0a9e('0x78')](_0x505ffd,_0x0a9e('0x12d'),this[_0x0a9e('0x10')][_0x505ffd[_0x0a9e('0x43')]]));this[_0x0a9e('0xd5')](_0x98bf26,_0x310026,_0x316b51);}else{_0x505ffd[_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));ut[_0x0a9e('0xd9')](_0x98bf26,0x4,_0x0a9e('0x12e'));rpcDb['createAgentHistory'](_0x98bf26,_0x0a9e('0x12f'));}}};Preview['prototype'][_0x0a9e('0x1a')]=function(_0x586d2f){var _0xf4de86=this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]];var _0x556bb7;if(_0xf4de86){_0x556bb7=this[_0x0a9e('0x10')][_0xf4de86[_0x0a9e('0x43')]];logger['info']('[syncHangup][talking]',_0x586d2f[_0x0a9e('0x84')],_0x0a9e('0x9e'),_0x556bb7[_0x0a9e('0x29')],'pTalking:\x20',_0x556bb7['pTalking']);}if(this['actions'][_0x586d2f[_0x0a9e('0x84')]]&&_0x586d2f[_0x0a9e('0x84')]!==_0x586d2f[_0x0a9e('0x91')]){if(_0x586d2f[_0x0a9e('0x130')]==='16'&&this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]][_0x0a9e('0x4d')]){this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}else if(this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]][_0x0a9e('0x4d')]){logger[_0x0a9e('0x26')](_0x0a9e('0x131'),_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7['name'],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}}else if(_0xf4de86&&_[_0x0a9e('0x41')](_0xf4de86['statedesc'])&&_0x556bb7[_0x0a9e('0x132')]&&_0x586d2f[_0x0a9e('0x84')]===_0x586d2f[_0x0a9e('0x91')]&&_[_0x0a9e('0x41')](_0x586d2f[_0x0a9e('0xd8')])&&_0x586d2f[_0x0a9e('0x130')]==='16'&&_0x586d2f[_0x0a9e('0x133')]==='6'&&_[_0x0a9e('0xd7')](_0xf4de86[_0x0a9e('0x134')])){if(_0xf4de86['unlockAgent']){rpcDb['unlockContact'](_0xf4de86[_0x0a9e('0x85')]);}if(_0xf4de86[_0x0a9e('0x83')]){rpcDb['disableContact'](_0xf4de86[_0x0a9e('0x85')]);}_0x586d2f[_0x0a9e('0xd8')]='22';this['callProgressDetectingAgent'](_0xf4de86,_0x556bb7,_0x586d2f);}else if(_0xf4de86&&_0xf4de86[_0x0a9e('0x134')]){if(_0x586d2f['cause']==='16'&&this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]]['dialAnswer']){logger[_0x0a9e('0x26')](_0x0a9e('0x135'),_0x586d2f['linkedid'],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7['name'],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}else if(this[_0x0a9e('0x13')][_0x586d2f['linkedid']][_0x0a9e('0x4d')]){logger[_0x0a9e('0x26')]('[syncHangup][talking][cause]',_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7[_0x0a9e('0x29')],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f['linkedid'],_0x586d2f['cause']);}}};Preview['prototype']['syncDialEnd']=function(_0x5e9817){if(this[_0x0a9e('0x13')][_0x5e9817[_0x0a9e('0xd4')]]&&_0x5e9817['destlinkedid']!==_0x5e9817['destuniqueid']){this[_0x0a9e('0x72')](_0x5e9817,_0x5e9817['destlinkedid'],_0x5e9817[_0x0a9e('0xcd')]);}};Preview[_0x0a9e('0xd')][_0x0a9e('0x136')]=function(_0x175c97){if(this[_0x0a9e('0x13')][_0x175c97[_0x0a9e('0x84')]]&&_0x175c97['linkedid']!==_0x175c97[_0x0a9e('0x91')]&&!this[_0x0a9e('0x13')][_0x175c97['linkedid']][_0x0a9e('0x4d')]){if(_0x175c97[_0x0a9e('0x130')]==='1'){this[_0x0a9e('0x72')](_0x175c97,_0x175c97[_0x0a9e('0x84')],_0x175c97[_0x0a9e('0x130')]);}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x137')]=function(_0x4a36df,_0x331216,_0x508395){if(this[_0x0a9e('0x13')][_0x4a36df]){if(_[_0x0a9e('0x41')](this['actions'][_0x4a36df][_0x0a9e('0x122')])){this[_0x0a9e('0x13')][_0x4a36df]['variables']={};}this[_0x0a9e('0x13')][_0x4a36df]['variables'][_0x331216]=_0x508395;}};Preview[_0x0a9e('0xd')][_0x0a9e('0x1f')]=function(_0x5d0620){try{if(!_[_0x0a9e('0x41')](_0x5d0620)){if(ut['filterKey'](_[_0x0a9e('0x138')](_0x5d0620[_0x0a9e('0x139')])[0x0])){this[_0x0a9e('0x137')](_0x5d0620[_0x0a9e('0x91')],_[_0x0a9e('0x138')](_0x5d0620[_0x0a9e('0x139')])[0x0],_0x5d0620[_0x0a9e('0x13a')]);}}}catch(_0x53b5c2){logger[_0x0a9e('0x13b')](_0x0a9e('0x13c'),util[_0x0a9e('0x13d')](_0x53b5c2,{'showHidden':![],'depth':null}));}};Preview[_0x0a9e('0xd')][_0x0a9e('0x21')]=function(_0x5932ad){if(_0x5932ad){if(this[_0x0a9e('0x13')][_0x5932ad['transfertargetlinkedid']]){this['actions'][_0x5932ad[_0x0a9e('0x13e')]]['transfer']=!![];}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x23')]=function(_0x58d5fd){if(_0x58d5fd){if(this[_0x0a9e('0x13')][_0x58d5fd[_0x0a9e('0x13f')]]){this[_0x0a9e('0x13')][_0x58d5fd[_0x0a9e('0x13f')]][_0x0a9e('0x134')]=!![];}}};module[_0x0a9e('0x140')]=Preview;
\ No newline at end of file
+var _0xa9e0=['varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','info','format','voice:queue:%s','name','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','originated','pTalking','available','CAMPAIGN_STATUS','INACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','dialMethod','booked','type','outbound','dialActive','setMessage','recallMe','clearZombieChannel','sequence','isNil','Queue','queue','originated:\x20','stringify','pick','UserId','VoiceQueueId','ListId','channel','message','No\x20such\x20channel','dialAnswer','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','size','getContactRecallMe','then','length','getDiff','scheduledat','Agent','voicePause','run','[RecallMe]','catch','logger2','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[getContactRecallMe]','IsNotLoggedIn','NO_AGENTS_LOGGED','isActive','isTrunkReachable','UNREACHABLE_TRUNK','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','cloneAction','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','activeContact','linkedid','idContact','incrementPreviewCounters','ANSWER','answertime','[syncHangup][talking][increment]','pTalking:\x20','custom:agentconnect','connect','acw','mandatoryDisposition','custom:agentConnectPreview','channelAgent','uniqueid','custom:agentcomplete','complete','outboundAnswerCallsDay','answered','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','sumBillable','[syncHangup][talking][decrement]','\x20Queue','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','unlockAgent','NOANSWER','countnoanswerretry','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','outboundCongestionCallsDay','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','swapAdditionalPhones','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','countmachineretry','cause-txt','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','outboundUnknownCallsDay','dialstatus','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','object','isUndefined','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','resolve','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','status','reachable','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','checkIsBlackList','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','Trunk','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','dialPrefix','trim','dialCutDigit','substring','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variables','variablesAction','Action','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','responsetime','response','rejected','Answer','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','syncHangupRequest','addVariable','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','../../../config/environment','preview','../../../config/logger','actionPreview','../ami','./rpcDb','./action','./util/util','../dialer/utils','redis','prototype','enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncDialEnd','syncNewExten'];(function(_0x28284a,_0x2a082e){var _0x9ffa0c=function(_0x37e984){while(--_0x37e984){_0x28284a['push'](_0x28284a['shift']());}};_0x9ffa0c(++_0x2a082e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var uuid=require(_0x0a9e('0x2'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));var logger=require('../../../config/logger')(_0x0a9e('0x4'));var loggerAction=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var ami=require(_0x0a9e('0x7'));var rpcDb=require(_0x0a9e('0x8'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0x0a9e('0x9'));var ut=require(_0x0a9e('0xa'));var utils=require(_0x0a9e('0xb'));config['redis']=_['defaults'](config[_0x0a9e('0xc')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0xc')]));var Sequence=function(){};Sequence[_0x0a9e('0xd')][_0x0a9e('0xe')]=function(_0x3ab53f){this[_0x0a9e('0xf')]=this[_0x0a9e('0xf')]?this['tail']['finally'](_0x3ab53f):_0x3ab53f();};function Preview(_0x527cdd){this['sequence']=new Sequence();this[_0x0a9e('0x10')]=_0x527cdd[_0x0a9e('0x11')];this[_0x0a9e('0x12')]=_0x527cdd[_0x0a9e('0x12')];this[_0x0a9e('0x13')]={};this[_0x0a9e('0x14')]=_0x527cdd['agents'];this[_0x0a9e('0x15')]=0x0;ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x19'),this[_0x0a9e('0x1a')]['bind'](this));ami['on'](_0x0a9e('0x1b'),this['syncHangupRequest'][_0x0a9e('0x18')](this));ami['on']('dialend',this[_0x0a9e('0x1c')][_0x0a9e('0x18')](this));ami['on']('newexten',this[_0x0a9e('0x1d')]['bind'](this));ami['on'](_0x0a9e('0x1e'),this[_0x0a9e('0x1f')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x20'),this[_0x0a9e('0x21')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x22'),this[_0x0a9e('0x23')][_0x0a9e('0x18')](this));this[_0x0a9e('0x24')](this[_0x0a9e('0x10')]);}function emit(_0x105080,_0x4bb1e3,_0x2c3407){io['to'](_0x105080)[_0x0a9e('0x25')](_0x4bb1e3,_0x2c3407);}function emitVoiceQueueChannelRemove(_0x53682f){logger[_0x0a9e('0x26')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON['stringify'](_0x53682f));emit(util[_0x0a9e('0x27')](_0x0a9e('0x28'),_0x53682f[_0x0a9e('0x29')]),_0x0a9e('0x2a'),_0x53682f);io['emit'](_0x0a9e('0x2b'),_0x53682f);}function notSendMessagesQueue(_0x2fb0e4){if(_0x2fb0e4[_0x0a9e('0x2c')]){if(_0x2fb0e4[_0x0a9e('0x2d')]===0x0&&_0x2fb0e4[_0x0a9e('0x2e')]===0x0){_0x2fb0e4[_0x0a9e('0x2c')]=![];_0x2fb0e4[_0x0a9e('0x2f')]=0x0;_0x2fb0e4['paused']=0x0;_0x2fb0e4['message']=utils[_0x0a9e('0x30')][_0x0a9e('0x31')];ut[_0x0a9e('0x32')](_0x0a9e('0x33'),_0x2fb0e4['name']+_0x0a9e('0x34'));}else{_0x2fb0e4['message']=utils[_0x0a9e('0x30')]['DEACTIVATED'];ut[_0x0a9e('0x32')](_0x0a9e('0x33'),_0x2fb0e4[_0x0a9e('0x29')]+_0x0a9e('0x35'));}}}Preview[_0x0a9e('0xd')][_0x0a9e('0x24')]=function(){var _0x11c3b6=this;setInterval(function(){_0x11c3b6[_0x0a9e('0x36')]();},0x7cf);};Preview['prototype'][_0x0a9e('0x36')]=function(){var _0x468813=this[_0x0a9e('0x10')];this[_0x0a9e('0x15')]+=0x1;for(var _0x5c877d in _0x468813){if(_0x468813[_0x0a9e('0x37')](_0x5c877d)&&(_0x468813[_0x5c877d][_0x0a9e('0x38')]===_0x0a9e('0x4')||_0x468813[_0x5c877d][_0x0a9e('0x38')]===_0x0a9e('0x39'))&&_0x468813[_0x5c877d][_0x0a9e('0x3a')]===_0x0a9e('0x3b')){if(this[_0x0a9e('0x15')]>0x7){this[_0x0a9e('0x15')]=0x0;this['clearZombieChannels']();}}if(_0x468813[_0x0a9e('0x37')](_0x5c877d)&&_0x468813[_0x5c877d]['dialMethod']===_0x0a9e('0x4')&&_0x468813[_0x5c877d][_0x0a9e('0x3a')]===_0x0a9e('0x3b')){if(_0x468813[_0x5c877d][_0x0a9e('0x3c')]){this[_0x0a9e('0x3d')](_0x468813[_0x5c877d]);if(_0x468813[_0x5c877d]['dialPreviewAutoRecallMe'])this[_0x0a9e('0x3e')](_0x468813[_0x5c877d]);}else{notSendMessagesQueue(_0x468813[_0x5c877d]);}}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x3f')]=function(_0x2da5c0){var _0x2b45ea=this;this[_0x0a9e('0x40')][_0x0a9e('0xe')](function(){if(!_[_0x0a9e('0x41')](_0x2b45ea['actions'][_0x2da5c0])){loggerAction[_0x0a9e('0x26')]('[clearZombieChannels][talking]',_0x2da5c0,_0x0a9e('0x42'),_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')],_0x0a9e('0x44'),JSON['stringify'](_0x2b45ea[_0x0a9e('0x10')][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]][_0x0a9e('0x2d')]),'pTalking:\x20',JSON['stringify'](_0x2b45ea[_0x0a9e('0x10')][_0x2b45ea['actions'][_0x2da5c0][_0x0a9e('0x43')]][_0x0a9e('0x2e')]),JSON[_0x0a9e('0x45')](_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0]['dialAnswer']),JSON[_0x0a9e('0x45')](_[_0x0a9e('0x46')](_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0],['contactId',_0x0a9e('0x47'),_0x0a9e('0x48'),_0x0a9e('0x49')])));return ami['Action']({'action':'status','channel':_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x4a')]})['catch'](function(_0x2b814e){if(_0x2b814e[_0x0a9e('0x4b')]===_0x0a9e('0x4c')){setTimeout(function(){if(_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0]){ut['updateOriginated'](_0x2b45ea['campaignsPreview'][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]],'[clearZombieChannel]');if(_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x4d')]===!![]){ut[_0x0a9e('0x4e')](_0x2b45ea['campaignsPreview'][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]],_0x0a9e('0x4f'));ut[_0x0a9e('0x50')](_0x0a9e('0x51')+_0x2da5c0,_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]);}ut[_0x0a9e('0x50')](_0x0a9e('0x52')+_0x2da5c0,_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]);delete _0x2b45ea[_0x0a9e('0x13')][_0x2da5c0];}},0x2328);}});}});};Preview[_0x0a9e('0xd')][_0x0a9e('0x53')]=function(){var _0x37f6cc=this;loggerAction['info']('[action]',_[_0x0a9e('0x54')](this[_0x0a9e('0x13')]));for(var _0x405c8f in this[_0x0a9e('0x13')]){if(_0x37f6cc[_0x0a9e('0x13')][_0x0a9e('0x37')](_0x405c8f)){_0x37f6cc[_0x0a9e('0x3f')](_0x405c8f);}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x3e')]=function(_0x25c6e6){var _0x2c2cb0=this;rpcDb[_0x0a9e('0x55')](_0x25c6e6['id'],ut['agentReadyId'](this[_0x0a9e('0x14')]))[_0x0a9e('0x56')](function(_0xdd268f){if(!_[_0x0a9e('0x41')](_0xdd268f)){for(var _0x2e8caf=0x0;_0x2e8caf<_0xdd268f[_0x0a9e('0x57')];_0x2e8caf+=0x1){if(ut[_0x0a9e('0x58')](_0xdd268f[_0x2e8caf][_0x0a9e('0x59')])<_0x25c6e6['dialRecallMeTimeout']*0x3c){if(_0xdd268f[_0x2e8caf][_0x0a9e('0x5a')]&&!_0xdd268f[_0x2e8caf]['Agent'][_0x0a9e('0x5b')]){_0x2c2cb0[_0x0a9e('0x5c')](_0xdd268f[_0x2e8caf]['id'])[_0x0a9e('0x56')](ut['logger2'](_0x0a9e('0x5d')))[_0x0a9e('0x5e')](ut[_0x0a9e('0x5f')](_0x0a9e('0x5d')));}else{rpcDb[_0x0a9e('0x60')](_0xdd268f[_0x2e8caf]['id']);}}else{var _0x37be73=new Action(_0xdd268f[_0x2e8caf],_0x25c6e6);_0x37be73[_0x0a9e('0x61')]=moment()['format'](_0x0a9e('0x62'));_0x25c6e6[_0x0a9e('0x63')]+=0x1;ut[_0x0a9e('0x64')](_0x37be73,0x17,_0x0a9e('0x65'));if(_0x25c6e6[_0x0a9e('0x66')]){rpcDb[_0x0a9e('0x67')](ut[_0x0a9e('0x68')](_0xdd268f[_0x2e8caf]));rpcDb[_0x0a9e('0x69')](_0x37be73,_0x0a9e('0x6a'));}else{ut['logCustomer'](_0x37be73,0x16,_0x0a9e('0x6b'));rpcDb[_0x0a9e('0x69')](_0x37be73,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x37be73,'[HistoryRecallClose]');}}}}})[_0x0a9e('0x5e')](ut[_0x0a9e('0x5f')](_0x0a9e('0x6c')));};Preview[_0x0a9e('0xd')][_0x0a9e('0x3d')]=function(_0x30decb){_0x30decb[_0x0a9e('0x2c')]=!![];if(ut[_0x0a9e('0x6d')](_0x30decb['loggedIn'])){_0x30decb['message']=utils['CAMPAIGN_STATUS'][_0x0a9e('0x6e')];}else if(!ut[_0x0a9e('0x6f')](_0x30decb[_0x0a9e('0x3c')])){_0x30decb['message']=utils[_0x0a9e('0x30')][_0x0a9e('0x31')];}else if(!this['isTrunkReachable'](_0x30decb['Trunk'])){if(!this[_0x0a9e('0x70')](_0x30decb['TrunkBackup'])){_0x30decb[_0x0a9e('0x4b')]=utils['CAMPAIGN_STATUS'][_0x0a9e('0x71')];}else{_0x30decb[_0x0a9e('0x4b')]=utils[_0x0a9e('0x30')]['ACTIVE'];}}else{_0x30decb[_0x0a9e('0x4b')]=utils[_0x0a9e('0x30')]['ACTIVE'];}};Preview['prototype'][_0x0a9e('0x72')]=function(_0x3aedd0,_0x49c095,_0x145931){var _0x5ce9ac=this;var _0x211ef9=this['actions'][_0x49c095];var _0xe22ccc=this['campaignsPreview'][_0x211ef9['queue']];var _0x5df0ad;var _0x2da03c=![];var _0x47de4c=0x2;var _0x2f7092=0x3;if(_0xe22ccc){switch(_0x145931){case'1':_0xe22ccc[_0x0a9e('0x73')]+=0x1;_0x211ef9[_0x0a9e('0x74')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x0,_0x0a9e('0x77'));ami[_0x0a9e('0x25')]('custom:agentnosuchnumber',ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0x79')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0x7a'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'0',_0xe22ccc)[_0x0a9e('0x56')](function(_0x5d86e9){_0x2da03c=_0x5d86e9[_0x0a9e('0x7c')]==0x1;_0x47de4c=_0xe22ccc[_0x0a9e('0x7d')];_0x2f7092=_0xe22ccc['callAdditionalPhoneAfterMin'];if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc['dialGlobalMaxRetry']){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,'Global');rpcDb['createCustomerFinal'](_0x5df0ad,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x211ef9[_0x0a9e('0x74')]>=_0xe22ccc['dialNoSuchNumberMaxRetry']){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0x80'));}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,_0x0a9e('0x74'),_0xe22ccc[_0x0a9e('0x7d')]),_0x211ef9['unlockAgent'],_0x211ef9[_0x0a9e('0x83')]);}}delete this['actions'][_0x3aedd0[_0x0a9e('0x84')]];}else{_0x211ef9[_0x0a9e('0x74')]++;logger[_0x0a9e('0x26')]('actioncountonusuch',_0x211ef9[_0x0a9e('0x74')]);logger[_0x0a9e('0x26')]('id',_0x211ef9[_0x0a9e('0x85')]);_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9['idContact'],'field':{'countnosuchnumberretry':_0x211ef9[_0x0a9e('0x74')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0x87'):var _0x88dcbf=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));_0x211ef9['responsetime']=_0x88dcbf;_0x211ef9[_0x0a9e('0x88')]=_0x88dcbf;_0x211ef9[_0x0a9e('0x4d')]=!![];_0xe22ccc[_0x0a9e('0x2e')]+=0x1;logger['info'](_0x0a9e('0x89'),_0x211ef9['uniqueid'],'\x20Queue',_0xe22ccc[_0x0a9e('0x29')],_0x0a9e('0x8a'),_0xe22ccc[_0x0a9e('0x2e')]);ami[_0x0a9e('0x25')](_0x0a9e('0x8b'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0x8c'),this[_0x0a9e('0x10')][_0x211ef9[_0x0a9e('0x43')]]));if(_0xe22ccc[_0x0a9e('0x8d')]||_0xe22ccc[_0x0a9e('0x8e')]){ami[_0x0a9e('0x25')](_0x0a9e('0x8f'),{'queue':_0x211ef9[_0x0a9e('0x43')],'interface':_0x211ef9[_0x0a9e('0x90')],'uniqueid':_0x211ef9[_0x0a9e('0x91')]});}break;case'16':ami[_0x0a9e('0x25')](_0x0a9e('0x92'),ut['buildObj'](_0x211ef9,_0x0a9e('0x93'),this[_0x0a9e('0x10')][_0x211ef9[_0x0a9e('0x43')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x211ef9,_0x0a9e('0x93')));_0xe22ccc[_0x0a9e('0x94')]+=0x1;_0xe22ccc['total']+=0x1;_0xe22ccc[_0x0a9e('0x95')]+=0x1;ut[_0x0a9e('0x4e')](_0xe22ccc,_0x0a9e('0x96'));_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x4,'Answer');rpcDb['createCustomerHistory'](_0x211ef9,_0x0a9e('0x97'));rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0x98'));rpcDb[_0x0a9e('0x99')](_0x211ef9);_0xe22ccc[_0x0a9e('0x9a')]+=_0x211ef9[_0x0a9e('0x9b')];_0xe22ccc[_0x0a9e('0x9c')]+=_0x211ef9[_0x0a9e('0x9b')];logger['info'](_0x0a9e('0x9d'),_0x211ef9[_0x0a9e('0x91')],_0x0a9e('0x9e'),_0xe22ccc['name'],_0x0a9e('0x8a'),_0xe22ccc['pTalking']);delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;case'BUSY':_0xe22ccc[_0x0a9e('0x9f')]+=0x1;_0x211ef9[_0x0a9e('0xa0')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x5,_0x0a9e('0xa1'));_0x47de4c=_0xe22ccc[_0x0a9e('0xa2')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami[_0x0a9e('0x25')]('custom:agentbusy',ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xa4')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xa5'));_0x5ce9ac['verifyAdditionalPhones'](_0x211ef9,'5',_0xe22ccc)[_0x0a9e('0x56')](function(_0x3511c9){_0x2da03c=_0x3511c9[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xa8'));}else{if(_0x211ef9[_0x0a9e('0xa0')]>=_0xe22ccc[_0x0a9e('0xa9')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xa5'));}else{rpcDb[_0x0a9e('0x81')](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xa0'),_0xe22ccc[_0x0a9e('0xa2')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xa0')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countbusyretry':_0x211ef9[_0x0a9e('0xa0')]}})['then'](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0xab'):_0xe22ccc['outboundNoAnswerCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xac')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x3,'NoAnswer');_0x47de4c=_0xe22ccc[_0x0a9e('0xad')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];var _0x2d2286=ut[_0x0a9e('0xae')](_0x211ef9,_0xe22ccc);ami[_0x0a9e('0x25')](_0x0a9e('0xaf'),_0x2d2286);rpcDb[_0x0a9e('0x69')](_0x211ef9,'[callProgressDetectingCustomer][logNoAnswer]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'3',_0xe22ccc)[_0x0a9e('0x56')](function(_0x45c109){_0x2da03c=_0x45c109[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,'Global');rpcDb[_0x0a9e('0x7f')](_0x5df0ad,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x211ef9[_0x0a9e('0xac')]>=_0xe22ccc[_0x0a9e('0xb0')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xb1'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xac'),_0xe22ccc[_0x0a9e('0xad')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9['idContact'],'field':{'countnoanswerretry':_0x211ef9['countnoanswerretry']}})[_0x0a9e('0x56')](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});break;case'CONGESTION':_0xe22ccc[_0x0a9e('0xb2')]+=0x1;_0x211ef9[_0x0a9e('0xb3')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x8,_0x0a9e('0xb4'));_0x47de4c=_0xe22ccc['dialCongestionRetryFrequency'];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami['emit'](_0x0a9e('0xb5'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xb6')));rpcDb[_0x0a9e('0x69')](_0x211ef9,'[callProgressDetectingCustomer][logCongestion]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'8',_0xe22ccc)[_0x0a9e('0x56')](function(_0x1d4877){_0x2da03c=_0x1d4877['additional']==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xb7'));}else{if(_0x211ef9[_0x0a9e('0xb3')]>=_0xe22ccc[_0x0a9e('0xb8')]){rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xb9'));}else{rpcDb[_0x0a9e('0x81')](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xb3'),_0xe22ccc[_0x0a9e('0xa2')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xb3')]++;_0x5ce9ac['incrementPreviewCounters']({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countcongestionretry':_0x211ef9[_0x0a9e('0xb3')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0xbb'):_0xe22ccc[_0x0a9e('0xbc')]+=0x1;_0x211ef9[_0x0a9e('0xbd')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x14,_0x0a9e('0xbe'));_0x47de4c=_0xe22ccc[_0x0a9e('0xbf')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami[_0x0a9e('0x25')](_0x0a9e('0xc0'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xc1')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xc2'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'20',_0xe22ccc)[_0x0a9e('0x56')](function(_0x4989f9){_0x2da03c=_0x4989f9[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0x14,_0x0a9e('0xbe'));rpcDb['createCustomerFinal'](_0x5df0ad,_0x0a9e('0xc3'));}else{if(_0x211ef9[_0x0a9e('0xbd')]>=_0xe22ccc['dialAgentRejectMaxRetry']){rpcDb[_0x0a9e('0x7f')](_0x211ef9,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,_0x0a9e('0xbd'),_0xe22ccc[_0x0a9e('0xbf')]),_0x211ef9['unlockAgent'],_0x211ef9[_0x0a9e('0x83')]);}}}else{_0x211ef9['countnoanswerretry']++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9['countnoanswerretry']}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case'ABANDONED':_0xe22ccc['outboundAbandonedCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xc4')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0xb,_0x0a9e('0xc5'));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xc6'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'11',_0xe22ccc)[_0x0a9e('0x56')](function(_0x586510){_0x2da03c=_0x586510[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xc6'));}else{if(_0x211ef9['countabandonedetry']>=_0xe22ccc[_0x0a9e('0xc7')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xc6'));}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,'countabandonedretry',_0xe22ccc['dialAbandonedRetryFrequency']),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});break;case'18':_0xe22ccc['outboundUnknownCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xc8')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x12,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0['dialstatus']);ami['emit'](_0x0a9e('0xca'),ut[_0x0a9e('0x78')](_0x211ef9,'amd'));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xcb'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'18',_0xe22ccc)[_0x0a9e('0x56')](function(_0x2eb028){_0x2da03c=_0x2eb028['additional']==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0x12,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xcb'));}else{rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xcb'));}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac['incrementPreviewCounters']({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;case'19':_0xe22ccc[_0x0a9e('0xcc')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x13,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0[_0x0a9e('0xcd')]);ami[_0x0a9e('0x25')](_0x0a9e('0xca'),ut[_0x0a9e('0x78')](_0x211ef9,'amd'));rpcDb['createCustomerHistory'](_0x211ef9,_0x0a9e('0xce'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'18',_0xe22ccc)[_0x0a9e('0x56')](function(_0x2fea95){_0x2da03c=_0x2fea95[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb['createCustomerFinal'](_0x5df0ad,_0x0a9e('0xce'));}else{rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xce'));}}else{_0x211ef9['countnoanswerretry']++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})['then'](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;default:if(_0x211ef9[_0x0a9e('0x4d')]){ut[_0x0a9e('0x4e')](_0xe22ccc,_0x0a9e('0xcf'));ut[_0x0a9e('0x50')](_0x0a9e('0xd0')+_0xe22ccc[_0x0a9e('0x29')],_0x3aedd0);}_0xe22ccc[_0x0a9e('0xcc')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0xc,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0[_0x0a9e('0xcd')]);_0x47de4c=_0xe22ccc[_0x0a9e('0xbf')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];rpcDb['createCustomerHistory'](_0x211ef9,'[callProgressDetectingCustomer][logUnknown]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'20',_0xe22ccc)['then'](function(_0x1d999b){_0x2da03c=_0x1d999b[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xd1'));}delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];}else{_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});}});}if(!(_0x211ef9[_0x0a9e('0x4d')]&&_0x145931==='16')){ut[_0x0a9e('0xd2')](_0xe22ccc,'[callProgressDetectingCustomer]');logger[_0x0a9e('0x26')](_0x0a9e('0xd3'),_0x211ef9[_0x0a9e('0x91')],'\x20Queue',_0xe22ccc[_0x0a9e('0x29')],_0x0a9e('0x44'),_0xe22ccc[_0x0a9e('0x2d')]);}if(_0x145931!==_0x0a9e('0x87')){delete this[_0x0a9e('0x13')][_0x3aedd0['linkedid']];delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0xd4')]];}_0xe22ccc['queueSummaryCountersUpdated']=!![];}};Preview[_0x0a9e('0xd')][_0x0a9e('0xd5')]=function(_0x1f6f1c,_0x5822a7,_0x5c3b6f){if(_['isUndefined'](_0x5822a7)&&_0x0a9e('0xd6')!==typeof _0x5822a7){return;}if(_[_0x0a9e('0xd7')](_0x5c3b6f)&&'object'!==typeof _0x5c3b6f){return;}switch(_0x5c3b6f[_0x0a9e('0xd8')]){case'0':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x0,_0x0a9e('0x77'));rpcDb['createAgentHistory'](_0x1f6f1c,_0x0a9e('0xda'));break;case'3':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x3,_0x0a9e('0xdb'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xdd'));break;case'5':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x5,_0x0a9e('0xa1'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xde'));break;case'8':ut['logAgent'](_0x1f6f1c,0x8,_0x0a9e('0xb4'));rpcDb['createAgentHistory'](_0x1f6f1c,_0x0a9e('0xdf'));break;case'22':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x16,_0x0a9e('0xe0'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xe1'));break;default:ut[_0x0a9e('0xd9')](_0x1f6f1c,0xc,_0x5c3b6f['reason']);rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xdf'));}ut[_0x0a9e('0xd2')](_0x5822a7,_0x0a9e('0xe2'));logger['info'](_0x0a9e('0xe3'),_0x1f6f1c[_0x0a9e('0x91')],_0x0a9e('0x9e'),_0x5822a7[_0x0a9e('0x29')],_0x0a9e('0x44'),_0x5822a7[_0x0a9e('0x2d')]);delete this[_0x0a9e('0x13')][_0x1f6f1c[_0x0a9e('0x91')]];};Preview[_0x0a9e('0xd')][_0x0a9e('0x7b')]=function(_0x57f0ad,_0x2272bc,_0x88b25f){return cmHopperAdditionalPhone[_0x0a9e('0x7b')](_0x57f0ad,_0x2272bc,_0x88b25f)[_0x0a9e('0x5e')](logger[_0x0a9e('0x26')](_0x0a9e('0xe4')));};Preview[_0x0a9e('0xd')][_0x0a9e('0xba')]=function(_0x566b90,_0x3b581c,_0xd2391){return cmHopperAdditionalPhone[_0x0a9e('0xba')](_0x566b90,_0x3b581c,_0xd2391)['catch'](logger[_0x0a9e('0x26')](_0x0a9e('0xe5')));};Preview[_0x0a9e('0xd')][_0x0a9e('0x86')]=function(_0x370b5e){return Promise[_0x0a9e('0xe6')]()[_0x0a9e('0x56')](cmHopperAdditionalPhone[_0x0a9e('0x86')](_0x370b5e))[_0x0a9e('0x5e')](logger[_0x0a9e('0x26')]('[incrementPreviewCounters]\x20'));};Preview[_0x0a9e('0xd')][_0x0a9e('0xe7')]=function(_0x15a9ed,_0x3db98f,_0x2b624e,_0x3942fd,_0x5cb48d){var _0x382687=this;return new Promise(function(_0x4f854b,_0x5bd139){if(_['isNil'](_0x3db98f)||_[_0x0a9e('0x41')](_0x3db98f[_0x0a9e('0xe8')])||_[_0x0a9e('0x41')](_0x3db98f[_0x0a9e('0xe9')])||_['isNil'](_0x3db98f[_0x0a9e('0x48')])){_0x5bd139(ut[_0x0a9e('0x4b')](_0x0a9e('0xea'),_0x3942fd,_0x5cb48d));return;}var _0x1fdb10=uuid['v4']();var _0x2c8d1d=_0x382687['campaignsPreview'][_0x3db98f['Queue'][_0x0a9e('0x29')]];var _0x33bcb2=_0x2b624e?_0x382687[_0x0a9e('0x14')][_0x2b624e]['id']:undefined;_0x382687['actions'][_0x1fdb10]=new Action(_0x3db98f,_0x2c8d1d,_0x1fdb10,_0x2b624e,_0x33bcb2);var _0x319752=_0x382687[_0x0a9e('0x13')][_0x1fdb10];_0x319752[_0x0a9e('0xaa')]=_0x3942fd;_0x319752['activeContact']=_0x5cb48d;_0x319752[_0x0a9e('0xeb')]=_0x2b624e;if(_[_0x0a9e('0xec')](_0x15a9ed)){_0x382687[_0x0a9e('0xed')](_0x319752,_0x2c8d1d,_0x3db98f,_0x2b624e)['then'](function(_0x272291){logger[_0x0a9e('0x26')](_0x0a9e('0xee'),'Queue:\x20'+_0x319752['queue']+'\x20IdHopper:\x20'+_0x319752[_0x0a9e('0x85')],JSON[_0x0a9e('0x45')](_0x272291));ami[_0x0a9e('0x25')](_0x0a9e('0xef'),ut['buildObj'](_0x319752,_0x0a9e('0xf0'),_0x382687['campaignsPreview'][_0x319752[_0x0a9e('0x43')]]));_0x4f854b(ut[_0x0a9e('0x4b')](_0x0a9e('0xf1')));})['catch'](function(_0x33b4b3){ut[_0x0a9e('0x32')](_0x0a9e('0xf2'),_0x33b4b3);_0x5bd139(ut['message'](_0x0a9e('0xf3'),_0x3942fd,_0x5cb48d));});}else{_0x2c8d1d['outboundBlacklistCallsDay']+=0x1;ut[_0x0a9e('0xf4')](_0x319752);rpcDb['createHistory'](_0x319752,_0x0a9e('0xf5'));delete _0x382687['actions'][_0x1fdb10];_0x5bd139(ut[_0x0a9e('0x4b')](_0x0a9e('0xf6'),_0x3942fd,_0x5cb48d));}});};Preview[_0x0a9e('0xd')][_0x0a9e('0x70')]=function(_0x1e306c){return!_[_0x0a9e('0x41')](_0x1e306c)&&!_[_0x0a9e('0x41')](_0x1e306c['name'])&&!_[_0x0a9e('0x41')](_0x1e306c[_0x0a9e('0xf7')])&&_0x1e306c['active']&&!_[_0x0a9e('0x41')](this[_0x0a9e('0x12')][util['format'](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])])&&!_[_0x0a9e('0x41')](this['trunks'][util[_0x0a9e('0x27')](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')])&&(this[_0x0a9e('0x12')][util[_0x0a9e('0x27')](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')]===_0x0a9e('0xfa')||this['trunks'][util[_0x0a9e('0x27')]('SIP/%s',_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')]===_0x0a9e('0xfb'));};Preview[_0x0a9e('0xd')][_0x0a9e('0x5c')]=function(_0x2d45db,_0x5691ac){return this[_0x0a9e('0xfc')](_0x2d45db,_0x5691ac)[_0x0a9e('0x56')](function(_0x2977a7){return _['pick'](_0x2977a7,[_0x0a9e('0x4b')]);})[_0x0a9e('0x5e')](function(_0x4435d2){if(_0x4435d2[_0x0a9e('0xfd')]){rpcDb[_0x0a9e('0xfe')](_0x2d45db);}if(_0x4435d2[_0x0a9e('0xf7')]){rpcDb[_0x0a9e('0x60')](_0x2d45db);}throw _['pick'](_0x4435d2,[_0x0a9e('0x4b')]);});};Preview[_0x0a9e('0xd')][_0x0a9e('0xfc')]=function(_0x2ce3be,_0x3de77e){var _0x241404=this;var _0x8120e,_0x5d6a48;return rpcDb['getContactPreview'](_0x2ce3be)[_0x0a9e('0x56')](function(_0x3f507c){if(!_[_0x0a9e('0x41')](_0x3f507c[0x0])){_0x5d6a48=_0x3f507c[0x0][_0x0a9e('0xff')]?![]:!![];_0x8120e=_0x3f507c[0x0][_0x0a9e('0xff')]?!![]:![];_0x8120e=_0x3de77e?!![]:_0x8120e;}var _0x131da8=_0x241404[_0x0a9e('0x100')](_0x3f507c);if(_0x131da8['isValid']){rpcDb[_0x0a9e('0x101')](_[_0x0a9e('0x46')](_0x3f507c[0x0],[_0x0a9e('0x48'),_0x0a9e('0xe9')]))[_0x0a9e('0x56')](function(_0x3c6082){_0x241404[_0x0a9e('0xe7')](_0x3c6082,_0x3f507c[0x0],_0x3de77e,_0x5d6a48,_0x8120e)['then'](function(_0x311288){return _0x311288;})[_0x0a9e('0x5e')](function(_0x231826){throw _0x231826;});})['catch'](function(_0x2b8ad4){ut[_0x0a9e('0x32')](_0x0a9e('0x102'),_0x2b8ad4);throw ut[_0x0a9e('0x4b')]('Call\x20unsuccessful',_0x5d6a48,_0x8120e);});}else{throw ut[_0x0a9e('0x4b')](_0x131da8[_0x0a9e('0x4b')],_0x5d6a48,_0x8120e);}})[_0x0a9e('0x5e')](function(_0x93d953){ut[_0x0a9e('0x32')](_0x0a9e('0x103'),_0x93d953);throw ut[_0x0a9e('0x4b')](_0x0a9e('0x104'),![],!![]);});};Preview['prototype'][_0x0a9e('0x100')]=function(_0x266aa1){if(_[_0x0a9e('0x41')](_0x266aa1)||_[_0x0a9e('0xec')](_0x266aa1)||!_['isNil'](_0x266aa1[0x0]['Agent'])&&_[_0x0a9e('0x41')](_0x266aa1[0x0][_0x0a9e('0x5a')][_0x0a9e('0x29')])){ut['logger'](_0x0a9e('0x105'),_0x266aa1);return{'isValid':![],'message':_0x0a9e('0x106')};}var _0x4d8a67=this[_0x0a9e('0x10')][_0x266aa1[0x0]['Queue'][_0x0a9e('0x29')]];_0x4d8a67['message']=utils['CAMPAIGN_STATUS']['ACTIVE'];if(_[_0x0a9e('0x41')](_0x4d8a67)){ut[_0x0a9e('0x32')](_0x0a9e('0x107'),_0x4d8a67);return{'isValid':![],'message':_0x0a9e('0x108')};}if(!this[_0x0a9e('0x70')](_0x4d8a67[_0x0a9e('0x109')])){ut['logger'](_0x0a9e('0x10a'),_0x0a9e('0x10b')+_0x4d8a67[_0x0a9e('0x29')]+_0x0a9e('0x10c'));if(!this[_0x0a9e('0x70')](_0x4d8a67[_0x0a9e('0x10d')])){ut[_0x0a9e('0x32')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x4d8a67['name']+_0x0a9e('0x10e'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0x0a9e('0x6f')](_0x4d8a67[_0x0a9e('0x3c')])){ut[_0x0a9e('0x32')](_0x0a9e('0x10f'),_0x4d8a67[_0x0a9e('0x29')]+_0x0a9e('0x110'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x4d8a67[_0x0a9e('0x29')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x0a9e('0xd')]['execCall']=function(_0x38dceb,_0x5dc978,_0x550cbf,_0x26223f){var _0x4a7a3c=this;return new Promise(function(_0x24470a,_0x142e53){var _0xe1ab0d=_0x38dceb['uniqueid'];var _0x4152cd=_0x4a7a3c[_0x0a9e('0x70')](_0x5dc978[_0x0a9e('0x109')])?util['format']('SIP/%s/%s%s',_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x29')],_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x111')])?'':_0x5dc978[_0x0a9e('0x111')][_0x0a9e('0x112')]()||'',_0x5dc978[_0x0a9e('0x113')]>0x0?_0x550cbf[_0x0a9e('0xe9')][_0x0a9e('0x114')](_0x5dc978[_0x0a9e('0x113')]):_0x550cbf['phone']):util['format']('SIP/%s/%s%s',_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x10d')])?_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x29')]:_0x5dc978[_0x0a9e('0x10d')][_0x0a9e('0x29')],_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x111')])?'':_0x5dc978['dialPrefix']['trim']()||'',_0x5dc978[_0x0a9e('0x113')]>0x0?_0x550cbf[_0x0a9e('0xe9')]['substring'](_0x5dc978[_0x0a9e('0x113')]):_0x550cbf[_0x0a9e('0xe9')]);var _0x2e2280=_0x4a7a3c[_0x0a9e('0x70')](_0x5dc978[_0x0a9e('0x109')])?ut[_0x0a9e('0x115')](_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x116')],_0x5dc978[_0x0a9e('0x117')],_0x5dc978[_0x0a9e('0x118')]>0x0?ut[_0x0a9e('0x119')](_0x5dc978[_0x0a9e('0x11a')],_0x5dc978['dialRandomLastDigitCallerIdNumber']):_0x5dc978[_0x0a9e('0x11a')]):ut[_0x0a9e('0x115')](_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x10d')])?_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x116')]:_0x5dc978[_0x0a9e('0x10d')][_0x0a9e('0x116')],_0x5dc978[_0x0a9e('0x117')],_0x5dc978[_0x0a9e('0x118')]>0x0?ut[_0x0a9e('0x119')](_0x5dc978[_0x0a9e('0x11a')],_0x5dc978['dialRandomLastDigitCallerIdNumber']):_0x5dc978['dialOriginateCallerIdNumber']);if(_0x2e2280){_0x38dceb[_0x0a9e('0x11b')]=ut[_0x0a9e('0x11c')](_0x2e2280);_0x38dceb[_0x0a9e('0x11d')]=ut[_0x0a9e('0x11e')](_0x2e2280);}var _0x33359a=ut[_0x0a9e('0x11f')](_0x5dc978,_0x550cbf,_0x4152cd,_0x2e2280,_0xe1ab0d,_0x38dceb);var _0xa8b5de=utils['setXMDContactVariables'](_0x550cbf[_0x0a9e('0xe8')]);Object['assign'](_0x33359a,_0xa8b5de);_[_0x0a9e('0x120')](_0x38dceb,ut[_0x0a9e('0x121')](_0x33359a));_0x38dceb[_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));_0x5dc978[_0x0a9e('0x122')]=_0x33359a;var _0x465003=ut[_0x0a9e('0x123')](_0x38dceb,_0x5dc978,_0x33359a,_0x38dceb[_0x0a9e('0x83')],_0x26223f);return ami[_0x0a9e('0x124')](_0x465003)[_0x0a9e('0x56')](function(_0x8231e5){_0x5dc978[_0x0a9e('0x2d')]+=0x1;logger[_0x0a9e('0x26')](_0x0a9e('0x125'),_0xe1ab0d,_0x0a9e('0x9e'),_0x5dc978['name'],'originated:\x20',_0x5dc978[_0x0a9e('0x2d')]);_0x24470a(_0x8231e5);})[_0x0a9e('0x5e')](function(_0x52b365){ut['logAgent'](_0x38dceb,0xe,_0x0a9e('0x126'));rpcDb[_0x0a9e('0xdc')](_0x38dceb,_0x0a9e('0x127'));_0x142e53(_0x52b365);});});};Preview['prototype'][_0x0a9e('0x1d')]=function(_0x5b6447){if(this[_0x0a9e('0x13')][_0x5b6447['linkedid']]){this[_0x0a9e('0x13')][_0x5b6447['linkedid']][_0x0a9e('0x4a')]=_0x5b6447[_0x0a9e('0x4a')];}};Preview[_0x0a9e('0xd')]['syncOriginateResponse']=function(_0x316b51){var _0x497fda=this;var _0x505ffd=this[_0x0a9e('0x13')][_0x316b51[_0x0a9e('0x128')]];if(_0x505ffd){if(_0x505ffd[_0x0a9e('0xeb')]&&this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]]){ut[_0x0a9e('0x129')](_0x505ffd,this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]][_0x0a9e('0x29')],this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]]['id']);}var _0x98bf26=_[_0x0a9e('0x12a')](_0x505ffd);_0x98bf26[_0x0a9e('0x12b')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));var _0x310026=_0x497fda[_0x0a9e('0x10')][_0x505ffd[_0x0a9e('0x43')]];if(ut['isFailure'](_0x316b51[_0x0a9e('0x12c')])){if(_0x505ffd[_0x0a9e('0xaa')]){rpcDb[_0x0a9e('0xfe')](_0x505ffd[_0x0a9e('0x85')]);}if(_0x505ffd['activeContact']){rpcDb['disableContact'](_0x505ffd['idContact']);}ami[_0x0a9e('0x25')]('custom:agentringnoanswer',ut[_0x0a9e('0x78')](_0x505ffd,_0x0a9e('0x12d'),this[_0x0a9e('0x10')][_0x505ffd[_0x0a9e('0x43')]]));this[_0x0a9e('0xd5')](_0x98bf26,_0x310026,_0x316b51);}else{_0x505ffd[_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));ut[_0x0a9e('0xd9')](_0x98bf26,0x4,_0x0a9e('0x12e'));rpcDb['createAgentHistory'](_0x98bf26,_0x0a9e('0x12f'));}}};Preview['prototype'][_0x0a9e('0x1a')]=function(_0x586d2f){var _0xf4de86=this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]];var _0x556bb7;if(_0xf4de86){_0x556bb7=this[_0x0a9e('0x10')][_0xf4de86[_0x0a9e('0x43')]];logger['info']('[syncHangup][talking]',_0x586d2f[_0x0a9e('0x84')],_0x0a9e('0x9e'),_0x556bb7[_0x0a9e('0x29')],'pTalking:\x20',_0x556bb7['pTalking']);}if(this['actions'][_0x586d2f[_0x0a9e('0x84')]]&&_0x586d2f[_0x0a9e('0x84')]!==_0x586d2f[_0x0a9e('0x91')]){if(_0x586d2f[_0x0a9e('0x130')]==='16'&&this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]][_0x0a9e('0x4d')]){this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}else if(this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]][_0x0a9e('0x4d')]){logger[_0x0a9e('0x26')](_0x0a9e('0x131'),_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7['name'],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}}else if(_0xf4de86&&_[_0x0a9e('0x41')](_0xf4de86['statedesc'])&&_0x556bb7[_0x0a9e('0x132')]&&_0x586d2f[_0x0a9e('0x84')]===_0x586d2f[_0x0a9e('0x91')]&&_[_0x0a9e('0x41')](_0x586d2f[_0x0a9e('0xd8')])&&_0x586d2f[_0x0a9e('0x130')]==='16'&&_0x586d2f[_0x0a9e('0x133')]==='6'&&_[_0x0a9e('0xd7')](_0xf4de86[_0x0a9e('0x134')])){if(_0xf4de86['unlockAgent']){rpcDb['unlockContact'](_0xf4de86[_0x0a9e('0x85')]);}if(_0xf4de86[_0x0a9e('0x83')]){rpcDb['disableContact'](_0xf4de86[_0x0a9e('0x85')]);}_0x586d2f[_0x0a9e('0xd8')]='22';this['callProgressDetectingAgent'](_0xf4de86,_0x556bb7,_0x586d2f);}else if(_0xf4de86&&_0xf4de86[_0x0a9e('0x134')]){if(_0x586d2f['cause']==='16'&&this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]]['dialAnswer']){logger[_0x0a9e('0x26')](_0x0a9e('0x135'),_0x586d2f['linkedid'],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7['name'],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}else if(this[_0x0a9e('0x13')][_0x586d2f['linkedid']][_0x0a9e('0x4d')]){logger[_0x0a9e('0x26')]('[syncHangup][talking][cause]',_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7[_0x0a9e('0x29')],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f['linkedid'],_0x586d2f['cause']);}}};Preview['prototype']['syncDialEnd']=function(_0x5e9817){if(this[_0x0a9e('0x13')][_0x5e9817[_0x0a9e('0xd4')]]&&_0x5e9817['destlinkedid']!==_0x5e9817['destuniqueid']){this[_0x0a9e('0x72')](_0x5e9817,_0x5e9817['destlinkedid'],_0x5e9817[_0x0a9e('0xcd')]);}};Preview[_0x0a9e('0xd')][_0x0a9e('0x136')]=function(_0x175c97){if(this[_0x0a9e('0x13')][_0x175c97[_0x0a9e('0x84')]]&&_0x175c97['linkedid']!==_0x175c97[_0x0a9e('0x91')]&&!this[_0x0a9e('0x13')][_0x175c97['linkedid']][_0x0a9e('0x4d')]){if(_0x175c97[_0x0a9e('0x130')]==='1'){this[_0x0a9e('0x72')](_0x175c97,_0x175c97[_0x0a9e('0x84')],_0x175c97[_0x0a9e('0x130')]);}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x137')]=function(_0x4a36df,_0x331216,_0x508395){if(this[_0x0a9e('0x13')][_0x4a36df]){if(_[_0x0a9e('0x41')](this['actions'][_0x4a36df][_0x0a9e('0x122')])){this[_0x0a9e('0x13')][_0x4a36df]['variables']={};}this[_0x0a9e('0x13')][_0x4a36df]['variables'][_0x331216]=_0x508395;}};Preview[_0x0a9e('0xd')][_0x0a9e('0x1f')]=function(_0x5d0620){try{if(!_[_0x0a9e('0x41')](_0x5d0620)){if(ut['filterKey'](_[_0x0a9e('0x138')](_0x5d0620[_0x0a9e('0x139')])[0x0])){this[_0x0a9e('0x137')](_0x5d0620[_0x0a9e('0x91')],_[_0x0a9e('0x138')](_0x5d0620[_0x0a9e('0x139')])[0x0],_0x5d0620[_0x0a9e('0x13a')]);}}}catch(_0x53b5c2){logger[_0x0a9e('0x13b')](_0x0a9e('0x13c'),util[_0x0a9e('0x13d')](_0x53b5c2,{'showHidden':![],'depth':null}));}};Preview[_0x0a9e('0xd')][_0x0a9e('0x21')]=function(_0x5932ad){if(_0x5932ad){if(this[_0x0a9e('0x13')][_0x5932ad['transfertargetlinkedid']]){this['actions'][_0x5932ad[_0x0a9e('0x13e')]]['transfer']=!![];}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x23')]=function(_0x58d5fd){if(_0x58d5fd){if(this[_0x0a9e('0x13')][_0x58d5fd[_0x0a9e('0x13f')]]){this[_0x0a9e('0x13')][_0x58d5fd[_0x0a9e('0x13f')]][_0x0a9e('0x134')]=!![];}}};module[_0x0a9e('0x140')]=Preview;
\ No newline at end of file
index b8f2295..d501592 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5a2=['COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContact','../../../config/logger','../rpc/cmHopper','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','createHistory','catch','[createHistory]\x20','resolve','then','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','answertime','queuecallerleaveAt','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','queuecallerexitreason'];(function(_0x18e52b,_0x1fae35){var _0x3d3062=function(_0x133b14){while(--_0x133b14){_0x18e52b['push'](_0x18e52b['shift']());}};_0x3d3062(++_0x1fae35);}(_0xe5a2,0x132));var _0x2e5a=function(_0x1296b8,_0xfd6fdc){_0x1296b8=_0x1296b8-0x0;var _0x1a17c4=_0xe5a2[_0x1296b8];return _0x1a17c4;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0x2e5a('0x0'))('preview');var cmHopper=require(_0x2e5a('0x1'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x2e5a('0x2'));var agentReportPreview=require(_0x2e5a('0x3'));var voiceQueueReport=require(_0x2e5a('0x4'));function loggerCatch(_0x213bec){return function(_0xa9a80a){logger['error'](_0x213bec,util['inspect'](_0xa9a80a,{'showHidden':![],'depth':null}));};}function create(_0x67044d){return cmHopperHistory[_0x2e5a('0x5')](_0x67044d)[_0x2e5a('0x6')](loggerCatch(_0x2e5a('0x7')));}function createAgent(_0x29e715){return BPromise[_0x2e5a('0x8')]()[_0x2e5a('0x9')](agentReportPreview['createHistory'](_0x29e715))['catch'](loggerCatch('[createHistory]\x20'));}function moveContact(_0x3755d2){return cmHopper[_0x2e5a('0xa')](_0x3755d2,!![])['catch'](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0x2e5a('0xb')]=function(_0x2c26fa){return cmHopperBlack['checkIsBlackList'](_0x2c26fa)['catch'](loggerCatch(_0x2e5a('0xc')));};exports[_0x2e5a('0xd')]=function(_0x5e1b44){return BPromise[_0x2e5a('0x8')]()[_0x2e5a('0x9')](cmHopper[_0x2e5a('0xd')](_0x5e1b44))[_0x2e5a('0x6')](loggerCatch(_0x2e5a('0xe')));};exports[_0x2e5a('0x5')]=function(_0x3ae56c,_0x43b46b){create(_0x3ae56c)['catch'](loggerCatch(_0x43b46b));moveContact(_0x3ae56c)['catch'](loggerCatch(_0x43b46b));};exports[_0x2e5a('0xf')]=function(_0x5cf95f,_0x460b26){createAgent(_0x5cf95f)[_0x2e5a('0x6')](loggerCatch(_0x460b26));};exports[_0x2e5a('0x10')]=function(_0x2f837f,_0x59201f){create(_0x2f837f)['catch'](loggerCatch(_0x59201f));};exports[_0x2e5a('0x11')]=function(_0x17be02,_0x569ed2){moveContact(_0x17be02)[_0x2e5a('0x6')](loggerCatch(_0x569ed2));};exports['rescheduleContact']=function(_0xee2c34,_0xc5f7fd,_0x37bac2){if(_0xc5f7fd){_0xee2c34[_0x2e5a('0x12')]=null;}if(_0x37bac2){_0xee2c34[_0x2e5a('0x13')]=![];}return cmHopper['rescheduleContact'](_0xee2c34)[_0x2e5a('0x6')](loggerCatch(_0x2e5a('0x14')));};exports['countReScheduled']=function(_0x440dc8){return cmHopper[_0x2e5a('0x15')](_0x440dc8)[_0x2e5a('0x6')](loggerCatch(_0x2e5a('0x16')));};exports[_0x2e5a('0x17')]=function(_0x59a619){return cmHopper[_0x2e5a('0x17')]({'UserId':null},_0x59a619,0x1)[_0x2e5a('0x6')](loggerCatch(_0x2e5a('0x18')));};exports[_0x2e5a('0x19')]=function(_0x21b112){return cmHopper[_0x2e5a('0x17')]({'active':![]},_0x21b112,0x1)[_0x2e5a('0x6')](loggerCatch(_0x2e5a('0x1a')));};exports[_0x2e5a('0x1b')]=function(_0x1db8ec){var _0xcb6dd3={};_0xcb6dd3['type']=_0x1db8ec[_0x2e5a('0x1c')];_0xcb6dd3[_0x2e5a('0x1d')]=_0x1db8ec['uniqueid'];_0xcb6dd3['calleridnum']=_0x1db8ec[_0x2e5a('0x1e')];_0xcb6dd3['calleridname']=_0x1db8ec[_0x2e5a('0x1f')];_0xcb6dd3['queue']=_0x1db8ec['queue'];_0xcb6dd3[_0x2e5a('0x20')]=_0x1db8ec[_0x2e5a('0x21')];_0xcb6dd3[_0x2e5a('0x22')]=_0x1db8ec[_0x2e5a('0x21')];_0xcb6dd3['queuecallercomplete']=0x1;_0xcb6dd3['queuecallercompleteAt']=_0x1db8ec['endtime'];_0xcb6dd3[_0x2e5a('0x23')]=_0x1db8ec[_0x2e5a('0x24')];_0xcb6dd3[_0x2e5a('0x25')]=_0x2e5a('0x26');_0xcb6dd3[_0x2e5a('0x27')]=_0x2e5a('0x28');_0xcb6dd3[_0x2e5a('0x29')]=0x0;_0xcb6dd3[_0x2e5a('0x2a')]=0x1;_0xcb6dd3['lastAssignedTo']=_0x1db8ec[_0x2e5a('0x24')];_0xcb6dd3[_0x2e5a('0x2b')]=_0x2e5a('0x2c');return BPromise[_0x2e5a('0x8')]()[_0x2e5a('0x9')](voiceQueueReport[_0x2e5a('0x2d')](_0xcb6dd3))[_0x2e5a('0x6')](loggerCatch(_0x2e5a('0x2e')));};exports['getContactRecallMe']=function(_0x30bb13,_0xa625eb){return BPromise[_0x2e5a('0x8')]()[_0x2e5a('0x9')](cmHopper[_0x2e5a('0x2f')](_0x30bb13,_0xa625eb))['catch'](loggerCatch(_0x2e5a('0x30')));};exports['rescheduleContactInQueue']=function(_0x3623de){return cmHopper[_0x2e5a('0x31')](_0x3623de,!![],!![])[_0x2e5a('0x6')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
+var _0xc472=['assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','inspect','createHistory','catch','then','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','resolve','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queue','answertime','queuecallerleaveAt','queuecallercompleteAt','endtime','context','from-sip','xcally-motion-preview'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc472,0x10d));var _0x2c47=function(_0x2aefff,_0x26a24b){_0x2aefff=_0x2aefff-0x0;var _0x4e4534=_0xc472[_0x2aefff];return _0x4e4534;};'use strict';var util=require(_0x2c47('0x0'));var BPromise=require(_0x2c47('0x1'));var logger=require(_0x2c47('0x2'))(_0x2c47('0x3'));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x2c47('0x4'));var cmHopperBlack=require(_0x2c47('0x5'));var agentReportPreview=require(_0x2c47('0x6'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x194f8e){return function(_0x2e1ae6){logger['error'](_0x194f8e,util[_0x2c47('0x7')](_0x2e1ae6,{'showHidden':![],'depth':null}));};}function create(_0x292c4a){return cmHopperHistory[_0x2c47('0x8')](_0x292c4a)[_0x2c47('0x9')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x3df89d){return BPromise['resolve']()[_0x2c47('0xa')](agentReportPreview[_0x2c47('0x8')](_0x3df89d))[_0x2c47('0x9')](loggerCatch(_0x2c47('0xb')));}function moveContact(_0x34d066){return cmHopper[_0x2c47('0xc')](_0x34d066,!![])[_0x2c47('0x9')](loggerCatch(_0x2c47('0xd')));}exports[_0x2c47('0xe')]=function(_0x4d2644){return cmHopperBlack[_0x2c47('0xe')](_0x4d2644)[_0x2c47('0x9')](loggerCatch(_0x2c47('0xf')));};exports['getContactPreview']=function(_0x3edffc){return BPromise[_0x2c47('0x10')]()[_0x2c47('0xa')](cmHopper['getContactPreview'](_0x3edffc))['catch'](loggerCatch(_0x2c47('0x11')));};exports['createHistory']=function(_0x13f415,_0x287f82){create(_0x13f415)[_0x2c47('0x9')](loggerCatch(_0x287f82));moveContact(_0x13f415)[_0x2c47('0x9')](loggerCatch(_0x287f82));};exports[_0x2c47('0x12')]=function(_0x516ffb,_0x37d63){createAgent(_0x516ffb)[_0x2c47('0x9')](loggerCatch(_0x37d63));};exports[_0x2c47('0x13')]=function(_0xe10114,_0x4090f4){create(_0xe10114)['catch'](loggerCatch(_0x4090f4));};exports[_0x2c47('0x14')]=function(_0x45ca91,_0x284e84){moveContact(_0x45ca91)[_0x2c47('0x9')](loggerCatch(_0x284e84));};exports[_0x2c47('0x15')]=function(_0x355b8f,_0x39fd07,_0x5802cb){if(_0x39fd07){_0x355b8f[_0x2c47('0x16')]=null;}if(_0x5802cb){_0x355b8f[_0x2c47('0x17')]=![];}return cmHopper[_0x2c47('0x15')](_0x355b8f)[_0x2c47('0x9')](loggerCatch(_0x2c47('0x18')));};exports[_0x2c47('0x19')]=function(_0x3a13d2){return cmHopper['countReScheduled'](_0x3a13d2)[_0x2c47('0x9')](loggerCatch(_0x2c47('0x1a')));};exports[_0x2c47('0x1b')]=function(_0x9ce565){return cmHopper[_0x2c47('0x1b')]({'UserId':null},_0x9ce565,0x1)[_0x2c47('0x9')](loggerCatch(_0x2c47('0x1c')));};exports[_0x2c47('0x1d')]=function(_0x4ff910){return cmHopper['unlockContact']({'active':![]},_0x4ff910,0x1)['catch'](loggerCatch(_0x2c47('0x1e')));};exports['crateCustomerReportQueue']=function(_0x1c24bc){var _0x4e4777={};_0x4e4777[_0x2c47('0x1f')]=_0x1c24bc['type'];_0x4e4777[_0x2c47('0x20')]=_0x1c24bc['uniqueid'];_0x4e4777[_0x2c47('0x21')]=_0x1c24bc[_0x2c47('0x21')];_0x4e4777[_0x2c47('0x22')]=_0x1c24bc['calleridname'];_0x4e4777[_0x2c47('0x23')]=_0x1c24bc[_0x2c47('0x23')];_0x4e4777['queuecallerjoinAt']=_0x1c24bc[_0x2c47('0x24')];_0x4e4777[_0x2c47('0x25')]=_0x1c24bc[_0x2c47('0x24')];_0x4e4777['queuecallercomplete']=0x1;_0x4e4777[_0x2c47('0x26')]=_0x1c24bc[_0x2c47('0x27')];_0x4e4777['connectedlinename']=_0x1c24bc['membername'];_0x4e4777[_0x2c47('0x28')]=_0x2c47('0x29');_0x4e4777['exten']=_0x2c47('0x2a');_0x4e4777['holdtime']=0x0;_0x4e4777[_0x2c47('0x2b')]=0x1;_0x4e4777[_0x2c47('0x2c')]=_0x1c24bc['membername'];_0x4e4777[_0x2c47('0x2d')]=_0x2c47('0x2e');return BPromise[_0x2c47('0x10')]()[_0x2c47('0xa')](voiceQueueReport['create'](_0x4e4777))['catch'](loggerCatch(_0x2c47('0x2f')));};exports[_0x2c47('0x30')]=function(_0x1dbdcd,_0x3b7de3){return BPromise[_0x2c47('0x10')]()['then'](cmHopper[_0x2c47('0x30')](_0x1dbdcd,_0x3b7de3))['catch'](loggerCatch(_0x2c47('0x31')));};exports[_0x2c47('0x32')]=function(_0x38dbcb){return cmHopper[_0x2c47('0x15')](_0x38dbcb,!![],!![])[_0x2c47('0x9')](loggerCatch(_0x2c47('0x33')));};
\ No newline at end of file
index 64ed100..832514f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37f6=['milliseconds','diff','seconds','createBody','CampaignId','idContact','campaigntype','countglobal','callbackuniqueid','callbackat','recallme','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitter','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','noanswer','variables','keys','forEach','buildNoAnswerEventPayload','lodash','moment','../../../../config/logger','preview','env','127.0.0.1','../../dialer/utils','loggerCatch','error','inspect','logger','info','loggerError','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','isActive','addVariables','Queue','name','calleridname','calleridnum','dialer','VoiceQueueId','dialOriginateTimeout','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','toLowerVariables','hasOwnProperty','toLower','isNil','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','responsetime','endtime','logAgent','ringtime','getSeconds','starttime','logLookAgent','membername','UserId','logCustomer','talktime','isFailure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','clone','Global','scheduledAt','active','scheduledat','add','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','interface','motionChannel','mandatoryDisposition','agentReadyId','not_inuse','reachable','push'];(function(_0x3799cd,_0x131494){var _0x3410d3=function(_0x4a742b){while(--_0x4a742b){_0x3799cd['push'](_0x3799cd['shift']());}};_0x3410d3(++_0x131494);}(_0x37f6,0x149));var _0x637f=function(_0x2deb01,_0x4e741c){_0x2deb01=_0x2deb01-0x0;var _0x3920b3=_0x37f6[_0x2deb01];return _0x3920b3;};'use strict';var util=require('util');var _=require(_0x637f('0x0'));var moment=require(_0x637f('0x1'));var logger=require(_0x637f('0x2'))(_0x637f('0x3'));var ipAgi=process[_0x637f('0x4')]['XCALLY_IP_AGI']||_0x637f('0x5');var utils=require(_0x637f('0x6'));exports[_0x637f('0x7')]=function(_0x2aa7c0){return function(_0x47c01b){logger[_0x637f('0x8')](_0x2aa7c0,util[_0x637f('0x9')](_0x47c01b,{'showHidden':![],'depth':null}));};};exports[_0x637f('0xa')]=function(_0x41b4a7,_0x42a304){logger[_0x637f('0xb')](_0x41b4a7,util[_0x637f('0x9')](_0x42a304,{'showHidden':![],'depth':null}));};exports[_0x637f('0xc')]=function(_0x5876a4,_0x4bad4a){logger[_0x637f('0x8')](_0x5876a4,util[_0x637f('0x9')](_0x4bad4a,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x1ecc2b){return function(_0x23f180){logger[_0x637f('0xb')](_0x1ecc2b,util['inspect'](_0x23f180,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x3e93cb,_0x2579ad,_0x34caf1){return{'message':_0x3e93cb,'unlock':_0x2579ad,'active':_0x34caf1};};exports[_0x637f('0xd')]=function(_0x51631d,_0x56275a,_0x28ebc0){if(!_[_0x637f('0xe')](_0x28ebc0)&&_0x637f('0xf')===typeof _0x28ebc0&&!_['isEmpty'](_0x28ebc0)){if(!_[_0x637f('0xe')](_0x56275a)&&'string'===typeof _0x56275a&&!_[_0x637f('0x10')](_0x56275a)){return util[_0x637f('0x11')](_0x637f('0x12'),_0x56275a,_0x28ebc0);}return util['format'](_0x637f('0x12'),_0x28ebc0,_0x28ebc0);}if(!_[_0x637f('0xe')](_0x51631d)&&_0x637f('0xf')===typeof _0x51631d&&!_[_0x637f('0x10')](_0x51631d)){return _0x51631d;}return'\x22\x22\x20<>';};exports[_0x637f('0x13')]=function(_0x373247){if(_['isNil'](_0x373247)){return![];}return _0x373247;};exports[_0x637f('0x14')]=function(_0x1fe9cc,_0x1c3327,_0xc67c63,_0x3e4472,_0x456305,_0x4dd8ac){var _0xb9dbc1={'XMD-QUEUE':_0x1c3327[_0x637f('0x15')]?_0x1c3327[_0x637f('0x15')][_0x637f('0x16')]:'','XMD-CALLERID':_0x3e4472,'XMD-CALLERID-PREVIEW':_0x4dd8ac?util['format'](_0x637f('0x12'),_0x4dd8ac[_0x637f('0x17')],_0x4dd8ac[_0x637f('0x18')]):_0x3e4472,'XMD-DIALID':_0x456305,'XMD-CONTACTID':_0x1c3327['ContactId'],'XMD-CDRTYPE':_0x637f('0x19'),'CALLERID(all)':_0x3e4472,'XMD-VOICEQUEUEID':_0x1c3327[_0x637f('0x1a')],'XMD-DIALCHANNEL':_0xc67c63,'XMD-DIALTIMEOUT':_0x1fe9cc[_0x637f('0x1b')]||0x1e,'XMD-DIALOPTIONS':util[_0x637f('0x11')]('\x22rtTxX%s%s\x22',_0x1fe9cc[_0x637f('0x1c')]?'g':'',_['isEmpty'](_0x1fe9cc['monitor_format'])?'':_0x637f('0x1d')),'XMD-DIALURL':_0x1fe9cc[_0x637f('0x1e')]||'','XMD-AGI':_0x1fe9cc[_0x637f('0x1f')]?util[_0x637f('0x11')](_0x637f('0x20'),ipAgi,_0x1fe9cc[_0x637f('0x1f')]):_0x637f('0x21'),'XMD-AGIAFTER':_0x1fe9cc[_0x637f('0x1c')]?util[_0x637f('0x11')](_0x637f('0x20'),ipAgi,_0x1fe9cc['dialQueueProject2']):'NONE','XMD-ORIGINATECALLERIDNUM':_0x4dd8ac?_0x4dd8ac[_0x637f('0x22')]:'','XMD-ORIGINATECALLERIDNAME':_0x4dd8ac?_0x4dd8ac['originatecalleridname']:'','XMD-DESTINATION':_0x637f('0x23'),'SIPADDHEADER':_0x637f('0x24')};if(!_[_0x637f('0x10')](_0x1fe9cc['monitor_format'])){_0xb9dbc1[util[_0x637f('0x11')]('%s',_0x637f('0x25'))]=_0x1fe9cc['monitor_format'];_0xb9dbc1[util[_0x637f('0x11')]('%s',_0x637f('0x26'))]=_0x456305;}return _0xb9dbc1;};exports[_0x637f('0x27')]=function(_0x5a8b21){var _0x2bc004={};for(var _0x2f8f3a in _0x5a8b21){if(_0x5a8b21[_0x637f('0x28')](_0x2f8f3a)){_0x2bc004[util[_0x637f('0x11')]('%s',_[_0x637f('0x29')](_0x2f8f3a))]=_0x5a8b21[_0x2f8f3a];}}return{'variables':_0x2bc004};};exports['updateOriginated']=function(_0x26541f,_0x466637){if(!_[_0x637f('0x2a')](_0x26541f)){if(_0x26541f[_0x637f('0x28')](_0x637f('0x2b'))){if(_0x26541f[_0x637f('0x2b')]>0x0){_0x26541f[_0x637f('0x2b')]-=0x1;}else{logger[_0x637f('0x8')](_0x637f('0x2c'),_0x466637);}}}else{logger['error'](_0x637f('0x2d'),_0x466637);}};exports[_0x637f('0x2e')]=function(_0x10dde1){var _0x52b005=moment()[_0x637f('0x11')](_0x637f('0x2f'));_0x10dde1[_0x637f('0x30')]=0xd;_0x10dde1[_0x637f('0x31')]=_0x637f('0x32');_0x10dde1['starttime']=_0x52b005;_0x10dde1[_0x637f('0x33')]=_0x52b005;_0x10dde1[_0x637f('0x34')]=_0x52b005;};exports[_0x637f('0x35')]=function(_0x434e3a,_0xbda791,_0x1b0daa){var _0x41ae1f=moment()[_0x637f('0x11')](_0x637f('0x2f'));_0x434e3a[_0x637f('0x30')]=_0xbda791;_0x434e3a[_0x637f('0x31')]=_0x1b0daa;_0x434e3a['responsetime']=_0x41ae1f;_0x434e3a[_0x637f('0x36')]=utils[_0x637f('0x37')](_0x434e3a[_0x637f('0x33')],_0x434e3a[_0x637f('0x38')]);};exports[_0x637f('0x39')]=function(_0x271bf5,_0x473c77,_0x1257bc){_0x271bf5[_0x637f('0x3a')]=_0x473c77;_0x271bf5[_0x637f('0x3b')]=_0x1257bc;};exports[_0x637f('0x3c')]=function(_0x4ac2c0,_0xd31d88,_0x5ead4d){var _0x3e010b=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x4ac2c0[_0x637f('0x30')]=_0xd31d88;_0x4ac2c0['statedesc']=_0x5ead4d;_0x4ac2c0[_0x637f('0x33')]=_0x4ac2c0['responsetime']?_0x4ac2c0[_0x637f('0x33')]:_0x3e010b;_0x4ac2c0[_0x637f('0x34')]=_0x4ac2c0[_0x637f('0x34')]?_0x4ac2c0[_0x637f('0x34')]:_0x3e010b;_0x4ac2c0[_0x637f('0x36')]=utils['getSeconds'](_0x4ac2c0[_0x637f('0x33')]||0x0,_0x4ac2c0['starttime']||0x0);_0x4ac2c0[_0x637f('0x3d')]=_0x4ac2c0['answertime']?utils[_0x637f('0x37')](_0x4ac2c0[_0x637f('0x34')],_0x4ac2c0['answertime']):0x0;};exports[_0x637f('0x3e')]=function(_0x305641){return _0x305641==='Failure';};exports[_0x637f('0x3f')]=function(_0x5afc13,_0x4645ab,_0x41266b,_0x3924b0,_0x502bca){var _0x82c829=_0x3924b0?_0x637f('0x40'):_0x5afc13['calleridname'];_0x82c829=_0x502bca?_0x637f('0x41'):_0x82c829;return{'actionid':_0x5afc13[_0x637f('0x42')],'action':_0x637f('0x43'),'channel':_0x5afc13[_0x637f('0x44')],'callerid':util[_0x637f('0x11')](_0x637f('0x12'),_0x82c829,_0x5afc13[_0x637f('0x18')]),'Exten':_0x637f('0x23'),'Context':_0x637f('0x45'),'Priority':'1','variable':_0x41266b,'timeout':(_0x4645ab[_0x637f('0x46')]||0x1e)*0x3e8,'async':!![],'channelid':_0x5afc13[_0x637f('0x42')]};};exports[_0x637f('0x47')]=function(_0x221cec){return _0x221cec[_0x637f('0x48')]+_0x221cec[_0x637f('0x49')]+_0x221cec['countnoanswerretry']+_0x221cec[_0x637f('0x4a')]+_0x221cec['countnosuchnumberretry'];};exports['cloneAction']=function(_0x55c1cf){var _0x49167a=_[_0x637f('0x4b')](_0x55c1cf);_0x49167a['state']=0xf;_0x49167a[_0x637f('0x31')]=_0x637f('0x4c');return _0x49167a;};exports[_0x637f('0x4d')]=function(_0x384394,_0x41b933,_0x386ee5){var _0x55cdd2={};_0x55cdd2[_0x41b933]=_0x384394[_0x41b933];_0x55cdd2[_0x637f('0x4e')]=![];_0x55cdd2[_0x637f('0x4f')]=moment()[_0x637f('0x50')](_0x386ee5,_0x637f('0x51'))['format']('YYYY-MM-DD\x20HH:mm:ss');_0x55cdd2['ContactId']=_0x384394[_0x637f('0x52')];_0x55cdd2[_0x637f('0x53')]=_0x384394[_0x637f('0x53')];_0x55cdd2[_0x637f('0x1a')]=_0x384394[_0x637f('0x1a')]||undefined;return _0x55cdd2;};exports[_0x637f('0x54')]=function(_0x4bb078,_0x5a843e){if(!_[_0x637f('0x2a')](_0x4bb078)){if(_0x4bb078[_0x637f('0x55')]>0x0){_0x4bb078['pTalking']-=0x1;}else{logger[_0x637f('0x8')](_0x5a843e,_0x637f('0x56'));}}else{logger[_0x637f('0x8')](_0x5a843e,_0x637f('0x57'));}};exports[_0x637f('0x58')]=function(_0x4e1b59){if(_0x4e1b59<=0x0){return!![];}return![];};function buildObj(_0x11e4e1,_0x16fc53,_0x36b263){_0x11e4e1[_0x637f('0x59')]=_0x16fc53;_0x11e4e1['name']=_0x11e4e1['queue'];_0x11e4e1[_0x637f('0x5a')]=_0x11e4e1['channelAgent'];_0x11e4e1[_0x637f('0x5b')]='voice';if(_0x36b263){_0x11e4e1[_0x637f('0x5c')]=_0x36b263[_0x637f('0x5c')];}return _0x11e4e1;}exports['buildObj']=buildObj;exports[_0x637f('0x5d')]=function(_0x1f8357){var _0x1046a8=[];for(var _0x5e59dc in _0x1f8357){if(_0x1f8357[_0x637f('0x28')](_0x5e59dc)){if(!_[_0x637f('0x2a')](_0x1f8357[_0x5e59dc])&&_0x1f8357[_0x5e59dc][_0x637f('0x30')]===_0x637f('0x5e')&&_0x1f8357[_0x5e59dc]['status']===_0x637f('0x5f')){_0x1046a8[_0x637f('0x60')](_0x1f8357[_0x5e59dc]['id']);}}}return _0x1046a8;};exports['getDiff']=function(_0x107e43){var _0x5c236c=moment()[_0x637f('0x61')](0x0);var _0x455f8f=moment(_0x107e43)['milliseconds'](0x0);return _0x5c236c[_0x637f('0x62')](_0x455f8f,_0x637f('0x63'));};exports[_0x637f('0x64')]=function(_0x2fc1fd){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2fc1fd['ContactId'],'ListId':_0x2fc1fd[_0x637f('0x53')],'VoiceQueueId':_0x2fc1fd[_0x637f('0x1a')]||undefined,'CampaignId':_0x2fc1fd[_0x637f('0x65')]||undefined};};exports['filterKey']=function(_0x5ade0d){if(_0x5ade0d==='uniqueid'||_0x5ade0d===_0x637f('0x66')||_0x5ade0d==='queue'||_0x5ade0d==='type'||_0x5ade0d===_0x637f('0x67')||_0x5ade0d==='dialAnswer'||_0x5ade0d===_0x637f('0x3a')||_0x5ade0d===_0x637f('0x44')||_0x5ade0d===_0x637f('0x17')||_0x5ade0d==='active'||_0x5ade0d===_0x637f('0x18')||_0x5ade0d===_0x637f('0x4f')||_0x5ade0d===_0x637f('0x48')||_0x5ade0d===_0x637f('0x49')||_0x5ade0d==='countnoanswerretry'||_0x5ade0d===_0x637f('0x68')||_0x5ade0d==='callback'||_0x5ade0d===_0x637f('0x69')||_0x5ade0d===_0x637f('0x6a')||_0x5ade0d===_0x637f('0x6b')||_0x5ade0d===_0x637f('0x52')||_0x5ade0d===_0x637f('0x53')||_0x5ade0d==='UserId'||_0x5ade0d===_0x637f('0x1a')||_0x5ade0d==='sipcallid'||_0x5ade0d==='xmd-voicequeueid'||_0x5ade0d===_0x637f('0x6c')||_0x5ade0d==='xmd-phone'||_0x5ade0d===_0x637f('0x6d')||_0x5ade0d===_0x637f('0x6e')||_0x5ade0d===_0x637f('0x6f')||_0x5ade0d===_0x637f('0x70')||_0x5ade0d===_0x637f('0x71')||_0x5ade0d===_0x637f('0x72')||_0x5ade0d===_0x637f('0x73')||_0x5ade0d===_0x637f('0x74')||_0x5ade0d==='xmd-callerid'||_0x5ade0d===_0x637f('0x75')||_0x5ade0d===_0x637f('0x76')||_0x5ade0d===_0x637f('0x77')||_0x5ade0d===_0x637f('0x78')||_0x5ade0d==='rtpaudioqosjitter'||_0x5ade0d===_0x637f('0x79')||_0x5ade0d===_0x637f('0x7a')||_0x5ade0d===_0x637f('0x7b')||_0x5ade0d===_0x637f('0x7c')||_0x5ade0d===_0x637f('0x7d')||_0x5ade0d==='rtpaudioqos'||_0x5ade0d===_0x637f('0x78')||_0x5ade0d===_0x637f('0x7e')||_0x5ade0d==='rtpaudioqosjitterbridged'||_0x5ade0d==='rtpaudioqosloss'||_0x5ade0d===_0x637f('0x7b')||_0x5ade0d===_0x637f('0x7c')||_0x5ade0d===_0x637f('0x7d')||_0x5ade0d===_0x637f('0x7f')||_0x5ade0d===_0x637f('0x80')||_0x5ade0d===_0x637f('0x30')||_0x5ade0d==='statedesc'){return![];}return!![];};exports[_0x637f('0x81')]=function(_0x39327b,_0x29921f){var _0xd16e97,_0x5e0a1b,_0xfc83b7;if(_0x29921f<=0x0){_0x29921f=0x1;}_0xd16e97=new RegExp(_0x637f('0x82')+_0x29921f+'}$');_0x5e0a1b=Math['pow'](0xa,_0x29921f-0x1);_0xfc83b7=Math[_0x637f('0x83')](0xa,_0x29921f)-0x1;return util[_0x637f('0x11')]('%s',_[_0x637f('0x84')](_0x39327b,_0xd16e97,_[_0x637f('0x85')](_0x5e0a1b,_0xfc83b7)));};exports[_0x637f('0x86')]=function(_0x302f32){var _0x513435=_0x302f32[_0x637f('0x87')](/"(.*?)"/);return _0x513435?_0x513435[0x1]:_0x302f32;};exports[_0x637f('0x88')]=function(_0x1bec53){var _0x306bee=_0x1bec53[_0x637f('0x87')](/<(.*?)>/);return _0x306bee?_0x306bee[0x1]:_0x1bec53;};function buildNoAnswerEventPayload(_0x234a9b,_0x1c49e2){var _0x966423=buildObj(_0x234a9b,_0x637f('0x89'));if(!_[_0x637f('0x10')](_0x1c49e2[_0x637f('0x8a')])){Object[_0x637f('0x8b')](_0x1c49e2[_0x637f('0x8a')])[_0x637f('0x8c')](function(_0x3cba14){_0x966423[_0x3cba14['toLowerCase']()]=_0x1c49e2['variables'][_0x3cba14];});}return _0x966423;}exports[_0x637f('0x8d')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0xd012=['util','lodash','moment','XCALLY_IP_AGI','../../dialer/utils','error','inspect','logger','info','loggerError','logger2','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','name','calleridname','ContactId','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_UNIQUEID','toLowerVariables','hasOwnProperty','toLower','isNil','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','starttime','responsetime','endtime','logAgent','logLookAgent','UserId','logCustomer','ringtime','getSeconds','talktime','answertime','isFailure','Failure','BOOKED','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','clone','Global','scheduledAt','active','scheduledat','add','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','IsNotLoggedIn','lastevent','queue','interface','motionChannel','voice','mandatoryDisposition','buildObj','not_inuse','status','reachable','getDiff','milliseconds','seconds','createBody','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','membername','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitterbridged','bridgepeer','bridgepvtcallid','pow','replace','extractCalleridName','match','extractCalleridNumber','noanswer','variables','keys','forEach','toLowerCase','buildNoAnswerEventPayload'];(function(_0x2c585c,_0xe115bf){var _0xe3b848=function(_0x160abc){while(--_0x160abc){_0x2c585c['push'](_0x2c585c['shift']());}};_0xe3b848(++_0xe115bf);}(_0xd012,0x8d));var _0x2d01=function(_0xd4ded0,_0xfbd5e9){_0xd4ded0=_0xd4ded0-0x0;var _0x4a6a91=_0xd012[_0xd4ded0];return _0x4a6a91;};'use strict';var util=require(_0x2d01('0x0'));var _=require(_0x2d01('0x1'));var moment=require(_0x2d01('0x2'));var logger=require('../../../../config/logger')('preview');var ipAgi=process['env'][_0x2d01('0x3')]||'127.0.0.1';var utils=require(_0x2d01('0x4'));exports['loggerCatch']=function(_0x2c942f){return function(_0x4876bc){logger[_0x2d01('0x5')](_0x2c942f,util[_0x2d01('0x6')](_0x4876bc,{'showHidden':![],'depth':null}));};};exports[_0x2d01('0x7')]=function(_0x380043,_0x3f93c1){logger[_0x2d01('0x8')](_0x380043,util[_0x2d01('0x6')](_0x3f93c1,{'showHidden':![],'depth':null}));};exports[_0x2d01('0x9')]=function(_0x34c0ac,_0x518e98){logger[_0x2d01('0x5')](_0x34c0ac,util[_0x2d01('0x6')](_0x518e98,{'showHidden':![],'depth':null}));};exports[_0x2d01('0xa')]=function(_0x4968eb){return function(_0x244ea5){logger[_0x2d01('0x8')](_0x4968eb,util[_0x2d01('0x6')](_0x244ea5,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x4bbcf2,_0x576484,_0xea2de0){return{'message':_0x4bbcf2,'unlock':_0x576484,'active':_0xea2de0};};exports[_0x2d01('0xb')]=function(_0x5e3b91,_0x26ee47,_0x49818d){if(!_[_0x2d01('0xc')](_0x49818d)&&_0x2d01('0xd')===typeof _0x49818d&&!_[_0x2d01('0xe')](_0x49818d)){if(!_[_0x2d01('0xc')](_0x26ee47)&&_0x2d01('0xd')===typeof _0x26ee47&&!_[_0x2d01('0xe')](_0x26ee47)){return util[_0x2d01('0xf')](_0x2d01('0x10'),_0x26ee47,_0x49818d);}return util[_0x2d01('0xf')]('\x22%s\x22\x20<%s>',_0x49818d,_0x49818d);}if(!_['isUndefined'](_0x5e3b91)&&_0x2d01('0xd')===typeof _0x5e3b91&&!_['isEmpty'](_0x5e3b91)){return _0x5e3b91;}return _0x2d01('0x11');};exports[_0x2d01('0x12')]=function(_0x4a9a7a){if(_['isNil'](_0x4a9a7a)){return![];}return _0x4a9a7a;};exports[_0x2d01('0x13')]=function(_0x5c6166,_0x5e5197,_0x4aeac8,_0x59e037,_0x8cc485,_0x294980){var _0x152207={'XMD-QUEUE':_0x5e5197[_0x2d01('0x14')]?_0x5e5197[_0x2d01('0x14')][_0x2d01('0x15')]:'','XMD-CALLERID':_0x59e037,'XMD-CALLERID-PREVIEW':_0x294980?util[_0x2d01('0xf')](_0x2d01('0x10'),_0x294980[_0x2d01('0x16')],_0x294980['calleridnum']):_0x59e037,'XMD-DIALID':_0x8cc485,'XMD-CONTACTID':_0x5e5197[_0x2d01('0x17')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x59e037,'XMD-VOICEQUEUEID':_0x5e5197['VoiceQueueId'],'XMD-DIALCHANNEL':_0x4aeac8,'XMD-DIALTIMEOUT':_0x5c6166['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x2d01('0xf')](_0x2d01('0x18'),_0x5c6166[_0x2d01('0x19')]?'g':'',_[_0x2d01('0xe')](_0x5c6166[_0x2d01('0x1a')])?'':_0x2d01('0x1b')),'XMD-DIALURL':_0x5c6166['dialPreviewUrl']||'','XMD-AGI':_0x5c6166[_0x2d01('0x1c')]?util['format'](_0x2d01('0x1d'),ipAgi,_0x5c6166['dialQueueProject']):'NONE','XMD-AGIAFTER':_0x5c6166[_0x2d01('0x19')]?util[_0x2d01('0xf')](_0x2d01('0x1d'),ipAgi,_0x5c6166[_0x2d01('0x19')]):_0x2d01('0x1e'),'XMD-ORIGINATECALLERIDNUM':_0x294980?_0x294980[_0x2d01('0x1f')]:'','XMD-ORIGINATECALLERIDNAME':_0x294980?_0x294980[_0x2d01('0x20')]:'','XMD-DESTINATION':_0x2d01('0x21'),'SIPADDHEADER':_0x2d01('0x22')};if(!_[_0x2d01('0xe')](_0x5c6166[_0x2d01('0x1a')])){_0x152207[util[_0x2d01('0xf')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x5c6166['monitor_format'];_0x152207[util[_0x2d01('0xf')]('%s',_0x2d01('0x23'))]=_0x8cc485;}return _0x152207;};exports[_0x2d01('0x24')]=function(_0x19fc54){var _0x48bd8b={};for(var _0x46ca5f in _0x19fc54){if(_0x19fc54[_0x2d01('0x25')](_0x46ca5f)){_0x48bd8b[util[_0x2d01('0xf')]('%s',_[_0x2d01('0x26')](_0x46ca5f))]=_0x19fc54[_0x46ca5f];}}return{'variables':_0x48bd8b};};exports['updateOriginated']=function(_0x213f70,_0x373030){if(!_[_0x2d01('0x27')](_0x213f70)){if(_0x213f70[_0x2d01('0x25')](_0x2d01('0x28'))){if(_0x213f70[_0x2d01('0x28')]>0x0){_0x213f70['originated']-=0x1;}else{logger[_0x2d01('0x5')](_0x2d01('0x29'),_0x373030);}}}else{logger[_0x2d01('0x5')](_0x2d01('0x2a'),_0x373030);}};exports[_0x2d01('0x2b')]=function(_0x1b77dc){var _0x344ed4=moment()[_0x2d01('0xf')](_0x2d01('0x2c'));_0x1b77dc[_0x2d01('0x2d')]=0xd;_0x1b77dc[_0x2d01('0x2e')]='Blacklist';_0x1b77dc[_0x2d01('0x2f')]=_0x344ed4;_0x1b77dc[_0x2d01('0x30')]=_0x344ed4;_0x1b77dc[_0x2d01('0x31')]=_0x344ed4;};exports[_0x2d01('0x32')]=function(_0x35fa4f,_0x318763,_0x205918){var _0x58f560=moment()[_0x2d01('0xf')](_0x2d01('0x2c'));_0x35fa4f[_0x2d01('0x2d')]=_0x318763;_0x35fa4f[_0x2d01('0x2e')]=_0x205918;_0x35fa4f[_0x2d01('0x30')]=_0x58f560;_0x35fa4f['ringtime']=utils['getSeconds'](_0x35fa4f[_0x2d01('0x30')],_0x35fa4f[_0x2d01('0x2f')]);};exports[_0x2d01('0x33')]=function(_0x3a3c44,_0x505787,_0x36016d){_0x3a3c44['membername']=_0x505787;_0x3a3c44[_0x2d01('0x34')]=_0x36016d;};exports[_0x2d01('0x35')]=function(_0x485880,_0x319090,_0x1b6a40){var _0x1ba2d2=moment()['format'](_0x2d01('0x2c'));_0x485880[_0x2d01('0x2d')]=_0x319090;_0x485880['statedesc']=_0x1b6a40;_0x485880['responsetime']=_0x485880[_0x2d01('0x30')]?_0x485880['responsetime']:_0x1ba2d2;_0x485880[_0x2d01('0x31')]=_0x485880[_0x2d01('0x31')]?_0x485880['endtime']:_0x1ba2d2;_0x485880[_0x2d01('0x36')]=utils[_0x2d01('0x37')](_0x485880[_0x2d01('0x30')]||0x0,_0x485880[_0x2d01('0x2f')]||0x0);_0x485880[_0x2d01('0x38')]=_0x485880[_0x2d01('0x39')]?utils['getSeconds'](_0x485880[_0x2d01('0x31')],_0x485880[_0x2d01('0x39')]):0x0;};exports[_0x2d01('0x3a')]=function(_0x43cbf8){return _0x43cbf8===_0x2d01('0x3b');};exports['variablesAction']=function(_0x55bffb,_0x1d11cb,_0x2c7b48,_0x16c98b,_0x504bf2){var _0x24a560=_0x16c98b?'RECALL':_0x55bffb[_0x2d01('0x16')];_0x24a560=_0x504bf2?_0x2d01('0x3c'):_0x24a560;return{'actionid':_0x55bffb[_0x2d01('0x3d')],'action':_0x2d01('0x3e'),'channel':_0x55bffb[_0x2d01('0x3f')],'callerid':util['format']('\x22%s\x22\x20<%s>',_0x24a560,_0x55bffb['calleridnum']),'Exten':_0x2d01('0x21'),'Context':_0x2d01('0x40'),'Priority':'1','variable':_0x2c7b48,'timeout':(_0x1d11cb[_0x2d01('0x41')]||0x1e)*0x3e8,'async':!![],'channelid':_0x55bffb['uniqueid']};};exports[_0x2d01('0x42')]=function(_0x361543){return _0x361543[_0x2d01('0x43')]+_0x361543[_0x2d01('0x44')]+_0x361543['countnoanswerretry']+_0x361543[_0x2d01('0x45')]+_0x361543['countnosuchnumberretry'];};exports['cloneAction']=function(_0x4fed02){var _0x2e1da2=_[_0x2d01('0x46')](_0x4fed02);_0x2e1da2['state']=0xf;_0x2e1da2[_0x2d01('0x2e')]=_0x2d01('0x47');return _0x2e1da2;};exports[_0x2d01('0x48')]=function(_0x5ae824,_0x457352,_0x40c792){var _0x1f0d3e={};_0x1f0d3e[_0x457352]=_0x5ae824[_0x457352];_0x1f0d3e[_0x2d01('0x49')]=![];_0x1f0d3e[_0x2d01('0x4a')]=moment()[_0x2d01('0x4b')](_0x40c792,_0x2d01('0x4c'))['format'](_0x2d01('0x2c'));_0x1f0d3e[_0x2d01('0x17')]=_0x5ae824['ContactId'];_0x1f0d3e[_0x2d01('0x4d')]=_0x5ae824['ListId'];_0x1f0d3e[_0x2d01('0x4e')]=_0x5ae824[_0x2d01('0x4e')]||undefined;return _0x1f0d3e;};exports[_0x2d01('0x4f')]=function(_0x2ef052,_0x126062){if(!_[_0x2d01('0x27')](_0x2ef052)){if(_0x2ef052[_0x2d01('0x50')]>0x0){_0x2ef052[_0x2d01('0x50')]-=0x1;}else{logger[_0x2d01('0x5')](_0x126062,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x2d01('0x5')](_0x126062,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x2d01('0x51')]=function(_0x2a09c6){if(_0x2a09c6<=0x0){return!![];}return![];};function buildObj(_0x4a3a46,_0x21e370,_0x5bf71b){_0x4a3a46[_0x2d01('0x52')]=_0x21e370;_0x4a3a46['name']=_0x4a3a46[_0x2d01('0x53')];_0x4a3a46[_0x2d01('0x54')]=_0x4a3a46[_0x2d01('0x3f')];_0x4a3a46[_0x2d01('0x55')]=_0x2d01('0x56');if(_0x5bf71b){_0x4a3a46[_0x2d01('0x57')]=_0x5bf71b[_0x2d01('0x57')];}return _0x4a3a46;}exports[_0x2d01('0x58')]=buildObj;exports['agentReadyId']=function(_0x306939){var _0xc8b299=[];for(var _0x4e0916 in _0x306939){if(_0x306939['hasOwnProperty'](_0x4e0916)){if(!_[_0x2d01('0x27')](_0x306939[_0x4e0916])&&_0x306939[_0x4e0916][_0x2d01('0x2d')]===_0x2d01('0x59')&&_0x306939[_0x4e0916][_0x2d01('0x5a')]===_0x2d01('0x5b')){_0xc8b299['push'](_0x306939[_0x4e0916]['id']);}}}return _0xc8b299;};exports[_0x2d01('0x5c')]=function(_0x3e737d){var _0x164e51=moment()[_0x2d01('0x5d')](0x0);var _0x4ed3db=moment(_0x3e737d)[_0x2d01('0x5d')](0x0);return _0x164e51['diff'](_0x4ed3db,_0x2d01('0x5e'));};exports[_0x2d01('0x5f')]=function(_0x531dce){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x531dce['ContactId'],'ListId':_0x531dce[_0x2d01('0x4d')],'VoiceQueueId':_0x531dce[_0x2d01('0x4e')]||undefined,'CampaignId':_0x531dce[_0x2d01('0x60')]||undefined};};exports[_0x2d01('0x61')]=function(_0xf5d5b){if(_0xf5d5b===_0x2d01('0x3d')||_0xf5d5b===_0x2d01('0x62')||_0xf5d5b===_0x2d01('0x53')||_0xf5d5b===_0x2d01('0x63')||_0xf5d5b===_0x2d01('0x64')||_0xf5d5b===_0x2d01('0x65')||_0xf5d5b===_0x2d01('0x66')||_0xf5d5b===_0x2d01('0x3f')||_0xf5d5b===_0x2d01('0x16')||_0xf5d5b===_0x2d01('0x49')||_0xf5d5b==='calleridnum'||_0xf5d5b===_0x2d01('0x4a')||_0xf5d5b===_0x2d01('0x43')||_0xf5d5b===_0x2d01('0x44')||_0xf5d5b===_0x2d01('0x67')||_0xf5d5b===_0x2d01('0x68')||_0xf5d5b===_0x2d01('0x69')||_0xf5d5b===_0x2d01('0x6a')||_0xf5d5b===_0x2d01('0x6b')||_0xf5d5b===_0x2d01('0x6c')||_0xf5d5b===_0x2d01('0x17')||_0xf5d5b==='ListId'||_0xf5d5b===_0x2d01('0x34')||_0xf5d5b===_0x2d01('0x4e')||_0xf5d5b===_0x2d01('0x6d')||_0xf5d5b==='xmd-voicequeueid'||_0xf5d5b===_0x2d01('0x6e')||_0xf5d5b===_0x2d01('0x6f')||_0xf5d5b===_0x2d01('0x70')||_0xf5d5b===_0x2d01('0x71')||_0xf5d5b===_0x2d01('0x72')||_0xf5d5b==='xmd-dialoptions'||_0xf5d5b===_0x2d01('0x73')||_0xf5d5b===_0x2d01('0x74')||_0xf5d5b===_0x2d01('0x75')||_0xf5d5b===_0x2d01('0x76')||_0xf5d5b===_0x2d01('0x77')||_0xf5d5b==='xmd-agiafter'||_0xf5d5b==='xmd-agi'||_0xf5d5b===_0x2d01('0x78')||_0xf5d5b===_0x2d01('0x79')||_0xf5d5b===_0x2d01('0x7a')||_0xf5d5b==='rtpaudioqosjitterbridged'||_0xf5d5b===_0x2d01('0x7b')||_0xf5d5b===_0x2d01('0x7c')||_0xf5d5b===_0x2d01('0x7d')||_0xf5d5b===_0x2d01('0x7e')||_0xf5d5b===_0x2d01('0x78')||_0xf5d5b===_0x2d01('0x79')||_0xf5d5b===_0x2d01('0x7a')||_0xf5d5b===_0x2d01('0x7f')||_0xf5d5b===_0x2d01('0x7b')||_0xf5d5b===_0x2d01('0x7c')||_0xf5d5b==='rtpaudioqosrtt'||_0xf5d5b==='rtpaudioqosrttbridged'||_0xf5d5b===_0x2d01('0x80')||_0xf5d5b===_0x2d01('0x81')||_0xf5d5b==='state'||_0xf5d5b===_0x2d01('0x2e')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x5aba62,_0x560fb4){var _0x198478,_0x56c712,_0x4de03f;if(_0x560fb4<=0x0){_0x560fb4=0x1;}_0x198478=new RegExp('\x5cw{0,'+_0x560fb4+'}$');_0x56c712=Math[_0x2d01('0x82')](0xa,_0x560fb4-0x1);_0x4de03f=Math[_0x2d01('0x82')](0xa,_0x560fb4)-0x1;return util[_0x2d01('0xf')]('%s',_[_0x2d01('0x83')](_0x5aba62,_0x198478,_['random'](_0x56c712,_0x4de03f)));};exports[_0x2d01('0x84')]=function(_0xd95260){var _0x3a97e3=_0xd95260[_0x2d01('0x85')](/"(.*?)"/);return _0x3a97e3?_0x3a97e3[0x1]:_0xd95260;};exports[_0x2d01('0x86')]=function(_0x32bad4){var _0x2518b8=_0x32bad4['match'](/<(.*?)>/);return _0x2518b8?_0x2518b8[0x1]:_0x32bad4;};function buildNoAnswerEventPayload(_0x18457f,_0x581f1b){var _0x3a4d3a=buildObj(_0x18457f,_0x2d01('0x87'));if(!_['isEmpty'](_0x581f1b[_0x2d01('0x88')])){Object[_0x2d01('0x89')](_0x581f1b[_0x2d01('0x88')])[_0x2d01('0x8a')](function(_0x16d4a2){_0x3a4d3a[_0x16d4a2[_0x2d01('0x8b')]()]=_0x581f1b[_0x2d01('0x88')][_0x16d4a2];});}return _0x3a4d3a;}exports[_0x2d01('0x8c')]=buildNoAnswerEventPayload;
\ No newline at end of file
index b284e69..cd99863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66da=['queuepause','boolean','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string'];(function(_0x330559,_0x312085){var _0x49dc3c=function(_0x32b1b6){while(--_0x32b1b6){_0x330559['push'](_0x330559['shift']());}};_0x49dc3c(++_0x312085);}(_0x66da,0x16f));var _0xa66d=function(_0x4702ee,_0xaf6a45){_0x4702ee=_0x4702ee-0x0;var _0x62ca7d=_0x66da[_0x4702ee];return _0x62ca7d;};'use strict';exports[_0xa66d('0x0')]={'queue':{'type':_0xa66d('0x1'),'required':!![]},'interface':{'type':_0xa66d('0x1'),'required':!![]},'membername':{'type':_0xa66d('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports['queueremove']={'queue':{'type':_0xa66d('0x1'),'required':!![]},'interface':{'type':_0xa66d('0x1'),'required':!![]}};exports[_0xa66d('0x2')]={'interface':{'type':_0xa66d('0x1'),'required':!![]},'paused':{'type':_0xa66d('0x3')},'reason':{'type':'string','required':![]}};exports[_0xa66d('0x4')]={'module':{'type':_0xa66d('0x1'),'required':![]}};exports[_0xa66d('0x5')]={'uniqueid':{'type':_0xa66d('0x1'),'required':!![]}};exports[_0xa66d('0x6')]={'uniqueid':{'type':_0xa66d('0x1'),'required':!![]},'filename':{'type':_0xa66d('0x1')},'format':{'type':_0xa66d('0x1')},'mixmonitorid':{'type':_0xa66d('0x1')}};exports[_0xa66d('0x7')]={'uniqueid':{'type':_0xa66d('0x1'),'required':!![]}};exports[_0xa66d('0x8')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':_0xa66d('0x1'),'required':!![]},'context':{'type':_0xa66d('0x1')}};
\ No newline at end of file
+var _0x2fd5=['queuepause','reload','voicequeuechannelredirect','string','number','boolean','queueremove'];(function(_0x5a2a2a,_0x2c3d87){var _0x57ee23=function(_0x57031d){while(--_0x57031d){_0x5a2a2a['push'](_0x5a2a2a['shift']());}};_0x57ee23(++_0x2c3d87);}(_0x2fd5,0x168));var _0x52fd=function(_0x491610,_0x3b61a2){_0x491610=_0x491610-0x0;var _0x5d6718=_0x2fd5[_0x491610];return _0x5d6718;};'use strict';exports['queueadd']={'queue':{'type':_0x52fd('0x0'),'required':!![]},'interface':{'type':_0x52fd('0x0'),'required':!![]},'membername':{'type':_0x52fd('0x0'),'required':!![]},'penalty':{'type':_0x52fd('0x1'),'required':![]},'paused':{'type':_0x52fd('0x2'),'required':![]}};exports[_0x52fd('0x3')]={'queue':{'type':_0x52fd('0x0'),'required':!![]},'interface':{'type':_0x52fd('0x0'),'required':!![]}};exports[_0x52fd('0x4')]={'interface':{'type':_0x52fd('0x0'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x52fd('0x0'),'required':![]}};exports[_0x52fd('0x5')]={'module':{'type':_0x52fd('0x0'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0x52fd('0x0'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0x52fd('0x0'),'required':!![]},'filename':{'type':_0x52fd('0x0')},'format':{'type':_0x52fd('0x0')},'mixmonitorid':{'type':_0x52fd('0x0')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x52fd('0x0'),'required':!![]}};exports[_0x52fd('0x6')]={'uniqueid':{'type':_0x52fd('0x0'),'required':!![]},'exten':{'type':_0x52fd('0x0'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index 1632043..2f38a12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['total','sumHoldTime','sumBillable','isEmpty','ivrAnswerCallsDay','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','mergeFromDatabase','initAgents','length','isNil','SIP/%s','isUndefined','prototype','initTelephones','initTrunks','trunks','initTriggers','initTemplates','salesforceAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','servicenowAccounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','queue','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','diff','queuecallercomplete','answered','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','campaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','initVoiceQueues','exports','lodash','util','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','telephones','voiceQueues','triggers','templates','outbound','voiceExtensions','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','faxAccounts','mapKeys','name','hasOwnProperty','format','interface'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x0b0e,0x187));var _0xe0b0=function(_0x54cd98,_0x3029e6){_0x54cd98=_0x54cd98-0x0;var _0x4abd09=_0x0b0e[_0x54cd98];return _0x4abd09;};'use strict';var _=require(_0xe0b0('0x0'));var moment=require('moment');var util=require(_0xe0b0('0x1'));var Agent=require('../model/agent');var Telephone=require(_0xe0b0('0x2'));var Trunk=require(_0xe0b0('0x3'));var VoiceQueue=require(_0xe0b0('0x4'));var Trigger=require(_0xe0b0('0x5'));var Template=require(_0xe0b0('0x6'));var Campaign=require(_0xe0b0('0x7'));var VoiceExtension=require(_0xe0b0('0x8'));var ZendeskAccount=require(_0xe0b0('0x9'));var SalesforceAccount=require(_0xe0b0('0xa'));var FreshdeskAccount=require(_0xe0b0('0xb'));var SugarcrmAccount=require(_0xe0b0('0xc'));var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xe0b0('0xd'));var ServicenowAccount=require(_0xe0b0('0xe'));var Dynamics365Account=require(_0xe0b0('0xf'));var FreshsalesAccount=require(_0xe0b0('0x10'));var FaxAccount=require('../model/faxAccount');function Realtime(){this[_0xe0b0('0x11')]={};this[_0xe0b0('0x12')]={};this['trunks']={};this[_0xe0b0('0x13')]={};this[_0xe0b0('0x14')]={};this['campaigns']={};this[_0xe0b0('0x15')]={};this[_0xe0b0('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xe0b0('0x17')]={};this['channels']={};this[_0xe0b0('0x18')]={};this[_0xe0b0('0x19')]={};this[_0xe0b0('0x1a')]={};this[_0xe0b0('0x1b')]={};this[_0xe0b0('0x1c')]={};this['salesforceAccounts']={};this[_0xe0b0('0x1d')]={};this[_0xe0b0('0x1e')]={};this[_0xe0b0('0x1f')]={};this[_0xe0b0('0x20')]={};this[_0xe0b0('0x21')]={};this['servicenowAccounts']={};this[_0xe0b0('0x22')]={};this['freshsalesAccounts']={};this[_0xe0b0('0x23')]={};}function freeIsNotKey(_0xadee6e,_0x519ae8,_0x11fdca){var _0x4a4cc0=_[_0xe0b0('0x24')](_0xadee6e,function(_0x100204){return _0x100204[_0x11fdca];});for(var _0x56bcc7 in _0x519ae8){if(_0x519ae8['hasOwnProperty'](_0x56bcc7)){if(!_0x4a4cc0[_0x56bcc7]){delete _0x519ae8[_0x56bcc7];}}}}function freeIsNotKeySip(_0x46bb44,_0x50a441){var _0x4df8da=_['mapKeys'](_0x46bb44,function(_0x1920ee){return util['format']('SIP/%s',_0x1920ee[_0xe0b0('0x25')]);});for(var _0x59dff5 in _0x50a441){if(_0x50a441[_0xe0b0('0x26')](_0x59dff5)){if(!_0x4df8da[_0x59dff5]){delete _0x50a441[_0x59dff5];}}}}function freeIsNotKeyAgent(_0x5dba2f,_0x2c84cc){var _0x1cd7c4=_[_0xe0b0('0x24')](_0x5dba2f,function(_0x310a6d){var _0x2cf6a1=_['isNil'](_0x310a6d['interface'])?util[_0xe0b0('0x27')]('SIP/%s',_0x310a6d[_0xe0b0('0x25')]):_0x310a6d[_0xe0b0('0x28')];return _0x2cf6a1;});for(var _0x513e63 in _0x2c84cc){if(_0x2c84cc[_0xe0b0('0x26')](_0x513e63)){if(!_0x1cd7c4[_0x513e63]){delete _0x2c84cc[_0x513e63];}}}}function clearVoiceCallReports(_0x503883){_0x503883[_0xe0b0('0x29')]=0x0;_0x503883['answered']=0x0;_0x503883[_0xe0b0('0x2a')]=0x0;_0x503883['sumDuration']=0x0;_0x503883[_0xe0b0('0x2b')]=0x0;}function clearCampaigns(_0x4de537){if(!_[_0xe0b0('0x2c')](_0x4de537)){for(var _0x4aafbe in _0x4de537){if(_0x4de537[_0xe0b0('0x26')](_0x4aafbe)){_0x4de537[_0x4aafbe]['ivrTotalCallsDays']=0x0;_0x4de537[_0x4aafbe][_0xe0b0('0x2d')]=0x0;}}}}function clearVoiceQueues(_0x3c3bc2){if(!_[_0xe0b0('0x2c')](_0x3c3bc2)){for(var _0x1d91ad in _0x3c3bc2){if(_0x3c3bc2[_0xe0b0('0x26')](_0x1d91ad)){_0x3c3bc2[_0x1d91ad][_0xe0b0('0x29')]=0x0;_0x3c3bc2[_0x1d91ad]['answered']=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x2e')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x2f')]=0x0;_0x3c3bc2[_0x1d91ad]['sumHoldTime']=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x30')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x2b')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x31')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x32')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x33')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x34')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x35')]=0x0;_0x3c3bc2[_0x1d91ad]['outboundUnknownCallsDay']=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x36')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x37')]=0x0;_0x3c3bc2[_0x1d91ad]['outboundBlacklistCallsDay']=0x0;_0x3c3bc2[_0x1d91ad]['outboundOriginateFailureCallsDay']=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x38')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x39')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x31')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x3a')]=0x0;_0x3c3bc2[_0x1d91ad][_0xe0b0('0x3b')]=!![];}}}}Realtime['prototype'][_0xe0b0('0x3c')]=function(_0x3231fc,_0x7867c4){for(var _0x29d725 in _0x7867c4){if(_0x3231fc[_0xe0b0('0x26')](_0x29d725)){_0x3231fc[_0x29d725]=_0x7867c4[_0x29d725];}}};Realtime['prototype'][_0xe0b0('0x3d')]=function(){var _0x208945=this;return function(_0xfc51d3){if(_0xfc51d3){freeIsNotKeyAgent(_0xfc51d3,_0x208945[_0xe0b0('0x11')]);for(var _0x3575bc=0x0,_0x12eeb8={};_0x3575bc<_0xfc51d3[_0xe0b0('0x3e')];_0x3575bc+=0x1){_0x12eeb8=_0xfc51d3[_0x3575bc];var _0x20908f=_[_0xe0b0('0x3f')](_0x12eeb8[_0xe0b0('0x28')])?util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x12eeb8[_0xe0b0('0x25')]):_0x12eeb8[_0xe0b0('0x28')];if(_[_0xe0b0('0x41')](_0x208945['agents'][_0x20908f])){_0x208945[_0xe0b0('0x11')][_0x20908f]=new Agent(_0x12eeb8);}else{_0x208945[_0xe0b0('0x3c')](_0x208945[_0xe0b0('0x11')][_0x20908f],_0x12eeb8);}}}return _0x208945[_0xe0b0('0x11')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x43')]=function(){var _0x12024d=this;return function(_0x533fc7){if(_0x533fc7){freeIsNotKeySip(_0x533fc7,_0x12024d['telephones']);for(var _0x549d9a=0x0,_0x5317df={};_0x549d9a<_0x533fc7[_0xe0b0('0x3e')];_0x549d9a+=0x1){_0x5317df=_0x533fc7[_0x549d9a];if(_[_0xe0b0('0x41')](_0x12024d[_0xe0b0('0x12')][util['format'](_0xe0b0('0x40'),_0x5317df[_0xe0b0('0x25')])])){_0x12024d[_0xe0b0('0x12')][util[_0xe0b0('0x27')]('SIP/%s',_0x5317df[_0xe0b0('0x25')])]=new Telephone(_0x5317df);}else{_0x12024d[_0xe0b0('0x3c')](_0x12024d[_0xe0b0('0x12')][util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x5317df[_0xe0b0('0x25')])],_0x5317df);}}}return _0x12024d[_0xe0b0('0x12')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x44')]=function(){var _0x54f251=this;return function(_0x3e349b){if(_0x3e349b){freeIsNotKeySip(_0x3e349b,_0x54f251['trunks']);for(var _0x34178d=0x0,_0x2d5f47={};_0x34178d<_0x3e349b[_0xe0b0('0x3e')];_0x34178d+=0x1){_0x2d5f47=_0x3e349b[_0x34178d];if(_[_0xe0b0('0x41')](_0x54f251['trunks'][util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x2d5f47[_0xe0b0('0x25')])])){_0x54f251[_0xe0b0('0x45')][util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x2d5f47[_0xe0b0('0x25')])]=new Trunk(_0x2d5f47);}else{_0x54f251[_0xe0b0('0x3c')](_0x54f251['trunks'][util[_0xe0b0('0x27')](_0xe0b0('0x40'),_0x2d5f47['name'])],_0x2d5f47);}}}return _0x54f251['trunks'];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x46')]=function(){var _0x56e7df=this;return function(_0x18a59d){if(_0x18a59d){freeIsNotKey(_0x18a59d,_0x56e7df[_0xe0b0('0x14')],'id');for(var _0x6bca5c=0x0,_0x1c869d={};_0x6bca5c<_0x18a59d[_0xe0b0('0x3e')];_0x6bca5c+=0x1){_0x1c869d=_0x18a59d[_0x6bca5c];if(_['isUndefined'](_0x56e7df['triggers'][_0x1c869d['id']])){_0x56e7df['triggers'][_0x1c869d['id']]=new Trigger(_0x1c869d);}else{_0x56e7df[_0xe0b0('0x3c')](_0x56e7df[_0xe0b0('0x14')][_0x1c869d['id']],_0x1c869d);}}}return _0x56e7df['triggers'];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x47')]=function(){var _0x14197b=this;return function(_0x5f037d){if(_0x5f037d){freeIsNotKey(_0x5f037d,_0x14197b[_0xe0b0('0x15')],'id');for(var _0x5c6f94=0x0,_0x57d4b0={};_0x5c6f94<_0x5f037d[_0xe0b0('0x3e')];_0x5c6f94+=0x1){_0x57d4b0=_0x5f037d[_0x5c6f94];if(_[_0xe0b0('0x41')](_0x14197b[_0xe0b0('0x15')][_0x57d4b0['id']])){_0x14197b[_0xe0b0('0x15')][_0x57d4b0['id']]=new Template(_0x57d4b0);}else{_0x14197b[_0xe0b0('0x3c')](_0x14197b['templates'][_0x57d4b0['id']],_0x57d4b0);}}}return _0x14197b[_0xe0b0('0x15')];};};Realtime[_0xe0b0('0x42')]['initZendeskAccounts']=function(){var _0x50c805=this;return function(_0x5ddad1){if(_0x5ddad1){freeIsNotKey(_0x5ddad1,_0x50c805[_0xe0b0('0x1c')],'id');for(var _0x2184d3=0x0,_0x2419ce={};_0x2184d3<_0x5ddad1[_0xe0b0('0x3e')];_0x2184d3+=0x1){_0x2419ce=_0x5ddad1[_0x2184d3];if(_['isUndefined'](_0x50c805[_0xe0b0('0x1c')][_0x2419ce['id']])){_0x50c805[_0xe0b0('0x1c')][_0x2419ce['id']]=new ZendeskAccount(_0x2419ce);}else{_0x50c805['mergeFromDatabase'](_0x50c805['zendeskAccounts'][_0x2419ce['id']],_0x2419ce);}}}return _0x50c805[_0xe0b0('0x1c')];};};Realtime[_0xe0b0('0x42')]['initSalesforceAccounts']=function(){var _0x2b1917=this;return function(_0x27fd31){if(_0x27fd31){freeIsNotKey(_0x27fd31,_0x2b1917['salesforceAccounts'],'id');for(var _0x5cb2b6=0x0,_0x123ad2={};_0x5cb2b6<_0x27fd31['length'];_0x5cb2b6+=0x1){_0x123ad2=_0x27fd31[_0x5cb2b6];if(_[_0xe0b0('0x41')](_0x2b1917[_0xe0b0('0x48')][_0x123ad2['id']])){_0x2b1917[_0xe0b0('0x48')][_0x123ad2['id']]=new SalesforceAccount(_0x123ad2);}else{_0x2b1917[_0xe0b0('0x3c')](_0x2b1917[_0xe0b0('0x48')][_0x123ad2['id']],_0x123ad2);}}}return _0x2b1917[_0xe0b0('0x48')];};};Realtime['prototype']['initFreshdeskAccounts']=function(){var _0x2ef908=this;return function(_0x5d380a){if(_0x5d380a){freeIsNotKey(_0x5d380a,_0x2ef908['freshdeskAccounts'],'id');for(var _0x249d9a=0x0,_0x222174={};_0x249d9a<_0x5d380a['length'];_0x249d9a+=0x1){_0x222174=_0x5d380a[_0x249d9a];if(_['isUndefined'](_0x2ef908[_0xe0b0('0x1e')][_0x222174['id']])){_0x2ef908[_0xe0b0('0x1e')][_0x222174['id']]=new FreshdeskAccount(_0x222174);}else{_0x2ef908[_0xe0b0('0x3c')](_0x2ef908[_0xe0b0('0x1e')][_0x222174['id']],_0x222174);}}}return _0x2ef908[_0xe0b0('0x1e')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x49')]=function(){var _0x4ebb0f=this;return function(_0x22c7bc){if(_0x22c7bc){freeIsNotKey(_0x22c7bc,_0x4ebb0f['zohoAccounts'],'id');for(var _0x17b3d4=0x0,_0x54106c={};_0x17b3d4<_0x22c7bc['length'];_0x17b3d4+=0x1){_0x54106c=_0x22c7bc[_0x17b3d4];if(_[_0xe0b0('0x41')](_0x4ebb0f[_0xe0b0('0x1f')][_0x54106c['id']])){_0x4ebb0f[_0xe0b0('0x1f')][_0x54106c['id']]=new ZohoAccount(_0x54106c);}else{_0x4ebb0f[_0xe0b0('0x3c')](_0x4ebb0f[_0xe0b0('0x1f')][_0x54106c['id']],_0x54106c);}}}return _0x4ebb0f[_0xe0b0('0x1f')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4a')]=function(){var _0x2e1c9b=this;return function(_0x4e0d87){if(_0x4e0d87){freeIsNotKey(_0x4e0d87,_0x2e1c9b[_0xe0b0('0x20')],'id');for(var _0x57ccc9=0x0,_0x2b5553={};_0x57ccc9<_0x4e0d87[_0xe0b0('0x3e')];_0x57ccc9+=0x1){_0x2b5553=_0x4e0d87[_0x57ccc9];if(_[_0xe0b0('0x41')](_0x2e1c9b[_0xe0b0('0x20')][_0x2b5553['id']])){_0x2e1c9b[_0xe0b0('0x20')][_0x2b5553['id']]=new DeskAccount(_0x2b5553);}else{_0x2e1c9b[_0xe0b0('0x3c')](_0x2e1c9b['deskAccounts'][_0x2b5553['id']],_0x2b5553);}}}return _0x2e1c9b[_0xe0b0('0x20')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4b')]=function(){var _0x271445=this;return function(_0x3bb6d6){if(_0x3bb6d6){freeIsNotKey(_0x3bb6d6,_0x271445[_0xe0b0('0x1d')],'id');for(var _0x234cb7=0x0,_0x1a60d2={};_0x234cb7<_0x3bb6d6[_0xe0b0('0x3e')];_0x234cb7+=0x1){_0x1a60d2=_0x3bb6d6[_0x234cb7];if(_[_0xe0b0('0x41')](_0x271445[_0xe0b0('0x1d')][_0x1a60d2['id']])){_0x271445[_0xe0b0('0x1d')][_0x1a60d2['id']]=new SugarcrmAccount(_0x1a60d2);}else{_0x271445[_0xe0b0('0x3c')](_0x271445[_0xe0b0('0x1d')][_0x1a60d2['id']],_0x1a60d2);}}}return _0x271445[_0xe0b0('0x1d')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4c')]=function(){var _0x155738=this;return function(_0x5aa79b){if(_0x5aa79b){freeIsNotKey(_0x5aa79b,_0x155738[_0xe0b0('0x21')],'id');for(var _0xe7fbac=0x0,_0x1182dc={};_0xe7fbac<_0x5aa79b[_0xe0b0('0x3e')];_0xe7fbac+=0x1){_0x1182dc=_0x5aa79b[_0xe7fbac];if(_[_0xe0b0('0x41')](_0x155738[_0xe0b0('0x21')][_0x1182dc['id']])){_0x155738[_0xe0b0('0x21')][_0x1182dc['id']]=new VtigerAccount(_0x1182dc);}else{_0x155738['mergeFromDatabase'](_0x155738['vtigerAccounts'][_0x1182dc['id']],_0x1182dc);}}}return _0x155738[_0xe0b0('0x21')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4d')]=function(){var _0x47ecc1=this;return function(_0x117d20){if(_0x117d20){freeIsNotKey(_0x117d20,_0x47ecc1[_0xe0b0('0x4e')],'id');for(var _0x309efb=0x0,_0x3d820c={};_0x309efb<_0x117d20[_0xe0b0('0x3e')];_0x309efb+=0x1){_0x3d820c=_0x117d20[_0x309efb];if(_['isUndefined'](_0x47ecc1[_0xe0b0('0x4e')][_0x3d820c['id']])){_0x47ecc1[_0xe0b0('0x4e')][_0x3d820c['id']]=new ServicenowAccount(_0x3d820c);}else{_0x47ecc1[_0xe0b0('0x3c')](_0x47ecc1['servicenowAccounts'][_0x3d820c['id']],_0x3d820c);}}}return _0x47ecc1[_0xe0b0('0x4e')];};};Realtime[_0xe0b0('0x42')]['initDynamics365Accounts']=function(){var _0x1bd249=this;return function(_0x4c5478){if(_0x4c5478){freeIsNotKey(_0x4c5478,_0x1bd249['dynamics365Accounts'],'id');for(var _0x4474ac=0x0,_0x57b51e={};_0x4474ac<_0x4c5478['length'];_0x4474ac+=0x1){_0x57b51e=_0x4c5478[_0x4474ac];if(_[_0xe0b0('0x41')](_0x1bd249[_0xe0b0('0x22')][_0x57b51e['id']])){_0x1bd249[_0xe0b0('0x22')][_0x57b51e['id']]=new Dynamics365Account(_0x57b51e);}else{_0x1bd249[_0xe0b0('0x3c')](_0x1bd249['dynamics365Accounts'][_0x57b51e['id']],_0x57b51e);}}}return _0x1bd249[_0xe0b0('0x22')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x4f')]=function(){var _0x41ec8e=this;return function(_0x1b29c){if(_0x1b29c){freeIsNotKey(_0x1b29c,_0x41ec8e[_0xe0b0('0x50')],'id');for(var _0xc5e88c=0x0,_0x224f1e={};_0xc5e88c<_0x1b29c['length'];_0xc5e88c+=0x1){_0x224f1e=_0x1b29c[_0xc5e88c];if(_['isUndefined'](_0x41ec8e[_0xe0b0('0x50')][_0x224f1e['id']])){_0x41ec8e[_0xe0b0('0x50')][_0x224f1e['id']]=new FreshsalesAccount(_0x224f1e);}else{_0x41ec8e[_0xe0b0('0x3c')](_0x41ec8e['freshsalesAccounts'][_0x224f1e['id']],_0x224f1e);}}}return _0x41ec8e['freshsalesAccounts'];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x51')]=function(){var _0x5d7cf4=this;return function(_0x5eca3d){for(var _0x691136=0x0;_0x691136<_0x5eca3d[_0xe0b0('0x3e')];_0x691136+=0x1){_[_0xe0b0('0x52')](_0x5d7cf4[_0xe0b0('0x13')][_0x5eca3d[_0x691136][_0xe0b0('0x25')]],_0x5eca3d[_0x691136]);}return _0x5d7cf4[_0xe0b0('0x13')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x53')]=function(){var _0x51f209=this;return function(_0x1daff7){clearVoiceQueues(_0x51f209[_0xe0b0('0x13')]);if(_0x1daff7){_0x1daff7=_[_0xe0b0('0x54')](_0x1daff7,'uniqueid');for(var _0x4fbf44 in _0x1daff7){if(_0x1daff7['hasOwnProperty'](_0x4fbf44)){for(var _0x56ee83=0x0;_0x56ee83<_0x1daff7[_0x4fbf44]['length'];_0x56ee83+=0x1){var _0x567c06=_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x55')];if(_0x51f209['voiceQueues'][_0x567c06]){if(_0x1daff7[_0x4fbf44][_0x56ee83]['queuecallerexit']){_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x2e')]+=0x1;}if(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x56')]){_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x2f')]+=0x1;}_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x2a')]+=moment(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x57')])['diff'](moment(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x58')]),_0xe0b0('0x59'))||0x0;if(_0x56ee83===_0x1daff7[_0x4fbf44][_0xe0b0('0x3e')]-0x1){_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x30')]+=moment(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x5a')]||_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x5b')]||_0x1daff7[_0x4fbf44][_0x56ee83]['queuecallerexitAt'])[_0xe0b0('0x5c')](moment(_0x1daff7[_0x4fbf44][_0x56ee83]['queuecallerjoinAt']),_0xe0b0('0x59'))||0x0;_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x29')]+=0x1;if(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x5d')]){_0x51f209['voiceQueues'][_0x567c06][_0xe0b0('0x5e')]+=0x1;_0x51f209[_0xe0b0('0x13')][_0x567c06]['sumBillable']+=moment(_0x1daff7[_0x4fbf44][_0x56ee83]['queuecallercompleteAt'])[_0xe0b0('0x5c')](moment(_0x1daff7[_0x4fbf44][_0x56ee83][_0xe0b0('0x57')]),_0xe0b0('0x59'))||0x0;}}else{_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x30')]+=_0x51f209[_0xe0b0('0x13')][_0x567c06][_0xe0b0('0x2a')]||0x0;}}}}}}return _0x51f209[_0xe0b0('0x13')];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x5f')]=function(){var _0x5a63e6=this;return function(_0x4c512b){clearVoiceCallReports(_0x5a63e6[_0xe0b0('0x16')]);if(_0x4c512b){for(var _0x4880d5=0x0;_0x4880d5<_0x4c512b['length'];_0x4880d5+=0x1){_0x5a63e6['outbound']['total']+=0x1;_0x5a63e6[_0xe0b0('0x16')]['sumDuration']+=_0x4c512b[_0x4880d5][_0xe0b0('0x60')];if(_0x4c512b[_0x4880d5][_0xe0b0('0x61')]===_0xe0b0('0x62')){_0x5a63e6[_0xe0b0('0x16')]['answered']+=0x1;_0x5a63e6[_0xe0b0('0x16')][_0xe0b0('0x2a')]+=_0x4c512b[_0x4880d5]['duration']-_0x4c512b[_0x4880d5][_0xe0b0('0x63')]||0x0;_0x5a63e6[_0xe0b0('0x16')][_0xe0b0('0x2b')]+=_0x4c512b[_0x4880d5][_0xe0b0('0x63')];}}}return _0x5a63e6[_0xe0b0('0x16')];};};Realtime['prototype']['initCampaigns']=function(){var _0x55aef7=this;return function(_0x545694){if(_0x545694){freeIsNotKey(_0x545694,_0x55aef7['campaigns'],_0xe0b0('0x25'));for(var _0x567e1a=0x0,_0x3c09af={};_0x567e1a<_0x545694['length'];_0x567e1a+=0x1){_0x3c09af=_0x545694[_0x567e1a];if(_[_0xe0b0('0x41')](_0x55aef7[_0xe0b0('0x64')][_0x3c09af[_0xe0b0('0x25')]])){_0x55aef7[_0xe0b0('0x64')][_0x3c09af[_0xe0b0('0x25')]]=new Campaign(_0x3c09af);}else{_0x55aef7[_0xe0b0('0x3c')](_0x55aef7['campaigns'][_0x3c09af['name']],_0x3c09af);_0x55aef7['campaigns'][_0x3c09af['name']][_0xe0b0('0x65')]=_0x3c09af[_0xe0b0('0x66')]?_0x3c09af[_0xe0b0('0x66')][_0xe0b0('0x25')]:undefined;}}}return _0x55aef7[_0xe0b0('0x64')];};};Realtime['prototype'][_0xe0b0('0x67')]=function(){var _0x39a07b=this;return function(_0xf77616){if(_0xf77616){freeIsNotKey(_0xf77616,_0x39a07b[_0xe0b0('0x17')],'id');for(var _0x154e6d=0x0,_0x2a5082={};_0x154e6d<_0xf77616[_0xe0b0('0x3e')];_0x154e6d+=0x1){_0x2a5082=_0xf77616[_0x154e6d];if(_[_0xe0b0('0x41')](_0x39a07b[_0xe0b0('0x17')][_0x2a5082['id']])){_0x39a07b['voiceExtensions'][_0x2a5082['id']]=new VoiceExtension(_0x2a5082);}else{_0x39a07b['mergeFromDatabase'](_0x39a07b[_0xe0b0('0x17')][_0x2a5082['id']],_0x2a5082);}}}return _0x39a07b[_0xe0b0('0x17')];};};Realtime['prototype'][_0xe0b0('0x68')]=function(){var _0x4593f1=this;return function(_0x44c475){clearCampaigns(_0x4593f1[_0xe0b0('0x64')]);for(var _0x7358ce=0x0;_0x7358ce<_0x44c475[_0xe0b0('0x3e')];_0x7358ce+=0x1){_[_0xe0b0('0x52')](_0x4593f1[_0xe0b0('0x64')][_0x44c475[_0x7358ce]['name']],_0x44c475[_0x7358ce]);}return _0x4593f1['campaigns'];};};Realtime['prototype'][_0xe0b0('0x69')]=function(){var _0x90d471=this;return function(_0x5d2365){if(_0x5d2365){freeIsNotKey(_0x5d2365,_0x90d471[_0xe0b0('0x23')],'id');for(var _0x448694=0x0,_0x396eec={};_0x448694<_0x5d2365[_0xe0b0('0x3e')];_0x448694+=0x1){_0x396eec=_0x5d2365[_0x448694];if(_['isUndefined'](_0x90d471['faxAccounts'][_0x396eec['id']])){_0x90d471['faxAccounts'][_0x396eec['id']]=new FaxAccount(_0x396eec);}else{_0x90d471[_0xe0b0('0x3c')](_0x90d471[_0xe0b0('0x23')][_0x396eec['id']],_0x396eec);}}}return _0x90d471['faxAccounts'];};};Realtime[_0xe0b0('0x42')][_0xe0b0('0x6a')]=function(){var _0x5547ee=this;return function(_0x576482){if(_0x576482){freeIsNotKey(_0x576482,_0x5547ee[_0xe0b0('0x13')],'name');for(var _0x251195=0x0,_0x5f06c0={};_0x251195<_0x576482[_0xe0b0('0x3e')];_0x251195+=0x1){_0x5f06c0=_0x576482[_0x251195];if(_[_0xe0b0('0x41')](_0x5547ee[_0xe0b0('0x13')][_0x5f06c0[_0xe0b0('0x25')]])){_0x5547ee[_0xe0b0('0x13')][_0x5f06c0[_0xe0b0('0x25')]]=new VoiceQueue(_0x5f06c0);}else{_0x5547ee[_0xe0b0('0x3c')](_0x5547ee[_0xe0b0('0x13')][_0x5f06c0[_0xe0b0('0x25')]],_0x5f06c0);}}}return _0x5547ee['voiceQueues'];};};module[_0xe0b0('0x6b')]=Realtime;
\ No newline at end of file
+var _0x2032=['voiceExtensions','initCampaignHopperHistory','merge','initFaxAccounts','exports','moment','util','../model/agent','../model/trunk','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/faxAccount','telephones','trunks','voiceQueues','campaigns','outbound','channels','queueChannels','sugarcrmAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','format','SIP/%s','name','hasOwnProperty','interface','total','answered','sumHoldTime','sumDuration','sumBillable','ivrTotalCallsDays','isEmpty','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundReCallsDay','queueStatusComplete','prototype','length','isNil','isUndefined','agents','initTelephones','initTrunks','mergeFromDatabase','initTriggers','triggers','initTemplates','templates','initZendeskAccounts','zendeskAccounts','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','freshdeskAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','duration','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2032,0xd9));var _0x2203=function(_0x4beecc,_0x1dc796){_0x4beecc=_0x4beecc-0x0;var _0x238fc5=_0x2032[_0x4beecc];return _0x238fc5;};'use strict';var _=require('lodash');var moment=require(_0x2203('0x0'));var util=require(_0x2203('0x1'));var Agent=require(_0x2203('0x2'));var Telephone=require('../model/telephone');var Trunk=require(_0x2203('0x3'));var VoiceQueue=require(_0x2203('0x4'));var Trigger=require('../model/trigger');var Template=require(_0x2203('0x5'));var Campaign=require(_0x2203('0x6'));var VoiceExtension=require(_0x2203('0x7'));var ZendeskAccount=require(_0x2203('0x8'));var SalesforceAccount=require(_0x2203('0x9'));var FreshdeskAccount=require(_0x2203('0xa'));var SugarcrmAccount=require(_0x2203('0xb'));var ZohoAccount=require(_0x2203('0xc'));var DeskAccount=require(_0x2203('0xd'));var VtigerAccount=require(_0x2203('0xe'));var ServicenowAccount=require(_0x2203('0xf'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x2203('0x10'));function Realtime(){this['agents']={};this[_0x2203('0x11')]={};this[_0x2203('0x12')]={};this[_0x2203('0x13')]={};this['triggers']={};this[_0x2203('0x14')]={};this['templates']={};this[_0x2203('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x2203('0x16')]={};this[_0x2203('0x17')]={};this['outboundChannels']={};this['timers']={};this['settings']={};this['zendeskAccounts']={};this['salesforceAccounts']={};this[_0x2203('0x18')]={};this['freshdeskAccounts']={};this['zohoAccounts']={};this[_0x2203('0x19')]={};this[_0x2203('0x1a')]={};this[_0x2203('0x1b')]={};this[_0x2203('0x1c')]={};this[_0x2203('0x1d')]={};this[_0x2203('0x1e')]={};}function freeIsNotKey(_0x2c36e6,_0x2c085c,_0xdf9d0b){var _0x3053f3=_['mapKeys'](_0x2c36e6,function(_0x280eda){return _0x280eda[_0xdf9d0b];});for(var _0x2ee127 in _0x2c085c){if(_0x2c085c['hasOwnProperty'](_0x2ee127)){if(!_0x3053f3[_0x2ee127]){delete _0x2c085c[_0x2ee127];}}}}function freeIsNotKeySip(_0x3f9ef6,_0x8906e1){var _0x4aeb9f=_[_0x2203('0x1f')](_0x3f9ef6,function(_0x5ee83c){return util[_0x2203('0x20')](_0x2203('0x21'),_0x5ee83c[_0x2203('0x22')]);});for(var _0x3b4034 in _0x8906e1){if(_0x8906e1[_0x2203('0x23')](_0x3b4034)){if(!_0x4aeb9f[_0x3b4034]){delete _0x8906e1[_0x3b4034];}}}}function freeIsNotKeyAgent(_0x449039,_0x538c23){var _0x13d3f7=_['mapKeys'](_0x449039,function(_0x5ac866){var _0x15f543=_['isNil'](_0x5ac866[_0x2203('0x24')])?util[_0x2203('0x20')]('SIP/%s',_0x5ac866[_0x2203('0x22')]):_0x5ac866['interface'];return _0x15f543;});for(var _0x5c8da9 in _0x538c23){if(_0x538c23[_0x2203('0x23')](_0x5c8da9)){if(!_0x13d3f7[_0x5c8da9]){delete _0x538c23[_0x5c8da9];}}}}function clearVoiceCallReports(_0x2718f5){_0x2718f5[_0x2203('0x25')]=0x0;_0x2718f5[_0x2203('0x26')]=0x0;_0x2718f5[_0x2203('0x27')]=0x0;_0x2718f5[_0x2203('0x28')]=0x0;_0x2718f5[_0x2203('0x29')]=0x0;}function clearCampaigns(_0x250349){if(!_['isEmpty'](_0x250349)){for(var _0x143f41 in _0x250349){if(_0x250349[_0x2203('0x23')](_0x143f41)){_0x250349[_0x143f41][_0x2203('0x2a')]=0x0;_0x250349[_0x143f41]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0xb2071b){if(!_[_0x2203('0x2b')](_0xb2071b)){for(var _0x5c5fd3 in _0xb2071b){if(_0xb2071b[_0x2203('0x23')](_0x5c5fd3)){_0xb2071b[_0x5c5fd3][_0x2203('0x25')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x26')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x2c')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x2d')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x27')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x28')]=0x0;_0xb2071b[_0x5c5fd3]['sumBillable']=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x2e')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x2f')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x30')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x31')]=0x0;_0xb2071b[_0x5c5fd3]['outboundNoSuchCallsDay']=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x32')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x33')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x34')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x35')]=0x0;_0xb2071b[_0x5c5fd3]['outboundOriginateFailureCallsDay']=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x36')]=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x37')]=0x0;_0xb2071b[_0x5c5fd3]['outboundAnswerAgiCallsDay']=0x0;_0xb2071b[_0x5c5fd3]['outboundAnswerCallsDay']=0x0;_0xb2071b[_0x5c5fd3][_0x2203('0x38')]=!![];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x125dfc,_0x464c88){for(var _0x191894 in _0x464c88){if(_0x125dfc[_0x2203('0x23')](_0x191894)){_0x125dfc[_0x191894]=_0x464c88[_0x191894];}}};Realtime[_0x2203('0x39')]['initAgents']=function(){var _0xb22e28=this;return function(_0x2324c0){if(_0x2324c0){freeIsNotKeyAgent(_0x2324c0,_0xb22e28['agents']);for(var _0x2a2ee7=0x0,_0x20fbe1={};_0x2a2ee7<_0x2324c0[_0x2203('0x3a')];_0x2a2ee7+=0x1){_0x20fbe1=_0x2324c0[_0x2a2ee7];var _0x4187b4=_[_0x2203('0x3b')](_0x20fbe1[_0x2203('0x24')])?util[_0x2203('0x20')](_0x2203('0x21'),_0x20fbe1[_0x2203('0x22')]):_0x20fbe1['interface'];if(_[_0x2203('0x3c')](_0xb22e28[_0x2203('0x3d')][_0x4187b4])){_0xb22e28['agents'][_0x4187b4]=new Agent(_0x20fbe1);}else{_0xb22e28['mergeFromDatabase'](_0xb22e28[_0x2203('0x3d')][_0x4187b4],_0x20fbe1);}}}return _0xb22e28['agents'];};};Realtime[_0x2203('0x39')][_0x2203('0x3e')]=function(){var _0x127ee3=this;return function(_0x5221f0){if(_0x5221f0){freeIsNotKeySip(_0x5221f0,_0x127ee3['telephones']);for(var _0x34cdeb=0x0,_0x47c93a={};_0x34cdeb<_0x5221f0[_0x2203('0x3a')];_0x34cdeb+=0x1){_0x47c93a=_0x5221f0[_0x34cdeb];if(_['isUndefined'](_0x127ee3[_0x2203('0x11')][util['format'](_0x2203('0x21'),_0x47c93a[_0x2203('0x22')])])){_0x127ee3[_0x2203('0x11')][util[_0x2203('0x20')](_0x2203('0x21'),_0x47c93a['name'])]=new Telephone(_0x47c93a);}else{_0x127ee3['mergeFromDatabase'](_0x127ee3['telephones'][util[_0x2203('0x20')](_0x2203('0x21'),_0x47c93a[_0x2203('0x22')])],_0x47c93a);}}}return _0x127ee3[_0x2203('0x11')];};};Realtime[_0x2203('0x39')][_0x2203('0x3f')]=function(){var _0x1c7e3d=this;return function(_0x590b4e){if(_0x590b4e){freeIsNotKeySip(_0x590b4e,_0x1c7e3d[_0x2203('0x12')]);for(var _0x1b12c3=0x0,_0x108fde={};_0x1b12c3<_0x590b4e[_0x2203('0x3a')];_0x1b12c3+=0x1){_0x108fde=_0x590b4e[_0x1b12c3];if(_['isUndefined'](_0x1c7e3d['trunks'][util[_0x2203('0x20')]('SIP/%s',_0x108fde[_0x2203('0x22')])])){_0x1c7e3d[_0x2203('0x12')][util[_0x2203('0x20')]('SIP/%s',_0x108fde['name'])]=new Trunk(_0x108fde);}else{_0x1c7e3d[_0x2203('0x40')](_0x1c7e3d[_0x2203('0x12')][util[_0x2203('0x20')](_0x2203('0x21'),_0x108fde[_0x2203('0x22')])],_0x108fde);}}}return _0x1c7e3d[_0x2203('0x12')];};};Realtime['prototype'][_0x2203('0x41')]=function(){var _0x165a3f=this;return function(_0x3a866c){if(_0x3a866c){freeIsNotKey(_0x3a866c,_0x165a3f[_0x2203('0x42')],'id');for(var _0x16b452=0x0,_0x36b99f={};_0x16b452<_0x3a866c[_0x2203('0x3a')];_0x16b452+=0x1){_0x36b99f=_0x3a866c[_0x16b452];if(_[_0x2203('0x3c')](_0x165a3f[_0x2203('0x42')][_0x36b99f['id']])){_0x165a3f[_0x2203('0x42')][_0x36b99f['id']]=new Trigger(_0x36b99f);}else{_0x165a3f['mergeFromDatabase'](_0x165a3f[_0x2203('0x42')][_0x36b99f['id']],_0x36b99f);}}}return _0x165a3f[_0x2203('0x42')];};};Realtime[_0x2203('0x39')][_0x2203('0x43')]=function(){var _0x4c3259=this;return function(_0x58bd5c){if(_0x58bd5c){freeIsNotKey(_0x58bd5c,_0x4c3259[_0x2203('0x44')],'id');for(var _0x48129c=0x0,_0x273e5f={};_0x48129c<_0x58bd5c[_0x2203('0x3a')];_0x48129c+=0x1){_0x273e5f=_0x58bd5c[_0x48129c];if(_[_0x2203('0x3c')](_0x4c3259[_0x2203('0x44')][_0x273e5f['id']])){_0x4c3259['templates'][_0x273e5f['id']]=new Template(_0x273e5f);}else{_0x4c3259[_0x2203('0x40')](_0x4c3259[_0x2203('0x44')][_0x273e5f['id']],_0x273e5f);}}}return _0x4c3259['templates'];};};Realtime[_0x2203('0x39')][_0x2203('0x45')]=function(){var _0x35b2e9=this;return function(_0x2600a9){if(_0x2600a9){freeIsNotKey(_0x2600a9,_0x35b2e9['zendeskAccounts'],'id');for(var _0x4c1a29=0x0,_0x21b8ab={};_0x4c1a29<_0x2600a9['length'];_0x4c1a29+=0x1){_0x21b8ab=_0x2600a9[_0x4c1a29];if(_['isUndefined'](_0x35b2e9[_0x2203('0x46')][_0x21b8ab['id']])){_0x35b2e9[_0x2203('0x46')][_0x21b8ab['id']]=new ZendeskAccount(_0x21b8ab);}else{_0x35b2e9[_0x2203('0x40')](_0x35b2e9['zendeskAccounts'][_0x21b8ab['id']],_0x21b8ab);}}}return _0x35b2e9['zendeskAccounts'];};};Realtime[_0x2203('0x39')][_0x2203('0x47')]=function(){var _0x12d7fa=this;return function(_0x21d2d7){if(_0x21d2d7){freeIsNotKey(_0x21d2d7,_0x12d7fa[_0x2203('0x48')],'id');for(var _0x21fd78=0x0,_0x4a7f4e={};_0x21fd78<_0x21d2d7[_0x2203('0x3a')];_0x21fd78+=0x1){_0x4a7f4e=_0x21d2d7[_0x21fd78];if(_['isUndefined'](_0x12d7fa[_0x2203('0x48')][_0x4a7f4e['id']])){_0x12d7fa[_0x2203('0x48')][_0x4a7f4e['id']]=new SalesforceAccount(_0x4a7f4e);}else{_0x12d7fa[_0x2203('0x40')](_0x12d7fa[_0x2203('0x48')][_0x4a7f4e['id']],_0x4a7f4e);}}}return _0x12d7fa['salesforceAccounts'];};};Realtime['prototype'][_0x2203('0x49')]=function(){var _0x1f772d=this;return function(_0x126aad){if(_0x126aad){freeIsNotKey(_0x126aad,_0x1f772d[_0x2203('0x4a')],'id');for(var _0x559370=0x0,_0x4de47a={};_0x559370<_0x126aad['length'];_0x559370+=0x1){_0x4de47a=_0x126aad[_0x559370];if(_[_0x2203('0x3c')](_0x1f772d[_0x2203('0x4a')][_0x4de47a['id']])){_0x1f772d['freshdeskAccounts'][_0x4de47a['id']]=new FreshdeskAccount(_0x4de47a);}else{_0x1f772d[_0x2203('0x40')](_0x1f772d[_0x2203('0x4a')][_0x4de47a['id']],_0x4de47a);}}}return _0x1f772d['freshdeskAccounts'];};};Realtime[_0x2203('0x39')][_0x2203('0x4b')]=function(){var _0x172c6a=this;return function(_0x6a1877){if(_0x6a1877){freeIsNotKey(_0x6a1877,_0x172c6a['zohoAccounts'],'id');for(var _0x120db1=0x0,_0x5268d6={};_0x120db1<_0x6a1877[_0x2203('0x3a')];_0x120db1+=0x1){_0x5268d6=_0x6a1877[_0x120db1];if(_[_0x2203('0x3c')](_0x172c6a['zohoAccounts'][_0x5268d6['id']])){_0x172c6a[_0x2203('0x4c')][_0x5268d6['id']]=new ZohoAccount(_0x5268d6);}else{_0x172c6a[_0x2203('0x40')](_0x172c6a[_0x2203('0x4c')][_0x5268d6['id']],_0x5268d6);}}}return _0x172c6a[_0x2203('0x4c')];};};Realtime[_0x2203('0x39')][_0x2203('0x4d')]=function(){var _0x569d4a=this;return function(_0x562a3d){if(_0x562a3d){freeIsNotKey(_0x562a3d,_0x569d4a[_0x2203('0x19')],'id');for(var _0x524356=0x0,_0x56e881={};_0x524356<_0x562a3d[_0x2203('0x3a')];_0x524356+=0x1){_0x56e881=_0x562a3d[_0x524356];if(_[_0x2203('0x3c')](_0x569d4a[_0x2203('0x19')][_0x56e881['id']])){_0x569d4a['deskAccounts'][_0x56e881['id']]=new DeskAccount(_0x56e881);}else{_0x569d4a[_0x2203('0x40')](_0x569d4a['deskAccounts'][_0x56e881['id']],_0x56e881);}}}return _0x569d4a['deskAccounts'];};};Realtime[_0x2203('0x39')]['initSugarcrmAccounts']=function(){var _0x54ec71=this;return function(_0x5efc59){if(_0x5efc59){freeIsNotKey(_0x5efc59,_0x54ec71[_0x2203('0x18')],'id');for(var _0x31256b=0x0,_0x367122={};_0x31256b<_0x5efc59[_0x2203('0x3a')];_0x31256b+=0x1){_0x367122=_0x5efc59[_0x31256b];if(_[_0x2203('0x3c')](_0x54ec71[_0x2203('0x18')][_0x367122['id']])){_0x54ec71[_0x2203('0x18')][_0x367122['id']]=new SugarcrmAccount(_0x367122);}else{_0x54ec71[_0x2203('0x40')](_0x54ec71[_0x2203('0x18')][_0x367122['id']],_0x367122);}}}return _0x54ec71[_0x2203('0x18')];};};Realtime[_0x2203('0x39')][_0x2203('0x4e')]=function(){var _0x58ff57=this;return function(_0x585bde){if(_0x585bde){freeIsNotKey(_0x585bde,_0x58ff57[_0x2203('0x1a')],'id');for(var _0x43d8c0=0x0,_0x2511bd={};_0x43d8c0<_0x585bde[_0x2203('0x3a')];_0x43d8c0+=0x1){_0x2511bd=_0x585bde[_0x43d8c0];if(_[_0x2203('0x3c')](_0x58ff57[_0x2203('0x1a')][_0x2511bd['id']])){_0x58ff57['vtigerAccounts'][_0x2511bd['id']]=new VtigerAccount(_0x2511bd);}else{_0x58ff57['mergeFromDatabase'](_0x58ff57[_0x2203('0x1a')][_0x2511bd['id']],_0x2511bd);}}}return _0x58ff57[_0x2203('0x1a')];};};Realtime[_0x2203('0x39')][_0x2203('0x4f')]=function(){var _0xcab922=this;return function(_0x7b0b9c){if(_0x7b0b9c){freeIsNotKey(_0x7b0b9c,_0xcab922[_0x2203('0x1b')],'id');for(var _0x191b67=0x0,_0x2c6bcc={};_0x191b67<_0x7b0b9c[_0x2203('0x3a')];_0x191b67+=0x1){_0x2c6bcc=_0x7b0b9c[_0x191b67];if(_[_0x2203('0x3c')](_0xcab922['servicenowAccounts'][_0x2c6bcc['id']])){_0xcab922[_0x2203('0x1b')][_0x2c6bcc['id']]=new ServicenowAccount(_0x2c6bcc);}else{_0xcab922[_0x2203('0x40')](_0xcab922[_0x2203('0x1b')][_0x2c6bcc['id']],_0x2c6bcc);}}}return _0xcab922[_0x2203('0x1b')];};};Realtime[_0x2203('0x39')][_0x2203('0x50')]=function(){var _0x52c159=this;return function(_0x544756){if(_0x544756){freeIsNotKey(_0x544756,_0x52c159[_0x2203('0x1c')],'id');for(var _0x35b7b9=0x0,_0x49e795={};_0x35b7b9<_0x544756[_0x2203('0x3a')];_0x35b7b9+=0x1){_0x49e795=_0x544756[_0x35b7b9];if(_[_0x2203('0x3c')](_0x52c159[_0x2203('0x1c')][_0x49e795['id']])){_0x52c159[_0x2203('0x1c')][_0x49e795['id']]=new Dynamics365Account(_0x49e795);}else{_0x52c159[_0x2203('0x40')](_0x52c159[_0x2203('0x1c')][_0x49e795['id']],_0x49e795);}}}return _0x52c159[_0x2203('0x1c')];};};Realtime[_0x2203('0x39')][_0x2203('0x51')]=function(){var _0x519120=this;return function(_0x468619){if(_0x468619){freeIsNotKey(_0x468619,_0x519120[_0x2203('0x1d')],'id');for(var _0x465898=0x0,_0x4e461e={};_0x465898<_0x468619[_0x2203('0x3a')];_0x465898+=0x1){_0x4e461e=_0x468619[_0x465898];if(_[_0x2203('0x3c')](_0x519120[_0x2203('0x1d')][_0x4e461e['id']])){_0x519120[_0x2203('0x1d')][_0x4e461e['id']]=new FreshsalesAccount(_0x4e461e);}else{_0x519120[_0x2203('0x40')](_0x519120['freshsalesAccounts'][_0x4e461e['id']],_0x4e461e);}}}return _0x519120[_0x2203('0x1d')];};};Realtime[_0x2203('0x39')][_0x2203('0x52')]=function(){var _0x4dde80=this;return function(_0x5507b6){for(var _0x5d9ae2=0x0;_0x5d9ae2<_0x5507b6['length'];_0x5d9ae2+=0x1){_['merge'](_0x4dde80[_0x2203('0x13')][_0x5507b6[_0x5d9ae2][_0x2203('0x22')]],_0x5507b6[_0x5d9ae2]);}return _0x4dde80[_0x2203('0x13')];};};Realtime[_0x2203('0x39')][_0x2203('0x53')]=function(){var _0x169845=this;return function(_0x3f7926){clearVoiceQueues(_0x169845[_0x2203('0x13')]);if(_0x3f7926){_0x3f7926=_['groupBy'](_0x3f7926,'uniqueid');for(var _0xb54e51 in _0x3f7926){if(_0x3f7926[_0x2203('0x23')](_0xb54e51)){for(var _0xafcc82=0x0;_0xafcc82<_0x3f7926[_0xb54e51][_0x2203('0x3a')];_0xafcc82+=0x1){var _0x1bbd2d=_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x54')];if(_0x169845[_0x2203('0x13')][_0x1bbd2d]){if(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x55')]){_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x2c')]+=0x1;}if(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x56')]){_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x2d')]+=0x1;}_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x27')]+=moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x57')])[_0x2203('0x58')](moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x59')]),_0x2203('0x5a'))||0x0;if(_0xafcc82===_0x3f7926[_0xb54e51]['length']-0x1){_0x169845[_0x2203('0x13')][_0x1bbd2d]['sumDuration']+=moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x5b')]||_0x3f7926[_0xb54e51][_0xafcc82]['queuecallerabandonAt']||_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x5c')])[_0x2203('0x58')](moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x59')]),_0x2203('0x5a'))||0x0;_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x25')]+=0x1;if(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x5d')]){_0x169845[_0x2203('0x13')][_0x1bbd2d]['answered']+=0x1;_0x169845['voiceQueues'][_0x1bbd2d][_0x2203('0x29')]+=moment(_0x3f7926[_0xb54e51][_0xafcc82][_0x2203('0x5b')])[_0x2203('0x58')](moment(_0x3f7926[_0xb54e51][_0xafcc82]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x169845['voiceQueues'][_0x1bbd2d][_0x2203('0x28')]+=_0x169845[_0x2203('0x13')][_0x1bbd2d][_0x2203('0x27')]||0x0;}}}}}}return _0x169845[_0x2203('0x13')];};};Realtime['prototype'][_0x2203('0x5e')]=function(){var _0x47a2c7=this;return function(_0x48bd5){clearVoiceCallReports(_0x47a2c7[_0x2203('0x15')]);if(_0x48bd5){for(var _0xe3bee5=0x0;_0xe3bee5<_0x48bd5[_0x2203('0x3a')];_0xe3bee5+=0x1){_0x47a2c7[_0x2203('0x15')]['total']+=0x1;_0x47a2c7[_0x2203('0x15')][_0x2203('0x28')]+=_0x48bd5[_0xe3bee5][_0x2203('0x5f')];if(_0x48bd5[_0xe3bee5]['disposition']===_0x2203('0x60')){_0x47a2c7[_0x2203('0x15')][_0x2203('0x26')]+=0x1;_0x47a2c7[_0x2203('0x15')][_0x2203('0x27')]+=_0x48bd5[_0xe3bee5][_0x2203('0x5f')]-_0x48bd5[_0xe3bee5][_0x2203('0x61')]||0x0;_0x47a2c7[_0x2203('0x15')][_0x2203('0x29')]+=_0x48bd5[_0xe3bee5][_0x2203('0x61')];}}}return _0x47a2c7[_0x2203('0x15')];};};Realtime['prototype'][_0x2203('0x62')]=function(){var _0x7f71b8=this;return function(_0x21b755){if(_0x21b755){freeIsNotKey(_0x21b755,_0x7f71b8[_0x2203('0x14')],_0x2203('0x22'));for(var _0x52c35e=0x0,_0x23f7b1={};_0x52c35e<_0x21b755[_0x2203('0x3a')];_0x52c35e+=0x1){_0x23f7b1=_0x21b755[_0x52c35e];if(_[_0x2203('0x3c')](_0x7f71b8[_0x2203('0x14')][_0x23f7b1[_0x2203('0x22')]])){_0x7f71b8[_0x2203('0x14')][_0x23f7b1['name']]=new Campaign(_0x23f7b1);}else{_0x7f71b8['mergeFromDatabase'](_0x7f71b8[_0x2203('0x14')][_0x23f7b1[_0x2203('0x22')]],_0x23f7b1);_0x7f71b8[_0x2203('0x14')][_0x23f7b1[_0x2203('0x22')]][_0x2203('0x63')]=_0x23f7b1['SquareProject']?_0x23f7b1[_0x2203('0x64')][_0x2203('0x22')]:undefined;}}}return _0x7f71b8['campaigns'];};};Realtime['prototype']['initVoiceExtensions']=function(){var _0x4fc51a=this;return function(_0x5e07d7){if(_0x5e07d7){freeIsNotKey(_0x5e07d7,_0x4fc51a[_0x2203('0x65')],'id');for(var _0x6319a3=0x0,_0x437095={};_0x6319a3<_0x5e07d7['length'];_0x6319a3+=0x1){_0x437095=_0x5e07d7[_0x6319a3];if(_['isUndefined'](_0x4fc51a['voiceExtensions'][_0x437095['id']])){_0x4fc51a[_0x2203('0x65')][_0x437095['id']]=new VoiceExtension(_0x437095);}else{_0x4fc51a[_0x2203('0x40')](_0x4fc51a[_0x2203('0x65')][_0x437095['id']],_0x437095);}}}return _0x4fc51a[_0x2203('0x65')];};};Realtime[_0x2203('0x39')][_0x2203('0x66')]=function(){var _0x3d1797=this;return function(_0x52f25e){clearCampaigns(_0x3d1797[_0x2203('0x14')]);for(var _0x74843=0x0;_0x74843<_0x52f25e[_0x2203('0x3a')];_0x74843+=0x1){_[_0x2203('0x67')](_0x3d1797[_0x2203('0x14')][_0x52f25e[_0x74843][_0x2203('0x22')]],_0x52f25e[_0x74843]);}return _0x3d1797[_0x2203('0x14')];};};Realtime['prototype'][_0x2203('0x68')]=function(){var _0x51a2fe=this;return function(_0x5d0176){if(_0x5d0176){freeIsNotKey(_0x5d0176,_0x51a2fe[_0x2203('0x1e')],'id');for(var _0x5cd030=0x0,_0xb9588e={};_0x5cd030<_0x5d0176[_0x2203('0x3a')];_0x5cd030+=0x1){_0xb9588e=_0x5d0176[_0x5cd030];if(_['isUndefined'](_0x51a2fe[_0x2203('0x1e')][_0xb9588e['id']])){_0x51a2fe[_0x2203('0x1e')][_0xb9588e['id']]=new FaxAccount(_0xb9588e);}else{_0x51a2fe[_0x2203('0x40')](_0x51a2fe[_0x2203('0x1e')][_0xb9588e['id']],_0xb9588e);}}}return _0x51a2fe[_0x2203('0x1e')];};};Realtime[_0x2203('0x39')]['initVoiceQueues']=function(){var _0x215638=this;return function(_0x3541b3){if(_0x3541b3){freeIsNotKey(_0x3541b3,_0x215638['voiceQueues'],'name');for(var _0x377176=0x0,_0x3fe71b={};_0x377176<_0x3541b3[_0x2203('0x3a')];_0x377176+=0x1){_0x3fe71b=_0x3541b3[_0x377176];if(_[_0x2203('0x3c')](_0x215638[_0x2203('0x13')][_0x3fe71b[_0x2203('0x22')]])){_0x215638[_0x2203('0x13')][_0x3fe71b[_0x2203('0x22')]]=new VoiceQueue(_0x3fe71b);}else{_0x215638[_0x2203('0x40')](_0x215638[_0x2203('0x13')][_0x3fe71b[_0x2203('0x22')]],_0x3fe71b);}}}return _0x215638[_0x2203('0x13')];};};module[_0x2203('0x69')]=Realtime;
\ No newline at end of file
index 1ce57b2..aed76e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c9b=['assign','hasOwnProperty','mergeDBDataToRealtime'];(function(_0x204628,_0x128a53){var _0x38cedd=function(_0x29e181){while(--_0x29e181){_0x204628['push'](_0x204628['shift']());}};_0x38cedd(++_0x128a53);}(_0x7c9b,0x180));var _0xb7c9=function(_0x513b6a,_0x4ed4d0){_0x513b6a=_0x513b6a-0x0;var _0x4b5cc0=_0x7c9b[_0x513b6a];return _0x4b5cc0;};'use strict';function mergeDBDataToRealtime(_0x6ffef8,_0x14cb13){var _0x33bbbe=Object[_0xb7c9('0x0')]({},_0x6ffef8);for(var _0x212c14 in _0x14cb13){if(_0x33bbbe[_0xb7c9('0x1')](_0x212c14)){_0x33bbbe[_0x212c14]=_0x14cb13[_0x212c14];}}return _0x33bbbe;}exports[_0xb7c9('0x2')]=mergeDBDataToRealtime;
\ No newline at end of file
+var _0x4367=['hasOwnProperty','mergeDBDataToRealtime'];(function(_0x1b1306,_0xf1346e){var _0x3f23ac=function(_0x16cb46){while(--_0x16cb46){_0x1b1306['push'](_0x1b1306['shift']());}};_0x3f23ac(++_0xf1346e);}(_0x4367,0x114));var _0x7436=function(_0x25e887,_0xe99431){_0x25e887=_0x25e887-0x0;var _0x4890e6=_0x4367[_0x25e887];return _0x4890e6;};'use strict';function mergeDBDataToRealtime(_0x56e250,_0x3b5553){var _0x10f7cd=Object['assign']({},_0x56e250);for(var _0x254fc8 in _0x3b5553){if(_0x10f7cd[_0x7436('0x0')](_0x254fc8)){_0x10f7cd[_0x254fc8]=_0x3b5553[_0x254fc8];}}return _0x10f7cd;}exports[_0x7436('0x1')]=mergeDBDataToRealtime;
\ No newline at end of file
index 094d336..41238b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ce=['name','isNil','format','SIP/%s','voiceQueueReport','length','connectedlinenum','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','keys','getCallType','channel','split','getAgentByInternal','calleridnum','internal','destination','exten','type','dialer','lastapplication','queue','context','callerid','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','blindTransfer','UserId','membername','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','isArray','forEach','startsWith','substring','indexOf','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceDialReport','agents','telephones','prototype','sync','realtime','xdr','disabled','custom:voiceQueueReport','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','bind','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode'];(function(_0x3a0b61,_0x5d048f){var _0x4b1b0e=function(_0x213b53){while(--_0x213b53){_0x3a0b61['push'](_0x3a0b61['shift']());}};_0x4b1b0e(++_0x5d048f);}(_0x02ce,0x1b8));var _0xe02c=function(_0x104952,_0xeccdfb){_0x104952=_0x104952-0x0;var _0x4d0481=_0x02ce[_0x104952];return _0x4d0481;};'use strict';var _=require(_0xe02c('0x0'));var moment=require(_0xe02c('0x1'));var util=require(_0xe02c('0x2'));var config=require(_0xe02c('0x3'));var ami=require(_0xe02c('0x4'));var RpcVoiceAgentReport=require(_0xe02c('0x5'));var RpcVoiceCallReport=require(_0xe02c('0x6'));var RpcVoiceDialReport=require(_0xe02c('0x7'));var RpcMemberReport=require(_0xe02c('0x8'));var RpcVoiceQueueReport=require(_0xe02c('0x9'));var RpcVoiceRecording=require(_0xe02c('0xa'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xe02c('0xb'));var VoiceCallReport=require(_0xe02c('0xc'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0xe02c('0xd'));var UserReport=require('./userReport');function Report(_0x55d150){this['realtime']=_0x55d150;this[_0xe02c('0xe')]=_0x55d150['agents'];this[_0xe02c('0xf')]=_0x55d150['telephones'];}Report[_0xe02c('0x10')][_0xe02c('0x11')]=function(_0x574e3d){var _0x533180=new VoiceQueueReport(this['realtime']);var _0x28758a=new VoiceAgentReport(this[_0xe02c('0x12')]);var _0x4b3e8d=new VoiceDialReport(this[_0xe02c('0x12')]);var _0x4202f0=new VoiceCallReport(this[_0xe02c('0x12')]);var _0x2740a8=new UserReport(this['realtime']);if(config['xdr']&&config[_0xe02c('0x13')][_0xe02c('0x14')]){ami['on'](_0xe02c('0x15'),this['voiceQueueReport']['bind'](this));ami['on'](_0xe02c('0x16'),this[_0xe02c('0x17')]['bind'](this));ami['on'](_0xe02c('0x18'),this[_0xe02c('0x19')][_0xe02c('0x1a')](this));ami['on'](_0xe02c('0x1b'),this[_0xe02c('0x1c')]['bind'](this));ami['on'](_0xe02c('0x1d'),this['blindTransfer'][_0xe02c('0x1a')](this));ami['on'](_0xe02c('0x1e'),this[_0xe02c('0x1f')][_0xe02c('0x1a')](this));}};Report[_0xe02c('0x10')][_0xe02c('0x20')]=function(_0x1ad638){var _0x19969b;_0x19969b=_[_0xe02c('0x21')](this[_0xe02c('0xe')],function(_0x1fc0d3){return _0x1fc0d3[_0xe02c('0x22')]==_0x1ad638||_0x1fc0d3[_0xe02c('0x23')]==_0x1ad638;});if(_[_0xe02c('0x24')](_0x19969b)){var _0x4645f6=_[_0xe02c('0x21')](this[_0xe02c('0xf')],function(_0x20b2ba){return _0x20b2ba[_0xe02c('0x22')]==_0x1ad638||_0x20b2ba[_0xe02c('0x23')]==_0x1ad638;});if(_0x4645f6){_0x19969b=_[_0xe02c('0x21')](this[_0xe02c('0xe')],function(_0x140a29){return _0x140a29['interface']==util[_0xe02c('0x25')](_0xe02c('0x26'),_0x4645f6[_0xe02c('0x23')]);});}}return _0x19969b;};Report[_0xe02c('0x10')][_0xe02c('0x27')]=function(_0x20230b){for(var _0x57f31d=0x0;_0x57f31d<_0x20230b[_0xe02c('0x28')];_0x57f31d+=0x1){var _0xc1c298=this['findAgent'](_0x20230b[_0x57f31d][_0xe02c('0x29')]);if(_0xc1c298){_0x20230b[_0x57f31d][_0xe02c('0x22')]=_0xc1c298[_0xe02c('0x22')];_0x20230b[_0x57f31d]['assigned']=!![];_0x20230b[_0x57f31d][_0xe02c('0x2a')]=_0xc1c298[_0xe02c('0x23')];_0x20230b[_0x57f31d]['interface']=_[_0xe02c('0x24')](_0xc1c298[_0xe02c('0x2b')])?util['format']('SIP/%s',_0xc1c298[_0xe02c('0x23')]):_0xc1c298[_0xe02c('0x2b')];if(_0x20230b[_0x57f31d][_0xe02c('0x2c')]){_0x20230b[_0x57f31d][_0xe02c('0x2d')]=moment()[_0xe02c('0x25')](_0xe02c('0x2e'));}if(_0x20230b[_0x57f31d][_0xe02c('0x2f')]){_0x20230b[_0x57f31d][_0xe02c('0x30')]=moment()[_0xe02c('0x25')](_0xe02c('0x2e'));}RpcMemberReport[_0xe02c('0x27')](_0x20230b[_0x57f31d]);}RpcVoiceQueueReport[_0xe02c('0x31')](_0x20230b[_0x57f31d]);}};function extractCalleridNumber(_0x136d89){var _0x46667=_0x136d89['match'](/<(.*?)>/);return _0x46667?_0x46667[0x1]:_0x136d89;}Report['prototype']['getAgentByInternal']=function(_0x2272b8){for(var _0x1443f5=0x0;_0x1443f5<Object[_0xe02c('0x32')](this[_0xe02c('0xe')])[_0xe02c('0x28')];_0x1443f5++){var _0x5a4845=Object['keys'](this[_0xe02c('0xe')])[_0x1443f5];var _0x502373=this[_0xe02c('0xe')][_0x5a4845];if(_0x502373[_0xe02c('0x22')]===Number(_0x2272b8))return _0x502373;}return null;};Report[_0xe02c('0x10')][_0xe02c('0x33')]=function(_0x1ddb1b){var _0x4f0de7=_0x1ddb1b[_0xe02c('0x34')][_0xe02c('0x35')]('-')[0x0];var _0x3cb7ec=this[_0xe02c('0xe')][_0x4f0de7];if(!_0x3cb7ec)_0x3cb7ec=this[_0xe02c('0x36')](_0x1ddb1b[_0xe02c('0x37')]);return!_0x3cb7ec?'outbound':_0xe02c('0x38');};Report['prototype'][_0xe02c('0x17')]=function(_0x3692ee){_0x3692ee[_0xe02c('0x39')]=_0x3692ee['destination']||_0x3692ee[_0xe02c('0x3a')];if(_0x3692ee[_0xe02c('0x3b')]==_0xe02c('0x3c')){_0x3692ee[_0xe02c('0x3d')]=_0xe02c('0x3e');_0x3692ee['lastdata']=_0x3692ee['queue'];if(_0x3692ee[_0xe02c('0x3f')]=='from-voip-provider'){_0x3692ee[_0xe02c('0x22')]='';_0x3692ee[_0xe02c('0x39')]=extractCalleridNumber(_0x3692ee[_0xe02c('0x40')]);}else if(_0x3692ee[_0xe02c('0x3f')]==_0xe02c('0x41')){if(_0x3692ee[_0xe02c('0x39')]==_0xe02c('0x42')){_0x3692ee[_0xe02c('0x39')]=extractCalleridNumber(_0x3692ee[_0xe02c('0x43')]);_0x3692ee[_0xe02c('0x37')]=_0x3692ee[_0xe02c('0x44')];_0x3692ee[_0xe02c('0x45')]=[_0x3692ee[_0xe02c('0x34')],_0x3692ee['channel']=_0x3692ee[_0xe02c('0x45')]][0x0];_0x3692ee[_0xe02c('0x40')]=_0x3692ee['calleridpreview'];}else{_0x3692ee[_0xe02c('0x39')]=_0x3692ee[_0xe02c('0x37')];_0x3692ee[_0xe02c('0x37')]=_0x3692ee['originatecalleridnum'];if(_0x3692ee[_0xe02c('0x46')]==_0xe02c('0x47')){_0x3692ee[_0xe02c('0x22')]=_0x3692ee[_0xe02c('0x29')];}else{_0x3692ee[_0xe02c('0x22')]='';}}}}else{_0x3692ee[_0xe02c('0x40')]=util['format'](_0xe02c('0x48'),_0x3692ee[_0xe02c('0x49')],_0x3692ee[_0xe02c('0x37')]);}if(RpcVoiceTransferReport[_0xe02c('0x4a')][_0x3692ee[_0xe02c('0x4b')]]){var _0x44bec1=RpcVoiceTransferReport[_0xe02c('0x4a')][_0x3692ee[_0xe02c('0x4b')]];_0x44bec1[_0xe02c('0x4c')]=_0x3692ee['uniqueid'];RpcVoiceTransferReport[_0xe02c('0x4d')](_0x44bec1);delete RpcVoiceTransferReport[_0xe02c('0x4a')][_0x3692ee['linkedid']];}if(_[_0xe02c('0x24')](_0x3692ee[_0xe02c('0x3b')])){_0x3692ee[_0xe02c('0x3b')]=this[_0xe02c('0x33')](_0x3692ee);}if(_['isNil'](_0x3692ee['UserId'])){var _0x238d01=_0x3692ee[_0xe02c('0x34')]['split']('-')[0x0];var _0x2d2d30=this['agents'][_0x238d01];if(!_0x2d2d30)_0x2d2d30=this['getAgentByInternal'](_0x3692ee['accountcode']);if(_0x2d2d30){_0x3692ee[_0xe02c('0x4e')]=_0x2d2d30['id'];_0x3692ee[_0xe02c('0x4f')]=_0x2d2d30[_0xe02c('0x23')];}}RpcVoiceCallReport[_0xe02c('0x31')](_0x3692ee);if(_0x3692ee[_0xe02c('0x50')]){for(var _0x4bb13a=0x0;_0x4bb13a<_0x3692ee[_0xe02c('0x51')][_0xe02c('0x28')];_0x4bb13a+=0x1){_0x3692ee[_0xe02c('0x52')]=_0x3692ee[_0xe02c('0x51')][_0x4bb13a][_0xe02c('0x53')];_0x3692ee[_0xe02c('0x54')]=_0x3692ee['monitors'][_0x4bb13a]['createdAt'];if(_0x3692ee[_0xe02c('0x3a')]==_0xe02c('0x42')){_0x3692ee['calleridnum']=_0x3692ee[_0xe02c('0x29')];_0x3692ee[_0xe02c('0x49')]=_0x3692ee[_0xe02c('0x55')];_0x3692ee[_0xe02c('0x29')]=_0x3692ee['accountcode'];_0x3692ee[_0xe02c('0x55')]=_0x3692ee[_0xe02c('0x4f')];_0x3692ee['exten']=_0x3692ee[_0xe02c('0x44')];}else if(_0x3692ee[_0xe02c('0x3a')]==_0xe02c('0x56')){_0x3692ee['calleridnum']=_0x3692ee[_0xe02c('0x39')];_0x3692ee[_0xe02c('0x3a')]=_0x3692ee[_0xe02c('0x44')];}RpcVoiceRecording['create'](_0x3692ee);}}};Report['prototype'][_0xe02c('0x19')]=function(_0x52e65c){if(_[_0xe02c('0x57')](_0x52e65c)){_0x52e65c[_0xe02c('0x58')](function(_0x145b9c){RpcVoiceAgentReport[_0xe02c('0x31')](_0x145b9c);});}else{RpcVoiceAgentReport[_0xe02c('0x31')](_0x52e65c);}};Report[_0xe02c('0x10')]['voiceDialReport']=function(_0x1a9627){RpcVoiceDialReport['create'](_0x1a9627);var _0xb06aae;var _0x21ac78;var _0x5b660c=_0x1a9627['channel'];if(_[_0xe02c('0x59')](_0x5b660c,'Local')){_0x21ac78=_0x5b660c[_0xe02c('0x5a')](_0x5b660c[_0xe02c('0x5b')]('/')+0x1,_0x5b660c[_0xe02c('0x5b')]('@'));_0xb06aae=_[_0xe02c('0x21')](this[_0xe02c('0xe')],function(_0x59d7fa){return _0x59d7fa['mobile']==_0x21ac78||_0x59d7fa['phone']==_0x21ac78||_0x59d7fa[_0xe02c('0x22')]==_0x21ac78;});}else{_0x21ac78=_0x5b660c[_0xe02c('0x5a')](_0x5b660c['indexOf']('/')+0x1,_0x5b660c[_0xe02c('0x5c')]('-'));_0xb06aae=this[_0xe02c('0x20')](_0x21ac78);}if(_0xb06aae){_0x1a9627[_0xe02c('0x2b')]=_['isNil'](_0xb06aae[_0xe02c('0x2b')])?util[_0xe02c('0x25')](_0xe02c('0x26'),_0xb06aae[_0xe02c('0x23')]):_0xb06aae[_0xe02c('0x2b')];_0x1a9627[_0xe02c('0x4f')]=_0xb06aae[_0xe02c('0x23')];_0x1a9627[_0xe02c('0x22')]=_0xb06aae[_0xe02c('0x22')];RpcMemberReport[_0xe02c('0x1c')](_0x1a9627);}};Report[_0xe02c('0x10')][_0xe02c('0x4d')]=function(_0x3d82d8){RpcVoiceTransferReport[_0xe02c('0x4a')][_0x3d82d8[_0xe02c('0x5d')]]=_0x3d82d8;};Report[_0xe02c('0x10')][_0xe02c('0x1f')]=function(_0x5d9f46){RpcVoiceTransferReport[_0xe02c('0x1f')](_0x5d9f46);};module[_0xe02c('0x5e')]=Report;
\ No newline at end of file
+var _0x7d56=['transfers','linkedid','uniqueid','blindTransfer','UserId','membername','monitor','monitors','length','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','voiceAgentReport','isArray','startsWith','Local','substring','indexOf','lastIndexOf','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedTransfer','findAgent','accountcode','name','isNil','find','SIP/%s','connectedlinenum','assigned','lastAssignedTo','interface','format','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','voiceQueueReport','create','match','getAgentByInternal','keys','getCallType','split','calleridnum','outbound','internal','destination','exten','type','dialer','lastdata','context','from-voip-provider','callerid','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x7d56,0x196));var _0x67d5=function(_0x31e362,_0x59cff3){_0x31e362=_0x31e362-0x0;var _0x38c4a4=_0x7d56[_0x31e362];return _0x38c4a4;};'use strict';var _=require(_0x67d5('0x0'));var moment=require(_0x67d5('0x1'));var util=require(_0x67d5('0x2'));var config=require(_0x67d5('0x3'));var ami=require(_0x67d5('0x4'));var RpcVoiceAgentReport=require(_0x67d5('0x5'));var RpcVoiceCallReport=require(_0x67d5('0x6'));var RpcVoiceDialReport=require(_0x67d5('0x7'));var RpcMemberReport=require(_0x67d5('0x8'));var RpcVoiceQueueReport=require(_0x67d5('0x9'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require(_0x67d5('0xa'));var VoiceQueueReport=require(_0x67d5('0xb'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0x67d5('0xc'));var VoiceDialReport=require(_0x67d5('0xd'));var UserReport=require(_0x67d5('0xe'));function Report(_0x141be8){this[_0x67d5('0xf')]=_0x141be8;this[_0x67d5('0x10')]=_0x141be8[_0x67d5('0x10')];this[_0x67d5('0x11')]=_0x141be8[_0x67d5('0x11')];}Report[_0x67d5('0x12')][_0x67d5('0x13')]=function(_0x57a099){var _0x69abd4=new VoiceQueueReport(this['realtime']);var _0x5ee83a=new VoiceAgentReport(this[_0x67d5('0xf')]);var _0x117879=new VoiceDialReport(this[_0x67d5('0xf')]);var _0x4c71c9=new VoiceCallReport(this[_0x67d5('0xf')]);var _0x517935=new UserReport(this[_0x67d5('0xf')]);if(config[_0x67d5('0x14')]&&config[_0x67d5('0x14')][_0x67d5('0x15')]){ami['on'](_0x67d5('0x16'),this['voiceQueueReport'][_0x67d5('0x17')](this));ami['on'](_0x67d5('0x18'),this[_0x67d5('0x19')]['bind'](this));ami['on'](_0x67d5('0x1a'),this['voiceAgentReport'][_0x67d5('0x17')](this));ami['on'](_0x67d5('0x1b'),this[_0x67d5('0x1c')][_0x67d5('0x17')](this));ami['on'](_0x67d5('0x1d'),this['blindTransfer'][_0x67d5('0x17')](this));ami['on']('attendedtransfer',this[_0x67d5('0x1e')][_0x67d5('0x17')](this));}};Report[_0x67d5('0x12')][_0x67d5('0x1f')]=function(_0x1137fc){var _0x4f3715;_0x4f3715=_['find'](this['agents'],function(_0x2ac3dd){return _0x2ac3dd[_0x67d5('0x20')]==_0x1137fc||_0x2ac3dd[_0x67d5('0x21')]==_0x1137fc;});if(_[_0x67d5('0x22')](_0x4f3715)){var _0xd54dcd=_[_0x67d5('0x23')](this[_0x67d5('0x11')],function(_0x4ea574){return _0x4ea574['accountcode']==_0x1137fc||_0x4ea574[_0x67d5('0x21')]==_0x1137fc;});if(_0xd54dcd){_0x4f3715=_[_0x67d5('0x23')](this[_0x67d5('0x10')],function(_0x4dc746){return _0x4dc746['interface']==util['format'](_0x67d5('0x24'),_0xd54dcd[_0x67d5('0x21')]);});}}return _0x4f3715;};Report[_0x67d5('0x12')]['voiceQueueReport']=function(_0x598eb5){for(var _0x1bd2e1=0x0;_0x1bd2e1<_0x598eb5['length'];_0x1bd2e1+=0x1){var _0x570499=this[_0x67d5('0x1f')](_0x598eb5[_0x1bd2e1][_0x67d5('0x25')]);if(_0x570499){_0x598eb5[_0x1bd2e1][_0x67d5('0x20')]=_0x570499[_0x67d5('0x20')];_0x598eb5[_0x1bd2e1][_0x67d5('0x26')]=!![];_0x598eb5[_0x1bd2e1][_0x67d5('0x27')]=_0x570499[_0x67d5('0x21')];_0x598eb5[_0x1bd2e1][_0x67d5('0x28')]=_['isNil'](_0x570499[_0x67d5('0x28')])?util[_0x67d5('0x29')]('SIP/%s',_0x570499[_0x67d5('0x21')]):_0x570499['interface'];if(_0x598eb5[_0x1bd2e1][_0x67d5('0x2a')]){_0x598eb5[_0x1bd2e1][_0x67d5('0x2b')]=moment()[_0x67d5('0x29')](_0x67d5('0x2c'));}if(_0x598eb5[_0x1bd2e1][_0x67d5('0x2d')]){_0x598eb5[_0x1bd2e1][_0x67d5('0x2e')]=moment()[_0x67d5('0x29')](_0x67d5('0x2c'));}RpcMemberReport[_0x67d5('0x2f')](_0x598eb5[_0x1bd2e1]);}RpcVoiceQueueReport[_0x67d5('0x30')](_0x598eb5[_0x1bd2e1]);}};function extractCalleridNumber(_0x471b08){var _0x3890b5=_0x471b08[_0x67d5('0x31')](/<(.*?)>/);return _0x3890b5?_0x3890b5[0x1]:_0x471b08;}Report[_0x67d5('0x12')][_0x67d5('0x32')]=function(_0x4b0d51){for(var _0x448ce0=0x0;_0x448ce0<Object[_0x67d5('0x33')](this[_0x67d5('0x10')])['length'];_0x448ce0++){var _0x160834=Object[_0x67d5('0x33')](this['agents'])[_0x448ce0];var _0x28aefa=this[_0x67d5('0x10')][_0x160834];if(_0x28aefa[_0x67d5('0x20')]===Number(_0x4b0d51))return _0x28aefa;}return null;};Report[_0x67d5('0x12')][_0x67d5('0x34')]=function(_0x3b82e0){var _0x4d8c91=_0x3b82e0['channel'][_0x67d5('0x35')]('-')[0x0];var _0x3e66fd=this[_0x67d5('0x10')][_0x4d8c91];if(!_0x3e66fd)_0x3e66fd=this[_0x67d5('0x32')](_0x3b82e0[_0x67d5('0x36')]);return!_0x3e66fd?_0x67d5('0x37'):_0x67d5('0x38');};Report[_0x67d5('0x12')]['voiceCallReport']=function(_0x5c402f){_0x5c402f[_0x67d5('0x39')]=_0x5c402f[_0x67d5('0x39')]||_0x5c402f[_0x67d5('0x3a')];if(_0x5c402f[_0x67d5('0x3b')]==_0x67d5('0x3c')){_0x5c402f['lastapplication']='queue';_0x5c402f[_0x67d5('0x3d')]=_0x5c402f['queue'];if(_0x5c402f[_0x67d5('0x3e')]==_0x67d5('0x3f')){_0x5c402f['accountcode']='';_0x5c402f[_0x67d5('0x39')]=extractCalleridNumber(_0x5c402f[_0x67d5('0x40')]);}else if(_0x5c402f[_0x67d5('0x3e')]=='from-sip'){if(_0x5c402f[_0x67d5('0x39')]==_0x67d5('0x41')){_0x5c402f[_0x67d5('0x39')]=extractCalleridNumber(_0x5c402f[_0x67d5('0x42')]);_0x5c402f[_0x67d5('0x36')]=_0x5c402f[_0x67d5('0x43')];_0x5c402f[_0x67d5('0x44')]=[_0x5c402f[_0x67d5('0x45')],_0x5c402f[_0x67d5('0x45')]=_0x5c402f[_0x67d5('0x44')]][0x0];_0x5c402f[_0x67d5('0x40')]=_0x5c402f[_0x67d5('0x42')];}else{_0x5c402f['destination']=_0x5c402f[_0x67d5('0x36')];_0x5c402f[_0x67d5('0x36')]=_0x5c402f[_0x67d5('0x43')];if(_0x5c402f[_0x67d5('0x46')]==_0x67d5('0x47')){_0x5c402f['accountcode']=_0x5c402f[_0x67d5('0x25')];}else{_0x5c402f[_0x67d5('0x20')]='';}}}}else{_0x5c402f['callerid']=util[_0x67d5('0x29')](_0x67d5('0x48'),_0x5c402f[_0x67d5('0x49')],_0x5c402f['calleridnum']);}if(RpcVoiceTransferReport[_0x67d5('0x4a')][_0x5c402f['linkedid']]){var _0x1d8c63=RpcVoiceTransferReport[_0x67d5('0x4a')][_0x5c402f[_0x67d5('0x4b')]];_0x1d8c63['transfereelinkedid']=_0x5c402f[_0x67d5('0x4c')];RpcVoiceTransferReport[_0x67d5('0x4d')](_0x1d8c63);delete RpcVoiceTransferReport[_0x67d5('0x4a')][_0x5c402f[_0x67d5('0x4b')]];}if(_['isNil'](_0x5c402f[_0x67d5('0x3b')])){_0x5c402f[_0x67d5('0x3b')]=this[_0x67d5('0x34')](_0x5c402f);}if(_[_0x67d5('0x22')](_0x5c402f[_0x67d5('0x4e')])){var _0x23678b=_0x5c402f[_0x67d5('0x45')]['split']('-')[0x0];var _0x87e995=this['agents'][_0x23678b];if(!_0x87e995)_0x87e995=this[_0x67d5('0x32')](_0x5c402f['accountcode']);if(_0x87e995){_0x5c402f[_0x67d5('0x4e')]=_0x87e995['id'];_0x5c402f[_0x67d5('0x4f')]=_0x87e995[_0x67d5('0x21')];}}RpcVoiceCallReport[_0x67d5('0x30')](_0x5c402f);if(_0x5c402f[_0x67d5('0x50')]){for(var _0x41cd42=0x0;_0x41cd42<_0x5c402f[_0x67d5('0x51')][_0x67d5('0x52')];_0x41cd42+=0x1){_0x5c402f[_0x67d5('0x53')]=_0x5c402f['monitors'][_0x41cd42][_0x67d5('0x54')];_0x5c402f[_0x67d5('0x55')]=_0x5c402f[_0x67d5('0x51')][_0x41cd42][_0x67d5('0x55')];if(_0x5c402f['exten']==_0x67d5('0x41')){_0x5c402f[_0x67d5('0x36')]=_0x5c402f[_0x67d5('0x25')];_0x5c402f['calleridname']=_0x5c402f[_0x67d5('0x56')];_0x5c402f['connectedlinenum']=_0x5c402f['accountcode'];_0x5c402f['connectedlinename']=_0x5c402f[_0x67d5('0x4f')];_0x5c402f['exten']=_0x5c402f[_0x67d5('0x43')];}else if(_0x5c402f[_0x67d5('0x3a')]==_0x67d5('0x57')){_0x5c402f[_0x67d5('0x36')]=_0x5c402f['destination'];_0x5c402f[_0x67d5('0x3a')]=_0x5c402f[_0x67d5('0x43')];}RpcVoiceRecording[_0x67d5('0x30')](_0x5c402f);}}};Report[_0x67d5('0x12')][_0x67d5('0x58')]=function(_0x27164f){if(_[_0x67d5('0x59')](_0x27164f)){_0x27164f['forEach'](function(_0x424dcd){RpcVoiceAgentReport['create'](_0x424dcd);});}else{RpcVoiceAgentReport['create'](_0x27164f);}};Report[_0x67d5('0x12')][_0x67d5('0x1c')]=function(_0x51a54c){RpcVoiceDialReport[_0x67d5('0x30')](_0x51a54c);var _0x212003;var _0x8c627b;var _0x5545b1=_0x51a54c[_0x67d5('0x45')];if(_[_0x67d5('0x5a')](_0x5545b1,_0x67d5('0x5b'))){_0x8c627b=_0x5545b1[_0x67d5('0x5c')](_0x5545b1['indexOf']('/')+0x1,_0x5545b1[_0x67d5('0x5d')]('@'));_0x212003=_[_0x67d5('0x23')](this['agents'],function(_0x359530){return _0x359530['mobile']==_0x8c627b||_0x359530['phone']==_0x8c627b||_0x359530[_0x67d5('0x20')]==_0x8c627b;});}else{_0x8c627b=_0x5545b1['substring'](_0x5545b1['indexOf']('/')+0x1,_0x5545b1[_0x67d5('0x5e')]('-'));_0x212003=this['findAgent'](_0x8c627b);}if(_0x212003){_0x51a54c[_0x67d5('0x28')]=_[_0x67d5('0x22')](_0x212003[_0x67d5('0x28')])?util[_0x67d5('0x29')](_0x67d5('0x24'),_0x212003[_0x67d5('0x21')]):_0x212003[_0x67d5('0x28')];_0x51a54c['membername']=_0x212003[_0x67d5('0x21')];_0x51a54c[_0x67d5('0x20')]=_0x212003['accountcode'];RpcMemberReport[_0x67d5('0x1c')](_0x51a54c);}};Report[_0x67d5('0x12')][_0x67d5('0x4d')]=function(_0x4de523){RpcVoiceTransferReport['transfers'][_0x4de523['transfererlinkedid']]=_0x4de523;};Report[_0x67d5('0x12')][_0x67d5('0x1e')]=function(_0x1edb3f){RpcVoiceTransferReport[_0x67d5('0x1e')](_0x1edb3f);};module[_0x67d5('0x5f')]=Report;
\ No newline at end of file
index cdb7964..7afbb6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x096a=['indexOf','mobile','phone','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','exports','lodash','util','ioredis','bluebird','../../../config/environment','ami','redis','localhost','trunks','agents','telephones','syncRegistry','bind','registry','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','format','name','trunk:save','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','substring'];(function(_0x487fb9,_0x43c08e){var _0x44d36a=function(_0x155d12){while(--_0x155d12){_0x487fb9['push'](_0x487fb9['shift']());}};_0x44d36a(++_0x43c08e);}(_0x096a,0x121));var _0xa096=function(_0x37e85b,_0x29d0d1){_0x37e85b=_0x37e85b-0x0;var _0x227f8f=_0x096a[_0x37e85b];return _0x227f8f;};'use strict';var _=require(_0xa096('0x0'));var moment=require('moment');var util=require(_0xa096('0x1'));var Redis=require(_0xa096('0x2'));var BPromise=require(_0xa096('0x3'));var config=require(_0xa096('0x4'));var logger=require('../../../config/logger')(_0xa096('0x5'));var ami=require('../ami');config[_0xa096('0x6')]=_['defaults'](config[_0xa096('0x6')],{'host':_0xa096('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa096('0x6')]));function UserReport(_0x586103){this[_0xa096('0x8')]=_0x586103[_0xa096('0x8')];this[_0xa096('0x9')]=_0x586103[_0xa096('0x9')];this[_0xa096('0xa')]=_0x586103[_0xa096('0xa')];ami['on']('registryentry',this[_0xa096('0xb')][_0xa096('0xc')](this));ami['on'](_0xa096('0xd'),this[_0xa096('0xb')][_0xa096('0xc')](this));ami['on']('devicestatechange',this[_0xa096('0xe')][_0xa096('0xc')](this));ami['on'](_0xa096('0xf'),this['syncPeerStatus'][_0xa096('0xc')](this));return this[_0xa096('0x10')]();}function showSipRegistrations(){Promise[_0xa096('0x11')]()[_0xa096('0x12')](ami[_0xa096('0x13')]())[_0xa096('0x14')](function(_0x512723){logger[_0xa096('0x15')](_0xa096('0x16'),util[_0xa096('0x17')](_0x512723,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xa096('0x12')](ami['actionDeviceStateList']())['catch'](function(_0x100da7){logger[_0xa096('0x15')]('[userReport][devicestatelist]',util[_0xa096('0x17')](_0x100da7,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()['then'](ami[_0xa096('0x18')]())[_0xa096('0x14')](function(_0x4d203b){logger['error']('[userReport][sippeerstatus]',util[_0xa096('0x17')](_0x4d203b,{'showHidden':![],'depth':null}));});}UserReport[_0xa096('0x19')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0xa096('0x11')]()['then'](showSipRegistrations())[_0xa096('0x12')](listDeviceStates())[_0xa096('0x12')](showPeersStatus());},0x32c8);};UserReport[_0xa096('0x19')][_0xa096('0x1a')]=function(_0x3fdf66){return _0x3fdf66!==null&&!_[_0xa096('0x1b')](_0x3fdf66);};UserReport[_0xa096('0x19')][_0xa096('0x1c')]=function(_0x4a3714,_0x37ab55,_0x101ddb){io['to'](_0x4a3714)[_0xa096('0x1c')](_0x37ab55,_0x101ddb);};UserReport['prototype'][_0xa096('0xb')]=function(_0x41c1c9){try{if(this[_0xa096('0x1a')](_0x41c1c9)){logger[_0xa096('0x1d')](_0xa096('0x1e'),_0x41c1c9[_0xa096('0x1f')],_0x41c1c9[_0xa096('0x20')]);logger[_0xa096('0x21')](_0xa096('0x22'),util[_0xa096('0x17')](_0x41c1c9,{'showHidden':![],'depth':null}));var _0x24d14e=_[_0xa096('0x23')](this['trunks'],{'defaultuser':_0x41c1c9[_0xa096('0x1f')]});if(_0x24d14e){_0x41c1c9[_0xa096('0x24')]=_0x41c1c9[_0xa096('0x20')];_[_0xa096('0x25')](_0x24d14e,_[_0xa096('0x26')](_0x41c1c9,[_0xa096('0x27'),_0xa096('0x28'),_0xa096('0x1f'),_0xa096('0x20')]));logger[_0xa096('0x21')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0xa096('0x17')](_0x24d14e,{'showHidden':![],'depth':null}));this[_0xa096('0x1c')](util[_0xa096('0x29')]('trunk:%s',_0x24d14e[_0xa096('0x2a')]),_0xa096('0x2b'),_0x24d14e);}}}catch(_0x24f58e){logger[_0xa096('0x15')](_0xa096('0x22'),util[_0xa096('0x17')](_0x24f58e,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xa096('0xe')]=function(_0x50cb81){try{if(this[_0xa096('0x1a')](_0x50cb81)){logger[_0xa096('0x1d')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x50cb81[_0xa096('0x2c')],_0x50cb81[_0xa096('0x20')]);logger[_0xa096('0x21')](_0xa096('0x2d'),util['inspect'](_0x50cb81,{'showHidden':![],'depth':null}));if(this[_0xa096('0x9')][_0x50cb81[_0xa096('0x2c')]]){if(!this[_0xa096('0x9')][_0x50cb81['device']][_0xa096('0x2e')]||_0x50cb81['state'][_0xa096('0x2f')]()==_0xa096('0x30')){this[_0xa096('0x9')][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x2e')]=![];if(this[_0xa096('0x9')][_0x50cb81['device']][_0xa096('0x20')]!==_0x50cb81[_0xa096('0x20')][_0xa096('0x2f')]()){this['agents'][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x31')]=_[_0xa096('0x32')](moment()[_0xa096('0x29')]('x'));}this['agents'][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x20')]=_0x50cb81[_0xa096('0x20')]['toLowerCase']();this['agents'][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x33')](_0x50cb81);}}else if(this[_0xa096('0xa')][_0x50cb81[_0xa096('0x2c')]]){if(this[_0xa096('0xa')][_0x50cb81['device']][_0xa096('0x20')]!==_0x50cb81[_0xa096('0x20')][_0xa096('0x2f')]()){this[_0xa096('0xa')][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x31')]=_[_0xa096('0x32')](moment()['format']('x'));}this[_0xa096('0xa')][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x20')]=_0x50cb81[_0xa096('0x20')]['toLowerCase']();logger[_0xa096('0x21')](_0xa096('0x34'),util[_0xa096('0x17')](this[_0xa096('0xa')][_0x50cb81[_0xa096('0x2c')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xa096('0x29')](_0xa096('0x35'),this[_0xa096('0xa')][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x2a')]),'telephone:save',this[_0xa096('0xa')][_0x50cb81['device']]);}else if(this[_0xa096('0x8')][_0x50cb81['device']]){if(this[_0xa096('0x8')][_0x50cb81['device']]['state']!==_0x50cb81['state'][_0xa096('0x2f')]()){this[_0xa096('0x8')][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x31')]=_[_0xa096('0x32')](moment()[_0xa096('0x29')]('x'));}this[_0xa096('0x8')][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x20')]=_0x50cb81[_0xa096('0x20')][_0xa096('0x2f')]();logger[_0xa096('0x21')](_0xa096('0x36'),util[_0xa096('0x17')](this[_0xa096('0x8')][_0x50cb81[_0xa096('0x2c')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xa096('0x29')]('trunk:%s',this[_0xa096('0x8')][_0x50cb81[_0xa096('0x2c')]][_0xa096('0x2a')]),_0xa096('0x2b'),this[_0xa096('0x8')][_0x50cb81[_0xa096('0x2c')]]);}else if(_['startsWith'](_0x50cb81[_0xa096('0x2c')],'Local')){var _0x27e0f3=_0x50cb81[_0xa096('0x2c')];var _0x457fb4=_0x27e0f3[_0xa096('0x37')](_0x27e0f3['indexOf']('/')+0x1,_0x27e0f3[_0xa096('0x38')]('@'));var _0x1b45b3=_[_0xa096('0x23')](this[_0xa096('0x9')],function(_0x5cc434){return _0x5cc434[_0xa096('0x39')]==_0x457fb4||_0x5cc434[_0xa096('0x3a')]==_0x457fb4||_0x5cc434['accountcode']==_0x457fb4;});if(_0x1b45b3){if(_0x1b45b3['state']!==_0x50cb81[_0xa096('0x20')][_0xa096('0x2f')]()){_0x1b45b3[_0xa096('0x31')]=_[_0xa096('0x32')](moment()[_0xa096('0x29')]('x'));}_0x1b45b3[_0xa096('0x20')]=_0x50cb81[_0xa096('0x20')][_0xa096('0x2f')]();_0x1b45b3[_0xa096('0x2e')]=!![];_0x1b45b3[_0xa096('0x33')](_0x50cb81);}}}}catch(_0x2672e1){logger[_0xa096('0x15')](_0xa096('0x2d'),util['inspect'](_0x2672e1,{'showHidden':![],'depth':null}));}};UserReport[_0xa096('0x19')]['syncPeerStatus']=function(_0x3a0012){try{if(this[_0xa096('0x1a')](_0x3a0012)&&this[_0xa096('0x1a')](_0x3a0012[_0xa096('0xf')])){logger[_0xa096('0x1d')](_0xa096('0x3b'),_0x3a0012[_0xa096('0x3c')],_0x3a0012['address'],_0x3a0012['peerstatus']);logger['debug'](_0xa096('0x3d'),util[_0xa096('0x17')](_0x3a0012,{'showHidden':![],'depth':null}));if(this[_0xa096('0x9')][_0x3a0012[_0xa096('0x3c')]]){if(!this['agents'][_0x3a0012['peer']][_0xa096('0x2e')]||_0x3a0012[_0xa096('0xf')][_0xa096('0x2f')]()==_0xa096('0x3e')){this[_0xa096('0x9')][_0x3a0012[_0xa096('0x3c')]][_0xa096('0x2e')]=![];this['agents'][_0x3a0012[_0xa096('0x3c')]][_0xa096('0x3f')]=_0x3a0012['peerstatus'][_0xa096('0x2f')]();this[_0xa096('0x9')][_0x3a0012[_0xa096('0x3c')]][_0xa096('0x40')]=_0x3a0012[_0xa096('0x40')];this[_0xa096('0x9')][_0x3a0012['peer']]['updateStatusRealtime'](_0x3a0012);}}else if(this['telephones'][_0x3a0012[_0xa096('0x3c')]]){this[_0xa096('0xa')][_0x3a0012[_0xa096('0x3c')]][_0xa096('0x3f')]=_0x3a0012[_0xa096('0xf')][_0xa096('0x2f')]();this['telephones'][_0x3a0012[_0xa096('0x3c')]]['address']=_0x3a0012[_0xa096('0x40')];logger[_0xa096('0x21')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util['inspect'](this['telephones'][_0x3a0012[_0xa096('0x3c')]],{'showHidden':![],'depth':null}));this[_0xa096('0x1c')](util[_0xa096('0x29')](_0xa096('0x35'),this[_0xa096('0xa')][_0x3a0012[_0xa096('0x3c')]][_0xa096('0x2a')]),_0xa096('0x41'),this[_0xa096('0xa')][_0x3a0012[_0xa096('0x3c')]]);}else if(this[_0xa096('0x8')][_0x3a0012[_0xa096('0x3c')]]){this[_0xa096('0x8')][_0x3a0012[_0xa096('0x3c')]][_0xa096('0x3f')]=_0x3a0012[_0xa096('0xf')][_0xa096('0x2f')]();this[_0xa096('0x8')][_0x3a0012[_0xa096('0x3c')]][_0xa096('0x40')]=_0x3a0012[_0xa096('0x40')];logger['debug'](_0xa096('0x42'),util[_0xa096('0x17')](this[_0xa096('0x8')][_0x3a0012['peer']],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xa096('0x43'),this[_0xa096('0x8')][_0x3a0012[_0xa096('0x3c')]]['name']),_0xa096('0x2b'),this['trunks'][_0x3a0012[_0xa096('0x3c')]]);}}}catch(_0x17793c){logger[_0xa096('0x15')]('[userReport][peerstatus]',util[_0xa096('0x17')](_0x17793c,{'showHidden':![],'depth':null}));}};module[_0xa096('0x44')]=UserReport;
\ No newline at end of file
+var _0xf4e6=['[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','inspect','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','error','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','debug','[userReport][registry]','find','username','stateRegistry','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','state','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','mobile','phone','accountcode'];(function(_0x3dca81,_0x3b7176){var _0x27d01c=function(_0x1b4aea){while(--_0x1b4aea){_0x3dca81['push'](_0x3dca81['shift']());}};_0x27d01c(++_0x3b7176);}(_0xf4e6,0xa7));var _0x6f4e=function(_0x1f530d,_0x18a19e){_0x1f530d=_0x1f530d-0x0;var _0x22103f=_0xf4e6[_0x1f530d];return _0x22103f;};'use strict';var _=require(_0x6f4e('0x0'));var moment=require('moment');var util=require(_0x6f4e('0x1'));var Redis=require(_0x6f4e('0x2'));var BPromise=require(_0x6f4e('0x3'));var config=require(_0x6f4e('0x4'));var logger=require(_0x6f4e('0x5'))(_0x6f4e('0x6'));var ami=require('../ami');config[_0x6f4e('0x7')]=_['defaults'](config[_0x6f4e('0x7')],{'host':_0x6f4e('0x8'),'port':0x18eb});var io=require(_0x6f4e('0x9'))(new Redis(config[_0x6f4e('0x7')]));function UserReport(_0x2fcd52){this[_0x6f4e('0xa')]=_0x2fcd52[_0x6f4e('0xa')];this[_0x6f4e('0xb')]=_0x2fcd52[_0x6f4e('0xb')];this['telephones']=_0x2fcd52[_0x6f4e('0xc')];ami['on'](_0x6f4e('0xd'),this['syncRegistry'][_0x6f4e('0xe')](this));ami['on'](_0x6f4e('0xf'),this[_0x6f4e('0x10')][_0x6f4e('0xe')](this));ami['on'](_0x6f4e('0x11'),this[_0x6f4e('0x12')][_0x6f4e('0xe')](this));ami['on'](_0x6f4e('0x13'),this[_0x6f4e('0x14')][_0x6f4e('0xe')](this));return this[_0x6f4e('0x15')]();}function showSipRegistrations(){Promise[_0x6f4e('0x16')]()[_0x6f4e('0x17')](ami[_0x6f4e('0x18')]())['catch'](function(_0x4c0a7b){logger['error']('[userReport][sipshowregistry]',util[_0x6f4e('0x19')](_0x4c0a7b,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x6f4e('0x16')]()[_0x6f4e('0x17')](ami[_0x6f4e('0x1a')]())[_0x6f4e('0x1b')](function(_0x242b61){logger['error'](_0x6f4e('0x1c'),util[_0x6f4e('0x19')](_0x242b61,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x6f4e('0x16')]()[_0x6f4e('0x17')](ami[_0x6f4e('0x1d')]())['catch'](function(_0x49ba4a){logger[_0x6f4e('0x1e')](_0x6f4e('0x1f'),util[_0x6f4e('0x19')](_0x49ba4a,{'showHidden':![],'depth':null}));});}UserReport[_0x6f4e('0x20')][_0x6f4e('0x15')]=function(){setInterval(function(){BPromise[_0x6f4e('0x16')]()[_0x6f4e('0x17')](showSipRegistrations())[_0x6f4e('0x17')](listDeviceStates())[_0x6f4e('0x17')](showPeersStatus());},0x32c8);};UserReport[_0x6f4e('0x20')][_0x6f4e('0x21')]=function(_0x3999a5){return _0x3999a5!==null&&!_[_0x6f4e('0x22')](_0x3999a5);};UserReport[_0x6f4e('0x20')][_0x6f4e('0x23')]=function(_0x5b1111,_0x2c1277,_0x99d77e){io['to'](_0x5b1111)[_0x6f4e('0x23')](_0x2c1277,_0x99d77e);};UserReport[_0x6f4e('0x20')][_0x6f4e('0x10')]=function(_0x3829cf){try{if(this[_0x6f4e('0x21')](_0x3829cf)){logger[_0x6f4e('0x24')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x3829cf['username'],_0x3829cf['state']);logger[_0x6f4e('0x25')](_0x6f4e('0x26'),util[_0x6f4e('0x19')](_0x3829cf,{'showHidden':![],'depth':null}));var _0x5efd41=_[_0x6f4e('0x27')](this[_0x6f4e('0xa')],{'defaultuser':_0x3829cf[_0x6f4e('0x28')]});if(_0x5efd41){_0x3829cf[_0x6f4e('0x29')]=_0x3829cf['state'];_[_0x6f4e('0x2a')](_0x5efd41,_['omit'](_0x3829cf,[_0x6f4e('0x2b'),_0x6f4e('0x2c'),'username','state']));logger[_0x6f4e('0x25')](_0x6f4e('0x2d'),util[_0x6f4e('0x19')](_0x5efd41,{'showHidden':![],'depth':null}));this['emit'](util[_0x6f4e('0x2e')](_0x6f4e('0x2f'),_0x5efd41[_0x6f4e('0x30')]),_0x6f4e('0x31'),_0x5efd41);}}}catch(_0x4522aa){logger['error'](_0x6f4e('0x26'),util['inspect'](_0x4522aa,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x6f4e('0x12')]=function(_0x4b3aac){try{if(this[_0x6f4e('0x21')](_0x4b3aac)){logger[_0x6f4e('0x24')](_0x6f4e('0x32'),_0x4b3aac[_0x6f4e('0x33')],_0x4b3aac[_0x6f4e('0x34')]);logger[_0x6f4e('0x25')]('[userReport][devicestatechange]',util[_0x6f4e('0x19')](_0x4b3aac,{'showHidden':![],'depth':null}));if(this[_0x6f4e('0xb')][_0x4b3aac[_0x6f4e('0x33')]]){if(!this[_0x6f4e('0xb')][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x35')]||_0x4b3aac[_0x6f4e('0x34')][_0x6f4e('0x36')]()==_0x6f4e('0x37')){this['agents'][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x35')]=![];if(this[_0x6f4e('0xb')][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x34')]!==_0x4b3aac[_0x6f4e('0x34')][_0x6f4e('0x36')]()){this[_0x6f4e('0xb')][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x38')]=_[_0x6f4e('0x39')](moment()[_0x6f4e('0x2e')]('x'));}this[_0x6f4e('0xb')][_0x4b3aac['device']][_0x6f4e('0x34')]=_0x4b3aac[_0x6f4e('0x34')][_0x6f4e('0x36')]();this[_0x6f4e('0xb')][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x3a')](_0x4b3aac);}}else if(this['telephones'][_0x4b3aac[_0x6f4e('0x33')]]){if(this[_0x6f4e('0xc')][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x34')]!==_0x4b3aac[_0x6f4e('0x34')][_0x6f4e('0x36')]()){this[_0x6f4e('0xc')][_0x4b3aac['device']][_0x6f4e('0x38')]=_['toNumber'](moment()[_0x6f4e('0x2e')]('x'));}this['telephones'][_0x4b3aac['device']][_0x6f4e('0x34')]=_0x4b3aac[_0x6f4e('0x34')]['toLowerCase']();logger[_0x6f4e('0x25')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x6f4e('0x19')](this[_0x6f4e('0xc')][_0x4b3aac[_0x6f4e('0x33')]],{'showHidden':![],'depth':null}));this[_0x6f4e('0x23')](util['format']('telephone:%s',this[_0x6f4e('0xc')][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x30')]),_0x6f4e('0x3b'),this['telephones'][_0x4b3aac['device']]);}else if(this[_0x6f4e('0xa')][_0x4b3aac['device']]){if(this['trunks'][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x34')]!==_0x4b3aac['state'][_0x6f4e('0x36')]()){this['trunks'][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x38')]=_[_0x6f4e('0x39')](moment()[_0x6f4e('0x2e')]('x'));}this[_0x6f4e('0xa')][_0x4b3aac['device']][_0x6f4e('0x34')]=_0x4b3aac['state'][_0x6f4e('0x36')]();logger[_0x6f4e('0x25')](_0x6f4e('0x3c'),util[_0x6f4e('0x19')](this[_0x6f4e('0xa')][_0x4b3aac[_0x6f4e('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x6f4e('0x2e')](_0x6f4e('0x2f'),this['trunks'][_0x4b3aac[_0x6f4e('0x33')]][_0x6f4e('0x30')]),'trunk:save',this[_0x6f4e('0xa')][_0x4b3aac[_0x6f4e('0x33')]]);}else if(_[_0x6f4e('0x3d')](_0x4b3aac['device'],'Local')){var _0x41f70c=_0x4b3aac[_0x6f4e('0x33')];var _0x23af02=_0x41f70c[_0x6f4e('0x3e')](_0x41f70c[_0x6f4e('0x3f')]('/')+0x1,_0x41f70c['indexOf']('@'));var _0x63b67c=_[_0x6f4e('0x27')](this[_0x6f4e('0xb')],function(_0x4a2944){return _0x4a2944[_0x6f4e('0x40')]==_0x23af02||_0x4a2944[_0x6f4e('0x41')]==_0x23af02||_0x4a2944[_0x6f4e('0x42')]==_0x23af02;});if(_0x63b67c){if(_0x63b67c['state']!==_0x4b3aac['state']['toLowerCase']()){_0x63b67c[_0x6f4e('0x38')]=_[_0x6f4e('0x39')](moment()[_0x6f4e('0x2e')]('x'));}_0x63b67c[_0x6f4e('0x34')]=_0x4b3aac[_0x6f4e('0x34')]['toLowerCase']();_0x63b67c[_0x6f4e('0x35')]=!![];_0x63b67c[_0x6f4e('0x3a')](_0x4b3aac);}}}}catch(_0x9508d1){logger[_0x6f4e('0x1e')](_0x6f4e('0x43'),util['inspect'](_0x9508d1,{'showHidden':![],'depth':null}));}};UserReport[_0x6f4e('0x20')]['syncPeerStatus']=function(_0x9f81d5){try{if(this[_0x6f4e('0x21')](_0x9f81d5)&&this[_0x6f4e('0x21')](_0x9f81d5[_0x6f4e('0x13')])){logger[_0x6f4e('0x24')](_0x6f4e('0x44'),_0x9f81d5[_0x6f4e('0x45')],_0x9f81d5['address'],_0x9f81d5[_0x6f4e('0x13')]);logger[_0x6f4e('0x25')](_0x6f4e('0x46'),util[_0x6f4e('0x19')](_0x9f81d5,{'showHidden':![],'depth':null}));if(this[_0x6f4e('0xb')][_0x9f81d5[_0x6f4e('0x45')]]){if(!this[_0x6f4e('0xb')][_0x9f81d5['peer']]['local']||_0x9f81d5[_0x6f4e('0x13')][_0x6f4e('0x36')]()==_0x6f4e('0x47')){this[_0x6f4e('0xb')][_0x9f81d5[_0x6f4e('0x45')]][_0x6f4e('0x35')]=![];this['agents'][_0x9f81d5['peer']][_0x6f4e('0x48')]=_0x9f81d5[_0x6f4e('0x13')]['toLowerCase']();this[_0x6f4e('0xb')][_0x9f81d5[_0x6f4e('0x45')]][_0x6f4e('0x49')]=_0x9f81d5[_0x6f4e('0x49')];this[_0x6f4e('0xb')][_0x9f81d5['peer']][_0x6f4e('0x3a')](_0x9f81d5);}}else if(this[_0x6f4e('0xc')][_0x9f81d5[_0x6f4e('0x45')]]){this[_0x6f4e('0xc')][_0x9f81d5[_0x6f4e('0x45')]][_0x6f4e('0x48')]=_0x9f81d5[_0x6f4e('0x13')][_0x6f4e('0x36')]();this['telephones'][_0x9f81d5['peer']][_0x6f4e('0x49')]=_0x9f81d5[_0x6f4e('0x49')];logger['debug'](_0x6f4e('0x4a'),util[_0x6f4e('0x19')](this['telephones'][_0x9f81d5[_0x6f4e('0x45')]],{'showHidden':![],'depth':null}));this[_0x6f4e('0x23')](util[_0x6f4e('0x2e')](_0x6f4e('0x4b'),this[_0x6f4e('0xc')][_0x9f81d5[_0x6f4e('0x45')]][_0x6f4e('0x30')]),_0x6f4e('0x3b'),this[_0x6f4e('0xc')][_0x9f81d5[_0x6f4e('0x45')]]);}else if(this[_0x6f4e('0xa')][_0x9f81d5[_0x6f4e('0x45')]]){this[_0x6f4e('0xa')][_0x9f81d5[_0x6f4e('0x45')]][_0x6f4e('0x48')]=_0x9f81d5[_0x6f4e('0x13')][_0x6f4e('0x36')]();this[_0x6f4e('0xa')][_0x9f81d5['peer']]['address']=_0x9f81d5[_0x6f4e('0x49')];logger['debug'](_0x6f4e('0x4c'),util['inspect'](this[_0x6f4e('0xa')][_0x9f81d5[_0x6f4e('0x45')]],{'showHidden':![],'depth':null}));this[_0x6f4e('0x23')](util[_0x6f4e('0x2e')](_0x6f4e('0x2f'),this[_0x6f4e('0xa')][_0x9f81d5['peer']][_0x6f4e('0x30')]),_0x6f4e('0x31'),this[_0x6f4e('0xa')][_0x9f81d5[_0x6f4e('0x45')]]);}}}catch(_0x38614c){logger[_0x6f4e('0x1e')](_0x6f4e('0x46'),util[_0x6f4e('0x19')](_0x38614c,{'showHidden':![],'depth':null}));}};module[_0x6f4e('0x4d')]=UserReport;
\ No newline at end of file
index 71031c1..c0adaab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc0=['variables','format','YYYY-MM-DD\x20HH:mm:ss','called','type','inbound','voice','assign','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','info','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','merge','destconnectedlinenum','accountcode','exten','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','reason','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken','error','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','name','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','transfer','talktime','acw','acwTimeout','agentacw','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','addVariable','keys','variable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','memberdynamic','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','substring','channel','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','localhost','socket.io-emitter','voiceChannels','voiceQueues','agents','agentcalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','emit','isNotNull','prototype','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','isUndefined','channels','interface','destuniqueid','queue'];(function(_0x3125bc,_0x5bd0f8){var _0x1e99f3=function(_0x3efec1){while(--_0x3efec1){_0x3125bc['push'](_0x3125bc['shift']());}};_0x1e99f3(++_0x5bd0f8);}(_0xecc0,0x1b1));var _0x0ecc=function(_0x54562c,_0x5b8d16){_0x54562c=_0x54562c-0x0;var _0x5a8940=_0xecc0[_0x54562c];return _0x5a8940;};'use strict';var _=require(_0x0ecc('0x0'));var moment=require(_0x0ecc('0x1'));var util=require(_0x0ecc('0x2'));var Redis=require(_0x0ecc('0x3'));var config=require(_0x0ecc('0x4'));var logger=require(_0x0ecc('0x5'))(_0x0ecc('0x6'));var ami=require(_0x0ecc('0x7'));config['redis']=_['defaults'](config['redis'],{'host':_0x0ecc('0x8'),'port':0x18eb});var io=require(_0x0ecc('0x9'))(new Redis(config['redis']));function VoiceAgentReport(_0x2adc2a){this['channels']={};this[_0x0ecc('0xa')]=_0x2adc2a['channels'];this[_0x0ecc('0xb')]=_0x2adc2a[_0x0ecc('0xb')];this['agents']=_0x2adc2a[_0x0ecc('0xc')];this['variables']={};ami['on'](_0x0ecc('0xd'),this['syncAgentCalled'][_0x0ecc('0xe')](this));ami['on'](_0x0ecc('0xf'),this[_0x0ecc('0x10')][_0x0ecc('0xe')](this));ami['on'](_0x0ecc('0x11'),this[_0x0ecc('0x12')]['bind'](this));ami['on'](_0x0ecc('0x13'),this[_0x0ecc('0x14')][_0x0ecc('0xe')](this));ami['on'](_0x0ecc('0x15'),this[_0x0ecc('0x16')][_0x0ecc('0xe')](this));ami['on'](_0x0ecc('0x17'),this[_0x0ecc('0x18')][_0x0ecc('0xe')](this));ami['on'](_0x0ecc('0x19'),this[_0x0ecc('0x1a')]['bind'](this));ami['on']('musiconholdstart',this[_0x0ecc('0x1b')][_0x0ecc('0xe')](this));ami['on'](_0x0ecc('0x1c'),this[_0x0ecc('0x1d')][_0x0ecc('0xe')](this));ami['on'](_0x0ecc('0x1e'),this[_0x0ecc('0x1f')][_0x0ecc('0xe')](this));ami['on']('blindtransfer',this[_0x0ecc('0x20')][_0x0ecc('0xe')](this));}VoiceAgentReport['prototype'][_0x0ecc('0x21')]=function(_0x158bbe,_0x30f6be,_0x29dae3){io['to'](_0x158bbe)['emit'](_0x30f6be,_0x29dae3);};VoiceAgentReport['prototype'][_0x0ecc('0x22')]=function(_0x475fee){return _0x475fee!==null&&!_['isUndefined'](_0x475fee);};VoiceAgentReport[_0x0ecc('0x23')]['syncAgentCalled']=function(_0x44f8c5){try{if(this[_0x0ecc('0x22')](_0x44f8c5)){logger['info'](_0x0ecc('0x24'),_0x44f8c5[_0x0ecc('0x25')],_0x44f8c5[_0x0ecc('0x26')],_0x44f8c5['destuniqueid']);logger[_0x0ecc('0x27')](_0x0ecc('0x28'),_0x44f8c5[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x44f8c5,{'showHidden':![],'depth':null}));if(_[_0x0ecc('0x2a')](this[_0x0ecc('0x2b')][_0x44f8c5['uniqueid']])){this[_0x0ecc('0x2b')][_0x44f8c5[_0x0ecc('0x25')]]={};}var _0x4e93f7=this['agents'][_0x44f8c5[_0x0ecc('0x2c')]];var _0x197772=this[_0x0ecc('0x2b')][_0x44f8c5['uniqueid']][_0x44f8c5[_0x0ecc('0x2d')]];var _0x1743cf=this[_0x0ecc('0xb')][_0x44f8c5[_0x0ecc('0x2e')]];var _0x5cdbaa=this[_0x0ecc('0x2f')][_0x44f8c5['uniqueid']];if(_[_0x0ecc('0x2a')](_0x197772)){_0x197772={'agentcalledAt':moment()[_0x0ecc('0x30')](_0x0ecc('0x31')),'lastevent':_0x0ecc('0x32'),'mandatoryDisposition':_0x1743cf&&_0x1743cf['mandatoryDisposition']?_0x1743cf['mandatoryDisposition']:![],'type':_0x1743cf&&_0x1743cf[_0x0ecc('0x33')]?_0x1743cf[_0x0ecc('0x33')]:_0x0ecc('0x34'),'variables':_0x5cdbaa,'motionChannel':_0x0ecc('0x35')};}Object[_0x0ecc('0x36')](_0x197772,_[_0x0ecc('0x37')](_0x44f8c5,[_0x0ecc('0x38'),_0x0ecc('0x39')]));this[_0x0ecc('0x2b')][_0x44f8c5[_0x0ecc('0x25')]][_0x44f8c5[_0x0ecc('0x2d')]]=_0x197772;logger[_0x0ecc('0x27')](_0x0ecc('0x3a'),_0x44f8c5['uniqueid'],util['inspect'](_0x197772,{'showHidden':![],'depth':null}));ami[_0x0ecc('0x21')]('custom:agentcalled',_0x197772);var _0x5d4c2e={'id':_0x4e93f7['id'],'calleridnum':_0x197772[_0x0ecc('0x3b')],'queue':_0x197772[_0x0ecc('0x2e')],'variables':_0x197772[_0x0ecc('0x2f')],'uniqueid':_0x44f8c5[_0x0ecc('0x25')]};logger[_0x0ecc('0x27')](_0x0ecc('0x3c'),_0x44f8c5[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x5d4c2e,{'showHidden':![],'depth':null}));this[_0x0ecc('0x21')](util['format'](_0x0ecc('0x3d'),_0x44f8c5[_0x0ecc('0x26')]),_0x0ecc('0x3e'),_0x5d4c2e);}}catch(_0x44fe81){logger['error'](_0x0ecc('0x3f'),_0x44f8c5[_0x0ecc('0x25')],util['inspect'](_0x44fe81,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0ecc('0x23')][_0x0ecc('0x10')]=function(_0x41c2d8){try{if(this['isNotNull'](_0x41c2d8)){if(this['channels'][_0x41c2d8[_0x0ecc('0x25')]]){for(var _0x2f262a in this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]]){if(this[_0x0ecc('0x2b')][_0x41c2d8['uniqueid']][_0x0ecc('0x40')](_0x2f262a)){if(_0x41c2d8[_0x0ecc('0x2d')]===_0x2f262a){logger[_0x0ecc('0x41')](_0x0ecc('0x42'),_0x41c2d8[_0x0ecc('0x25')],_0x41c2d8['membername'],_0x41c2d8[_0x0ecc('0x2d')]);this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x43')]=moment()[_0x0ecc('0x30')](_0x0ecc('0x31'));this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a]['connectedlinename']=_0x41c2d8['connectedlinename'];this[_0x0ecc('0x2b')][_0x41c2d8['uniqueid']][_0x2f262a][_0x0ecc('0x44')]=_0x41c2d8[_0x0ecc('0x44')];this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x45')]=_0x41c2d8[_0x0ecc('0x45')];this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x46')]=_0x41c2d8['destchannelstatedesc'];this['channels'][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x47')]=_0x41c2d8[_0x0ecc('0x47')];this[_0x0ecc('0x2b')][_0x41c2d8['uniqueid']][_0x2f262a][_0x0ecc('0x48')]=_0x0ecc('0x49');if(this[_0x0ecc('0xa')][this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x25')]]){var _0x5d07e4=this[_0x0ecc('0xa')][this['channels'][_0x41c2d8['uniqueid']][_0x2f262a]['uniqueid']]['routealias'];this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x4a')]=_0x5d07e4;_0x41c2d8['routealias']=_0x5d07e4;}_[_0x0ecc('0x4b')](this[_0x0ecc('0xc')][_0x41c2d8[_0x0ecc('0x2c')]],_['pick'](_0x41c2d8,[_0x0ecc('0x2e'),_0x0ecc('0x4c'),_0x0ecc('0x4a')]));var _0xffaf85=this['agents'][_0x41c2d8[_0x0ecc('0x2c')]];var _0x4edf2e={'id':_0xffaf85['id'],'name':_0xffaf85['name'],'agentconnected':!![],'destaccountcode':_0xffaf85[_0x0ecc('0x4d')],'destconnectedlinenum':this['channels'][_0x41c2d8[_0x0ecc('0x25')]][_0x41c2d8[_0x0ecc('0x2d')]][_0x0ecc('0x4e')],'queue':this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x41c2d8['destuniqueid']][_0x0ecc('0x2e')],'routealias':this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x41c2d8['destuniqueid']]['routealias'],'uniqueid':this['channels'][_0x41c2d8[_0x0ecc('0x25')]][_0x41c2d8[_0x0ecc('0x2d')]][_0x0ecc('0x25')]};ami[_0x0ecc('0x21')]('custom:agentconnect',this['channels'][_0x41c2d8[_0x0ecc('0x25')]][_0x41c2d8[_0x0ecc('0x2d')]]);this[_0x0ecc('0x21')](util[_0x0ecc('0x30')]('user:%s',_0x41c2d8[_0x0ecc('0x26')]),'user:agentconnect',_0x4edf2e);}else if(!this['channels'][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x11')]&&!this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x15')]){logger[_0x0ecc('0x41')](_0x0ecc('0x4f'),_0x41c2d8[_0x0ecc('0x25')],this['channels'][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x26')],_0x2f262a);this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a]['agentringnoanswer']=!![];this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x50')]=moment()[_0x0ecc('0x30')](_0x0ecc('0x31'));this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x51')]=_0x41c2d8[_0x0ecc('0x2d')];this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x52')]=_0x41c2d8[_0x0ecc('0x26')];this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x48')]='answered_elsewhere';this[_0x0ecc('0x2b')][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a][_0x0ecc('0x53')]=_0x0ecc('0x54');logger['debug'](_0x0ecc('0x55'),_0x41c2d8[_0x0ecc('0x25')],util[_0x0ecc('0x29')](this[_0x0ecc('0x2b')][_0x41c2d8['uniqueid']][_0x2f262a],{'showHidden':![],'depth':null}));ami[_0x0ecc('0x21')](_0x0ecc('0x56'),this['channels'][_0x41c2d8[_0x0ecc('0x25')]][_0x2f262a]);}else{logger[_0x0ecc('0x27')](_0x0ecc('0x57'),_0x41c2d8['uniqueid']);}}}}}}catch(_0x4c3eaa){logger[_0x0ecc('0x58')]('[%s][voiceAgentReport][agentconnect]',_0x41c2d8['uniqueid'],util[_0x0ecc('0x29')](_0x4c3eaa,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0ecc('0x23')]['syncAgentRingNoAnswer']=function(_0x2e2d81){try{if(this[_0x0ecc('0x22')](_0x2e2d81)){logger[_0x0ecc('0x27')](_0x0ecc('0x59'),_0x2e2d81[_0x0ecc('0x25')],util['inspect'](_0x2e2d81,{'showHidden':![],'depth':null}));if(this[_0x0ecc('0x2b')][_0x2e2d81[_0x0ecc('0x25')]]&&this[_0x0ecc('0x2b')][_0x2e2d81['uniqueid']][_0x2e2d81[_0x0ecc('0x2d')]]){logger[_0x0ecc('0x41')](_0x0ecc('0x5a'),_0x2e2d81[_0x0ecc('0x25')],_0x2e2d81[_0x0ecc('0x26')],_0x2e2d81[_0x0ecc('0x2d')]);var _0x16bdd4=this[_0x0ecc('0xc')][_0x2e2d81[_0x0ecc('0x2c')]];var _0x42948d=this['channels'][_0x2e2d81[_0x0ecc('0x25')]][_0x2e2d81[_0x0ecc('0x2d')]];_0x42948d[_0x0ecc('0x11')]=!![];_0x42948d[_0x0ecc('0x50')]=moment()['format'](_0x0ecc('0x31'));_0x42948d[_0x0ecc('0x48')]=_0x0ecc('0x5b');_0x42948d['reason']='rejected';var _0x3dd063={'id':_0x16bdd4['id'],'name':_0x16bdd4[_0x0ecc('0x5c')],'queue':_0x42948d[_0x0ecc('0x2e')],'uniqueid':_0x42948d[_0x0ecc('0x25')]};logger[_0x0ecc('0x27')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x2e2d81[_0x0ecc('0x25')],util['inspect'](_0x3dd063,{'showHidden':![],'depth':null}));this['emit'](util[_0x0ecc('0x30')](_0x0ecc('0x3d'),_0x16bdd4[_0x0ecc('0x5c')]),'user:agentringnoanswer',_0x3dd063);ami[_0x0ecc('0x21')](_0x0ecc('0x5d'),_0x42948d);this[_0x0ecc('0x2b')][_0x2e2d81[_0x0ecc('0x25')]][_0x2e2d81[_0x0ecc('0x2d')]]=Object[_0x0ecc('0x36')]({},_0x42948d);}}}catch(_0x5690d2){logger[_0x0ecc('0x58')](_0x0ecc('0x5e'),_0x2e2d81[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x5690d2,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0ecc('0x23')][_0x0ecc('0x14')]=function(_0x463730){try{if(this[_0x0ecc('0x22')](_0x463730)){logger['debug'](_0x0ecc('0x5f'),_0x463730[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x463730,{'showHidden':![],'depth':null}));if(this[_0x0ecc('0x2b')][_0x463730['uniqueid']]){for(var _0x43125f in this[_0x0ecc('0x2b')][_0x463730[_0x0ecc('0x25')]]){if(this[_0x0ecc('0x2b')][_0x463730['uniqueid']]['hasOwnProperty'](_0x43125f)&&!this[_0x0ecc('0x2b')][_0x463730[_0x0ecc('0x25')]][_0x43125f][_0x0ecc('0x11')]&&!this[_0x0ecc('0x2b')][_0x463730[_0x0ecc('0x25')]][_0x43125f]['agentcomplete']){logger['info']('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x463730[_0x0ecc('0x25')],this[_0x0ecc('0x2b')][_0x463730[_0x0ecc('0x25')]][_0x43125f][_0x0ecc('0x26')],_0x43125f);this[_0x0ecc('0x2b')][_0x463730[_0x0ecc('0x25')]][_0x43125f][_0x0ecc('0x11')]=!![];this[_0x0ecc('0x2b')][_0x463730[_0x0ecc('0x25')]][_0x43125f][_0x0ecc('0x50')]=moment()[_0x0ecc('0x30')](_0x0ecc('0x31'));this[_0x0ecc('0x2b')][_0x463730[_0x0ecc('0x25')]][_0x43125f][_0x0ecc('0x48')]='abandoned';this[_0x0ecc('0x2b')][_0x463730[_0x0ecc('0x25')]][_0x43125f][_0x0ecc('0x53')]=_0x0ecc('0x60');logger[_0x0ecc('0x27')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x463730[_0x0ecc('0x25')],util[_0x0ecc('0x29')](this[_0x0ecc('0x2b')][_0x463730['uniqueid']][_0x43125f],{'showHidden':![],'depth':null}));ami['emit'](_0x0ecc('0x61'),this[_0x0ecc('0x2b')][_0x463730['uniqueid']][_0x43125f]);}}}}}catch(_0x5ae01d){logger[_0x0ecc('0x58')](_0x0ecc('0x62'),_0x463730['uniqueid'],util['inspect'](_0x5ae01d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0ecc('0x23')][_0x0ecc('0x16')]=function(_0x470b7e){try{if(this[_0x0ecc('0x22')](_0x470b7e)){logger[_0x0ecc('0x27')](_0x0ecc('0x63'),_0x470b7e[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x470b7e,{'showHidden':![],'depth':null}));if(this[_0x0ecc('0x2b')][_0x470b7e[_0x0ecc('0x25')]]){for(var _0x213385 in this['channels'][_0x470b7e['uniqueid']]){if(this[_0x0ecc('0x2b')][_0x470b7e[_0x0ecc('0x25')]][_0x0ecc('0x40')](_0x213385)){if(this[_0x0ecc('0x2b')][_0x470b7e[_0x0ecc('0x25')]][_0x213385][_0x0ecc('0x43')]&&!this['channels'][_0x470b7e['uniqueid']][_0x213385][_0x0ecc('0x15')]){logger['info']('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x470b7e[_0x0ecc('0x25')],this[_0x0ecc('0x2b')][_0x470b7e[_0x0ecc('0x25')]][_0x213385][_0x0ecc('0x26')],_0x213385);this[_0x0ecc('0x2b')][_0x470b7e[_0x0ecc('0x25')]][_0x213385]['agentcomplete']=!![];this[_0x0ecc('0x2b')][_0x470b7e['uniqueid']][_0x213385][_0x0ecc('0x64')]=moment()[_0x0ecc('0x30')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x0ecc('0x2b')][_0x470b7e['uniqueid']][_0x213385][_0x0ecc('0x48')]=_0x0ecc('0x65');this['channels'][_0x470b7e['uniqueid']][_0x213385][_0x0ecc('0x53')]=_0x470b7e['reason']==_0x0ecc('0x66')?'agent':_0x470b7e[_0x0ecc('0x53')];this[_0x0ecc('0x2b')][_0x470b7e[_0x0ecc('0x25')]][_0x213385][_0x0ecc('0x67')]=_0x470b7e[_0x0ecc('0x67')];if(this[_0x0ecc('0xb')][_0x470b7e[_0x0ecc('0x2e')]]&&this[_0x0ecc('0xb')][_0x470b7e[_0x0ecc('0x2e')]][_0x0ecc('0x68')]){this[_0x0ecc('0x2b')][_0x470b7e[_0x0ecc('0x25')]][_0x213385]['acwtime']=this[_0x0ecc('0xb')][_0x470b7e['queue']][_0x0ecc('0x69')];this[_0x0ecc('0x2b')][_0x470b7e[_0x0ecc('0x25')]][_0x213385][_0x0ecc('0x6a')]=!![];}this[_0x0ecc('0xc')][_0x470b7e[_0x0ecc('0x2c')]]=_['omit'](this[_0x0ecc('0xc')][_0x470b7e[_0x0ecc('0x2c')]],[_0x0ecc('0x2e'),_0x0ecc('0x4c')]);logger[_0x0ecc('0x27')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x470b7e[_0x0ecc('0x25')],util[_0x0ecc('0x29')](this[_0x0ecc('0x2b')][_0x470b7e['uniqueid']][_0x213385],{'showHidden':![],'depth':null}));ami[_0x0ecc('0x21')](_0x0ecc('0x6b'),this['channels'][_0x470b7e[_0x0ecc('0x25')]][_0x213385]);logger['debug'](_0x0ecc('0x6c'),_0x470b7e[_0x0ecc('0x25')],util[_0x0ecc('0x29')]({'id':this['agents'][_0x470b7e['interface']]['id'],'destaccountcode':_0x470b7e[_0x0ecc('0x6d')]},{'showHidden':![],'depth':null}));this[_0x0ecc('0x21')](util[_0x0ecc('0x30')](_0x0ecc('0x3d'),_0x470b7e['membername']),'user:agentcomplete',{'id':this['agents'][_0x470b7e[_0x0ecc('0x2c')]]['id'],'destaccountcode':Number(_0x470b7e[_0x0ecc('0x6d')])});}}}}}}catch(_0x568a28){logger[_0x0ecc('0x58')](_0x0ecc('0x6e'),_0x470b7e['uniqueid'],util[_0x0ecc('0x29')](_0x568a28,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0ecc('0x23')][_0x0ecc('0x18')]=function(_0x3976e4){try{if(this[_0x0ecc('0x22')](_0x3976e4)){logger[_0x0ecc('0x27')]('[%s][voiceAgentReport][varset]\x20event:',_0x3976e4[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x3976e4,{'showHidden':![],'depth':null}));this[_0x0ecc('0x6f')](_0x3976e4['uniqueid'],_[_0x0ecc('0x70')](_0x3976e4[_0x0ecc('0x71')])[0x0],_0x3976e4['value']);if(this[_0x0ecc('0x2b')][_0x3976e4['uniqueid']]){for(var _0x3d4300 in this[_0x0ecc('0x2b')][_0x3976e4[_0x0ecc('0x25')]]){if(this[_0x0ecc('0x2b')][_0x3976e4['uniqueid']][_0x0ecc('0x40')](_0x3d4300)){logger['info'](_0x0ecc('0x72'),_0x3976e4[_0x0ecc('0x25')],_0x3d4300,_[_0x0ecc('0x70')](_0x3976e4[_0x0ecc('0x71')])[0x0],_0x3976e4[_0x0ecc('0x73')]);if(_[_0x0ecc('0x2a')](this['channels'][_0x3976e4['uniqueid']][_0x3d4300][_0x0ecc('0x2f')])){this[_0x0ecc('0x2b')][_0x3976e4[_0x0ecc('0x25')]][_0x3d4300][_0x0ecc('0x2f')]={};}this[_0x0ecc('0x2b')][_0x3976e4[_0x0ecc('0x25')]][_0x3d4300]['variables']=this[_0x0ecc('0x2f')][_0x3976e4[_0x0ecc('0x25')]];}}}}}catch(_0xf7d19c){logger['error'](_0x0ecc('0x74'),_0x3976e4['uniqueid'],util[_0x0ecc('0x29')](_0xf7d19c,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0ecc('0x6f')]=function(_0x571c75,_0x5dd2be,_0x606afd){var _0x420fb1=[_0x0ecc('0x75'),'rtpaudioqosbridged','rtpaudioqosjitter',_0x0ecc('0x76'),_0x0ecc('0x77'),_0x0ecc('0x78'),_0x0ecc('0x79'),_0x0ecc('0x7a'),_0x0ecc('0x7b'),'sipuri',_0x0ecc('0x7c'),_0x0ecc('0x7d'),'membercalls',_0x0ecc('0x7e'),'memberinterface',_0x0ecc('0x7f'),_0x0ecc('0x26'),_0x0ecc('0x80'),_0x0ecc('0x81')];if(!_[_0x0ecc('0x82')](_0x5dd2be)&&!_[_0x0ecc('0x83')](_0x420fb1,_0x5dd2be)){if(_[_0x0ecc('0x2a')](this['variables'][_0x571c75])){this[_0x0ecc('0x2f')][_0x571c75]={};}this[_0x0ecc('0x2f')][_0x571c75][_0x5dd2be]=_0x606afd;}};VoiceAgentReport[_0x0ecc('0x23')][_0x0ecc('0x1a')]=function(_0x3391ac){try{if(this['isNotNull'](_0x3391ac)){logger['debug'](_0x0ecc('0x84'),_0x3391ac[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x3391ac,{'showHidden':![],'depth':null}));if(this[_0x0ecc('0x2b')][_0x3391ac[_0x0ecc('0x25')]]){for(var _0x5de81e in this['channels'][_0x3391ac[_0x0ecc('0x25')]]){if(this['channels'][_0x3391ac[_0x0ecc('0x25')]][_0x0ecc('0x40')](_0x5de81e)){if(this[_0x0ecc('0x2b')][_0x3391ac['uniqueid']][_0x5de81e][_0x0ecc('0x53')]==_0x0ecc('0x66')&&this['channels'][_0x3391ac[_0x0ecc('0x25')]][_0x5de81e][_0x0ecc('0x15')]){logger[_0x0ecc('0x41')](_0x0ecc('0x85'),_0x3391ac['uniqueid'],_0x5de81e);this[_0x0ecc('0x2b')][_0x3391ac[_0x0ecc('0x25')]][_0x5de81e][_0x0ecc('0x64')]=moment()[_0x0ecc('0x30')](_0x0ecc('0x31'));}}}logger[_0x0ecc('0x27')](_0x0ecc('0x86'),_0x3391ac[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_[_0x0ecc('0x87')](this['channels'][_0x3391ac['uniqueid']]),{'showHidden':![],'depth':null}));ami['emit'](_0x0ecc('0x88'),_[_0x0ecc('0x87')](this['channels'][_0x3391ac[_0x0ecc('0x25')]]));delete this['channels'][_0x3391ac[_0x0ecc('0x25')]];}if(this[_0x0ecc('0x2f')][_0x3391ac[_0x0ecc('0x25')]]){delete this['variables'][_0x3391ac[_0x0ecc('0x25')]];}}}catch(_0x572aef){logger['error'](_0x0ecc('0x89'),_0x3391ac['uniqueid'],util[_0x0ecc('0x29')](_0x572aef,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0ecc('0x23')][_0x0ecc('0x1f')]=function(_0x32ae26){try{if(this[_0x0ecc('0x22')](_0x32ae26)){logger[_0x0ecc('0x27')](_0x0ecc('0x8a'),_0x32ae26[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x32ae26,{'showHidden':![],'depth':null}));if(this['channels'][_0x32ae26[_0x0ecc('0x8b')]]){for(var _0x373ff0 in this['channels'][_0x32ae26[_0x0ecc('0x8b')]]){if(this['channels'][_0x32ae26[_0x0ecc('0x8b')]][_0x0ecc('0x40')](_0x373ff0)){if(_0x32ae26[_0x0ecc('0x8c')]===_0x373ff0){logger['info'](_0x0ecc('0x8d'),_0x32ae26['uniqueid'],this[_0x0ecc('0x2b')][_0x32ae26[_0x0ecc('0x8b')]][_0x373ff0][_0x0ecc('0x26')],_0x373ff0);var _0x3dd834=moment();this['channels'][_0x32ae26[_0x0ecc('0x8b')]][_0x373ff0][_0x0ecc('0x15')]=!![];this[_0x0ecc('0x2b')][_0x32ae26[_0x0ecc('0x8b')]][_0x373ff0][_0x0ecc('0x64')]=moment()[_0x0ecc('0x30')](_0x0ecc('0x31'));this['channels'][_0x32ae26['transfereeuniqueid']][_0x373ff0]['lastevent']='complete';this[_0x0ecc('0x2b')][_0x32ae26[_0x0ecc('0x8b')]][_0x373ff0][_0x0ecc('0x53')]='transfer';this[_0x0ecc('0x2b')][_0x32ae26[_0x0ecc('0x8b')]][_0x373ff0][_0x0ecc('0x67')]=_0x3dd834[_0x0ecc('0x8e')](this['channels'][_0x32ae26[_0x0ecc('0x8b')]][_0x373ff0][_0x0ecc('0x43')],'seconds');}}}}if(this[_0x0ecc('0x2b')][_0x32ae26[_0x0ecc('0x8f')]]){var _0x19e8da=this[_0x0ecc('0x2b')][_0x32ae26[_0x0ecc('0x8f')]];this['channels'][_0x32ae26[_0x0ecc('0x8f')]]=this['channels'][_0x32ae26[_0x0ecc('0x8b')]];this[_0x0ecc('0x2b')][_0x32ae26[_0x0ecc('0x8b')]]=_0x19e8da;}}}catch(_0x35e9f6){logger['error'](_0x0ecc('0x90'),_0x32ae26['uniqueid'],util[_0x0ecc('0x29')](_0x35e9f6,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0ecc('0x23')]['syncBlindTransfer']=function(_0x5cc5b3){try{if(this[_0x0ecc('0x22')](_0x5cc5b3)){logger[_0x0ecc('0x27')](_0x0ecc('0x91'),_0x5cc5b3[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x5cc5b3,{'showHidden':![],'depth':null}));if(this[_0x0ecc('0x2b')][_0x5cc5b3[_0x0ecc('0x8b')]]){for(var _0x5c99b1 in this[_0x0ecc('0x2b')][_0x5cc5b3[_0x0ecc('0x8b')]]){if(this[_0x0ecc('0x2b')][_0x5cc5b3['transfereeuniqueid']][_0x0ecc('0x40')](_0x5c99b1)){if(_0x5cc5b3[_0x0ecc('0x92')]===_0x5c99b1){logger[_0x0ecc('0x41')](_0x0ecc('0x93'),_0x5cc5b3[_0x0ecc('0x25')],this[_0x0ecc('0x2b')][_0x5cc5b3['transfereeuniqueid']][_0x5c99b1][_0x0ecc('0x26')],_0x5c99b1);var _0x550a69=moment();this[_0x0ecc('0x2b')][_0x5cc5b3[_0x0ecc('0x8b')]][_0x5c99b1]['agentcomplete']=!![];this[_0x0ecc('0x2b')][_0x5cc5b3[_0x0ecc('0x8b')]][_0x5c99b1][_0x0ecc('0x64')]=_0x550a69;this[_0x0ecc('0x2b')][_0x5cc5b3[_0x0ecc('0x8b')]][_0x5c99b1][_0x0ecc('0x48')]=_0x0ecc('0x65');this[_0x0ecc('0x2b')][_0x5cc5b3['transfereeuniqueid']][_0x5c99b1][_0x0ecc('0x53')]=_0x0ecc('0x66');this['channels'][_0x5cc5b3[_0x0ecc('0x8b')]][_0x5c99b1][_0x0ecc('0x67')]=_0x550a69[_0x0ecc('0x8e')](this[_0x0ecc('0x2b')][_0x5cc5b3[_0x0ecc('0x8b')]][_0x5c99b1][_0x0ecc('0x43')],_0x0ecc('0x94'));}}}}}}catch(_0x34e458){logger['error'](_0x0ecc('0x95'),_0x5cc5b3[_0x0ecc('0x25')],util['inspect'](_0x34e458,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0ecc('0x1b')]=function(_0x44e4b5){var _0x21d96f='';try{if(this[_0x0ecc('0x22')](_0x44e4b5)){logger[_0x0ecc('0x27')](_0x0ecc('0x96'),_0x44e4b5[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x44e4b5,{'showHidden':![],'depth':null}));if(_0x44e4b5['channel']){_0x21d96f=_0x44e4b5['channel'][_0x0ecc('0x97')](0x0,_0x44e4b5[_0x0ecc('0x98')][_0x0ecc('0x99')]('-'));if(this[_0x0ecc('0xc')][_0x21d96f]){logger[_0x0ecc('0x41')](_0x0ecc('0x9a'),_0x44e4b5[_0x0ecc('0x25')],_0x21d96f);this[_0x0ecc('0xc')][_0x21d96f]['onhold']=!![];}}}}catch(_0x12e885){logger[_0x0ecc('0x58')](_0x0ecc('0x9b'),_0x44e4b5[_0x0ecc('0x25')],util['inspect'](_0x12e885,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0ecc('0x1d')]=function(_0x367ac0){var _0xa26c50='';try{if(this[_0x0ecc('0x22')](_0x367ac0)){logger['debug']('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x367ac0[_0x0ecc('0x25')],util[_0x0ecc('0x29')](_0x367ac0,{'showHidden':![],'depth':null}));if(_0x367ac0[_0x0ecc('0x98')]){_0xa26c50=_0x367ac0['channel'][_0x0ecc('0x97')](0x0,_0x367ac0['channel'][_0x0ecc('0x99')]('-'));if(this[_0x0ecc('0xc')][_0xa26c50]){logger['info'](_0x0ecc('0x9c'),_0x367ac0['uniqueid'],_0xa26c50);this['agents'][_0xa26c50][_0x0ecc('0x9d')]=![];}}}}catch(_0x5ed9f8){logger[_0x0ecc('0x58')](_0x0ecc('0x9e'),_0x367ac0['uniqueid'],util['inspect'](_0x5ed9f8,{'showHidden':![],'depth':null}));}};module[_0x0ecc('0x9f')]=VoiceAgentReport;
\ No newline at end of file
+var _0xade2=['sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','../../../config/environment','ami','redis','defaults','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','agentconnect','syncAgentConnect','bind','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','syncBlindTransfer','prototype','emit','isUndefined','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','debug','[%s][voiceAgentReport][agentcalled]\x20event:','uniqueid','interface','destuniqueid','queue','format','YYYY-MM-DD\x20HH:mm:ss','mandatoryDisposition','type','inbound','voice','assign','omit','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','inspect','custom:agentcalled','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','merge','destconnectedlinenum','accountcode','exten','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqosrttbridged'];(function(_0x14a1a4,_0x599092){var _0x3f6201=function(_0x4ca5c5){while(--_0x4ca5c5){_0x14a1a4['push'](_0x14a1a4['shift']());}};_0x3f6201(++_0x599092);}(_0xade2,0x1e4));var _0x2ade=function(_0x2f5571,_0x5283fc){_0x2f5571=_0x2f5571-0x0;var _0x3eac44=_0xade2[_0x2f5571];return _0x3eac44;};'use strict';var _=require(_0x2ade('0x0'));var moment=require(_0x2ade('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x2ade('0x2'));var logger=require('../../../config/logger')(_0x2ade('0x3'));var ami=require('../ami');config[_0x2ade('0x4')]=_[_0x2ade('0x5')](config[_0x2ade('0x4')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2ade('0x4')]));function VoiceAgentReport(_0x4ff002){this[_0x2ade('0x6')]={};this[_0x2ade('0x7')]=_0x4ff002[_0x2ade('0x6')];this[_0x2ade('0x8')]=_0x4ff002['voiceQueues'];this[_0x2ade('0x9')]=_0x4ff002['agents'];this[_0x2ade('0xa')]={};ami['on'](_0x2ade('0xb'),this[_0x2ade('0xc')]['bind'](this));ami['on'](_0x2ade('0xd'),this[_0x2ade('0xe')][_0x2ade('0xf')](this));ami['on'](_0x2ade('0x10'),this[_0x2ade('0x11')][_0x2ade('0xf')](this));ami['on']('queuecallerabandon',this[_0x2ade('0x12')]['bind'](this));ami['on'](_0x2ade('0x13'),this['syncAgentComplete']['bind'](this));ami['on'](_0x2ade('0x14'),this[_0x2ade('0x15')][_0x2ade('0xf')](this));ami['on']('hangup',this[_0x2ade('0x16')][_0x2ade('0xf')](this));ami['on'](_0x2ade('0x17'),this[_0x2ade('0x18')][_0x2ade('0xf')](this));ami['on'](_0x2ade('0x19'),this[_0x2ade('0x1a')][_0x2ade('0xf')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0x2ade('0x1b'),this[_0x2ade('0x1c')][_0x2ade('0xf')](this));}VoiceAgentReport[_0x2ade('0x1d')][_0x2ade('0x1e')]=function(_0x40a11b,_0x4d0ba8,_0x25ca81){io['to'](_0x40a11b)[_0x2ade('0x1e')](_0x4d0ba8,_0x25ca81);};VoiceAgentReport[_0x2ade('0x1d')]['isNotNull']=function(_0x169eb){return _0x169eb!==null&&!_[_0x2ade('0x1f')](_0x169eb);};VoiceAgentReport[_0x2ade('0x1d')][_0x2ade('0xc')]=function(_0x1cbf1b){try{if(this[_0x2ade('0x20')](_0x1cbf1b)){logger[_0x2ade('0x21')](_0x2ade('0x22'),_0x1cbf1b['uniqueid'],_0x1cbf1b[_0x2ade('0x23')],_0x1cbf1b['destuniqueid']);logger[_0x2ade('0x24')](_0x2ade('0x25'),_0x1cbf1b[_0x2ade('0x26')],util['inspect'](_0x1cbf1b,{'showHidden':![],'depth':null}));if(_[_0x2ade('0x1f')](this[_0x2ade('0x6')][_0x1cbf1b[_0x2ade('0x26')]])){this['channels'][_0x1cbf1b[_0x2ade('0x26')]]={};}var _0x474da6=this[_0x2ade('0x9')][_0x1cbf1b[_0x2ade('0x27')]];var _0x50da92=this[_0x2ade('0x6')][_0x1cbf1b['uniqueid']][_0x1cbf1b[_0x2ade('0x28')]];var _0x4f5f57=this[_0x2ade('0x8')][_0x1cbf1b[_0x2ade('0x29')]];var _0x269139=this['variables'][_0x1cbf1b['uniqueid']];if(_[_0x2ade('0x1f')](_0x50da92)){_0x50da92={'agentcalledAt':moment()[_0x2ade('0x2a')](_0x2ade('0x2b')),'lastevent':'called','mandatoryDisposition':_0x4f5f57&&_0x4f5f57[_0x2ade('0x2c')]?_0x4f5f57[_0x2ade('0x2c')]:![],'type':_0x4f5f57&&_0x4f5f57[_0x2ade('0x2d')]?_0x4f5f57[_0x2ade('0x2d')]:_0x2ade('0x2e'),'variables':_0x269139,'motionChannel':_0x2ade('0x2f')};}Object[_0x2ade('0x30')](_0x50da92,_[_0x2ade('0x31')](_0x1cbf1b,[_0x2ade('0x32'),'privilege']));this['channels'][_0x1cbf1b['uniqueid']][_0x1cbf1b['destuniqueid']]=_0x50da92;logger[_0x2ade('0x24')](_0x2ade('0x33'),_0x1cbf1b[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x50da92,{'showHidden':![],'depth':null}));ami['emit'](_0x2ade('0x35'),_0x50da92);var _0x1020f5={'id':_0x474da6['id'],'calleridnum':_0x50da92[_0x2ade('0x36')],'queue':_0x50da92[_0x2ade('0x29')],'variables':_0x50da92[_0x2ade('0xa')],'uniqueid':_0x1cbf1b[_0x2ade('0x26')]};logger[_0x2ade('0x24')](_0x2ade('0x37'),_0x1cbf1b[_0x2ade('0x26')],util['inspect'](_0x1020f5,{'showHidden':![],'depth':null}));this[_0x2ade('0x1e')](util[_0x2ade('0x2a')](_0x2ade('0x38'),_0x1cbf1b[_0x2ade('0x23')]),_0x2ade('0x39'),_0x1020f5);}}catch(_0x4d3794){logger[_0x2ade('0x3a')]('[%s][voiceAgentReport][agentcalled]',_0x1cbf1b[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x4d3794,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2ade('0xe')]=function(_0xcb73eb){try{if(this[_0x2ade('0x20')](_0xcb73eb)){if(this[_0x2ade('0x6')][_0xcb73eb['uniqueid']]){for(var _0x574f9d in this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]]){if(this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x2ade('0x3b')](_0x574f9d)){if(_0xcb73eb[_0x2ade('0x28')]===_0x574f9d){logger['info'](_0x2ade('0x3c'),_0xcb73eb[_0x2ade('0x26')],_0xcb73eb['membername'],_0xcb73eb[_0x2ade('0x28')]);this['channels'][_0xcb73eb['uniqueid']][_0x574f9d][_0x2ade('0x3d')]=moment()[_0x2ade('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x3e')]=_0xcb73eb[_0x2ade('0x3e')];this[_0x2ade('0x6')][_0xcb73eb['uniqueid']][_0x574f9d]['connectedlinenum']=_0xcb73eb[_0x2ade('0x3f')];this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x40')]=_0xcb73eb[_0x2ade('0x40')];this['channels'][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x41')]=_0xcb73eb[_0x2ade('0x41')];this['channels'][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d]['holdtime']=_0xcb73eb[_0x2ade('0x42')];this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x43')]=_0x2ade('0x44');if(this[_0x2ade('0x7')][this['channels'][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d]['uniqueid']]){var _0xc11d8c=this['voiceChannels'][this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x26')]][_0x2ade('0x45')];this['channels'][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x45')]=_0xc11d8c;_0xcb73eb[_0x2ade('0x45')]=_0xc11d8c;}_[_0x2ade('0x46')](this[_0x2ade('0x9')][_0xcb73eb['interface']],_['pick'](_0xcb73eb,['queue',_0x2ade('0x47'),_0x2ade('0x45')]));var _0x4c874a=this[_0x2ade('0x9')][_0xcb73eb[_0x2ade('0x27')]];var _0x1e92c9={'id':_0x4c874a['id'],'name':_0x4c874a['name'],'agentconnected':!![],'destaccountcode':_0x4c874a[_0x2ade('0x48')],'destconnectedlinenum':this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0xcb73eb['destuniqueid']][_0x2ade('0x49')],'queue':this[_0x2ade('0x6')][_0xcb73eb['uniqueid']][_0xcb73eb[_0x2ade('0x28')]][_0x2ade('0x29')],'routealias':this[_0x2ade('0x6')][_0xcb73eb['uniqueid']][_0xcb73eb[_0x2ade('0x28')]]['routealias'],'uniqueid':this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0xcb73eb[_0x2ade('0x28')]]['uniqueid']};ami[_0x2ade('0x1e')]('custom:agentconnect',this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0xcb73eb[_0x2ade('0x28')]]);this[_0x2ade('0x1e')](util[_0x2ade('0x2a')](_0x2ade('0x38'),_0xcb73eb[_0x2ade('0x23')]),_0x2ade('0x4a'),_0x1e92c9);}else if(!this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x10')]&&!this['channels'][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x13')]){logger[_0x2ade('0x21')](_0x2ade('0x4b'),_0xcb73eb['uniqueid'],this['channels'][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x23')],_0x574f9d);this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x10')]=!![];this['channels'][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x4c')]=moment()['format'](_0x2ade('0x2b'));this[_0x2ade('0x6')][_0xcb73eb['uniqueid']][_0x574f9d][_0x2ade('0x4d')]=_0xcb73eb['destuniqueid'];this['channels'][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x4e')]=_0xcb73eb[_0x2ade('0x23')];this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x43')]=_0x2ade('0x4f');this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d][_0x2ade('0x50')]=_0x2ade('0x4f');logger['debug']('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0xcb73eb[_0x2ade('0x26')],util['inspect'](this[_0x2ade('0x6')][_0xcb73eb['uniqueid']][_0x574f9d],{'showHidden':![],'depth':null}));ami[_0x2ade('0x1e')](_0x2ade('0x51'),this[_0x2ade('0x6')][_0xcb73eb[_0x2ade('0x26')]][_0x574f9d]);}else{logger[_0x2ade('0x24')](_0x2ade('0x52'),_0xcb73eb[_0x2ade('0x26')]);}}}}}}catch(_0x3f6b2e){logger[_0x2ade('0x3a')](_0x2ade('0x53'),_0xcb73eb['uniqueid'],util[_0x2ade('0x34')](_0x3f6b2e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2ade('0x1d')][_0x2ade('0x11')]=function(_0x416c92){try{if(this[_0x2ade('0x20')](_0x416c92)){logger[_0x2ade('0x24')](_0x2ade('0x54'),_0x416c92[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x416c92,{'showHidden':![],'depth':null}));if(this[_0x2ade('0x6')][_0x416c92[_0x2ade('0x26')]]&&this[_0x2ade('0x6')][_0x416c92[_0x2ade('0x26')]][_0x416c92['destuniqueid']]){logger['info'](_0x2ade('0x55'),_0x416c92[_0x2ade('0x26')],_0x416c92[_0x2ade('0x23')],_0x416c92[_0x2ade('0x28')]);var _0x3a49fa=this[_0x2ade('0x9')][_0x416c92[_0x2ade('0x27')]];var _0x18d670=this['channels'][_0x416c92[_0x2ade('0x26')]][_0x416c92[_0x2ade('0x28')]];_0x18d670['agentringnoanswer']=!![];_0x18d670[_0x2ade('0x4c')]=moment()[_0x2ade('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');_0x18d670[_0x2ade('0x43')]=_0x2ade('0x56');_0x18d670['reason']='rejected';var _0x37df34={'id':_0x3a49fa['id'],'name':_0x3a49fa['name'],'queue':_0x18d670[_0x2ade('0x29')],'uniqueid':_0x18d670[_0x2ade('0x26')]};logger[_0x2ade('0x24')](_0x2ade('0x57'),_0x416c92['uniqueid'],util[_0x2ade('0x34')](_0x37df34,{'showHidden':![],'depth':null}));this[_0x2ade('0x1e')](util[_0x2ade('0x2a')](_0x2ade('0x38'),_0x3a49fa['name']),_0x2ade('0x58'),_0x37df34);ami[_0x2ade('0x1e')](_0x2ade('0x59'),_0x18d670);this[_0x2ade('0x6')][_0x416c92[_0x2ade('0x26')]][_0x416c92['destuniqueid']]=Object['assign']({},_0x18d670);}}}catch(_0xec079d){logger[_0x2ade('0x3a')]('[%s][voiceAgentReport][agentringnoanswer]',_0x416c92['uniqueid'],util[_0x2ade('0x34')](_0xec079d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2ade('0x1d')]['syncQueueCallerAbandon']=function(_0x41d9f7){try{if(this['isNotNull'](_0x41d9f7)){logger[_0x2ade('0x24')](_0x2ade('0x5a'),_0x41d9f7[_0x2ade('0x26')],util['inspect'](_0x41d9f7,{'showHidden':![],'depth':null}));if(this[_0x2ade('0x6')][_0x41d9f7[_0x2ade('0x26')]]){for(var _0x463589 in this[_0x2ade('0x6')][_0x41d9f7['uniqueid']]){if(this[_0x2ade('0x6')][_0x41d9f7['uniqueid']][_0x2ade('0x3b')](_0x463589)&&!this['channels'][_0x41d9f7[_0x2ade('0x26')]][_0x463589][_0x2ade('0x10')]&&!this[_0x2ade('0x6')][_0x41d9f7[_0x2ade('0x26')]][_0x463589][_0x2ade('0x13')]){logger[_0x2ade('0x21')](_0x2ade('0x5b'),_0x41d9f7['uniqueid'],this[_0x2ade('0x6')][_0x41d9f7['uniqueid']][_0x463589]['membername'],_0x463589);this[_0x2ade('0x6')][_0x41d9f7[_0x2ade('0x26')]][_0x463589][_0x2ade('0x10')]=!![];this[_0x2ade('0x6')][_0x41d9f7[_0x2ade('0x26')]][_0x463589][_0x2ade('0x4c')]=moment()['format'](_0x2ade('0x2b'));this[_0x2ade('0x6')][_0x41d9f7['uniqueid']][_0x463589][_0x2ade('0x43')]=_0x2ade('0x5c');this[_0x2ade('0x6')][_0x41d9f7[_0x2ade('0x26')]][_0x463589]['reason']='abandoned';logger['debug'](_0x2ade('0x5d'),_0x41d9f7[_0x2ade('0x26')],util['inspect'](this[_0x2ade('0x6')][_0x41d9f7['uniqueid']][_0x463589],{'showHidden':![],'depth':null}));ami[_0x2ade('0x1e')](_0x2ade('0x5e'),this[_0x2ade('0x6')][_0x41d9f7[_0x2ade('0x26')]][_0x463589]);}}}}}catch(_0x26ad11){logger[_0x2ade('0x3a')]('[%s][voiceAgentReport][queuecallerabandon]',_0x41d9f7[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x26ad11,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2ade('0x1d')][_0x2ade('0x5f')]=function(_0x5de672){try{if(this['isNotNull'](_0x5de672)){logger[_0x2ade('0x24')](_0x2ade('0x60'),_0x5de672['uniqueid'],util[_0x2ade('0x34')](_0x5de672,{'showHidden':![],'depth':null}));if(this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]]){for(var _0x4e1f5a in this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]]){if(this[_0x2ade('0x6')][_0x5de672['uniqueid']][_0x2ade('0x3b')](_0x4e1f5a)){if(this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]][_0x4e1f5a][_0x2ade('0x3d')]&&!this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]][_0x4e1f5a][_0x2ade('0x13')]){logger[_0x2ade('0x21')](_0x2ade('0x61'),_0x5de672[_0x2ade('0x26')],this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]][_0x4e1f5a]['membername'],_0x4e1f5a);this[_0x2ade('0x6')][_0x5de672['uniqueid']][_0x4e1f5a][_0x2ade('0x13')]=!![];this[_0x2ade('0x6')][_0x5de672['uniqueid']][_0x4e1f5a][_0x2ade('0x62')]=moment()[_0x2ade('0x2a')](_0x2ade('0x2b'));this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]][_0x4e1f5a][_0x2ade('0x43')]=_0x2ade('0x63');this[_0x2ade('0x6')][_0x5de672['uniqueid']][_0x4e1f5a]['reason']=_0x5de672[_0x2ade('0x50')]==_0x2ade('0x64')?_0x2ade('0x65'):_0x5de672[_0x2ade('0x50')];this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]][_0x4e1f5a]['talktime']=_0x5de672[_0x2ade('0x66')];if(this['voiceQueues'][_0x5de672[_0x2ade('0x29')]]&&this[_0x2ade('0x8')][_0x5de672[_0x2ade('0x29')]][_0x2ade('0x67')]){this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]][_0x4e1f5a][_0x2ade('0x68')]=this[_0x2ade('0x8')][_0x5de672['queue']]['acwTimeout'];this[_0x2ade('0x6')][_0x5de672['uniqueid']][_0x4e1f5a][_0x2ade('0x69')]=!![];}this['agents'][_0x5de672['interface']]=_[_0x2ade('0x31')](this[_0x2ade('0x9')][_0x5de672[_0x2ade('0x27')]],['queue',_0x2ade('0x47')]);logger['debug'](_0x2ade('0x6a'),_0x5de672[_0x2ade('0x26')],util[_0x2ade('0x34')](this['channels'][_0x5de672[_0x2ade('0x26')]][_0x4e1f5a],{'showHidden':![],'depth':null}));ami['emit'](_0x2ade('0x6b'),this[_0x2ade('0x6')][_0x5de672[_0x2ade('0x26')]][_0x4e1f5a]);logger[_0x2ade('0x24')](_0x2ade('0x6c'),_0x5de672[_0x2ade('0x26')],util[_0x2ade('0x34')]({'id':this[_0x2ade('0x9')][_0x5de672['interface']]['id'],'destaccountcode':_0x5de672['destaccountcode']},{'showHidden':![],'depth':null}));this['emit'](util[_0x2ade('0x2a')](_0x2ade('0x38'),_0x5de672['membername']),_0x2ade('0x6d'),{'id':this[_0x2ade('0x9')][_0x5de672[_0x2ade('0x27')]]['id'],'destaccountcode':Number(_0x5de672['destaccountcode'])});}}}}}}catch(_0x187b9f){logger[_0x2ade('0x3a')](_0x2ade('0x6e'),_0x5de672[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x187b9f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2ade('0x1d')]['syncVarSet']=function(_0x4d1e8a){try{if(this[_0x2ade('0x20')](_0x4d1e8a)){logger[_0x2ade('0x24')](_0x2ade('0x6f'),_0x4d1e8a['uniqueid'],util[_0x2ade('0x34')](_0x4d1e8a,{'showHidden':![],'depth':null}));this[_0x2ade('0x70')](_0x4d1e8a[_0x2ade('0x26')],_[_0x2ade('0x71')](_0x4d1e8a[_0x2ade('0x72')])[0x0],_0x4d1e8a['value']);if(this[_0x2ade('0x6')][_0x4d1e8a[_0x2ade('0x26')]]){for(var _0x1c1dc4 in this['channels'][_0x4d1e8a[_0x2ade('0x26')]]){if(this['channels'][_0x4d1e8a[_0x2ade('0x26')]][_0x2ade('0x3b')](_0x1c1dc4)){logger[_0x2ade('0x21')]('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x4d1e8a['uniqueid'],_0x1c1dc4,_['keys'](_0x4d1e8a['variable'])[0x0],_0x4d1e8a['value']);if(_[_0x2ade('0x1f')](this[_0x2ade('0x6')][_0x4d1e8a[_0x2ade('0x26')]][_0x1c1dc4][_0x2ade('0xa')])){this[_0x2ade('0x6')][_0x4d1e8a[_0x2ade('0x26')]][_0x1c1dc4][_0x2ade('0xa')]={};}this[_0x2ade('0x6')][_0x4d1e8a['uniqueid']][_0x1c1dc4]['variables']=this['variables'][_0x4d1e8a[_0x2ade('0x26')]];}}}}}catch(_0x2798fc){logger[_0x2ade('0x3a')](_0x2ade('0x73'),_0x4d1e8a[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x2798fc,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2ade('0x1d')][_0x2ade('0x70')]=function(_0x29cf02,_0x1269d5,_0x4cec0f){var _0x1aa5bc=[_0x2ade('0x74'),'rtpaudioqosbridged',_0x2ade('0x75'),'rtpaudioqosjitterbridged',_0x2ade('0x76'),'rtpaudioqoslossbridged','rtpaudioqosrtt',_0x2ade('0x77'),'sipcallid',_0x2ade('0x78'),_0x2ade('0x79'),_0x2ade('0x7a'),_0x2ade('0x7b'),_0x2ade('0x7c'),'memberinterface',_0x2ade('0x7d'),_0x2ade('0x23'),'memberpenalty','memberrealtime'];if(!_[_0x2ade('0x7e')](_0x1269d5)&&!_[_0x2ade('0x7f')](_0x1aa5bc,_0x1269d5)){if(_[_0x2ade('0x1f')](this[_0x2ade('0xa')][_0x29cf02])){this[_0x2ade('0xa')][_0x29cf02]={};}this[_0x2ade('0xa')][_0x29cf02][_0x1269d5]=_0x4cec0f;}};VoiceAgentReport['prototype'][_0x2ade('0x16')]=function(_0x5781ba){try{if(this[_0x2ade('0x20')](_0x5781ba)){logger['debug'](_0x2ade('0x80'),_0x5781ba[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x5781ba,{'showHidden':![],'depth':null}));if(this[_0x2ade('0x6')][_0x5781ba[_0x2ade('0x26')]]){for(var _0x4e4117 in this['channels'][_0x5781ba[_0x2ade('0x26')]]){if(this[_0x2ade('0x6')][_0x5781ba[_0x2ade('0x26')]]['hasOwnProperty'](_0x4e4117)){if(this[_0x2ade('0x6')][_0x5781ba[_0x2ade('0x26')]][_0x4e4117]['reason']=='transfer'&&this[_0x2ade('0x6')][_0x5781ba[_0x2ade('0x26')]][_0x4e4117][_0x2ade('0x13')]){logger[_0x2ade('0x21')](_0x2ade('0x81'),_0x5781ba[_0x2ade('0x26')],_0x4e4117);this[_0x2ade('0x6')][_0x5781ba[_0x2ade('0x26')]][_0x4e4117]['agentcompleteAt']=moment()[_0x2ade('0x2a')](_0x2ade('0x2b'));}}}logger[_0x2ade('0x24')]('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x5781ba[_0x2ade('0x26')],util[_0x2ade('0x34')](_[_0x2ade('0x82')](this[_0x2ade('0x6')][_0x5781ba[_0x2ade('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x2ade('0x1e')](_0x2ade('0x83'),_['values'](this[_0x2ade('0x6')][_0x5781ba['uniqueid']]));delete this[_0x2ade('0x6')][_0x5781ba[_0x2ade('0x26')]];}if(this[_0x2ade('0xa')][_0x5781ba['uniqueid']]){delete this[_0x2ade('0xa')][_0x5781ba[_0x2ade('0x26')]];}}}catch(_0xab32ad){logger[_0x2ade('0x3a')](_0x2ade('0x84'),_0x5781ba['uniqueid'],util['inspect'](_0xab32ad,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2ade('0x85')]=function(_0x5d2d0d){try{if(this[_0x2ade('0x20')](_0x5d2d0d)){logger['debug']('[%s][voiceAgentReport][attendedtransfer]\x20event:',_0x5d2d0d['uniqueid'],util['inspect'](_0x5d2d0d,{'showHidden':![],'depth':null}));if(this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x86')]]){for(var _0x45deec in this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x86')]]){if(this['channels'][_0x5d2d0d[_0x2ade('0x86')]][_0x2ade('0x3b')](_0x45deec)){if(_0x5d2d0d[_0x2ade('0x87')]===_0x45deec){logger[_0x2ade('0x21')](_0x2ade('0x88'),_0x5d2d0d['uniqueid'],this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x86')]][_0x45deec]['membername'],_0x45deec);var _0x360b0=moment();this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x86')]][_0x45deec]['agentcomplete']=!![];this[_0x2ade('0x6')][_0x5d2d0d['transfereeuniqueid']][_0x45deec][_0x2ade('0x62')]=moment()[_0x2ade('0x2a')](_0x2ade('0x2b'));this['channels'][_0x5d2d0d[_0x2ade('0x86')]][_0x45deec][_0x2ade('0x43')]=_0x2ade('0x63');this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x86')]][_0x45deec]['reason']=_0x2ade('0x64');this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x86')]][_0x45deec][_0x2ade('0x66')]=_0x360b0[_0x2ade('0x89')](this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x86')]][_0x45deec][_0x2ade('0x3d')],_0x2ade('0x8a'));}}}}if(this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x8b')]]){var _0x514a10=this['channels'][_0x5d2d0d[_0x2ade('0x8b')]];this['channels'][_0x5d2d0d['secondtransfereruniqueid']]=this[_0x2ade('0x6')][_0x5d2d0d[_0x2ade('0x86')]];this['channels'][_0x5d2d0d['transfereeuniqueid']]=_0x514a10;}}}catch(_0x4720d2){logger[_0x2ade('0x3a')]('[%s][voiceAgentReport][attendedtransfer]',_0x5d2d0d[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x4720d2,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2ade('0x1c')]=function(_0x56169b){try{if(this[_0x2ade('0x20')](_0x56169b)){logger[_0x2ade('0x24')](_0x2ade('0x8c'),_0x56169b[_0x2ade('0x26')],util[_0x2ade('0x34')](_0x56169b,{'showHidden':![],'depth':null}));if(this[_0x2ade('0x6')][_0x56169b[_0x2ade('0x86')]]){for(var _0x407b2c in this[_0x2ade('0x6')][_0x56169b[_0x2ade('0x86')]]){if(this['channels'][_0x56169b['transfereeuniqueid']]['hasOwnProperty'](_0x407b2c)){if(_0x56169b['transfereruniqueid']===_0x407b2c){logger['info'](_0x2ade('0x8d'),_0x56169b['uniqueid'],this[_0x2ade('0x6')][_0x56169b[_0x2ade('0x86')]][_0x407b2c][_0x2ade('0x23')],_0x407b2c);var _0x48831a=moment();this[_0x2ade('0x6')][_0x56169b[_0x2ade('0x86')]][_0x407b2c]['agentcomplete']=!![];this[_0x2ade('0x6')][_0x56169b[_0x2ade('0x86')]][_0x407b2c][_0x2ade('0x62')]=_0x48831a;this[_0x2ade('0x6')][_0x56169b[_0x2ade('0x86')]][_0x407b2c][_0x2ade('0x43')]=_0x2ade('0x63');this[_0x2ade('0x6')][_0x56169b[_0x2ade('0x86')]][_0x407b2c][_0x2ade('0x50')]='transfer';this[_0x2ade('0x6')][_0x56169b['transfereeuniqueid']][_0x407b2c][_0x2ade('0x66')]=_0x48831a[_0x2ade('0x89')](this['channels'][_0x56169b[_0x2ade('0x86')]][_0x407b2c]['agentconnectAt'],_0x2ade('0x8a'));}}}}}}catch(_0x234ef4){logger[_0x2ade('0x3a')](_0x2ade('0x8e'),_0x56169b[_0x2ade('0x26')],util['inspect'](_0x234ef4,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2ade('0x18')]=function(_0x39b65d){var _0x5afd96='';try{if(this[_0x2ade('0x20')](_0x39b65d)){logger['debug'](_0x2ade('0x8f'),_0x39b65d[_0x2ade('0x26')],util['inspect'](_0x39b65d,{'showHidden':![],'depth':null}));if(_0x39b65d[_0x2ade('0x90')]){_0x5afd96=_0x39b65d[_0x2ade('0x90')][_0x2ade('0x91')](0x0,_0x39b65d[_0x2ade('0x90')][_0x2ade('0x92')]('-'));if(this['agents'][_0x5afd96]){logger[_0x2ade('0x21')](_0x2ade('0x93'),_0x39b65d['uniqueid'],_0x5afd96);this[_0x2ade('0x9')][_0x5afd96]['onhold']=!![];}}}}catch(_0x3df67a){logger[_0x2ade('0x3a')]('[%s][voiceAgentReport][musiconholdstart]',_0x39b65d['uniqueid'],util[_0x2ade('0x34')](_0x3df67a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2ade('0x1d')]['syncMusicOnHoldStop']=function(_0x3cafee){var _0x13825d='';try{if(this[_0x2ade('0x20')](_0x3cafee)){logger[_0x2ade('0x24')](_0x2ade('0x94'),_0x3cafee['uniqueid'],util[_0x2ade('0x34')](_0x3cafee,{'showHidden':![],'depth':null}));if(_0x3cafee[_0x2ade('0x90')]){_0x13825d=_0x3cafee[_0x2ade('0x90')][_0x2ade('0x91')](0x0,_0x3cafee['channel']['lastIndexOf']('-'));if(this[_0x2ade('0x9')][_0x13825d]){logger['info'](_0x2ade('0x95'),_0x3cafee[_0x2ade('0x26')],_0x13825d);this['agents'][_0x13825d]['onhold']=![];}}}}catch(_0x558454){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x3cafee[_0x2ade('0x26')],util['inspect'](_0x558454,{'showHidden':![],'depth':null}));}};module[_0x2ade('0x96')]=VoiceAgentReport;
\ No newline at end of file
index b97cc41..7d20e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9876=['accountcode','connectedlinenum','error','[%s][voiceCallReport][newcallerid]','isNotNull','[%s][voiceCallReport][newchannel]\x20event:','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','from-sip','undefined','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','debug','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','application','applicationdata','appdata','startsWith','CDR(routeAlias)','queue','toLowerCase','info','duration','subtract','seconds','pick','includes','lastapplication','cdr(','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','answertime','holdtime','connectedlinename','destinationchannel','membername','diff','UserId','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','.wav49','replace','.WAV','monitors','push','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','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','then','transferType','isEmpty','getSettings','stopRecordingOnTransfer','resolve','StopMixMonitor','catch','Action','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','some','origtransfererlinkedid','routeid','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','path','ioredis','../../../config/environment','ami','../model/channel','set','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','newchannel','syncNewChannel','bind','newstate','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','[voiceCallReport][coreshowchannels]','inspect','isUndefined','prototype','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','[%s][voiceCallReport][newcallerid]\x20event:','merge','keys','context','channel','split','exten','xcally-motion-preview','destconnectedlinenum','emit','format','user:%s','name'];(function(_0x4167f5,_0x5a1d6b){var _0x203c5b=function(_0x3fe036){while(--_0x3fe036){_0x4167f5['push'](_0x4167f5['shift']());}};_0x203c5b(++_0x5a1d6b);}(_0x9876,0x8d));var _0x6987=function(_0x4fa957,_0x327bbb){_0x4fa957=_0x4fa957-0x0;var _0x5629f8=_0x9876[_0x4fa957];return _0x5629f8;};'use strict';var _=require(_0x6987('0x0'));var moment=require(_0x6987('0x1'));var util=require(_0x6987('0x2'));var path=require(_0x6987('0x3'));var Redis=require(_0x6987('0x4'));var config=require(_0x6987('0x5'));var logger=require('../../../config/logger')(_0x6987('0x6'));var ami=require('../ami');var Channel=require(_0x6987('0x7'));var RpcSetting=require('../rpc/setting');var applications=[_0x6987('0x8'),'queue',_0x6987('0x9'),_0x6987('0xa'),_0x6987('0xb'),_0x6987('0xc')];var dispositions=[_0x6987('0xd'),_0x6987('0xe'),_0x6987('0xe'),_0x6987('0xd'),_0x6987('0xd'),_0x6987('0xd'),'ANSWERED',_0x6987('0xf'),_0x6987('0xe'),_0x6987('0xe'),_0x6987('0xe')];config[_0x6987('0x10')]=_[_0x6987('0x11')](config[_0x6987('0x10')],{'host':'localhost','port':0x18eb});var io=require(_0x6987('0x12'))(new Redis(config[_0x6987('0x10')]));function VoiceCallReport(_0xb07aea){this['channels']=_0xb07aea[_0x6987('0x13')];this['agents']=_0xb07aea[_0x6987('0x14')];this[_0x6987('0x15')]={};ami['on'](_0x6987('0x16'),this[_0x6987('0x17')]['bind'](this));ami['on'](_0x6987('0x18'),this[_0x6987('0x17')]['bind'](this));ami['on'](_0x6987('0x19'),this[_0x6987('0x1a')][_0x6987('0x1b')](this));ami['on'](_0x6987('0x1c'),this['syncNewState'][_0x6987('0x1b')](this));ami['on'](_0x6987('0x1d'),this[_0x6987('0x1e')][_0x6987('0x1b')](this));ami['on'](_0x6987('0x1f'),this[_0x6987('0x20')]['bind'](this));ami['on'](_0x6987('0x21'),this[_0x6987('0x22')][_0x6987('0x1b')](this));ami['on'](_0x6987('0x23'),this[_0x6987('0x24')]['bind'](this));ami['on'](_0x6987('0x25'),this[_0x6987('0x26')][_0x6987('0x1b')](this));ami['on'](_0x6987('0x27'),this['syncMusicOnHoldStart'][_0x6987('0x1b')](this));ami['on'](_0x6987('0x28'),this[_0x6987('0x29')][_0x6987('0x1b')](this));try{logger['info'](_0x6987('0x2a'));ami[_0x6987('0x2b')]();}catch(_0x1c1572){logger['error'](_0x6987('0x2c'),util[_0x6987('0x2d')](_0x1c1572,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype']['isNotNull']=function(_0x4ecdca){return _0x4ecdca!==null&&!_[_0x6987('0x2e')](_0x4ecdca);};VoiceCallReport['prototype']['emit']=function(_0x15b0df,_0x4b6aec,_0x1d349c){io['to'](_0x15b0df)['emit'](_0x4b6aec,_0x1d349c);};VoiceCallReport[_0x6987('0x2f')][_0x6987('0x22')]=function(_0x22dd9e){try{if(this['isNotNull'](_0x22dd9e)){logger['info'](_0x6987('0x30'),_0x22dd9e[_0x6987('0x31')],_0x22dd9e[_0x6987('0x32')],_0x22dd9e['calleridnum']);logger['debug'](_0x6987('0x33'),_0x22dd9e[_0x6987('0x31')],util[_0x6987('0x2d')](_0x22dd9e,{'showHidden':![],'depth':null}));if(_0x22dd9e[_0x6987('0x31')]===_0x22dd9e['linkedid']){if(!_[_0x6987('0x2e')](this[_0x6987('0x13')][_0x22dd9e[_0x6987('0x31')]])){_[_0x6987('0x34')](this[_0x6987('0x13')][_0x22dd9e['uniqueid']],_['pick'](_0x22dd9e,_[_0x6987('0x35')](this[_0x6987('0x13')][_0x22dd9e[_0x6987('0x31')]])));}}if(_0x22dd9e[_0x6987('0x36')]==='from-sip'){var _0x4c71d0=this[_0x6987('0x14')][_0x22dd9e[_0x6987('0x37')][_0x6987('0x38')]('-')[0x0]];if(_0x4c71d0){if(_0x22dd9e[_0x6987('0x39')]==_0x6987('0x3a')){_0x4c71d0[_0x6987('0x3b')]=_0x22dd9e['connectedlinenum'];this[_0x6987('0x3c')](util[_0x6987('0x3d')](_0x6987('0x3e'),_0x4c71d0[_0x6987('0x3f')]),'user:agentconnect',{'id':_0x4c71d0['id'],'destaccountcode':_0x4c71d0[_0x6987('0x40')],'destconnectedlinenum':_0x22dd9e[_0x6987('0x41')]});}}}}}catch(_0x3e493c){logger[_0x6987('0x42')](_0x6987('0x43'),_0x22dd9e['uniqueid'],util[_0x6987('0x2d')](_0x3e493c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x6987('0x2f')][_0x6987('0x1a')]=function(_0x3736ee){try{if(this[_0x6987('0x44')](_0x3736ee)){logger['debug'](_0x6987('0x45'),_0x3736ee[_0x6987('0x31')],util[_0x6987('0x2d')](_0x3736ee,{'showHidden':![],'depth':null}));if(this['channels'][_0x3736ee[_0x6987('0x31')]]){return;}if(_0x3736ee[_0x6987('0x37')]==='OutgoingSpoolFailed'){return;}if(_0x3736ee[_0x6987('0x31')]!==_0x3736ee[_0x6987('0x46')]&&!this[_0x6987('0x15')][_0x3736ee['linkedid']]){return;}logger['info'](_0x6987('0x47'),_0x3736ee[_0x6987('0x31')],_0x3736ee[_0x6987('0x36')],_0x3736ee[_0x6987('0x39')]);this[_0x6987('0x13')][_0x3736ee[_0x6987('0x31')]]=new Channel();this[_0x6987('0x13')][_0x3736ee[_0x6987('0x31')]][_0x6987('0x48')]=moment()[_0x6987('0x3d')](_0x6987('0x49'));this['channels'][_0x3736ee[_0x6987('0x31')]][_0x6987('0x4a')]=dispositions[_[_0x6987('0x4b')](_0x3736ee['channelstate'])];_['merge'](this[_0x6987('0x13')][_0x3736ee[_0x6987('0x31')]],_['pick'](_0x3736ee,_['keys'](this[_0x6987('0x13')][_0x3736ee[_0x6987('0x31')]])));if(_0x3736ee[_0x6987('0x36')]===_0x6987('0x4c')){var _0x27fa5c=this['agents'][_0x3736ee[_0x6987('0x37')][_0x6987('0x38')]('-')[0x0]];if(_0x27fa5c&&typeof _0x27fa5c[_0x6987('0x3b')]===_0x6987('0x4d')){_0x27fa5c[_0x6987('0x3b')]=_0x3736ee[_0x6987('0x39')];logger['debug'](_0x6987('0x4e'),_0x3736ee[_0x6987('0x31')],util[_0x6987('0x2d')]({'id':_0x27fa5c['id'],'destaccountcode':_0x27fa5c['accountcode'],'destconnectedlinenum':_0x3736ee[_0x6987('0x39')]},{'showHidden':![],'depth':null}));this[_0x6987('0x3c')](util[_0x6987('0x3d')]('user:%s',_0x27fa5c['name']),'user:agentconnect',{'id':_0x27fa5c['id'],'destaccountcode':_0x27fa5c[_0x6987('0x40')],'destconnectedlinenum':_0x3736ee['exten']});}}}}catch(_0x4c465a){logger[_0x6987('0x42')](_0x6987('0x4f'),_0x3736ee[_0x6987('0x31')],util['inspect'](_0x4c465a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x6987('0x2f')]['syncNewExten']=function(_0x364802){try{if(this[_0x6987('0x44')](_0x364802)){logger[_0x6987('0x50')](_0x6987('0x51'),_0x364802['uniqueid'],util[_0x6987('0x2d')](_0x364802,{'showHidden':![],'depth':null}));if(_0x364802[_0x6987('0x37')]===_0x6987('0x52')||_0x364802[_0x6987('0x39')]==='h')return;if(_0x364802[_0x6987('0x31')]===_0x364802[_0x6987('0x46')]||this[_0x6987('0x15')][_0x364802[_0x6987('0x46')]]){_0x364802['application']=_0x364802['application']?_0x364802[_0x6987('0x53')]['toLowerCase']():undefined;_0x364802[_0x6987('0x54')]=_0x364802[_0x6987('0x55')]||_0x364802[_0x6987('0x54')];if(_0x364802[_0x6987('0x55')]&&!_0x364802[_0x6987('0x55')][_0x6987('0x56')](_0x6987('0x57'))&&_0x364802[_0x6987('0x53')]!==_0x6987('0x58')){_0x364802[_0x6987('0x54')]=_0x364802[_0x6987('0x54')][_0x6987('0x59')]();}logger[_0x6987('0x5a')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x364802[_0x6987('0x31')],_0x364802['application'],_0x364802[_0x6987('0x54')]);if(_[_0x6987('0x2e')](this[_0x6987('0x13')][_0x364802[_0x6987('0x31')]])){this[_0x6987('0x13')][_0x364802[_0x6987('0x31')]]=new Channel();this['channels'][_0x364802['uniqueid']][_0x6987('0x48')]=_0x364802[_0x6987('0x5b')]?moment()[_0x6987('0x5c')](moment[_0x6987('0x5b')](_0x364802['duration'])[_0x6987('0x5d')](),_0x6987('0x5d'))[_0x6987('0x3d')](_0x6987('0x49')):moment()[_0x6987('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x364802[_0x6987('0x31')]][_0x6987('0x4a')]=_0x6987('0xd');}_[_0x6987('0x34')](this[_0x6987('0x13')][_0x364802[_0x6987('0x31')]],_[_0x6987('0x5e')](_0x364802,_[_0x6987('0x35')](this[_0x6987('0x13')][_0x364802['uniqueid']])));if(_[_0x6987('0x5f')](applications,_0x364802[_0x6987('0x53')])){this[_0x6987('0x13')][_0x364802[_0x6987('0x31')]][_0x6987('0x60')]=_0x364802['application'];this['channels'][_0x364802[_0x6987('0x31')]]['lastdata']=_0x364802[_0x6987('0x54')];if(_0x364802['application']===_0x6987('0x8')&&_['startsWith'](_0x364802['applicationdata'][_0x6987('0x59')](),_0x6987('0x61'))){var _0x33c362=_0x364802[_0x6987('0x54')]['split']('=');var _0x57c110=_0x33c362[0x0][_0x6987('0x59')]()['match'](/cdr\((.*)\)/);if(_0x57c110){if(_0x57c110[0x1]===_0x6987('0x62')&&!_[_0x6987('0x63')](this[_0x6987('0x13')][_0x364802['uniqueid']][_0x57c110[0x1]]))return;this[_0x6987('0x13')][_0x364802['uniqueid']][_0x57c110[0x1]]=_0x33c362[0x1];}}else if(_0x364802['application']===_0x6987('0x58')){this[_0x6987('0x13')][_0x364802[_0x6987('0x31')]][_0x6987('0x58')]=_0x364802[_0x6987('0x54')][_0x6987('0x38')](',')[0x0];}}}}}catch(_0x4df8aa){logger[_0x6987('0x42')](_0x6987('0x64'),_0x364802['uniqueid'],util[_0x6987('0x2d')](_0x4df8aa,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x6987('0x2f')][_0x6987('0x65')]=function(_0x419e6e){try{if(this[_0x6987('0x44')](_0x419e6e)){logger[_0x6987('0x5a')](_0x6987('0x66'),_0x419e6e[_0x6987('0x31')],_0x419e6e[_0x6987('0x46')],_0x419e6e[_0x6987('0x32')],_0x419e6e[_0x6987('0x67')]);logger[_0x6987('0x50')](_0x6987('0x68'),_0x419e6e['uniqueid'],util[_0x6987('0x2d')](_0x419e6e,{'showHidden':![],'depth':null}));if(_0x419e6e[_0x6987('0x69')]!=='6')return;var _0x16ce61=this['agents'][_0x419e6e['channel'][_0x6987('0x38')]('-')[0x0]];if(_0x419e6e[_0x6987('0x31')]!==_0x419e6e[_0x6987('0x46')]){var _0x257916=moment();if(this['channels'][_0x419e6e[_0x6987('0x46')]]){if(!this[_0x6987('0x13')][_0x419e6e['linkedid']][_0x6987('0x6a')]){this['channels'][_0x419e6e['linkedid']][_0x6987('0x6a')]=!![];this[_0x6987('0x13')][_0x419e6e['linkedid']][_0x6987('0x6b')]=_0x257916[_0x6987('0x3d')](_0x6987('0x49'));if(this[_0x6987('0x13')][_0x419e6e[_0x6987('0x46')]][_0x6987('0x48')]){this['channels'][_0x419e6e[_0x6987('0x46')]][_0x6987('0x6c')]=_0x257916['diff'](this[_0x6987('0x13')][_0x419e6e['linkedid']][_0x6987('0x48')],_0x6987('0x5d'));}}this[_0x6987('0x13')][_0x419e6e[_0x6987('0x46')]]['linkedid']=_0x419e6e[_0x6987('0x31')];if(_0x419e6e[_0x6987('0x67')]!=='xcally-motion-preview'){this[_0x6987('0x13')][_0x419e6e[_0x6987('0x46')]][_0x6987('0x41')]=_0x419e6e[_0x6987('0x67')];}this[_0x6987('0x13')][_0x419e6e[_0x6987('0x46')]][_0x6987('0x6d')]=_0x419e6e[_0x6987('0x32')];this[_0x6987('0x13')][_0x419e6e['linkedid']][_0x6987('0x6e')]=_0x419e6e[_0x6987('0x37')];this[_0x6987('0x13')][_0x419e6e[_0x6987('0x46')]][_0x6987('0x4a')]=dispositions[_[_0x6987('0x4b')](_0x419e6e['channelstate'])];if(_0x16ce61){this['channels'][_0x419e6e[_0x6987('0x46')]]['UserId']=_0x16ce61['id'];this[_0x6987('0x13')][_0x419e6e[_0x6987('0x46')]][_0x6987('0x6f')]=_0x16ce61[_0x6987('0x3f')];}}if(this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]]){if(!this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]][_0x6987('0x6a')]){this[_0x6987('0x13')][_0x419e6e['uniqueid']]['answered']=!![];this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]]['answertime']=_0x257916[_0x6987('0x3d')](_0x6987('0x49'));if(this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]][_0x6987('0x48')]){this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]]['holdtime']=_0x257916[_0x6987('0x70')](this[_0x6987('0x13')][_0x419e6e['uniqueid']][_0x6987('0x48')],_0x6987('0x5d'));}}if(_0x419e6e[_0x6987('0x67')]!=='xcally-motion-preview'){this['channels'][_0x419e6e[_0x6987('0x31')]][_0x6987('0x41')]=_0x419e6e[_0x6987('0x67')];}this['channels'][_0x419e6e[_0x6987('0x31')]][_0x6987('0x6d')]=_0x419e6e[_0x6987('0x32')];this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]][_0x6987('0x6e')]=_0x419e6e[_0x6987('0x37')];this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]][_0x6987('0x4a')]=dispositions[_[_0x6987('0x4b')](_0x419e6e[_0x6987('0x69')])];}}else{if(this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]]){if(_0x16ce61){this[_0x6987('0x13')][_0x419e6e['uniqueid']][_0x6987('0x71')]=_0x16ce61['id'];this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]][_0x6987('0x6f')]=_0x16ce61['name'];}}}if(_0x419e6e[_0x6987('0x36')]==='from-sip'){if(_0x16ce61){_0x16ce61[_0x6987('0x3b')]=_0x419e6e[_0x6987('0x39')];var _0x2ad9be,_0x432042;if(this['channels'][_0x419e6e[_0x6987('0x31')]]){_0x2ad9be=this[_0x6987('0x13')][_0x419e6e['uniqueid']]['routealias'];_0x432042=this[_0x6987('0x13')][_0x419e6e[_0x6987('0x31')]][_0x6987('0x58')];}else if(this[_0x6987('0x13')][_0x419e6e['linkedid']]){_0x2ad9be=this[_0x6987('0x13')][_0x419e6e['linkedid']][_0x6987('0x72')];_0x432042=this[_0x6987('0x13')][_0x419e6e['linkedid']]['queue'];}_0x16ce61['queue']=_0x432042;_0x16ce61[_0x6987('0x72')]=_0x2ad9be;var _0xcb9bcf={'id':_0x16ce61['id'],'name':_0x16ce61['name'],'agentconnected':!![],'destaccountcode':_0x16ce61['accountcode'],'destconnectedlinenum':_0x419e6e[_0x6987('0x39')],'queue':_0x432042||undefined,'routealias':_0x2ad9be,'uniqueid':_0x419e6e[_0x6987('0x46')]};logger[_0x6987('0x50')](_0x6987('0x73'),_0x419e6e[_0x6987('0x31')],util[_0x6987('0x2d')](_0xcb9bcf,{'showHidden':![],'depth':null}));this[_0x6987('0x3c')](util[_0x6987('0x3d')](_0x6987('0x3e'),_0x16ce61[_0x6987('0x3f')]),'user:agentconnect',_0xcb9bcf);}}}}catch(_0x4d6ac4){logger['error'](_0x6987('0x74'),_0x419e6e[_0x6987('0x31')],util['inspect'](_0x4d6ac4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x6987('0x2f')][_0x6987('0x75')]=function(_0x56b9aa,_0x4e3a60){try{if(this['channels'][_0x56b9aa]){logger[_0x6987('0x5a')](_0x6987('0x76'),_0x56b9aa,_0x4e3a60);this[_0x6987('0x13')][_0x56b9aa][_0x6987('0x77')]=!![];if(_['endsWith'](_0x4e3a60,_0x6987('0x78'))){_0x4e3a60=_0x4e3a60[_0x6987('0x79')]('.wav49',_0x6987('0x7a'));}this[_0x6987('0x13')][_0x56b9aa]['monitorFilename']=_0x4e3a60;var _0x33dd35=_['find'](this[_0x6987('0x13')][_0x56b9aa]['monitors'],{'filename':_0x4e3a60});if(_[_0x6987('0x63')](_0x33dd35)){this[_0x6987('0x13')][_0x56b9aa][_0x6987('0x7b')][_0x6987('0x7c')]({'filename':_0x4e3a60,'createdAt':moment()[_0x6987('0x3d')](_0x6987('0x49')),'mixmonitorid':'','status':_0x6987('0x7d')});}}}catch(_0x4ad736){logger[_0x6987('0x42')](_0x6987('0x7e'),_0x56b9aa,util[_0x6987('0x2d')](_0x4ad736,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncVarSet']=function(_0xd00309){try{if(this[_0x6987('0x44')](_0xd00309)){logger[_0x6987('0x50')](_0x6987('0x7f'),_0xd00309[_0x6987('0x31')],util['inspect'](_0xd00309,{'showHidden':![],'depth':null}));if(this[_0x6987('0x13')][_0xd00309[_0x6987('0x31')]]&&_0xd00309[_0x6987('0x37')]!=_0x6987('0x52')){if(this['isNotNull'](_0xd00309[_0x6987('0x80')])){if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x81')])){logger[_0x6987('0x5a')](_0x6987('0x82'),_0xd00309[_0x6987('0x31')],_0xd00309[_0x6987('0x83')]);this[_0x6987('0x75')](_0xd00309[_0x6987('0x31')],_0xd00309[_0x6987('0x83')]);}else if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x84')])){logger['info'](_0x6987('0x85'),_0xd00309[_0x6987('0x31')],_0xd00309[_0x6987('0x83')]);this[_0x6987('0x13')][_0xd00309[_0x6987('0x31')]][_0x6987('0x67')]=_0xd00309['value'];}else if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x86')])){logger[_0x6987('0x5a')](_0x6987('0x87'),_0xd00309[_0x6987('0x31')],_0xd00309[_0x6987('0x83')]);this[_0x6987('0x13')][_0xd00309[_0x6987('0x31')]][_0x6987('0x88')]=_0xd00309['value'];}else if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x89')])){logger[_0x6987('0x5a')](_0x6987('0x8a'),_0xd00309[_0x6987('0x31')],_0xd00309['value']);this[_0x6987('0x13')][_0xd00309[_0x6987('0x31')]][_0x6987('0x62')]=_0xd00309['value'];}else if(this[_0x6987('0x44')](_0xd00309['variable'][_0x6987('0x8b')])){logger[_0x6987('0x5a')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0xd00309[_0x6987('0x31')],_0xd00309['value'][_0x6987('0x38')](',')[0x0]);this[_0x6987('0x13')][_0xd00309[_0x6987('0x31')]][_0x6987('0x58')]=_0xd00309[_0x6987('0x83')][_0x6987('0x38')](',')[0x0];}else if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x8c')])){logger[_0x6987('0x5a')](_0x6987('0x8d'),_0xd00309[_0x6987('0x31')],_0xd00309[_0x6987('0x83')]);this[_0x6987('0x13')][_0xd00309['uniqueid']][_0x6987('0x8e')]=_0xd00309[_0x6987('0x83')];}else if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x8f')])){logger[_0x6987('0x5a')](_0x6987('0x90'),_0xd00309[_0x6987('0x31')],_0xd00309['value']);this[_0x6987('0x13')][_0xd00309[_0x6987('0x31')]][_0x6987('0x91')]=_0xd00309[_0x6987('0x83')];}else if(this[_0x6987('0x44')](_0xd00309['variable']['xmd-callerid-preview'])){logger['info'](_0x6987('0x92'),_0xd00309[_0x6987('0x31')],_0xd00309[_0x6987('0x83')]);this['channels'][_0xd00309[_0x6987('0x31')]]['calleridpreview']=_0xd00309[_0x6987('0x83')];}else if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x93')])){logger[_0x6987('0x5a')](_0x6987('0x94'),_0xd00309[_0x6987('0x31')],_0xd00309[_0x6987('0x83')]);this[_0x6987('0x13')][_0xd00309['uniqueid']][_0x6987('0x58')]=_0xd00309['value'];}else if(this[_0x6987('0x44')](_0xd00309['variable'][_0x6987('0x95')])){logger[_0x6987('0x5a')](_0x6987('0x96'),_0xd00309[_0x6987('0x31')],_0xd00309[_0x6987('0x83')]);this['channels'][_0xd00309[_0x6987('0x31')]]['sipcalluniqueid']=_0xd00309[_0x6987('0x83')];}}}else if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x81')])){if(_0xd00309[_0x6987('0x83')]){var _0x58d095=path[_0x6987('0x97')](_0xd00309[_0x6987('0x83')])[_0x6987('0x3f')];logger['info'](_0x6987('0x82'),_0x58d095,_0xd00309[_0x6987('0x83')]);this[_0x6987('0x75')](_0x58d095,_0xd00309[_0x6987('0x83')]);}}else if(this['channels'][_0xd00309['linkedid']]){if(this[_0x6987('0x44')](_0xd00309['variable'])){if(this[_0x6987('0x44')](_0xd00309[_0x6987('0x80')][_0x6987('0x95')])){logger[_0x6987('0x5a')](_0x6987('0x96'),_0xd00309[_0x6987('0x46')],_0xd00309[_0x6987('0x83')]);this[_0x6987('0x13')][_0xd00309[_0x6987('0x46')]][_0x6987('0x98')]=_0xd00309[_0x6987('0x83')];}}}}}catch(_0x46bd19){logger[_0x6987('0x42')](_0x6987('0x99'),_0xd00309[_0x6987('0x31')],util[_0x6987('0x2d')](_0x46bd19,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x6987('0x20')]=function(_0xc67f32){try{if(this[_0x6987('0x44')](_0xc67f32)){logger['debug'](_0x6987('0x9a'),_0xc67f32['uniqueid'],util[_0x6987('0x2d')](_0xc67f32,{'showHidden':![],'depth':null}));if(this[_0x6987('0x15')][_0xc67f32['linkedid']]){if(this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x46')]]){this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x46')]][_0x6987('0x31')]=_0xc67f32[_0x6987('0x31')];this[_0x6987('0x13')][this['blindTransfers'][_0xc67f32[_0x6987('0x46')]][_0x6987('0x46')]]['answered']=this[_0x6987('0x13')][_0xc67f32['uniqueid']][_0x6987('0x6a')];this[_0x6987('0x13')][this['blindTransfers'][_0xc67f32[_0x6987('0x46')]][_0x6987('0x46')]]['answertime']=this['channels'][_0xc67f32[_0x6987('0x31')]]['answertime'];this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]]['linkedid']][_0x6987('0x6e')]=this['channels'][this['blindTransfers'][_0xc67f32[_0x6987('0x46')]][_0x6987('0x46')]]['channel'];this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32['linkedid']][_0x6987('0x46')]][_0x6987('0x4a')]=this['channels'][_0xc67f32[_0x6987('0x31')]]['disposition'];this['channels'][_0xc67f32[_0x6987('0x31')]]=this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x46')]];delete this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]]['linkedid']];}else if(this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]]){this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32['linkedid']][_0x6987('0x31')]][_0x6987('0x31')]=[this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]][_0x6987('0x46')],this['channels'][this[_0x6987('0x15')][_0xc67f32['linkedid']][_0x6987('0x31')]][_0x6987('0x46')]=this['channels'][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]]['uniqueid']][0x0];this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]]['answered']=this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x6a')];this['channels'][this['blindTransfers'][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]][_0x6987('0x6b')]=this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x6b')];this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]][_0x6987('0x6e')]=this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]]['channel'];this[_0x6987('0x13')][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]][_0x6987('0x4a')]=this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]]['disposition'];this[_0x6987('0x13')][_0xc67f32['uniqueid']]=this['channels'][this[_0x6987('0x15')][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]];delete this[_0x6987('0x13')][this['blindTransfers'][_0xc67f32[_0x6987('0x46')]][_0x6987('0x31')]];}}if(this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]]){logger[_0x6987('0x5a')](_0x6987('0x9b'),_0xc67f32[_0x6987('0x31')],_0xc67f32['cause-txt']);var _0x2c4453=moment();this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x9c')]=_0x2c4453[_0x6987('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x5b')]=_0x2c4453['diff'](this[_0x6987('0x13')][_0xc67f32['uniqueid']]['starttime'],_0x6987('0x5d'));if(this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]]['answered']){this[_0x6987('0x13')][_0xc67f32['uniqueid']][_0x6987('0x9d')]=_0x2c4453[_0x6987('0x70')](this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x6b')],_0x6987('0x5d'));this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]]['holdtime']=this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x5b')]-this[_0x6987('0x13')][_0xc67f32['uniqueid']][_0x6987('0x9d')];}if(_0xc67f32[_0x6987('0x36')]===_0x6987('0x4c')){if(this['agents'][_0xc67f32[_0x6987('0x37')][_0x6987('0x38')]('-')[0x0]]){this['agents'][_0xc67f32[_0x6987('0x37')][_0x6987('0x38')]('-')[0x0]]=_['omit'](this[_0x6987('0x14')][_0xc67f32[_0x6987('0x37')][_0x6987('0x38')]('-')[0x0]],['destconnectedlinenum']);logger[_0x6987('0x50')](_0x6987('0x9e'),_0xc67f32[_0x6987('0x31')],util[_0x6987('0x2d')]({'id':this[_0x6987('0x14')][_0xc67f32[_0x6987('0x37')][_0x6987('0x38')]('-')[0x0]]['id'],'destaccountcode':this[_0x6987('0x14')][_0xc67f32[_0x6987('0x37')][_0x6987('0x38')]('-')[0x0]][_0x6987('0x40')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x6987('0x3d')](_0x6987('0x3e'),this['agents'][_0xc67f32['channel'][_0x6987('0x38')]('-')[0x0]][_0x6987('0x3f')]),_0x6987('0x9f'),{'id':this['agents'][_0xc67f32[_0x6987('0x37')][_0x6987('0x38')]('-')[0x0]]['id'],'destaccountcode':this[_0x6987('0x14')][_0xc67f32[_0x6987('0x37')]['split']('-')[0x0]]['accountcode']});for(var _0x34c1b1=0x0;_0x34c1b1<Object[_0x6987('0x35')](this[_0x6987('0x14')])['length'];_0x34c1b1++){var _0x176aaf=Object[_0x6987('0x35')](this['agents'])[_0x34c1b1];var _0x3abad8=this[_0x6987('0x14')][_0x176aaf];if(_0x3abad8[_0x6987('0x40')]===Number(this[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x41')])){this[_0x6987('0x3c')](util[_0x6987('0x3d')](_0x6987('0x3e'),_0x3abad8[_0x6987('0x3f')]),_0x6987('0x9f'),{'id':_0x3abad8['id'],'destaccountcode':_0x3abad8[_0x6987('0x40')],'transfer':this[_0x6987('0x13')][_0xc67f32['uniqueid']]['transferType']});break;}}}}var _0x4455e9=this;Promise['resolve']()[_0x6987('0xa0')](function(){var _0x1dae4b=_0x4455e9['channels'][_0xc67f32[_0x6987('0x31')]];if(typeof _0x1dae4b[_0x6987('0xa1')]===_0x6987('0x4d')){return;}if(_0x1dae4b['transferToInternal']===!![]){return;}if(_[_0x6987('0xa2')](_0x1dae4b[_0x6987('0x7b')])){return;}return RpcSetting[_0x6987('0xa3')]()[_0x6987('0xa0')](function(_0x226d8b){if(!_0x226d8b[_0x6987('0xa4')])return;return Promise[_0x6987('0xa5')]()[_0x6987('0xa0')](function(){return ami['Action']({'action':_0x6987('0xa6'),'channel':_0x1dae4b[_0x6987('0x37')]})[_0x6987('0xa7')](function(){});})[_0x6987('0xa0')](function(){return ami[_0x6987('0xa8')]({'action':_0x6987('0xa6'),'channel':_0x1dae4b[_0x6987('0x6e')]})[_0x6987('0xa7')](function(){})['finally'](function(){var _0x30b7d8=_0x4455e9[_0x6987('0x14')][_0x1dae4b['destinationchannel'][_0x6987('0x38')]('-')[0x0]];if(!_0x30b7d8)return;io[_0x6987('0x3c')](_0x6987('0xa9'),{'agentId':_0x30b7d8['id'],'uniqueid':_0x1dae4b['uniqueid']});});});});})[_0x6987('0xa0')](function(){if(_0xc67f32[_0x6987('0xaa')]===_0x6987('0xab')){_0x4455e9[_0x6987('0x15')][_0xc67f32[_0x6987('0x31')]]=_0xc67f32;}else{if(_0x4455e9[_0x6987('0x13')][_0xc67f32['uniqueid']]&&_0x4455e9['channels'][_0xc67f32[_0x6987('0x31')]]['type']===_0x6987('0xac')&&_0x4455e9[_0x6987('0x15')][_0xc67f32[_0x6987('0x31')]]){_0x4455e9[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x31')]=[_0x4455e9['channels'][_0xc67f32[_0x6987('0x31')]][_0x6987('0x46')],_0x4455e9['channels'][_0xc67f32['uniqueid']][_0x6987('0x46')]=_0x4455e9[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]][_0x6987('0x31')]][0x0];delete _0x4455e9[_0x6987('0x15')][_0xc67f32[_0x6987('0x31')]];}}logger[_0x6987('0x50')](_0x6987('0xad'),_0xc67f32[_0x6987('0x31')],util['inspect'](_0x4455e9[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]],{'showHidden':![],'depth':null}));ami['emit'](_0x6987('0xae'),_0x4455e9[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]]);delete _0x4455e9[_0x6987('0x13')][_0xc67f32[_0x6987('0x31')]];});}}}catch(_0x43ef53){logger[_0x6987('0x42')]('[%s][voiceCallReport][hangup]',_0xc67f32[_0x6987('0x31')],util[_0x6987('0x2d')](_0x43ef53,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x6987('0x2f')][_0x6987('0x24')]=function(_0x371120){try{if(this[_0x6987('0x44')](_0x371120)){logger['info'](_0x6987('0xaf'),_0x371120['uniqueid'],_0x371120[_0x6987('0xb0')],_0x371120['transfertargetcalleridnum']);logger[_0x6987('0x50')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x371120[_0x6987('0x31')],util['inspect'](_0x371120,{'showHidden':![],'depth':null}));var _0x5eecc0;if(this[_0x6987('0x13')][_0x371120['transfereeuniqueid']]){this['channels'][_0x371120[_0x6987('0xb1')]][_0x6987('0xb2')]=_0x371120[_0x6987('0xb0')];this[_0x6987('0x13')][_0x371120[_0x6987('0xb1')]][_0x6987('0xb3')]=_0x371120[_0x6987('0xb4')];if(this[_0x6987('0x13')][_0x371120[_0x6987('0xb5')]]){_0x5eecc0=this[_0x6987('0x13')][_0x371120[_0x6987('0xb5')]];this[_0x6987('0x13')][_0x371120[_0x6987('0xb5')]]=this['channels'][_0x371120[_0x6987('0xb1')]];this[_0x6987('0x13')][_0x371120[_0x6987('0xb1')]]=_0x5eecc0;}this[_0x6987('0x13')][_0x371120['secondtransfereruniqueid']]['transferType']=_0x6987('0xb6');}else if(this[_0x6987('0x13')][_0x371120['transfertargetuniqueid']]){this[_0x6987('0x13')][_0x371120[_0x6987('0xb7')]][_0x6987('0xb2')]=_0x371120[_0x6987('0xb0')];this[_0x6987('0x13')][_0x371120[_0x6987('0xb7')]][_0x6987('0xb3')]=_0x371120[_0x6987('0xb4')];if(this['channels'][_0x371120[_0x6987('0xb8')]]){_0x5eecc0=this[_0x6987('0x13')][_0x371120[_0x6987('0xb8')]];this[_0x6987('0x13')][_0x371120[_0x6987('0xb8')]]=this[_0x6987('0x13')][_0x371120[_0x6987('0xb7')]];this[_0x6987('0x13')][_0x371120[_0x6987('0xb7')]]=_0x5eecc0;}this[_0x6987('0x13')][_0x371120['transfertargetuniqueid']][_0x6987('0xa1')]=_0x6987('0xb6');}if((this[_0x6987('0x13')][_0x371120['origtransfereruniqueid']]||this[_0x6987('0x13')][_0x371120['origtransfererlinkedid']])&&this[_0x6987('0x13')][_0x371120[_0x6987('0xb5')]]){var _0x3b7b98=_[_0x6987('0xb9')]([this[_0x6987('0x13')][_0x371120['origtransfereruniqueid']],this[_0x6987('0x13')][_0x371120[_0x6987('0xba')]],this[_0x6987('0x13')][_0x371120[_0x6987('0xb5')]]],function(_0xa314ce){return _0xa314ce&&_0xa314ce[_0x6987('0x62')]===_0x6987('0xac')&&_0xa314ce[_0x6987('0xbb')];});if(_0x3b7b98){if(this[_0x6987('0x13')][_0x371120[_0x6987('0xb8')]])this['channels'][_0x371120[_0x6987('0xb8')]][_0x6987('0xa1')]='ATTENDED';if(this[_0x6987('0x13')][_0x371120[_0x6987('0xba')]])this[_0x6987('0x13')][_0x371120[_0x6987('0xba')]][_0x6987('0xa1')]=_0x6987('0xb6');this['channels'][_0x371120['secondtransfereruniqueid']][_0x6987('0xa1')]='ATTENDED';}else{if(this[_0x6987('0x13')][_0x371120[_0x6987('0xb1')]]){this[_0x6987('0x13')][_0x371120[_0x6987('0xb5')]]['transferToInternal']=!![];}if(this[_0x6987('0x13')][_0x371120[_0x6987('0xb7')]]){this[_0x6987('0x13')][_0x371120[_0x6987('0xb7')]]['transferToInternal']=!![];}}}}}catch(_0x2c6761){logger[_0x6987('0x42')](_0x6987('0xbc'),_0x371120[_0x6987('0x31')],util['inspect'](_0x2c6761,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncBlindTransfer']=function(_0x204912){try{if(this[_0x6987('0x44')](_0x204912)){logger[_0x6987('0x5a')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x204912[_0x6987('0x31')],_0x204912[_0x6987('0xbd')],_0x204912[_0x6987('0xbe')]);logger[_0x6987('0x50')](_0x6987('0xbf'),_0x204912[_0x6987('0x31')],util['inspect'](_0x204912,{'showHidden':![],'depth':null}));if(this['channels'][_0x204912[_0x6987('0xb1')]]){this[_0x6987('0x13')][_0x204912[_0x6987('0xb1')]][_0x6987('0xb2')]=_0x204912[_0x6987('0xbd')];this['channels'][_0x204912[_0x6987('0xb1')]]['transferconnectedlinenum']=_0x204912['extension'];this[_0x6987('0x13')][_0x204912[_0x6987('0xb1')]]['transferType']=_0x6987('0xc0');this[_0x6987('0x20')]({'event':'BlindTransfer','uniqueid':_0x204912['transfereeuniqueid'],'linkedid':_0x204912[_0x6987('0xc1')],'context':_0x204912[_0x6987('0x36')],'channel':_0x204912['transfererchannel']});}else{this['channels'][_0x204912[_0x6987('0xc1')]][_0x6987('0xa1')]=_0x6987('0xc0');this[_0x6987('0x20')]({'event':_0x6987('0xab'),'uniqueid':_0x204912[_0x6987('0xc1')],'linkedid':_0x204912['transfereeuniqueid'],'context':_0x204912[_0x6987('0x36')],'channel':_0x204912['transfererchannel']});}}}catch(_0x169d06){logger[_0x6987('0x42')](_0x6987('0xc2'),_0x204912['uniqueid'],util[_0x6987('0x2d')](_0x169d06,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x6987('0x2f')][_0x6987('0xc3')]=function(_0x51ea50){try{if(this[_0x6987('0x44')](_0x51ea50)){logger[_0x6987('0x50')](_0x6987('0xc4'),_0x51ea50[_0x6987('0x31')],util[_0x6987('0x2d')](_0x51ea50,{'showHidden':![],'depth':null}));if(this['channels'][_0x51ea50['uniqueid']]){if(!_[_0x6987('0x63')](this[_0x6987('0x13')][_0x51ea50[_0x6987('0x31')]][_0x6987('0x6b')])){this['channels'][_0x51ea50[_0x6987('0x31')]][_0x6987('0xc5')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x6987('0x5a')](_0x6987('0xc6'),_0x51ea50['uniqueid'],this[_0x6987('0x13')][_0x51ea50[_0x6987('0x31')]]['mohstarttime']);}}}}catch(_0x4bcc33){logger[_0x6987('0x42')](_0x6987('0xc7'),_0x51ea50['uniqueid'],util[_0x6987('0x2d')](_0x4bcc33,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x6987('0x29')]=function(_0x340866){try{if(this[_0x6987('0x44')](_0x340866)){logger['debug']('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x340866[_0x6987('0x31')],util[_0x6987('0x2d')](_0x340866,{'showHidden':![],'depth':null}));if(this[_0x6987('0x13')][_0x340866[_0x6987('0x31')]]){if(!_['isNil'](this[_0x6987('0x13')][_0x340866[_0x6987('0x31')]][_0x6987('0xc5')])){this[_0x6987('0x13')][_0x340866[_0x6987('0x31')]][_0x6987('0xc8')]+=moment()[_0x6987('0xc9')](0x0)[_0x6987('0x70')](this[_0x6987('0x13')][_0x340866[_0x6987('0x31')]][_0x6987('0xc5')],_0x6987('0x5d'));logger[_0x6987('0x5a')](_0x6987('0xca'),_0x340866[_0x6987('0x31')],this[_0x6987('0x13')][_0x340866[_0x6987('0x31')]][_0x6987('0xc8')]);delete this[_0x6987('0x13')][_0x340866[_0x6987('0x31')]][_0x6987('0xc5')];}}}}catch(_0x3a8539){logger['error'](_0x6987('0xcb'),_0x340866[_0x6987('0x31')],util[_0x6987('0x2d')](_0x3a8539,{'showHidden':![],'depth':null}));}};module[_0x6987('0xcc')]=VoiceCallReport;
\ No newline at end of file
+var _0x302d=['webbar:stopmonitors','event','BlindTransfer','outbound','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','transferType','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','some','origtransfererlinkedid','routeid','transferToInternal','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','extension','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','milliseconds','mohtime','exports','lodash','moment','util','path','ioredis','../../../config/logger','ami','../ami','set','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','localhost','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','bind','newchannel','syncNewChannel','syncNewState','varset','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','[voiceCallReport][coreshowchannels]\x20started','[voiceCallReport][coreshowchannels]','isNotNull','prototype','emit','info','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','merge','pick','keys','from-sip','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','error','[%s][voiceCallReport][newcallerid]','OutgoingSpoolFailed','linkedid','context','toNumber','channelstate','split','undefined','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','channel','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','queue','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','isUndefined','starttime','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','includes','lastapplication','lastdata','cdr(','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','connectedlinename','disposition','membername','destinationchannel','routealias','[%s][voiceCallReport][newstate]','endsWith','.wav49','.WAV','monitorFilename','find','monitors','push','rec','syncVarSet','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','syncMixMonitorFilename','xmd-phone','callerid','xmd-cdrtype','type','xmd-queue','xmd-originatecalleridnum','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcalluniqueid','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','cause-txt','endtime','billableseconds','user:agentcomplete','length','resolve','isEmpty','getSettings','then','StopMixMonitor','Action','catch','finally'];(function(_0x5c554f,_0x1973a1){var _0x37e1b4=function(_0x318835){while(--_0x318835){_0x5c554f['push'](_0x5c554f['shift']());}};_0x37e1b4(++_0x1973a1);}(_0x302d,0x1aa));var _0xd302=function(_0x388f5d,_0x94b63c){_0x388f5d=_0x388f5d-0x0;var _0x25ce13=_0x302d[_0x388f5d];return _0x25ce13;};'use strict';var _=require(_0xd302('0x0'));var moment=require(_0xd302('0x1'));var util=require(_0xd302('0x2'));var path=require(_0xd302('0x3'));var Redis=require(_0xd302('0x4'));var config=require('../../../config/environment');var logger=require(_0xd302('0x5'))(_0xd302('0x6'));var ami=require(_0xd302('0x7'));var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var applications=[_0xd302('0x8'),'queue',_0xd302('0x9'),_0xd302('0xa'),_0xd302('0xb'),_0xd302('0xc')];var dispositions=[_0xd302('0xd'),_0xd302('0xe'),_0xd302('0xe'),_0xd302('0xd'),'NO\x20ANSWER',_0xd302('0xd'),_0xd302('0xf'),_0xd302('0x10'),_0xd302('0xe'),_0xd302('0xe'),_0xd302('0xe')];config['redis']=_['defaults'](config[_0xd302('0x11')],{'host':_0xd302('0x12'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceCallReport(_0xdd88d4){this[_0xd302('0x13')]=_0xdd88d4[_0xd302('0x13')];this[_0xd302('0x14')]=_0xdd88d4[_0xd302('0x14')];this[_0xd302('0x15')]={};ami['on'](_0xd302('0x16'),this[_0xd302('0x17')]['bind'](this));ami['on'](_0xd302('0x18'),this[_0xd302('0x17')][_0xd302('0x19')](this));ami['on'](_0xd302('0x1a'),this[_0xd302('0x1b')][_0xd302('0x19')](this));ami['on']('newstate',this[_0xd302('0x1c')]['bind'](this));ami['on'](_0xd302('0x1d'),this['syncVarSet'][_0xd302('0x19')](this));ami['on'](_0xd302('0x1e'),this[_0xd302('0x1f')][_0xd302('0x19')](this));ami['on'](_0xd302('0x20'),this[_0xd302('0x21')][_0xd302('0x19')](this));ami['on'](_0xd302('0x22'),this[_0xd302('0x23')][_0xd302('0x19')](this));ami['on'](_0xd302('0x24'),this[_0xd302('0x25')][_0xd302('0x19')](this));ami['on'](_0xd302('0x26'),this['syncMusicOnHoldStart'][_0xd302('0x19')](this));ami['on'](_0xd302('0x27'),this[_0xd302('0x28')][_0xd302('0x19')](this));try{logger['info'](_0xd302('0x29'));ami['actionCoreShowChannels']();}catch(_0x7a3e57){logger['error'](_0xd302('0x2a'),util['inspect'](_0x7a3e57,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0xd302('0x2b')]=function(_0x6116bd){return _0x6116bd!==null&&!_['isUndefined'](_0x6116bd);};VoiceCallReport[_0xd302('0x2c')]['emit']=function(_0x355946,_0x4bf116,_0x326aa8){io['to'](_0x355946)[_0xd302('0x2d')](_0x4bf116,_0x326aa8);};VoiceCallReport['prototype'][_0xd302('0x21')]=function(_0x3b3800){try{if(this[_0xd302('0x2b')](_0x3b3800)){logger[_0xd302('0x2e')](_0xd302('0x2f'),_0x3b3800[_0xd302('0x30')],_0x3b3800[_0xd302('0x31')],_0x3b3800[_0xd302('0x32')]);logger[_0xd302('0x33')](_0xd302('0x34'),_0x3b3800[_0xd302('0x30')],util[_0xd302('0x35')](_0x3b3800,{'showHidden':![],'depth':null}));if(_0x3b3800['uniqueid']===_0x3b3800['linkedid']){if(!_['isUndefined'](this[_0xd302('0x13')][_0x3b3800[_0xd302('0x30')]])){_[_0xd302('0x36')](this[_0xd302('0x13')][_0x3b3800[_0xd302('0x30')]],_[_0xd302('0x37')](_0x3b3800,_[_0xd302('0x38')](this[_0xd302('0x13')][_0x3b3800[_0xd302('0x30')]])));}}if(_0x3b3800['context']===_0xd302('0x39')){var _0x37c3da=this[_0xd302('0x14')][_0x3b3800['channel']['split']('-')[0x0]];if(_0x37c3da){if(_0x3b3800[_0xd302('0x3a')]==_0xd302('0x3b')){_0x37c3da[_0xd302('0x3c')]=_0x3b3800[_0xd302('0x3d')];this[_0xd302('0x2d')](util[_0xd302('0x3e')](_0xd302('0x3f'),_0x37c3da[_0xd302('0x40')]),_0xd302('0x41'),{'id':_0x37c3da['id'],'destaccountcode':_0x37c3da[_0xd302('0x42')],'destconnectedlinenum':_0x3b3800[_0xd302('0x3d')]});}}}}}catch(_0xe3a6){logger[_0xd302('0x43')](_0xd302('0x44'),_0x3b3800[_0xd302('0x30')],util[_0xd302('0x35')](_0xe3a6,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xd302('0x1b')]=function(_0x191b24){try{if(this[_0xd302('0x2b')](_0x191b24)){logger[_0xd302('0x33')]('[%s][voiceCallReport][newchannel]\x20event:',_0x191b24[_0xd302('0x30')],util['inspect'](_0x191b24,{'showHidden':![],'depth':null}));if(this[_0xd302('0x13')][_0x191b24[_0xd302('0x30')]]){return;}if(_0x191b24['channel']===_0xd302('0x45')){return;}if(_0x191b24['uniqueid']!==_0x191b24[_0xd302('0x46')]&&!this['blindTransfers'][_0x191b24[_0xd302('0x46')]]){return;}logger['info']('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x191b24['uniqueid'],_0x191b24[_0xd302('0x47')],_0x191b24[_0xd302('0x3a')]);this['channels'][_0x191b24[_0xd302('0x30')]]=new Channel();this['channels'][_0x191b24['uniqueid']]['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xd302('0x13')][_0x191b24['uniqueid']]['disposition']=dispositions[_[_0xd302('0x48')](_0x191b24[_0xd302('0x49')])];_[_0xd302('0x36')](this['channels'][_0x191b24['uniqueid']],_[_0xd302('0x37')](_0x191b24,_['keys'](this[_0xd302('0x13')][_0x191b24[_0xd302('0x30')]])));if(_0x191b24[_0xd302('0x47')]===_0xd302('0x39')){var _0x1903fc=this['agents'][_0x191b24['channel'][_0xd302('0x4a')]('-')[0x0]];if(_0x1903fc&&typeof _0x1903fc['destconnectedlinenum']===_0xd302('0x4b')){_0x1903fc[_0xd302('0x3c')]=_0x191b24['exten'];logger[_0xd302('0x33')](_0xd302('0x4c'),_0x191b24[_0xd302('0x30')],util[_0xd302('0x35')]({'id':_0x1903fc['id'],'destaccountcode':_0x1903fc[_0xd302('0x42')],'destconnectedlinenum':_0x191b24[_0xd302('0x3a')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xd302('0x3e')](_0xd302('0x3f'),_0x1903fc['name']),_0xd302('0x41'),{'id':_0x1903fc['id'],'destaccountcode':_0x1903fc['accountcode'],'destconnectedlinenum':_0x191b24['exten']});}}}}catch(_0x39dde6){logger[_0xd302('0x43')](_0xd302('0x4d'),_0x191b24[_0xd302('0x30')],util[_0xd302('0x35')](_0x39dde6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd302('0x2c')][_0xd302('0x17')]=function(_0x3e0fce){try{if(this[_0xd302('0x2b')](_0x3e0fce)){logger[_0xd302('0x33')](_0xd302('0x4e'),_0x3e0fce[_0xd302('0x30')],util[_0xd302('0x35')](_0x3e0fce,{'showHidden':![],'depth':null}));if(_0x3e0fce[_0xd302('0x4f')]===_0xd302('0x45')||_0x3e0fce[_0xd302('0x3a')]==='h')return;if(_0x3e0fce['uniqueid']===_0x3e0fce[_0xd302('0x46')]||this[_0xd302('0x15')][_0x3e0fce['linkedid']]){_0x3e0fce[_0xd302('0x50')]=_0x3e0fce[_0xd302('0x50')]?_0x3e0fce['application'][_0xd302('0x51')]():undefined;_0x3e0fce[_0xd302('0x52')]=_0x3e0fce[_0xd302('0x53')]||_0x3e0fce[_0xd302('0x52')];if(_0x3e0fce[_0xd302('0x53')]&&!_0x3e0fce['appdata'][_0xd302('0x54')](_0xd302('0x55'))&&_0x3e0fce['application']!==_0xd302('0x56')){_0x3e0fce['applicationdata']=_0x3e0fce[_0xd302('0x52')][_0xd302('0x51')]();}logger[_0xd302('0x2e')](_0xd302('0x57'),_0x3e0fce[_0xd302('0x30')],_0x3e0fce['application'],_0x3e0fce[_0xd302('0x52')]);if(_[_0xd302('0x58')](this[_0xd302('0x13')][_0x3e0fce[_0xd302('0x30')]])){this['channels'][_0x3e0fce[_0xd302('0x30')]]=new Channel();this['channels'][_0x3e0fce[_0xd302('0x30')]][_0xd302('0x59')]=_0x3e0fce[_0xd302('0x5a')]?moment()[_0xd302('0x5b')](moment[_0xd302('0x5a')](_0x3e0fce[_0xd302('0x5a')])[_0xd302('0x5c')](),_0xd302('0x5c'))[_0xd302('0x3e')](_0xd302('0x5d')):moment()[_0xd302('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x3e0fce[_0xd302('0x30')]]['disposition']=_0xd302('0xd');}_['merge'](this[_0xd302('0x13')][_0x3e0fce[_0xd302('0x30')]],_['pick'](_0x3e0fce,_[_0xd302('0x38')](this['channels'][_0x3e0fce[_0xd302('0x30')]])));if(_[_0xd302('0x5e')](applications,_0x3e0fce[_0xd302('0x50')])){this[_0xd302('0x13')][_0x3e0fce['uniqueid']][_0xd302('0x5f')]=_0x3e0fce['application'];this['channels'][_0x3e0fce[_0xd302('0x30')]][_0xd302('0x60')]=_0x3e0fce[_0xd302('0x52')];if(_0x3e0fce['application']===_0xd302('0x8')&&_[_0xd302('0x54')](_0x3e0fce[_0xd302('0x52')]['toLowerCase'](),_0xd302('0x61'))){var _0xe41ada=_0x3e0fce[_0xd302('0x52')][_0xd302('0x4a')]('=');var _0x3b9e66=_0xe41ada[0x0][_0xd302('0x51')]()['match'](/cdr\((.*)\)/);if(_0x3b9e66){if(_0x3b9e66[0x1]==='type'&&!_[_0xd302('0x62')](this[_0xd302('0x13')][_0x3e0fce['uniqueid']][_0x3b9e66[0x1]]))return;this[_0xd302('0x13')][_0x3e0fce[_0xd302('0x30')]][_0x3b9e66[0x1]]=_0xe41ada[0x1];}}else if(_0x3e0fce['application']==='queue'){this['channels'][_0x3e0fce[_0xd302('0x30')]][_0xd302('0x56')]=_0x3e0fce['applicationdata'][_0xd302('0x4a')](',')[0x0];}}}}}catch(_0x560b5b){logger['error'](_0xd302('0x63'),_0x3e0fce['uniqueid'],util[_0xd302('0x35')](_0x560b5b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd302('0x2c')]['syncNewState']=function(_0x3ba872){try{if(this[_0xd302('0x2b')](_0x3ba872)){logger['info']('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x3ba872[_0xd302('0x30')],_0x3ba872[_0xd302('0x46')],_0x3ba872['calleridname'],_0x3ba872[_0xd302('0x32')]);logger[_0xd302('0x33')](_0xd302('0x64'),_0x3ba872[_0xd302('0x30')],util[_0xd302('0x35')](_0x3ba872,{'showHidden':![],'depth':null}));if(_0x3ba872[_0xd302('0x49')]!=='6')return;var _0x348e61=this['agents'][_0x3ba872['channel'][_0xd302('0x4a')]('-')[0x0]];if(_0x3ba872[_0xd302('0x30')]!==_0x3ba872['linkedid']){var _0x856bd=moment();if(this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]]){if(!this['channels'][_0x3ba872[_0xd302('0x46')]][_0xd302('0x65')]){this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]][_0xd302('0x65')]=!![];this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]][_0xd302('0x66')]=_0x856bd['format']('YYYY-MM-DD\x20HH:mm:ss');if(this['channels'][_0x3ba872[_0xd302('0x46')]][_0xd302('0x59')]){this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]][_0xd302('0x67')]=_0x856bd[_0xd302('0x68')](this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]][_0xd302('0x59')],_0xd302('0x5c'));}}this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]]['linkedid']=_0x3ba872[_0xd302('0x30')];if(_0x3ba872[_0xd302('0x32')]!=='xcally-motion-preview'){this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]][_0xd302('0x3d')]=_0x3ba872[_0xd302('0x32')];}this['channels'][_0x3ba872['linkedid']][_0xd302('0x69')]=_0x3ba872[_0xd302('0x31')];this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]]['destinationchannel']=_0x3ba872[_0xd302('0x4f')];this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]][_0xd302('0x6a')]=dispositions[_['toNumber'](_0x3ba872[_0xd302('0x49')])];if(_0x348e61){this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]]['UserId']=_0x348e61['id'];this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]][_0xd302('0x6b')]=_0x348e61[_0xd302('0x40')];}}if(this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]]){if(!this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]][_0xd302('0x65')]){this[_0xd302('0x13')][_0x3ba872['uniqueid']][_0xd302('0x65')]=!![];this['channels'][_0x3ba872[_0xd302('0x30')]][_0xd302('0x66')]=_0x856bd[_0xd302('0x3e')](_0xd302('0x5d'));if(this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]][_0xd302('0x59')]){this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]]['holdtime']=_0x856bd[_0xd302('0x68')](this['channels'][_0x3ba872[_0xd302('0x30')]][_0xd302('0x59')],_0xd302('0x5c'));}}if(_0x3ba872[_0xd302('0x32')]!==_0xd302('0x3b')){this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]][_0xd302('0x3d')]=_0x3ba872['calleridnum'];}this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]]['connectedlinename']=_0x3ba872['calleridname'];this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]][_0xd302('0x6c')]=_0x3ba872[_0xd302('0x4f')];this['channels'][_0x3ba872[_0xd302('0x30')]][_0xd302('0x6a')]=dispositions[_['toNumber'](_0x3ba872[_0xd302('0x49')])];}}else{if(this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]]){if(_0x348e61){this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]]['UserId']=_0x348e61['id'];this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]][_0xd302('0x6b')]=_0x348e61[_0xd302('0x40')];}}}if(_0x3ba872[_0xd302('0x47')]==='from-sip'){if(_0x348e61){_0x348e61[_0xd302('0x3c')]=_0x3ba872[_0xd302('0x3a')];var _0x298dc0,_0xffd238;if(this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]]){_0x298dc0=this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]]['routealias'];_0xffd238=this[_0xd302('0x13')][_0x3ba872[_0xd302('0x30')]]['queue'];}else if(this[_0xd302('0x13')][_0x3ba872[_0xd302('0x46')]]){_0x298dc0=this['channels'][_0x3ba872[_0xd302('0x46')]][_0xd302('0x6d')];_0xffd238=this['channels'][_0x3ba872[_0xd302('0x46')]][_0xd302('0x56')];}_0x348e61['queue']=_0xffd238;_0x348e61[_0xd302('0x6d')]=_0x298dc0;var _0x13bd4f={'id':_0x348e61['id'],'name':_0x348e61['name'],'agentconnected':!![],'destaccountcode':_0x348e61[_0xd302('0x42')],'destconnectedlinenum':_0x3ba872['exten'],'queue':_0xffd238||undefined,'routealias':_0x298dc0,'uniqueid':_0x3ba872['linkedid']};logger[_0xd302('0x33')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x3ba872['uniqueid'],util[_0xd302('0x35')](_0x13bd4f,{'showHidden':![],'depth':null}));this[_0xd302('0x2d')](util[_0xd302('0x3e')](_0xd302('0x3f'),_0x348e61['name']),'user:agentconnect',_0x13bd4f);}}}}catch(_0x569162){logger[_0xd302('0x43')](_0xd302('0x6e'),_0x3ba872[_0xd302('0x30')],util[_0xd302('0x35')](_0x569162,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd302('0x2c')]['syncMixMonitorFilename']=function(_0x1f8f90,_0x1b21d4){try{if(this[_0xd302('0x13')][_0x1f8f90]){logger['info']('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x1f8f90,_0x1b21d4);this[_0xd302('0x13')][_0x1f8f90]['monitor']=!![];if(_[_0xd302('0x6f')](_0x1b21d4,_0xd302('0x70'))){_0x1b21d4=_0x1b21d4['replace'](_0xd302('0x70'),_0xd302('0x71'));}this[_0xd302('0x13')][_0x1f8f90][_0xd302('0x72')]=_0x1b21d4;var _0x938067=_[_0xd302('0x73')](this[_0xd302('0x13')][_0x1f8f90][_0xd302('0x74')],{'filename':_0x1b21d4});if(_['isNil'](_0x938067)){this['channels'][_0x1f8f90][_0xd302('0x74')][_0xd302('0x75')]({'filename':_0x1b21d4,'createdAt':moment()[_0xd302('0x3e')](_0xd302('0x5d')),'mixmonitorid':'','status':_0xd302('0x76')});}}}catch(_0x2fb791){logger[_0xd302('0x43')]('[%s][voiceCallReport][mixMonitorFilename]',_0x1f8f90,util[_0xd302('0x35')](_0x2fb791,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd302('0x2c')][_0xd302('0x77')]=function(_0x2742c4){try{if(this['isNotNull'](_0x2742c4)){logger[_0xd302('0x33')](_0xd302('0x78'),_0x2742c4[_0xd302('0x30')],util[_0xd302('0x35')](_0x2742c4,{'showHidden':![],'depth':null}));if(this[_0xd302('0x13')][_0x2742c4[_0xd302('0x30')]]&&_0x2742c4[_0xd302('0x4f')]!=_0xd302('0x45')){if(this['isNotNull'](_0x2742c4['variable'])){if(this[_0xd302('0x2b')](_0x2742c4[_0xd302('0x79')]['mixmonitor_filename'])){logger[_0xd302('0x2e')](_0xd302('0x7a'),_0x2742c4[_0xd302('0x30')],_0x2742c4[_0xd302('0x7b')]);this[_0xd302('0x7c')](_0x2742c4[_0xd302('0x30')],_0x2742c4[_0xd302('0x7b')]);}else if(this[_0xd302('0x2b')](_0x2742c4[_0xd302('0x79')][_0xd302('0x7d')])){logger[_0xd302('0x2e')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x2742c4[_0xd302('0x30')],_0x2742c4[_0xd302('0x7b')]);this['channels'][_0x2742c4[_0xd302('0x30')]][_0xd302('0x32')]=_0x2742c4['value'];}else if(this['isNotNull'](_0x2742c4[_0xd302('0x79')]['xmd-callerid'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x2742c4[_0xd302('0x30')],_0x2742c4[_0xd302('0x7b')]);this[_0xd302('0x13')][_0x2742c4[_0xd302('0x30')]][_0xd302('0x7e')]=_0x2742c4[_0xd302('0x7b')];}else if(this[_0xd302('0x2b')](_0x2742c4[_0xd302('0x79')][_0xd302('0x7f')])){logger[_0xd302('0x2e')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x2742c4[_0xd302('0x30')],_0x2742c4[_0xd302('0x7b')]);this[_0xd302('0x13')][_0x2742c4[_0xd302('0x30')]][_0xd302('0x80')]=_0x2742c4['value'];}else if(this[_0xd302('0x2b')](_0x2742c4[_0xd302('0x79')][_0xd302('0x81')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x2742c4[_0xd302('0x30')],_0x2742c4[_0xd302('0x7b')][_0xd302('0x4a')](',')[0x0]);this[_0xd302('0x13')][_0x2742c4[_0xd302('0x30')]][_0xd302('0x56')]=_0x2742c4[_0xd302('0x7b')][_0xd302('0x4a')](',')[0x0];}else if(this[_0xd302('0x2b')](_0x2742c4['variable'][_0xd302('0x82')])){logger[_0xd302('0x2e')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x2742c4[_0xd302('0x30')],_0x2742c4[_0xd302('0x7b')]);this[_0xd302('0x13')][_0x2742c4[_0xd302('0x30')]][_0xd302('0x83')]=_0x2742c4[_0xd302('0x7b')];}else if(this[_0xd302('0x2b')](_0x2742c4['variable'][_0xd302('0x84')])){logger[_0xd302('0x2e')](_0xd302('0x85'),_0x2742c4['uniqueid'],_0x2742c4['value']);this['channels'][_0x2742c4[_0xd302('0x30')]]['destination']=_0x2742c4['value'];}else if(this['isNotNull'](_0x2742c4[_0xd302('0x79')][_0xd302('0x86')])){logger[_0xd302('0x2e')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x2742c4['uniqueid'],_0x2742c4[_0xd302('0x7b')]);this['channels'][_0x2742c4[_0xd302('0x30')]][_0xd302('0x87')]=_0x2742c4['value'];}else if(this['isNotNull'](_0x2742c4['variable'][_0xd302('0x88')])){logger[_0xd302('0x2e')](_0xd302('0x89'),_0x2742c4['uniqueid'],_0x2742c4[_0xd302('0x7b')]);this[_0xd302('0x13')][_0x2742c4[_0xd302('0x30')]][_0xd302('0x56')]=_0x2742c4['value'];}else if(this[_0xd302('0x2b')](_0x2742c4[_0xd302('0x79')]['sipcallid'])){logger[_0xd302('0x2e')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x2742c4[_0xd302('0x30')],_0x2742c4[_0xd302('0x7b')]);this['channels'][_0x2742c4[_0xd302('0x30')]][_0xd302('0x8a')]=_0x2742c4['value'];}}}else if(this[_0xd302('0x2b')](_0x2742c4[_0xd302('0x79')]['mixmonitor_filename'])){if(_0x2742c4['value']){var _0x18d17a=path['parse'](_0x2742c4[_0xd302('0x7b')])[_0xd302('0x40')];logger[_0xd302('0x2e')](_0xd302('0x7a'),_0x18d17a,_0x2742c4[_0xd302('0x7b')]);this[_0xd302('0x7c')](_0x18d17a,_0x2742c4[_0xd302('0x7b')]);}}else if(this['channels'][_0x2742c4[_0xd302('0x46')]]){if(this[_0xd302('0x2b')](_0x2742c4[_0xd302('0x79')])){if(this['isNotNull'](_0x2742c4[_0xd302('0x79')][_0xd302('0x8b')])){logger['info'](_0xd302('0x8c'),_0x2742c4['linkedid'],_0x2742c4[_0xd302('0x7b')]);this[_0xd302('0x13')][_0x2742c4[_0xd302('0x46')]][_0xd302('0x8d')]=_0x2742c4['value'];}}}}}catch(_0x3a894f){logger[_0xd302('0x43')](_0xd302('0x8e'),_0x2742c4[_0xd302('0x30')],util[_0xd302('0x35')](_0x3a894f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd302('0x2c')][_0xd302('0x1f')]=function(_0x5d081f){try{if(this[_0xd302('0x2b')](_0x5d081f)){logger[_0xd302('0x33')]('[%s][voiceCallReport][hangup]\x20event:',_0x5d081f[_0xd302('0x30')],util[_0xd302('0x35')](_0x5d081f,{'showHidden':![],'depth':null}));if(this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]]){if(this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x46')]]){this[_0xd302('0x13')][this['blindTransfers'][_0x5d081f[_0xd302('0x46')]][_0xd302('0x46')]]['uniqueid']=_0x5d081f[_0xd302('0x30')];this['channels'][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x46')]][_0xd302('0x65')]=this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x65')];this[_0xd302('0x13')][this['blindTransfers'][_0x5d081f[_0xd302('0x46')]][_0xd302('0x46')]]['answertime']=this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x66')];this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x46')]][_0xd302('0x6c')]=this['channels'][this['blindTransfers'][_0x5d081f[_0xd302('0x46')]][_0xd302('0x46')]][_0xd302('0x4f')];this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x46')]]['disposition']=this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]]['disposition'];this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]]=this['channels'][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x46')]];delete this['channels'][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]]['linkedid']];}else if(this[_0xd302('0x13')][this['blindTransfers'][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]]){this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]]['uniqueid']=[this[_0xd302('0x13')][this['blindTransfers'][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]][_0xd302('0x46')],this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]]['linkedid']=this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]][_0xd302('0x30')]][0x0];this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]][_0xd302('0x65')]=this[_0xd302('0x13')][_0x5d081f['uniqueid']]['answered'];this['channels'][this[_0xd302('0x15')][_0x5d081f['linkedid']][_0xd302('0x30')]][_0xd302('0x66')]=this['channels'][_0x5d081f[_0xd302('0x30')]][_0xd302('0x66')];this[_0xd302('0x13')][this['blindTransfers'][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]][_0xd302('0x6c')]=this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]][_0xd302('0x4f')];this[_0xd302('0x13')][this[_0xd302('0x15')][_0x5d081f[_0xd302('0x46')]]['uniqueid']][_0xd302('0x6a')]=this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x6a')];this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]]=this['channels'][this['blindTransfers'][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]];delete this[_0xd302('0x13')][this['blindTransfers'][_0x5d081f[_0xd302('0x46')]][_0xd302('0x30')]];}}if(this[_0xd302('0x13')][_0x5d081f['uniqueid']]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0x5d081f[_0xd302('0x30')],_0x5d081f[_0xd302('0x8f')]);var _0x479d76=moment();this[_0xd302('0x13')][_0x5d081f['uniqueid']][_0xd302('0x90')]=_0x479d76[_0xd302('0x3e')](_0xd302('0x5d'));this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x5a')]=_0x479d76['diff'](this['channels'][_0x5d081f[_0xd302('0x30')]]['starttime'],_0xd302('0x5c'));if(this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x65')]){this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x91')]=_0x479d76[_0xd302('0x68')](this[_0xd302('0x13')][_0x5d081f['uniqueid']]['answertime'],'seconds');this['channels'][_0x5d081f[_0xd302('0x30')]]['holdtime']=this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x5a')]-this[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]]['billableseconds'];}if(_0x5d081f['context']==='from-sip'){if(this[_0xd302('0x14')][_0x5d081f[_0xd302('0x4f')][_0xd302('0x4a')]('-')[0x0]]){this[_0xd302('0x14')][_0x5d081f[_0xd302('0x4f')][_0xd302('0x4a')]('-')[0x0]]=_['omit'](this[_0xd302('0x14')][_0x5d081f[_0xd302('0x4f')][_0xd302('0x4a')]('-')[0x0]],[_0xd302('0x3c')]);logger[_0xd302('0x33')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x5d081f['uniqueid'],util[_0xd302('0x35')]({'id':this[_0xd302('0x14')][_0x5d081f[_0xd302('0x4f')][_0xd302('0x4a')]('-')[0x0]]['id'],'destaccountcode':this[_0xd302('0x14')][_0x5d081f['channel'][_0xd302('0x4a')]('-')[0x0]][_0xd302('0x42')]},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xd302('0x3f'),this[_0xd302('0x14')][_0x5d081f['channel'][_0xd302('0x4a')]('-')[0x0]][_0xd302('0x40')]),_0xd302('0x92'),{'id':this[_0xd302('0x14')][_0x5d081f['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0xd302('0x14')][_0x5d081f[_0xd302('0x4f')]['split']('-')[0x0]][_0xd302('0x42')]});for(var _0x1d5714=0x0;_0x1d5714<Object[_0xd302('0x38')](this['agents'])[_0xd302('0x93')];_0x1d5714++){var _0x1874ed=Object[_0xd302('0x38')](this['agents'])[_0x1d5714];var _0x5a4190=this[_0xd302('0x14')][_0x1874ed];if(_0x5a4190[_0xd302('0x42')]===Number(this['channels'][_0x5d081f[_0xd302('0x30')]][_0xd302('0x3d')])){this['emit'](util['format'](_0xd302('0x3f'),_0x5a4190[_0xd302('0x40')]),_0xd302('0x92'),{'id':_0x5a4190['id'],'destaccountcode':_0x5a4190['accountcode'],'transfer':this['channels'][_0x5d081f[_0xd302('0x30')]]['transferType']});break;}}}}var _0x325334=this;Promise[_0xd302('0x94')]()['then'](function(){var _0x5dd09f=_0x325334[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]];if(typeof _0x5dd09f['transferType']===_0xd302('0x4b')){return;}if(_0x5dd09f['transferToInternal']===!![]){return;}if(_[_0xd302('0x95')](_0x5dd09f[_0xd302('0x74')])){return;}return RpcSetting[_0xd302('0x96')]()[_0xd302('0x97')](function(_0x47e031){if(!_0x47e031['stopRecordingOnTransfer'])return;return Promise[_0xd302('0x94')]()[_0xd302('0x97')](function(){return ami['Action']({'action':_0xd302('0x98'),'channel':_0x5dd09f[_0xd302('0x4f')]})['catch'](function(){});})[_0xd302('0x97')](function(){return ami[_0xd302('0x99')]({'action':'StopMixMonitor','channel':_0x5dd09f[_0xd302('0x6c')]})[_0xd302('0x9a')](function(){})[_0xd302('0x9b')](function(){var _0x329e48=_0x325334[_0xd302('0x14')][_0x5dd09f['destinationchannel'][_0xd302('0x4a')]('-')[0x0]];if(!_0x329e48)return;io[_0xd302('0x2d')](_0xd302('0x9c'),{'agentId':_0x329e48['id'],'uniqueid':_0x5dd09f[_0xd302('0x30')]});});});});})['then'](function(){if(_0x5d081f[_0xd302('0x9d')]===_0xd302('0x9e')){_0x325334['blindTransfers'][_0x5d081f[_0xd302('0x30')]]=_0x5d081f;}else{if(_0x325334[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]]&&_0x325334[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x80')]===_0xd302('0x9f')&&_0x325334[_0xd302('0x15')][_0x5d081f['uniqueid']]){_0x325334['channels'][_0x5d081f[_0xd302('0x30')]][_0xd302('0x30')]=[_0x325334['channels'][_0x5d081f['uniqueid']][_0xd302('0x46')],_0x325334[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]][_0xd302('0x46')]=_0x325334['channels'][_0x5d081f[_0xd302('0x30')]]['uniqueid']][0x0];delete _0x325334['blindTransfers'][_0x5d081f[_0xd302('0x30')]];}}logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x5d081f[_0xd302('0x30')],util['inspect'](_0x325334[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]],{'showHidden':![],'depth':null}));ami[_0xd302('0x2d')](_0xd302('0xa0'),_0x325334[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]]);delete _0x325334[_0xd302('0x13')][_0x5d081f[_0xd302('0x30')]];});}}}catch(_0x6a0066){logger[_0xd302('0x43')](_0xd302('0xa1'),_0x5d081f[_0xd302('0x30')],util[_0xd302('0x35')](_0x6a0066,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xd302('0x23')]=function(_0x55a771){try{if(this[_0xd302('0x2b')](_0x55a771)){logger[_0xd302('0x2e')](_0xd302('0xa2'),_0x55a771['uniqueid'],_0x55a771[_0xd302('0xa3')],_0x55a771['transfertargetcalleridnum']);logger['debug'](_0xd302('0xa4'),_0x55a771['uniqueid'],util['inspect'](_0x55a771,{'showHidden':![],'depth':null}));var _0x26f78c;if(this[_0xd302('0x13')][_0x55a771[_0xd302('0xa5')]]){this['channels'][_0x55a771[_0xd302('0xa5')]][_0xd302('0xa6')]=_0x55a771['origtransferercalleridnum'];this[_0xd302('0x13')][_0x55a771[_0xd302('0xa5')]][_0xd302('0xa7')]=_0x55a771[_0xd302('0xa8')];if(this[_0xd302('0x13')][_0x55a771['secondtransfereruniqueid']]){_0x26f78c=this['channels'][_0x55a771['secondtransfereruniqueid']];this[_0xd302('0x13')][_0x55a771[_0xd302('0xa9')]]=this[_0xd302('0x13')][_0x55a771[_0xd302('0xa5')]];this[_0xd302('0x13')][_0x55a771[_0xd302('0xa5')]]=_0x26f78c;}this['channels'][_0x55a771[_0xd302('0xa9')]][_0xd302('0xaa')]=_0xd302('0xab');}else if(this[_0xd302('0x13')][_0x55a771[_0xd302('0xac')]]){this[_0xd302('0x13')][_0x55a771[_0xd302('0xac')]]['transfercalleridnum']=_0x55a771[_0xd302('0xa3')];this[_0xd302('0x13')][_0x55a771[_0xd302('0xac')]]['transferconnectedlinenum']=_0x55a771[_0xd302('0xa8')];if(this[_0xd302('0x13')][_0x55a771[_0xd302('0xad')]]){_0x26f78c=this[_0xd302('0x13')][_0x55a771[_0xd302('0xad')]];this[_0xd302('0x13')][_0x55a771[_0xd302('0xad')]]=this[_0xd302('0x13')][_0x55a771[_0xd302('0xac')]];this[_0xd302('0x13')][_0x55a771['transfertargetuniqueid']]=_0x26f78c;}this[_0xd302('0x13')][_0x55a771[_0xd302('0xac')]][_0xd302('0xaa')]=_0xd302('0xab');}if((this[_0xd302('0x13')][_0x55a771[_0xd302('0xad')]]||this[_0xd302('0x13')][_0x55a771['origtransfererlinkedid']])&&this['channels'][_0x55a771['secondtransfereruniqueid']]){var _0x474da6=_[_0xd302('0xae')]([this[_0xd302('0x13')][_0x55a771['origtransfereruniqueid']],this['channels'][_0x55a771[_0xd302('0xaf')]],this[_0xd302('0x13')][_0x55a771[_0xd302('0xa9')]]],function(_0x36a78d){return _0x36a78d&&_0x36a78d[_0xd302('0x80')]===_0xd302('0x9f')&&_0x36a78d[_0xd302('0xb0')];});if(_0x474da6){if(this[_0xd302('0x13')][_0x55a771[_0xd302('0xad')]])this['channels'][_0x55a771[_0xd302('0xad')]]['transferType']='ATTENDED';if(this[_0xd302('0x13')][_0x55a771[_0xd302('0xaf')]])this[_0xd302('0x13')][_0x55a771[_0xd302('0xaf')]][_0xd302('0xaa')]=_0xd302('0xab');this[_0xd302('0x13')][_0x55a771[_0xd302('0xa9')]][_0xd302('0xaa')]=_0xd302('0xab');}else{if(this[_0xd302('0x13')][_0x55a771[_0xd302('0xa5')]]){this[_0xd302('0x13')][_0x55a771[_0xd302('0xa9')]]['transferToInternal']=!![];}if(this[_0xd302('0x13')][_0x55a771[_0xd302('0xac')]]){this[_0xd302('0x13')][_0x55a771[_0xd302('0xac')]][_0xd302('0xb1')]=!![];}}}}}catch(_0x165030){logger[_0xd302('0x43')](_0xd302('0xb2'),_0x55a771[_0xd302('0x30')],util[_0xd302('0x35')](_0x165030,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd302('0x2c')]['syncBlindTransfer']=function(_0x2d35bc){try{if(this[_0xd302('0x2b')](_0x2d35bc)){logger['info'](_0xd302('0xb3'),_0x2d35bc[_0xd302('0x30')],_0x2d35bc[_0xd302('0xb4')],_0x2d35bc['extension']);logger['debug'](_0xd302('0xb5'),_0x2d35bc['uniqueid'],util['inspect'](_0x2d35bc,{'showHidden':![],'depth':null}));if(this[_0xd302('0x13')][_0x2d35bc[_0xd302('0xa5')]]){this['channels'][_0x2d35bc['transfereeuniqueid']][_0xd302('0xa6')]=_0x2d35bc[_0xd302('0xb4')];this[_0xd302('0x13')][_0x2d35bc[_0xd302('0xa5')]][_0xd302('0xa7')]=_0x2d35bc[_0xd302('0xb6')];this[_0xd302('0x13')][_0x2d35bc['transfereeuniqueid']][_0xd302('0xaa')]=_0xd302('0xb7');this[_0xd302('0x1f')]({'event':_0xd302('0x9e'),'uniqueid':_0x2d35bc[_0xd302('0xa5')],'linkedid':_0x2d35bc[_0xd302('0xb8')],'context':_0x2d35bc[_0xd302('0x47')],'channel':_0x2d35bc[_0xd302('0xb9')]});}else{this[_0xd302('0x13')][_0x2d35bc['transfereruniqueid']][_0xd302('0xaa')]=_0xd302('0xb7');this['syncHangup']({'event':_0xd302('0x9e'),'uniqueid':_0x2d35bc[_0xd302('0xb8')],'linkedid':_0x2d35bc[_0xd302('0xa5')],'context':_0x2d35bc['context'],'channel':_0x2d35bc['transfererchannel']});}}}catch(_0x2f8f01){logger['error'](_0xd302('0xba'),_0x2d35bc['uniqueid'],util[_0xd302('0x35')](_0x2f8f01,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd302('0x2c')][_0xd302('0xbb')]=function(_0x46e563){try{if(this[_0xd302('0x2b')](_0x46e563)){logger[_0xd302('0x33')](_0xd302('0xbc'),_0x46e563['uniqueid'],util['inspect'](_0x46e563,{'showHidden':![],'depth':null}));if(this['channels'][_0x46e563[_0xd302('0x30')]]){if(!_['isNil'](this[_0xd302('0x13')][_0x46e563[_0xd302('0x30')]][_0xd302('0x66')])){this['channels'][_0x46e563[_0xd302('0x30')]][_0xd302('0xbd')]=moment()[_0xd302('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xd302('0x2e')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x46e563[_0xd302('0x30')],this[_0xd302('0x13')][_0x46e563[_0xd302('0x30')]]['mohstarttime']);}}}}catch(_0x4c435){logger[_0xd302('0x43')](_0xd302('0xbe'),_0x46e563[_0xd302('0x30')],util[_0xd302('0x35')](_0x4c435,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xd302('0x28')]=function(_0x16cbf8){try{if(this[_0xd302('0x2b')](_0x16cbf8)){logger[_0xd302('0x33')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x16cbf8[_0xd302('0x30')],util[_0xd302('0x35')](_0x16cbf8,{'showHidden':![],'depth':null}));if(this[_0xd302('0x13')][_0x16cbf8['uniqueid']]){if(!_[_0xd302('0x62')](this[_0xd302('0x13')][_0x16cbf8[_0xd302('0x30')]][_0xd302('0xbd')])){this[_0xd302('0x13')][_0x16cbf8[_0xd302('0x30')]]['mohtime']+=moment()[_0xd302('0xbf')](0x0)[_0xd302('0x68')](this[_0xd302('0x13')][_0x16cbf8[_0xd302('0x30')]][_0xd302('0xbd')],_0xd302('0x5c'));logger['info']('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x16cbf8['uniqueid'],this[_0xd302('0x13')][_0x16cbf8[_0xd302('0x30')]][_0xd302('0xc0')]);delete this['channels'][_0x16cbf8[_0xd302('0x30')]][_0xd302('0xbd')];}}}}catch(_0x3c90d1){logger[_0xd302('0x43')]('[%s][voiceCallReport][musiconholdstop]',_0x16cbf8[_0xd302('0x30')],util['inspect'](_0x3c90d1,{'showHidden':![],'depth':null}));}};module[_0xd302('0xc1')]=VoiceCallReport;
\ No newline at end of file
index 94b0152..df0df38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['called','channel','substring','lastIndexOf','omit','event','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','applications','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','YYYY-MM-DD\x20HH:mm:ss','lastevent','info','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','value','variable','variables','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','voice:outbound','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answered','holdtime','billableseconds','sumHoldTime','sumBillable','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','appdata','applicationdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceDialReport][newexten]','exports','moment','util','../../../config/environment','ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet','isNotNull','isUndefined','prototype','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','uniqueid','merge'];(function(_0x59d7d6,_0x3e6403){var _0x558c55=function(_0x39c777){while(--_0x39c777){_0x59d7d6['push'](_0x59d7d6['shift']());}};_0x558c55(++_0x3e6403);}(_0xda19,0xd5));var _0x9da1=function(_0x191af8,_0x13244d){_0x191af8=_0x191af8-0x0;var _0x3373ee=_0xda19[_0x191af8];return _0x3373ee;};'use strict';var _=require('lodash');var moment=require(_0x9da1('0x0'));var util=require(_0x9da1('0x1'));var Redis=require('ioredis');var config=require(_0x9da1('0x2'));var logger=require('../../../config/logger')(_0x9da1('0x3'));var ami=require('../ami');config[_0x9da1('0x4')]=_[_0x9da1('0x5')](config[_0x9da1('0x4')],{'host':_0x9da1('0x6'),'port':0x18eb});var io=require(_0x9da1('0x7'))(new Redis(config[_0x9da1('0x4')]));function VoiceDialReport(_0x23e4f7){this[_0x9da1('0x8')]=_0x23e4f7[_0x9da1('0x9')];this[_0x9da1('0xa')]=_0x23e4f7['outbound'];this['applications']={};this['variables']={};ami['on'](_0x9da1('0xb'),this['syncDialBegin'][_0x9da1('0xc')](this));ami['on'](_0x9da1('0xd'),this[_0x9da1('0xe')][_0x9da1('0xc')](this));ami['on'](_0x9da1('0xf'),this[_0x9da1('0x10')][_0x9da1('0xc')](this));ami['on']('hangup',this['syncHangup'][_0x9da1('0xc')](this));}VoiceDialReport['prototype'][_0x9da1('0x11')]=function(_0x1d93f8){return _0x1d93f8!==null&&!_[_0x9da1('0x12')](_0x1d93f8);};VoiceDialReport[_0x9da1('0x13')]['emit']=function(_0x2837e3,_0x535a13,_0x4d17e1){io['to'](_0x2837e3)[_0x9da1('0x14')](_0x535a13,_0x4d17e1);};VoiceDialReport['prototype'][_0x9da1('0x15')]=function(_0x43c093){try{if(this[_0x9da1('0x11')](_0x43c093)){logger[_0x9da1('0x16')](_0x9da1('0x17'),_0x43c093['uniqueid'],util[_0x9da1('0x18')](_0x43c093,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]]){_[_0x9da1('0x1a')](this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x9da1('0x1b'),'interface':_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1d')](0x0,_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1e')]('-')),'membername':_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1d')](_0x43c093['channel'][_0x9da1('0x1e')]('/')+0x1,_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1e')]('-'))},_[_0x9da1('0x1f')](_0x43c093,[_0x9da1('0x20'),'privilege']));logger['info'](_0x9da1('0x21'),_0x43c093[_0x9da1('0x19')],this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]][_0x9da1('0x22')],this[_0x9da1('0x8')][_0x43c093['uniqueid']][_0x9da1('0x23')]);logger[_0x9da1('0x16')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x43c093[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x43c093[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));if(this[_0x9da1('0x24')][_0x43c093['uniqueid']])_[_0x9da1('0x1a')](this[_0x9da1('0x8')][_0x43c093['uniqueid']],this['applications'][_0x43c093[_0x9da1('0x19')]]);this[_0x9da1('0x14')]('voice:outbound',_0x9da1('0x25'),this['channels'][_0x43c093['uniqueid']]);logger['debug'](_0x9da1('0x26'),_0x43c093[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami['emit'](_0x9da1('0x27'),this['channels'][_0x43c093[_0x9da1('0x19')]]);}}}catch(_0x235ced){logger['error'](_0x9da1('0x28'),_0x43c093[_0x9da1('0x19')],util['inspect'](_0x235ced,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0xe')]=function(_0x1802e0){try{if(this[_0x9da1('0x11')](_0x1802e0)){logger['debug']('[%s][voiceDialReport][dialend]\x20event:',_0x1802e0[_0x9da1('0x19')],util[_0x9da1('0x18')](_0x1802e0,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]]){this[_0x9da1('0x8')][_0x1802e0['uniqueid']][_0x9da1('0x29')]=_0x1802e0[_0x9da1('0x29')];if(_0x1802e0[_0x9da1('0x29')]===_0x9da1('0x2a')){this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]]['connectedlinenum']=_0x1802e0[_0x9da1('0x2b')];this['channels'][_0x1802e0['uniqueid']][_0x9da1('0x2c')]=_0x1802e0['connectedlinename'];this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]][_0x9da1('0x2d')]=moment()[_0x9da1('0x2e')](_0x9da1('0x2f'));this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]][_0x9da1('0x30')]='connect';logger[_0x9da1('0x31')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x1802e0[_0x9da1('0x19')],_0x1802e0['channel']['substring'](_0x1802e0[_0x9da1('0x1c')]['lastIndexOf']('/')+0x1,_0x1802e0[_0x9da1('0x1c')][_0x9da1('0x1e')]('-')));logger['debug'](_0x9da1('0x32'),_0x1802e0[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x1802e0['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x9da1('0x14')]('custom:dialconnect',this[_0x9da1('0x8')][_0x1802e0['uniqueid']]);}logger[_0x9da1('0x16')](_0x9da1('0x33'),_0x1802e0['uniqueid'],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound','voice_outbound_channel:save',this[_0x9da1('0x8')][_0x1802e0['uniqueid']]);}}}catch(_0x5b215c){logger[_0x9da1('0x34')](_0x9da1('0x35'),_0x1802e0[_0x9da1('0x19')],util['inspect'](_0x5b215c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x10')]=function(_0x25851b){try{if(this[_0x9da1('0x11')](_0x25851b)){logger[_0x9da1('0x16')](_0x9da1('0x36'),_0x25851b[_0x9da1('0x19')],util['inspect'](_0x25851b,{'showHidden':![],'depth':null}));this[_0x9da1('0x37')](_0x25851b['uniqueid'],_[_0x9da1('0x38')](_0x25851b['variable'])[0x0],_0x25851b[_0x9da1('0x39')]);if(this[_0x9da1('0x11')](_0x25851b['variable'])&&this[_0x9da1('0x11')](_0x25851b[_0x9da1('0x3a')]['outboundrouteid'])){if(_[_0x9da1('0x12')](this['channels'][_0x25851b[_0x9da1('0x19')]])){this[_0x9da1('0x8')][_0x25851b['uniqueid']]={'routeId':_0x25851b['value'],'variables':this[_0x9da1('0x3b')][_0x25851b[_0x9da1('0x19')]],'motionChannel':_0x9da1('0x3c')};logger[_0x9da1('0x31')](_0x9da1('0x3d'),_0x25851b[_0x9da1('0x19')],_0x25851b[_0x9da1('0x3a')][_0x9da1('0x3e')],_['keys'](_0x25851b[_0x9da1('0x3a')])[0x0],_0x25851b[_0x9da1('0x39')]);logger[_0x9da1('0x16')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x25851b[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x25851b['uniqueid']],{'showHidden':![],'depth':null}));this[_0x9da1('0x14')](_0x9da1('0x3f'),_0x9da1('0x25'),this['channels'][_0x25851b[_0x9da1('0x19')]]);}}}}catch(_0x4d3909){logger['error'](_0x9da1('0x40'),_0x25851b[_0x9da1('0x19')],util['inspect'](_0x4d3909,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x37')]=function(_0x47d685,_0x31a2b6,_0x36f2e2){var _0x1984f7=[_0x9da1('0x41'),_0x9da1('0x42'),_0x9da1('0x43'),_0x9da1('0x44'),_0x9da1('0x45'),_0x9da1('0x46'),'rtpaudioqosrtt',_0x9da1('0x47'),_0x9da1('0x48'),_0x9da1('0x49'),_0x9da1('0x4a'),'bridgepvtcallid','membercalls',_0x9da1('0x4b'),_0x9da1('0x4c'),_0x9da1('0x4d'),_0x9da1('0x22'),_0x9da1('0x4e'),_0x9da1('0x4f')];if(!_[_0x9da1('0x50')](_0x31a2b6)&&!_[_0x9da1('0x51')](_0x1984f7,_0x31a2b6)){if(_[_0x9da1('0x12')](this[_0x9da1('0x3b')][_0x47d685])){this[_0x9da1('0x3b')][_0x47d685]={};}this[_0x9da1('0x3b')][_0x47d685][_0x31a2b6]=_0x36f2e2;}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x52')]=function(_0x4c99e8){try{if(this[_0x9da1('0x11')](_0x4c99e8)){logger[_0x9da1('0x16')]('[%s][voiceDialReport][hangup]\x20event:',_0x4c99e8[_0x9da1('0x19')],util['inspect'](_0x4c99e8,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]){logger[_0x9da1('0x31')](_0x9da1('0x53'),_0x4c99e8[_0x9da1('0x19')],_0x4c99e8[_0x9da1('0x54')]);this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x55')]=moment()[_0x9da1('0x2e')](_0x9da1('0x2f'));this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x56')]=moment(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x55')])[_0x9da1('0x57')](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x58')],_0x9da1('0x59'));this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x30')]=_0x9da1('0x5a');this['outbound'][_0x9da1('0x5b')]+=0x1;if(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x2d')]){this[_0x9da1('0xa')][_0x9da1('0x5c')]+=0x1;this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x5d')]=moment(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x2d')])['diff'](this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x58')],_0x9da1('0x59'));this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x5e')]=moment(this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]['endtime'])[_0x9da1('0x57')](this['channels'][_0x4c99e8['uniqueid']]['answertime'],_0x9da1('0x59'));this['outbound'][_0x9da1('0x5f')]+=this['channels'][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x5d')]||0x0;this['outbound'][_0x9da1('0x60')]+=this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x5e')];}this[_0x9da1('0xa')]['sumDuration']+=this['channels'][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x56')];logger[_0x9da1('0x16')](_0x9da1('0x61'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceDialReport',this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);logger[_0x9da1('0x16')](_0x9da1('0x62'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami[_0x9da1('0x14')]('custom:dialend',this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);logger[_0x9da1('0x16')](_0x9da1('0x63'),_0x4c99e8[_0x9da1('0x19')],util['inspect'](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));this[_0x9da1('0x14')](_0x9da1('0x3f'),_0x9da1('0x64'),this[_0x9da1('0xa')]);logger['info'](_0x9da1('0x65'),JSON['stringify'](this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]));logger[_0x9da1('0x16')](_0x9da1('0x66'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x4c99e8['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x9da1('0x3f'),_0x9da1('0x67'),this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);delete this['channels'][_0x4c99e8['uniqueid']];}else if(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x68')]]){this[_0x9da1('0x8')][_0x4c99e8['linkedid']]['uniqueid']=this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x68')]][_0x9da1('0x69')];}if(this['variables'][_0x4c99e8['uniqueid']]){delete this[_0x9da1('0x3b')][_0x4c99e8[_0x9da1('0x19')]];}}}catch(_0x27c9a0){logger[_0x9da1('0x34')](_0x9da1('0x6a'),_0x4c99e8['uniqueid'],util[_0x9da1('0x18')](_0x27c9a0,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x6b')]=function(_0x1f0369){try{if(this['isNotNull'](_0x1f0369)){logger[_0x9da1('0x16')](_0x9da1('0x6c'),_0x1f0369[_0x9da1('0x19')],util['inspect'](_0x1f0369,{'showHidden':![],'depth':null}));if(_0x1f0369[_0x9da1('0x6d')][_0x9da1('0x6e')]()===_0x9da1('0x6f')){_0x1f0369['applicationdata']=(_0x1f0369[_0x9da1('0x70')]||_0x1f0369[_0x9da1('0x71')])['toLowerCase']();if(_[_0x9da1('0x72')](_0x1f0369['applicationdata'],_0x9da1('0x73'))){if(_['isUndefined'](this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]]))this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]]={};logger[_0x9da1('0x31')](_0x9da1('0x74'),_0x1f0369[_0x9da1('0x19')],_0x1f0369[_0x9da1('0x6d')],_0x1f0369[_0x9da1('0x71')]);var _0x457b45=_0x1f0369[_0x9da1('0x71')][_0x9da1('0x75')]('=');var _0x21119f=_0x457b45[0x0]['match'](/cdr\((.*)\)/);if(_0x21119f)this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]][_0x21119f[0x1]]=_0x457b45[0x1];}}}}catch(_0x27cec6){logger[_0x9da1('0x34')](_0x9da1('0x76'),_0x1f0369['uniqueid'],util[_0x9da1('0x18')](_0x27cec6,{'showHidden':![],'depth':null}));}};module[_0x9da1('0x77')]=VoiceDialReport;
\ No newline at end of file
+var _0x4819=['applications','dialbegin','bind','syncDialEnd','varset','syncVarSet','hangup','syncHangup','prototype','isUndefined','emit','syncDialBegin','debug','uniqueid','inspect','called','channel','substring','lastIndexOf','omit','privilege','info','membername','interface','merge','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','dialstatus','connectedlinenum','connectedlinename','answertime','format','YYYY-MM-DD\x20HH:mm:ss','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialend]','isNotNull','addVariable','value','variable','outboundrouteid','variables','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberpenalty','memberrealtime','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','duration','endtime','diff','starttime','seconds','total','answered','holdtime','billableseconds','sumDuration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','syncNewExten','set','applicationdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound'];(function(_0x4658ce,_0x58d277){var _0x317aca=function(_0x4546d6){while(--_0x4546d6){_0x4658ce['push'](_0x4658ce['shift']());}};_0x317aca(++_0x58d277);}(_0x4819,0xcd));var _0x9481=function(_0x3ae24a,_0x7d32f9){_0x3ae24a=_0x3ae24a-0x0;var _0x18690f=_0x4819[_0x3ae24a];return _0x18690f;};'use strict';var _=require('lodash');var moment=require(_0x9481('0x0'));var util=require(_0x9481('0x1'));var Redis=require(_0x9481('0x2'));var config=require(_0x9481('0x3'));var logger=require(_0x9481('0x4'))(_0x9481('0x5'));var ami=require(_0x9481('0x6'));config[_0x9481('0x7')]=_[_0x9481('0x8')](config[_0x9481('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x9481('0x9'))(new Redis(config['redis']));function VoiceDialReport(_0x54cc78){this[_0x9481('0xa')]=_0x54cc78[_0x9481('0xb')];this[_0x9481('0xc')]=_0x54cc78[_0x9481('0xc')];this[_0x9481('0xd')]={};this['variables']={};ami['on'](_0x9481('0xe'),this['syncDialBegin'][_0x9481('0xf')](this));ami['on']('dialend',this[_0x9481('0x10')][_0x9481('0xf')](this));ami['on'](_0x9481('0x11'),this[_0x9481('0x12')][_0x9481('0xf')](this));ami['on'](_0x9481('0x13'),this[_0x9481('0x14')][_0x9481('0xf')](this));}VoiceDialReport[_0x9481('0x15')]['isNotNull']=function(_0x5aac02){return _0x5aac02!==null&&!_[_0x9481('0x16')](_0x5aac02);};VoiceDialReport[_0x9481('0x15')][_0x9481('0x17')]=function(_0x28fcb6,_0x3d23c2,_0xc7a0b5){io['to'](_0x28fcb6)[_0x9481('0x17')](_0x3d23c2,_0xc7a0b5);};VoiceDialReport['prototype'][_0x9481('0x18')]=function(_0x7a7ee){try{if(this['isNotNull'](_0x7a7ee)){logger[_0x9481('0x19')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x7a7ee[_0x9481('0x1a')],util[_0x9481('0x1b')](_0x7a7ee,{'showHidden':![],'depth':null}));if(this[_0x9481('0xa')][_0x7a7ee[_0x9481('0x1a')]]){_['merge'](this['channels'][_0x7a7ee[_0x9481('0x1a')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x9481('0x1c'),'interface':_0x7a7ee[_0x9481('0x1d')][_0x9481('0x1e')](0x0,_0x7a7ee[_0x9481('0x1d')][_0x9481('0x1f')]('-')),'membername':_0x7a7ee[_0x9481('0x1d')]['substring'](_0x7a7ee[_0x9481('0x1d')][_0x9481('0x1f')]('/')+0x1,_0x7a7ee[_0x9481('0x1d')][_0x9481('0x1f')]('-'))},_[_0x9481('0x20')](_0x7a7ee,['event',_0x9481('0x21')]));logger[_0x9481('0x22')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x7a7ee[_0x9481('0x1a')],this[_0x9481('0xa')][_0x7a7ee[_0x9481('0x1a')]][_0x9481('0x23')],this[_0x9481('0xa')][_0x7a7ee['uniqueid']][_0x9481('0x24')]);logger[_0x9481('0x19')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x7a7ee['uniqueid'],util[_0x9481('0x1b')](this[_0x9481('0xa')][_0x7a7ee['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0x9481('0xd')][_0x7a7ee[_0x9481('0x1a')]])_[_0x9481('0x25')](this[_0x9481('0xa')][_0x7a7ee['uniqueid']],this[_0x9481('0xd')][_0x7a7ee[_0x9481('0x1a')]]);this[_0x9481('0x17')]('voice:outbound',_0x9481('0x26'),this['channels'][_0x7a7ee[_0x9481('0x1a')]]);logger[_0x9481('0x19')](_0x9481('0x27'),_0x7a7ee[_0x9481('0x1a')],util[_0x9481('0x1b')](this['channels'][_0x7a7ee[_0x9481('0x1a')]],{'showHidden':![],'depth':null}));ami[_0x9481('0x17')](_0x9481('0x28'),this['channels'][_0x7a7ee['uniqueid']]);}}}catch(_0x1addc8){logger[_0x9481('0x29')](_0x9481('0x2a'),_0x7a7ee[_0x9481('0x1a')],util['inspect'](_0x1addc8,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncDialEnd']=function(_0x29e6b6){try{if(this['isNotNull'](_0x29e6b6)){logger[_0x9481('0x19')]('[%s][voiceDialReport][dialend]\x20event:',_0x29e6b6[_0x9481('0x1a')],util[_0x9481('0x1b')](_0x29e6b6,{'showHidden':![],'depth':null}));if(this[_0x9481('0xa')][_0x29e6b6[_0x9481('0x1a')]]){this[_0x9481('0xa')][_0x29e6b6['uniqueid']][_0x9481('0x2b')]=_0x29e6b6[_0x9481('0x2b')];if(_0x29e6b6[_0x9481('0x2b')]==='ANSWER'){this[_0x9481('0xa')][_0x29e6b6[_0x9481('0x1a')]][_0x9481('0x2c')]=_0x29e6b6[_0x9481('0x2c')];this[_0x9481('0xa')][_0x29e6b6[_0x9481('0x1a')]]['connectedlinename']=_0x29e6b6[_0x9481('0x2d')];this['channels'][_0x29e6b6[_0x9481('0x1a')]][_0x9481('0x2e')]=moment()[_0x9481('0x2f')](_0x9481('0x30'));this[_0x9481('0xa')][_0x29e6b6[_0x9481('0x1a')]]['lastevent']=_0x9481('0x31');logger[_0x9481('0x22')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x29e6b6['uniqueid'],_0x29e6b6[_0x9481('0x1d')]['substring'](_0x29e6b6[_0x9481('0x1d')][_0x9481('0x1f')]('/')+0x1,_0x29e6b6[_0x9481('0x1d')][_0x9481('0x1f')]('-')));logger['debug'](_0x9481('0x32'),_0x29e6b6['uniqueid'],util[_0x9481('0x1b')](this['channels'][_0x29e6b6[_0x9481('0x1a')]],{'showHidden':![],'depth':null}));ami['emit'](_0x9481('0x33'),this[_0x9481('0xa')][_0x29e6b6[_0x9481('0x1a')]]);}logger[_0x9481('0x19')](_0x9481('0x34'),_0x29e6b6[_0x9481('0x1a')],util[_0x9481('0x1b')](this['channels'][_0x29e6b6[_0x9481('0x1a')]],{'showHidden':![],'depth':null}));this[_0x9481('0x17')](_0x9481('0x35'),_0x9481('0x26'),this[_0x9481('0xa')][_0x29e6b6[_0x9481('0x1a')]]);}}}catch(_0x2e4241){logger['error'](_0x9481('0x36'),_0x29e6b6[_0x9481('0x1a')],util['inspect'](_0x2e4241,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9481('0x15')][_0x9481('0x12')]=function(_0x1eee80){try{if(this[_0x9481('0x37')](_0x1eee80)){logger[_0x9481('0x19')]('[%s][voiceDialReport][varset]\x20event:',_0x1eee80[_0x9481('0x1a')],util['inspect'](_0x1eee80,{'showHidden':![],'depth':null}));this[_0x9481('0x38')](_0x1eee80[_0x9481('0x1a')],_['keys'](_0x1eee80['variable'])[0x0],_0x1eee80[_0x9481('0x39')]);if(this[_0x9481('0x37')](_0x1eee80[_0x9481('0x3a')])&&this['isNotNull'](_0x1eee80[_0x9481('0x3a')][_0x9481('0x3b')])){if(_['isUndefined'](this['channels'][_0x1eee80[_0x9481('0x1a')]])){this['channels'][_0x1eee80[_0x9481('0x1a')]]={'routeId':_0x1eee80[_0x9481('0x39')],'variables':this[_0x9481('0x3c')][_0x1eee80[_0x9481('0x1a')]],'motionChannel':_0x9481('0x3d')};logger['info'](_0x9481('0x3e'),_0x1eee80[_0x9481('0x1a')],_0x1eee80['variable'][_0x9481('0x3b')],_[_0x9481('0x3f')](_0x1eee80[_0x9481('0x3a')])[0x0],_0x1eee80[_0x9481('0x39')]);logger[_0x9481('0x19')](_0x9481('0x40'),_0x1eee80[_0x9481('0x1a')],util[_0x9481('0x1b')](this[_0x9481('0xa')][_0x1eee80['uniqueid']],{'showHidden':![],'depth':null}));this[_0x9481('0x17')]('voice:outbound','voice_outbound_channel:save',this[_0x9481('0xa')][_0x1eee80['uniqueid']]);}}}}catch(_0x2b174b){logger[_0x9481('0x29')]('[%s][voiceDialReport][varset]',_0x1eee80[_0x9481('0x1a')],util[_0x9481('0x1b')](_0x2b174b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9481('0x15')][_0x9481('0x38')]=function(_0x190e5a,_0x4257df,_0x4c5e54){var _0x5a2893=[_0x9481('0x41'),_0x9481('0x42'),_0x9481('0x43'),_0x9481('0x44'),_0x9481('0x45'),_0x9481('0x46'),_0x9481('0x47'),_0x9481('0x48'),'sipcallid',_0x9481('0x49'),_0x9481('0x4a'),_0x9481('0x4b'),_0x9481('0x4c'),_0x9481('0x4d'),'memberinterface','memberlastcall',_0x9481('0x23'),_0x9481('0x4e'),_0x9481('0x4f')];if(!_['isNil'](_0x4257df)&&!_['includes'](_0x5a2893,_0x4257df)){if(_['isUndefined'](this['variables'][_0x190e5a])){this['variables'][_0x190e5a]={};}this['variables'][_0x190e5a][_0x4257df]=_0x4c5e54;}};VoiceDialReport['prototype'][_0x9481('0x14')]=function(_0x136bd8){try{if(this['isNotNull'](_0x136bd8)){logger[_0x9481('0x19')]('[%s][voiceDialReport][hangup]\x20event:',_0x136bd8[_0x9481('0x1a')],util[_0x9481('0x1b')](_0x136bd8,{'showHidden':![],'depth':null}));if(this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]]){logger[_0x9481('0x22')](_0x9481('0x50'),_0x136bd8[_0x9481('0x1a')],_0x136bd8['cause-txt']);this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]]['endtime']=moment()[_0x9481('0x2f')](_0x9481('0x30'));this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]][_0x9481('0x51')]=moment(this['channels'][_0x136bd8[_0x9481('0x1a')]][_0x9481('0x52')])[_0x9481('0x53')](this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]][_0x9481('0x54')],_0x9481('0x55'));this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]]['lastevent']='complete';this['outbound'][_0x9481('0x56')]+=0x1;if(this[_0x9481('0xa')][_0x136bd8['uniqueid']][_0x9481('0x2e')]){this[_0x9481('0xc')][_0x9481('0x57')]+=0x1;this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]][_0x9481('0x58')]=moment(this['channels'][_0x136bd8['uniqueid']][_0x9481('0x2e')])[_0x9481('0x53')](this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]][_0x9481('0x54')],_0x9481('0x55'));this['channels'][_0x136bd8['uniqueid']][_0x9481('0x59')]=moment(this['channels'][_0x136bd8[_0x9481('0x1a')]]['endtime'])[_0x9481('0x53')](this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]]['answertime'],_0x9481('0x55'));this[_0x9481('0xc')]['sumHoldTime']+=this['channels'][_0x136bd8['uniqueid']]['holdtime']||0x0;this[_0x9481('0xc')]['sumBillable']+=this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]][_0x9481('0x59')];}this['outbound'][_0x9481('0x5a')]+=this['channels'][_0x136bd8[_0x9481('0x1a')]][_0x9481('0x51')];logger[_0x9481('0x19')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x136bd8[_0x9481('0x1a')],util[_0x9481('0x1b')](this['channels'][_0x136bd8[_0x9481('0x1a')]],{'showHidden':![],'depth':null}));ami[_0x9481('0x17')](_0x9481('0x5b'),this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]]);logger[_0x9481('0x19')](_0x9481('0x5c'),_0x136bd8[_0x9481('0x1a')],util[_0x9481('0x1b')](this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]],{'showHidden':![],'depth':null}));ami[_0x9481('0x17')](_0x9481('0x5d'),this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]]);logger[_0x9481('0x19')](_0x9481('0x5e'),_0x136bd8['uniqueid'],util[_0x9481('0x1b')](this['channels'][_0x136bd8['uniqueid']],{'showHidden':![],'depth':null}));this[_0x9481('0x17')]('voice:outbound','voice_outbound:save',this['outbound']);logger[_0x9481('0x22')](_0x9481('0x5f'),JSON[_0x9481('0x60')](this[_0x9481('0xa')][_0x136bd8['uniqueid']]));logger[_0x9481('0x19')](_0x9481('0x61'),_0x136bd8[_0x9481('0x1a')],util[_0x9481('0x1b')](this['channels'][_0x136bd8['uniqueid']],{'showHidden':![],'depth':null}));this[_0x9481('0x17')](_0x9481('0x35'),_0x9481('0x62'),this[_0x9481('0xa')][_0x136bd8[_0x9481('0x1a')]]);delete this['channels'][_0x136bd8[_0x9481('0x1a')]];}else if(this[_0x9481('0xa')][_0x136bd8[_0x9481('0x63')]]){this[_0x9481('0xa')][_0x136bd8[_0x9481('0x63')]][_0x9481('0x1a')]=this[_0x9481('0xa')][_0x136bd8[_0x9481('0x63')]][_0x9481('0x64')];}if(this[_0x9481('0x3c')][_0x136bd8[_0x9481('0x1a')]]){delete this[_0x9481('0x3c')][_0x136bd8[_0x9481('0x1a')]];}}}catch(_0x20b26f){logger[_0x9481('0x29')]('[%s][voiceDialReport][hangup]',_0x136bd8[_0x9481('0x1a')],util[_0x9481('0x1b')](_0x20b26f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9481('0x15')][_0x9481('0x65')]=function(_0x1b5c97){try{if(this[_0x9481('0x37')](_0x1b5c97)){logger[_0x9481('0x19')]('[%s][voiceDialReport][newexten]\x20event:',_0x1b5c97[_0x9481('0x1a')],util[_0x9481('0x1b')](_0x1b5c97,{'showHidden':![],'depth':null}));if(_0x1b5c97['application']['toLowerCase']()===_0x9481('0x66')){_0x1b5c97['applicationdata']=(_0x1b5c97['appdata']||_0x1b5c97[_0x9481('0x67')])['toLowerCase']();if(_[_0x9481('0x68')](_0x1b5c97[_0x9481('0x67')],_0x9481('0x69'))){if(_[_0x9481('0x16')](this['applications'][_0x1b5c97[_0x9481('0x1a')]]))this['applications'][_0x1b5c97[_0x9481('0x1a')]]={};logger[_0x9481('0x22')](_0x9481('0x6a'),_0x1b5c97['uniqueid'],_0x1b5c97['application'],_0x1b5c97['applicationdata']);var _0x3d7e5c=_0x1b5c97['applicationdata']['split']('=');var _0xe43ae6=_0x3d7e5c[0x0][_0x9481('0x6b')](/cdr\((.*)\)/);if(_0xe43ae6)this[_0x9481('0xd')][_0x1b5c97['uniqueid']][_0xe43ae6[0x1]]=_0x3d7e5c[0x1];}}}}catch(_0x905ee6){logger[_0x9481('0x29')]('[%s][voiceDialReport][newexten]',_0x1b5c97[_0x9481('0x1a')],util[_0x9481('0x1b')](_0x905ee6,{'showHidden':![],'depth':null}));}};module[_0x9481('0x6c')]=VoiceDialReport;
\ No newline at end of file
index 8da0885..6b80010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8111=['voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','queue','voice_queue_channel:remove','voice_queue_presence:remove','emitInboundVoiceQueueSummary','type','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','name','voice_queue:save','isUndefined','queues','[voiceQueueReport][queues]','then','actionid','isRunning','[voiceQueueReport][queuesummary]','createQueueSummaryReport','summaryEvent','createReport','realtime','queuestatus','inbound','handleInboundQueueSummaryReport','outbound','custom:queuesummary','statusRequests','completeEvent','isNotNull','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','keys','push','syncQueueCallerAbandon','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','queuecallerabandonAt','ABANDONED','info','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][queuecallerleave]','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','queuecallerexitAt','transfer','startsWith','toLowerCase','local/','linkedid','add','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','addVariable','variable','value','CONTINUE','TIMEOUT','lastevent','timeout','custom:timeout','varset','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberlastcall','membername','memberrealtime','isNil','includes','handleHangup','sumHoldTime','seconds','length','sumDuration','total','answered','milliseconds','diff','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','assign','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','[%s][voiceQueueReport][handleHangup]','syncHangup','[%s][voiceQueueReport][hangup]','cause-txt','cause','transferid','[%s][voiceQueueReport][syncHangup]\x20No\x20available\x20data\x20in\x20queueReports\x20structure:\x20clear\x20action\x20in\x20variablea\x20and\x20channels\x20structures\x20needed','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][attendedtransfer]','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','appdata','applicationdata','split','match','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','localhost','prototype','enqueue','tail','finally','sequence','queueReports','queueChannels','voiceQueues','campaigns','summary','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuemember','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','hangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','unlockRR','queuecallerexit','queuecallercomplete','clearZombieChannels','channels','switch','Action','status','channel','catch','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','agents','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s'];(function(_0x221673,_0x137ac5){var _0x2ef0b3=function(_0x502045){while(--_0x502045){_0x221673['push'](_0x221673['shift']());}};_0x2ef0b3(++_0x137ac5);}(_0x8111,0x19c));var _0x1811=function(_0x20e752,_0x32a9f1){_0x20e752=_0x20e752-0x0;var _0x2dd17a=_0x8111[_0x20e752];return _0x2dd17a;};'use strict';var _=require(_0x1811('0x0'));var moment=require(_0x1811('0x1'));var util=require(_0x1811('0x2'));var Redis=require(_0x1811('0x3'));var config=require(_0x1811('0x4'));var logger=require(_0x1811('0x5'))(_0x1811('0x6'));var ami=require(_0x1811('0x7'));var QueueReport=require(_0x1811('0x8'));var VoiceQueueSummary=require('../model/voiceQueueSummary');config[_0x1811('0x9')]=_['defaults'](config[_0x1811('0x9')],{'host':_0x1811('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1811('0x9')]));var Sequence=function(){};Sequence[_0x1811('0xb')][_0x1811('0xc')]=function(_0x1cc79c){this[_0x1811('0xd')]=this[_0x1811('0xd')]?this[_0x1811('0xd')][_0x1811('0xe')](_0x1cc79c):_0x1cc79c();};function VoiceQueueReport(_0x25cb40){this[_0x1811('0xf')]=new Sequence();this[_0x1811('0x10')]={};this['realtime']=_0x25cb40;this['agents']=_0x25cb40['agents'];this['channels']=_0x25cb40[_0x1811('0x11')];this[_0x1811('0x12')]=_0x25cb40[_0x1811('0x12')];this[_0x1811('0x13')]=_0x25cb40[_0x1811('0x13')];this[_0x1811('0x14')]=initializeSummary();this[_0x1811('0x15')]={};ami['on'](_0x1811('0x16'),this[_0x1811('0x17')][_0x1811('0x18')](this));ami['on'](_0x1811('0x19'),this[_0x1811('0x1a')]['bind'](this));ami['on'](_0x1811('0x1b'),this['syncQueueMember'][_0x1811('0x18')](this));ami['on']('queuestatuscomplete',this[_0x1811('0x1c')][_0x1811('0x18')](this));ami['on'](_0x1811('0x1d'),this[_0x1811('0x1e')]['bind'](this));ami['on'](_0x1811('0x1f'),this['syncQueueCallerAbandon'][_0x1811('0x18')](this));ami['on'](_0x1811('0x20'),this[_0x1811('0x21')][_0x1811('0x18')](this));ami['on'](_0x1811('0x22'),this[_0x1811('0x23')][_0x1811('0x18')](this));ami['on'](_0x1811('0x24'),this[_0x1811('0x25')][_0x1811('0x18')](this));ami['on']('varset',this['syncVarSet'][_0x1811('0x18')](this));ami['on'](_0x1811('0x26'),this['syncHangup'][_0x1811('0x18')](this));ami['on'](_0x1811('0x27'),this[_0x1811('0x28')]['bind'](this));ami['on'](_0x1811('0x29'),this['syncMusicOnHoldStart'][_0x1811('0x18')](this));ami['on']('musiconholdstop',this[_0x1811('0x2a')][_0x1811('0x18')](this));ami['on'](_0x1811('0x2b'),this[_0x1811('0x2c')][_0x1811('0x18')](this));ami['on'](_0x1811('0x2d'),this[_0x1811('0x2e')]['bind'](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x20c962){if(!_[_0x1811('0x2f')](_0x20c962)){for(var _0x958e08 in _0x20c962){if(_0x20c962[_0x1811('0x30')](_0x958e08)){delete _0x20c962[_0x958e08];}}}}function clearCampaigns(_0x33efa5){if(!_[_0x1811('0x2f')](_0x33efa5)){for(var _0x5d5fe3 in _0x33efa5){if(_0x33efa5[_0x1811('0x30')](_0x5d5fe3)){_0x33efa5[_0x5d5fe3]['originated']=0x0;}}}}function clearVoiceQueues(_0x37e013){if(!_[_0x1811('0x2f')](_0x37e013)){for(var _0x68a060 in _0x37e013){if(_0x37e013[_0x1811('0x30')](_0x68a060)){_0x37e013[_0x68a060][_0x1811('0x31')]=0x0;_0x37e013[_0x68a060][_0x1811('0x32')]=0x0;_0x37e013[_0x68a060][_0x1811('0x33')]=0x0;_0x37e013[_0x68a060][_0x1811('0x34')]=0x0;_0x37e013[_0x68a060]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x13ee22){if(!_[_0x1811('0x2f')](_0x13ee22)){for(var _0x4cc7ca in _0x13ee22){if(_0x13ee22['hasOwnProperty'](_0x4cc7ca)){_0x13ee22[_0x4cc7ca][_0x1811('0x35')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x26cee0){return _0x26cee0[_0x1811('0x36')]||_0x26cee0['queuecallerabandon']||_0x26cee0[_0x1811('0x37')];}VoiceQueueReport[_0x1811('0xb')][_0x1811('0x38')]=function(){var _0x3367ff=this;for(var _0x44d4d4 in this[_0x1811('0x39')]){if(this[_0x1811('0x39')][_0x1811('0x30')](_0x44d4d4)&&!this[_0x1811('0x39')][_0x44d4d4][_0x1811('0x3a')]){this[_0x1811('0xf')][_0x1811('0xc')](function(){if(!_['isNil'](_0x3367ff[_0x1811('0x39')][_0x44d4d4])){return ami[_0x1811('0x3b')]({'action':_0x1811('0x3c'),'channel':_0x3367ff['channels'][_0x44d4d4][_0x1811('0x3d')]})[_0x1811('0x3e')](function(_0x46381d){if(_0x46381d['message']===_0x1811('0x3f')){setTimeout(function(){if(_0x3367ff['channels'][_0x44d4d4]){delete _0x3367ff[_0x1811('0x39')][_0x44d4d4];logger[_0x1811('0x40')](_0x1811('0x41'),_0x44d4d4,util[_0x1811('0x42')](_0x46381d,{'showHidden':![],'depth':null}));}if(_0x3367ff[_0x1811('0x10')][_0x44d4d4]){delete _0x3367ff['queueReports'][_0x44d4d4];logger[_0x1811('0x40')](_0x1811('0x43'),_0x44d4d4,util[_0x1811('0x42')](_0x46381d,{'showHidden':![],'depth':null}));}if(_0x3367ff[_0x1811('0x15')][_0x44d4d4]){delete _0x3367ff[_0x1811('0x15')][_0x44d4d4];logger[_0x1811('0x40')](_0x1811('0x44'),_0x44d4d4,util['inspect'](_0x46381d,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x1811('0xb')]['syncFullyBooted']=function(){logger[_0x1811('0x40')](_0x1811('0x45'));clearChannels(this[_0x1811('0x39')]);this['clearQueueReport'](this[_0x1811('0x10')]);clearAgentBooked(this[_0x1811('0x46')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x1811('0x13')]);this[_0x1811('0x14')]=initializeSummary();};VoiceQueueReport['prototype'][_0x1811('0x47')]=function(_0x42fcf2){var _0x25c36a=this;if(!_['isEmpty'](_0x42fcf2)){for(var _0x4e1e91 in _0x42fcf2){if(_0x42fcf2[_0x1811('0x30')](_0x4e1e91)){_0x25c36a[_0x1811('0x48')](_0x42fcf2[_0x4e1e91],_0x1811('0x49'));delete _0x42fcf2[_0x4e1e91];}}}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x4a')]=function(_0x1ed6c1,_0x455e70,_0x26c69e){io['to'](_0x1ed6c1)[_0x1811('0x4a')](_0x455e70,_0x26c69e);};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x4b')]=function(_0x25235a,_0x4e3a32){logger[_0x1811('0x4c')](_0x1811('0x4d')+_0x4e3a32+_0x1811('0x4e'),_0x25235a[_0x1811('0x4f')],util[_0x1811('0x42')](_0x25235a,{'showHidden':![],'depth':null}));this[_0x1811('0x4a')](util[_0x1811('0x50')](_0x1811('0x51'),_0x25235a['queue']),_0x1811('0x52'),_0x25235a);io[_0x1811('0x4a')](_0x1811('0x53'),_0x25235a);};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x48')]=function(_0x4561db,_0x19ce5b){logger[_0x1811('0x4c')](_0x1811('0x4d')+_0x19ce5b+_0x1811('0x54'),_0x4561db[_0x1811('0x4f')],util[_0x1811('0x42')](_0x4561db,{'showHidden':![],'depth':null}));if(_0x4561db[_0x1811('0x55')]===_0x1811('0x56')){return;}this['emit'](util[_0x1811('0x50')]('voice:queue:%s',_0x4561db[_0x1811('0x57')]),_0x1811('0x58'),_0x4561db);io['emit'](_0x1811('0x59'),_0x4561db);};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x5a')]=function(_0x30f0d7){if(_0x30f0d7[_0x1811('0x5b')]==='inbound'){logger[_0x1811('0x4c')](_0x1811('0x5c'),util[_0x1811('0x42')](_0x30f0d7,{'showHidden':![],'depth':null}));this[_0x1811('0x4a')](util[_0x1811('0x50')]('voice:queue:%s',_0x30f0d7[_0x1811('0x5d')]),_0x1811('0x5e'),_0x30f0d7);}};VoiceQueueReport['prototype']['isNotNull']=function(_0x4b8312){return _0x4b8312!==null&&!_[_0x1811('0x5f')](_0x4b8312);};VoiceQueueReport[_0x1811('0xb')]['loopQueueShow']=function(){var _0x41cf38=this;setInterval(function(){_0x41cf38[_0x1811('0x38')]();ami[_0x1811('0x3b')]({'action':_0x1811('0x60')})['catch'](function(_0x430b0c){logger[_0x1811('0x40')](_0x1811('0x61'),util['inspect'](_0x430b0c,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x1811('0xb')]['loopQueueSummary']=function(){var _0x3e2c2b=this;setInterval(function(){if(!_0x3e2c2b[_0x1811('0x14')]['isRunning']){return ami[_0x1811('0x3b')]({'action':_0x1811('0x16')})[_0x1811('0x62')](function(_0x17d8ef){_0x3e2c2b[_0x1811('0x14')]['id']=_0x17d8ef[_0x1811('0x63')];_0x3e2c2b[_0x1811('0x14')][_0x1811('0x64')]=!![];_0x3e2c2b[_0x1811('0x14')]['queuestatus'][_0x17d8ef[_0x1811('0x63')]]={};})[_0x1811('0x3e')](function(_0x1f0ecd){logger[_0x1811('0x40')](_0x1811('0x65'),util[_0x1811('0x42')](_0x1f0ecd,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x66')]=function(_0x2fb7b3,_0x35b270){var _0x27cb27;if(this[_0x1811('0x14')]&&this['summary'][_0x1811('0x60')]&&this['summary'][_0x1811('0x60')][_0x2fb7b3['name']]){_0x27cb27=this['summary'][_0x1811('0x60')][_0x2fb7b3['name']][_0x1811('0x67')];}var _0x24438a=new VoiceQueueSummary(_0x2fb7b3);return _0x24438a[_0x1811('0x68')](_0x35b270[_0x1811('0x46')],this[_0x1811('0x46')],_0x27cb27,this[_0x1811('0x69')]['channels']);};VoiceQueueReport[_0x1811('0xb')]['handleInboundQueueSummaryReport']=function(_0x1057b1,_0x46d0ee){var _0x3f5bec=this[_0x1811('0x66')](_0x1057b1,_0x46d0ee);var _0x948041=![];_0x948041=_0x3f5bec['compareToInboundQueue'](_0x1057b1);if(_0x948041){Object['assign'](_0x1057b1,_0x3f5bec);this[_0x1811('0x69')][_0x1811('0x12')][_0x1057b1[_0x1811('0x5d')]]=_0x1057b1;this[_0x1811('0x5a')](_0x3f5bec);}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x1c')]=function(_0x1bda53){var _0x322a54=null;var _0x33e90e=this[_0x1811('0x14')]['id'];if(this['summary'][_0x1811('0x6a')][_0x33e90e]){_0x322a54=this['summary']['queuestatus'][_0x33e90e][_0x1bda53[_0x1811('0x63')]];}if(!_0x322a54){this[_0x1811('0x14')]=initializeSummary();return;}var _0xbcb247=this[_0x1811('0x12')][_0x322a54[_0x1811('0x57')]];if(_0xbcb247['type']===_0x1811('0x6b')){this[_0x1811('0x6c')](_0xbcb247,_0x322a54);}else if(_0xbcb247[_0x1811('0x5b')]===_0x1811('0x6d')){var _0x1cd4a2=this[_0x1811('0x66')](_0xbcb247,_0x322a54);ami['emit'](_0x1811('0x6e'),_0x1cd4a2);}this['summary'][_0x1811('0x6f')]-=0x1;var _0x1c8c68=this[_0x1811('0x14')][_0x1811('0x6f')]>0x0?!![]:![];if(!_0x1c8c68){return this[_0x1811('0x1a')](this['summary'][_0x1811('0x70')]);}};VoiceQueueReport[_0x1811('0xb')]['syncQueueMember']=function(_0x2db91b){var _0x269f68=this['summary']['id'];if(this['summary']['queuestatus'][_0x269f68]&&this[_0x1811('0x14')][_0x1811('0x6a')][_0x269f68][_0x2db91b[_0x1811('0x63')]]){this[_0x1811('0x14')][_0x1811('0x6a')][_0x269f68][_0x2db91b[_0x1811('0x63')]][_0x1811('0x46')]['push'](_0x2db91b);}};VoiceQueueReport[_0x1811('0xb')]['syncQueueSummary']=function(_0xea174c){var _0x54bd0c=this;try{if(this['isNotNull'](_0xea174c)&&this[_0x1811('0x71')](_0xea174c[_0x1811('0x57')])){logger[_0x1811('0x4c')](_0x1811('0x72'),util[_0x1811('0x42')](_0xea174c,{'showHidden':![],'depth':null}));var _0x41bdf1=this[_0x1811('0x12')][_0xea174c[_0x1811('0x57')]];if(_0x41bdf1){logger[_0x1811('0x4c')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x41bdf1[_0x1811('0x5d')]);this['summary'][_0x1811('0x60')][_0x41bdf1[_0x1811('0x5d')]]={'summaryEvent':_0xea174c};this[_0x1811('0x14')]['statusRequests']+=0x1;return ami[_0x1811('0x3b')]({'action':_0x1811('0x6a'),'queue':_0x41bdf1[_0x1811('0x5d')]})[_0x1811('0x62')](function(_0x1e467b){if(!_0x54bd0c['summary'][_0x1811('0x6a')][_0xea174c['actionid']]){_0x54bd0c[_0x1811('0x14')][_0x1811('0x6a')][_0xea174c[_0x1811('0x63')]]={};}_0x54bd0c[_0x1811('0x14')][_0x1811('0x6a')][_0xea174c[_0x1811('0x63')]][_0x1e467b[_0x1811('0x63')]]={'queue':_0x41bdf1[_0x1811('0x5d')],'agents':[]};})[_0x1811('0x3e')](function(_0x1e4674){throw _0x1e4674;});}}}catch(_0x549cfd){logger['error'](_0x1811('0x65'),util[_0x1811('0x42')](_0x549cfd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')]['syncQueueSummaryComplete']=function(_0x322e5f){if(this[_0x1811('0x14')]['statusRequests']>0x0){this['summary'][_0x1811('0x70')]=_0x322e5f;return;}logger[_0x1811('0x4c')](_0x1811('0x73'),util[_0x1811('0x42')](_0x322e5f,{'showHidden':![],'depth':null}));this['summary']=initializeSummary();ami['emit'](_0x1811('0x74'),{});};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x1e')]=function(_0x1ee126){try{if(this[_0x1811('0x71')](_0x1ee126)){logger['debug'](_0x1811('0x75'),_0x1ee126[_0x1811('0x4f')],util['inspect'](_0x1ee126,{'showHidden':![],'depth':null}));if(_['isUndefined'](this['queueReports'][_0x1ee126['uniqueid']])){this['queueReports'][_0x1ee126[_0x1811('0x4f')]]=[];}if(_[_0x1811('0x5f')](this[_0x1811('0x39')][_0x1ee126[_0x1811('0x4f')]])){this[_0x1811('0x39')][_0x1ee126[_0x1811('0x4f')]]={};}var _0x36e845=new QueueReport();_0x36e845[_0x1811('0x57')]=_0x1ee126[_0x1811('0x57')];_0x36e845[_0x1811('0x5b')]=this[_0x1811('0x12')][_0x36e845[_0x1811('0x57')]]&&this['voiceQueues'][_0x36e845[_0x1811('0x57')]]['type']?this['voiceQueues'][_0x36e845['queue']][_0x1811('0x5b')]||'inbound':_0x1811('0x6b');_0x36e845[_0x1811('0x76')]=moment()['format'](_0x1811('0x77'));_0x36e845[_0x1811('0x78')]=_0x1ee126[_0x1811('0x78')];_0x36e845[_0x1811('0x79')]=_0x1ee126['count'];_0x36e845[_0x1811('0x4f')]=_0x1ee126['uniqueid'];_0x36e845[_0x1811('0x7a')]=this[_0x1811('0x39')][_0x1ee126[_0x1811('0x4f')]][_0x1811('0x7a')];logger['info']('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x36e845[_0x1811('0x57')],_0x36e845['type']);Object['assign'](_0x36e845,_['pick'](_0x1ee126,_[_0x1811('0x7b')](_0x36e845)));this['queueReports'][_0x1ee126[_0x1811('0x4f')]][_0x1811('0x7c')](_0x36e845);this[_0x1811('0x39')][_0x1ee126['uniqueid']]=_0x36e845;this[_0x1811('0x4b')](_0x36e845,'queuecallerjoin');}}catch(_0x595ead){logger[_0x1811('0x40')](_0x1811('0x75'),_0x1ee126[_0x1811('0x4f')],util['inspect'](_0x595ead,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x7d')]=function(_0x1eefb0){try{if(this[_0x1811('0x71')](_0x1eefb0)){logger[_0x1811('0x4c')](_0x1811('0x7e'),_0x1eefb0[_0x1811('0x4f')],util['inspect'](_0x1eefb0,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1eefb0[_0x1811('0x4f')]]){var _0x176bc1=_[_0x1811('0x7f')](this[_0x1811('0x10')][_0x1eefb0[_0x1811('0x4f')]]);_0x176bc1[_0x1811('0x37')]=![];_0x176bc1[_0x1811('0x80')]=null;_0x176bc1[_0x1811('0x81')]=_0x1eefb0[_0x1811('0x81')];_0x176bc1['originalposition']=_0x1eefb0['originalposition'];_0x176bc1[_0x1811('0x1f')]=!![];_0x176bc1[_0x1811('0x82')]=moment()[_0x1811('0x50')](_0x1811('0x77'));_0x176bc1[_0x1811('0x55')]=_0x1811('0x83');_0x176bc1['lastAssignedTo']=null;logger[_0x1811('0x84')](_0x1811('0x85'),_0x176bc1['queue'],_0x176bc1[_0x1811('0x5b')]);this[_0x1811('0x39')][_0x1eefb0[_0x1811('0x4f')]]=_0x176bc1;this[_0x1811('0x48')](_0x176bc1,_0x1811('0x1f'));}}}catch(_0x15ad77){logger['error']('[%s][voiceQueueReport][queuecallerabandon]',_0x1eefb0[_0x1811('0x4f')],util['inspect'](_0x15ad77,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x21')]=function(_0x2edb5f){try{if(this[_0x1811('0x71')](_0x2edb5f)){logger['debug']('[%s][voiceQueueReport][queuecallerleave]',_0x2edb5f['uniqueid'],util[_0x1811('0x42')](_0x2edb5f,{'showHidden':![],'depth':null}));if(this[_0x1811('0x10')][_0x2edb5f[_0x1811('0x4f')]]){var _0x1cb9b3=_[_0x1811('0x7f')](this[_0x1811('0x10')][_0x2edb5f[_0x1811('0x4f')]]);_0x1cb9b3[_0x1811('0x86')]=moment()[_0x1811('0x50')](_0x1811('0x77'));_0x1cb9b3[_0x1811('0x87')]=_0x2edb5f[_0x1811('0x87')];_0x1cb9b3['connectedlinename']=_0x2edb5f[_0x1811('0x88')];logger[_0x1811('0x84')](_0x1811('0x89'),_0x1cb9b3[_0x1811('0x57')],_0x1cb9b3[_0x1811('0x5b')],_0x2edb5f[_0x1811('0x87')],_0x2edb5f[_0x1811('0x88')]);this['channels'][_0x2edb5f[_0x1811('0x4f')]]=_0x1cb9b3;this[_0x1811('0x4b')](_0x1cb9b3,_0x1811('0x20'));}}}catch(_0xcbaabf){logger[_0x1811('0x40')](_0x1811('0x8a'),_0x2edb5f[_0x1811('0x4f')],util[_0x1811('0x42')](_0xcbaabf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x25')]=function(_0xc37b73){try{if(this[_0x1811('0x71')](_0xc37b73)){logger[_0x1811('0x4c')](_0x1811('0x8b'),_0xc37b73[_0x1811('0x4f')],util['inspect'](_0xc37b73,{'showHidden':![],'depth':null}));if(this['queueReports'][_0xc37b73[_0x1811('0x4f')]]){var _0x1c6dd7=_['last'](this[_0x1811('0x10')][_0xc37b73['uniqueid']]);_0x1c6dd7[_0x1811('0x37')]=!![];_0x1c6dd7[_0x1811('0x55')]=_0x1811('0x8c');logger[_0x1811('0x84')](_0x1811('0x8d'),_0x1c6dd7[_0x1811('0x57')],_0x1c6dd7[_0x1811('0x5b')]);}}}catch(_0x5227af){logger['error'](_0x1811('0x8b'),_0xc37b73[_0x1811('0x4f')],util['inspect'](_0x5227af,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x23')]=function(_0x26a0da){try{if(this[_0x1811('0x71')](_0x26a0da)){logger['debug'](_0x1811('0x8e'),_0x26a0da[_0x1811('0x4f')],util[_0x1811('0x42')](_0x26a0da,{'showHidden':![],'depth':null}));if(this[_0x1811('0x10')][_0x26a0da['uniqueid']]){var _0x4b0481=_[_0x1811('0x7f')](this[_0x1811('0x10')][_0x26a0da['uniqueid']]);_0x4b0481[_0x1811('0x1f')]=![];_0x4b0481['queuecallerabandonAt']=null;_0x4b0481[_0x1811('0x8f')]=!![];_0x4b0481[_0x1811('0x90')]=_0x26a0da['membername'];_0x4b0481['holdtime']=_0x26a0da[_0x1811('0x81')];_0x4b0481[_0x1811('0x37')]=!![];_0x4b0481[_0x1811('0x36')]=![];_0x4b0481[_0x1811('0x91')]=null;if(!_0x4b0481[_0x1811('0x92')]){if(_0x26a0da['reason']==_0x1811('0x92')){_0x4b0481['queuecallerexitreason']='COMPLETED';logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x4b0481['queue'],_0x4b0481[_0x1811('0x5b')]);}else{if(_[_0x1811('0x93')](_0x26a0da[_0x1811('0x3d')][_0x1811('0x94')](),_0x1811('0x95'))){if(this[_0x1811('0x10')][_0x26a0da[_0x1811('0x96')]]){var _0x46ae55=_[_0x1811('0x7f')](this[_0x1811('0x10')][_0x26a0da['linkedid']]);_0x46ae55[_0x1811('0x37')]=![];_0x46ae55['queuecallerexit']=!![];_0x46ae55[_0x1811('0x91')]=moment(_0x4b0481['queuecallerjoinAt'])[_0x1811('0x97')](_0x26a0da['holdtime'],'seconds')[_0x1811('0x50')](_0x1811('0x77'));_0x46ae55[_0x1811('0x55')]=_0x1811('0x98');_0x46ae55['transfer']=!![];_0x46ae55[_0x1811('0x99')]=_0x1811('0x9a');_0x46ae55[_0x1811('0x9b')]=_0x26a0da[_0x1811('0x9c')];_0x46ae55[_0x1811('0x9d')]=_0x26a0da[_0x1811('0x4f')];logger[_0x1811('0x84')](_0x1811('0x9e'),_0x46ae55[_0x1811('0x57')],_0x46ae55[_0x1811('0x5b')]);var _0x460285=this[_0x1811('0x10')][_0x26a0da[_0x1811('0x96')]];this['queueReports'][_0x26a0da[_0x1811('0x96')]]=this['queueReports'][_0x26a0da['uniqueid']];this[_0x1811('0x10')][_0x26a0da[_0x1811('0x4f')]]=_0x460285;}}else{_0x4b0481[_0x1811('0x55')]=_0x1811('0x9f')+_0x26a0da[_0x1811('0xa0')][_0x1811('0xa1')]();logger[_0x1811('0x84')](_0x1811('0xa2'),_0x4b0481[_0x1811('0x57')],_0x4b0481['type'],_0x4b0481[_0x1811('0x55')]);}}}this[_0x1811('0x39')][_0x26a0da[_0x1811('0x4f')]]=_0x4b0481;}}}catch(_0x3461ec){logger[_0x1811('0x40')](_0x1811('0x8e'),_0x26a0da['uniqueid'],util[_0x1811('0x42')](_0x3461ec,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0xa3')]=function(_0x4b91f1){try{if(this[_0x1811('0x71')](_0x4b91f1)){logger[_0x1811('0x4c')]('[%s][voiceQueueReport][varset]',_0x4b91f1[_0x1811('0x4f')],util[_0x1811('0x42')](_0x4b91f1,{'showHidden':![],'depth':null}));this[_0x1811('0xa4')](_0x4b91f1[_0x1811('0x4f')],_[_0x1811('0x7b')](_0x4b91f1[_0x1811('0xa5')])[0x0],_0x4b91f1[_0x1811('0xa6')]);if(this[_0x1811('0x10')][_0x4b91f1[_0x1811('0x4f')]]){var _0x2dcd27=_[_0x1811('0x7f')](this[_0x1811('0x10')][_0x4b91f1[_0x1811('0x4f')]]);if(_0x2dcd27){if(this[_0x1811('0x71')](_0x4b91f1[_0x1811('0xa5')])&&this[_0x1811('0x71')](_0x4b91f1[_0x1811('0xa5')][_0x1811('0x6a')])){switch(_0x4b91f1[_0x1811('0xa6')]){case _0x1811('0xa7'):_0x2dcd27[_0x1811('0x36')]=![];_0x2dcd27[_0x1811('0x91')]=null;break;case _0x1811('0xa8'):_0x2dcd27[_0x1811('0xa9')]=_0x1811('0xaa');_0x2dcd27[_0x1811('0x36')]=!![];_0x2dcd27['queuecallerexitAt']=moment()['format'](_0x1811('0x77'));_0x2dcd27[_0x1811('0x86')]=moment()[_0x1811('0x50')](_0x1811('0x77'));logger['debug']('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x4b91f1[_0x1811('0x4f')],util[_0x1811('0x42')](_0x2dcd27,{'showHidden':![],'depth':null}));ami[_0x1811('0x4a')](_0x1811('0xab'),_0x2dcd27);break;default:_0x2dcd27[_0x1811('0x36')]=!![];_0x2dcd27[_0x1811('0x91')]=moment()[_0x1811('0x50')](_0x1811('0x77'));_0x2dcd27[_0x1811('0x86')]=moment()[_0x1811('0x50')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2dcd27['queuecallerabandon']=![];_0x2dcd27[_0x1811('0x82')]=null;_0x2dcd27[_0x1811('0x55')]=_0x4b91f1[_0x1811('0xa6')];this[_0x1811('0x39')][_0x4b91f1[_0x1811('0x4f')]]=_0x2dcd27;this[_0x1811('0x48')](_0x2dcd27,_0x1811('0xac'));}else if(this['isNotNull'](_0x4b91f1['variable'])&&this[_0x1811('0x71')](_0x4b91f1['variable'][_0x1811('0xad')])){if(!_0x2dcd27[_0x1811('0x1f')]){_0x2dcd27['queuecallerexit']=!![];_0x2dcd27[_0x1811('0x91')]=moment()[_0x1811('0x50')](_0x1811('0x77'));_0x2dcd27[_0x1811('0x55')]='EXITWITHKEY';_0x2dcd27[_0x1811('0x86')]=moment()[_0x1811('0x50')](_0x1811('0x77'));this[_0x1811('0x39')][_0x4b91f1[_0x1811('0x4f')]]=_0x2dcd27;}}logger['info'](_0x1811('0xae'),_0x4b91f1[_0x1811('0x4f')],_0x2dcd27[_0x1811('0x57')],_0x2dcd27[_0x1811('0x5b')],_[_0x1811('0x7b')](_0x4b91f1[_0x1811('0xa5')])[0x0],_0x4b91f1[_0x1811('0xa6')]);_0x2dcd27['variables']=this[_0x1811('0x15')][_0x4b91f1[_0x1811('0x4f')]];}}}}catch(_0x242035){logger['error']('[%s][voiceQueueReport][varset]',_0x4b91f1[_0x1811('0x4f')],util[_0x1811('0x42')](_0x242035,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1811('0xa4')]=function(_0x16f905,_0x42f6cd,_0x50e9a9){var _0x5a7cbb=['rtpaudioqos',_0x1811('0xaf'),_0x1811('0xb0'),_0x1811('0xb1'),_0x1811('0xb2'),_0x1811('0xb3'),_0x1811('0xb4'),'rtpaudioqosrttbridged','sipcallid',_0x1811('0xb5'),_0x1811('0xb6'),_0x1811('0xb7'),_0x1811('0xb8'),'memberdynamic',_0x1811('0xb9'),_0x1811('0xba'),_0x1811('0xbb'),'memberpenalty',_0x1811('0xbc')];if(!_[_0x1811('0xbd')](_0x42f6cd)&&!_[_0x1811('0xbe')](_0x5a7cbb,_0x42f6cd)){if(_[_0x1811('0x5f')](this[_0x1811('0x15')][_0x16f905])){this[_0x1811('0x15')][_0x16f905]={};}this[_0x1811('0x15')][_0x16f905][_0x42f6cd]=_0x50e9a9;}};VoiceQueueReport['prototype'][_0x1811('0xbf')]=function(_0x4f26ae,_0x79bdc0,_0x6107ba){try{var _0x3d2303={};if(this[_0x1811('0x10')][_0x4f26ae]){for(var _0x36f7c9=0x0;_0x36f7c9<this[_0x1811('0x10')][_0x4f26ae]['length'];_0x36f7c9+=0x1){_0x3d2303=this['queueReports'][_0x4f26ae][_0x36f7c9];var _0x2db673=this[_0x1811('0x12')][_0x3d2303[_0x1811('0x57')]];if(_0x2db673){_0x2db673[_0x1811('0xc0')]+=moment(_0x3d2303[_0x1811('0x86')])['diff'](_0x3d2303[_0x1811('0x76')],_0x1811('0xc1'))||0x0;if(_0x6107ba&&_0x3d2303['queuecallerexitreason']===_0x1811('0x56')){_0x3d2303[_0x1811('0x55')]=_0x1811('0x8c');}if(_0x36f7c9===this['queueReports'][_0x4f26ae][_0x1811('0xc2')]-0x1){_0x2db673[_0x1811('0xc3')]+=moment()['milliseconds'](0x0)['diff'](_0x3d2303[_0x1811('0x76')],_0x1811('0xc1'));if(hasCallerLeftTheQueue(_0x3d2303)&&_0x3d2303['queuecallerexitreason']!==_0x1811('0x56')){_0x2db673[_0x1811('0xc4')]+=0x1;}if(_0x3d2303[_0x1811('0x37')]){_0x2db673[_0x1811('0xc5')]+=0x1;_0x2db673['sumBillable']+=moment()[_0x1811('0xc6')](0x0)[_0x1811('0xc7')](_0x3d2303[_0x1811('0x86')],_0x1811('0xc1'));_0x3d2303[_0x1811('0x80')]=moment()[_0x1811('0x50')](_0x1811('0x77'));_0x3d2303[_0x1811('0x36')]=![];_0x3d2303[_0x1811('0x91')]=null;}if(_0x3d2303[_0x1811('0x36')]&&_0x3d2303[_0x1811('0x92')]!=!![]){_0x2db673[_0x1811('0xc8')]+=0x1;_0x3d2303['lastevent']=_0x1811('0xc8');logger[_0x1811('0x4c')](_0x1811('0xc9'),_0x4f26ae,util[_0x1811('0x42')](_0x3d2303,{'showHidden':![],'depth':null}));ami[_0x1811('0x4a')](_0x1811('0xca'),_0x3d2303);}if(_0x3d2303[_0x1811('0x1f')]){_0x2db673[_0x1811('0xcb')]+=0x1;_0x3d2303[_0x1811('0xa9')]='abandoned';logger['debug'](_0x1811('0xcc'),_0x4f26ae,util[_0x1811('0x42')](_0x3d2303,{'showHidden':![],'depth':null}));ami[_0x1811('0x4a')](_0x1811('0xcd'),_0x3d2303);}}else{_0x2db673['sumDuration']+=_0x2db673['sumHoldTime'];}logger[_0x1811('0x84')](_0x1811('0xce'),_0x4f26ae,_0x3d2303[_0x1811('0x57')],_0x3d2303[_0x1811('0x5b')],_0x79bdc0);this[_0x1811('0x39')][_0x4f26ae]=_0x3d2303;Object[_0x1811('0xcf')](this['voiceQueues'][_0x3d2303[_0x1811('0x57')]],_0x2db673);if(_0x3d2303[_0x1811('0x86')]){this[_0x1811('0x48')](_0x3d2303,_0x1811('0x26'));}}}logger[_0x1811('0x4c')](_0x1811('0xd0'),_0x4f26ae,util[_0x1811('0x42')](this[_0x1811('0x10')][_0x4f26ae],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x3d2303)&&_0x3d2303[_0x1811('0x55')]!=='ATTENDEDTRANSFER'){ami[_0x1811('0x4a')]('custom:voiceQueueReport',this['queueReports'][_0x4f26ae]);if(this['queueReports'][_0x4f26ae]){delete this[_0x1811('0x10')][_0x4f26ae];}if(this['channels'][_0x4f26ae]){delete this[_0x1811('0x39')][_0x4f26ae];}if(this['variables'][_0x4f26ae]){delete this[_0x1811('0x15')][_0x4f26ae];}}}}catch(_0x5a068b){logger['error'](_0x1811('0xd1'),_0x4f26ae,util[_0x1811('0x42')](_0x5a068b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0xd2')]=function(_0x53769d){try{if(this[_0x1811('0x71')](_0x53769d)){logger[_0x1811('0x4c')](_0x1811('0xd3'),_0x53769d[_0x1811('0x4f')],util['inspect'](_0x53769d,{'showHidden':![],'depth':null}));if(this[_0x1811('0x10')][_0x53769d['uniqueid']]){return this[_0x1811('0xbf')](_0x53769d[_0x1811('0x4f')],_0x53769d[_0x1811('0xd4')],![]);}if(this[_0x1811('0x10')][_0x53769d[_0x1811('0x96')]]){if(_0x53769d[_0x1811('0xd5')]==='21'){return;}return this[_0x1811('0xbf')](_0x53769d[_0x1811('0x96')],_0x53769d[_0x1811('0xd4')],!![]);}var _0x553034=Object['keys'](this[_0x1811('0x10')]);for(var _0x57aeaf=0x0;_0x57aeaf<_0x553034[_0x1811('0xc2')];_0x57aeaf++){var _0x599d72=_[_0x1811('0x7f')](this[_0x1811('0x10')][_0x553034[_0x57aeaf]]);if(_0x599d72&&_0x599d72[_0x1811('0xd6')]===_0x53769d[_0x1811('0x4f')]){return this['handleHangup'](_0x599d72['uniqueid'],_0x53769d[_0x1811('0xd4')],!![]);}}if(!this[_0x1811('0x10')][_0x53769d['uniqueid']]){logger['debug'](_0x1811('0xd7'),_0x53769d[_0x1811('0x4f')]);if(this[_0x1811('0x39')][_0x53769d['uniqueid']]){delete this['channels'][_0x53769d[_0x1811('0x4f')]];}if(this[_0x1811('0x15')][_0x53769d[_0x1811('0x4f')]]){delete this[_0x1811('0x15')][_0x53769d['uniqueid']];}}}}catch(_0x4764c6){logger[_0x1811('0x40')]('[%s][voiceQueueReport][hangup]',_0x53769d['uniqueid'],util['inspect'](_0x4764c6,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1811('0x2c')]=function(_0xbb696){try{if(this[_0x1811('0x71')](_0xbb696)){logger[_0x1811('0x4c')]('[%s][voiceQueueReport][attendedtransfer]',_0xbb696[_0x1811('0x4f')],util[_0x1811('0x42')](_0xbb696,{'showHidden':![],'depth':null}));var _0x1c7446;var _0x1d1f55;var _0x3b2390;if(this['queueReports'][_0xbb696['transfereeuniqueid']]){_0x1c7446=_['last'](this[_0x1811('0x10')][_0xbb696[_0x1811('0xd8')]]);_0x1c7446[_0x1811('0x9b')]=_0xbb696[_0x1811('0xd9')];_0x1c7446['transferuniqueid']=_0xbb696[_0x1811('0xda')];_0x1c7446['queuecallerexitreason']=_0x1811('0x56');_0x1c7446[_0x1811('0x92')]=!![];_0x1c7446['transfertype']=_0x1811('0xdb');if(this['queueReports'][_0xbb696[_0x1811('0xda')]]){_0x3b2390=this['queueReports'][_0xbb696[_0x1811('0xda')]];this['queueReports'][_0xbb696[_0x1811('0xda')]]=this['queueReports'][_0xbb696[_0x1811('0xd8')]];this['queueReports'][_0xbb696['transfereeuniqueid']]=_0x3b2390;_0x1d1f55=_['last'](this[_0x1811('0x10')][_0xbb696[_0x1811('0xd8')]]);_0x1d1f55[_0x1811('0x3a')]=!![];}logger[_0x1811('0x84')](_0x1811('0xdc'),_0xbb696[_0x1811('0x4f')],_0x1c7446[_0x1811('0x57')],_0x1c7446[_0x1811('0x5b')],_0x1c7446[_0x1811('0x9b')],_0x1c7446[_0x1811('0x9d')]);}else if(this[_0x1811('0x10')][_0xbb696[_0x1811('0xdd')]]){_0x1c7446=_[_0x1811('0x7f')](this[_0x1811('0x10')][_0xbb696[_0x1811('0xdd')]]);_0x1c7446[_0x1811('0x9b')]=_0xbb696[_0x1811('0xde')];_0x1c7446[_0x1811('0x9d')]=_0xbb696['origtransfereruniqueid'];_0x1c7446[_0x1811('0x55')]='ATTENDEDTRANSFER';_0x1c7446[_0x1811('0x92')]=!![];_0x1c7446[_0x1811('0x99')]='ATTENDED';if(this['queueReports'][_0xbb696[_0x1811('0xdf')]]){_0x3b2390=this['queueReports'][_0xbb696['origtransfereruniqueid']];this[_0x1811('0x10')][_0xbb696[_0x1811('0xdf')]]=this[_0x1811('0x10')][_0xbb696[_0x1811('0xdd')]];this[_0x1811('0x10')][_0xbb696[_0x1811('0xdd')]]=_0x3b2390;_0x1d1f55=_[_0x1811('0x7f')](this['queueReports'][_0xbb696['transfertargetuniqueid']]);_0x1d1f55[_0x1811('0x3a')]=!![];}logger[_0x1811('0x84')](_0x1811('0xdc'),_0xbb696['uniqueid'],_0x1c7446[_0x1811('0x57')],_0x1c7446[_0x1811('0x5b')],_0x1c7446[_0x1811('0x9b')],_0x1c7446[_0x1811('0x9d')]);}else if(this[_0x1811('0x10')][_0xbb696[_0x1811('0xdf')]]){_0x1c7446=_['last'](this[_0x1811('0x10')][_0xbb696['origtransfereruniqueid']]);_0x1c7446[_0x1811('0x9b')]=_0xbb696[_0x1811('0xde')];_0x1c7446['transferuniqueid']=_0xbb696[_0x1811('0xdf')];_0x1c7446['queuecallerexitreason']=_0x1811('0x56');_0x1c7446[_0x1811('0x92')]=!![];_0x1c7446['transfertype']='ATTENDED';_0x1c7446[_0x1811('0x3a')]=!![];_0x1c7446['transferid']=_0xbb696[_0x1811('0xd8')];}else if(this[_0x1811('0x10')][_0xbb696['secondtransfereruniqueid']]){_0x1c7446=_['last'](this[_0x1811('0x10')][_0xbb696['secondtransfereruniqueid']]);_0x1c7446[_0x1811('0x9b')]=_0xbb696[_0x1811('0xd9')];_0x1c7446[_0x1811('0x9d')]=_0xbb696['secondtransfereruniqueid'];_0x1c7446[_0x1811('0x55')]=_0x1811('0x56');_0x1c7446[_0x1811('0x92')]=!![];_0x1c7446[_0x1811('0x99')]=_0x1811('0xdb');_0x1c7446['switch']=!![];_0x1c7446[_0x1811('0xd6')]=_0xbb696[_0x1811('0xdd')];}}}catch(_0x364140){logger[_0x1811('0x40')](_0x1811('0xe0'),_0xbb696[_0x1811('0x4f')],util[_0x1811('0x42')](_0x364140,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0x2e')]=function(_0x4dfe67){try{if(this[_0x1811('0x71')](_0x4dfe67)){logger[_0x1811('0x4c')]('[%s][voiceQueueReport][blindtransfer]',_0x4dfe67[_0x1811('0x4f')],util[_0x1811('0x42')](_0x4dfe67,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x4dfe67[_0x1811('0xd8')]]){var _0x200054=_[_0x1811('0x7f')](this[_0x1811('0x10')][_0x4dfe67[_0x1811('0xd8')]]);_0x200054[_0x1811('0x55')]='BLINDTRANSFER';_0x200054[_0x1811('0x92')]=!![];_0x200054[_0x1811('0x99')]=_0x1811('0xe1');_0x200054[_0x1811('0x9b')]=_0x4dfe67[_0x1811('0xe2')];_0x200054[_0x1811('0x9d')]=_0x4dfe67['transfereeuniqueid'];logger[_0x1811('0x84')](_0x1811('0xe3'),_0x4dfe67['uniqueid'],_0x200054[_0x1811('0x57')],_0x200054['type'],_0x200054[_0x1811('0x9b')],_0x200054['transferuniqueid']);this[_0x1811('0xd2')]({'event':_0x1811('0xe4'),'uniqueid':_0x4dfe67[_0x1811('0xd8')],'context':_0x4dfe67[_0x1811('0xe5')],'channel':_0x4dfe67[_0x1811('0xe6')]});}}}catch(_0xfe33da){logger[_0x1811('0x40')](_0x1811('0xe7'),_0x4dfe67['uniqueid'],util[_0x1811('0x42')](_0xfe33da,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0xe8')]=function(_0x593357){try{if(this[_0x1811('0x71')](_0x593357)){logger['debug'](_0x1811('0xe9'),_0x593357['uniqueid'],util['inspect'](_0x593357,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x593357[_0x1811('0x4f')]]){var _0x114682=_[_0x1811('0x7f')](this['queueReports'][_0x593357['uniqueid']]);if(!_['isNil'](_0x114682[_0x1811('0x86')])){_0x114682[_0x1811('0xea')]=moment()[_0x1811('0x50')](_0x1811('0x77'));logger[_0x1811('0x84')](_0x1811('0xeb'),_0x593357[_0x1811('0x4f')],_0x114682[_0x1811('0xea')]);}}}}catch(_0x20a83d){logger[_0x1811('0x40')](_0x1811('0xe9'),_0x593357[_0x1811('0x4f')],util[_0x1811('0x42')](_0x20a83d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')]['syncMusicOnHoldStop']=function(_0x28e4b1){try{if(this[_0x1811('0x71')](_0x28e4b1)){logger[_0x1811('0x4c')](_0x1811('0xec'),_0x28e4b1[_0x1811('0x4f')],util[_0x1811('0x42')](_0x28e4b1,{'showHidden':![],'depth':null}));if(this[_0x1811('0x10')][_0x28e4b1[_0x1811('0x4f')]]){var _0x3e1bd8=_['last'](this['queueReports'][_0x28e4b1[_0x1811('0x4f')]]);if(!_[_0x1811('0xbd')](_0x3e1bd8[_0x1811('0xea')])){_0x3e1bd8['mohtime']+=moment()['milliseconds'](0x0)['diff'](_0x3e1bd8[_0x1811('0xea')],_0x1811('0xc1'));logger[_0x1811('0x84')](_0x1811('0xed'),_0x28e4b1[_0x1811('0x4f')],_0x3e1bd8[_0x1811('0xee')]);delete _0x3e1bd8['mohstarttime'];}}}}catch(_0x413bbf){logger[_0x1811('0x40')](_0x1811('0xec'),_0x28e4b1['uniqueid'],util[_0x1811('0x42')](_0x413bbf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1811('0xb')][_0x1811('0xef')]=function(_0x136fea){try{if(this['isNotNull'](_0x136fea)){logger[_0x1811('0x4c')](_0x1811('0xf0'),_0x136fea[_0x1811('0x4f')],util['inspect'](_0x136fea,{'showHidden':![],'depth':null}));if(_0x136fea[_0x1811('0xf1')][_0x1811('0x94')]()==='set'){_0x136fea['applicationdata']=_0x136fea[_0x1811('0xf2')]&&_0x136fea['appdata']['startsWith']('CDR(routeAlias)')?_0x136fea[_0x1811('0xf2')]:(_0x136fea[_0x1811('0xf2')]||_0x136fea[_0x1811('0xf3')])[_0x1811('0x94')]();if(_[_0x1811('0x93')](_0x136fea[_0x1811('0xf3')][_0x1811('0x94')](),'cdr(')){logger[_0x1811('0x84')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x136fea[_0x1811('0x4f')],_0x136fea[_0x1811('0xf1')],_0x136fea[_0x1811('0xf3')]);if(_[_0x1811('0x5f')](this[_0x1811('0x39')][_0x136fea[_0x1811('0x4f')]]))this[_0x1811('0x39')][_0x136fea['uniqueid']]={};var _0x4477cb=_0x136fea[_0x1811('0xf3')][_0x1811('0xf4')]('=');var _0x4c0a56=_0x4477cb[0x0]['toLowerCase']()[_0x1811('0xf5')](/cdr\((.*)\)/);if(_0x4c0a56)this[_0x1811('0x39')][_0x136fea['uniqueid']][_0x4c0a56[0x1]]=_0x4477cb[0x1];}}}}catch(_0xc00e24){logger[_0x1811('0x40')]('[%s][voiceQueueReport][newexten]',_0x136fea[_0x1811('0x4f')],util[_0x1811('0x42')](_0xc00e24,{'showHidden':![],'depth':null}));}};module[_0x1811('0xf6')]=VoiceQueueReport;
\ No newline at end of file
+var _0x07ae=['custom:timeout','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','length','sumHoldTime','queuecallerleaveAt','diff','COMPLETEDBYAGENT','total','sumBillable','milliseconds','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','sumDuration','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][handleHangup]','syncHangup','[%s][voiceQueueReport][hangup]','handleHangup','cause-txt','cause','transferid','[%s][voiceQueueReport][syncHangup]\x20No\x20available\x20data\x20in\x20queueReports\x20structure:\x20clear\x20action\x20in\x20variablea\x20and\x20channels\x20structures\x20needed','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDED','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','secondtransfererexten','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceQueueReport][newexten]','exports','lodash','../../../config/environment','../ami','../model/queueReport','redis','defaults','socket.io-emitter','prototype','tail','finally','sequence','queueReports','realtime','agents','channels','queueChannels','voiceQueues','campaigns','summary','variables','queuesummary','syncQueueSummary','bind','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','hangup','fullybooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','unlockRR','queuecallerexit','queuecallercomplete','clearZombieChannels','isNil','Action','status','channel','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','queue','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','ATTENDEDTRANSFER','voice_queue_channel:remove','voice_queue_presence:remove','emitInboundVoiceQueueSummary','type','inbound','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','loopQueueShow','queues','[voiceQueueReport][queues]','loopQueueSummary','isRunning','then','actionid','queuestatus','[voiceQueueReport][queuesummary]','createQueueSummaryReport','name','createReport','handleInboundQueueSummaryReport','assign','outbound','statusRequests','push','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','syncQueueSummaryComplete','completeEvent','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','queuecallerjoinAt','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','keys','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][queuecallerleave]','[%s][voiceQueueReport][agentconnect]','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','membername','queuecallerexitAt','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','seconds','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','variable','value','CONTINUE','TIMEOUT','lastevent','timeout'];(function(_0x3467c1,_0x199559){var _0x13e5b1=function(_0x5773f2){while(--_0x5773f2){_0x3467c1['push'](_0x3467c1['shift']());}};_0x13e5b1(++_0x199559);}(_0x07ae,0x13a));var _0xe07a=function(_0x325c00,_0x267bd3){_0x325c00=_0x325c00-0x0;var _0xda0835=_0x07ae[_0x325c00];return _0xda0835;};'use strict';var _=require(_0xe07a('0x0'));var moment=require('moment');var util=require('util');var Redis=require('ioredis');var config=require(_0xe07a('0x1'));var logger=require('../../../config/logger')('ami');var ami=require(_0xe07a('0x2'));var QueueReport=require(_0xe07a('0x3'));var VoiceQueueSummary=require('../model/voiceQueueSummary');config[_0xe07a('0x4')]=_[_0xe07a('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe07a('0x6'))(new Redis(config[_0xe07a('0x4')]));var Sequence=function(){};Sequence[_0xe07a('0x7')]['enqueue']=function(_0x464f5a){this[_0xe07a('0x8')]=this['tail']?this[_0xe07a('0x8')][_0xe07a('0x9')](_0x464f5a):_0x464f5a();};function VoiceQueueReport(_0x2b4172){this[_0xe07a('0xa')]=new Sequence();this[_0xe07a('0xb')]={};this[_0xe07a('0xc')]=_0x2b4172;this[_0xe07a('0xd')]=_0x2b4172[_0xe07a('0xd')];this[_0xe07a('0xe')]=_0x2b4172[_0xe07a('0xf')];this[_0xe07a('0x10')]=_0x2b4172[_0xe07a('0x10')];this[_0xe07a('0x11')]=_0x2b4172[_0xe07a('0x11')];this[_0xe07a('0x12')]=initializeSummary();this[_0xe07a('0x13')]={};ami['on'](_0xe07a('0x14'),this[_0xe07a('0x15')][_0xe07a('0x16')](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x17'),this[_0xe07a('0x18')]['bind'](this));ami['on'](_0xe07a('0x19'),this[_0xe07a('0x1a')][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x1b'),this[_0xe07a('0x1c')]['bind'](this));ami['on'](_0xe07a('0x1d'),this[_0xe07a('0x1e')][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x1f'),this[_0xe07a('0x20')]['bind'](this));ami['on'](_0xe07a('0x21'),this['syncAgentComplete'][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x22'),this[_0xe07a('0x23')]['bind'](this));ami['on']('varset',this['syncVarSet'][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x24'),this['syncHangup'][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x25'),this['syncFullyBooted'][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x26'),this[_0xe07a('0x27')][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x28'),this[_0xe07a('0x29')][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x2a'),this[_0xe07a('0x2b')][_0xe07a('0x16')](this));ami['on'](_0xe07a('0x2c'),this[_0xe07a('0x2d')]['bind'](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x78c058){if(!_[_0xe07a('0x2e')](_0x78c058)){for(var _0x5f1772 in _0x78c058){if(_0x78c058[_0xe07a('0x2f')](_0x5f1772)){delete _0x78c058[_0x5f1772];}}}}function clearCampaigns(_0x54c603){if(!_[_0xe07a('0x2e')](_0x54c603)){for(var _0x12266b in _0x54c603){if(_0x54c603[_0xe07a('0x2f')](_0x12266b)){_0x54c603[_0x12266b][_0xe07a('0x30')]=0x0;}}}}function clearVoiceQueues(_0x70035f){if(!_['isEmpty'](_0x70035f)){for(var _0x3a971f in _0x70035f){if(_0x70035f[_0xe07a('0x2f')](_0x3a971f)){_0x70035f[_0x3a971f][_0xe07a('0x30')]=0x0;_0x70035f[_0x3a971f][_0xe07a('0x31')]=0x0;_0x70035f[_0x3a971f][_0xe07a('0x32')]=0x0;_0x70035f[_0x3a971f][_0xe07a('0x33')]=0x0;_0x70035f[_0x3a971f]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x2e7b44){if(!_[_0xe07a('0x2e')](_0x2e7b44)){for(var _0xb89908 in _0x2e7b44){if(_0x2e7b44[_0xe07a('0x2f')](_0xb89908)){_0x2e7b44[_0xb89908][_0xe07a('0x34')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x5b9c66){return _0x5b9c66[_0xe07a('0x35')]||_0x5b9c66[_0xe07a('0x1d')]||_0x5b9c66[_0xe07a('0x36')];}VoiceQueueReport['prototype'][_0xe07a('0x37')]=function(){var _0xfcd419=this;for(var _0x458d95 in this[_0xe07a('0xe')]){if(this[_0xe07a('0xe')][_0xe07a('0x2f')](_0x458d95)&&!this[_0xe07a('0xe')][_0x458d95]['switch']){this[_0xe07a('0xa')]['enqueue'](function(){if(!_[_0xe07a('0x38')](_0xfcd419[_0xe07a('0xe')][_0x458d95])){return ami[_0xe07a('0x39')]({'action':_0xe07a('0x3a'),'channel':_0xfcd419[_0xe07a('0xe')][_0x458d95][_0xe07a('0x3b')]})[_0xe07a('0x3c')](function(_0x1a59e2){if(_0x1a59e2[_0xe07a('0x3d')]===_0xe07a('0x3e')){setTimeout(function(){if(_0xfcd419[_0xe07a('0xe')][_0x458d95]){delete _0xfcd419[_0xe07a('0xe')][_0x458d95];logger[_0xe07a('0x3f')]('[%s][voiceQueueReport][checkChannel]',_0x458d95,util[_0xe07a('0x40')](_0x1a59e2,{'showHidden':![],'depth':null}));}if(_0xfcd419[_0xe07a('0xb')][_0x458d95]){delete _0xfcd419['queueReports'][_0x458d95];logger[_0xe07a('0x3f')]('[%s][voiceQueueReport][checkQueueReport]',_0x458d95,util[_0xe07a('0x40')](_0x1a59e2,{'showHidden':![],'depth':null}));}if(_0xfcd419[_0xe07a('0x13')][_0x458d95]){delete _0xfcd419[_0xe07a('0x13')][_0x458d95];logger[_0xe07a('0x3f')](_0xe07a('0x41'),_0x458d95,util[_0xe07a('0x40')](_0x1a59e2,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype']['syncFullyBooted']=function(){logger[_0xe07a('0x3f')](_0xe07a('0x42'));clearChannels(this[_0xe07a('0xe')]);this[_0xe07a('0x43')](this[_0xe07a('0xb')]);clearAgentBooked(this[_0xe07a('0xd')]);clearVoiceQueues(this[_0xe07a('0x10')]);clearCampaigns(this[_0xe07a('0x11')]);this['summary']=initializeSummary();};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x43')]=function(_0x643a0){var _0x50e18a=this;if(!_[_0xe07a('0x2e')](_0x643a0)){for(var _0x6b86b in _0x643a0){if(_0x643a0[_0xe07a('0x2f')](_0x6b86b)){_0x50e18a[_0xe07a('0x44')](_0x643a0[_0x6b86b],_0xe07a('0x45'));delete _0x643a0[_0x6b86b];}}}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x46')]=function(_0x3c0be0,_0x1a55f7,_0x510348){io['to'](_0x3c0be0)['emit'](_0x1a55f7,_0x510348);};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x47')]=function(_0x436615,_0x634f61){logger[_0xe07a('0x48')](_0xe07a('0x49')+_0x634f61+_0xe07a('0x4a'),_0x436615[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x436615,{'showHidden':![],'depth':null}));this['emit'](util[_0xe07a('0x4c')](_0xe07a('0x4d'),_0x436615[_0xe07a('0x4e')]),'voice_queue_channel:save',_0x436615);io['emit'](_0xe07a('0x4f'),_0x436615);};VoiceQueueReport[_0xe07a('0x7')]['emitVoiceQueueChannelRemove']=function(_0x2762ba,_0x1fc8f6){logger[_0xe07a('0x48')]('[%s][voiceQueueReport]['+_0x1fc8f6+_0xe07a('0x50'),_0x2762ba['uniqueid'],util['inspect'](_0x2762ba,{'showHidden':![],'depth':null}));if(_0x2762ba['queuecallerexitreason']===_0xe07a('0x51')){return;}this[_0xe07a('0x46')](util[_0xe07a('0x4c')](_0xe07a('0x4d'),_0x2762ba['queue']),_0xe07a('0x52'),_0x2762ba);io['emit'](_0xe07a('0x53'),_0x2762ba);};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x54')]=function(_0x2eef2e){if(_0x2eef2e[_0xe07a('0x55')]===_0xe07a('0x56')){logger[_0xe07a('0x48')](_0xe07a('0x57'),util[_0xe07a('0x40')](_0x2eef2e,{'showHidden':![],'depth':null}));this[_0xe07a('0x46')](util['format'](_0xe07a('0x4d'),_0x2eef2e['name']),_0xe07a('0x58'),_0x2eef2e);}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x59')]=function(_0x145e67){return _0x145e67!==null&&!_[_0xe07a('0x5a')](_0x145e67);};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x5b')]=function(){var _0x2fb861=this;setInterval(function(){_0x2fb861['clearZombieChannels']();ami[_0xe07a('0x39')]({'action':_0xe07a('0x5c')})['catch'](function(_0x5bd499){logger[_0xe07a('0x3f')](_0xe07a('0x5d'),util[_0xe07a('0x40')](_0x5bd499,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x5e')]=function(){var _0x2f542e=this;setInterval(function(){if(!_0x2f542e[_0xe07a('0x12')][_0xe07a('0x5f')]){return ami[_0xe07a('0x39')]({'action':_0xe07a('0x14')})[_0xe07a('0x60')](function(_0x249eca){_0x2f542e[_0xe07a('0x12')]['id']=_0x249eca[_0xe07a('0x61')];_0x2f542e['summary'][_0xe07a('0x5f')]=!![];_0x2f542e[_0xe07a('0x12')][_0xe07a('0x62')][_0x249eca[_0xe07a('0x61')]]={};})['catch'](function(_0x123353){logger[_0xe07a('0x3f')](_0xe07a('0x63'),util[_0xe07a('0x40')](_0x123353,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0xe07a('0x64')]=function(_0x4d835e,_0x13aa58){var _0x47d487;if(this[_0xe07a('0x12')]&&this[_0xe07a('0x12')][_0xe07a('0x5c')]&&this['summary'][_0xe07a('0x5c')][_0x4d835e[_0xe07a('0x65')]]){_0x47d487=this[_0xe07a('0x12')][_0xe07a('0x5c')][_0x4d835e[_0xe07a('0x65')]]['summaryEvent'];}var _0x5d3388=new VoiceQueueSummary(_0x4d835e);return _0x5d3388[_0xe07a('0x66')](_0x13aa58[_0xe07a('0xd')],this['agents'],_0x47d487,this['realtime'][_0xe07a('0xe')]);};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x67')]=function(_0xd2de10,_0x41fef9){var _0x1efed6=this[_0xe07a('0x64')](_0xd2de10,_0x41fef9);var _0x7a65b0=![];_0x7a65b0=_0x1efed6['compareToInboundQueue'](_0xd2de10);if(_0x7a65b0){Object[_0xe07a('0x68')](_0xd2de10,_0x1efed6);this[_0xe07a('0xc')][_0xe07a('0x10')][_0xd2de10[_0xe07a('0x65')]]=_0xd2de10;this[_0xe07a('0x54')](_0x1efed6);}};VoiceQueueReport['prototype'][_0xe07a('0x1a')]=function(_0x1cf742){var _0x32c2e2=null;var _0xd66c=this[_0xe07a('0x12')]['id'];if(this[_0xe07a('0x12')][_0xe07a('0x62')][_0xd66c]){_0x32c2e2=this[_0xe07a('0x12')][_0xe07a('0x62')][_0xd66c][_0x1cf742[_0xe07a('0x61')]];}if(!_0x32c2e2){this[_0xe07a('0x12')]=initializeSummary();return;}var _0x35d6c6=this[_0xe07a('0x10')][_0x32c2e2[_0xe07a('0x4e')]];if(_0x35d6c6['type']===_0xe07a('0x56')){this[_0xe07a('0x67')](_0x35d6c6,_0x32c2e2);}else if(_0x35d6c6[_0xe07a('0x55')]===_0xe07a('0x69')){var _0x1cb7fd=this[_0xe07a('0x64')](_0x35d6c6,_0x32c2e2);ami[_0xe07a('0x46')]('custom:queuesummary',_0x1cb7fd);}this[_0xe07a('0x12')][_0xe07a('0x6a')]-=0x1;var _0x16e48b=this[_0xe07a('0x12')]['statusRequests']>0x0?!![]:![];if(!_0x16e48b){return this['syncQueueSummaryComplete'](this[_0xe07a('0x12')]['completeEvent']);}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x18')]=function(_0x6b73c8){var _0x2d416f=this[_0xe07a('0x12')]['id'];if(this[_0xe07a('0x12')][_0xe07a('0x62')][_0x2d416f]&&this[_0xe07a('0x12')][_0xe07a('0x62')][_0x2d416f][_0x6b73c8[_0xe07a('0x61')]]){this[_0xe07a('0x12')][_0xe07a('0x62')][_0x2d416f][_0x6b73c8[_0xe07a('0x61')]][_0xe07a('0xd')][_0xe07a('0x6b')](_0x6b73c8);}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x15')]=function(_0xd07bf7){var _0x217658=this;try{if(this[_0xe07a('0x59')](_0xd07bf7)&&this[_0xe07a('0x59')](_0xd07bf7[_0xe07a('0x4e')])){logger['debug'](_0xe07a('0x6c'),util[_0xe07a('0x40')](_0xd07bf7,{'showHidden':![],'depth':null}));var _0x10721d=this[_0xe07a('0x10')][_0xd07bf7['queue']];if(_0x10721d){logger['debug'](_0xe07a('0x6d'),_0x10721d[_0xe07a('0x65')]);this[_0xe07a('0x12')][_0xe07a('0x5c')][_0x10721d[_0xe07a('0x65')]]={'summaryEvent':_0xd07bf7};this[_0xe07a('0x12')][_0xe07a('0x6a')]+=0x1;return ami[_0xe07a('0x39')]({'action':_0xe07a('0x62'),'queue':_0x10721d[_0xe07a('0x65')]})[_0xe07a('0x60')](function(_0x5a038e){if(!_0x217658['summary'][_0xe07a('0x62')][_0xd07bf7[_0xe07a('0x61')]]){_0x217658[_0xe07a('0x12')][_0xe07a('0x62')][_0xd07bf7['actionid']]={};}_0x217658[_0xe07a('0x12')][_0xe07a('0x62')][_0xd07bf7[_0xe07a('0x61')]][_0x5a038e[_0xe07a('0x61')]]={'queue':_0x10721d['name'],'agents':[]};})[_0xe07a('0x3c')](function(_0xd28a9c){throw _0xd28a9c;});}}}catch(_0x24b096){logger[_0xe07a('0x3f')](_0xe07a('0x63'),util[_0xe07a('0x40')](_0x24b096,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x6e')]=function(_0x2da279){if(this[_0xe07a('0x12')]['statusRequests']>0x0){this['summary'][_0xe07a('0x6f')]=_0x2da279;return;}logger[_0xe07a('0x48')](_0xe07a('0x70'),util[_0xe07a('0x40')](_0x2da279,{'showHidden':![],'depth':null}));this[_0xe07a('0x12')]=initializeSummary();ami['emit'](_0xe07a('0x71'),{});};VoiceQueueReport['prototype'][_0xe07a('0x1c')]=function(_0x24886c){try{if(this[_0xe07a('0x59')](_0x24886c)){logger[_0xe07a('0x48')]('[%s][voiceQueueReport][queuecallerjoin]',_0x24886c[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x24886c,{'showHidden':![],'depth':null}));if(_[_0xe07a('0x5a')](this[_0xe07a('0xb')][_0x24886c[_0xe07a('0x4b')]])){this[_0xe07a('0xb')][_0x24886c[_0xe07a('0x4b')]]=[];}if(_[_0xe07a('0x5a')](this[_0xe07a('0xe')][_0x24886c[_0xe07a('0x4b')]])){this[_0xe07a('0xe')][_0x24886c[_0xe07a('0x4b')]]={};}var _0x3767e3=new QueueReport();_0x3767e3[_0xe07a('0x4e')]=_0x24886c['queue'];_0x3767e3[_0xe07a('0x55')]=this[_0xe07a('0x10')][_0x3767e3[_0xe07a('0x4e')]]&&this[_0xe07a('0x10')][_0x3767e3[_0xe07a('0x4e')]][_0xe07a('0x55')]?this[_0xe07a('0x10')][_0x3767e3[_0xe07a('0x4e')]][_0xe07a('0x55')]||_0xe07a('0x56'):_0xe07a('0x56');_0x3767e3[_0xe07a('0x72')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3767e3[_0xe07a('0x73')]=_0x24886c[_0xe07a('0x73')];_0x3767e3['count']=_0x24886c[_0xe07a('0x74')];_0x3767e3[_0xe07a('0x4b')]=_0x24886c['uniqueid'];_0x3767e3[_0xe07a('0x75')]=this['channels'][_0x24886c['uniqueid']][_0xe07a('0x75')];logger[_0xe07a('0x76')](_0xe07a('0x77'),_0x3767e3[_0xe07a('0x4e')],_0x3767e3[_0xe07a('0x55')]);Object[_0xe07a('0x68')](_0x3767e3,_['pick'](_0x24886c,_[_0xe07a('0x78')](_0x3767e3)));this[_0xe07a('0xb')][_0x24886c[_0xe07a('0x4b')]][_0xe07a('0x6b')](_0x3767e3);this[_0xe07a('0xe')][_0x24886c[_0xe07a('0x4b')]]=_0x3767e3;this[_0xe07a('0x47')](_0x3767e3,_0xe07a('0x1b'));}}catch(_0x5e579d){logger[_0xe07a('0x3f')]('[%s][voiceQueueReport][queuecallerjoin]',_0x24886c['uniqueid'],util[_0xe07a('0x40')](_0x5e579d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xe07a('0x1e')]=function(_0x3afa53){try{if(this[_0xe07a('0x59')](_0x3afa53)){logger[_0xe07a('0x48')](_0xe07a('0x79'),_0x3afa53[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x3afa53,{'showHidden':![],'depth':null}));if(this[_0xe07a('0xb')][_0x3afa53[_0xe07a('0x4b')]]){var _0x261c7b=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x3afa53[_0xe07a('0x4b')]]);_0x261c7b['queuecallercomplete']=![];_0x261c7b[_0xe07a('0x7b')]=null;_0x261c7b[_0xe07a('0x7c')]=_0x3afa53['holdtime'];_0x261c7b[_0xe07a('0x7d')]=_0x3afa53[_0xe07a('0x7d')];_0x261c7b['queuecallerabandon']=!![];_0x261c7b[_0xe07a('0x7e')]=moment()[_0xe07a('0x4c')](_0xe07a('0x7f'));_0x261c7b[_0xe07a('0x80')]=_0xe07a('0x81');_0x261c7b[_0xe07a('0x82')]=null;logger['info'](_0xe07a('0x83'),_0x261c7b[_0xe07a('0x4e')],_0x261c7b['type']);this[_0xe07a('0xe')][_0x3afa53[_0xe07a('0x4b')]]=_0x261c7b;this[_0xe07a('0x44')](_0x261c7b,'queuecallerabandon');}}}catch(_0x237ea9){logger['error'](_0xe07a('0x79'),_0x3afa53[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x237ea9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x20')]=function(_0x3f6bee){try{if(this[_0xe07a('0x59')](_0x3f6bee)){logger[_0xe07a('0x48')]('[%s][voiceQueueReport][queuecallerleave]',_0x3f6bee[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x3f6bee,{'showHidden':![],'depth':null}));if(this[_0xe07a('0xb')][_0x3f6bee[_0xe07a('0x4b')]]){var _0x40a62b=_['last'](this[_0xe07a('0xb')][_0x3f6bee[_0xe07a('0x4b')]]);_0x40a62b['queuecallerleaveAt']=moment()[_0xe07a('0x4c')](_0xe07a('0x7f'));_0x40a62b[_0xe07a('0x84')]=_0x3f6bee[_0xe07a('0x84')];_0x40a62b[_0xe07a('0x85')]=_0x3f6bee['connectedlinename'];logger[_0xe07a('0x76')](_0xe07a('0x86'),_0x40a62b[_0xe07a('0x4e')],_0x40a62b[_0xe07a('0x55')],_0x3f6bee['connectedlinenum'],_0x3f6bee[_0xe07a('0x85')]);this[_0xe07a('0xe')][_0x3f6bee[_0xe07a('0x4b')]]=_0x40a62b;this[_0xe07a('0x47')](_0x40a62b,_0xe07a('0x1f'));}}}catch(_0x2ad9c7){logger['error'](_0xe07a('0x87'),_0x3f6bee['uniqueid'],util[_0xe07a('0x40')](_0x2ad9c7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x23')]=function(_0x42795f){try{if(this[_0xe07a('0x59')](_0x42795f)){logger[_0xe07a('0x48')](_0xe07a('0x88'),_0x42795f[_0xe07a('0x4b')],util['inspect'](_0x42795f,{'showHidden':![],'depth':null}));if(this[_0xe07a('0xb')][_0x42795f[_0xe07a('0x4b')]]){var _0x688d2=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x42795f[_0xe07a('0x4b')]]);_0x688d2[_0xe07a('0x36')]=!![];_0x688d2[_0xe07a('0x80')]='COMPLETEDBYAGENT';logger[_0xe07a('0x76')](_0xe07a('0x89'),_0x688d2['queue'],_0x688d2[_0xe07a('0x55')]);}}}catch(_0x33c37c){logger['error'](_0xe07a('0x88'),_0x42795f[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x33c37c,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xe07a('0x8a')]=function(_0x2146ac){try{if(this[_0xe07a('0x59')](_0x2146ac)){logger['debug'](_0xe07a('0x8b'),_0x2146ac[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x2146ac,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2146ac[_0xe07a('0x4b')]]){var _0x93e901=_['last'](this[_0xe07a('0xb')][_0x2146ac['uniqueid']]);_0x93e901[_0xe07a('0x1d')]=![];_0x93e901[_0xe07a('0x7e')]=null;_0x93e901['assigned']=!![];_0x93e901['lastAssignedTo']=_0x2146ac[_0xe07a('0x8c')];_0x93e901[_0xe07a('0x7c')]=_0x2146ac[_0xe07a('0x7c')];_0x93e901['queuecallercomplete']=!![];_0x93e901[_0xe07a('0x35')]=![];_0x93e901[_0xe07a('0x8d')]=null;if(!_0x93e901[_0xe07a('0x8e')]){if(_0x2146ac['reason']==_0xe07a('0x8e')){_0x93e901[_0xe07a('0x80')]=_0xe07a('0x8f');logger[_0xe07a('0x76')](_0xe07a('0x90'),_0x93e901[_0xe07a('0x4e')],_0x93e901['type']);}else{if(_[_0xe07a('0x91')](_0x2146ac[_0xe07a('0x3b')][_0xe07a('0x92')](),_0xe07a('0x93'))){if(this[_0xe07a('0xb')][_0x2146ac[_0xe07a('0x94')]]){var _0x427a3a=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x2146ac[_0xe07a('0x94')]]);_0x427a3a[_0xe07a('0x36')]=![];_0x427a3a[_0xe07a('0x35')]=!![];_0x427a3a[_0xe07a('0x8d')]=moment(_0x93e901[_0xe07a('0x72')])['add'](_0x2146ac[_0xe07a('0x7c')],_0xe07a('0x95'))['format'](_0xe07a('0x7f'));_0x427a3a[_0xe07a('0x80')]='FORWARDTRANSFER';_0x427a3a['transfer']=!![];_0x427a3a[_0xe07a('0x96')]=_0xe07a('0x97');_0x427a3a[_0xe07a('0x98')]=_0x2146ac[_0xe07a('0x99')];_0x427a3a[_0xe07a('0x9a')]=_0x2146ac['uniqueid'];logger['info'](_0xe07a('0x9b'),_0x427a3a[_0xe07a('0x4e')],_0x427a3a[_0xe07a('0x55')]);var _0x15b31b=this['queueReports'][_0x2146ac['linkedid']];this[_0xe07a('0xb')][_0x2146ac[_0xe07a('0x94')]]=this[_0xe07a('0xb')][_0x2146ac[_0xe07a('0x4b')]];this['queueReports'][_0x2146ac[_0xe07a('0x4b')]]=_0x15b31b;}}else{_0x93e901['queuecallerexitreason']='COMPLETEDBY'+_0x2146ac['reason']['toUpperCase']();logger[_0xe07a('0x76')](_0xe07a('0x9c'),_0x93e901[_0xe07a('0x4e')],_0x93e901['type'],_0x93e901[_0xe07a('0x80')]);}}}this[_0xe07a('0xe')][_0x2146ac[_0xe07a('0x4b')]]=_0x93e901;}}}catch(_0x236792){logger[_0xe07a('0x3f')](_0xe07a('0x8b'),_0x2146ac[_0xe07a('0x4b')],util['inspect'](_0x236792,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x9d')]=function(_0x3feb07){try{if(this[_0xe07a('0x59')](_0x3feb07)){logger[_0xe07a('0x48')](_0xe07a('0x9e'),_0x3feb07[_0xe07a('0x4b')],util['inspect'](_0x3feb07,{'showHidden':![],'depth':null}));this[_0xe07a('0x9f')](_0x3feb07[_0xe07a('0x4b')],_[_0xe07a('0x78')](_0x3feb07[_0xe07a('0xa0')])[0x0],_0x3feb07[_0xe07a('0xa1')]);if(this['queueReports'][_0x3feb07[_0xe07a('0x4b')]]){var _0x4e7579=_['last'](this['queueReports'][_0x3feb07[_0xe07a('0x4b')]]);if(_0x4e7579){if(this['isNotNull'](_0x3feb07[_0xe07a('0xa0')])&&this[_0xe07a('0x59')](_0x3feb07[_0xe07a('0xa0')][_0xe07a('0x62')])){switch(_0x3feb07[_0xe07a('0xa1')]){case _0xe07a('0xa2'):_0x4e7579[_0xe07a('0x35')]=![];_0x4e7579[_0xe07a('0x8d')]=null;break;case _0xe07a('0xa3'):_0x4e7579[_0xe07a('0xa4')]=_0xe07a('0xa5');_0x4e7579[_0xe07a('0x35')]=!![];_0x4e7579[_0xe07a('0x8d')]=moment()[_0xe07a('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');_0x4e7579['queuecallerleaveAt']=moment()[_0xe07a('0x4c')](_0xe07a('0x7f'));logger['debug']('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x3feb07[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x4e7579,{'showHidden':![],'depth':null}));ami[_0xe07a('0x46')](_0xe07a('0xa6'),_0x4e7579);break;default:_0x4e7579['queuecallerexit']=!![];_0x4e7579['queuecallerexitAt']=moment()[_0xe07a('0x4c')](_0xe07a('0x7f'));_0x4e7579['queuecallerleaveAt']=moment()['format'](_0xe07a('0x7f'));}_0x4e7579[_0xe07a('0x1d')]=![];_0x4e7579[_0xe07a('0x7e')]=null;_0x4e7579[_0xe07a('0x80')]=_0x3feb07[_0xe07a('0xa1')];this['channels'][_0x3feb07[_0xe07a('0x4b')]]=_0x4e7579;this['emitVoiceQueueChannelRemove'](_0x4e7579,'varset');}else if(this[_0xe07a('0x59')](_0x3feb07[_0xe07a('0xa0')])&&this[_0xe07a('0x59')](_0x3feb07['variable']['queueposition'])){if(!_0x4e7579[_0xe07a('0x1d')]){_0x4e7579[_0xe07a('0x35')]=!![];_0x4e7579['queuecallerexitAt']=moment()['format'](_0xe07a('0x7f'));_0x4e7579[_0xe07a('0x80')]='EXITWITHKEY';_0x4e7579['queuecallerleaveAt']=moment()[_0xe07a('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x3feb07[_0xe07a('0x4b')]]=_0x4e7579;}}logger[_0xe07a('0x76')](_0xe07a('0xa7'),_0x3feb07[_0xe07a('0x4b')],_0x4e7579['queue'],_0x4e7579[_0xe07a('0x55')],_[_0xe07a('0x78')](_0x3feb07[_0xe07a('0xa0')])[0x0],_0x3feb07['value']);_0x4e7579[_0xe07a('0x13')]=this[_0xe07a('0x13')][_0x3feb07[_0xe07a('0x4b')]];}}}}catch(_0x4a2817){logger[_0xe07a('0x3f')](_0xe07a('0x9e'),_0x3feb07[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x4a2817,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x9f')]=function(_0x2c5418,_0x19277e,_0xec5d1d){var _0xedd629=[_0xe07a('0xa8'),_0xe07a('0xa9'),_0xe07a('0xaa'),'rtpaudioqosjitterbridged','rtpaudioqosloss',_0xe07a('0xab'),_0xe07a('0xac'),_0xe07a('0xad'),_0xe07a('0xae'),_0xe07a('0xaf'),_0xe07a('0xb0'),'bridgepvtcallid',_0xe07a('0xb1'),_0xe07a('0xb2'),_0xe07a('0xb3'),_0xe07a('0xb4'),_0xe07a('0x8c'),_0xe07a('0xb5'),_0xe07a('0xb6')];if(!_[_0xe07a('0x38')](_0x19277e)&&!_[_0xe07a('0xb7')](_0xedd629,_0x19277e)){if(_['isUndefined'](this[_0xe07a('0x13')][_0x2c5418])){this[_0xe07a('0x13')][_0x2c5418]={};}this[_0xe07a('0x13')][_0x2c5418][_0x19277e]=_0xec5d1d;}};VoiceQueueReport[_0xe07a('0x7')]['handleHangup']=function(_0x2dbd76,_0x8445d3,_0xa3934c){try{var _0x32d148={};if(this[_0xe07a('0xb')][_0x2dbd76]){for(var _0x1ea342=0x0;_0x1ea342<this[_0xe07a('0xb')][_0x2dbd76][_0xe07a('0xb8')];_0x1ea342+=0x1){_0x32d148=this['queueReports'][_0x2dbd76][_0x1ea342];var _0x1e6192=this[_0xe07a('0x10')][_0x32d148[_0xe07a('0x4e')]];if(_0x1e6192){_0x1e6192[_0xe07a('0xb9')]+=moment(_0x32d148[_0xe07a('0xba')])[_0xe07a('0xbb')](_0x32d148[_0xe07a('0x72')],_0xe07a('0x95'))||0x0;if(_0xa3934c&&_0x32d148['queuecallerexitreason']==='ATTENDEDTRANSFER'){_0x32d148['queuecallerexitreason']=_0xe07a('0xbc');}if(_0x1ea342===this[_0xe07a('0xb')][_0x2dbd76][_0xe07a('0xb8')]-0x1){_0x1e6192['sumDuration']+=moment()['milliseconds'](0x0)['diff'](_0x32d148['queuecallerjoinAt'],'seconds');if(hasCallerLeftTheQueue(_0x32d148)&&_0x32d148['queuecallerexitreason']!==_0xe07a('0x51')){_0x1e6192[_0xe07a('0xbd')]+=0x1;}if(_0x32d148[_0xe07a('0x36')]){_0x1e6192['answered']+=0x1;_0x1e6192[_0xe07a('0xbe')]+=moment()[_0xe07a('0xbf')](0x0)[_0xe07a('0xbb')](_0x32d148[_0xe07a('0xba')],'seconds');_0x32d148[_0xe07a('0x7b')]=moment()[_0xe07a('0x4c')](_0xe07a('0x7f'));_0x32d148[_0xe07a('0x35')]=![];_0x32d148[_0xe07a('0x8d')]=null;}if(_0x32d148['queuecallerexit']&&_0x32d148[_0xe07a('0x8e')]!=!![]){_0x1e6192[_0xe07a('0xc0')]+=0x1;_0x32d148[_0xe07a('0xa4')]=_0xe07a('0xc0');logger[_0xe07a('0x48')](_0xe07a('0xc1'),_0x2dbd76,util[_0xe07a('0x40')](_0x32d148,{'showHidden':![],'depth':null}));ami['emit'](_0xe07a('0xc2'),_0x32d148);}if(_0x32d148[_0xe07a('0x1d')]){_0x1e6192[_0xe07a('0xc3')]+=0x1;_0x32d148[_0xe07a('0xa4')]='abandoned';logger[_0xe07a('0x48')](_0xe07a('0xc4'),_0x2dbd76,util[_0xe07a('0x40')](_0x32d148,{'showHidden':![],'depth':null}));ami[_0xe07a('0x46')]('custom:queuecallerabandon',_0x32d148);}}else{_0x1e6192[_0xe07a('0xc5')]+=_0x1e6192[_0xe07a('0xb9')];}logger[_0xe07a('0x76')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x2dbd76,_0x32d148[_0xe07a('0x4e')],_0x32d148[_0xe07a('0x55')],_0x8445d3);this[_0xe07a('0xe')][_0x2dbd76]=_0x32d148;Object['assign'](this[_0xe07a('0x10')][_0x32d148['queue']],_0x1e6192);if(_0x32d148['queuecallerleaveAt']){this['emitVoiceQueueChannelRemove'](_0x32d148,'hangup');}}}logger[_0xe07a('0x48')](_0xe07a('0xc6'),_0x2dbd76,util[_0xe07a('0x40')](this[_0xe07a('0xb')][_0x2dbd76],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x32d148)&&_0x32d148[_0xe07a('0x80')]!==_0xe07a('0x51')){ami[_0xe07a('0x46')](_0xe07a('0xc7'),this['queueReports'][_0x2dbd76]);if(this[_0xe07a('0xb')][_0x2dbd76]){delete this['queueReports'][_0x2dbd76];}if(this[_0xe07a('0xe')][_0x2dbd76]){delete this[_0xe07a('0xe')][_0x2dbd76];}if(this[_0xe07a('0x13')][_0x2dbd76]){delete this[_0xe07a('0x13')][_0x2dbd76];}}}}catch(_0x362067){logger[_0xe07a('0x3f')](_0xe07a('0xc8'),_0x2dbd76,util['inspect'](_0x362067,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0xc9')]=function(_0x2bc80b){try{if(this['isNotNull'](_0x2bc80b)){logger[_0xe07a('0x48')](_0xe07a('0xca'),_0x2bc80b[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x2bc80b,{'showHidden':![],'depth':null}));if(this[_0xe07a('0xb')][_0x2bc80b[_0xe07a('0x4b')]]){return this[_0xe07a('0xcb')](_0x2bc80b[_0xe07a('0x4b')],_0x2bc80b[_0xe07a('0xcc')],![]);}if(this['queueReports'][_0x2bc80b[_0xe07a('0x94')]]){if(_0x2bc80b[_0xe07a('0xcd')]==='21'){return;}return this[_0xe07a('0xcb')](_0x2bc80b[_0xe07a('0x94')],_0x2bc80b[_0xe07a('0xcc')],!![]);}var _0x4336d1=Object[_0xe07a('0x78')](this['queueReports']);for(var _0x50a5f8=0x0;_0x50a5f8<_0x4336d1[_0xe07a('0xb8')];_0x50a5f8++){var _0x559c1a=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x4336d1[_0x50a5f8]]);if(_0x559c1a&&_0x559c1a[_0xe07a('0xce')]===_0x2bc80b['uniqueid']){return this['handleHangup'](_0x559c1a[_0xe07a('0x4b')],_0x2bc80b[_0xe07a('0xcc')],!![]);}}if(!this[_0xe07a('0xb')][_0x2bc80b[_0xe07a('0x4b')]]){logger['debug'](_0xe07a('0xcf'),_0x2bc80b[_0xe07a('0x4b')]);if(this[_0xe07a('0xe')][_0x2bc80b['uniqueid']]){delete this[_0xe07a('0xe')][_0x2bc80b[_0xe07a('0x4b')]];}if(this['variables'][_0x2bc80b['uniqueid']]){delete this[_0xe07a('0x13')][_0x2bc80b[_0xe07a('0x4b')]];}}}}catch(_0x5024bc){logger[_0xe07a('0x3f')]('[%s][voiceQueueReport][hangup]',_0x2bc80b[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x5024bc,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xe07a('0x2b')]=function(_0x171ee9){try{if(this[_0xe07a('0x59')](_0x171ee9)){logger[_0xe07a('0x48')](_0xe07a('0xd0'),_0x171ee9['uniqueid'],util[_0xe07a('0x40')](_0x171ee9,{'showHidden':![],'depth':null}));var _0x36c961;var _0x38794f;var _0x294a53;if(this['queueReports'][_0x171ee9[_0xe07a('0xd1')]]){_0x36c961=_[_0xe07a('0x7a')](this['queueReports'][_0x171ee9[_0xe07a('0xd1')]]);_0x36c961[_0xe07a('0x98')]=_0x171ee9['secondtransfererexten'];_0x36c961[_0xe07a('0x9a')]=_0x171ee9[_0xe07a('0xd2')];_0x36c961[_0xe07a('0x80')]=_0xe07a('0x51');_0x36c961[_0xe07a('0x8e')]=!![];_0x36c961[_0xe07a('0x96')]=_0xe07a('0xd3');if(this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd2')]]){_0x294a53=this['queueReports'][_0x171ee9[_0xe07a('0xd2')]];this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd2')]]=this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd1')]];this[_0xe07a('0xb')][_0x171ee9['transfereeuniqueid']]=_0x294a53;_0x38794f=_['last'](this['queueReports'][_0x171ee9[_0xe07a('0xd1')]]);_0x38794f[_0xe07a('0xd4')]=!![];}logger[_0xe07a('0x76')](_0xe07a('0xd5'),_0x171ee9[_0xe07a('0x4b')],_0x36c961[_0xe07a('0x4e')],_0x36c961[_0xe07a('0x55')],_0x36c961[_0xe07a('0x98')],_0x36c961['transferuniqueid']);}else if(this[_0xe07a('0xb')][_0x171ee9['transfertargetuniqueid']]){_0x36c961=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd6')]]);_0x36c961[_0xe07a('0x98')]=_0x171ee9[_0xe07a('0xd7')];_0x36c961[_0xe07a('0x9a')]=_0x171ee9['origtransfereruniqueid'];_0x36c961[_0xe07a('0x80')]=_0xe07a('0x51');_0x36c961[_0xe07a('0x8e')]=!![];_0x36c961[_0xe07a('0x96')]=_0xe07a('0xd3');if(this['queueReports'][_0x171ee9[_0xe07a('0xd8')]]){_0x294a53=this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd8')]];this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd8')]]=this[_0xe07a('0xb')][_0x171ee9['transfertargetuniqueid']];this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd6')]]=_0x294a53;_0x38794f=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x171ee9['transfertargetuniqueid']]);_0x38794f[_0xe07a('0xd4')]=!![];}logger['info'](_0xe07a('0xd5'),_0x171ee9[_0xe07a('0x4b')],_0x36c961[_0xe07a('0x4e')],_0x36c961[_0xe07a('0x55')],_0x36c961[_0xe07a('0x98')],_0x36c961[_0xe07a('0x9a')]);}else if(this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd8')]]){_0x36c961=_['last'](this['queueReports'][_0x171ee9['origtransfereruniqueid']]);_0x36c961[_0xe07a('0x98')]=_0x171ee9[_0xe07a('0xd7')];_0x36c961[_0xe07a('0x9a')]=_0x171ee9[_0xe07a('0xd8')];_0x36c961[_0xe07a('0x80')]=_0xe07a('0x51');_0x36c961[_0xe07a('0x8e')]=!![];_0x36c961[_0xe07a('0x96')]='ATTENDED';_0x36c961['switch']=!![];_0x36c961[_0xe07a('0xce')]=_0x171ee9['transfereeuniqueid'];}else if(this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd2')]]){_0x36c961=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x171ee9[_0xe07a('0xd2')]]);_0x36c961['transferexten']=_0x171ee9[_0xe07a('0xd9')];_0x36c961[_0xe07a('0x9a')]=_0x171ee9[_0xe07a('0xd2')];_0x36c961[_0xe07a('0x80')]=_0xe07a('0x51');_0x36c961[_0xe07a('0x8e')]=!![];_0x36c961['transfertype']=_0xe07a('0xd3');_0x36c961['switch']=!![];_0x36c961[_0xe07a('0xce')]=_0x171ee9['transfertargetuniqueid'];}}}catch(_0x2af016){logger[_0xe07a('0x3f')](_0xe07a('0xd0'),_0x171ee9['uniqueid'],util[_0xe07a('0x40')](_0x2af016,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x2d')]=function(_0x4ff68e){try{if(this['isNotNull'](_0x4ff68e)){logger[_0xe07a('0x48')](_0xe07a('0xda'),_0x4ff68e['uniqueid'],util[_0xe07a('0x40')](_0x4ff68e,{'showHidden':![],'depth':null}));if(this[_0xe07a('0xb')][_0x4ff68e[_0xe07a('0xd1')]]){var _0x2f37cf=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x4ff68e[_0xe07a('0xd1')]]);_0x2f37cf[_0xe07a('0x80')]=_0xe07a('0xdb');_0x2f37cf[_0xe07a('0x8e')]=!![];_0x2f37cf[_0xe07a('0x96')]=_0xe07a('0xdc');_0x2f37cf[_0xe07a('0x98')]=_0x4ff68e['extension'];_0x2f37cf[_0xe07a('0x9a')]=_0x4ff68e['transfereeuniqueid'];logger['info']('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x4ff68e['uniqueid'],_0x2f37cf[_0xe07a('0x4e')],_0x2f37cf['type'],_0x2f37cf['transferexten'],_0x2f37cf['transferuniqueid']);this['syncHangup']({'event':_0xe07a('0xdd'),'uniqueid':_0x4ff68e[_0xe07a('0xd1')],'context':_0x4ff68e[_0xe07a('0xde')],'channel':_0x4ff68e['transfererchannel']});}}}catch(_0x417a5e){logger[_0xe07a('0x3f')]('[%s][voiceQueueReport][blindtransfer]',_0x4ff68e['uniqueid'],util[_0xe07a('0x40')](_0x417a5e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x27')]=function(_0x46573d){try{if(this[_0xe07a('0x59')](_0x46573d)){logger[_0xe07a('0x48')](_0xe07a('0xdf'),_0x46573d['uniqueid'],util[_0xe07a('0x40')](_0x46573d,{'showHidden':![],'depth':null}));if(this[_0xe07a('0xb')][_0x46573d[_0xe07a('0x4b')]]){var _0x210186=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x46573d[_0xe07a('0x4b')]]);if(!_[_0xe07a('0x38')](_0x210186[_0xe07a('0xba')])){_0x210186[_0xe07a('0xe0')]=moment()[_0xe07a('0x4c')](_0xe07a('0x7f'));logger[_0xe07a('0x76')](_0xe07a('0xe1'),_0x46573d[_0xe07a('0x4b')],_0x210186[_0xe07a('0xe0')]);}}}}catch(_0x4ae408){logger['error'](_0xe07a('0xdf'),_0x46573d['uniqueid'],util[_0xe07a('0x40')](_0x4ae408,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0x29')]=function(_0x18dd22){try{if(this[_0xe07a('0x59')](_0x18dd22)){logger[_0xe07a('0x48')](_0xe07a('0xe2'),_0x18dd22['uniqueid'],util[_0xe07a('0x40')](_0x18dd22,{'showHidden':![],'depth':null}));if(this[_0xe07a('0xb')][_0x18dd22[_0xe07a('0x4b')]]){var _0x53727e=_[_0xe07a('0x7a')](this[_0xe07a('0xb')][_0x18dd22[_0xe07a('0x4b')]]);if(!_[_0xe07a('0x38')](_0x53727e[_0xe07a('0xe0')])){_0x53727e[_0xe07a('0xe3')]+=moment()[_0xe07a('0xbf')](0x0)['diff'](_0x53727e[_0xe07a('0xe0')],_0xe07a('0x95'));logger['info'](_0xe07a('0xe4'),_0x18dd22['uniqueid'],_0x53727e[_0xe07a('0xe3')]);delete _0x53727e[_0xe07a('0xe0')];}}}}catch(_0x34cea7){logger[_0xe07a('0x3f')](_0xe07a('0xe2'),_0x18dd22['uniqueid'],util['inspect'](_0x34cea7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xe07a('0x7')][_0xe07a('0xe5')]=function(_0x56b905){try{if(this[_0xe07a('0x59')](_0x56b905)){logger['debug'](_0xe07a('0xe6'),_0x56b905[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x56b905,{'showHidden':![],'depth':null}));if(_0x56b905[_0xe07a('0xe7')][_0xe07a('0x92')]()===_0xe07a('0xe8')){_0x56b905[_0xe07a('0xe9')]=_0x56b905[_0xe07a('0xea')]&&_0x56b905['appdata']['startsWith'](_0xe07a('0xeb'))?_0x56b905['appdata']:(_0x56b905[_0xe07a('0xea')]||_0x56b905[_0xe07a('0xe9')])['toLowerCase']();if(_[_0xe07a('0x91')](_0x56b905[_0xe07a('0xe9')][_0xe07a('0x92')](),'cdr(')){logger[_0xe07a('0x76')](_0xe07a('0xec'),_0x56b905[_0xe07a('0x4b')],_0x56b905[_0xe07a('0xe7')],_0x56b905[_0xe07a('0xe9')]);if(_['isUndefined'](this[_0xe07a('0xe')][_0x56b905[_0xe07a('0x4b')]]))this['channels'][_0x56b905['uniqueid']]={};var _0x2ffdf7=_0x56b905[_0xe07a('0xe9')][_0xe07a('0xed')]('=');var _0x372886=_0x2ffdf7[0x0][_0xe07a('0x92')]()['match'](/cdr\((.*)\)/);if(_0x372886)this['channels'][_0x56b905[_0xe07a('0x4b')]][_0x372886[0x1]]=_0x2ffdf7[0x1];}}}}catch(_0x11ddb3){logger[_0xe07a('0x3f')](_0xe07a('0xee'),_0x56b905[_0xe07a('0x4b')],util[_0xe07a('0x40')](_0x11ddb3,{'showHidden':![],'depth':null}));}};module[_0xe07a('0xef')]=VoiceQueueReport;
\ No newline at end of file
index ba5ab14..c70de89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d63=['../client','createHistory','campaign','queue','Request','CreateReportAgentPreview'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6d63,0x1bc));var _0x36d6=function(_0x9f3c10,_0x562b19){_0x9f3c10=_0x9f3c10-0x0;var _0x522d24=_0x6d63[_0x9f3c10];return _0x522d24;};'use strict';var client=require(_0x36d6('0x0'));exports[_0x36d6('0x1')]=function(_0x5f0711){return function(){_0x5f0711[_0x36d6('0x2')]=_0x5f0711[_0x36d6('0x3')];return client[_0x36d6('0x4')](_0x36d6('0x5'),{'body':_0x5f0711,'log':_0x36d6('0x5')});};};
\ No newline at end of file
+var _0xcd79=['CreateReportAgentPreview','../client','createHistory','campaign','Request'];(function(_0x379d12,_0x3737d6){var _0x3073e3=function(_0x3b3a4c){while(--_0x3b3a4c){_0x379d12['push'](_0x379d12['shift']());}};_0x3073e3(++_0x3737d6);}(_0xcd79,0x16e));var _0x9cd7=function(_0x5e2389,_0x19488b){_0x5e2389=_0x5e2389-0x0;var _0x2484be=_0xcd79[_0x5e2389];return _0x2484be;};'use strict';var client=require(_0x9cd7('0x0'));exports[_0x9cd7('0x1')]=function(_0x46ecce){return function(){_0x46ecce[_0x9cd7('0x2')]=_0x46ecce['queue'];return client[_0x9cd7('0x3')](_0x9cd7('0x4'),{'body':_0x46ecce,'log':_0x9cd7('0x4')});};};
\ No newline at end of file
index 4960cee..f9922aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb678=['CreateAttachment','../client','create'];(function(_0x36888d,_0x22988e){var _0x14f524=function(_0x5cdbfe){while(--_0x5cdbfe){_0x36888d['push'](_0x36888d['shift']());}};_0x14f524(++_0x22988e);}(_0xb678,0x6a));var _0x8b67=function(_0x36ed3c,_0x44a00a){_0x36ed3c=_0x36ed3c-0x0;var _0x52a2e0=_0xb678[_0x36ed3c];return _0x52a2e0;};'use strict';var client=require(_0x8b67('0x0'));exports[_0x8b67('0x1')]=function(_0x5d5f3b){return client['Request'](_0x8b67('0x2'),{'body':_0x5d5f3b,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0x10df=['../client','create','Request','CreateAttachment'];(function(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0x10df,0x178));var _0xf10d=function(_0x349b5c,_0x55e5fa){_0x349b5c=_0x349b5c-0x0;var _0x3efcac=_0x10df[_0x349b5c];return _0x3efcac;};'use strict';var client=require(_0xf10d('0x0'));exports[_0xf10d('0x1')]=function(_0x497dd6){return client[_0xf10d('0x2')]('CreateAttachment',{'body':_0x497dd6,'log':_0xf10d('0x3')});};
\ No newline at end of file
index 83ee099..306083c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x5c32b2,_0x18ec51){var _0x11f7f4=function(_0x21c5ba){while(--_0x21c5ba){_0x5c32b2['push'](_0x5c32b2['shift']());}};_0x11f7f4(++_0x18ec51);}(_0x7a54,0x106));var _0x47a5=function(_0x1c37ca,_0x704707){_0x1c37ca=_0x1c37ca-0x0;var _0x5587d0=_0x7a54[_0x1c37ca];return _0x5587d0;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x2ef3=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','active','TrunkBackup','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0xcda377,_0x1e2678){var _0x1c024f=function(_0x1aeb61){while(--_0x1aeb61){_0xcda377['push'](_0xcda377['shift']());}};_0x1c024f(++_0x1e2678);}(_0x2ef3,0xba));var _0x32ef=function(_0x5de410,_0x48c2f8){_0x5de410=_0x5de410-0x0;var _0x59fd6f=_0x2ef3[_0x5de410];return _0x59fd6f;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),_0x32ef('0x5'),'active',_0x32ef('0x6'),_0x32ef('0x7'),'dialOriginateCallerIdNumber',_0x32ef('0x8'),_0x32ef('0x9'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'dialMachineMaxRetry','dialMachineRetryFrequency',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'dialAMDActive',_0x32ef('0x18'),'dialAMDGreeting',_0x32ef('0x19'),'dialAMDTotalAnalysisTime',_0x32ef('0x1a'),_0x32ef('0x1b'),'dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold',_0x32ef('0x1c'),'dialOrderByScheduledAt',_0x32ef('0x1d'),_0x32ef('0x1e'),_0x32ef('0x1f')],'include':[{'model':_0x32ef('0x20'),'as':'Trunk','attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x20'),'as':_0x32ef('0x22'),'attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x23'),'as':_0x32ef('0x23'),'attributes':['id','name'],'include':[{'model':_0x32ef('0x23'),'as':_0x32ef('0x24'),'attributes':['id','name',_0x32ef('0x25')]}]},{'model':_0x32ef('0x26'),'as':_0x32ef('0x26'),'attributes':['id',_0x32ef('0x4')]}]},'log':_0x32ef('0x27')});};};
\ No newline at end of file
index da2ae1f..0dc7149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bd5=['CreateCmContact','getContacts','GetCmContact','../client','createContact','Request'];(function(_0x1d53fb,_0x5ec71f){var _0x40b198=function(_0x45e0a6){while(--_0x45e0a6){_0x1d53fb['push'](_0x1d53fb['shift']());}};_0x40b198(++_0x5ec71f);}(_0x3bd5,0x129));var _0x53bd=function(_0x1493fb,_0x3e0020){_0x1493fb=_0x1493fb-0x0;var _0x36b5e7=_0x3bd5[_0x1493fb];return _0x36b5e7;};'use strict';var client=require(_0x53bd('0x0'));exports[_0x53bd('0x1')]=function(_0x1deb0e){return function(){return client[_0x53bd('0x2')](_0x53bd('0x3'),{'body':_0x1deb0e,'log':'CreateCmContact'});};};exports[_0x53bd('0x4')]=function(_0x38cf3e){return function(){return client[_0x53bd('0x2')]('GetCmContact',{'options':_0x38cf3e,'log':_0x53bd('0x5')});};};
\ No newline at end of file
+var _0x9993=['createContact','Request','CreateCmContact','getContacts','GetCmContact','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9993,0x1e5));var _0x3999=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x9993[_0x40a045];return _0x1a687c;};'use strict';var client=require(_0x3999('0x0'));exports[_0x3999('0x1')]=function(_0x4236ef){return function(){return client[_0x3999('0x2')](_0x3999('0x3'),{'body':_0x4236ef,'log':_0x3999('0x3')});};};exports[_0x3999('0x4')]=function(_0xc2b347){return function(){return client[_0x3999('0x2')](_0x3999('0x5'),{'options':_0xc2b347,'log':_0x3999('0x5')});};};
\ No newline at end of file
index 968f584..808fb8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb82=['voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','../client','moment','getContacts','Request','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','DESC','scheduledat','ASC','priority','GetContactDialerIvr','moveContactManagedDialer','campaign','MoveContactManagedDialer','countReScheduled','getContactPreview','GetCmHopperPreview','Agent','VoiceQueue','Queue','name','unlockContact','getContactRecallMe','GetContactRecallMe','User'];(function(_0x4290dd,_0x2a0c28){var _0x4272c5=function(_0x4139f3){while(--_0x4139f3){_0x4290dd['push'](_0x4290dd['shift']());}};_0x4272c5(++_0x2a0c28);}(_0xfb82,0x17f));var _0x2fb8=function(_0x23b700,_0x47a73e){_0x23b700=_0x23b700-0x0;var _0x4a966b=_0xfb82[_0x23b700];return _0x4a966b;};'use strict';var client=require(_0x2fb8('0x0'));var moment=require(_0x2fb8('0x1'));exports[_0x2fb8('0x2')]=function(_0x5893e0,_0x316a4d){return function(){return client[_0x2fb8('0x3')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x5893e0},'include':[{'model':_0x2fb8('0x4'),'as':_0x2fb8('0x5')}],'limit':_0x316a4d,'raw':![]},'log':_0x2fb8('0x6')});};};exports[_0x2fb8('0x7')]=function(_0x996707,_0xe9a5b5,_0x3e6900){return function(){return client[_0x2fb8('0x3')](_0x2fb8('0x8'),{'body':_0x996707,'options':{'where':{'VoiceQueueId':_0xe9a5b5,'scheduledat':{'$lte':moment()[_0x2fb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x3e6900},'log':_0x2fb8('0x8')});};};exports[_0x2fb8('0xa')]=function(_0x428626){return client[_0x2fb8('0x3')](_0x2fb8('0x8'),{'body':_0x428626,'options':{'where':{'ContactId':_0x428626[_0x2fb8('0xb')],'ListId':_0x428626[_0x2fb8('0xc')],'VoiceQueueId':_0x428626[_0x2fb8('0xd')],'CampaignId':_0x428626[_0x2fb8('0xe')]}},'log':_0x2fb8('0xa')});};exports[_0x2fb8('0xf')]=function(_0x55bcfc,_0x1d49d4,_0xd07c60){return function(){return client[_0x2fb8('0x3')](_0x2fb8('0x10'),{'options':{'where':{'VoiceQueueId':_0x55bcfc,'ListId':_0x1d49d4,'ContactId':_0xd07c60}},'log':'DestroyCmHopper'});};};exports['getContactDialer']=function(_0x35e23b,_0x50f36f,_0x17fea6,_0x4e70f9){return client['Request'](_0x2fb8('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x35e23b,'active':![],'scheduledat':{'$lte':moment()[_0x2fb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x50f36f}}]},'order':[['priority',_0x2fb8('0x12')],[_0x2fb8('0x13'),_0x4e70f9],['id',_0x2fb8('0x14')]],'raw':!![],'limit':_0x17fea6},'log':_0x2fb8('0x11')});};exports['getContactDialerIvr']=function(_0x3fda1b,_0x34f43b,_0x48296c){return client[_0x2fb8('0x3')](_0x2fb8('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x3fda1b,'active':![],'scheduledat':{'$lte':moment()[_0x2fb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':'CmContact','as':_0x2fb8('0x5')}],'order':[[_0x2fb8('0x15'),_0x2fb8('0x12')],[_0x2fb8('0x13'),_0x48296c],['id','ASC']],'raw':!![],'limit':_0x34f43b},'log':_0x2fb8('0x16')});};exports[_0x2fb8('0x17')]=function(_0x1aa17e,_0x18f5ed){_0x1aa17e[_0x2fb8('0x18')]=_0x1aa17e['queue'];return client[_0x2fb8('0x3')](_0x2fb8('0x19'),{'body':_0x1aa17e,'options':{'where':{'ContactId':_0x1aa17e[_0x2fb8('0xb')],'ListId':_0x1aa17e['ListId'],'VoiceQueueId':_0x1aa17e['VoiceQueueId'],'CampaignId':_0x1aa17e[_0x2fb8('0xe')],'active':_0x18f5ed?undefined:!![]}},'log':_0x2fb8('0x19')});};exports[_0x2fb8('0x1a')]=function(_0x2f8cc9){return client[_0x2fb8('0x3')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x2f8cc9['id']?_0x2f8cc9['id']||null:null}},'log':_0x2fb8('0x1a')});};exports[_0x2fb8('0x1b')]=function(_0x3f3399){return function(){return client[_0x2fb8('0x3')](_0x2fb8('0x1c'),{'options':{'where':{'id':_0x3f3399},'include':[{'model':_0x2fb8('0x4'),'as':_0x2fb8('0x5')},{'model':'User','as':_0x2fb8('0x1d'),'attributes':['id','name']},{'model':_0x2fb8('0x1e'),'as':_0x2fb8('0x1f'),'attributes':['id',_0x2fb8('0x20')]}],'raw':!![]},'log':_0x2fb8('0x6')});};};exports[_0x2fb8('0x21')]=function(_0x2b779c,_0x98892e,_0x1a3394){return client[_0x2fb8('0x3')](_0x2fb8('0x8'),{'body':_0x2b779c,'options':{'where':{'id':_0x98892e},'limit':_0x1a3394},'log':_0x2fb8('0x8')});};exports[_0x2fb8('0x22')]=function(_0x462937,_0x3ddafb){return function(){return client[_0x2fb8('0x3')](_0x2fb8('0x23'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x462937,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x3ddafb}},'order':[[_0x2fb8('0x15'),_0x2fb8('0x12')],['scheduledat','DESC'],['id',_0x2fb8('0x14')]],'include':[{'model':'CmContact','as':'Contact'},{'model':_0x2fb8('0x24'),'as':_0x2fb8('0x1d'),'attributes':['id',_0x2fb8('0x20'),_0x2fb8('0x25')]}],'group':_0x2fb8('0x26'),'raw':!![]},'log':_0x2fb8('0x11')});};};exports[_0x2fb8('0x27')]=function(_0x3df324,_0x4a9e3b){return client['Request'](_0x2fb8('0x28'),{'body':_0x3df324,'options':_0x4a9e3b||{},'log':_0x2fb8('0x28')});};exports[_0x2fb8('0x29')]=function(_0x3aa43a,_0x19d360,_0x21ee52){return function(){return client[_0x2fb8('0x3')]('CmHopperHandlePreviewRecallNotifications',{'body':{'where':{'voiceQueueIds':_0x3aa43a,'interval':_0x19d360,'availableAgentsIds':_0x21ee52}},'log':_0x2fb8('0x29')});};};
\ No newline at end of file
+var _0x9fc5=['CmHopperHandlePreviewRecallNotifications','handlePreviewRecallNotifications','moment','getContacts','Request','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','format','DESC','scheduledat','getContactDialerIvr','priority','GetContactDialerIvr','campaign','queue','MoveContactManagedDialer','ListId','CountReScheduled','countReScheduled','getContactPreview','GetCmHopperPreview','Agent','VoiceQueue','name','getContactRecallMe','GetContactRecallMe','ASC','User','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls'];(function(_0x22cd98,_0xfc1a32){var _0x17d0c4=function(_0x53d298){while(--_0x53d298){_0x22cd98['push'](_0x22cd98['shift']());}};_0x17d0c4(++_0xfc1a32);}(_0x9fc5,0xb6));var _0x59fc=function(_0x26f1b2,_0x33d843){_0x26f1b2=_0x26f1b2-0x0;var _0x1624a4=_0x9fc5[_0x26f1b2];return _0x1624a4;};'use strict';var client=require('../client');var moment=require(_0x59fc('0x0'));exports[_0x59fc('0x1')]=function(_0x4a0dd0,_0x4647c5){return function(){return client[_0x59fc('0x2')](_0x59fc('0x3'),{'options':{'where':{'VoiceQueueId':_0x4a0dd0},'include':[{'model':_0x59fc('0x4'),'as':_0x59fc('0x5')}],'limit':_0x4647c5,'raw':![]},'log':_0x59fc('0x6')});};};exports[_0x59fc('0x7')]=function(_0x323be6,_0x4cb94d,_0x3bde0b){return function(){return client[_0x59fc('0x2')](_0x59fc('0x8'),{'body':_0x323be6,'options':{'where':{'VoiceQueueId':_0x4cb94d,'scheduledat':{'$lte':moment()['format'](_0x59fc('0x9'))}},'limit':_0x3bde0b},'log':_0x59fc('0x8')});};};exports[_0x59fc('0xa')]=function(_0x34ff96){return client[_0x59fc('0x2')](_0x59fc('0x8'),{'body':_0x34ff96,'options':{'where':{'ContactId':_0x34ff96[_0x59fc('0xb')],'ListId':_0x34ff96['ListId'],'VoiceQueueId':_0x34ff96[_0x59fc('0xc')],'CampaignId':_0x34ff96[_0x59fc('0xd')]}},'log':_0x59fc('0xa')});};exports[_0x59fc('0xe')]=function(_0x29e599,_0x21a8a4,_0x18e99e){return function(){return client['Request'](_0x59fc('0xf'),{'options':{'where':{'VoiceQueueId':_0x29e599,'ListId':_0x21a8a4,'ContactId':_0x18e99e}},'log':_0x59fc('0xf')});};};exports[_0x59fc('0x10')]=function(_0x10a46e,_0x141769,_0x4fdce7,_0x1d02d0){return client[_0x59fc('0x2')](_0x59fc('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x10a46e,'active':![],'scheduledat':{'$lte':moment()[_0x59fc('0x12')](_0x59fc('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x141769}}]},'order':[['priority',_0x59fc('0x13')],[_0x59fc('0x14'),_0x1d02d0],['id','ASC']],'raw':!![],'limit':_0x4fdce7},'log':_0x59fc('0x11')});};exports[_0x59fc('0x15')]=function(_0x4162c4,_0x1ddb29,_0x175718){return client['Request'](_0x59fc('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x4162c4,'active':![],'scheduledat':{'$lte':moment()[_0x59fc('0x12')](_0x59fc('0x9'))}},'include':[{'model':_0x59fc('0x4'),'as':_0x59fc('0x5')}],'order':[[_0x59fc('0x16'),_0x59fc('0x13')],[_0x59fc('0x14'),_0x175718],['id','ASC']],'raw':!![],'limit':_0x1ddb29},'log':_0x59fc('0x17')});};exports['moveContactManagedDialer']=function(_0xdcfddb,_0x57a964){_0xdcfddb[_0x59fc('0x18')]=_0xdcfddb[_0x59fc('0x19')];return client[_0x59fc('0x2')](_0x59fc('0x1a'),{'body':_0xdcfddb,'options':{'where':{'ContactId':_0xdcfddb[_0x59fc('0xb')],'ListId':_0xdcfddb[_0x59fc('0x1b')],'VoiceQueueId':_0xdcfddb['VoiceQueueId'],'CampaignId':_0xdcfddb[_0x59fc('0xd')],'active':_0x57a964?undefined:!![]}},'log':_0x59fc('0x1a')});};exports['countReScheduled']=function(_0x4cd81e){return client[_0x59fc('0x2')](_0x59fc('0x1c'),{'options':{'where':{'VoiceQueueId':_0x4cd81e['id']?_0x4cd81e['id']||null:null}},'log':_0x59fc('0x1d')});};exports[_0x59fc('0x1e')]=function(_0x188c1d){return function(){return client[_0x59fc('0x2')](_0x59fc('0x1f'),{'options':{'where':{'id':_0x188c1d},'include':[{'model':_0x59fc('0x4'),'as':_0x59fc('0x5')},{'model':'User','as':_0x59fc('0x20'),'attributes':['id','name']},{'model':_0x59fc('0x21'),'as':'Queue','attributes':['id',_0x59fc('0x22')]}],'raw':!![]},'log':_0x59fc('0x6')});};};exports['unlockContact']=function(_0x47121f,_0x16e41c,_0x5611e7){return client[_0x59fc('0x2')](_0x59fc('0x8'),{'body':_0x47121f,'options':{'where':{'id':_0x16e41c},'limit':_0x5611e7},'log':_0x59fc('0x8')});};exports[_0x59fc('0x23')]=function(_0x252fa4,_0x5849a6){return function(){return client[_0x59fc('0x2')](_0x59fc('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x252fa4,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x59fc('0x12')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x5849a6}},'order':[[_0x59fc('0x16'),_0x59fc('0x13')],[_0x59fc('0x14'),_0x59fc('0x13')],['id',_0x59fc('0x25')]],'include':[{'model':_0x59fc('0x4'),'as':_0x59fc('0x5')},{'model':_0x59fc('0x26'),'as':'Agent','attributes':['id',_0x59fc('0x22'),_0x59fc('0x27')]}],'group':_0x59fc('0x28'),'raw':!![]},'log':'GetContactDialer'});};};exports[_0x59fc('0x29')]=function(_0x56082e,_0x28c196){return client[_0x59fc('0x2')](_0x59fc('0x2a'),{'body':_0x56082e,'options':_0x28c196||{},'log':'ResetActiveCalls'});};exports['handlePreviewRecallNotifications']=function(_0x37e18f,_0x304fbb,_0x2b703b){return function(){return client[_0x59fc('0x2')](_0x59fc('0x2b'),{'body':{'where':{'voiceQueueIds':_0x37e18f,'interval':_0x304fbb,'availableAgentsIds':_0x2b703b}},'log':_0x59fc('0x2c')});};};
\ No newline at end of file
index 8de68f7..4acaf18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b75=['IncrementPreviewCounters','verifyAdditionalPhones','VerifyAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','Request'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0x4b75,0x1ab));var _0x54b7=function(_0x552624,_0x49bbf4){_0x552624=_0x552624-0x0;var _0xc9b5b2=_0x4b75[_0x552624];return _0xc9b5b2;};'use strict';var client=require('../client');exports[_0x54b7('0x0')]=function(_0x4b1b7a,_0x399e8d,_0x4de5dc){return client['Request'](_0x54b7('0x1'),{'body':_0x4b1b7a,'reason':_0x399e8d,'entity':_0x4de5dc,'log':_0x54b7('0x1')});};exports['swapAdditionalPhones']=function(_0x362e8c,_0xa78208,_0x413468){return client['Request']('SwapAdditionalPhones',{'body':_0x362e8c,'duration':_0xa78208,'waitTime':_0x413468,'log':_0x54b7('0x2')});};exports[_0x54b7('0x3')]=function(_0x4c0c02){return function(){return client[_0x54b7('0x4')]('IncrementPreviewCounters',{'body':_0x4c0c02,'log':_0x54b7('0x5')});};};
\ No newline at end of file
+var _0xa0b8=['SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x1a0c59,_0x3b4dcc){var _0xed67c9=function(_0x247698){while(--_0x247698){_0x1a0c59['push'](_0x1a0c59['shift']());}};_0xed67c9(++_0x3b4dcc);}(_0xa0b8,0x199));var _0x8a0b=function(_0x4347ec,_0x41c4b8){_0x4347ec=_0x4347ec-0x0;var _0x4c8314=_0xa0b8[_0x4347ec];return _0x4c8314;};'use strict';var client=require('../client');exports[_0x8a0b('0x0')]=function(_0x15764d,_0x261ef1,_0x58befd){return client[_0x8a0b('0x1')](_0x8a0b('0x2'),{'body':_0x15764d,'reason':_0x261ef1,'entity':_0x58befd,'log':_0x8a0b('0x2')});};exports[_0x8a0b('0x3')]=function(_0x298ecb,_0x358bb7,_0x309c3f){return client['Request'](_0x8a0b('0x4'),{'body':_0x298ecb,'duration':_0x358bb7,'waitTime':_0x309c3f,'log':_0x8a0b('0x4')});};exports[_0x8a0b('0x5')]=function(_0x3a255f){return function(){return client[_0x8a0b('0x1')](_0x8a0b('0x6'),{'body':_0x3a255f,'log':_0x8a0b('0x6')});};};
\ No newline at end of file
index 069e11a..ab57bd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b45=['../client','checkIsBlackList','Request','GetCmHopperBlack','phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x1b45,0x170));var _0x51b4=function(_0x5201a7,_0x21f8bf){_0x5201a7=_0x5201a7-0x0;var _0x435d26=_0x1b45[_0x5201a7];return _0x435d26;};'use strict';var client=require(_0x51b4('0x0'));exports[_0x51b4('0x1')]=function(_0x4724c0){return client[_0x51b4('0x2')](_0x51b4('0x3'),{'options':{'where':{'VoiceQueueId':_0x4724c0['VoiceQueueId'],'phone':_0x4724c0[_0x51b4('0x4')]},'raw':![]},'log':_0x51b4('0x3')});};exports[_0x51b4('0x5')]=function(_0x94e9c1){return client[_0x51b4('0x2')](_0x51b4('0x3'),{'options':{'where':{'CampaignId':_0x94e9c1[_0x51b4('0x6')],'phone':_0x94e9c1[_0x51b4('0x4')]},'raw':![]},'log':_0x51b4('0x7')});};
\ No newline at end of file
+var _0xec76=['phone','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId'];(function(_0x320fee,_0x1e91e9){var _0x5d520f=function(_0x143ea8){while(--_0x143ea8){_0x320fee['push'](_0x320fee['shift']());}};_0x5d520f(++_0x1e91e9);}(_0xec76,0x1e1));var _0x6ec7=function(_0x39669b,_0x30d4f9){_0x39669b=_0x39669b-0x0;var _0xdc1bb=_0xec76[_0x39669b];return _0xdc1bb;};'use strict';var client=require(_0x6ec7('0x0'));exports[_0x6ec7('0x1')]=function(_0xefba8b){return client[_0x6ec7('0x2')](_0x6ec7('0x3'),{'options':{'where':{'VoiceQueueId':_0xefba8b[_0x6ec7('0x4')],'phone':_0xefba8b[_0x6ec7('0x5')]},'raw':![]},'log':'GetCmHopperBlack'});};exports['checkIsBlackListIvr']=function(_0xe1ea2e){return client[_0x6ec7('0x2')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0xe1ea2e['CampaignId'],'phone':_0xe1ea2e[_0x6ec7('0x5')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};
\ No newline at end of file
index a7b4e22..01d56f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf925=['CreateCmHopperFinal','campaign','queue'];(function(_0x1f6be9,_0x59586d){var _0x3c708e=function(_0x11423d){while(--_0x11423d){_0x1f6be9['push'](_0x1f6be9['shift']());}};_0x3c708e(++_0x59586d);}(_0xf925,0x70));var _0x5f92=function(_0x78699f,_0x9b5e13){_0x78699f=_0x78699f-0x0;var _0x26bfc7=_0xf925[_0x78699f];return _0x26bfc7;};'use strict';var client=require('../client');exports['createContact']=function(_0x2676cf){return function(){_0x2676cf[_0x5f92('0x0')]=_0x2676cf[_0x5f92('0x1')];return client['Request'](_0x5f92('0x2'),{'body':_0x2676cf,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x4564=['queue','Request','CreateCmHopperFinal','../client','campaign'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x4564,0x1d4));var _0x4456=function(_0x341714,_0x4e8eac){_0x341714=_0x341714-0x0;var _0x3d4d31=_0x4564[_0x341714];return _0x3d4d31;};'use strict';var client=require(_0x4456('0x0'));exports['createContact']=function(_0x400427){return function(){_0x400427[_0x4456('0x1')]=_0x400427[_0x4456('0x2')];return client[_0x4456('0x3')](_0x4456('0x4'),{'body':_0x400427,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index 01ced14..5fe0974 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe74a=['GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','startOf','day','endOf','../client','createHistory','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory'];(function(_0x230585,_0x4a472b){var _0x4cbda2=function(_0x48b75b){while(--_0x48b75b){_0x230585['push'](_0x230585['shift']());}};_0x4cbda2(++_0x4a472b);}(_0xe74a,0xcc));var _0xae74=function(_0x1bb11e,_0x58fd78){_0x1bb11e=_0x1bb11e-0x0;var _0x422492=_0xe74a[_0x1bb11e];return _0x422492;};'use strict';var client=require(_0xae74('0x0'));var moment=require('moment');exports[_0xae74('0x1')]=function(_0x477c64){_0x477c64['campaign']=_0x477c64[_0xae74('0x2')];return client[_0xae74('0x3')](_0xae74('0x4'),{'body':_0x477c64,'log':_0xae74('0x4')});};exports[_0xae74('0x5')]=function(_0x3fc83c){return client[_0xae74('0x3')](_0xae74('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0xae74('0x7')](_0x3fc83c,'minutes')[_0xae74('0x8')](_0xae74('0x9')),moment()[_0xae74('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0xae74('0xa')});};exports[_0xae74('0xb')]=function(){return function(){return client[_0xae74('0x3')](_0xae74('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf']('day')[_0xae74('0x8')](_0xae74('0x9')),moment()['endOf']('day')[_0xae74('0x8')](_0xae74('0x9'))]},'campaigntype':_0xae74('0x2')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0xae74('0xd')]=function(){return function(){return client[_0xae74('0x3')](_0xae74('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xae74('0xf')](_0xae74('0x10'))[_0xae74('0x8')](_0xae74('0x9')),moment()[_0xae74('0x11')]('day')[_0xae74('0x8')](_0xae74('0x9'))]},'campaigntype':'ivr'},'raw':![]},'log':_0xae74('0xe')});};};
\ No newline at end of file
+var _0x04de=['avgHandleTime','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day','endOf','GetCampaignHopperHistory','startOf','ivr','../client','moment','createHistory','campaign','queue','Request','CreateCmHopperHistory'];(function(_0x2523d8,_0x1b3ee8){var _0x4a1b37=function(_0x415390){while(--_0x415390){_0x2523d8['push'](_0x2523d8['shift']());}};_0x4a1b37(++_0x1b3ee8);}(_0x04de,0x107));var _0xe04d=function(_0x38e036,_0x141872){_0x38e036=_0x38e036-0x0;var _0x5a4e14=_0x04de[_0x38e036];return _0x5a4e14;};'use strict';var client=require(_0xe04d('0x0'));var moment=require(_0xe04d('0x1'));exports[_0xe04d('0x2')]=function(_0x299552){_0x299552[_0xe04d('0x3')]=_0x299552[_0xe04d('0x4')];return client[_0xe04d('0x5')](_0xe04d('0x6'),{'body':_0x299552,'log':_0xe04d('0x6')});};exports[_0xe04d('0x7')]=function(_0x3a0e3b){return client['Request']('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x3a0e3b,'minutes')[_0xe04d('0x8')](_0xe04d('0x9')),moment()[_0xe04d('0x8')](_0xe04d('0x9'))]}},'raw':![]},'log':_0xe04d('0xa')});};exports[_0xe04d('0xb')]=function(){return function(){return client[_0xe04d('0x5')](_0xe04d('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xe04d('0xd'))[_0xe04d('0x8')](_0xe04d('0x9')),moment()[_0xe04d('0xe')](_0xe04d('0xd'))[_0xe04d('0x8')](_0xe04d('0x9'))]},'campaigntype':_0xe04d('0x4')},'raw':![]},'log':_0xe04d('0xc')});};};exports['getCampaignHopperHistory']=function(){return function(){return client[_0xe04d('0x5')](_0xe04d('0xf'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xe04d('0x10')](_0xe04d('0xd'))[_0xe04d('0x8')](_0xe04d('0x9')),moment()[_0xe04d('0xe')](_0xe04d('0xd'))[_0xe04d('0x8')](_0xe04d('0x9'))]},'campaigntype':_0xe04d('0x11')},'raw':![]},'log':_0xe04d('0xf')});};};
\ No newline at end of file
index 8934955..88d60f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x758a=['NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name','description','minrate','modem','gateway','faxdetect','TrunkId','ListId','key','Trunk','active'];(function(_0x14490c,_0x50e8ab){var _0x2f6825=function(_0x477b03){while(--_0x477b03){_0x14490c['push'](_0x14490c['shift']());}};_0x2f6825(++_0x50e8ab);}(_0x758a,0x1d1));var _0xa758=function(_0xc8248f,_0x955127){_0xc8248f=_0xc8248f-0x0;var _0x371f63=_0x758a[_0xc8248f];return _0x371f63;};'use strict';var client=require(_0xa758('0x0'));exports[_0xa758('0x1')]=function(){return function(){return client[_0xa758('0x2')](_0xa758('0x3'),{'options':{'raw':![],'attributes':['id',_0xa758('0x4'),_0xa758('0x5'),'ecm','headerinfo','localstationid',_0xa758('0x6'),'maxrate',_0xa758('0x7'),_0xa758('0x8'),_0xa758('0x9'),'t38timeout','tech',_0xa758('0xa'),_0xa758('0xb'),_0xa758('0xc')],'include':[{'model':_0xa758('0xd'),'as':_0xa758('0xd'),'attributes':['id',_0xa758('0x4'),'callerid',_0xa758('0xe')]}]},'log':'getFaxAccount'});};};exports['notify']=function(_0x267135,_0x1cfe45){return client['Request'](_0xa758('0xf'),{'account':{'id':_0x267135},'body':_0x1cfe45,'log':_0xa758('0xf')});};
\ No newline at end of file
+var _0x1f92=['t38timeout','tech','TrunkId','ListId','Trunk','name','getFaxAccount','notify','NotifyFaxAccount','../client','Request','GetFaxAccount','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0x1f92,0x1ad));var _0x21f9=function(_0x2c176d,_0x4cbb1a){_0x2c176d=_0x2c176d-0x0;var _0x57e5ff=_0x1f92[_0x2c176d];return _0x57e5ff;};'use strict';var client=require(_0x21f9('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0x21f9('0x1')](_0x21f9('0x2'),{'options':{'raw':![],'attributes':['id','name','description',_0x21f9('0x3'),_0x21f9('0x4'),_0x21f9('0x5'),_0x21f9('0x6'),_0x21f9('0x7'),_0x21f9('0x8'),_0x21f9('0x9'),_0x21f9('0xa'),_0x21f9('0xb'),_0x21f9('0xc'),_0x21f9('0xd'),_0x21f9('0xe'),'key'],'include':[{'model':_0x21f9('0xf'),'as':_0x21f9('0xf'),'attributes':['id',_0x21f9('0x10'),'callerid','active']}]},'log':_0x21f9('0x11')});};};exports[_0x21f9('0x12')]=function(_0x5c6b42,_0x2970c1){return client[_0x21f9('0x1')](_0x21f9('0x13'),{'account':{'id':_0x5c6b42},'body':_0x2970c1,'log':_0x21f9('0x13')});};
\ No newline at end of file
index e0ffff4..c612d09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b0=['../client','Request','UpdateFaxMessage'];(function(_0xa106dd,_0x51d09e){var _0x52f7db=function(_0x3eb442){while(--_0x3eb442){_0xa106dd['push'](_0xa106dd['shift']());}};_0x52f7db(++_0x51d09e);}(_0x87b0,0x144));var _0x087b=function(_0x19e38e,_0xb15cc7){_0x19e38e=_0x19e38e-0x0;var _0x14bec3=_0x87b0[_0x19e38e];return _0x14bec3;};'use strict';var client=require(_0x087b('0x0'));exports['update']=function(_0x1d87cc,_0x1bc1c2){return client[_0x087b('0x1')](_0x087b('0x2'),{'body':_0x1bc1c2,'options':{'where':{'AttachmentId':_0x1d87cc}},'log':_0x087b('0x2')});};
\ No newline at end of file
+var _0x667b=['UpdateFaxMessage','../client','update','Request'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x667b,0x69));var _0xb667=function(_0x21e97b,_0x65a77f){_0x21e97b=_0x21e97b-0x0;var _0x10ba44=_0x667b[_0x21e97b];return _0x10ba44;};'use strict';var client=require(_0xb667('0x0'));exports[_0xb667('0x1')]=function(_0x2995fd,_0x33f346){return client[_0xb667('0x2')]('UpdateFaxMessage',{'body':_0x33f346,'options':{'where':{'AttachmentId':_0x2995fd}},'log':_0xb667('0x3')});};
\ No newline at end of file
index 346fcd3..e641943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6582=['Descriptions','key','keyType','keyContent','variableName','Fields','customField','Tag','Tags','GetDeskAccount','getDeskAccounts','Request','name','description','username','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','Variable'];(function(_0x1298e7,_0x91dbcf){var _0x5f1c64=function(_0x182ffd){while(--_0x182ffd){_0x1298e7['push'](_0x1298e7['shift']());}};_0x5f1c64(++_0x91dbcf);}(_0x6582,0x11d));var _0x2658=function(_0x27d020,_0x3e50af){_0x27d020=_0x27d020-0x0;var _0x14a24b=_0x6582[_0x27d020];return _0x14a24b;};'use strict';var client=require('../../client');exports[_0x2658('0x0')]=function(){return function(_0x2bfad2){return client[_0x2658('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0x2658('0x2'),_0x2658('0x3'),_0x2658('0x4'),'password',_0x2658('0x5'),_0x2658('0x6'),_0x2658('0x7'),_0x2658('0x8')],'include':[{'model':_0x2658('0x9'),'as':_0x2658('0xa'),'attributes':['id','name'],'include':[{'model':_0x2658('0xb'),'as':_0x2658('0xc'),'attributes':['id',_0x2658('0x7'),_0x2658('0xd'),'variableName'],'include':[{'model':'Variable','as':_0x2658('0xe'),'attributes':['id',_0x2658('0x2')]}]},{'model':'DeskField','as':_0x2658('0xf'),'attributes':['id',_0x2658('0x7'),'content',_0x2658('0x10'),_0x2658('0x11'),_0x2658('0x12'),_0x2658('0x13')],'include':[{'model':_0x2658('0xe'),'as':'Variable','attributes':['id',_0x2658('0x2')]}]},{'model':_0x2658('0xb'),'as':_0x2658('0x14'),'attributes':['id',_0x2658('0x7'),_0x2658('0xd'),'idField','nameField',_0x2658('0x15'),_0x2658('0x13')],'include':[{'model':_0x2658('0xe'),'as':_0x2658('0xe'),'attributes':['id',_0x2658('0x2')]}]},{'model':_0x2658('0x16'),'as':_0x2658('0x17'),'attributes':['id',_0x2658('0x2')]}]}]},'log':_0x2658('0x18')});};};
\ No newline at end of file
+var _0x4dde=['Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','../../client','GetDeskAccount','username','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','name','DeskField'];(function(_0x124298,_0x542004){var _0x35ac24=function(_0x49afe8){while(--_0x49afe8){_0x124298['push'](_0x124298['shift']());}};_0x35ac24(++_0x542004);}(_0x4dde,0x79));var _0xe4dd=function(_0x568353,_0x1c6db3){_0x568353=_0x568353-0x0;var _0x132eb7=_0x4dde[_0x568353];return _0x132eb7;};'use strict';var client=require(_0xe4dd('0x0'));exports['getDeskAccounts']=function(){return function(_0x2917ea){return client['Request'](_0xe4dd('0x1'),{'options':{'raw':![],'attributes':['id','name','description',_0xe4dd('0x2'),'password',_0xe4dd('0x3'),_0xe4dd('0x4'),_0xe4dd('0x5'),_0xe4dd('0x6')],'include':[{'model':_0xe4dd('0x7'),'as':_0xe4dd('0x8'),'attributes':['id',_0xe4dd('0x9')],'include':[{'model':_0xe4dd('0xa'),'as':_0xe4dd('0xb'),'attributes':['id',_0xe4dd('0x5'),_0xe4dd('0xc'),_0xe4dd('0xd')],'include':[{'model':_0xe4dd('0xe'),'as':'Variable','attributes':['id',_0xe4dd('0x9')]}]},{'model':_0xe4dd('0xa'),'as':_0xe4dd('0xf'),'attributes':['id',_0xe4dd('0x5'),'content',_0xe4dd('0x10'),_0xe4dd('0x11'),_0xe4dd('0x12'),_0xe4dd('0xd')],'include':[{'model':_0xe4dd('0xe'),'as':_0xe4dd('0xe'),'attributes':['id',_0xe4dd('0x9')]}]},{'model':_0xe4dd('0xa'),'as':_0xe4dd('0x13'),'attributes':['id','type',_0xe4dd('0xc'),_0xe4dd('0x14'),_0xe4dd('0x15'),'customField',_0xe4dd('0xd')],'include':[{'model':_0xe4dd('0xe'),'as':'Variable','attributes':['id',_0xe4dd('0x9')]}]},{'model':'Tag','as':'Tags','attributes':['id',_0xe4dd('0x9')]}]}]},'log':_0xe4dd('0x1')});};};
\ No newline at end of file
index 3dba1ef..e88a6f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8769=['data5','data7','../../client','getDynamics365Accounts','Request','name','username','tenantId','clientId','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','content','variableName','Variable','Descriptions','key','Fields','idField','nameField','customField','CloudProvider'];(function(_0x17a28d,_0x48bda8){var _0x636d2d=function(_0x327a7d){while(--_0x327a7d){_0x17a28d['push'](_0x17a28d['shift']());}};_0x636d2d(++_0x48bda8);}(_0x8769,0x110));var _0x9876=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x8769[_0x199572];return _0x13cfa3;};'use strict';var client=require(_0x9876('0x0'));exports[_0x9876('0x1')]=function(){return function(_0x4ec1e7){return client[_0x9876('0x2')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0x9876('0x3'),_0x9876('0x4'),'password','remoteUri',_0x9876('0x5'),_0x9876('0x6'),'clientSecret',_0x9876('0x7'),_0x9876('0x8'),'modernAuthentication'],'include':[{'model':_0x9876('0x9'),'as':_0x9876('0xa'),'attributes':['id',_0x9876('0x3'),_0x9876('0xb'),_0x9876('0xc'),_0x9876('0xd'),_0x9876('0xe')],'include':[{'model':_0x9876('0xf'),'as':_0x9876('0x10'),'attributes':['id',_0x9876('0x11'),_0x9876('0x12'),_0x9876('0x13')],'include':[{'model':_0x9876('0x14'),'as':_0x9876('0x14'),'attributes':['id',_0x9876('0x3')]}]},{'model':'Dynamics365Field','as':_0x9876('0x15'),'attributes':['id','type',_0x9876('0x12'),_0x9876('0x16'),'keyType','keyContent',_0x9876('0x13')],'include':[{'model':'Variable','as':_0x9876('0x14'),'attributes':['id',_0x9876('0x3')]}]},{'model':_0x9876('0xf'),'as':_0x9876('0x17'),'attributes':['id','type',_0x9876('0x12'),_0x9876('0x18'),_0x9876('0x19'),_0x9876('0x1a'),_0x9876('0x13')],'include':[{'model':_0x9876('0x14'),'as':_0x9876('0x14'),'attributes':['id',_0x9876('0x3')]}]}]},{'model':_0x9876('0x1b'),'as':_0x9876('0x1b'),'attributes':['id','data2',_0x9876('0x1c'),_0x9876('0x1d')]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0xb78e=['username','password','remoteUri','tenantId','clientId','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','CloudProvider','data2','data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name'];(function(_0xbec8e6,_0x2841b5){var _0x4aa6f2=function(_0x583a0a){while(--_0x583a0a){_0xbec8e6['push'](_0xbec8e6['shift']());}};_0x4aa6f2(++_0x2841b5);}(_0xb78e,0x1c9));var _0xeb78=function(_0xe5633e,_0x34e94c){_0xe5633e=_0xe5633e-0x0;var _0x33c471=_0xb78e[_0xe5633e];return _0x33c471;};'use strict';var client=require(_0xeb78('0x0'));exports[_0xeb78('0x1')]=function(){return function(_0x4b8534){return client[_0xeb78('0x2')](_0xeb78('0x3'),{'options':{'raw':![],'attributes':['id',_0xeb78('0x4'),_0xeb78('0x5'),_0xeb78('0x6'),_0xeb78('0x7'),_0xeb78('0x8'),_0xeb78('0x9'),'clientSecret',_0xeb78('0xa'),_0xeb78('0xb'),_0xeb78('0xc')],'include':[{'model':_0xeb78('0xd'),'as':_0xeb78('0xe'),'attributes':['id',_0xeb78('0x4'),_0xeb78('0xf'),'moduleCreate',_0xeb78('0x10'),_0xeb78('0x11')],'include':[{'model':_0xeb78('0x12'),'as':_0xeb78('0x13'),'attributes':['id',_0xeb78('0x14'),_0xeb78('0x15'),_0xeb78('0x16')],'include':[{'model':_0xeb78('0x17'),'as':_0xeb78('0x17'),'attributes':['id','name']}]},{'model':_0xeb78('0x12'),'as':_0xeb78('0x18'),'attributes':['id',_0xeb78('0x14'),_0xeb78('0x15'),_0xeb78('0x19'),_0xeb78('0x1a'),_0xeb78('0x1b'),_0xeb78('0x16')],'include':[{'model':_0xeb78('0x17'),'as':_0xeb78('0x17'),'attributes':['id','name']}]},{'model':_0xeb78('0x12'),'as':_0xeb78('0x1c'),'attributes':['id','type','content','idField',_0xeb78('0x1d'),'customField',_0xeb78('0x16')],'include':[{'model':_0xeb78('0x17'),'as':'Variable','attributes':['id',_0xeb78('0x4')]}]}]},{'model':'CloudProvider','as':_0xeb78('0x1e'),'attributes':['id',_0xeb78('0x1f'),'data5',_0xeb78('0x20')]}]},'log':_0xeb78('0x3')});};};
\ No newline at end of file
index 0e98ce8..0901bec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6d7=['FreshdeskField','Subjects','type','content','variableName','Variable','key','keyType','Fields','idField','nameField','customField','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','remoteUri','Configurations'];(function(_0x4a367f,_0x4e05f2){var _0x2bedd5=function(_0x5b5e70){while(--_0x5b5e70){_0x4a367f['push'](_0x4a367f['shift']());}};_0x2bedd5(++_0x4e05f2);}(_0xe6d7,0x1ae));var _0x7e6d=function(_0x2b8bbe,_0x37eb6a){_0x2b8bbe=_0x2b8bbe-0x0;var _0x1bb210=_0xe6d7[_0x2b8bbe];return _0x1bb210;};'use strict';var client=require('../../client');exports[_0x7e6d('0x0')]=function(){return function(_0x5499e3){return client[_0x7e6d('0x1')](_0x7e6d('0x2'),{'options':{'raw':![],'attributes':['id',_0x7e6d('0x3'),_0x7e6d('0x4'),'apiKey',_0x7e6d('0x5'),'serverUrl'],'include':[{'model':'FreshdeskConfiguration','as':_0x7e6d('0x6'),'attributes':['id',_0x7e6d('0x3')],'include':[{'model':'Tag','attributes':['id',_0x7e6d('0x3')]},{'model':_0x7e6d('0x7'),'as':_0x7e6d('0x8'),'attributes':['id',_0x7e6d('0x9'),_0x7e6d('0xa'),_0x7e6d('0xb')],'include':[{'model':_0x7e6d('0xc'),'as':_0x7e6d('0xc'),'attributes':['id',_0x7e6d('0x3')]}]},{'model':_0x7e6d('0x7'),'as':'Descriptions','attributes':['id',_0x7e6d('0x9'),_0x7e6d('0xa'),_0x7e6d('0xd'),_0x7e6d('0xe'),'keyContent',_0x7e6d('0xb')],'include':[{'model':_0x7e6d('0xc'),'as':'Variable','attributes':['id',_0x7e6d('0x3')]}]},{'model':_0x7e6d('0x7'),'as':_0x7e6d('0xf'),'attributes':['id',_0x7e6d('0x9'),_0x7e6d('0xa'),_0x7e6d('0x10'),_0x7e6d('0x11'),_0x7e6d('0x12'),_0x7e6d('0xb')],'include':[{'model':_0x7e6d('0xc'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x7e6d('0x2')});};};
\ No newline at end of file
+var _0x30fc=['variableName','Variable','key','keyType','keyContent','Fields','idField','customField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','type','content'];(function(_0x314922,_0x46acda){var _0x363669=function(_0x5896ef){while(--_0x5896ef){_0x314922['push'](_0x314922['shift']());}};_0x363669(++_0x46acda);}(_0x30fc,0x64));var _0xc30f=function(_0x4ec7f2,_0x3d92d2){_0x4ec7f2=_0x4ec7f2-0x0;var _0x118004=_0x30fc[_0x4ec7f2];return _0x118004;};'use strict';var client=require(_0xc30f('0x0'));exports[_0xc30f('0x1')]=function(){return function(_0x587cb7){return client[_0xc30f('0x2')](_0xc30f('0x3'),{'options':{'raw':![],'attributes':['id',_0xc30f('0x4'),_0xc30f('0x5'),'apiKey',_0xc30f('0x6'),_0xc30f('0x7')],'include':[{'model':_0xc30f('0x8'),'as':_0xc30f('0x9'),'attributes':['id',_0xc30f('0x4')],'include':[{'model':_0xc30f('0xa'),'attributes':['id','name']},{'model':_0xc30f('0xb'),'as':_0xc30f('0xc'),'attributes':['id',_0xc30f('0xd'),_0xc30f('0xe'),_0xc30f('0xf')],'include':[{'model':_0xc30f('0x10'),'as':_0xc30f('0x10'),'attributes':['id',_0xc30f('0x4')]}]},{'model':_0xc30f('0xb'),'as':'Descriptions','attributes':['id',_0xc30f('0xd'),'content',_0xc30f('0x11'),_0xc30f('0x12'),_0xc30f('0x13'),_0xc30f('0xf')],'include':[{'model':_0xc30f('0x10'),'as':_0xc30f('0x10'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':_0xc30f('0x14'),'attributes':['id',_0xc30f('0xd'),_0xc30f('0xe'),_0xc30f('0x15'),'nameField',_0xc30f('0x16'),_0xc30f('0xf')],'include':[{'model':_0xc30f('0x10'),'as':_0xc30f('0x10'),'attributes':['id',_0xc30f('0x4')]}]}]}]},'log':_0xc30f('0x3')});};};
\ No newline at end of file
index e990cd4..ce22fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9206=['name','remoteUri','serverUrl','Subjects','type','content','variableName','FreshsalesField','Descriptions','key','keyType','keyContent','Variable','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9206,0x176));var _0x6920=function(_0x18c627,_0x926f18){_0x18c627=_0x18c627-0x0;var _0x1e9cbf=_0x9206[_0x18c627];return _0x1e9cbf;};'use strict';var client=require(_0x6920('0x0'));exports[_0x6920('0x1')]=function(){return function(_0x3896bc){return client[_0x6920('0x2')](_0x6920('0x3'),{'options':{'raw':![],'attributes':['id',_0x6920('0x4'),'username','apiKey',_0x6920('0x5'),_0x6920('0x6')],'include':[{'model':'FreshsalesConfiguration','as':'Configurations','attributes':['id',_0x6920('0x4')],'include':[{'model':'FreshsalesField','as':_0x6920('0x7'),'attributes':['id',_0x6920('0x8'),_0x6920('0x9'),_0x6920('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x6920('0x4')]}]},{'model':_0x6920('0xb'),'as':_0x6920('0xc'),'attributes':['id',_0x6920('0x8'),_0x6920('0x9'),_0x6920('0xd'),_0x6920('0xe'),_0x6920('0xf'),_0x6920('0xa')],'include':[{'model':_0x6920('0x10'),'as':_0x6920('0x10'),'attributes':['id',_0x6920('0x4')]}]}]}]},'log':_0x6920('0x11')});};};
\ No newline at end of file
+var _0x553a=['variableName','GetFreshsalesccount','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','remoteUri','Configurations','Subjects','type','content','Variable','FreshsalesField','Descriptions','key','keyContent'];(function(_0x1d5759,_0x417e09){var _0x51ddcd=function(_0x4e3f43){while(--_0x4e3f43){_0x1d5759['push'](_0x1d5759['shift']());}};_0x51ddcd(++_0x417e09);}(_0x553a,0x192));var _0xa553=function(_0x64bbb9,_0x909c76){_0x64bbb9=_0x64bbb9-0x0;var _0x5c3707=_0x553a[_0x64bbb9];return _0x5c3707;};'use strict';var client=require('../../client');exports[_0xa553('0x0')]=function(){return function(_0x493b9c){return client[_0xa553('0x1')](_0xa553('0x2'),{'options':{'raw':![],'attributes':['id',_0xa553('0x3'),'username','apiKey',_0xa553('0x4'),'serverUrl'],'include':[{'model':'FreshsalesConfiguration','as':_0xa553('0x5'),'attributes':['id','name'],'include':[{'model':'FreshsalesField','as':_0xa553('0x6'),'attributes':['id',_0xa553('0x7'),_0xa553('0x8'),'variableName'],'include':[{'model':_0xa553('0x9'),'as':'Variable','attributes':['id',_0xa553('0x3')]}]},{'model':_0xa553('0xa'),'as':_0xa553('0xb'),'attributes':['id','type','content',_0xa553('0xc'),'keyType',_0xa553('0xd'),_0xa553('0xe')],'include':[{'model':_0xa553('0x9'),'as':'Variable','attributes':['id',_0xa553('0x3')]}]}]}]},'log':_0xa553('0xf')});};};
\ No newline at end of file
index e0c3803..70b6ffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36d3=['SalesforceField','Subjects','Variable','Descriptions','Fields','GetSalesforceAccount','../../client','getSalesforceAccounts','name','username','password','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchContact','additionalSearchLead'];(function(_0x4429e0,_0xee6f1f){var _0x51a5b3=function(_0x16eb11){while(--_0x16eb11){_0x4429e0['push'](_0x4429e0['shift']());}};_0x51a5b3(++_0xee6f1f);}(_0x36d3,0xb5));var _0x336d=function(_0x2ebfea,_0x3d0a86){_0x2ebfea=_0x2ebfea-0x0;var _0x3dc6aa=_0x36d3[_0x2ebfea];return _0x3dc6aa;};'use strict';var client=require(_0x336d('0x0'));exports[_0x336d('0x1')]=function(){return function(_0x1d56a8){return client['Request']('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0x336d('0x2'),_0x336d('0x3'),_0x336d('0x4'),_0x336d('0x5'),_0x336d('0x6'),_0x336d('0x7'),_0x336d('0x8'),_0x336d('0x9'),_0x336d('0xa')],'include':[{'model':_0x336d('0xb'),'as':_0x336d('0xc'),'attributes':['id',_0x336d('0x2'),_0x336d('0xd'),_0x336d('0xe'),_0x336d('0xf'),_0x336d('0x10'),'additionalSearchAccount',_0x336d('0x11'),_0x336d('0x12')],'include':[{'model':_0x336d('0x13'),'as':_0x336d('0x14'),'include':[{'model':'Variable','as':_0x336d('0x15'),'attributes':['id',_0x336d('0x2')]}]},{'model':_0x336d('0x13'),'as':_0x336d('0x16'),'include':[{'model':_0x336d('0x15'),'as':_0x336d('0x15'),'attributes':['id',_0x336d('0x2')]}]},{'model':_0x336d('0x13'),'as':_0x336d('0x17'),'include':[{'model':_0x336d('0x15'),'as':_0x336d('0x15'),'attributes':['id',_0x336d('0x2')]}]}]}]},'log':_0x336d('0x18')});};};
\ No newline at end of file
+var _0x48ae=['additionalSearchLead','SalesforceField','Subjects','Variable','name','Descriptions','Fields','../../client','GetSalesforceAccount','username','password','securityToken','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact'];(function(_0x3cec20,_0x584d48){var _0x221501=function(_0x1f27bc){while(--_0x1f27bc){_0x3cec20['push'](_0x3cec20['shift']());}};_0x221501(++_0x584d48);}(_0x48ae,0x142));var _0xe48a=function(_0x2daf46,_0x295791){_0x2daf46=_0x2daf46-0x0;var _0x53dcb0=_0x48ae[_0x2daf46];return _0x53dcb0;};'use strict';var client=require(_0xe48a('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x599123){return client['Request'](_0xe48a('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xe48a('0x2'),_0xe48a('0x3'),'remoteUri','clientId','clientSecret',_0xe48a('0x4'),'serverUrl',_0xe48a('0x5')],'include':[{'model':_0xe48a('0x6'),'as':_0xe48a('0x7'),'attributes':['id','name',_0xe48a('0x8'),_0xe48a('0x9'),_0xe48a('0xa'),_0xe48a('0xb'),_0xe48a('0xc'),_0xe48a('0xd'),_0xe48a('0xe')],'include':[{'model':_0xe48a('0xf'),'as':_0xe48a('0x10'),'include':[{'model':_0xe48a('0x11'),'as':_0xe48a('0x11'),'attributes':['id',_0xe48a('0x12')]}]},{'model':_0xe48a('0xf'),'as':_0xe48a('0x13'),'include':[{'model':_0xe48a('0x11'),'as':_0xe48a('0x11'),'attributes':['id',_0xe48a('0x12')]}]},{'model':_0xe48a('0xf'),'as':_0xe48a('0x14'),'include':[{'model':_0xe48a('0x11'),'as':_0xe48a('0x11'),'attributes':['id',_0xe48a('0x12')]}]}]}]},'log':_0xe48a('0x1')});};};
\ No newline at end of file
index a68961f..07a4dd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['Descriptions','content','key','keyType','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','Request','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','Subjects','type','variableName','Variable'];(function(_0x3a221d,_0x4f2c2f){var _0x58a04f=function(_0x179220){while(--_0x179220){_0x3a221d['push'](_0x3a221d['shift']());}};_0x58a04f(++_0x4f2c2f);}(_0x4975,0x86));var _0x5497=function(_0x5e531c,_0x3dea76){_0x5e531c=_0x5e531c-0x0;var _0x767cff=_0x4975[_0x5e531c];return _0x767cff;};'use strict';var client=require(_0x5497('0x0'));exports['getServicenowAccounts']=function(){return function(_0x474989){return client[_0x5497('0x1')](_0x5497('0x2'),{'options':{'raw':![],'attributes':['id',_0x5497('0x3'),_0x5497('0x4'),_0x5497('0x5'),_0x5497('0x6'),_0x5497('0x7'),_0x5497('0x8'),_0x5497('0x9')],'include':[{'model':'ServicenowConfiguration','as':_0x5497('0xa'),'attributes':['id','name'],'include':[{'model':_0x5497('0xb'),'as':_0x5497('0xc'),'attributes':['id',_0x5497('0xd'),'content',_0x5497('0xe')],'include':[{'model':'Variable','as':_0x5497('0xf'),'attributes':['id',_0x5497('0x3')]}]},{'model':_0x5497('0xb'),'as':_0x5497('0x10'),'attributes':['id',_0x5497('0xd'),_0x5497('0x11'),_0x5497('0x12'),_0x5497('0x13'),'keyContent','variableName'],'include':[{'model':'Variable','as':_0x5497('0xf'),'attributes':['id',_0x5497('0x3')]}]},{'model':_0x5497('0xb'),'as':_0x5497('0x14'),'attributes':['id',_0x5497('0xd'),_0x5497('0x11'),_0x5497('0x15'),_0x5497('0x16'),_0x5497('0x17'),_0x5497('0xe')],'include':[{'model':'Variable','as':_0x5497('0xf'),'attributes':['id','name']}]}]}]},'log':_0x5497('0x18')});};};
\ No newline at end of file
+var _0x5fab=['../../client','getServicenowAccounts','Request','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','ServicenowField','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','nameField','customField'];(function(_0xbf8fbe,_0x4ac2f1){var _0x58b291=function(_0x5060ad){while(--_0x5060ad){_0xbf8fbe['push'](_0xbf8fbe['shift']());}};_0x58b291(++_0x4ac2f1);}(_0x5fab,0x177));var _0xb5fa=function(_0x54945e,_0x42f71a){_0x54945e=_0x54945e-0x0;var _0x36eabd=_0x5fab[_0x54945e];return _0x36eabd;};'use strict';var client=require(_0xb5fa('0x0'));exports[_0xb5fa('0x1')]=function(){return function(_0x4c67f9){return client[_0xb5fa('0x2')](_0xb5fa('0x3'),{'options':{'raw':![],'attributes':['id',_0xb5fa('0x4'),_0xb5fa('0x5'),_0xb5fa('0x6'),_0xb5fa('0x7'),_0xb5fa('0x8'),_0xb5fa('0x9'),_0xb5fa('0xa')],'include':[{'model':_0xb5fa('0xb'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0xb5fa('0xc'),'as':_0xb5fa('0xd'),'attributes':['id',_0xb5fa('0xe'),'content',_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xb5fa('0x11'),'attributes':['id',_0xb5fa('0xe'),_0xb5fa('0x12'),_0xb5fa('0x13'),_0xb5fa('0x14'),_0xb5fa('0x15'),_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]},{'model':_0xb5fa('0xc'),'as':_0xb5fa('0x16'),'attributes':['id','type',_0xb5fa('0x12'),'idField',_0xb5fa('0x17'),_0xb5fa('0x18'),_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
index d7bc544..594b9b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['name','username','password','remoteUri','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','nameField','getSugarcrmAccounts','GetSugarcrmAccount'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x57ca,0x108));var _0xa57c=function(_0xa2c247,_0x9f0ce9){_0xa2c247=_0xa2c247-0x0;var _0x49838a=_0x57ca[_0xa2c247];return _0x49838a;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'serverUrl'],'include':[{'model':_0xa57c('0x6'),'as':_0xa57c('0x7'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),_0xa57c('0xc')],'include':[{'model':'Variable','as':_0xa57c('0xd'),'attributes':['id','name']}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0xe'),'attributes':['id','type',_0xa57c('0xb'),'key',_0xa57c('0xf'),_0xa57c('0x10'),'variableName'],'include':[{'model':_0xa57c('0xd'),'as':'Variable','attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0x11'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),'idField',_0xa57c('0x12'),'customField',_0xa57c('0xc')],'include':[{'model':_0xa57c('0xd'),'as':_0xa57c('0xd'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x1')});};};
\ No newline at end of file
+var _0x57ca=['name','username','password','remoteUri','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','nameField','getSugarcrmAccounts','GetSugarcrmAccount'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x57ca,0x108));var _0xa57c=function(_0x107778,_0x4e4ba9){_0x107778=_0x107778-0x0;var _0x48ea0e=_0x57ca[_0x107778];return _0x48ea0e;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'serverUrl'],'include':[{'model':_0xa57c('0x6'),'as':_0xa57c('0x7'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),_0xa57c('0xc')],'include':[{'model':'Variable','as':_0xa57c('0xd'),'attributes':['id','name']}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0xe'),'attributes':['id','type',_0xa57c('0xb'),'key',_0xa57c('0xf'),_0xa57c('0x10'),'variableName'],'include':[{'model':_0xa57c('0xd'),'as':'Variable','attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0x11'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),'idField',_0xa57c('0x12'),'customField',_0xa57c('0xc')],'include':[{'model':_0xa57c('0xd'),'as':_0xa57c('0xd'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x1')});};};
\ No newline at end of file
index 65631a1..2d97e06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c77=['Variable','Descriptions','content','keyType','keyContent','Fields','idField','nameField','customField','../../client','GetVtigerAccount','name','description','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','type','variableName'];(function(_0x26fb51,_0x43a836){var _0x57e839=function(_0x3ce1bf){while(--_0x3ce1bf){_0x26fb51['push'](_0x26fb51['shift']());}};_0x57e839(++_0x43a836);}(_0x8c77,0xf9));var _0x78c7=function(_0x5b4101,_0x50da18){_0x5b4101=_0x5b4101-0x0;var _0x47df95=_0x8c77[_0x5b4101];return _0x47df95;};'use strict';var client=require(_0x78c7('0x0'));exports['getVtigerAccounts']=function(){return function(_0x573899){return client['Request'](_0x78c7('0x1'),{'options':{'raw':![],'attributes':['id',_0x78c7('0x2'),_0x78c7('0x3'),'username',_0x78c7('0x4'),_0x78c7('0x5'),_0x78c7('0x6')],'include':[{'model':_0x78c7('0x7'),'as':_0x78c7('0x8'),'attributes':['id',_0x78c7('0x2')],'include':[{'model':'VtigerField','as':'Subjects','attributes':['id',_0x78c7('0x9'),'content',_0x78c7('0xa')],'include':[{'model':_0x78c7('0xb'),'as':_0x78c7('0xb'),'attributes':['id',_0x78c7('0x2')]}]},{'model':'VtigerField','as':_0x78c7('0xc'),'attributes':['id','type',_0x78c7('0xd'),'key',_0x78c7('0xe'),_0x78c7('0xf'),_0x78c7('0xa')],'include':[{'model':_0x78c7('0xb'),'as':_0x78c7('0xb'),'attributes':['id',_0x78c7('0x2')]}]},{'model':'VtigerField','as':_0x78c7('0x10'),'attributes':['id','type',_0x78c7('0xd'),_0x78c7('0x11'),_0x78c7('0x12'),_0x78c7('0x13'),_0x78c7('0xa')],'include':[{'model':_0x78c7('0xb'),'as':'Variable','attributes':['id',_0x78c7('0x2')]}]}]}]},'log':_0x78c7('0x1')});};};
\ No newline at end of file
+var _0x6e07=['content','keyType','keyContent','Fields','idField','nameField','../../client','Request','GetVtigerAccount','name','description','username','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','type','variableName','Variable','VtigerField','Descriptions'];(function(_0xfb7379,_0x408efa){var _0xb73697=function(_0x57ce75){while(--_0x57ce75){_0xfb7379['push'](_0xfb7379['shift']());}};_0xb73697(++_0x408efa);}(_0x6e07,0x1be));var _0x76e0=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x6e07[_0x1facfa];return _0x9ec701;};'use strict';var client=require(_0x76e0('0x0'));exports['getVtigerAccounts']=function(){return function(_0x386061){return client[_0x76e0('0x1')](_0x76e0('0x2'),{'options':{'raw':![],'attributes':['id',_0x76e0('0x3'),_0x76e0('0x4'),_0x76e0('0x5'),_0x76e0('0x6'),_0x76e0('0x7'),_0x76e0('0x8')],'include':[{'model':_0x76e0('0x9'),'as':_0x76e0('0xa'),'attributes':['id',_0x76e0('0x3')],'include':[{'model':'VtigerField','as':'Subjects','attributes':['id',_0x76e0('0xb'),'content',_0x76e0('0xc')],'include':[{'model':_0x76e0('0xd'),'as':_0x76e0('0xd'),'attributes':['id','name']}]},{'model':_0x76e0('0xe'),'as':_0x76e0('0xf'),'attributes':['id',_0x76e0('0xb'),_0x76e0('0x10'),'key',_0x76e0('0x11'),_0x76e0('0x12'),_0x76e0('0xc')],'include':[{'model':_0x76e0('0xd'),'as':_0x76e0('0xd'),'attributes':['id',_0x76e0('0x3')]}]},{'model':_0x76e0('0xe'),'as':_0x76e0('0x13'),'attributes':['id',_0x76e0('0xb'),_0x76e0('0x10'),_0x76e0('0x14'),_0x76e0('0x15'),'customField',_0x76e0('0xc')],'include':[{'model':_0x76e0('0xd'),'as':_0x76e0('0xd'),'attributes':['id',_0x76e0('0x3')]}]}]}]},'log':_0x76e0('0x2')});};};
\ No newline at end of file
index 6ed7544..eaca8e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd7=['customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','username','password','token','serverUrl','type','ZendeskConfiguration','Configurations','name','Tag','ZendeskField','Subjects','variableName','Variable','content','key','keyType','keyContent','Fields','idField'];(function(_0x332bde,_0x14a019){var _0xc0af2d=function(_0x2f25ed){while(--_0x2f25ed){_0x332bde['push'](_0x332bde['shift']());}};_0xc0af2d(++_0x14a019);}(_0xdbd7,0xf1));var _0x7dbd=function(_0x305466,_0x48d81){_0x305466=_0x305466-0x0;var _0x2fafad=_0xdbd7[_0x305466];return _0x2fafad;};'use strict';var client=require(_0x7dbd('0x0'));exports[_0x7dbd('0x1')]=function(){return function(_0x44c855){return client[_0x7dbd('0x2')](_0x7dbd('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x7dbd('0x4'),_0x7dbd('0x5'),_0x7dbd('0x6'),'remoteUri','authType',_0x7dbd('0x7'),_0x7dbd('0x8')],'include':[{'model':_0x7dbd('0x9'),'as':_0x7dbd('0xa'),'attributes':['id',_0x7dbd('0xb')],'include':[{'model':_0x7dbd('0xc'),'attributes':['id',_0x7dbd('0xb')]},{'model':_0x7dbd('0xd'),'as':_0x7dbd('0xe'),'attributes':['id','type','content',_0x7dbd('0xf')],'include':[{'model':_0x7dbd('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':_0x7dbd('0xd'),'as':'Descriptions','attributes':['id',_0x7dbd('0x8'),_0x7dbd('0x11'),_0x7dbd('0x12'),_0x7dbd('0x13'),_0x7dbd('0x14'),_0x7dbd('0xf')],'include':[{'model':_0x7dbd('0x10'),'as':_0x7dbd('0x10'),'attributes':['id',_0x7dbd('0xb')]}]},{'model':_0x7dbd('0xd'),'as':_0x7dbd('0x15'),'attributes':['id',_0x7dbd('0x8'),_0x7dbd('0x11'),_0x7dbd('0x16'),'nameField',_0x7dbd('0x17'),_0x7dbd('0xf')],'include':[{'model':_0x7dbd('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x7dbd('0x3')});};};
\ No newline at end of file
+var _0x8932=['type','ZendeskConfiguration','Configurations','name','ZendeskField','Subjects','variableName','Variable','Descriptions','key','keyContent','content','idField','nameField','GetZendeskAccount','getZendeskAccounts','Request','password','authType','serverUrl'];(function(_0x512f81,_0x4a7986){var _0xa15099=function(_0x1f7371){while(--_0x1f7371){_0x512f81['push'](_0x512f81['shift']());}};_0xa15099(++_0x4a7986);}(_0x8932,0xd7));var _0x2893=function(_0x1bb631,_0x52b6c8){_0x1bb631=_0x1bb631-0x0;var _0x1738dc=_0x8932[_0x1bb631];return _0x1738dc;};'use strict';var client=require('../../client');exports[_0x2893('0x0')]=function(){return function(_0x1d4d16){return client[_0x2893('0x1')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id','name','username',_0x2893('0x2'),'token','remoteUri',_0x2893('0x3'),_0x2893('0x4'),_0x2893('0x5')],'include':[{'model':_0x2893('0x6'),'as':_0x2893('0x7'),'attributes':['id','name'],'include':[{'model':'Tag','attributes':['id',_0x2893('0x8')]},{'model':_0x2893('0x9'),'as':_0x2893('0xa'),'attributes':['id',_0x2893('0x5'),'content',_0x2893('0xb')],'include':[{'model':_0x2893('0xc'),'as':_0x2893('0xc'),'attributes':['id',_0x2893('0x8')]}]},{'model':_0x2893('0x9'),'as':_0x2893('0xd'),'attributes':['id','type','content',_0x2893('0xe'),'keyType',_0x2893('0xf'),'variableName'],'include':[{'model':'Variable','as':_0x2893('0xc'),'attributes':['id',_0x2893('0x8')]}]},{'model':_0x2893('0x9'),'as':'Fields','attributes':['id','type',_0x2893('0x10'),_0x2893('0x11'),_0x2893('0x12'),'customField',_0x2893('0xb')],'include':[{'model':'Variable','as':_0x2893('0xc'),'attributes':['id',_0x2893('0x8')]}]}]}]},'log':_0x2893('0x13')});};};
\ No newline at end of file
index a5522ca..f2f9f25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0367=['Variable','key','keyType','keyContent','Fields','customField','../../client','getZohoAccounts','Request','GetZohoAccount','host','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','name','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x0367,0x1ce));var _0x7036=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x0367[_0x432682];return _0x463d05;};'use strict';var client=require(_0x7036('0x0'));exports[_0x7036('0x1')]=function(){return function(_0x328509){return client[_0x7036('0x2')](_0x7036('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0x7036('0x4'),'zone','clientId',_0x7036('0x5'),_0x7036('0x6'),_0x7036('0x7'),_0x7036('0x8')],'include':[{'model':_0x7036('0x9'),'as':'Configurations','attributes':['id',_0x7036('0xa'),_0x7036('0xb'),_0x7036('0xc'),'description'],'include':[{'model':_0x7036('0xd'),'as':_0x7036('0xe'),'attributes':['id',_0x7036('0xf'),_0x7036('0x10'),_0x7036('0x11')],'include':[{'model':_0x7036('0x12'),'as':_0x7036('0x12'),'attributes':['id',_0x7036('0xa')]}]},{'model':'ZohoField','as':'Descriptions','attributes':['id',_0x7036('0xf'),_0x7036('0x10'),_0x7036('0x13'),_0x7036('0x14'),_0x7036('0x15'),'variableName'],'include':[{'model':_0x7036('0x12'),'as':_0x7036('0x12'),'attributes':['id',_0x7036('0xa')]}]},{'model':_0x7036('0xd'),'as':_0x7036('0x16'),'attributes':['id',_0x7036('0xf'),_0x7036('0x10'),'idField','nameField',_0x7036('0x17'),_0x7036('0x11')],'include':[{'model':_0x7036('0x12'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x7036('0x3')});};};
\ No newline at end of file
+var _0x08ee=['Configurations','name','moduleSearch','ZohoField','type','content','variableName','Variable','Descriptions','keyType','Fields','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','description','host','zone','clientId','clientSecret','serverUrl','code','ZohoConfiguration'];(function(_0x3dbeca,_0x438777){var _0x358a3f=function(_0x235286){while(--_0x235286){_0x3dbeca['push'](_0x3dbeca['shift']());}};_0x358a3f(++_0x438777);}(_0x08ee,0xbc));var _0xe08e=function(_0x1d9dfa,_0x56f7f5){_0x1d9dfa=_0x1d9dfa-0x0;var _0x3178f0=_0x08ee[_0x1d9dfa];return _0x3178f0;};'use strict';var client=require(_0xe08e('0x0'));exports[_0xe08e('0x1')]=function(){return function(_0x3437b3){return client[_0xe08e('0x2')](_0xe08e('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xe08e('0x4'),_0xe08e('0x5'),_0xe08e('0x6'),_0xe08e('0x7'),_0xe08e('0x8'),_0xe08e('0x9'),_0xe08e('0xa'),'refreshToken'],'include':[{'model':_0xe08e('0xb'),'as':_0xe08e('0xc'),'attributes':['id',_0xe08e('0xd'),'moduleCreate',_0xe08e('0xe'),_0xe08e('0x4')],'include':[{'model':_0xe08e('0xf'),'as':'Subjects','attributes':['id',_0xe08e('0x10'),_0xe08e('0x11'),_0xe08e('0x12')],'include':[{'model':'Variable','as':_0xe08e('0x13'),'attributes':['id',_0xe08e('0xd')]}]},{'model':_0xe08e('0xf'),'as':_0xe08e('0x14'),'attributes':['id','type',_0xe08e('0x11'),'key',_0xe08e('0x15'),'keyContent',_0xe08e('0x12')],'include':[{'model':_0xe08e('0x13'),'as':_0xe08e('0x13'),'attributes':['id',_0xe08e('0xd')]}]},{'model':'ZohoField','as':_0xe08e('0x16'),'attributes':['id',_0xe08e('0x10'),_0xe08e('0x11'),'idField',_0xe08e('0x17'),_0xe08e('0x18'),_0xe08e('0x12')],'include':[{'model':_0xe08e('0x13'),'as':_0xe08e('0x13'),'attributes':['id','name']}]}]}]},'log':_0xe08e('0x3')});};};
\ No newline at end of file
index 3e83f67..88c9997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d79=['stack','replace','trim','silly','isArray','length','resolve','every','number','map','interval','concat','IntervalIftime','intervalIftime','dialer','../client'];(function(_0x33c206,_0x151822){var _0x27eb6c=function(_0x11929e){while(--_0x11929e){_0x33c206['push'](_0x33c206['shift']());}};_0x27eb6c(++_0x151822);}(_0x9d79,0x19e));var _0x99d7=function(_0xc3e2db,_0x9a07a5){_0xc3e2db=_0xc3e2db-0x0;var _0x165288=_0x9d79[_0xc3e2db];return _0x165288;};var logger=require('../../../config/logger')(_0x99d7('0x0'));var client=require(_0x99d7('0x1'));function intervalIftime(_0x15cfbd,_0x5235e1){const _0x440105=new Error()[_0x99d7('0x2')][_0x99d7('0x3')](/^Error/,'')[_0x99d7('0x4')]();logger[_0x99d7('0x5')]('intervalIftime\x20called\x20with',_0x15cfbd,_0x5235e1,_0x440105);const _0x5aebc4=Array[_0x99d7('0x6')](_0x15cfbd);if(!_0x15cfbd||_0x5aebc4&&_0x15cfbd[_0x99d7('0x7')]===0x0){return Promise[_0x99d7('0x8')](![]);}else{var _0x26b4a8=[];var _0x1c3072=[];var _0x5b3ecd=_0x5aebc4?_0x15cfbd:[_0x15cfbd];var _0x57e526=_0x5b3ecd[_0x99d7('0x9')](function(_0x3a4718){return typeof _0x3a4718===_0x99d7('0xa');});var _0x29b868=_0x5b3ecd[_0x99d7('0x9')](function(_0x48b272){return typeof _0x48b272==='string';});if(!_0x57e526&&!_0x29b868){_0x26b4a8=_0x5b3ecd['map'](function(_0x84a9e1){return _0x84a9e1['id'];});if(_0x26b4a8[_0x99d7('0x7')]===0x0){_0x1c3072=_0x5b3ecd[_0x99d7('0xb')](function(_0x274393){return _0x274393[_0x99d7('0xc')];});}}else{if(_0x57e526){_0x26b4a8=_0x26b4a8[_0x99d7('0xd')](_0x5b3ecd);}if(_0x29b868){_0x1c3072=_0x1c3072[_0x99d7('0xd')](_0x5b3ecd);}}return client['Request'](_0x99d7('0xe'),{'intervalIds':_0x26b4a8,'intervals':_0x1c3072,'timezone':_0x5235e1,'log':_0x99d7('0xe')});}}exports[_0x99d7('0xf')]=intervalIftime;
\ No newline at end of file
+var _0x88ab=['../../../config/logger','dialer','../client','stack','replace','trim','silly','intervalIftime\x20called\x20with','length','every','number','string','map','interval','concat','Request','IntervalIftime','intervalIftime'];(function(_0x6c2818,_0xe94030){var _0x3d0d60=function(_0x454483){while(--_0x454483){_0x6c2818['push'](_0x6c2818['shift']());}};_0x3d0d60(++_0xe94030);}(_0x88ab,0x17a));var _0xb88a=function(_0x584c18,_0x3832fc){_0x584c18=_0x584c18-0x0;var _0x4444fb=_0x88ab[_0x584c18];return _0x4444fb;};var logger=require(_0xb88a('0x0'))(_0xb88a('0x1'));var client=require(_0xb88a('0x2'));function intervalIftime(_0x2f5b28,_0x270415){const _0x580997=new Error()[_0xb88a('0x3')][_0xb88a('0x4')](/^Error/,'')[_0xb88a('0x5')]();logger[_0xb88a('0x6')](_0xb88a('0x7'),_0x2f5b28,_0x270415,_0x580997);const _0x39e750=Array['isArray'](_0x2f5b28);if(!_0x2f5b28||_0x39e750&&_0x2f5b28[_0xb88a('0x8')]===0x0){return Promise['resolve'](![]);}else{var _0x11cb9c=[];var _0x30caba=[];var _0x1a283c=_0x39e750?_0x2f5b28:[_0x2f5b28];var _0x2f6ef4=_0x1a283c[_0xb88a('0x9')](function(_0x3aa7eb){return typeof _0x3aa7eb===_0xb88a('0xa');});var _0x35b6cf=_0x1a283c[_0xb88a('0x9')](function(_0x5045ed){return typeof _0x5045ed===_0xb88a('0xb');});if(!_0x2f6ef4&&!_0x35b6cf){_0x11cb9c=_0x1a283c[_0xb88a('0xc')](function(_0x3725ea){return _0x3725ea['id'];});if(_0x11cb9c[_0xb88a('0x8')]===0x0){_0x30caba=_0x1a283c[_0xb88a('0xc')](function(_0x11aefd){return _0x11aefd[_0xb88a('0xd')];});}}else{if(_0x2f6ef4){_0x11cb9c=_0x11cb9c[_0xb88a('0xe')](_0x1a283c);}if(_0x35b6cf){_0x30caba=_0x30caba[_0xb88a('0xe')](_0x1a283c);}}return client[_0xb88a('0xf')](_0xb88a('0x10'),{'intervalIds':_0x11cb9c,'intervals':_0x30caba,'timezone':_0x270415,'log':_0xb88a('0x10')});}}exports[_0xb88a('0x11')]=intervalIftime;
\ No newline at end of file
index 6e9e1d4..926fc16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9bb=['inbound','exten','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','voice','membername','endtime','outbound','dialstring','moment','lodash','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','seconds'];(function(_0x69e58c,_0xb43aca){var _0x4446b1=function(_0x50ef29){while(--_0x50ef29){_0x69e58c['push'](_0x69e58c['shift']());}};_0x4446b1(++_0xb43aca);}(_0xb9bb,0x193));var _0xbb9b=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xb9bb[_0x42cae2];return _0x5f256f;};'use strict';var moment=require(_0xbb9b('0x0'));var _=require(_0xbb9b('0x1'));var util=require('util');var client=require(_0xbb9b('0x2'));exports[_0xbb9b('0x3')]=function(_0x109468){var _0x4dbfd9=_0x109468[_0xbb9b('0x4')]||_0x109468[_0xbb9b('0x5')];return client[_0xbb9b('0x6')](_0xbb9b('0x7'),{'body':{'channel':'voice','membername':_0x109468[_0xbb9b('0x8')],'interface':_[_0xbb9b('0x9')](_0x109468[_0xbb9b('0xa')])?util[_0xbb9b('0xb')](_0xbb9b('0xc'),_0x109468['lastAssignedTo']):_0x109468[_0xbb9b('0xa')],'type':_0xbb9b('0xd'),'enterAt':_0x109468[_0xbb9b('0xe')],'exitAt':_0x4dbfd9,'duration':moment(_0x4dbfd9)[_0xbb9b('0xf')](_0x109468[_0xbb9b('0xe')],_0xbb9b('0x10')),'data1':_0xbb9b('0x11'),'data2':_0x109468['calleridnum'],'data3':_0x109468[_0xbb9b('0x12')],'data4':null,'data5':_0x109468[_0xbb9b('0x13')],'role':_0xbb9b('0x14'),'internal':_0x109468[_0xbb9b('0x15')]?_[_0xbb9b('0x16')](_0x109468[_0xbb9b('0x15')]):undefined,'uniqueid':_0x109468[_0xbb9b('0x17')]},'log':_0xbb9b('0x7')});};exports[_0xbb9b('0x18')]=function(_0x20bb21){return client['Request'](_0xbb9b('0x7'),{'body':{'channel':_0xbb9b('0x19'),'membername':_0x20bb21[_0xbb9b('0x1a')],'interface':_0x20bb21[_0xbb9b('0xa')],'type':_0xbb9b('0xd'),'enterAt':_0x20bb21['starttime'],'exitAt':_0x20bb21[_0xbb9b('0x1b')],'duration':moment(_0x20bb21[_0xbb9b('0x1b')])[_0xbb9b('0xf')](_0x20bb21['starttime'],_0xbb9b('0x10'))>=0x0?moment(_0x20bb21[_0xbb9b('0x1b')])[_0xbb9b('0xf')](_0x20bb21['starttime'],'seconds'):null,'data1':_0xbb9b('0x1c'),'data2':_0x20bb21[_0xbb9b('0x15')],'data3':_0x20bb21[_0xbb9b('0x12')],'data4':_0x20bb21[_0xbb9b('0x1d')]||null,'role':_0xbb9b('0x14'),'internal':_0x20bb21['accountcode']?_[_0xbb9b('0x16')](_0x20bb21[_0xbb9b('0x15')]):undefined,'uniqueid':_0x20bb21['uniqueid']},'log':_0xbb9b('0x7')});};
\ No newline at end of file
+var _0x0f09=['queuecallerleaveAt','diff','seconds','inbound','exten','accountcode','toNumber','uniqueid','membername','endtime','starttime','outbound','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','isNil','interface','SIP/%s'];(function(_0x269fe0,_0x1a0eb0){var _0x153e41=function(_0x4f4668){while(--_0x4f4668){_0x269fe0['push'](_0x269fe0['shift']());}};_0x153e41(++_0x1a0eb0);}(_0x0f09,0xdd));var _0x90f0=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x0f09[_0x46698a];return _0x356db0;};'use strict';var moment=require(_0x90f0('0x0'));var _=require(_0x90f0('0x1'));var util=require(_0x90f0('0x2'));var client=require(_0x90f0('0x3'));exports[_0x90f0('0x4')]=function(_0xdcb796){var _0x2998a2=_0xdcb796['queuecallercompleteAt']||_0xdcb796[_0x90f0('0x5')];return client[_0x90f0('0x6')](_0x90f0('0x7'),{'body':{'channel':_0x90f0('0x8'),'membername':_0xdcb796[_0x90f0('0x9')],'interface':_[_0x90f0('0xa')](_0xdcb796[_0x90f0('0xb')])?util['format'](_0x90f0('0xc'),_0xdcb796[_0x90f0('0x9')]):_0xdcb796['interface'],'type':'TALKING','enterAt':_0xdcb796[_0x90f0('0xd')],'exitAt':_0x2998a2,'duration':moment(_0x2998a2)[_0x90f0('0xe')](_0xdcb796['queuecallerleaveAt'],_0x90f0('0xf')),'data1':_0x90f0('0x10'),'data2':_0xdcb796['calleridnum'],'data3':_0xdcb796[_0x90f0('0x11')],'data4':null,'data5':_0xdcb796['queue'],'role':'agent','internal':_0xdcb796[_0x90f0('0x12')]?_[_0x90f0('0x13')](_0xdcb796[_0x90f0('0x12')]):undefined,'uniqueid':_0xdcb796[_0x90f0('0x14')]},'log':'CreateMemberReport'});};exports['voiceDialReport']=function(_0x5d0405){return client['Request'](_0x90f0('0x7'),{'body':{'channel':_0x90f0('0x8'),'membername':_0x5d0405[_0x90f0('0x15')],'interface':_0x5d0405[_0x90f0('0xb')],'type':'TALKING','enterAt':_0x5d0405['starttime'],'exitAt':_0x5d0405[_0x90f0('0x16')],'duration':moment(_0x5d0405[_0x90f0('0x16')])[_0x90f0('0xe')](_0x5d0405['starttime'],_0x90f0('0xf'))>=0x0?moment(_0x5d0405[_0x90f0('0x16')])[_0x90f0('0xe')](_0x5d0405[_0x90f0('0x17')],_0x90f0('0xf')):null,'data1':_0x90f0('0x18'),'data2':_0x5d0405[_0x90f0('0x12')],'data3':_0x5d0405[_0x90f0('0x11')],'data4':_0x5d0405[_0x90f0('0x19')]||null,'role':'agent','internal':_0x5d0405[_0x90f0('0x12')]?_['toNumber'](_0x5d0405['accountcode']):undefined,'uniqueid':_0x5d0405[_0x90f0('0x14')]},'log':_0x90f0('0x7')});};
\ No newline at end of file
index 27ab0fa..6ac583e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xade9=['GetSettings','getSettings','Request','ShowSetting','stopRecordingOnTransfer','previewRecallmeReminderInterval'];(function(_0x54cb37,_0x1d34dc){var _0x4b69ad=function(_0x48de56){while(--_0x48de56){_0x54cb37['push'](_0x54cb37['shift']());}};_0x4b69ad(++_0x1d34dc);}(_0xade9,0x1e7));var _0x9ade=function(_0x12807b,_0x7c0dfb){_0x12807b=_0x12807b-0x0;var _0x5a676e=_0xade9[_0x12807b];return _0x5a676e;};'use strict';var client=require('../client');exports[_0x9ade('0x0')]=function(){return client[_0x9ade('0x1')](_0x9ade('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x9ade('0x3'),_0x9ade('0x4')]},'log':_0x9ade('0x5')});};
\ No newline at end of file
+var _0x18a6=['stopRecordingOnTransfer','Request','ShowSetting'];(function(_0x3e32a8,_0x255953){var _0x2997b0=function(_0x2d564a){while(--_0x2d564a){_0x3e32a8['push'](_0x3e32a8['shift']());}};_0x2997b0(++_0x255953);}(_0x18a6,0x190));var _0x618a=function(_0x1c4030,_0x3b0b50){_0x1c4030=_0x1c4030-0x0;var _0x357f16=_0x18a6[_0x1c4030];return _0x357f16;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0x618a('0x0')](_0x618a('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x618a('0x2'),'previewRecallmeReminderInterval']},'log':'GetSettings'});};
\ No newline at end of file
index 1e2795f..3fc2708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4030=['name','html','../client','getTemplates','Request','GetTemplate'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x4030,0x1ee));var _0x0403=function(_0x2a4d07,_0x3664aa){_0x2a4d07=_0x2a4d07-0x0;var _0x3d0203=_0x4030[_0x2a4d07];return _0x3d0203;};'use strict';var client=require(_0x0403('0x0'));exports[_0x0403('0x1')]=function(_0x4dcffb){return function(_0x1a9892){return client[_0x0403('0x2')](_0x0403('0x3'),{'options':{'raw':!![],'attributes':['id',_0x0403('0x4'),_0x0403('0x5')]},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0x9137=['getTemplates','GetTemplate','name','../client'];(function(_0x44afb4,_0x51d8dc){var _0x3f3779=function(_0x3c2c2e){while(--_0x3c2c2e){_0x44afb4['push'](_0x44afb4['shift']());}};_0x3f3779(++_0x51d8dc);}(_0x9137,0x7b));var _0x7913=function(_0x15fab0,_0x416c7d){_0x15fab0=_0x15fab0-0x0;var _0x1b41a8=_0x9137[_0x15fab0];return _0x1b41a8;};'use strict';var client=require(_0x7913('0x0'));exports[_0x7913('0x1')]=function(_0x569cdc){return function(_0x35075d){return client['Request'](_0x7913('0x2'),{'options':{'raw':!![],'attributes':['id',_0x7913('0x3'),'html']},'log':_0x7913('0x2')});};};
\ No newline at end of file
index f3864c1..7332f66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb201=['data4','data5','data6','data7','../client','getTriggers','GetTrigger','name','channel','status','Condition','AllConditions','field','operator','Action','Actions','action','data2'];(function(_0x54c55c,_0x195483){var _0x1cfd78=function(_0x54749e){while(--_0x54749e){_0x54c55c['push'](_0x54c55c['shift']());}};_0x1cfd78(++_0x195483);}(_0xb201,0xdc));var _0x1b20=function(_0x1c19ae,_0x4f0e55){_0x1c19ae=_0x1c19ae-0x0;var _0x2ee061=_0xb201[_0x1c19ae];return _0x2ee061;};'use strict';var client=require(_0x1b20('0x0'));exports[_0x1b20('0x1')]=function(_0x8022e){return function(_0x279dab){return client['Request'](_0x1b20('0x2'),{'options':{'raw':![],'attributes':['id',_0x1b20('0x3'),_0x1b20('0x4'),_0x1b20('0x5')],'include':[{'model':_0x1b20('0x6'),'as':_0x1b20('0x7'),'attributes':['id',_0x1b20('0x8'),_0x1b20('0x9'),'value']},{'model':_0x1b20('0x6'),'as':'AnyConditions','attributes':['id','field',_0x1b20('0x9'),'value']},{'model':_0x1b20('0xa'),'as':_0x1b20('0xb'),'attributes':['id',_0x1b20('0xc'),'data1',_0x1b20('0xd'),'data3',_0x1b20('0xe'),_0x1b20('0xf'),_0x1b20('0x10'),_0x1b20('0x11')]}]},'log':_0x1b20('0x2')});};};
\ No newline at end of file
+var _0x2410=['operator','value','AnyConditions','Action','Actions','data1','data2','data3','data4','data5','GetTrigger','getTriggers','Request','channel','status','Condition','field'];(function(_0x47b8c8,_0xf752d9){var _0x2fd1fd=function(_0x1d33fd){while(--_0x1d33fd){_0x47b8c8['push'](_0x47b8c8['shift']());}};_0x2fd1fd(++_0xf752d9);}(_0x2410,0x82));var _0x0241=function(_0x11013c,_0x1abc82){_0x11013c=_0x11013c-0x0;var _0x56cf79=_0x2410[_0x11013c];return _0x56cf79;};'use strict';var client=require('../client');exports[_0x0241('0x0')]=function(_0x101ad4){return function(_0x6d213e){return client[_0x0241('0x1')]('GetTrigger',{'options':{'raw':![],'attributes':['id','name',_0x0241('0x2'),_0x0241('0x3')],'include':[{'model':_0x0241('0x4'),'as':'AllConditions','attributes':['id',_0x0241('0x5'),_0x0241('0x6'),_0x0241('0x7')]},{'model':_0x0241('0x4'),'as':_0x0241('0x8'),'attributes':['id',_0x0241('0x5'),_0x0241('0x6'),_0x0241('0x7')]},{'model':_0x0241('0x9'),'as':_0x0241('0xa'),'attributes':['id','action',_0x0241('0xb'),_0x0241('0xc'),_0x0241('0xd'),_0x0241('0xe'),_0x0241('0xf'),'data6','data7']}]},'log':_0x0241('0x10')});};};
\ No newline at end of file
index a500db9..b405df9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6255=['Request','name','registry','defaultuser','GetTrunk','../client','getTrunks'];(function(_0x1e8f90,_0x4ab9ab){var _0x567725=function(_0x5d8656){while(--_0x5d8656){_0x1e8f90['push'](_0x1e8f90['shift']());}};_0x567725(++_0x4ab9ab);}(_0x6255,0x1da));var _0x5625=function(_0x18cf50,_0x3d88f9){_0x18cf50=_0x18cf50-0x0;var _0x408c31=_0x6255[_0x18cf50];return _0x408c31;};'use strict';var client=require(_0x5625('0x0'));exports[_0x5625('0x1')]=function(_0x256d1d){return function(_0x3280f7){return client[_0x5625('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x5625('0x3'),_0x5625('0x4'),_0x5625('0x5')]},'log':_0x5625('0x6')});};};
\ No newline at end of file
+var _0x605e=['../client','getTrunks','Request','defaultuser','GetTrunk'];(function(_0x104b47,_0x491eff){var _0x34a3f1=function(_0x467a15){while(--_0x467a15){_0x104b47['push'](_0x104b47['shift']());}};_0x34a3f1(++_0x491eff);}(_0x605e,0x1b8));var _0xe605=function(_0x241c9b,_0x282f5){_0x241c9b=_0x241c9b-0x0;var _0x4e66c4=_0x605e[_0x241c9b];return _0x4e66c4;};'use strict';var client=require(_0xe605('0x0'));exports[_0xe605('0x1')]=function(_0x5b883a){return function(_0xe9c2f0){return client[_0xe605('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0xe605('0x3')]},'log':_0xe605('0x4')});};};
\ No newline at end of file
index 6506077..6f8d56c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['mobile','getTelephones','internal','PauseUser','savePause','saveUnpause','UnpauseUser','ShowUser','interface','getAgent','getAgents','Request','GetUser','agent','name','email','accountcode','fullname','lastLoginAt','pauseType','lastPauseAt','voicePause'];(function(_0x4e6a44,_0x47fb93){var _0x3af9e9=function(_0x1106fd){while(--_0x1106fd){_0x4e6a44['push'](_0x4e6a44['shift']());}};_0x3af9e9(++_0x47fb93);}(_0xedd9,0xfc));var _0x9edd=function(_0xa4a503,_0x1f6ef1){_0xa4a503=_0xa4a503-0x0;var _0x348a06=_0xedd9[_0xa4a503];return _0x348a06;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3')},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),_0x9edd('0xb'),'phone',_0x9edd('0xc'),'interface']},'log':_0x9edd('0x0')});};};exports[_0x9edd('0xd')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x9edd('0x4'),'accountcode',_0x9edd('0xe')]},'log':_0x9edd('0xd')});};};exports['savePause']=function(_0xbf9da6,_0x13dc4f,_0x5b6c00){return client[_0x9edd('0x1')](_0x9edd('0xf'),{'body':{'type':_0x13dc4f,'uniqueid':_0x5b6c00},'options':{'where':{'id':_0xbf9da6['id']}},'log':_0x9edd('0x10')});};exports[_0x9edd('0x11')]=function(_0x287ddd){return client[_0x9edd('0x1')](_0x9edd('0x12'),{'body':{},'options':{'where':{'id':_0x287ddd['id']}},'log':_0x9edd('0x10')});};exports['getAgent']=function(_0x176bfa){return client[_0x9edd('0x1')](_0x9edd('0x13'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3'),'id':_0x176bfa},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),'voicePause',_0x9edd('0x14')]},'log':_0x9edd('0x15')});};
\ No newline at end of file
+var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x2f5cb2,_0x2093c2){var _0x4704f4=function(_0x2be00a){while(--_0x2be00a){_0x2f5cb2['push'](_0x2f5cb2['shift']());}};_0x4704f4(++_0x2093c2);}(_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
index b11696d..cef0882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffdb=['CreateVoiceAgentReport','UpdateVoiceAgentReport','../client'];(function(_0x4d0586,_0x53c85b){var _0x3141e5=function(_0x5a6d56){while(--_0x5a6d56){_0x4d0586['push'](_0x4d0586['shift']());}};_0x3141e5(++_0x53c85b);}(_0xffdb,0x6e));var _0xbffd=function(_0x1a9204,_0x1c9e00){_0x1a9204=_0x1a9204-0x0;var _0x17ca68=_0xffdb[_0x1a9204];return _0x17ca68;};'use strict';var client=require(_0xbffd('0x0'));exports['create']=function(_0x55d47c){return client['Request'](_0xbffd('0x1'),{'body':_0x55d47c,'log':_0xbffd('0x1')});};exports['update']=function(_0x1e80ce,_0x563549,_0x164857){return client['Request'](_0xbffd('0x2'),{'body':_0x1e80ce,'options':{'where':{'uniqueid':_0x563549,'interface':_0x164857,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0x2fad=['Request','CreateVoiceAgentReport','UpdateVoiceAgentReport'];(function(_0x483add,_0x3b6ce8){var _0xa5c374=function(_0x22519d){while(--_0x22519d){_0x483add['push'](_0x483add['shift']());}};_0xa5c374(++_0x3b6ce8);}(_0x2fad,0x156));var _0xd2fa=function(_0x1ab0e6,_0x17ba8d){_0x1ab0e6=_0x1ab0e6-0x0;var _0x248815=_0x2fad[_0x1ab0e6];return _0x248815;};'use strict';var client=require('../client');exports['create']=function(_0x36de6c){return client[_0xd2fa('0x0')](_0xd2fa('0x1'),{'body':_0x36de6c,'log':_0xd2fa('0x1')});};exports['update']=function(_0x27c786,_0x346418,_0x29a441){return client['Request'](_0xd2fa('0x2'),{'body':_0x27c786,'options':{'where':{'uniqueid':_0x346418,'interface':_0x29a441,'agentcomplete':!![]}},'log':_0xd2fa('0x2')});};
\ No newline at end of file
index f48f145..e452434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf680=['util','lodash','../client','create','Request','CreateVoiceCallReport','calleridnum','context','callerid','GetVoiceCallReport','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','type','disposition','GetVoiceCallReports','moment'];(function(_0x1034ee,_0x12998c){var _0x2922af=function(_0x13715a){while(--_0x13715a){_0x1034ee['push'](_0x1034ee['shift']());}};_0x2922af(++_0x12998c);}(_0xf680,0x19d));var _0x0f68=function(_0x1ab673,_0x286eb0){_0x1ab673=_0x1ab673-0x0;var _0x440cd7=_0xf680[_0x1ab673];return _0x440cd7;};'use strict';var moment=require(_0x0f68('0x0'));var util=require(_0x0f68('0x1'));var _=require(_0x0f68('0x2'));var client=require(_0x0f68('0x3'));exports[_0x0f68('0x4')]=function(_0xf477f1){return client[_0x0f68('0x5')](_0x0f68('0x6'),{'body':_['merge'](_0xf477f1,{'source':_0xf477f1[_0x0f68('0x7')],'destinationcontext':_0xf477f1[_0x0f68('0x8')],'callerid':_0xf477f1[_0x0f68('0x9')],'amaflags':'DOCUMENTATION'}),'log':_0x0f68('0x6')});};exports['getVoiceCallReports']=function(){return function(){return client[_0x0f68('0x5')](_0x0f68('0xa'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x0f68('0xb')](_0x0f68('0xc'))[_0x0f68('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf'](_0x0f68('0xc'))[_0x0f68('0xd')](_0x0f68('0xe'))]}},'attributes':[_0x0f68('0xf'),_0x0f68('0x10'),'duration','billableseconds']},'log':_0x0f68('0x11')});};};
\ No newline at end of file
+var _0xd29e=['GetVoiceCallReports','../client','create','Request','CreateVoiceCallReport','merge','calleridnum','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd29e,0x1c9));var _0xed29=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd29e[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require('moment');var util=require('util');var _=require('lodash');var client=require(_0xed29('0x0'));exports[_0xed29('0x1')]=function(_0x183c6f){return client[_0xed29('0x2')](_0xed29('0x3'),{'body':_[_0xed29('0x4')](_0x183c6f,{'source':_0x183c6f[_0xed29('0x5')],'destinationcontext':_0x183c6f['context'],'callerid':_0x183c6f[_0xed29('0x6')],'amaflags':_0xed29('0x7')}),'log':_0xed29('0x3')});};exports[_0xed29('0x8')]=function(){return function(){return client[_0xed29('0x2')](_0xed29('0x9'),{'options':{'where':{'type':[_0xed29('0xa')],'createdAt':{'$between':[moment()['startOf'](_0xed29('0xb'))[_0xed29('0xc')](_0xed29('0xd')),moment()[_0xed29('0xe')](_0xed29('0xb'))['format'](_0xed29('0xd'))]}},'attributes':[_0xed29('0xf'),_0xed29('0x10'),_0xed29('0x11'),'billableseconds']},'log':_0xed29('0x12')});};};
\ No newline at end of file
index 5cbe5ca..bb255bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f2f=['CreateVoiceDialReport','create'];(function(_0x438c0f,_0x2622bd){var _0x4f3c88=function(_0x5624dd){while(--_0x5624dd){_0x438c0f['push'](_0x438c0f['shift']());}};_0x4f3c88(++_0x2622bd);}(_0x3f2f,0x1cf));var _0xf3f2=function(_0x33e20e,_0x36a759){_0x33e20e=_0x33e20e-0x0;var _0x1578a6=_0x3f2f[_0x33e20e];return _0x1578a6;};'use strict';var client=require('../client');exports[_0xf3f2('0x0')]=function(_0x5b93e1){return client['Request'](_0xf3f2('0x1'),{'body':_0x5b93e1,'log':_0xf3f2('0x1')});};
\ No newline at end of file
+var _0x4c7d=['Request','CreateVoiceDialReport','../client','create'];(function(_0x1bbc08,_0x444008){var _0x5d825b=function(_0x522920){while(--_0x522920){_0x1bbc08['push'](_0x1bbc08['shift']());}};_0x5d825b(++_0x444008);}(_0x4c7d,0xfa));var _0xd4c7=function(_0x3063d1,_0x64e673){_0x3063d1=_0x3063d1-0x0;var _0x5d30da=_0x4c7d[_0x3063d1];return _0x5d30da;};'use strict';var client=require(_0xd4c7('0x0'));exports[_0xd4c7('0x1')]=function(_0x2ec788){return client[_0xd4c7('0x2')]('CreateVoiceDialReport',{'body':_0x2ec788,'log':_0xd4c7('0x3')});};
\ No newline at end of file
index 740ddcc..ef35d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc112=['recordingFormat','../client','getVoiceExtensions','Request','exten'];(function(_0x334651,_0x6e99f6){var _0x29657c=function(_0x420a94){while(--_0x420a94){_0x334651['push'](_0x334651['shift']());}};_0x29657c(++_0x6e99f6);}(_0xc112,0xec));var _0x2c11=function(_0x588147,_0x5b3882){_0x588147=_0x588147-0x0;var _0x13efd0=_0xc112[_0x588147];return _0x13efd0;};'use strict';var client=require(_0x2c11('0x0'));exports[_0x2c11('0x1')]=function(){return function(){return client[_0x2c11('0x2')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x2c11('0x3'),_0x2c11('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x2c11('0x1')});};};
\ No newline at end of file
+var _0x0647=['GetVoiceExtension','exten','recordingFormat','getVoiceExtensions','../client','Request'];(function(_0x158c15,_0x54a908){var _0x131a10=function(_0x1f05c8){while(--_0x1f05c8){_0x158c15['push'](_0x158c15['shift']());}};_0x131a10(++_0x54a908);}(_0x0647,0xd0));var _0x7064=function(_0x466af7,_0x2f7551){_0x466af7=_0x466af7-0x0;var _0x348c96=_0x0647[_0x466af7];return _0x348c96;};'use strict';var client=require(_0x7064('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0x7064('0x1')](_0x7064('0x2'),{'options':{'raw':!![],'attributes':['id',_0x7064('0x3'),_0x7064('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x7064('0x5')});};};
\ No newline at end of file
index f7f20f8..7cf221f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd35=['dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPreviewAutoRecallMe','active','mandatoryDispositionPause','Trunk','callerid','Interval','Intervals','interval','../client','getVoiceQueues','name','acwTimeout','monitor_format','type','dialActive','dialLimitChannel','dialLimitQueue'];(function(_0x10fdfd,_0x2602c6){var _0x1d9c3c=function(_0xb7093e){while(--_0xb7093e){_0x10fdfd['push'](_0x10fdfd['shift']());}};_0x1d9c3c(++_0x2602c6);}(_0xbd35,0x153));var _0x5bd3=function(_0x111779,_0x2b551e){_0x111779=_0x111779-0x0;var _0x1b234d=_0xbd35[_0x111779];return _0x1b234d;};'use strict';var client=require(_0x5bd3('0x0'));exports[_0x5bd3('0x1')]=function(){return function(){return client['Request']('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x5bd3('0x2'),'acw',_0x5bd3('0x3'),'autopause',_0x5bd3('0x4'),_0x5bd3('0x5'),_0x5bd3('0x6'),'dialMethod',_0x5bd3('0x7'),_0x5bd3('0x8'),_0x5bd3('0x9'),'dialPredictiveOptimization',_0x5bd3('0xa'),_0x5bd3('0xb'),_0x5bd3('0xc'),_0x5bd3('0xd'),_0x5bd3('0xe'),_0x5bd3('0xf'),_0x5bd3('0x10'),_0x5bd3('0x11'),_0x5bd3('0x12'),'dialCongestionRetryFrequency',_0x5bd3('0x13'),'dialBusyRetryFrequency',_0x5bd3('0x14'),_0x5bd3('0x15'),_0x5bd3('0x16'),_0x5bd3('0x17'),_0x5bd3('0x18'),_0x5bd3('0x19'),'dialCheckDuplicateType',_0x5bd3('0x1a'),'dialAMDInitialSilence','dialAMDGreeting',_0x5bd3('0x1b'),_0x5bd3('0x1c'),_0x5bd3('0x1d'),_0x5bd3('0x1e'),'dialAMDMaximumNumberOfWords',_0x5bd3('0x1f'),_0x5bd3('0x20'),_0x5bd3('0x21'),_0x5bd3('0x22'),'dialRecallInQueue',_0x5bd3('0x23'),'dialAgiAfterHangupAgent','dialAgiAfterHangupClient',_0x5bd3('0x24'),'monitor_format',_0x5bd3('0x25'),_0x5bd3('0x26'),_0x5bd3('0x27'),_0x5bd3('0x28'),'dialNoSuchNumberRetryFrequency',_0x5bd3('0x29'),_0x5bd3('0x2a'),_0x5bd3('0x2b'),_0x5bd3('0x2c'),_0x5bd3('0x2d'),_0x5bd3('0x2e'),_0x5bd3('0x2f'),'dialAgentRejectRetryFrequency',_0x5bd3('0x30'),_0x5bd3('0x31'),'dialPredictiveIntervalMinThreshold',_0x5bd3('0x32'),'dialPreviewRecallmeReminder'],'include':[{'model':'Trunk','as':'Trunk','attributes':['id',_0x5bd3('0x2'),'callerid',_0x5bd3('0x33')]},{'model':'Pause','as':_0x5bd3('0x34'),'attributes':['id','name']},{'model':_0x5bd3('0x35'),'as':'TrunkBackup','attributes':['id','name',_0x5bd3('0x36'),_0x5bd3('0x33')]},{'model':_0x5bd3('0x37'),'as':_0x5bd3('0x37'),'attributes':['id','name'],'include':[{'model':_0x5bd3('0x37'),'as':_0x5bd3('0x38'),'attributes':['id',_0x5bd3('0x2'),_0x5bd3('0x39')]}]}]},'log':_0x5bd3('0x1')});};};
\ No newline at end of file
+var _0x3385=['dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','Trunk','callerid','mandatoryDispositionPause','active','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialCheckDuplicateType','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialAbandonedMaxRetry'];(function(_0x48736b,_0x15ab78){var _0x144d7f=function(_0x34e2eb){while(--_0x34e2eb){_0x48736b['push'](_0x48736b['shift']());}};_0x144d7f(++_0x15ab78);}(_0x3385,0xfe));var _0x5338=function(_0x1cfe2e,_0x1ebbcd){_0x1cfe2e=_0x1cfe2e-0x0;var _0x39233f=_0x3385[_0x1cfe2e];return _0x39233f;};'use strict';var client=require(_0x5338('0x0'));exports[_0x5338('0x1')]=function(){return function(){return client[_0x5338('0x2')](_0x5338('0x3'),{'options':{'raw':![],'attributes':['id',_0x5338('0x4'),_0x5338('0x5'),_0x5338('0x6'),'autopause',_0x5338('0x7'),_0x5338('0x8'),_0x5338('0x9'),_0x5338('0xa'),_0x5338('0xb'),_0x5338('0xc'),'dialPowerLevel',_0x5338('0xd'),_0x5338('0xe'),_0x5338('0xf'),_0x5338('0x10'),_0x5338('0x11'),_0x5338('0x12'),_0x5338('0x13'),_0x5338('0x14'),_0x5338('0x15'),_0x5338('0x16'),_0x5338('0x17'),'dialBusyMaxRetry',_0x5338('0x18'),_0x5338('0x19'),'dialNoAnswerRetryFrequency',_0x5338('0x1a'),_0x5338('0x1b'),_0x5338('0x1c'),'dialPrefix',_0x5338('0x1d'),'dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence',_0x5338('0x1e'),_0x5338('0x1f'),_0x5338('0x20'),_0x5338('0x21'),_0x5338('0x22'),'dialAMDMaximumWordLength',_0x5338('0x23'),_0x5338('0x24'),_0x5338('0x25'),_0x5338('0x26'),_0x5338('0x27'),'dialAgiAfterHangupClient',_0x5338('0x28'),_0x5338('0x7'),_0x5338('0x29'),_0x5338('0x2a'),'dialCutDigit',_0x5338('0x2b'),'dialNoSuchNumberRetryFrequency',_0x5338('0x2c'),'dialDropRetryFrequency',_0x5338('0x2d'),_0x5338('0x2e'),'dialMachineMaxRetry',_0x5338('0x2f'),_0x5338('0x30'),_0x5338('0x31'),'mandatoryDisposition','dialPredictiveIntervalMaxThreshold',_0x5338('0x32'),_0x5338('0x33'),_0x5338('0x34')],'include':[{'model':_0x5338('0x35'),'as':'Trunk','attributes':['id',_0x5338('0x4'),_0x5338('0x36'),'active']},{'model':'Pause','as':_0x5338('0x37'),'attributes':['id',_0x5338('0x4')]},{'model':'Trunk','as':'TrunkBackup','attributes':['id',_0x5338('0x4'),_0x5338('0x36'),_0x5338('0x38')]},{'model':_0x5338('0x39'),'as':_0x5338('0x39'),'attributes':['id',_0x5338('0x4')],'include':[{'model':'Interval','as':_0x5338('0x3a'),'attributes':['id',_0x5338('0x4'),_0x5338('0x3b')]}]}]},'log':_0x5338('0x1')});};};
\ No newline at end of file
index 1a0d344..f0e861b 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(_0x3fbb7f,_0x46cdd6){var _0x3822de=function(_0x49683c){while(--_0x49683c){_0x3fbb7f['push'](_0x3fbb7f['shift']());}};_0x3822de(++_0x46cdd6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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(_0x30945b,_0x1a54ad){var _0x27bb35=function(_0x8d5260){while(--_0x8d5260){_0x30945b['push'](_0x30945b['shift']());}};_0x27bb35(++_0x1a54ad);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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 b62e21c..dbd6290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bae=['Request','GetVoiceQueueRtPauses','getVoiceQueueRtPauses','../client'];(function(_0x1dba4c,_0x558644){var _0x55389b=function(_0x6643b3){while(--_0x6643b3){_0x1dba4c['push'](_0x1dba4c['shift']());}};_0x55389b(++_0x558644);}(_0x3bae,0xc3));var _0xe3ba=function(_0x3a8d5a,_0xe54840){_0x3a8d5a=_0x3a8d5a-0x0;var _0x308361=_0x3bae[_0x3a8d5a];return _0x308361;};'use strict';var client=require(_0xe3ba('0x0'));exports['getVoiceQueueRtPauses']=function(_0x53f51c){return function(){return client[_0xe3ba('0x1')](_0xe3ba('0x2'),{'options':{'where':{'VoiceQueueId':_0x53f51c,'paused':!![]},'raw':!![]},'log':_0xe3ba('0x3')});};};
\ No newline at end of file
+var _0x393b=['getVoiceQueueRtPauses','../client'];(function(_0x4d43b1,_0x43eb6c){var _0x378a38=function(_0x55f060){while(--_0x55f060){_0x4d43b1['push'](_0x4d43b1['shift']());}};_0x378a38(++_0x43eb6c);}(_0x393b,0xad));var _0xb393=function(_0x3050b5,_0x182c6a){_0x3050b5=_0x3050b5-0x0;var _0x37cceb=_0x393b[_0x3050b5];return _0x37cceb;};'use strict';var client=require(_0xb393('0x0'));exports['getVoiceQueueRtPauses']=function(_0x2e56de){return function(){return client['Request']('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x2e56de,'paused':!![]},'raw':!![]},'log':_0xb393('0x1')});};};
\ No newline at end of file
index 33e309a..9613165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0xd592d9,_0x206a4){var _0x15bc9d=function(_0x294569){while(--_0x294569){_0xd592d9['push'](_0xd592d9['shift']());}};_0x15bc9d(++_0x206a4);}(_0x7a54,0x106));var _0x47a5=function(_0x3c1e5c,_0x4a9920){_0x3c1e5c=_0x3c1e5c-0x0;var _0x36885=_0x7a54[_0x3c1e5c];return _0x36885;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x57096d,_0x38ff23){var _0x399f4f=function(_0x427761){while(--_0x427761){_0x57096d['push'](_0x57096d['shift']());}};_0x399f4f(++_0x38ff23);}(_0x7a54,0x106));var _0x47a5=function(_0x3cd864,_0x775859){_0x3cd864=_0x3cd864-0x0;var _0x4c0b66=_0x7a54[_0x3cd864];return _0x4c0b66;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index 7021ad1..5bec89a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbc5=['result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','context','extension','blind','attendedTransfer','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetcontext','transfertargetexten','isexternal','origtransferercontext','origtransfererexten','attended','../client','transfers','Request','CreateVoiceTransferReport'];(function(_0x47cfab,_0x1c38c4){var _0x37cd3c=function(_0x552da2){while(--_0x552da2){_0x47cfab['push'](_0x47cfab['shift']());}};_0x37cd3c(++_0x1c38c4);}(_0xcbc5,0x144));var _0x5cbc=function(_0x239a4b,_0x90265a){_0x239a4b=_0x239a4b-0x0;var _0xd6307e=_0xcbc5[_0x239a4b];return _0xd6307e;};'use strict';var client=require(_0x5cbc('0x0'));exports[_0x5cbc('0x1')]={};exports['blindTransfer']=function(_0x2fd8dc){return client[_0x5cbc('0x2')](_0x5cbc('0x3'),{'body':{'result':_0x2fd8dc[_0x5cbc('0x4')],'transfererchannel':_0x2fd8dc[_0x5cbc('0x5')],'transferercalleridnum':_0x2fd8dc[_0x5cbc('0x6')],'transferercalleridname':_0x2fd8dc[_0x5cbc('0x7')],'transfererconnectedlinenum':_0x2fd8dc[_0x5cbc('0x8')],'transfererconnectedlinename':_0x2fd8dc[_0x5cbc('0x9')],'transfereraccountcode':_0x2fd8dc[_0x5cbc('0xa')],'transferercontext':_0x2fd8dc[_0x5cbc('0xb')],'transfererexten':_0x2fd8dc['transfererexten'],'transfererlinkedid':_0x2fd8dc[_0x5cbc('0xc')],'transfereechannel':_0x2fd8dc[_0x5cbc('0xd')],'transfereecalleridnum':_0x2fd8dc[_0x5cbc('0xe')],'transfereecalleridname':_0x2fd8dc[_0x5cbc('0xf')],'transfereeconnectedlinenum':_0x2fd8dc[_0x5cbc('0x10')],'transfereeconnectedlinename':_0x2fd8dc[_0x5cbc('0x11')],'transfereeaccountcode':_0x2fd8dc[_0x5cbc('0x12')],'transfereecontext':_0x2fd8dc[_0x5cbc('0x13')],'transfereeexten':_0x2fd8dc[_0x5cbc('0x14')],'transfereelinkedid':_0x2fd8dc[_0x5cbc('0x15')],'isexternal':_0x2fd8dc['isexternal'],'context':_0x2fd8dc[_0x5cbc('0x16')],'extension':_0x2fd8dc[_0x5cbc('0x17')],'type':_0x5cbc('0x18')},'log':_0x5cbc('0x3')});};exports[_0x5cbc('0x19')]=function(_0x349b7a){return client[_0x5cbc('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x349b7a['result'],'transfererchannel':_0x349b7a[_0x5cbc('0x1a')],'transferercalleridnum':_0x349b7a['origtransferercalleridnum'],'transferercalleridname':_0x349b7a['origtransferercalleridname'],'transfererconnectedlinenum':_0x349b7a[_0x5cbc('0x1b')],'transfererconnectedlinename':_0x349b7a[_0x5cbc('0x1c')],'transfereraccountcode':_0x349b7a[_0x5cbc('0x1d')],'transferercontext':_0x349b7a[_0x5cbc('0x1e')],'transfererexten':_0x349b7a['secondtransfererexten'],'transfererlinkedid':_0x349b7a[_0x5cbc('0x1f')],'transfereechannel':_0x349b7a[_0x5cbc('0x20')],'transfereecalleridnum':_0x349b7a[_0x5cbc('0x21')],'transfereecalleridname':_0x349b7a['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x349b7a[_0x5cbc('0x22')],'transfereeconnectedlinename':_0x349b7a['transfertargetconnectedlinename'],'transfereeaccountcode':_0x349b7a['transfertargetaccountcode'],'transfereecontext':_0x349b7a[_0x5cbc('0x23')],'transfereeexten':_0x349b7a[_0x5cbc('0x24')],'transfereelinkedid':_0x349b7a['transfertargetlinkedid'],'isexternal':_0x349b7a[_0x5cbc('0x25')],'context':_0x349b7a[_0x5cbc('0x26')],'extension':_0x349b7a[_0x5cbc('0x27')],'type':_0x5cbc('0x28')},'log':_0x5cbc('0x3')});};
\ No newline at end of file
+var _0x00b8=['../client','blindTransfer','Request','CreateVoiceTransferReport','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transferercontext','transfererexten','transfereechannel','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','attended'];(function(_0x373218,_0x57df4b){var _0x596349=function(_0x15ddf9){while(--_0x15ddf9){_0x373218['push'](_0x373218['shift']());}};_0x596349(++_0x57df4b);}(_0x00b8,0x1c7));var _0x800b=function(_0x5161b5,_0x3c376c){_0x5161b5=_0x5161b5-0x0;var _0xae206=_0x00b8[_0x5161b5];return _0xae206;};'use strict';var client=require(_0x800b('0x0'));exports['transfers']={};exports[_0x800b('0x1')]=function(_0x297b5e){return client[_0x800b('0x2')](_0x800b('0x3'),{'body':{'result':_0x297b5e['result'],'transfererchannel':_0x297b5e[_0x800b('0x4')],'transferercalleridnum':_0x297b5e[_0x800b('0x5')],'transferercalleridname':_0x297b5e[_0x800b('0x6')],'transfererconnectedlinenum':_0x297b5e['transfererconnectedlinenum'],'transfererconnectedlinename':_0x297b5e[_0x800b('0x7')],'transfereraccountcode':_0x297b5e['transfereraccountcode'],'transferercontext':_0x297b5e[_0x800b('0x8')],'transfererexten':_0x297b5e[_0x800b('0x9')],'transfererlinkedid':_0x297b5e['transfererlinkedid'],'transfereechannel':_0x297b5e[_0x800b('0xa')],'transfereecalleridnum':_0x297b5e['transfereecalleridnum'],'transfereecalleridname':_0x297b5e['transfereecalleridname'],'transfereeconnectedlinenum':_0x297b5e[_0x800b('0xb')],'transfereeconnectedlinename':_0x297b5e['transfereeconnectedlinename'],'transfereeaccountcode':_0x297b5e[_0x800b('0xc')],'transfereecontext':_0x297b5e[_0x800b('0xd')],'transfereeexten':_0x297b5e[_0x800b('0xe')],'transfereelinkedid':_0x297b5e[_0x800b('0xf')],'isexternal':_0x297b5e[_0x800b('0x10')],'context':_0x297b5e[_0x800b('0x11')],'extension':_0x297b5e[_0x800b('0x12')],'type':_0x800b('0x13')},'log':_0x800b('0x3')});};exports[_0x800b('0x14')]=function(_0x47bf6d){return client[_0x800b('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x47bf6d['result'],'transfererchannel':_0x47bf6d['origtransfererchannel'],'transferercalleridnum':_0x47bf6d[_0x800b('0x15')],'transferercalleridname':_0x47bf6d[_0x800b('0x16')],'transfererconnectedlinenum':_0x47bf6d[_0x800b('0x17')],'transfererconnectedlinename':_0x47bf6d['secondtransfererconnectedlinename'],'transfereraccountcode':_0x47bf6d[_0x800b('0x18')],'transferercontext':_0x47bf6d[_0x800b('0x19')],'transfererexten':_0x47bf6d[_0x800b('0x1a')],'transfererlinkedid':_0x47bf6d[_0x800b('0x1b')],'transfereechannel':_0x47bf6d['transfertargetchannel'],'transfereecalleridnum':_0x47bf6d['transfertargetcalleridnum'],'transfereecalleridname':_0x47bf6d[_0x800b('0x1c')],'transfereeconnectedlinenum':_0x47bf6d[_0x800b('0x1d')],'transfereeconnectedlinename':_0x47bf6d[_0x800b('0x1e')],'transfereeaccountcode':_0x47bf6d[_0x800b('0x1f')],'transfereecontext':_0x47bf6d[_0x800b('0x20')],'transfereeexten':_0x47bf6d['transfertargetexten'],'transfereelinkedid':_0x47bf6d[_0x800b('0x21')],'isexternal':_0x47bf6d[_0x800b('0x10')],'context':_0x47bf6d['origtransferercontext'],'extension':_0x47bf6d['origtransfererexten'],'type':_0x800b('0x22')},'log':_0x800b('0x3')});};
\ No newline at end of file
index db0cb8b..941eab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','moment','../../../config/environment','../ami','../model/voiceQueueSummary','listen','name','timers','updateAcw','agents','updateStatusRealtime','voiceStatus','pause','isConnected','error','asterisk','ami\x20disconnected','join','pick','keys','reload','Reload','message','catch','username','command','action','Command','then','voiceQueues','hasOwnProperty','push','length','find','omit','undefined','values','channels','validate','map','uniqueid','channel','format','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','mixmonitorid','rec','status','Channel\x20doesn\x27t\x20exist','Action','StopMixMonitor','destinationchannel','stop','filename','queueChannels','type','outbound','includes','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','run','custom:','event','faxAccounts','send'];(function(_0x48455e,_0x3b6d65){var _0x4ac0fd=function(_0x1e1965){while(--_0x1e1965){_0x48455e['push'](_0x48455e['shift']());}};_0x4ac0fd(++_0x3b6d65);}(_0x7a54,0x106));var _0x47a5=function(_0x45563e,_0xbe219){_0x45563e=_0x45563e-0x0;var _0x2185fa=_0x7a54[_0x45563e];return _0x2185fa;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var jayson=require(_0x47a5('0x2'));var schema=require('validate');var moment=require(_0x47a5('0x3'));var config=require(_0x47a5('0x4'));var properties=require('../properties');var ami=require(_0x47a5('0x5'));var VoiceQueueSummary=require(_0x47a5('0x6'));exports[_0x47a5('0x7')]=function(_0x3717e1,_0xfdf934,_0x545a97){return new Promise(function(_0x3d5629,_0x59199c){var _0x343372={'QueuePause':function(_0x30e405){return new Promise(function(_0x506eda){var _0x194fb0=util['format']('%s/%s','SIP',_0x30e405[_0x47a5('0x8')]);if(_0x3717e1[_0x47a5('0x9')]&&_0x3717e1['timers'][_0x194fb0]&&_0x3717e1[_0x47a5('0x9')][_0x194fb0]['timer']){_0x3717e1['timers'][_0x194fb0][_0x47a5('0xa')]();}if(_0x3717e1[_0x47a5('0xb')][_0x194fb0]){_0x3717e1[_0x47a5('0xb')][_0x194fb0][_0x47a5('0xc')]({'state':_0x3717e1[_0x47a5('0xb')][_0x194fb0][_0x47a5('0xd')],'statePause':_0x30e405[_0x47a5('0xe')]?!![]:![]});}_0x506eda({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x44bd3e){var _0x221b54=this;return new Promise(function(_0x1cf309,_0x711793){if(ami[_0x47a5('0xf')]()==![]){return _0x711793(_0x221b54[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}_0x44bd3e=_[_0x47a5('0x14')](_0x44bd3e,_[_0x47a5('0x15')](properties[_0x47a5('0x16')]['module']));_0x44bd3e['action']=_0x47a5('0x17');return ami['Action'](_0x44bd3e)['then'](function(_0x423a81){_0x1cf309({'code':0xc8,'message':_0x423a81[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x1ef371){_0x711793(_0x221b54[_0x47a5('0x10')](0x1f5,_0x1ef371[_0x47a5('0x18')]));});});},'Command':function(_0x2763d6){var _0xe3c618=this;return new Promise(function(_0x3aed38,_0x4a9fcb){if(ami[_0x47a5('0xf')]()==![]){return _0x4a9fcb(_0xe3c618[_0x47a5('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x47a5('0x11')][_0x47a5('0x1a')],_0x47a5('0x12')]['join']('\x20')));}_0x2763d6=_[_0x47a5('0x14')](_0x2763d6,_0x47a5('0x1b'));_0x2763d6[_0x47a5('0x1c')]=_0x47a5('0x1d');return ami['Action'](_0x2763d6)[_0x47a5('0x1e')](function(_0x385687){_0x3aed38({'code':0xc8,'message':_0x385687['content']});})[_0x47a5('0x19')](function(_0xc4cd63){_0x4a9fcb(_0xe3c618[_0x47a5('0x10')](0x1f5,_0xc4cd63[_0x47a5('0x18')]));});});},'VoiceQueues':function(){return new Promise(function(_0x3abd6a){var _0x50bf17=[];for(var _0x53078a in _0x3717e1[_0x47a5('0x1f')]){if(_0x3717e1['voiceQueues'][_0x47a5('0x20')](_0x53078a)){var _0x5b6c4e=_0x3717e1[_0x47a5('0x1f')][_0x53078a];var _0x378208=new VoiceQueueSummary(_0x5b6c4e);_0x50bf17[_0x47a5('0x21')](_0x378208);}}_0x3abd6a({'count':_0x50bf17[_0x47a5('0x22')],'rows':_0x50bf17});});},'UpdateVoiceQueue':function(_0x21f296){return new Promise(function(_0x3ba0b7,_0x24b162){var _0x136b14=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x1f')],{'id':parseInt(_0x21f296['id'])});var _0x1127f8=_[_0x47a5('0x24')](_0x21f296,['id']);if(_0x136b14){for(var _0x3ad507 in _0x1127f8){if(typeof _0x1127f8[_0x3ad507]!=='undefined'&&typeof _0x136b14[_0x3ad507]!==_0x47a5('0x25')){_0x136b14[_0x3ad507]=_0x1127f8[_0x3ad507];}}_0x3ba0b7(_0x136b14);}else{_0x24b162();}});},'VoiceChannels':function(){return new Promise(function(_0x51833b){var _0x2ef875=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x27')]);_0x51833b({'count':_0x2ef875['length'],'rows':_0x2ef875});});},'VoiceChannelMixMonitor':function(_0x256650){var _0x625952=this;return new Promise(function(_0x39b50b,_0x1f1c68){if(ami['isConnected']()==![]){return _0x1f1c68(_0x625952['error'](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],'ami\x20disconnected'][_0x47a5('0x13')]('\x20')));}var _0x51544e=schema(properties['voicechannel'])[_0x47a5('0x28')](_0x256650);if(_0x51544e['length']>0x0){return _0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x51544e,'message')['join'](',\x20')));}var _0x274e34=_['find'](_0x3717e1[_0x47a5('0x27')],{'uniqueid':_0x256650[_0x47a5('0x2a')]});if(_0x274e34&&_0x274e34[_0x47a5('0x2b')]){var _0x52749b=util[_0x47a5('0x2c')]('%s.%s',_0x256650['filename']||_0x256650[_0x47a5('0x2a')],_0x256650['format']||_0x47a5('0x2d'));return ami['Action']({'action':_0x47a5('0x2e'),'channel':_0x274e34[_0x47a5('0x2b')],'file':_0x52749b,'options':_0x47a5('0x2f')})[_0x47a5('0x1e')](function(_0x36add5){var _0xed6320=_[_0x47a5('0x23')](_0x274e34[_0x47a5('0x30')],{'filename':_0x47a5('0x31')+_0x52749b['toLowerCase']()});if(_[_0x47a5('0x32')](_0xed6320)){_0x274e34[_0x47a5('0x30')]['push']({'filename':_0x47a5('0x31')+_0x52749b[_0x47a5('0x33')](),'createdAt':moment()[_0x47a5('0x2c')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x36add5[_0x47a5('0x34')],'status':_0x47a5('0x35')});}else{_0xed6320['mixmonitorid']=_0x36add5[_0x47a5('0x34')];_0xed6320[_0x47a5('0x36')]='rec';}_0x39b50b({'code':0xc8,'message':[_0x256650['uniqueid'],'MixMonitor\x20Success',_0x36add5[_0x47a5('0x34')]]['join']('\x20'),'mixmonitorid':_0x36add5[_0x47a5('0x34')]});})[_0x47a5('0x19')](function(_0x301a85){_0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f5,[_0x256650[_0x47a5('0x2a')],_0x301a85[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f5,_0x47a5('0x37')));}});},'VoiceChannelStopMixMonitor':function(_0x280500){var _0x1658e8=this;return new Promise(function(_0x23d6d8,_0x56dbbd){if(ami[_0x47a5('0xf')]()==![]){return _0x56dbbd(_0x1658e8[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],_0x47a5('0x12')]['join']('\x20')));}var _0x47c7a2=schema(properties['voicechannel'])['validate'](_0x280500);if(_0x47c7a2[_0x47a5('0x22')]>0x0){return _0x56dbbd(_0x1658e8['error'](0x1f4,_[_0x47a5('0x29')](_0x47c7a2,_0x47a5('0x18'))[_0x47a5('0x13')](',\x20')));}var _0x494526=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x27')],{'uniqueid':_0x280500['uniqueid']});if(_0x494526){return Promise['resolve']()[_0x47a5('0x1e')](function(){if(_0x494526['channel']){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x39'),'channel':_0x494526[_0x47a5('0x2b')],'mixmonitorid':_0x280500[_0x47a5('0x34')]})[_0x47a5('0x19')](function(){});}})[_0x47a5('0x1e')](function(){if(_0x494526[_0x47a5('0x3a')]){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x39'),'channel':_0x494526[_0x47a5('0x3a')],'mixmonitorid':_0x280500[_0x47a5('0x34')]})[_0x47a5('0x19')](function(){});}})[_0x47a5('0x1e')](function(){var _0x3574d4=_[_0x47a5('0x23')](_0x494526[_0x47a5('0x30')],{'mixmonitorid':_0x280500['mixmonitorid']});if(_0x3574d4){_0x3574d4[_0x47a5('0x36')]=_0x47a5('0x3b');}})['then'](function(){var _0x52b3a8=util[_0x47a5('0x2c')]('%s.%s',_0x280500[_0x47a5('0x3c')]||_0x280500[_0x47a5('0x2a')],_0x280500['format']||'wav');var _0x3d85cc=_['find'](_0x494526[_0x47a5('0x30')],{'filename':_0x47a5('0x31')+_0x52b3a8[_0x47a5('0x33')]()});if(_0x3d85cc){_0x3d85cc[_0x47a5('0x36')]=_0x47a5('0x3b');}})[_0x47a5('0x1e')](function(){_0x23d6d8({'code':0xc8,'message':[_0x280500[_0x47a5('0x2a')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0x47a5('0x19')](function(_0x411230){_0x56dbbd(_0x1658e8[_0x47a5('0x10')](0x1f5,[_0x280500[_0x47a5('0x2a')],_0x411230[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x56dbbd(_0x1658e8['error'](0x1f5,_0x47a5('0x37')));}});},'VoiceQueuesChannels':function(_0x1c9a62){var _0x5f6a=this;return new Promise(function(_0x5c3c75){var _0x12ca40=_['values'](_0x3717e1[_0x47a5('0x3d')]);var _0xe31817={'count':_0x12ca40[_0x47a5('0x22')],'rows':_0x12ca40};if(_0x1c9a62&&_0x1c9a62[_0x47a5('0x3e')]){if(!['inbound',_0x47a5('0x3f')][_0x47a5('0x40')](_0x1c9a62[_0x47a5('0x3e')])){return _0x59199c(_0x5f6a[_0x47a5('0x10')](0x190,_0x47a5('0x41')));}var _0x6a53b3=_[_0x47a5('0x42')](_0x12ca40,function(_0x481089){return _0x481089[_0x47a5('0x3e')]===_0x1c9a62[_0x47a5('0x3e')];});_0xe31817[_0x47a5('0x43')]=_0x6a53b3[_0x47a5('0x22')];_0xe31817[_0x47a5('0x44')]=_0x6a53b3;}_0x5c3c75(_0xe31817);});},'VoiceQueuesChannel':function(_0x1ab0bf){var _0x572233=this;return new Promise(function(_0x1ad6a9,_0x245a15){var _0x1aa581=schema(properties['voicequeuechannel'])[_0x47a5('0x28')](_0x1ab0bf);if(_0x1aa581[_0x47a5('0x22')]>0x0){return _0x245a15(_0x572233[_0x47a5('0x10')](0x1f4,_['map'](_0x1aa581,'message')[_0x47a5('0x13')](',\x20')));}var _0x376e1d=_['find'](_0x3717e1['queueChannels'],{'uniqueid':_0x1ab0bf[_0x47a5('0x2a')]});if(_0x376e1d){_0x1ad6a9(_0x376e1d);}else{return _0x245a15(_0x572233['error'](0x1f5,_0x47a5('0x37')));}});},'VoiceQueuesChannelHangup':function(_0x5d383d){var _0x482de6=this;return new Promise(function(_0x389ed9,_0x46d2d3){if(ami['isConnected']()==![]){return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config['asterisk']['username'],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}var _0x867da0=schema(properties[_0x47a5('0x45')])['validate'](_0x5d383d);if(_0x867da0[_0x47a5('0x22')]>0x0){return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x867da0,'message')[_0x47a5('0x13')](',\x20')));}var _0x4db625=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x3d')],{'uniqueid':_0x5d383d[_0x47a5('0x2a')]});if(_0x4db625&&_0x4db625[_0x47a5('0x2b')]){return ami[_0x47a5('0x38')]({'action':'Hangup','channel':_0x4db625[_0x47a5('0x2b')]})['then'](function(_0x5cbe97){_0x389ed9({'code':0xc8,'message':[_0x5d383d['uniqueid'],_0x5cbe97['message'][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')});})[_0x47a5('0x19')](function(_0x52e3ee){_0x46d2d3(_0x482de6['error'](0x1f5,[_0x5d383d[_0x47a5('0x2a')],_0x52e3ee[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x3474b7){var _0x519e9e=this;return new Promise(function(_0x22c886,_0x274d31){if(ami['isConnected']()==![]){return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')][_0x47a5('0x1a')],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}var _0x35cca8=schema(properties[_0x47a5('0x46')])['validate'](_0x3474b7);if(_0x35cca8[_0x47a5('0x22')]>0x0){return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x35cca8,_0x47a5('0x18'))[_0x47a5('0x13')](',\x20')));}var _0x4bbe14=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x3d')],{'uniqueid':_0x3474b7[_0x47a5('0x2a')]});if(_0x4bbe14&&_0x4bbe14[_0x47a5('0x2b')]){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x47'),'channel':_0x4bbe14[_0x47a5('0x2b')],'exten':_0x3474b7[_0x47a5('0x48')],'context':_0x3474b7[_0x47a5('0x49')]||_0x4bbe14[_0x47a5('0x49')],'priority':0x1})[_0x47a5('0x1e')](function(_0x44fda9){_0x22c886({'code':0xc8,'message':[_0x3474b7[_0x47a5('0x2a')],_0x44fda9[_0x47a5('0x18')][_0x47a5('0x33')]()]['join']('\x20')});})[_0x47a5('0x19')](function(_0x284fb8){_0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f5,[_0x3474b7['uniqueid'],_0x284fb8[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x3ac402){return new Promise(function(_0x522ccf){var _0x2d5ee6=_['values'](_0x3717e1[_0x47a5('0xb')]);if(_0x3ac402&&_0x3ac402['id']){var _0x4cf7c5=_[_0x47a5('0x23')](_0x2d5ee6,function(_0x2f27c3){return _0x2f27c3['id']===_0x3ac402['id'];});_0x522ccf(_0x4cf7c5);}else{_0x522ccf({'count':_0x2d5ee6[_0x47a5('0x22')],'rows':_0x2d5ee6});}});},'Telephones':function(){return new Promise(function(_0x58473b){var _0x4af557=_['values'](_0x3717e1[_0x47a5('0x4a')]);_0x58473b({'count':_0x4af557[_0x47a5('0x22')],'rows':_0x4af557});});},'Trunks':function(){return new Promise(function(_0xe3c0a7){var _0x117510=_['values'](_0x3717e1[_0x47a5('0x4b')]);_0xe3c0a7({'count':_0x117510[_0x47a5('0x22')],'rows':_0x117510});});},'OutboundChannels':function(){return new Promise(function(_0x390bc0){var _0xd5b23f=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x4c')]);_0x390bc0({'count':_0xd5b23f[_0x47a5('0x22')],'rows':_0xd5b23f});});},'Outbound':function(){return new Promise(function(_0x39939a){_0x39939a(_0x3717e1[_0x47a5('0x3f')]);});},'Campaigns':function(){return new Promise(function(_0xc69a68){var _0x2e6fcc=_[_0x47a5('0x26')](_0x3717e1['campaigns']);_0xc69a68({'count':_0x2e6fcc[_0x47a5('0x22')],'rows':_0x2e6fcc});});},'VoiceQueuesPreview':function(_0x4833be){var _0x2ad00a=this;return new Promise(function(_0x2ac30f,_0x281e5f){_0xfdf934[_0x47a5('0x4d')](_0x4833be['id'])[_0x47a5('0x1e')](function(_0xa9c853){_0x2ac30f({'code':0xc8,'message':_0xa9c853[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x11c1db){_0x281e5f(_0x2ad00a[_0x47a5('0x10')](0x1f4,_0x11c1db[_0x47a5('0x18')]));});});},'EventManager':function(_0x1f07ac){var _0x8f0035=this;return new Promise(function(_0x2d434c,_0x441d64){if(!_0x1f07ac['event']){return _0x441d64(_0x8f0035['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x47a5('0x4e')+_0x1f07ac[_0x47a5('0x4f')],_0x1f07ac['message']);_0x2d434c({'code':0xc8,'message':_0x1f07ac});});},'FaxAccounts':function(){return new Promise(function(_0x732e00){var _0x44dda2=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x50')]);_0x732e00({'count':_0x44dda2[_0x47a5('0x22')],'rows':_0x44dda2});});},'SendFax':function(_0x930d25){var _0x218dfa=this;return new Promise(function(_0x1c7302,_0x2e9a96){_0x545a97[_0x47a5('0x51')](_0x930d25)[_0x47a5('0x1e')](function(_0x5e5f16){_0x1c7302({'code':0xc8,'message':_0x5e5f16[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x420671){_0x2e9a96(_0x218dfa['error'](0x1f4,_0x420671[_0x47a5('0x18')]));});});},'CheckAfterSend':function(_0x32f393){var _0x17b61d=this;return new Promise(function(_0x5d41d8,_0x19dc8c){_0x545a97['checkAfterSend'](_0x32f393)['then'](function(_0x356e16){_0x5d41d8({'code':0xc8,'message':_0x356e16[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x27333e){_0x19dc8c(_0x17b61d[_0x47a5('0x10')](0x1f4,_0x27333e[_0x47a5('0x18')]));});});}};var _0x479a82=jayson['server'](_0x343372)[_0x47a5('0x52')]();_0x479a82['on']('error',function(_0x24dbee){return _0x59199c(_0x24dbee);});_0x479a82[_0x47a5('0x7')](0x232a,_0x47a5('0x53'),function(){console[_0x47a5('0x54')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x3d5629(_0x47a5('0x55')+0x232a);});});};
\ No newline at end of file
+var _0xb10b=['type','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','voicequeuechannel','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','telephones','trunks','run','event','Event\x20name\x20mandatory','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','moment','../properties','../ami','../model/voiceQueueSummary','listen','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','voiceStatus','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','then','message','catch','command','Command','content','voiceQueues','hasOwnProperty','push','length','find','omit','undefined','values','voicechannel','map','channels','uniqueid','channel','%s.%s','filename','wav','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','monitors','stop','queueChannels','inbound','outbound','includes'];(function(_0x590751,_0xa0b845){var _0xbaaaee=function(_0x238605){while(--_0x238605){_0x590751['push'](_0x590751['shift']());}};_0xbaaaee(++_0xa0b845);}(_0xb10b,0x12a));var _0xbb10=function(_0x546f72,_0x3b10bc){_0x546f72=_0x546f72-0x0;var _0x45dea6=_0xb10b[_0x546f72];return _0x45dea6;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var jayson=require(_0xbb10('0x1'));var schema=require(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var config=require('../../../config/environment');var properties=require(_0xbb10('0x4'));var ami=require(_0xbb10('0x5'));var VoiceQueueSummary=require(_0xbb10('0x6'));exports[_0xbb10('0x7')]=function(_0x49baf4,_0x312b72,_0x481979){return new Promise(function(_0x328583,_0x3cdd53){var _0x513741={'QueuePause':function(_0x1b9e94){return new Promise(function(_0x3fb675){var _0x21370f=util[_0xbb10('0x8')](_0xbb10('0x9'),_0xbb10('0xa'),_0x1b9e94[_0xbb10('0xb')]);if(_0x49baf4[_0xbb10('0xc')]&&_0x49baf4['timers'][_0x21370f]&&_0x49baf4['timers'][_0x21370f][_0xbb10('0xd')]){_0x49baf4[_0xbb10('0xc')][_0x21370f][_0xbb10('0xe')]();}if(_0x49baf4['agents'][_0x21370f]){_0x49baf4[_0xbb10('0xf')][_0x21370f]['updateStatusRealtime']({'state':_0x49baf4[_0xbb10('0xf')][_0x21370f][_0xbb10('0x10')],'statePause':_0x1b9e94[_0xbb10('0x11')]?!![]:![]});}_0x3fb675({'code':0xc8,'message':_0xbb10('0x12')});});},'Reload':function(_0x442548){var _0x147230=this;return new Promise(function(_0x58a612,_0x26e021){if(ami[_0xbb10('0x13')]()==![]){return _0x26e021(_0x147230[_0xbb10('0x14')](0x1f4,[config[_0xbb10('0x15')]['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],_0xbb10('0x17')][_0xbb10('0x18')]('\x20')));}_0x442548=_[_0xbb10('0x19')](_0x442548,_[_0xbb10('0x1a')](properties['reload'][_0xbb10('0x1b')]));_0x442548[_0xbb10('0x1c')]=_0xbb10('0x1d');return ami[_0xbb10('0x1e')](_0x442548)[_0xbb10('0x1f')](function(_0x1682a4){_0x58a612({'code':0xc8,'message':_0x1682a4[_0xbb10('0x20')]});})[_0xbb10('0x21')](function(_0xbf2906){_0x26e021(_0x147230[_0xbb10('0x14')](0x1f5,_0xbf2906['message']));});});},'Command':function(_0x5ff0cf){var _0x19f48d=this;return new Promise(function(_0x388fab,_0x109908){if(ami[_0xbb10('0x13')]()==![]){return _0x109908(_0x19f48d[_0xbb10('0x14')](0x1f4,[config['asterisk']['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],'ami\x20disconnected']['join']('\x20')));}_0x5ff0cf=_[_0xbb10('0x19')](_0x5ff0cf,_0xbb10('0x22'));_0x5ff0cf[_0xbb10('0x1c')]=_0xbb10('0x23');return ami[_0xbb10('0x1e')](_0x5ff0cf)[_0xbb10('0x1f')](function(_0x407cb4){_0x388fab({'code':0xc8,'message':_0x407cb4[_0xbb10('0x24')]});})[_0xbb10('0x21')](function(_0x395404){_0x109908(_0x19f48d[_0xbb10('0x14')](0x1f5,_0x395404[_0xbb10('0x20')]));});});},'VoiceQueues':function(){return new Promise(function(_0x537898){var _0x4fedac=[];for(var _0x4fb5e0 in _0x49baf4[_0xbb10('0x25')]){if(_0x49baf4[_0xbb10('0x25')][_0xbb10('0x26')](_0x4fb5e0)){var _0x4e25ff=_0x49baf4[_0xbb10('0x25')][_0x4fb5e0];var _0x24d586=new VoiceQueueSummary(_0x4e25ff);_0x4fedac[_0xbb10('0x27')](_0x24d586);}}_0x537898({'count':_0x4fedac[_0xbb10('0x28')],'rows':_0x4fedac});});},'UpdateVoiceQueue':function(_0x1acce9){return new Promise(function(_0x20d946,_0x2a0e8b){var _0x4aabb9=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x25')],{'id':parseInt(_0x1acce9['id'])});var _0xfc3595=_[_0xbb10('0x2a')](_0x1acce9,['id']);if(_0x4aabb9){for(var _0x1d30aa in _0xfc3595){if(typeof _0xfc3595[_0x1d30aa]!==_0xbb10('0x2b')&&typeof _0x4aabb9[_0x1d30aa]!=='undefined'){_0x4aabb9[_0x1d30aa]=_0xfc3595[_0x1d30aa];}}_0x20d946(_0x4aabb9);}else{_0x2a0e8b();}});},'VoiceChannels':function(){return new Promise(function(_0x221624){var _0x4ee02e=_[_0xbb10('0x2c')](_0x49baf4['channels']);_0x221624({'count':_0x4ee02e[_0xbb10('0x28')],'rows':_0x4ee02e});});},'VoiceChannelMixMonitor':function(_0x1dcc9c){var _0x1b59f9=this;return new Promise(function(_0x491db4,_0x518d47){if(ami[_0xbb10('0x13')]()==![]){return _0x518d47(_0x1b59f9[_0xbb10('0x14')](0x1f4,[config['asterisk']['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],_0xbb10('0x17')][_0xbb10('0x18')]('\x20')));}var _0x37a83f=schema(properties[_0xbb10('0x2d')])[_0xbb10('0x2')](_0x1dcc9c);if(_0x37a83f['length']>0x0){return _0x518d47(_0x1b59f9[_0xbb10('0x14')](0x1f4,_[_0xbb10('0x2e')](_0x37a83f,_0xbb10('0x20'))[_0xbb10('0x18')](',\x20')));}var _0xfb2c5e=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x2f')],{'uniqueid':_0x1dcc9c[_0xbb10('0x30')]});if(_0xfb2c5e&&_0xfb2c5e[_0xbb10('0x31')]){var _0x56943c=util[_0xbb10('0x8')](_0xbb10('0x32'),_0x1dcc9c[_0xbb10('0x33')]||_0x1dcc9c[_0xbb10('0x30')],_0x1dcc9c['format']||_0xbb10('0x34'));return ami['Action']({'action':'MixMonitor','channel':_0xfb2c5e[_0xbb10('0x31')],'file':_0x56943c,'options':_0xbb10('0x35')})[_0xbb10('0x1f')](function(_0x120d21){var _0x15d895=_[_0xbb10('0x29')](_0xfb2c5e['monitors'],{'filename':_0xbb10('0x36')+_0x56943c[_0xbb10('0x37')]()});if(_['isNil'](_0x15d895)){_0xfb2c5e['monitors']['push']({'filename':_0xbb10('0x36')+_0x56943c[_0xbb10('0x37')](),'createdAt':moment()[_0xbb10('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x120d21[_0xbb10('0x38')],'status':_0xbb10('0x39')});}else{_0x15d895[_0xbb10('0x38')]=_0x120d21['mixmonitorid'];_0x15d895[_0xbb10('0x3a')]=_0xbb10('0x39');}_0x491db4({'code':0xc8,'message':[_0x1dcc9c[_0xbb10('0x30')],_0xbb10('0x3b'),_0x120d21['mixmonitorid']][_0xbb10('0x18')]('\x20'),'mixmonitorid':_0x120d21[_0xbb10('0x38')]});})['catch'](function(_0xe2040f){_0x518d47(_0x1b59f9[_0xbb10('0x14')](0x1f5,[_0x1dcc9c[_0xbb10('0x30')],_0xe2040f[_0xbb10('0x20')][_0xbb10('0x37')]()][_0xbb10('0x18')]('\x20')));});}else{return _0x518d47(_0x1b59f9['error'](0x1f5,_0xbb10('0x3c')));}});},'VoiceChannelStopMixMonitor':function(_0x1c7fae){var _0x3e7b4c=this;return new Promise(function(_0x3d3c41,_0x4943d9){if(ami[_0xbb10('0x13')]()==![]){return _0x4943d9(_0x3e7b4c[_0xbb10('0x14')](0x1f4,[config[_0xbb10('0x15')]['ip'],config[_0xbb10('0x15')]['username'],_0xbb10('0x17')][_0xbb10('0x18')]('\x20')));}var _0x54ac18=schema(properties['voicechannel'])[_0xbb10('0x2')](_0x1c7fae);if(_0x54ac18['length']>0x0){return _0x4943d9(_0x3e7b4c[_0xbb10('0x14')](0x1f4,_[_0xbb10('0x2e')](_0x54ac18,'message')[_0xbb10('0x18')](',\x20')));}var _0x1d82bf=_[_0xbb10('0x29')](_0x49baf4['channels'],{'uniqueid':_0x1c7fae[_0xbb10('0x30')]});if(_0x1d82bf){return Promise[_0xbb10('0x3d')]()[_0xbb10('0x1f')](function(){if(_0x1d82bf[_0xbb10('0x31')]){return ami[_0xbb10('0x1e')]({'action':_0xbb10('0x3e'),'channel':_0x1d82bf[_0xbb10('0x31')],'mixmonitorid':_0x1c7fae[_0xbb10('0x38')]})[_0xbb10('0x21')](function(){});}})[_0xbb10('0x1f')](function(){if(_0x1d82bf[_0xbb10('0x3f')]){return ami[_0xbb10('0x1e')]({'action':'StopMixMonitor','channel':_0x1d82bf[_0xbb10('0x3f')],'mixmonitorid':_0x1c7fae[_0xbb10('0x38')]})['catch'](function(){});}})[_0xbb10('0x1f')](function(){var _0x2f5027=_[_0xbb10('0x29')](_0x1d82bf[_0xbb10('0x40')],{'mixmonitorid':_0x1c7fae[_0xbb10('0x38')]});if(_0x2f5027){_0x2f5027[_0xbb10('0x3a')]=_0xbb10('0x41');}})['then'](function(){var _0x4a9793=util[_0xbb10('0x8')](_0xbb10('0x32'),_0x1c7fae[_0xbb10('0x33')]||_0x1c7fae['uniqueid'],_0x1c7fae['format']||_0xbb10('0x34'));var _0x34cf4e=_[_0xbb10('0x29')](_0x1d82bf[_0xbb10('0x40')],{'filename':_0xbb10('0x36')+_0x4a9793[_0xbb10('0x37')]()});if(_0x34cf4e){_0x34cf4e[_0xbb10('0x3a')]=_0xbb10('0x41');}})[_0xbb10('0x1f')](function(){_0x3d3c41({'code':0xc8,'message':[_0x1c7fae[_0xbb10('0x30')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0xbb10('0x21')](function(_0x467dba){_0x4943d9(_0x3e7b4c[_0xbb10('0x14')](0x1f5,[_0x1c7fae[_0xbb10('0x30')],_0x467dba[_0xbb10('0x20')][_0xbb10('0x37')]()][_0xbb10('0x18')]('\x20')));});}else{return _0x4943d9(_0x3e7b4c[_0xbb10('0x14')](0x1f5,_0xbb10('0x3c')));}});},'VoiceQueuesChannels':function(_0x1214f7){var _0x19ca3e=this;return new Promise(function(_0x20e18a){var _0x61e689=_[_0xbb10('0x2c')](_0x49baf4[_0xbb10('0x42')]);var _0x547a7a={'count':_0x61e689[_0xbb10('0x28')],'rows':_0x61e689};if(_0x1214f7&&_0x1214f7['type']){if(![_0xbb10('0x43'),_0xbb10('0x44')][_0xbb10('0x45')](_0x1214f7[_0xbb10('0x46')])){return _0x3cdd53(_0x19ca3e[_0xbb10('0x14')](0x190,_0xbb10('0x47')));}var _0x2e3326=_[_0xbb10('0x48')](_0x61e689,function(_0x180400){return _0x180400[_0xbb10('0x46')]===_0x1214f7[_0xbb10('0x46')];});_0x547a7a[_0xbb10('0x49')]=_0x2e3326[_0xbb10('0x28')];_0x547a7a[_0xbb10('0x4a')]=_0x2e3326;}_0x20e18a(_0x547a7a);});},'VoiceQueuesChannel':function(_0x4475e1){var _0x5de0cc=this;return new Promise(function(_0x4571b6,_0x466eb7){var _0x1b83a9=schema(properties[_0xbb10('0x4b')])[_0xbb10('0x2')](_0x4475e1);if(_0x1b83a9[_0xbb10('0x28')]>0x0){return _0x466eb7(_0x5de0cc['error'](0x1f4,_[_0xbb10('0x2e')](_0x1b83a9,_0xbb10('0x20'))[_0xbb10('0x18')](',\x20')));}var _0x14fed3=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x42')],{'uniqueid':_0x4475e1[_0xbb10('0x30')]});if(_0x14fed3){_0x4571b6(_0x14fed3);}else{return _0x466eb7(_0x5de0cc[_0xbb10('0x14')](0x1f5,_0xbb10('0x3c')));}});},'VoiceQueuesChannelHangup':function(_0x40c4fb){var _0x2eb05a=this;return new Promise(function(_0x2a1ce1,_0x16932f){if(ami['isConnected']()==![]){return _0x16932f(_0x2eb05a['error'](0x1f4,[config[_0xbb10('0x15')]['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],_0xbb10('0x17')]['join']('\x20')));}var _0x506498=schema(properties[_0xbb10('0x4c')])[_0xbb10('0x2')](_0x40c4fb);if(_0x506498[_0xbb10('0x28')]>0x0){return _0x16932f(_0x2eb05a[_0xbb10('0x14')](0x1f4,_[_0xbb10('0x2e')](_0x506498,_0xbb10('0x20'))[_0xbb10('0x18')](',\x20')));}var _0x4a5fb9=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x42')],{'uniqueid':_0x40c4fb['uniqueid']});if(_0x4a5fb9&&_0x4a5fb9['channel']){return ami['Action']({'action':_0xbb10('0x4d'),'channel':_0x4a5fb9[_0xbb10('0x31')]})[_0xbb10('0x1f')](function(_0x5bd1c0){_0x2a1ce1({'code':0xc8,'message':[_0x40c4fb['uniqueid'],_0x5bd1c0['message'][_0xbb10('0x37')]()][_0xbb10('0x18')]('\x20')});})[_0xbb10('0x21')](function(_0x4e9fbd){_0x16932f(_0x2eb05a[_0xbb10('0x14')](0x1f5,[_0x40c4fb[_0xbb10('0x30')],_0x4e9fbd['message']['toLowerCase']()][_0xbb10('0x18')]('\x20')));});}else{return _0x16932f(_0x2eb05a[_0xbb10('0x14')](0x1f5,_0xbb10('0x3c')));}});},'VoiceQueuesChannelRedirect':function(_0x237246){var _0x54b7c5=this;return new Promise(function(_0x43eaec,_0xec48ac){if(ami[_0xbb10('0x13')]()==![]){return _0xec48ac(_0x54b7c5['error'](0x1f4,[config[_0xbb10('0x15')]['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],'ami\x20disconnected'][_0xbb10('0x18')]('\x20')));}var _0x31e85e=schema(properties[_0xbb10('0x4e')])[_0xbb10('0x2')](_0x237246);if(_0x31e85e['length']>0x0){return _0xec48ac(_0x54b7c5[_0xbb10('0x14')](0x1f4,_[_0xbb10('0x2e')](_0x31e85e,_0xbb10('0x20'))[_0xbb10('0x18')](',\x20')));}var _0x56b3a3=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x42')],{'uniqueid':_0x237246[_0xbb10('0x30')]});if(_0x56b3a3&&_0x56b3a3[_0xbb10('0x31')]){return ami[_0xbb10('0x1e')]({'action':_0xbb10('0x4f'),'channel':_0x56b3a3[_0xbb10('0x31')],'exten':_0x237246['exten'],'context':_0x237246['context']||_0x56b3a3['context'],'priority':0x1})[_0xbb10('0x1f')](function(_0x9c672d){_0x43eaec({'code':0xc8,'message':[_0x237246[_0xbb10('0x30')],_0x9c672d['message']['toLowerCase']()][_0xbb10('0x18')]('\x20')});})[_0xbb10('0x21')](function(_0xd9e743){_0xec48ac(_0x54b7c5[_0xbb10('0x14')](0x1f5,[_0x237246[_0xbb10('0x30')],_0xd9e743[_0xbb10('0x20')]['toLowerCase']()][_0xbb10('0x18')]('\x20')));});}else{return _0xec48ac(_0x54b7c5[_0xbb10('0x14')](0x1f5,_0xbb10('0x3c')));}});},'Agents':function(_0x14f16b){return new Promise(function(_0x2aaaa6){var _0x5bfc68=_['values'](_0x49baf4['agents']);if(_0x14f16b&&_0x14f16b['id']){var _0x329da7=_[_0xbb10('0x29')](_0x5bfc68,function(_0x36917f){return _0x36917f['id']===_0x14f16b['id'];});_0x2aaaa6(_0x329da7);}else{_0x2aaaa6({'count':_0x5bfc68[_0xbb10('0x28')],'rows':_0x5bfc68});}});},'Telephones':function(){return new Promise(function(_0x2f7d2a){var _0x1d40b8=_['values'](_0x49baf4[_0xbb10('0x50')]);_0x2f7d2a({'count':_0x1d40b8['length'],'rows':_0x1d40b8});});},'Trunks':function(){return new Promise(function(_0x4fe3b5){var _0x519a54=_[_0xbb10('0x2c')](_0x49baf4[_0xbb10('0x51')]);_0x4fe3b5({'count':_0x519a54[_0xbb10('0x28')],'rows':_0x519a54});});},'OutboundChannels':function(){return new Promise(function(_0x108f99){var _0x5ce94f=_[_0xbb10('0x2c')](_0x49baf4['outboundChannels']);_0x108f99({'count':_0x5ce94f['length'],'rows':_0x5ce94f});});},'Outbound':function(){return new Promise(function(_0x165fe9){_0x165fe9(_0x49baf4[_0xbb10('0x44')]);});},'Campaigns':function(){return new Promise(function(_0x29529c){var _0x2bd2ab=_[_0xbb10('0x2c')](_0x49baf4['campaigns']);_0x29529c({'count':_0x2bd2ab[_0xbb10('0x28')],'rows':_0x2bd2ab});});},'VoiceQueuesPreview':function(_0x19fcec){var _0x2c6429=this;return new Promise(function(_0x3f3d38,_0x43cdb7){_0x312b72[_0xbb10('0x52')](_0x19fcec['id'])[_0xbb10('0x1f')](function(_0x53fa98){_0x3f3d38({'code':0xc8,'message':_0x53fa98[_0xbb10('0x20')]});})[_0xbb10('0x21')](function(_0x30f3ea){_0x43cdb7(_0x2c6429[_0xbb10('0x14')](0x1f4,_0x30f3ea[_0xbb10('0x20')]));});});},'EventManager':function(_0x172be3){var _0xa3b23=this;return new Promise(function(_0x312a08,_0x5a4429){if(!_0x172be3[_0xbb10('0x53')]){return _0x5a4429(_0xa3b23[_0xbb10('0x14')](0x1f4,_0xbb10('0x54')));}ami['emit']('custom:'+_0x172be3['event'],_0x172be3[_0xbb10('0x20')]);_0x312a08({'code':0xc8,'message':_0x172be3});});},'FaxAccounts':function(){return new Promise(function(_0x5a3c44){var _0x4e3d6a=_[_0xbb10('0x2c')](_0x49baf4[_0xbb10('0x55')]);_0x5a3c44({'count':_0x4e3d6a[_0xbb10('0x28')],'rows':_0x4e3d6a});});},'SendFax':function(_0x12ed63){var _0x32ec27=this;return new Promise(function(_0x24dca6,_0x33116){_0x481979[_0xbb10('0x56')](_0x12ed63)[_0xbb10('0x1f')](function(_0x5206e1){_0x24dca6({'code':0xc8,'message':_0x5206e1[_0xbb10('0x20')]});})[_0xbb10('0x21')](function(_0x46b6d2){_0x33116(_0x32ec27[_0xbb10('0x14')](0x1f4,_0x46b6d2['message']));});});},'CheckAfterSend':function(_0x4c0795){var _0x3547a3=this;return new Promise(function(_0x2280bd,_0x30f0a4){_0x481979[_0xbb10('0x57')](_0x4c0795)['then'](function(_0x17d596){_0x2280bd({'code':0xc8,'message':_0x17d596[_0xbb10('0x20')]});})[_0xbb10('0x21')](function(_0xf7b3e1){_0x30f0a4(_0x3547a3[_0xbb10('0x14')](0x1f4,_0xf7b3e1['message']));});});}};var _0x5f0691=jayson[_0xbb10('0x58')](_0x513741)[_0xbb10('0x59')]();_0x5f0691['on'](_0xbb10('0x14'),function(_0x5239da){return _0x3cdd53(_0x5239da);});_0x5f0691[_0xbb10('0x7')](0x232a,_0xbb10('0x5a'),function(){console['log']('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x328583(_0xbb10('0x5b')+0x232a);});});};
\ No newline at end of file
index 91260fe..3ecfa78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43f0=['merge','length','lodash','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','exec','data1','data2','isNil','data5','ListId','data3','split','phone','$or','map','routeId','calleridnum','firstName','lastName','mobile','createdAt','union','resolve','then','getContacts','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','destcalleridnum','<unknown>','calleridname','Unknown','destcalleridname','push','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','name','format','trigger:%s','action','toLowerCase'];(function(_0x2c2954,_0x3cadf4){var _0x1e834e=function(_0x9f157e){while(--_0x9f157e){_0x2c2954['push'](_0x2c2954['shift']());}};_0x1e834e(++_0x3cadf4);}(_0x43f0,0x110));var _0x043f=function(_0x8718a1,_0x28853d){_0x8718a1=_0x8718a1-0x0;var _0x466ef1=_0x43f0[_0x8718a1];return _0x466ef1;};'use strict';var _=require(_0x043f('0x0'));var BPromise=require('bluebird');var Redis=require('ioredis');var util=require(_0x043f('0x1'));var config=require(_0x043f('0x2'));var logger=require(_0x043f('0x3'))(_0x043f('0x4'));var cmContactRpc=require(_0x043f('0x5'));config[_0x043f('0x6')]=_[_0x043f('0x7')](config[_0x043f('0x6')],{'host':_0x043f('0x8'),'port':0x18eb});var io=require(_0x043f('0x9'))(new Redis(config[_0x043f('0x6')]));function emit(_0x3a7a23,_0x54270b,_0x3828f7,_0x5a3334,_0x56ef24){logger[_0x043f('0xa')](_0x043f('0xb'),_0x3a7a23,_0x54270b['id'],_0x3828f7,_0x5a3334,JSON[_0x043f('0xc')](_0x56ef24));io['to'](_0x3828f7)['emit'](_0x5a3334,_0x56ef24);}exports[_0x043f('0xd')]=function(_0x42060c,_0x33b2f4,_0x2ebf24,_0x5be095){var _0x554b95,_0xb28adb;var _0x2a9e1c={};var _0x4815ed;var _0x1a1405=Number(_0x2ebf24[_0x043f('0xe')]);var _0x457dcf=_0x2ebf24[_0x043f('0xf')]?Boolean(Number(_0x2ebf24['data2'])):![];var _0x5ec4b8;var _0xec20de=![];if(!_[_0x043f('0x10')](_0x2ebf24[_0x043f('0x11')])){if(_0x2ebf24['data5']=='1')_0xec20de=!![];}if(!_0xec20de){if(_0x5be095['xmd-contactid']){_0x2a9e1c['id']=_0x5be095['xmd-contactid'];}}if(!_0x2a9e1c['id']){_0x2a9e1c[_0x043f('0x12')]=_0x1a1405;_0x5ec4b8=_0x2ebf24[_0x043f('0x13')]&&_0x2ebf24[_0x043f('0x13')]!=='0'?_0x2ebf24[_0x043f('0x13')][_0x043f('0x14')](','):[_0x043f('0x15')];_0x2a9e1c[_0x043f('0x16')]=_[_0x043f('0x17')](_0x5ec4b8,function(_0xa29cdf){var _0x132ddc={};_0x132ddc[_0xa29cdf]=_0x5be095[_0x043f('0x18')]?_0x5be095['destcalleridnum']:_0x5be095[_0x043f('0x19')];return _0x132ddc;});_0x4815ed=_0x5be095[_0x043f('0x18')]?_0x5be095['destcalleridnum']:_0x5be095[_0x043f('0x19')];}var _0x3045a6=['id',_0x043f('0x1a'),_0x043f('0x1b'),_0x043f('0x15'),_0x043f('0x1c'),'fax','ListId',_0x043f('0x1d'),'scheduledAt','updatedAt'];var _0x4d537f=_[_0x043f('0x1e')](_0x3045a6,_0x5ec4b8);BPromise[_0x043f('0x1f')]()[_0x043f('0x20')](cmContactRpc[_0x043f('0x21')]({'attributes':_0x4d537f,'where':_0x2a9e1c,'phone':_0x4815ed}))[_0x043f('0x20')](function(_0x534e57){_0xb28adb=_0x534e57;if(!_['isEmpty'](_0xb28adb)){if(_0xb28adb['length']===0x1){_0x554b95=_0xb28adb[0x0];logger[_0x043f('0xa')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x5be095[_0x043f('0x22')],_0x33b2f4['id'],_0x554b95['id']);}else{logger['info'](_0x043f('0x23'),_0x5be095['uniqueid'],_0x33b2f4['id'],_[_0x043f('0x17')](_0xb28adb,'id')['join'](','));}return;}else{logger[_0x043f('0xa')](_0x043f('0x24'),_0x5be095[_0x043f('0x22')],_0x33b2f4['id']);var _0x252392={'ListId':_0x1a1405};var _0x3f5838=_0x2ebf24[_0x043f('0x25')]&&_0x2ebf24['data4']!=='0'?_0x2ebf24['data4']:_0x043f('0x15');if(_0x457dcf){logger[_0x043f('0xa')](_0x043f('0x26'),_0x5be095[_0x043f('0x22')],_0x33b2f4['id']);_0x252392[_0x3f5838]=_[_0x043f('0x10')](_0x5be095['routeId'])?_0x5be095[_0x043f('0x19')]:_0x5be095[_0x043f('0x27')];if(_[_0x043f('0x10')](_0x5be095[_0x043f('0x18')])){_0x252392[_0x043f('0x1a')]=_0x5be095['calleridname']&&_0x5be095['calleridname']!==_0x043f('0x28')?_0x5be095[_0x043f('0x29')]:_0x043f('0x2a');}else{_0x252392[_0x043f('0x1a')]=_0x5be095[_0x043f('0x2b')]&&_0x5be095[_0x043f('0x2b')]!=='<unknown>'?_0x5be095['destcalleridname']:_0x043f('0x2a');}return BPromise[_0x043f('0x1f')]()['then'](cmContactRpc['createContact'](_0x252392))['then'](function(_0x53c8d9){_0x554b95=_0x53c8d9;_0xb28adb[_0x043f('0x2c')](_0x53c8d9);if(_0x554b95){logger[_0x043f('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x5be095['uniqueid'],_0x33b2f4['id'],_0x554b95['id']);}return;});}else{logger[_0x043f('0xa')](_0x043f('0x2d'),_0x5be095[_0x043f('0x22')],_0x33b2f4['id']);_0x252392[_0x3f5838]=_[_0x043f('0x10')](_0x5be095[_0x043f('0x18')])?_0x5be095['calleridnum']:_0x5be095[_0x043f('0x27')];if(_[_0x043f('0x10')](_0x5be095['routeId'])){_0x252392['firstName']=_0x5be095[_0x043f('0x29')]&&_0x5be095[_0x043f('0x29')]!==_0x043f('0x28')?_0x5be095[_0x043f('0x29')]:'Unknown';}else{_0x252392[_0x043f('0x1a')]=_0x5be095['destcalleridname']&&_0x5be095[_0x043f('0x2b')]!==_0x043f('0x28')?_0x5be095['destcalleridname']:_0x043f('0x2a');}_0x554b95=_0x252392;_0xb28adb[_0x043f('0x2c')](_0x252392);return;}}})[_0x043f('0x20')](function(){if(_0x42060c){emit(_0x5be095['uniqueid'],_0x33b2f4,util['format'](_0x043f('0x2e'),_0x42060c[_0x043f('0x2f')]),util[_0x043f('0x30')](_0x043f('0x31'),_0x2ebf24[_0x043f('0x32')][_0x043f('0x33')]()),{'evt':_[_0x043f('0x34')](_0x5be095,{'autoCreate':_0x457dcf}),'contact':_0x554b95===undefined?{}:_0x554b95,'contacts':_0xb28adb[_0x043f('0x35')]===0x0?undefined:_0xb28adb});}});};
\ No newline at end of file
+var _0x24e4=['socket.io-emitter','[CM][%s][%s]','stringify','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','map','destcalleridnum','calleridnum','routeId','firstName','phone','mobile','fax','createdAt','scheduledAt','updatedAt','then','isEmpty','length','info','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','Unknown','destcalleridname','<unknown>','resolve','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','trigger:%s','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','redis','defaults','localhost'];(function(_0x435565,_0x5ba561){var _0x32186f=function(_0x50060e){while(--_0x50060e){_0x435565['push'](_0x435565['shift']());}};_0x32186f(++_0x5ba561);}(_0x24e4,0x10e));var _0x424e=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0x24e4[_0x3e32a8];return _0x2997b0;};'use strict';var _=require(_0x424e('0x0'));var BPromise=require(_0x424e('0x1'));var Redis=require(_0x424e('0x2'));var util=require(_0x424e('0x3'));var config=require(_0x424e('0x4'));var logger=require(_0x424e('0x5'))(_0x424e('0x6'));var cmContactRpc=require('../../rpc/cmContact');config[_0x424e('0x7')]=_[_0x424e('0x8')](config[_0x424e('0x7')],{'host':_0x424e('0x9'),'port':0x18eb});var io=require(_0x424e('0xa'))(new Redis(config[_0x424e('0x7')]));function emit(_0x1ce650,_0x2860df,_0x261964,_0x53d6a4,_0x34bbfa){logger['info'](_0x424e('0xb'),_0x1ce650,_0x2860df['id'],_0x261964,_0x53d6a4,JSON[_0x424e('0xc')](_0x34bbfa));io['to'](_0x261964)['emit'](_0x53d6a4,_0x34bbfa);}exports[_0x424e('0xd')]=function(_0x4c6daf,_0x39d05f,_0x33a2b2,_0x3dda80){var _0x54d6f1,_0x498c89;var _0x40dcff={};var _0x1408d5;var _0x178fc5=Number(_0x33a2b2[_0x424e('0xe')]);var _0x4f19c8=_0x33a2b2[_0x424e('0xf')]?Boolean(Number(_0x33a2b2[_0x424e('0xf')])):![];var _0x3ca264;var _0x168947=![];if(!_[_0x424e('0x10')](_0x33a2b2[_0x424e('0x11')])){if(_0x33a2b2[_0x424e('0x11')]=='1')_0x168947=!![];}if(!_0x168947){if(_0x3dda80['xmd-contactid']){_0x40dcff['id']=_0x3dda80[_0x424e('0x12')];}}if(!_0x40dcff['id']){_0x40dcff[_0x424e('0x13')]=_0x178fc5;_0x3ca264=_0x33a2b2[_0x424e('0x14')]&&_0x33a2b2['data3']!=='0'?_0x33a2b2[_0x424e('0x14')][_0x424e('0x15')](','):['phone'];_0x40dcff['$or']=_[_0x424e('0x16')](_0x3ca264,function(_0xf493cb){var _0x20d248={};_0x20d248[_0xf493cb]=_0x3dda80['routeId']?_0x3dda80[_0x424e('0x17')]:_0x3dda80[_0x424e('0x18')];return _0x20d248;});_0x1408d5=_0x3dda80[_0x424e('0x19')]?_0x3dda80[_0x424e('0x17')]:_0x3dda80[_0x424e('0x18')];}var _0x5c6ce0=['id',_0x424e('0x1a'),'lastName',_0x424e('0x1b'),_0x424e('0x1c'),_0x424e('0x1d'),'ListId',_0x424e('0x1e'),_0x424e('0x1f'),_0x424e('0x20')];var _0x469717=_['union'](_0x5c6ce0,_0x3ca264);BPromise['resolve']()[_0x424e('0x21')](cmContactRpc['getContacts']({'attributes':_0x469717,'where':_0x40dcff,'phone':_0x1408d5}))[_0x424e('0x21')](function(_0x21cc27){_0x498c89=_0x21cc27;if(!_[_0x424e('0x22')](_0x498c89)){if(_0x498c89[_0x424e('0x23')]===0x1){_0x54d6f1=_0x498c89[0x0];logger[_0x424e('0x24')](_0x424e('0x25'),_0x3dda80[_0x424e('0x26')],_0x39d05f['id'],_0x54d6f1['id']);}else{logger[_0x424e('0x24')](_0x424e('0x27'),_0x3dda80['uniqueid'],_0x39d05f['id'],_[_0x424e('0x16')](_0x498c89,'id')[_0x424e('0x28')](','));}return;}else{logger[_0x424e('0x24')](_0x424e('0x29'),_0x3dda80['uniqueid'],_0x39d05f['id']);var _0x4257b9={'ListId':_0x178fc5};var _0x2ba4ef=_0x33a2b2[_0x424e('0x2a')]&&_0x33a2b2[_0x424e('0x2a')]!=='0'?_0x33a2b2[_0x424e('0x2a')]:_0x424e('0x1b');if(_0x4f19c8){logger[_0x424e('0x24')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x3dda80[_0x424e('0x26')],_0x39d05f['id']);_0x4257b9[_0x2ba4ef]=_[_0x424e('0x10')](_0x3dda80[_0x424e('0x19')])?_0x3dda80[_0x424e('0x18')]:_0x3dda80[_0x424e('0x17')];if(_[_0x424e('0x10')](_0x3dda80[_0x424e('0x19')])){_0x4257b9[_0x424e('0x1a')]=_0x3dda80[_0x424e('0x2b')]&&_0x3dda80[_0x424e('0x2b')]!=='<unknown>'?_0x3dda80[_0x424e('0x2b')]:_0x424e('0x2c');}else{_0x4257b9[_0x424e('0x1a')]=_0x3dda80[_0x424e('0x2d')]&&_0x3dda80['destcalleridname']!==_0x424e('0x2e')?_0x3dda80['destcalleridname']:_0x424e('0x2c');}return BPromise[_0x424e('0x2f')]()[_0x424e('0x21')](cmContactRpc[_0x424e('0x30')](_0x4257b9))[_0x424e('0x21')](function(_0x23648c){_0x54d6f1=_0x23648c;_0x498c89[_0x424e('0x31')](_0x23648c);if(_0x54d6f1){logger[_0x424e('0x24')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x3dda80[_0x424e('0x26')],_0x39d05f['id'],_0x54d6f1['id']);}return;});}else{logger['info'](_0x424e('0x32'),_0x3dda80[_0x424e('0x26')],_0x39d05f['id']);_0x4257b9[_0x2ba4ef]=_[_0x424e('0x10')](_0x3dda80['routeId'])?_0x3dda80[_0x424e('0x18')]:_0x3dda80[_0x424e('0x17')];if(_[_0x424e('0x10')](_0x3dda80[_0x424e('0x19')])){_0x4257b9['firstName']=_0x3dda80[_0x424e('0x2b')]&&_0x3dda80['calleridname']!==_0x424e('0x2e')?_0x3dda80[_0x424e('0x2b')]:'Unknown';}else{_0x4257b9[_0x424e('0x1a')]=_0x3dda80[_0x424e('0x2d')]&&_0x3dda80['destcalleridname']!==_0x424e('0x2e')?_0x3dda80[_0x424e('0x2d')]:_0x424e('0x2c');}_0x54d6f1=_0x4257b9;_0x498c89[_0x424e('0x31')](_0x4257b9);return;}}})[_0x424e('0x21')](function(){if(_0x4c6daf){emit(_0x3dda80[_0x424e('0x26')],_0x39d05f,util[_0x424e('0x33')](_0x424e('0x34'),_0x4c6daf['name']),util[_0x424e('0x33')](_0x424e('0x35'),_0x33a2b2['action'][_0x424e('0x36')]()),{'evt':_[_0x424e('0x37')](_0x3dda80,{'autoCreate':_0x4f19c8}),'contact':_0x54d6f1===undefined?{}:_0x54d6f1,'contacts':_0x498c89[_0x424e('0x23')]===0x0?undefined:_0x498c89});}});};
\ No newline at end of file
index 1d05efd..40fdeba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8e9=['upperFirst','interaction','message','event','agent','lastevent','routeId','mailSubstatus','null','substatus','offlineMessage','created','equals','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','custom:dialend','syncAgentDial','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','info','stringify','clone','motionChannel','undefined','debug','checkTriggers','interface','status','checkTrigger','variables','Actions','length','action','contactmanager','motionbar','browser','data2','render','html','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','800','windowHeight','data6','600','winApplication','format','user:%s','toLowerCase','data1','merge','jscripty','name','trigger:%s','exec','integration','queue','urlforward','script','parse','query','search','channel','AllConditions','AnyConditions','some','checkConditions','checkTrigger:\x20trigger','inspect','evt','field','account','chat','ChatWebsiteId','operator','AccountId','value'];(function(_0x53f636,_0x1d15f1){var _0x21678a=function(_0x3d331b){while(--_0x3d331b){_0x53f636['push'](_0x53f636['shift']());}};_0x21678a(++_0x1d15f1);}(_0xf8e9,0x120));var _0x9f8e=function(_0x366a3b,_0x2e43d5){_0x366a3b=_0x366a3b-0x0;var _0x451450=_0xf8e9[_0x366a3b];return _0x451450;};'use strict';var util=require(_0x9f8e('0x0'));var _=require(_0x9f8e('0x1'));var url=require(_0x9f8e('0x2'));var Mustache=require(_0x9f8e('0x3'));var Redis=require(_0x9f8e('0x4'));var urlforward=require(_0x9f8e('0x5'));var integration=require(_0x9f8e('0x6'));var cmContact=require('./cmContact');var script=require(_0x9f8e('0x7'));var config=require(_0x9f8e('0x8'));var logger=require(_0x9f8e('0x9'))(_0x9f8e('0xa'));var ami=require(_0x9f8e('0xb'));config[_0x9f8e('0xc')]=_[_0x9f8e('0xd')](config[_0x9f8e('0xc')],{'host':_0x9f8e('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9f8e('0xc')]));var operators={'equals':function(_0x3a5369,_0x1ebf6b){return _0x3a5369==_0x1ebf6b;},'not_equals':function(_0x4b5120,_0x4db5fe){return _0x4b5120!=_0x4db5fe;}};var barAndWebActions=[_0x9f8e('0xf'),_0x9f8e('0x2'),_0x9f8e('0x10')];function Trigger(_0x399f3e){this[_0x9f8e('0x11')]=_0x399f3e[_0x9f8e('0x11')];this[_0x9f8e('0x12')]=_0x399f3e[_0x9f8e('0x12')];this['voiceQueues']=_0x399f3e[_0x9f8e('0x13')];this[_0x9f8e('0x14')]=_0x399f3e[_0x9f8e('0x14')];this[_0x9f8e('0x15')]=_0x399f3e[_0x9f8e('0x15')];this[_0x9f8e('0x16')]=_0x399f3e[_0x9f8e('0x16')];this['freshdeskAccounts']=_0x399f3e[_0x9f8e('0x17')];this[_0x9f8e('0x18')]=_0x399f3e[_0x9f8e('0x18')];this[_0x9f8e('0x19')]=_0x399f3e[_0x9f8e('0x19')];this[_0x9f8e('0x1a')]=_0x399f3e[_0x9f8e('0x1a')];this[_0x9f8e('0x1b')]=_0x399f3e[_0x9f8e('0x1b')];this[_0x9f8e('0x1c')]=_0x399f3e['vtigerAccounts'];this[_0x9f8e('0x1d')]=_0x399f3e[_0x9f8e('0x1d')];this[_0x9f8e('0x1e')]=_0x399f3e['dynamics365Accounts'];this[_0x9f8e('0x1f')]=_0x399f3e[_0x9f8e('0x1f')];this[_0x9f8e('0x20')]={'zendesk':this[_0x9f8e('0x16')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x9f8e('0x17')],'sugarcrm':this[_0x9f8e('0x19')],'zoho':this[_0x9f8e('0x1a')],'desk':this[_0x9f8e('0x1b')],'vtiger':this[_0x9f8e('0x1c')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0x9f8e('0x1f')],'servicenow':this['servicenowAccounts']};ami['on'](_0x9f8e('0x21'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x24'),this[_0x9f8e('0x22')]['bind'](this));ami['on'](_0x9f8e('0x25'),this[_0x9f8e('0x22')]['bind'](this));ami['on'](_0x9f8e('0x26'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x27'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x28'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x29'),this['syncCustomEvent'][_0x9f8e('0x23')](this));ami['on']('custom:agentcongestion',this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on']('custom:agentreject',this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x2a'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x2b'),this[_0x9f8e('0x22')]['bind'](this));ami['on'](_0x9f8e('0x2c'),this['syncCustomEvent'][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x2d'),this['syncAgentDial']['bind'](this));ami['on'](_0x9f8e('0x2e'),this['syncAgentDial'][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x2f'),this[_0x9f8e('0x30')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x31'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on']('custom:closedinteraction',this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x32'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x33'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x34'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x35'),this['syncCustomEvent'][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x36'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));ami['on'](_0x9f8e('0x37'),this[_0x9f8e('0x22')][_0x9f8e('0x23')](this));}Trigger[_0x9f8e('0x38')][_0x9f8e('0x39')]=function(_0x597f90,_0x19a354,_0x5b7758){logger[_0x9f8e('0x3a')](_0x597f90,_0x19a354,JSON[_0x9f8e('0x3b')](_0x5b7758));io['to'](_0x597f90)[_0x9f8e('0x39')](_0x19a354,_0x5b7758);};Trigger[_0x9f8e('0x38')][_0x9f8e('0x22')]=function(_0x11ed77){var _0x36fc8f=_[_0x9f8e('0x3c')](_0x11ed77);if(typeof _0x36fc8f[_0x9f8e('0x3d')]===_0x9f8e('0x3e')){_0x36fc8f[_0x9f8e('0x3d')]='voice';}logger[_0x9f8e('0x3f')]('syncCustomEvent',util['inspect'](_0x36fc8f,{'showHidden':!![],'depth':null}));this[_0x9f8e('0x40')](_0x36fc8f);};Trigger['prototype'][_0x9f8e('0x30')]=function(_0x58c074){if(this[_0x9f8e('0x12')][_0x58c074[_0x9f8e('0x41')]]){this[_0x9f8e('0x22')](_0x58c074);}};Trigger[_0x9f8e('0x38')]['checkTriggers']=function(_0x1449e5){var _0x325565;for(var _0xe65d73 in this[_0x9f8e('0x11')]){if(this[_0x9f8e('0x11')]['hasOwnProperty'](_0xe65d73)){if(this[_0x9f8e('0x11')][_0xe65d73][_0x9f8e('0x42')]){_0x325565=this[_0x9f8e('0x43')](this[_0x9f8e('0x11')][_0xe65d73],_0x1449e5);if(_0x325565){_['merge'](_0x1449e5,_0x1449e5[_0x9f8e('0x44')]);for(var _0x5ce505=0x0,_0x42b270,_0x4b0e6e,_0x2ef0a7;_0x5ce505<this[_0x9f8e('0x11')][_0xe65d73][_0x9f8e('0x45')][_0x9f8e('0x46')];_0x5ce505+=0x1){_0x42b270=this[_0x9f8e('0x11')][_0xe65d73][_0x9f8e('0x45')][_0x5ce505];if(this[_0x9f8e('0x12')][_0x1449e5['interface']]){switch(_0x42b270[_0x9f8e('0x47')]['toLowerCase']()){case _0x9f8e('0x48'):break;case _0x9f8e('0x49'):case _0x9f8e('0x4a'):var _0x3f22bc={};switch(barAndWebActions[_0x42b270['data1']]){case _0x9f8e('0xf'):_0x3f22bc['TemplateId']=_0x42b270['data2'];_0x3f22bc['html']=this[_0x9f8e('0x14')][_0x42b270[_0x9f8e('0x4b')]]?Mustache[_0x9f8e('0x4c')](this[_0x9f8e('0x14')][_0x42b270[_0x9f8e('0x4b')]][_0x9f8e('0x4d')],_0x1449e5):_0x9f8e('0x4e');break;case'url':_0x3f22bc[_0x9f8e('0x4f')]=this[_0x9f8e('0x50')](_0x42b270[_0x9f8e('0x4b')],_0x1449e5,_[_0x9f8e('0x51')](_0x42b270[_0x9f8e('0x52')])?!![]:parseInt(_0x42b270['data3'],0xa));if(_['isNil'](_0x42b270[_0x9f8e('0x53')])){_0x3f22bc[_0x9f8e('0x54')]='0';}else{_0x3f22bc[_0x9f8e('0x55')]=_0x42b270['data4'];_0x3f22bc[_0x9f8e('0x56')]=_[_0x9f8e('0x51')](_0x42b270['data5'])?_0x9f8e('0x57'):_0x42b270['data5'];_0x3f22bc[_0x9f8e('0x58')]=_['isNil'](_0x42b270[_0x9f8e('0x59')])?_0x9f8e('0x5a'):_0x42b270[_0x9f8e('0x59')];}break;case _0x9f8e('0x10'):_0x3f22bc[_0x9f8e('0x5b')]=_0x42b270['data2']?Mustache[_0x9f8e('0x4c')](_0x42b270[_0x9f8e('0x4b')],_0x1449e5):'';_0x3f22bc['winArguments']=_0x42b270['data3']?Mustache['render'](_0x42b270['data3'],_0x1449e5):'';break;}this['emit'](util[_0x9f8e('0x5c')](_0x9f8e('0x5d'),this[_0x9f8e('0x12')][_0x1449e5[_0x9f8e('0x41')]]['name']),util['format']('trigger:%s:%s',_0x42b270['action'][_0x9f8e('0x5e')](),barAndWebActions[_0x42b270[_0x9f8e('0x5f')]]),_[_0x9f8e('0x60')](_0x3f22bc,_0x1449e5));break;case _0x9f8e('0x61'):this[_0x9f8e('0x39')](util['format'](_0x9f8e('0x5d'),this[_0x9f8e('0x12')][_0x1449e5[_0x9f8e('0x41')]][_0x9f8e('0x62')]),util[_0x9f8e('0x5c')](_0x9f8e('0x63'),_0x42b270[_0x9f8e('0x47')][_0x9f8e('0x5e')]()),_[_0x9f8e('0x60')]({'ProjectId':parseInt(_0x42b270[_0x9f8e('0x5f')],0xa)},_0x1449e5));break;default:this[_0x9f8e('0x39')](util[_0x9f8e('0x5c')](_0x9f8e('0x5d'),this[_0x9f8e('0x12')][_0x1449e5[_0x9f8e('0x41')]][_0x9f8e('0x62')]),util[_0x9f8e('0x5c')](_0x9f8e('0x63'),_0x42b270[_0x9f8e('0x47')][_0x9f8e('0x5e')]()),_[_0x9f8e('0x60')]({},_0x42b270,_0x1449e5));}}switch(_0x42b270[_0x9f8e('0x47')][_0x9f8e('0x5e')]()){case _0x9f8e('0x48'):cmContact[_0x9f8e('0x64')](this[_0x9f8e('0x12')][_0x1449e5['interface']],this[_0x9f8e('0x11')][_0xe65d73],_0x42b270,_0x1449e5);break;case _0x9f8e('0x65'):integration[_0x9f8e('0x64')](_0x42b270,_0x1449e5,this[_0x9f8e('0x20')],this[_0x9f8e('0x12')][_0x1449e5[_0x9f8e('0x41')]],this[_0x9f8e('0x13')][_0x1449e5[_0x9f8e('0x66')]],this[_0x9f8e('0x15')][_0x1449e5['routeId']]);break;case _0x9f8e('0x67'):urlforward[_0x9f8e('0x64')](_0x42b270,_0x1449e5);break;case _0x9f8e('0x68'):script[_0x9f8e('0x64')](_0x42b270,_0x1449e5);break;}}}}}}};Trigger[_0x9f8e('0x38')][_0x9f8e('0x50')]=function(_0x539c1d,_0x3cb8c0,_0x4011f7){var _0x51deb8=url[_0x9f8e('0x69')](Mustache['render'](_0x539c1d,_0x3cb8c0),!![]);if(_0x4011f7){_['merge'](_0x51deb8[_0x9f8e('0x6a')],_0x3cb8c0);}delete _0x51deb8[_0x9f8e('0x6b')];var _0x5b7d97=url['format'](_0x51deb8);_0x5b7d97=_0x5b7d97['replace'](/\/\?/g,'?');return _0x5b7d97;};Trigger[_0x9f8e('0x38')]['checkTrigger']=function(_0xf743ed,_0x553304){var _0x27b658=!![];var _0x40b8ff=!![];var _0x4005dd=![];if(_0xf743ed[_0x9f8e('0x6c')]===_0x553304[_0x9f8e('0x3d')]){_0x4005dd=!![];}if(_0xf743ed['AllConditions'][_0x9f8e('0x46')]){_0x27b658=_['every'](_0xf743ed[_0x9f8e('0x6d')],this['checkConditions'](_0x553304,_0xf743ed['channel']));}if(_0xf743ed[_0x9f8e('0x6e')][_0x9f8e('0x46')]){_0x40b8ff=_[_0x9f8e('0x6f')](_0xf743ed[_0x9f8e('0x6e')],this[_0x9f8e('0x70')](_0x553304,_0xf743ed[_0x9f8e('0x6c')]));}var _0x31a0e8=_0x4005dd&&_0x27b658&&_0x40b8ff;logger[_0x9f8e('0x3f')](_0x9f8e('0x71'),util[_0x9f8e('0x72')](_0xf743ed,{'showHidden':!![],'depth':null}),_0x9f8e('0x73'),util[_0x9f8e('0x72')](_0x553304,{'showHidden':!![],'depth':null}),_0x4005dd,_0x27b658,_0x40b8ff);return _0x31a0e8;};Trigger[_0x9f8e('0x38')][_0x9f8e('0x70')]=function(_0x2605a8,_0x36c3a7){return function(_0x3bbf72){switch(_0x3bbf72[_0x9f8e('0x74')]){case _0x9f8e('0x75'):if(_0x2605a8[_0x9f8e('0x6c')]===_0x36c3a7){if(_0x36c3a7===_0x9f8e('0x76')){return _0x2605a8[_0x9f8e('0x77')]?operators[_0x3bbf72[_0x9f8e('0x78')]](Number(_0x3bbf72['value']),_0x2605a8['ChatWebsiteId']):![];}else{return _0x2605a8[_['upperFirst'](_0x36c3a7)+_0x9f8e('0x79')]?operators[_0x3bbf72[_0x9f8e('0x78')]](Number(_0x3bbf72[_0x9f8e('0x7a')]),_0x2605a8[_[_0x9f8e('0x7b')](_0x36c3a7)+'AccountId']):![];}}break;case _0x9f8e('0x7c'):case _0x9f8e('0x7d'):if(_0x2605a8[_0x9f8e('0x6c')]===_0x36c3a7){return _0x2605a8[_0x9f8e('0x7e')]?operators[_0x3bbf72[_0x9f8e('0x78')]](_0x3bbf72['value'],_0x2605a8[_0x9f8e('0x7e')]):![];}break;case'queue':return _0x2605a8[_0x9f8e('0x66')]?operators[_0x3bbf72[_0x9f8e('0x78')]](_0x3bbf72[_0x9f8e('0x7a')],_0x2605a8[_0x9f8e('0x66')]):![];case _0x9f8e('0x7f'):return _0x2605a8['membername']?operators[_0x3bbf72[_0x9f8e('0x78')]](_0x3bbf72[_0x9f8e('0x7a')],_0x2605a8['membername']):![];case _0x9f8e('0x80'):return _0x2605a8['lastevent']?operators[_0x3bbf72[_0x9f8e('0x78')]](_0x3bbf72['value'],_0x2605a8[_0x9f8e('0x80')]):![];case _0x9f8e('0x81'):return _0x2605a8[_0x9f8e('0x81')]?operators[_0x3bbf72['operator']](_0x3bbf72[_0x9f8e('0x7a')],_0x2605a8[_0x9f8e('0x81')]):![];case _0x9f8e('0x82'):if(_0x3bbf72['value']===_0x9f8e('0x83'))_0x3bbf72[_0x9f8e('0x7a')]=null;return typeof _0x2605a8[_0x9f8e('0x84')]!==_0x9f8e('0x3e')?operators[_0x3bbf72[_0x9f8e('0x78')]](_0x3bbf72['value'],_0x2605a8[_0x9f8e('0x84')]):![];case _0x9f8e('0x85'):if(_0x2605a8[_0x9f8e('0x6c')]===_0x36c3a7){return _0x3bbf72[_0x9f8e('0x7a')]===_0x9f8e('0x86')&&_0x3bbf72['operator']===_0x9f8e('0x87')?!![]:![];}break;}return![];};};module[_0x9f8e('0x88')]=Trigger;
\ No newline at end of file
+var _0x483f=['every','checkConditions','channel','AnyConditions','some','field','account','ChatWebsiteId','AccountId','operator','value','upperFirst','event','agent','membername','lastevent','mailSubstatus','substatus','offlineMessage','equals','exports','util','lodash','ioredis','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','localhost','url','winapp','triggers','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','bind','custom:agentringnoanswer','syncCustomEvent','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','emit','info','prototype','motionChannel','undefined','voice','debug','inspect','checkTriggers','agents','interface','status','checkTrigger','merge','variables','length','Actions','contactmanager','motionbar','browser','data1','TemplateId','data2','render','html','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','800','data5','windowHeight','600','winApplication','format','user:%s','name','trigger:%s:%s','toLowerCase','trigger:%s','action','exec','integration','queue','routeId','urlforward','script','search','AllConditions'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x483f,0x10d));var _0xf483=function(_0x15bdd9,_0x22deae){_0x15bdd9=_0x15bdd9-0x0;var _0x5b3709=_0x483f[_0x15bdd9];return _0x5b3709;};'use strict';var util=require(_0xf483('0x0'));var _=require(_0xf483('0x1'));var url=require('url');var Mustache=require('mustache');var Redis=require(_0xf483('0x2'));var urlforward=require('./urlforward');var integration=require('./integration');var cmContact=require(_0xf483('0x3'));var script=require(_0xf483('0x4'));var config=require(_0xf483('0x5'));var logger=require(_0xf483('0x6'))(_0xf483('0x7'));var ami=require(_0xf483('0x8'));config['redis']=_['defaults'](config[_0xf483('0x9')],{'host':_0xf483('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf483('0x9')]));var operators={'equals':function(_0x2e3495,_0x33161c){return _0x2e3495==_0x33161c;},'not_equals':function(_0xc7f931,_0x1cdf77){return _0xc7f931!=_0x1cdf77;}};var barAndWebActions=['popup',_0xf483('0xb'),_0xf483('0xc')];function Trigger(_0x5a6379){this['triggers']=_0x5a6379[_0xf483('0xd')];this['agents']=_0x5a6379['agents'];this[_0xf483('0xe')]=_0x5a6379['voiceQueues'];this[_0xf483('0xf')]=_0x5a6379[_0xf483('0xf')];this[_0xf483('0x10')]=_0x5a6379[_0xf483('0x10')];this[_0xf483('0x11')]=_0x5a6379['zendeskAccounts'];this[_0xf483('0x12')]=_0x5a6379[_0xf483('0x12')];this[_0xf483('0x13')]=_0x5a6379[_0xf483('0x13')];this[_0xf483('0x14')]=_0x5a6379[_0xf483('0x14')];this[_0xf483('0x15')]=_0x5a6379['zohoAccounts'];this[_0xf483('0x16')]=_0x5a6379[_0xf483('0x16')];this[_0xf483('0x17')]=_0x5a6379[_0xf483('0x17')];this[_0xf483('0x18')]=_0x5a6379[_0xf483('0x18')];this[_0xf483('0x19')]=_0x5a6379[_0xf483('0x19')];this[_0xf483('0x1a')]=_0x5a6379[_0xf483('0x1a')];this['accounts']={'zendesk':this[_0xf483('0x11')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xf483('0x12')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0xf483('0x15')],'desk':this[_0xf483('0x16')],'vtiger':this[_0xf483('0x17')],'dynamics365':this[_0xf483('0x19')],'freshsales':this[_0xf483('0x1a')],'servicenow':this[_0xf483('0x18')]};ami['on']('custom:agentcalled',this['syncCustomEvent'][_0xf483('0x1b')](this));ami['on']('custom:agentconnect',this['syncCustomEvent'][_0xf483('0x1b')](this));ami['on'](_0xf483('0x1c'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x1e'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x1f'),this['syncCustomEvent'][_0xf483('0x1b')](this));ami['on'](_0xf483('0x20'),this[_0xf483('0x1d')]['bind'](this));ami['on'](_0xf483('0x21'),this[_0xf483('0x1d')]['bind'](this));ami['on'](_0xf483('0x22'),this['syncCustomEvent']['bind'](this));ami['on'](_0xf483('0x23'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x24'),this[_0xf483('0x1d')]['bind'](this));ami['on']('custom:queuecallerabandon',this[_0xf483('0x1d')]['bind'](this));ami['on'](_0xf483('0x25'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x26'),this[_0xf483('0x27')]['bind'](this));ami['on'](_0xf483('0x28'),this['syncAgentDial'][_0xf483('0x1b')](this));ami['on'](_0xf483('0x29'),this[_0xf483('0x27')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x2a'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on']('custom:closedinteraction',this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x2b'),this['syncCustomEvent'][_0xf483('0x1b')](this));ami['on'](_0xf483('0x2c'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x2d'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x2e'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x2f'),this[_0xf483('0x1d')][_0xf483('0x1b')](this));ami['on'](_0xf483('0x30'),this['syncCustomEvent'][_0xf483('0x1b')](this));}Trigger['prototype'][_0xf483('0x31')]=function(_0x80792b,_0x5ae215,_0x61d91){logger[_0xf483('0x32')](_0x80792b,_0x5ae215,JSON['stringify'](_0x61d91));io['to'](_0x80792b)[_0xf483('0x31')](_0x5ae215,_0x61d91);};Trigger[_0xf483('0x33')][_0xf483('0x1d')]=function(_0x5ea3fb){var _0x1c1ea8=_['clone'](_0x5ea3fb);if(typeof _0x1c1ea8[_0xf483('0x34')]===_0xf483('0x35')){_0x1c1ea8['motionChannel']=_0xf483('0x36');}logger[_0xf483('0x37')](_0xf483('0x1d'),util[_0xf483('0x38')](_0x1c1ea8,{'showHidden':!![],'depth':null}));this[_0xf483('0x39')](_0x1c1ea8);};Trigger[_0xf483('0x33')]['syncAgentDial']=function(_0x29c8db){if(this[_0xf483('0x3a')][_0x29c8db[_0xf483('0x3b')]]){this[_0xf483('0x1d')](_0x29c8db);}};Trigger[_0xf483('0x33')][_0xf483('0x39')]=function(_0xf8c00f){var _0x48ee75;for(var _0x469fc0 in this['triggers']){if(this[_0xf483('0xd')]['hasOwnProperty'](_0x469fc0)){if(this[_0xf483('0xd')][_0x469fc0][_0xf483('0x3c')]){_0x48ee75=this[_0xf483('0x3d')](this[_0xf483('0xd')][_0x469fc0],_0xf8c00f);if(_0x48ee75){_[_0xf483('0x3e')](_0xf8c00f,_0xf8c00f[_0xf483('0x3f')]);for(var _0x1aa556=0x0,_0x26fdb7,_0x3b55fe,_0x4a8a30;_0x1aa556<this[_0xf483('0xd')][_0x469fc0]['Actions'][_0xf483('0x40')];_0x1aa556+=0x1){_0x26fdb7=this[_0xf483('0xd')][_0x469fc0][_0xf483('0x41')][_0x1aa556];if(this[_0xf483('0x3a')][_0xf8c00f[_0xf483('0x3b')]]){switch(_0x26fdb7['action']['toLowerCase']()){case _0xf483('0x42'):break;case _0xf483('0x43'):case _0xf483('0x44'):var _0x39110d={};switch(barAndWebActions[_0x26fdb7[_0xf483('0x45')]]){case'popup':_0x39110d[_0xf483('0x46')]=_0x26fdb7[_0xf483('0x47')];_0x39110d['html']=this[_0xf483('0xf')][_0x26fdb7[_0xf483('0x47')]]?Mustache[_0xf483('0x48')](this['templates'][_0x26fdb7[_0xf483('0x47')]][_0xf483('0x49')],_0xf8c00f):_0xf483('0x4a');break;case _0xf483('0xb'):_0x39110d[_0xf483('0x4b')]=this[_0xf483('0x4c')](_0x26fdb7['data2'],_0xf8c00f,_[_0xf483('0x4d')](_0x26fdb7[_0xf483('0x4e')])?!![]:parseInt(_0x26fdb7[_0xf483('0x4e')],0xa));if(_['isNil'](_0x26fdb7[_0xf483('0x4f')])){_0x39110d[_0xf483('0x50')]='0';}else{_0x39110d[_0xf483('0x51')]=_0x26fdb7[_0xf483('0x4f')];_0x39110d[_0xf483('0x52')]=_['isNil'](_0x26fdb7['data5'])?_0xf483('0x53'):_0x26fdb7[_0xf483('0x54')];_0x39110d[_0xf483('0x55')]=_['isNil'](_0x26fdb7['data6'])?_0xf483('0x56'):_0x26fdb7['data6'];}break;case'winapp':_0x39110d[_0xf483('0x57')]=_0x26fdb7[_0xf483('0x47')]?Mustache[_0xf483('0x48')](_0x26fdb7[_0xf483('0x47')],_0xf8c00f):'';_0x39110d['winArguments']=_0x26fdb7[_0xf483('0x4e')]?Mustache[_0xf483('0x48')](_0x26fdb7[_0xf483('0x4e')],_0xf8c00f):'';break;}this['emit'](util[_0xf483('0x58')](_0xf483('0x59'),this['agents'][_0xf8c00f[_0xf483('0x3b')]][_0xf483('0x5a')]),util[_0xf483('0x58')](_0xf483('0x5b'),_0x26fdb7['action'][_0xf483('0x5c')](),barAndWebActions[_0x26fdb7[_0xf483('0x45')]]),_[_0xf483('0x3e')](_0x39110d,_0xf8c00f));break;case'jscripty':this[_0xf483('0x31')](util[_0xf483('0x58')](_0xf483('0x59'),this['agents'][_0xf8c00f[_0xf483('0x3b')]][_0xf483('0x5a')]),util[_0xf483('0x58')](_0xf483('0x5d'),_0x26fdb7[_0xf483('0x5e')][_0xf483('0x5c')]()),_[_0xf483('0x3e')]({'ProjectId':parseInt(_0x26fdb7['data1'],0xa)},_0xf8c00f));break;default:this[_0xf483('0x31')](util['format']('user:%s',this['agents'][_0xf8c00f['interface']]['name']),util[_0xf483('0x58')](_0xf483('0x5d'),_0x26fdb7['action'][_0xf483('0x5c')]()),_[_0xf483('0x3e')]({},_0x26fdb7,_0xf8c00f));}}switch(_0x26fdb7['action'][_0xf483('0x5c')]()){case _0xf483('0x42'):cmContact[_0xf483('0x5f')](this['agents'][_0xf8c00f[_0xf483('0x3b')]],this[_0xf483('0xd')][_0x469fc0],_0x26fdb7,_0xf8c00f);break;case _0xf483('0x60'):integration[_0xf483('0x5f')](_0x26fdb7,_0xf8c00f,this['accounts'],this['agents'][_0xf8c00f[_0xf483('0x3b')]],this[_0xf483('0xe')][_0xf8c00f[_0xf483('0x61')]],this[_0xf483('0x10')][_0xf8c00f[_0xf483('0x62')]]);break;case _0xf483('0x63'):urlforward[_0xf483('0x5f')](_0x26fdb7,_0xf8c00f);break;case _0xf483('0x64'):script[_0xf483('0x5f')](_0x26fdb7,_0xf8c00f);break;}}}}}}};Trigger[_0xf483('0x33')][_0xf483('0x4c')]=function(_0x91ba72,_0x3801c6,_0x1b2a46){var _0x1272e0=url['parse'](Mustache[_0xf483('0x48')](_0x91ba72,_0x3801c6),!![]);if(_0x1b2a46){_['merge'](_0x1272e0['query'],_0x3801c6);}delete _0x1272e0[_0xf483('0x65')];var _0xee6e12=url[_0xf483('0x58')](_0x1272e0);_0xee6e12=_0xee6e12['replace'](/\/\?/g,'?');return _0xee6e12;};Trigger[_0xf483('0x33')]['checkTrigger']=function(_0x55097b,_0x4425f8){var _0x460b32=!![];var _0x2f449a=!![];var _0x182aaa=![];if(_0x55097b['channel']===_0x4425f8[_0xf483('0x34')]){_0x182aaa=!![];}if(_0x55097b[_0xf483('0x66')][_0xf483('0x40')]){_0x460b32=_[_0xf483('0x67')](_0x55097b['AllConditions'],this[_0xf483('0x68')](_0x4425f8,_0x55097b[_0xf483('0x69')]));}if(_0x55097b[_0xf483('0x6a')][_0xf483('0x40')]){_0x2f449a=_[_0xf483('0x6b')](_0x55097b['AnyConditions'],this[_0xf483('0x68')](_0x4425f8,_0x55097b['channel']));}var _0x286099=_0x182aaa&&_0x460b32&&_0x2f449a;logger['debug']('checkTrigger:\x20trigger',util['inspect'](_0x55097b,{'showHidden':!![],'depth':null}),'evt',util[_0xf483('0x38')](_0x4425f8,{'showHidden':!![],'depth':null}),_0x182aaa,_0x460b32,_0x2f449a);return _0x286099;};Trigger[_0xf483('0x33')][_0xf483('0x68')]=function(_0x4ffca4,_0x3fac90){return function(_0x61fb70){switch(_0x61fb70[_0xf483('0x6c')]){case _0xf483('0x6d'):if(_0x4ffca4[_0xf483('0x69')]===_0x3fac90){if(_0x3fac90==='chat'){return _0x4ffca4[_0xf483('0x6e')]?operators[_0x61fb70['operator']](Number(_0x61fb70['value']),_0x4ffca4[_0xf483('0x6e')]):![];}else{return _0x4ffca4[_['upperFirst'](_0x3fac90)+_0xf483('0x6f')]?operators[_0x61fb70[_0xf483('0x70')]](Number(_0x61fb70[_0xf483('0x71')]),_0x4ffca4[_[_0xf483('0x72')](_0x3fac90)+'AccountId']):![];}}break;case'interaction':case'message':if(_0x4ffca4[_0xf483('0x69')]===_0x3fac90){return _0x4ffca4[_0xf483('0x73')]?operators[_0x61fb70[_0xf483('0x70')]](_0x61fb70[_0xf483('0x71')],_0x4ffca4[_0xf483('0x73')]):![];}break;case _0xf483('0x61'):return _0x4ffca4['queue']?operators[_0x61fb70[_0xf483('0x70')]](_0x61fb70['value'],_0x4ffca4['queue']):![];case _0xf483('0x74'):return _0x4ffca4[_0xf483('0x75')]?operators[_0x61fb70[_0xf483('0x70')]](_0x61fb70[_0xf483('0x71')],_0x4ffca4[_0xf483('0x75')]):![];case _0xf483('0x76'):return _0x4ffca4['lastevent']?operators[_0x61fb70[_0xf483('0x70')]](_0x61fb70[_0xf483('0x71')],_0x4ffca4[_0xf483('0x76')]):![];case _0xf483('0x62'):return _0x4ffca4[_0xf483('0x62')]?operators[_0x61fb70['operator']](_0x61fb70[_0xf483('0x71')],_0x4ffca4[_0xf483('0x62')]):![];case _0xf483('0x77'):if(_0x61fb70[_0xf483('0x71')]==='null')_0x61fb70[_0xf483('0x71')]=null;return typeof _0x4ffca4[_0xf483('0x78')]!==_0xf483('0x35')?operators[_0x61fb70['operator']](_0x61fb70[_0xf483('0x71')],_0x4ffca4[_0xf483('0x78')]):![];case _0xf483('0x79'):if(_0x4ffca4[_0xf483('0x69')]===_0x3fac90){return _0x61fb70[_0xf483('0x71')]==='created'&&_0x61fb70['operator']===_0xf483('0x7a')?!![]:![];}break;}return![];};};module[_0xf483('0x7b')]=Trigger;
\ No newline at end of file
index 54d8de0..83cc071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Motion','CTI','concat','Tags','/api/v2/users/%d','Descriptions','%s/customers/%d/cases','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','Desk\x20account\x20type\x20not\x20recognized','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','integrationTab','newTab','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','The\x20Ticket\x20ID\x20is:','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','desk','defaults','redis','localhost','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','[HTTP]','stringify','GET','password','authType','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variable','variableName','customVariable','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x435941,_0x44ebec){var _0x2a7f14=function(_0x5598b1){while(--_0x5598b1){_0x435941['push'](_0x435941['shift']());}};_0x2a7f14(++_0x44ebec);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7995('0x0'));var rp=require(_0x7995('0x1'));var md5=require(_0x7995('0x2'));var util=require(_0x7995('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7995('0x4'));var config=require(_0x7995('0x5'));var logger=require(_0x7995('0x6'))(_0x7995('0x7'));config['redis']=_[_0x7995('0x8')](config[_0x7995('0x9')],{'host':_0x7995('0xa'),'port':0x18eb});var io=require(_0x7995('0xb'))(new Redis(config[_0x7995('0x9')]));function emit(_0x326741,_0x4996ca,_0x465276){io['to'](_0x326741)[_0x7995('0xc')](_0x4996ca,_0x465276);}var headers={'Content-Type':'application/json','Accept':_0x7995('0xd')};function getUser(_0x3116fb,_0x18c8a3){if(intUtil[_0x7995('0xe')](_0x18c8a3)===!![]){logger[_0x7995('0xf')](_0x7995('0x10'),_0x18c8a3);return request({'uri':util[_0x7995('0x11')]('%s/users',_0x3116fb[_0x7995('0x12')])})[_0x7995('0x13')](function(_0x581f22){if(_0x581f22[_0x7995('0x14')]){return _[_0x7995('0x15')](_0x581f22[_0x7995('0x16')][_0x7995('0x17')],{'email':_0x18c8a3});}})[_0x7995('0x13')](function(_0x23999f){if(_0x23999f){logger[_0x7995('0xf')]('Agent\x20found!');return _0x23999f;}else{logger['info'](_0x7995('0x18'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb[_0x7995('0x12')])});}});}else{logger[_0x7995('0xf')](_0x7995('0x1a'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb['remoteUri'])});}}function request(_0x2eeacc){logger['debug'](_0x7995('0x1b'),JSON[_0x7995('0x1c')](_0x2eeacc));return rp(_[_0x7995('0x8')](_0x2eeacc,{'method':_0x7995('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x1e1415){var _0x37a7d4;if(_0x1e1415['authType']==='basic'){_0x37a7d4=util[_0x7995('0x11')]('%s:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x1e')]);}else if(_0x1e1415[_0x7995('0x1f')]==='token'){_0x37a7d4=util[_0x7995('0x11')]('%s/token:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x20')]);}return util[_0x7995('0x11')](_0x7995('0x21'),new Buffer(_0x37a7d4)[_0x7995('0x22')](_0x7995('0x23')));}function getEndUser(_0x1c278a,_0x5d40ae,_0x32a09a){logger[_0x7995('0xf')](_0x7995('0x24'),_0x32a09a);return request({'uri':util[_0x7995('0x11')](_0x7995('0x25'),_0x1c278a[_0x7995('0x12')]),'qs':{'phone':_0x32a09a}})[_0x7995('0x13')](function(_0x472195){if(_0x472195['total_entries']){logger[_0x7995('0xf')](_0x7995('0x26'));return _0x472195[_0x7995('0x16')][_0x7995('0x17')][0x0];}else{logger[_0x7995('0xf')](_0x7995('0x27'));return request({'uri':util['format'](_0x7995('0x28'),_0x1c278a['remoteUri']),'method':_0x7995('0x29'),'body':{'first_name':_0x5d40ae,'title':_0x5d40ae,'phone_numbers':[{'type':_0x7995('0x2a'),'value':_0x32a09a}]}});}});}function getTags(_0xf16cc2,_0x132a42){var _0x11c1eb=[];if(_0xf16cc2&&_0xf16cc2['length']>0x0){_0x11c1eb=_[_0x7995('0x2b')](_0xf16cc2,_0x132a42);}return _0x11c1eb;}function getCustomFields(_0x514445,_0x456a28){var _0x3250e0=[];var _0x4253e5={'custom_fields':{}};if(_0x514445['length']>0x0){_['forEach'](_0x514445,function(_0x48e573){if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x30')]&&!_0x48e573[_0x7995('0x31')]){_0x4253e5[_0x48e573['nameField']['toLowerCase']()]=_0x48e573[_0x7995('0x32')]['toString']();}else if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x48e573['content']['toString']();}else if(_0x48e573['type']===_0x7995('0x35')&&_0x48e573[_0x7995('0x36')]&&_0x48e573['idField']&&_0x48e573[_0x7995('0x31')]){_0x456a28[_0x48e573['variableName']]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573[_0x7995('0x36')]]['toString']());}else if(_0x48e573['type']===_0x7995('0x37')&&_0x48e573['Variable']&&_0x48e573['Variable'][_0x7995('0x38')]&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x456a28[_0x48e573[_0x7995('0x39')][_0x7995('0x38')][_0x7995('0x3a')]()]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573['Variable'][_0x7995('0x38')][_0x7995('0x3a')]()][_0x7995('0x22')]());}});}if(_0x4253e5[_0x7995('0x3b')]){_0x4253e5['priority']=Number(_0x4253e5[_0x7995('0x3b')]);}return _0x4253e5;}function getTicket(_0x235df7,_0x3eb04f,_0xe5ea43,_0x1f5bee,_0x1035dc){logger['info'](_0x7995('0x3c'));var _0x3be298=_[_0x7995('0x3d')]({'subject':intUtil[_0x7995('0x3e')](_0x1f5bee[_0x7995('0x3f')],_0x1035dc,'\x20'),'type':_0x7995('0x40'),'status':_0x7995('0x41'),'labels':[_0x7995('0x42'),_0x7995('0x43'),_0x7995('0x44')][_0x7995('0x45')](getTags(_0x1f5bee[_0x7995('0x46')],_0x7995('0x38'))),'description':intUtil['getString'](_0x1f5bee['Descriptions'],_0x1035dc,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7995('0x11')](_0x7995('0x47'),_0x3eb04f['id']),'class':'user'}},'message':{'direction':'in','body':intUtil['getString'](_0x1f5bee[_0x7995('0x48')],_0x1035dc,'\x0a')}},getCustomFields(_0x1f5bee['Fields'],_0x1035dc));return request({'uri':util['format'](_0x7995('0x49'),_0x235df7[_0x7995('0x12')],_0xe5ea43['id']),'method':_0x7995('0x29'),'body':_0x3be298});}exports['queue']=function(_0x46ac4f,_0x5e85b9,_0x3993b5,_0x5a8881,_0x493066,_0x39c5b8){var _0x403f54,_0xc04e5;_0x39c5b8[_0x7995('0x12')]=intUtil['stripTrailingSlash'](_0x39c5b8[_0x7995('0x12')]);_0x39c5b8[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x39c5b8[_0x7995('0x4a')]);if(_0x493066&&_0x493066['monitor_format']){logger['info'](_0x7995('0x4c'),'Recording\x20is\x20enabled!');_0x5e85b9[_0x7995('0x4d')]=util['format'](_0x7995('0x4e'),_0x39c5b8['serverUrl'],_0x5e85b9[_0x7995('0x4f')],md5(_0x5e85b9[_0x7995('0x4f')]));}else{_0x5e85b9['recordingURL']='';}headers[_0x7995('0x50')]=getAuth(_0x39c5b8);return getUser(_0x39c5b8,_0x5a8881[_0x7995('0x51')])[_0x7995('0x13')](function(_0xb70a51){_0x403f54=_0xb70a51;logger['info'](_0x7995('0x52'),_0x403f54['id']);return getEndUser(_0x39c5b8,_0x5e85b9[_0x7995('0x53')],_0x5e85b9[_0x7995('0x54')]);})['then'](function(_0xe228a5){_0xc04e5=_0xe228a5;logger[_0x7995('0xf')](_0x7995('0x55'),_0xc04e5['id']);return getTicket(_0x39c5b8,_0x403f54,_0xc04e5,_0x3993b5,_0x5e85b9);})[_0x7995('0x13')](function(_0x255313){if(_0x255313){logger['info'](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x255313['id']);switch(_0x39c5b8[_0x7995('0x2f')]){case'integrationTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x255313['id']});break;case'newTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x5a'));emit(util['format'](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x5b'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x255313['id'])});break;default:logger['error'](_0x7995('0x4c'),_0x7995('0x5c'));}}})['catch'](function(_0x1cd85){console[_0x7995('0x5d')](_0x1cd85);logger[_0x7995('0x5d')](_0x7995('0x4c'),JSON[_0x7995('0x1c')](_0x1cd85));});};exports['outbound']=function(_0x29ee32,_0x4ab09f,_0x14fe7f,_0x33c801,_0x206d2a,_0x50c7b5,_0x5e1f34){var _0x54e2b1,_0x563f8e;_0x50c7b5[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x12')]);_0x50c7b5[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x4a')]);if(_0x5e1f34&&_0x5e1f34[_0x7995('0x5e')]&&_0x5e1f34[_0x7995('0x5e')]!==_0x7995('0x5f')){logger[_0x7995('0xf')](_0x7995('0x60'),_0x7995('0x61'));_0x4ab09f[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x50c7b5[_0x7995('0x4a')],_0x4ab09f[_0x7995('0x4f')],md5(_0x4ab09f[_0x7995('0x4f')]));}headers[_0x7995('0x50')]=getAuth(_0x50c7b5);return getUser(_0x50c7b5,_0x33c801['email'])[_0x7995('0x13')](function(_0x630737){_0x54e2b1=_0x630737;logger[_0x7995('0xf')](_0x7995('0x52'),_0x54e2b1['id']);return getEndUser(_0x50c7b5,_0x4ab09f['destcalleridname'],_0x4ab09f['destcalleridnum']);})[_0x7995('0x13')](function(_0x197b52){_0x563f8e=_0x197b52;logger[_0x7995('0xf')](_0x7995('0x55'),_0x563f8e['id']);return getTicket(_0x50c7b5,_0x54e2b1,_0x563f8e,_0x14fe7f,_0x4ab09f);})['then'](function(_0x13cd7b){if(_0x13cd7b){logger[_0x7995('0xf')](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x13cd7b['id']);switch(_0x50c7b5['type']){case _0x7995('0x62'):logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x13cd7b['id']});break;case _0x7995('0x63'):logger['info'](_0x7995('0x4c'),_0x7995('0x5a'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801['name']),'trigger:browser:url',{'uri':util[_0x7995('0x11')](_0x7995('0x64'),_0x50c7b5['remoteUri'],_0x13cd7b['id'])});break;default:logger[_0x7995('0x5d')](_0x7995('0x60'),_0x7995('0x5c'));}}})[_0x7995('0x65')](function(_0x32cb04){logger['error'](_0x7995('0x60'),JSON['stringify'](_0x32cb04));});};exports[_0x7995('0x66')]=function(_0xe31dcb,_0x1722e2,_0x25b534,_0x4388c1,_0xeb8920,_0x2b3c1d){var _0x44372a,_0x10f012;_0x2b3c1d[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x12')]);_0x2b3c1d['serverUrl']=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x4a')]);if(_0xeb8920&&_0xeb8920[_0x7995('0x67')]){logger[_0x7995('0xf')]('['+_0x1722e2[_0x7995('0x68')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1722e2[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x2b3c1d[_0x7995('0x4a')],_0x1722e2['uniqueid'],md5(_0x1722e2[_0x7995('0x4f')]));}else{_0x1722e2['recordingURL']='';}headers['Authorization']=getAuth(_0x2b3c1d);return getUser(_0x2b3c1d)[_0x7995('0x13')](function(_0x36d27d){_0x44372a=_0x36d27d;logger[_0x7995('0xf')](_0x7995('0x52'),_0x44372a['id']);return getEndUser(_0x2b3c1d,_0x1722e2[_0x7995('0x53')],_0x1722e2[_0x7995('0x54')]);})[_0x7995('0x13')](function(_0x13dc73){_0x10f012=_0x13dc73;logger[_0x7995('0xf')](_0x7995('0x55'),_0x10f012['id']);return getTicket(_0x2b3c1d,_0x44372a,_0x10f012,_0x25b534,_0x1722e2);})['then'](function(_0x2dc1f7){if(_0x2dc1f7){logger[_0x7995('0xf')](_0x7995('0x56'));logger['info'](_0x7995('0x69'),_0x2dc1f7['id']);}})[_0x7995('0x65')](function(_0x705f0){logger[_0x7995('0x5d')]('['+_0x1722e2[_0x7995('0x68')][_0x7995('0x6a')]()+']',JSON[_0x7995('0x1c')](_0x705f0));});};
\ No newline at end of file
+var _0x7217=['format','%s/users','remoteUri','then','total_entries','find','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','stringify','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','_embedded','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','length','map','forEach','string','picklist','nameField','customField','content','toString','includes','idField','custom_fields','variable','variableName','type','customVariable','Variable','name','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','new','xCALLY','Motion','CTI','Tags','Descriptions','user','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','integrationTab','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','catch','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20Ticket\x20ID\x20is:','%s/agent/tickets/%s','unmanaged','lastevent','toUpperCase','calleridname','lodash','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','validateEmail','Getting\x20agent\x20with\x20email'];(function(_0x198984,_0x2d0231){var _0x2cb4d4=function(_0x3cad87){while(--_0x3cad87){_0x198984['push'](_0x198984['shift']());}};_0x2cb4d4(++_0x2d0231);}(_0x7217,0x19e));var _0x7721=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x7217[_0x2b10c6];return _0x3789d2;};'use strict';var _=require(_0x7721('0x0'));var rp=require('request-promise');var md5=require(_0x7721('0x1'));var util=require(_0x7721('0x2'));var Redis=require(_0x7721('0x3'));var intUtil=require(_0x7721('0x4'));var config=require(_0x7721('0x5'));var logger=require('../../../../config/logger')('desk');config[_0x7721('0x6')]=_[_0x7721('0x7')](config[_0x7721('0x6')],{'host':_0x7721('0x8'),'port':0x18eb});var io=require(_0x7721('0x9'))(new Redis(config[_0x7721('0x6')]));function emit(_0x18ab6b,_0x21f680,_0x225610){io['to'](_0x18ab6b)[_0x7721('0xa')](_0x21f680,_0x225610);}var headers={'Content-Type':_0x7721('0xb'),'Accept':_0x7721('0xb')};function getUser(_0xfa8835,_0x138740){if(intUtil[_0x7721('0xc')](_0x138740)===!![]){logger['info'](_0x7721('0xd'),_0x138740);return request({'uri':util[_0x7721('0xe')](_0x7721('0xf'),_0xfa8835[_0x7721('0x10')])})[_0x7721('0x11')](function(_0x409b37){if(_0x409b37[_0x7721('0x12')]){return _[_0x7721('0x13')](_0x409b37['_embedded'][_0x7721('0x14')],{'email':_0x138740});}})[_0x7721('0x11')](function(_0x57ff6d){if(_0x57ff6d){logger[_0x7721('0x15')](_0x7721('0x16'));return _0x57ff6d;}else{logger[_0x7721('0x15')](_0x7721('0x17'));return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}}function request(_0x3cc909){logger[_0x7721('0x19')]('[HTTP]',JSON[_0x7721('0x1a')](_0x3cc909));return rp(_['defaults'](_0x3cc909,{'method':_0x7721('0x1b'),'headers':headers,'json':!![]}));}function getAuth(_0x5cb0e6){var _0xfec626;if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x1d')){_0xfec626=util[_0x7721('0xe')](_0x7721('0x1e'),_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x20')]);}else if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x21')){_0xfec626=util[_0x7721('0xe')]('%s/token:%s',_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x21')]);}return util[_0x7721('0xe')](_0x7721('0x22'),new Buffer(_0xfec626)['toString'](_0x7721('0x23')));}function getEndUser(_0x512f31,_0xb9e9dd,_0x288e3a){logger[_0x7721('0x15')](_0x7721('0x24'),_0x288e3a);return request({'uri':util[_0x7721('0xe')](_0x7721('0x25'),_0x512f31[_0x7721('0x10')]),'qs':{'phone':_0x288e3a}})['then'](function(_0x216f20){if(_0x216f20[_0x7721('0x12')]){logger[_0x7721('0x15')](_0x7721('0x26'));return _0x216f20[_0x7721('0x27')][_0x7721('0x14')][0x0];}else{logger[_0x7721('0x15')](_0x7721('0x28'));return request({'uri':util[_0x7721('0xe')]('%s/customers',_0x512f31[_0x7721('0x10')]),'method':'POST','body':{'first_name':_0xb9e9dd,'title':_0xb9e9dd,'phone_numbers':[{'type':'work','value':_0x288e3a}]}});}});}function getTags(_0x315202,_0x343c19){var _0x53c904=[];if(_0x315202&&_0x315202[_0x7721('0x29')]>0x0){_0x53c904=_[_0x7721('0x2a')](_0x315202,_0x343c19);}return _0x53c904;}function getCustomFields(_0x37b9f0,_0xd7d703){var _0x1da2d8=[];var _0x5c54f0={'custom_fields':{}};if(_0x37b9f0[_0x7721('0x29')]>0x0){_[_0x7721('0x2b')](_0x37b9f0,function(_0x497f9f){if(_['includes']([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x2e')]&&!_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x497f9f[_0x7721('0x2e')]['toLowerCase']()]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_[_0x7721('0x32')]([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x7721('0x34')][_0x497f9f['idField']]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_0x497f9f['type']===_0x7721('0x35')&&_0x497f9f['variableName']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0xd7d703[_0x497f9f[_0x7721('0x36')]]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x36')]][_0x7721('0x31')]());}else if(_0x497f9f[_0x7721('0x37')]===_0x7721('0x38')&&_0x497f9f[_0x7721('0x39')]&&_0x497f9f[_0x7721('0x39')]['name']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f['customField']){_0xd7d703[_0x497f9f[_0x7721('0x39')][_0x7721('0x3a')][_0x7721('0x3b')]()]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x39')]['name']['toLowerCase']()]['toString']());}});}if(_0x5c54f0['priority']){_0x5c54f0[_0x7721('0x3c')]=Number(_0x5c54f0[_0x7721('0x3c')]);}return _0x5c54f0;}function getTicket(_0x1acc72,_0x22ef35,_0x4a90ce,_0xa389fa,_0x4cf659){logger[_0x7721('0x15')](_0x7721('0x3d'));var _0x5a278e=_[_0x7721('0x3e')]({'subject':intUtil[_0x7721('0x3f')](_0xa389fa['Subjects'],_0x4cf659,'\x20'),'type':'phone','status':_0x7721('0x40'),'labels':[_0x7721('0x41'),_0x7721('0x42'),_0x7721('0x43')]['concat'](getTags(_0xa389fa[_0x7721('0x44')],_0x7721('0x3a'))),'description':intUtil[_0x7721('0x3f')](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7721('0xe')]('/api/v2/users/%d',_0x22ef35['id']),'class':_0x7721('0x46')}},'message':{'direction':'in','body':intUtil['getString'](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a')}},getCustomFields(_0xa389fa['Fields'],_0x4cf659));return request({'uri':util[_0x7721('0xe')](_0x7721('0x47'),_0x1acc72[_0x7721('0x10')],_0x4a90ce['id']),'method':'POST','body':_0x5a278e});}exports[_0x7721('0x48')]=function(_0x11d853,_0x1ad315,_0x481fa8,_0x9f7b1d,_0x754071,_0xdb3033){var _0x2d5f35,_0x135dbc;_0xdb3033[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0xdb3033['remoteUri']);_0xdb3033['serverUrl']=intUtil[_0x7721('0x49')](_0xdb3033[_0x7721('0x4a')]);if(_0x754071&&_0x754071[_0x7721('0x4b')]){logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x4d'));_0x1ad315[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0xdb3033[_0x7721('0x4a')],_0x1ad315['uniqueid'],md5(_0x1ad315['uniqueid']));}else{_0x1ad315[_0x7721('0x4e')]='';}headers[_0x7721('0x50')]=getAuth(_0xdb3033);return getUser(_0xdb3033,_0x9f7b1d[_0x7721('0x51')])[_0x7721('0x11')](function(_0x589e95){_0x2d5f35=_0x589e95;logger[_0x7721('0x15')](_0x7721('0x52'),_0x2d5f35['id']);return getEndUser(_0xdb3033,_0x1ad315['calleridname'],_0x1ad315[_0x7721('0x53')]);})['then'](function(_0x2682b1){_0x135dbc=_0x2682b1;logger['info'](_0x7721('0x54'),_0x135dbc['id']);return getTicket(_0xdb3033,_0x2d5f35,_0x135dbc,_0x481fa8,_0x1ad315);})[_0x7721('0x11')](function(_0xf17c40){if(_0xf17c40){logger['info'](_0x7721('0x55'));logger[_0x7721('0x15')]('The\x20Ticket\x20ID\x20is:',_0xf17c40['id']);switch(_0xdb3033[_0x7721('0x37')]){case _0x7721('0x56'):logger[_0x7721('0x15')]('[QUEUE]',_0x7721('0x57'));emit(util['format'](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0xf17c40['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x5d'),_0xf17c40['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x4c'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2f6f30){console[_0x7721('0x5e')](_0x2f6f30);logger[_0x7721('0x5e')](_0x7721('0x4c'),JSON[_0x7721('0x1a')](_0x2f6f30));});};exports[_0x7721('0x60')]=function(_0x57484c,_0x234bee,_0x17036e,_0x134908,_0x3b7382,_0x1f1e84,_0x9c0d4){var _0x7fbd6c,_0x33287d;_0x1f1e84[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x10')]);_0x1f1e84['serverUrl']=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x4a')]);if(_0x9c0d4&&_0x9c0d4[_0x7721('0x61')]&&_0x9c0d4[_0x7721('0x61')]!==_0x7721('0x62')){logger[_0x7721('0x15')](_0x7721('0x63'),_0x7721('0x4d'));_0x234bee[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0x1f1e84[_0x7721('0x4a')],_0x234bee[_0x7721('0x64')],md5(_0x234bee[_0x7721('0x64')]));}headers[_0x7721('0x50')]=getAuth(_0x1f1e84);return getUser(_0x1f1e84,_0x134908['email'])['then'](function(_0x4e112e){_0x7fbd6c=_0x4e112e;logger[_0x7721('0x15')]('The\x20User\x20ID\x20is:',_0x7fbd6c['id']);return getEndUser(_0x1f1e84,_0x234bee['destcalleridname'],_0x234bee['destcalleridnum']);})['then'](function(_0x47925a){_0x33287d=_0x47925a;logger[_0x7721('0x15')](_0x7721('0x54'),_0x33287d['id']);return getTicket(_0x1f1e84,_0x7fbd6c,_0x33287d,_0x17036e,_0x234bee);})['then'](function(_0x5181d7){if(_0x5181d7){logger['info']('Ticket\x20created!');logger['info'](_0x7721('0x65'),_0x5181d7['id']);switch(_0x1f1e84['type']){case'integrationTab':logger['info'](_0x7721('0x4c'),_0x7721('0x57'));emit(util[_0x7721('0xe')]('user:%s',_0x134908[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0x5181d7['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x134908[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x66'),_0x1f1e84[_0x7721('0x10')],_0x5181d7['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x63'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2c93b0){logger[_0x7721('0x5e')](_0x7721('0x63'),JSON['stringify'](_0x2c93b0));});};exports[_0x7721('0x67')]=function(_0x104f05,_0x4c8284,_0x3e7df3,_0x5d37ad,_0x1f508d,_0x4bfb48){var _0x36a3a6,_0x3f9eaa;_0x4bfb48[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x4bfb48[_0x7721('0x10')]);_0x4bfb48[_0x7721('0x4a')]=intUtil[_0x7721('0x49')](_0x4bfb48['serverUrl']);if(_0x1f508d&&_0x1f508d[_0x7721('0x4b')]){logger[_0x7721('0x15')]('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',_0x7721('0x4d'));_0x4c8284[_0x7721('0x4e')]=util[_0x7721('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4bfb48[_0x7721('0x4a')],_0x4c8284[_0x7721('0x64')],md5(_0x4c8284['uniqueid']));}else{_0x4c8284[_0x7721('0x4e')]='';}headers['Authorization']=getAuth(_0x4bfb48);return getUser(_0x4bfb48)[_0x7721('0x11')](function(_0x382800){_0x36a3a6=_0x382800;logger[_0x7721('0x15')](_0x7721('0x52'),_0x36a3a6['id']);return getEndUser(_0x4bfb48,_0x4c8284[_0x7721('0x6a')],_0x4c8284[_0x7721('0x53')]);})[_0x7721('0x11')](function(_0x5dca04){_0x3f9eaa=_0x5dca04;logger[_0x7721('0x15')](_0x7721('0x54'),_0x3f9eaa['id']);return getTicket(_0x4bfb48,_0x36a3a6,_0x3f9eaa,_0x3e7df3,_0x4c8284);})[_0x7721('0x11')](function(_0x5f08cc){if(_0x5f08cc){logger['info']('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x5f08cc['id']);}})[_0x7721('0x5f')](function(_0x2645dd){logger['error']('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',JSON[_0x7721('0x1a')](_0x2645dd));});};
\ No newline at end of file
index 74173ce..b076b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x364f=['replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','enduserId','includes','string','picklist','customField','indexOf','content','ticketType','incident','incidents','assign','getString','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','Subjects','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','request-promise','util','./util','md5','../../../../config/logger','dynamics365','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data2','resolve','data5','POST','clientId','username','password','clientSecret','then','catch','toUpperCase','message','GET','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','&$filter='];(function(_0x22f85a,_0x195ed5){var _0xaa717=function(_0xe9828e){while(--_0xe9828e){_0x22f85a['push'](_0x22f85a['shift']());}};_0xaa717(++_0x195ed5);}(_0x364f,0x119));var _0xf364=function(_0x23f0e1,_0x11d94b){_0x23f0e1=_0x23f0e1-0x0;var _0x257f0d=_0x364f[_0x23f0e1];return _0x257f0d;};'use strict';var _=require('lodash');var rp=require(_0xf364('0x0'));var util=require(_0xf364('0x1'));var intUtil=require(_0xf364('0x2'));var md5=require(_0xf364('0x3'));var Redis=require('ioredis');var logger=require(_0xf364('0x4'))(_0xf364('0x5'));var config=require('../../../../config/environment');config[_0xf364('0x6')]=_[_0xf364('0x7')](config[_0xf364('0x6')],{'host':_0xf364('0x8'),'port':0x18eb});var io=require(_0xf364('0x9'))(new Redis(config[_0xf364('0x6')]));function getAuthToken(_0x4a140f,_0x2c3900,_0x123773){if(_0x4a140f[_0xf364('0xa')]){_0x4a140f[_0xf364('0xb')]=_0x4a140f[_0xf364('0xc')][_0xf364('0xd')];_0x4a140f[_0xf364('0xe')]=_0x4a140f[_0xf364('0xc')][_0xf364('0xf')];return Promise[_0xf364('0x10')](_0x4a140f[_0xf364('0xc')][_0xf364('0x11')]);}var _0xe16d28={'method':_0xf364('0x12'),'uri':_0x2c3900,'form':{'client_id':_0x4a140f[_0xf364('0x13')],'resource':_0x4a140f[_0xf364('0xb')],'username':_0x4a140f[_0xf364('0x14')],'password':_0x4a140f[_0xf364('0x15')],'grant_type':'password','client_secret':_0x4a140f[_0xf364('0x16')]},'json':!![]};return rp(_0xe16d28)[_0xf364('0x17')](function(_0x4a63cc){return _0x4a63cc['access_token'];})[_0xf364('0x18')](function(_0x144ff5){logger['error']('['+[_0x123773[_0xf364('0x19')]()]+']\x20Wrong\x20credentials!');return _0x144ff5[_0xf364('0x1a')];});}function getUser(_0x368136,_0x480cab,_0x229b26,_0x1fe43c,_0x59d6eb,_0x11bd8d){return new Promise(function(_0x29efd2,_0x51d2d8){return getAuthToken(_0x480cab,_0x1fe43c,_0x11bd8d)[_0xf364('0x17')](function(_0x1ba35c){var _0x2383fe={'method':_0xf364('0x1b'),'uri':_0x59d6eb+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0xf364('0x1c')+_0x1ba35c,'OData-Version':_0xf364('0x1d')},'json':!![]};return rp(_0x2383fe);})['then'](function(_0x24989e){var _0x23325d=_0x24989e[_0xf364('0x1e')];var _0x14a858=![];var _0x440b19=null;if(!_[_0xf364('0x1f')](_0x229b26)){if(intUtil[_0xf364('0x20')](_0x229b26[_0xf364('0x21')])){_0x368136[_0xf364('0x22')]=_0x229b26[_0xf364('0x21')];for(_0x440b19=0x0;_0x440b19<_0x23325d[_0xf364('0x23')];_0x440b19++){if(_0x23325d[_0x440b19][_0xf364('0x24')]===_0x229b26['email']&&!_0x23325d[_0x440b19][_0xf364('0x25')]){_0x14a858=!![];logger[_0xf364('0x26')]('['+[_0x11bd8d[_0xf364('0x19')]()]+_0xf364('0x27')+_0x23325d[_0x440b19][_0xf364('0x28')]+'!');_0x368136['userId']=_0x23325d[_0x440b19][_0xf364('0x28')];}}}}if(!_0x14a858){logger[_0xf364('0x26')]('['+[_0x11bd8d[_0xf364('0x19')]()]+_0xf364('0x29'));_0x368136['userEmail']=_0x480cab[_0xf364('0x14')];for(_0x440b19=0x0;_0x440b19<_0x23325d[_0xf364('0x23')];_0x440b19++){if(_0x23325d[_0x440b19][_0xf364('0x24')]===_0x480cab[_0xf364('0x14')]){_0x368136[_0xf364('0x2a')]=_0x23325d[_0x440b19]['systemuserid'];}}}_0x29efd2(_0x368136);})[_0xf364('0x18')](function(_0x28f1f8){_0x51d2d8(_0x28f1f8[_0xf364('0x1a')]);});});}function createEndUser(_0x8e1333,_0x34cb54,_0xdb8b21,_0xe9707d,_0x53ee15,_0x15d3a4,_0x2b7634){return new Promise(function(_0x255cd7,_0x135111){return getAuthToken(_0x34cb54,_0xdb8b21,_0x15d3a4)[_0xf364('0x17')](function(_0x276644){var _0x13bbef=_0x15d3a4[_0xf364('0x2b')]()===_0xf364('0x2c')?_0x53ee15[_0xf364('0x2d')]:_0x53ee15[_0xf364('0x2e')];var _0x36c95e={'method':'POST','uri':_0xe9707d+_0xf364('0x2f'),'body':{'fullname':_0x13bbef,'firstname':_0x13bbef,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xf364('0x30')+_0x8e1333[_0xf364('0x2a')]+')'},'headers':{'Authorization':_0xf364('0x1c')+_0x276644,'OData-Version':_0xf364('0x1d')},'json':!![],'resolveWithFullResponse':!![]};_0x36c95e[_0xf364('0x31')][_0x2b7634]=_0x13bbef;return rp(_0x36c95e);})[_0xf364('0x17')](function(_0x21a50e){var _0x4a6844=_0x21a50e[_0xf364('0x32')][_0xf364('0x33')];var _0x4c6342=_0x4a6844[_0xf364('0x34')](_0x4a6844[_0xf364('0x35')]('(')+0x1,_0x4a6844['lastIndexOf'](')'));_0x8e1333['enduserId']=_0x4c6342;_0x255cd7(_0x8e1333);})['catch'](function(_0x48da93){_0x135111(_0x48da93[_0xf364('0x1a')]);});});}function getEndUser(_0x19ea1f,_0x41ad82,_0x14e97c,_0x4b10ae,_0xf8cd23,_0x58323b,_0x2c4ddc,_0x3571a0){var _0x4d539c=_0x58323b[_0xf364('0x2b')]()===_0xf364('0x2c')?_0xf8cd23[_0xf364('0x2d')]:_0xf8cd23[_0xf364('0x2e')];return getAuthToken(_0x41ad82,_0x14e97c,_0x58323b)[_0xf364('0x17')](function(_0x18c92e){_0x3571a0=_0x3571a0?_0x3571a0:'telephone1';var _0xb9e823={'method':_0xf364('0x1b'),'uri':_0x4b10ae+'contacts?$select='+_0x3571a0+_0xf364('0x36')+_0x3571a0+'\x20eq\x20\x27'+_0x4d539c[_0xf364('0x37')]('+',_0xf364('0x38'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x18c92e,'If-None-Match':null,'OData-Version':_0xf364('0x1d')},'json':!![]};return rp(_0xb9e823);})[_0xf364('0x17')](function(_0x5e4827){var _0x34e6e4=![];if(!_0x5e4827)return _0x34e6e4;var _0x3ce3bc=_0x5e4827['value'];for(var _0x2d3416=0x0;_0x2d3416<_0x3ce3bc[_0xf364('0x23')];_0x2d3416++){if(_0x3ce3bc[_0x2d3416][_0x3571a0]===_0x4d539c){_0x34e6e4=!![];_0x19ea1f['enduserId']=_0x3ce3bc[_0x2d3416][_0xf364('0x39')];}}return _0x34e6e4;})[_0xf364('0x17')](function(_0x5723bc){if(_0x5723bc)return _0x19ea1f;if(_0x2c4ddc===_0xf364('0x3a')){logger['info']('['+[_0x58323b[_0xf364('0x19')]()]+_0xf364('0x3b'));return _0x19ea1f;}return createEndUser(_0x19ea1f,_0x41ad82,_0x14e97c,_0x4b10ae,_0xf8cd23,_0x58323b,_0x3571a0)[_0xf364('0x17')](function(_0x2c08b3){logger['info']('['+[_0x58323b['toUpperCase']()]+_0xf364('0x3c'),_0x2c08b3[_0xf364('0x3d')]);return _0x2c08b3;});});}function getCustomFields(_0x3be0a0,_0xda5e3f,_0x597b75){var _0x437c5d={};if(_0x3be0a0[_0xf364('0x23')]>0x0){_['forEach'](_0x3be0a0,function(_0x578f0d){if(_[_0xf364('0x3e')]([_0xf364('0x3f'),_0xf364('0x40')],_0x578f0d['type'])&&_0x578f0d['nameField']&&!_0x578f0d[_0xf364('0x41')]){var _0x1d0595=_0x578f0d['idField']['toLowerCase']();var _0x2370e8=_0x1d0595[_0xf364('0x34')](0x0,_0x1d0595[_0xf364('0x42')]('_'));var _0x5f52a5=_0x1d0595['substring'](_0x1d0595[_0xf364('0x42')]('_')+0x1);if(_0x2370e8===_0x597b75){_0x437c5d[_0x5f52a5]=_0x578f0d[_0xf364('0x43')];}}});}return _0x437c5d;}function getTicket(_0x46b681,_0x3e4abb,_0x21c9f8,_0x3472d8,_0x1bc9cc,_0x3e09e3,_0xa1ef75){return new Promise(function(_0x28545a,_0x30807c){var _0x3b634e;return getAuthToken(_0x3e4abb,_0x21c9f8,_0xa1ef75)[_0xf364('0x17')](function(_0x20428d){if(_0x3e09e3[_0xf364('0x44')]===_0xf364('0x45')){_0x3b634e={'method':'POST','uri':_0x3472d8+_0xf364('0x46'),'body':Object[_0xf364('0x47')]({},{'title':intUtil[_0xf364('0x48')](_0x3e09e3['Subjects'],_0x1bc9cc,'\x20'),'description':intUtil['getString'](_0x3e09e3[_0xf364('0x49')],_0x1bc9cc,'\x0a'),'customerid_contact@odata.bind':_0x46b681[_0xf364('0x3d')]?_0xf364('0x4a')+_0x46b681[_0xf364('0x3d')]+')':undefined,'ownerid@odata.bind':_0xf364('0x30')+_0x46b681[_0xf364('0x2a')]+')','caseorigincode':'1'},getCustomFields(_0x3e09e3[_0xf364('0x4b')],_0x1bc9cc,_0x3e09e3[_0xf364('0x44')])),'headers':{'Authorization':'Bearer\x20'+_0x20428d,'OData-Version':_0xf364('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3e09e3[_0xf364('0x44')]===_0xf364('0x4c')){var _0x43cb73=_0x46b681[_0xf364('0x3d')]?[{'partyid_systemuser@odata.bind':_0xf364('0x30')+_0x46b681[_0xf364('0x2a')]+')','participationtypemask':_0x46b681[_0xf364('0x4d')]===_0xf364('0x4e')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x46b681['enduserId']+')','participationtypemask':_0x46b681[_0xf364('0x4d')]===_0xf364('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xf364('0x30')+_0x46b681[_0xf364('0x2a')]+')','participationtypemask':_0x46b681['callDirection']===_0xf364('0x4e')?0x2:0x1}];_0x3b634e={'method':_0xf364('0x12'),'uri':_0x3472d8+_0xf364('0x4f'),'body':Object[_0xf364('0x47')]({},{'subject':intUtil[_0xf364('0x48')](_0x3e09e3[_0xf364('0x50')],_0x1bc9cc,'\x20'),'phonenumber':String(_0x1bc9cc[_0xf364('0x2e')]),'description':intUtil[_0xf364('0x48')](_0x3e09e3[_0xf364('0x49')],_0x1bc9cc,'\x0a'),'regardingobjectid_contact@odata.bind':_0x46b681[_0xf364('0x3d')]?_0xf364('0x4a')+_0x46b681[_0xf364('0x3d')]+')':undefined,'ownerid@odata.bind':_0xf364('0x30')+_0x46b681[_0xf364('0x2a')]+')','directioncode':_0x46b681[_0xf364('0x4d')]===_0xf364('0x4e')?![]:!![],'phonecall_activity_parties':_0x43cb73},getCustomFields(_0x3e09e3['Fields'],_0x1bc9cc,_0x3e09e3['ticketType'])),'headers':{'Authorization':_0xf364('0x1c')+_0x20428d,'OData-Version':_0xf364('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3b634e);})[_0xf364('0x17')](function(_0x5bb8ce){var _0x40f5df=_0x5bb8ce[_0xf364('0x32')]['odata-entityid'];var _0x35bf22=_0x40f5df[_0xf364('0x34')](_0x40f5df[_0xf364('0x35')]('(')+0x1,_0x40f5df[_0xf364('0x35')](')'));_0x46b681['ticketId']=_0x35bf22;_0x28545a(_0x46b681);})['catch'](function(_0x160cf6){_0x30807c(_0x160cf6['message']);});});}function emit(_0x4e4f31,_0x1ffdcb,_0x5f2720,_0x2bca0d){var _0xa705cd={'uri':util[_0xf364('0x51')](_0xf364('0x52'),_0x4e4f31,_0x5f2720,_0x2bca0d)};io['to'](util['format'](_0xf364('0x53'),_0x1ffdcb))[_0xf364('0x54')](_0xf364('0x55'),_0xa705cd);}exports['cs']=function(_0x480be3,_0x218128,_0x123a35,_0x171044,_0x3de050,_0x55638a,_0x3be071,_0x3d64be){var _0x31f461={};_0x55638a['remoteUri']=_0x55638a[_0xf364('0xa')]?intUtil[_0xf364('0x56')](_0x55638a[_0xf364('0xc')]['data7']):intUtil[_0xf364('0x56')](_0x55638a[_0xf364('0xb')]);_0x55638a[_0xf364('0x57')]=intUtil['stripTrailingSlash'](_0x55638a[_0xf364('0x57')]);_0x31f461[_0xf364('0x4d')]=_0x3d64be===_0xf364('0x4e')||_0x3d64be===_0xf364('0x58')?'queue':_0xf364('0x2c');var _0x86e426=_0x55638a[_0xf364('0xa')]?util[_0xf364('0x51')]('%s/api/data/v9.0/',_0x55638a['CloudProvider'][_0xf364('0xd')]):util[_0xf364('0x51')]('%s/api/data/v9.0/',_0x55638a[_0xf364('0xb')]);var _0x974c00=util[_0xf364('0x51')](_0xf364('0x59'),_0x55638a[_0xf364('0xe')]);var _0x5f42b7=util[_0xf364('0x51')](_0xf364('0x5a'),_0x55638a[_0xf364('0x57')],_0x218128[_0xf364('0x5b')],md5(_0x218128[_0xf364('0x5b')]));if(_0x3de050&&_0x3de050[_0xf364('0x5c')]){logger[_0xf364('0x26')](_0xf364('0x5d'),_0xf364('0x5e'));_0x218128[_0xf364('0x5f')]=_0x5f42b7;}else if(_0x3be071&&_0x3be071['recordingFormat']&&_0x3be071[_0xf364('0x60')]!==_0xf364('0x61')){logger['info'](_0xf364('0x62'),_0xf364('0x5e'));_0x218128[_0xf364('0x5f')]=_0x5f42b7;}else{_0x218128[_0xf364('0x5f')]='';}return getUser(_0x31f461,_0x55638a,_0x171044,_0x974c00,_0x86e426,_0x3d64be)['then'](function(_0x449439){logger[_0xf364('0x26')]('['+_0x3d64be[_0xf364('0x19')]()+_0xf364('0x63'),_0x449439[_0xf364('0x2a')]);logger[_0xf364('0x26')]('['+_0x3d64be['toUpperCase']()+_0xf364('0x64'),_0x449439['userEmail']);return getEndUser(_0x449439,_0x55638a,_0x974c00,_0x86e426,_0x218128,_0x3d64be,_0x123a35[_0xf364('0x65')],_0x123a35[_0xf364('0x66')]);})['then'](function(_0x1b3d08){logger[_0xf364('0x26')]('['+_0x3d64be['toUpperCase']()+_0xf364('0x67'),_0x1b3d08[_0xf364('0x3d')]);logger[_0xf364('0x26')]('['+_0x3d64be['toUpperCase']()+']\x20The\x20Enduser\x20phone\x20is:',_0x218128[_0xf364('0x2e')]);return getTicket(_0x1b3d08,_0x55638a,_0x974c00,_0x86e426,_0x218128,_0x123a35,_0x3d64be);})[_0xf364('0x17')](function(_0x4b3157){logger[_0xf364('0x26')](util['format']('['+_0x3d64be[_0xf364('0x19')]()+_0xf364('0x68'),_0x123a35[_0xf364('0x44')],_0x4b3157[_0xf364('0x69')]));logger[_0xf364('0x26')](util[_0xf364('0x51')]('['+_0x3d64be['toUpperCase']()+_0xf364('0x6a'),_0x3d64be));if(_0x3d64be!==_0xf364('0x58')&&_0x123a35[_0xf364('0x6b')]){logger['info']('['+_0x3d64be[_0xf364('0x19')]()+']',_0xf364('0x6c'));emit(_0x55638a[_0xf364('0xb')],_0x171044[_0xf364('0x6d')],_0x123a35[_0xf364('0x44')],_0x4b3157[_0xf364('0x69')]);}})[_0xf364('0x18')](function(_0x496747){logger['error']('['+_0x3d64be[_0xf364('0x19')]()+_0xf364('0x6e'),_0x496747[_0xf364('0x1a')]);console['error'](_0xf364('0x6f'),_0x496747);});};
\ No newline at end of file
+var _0x4718=['ticketType','POST','incidents','assign','getString','/contacts(','Fields','phonecall','queue','phonecalls','Subjects','Descriptions','callDirection','odata-entityid','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','ticketId',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','./util','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data2','resolve','data5','username','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled',']\x20Agent\x20found\x20','systemuserid','userId','info',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','Bearer\x20','body','headers','substring','lastIndexOf','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','enduserId','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach','includes','string','picklist','nameField','customField','idField','indexOf','content'];(function(_0x73b80e,_0x4daa4a){var _0x4c31cd=function(_0x3663a0){while(--_0x3663a0){_0x73b80e['push'](_0x73b80e['shift']());}};_0x4c31cd(++_0x4daa4a);}(_0x4718,0x1d2));var _0x8471=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x4718[_0x334841];return _0x5beb4b;};'use strict';var _=require(_0x8471('0x0'));var rp=require('request-promise');var util=require('util');var intUtil=require(_0x8471('0x1'));var md5=require('md5');var Redis=require('ioredis');var logger=require(_0x8471('0x2'))(_0x8471('0x3'));var config=require(_0x8471('0x4'));config[_0x8471('0x5')]=_['defaults'](config[_0x8471('0x5')],{'host':_0x8471('0x6'),'port':0x18eb});var io=require(_0x8471('0x7'))(new Redis(config[_0x8471('0x5')]));function getAuthToken(_0x4268ec,_0x3dfe2,_0x29bd8c){if(_0x4268ec[_0x8471('0x8')]){_0x4268ec[_0x8471('0x9')]=_0x4268ec[_0x8471('0xa')][_0x8471('0xb')];_0x4268ec[_0x8471('0xc')]=_0x4268ec[_0x8471('0xa')][_0x8471('0xd')];return Promise[_0x8471('0xe')](_0x4268ec['CloudProvider'][_0x8471('0xf')]);}var _0x1f2d53={'method':'POST','uri':_0x3dfe2,'form':{'client_id':_0x4268ec['clientId'],'resource':_0x4268ec['remoteUri'],'username':_0x4268ec[_0x8471('0x10')],'password':_0x4268ec[_0x8471('0x11')],'grant_type':_0x8471('0x11'),'client_secret':_0x4268ec[_0x8471('0x12')]},'json':!![]};return rp(_0x1f2d53)[_0x8471('0x13')](function(_0x93791b){return _0x93791b[_0x8471('0x14')];})[_0x8471('0x15')](function(_0x342f2f){logger[_0x8471('0x16')]('['+[_0x29bd8c[_0x8471('0x17')]()]+_0x8471('0x18'));return _0x342f2f[_0x8471('0x19')];});}function getUser(_0x4d74f4,_0x47c3af,_0x38ed27,_0x3bdb54,_0x5648fa,_0x33e984){return new Promise(function(_0x2206eb,_0x2f23bf){return getAuthToken(_0x47c3af,_0x3bdb54,_0x33e984)['then'](function(_0x49bd2){var _0x243c83={'method':_0x8471('0x1a'),'uri':_0x5648fa+_0x8471('0x1b'),'headers':{'Authorization':'Bearer\x20'+_0x49bd2,'OData-Version':_0x8471('0x1c')},'json':!![]};return rp(_0x243c83);})['then'](function(_0x4bc00e){var _0x5f33b1=_0x4bc00e[_0x8471('0x1d')];var _0x4c7010=![];var _0x272ff4=null;if(!_[_0x8471('0x1e')](_0x38ed27)){if(intUtil[_0x8471('0x1f')](_0x38ed27[_0x8471('0x20')])){_0x4d74f4[_0x8471('0x21')]=_0x38ed27[_0x8471('0x20')];for(_0x272ff4=0x0;_0x272ff4<_0x5f33b1[_0x8471('0x22')];_0x272ff4++){if(_0x5f33b1[_0x272ff4][_0x8471('0x23')]===_0x38ed27[_0x8471('0x20')]&&!_0x5f33b1[_0x272ff4][_0x8471('0x24')]){_0x4c7010=!![];logger['info']('['+[_0x33e984[_0x8471('0x17')]()]+_0x8471('0x25')+_0x5f33b1[_0x272ff4][_0x8471('0x26')]+'!');_0x4d74f4[_0x8471('0x27')]=_0x5f33b1[_0x272ff4][_0x8471('0x26')];}}}}if(!_0x4c7010){logger[_0x8471('0x28')]('['+[_0x33e984['toUpperCase']()]+_0x8471('0x29'));_0x4d74f4[_0x8471('0x21')]=_0x47c3af['username'];for(_0x272ff4=0x0;_0x272ff4<_0x5f33b1[_0x8471('0x22')];_0x272ff4++){if(_0x5f33b1[_0x272ff4][_0x8471('0x23')]===_0x47c3af['username']){_0x4d74f4[_0x8471('0x27')]=_0x5f33b1[_0x272ff4][_0x8471('0x26')];}}}_0x2206eb(_0x4d74f4);})[_0x8471('0x15')](function(_0x4b605a){_0x2f23bf(_0x4b605a['message']);});});}function createEndUser(_0x29f300,_0x4e002b,_0x2c7096,_0x13e6d3,_0x1ce4e6,_0x2ab291,_0xb82162){return new Promise(function(_0x2db9e3,_0x25dfcd){return getAuthToken(_0x4e002b,_0x2c7096,_0x2ab291)[_0x8471('0x13')](function(_0x1ae910){var _0x5206a2=_0x2ab291[_0x8471('0x2a')]()===_0x8471('0x2b')?_0x1ce4e6[_0x8471('0x2c')]:_0x1ce4e6[_0x8471('0x2d')];var _0x193b97={'method':'POST','uri':_0x13e6d3+_0x8471('0x2e'),'body':{'fullname':_0x5206a2,'firstname':_0x5206a2,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x8471('0x2f')+_0x29f300['userId']+')'},'headers':{'Authorization':_0x8471('0x30')+_0x1ae910,'OData-Version':_0x8471('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x193b97[_0x8471('0x31')][_0xb82162]=_0x5206a2;return rp(_0x193b97);})[_0x8471('0x13')](function(_0x33ee80){var _0x4cef36=_0x33ee80[_0x8471('0x32')]['odata-entityid'];var _0x48e066=_0x4cef36[_0x8471('0x33')](_0x4cef36[_0x8471('0x34')]('(')+0x1,_0x4cef36[_0x8471('0x34')](')'));_0x29f300['enduserId']=_0x48e066;_0x2db9e3(_0x29f300);})[_0x8471('0x15')](function(_0x220c14){_0x25dfcd(_0x220c14[_0x8471('0x19')]);});});}function getEndUser(_0x16b7f5,_0xcd99b,_0x77009c,_0x5874b9,_0x126fe5,_0x39ab7a,_0x363f3c,_0x2543f7){var _0x51278d=_0x39ab7a['toLowerCase']()===_0x8471('0x2b')?_0x126fe5[_0x8471('0x2c')]:_0x126fe5['calleridnum'];return getAuthToken(_0xcd99b,_0x77009c,_0x39ab7a)[_0x8471('0x13')](function(_0x482133){_0x2543f7=_0x2543f7?_0x2543f7:_0x8471('0x35');var _0x3b60cd={'method':'GET','uri':_0x5874b9+_0x8471('0x36')+_0x2543f7+_0x8471('0x37')+_0x2543f7+_0x8471('0x38')+_0x51278d['replace']('+','%2b')+'\x27','headers':{'Authorization':'Bearer\x20'+_0x482133,'If-None-Match':null,'OData-Version':_0x8471('0x1c')},'json':!![]};return rp(_0x3b60cd);})[_0x8471('0x13')](function(_0x3e4f34){var _0x242777=![];if(!_0x3e4f34)return _0x242777;var _0x11fcf6=_0x3e4f34[_0x8471('0x1d')];for(var _0x40835f=0x0;_0x40835f<_0x11fcf6['length'];_0x40835f++){if(_0x11fcf6[_0x40835f][_0x2543f7]===_0x51278d){_0x242777=!![];_0x16b7f5[_0x8471('0x39')]=_0x11fcf6[_0x40835f][_0x8471('0x3a')];}}return _0x242777;})['then'](function(_0x28609d){if(_0x28609d)return _0x16b7f5;if(_0x363f3c==='nothing'){logger[_0x8471('0x28')]('['+[_0x39ab7a[_0x8471('0x17')]()]+_0x8471('0x3b'));return _0x16b7f5;}return createEndUser(_0x16b7f5,_0xcd99b,_0x77009c,_0x5874b9,_0x126fe5,_0x39ab7a,_0x2543f7)['then'](function(_0x2a9cd8){logger['info']('['+[_0x39ab7a[_0x8471('0x17')]()]+']\x20Enduser\x20created!',_0x2a9cd8[_0x8471('0x39')]);return _0x2a9cd8;});});}function getCustomFields(_0x152559,_0x194ecd,_0x1b8b76){var _0x38a1e8={};if(_0x152559[_0x8471('0x22')]>0x0){_[_0x8471('0x3c')](_0x152559,function(_0x292fbb){if(_[_0x8471('0x3d')]([_0x8471('0x3e'),_0x8471('0x3f')],_0x292fbb['type'])&&_0x292fbb[_0x8471('0x40')]&&!_0x292fbb[_0x8471('0x41')]){var _0x2766af=_0x292fbb[_0x8471('0x42')]['toLowerCase']();var _0x15deeb=_0x2766af[_0x8471('0x33')](0x0,_0x2766af['indexOf']('_'));var _0x102e4e=_0x2766af['substring'](_0x2766af[_0x8471('0x43')]('_')+0x1);if(_0x15deeb===_0x1b8b76){_0x38a1e8[_0x102e4e]=_0x292fbb[_0x8471('0x44')];}}});}return _0x38a1e8;}function getTicket(_0x23b0f1,_0xdddc16,_0x1b3873,_0x3aea10,_0xe93951,_0x5c999f,_0x593dac){return new Promise(function(_0x4f728f,_0x23d42a){var _0x59b212;return getAuthToken(_0xdddc16,_0x1b3873,_0x593dac)[_0x8471('0x13')](function(_0x38a29e){if(_0x5c999f[_0x8471('0x45')]==='incident'){_0x59b212={'method':_0x8471('0x46'),'uri':_0x3aea10+_0x8471('0x47'),'body':Object[_0x8471('0x48')]({},{'title':intUtil[_0x8471('0x49')](_0x5c999f['Subjects'],_0xe93951,'\x20'),'description':intUtil['getString'](_0x5c999f['Descriptions'],_0xe93951,'\x0a'),'customerid_contact@odata.bind':_0x23b0f1[_0x8471('0x39')]?_0x8471('0x4a')+_0x23b0f1['enduserId']+')':undefined,'ownerid@odata.bind':_0x8471('0x2f')+_0x23b0f1[_0x8471('0x27')]+')','caseorigincode':'1'},getCustomFields(_0x5c999f[_0x8471('0x4b')],_0xe93951,_0x5c999f[_0x8471('0x45')])),'headers':{'Authorization':_0x8471('0x30')+_0x38a29e,'OData-Version':_0x8471('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x5c999f[_0x8471('0x45')]===_0x8471('0x4c')){var _0x1eddc1=_0x23b0f1['enduserId']?[{'partyid_systemuser@odata.bind':_0x8471('0x2f')+_0x23b0f1[_0x8471('0x27')]+')','participationtypemask':_0x23b0f1['callDirection']===_0x8471('0x4d')?0x2:0x1},{'partyid_contact@odata.bind':_0x8471('0x4a')+_0x23b0f1[_0x8471('0x39')]+')','participationtypemask':_0x23b0f1['callDirection']===_0x8471('0x4d')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x23b0f1[_0x8471('0x27')]+')','participationtypemask':_0x23b0f1['callDirection']===_0x8471('0x4d')?0x2:0x1}];_0x59b212={'method':_0x8471('0x46'),'uri':_0x3aea10+_0x8471('0x4e'),'body':Object[_0x8471('0x48')]({},{'subject':intUtil[_0x8471('0x49')](_0x5c999f[_0x8471('0x4f')],_0xe93951,'\x20'),'phonenumber':String(_0xe93951[_0x8471('0x2d')]),'description':intUtil[_0x8471('0x49')](_0x5c999f[_0x8471('0x50')],_0xe93951,'\x0a'),'regardingobjectid_contact@odata.bind':_0x23b0f1[_0x8471('0x39')]?_0x8471('0x4a')+_0x23b0f1[_0x8471('0x39')]+')':undefined,'ownerid@odata.bind':_0x8471('0x2f')+_0x23b0f1['userId']+')','directioncode':_0x23b0f1[_0x8471('0x51')]===_0x8471('0x4d')?![]:!![],'phonecall_activity_parties':_0x1eddc1},getCustomFields(_0x5c999f[_0x8471('0x4b')],_0xe93951,_0x5c999f['ticketType'])),'headers':{'Authorization':_0x8471('0x30')+_0x38a29e,'OData-Version':_0x8471('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x59b212);})['then'](function(_0x376db7){var _0x63e286=_0x376db7[_0x8471('0x32')][_0x8471('0x52')];var _0xa17ef2=_0x63e286[_0x8471('0x33')](_0x63e286[_0x8471('0x34')]('(')+0x1,_0x63e286[_0x8471('0x34')](')'));_0x23b0f1['ticketId']=_0xa17ef2;_0x4f728f(_0x23b0f1);})[_0x8471('0x15')](function(_0x440d5e){_0x23d42a(_0x440d5e['message']);});});}function emit(_0x2365d0,_0x761b45,_0x7b3e75,_0x5687f4){var _0x21bfa6={'uri':util[_0x8471('0x53')](_0x8471('0x54'),_0x2365d0,_0x7b3e75,_0x5687f4)};io['to'](util[_0x8471('0x53')](_0x8471('0x55'),_0x761b45))['emit']('trigger:browser:url',_0x21bfa6);}exports['cs']=function(_0x51ccbb,_0xd0222f,_0x2d1dfb,_0x4aece1,_0x3c063e,_0x4a7fed,_0x505be7,_0x39ebef){var _0x44cfd4={};_0x4a7fed[_0x8471('0x9')]=_0x4a7fed[_0x8471('0x8')]?intUtil['stripTrailingSlash'](_0x4a7fed[_0x8471('0xa')]['data7']):intUtil[_0x8471('0x56')](_0x4a7fed[_0x8471('0x9')]);_0x4a7fed[_0x8471('0x57')]=intUtil[_0x8471('0x56')](_0x4a7fed['serverUrl']);_0x44cfd4[_0x8471('0x51')]=_0x39ebef===_0x8471('0x4d')||_0x39ebef==='unmanaged'?_0x8471('0x4d'):_0x8471('0x2b');var _0x2fba62=_0x4a7fed[_0x8471('0x8')]?util[_0x8471('0x53')](_0x8471('0x58'),_0x4a7fed['CloudProvider'][_0x8471('0xb')]):util['format']('%s/api/data/v9.0/',_0x4a7fed[_0x8471('0x9')]);var _0x12b3c4=util[_0x8471('0x53')](_0x8471('0x59'),_0x4a7fed[_0x8471('0xc')]);var _0x4abe2c=util[_0x8471('0x53')](_0x8471('0x5a'),_0x4a7fed[_0x8471('0x57')],_0xd0222f[_0x8471('0x5b')],md5(_0xd0222f['uniqueid']));if(_0x3c063e&&_0x3c063e[_0x8471('0x5c')]){logger['info']('[QUEUE]',_0x8471('0x5d'));_0xd0222f['recordingURL']=_0x4abe2c;}else if(_0x505be7&&_0x505be7[_0x8471('0x5e')]&&_0x505be7['recordingFormat']!==_0x8471('0x5f')){logger['info'](_0x8471('0x60'),'Recording\x20is\x20enabled!');_0xd0222f[_0x8471('0x61')]=_0x4abe2c;}else{_0xd0222f[_0x8471('0x61')]='';}return getUser(_0x44cfd4,_0x4a7fed,_0x4aece1,_0x12b3c4,_0x2fba62,_0x39ebef)[_0x8471('0x13')](function(_0x3991ba){logger[_0x8471('0x28')]('['+_0x39ebef[_0x8471('0x17')]()+_0x8471('0x62'),_0x3991ba[_0x8471('0x27')]);logger[_0x8471('0x28')]('['+_0x39ebef[_0x8471('0x17')]()+_0x8471('0x63'),_0x3991ba['userEmail']);return getEndUser(_0x3991ba,_0x4a7fed,_0x12b3c4,_0x2fba62,_0xd0222f,_0x39ebef,_0x2d1dfb['moduleCreate'],_0x2d1dfb['additionalSearchContact']);})[_0x8471('0x13')](function(_0x2afc6c){logger[_0x8471('0x28')]('['+_0x39ebef[_0x8471('0x17')]()+_0x8471('0x64'),_0x2afc6c[_0x8471('0x39')]);logger[_0x8471('0x28')]('['+_0x39ebef[_0x8471('0x17')]()+']\x20The\x20Enduser\x20phone\x20is:',_0xd0222f[_0x8471('0x2d')]);return getTicket(_0x2afc6c,_0x4a7fed,_0x12b3c4,_0x2fba62,_0xd0222f,_0x2d1dfb,_0x39ebef);})['then'](function(_0x190e28){logger['info'](util[_0x8471('0x53')]('['+_0x39ebef[_0x8471('0x17')]()+_0x8471('0x65'),_0x2d1dfb[_0x8471('0x45')],_0x190e28['ticketId']));logger[_0x8471('0x28')](util[_0x8471('0x53')]('['+_0x39ebef[_0x8471('0x17')]()+']\x20Call\x20direction:\x20%s',_0x39ebef));if(_0x39ebef!=='unmanaged'&&_0x2d1dfb[_0x8471('0x66')]){logger['info']('['+_0x39ebef['toUpperCase']()+']',_0x8471('0x67'));emit(_0x4a7fed[_0x8471('0x9')],_0x4aece1[_0x8471('0x68')],_0x2d1dfb[_0x8471('0x45')],_0x190e28[_0x8471('0x69')]);}})[_0x8471('0x15')](function(_0x367ec6){logger[_0x8471('0x16')]('['+_0x39ebef[_0x8471('0x17')]()+_0x8471('0x6a'),_0x367ec6[_0x8471('0x19')]);console[_0x8471('0x16')]('Error\x20running\x20Dynamics365\x20integration',_0x367ec6);});};
\ No newline at end of file
index ca582a0..e9f9349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d44=['push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','recordingFormat','none','[OUTBOUND]','%s/helpdesk/tickets/%d','lastevent','toUpperCase','util','ioredis','./util','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','<br>','name','Fields','mapValues','custom_fields','value','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','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\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','apiKey','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','customField','toLowerCase','content','toString','idField'];(function(_0x3de2e0,_0x2e8a23){var _0xa1949e=function(_0x327614){while(--_0x327614){_0x3de2e0['push'](_0x3de2e0['shift']());}};_0xa1949e(++_0x2e8a23);}(_0x1d44,0x1da));var _0x41d4=function(_0x353a30,_0x50c68a){_0x353a30=_0x353a30-0x0;var _0x213161=_0x1d44[_0x353a30];return _0x213161;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require(_0x41d4('0x0'));var Redis=require(_0x41d4('0x1'));var intUtil=require(_0x41d4('0x2'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x41d4('0x3'));config[_0x41d4('0x4')]=_[_0x41d4('0x5')](config[_0x41d4('0x4')],{'host':_0x41d4('0x6'),'port':0x18eb});var io=require(_0x41d4('0x7'))(new Redis(config[_0x41d4('0x4')]));var headers={'Content-Type':_0x41d4('0x8'),'Accept':_0x41d4('0x8')};function emit(_0x18ac8a,_0xa58eea,_0x1c885a){io['to'](_0x18ac8a)[_0x41d4('0x9')](_0xa58eea,_0x1c885a);}function getTicket(_0x539246,_0x16d0f5,_0x398174,_0x2c9f13,_0x5be3a5){logger[_0x41d4('0xa')]('Creating\x20new\x20ticket...');var _0x40f9cd=_[_0x41d4('0xb')]({'responder_id':_0x16d0f5['id'],'requester_id':_0x398174['id'],'name':util[_0x41d4('0xc')](_0x41d4('0xd'),_0x5be3a5[_0x41d4('0xe')]),'phone':_0x5be3a5[_0x41d4('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x41d4('0x10')](_0x2c9f13['Subjects'],_0x5be3a5,'\x20'),'description':intUtil[_0x41d4('0x10')](_0x2c9f13[_0x41d4('0x11')],_0x5be3a5,_0x41d4('0x12')),'tags':getTags(_0x2c9f13['Tags'],_0x41d4('0x13'))},getCustomFields(_0x2c9f13[_0x41d4('0x14')],_0x5be3a5));_0x40f9cd['custom_fields']=_[_0x41d4('0x15')](_['keyBy'](_0x40f9cd[_0x41d4('0x16')],'id'),_0x41d4('0x17'));return request({'uri':util[_0x41d4('0xc')](_0x41d4('0x18'),_0x539246[_0x41d4('0x19')]),'method':'POST','body':_0x40f9cd})[_0x41d4('0x1a')](function(_0x38d777){logger[_0x41d4('0xa')](_0x41d4('0x1b'));return _0x38d777;});}function getUser(_0x2e2a25,_0x39233e){if(intUtil[_0x41d4('0x1c')](_0x39233e)){return request({'uri':util[_0x41d4('0xc')](_0x41d4('0x1d'),_0x2e2a25['remoteUri']),'qs':{'email':_0x39233e}})[_0x41d4('0x1a')](function(_0xcce4c0){if(_0xcce4c0[_0x41d4('0x1e')]){logger[_0x41d4('0xa')](_0x41d4('0x1f'));return _[_0x41d4('0x20')](_0xcce4c0,function(_0x230a16){return _0x230a16['contact']['email']===_0x39233e;});}else{logger[_0x41d4('0xa')](_0x41d4('0x21'));return request({'uri':util[_0x41d4('0xc')](_0x41d4('0x22'),_0x2e2a25['remoteUri'])})[_0x41d4('0x1a')](function(_0x31aa81){logger[_0x41d4('0xa')](_0x41d4('0x23'));return _0x31aa81;});}});}else{logger[_0x41d4('0xa')](_0x41d4('0x24'));return request({'uri':util[_0x41d4('0xc')](_0x41d4('0x22'),_0x2e2a25[_0x41d4('0x19')])})[_0x41d4('0x1a')](function(_0x5d0505){logger[_0x41d4('0xa')](_0x41d4('0x23'));return _0x5d0505;});}}function getEndUser(_0x36dcc8,_0x931f6f,_0x261ca9){logger['info'](_0x41d4('0x25'),_0x261ca9);return request({'uri':util[_0x41d4('0xc')](_0x41d4('0x26'),_0x36dcc8[_0x41d4('0x19')]),'qs':{'phone':_0x261ca9}})['then'](function(_0x373dbb){if(_0x373dbb[_0x41d4('0x1e')]){logger[_0x41d4('0xa')](_0x41d4('0x27'));return _[_0x41d4('0x20')](_0x373dbb,{'phone':_0x261ca9});}else{logger[_0x41d4('0xa')](_0x41d4('0x28'));return request({'uri':util[_0x41d4('0xc')](_0x41d4('0x26'),_0x36dcc8[_0x41d4('0x19')]),'method':_0x41d4('0x29'),'body':{'name':_0x931f6f,'phone':_0x261ca9}})[_0x41d4('0x1a')](function(_0x1ff6b7){logger[_0x41d4('0xa')](_0x41d4('0x2a'));return _0x1ff6b7;});}});}function getAuth(_0x430a79){return util[_0x41d4('0xc')]('Basic\x20%s',new Buffer(_0x430a79[_0x41d4('0x2b')]+':X')['toString'](_0x41d4('0x2c')));}function request(_0x158278){logger[_0x41d4('0x2d')](_0x41d4('0x2e'),JSON[_0x41d4('0x2f')](_0x158278));return rp(_[_0x41d4('0x5')](_0x158278,{'method':_0x41d4('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x577b80,_0x2a79eb){var _0x330222=[];if(_0x577b80&&_0x577b80['length']>0x0){_0x330222=_[_0x41d4('0x31')](_0x577b80,_0x2a79eb);}return _0x330222;}function getCustomFields(_0x171b88,_0x592041){var _0x4c70d8=[];var _0x52ba24={'custom_fields':[]};if(_0x171b88[_0x41d4('0x1e')]>0x0){_[_0x41d4('0x32')](_0x171b88,function(_0x563829){if(_[_0x41d4('0x33')]([_0x41d4('0x34'),_0x41d4('0x35')],_0x563829[_0x41d4('0x36')])&&_0x563829['nameField']&&!_0x563829[_0x41d4('0x37')]){_0x52ba24[_0x563829['nameField'][_0x41d4('0x38')]()]=_0x563829[_0x41d4('0x39')][_0x41d4('0x3a')]();}else if(_[_0x41d4('0x33')](['string','picklist'],_0x563829['type'])&&_0x563829[_0x41d4('0x3b')]&&_0x563829[_0x41d4('0x37')]){_0x52ba24[_0x41d4('0x16')][_0x41d4('0x3c')]({'id':_0x563829[_0x41d4('0x3b')],'value':_0x563829['content'][_0x41d4('0x3a')]()});}else if(_0x563829[_0x41d4('0x36')]===_0x41d4('0x3d')&&_0x563829['variableName']&&_0x563829[_0x41d4('0x3b')]&&_0x563829[_0x41d4('0x37')]){_0x592041[_0x563829[_0x41d4('0x3e')]]&&_0x52ba24[_0x41d4('0x16')][_0x41d4('0x3c')]({'id':_0x563829[_0x41d4('0x3b')],'value':_0x592041[_0x563829[_0x41d4('0x3e')]][_0x41d4('0x3a')]()});}else if(_0x563829[_0x41d4('0x36')]===_0x41d4('0x3f')&&_0x563829['Variable']&&_0x563829[_0x41d4('0x40')][_0x41d4('0x13')]&&_0x563829[_0x41d4('0x3b')]&&_0x563829[_0x41d4('0x37')]){_0x592041[_0x563829[_0x41d4('0x40')][_0x41d4('0x13')][_0x41d4('0x38')]()]&&_0x52ba24[_0x41d4('0x16')][_0x41d4('0x3c')]({'id':_0x563829[_0x41d4('0x3b')],'value':_0x592041[_0x563829[_0x41d4('0x40')][_0x41d4('0x13')][_0x41d4('0x38')]()]['toString']()});}});}return _0x52ba24;}exports[_0x41d4('0x41')]=function(_0x34783a,_0x1cc2d1,_0x150cc7,_0x4bc5c1,_0x2ce09b,_0x34d2ee){var _0x5663f1,_0x331062;_0x34d2ee[_0x41d4('0x19')]=intUtil[_0x41d4('0x42')](_0x34d2ee['remoteUri']);_0x34d2ee[_0x41d4('0x43')]=intUtil['stripTrailingSlash'](_0x34d2ee[_0x41d4('0x43')]);if(_0x2ce09b&&_0x2ce09b[_0x41d4('0x44')]){logger[_0x41d4('0xa')]('[QUEUE]',_0x41d4('0x45'));_0x1cc2d1[_0x41d4('0x46')]=util[_0x41d4('0xc')](_0x41d4('0x47'),_0x34d2ee[_0x41d4('0x43')],_0x1cc2d1[_0x41d4('0x48')],md5(_0x1cc2d1[_0x41d4('0x48')]));}else{_0x1cc2d1[_0x41d4('0x46')]='';}headers[_0x41d4('0x49')]=getAuth(_0x34d2ee);return getUser(_0x34d2ee,_0x4bc5c1[_0x41d4('0x4a')])[_0x41d4('0x1a')](function(_0x32c9ca){_0x5663f1=_0x32c9ca;logger['info'](_0x41d4('0x4b'),_0x5663f1['id']);return getEndUser(_0x34d2ee,_0x1cc2d1[_0x41d4('0xe')],_0x1cc2d1['calleridnum']);})[_0x41d4('0x1a')](function(_0x1a3149){_0x331062=_0x1a3149;logger[_0x41d4('0xa')](_0x41d4('0x4c'),_0x331062['id']);return getTicket(_0x34d2ee,_0x5663f1,_0x331062,_0x150cc7,_0x1cc2d1);})[_0x41d4('0x1a')](function(_0xf585a9){if(_0xf585a9&&_0xf585a9['id']){logger[_0x41d4('0xa')](_0x41d4('0x1b'));logger[_0x41d4('0xa')](_0x41d4('0x4d'),_0xf585a9['id']);logger['info'](_0x41d4('0x4e'),_0x41d4('0x4f'));emit(util[_0x41d4('0xc')](_0x41d4('0x50'),_0x4bc5c1['name']),_0x41d4('0x51'),{'uri':util[_0x41d4('0xc')]('%s/helpdesk/tickets/%d',_0x34d2ee[_0x41d4('0x19')],_0xf585a9['id'])});}})[_0x41d4('0x52')](function(_0x1440ff){logger['error'](_0x41d4('0x4e'),JSON['stringify'](_0x1440ff));});};exports['outbound']=function(_0x1197ad,_0x3099b6,_0x1e8ebf,_0x55272b,_0x2f9463,_0x5933df,_0x3f1fa4){var _0x2e930e,_0x442823;_0x5933df[_0x41d4('0x19')]=intUtil[_0x41d4('0x42')](_0x5933df['remoteUri']);_0x5933df[_0x41d4('0x43')]=intUtil[_0x41d4('0x42')](_0x5933df[_0x41d4('0x43')]);if(_0x3f1fa4&&_0x3f1fa4['recordingFormat']&&_0x3f1fa4[_0x41d4('0x53')]!==_0x41d4('0x54')){logger['info'](_0x41d4('0x55'),_0x41d4('0x45'));_0x3099b6[_0x41d4('0x46')]=util[_0x41d4('0xc')](_0x41d4('0x47'),_0x5933df[_0x41d4('0x43')],_0x3099b6[_0x41d4('0x48')],md5(_0x3099b6[_0x41d4('0x48')]));}headers['Authorization']=getAuth(_0x5933df);return getUser(_0x5933df,_0x55272b[_0x41d4('0x4a')])['then'](function(_0x3f42fe){_0x2e930e=_0x3f42fe;logger['info'](_0x41d4('0x4b'),_0x2e930e['id']);return getEndUser(_0x5933df,_0x3099b6['destcalleridname'],_0x3099b6['destcalleridnum']);})[_0x41d4('0x1a')](function(_0x1cde49){_0x442823=_0x1cde49;logger[_0x41d4('0xa')](_0x41d4('0x4c'),_0x442823['id']);return getTicket(_0x5933df,_0x2e930e,_0x442823,_0x1e8ebf,_0x3099b6);})[_0x41d4('0x1a')](function(_0x378b89){if(_0x378b89&&_0x378b89['id']){logger[_0x41d4('0xa')](_0x41d4('0x1b'));logger[_0x41d4('0xa')](_0x41d4('0x4d'),_0x378b89['id']);logger['info'](_0x41d4('0x55'),_0x41d4('0x4f'));emit(util[_0x41d4('0xc')]('user:%s',_0x55272b['name']),'trigger:browser:url',{'uri':util[_0x41d4('0xc')](_0x41d4('0x56'),_0x5933df[_0x41d4('0x19')],_0x378b89['id'])});}})[_0x41d4('0x52')](function(_0x39999d){logger['error']('[OUTBOUND]',JSON[_0x41d4('0x2f')](_0x39999d));});};exports['unmanaged']=function(_0x2c3dfe,_0x4bd951,_0x25eb07,_0x147f8d,_0x46e8b3,_0xf5c0a6){var _0x4af0c1,_0x1416fa;_0xf5c0a6[_0x41d4('0x19')]=intUtil[_0x41d4('0x42')](_0xf5c0a6[_0x41d4('0x19')]);_0xf5c0a6[_0x41d4('0x43')]=intUtil[_0x41d4('0x42')](_0xf5c0a6[_0x41d4('0x43')]);if(_0x46e8b3&&_0x46e8b3[_0x41d4('0x44')]){logger[_0x41d4('0xa')]('['+_0x4bd951[_0x41d4('0x57')][_0x41d4('0x58')]()+']',_0x41d4('0x45'));_0x4bd951[_0x41d4('0x46')]=util['format'](_0x41d4('0x47'),_0xf5c0a6[_0x41d4('0x43')],_0x4bd951[_0x41d4('0x48')],md5(_0x4bd951[_0x41d4('0x48')]));}else{_0x4bd951[_0x41d4('0x46')]='';}headers[_0x41d4('0x49')]=getAuth(_0xf5c0a6);return getUser(_0xf5c0a6,'')[_0x41d4('0x1a')](function(_0x525c38){_0x4af0c1=_0x525c38;logger[_0x41d4('0xa')](_0x41d4('0x4b'),_0x4af0c1['id']);return getEndUser(_0xf5c0a6,_0x4bd951[_0x41d4('0xe')],_0x4bd951[_0x41d4('0xf')]);})[_0x41d4('0x1a')](function(_0x15b183){_0x1416fa=_0x15b183;logger[_0x41d4('0xa')](_0x41d4('0x4c'),_0x1416fa['id']);return getTicket(_0xf5c0a6,_0x4af0c1,_0x1416fa,_0x25eb07,_0x4bd951);})[_0x41d4('0x1a')](function(_0x1150f5){if(_0x1150f5){logger[_0x41d4('0xa')](_0x41d4('0x1b'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x1150f5['id']);}})[_0x41d4('0x52')](function(_0x7d053a){logger['error']('['+_0x4bd951['lastevent'][_0x41d4('0x58')]()+']',JSON['stringify'](_0x7d053a));});};
\ No newline at end of file
+var _0xe6d8=['mapValues','keyBy','custom_fields','%s/api/v2/tickets','then','Ticket\x20created!','remoteUri','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','length','Enduser\x20found!','%s/api/v2/contacts','POST','Enduser\x20created.','apiKey','toString','[HTTP]','GET','map','forEach','includes','string','picklist','nameField','toLowerCase','content','type','idField','variable','variableName','customField','Variable','name','push','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','stringify','unmanaged','The\x20Ticket\x20ID\x20is:','lastevent','lodash','request-promise','util','ioredis','./util','../../../../config/logger','freshdesk','defaults','socket.io-emitter','redis','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','Subjects','getString','Descriptions','<br>','Tags','Fields'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe6d8,0x1ba));var _0x8e6d=function(_0x492954,_0x40707c){_0x492954=_0x492954-0x0;var _0x40c5b3=_0xe6d8[_0x492954];return _0x40c5b3;};'use strict';var _=require(_0x8e6d('0x0'));var rp=require(_0x8e6d('0x1'));var md5=require('md5');var util=require(_0x8e6d('0x2'));var Redis=require(_0x8e6d('0x3'));var intUtil=require(_0x8e6d('0x4'));var config=require('../../../../config/environment');var logger=require(_0x8e6d('0x5'))(_0x8e6d('0x6'));config['redis']=_[_0x8e6d('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x8e6d('0x8'))(new Redis(config[_0x8e6d('0x9')]));var headers={'Content-Type':_0x8e6d('0xa'),'Accept':_0x8e6d('0xa')};function emit(_0x3c81ee,_0x3a31eb,_0x5c2e32){io['to'](_0x3c81ee)[_0x8e6d('0xb')](_0x3a31eb,_0x5c2e32);}function getTicket(_0x975ecd,_0x1532f0,_0x71653d,_0x200fcf,_0x3c80ea){logger[_0x8e6d('0xc')]('Creating\x20new\x20ticket...');var _0x2d98f4=_[_0x8e6d('0xd')]({'responder_id':_0x1532f0['id'],'requester_id':_0x71653d['id'],'name':util[_0x8e6d('0xe')](_0x8e6d('0xf'),_0x3c80ea[_0x8e6d('0x10')]),'phone':_0x3c80ea['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x200fcf[_0x8e6d('0x11')],_0x3c80ea,'\x20'),'description':intUtil[_0x8e6d('0x12')](_0x200fcf[_0x8e6d('0x13')],_0x3c80ea,_0x8e6d('0x14')),'tags':getTags(_0x200fcf[_0x8e6d('0x15')],'name')},getCustomFields(_0x200fcf[_0x8e6d('0x16')],_0x3c80ea));_0x2d98f4['custom_fields']=_[_0x8e6d('0x17')](_[_0x8e6d('0x18')](_0x2d98f4[_0x8e6d('0x19')],'id'),'value');return request({'uri':util['format'](_0x8e6d('0x1a'),_0x975ecd['remoteUri']),'method':'POST','body':_0x2d98f4})[_0x8e6d('0x1b')](function(_0x1ba980){logger['info'](_0x8e6d('0x1c'));return _0x1ba980;});}function getUser(_0x42e87b,_0x31cb36){if(intUtil['validateEmail'](_0x31cb36)){return request({'uri':util[_0x8e6d('0xe')]('%s/api/v2/agents',_0x42e87b[_0x8e6d('0x1d')]),'qs':{'email':_0x31cb36}})['then'](function(_0x2abb3f){if(_0x2abb3f['length']){logger[_0x8e6d('0xc')](_0x8e6d('0x1e'));return _[_0x8e6d('0x1f')](_0x2abb3f,function(_0x2abfeb){return _0x2abfeb[_0x8e6d('0x20')][_0x8e6d('0x21')]===_0x31cb36;});}else{logger[_0x8e6d('0xc')](_0x8e6d('0x22'));return request({'uri':util[_0x8e6d('0xe')](_0x8e6d('0x23'),_0x42e87b['remoteUri'])})[_0x8e6d('0x1b')](function(_0x3f9b07){logger['info'](_0x8e6d('0x24'));return _0x3f9b07;});}});}else{logger['info'](_0x8e6d('0x25'));return request({'uri':util['format'](_0x8e6d('0x23'),_0x42e87b[_0x8e6d('0x1d')])})['then'](function(_0x825e2e){logger[_0x8e6d('0xc')](_0x8e6d('0x24'));return _0x825e2e;});}}function getEndUser(_0x279550,_0x1bb583,_0x572644){logger[_0x8e6d('0xc')](_0x8e6d('0x26'),_0x572644);return request({'uri':util[_0x8e6d('0xe')]('%s/api/v2/contacts',_0x279550[_0x8e6d('0x1d')]),'qs':{'phone':_0x572644}})['then'](function(_0x510493){if(_0x510493[_0x8e6d('0x27')]){logger['info'](_0x8e6d('0x28'));return _['find'](_0x510493,{'phone':_0x572644});}else{logger[_0x8e6d('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x8e6d('0xe')](_0x8e6d('0x29'),_0x279550[_0x8e6d('0x1d')]),'method':_0x8e6d('0x2a'),'body':{'name':_0x1bb583,'phone':_0x572644}})[_0x8e6d('0x1b')](function(_0x6e9c13){logger[_0x8e6d('0xc')](_0x8e6d('0x2b'));return _0x6e9c13;});}});}function getAuth(_0x42bef8){return util[_0x8e6d('0xe')]('Basic\x20%s',new Buffer(_0x42bef8[_0x8e6d('0x2c')]+':X')[_0x8e6d('0x2d')]('base64'));}function request(_0x3b53ce){logger['debug'](_0x8e6d('0x2e'),JSON['stringify'](_0x3b53ce));return rp(_[_0x8e6d('0x7')](_0x3b53ce,{'method':_0x8e6d('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x5d14d8,_0x131f95){var _0x156412=[];if(_0x5d14d8&&_0x5d14d8[_0x8e6d('0x27')]>0x0){_0x156412=_[_0x8e6d('0x30')](_0x5d14d8,_0x131f95);}return _0x156412;}function getCustomFields(_0x1a810e,_0x4e919c){var _0x10f874=[];var _0xfc6a55={'custom_fields':[]};if(_0x1a810e[_0x8e6d('0x27')]>0x0){_[_0x8e6d('0x31')](_0x1a810e,function(_0x13e435){if(_[_0x8e6d('0x32')]([_0x8e6d('0x33'),_0x8e6d('0x34')],_0x13e435['type'])&&_0x13e435[_0x8e6d('0x35')]&&!_0x13e435['customField']){_0xfc6a55[_0x13e435['nameField'][_0x8e6d('0x36')]()]=_0x13e435[_0x8e6d('0x37')][_0x8e6d('0x2d')]();}else if(_[_0x8e6d('0x32')]([_0x8e6d('0x33'),_0x8e6d('0x34')],_0x13e435[_0x8e6d('0x38')])&&_0x13e435[_0x8e6d('0x39')]&&_0x13e435['customField']){_0xfc6a55[_0x8e6d('0x19')]['push']({'id':_0x13e435['idField'],'value':_0x13e435[_0x8e6d('0x37')][_0x8e6d('0x2d')]()});}else if(_0x13e435[_0x8e6d('0x38')]===_0x8e6d('0x3a')&&_0x13e435[_0x8e6d('0x3b')]&&_0x13e435[_0x8e6d('0x39')]&&_0x13e435[_0x8e6d('0x3c')]){_0x4e919c[_0x13e435['variableName']]&&_0xfc6a55[_0x8e6d('0x19')]['push']({'id':_0x13e435['idField'],'value':_0x4e919c[_0x13e435[_0x8e6d('0x3b')]][_0x8e6d('0x2d')]()});}else if(_0x13e435[_0x8e6d('0x38')]==='customVariable'&&_0x13e435['Variable']&&_0x13e435[_0x8e6d('0x3d')][_0x8e6d('0x3e')]&&_0x13e435['idField']&&_0x13e435[_0x8e6d('0x3c')]){_0x4e919c[_0x13e435['Variable'][_0x8e6d('0x3e')][_0x8e6d('0x36')]()]&&_0xfc6a55[_0x8e6d('0x19')][_0x8e6d('0x3f')]({'id':_0x13e435[_0x8e6d('0x39')],'value':_0x4e919c[_0x13e435[_0x8e6d('0x3d')][_0x8e6d('0x3e')]['toLowerCase']()][_0x8e6d('0x2d')]()});}});}return _0xfc6a55;}exports[_0x8e6d('0x40')]=function(_0x1164a2,_0x5ba82e,_0x1e930d,_0x50e2a9,_0x3951f0,_0xa8f490){var _0x22c513,_0x1ec4aa;_0xa8f490[_0x8e6d('0x1d')]=intUtil[_0x8e6d('0x41')](_0xa8f490['remoteUri']);_0xa8f490[_0x8e6d('0x42')]=intUtil['stripTrailingSlash'](_0xa8f490[_0x8e6d('0x42')]);if(_0x3951f0&&_0x3951f0[_0x8e6d('0x43')]){logger[_0x8e6d('0xc')](_0x8e6d('0x44'),_0x8e6d('0x45'));_0x5ba82e[_0x8e6d('0x46')]=util[_0x8e6d('0xe')](_0x8e6d('0x47'),_0xa8f490[_0x8e6d('0x42')],_0x5ba82e[_0x8e6d('0x48')],md5(_0x5ba82e[_0x8e6d('0x48')]));}else{_0x5ba82e['recordingURL']='';}headers[_0x8e6d('0x49')]=getAuth(_0xa8f490);return getUser(_0xa8f490,_0x50e2a9[_0x8e6d('0x21')])[_0x8e6d('0x1b')](function(_0x4c42d7){_0x22c513=_0x4c42d7;logger['info']('The\x20User\x20ID\x20is:',_0x22c513['id']);return getEndUser(_0xa8f490,_0x5ba82e[_0x8e6d('0x10')],_0x5ba82e[_0x8e6d('0x4a')]);})['then'](function(_0x21cf54){_0x1ec4aa=_0x21cf54;logger[_0x8e6d('0xc')](_0x8e6d('0x4b'),_0x1ec4aa['id']);return getTicket(_0xa8f490,_0x22c513,_0x1ec4aa,_0x1e930d,_0x5ba82e);})[_0x8e6d('0x1b')](function(_0x2c48f5){if(_0x2c48f5&&_0x2c48f5['id']){logger[_0x8e6d('0xc')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x2c48f5['id']);logger['info'](_0x8e6d('0x44'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x8e6d('0xe')]('user:%s',_0x50e2a9[_0x8e6d('0x3e')]),_0x8e6d('0x4c'),{'uri':util[_0x8e6d('0xe')](_0x8e6d('0x4d'),_0xa8f490[_0x8e6d('0x1d')],_0x2c48f5['id'])});}})['catch'](function(_0x14d458){logger[_0x8e6d('0x4e')](_0x8e6d('0x44'),JSON['stringify'](_0x14d458));});};exports[_0x8e6d('0x4f')]=function(_0x22017c,_0x50ad9b,_0x4fd89e,_0x38e2b8,_0x4678c6,_0xe58d24,_0x37342b){var _0x28c9e3,_0x1e0a59;_0xe58d24[_0x8e6d('0x1d')]=intUtil['stripTrailingSlash'](_0xe58d24[_0x8e6d('0x1d')]);_0xe58d24[_0x8e6d('0x42')]=intUtil[_0x8e6d('0x41')](_0xe58d24[_0x8e6d('0x42')]);if(_0x37342b&&_0x37342b[_0x8e6d('0x50')]&&_0x37342b[_0x8e6d('0x50')]!==_0x8e6d('0x51')){logger[_0x8e6d('0xc')](_0x8e6d('0x52'),_0x8e6d('0x45'));_0x50ad9b[_0x8e6d('0x46')]=util[_0x8e6d('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xe58d24[_0x8e6d('0x42')],_0x50ad9b['uniqueid'],md5(_0x50ad9b['uniqueid']));}headers[_0x8e6d('0x49')]=getAuth(_0xe58d24);return getUser(_0xe58d24,_0x38e2b8[_0x8e6d('0x21')])['then'](function(_0xecade1){_0x28c9e3=_0xecade1;logger[_0x8e6d('0xc')](_0x8e6d('0x53'),_0x28c9e3['id']);return getEndUser(_0xe58d24,_0x50ad9b[_0x8e6d('0x54')],_0x50ad9b[_0x8e6d('0x55')]);})[_0x8e6d('0x1b')](function(_0x1688bc){_0x1e0a59=_0x1688bc;logger['info'](_0x8e6d('0x4b'),_0x1e0a59['id']);return getTicket(_0xe58d24,_0x28c9e3,_0x1e0a59,_0x4fd89e,_0x50ad9b);})[_0x8e6d('0x1b')](function(_0x2d573a){if(_0x2d573a&&_0x2d573a['id']){logger[_0x8e6d('0xc')](_0x8e6d('0x1c'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x2d573a['id']);logger['info'](_0x8e6d('0x52'),_0x8e6d('0x56'));emit(util[_0x8e6d('0xe')](_0x8e6d('0x57'),_0x38e2b8[_0x8e6d('0x3e')]),_0x8e6d('0x4c'),{'uri':util['format'](_0x8e6d('0x4d'),_0xe58d24[_0x8e6d('0x1d')],_0x2d573a['id'])});}})[_0x8e6d('0x58')](function(_0xc00a5d){logger['error'](_0x8e6d('0x52'),JSON[_0x8e6d('0x59')](_0xc00a5d));});};exports[_0x8e6d('0x5a')]=function(_0x4da47f,_0x12bf4f,_0x1a2afe,_0x2a7bcc,_0x1fc827,_0x5d40d6){var _0x3e2f90,_0x227eea;_0x5d40d6[_0x8e6d('0x1d')]=intUtil[_0x8e6d('0x41')](_0x5d40d6[_0x8e6d('0x1d')]);_0x5d40d6['serverUrl']=intUtil['stripTrailingSlash'](_0x5d40d6[_0x8e6d('0x42')]);if(_0x1fc827&&_0x1fc827[_0x8e6d('0x43')]){logger[_0x8e6d('0xc')]('['+_0x12bf4f['lastevent']['toUpperCase']()+']',_0x8e6d('0x45'));_0x12bf4f[_0x8e6d('0x46')]=util[_0x8e6d('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5d40d6['serverUrl'],_0x12bf4f['uniqueid'],md5(_0x12bf4f['uniqueid']));}else{_0x12bf4f[_0x8e6d('0x46')]='';}headers[_0x8e6d('0x49')]=getAuth(_0x5d40d6);return getUser(_0x5d40d6,'')['then'](function(_0x5631a9){_0x3e2f90=_0x5631a9;logger[_0x8e6d('0xc')](_0x8e6d('0x53'),_0x3e2f90['id']);return getEndUser(_0x5d40d6,_0x12bf4f['calleridname'],_0x12bf4f['calleridnum']);})[_0x8e6d('0x1b')](function(_0x2ae2f1){_0x227eea=_0x2ae2f1;logger[_0x8e6d('0xc')](_0x8e6d('0x4b'),_0x227eea['id']);return getTicket(_0x5d40d6,_0x3e2f90,_0x227eea,_0x1a2afe,_0x12bf4f);})['then'](function(_0x1114ca){if(_0x1114ca){logger['info']('Ticket\x20created!');logger['info'](_0x8e6d('0x5b'),_0x1114ca['id']);}})[_0x8e6d('0x58')](function(_0x3ec9c8){logger[_0x8e6d('0x4e')]('['+_0x12bf4f[_0x8e6d('0x5c')]['toUpperCase']()+']',JSON[_0x8e6d('0x59')](_0x3ec9c8));});};
\ No newline at end of file
index cf34410..7451de6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde50=['Getting\x20user\x20with\x20email','userEmail','length','userId','User\x20found:','Requested\x20Resource\x20not\x20Found','catch','message','GET','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','Contact\x20found\x20work_number:','/api/contacts','YYYY-MM-DDTHH:mm:ss','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Descriptions','Contact','add','task','ticketId','user:%s','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','callDirection','unmanaged','queue','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','inspect','lodash','md5','util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','redis','localhost','/api/selector/owners','Getting\x20admin\x20information','email','adminEmail','adminId','info','Admin\x20found:','error','toUpperCase','Getting\x20user\x20list','then','agentEmail'];(function(_0x32514b,_0x3db395){var _0x432749=function(_0x1eaf0c){while(--_0x1eaf0c){_0x32514b['push'](_0x32514b['shift']());}};_0x432749(++_0x3db395);}(_0xde50,0x173));var _0x0de5=function(_0x8258bb,_0x288f24){_0x8258bb=_0x8258bb-0x0;var _0x577701=_0xde50[_0x8258bb];return _0x577701;};'use strict';var _=require(_0x0de5('0x0'));var rp=require('request-promise');var md5=require(_0x0de5('0x1'));var util=require(_0x0de5('0x2'));var moment=require(_0x0de5('0x3'));var Promise=require(_0x0de5('0x4'));var Redis=require('ioredis');var intUtil=require(_0x0de5('0x5'));var config=require(_0x0de5('0x6'));var logger=require(_0x0de5('0x7'))(_0x0de5('0x8'));config['redis']=_[_0x0de5('0x9')](config[_0x0de5('0xa')],{'host':_0x0de5('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0de5('0xa')]));function getAdminId(_0x5899c3,_0x377e71,_0x2309cc,_0x4548e5){return new Promise(function(_0x240260,_0xef7c2a){var _0x59bdcb=![];var _0x348e71={'method':'GET','uri':_0x4548e5+_0x0de5('0xc'),'json':!![]};_0x348e71['headers']=_0x2309cc;logger['info'](_0x0de5('0xd'));return rp(_0x348e71)['then'](function(_0x587ac7){if(_0x587ac7){var _0x41c5b0=_0x587ac7['users'];var _0x1e01aa=null;for(_0x1e01aa=0x0;_0x1e01aa<_0x41c5b0['length'];_0x1e01aa++){if(_0x41c5b0[_0x1e01aa][_0x0de5('0xe')]===_0x5899c3[_0x0de5('0xf')]){_0x5899c3[_0x0de5('0x10')]=_0x41c5b0[_0x1e01aa]['id'];_0x59bdcb=!![];}}if(_0x59bdcb){logger[_0x0de5('0x11')](_0x0de5('0x12'),_0x5899c3[_0x0de5('0x10')]);_0x240260(_0x5899c3);}else{_0xef7c2a({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0xef7c2a({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x2a632f){logger[_0x0de5('0x13')]('['+[_0x377e71[_0x0de5('0x14')]()]+']',_0x2a632f['message']);_0xef7c2a(_0x2a632f);});});}function getUser(_0x3dc6d6,_0x3bd360,_0x8778f1){return function(_0x1d1860){return new Promise(function(_0x57efed,_0x1d408d){var _0x5b0cc5={'method':'GET','uri':_0x8778f1+_0x0de5('0xc'),'json':!![]};_0x5b0cc5['headers']=_0x3bd360;logger[_0x0de5('0x11')](_0x0de5('0x15'));return rp(_0x5b0cc5)[_0x0de5('0x16')](function(_0x31abf0){if(_0x31abf0){var _0x3e3662=_0x31abf0['users'];var _0x4e96f4=![];var _0x3cd6ef=null;if(_0x1d1860[_0x0de5('0x17')]!==null){logger[_0x0de5('0x11')](_0x0de5('0x18'),_0x1d1860[_0x0de5('0x17')]);_0x1d1860[_0x0de5('0x19')]=_0x1d1860[_0x0de5('0x17')];for(_0x3cd6ef=0x0;_0x3cd6ef<_0x3e3662[_0x0de5('0x1a')];_0x3cd6ef++){if(_0x3e3662[_0x3cd6ef][_0x0de5('0xe')]===_0x1d1860[_0x0de5('0x17')]){_0x4e96f4=!![];_0x1d1860[_0x0de5('0x1b')]=_0x3e3662[_0x3cd6ef]['id'];logger[_0x0de5('0x11')](_0x0de5('0x1c'),_0x1d1860[_0x0de5('0x1b')]);}}}if(!_0x4e96f4){logger[_0x0de5('0x11')]('Admin\x20selected');_0x1d1860[_0x0de5('0x19')]=_0x1d1860[_0x0de5('0xf')];_0x1d1860[_0x0de5('0x1b')]=_0x1d1860['adminId'];_0x4e96f4=!![];}if(_0x4e96f4){_0x57efed(_0x1d1860);}else{_0x1d408d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x1d408d({'statusCode':0x194,'message':_0x0de5('0x1d')});}})[_0x0de5('0x1e')](function(_0x41496d){logger[_0x0de5('0x13')]('['+[_0x3dc6d6[_0x0de5('0x14')]()]+']',_0x41496d[_0x0de5('0x1f')]);_0x1d408d(_0x41496d);});});};}function searchContact(_0x49c9d7,_0x4398e3,_0x1b0ab1,_0x59ae3c){return new Promise(function(_0x59d241,_0x2607d8){var _0xd844ae={'method':_0x0de5('0x20'),'headers':_0x4398e3,'uri':_0x49c9d7+'/api/lookup?q='+_0x59ae3c+_0x0de5('0x21')+_0x1b0ab1+'&entities=contact','json':!![]};rp(_0xd844ae)[_0x0de5('0x16')](function(_0x18c875){var _0x1a2577=_[_0x0de5('0x22')](_0x18c875[_0x0de5('0x23')]['contacts'],[_0x1b0ab1,_0x59ae3c]);_0x59d241(_0x1a2577);})['catch'](function(_0x125a1e){_0x2607d8(_0x125a1e);});});}function getEndUser(_0x539f17,_0x2b6c1f,_0x2946dd){return function(_0x43738a){return new Promise(function(_0x4ff458,_0x4bf0e5){logger[_0x0de5('0x11')](util[_0x0de5('0x24')](_0x0de5('0x25'),_0x43738a[_0x0de5('0x26')]));searchContact(_0x2946dd,_0x2b6c1f,_0x0de5('0x27'),_0x43738a[_0x0de5('0x26')])[_0x0de5('0x16')](function(_0x421c71){if(_0x421c71){_0x43738a['endUserId']=_0x421c71['id'];logger[_0x0de5('0x11')](_0x0de5('0x28'),_0x43738a[_0x0de5('0x29')]);return _0x4ff458(_0x43738a);}searchContact(_0x2946dd,_0x2b6c1f,'work_number',_0x43738a[_0x0de5('0x26')])[_0x0de5('0x16')](function(_0x428e6f){if(_0x428e6f){_0x43738a[_0x0de5('0x29')]=_0x428e6f['id'];logger[_0x0de5('0x11')](_0x0de5('0x2a'),_0x43738a['endUserId']);return _0x4ff458(_0x43738a);}createEndUser(_0x43738a,_0x539f17,_0x2b6c1f,_0x2946dd)[_0x0de5('0x16')](function(_0x28fccf){logger['info']('Contact\x20created:',_0x28fccf[_0x0de5('0x29')]);return _0x4ff458(_0x28fccf);});});})[_0x0de5('0x1e')](function(_0x44d6e7){_0x4bf0e5(_0x44d6e7);});});};}function createEndUser(_0x599672,_0x19d7b6,_0x46506d,_0x199e38){return new Promise(function(_0x28690d,_0xbd45a2){var _0x16b595=moment();var _0x3e6627={'method':'POST','uri':_0x199e38+_0x0de5('0x2b'),'body':{'contact':{'last_name':_0x599672['contactNumber'],'work_number':_0x599672['contactNumber'],'mobile_number':_0x599672['contactNumber'],'owner_id':_0x599672[_0x0de5('0x1b')],'created_at':_0x16b595['format'](_0x0de5('0x2c'))}},'json':!![]};_0x3e6627[_0x0de5('0x2d')]=_0x46506d;logger[_0x0de5('0x11')](_0x0de5('0x2e'));return rp(_0x3e6627)[_0x0de5('0x16')](function(_0xe2de49){_0x599672[_0x0de5('0x29')]=_0xe2de49[_0x0de5('0x2f')]['id'];_0x28690d(_0x599672);})[_0x0de5('0x1e')](function(_0x7fa31b){logger[_0x0de5('0x13')]('['+[_0x19d7b6[_0x0de5('0x14')]()]+']',_0x7fa31b[_0x0de5('0x1f')]);_0xbd45a2(_0x7fa31b['message']);});});}function getTicket(_0x1c3532,_0x11fd48,_0x232100,_0x28786e,_0x50120c){return function(_0x2f1a29){logger['info'](_0x0de5('0x30'));return new Promise(function(_0x1a6c4f,_0x284427){var _0x43ba27=moment();var _0x2c0247={'method':_0x0de5('0x31'),'uri':_0x232100+_0x0de5('0x32'),'body':{'title':intUtil[_0x0de5('0x33')](_0x28786e[_0x0de5('0x34')],_0x50120c,'\x20'),'description':intUtil[_0x0de5('0x33')](_0x28786e[_0x0de5('0x35')],_0x50120c,'\x0a'),'owner_id':_0x2f1a29[_0x0de5('0x1b')],'creater_id':_0x2f1a29[_0x0de5('0x10')],'targetable_id':_0x2f1a29[_0x0de5('0x29')],'targetable_type':_0x0de5('0x36'),'created_at':_0x43ba27[_0x0de5('0x24')](_0x0de5('0x2c')),'due_date':_0x43ba27[_0x0de5('0x37')](0x1e,'m')[_0x0de5('0x24')](_0x0de5('0x2c'))},'json':!![]};_0x2c0247['headers']=_0x11fd48;return rp(_0x2c0247)[_0x0de5('0x16')](function(_0xfd1c2b){_0x2f1a29['ticketId']=_0xfd1c2b[_0x0de5('0x38')]['id'];logger[_0x0de5('0x11')]('Task\x20created:',_0x2f1a29[_0x0de5('0x39')]);_0x1a6c4f(_0x2f1a29);})[_0x0de5('0x1e')](function(_0x42decc){logger[_0x0de5('0x13')]('['+[_0x1c3532['toUpperCase']()]+']',_0x42decc['message']);_0x284427(_0x42decc[_0x0de5('0x1f')]);});});};}function emit(_0x4de319,_0x283fca,_0x4e2168){var _0x922cd1={'uri':_0x4de319+'/contacts/'+_0x4e2168};io['to'](util[_0x0de5('0x24')](_0x0de5('0x3a'),_0x283fca))['emit'](_0x0de5('0x3b'),_0x922cd1);}exports['cs']=function(_0x1a37d6,_0x33dcb9,_0x22acb9,_0x667278,_0x59ffc1,_0x2b1aec,_0x21ea59,_0x35449f){var _0x389010={};var _0x52b685={'Authorization':'Token\x20token='+_0x2b1aec[_0x0de5('0x3c')]};_0x2b1aec[_0x0de5('0x3d')]=intUtil[_0x0de5('0x3e')](_0x2b1aec[_0x0de5('0x3d')]);_0x2b1aec['serverUrl']=intUtil['stripTrailingSlash'](_0x2b1aec[_0x0de5('0x3f')]);var _0x481b82=_0x2b1aec['remoteUri'];_0x389010[_0x0de5('0xf')]=_0x2b1aec['username'];_0x389010['contactNumber']=_0x35449f[_0x0de5('0x40')]()==='outbound'?_0x33dcb9['destcalleridnum']:_0x33dcb9['calleridnum'];_0x389010[_0x0de5('0x41')]=_0x35449f==='queue'||_0x35449f===_0x0de5('0x42')?_0x0de5('0x43'):_0x0de5('0x44');if(_0x667278){_0x389010[_0x0de5('0x17')]=_0x667278[_0x0de5('0xe')];}var _0x192dae=util['format'](_0x0de5('0x45'),_0x2b1aec['serverUrl'],_0x33dcb9['uniqueid'],md5(_0x33dcb9[_0x0de5('0x46')]));if(_0x59ffc1&&_0x59ffc1[_0x0de5('0x47')]){logger[_0x0de5('0x11')](_0x0de5('0x48'),'Recording\x20is\x20enabled!');_0x33dcb9[_0x0de5('0x49')]=_0x192dae;}else if(_0x21ea59&&_0x21ea59[_0x0de5('0x4a')]&&_0x21ea59['recordingFormat']!=='none'){logger[_0x0de5('0x11')]('[OUTBOUND]',_0x0de5('0x4b'));_0x33dcb9[_0x0de5('0x49')]=_0x192dae;}else{_0x33dcb9[_0x0de5('0x49')]='';}return getAdminId(_0x389010,_0x35449f,_0x52b685,_0x481b82)[_0x0de5('0x16')](getUser(_0x35449f,_0x52b685,_0x481b82))[_0x0de5('0x16')](getEndUser(_0x35449f,_0x52b685,_0x481b82))[_0x0de5('0x16')](getTicket(_0x35449f,_0x52b685,_0x481b82,_0x22acb9,_0x33dcb9))[_0x0de5('0x16')](function(_0x1d6ab5){logger[_0x0de5('0x11')](util[_0x0de5('0x24')](_0x0de5('0x4c'),_0x1d6ab5[_0x0de5('0x39')]));if(_0x35449f!==_0x0de5('0x42')){logger['info']('['+[_0x35449f[_0x0de5('0x14')]()]+']',_0x0de5('0x4d'));emit(_0x481b82,_0x667278['name'],_0x1d6ab5[_0x0de5('0x29')]);}})['catch'](function(_0x3cf825){logger['error']('['+[_0x35449f[_0x0de5('0x14')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x0de5('0x4e')](_0x3cf825,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xf245=['YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','getString','Subjects','Contact','add','ticketId','task','Task\x20created:','/contacts/','user:%s','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','username','toLowerCase','outbound','calleridnum','queue','uniqueid','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','md5','util','moment','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','email','adminEmail','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','error','message','Getting\x20user\x20with\x20email','userEmail','agentEmail','userId','User\x20found:','Admin\x20selected','catch','toUpperCase','/api/lookup?q=','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','/api/contacts','contactNumber'];(function(_0xd8c941,_0x750f35){var _0xf95f50=function(_0x193c42){while(--_0x193c42){_0xd8c941['push'](_0xd8c941['shift']());}};_0xf95f50(++_0x750f35);}(_0xf245,0x10d));var _0x5f24=function(_0x5ef161,_0x27d16c){_0x5ef161=_0x5ef161-0x0;var _0x1c6e9e=_0xf245[_0x5ef161];return _0x1c6e9e;};'use strict';var _=require(_0x5f24('0x0'));var rp=require(_0x5f24('0x1'));var md5=require(_0x5f24('0x2'));var util=require(_0x5f24('0x3'));var moment=require(_0x5f24('0x4'));var Promise=require('bluebird');var Redis=require(_0x5f24('0x5'));var intUtil=require('./util');var config=require(_0x5f24('0x6'));var logger=require(_0x5f24('0x7'))('freshsales');config['redis']=_[_0x5f24('0x8')](config[_0x5f24('0x9')],{'host':_0x5f24('0xa'),'port':0x18eb});var io=require(_0x5f24('0xb'))(new Redis(config[_0x5f24('0x9')]));function getAdminId(_0x2b2103,_0xc4927d,_0x44bea5,_0x28aded){return new Promise(function(_0x2183ac,_0x29c764){var _0x37f9bf=![];var _0x11ec3d={'method':_0x5f24('0xc'),'uri':_0x28aded+_0x5f24('0xd'),'json':!![]};_0x11ec3d[_0x5f24('0xe')]=_0x44bea5;logger[_0x5f24('0xf')](_0x5f24('0x10'));return rp(_0x11ec3d)[_0x5f24('0x11')](function(_0xf4a27a){if(_0xf4a27a){var _0x5bb7f9=_0xf4a27a[_0x5f24('0x12')];var _0x167a10=null;for(_0x167a10=0x0;_0x167a10<_0x5bb7f9['length'];_0x167a10++){if(_0x5bb7f9[_0x167a10][_0x5f24('0x13')]===_0x2b2103[_0x5f24('0x14')]){_0x2b2103['adminId']=_0x5bb7f9[_0x167a10]['id'];_0x37f9bf=!![];}}if(_0x37f9bf){logger['info'](_0x5f24('0x15'),_0x2b2103[_0x5f24('0x16')]);_0x2183ac(_0x2b2103);}else{_0x29c764({'statusCode':0x194,'message':_0x5f24('0x17')});}}else{_0x29c764({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x1e7f4a){logger[_0x5f24('0x18')]('['+[_0xc4927d['toUpperCase']()]+']',_0x1e7f4a[_0x5f24('0x19')]);_0x29c764(_0x1e7f4a);});});}function getUser(_0x4ea4e1,_0x2a4e40,_0x46bc49){return function(_0x30fc61){return new Promise(function(_0x8bc938,_0x26cc00){var _0x355240={'method':_0x5f24('0xc'),'uri':_0x46bc49+'/api/selector/owners','json':!![]};_0x355240[_0x5f24('0xe')]=_0x2a4e40;logger[_0x5f24('0xf')]('Getting\x20user\x20list');return rp(_0x355240)[_0x5f24('0x11')](function(_0x3065db){if(_0x3065db){var _0x472e8b=_0x3065db[_0x5f24('0x12')];var _0x4babaf=![];var _0x2ab45a=null;if(_0x30fc61['agentEmail']!==null){logger[_0x5f24('0xf')](_0x5f24('0x1a'),_0x30fc61['agentEmail']);_0x30fc61[_0x5f24('0x1b')]=_0x30fc61[_0x5f24('0x1c')];for(_0x2ab45a=0x0;_0x2ab45a<_0x472e8b['length'];_0x2ab45a++){if(_0x472e8b[_0x2ab45a][_0x5f24('0x13')]===_0x30fc61[_0x5f24('0x1c')]){_0x4babaf=!![];_0x30fc61[_0x5f24('0x1d')]=_0x472e8b[_0x2ab45a]['id'];logger[_0x5f24('0xf')](_0x5f24('0x1e'),_0x30fc61['userId']);}}}if(!_0x4babaf){logger[_0x5f24('0xf')](_0x5f24('0x1f'));_0x30fc61[_0x5f24('0x1b')]=_0x30fc61[_0x5f24('0x14')];_0x30fc61[_0x5f24('0x1d')]=_0x30fc61[_0x5f24('0x16')];_0x4babaf=!![];}if(_0x4babaf){_0x8bc938(_0x30fc61);}else{_0x26cc00({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x26cc00({'statusCode':0x194,'message':_0x5f24('0x17')});}})[_0x5f24('0x20')](function(_0x4ed8f6){logger['error']('['+[_0x4ea4e1[_0x5f24('0x21')]()]+']',_0x4ed8f6[_0x5f24('0x19')]);_0x26cc00(_0x4ed8f6);});});};}function searchContact(_0x7755f1,_0x3c6567,_0x14c281,_0xd3368d){return new Promise(function(_0x54a80,_0x2cbdcf){var _0x1de732={'method':_0x5f24('0xc'),'headers':_0x3c6567,'uri':_0x7755f1+_0x5f24('0x22')+_0xd3368d+_0x5f24('0x23')+_0x14c281+'&entities=contact','json':!![]};rp(_0x1de732)['then'](function(_0x1630d8){var _0x5e1e56=_[_0x5f24('0x24')](_0x1630d8[_0x5f24('0x25')][_0x5f24('0x25')],[_0x14c281,_0xd3368d]);_0x54a80(_0x5e1e56);})[_0x5f24('0x20')](function(_0x53a4cb){_0x2cbdcf(_0x53a4cb);});});}function getEndUser(_0x186000,_0x1ac910,_0x57dbac){return function(_0x291366){return new Promise(function(_0x45d745,_0x59c19e){logger[_0x5f24('0xf')](util[_0x5f24('0x26')](_0x5f24('0x27'),_0x291366['contactNumber']));searchContact(_0x57dbac,_0x1ac910,_0x5f24('0x28'),_0x291366['contactNumber'])[_0x5f24('0x11')](function(_0x4be4c5){if(_0x4be4c5){_0x291366[_0x5f24('0x29')]=_0x4be4c5['id'];logger[_0x5f24('0xf')](_0x5f24('0x2a'),_0x291366['endUserId']);return _0x45d745(_0x291366);}searchContact(_0x57dbac,_0x1ac910,_0x5f24('0x2b'),_0x291366['contactNumber'])[_0x5f24('0x11')](function(_0x5559fa){if(_0x5559fa){_0x291366[_0x5f24('0x29')]=_0x5559fa['id'];logger[_0x5f24('0xf')](_0x5f24('0x2c'),_0x291366[_0x5f24('0x29')]);return _0x45d745(_0x291366);}createEndUser(_0x291366,_0x186000,_0x1ac910,_0x57dbac)[_0x5f24('0x11')](function(_0x4daa84){logger[_0x5f24('0xf')]('Contact\x20created:',_0x4daa84[_0x5f24('0x29')]);return _0x45d745(_0x4daa84);});});})[_0x5f24('0x20')](function(_0x222bb6){_0x59c19e(_0x222bb6);});});};}function createEndUser(_0x22d522,_0x6bfedf,_0xf9b987,_0x461373){return new Promise(function(_0x2acfb7,_0x242a06){var _0x3e451a=moment();var _0x1e5a74={'method':'POST','uri':_0x461373+_0x5f24('0x2d'),'body':{'contact':{'last_name':_0x22d522['contactNumber'],'work_number':_0x22d522['contactNumber'],'mobile_number':_0x22d522[_0x5f24('0x2e')],'owner_id':_0x22d522['userId'],'created_at':_0x3e451a[_0x5f24('0x26')](_0x5f24('0x2f'))}},'json':!![]};_0x1e5a74[_0x5f24('0xe')]=_0xf9b987;logger[_0x5f24('0xf')](_0x5f24('0x30'));return rp(_0x1e5a74)[_0x5f24('0x11')](function(_0x1837fb){_0x22d522['endUserId']=_0x1837fb['contact']['id'];_0x2acfb7(_0x22d522);})[_0x5f24('0x20')](function(_0x26d185){logger[_0x5f24('0x18')]('['+[_0x6bfedf[_0x5f24('0x21')]()]+']',_0x26d185[_0x5f24('0x19')]);_0x242a06(_0x26d185['message']);});});}function getTicket(_0x19ab29,_0x22fb52,_0x47f304,_0x2597cf,_0x3f31aa){return function(_0x55b6fc){logger[_0x5f24('0xf')](_0x5f24('0x31'));return new Promise(function(_0x2d9ac9,_0x447c4c){var _0x3f930d=moment();var _0x15a189={'method':'POST','uri':_0x47f304+'/api/tasks','body':{'title':intUtil[_0x5f24('0x32')](_0x2597cf[_0x5f24('0x33')],_0x3f31aa,'\x20'),'description':intUtil['getString'](_0x2597cf['Descriptions'],_0x3f31aa,'\x0a'),'owner_id':_0x55b6fc[_0x5f24('0x1d')],'creater_id':_0x55b6fc[_0x5f24('0x16')],'targetable_id':_0x55b6fc[_0x5f24('0x29')],'targetable_type':_0x5f24('0x34'),'created_at':_0x3f930d[_0x5f24('0x26')](_0x5f24('0x2f')),'due_date':_0x3f930d[_0x5f24('0x35')](0x1e,'m')[_0x5f24('0x26')](_0x5f24('0x2f'))},'json':!![]};_0x15a189[_0x5f24('0xe')]=_0x22fb52;return rp(_0x15a189)[_0x5f24('0x11')](function(_0x808a5e){_0x55b6fc[_0x5f24('0x36')]=_0x808a5e[_0x5f24('0x37')]['id'];logger[_0x5f24('0xf')](_0x5f24('0x38'),_0x55b6fc['ticketId']);_0x2d9ac9(_0x55b6fc);})[_0x5f24('0x20')](function(_0x46b80c){logger['error']('['+[_0x19ab29['toUpperCase']()]+']',_0x46b80c[_0x5f24('0x19')]);_0x447c4c(_0x46b80c[_0x5f24('0x19')]);});});};}function emit(_0x3aa564,_0x1895a7,_0x2c740d){var _0x24b24d={'uri':_0x3aa564+_0x5f24('0x39')+_0x2c740d};io['to'](util[_0x5f24('0x26')](_0x5f24('0x3a'),_0x1895a7))['emit'](_0x5f24('0x3b'),_0x24b24d);}exports['cs']=function(_0x273ca3,_0xc25e20,_0x216476,_0x2dec22,_0x34bd52,_0x139be5,_0xece5f,_0x20ba42){var _0x1afebc={};var _0x483af0={'Authorization':_0x5f24('0x3c')+_0x139be5[_0x5f24('0x3d')]};_0x139be5['remoteUri']=intUtil['stripTrailingSlash'](_0x139be5[_0x5f24('0x3e')]);_0x139be5['serverUrl']=intUtil['stripTrailingSlash'](_0x139be5[_0x5f24('0x3f')]);var _0x5d9511=_0x139be5['remoteUri'];_0x1afebc['adminEmail']=_0x139be5[_0x5f24('0x40')];_0x1afebc[_0x5f24('0x2e')]=_0x20ba42[_0x5f24('0x41')]()===_0x5f24('0x42')?_0xc25e20['destcalleridnum']:_0xc25e20[_0x5f24('0x43')];_0x1afebc['callDirection']=_0x20ba42==='queue'||_0x20ba42==='unmanaged'?_0x5f24('0x44'):'outbound';if(_0x2dec22){_0x1afebc[_0x5f24('0x1c')]=_0x2dec22[_0x5f24('0x13')];}var _0x7554c6=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x139be5[_0x5f24('0x3f')],_0xc25e20[_0x5f24('0x45')],md5(_0xc25e20[_0x5f24('0x45')]));if(_0x34bd52&&_0x34bd52['monitor_format']){logger[_0x5f24('0xf')]('[QUEUE]',_0x5f24('0x46'));_0xc25e20[_0x5f24('0x47')]=_0x7554c6;}else if(_0xece5f&&_0xece5f[_0x5f24('0x48')]&&_0xece5f['recordingFormat']!==_0x5f24('0x49')){logger[_0x5f24('0xf')](_0x5f24('0x4a'),_0x5f24('0x46'));_0xc25e20[_0x5f24('0x47')]=_0x7554c6;}else{_0xc25e20[_0x5f24('0x47')]='';}return getAdminId(_0x1afebc,_0x20ba42,_0x483af0,_0x5d9511)[_0x5f24('0x11')](getUser(_0x20ba42,_0x483af0,_0x5d9511))[_0x5f24('0x11')](getEndUser(_0x20ba42,_0x483af0,_0x5d9511))[_0x5f24('0x11')](getTicket(_0x20ba42,_0x483af0,_0x5d9511,_0x216476,_0xc25e20))[_0x5f24('0x11')](function(_0x5d2faf){logger['info'](util[_0x5f24('0x26')](_0x5f24('0x4b'),_0x5d2faf['ticketId']));if(_0x20ba42!==_0x5f24('0x4c')){logger['info']('['+[_0x20ba42[_0x5f24('0x21')]()]+']',_0x5f24('0x4d'));emit(_0x5d9511,_0x2dec22[_0x5f24('0x4e')],_0x5d2faf['endUserId']);}})[_0x5f24('0x20')](function(_0x2b5842){logger[_0x5f24('0x18')]('['+[_0x20ba42[_0x5f24('0x21')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x2b5842,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 068c1cf..6ec90b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6719=['freshdesk','zoho','vtiger','dynamics365','freshsales','exec','data1','toLowerCase','data2','Configurations','data3','queue','outbound','log','unmanaged','desk','servicenow','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm'];(function(_0x3c852e,_0x530828){var _0x231559=function(_0x2101e5){while(--_0x2101e5){_0x3c852e['push'](_0x3c852e['shift']());}};_0x231559(++_0x530828);}(_0x6719,0xd6));var _0x9671=function(_0x13b392,_0x3481f2){_0x13b392=_0x13b392-0x0;var _0x39db24=_0x6719[_0x13b392];return _0x39db24;};'use strict';var _=require(_0x9671('0x0'));var util=require(_0x9671('0x1'));var zendesk=require(_0x9671('0x2'));var salesforce=require(_0x9671('0x3'));var sugarcrm=require(_0x9671('0x4'));var freshdesk=require(_0x9671('0x5'));var zoho=require('./zoho');var desk=require(_0x9671('0x6'));var vtiger=require(_0x9671('0x7'));var servicenow=require(_0x9671('0x8'));var dynamics365=require(_0x9671('0x9'));var freshsales=require(_0x9671('0xa'));var integrations=[_0x9671('0xb'),_0x9671('0xc'),_0x9671('0xd'),_0x9671('0xe'),_0x9671('0xf'),'desk',_0x9671('0x10'),_0x9671('0x11'),_0x9671('0x12'),'servicenow'];exports[_0x9671('0x13')]=function(_0x3aa481,_0x2b1322,_0x476bd4,_0x3b8f19,_0x5898fa,_0x2d206c){if(_0x476bd4){if(_['includes'](integrations,_0x3aa481[_0x9671('0x14')][_0x9671('0x15')]())){try{var _0x502fcf=null;var _0x192b3b='';var _0x3c7ded=_0x476bd4[_0x3aa481[_0x9671('0x14')][_0x9671('0x15')]()];if(_0x3c7ded){var _0x495151=_0x3c7ded[_0x3aa481[_0x9671('0x16')]];if(_0x495151){var _0x226675=_['find'](_0x495151[_0x9671('0x17')],{'id':parseInt(_0x3aa481[_0x9671('0x18')],0xa)});if(_0x226675){if(_0x3b8f19){if(_0x5898fa&&_0x2b1322[_0x9671('0x19')]){_0x192b3b='queue';}else if(_0x2b1322['routeId']){_0x192b3b=_0x9671('0x1a');}else{console[_0x9671('0x1b')]('EVENT\x20UNKNOWN',_0x2b1322);}}else{_0x192b3b=_0x9671('0x1c');}switch(_0x3aa481['data1'][_0x9671('0x15')]()){case _0x9671('0xb'):zendesk[_0x192b3b](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c);break;case _0x9671('0xc'):salesforce[_0x192b3b](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c);break;case'sugarcrm':sugarcrm[_0x192b3b](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c);break;case _0x9671('0xe'):freshdesk[_0x192b3b](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c);break;case _0x9671('0xf'):zoho[_0x192b3b](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c);break;case _0x9671('0x1d'):desk[_0x192b3b](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c);break;case _0x9671('0x10'):vtiger[_0x192b3b](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c);break;case'freshsales':freshsales['cs'](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c,_0x192b3b);break;case _0x9671('0x1e'):servicenow['cs'](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c,_0x192b3b);break;case'dynamics365':dynamics365['cs'](_0x3aa481,_0x2b1322,_0x226675,_0x3b8f19,_0x5898fa,_0x495151,_0x2d206c,_0x192b3b);break;default:console[_0x9671('0x1b')](_0x9671('0x1f'));}}else{_0x502fcf=require('../../../../config/logger')(_0x3aa481['data1'][_0x9671('0x15')]());_0x502fcf[_0x9671('0x20')](_0x9671('0x21'),util[_0x9671('0x22')](_0x9671('0x23'),_0x3aa481[_0x9671('0x14')]['toLowerCase'](),_0x3aa481[_0x9671('0x18')]));}}else{_0x502fcf=require(_0x9671('0x24'))(_0x3aa481['data1'][_0x9671('0x15')]());_0x502fcf['error']('[EXEC]',util['format'](_0x9671('0x25'),_0x3aa481[_0x9671('0x14')][_0x9671('0x15')](),_0x3aa481[_0x9671('0x16')]));}}else{}}catch(_0xe7d4bb){console[_0x9671('0x20')](_0xe7d4bb);}}}};
\ No newline at end of file
+var _0xdda0=['toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','sugarcrm','freshdesk','servicenow','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./sugarcrm','./zoho','./desk','./vtiger','./servicenow','./dynamics365','zendesk','salesforce','zoho','vtiger','dynamics365','freshsales','includes','data1'];(function(_0x1b0a6e,_0x235929){var _0x36f6ce=function(_0x269665){while(--_0x269665){_0x1b0a6e['push'](_0x1b0a6e['shift']());}};_0x36f6ce(++_0x235929);}(_0xdda0,0x186));var _0x0dda=function(_0x1bf89e,_0x3d520f){_0x1bf89e=_0x1bf89e-0x0;var _0x4262c0=_0xdda0[_0x1bf89e];return _0x4262c0;};'use strict';var _=require(_0x0dda('0x0'));var util=require('util');var zendesk=require(_0x0dda('0x1'));var salesforce=require(_0x0dda('0x2'));var sugarcrm=require(_0x0dda('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0x0dda('0x4'));var desk=require(_0x0dda('0x5'));var vtiger=require(_0x0dda('0x6'));var servicenow=require(_0x0dda('0x7'));var dynamics365=require(_0x0dda('0x8'));var freshsales=require('./freshsales');var integrations=[_0x0dda('0x9'),_0x0dda('0xa'),'sugarcrm','freshdesk',_0x0dda('0xb'),'desk',_0x0dda('0xc'),_0x0dda('0xd'),_0x0dda('0xe'),'servicenow'];exports['exec']=function(_0x2d7cae,_0x49ab9b,_0x27d196,_0x4c7b5f,_0x540ea6,_0x31e68a){if(_0x27d196){if(_[_0x0dda('0xf')](integrations,_0x2d7cae[_0x0dda('0x10')]['toLowerCase']())){try{var _0x5f5999=null;var _0xc5b15d='';var _0x478a22=_0x27d196[_0x2d7cae[_0x0dda('0x10')][_0x0dda('0x11')]()];if(_0x478a22){var _0x29c5db=_0x478a22[_0x2d7cae[_0x0dda('0x12')]];if(_0x29c5db){var _0x2007fb=_[_0x0dda('0x13')](_0x29c5db[_0x0dda('0x14')],{'id':parseInt(_0x2d7cae[_0x0dda('0x15')],0xa)});if(_0x2007fb){if(_0x4c7b5f){if(_0x540ea6&&_0x49ab9b[_0x0dda('0x16')]){_0xc5b15d=_0x0dda('0x16');}else if(_0x49ab9b[_0x0dda('0x17')]){_0xc5b15d=_0x0dda('0x18');}else{console[_0x0dda('0x19')](_0x0dda('0x1a'),_0x49ab9b);}}else{_0xc5b15d='unmanaged';}switch(_0x2d7cae['data1']['toLowerCase']()){case'zendesk':zendesk[_0xc5b15d](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a);break;case _0x0dda('0xa'):salesforce[_0xc5b15d](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a);break;case _0x0dda('0x1b'):sugarcrm[_0xc5b15d](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a);break;case _0x0dda('0x1c'):freshdesk[_0xc5b15d](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a);break;case'zoho':zoho[_0xc5b15d](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a);break;case'desk':desk[_0xc5b15d](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a);break;case'vtiger':vtiger[_0xc5b15d](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a);break;case _0x0dda('0xe'):freshsales['cs'](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a,_0xc5b15d);break;case _0x0dda('0x1d'):servicenow['cs'](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a,_0xc5b15d);break;case _0x0dda('0xd'):dynamics365['cs'](_0x2d7cae,_0x49ab9b,_0x2007fb,_0x4c7b5f,_0x540ea6,_0x29c5db,_0x31e68a,_0xc5b15d);break;default:console[_0x0dda('0x19')](_0x0dda('0x1e'));}}else{_0x5f5999=require(_0x0dda('0x1f'))(_0x2d7cae[_0x0dda('0x10')][_0x0dda('0x11')]());_0x5f5999[_0x0dda('0x20')](_0x0dda('0x21'),util[_0x0dda('0x22')](_0x0dda('0x23'),_0x2d7cae['data1'][_0x0dda('0x11')](),_0x2d7cae['data3']));}}else{_0x5f5999=require(_0x0dda('0x1f'))(_0x2d7cae[_0x0dda('0x10')][_0x0dda('0x11')]());_0x5f5999['error'](_0x0dda('0x21'),util[_0x0dda('0x22')](_0x0dda('0x24'),_0x2d7cae[_0x0dda('0x10')]['toLowerCase'](),_0x2d7cae['data2']));}}else{}}catch(_0x291eaf){console[_0x0dda('0x20')](_0x291eaf);}}}};
\ No newline at end of file
index 275a610..e53c3f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9be0=['attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','<unknown>','format','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','Company','upperFirst','forEach','includes','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','password','concat','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','newTab','%s/%s/e','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:browser:url','instanceUrl','catch','unmanaged','lastevent','toUpperCase','calleridname',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/logger','redis','defaults','localhost','emit','assign','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','lead','account','WhatId','Case','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','User','execute','then','length','find','Email','Agent\x20%s\x20found.','Name','identity','resolve','display_name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','contact_lead','additionalSearchContact','$or','Contact','additionalSearchLead','merge','Lead','account_contact_lead','additionalSearchAccount','Account','cloneDeep','contact'];(function(_0x4d6679,_0x3ea59a){var _0x50fc8b=function(_0x28aaad){while(--_0x28aaad){_0x4d6679['push'](_0x4d6679['shift']());}};_0x50fc8b(++_0x3ea59a);}(_0x9be0,0x1c8));var _0x09be=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x9be0[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x09be('0x0'));var rp=require(_0x09be('0x1'));var moment=require(_0x09be('0x2'));var BPromise=require(_0x09be('0x3'));var md5=require(_0x09be('0x4'));var jsforce=require(_0x09be('0x5'));var util=require(_0x09be('0x6'));var Redis=require(_0x09be('0x7'));var intUtil=require(_0x09be('0x8'));var config=require('../../../../config/environment');var logger=require(_0x09be('0x9'))('salesforce');config[_0x09be('0xa')]=_[_0x09be('0xb')](config[_0x09be('0xa')],{'host':_0x09be('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x09be('0xa')]));function emit(_0x20ad3c,_0x1f8582,_0x58834a){io['to'](_0x20ad3c)[_0x09be('0xd')](_0x1f8582,_0x58834a);}function getTicket(_0x96547b,_0x4b3659,_0x2653d6,_0x286ee2,_0x403dd1,_0x20e67f,_0x2111d3,_0x428090){var _0x402aa7=Object[_0x09be('0xe')]({},{'OwnerId':_0x4b3659['id'],'Subject':intUtil[_0x09be('0xf')](_0x286ee2['Subjects'],_0x403dd1,'\x20'),'Description':intUtil[_0x09be('0xf')](_0x286ee2[_0x09be('0x10')],_0x403dd1,'\x0a')},getCustomFields(_0x20e67f,_0x403dd1));if(_0x2653d6){if(_0x286ee2[_0x09be('0x11')]===_0x09be('0x12')){_0x402aa7[_0x09be('0x13')]=moment[_0x09be('0x14')]();_0x402aa7['IsReminderSet']=![];_0x402aa7[_0x09be('0x15')]=![];if(_0x2653d6[_0x09be('0x16')]==='contact'||_0x2653d6[_0x09be('0x16')]===_0x09be('0x17')){_0x402aa7['WhoId']=_0x2653d6['id'];}else if(_0x2653d6['endUserType']===_0x09be('0x18')){_0x402aa7[_0x09be('0x19')]=_0x2653d6['id'];}}else if(_0x286ee2['ticketType']===_0x09be('0x1a')){if(_0x2653d6[_0x09be('0x16')]==='contact'){_0x402aa7['ContactId']=_0x2653d6['id'];}else if(_0x2653d6[_0x09be('0x16')]===_0x09be('0x18')){_0x402aa7[_0x09be('0x1b')]=_0x2653d6['id'];}else if(_0x2653d6[_0x09be('0x16')]===_0x09be('0x17')&&_0x286ee2[_0x09be('0x1c')]){_0x402aa7[_0x286ee2['leadId']]=_0x2653d6['id'];}else{logger[_0x09be('0x1d')](_0x09be('0x1e'));}}}return _0x2111d3[_0x09be('0x1f')](_0x286ee2[_0x09be('0x11')])[_0x09be('0x20')](_0x402aa7);}function getUser(_0x286c3a,_0xf2b09f,_0x4c2402){if(!_[_0x09be('0x21')](_0xf2b09f)&&intUtil['validateEmail'](_0xf2b09f)){var _0x2f170a={'Email':_0xf2b09f};var _0x24a409={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4c2402[_0x09be('0x1f')](_0x09be('0x22'))['find'](_0x2f170a,_0x24a409)[_0x09be('0x23')]()[_0x09be('0x24')](function(_0x132fe4){if(_0x132fe4[_0x09be('0x25')]){var _0x2558ec=_[_0x09be('0x26')](_0x132fe4,function(_0x17deac){return _0x17deac[_0x09be('0x27')]===_0xf2b09f;});if(_0x2558ec){logger[_0x09be('0x1d')](_0x09be('0x28'),_0xf2b09f);return BPromise['resolve']({'id':_0x2558ec['Id'],'name':_0x2558ec[_0x09be('0x29')]});}}else{logger[_0x09be('0x1d')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0xf2b09f);return _0x4c2402[_0x09be('0x2a')]()[_0x09be('0x24')](function(_0x2ca1bd){return BPromise[_0x09be('0x2b')]({'id':_0x2ca1bd['user_id'],'name':_0x2ca1bd[_0x09be('0x2c')]});});}});}else{logger[_0x09be('0x1d')](_0x09be('0x2d'),_0xf2b09f);return _0x4c2402[_0x09be('0x2a')]()[_0x09be('0x24')](function(_0x5b911a){return BPromise['resolve']({'id':_0x5b911a[_0x09be('0x2e')],'name':_0x5b911a[_0x09be('0x2c')]});});}}function getEndUser(_0x3f5d38,_0x5b9aa9,_0x3a4174,_0x16b428,_0x3ab836){var _0x228736={'$or':{'Phone':_0x16b428}};var _0x42ea8a={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x09be('0x2b')]()[_0x09be('0x24')](function(){logger['info'](_0x09be('0x2f'),_0x16b428,_0x5b9aa9['moduleSearch']);switch(_0x5b9aa9['moduleSearch']){case _0x09be('0x30'):var _0xcb318c=_['cloneDeep'](_0x228736);if(_0x5b9aa9[_0x09be('0x31')]){var _0x250ed2={};_0x250ed2[_0x5b9aa9[_0x09be('0x31')]]=_0x16b428;_['merge'](_0xcb318c[_0x09be('0x32')],_0x250ed2);}return _0x3ab836[_0x09be('0x1f')](_0x09be('0x33'))['find'](_0xcb318c,_0x42ea8a)[_0x09be('0x23')]()[_0x09be('0x24')](function(_0x5715cb){if(_0x5715cb&&_0x5715cb['length']){return _0x5715cb;}else{var _0x4e1447=_['cloneDeep'](_0x228736);if(_0x5b9aa9['additionalSearchLead']){var _0x39ed77={};_0x39ed77[_0x5b9aa9[_0x09be('0x34')]]=_0x16b428;_[_0x09be('0x35')](_0x4e1447[_0x09be('0x32')],_0x39ed77);}return _0x3ab836['sobject'](_0x09be('0x36'))[_0x09be('0x26')](_0x4e1447,_0x42ea8a);}});case _0x09be('0x37'):var _0x5057c0=_['cloneDeep'](_0x228736);if(_0x5b9aa9[_0x09be('0x38')]){var _0x250ed2={};_0x250ed2[_0x5b9aa9['additionalSearchAccount']]=_0x16b428;_['merge'](_0x5057c0[_0x09be('0x32')],_0x250ed2);}return _0x3ab836[_0x09be('0x1f')](_0x09be('0x39'))['find'](_0x5057c0,_0x42ea8a)[_0x09be('0x23')]()[_0x09be('0x24')](function(_0x108ff5){if(_0x108ff5&&_0x108ff5[_0x09be('0x25')]){return _0x108ff5;}else{var _0x416a6a=_['cloneDeep'](_0x228736);if(_0x5b9aa9[_0x09be('0x31')]){var _0x94ba38={};_0x94ba38[_0x5b9aa9[_0x09be('0x31')]]=_0x16b428;_[_0x09be('0x35')](_0x416a6a[_0x09be('0x32')],_0x94ba38);}return _0x3ab836[_0x09be('0x1f')](_0x09be('0x33'))[_0x09be('0x26')](_0x416a6a,_0x42ea8a)[_0x09be('0x24')](function(_0x3bed0c){if(_0x3bed0c&&_0x3bed0c[_0x09be('0x25')]){return _0x3bed0c;}else{var _0x387425=_[_0x09be('0x3a')](_0x228736);if(_0x5b9aa9[_0x09be('0x34')]){var _0xcb7ac0={};_0xcb7ac0[_0x5b9aa9[_0x09be('0x34')]]=_0x16b428;_['merge'](_0x387425[_0x09be('0x32')],_0xcb7ac0);}return _0x3ab836[_0x09be('0x1f')](_0x09be('0x36'))[_0x09be('0x26')](_0x387425,_0x42ea8a);}});}});case _0x09be('0x3b'):var _0xcb318c=_[_0x09be('0x3a')](_0x228736);if(_0x5b9aa9[_0x09be('0x31')]){var _0x250ed2={};_0x250ed2[_0x5b9aa9['additionalSearchContact']]=_0x16b428;_['merge'](_0xcb318c[_0x09be('0x32')],_0x250ed2);}return _0x3ab836[_0x09be('0x1f')](_0x09be('0x33'))[_0x09be('0x26')](_0xcb318c,_0x42ea8a)[_0x09be('0x23')]();case _0x09be('0x17'):var _0x313010=_['cloneDeep'](_0x228736);if(_0x5b9aa9[_0x09be('0x34')]){var _0x250ed2={};_0x250ed2[_0x5b9aa9[_0x09be('0x34')]]=_0x16b428;_[_0x09be('0x35')](_0x313010[_0x09be('0x32')],_0x250ed2);}return _0x3ab836[_0x09be('0x1f')](_0x09be('0x36'))['find'](_0x313010,_0x42ea8a);case _0x09be('0x18'):var _0x5057c0=_['cloneDeep'](_0x228736);if(_0x5b9aa9[_0x09be('0x38')]){var _0x250ed2={};_0x250ed2[_0x5b9aa9[_0x09be('0x38')]]=_0x16b428;_['merge'](_0x5057c0[_0x09be('0x32')],_0x250ed2);}return _0x3ab836[_0x09be('0x1f')](_0x09be('0x39'))[_0x09be('0x26')](_0x5057c0,_0x42ea8a);default:return null;}})[_0x09be('0x24')](function(_0x242173){if(_0x242173&&_0x242173[_0x09be('0x25')]){var _0xa447f6=_['first'](_0x242173);if(_0xa447f6){return BPromise[_0x09be('0x2b')]({'id':_0xa447f6['Id'],'name':_0xa447f6['Name'],'phone':_0xa447f6['Phone'],'endUserType':_0xa447f6[_0x09be('0x3c')][_0x09be('0x3d')][_0x09be('0x3e')]()});}}})[_0x09be('0x24')](function(_0x597c29){if(_0x597c29){logger[_0x09be('0x1d')](_0x09be('0x3f'),_0x597c29['endUserType'],_0x16b428);return BPromise[_0x09be('0x2b')](_0x597c29);}else{logger['info']('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x16b428);var _0x50abe9={'Phone':_0x16b428};if(_0x5b9aa9[_0x09be('0x40')]){if(_0x5b9aa9[_0x09be('0x40')]===_0x09be('0x3b')){logger[_0x09be('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x16b428,_0x5b9aa9[_0x09be('0x40')]);_0x50abe9['LastName']=_0x3a4174!==_0x09be('0x41')?_0x3a4174:util[_0x09be('0x42')](_0x09be('0x43'),_0x16b428);}else if(_0x5b9aa9[_0x09be('0x40')]===_0x09be('0x17')){logger['info'](_0x09be('0x44'),_0x16b428,_0x5b9aa9[_0x09be('0x40')]);_0x50abe9[_0x09be('0x45')]=_0x3a4174!==_0x09be('0x41')?_0x3a4174:util[_0x09be('0x42')](_0x09be('0x43'),_0x16b428);_0x50abe9[_0x09be('0x46')]='No\x20Company';}else if(_0x5b9aa9[_0x09be('0x40')]===_0x09be('0x18')){logger[_0x09be('0x1d')](_0x09be('0x44'),_0x16b428,_0x5b9aa9['moduleCreate']);_0x50abe9[_0x09be('0x29')]=_0x3a4174!==_0x09be('0x41')?_0x3a4174:util[_0x09be('0x42')](_0x09be('0x43'),_0x16b428);}else{return null;}}return _0x3ab836[_0x09be('0x1f')](_[_0x09be('0x47')](_0x5b9aa9[_0x09be('0x40')]))[_0x09be('0x20')](_0x50abe9)[_0x09be('0x24')](function(_0x19345f){return BPromise[_0x09be('0x2b')]({'id':_0x19345f['id'],'endUserType':_0x5b9aa9[_0x09be('0x40')]});});}});}function getCustomFields(_0x56271a,_0x527b60){var _0xad7034={};if(_0x56271a[_0x09be('0x25')]>0x0){_[_0x09be('0x48')](_0x56271a,function(_0x439c39){if(_[_0x09be('0x49')](['string',_0x09be('0x4a')],_0x439c39['type'])&&_0x439c39[_0x09be('0x4b')]){_0xad7034[_0x439c39[_0x09be('0x4b')]]=_0x439c39[_0x09be('0x4c')][_0x09be('0x4d')]();}else if(_0x439c39[_0x09be('0x3d')]===_0x09be('0x4e')&&_0x439c39['variableName']&&_0x439c39[_0x09be('0x4b')]){_0x527b60[_0x439c39[_0x09be('0x4f')]]&&(_0xad7034[_0x439c39[_0x09be('0x4b')]]=_0x527b60[_0x439c39[_0x09be('0x4f')]][_0x09be('0x4d')]());}else if(_0x439c39[_0x09be('0x3d')]===_0x09be('0x50')&&_0x439c39['Variable']&&_0x439c39['Variable']['name']&&_0x439c39[_0x09be('0x4b')]){_0x527b60[_0x439c39[_0x09be('0x51')][_0x09be('0x52')][_0x09be('0x3e')]()]&&(_0xad7034[_0x439c39['idField']]=_0x527b60[_0x439c39[_0x09be('0x51')][_0x09be('0x52')]['toLowerCase']()][_0x09be('0x4d')]());}});}return _0xad7034;}function getConnection(_0x46b83b){var _0x57365f=_0x46b83b[_0x09be('0x53')][_0x09be('0x54')](_0x46b83b['securityToken']);var _0x166a58=new jsforce['Connection']({'oauth2':{'loginUrl':_0x46b83b[_0x09be('0x55')]||_0x09be('0x56'),'clientId':_0x46b83b[_0x09be('0x57')],'clientSecret':_0x46b83b[_0x09be('0x58')]}});return _0x166a58[_0x09be('0x59')](_0x46b83b[_0x09be('0x5a')],_0x57365f)[_0x09be('0x24')](function(){logger['info'](_0x09be('0x5b'));return _0x166a58;});}exports[_0x09be('0x5c')]=function(_0x1ed12f,_0x3e7bdc,_0xcc7d7d,_0x5c2ee7,_0x598b39,_0x24c880){var _0x5e5acf,_0x2aaec2,_0x4ffc32,_0x52e19b;_0x24c880[_0x09be('0x5d')]=intUtil[_0x09be('0x5e')](_0x24c880[_0x09be('0x5d')]);_0x24c880['remoteUri']=intUtil[_0x09be('0x5e')](_0x24c880[_0x09be('0x55')]);if(_0x598b39&&_0x598b39[_0x09be('0x5f')]){logger[_0x09be('0x1d')](_0x09be('0x60'),_0x09be('0x61'));_0x3e7bdc['recordingURL']=util[_0x09be('0x42')](_0x09be('0x62'),_0x24c880[_0x09be('0x5d')],_0x3e7bdc['uniqueid'],md5(_0x3e7bdc[_0x09be('0x63')]));}else{_0x3e7bdc[_0x09be('0x64')]='';}return getConnection(_0x24c880)[_0x09be('0x24')](function(_0x55554c){_0x52e19b=_0x55554c;return getUser(_0x24c880,_0x5c2ee7[_0x09be('0x65')],_0x52e19b);})['then'](function(_0x4373d5){_0x5e5acf=_0x4373d5;return getEndUser(_0x24c880,_0xcc7d7d,_0x3e7bdc['calleridname'],_0x3e7bdc[_0x09be('0x66')],_0x52e19b);})[_0x09be('0x24')](function(_0x55b0f8){_0x2aaec2=_0x55b0f8;return getTicket(_0x24c880,_0x5e5acf,_0x2aaec2,_0xcc7d7d,_0x3e7bdc,_0xcc7d7d[_0x09be('0x67')],_0x52e19b,_0x09be('0x5c'));})[_0x09be('0x24')](function(_0x5ca703){_0x4ffc32=_0x5ca703;logger[_0x09be('0x1d')](_0x09be('0x68'),_0x4ffc32['id']);logger[_0x09be('0x1d')](_0x09be('0x69'),_0x4ffc32['id'],_0x5c2ee7[_0x09be('0x52')],_0x24c880[_0x09be('0x3d')]);switch(_0x24c880[_0x09be('0x3d')]){case _0x09be('0x6a'):emit(util[_0x09be('0x42')](_0x09be('0x6b'),_0x5c2ee7[_0x09be('0x52')]),_0x09be('0x6c'),{'recordId':_0x4ffc32['id']});break;case _0x09be('0x6d'):emit(util['format'](_0x09be('0x6b'),_0x5c2ee7[_0x09be('0x52')]),'trigger:browser:url',{'uri':util['format'](_0x09be('0x6e'),_0x52e19b['instanceUrl'],_0x4ffc32['id'])});break;default:logger[_0x09be('0x6f')](_0x09be('0x70'));}})['catch'](function(_0x1c05ac){logger[_0x09be('0x6f')](_0x09be('0x60'),_0x1c05ac);});};exports[_0x09be('0x71')]=function(_0x177857,_0x19b379,_0x4b9900,_0x3f6ad6,_0x5cd4d4,_0x36aebf,_0x373d7e){var _0x4177ec,_0x1de2b2,_0x3bf328,_0x21a6ed;_0x36aebf[_0x09be('0x5d')]=intUtil[_0x09be('0x5e')](_0x36aebf[_0x09be('0x5d')]);_0x36aebf[_0x09be('0x55')]=intUtil[_0x09be('0x5e')](_0x36aebf[_0x09be('0x55')]);if(_0x373d7e&&_0x373d7e['recordingFormat']&&_0x373d7e[_0x09be('0x72')]!==_0x09be('0x73')){logger['info'](_0x09be('0x74'),_0x09be('0x61'));_0x19b379[_0x09be('0x64')]=util[_0x09be('0x42')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x36aebf['serverUrl'],_0x19b379[_0x09be('0x63')],md5(_0x19b379[_0x09be('0x63')]));}return getConnection(_0x36aebf)['then'](function(_0xe5522c){_0x21a6ed=_0xe5522c;return getUser(_0x36aebf,_0x3f6ad6[_0x09be('0x65')],_0x21a6ed);})[_0x09be('0x24')](function(_0x19beaf){_0x4177ec=_0x19beaf;return getEndUser(_0x36aebf,_0x4b9900,_0x19b379[_0x09be('0x75')],_0x19b379[_0x09be('0x76')],_0x21a6ed);})[_0x09be('0x24')](function(_0x34bf16){_0x1de2b2=_0x34bf16;return getTicket(_0x36aebf,_0x4177ec,_0x1de2b2,_0x4b9900,_0x19b379,_0x4b9900['Fields'],_0x21a6ed,_0x09be('0x71'));})['then'](function(_0x583e63){_0x3bf328=_0x583e63;logger[_0x09be('0x1d')](_0x09be('0x77'),_0x3bf328['id']);logger[_0x09be('0x1d')](_0x09be('0x78'),_0x3bf328['id'],_0x3f6ad6[_0x09be('0x52')],_0x36aebf[_0x09be('0x3d')]);switch(_0x36aebf[_0x09be('0x3d')]){case'integrationTab':emit(util[_0x09be('0x42')](_0x09be('0x6b'),_0x3f6ad6[_0x09be('0x52')]),_0x09be('0x6c'),{'recordId':_0x3bf328['id']});break;case _0x09be('0x6d'):emit(util[_0x09be('0x42')](_0x09be('0x6b'),_0x3f6ad6[_0x09be('0x52')]),_0x09be('0x79'),{'uri':util[_0x09be('0x42')]('%s/%s/e',_0x21a6ed[_0x09be('0x7a')],_0x3bf328['id'])});break;default:logger[_0x09be('0x6f')]('[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x09be('0x7b')](function(_0x2408b2){logger['error'](_0x09be('0x74'),_0x2408b2);});};exports[_0x09be('0x7c')]=function(_0x2abfb0,_0x2c0ee5,_0x145af3,_0x1621ff,_0x5152d8,_0x522a7d){var _0x21cd1e,_0x15d122,_0x1d0559,_0x31b20f;_0x522a7d[_0x09be('0x5d')]=intUtil['stripTrailingSlash'](_0x522a7d[_0x09be('0x5d')]);_0x522a7d[_0x09be('0x55')]=intUtil[_0x09be('0x5e')](_0x522a7d[_0x09be('0x55')]);if(_0x5152d8&&_0x5152d8['monitor_format']){logger[_0x09be('0x1d')]('['+_0x2c0ee5[_0x09be('0x7d')][_0x09be('0x7e')]()+']','Recording\x20is\x20enabled!');_0x2c0ee5['recordingURL']=util[_0x09be('0x42')](_0x09be('0x62'),_0x522a7d[_0x09be('0x5d')],_0x2c0ee5[_0x09be('0x63')],md5(_0x2c0ee5[_0x09be('0x63')]));}else{_0x2c0ee5[_0x09be('0x64')]='';}return getConnection(_0x522a7d)[_0x09be('0x24')](function(_0x897503){_0x31b20f=_0x897503;if(!_[_0x09be('0x21')](_0x1621ff)){return getUser(_0x522a7d,_0x1621ff[_0x09be('0x52')],_0x31b20f);}else{return getUser(_0x522a7d,null,_0x31b20f);}})['then'](function(_0x4fd461){_0x21cd1e=_0x4fd461;return getEndUser(_0x522a7d,_0x145af3,_0x2c0ee5[_0x09be('0x7f')],_0x2c0ee5['calleridnum'],_0x31b20f);})[_0x09be('0x24')](function(_0x2286cd){_0x15d122=_0x2286cd;return getTicket(_0x522a7d,_0x21cd1e,_0x15d122,_0x145af3,_0x2c0ee5,_0x145af3[_0x09be('0x67')],_0x31b20f);})['then'](function(_0x50fa07){_0x1d0559=_0x50fa07;logger[_0x09be('0x1d')]('['+_0x2c0ee5[_0x09be('0x7d')][_0x09be('0x7e')]()+']\x20Ticket\x20%s\x20created.',_0x1d0559['id']);logger[_0x09be('0x1d')]('['+_0x2c0ee5['lastevent']['toUpperCase']()+_0x09be('0x80'),_0x522a7d[_0x09be('0x3d')]);})['catch'](function(_0x1ee5ba){logger[_0x09be('0x6f')]('['+_0x2c0ee5['lastevent'][_0x09be('0x7e')]()+']',_0x1ee5ba);});};
\ No newline at end of file
+var _0xf1dd=['execute','then','length','Email','Agent\x20%s\x20found.','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','resolve','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','additionalSearchLead','Lead','additionalSearchAccount','Account','Contact','first','Name','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','Caller\x20-\x20%s','format','Company','No\x20Company','upperFirst','forEach','includes','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','Connection\x20established.','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridname','destcalleridnum','trigger:salesforce:display','newTab','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','monitor_format','isNil','calleridname','calleridnum','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','bluebird','md5','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','assign','getString','Subjects','Descriptions','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','lead','account','WhatId','ticketType','Case','contact','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','validateEmail','User','find'];(function(_0x8c7309,_0x4b4317){var _0x5dcdf0=function(_0x549676){while(--_0x549676){_0x8c7309['push'](_0x8c7309['shift']());}};_0x5dcdf0(++_0x4b4317);}(_0xf1dd,0x1f2));var _0xdf1d=function(_0x5575cd,_0x73ab7a){_0x5575cd=_0x5575cd-0x0;var _0x4979a0=_0xf1dd[_0x5575cd];return _0x4979a0;};'use strict';var _=require('lodash');var rp=require(_0xdf1d('0x0'));var moment=require(_0xdf1d('0x1'));var BPromise=require(_0xdf1d('0x2'));var md5=require(_0xdf1d('0x3'));var jsforce=require('jsforce');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xdf1d('0x4'));var config=require(_0xdf1d('0x5'));var logger=require(_0xdf1d('0x6'))(_0xdf1d('0x7'));config[_0xdf1d('0x8')]=_[_0xdf1d('0x9')](config[_0xdf1d('0x8')],{'host':_0xdf1d('0xa'),'port':0x18eb});var io=require(_0xdf1d('0xb'))(new Redis(config['redis']));function emit(_0x3e55f6,_0x57890c,_0x293e05){io['to'](_0x3e55f6)['emit'](_0x57890c,_0x293e05);}function getTicket(_0x54d732,_0x2382fa,_0x21e24f,_0x4da251,_0xfb1840,_0x33672e,_0x3e7bbd,_0x5d43bf){var _0x433511=Object[_0xdf1d('0xc')]({},{'OwnerId':_0x2382fa['id'],'Subject':intUtil[_0xdf1d('0xd')](_0x4da251[_0xdf1d('0xe')],_0xfb1840,'\x20'),'Description':intUtil[_0xdf1d('0xd')](_0x4da251[_0xdf1d('0xf')],_0xfb1840,'\x0a')},getCustomFields(_0x33672e,_0xfb1840));if(_0x21e24f){if(_0x4da251['ticketType']===_0xdf1d('0x10')){_0x433511[_0xdf1d('0x11')]=moment[_0xdf1d('0x12')]();_0x433511[_0xdf1d('0x13')]=![];_0x433511[_0xdf1d('0x14')]=![];if(_0x21e24f[_0xdf1d('0x15')]==='contact'||_0x21e24f[_0xdf1d('0x15')]===_0xdf1d('0x16')){_0x433511['WhoId']=_0x21e24f['id'];}else if(_0x21e24f[_0xdf1d('0x15')]===_0xdf1d('0x17')){_0x433511[_0xdf1d('0x18')]=_0x21e24f['id'];}}else if(_0x4da251[_0xdf1d('0x19')]===_0xdf1d('0x1a')){if(_0x21e24f[_0xdf1d('0x15')]===_0xdf1d('0x1b')){_0x433511[_0xdf1d('0x1c')]=_0x21e24f['id'];}else if(_0x21e24f[_0xdf1d('0x15')]===_0xdf1d('0x17')){_0x433511[_0xdf1d('0x1d')]=_0x21e24f['id'];}else if(_0x21e24f[_0xdf1d('0x15')]===_0xdf1d('0x16')&&_0x4da251[_0xdf1d('0x1e')]){_0x433511[_0x4da251['leadId']]=_0x21e24f['id'];}else{logger[_0xdf1d('0x1f')](_0xdf1d('0x20'));}}}return _0x3e7bbd[_0xdf1d('0x21')](_0x4da251[_0xdf1d('0x19')])[_0xdf1d('0x22')](_0x433511);}function getUser(_0x178a9a,_0x2088a0,_0x4b3216){if(!_['isNil'](_0x2088a0)&&intUtil[_0xdf1d('0x23')](_0x2088a0)){var _0x4e1fdb={'Email':_0x2088a0};var _0x38150a={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4b3216[_0xdf1d('0x21')](_0xdf1d('0x24'))[_0xdf1d('0x25')](_0x4e1fdb,_0x38150a)[_0xdf1d('0x26')]()[_0xdf1d('0x27')](function(_0x47b0d3){if(_0x47b0d3[_0xdf1d('0x28')]){var _0x1e1e57=_[_0xdf1d('0x25')](_0x47b0d3,function(_0x1287f2){return _0x1287f2[_0xdf1d('0x29')]===_0x2088a0;});if(_0x1e1e57){logger[_0xdf1d('0x1f')](_0xdf1d('0x2a'),_0x2088a0);return BPromise['resolve']({'id':_0x1e1e57['Id'],'name':_0x1e1e57['Name']});}}else{logger[_0xdf1d('0x1f')](_0xdf1d('0x2b'),_0x2088a0);return _0x4b3216[_0xdf1d('0x2c')]()[_0xdf1d('0x27')](function(_0x213b12){return BPromise[_0xdf1d('0x2d')]({'id':_0x213b12[_0xdf1d('0x2e')],'name':_0x213b12[_0xdf1d('0x2f')]});});}});}else{logger[_0xdf1d('0x1f')](_0xdf1d('0x2b'),_0x2088a0);return _0x4b3216[_0xdf1d('0x2c')]()[_0xdf1d('0x27')](function(_0x4bb61a){return BPromise[_0xdf1d('0x2d')]({'id':_0x4bb61a[_0xdf1d('0x2e')],'name':_0x4bb61a['display_name']});});}}function getEndUser(_0x3a1d1e,_0x1149b6,_0xf640ac,_0x23c801,_0x30faef){var _0x25e3ec={'$or':{'Phone':_0x23c801}};var _0x194d64={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xdf1d('0x2d')]()[_0xdf1d('0x27')](function(){logger[_0xdf1d('0x1f')](_0xdf1d('0x30'),_0x23c801,_0x1149b6[_0xdf1d('0x31')]);switch(_0x1149b6[_0xdf1d('0x31')]){case _0xdf1d('0x32'):var _0x35b2fc=_[_0xdf1d('0x33')](_0x25e3ec);if(_0x1149b6[_0xdf1d('0x34')]){var _0x2012b1={};_0x2012b1[_0x1149b6['additionalSearchContact']]=_0x23c801;_[_0xdf1d('0x35')](_0x35b2fc[_0xdf1d('0x36')],_0x2012b1);}return _0x30faef[_0xdf1d('0x21')]('Contact')[_0xdf1d('0x25')](_0x35b2fc,_0x194d64)[_0xdf1d('0x26')]()[_0xdf1d('0x27')](function(_0x38aa0e){if(_0x38aa0e&&_0x38aa0e[_0xdf1d('0x28')]){return _0x38aa0e;}else{var _0x577268=_[_0xdf1d('0x33')](_0x25e3ec);if(_0x1149b6['additionalSearchLead']){var _0x38d5b8={};_0x38d5b8[_0x1149b6[_0xdf1d('0x37')]]=_0x23c801;_[_0xdf1d('0x35')](_0x577268['$or'],_0x38d5b8);}return _0x30faef[_0xdf1d('0x21')](_0xdf1d('0x38'))[_0xdf1d('0x25')](_0x577268,_0x194d64);}});case'account_contact_lead':var _0x463a32=_['cloneDeep'](_0x25e3ec);if(_0x1149b6['additionalSearchAccount']){var _0x2012b1={};_0x2012b1[_0x1149b6[_0xdf1d('0x39')]]=_0x23c801;_[_0xdf1d('0x35')](_0x463a32[_0xdf1d('0x36')],_0x2012b1);}return _0x30faef[_0xdf1d('0x21')](_0xdf1d('0x3a'))[_0xdf1d('0x25')](_0x463a32,_0x194d64)[_0xdf1d('0x26')]()[_0xdf1d('0x27')](function(_0x3f43f0){if(_0x3f43f0&&_0x3f43f0[_0xdf1d('0x28')]){return _0x3f43f0;}else{var _0x303032=_[_0xdf1d('0x33')](_0x25e3ec);if(_0x1149b6[_0xdf1d('0x34')]){var _0x17fa8c={};_0x17fa8c[_0x1149b6['additionalSearchContact']]=_0x23c801;_[_0xdf1d('0x35')](_0x303032[_0xdf1d('0x36')],_0x17fa8c);}return _0x30faef['sobject']('Contact')[_0xdf1d('0x25')](_0x303032,_0x194d64)['then'](function(_0x20cef6){if(_0x20cef6&&_0x20cef6['length']){return _0x20cef6;}else{var _0x39f41c=_[_0xdf1d('0x33')](_0x25e3ec);if(_0x1149b6[_0xdf1d('0x37')]){var _0x29a087={};_0x29a087[_0x1149b6[_0xdf1d('0x37')]]=_0x23c801;_[_0xdf1d('0x35')](_0x39f41c[_0xdf1d('0x36')],_0x29a087);}return _0x30faef[_0xdf1d('0x21')](_0xdf1d('0x38'))[_0xdf1d('0x25')](_0x39f41c,_0x194d64);}});}});case _0xdf1d('0x1b'):var _0x35b2fc=_['cloneDeep'](_0x25e3ec);if(_0x1149b6[_0xdf1d('0x34')]){var _0x2012b1={};_0x2012b1[_0x1149b6[_0xdf1d('0x34')]]=_0x23c801;_['merge'](_0x35b2fc[_0xdf1d('0x36')],_0x2012b1);}return _0x30faef['sobject'](_0xdf1d('0x3b'))[_0xdf1d('0x25')](_0x35b2fc,_0x194d64)[_0xdf1d('0x26')]();case'lead':var _0x5aee53=_[_0xdf1d('0x33')](_0x25e3ec);if(_0x1149b6['additionalSearchLead']){var _0x2012b1={};_0x2012b1[_0x1149b6[_0xdf1d('0x37')]]=_0x23c801;_['merge'](_0x5aee53[_0xdf1d('0x36')],_0x2012b1);}return _0x30faef[_0xdf1d('0x21')](_0xdf1d('0x38'))['find'](_0x5aee53,_0x194d64);case _0xdf1d('0x17'):var _0x463a32=_['cloneDeep'](_0x25e3ec);if(_0x1149b6[_0xdf1d('0x39')]){var _0x2012b1={};_0x2012b1[_0x1149b6[_0xdf1d('0x39')]]=_0x23c801;_['merge'](_0x463a32[_0xdf1d('0x36')],_0x2012b1);}return _0x30faef[_0xdf1d('0x21')]('Account')[_0xdf1d('0x25')](_0x463a32,_0x194d64);default:return null;}})['then'](function(_0x39cc25){if(_0x39cc25&&_0x39cc25[_0xdf1d('0x28')]){var _0x1e34ed=_[_0xdf1d('0x3c')](_0x39cc25);if(_0x1e34ed){return BPromise[_0xdf1d('0x2d')]({'id':_0x1e34ed['Id'],'name':_0x1e34ed[_0xdf1d('0x3d')],'phone':_0x1e34ed[_0xdf1d('0x3e')],'endUserType':_0x1e34ed[_0xdf1d('0x3f')][_0xdf1d('0x40')][_0xdf1d('0x41')]()});}}})[_0xdf1d('0x27')](function(_0x57dd14){if(_0x57dd14){logger['info'](_0xdf1d('0x42'),_0x57dd14['endUserType'],_0x23c801);return BPromise['resolve'](_0x57dd14);}else{logger[_0xdf1d('0x1f')](_0xdf1d('0x43'),_0x23c801);var _0x5c89e7={'Phone':_0x23c801};if(_0x1149b6[_0xdf1d('0x44')]){if(_0x1149b6['moduleCreate']===_0xdf1d('0x1b')){logger[_0xdf1d('0x1f')](_0xdf1d('0x45'),_0x23c801,_0x1149b6['moduleCreate']);_0x5c89e7[_0xdf1d('0x46')]=_0xf640ac!==_0xdf1d('0x47')?_0xf640ac:util['format'](_0xdf1d('0x48'),_0x23c801);}else if(_0x1149b6[_0xdf1d('0x44')]===_0xdf1d('0x16')){logger[_0xdf1d('0x1f')](_0xdf1d('0x45'),_0x23c801,_0x1149b6[_0xdf1d('0x44')]);_0x5c89e7[_0xdf1d('0x46')]=_0xf640ac!==_0xdf1d('0x47')?_0xf640ac:util[_0xdf1d('0x49')](_0xdf1d('0x48'),_0x23c801);_0x5c89e7[_0xdf1d('0x4a')]=_0xdf1d('0x4b');}else if(_0x1149b6[_0xdf1d('0x44')]===_0xdf1d('0x17')){logger[_0xdf1d('0x1f')](_0xdf1d('0x45'),_0x23c801,_0x1149b6[_0xdf1d('0x44')]);_0x5c89e7[_0xdf1d('0x3d')]=_0xf640ac!=='<unknown>'?_0xf640ac:util[_0xdf1d('0x49')](_0xdf1d('0x48'),_0x23c801);}else{return null;}}return _0x30faef[_0xdf1d('0x21')](_[_0xdf1d('0x4c')](_0x1149b6[_0xdf1d('0x44')]))[_0xdf1d('0x22')](_0x5c89e7)['then'](function(_0x2bc579){return BPromise[_0xdf1d('0x2d')]({'id':_0x2bc579['id'],'endUserType':_0x1149b6[_0xdf1d('0x44')]});});}});}function getCustomFields(_0x421cd0,_0x4b2179){var _0x3734fc={};if(_0x421cd0['length']>0x0){_[_0xdf1d('0x4d')](_0x421cd0,function(_0x75a132){if(_[_0xdf1d('0x4e')]([_0xdf1d('0x4f'),_0xdf1d('0x50')],_0x75a132[_0xdf1d('0x40')])&&_0x75a132[_0xdf1d('0x51')]){_0x3734fc[_0x75a132[_0xdf1d('0x51')]]=_0x75a132[_0xdf1d('0x52')][_0xdf1d('0x53')]();}else if(_0x75a132[_0xdf1d('0x40')]===_0xdf1d('0x54')&&_0x75a132[_0xdf1d('0x55')]&&_0x75a132[_0xdf1d('0x51')]){_0x4b2179[_0x75a132[_0xdf1d('0x55')]]&&(_0x3734fc[_0x75a132['idField']]=_0x4b2179[_0x75a132[_0xdf1d('0x55')]][_0xdf1d('0x53')]());}else if(_0x75a132[_0xdf1d('0x40')]===_0xdf1d('0x56')&&_0x75a132[_0xdf1d('0x57')]&&_0x75a132[_0xdf1d('0x57')][_0xdf1d('0x58')]&&_0x75a132[_0xdf1d('0x51')]){_0x4b2179[_0x75a132['Variable'][_0xdf1d('0x58')][_0xdf1d('0x41')]()]&&(_0x3734fc[_0x75a132[_0xdf1d('0x51')]]=_0x4b2179[_0x75a132[_0xdf1d('0x57')]['name']['toLowerCase']()][_0xdf1d('0x53')]());}});}return _0x3734fc;}function getConnection(_0x1dfe37){var _0x315d20=_0x1dfe37[_0xdf1d('0x59')][_0xdf1d('0x5a')](_0x1dfe37[_0xdf1d('0x5b')]);var _0x203a2a=new jsforce[(_0xdf1d('0x5c'))]({'oauth2':{'loginUrl':_0x1dfe37[_0xdf1d('0x5d')]||_0xdf1d('0x5e'),'clientId':_0x1dfe37[_0xdf1d('0x5f')],'clientSecret':_0x1dfe37[_0xdf1d('0x60')]}});return _0x203a2a['login'](_0x1dfe37['username'],_0x315d20)[_0xdf1d('0x27')](function(){logger['info'](_0xdf1d('0x61'));return _0x203a2a;});}exports[_0xdf1d('0x62')]=function(_0x4d4f88,_0x3e8d21,_0x55bbad,_0x19c593,_0x29b360,_0x504716){var _0x45cc83,_0x5f2e9b,_0x18dc5e,_0x29b159;_0x504716['serverUrl']=intUtil[_0xdf1d('0x63')](_0x504716[_0xdf1d('0x64')]);_0x504716[_0xdf1d('0x5d')]=intUtil['stripTrailingSlash'](_0x504716[_0xdf1d('0x5d')]);if(_0x29b360&&_0x29b360['monitor_format']){logger[_0xdf1d('0x1f')](_0xdf1d('0x65'),_0xdf1d('0x66'));_0x3e8d21['recordingURL']=util[_0xdf1d('0x49')](_0xdf1d('0x67'),_0x504716[_0xdf1d('0x64')],_0x3e8d21[_0xdf1d('0x68')],md5(_0x3e8d21['uniqueid']));}else{_0x3e8d21['recordingURL']='';}return getConnection(_0x504716)['then'](function(_0x5d780e){_0x29b159=_0x5d780e;return getUser(_0x504716,_0x19c593[_0xdf1d('0x69')],_0x29b159);})[_0xdf1d('0x27')](function(_0x57626){_0x45cc83=_0x57626;return getEndUser(_0x504716,_0x55bbad,_0x3e8d21['calleridname'],_0x3e8d21['calleridnum'],_0x29b159);})[_0xdf1d('0x27')](function(_0x85e284){_0x5f2e9b=_0x85e284;return getTicket(_0x504716,_0x45cc83,_0x5f2e9b,_0x55bbad,_0x3e8d21,_0x55bbad[_0xdf1d('0x6a')],_0x29b159,_0xdf1d('0x62'));})[_0xdf1d('0x27')](function(_0x39a3bb){_0x18dc5e=_0x39a3bb;logger['info'](_0xdf1d('0x6b'),_0x18dc5e['id']);logger[_0xdf1d('0x1f')](_0xdf1d('0x6c'),_0x18dc5e['id'],_0x19c593[_0xdf1d('0x58')],_0x504716[_0xdf1d('0x40')]);switch(_0x504716['type']){case _0xdf1d('0x6d'):emit(util['format']('user:%s',_0x19c593['name']),'trigger:salesforce:display',{'recordId':_0x18dc5e['id']});break;case'newTab':emit(util[_0xdf1d('0x49')](_0xdf1d('0x6e'),_0x19c593[_0xdf1d('0x58')]),_0xdf1d('0x6f'),{'uri':util[_0xdf1d('0x49')](_0xdf1d('0x70'),_0x29b159[_0xdf1d('0x71')],_0x18dc5e['id'])});break;default:logger[_0xdf1d('0x72')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0x4b0f2b){logger[_0xdf1d('0x72')](_0xdf1d('0x65'),_0x4b0f2b);});};exports[_0xdf1d('0x73')]=function(_0x4a29f9,_0x8170c2,_0x3a322b,_0x1101c7,_0x474653,_0x37500c,_0x2345eb){var _0x51401c,_0xf261de,_0x24ae02,_0x378be2;_0x37500c['serverUrl']=intUtil[_0xdf1d('0x63')](_0x37500c['serverUrl']);_0x37500c[_0xdf1d('0x5d')]=intUtil[_0xdf1d('0x63')](_0x37500c[_0xdf1d('0x5d')]);if(_0x2345eb&&_0x2345eb[_0xdf1d('0x74')]&&_0x2345eb['recordingFormat']!==_0xdf1d('0x75')){logger[_0xdf1d('0x1f')](_0xdf1d('0x76'),_0xdf1d('0x66'));_0x8170c2[_0xdf1d('0x77')]=util['format'](_0xdf1d('0x67'),_0x37500c[_0xdf1d('0x64')],_0x8170c2['uniqueid'],md5(_0x8170c2[_0xdf1d('0x68')]));}return getConnection(_0x37500c)['then'](function(_0x1964b1){_0x378be2=_0x1964b1;return getUser(_0x37500c,_0x1101c7[_0xdf1d('0x69')],_0x378be2);})[_0xdf1d('0x27')](function(_0x5c9a39){_0x51401c=_0x5c9a39;return getEndUser(_0x37500c,_0x3a322b,_0x8170c2[_0xdf1d('0x78')],_0x8170c2[_0xdf1d('0x79')],_0x378be2);})[_0xdf1d('0x27')](function(_0xc8b72b){_0xf261de=_0xc8b72b;return getTicket(_0x37500c,_0x51401c,_0xf261de,_0x3a322b,_0x8170c2,_0x3a322b[_0xdf1d('0x6a')],_0x378be2,_0xdf1d('0x73'));})[_0xdf1d('0x27')](function(_0xc0d362){_0x24ae02=_0xc0d362;logger['info']('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x24ae02['id']);logger[_0xdf1d('0x1f')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x24ae02['id'],_0x1101c7['name'],_0x37500c[_0xdf1d('0x40')]);switch(_0x37500c['type']){case _0xdf1d('0x6d'):emit(util[_0xdf1d('0x49')](_0xdf1d('0x6e'),_0x1101c7[_0xdf1d('0x58')]),_0xdf1d('0x7a'),{'recordId':_0x24ae02['id']});break;case _0xdf1d('0x7b'):emit(util[_0xdf1d('0x49')](_0xdf1d('0x6e'),_0x1101c7[_0xdf1d('0x58')]),_0xdf1d('0x6f'),{'uri':util[_0xdf1d('0x49')](_0xdf1d('0x70'),_0x378be2['instanceUrl'],_0x24ae02['id'])});break;default:logger[_0xdf1d('0x72')]('[OUTBOUND]',_0xdf1d('0x7c'));}})[_0xdf1d('0x7d')](function(_0x5cc93d){logger[_0xdf1d('0x72')]('[OUTBOUND]',_0x5cc93d);});};exports[_0xdf1d('0x7e')]=function(_0x133b23,_0x3a5f4f,_0x54e698,_0x137694,_0x562d5b,_0x562643){var _0x209501,_0x14ec87,_0x8242d0,_0x2d9907;_0x562643[_0xdf1d('0x64')]=intUtil[_0xdf1d('0x63')](_0x562643[_0xdf1d('0x64')]);_0x562643[_0xdf1d('0x5d')]=intUtil['stripTrailingSlash'](_0x562643['remoteUri']);if(_0x562d5b&&_0x562d5b[_0xdf1d('0x7f')]){logger[_0xdf1d('0x1f')]('['+_0x3a5f4f['lastevent']['toUpperCase']()+']',_0xdf1d('0x66'));_0x3a5f4f['recordingURL']=util[_0xdf1d('0x49')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x562643['serverUrl'],_0x3a5f4f[_0xdf1d('0x68')],md5(_0x3a5f4f[_0xdf1d('0x68')]));}else{_0x3a5f4f[_0xdf1d('0x77')]='';}return getConnection(_0x562643)[_0xdf1d('0x27')](function(_0x2c9196){_0x2d9907=_0x2c9196;if(!_[_0xdf1d('0x80')](_0x137694)){return getUser(_0x562643,_0x137694[_0xdf1d('0x58')],_0x2d9907);}else{return getUser(_0x562643,null,_0x2d9907);}})[_0xdf1d('0x27')](function(_0x5c6197){_0x209501=_0x5c6197;return getEndUser(_0x562643,_0x54e698,_0x3a5f4f[_0xdf1d('0x81')],_0x3a5f4f[_0xdf1d('0x82')],_0x2d9907);})[_0xdf1d('0x27')](function(_0x44b751){_0x14ec87=_0x44b751;return getTicket(_0x562643,_0x209501,_0x14ec87,_0x54e698,_0x3a5f4f,_0x54e698[_0xdf1d('0x6a')],_0x2d9907);})[_0xdf1d('0x27')](function(_0x17fd15){_0x8242d0=_0x17fd15;logger[_0xdf1d('0x1f')]('['+_0x3a5f4f[_0xdf1d('0x83')][_0xdf1d('0x84')]()+']\x20Ticket\x20%s\x20created.',_0x8242d0['id']);logger['info']('['+_0x3a5f4f[_0xdf1d('0x83')][_0xdf1d('0x84')]()+_0xdf1d('0x85'),_0x562643[_0xdf1d('0x40')]);})[_0xdf1d('0x7d')](function(_0xd6d797){logger[_0xdf1d('0x72')]('['+_0x3a5f4f[_0xdf1d('0x83')][_0xdf1d('0x84')]()+']',_0xd6d797);});};
\ No newline at end of file
index d77c4f6..157e036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a0f=['ticketNumber','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','trigger:browser:url','username','password','remoteUri','stripTrailingSlash','isNil','email','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','util','ioredis','./util','../../../../config/environment','servicenow','redis','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm','catch','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','active','userId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','System','endUserId','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','error','forEach','string','type','nameField','customField','content','toString','includes','picklist','idField','toLowerCase','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','true','getString','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20'];(function(_0x745e14,_0x262a08){var _0x55b28d=function(_0x582d93){while(--_0x582d93){_0x745e14['push'](_0x745e14['shift']());}};_0x55b28d(++_0x262a08);}(_0x2a0f,0x161));var _0xf2a0=function(_0x3d42b9,_0x483d17){_0x3d42b9=_0x3d42b9-0x0;var _0x3a36f4=_0x2a0f[_0x3d42b9];return _0x3a36f4;};'use strict';var _=require(_0xf2a0('0x0'));var Promise=require('bluebird');var rp=require('request-promise');var util=require(_0xf2a0('0x1'));var md5=require('md5');var Redis=require(_0xf2a0('0x2'));var intUtil=require(_0xf2a0('0x3'));var config=require(_0xf2a0('0x4'));var logger=require('../../../../config/logger')(_0xf2a0('0x5'));config[_0xf2a0('0x6')]=_['defaults'](config[_0xf2a0('0x6')],{'host':_0xf2a0('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf2a0('0x6')]));function getAdminUser(_0xf2f552,_0xa5c6b2,_0x1227dc,_0xf44161,_0x127018,_0x191c69){return new Promise(function(_0x34152a,_0xd9f2c4){var _0x537e5d={'method':_0xf2a0('0x8'),'uri':_0xf44161+_0xf2a0('0x9')+'&'+_0x127018+'&'+_0x191c69,'auth':_0xa5c6b2,'json':!![]};return rp(_0x537e5d)[_0xf2a0('0xa')](function(_0x1f8958){if(_0x1f8958[_0xf2a0('0xb')][_0xf2a0('0xc')]>0x0){_0x1227dc[_0xf2a0('0xd')]=_0x1f8958['result'][0x0][_0xf2a0('0xe')];}logger['info']('['+[_0xf2f552[_0xf2a0('0xf')]()]+_0xf2a0('0x10'),_0x1227dc);_0x34152a(_0x1227dc);})[_0xf2a0('0x11')](function(_0x371711){logger['error']('['+[_0xf2f552[_0xf2a0('0xf')]()]+']',_0x371711[_0xf2a0('0x12')]);_0xd9f2c4(_0x371711[_0xf2a0('0x12')]);});});}function getUser(_0x3076e7,_0x42a7e3,_0x51060a,_0x558499,_0x19e7fa){return function(_0x18226d){logger[_0xf2a0('0x13')]('['+[_0x3076e7[_0xf2a0('0xf')]()]+_0xf2a0('0x14'),_0x18226d);return new Promise(function(_0x1672b8,_0x2cc76b){if(intUtil[_0xf2a0('0x15')](_0x18226d[_0xf2a0('0x16')])){var _0x4b7d31={'method':'GET','uri':_0x51060a+_0xf2a0('0x17')+_0x18226d[_0xf2a0('0x16')]+'&'+_0x558499+'&'+_0x19e7fa,'auth':_0x42a7e3,'json':!![]};logger['info']('['+[_0x3076e7[_0xf2a0('0xf')]()]+'],\x20getUser\x20rp\x20obj',_0x4b7d31);return rp(_0x4b7d31)['then'](function(_0x3e8348){logger[_0xf2a0('0x13')]('['+[_0x3076e7['toUpperCase']()]+_0xf2a0('0x18'),_0x3e8348);if(_0x3e8348['result'][_0xf2a0('0xc')]>0x0&&String(_0x3e8348[_0xf2a0('0xb')][0x0][_0xf2a0('0x19')])==='true'){_0x18226d['userId']=_0x3e8348[_0xf2a0('0xb')][0x0][_0xf2a0('0xe')];}else{_0x18226d[_0xf2a0('0x1a')]=_0x18226d[_0xf2a0('0xd')];_0x18226d[_0xf2a0('0x16')]=_0x18226d[_0xf2a0('0x1b')];}logger[_0xf2a0('0x13')]('['+[_0x3076e7[_0xf2a0('0xf')]()]+'],\x20getUser\x20crm',_0x18226d);_0x1672b8(_0x18226d);})[_0xf2a0('0x11')](function(_0x2d6686){logger['error']('['+[_0x3076e7['toUpperCase']()]+']',_0x2d6686['message']);_0x2cc76b(_0x2d6686[_0xf2a0('0x12')]);});}else{logger['info']('['+[_0x3076e7[_0xf2a0('0xf')]()]+_0xf2a0('0x1c'));_0x18226d[_0xf2a0('0x1a')]=_0x18226d[_0xf2a0('0xd')];_0x18226d['userEmail']=_0x18226d[_0xf2a0('0x1b')];_0x1672b8(_0x18226d);}});};}function createEndUser(_0x43d993,_0x4d0329,_0x544148,_0x16a909,_0x243d83){logger[_0xf2a0('0x13')]('['+[_0x43d993['toUpperCase']()]+_0xf2a0('0x1d'),_0x544148);return new Promise(function(_0x74e838,_0x1acbff){var _0x3ecf7b={'method':_0xf2a0('0x1e'),'uri':_0x16a909+'sys_user?'+_0x243d83,'body':{'user_name':_0x544148[_0xf2a0('0x1f')],'roles':'user','first_name':_0x544148[_0xf2a0('0x1f')],'active':'true','date_format':_0xf2a0('0x20'),'phone':_0x544148['endUserNumber']},'auth':_0x4d0329,'json':!![]};return rp(_0x3ecf7b)[_0xf2a0('0xa')](function(_0x139b35){logger[_0xf2a0('0x13')]('['+[_0x43d993['toUpperCase']()]+'],\x20EndUser\x20schema',_0x139b35['result']);_0x544148[_0xf2a0('0x21')]=_0x139b35['result']['sys_id'];_0x74e838(_0x544148);})[_0xf2a0('0x11')](function(_0x4ebf6a){logger['error']('['+[_0x43d993[_0xf2a0('0xf')]()]+']',_0x4ebf6a[_0xf2a0('0x12')]);_0x1acbff(_0x4ebf6a['message']);});});}function getEndUser(_0x1d3b8c,_0x31f5ec,_0x1b5d43,_0x2f4a82,_0x3bee80){return function(_0xfb2c52){logger['info']('['+[_0x1d3b8c['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0xfb2c52);return new Promise(function(_0x52ddd1,_0x7c2bb9){var _0x3b807f={'method':_0xf2a0('0x8'),'uri':_0x1b5d43+_0xf2a0('0x22')+_0xfb2c52[_0xf2a0('0x1f')]+'&'+_0x2f4a82+'&'+_0x3bee80,'auth':_0x31f5ec,'json':!![]};return rp(_0x3b807f)[_0xf2a0('0xa')](function(_0x3c679d){if(_0x3c679d[_0xf2a0('0xb')][_0xf2a0('0xc')]>0x0){_0xfb2c52['endUserId']=_0x3c679d[_0xf2a0('0xb')][0x0][_0xf2a0('0xe')];logger[_0xf2a0('0x13')]('['+[_0x1d3b8c[_0xf2a0('0xf')]()]+_0xf2a0('0x23'),_0xfb2c52);_0x52ddd1(_0xfb2c52);}else{return createEndUser(_0x1d3b8c,_0x31f5ec,_0xfb2c52,_0x1b5d43,_0x2f4a82)[_0xf2a0('0xa')](function(_0x57d700){logger[_0xf2a0('0x13')]('['+[_0x1d3b8c[_0xf2a0('0xf')]()]+'],\x20createEndUser\x20crm',_0x57d700);_0x52ddd1(_0x57d700);});}})[_0xf2a0('0x11')](function(_0x32dacc){logger[_0xf2a0('0x24')]('['+[_0x1d3b8c[_0xf2a0('0xf')]()]+']',_0x32dacc[_0xf2a0('0x12')]);_0x7c2bb9(_0x32dacc[_0xf2a0('0x12')]);});});};}function getCustomFields(_0x43f1cf,_0x1e14a8){var _0x43d179={};if(_0x43f1cf[_0xf2a0('0xc')]>0x0){_[_0xf2a0('0x25')](_0x43f1cf,function(_0x220329){if(_['includes']([_0xf2a0('0x26'),'picklist'],_0x220329[_0xf2a0('0x27')])&&_0x220329[_0xf2a0('0x28')]&&!_0x220329[_0xf2a0('0x29')]){_0x43d179[_0x220329[_0xf2a0('0x28')]['toLowerCase']()]=_0x220329[_0xf2a0('0x2a')][_0xf2a0('0x2b')]();}else if(_[_0xf2a0('0x2c')]([_0xf2a0('0x26'),_0xf2a0('0x2d')],_0x220329[_0xf2a0('0x27')])&&_0x220329[_0xf2a0('0x2e')]&&_0x220329[_0xf2a0('0x29')]){_0x43d179[_0x220329[_0xf2a0('0x2e')][_0xf2a0('0x2f')]()]=_0x220329['content']['toString']();}else if(_0x220329['type']===_0xf2a0('0x30')&&_0x220329['variableName']&&_0x220329['idField']&&_0x220329[_0xf2a0('0x29')]){_0x43d179[_0x220329[_0xf2a0('0x2e')][_0xf2a0('0x2f')]()]=_0x1e14a8[_0x220329[_0xf2a0('0x31')]][_0xf2a0('0x2b')]();}else if(_0x220329[_0xf2a0('0x27')]===_0xf2a0('0x32')&&_0x220329[_0xf2a0('0x33')]&&_0x220329[_0xf2a0('0x33')][_0xf2a0('0x34')]&&_0x220329[_0xf2a0('0x2e')]&&_0x220329[_0xf2a0('0x29')]){_0x43d179[_0x220329[_0xf2a0('0x2e')][_0xf2a0('0x2f')]()]=_0x1e14a8[_0x220329[_0xf2a0('0x33')][_0xf2a0('0x34')][_0xf2a0('0x2f')]()][_0xf2a0('0x2b')]();}});}return _0x43d179;}function getTicket(_0x38c44a,_0x5e6ffe,_0x452f45,_0x64d9c,_0x381335,_0x378ad2){return function(_0x300df2){logger['info']('['+[_0x38c44a[_0xf2a0('0xf')]()]+_0xf2a0('0x35'),_0x300df2);return new Promise(function(_0x12c53c,_0x8635d9){var _0x608ae0=_0x38c44a[_0xf2a0('0x2f')]()==='outbound'?_0x300df2[_0xf2a0('0x1a')]:_0x300df2['endUserId'];var _0xe44a82={'method':_0xf2a0('0x1e'),'uri':_0x452f45+_0xf2a0('0x36')+'?'+_0x378ad2,'body':Object['assign']({},{'active':_0xf2a0('0x37'),'caller_id':_0x608ae0,'assigned_to':_0x300df2[_0xf2a0('0x1a')],'short_description':intUtil[_0xf2a0('0x38')](_0x64d9c['Subjects'],_0x381335,'\x20'),'description':intUtil['getString'](_0x64d9c['Descriptions'],_0x381335,'\x0a')},getCustomFields(_0x64d9c[_0xf2a0('0x39')],_0x381335)),'auth':_0x5e6ffe,'json':!![]};return rp(_0xe44a82)[_0xf2a0('0xa')](function(_0x13f7eb){logger[_0xf2a0('0x13')]('['+[_0x38c44a[_0xf2a0('0xf')]()]+_0xf2a0('0x3a'),_0x13f7eb[_0xf2a0('0xb')]);_0x300df2[_0xf2a0('0x3b')]=_0x13f7eb[_0xf2a0('0xb')][_0xf2a0('0xe')];_0x300df2['ticketNumber']=_0x13f7eb['result'][_0xf2a0('0x3c')];logger['info']('['+[_0x38c44a[_0xf2a0('0xf')]()]+_0xf2a0('0x3d'),_0x300df2);_0x12c53c(_0x300df2);})[_0xf2a0('0x11')](function(_0x21f25a){logger['error']('['+[_0x38c44a[_0xf2a0('0xf')]()]+']',_0x21f25a[_0xf2a0('0x12')]);_0x8635d9(_0x21f25a[_0xf2a0('0x12')]);});});};}function createRemoteTag(_0x1ce6b7,_0x5bd2f4,_0x1ad024,_0x1fd80b){return new Promise(function(_0x5b35cd,_0x7897ec){var _0x5e8d43={'method':'POST','uri':_0x1ad024+'label'+'?'+_0x1fd80b,'body':{'short_description':_0x1ce6b7,'global':!![],'active':!![],'name':_0x1ce6b7},'auth':_0x5bd2f4,'json':!![]};return rp(_0x5e8d43)[_0xf2a0('0xa')](function(_0x2d2326){var _0x2c36fb=_0x2d2326[_0xf2a0('0xb')][_0xf2a0('0xe')];_0x5b35cd(_0x2c36fb);});});}function getRemoteTag(_0x14287e,_0x17bf12,_0xb9701e,_0x5d3ba3,_0x4339fc){return new Promise(function(_0x21516,_0x2e1dae){var _0x2807eb={'method':_0xf2a0('0x8'),'uri':_0xb9701e+_0xf2a0('0x3e')+_0xf2a0('0x3f')+_0x14287e+'&'+_0x5d3ba3,'auth':_0x17bf12,'json':!![]};return rp(_0x2807eb)[_0xf2a0('0xa')](function(_0x18480a){if(_0x18480a['result']['length']>0x0){var _0x663d1=_0x18480a['result'][0x0][_0xf2a0('0xe')];_0x21516(_0x663d1);}else{return createRemoteTag(_0x14287e,_0x17bf12,_0xb9701e,_0x5d3ba3)['then'](function(_0x4d8a5d){_0x21516(_0x4d8a5d);});}});});}function assignTagToIncident(_0x30fd48,_0x1e8a5e,_0x2970c7,_0x489d23,_0x2be117){return new Promise(function(_0x486476,_0x31b2d2){var _0x47ab46={'method':_0xf2a0('0x1e'),'uri':_0x2970c7+_0xf2a0('0x40')+'?'+_0x2be117,'body':{'label':_0x30fd48,'table':_0xf2a0('0x36'),'id_type':_0xf2a0('0x41'),'table_key':_0x489d23['ticketId'],'title':_0xf2a0('0x42')+_0x489d23[_0xf2a0('0x43')],'id_display':_0x489d23['ticketNumber']},'auth':_0x1e8a5e,'json':!![]};return rp(_0x47ab46)[_0xf2a0('0xa')](function(_0x59b154){_0x486476();})['catch'](function(){_0x486476();});});}function manageTags(_0x18d88c,_0x3c0c98,_0x5317bd,_0x42c4ad,_0x283078,_0x417e83,_0x1ca104){return new Promise(function(_0x540d54,_0x552b96){var _0x459bbc=[];_0x3c0c98[_0xf2a0('0x25')](function(_0x442243){_0x459bbc[_0xf2a0('0x44')](getRemoteTag(_0x442243,_0x5317bd,_0x42c4ad,_0x417e83,_0x1ca104));});return Promise[_0xf2a0('0x45')](_0x459bbc)[_0xf2a0('0xa')](function(_0x412e84){if(_0x412e84[_0xf2a0('0xc')]){logger[_0xf2a0('0x13')]('['+[_0x18d88c[_0xf2a0('0xf')]()]+_0xf2a0('0x46'),_0x412e84);var _0x1656cc=[];_0x412e84[_0xf2a0('0x25')](function(_0x3cf226){_0x1656cc['push'](assignTagToIncident(_0x3cf226,_0x5317bd,_0x42c4ad,_0x283078,_0x417e83));});return Promise[_0xf2a0('0x45')](_0x1656cc)[_0xf2a0('0xa')](function(){_0x540d54();})[_0xf2a0('0x11')](function(){_0x540d54();});}else{_0x540d54();}});});}function getTags(_0x1b5df6,_0x247486,_0x50e06d,_0x2a932f,_0x263c2a,_0x32f958){return function(_0x4fe4df){return new Promise(function(_0x443911,_0x72cbd7){var _0x149d9b=[];var _0x1a171a=_0x2a932f[_0xf2a0('0x47')];if(_0x1a171a&&_0x1a171a[_0xf2a0('0xc')]>0x0){_0x149d9b=_['map'](_0x1a171a,_0xf2a0('0x34'));}if(_0x149d9b[_0xf2a0('0xc')]>0x0){return manageTags(_0x1b5df6,_0x149d9b,_0x247486,_0x50e06d,_0x4fe4df,_0x263c2a,_0x32f958)[_0xf2a0('0xa')](function(){_0x443911(_0x4fe4df);});}else{_0x443911(_0x4fe4df);}});};}function emit(_0x2375ba,_0x251d4f,_0x3fdf62){var _0x59f41e=_0xf2a0('0x48')+_0xf2a0('0x49')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xf2a0('0x4a');var _0x26b8cc={'uri':_0x2375ba+_0xf2a0('0x4b')+_0x3fdf62+_0x59f41e};io['to'](util[_0xf2a0('0x4c')](_0xf2a0('0x4d'),_0x251d4f))['emit'](_0xf2a0('0x4e'),_0x26b8cc);}exports['cs']=function(_0x5f1c44,_0x3f38b7,_0xcb3127,_0x1d01da,_0x529c1d,_0x2c6044,_0x472e05,_0x178743){var _0x154b63={};var _0x35a8d9={'user':_0x2c6044[_0xf2a0('0x4f')],'pass':_0x2c6044[_0xf2a0('0x50')]};var _0x11e07f='sysparm_limit=1';var _0x2e7a64='sysparm_display_value=true';_0x2c6044[_0xf2a0('0x51')]=intUtil['stripTrailingSlash'](_0x2c6044[_0xf2a0('0x51')]);_0x2c6044['serverUrl']=intUtil[_0xf2a0('0x52')](_0x2c6044['serverUrl']);var _0x182f61=util[_0xf2a0('0x4c')]('%s/api/now/table/',_0x2c6044['remoteUri']);_0x154b63['userEmail']=!_[_0xf2a0('0x53')](_0x1d01da)?_0x1d01da[_0xf2a0('0x54')]:null;_0x154b63[_0xf2a0('0x1b')]=_0x2c6044[_0xf2a0('0x54')];_0x154b63['endUserNumber']=_0x178743[_0xf2a0('0x2f')]()===_0xf2a0('0x55')?_0x3f38b7[_0xf2a0('0x56')]:_0x3f38b7[_0xf2a0('0x57')];_0x154b63[_0xf2a0('0x58')]=_0x178743===_0xf2a0('0x59')||_0x178743===_0xf2a0('0x5a')?_0xf2a0('0x59'):_0xf2a0('0x55');var _0x5418c2=util[_0xf2a0('0x4c')](_0xf2a0('0x5b'),_0x2c6044['serverUrl'],_0x3f38b7[_0xf2a0('0x5c')],md5(_0x3f38b7['uniqueid']));if(_0x529c1d&&_0x529c1d[_0xf2a0('0x5d')]){logger['info'](_0xf2a0('0x5e'),'Recording\x20is\x20enabled!');_0x3f38b7[_0xf2a0('0x5f')]=_0x5418c2;}else if(_0x472e05&&_0x472e05[_0xf2a0('0x60')]&&_0x472e05[_0xf2a0('0x60')]!==_0xf2a0('0x61')){logger[_0xf2a0('0x13')](_0xf2a0('0x62'),_0xf2a0('0x63'));_0x3f38b7['recordingURL']=_0x5418c2;}else{_0x3f38b7[_0xf2a0('0x5f')]='';}return getAdminUser(_0x178743,_0x35a8d9,_0x154b63,_0x182f61,_0x2e7a64,_0x11e07f)[_0xf2a0('0xa')](getUser(_0x178743,_0x35a8d9,_0x182f61,_0x2e7a64,_0x11e07f))[_0xf2a0('0xa')](getEndUser(_0x178743,_0x35a8d9,_0x182f61,_0x2e7a64,_0x11e07f))['then'](getTicket(_0x178743,_0x35a8d9,_0x182f61,_0xcb3127,_0x3f38b7,_0x2e7a64))[_0xf2a0('0xa')](function(_0x39673a){logger[_0xf2a0('0x13')](util[_0xf2a0('0x4c')](_0xf2a0('0x64'),_0x39673a[_0xf2a0('0x3b')]));logger[_0xf2a0('0x13')](util[_0xf2a0('0x4c')](_0xf2a0('0x65'),_0x178743));if(_0x178743!=='unmanaged'){logger[_0xf2a0('0x13')]('['+[_0x178743[_0xf2a0('0xf')]()]+']',_0xf2a0('0x66'));emit(_0x2c6044[_0xf2a0('0x51')],_0x1d01da[_0xf2a0('0x34')],_0x39673a['ticketId']);}})[_0xf2a0('0x11')](function(_0x3d53d4){logger['error']('['+[_0x178743['toUpperCase']()]+_0xf2a0('0x67'),util[_0xf2a0('0x68')](_0x3d53d4,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xa215=['recordingFormat','none','[OUTBOUND]','recordingURL','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm','error','message','info','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','length','active','true','userId','adminEmail','catch','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','endUserId','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','picklist','type','nameField','customField','toLowerCase','content','toString','includes','string','idField','variableName','customVariable','name','outbound','assign','Subjects','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','?sysparm_query=name%3D','label_entry','incident','Incident','Incident\x20-\x20','push','all','Tags','%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','emit','trigger:browser:url','password','sysparm_display_value=true','serverUrl','%s/api/now/table/','remoteUri','isNil','email','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!'];(function(_0x219bd1,_0x977bf){var _0x5ddf55=function(_0x5b3394){while(--_0x5b3394){_0x219bd1['push'](_0x219bd1['shift']());}};_0x5ddf55(++_0x977bf);}(_0xa215,0x142));var _0x5a21=function(_0x57171b,_0xfe67c6){_0x57171b=_0x57171b-0x0;var _0x33a2c8=_0xa215[_0x57171b];return _0x33a2c8;};'use strict';var _=require(_0x5a21('0x0'));var Promise=require('bluebird');var rp=require(_0x5a21('0x1'));var util=require(_0x5a21('0x2'));var md5=require('md5');var Redis=require(_0x5a21('0x3'));var intUtil=require('./util');var config=require(_0x5a21('0x4'));var logger=require(_0x5a21('0x5'))(_0x5a21('0x6'));config[_0x5a21('0x7')]=_['defaults'](config[_0x5a21('0x7')],{'host':_0x5a21('0x8'),'port':0x18eb});var io=require(_0x5a21('0x9'))(new Redis(config[_0x5a21('0x7')]));function getAdminUser(_0xd63df3,_0x35a928,_0x372946,_0x403ad5,_0x4dcdad,_0x41bbc8){return new Promise(function(_0x3c5fc0,_0x214909){var _0x59012e={'method':_0x5a21('0xa'),'uri':_0x403ad5+_0x5a21('0xb')+'&'+_0x4dcdad+'&'+_0x41bbc8,'auth':_0x35a928,'json':!![]};return rp(_0x59012e)[_0x5a21('0xc')](function(_0x199fd6){if(_0x199fd6[_0x5a21('0xd')]['length']>0x0){_0x372946[_0x5a21('0xe')]=_0x199fd6[_0x5a21('0xd')][0x0][_0x5a21('0xf')];}logger['info']('['+[_0xd63df3[_0x5a21('0x10')]()]+_0x5a21('0x11'),_0x372946);_0x3c5fc0(_0x372946);})['catch'](function(_0x1228ff){logger[_0x5a21('0x12')]('['+[_0xd63df3[_0x5a21('0x10')]()]+']',_0x1228ff[_0x5a21('0x13')]);_0x214909(_0x1228ff['message']);});});}function getUser(_0x5d2f6c,_0x11c439,_0x4187c4,_0x2c8a74,_0x50f722){return function(_0x57c74a){logger[_0x5a21('0x14')]('['+[_0x5d2f6c[_0x5a21('0x10')]()]+'],\x20getUser\x20input\x20crm',_0x57c74a);return new Promise(function(_0x4de2eb,_0xf2ec12){if(intUtil[_0x5a21('0x15')](_0x57c74a[_0x5a21('0x16')])){var _0x462117={'method':_0x5a21('0xa'),'uri':_0x4187c4+_0x5a21('0x17')+_0x57c74a[_0x5a21('0x16')]+'&'+_0x2c8a74+'&'+_0x50f722,'auth':_0x11c439,'json':!![]};logger[_0x5a21('0x14')]('['+[_0x5d2f6c[_0x5a21('0x10')]()]+_0x5a21('0x18'),_0x462117);return rp(_0x462117)[_0x5a21('0xc')](function(_0x522dad){logger[_0x5a21('0x14')]('['+[_0x5d2f6c[_0x5a21('0x10')]()]+_0x5a21('0x19'),_0x522dad);if(_0x522dad[_0x5a21('0xd')][_0x5a21('0x1a')]>0x0&&String(_0x522dad[_0x5a21('0xd')][0x0][_0x5a21('0x1b')])===_0x5a21('0x1c')){_0x57c74a[_0x5a21('0x1d')]=_0x522dad[_0x5a21('0xd')][0x0][_0x5a21('0xf')];}else{_0x57c74a[_0x5a21('0x1d')]=_0x57c74a[_0x5a21('0xe')];_0x57c74a['userEmail']=_0x57c74a[_0x5a21('0x1e')];}logger['info']('['+[_0x5d2f6c[_0x5a21('0x10')]()]+'],\x20getUser\x20crm',_0x57c74a);_0x4de2eb(_0x57c74a);})[_0x5a21('0x1f')](function(_0x527fb1){logger['error']('['+[_0x5d2f6c[_0x5a21('0x10')]()]+']',_0x527fb1[_0x5a21('0x13')]);_0xf2ec12(_0x527fb1['message']);});}else{logger[_0x5a21('0x14')]('['+[_0x5d2f6c['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x57c74a[_0x5a21('0x1d')]=_0x57c74a[_0x5a21('0xe')];_0x57c74a[_0x5a21('0x16')]=_0x57c74a[_0x5a21('0x1e')];_0x4de2eb(_0x57c74a);}});};}function createEndUser(_0x114ef3,_0x4105af,_0x12095d,_0x445c33,_0x57282){logger[_0x5a21('0x14')]('['+[_0x114ef3[_0x5a21('0x10')]()]+_0x5a21('0x20'),_0x12095d);return new Promise(function(_0x1cc147,_0x1ee990){var _0x10ea24={'method':_0x5a21('0x21'),'uri':_0x445c33+_0x5a21('0x22')+_0x57282,'body':{'user_name':_0x12095d[_0x5a21('0x23')],'roles':_0x5a21('0x24'),'first_name':_0x12095d[_0x5a21('0x23')],'active':_0x5a21('0x1c'),'date_format':_0x5a21('0x25'),'phone':_0x12095d[_0x5a21('0x23')]},'auth':_0x4105af,'json':!![]};return rp(_0x10ea24)['then'](function(_0x19d25d){logger[_0x5a21('0x14')]('['+[_0x114ef3[_0x5a21('0x10')]()]+'],\x20EndUser\x20schema',_0x19d25d[_0x5a21('0xd')]);_0x12095d[_0x5a21('0x26')]=_0x19d25d[_0x5a21('0xd')][_0x5a21('0xf')];_0x1cc147(_0x12095d);})[_0x5a21('0x1f')](function(_0x29ff22){logger[_0x5a21('0x12')]('['+[_0x114ef3['toUpperCase']()]+']',_0x29ff22[_0x5a21('0x13')]);_0x1ee990(_0x29ff22[_0x5a21('0x13')]);});});}function getEndUser(_0x5a5830,_0x3f6371,_0x498d4c,_0xe76b09,_0x14858f){return function(_0x2915dd){logger[_0x5a21('0x14')]('['+[_0x5a5830[_0x5a21('0x10')]()]+'],\x20getEndUser\x20input\x20crm',_0x2915dd);return new Promise(function(_0x261357,_0x465815){var _0x4f3c83={'method':'GET','uri':_0x498d4c+_0x5a21('0x27')+_0x2915dd['endUserNumber']+'&'+_0xe76b09+'&'+_0x14858f,'auth':_0x3f6371,'json':!![]};return rp(_0x4f3c83)[_0x5a21('0xc')](function(_0x4113c0){if(_0x4113c0[_0x5a21('0xd')][_0x5a21('0x1a')]>0x0){_0x2915dd[_0x5a21('0x26')]=_0x4113c0[_0x5a21('0xd')][0x0][_0x5a21('0xf')];logger['info']('['+[_0x5a5830['toUpperCase']()]+_0x5a21('0x28'),_0x2915dd);_0x261357(_0x2915dd);}else{return createEndUser(_0x5a5830,_0x3f6371,_0x2915dd,_0x498d4c,_0xe76b09)[_0x5a21('0xc')](function(_0x497ca8){logger[_0x5a21('0x14')]('['+[_0x5a5830[_0x5a21('0x10')]()]+_0x5a21('0x29'),_0x497ca8);_0x261357(_0x497ca8);});}})[_0x5a21('0x1f')](function(_0x194934){logger[_0x5a21('0x12')]('['+[_0x5a5830[_0x5a21('0x10')]()]+']',_0x194934[_0x5a21('0x13')]);_0x465815(_0x194934[_0x5a21('0x13')]);});});};}function getCustomFields(_0x54ae84,_0x5b4ae6){var _0x5a0939={};if(_0x54ae84[_0x5a21('0x1a')]>0x0){_[_0x5a21('0x2a')](_0x54ae84,function(_0x51afda){if(_['includes'](['string',_0x5a21('0x2b')],_0x51afda[_0x5a21('0x2c')])&&_0x51afda[_0x5a21('0x2d')]&&!_0x51afda[_0x5a21('0x2e')]){_0x5a0939[_0x51afda[_0x5a21('0x2d')][_0x5a21('0x2f')]()]=_0x51afda[_0x5a21('0x30')][_0x5a21('0x31')]();}else if(_[_0x5a21('0x32')]([_0x5a21('0x33'),'picklist'],_0x51afda[_0x5a21('0x2c')])&&_0x51afda['idField']&&_0x51afda[_0x5a21('0x2e')]){_0x5a0939[_0x51afda[_0x5a21('0x34')][_0x5a21('0x2f')]()]=_0x51afda[_0x5a21('0x30')][_0x5a21('0x31')]();}else if(_0x51afda[_0x5a21('0x2c')]==='variable'&&_0x51afda[_0x5a21('0x35')]&&_0x51afda[_0x5a21('0x34')]&&_0x51afda[_0x5a21('0x2e')]){_0x5a0939[_0x51afda[_0x5a21('0x34')][_0x5a21('0x2f')]()]=_0x5b4ae6[_0x51afda[_0x5a21('0x35')]][_0x5a21('0x31')]();}else if(_0x51afda[_0x5a21('0x2c')]===_0x5a21('0x36')&&_0x51afda['Variable']&&_0x51afda['Variable'][_0x5a21('0x37')]&&_0x51afda[_0x5a21('0x34')]&&_0x51afda[_0x5a21('0x2e')]){_0x5a0939[_0x51afda[_0x5a21('0x34')][_0x5a21('0x2f')]()]=_0x5b4ae6[_0x51afda['Variable'][_0x5a21('0x37')][_0x5a21('0x2f')]()][_0x5a21('0x31')]();}});}return _0x5a0939;}function getTicket(_0x5d9b35,_0x244a98,_0x3d478c,_0x44b3cb,_0x38510b,_0x2d4ea6){return function(_0x40bf7f){logger['info']('['+[_0x5d9b35[_0x5a21('0x10')]()]+']\x20getTicket\x20input\x20crm',_0x40bf7f);return new Promise(function(_0x5e2786,_0x7b05d1){var _0x48865f=_0x5d9b35[_0x5a21('0x2f')]()===_0x5a21('0x38')?_0x40bf7f['userId']:_0x40bf7f['endUserId'];var _0x5a2df5={'method':_0x5a21('0x21'),'uri':_0x3d478c+'incident'+'?'+_0x2d4ea6,'body':Object[_0x5a21('0x39')]({},{'active':_0x5a21('0x1c'),'caller_id':_0x48865f,'assigned_to':_0x40bf7f[_0x5a21('0x1d')],'short_description':intUtil['getString'](_0x44b3cb[_0x5a21('0x3a')],_0x38510b,'\x20'),'description':intUtil[_0x5a21('0x3b')](_0x44b3cb[_0x5a21('0x3c')],_0x38510b,'\x0a')},getCustomFields(_0x44b3cb[_0x5a21('0x3d')],_0x38510b)),'auth':_0x244a98,'json':!![]};return rp(_0x5a2df5)[_0x5a21('0xc')](function(_0x5068af){logger[_0x5a21('0x14')]('['+[_0x5d9b35[_0x5a21('0x10')]()]+_0x5a21('0x3e'),_0x5068af[_0x5a21('0xd')]);_0x40bf7f[_0x5a21('0x3f')]=_0x5068af[_0x5a21('0xd')][_0x5a21('0xf')];_0x40bf7f[_0x5a21('0x40')]=_0x5068af[_0x5a21('0xd')][_0x5a21('0x41')];logger[_0x5a21('0x14')]('['+[_0x5d9b35['toUpperCase']()]+_0x5a21('0x42'),_0x40bf7f);_0x5e2786(_0x40bf7f);})[_0x5a21('0x1f')](function(_0x54393b){logger['error']('['+[_0x5d9b35[_0x5a21('0x10')]()]+']',_0x54393b['message']);_0x7b05d1(_0x54393b[_0x5a21('0x13')]);});});};}function createRemoteTag(_0xf1a27f,_0x5f44a8,_0x56d16d,_0x4edcf3){return new Promise(function(_0x1c3932,_0x4d3b49){var _0x924f69={'method':_0x5a21('0x21'),'uri':_0x56d16d+'label'+'?'+_0x4edcf3,'body':{'short_description':_0xf1a27f,'global':!![],'active':!![],'name':_0xf1a27f},'auth':_0x5f44a8,'json':!![]};return rp(_0x924f69)[_0x5a21('0xc')](function(_0x1af5d0){var _0x24bf4d=_0x1af5d0[_0x5a21('0xd')]['sys_id'];_0x1c3932(_0x24bf4d);});});}function getRemoteTag(_0x349fec,_0x726572,_0x7d543a,_0x23eba,_0x2fcf12){return new Promise(function(_0x39b9ce,_0x54438e){var _0xaec4a0={'method':'GET','uri':_0x7d543a+'label'+_0x5a21('0x43')+_0x349fec+'&'+_0x23eba,'auth':_0x726572,'json':!![]};return rp(_0xaec4a0)['then'](function(_0x491915){if(_0x491915[_0x5a21('0xd')][_0x5a21('0x1a')]>0x0){var _0x506f28=_0x491915[_0x5a21('0xd')][0x0][_0x5a21('0xf')];_0x39b9ce(_0x506f28);}else{return createRemoteTag(_0x349fec,_0x726572,_0x7d543a,_0x23eba)[_0x5a21('0xc')](function(_0x36cb97){_0x39b9ce(_0x36cb97);});}});});}function assignTagToIncident(_0x5888b5,_0x25e31c,_0x23afe6,_0x1dbde1,_0x48bc2d){return new Promise(function(_0x5912bb,_0x54368f){var _0x209be7={'method':_0x5a21('0x21'),'uri':_0x23afe6+_0x5a21('0x44')+'?'+_0x48bc2d,'body':{'label':_0x5888b5,'table':_0x5a21('0x45'),'id_type':_0x5a21('0x46'),'table_key':_0x1dbde1['ticketId'],'title':_0x5a21('0x47')+_0x1dbde1[_0x5a21('0x40')],'id_display':_0x1dbde1[_0x5a21('0x40')]},'auth':_0x25e31c,'json':!![]};return rp(_0x209be7)['then'](function(_0x49a2f1){_0x5912bb();})[_0x5a21('0x1f')](function(){_0x5912bb();});});}function manageTags(_0x450dcc,_0xd34462,_0x3ac215,_0xe357fb,_0x80ef53,_0x218648,_0x37c66f){return new Promise(function(_0x325bc2,_0x398a36){var _0x514721=[];_0xd34462[_0x5a21('0x2a')](function(_0x6996d5){_0x514721[_0x5a21('0x48')](getRemoteTag(_0x6996d5,_0x3ac215,_0xe357fb,_0x218648,_0x37c66f));});return Promise[_0x5a21('0x49')](_0x514721)[_0x5a21('0xc')](function(_0x2be042){if(_0x2be042[_0x5a21('0x1a')]){logger[_0x5a21('0x14')]('['+[_0x450dcc[_0x5a21('0x10')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x2be042);var _0x9d46e=[];_0x2be042['forEach'](function(_0x412d08){_0x9d46e[_0x5a21('0x48')](assignTagToIncident(_0x412d08,_0x3ac215,_0xe357fb,_0x80ef53,_0x218648));});return Promise['all'](_0x9d46e)[_0x5a21('0xc')](function(){_0x325bc2();})[_0x5a21('0x1f')](function(){_0x325bc2();});}else{_0x325bc2();}});});}function getTags(_0x1fc5fe,_0x3b736c,_0x6dddbb,_0x288016,_0x333b52,_0x5d5a76){return function(_0x4b644d){return new Promise(function(_0x471d5d,_0x14cadb){var _0x39e551=[];var _0x413a9a=_0x288016[_0x5a21('0x4a')];if(_0x413a9a&&_0x413a9a[_0x5a21('0x1a')]>0x0){_0x39e551=_['map'](_0x413a9a,'name');}if(_0x39e551[_0x5a21('0x1a')]>0x0){return manageTags(_0x1fc5fe,_0x39e551,_0x3b736c,_0x6dddbb,_0x4b644d,_0x333b52,_0x5d5a76)[_0x5a21('0xc')](function(){_0x471d5d(_0x4b644d);});}else{_0x471d5d(_0x4b644d);}});};}function emit(_0x130c3c,_0x3163ef,_0xb21438){var _0x476c6c=_0x5a21('0x4b')+_0x5a21('0x4c')+_0x5a21('0x4d')+'%255EORDERBYDESCnumber';var _0x5d3c63={'uri':_0x130c3c+_0x5a21('0x4e')+_0xb21438+_0x476c6c};io['to'](util[_0x5a21('0x4f')]('user:%s',_0x3163ef))[_0x5a21('0x50')](_0x5a21('0x51'),_0x5d3c63);}exports['cs']=function(_0x41e8a3,_0x272f2e,_0x521f94,_0x4d21f2,_0x4c1368,_0x11baed,_0x30b0f1,_0x313340){var _0x40a2b6={};var _0x31c8ae={'user':_0x11baed['username'],'pass':_0x11baed[_0x5a21('0x52')]};var _0x1f5f15='sysparm_limit=1';var _0x27ea3c=_0x5a21('0x53');_0x11baed['remoteUri']=intUtil['stripTrailingSlash'](_0x11baed['remoteUri']);_0x11baed['serverUrl']=intUtil['stripTrailingSlash'](_0x11baed[_0x5a21('0x54')]);var _0xe9ec3e=util[_0x5a21('0x4f')](_0x5a21('0x55'),_0x11baed[_0x5a21('0x56')]);_0x40a2b6[_0x5a21('0x16')]=!_[_0x5a21('0x57')](_0x4d21f2)?_0x4d21f2['email']:null;_0x40a2b6['adminEmail']=_0x11baed[_0x5a21('0x58')];_0x40a2b6[_0x5a21('0x23')]=_0x313340[_0x5a21('0x2f')]()==='outbound'?_0x272f2e['destcalleridnum']:_0x272f2e[_0x5a21('0x59')];_0x40a2b6[_0x5a21('0x5a')]=_0x313340===_0x5a21('0x5b')||_0x313340===_0x5a21('0x5c')?_0x5a21('0x5b'):_0x5a21('0x38');var _0xa4c92e=util['format'](_0x5a21('0x5d'),_0x11baed[_0x5a21('0x54')],_0x272f2e[_0x5a21('0x5e')],md5(_0x272f2e[_0x5a21('0x5e')]));if(_0x4c1368&&_0x4c1368[_0x5a21('0x5f')]){logger[_0x5a21('0x14')](_0x5a21('0x60'),_0x5a21('0x61'));_0x272f2e['recordingURL']=_0xa4c92e;}else if(_0x30b0f1&&_0x30b0f1[_0x5a21('0x62')]&&_0x30b0f1['recordingFormat']!==_0x5a21('0x63')){logger[_0x5a21('0x14')](_0x5a21('0x64'),'Recording\x20is\x20enabled!');_0x272f2e[_0x5a21('0x65')]=_0xa4c92e;}else{_0x272f2e[_0x5a21('0x65')]='';}return getAdminUser(_0x313340,_0x31c8ae,_0x40a2b6,_0xe9ec3e,_0x27ea3c,_0x1f5f15)[_0x5a21('0xc')](getUser(_0x313340,_0x31c8ae,_0xe9ec3e,_0x27ea3c,_0x1f5f15))[_0x5a21('0xc')](getEndUser(_0x313340,_0x31c8ae,_0xe9ec3e,_0x27ea3c,_0x1f5f15))[_0x5a21('0xc')](getTicket(_0x313340,_0x31c8ae,_0xe9ec3e,_0x521f94,_0x272f2e,_0x27ea3c))[_0x5a21('0xc')](function(_0x460121){logger['info'](util[_0x5a21('0x4f')]('The\x20ticket\x20ID\x20is:\x20%s',_0x460121[_0x5a21('0x3f')]));logger[_0x5a21('0x14')](util[_0x5a21('0x4f')](_0x5a21('0x66'),_0x313340));if(_0x313340!==_0x5a21('0x5c')){logger[_0x5a21('0x14')]('['+[_0x313340[_0x5a21('0x10')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x11baed[_0x5a21('0x56')],_0x4d21f2[_0x5a21('0x37')],_0x460121[_0x5a21('0x3f')]);}})[_0x5a21('0x1f')](function(_0x25eb98){logger[_0x5a21('0x12')]('['+[_0x313340[_0x5a21('0x10')]()]+_0x5a21('0x67'),util[_0x5a21('0x68')](_0x25eb98,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 5142e25..f864017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17de=['Subjects','assigned_user_id','created_by','description','date_start','slice','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','name','direction','length','variableName','push','idField','set_entry','JSON','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','stringify','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','entry_list','find','name_value_list','Agent\x20found!','resolve','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','then','Enduser\x20created.','first_name','[HTTP]','map','forEach','type','nameField','toLowerCase','content','string','customField','custom_fields','variable','Variable','login','username','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','queue','remoteUri','stripTrailingSlash','serverUrl','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Inbound','The\x20Ticket\x20ID\x20is:','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','trigger:browser:url','catch','error','outbound','uri','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Fields','Ticket\x20created!','users','contacts','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','unmanaged','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','lodash','request-promise','bluebird','util','../../../../config/environment','../../../../config/logger','sugarcrm','defaults','socket.io-emitter','redis','POST','emit','getString'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x17de,0x6c));var _0xe17d=function(_0x2103dd,_0x2cb8f6){_0x2103dd=_0x2103dd-0x0;var _0x457cf6=_0x17de[_0x2103dd];return _0x457cf6;};'use strict';var _=require(_0xe17d('0x0'));var rp=require(_0xe17d('0x1'));var BPromise=require(_0xe17d('0x2'));var md5=require('md5');var util=require(_0xe17d('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0xe17d('0x4'));var logger=require(_0xe17d('0x5'))(_0xe17d('0x6'));config['redis']=_[_0xe17d('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe17d('0x8'))(new Redis(config[_0xe17d('0x9')]));var def={'method':_0xe17d('0xa'),'json':!![]};function emit(_0x57cbf7,_0x343083,_0x142c26){io['to'](_0x57cbf7)[_0xe17d('0xb')](_0x343083,_0x142c26);}function getTicket(_0x2f84bf,_0x49f5e8,_0x54e3ac,_0xfa6ffc,_0x37b697,_0x4a9ab2,_0x11ba68,_0x11a1ba){logger['info']('Creating\x20new\x20ticket...');var _0x432832=new Date();var _0x3b5799=[{'name':'name','value':intUtil[_0xe17d('0xc')](_0xfa6ffc[_0xe17d('0xd')],_0x37b697,'\x20')},{'name':_0xe17d('0xe'),'value':_0x49f5e8['id']},{'name':_0xe17d('0xf'),'value':_0x49f5e8['id']},{'name':_0xe17d('0x10'),'value':intUtil['getString'](_0xfa6ffc['Descriptions'],_0x37b697,'\x0a')},{'name':_0xe17d('0x11'),'value':_0x432832['toISOString']()[_0xe17d('0x12')](0x0,0x13)['replace']('T','\x20')},{'name':_0xe17d('0x13'),'value':'0'},{'name':_0xe17d('0x14'),'value':'15'},{'name':_0xe17d('0x15'),'value':_0x54e3ac['id']},{'name':_0xe17d('0x16'),'value':_0xe17d('0x17')},{'name':_0xe17d('0x18'),'value':_0x54e3ac[_0xe17d('0x19')]},{'name':_0xe17d('0x1a'),'value':_0x11a1ba}];if(_0x4a9ab2[_0xe17d('0x1b')]){_['forEach'](_0x4a9ab2,function(_0x12bd72){if(_0x37b697[_0x12bd72[_0xe17d('0x1c')]]){_0x3b5799[_0xe17d('0x1d')]({'name':_0x12bd72[_0xe17d('0x1e')],'value':_0x37b697[_0x12bd72[_0xe17d('0x1c')]]});}});}return request({'form':{'method':_0xe17d('0x1f'),'input_type':_0xe17d('0x20'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x11ba68['id'],'module_name':_0xe17d('0x21'),'name_value_list':_0x3b5799})}});}function getAuth(_0x33d3d6){return util[_0xe17d('0x22')](_0xe17d('0x23'),new Buffer(_0x33d3d6[_0xe17d('0x24')]+':X')[_0xe17d('0x25')](_0xe17d('0x26')));}function getServerInfo(_0x32d478){return request({'form':{'method':_0xe17d('0x27'),'input_type':_0xe17d('0x20'),'response_type':_0xe17d('0x20'),'rest_data':JSON['stringify']({'session':_0x32d478['id']})}});}function getUser(_0x1ad62d,_0x2224ec,_0x24e844){if(!_[_0xe17d('0x28')](_0x2224ec)){logger[_0xe17d('0x29')](_0xe17d('0x2a'),_0x2224ec);return request({'form':{'method':_0xe17d('0x2b'),'input_type':_0xe17d('0x20'),'response_type':_0xe17d('0x20'),'rest_data':JSON[_0xe17d('0x2c')]({'session':_0x24e844['id'],'module_name':_0xe17d('0x2d'),'query':util['format'](_0xe17d('0x2e'),_0x2224ec),'order_by':'','offset':'0','select_fields':['id',_0xe17d('0x19'),_0xe17d('0x2f')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0xb91315){if(_0xb91315[_0xe17d('0x30')][_0xe17d('0x1b')]){var _0x174845=_[_0xe17d('0x31')](_0xb91315['entry_list'],function(_0x46e82c){return _0x46e82c[_0xe17d('0x32')][_0xe17d('0x2f')]['value']===_0x2224ec;});if(_0x174845){logger[_0xe17d('0x29')](_0xe17d('0x33'));return BPromise[_0xe17d('0x34')]({'id':_0x174845[_0xe17d('0x32')]['id']['value'],'name':_0x174845[_0xe17d('0x32')][_0xe17d('0x19')][_0xe17d('0x35')]});}}logger[_0xe17d('0x29')](_0xe17d('0x36'));return BPromise[_0xe17d('0x34')]({'id':_0x24e844['name_value_list'][_0xe17d('0x37')][_0xe17d('0x35')],'name':_0x24e844[_0xe17d('0x32')]['user_name'][_0xe17d('0x35')]});});}else{logger[_0xe17d('0x29')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x24e844[_0xe17d('0x32')]['user_id']['value'],'name':_0x24e844[_0xe17d('0x32')][_0xe17d('0x2f')][_0xe17d('0x35')]});}}function getEndUser(_0x489061,_0x40d5a0,_0x570653,_0x2f4d7c){logger[_0xe17d('0x29')](_0xe17d('0x38'),_0x570653);return request({'form':{'method':_0xe17d('0x2b'),'input_type':'JSON','response_type':_0xe17d('0x20'),'rest_data':JSON['stringify']({'session':_0x2f4d7c['id'],'module_name':'Contacts','query':util['format'](_0xe17d('0x39'),_0x570653),'order_by':'','offset':'0','select_fields':['id',_0xe17d('0x19'),_0xe17d('0x3a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x143f32){if(_0x143f32['entry_list']['length']){var _0x2c4631=_[_0xe17d('0x31')](_0x143f32[_0xe17d('0x30')],function(_0x3c8bbf){return _0x3c8bbf['name_value_list'][_0xe17d('0x3a')]['value']===_0x570653;});if(_0x2c4631){logger[_0xe17d('0x29')]('Enduser\x20found!');return BPromise['resolve']({'id':_0x2c4631[_0xe17d('0x32')]['id']['value'],'name':_0x2c4631[_0xe17d('0x32')][_0xe17d('0x19')][_0xe17d('0x35')],'phone':_0x2c4631[_0xe17d('0x32')][_0xe17d('0x3a')][_0xe17d('0x35')]});}}else{logger[_0xe17d('0x29')](_0xe17d('0x3b'));return request({'form':{'method':_0xe17d('0x1f'),'input_type':_0xe17d('0x20'),'response_type':_0xe17d('0x20'),'rest_data':JSON['stringify']({'session':_0x2f4d7c['id'],'module_name':'Contacts','name_value_list':[{'name':'first_name','value':_0x40d5a0!==_0xe17d('0x3c')?_0x40d5a0:util[_0xe17d('0x22')](_0xe17d('0x3d'),_0x570653)},{'name':_0xe17d('0x3a'),'value':_0x570653}]})}})[_0xe17d('0x3e')](function(_0x441120){logger[_0xe17d('0x29')](_0xe17d('0x3f'));return BPromise[_0xe17d('0x34')]({'id':_0x441120['id'],'name':_0x441120[_0xe17d('0x30')][_0xe17d('0x40')]['value'],'phone':_0x441120[_0xe17d('0x30')][_0xe17d('0x3a')][_0xe17d('0x35')]});});}});}function request(_0x2defc3){logger['debug'](_0xe17d('0x41'),JSON[_0xe17d('0x2c')](_0x2defc3));return rp(_['merge'](def,_0x2defc3));}function getTags(_0x4dcc61,_0x628ec0){var _0x21b329=[];if(_0x4dcc61&&_0x4dcc61[_0xe17d('0x1b')]>0x0){_0x21b329=_[_0xe17d('0x42')](_0x4dcc61,_0x628ec0);}return _0x21b329;}function getCustomFields(_0x5b2cea,_0x1d7b8d){var _0x26bf2d=[];var _0x55c9b4={'custom_fields':[]};if(_0x5b2cea[_0xe17d('0x1b')]>0x0){_[_0xe17d('0x43')](_0x5b2cea,function(_0x7fd311){if(_0x7fd311[_0xe17d('0x44')]==='string'&&_0x7fd311[_0xe17d('0x45')]&&!_0x7fd311['customField']){_0x55c9b4[_0x7fd311[_0xe17d('0x45')][_0xe17d('0x46')]()]=_0x7fd311[_0xe17d('0x47')][_0xe17d('0x25')]();}else if(_0x7fd311[_0xe17d('0x44')]===_0xe17d('0x48')&&_0x7fd311[_0xe17d('0x1e')]&&_0x7fd311[_0xe17d('0x49')]){_0x55c9b4[_0xe17d('0x4a')]['push']({'id':_0x7fd311[_0xe17d('0x1e')],'value':_0x7fd311[_0xe17d('0x47')]['toString']()});}else if(_0x7fd311[_0xe17d('0x44')]===_0xe17d('0x4b')&&_0x7fd311['variableName']&&_0x7fd311[_0xe17d('0x1e')]&&_0x7fd311[_0xe17d('0x49')]){_0x1d7b8d[_0x7fd311[_0xe17d('0x1c')]]&&_0x55c9b4[_0xe17d('0x4a')][_0xe17d('0x1d')]({'id':_0x7fd311[_0xe17d('0x1e')],'value':_0x1d7b8d[_0x7fd311[_0xe17d('0x1c')]][_0xe17d('0x25')]()});}else if(_0x7fd311['type']==='customVariable'&&_0x7fd311['Variable']&&_0x7fd311[_0xe17d('0x4c')]['name']&&_0x7fd311['idField']&&_0x7fd311[_0xe17d('0x49')]){_0x1d7b8d[_0x7fd311[_0xe17d('0x4c')]['name'][_0xe17d('0x46')]()]&&_0x55c9b4[_0xe17d('0x4a')][_0xe17d('0x1d')]({'id':_0x7fd311[_0xe17d('0x1e')],'value':_0x1d7b8d[_0x7fd311[_0xe17d('0x4c')][_0xe17d('0x19')]['toLowerCase']()]['toString']()});}});}return _0x55c9b4;}function getConnection(_0x26d56c){return request({'method':'POST','form':{'method':_0xe17d('0x4d'),'input_type':_0xe17d('0x20'),'response_type':_0xe17d('0x20'),'rest_data':JSON[_0xe17d('0x2c')]({'user_auth':{'user_name':_0x26d56c[_0xe17d('0x4e')],'password':_0x26d56c['password'],'encryption':_0xe17d('0x4f')},'application':_0xe17d('0x50')})}})[_0xe17d('0x3e')](function(_0xfc3d1c){var _0x2b8080=_0xfc3d1c;if(_0x2b8080['id']){def[_0xe17d('0x51')]=_0x2b8080['id'];return BPromise[_0xe17d('0x34')](_0x2b8080);}else{throw new Error(util[_0xe17d('0x22')](_0xe17d('0x52'),_0x26d56c['id']));}});}function setRelationship(_0x57694b,_0x244f24,_0x5bf2e9,_0x3895fe){return request({'form':{'method':'set_relationship','input_type':_0xe17d('0x20'),'response_type':_0xe17d('0x20'),'rest_data':JSON[_0xe17d('0x2c')]({'session':_0x57694b['id'],'module_name':_0xe17d('0x21'),'module_id':_0x5bf2e9['id'],'link_field_name':_0x3895fe,'related_ids':[_0x244f24['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xe17d('0x53')]=function(_0x5e7d13,_0x4b9132,_0xcd6c0a,_0x5acf27,_0xf18413,_0x1f1e20){var _0x3918d5,_0x29edda,_0x998ec6,_0x195169;_0x1f1e20[_0xe17d('0x54')]=intUtil[_0xe17d('0x55')](_0x1f1e20[_0xe17d('0x54')]);_0x1f1e20[_0xe17d('0x56')]=intUtil[_0xe17d('0x55')](_0x1f1e20[_0xe17d('0x56')]);def['uri']=util[_0xe17d('0x22')](_0xe17d('0x57'),_0x1f1e20['remoteUri']);if(_0xf18413&&_0xf18413[_0xe17d('0x58')]){logger[_0xe17d('0x29')](_0xe17d('0x59'),'Recording\x20is\x20enabled!');_0x4b9132[_0xe17d('0x5a')]=util[_0xe17d('0x22')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1f1e20[_0xe17d('0x56')],_0x4b9132[_0xe17d('0x5b')],md5(_0x4b9132[_0xe17d('0x5b')]));}else{_0x4b9132[_0xe17d('0x5a')]='';}return getConnection(_0x1f1e20)[_0xe17d('0x3e')](function(_0x17db3b){_0x195169=_0x17db3b;return getUser(_0x1f1e20,_0x5acf27['name'],_0x195169);})[_0xe17d('0x3e')](function(_0x3b8ecd){_0x3918d5=_0x3b8ecd;logger['info'](_0xe17d('0x5c'),_0x3918d5['id']);return getEndUser(_0x1f1e20,_0x4b9132[_0xe17d('0x5d')],_0x4b9132['calleridnum'],_0x195169);})['then'](function(_0x1a2689){_0x29edda=_0x1a2689;logger[_0xe17d('0x29')](_0xe17d('0x5e'),_0x29edda['id']);return getTicket(_0x1f1e20,_0x3918d5,_0x29edda,_0xcd6c0a,_0x4b9132,_0xcd6c0a['Fields'],_0x195169,_0xe17d('0x5f'));})[_0xe17d('0x3e')](function(_0x268277){_0x998ec6=_0x268277;logger[_0xe17d('0x29')]('Ticket\x20created!');logger[_0xe17d('0x29')](_0xe17d('0x60'),_0x998ec6['id']);return setRelationship(_0x195169,_0x3918d5,_0x998ec6,'users');})[_0xe17d('0x3e')](function(){return setRelationship(_0x195169,_0x29edda,_0x998ec6,'contacts');})['then'](function(){return getServerInfo(_0x195169);})[_0xe17d('0x3e')](function(_0x519457){var _0x5bf070=parseInt(_0x519457[_0xe17d('0x61')][_0xe17d('0x62')](0x0));var _0x5601cf=util['format'](_0xe17d('0x63'),_0x1f1e20['remoteUri'],_0x998ec6['id']);if(_0x5bf070>0x6){_0x5601cf=util[_0xe17d('0x22')](_0xe17d('0x64'),_0x1f1e20['remoteUri'],_0x998ec6['id']);}logger['info'](_0xe17d('0x59'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xe17d('0x22')]('user:%s',_0x5acf27['name']),_0xe17d('0x65'),{'uri':_0x5601cf});})[_0xe17d('0x66')](function(_0x48c617){logger[_0xe17d('0x67')]('[QUEUE]',JSON[_0xe17d('0x2c')](_0x48c617));});};exports[_0xe17d('0x68')]=function(_0x1fbbf4,_0x51576d,_0x94089b,_0x464e07,_0x81a6c9,_0x4393f9,_0x498d13){var _0x5bb7d6,_0x2a8e4d,_0x24cfb7,_0x49db25;_0x4393f9[_0xe17d('0x54')]=intUtil[_0xe17d('0x55')](_0x4393f9[_0xe17d('0x54')]);_0x4393f9[_0xe17d('0x56')]=intUtil[_0xe17d('0x55')](_0x4393f9[_0xe17d('0x56')]);def[_0xe17d('0x69')]=util['format'](_0xe17d('0x57'),_0x4393f9[_0xe17d('0x54')]);if(_0x498d13&&_0x498d13['recordingFormat']&&_0x498d13[_0xe17d('0x6a')]!=='none'){logger[_0xe17d('0x29')](_0xe17d('0x6b'),_0xe17d('0x6c'));_0x51576d[_0xe17d('0x5a')]=util[_0xe17d('0x22')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4393f9[_0xe17d('0x56')],_0x51576d[_0xe17d('0x5b')],md5(_0x51576d[_0xe17d('0x5b')]));}return getConnection(_0x4393f9)['then'](function(_0x23de38){_0x49db25=_0x23de38;return getUser(_0x4393f9,_0x464e07[_0xe17d('0x19')],_0x49db25);})[_0xe17d('0x3e')](function(_0x5466d9){_0x5bb7d6=_0x5466d9;logger[_0xe17d('0x29')](_0xe17d('0x5c'),_0x5bb7d6['id']);return getEndUser(_0x4393f9,_0x51576d[_0xe17d('0x6d')],_0x51576d[_0xe17d('0x6e')],_0x49db25);})[_0xe17d('0x3e')](function(_0x39ad45){_0x2a8e4d=_0x39ad45;logger[_0xe17d('0x29')](_0xe17d('0x5e'),_0x2a8e4d['id']);return getTicket(_0x4393f9,_0x5bb7d6,_0x2a8e4d,_0x94089b,_0x51576d,_0x94089b[_0xe17d('0x6f')],_0x49db25,'Outbound');})[_0xe17d('0x3e')](function(_0x5060c2){_0x24cfb7=_0x5060c2;logger[_0xe17d('0x29')](_0xe17d('0x70'));logger[_0xe17d('0x29')](_0xe17d('0x60'),_0x24cfb7['id']);return setRelationship(_0x49db25,_0x5bb7d6,_0x24cfb7,_0xe17d('0x71'));})['then'](function(){return setRelationship(_0x49db25,_0x2a8e4d,_0x24cfb7,_0xe17d('0x72'));})[_0xe17d('0x3e')](function(){return getServerInfo(_0x49db25);})[_0xe17d('0x3e')](function(_0xef407d){var _0x15b4a2=parseInt(_0xef407d[_0xe17d('0x61')]['charAt'](0x0));var _0x2977fd=util[_0xe17d('0x22')](_0xe17d('0x63'),_0x4393f9[_0xe17d('0x54')],_0x24cfb7['id']);if(_0x15b4a2>0x6){_0x2977fd=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x4393f9[_0xe17d('0x54')],_0x24cfb7['id']);}logger[_0xe17d('0x29')](_0xe17d('0x6b'),_0xe17d('0x73'));emit(util[_0xe17d('0x22')](_0xe17d('0x74'),_0x464e07[_0xe17d('0x19')]),'trigger:browser:url',{'uri':_0x2977fd});})[_0xe17d('0x66')](function(_0x5de91d){logger[_0xe17d('0x67')](_0xe17d('0x6b'),JSON['stringify'](_0x5de91d));});};exports[_0xe17d('0x75')]=function(_0x24ba21,_0x415fb5,_0x3be326,_0x20a104,_0x3d3253,_0x259fe7){var _0x37a125,_0xc31f83,_0x28421f,_0xeaeceb;_0x259fe7[_0xe17d('0x54')]=intUtil[_0xe17d('0x55')](_0x259fe7['remoteUri']);_0x259fe7[_0xe17d('0x56')]=intUtil[_0xe17d('0x55')](_0x259fe7[_0xe17d('0x56')]);def[_0xe17d('0x69')]=util[_0xe17d('0x22')]('%s/service/v4_1/rest.php',_0x259fe7[_0xe17d('0x54')]);if(_0x3d3253&&_0x3d3253[_0xe17d('0x58')]){logger[_0xe17d('0x29')]('['+_0x415fb5[_0xe17d('0x76')][_0xe17d('0x77')]()+']',_0xe17d('0x6c'));_0x415fb5[_0xe17d('0x5a')]=util['format'](_0xe17d('0x78'),_0x259fe7['serverUrl'],_0x415fb5['uniqueid'],md5(_0x415fb5['uniqueid']));}else{_0x415fb5[_0xe17d('0x5a')]='';}return getConnection(_0x259fe7)[_0xe17d('0x3e')](function(_0x175664){_0xeaeceb=_0x175664;if(!_[_0xe17d('0x28')](_0x20a104)){return getUser(_0x259fe7,_0x20a104[_0xe17d('0x19')],_0xeaeceb);}else{return getUser(_0x259fe7,null,_0xeaeceb);}})['then'](function(_0x464671){_0x37a125=_0x464671;logger['info'](_0xe17d('0x5c'),_0x37a125['id']);return getEndUser(_0x259fe7,_0x415fb5['calleridname'],_0x415fb5['calleridnum'],_0xeaeceb);})[_0xe17d('0x3e')](function(_0x5207fa){_0xc31f83=_0x5207fa;logger['info']('The\x20Enduser\x20ID\x20is:',_0xc31f83['id']);return getTicket(_0x259fe7,_0x37a125,_0xc31f83,_0x3be326,_0x415fb5,_0x3be326[_0xe17d('0x6f')],_0xeaeceb,_0xe17d('0x5f'));})[_0xe17d('0x3e')](function(_0x5298bc){_0x28421f=_0x5298bc;logger[_0xe17d('0x29')](_0xe17d('0x70'));logger['info'](_0xe17d('0x60'),_0x28421f['id']);return setRelationship(_0xeaeceb,_0x37a125,_0x28421f,'users');})[_0xe17d('0x3e')](function(){return setRelationship(_0xeaeceb,_0xc31f83,_0x28421f,_0xe17d('0x72'));})[_0xe17d('0x3e')](function(){return getServerInfo(_0xeaeceb);})[_0xe17d('0x66')](function(_0x1245dd){logger[_0xe17d('0x67')]('['+_0x415fb5[_0xe17d('0x76')]['toUpperCase']()+']',JSON['stringify'](_0x1245dd));});};
\ No newline at end of file
+var _0xae1c=['Descriptions','date_start','slice','replace','duration_minutes','parent_type','Contacts','direction','forEach','variableName','push','set_entry','JSON','stringify','Calls','format','apiKey','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','entry_list','length','name_value_list','value','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','resolve','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','then','find','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','Caller\x20-\x20%s','Enduser\x20created.','debug','merge','string','nameField','toLowerCase','toString','type','idField','custom_fields','content','customField','customVariable','Variable','username','password','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','stripTrailingSlash','remoteUri','uri','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','trigger:browser:url','catch','error','outbound','serverUrl','%s/service/v4_1/rest.php','recordingFormat','destcalleridname','destcalleridnum','Outbound','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','lastevent','toUpperCase','Recording\x20is\x20enabled!','calleridname','calleridnum','lodash','bluebird','md5','util','./util','../../../../config/logger','sugarcrm','defaults','redis','localhost','socket.io-emitter','POST','emit','info','name','getString','Subjects','created_by','description'];(function(_0x3bd7bb,_0xf8bfcc){var _0x14834f=function(_0x3c5126){while(--_0x3c5126){_0x3bd7bb['push'](_0x3bd7bb['shift']());}};_0x14834f(++_0xf8bfcc);}(_0xae1c,0x1cd));var _0xcae1=function(_0x3e2ce9,_0x5ba7b7){_0x3e2ce9=_0x3e2ce9-0x0;var _0x42bf9d=_0xae1c[_0x3e2ce9];return _0x42bf9d;};'use strict';var _=require(_0xcae1('0x0'));var rp=require('request-promise');var BPromise=require(_0xcae1('0x1'));var md5=require(_0xcae1('0x2'));var util=require(_0xcae1('0x3'));var Redis=require('ioredis');var intUtil=require(_0xcae1('0x4'));var config=require('../../../../config/environment');var logger=require(_0xcae1('0x5'))(_0xcae1('0x6'));config['redis']=_[_0xcae1('0x7')](config[_0xcae1('0x8')],{'host':_0xcae1('0x9'),'port':0x18eb});var io=require(_0xcae1('0xa'))(new Redis(config['redis']));var def={'method':_0xcae1('0xb'),'json':!![]};function emit(_0x33902f,_0x5caf01,_0x41801c){io['to'](_0x33902f)[_0xcae1('0xc')](_0x5caf01,_0x41801c);}function getTicket(_0x24eaaf,_0x5f1b71,_0x133364,_0x40bd1a,_0x41ee8b,_0x3ad73e,_0x47be56,_0x56c6c2){logger[_0xcae1('0xd')]('Creating\x20new\x20ticket...');var _0x2014f1=new Date();var _0x30d90c=[{'name':_0xcae1('0xe'),'value':intUtil[_0xcae1('0xf')](_0x40bd1a[_0xcae1('0x10')],_0x41ee8b,'\x20')},{'name':'assigned_user_id','value':_0x5f1b71['id']},{'name':_0xcae1('0x11'),'value':_0x5f1b71['id']},{'name':_0xcae1('0x12'),'value':intUtil[_0xcae1('0xf')](_0x40bd1a[_0xcae1('0x13')],_0x41ee8b,'\x0a')},{'name':_0xcae1('0x14'),'value':_0x2014f1['toISOString']()[_0xcae1('0x15')](0x0,0x13)[_0xcae1('0x16')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0xcae1('0x17'),'value':'15'},{'name':'parent_id','value':_0x133364['id']},{'name':_0xcae1('0x18'),'value':_0xcae1('0x19')},{'name':'parent_name','value':_0x133364['name']},{'name':_0xcae1('0x1a'),'value':_0x56c6c2}];if(_0x3ad73e['length']){_[_0xcae1('0x1b')](_0x3ad73e,function(_0x181a29){if(_0x41ee8b[_0x181a29[_0xcae1('0x1c')]]){_0x30d90c[_0xcae1('0x1d')]({'name':_0x181a29['idField'],'value':_0x41ee8b[_0x181a29[_0xcae1('0x1c')]]});}});}return request({'form':{'method':_0xcae1('0x1e'),'input_type':'JSON','response_type':_0xcae1('0x1f'),'rest_data':JSON[_0xcae1('0x20')]({'session':_0x47be56['id'],'module_name':_0xcae1('0x21'),'name_value_list':_0x30d90c})}});}function getAuth(_0x383357){return util[_0xcae1('0x22')]('Basic\x20%s',new Buffer(_0x383357[_0xcae1('0x23')]+':X')['toString'](_0xcae1('0x24')));}function getServerInfo(_0x55c095){return request({'form':{'method':_0xcae1('0x25'),'input_type':'JSON','response_type':_0xcae1('0x1f'),'rest_data':JSON[_0xcae1('0x20')]({'session':_0x55c095['id']})}});}function getUser(_0x4d399d,_0x141251,_0x57e9ed){if(!_[_0xcae1('0x26')](_0x141251)){logger[_0xcae1('0xd')](_0xcae1('0x27'),_0x141251);return request({'form':{'method':_0xcae1('0x28'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xcae1('0x20')]({'session':_0x57e9ed['id'],'module_name':_0xcae1('0x29'),'query':util[_0xcae1('0x22')](_0xcae1('0x2a'),_0x141251),'order_by':'','offset':'0','select_fields':['id',_0xcae1('0xe'),_0xcae1('0x2b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x493e38){if(_0x493e38[_0xcae1('0x2c')][_0xcae1('0x2d')]){var _0x137196=_['find'](_0x493e38[_0xcae1('0x2c')],function(_0x290632){return _0x290632[_0xcae1('0x2e')][_0xcae1('0x2b')][_0xcae1('0x2f')]===_0x141251;});if(_0x137196){logger[_0xcae1('0xd')](_0xcae1('0x30'));return BPromise['resolve']({'id':_0x137196[_0xcae1('0x2e')]['id'][_0xcae1('0x2f')],'name':_0x137196[_0xcae1('0x2e')][_0xcae1('0xe')][_0xcae1('0x2f')]});}}logger[_0xcae1('0xd')](_0xcae1('0x31'));return BPromise['resolve']({'id':_0x57e9ed[_0xcae1('0x2e')][_0xcae1('0x32')][_0xcae1('0x2f')],'name':_0x57e9ed[_0xcae1('0x2e')]['user_name'][_0xcae1('0x2f')]});});}else{logger[_0xcae1('0xd')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0xcae1('0x33')]({'id':_0x57e9ed['name_value_list']['user_id'][_0xcae1('0x2f')],'name':_0x57e9ed[_0xcae1('0x2e')][_0xcae1('0x2b')][_0xcae1('0x2f')]});}}function getEndUser(_0x23a0fd,_0x36c428,_0x440486,_0x757265){logger[_0xcae1('0xd')](_0xcae1('0x34'),_0x440486);return request({'form':{'method':_0xcae1('0x28'),'input_type':_0xcae1('0x1f'),'response_type':_0xcae1('0x1f'),'rest_data':JSON[_0xcae1('0x20')]({'session':_0x757265['id'],'module_name':_0xcae1('0x19'),'query':util[_0xcae1('0x22')](_0xcae1('0x35'),_0x440486),'order_by':'','offset':'0','select_fields':['id','name',_0xcae1('0x36')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xcae1('0x37')](function(_0x536d4e){if(_0x536d4e[_0xcae1('0x2c')][_0xcae1('0x2d')]){var _0x5f4b96=_[_0xcae1('0x38')](_0x536d4e['entry_list'],function(_0x3f0b5d){return _0x3f0b5d[_0xcae1('0x2e')]['phone_home']['value']===_0x440486;});if(_0x5f4b96){logger[_0xcae1('0xd')](_0xcae1('0x39'));return BPromise[_0xcae1('0x33')]({'id':_0x5f4b96[_0xcae1('0x2e')]['id']['value'],'name':_0x5f4b96[_0xcae1('0x2e')][_0xcae1('0xe')]['value'],'phone':_0x5f4b96['name_value_list'][_0xcae1('0x36')][_0xcae1('0x2f')]});}}else{logger[_0xcae1('0xd')](_0xcae1('0x3a'));return request({'form':{'method':_0xcae1('0x1e'),'input_type':_0xcae1('0x1f'),'response_type':_0xcae1('0x1f'),'rest_data':JSON['stringify']({'session':_0x757265['id'],'module_name':_0xcae1('0x19'),'name_value_list':[{'name':_0xcae1('0x3b'),'value':_0x36c428!=='<unknown>'?_0x36c428:util[_0xcae1('0x22')](_0xcae1('0x3c'),_0x440486)},{'name':_0xcae1('0x36'),'value':_0x440486}]})}})[_0xcae1('0x37')](function(_0x1ef797){logger[_0xcae1('0xd')](_0xcae1('0x3d'));return BPromise[_0xcae1('0x33')]({'id':_0x1ef797['id'],'name':_0x1ef797[_0xcae1('0x2c')][_0xcae1('0x3b')][_0xcae1('0x2f')],'phone':_0x1ef797['entry_list']['phone_home'][_0xcae1('0x2f')]});});}});}function request(_0x694211){logger[_0xcae1('0x3e')]('[HTTP]',JSON[_0xcae1('0x20')](_0x694211));return rp(_[_0xcae1('0x3f')](def,_0x694211));}function getTags(_0x1afbb7,_0x86e7b){var _0x37b282=[];if(_0x1afbb7&&_0x1afbb7[_0xcae1('0x2d')]>0x0){_0x37b282=_['map'](_0x1afbb7,_0x86e7b);}return _0x37b282;}function getCustomFields(_0x35994c,_0x4df17a){var _0x500254=[];var _0x46ea7b={'custom_fields':[]};if(_0x35994c[_0xcae1('0x2d')]>0x0){_['forEach'](_0x35994c,function(_0x3b8807){if(_0x3b8807['type']===_0xcae1('0x40')&&_0x3b8807[_0xcae1('0x41')]&&!_0x3b8807['customField']){_0x46ea7b[_0x3b8807[_0xcae1('0x41')][_0xcae1('0x42')]()]=_0x3b8807['content'][_0xcae1('0x43')]();}else if(_0x3b8807[_0xcae1('0x44')]===_0xcae1('0x40')&&_0x3b8807[_0xcae1('0x45')]&&_0x3b8807['customField']){_0x46ea7b[_0xcae1('0x46')][_0xcae1('0x1d')]({'id':_0x3b8807[_0xcae1('0x45')],'value':_0x3b8807[_0xcae1('0x47')][_0xcae1('0x43')]()});}else if(_0x3b8807[_0xcae1('0x44')]==='variable'&&_0x3b8807[_0xcae1('0x1c')]&&_0x3b8807[_0xcae1('0x45')]&&_0x3b8807[_0xcae1('0x48')]){_0x4df17a[_0x3b8807[_0xcae1('0x1c')]]&&_0x46ea7b['custom_fields'][_0xcae1('0x1d')]({'id':_0x3b8807[_0xcae1('0x45')],'value':_0x4df17a[_0x3b8807[_0xcae1('0x1c')]][_0xcae1('0x43')]()});}else if(_0x3b8807[_0xcae1('0x44')]===_0xcae1('0x49')&&_0x3b8807['Variable']&&_0x3b8807[_0xcae1('0x4a')]['name']&&_0x3b8807[_0xcae1('0x45')]&&_0x3b8807[_0xcae1('0x48')]){_0x4df17a[_0x3b8807[_0xcae1('0x4a')][_0xcae1('0xe')]['toLowerCase']()]&&_0x46ea7b[_0xcae1('0x46')][_0xcae1('0x1d')]({'id':_0x3b8807['idField'],'value':_0x4df17a[_0x3b8807[_0xcae1('0x4a')][_0xcae1('0xe')][_0xcae1('0x42')]()]['toString']()});}});}return _0x46ea7b;}function getConnection(_0x105a6c){return request({'method':_0xcae1('0xb'),'form':{'method':'login','input_type':_0xcae1('0x1f'),'response_type':_0xcae1('0x1f'),'rest_data':JSON[_0xcae1('0x20')]({'user_auth':{'user_name':_0x105a6c[_0xcae1('0x4b')],'password':_0x105a6c[_0xcae1('0x4c')],'encryption':'PLAIN'},'application':_0xcae1('0x4d')})}})[_0xcae1('0x37')](function(_0x46446e){var _0x323a82=_0x46446e;if(_0x323a82['id']){def[_0xcae1('0x4e')]=_0x323a82['id'];return BPromise[_0xcae1('0x33')](_0x323a82);}else{throw new Error(util[_0xcae1('0x22')](_0xcae1('0x4f'),_0x105a6c['id']));}});}function setRelationship(_0x155dae,_0x55288f,_0x40b941,_0x555b4b){return request({'form':{'method':_0xcae1('0x50'),'input_type':_0xcae1('0x1f'),'response_type':'JSON','rest_data':JSON[_0xcae1('0x20')]({'session':_0x155dae['id'],'module_name':'Calls','module_id':_0x40b941['id'],'link_field_name':_0x555b4b,'related_ids':[_0x55288f['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xcae1('0x51')]=function(_0x371c74,_0x4edd48,_0x4e0889,_0xc9932a,_0x378da7,_0x4f7f2a){var _0x1529b4,_0x556bed,_0x1c429f,_0x534606;_0x4f7f2a['remoteUri']=intUtil[_0xcae1('0x52')](_0x4f7f2a[_0xcae1('0x53')]);_0x4f7f2a['serverUrl']=intUtil[_0xcae1('0x52')](_0x4f7f2a['serverUrl']);def[_0xcae1('0x54')]=util[_0xcae1('0x22')]('%s/service/v4_1/rest.php',_0x4f7f2a['remoteUri']);if(_0x378da7&&_0x378da7[_0xcae1('0x55')]){logger[_0xcae1('0xd')](_0xcae1('0x56'),'Recording\x20is\x20enabled!');_0x4edd48[_0xcae1('0x57')]=util[_0xcae1('0x22')](_0xcae1('0x58'),_0x4f7f2a['serverUrl'],_0x4edd48[_0xcae1('0x59')],md5(_0x4edd48[_0xcae1('0x59')]));}else{_0x4edd48[_0xcae1('0x57')]='';}return getConnection(_0x4f7f2a)[_0xcae1('0x37')](function(_0x3f7b36){_0x534606=_0x3f7b36;return getUser(_0x4f7f2a,_0xc9932a['name'],_0x534606);})['then'](function(_0x495fc8){_0x1529b4=_0x495fc8;logger[_0xcae1('0xd')](_0xcae1('0x5a'),_0x1529b4['id']);return getEndUser(_0x4f7f2a,_0x4edd48['calleridname'],_0x4edd48['calleridnum'],_0x534606);})[_0xcae1('0x37')](function(_0x2edf91){_0x556bed=_0x2edf91;logger[_0xcae1('0xd')](_0xcae1('0x5b'),_0x556bed['id']);return getTicket(_0x4f7f2a,_0x1529b4,_0x556bed,_0x4e0889,_0x4edd48,_0x4e0889[_0xcae1('0x5c')],_0x534606,_0xcae1('0x5d'));})[_0xcae1('0x37')](function(_0x3da86b){_0x1c429f=_0x3da86b;logger['info'](_0xcae1('0x5e'));logger[_0xcae1('0xd')](_0xcae1('0x5f'),_0x1c429f['id']);return setRelationship(_0x534606,_0x1529b4,_0x1c429f,_0xcae1('0x60'));})[_0xcae1('0x37')](function(){return setRelationship(_0x534606,_0x556bed,_0x1c429f,_0xcae1('0x61'));})[_0xcae1('0x37')](function(){return getServerInfo(_0x534606);})[_0xcae1('0x37')](function(_0x323b4d){var _0x266c67=parseInt(_0x323b4d[_0xcae1('0x62')][_0xcae1('0x63')](0x0));var _0x31fc3c=util[_0xcae1('0x22')](_0xcae1('0x64'),_0x4f7f2a[_0xcae1('0x53')],_0x1c429f['id']);if(_0x266c67>0x6){_0x31fc3c=util['format'](_0xcae1('0x65'),_0x4f7f2a['remoteUri'],_0x1c429f['id']);}logger[_0xcae1('0xd')](_0xcae1('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xcae1('0x22')]('user:%s',_0xc9932a[_0xcae1('0xe')]),_0xcae1('0x66'),{'uri':_0x31fc3c});})[_0xcae1('0x67')](function(_0x4cd475){logger[_0xcae1('0x68')](_0xcae1('0x56'),JSON[_0xcae1('0x20')](_0x4cd475));});};exports[_0xcae1('0x69')]=function(_0x56f1e3,_0x1534af,_0x3b92c0,_0xc6e686,_0x55dc6a,_0xfc28c3,_0x10c8b9){var _0x56e2a2,_0x44ad4e,_0x91b3f4,_0x39b9d4;_0xfc28c3['remoteUri']=intUtil[_0xcae1('0x52')](_0xfc28c3[_0xcae1('0x53')]);_0xfc28c3[_0xcae1('0x6a')]=intUtil[_0xcae1('0x52')](_0xfc28c3['serverUrl']);def[_0xcae1('0x54')]=util[_0xcae1('0x22')](_0xcae1('0x6b'),_0xfc28c3[_0xcae1('0x53')]);if(_0x10c8b9&&_0x10c8b9['recordingFormat']&&_0x10c8b9[_0xcae1('0x6c')]!=='none'){logger[_0xcae1('0xd')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x1534af[_0xcae1('0x57')]=util[_0xcae1('0x22')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xfc28c3[_0xcae1('0x6a')],_0x1534af[_0xcae1('0x59')],md5(_0x1534af['uniqueid']));}return getConnection(_0xfc28c3)['then'](function(_0x55e441){_0x39b9d4=_0x55e441;return getUser(_0xfc28c3,_0xc6e686[_0xcae1('0xe')],_0x39b9d4);})[_0xcae1('0x37')](function(_0x3e0ffa){_0x56e2a2=_0x3e0ffa;logger[_0xcae1('0xd')](_0xcae1('0x5a'),_0x56e2a2['id']);return getEndUser(_0xfc28c3,_0x1534af[_0xcae1('0x6d')],_0x1534af[_0xcae1('0x6e')],_0x39b9d4);})['then'](function(_0x1482de){_0x44ad4e=_0x1482de;logger[_0xcae1('0xd')](_0xcae1('0x5b'),_0x44ad4e['id']);return getTicket(_0xfc28c3,_0x56e2a2,_0x44ad4e,_0x3b92c0,_0x1534af,_0x3b92c0['Fields'],_0x39b9d4,_0xcae1('0x6f'));})[_0xcae1('0x37')](function(_0x39ed70){_0x91b3f4=_0x39ed70;logger['info'](_0xcae1('0x5e'));logger[_0xcae1('0xd')](_0xcae1('0x5f'),_0x91b3f4['id']);return setRelationship(_0x39b9d4,_0x56e2a2,_0x91b3f4,_0xcae1('0x60'));})[_0xcae1('0x37')](function(){return setRelationship(_0x39b9d4,_0x44ad4e,_0x91b3f4,'contacts');})[_0xcae1('0x37')](function(){return getServerInfo(_0x39b9d4);})[_0xcae1('0x37')](function(_0x1fd29a){var _0x2366ff=parseInt(_0x1fd29a[_0xcae1('0x62')][_0xcae1('0x63')](0x0));var _0x17db0f=util[_0xcae1('0x22')](_0xcae1('0x64'),_0xfc28c3[_0xcae1('0x53')],_0x91b3f4['id']);if(_0x2366ff>0x6){_0x17db0f=util[_0xcae1('0x22')](_0xcae1('0x65'),_0xfc28c3['remoteUri'],_0x91b3f4['id']);}logger[_0xcae1('0xd')](_0xcae1('0x70'),_0xcae1('0x71'));emit(util[_0xcae1('0x22')](_0xcae1('0x72'),_0xc6e686[_0xcae1('0xe')]),_0xcae1('0x66'),{'uri':_0x17db0f});})[_0xcae1('0x67')](function(_0x4ef6cd){logger[_0xcae1('0x68')](_0xcae1('0x70'),JSON[_0xcae1('0x20')](_0x4ef6cd));});};exports['unmanaged']=function(_0xa3d23f,_0x131b7a,_0x12e0be,_0x5803e9,_0x2e5618,_0x4ee863){var _0x4d29d3,_0x1c3024,_0x159857,_0x5d160a;_0x4ee863[_0xcae1('0x53')]=intUtil[_0xcae1('0x52')](_0x4ee863[_0xcae1('0x53')]);_0x4ee863[_0xcae1('0x6a')]=intUtil['stripTrailingSlash'](_0x4ee863[_0xcae1('0x6a')]);def[_0xcae1('0x54')]=util[_0xcae1('0x22')](_0xcae1('0x6b'),_0x4ee863[_0xcae1('0x53')]);if(_0x2e5618&&_0x2e5618[_0xcae1('0x55')]){logger['info']('['+_0x131b7a[_0xcae1('0x73')][_0xcae1('0x74')]()+']',_0xcae1('0x75'));_0x131b7a['recordingURL']=util[_0xcae1('0x22')](_0xcae1('0x58'),_0x4ee863[_0xcae1('0x6a')],_0x131b7a['uniqueid'],md5(_0x131b7a[_0xcae1('0x59')]));}else{_0x131b7a[_0xcae1('0x57')]='';}return getConnection(_0x4ee863)[_0xcae1('0x37')](function(_0x45944e){_0x5d160a=_0x45944e;if(!_['isNil'](_0x5803e9)){return getUser(_0x4ee863,_0x5803e9[_0xcae1('0xe')],_0x5d160a);}else{return getUser(_0x4ee863,null,_0x5d160a);}})[_0xcae1('0x37')](function(_0xf4146d){_0x4d29d3=_0xf4146d;logger['info'](_0xcae1('0x5a'),_0x4d29d3['id']);return getEndUser(_0x4ee863,_0x131b7a[_0xcae1('0x76')],_0x131b7a[_0xcae1('0x77')],_0x5d160a);})[_0xcae1('0x37')](function(_0x5f310a){_0x1c3024=_0x5f310a;logger[_0xcae1('0xd')](_0xcae1('0x5b'),_0x1c3024['id']);return getTicket(_0x4ee863,_0x4d29d3,_0x1c3024,_0x12e0be,_0x131b7a,_0x12e0be['Fields'],_0x5d160a,_0xcae1('0x5d'));})['then'](function(_0x260a23){_0x159857=_0x260a23;logger[_0xcae1('0xd')](_0xcae1('0x5e'));logger[_0xcae1('0xd')](_0xcae1('0x5f'),_0x159857['id']);return setRelationship(_0x5d160a,_0x4d29d3,_0x159857,_0xcae1('0x60'));})[_0xcae1('0x37')](function(){return setRelationship(_0x5d160a,_0x1c3024,_0x159857,'contacts');})[_0xcae1('0x37')](function(){return getServerInfo(_0x5d160a);})['catch'](function(_0x5cb904){logger[_0xcae1('0x68')]('['+_0x131b7a[_0xcae1('0x73')][_0xcae1('0x74')]()+']',JSON[_0xcae1('0x20')](_0x5cb904));});};
\ No newline at end of file
index 6554020..706ba95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6810=['Variable','name','toLowerCase','keyValue','key','format','keyContent','variable','%s:\x20%s','stripTrailingSlash','substring','validateEmail','isNil','test','lodash','util','getString','length','sortBy','type','string','push','content','variableName','toString','customVariable'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x6810,0x1ae));var _0x0681=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x6810[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x0681('0x0'));var util=require(_0x0681('0x1'));exports[_0x0681('0x2')]=function(_0xb04455,_0x4228f8,_0x57a6b0){var _0x1f9607=[];if(_0xb04455[_0x0681('0x3')]>0x0){var _0x222b35=_[_0x0681('0x4')](_0xb04455,['id']);for(var _0x4f9f7f=0x0;_0x4f9f7f<_0x222b35[_0x0681('0x3')];_0x4f9f7f++){var _0x431cc5=_0x222b35[_0x4f9f7f];if(_0x431cc5[_0x0681('0x5')]===_0x0681('0x6')){_0x1f9607[_0x0681('0x7')](_0x431cc5[_0x0681('0x8')]);}else if(_0x431cc5[_0x0681('0x5')]==='variable'&&_0x431cc5['variableName']){_0x4228f8[_0x431cc5[_0x0681('0x9')]]&&_0x1f9607['push'](_0x4228f8[_0x431cc5[_0x0681('0x9')]][_0x0681('0xa')]());}else if(_0x431cc5[_0x0681('0x5')]===_0x0681('0xb')&&_0x431cc5[_0x0681('0xc')]&&_0x431cc5[_0x0681('0xc')][_0x0681('0xd')]){_0x4228f8[_0x431cc5[_0x0681('0xc')]['name']['toLowerCase']()]&&_0x1f9607[_0x0681('0x7')](_0x4228f8[_0x431cc5[_0x0681('0xc')][_0x0681('0xd')][_0x0681('0xe')]()]['toString']());}else if(_0x431cc5[_0x0681('0x5')]===_0x0681('0xf')){if(_0x431cc5['keyType']===_0x0681('0x6')&&_0x431cc5[_0x0681('0x10')]){_0x1f9607[_0x0681('0x7')](util[_0x0681('0x11')]('%s:\x20%s',_0x431cc5[_0x0681('0x10')],_0x431cc5[_0x0681('0x12')]));}else if(_0x431cc5['keyType']===_0x0681('0x13')&&_0x431cc5[_0x0681('0x9')]&&_0x431cc5[_0x0681('0x10')]){_0x4228f8[_0x431cc5[_0x0681('0x9')]]&&_0x1f9607[_0x0681('0x7')](util[_0x0681('0x11')](_0x0681('0x14'),_0x431cc5[_0x0681('0x10')],_0x4228f8[_0x431cc5[_0x0681('0x9')]]));}else if(_0x431cc5['keyType']===_0x0681('0xb')&&_0x431cc5[_0x0681('0xc')]&&_0x431cc5['Variable'][_0x0681('0xd')]&&_0x431cc5['key']){_0x4228f8[_0x431cc5['Variable']['name'][_0x0681('0xe')]()]&&_0x1f9607['push'](util['format']('%s:\x20%s',_0x431cc5[_0x0681('0x10')],_0x4228f8[_0x431cc5['Variable'][_0x0681('0xd')][_0x0681('0xe')]()]));}}}}return _0x1f9607['join'](_0x57a6b0);};exports[_0x0681('0x15')]=function(_0x26bbcf){var _0x678a3c=_0x26bbcf['slice'](-0x1);if(_0x678a3c==='/'){_0x26bbcf=_0x26bbcf[_0x0681('0x16')](0x0,_0x26bbcf['lastIndexOf'](_0x678a3c));}return _0x26bbcf;};exports[_0x0681('0x17')]=function(_0x3576e9){if(!_[_0x0681('0x18')](_0x3576e9)&&_0x3576e9!==''){var _0x5626e4=/^(([^<>()\[\]\\.,;:\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 _0x5626e4[_0x0681('0x19')](String(_0x3576e9)[_0x0681('0xe')]());}else{return![];}};
\ No newline at end of file
+var _0x5f12=['keyContent','join','stripTrailingSlash','slice','substring','validateEmail','isNil','util','getString','length','sortBy','string','push','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','format','%s:\x20%s'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0x5f12,0x130));var _0x25f1=function(_0x1467f6,_0x49031a){_0x1467f6=_0x1467f6-0x0;var _0xd05ef6=_0x5f12[_0x1467f6];return _0xd05ef6;};'use strict';var _=require('lodash');var util=require(_0x25f1('0x0'));exports[_0x25f1('0x1')]=function(_0x47431c,_0x4c86bf,_0x3d7544){var _0x18f936=[];if(_0x47431c[_0x25f1('0x2')]>0x0){var _0x3fa287=_[_0x25f1('0x3')](_0x47431c,['id']);for(var _0x50abf7=0x0;_0x50abf7<_0x3fa287[_0x25f1('0x2')];_0x50abf7++){var _0x346635=_0x3fa287[_0x50abf7];if(_0x346635['type']===_0x25f1('0x4')){_0x18f936[_0x25f1('0x5')](_0x346635[_0x25f1('0x6')]);}else if(_0x346635[_0x25f1('0x7')]===_0x25f1('0x8')&&_0x346635['variableName']){_0x4c86bf[_0x346635[_0x25f1('0x9')]]&&_0x18f936[_0x25f1('0x5')](_0x4c86bf[_0x346635[_0x25f1('0x9')]][_0x25f1('0xa')]());}else if(_0x346635[_0x25f1('0x7')]===_0x25f1('0xb')&&_0x346635[_0x25f1('0xc')]&&_0x346635[_0x25f1('0xc')][_0x25f1('0xd')]){_0x4c86bf[_0x346635['Variable'][_0x25f1('0xd')][_0x25f1('0xe')]()]&&_0x18f936[_0x25f1('0x5')](_0x4c86bf[_0x346635['Variable'][_0x25f1('0xd')]['toLowerCase']()][_0x25f1('0xa')]());}else if(_0x346635[_0x25f1('0x7')]===_0x25f1('0xf')){if(_0x346635[_0x25f1('0x10')]===_0x25f1('0x4')&&_0x346635[_0x25f1('0x11')]){_0x18f936[_0x25f1('0x5')](util[_0x25f1('0x12')](_0x25f1('0x13'),_0x346635['key'],_0x346635[_0x25f1('0x14')]));}else if(_0x346635[_0x25f1('0x10')]===_0x25f1('0x8')&&_0x346635[_0x25f1('0x9')]&&_0x346635[_0x25f1('0x11')]){_0x4c86bf[_0x346635[_0x25f1('0x9')]]&&_0x18f936['push'](util[_0x25f1('0x12')]('%s:\x20%s',_0x346635[_0x25f1('0x11')],_0x4c86bf[_0x346635[_0x25f1('0x9')]]));}else if(_0x346635[_0x25f1('0x10')]===_0x25f1('0xb')&&_0x346635[_0x25f1('0xc')]&&_0x346635[_0x25f1('0xc')][_0x25f1('0xd')]&&_0x346635[_0x25f1('0x11')]){_0x4c86bf[_0x346635[_0x25f1('0xc')][_0x25f1('0xd')]['toLowerCase']()]&&_0x18f936['push'](util[_0x25f1('0x12')](_0x25f1('0x13'),_0x346635[_0x25f1('0x11')],_0x4c86bf[_0x346635[_0x25f1('0xc')][_0x25f1('0xd')][_0x25f1('0xe')]()]));}}}}return _0x18f936[_0x25f1('0x15')](_0x3d7544);};exports[_0x25f1('0x16')]=function(_0x2bb599){var _0x31eb29=_0x2bb599[_0x25f1('0x17')](-0x1);if(_0x31eb29==='/'){_0x2bb599=_0x2bb599[_0x25f1('0x18')](0x0,_0x2bb599['lastIndexOf'](_0x31eb29));}return _0x2bb599;};exports[_0x25f1('0x19')]=function(_0x433531){if(!_[_0x25f1('0x1a')](_0x433531)&&_0x433531!==''){var _0x53599c=/^(([^<>()\[\]\\.,;:\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 _0x53599c['test'](String(_0x433531)[_0x25f1('0xe')]());}else{return![];}};
\ No newline at end of file
index 1f862d9..0abe119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x2f7bab,_0x5ef284){var _0x450cae=function(_0x2a320f){while(--_0x2a320f){_0x2f7bab['push'](_0x2f7bab['shift']());}};_0x450cae(++_0x5ef284);}(_0xe706,0xa3));var _0x6e70=function(_0x2eeed4,_0x28dc98){_0x2eeed4=_0x2eeed4-0x0;var _0x56099d=_0xe706[_0x2eeed4];return _0x56099d;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
+var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x51bb81,_0x2b55f0){var _0x260a19=function(_0x59322d){while(--_0x59322d){_0x51bb81['push'](_0x51bb81['shift']());}};_0x260a19(++_0x2b55f0);}(_0xe706,0xa3));var _0x6e70=function(_0x1ca7ed,_0x2cccb4){_0x1ca7ed=_0x1ca7ed-0x0;var _0x5d706a=_0xe706[_0x1ca7ed];return _0x5d706a;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
index f33720a..e91f1a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fea=['[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','user:%s','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','toUpperCase','lastevent','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','ticket','validateEmail','%s/search.json','format','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','%s/users/me.json','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Enduser\x20created.','password','%s:%s','token','%s/token:%s','Basic\x20%s','base64','[HTTP]','stringify','GET','map','forEach','includes','string','type','nameField','customField','picklist','idField','custom_fields','push','content','toString','variable','variableName','Variable','toLowerCase','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','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...','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch'];(function(_0x1bd611,_0x29e7ef){var _0xe35190=function(_0xfd8870){while(--_0xfd8870){_0x1bd611['push'](_0x1bd611['shift']());}};_0xe35190(++_0x29e7ef);}(_0x1fea,0x1e8));var _0xa1fe=function(_0x1f74b1,_0x44fdc9){_0x1f74b1=_0x1f74b1-0x0;var _0x12e5c9=_0x1fea[_0x1f74b1];return _0x12e5c9;};'use strict';var _=require(_0xa1fe('0x0'));var rp=require(_0xa1fe('0x1'));var md5=require(_0xa1fe('0x2'));var util=require(_0xa1fe('0x3'));var Redis=require(_0xa1fe('0x4'));var intUtil=require(_0xa1fe('0x5'));var config=require(_0xa1fe('0x6'));var logger=require(_0xa1fe('0x7'))(_0xa1fe('0x8'));config[_0xa1fe('0x9')]=_[_0xa1fe('0xa')](config[_0xa1fe('0x9')],{'host':_0xa1fe('0xb'),'port':0x18eb});var io=require(_0xa1fe('0xc'))(new Redis(config[_0xa1fe('0x9')]));function emit(_0x399a34,_0x4dfa58,_0x1dbeeb){io['to'](_0x399a34)[_0xa1fe('0xd')](_0x4dfa58,_0x1dbeeb);}var headers={'Content-Type':'application/json','Accept':_0xa1fe('0xe')};function getTicket(_0x3bcef1,_0x4df8de,_0x33c2e9,_0x568b9a,_0x4e9415){logger[_0xa1fe('0xf')](_0xa1fe('0x10'));return request({'uri':util['format'](_0xa1fe('0x11'),_0x3bcef1[_0xa1fe('0x12')]),'method':_0xa1fe('0x13'),'body':{'ticket':_[_0xa1fe('0x14')]({'requester_id':_0x33c2e9['id'],'submitter_id':_0x4df8de?_0x4df8de['id']:undefined,'assignee_id':_0x4df8de?_0x4df8de['id']:undefined,'tags':getTags(_0x568b9a[_0xa1fe('0x15')],_0xa1fe('0x16')),'subject':intUtil[_0xa1fe('0x17')](_0x568b9a[_0xa1fe('0x18')],_0x4e9415,'\x20'),'description':intUtil[_0xa1fe('0x17')](_0x568b9a[_0xa1fe('0x19')],_0x4e9415,'\x0a'),'comment':{'public':![],'body':intUtil[_0xa1fe('0x17')](_0x568b9a[_0xa1fe('0x19')],_0x4e9415,'\x0a')}},getCustomFields(_0x568b9a[_0xa1fe('0x1a')],_0x4e9415))}})[_0xa1fe('0x1b')](function(_0x7d6d7c){logger[_0xa1fe('0xf')]('Ticket\x20created!');return _0x7d6d7c[_0xa1fe('0x1c')];});}function getUser(_0x1de03e,_0x4c34f1){if(intUtil[_0xa1fe('0x1d')](_0x4c34f1)){logger[_0xa1fe('0xf')]('Getting\x20agent\x20with\x20email',_0x4c34f1);return request({'uri':util['format'](_0xa1fe('0x1e'),_0x1de03e[_0xa1fe('0x12')]),'qs':{'query':util[_0xa1fe('0x1f')](_0xa1fe('0x20'),_0x4c34f1)}})[_0xa1fe('0x1b')](function(_0x30af12){if(_0x30af12['count']){logger[_0xa1fe('0xf')](_0xa1fe('0x21'));return _[_0xa1fe('0x22')](_0x30af12['results'],{'email':_0x4c34f1,'role':_0xa1fe('0x23')});}else{logger[_0xa1fe('0xf')](_0xa1fe('0x24'));return request({'uri':util[_0xa1fe('0x1f')]('%s/users/me.json',_0x1de03e[_0xa1fe('0x12')])})[_0xa1fe('0x1b')](function(_0x2de6dd){logger[_0xa1fe('0xf')](_0xa1fe('0x25'));return _0x2de6dd[_0xa1fe('0x26')];});}});}else{logger[_0xa1fe('0xf')](_0xa1fe('0x24'));return request({'uri':util[_0xa1fe('0x1f')](_0xa1fe('0x27'),_0x1de03e[_0xa1fe('0x12')])})[_0xa1fe('0x1b')](function(_0x30a0c4){logger['info'](_0xa1fe('0x25'));return _0x30a0c4[_0xa1fe('0x26')];});}}function getEndUser(_0x17dc19,_0x1578c4,_0x119e87){logger[_0xa1fe('0xf')](_0xa1fe('0x28'),_0x119e87);return request({'uri':util[_0xa1fe('0x1f')](_0xa1fe('0x1e'),_0x17dc19['remoteUri']),'qs':{'query':util[_0xa1fe('0x1f')](_0xa1fe('0x29'),_0x119e87)}})[_0xa1fe('0x1b')](function(_0x4a95a5){var _0x208f02;if(_0x4a95a5[_0xa1fe('0x2a')][_0xa1fe('0x2b')]){_0x4a95a5[_0xa1fe('0x2a')]=_[_0xa1fe('0x2c')](_0x4a95a5[_0xa1fe('0x2a')],{'suspended':![],'role':_0xa1fe('0x2d')});if(_0x4a95a5['results'][_0xa1fe('0x2b')]){_0x208f02=_[_0xa1fe('0x2e')](_0x4a95a5[_0xa1fe('0x2a')]);}}if(_0x208f02){logger[_0xa1fe('0xf')](_0xa1fe('0x2f'));return _0x208f02;}else{logger[_0xa1fe('0xf')](_0xa1fe('0x30'));return request({'uri':util['format'](_0xa1fe('0x31'),_0x17dc19['remoteUri']),'method':'POST','body':{'user':{'role':_0xa1fe('0x2d'),'name':util[_0xa1fe('0x1f')]('Caller\x20-\x20%s',_0x1578c4||_0x119e87),'phone':_0x119e87}}})[_0xa1fe('0x1b')](function(_0x57234b){logger[_0xa1fe('0xf')](_0xa1fe('0x32'));return _0x57234b[_0xa1fe('0x26')];});}});}function getAuth(_0x3c6040){var _0x13208d;if(_0x3c6040['authType']===_0xa1fe('0x33')){_0x13208d=util['format'](_0xa1fe('0x34'),_0x3c6040['username'],_0x3c6040['password']);}else if(_0x3c6040['authType']===_0xa1fe('0x35')){_0x13208d=util[_0xa1fe('0x1f')](_0xa1fe('0x36'),_0x3c6040['username'],_0x3c6040[_0xa1fe('0x35')]);}return util[_0xa1fe('0x1f')](_0xa1fe('0x37'),new Buffer(_0x13208d)['toString'](_0xa1fe('0x38')));}function request(_0x200c3d){logger['debug'](_0xa1fe('0x39'),JSON[_0xa1fe('0x3a')](_0x200c3d));return rp(_[_0xa1fe('0xa')](_0x200c3d,{'method':_0xa1fe('0x3b'),'headers':headers,'json':!![]}));}function getTags(_0x275ed7,_0x5598e2){var _0x226864=[];if(_0x275ed7&&_0x275ed7[_0xa1fe('0x2b')]>0x0){_0x226864=_[_0xa1fe('0x3c')](_0x275ed7,_0x5598e2);}return _0x226864;}function getCustomFields(_0x368b4a,_0x265602){var _0x521891=[];var _0x191a04={'custom_fields':[]};if(_0x368b4a[_0xa1fe('0x2b')]>0x0){_[_0xa1fe('0x3d')](_0x368b4a,function(_0x10dfeb){if(_[_0xa1fe('0x3e')]([_0xa1fe('0x3f'),'picklist'],_0x10dfeb[_0xa1fe('0x40')])&&_0x10dfeb[_0xa1fe('0x41')]&&!_0x10dfeb[_0xa1fe('0x42')]){_0x191a04[_0x10dfeb[_0xa1fe('0x41')]['toLowerCase']()]=_0x10dfeb['content']['toString']();}else if(_[_0xa1fe('0x3e')]([_0xa1fe('0x3f'),_0xa1fe('0x43')],_0x10dfeb['type'])&&_0x10dfeb[_0xa1fe('0x44')]&&_0x10dfeb[_0xa1fe('0x42')]){_0x191a04[_0xa1fe('0x45')][_0xa1fe('0x46')]({'id':_0x10dfeb[_0xa1fe('0x44')],'value':_0x10dfeb[_0xa1fe('0x47')][_0xa1fe('0x48')]()});}else if(_0x10dfeb['type']===_0xa1fe('0x49')&&_0x10dfeb['variableName']&&_0x10dfeb[_0xa1fe('0x44')]&&_0x10dfeb['customField']){_0x265602[_0x10dfeb[_0xa1fe('0x4a')]]&&_0x191a04[_0xa1fe('0x45')][_0xa1fe('0x46')]({'id':_0x10dfeb['idField'],'value':_0x265602[_0x10dfeb[_0xa1fe('0x4a')]][_0xa1fe('0x48')]()});}else if(_0x10dfeb['type']==='customVariable'&&_0x10dfeb[_0xa1fe('0x4b')]&&_0x10dfeb['Variable'][_0xa1fe('0x16')]&&_0x10dfeb[_0xa1fe('0x44')]&&_0x10dfeb['customField']){_0x265602[_0x10dfeb[_0xa1fe('0x4b')][_0xa1fe('0x16')][_0xa1fe('0x4c')]()]&&_0x191a04[_0xa1fe('0x45')]['push']({'id':_0x10dfeb[_0xa1fe('0x44')],'value':_0x265602[_0x10dfeb['Variable'][_0xa1fe('0x16')]['toLowerCase']()][_0xa1fe('0x48')]()});}});}return _0x191a04;}exports[_0xa1fe('0x4d')]=function(_0x486389,_0x5e65b7,_0x35efaa,_0x955c5e,_0x578159,_0x298988){var _0x391305,_0x20693b;_0x298988[_0xa1fe('0x12')]=intUtil['stripTrailingSlash'](_0x298988[_0xa1fe('0x12')]);_0x298988[_0xa1fe('0x4e')]=intUtil[_0xa1fe('0x4f')](_0x298988[_0xa1fe('0x4e')]);if(_0x578159&&_0x578159[_0xa1fe('0x50')]){logger[_0xa1fe('0xf')](_0xa1fe('0x51'),_0xa1fe('0x52'));_0x5e65b7[_0xa1fe('0x53')]=util[_0xa1fe('0x1f')](_0xa1fe('0x54'),_0x298988[_0xa1fe('0x4e')],_0x5e65b7['uniqueid'],md5(_0x5e65b7[_0xa1fe('0x55')]));}else{_0x5e65b7[_0xa1fe('0x53')]='';}headers[_0xa1fe('0x56')]=getAuth(_0x298988);return getUser(_0x298988,_0x955c5e[_0xa1fe('0x57')])[_0xa1fe('0x1b')](function(_0x31a93f){_0x391305=_0x31a93f;logger[_0xa1fe('0xf')](_0xa1fe('0x58'),_0x391305['id']);return getEndUser(_0x298988,_0x5e65b7[_0xa1fe('0x59')],_0x5e65b7['calleridnum']);})[_0xa1fe('0x1b')](function(_0x2947c6){_0x20693b=_0x2947c6;logger['info']('The\x20Enduser\x20ID\x20is:',_0x20693b['id']);return getTicket(_0x298988,_0x391305,_0x20693b,_0x35efaa,_0x5e65b7);})[_0xa1fe('0x1b')](function(_0x752707){if(_0x752707){logger[_0xa1fe('0xf')](_0xa1fe('0x5a'),_0x752707['id']);switch(_0x298988[_0xa1fe('0x40')]){case _0xa1fe('0x5b'):logger[_0xa1fe('0xf')](_0xa1fe('0x51'),_0xa1fe('0x5c'));return request({'uri':util['format'](_0xa1fe('0x5d'),_0x298988['remoteUri'],_0x391305['id'],_0x752707['id']),'method':_0xa1fe('0x13')});case _0xa1fe('0x5e'):logger[_0xa1fe('0xf')](_0xa1fe('0x51'),_0xa1fe('0x5f'));emit(util[_0xa1fe('0x1f')]('user:%s',_0x955c5e[_0xa1fe('0x16')]),_0xa1fe('0x60'),{'uri':util[_0xa1fe('0x1f')](_0xa1fe('0x61'),_0x298988[_0xa1fe('0x12')]['replace'](_0xa1fe('0x62'),''),_0x752707['id'])});break;default:logger[_0xa1fe('0x63')](_0xa1fe('0x51'),_0xa1fe('0x64'));}}})[_0xa1fe('0x65')](function(_0x307ec2){logger['error'](_0xa1fe('0x66'),util['inspect'](_0x307ec2,{'showHidden':!![],'depth':null}));});};exports[_0xa1fe('0x67')]=function(_0x2c291b,_0x3d2c1f,_0x2891ff,_0x582425,_0x3e2672,_0x4678ce,_0x4efeeb){var _0x26e455,_0x50d59e;_0x4678ce[_0xa1fe('0x12')]=intUtil['stripTrailingSlash'](_0x4678ce[_0xa1fe('0x12')]);_0x4678ce[_0xa1fe('0x4e')]=intUtil['stripTrailingSlash'](_0x4678ce[_0xa1fe('0x4e')]);if(_0x4efeeb&&_0x4efeeb[_0xa1fe('0x68')]&&_0x4efeeb[_0xa1fe('0x68')]!==_0xa1fe('0x69')){logger[_0xa1fe('0xf')](_0xa1fe('0x6a'),_0xa1fe('0x52'));_0x3d2c1f['recordingURL']=util[_0xa1fe('0x1f')](_0xa1fe('0x54'),_0x4678ce[_0xa1fe('0x4e')],_0x3d2c1f['uniqueid'],md5(_0x3d2c1f['uniqueid']));}headers[_0xa1fe('0x56')]=getAuth(_0x4678ce);return getUser(_0x4678ce,_0x582425[_0xa1fe('0x57')])['then'](function(_0x522bbe){_0x26e455=_0x522bbe;logger[_0xa1fe('0xf')](_0xa1fe('0x58'),_0x26e455['id']);return getEndUser(_0x4678ce,_0x3d2c1f[_0xa1fe('0x6b')],_0x3d2c1f[_0xa1fe('0x6c')]);})['then'](function(_0x148f2a){_0x50d59e=_0x148f2a;logger[_0xa1fe('0xf')](_0xa1fe('0x6d'),_0x50d59e['id']);return getTicket(_0x4678ce,_0x26e455,_0x50d59e,_0x2891ff,_0x3d2c1f);})[_0xa1fe('0x1b')](function(_0x24bf80){if(_0x24bf80){logger['info'](_0xa1fe('0x5a'),_0x24bf80['id']);switch(_0x4678ce[_0xa1fe('0x40')]){case'integrationTab':logger['info'](_0xa1fe('0x6a'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xa1fe('0x1f')](_0xa1fe('0x5d'),_0x4678ce[_0xa1fe('0x12')],_0x26e455['id'],_0x24bf80['id']),'method':_0xa1fe('0x13')});case _0xa1fe('0x5e'):logger[_0xa1fe('0xf')](_0xa1fe('0x6a'),_0xa1fe('0x5f'));emit(util[_0xa1fe('0x1f')](_0xa1fe('0x6e'),_0x582425['name']),_0xa1fe('0x60'),{'uri':util[_0xa1fe('0x1f')](_0xa1fe('0x61'),_0x4678ce['remoteUri'][_0xa1fe('0x6f')]('/api/v2',''),_0x24bf80['id'])});break;default:logger[_0xa1fe('0x63')]('[OUTBOUND]',_0xa1fe('0x64'));}}})['catch'](function(_0x6700e0){logger['error'](_0xa1fe('0x70'),util[_0xa1fe('0x71')](_0x6700e0,{'showHidden':!![],'depth':null}));});};exports[_0xa1fe('0x72')]=function(_0xbd5730,_0x2a0667,_0x110506,_0x3ee225,_0x4d4988,_0x3e4323){var _0x4b9999,_0x4f21b5;_0x3e4323[_0xa1fe('0x12')]=intUtil[_0xa1fe('0x4f')](_0x3e4323[_0xa1fe('0x12')]);_0x3e4323[_0xa1fe('0x4e')]=intUtil[_0xa1fe('0x4f')](_0x3e4323[_0xa1fe('0x4e')]);if(_0x4d4988&&_0x4d4988[_0xa1fe('0x50')]){logger[_0xa1fe('0xf')]('['+_0x2a0667['lastevent'][_0xa1fe('0x73')]()+']','Recording\x20is\x20enabled!');_0x2a0667[_0xa1fe('0x53')]=util[_0xa1fe('0x1f')](_0xa1fe('0x54'),_0x3e4323[_0xa1fe('0x4e')],_0x2a0667[_0xa1fe('0x55')],md5(_0x2a0667[_0xa1fe('0x55')]));}else{_0x2a0667[_0xa1fe('0x53')]='';}headers[_0xa1fe('0x56')]=getAuth(_0x3e4323);return getUser(_0x3e4323)[_0xa1fe('0x1b')](function(_0x516d2e){_0x4b9999=_0x516d2e;logger[_0xa1fe('0xf')](_0xa1fe('0x58'),_0x4b9999['id']);return getEndUser(_0x3e4323,_0x2a0667['calleridname'],_0x2a0667['calleridnum']);})[_0xa1fe('0x1b')](function(_0x3891bf){_0x4f21b5=_0x3891bf;logger[_0xa1fe('0xf')](_0xa1fe('0x6d'),_0x4f21b5['id']);return getTicket(_0x3e4323,_0x4b9999,_0x4f21b5,_0x110506,_0x2a0667);})[_0xa1fe('0x1b')](function(_0xf37a72){if(_0xf37a72){logger[_0xa1fe('0xf')]('The\x20Ticket\x20ID\x20is:',_0xf37a72['id']);}})[_0xa1fe('0x65')](function(_0x1826c9){logger['error']('['+_0x2a0667[_0xa1fe('0x74')][_0xa1fe('0x73')]()+']'+_0xa1fe('0x75'),util[_0xa1fe('0x71')](_0x1826c9,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xae29=['none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','monitor_format','lastevent','toUpperCase','lodash','md5','util','../../../../config/environment','../../../../config/logger','redis','emit','application/json','format','remoteUri','POST','merge','name','getString','Subjects','Descriptions','then','Ticket\x20created!','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','info','Agent\x20found!','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','results','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','%s:%s','password','authType','token','%s/token:%s','username','toString','base64','debug','stringify','defaults','GET','map','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','queue','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','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','%s/agent/tickets/%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat'];(function(_0x29d88b,_0x3480b8){var _0x8c0bde=function(_0xc8bb1a){while(--_0xc8bb1a){_0x29d88b['push'](_0x29d88b['shift']());}};_0x8c0bde(++_0x3480b8);}(_0xae29,0xe1));var _0x9ae2=function(_0x44eebe,_0x94fd9d){_0x44eebe=_0x44eebe-0x0;var _0x32fdfa=_0xae29[_0x44eebe];return _0x32fdfa;};'use strict';var _=require(_0x9ae2('0x0'));var rp=require('request-promise');var md5=require(_0x9ae2('0x1'));var util=require(_0x9ae2('0x2'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x9ae2('0x3'));var logger=require(_0x9ae2('0x4'))('zendesk');config[_0x9ae2('0x5')]=_['defaults'](config[_0x9ae2('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x258648,_0x2c53ba,_0x18a333){io['to'](_0x258648)[_0x9ae2('0x6')](_0x2c53ba,_0x18a333);}var headers={'Content-Type':'application/json','Accept':_0x9ae2('0x7')};function getTicket(_0x2940e6,_0x16f216,_0x264bab,_0x2e9dc0,_0x5a19e4){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util[_0x9ae2('0x8')]('%s/tickets.json',_0x2940e6[_0x9ae2('0x9')]),'method':_0x9ae2('0xa'),'body':{'ticket':_[_0x9ae2('0xb')]({'requester_id':_0x264bab['id'],'submitter_id':_0x16f216?_0x16f216['id']:undefined,'assignee_id':_0x16f216?_0x16f216['id']:undefined,'tags':getTags(_0x2e9dc0['Tags'],_0x9ae2('0xc')),'subject':intUtil[_0x9ae2('0xd')](_0x2e9dc0[_0x9ae2('0xe')],_0x5a19e4,'\x20'),'description':intUtil[_0x9ae2('0xd')](_0x2e9dc0[_0x9ae2('0xf')],_0x5a19e4,'\x0a'),'comment':{'public':![],'body':intUtil[_0x9ae2('0xd')](_0x2e9dc0['Descriptions'],_0x5a19e4,'\x0a')}},getCustomFields(_0x2e9dc0['Fields'],_0x5a19e4))}})[_0x9ae2('0x10')](function(_0x39c8ac){logger['info'](_0x9ae2('0x11'));return _0x39c8ac['ticket'];});}function getUser(_0x2b2ca8,_0x56cec9){if(intUtil['validateEmail'](_0x56cec9)){logger['info'](_0x9ae2('0x12'),_0x56cec9);return request({'uri':util['format'](_0x9ae2('0x13'),_0x2b2ca8['remoteUri']),'qs':{'query':util['format'](_0x9ae2('0x14'),_0x56cec9)}})[_0x9ae2('0x10')](function(_0x4a1eaa){if(_0x4a1eaa[_0x9ae2('0x15')]){logger[_0x9ae2('0x16')](_0x9ae2('0x17'));return _[_0x9ae2('0x18')](_0x4a1eaa['results'],{'email':_0x56cec9,'role':'agent'});}else{logger[_0x9ae2('0x16')](_0x9ae2('0x19'));return request({'uri':util[_0x9ae2('0x8')](_0x9ae2('0x1a'),_0x2b2ca8[_0x9ae2('0x9')])})[_0x9ae2('0x10')](function(_0x1910d6){logger[_0x9ae2('0x16')](_0x9ae2('0x1b'));return _0x1910d6['user'];});}});}else{logger[_0x9ae2('0x16')](_0x9ae2('0x19'));return request({'uri':util['format']('%s/users/me.json',_0x2b2ca8[_0x9ae2('0x9')])})['then'](function(_0x1cec6f){logger[_0x9ae2('0x16')]('Admin\x20account\x20selected.');return _0x1cec6f[_0x9ae2('0x1c')];});}}function getEndUser(_0x593d43,_0x4c3288,_0x3e18b9){logger[_0x9ae2('0x16')]('Searching\x20enduser\x20with\x20phone',_0x3e18b9);return request({'uri':util[_0x9ae2('0x8')](_0x9ae2('0x13'),_0x593d43['remoteUri']),'qs':{'query':util[_0x9ae2('0x8')]('type:user\x20role:end-user\x20phone:%s',_0x3e18b9)}})[_0x9ae2('0x10')](function(_0x4ea199){var _0x4dbc28;if(_0x4ea199[_0x9ae2('0x1d')][_0x9ae2('0x1e')]){_0x4ea199['results']=_[_0x9ae2('0x1f')](_0x4ea199[_0x9ae2('0x1d')],{'suspended':![],'role':_0x9ae2('0x20')});if(_0x4ea199['results'][_0x9ae2('0x1e')]){_0x4dbc28=_[_0x9ae2('0x21')](_0x4ea199['results']);}}if(_0x4dbc28){logger['info'](_0x9ae2('0x22'));return _0x4dbc28;}else{logger['info'](_0x9ae2('0x23'));return request({'uri':util[_0x9ae2('0x8')](_0x9ae2('0x24'),_0x593d43[_0x9ae2('0x9')]),'method':_0x9ae2('0xa'),'body':{'user':{'role':_0x9ae2('0x20'),'name':util['format'](_0x9ae2('0x25'),_0x4c3288||_0x3e18b9),'phone':_0x3e18b9}}})[_0x9ae2('0x10')](function(_0x451719){logger[_0x9ae2('0x16')](_0x9ae2('0x26'));return _0x451719[_0x9ae2('0x1c')];});}});}function getAuth(_0x1463c4){var _0xe1c7aa;if(_0x1463c4['authType']==='password'){_0xe1c7aa=util['format'](_0x9ae2('0x27'),_0x1463c4['username'],_0x1463c4[_0x9ae2('0x28')]);}else if(_0x1463c4[_0x9ae2('0x29')]===_0x9ae2('0x2a')){_0xe1c7aa=util[_0x9ae2('0x8')](_0x9ae2('0x2b'),_0x1463c4[_0x9ae2('0x2c')],_0x1463c4['token']);}return util[_0x9ae2('0x8')]('Basic\x20%s',new Buffer(_0xe1c7aa)[_0x9ae2('0x2d')](_0x9ae2('0x2e')));}function request(_0x5a5e93){logger[_0x9ae2('0x2f')]('[HTTP]',JSON[_0x9ae2('0x30')](_0x5a5e93));return rp(_[_0x9ae2('0x31')](_0x5a5e93,{'method':_0x9ae2('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x309b72,_0x103552){var _0xcce644=[];if(_0x309b72&&_0x309b72[_0x9ae2('0x1e')]>0x0){_0xcce644=_[_0x9ae2('0x33')](_0x309b72,_0x103552);}return _0xcce644;}function getCustomFields(_0x46c984,_0x44630e){var _0x396457=[];var _0x2b4de1={'custom_fields':[]};if(_0x46c984[_0x9ae2('0x1e')]>0x0){_['forEach'](_0x46c984,function(_0x90d20f){if(_[_0x9ae2('0x34')]([_0x9ae2('0x35'),_0x9ae2('0x36')],_0x90d20f[_0x9ae2('0x37')])&&_0x90d20f[_0x9ae2('0x38')]&&!_0x90d20f[_0x9ae2('0x39')]){_0x2b4de1[_0x90d20f['nameField'][_0x9ae2('0x3a')]()]=_0x90d20f[_0x9ae2('0x3b')][_0x9ae2('0x2d')]();}else if(_[_0x9ae2('0x34')]([_0x9ae2('0x35'),'picklist'],_0x90d20f[_0x9ae2('0x37')])&&_0x90d20f[_0x9ae2('0x3c')]&&_0x90d20f['customField']){_0x2b4de1[_0x9ae2('0x3d')][_0x9ae2('0x3e')]({'id':_0x90d20f[_0x9ae2('0x3c')],'value':_0x90d20f['content'][_0x9ae2('0x2d')]()});}else if(_0x90d20f[_0x9ae2('0x37')]===_0x9ae2('0x3f')&&_0x90d20f[_0x9ae2('0x40')]&&_0x90d20f[_0x9ae2('0x3c')]&&_0x90d20f[_0x9ae2('0x39')]){_0x44630e[_0x90d20f[_0x9ae2('0x40')]]&&_0x2b4de1['custom_fields']['push']({'id':_0x90d20f[_0x9ae2('0x3c')],'value':_0x44630e[_0x90d20f['variableName']][_0x9ae2('0x2d')]()});}else if(_0x90d20f[_0x9ae2('0x37')]===_0x9ae2('0x41')&&_0x90d20f[_0x9ae2('0x42')]&&_0x90d20f[_0x9ae2('0x42')][_0x9ae2('0xc')]&&_0x90d20f[_0x9ae2('0x3c')]&&_0x90d20f[_0x9ae2('0x39')]){_0x44630e[_0x90d20f[_0x9ae2('0x42')][_0x9ae2('0xc')][_0x9ae2('0x3a')]()]&&_0x2b4de1[_0x9ae2('0x3d')][_0x9ae2('0x3e')]({'id':_0x90d20f[_0x9ae2('0x3c')],'value':_0x44630e[_0x90d20f[_0x9ae2('0x42')]['name'][_0x9ae2('0x3a')]()][_0x9ae2('0x2d')]()});}});}return _0x2b4de1;}exports[_0x9ae2('0x43')]=function(_0x34e734,_0x5d4271,_0x22dec4,_0x327923,_0x213dae,_0x3b0c54){var _0x586904,_0x5ea5a7;_0x3b0c54['remoteUri']=intUtil['stripTrailingSlash'](_0x3b0c54['remoteUri']);_0x3b0c54[_0x9ae2('0x44')]=intUtil[_0x9ae2('0x45')](_0x3b0c54[_0x9ae2('0x44')]);if(_0x213dae&&_0x213dae['monitor_format']){logger[_0x9ae2('0x16')](_0x9ae2('0x46'),_0x9ae2('0x47'));_0x5d4271[_0x9ae2('0x48')]=util[_0x9ae2('0x8')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3b0c54['serverUrl'],_0x5d4271[_0x9ae2('0x49')],md5(_0x5d4271[_0x9ae2('0x49')]));}else{_0x5d4271[_0x9ae2('0x48')]='';}headers[_0x9ae2('0x4a')]=getAuth(_0x3b0c54);return getUser(_0x3b0c54,_0x327923[_0x9ae2('0x4b')])['then'](function(_0x38c4fd){_0x586904=_0x38c4fd;logger[_0x9ae2('0x16')](_0x9ae2('0x4c'),_0x586904['id']);return getEndUser(_0x3b0c54,_0x5d4271[_0x9ae2('0x4d')],_0x5d4271[_0x9ae2('0x4e')]);})[_0x9ae2('0x10')](function(_0x1c120c){_0x5ea5a7=_0x1c120c;logger[_0x9ae2('0x16')](_0x9ae2('0x4f'),_0x5ea5a7['id']);return getTicket(_0x3b0c54,_0x586904,_0x5ea5a7,_0x22dec4,_0x5d4271);})['then'](function(_0xd5b4e0){if(_0xd5b4e0){logger[_0x9ae2('0x16')](_0x9ae2('0x50'),_0xd5b4e0['id']);switch(_0x3b0c54[_0x9ae2('0x37')]){case _0x9ae2('0x51'):logger[_0x9ae2('0x16')](_0x9ae2('0x46'),_0x9ae2('0x52'));return request({'uri':util[_0x9ae2('0x8')](_0x9ae2('0x53'),_0x3b0c54['remoteUri'],_0x586904['id'],_0xd5b4e0['id']),'method':_0x9ae2('0xa')});case _0x9ae2('0x54'):logger[_0x9ae2('0x16')](_0x9ae2('0x46'),_0x9ae2('0x55'));emit(util[_0x9ae2('0x8')](_0x9ae2('0x56'),_0x327923[_0x9ae2('0xc')]),_0x9ae2('0x57'),{'uri':util[_0x9ae2('0x8')](_0x9ae2('0x58'),_0x3b0c54['remoteUri'][_0x9ae2('0x59')]('/api/v2',''),_0xd5b4e0['id'])});break;default:logger[_0x9ae2('0x5a')](_0x9ae2('0x46'),_0x9ae2('0x5b'));}}})[_0x9ae2('0x5c')](function(_0x311dd6){logger[_0x9ae2('0x5a')](_0x9ae2('0x5d'),util['inspect'](_0x311dd6,{'showHidden':!![],'depth':null}));});};exports[_0x9ae2('0x5e')]=function(_0xf4c01e,_0x5e4f3e,_0x6484c8,_0x52ecd2,_0x6b854c,_0x2fe9a4,_0x1eb187){var _0x281a40,_0x56f812;_0x2fe9a4[_0x9ae2('0x9')]=intUtil['stripTrailingSlash'](_0x2fe9a4[_0x9ae2('0x9')]);_0x2fe9a4['serverUrl']=intUtil[_0x9ae2('0x45')](_0x2fe9a4[_0x9ae2('0x44')]);if(_0x1eb187&&_0x1eb187[_0x9ae2('0x5f')]&&_0x1eb187[_0x9ae2('0x5f')]!==_0x9ae2('0x60')){logger['info'](_0x9ae2('0x61'),'Recording\x20is\x20enabled!');_0x5e4f3e[_0x9ae2('0x48')]=util[_0x9ae2('0x8')](_0x9ae2('0x62'),_0x2fe9a4[_0x9ae2('0x44')],_0x5e4f3e[_0x9ae2('0x49')],md5(_0x5e4f3e[_0x9ae2('0x49')]));}headers['Authorization']=getAuth(_0x2fe9a4);return getUser(_0x2fe9a4,_0x52ecd2[_0x9ae2('0x4b')])[_0x9ae2('0x10')](function(_0x115181){_0x281a40=_0x115181;logger[_0x9ae2('0x16')](_0x9ae2('0x4c'),_0x281a40['id']);return getEndUser(_0x2fe9a4,_0x5e4f3e[_0x9ae2('0x63')],_0x5e4f3e[_0x9ae2('0x64')]);})[_0x9ae2('0x10')](function(_0x385c64){_0x56f812=_0x385c64;logger[_0x9ae2('0x16')](_0x9ae2('0x4f'),_0x56f812['id']);return getTicket(_0x2fe9a4,_0x281a40,_0x56f812,_0x6484c8,_0x5e4f3e);})[_0x9ae2('0x10')](function(_0x2d75bb){if(_0x2d75bb){logger['info'](_0x9ae2('0x50'),_0x2d75bb['id']);switch(_0x2fe9a4[_0x9ae2('0x37')]){case'integrationTab':logger[_0x9ae2('0x16')](_0x9ae2('0x61'),_0x9ae2('0x52'));return request({'uri':util[_0x9ae2('0x8')](_0x9ae2('0x53'),_0x2fe9a4[_0x9ae2('0x9')],_0x281a40['id'],_0x2d75bb['id']),'method':'POST'});case _0x9ae2('0x54'):logger[_0x9ae2('0x16')]('[OUTBOUND]',_0x9ae2('0x55'));emit(util['format']('user:%s',_0x52ecd2[_0x9ae2('0xc')]),_0x9ae2('0x57'),{'uri':util['format']('%s/agent/tickets/%s',_0x2fe9a4[_0x9ae2('0x9')]['replace']('/api/v2',''),_0x2d75bb['id'])});break;default:logger[_0x9ae2('0x5a')](_0x9ae2('0x61'),_0x9ae2('0x5b'));}}})[_0x9ae2('0x5c')](function(_0xc13130){logger[_0x9ae2('0x5a')](_0x9ae2('0x65'),util[_0x9ae2('0x66')](_0xc13130,{'showHidden':!![],'depth':null}));});};exports[_0x9ae2('0x67')]=function(_0x34cdfa,_0x3eada9,_0x33b803,_0x1e4d30,_0x28e628,_0x4a344d){var _0x285080,_0x3030af;_0x4a344d[_0x9ae2('0x9')]=intUtil[_0x9ae2('0x45')](_0x4a344d['remoteUri']);_0x4a344d[_0x9ae2('0x44')]=intUtil[_0x9ae2('0x45')](_0x4a344d[_0x9ae2('0x44')]);if(_0x28e628&&_0x28e628[_0x9ae2('0x68')]){logger[_0x9ae2('0x16')]('['+_0x3eada9['lastevent']['toUpperCase']()+']',_0x9ae2('0x47'));_0x3eada9[_0x9ae2('0x48')]=util['format'](_0x9ae2('0x62'),_0x4a344d[_0x9ae2('0x44')],_0x3eada9[_0x9ae2('0x49')],md5(_0x3eada9[_0x9ae2('0x49')]));}else{_0x3eada9['recordingURL']='';}headers[_0x9ae2('0x4a')]=getAuth(_0x4a344d);return getUser(_0x4a344d)[_0x9ae2('0x10')](function(_0x587c8c){_0x285080=_0x587c8c;logger[_0x9ae2('0x16')](_0x9ae2('0x4c'),_0x285080['id']);return getEndUser(_0x4a344d,_0x3eada9['calleridname'],_0x3eada9[_0x9ae2('0x4e')]);})[_0x9ae2('0x10')](function(_0x170b3c){_0x3030af=_0x170b3c;logger[_0x9ae2('0x16')](_0x9ae2('0x4f'),_0x3030af['id']);return getTicket(_0x4a344d,_0x285080,_0x3030af,_0x33b803,_0x3eada9);})[_0x9ae2('0x10')](function(_0xcd4523){if(_0xcd4523){logger[_0x9ae2('0x16')]('The\x20Ticket\x20ID\x20is:',_0xcd4523['id']);}})[_0x9ae2('0x5c')](function(_0x3ff6f4){logger[_0x9ae2('0x5a')]('['+_0x3eada9[_0x9ae2('0x69')][_0x9ae2('0x6a')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x9ae2('0x66')](_0x3ff6f4,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index f94801d..b4ede31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','[OUTBOUND]','Outbound','unmanaged','monitor_format','toUpperCase','md5','moment','ioredis','bluebird','../../../../config/environment','zoho','redis','localhost','socket.io-emitter','emit','debug','[HTTP]','length','forEach','includes','picklist','type','idField','toString','variable','variableName','customVariable','Variable','name','indexOf','split','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.cn','https://accounts.zoho.eu','refreshToken','clientId','refresh_token','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','GET','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','then','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','Administrator','user','profile','info','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','stringify','The\x20failing\x20result\x20is','data','enduserType','POST','https://www.zohoapis.','moduleCreate','role','code','SUCCESS','details','startCase','Error:\x20','log','CREATE\x20ERROR','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','lead','Creating\x20new\x20call...','Owner','first_name','last_name','Subject','getString','Subjects','Description','Descriptions','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','format','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','mm:ss','lastevent','called','Call_Result','Called','connect','abandoned','Abandoned','outbound','agentcalledAt','Call_Type','Inbound','Fields','/crm/v2/Calls','Call\x20created!','err','queue','host','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...'];(function(_0x45eabd,_0x19d34c){var _0x25b56a=function(_0x331b1a){while(--_0x331b1a){_0x45eabd['push'](_0x45eabd['shift']());}};_0x25b56a(++_0x19d34c);}(_0xa74f,0x9a));var _0xfa74=function(_0x51ec61,_0xf9d1e3){_0x51ec61=_0x51ec61-0x0;var _0x223200=_0xa74f[_0x51ec61];return _0x223200;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xfa74('0x0'));var util=require('util');var intUtil=require('./util');var moment=require(_0xfa74('0x1'));var Redis=require(_0xfa74('0x2'));var BPromise=require(_0xfa74('0x3'));var config=require(_0xfa74('0x4'));var logger=require('../../../../config/logger')(_0xfa74('0x5'));config['redis']=_['defaults'](config[_0xfa74('0x6')],{'host':_0xfa74('0x7'),'port':0x18eb});var io=require(_0xfa74('0x8'))(new Redis(config[_0xfa74('0x6')]));function emit(_0x287921,_0x344e04,_0x5c0eb2){io['to'](_0x287921)[_0xfa74('0x9')](_0x344e04,_0x5c0eb2);}function request(_0x37d4d8){logger[_0xfa74('0xa')](_0xfa74('0xb'),JSON['stringify'](_0x37d4d8));return rp(_0x37d4d8);}function getCustomFields(_0x46117e,_0x4f8891){var _0x48695c={};if(_0x46117e[_0xfa74('0xc')]>0x0){_[_0xfa74('0xd')](_0x46117e,function(_0x30b2d5){if(_[_0xfa74('0xe')](['string',_0xfa74('0xf')],_0x30b2d5[_0xfa74('0x10')])&&_0x30b2d5[_0xfa74('0x11')]){_0x48695c[_0x30b2d5[_0xfa74('0x11')]]=_0x30b2d5['content'][_0xfa74('0x12')]();}else if(_0x30b2d5[_0xfa74('0x10')]===_0xfa74('0x13')&&_0x30b2d5[_0xfa74('0x14')]&&_0x30b2d5[_0xfa74('0x11')]&&_0x4f8891[_0x30b2d5['variableName']]){_0x48695c[_0x30b2d5[_0xfa74('0x11')]]=_0x4f8891[_0x30b2d5[_0xfa74('0x14')]][_0xfa74('0x12')]();}else if(_0x30b2d5[_0xfa74('0x10')]===_0xfa74('0x15')&&_0x30b2d5[_0xfa74('0x16')]&&_0x30b2d5[_0xfa74('0x16')]['name']&&_0x30b2d5[_0xfa74('0x11')]&&_0x4f8891[_0x30b2d5[_0xfa74('0x16')]['name']['toLowerCase']()]){_0x48695c[_0x30b2d5[_0xfa74('0x11')]]=_0x4f8891[_0x30b2d5[_0xfa74('0x16')][_0xfa74('0x17')]['toLowerCase']()][_0xfa74('0x12')]();}});}return _0x48695c;}function getName(_0x2edebb){if(_0x2edebb[_0xfa74('0x18')]('\x20')>0x0){var _0x59a00c=_0x2edebb[_0xfa74('0x19')](/ (.+)/);if(_0x59a00c[0x1]){return _0x59a00c;}}return[_0x2edebb,_0x2edebb];}var accountsTokens={};function getAccessToken(_0x302eb4){return new Promise(function(_0x2e6c33,_0x4a5ee4){if(!_['isNil'](accountsTokens[_0x302eb4['id']])&&!_[_0xfa74('0x1a')](accountsTokens[_0x302eb4['id']][_0xfa74('0x1b')])){if(moment()[_0xfa74('0x1c')](accountsTokens[_0x302eb4['id']][_0xfa74('0x1d')])){_0x2e6c33(accountsTokens[_0x302eb4['id']][_0xfa74('0x1b')]);}}var _0x554e0e;switch(_0x302eb4['zone']){case'US':_0x554e0e=_0xfa74('0x1e');break;case'AU':_0x554e0e='https://accounts.zoho.com.au';break;case'EU':_0x554e0e='https://accounts.zoho.eu';break;case'IN':_0x554e0e='https://accounts.zoho.in';break;case'CN':_0x554e0e=_0xfa74('0x1f');break;default:_0x554e0e=_0xfa74('0x20');break;}var _0x42d9bf={'method':'POST','uri':_0x554e0e+'/oauth/v2/token','qs':{'refresh_token':_0x302eb4[_0xfa74('0x21')],'client_id':_0x302eb4[_0xfa74('0x22')],'client_secret':_0x302eb4['clientSecret'],'grant_type':_0xfa74('0x23')},'json':!![]};return rp(_0x42d9bf)['then'](function(_0x1a8cf7){accountsTokens[_0x302eb4['id']]={'access_token':_0x1a8cf7[_0xfa74('0x1b')],'expires_in':moment()['add'](_0x1a8cf7[_0xfa74('0x1d')],_0xfa74('0x24'))};_0x2e6c33(_0x1a8cf7[_0xfa74('0x1b')]);})[_0xfa74('0x25')](function(_0x4f7337){logger[_0xfa74('0x26')](_0xfa74('0x27'),_0x4f7337[_0xfa74('0x28')]);_0x4a5ee4(_0x4f7337);});});}function getUser(_0x57d90e,_0x4d4bed,_0x1322a4,_0x8b706e){logger['info']('Search\x20user');return request({'method':_0xfa74('0x29'),'uri':util['format'](_0xfa74('0x2a'),_0x4d4bed),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0xfa74('0x2b')+_0x57d90e},'json':!![]})[_0xfa74('0x2c')](function(_0x3c4cd1){if(_0x3c4cd1[_0xfa74('0x2d')]){var _0x4c506f=-0x1;if(_[_0xfa74('0x2e')](_0x3c4cd1[_0xfa74('0x2d')])){if(!_[_0xfa74('0x1a')](_0x8b706e)){_0x4c506f=_[_0xfa74('0x2f')](_0x3c4cd1[_0xfa74('0x2d')],function(_0xb878c7){return _0xb878c7[_0xfa74('0x30')]===_0x8b706e;});}if(_0x4c506f>=0x0){logger['info'](_0xfa74('0x31'));}else{logger['info'](_0xfa74('0x32'));_0x4c506f=_[_0xfa74('0x2f')](_0x3c4cd1[_0xfa74('0x2d')],function(_0x1b5ff0){return _0x1b5ff0['profile']['name']===_0xfa74('0x33');});}return _0x3c4cd1[_0xfa74('0x2d')][_0x4c506f];}else{if(_0x3c4cd1[_0xfa74('0x34')][_0xfa74('0x35')]['name']===_0xfa74('0x33')){logger[_0xfa74('0x36')]('Using\x20the\x20admin\x20account!');user=_0x3c4cd1['user'];return user;}else{logger['error']('The\x20failing\x20result\x20is',JSON['stringify'](_0x3c4cd1));throw new Error(_0xfa74('0x37')+JSON[_0xfa74('0x38')](_0x3c4cd1));}}}else{logger[_0xfa74('0x26')](_0xfa74('0x39'),JSON[_0xfa74('0x38')](_0x3c4cd1));throw new Error(_0xfa74('0x37')+JSON[_0xfa74('0x38')](_0x3c4cd1));}})[_0xfa74('0x25')](function(_0x1a2d52){console['error'](_0x1a2d52);});}function getZohoUser(_0x382c31,_0x12927a){return new BPromise(function(_0x430339,_0xf66f40){request(_0x382c31)[_0xfa74('0x2c')](function(_0x186126){var _0x5e58dd=null;if(_0x186126){_0x5e58dd=_0x186126[_0xfa74('0x3a')][0x0];_0x5e58dd[_0xfa74('0x3b')]=_0x12927a;}_0x430339(_0x5e58dd);})[_0xfa74('0x25')](function(_0x25b3de){_0xf66f40(_0x25b3de);});});}function createEndUser(_0x5853d4,_0x207566,_0x13d9a5,_0xe8491b,_0x35f252,_0x565b5d){var _0x13d9a5=getName(_0x13d9a5);return request({'method':_0xfa74('0x3c'),'uri':_0xfa74('0x3d')+_0x207566+'/crm/v2/'+_['startCase'](_0x565b5d[_0xfa74('0x3e')])+'s','body':{'data':[{'Last_Name':_0x13d9a5[0x1],'First_Name':_0x13d9a5[0x0],'Phone':_0xe8491b,'Owner':{'name':!_[_0xfa74('0x1a')](_0x35f252[_0xfa74('0x3f')][_0xfa74('0x17')])?_0x35f252['role'][_0xfa74('0x17')]:!_[_0xfa74('0x1a')](_0x35f252['first_name'])?_0x35f252['first_name']+'\x20'+_0x35f252['last_name']:_0x35f252['last_name'],'id':_0x35f252['id']}}]},'headers':{'Authorization':_0xfa74('0x2b')+_0x5853d4},'json':!![]})[_0xfa74('0x2c')](function(_0x3f92b2){if(_0x3f92b2&&_0x3f92b2[_0xfa74('0x3a')][0x0][_0xfa74('0x40')]===_0xfa74('0x41')){var _0x7735c5=_0x3f92b2['data'][0x0][_0xfa74('0x42')];_0x7735c5[_0xfa74('0x3b')]=_[_0xfa74('0x43')](_0x565b5d[_0xfa74('0x3e')])+'s';return _0x7735c5;}logger[_0xfa74('0x26')]('The\x20failing\x20result\x20is',JSON[_0xfa74('0x38')](data));throw new Error(_0xfa74('0x44')+JSON[_0xfa74('0x38')](data));})[_0xfa74('0x25')](function(_0xcc408c){console[_0xfa74('0x45')](_0xfa74('0x46'),_0xcc408c);});}function getEndUser(_0x12dde8,_0x4f00d3,_0x1470cf,_0x53f213,_0x520867,_0x4ebb67,_0xb7db3){var _0x10984c={'method':_0xfa74('0x29'),'uri':'','headers':{'Authorization':_0xfa74('0x2b')+_0x12dde8},'json':!![]};switch(_0xb7db3['moduleSearch']){case _0xfa74('0x47'):_0x10984c[_0xfa74('0x48')]='https://www.zohoapis.'+_0x4f00d3+_0xfa74('0x49')+_0x520867+'))';return getZohoUser(_0x10984c,_0xfa74('0x4a'))['then'](function(_0x2be89f){if(_0x2be89f)return _0x2be89f;_0x10984c[_0xfa74('0x48')]=_0xfa74('0x3d')+_0x4f00d3+_0xfa74('0x4b')+_0x520867+'))';return getZohoUser(_0x10984c,_0xfa74('0x4c'))['then'](function(_0x54e06c){if(_0x54e06c)return _0x54e06c;if(_0xb7db3[_0xfa74('0x3e')]!=_0xfa74('0x4d')){return createEndUser(_0x12dde8,_0x4f00d3,_0x53f213,_0x520867,_0x4ebb67,_0xb7db3);}else{return{};}});});break;case'contact':_0x10984c[_0xfa74('0x48')]=_0xfa74('0x3d')+_0x4f00d3+_0xfa74('0x49')+_0x520867+'))';return getZohoUser(_0x10984c,'Contacts')['then'](function(_0x3ace36){if(_0x3ace36)return _0x3ace36;if(_0xb7db3[_0xfa74('0x3e')]!=_0xfa74('0x4d')){return createEndUser(_0x12dde8,_0x4f00d3,_0x53f213,_0x520867,_0x4ebb67,_0xb7db3);}else{return{};}});break;case _0xfa74('0x4e'):_0x10984c[_0xfa74('0x48')]=_0xfa74('0x3d')+_0x4f00d3+_0xfa74('0x4b')+_0x520867+'))';return getZohoUser(_0x10984c,_0xfa74('0x4c'))['then'](function(_0x214994){if(_0x214994)return _0x214994;if(_0xb7db3[_0xfa74('0x3e')]!=_0xfa74('0x4d')){return createEndUser(_0x12dde8,_0x4f00d3,_0x53f213,_0x520867,_0x4ebb67,_0xb7db3);}else{return{};}});break;}}function getCall(_0x2654b5,_0x569801,_0x4ec218,_0x3146de,_0x5b3404,_0x152eaa,_0x221dc7,_0x427469){logger[_0xfa74('0x36')](_0xfa74('0x4f'));var _0x144c80={};_0x144c80[_0xfa74('0x50')]={'name':!_['isNil'](_0x3146de[_0xfa74('0x3f')]['name'])&&!_[_0xfa74('0x1a')](_0x3146de['profile']['name'])&&_0x3146de[_0xfa74('0x35')][_0xfa74('0x17')]==='administrator'?_0x3146de['role'][_0xfa74('0x17')]:!_[_0xfa74('0x1a')](_0x3146de[_0xfa74('0x51')])?_0x3146de[_0xfa74('0x51')]+'\x20'+_0x3146de[_0xfa74('0x52')]:_0x3146de[_0xfa74('0x52')],'id':_0x3146de['id']};_0x144c80[_0xfa74('0x53')]=intUtil[_0xfa74('0x54')](_0x152eaa[_0xfa74('0x55')],_0x221dc7,'\x20');_0x144c80[_0xfa74('0x56')]=intUtil['getString'](_0x152eaa[_0xfa74('0x57')],_0x221dc7,'\x0a');if(_0x5b3404[_0xfa74('0x3b')]==='Contacts'){_0x144c80['Who_Id']={'name':!_[_0xfa74('0x1a')](_0x5b3404[_0xfa74('0x58')])?_0x5b3404[_0xfa74('0x58')]:!_[_0xfa74('0x1a')](_0x5b3404[_0xfa74('0x59')])?_0x5b3404['First_Name']+'\x20'+_0x5b3404[_0xfa74('0x5a')]:_0x5b3404['Last_Name'],'id':_0x5b3404['id']};}if(_0x5b3404[_0xfa74('0x3b')]===_0xfa74('0x4c')){_0x144c80[_0xfa74('0x5b')]={'name':!_['isNil'](_0x5b3404['Full_Name'])?_0x5b3404[_0xfa74('0x58')]:!_[_0xfa74('0x1a')](_0x5b3404[_0xfa74('0x59')])?_0x5b3404[_0xfa74('0x59')]+'\x20'+_0x5b3404['Last_Name']:_0x5b3404[_0xfa74('0x5a')],'id':_0x5b3404['id']};_0x144c80[_0xfa74('0x5c')]=_['startCase'](_0x5b3404[_0xfa74('0x3b')]);}if(_0x221dc7[_0xfa74('0x5d')]){_0x144c80[_0xfa74('0x5e')]=moment[_0xfa74('0x5f')](parseInt(_0x221dc7['talktime'])*0x3e8)[_0xfa74('0x60')]('mm:ss');}else if(_0x221dc7[_0xfa74('0x61')]&&_0x221dc7[_0xfa74('0x62')]){_0x144c80[_0xfa74('0x5e')]=moment[_0xfa74('0x5f')](moment(_0x221dc7[_0xfa74('0x62')],_0xfa74('0x63'))[_0xfa74('0x64')](moment(_0x221dc7[_0xfa74('0x65')],_0xfa74('0x63'))))[_0xfa74('0x60')](_0xfa74('0x66'));}switch(_0x221dc7[_0xfa74('0x67')]){case _0xfa74('0x68'):_0x144c80[_0xfa74('0x69')]=_0xfa74('0x6a');break;case'complete':case _0xfa74('0x6b'):_0x144c80[_0xfa74('0x69')]='Answered';break;case'rejected':_0x144c80[_0xfa74('0x69')]='Rejected';break;case _0xfa74('0x6c'):_0x144c80[_0xfa74('0x69')]=_0xfa74('0x6d');break;case'timeout':_0x144c80[_0xfa74('0x69')]='Timeout';default:}_0x144c80['Call_Start_Time']=(_0x427469===_0xfa74('0x6e')?moment(_0x221dc7[_0xfa74('0x65')])[_0xfa74('0x60')](_0xfa74('0x63')):moment(_0x221dc7[_0xfa74('0x6f')])[_0xfa74('0x60')](_0xfa74('0x63')))||moment()[_0xfa74('0x60')](_0xfa74('0x63'));_0x144c80[_0xfa74('0x70')]=_0x427469||_0xfa74('0x71');_0x144c80=_['merge'](_0x144c80,getCustomFields(_0x152eaa[_0xfa74('0x72')],_0x221dc7));return request({'method':'POST','uri':_0xfa74('0x3d')+_0x569801+_0xfa74('0x73'),'headers':{'Authorization':_0xfa74('0x2b')+_0x2654b5},'body':{'data':[_0x144c80]},'json':!![]})['then'](function(_0x773f98){if(_0x773f98&&_0x773f98[_0xfa74('0x3a')][0x0][_0xfa74('0x40')]==='SUCCESS'){logger[_0xfa74('0x36')](_0xfa74('0x74'));return{'id':_0x773f98[_0xfa74('0x3a')][0x0][_0xfa74('0x42')]['id']};}})[_0xfa74('0x25')](function(_0x5bd0e5){logger[_0xfa74('0x36')](_0xfa74('0x75'),_0x5bd0e5[_0xfa74('0x28')]);console[_0xfa74('0x45')](_0xfa74('0x75'),_0x5bd0e5);});}exports[_0xfa74('0x76')]=function(_0x2f975f,_0x2007b7,_0x35f4e7,_0x3526d7,_0x1dccaa,_0x30aec7){var _0x5f4df9,_0xc0fb33,_0x415390;_0x30aec7[_0xfa74('0x77')]=intUtil[_0xfa74('0x78')](_0x30aec7[_0xfa74('0x77')]);_0x30aec7[_0xfa74('0x79')]=intUtil[_0xfa74('0x78')](_0x30aec7[_0xfa74('0x79')]);if(_0x1dccaa&&_0x1dccaa['monitor_format']){logger[_0xfa74('0x36')](_0xfa74('0x7a'),_0xfa74('0x7b'));_0x2007b7[_0xfa74('0x7c')]=_0x30aec7['serverUrl']+_0xfa74('0x7d')+_0x2007b7[_0xfa74('0x7e')]+_0xfa74('0x7f')+md5(_0x2007b7[_0xfa74('0x7e')]);}else{_0x2007b7['recordingURL']='';}var _0x2b22d5=_0x30aec7['host']==='zoho.eu'?'eu':_0xfa74('0x80');return getAccessToken(_0x30aec7)['then'](function(_0x1cc0fe){_0x415390=_0x1cc0fe;return getUser(_0x415390,_0x2b22d5,_0x30aec7,_0x3526d7[_0xfa74('0x30')]);})['then'](function(_0x5121ff){_0x5f4df9=_0x5121ff;logger[_0xfa74('0x36')](_0xfa74('0x81'),_0x5f4df9['id']);return getEndUser(_0x415390,_0x2b22d5,_0x30aec7,_0x2007b7[_0xfa74('0x82')],_0x2007b7[_0xfa74('0x83')],_0x5f4df9,_0x35f4e7);})['then'](function(_0x5acb9b){_0xc0fb33=_0x5acb9b;return getCall(_0x415390,_0x2b22d5,_0x30aec7,_0x5f4df9,_0xc0fb33,_0x35f4e7,_0x2007b7,'Inbound');})[_0xfa74('0x2c')](function(_0x461a8d){if(_0x461a8d){logger[_0xfa74('0x36')](_0xfa74('0x84'),_0x461a8d['id']);logger[_0xfa74('0x36')]('[QUEUE]',_0xfa74('0x85'));emit(util[_0xfa74('0x60')](_0xfa74('0x86'),_0x3526d7[_0xfa74('0x17')]),_0xfa74('0x87'),{'uri':_0xfa74('0x88')+_0x30aec7[_0xfa74('0x77')]+_0xfa74('0x89')+_0x461a8d['id']});}})[_0xfa74('0x25')](function(_0x557e28){logger['error']('[QUEUE]',JSON[_0xfa74('0x38')](_0x557e28));});};exports[_0xfa74('0x6e')]=function(_0x1a2571,_0x119604,_0x2f14b2,_0x533649,_0x3e4323,_0x3ace03,_0x5d4ab4){var _0x24efb1,_0x495a77,_0xb9590f;_0x3ace03[_0xfa74('0x77')]=intUtil[_0xfa74('0x78')](_0x3ace03[_0xfa74('0x77')]);_0x3ace03[_0xfa74('0x79')]=intUtil[_0xfa74('0x78')](_0x3ace03[_0xfa74('0x79')]);if(_0x5d4ab4&&_0x5d4ab4[_0xfa74('0x8a')]&&_0x5d4ab4['recordingFormat']!=='none'){logger['info'](_0xfa74('0x8b'),_0xfa74('0x7b'));_0x119604['recordingURL']=_0x3ace03[_0xfa74('0x79')]+_0xfa74('0x7d')+_0x119604[_0xfa74('0x7e')]+_0xfa74('0x7f')+md5(_0x119604['uniqueid']);}var _0x46885c=_0x3ace03['host']==='zoho.eu'?'eu':_0xfa74('0x80');return getAccessToken(_0x3ace03)[_0xfa74('0x2c')](function(_0x3d72cd){_0xb9590f=_0x3d72cd;return getUser(_0xb9590f,_0x46885c,_0x3ace03,_0x533649['email']);})[_0xfa74('0x2c')](function(_0x323d07){_0x24efb1=_0x323d07;logger['info'](_0xfa74('0x81'),_0x24efb1['id']);return getEndUser(_0xb9590f,_0x46885c,_0x3ace03,_0x119604['destcalleridname'],_0x119604['destcalleridnum'],_0x24efb1,_0x2f14b2);})['then'](function(_0x9d30ae){_0x495a77=_0x9d30ae;return getCall(_0xb9590f,_0x46885c,_0x3ace03,_0x24efb1,_0x495a77,_0x2f14b2,_0x119604,_0xfa74('0x8c'));})[_0xfa74('0x2c')](function(_0x38eddb){if(_0x38eddb){logger[_0xfa74('0x36')]('The\x20Call\x20ID\x20is:',_0x38eddb['id']);logger['info'](_0xfa74('0x8b'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xfa74('0x60')](_0xfa74('0x86'),_0x533649[_0xfa74('0x17')]),_0xfa74('0x87'),{'uri':_0xfa74('0x88')+_0x3ace03[_0xfa74('0x77')]+_0xfa74('0x89')+_0x38eddb['id']});}})[_0xfa74('0x25')](function(_0x29cbf4){logger['error'](_0xfa74('0x8b'),JSON[_0xfa74('0x38')](_0x29cbf4));});};exports[_0xfa74('0x8d')]=function(_0x1bd090,_0x293eec,_0xe60436,_0x4545d4,_0x3a5793,_0x27258c){var _0x169e1c,_0x1c2acb,_0x51f985;_0x27258c['host']=intUtil[_0xfa74('0x78')](_0x27258c[_0xfa74('0x77')]);_0x27258c[_0xfa74('0x79')]=intUtil['stripTrailingSlash'](_0x27258c['serverUrl']);if(_0x3a5793&&_0x3a5793[_0xfa74('0x8e')]){logger[_0xfa74('0x36')]('['+_0x293eec[_0xfa74('0x67')][_0xfa74('0x8f')]()+']',_0xfa74('0x7b'));_0x293eec[_0xfa74('0x7c')]=_0x27258c[_0xfa74('0x79')]+'/api/voice/recordings/'+_0x293eec[_0xfa74('0x7e')]+'/downloads?type=uniqueid&token='+md5(_0x293eec['uniqueid']);}else{_0x293eec[_0xfa74('0x7c')]='';}var _0x2a0982=_0x27258c[_0xfa74('0x77')]==='zoho.eu'?'eu':_0xfa74('0x80');return getAccessToken(_0x27258c)['then'](function(_0x56b6b2){_0x51f985=_0x56b6b2;return getUser(_0x51f985,_0x2a0982,_0x27258c);})[_0xfa74('0x2c')](function(_0x14046e){_0x169e1c=_0x14046e;logger[_0xfa74('0x36')](_0xfa74('0x81'),_0x169e1c['id']);return getEndUser(_0x51f985,_0x2a0982,_0x27258c,_0x293eec[_0xfa74('0x82')],_0x293eec[_0xfa74('0x83')],_0x169e1c,_0xe60436);})['then'](function(_0x2dee58){_0x1c2acb=_0x2dee58;return getCall(_0x51f985,_0x2a0982,_0x27258c,_0x169e1c,_0x1c2acb,_0xe60436,_0x293eec,_0xfa74('0x71'));})['then'](function(_0xcb3f90){if(_0xcb3f90){logger[_0xfa74('0x36')](_0xfa74('0x84'),_0xcb3f90['id']);}})['catch'](function(_0x205e5c){logger[_0xfa74('0x26')]('['+_0x293eec['lastevent'][_0xfa74('0x8f')]()+']',JSON[_0xfa74('0x38')](_0x205e5c));});};
\ No newline at end of file
+var _0xb145=['merge','Fields','/crm/v2/Calls','SUCCESS','Call\x20created!','details','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','/downloads?type=uniqueid&token=','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','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','[OUTBOUND]','zoho.eu','com','destcalleridname','destcalleridnum','unmanaged','toUpperCase','lodash','request-promise','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','[HTTP]','stringify','length','forEach','includes','picklist','type','idField','content','toString','variableName','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','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','seconds','catch','error','stack','info','GET','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','findIndex','email','Using\x20the\x20admin\x20account!','profile','Administrator','user','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','startCase','role','first_name','last_name','Zoho-oauthtoken\x20','code','log','CREATE\x20ERROR','moduleSearch','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','moduleCreate','nothing','contact','lead','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Subjects','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','format','lastevent','called','Call_Result','Called','complete','connect','rejected','Rejected','abandoned','Abandoned','Call_Start_Time','outbound','agentcalledAt','Call_Type','Inbound'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xb145,0x15f));var _0x5b14=function(_0x42de20,_0x474f5d){_0x42de20=_0x42de20-0x0;var _0x28c3b6=_0xb145[_0x42de20];return _0x28c3b6;};'use strict';var _=require(_0x5b14('0x0'));var rp=require(_0x5b14('0x1'));var md5=require('md5');var util=require(_0x5b14('0x2'));var intUtil=require(_0x5b14('0x3'));var moment=require(_0x5b14('0x4'));var Redis=require(_0x5b14('0x5'));var BPromise=require(_0x5b14('0x6'));var config=require(_0x5b14('0x7'));var logger=require(_0x5b14('0x8'))(_0x5b14('0x9'));config[_0x5b14('0xa')]=_[_0x5b14('0xb')](config[_0x5b14('0xa')],{'host':_0x5b14('0xc'),'port':0x18eb});var io=require(_0x5b14('0xd'))(new Redis(config[_0x5b14('0xa')]));function emit(_0x231917,_0x195454,_0x32bf4f){io['to'](_0x231917)[_0x5b14('0xe')](_0x195454,_0x32bf4f);}function request(_0x2ab9b1){logger['debug'](_0x5b14('0xf'),JSON[_0x5b14('0x10')](_0x2ab9b1));return rp(_0x2ab9b1);}function getCustomFields(_0x355149,_0x3f1d4c){var _0x44d5b0={};if(_0x355149[_0x5b14('0x11')]>0x0){_[_0x5b14('0x12')](_0x355149,function(_0x30fc38){if(_[_0x5b14('0x13')](['string',_0x5b14('0x14')],_0x30fc38[_0x5b14('0x15')])&&_0x30fc38[_0x5b14('0x16')]){_0x44d5b0[_0x30fc38[_0x5b14('0x16')]]=_0x30fc38[_0x5b14('0x17')][_0x5b14('0x18')]();}else if(_0x30fc38[_0x5b14('0x15')]==='variable'&&_0x30fc38[_0x5b14('0x19')]&&_0x30fc38[_0x5b14('0x16')]&&_0x3f1d4c[_0x30fc38[_0x5b14('0x19')]]){_0x44d5b0[_0x30fc38[_0x5b14('0x16')]]=_0x3f1d4c[_0x30fc38[_0x5b14('0x19')]]['toString']();}else if(_0x30fc38['type']==='customVariable'&&_0x30fc38['Variable']&&_0x30fc38[_0x5b14('0x1a')][_0x5b14('0x1b')]&&_0x30fc38[_0x5b14('0x16')]&&_0x3f1d4c[_0x30fc38[_0x5b14('0x1a')]['name'][_0x5b14('0x1c')]()]){_0x44d5b0[_0x30fc38['idField']]=_0x3f1d4c[_0x30fc38[_0x5b14('0x1a')][_0x5b14('0x1b')][_0x5b14('0x1c')]()]['toString']();}});}return _0x44d5b0;}function getName(_0x193cd7){if(_0x193cd7[_0x5b14('0x1d')]('\x20')>0x0){var _0x26c302=_0x193cd7[_0x5b14('0x1e')](/ (.+)/);if(_0x26c302[0x1]){return _0x26c302;}}return[_0x193cd7,_0x193cd7];}var accountsTokens={};function getAccessToken(_0x5bed1c){return new Promise(function(_0x1ddeb6,_0x409075){if(!_['isNil'](accountsTokens[_0x5bed1c['id']])&&!_[_0x5b14('0x1f')](accountsTokens[_0x5bed1c['id']][_0x5b14('0x20')])){if(moment()[_0x5b14('0x21')](accountsTokens[_0x5bed1c['id']][_0x5b14('0x22')])){_0x1ddeb6(accountsTokens[_0x5bed1c['id']]['access_token']);}}var _0xb3a26f;switch(_0x5bed1c[_0x5b14('0x23')]){case'US':_0xb3a26f=_0x5b14('0x24');break;case'AU':_0xb3a26f='https://accounts.zoho.com.au';break;case'EU':_0xb3a26f=_0x5b14('0x25');break;case'IN':_0xb3a26f=_0x5b14('0x26');break;case'CN':_0xb3a26f=_0x5b14('0x27');break;default:_0xb3a26f=_0x5b14('0x25');break;}var _0x2e59ef={'method':_0x5b14('0x28'),'uri':_0xb3a26f+_0x5b14('0x29'),'qs':{'refresh_token':_0x5bed1c[_0x5b14('0x2a')],'client_id':_0x5bed1c[_0x5b14('0x2b')],'client_secret':_0x5bed1c[_0x5b14('0x2c')],'grant_type':_0x5b14('0x2d')},'json':!![]};return rp(_0x2e59ef)[_0x5b14('0x2e')](function(_0xa40b6b){accountsTokens[_0x5bed1c['id']]={'access_token':_0xa40b6b[_0x5b14('0x20')],'expires_in':moment()['add'](_0xa40b6b['expires_in'],_0x5b14('0x2f'))};_0x1ddeb6(_0xa40b6b['access_token']);})[_0x5b14('0x30')](function(_0x5c2c41){logger[_0x5b14('0x31')]('Failing\x20creating\x20the\x20access_token',_0x5c2c41[_0x5b14('0x32')]);_0x409075(_0x5c2c41);});});}function getUser(_0x4e6d46,_0x32ce4d,_0x4ca083,_0xf3b8f1){logger[_0x5b14('0x33')]('Search\x20user');return request({'method':_0x5b14('0x34'),'uri':util['format'](_0x5b14('0x35'),_0x32ce4d),'qs':{'type':_0x5b14('0x36')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4e6d46},'json':!![]})[_0x5b14('0x2e')](function(_0xb19e63){if(_0xb19e63[_0x5b14('0x37')]){var _0x28aac0=-0x1;if(_[_0x5b14('0x38')](_0xb19e63[_0x5b14('0x37')])){if(!_[_0x5b14('0x1f')](_0xf3b8f1)){_0x28aac0=_[_0x5b14('0x39')](_0xb19e63[_0x5b14('0x37')],function(_0x404159){return _0x404159[_0x5b14('0x3a')]===_0xf3b8f1;});}if(_0x28aac0>=0x0){logger['info']('Agent\x20found!');}else{logger['info'](_0x5b14('0x3b'));_0x28aac0=_[_0x5b14('0x39')](_0xb19e63[_0x5b14('0x37')],function(_0x288904){return _0x288904[_0x5b14('0x3c')][_0x5b14('0x1b')]===_0x5b14('0x3d');});}return _0xb19e63[_0x5b14('0x37')][_0x28aac0];}else{if(_0xb19e63[_0x5b14('0x3e')][_0x5b14('0x3c')]['name']===_0x5b14('0x3d')){logger[_0x5b14('0x33')](_0x5b14('0x3b'));user=_0xb19e63['user'];return user;}else{logger[_0x5b14('0x31')]('The\x20failing\x20result\x20is',JSON[_0x5b14('0x10')](_0xb19e63));throw new Error(_0x5b14('0x3f')+JSON[_0x5b14('0x10')](_0xb19e63));}}}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0x5b14('0x10')](_0xb19e63));throw new Error(_0x5b14('0x3f')+JSON['stringify'](_0xb19e63));}})[_0x5b14('0x30')](function(_0x4e933e){console[_0x5b14('0x31')](_0x4e933e);});}function getZohoUser(_0x5566a4,_0x1eab97){return new BPromise(function(_0x22876d,_0x1aba0a){request(_0x5566a4)[_0x5b14('0x2e')](function(_0x5936c2){var _0x468565=null;if(_0x5936c2){_0x468565=_0x5936c2[_0x5b14('0x40')][0x0];_0x468565[_0x5b14('0x41')]=_0x1eab97;}_0x22876d(_0x468565);})[_0x5b14('0x30')](function(_0x168831){_0x1aba0a(_0x168831);});});}function createEndUser(_0x4c6856,_0x158b40,_0x4aa6a8,_0x560d7c,_0x35abc2,_0x259393){var _0x4aa6a8=getName(_0x4aa6a8);return request({'method':'POST','uri':_0x5b14('0x42')+_0x158b40+'/crm/v2/'+_[_0x5b14('0x43')](_0x259393['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x4aa6a8[0x1],'First_Name':_0x4aa6a8[0x0],'Phone':_0x560d7c,'Owner':{'name':!_[_0x5b14('0x1f')](_0x35abc2[_0x5b14('0x44')][_0x5b14('0x1b')])?_0x35abc2['role'][_0x5b14('0x1b')]:!_['isNil'](_0x35abc2[_0x5b14('0x45')])?_0x35abc2['first_name']+'\x20'+_0x35abc2[_0x5b14('0x46')]:_0x35abc2[_0x5b14('0x46')],'id':_0x35abc2['id']}}]},'headers':{'Authorization':_0x5b14('0x47')+_0x4c6856},'json':!![]})[_0x5b14('0x2e')](function(_0x22ca1e){if(_0x22ca1e&&_0x22ca1e['data'][0x0][_0x5b14('0x48')]==='SUCCESS'){var _0xa6f23c=_0x22ca1e[_0x5b14('0x40')][0x0]['details'];_0xa6f23c[_0x5b14('0x41')]=_[_0x5b14('0x43')](_0x259393['moduleCreate'])+'s';return _0xa6f23c;}logger[_0x5b14('0x31')]('The\x20failing\x20result\x20is',JSON['stringify'](data));throw new Error('Error:\x20'+JSON[_0x5b14('0x10')](data));})[_0x5b14('0x30')](function(_0x4cbccc){console[_0x5b14('0x49')](_0x5b14('0x4a'),_0x4cbccc);});}function getEndUser(_0x50b5c1,_0x4ed297,_0x555994,_0x2249d1,_0x522b41,_0x433197,_0x1e6b52){var _0xc6fa5e={'method':_0x5b14('0x34'),'uri':'','headers':{'Authorization':_0x5b14('0x47')+_0x50b5c1},'json':!![]};switch(_0x1e6b52[_0x5b14('0x4b')]){case'contact_lead':_0xc6fa5e[_0x5b14('0x4c')]='https://www.zohoapis.'+_0x4ed297+_0x5b14('0x4d')+_0x522b41+'))';return getZohoUser(_0xc6fa5e,_0x5b14('0x4e'))[_0x5b14('0x2e')](function(_0x41536a){if(_0x41536a)return _0x41536a;_0xc6fa5e[_0x5b14('0x4c')]=_0x5b14('0x42')+_0x4ed297+_0x5b14('0x4f')+_0x522b41+'))';return getZohoUser(_0xc6fa5e,_0x5b14('0x50'))[_0x5b14('0x2e')](function(_0x1298ba){if(_0x1298ba)return _0x1298ba;if(_0x1e6b52[_0x5b14('0x51')]!=_0x5b14('0x52')){return createEndUser(_0x50b5c1,_0x4ed297,_0x2249d1,_0x522b41,_0x433197,_0x1e6b52);}else{return{};}});});break;case _0x5b14('0x53'):_0xc6fa5e[_0x5b14('0x4c')]=_0x5b14('0x42')+_0x4ed297+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x522b41+'))';return getZohoUser(_0xc6fa5e,_0x5b14('0x4e'))['then'](function(_0x1ac715){if(_0x1ac715)return _0x1ac715;if(_0x1e6b52[_0x5b14('0x51')]!='nothing'){return createEndUser(_0x50b5c1,_0x4ed297,_0x2249d1,_0x522b41,_0x433197,_0x1e6b52);}else{return{};}});break;case _0x5b14('0x54'):_0xc6fa5e[_0x5b14('0x4c')]=_0x5b14('0x42')+_0x4ed297+_0x5b14('0x4f')+_0x522b41+'))';return getZohoUser(_0xc6fa5e,_0x5b14('0x50'))[_0x5b14('0x2e')](function(_0x5c8ef5){if(_0x5c8ef5)return _0x5c8ef5;if(_0x1e6b52[_0x5b14('0x51')]!=_0x5b14('0x52')){return createEndUser(_0x50b5c1,_0x4ed297,_0x2249d1,_0x522b41,_0x433197,_0x1e6b52);}else{return{};}});break;}}function getCall(_0x4f518b,_0x38d830,_0x3d0a52,_0x20f691,_0x28049c,_0x5ca8f8,_0x5b0aa6,_0x2b520b){logger[_0x5b14('0x33')](_0x5b14('0x55'));var _0x4524e6={};_0x4524e6[_0x5b14('0x56')]={'name':!_[_0x5b14('0x1f')](_0x20f691[_0x5b14('0x44')][_0x5b14('0x1b')])&&!_[_0x5b14('0x1f')](_0x20f691['profile'][_0x5b14('0x1b')])&&_0x20f691[_0x5b14('0x3c')][_0x5b14('0x1b')]===_0x5b14('0x57')?_0x20f691[_0x5b14('0x44')][_0x5b14('0x1b')]:!_[_0x5b14('0x1f')](_0x20f691[_0x5b14('0x45')])?_0x20f691['first_name']+'\x20'+_0x20f691[_0x5b14('0x46')]:_0x20f691[_0x5b14('0x46')],'id':_0x20f691['id']};_0x4524e6[_0x5b14('0x58')]=intUtil[_0x5b14('0x59')](_0x5ca8f8[_0x5b14('0x5a')],_0x5b0aa6,'\x20');_0x4524e6['Description']=intUtil[_0x5b14('0x59')](_0x5ca8f8[_0x5b14('0x5b')],_0x5b0aa6,'\x0a');if(_0x28049c[_0x5b14('0x41')]===_0x5b14('0x4e')){_0x4524e6[_0x5b14('0x5c')]={'name':!_[_0x5b14('0x1f')](_0x28049c[_0x5b14('0x5d')])?_0x28049c[_0x5b14('0x5d')]:!_[_0x5b14('0x1f')](_0x28049c['First_Name'])?_0x28049c[_0x5b14('0x5e')]+'\x20'+_0x28049c[_0x5b14('0x5f')]:_0x28049c[_0x5b14('0x5f')],'id':_0x28049c['id']};}if(_0x28049c[_0x5b14('0x41')]===_0x5b14('0x50')){_0x4524e6[_0x5b14('0x60')]={'name':!_[_0x5b14('0x1f')](_0x28049c[_0x5b14('0x5d')])?_0x28049c[_0x5b14('0x5d')]:!_[_0x5b14('0x1f')](_0x28049c['First_Name'])?_0x28049c[_0x5b14('0x5e')]+'\x20'+_0x28049c[_0x5b14('0x5f')]:_0x28049c[_0x5b14('0x5f')],'id':_0x28049c['id']};_0x4524e6[_0x5b14('0x61')]=_['startCase'](_0x28049c[_0x5b14('0x41')]);}if(_0x5b0aa6[_0x5b14('0x62')]){_0x4524e6[_0x5b14('0x63')]=moment[_0x5b14('0x64')](parseInt(_0x5b0aa6[_0x5b14('0x62')])*0x3e8)['format'](_0x5b14('0x65'));}else if(_0x5b0aa6[_0x5b14('0x66')]&&_0x5b0aa6[_0x5b14('0x67')]){_0x4524e6[_0x5b14('0x63')]=moment[_0x5b14('0x64')](moment(_0x5b0aa6['endtime'],_0x5b14('0x68'))[_0x5b14('0x69')](moment(_0x5b0aa6[_0x5b14('0x6a')],_0x5b14('0x68'))))[_0x5b14('0x6b')](_0x5b14('0x65'));}switch(_0x5b0aa6[_0x5b14('0x6c')]){case _0x5b14('0x6d'):_0x4524e6[_0x5b14('0x6e')]=_0x5b14('0x6f');break;case _0x5b14('0x70'):case _0x5b14('0x71'):_0x4524e6[_0x5b14('0x6e')]='Answered';break;case _0x5b14('0x72'):_0x4524e6[_0x5b14('0x6e')]=_0x5b14('0x73');break;case _0x5b14('0x74'):_0x4524e6[_0x5b14('0x6e')]=_0x5b14('0x75');break;case'timeout':_0x4524e6[_0x5b14('0x6e')]='Timeout';default:}_0x4524e6[_0x5b14('0x76')]=(_0x2b520b===_0x5b14('0x77')?moment(_0x5b0aa6[_0x5b14('0x6a')])[_0x5b14('0x6b')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x5b0aa6[_0x5b14('0x78')])[_0x5b14('0x6b')](_0x5b14('0x68')))||moment()[_0x5b14('0x6b')]('YYYY-MM-DDTHH:mm:ss');_0x4524e6[_0x5b14('0x79')]=_0x2b520b||_0x5b14('0x7a');_0x4524e6=_[_0x5b14('0x7b')](_0x4524e6,getCustomFields(_0x5ca8f8[_0x5b14('0x7c')],_0x5b0aa6));return request({'method':_0x5b14('0x28'),'uri':_0x5b14('0x42')+_0x38d830+_0x5b14('0x7d'),'headers':{'Authorization':_0x5b14('0x47')+_0x4f518b},'body':{'data':[_0x4524e6]},'json':!![]})[_0x5b14('0x2e')](function(_0x4d35ae){if(_0x4d35ae&&_0x4d35ae[_0x5b14('0x40')][0x0]['code']===_0x5b14('0x7e')){logger[_0x5b14('0x33')](_0x5b14('0x7f'));return{'id':_0x4d35ae[_0x5b14('0x40')][0x0][_0x5b14('0x80')]['id']};}})[_0x5b14('0x30')](function(_0x2cb9fd){logger[_0x5b14('0x33')](_0x5b14('0x81'),_0x2cb9fd['stack']);console[_0x5b14('0x49')](_0x5b14('0x81'),_0x2cb9fd);});}exports[_0x5b14('0x82')]=function(_0x4bcc5d,_0x50c662,_0x439a56,_0x8c77bc,_0x4a9014,_0x4be09a){var _0x32aa26,_0x28df4a,_0x338ce3;_0x4be09a[_0x5b14('0x83')]=intUtil[_0x5b14('0x84')](_0x4be09a['host']);_0x4be09a[_0x5b14('0x85')]=intUtil[_0x5b14('0x84')](_0x4be09a[_0x5b14('0x85')]);if(_0x4a9014&&_0x4a9014[_0x5b14('0x86')]){logger['info']('[QUEUE]',_0x5b14('0x87'));_0x50c662[_0x5b14('0x88')]=_0x4be09a[_0x5b14('0x85')]+_0x5b14('0x89')+_0x50c662['uniqueid']+_0x5b14('0x8a')+md5(_0x50c662[_0x5b14('0x8b')]);}else{_0x50c662[_0x5b14('0x88')]='';}var _0x4e7acc=_0x4be09a[_0x5b14('0x83')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x4be09a)[_0x5b14('0x2e')](function(_0x17f764){_0x338ce3=_0x17f764;return getUser(_0x338ce3,_0x4e7acc,_0x4be09a,_0x8c77bc['email']);})[_0x5b14('0x2e')](function(_0x3af04c){_0x32aa26=_0x3af04c;logger['info'](_0x5b14('0x8c'),_0x32aa26['id']);return getEndUser(_0x338ce3,_0x4e7acc,_0x4be09a,_0x50c662[_0x5b14('0x8d')],_0x50c662[_0x5b14('0x8e')],_0x32aa26,_0x439a56);})['then'](function(_0x5aee2e){_0x28df4a=_0x5aee2e;return getCall(_0x338ce3,_0x4e7acc,_0x4be09a,_0x32aa26,_0x28df4a,_0x439a56,_0x50c662,_0x5b14('0x7a'));})['then'](function(_0x5412da){if(_0x5412da){logger['info'](_0x5b14('0x8f'),_0x5412da['id']);logger[_0x5b14('0x33')](_0x5b14('0x90'),_0x5b14('0x91'));emit(util[_0x5b14('0x6b')](_0x5b14('0x92'),_0x8c77bc['name']),_0x5b14('0x93'),{'uri':_0x5b14('0x94')+_0x4be09a['host']+_0x5b14('0x95')+_0x5412da['id']});}})['catch'](function(_0x30059b){logger['error'](_0x5b14('0x90'),JSON['stringify'](_0x30059b));});};exports[_0x5b14('0x77')]=function(_0x1b08c8,_0x1ae9b7,_0x1e0426,_0xe0ac69,_0x1f2863,_0x557338,_0x43d02d){var _0x541578,_0x378bed,_0x596266;_0x557338[_0x5b14('0x83')]=intUtil[_0x5b14('0x84')](_0x557338[_0x5b14('0x83')]);_0x557338[_0x5b14('0x85')]=intUtil[_0x5b14('0x84')](_0x557338[_0x5b14('0x85')]);if(_0x43d02d&&_0x43d02d[_0x5b14('0x96')]&&_0x43d02d['recordingFormat']!=='none'){logger[_0x5b14('0x33')](_0x5b14('0x97'),_0x5b14('0x87'));_0x1ae9b7[_0x5b14('0x88')]=_0x557338['serverUrl']+_0x5b14('0x89')+_0x1ae9b7['uniqueid']+_0x5b14('0x8a')+md5(_0x1ae9b7[_0x5b14('0x8b')]);}var _0x46df0f=_0x557338['host']===_0x5b14('0x98')?'eu':_0x5b14('0x99');return getAccessToken(_0x557338)[_0x5b14('0x2e')](function(_0x33cff5){_0x596266=_0x33cff5;return getUser(_0x596266,_0x46df0f,_0x557338,_0xe0ac69[_0x5b14('0x3a')]);})[_0x5b14('0x2e')](function(_0x28ee6e){_0x541578=_0x28ee6e;logger['info'](_0x5b14('0x8c'),_0x541578['id']);return getEndUser(_0x596266,_0x46df0f,_0x557338,_0x1ae9b7[_0x5b14('0x9a')],_0x1ae9b7[_0x5b14('0x9b')],_0x541578,_0x1e0426);})['then'](function(_0x446c81){_0x378bed=_0x446c81;return getCall(_0x596266,_0x46df0f,_0x557338,_0x541578,_0x378bed,_0x1e0426,_0x1ae9b7,'Outbound');})[_0x5b14('0x2e')](function(_0x290126){if(_0x290126){logger[_0x5b14('0x33')]('The\x20Call\x20ID\x20is:',_0x290126['id']);logger[_0x5b14('0x33')](_0x5b14('0x97'),_0x5b14('0x91'));emit(util[_0x5b14('0x6b')]('user:%s',_0xe0ac69['name']),_0x5b14('0x93'),{'uri':_0x5b14('0x94')+_0x557338['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x290126['id']});}})[_0x5b14('0x30')](function(_0x28eb93){logger['error'](_0x5b14('0x97'),JSON[_0x5b14('0x10')](_0x28eb93));});};exports[_0x5b14('0x9c')]=function(_0x34f1f2,_0x5dcc8c,_0x42dad8,_0x4ac44f,_0x474839,_0x30b385){var _0x255e50,_0xa8b385,_0x52cb70;_0x30b385[_0x5b14('0x83')]=intUtil[_0x5b14('0x84')](_0x30b385[_0x5b14('0x83')]);_0x30b385[_0x5b14('0x85')]=intUtil['stripTrailingSlash'](_0x30b385[_0x5b14('0x85')]);if(_0x474839&&_0x474839[_0x5b14('0x86')]){logger['info']('['+_0x5dcc8c[_0x5b14('0x6c')][_0x5b14('0x9d')]()+']',_0x5b14('0x87'));_0x5dcc8c[_0x5b14('0x88')]=_0x30b385[_0x5b14('0x85')]+_0x5b14('0x89')+_0x5dcc8c[_0x5b14('0x8b')]+_0x5b14('0x8a')+md5(_0x5dcc8c['uniqueid']);}else{_0x5dcc8c[_0x5b14('0x88')]='';}var _0x5e3b8a=_0x30b385[_0x5b14('0x83')]==='zoho.eu'?'eu':_0x5b14('0x99');return getAccessToken(_0x30b385)[_0x5b14('0x2e')](function(_0x34c039){_0x52cb70=_0x34c039;return getUser(_0x52cb70,_0x5e3b8a,_0x30b385);})[_0x5b14('0x2e')](function(_0x495d2b){_0x255e50=_0x495d2b;logger[_0x5b14('0x33')](_0x5b14('0x8c'),_0x255e50['id']);return getEndUser(_0x52cb70,_0x5e3b8a,_0x30b385,_0x5dcc8c[_0x5b14('0x8d')],_0x5dcc8c[_0x5b14('0x8e')],_0x255e50,_0x42dad8);})['then'](function(_0x4db3dc){_0xa8b385=_0x4db3dc;return getCall(_0x52cb70,_0x5e3b8a,_0x30b385,_0x255e50,_0xa8b385,_0x42dad8,_0x5dcc8c,_0x5b14('0x7a'));})[_0x5b14('0x2e')](function(_0x5f5821){if(_0x5f5821){logger['info'](_0x5b14('0x8f'),_0x5f5821['id']);}})['catch'](function(_0x3124e8){logger[_0x5b14('0x31')]('['+_0x5dcc8c['lastevent'][_0x5b14('0x9d')]()+']',JSON[_0x5b14('0x10')](_0x3124e8));});};
\ No newline at end of file
index 2ff4b00..68a4a7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa036=['Script','data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','trigger','exec','data2'];(function(_0x39cad6,_0x1edf41){var _0x5a82f2=function(_0x416563){while(--_0x416563){_0x39cad6['push'](_0x39cad6['shift']());}};_0x5a82f2(++_0x1edf41);}(_0xa036,0x15c));var _0x6a03=function(_0x1378e8,_0x1971fa){_0x1378e8=_0x1378e8-0x0;var _0x29aa13=_0xa036[_0x1378e8];return _0x29aa13;};'use strict';var util=require(_0x6a03('0x0'));var sh=require('shelljs');var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0x6a03('0x1'));exports[_0x6a03('0x2')]=function(_0x397a7b,_0x5d53ba){var _0xc38bad=_0x397a7b[_0x6a03('0x3')]?_0x397a7b[_0x6a03('0x3')]:_0x6a03('0x4');var _0x15e58b=_0x397a7b[_0x6a03('0x5')]?Mustache[_0x6a03('0x6')](_0x397a7b[_0x6a03('0x5')],_0x5d53ba):_0x5d53ba;sh[_0x6a03('0x2')](_0x15e58b,function(_0x14cb51,_0x433ae4,_0x1e9f59){if(_0x14cb51!==0x0){logger[_0x6a03('0x7')](util[_0x6a03('0x8')](_0x6a03('0x9'),_0xc38bad,_0x15e58b,_0x14cb51,_0x1e9f59));}else{logger['info'](util[_0x6a03('0x8')](_0x6a03('0xa'),_0xc38bad,_0x15e58b,_0x433ae4));}});};
\ No newline at end of file
+var _0xbb40=['trigger','exec','data2','render','data3','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','mustache','../../../../config/logger'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xbb40,0xa5));var _0x0bb4=function(_0x52e1af,_0x3f1a57){_0x52e1af=_0x52e1af-0x0;var _0x239e20=_0xbb40[_0x52e1af];return _0x239e20;};'use strict';var util=require('util');var sh=require(_0x0bb4('0x0'));var Mustache=require(_0x0bb4('0x1'));var logger=require(_0x0bb4('0x2'))(_0x0bb4('0x3'));exports[_0x0bb4('0x4')]=function(_0x2dfc5e,_0x3d6ff7){var _0xaa7766=_0x2dfc5e[_0x0bb4('0x5')]?_0x2dfc5e['data2']:'Script';var _0x1cb181=_0x2dfc5e['data3']?Mustache[_0x0bb4('0x6')](_0x2dfc5e[_0x0bb4('0x7')],_0x3d6ff7):_0x3d6ff7;sh[_0x0bb4('0x4')](_0x1cb181,function(_0x8bebae,_0x5d7e6c,_0x273b1c){if(_0x8bebae!==0x0){logger[_0x0bb4('0x8')](util['format'](_0x0bb4('0x9'),_0xaa7766,_0x1cb181,_0x8bebae,_0x273b1c));}else{logger['info'](util[_0x0bb4('0xa')](_0x0bb4('0xb'),_0xaa7766,_0x1cb181,_0x5d7e6c));}});};
\ No newline at end of file
index 36fe9ef..6cfcd70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4206=['render','data2','data5','number','headers','data6','parse','error','stack','GET','DELETE','data7','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','isNil',',\x20request\x20body:\x20','object','info','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','name','message','request-promise','lodash','../../../../config/logger','data1','toUpperCase'];(function(_0x2232a5,_0x2c0a59){var _0x3e40a5=function(_0x597eca){while(--_0x597eca){_0x2232a5['push'](_0x2232a5['shift']());}};_0x3e40a5(++_0x2c0a59);}(_0x4206,0xf3));var _0x6420=function(_0x3724d8,_0x456c21){_0x3724d8=_0x3724d8-0x0;var _0x3a1a0d=_0x4206[_0x3724d8];return _0x3a1a0d;};'use strict';var rp=require(_0x6420('0x0'));var util=require('util');var _=require(_0x6420('0x1'));var Mustache=require('mustache');var logger=require(_0x6420('0x2'))('trigger');exports['exec']=function(_0x54b8d8,_0xc6bfb3){var _0x38ec6e,_0x933926;var _0x285c5e={'method':_0x54b8d8[_0x6420('0x3')][_0x6420('0x4')](),'uri':Mustache[_0x6420('0x5')](_0x54b8d8[_0x6420('0x6')],_0xc6bfb3),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x54b8d8[_0x6420('0x7')])===_0x6420('0x8')&&parseInt(_0x54b8d8[_0x6420('0x7')])>=0x1&&parseInt(_0x54b8d8[_0x6420('0x7')])<=0xa?parseInt(_0x54b8d8['data5'])*0x3e8:0x5*0x3e8};try{_0x285c5e[_0x6420('0x9')]=_0x54b8d8[_0x6420('0xa')]?JSON[_0x6420('0xb')](Mustache['render'](_0x54b8d8[_0x6420('0xa')],_0xc6bfb3)):{};}catch(_0x135926){logger[_0x6420('0xc')](_0x135926[_0x6420('0xd')]);}switch(_0x54b8d8[_0x6420('0x3')][_0x6420('0x4')]()){case _0x6420('0xe'):case _0x6420('0xf'):_0x38ec6e=null;_0x285c5e['qs']=_0xc6bfb3;break;case'POST':case'PUT':if(_0x54b8d8[_0x6420('0x10')]){try{_0x38ec6e=JSON[_0x6420('0xb')](Mustache[_0x6420('0x5')](_0x54b8d8[_0x6420('0x10')],_0xc6bfb3));_0x285c5e['body']=_0x38ec6e;}catch(_0x1ba1a8){logger[_0x6420('0xc')](_0x1ba1a8[_0x6420('0xd')]);logger[_0x6420('0xc')](_0x6420('0x11'));}}else{_0x38ec6e=_0xc6bfb3;_0x285c5e[_0x6420('0x12')]=_0x38ec6e;}break;}logger['info'](util[_0x6420('0x13')](_0x6420('0x14'),_0x54b8d8[_0x6420('0x3')],_0x54b8d8[_0x6420('0x6')],JSON[_0x6420('0x15')](_0x285c5e)));rp(_0x285c5e)['then'](function(_0x114b50){_0x38ec6e=!_[_0x6420('0x16')](_0x38ec6e)?_0x6420('0x17')+_0x38ec6e:'';_0x933926=typeof _0x114b50['body']===_0x6420('0x18')?JSON[_0x6420('0x15')](_0x114b50[_0x6420('0x12')]):_0x114b50[_0x6420('0x12')];logger[_0x6420('0x19')](util[_0x6420('0x13')](_0x6420('0x1a'),_0x54b8d8[_0x6420('0x3')],_0x54b8d8[_0x6420('0x6')],_0x114b50[_0x6420('0x1b')],_0x933926));})[_0x6420('0x1c')](function(_0x12fbf4){logger[_0x6420('0xc')](util[_0x6420('0x13')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x54b8d8['data1'],_0x54b8d8[_0x6420('0x6')],_0x12fbf4['statusCode'],_0x12fbf4[_0x6420('0x1d')],_0x12fbf4[_0x6420('0x1e')]));});};
\ No newline at end of file
+var _0x25ba=['then','isNil',',\x20request\x20body:\x20','object','stringify','info','format','statusCode','catch','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','data5','number','headers','data6','parse','render','stack','GET','DELETE','POST','data7','body','error','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data2'];(function(_0x3edc32,_0x2efad9){var _0x53ba95=function(_0x567054){while(--_0x567054){_0x3edc32['push'](_0x3edc32['shift']());}};_0x53ba95(++_0x2efad9);}(_0x25ba,0x180));var _0xa25b=function(_0x17ff4b,_0x483e64){_0x17ff4b=_0x17ff4b-0x0;var _0x510f7b=_0x25ba[_0x17ff4b];return _0x510f7b;};'use strict';var rp=require(_0xa25b('0x0'));var util=require(_0xa25b('0x1'));var _=require(_0xa25b('0x2'));var Mustache=require(_0xa25b('0x3'));var logger=require(_0xa25b('0x4'))(_0xa25b('0x5'));exports[_0xa25b('0x6')]=function(_0x16d457,_0xa95859){var _0x44322c,_0x52a90a;var _0x552812={'method':_0x16d457[_0xa25b('0x7')][_0xa25b('0x8')](),'uri':Mustache['render'](_0x16d457['data2'],_0xa95859),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x16d457[_0xa25b('0x9')])===_0xa25b('0xa')&&parseInt(_0x16d457['data5'])>=0x1&&parseInt(_0x16d457[_0xa25b('0x9')])<=0xa?parseInt(_0x16d457[_0xa25b('0x9')])*0x3e8:0x5*0x3e8};try{_0x552812[_0xa25b('0xb')]=_0x16d457[_0xa25b('0xc')]?JSON[_0xa25b('0xd')](Mustache[_0xa25b('0xe')](_0x16d457['data6'],_0xa95859)):{};}catch(_0xb80108){logger['error'](_0xb80108[_0xa25b('0xf')]);}switch(_0x16d457[_0xa25b('0x7')][_0xa25b('0x8')]()){case _0xa25b('0x10'):case _0xa25b('0x11'):_0x44322c=null;_0x552812['qs']=_0xa95859;break;case _0xa25b('0x12'):case'PUT':if(_0x16d457[_0xa25b('0x13')]){try{_0x44322c=JSON[_0xa25b('0xd')](Mustache['render'](_0x16d457[_0xa25b('0x13')],_0xa95859));_0x552812[_0xa25b('0x14')]=_0x44322c;}catch(_0x40f23b){logger[_0xa25b('0x15')](_0x40f23b[_0xa25b('0xf')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x44322c=_0xa95859;_0x552812['body']=_0x44322c;}break;}logger['info'](util['format'](_0xa25b('0x16'),_0x16d457[_0xa25b('0x7')],_0x16d457[_0xa25b('0x17')],JSON['stringify'](_0x552812)));rp(_0x552812)[_0xa25b('0x18')](function(_0x3c9f04){_0x44322c=!_[_0xa25b('0x19')](_0x44322c)?_0xa25b('0x1a')+_0x44322c:'';_0x52a90a=typeof _0x3c9f04[_0xa25b('0x14')]===_0xa25b('0x1b')?JSON[_0xa25b('0x1c')](_0x3c9f04[_0xa25b('0x14')]):_0x3c9f04['body'];logger[_0xa25b('0x1d')](util[_0xa25b('0x1e')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x16d457[_0xa25b('0x7')],_0x16d457[_0xa25b('0x17')],_0x3c9f04[_0xa25b('0x1f')],_0x52a90a));})[_0xa25b('0x20')](function(_0x56305b){logger[_0xa25b('0x15')](util['format']('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x16d457[_0xa25b('0x7')],_0x16d457['data2'],_0x56305b['statusCode'],_0x56305b['name'],_0x56305b[_0xa25b('0x21')]));});};
\ No newline at end of file
index b5c9b9e..d07543b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef4f=['then','debug','error','rpc','result','catch','exports','../../config/logger','routing','client','Request','request'];(function(_0x325fd2,_0x3c3364){var _0xb26290=function(_0x46c797){while(--_0x46c797){_0x325fd2['push'](_0x325fd2['shift']());}};_0xb26290(++_0x3c3364);}(_0xef4f,0x8b));var _0xfef4=function(_0x2034d7,_0x32ad6f){_0x2034d7=_0x2034d7-0x0;var _0x28b2ed=_0xef4f[_0x2034d7];return _0x28b2ed;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xfef4('0x0'))(_0xfef4('0x1'));var client=jayson[_0xfef4('0x2')]['http']({'port':0x2329});client[_0xfef4('0x3')]=function(_0x529bfb,_0x3a75a1){return new BPromise(function(_0x3d47b2,_0x48751e){return client[_0xfef4('0x4')](_0x529bfb,_0x3a75a1)[_0xfef4('0x5')](function(_0x2a3876){logger[_0xfef4('0x6')]('rpc',_0xfef4('0x1'),_0x529bfb,_0x3a75a1,_0x2a3876);if(_0x2a3876['error']){logger[_0xfef4('0x7')](_0xfef4('0x8'),_0xfef4('0x1'),_0x529bfb,_0x2a3876[_0xfef4('0x7')]['message'],_0x3a75a1);return _0x48751e(_0x2a3876['error']['message']);}else{return _0x3d47b2(_0x2a3876[_0xfef4('0x9')]);}})[_0xfef4('0xa')](function(_0x1dece2){logger[_0xfef4('0x7')](_0xfef4('0x8'),_0xfef4('0x1'),_0x529bfb,_0x1dece2,_0x3a75a1);return _0x48751e(_0x1dece2);});});};module[_0xfef4('0xb')]=client;
\ No newline at end of file
+var _0xba7c=['debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','routing','client','http','Request','request'];(function(_0x56f84c,_0x1774cd){var _0x671cd=function(_0x4252c5){while(--_0x4252c5){_0x56f84c['push'](_0x56f84c['shift']());}};_0x671cd(++_0x1774cd);}(_0xba7c,0x19d));var _0xcba7=function(_0x248e85,_0x313681){_0x248e85=_0x248e85-0x0;var _0x1923b4=_0xba7c[_0x248e85];return _0x1923b4;};'use strict';var jayson=require(_0xcba7('0x0'));var BPromise=require(_0xcba7('0x1'));var logger=require('../../config/logger')(_0xcba7('0x2'));var client=jayson[_0xcba7('0x3')][_0xcba7('0x4')]({'port':0x2329});client[_0xcba7('0x5')]=function(_0x47c820,_0x8fa15){return new BPromise(function(_0x3a9762,_0x12bde3){return client[_0xcba7('0x6')](_0x47c820,_0x8fa15)['then'](function(_0x1f4160){logger[_0xcba7('0x7')](_0xcba7('0x8'),_0xcba7('0x2'),_0x47c820,_0x8fa15,_0x1f4160);if(_0x1f4160['error']){logger[_0xcba7('0x9')](_0xcba7('0x8'),'routing',_0x47c820,_0x1f4160[_0xcba7('0x9')][_0xcba7('0xa')],_0x8fa15);return _0x12bde3(_0x1f4160[_0xcba7('0x9')][_0xcba7('0xa')]);}else{return _0x3a9762(_0x1f4160[_0xcba7('0xb')]);}})[_0xcba7('0xc')](function(_0x4698f7){logger[_0xcba7('0x9')](_0xcba7('0x8'),'routing',_0x47c820,_0x4698f7,_0x8fa15);return _0x12bde3(_0x4698f7);});});};module[_0xcba7('0xd')]=client;
\ No newline at end of file
index d90fdd9..f42c662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2315=['./realtime','./lib/email','./rpc/mailAccount','resolve','then','initMailAccounts','refresh','mailAccounts','listen','getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2315,0x95));var _0x5231=function(_0x136619,_0x1ad15e){_0x136619=_0x136619-0x0;var _0x4fd465=_0x2315[_0x136619];return _0x4fd465;};'use strict';var server=require(_0x5231('0x0'));var Realtime=require(_0x5231('0x1'));var EmailChannel=require(_0x5231('0x2'));var mailAccount=require(_0x5231('0x3'));var setting=require('./rpc/setting');var logger=require('../../config/logger')('email');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x5231('0x4')]()[_0x5231('0x5')](mailAccount['getMailAccounts']())['then'](realtime[_0x5231('0x6')]())['then'](function(){email[_0x5231('0x7')](realtime[_0x5231('0x8')]);return realtime;});}function main(){return server[_0x5231('0x9')](realtime,email)[_0x5231('0x5')](function(){return initRealtime();})[_0x5231('0x5')](function(){return setting[_0x5231('0xa')]();})[_0x5231('0x5')](function(_0x601cfb){return setInterval(initRealtime,_0x601cfb[_0x5231('0xb')]*0x3e8);})[_0x5231('0xc')](function(_0x3f35da){logger[_0x5231('0xd')](_0x5231('0xe'),_0x3f35da);});}main();
\ No newline at end of file
+var _0xfd01=['getMailAccounts','initMailAccounts','mailAccounts','listen','getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/setting','../../config/logger','email','resolve','then'];(function(_0x3ed53d,_0x1fc31c){var _0x281239=function(_0xa4793f){while(--_0xa4793f){_0x3ed53d['push'](_0x3ed53d['shift']());}};_0x281239(++_0x1fc31c);}(_0xfd01,0xc4));var _0x1fd0=function(_0x3770a7,_0x2e6a58){_0x3770a7=_0x3770a7-0x0;var _0x14f104=_0xfd01[_0x3770a7];return _0x14f104;};'use strict';var server=require(_0x1fd0('0x0'));var Realtime=require(_0x1fd0('0x1'));var EmailChannel=require(_0x1fd0('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x1fd0('0x3'));var logger=require(_0x1fd0('0x4'))(_0x1fd0('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x1fd0('0x6')]()[_0x1fd0('0x7')](mailAccount[_0x1fd0('0x8')]())[_0x1fd0('0x7')](realtime[_0x1fd0('0x9')]())[_0x1fd0('0x7')](function(){email['refresh'](realtime[_0x1fd0('0xa')]);return realtime;});}function main(){return server[_0x1fd0('0xb')](realtime,email)['then'](function(){return initRealtime();})['then'](function(){return setting[_0x1fd0('0xc')]();})[_0x1fd0('0x7')](function(_0x3dd3ec){return setInterval(initRealtime,_0x3dd3ec[_0x1fd0('0xd')]*0x3e8);})[_0x1fd0('0xe')](function(_0x9e56bd){logger[_0x1fd0('0xf')](_0x1fd0('0x10'),_0x9e56bd);});}main();
\ No newline at end of file
index 2ed818a..29ee44d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b1a=['provider','service','box','handleImapBox','bind','end','error','handleImapError','status','prototype','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','notify','then','info','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','lastSync','sendMail','smtp','send','verifySmtp','Smtp','verify','exports','lodash','moment','md5','ioredis','../../../config/logger','email','defaults','redis','localhost','socket.io-emitter','./imap','./smtp','start\x20email\x20channel','mailAccounts','imapAccounts','emit','name','key','active','Imap','messageStatus','total','isNil','stringify','mailAccount:update','hasOwnProperty'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x1b1a,0x16e));var _0xa1b1=function(_0x5ca52d,_0x3a4a22){_0x5ca52d=_0x5ca52d-0x0;var _0x89e54e=_0x1b1a[_0x5ca52d];return _0x89e54e;};'use strict';var _=require(_0xa1b1('0x0'));var moment=require(_0xa1b1('0x1'));var BPromise=require('bluebird');var md5=require(_0xa1b1('0x2'));var Redis=require(_0xa1b1('0x3'));var config=require('../../../config/environment');var logger=require(_0xa1b1('0x4'))(_0xa1b1('0x5'));config['redis']=_[_0xa1b1('0x6')](config[_0xa1b1('0x7')],{'host':_0xa1b1('0x8'),'port':0x18eb});var io=require(_0xa1b1('0x9'))(new Redis(config[_0xa1b1('0x7')]));var EmailImap=require(_0xa1b1('0xa'));var EmailSmtp=require(_0xa1b1('0xb'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x56627a){logger['info'](_0xa1b1('0xc'));this[_0xa1b1('0xd')]=_0x56627a['mailAccounts'];this[_0xa1b1('0xe')]={};this['smtp']=new EmailSmtp();}EmailChannel['prototype'][_0xa1b1('0xf')]=function(_0x571cd7){var _0x253efa=this[_0xa1b1('0xd')][_0x571cd7];var _0x339266={'id':_0x253efa['id'],'name':_0x253efa[_0xa1b1('0x10')],'key':_0x253efa[_0xa1b1('0x11')],'active':_0x253efa[_0xa1b1('0x12')],'Imap':{'status':_0x253efa[_0xa1b1('0x13')]['status'],'messageStatus':_0x253efa[_0xa1b1('0x13')][_0xa1b1('0x14')],'total':_0x253efa[_0xa1b1('0x13')][_0xa1b1('0x15')]}};if(_[_0xa1b1('0x16')](md5Accounts[_0x571cd7])){md5Accounts[_0x571cd7]={};}var _0x1a02f6=md5(JSON[_0xa1b1('0x17')](_0x339266));if(md5Accounts[_0x571cd7][_0xa1b1('0x2')]!==_0x1a02f6){md5Accounts[_0x571cd7][_0xa1b1('0x2')]=_0x1a02f6;io[_0xa1b1('0xf')](_0xa1b1('0x18'),_0x339266);}};EmailChannel['prototype']['refresh']=function(_0x2020ef){for(var _0x4c6362 in _0x2020ef){if(_0x2020ef[_0xa1b1('0x19')](_0x4c6362)){if(_0x2020ef[_0x4c6362][_0xa1b1('0x13')]&&_0x2020ef[_0x4c6362][_0xa1b1('0x12')]){var _0x61468=_0x2020ef[_0x4c6362][_0xa1b1('0x13')];if(!_0x61468['service']&&_0x2020ef[_0x4c6362][_0xa1b1('0x1a')]!=='custom')_0x61468[_0xa1b1('0x1b')]=_0x2020ef[_0x4c6362][_0xa1b1('0x1a')];if(!this[_0xa1b1('0xe')][_0xa1b1('0x19')](_0x61468['id'])){this['imapAccounts'][_0x61468['id']]=new EmailImap(_0x61468,_0x2020ef[_0x4c6362]['email']);this[_0xa1b1('0xe')][_0x61468['id']]['on'](_0xa1b1('0x1c'),this[_0xa1b1('0x1d')][_0xa1b1('0x1e')](this,_0x4c6362));this[_0xa1b1('0xe')][_0x61468['id']]['on'](_0xa1b1('0x5'),this['handleImapEmail'][_0xa1b1('0x1e')](this,_0x4c6362));this[_0xa1b1('0xe')][_0x61468['id']]['on'](_0xa1b1('0x1f'),this['handleImapEnd'][_0xa1b1('0x1e')](this,_0x4c6362));this['imapAccounts'][_0x61468['id']]['on'](_0xa1b1('0x20'),this[_0xa1b1('0x21')][_0xa1b1('0x1e')](this,_0x4c6362));}}else{if(_[_0xa1b1('0x16')](this[_0xa1b1('0xd')][_0x4c6362][_0xa1b1('0x13')])){this[_0xa1b1('0xd')][_0x4c6362][_0xa1b1('0x13')]={};}this[_0xa1b1('0xd')][_0x4c6362]['Imap'][_0xa1b1('0x22')]='disabled';this[_0xa1b1('0xd')][_0x4c6362][_0xa1b1('0x13')]['messageStatus']='';this[_0xa1b1('0xf')](_0x4c6362);}}}};EmailChannel[_0xa1b1('0x23')][_0xa1b1('0x1d')]=function(_0x3df34d,_0x13dab1){if(this[_0xa1b1('0xd')][_0x3df34d]){this[_0xa1b1('0xd')][_0x3df34d][_0xa1b1('0x13')][_0xa1b1('0x22')]=_0xa1b1('0x24');this[_0xa1b1('0xd')][_0x3df34d][_0xa1b1('0x13')]['messageStatus']=_0x13dab1[_0xa1b1('0x10')];if(_0x13dab1[_0xa1b1('0x25')]){this[_0xa1b1('0xd')][_0x3df34d][_0xa1b1('0x13')][_0xa1b1('0x15')]=_0x13dab1[_0xa1b1('0x25')][_0xa1b1('0x15')];}return this[_0xa1b1('0xf')](_0x3df34d);}};EmailChannel[_0xa1b1('0x23')]['handleImapEmail']=function(_0x3cb984,_0x5df48e){logger['info'](_0xa1b1('0x26'),_0x5df48e[_0xa1b1('0x27')],_0x5df48e[_0xa1b1('0x28')],_0x5df48e['from'],_0x3cb984);if(this['mailAccounts'][_0x3cb984]){return mailAccount[_0xa1b1('0x29')](_0x3cb984,_0x5df48e)[_0xa1b1('0x2a')](function(_0x44ccd4){if(_0x44ccd4){logger[_0xa1b1('0x2b')](_0xa1b1('0x2c'));}})[_0xa1b1('0x2d')](function(_0x24d389){logger[_0xa1b1('0x20')](_0xa1b1('0x2e'),JSON[_0xa1b1('0x17')](_0x24d389));});}};EmailChannel[_0xa1b1('0x23')][_0xa1b1('0x2f')]=function(_0x51864f){if(this[_0xa1b1('0xd')][_0x51864f]&&this['mailAccounts'][_0x51864f][_0xa1b1('0x13')]){if(this[_0xa1b1('0xe')][this[_0xa1b1('0xd')][_0x51864f]['Imap']['id']]){delete this[_0xa1b1('0xe')][this[_0xa1b1('0xd')][_0x51864f][_0xa1b1('0x13')]['id']];}this[_0xa1b1('0xd')][_0x51864f]['Imap'][_0xa1b1('0x30')]=moment();this[_0xa1b1('0xf')](_0x51864f);}};EmailChannel[_0xa1b1('0x23')][_0xa1b1('0x21')]=function(_0x4ae15f,_0xcb437b){if(this[_0xa1b1('0xd')][_0x4ae15f]){this[_0xa1b1('0xd')][_0x4ae15f][_0xa1b1('0x13')][_0xa1b1('0x22')]=_0xa1b1('0x20');this[_0xa1b1('0xd')][_0x4ae15f][_0xa1b1('0x13')][_0xa1b1('0x14')]=_0xcb437b;return this[_0xa1b1('0xf')](_0x4ae15f);}};EmailChannel['prototype'][_0xa1b1('0x31')]=function(_0x19ace9,_0x8d76cd){return this[_0xa1b1('0x32')][_0xa1b1('0x33')](_0x19ace9,_0x8d76cd);};EmailChannel['prototype'][_0xa1b1('0x34')]=function(_0x526825){var _0x213d76=this;if(this[_0xa1b1('0xd')][_0x526825['id']]){if(_['isNil'](this[_0xa1b1('0xd')][_0x526825['id']][_0xa1b1('0x35')])){this[_0xa1b1('0xd')][_0x526825['id']][_0xa1b1('0x35')]={};}this['mailAccounts'][_0x526825['id']][_0xa1b1('0x35')][_0xa1b1('0x30')]=moment();return new BPromise(function(_0x46c64b,_0x2f8a24){return _0x213d76[_0xa1b1('0x32')][_0xa1b1('0x36')](_0x526825)['then'](function(_0x3eb097){_0x213d76[_0xa1b1('0xd')][_0x526825['id']]['Smtp'][_0xa1b1('0x22')]='verified';_0x213d76[_0xa1b1('0xd')][_0x526825['id']][_0xa1b1('0x35')]['messageStatus']='';_0x213d76[_0xa1b1('0xf')](_0x526825['id']);_0x46c64b(_0x3eb097);})['catch'](function(_0x5baf67){_0x213d76[_0xa1b1('0xd')][_0x526825['id']][_0xa1b1('0x35')]['status']='error';_0x213d76[_0xa1b1('0xd')][_0x526825['id']][_0xa1b1('0x35')][_0xa1b1('0x14')]=_0x5baf67;_0x213d76['emit'](_0x526825['id']);_0x2f8a24(_0x5baf67);});});}return this[_0xa1b1('0x32')]['verify'](_0x526825);};module[_0xa1b1('0x37')]=EmailChannel;
\ No newline at end of file
+var _0x892b=['md5','mailAccount:update','refresh','hasOwnProperty','provider','custom','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','isNil','disabled','connected','messages','info','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','smtp','verifySmtp','Smtp','verify','catch','exports','lodash','moment','bluebird','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./imap','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','prototype','emit','name','key','active','Imap','status','messageStatus','total','stringify'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0x892b,0x138));var _0xb892=function(_0x1766f2,_0x3ecb5d){_0x1766f2=_0x1766f2-0x0;var _0x3c0024=_0x892b[_0x1766f2];return _0x3c0024;};'use strict';var _=require(_0xb892('0x0'));var moment=require(_0xb892('0x1'));var BPromise=require(_0xb892('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0xb892('0x3'))(_0xb892('0x4'));config[_0xb892('0x5')]=_[_0xb892('0x6')](config[_0xb892('0x5')],{'host':_0xb892('0x7'),'port':0x18eb});var io=require(_0xb892('0x8'))(new Redis(config[_0xb892('0x5')]));var EmailImap=require(_0xb892('0x9'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xb892('0xa'));var md5Accounts={};function EmailChannel(_0x445495){logger['info'](_0xb892('0xb'));this[_0xb892('0xc')]=_0x445495['mailAccounts'];this[_0xb892('0xd')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0xb892('0xe')][_0xb892('0xf')]=function(_0x55c9b7){var _0x5f8304=this[_0xb892('0xc')][_0x55c9b7];var _0x2c32e4={'id':_0x5f8304['id'],'name':_0x5f8304[_0xb892('0x10')],'key':_0x5f8304[_0xb892('0x11')],'active':_0x5f8304[_0xb892('0x12')],'Imap':{'status':_0x5f8304[_0xb892('0x13')][_0xb892('0x14')],'messageStatus':_0x5f8304[_0xb892('0x13')][_0xb892('0x15')],'total':_0x5f8304[_0xb892('0x13')][_0xb892('0x16')]}};if(_['isNil'](md5Accounts[_0x55c9b7])){md5Accounts[_0x55c9b7]={};}var _0x3f3b53=md5(JSON[_0xb892('0x17')](_0x2c32e4));if(md5Accounts[_0x55c9b7]['md5']!==_0x3f3b53){md5Accounts[_0x55c9b7][_0xb892('0x18')]=_0x3f3b53;io[_0xb892('0xf')](_0xb892('0x19'),_0x2c32e4);}};EmailChannel['prototype'][_0xb892('0x1a')]=function(_0x273cdb){for(var _0x277b44 in _0x273cdb){if(_0x273cdb[_0xb892('0x1b')](_0x277b44)){if(_0x273cdb[_0x277b44]['Imap']&&_0x273cdb[_0x277b44][_0xb892('0x12')]){var _0x50b2d4=_0x273cdb[_0x277b44][_0xb892('0x13')];if(!_0x50b2d4['service']&&_0x273cdb[_0x277b44][_0xb892('0x1c')]!==_0xb892('0x1d'))_0x50b2d4['service']=_0x273cdb[_0x277b44][_0xb892('0x1c')];if(!this['imapAccounts'][_0xb892('0x1b')](_0x50b2d4['id'])){this[_0xb892('0xd')][_0x50b2d4['id']]=new EmailImap(_0x50b2d4,_0x273cdb[_0x277b44][_0xb892('0x4')]);this[_0xb892('0xd')][_0x50b2d4['id']]['on']('box',this[_0xb892('0x1e')][_0xb892('0x1f')](this,_0x277b44));this[_0xb892('0xd')][_0x50b2d4['id']]['on'](_0xb892('0x4'),this[_0xb892('0x20')][_0xb892('0x1f')](this,_0x277b44));this[_0xb892('0xd')][_0x50b2d4['id']]['on'](_0xb892('0x21'),this[_0xb892('0x22')][_0xb892('0x1f')](this,_0x277b44));this[_0xb892('0xd')][_0x50b2d4['id']]['on'](_0xb892('0x23'),this['handleImapError'][_0xb892('0x1f')](this,_0x277b44));}}else{if(_[_0xb892('0x24')](this['mailAccounts'][_0x277b44][_0xb892('0x13')])){this[_0xb892('0xc')][_0x277b44][_0xb892('0x13')]={};}this['mailAccounts'][_0x277b44][_0xb892('0x13')][_0xb892('0x14')]=_0xb892('0x25');this[_0xb892('0xc')][_0x277b44][_0xb892('0x13')]['messageStatus']='';this[_0xb892('0xf')](_0x277b44);}}}};EmailChannel[_0xb892('0xe')]['handleImapBox']=function(_0x326a5e,_0x531f17){if(this['mailAccounts'][_0x326a5e]){this[_0xb892('0xc')][_0x326a5e][_0xb892('0x13')][_0xb892('0x14')]=_0xb892('0x26');this[_0xb892('0xc')][_0x326a5e][_0xb892('0x13')][_0xb892('0x15')]=_0x531f17[_0xb892('0x10')];if(_0x531f17[_0xb892('0x27')]){this[_0xb892('0xc')][_0x326a5e]['Imap'][_0xb892('0x16')]=_0x531f17[_0xb892('0x27')][_0xb892('0x16')];}return this[_0xb892('0xf')](_0x326a5e);}};EmailChannel[_0xb892('0xe')][_0xb892('0x20')]=function(_0x4f6380,_0x5b1d71){logger[_0xb892('0x28')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x5b1d71[_0xb892('0x29')],_0x5b1d71[_0xb892('0x2a')],_0x5b1d71[_0xb892('0x2b')],_0x4f6380);if(this[_0xb892('0xc')][_0x4f6380]){return mailAccount[_0xb892('0x2c')](_0x4f6380,_0x5b1d71)[_0xb892('0x2d')](function(_0x145504){if(_0x145504){logger['info'](_0xb892('0x2e'));}})['catch'](function(_0x4d0f8a){logger[_0xb892('0x23')](_0xb892('0x2f'),JSON[_0xb892('0x17')](_0x4d0f8a));});}};EmailChannel[_0xb892('0xe')][_0xb892('0x22')]=function(_0x45757e){if(this['mailAccounts'][_0x45757e]&&this[_0xb892('0xc')][_0x45757e]['Imap']){if(this[_0xb892('0xd')][this[_0xb892('0xc')][_0x45757e][_0xb892('0x13')]['id']]){delete this[_0xb892('0xd')][this[_0xb892('0xc')][_0x45757e]['Imap']['id']];}this[_0xb892('0xc')][_0x45757e][_0xb892('0x13')][_0xb892('0x30')]=moment();this['emit'](_0x45757e);}};EmailChannel[_0xb892('0xe')]['handleImapError']=function(_0x5e7dd4,_0x69a77d){if(this['mailAccounts'][_0x5e7dd4]){this['mailAccounts'][_0x5e7dd4]['Imap'][_0xb892('0x14')]=_0xb892('0x23');this[_0xb892('0xc')][_0x5e7dd4]['Imap']['messageStatus']=_0x69a77d;return this[_0xb892('0xf')](_0x5e7dd4);}};EmailChannel[_0xb892('0xe')][_0xb892('0x31')]=function(_0x5d27e9,_0x53b826){return this[_0xb892('0x32')]['send'](_0x5d27e9,_0x53b826);};EmailChannel['prototype'][_0xb892('0x33')]=function(_0x375495){var _0x5326d1=this;if(this[_0xb892('0xc')][_0x375495['id']]){if(_[_0xb892('0x24')](this['mailAccounts'][_0x375495['id']][_0xb892('0x34')])){this['mailAccounts'][_0x375495['id']][_0xb892('0x34')]={};}this['mailAccounts'][_0x375495['id']][_0xb892('0x34')]['lastSync']=moment();return new BPromise(function(_0x212298,_0x5840ab){return _0x5326d1['smtp'][_0xb892('0x35')](_0x375495)[_0xb892('0x2d')](function(_0x55c543){_0x5326d1[_0xb892('0xc')][_0x375495['id']]['Smtp'][_0xb892('0x14')]='verified';_0x5326d1[_0xb892('0xc')][_0x375495['id']][_0xb892('0x34')]['messageStatus']='';_0x5326d1['emit'](_0x375495['id']);_0x212298(_0x55c543);})[_0xb892('0x36')](function(_0x57f948){_0x5326d1[_0xb892('0xc')][_0x375495['id']]['Smtp'][_0xb892('0x14')]='error';_0x5326d1[_0xb892('0xc')][_0x375495['id']][_0xb892('0x34')]['messageStatus']=_0x57f948;_0x5326d1[_0xb892('0xf')](_0x375495['id']);_0x5840ab(_0x57f948);});});}return this[_0xb892('0x32')][_0xb892('0x35')](_0x375495);};module[_0xb892('0x37')]=EmailChannel;
\ No newline at end of file
index ab60f6e..44f0453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad38=['end','handleFetchEnd','closeBox','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchError','stringify','textCode','upperFirst','exports','util','imap','mailparser','./utils','email','mailbox','getAccount','account','once','handleEnd','bind','error','handleError','connect','prototype','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','password','authentication','anonymous@xcally.com','host','port','tls','required','handleReady','handleOpenBox','emit','box','handleCloseBox','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage'];(function(_0x5df2f2,_0x122dfd){var _0x3c7f21=function(_0x2e3d11){while(--_0x2e3d11){_0x5df2f2['push'](_0x5df2f2['shift']());}};_0x3c7f21(++_0x122dfd);}(_0xad38,0xf2));var _0x8ad3=function(_0x173eff,_0x55a7d0){_0x173eff=_0x173eff-0x0;var _0x119fbd=_0xad38[_0x173eff];return _0x119fbd;};'use strict';var _=require('lodash');var util=require(_0x8ad3('0x0'));var Imap=require(_0x8ad3('0x1'));var simpleParser=require(_0x8ad3('0x2'))['simpleParser'];var Iconv=require('iconv')['Iconv'];var EventEmitter=require('events')['EventEmitter'];var utils=require(_0x8ad3('0x3'));var logger=require('../../../config/logger')(_0x8ad3('0x4'));function EmailImap(_0x55a04c,_0x855756){this['mailbox']=_0x55a04c[_0x8ad3('0x5')];this['account']=this[_0x8ad3('0x6')](_0x55a04c,_0x855756);this[_0x8ad3('0x1')]=new Imap(this[_0x8ad3('0x7')]);this[_0x8ad3('0x1')][_0x8ad3('0x8')]('ready',this['handleReady']['bind'](this));this[_0x8ad3('0x1')][_0x8ad3('0x8')]('end',this[_0x8ad3('0x9')][_0x8ad3('0xa')](this));this[_0x8ad3('0x1')]['on'](_0x8ad3('0xb'),this[_0x8ad3('0xc')][_0x8ad3('0xa')](this));this[_0x8ad3('0x1')][_0x8ad3('0xd')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0x8ad3('0xe')]['getAccount']=function(_0x40bb90,_0x24a22a){var _0x47e317={'connTimeout':_0x40bb90[_0x8ad3('0xf')]?_0x40bb90[_0x8ad3('0xf')]*0x3e8:0x2710,'authTimeout':_0x40bb90[_0x8ad3('0x10')]?_0x40bb90[_0x8ad3('0x10')]*0x3e8:0x1388};if(_0x40bb90[_0x8ad3('0x11')]){_0x47e317[_0x8ad3('0x12')]=_0x40bb90['user'];if(_0x40bb90[_0x8ad3('0x13')]){_0x47e317[_0x8ad3('0x14')]=utils[_0x8ad3('0x15')](_0x40bb90[_0x8ad3('0x16')]['data5'],_0x40bb90[_0x8ad3('0x12')]);}else{_0x47e317[_0x8ad3('0x17')]=_0x40bb90[_0x8ad3('0x17')];}}else{if(_0x40bb90[_0x8ad3('0x18')]){_0x47e317[_0x8ad3('0x12')]=_0x40bb90['user'];_0x47e317['password']=_0x40bb90[_0x8ad3('0x17')];}}_0x47e317[_0x8ad3('0x4')]=_0x24a22a||_0x40bb90[_0x8ad3('0x12')]||_0x8ad3('0x19');_0x47e317[_0x8ad3('0x1a')]=_0x40bb90['host'];_0x47e317[_0x8ad3('0x1b')]=_0x40bb90[_0x8ad3('0x1b')]||0x3e1;if(_0x40bb90[_0x8ad3('0x1c')]){_0x47e317[_0x8ad3('0x1c')]=!![];}else{_0x47e317[_0x8ad3('0x1c')]=![];_0x47e317['autotls']=_0x8ad3('0x1d');}return _0x47e317;};EmailImap['prototype'][_0x8ad3('0x1e')]=function(){this[_0x8ad3('0x1')]['openBox'](this[_0x8ad3('0x5')],![],this[_0x8ad3('0x1f')]['bind'](this));};EmailImap[_0x8ad3('0xe')][_0x8ad3('0x1f')]=function(_0x4bed2d,_0x46617a){if(_0x4bed2d){this[_0x8ad3('0xc')](_0x4bed2d,!![]);}else{this[_0x8ad3('0x20')](_0x8ad3('0x21'),_0x46617a);this['readUnseen']();}};EmailImap['prototype'][_0x8ad3('0x22')]=function(_0x141723){if(_0x141723){this['handleError'](_0x141723,!![]);}else{this[_0x8ad3('0x1')]['end']();}};EmailImap[_0x8ad3('0xe')][_0x8ad3('0x23')]=function(){this[_0x8ad3('0x1')][_0x8ad3('0x24')]([_0x8ad3('0x25')],this['handleReadUnseen'][_0x8ad3('0xa')](this));};EmailImap['prototype'][_0x8ad3('0x26')]=function(_0x41263e,_0x4d2ebb){if(_0x41263e){this[_0x8ad3('0xc')](_0x41263e,!![]);}else{if(_0x4d2ebb[_0x8ad3('0x27')]){try{var _0x2cacb1=this[_0x8ad3('0x1')][_0x8ad3('0x28')](_0x4d2ebb,{'bodies':'','markSeen':!![]});_0x2cacb1['on'](_0x8ad3('0x29'),this[_0x8ad3('0x2a')][_0x8ad3('0xa')](this));_0x2cacb1[_0x8ad3('0x8')](_0x8ad3('0xb'),this['handleFetchError']['bind'](this));_0x2cacb1[_0x8ad3('0x8')](_0x8ad3('0x2b'),this[_0x8ad3('0x2c')][_0x8ad3('0xa')](this));}catch(_0x3f52dc){logger['error'](_0x3f52dc);}}else{this[_0x8ad3('0x1')][_0x8ad3('0x2d')](!![],this[_0x8ad3('0x22')][_0x8ad3('0xa')](this));}}};EmailImap['prototype'][_0x8ad3('0x2a')]=function(_0x25d217){_0x25d217['on']('body',this[_0x8ad3('0x2e')][_0x8ad3('0xa')](this));_0x25d217[_0x8ad3('0x8')](_0x8ad3('0x2f'),this[_0x8ad3('0x30')][_0x8ad3('0xa')](this));_0x25d217[_0x8ad3('0x8')]('end',this[_0x8ad3('0x31')][_0x8ad3('0xa')](this));};EmailImap[_0x8ad3('0xe')]['handleMessageBody']=function(_0xaff903){simpleParser(_0xaff903,{'Iconv':Iconv},this[_0x8ad3('0x32')][_0x8ad3('0xa')](this));};EmailImap[_0x8ad3('0xe')]['handleMessageAttributes']=function(){};EmailImap[_0x8ad3('0xe')][_0x8ad3('0x31')]=function(){};EmailImap[_0x8ad3('0xe')][_0x8ad3('0x32')]=function(_0x49a429,_0x522210){if(_0x49a429){logger[_0x8ad3('0xb')](_0x49a429);}else{var _0x5a7db2=this;utils[_0x8ad3('0x33')](this['account'],_0x522210,function(_0x238cb5){_0x5a7db2[_0x8ad3('0x20')](_0x8ad3('0x4'),_0x238cb5);});}};EmailImap[_0x8ad3('0xe')][_0x8ad3('0x2c')]=function(){this[_0x8ad3('0x1')][_0x8ad3('0x2d')](!![],this[_0x8ad3('0x22')][_0x8ad3('0xa')](this));};EmailImap[_0x8ad3('0xe')][_0x8ad3('0x34')]=function(_0x43265f){this[_0x8ad3('0xc')](_0x43265f);this['imap'][_0x8ad3('0x2d')](!![],this['handleCloseBox'][_0x8ad3('0xa')](this));};EmailImap[_0x8ad3('0xe')][_0x8ad3('0x9')]=function(){this[_0x8ad3('0x20')](_0x8ad3('0x2b'));};EmailImap[_0x8ad3('0xe')]['handleError']=function(_0x474924,_0x503f6e){logger['error'](_0x8ad3('0xc'),this['account'][_0x8ad3('0x4')],JSON[_0x8ad3('0x35')](_0x474924));var _0x52c3ae='';if(_0x474924){if(_0x474924[_0x8ad3('0x36')]){_0x52c3ae=_0x474924['textCode'];}else{for(var _0x35973b in _0x474924){if(_0x474924['hasOwnProperty'](_0x35973b)){_0x52c3ae+=_[_0x8ad3('0x37')](_0x35973b)+':\x20'+_0x474924[_0x35973b]+'\x0a';}}}}if(_0x503f6e){this['imap']['end']();}else{this['emit']('error',_0x52c3ae);this['emit'](_0x8ad3('0x2b'));}};module[_0x8ad3('0x38')]=EmailImap;
\ No newline at end of file
+var _0xe242=['handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','emit','stringify','textCode','hasOwnProperty','upperFirst','exports','lodash','util','imap','mailparser','simpleParser','iconv','events','EventEmitter','./utils','../../../config/logger','mailbox','account','once','ready','handleReady','bind','end','handleEnd','error','handleError','connect','inherits','prototype','getAccount','authTimeout','service','user','modernAuthentication','xoauth2','CloudProvider','data5','authentication','password','email','anonymous@xcally.com','host','port','tls','autotls','required','handleOpenBox','box','search','UNSEEN','handleReadUnseen','length','fetch','handleFetchError','handleFetchEnd','closeBox','handleCloseBox','handleFetchMessage','body','handleMessageBody','attributes'];(function(_0x26e9d7,_0x2cfd78){var _0xf39dd5=function(_0x2c5ec1){while(--_0x2c5ec1){_0x26e9d7['push'](_0x26e9d7['shift']());}};_0xf39dd5(++_0x2cfd78);}(_0xe242,0x14f));var _0x2e24=function(_0x44d1dc,_0xabb37c){_0x44d1dc=_0x44d1dc-0x0;var _0x4f6793=_0xe242[_0x44d1dc];return _0x4f6793;};'use strict';var _=require(_0x2e24('0x0'));var util=require(_0x2e24('0x1'));var Imap=require(_0x2e24('0x2'));var simpleParser=require(_0x2e24('0x3'))[_0x2e24('0x4')];var Iconv=require(_0x2e24('0x5'))['Iconv'];var EventEmitter=require(_0x2e24('0x6'))[_0x2e24('0x7')];var utils=require(_0x2e24('0x8'));var logger=require(_0x2e24('0x9'))('email');function EmailImap(_0x3aca84,_0x115909){this[_0x2e24('0xa')]=_0x3aca84['mailbox'];this[_0x2e24('0xb')]=this['getAccount'](_0x3aca84,_0x115909);this[_0x2e24('0x2')]=new Imap(this[_0x2e24('0xb')]);this[_0x2e24('0x2')][_0x2e24('0xc')](_0x2e24('0xd'),this[_0x2e24('0xe')][_0x2e24('0xf')](this));this['imap'][_0x2e24('0xc')](_0x2e24('0x10'),this[_0x2e24('0x11')]['bind'](this));this['imap']['on'](_0x2e24('0x12'),this[_0x2e24('0x13')][_0x2e24('0xf')](this));this[_0x2e24('0x2')][_0x2e24('0x14')]();}util[_0x2e24('0x15')](EmailImap,EventEmitter);EmailImap[_0x2e24('0x16')][_0x2e24('0x17')]=function(_0x162b07,_0x4a7fbe){var _0xbc2b94={'connTimeout':_0x162b07['connTimeout']?_0x162b07['connTimeout']*0x3e8:0x2710,'authTimeout':_0x162b07[_0x2e24('0x18')]?_0x162b07[_0x2e24('0x18')]*0x3e8:0x1388};if(_0x162b07[_0x2e24('0x19')]){_0xbc2b94[_0x2e24('0x1a')]=_0x162b07[_0x2e24('0x1a')];if(_0x162b07[_0x2e24('0x1b')]){_0xbc2b94[_0x2e24('0x1c')]=utils['generateXOAuth2Token'](_0x162b07[_0x2e24('0x1d')][_0x2e24('0x1e')],_0x162b07[_0x2e24('0x1a')]);}else{_0xbc2b94['password']=_0x162b07['password'];}}else{if(_0x162b07[_0x2e24('0x1f')]){_0xbc2b94[_0x2e24('0x1a')]=_0x162b07[_0x2e24('0x1a')];_0xbc2b94['password']=_0x162b07[_0x2e24('0x20')];}}_0xbc2b94[_0x2e24('0x21')]=_0x4a7fbe||_0x162b07[_0x2e24('0x1a')]||_0x2e24('0x22');_0xbc2b94[_0x2e24('0x23')]=_0x162b07[_0x2e24('0x23')];_0xbc2b94['port']=_0x162b07[_0x2e24('0x24')]||0x3e1;if(_0x162b07[_0x2e24('0x25')]){_0xbc2b94['tls']=!![];}else{_0xbc2b94[_0x2e24('0x25')]=![];_0xbc2b94[_0x2e24('0x26')]=_0x2e24('0x27');}return _0xbc2b94;};EmailImap[_0x2e24('0x16')]['handleReady']=function(){this[_0x2e24('0x2')]['openBox'](this['mailbox'],![],this['handleOpenBox'][_0x2e24('0xf')](this));};EmailImap[_0x2e24('0x16')][_0x2e24('0x28')]=function(_0x42e388,_0x302adf){if(_0x42e388){this['handleError'](_0x42e388,!![]);}else{this['emit'](_0x2e24('0x29'),_0x302adf);this['readUnseen']();}};EmailImap['prototype']['handleCloseBox']=function(_0x41e27b){if(_0x41e27b){this[_0x2e24('0x13')](_0x41e27b,!![]);}else{this['imap'][_0x2e24('0x10')]();}};EmailImap['prototype']['readUnseen']=function(){this[_0x2e24('0x2')][_0x2e24('0x2a')]([_0x2e24('0x2b')],this['handleReadUnseen'][_0x2e24('0xf')](this));};EmailImap[_0x2e24('0x16')][_0x2e24('0x2c')]=function(_0x18d282,_0x24ae41){if(_0x18d282){this[_0x2e24('0x13')](_0x18d282,!![]);}else{if(_0x24ae41[_0x2e24('0x2d')]){try{var _0x4b8784=this[_0x2e24('0x2')][_0x2e24('0x2e')](_0x24ae41,{'bodies':'','markSeen':!![]});_0x4b8784['on']('message',this['handleFetchMessage'][_0x2e24('0xf')](this));_0x4b8784[_0x2e24('0xc')](_0x2e24('0x12'),this[_0x2e24('0x2f')][_0x2e24('0xf')](this));_0x4b8784[_0x2e24('0xc')]('end',this[_0x2e24('0x30')][_0x2e24('0xf')](this));}catch(_0x37ec54){logger[_0x2e24('0x12')](_0x37ec54);}}else{this[_0x2e24('0x2')][_0x2e24('0x31')](!![],this[_0x2e24('0x32')][_0x2e24('0xf')](this));}}};EmailImap[_0x2e24('0x16')][_0x2e24('0x33')]=function(_0x43dfe5){_0x43dfe5['on'](_0x2e24('0x34'),this[_0x2e24('0x35')][_0x2e24('0xf')](this));_0x43dfe5['once'](_0x2e24('0x36'),this[_0x2e24('0x37')][_0x2e24('0xf')](this));_0x43dfe5[_0x2e24('0xc')](_0x2e24('0x10'),this[_0x2e24('0x38')]['bind'](this));};EmailImap[_0x2e24('0x16')]['handleMessageBody']=function(_0x1bb61a){simpleParser(_0x1bb61a,{'Iconv':Iconv},this['handleSimpleParser'][_0x2e24('0xf')](this));};EmailImap['prototype']['handleMessageAttributes']=function(){};EmailImap['prototype'][_0x2e24('0x38')]=function(){};EmailImap['prototype'][_0x2e24('0x39')]=function(_0x331bd6,_0x437d7e){if(_0x331bd6){logger[_0x2e24('0x12')](_0x331bd6);}else{var _0x453905=this;utils[_0x2e24('0x3a')](this['account'],_0x437d7e,function(_0x586710){_0x453905['emit'](_0x2e24('0x21'),_0x586710);});}};EmailImap[_0x2e24('0x16')][_0x2e24('0x30')]=function(){this[_0x2e24('0x2')][_0x2e24('0x31')](!![],this[_0x2e24('0x32')][_0x2e24('0xf')](this));};EmailImap[_0x2e24('0x16')][_0x2e24('0x2f')]=function(_0xc5b7e5){this[_0x2e24('0x13')](_0xc5b7e5);this[_0x2e24('0x2')]['closeBox'](!![],this[_0x2e24('0x32')][_0x2e24('0xf')](this));};EmailImap[_0x2e24('0x16')][_0x2e24('0x11')]=function(){this[_0x2e24('0x3b')](_0x2e24('0x10'));};EmailImap['prototype']['handleError']=function(_0x5e595c,_0x4009be){logger[_0x2e24('0x12')](_0x2e24('0x13'),this[_0x2e24('0xb')][_0x2e24('0x21')],JSON[_0x2e24('0x3c')](_0x5e595c));var _0x22bac5='';if(_0x5e595c){if(_0x5e595c[_0x2e24('0x3d')]){_0x22bac5=_0x5e595c['textCode'];}else{for(var _0x1dd859 in _0x5e595c){if(_0x5e595c[_0x2e24('0x3e')](_0x1dd859)){_0x22bac5+=_[_0x2e24('0x3f')](_0x1dd859)+':\x20'+_0x5e595c[_0x1dd859]+'\x0a';}}}}if(_0x4009be){this['imap'][_0x2e24('0x10')]();}else{this[_0x2e24('0x3b')](_0x2e24('0x12'),_0x22bac5);this[_0x2e24('0x3b')]('end');}};module[_0x2e24('0x40')]=EmailImap;
\ No newline at end of file
index 77afd29..db94a74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eda=['verify','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','toString'];(function(_0x3aae42,_0xb75f7){var _0x292e90=function(_0x3ea2da){while(--_0x3ea2da){_0x3aae42['push'](_0x3aae42['shift']());}};_0x292e90(++_0xb75f7);}(_0x9eda,0x1e2));var _0xa9ed=function(_0x178972,_0xceb03e){_0x178972=_0x178972-0x0;var _0x419af2=_0x9eda[_0x178972];return _0x419af2;};'use strict';var nodemailer=require(_0xa9ed('0x0'));var inlineBase64=require(_0xa9ed('0x1'));function EmailSmtp(){}EmailSmtp[_0xa9ed('0x2')][_0xa9ed('0x3')]=function(_0x2ed0a2,_0x692e54){return new Promise(function(_0x52ac11,_0x1c6dc8){var _0x51c46f=nodemailer[_0xa9ed('0x4')](_0x2ed0a2);_0x51c46f[_0xa9ed('0x5')](_0xa9ed('0x6'),inlineBase64());_0x51c46f['sendMail'](_0x692e54,function(_0x3be4e1,_0x265df9){if(_0x3be4e1){_0x1c6dc8(_0x3be4e1[_0xa9ed('0x7')]());}else{_0x52ac11(_0x265df9);}});});};EmailSmtp[_0xa9ed('0x2')][_0xa9ed('0x8')]=function(_0xf72a81){return new Promise(function(_0x2e89b1,_0x3dcfb8){var _0x2f9623=nodemailer[_0xa9ed('0x4')](_0xf72a81);_0x2f9623[_0xa9ed('0x8')](function(_0x23e2fb,_0x3792cc){if(_0x23e2fb){_0x3dcfb8(_0x23e2fb[_0xa9ed('0x7')]());}else{if(_0x3792cc){_0x2e89b1(_0x3792cc);}else{_0x3dcfb8('Not\x20verifired');}}});});};module[_0xa9ed('0x9')]=EmailSmtp;
\ No newline at end of file
+var _0x5744=['Not\x20verifired','exports','nodemailer-plugin-inline-base64','prototype','createTransport','compile','sendMail','toString','verify'];(function(_0xbce81a,_0xa48131){var _0x272233=function(_0x504cdc){while(--_0x504cdc){_0xbce81a['push'](_0xbce81a['shift']());}};_0x272233(++_0xa48131);}(_0x5744,0x122));var _0x4574=function(_0x17b45f,_0x24f28d){_0x17b45f=_0x17b45f-0x0;var _0x49ede4=_0x5744[_0x17b45f];return _0x49ede4;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require(_0x4574('0x0'));function EmailSmtp(){}EmailSmtp[_0x4574('0x1')]['send']=function(_0x5d2fea,_0x2fab43){return new Promise(function(_0x5c2af8,_0x2d6087){var _0x4ce4bc=nodemailer[_0x4574('0x2')](_0x5d2fea);_0x4ce4bc['use'](_0x4574('0x3'),inlineBase64());_0x4ce4bc[_0x4574('0x4')](_0x2fab43,function(_0x4af2c8,_0x515c2d){if(_0x4af2c8){_0x2d6087(_0x4af2c8[_0x4574('0x5')]());}else{_0x5c2af8(_0x515c2d);}});});};EmailSmtp['prototype']['verify']=function(_0x4e8ab6){return new Promise(function(_0xab333,_0x56e4e7){var _0x34ef56=nodemailer[_0x4574('0x2')](_0x4e8ab6);_0x34ef56[_0x4574('0x6')](function(_0x325db0,_0x40c0a1){if(_0x325db0){_0x56e4e7(_0x325db0[_0x4574('0x5')]());}else{if(_0x40c0a1){_0xab333(_0x40c0a1);}else{_0x56e4e7(_0x4574('0x7'));}}});});};module[_0x4574('0x8')]=EmailSmtp;
\ No newline at end of file
index 3fe2137..249e13d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05b1=['<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','randomstring','path','util','email','head','value','address','anonymous','generate','name','substring','indexOf','split','length','slice','join','Anonymous','pop','isEmpty','@xcally.com','html','test','replace','includes','<img','attachments','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','textAsHtml','message','originTo','originCc','bcc','attach','attachment','attachment-','%s-%s','now','root','server/files/attachments/','writeFileSync','content','headerLines','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','date','format','YYYY-MM-DD\x20HH:mm:ss','filter','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer'];(function(_0x15aad3,_0x5594e5){var _0x4dfda5=function(_0xe7e0f2){while(--_0xe7e0f2){_0x15aad3['push'](_0x15aad3['shift']());}};_0x4dfda5(++_0x5594e5);}(_0x05b1,0x12e));var _0x105b=function(_0x2e0a96,_0x32f7da){_0x2e0a96=_0x2e0a96-0x0;var _0x9e945d=_0x05b1[_0x2e0a96];return _0x9e945d;};'use strict';var _=require(_0x105b('0x0'));var moment=require(_0x105b('0x1'));var random=require(_0x105b('0x2'));var fs=require('fs');var path=require(_0x105b('0x3'));var util=require(_0x105b('0x4'));var tnef=require('node-tnef');var logger=require('../../../config/logger')(_0x105b('0x5'));var config=require('../../../config/environment');function getAddress(_0x5e9dcb){var _0x42d820=_[_0x105b('0x6')](_0x5e9dcb[_0x105b('0x7')]);return _0x42d820&&_0x42d820[_0x105b('0x8')]?_0x42d820[_0x105b('0x8')]:_0x105b('0x9')+random[_0x105b('0xa')](0x6)+'@xcally.com';}function getFirstName(_0x12d956){var _0x3e81a2=_['head'](_0x12d956[_0x105b('0x7')]);if(_0x3e81a2&&_0x3e81a2[_0x105b('0xb')]){if(_0x3e81a2[_0x105b('0xb')]==_0x3e81a2['address']){return _0x3e81a2[_0x105b('0xb')][_0x105b('0xc')](0x0,_0x3e81a2[_0x105b('0xb')][_0x105b('0xd')]('@'));}var _0x164c32=_0x3e81a2[_0x105b('0xb')][_0x105b('0xe')](/\s+/);return _0x164c32[_0x105b('0xf')]>0x1?_0x164c32[_0x105b('0x10')](0x0,-0x1)[_0x105b('0x11')]('\x20'):_0x3e81a2[_0x105b('0xb')];}return _0x105b('0x12');}function getLastName(_0x5a41e7){var _0x418439=_['head'](_0x5a41e7[_0x105b('0x7')]);if(_0x418439&&_0x418439[_0x105b('0xb')]){var _0x22580d=_0x418439['name'][_0x105b('0xe')](/\s+/);return _0x22580d[_0x105b('0xf')]>0x1?_0x22580d[_0x105b('0x13')]():'';}return'';}function getMails(_0x5e6721,_0x14f0dc){var _0x174290='';for(var _0x4f69a7=0x0;_0x4f69a7<_0x14f0dc[_0x105b('0x7')][_0x105b('0xf')];_0x4f69a7+=0x1){if(_0x14f0dc[_0x105b('0x7')][_0x4f69a7][_0x105b('0x8')]!==_0x5e6721){if(!_[_0x105b('0x14')](_0x174290)){_0x174290+=',';}_0x174290+=_0x14f0dc[_0x105b('0x7')][_0x4f69a7][_0x105b('0xb')]||_0x14f0dc[_0x105b('0x7')][_0x4f69a7][_0x105b('0x8')]||'';_0x174290+='\x20<';_0x174290+=_0x14f0dc[_0x105b('0x7')][_0x4f69a7][_0x105b('0x8')]?_0x14f0dc[_0x105b('0x7')][_0x4f69a7][_0x105b('0x8')]:'anonymous'+random['generate'](0x6)+_0x105b('0x15');_0x174290+='>';}}return _0x174290;}function parseEmail(_0x4f3950,_0x10d7e1,_0xd3b833){if(_0x10d7e1[_0x105b('0x16')]){var _0x4f8abb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x4f8abb[_0x105b('0x17')](_0x10d7e1[_0x105b('0x16')])){_0x10d7e1[_0x105b('0x16')]=_0x10d7e1[_0x105b('0x16')][_0x105b('0x18')](_0x4f8abb,'');}if(_0x10d7e1[_0x105b('0x16')][_0x105b('0x19')](_0x105b('0x1a'))){var _0x37f6c3=[];_0x10d7e1[_0x105b('0x1b')][_0x105b('0x1c')](_0x11e72a=>{_0x37f6c3[_0x105b('0x1d')](_0x11e72a[_0x105b('0x1e')]);});var _0x781239=/<img.*? _SRC(.*?)[^>]+>/g;var _0x49e93c=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5e6cd2=_0x10d7e1[_0x105b('0x16')][_0x105b('0x18')](_0x49e93c,'_SRC');var _0x1b88e1=_0x5e6cd2[_0x105b('0x18')](_0x781239,_0x105b('0x1f'));for(let _0xdc44ac=0x0;_0xdc44ac<_0x37f6c3[_0x105b('0xf')];_0xdc44ac++){var _0x4e1bd0=_0x1b88e1[_0x105b('0x18')](_0x105b('0x1f'),_0x105b('0x20')+_0x37f6c3[_0xdc44ac]+'\x20]</span>');_0x1b88e1=_0x4e1bd0;}_0x10d7e1['html']=_0x1b88e1;}_0xd3b833[_0x105b('0x21')]=_0x10d7e1['html'];}else{_0xd3b833[_0x105b('0x21')]=_0x10d7e1[_0x105b('0x22')];}if(_0xd3b833['body']){_0xd3b833[_0x105b('0x21')]=_0xd3b833[_0x105b('0x21')]['replace'](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x10d7e1['to']){_0xd3b833[_0x105b('0x23')][_0x105b('0x24')]=getMails(null,_0x10d7e1['to']);var _0x55b843=getMails(_0x4f3950[_0x105b('0x5')],_0x10d7e1['to']);if(!_[_0x105b('0x14')](_0x55b843)){_0xd3b833[_0x105b('0x23')]['cc']+=_0x55b843;}}if(_0x10d7e1['cc']){_0xd3b833['message'][_0x105b('0x25')]=getMails(null,_0x10d7e1['cc']);var _0x5875f0=getMails(_0x4f3950['email'],_0x10d7e1['cc']);if(!_[_0x105b('0x14')](_0x5875f0)){if(!_[_0x105b('0x14')](_0xd3b833[_0x105b('0x23')]['cc'])){_0xd3b833[_0x105b('0x23')]['cc']+=',';}_0xd3b833['message']['cc']+=_0x5875f0;}}if(!_[_0x105b('0x19')](_0xd3b833[_0x105b('0x23')][_0x105b('0x24')],_0x4f3950['email'])&&!_[_0x105b('0x19')](_0xd3b833[_0x105b('0x23')]['originCc'],_0x4f3950[_0x105b('0x5')])){_0xd3b833[_0x105b('0x23')][_0x105b('0x26')]=_0x4f3950[_0x105b('0x5')];}if(_0x10d7e1[_0x105b('0x1b')]&&_0x10d7e1[_0x105b('0x1b')][_0x105b('0xf')]){_0xd3b833[_0x105b('0x23')][_0x105b('0x27')]=_0x10d7e1[_0x105b('0x1b')][_0x105b('0xf')];for(var _0xbe63f4=0x0,_0x306a94,_0xdb9bcf,_0x3d2dc4;_0xbe63f4<_0x10d7e1[_0x105b('0x1b')]['length'];_0xbe63f4+=0x1){if(_0x10d7e1[_0x105b('0x1b')][_0xbe63f4]['type']===_0x105b('0x28')){_0x3d2dc4=_0x10d7e1[_0x105b('0x1b')][_0xbe63f4][_0x105b('0x1e')]||_0x105b('0x29')+_0xbe63f4;_0x306a94=util['format'](_0x105b('0x2a'),Date[_0x105b('0x2b')](),_0x3d2dc4);_0xdb9bcf=path[_0x105b('0x11')](config[_0x105b('0x2c')],_0x105b('0x2d'),_0x306a94);fs[_0x105b('0x2e')](_0xdb9bcf,_0x10d7e1[_0x105b('0x1b')][_0xbe63f4][_0x105b('0x2f')]);_0xd3b833[_0x105b('0x23')][_0x105b('0x1b')][_0x105b('0x1d')]({'name':_0x3d2dc4,'basename':_0x306a94,'type':_0x10d7e1[_0x105b('0x1b')][_0xbe63f4]['contentType'],'filepath':_0xdb9bcf});}}}if(_0x10d7e1['headerLines']&&_0x10d7e1[_0x105b('0x30')][_0x105b('0xf')]>0x0){var _0x3a3f42=['Auto-Submitted:\x20auto-replied',_0x105b('0x31'),_0x105b('0x32')];for(var _0x46e6a6=0x0;_0x46e6a6<_0x10d7e1[_0x105b('0x30')][_0x105b('0xf')];_0x46e6a6++){var _0x2a298a=_['indexOf'](_0x3a3f42,_0x10d7e1[_0x105b('0x30')][_0x46e6a6][_0x105b('0x33')]);if(_0x2a298a>=0x0){_0xd3b833[_0x105b('0x34')]=!![];}}}return _0xd3b833;}exports[_0x105b('0x35')]=function(_0xc38c54,_0x1c2602,_0x513bac){var _0x48ff3d={'from':getAddress(_0x1c2602[_0x105b('0x36')]),'firstName':getFirstName(_0x1c2602[_0x105b('0x36')]),'lastName':getLastName(_0x1c2602[_0x105b('0x36')]),'mapKey':_0x105b('0x5'),'message':{'from':getMails(_0xc38c54['email'],_0x1c2602[_0x105b('0x36')]),'to':_0xc38c54[_0x105b('0x5')],'cc':'','subject':_0x1c2602[_0x105b('0x37')]||'','messageId':_0x1c2602[_0x105b('0x38')],'inReplyTo':_0x1c2602['inReplyTo'],'sentAt':moment(_0x1c2602[_0x105b('0x39')])[_0x105b('0x3a')](_0x105b('0x3b')),'attach':![],'attachments':[]}};if(!_0x1c2602['html']&&!_0x1c2602[_0x105b('0x22')]){var _0x40f8cd=_[_0x105b('0x3c')](_0x1c2602[_0x105b('0x1b')],{'contentType':'application/ms-tnef'});if(_0x40f8cd['length']){logger['info'](util['format'](_0x105b('0x3d'),_0x1c2602[_0x105b('0x38')]));tnef[_0x105b('0x3e')](_['first'](_0x40f8cd)[_0x105b('0x2f')],function(_0x100490,_0x1add66){if(_0x1add66){_0x1c2602['html']=_0x1add66['BodyHTML']||_0x105b('0x3f');if(_0x1add66[_0x105b('0x40')]){for(var _0xc3e9e7=0x0;_0xc3e9e7<_0x1add66['Attachments'][_0x105b('0xf')];_0xc3e9e7++){var _0x2524e2=_0x1add66['Attachments'][_0xc3e9e7];_0x48ff3d['message']['attachments'][_0x105b('0x1d')]({'filename':_0x2524e2[_0x105b('0x41')],'content':Buffer[_0x105b('0x36')](_0x2524e2[_0x105b('0x42')])});}}}_0x513bac(parseEmail(_0xc38c54,_0x1c2602,_0x48ff3d));});}else{_0x1c2602[_0x105b('0x16')]=_0x105b('0x3f');_0x513bac(parseEmail(_0xc38c54,_0x1c2602,_0x48ff3d));}}else{_0x513bac(parseEmail(_0xc38c54,_0x1c2602,_0x48ff3d));}};exports[_0x105b('0x43')]=function(_0x5c92d5,_0x358c33){var _0x242171=[_0x105b('0x44')+(_0x358c33||''),_0x105b('0x45')+_0x5c92d5,'',''];return Buffer['from'](_0x242171[_0x105b('0x11')]('\ 1'),_0x105b('0x46'))[_0x105b('0x47')](_0x105b('0x48'));};
\ No newline at end of file
+var _0xc333=['email','message','originCc','includes','bcc','attachments','type','attachment','format','%s-%s','now','root','server/files/attachments/','push','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','isAutoreply','parser','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','from','Data','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','length','slice','join','Anonymous','split','pop','isEmpty','html','test','replace','<img','forEach','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','textAsHtml','originTo'];(function(_0x559adf,_0x5989cc){var _0x53f28f=function(_0x536804){while(--_0x536804){_0x559adf['push'](_0x559adf['shift']());}};_0x53f28f(++_0x5989cc);}(_0xc333,0x115));var _0x3c33=function(_0x3e3278,_0xdde28e){_0x3e3278=_0x3e3278-0x0;var _0xcc445b=_0xc333[_0x3e3278];return _0xcc445b;};'use strict';var _=require(_0x3c33('0x0'));var moment=require(_0x3c33('0x1'));var random=require(_0x3c33('0x2'));var fs=require('fs');var path=require(_0x3c33('0x3'));var util=require(_0x3c33('0x4'));var tnef=require(_0x3c33('0x5'));var logger=require(_0x3c33('0x6'))('email');var config=require(_0x3c33('0x7'));function getAddress(_0x4aaa35){var _0xd5e2f9=_[_0x3c33('0x8')](_0x4aaa35[_0x3c33('0x9')]);return _0xd5e2f9&&_0xd5e2f9[_0x3c33('0xa')]?_0xd5e2f9[_0x3c33('0xa')]:_0x3c33('0xb')+random[_0x3c33('0xc')](0x6)+_0x3c33('0xd');}function getFirstName(_0x202e74){var _0x4baac9=_['head'](_0x202e74[_0x3c33('0x9')]);if(_0x4baac9&&_0x4baac9[_0x3c33('0xe')]){if(_0x4baac9[_0x3c33('0xe')]==_0x4baac9[_0x3c33('0xa')]){return _0x4baac9[_0x3c33('0xe')][_0x3c33('0xf')](0x0,_0x4baac9[_0x3c33('0xe')][_0x3c33('0x10')]('@'));}var _0x7c9a82=_0x4baac9[_0x3c33('0xe')]['split'](/\s+/);return _0x7c9a82[_0x3c33('0x11')]>0x1?_0x7c9a82[_0x3c33('0x12')](0x0,-0x1)[_0x3c33('0x13')]('\x20'):_0x4baac9[_0x3c33('0xe')];}return _0x3c33('0x14');}function getLastName(_0x333147){var _0x328b40=_[_0x3c33('0x8')](_0x333147[_0x3c33('0x9')]);if(_0x328b40&&_0x328b40['name']){var _0x351ffc=_0x328b40['name'][_0x3c33('0x15')](/\s+/);return _0x351ffc['length']>0x1?_0x351ffc[_0x3c33('0x16')]():'';}return'';}function getMails(_0x687040,_0x12024b){var _0x3d3f0c='';for(var _0x1e72a6=0x0;_0x1e72a6<_0x12024b[_0x3c33('0x9')][_0x3c33('0x11')];_0x1e72a6+=0x1){if(_0x12024b[_0x3c33('0x9')][_0x1e72a6][_0x3c33('0xa')]!==_0x687040){if(!_[_0x3c33('0x17')](_0x3d3f0c)){_0x3d3f0c+=',';}_0x3d3f0c+=_0x12024b[_0x3c33('0x9')][_0x1e72a6][_0x3c33('0xe')]||_0x12024b['value'][_0x1e72a6][_0x3c33('0xa')]||'';_0x3d3f0c+='\x20<';_0x3d3f0c+=_0x12024b[_0x3c33('0x9')][_0x1e72a6][_0x3c33('0xa')]?_0x12024b[_0x3c33('0x9')][_0x1e72a6]['address']:_0x3c33('0xb')+random['generate'](0x6)+_0x3c33('0xd');_0x3d3f0c+='>';}}return _0x3d3f0c;}function parseEmail(_0xb7ca7a,_0x1fb43c,_0x1617fa){if(_0x1fb43c[_0x3c33('0x18')]){var _0x563377=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x563377[_0x3c33('0x19')](_0x1fb43c[_0x3c33('0x18')])){_0x1fb43c['html']=_0x1fb43c['html'][_0x3c33('0x1a')](_0x563377,'');}if(_0x1fb43c[_0x3c33('0x18')]['includes'](_0x3c33('0x1b'))){var _0x1f08a5=[];_0x1fb43c['attachments'][_0x3c33('0x1c')](_0x3196a7=>{_0x1f08a5['push'](_0x3196a7[_0x3c33('0x1d')]);});var _0x14d2c8=/<img.*? _SRC(.*?)[^>]+>/g;var _0xc5f16c=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x105176=_0x1fb43c[_0x3c33('0x18')][_0x3c33('0x1a')](_0xc5f16c,'_SRC');var _0x493f96=_0x105176[_0x3c33('0x1a')](_0x14d2c8,_0x3c33('0x1e'));for(let _0x2176da=0x0;_0x2176da<_0x1f08a5[_0x3c33('0x11')];_0x2176da++){var _0xa239ed=_0x493f96[_0x3c33('0x1a')](_0x3c33('0x1e'),_0x3c33('0x1f')+_0x1f08a5[_0x2176da]+'\x20]</span>');_0x493f96=_0xa239ed;}_0x1fb43c['html']=_0x493f96;}_0x1617fa[_0x3c33('0x20')]=_0x1fb43c['html'];}else{_0x1617fa[_0x3c33('0x20')]=_0x1fb43c[_0x3c33('0x21')];}if(_0x1617fa[_0x3c33('0x20')]){_0x1617fa[_0x3c33('0x20')]=_0x1617fa[_0x3c33('0x20')][_0x3c33('0x1a')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x1fb43c['to']){_0x1617fa['message'][_0x3c33('0x22')]=getMails(null,_0x1fb43c['to']);var _0xf06cbc=getMails(_0xb7ca7a[_0x3c33('0x23')],_0x1fb43c['to']);if(!_[_0x3c33('0x17')](_0xf06cbc)){_0x1617fa[_0x3c33('0x24')]['cc']+=_0xf06cbc;}}if(_0x1fb43c['cc']){_0x1617fa[_0x3c33('0x24')][_0x3c33('0x25')]=getMails(null,_0x1fb43c['cc']);var _0x4602ea=getMails(_0xb7ca7a[_0x3c33('0x23')],_0x1fb43c['cc']);if(!_[_0x3c33('0x17')](_0x4602ea)){if(!_[_0x3c33('0x17')](_0x1617fa[_0x3c33('0x24')]['cc'])){_0x1617fa[_0x3c33('0x24')]['cc']+=',';}_0x1617fa[_0x3c33('0x24')]['cc']+=_0x4602ea;}}if(!_[_0x3c33('0x26')](_0x1617fa[_0x3c33('0x24')]['originTo'],_0xb7ca7a[_0x3c33('0x23')])&&!_[_0x3c33('0x26')](_0x1617fa[_0x3c33('0x24')][_0x3c33('0x25')],_0xb7ca7a['email'])){_0x1617fa[_0x3c33('0x24')][_0x3c33('0x27')]=_0xb7ca7a[_0x3c33('0x23')];}if(_0x1fb43c['attachments']&&_0x1fb43c[_0x3c33('0x28')][_0x3c33('0x11')]){_0x1617fa[_0x3c33('0x24')]['attach']=_0x1fb43c[_0x3c33('0x28')][_0x3c33('0x11')];for(var _0x443c47=0x0,_0x377c0a,_0x30025b,_0x7a0b63;_0x443c47<_0x1fb43c[_0x3c33('0x28')][_0x3c33('0x11')];_0x443c47+=0x1){if(_0x1fb43c[_0x3c33('0x28')][_0x443c47][_0x3c33('0x29')]===_0x3c33('0x2a')){_0x7a0b63=_0x1fb43c['attachments'][_0x443c47]['filename']||'attachment-'+_0x443c47;_0x377c0a=util[_0x3c33('0x2b')](_0x3c33('0x2c'),Date[_0x3c33('0x2d')](),_0x7a0b63);_0x30025b=path[_0x3c33('0x13')](config[_0x3c33('0x2e')],_0x3c33('0x2f'),_0x377c0a);fs['writeFileSync'](_0x30025b,_0x1fb43c[_0x3c33('0x28')][_0x443c47]['content']);_0x1617fa[_0x3c33('0x24')][_0x3c33('0x28')][_0x3c33('0x30')]({'name':_0x7a0b63,'basename':_0x377c0a,'type':_0x1fb43c[_0x3c33('0x28')][_0x443c47][_0x3c33('0x31')],'filepath':_0x30025b});}}}if(_0x1fb43c[_0x3c33('0x32')]&&_0x1fb43c[_0x3c33('0x32')][_0x3c33('0x11')]>0x0){var _0x5c312b=[_0x3c33('0x33'),_0x3c33('0x34'),'Precedence:\x20auto_reply'];for(var _0x1c2a05=0x0;_0x1c2a05<_0x1fb43c[_0x3c33('0x32')][_0x3c33('0x11')];_0x1c2a05++){var _0x349a08=_[_0x3c33('0x10')](_0x5c312b,_0x1fb43c['headerLines'][_0x1c2a05][_0x3c33('0x35')]);if(_0x349a08>=0x0){_0x1617fa[_0x3c33('0x36')]=!![];}}}return _0x1617fa;}exports[_0x3c33('0x37')]=function(_0x1bbdfa,_0x1a4607,_0x10f56f){var _0x3d52d9={'from':getAddress(_0x1a4607['from']),'firstName':getFirstName(_0x1a4607['from']),'lastName':getLastName(_0x1a4607['from']),'mapKey':_0x3c33('0x23'),'message':{'from':getMails(_0x1bbdfa[_0x3c33('0x23')],_0x1a4607['from']),'to':_0x1bbdfa[_0x3c33('0x23')],'cc':'','subject':_0x1a4607['subject']||'','messageId':_0x1a4607[_0x3c33('0x38')],'inReplyTo':_0x1a4607[_0x3c33('0x39')],'sentAt':moment(_0x1a4607['date'])[_0x3c33('0x2b')](_0x3c33('0x3a')),'attach':![],'attachments':[]}};if(!_0x1a4607[_0x3c33('0x18')]&&!_0x1a4607[_0x3c33('0x21')]){var _0x4ef554=_[_0x3c33('0x3b')](_0x1a4607[_0x3c33('0x28')],{'contentType':_0x3c33('0x3c')});if(_0x4ef554[_0x3c33('0x11')]){logger[_0x3c33('0x3d')](util[_0x3c33('0x2b')](_0x3c33('0x3e'),_0x1a4607[_0x3c33('0x38')]));tnef[_0x3c33('0x3f')](_[_0x3c33('0x40')](_0x4ef554)[_0x3c33('0x41')],function(_0x152d61,_0x3eeb5a){if(_0x3eeb5a){_0x1a4607[_0x3c33('0x18')]=_0x3eeb5a[_0x3c33('0x42')]||_0x3c33('0x43');if(_0x3eeb5a[_0x3c33('0x44')]){for(var _0x323360=0x0;_0x323360<_0x3eeb5a['Attachments'][_0x3c33('0x11')];_0x323360++){var _0xa2266d=_0x3eeb5a[_0x3c33('0x44')][_0x323360];_0x3d52d9['message'][_0x3c33('0x28')][_0x3c33('0x30')]({'filename':_0xa2266d[_0x3c33('0x45')],'content':Buffer[_0x3c33('0x46')](_0xa2266d[_0x3c33('0x47')])});}}}_0x10f56f(parseEmail(_0x1bbdfa,_0x1a4607,_0x3d52d9));});}else{_0x1a4607[_0x3c33('0x18')]='<p>Empty\x20message</p>';_0x10f56f(parseEmail(_0x1bbdfa,_0x1a4607,_0x3d52d9));}}else{_0x10f56f(parseEmail(_0x1bbdfa,_0x1a4607,_0x3d52d9));}};exports[_0x3c33('0x48')]=function(_0x20b497,_0x3db490){var _0x1d3c83=[_0x3c33('0x49')+(_0x3db490||''),_0x3c33('0x4a')+_0x20b497,'',''];return Buffer['from'](_0x1d3c83['join']('\ 1'),_0x3c33('0x4b'))[_0x3c33('0x4c')](_0x3c33('0x4d'));};
\ No newline at end of file
index 4a0d0d6..082a78d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe752=['key','SERV','active','Imap','Smtp','lodash','name','Service'];(function(_0x430959,_0x11e7fd){var _0x2ad6ce=function(_0x1f6b66){while(--_0x1f6b66){_0x430959['push'](_0x430959['shift']());}};_0x2ad6ce(++_0x11e7fd);}(_0xe752,0x7d));var _0x2e75=function(_0xa22aeb,_0x5864d0){_0xa22aeb=_0xa22aeb-0x0;var _0x361646=_0xe752[_0xa22aeb];return _0x361646;};'use strict';var _=require(_0x2e75('0x0'));function MailAccount(_0x101d5){this['id']=_0x101d5['id']||0x0;this[_0x2e75('0x1')]=_0x101d5[_0x2e75('0x1')]||_0x2e75('0x2');this[_0x2e75('0x3')]=_0x101d5['key']||_0x2e75('0x4');this['active']=_0x101d5[_0x2e75('0x5')]||![];this[_0x2e75('0x6')]=_0x101d5[_0x2e75('0x6')]||[];this[_0x2e75('0x7')]=_0x101d5['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x57e5=['Imap','Smtp','exports','lodash','name','key','SERV','active'];(function(_0x28e8df,_0x31367c){var _0x561dbf=function(_0x2950a7){while(--_0x2950a7){_0x28e8df['push'](_0x28e8df['shift']());}};_0x561dbf(++_0x31367c);}(_0x57e5,0x14b));var _0x557e=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x57e5[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x557e('0x0'));function MailAccount(_0x90651c){this['id']=_0x90651c['id']||0x0;this[_0x557e('0x1')]=_0x90651c[_0x557e('0x1')]||'Service';this[_0x557e('0x2')]=_0x90651c[_0x557e('0x2')]||_0x557e('0x3');this[_0x557e('0x4')]=_0x90651c[_0x557e('0x4')]||![];this[_0x557e('0x5')]=_0x90651c['Imap']||[];this[_0x557e('0x6')]=_0x90651c['Smtp']||[];}module[_0x557e('0x7')]=MailAccount;
\ No newline at end of file
index f53b872..fc72b1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c51=['mergeFromDatabase','initMailAccounts','length','isUndefined','merge','exports','lodash','mailAccounts','hasOwnProperty','prototype'];(function(_0x3a0baa,_0x17ea69){var _0x50ce69=function(_0x39d045){while(--_0x39d045){_0x3a0baa['push'](_0x3a0baa['shift']());}};_0x50ce69(++_0x17ea69);}(_0x5c51,0x6a));var _0x15c5=function(_0x28be72,_0x2b83af){_0x28be72=_0x28be72-0x0;var _0x46c5da=_0x5c51[_0x28be72];return _0x46c5da;};'use strict';var _=require(_0x15c5('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x15c5('0x1')]={};};function freeIsNotKey(_0x53e190,_0x1320ad,_0x1090eb){var _0x5a0b2e=_['mapKeys'](_0x53e190,function(_0x254667,_0x3c3417){return _0x254667[_0x1090eb];});for(var _0x1c6232 in _0x1320ad){if(_0x1320ad[_0x15c5('0x2')](_0x1c6232)){if(!_0x5a0b2e[_0x1c6232]){delete _0x1320ad[_0x1c6232];}}}}Realtime[_0x15c5('0x3')][_0x15c5('0x4')]=function(_0x255b6b,_0x2d54f8){for(var _0x253058 in _0x2d54f8){if(_0x255b6b['hasOwnProperty'](_0x253058)){_0x255b6b[_0x253058]=_0x2d54f8[_0x253058];}}};Realtime['prototype'][_0x15c5('0x5')]=function(){var _0x22411a=this;return function(_0x802bad){if(_0x802bad){freeIsNotKey(_0x802bad,_0x22411a['mailAccounts'],'id');for(var _0x1af2c5=0x0,_0x332a9e={},_0x43d160={};_0x1af2c5<_0x802bad[_0x15c5('0x6')];_0x1af2c5+=0x1){_0x332a9e=_0x802bad[_0x1af2c5];if(_[_0x15c5('0x7')](_0x22411a[_0x15c5('0x1')][_0x332a9e['id']])){_0x22411a[_0x15c5('0x1')][_0x332a9e['id']]=new MailAccount(_0x332a9e);}else{_[_0x15c5('0x8')](_0x22411a[_0x15c5('0x1')][_0x332a9e['id']],_0x332a9e);}}}return _0x22411a[_0x15c5('0x1')];};};module[_0x15c5('0x9')]=Realtime;
\ No newline at end of file
+var _0xea76=['../model/mailAccount','mapKeys','mergeFromDatabase','hasOwnProperty','prototype','initMailAccounts','mailAccounts','length','isUndefined','merge','exports','lodash'];(function(_0x411b14,_0x3f9e36){var _0x402736=function(_0x2be12e){while(--_0x2be12e){_0x411b14['push'](_0x411b14['shift']());}};_0x402736(++_0x3f9e36);}(_0xea76,0x6b));var _0x6ea7=function(_0x10f08a,_0x286b40){_0x10f08a=_0x10f08a-0x0;var _0x576c65=_0xea76[_0x10f08a];return _0x576c65;};'use strict';var _=require(_0x6ea7('0x0'));var MailAccount=require(_0x6ea7('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x5441b2,_0x2bcd3a,_0x3e2802){var _0x44bec2=_[_0x6ea7('0x2')](_0x5441b2,function(_0x5ce094,_0x46f79e){return _0x5ce094[_0x3e2802];});for(var _0x47410e in _0x2bcd3a){if(_0x2bcd3a['hasOwnProperty'](_0x47410e)){if(!_0x44bec2[_0x47410e]){delete _0x2bcd3a[_0x47410e];}}}}Realtime['prototype'][_0x6ea7('0x3')]=function(_0x4d1b63,_0x2da58c){for(var _0x28998f in _0x2da58c){if(_0x4d1b63[_0x6ea7('0x4')](_0x28998f)){_0x4d1b63[_0x28998f]=_0x2da58c[_0x28998f];}}};Realtime[_0x6ea7('0x5')][_0x6ea7('0x6')]=function(){var _0x3ef997=this;return function(_0xc7f0d9){if(_0xc7f0d9){freeIsNotKey(_0xc7f0d9,_0x3ef997[_0x6ea7('0x7')],'id');for(var _0x5ccb22=0x0,_0x10a113={},_0x15858c={};_0x5ccb22<_0xc7f0d9[_0x6ea7('0x8')];_0x5ccb22+=0x1){_0x10a113=_0xc7f0d9[_0x5ccb22];if(_[_0x6ea7('0x9')](_0x3ef997['mailAccounts'][_0x10a113['id']])){_0x3ef997[_0x6ea7('0x7')][_0x10a113['id']]=new MailAccount(_0x10a113);}else{_[_0x6ea7('0xa')](_0x3ef997[_0x6ea7('0x7')][_0x10a113['id']],_0x10a113);}}}return _0x3ef997[_0x6ea7('0x7')];};};module[_0x6ea7('0xb')]=Realtime;
\ No newline at end of file
index ff81427..c94bc69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03e2=['key','TemplateId','MailServerIn','CloudProvider','type','data5','Smtp','getMailAccount','notify','getMailAccounts','Request','GetMailAccount','name','provider','service','email','active'];(function(_0xd18919,_0x3479c7){var _0x3b7803=function(_0x3fb2fb){while(--_0x3fb2fb){_0xd18919['push'](_0xd18919['shift']());}};_0x3b7803(++_0x3479c7);}(_0x03e2,0x119));var _0x203e=function(_0x5b0f2b,_0x2a0369){_0x5b0f2b=_0x5b0f2b-0x0;var _0xcbf346=_0x03e2[_0x5b0f2b];return _0xcbf346;};'use strict';var client=require('../client');exports[_0x203e('0x0')]=function(){return function(){return client[_0x203e('0x1')](_0x203e('0x2'),{'options':{'attributes':['id',_0x203e('0x3'),_0x203e('0x4'),_0x203e('0x5'),_0x203e('0x6'),_0x203e('0x7'),_0x203e('0x8'),'ListId',_0x203e('0x9')],'raw':![],'include':[{'model':_0x203e('0xa'),'as':'Imap','include':[{'model':_0x203e('0xb'),'attributes':['id',_0x203e('0x3'),'service',_0x203e('0xc'),_0x203e('0xd')],'as':_0x203e('0xb')}]},{'model':'MailServerOut','as':_0x203e('0xe'),'include':[{'model':_0x203e('0xb'),'attributes':['id',_0x203e('0x3'),_0x203e('0x5'),_0x203e('0xc'),'data5'],'as':_0x203e('0xb')}]}]},'log':_0x203e('0xf')});};};exports[_0x203e('0x10')]=function(_0x21f508,_0x380143){return client[_0x203e('0x1')]('NotifyMailAccount',{'account':{'id':_0x21f508},'body':_0x380143,'log':'NotifyMailAccount'});};
\ No newline at end of file
+var _0xcd2f=['ListId','MailServerIn','Imap','CloudProvider','type','data5','MailServerOut','Smtp','getMailAccount','NotifyMailAccount','GetMailAccount','name','provider','service','email','active','key'];(function(_0x1fc122,_0x5e2c17){var _0xa2cb13=function(_0x263b13){while(--_0x263b13){_0x1fc122['push'](_0x1fc122['shift']());}};_0xa2cb13(++_0x5e2c17);}(_0xcd2f,0xf8));var _0xfcd2=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0xcd2f[_0x278e3c];return _0x3e2d9b;};'use strict';var client=require('../client');exports['getMailAccounts']=function(){return function(){return client['Request'](_0xfcd2('0x0'),{'options':{'attributes':['id',_0xfcd2('0x1'),_0xfcd2('0x2'),_0xfcd2('0x3'),_0xfcd2('0x4'),_0xfcd2('0x5'),_0xfcd2('0x6'),_0xfcd2('0x7'),'TemplateId'],'raw':![],'include':[{'model':_0xfcd2('0x8'),'as':_0xfcd2('0x9'),'include':[{'model':_0xfcd2('0xa'),'attributes':['id',_0xfcd2('0x1'),_0xfcd2('0x3'),_0xfcd2('0xb'),_0xfcd2('0xc')],'as':_0xfcd2('0xa')}]},{'model':_0xfcd2('0xd'),'as':_0xfcd2('0xe'),'include':[{'model':_0xfcd2('0xa'),'attributes':['id','name',_0xfcd2('0x3'),_0xfcd2('0xb'),_0xfcd2('0xc')],'as':_0xfcd2('0xa')}]}]},'log':_0xfcd2('0xf')});};};exports['notify']=function(_0x4fb319,_0x4791e9){return client['Request']('NotifyMailAccount',{'account':{'id':_0x4fb319},'body':_0x4791e9,'log':_0xfcd2('0x10')});};
\ No newline at end of file
index 4f6241c..3d914b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x369a=['loginMailFrequency','../client','Request','ShowSetting'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x369a,0x141));var _0xa369=function(_0x5269de,_0xcbdb3c){_0x5269de=_0x5269de-0x0;var _0x2c3168=_0x369a[_0x5269de];return _0x2c3168;};'use strict';var client=require(_0xa369('0x0'));exports['getSettings']=function(){return client[_0xa369('0x1')](_0xa369('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xa369('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x12d1=['ShowSetting','loginMailFrequency','GetSettings','getSettings','Request'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x12d1,0xdf));var _0x112d=function(_0xa7306,_0x3f8744){_0xa7306=_0xa7306-0x0;var _0x23efa3=_0x12d1[_0xa7306];return _0x23efa3;};'use strict';var client=require('../client');exports[_0x112d('0x0')]=function(){return client[_0x112d('0x1')](_0x112d('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x112d('0x3')]},'log':_0x112d('0x4')});};
\ No newline at end of file
index aa6109b..3615485 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'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 ebde186..4301337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaab=['../../config/socketio','default','once','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express','sticky-session','../../config/environment','timeout','listen','port','websocket','polling','redis','localhost','adapter','socket.io-redis','../../config/triggers'];(function(_0x2225bd,_0x408388){var _0x5aea56=function(_0x1f0f43){while(--_0x1f0f43){_0x2225bd['push'](_0x2225bd['shift']());}};_0x5aea56(++_0x408388);}(_0xfaab,0xae));var _0xbfaa=function(_0x330b7b,_0x1b4564){_0x330b7b=_0x330b7b-0x0;var _0x36e764=_0xfaab[_0x330b7b];return _0x36e764;};'use strict';var _=require(_0xbfaa('0x0'));var http=require(_0xbfaa('0x1'));var express=require(_0xbfaa('0x2'));var sticky=require(_0xbfaa('0x3'));var Redis=require('ioredis');var config=require(_0xbfaa('0x4'));var app=express();var server=http['createServer'](app);server[_0xbfaa('0x5')]=0xdbba0;if(sticky[_0xbfaa('0x6')](server,config[_0xbfaa('0x7')])){var socketio=require('socket.io')(server,{'transports':[_0xbfaa('0x8'),_0xbfaa('0x9')]});config[_0xbfaa('0xa')]=_['defaults'](config[_0xbfaa('0xa')],{'host':_0xbfaa('0xb'),'port':0x18eb});socketio[_0xbfaa('0xc')](require(_0xbfaa('0xd'))({'pubClient':new Redis(config[_0xbfaa('0xa')]),'subClient':new Redis(config[_0xbfaa('0xa')])}));require(_0xbfaa('0xe'))['default']();require(_0xbfaa('0xf'))['default'](socketio);require('../../config/express')['default'](app);require('../../routes')[_0xbfaa('0x10')](app);}else{server[_0xbfaa('0x11')]('listening',function(){console[_0xbfaa('0x12')](_0xbfaa('0x13'),config[_0xbfaa('0x7')]);});}exports=module[_0xbfaa('0x14')]=app;
\ No newline at end of file
+var _0x525a=['localhost','adapter','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express','sticky-session','ioredis','../../config/environment','createServer','timeout','port','socket.io','websocket','polling','redis','defaults'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x525a,0x18a));var _0xa525=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x525a[_0x1caf6a];return _0x1bf493;};'use strict';var _=require(_0xa525('0x0'));var http=require(_0xa525('0x1'));var express=require(_0xa525('0x2'));var sticky=require(_0xa525('0x3'));var Redis=require(_0xa525('0x4'));var config=require(_0xa525('0x5'));var app=express();var server=http[_0xa525('0x6')](app);server[_0xa525('0x7')]=0xdbba0;if(sticky['listen'](server,config[_0xa525('0x8')])){var socketio=require(_0xa525('0x9'))(server,{'transports':[_0xa525('0xa'),_0xa525('0xb')]});config[_0xa525('0xc')]=_[_0xa525('0xd')](config[_0xa525('0xc')],{'host':_0xa525('0xe'),'port':0x18eb});socketio[_0xa525('0xf')](require('socket.io-redis')({'pubClient':new Redis(config[_0xa525('0xc')]),'subClient':new Redis(config[_0xa525('0xc')])}));require(_0xa525('0x10'))[_0xa525('0x11')]();require(_0xa525('0x12'))[_0xa525('0x11')](socketio);require(_0xa525('0x13'))[_0xa525('0x11')](app);require(_0xa525('0x14'))[_0xa525('0x11')](app);}else{server['once'](_0xa525('0x15'),function(){console['log'](_0xa525('0x16'),config[_0xa525('0x8')]);});}exports=module[_0xa525('0x17')]=app;
\ No newline at end of file
index 65c6978..f22c20d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2be3=['debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','then'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2be3,0x9d));var _0x32be=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x2be3[_0x4baae2];return _0x1a2285;};'use strict';var jayson=require(_0x32be('0x0'));var BPromise=require(_0x32be('0x1'));var logger=require(_0x32be('0x2'))(_0x32be('0x3'));var client=jayson[_0x32be('0x4')][_0x32be('0x5')]({'port':0x2329});client[_0x32be('0x6')]=function(_0x2ff265,_0x58d2c9){return new BPromise(function(_0x4164fa,_0x341fe1){return client['request'](_0x2ff265,_0x58d2c9)[_0x32be('0x7')](function(_0x496e74){logger[_0x32be('0x8')](_0x32be('0x9'),_0x32be('0x3'),_0x2ff265,_0x58d2c9,_0x496e74);if(_0x496e74[_0x32be('0xa')]){logger['error']('rpc',_0x32be('0x3'),_0x2ff265,_0x496e74['error']['message'],_0x58d2c9);return _0x341fe1(_0x496e74[_0x32be('0xa')][_0x32be('0xb')]);}else{return _0x4164fa(_0x496e74[_0x32be('0xc')]);}})[_0x32be('0xd')](function(_0xbdb2a9){logger['error'](_0x32be('0x9'),_0x32be('0x3'),_0x2ff265,_0xbdb2a9,_0x58d2c9);return _0x341fe1(_0xbdb2a9);});});};module[_0x32be('0xe')]=client;
\ No newline at end of file
+var _0x8342=['exports','bluebird','../../config/logger','routing','client','http','Request','then','debug','rpc','error','message','result','catch'];(function(_0x7aa0b0,_0x260e94){var _0x44f513=function(_0x2aefc4){while(--_0x2aefc4){_0x7aa0b0['push'](_0x7aa0b0['shift']());}};_0x44f513(++_0x260e94);}(_0x8342,0x8d));var _0x2834=function(_0x1785e8,_0x492aac){_0x1785e8=_0x1785e8-0x0;var _0x5e6021=_0x8342[_0x1785e8];return _0x5e6021;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x2834('0x0'));var logger=require(_0x2834('0x1'))(_0x2834('0x2'));var client=jayson[_0x2834('0x3')][_0x2834('0x4')]({'port':0x2329});client[_0x2834('0x5')]=function(_0xe8245,_0x505199){return new BPromise(function(_0x477fb1,_0x54343b){return client['request'](_0xe8245,_0x505199)[_0x2834('0x6')](function(_0x5c5725){logger[_0x2834('0x7')](_0x2834('0x8'),'routing',_0xe8245,_0x505199,_0x5c5725);if(_0x5c5725[_0x2834('0x9')]){logger[_0x2834('0x9')](_0x2834('0x8'),_0x2834('0x2'),_0xe8245,_0x5c5725[_0x2834('0x9')][_0x2834('0xa')],_0x505199);return _0x54343b(_0x5c5725['error'][_0x2834('0xa')]);}else{return _0x477fb1(_0x5c5725[_0x2834('0xb')]);}})[_0x2834('0xc')](function(_0x597be1){logger['error'](_0x2834('0x8'),_0x2834('0x2'),_0xe8245,_0x597be1,_0x505199);return _0x54343b(_0x597be1);});});};module[_0x2834('0xd')]=client;
\ No newline at end of file
index 8b54ac5..a8b5e1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d2e=['getWhatsappQueues','initWhatsappQueues','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','getAgents','then','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1d2e,0x109));var _0xe1d2=function(_0x8e0d6c,_0x2f0a30){_0x8e0d6c=_0x8e0d6c-0x0;var _0x4924a4=_0x1d2e[_0x8e0d6c];return _0x4924a4;};'use strict';var BPromise=require(_0xe1d2('0x0'));var server=require(_0xe1d2('0x1'));var Realtime=require(_0xe1d2('0x2'));var user=require(_0xe1d2('0x3'));var interval=require('./rpc/interval');var openchannelQueue=require(_0xe1d2('0x4'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0xe1d2('0x5'));var mailQueue=require(_0xe1d2('0x6'));var faxQueue=require(_0xe1d2('0x7'));var whatsappQueue=require(_0xe1d2('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xe1d2('0x9')]()['then'](user[_0xe1d2('0xa')]())[_0xe1d2('0xb')](realtime[_0xe1d2('0xc')]())[_0xe1d2('0xb')](interval[_0xe1d2('0xd')]())[_0xe1d2('0xb')](realtime[_0xe1d2('0xe')]())[_0xe1d2('0xb')](openchannelQueue[_0xe1d2('0xf')]())[_0xe1d2('0xb')](realtime[_0xe1d2('0x10')]())[_0xe1d2('0xb')](chatQueue[_0xe1d2('0x11')]())[_0xe1d2('0xb')](realtime[_0xe1d2('0x12')]())['then'](smsQueue[_0xe1d2('0x13')]())['then'](realtime[_0xe1d2('0x14')]())[_0xe1d2('0xb')](mailQueue[_0xe1d2('0x15')]())[_0xe1d2('0xb')](realtime[_0xe1d2('0x16')]())[_0xe1d2('0xb')](faxQueue[_0xe1d2('0x17')]())['then'](realtime[_0xe1d2('0x18')]())['then'](whatsappQueue[_0xe1d2('0x19')]())[_0xe1d2('0xb')](realtime[_0xe1d2('0x1a')]())[_0xe1d2('0xb')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0xe1d2('0xb')](function(_0x54c66a){return initRealtime();})['then'](function(_0x2bd40f){return setInterval(initRealtime,0x1388);})[_0xe1d2('0x1b')](function(_0x4a236a){console[_0xe1d2('0x1c')](_0x4a236a);});}main();
\ No newline at end of file
+var _0x5a24=['getAgents','then','initAgents','getIntervals','initIntervals','getOpenchannelQueues','getChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getWhatsappQueues','initWhatsappQueues','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve'];(function(_0x17957c,_0x2314ea){var _0x164ef9=function(_0x38f7b7){while(--_0x38f7b7){_0x17957c['push'](_0x17957c['shift']());}};_0x164ef9(++_0x2314ea);}(_0x5a24,0x109));var _0x45a2=function(_0x44c694,_0x2358bf){_0x44c694=_0x44c694-0x0;var _0x404954=_0x5a24[_0x44c694];return _0x404954;};'use strict';var BPromise=require(_0x45a2('0x0'));var server=require(_0x45a2('0x1'));var Realtime=require(_0x45a2('0x2'));var user=require(_0x45a2('0x3'));var interval=require(_0x45a2('0x4'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x45a2('0x5'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0x45a2('0x6'));var faxQueue=require(_0x45a2('0x7'));var whatsappQueue=require(_0x45a2('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x45a2('0x9')]()['then'](user[_0x45a2('0xa')]())[_0x45a2('0xb')](realtime[_0x45a2('0xc')]())[_0x45a2('0xb')](interval[_0x45a2('0xd')]())[_0x45a2('0xb')](realtime[_0x45a2('0xe')]())['then'](openchannelQueue[_0x45a2('0xf')]())[_0x45a2('0xb')](realtime['initOpenchannelQueues']())[_0x45a2('0xb')](chatQueue[_0x45a2('0x10')]())[_0x45a2('0xb')](realtime['initChatQueues']())[_0x45a2('0xb')](smsQueue[_0x45a2('0x11')]())[_0x45a2('0xb')](realtime[_0x45a2('0x12')]())[_0x45a2('0xb')](mailQueue[_0x45a2('0x13')]())[_0x45a2('0xb')](realtime[_0x45a2('0x14')]())[_0x45a2('0xb')](faxQueue['getFaxQueues']())[_0x45a2('0xb')](realtime['initFaxQueues']())['then'](whatsappQueue[_0x45a2('0x15')]())[_0x45a2('0xb')](realtime[_0x45a2('0x16')]())[_0x45a2('0xb')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x45a2('0xb')](function(_0x1d589e){return initRealtime();})[_0x45a2('0xb')](function(_0x1a5e71){return setInterval(initRealtime,0x1388);})[_0x45a2('0x17')](function(_0x40a10c){console[_0x45a2('0x18')](_0x40a10c);});}main();
\ No newline at end of file
index abce6c8..9063839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x56eb89,_0xa70f63){var _0x237f9d=function(_0xee35df){while(--_0xee35df){_0x56eb89['push'](_0x56eb89['shift']());}};_0x237f9d(++_0xa70f63);}(_0x814b,0x1a2));var _0xb814=function(_0x4c825d,_0x10ec2b){_0x4c825d=_0x4c825d-0x0;var _0x43de87=_0x814b[_0x4c825d];return _0x43de87;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x14735c,_0x56c131){var _0x44e4f4=function(_0x5d565f){while(--_0x5d565f){_0x14735c['push'](_0x14735c['shift']());}};_0x44e4f4(++_0x56c131);}(_0x326f,0xd1));var _0xf326=function(_0x4f7ee3,_0x38e927){_0x4f7ee3=_0x4f7ee3-0x0;var _0x3e3f99=_0x326f[_0x4f7ee3];return _0x3e3f99;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
index 5849ad1..eaeece9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb82=['error','result','sendMailMessage','SendMail','bluebird','jayson/promise','client','then'];(function(_0x38aa4e,_0x35df0d){var _0x56f178=function(_0x20fb2f){while(--_0x20fb2f){_0x38aa4e['push'](_0x38aa4e['shift']());}};_0x56f178(++_0x35df0d);}(_0xdb82,0x1a4));var _0x2db8=function(_0x5bd6cd,_0x4cac39){_0x5bd6cd=_0x5bd6cd-0x0;var _0x2144f4=_0xdb82[_0x5bd6cd];return _0x2144f4;};'use strict';var BPromise=require(_0x2db8('0x0'));var jayson=require(_0x2db8('0x1'));var client=jayson[_0x2db8('0x2')]['http']({'port':0x232b});function request(_0xb9be3f,_0x10d69f){return new BPromise(function(_0x1b102a,_0x3e3592){return client['request'](_0xb9be3f,_0x10d69f)[_0x2db8('0x3')](function(_0x1664a1){if(_0x1664a1['error']){return _0x3e3592(_0x1664a1[_0x2db8('0x4')]['message']);}else{return _0x1b102a(_0x1664a1[_0x2db8('0x5')]);}})['catch'](function(_0x2df7ae){return _0x3e3592(_0x2df7ae);});});}exports[_0x2db8('0x6')]=function(_0x3fe940,_0x52bebc){return request(_0x2db8('0x7'),{'account':_0x3fe940,'message':_0x52bebc});};
\ No newline at end of file
+var _0x8368=['client','http','request','then','result','catch','sendMailMessage','bluebird','jayson/promise'];(function(_0x3d6f7a,_0x3da829){var _0x8ac6e7=function(_0x47d1c4){while(--_0x47d1c4){_0x3d6f7a['push'](_0x3d6f7a['shift']());}};_0x8ac6e7(++_0x3da829);}(_0x8368,0x154));var _0x8836=function(_0x124d5d,_0x19a1ad){_0x124d5d=_0x124d5d-0x0;var _0x37359a=_0x8368[_0x124d5d];return _0x37359a;};'use strict';var BPromise=require(_0x8836('0x0'));var jayson=require(_0x8836('0x1'));var client=jayson[_0x8836('0x2')][_0x8836('0x3')]({'port':0x232b});function request(_0x57cedd,_0x366164){return new BPromise(function(_0x51a546,_0x4b72d4){return client[_0x8836('0x4')](_0x57cedd,_0x366164)[_0x8836('0x5')](function(_0x4659c2){if(_0x4659c2['error']){return _0x4b72d4(_0x4659c2['error']['message']);}else{return _0x51a546(_0x4659c2[_0x8836('0x6')]);}})[_0x8836('0x7')](function(_0x17100c){return _0x4b72d4(_0x17100c);});});}exports[_0x8836('0x8')]=function(_0x2fc6e0,_0x1514b1){return request('SendMail',{'account':_0x2fc6e0,'message':_0x1514b1});};
\ No newline at end of file
index 36c1c81..bd4811a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','md5','chatWaitingInteractions','faxWaitingInteractions','openchannelWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','length','StatusTime','Status','faxStatusTime','whatsappStatus','whatsappCurrentCapacity','mailWaitingInteractions','stringify','omit','exports','lodash','moment'];(function(_0x547294,_0x3cd6d3){var _0x2268fc=function(_0x3c3c7e){while(--_0x3c3c7e){_0x547294['push'](_0x547294['shift']());}};_0x2268fc(++_0x3cd6d3);}(_0x4975,0x86));var _0x5497=function(_0x5adf2d,_0x1d5dbc){_0x5adf2d=_0x5adf2d-0x0;var _0x58cd35=_0x4975[_0x5adf2d];return _0x58cd35;};'use strict';var _=require(_0x5497('0x0'));var md5=require('md5');var moment=require(_0x5497('0x1'));var Redis=require(_0x5497('0x2'));var config=require(_0x5497('0x3'));config[_0x5497('0x4')]=_[_0x5497('0x5')](config[_0x5497('0x4')],{'host':_0x5497('0x6'),'port':0x18eb});var io=require(_0x5497('0x7'))(new Redis(config[_0x5497('0x4')]));function Agent(_0x5d5272){this['id']=_0x5d5272['id']||0x0;this['name']=_0x5d5272[_0x5497('0x8')]||'';this['online']=_0x5d5272[_0x5497('0x9')]||!![];this[_0x5497('0xa')]=_0x5d5272[_0x5497('0xa')]||![];this['chatPause']=_0x5d5272[_0x5497('0xb')]||![];this['mailPause']=_0x5d5272[_0x5497('0xc')]||![];this[_0x5497('0xd')]=_0x5d5272[_0x5497('0xd')]||![];this[_0x5497('0xe')]=_0x5d5272[_0x5497('0xe')]||![];this[_0x5497('0xf')]=_0x5d5272[_0x5497('0xf')]||![];this[_0x5497('0x10')]='unknown';this['chatStatusTime']=0x0;this['chatCapacity']=_0x5d5272[_0x5497('0x11')]||0x0;this[_0x5497('0x12')]=0x0;this[_0x5497('0x13')]=_0x5497('0x14');this[_0x5497('0x15')]=0x0;this[_0x5497('0x16')]=_0x5d5272[_0x5497('0x16')]||0x0;this[_0x5497('0x17')]=0x0;this[_0x5497('0x18')]=_0x5497('0x14');this['faxStatusTime']=0x0;this[_0x5497('0x19')]=_0x5d5272['faxCapacity']||0x0;this[_0x5497('0x1a')]=0x0;this[_0x5497('0x1b')]=_0x5497('0x14');this[_0x5497('0x1c')]=0x0;this[_0x5497('0x1d')]=_0x5d5272[_0x5497('0x1d')]||0x0;this[_0x5497('0x1e')]=0x0;this['whatsappStatus']='unknown';this[_0x5497('0x1f')]=0x0;this[_0x5497('0x20')]=_0x5d5272[_0x5497('0x20')]||0x0;this['whatsappCurrentCapacity']=0x0;this[_0x5497('0x21')]=_0x5497('0x14');this[_0x5497('0x22')]=0x0;this[_0x5497('0x23')]=_0x5d5272[_0x5497('0x23')]||0x0;this[_0x5497('0x24')]=0x0;this[_0x5497('0x25')]=![];this[_0x5497('0x26')]=undefined;this[_0x5497('0x27')]='';this[_0x5497('0x28')]={};this[_0x5497('0x29')]={};this['mailWaitingInteractions']={};this[_0x5497('0x2a')]={};this['smsWaitingInteractions']={};this[_0x5497('0x2b')]={};this[_0x5497('0x2c')]();}Agent[_0x5497('0x2d')][_0x5497('0x2e')]=function(_0x35ecd9){if(this[_0x35ecd9+_0x5497('0x2f')]>0x0){if(this[_0x35ecd9+'Capacity']>0x0&&this[_0x35ecd9+'CurrentCapacity']>=this[_0x35ecd9+_0x5497('0x30')]){return _0x5497('0x31');}else{return _0x5497('0x32');}}else{return _0x5497('0x33');}};Agent['prototype'][_0x5497('0x2c')]=function(){var _0x57268c=[_0x5497('0x34'),_0x5497('0x35'),_0x5497('0x36'),_0x5497('0x37'),_0x5497('0x38'),_0x5497('0x39')];for(var _0x48b835=0x0;_0x48b835<_0x57268c[_0x5497('0x3a')];_0x48b835+=0x1){var _0x5406e2=this['getChannelStatus'](_0x57268c[_0x48b835]);if(this[_0x57268c[_0x48b835]+'Status']!==_0x5406e2){this[_0x57268c[_0x48b835]+_0x5497('0x3b')]=_['toNumber'](moment()['format']('x'));}this[_0x57268c[_0x48b835]+_0x5497('0x3c')]=_0x5406e2;}var _0xb14593={'id':this['id'],'name':this[_0x5497('0x8')],'online':this['online'],'voicePause':this['voicePause'],'chatPause':this['chatPause'],'mailPause':this[_0x5497('0xc')],'smsPause':this[_0x5497('0xe')],'faxPause':this[_0x5497('0xd')],'openchannelPause':this['openchannelPause'],'chatStatus':this['chatStatus'],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0x5497('0x11')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x5497('0x13')],'mailStatusTime':this[_0x5497('0x15')],'mailCapacity':this[_0x5497('0x16')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x5497('0x18')],'faxStatusTime':this[_0x5497('0x3d')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x5497('0x1a')],'smsStatus':this[_0x5497('0x1b')],'smsStatusTime':this[_0x5497('0x1c')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x5497('0x1e')],'whatsappStatus':this[_0x5497('0x3e')],'whatsappStatusTime':this[_0x5497('0x1f')],'whatsappCapacity':this[_0x5497('0x20')],'whatsappCurrentCapacity':this[_0x5497('0x3f')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x5497('0x22')],'openchannelCapacity':this[_0x5497('0x23')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0x5497('0x25')],'busyQueue':this[_0x5497('0x26')],'chatWaitingInteractions':this[_0x5497('0x28')],'faxWaitingInteractions':this[_0x5497('0x29')],'mailWaitingInteractions':this[_0x5497('0x40')],'openchannelWaitingInteractions':this[_0x5497('0x2a')],'smsWaitingInteractions':this['smsWaitingInteractions'],'whatsappWaitingInteractions':this[_0x5497('0x2b')]};var _0x5b3990=md5(JSON[_0x5497('0x41')](_0xb14593));if(this[_0x5497('0x27')]!==_0x5b3990){this[_0x5497('0x27')]=_0x5b3990;io['emit']('user:routing:update',_[_0x5497('0x42')](_0xb14593,[_0x5497('0x9')]));}};module[_0x5497('0x43')]=Agent;
\ No newline at end of file
+var _0x3d04=['chatCapacity','chatCurrentCapacity','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','working','mail','chat','fax','sms','whatsapp','length','Status','StatusTime','toNumber','format','online','faxPause','mailStatus','faxStatusTime','smsStatusTime','stringify','emit','omit','exports','lodash','md5','moment','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','voicePause','chatPause','mailPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime'];(function(_0x4fbed1,_0x17f025){var _0x3c4545=function(_0x3430be){while(--_0x3430be){_0x4fbed1['push'](_0x4fbed1['shift']());}};_0x3c4545(++_0x17f025);}(_0x3d04,0xbe));var _0x43d0=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3d04[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x43d0('0x0'));var md5=require(_0x43d0('0x1'));var moment=require(_0x43d0('0x2'));var Redis=require(_0x43d0('0x3'));var config=require(_0x43d0('0x4'));config[_0x43d0('0x5')]=_[_0x43d0('0x6')](config[_0x43d0('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x43d0('0x7'))(new Redis(config[_0x43d0('0x5')]));function Agent(_0x746f5e){this['id']=_0x746f5e['id']||0x0;this[_0x43d0('0x8')]=_0x746f5e['name']||'';this['online']=_0x746f5e['online']||!![];this['voicePause']=_0x746f5e[_0x43d0('0x9')]||![];this[_0x43d0('0xa')]=_0x746f5e[_0x43d0('0xa')]||![];this[_0x43d0('0xb')]=_0x746f5e[_0x43d0('0xb')]||![];this['faxPause']=_0x746f5e['faxPause']||![];this[_0x43d0('0xc')]=_0x746f5e['smsPause']||![];this['openchannelPause']=_0x746f5e[_0x43d0('0xd')]||![];this[_0x43d0('0xe')]=_0x43d0('0xf');this[_0x43d0('0x10')]=0x0;this['chatCapacity']=_0x746f5e[_0x43d0('0x11')]||0x0;this[_0x43d0('0x12')]=0x0;this['mailStatus']=_0x43d0('0xf');this[_0x43d0('0x13')]=0x0;this[_0x43d0('0x14')]=_0x746f5e['mailCapacity']||0x0;this[_0x43d0('0x15')]=0x0;this[_0x43d0('0x16')]=_0x43d0('0xf');this['faxStatusTime']=0x0;this[_0x43d0('0x17')]=_0x746f5e[_0x43d0('0x17')]||0x0;this[_0x43d0('0x18')]=0x0;this[_0x43d0('0x19')]=_0x43d0('0xf');this['smsStatusTime']=0x0;this['smsCapacity']=_0x746f5e[_0x43d0('0x1a')]||0x0;this[_0x43d0('0x1b')]=0x0;this[_0x43d0('0x1c')]='unknown';this[_0x43d0('0x1d')]=0x0;this['whatsappCapacity']=_0x746f5e[_0x43d0('0x1e')]||0x0;this[_0x43d0('0x1f')]=0x0;this[_0x43d0('0x20')]='unknown';this[_0x43d0('0x21')]=0x0;this[_0x43d0('0x22')]=_0x746f5e['openchannelCapacity']||0x0;this[_0x43d0('0x23')]=0x0;this[_0x43d0('0x24')]=![];this[_0x43d0('0x25')]=undefined;this[_0x43d0('0x1')]='';this[_0x43d0('0x26')]={};this[_0x43d0('0x27')]={};this[_0x43d0('0x28')]={};this[_0x43d0('0x29')]={};this[_0x43d0('0x2a')]={};this[_0x43d0('0x2b')]={};this[_0x43d0('0x2c')]();}Agent[_0x43d0('0x2d')][_0x43d0('0x2e')]=function(_0xbc72e6){if(this[_0xbc72e6+_0x43d0('0x2f')]>0x0){if(this[_0xbc72e6+'Capacity']>0x0&&this[_0xbc72e6+_0x43d0('0x2f')]>=this[_0xbc72e6+_0x43d0('0x30')]){return'maxcapacity';}else{return _0x43d0('0x31');}}else{return'idle';}};Agent[_0x43d0('0x2d')][_0x43d0('0x2c')]=function(){var _0x5dd310=[_0x43d0('0x32'),_0x43d0('0x33'),'openchannel',_0x43d0('0x34'),_0x43d0('0x35'),_0x43d0('0x36')];for(var _0x5f16ac=0x0;_0x5f16ac<_0x5dd310[_0x43d0('0x37')];_0x5f16ac+=0x1){var _0x38e89e=this[_0x43d0('0x2e')](_0x5dd310[_0x5f16ac]);if(this[_0x5dd310[_0x5f16ac]+_0x43d0('0x38')]!==_0x38e89e){this[_0x5dd310[_0x5f16ac]+_0x43d0('0x39')]=_[_0x43d0('0x3a')](moment()[_0x43d0('0x3b')]('x'));}this[_0x5dd310[_0x5f16ac]+'Status']=_0x38e89e;}var _0x2b0784={'id':this['id'],'name':this[_0x43d0('0x8')],'online':this[_0x43d0('0x3c')],'voicePause':this['voicePause'],'chatPause':this['chatPause'],'mailPause':this['mailPause'],'smsPause':this[_0x43d0('0xc')],'faxPause':this[_0x43d0('0x3d')],'openchannelPause':this[_0x43d0('0xd')],'chatStatus':this[_0x43d0('0xe')],'chatStatusTime':this[_0x43d0('0x10')],'chatCapacity':this[_0x43d0('0x11')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x43d0('0x3e')],'mailStatusTime':this[_0x43d0('0x13')],'mailCapacity':this[_0x43d0('0x14')],'mailCurrentCapacity':this[_0x43d0('0x15')],'faxStatus':this[_0x43d0('0x16')],'faxStatusTime':this[_0x43d0('0x3f')],'faxCapacity':this[_0x43d0('0x17')],'faxCurrentCapacity':this[_0x43d0('0x18')],'smsStatus':this[_0x43d0('0x19')],'smsStatusTime':this[_0x43d0('0x40')],'smsCapacity':this[_0x43d0('0x1a')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x43d0('0x1c')],'whatsappStatusTime':this[_0x43d0('0x1d')],'whatsappCapacity':this[_0x43d0('0x1e')],'whatsappCurrentCapacity':this[_0x43d0('0x1f')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x43d0('0x21')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x43d0('0x23')],'busy':this[_0x43d0('0x24')],'busyQueue':this['busyQueue'],'chatWaitingInteractions':this[_0x43d0('0x26')],'faxWaitingInteractions':this[_0x43d0('0x27')],'mailWaitingInteractions':this[_0x43d0('0x28')],'openchannelWaitingInteractions':this[_0x43d0('0x29')],'smsWaitingInteractions':this[_0x43d0('0x2a')],'whatsappWaitingInteractions':this[_0x43d0('0x2b')]};var _0x35a375=md5(JSON[_0x43d0('0x41')](_0x2b0784));if(this[_0x43d0('0x1')]!==_0x35a375){this[_0x43d0('0x1')]=_0x35a375;io[_0x43d0('0x42')]('user:routing:update',_[_0x43d0('0x43')](_0x2b0784,[_0x43d0('0x3c')]));}};module[_0x43d0('0x44')]=Agent;
\ No newline at end of file
index 42caa09..748b18a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6c5=['waiting','stringify','format','chat:queue:%s','emit','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','map','_rr','paused','length','online','loggedIn','chatPause','available'];(function(_0x3d2c2b,_0x13c3db){var _0x4d31ca=function(_0x2bbabe){while(--_0x2bbabe){_0x3d2c2b['push'](_0x3d2c2b['shift']());}};_0x4d31ca(++_0x13c3db);}(_0xa6c5,0xdf));var _0x5a6c=function(_0xc09bac,_0x2fecd0){_0xc09bac=_0xc09bac-0x0;var _0x54eb83=_0xa6c5[_0xc09bac];return _0x54eb83;};'use strict';var _=require(_0x5a6c('0x0'));var md5=require(_0x5a6c('0x1'));var util=require(_0x5a6c('0x2'));var Redis=require(_0x5a6c('0x3'));var config=require(_0x5a6c('0x4'));config[_0x5a6c('0x5')]=_[_0x5a6c('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x5a6c('0x7'))(new Redis(config[_0x5a6c('0x5')]));function ChatQueue(_0x2595a7){this['id']=_0x2595a7['id']||0x0;this['name']=_0x2595a7[_0x5a6c('0x8')]||'';this[_0x5a6c('0x9')]=_0x2595a7[_0x5a6c('0x9')]||0xa;this[_0x5a6c('0xa')]=_0x2595a7[_0x5a6c('0xa')]||_0x5a6c('0xb');this[_0x5a6c('0xc')]=_0x2595a7[_0x5a6c('0xc')];this[_0x5a6c('0xd')]={};this['waiting']=0x0;this[_0x5a6c('0x1')]='';this[_0x5a6c('0xe')]();this[_0x5a6c('0xf')]();}ChatQueue[_0x5a6c('0x10')][_0x5a6c('0xe')]=function(){var _0x4524ce=this[_0x5a6c('0xd')]['_rr'];this[_0x5a6c('0xd')]=_[_0x5a6c('0x11')](this[_0x5a6c('0xc')],'id');this[_0x5a6c('0xd')][_0x5a6c('0x12')]=_0x4524ce;};ChatQueue[_0x5a6c('0x10')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x5a6c('0x13')]=0x0;for(var _0x5bd78c=0x0;_0x5bd78c<this[_0x5a6c('0xc')][_0x5a6c('0x14')];_0x5bd78c+=0x1){if(this[_0x5a6c('0xc')][_0x5bd78c][_0x5a6c('0x15')]){this[_0x5a6c('0x16')]+=0x1;}if(this[_0x5a6c('0xc')][_0x5bd78c][_0x5a6c('0x17')]){this['paused']+=0x1;}}this[_0x5a6c('0x18')]=this[_0x5a6c('0x16')]-this['paused'];this[_0x5a6c('0x18')]=this[_0x5a6c('0x18')]>=0x0?this[_0x5a6c('0x18')]:0x0;var _0x8e02d={'id':this['id'],'available':this['available'],'loggedIn':this[_0x5a6c('0x16')],'name':this[_0x5a6c('0x8')],'paused':this[_0x5a6c('0x13')],'waiting':this[_0x5a6c('0x19')]};var _0x536d17=md5(JSON[_0x5a6c('0x1a')](_0x8e02d));if(this['md5']!==_0x536d17){this[_0x5a6c('0x1')]=_0x536d17;io['to'](util[_0x5a6c('0x1b')](_0x5a6c('0x1c'),_0x8e02d[_0x5a6c('0x8')]))[_0x5a6c('0x1d')]('chat_queue:save',_0x8e02d);}};module[_0x5a6c('0x1e')]=ChatQueue;
\ No newline at end of file
+var _0xff73=['map','loggedIn','paused','length','chatPause','available','waiting','stringify','format','chat:queue:%s','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','updateRealtime','prototype','updateRouting','mapAgentsId'];(function(_0x1a4417,_0x4673d3){var _0x463159=function(_0x213688){while(--_0x213688){_0x1a4417['push'](_0x1a4417['shift']());}};_0x463159(++_0x4673d3);}(_0xff73,0x110));var _0x3ff7=function(_0x23e8ee,_0x259afd){_0x23e8ee=_0x23e8ee-0x0;var _0x952c2=_0xff73[_0x23e8ee];return _0x952c2;};'use strict';var _=require(_0x3ff7('0x0'));var md5=require(_0x3ff7('0x1'));var util=require(_0x3ff7('0x2'));var Redis=require(_0x3ff7('0x3'));var config=require(_0x3ff7('0x4'));config[_0x3ff7('0x5')]=_[_0x3ff7('0x6')](config[_0x3ff7('0x5')],{'host':_0x3ff7('0x7'),'port':0x18eb});var io=require(_0x3ff7('0x8'))(new Redis(config[_0x3ff7('0x5')]));function ChatQueue(_0x19fb1b){this['id']=_0x19fb1b['id']||0x0;this[_0x3ff7('0x9')]=_0x19fb1b[_0x3ff7('0x9')]||'';this['timeout']=_0x19fb1b[_0x3ff7('0xa')]||0xa;this[_0x3ff7('0xb')]=_0x19fb1b[_0x3ff7('0xb')]||_0x3ff7('0xc');this[_0x3ff7('0xd')]=_0x19fb1b['Agents'];this['mapAgentsId']={};this['waiting']=0x0;this[_0x3ff7('0x1')]='';this['updateRouting']();this[_0x3ff7('0xe')]();}ChatQueue[_0x3ff7('0xf')][_0x3ff7('0x10')]=function(){var _0x282c2a=this[_0x3ff7('0x11')]['_rr'];this[_0x3ff7('0x11')]=_[_0x3ff7('0x12')](this['Agents'],'id');this[_0x3ff7('0x11')]['_rr']=_0x282c2a;};ChatQueue['prototype'][_0x3ff7('0xe')]=function(){this[_0x3ff7('0x13')]=0x0;this[_0x3ff7('0x14')]=0x0;for(var _0x4a7285=0x0;_0x4a7285<this['Agents'][_0x3ff7('0x15')];_0x4a7285+=0x1){if(this[_0x3ff7('0xd')][_0x4a7285]['online']){this[_0x3ff7('0x13')]+=0x1;}if(this[_0x3ff7('0xd')][_0x4a7285][_0x3ff7('0x16')]){this[_0x3ff7('0x14')]+=0x1;}}this[_0x3ff7('0x17')]=this[_0x3ff7('0x13')]-this[_0x3ff7('0x14')];this[_0x3ff7('0x17')]=this['available']>=0x0?this[_0x3ff7('0x17')]:0x0;var _0x3ad855={'id':this['id'],'available':this[_0x3ff7('0x17')],'loggedIn':this[_0x3ff7('0x13')],'name':this[_0x3ff7('0x9')],'paused':this[_0x3ff7('0x14')],'waiting':this[_0x3ff7('0x18')]};var _0x22f489=md5(JSON[_0x3ff7('0x19')](_0x3ad855));if(this[_0x3ff7('0x1')]!==_0x22f489){this['md5']=_0x22f489;io['to'](util[_0x3ff7('0x1a')](_0x3ff7('0x1b'),_0x3ad855[_0x3ff7('0x9')]))[_0x3ff7('0x1c')]('chat_queue:save',_0x3ad855);}};module['exports']=ChatQueue;
\ No newline at end of file
index 6e66401..92f1ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa289=['paused','length','faxPause','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn'];(function(_0x39412f,_0x295e58){var _0x48e894=function(_0x5692d1){while(--_0x5692d1){_0x39412f['push'](_0x39412f['shift']());}};_0x48e894(++_0x295e58);}(_0xa289,0x190));var _0x9a28=function(_0x502d0c,_0x109a25){_0x502d0c=_0x502d0c-0x0;var _0x1a95bc=_0xa289[_0x502d0c];return _0x1a95bc;};'use strict';var _=require('lodash');var md5=require(_0x9a28('0x0'));var util=require(_0x9a28('0x1'));var Redis=require(_0x9a28('0x2'));var config=require(_0x9a28('0x3'));config[_0x9a28('0x4')]=_['defaults'](config['redis'],{'host':_0x9a28('0x5'),'port':0x18eb});var io=require(_0x9a28('0x6'))(new Redis(config[_0x9a28('0x4')]));function FaxQueue(_0x5d23d6){this['id']=_0x5d23d6['id']||0x0;this[_0x9a28('0x7')]=_0x5d23d6[_0x9a28('0x7')]||'';this[_0x9a28('0x8')]=_0x5d23d6[_0x9a28('0x8')]||0xa;this[_0x9a28('0x9')]=_0x5d23d6[_0x9a28('0x9')]||_0x9a28('0xa');this[_0x9a28('0xb')]=_0x5d23d6[_0x9a28('0xb')];this[_0x9a28('0xc')]={};this[_0x9a28('0xd')]=0x0;this['md5']='';this['updateRouting']();this[_0x9a28('0xe')]();}FaxQueue[_0x9a28('0xf')][_0x9a28('0x10')]=function(){var _0x138c44=this[_0x9a28('0xc')][_0x9a28('0x11')];this['mapAgentsId']=_[_0x9a28('0x12')](this[_0x9a28('0xb')],'id');this[_0x9a28('0xc')][_0x9a28('0x11')]=_0x138c44;};FaxQueue[_0x9a28('0xf')]['updateRealtime']=function(){this[_0x9a28('0x13')]=0x0;this[_0x9a28('0x14')]=0x0;for(var _0x2d5ad3=0x0;_0x2d5ad3<this[_0x9a28('0xb')][_0x9a28('0x15')];_0x2d5ad3+=0x1){if(this[_0x9a28('0xb')][_0x2d5ad3]['online']){this[_0x9a28('0x13')]+=0x1;}if(this[_0x9a28('0xb')][_0x2d5ad3][_0x9a28('0x16')]){this[_0x9a28('0x14')]+=0x1;}}this[_0x9a28('0x17')]=this[_0x9a28('0x13')]-this[_0x9a28('0x14')];this[_0x9a28('0x17')]=this[_0x9a28('0x17')]>=0x0?this['available']:0x0;var _0x21489c={'id':this['id'],'available':this[_0x9a28('0x17')],'loggedIn':this[_0x9a28('0x13')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x9a28('0xd')]};var _0x21ea17=md5(JSON[_0x9a28('0x18')](_0x21489c));if(this[_0x9a28('0x0')]!==_0x21ea17){this[_0x9a28('0x0')]=_0x21ea17;io['to'](util[_0x9a28('0x19')](_0x9a28('0x1a'),_0x21489c['name']))[_0x9a28('0x1b')](_0x9a28('0x1c'),_0x21489c);}};module[_0x9a28('0x1d')]=FaxQueue;
\ No newline at end of file
+var _0x1a51=['redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRealtime','prototype','updateRouting','mapAgentsId','map','_rr','loggedIn','paused','length','online','faxPause','available','format','emit','md5','util','ioredis','../../../config/environment'];(function(_0x4c111e,_0x351ca2){var _0x3f9721=function(_0x25f20a){while(--_0x25f20a){_0x4c111e['push'](_0x4c111e['shift']());}};_0x3f9721(++_0x351ca2);}(_0x1a51,0xd4));var _0x11a5=function(_0x5d7f21,_0x62bd18){_0x5d7f21=_0x5d7f21-0x0;var _0x3977ec=_0x1a51[_0x5d7f21];return _0x3977ec;};'use strict';var _=require('lodash');var md5=require(_0x11a5('0x0'));var util=require(_0x11a5('0x1'));var Redis=require(_0x11a5('0x2'));var config=require(_0x11a5('0x3'));config[_0x11a5('0x4')]=_['defaults'](config[_0x11a5('0x4')],{'host':_0x11a5('0x5'),'port':0x18eb});var io=require(_0x11a5('0x6'))(new Redis(config[_0x11a5('0x4')]));function FaxQueue(_0x50d9bc){this['id']=_0x50d9bc['id']||0x0;this['name']=_0x50d9bc[_0x11a5('0x7')]||'';this[_0x11a5('0x8')]=_0x50d9bc[_0x11a5('0x8')]||0xa;this['strategy']=_0x50d9bc[_0x11a5('0x9')]||_0x11a5('0xa');this[_0x11a5('0xb')]=_0x50d9bc[_0x11a5('0xb')];this['mapAgentsId']={};this[_0x11a5('0xc')]=0x0;this[_0x11a5('0x0')]='';this['updateRouting']();this[_0x11a5('0xd')]();}FaxQueue[_0x11a5('0xe')][_0x11a5('0xf')]=function(){var _0x1b8b96=this[_0x11a5('0x10')]['_rr'];this[_0x11a5('0x10')]=_[_0x11a5('0x11')](this['Agents'],'id');this[_0x11a5('0x10')][_0x11a5('0x12')]=_0x1b8b96;};FaxQueue['prototype'][_0x11a5('0xd')]=function(){this[_0x11a5('0x13')]=0x0;this[_0x11a5('0x14')]=0x0;for(var _0x2a8919=0x0;_0x2a8919<this['Agents'][_0x11a5('0x15')];_0x2a8919+=0x1){if(this['Agents'][_0x2a8919][_0x11a5('0x16')]){this[_0x11a5('0x13')]+=0x1;}if(this[_0x11a5('0xb')][_0x2a8919][_0x11a5('0x17')]){this['paused']+=0x1;}}this[_0x11a5('0x18')]=this[_0x11a5('0x13')]-this['paused'];this[_0x11a5('0x18')]=this[_0x11a5('0x18')]>=0x0?this[_0x11a5('0x18')]:0x0;var _0x9f19d7={'id':this['id'],'available':this[_0x11a5('0x18')],'loggedIn':this['loggedIn'],'name':this[_0x11a5('0x7')],'paused':this[_0x11a5('0x14')],'waiting':this[_0x11a5('0xc')]};var _0x460ba6=md5(JSON['stringify'](_0x9f19d7));if(this['md5']!==_0x460ba6){this[_0x11a5('0x0')]=_0x460ba6;io['to'](util[_0x11a5('0x19')]('fax:queue:%s',_0x9f19d7[_0x11a5('0x7')]))[_0x11a5('0x1a')]('fax_queue:save',_0x9f19d7);}};module['exports']=FaxQueue;
\ No newline at end of file
index 1117731..31fe9b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e06=['name','Intervals'];(function(_0x3a1cca,_0xf9cf7e){var _0x53b71c=function(_0x56c49f){while(--_0x56c49f){_0x3a1cca['push'](_0x3a1cca['shift']());}};_0x53b71c(++_0xf9cf7e);}(_0x6e06,0x1ac));var _0x66e0=function(_0xd9f651,_0x32fcbe){_0xd9f651=_0xd9f651-0x0;var _0x1f3d94=_0x6e06[_0xd9f651];return _0x1f3d94;};'use strict';function Interval(_0x3648dc){this['id']=_0x3648dc['id']||0x0;this[_0x66e0('0x0')]=_0x3648dc[_0x66e0('0x0')]||'';this[_0x66e0('0x1')]=_0x3648dc[_0x66e0('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0x2681=['Intervals','exports','name'];(function(_0x5d606b,_0x4c507a){var _0x9d8da7=function(_0x5c2b21){while(--_0x5c2b21){_0x5d606b['push'](_0x5d606b['shift']());}};_0x9d8da7(++_0x4c507a);}(_0x2681,0x12e));var _0x1268=function(_0x211906,_0x3552fa){_0x211906=_0x211906-0x0;var _0x4448e9=_0x2681[_0x211906];return _0x4448e9;};'use strict';function Interval(_0x5db1e0){this['id']=_0x5db1e0['id']||0x0;this[_0x1268('0x0')]=_0x5db1e0['name']||'';this[_0x1268('0x1')]=_0x5db1e0[_0x1268('0x1')]||{};}module[_0x1268('0x2')]=Interval;
\ No newline at end of file
index b40709e..3b0b84d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d31=['mail_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','online','mailPause','available','stringify','format','mail:queue:%s','emit'];(function(_0xce98a6,_0x3dd1f1){var _0x40d1e4=function(_0x368215){while(--_0x368215){_0xce98a6['push'](_0xce98a6['shift']());}};_0x40d1e4(++_0x3dd1f1);}(_0x2d31,0x140));var _0x12d3=function(_0x72895a,_0x433607){_0x72895a=_0x72895a-0x0;var _0x5226d5=_0x2d31[_0x72895a];return _0x5226d5;};'use strict';var _=require(_0x12d3('0x0'));var md5=require(_0x12d3('0x1'));var util=require(_0x12d3('0x2'));var Redis=require(_0x12d3('0x3'));var config=require(_0x12d3('0x4'));config[_0x12d3('0x5')]=_[_0x12d3('0x6')](config[_0x12d3('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function MailQueue(_0x40ecdb){this['id']=_0x40ecdb['id']||0x0;this[_0x12d3('0x7')]=_0x40ecdb[_0x12d3('0x7')]||'';this[_0x12d3('0x8')]=_0x40ecdb[_0x12d3('0x8')]||0xa;this[_0x12d3('0x9')]=_0x40ecdb[_0x12d3('0x9')]||_0x12d3('0xa');this['Agents']=_0x40ecdb[_0x12d3('0xb')];this['mapAgentsId']={};this[_0x12d3('0xc')]=0x0;this[_0x12d3('0x1')]='';this[_0x12d3('0xd')]();this[_0x12d3('0xe')]();}MailQueue[_0x12d3('0xf')][_0x12d3('0xd')]=function(){var _0x14916f=this[_0x12d3('0x10')][_0x12d3('0x11')];this[_0x12d3('0x10')]=_[_0x12d3('0x12')](this['Agents'],'id');this[_0x12d3('0x10')][_0x12d3('0x11')]=_0x14916f;};MailQueue[_0x12d3('0xf')][_0x12d3('0xe')]=function(){this[_0x12d3('0x13')]=0x0;this[_0x12d3('0x14')]=0x0;for(var _0x34ef01=0x0;_0x34ef01<this['Agents']['length'];_0x34ef01+=0x1){if(this['Agents'][_0x34ef01][_0x12d3('0x15')]){this['loggedIn']+=0x1;}if(this[_0x12d3('0xb')][_0x34ef01][_0x12d3('0x16')]){this[_0x12d3('0x14')]+=0x1;}}this[_0x12d3('0x17')]=this['loggedIn']-this['paused'];this[_0x12d3('0x17')]=this[_0x12d3('0x17')]>=0x0?this[_0x12d3('0x17')]:0x0;var _0x408930={'id':this['id'],'available':this['available'],'loggedIn':this[_0x12d3('0x13')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x12d3('0xc')]};var _0x48e07e=md5(JSON[_0x12d3('0x18')](_0x408930));if(this[_0x12d3('0x1')]!==_0x48e07e){this[_0x12d3('0x1')]=_0x48e07e;io['to'](util[_0x12d3('0x19')](_0x12d3('0x1a'),_0x408930[_0x12d3('0x7')]))[_0x12d3('0x1b')](_0x12d3('0x1c'),_0x408930);}};module['exports']=MailQueue;
\ No newline at end of file
+var _0x806b=['md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','length','online','mailPause','paused','available','stringify','format','mail:queue:%s','mail_queue:save','exports','lodash'];(function(_0x213ff4,_0x25803f){var _0x133453=function(_0x5845df){while(--_0x5845df){_0x213ff4['push'](_0x213ff4['shift']());}};_0x133453(++_0x25803f);}(_0x806b,0x7b));var _0xb806=function(_0x270398,_0x195653){_0x270398=_0x270398-0x0;var _0x59bc9e=_0x806b[_0x270398];return _0x59bc9e;};'use strict';var _=require(_0xb806('0x0'));var md5=require(_0xb806('0x1'));var util=require(_0xb806('0x2'));var Redis=require('ioredis');var config=require(_0xb806('0x3'));config[_0xb806('0x4')]=_[_0xb806('0x5')](config['redis'],{'host':_0xb806('0x6'),'port':0x18eb});var io=require(_0xb806('0x7'))(new Redis(config[_0xb806('0x4')]));function MailQueue(_0x5ce604){this['id']=_0x5ce604['id']||0x0;this[_0xb806('0x8')]=_0x5ce604['name']||'';this[_0xb806('0x9')]=_0x5ce604[_0xb806('0x9')]||0xa;this[_0xb806('0xa')]=_0x5ce604[_0xb806('0xa')]||_0xb806('0xb');this[_0xb806('0xc')]=_0x5ce604[_0xb806('0xc')];this[_0xb806('0xd')]={};this[_0xb806('0xe')]=0x0;this['md5']='';this[_0xb806('0xf')]();this[_0xb806('0x10')]();}MailQueue[_0xb806('0x11')]['updateRouting']=function(){var _0xa16a42=this[_0xb806('0xd')][_0xb806('0x12')];this[_0xb806('0xd')]=_[_0xb806('0x13')](this[_0xb806('0xc')],'id');this[_0xb806('0xd')]['_rr']=_0xa16a42;};MailQueue[_0xb806('0x11')][_0xb806('0x10')]=function(){this[_0xb806('0x14')]=0x0;this['paused']=0x0;for(var _0x99e328=0x0;_0x99e328<this[_0xb806('0xc')][_0xb806('0x15')];_0x99e328+=0x1){if(this[_0xb806('0xc')][_0x99e328][_0xb806('0x16')]){this[_0xb806('0x14')]+=0x1;}if(this[_0xb806('0xc')][_0x99e328][_0xb806('0x17')]){this[_0xb806('0x18')]+=0x1;}}this['available']=this[_0xb806('0x14')]-this[_0xb806('0x18')];this[_0xb806('0x19')]=this[_0xb806('0x19')]>=0x0?this[_0xb806('0x19')]:0x0;var _0xd33580={'id':this['id'],'available':this['available'],'loggedIn':this[_0xb806('0x14')],'name':this[_0xb806('0x8')],'paused':this[_0xb806('0x18')],'waiting':this[_0xb806('0xe')]};var _0x4549ae=md5(JSON[_0xb806('0x1a')](_0xd33580));if(this[_0xb806('0x1')]!==_0x4549ae){this[_0xb806('0x1')]=_0x4549ae;io['to'](util[_0xb806('0x1b')](_0xb806('0x1c'),_0xd33580[_0xb806('0x8')]))['emit'](_0xb806('0x1d'),_0xd33580);}};module[_0xb806('0x1e')]=MailQueue;
\ No newline at end of file
index 2085c29..7f7ec9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x33bc93,_0x7a88c5){var _0x4d214c=function(_0x44a69c){while(--_0x44a69c){_0x33bc93['push'](_0x33bc93['shift']());}};_0x4d214c(++_0x7a88c5);}(_0x814b,0x1a2));var _0xb814=function(_0x2bc3f4,_0x470b26){_0x2bc3f4=_0x2bc3f4-0x0;var _0x14ac53=_0x814b[_0x2bc3f4];return _0x14ac53;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x2ef3=['stringify','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','timeout','strategy','beepall','Agents','mapAgentsId','waiting','prototype','updateRouting','_rr','paused','length','online','available','loggedIn','name'];(function(_0x1ff2ec,_0x386e86){var _0x405683=function(_0x22f921){while(--_0x22f921){_0x1ff2ec['push'](_0x1ff2ec['shift']());}};_0x405683(++_0x386e86);}(_0x2ef3,0xba));var _0x32ef=function(_0xd9da65,_0xaa3ba6){_0xd9da65=_0xd9da65-0x0;var _0x2e22b1=_0x2ef3[_0xd9da65];return _0x2e22b1;};'use strict';var _=require(_0x32ef('0x0'));var md5=require(_0x32ef('0x1'));var util=require(_0x32ef('0x2'));var Redis=require(_0x32ef('0x3'));var config=require(_0x32ef('0x4'));config[_0x32ef('0x5')]=_['defaults'](config[_0x32ef('0x5')],{'host':_0x32ef('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x32ef('0x5')]));function OpenchannelQueue(_0x37dd1d){this['id']=_0x37dd1d['id']||0x0;this['name']=_0x37dd1d['name']||'';this[_0x32ef('0x7')]=_0x37dd1d[_0x32ef('0x7')]||0xa;this[_0x32ef('0x8')]=_0x37dd1d[_0x32ef('0x8')]||_0x32ef('0x9');this[_0x32ef('0xa')]=_0x37dd1d[_0x32ef('0xa')];this[_0x32ef('0xb')]={};this[_0x32ef('0xc')]=0x0;this[_0x32ef('0x1')]='';this['updateRouting']();this['updateRealtime']();}OpenchannelQueue[_0x32ef('0xd')][_0x32ef('0xe')]=function(){var _0x45bfd5=this[_0x32ef('0xb')]['_rr'];this[_0x32ef('0xb')]=_['map'](this[_0x32ef('0xa')],'id');this['mapAgentsId'][_0x32ef('0xf')]=_0x45bfd5;};OpenchannelQueue[_0x32ef('0xd')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x32ef('0x10')]=0x0;for(var _0x4d8009=0x0;_0x4d8009<this[_0x32ef('0xa')][_0x32ef('0x11')];_0x4d8009+=0x1){if(this[_0x32ef('0xa')][_0x4d8009][_0x32ef('0x12')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x4d8009]['openchannelPause']){this[_0x32ef('0x10')]+=0x1;}}this[_0x32ef('0x13')]=this[_0x32ef('0x14')]-this['paused'];this['available']=this[_0x32ef('0x13')]>=0x0?this[_0x32ef('0x13')]:0x0;var _0x286bfb={'id':this['id'],'available':this['available'],'loggedIn':this[_0x32ef('0x14')],'name':this[_0x32ef('0x15')],'paused':this['paused'],'waiting':this[_0x32ef('0xc')]};var _0x314ef1=md5(JSON[_0x32ef('0x16')](_0x286bfb));if(this[_0x32ef('0x1')]!==_0x314ef1){this[_0x32ef('0x1')]=_0x314ef1;io['to'](util[_0x32ef('0x17')]('openchannel:queue:%s',_0x286bfb[_0x32ef('0x15')]))['emit'](_0x32ef('0x18'),_0x286bfb);}};module[_0x32ef('0x19')]=OpenchannelQueue;
\ No newline at end of file
index d265f13..e75b12f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe94a=['timeout','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','loggedIn','paused','length','online','available','stringify','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name'];(function(_0xf522c,_0x5aad01){var _0x348f9d=function(_0x3bb0d0){while(--_0x3bb0d0){_0xf522c['push'](_0xf522c['shift']());}};_0x348f9d(++_0x5aad01);}(_0xe94a,0x1c7));var _0xae94=function(_0x11deef,_0x34bbdb){_0x11deef=_0x11deef-0x0;var _0xe9ba85=_0xe94a[_0x11deef];return _0xe9ba85;};'use strict';var _=require(_0xae94('0x0'));var md5=require(_0xae94('0x1'));var util=require(_0xae94('0x2'));var Redis=require('ioredis');var config=require(_0xae94('0x3'));config[_0xae94('0x4')]=_[_0xae94('0x5')](config[_0xae94('0x4')],{'host':_0xae94('0x6'),'port':0x18eb});var io=require(_0xae94('0x7'))(new Redis(config['redis']));function SmsQueue(_0x429d6d){this['id']=_0x429d6d['id']||0x0;this[_0xae94('0x8')]=_0x429d6d[_0xae94('0x8')]||'';this[_0xae94('0x9')]=_0x429d6d[_0xae94('0x9')]||0xa;this['strategy']=_0x429d6d['strategy']||_0xae94('0xa');this[_0xae94('0xb')]=_0x429d6d['Agents'];this[_0xae94('0xc')]={};this[_0xae94('0xd')]=0x0;this[_0xae94('0x1')]='';this[_0xae94('0xe')]();this[_0xae94('0xf')]();}SmsQueue[_0xae94('0x10')][_0xae94('0xe')]=function(){var _0x3e24c6=this['mapAgentsId']['_rr'];this[_0xae94('0xc')]=_[_0xae94('0x11')](this['Agents'],'id');this[_0xae94('0xc')]['_rr']=_0x3e24c6;};SmsQueue[_0xae94('0x10')][_0xae94('0xf')]=function(){this[_0xae94('0x12')]=0x0;this[_0xae94('0x13')]=0x0;for(var _0x223e35=0x0;_0x223e35<this['Agents'][_0xae94('0x14')];_0x223e35+=0x1){if(this[_0xae94('0xb')][_0x223e35][_0xae94('0x15')]){this['loggedIn']+=0x1;}if(this[_0xae94('0xb')][_0x223e35]['smsPause']){this[_0xae94('0x13')]+=0x1;}}this['available']=this[_0xae94('0x12')]-this[_0xae94('0x13')];this['available']=this['available']>=0x0?this[_0xae94('0x16')]:0x0;var _0x382b4a={'id':this['id'],'available':this[_0xae94('0x16')],'loggedIn':this[_0xae94('0x12')],'name':this['name'],'paused':this[_0xae94('0x13')],'waiting':this[_0xae94('0xd')]};var _0x5a0cdd=md5(JSON[_0xae94('0x17')](_0x382b4a));if(this[_0xae94('0x1')]!==_0x5a0cdd){this['md5']=_0x5a0cdd;io['to'](util[_0xae94('0x18')](_0xae94('0x19'),_0x382b4a[_0xae94('0x8')]))[_0xae94('0x1a')](_0xae94('0x1b'),_0x382b4a);}};module[_0xae94('0x1c')]=SmsQueue;
\ No newline at end of file
+var _0xca8d=['localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','length','online','smsPause','available','waiting','stringify','format','sms:queue:%s','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults'];(function(_0x342c28,_0x120194){var _0x43c1e4=function(_0x52c590){while(--_0x52c590){_0x342c28['push'](_0x342c28['shift']());}};_0x43c1e4(++_0x120194);}(_0xca8d,0x172));var _0xdca8=function(_0x34d38c,_0x4f1295){_0x34d38c=_0x34d38c-0x0;var _0x4be108=_0xca8d[_0x34d38c];return _0x4be108;};'use strict';var _=require(_0xdca8('0x0'));var md5=require(_0xdca8('0x1'));var util=require(_0xdca8('0x2'));var Redis=require(_0xdca8('0x3'));var config=require(_0xdca8('0x4'));config[_0xdca8('0x5')]=_[_0xdca8('0x6')](config[_0xdca8('0x5')],{'host':_0xdca8('0x7'),'port':0x18eb});var io=require(_0xdca8('0x8'))(new Redis(config[_0xdca8('0x5')]));function SmsQueue(_0x32e549){this['id']=_0x32e549['id']||0x0;this['name']=_0x32e549[_0xdca8('0x9')]||'';this[_0xdca8('0xa')]=_0x32e549[_0xdca8('0xa')]||0xa;this[_0xdca8('0xb')]=_0x32e549[_0xdca8('0xb')]||'beepall';this[_0xdca8('0xc')]=_0x32e549[_0xdca8('0xc')];this[_0xdca8('0xd')]={};this['waiting']=0x0;this[_0xdca8('0x1')]='';this[_0xdca8('0xe')]();this[_0xdca8('0xf')]();}SmsQueue[_0xdca8('0x10')][_0xdca8('0xe')]=function(){var _0x349f88=this[_0xdca8('0xd')][_0xdca8('0x11')];this[_0xdca8('0xd')]=_['map'](this['Agents'],'id');this[_0xdca8('0xd')][_0xdca8('0x11')]=_0x349f88;};SmsQueue[_0xdca8('0x10')][_0xdca8('0xf')]=function(){this[_0xdca8('0x12')]=0x0;this[_0xdca8('0x13')]=0x0;for(var _0x3ea305=0x0;_0x3ea305<this[_0xdca8('0xc')][_0xdca8('0x14')];_0x3ea305+=0x1){if(this[_0xdca8('0xc')][_0x3ea305][_0xdca8('0x15')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x3ea305][_0xdca8('0x16')]){this['paused']+=0x1;}}this['available']=this[_0xdca8('0x12')]-this['paused'];this[_0xdca8('0x17')]=this[_0xdca8('0x17')]>=0x0?this[_0xdca8('0x17')]:0x0;var _0x490650={'id':this['id'],'available':this['available'],'loggedIn':this[_0xdca8('0x12')],'name':this[_0xdca8('0x9')],'paused':this[_0xdca8('0x13')],'waiting':this[_0xdca8('0x18')]};var _0x4ffe19=md5(JSON[_0xdca8('0x19')](_0x490650));if(this[_0xdca8('0x1')]!==_0x4ffe19){this['md5']=_0x4ffe19;io['to'](util[_0xdca8('0x1a')](_0xdca8('0x1b'),_0x490650[_0xdca8('0x9')]))['emit']('sms_queue:save',_0x490650);}};module[_0xdca8('0x1c')]=SmsQueue;
\ No newline at end of file
index 8b4bb19..e282102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2587=['format','whatsapp:queue:%s','emit','whatsapp_queue:save','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','available','waiting','stringify'];(function(_0x41a515,_0x4433e7){var _0x353a18=function(_0x5e8e8a){while(--_0x5e8e8a){_0x41a515['push'](_0x41a515['shift']());}};_0x353a18(++_0x4433e7);}(_0x2587,0xe4));var _0x7258=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x2587[_0x543084];return _0x306a57;};'use strict';var _=require(_0x7258('0x0'));var md5=require(_0x7258('0x1'));var util=require('util');var Redis=require(_0x7258('0x2'));var config=require(_0x7258('0x3'));config[_0x7258('0x4')]=_[_0x7258('0x5')](config[_0x7258('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x7258('0x6'))(new Redis(config[_0x7258('0x4')]));function WhatsappQueue(_0x2b0f7e){this['id']=_0x2b0f7e['id']||0x0;this[_0x7258('0x7')]=_0x2b0f7e[_0x7258('0x7')]||'';this[_0x7258('0x8')]=_0x2b0f7e[_0x7258('0x8')]||0xa;this[_0x7258('0x9')]=_0x2b0f7e[_0x7258('0x9')]||'beepall';this[_0x7258('0xa')]=_0x2b0f7e[_0x7258('0xa')];this[_0x7258('0xb')]={};this['waiting']=0x0;this[_0x7258('0x1')]='';this[_0x7258('0xc')]();this[_0x7258('0xd')]();}WhatsappQueue[_0x7258('0xe')]['updateRouting']=function(){var _0x50e6b0=this['mapAgentsId'][_0x7258('0xf')];this[_0x7258('0xb')]=_[_0x7258('0x10')](this[_0x7258('0xa')],'id');this[_0x7258('0xb')][_0x7258('0xf')]=_0x50e6b0;};WhatsappQueue['prototype'][_0x7258('0xd')]=function(){this[_0x7258('0x11')]=0x0;this[_0x7258('0x12')]=0x0;for(var _0x2637a1=0x0;_0x2637a1<this['Agents'][_0x7258('0x13')];_0x2637a1+=0x1){if(this[_0x7258('0xa')][_0x2637a1][_0x7258('0x14')]){this[_0x7258('0x11')]+=0x1;}if(this[_0x7258('0xa')][_0x2637a1]['whatsappPause']){this[_0x7258('0x12')]+=0x1;}}this[_0x7258('0x15')]=this[_0x7258('0x11')]-this[_0x7258('0x12')];this[_0x7258('0x15')]=this['available']>=0x0?this[_0x7258('0x15')]:0x0;var _0x49db2f={'id':this['id'],'available':this['available'],'loggedIn':this[_0x7258('0x11')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x7258('0x16')]};var _0x41f186=md5(JSON[_0x7258('0x17')](_0x49db2f));if(this['md5']!==_0x41f186){this[_0x7258('0x1')]=_0x41f186;io['to'](util[_0x7258('0x18')](_0x7258('0x19'),_0x49db2f[_0x7258('0x7')]))[_0x7258('0x1a')](_0x7258('0x1b'),_0x49db2f);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x32a4=['available','waiting','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','md5','util','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','_rr','prototype','loggedIn','online','whatsappPause','paused'];(function(_0x197c29,_0x51df0d){var _0x4cda74=function(_0x17178f){while(--_0x17178f){_0x197c29['push'](_0x197c29['shift']());}};_0x4cda74(++_0x51df0d);}(_0x32a4,0x88));var _0x432a=function(_0x1d2ff6,_0x2216b4){_0x1d2ff6=_0x1d2ff6-0x0;var _0x4b269f=_0x32a4[_0x1d2ff6];return _0x4b269f;};'use strict';var _=require('lodash');var md5=require(_0x432a('0x0'));var util=require(_0x432a('0x1'));var Redis=require('ioredis');var config=require(_0x432a('0x2'));config[_0x432a('0x3')]=_[_0x432a('0x4')](config['redis'],{'host':_0x432a('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x432a('0x3')]));function WhatsappQueue(_0x580190){this['id']=_0x580190['id']||0x0;this[_0x432a('0x6')]=_0x580190['name']||'';this[_0x432a('0x7')]=_0x580190[_0x432a('0x7')]||0xa;this[_0x432a('0x8')]=_0x580190[_0x432a('0x8')]||_0x432a('0x9');this[_0x432a('0xa')]=_0x580190[_0x432a('0xa')];this[_0x432a('0xb')]={};this['waiting']=0x0;this[_0x432a('0x0')]='';this[_0x432a('0xc')]();this[_0x432a('0xd')]();}WhatsappQueue['prototype'][_0x432a('0xc')]=function(){var _0x2e8e85=this[_0x432a('0xb')]['_rr'];this[_0x432a('0xb')]=_['map'](this[_0x432a('0xa')],'id');this[_0x432a('0xb')][_0x432a('0xe')]=_0x2e8e85;};WhatsappQueue[_0x432a('0xf')][_0x432a('0xd')]=function(){this[_0x432a('0x10')]=0x0;this['paused']=0x0;for(var _0x71aadc=0x0;_0x71aadc<this['Agents']['length'];_0x71aadc+=0x1){if(this[_0x432a('0xa')][_0x71aadc][_0x432a('0x11')]){this['loggedIn']+=0x1;}if(this[_0x432a('0xa')][_0x71aadc][_0x432a('0x12')]){this[_0x432a('0x13')]+=0x1;}}this[_0x432a('0x14')]=this[_0x432a('0x10')]-this[_0x432a('0x13')];this[_0x432a('0x14')]=this[_0x432a('0x14')]>=0x0?this[_0x432a('0x14')]:0x0;var _0x57b1bc={'id':this['id'],'available':this[_0x432a('0x14')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x432a('0x13')],'waiting':this[_0x432a('0x15')]};var _0x3791e3=md5(JSON['stringify'](_0x57b1bc));if(this[_0x432a('0x0')]!==_0x3791e3){this['md5']=_0x3791e3;io['to'](util['format'](_0x432a('0x16'),_0x57b1bc[_0x432a('0x6')]))[_0x432a('0x17')](_0x432a('0x18'),_0x57b1bc);}};module[_0x432a('0x19')]=WhatsappQueue;
\ No newline at end of file
index e529f1c..0b953b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x4a6bfd,_0x184ab1){var _0x948b1=function(_0x3430c5){while(--_0x3430c5){_0x4a6bfd['push'](_0x4a6bfd['shift']());}};_0x948b1(++_0x184ab1);}(_0xb10b,0x12a));var _0xbb10=function(_0x5c84a6,_0x321f95){_0x5c84a6=_0x5c84a6-0x0;var _0xb8c5f0=_0xb10b[_0x5c84a6];return _0xb8c5f0;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+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(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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 2f26e77..be815dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf44=['update','UpdateChatInteraction','updateChatInteraction','addTags','Request','AddTagsToChatInteraction','addTagsToChatInteraction','../client'];(function(_0x17c567,_0x1ee724){var _0x1cd811=function(_0x25d7e1){while(--_0x25d7e1){_0x17c567['push'](_0x17c567['shift']());}};_0x1cd811(++_0x1ee724);}(_0xbf44,0x187));var _0x4bf4=function(_0x243fd3,_0x25e8d3){_0x243fd3=_0x243fd3-0x0;var _0x1575b7=_0xbf44[_0x243fd3];return _0x1575b7;};'use strict';var client=require(_0x4bf4('0x0'));exports[_0x4bf4('0x1')]=function(_0x5ee3fb,_0x1cef4b){return client['Request'](_0x4bf4('0x2'),{'body':_0x1cef4b,'options':{'where':{'id':_0x5ee3fb}},'log':_0x4bf4('0x3')});};exports[_0x4bf4('0x4')]=function(_0x5761d8,_0x2fcc62){return client[_0x4bf4('0x5')](_0x4bf4('0x6'),{'body':_0x2fcc62,'options':{'where':{'id':_0x5761d8}},'log':_0x4bf4('0x7')});};
\ No newline at end of file
+var _0x99cc=['Request','UpdateChatInteraction','addTags','AddTagsToChatInteraction','../client'];(function(_0x2a558d,_0x2df0ff){var _0xa7bc9c=function(_0x12a30e){while(--_0x12a30e){_0x2a558d['push'](_0x2a558d['shift']());}};_0xa7bc9c(++_0x2df0ff);}(_0x99cc,0x117));var _0xc99c=function(_0x2d88a5,_0x16c5e1){_0x2d88a5=_0x2d88a5-0x0;var _0x1363ab=_0x99cc[_0x2d88a5];return _0x1363ab;};'use strict';var client=require(_0xc99c('0x0'));exports['update']=function(_0x34f385,_0x95a6f6){return client[_0xc99c('0x1')](_0xc99c('0x2'),{'body':_0x95a6f6,'options':{'where':{'id':_0x34f385}},'log':'updateChatInteraction'});};exports[_0xc99c('0x3')]=function(_0x40b7ca,_0x23d801){return client[_0xc99c('0x1')](_0xc99c('0x4'),{'body':_0x23d801,'options':{'where':{'id':_0x40b7ca}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 8a3eb2d..31214c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea57=['createChatMessage','../client','create','Request'];(function(_0x277721,_0x46971e){var _0x286051=function(_0x130c98){while(--_0x130c98){_0x277721['push'](_0x277721['shift']());}};_0x286051(++_0x46971e);}(_0xea57,0x135));var _0x7ea5=function(_0x54f568,_0x35e0a1){_0x54f568=_0x54f568-0x0;var _0x491df3=_0xea57[_0x54f568];return _0x491df3;};'use strict';var client=require(_0x7ea5('0x0'));exports[_0x7ea5('0x1')]=function(_0x2df732){return client[_0x7ea5('0x2')]('CreateChatMessage',{'body':_0x2df732,'log':_0x7ea5('0x3')});};
\ No newline at end of file
+var _0x11ee=['createChatMessage','../client','create','Request'];(function(_0x44084c,_0x59f54c){var _0x14457f=function(_0x1adea2){while(--_0x1adea2){_0x44084c['push'](_0x44084c['shift']());}};_0x14457f(++_0x59f54c);}(_0x11ee,0x1dd));var _0xe11e=function(_0x487496,_0x249683){_0x487496=_0x487496-0x0;var _0x539dc8=_0x11ee[_0x487496];return _0x539dc8;};'use strict';var client=require(_0xe11e('0x0'));exports[_0xe11e('0x1')]=function(_0x2642d8){return client[_0xe11e('0x2')]('CreateChatMessage',{'body':_0x2642d8,'log':_0xe11e('0x3')});};
\ No newline at end of file
index e5ee6d3..8dc672b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05bc=['name','strategy','User','Agents','online','chatPause','getChatQueues','GetChatQueue'];(function(_0x3fb84f,_0x526d87){var _0x48975c=function(_0x21bcfa){while(--_0x21bcfa){_0x3fb84f['push'](_0x3fb84f['shift']());}};_0x48975c(++_0x526d87);}(_0x05bc,0xae));var _0xc05b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x05bc[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0xc05b('0x0')]=function(){return function(){return client['Request'](_0xc05b('0x1'),{'options':{'raw':![],'attributes':['id',_0xc05b('0x2'),'timeout',_0xc05b('0x3')],'include':[{'model':_0xc05b('0x4'),'as':_0xc05b('0x5'),'attributes':['id',_0xc05b('0x2'),_0xc05b('0x6'),_0xc05b('0x7')]}]},'log':_0xc05b('0x0')});};};
\ No newline at end of file
+var _0xf8de=['User','Agents','online','chatPause','getChatQueues','Request','name','strategy'];(function(_0x285dd2,_0x522ee8){var _0x26c04e=function(_0x3bc9af){while(--_0x3bc9af){_0x285dd2['push'](_0x285dd2['shift']());}};_0x26c04e(++_0x522ee8);}(_0xf8de,0x1d4));var _0xef8d=function(_0x5578e2,_0x319dec){_0x5578e2=_0x5578e2-0x0;var _0x3b9fe7=_0xf8de[_0x5578e2];return _0x3b9fe7;};'use strict';var client=require('../client');exports[_0xef8d('0x0')]=function(){return function(){return client[_0xef8d('0x1')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0xef8d('0x2'),'timeout',_0xef8d('0x3')],'include':[{'model':_0xef8d('0x4'),'as':_0xef8d('0x5'),'attributes':['id','name',_0xef8d('0x6'),_0xef8d('0x7')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index 7f6747b..a09cf1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b1=['CreateChatQueueReport','Request','UpdateChatQueueReport','DESC','../client'];(function(_0x45b034,_0x3a57dd){var _0x509cb0=function(_0x3a89d5){while(--_0x3a89d5){_0x45b034['push'](_0x45b034['shift']());}};_0x509cb0(++_0x3a57dd);}(_0xb6b1,0x17b));var _0x1b6b=function(_0x4358f5,_0x5b1ac6){_0x4358f5=_0x4358f5-0x0;var _0x4d8104=_0xb6b1[_0x4358f5];return _0x4d8104;};'use strict';var client=require(_0x1b6b('0x0'));exports['create']=function(_0x669faa){return client['Request'](_0x1b6b('0x1'),{'body':_0x669faa,'log':_0x1b6b('0x1')});};exports['update']=function(_0x3f12e2,_0x5100e5){return client[_0x1b6b('0x2')](_0x1b6b('0x3'),{'body':_0x5100e5,'options':{'where':{'uniqueid':_0x3f12e2},'order':[['id',_0x1b6b('0x4')]],'limit':0x1},'log':_0x1b6b('0x3')});};
\ No newline at end of file
+var _0xa4db=['UpdateChatQueueReport','Request','CreateChatQueueReport','update'];(function(_0x24a207,_0x3f99ad){var _0x4c6844=function(_0xee8e5c){while(--_0xee8e5c){_0x24a207['push'](_0x24a207['shift']());}};_0x4c6844(++_0x3f99ad);}(_0xa4db,0x139));var _0xba4d=function(_0x24639b,_0x1a9ff9){_0x24639b=_0x24639b-0x0;var _0x270e29=_0xa4db[_0x24639b];return _0x270e29;};'use strict';var client=require('../client');exports['create']=function(_0x5a4e93){return client[_0xba4d('0x0')](_0xba4d('0x1'),{'body':_0x5a4e93,'log':_0xba4d('0x1')});};exports[_0xba4d('0x2')]=function(_0x32ad53,_0x158edc){return client['Request'](_0xba4d('0x3'),{'body':_0x158edc,'options':{'where':{'uniqueid':_0x32ad53},'order':[['id','DESC']],'limit':0x1},'log':_0xba4d('0x3')});};
\ No newline at end of file
index f902814..f919d0b 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(_0x1c78dd,_0x117d6e){var _0x927903=function(_0x464012){while(--_0x464012){_0x1c78dd['push'](_0x1c78dd['shift']());}};_0x927903(++_0x117d6e);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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(_0x373096,_0x4d37aa){var _0x14a6d0=function(_0xb3b614){while(--_0xb3b614){_0x373096['push'](_0x373096['shift']());}};_0x14a6d0(++_0x4d37aa);}(_0x7a54,0x106));var _0x47a5=function(_0x2d9f8c,_0x261f11){_0x2d9f8c=_0x2d9f8c-0x0;var _0x46c925=_0x7a54[_0x2d9f8c];return _0x46c925;};'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 0d1c48a..f5f8300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb065=['../client','create','CreateFaxMessage'];(function(_0x2c0246,_0x2e4693){var _0x270418=function(_0x18ca8f){while(--_0x18ca8f){_0x2c0246['push'](_0x2c0246['shift']());}};_0x270418(++_0x2e4693);}(_0xb065,0x18c));var _0x5b06=function(_0x2b5aaf,_0x3e25f4){_0x2b5aaf=_0x2b5aaf-0x0;var _0x91deff=_0xb065[_0x2b5aaf];return _0x91deff;};'use strict';var client=require(_0x5b06('0x0'));exports[_0x5b06('0x1')]=function(_0x1483db){return client['Request'](_0x5b06('0x2'),{'body':_0x1483db,'log':'createFaxMessage'});};
\ No newline at end of file
+var _0xf716=['CreateFaxMessage','../client'];(function(_0x253bd2,_0x4e88ff){var _0x457ff9=function(_0x15cb2e){while(--_0x15cb2e){_0x253bd2['push'](_0x253bd2['shift']());}};_0x457ff9(++_0x4e88ff);}(_0xf716,0x8f));var _0x6f71=function(_0x553e36,_0x5e84ac){_0x553e36=_0x553e36-0x0;var _0x5732a6=_0xf716[_0x553e36];return _0x5732a6;};'use strict';var client=require(_0x6f71('0x0'));exports['create']=function(_0x47ef42){return client['Request'](_0x6f71('0x1'),{'body':_0x47ef42,'log':'createFaxMessage'});};
\ No newline at end of file
index 22c639b..a4d11ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf69=['faxPause','../client','getFaxQueues','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0xaf69,0xc7));var _0x9af6=function(_0x2456cf,_0x311f7c){_0x2456cf=_0x2456cf-0x0;var _0x111483=_0xaf69[_0x2456cf];return _0x111483;};'use strict';var client=require(_0x9af6('0x0'));exports[_0x9af6('0x1')]=function(){return function(){return client[_0x9af6('0x2')](_0x9af6('0x3'),{'options':{'raw':![],'attributes':['id',_0x9af6('0x4'),_0x9af6('0x5'),_0x9af6('0x6')],'include':[{'model':_0x9af6('0x7'),'as':_0x9af6('0x8'),'attributes':['id','name',_0x9af6('0x9'),_0x9af6('0xa')]}]},'log':_0x9af6('0x1')});};};
\ No newline at end of file
+var _0xed3a=['Request','GetFaxQueue','timeout','strategy','Agents','name','online','../client','getFaxQueues'];(function(_0x294f3d,_0x1b0f82){var _0x2c8f6c=function(_0x2303e6){while(--_0x2303e6){_0x294f3d['push'](_0x294f3d['shift']());}};_0x2c8f6c(++_0x1b0f82);}(_0xed3a,0xa0));var _0xaed3=function(_0x12f067,_0x25ff87){_0x12f067=_0x12f067-0x0;var _0x277f97=_0xed3a[_0x12f067];return _0x277f97;};'use strict';var client=require(_0xaed3('0x0'));exports[_0xaed3('0x1')]=function(){return function(){return client[_0xaed3('0x2')](_0xaed3('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xaed3('0x4'),_0xaed3('0x5')],'include':[{'model':'User','as':_0xaed3('0x6'),'attributes':['id',_0xaed3('0x7'),_0xaed3('0x8'),'faxPause']}]},'log':_0xaed3('0x1')});};};
\ No newline at end of file
index 5b20254..8ca55e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5976=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','create','Request'];(function(_0x1a15ed,_0x269dc4){var _0x386030=function(_0x4a7111){while(--_0x4a7111){_0x1a15ed['push'](_0x1a15ed['shift']());}};_0x386030(++_0x269dc4);}(_0x5976,0xcf));var _0x6597=function(_0x16d360,_0x1029c4){_0x16d360=_0x16d360-0x0;var _0x476e44=_0x5976[_0x16d360];return _0x476e44;};'use strict';var client=require(_0x6597('0x0'));exports[_0x6597('0x1')]=function(_0x953cad){return client[_0x6597('0x2')]('CreateFaxQueueReport',{'body':_0x953cad,'log':_0x6597('0x3')});};exports[_0x6597('0x4')]=function(_0x3d174d,_0x3c6dd2){return client[_0x6597('0x2')](_0x6597('0x5'),{'body':_0x3c6dd2,'options':{'where':{'uniqueid':_0x3d174d},'order':[['id',_0x6597('0x6')]],'limit':0x1},'log':_0x6597('0x5')});};
\ No newline at end of file
+var _0x6b3f=['DESC','../client','create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport'];(function(_0x2e9280,_0x44d032){var _0x17f9e5=function(_0x4c915){while(--_0x4c915){_0x2e9280['push'](_0x2e9280['shift']());}};_0x17f9e5(++_0x44d032);}(_0x6b3f,0x190));var _0xf6b3=function(_0x3dab21,_0x48cd1e){_0x3dab21=_0x3dab21-0x0;var _0x563a23=_0x6b3f[_0x3dab21];return _0x563a23;};'use strict';var client=require(_0xf6b3('0x0'));exports[_0xf6b3('0x1')]=function(_0x49b706){return client[_0xf6b3('0x2')](_0xf6b3('0x3'),{'body':_0x49b706,'log':_0xf6b3('0x3')});};exports[_0xf6b3('0x4')]=function(_0x11de69,_0x1a14b7){return client[_0xf6b3('0x2')](_0xf6b3('0x5'),{'body':_0x1a14b7,'options':{'where':{'uniqueid':_0x11de69},'order':[['id',_0xf6b3('0x6')]],'limit':0x1},'log':_0xf6b3('0x5')});};
\ No newline at end of file
index 1327ff7..0df8baf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee86=['name','interval','getIntervals','../client','Request','Intervals'];(function(_0x370f10,_0x6a8bf1){var _0x50350d=function(_0x230b09){while(--_0x230b09){_0x370f10['push'](_0x370f10['shift']());}};_0x50350d(++_0x6a8bf1);}(_0xee86,0x99));var _0x6ee8=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xee86[_0x27af45];return _0x18df21;};'use strict';var client=require(_0x6ee8('0x0'));exports['getIntervals']=function(){return function(){return client[_0x6ee8('0x1')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':'Interval','as':_0x6ee8('0x2'),'attributes':['id',_0x6ee8('0x3'),_0x6ee8('0x4')]}]},'log':_0x6ee8('0x5')});};};
\ No newline at end of file
+var _0x91a2=['getIntervals','name','Interval','Intervals','interval','../client'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x91a2,0x8f));var _0x291a=function(_0x160248,_0x2a57e6){_0x160248=_0x160248-0x0;var _0x4e589d=_0x91a2[_0x160248];return _0x4e589d;};'use strict';var client=require(_0x291a('0x0'));exports[_0x291a('0x1')]=function(){return function(){return client['Request']('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x291a('0x2')],'include':[{'model':_0x291a('0x3'),'as':_0x291a('0x4'),'attributes':['id',_0x291a('0x2'),_0x291a('0x5')]}]},'log':_0x291a('0x1')});};};
\ No newline at end of file
index 3912086..1222670 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1893=['Request','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x1eaef1,_0x30f0f6){var _0x4d9c81=function(_0x53d824){while(--_0x53d824){_0x1eaef1['push'](_0x1eaef1['shift']());}};_0x4d9c81(++_0x30f0f6);}(_0x1893,0xa2));var _0x3189=function(_0x3a2a33,_0x29372a){_0x3a2a33=_0x3a2a33-0x0;var _0x10d6d2=_0x1893[_0x3a2a33];return _0x10d6d2;};'use strict';var client=require('../client');exports['update']=function(_0x1bfe8b,_0x3aec2b){return client[_0x3189('0x0')](_0x3189('0x1'),{'body':_0x3aec2b,'options':{'where':{'id':_0x1bfe8b}},'log':_0x3189('0x2')});};exports[_0x3189('0x3')]=function(_0x3953a2,_0x5371db){return client[_0x3189('0x0')](_0x3189('0x4'),{'body':_0x5371db,'options':{'where':{'id':_0x3953a2}},'log':_0x3189('0x5')});};
\ No newline at end of file
+var _0xb44a=['AddTagsToMailInteraction','addTagsToChatInteraction','Request','addTags'];(function(_0x2261ce,_0x9ed8b6){var _0x524640=function(_0x3cbb90){while(--_0x3cbb90){_0x2261ce['push'](_0x2261ce['shift']());}};_0x524640(++_0x9ed8b6);}(_0xb44a,0x1c2));var _0xab44=function(_0x32b4aa,_0x12eba6){_0x32b4aa=_0x32b4aa-0x0;var _0x473160=_0xb44a[_0x32b4aa];return _0x473160;};'use strict';var client=require('../client');exports['update']=function(_0x93bb2f,_0x492c1a){return client[_0xab44('0x0')]('UpdateMailInteraction',{'body':_0x492c1a,'options':{'where':{'id':_0x93bb2f}},'log':'updateMailInteraction'});};exports[_0xab44('0x1')]=function(_0x5c93b4,_0x1b9e05){return client[_0xab44('0x0')](_0xab44('0x2'),{'body':_0x1b9e05,'options':{'where':{'id':_0x5c93b4}},'log':_0xab44('0x3')});};
\ No newline at end of file
index 5e95b44..06b7949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1617=['CreateMailMessage','createMailMessage','../client','create'];(function(_0x24e53f,_0x57321b){var _0x423edd=function(_0x26bd72){while(--_0x26bd72){_0x24e53f['push'](_0x24e53f['shift']());}};_0x423edd(++_0x57321b);}(_0x1617,0x106));var _0x7161=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x1617[_0x525c7b];return _0x27b33e;};'use strict';var client=require(_0x7161('0x0'));exports[_0x7161('0x1')]=function(_0x8a9359){return client['Request'](_0x7161('0x2'),{'body':_0x8a9359,'log':_0x7161('0x3')});};
\ No newline at end of file
+var _0xe798=['Request','createMailMessage','create'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0xe798,0x95));var _0x8e79=function(_0x17ee4d,_0x1bb14a){_0x17ee4d=_0x17ee4d-0x0;var _0x2ca2f3=_0xe798[_0x17ee4d];return _0x2ca2f3;};'use strict';var client=require('../client');exports[_0x8e79('0x0')]=function(_0x57be56){return client[_0x8e79('0x1')]('CreateMailMessage',{'body':_0x57be56,'log':_0x8e79('0x2')});};
\ No newline at end of file
index b9d5d58..c0376ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f61=['Request','GetMailQueue','timeout','strategy','User','online','../client','getMailQueues'];(function(_0xd8ff23,_0x52fb20){var _0x4cc4a6=function(_0x2dad74){while(--_0x2dad74){_0xd8ff23['push'](_0xd8ff23['shift']());}};_0x4cc4a6(++_0x52fb20);}(_0x2f61,0x7e));var _0x12f6=function(_0xfc56fa,_0x5306e2){_0xfc56fa=_0xfc56fa-0x0;var _0x186e2b=_0x2f61[_0xfc56fa];return _0x186e2b;};'use strict';var client=require(_0x12f6('0x0'));exports[_0x12f6('0x1')]=function(){return function(){return client[_0x12f6('0x2')](_0x12f6('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x12f6('0x4'),_0x12f6('0x5')],'include':[{'model':_0x12f6('0x6'),'as':'Agents','attributes':['id','name',_0x12f6('0x7'),'mailPause']}]},'log':_0x12f6('0x1')});};};
\ No newline at end of file
+var _0x54bb=['name','timeout','strategy','Agents','mailPause','../client','Request'];(function(_0x4f3cce,_0x4088c4){var _0xc23f2a=function(_0x31291f){while(--_0x31291f){_0x4f3cce['push'](_0x4f3cce['shift']());}};_0xc23f2a(++_0x4088c4);}(_0x54bb,0x7c));var _0xb54b=function(_0x1a7e4b,_0x2fbd40){_0x1a7e4b=_0x1a7e4b-0x0;var _0x37a8fd=_0x54bb[_0x1a7e4b];return _0x37a8fd;};'use strict';var client=require(_0xb54b('0x0'));exports['getMailQueues']=function(){return function(){return client[_0xb54b('0x1')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0xb54b('0x2'),_0xb54b('0x3'),_0xb54b('0x4')],'include':[{'model':'User','as':_0xb54b('0x5'),'attributes':['id',_0xb54b('0x2'),'online',_0xb54b('0x6')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
index b74104c..1880c13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2595=['UpdateMailQueueReport','../client','Request'];(function(_0x5c7a85,_0x41dd19){var _0x35290f=function(_0x26215b){while(--_0x26215b){_0x5c7a85['push'](_0x5c7a85['shift']());}};_0x35290f(++_0x41dd19);}(_0x2595,0xf4));var _0x5259=function(_0x1fd441,_0x2629bf){_0x1fd441=_0x1fd441-0x0;var _0x411a91=_0x2595[_0x1fd441];return _0x411a91;};'use strict';var client=require(_0x5259('0x0'));exports['create']=function(_0x16ec0f){return client[_0x5259('0x1')]('CreateMailQueueReport',{'body':_0x16ec0f,'log':'CreateMailQueueReport'});};exports['update']=function(_0x1d602d,_0x453d22){return client[_0x5259('0x1')](_0x5259('0x2'),{'body':_0x453d22,'options':{'where':{'uniqueid':_0x1d602d},'order':[['id','DESC']],'limit':0x1},'log':_0x5259('0x2')});};
\ No newline at end of file
+var _0xefc4=['DESC','create','Request','CreateMailQueueReport','UpdateMailQueueReport'];(function(_0x3d007f,_0x52f761){var _0x341999=function(_0x414676){while(--_0x414676){_0x3d007f['push'](_0x3d007f['shift']());}};_0x341999(++_0x52f761);}(_0xefc4,0xd8));var _0x4efc=function(_0x3e91a9,_0x53c466){_0x3e91a9=_0x3e91a9-0x0;var _0x25c9ad=_0xefc4[_0x3e91a9];return _0x25c9ad;};'use strict';var client=require('../client');exports[_0x4efc('0x0')]=function(_0x5a40f5){return client[_0x4efc('0x1')](_0x4efc('0x2'),{'body':_0x5a40f5,'log':_0x4efc('0x2')});};exports['update']=function(_0x5a3a28,_0x207eb1){return client['Request'](_0x4efc('0x3'),{'body':_0x207eb1,'options':{'where':{'uniqueid':_0x5a3a28},'order':[['id',_0x4efc('0x4')]],'limit':0x1},'log':_0x4efc('0x3')});};
\ No newline at end of file
index 149ae04..419f6c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff3b=['updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','update','Request','UpdateOpenchannelInteraction'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0xff3b,0xf2));var _0xbff3=function(_0x43f2e2,_0x25c5ea){_0x43f2e2=_0x43f2e2-0x0;var _0x262f48=_0xff3b[_0x43f2e2];return _0x262f48;};'use strict';var client=require('../client');exports[_0xbff3('0x0')]=function(_0x31472d,_0x46e17a){return client[_0xbff3('0x1')](_0xbff3('0x2'),{'body':_0x46e17a,'options':{'where':{'id':_0x31472d}},'log':_0xbff3('0x3')});};exports[_0xbff3('0x4')]=function(_0x1faca7,_0x5ea036){return client['Request'](_0xbff3('0x5'),{'body':_0x5ea036,'options':{'where':{'id':_0x1faca7}},'log':_0xbff3('0x6')});};
\ No newline at end of file
+var _0x63fb=['addTags','addTagsToChatInteraction','../client','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction'];(function(_0x14f88d,_0x4b9d99){var _0xc36bba=function(_0x4506df){while(--_0x4506df){_0x14f88d['push'](_0x14f88d['shift']());}};_0xc36bba(++_0x4b9d99);}(_0x63fb,0x16a));var _0xb63f=function(_0x28576e,_0x2d5cff){_0x28576e=_0x28576e-0x0;var _0x1df21c=_0x63fb[_0x28576e];return _0x1df21c;};'use strict';var client=require(_0xb63f('0x0'));exports['update']=function(_0x20c086,_0xc2a54b){return client[_0xb63f('0x1')](_0xb63f('0x2'),{'body':_0xc2a54b,'options':{'where':{'id':_0x20c086}},'log':_0xb63f('0x3')});};exports[_0xb63f('0x4')]=function(_0x192ff9,_0x5617c0){return client[_0xb63f('0x1')]('AddTagsToOpenchannelInteraction',{'body':_0x5617c0,'options':{'where':{'id':_0x192ff9}},'log':_0xb63f('0x5')});};
\ No newline at end of file
index af58edb..ee37381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bf8=['Request','createOpenchannelMessage','../client','create'];(function(_0x44a3cd,_0x42d84f){var _0x365613=function(_0x7ec68c){while(--_0x7ec68c){_0x44a3cd['push'](_0x44a3cd['shift']());}};_0x365613(++_0x42d84f);}(_0x1bf8,0x122));var _0x81bf=function(_0x25afd3,_0x10c66f){_0x25afd3=_0x25afd3-0x0;var _0x19edad=_0x1bf8[_0x25afd3];return _0x19edad;};'use strict';var client=require(_0x81bf('0x0'));exports[_0x81bf('0x1')]=function(_0x3b604a){return client[_0x81bf('0x2')]('CreateOpenchannelMessage',{'body':_0x3b604a,'log':_0x81bf('0x3')});};
\ No newline at end of file
+var _0xb248=['CreateOpenchannelMessage','createOpenchannelMessage','create'];(function(_0x1f4449,_0xe1b863){var _0x1c860a=function(_0x89df4f){while(--_0x89df4f){_0x1f4449['push'](_0x1f4449['shift']());}};_0x1c860a(++_0xe1b863);}(_0xb248,0xc8));var _0x8b24=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xb248[_0x565c49];return _0x20ca34;};'use strict';var client=require('../client');exports[_0x8b24('0x0')]=function(_0x3e4f18){return client['Request'](_0x8b24('0x1'),{'body':_0x3e4f18,'log':_0x8b24('0x2')});};
\ No newline at end of file
index 76b455f..af8342f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ac7=['timeout','strategy','User','Agents','online','openchannelPause','getOpenchannelQueues','../client','Request','GetOpenchannelQueue','name'];(function(_0xfb8e9c,_0x4bfaec){var _0x432968=function(_0x574cce){while(--_0x574cce){_0xfb8e9c['push'](_0xfb8e9c['shift']());}};_0x432968(++_0x4bfaec);}(_0x3ac7,0xcd));var _0x73ac=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x3ac7[_0x1035c1];return _0x308d67;};'use strict';var client=require(_0x73ac('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0x73ac('0x1')](_0x73ac('0x2'),{'options':{'raw':![],'attributes':['id',_0x73ac('0x3'),_0x73ac('0x4'),_0x73ac('0x5')],'include':[{'model':_0x73ac('0x6'),'as':_0x73ac('0x7'),'attributes':['id',_0x73ac('0x3'),_0x73ac('0x8'),_0x73ac('0x9')]}]},'log':_0x73ac('0xa')});};};
\ No newline at end of file
+var _0x10a7=['name','strategy','User','Agents','../client','getOpenchannelQueues','Request','GetOpenchannelQueue'];(function(_0x398bbd,_0x46d80b){var _0x223e3c=function(_0xd89de1){while(--_0xd89de1){_0x398bbd['push'](_0x398bbd['shift']());}};_0x223e3c(++_0x46d80b);}(_0x10a7,0xd4));var _0x710a=function(_0x43d320,_0x20ae4c){_0x43d320=_0x43d320-0x0;var _0xa81463=_0x10a7[_0x43d320];return _0xa81463;};'use strict';var client=require(_0x710a('0x0'));exports[_0x710a('0x1')]=function(){return function(){return client[_0x710a('0x2')](_0x710a('0x3'),{'options':{'raw':![],'attributes':['id',_0x710a('0x4'),'timeout',_0x710a('0x5')],'include':[{'model':_0x710a('0x6'),'as':_0x710a('0x7'),'attributes':['id','name','online','openchannelPause']}]},'log':_0x710a('0x1')});};};
\ No newline at end of file
index 43a0c2f..d2560d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a93=['DESC','UpdateOpenchannelQueueReport','../client','CreateOpenchannelQueueReport','update'];(function(_0x31b3db,_0xa62702){var _0x1ae940=function(_0xe9cbd){while(--_0xe9cbd){_0x31b3db['push'](_0x31b3db['shift']());}};_0x1ae940(++_0xa62702);}(_0x6a93,0x188));var _0x36a9=function(_0x2cfca0,_0x2e04af){_0x2cfca0=_0x2cfca0-0x0;var _0x564296=_0x6a93[_0x2cfca0];return _0x564296;};'use strict';var client=require(_0x36a9('0x0'));exports['create']=function(_0x322200){return client['Request'](_0x36a9('0x1'),{'body':_0x322200,'log':_0x36a9('0x1')});};exports[_0x36a9('0x2')]=function(_0x4b78ad,_0x93a67c){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x93a67c,'options':{'where':{'uniqueid':_0x4b78ad},'order':[['id',_0x36a9('0x3')]],'limit':0x1},'log':_0x36a9('0x4')});};
\ No newline at end of file
+var _0xf5fd=['../client','create','Request','UpdateOpenchannelQueueReport'];(function(_0x3b0d02,_0x408bd0){var _0x11b827=function(_0xc494c3){while(--_0xc494c3){_0x3b0d02['push'](_0x3b0d02['shift']());}};_0x11b827(++_0x408bd0);}(_0xf5fd,0xc8));var _0xdf5f=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xf5fd[_0x59ee6f];return _0x4c0979;};'use strict';var client=require(_0xdf5f('0x0'));exports[_0xdf5f('0x1')]=function(_0x1b8f2b){return client[_0xdf5f('0x2')]('CreateOpenchannelQueueReport',{'body':_0x1b8f2b,'log':'CreateOpenchannelQueueReport'});};exports['update']=function(_0xd6f969,_0x3ad100){return client[_0xdf5f('0x2')](_0xdf5f('0x3'),{'body':_0x3ad100,'options':{'where':{'uniqueid':_0xd6f969},'order':[['id','DESC']],'limit':0x1},'log':_0xdf5f('0x3')});};
\ No newline at end of file
index 931c874..d8d1273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb07f=['update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags','addTagsToSmsInteraction','../client'];(function(_0x1ccbfe,_0x14c159){var _0x2e52d6=function(_0x35d717){while(--_0x35d717){_0x1ccbfe['push'](_0x1ccbfe['shift']());}};_0x2e52d6(++_0x14c159);}(_0xb07f,0x109));var _0xfb07=function(_0x4e731a,_0x268b0a){_0x4e731a=_0x4e731a-0x0;var _0xac9961=_0xb07f[_0x4e731a];return _0xac9961;};'use strict';var client=require(_0xfb07('0x0'));exports[_0xfb07('0x1')]=function(_0x3088a0,_0xdf10d4){return client[_0xfb07('0x2')](_0xfb07('0x3'),{'body':_0xdf10d4,'options':{'where':{'id':_0x3088a0}},'log':_0xfb07('0x4')});};exports[_0xfb07('0x5')]=function(_0x3b3c05,_0x2fc1ce){return client[_0xfb07('0x2')]('AddTagsToSmsInteraction',{'body':_0x2fc1ce,'options':{'where':{'id':_0x3b3c05}},'log':_0xfb07('0x6')});};
\ No newline at end of file
+var _0xa37e=['UpdateSmsInteraction','addTags','AddTagsToSmsInteraction','Request'];(function(_0x5d56b3,_0xc6aa3c){var _0x306ae0=function(_0x1dd0a8){while(--_0x1dd0a8){_0x5d56b3['push'](_0x5d56b3['shift']());}};_0x306ae0(++_0xc6aa3c);}(_0xa37e,0x97));var _0xea37=function(_0x18d3b3,_0x5253b1){_0x18d3b3=_0x18d3b3-0x0;var _0x1ebfcd=_0xa37e[_0x18d3b3];return _0x1ebfcd;};'use strict';var client=require('../client');exports['update']=function(_0x474450,_0x42f098){return client[_0xea37('0x0')](_0xea37('0x1'),{'body':_0x42f098,'options':{'where':{'id':_0x474450}},'log':'updateSmsInteraction'});};exports[_0xea37('0x2')]=function(_0x537c5a,_0x360ed5){return client[_0xea37('0x0')](_0xea37('0x3'),{'body':_0x360ed5,'options':{'where':{'id':_0x537c5a}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
index f51761a..72226ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2874=['create','Request','createSmsMessage','../client'];(function(_0x20e2d0,_0x22f45d){var _0x1dc9d7=function(_0x2c0d8f){while(--_0x2c0d8f){_0x20e2d0['push'](_0x20e2d0['shift']());}};_0x1dc9d7(++_0x22f45d);}(_0x2874,0x19f));var _0x4287=function(_0x549278,_0x450754){_0x549278=_0x549278-0x0;var _0x1ea9a1=_0x2874[_0x549278];return _0x1ea9a1;};'use strict';var client=require(_0x4287('0x0'));exports[_0x4287('0x1')]=function(_0x38589f){return client[_0x4287('0x2')]('CreateSmsMessage',{'body':_0x38589f,'log':_0x4287('0x3')});};
\ No newline at end of file
+var _0x1f71=['create','Request','CreateSmsMessage','createSmsMessage','../client'];(function(_0x1149b2,_0x33eebc){var _0x2b7ec0=function(_0x5512e9){while(--_0x5512e9){_0x1149b2['push'](_0x1149b2['shift']());}};_0x2b7ec0(++_0x33eebc);}(_0x1f71,0x90));var _0x11f7=function(_0x1945c9,_0x4db56a){_0x1945c9=_0x1945c9-0x0;var _0x2a1b45=_0x1f71[_0x1945c9];return _0x2a1b45;};'use strict';var client=require(_0x11f7('0x0'));exports[_0x11f7('0x1')]=function(_0x4ee357){return client[_0x11f7('0x2')](_0x11f7('0x3'),{'body':_0x4ee357,'log':_0x11f7('0x4')});};
\ No newline at end of file
index b1ee0d8..253e5a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','online','smsPause','../client','getSmsQueues','Request','timeout','User','Agents'];(function(_0x4d5afb,_0x55d596){var _0xda940c=function(_0x41bce4){while(--_0x41bce4){_0x4d5afb['push'](_0x4d5afb['shift']());}};_0xda940c(++_0x55d596);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0a9e('0x3'),'strategy'],'include':[{'model':_0x0a9e('0x4'),'as':_0x0a9e('0x5'),'attributes':['id',_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x41b363,_0x474049){var _0x68e722=function(_0xf2f315){while(--_0xf2f315){_0x41b363['push'](_0x41b363['shift']());}};_0x68e722(++_0x474049);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x356127,_0x4873ac){_0x356127=_0x356127-0x0;var _0x5d4c75=_0xcb91[_0x356127];return _0x5d4c75;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index 7df1c08..85ed493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x41b3dd,_0x58caad){var _0x28bef8=function(_0x253798){while(--_0x253798){_0x41b3dd['push'](_0x41b3dd['shift']());}};_0x28bef8(++_0x58caad);}(_0x55ca,0x126));var _0xa55c=function(_0x104993,_0x3f9a6b){_0x104993=_0x104993-0x0;var _0x105a96=_0x55ca[_0x104993];return _0x105a96;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
+var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x3bc989,_0x158774){var _0x185939=function(_0x5c15bf){while(--_0x5c15bf){_0x3bc989['push'](_0x3bc989['shift']());}};_0x185939(++_0x158774);}(_0x3e74,0x175));var _0x43e7=function(_0x19b4b1,_0xae6489){_0x19b4b1=_0x19b4b1-0x0;var _0x2d60e9=_0x3e74[_0x19b4b1];return _0x2d60e9;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
index 01c8604..99d89f3 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(_0x52a548,_0x4fd002){var _0x40bdd6=function(_0xb4bd62){while(--_0xb4bd62){_0x52a548['push'](_0x52a548['shift']());}};_0x40bdd6(++_0x4fd002);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'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(_0x1b8873,_0xd62bef){var _0x35fa2=function(_0x1fe822){while(--_0x1fe822){_0x1b8873['push'](_0x1b8873['shift']());}};_0x35fa2(++_0xd62bef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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 3ec2fd0..4cef234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ad5=['AddTagsToWhatsappInteraction','../client','update','updateWhatsappInteraction','addTags','Request'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8ad5,0xf1));var _0x58ad=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x8ad5[_0x23e7c1];return _0x1add43;};'use strict';var client=require(_0x58ad('0x0'));exports[_0x58ad('0x1')]=function(_0x114e73,_0x263210){return client['Request']('UpdateWhatsappInteraction',{'body':_0x263210,'options':{'where':{'id':_0x114e73}},'log':_0x58ad('0x2')});};exports[_0x58ad('0x3')]=function(_0x223e54,_0x22aba9){return client[_0x58ad('0x4')](_0x58ad('0x5'),{'body':_0x22aba9,'options':{'where':{'id':_0x223e54}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0x8ace=['updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x8ace,0x1bc));var _0xe8ac=function(_0x36cf3c,_0x317ae3){_0x36cf3c=_0x36cf3c-0x0;var _0x2a2c00=_0x8ace[_0x36cf3c];return _0x2a2c00;};'use strict';var client=require(_0xe8ac('0x0'));exports[_0xe8ac('0x1')]=function(_0x2b36fd,_0x17e173){return client[_0xe8ac('0x2')](_0xe8ac('0x3'),{'body':_0x17e173,'options':{'where':{'id':_0x2b36fd}},'log':_0xe8ac('0x4')});};exports[_0xe8ac('0x5')]=function(_0x114351,_0xf6af00){return client[_0xe8ac('0x2')](_0xe8ac('0x6'),{'body':_0xf6af00,'options':{'where':{'id':_0x114351}},'log':_0xe8ac('0x7')});};
\ No newline at end of file
index 1550d4a..3b88348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd7=['../client','create','Request','CreateWhatsappMessage'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0x4bd7,0x1a0));var _0x74bd=function(_0x1ef093,_0x44e1ed){_0x1ef093=_0x1ef093-0x0;var _0x3728ca=_0x4bd7[_0x1ef093];return _0x3728ca;};'use strict';var client=require(_0x74bd('0x0'));exports[_0x74bd('0x1')]=function(_0x5058c8){return client[_0x74bd('0x2')](_0x74bd('0x3'),{'body':_0x5058c8,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0x8eee=['../client','CreateWhatsappMessage'];(function(_0x23aa51,_0x17245a){var _0x33d11a=function(_0x5200c4){while(--_0x5200c4){_0x23aa51['push'](_0x23aa51['shift']());}};_0x33d11a(++_0x17245a);}(_0x8eee,0xae));var _0xe8ee=function(_0x55841f,_0x487812){_0x55841f=_0x55841f-0x0;var _0x4c5ccf=_0x8eee[_0x55841f];return _0x4c5ccf;};'use strict';var client=require(_0xe8ee('0x0'));exports['create']=function(_0x253365){return client['Request'](_0xe8ee('0x1'),{'body':_0x253365,'log':'createWhatsappMessage'});};
\ No newline at end of file
index 3eb4e22..7335b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b21=['whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','name','timeout','online'];(function(_0x213213,_0x16ed61){var _0x48d351=function(_0x158e0a){while(--_0x158e0a){_0x213213['push'](_0x213213['shift']());}};_0x48d351(++_0x16ed61);}(_0x3b21,0xf1));var _0x13b2=function(_0x5c60bc,_0x3295c5){_0x5c60bc=_0x5c60bc-0x0;var _0x5642b4=_0x3b21[_0x5c60bc];return _0x5642b4;};'use strict';var client=require(_0x13b2('0x0'));exports[_0x13b2('0x1')]=function(){return function(){return client[_0x13b2('0x2')](_0x13b2('0x3'),{'options':{'raw':![],'attributes':['id',_0x13b2('0x4'),_0x13b2('0x5'),'strategy'],'include':[{'model':'User','as':'Agents','attributes':['id',_0x13b2('0x4'),_0x13b2('0x6'),_0x13b2('0x7')]}]},'log':_0x13b2('0x1')});};};
\ No newline at end of file
+var _0xa194=['../client','getWhatsappQueues','GetWhatsappQueue','name','timeout','strategy','User','Agents','online'];(function(_0x34a573,_0x2ca9bf){var _0x288e2f=function(_0x533c8e){while(--_0x533c8e){_0x34a573['push'](_0x34a573['shift']());}};_0x288e2f(++_0x2ca9bf);}(_0xa194,0x105));var _0x4a19=function(_0x52dfa5,_0x3908fd){_0x52dfa5=_0x52dfa5-0x0;var _0x1eaf0b=_0xa194[_0x52dfa5];return _0x1eaf0b;};'use strict';var client=require(_0x4a19('0x0'));exports[_0x4a19('0x1')]=function(){return function(){return client['Request'](_0x4a19('0x2'),{'options':{'raw':![],'attributes':['id',_0x4a19('0x3'),_0x4a19('0x4'),_0x4a19('0x5')],'include':[{'model':_0x4a19('0x6'),'as':_0x4a19('0x7'),'attributes':['id',_0x4a19('0x3'),_0x4a19('0x8'),'whatsappPause']}]},'log':_0x4a19('0x1')});};};
\ No newline at end of file
index 8e76557..c9be631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x006e=['DESC','../client','create','Request','CreateWhatsappQueueReport','UpdateWhatsappQueueReport'];(function(_0x4ef69b,_0x5dc64f){var _0x201142=function(_0xce98d2){while(--_0xce98d2){_0x4ef69b['push'](_0x4ef69b['shift']());}};_0x201142(++_0x5dc64f);}(_0x006e,0x79));var _0xe006=function(_0x37420b,_0x9f3340){_0x37420b=_0x37420b-0x0;var _0x531f8a=_0x006e[_0x37420b];return _0x531f8a;};'use strict';var client=require(_0xe006('0x0'));exports[_0xe006('0x1')]=function(_0x2c2cdc){return client[_0xe006('0x2')](_0xe006('0x3'),{'body':_0x2c2cdc,'log':_0xe006('0x3')});};exports['update']=function(_0x71da29,_0x5c33cb){return client[_0xe006('0x2')](_0xe006('0x4'),{'body':_0x5c33cb,'options':{'where':{'uniqueid':_0x71da29},'order':[['id',_0xe006('0x5')]],'limit':0x1},'log':_0xe006('0x4')});};
\ No newline at end of file
+var _0x3977=['DESC','create','CreateWhatsappQueueReport','Request','UpdateWhatsappQueueReport'];(function(_0x5906a5,_0x48af0a){var _0x1b9a31=function(_0x4b72ac){while(--_0x4b72ac){_0x5906a5['push'](_0x5906a5['shift']());}};_0x1b9a31(++_0x48af0a);}(_0x3977,0xbf));var _0x7397=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x3977[_0x5b644e];return _0x49c6bf;};'use strict';var client=require('../client');exports[_0x7397('0x0')]=function(_0xb9d00a){return client['Request'](_0x7397('0x1'),{'body':_0xb9d00a,'log':'CreateWhatsappQueueReport'});};exports['update']=function(_0x4f1b59,_0x2b2308){return client[_0x7397('0x2')](_0x7397('0x3'),{'body':_0x2b2308,'options':{'where':{'uniqueid':_0x4f1b59},'order':[['id',_0x7397('0x4')]],'limit':0x1},'log':_0x7397('0x3')});};
\ No newline at end of file
index 2b185c4..90ecd45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda32=['complete','[%s][AGENT]\x20ROUTING\x20END','close','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','error','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','map','join','stop','find','timeout','atimeout','channel','START:%s','rules','[%s][AGENT]\x20ROUTING\x20STOPPED'];(function(_0x174501,_0x5472b8){var _0x4d5f7e=function(_0x445af7){while(--_0x445af7){_0x174501['push'](_0x174501['shift']());}};_0x4d5f7e(++_0x5472b8);}(_0xda32,0x106));var _0x2da3=function(_0x4a6df7,_0x59449f){_0x4a6df7=_0x4a6df7-0x0;var _0x6bfb0=_0xda32[_0x4a6df7];return _0x6bfb0;};'use strict';var schema=require(_0x2da3('0x0'));var _=require(_0x2da3('0x1'));var util=require(_0x2da3('0x2'));var seqqueue=require(_0x2da3('0x3'));var logger=require(_0x2da3('0x4'))(_0x2da3('0x5'));var strategy=require(_0x2da3('0x6'));var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x2da3('0x7'),'message':_0x2da3('0x8')}});function writeLog(_0x25ef3e,_0xe1047b,_0x3cdc8d){return logger[_0x2da3('0x9')](util[_0x2da3('0xa')](_0x2da3('0xb'),_0x25ef3e,_0xe1047b['name'],_0x3cdc8d));}function handleFindAgent(_0x1c7aa1){return function(_0x1f9c4d){return _0x1f9c4d[_0x2da3('0xc')]['toLowerCase']()===_0x1c7aa1[_0x2da3('0xd')]();};}exports[_0x2da3('0xe')]=function(_0x4593c1,_0x1ffbe0,_0x41d7c1,_0x1bb4ec){return function(_0x32c598){try{var _0x4406ff={'name':_0x1ffbe0[0x0],'timeout':_0x1ffbe0[0x1]};var _0x461ae1=queue[_0x2da3('0x0')](_0x4406ff,{'typecast':!![]});if(_0x461ae1[_0x2da3('0xf')]){logger['error']('[%s][AGENT]\x20%s',_0x4593c1,_[_0x2da3('0x10')](_0x461ae1,'message')[_0x2da3('0x11')](',\x20'));_0x32c598[_0x2da3('0x12')]();}else{var _0x366855=_[_0x2da3('0x13')](_0x41d7c1['agents'],handleFindAgent(_0x4406ff[_0x2da3('0xc')]));if(_0x366855){var _0xdfa821=(_0x4406ff[_0x2da3('0x14')]||0xa)*0x3e8;var _0x4fa020,_0x3f5e7e;var _0x47df74=seqqueue['createQueue'](_0xdfa821);_0x47df74['id']=_0x4593c1;_0x47df74[_0x2da3('0x15')]=_0xdfa821;_0x47df74[_0x2da3('0x16')]=_0x1bb4ec[_0x2da3('0x16')];writeLog(_0x4593c1,_0x366855,util['format'](_0x2da3('0x17'),_0xdfa821));_0x41d7c1[_0x2da3('0x18')][_0x4593c1]['on']('end',function(){logger[_0x2da3('0x9')](_0x2da3('0x19'),_0x4593c1);clearTimeout(_0x3f5e7e);_0x3f5e7e=undefined;_0x47df74['close']();if(_0x41d7c1[_0x2da3('0x18')][_0x4593c1]){delete _0x41d7c1[_0x2da3('0x18')][_0x4593c1];}_0x32c598[_0x2da3('0x12')]();});_0x41d7c1[_0x2da3('0x18')][_0x4593c1]['on'](_0x2da3('0x1a'),function(){if(_0x41d7c1['rules'][_0x4593c1]){delete _0x41d7c1[_0x2da3('0x18')][_0x4593c1];}});_0x3f5e7e=setTimeout(function(){logger[_0x2da3('0x9')](_0x2da3('0x1b'),_0x4593c1);clearTimeout(_0x3f5e7e);_0x47df74[_0x2da3('0x1c')]();_0x32c598[_0x2da3('0x1d')]();},_0xdfa821);strategy[_0x2da3('0x1e')](_0x47df74,_0x366855,_0x41d7c1,_0x1bb4ec);}else{logger['error'](_0x2da3('0x1f'),_0x4593c1,_0x4406ff[_0x2da3('0xc')]);_0x32c598[_0x2da3('0x12')]();}}}catch(_0x3834e5){console[_0x2da3('0x20')](_0x3834e5);logger[_0x2da3('0x21')](_0x2da3('0x22'),_0x4593c1,_0x3834e5[_0x2da3('0x23')]);_0x32c598[_0x2da3('0x12')]();}};};
\ No newline at end of file
+var _0xd5f0=['seq-queue','../../../../config/logger','routing','./strategy','string','timeout\x20is\x20a\x20number','info','format','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','map','message','join','stop','find','createQueue','channel','START:%s','rules','[%s][AGENT]\x20ROUTING\x20STOPPED','close','[%s][AGENT]\x20ROUTING\x20END','validate','lodash','util'];(function(_0x35f748,_0x2cd546){var _0x17ae2b=function(_0xec9002){while(--_0xec9002){_0x35f748['push'](_0x35f748['shift']());}};_0x17ae2b(++_0x2cd546);}(_0xd5f0,0x1bd));var _0x0d5f=function(_0x35b6cd,_0x1e1cff){_0x35b6cd=_0x35b6cd-0x0;var _0xac2b87=_0xd5f0[_0x35b6cd];return _0xac2b87;};'use strict';var schema=require(_0x0d5f('0x0'));var _=require(_0x0d5f('0x1'));var util=require(_0x0d5f('0x2'));var seqqueue=require(_0x0d5f('0x3'));var logger=require(_0x0d5f('0x4'))(_0x0d5f('0x5'));var strategy=require(_0x0d5f('0x6'));var queue=schema({'name':{'type':_0x0d5f('0x7'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':_0x0d5f('0x8')}});function writeLog(_0x5816b2,_0x4e3f1a,_0x4dcce1){return logger[_0x0d5f('0x9')](util[_0x0d5f('0xa')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x5816b2,_0x4e3f1a[_0x0d5f('0xb')],_0x4dcce1));}function handleFindAgent(_0x321ae0){return function(_0x37e45b){return _0x37e45b['name'][_0x0d5f('0xc')]()===_0x321ae0['toLowerCase']();};}exports[_0x0d5f('0xd')]=function(_0x50a2a4,_0x506f6a,_0xa43106,_0xa153ce){return function(_0x31ac72){try{var _0x25c76d={'name':_0x506f6a[0x0],'timeout':_0x506f6a[0x1]};var _0x262b9b=queue[_0x0d5f('0x0')](_0x25c76d,{'typecast':!![]});if(_0x262b9b['length']){logger[_0x0d5f('0xe')](_0x0d5f('0xf'),_0x50a2a4,_[_0x0d5f('0x10')](_0x262b9b,_0x0d5f('0x11'))[_0x0d5f('0x12')](',\x20'));_0x31ac72[_0x0d5f('0x13')]();}else{var _0x3c56b1=_[_0x0d5f('0x14')](_0xa43106['agents'],handleFindAgent(_0x25c76d[_0x0d5f('0xb')]));if(_0x3c56b1){var _0x87a8a5=(_0x25c76d['timeout']||0xa)*0x3e8;var _0x27138b,_0xf98e53;var _0x6c76f8=seqqueue[_0x0d5f('0x15')](_0x87a8a5);_0x6c76f8['id']=_0x50a2a4;_0x6c76f8['atimeout']=_0x87a8a5;_0x6c76f8['channel']=_0xa153ce[_0x0d5f('0x16')];writeLog(_0x50a2a4,_0x3c56b1,util[_0x0d5f('0xa')](_0x0d5f('0x17'),_0x87a8a5));_0xa43106[_0x0d5f('0x18')][_0x50a2a4]['on']('end',function(){logger[_0x0d5f('0x9')](_0x0d5f('0x19'),_0x50a2a4);clearTimeout(_0xf98e53);_0xf98e53=undefined;_0x6c76f8[_0x0d5f('0x1a')]();if(_0xa43106['rules'][_0x50a2a4]){delete _0xa43106['rules'][_0x50a2a4];}_0x31ac72[_0x0d5f('0x13')]();});_0xa43106['rules'][_0x50a2a4]['on']('complete',function(){if(_0xa43106[_0x0d5f('0x18')][_0x50a2a4]){delete _0xa43106[_0x0d5f('0x18')][_0x50a2a4];}});_0xf98e53=setTimeout(function(){logger['info'](_0x0d5f('0x1b'),_0x50a2a4);clearTimeout(_0xf98e53);_0x6c76f8[_0x0d5f('0x1a')]();_0x31ac72['next']();},_0x87a8a5);strategy['agent'](_0x6c76f8,_0x3c56b1,_0xa43106,_0xa153ce);}else{logger[_0x0d5f('0xe')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x50a2a4,_0x25c76d[_0x0d5f('0xb')]);_0x31ac72[_0x0d5f('0x13')]();}}}catch(_0x3db8c2){console['log'](_0x3db8c2);logger[_0x0d5f('0xe')]('[%s][QUEUE]\x20%s',_0x50a2a4,_0x3db8c2['stack']);_0x31ac72[_0x0d5f('0x13')]();}};};
\ No newline at end of file
index b3f8479..2ff43c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8d=['stringify','finally','info','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message','postText','providerName','amazonlex','providerResponse','dialogState','Failed','lodash','moment','aws-sdk','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','AccountId','account','upperFirst','InteractionId','created','getMustacheRender','Message','create','then','[%s][AMAZONLEX]\x20%s','body','catch','error'];(function(_0xc37c8,_0x182df1){var _0x77188f=function(_0xfbdddc){while(--_0xfbdddc){_0xc37c8['push'](_0xc37c8['shift']());}};_0x77188f(++_0x182df1);}(_0xce8d,0x134));var _0xdce8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce8d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdce8('0x0'));var moment=require(_0xdce8('0x1'));var AWS=require(_0xdce8('0x2'));var utils=require('./utils');var logger=require(_0xdce8('0x3'))('routing');var rpc={'chatMessage':require(_0xdce8('0x4')),'openchannelMessage':require(_0xdce8('0x5')),'mailMessage':require(_0xdce8('0x6')),'smsMessage':require(_0xdce8('0x7')),'faxMessage':require(_0xdce8('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xdce8('0x9')]=function(_0x477e42,_0x37c6a1){return function(_0x53c338){try{if(!_['isNil'](this[_0xdce8('0xa')]['UserId'])){logger['info']('[%s][AMAZONLEX]\x20%s',_0x477e42,_0xdce8('0xb'));return _0x53c338[_0xdce8('0xc')]();}var _0x3dfa76={'ContactId':this[_0xdce8('0xd')]['id'],'sentAt':moment()[_0xdce8('0xe')](_0xdce8('0xf')),'direction':_0xdce8('0x10')};if(this[_0xdce8('0x11')]===_0xdce8('0x12')||this['channel']===_0xdce8('0x13')){_0x3dfa76[_0xdce8('0x14')]=this[_0xdce8('0xa')]['phone'];}var _0x15c15e=this[_0xdce8('0x11')];if(_0x15c15e===_0xdce8('0x15')){_0x3dfa76['ChatWebsiteId']=this['account']['id'];}else{_0x3dfa76[_['upperFirst'](_0x15c15e)+_0xdce8('0x16')]=this[_0xdce8('0x17')]['id'];}_0x3dfa76[_[_0xdce8('0x18')](_0x15c15e)+_0xdce8('0x19')]=this[_0xdce8('0xa')]['id'];if(this[_0xdce8('0xa')][_0xdce8('0x1a')]){var _0x5e9fea=_0x37c6a1[0x4];if(!_['isEmpty'](_0x5e9fea)){_0x3dfa76['body']=utils[_0xdce8('0x1b')](_0x5e9fea,this);return rpc[_0x15c15e+_0xdce8('0x1c')][_0xdce8('0x1d')](_0x3dfa76)[_0xdce8('0x1e')](function(_0x1f4b1){logger['info'](_0xdce8('0x1f'),_0x477e42,_0x3dfa76[_0xdce8('0x20')]);})[_0xdce8('0x21')](function(_0x1965a0){logger[_0xdce8('0x22')]('[%s][AMAZONLEX]\x20%s',_0x477e42,JSON[_0xdce8('0x23')](_0x1965a0));})[_0xdce8('0x24')](function(){logger[_0xdce8('0x25')](_0xdce8('0x26'),_0x477e42);_0x53c338[_0xdce8('0x27')]();});}else{logger[_0xdce8('0x25')](_0xdce8('0x28'),_0x477e42);_0x53c338['stop']();}}else{var _0x295be5=this;var _0x1c9df2=new AWS[(_0xdce8('0x29'))]({'accessKeyId':_0x37c6a1[0x0],'secretAccessKey':_0x37c6a1[0x1],'region':_0x37c6a1[0x2]});var _0x2c666f={'botAlias':'$LATEST','botName':_0x37c6a1[0x3],'inputText':this[_0xdce8('0x2a')]['body'],'userId':this[_0xdce8('0x11')]+':'+this[_0xdce8('0xa')]['id']['toString']()};_0x1c9df2[_0xdce8('0x2b')](_0x2c666f,function(_0x508666,_0x993240){if(_0x508666){logger['error']('[%s][AMAZONLEX]\x20%s',_0x477e42,_0x508666[_0xdce8('0x2a')]);_0x53c338['next']();}else if(_0x993240&&_0x993240[_0xdce8('0x2a')]){_0x295be5[_0xdce8('0x20')]['amazonlex']=_0x993240;_0x3dfa76[_0xdce8('0x20')]=_0x993240[_0xdce8('0x2a')];_0x3dfa76[_0xdce8('0x2c')]=_0xdce8('0x2d');_0x3dfa76[_0xdce8('0x2e')]=JSON[_0xdce8('0x23')](_0x993240);return rpc[_0x15c15e+_0xdce8('0x1c')][_0xdce8('0x1d')](_0x3dfa76)[_0xdce8('0x1e')](function(_0x2afd37){logger[_0xdce8('0x25')]('[%s][AMAZONLEX]\x20%s',_0x477e42,_0x3dfa76['body']);if(_0x993240[_0xdce8('0x2f')]==_0xdce8('0x30')){_0x53c338['next']();}else{_0x53c338[_0xdce8('0x27')]();}})['catch'](function(_0x4ea93f){logger[_0xdce8('0x22')](_0xdce8('0x1f'),_0x477e42,JSON[_0xdce8('0x23')](_0x4ea93f));_0x53c338['next']();});}else{_0x53c338[_0xdce8('0xc')]();}});}}catch(_0x11a8cd){logger['error'](_0xdce8('0x1f'),_0x477e42,JSON[_0xdce8('0x23')](_0x11a8cd));_0x53c338[_0xdce8('0x27')]();}};};
\ No newline at end of file
+var _0x0f88=['lodash','moment','aws-sdk','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','sms','channel','whatsapp','phone','interaction','chat','ChatWebsiteId','upperFirst','InteractionId','created','body','getMustacheRender','Message','create','[%s][AMAZONLEX]\x20%s','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText','amazonlex','providerName','providerResponse','dialogState','Failed'];(function(_0x18d5d7,_0x19074b){var _0x30a9ea=function(_0x514f3f){while(--_0x514f3f){_0x18d5d7['push'](_0x18d5d7['shift']());}};_0x30a9ea(++_0x19074b);}(_0x0f88,0x66));var _0x80f8=function(_0x1b0597,_0xeffacc){_0x1b0597=_0x1b0597-0x0;var _0x2b6a2a=_0x0f88[_0x1b0597];return _0x2b6a2a;};'use strict';var _=require(_0x80f8('0x0'));var moment=require(_0x80f8('0x1'));var AWS=require(_0x80f8('0x2'));var utils=require('./utils');var logger=require(_0x80f8('0x3'))(_0x80f8('0x4'));var rpc={'chatMessage':require(_0x80f8('0x5')),'openchannelMessage':require(_0x80f8('0x6')),'mailMessage':require(_0x80f8('0x7')),'smsMessage':require(_0x80f8('0x8')),'faxMessage':require(_0x80f8('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x80f8('0xa')]=function(_0x436762,_0x4fcd0b){return function(_0x3bce04){try{if(!_[_0x80f8('0xb')](this['interaction'][_0x80f8('0xc')])){logger[_0x80f8('0xd')]('[%s][AMAZONLEX]\x20%s',_0x436762,_0x80f8('0xe'));return _0x3bce04[_0x80f8('0xf')]();}var _0x2671d8={'ContactId':this[_0x80f8('0x10')]['id'],'sentAt':moment()[_0x80f8('0x11')](_0x80f8('0x12')),'direction':'out'};if(this['channel']===_0x80f8('0x13')||this[_0x80f8('0x14')]===_0x80f8('0x15')){_0x2671d8[_0x80f8('0x16')]=this[_0x80f8('0x17')][_0x80f8('0x16')];}var _0x3047bf=this[_0x80f8('0x14')];if(_0x3047bf===_0x80f8('0x18')){_0x2671d8[_0x80f8('0x19')]=this['account']['id'];}else{_0x2671d8[_[_0x80f8('0x1a')](_0x3047bf)+'AccountId']=this['account']['id'];}_0x2671d8[_[_0x80f8('0x1a')](_0x3047bf)+_0x80f8('0x1b')]=this['interaction']['id'];if(this[_0x80f8('0x17')][_0x80f8('0x1c')]){var _0xc48563=_0x4fcd0b[0x4];if(!_['isEmpty'](_0xc48563)){_0x2671d8[_0x80f8('0x1d')]=utils[_0x80f8('0x1e')](_0xc48563,this);return rpc[_0x3047bf+_0x80f8('0x1f')][_0x80f8('0x20')](_0x2671d8)['then'](function(_0x317218){logger[_0x80f8('0xd')](_0x80f8('0x21'),_0x436762,_0x2671d8[_0x80f8('0x1d')]);})[_0x80f8('0x22')](function(_0xe8d5b0){logger[_0x80f8('0x23')](_0x80f8('0x21'),_0x436762,JSON[_0x80f8('0x24')](_0xe8d5b0));})[_0x80f8('0x25')](function(){logger[_0x80f8('0xd')](_0x80f8('0x26'),_0x436762);_0x3bce04[_0x80f8('0x27')]();});}else{logger[_0x80f8('0xd')](_0x80f8('0x28'),_0x436762);_0x3bce04[_0x80f8('0x27')]();}}else{var _0x5e62bc=this;var _0x15c649=new AWS[(_0x80f8('0x29'))]({'accessKeyId':_0x4fcd0b[0x0],'secretAccessKey':_0x4fcd0b[0x1],'region':_0x4fcd0b[0x2]});var _0x291037={'botAlias':_0x80f8('0x2a'),'botName':_0x4fcd0b[0x3],'inputText':this[_0x80f8('0x2b')]['body'],'userId':this[_0x80f8('0x14')]+':'+this[_0x80f8('0x17')]['id'][_0x80f8('0x2c')]()};_0x15c649[_0x80f8('0x2d')](_0x291037,function(_0xa62f1e,_0x55dea8){if(_0xa62f1e){logger['error'](_0x80f8('0x21'),_0x436762,_0xa62f1e[_0x80f8('0x2b')]);_0x3bce04[_0x80f8('0xf')]();}else if(_0x55dea8&&_0x55dea8[_0x80f8('0x2b')]){_0x5e62bc[_0x80f8('0x1d')][_0x80f8('0x2e')]=_0x55dea8;_0x2671d8['body']=_0x55dea8[_0x80f8('0x2b')];_0x2671d8[_0x80f8('0x2f')]=_0x80f8('0x2e');_0x2671d8[_0x80f8('0x30')]=JSON[_0x80f8('0x24')](_0x55dea8);return rpc[_0x3047bf+_0x80f8('0x1f')][_0x80f8('0x20')](_0x2671d8)['then'](function(_0x28c4cc){logger['info'](_0x80f8('0x21'),_0x436762,_0x2671d8[_0x80f8('0x1d')]);if(_0x55dea8[_0x80f8('0x31')]==_0x80f8('0x32')){_0x3bce04['next']();}else{_0x3bce04[_0x80f8('0x27')]();}})[_0x80f8('0x22')](function(_0x48c483){logger[_0x80f8('0x23')](_0x80f8('0x21'),_0x436762,JSON[_0x80f8('0x24')](_0x48c483));_0x3bce04[_0x80f8('0xf')]();});}else{_0x3bce04[_0x80f8('0xf')]();}});}}catch(_0x1d9780){logger[_0x80f8('0x23')](_0x80f8('0x21'),_0x436762,JSON['stringify'](_0x1d9780));_0x3bce04['stop']();}};};
\ No newline at end of file
index d5bac8e..3164065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f2e=['messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','auto_reply','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','autoreplyExecuted','Interaction','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','create','resolve','stop','lodash','moment','./utils','routing','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','contact','format','YYYY-MM-DD\x20HH:mm:ss','getMustacheRender','message','from','phone','read','subject','Re:','Re:\x20','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','inReplyTo'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x8f2e,0xe6));var _0xe8f2=function(_0x15b378,_0x4803e4){_0x15b378=_0x15b378-0x0;var _0x222a40=_0x8f2e[_0x15b378];return _0x222a40;};'use strict';var _=require(_0xe8f2('0x0'));var moment=require(_0xe8f2('0x1'));var utils=require(_0xe8f2('0x2'));var logger=require('../../../../config/logger')(_0xe8f2('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xe8f2('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xe8f2('0x5')),'whatsappMessage':require(_0xe8f2('0x6')),'chatInteraction':require(_0xe8f2('0x7')),'openchannelInteraction':require(_0xe8f2('0x8')),'mailInteraction':require(_0xe8f2('0x9')),'smsInteraction':require(_0xe8f2('0xa')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xe8f2('0xb'))};var mailRpc=require('../../mailRpc');exports[_0xe8f2('0xc')]=function(_0x50477b,_0x769c33,_0x44124c,_0x2549a1){return function(_0x150e66){try{var _0xd058e7=this[_0xe8f2('0xd')];if(_0xd058e7===_0xe8f2('0xe')&&_0x2549a1[_0xe8f2('0xf')][_0xe8f2('0x10')]){logger[_0xe8f2('0x11')](_0xe8f2('0x12'),_0x50477b,_0xe8f2('0x13'));return _0x150e66[_0xe8f2('0x14')]();}if(_0x769c33[0x0]==='1'&&(_[_0xe8f2('0x15')](this[_0xe8f2('0x16')][_0xe8f2('0x17')])||!this[_0xe8f2('0x16')][_0xe8f2('0x17')])){logger[_0xe8f2('0x11')](_0xe8f2('0x12'),_0x50477b,'Autoreply\x20already\x20sent');return _0x150e66[_0xe8f2('0x14')]();}if(_0x769c33[0x0]==='2'&&this[_0xe8f2('0x16')]['autoreplyExecuted']){logger['info']('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x50477b,'One\x20Time\x20already\x20sent');return _0x150e66['next']();}var _0x40e3c7={'ContactId':this[_0xe8f2('0x18')]['id'],'sentAt':moment()[_0xe8f2('0x19')](_0xe8f2('0x1a')),'direction':'out'};if(this['channel']===_0xe8f2('0xe')){_0x40e3c7['body']=utils[_0xe8f2('0x1b')](_0x769c33[0x2],this);}else{_0x40e3c7[_0xe8f2('0xf')]=utils[_0xe8f2('0x1b')](_0x769c33[0x1],this);}if(this[_0xe8f2('0x1c')]){_0x40e3c7['to']=this['message'][_0xe8f2('0x1d')]||'';if(this[_0xe8f2('0xd')]===_0xe8f2('0xe')&&_0x769c33[0x1]==='1'){_0x40e3c7['cc']=this[_0xe8f2('0x1c')]['cc']||'';}_0x40e3c7['from']=this[_0xe8f2('0x1c')]['to']||'';_0x40e3c7[_0xe8f2('0x1e')]=this[_0xe8f2('0x1c')][_0xe8f2('0x1e')]||'';_0x40e3c7[_0xe8f2('0x1f')]=!![];if(this[_0xe8f2('0x1c')]['subject']){_0x40e3c7[_0xe8f2('0x20')]='';_0x40e3c7[_0xe8f2('0x20')]+=_['startsWith'](this[_0xe8f2('0x1c')][_0xe8f2('0x20')],_0xe8f2('0x21'))?'':_0xe8f2('0x22');_0x40e3c7['subject']+=this['message'][_0xe8f2('0x20')];}}if(this['channel']==='chat'){_0x40e3c7[_0xe8f2('0x23')]=this[_0xe8f2('0x24')]['id'];}else{_0x40e3c7[_[_0xe8f2('0x25')](this['channel'])+_0xe8f2('0x26')]=this[_0xe8f2('0x24')]['id'];}_0x40e3c7[_[_0xe8f2('0x25')](this['channel'])+_0xe8f2('0x27')]=this[_0xe8f2('0x16')]['id'];var _0x4acd13=this[_0xe8f2('0x16')];if(rpc[this[_0xe8f2('0xd')]+_0xe8f2('0x28')]){if(this[_0xe8f2('0xd')]===_0xe8f2('0xe')){_0x40e3c7[_0xe8f2('0x29')]=this['message'][_0xe8f2('0x2a')];_0x40e3c7[_0xe8f2('0x2b')]=_0xe8f2('0x2c')+_[_0xe8f2('0x2d')](_0x40e3c7[_0xe8f2('0xf')],_0xe8f2('0x2e'),_0xe8f2('0x2f'))+_0xe8f2('0x30');_0x40e3c7[_0xe8f2('0x31')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xe8f2('0x32'),'Precedence':_0xe8f2('0x33')};return mailRpc[_0xe8f2('0x34')](this['account'][_0xe8f2('0x35')],_0x40e3c7)[_0xe8f2('0x36')](function(_0x1747bc){logger['info'](_0xe8f2('0x37'),_0x50477b);_0x40e3c7[_0xe8f2('0x2a')]=_0x1747bc[_0xe8f2('0x1c')]['messageId'];return rpc[_0xd058e7+_0xe8f2('0x28')]['create'](_0x40e3c7);})[_0xe8f2('0x36')](function(_0x4ee38b){logger[_0xe8f2('0x11')](_0xe8f2('0x12'),_0x50477b,JSON[_0xe8f2('0x38')](_0x4ee38b));})[_0xe8f2('0x39')](function(_0x30a7ab){logger['error'](_0xe8f2('0x3a'),_0x50477b,JSON[_0xe8f2('0x38')](_0x30a7ab));})[_0xe8f2('0x3b')](function(){Promise['resolve']()[_0xe8f2('0x36')](function(){if(_0x769c33[0x0]!=='2'||_0x4acd13[_0xe8f2('0x3c')])return;return rpc[_0xd058e7+_0xe8f2('0x3d')]['update'](_0x4acd13['id'],{'autoreplyExecuted':!![]})[_0xe8f2('0x36')](function(_0x3471fc){logger[_0xe8f2('0x11')](_0xe8f2('0x3e'),_0x50477b,JSON[_0xe8f2('0x38')](_0x3471fc));})[_0xe8f2('0x39')](function(_0x51d52a){logger[_0xe8f2('0x3f')](_0xe8f2('0x40'),_0x50477b,JSON['stringify'](_0x51d52a));});})[_0xe8f2('0x36')](function(){_0x150e66[_0xe8f2('0x14')]();});});}else{return rpc[this[_0xe8f2('0xd')]+_0xe8f2('0x28')][_0xe8f2('0x41')](_0x40e3c7)[_0xe8f2('0x36')](function(){logger[_0xe8f2('0x11')]('[%s][AUTOREPLY]\x20%s',_0x50477b,_0x40e3c7[_0xe8f2('0xf')]);})[_0xe8f2('0x39')](function(_0xa41a2a){logger['error'](_0xe8f2('0x12'),_0x50477b,JSON[_0xe8f2('0x38')](_0xa41a2a));})[_0xe8f2('0x3b')](function(){Promise[_0xe8f2('0x42')]()['then'](function(){if(_0x769c33[0x0]!=='2'||_0x4acd13[_0xe8f2('0x3c')])return;return rpc[_0xd058e7+_0xe8f2('0x3d')]['update'](_0x4acd13['id'],{'autoreplyExecuted':!![]})[_0xe8f2('0x36')](function(_0x3faf0b){logger[_0xe8f2('0x11')](_0xe8f2('0x3e'),_0x50477b,JSON[_0xe8f2('0x38')](_0x3faf0b));})['catch'](function(_0x34ce83){logger[_0xe8f2('0x3f')](_0xe8f2('0x40'),_0x50477b,JSON[_0xe8f2('0x38')](_0x34ce83));});})[_0xe8f2('0x36')](function(){_0x150e66[_0xe8f2('0x14')]();});});}}}catch(_0x1b9c91){logger[_0xe8f2('0x3f')](_0xe8f2('0x12'),_0x50477b,JSON[_0xe8f2('0x38')](_0x1b9c91));_0x150e66[_0xe8f2('0x43')]();}};};
\ No newline at end of file
+var _0x98ac=['[%s][AUTOREPLY][autoreplyExecuted]\x20%s','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','./utils','routing','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','next','isNil','interaction','Autoreply\x20already\x20sent','autoreplyExecuted','One\x20Time\x20already\x20sent','contact','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','account','upperFirst','AccountId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','resolve','Interaction','finally','update'];(function(_0x1b912,_0x557f9e){var _0x539927=function(_0x49a7fc){while(--_0x49a7fc){_0x1b912['push'](_0x1b912['shift']());}};_0x539927(++_0x557f9e);}(_0x98ac,0x8d));var _0xc98a=function(_0x1b450b,_0x40be04){_0x1b450b=_0x1b450b-0x0;var _0x450af9=_0x98ac[_0x1b450b];return _0x450af9;};'use strict';var _=require(_0xc98a('0x0'));var moment=require('moment');var utils=require(_0xc98a('0x1'));var logger=require('../../../../config/logger')(_0xc98a('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xc98a('0x3')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xc98a('0x4')),'faxMessage':require(_0xc98a('0x5')),'whatsappMessage':require(_0xc98a('0x6')),'chatInteraction':require(_0xc98a('0x7')),'openchannelInteraction':require(_0xc98a('0x8')),'mailInteraction':require(_0xc98a('0x9')),'smsInteraction':require(_0xc98a('0xa')),'faxInteraction':require(_0xc98a('0xb')),'whatsappInteraction':require(_0xc98a('0xc'))};var mailRpc=require(_0xc98a('0xd'));exports['consequence']=function(_0x587d37,_0x4acb2d,_0x2b2c09,_0x31139b){return function(_0x612f4e){try{var _0x14cc4b=this[_0xc98a('0xe')];if(_0x14cc4b===_0xc98a('0xf')&&_0x31139b[_0xc98a('0x10')][_0xc98a('0x11')]){logger[_0xc98a('0x12')](_0xc98a('0x13'),_0x587d37,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x612f4e[_0xc98a('0x14')]();}if(_0x4acb2d[0x0]==='1'&&(_[_0xc98a('0x15')](this[_0xc98a('0x16')]['created'])||!this[_0xc98a('0x16')]['created'])){logger[_0xc98a('0x12')](_0xc98a('0x13'),_0x587d37,_0xc98a('0x17'));return _0x612f4e[_0xc98a('0x14')]();}if(_0x4acb2d[0x0]==='2'&&this[_0xc98a('0x16')][_0xc98a('0x18')]){logger[_0xc98a('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x587d37,_0xc98a('0x19'));return _0x612f4e[_0xc98a('0x14')]();}var _0x5d756a={'ContactId':this[_0xc98a('0x1a')]['id'],'sentAt':moment()['format'](_0xc98a('0x1b')),'direction':_0xc98a('0x1c')};if(this[_0xc98a('0xe')]===_0xc98a('0xf')){_0x5d756a[_0xc98a('0x10')]=utils['getMustacheRender'](_0x4acb2d[0x2],this);}else{_0x5d756a['body']=utils[_0xc98a('0x1d')](_0x4acb2d[0x1],this);}if(this[_0xc98a('0x1e')]){_0x5d756a['to']=this['message'][_0xc98a('0x1f')]||'';if(this[_0xc98a('0xe')]===_0xc98a('0xf')&&_0x4acb2d[0x1]==='1'){_0x5d756a['cc']=this['message']['cc']||'';}_0x5d756a[_0xc98a('0x1f')]=this[_0xc98a('0x1e')]['to']||'';_0x5d756a[_0xc98a('0x20')]=this[_0xc98a('0x1e')][_0xc98a('0x20')]||'';_0x5d756a[_0xc98a('0x21')]=!![];if(this[_0xc98a('0x1e')][_0xc98a('0x22')]){_0x5d756a[_0xc98a('0x22')]='';_0x5d756a[_0xc98a('0x22')]+=_[_0xc98a('0x23')](this[_0xc98a('0x1e')][_0xc98a('0x22')],_0xc98a('0x24'))?'':_0xc98a('0x25');_0x5d756a['subject']+=this[_0xc98a('0x1e')]['subject'];}}if(this[_0xc98a('0xe')]==='chat'){_0x5d756a['ChatWebsiteId']=this[_0xc98a('0x26')]['id'];}else{_0x5d756a[_[_0xc98a('0x27')](this[_0xc98a('0xe')])+_0xc98a('0x28')]=this[_0xc98a('0x26')]['id'];}_0x5d756a[_[_0xc98a('0x27')](this[_0xc98a('0xe')])+'InteractionId']=this[_0xc98a('0x16')]['id'];var _0x236a09=this['interaction'];if(rpc[this[_0xc98a('0xe')]+_0xc98a('0x29')]){if(this[_0xc98a('0xe')]===_0xc98a('0xf')){_0x5d756a[_0xc98a('0x2a')]=this[_0xc98a('0x1e')][_0xc98a('0x2b')];_0x5d756a[_0xc98a('0x2c')]=_0xc98a('0x2d')+_[_0xc98a('0x2e')](_0x5d756a[_0xc98a('0x10')],'<div\x20id=\x22xm-mail-content\x22',_0xc98a('0x2f'))+_0xc98a('0x30');_0x5d756a[_0xc98a('0x31')]={'Auto-Submitted':_0xc98a('0x32'),'X-Auto-Response-Suppress':_0xc98a('0x33'),'Precedence':_0xc98a('0x34')};return mailRpc[_0xc98a('0x35')](this['account'][_0xc98a('0x36')],_0x5d756a)[_0xc98a('0x37')](function(_0x173f69){logger[_0xc98a('0x12')](_0xc98a('0x38'),_0x587d37);_0x5d756a['messageId']=_0x173f69[_0xc98a('0x1e')][_0xc98a('0x2b')];return rpc[_0x14cc4b+'Message'][_0xc98a('0x39')](_0x5d756a);})[_0xc98a('0x37')](function(_0x2a0f33){logger[_0xc98a('0x12')](_0xc98a('0x13'),_0x587d37,JSON[_0xc98a('0x3a')](_0x2a0f33));})[_0xc98a('0x3b')](function(_0x356de2){logger[_0xc98a('0x3c')](_0xc98a('0x3d'),_0x587d37,JSON[_0xc98a('0x3a')](_0x356de2));})['finally'](function(){Promise[_0xc98a('0x3e')]()[_0xc98a('0x37')](function(){if(_0x4acb2d[0x0]!=='2'||_0x236a09['autoreplyExecuted'])return;return rpc[_0x14cc4b+_0xc98a('0x3f')]['update'](_0x236a09['id'],{'autoreplyExecuted':!![]})[_0xc98a('0x37')](function(_0x14e226){logger[_0xc98a('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x587d37,JSON[_0xc98a('0x3a')](_0x14e226));})[_0xc98a('0x3b')](function(_0x61f1d0){logger[_0xc98a('0x3c')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x587d37,JSON[_0xc98a('0x3a')](_0x61f1d0));});})[_0xc98a('0x37')](function(){_0x612f4e[_0xc98a('0x14')]();});});}else{return rpc[this[_0xc98a('0xe')]+_0xc98a('0x29')][_0xc98a('0x39')](_0x5d756a)['then'](function(){logger[_0xc98a('0x12')](_0xc98a('0x13'),_0x587d37,_0x5d756a[_0xc98a('0x10')]);})[_0xc98a('0x3b')](function(_0xa9d280){logger[_0xc98a('0x3c')](_0xc98a('0x13'),_0x587d37,JSON[_0xc98a('0x3a')](_0xa9d280));})[_0xc98a('0x40')](function(){Promise['resolve']()[_0xc98a('0x37')](function(){if(_0x4acb2d[0x0]!=='2'||_0x236a09['autoreplyExecuted'])return;return rpc[_0x14cc4b+_0xc98a('0x3f')][_0xc98a('0x41')](_0x236a09['id'],{'autoreplyExecuted':!![]})[_0xc98a('0x37')](function(_0x309ec2){logger[_0xc98a('0x12')](_0xc98a('0x42'),_0x587d37,JSON[_0xc98a('0x3a')](_0x309ec2));})[_0xc98a('0x3b')](function(_0x593d79){logger[_0xc98a('0x3c')](_0xc98a('0x43'),_0x587d37,JSON[_0xc98a('0x3a')](_0x593d79));});})['then'](function(){_0x612f4e['next']();});});}}}catch(_0x4183bc){logger[_0xc98a('0x3c')]('[%s][AUTOREPLY]\x20%s',_0x587d37,JSON['stringify'](_0x4183bc));_0x612f4e[_0xc98a('0x44')]();}};};
\ No newline at end of file
index 03ed0c1..618010e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d47=['../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction'];(function(_0x4bf848,_0x5712c5){var _0x26b585=function(_0x244733){while(--_0x244733){_0x4bf848['push'](_0x4bf848['shift']());}};_0x26b585(++_0x5712c5);}(_0x8d47,0x15a));var _0x78d4=function(_0x45fed6,_0x3da419){_0x45fed6=_0x45fed6-0x0;var _0x3f583e=_0x8d47[_0x45fed6];return _0x3f583e;};'use strict';var moment=require(_0x78d4('0x0'));var logger=require(_0x78d4('0x1'))(_0x78d4('0x2'));var rpc={'chatInteraction':require(_0x78d4('0x3')),'openchannelInteraction':require(_0x78d4('0x4')),'smsInteraction':require(_0x78d4('0x5')),'mailInteraction':require(_0x78d4('0x6')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x78d4('0x7'))};exports[_0x78d4('0x8')]=function(_0x5e52d6,_0x1f9929,_0x4e91b9,_0x2ecbca){return function(_0x2646f4){try{logger[_0x78d4('0x9')](_0x78d4('0xa'),_0x5e52d6,_0x1f9929[0x0]);var _0x64d35c={'closed':0x1,'closedAt':moment()[_0x78d4('0xb')](_0x78d4('0xc')),'closeReason':_0x78d4('0xd'),'disposition':_0x1f9929[0x0]};if(rpc[_0x2ecbca[_0x78d4('0xe')]+_0x78d4('0xf')]){rpc[_0x2ecbca['channel']+'Interaction'][_0x78d4('0x10')](_0x2ecbca[_0x78d4('0x11')]['id'],_0x64d35c)['then'](function(_0x406d16){logger['info'](_0x78d4('0x12'),_0x5e52d6,_0x2ecbca[_0x78d4('0x11')]['id']);})[_0x78d4('0x13')](function(_0x1da185){logger[_0x78d4('0x14')](_0x78d4('0x15'),_0x5e52d6,JSON[_0x78d4('0x16')](_0x1da185));})[_0x78d4('0x17')](function(){_0x2646f4['stop']();});}}catch(_0x172e07){logger[_0x78d4('0x14')](_0x78d4('0x15'),_0x5e52d6,JSON['stringify'](_0x172e07));_0x2646f4[_0x78d4('0x18')]();}};};
\ No newline at end of file
+var _0x7266=['../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','then','interaction','error','[%s][CLOSE]\x20%s','finally','stop','stringify','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction'];(function(_0x7dcf45,_0x52e6ea){var _0x296c04=function(_0x565202){while(--_0x565202){_0x7dcf45['push'](_0x7dcf45['shift']());}};_0x296c04(++_0x52e6ea);}(_0x7266,0xf9));var _0x6726=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x7266[_0x4154a6];return _0x3b2786;};'use strict';var moment=require('moment');var logger=require('../../../../config/logger')(_0x6726('0x0'));var rpc={'chatInteraction':require(_0x6726('0x1')),'openchannelInteraction':require(_0x6726('0x2')),'smsInteraction':require(_0x6726('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x6726('0x4')),'whatsappInteraction':require(_0x6726('0x5'))};exports['consequence']=function(_0x1ed0da,_0x314aff,_0x1fc77f,_0x2fd970){return function(_0x2d484b){try{logger[_0x6726('0x6')](_0x6726('0x7'),_0x1ed0da,_0x314aff[0x0]);var _0x5077ad={'closed':0x1,'closedAt':moment()[_0x6726('0x8')](_0x6726('0x9')),'closeReason':_0x6726('0xa'),'disposition':_0x314aff[0x0]};if(rpc[_0x2fd970[_0x6726('0xb')]+_0x6726('0xc')]){rpc[_0x2fd970[_0x6726('0xb')]+_0x6726('0xc')][_0x6726('0xd')](_0x2fd970['interaction']['id'],_0x5077ad)[_0x6726('0xe')](function(_0x32429d){logger[_0x6726('0x6')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x1ed0da,_0x2fd970[_0x6726('0xf')]['id']);})['catch'](function(_0x2497cf){logger[_0x6726('0x10')](_0x6726('0x11'),_0x1ed0da,JSON['stringify'](_0x2497cf));})[_0x6726('0x12')](function(){_0x2d484b[_0x6726('0x13')]();});}}catch(_0x8ee851){logger[_0x6726('0x10')](_0x6726('0x11'),_0x1ed0da,JSON[_0x6726('0x14')](_0x8ee851));_0x2d484b[_0x6726('0x13')]();}};};
\ No newline at end of file
index 193dc1a..18f5f7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['speech','providerName','Message','endConversation','next','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','YYYY-MM-DD\x20HH:mm:ss','channel','sms','phone','ChatWebsiteId','upperFirst','account','created','body','create','then','catch','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','message','dialogflow','result'];(function(_0x5d5fcc,_0xf8d79b){var _0x2b5b63=function(_0x189760){while(--_0x189760){_0x5d5fcc['push'](_0x5d5fcc['shift']());}};_0x2b5b63(++_0xf8d79b);}(_0x2eb2,0x19f));var _0x22eb=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0x2eb2[_0x53cf8e];return _0x459197;};'use strict';var _=require('lodash');var moment=require(_0x22eb('0x0'));var apiai=require(_0x22eb('0x1'));var md5=require(_0x22eb('0x2'));var utils=require(_0x22eb('0x3'));var logger=require(_0x22eb('0x4'))(_0x22eb('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x22eb('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x22eb('0x7')),'whatsappMessage':require(_0x22eb('0x8'))};exports[_0x22eb('0x9')]=function(_0x2a9850,_0x4539d0){return function(_0x396806){try{if(!_[_0x22eb('0xa')](this[_0x22eb('0xb')][_0x22eb('0xc')])){logger[_0x22eb('0xd')](_0x22eb('0xe'),_0x2a9850,_0x22eb('0xf'));return _0x396806['next']();}var _0x46c197={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0x22eb('0x10')),'direction':'out'};if(this[_0x22eb('0x11')]===_0x22eb('0x12')||this['channel']==='whatsapp'){_0x46c197[_0x22eb('0x13')]=this[_0x22eb('0xb')][_0x22eb('0x13')];}var _0x1e2a53=this[_0x22eb('0x11')];if(_0x1e2a53==='chat'){_0x46c197[_0x22eb('0x14')]=this['account']['id'];}else{_0x46c197[_[_0x22eb('0x15')](_0x1e2a53)+'AccountId']=this[_0x22eb('0x16')]['id'];}_0x46c197[_[_0x22eb('0x15')](_0x1e2a53)+'InteractionId']=this['interaction']['id'];if(this['interaction'][_0x22eb('0x17')]){var _0x5245fe=_0x4539d0[0x2];if(!_['isEmpty'](_0x5245fe)){_0x46c197[_0x22eb('0x18')]=utils['getMustacheRender'](_0x5245fe,this);return rpc[_0x1e2a53+'Message'][_0x22eb('0x19')](_0x46c197)[_0x22eb('0x1a')](function(_0x385bcb){logger[_0x22eb('0xd')](_0x22eb('0xe'),_0x2a9850,_0x46c197['body']);})[_0x22eb('0x1b')](function(_0x12bbd1){logger[_0x22eb('0x1c')](_0x22eb('0xe'),_0x2a9850,JSON[_0x22eb('0x1d')](_0x12bbd1));})['finally'](function(){logger[_0x22eb('0xd')](_0x22eb('0x1e'),_0x2a9850);_0x396806[_0x22eb('0x1f')]();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x2a9850);_0x396806[_0x22eb('0x1f')]();}}else{var _0x267d97=this;var _0x434ecb=apiai(_0x4539d0[0x0],{'language':_0x4539d0[0x1]||'en'});return _0x434ecb[_0x22eb('0x20')](this[_0x22eb('0x21')][_0x22eb('0x18')],{'sessionId':md5(this[_0x22eb('0xb')]['id'])})['then'](function(_0x2e8f7c){_0x267d97[_0x22eb('0x18')][_0x22eb('0x22')]=_0x2e8f7c;_0x46c197[_0x22eb('0x18')]=_0x2e8f7c[_0x22eb('0x23')]['fulfillment'][_0x22eb('0x24')];_0x46c197[_0x22eb('0x25')]=_0x22eb('0x22');_0x46c197['providerResponse']=JSON[_0x22eb('0x1d')](_0x2e8f7c);return rpc[_0x1e2a53+_0x22eb('0x26')]['create'](_0x46c197)[_0x22eb('0x1a')](function(_0x222ef3){logger[_0x22eb('0xd')](_0x22eb('0xe'),_0x2a9850,_0x46c197[_0x22eb('0x18')]);if(_0x2e8f7c['result']['metadata'][_0x22eb('0x27')]){_0x396806[_0x22eb('0x28')]();}else{_0x396806[_0x22eb('0x1f')]();}})[_0x22eb('0x1b')](function(_0x1599c7){logger[_0x22eb('0x1c')](_0x22eb('0xe'),_0x2a9850,JSON[_0x22eb('0x1d')](_0x1599c7));_0x396806[_0x22eb('0x28')]();});})[_0x22eb('0x1b')](function(_0x24e9dc){logger[_0x22eb('0x1c')]('[%s][DIALOGFLOW]\x20%s',_0x2a9850,_0x24e9dc[_0x22eb('0x21')]);_0x396806['next']();});}}catch(_0x1dd660){logger[_0x22eb('0x1c')](_0x22eb('0xe'),_0x2a9850,JSON[_0x22eb('0x1d')](_0x1dd660));_0x396806[_0x22eb('0x1f')]();}};};
\ No newline at end of file
+var _0x5d59=['info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','getMustacheRender','Message','then','[%s][DIALOGFLOW]\x20%s','body','catch','error','stringify','[%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','providerName','providerResponse','create','metadata','endConversation','message','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/faxMessage','interaction'];(function(_0x4ad48e,_0x301a74){var _0x32f9c1=function(_0x13be7d){while(--_0x13be7d){_0x4ad48e['push'](_0x4ad48e['shift']());}};_0x32f9c1(++_0x301a74);}(_0x5d59,0x15f));var _0x95d5=function(_0x21024f,_0x35e650){_0x21024f=_0x21024f-0x0;var _0x26e8f8=_0x5d59[_0x21024f];return _0x26e8f8;};'use strict';var _=require('lodash');var moment=require(_0x95d5('0x0'));var apiai=require(_0x95d5('0x1'));var md5=require(_0x95d5('0x2'));var utils=require(_0x95d5('0x3'));var logger=require(_0x95d5('0x4'))(_0x95d5('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x95d5('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x95d5('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0xfe94c,_0x11b2d4){return function(_0x121537){try{if(!_['isNil'](this[_0x95d5('0x8')]['UserId'])){logger[_0x95d5('0x9')]('[%s][DIALOGFLOW]\x20%s',_0xfe94c,_0x95d5('0xa'));return _0x121537[_0x95d5('0xb')]();}var _0x3a9f4e={'ContactId':this[_0x95d5('0xc')]['id'],'sentAt':moment()[_0x95d5('0xd')](_0x95d5('0xe')),'direction':_0x95d5('0xf')};if(this[_0x95d5('0x10')]==='sms'||this[_0x95d5('0x10')]==='whatsapp'){_0x3a9f4e['phone']=this[_0x95d5('0x8')][_0x95d5('0x11')];}var _0x2af6ca=this[_0x95d5('0x10')];if(_0x2af6ca==='chat'){_0x3a9f4e[_0x95d5('0x12')]=this[_0x95d5('0x13')]['id'];}else{_0x3a9f4e[_[_0x95d5('0x14')](_0x2af6ca)+_0x95d5('0x15')]=this[_0x95d5('0x13')]['id'];}_0x3a9f4e[_[_0x95d5('0x14')](_0x2af6ca)+_0x95d5('0x16')]=this[_0x95d5('0x8')]['id'];if(this[_0x95d5('0x8')]['created']){var _0x501dcb=_0x11b2d4[0x2];if(!_[_0x95d5('0x17')](_0x501dcb)){_0x3a9f4e['body']=utils[_0x95d5('0x18')](_0x501dcb,this);return rpc[_0x2af6ca+_0x95d5('0x19')]['create'](_0x3a9f4e)[_0x95d5('0x1a')](function(_0x3793eb){logger[_0x95d5('0x9')](_0x95d5('0x1b'),_0xfe94c,_0x3a9f4e[_0x95d5('0x1c')]);})[_0x95d5('0x1d')](function(_0x4acfbb){logger[_0x95d5('0x1e')](_0x95d5('0x1b'),_0xfe94c,JSON[_0x95d5('0x1f')](_0x4acfbb));})['finally'](function(){logger['info'](_0x95d5('0x20'),_0xfe94c);_0x121537[_0x95d5('0x21')]();});}else{logger['info'](_0x95d5('0x22'),_0xfe94c);_0x121537[_0x95d5('0x21')]();}}else{var _0x2ca4b6=this;var _0x51ba73=apiai(_0x11b2d4[0x0],{'language':_0x11b2d4[0x1]||'en'});return _0x51ba73[_0x95d5('0x23')](this['message']['body'],{'sessionId':md5(this['interaction']['id'])})['then'](function(_0x588825){_0x2ca4b6['body'][_0x95d5('0x24')]=_0x588825;_0x3a9f4e[_0x95d5('0x1c')]=_0x588825[_0x95d5('0x25')][_0x95d5('0x26')]['speech'];_0x3a9f4e[_0x95d5('0x27')]=_0x95d5('0x24');_0x3a9f4e[_0x95d5('0x28')]=JSON[_0x95d5('0x1f')](_0x588825);return rpc[_0x2af6ca+_0x95d5('0x19')][_0x95d5('0x29')](_0x3a9f4e)[_0x95d5('0x1a')](function(_0x1e6ee7){logger[_0x95d5('0x9')](_0x95d5('0x1b'),_0xfe94c,_0x3a9f4e['body']);if(_0x588825['result'][_0x95d5('0x2a')][_0x95d5('0x2b')]){_0x121537[_0x95d5('0xb')]();}else{_0x121537['stop']();}})[_0x95d5('0x1d')](function(_0x4e6f3b){logger[_0x95d5('0x1e')]('[%s][DIALOGFLOW]\x20%s',_0xfe94c,JSON[_0x95d5('0x1f')](_0x4e6f3b));_0x121537[_0x95d5('0xb')]();});})[_0x95d5('0x1d')](function(_0x21d4ff){logger[_0x95d5('0x1e')](_0x95d5('0x1b'),_0xfe94c,_0x21d4ff[_0x95d5('0x2c')]);_0x121537[_0x95d5('0xb')]();});}}catch(_0x561c75){logger['error']('[%s][DIALOGFLOW]\x20%s',_0xfe94c,JSON[_0x95d5('0x1f')](_0x561c75));_0x121537[_0x95d5('0x21')]();}};};
\ No newline at end of file
index 0bcdd54..63cd84f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78e=['providerResponse','fulfillmentText','push','all','next','stack','lodash','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','body','Message','then','catch','error','stringify','consequence','UserId','info','[%s][DIALOGFLOWV2]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','format','YYYY-MM-DD\x20HH:mm:ss','channel','phone','interaction','chat','AccountId','account','InteractionId','isEmpty','create','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','sessionPath','message','detectIntent','length','diagnosticInfo','queryResult','fields','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','end_conversation','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','dialogflowV2'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xb78e,0x15f));var _0xeb78=function(_0x4422e5,_0x431bd2){_0x4422e5=_0x4422e5-0x0;var _0x48e761=_0xb78e[_0x4422e5];return _0x48e761;};'use strict';var _=require(_0xeb78('0x0'));var dialogflow=require(_0xeb78('0x1'));var md5=require(_0xeb78('0x2'));var moment=require(_0xeb78('0x3'));var Promise=require(_0xeb78('0x4'));var logger=require(_0xeb78('0x5'))(_0xeb78('0x6'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xeb78('0x7')),'mailMessage':require(_0xeb78('0x8')),'smsMessage':require(_0xeb78('0x9')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xeb78('0xa'))};function createMessage(_0x50bfdf,_0x4d0f55,_0x52a158,_0x14df6c){return new Promise(function(_0x2fe974,_0x21a67b){var _0xa14b03=_['clone'](_0x52a158);_0xa14b03[_0xeb78('0xb')]=_0x14df6c;return rpc[_0x4d0f55+_0xeb78('0xc')]['create'](_0xa14b03)[_0xeb78('0xd')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x50bfdf,_0xa14b03['body']);_0x2fe974();})[_0xeb78('0xe')](function(_0x548981){logger[_0xeb78('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x50bfdf,JSON[_0xeb78('0x10')](_0x548981));_0x21a67b(_0x548981);});});}exports[_0xeb78('0x11')]=function(_0x373358,_0x258ede){return function(_0x483d4e){try{if(!_['isNil'](this['interaction'][_0xeb78('0x12')])){logger[_0xeb78('0x13')](_0xeb78('0x14'),_0x373358,_0xeb78('0x15'));return _0x483d4e['next']();}var _0x1e9374={'ContactId':this['contact']['id'],'sentAt':moment()[_0xeb78('0x16')](_0xeb78('0x17')),'direction':'out'};if(this[_0xeb78('0x18')]==='sms'||this[_0xeb78('0x18')]==='whatsapp'){_0x1e9374[_0xeb78('0x19')]=this[_0xeb78('0x1a')]['phone'];}var _0x2182e2=this['channel'];if(_0x2182e2===_0xeb78('0x1b')){_0x1e9374['ChatWebsiteId']=this['account']['id'];}else{_0x1e9374[_['upperFirst'](_0x2182e2)+_0xeb78('0x1c')]=this[_0xeb78('0x1d')]['id'];}_0x1e9374[_['upperFirst'](_0x2182e2)+_0xeb78('0x1e')]=this[_0xeb78('0x1a')]['id'];if(this[_0xeb78('0x1a')]['created']){var _0x4b6cb0=_0x258ede[0x4];if(!_[_0xeb78('0x1f')](_0x4b6cb0)){_0x1e9374[_0xeb78('0xb')]=utils['getMustacheRender'](_0x4b6cb0,this);return rpc[_0x2182e2+'Message'][_0xeb78('0x20')](_0x1e9374)[_0xeb78('0xd')](function(_0x3f1f82){logger[_0xeb78('0x13')](_0xeb78('0x14'),_0x373358,_0x1e9374[_0xeb78('0xb')]);})['catch'](function(_0x322a6f){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x373358,JSON[_0xeb78('0x10')](_0x322a6f));})[_0xeb78('0x21')](function(){logger['info'](_0xeb78('0x22'),_0x373358);_0x483d4e[_0xeb78('0x23')]();});}else{logger[_0xeb78('0x13')](_0xeb78('0x24'),_0x373358);_0x483d4e[_0xeb78('0x23')]();}}else{var _0x56a2eb=this;var _0x279be9=_0x258ede[0x2]['replace'](/\\n/g,'\x0a');var _0x4c1487={'credentials':{'private_key':_0x279be9,'client_email':_0x258ede[0x1]}};var _0x35edbd=new dialogflow['SessionsClient'](_0x4c1487);var _0x147c9c=_0x35edbd[_0xeb78('0x25')](_0x258ede[0x0],md5(_0x56a2eb[_0xeb78('0x1a')]['id']));var _0x384f63={'session':_0x147c9c,'queryInput':{'text':{'text':_0x56a2eb[_0xeb78('0x26')]['body'],'languageCode':_0x258ede[0x3]||'en'}}};return _0x35edbd[_0xeb78('0x27')](_0x384f63)['then'](function(_0x369aa4){if(_0x369aa4&&_0x369aa4[_0xeb78('0x28')]){_0x56a2eb['body']['dialogflowV2']=_0x369aa4;var _0x50efaa=_0x369aa4[0x0];var _0x1f269a=_0x50efaa['queryResult'][_0xeb78('0x29')]&&_0x50efaa[_0xeb78('0x2a')][_0xeb78('0x29')]['fields']?_0x50efaa['queryResult'][_0xeb78('0x29')][_0xeb78('0x2b')]['end_conversation'][_0xeb78('0x2c')]:![];_0x56a2eb[_0xeb78('0xb')][_0xeb78('0x2d')]=_0x50efaa[_0xeb78('0x2a')][_0xeb78('0x2e')];_0x56a2eb[_0xeb78('0xb')][_0xeb78('0x2f')]=_0x50efaa[_0xeb78('0x2a')][_0xeb78('0x30')];_0x56a2eb['body'][_0xeb78('0x31')]=_0x50efaa[_0xeb78('0x2a')][_0xeb78('0x29')]&&_0x50efaa['queryResult'][_0xeb78('0x29')][_0xeb78('0x2b')]?_0x50efaa[_0xeb78('0x2a')][_0xeb78('0x29')][_0xeb78('0x2b')][_0xeb78('0x32')][_0xeb78('0x2c')]:![];_0x56a2eb[_0xeb78('0xb')][_0xeb78('0x33')]=_0x50efaa[_0xeb78('0x2a')][_0xeb78('0x34')][_0xeb78('0x35')];_0x56a2eb['body'][_0xeb78('0x36')]=_0x50efaa[_0xeb78('0x2a')]['intent']['displayName'];_0x56a2eb['body']['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x50efaa[_0xeb78('0x2a')]['intent'][_0xeb78('0x37')];_0x56a2eb[_0xeb78('0xb')][_0xeb78('0x38')]=_0x50efaa[_0xeb78('0x2a')][_0xeb78('0x39')];_0x56a2eb[_0xeb78('0xb')][_0xeb78('0x3a')]=_0x50efaa['queryResult'][_0xeb78('0x3b')];_0x56a2eb[_0xeb78('0xb')][_0xeb78('0x3c')]=_0x50efaa[_0xeb78('0x2a')][_0xeb78('0x3d')];_0x1e9374['providerName']=_0xeb78('0x3e');_0x1e9374[_0xeb78('0x3f')]=JSON[_0xeb78('0x10')](_0x369aa4);var _0xe511d=[];for(var _0x4e7b4e=0x0;_0x4e7b4e<_0x369aa4[_0xeb78('0x28')];_0x4e7b4e++){var _0x3aa937=_0x369aa4[_0x4e7b4e];if(_0x3aa937&&_0x3aa937[_0xeb78('0x2a')]&&_0x3aa937[_0xeb78('0x2a')][_0xeb78('0x40')]){_0xe511d[_0xeb78('0x41')](createMessage(_0x373358,_0x2182e2,_0x1e9374,_0x3aa937[_0xeb78('0x2a')][_0xeb78('0x40')]));}}return Promise[_0xeb78('0x42')](_0xe511d)[_0xeb78('0xd')](function(){if(_0x1f269a){_0x483d4e[_0xeb78('0x43')]();}else{_0x483d4e['stop']();}})[_0xeb78('0xe')](function(_0xf2529e){logger[_0xeb78('0xf')](_0xeb78('0x14'),_0x373358,JSON[_0xeb78('0x10')](_0xf2529e));_0x483d4e[_0xeb78('0x43')]();});}})[_0xeb78('0xe')](function(_0x1b9116){logger[_0xeb78('0xf')](_0xeb78('0x14'),_0x373358,_0x1b9116[_0xeb78('0x26')],_0x1b9116[_0xeb78('0x44')]);_0x483d4e[_0xeb78('0x43')]();});}}catch(_0x4da2df){logger[_0xeb78('0xf')](_0xeb78('0x14'),_0x373358,JSON[_0xeb78('0x10')](_0x4da2df));_0x483d4e[_0xeb78('0x23')]();}};};
\ No newline at end of file
+var _0x5620=['bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','body','Message','then','info','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','create','catch','error','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','dialogflowV2','providerResponse','push','fulfillmentText','all','message','stack','lodash','moment'];(function(_0x16ee7d,_0x470056){var _0x162160=function(_0x33aff5){while(--_0x33aff5){_0x16ee7d['push'](_0x16ee7d['shift']());}};_0x162160(++_0x470056);}(_0x5620,0x1c6));var _0x0562=function(_0x138293,_0x197e7f){_0x138293=_0x138293-0x0;var _0x34c4a2=_0x5620[_0x138293];return _0x34c4a2;};'use strict';var _=require(_0x0562('0x0'));var dialogflow=require('dialogflow');var md5=require('md5');var moment=require(_0x0562('0x1'));var Promise=require(_0x0562('0x2'));var logger=require(_0x0562('0x3'))(_0x0562('0x4'));var utils=require(_0x0562('0x5'));var rpc={'chatMessage':require(_0x0562('0x6')),'openchannelMessage':require(_0x0562('0x7')),'mailMessage':require(_0x0562('0x8')),'smsMessage':require(_0x0562('0x9')),'faxMessage':require(_0x0562('0xa')),'whatsappMessage':require(_0x0562('0xb'))};function createMessage(_0x3ba19b,_0x139cef,_0x9fc737,_0x403375){return new Promise(function(_0x4ccc0c,_0x83d0a1){var _0xd0b18e=_['clone'](_0x9fc737);_0xd0b18e[_0x0562('0xc')]=_0x403375;return rpc[_0x139cef+_0x0562('0xd')]['create'](_0xd0b18e)[_0x0562('0xe')](function(){logger[_0x0562('0xf')](_0x0562('0x10'),_0x3ba19b,_0xd0b18e[_0x0562('0xc')]);_0x4ccc0c();})['catch'](function(_0x341907){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x3ba19b,JSON[_0x0562('0x11')](_0x341907));_0x83d0a1(_0x341907);});});}exports[_0x0562('0x12')]=function(_0x4f07a2,_0x179e8b){return function(_0x4ad859){try{if(!_[_0x0562('0x13')](this[_0x0562('0x14')][_0x0562('0x15')])){logger[_0x0562('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x4f07a2,_0x0562('0x16'));return _0x4ad859[_0x0562('0x17')]();}var _0x1c4927={'ContactId':this['contact']['id'],'sentAt':moment()[_0x0562('0x18')](_0x0562('0x19')),'direction':_0x0562('0x1a')};if(this[_0x0562('0x1b')]==='sms'||this['channel']===_0x0562('0x1c')){_0x1c4927[_0x0562('0x1d')]=this[_0x0562('0x14')][_0x0562('0x1d')];}var _0xb99f2=this['channel'];if(_0xb99f2===_0x0562('0x1e')){_0x1c4927[_0x0562('0x1f')]=this[_0x0562('0x20')]['id'];}else{_0x1c4927[_[_0x0562('0x21')](_0xb99f2)+_0x0562('0x22')]=this[_0x0562('0x20')]['id'];}_0x1c4927[_[_0x0562('0x21')](_0xb99f2)+_0x0562('0x23')]=this[_0x0562('0x14')]['id'];if(this[_0x0562('0x14')][_0x0562('0x24')]){var _0x302ccf=_0x179e8b[0x4];if(!_[_0x0562('0x25')](_0x302ccf)){_0x1c4927[_0x0562('0xc')]=utils['getMustacheRender'](_0x302ccf,this);return rpc[_0xb99f2+'Message'][_0x0562('0x26')](_0x1c4927)[_0x0562('0xe')](function(_0x123b78){logger[_0x0562('0xf')](_0x0562('0x10'),_0x4f07a2,_0x1c4927[_0x0562('0xc')]);})[_0x0562('0x27')](function(_0x2c90e6){logger[_0x0562('0x28')](_0x0562('0x10'),_0x4f07a2,JSON['stringify'](_0x2c90e6));})[_0x0562('0x29')](function(){logger[_0x0562('0xf')](_0x0562('0x2a'),_0x4f07a2);_0x4ad859[_0x0562('0x2b')]();});}else{logger[_0x0562('0xf')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x4f07a2);_0x4ad859[_0x0562('0x2b')]();}}else{var _0x57bb2a=this;var _0x3c50ab=_0x179e8b[0x2][_0x0562('0x2c')](/\\n/g,'\x0a');var _0x26c137={'credentials':{'private_key':_0x3c50ab,'client_email':_0x179e8b[0x1]}};var _0x447256=new dialogflow[(_0x0562('0x2d'))](_0x26c137);var _0x4cc478=_0x447256['sessionPath'](_0x179e8b[0x0],md5(_0x57bb2a['interaction']['id']));var _0x1a1362={'session':_0x4cc478,'queryInput':{'text':{'text':_0x57bb2a['message']['body'],'languageCode':_0x179e8b[0x3]||'en'}}};return _0x447256[_0x0562('0x2e')](_0x1a1362)[_0x0562('0xe')](function(_0x13e1d0){if(_0x13e1d0&&_0x13e1d0[_0x0562('0x2f')]){_0x57bb2a[_0x0562('0xc')]['dialogflowV2']=_0x13e1d0;var _0x34f05b=_0x13e1d0[0x0];var _0x5434b1=_0x34f05b[_0x0562('0x30')]['diagnosticInfo']&&_0x34f05b[_0x0562('0x30')][_0x0562('0x31')][_0x0562('0x32')]?_0x34f05b[_0x0562('0x30')][_0x0562('0x31')][_0x0562('0x32')][_0x0562('0x33')][_0x0562('0x34')]:![];_0x57bb2a[_0x0562('0xc')]['DIALOGFLOWV2_ACTION']=_0x34f05b[_0x0562('0x30')][_0x0562('0x35')];_0x57bb2a[_0x0562('0xc')][_0x0562('0x36')]=_0x34f05b['queryResult'][_0x0562('0x37')];_0x57bb2a[_0x0562('0xc')][_0x0562('0x38')]=_0x34f05b[_0x0562('0x30')][_0x0562('0x31')]&&_0x34f05b[_0x0562('0x30')]['diagnosticInfo'][_0x0562('0x32')]?_0x34f05b['queryResult']['diagnosticInfo'][_0x0562('0x32')][_0x0562('0x33')][_0x0562('0x34')]:![];_0x57bb2a[_0x0562('0xc')]['DIALOGFLOWV2_INTENTNAME']=_0x34f05b[_0x0562('0x30')][_0x0562('0x39')][_0x0562('0x3a')];_0x57bb2a[_0x0562('0xc')][_0x0562('0x3b')]=_0x34f05b[_0x0562('0x30')][_0x0562('0x39')][_0x0562('0x3c')];_0x57bb2a['body']['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x34f05b[_0x0562('0x30')]['intent'][_0x0562('0x3d')];_0x57bb2a[_0x0562('0xc')][_0x0562('0x3e')]=_0x34f05b[_0x0562('0x30')][_0x0562('0x3f')];_0x57bb2a['body'][_0x0562('0x40')]=_0x34f05b[_0x0562('0x30')][_0x0562('0x41')];_0x57bb2a[_0x0562('0xc')][_0x0562('0x42')]=_0x34f05b[_0x0562('0x30')][_0x0562('0x43')];_0x1c4927[_0x0562('0x44')]=_0x0562('0x45');_0x1c4927[_0x0562('0x46')]=JSON[_0x0562('0x11')](_0x13e1d0);var _0x2c98fb=[];for(var _0x592a5b=0x0;_0x592a5b<_0x13e1d0[_0x0562('0x2f')];_0x592a5b++){var _0x48816b=_0x13e1d0[_0x592a5b];if(_0x48816b&&_0x48816b['queryResult']&&_0x48816b[_0x0562('0x30')]['fulfillmentText']){_0x2c98fb[_0x0562('0x47')](createMessage(_0x4f07a2,_0xb99f2,_0x1c4927,_0x48816b[_0x0562('0x30')][_0x0562('0x48')]));}}return Promise[_0x0562('0x49')](_0x2c98fb)[_0x0562('0xe')](function(){if(_0x5434b1){_0x4ad859[_0x0562('0x17')]();}else{_0x4ad859['stop']();}})[_0x0562('0x27')](function(_0x22cb3e){logger['error'](_0x0562('0x10'),_0x4f07a2,JSON['stringify'](_0x22cb3e));_0x4ad859[_0x0562('0x17')]();});}})['catch'](function(_0xbddc15){logger[_0x0562('0x28')]('[%s][DIALOGFLOWV2]\x20%s',_0x4f07a2,_0xbddc15[_0x0562('0x4a')],_0xbddc15[_0x0562('0x4b')]);_0x4ad859[_0x0562('0x17')]();});}}catch(_0x3f4030){logger[_0x0562('0x28')](_0x0562('0x10'),_0x4f07a2,JSON[_0x0562('0x11')](_0x3f4030));_0x4ad859[_0x0562('0x2b')]();}};};
\ No newline at end of file
index faa691f..2eb6f4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8c1=['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','stringify','lodash','html-to-text','./utils','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','fromString','getMustacheRender','replace','validate','length','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','info'];(function(_0x3ad440,_0x388987){var _0x25f3a5=function(_0x3165ee){while(--_0x3165ee){_0x3ad440['push'](_0x3ad440['shift']());}};_0x25f3a5(++_0x388987);}(_0xc8c1,0x12a));var _0x1c8c=function(_0x3a8e6e,_0x56414d){_0x3a8e6e=_0x3a8e6e-0x0;var _0x322b9d=_0xc8c1[_0x3a8e6e];return _0x322b9d;};'use strict';var schema=require('validate');var _=require(_0x1c8c('0x0'));var htmlToText=require(_0x1c8c('0x1'));var utils=require(_0x1c8c('0x2'));var logger=require(_0x1c8c('0x3'))(_0x1c8c('0x4'));var gotoif=schema({'condition':{'type':_0x1c8c('0x5'),'required':!![],'message':_0x1c8c('0x6')},'priorityTrue':{'type':'number','message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0x1c8c('0x7'),'message':'priority\x20false\x20is\x20a\x20number'}});exports['consequence']=function(_0x1f47dd,_0x238e47){return function(_0x2d1d12){try{var _0x3a5b06={'condition':htmlToText[_0x1c8c('0x8')](utils[_0x1c8c('0x9')](_0x238e47[0x0],this),{'wordwrap':![]})[_0x1c8c('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x238e47[0x1],'priorityFalse':_0x238e47[0x2]};var _0x358feb=gotoif[_0x1c8c('0xb')](_0x3a5b06,{'typecast':!![]});if(_0x358feb[_0x1c8c('0xc')]){logger['error'](_0x1c8c('0xd'),_0x1f47dd,_[_0x1c8c('0xe')](_0x358feb,_0x1c8c('0xf'))[_0x1c8c('0x10')](',\x20'));_0x2d1d12[_0x1c8c('0x11')]();}else{try{var _0x3c2869=eval('('+_0x3a5b06[_0x1c8c('0x12')]+')');var _0x10fd1c=_0x3c2869?_0x3a5b06[_0x1c8c('0x13')]:_0x3a5b06['priorityFalse'];logger[_0x1c8c('0x14')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x1f47dd,_0x3a5b06[_0x1c8c('0x12')],_0x3c2869,_0x10fd1c||_0x1c8c('0x15'));if(_0x10fd1c){var _0x135cdb=_[_0x1c8c('0x16')](_0x2d1d12[_0x1c8c('0x17')](),{'p':_0x10fd1c});if(_0x135cdb>=0x0){logger[_0x1c8c('0x14')](_0x1c8c('0x18'),_0x1f47dd,_0x10fd1c||_0x1c8c('0x15'),_0x135cdb);_0x2d1d12[_0x1c8c('0x15')](_0x135cdb);}else{logger[_0x1c8c('0x14')](_0x1c8c('0x19'),_0x1f47dd,_0x10fd1c||_0x1c8c('0x15'));_0x2d1d12[_0x1c8c('0x11')]();}}else{_0x2d1d12[_0x1c8c('0x15')]();}}catch(_0x13df44){logger[_0x1c8c('0x1a')](_0x1c8c('0x1b'),_0x1f47dd,_0x13df44['message']);_0x2d1d12[_0x1c8c('0x11')]();}}}catch(_0xc60415){logger[_0x1c8c('0x1a')]('[%s][GOTOIF]\x20%s',_0x1f47dd,JSON[_0x1c8c('0x1c')](_0xc60415));_0x2d1d12[_0x1c8c('0x11')]();}};};
\ No newline at end of file
+var _0x3ec6=['next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20eval\x20error:\x20%s','[%s][GOTOIF]\x20%s','stringify','validate','html-to-text','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','error','map','message','join','stop','condition','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x3ec6,0x1c1));var _0x63ec=function(_0x39ab22,_0xde5b41){_0x39ab22=_0x39ab22-0x0;var _0x5d634d=_0x3ec6[_0x39ab22];return _0x5d634d;};'use strict';var schema=require(_0x63ec('0x0'));var _=require('lodash');var htmlToText=require(_0x63ec('0x1'));var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0x63ec('0x2'),'required':!![],'message':_0x63ec('0x3')},'priorityTrue':{'type':'number','message':_0x63ec('0x4')},'priorityFalse':{'type':_0x63ec('0x5'),'message':_0x63ec('0x6')}});exports[_0x63ec('0x7')]=function(_0x2b8806,_0x555fc7){return function(_0x1e5a4f){try{var _0x1d2f44={'condition':htmlToText[_0x63ec('0x8')](utils[_0x63ec('0x9')](_0x555fc7[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x555fc7[0x1],'priorityFalse':_0x555fc7[0x2]};var _0x4ad4b5=gotoif[_0x63ec('0x0')](_0x1d2f44,{'typecast':!![]});if(_0x4ad4b5['length']){logger[_0x63ec('0xa')]('[%s][GOTOIF]\x20%s',_0x2b8806,_[_0x63ec('0xb')](_0x4ad4b5,_0x63ec('0xc'))[_0x63ec('0xd')](',\x20'));_0x1e5a4f[_0x63ec('0xe')]();}else{try{var _0x298c1c=eval('('+_0x1d2f44[_0x63ec('0xf')]+')');var _0x2e2cdc=_0x298c1c?_0x1d2f44['priorityTrue']:_0x1d2f44[_0x63ec('0x10')];logger[_0x63ec('0x11')](_0x63ec('0x12'),_0x2b8806,_0x1d2f44['condition'],_0x298c1c,_0x2e2cdc||_0x63ec('0x13'));if(_0x2e2cdc){var _0x27ca5d=_[_0x63ec('0x14')](_0x1e5a4f[_0x63ec('0x15')](),{'p':_0x2e2cdc});if(_0x27ca5d>=0x0){logger[_0x63ec('0x11')](_0x63ec('0x16'),_0x2b8806,_0x2e2cdc||_0x63ec('0x13'),_0x27ca5d);_0x1e5a4f[_0x63ec('0x13')](_0x27ca5d);}else{logger[_0x63ec('0x11')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x2b8806,_0x2e2cdc||_0x63ec('0x13'));_0x1e5a4f['stop']();}}else{_0x1e5a4f['next']();}}catch(_0x13bc65){logger['error'](_0x63ec('0x17'),_0x2b8806,_0x13bc65[_0x63ec('0xc')]);_0x1e5a4f['stop']();}}}catch(_0x297c20){logger['error'](_0x63ec('0x18'),_0x2b8806,JSON[_0x63ec('0x19')](_0x297c20));_0x1e5a4f[_0x63ec('0xe')]();}};};
\ No newline at end of file
index f9d1ac6..096aa71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf278=['[%s][GOTOP]\x20%s','stringify','validate','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','map','message','join','info','priority','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','error'];(function(_0x3040f0,_0x2fdc1b){var _0x4864e2=function(_0x42c7aa){while(--_0x42c7aa){_0x3040f0['push'](_0x3040f0['shift']());}};_0x4864e2(++_0x2fdc1b);}(_0xf278,0xd3));var _0x8f27=function(_0x442f5b,_0x39d79d){_0x442f5b=_0x442f5b-0x0;var _0x19fd96=_0xf278[_0x442f5b];return _0x19fd96;};'use strict';var schema=require(_0x8f27('0x0'));var _=require('lodash');var logger=require(_0x8f27('0x1'))(_0x8f27('0x2'));var gotop=schema({'priority':{'type':_0x8f27('0x3'),'required':!![],'message':_0x8f27('0x4')}});exports[_0x8f27('0x5')]=function(_0x245ae4,_0x492417){return function(_0x2bd052){try{var _0x1b4506={'priority':_0x492417[0x0]};var _0x742553=gotop[_0x8f27('0x0')](_0x1b4506,{'typecast':!![]});if(_0x742553[_0x8f27('0x6')]){logger['error']('[%s][GOTOP]\x20%s',_0x245ae4,_[_0x8f27('0x7')](_0x742553,_0x8f27('0x8'))[_0x8f27('0x9')](',\x20'));_0x2bd052['stop']();}else{logger[_0x8f27('0xa')]('[%s][GOTOP]\x20priority\x20%s',_0x245ae4,_0x1b4506['priority']);if(_0x1b4506[_0x8f27('0xb')]){var _0x3b8f40=_['findIndex'](_0x2bd052['rules'](),{'p':_0x1b4506['priority']});if(_0x3b8f40>=0x0){logger[_0x8f27('0xa')](_0x8f27('0xc'),_0x245ae4,_0x1b4506[_0x8f27('0xb')]||_0x8f27('0xd'),_0x3b8f40);_0x2bd052['next'](_0x3b8f40);}else{logger[_0x8f27('0xa')](_0x8f27('0xe'),_0x245ae4,_0x1b4506[_0x8f27('0xb')]||_0x8f27('0xd'));_0x2bd052[_0x8f27('0xf')]();}}else{_0x2bd052[_0x8f27('0xd')]();}}}catch(_0x58b659){logger[_0x8f27('0x10')](_0x8f27('0x11'),_0x245ae4,JSON[_0x8f27('0x12')](_0x58b659));_0x2bd052[_0x8f27('0xf')]();}};};
\ No newline at end of file
+var _0xc1b3=['map','join','info','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','stringify','validate','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s'];(function(_0x5f3424,_0x2fbb96){var _0x4fbd4a=function(_0x4d286f){while(--_0x4d286f){_0x5f3424['push'](_0x5f3424['shift']());}};_0x4fbd4a(++_0x2fbb96);}(_0xc1b3,0xa9));var _0x3c1b=function(_0x1b3e1e,_0xb24b96){_0x1b3e1e=_0x1b3e1e-0x0;var _0x4c4969=_0xc1b3[_0x1b3e1e];return _0x4c4969;};'use strict';var schema=require(_0x3c1b('0x0'));var _=require('lodash');var logger=require('../../../../config/logger')('routing');var gotop=schema({'priority':{'type':_0x3c1b('0x1'),'required':!![],'message':_0x3c1b('0x2')}});exports[_0x3c1b('0x3')]=function(_0x5e972b,_0x264156){return function(_0x2de779){try{var _0x3d40cc={'priority':_0x264156[0x0]};var _0x560f74=gotop[_0x3c1b('0x0')](_0x3d40cc,{'typecast':!![]});if(_0x560f74[_0x3c1b('0x4')]){logger[_0x3c1b('0x5')](_0x3c1b('0x6'),_0x5e972b,_[_0x3c1b('0x7')](_0x560f74,'message')[_0x3c1b('0x8')](',\x20'));_0x2de779['stop']();}else{logger[_0x3c1b('0x9')]('[%s][GOTOP]\x20priority\x20%s',_0x5e972b,_0x3d40cc['priority']);if(_0x3d40cc[_0x3c1b('0xa')]){var _0x3b8b22=_[_0x3c1b('0xb')](_0x2de779[_0x3c1b('0xc')](),{'p':_0x3d40cc[_0x3c1b('0xa')]});if(_0x3b8b22>=0x0){logger[_0x3c1b('0x9')](_0x3c1b('0xd'),_0x5e972b,_0x3d40cc['priority']||_0x3c1b('0xe'),_0x3b8b22);_0x2de779[_0x3c1b('0xe')](_0x3b8b22);}else{logger[_0x3c1b('0x9')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x5e972b,_0x3d40cc[_0x3c1b('0xa')]||_0x3c1b('0xe'));_0x2de779['stop']();}}else{_0x2de779[_0x3c1b('0xe')]();}}}catch(_0xfa772d){logger[_0x3c1b('0x5')](_0x3c1b('0x6'),_0x5e972b,JSON[_0x3c1b('0xf')](_0xfa772d));_0x2de779['stop']();}};};
\ No newline at end of file
index 1e072fa..c7ca3df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b57=['create','then','[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','getMustacheRender','contact','channel','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction'];(function(_0x1f88d4,_0x3f2a9c){var _0x31970d=function(_0x439a8a){while(--_0x439a8a){_0x1f88d4['push'](_0x1f88d4['shift']());}};_0x31970d(++_0x3f2a9c);}(_0x3b57,0x103));var _0x73b5=function(_0x4a015f,_0x2820e3){_0x4a015f=_0x4a015f-0x0;var _0x40ce6c=_0x3b57[_0x4a015f];return _0x40ce6c;};'use strict';var _=require(_0x73b5('0x0'));var utils=require('./utils');var logger=require(_0x73b5('0x1'))(_0x73b5('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x73b5('0x3')),'mailMessage':require(_0x73b5('0x4')),'smsMessage':require(_0x73b5('0x5')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x73b5('0x6'))};exports['consequence']=function(_0x348aea,_0x9f2342){return function(_0x48c63d){try{var _0x5935f7={'body':utils[_0x73b5('0x7')](_0x9f2342[0x0],this),'ContactId':this[_0x73b5('0x8')]['id']};if(this[_0x73b5('0x9')]==='chat'){_0x5935f7[_0x73b5('0xa')]=this[_0x73b5('0xb')]['id'];}else{_0x5935f7[_[_0x73b5('0xc')](this[_0x73b5('0x9')])+_0x73b5('0xd')]=this['account']['id'];}_0x5935f7[_[_0x73b5('0xc')](this['channel'])+_0x73b5('0xe')]=this[_0x73b5('0xf')]['id'];if(rpc[this['channel']+'Message']){return rpc[this[_0x73b5('0x9')]+'Message'][_0x73b5('0x10')](_0x5935f7)[_0x73b5('0x11')](function(_0x164f3b){logger['info'](_0x73b5('0x12'),_0x348aea,_0x5935f7[_0x73b5('0x13')]);_0x48c63d[_0x73b5('0x14')]();})[_0x73b5('0x15')](function(_0x439d44){logger[_0x73b5('0x16')](_0x73b5('0x12'),_0x348aea,JSON[_0x73b5('0x17')](_0x439d44));_0x48c63d[_0x73b5('0x18')]();});}}catch(_0x20b1e0){logger[_0x73b5('0x16')](_0x73b5('0x12'),_0x348aea,JSON['stringify'](_0x20b1e0));_0x48c63d[_0x73b5('0x18')]();}};};
\ No newline at end of file
+var _0x7e7b=['./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','ChatWebsiteId','upperFirst','channel','AccountId','account','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s','body','catch','error','stringify','stop','lodash'];(function(_0x2644f8,_0x40977c){var _0x233fea=function(_0x308f49){while(--_0x308f49){_0x2644f8['push'](_0x2644f8['shift']());}};_0x233fea(++_0x40977c);}(_0x7e7b,0x133));var _0xb7e7=function(_0x45f0d3,_0xc3f785){_0x45f0d3=_0x45f0d3-0x0;var _0x160650=_0x7e7b[_0x45f0d3];return _0x160650;};'use strict';var _=require(_0xb7e7('0x0'));var utils=require(_0xb7e7('0x1'));var logger=require('../../../../config/logger')(_0xb7e7('0x2'));var rpc={'chatMessage':require(_0xb7e7('0x3')),'openchannelMessage':require(_0xb7e7('0x4')),'mailMessage':require(_0xb7e7('0x5')),'smsMessage':require(_0xb7e7('0x6')),'faxMessage':require(_0xb7e7('0x7')),'whatsappMessage':require(_0xb7e7('0x8'))};exports[_0xb7e7('0x9')]=function(_0x1f2c48,_0x4d4fa8){return function(_0x4c1ca6){try{var _0x2c95f8={'body':utils[_0xb7e7('0xa')](_0x4d4fa8[0x0],this),'ContactId':this[_0xb7e7('0xb')]['id']};if(this['channel']==='chat'){_0x2c95f8[_0xb7e7('0xc')]=this['account']['id'];}else{_0x2c95f8[_[_0xb7e7('0xd')](this[_0xb7e7('0xe')])+_0xb7e7('0xf')]=this[_0xb7e7('0x10')]['id'];}_0x2c95f8[_['upperFirst'](this['channel'])+'InteractionId']=this[_0xb7e7('0x11')]['id'];if(rpc[this[_0xb7e7('0xe')]+_0xb7e7('0x12')]){return rpc[this['channel']+_0xb7e7('0x12')][_0xb7e7('0x13')](_0x2c95f8)[_0xb7e7('0x14')](function(_0x4169f6){logger[_0xb7e7('0x15')](_0xb7e7('0x16'),_0x1f2c48,_0x2c95f8[_0xb7e7('0x17')]);_0x4c1ca6['next']();})[_0xb7e7('0x18')](function(_0x516fd6){logger[_0xb7e7('0x19')](_0xb7e7('0x16'),_0x1f2c48,JSON[_0xb7e7('0x1a')](_0x516fd6));_0x4c1ca6[_0xb7e7('0x1b')]();});}}catch(_0x9b5106){logger[_0xb7e7('0x19')](_0xb7e7('0x16'),_0x1f2c48,JSON[_0xb7e7('0x1a')](_0x9b5106));_0x4c1ca6['stop']();}};};
\ No newline at end of file
index eed7033..95dc69c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd910=['routing','consequence','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','./utils','../../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd910,0x116));var _0x0d91=function(_0x5e209a,_0x49fea4){_0x5e209a=_0x5e209a-0x0;var _0x4a510c=_0xd910[_0x5e209a];return _0x4a510c;};'use strict';var utils=require(_0x0d91('0x0'));var logger=require(_0x0d91('0x1'))(_0x0d91('0x2'));exports[_0x0d91('0x3')]=function(_0x152d35,_0x1d4507){return function(_0x5f2d19){try{logger['info'](_0x0d91('0x4'),_0x152d35,utils[_0x0d91('0x5')](_0x1d4507[0x0],this));_0x5f2d19[_0x0d91('0x6')]();}catch(_0x95e8cb){logger[_0x0d91('0x7')](_0x0d91('0x4'),_0x152d35,JSON[_0x0d91('0x8')](_0x95e8cb));_0x5f2d19[_0x0d91('0x9')]();}};};
\ No newline at end of file
+var _0xd760=['stop','./utils','routing','[%s][NOOP]\x20%s','getMustacheRender','error','stringify'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd760,0x71));var _0x0d76=function(_0x511c83,_0x1210eb){_0x511c83=_0x511c83-0x0;var _0xad55f3=_0xd760[_0x511c83];return _0xad55f3;};'use strict';var utils=require(_0x0d76('0x0'));var logger=require('../../../../config/logger')(_0x0d76('0x1'));exports['consequence']=function(_0xe4cf3d,_0x1acd3b){return function(_0x1889c4){try{logger['info'](_0x0d76('0x2'),_0xe4cf3d,utils[_0x0d76('0x3')](_0x1acd3b[0x0],this));_0x1889c4['next']();}catch(_0x415439){logger[_0x0d76('0x4')]('[%s][NOOP]\x20%s',_0xe4cf3d,JSON[_0x0d76('0x5')](_0x415439));_0x1889c4[_0x0d76('0x6')]();}};};
\ No newline at end of file
index 46dbc83..171a19e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d74=['list','upperFirst','channel','QueueId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','Interaction','update','interaction','then','error','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','length','[%s][QUEUE]\x20%s','map','join','stop','find','qtimeout','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','next','strategy','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','routing','redis','defaults','localhost','queue_id','account','from','joinAt','emit','clone','queue','push','capitalize','InteractionId','format','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/faxInteraction','../../rpc/mailInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact'];(function(_0x16977d,_0x221f28){var _0x3ca48a=function(_0x575116){while(--_0x575116){_0x16977d['push'](_0x16977d['shift']());}};_0x3ca48a(++_0x221f28);}(_0x8d74,0x16c));var _0x48d7=function(_0x46f159,_0x164c5d){_0x46f159=_0x46f159-0x0;var _0x214f0b=_0x8d74[_0x46f159];return _0x214f0b;};'use strict';var schema=require(_0x48d7('0x0'));var _=require(_0x48d7('0x1'));var util=require(_0x48d7('0x2'));var seqqueue=require(_0x48d7('0x3'));var moment=require(_0x48d7('0x4'));var Redis=require(_0x48d7('0x5'));var config=require(_0x48d7('0x6'));var logger=require('../../../../config/logger')(_0x48d7('0x7'));var strategy=require('./strategy');config[_0x48d7('0x8')]=_[_0x48d7('0x9')](config[_0x48d7('0x8')],{'host':_0x48d7('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x48d7('0x8')]));var attributes=['id',_0x48d7('0xb'),_0x48d7('0xc'),'queue',_0x48d7('0xd'),_0x48d7('0xe')];function emit(_0x87138a,_0x5f5147,_0x41203b){io['to'](_0x87138a)[_0x48d7('0xf')](_0x5f5147,_0x41203b);}function emitChannelQueueInteraction(_0x1465d1,_0x1ba86a,_0xe94137,_0x2ad503,_0x52c888,_0x253495,_0x581066,_0x562c8f){var _0x51225b=_[_0x48d7('0x10')](_0xe94137);_0x51225b[_0x48d7('0xb')]=_0x562c8f;_0x51225b[_0x48d7('0x11')]=_0x1ba86a;_0x51225b[_0x48d7('0xc')]=_0x2ad503;_0x51225b['id']=_0x52c888;if(_0x253495){attributes[_0x48d7('0x12')](_[_0x48d7('0x13')](_0x1465d1)+_0x48d7('0x14'));_0x581066[util[_0x48d7('0x15')]('%sQueuesWaitingInteractions',_0x1465d1)][_0x52c888]=_[_0x48d7('0x16')](_0x51225b,attributes);}else{delete _0x581066[util[_0x48d7('0x15')]('%sQueuesWaitingInteractions',_0x1465d1)][_0x52c888];}emit(util[_0x48d7('0x15')](_0x48d7('0x17'),_0x1465d1,_0x1ba86a),util[_0x48d7('0x15')](_0x48d7('0x18'),_0x1465d1,_0x253495?_0x48d7('0x19'):'remove'),_['pick'](_0x51225b,attributes));}var rpc={'openchannelQueueReport':require(_0x48d7('0x1a')),'mailQueueReport':require(_0x48d7('0x1b')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x48d7('0x1c')),'faxQueueReport':require(_0x48d7('0x1d')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport'),'chatInteraction':require('../../rpc/chatInteraction'),'faxInteraction':require(_0x48d7('0x1e')),'mailInteraction':require(_0x48d7('0x1f')),'openchannelInteraction':require(_0x48d7('0x20')),'smsInteraction':require(_0x48d7('0x21')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var queue=schema({'name':{'type':_0x48d7('0x22'),'required':!![],'message':_0x48d7('0x23')},'timeout':{'type':'number','message':_0x48d7('0x24')}});function startRouting(_0x4ababc,_0x4ef880,_0x4deb1a,_0x2cf5b6){if(_0x4ababc&&_0x4ef880&&_0x4deb1a){_0x4ef880[_0x48d7('0x25')]+=0x1;var _0x27275b={'uniqueid':_0x4ababc,'from':_0x4deb1a[_0x48d7('0x26')]?_0x4deb1a['body']['from']:'','joinAt':moment()[_0x48d7('0x15')](_0x48d7('0x27')),'ContactId':_0x4deb1a[_0x48d7('0x28')]?_0x4deb1a[_0x48d7('0x28')]['id']:null,'ListId':_0x4deb1a[_0x48d7('0x29')]?_0x4deb1a[_0x48d7('0x29')]['id']:null};_0x27275b[_[_0x48d7('0x2a')](_0x4deb1a[_0x48d7('0x2b')])+_0x48d7('0x2c')]=_0x4ef880['id']||null;_0x27275b[_['upperFirst'](_0x4deb1a[_0x48d7('0x2b')])+'InteractionId']=_0x4deb1a['interaction']?_0x4deb1a['interaction']['id']:null;_0x27275b[_[_0x48d7('0x2a')](_0x4deb1a[_0x48d7('0x2b')])+'MessageId']=_0x4deb1a[_0x48d7('0x2d')]?_0x4deb1a[_0x48d7('0x2d')]['id']:null;_0x27275b[_[_0x48d7('0x2a')](_0x4deb1a['channel'])+(_0x4deb1a[_0x48d7('0x2b')]!==_0x48d7('0x2e')?_0x48d7('0x2f'):'WebsiteId')]=_0x4deb1a[_0x48d7('0xc')]?_0x4deb1a[_0x48d7('0xc')]['id']:null;logger[_0x48d7('0x30')](util[_0x48d7('0x15')](_0x48d7('0x31'),_0x4ababc,_0x4ef880['name']));emitChannelQueueInteraction(_0x4deb1a[_0x48d7('0x2b')],_0x4ef880['name'],_0x27275b,_0x4deb1a[_0x48d7('0xc')][_0x48d7('0x32')],_0x4deb1a[_0x48d7('0x2d')]['id'],!![],_0x2cf5b6,_0x4ef880['id']);if(rpc[_0x4deb1a[_0x48d7('0x2b')]+_0x48d7('0x33')]){return rpc[_0x4deb1a[_0x48d7('0x2b')]+_0x48d7('0x33')][_0x48d7('0x34')](_0x27275b)[_0x48d7('0x35')](function(_0x34da90){logger['error'](_0x48d7('0x36'),_0x34da90);});}}}function stopRouting(_0x405eb0,_0x41f9cc,_0x1158fd,_0x2dc8d0){if(_0x405eb0&&_0x41f9cc){_0x41f9cc[_0x48d7('0x25')]-=0x1;var _0x2d8649={'leaveAt':moment()[_0x48d7('0x15')](_0x48d7('0x27')),'acceptAt':moment()[_0x48d7('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x48d7('0x37')};logger[_0x48d7('0x30')](util['format'](_0x48d7('0x38'),_0x405eb0,_0x41f9cc[_0x48d7('0x32')]));emitChannelQueueInteraction(_0x1158fd[_0x48d7('0x2b')],_0x41f9cc[_0x48d7('0x32')],_0x1158fd[_0x48d7('0x26')],_0x1158fd[_0x48d7('0xc')][_0x48d7('0x32')],_0x1158fd['message']['id'],![],_0x2dc8d0,_0x41f9cc['id']);return rpc[_0x1158fd[_0x48d7('0x2b')]+_0x48d7('0x39')][_0x48d7('0x3a')](_0x1158fd[_0x48d7('0x3b')]['id'],{'queueId':_0x41f9cc['id']})[_0x48d7('0x3c')](function(){if(rpc[_0x1158fd['channel']+_0x48d7('0x33')]){return rpc[_0x1158fd[_0x48d7('0x2b')]+_0x48d7('0x33')][_0x48d7('0x3a')](_0x405eb0,_0x2d8649)[_0x48d7('0x35')](function(_0x29a5fe){logger[_0x48d7('0x3d')]('update\x20queue\x20report',_0x29a5fe);});}});}}function endRouting(_0x114701,_0x1d254e,_0x1551a1,_0x23c1ca){if(_0x114701&&_0x1d254e){_0x1d254e[_0x48d7('0x25')]-=0x1;var _0x51f14b={'leaveAt':moment()[_0x48d7('0x15')](_0x48d7('0x27')),'exitAt':moment()['format'](_0x48d7('0x27')),'reason':_0x48d7('0x3e')};logger[_0x48d7('0x30')](util[_0x48d7('0x15')](_0x48d7('0x3f'),_0x114701,_0x1d254e[_0x48d7('0x32')]));emitChannelQueueInteraction(_0x1551a1['channel'],_0x1d254e[_0x48d7('0x32')],_0x1551a1[_0x48d7('0x26')],_0x1551a1['account'][_0x48d7('0x32')],_0x1551a1['message']['id'],![],_0x23c1ca);if(rpc[_0x1551a1[_0x48d7('0x2b')]+'QueueReport']){return rpc[_0x1551a1[_0x48d7('0x2b')]+'QueueReport'][_0x48d7('0x3a')](_0x114701,_0x51f14b)[_0x48d7('0x35')](function(_0x5e839e){logger[_0x48d7('0x3d')]('update\x20queue\x20report',_0x5e839e);});}}}function handleFindQueue(_0x1ce2fe){return function(_0x1bb19){return _0x1bb19[_0x48d7('0x32')]['toLowerCase']()===_0x1ce2fe[_0x48d7('0x40')]();};}exports['consequence']=function(_0xaa0b9,_0x505376,_0x40e658,_0x19f0f3){return function(_0x4da893){try{var _0x2595ee={'name':_0x505376[0x0],'timeout':_0x505376[0x1]};var _0x33a337=queue['validate'](_0x2595ee,{'typecast':!![]});if(_0x33a337[_0x48d7('0x41')]){logger[_0x48d7('0x3d')](_0x48d7('0x42'),_0xaa0b9,_[_0x48d7('0x43')](_0x33a337,_0x48d7('0x2d'))[_0x48d7('0x44')](',\x20'));_0x4da893[_0x48d7('0x45')]();}else{var _0x58603f=_[_0x48d7('0x46')](_0x40e658[_0x19f0f3[_0x48d7('0x2b')]+'Queues'],handleFindQueue(_0x2595ee['name']));if(_0x58603f){startRouting(_0xaa0b9,_0x58603f,_0x19f0f3,_0x40e658);var _0x2b4612=(_0x58603f['timeout']||0xa)*0x3e8;var _0x358a03=(_0x2595ee[_0x48d7('0x3e')]||0x14)*0x3e8;var _0x49cbe9;if(_0x2b4612>_0x358a03){_0x358a03=_0x2b4612;}var _0x57e805=seqqueue['createQueue'](_0x2b4612);_0x57e805['id']=_0xaa0b9;_0x57e805['atimeout']=_0x2b4612;_0x57e805[_0x48d7('0x47')]=_0x358a03;_0x57e805[_0x48d7('0x2b')]=_0x19f0f3['channel'];_0x40e658['rules'][_0xaa0b9]['on'](_0x48d7('0x48'),function(){logger[_0x48d7('0x30')](_0x48d7('0x49'),_0xaa0b9);stopRouting(_0xaa0b9,_0x58603f,_0x19f0f3,_0x40e658);clearTimeout(_0x49cbe9);_0x49cbe9=undefined;_0x57e805[_0x48d7('0x4a')](!![]);if(_0x40e658[_0x48d7('0x4b')][_0xaa0b9]){delete _0x40e658['rules'][_0xaa0b9];}_0x4da893['stop']();});_0x40e658[_0x48d7('0x4b')][_0xaa0b9]['on']('complete',function(){if(_0x40e658['rules'][_0xaa0b9]){delete _0x40e658[_0x48d7('0x4b')][_0xaa0b9];}});_0x49cbe9=setTimeout(function(){logger[_0x48d7('0x30')]('[%s][QUEUE]\x20APPLICATION\x20END',_0xaa0b9);endRouting(_0xaa0b9,_0x58603f,_0x19f0f3,_0x40e658);clearTimeout(_0x49cbe9);_0x57e805[_0x48d7('0x4a')](!![]);_0x4da893[_0x48d7('0x4c')]();},_0x358a03);switch(_0x58603f[_0x48d7('0x4d')]){case'rrmemory':strategy['rrmemory'](_0x57e805,_0x58603f,_0x40e658,_0x19f0f3);break;default:strategy[_0x48d7('0x4e')](_0x57e805,_0x58603f,_0x40e658,_0x19f0f3);}}else{logger[_0x48d7('0x3d')](_0x48d7('0x4f'),_0xaa0b9,_0x2595ee[_0x48d7('0x32')]);_0x4da893[_0x48d7('0x45')]();}}}catch(_0x179148){logger[_0x48d7('0x3d')]('[%s][QUEUE]\x20%s',_0xaa0b9,_0x179148[_0x48d7('0x50')]);_0x4da893['stop']();}};};
\ No newline at end of file
+var _0x5801=['length','map','join','stop','find','createQueue','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','ioredis','./strategy','defaults','redis','socket.io-emitter','queue_id','account','from','joinAt','emit','clone','queue','push','capitalize','InteractionId','format','%sQueuesWaitingInteractions','pick','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','../../rpc/chatInteraction','../../rpc/faxInteraction','../../rpc/mailInteraction','../../rpc/openchannelInteraction','../../rpc/whatsappInteraction','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','interaction','MessageId','message','chat','AccountId','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','info','[%s][STOP:QUEUE][NAME:%s]','Interaction','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase'];(function(_0x4ac60a,_0x503a99){var _0x4b22e8=function(_0x145c47){while(--_0x145c47){_0x4ac60a['push'](_0x4ac60a['shift']());}};_0x4b22e8(++_0x503a99);}(_0x5801,0x115));var _0x1580=function(_0x208034,_0x4e16d6){_0x208034=_0x208034-0x0;var _0x8e160a=_0x5801[_0x208034];return _0x8e160a;};'use strict';var schema=require(_0x1580('0x0'));var _=require(_0x1580('0x1'));var util=require('util');var seqqueue=require(_0x1580('0x2'));var moment=require('moment');var Redis=require(_0x1580('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')('routing');var strategy=require(_0x1580('0x4'));config['redis']=_[_0x1580('0x5')](config[_0x1580('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x1580('0x7'))(new Redis(config[_0x1580('0x6')]));var attributes=['id',_0x1580('0x8'),_0x1580('0x9'),'queue',_0x1580('0xa'),_0x1580('0xb')];function emit(_0x1d91e8,_0x33a959,_0x325b75){io['to'](_0x1d91e8)[_0x1580('0xc')](_0x33a959,_0x325b75);}function emitChannelQueueInteraction(_0x446004,_0x52d1f8,_0x346e2a,_0x1f7ebe,_0x1d9660,_0x54eac8,_0x5812ee,_0xad296e){var _0x5047e5=_[_0x1580('0xd')](_0x346e2a);_0x5047e5[_0x1580('0x8')]=_0xad296e;_0x5047e5[_0x1580('0xe')]=_0x52d1f8;_0x5047e5[_0x1580('0x9')]=_0x1f7ebe;_0x5047e5['id']=_0x1d9660;if(_0x54eac8){attributes[_0x1580('0xf')](_[_0x1580('0x10')](_0x446004)+_0x1580('0x11'));_0x5812ee[util[_0x1580('0x12')](_0x1580('0x13'),_0x446004)][_0x1d9660]=_[_0x1580('0x14')](_0x5047e5,attributes);}else{delete _0x5812ee[util[_0x1580('0x12')]('%sQueuesWaitingInteractions',_0x446004)][_0x1d9660];}emit(util['format']('%s:queue:%s',_0x446004,_0x52d1f8),util[_0x1580('0x12')](_0x1580('0x15'),_0x446004,_0x54eac8?_0x1580('0x16'):_0x1580('0x17')),_['pick'](_0x5047e5,attributes));}var rpc={'openchannelQueueReport':require(_0x1580('0x18')),'mailQueueReport':require(_0x1580('0x19')),'chatQueueReport':require(_0x1580('0x1a')),'smsQueueReport':require(_0x1580('0x1b')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x1580('0x1c')),'chatInteraction':require(_0x1580('0x1d')),'faxInteraction':require(_0x1580('0x1e')),'mailInteraction':require(_0x1580('0x1f')),'openchannelInteraction':require(_0x1580('0x20')),'smsInteraction':require('../../rpc/smsInteraction'),'whatsappInteraction':require(_0x1580('0x21'))};var queue=schema({'name':{'type':_0x1580('0x22'),'required':!![],'message':_0x1580('0x23')},'timeout':{'type':_0x1580('0x24'),'message':_0x1580('0x25')}});function startRouting(_0x3e8826,_0x2dab3c,_0x5b0afe,_0x14ee46){if(_0x3e8826&&_0x2dab3c&&_0x5b0afe){_0x2dab3c[_0x1580('0x26')]+=0x1;var _0x54a463={'uniqueid':_0x3e8826,'from':_0x5b0afe[_0x1580('0x27')]?_0x5b0afe[_0x1580('0x27')][_0x1580('0xa')]:'','joinAt':moment()['format'](_0x1580('0x28')),'ContactId':_0x5b0afe['contact']?_0x5b0afe[_0x1580('0x29')]['id']:null,'ListId':_0x5b0afe[_0x1580('0x2a')]?_0x5b0afe['list']['id']:null};_0x54a463[_[_0x1580('0x2b')](_0x5b0afe[_0x1580('0x2c')])+_0x1580('0x2d')]=_0x2dab3c['id']||null;_0x54a463[_['upperFirst'](_0x5b0afe['channel'])+_0x1580('0x11')]=_0x5b0afe[_0x1580('0x2e')]?_0x5b0afe[_0x1580('0x2e')]['id']:null;_0x54a463[_[_0x1580('0x2b')](_0x5b0afe[_0x1580('0x2c')])+_0x1580('0x2f')]=_0x5b0afe[_0x1580('0x30')]?_0x5b0afe[_0x1580('0x30')]['id']:null;_0x54a463[_[_0x1580('0x2b')](_0x5b0afe[_0x1580('0x2c')])+(_0x5b0afe['channel']!==_0x1580('0x31')?_0x1580('0x32'):_0x1580('0x33'))]=_0x5b0afe['account']?_0x5b0afe[_0x1580('0x9')]['id']:null;logger['info'](util[_0x1580('0x12')](_0x1580('0x34'),_0x3e8826,_0x2dab3c[_0x1580('0x35')]));emitChannelQueueInteraction(_0x5b0afe['channel'],_0x2dab3c[_0x1580('0x35')],_0x54a463,_0x5b0afe[_0x1580('0x9')][_0x1580('0x35')],_0x5b0afe['message']['id'],!![],_0x14ee46,_0x2dab3c['id']);if(rpc[_0x5b0afe['channel']+_0x1580('0x36')]){return rpc[_0x5b0afe[_0x1580('0x2c')]+_0x1580('0x36')][_0x1580('0x37')](_0x54a463)[_0x1580('0x38')](function(_0x29311f){logger[_0x1580('0x39')](_0x1580('0x3a'),_0x29311f);});}}}function stopRouting(_0x2707ea,_0x468e34,_0x4f8d50,_0x24b7fe){if(_0x2707ea&&_0x468e34){_0x468e34[_0x1580('0x26')]-=0x1;var _0x380d11={'leaveAt':moment()[_0x1580('0x12')](_0x1580('0x28')),'acceptAt':moment()[_0x1580('0x12')](_0x1580('0x28')),'reason':'accepted'};logger[_0x1580('0x3b')](util[_0x1580('0x12')](_0x1580('0x3c'),_0x2707ea,_0x468e34[_0x1580('0x35')]));emitChannelQueueInteraction(_0x4f8d50[_0x1580('0x2c')],_0x468e34[_0x1580('0x35')],_0x4f8d50[_0x1580('0x27')],_0x4f8d50['account'][_0x1580('0x35')],_0x4f8d50['message']['id'],![],_0x24b7fe,_0x468e34['id']);return rpc[_0x4f8d50[_0x1580('0x2c')]+_0x1580('0x3d')]['update'](_0x4f8d50[_0x1580('0x2e')]['id'],{'queueId':_0x468e34['id']})['then'](function(){if(rpc[_0x4f8d50[_0x1580('0x2c')]+_0x1580('0x36')]){return rpc[_0x4f8d50[_0x1580('0x2c')]+_0x1580('0x36')][_0x1580('0x3e')](_0x2707ea,_0x380d11)[_0x1580('0x38')](function(_0x605a33){logger[_0x1580('0x39')](_0x1580('0x3f'),_0x605a33);});}});}}function endRouting(_0x3f1222,_0xe723bb,_0x57b51f,_0x5ae37f){if(_0x3f1222&&_0xe723bb){_0xe723bb[_0x1580('0x26')]-=0x1;var _0x115e18={'leaveAt':moment()[_0x1580('0x12')](_0x1580('0x28')),'exitAt':moment()['format'](_0x1580('0x28')),'reason':_0x1580('0x40')};logger[_0x1580('0x3b')](util[_0x1580('0x12')](_0x1580('0x41'),_0x3f1222,_0xe723bb['name']));emitChannelQueueInteraction(_0x57b51f[_0x1580('0x2c')],_0xe723bb[_0x1580('0x35')],_0x57b51f['body'],_0x57b51f[_0x1580('0x9')]['name'],_0x57b51f[_0x1580('0x30')]['id'],![],_0x5ae37f);if(rpc[_0x57b51f['channel']+'QueueReport']){return rpc[_0x57b51f[_0x1580('0x2c')]+_0x1580('0x36')]['update'](_0x3f1222,_0x115e18)[_0x1580('0x38')](function(_0x2dc1aa){logger['error'](_0x1580('0x3f'),_0x2dc1aa);});}}}function handleFindQueue(_0x5e411f){return function(_0x15c747){return _0x15c747[_0x1580('0x35')][_0x1580('0x42')]()===_0x5e411f[_0x1580('0x42')]();};}exports['consequence']=function(_0x16b2c1,_0x376bfe,_0x6eb9cd,_0x104ba6){return function(_0x24857d){try{var _0xb11afe={'name':_0x376bfe[0x0],'timeout':_0x376bfe[0x1]};var _0x34c0a1=queue[_0x1580('0x0')](_0xb11afe,{'typecast':!![]});if(_0x34c0a1[_0x1580('0x43')]){logger[_0x1580('0x39')]('[%s][QUEUE]\x20%s',_0x16b2c1,_[_0x1580('0x44')](_0x34c0a1,_0x1580('0x30'))[_0x1580('0x45')](',\x20'));_0x24857d[_0x1580('0x46')]();}else{var _0x10cbeb=_[_0x1580('0x47')](_0x6eb9cd[_0x104ba6['channel']+'Queues'],handleFindQueue(_0xb11afe[_0x1580('0x35')]));if(_0x10cbeb){startRouting(_0x16b2c1,_0x10cbeb,_0x104ba6,_0x6eb9cd);var _0x4bfe71=(_0x10cbeb['timeout']||0xa)*0x3e8;var _0x40076a=(_0xb11afe['timeout']||0x14)*0x3e8;var _0x416676;if(_0x4bfe71>_0x40076a){_0x40076a=_0x4bfe71;}var _0xdaec9c=seqqueue[_0x1580('0x48')](_0x4bfe71);_0xdaec9c['id']=_0x16b2c1;_0xdaec9c['atimeout']=_0x4bfe71;_0xdaec9c[_0x1580('0x49')]=_0x40076a;_0xdaec9c[_0x1580('0x2c')]=_0x104ba6['channel'];_0x6eb9cd[_0x1580('0x4a')][_0x16b2c1]['on'](_0x1580('0x4b'),function(){logger[_0x1580('0x3b')](_0x1580('0x4c'),_0x16b2c1);stopRouting(_0x16b2c1,_0x10cbeb,_0x104ba6,_0x6eb9cd);clearTimeout(_0x416676);_0x416676=undefined;_0xdaec9c[_0x1580('0x4d')](!![]);if(_0x6eb9cd[_0x1580('0x4a')][_0x16b2c1]){delete _0x6eb9cd[_0x1580('0x4a')][_0x16b2c1];}_0x24857d[_0x1580('0x46')]();});_0x6eb9cd['rules'][_0x16b2c1]['on'](_0x1580('0x4e'),function(){if(_0x6eb9cd[_0x1580('0x4a')][_0x16b2c1]){delete _0x6eb9cd[_0x1580('0x4a')][_0x16b2c1];}});_0x416676=setTimeout(function(){logger['info'](_0x1580('0x4f'),_0x16b2c1);endRouting(_0x16b2c1,_0x10cbeb,_0x104ba6,_0x6eb9cd);clearTimeout(_0x416676);_0xdaec9c[_0x1580('0x4d')](!![]);_0x24857d['next']();},_0x40076a);switch(_0x10cbeb[_0x1580('0x50')]){case _0x1580('0x51'):strategy[_0x1580('0x51')](_0xdaec9c,_0x10cbeb,_0x6eb9cd,_0x104ba6);break;default:strategy[_0x1580('0x52')](_0xdaec9c,_0x10cbeb,_0x6eb9cd,_0x104ba6);}}else{logger[_0x1580('0x39')](_0x1580('0x53'),_0x16b2c1,_0xb11afe[_0x1580('0x35')]);_0x24857d[_0x1580('0x46')]();}}}catch(_0x2840db){logger['error'](_0x1580('0x54'),_0x16b2c1,_0x2840db[_0x1580('0x55')]);_0x24857d[_0x1580('0x46')]();}};};
\ No newline at end of file
index d1a804b..1db7283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5636=['routing','push','handleRun','bind','handleTimeout','timeout','drained','prototype','handleDrained','debug','[%s][AGENT]\x20try\x20with\x20%s','agents','channel','saveWaitingNotification','showNotification','RINGING','forcedOwnership','isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','busy','busyQueue','removeWaitingNotification','writeLog','STOP','exports','lodash','uuid','notificationId','squeue','agent','realtime'];(function(_0x5aff44,_0x2da157){var _0x4aaa8a=function(_0x385baa){while(--_0x385baa){_0x5aff44['push'](_0x5aff44['shift']());}};_0x4aaa8a(++_0x2da157);}(_0x5636,0x102));var _0x6563=function(_0x11435c,_0x51840){_0x11435c=_0x11435c-0x0;var _0x198244=_0x5636[_0x11435c];return _0x198244;};'use strict';var _=require(_0x6563('0x0'));var uuid=require(_0x6563('0x1'));var util=require('./util');var logger=require('../../../../../config/logger')('routing');var Agent=function(_0x44872c,_0x3a95f7,_0x115cc1,_0x4ac653){this[_0x6563('0x2')]=uuid['v4']();this[_0x6563('0x3')]=_0x44872c;this[_0x6563('0x4')]=_0x3a95f7;this[_0x6563('0x5')]=_0x115cc1;this[_0x6563('0x6')]=_0x4ac653;this[_0x6563('0x3')][_0x6563('0x7')](this[_0x6563('0x8')][_0x6563('0x9')](this),this[_0x6563('0xa')][_0x6563('0x9')](this));this[_0x6563('0x3')]['on'](_0x6563('0xb'),this['handleTimeout']['bind'](this));this[_0x6563('0x3')]['on'](_0x6563('0xc'),this['handleDrained']['bind'](this));};Agent['prototype'][_0x6563('0x7')]=function(){this[_0x6563('0x3')][_0x6563('0x7')](this[_0x6563('0x8')][_0x6563('0x9')](this),this[_0x6563('0xa')][_0x6563('0x9')](this));};Agent[_0x6563('0xd')][_0x6563('0xe')]=function(){this['handleTimeout'](!![]);};Agent[_0x6563('0xd')]['handleRun']=function(){logger[_0x6563('0xf')](_0x6563('0x10'),this[_0x6563('0x3')]['id'],this[_0x6563('0x4')]['id']);if(_['isNil'](this[_0x6563('0x5')][_0x6563('0x11')][this[_0x6563('0x4')]['id']])){logger[_0x6563('0xf')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x6563('0x3')]['id'],this['agent']['id']);setTimeout(this['push']['bind'](this),0x3e8);}else{if(this[_0x6563('0x6')]['forcedOwnership']||util['isAgentAvailable'](this[_0x6563('0x3')]['id'],this[_0x6563('0x5')][_0x6563('0x11')][this[_0x6563('0x4')]['id']],this[_0x6563('0x3')][_0x6563('0x12')],![])){this[_0x6563('0x5')][_0x6563('0x11')][this[_0x6563('0x4')]['id']]['busy']=!![];this[_0x6563('0x5')][_0x6563('0x11')][this[_0x6563('0x4')]['id']]['busyQueue']=undefined;util[_0x6563('0x13')](this['realtime'],this[_0x6563('0x6')],this[_0x6563('0x4')],this['squeue']['channel']);util[_0x6563('0x14')](this['notificationId'],this[_0x6563('0x3')]['id'],this[_0x6563('0x5')][_0x6563('0x11')][this['agent']['id']],null,this[_0x6563('0x6')]);util['writeLog'](this[_0x6563('0x3')]['id'],this[_0x6563('0x5')]['agents'][this[_0x6563('0x4')]['id']],_0x6563('0x15')+(this['routing'][_0x6563('0x16')]?':FORCED':''));}else{logger[_0x6563('0xf')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this['squeue']['id'],this[_0x6563('0x4')]['id']);setTimeout(this[_0x6563('0x7')][_0x6563('0x9')](this),0x3e8);}}};Agent[_0x6563('0xd')][_0x6563('0xa')]=function(_0x4b4d3b){if(_[_0x6563('0x17')](this['realtime']['agents'][this[_0x6563('0x4')]['id']])){return logger[_0x6563('0xf')](_0x6563('0x18'),this[_0x6563('0x3')]['id'],this[_0x6563('0x4')]['id']);}else{logger[_0x6563('0xf')](_0x6563('0x19'),this[_0x6563('0x3')]['id'],this[_0x6563('0x4')]['id']);util[_0x6563('0x1a')](this['notificationId'],this[_0x6563('0x3')]['id'],this[_0x6563('0x5')][_0x6563('0x11')][this[_0x6563('0x4')]['id']],null,this[_0x6563('0x6')]);this[_0x6563('0x5')][_0x6563('0x11')][this['agent']['id']][_0x6563('0x1b')]=![];this[_0x6563('0x5')][_0x6563('0x11')][this[_0x6563('0x4')]['id']][_0x6563('0x1c')]=undefined;util[_0x6563('0x1d')](this['realtime'],this[_0x6563('0x6')],this[_0x6563('0x4')],this[_0x6563('0x3')][_0x6563('0x12')]);util[_0x6563('0x1e')](this[_0x6563('0x3')]['id'],this[_0x6563('0x5')]['agents'][this[_0x6563('0x4')]['id']],_0x4b4d3b?_0x6563('0x1f'):'TIMEOUT');}if(!_0x4b4d3b){setTimeout(this[_0x6563('0x7')][_0x6563('0x9')](this),0x3e8);}};function agent(_0x5b0c9f,_0x582650,_0x38fef5,_0x5ca0ab){return new Agent(_0x5b0c9f,_0x582650,_0x38fef5,_0x5ca0ab);}module[_0x6563('0x20')]=agent;
\ No newline at end of file
+var _0xcb99=['busy','busyQueue','saveWaitingNotification','routing','writeLog','RINGING','forcedOwnership','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','TIMEOUT','lodash','./util','notificationId','squeue','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','debug','[%s][AGENT]\x20try\x20with\x20%s','agent','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel'];(function(_0x13518d,_0x5536b0){var _0x1fe3e8=function(_0x33d72c){while(--_0x33d72c){_0x13518d['push'](_0x13518d['shift']());}};_0x1fe3e8(++_0x5536b0);}(_0xcb99,0x8b));var _0x9cb9=function(_0xcb6d2b,_0x1a56ac){_0xcb6d2b=_0xcb6d2b-0x0;var _0x2c3687=_0xcb99[_0xcb6d2b];return _0x2c3687;};'use strict';var _=require(_0x9cb9('0x0'));var uuid=require('uuid');var util=require(_0x9cb9('0x1'));var logger=require('../../../../../config/logger')('routing');var Agent=function(_0x3a2f21,_0x1308a8,_0x124c48,_0x51f2ee){this[_0x9cb9('0x2')]=uuid['v4']();this[_0x9cb9('0x3')]=_0x3a2f21;this['agent']=_0x1308a8;this[_0x9cb9('0x4')]=_0x124c48;this['routing']=_0x51f2ee;this[_0x9cb9('0x3')][_0x9cb9('0x5')](this[_0x9cb9('0x6')][_0x9cb9('0x7')](this),this[_0x9cb9('0x8')][_0x9cb9('0x7')](this));this[_0x9cb9('0x3')]['on'](_0x9cb9('0x9'),this['handleTimeout']['bind'](this));this[_0x9cb9('0x3')]['on'](_0x9cb9('0xa'),this[_0x9cb9('0xb')]['bind'](this));};Agent[_0x9cb9('0xc')][_0x9cb9('0x5')]=function(){this['squeue']['push'](this[_0x9cb9('0x6')][_0x9cb9('0x7')](this),this[_0x9cb9('0x8')][_0x9cb9('0x7')](this));};Agent['prototype'][_0x9cb9('0xb')]=function(){this[_0x9cb9('0x8')](!![]);};Agent[_0x9cb9('0xc')][_0x9cb9('0x6')]=function(){logger[_0x9cb9('0xd')](_0x9cb9('0xe'),this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0xf')]['id']);if(_[_0x9cb9('0x10')](this[_0x9cb9('0x4')][_0x9cb9('0x11')][this[_0x9cb9('0xf')]['id']])){logger[_0x9cb9('0xd')](_0x9cb9('0x12'),this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0xf')]['id']);setTimeout(this[_0x9cb9('0x5')][_0x9cb9('0x7')](this),0x3e8);}else{if(this['routing']['forcedOwnership']||util[_0x9cb9('0x13')](this['squeue']['id'],this['realtime']['agents'][this[_0x9cb9('0xf')]['id']],this['squeue'][_0x9cb9('0x14')],![])){this[_0x9cb9('0x4')][_0x9cb9('0x11')][this[_0x9cb9('0xf')]['id']][_0x9cb9('0x15')]=!![];this[_0x9cb9('0x4')][_0x9cb9('0x11')][this[_0x9cb9('0xf')]['id']][_0x9cb9('0x16')]=undefined;util[_0x9cb9('0x17')](this[_0x9cb9('0x4')],this[_0x9cb9('0x18')],this[_0x9cb9('0xf')],this[_0x9cb9('0x3')]['channel']);util['showNotification'](this[_0x9cb9('0x2')],this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0x4')][_0x9cb9('0x11')][this[_0x9cb9('0xf')]['id']],null,this[_0x9cb9('0x18')]);util[_0x9cb9('0x19')](this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0x4')]['agents'][this[_0x9cb9('0xf')]['id']],_0x9cb9('0x1a')+(this[_0x9cb9('0x18')][_0x9cb9('0x1b')]?':FORCED':''));}else{logger[_0x9cb9('0xd')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0xf')]['id']);setTimeout(this[_0x9cb9('0x5')][_0x9cb9('0x7')](this),0x3e8);}}};Agent['prototype'][_0x9cb9('0x8')]=function(_0x3b7bba){if(_[_0x9cb9('0x10')](this['realtime'][_0x9cb9('0x11')][this['agent']['id']])){return logger[_0x9cb9('0xd')](_0x9cb9('0x12'),this[_0x9cb9('0x3')]['id'],this[_0x9cb9('0xf')]['id']);}else{logger[_0x9cb9('0xd')](_0x9cb9('0x1c'),this['squeue']['id'],this[_0x9cb9('0xf')]['id']);util[_0x9cb9('0x1d')](this[_0x9cb9('0x2')],this['squeue']['id'],this['realtime'][_0x9cb9('0x11')][this[_0x9cb9('0xf')]['id']],null,this[_0x9cb9('0x18')]);this['realtime']['agents'][this[_0x9cb9('0xf')]['id']][_0x9cb9('0x15')]=![];this['realtime'][_0x9cb9('0x11')][this[_0x9cb9('0xf')]['id']][_0x9cb9('0x16')]=undefined;util[_0x9cb9('0x1e')](this[_0x9cb9('0x4')],this['routing'],this[_0x9cb9('0xf')],this[_0x9cb9('0x3')]['channel']);util[_0x9cb9('0x19')](this['squeue']['id'],this[_0x9cb9('0x4')][_0x9cb9('0x11')][this['agent']['id']],_0x3b7bba?'STOP':_0x9cb9('0x1f'));}if(!_0x3b7bba){setTimeout(this[_0x9cb9('0x5')][_0x9cb9('0x7')](this),0x3e8);}};function agent(_0x2595f9,_0x448e2c,_0x2dd463,_0x10a355){return new Agent(_0x2595f9,_0x448e2c,_0x2dd463,_0x10a355);}module['exports']=agent;
\ No newline at end of file
index 3306431..24aa496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8738=['drained','prototype','handleDrained','isNil','Agents','length','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','RINGING','busy','busyQueue','name','saveWaitingNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','bind','handleTimeout','timeout'];(function(_0x56709,_0x5aa47e){var _0x382072=function(_0x352357){while(--_0x352357){_0x56709['push'](_0x56709['shift']());}};_0x382072(++_0x5aa47e);}(_0x8738,0xee));var _0x8873=function(_0x3dfb38,_0x3c0c3a){_0x3dfb38=_0x3dfb38-0x0;var _0xc4085e=_0x8738[_0x3dfb38];return _0xc4085e;};'use strict';var _=require(_0x8873('0x0'));var uuid=require(_0x8873('0x1'));var util=require(_0x8873('0x2'));var logger=require(_0x8873('0x3'))(_0x8873('0x4'));var Beepall=function(_0x68c9a,_0x13f89a,_0x533e73,_0x409d11){this[_0x8873('0x5')]=uuid['v4']();this[_0x8873('0x6')]=_0x68c9a;this[_0x8873('0x7')]=_0x13f89a;this[_0x8873('0x8')]=_0x533e73;this[_0x8873('0x4')]=_0x409d11;this['squeue'][_0x8873('0x9')](this[_0x8873('0xa')][_0x8873('0xb')](this),this[_0x8873('0xc')][_0x8873('0xb')](this));this[_0x8873('0x6')]['on'](_0x8873('0xd'),this['handleTimeout'][_0x8873('0xb')](this));this[_0x8873('0x6')]['on'](_0x8873('0xe'),this['handleDrained'][_0x8873('0xb')](this));};Beepall[_0x8873('0xf')][_0x8873('0x9')]=function(){this['squeue'][_0x8873('0x9')](this['handleRun']['bind'](this),this[_0x8873('0xc')][_0x8873('0xb')](this));};Beepall[_0x8873('0xf')][_0x8873('0x10')]=function(){this['handleTimeout'](!![]);};Beepall[_0x8873('0xf')][_0x8873('0xa')]=function(){var _0x250051=!![];if(!_['isNil'](this[_0x8873('0x7')])&&!_[_0x8873('0x11')](this['queue'][_0x8873('0x12')])&&this[_0x8873('0x7')][_0x8873('0x12')][_0x8873('0x13')]>0x0){for(var _0x11a5ff=0x0,_0xca5258;_0x11a5ff<this[_0x8873('0x7')][_0x8873('0x12')]['length'];_0x11a5ff+=0x1){_0xca5258=this[_0x8873('0x7')][_0x8873('0x12')][_0x11a5ff]['id'];if(_['isNil'](this[_0x8873('0x8')][_0x8873('0x14')][_0xca5258])){logger[_0x8873('0x15')](_0x8873('0x16'),this[_0x8873('0x6')]['id'],_0xca5258);}else{if(util[_0x8873('0x17')](this[_0x8873('0x6')]['id'],this[_0x8873('0x8')][_0x8873('0x14')][_0xca5258],this[_0x8873('0x6')][_0x8873('0x18')],!![])){_0x250051=![];util['writeLog'](this[_0x8873('0x6')]['id'],this[_0x8873('0x8')][_0x8873('0x14')][_0xca5258],_0x8873('0x19'));this[_0x8873('0x8')][_0x8873('0x14')][_0xca5258][_0x8873('0x1a')]=!![];this[_0x8873('0x8')][_0x8873('0x14')][_0xca5258][_0x8873('0x1b')]=this[_0x8873('0x7')][_0x8873('0x1c')];util[_0x8873('0x1d')](this[_0x8873('0x8')],this[_0x8873('0x4')],this[_0x8873('0x7')][_0x8873('0x12')][_0x11a5ff],this[_0x8873('0x6')][_0x8873('0x18')]);util['showNotification'](this['notificationId'],this[_0x8873('0x6')]['id'],this[_0x8873('0x8')][_0x8873('0x14')][_0xca5258],this[_0x8873('0x7')],this[_0x8873('0x4')]);}}}if(_0x250051){logger[_0x8873('0x15')](_0x8873('0x1e'),this['squeue']['id']);setTimeout(this['push'][_0x8873('0xb')](this),0x3e8);}}else{logger[_0x8873('0x15')](_0x8873('0x1f'),this[_0x8873('0x6')]['id']);setTimeout(this['push'][_0x8873('0xb')](this),0x3e8);}};Beepall['prototype'][_0x8873('0xc')]=function(_0x4669c3){if(!_[_0x8873('0x11')](this[_0x8873('0x7')])&&!_[_0x8873('0x11')](this[_0x8873('0x7')][_0x8873('0x12')])){for(var _0x560bfb=0x0,_0x243b15;_0x560bfb<this[_0x8873('0x7')][_0x8873('0x12')][_0x8873('0x13')];_0x560bfb+=0x1){_0x243b15=this[_0x8873('0x7')][_0x8873('0x12')][_0x560bfb]['id'];if(_[_0x8873('0x11')](this[_0x8873('0x8')][_0x8873('0x14')][_0x243b15])){logger[_0x8873('0x15')](_0x8873('0x16'),this['squeue']['id'],_0x243b15);}else{util[_0x8873('0x20')](this[_0x8873('0x5')],this[_0x8873('0x6')]['id'],this[_0x8873('0x8')][_0x8873('0x14')][_0x243b15],this[_0x8873('0x7')],this['routing']);util['writeLog'](this[_0x8873('0x6')]['id'],this[_0x8873('0x8')][_0x8873('0x14')][_0x243b15],_0x4669c3?_0x8873('0x21'):'TIMEOUT');this['realtime'][_0x8873('0x14')][_0x243b15]['busy']=![];this[_0x8873('0x8')]['agents'][_0x243b15]['busyQueue']=undefined;util[_0x8873('0x22')](this[_0x8873('0x8')],this[_0x8873('0x4')],this['realtime'][_0x8873('0x14')][_0x243b15],this[_0x8873('0x6')][_0x8873('0x18')]);}}}if(!_0x4669c3){setTimeout(this[_0x8873('0x9')][_0x8873('0xb')](this),0x3e8);}};function beepall(_0x48eb61,_0x5d11ed,_0x544023,_0x4e05c5){return new Beepall(_0x48eb61,_0x5d11ed,_0x544023,_0x4e05c5);}module[_0x8873('0x23')]=beepall;
\ No newline at end of file
+var _0x484c=['[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','writeLog','busy','name','channel','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','STOP','busyQueue','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','handleTimeout','bind','drained','handleDrained','prototype','push','handleRun','isNil','Agents','length','agents','debug'];(function(_0x421cf8,_0x23152c){var _0x145c48=function(_0x565862){while(--_0x565862){_0x421cf8['push'](_0x421cf8['shift']());}};_0x145c48(++_0x23152c);}(_0x484c,0x198));var _0xc484=function(_0x37295a,_0x47a939){_0x37295a=_0x37295a-0x0;var _0x44fe6c=_0x484c[_0x37295a];return _0x44fe6c;};'use strict';var _=require(_0xc484('0x0'));var uuid=require(_0xc484('0x1'));var util=require(_0xc484('0x2'));var logger=require(_0xc484('0x3'))(_0xc484('0x4'));var Beepall=function(_0x12869d,_0x59d953,_0x59f5f8,_0x1d0362){this[_0xc484('0x5')]=uuid['v4']();this[_0xc484('0x6')]=_0x12869d;this[_0xc484('0x7')]=_0x59d953;this[_0xc484('0x8')]=_0x59f5f8;this[_0xc484('0x4')]=_0x1d0362;this[_0xc484('0x6')]['push'](this['handleRun']['bind'](this),this[_0xc484('0x9')][_0xc484('0xa')](this));this[_0xc484('0x6')]['on']('timeout',this[_0xc484('0x9')][_0xc484('0xa')](this));this['squeue']['on'](_0xc484('0xb'),this[_0xc484('0xc')][_0xc484('0xa')](this));};Beepall[_0xc484('0xd')][_0xc484('0xe')]=function(){this['squeue'][_0xc484('0xe')](this[_0xc484('0xf')][_0xc484('0xa')](this),this[_0xc484('0x9')][_0xc484('0xa')](this));};Beepall[_0xc484('0xd')][_0xc484('0xc')]=function(){this[_0xc484('0x9')](!![]);};Beepall[_0xc484('0xd')]['handleRun']=function(){var _0x253aa8=!![];if(!_[_0xc484('0x10')](this[_0xc484('0x7')])&&!_['isNil'](this['queue'][_0xc484('0x11')])&&this[_0xc484('0x7')][_0xc484('0x11')][_0xc484('0x12')]>0x0){for(var _0x4891d1=0x0,_0x580dc7;_0x4891d1<this[_0xc484('0x7')][_0xc484('0x11')][_0xc484('0x12')];_0x4891d1+=0x1){_0x580dc7=this[_0xc484('0x7')][_0xc484('0x11')][_0x4891d1]['id'];if(_[_0xc484('0x10')](this[_0xc484('0x8')][_0xc484('0x13')][_0x580dc7])){logger[_0xc484('0x14')](_0xc484('0x15'),this[_0xc484('0x6')]['id'],_0x580dc7);}else{if(util['isAgentAvailable'](this['squeue']['id'],this[_0xc484('0x8')][_0xc484('0x13')][_0x580dc7],this[_0xc484('0x6')]['channel'],!![])){_0x253aa8=![];util[_0xc484('0x16')](this[_0xc484('0x6')]['id'],this[_0xc484('0x8')][_0xc484('0x13')][_0x580dc7],'RINGING');this[_0xc484('0x8')][_0xc484('0x13')][_0x580dc7][_0xc484('0x17')]=!![];this[_0xc484('0x8')][_0xc484('0x13')][_0x580dc7]['busyQueue']=this[_0xc484('0x7')][_0xc484('0x18')];util['saveWaitingNotification'](this[_0xc484('0x8')],this[_0xc484('0x4')],this[_0xc484('0x7')][_0xc484('0x11')][_0x4891d1],this[_0xc484('0x6')][_0xc484('0x19')]);util[_0xc484('0x1a')](this[_0xc484('0x5')],this[_0xc484('0x6')]['id'],this['realtime'][_0xc484('0x13')][_0x580dc7],this['queue'],this[_0xc484('0x4')]);}}}if(_0x253aa8){logger['debug'](_0xc484('0x1b'),this[_0xc484('0x6')]['id']);setTimeout(this['push'][_0xc484('0xa')](this),0x3e8);}}else{logger['debug']('[%s][QUEUE]\x20EMPTY',this[_0xc484('0x6')]['id']);setTimeout(this[_0xc484('0xe')]['bind'](this),0x3e8);}};Beepall[_0xc484('0xd')][_0xc484('0x9')]=function(_0xbf1a7f){if(!_[_0xc484('0x10')](this[_0xc484('0x7')])&&!_[_0xc484('0x10')](this[_0xc484('0x7')][_0xc484('0x11')])){for(var _0x2d75c6=0x0,_0x21c0c5;_0x2d75c6<this[_0xc484('0x7')][_0xc484('0x11')]['length'];_0x2d75c6+=0x1){_0x21c0c5=this[_0xc484('0x7')]['Agents'][_0x2d75c6]['id'];if(_[_0xc484('0x10')](this['realtime']['agents'][_0x21c0c5])){logger[_0xc484('0x14')](_0xc484('0x15'),this['squeue']['id'],_0x21c0c5);}else{util[_0xc484('0x1c')](this[_0xc484('0x5')],this[_0xc484('0x6')]['id'],this['realtime']['agents'][_0x21c0c5],this['queue'],this[_0xc484('0x4')]);util[_0xc484('0x16')](this[_0xc484('0x6')]['id'],this[_0xc484('0x8')][_0xc484('0x13')][_0x21c0c5],_0xbf1a7f?_0xc484('0x1d'):'TIMEOUT');this[_0xc484('0x8')]['agents'][_0x21c0c5][_0xc484('0x17')]=![];this[_0xc484('0x8')][_0xc484('0x13')][_0x21c0c5][_0xc484('0x1e')]=undefined;util[_0xc484('0x1f')](this['realtime'],this['routing'],this['realtime'][_0xc484('0x13')][_0x21c0c5],this[_0xc484('0x6')]['channel']);}}}if(!_0xbf1a7f){setTimeout(this[_0xc484('0xe')]['bind'](this),0x3e8);}};function beepall(_0x597f43,_0x1fe6b1,_0x2ef43f,_0x317c4a){return new Beepall(_0x597f43,_0x1fe6b1,_0x2ef43f,_0x317c4a);}module[_0xc484('0x20')]=beepall;
\ No newline at end of file
index 75b782f..37bea35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1766=['./beepall','./agent','./rrmemory'];(function(_0x106418,_0x44ac86){var _0x40e49f=function(_0x32cdb2){while(--_0x32cdb2){_0x106418['push'](_0x106418['shift']());}};_0x40e49f(++_0x44ac86);}(_0x1766,0x140));var _0x6176=function(_0x4bf468,_0x223462){_0x4bf468=_0x4bf468-0x0;var _0x264077=_0x1766[_0x4bf468];return _0x264077;};'use strict';module['exports']={'rrmemory':require(_0x6176('0x0')),'beepall':require(_0x6176('0x1')),'agent':require(_0x6176('0x2'))};
\ No newline at end of file
+var _0xc9fc=['./rrmemory','./agent','exports'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xc9fc,0x86));var _0xcc9f=function(_0xeff6d9,_0x364b67){_0xeff6d9=_0xeff6d9-0x0;var _0x733943=_0xc9fc[_0xeff6d9];return _0x733943;};'use strict';module[_0xcc9f('0x0')]={'rrmemory':require(_0xcc9f('0x1')),'beepall':require('./beepall'),'agent':require(_0xcc9f('0x2'))};
\ No newline at end of file
index d3e3876..3ff13cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d8=['routing','intervals','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','agentId','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','debug','isAgentAvailable','channel','busy','name','saveWaitingNotification','showNotification','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','writeLog','TIMEOUT','busyQueue','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','queue','realtime'];(function(_0x4ae37f,_0x5e38a3){var _0x345849=function(_0x5ba783){while(--_0x5ba783){_0x4ae37f['push'](_0x4ae37f['shift']());}};_0x345849(++_0x5e38a3);}(_0x38d8,0xca));var _0x838d=function(_0x6d6a66,_0x2924af){_0x6d6a66=_0x6d6a66-0x0;var _0x11eb6e=_0x38d8[_0x6d6a66];return _0x11eb6e;};'use strict';var rr=require('rr');var _=require(_0x838d('0x0'));var uuid=require(_0x838d('0x1'));var util=require(_0x838d('0x2'));var logger=require(_0x838d('0x3'))('routing');var RRMemory=function(_0xdcdfce,_0x49d8bb,_0x5a32e9,_0x458072){this[_0x838d('0x4')]=uuid['v4']();this[_0x838d('0x5')]=_0xdcdfce;this[_0x838d('0x6')]=_0x49d8bb;this[_0x838d('0x7')]=_0x5a32e9;this[_0x838d('0x8')]=_0x458072;this[_0x838d('0x9')]={};this['squeue'][_0x838d('0xa')](this[_0x838d('0xb')][_0x838d('0xc')](this),this[_0x838d('0xd')][_0x838d('0xc')](this),this[_0x838d('0xe')]);this[_0x838d('0x5')]['on'](_0x838d('0xf'),this[_0x838d('0xd')][_0x838d('0xc')](this));this[_0x838d('0x5')]['on'](_0x838d('0x10'),this[_0x838d('0x11')][_0x838d('0xc')](this));};RRMemory[_0x838d('0x12')][_0x838d('0xa')]=function(){this[_0x838d('0x5')][_0x838d('0xa')](this[_0x838d('0xb')][_0x838d('0xc')](this),this[_0x838d('0xd')][_0x838d('0xc')](this));};RRMemory[_0x838d('0x12')][_0x838d('0x11')]=function(){this[_0x838d('0xd')](!![]);};RRMemory[_0x838d('0x12')]['handleCheckReject']=function(_0x24a016){if(util['isAgentAvailable'](this['squeue']['id'],this[_0x838d('0x7')]['agents'][this[_0x838d('0x13')]],this[_0x838d('0x5')]['channel'],!![])){logger['debug'](_0x838d('0x14'),this[_0x838d('0x5')]['id'],this[_0x838d('0x13')]);clearInterval(this['intervals'][this['agentId']]);_0x24a016[_0x838d('0x15')]();setTimeout(this[_0x838d('0xa')][_0x838d('0xc')](this),0x3e8);}};RRMemory[_0x838d('0x12')][_0x838d('0xb')]=function(_0x5c3815){this[_0x838d('0x13')]=rr(this['queue'][_0x838d('0x16')]);logger['debug'](_0x838d('0x17'),this[_0x838d('0x5')]['id'],this[_0x838d('0x13')]);if(_[_0x838d('0x18')](this[_0x838d('0x7')][_0x838d('0x19')][this[_0x838d('0x13')]])){logger[_0x838d('0x1a')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x838d('0x13')]);_0x5c3815[_0x838d('0x15')]();setTimeout(this['push'][_0x838d('0xc')](this),0x3e8);}else{if(util[_0x838d('0x1b')](this['squeue']['id'],this[_0x838d('0x7')][_0x838d('0x19')][this[_0x838d('0x13')]],this[_0x838d('0x5')][_0x838d('0x1c')],!![])){this['realtime'][_0x838d('0x19')][this[_0x838d('0x13')]][_0x838d('0x1d')]=!![];this[_0x838d('0x7')]['agents'][this[_0x838d('0x13')]]['busyQueue']=this[_0x838d('0x6')][_0x838d('0x1e')];util[_0x838d('0x1f')](this[_0x838d('0x7')],this[_0x838d('0x8')],this[_0x838d('0x7')]['agents'][this['agentId']],this[_0x838d('0x5')][_0x838d('0x1c')]);util[_0x838d('0x20')](this['notificationId'],this[_0x838d('0x5')]['id'],this[_0x838d('0x7')][_0x838d('0x19')][this[_0x838d('0x13')]],this[_0x838d('0x6')],this[_0x838d('0x8')]);util['writeLog'](this[_0x838d('0x5')]['id'],this[_0x838d('0x7')][_0x838d('0x19')][this[_0x838d('0x13')]],_0x838d('0x21'));this[_0x838d('0x9')][this[_0x838d('0x13')]]=setInterval(this[_0x838d('0x22')][_0x838d('0xc')](this,_0x5c3815),0x3e8);}else{logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x838d('0x5')]['id'],this['agentId']);_0x5c3815[_0x838d('0x15')]();setTimeout(this[_0x838d('0xa')][_0x838d('0xc')](this),0x3e8);}}};RRMemory[_0x838d('0x12')][_0x838d('0xd')]=function(_0x3b7f7c){logger[_0x838d('0x1a')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0x838d('0x5')]['id'],this['agentId']);if(_[_0x838d('0x18')](this['realtime'][_0x838d('0x19')][this[_0x838d('0x13')]])){logger[_0x838d('0x1a')](_0x838d('0x23'),this[_0x838d('0x5')]['id'],this[_0x838d('0x13')]);}else{clearInterval(this[_0x838d('0x9')][this[_0x838d('0x13')]]);util[_0x838d('0x24')](this[_0x838d('0x4')],this[_0x838d('0x5')]['id'],this[_0x838d('0x7')][_0x838d('0x19')][this[_0x838d('0x13')]],this['queue'],this[_0x838d('0x8')]);util[_0x838d('0x25')](this[_0x838d('0x5')]['id'],this[_0x838d('0x7')]['agents'][this[_0x838d('0x13')]],_0x838d('0x26'));this[_0x838d('0x7')]['agents'][this['agentId']][_0x838d('0x1d')]=![];this['realtime'][_0x838d('0x19')][this[_0x838d('0x13')]][_0x838d('0x27')]=undefined;util[_0x838d('0x28')](this[_0x838d('0x7')],this['routing'],this[_0x838d('0x7')][_0x838d('0x19')][this[_0x838d('0x13')]],this[_0x838d('0x5')][_0x838d('0x1c')]);}if(!_0x3b7f7c){setTimeout(this[_0x838d('0xa')][_0x838d('0xc')](this),0x3e8);}};function rrmemory(_0x1bfc13,_0x2a95da,_0x445ab1,_0x5b30f8){return new RRMemory(_0x1bfc13,_0x2a95da,_0x445ab1,_0x5b30f8);}module[_0x838d('0x29')]=rrmemory;
\ No newline at end of file
+var _0xff91=['lodash','uuid','../../../../../config/logger','routing','squeue','queue','intervals','push','bind','module','handleTimeout','drained','handleDrained','prototype','handleRun','handleCheckReject','realtime','agents','agentId','debug','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','done','isAgentAvailable','channel','busy','busyQueue','name','saveWaitingNotification','notificationId','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','removeWaitingNotification','exports'];(function(_0x581af1,_0x4f02c5){var _0x54c22e=function(_0x5a7a5a){while(--_0x5a7a5a){_0x581af1['push'](_0x581af1['shift']());}};_0x54c22e(++_0x4f02c5);}(_0xff91,0x9c));var _0x1ff9=function(_0x425d68,_0x3488ea){_0x425d68=_0x425d68-0x0;var _0x2b420e=_0xff91[_0x425d68];return _0x2b420e;};'use strict';var rr=require('rr');var _=require(_0x1ff9('0x0'));var uuid=require(_0x1ff9('0x1'));var util=require('./util');var logger=require(_0x1ff9('0x2'))(_0x1ff9('0x3'));var RRMemory=function(_0x56bde7,_0x5e1c93,_0x2be295,_0x3a021a){this['notificationId']=uuid['v4']();this[_0x1ff9('0x4')]=_0x56bde7;this[_0x1ff9('0x5')]=_0x5e1c93;this['realtime']=_0x2be295;this[_0x1ff9('0x3')]=_0x3a021a;this[_0x1ff9('0x6')]={};this[_0x1ff9('0x4')][_0x1ff9('0x7')](this['handleRun'][_0x1ff9('0x8')](this),this['handleTimeout'][_0x1ff9('0x8')](this),this[_0x1ff9('0x9')]);this[_0x1ff9('0x4')]['on']('timeout',this[_0x1ff9('0xa')]['bind'](this));this[_0x1ff9('0x4')]['on'](_0x1ff9('0xb'),this[_0x1ff9('0xc')]['bind'](this));};RRMemory[_0x1ff9('0xd')][_0x1ff9('0x7')]=function(){this[_0x1ff9('0x4')][_0x1ff9('0x7')](this[_0x1ff9('0xe')][_0x1ff9('0x8')](this),this[_0x1ff9('0xa')][_0x1ff9('0x8')](this));};RRMemory[_0x1ff9('0xd')][_0x1ff9('0xc')]=function(){this[_0x1ff9('0xa')](!![]);};RRMemory['prototype'][_0x1ff9('0xf')]=function(_0x34d266){if(util['isAgentAvailable'](this[_0x1ff9('0x4')]['id'],this[_0x1ff9('0x10')][_0x1ff9('0x11')][this[_0x1ff9('0x12')]],this[_0x1ff9('0x4')]['channel'],!![])){logger[_0x1ff9('0x13')]('[%s][QUEUE]\x20available\x20again\x20%s',this['squeue']['id'],this[_0x1ff9('0x12')]);clearInterval(this[_0x1ff9('0x6')][this[_0x1ff9('0x12')]]);_0x34d266['done']();setTimeout(this[_0x1ff9('0x7')]['bind'](this),0x3e8);}};RRMemory[_0x1ff9('0xd')][_0x1ff9('0xe')]=function(_0xad4002){this['agentId']=rr(this['queue'][_0x1ff9('0x14')]);logger['debug'](_0x1ff9('0x15'),this['squeue']['id'],this[_0x1ff9('0x12')]);if(_[_0x1ff9('0x16')](this[_0x1ff9('0x10')]['agents'][this[_0x1ff9('0x12')]])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x1ff9('0x12')]);_0xad4002[_0x1ff9('0x17')]();setTimeout(this['push'][_0x1ff9('0x8')](this),0x3e8);}else{if(util[_0x1ff9('0x18')](this[_0x1ff9('0x4')]['id'],this[_0x1ff9('0x10')][_0x1ff9('0x11')][this[_0x1ff9('0x12')]],this[_0x1ff9('0x4')][_0x1ff9('0x19')],!![])){this[_0x1ff9('0x10')][_0x1ff9('0x11')][this[_0x1ff9('0x12')]][_0x1ff9('0x1a')]=!![];this[_0x1ff9('0x10')]['agents'][this['agentId']][_0x1ff9('0x1b')]=this[_0x1ff9('0x5')][_0x1ff9('0x1c')];util[_0x1ff9('0x1d')](this['realtime'],this[_0x1ff9('0x3')],this['realtime'][_0x1ff9('0x11')][this[_0x1ff9('0x12')]],this[_0x1ff9('0x4')]['channel']);util['showNotification'](this[_0x1ff9('0x1e')],this[_0x1ff9('0x4')]['id'],this[_0x1ff9('0x10')]['agents'][this[_0x1ff9('0x12')]],this[_0x1ff9('0x5')],this['routing']);util[_0x1ff9('0x1f')](this['squeue']['id'],this[_0x1ff9('0x10')][_0x1ff9('0x11')][this[_0x1ff9('0x12')]],_0x1ff9('0x20'));this[_0x1ff9('0x6')][this[_0x1ff9('0x12')]]=setInterval(this[_0x1ff9('0xf')][_0x1ff9('0x8')](this,_0xad4002),0x3e8);}else{logger[_0x1ff9('0x13')](_0x1ff9('0x21'),this[_0x1ff9('0x4')]['id'],this['agentId']);_0xad4002['done']();setTimeout(this[_0x1ff9('0x7')][_0x1ff9('0x8')](this),0x3e8);}}};RRMemory['prototype']['handleTimeout']=function(_0x1220a1){logger[_0x1ff9('0x13')](_0x1ff9('0x22'),this[_0x1ff9('0x4')]['id'],this[_0x1ff9('0x12')]);if(_['isNil'](this['realtime'][_0x1ff9('0x11')][this['agentId']])){logger[_0x1ff9('0x13')](_0x1ff9('0x23'),this['squeue']['id'],this['agentId']);}else{clearInterval(this[_0x1ff9('0x6')][this[_0x1ff9('0x12')]]);util[_0x1ff9('0x24')](this[_0x1ff9('0x1e')],this[_0x1ff9('0x4')]['id'],this['realtime'][_0x1ff9('0x11')][this[_0x1ff9('0x12')]],this[_0x1ff9('0x5')],this[_0x1ff9('0x3')]);util['writeLog'](this[_0x1ff9('0x4')]['id'],this[_0x1ff9('0x10')][_0x1ff9('0x11')][this[_0x1ff9('0x12')]],'TIMEOUT');this['realtime'][_0x1ff9('0x11')][this[_0x1ff9('0x12')]][_0x1ff9('0x1a')]=![];this[_0x1ff9('0x10')][_0x1ff9('0x11')][this[_0x1ff9('0x12')]][_0x1ff9('0x1b')]=undefined;util[_0x1ff9('0x25')](this[_0x1ff9('0x10')],this[_0x1ff9('0x3')],this[_0x1ff9('0x10')][_0x1ff9('0x11')][this['agentId']],this[_0x1ff9('0x4')][_0x1ff9('0x19')]);}if(!_0x1220a1){setTimeout(this[_0x1ff9('0x7')][_0x1ff9('0x8')](this),0x3e8);}};function rrmemory(_0x4c34d3,_0x1dd3e1,_0x2de471,_0x2e115b){return new RRMemory(_0x4c34d3,_0x1dd3e1,_0x2de471,_0x2e115b);}module[_0x1ff9('0x26')]=rrmemory;
\ No newline at end of file
index 451b08b..9119965 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5525=['channel','InteractionId','interaction','agents','some','WaitingInteractions','saveWaitingNotification','message','removeWaitingNotification','writeLog','lodash','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','\x20interaction','name','notificationSound','account','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','format','[%s][QUEUE]\x20%s','user:%s','emit','notification:%s','save','isAgentAvailable','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','checkWaitingNotifications','QueuesWaitingInteractions'];(function(_0x170ea2,_0x56272f){var _0x408187=function(_0x39bea9){while(--_0x39bea9){_0x170ea2['push'](_0x170ea2['shift']());}};_0x408187(++_0x56272f);}(_0x5525,0xda));var _0x5552=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x5525[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x5552('0x0'));var util=require(_0x5552('0x1'));var utils=require(_0x5552('0x2'));var Redis=require(_0x5552('0x3'));var config=require(_0x5552('0x4'));var logger=require(_0x5552('0x5'))(_0x5552('0x6'));config[_0x5552('0x7')]=_[_0x5552('0x8')](config[_0x5552('0x7')],{'host':_0x5552('0x9'),'port':0x18eb});var io=require(_0x5552('0xa'))(new Redis(config[_0x5552('0x7')]));function sendNotification(_0x139ea7,_0x11abb1,_0x539e6b,_0x30458e,_0x343023,_0x1cf361){var _0x2d02ed=_0x1cf361||{};var _0x41eb48=_0x539e6b['split']('.');var _0x4705a4={'uniqueid':_0x11abb1,'channel':_0x41eb48[0x0],'id':_0x41eb48[0x1],'title':_0x41eb48[0x0]+_0x5552('0xb'),'interactionId':_0x41eb48[0x2],'queue':_0x343023?_0x343023[_0x5552('0xc')]:null,'sound':_0x2d02ed['account'][_0x5552('0xd')],'shake':_0x2d02ed[_0x5552('0xe')][_0x5552('0xf')]};try{if(!_0x2d02ed[_0x5552('0x10')]){_0x2d02ed['body']={};}if(_0x343023){_0x2d02ed[_0x5552('0x10')][_0x5552('0x11')]=_0x343023;}else if(_0x2d02ed['body']['queue']){delete _0x2d02ed[_0x5552('0x10')][_0x5552('0x11')];}_0x4705a4[_0x5552('0x12')]=utils[_0x5552('0x13')](_0x2d02ed['account'][_0x5552('0x14')],_0x2d02ed);}catch(_0x52c849){_0x4705a4['msg']=_0x5552('0x15');logger['error'](util[_0x5552('0x16')](_0x5552('0x17'),_0x11abb1,_0x52c849['message']));}io['to'](util[_0x5552('0x16')](_0x5552('0x18'),_0x30458e[_0x5552('0xc')]))[_0x5552('0x19')](util[_0x5552('0x16')](_0x5552('0x1a'),_0x139ea7?_0x5552('0x1b'):'remove'),_0x4705a4);}function writeLog(_0x2707da,_0x170493,_0x561e69){return logger['debug'](util['format']('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x2707da,_0x170493[_0x5552('0xc')],_0x561e69));}exports[_0x5552('0x1c')]=function(_0x33d719,_0x40e5ac,_0x3e3217,_0x213a0e){if(_0x40e5ac['busy']){writeLog(_0x33d719,_0x40e5ac,_0x5552('0x1d'));return![];}if(!_0x40e5ac[_0x5552('0x1e')]){writeLog(_0x33d719,_0x40e5ac,_0x5552('0x1f'));return![];}if(_0x40e5ac[_0x3e3217+_0x5552('0x20')]){writeLog(_0x33d719,_0x40e5ac,_0x5552('0x21'));return![];}if(_0x213a0e&&_0x40e5ac[_0x5552('0x22')](_0x3e3217+_0x5552('0x23'))&&_0x40e5ac[_0x5552('0x22')](_0x3e3217+_0x5552('0x24'))){if(_0x40e5ac[_0x3e3217+_0x5552('0x23')]>0x0&&_0x40e5ac[_0x3e3217+_0x5552('0x24')]>=_0x40e5ac[_0x3e3217+_0x5552('0x23')]){writeLog(_0x33d719,_0x40e5ac,_0x3e3217[_0x5552('0x25')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x5552('0x26')]=function(_0x3529c7,_0x2e152c,_0x599a24,_0x4f6c5f,_0x31e13c){return sendNotification(!![],_0x3529c7,_0x2e152c,_0x599a24,_0x4f6c5f,_0x31e13c);};exports[_0x5552('0x27')]=function(_0x703954,_0x1a5183,_0x41148d,_0x59ff99,_0x4b5447){return sendNotification(![],_0x703954,_0x1a5183,_0x41148d,_0x59ff99,_0x4b5447);};exports[_0x5552('0x28')]=function(_0x1a5afb,_0x561aef,_0x594c3b){var _0x5b69de=_0x561aef['interaction']['UserId'];if(!_0x5b69de&&_0x594c3b){_0x5b69de=_0x594c3b['id'];}var _0x1b9182=_['some'](_0x1a5afb[_0x561aef['channel']+_0x5552('0x29')],function(_0x2d1ab0){var _0x2d8fe0=_['capitalize'](_0x561aef[_0x5552('0x2a')])+_0x5552('0x2b');return _0x2d1ab0[_0x2d8fe0]===_0x561aef[_0x5552('0x2c')]['id'];});if(!_0x1b9182&&_0x5b69de&&_0x1a5afb[_0x5552('0x2d')][_0x5b69de]){_0x1b9182=_[_0x5552('0x2e')](_0x1a5afb[_0x5552('0x2d')][_0x5b69de][_0x561aef['channel']+_0x5552('0x2f')],function(_0x5316a7){return _0x5316a7['id']===_0x561aef[_0x5552('0x2c')]['id'];});}return _0x1b9182;};exports[_0x5552('0x30')]=function(_0x468843,_0x58f48e,_0x646fd6,_0x5b9425){if(_0x646fd6&&_0x646fd6['id']&&_0x468843[_0x5552('0x2d')]&&_0x468843[_0x5552('0x2d')][_0x646fd6['id']]){_0x468843[_0x5552('0x2d')][_0x646fd6['id']][_0x5b9425+'WaitingInteractions'][_0x58f48e[_0x5552('0x31')]['id']]={'id':_0x58f48e[_0x5552('0x2c')]['id']};}};exports[_0x5552('0x32')]=function(_0x320e66,_0x2ab003,_0x503acc,_0x22440a){if(_0x503acc&&_0x503acc['id']&&_0x320e66[_0x5552('0x2d')]&&_0x320e66[_0x5552('0x2d')][_0x503acc['id']]){delete _0x320e66[_0x5552('0x2d')][_0x503acc['id']][_0x22440a+'WaitingInteractions'][_0x2ab003[_0x5552('0x31')]['id']];}};exports[_0x5552('0x33')]=writeLog;
\ No newline at end of file
+var _0x4d20=['InteractionId','agents','WaitingInteractions','saveWaitingNotification','message','removeWaitingNotification','writeLog','lodash','util','../utils','ioredis','routing','redis','defaults','split','\x20interaction','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','format','[%s][QUEUE]\x20%s','user:%s','emit','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','hasOwnProperty','CurrentCapacity','Capacity','\x20MAXCAPACITY','showNotification','interaction','UserId','some','channel','capitalize'];(function(_0x1ca93c,_0x3271ab){var _0x185169=function(_0x507763){while(--_0x507763){_0x1ca93c['push'](_0x1ca93c['shift']());}};_0x185169(++_0x3271ab);}(_0x4d20,0x187));var _0x04d2=function(_0x2760cb,_0x225dd9){_0x2760cb=_0x2760cb-0x0;var _0x1e8aa1=_0x4d20[_0x2760cb];return _0x1e8aa1;};'use strict';var _=require(_0x04d2('0x0'));var util=require(_0x04d2('0x1'));var utils=require(_0x04d2('0x2'));var Redis=require(_0x04d2('0x3'));var config=require('../../../../../config/environment');var logger=require('../../../../../config/logger')(_0x04d2('0x4'));config[_0x04d2('0x5')]=_[_0x04d2('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x04d2('0x5')]));function sendNotification(_0x3fdce4,_0x3d63e5,_0x31ea81,_0x3d31d3,_0x3f72e9,_0x2cceba){var _0x55e37e=_0x2cceba||{};var _0x1092a1=_0x31ea81[_0x04d2('0x7')]('.');var _0xd9fa00={'uniqueid':_0x3d63e5,'channel':_0x1092a1[0x0],'id':_0x1092a1[0x1],'title':_0x1092a1[0x0]+_0x04d2('0x8'),'interactionId':_0x1092a1[0x2],'queue':_0x3f72e9?_0x3f72e9['name']:null,'sound':_0x55e37e[_0x04d2('0x9')][_0x04d2('0xa')],'shake':_0x55e37e[_0x04d2('0x9')][_0x04d2('0xb')]};try{if(!_0x55e37e[_0x04d2('0xc')]){_0x55e37e[_0x04d2('0xc')]={};}if(_0x3f72e9){_0x55e37e[_0x04d2('0xc')][_0x04d2('0xd')]=_0x3f72e9;}else if(_0x55e37e[_0x04d2('0xc')][_0x04d2('0xd')]){delete _0x55e37e[_0x04d2('0xc')][_0x04d2('0xd')];}_0xd9fa00[_0x04d2('0xe')]=utils[_0x04d2('0xf')](_0x55e37e[_0x04d2('0x9')]['notificationTemplate'],_0x55e37e);}catch(_0x503a27){_0xd9fa00[_0x04d2('0xe')]='I\x20can\x27t\x20render\x20your\x20template';logger['error'](util[_0x04d2('0x10')](_0x04d2('0x11'),_0x3d63e5,_0x503a27['message']));}io['to'](util['format'](_0x04d2('0x12'),_0x3d31d3['name']))[_0x04d2('0x13')](util['format'](_0x04d2('0x14'),_0x3fdce4?_0x04d2('0x15'):_0x04d2('0x16')),_0xd9fa00);}function writeLog(_0x3a6372,_0x2eda8d,_0x48ce47){return logger[_0x04d2('0x17')](util[_0x04d2('0x10')](_0x04d2('0x18'),_0x3a6372,_0x2eda8d['name'],_0x48ce47));}exports[_0x04d2('0x19')]=function(_0x549556,_0xf991c3,_0xa6cb07,_0x2b7979){if(_0xf991c3[_0x04d2('0x1a')]){writeLog(_0x549556,_0xf991c3,_0x04d2('0x1b'));return![];}if(!_0xf991c3[_0x04d2('0x1c')]){writeLog(_0x549556,_0xf991c3,_0x04d2('0x1d'));return![];}if(_0xf991c3[_0xa6cb07+_0x04d2('0x1e')]){writeLog(_0x549556,_0xf991c3,'PAUSE');return![];}if(_0x2b7979&&_0xf991c3[_0x04d2('0x1f')](_0xa6cb07+'Capacity')&&_0xf991c3[_0x04d2('0x1f')](_0xa6cb07+_0x04d2('0x20'))){if(_0xf991c3[_0xa6cb07+_0x04d2('0x21')]>0x0&&_0xf991c3[_0xa6cb07+'CurrentCapacity']>=_0xf991c3[_0xa6cb07+_0x04d2('0x21')]){writeLog(_0x549556,_0xf991c3,_0xa6cb07['toUpperCase']()+_0x04d2('0x22'));return![];}}return!![];};exports[_0x04d2('0x23')]=function(_0x25dba5,_0x42b7db,_0x4f8ccc,_0x5675e6,_0x571369){return sendNotification(!![],_0x25dba5,_0x42b7db,_0x4f8ccc,_0x5675e6,_0x571369);};exports['hideNotification']=function(_0x52b562,_0x4d548a,_0x1529a3,_0x50f258,_0x5c5d45){return sendNotification(![],_0x52b562,_0x4d548a,_0x1529a3,_0x50f258,_0x5c5d45);};exports['checkWaitingNotifications']=function(_0x1b2fd2,_0x37c45c,_0x560063){var _0x207316=_0x37c45c[_0x04d2('0x24')][_0x04d2('0x25')];if(!_0x207316&&_0x560063){_0x207316=_0x560063['id'];}var _0x175ec6=_[_0x04d2('0x26')](_0x1b2fd2[_0x37c45c[_0x04d2('0x27')]+'QueuesWaitingInteractions'],function(_0x5484bc){var _0x41c368=_[_0x04d2('0x28')](_0x37c45c['channel'])+_0x04d2('0x29');return _0x5484bc[_0x41c368]===_0x37c45c[_0x04d2('0x24')]['id'];});if(!_0x175ec6&&_0x207316&&_0x1b2fd2['agents'][_0x207316]){_0x175ec6=_[_0x04d2('0x26')](_0x1b2fd2[_0x04d2('0x2a')][_0x207316][_0x37c45c[_0x04d2('0x27')]+_0x04d2('0x2b')],function(_0x4514ce){return _0x4514ce['id']===_0x37c45c[_0x04d2('0x24')]['id'];});}return _0x175ec6;};exports[_0x04d2('0x2c')]=function(_0x4cd888,_0x213018,_0x21bdf1,_0x28409c){if(_0x21bdf1&&_0x21bdf1['id']&&_0x4cd888['agents']&&_0x4cd888[_0x04d2('0x2a')][_0x21bdf1['id']]){_0x4cd888[_0x04d2('0x2a')][_0x21bdf1['id']][_0x28409c+_0x04d2('0x2b')][_0x213018[_0x04d2('0x2d')]['id']]={'id':_0x213018[_0x04d2('0x24')]['id']};}};exports[_0x04d2('0x2e')]=function(_0x149286,_0x14cb53,_0x11f173,_0x3e5f28){if(_0x11f173&&_0x11f173['id']&&_0x149286['agents']&&_0x149286[_0x04d2('0x2a')][_0x11f173['id']]){delete _0x149286[_0x04d2('0x2a')][_0x11f173['id']][_0x3e5f28+_0x04d2('0x2b')][_0x14cb53['message']['id']];}};exports[_0x04d2('0x2f')]=writeLog;
\ No newline at end of file
index 7b217bf..446b5ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e01=['validate','shelljs','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][SYSTEM]\x20%s','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','stringify'];(function(_0x5e1e1a,_0x31698a){var _0x1bd482=function(_0x5917bb){while(--_0x5917bb){_0x5e1e1a['push'](_0x5e1e1a['shift']());}};_0x1bd482(++_0x31698a);}(_0x9e01,0xe1));var _0x19e0=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9e01[_0x19e35c];return _0x3e1fe8;};'use strict';var schema=require(_0x19e0('0x0'));var sh=require(_0x19e0('0x1'));var _=require(_0x19e0('0x2'));var utils=require(_0x19e0('0x3'));var logger=require(_0x19e0('0x4'))(_0x19e0('0x5'));var system=schema({'command':{'type':_0x19e0('0x6'),'required':!![],'message':_0x19e0('0x7')}});exports[_0x19e0('0x8')]=function(_0x2ddbec,_0x159ffc){return function(_0x3b3b76){try{var _0x34bb6f={'command':_0x159ffc[0x0]};var _0x2d2984=system[_0x19e0('0x0')](_0x34bb6f,{'typecast':!![]});if(_0x2d2984['length']){logger[_0x19e0('0x9')](_0x19e0('0xa'),_0x2ddbec,_['map'](_0x2d2984,'message')[_0x19e0('0xb')](',\x20'));logger[_0x19e0('0xc')](_0x19e0('0xd'),_0x2ddbec);_0x3b3b76[_0x19e0('0xe')]();}else{var _0x17356f=this;var _0x5ab95f=utils[_0x19e0('0xf')](_0x159ffc[0x0],this);logger[_0x19e0('0xc')](_0x19e0('0x10'),_0x2ddbec,_0x5ab95f);sh[_0x19e0('0x11')](_['trim'](_0x5ab95f),function(_0x2e021a,_0x274af8){logger['info'](_0x19e0('0x12'),_0x2ddbec,_0x2e021a);if(_0x2e021a==0x0){var _0x53624e=_0x274af8[_0x19e0('0x13')](/(\r\n|\n|\r)/gm,'');if(_[_0x19e0('0x14')](_0x159ffc[0x1])||_['isEmpty'](_0x159ffc[0x1])){logger['info'](_0x19e0('0x15'),_0x2ddbec);_0x17356f[_0x19e0('0x16')][_0x159ffc[0x1]]=_0x53624e;}else{logger[_0x19e0('0xc')](_0x19e0('0x17'),_0x2ddbec,_0x159ffc[0x1],_0x53624e);_0x17356f['body'][_0x159ffc[0x1]]=_0x53624e;}}_0x3b3b76[_0x19e0('0xe')]();});}}catch(_0x333ce4){logger['error'](_0x19e0('0xa'),_0x2ddbec,_['isObject'](_0x333ce4)?JSON[_0x19e0('0x18')](_0x333ce4):_0x333ce4);logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x2ddbec);_0x3b3b76['next']();}};};
\ No newline at end of file
+var _0xa1e4=['routing','string','length','error','map','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','replace','isNil','isEmpty','info','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','[%s][SYSTEM]\x20%s','isObject','stringify','validate','shelljs','lodash','./utils','../../../../config/logger'];(function(_0x22a8c4,_0x388848){var _0x35a230=function(_0x37871d){while(--_0x37871d){_0x22a8c4['push'](_0x22a8c4['shift']());}};_0x35a230(++_0x388848);}(_0xa1e4,0xb8));var _0x4a1e=function(_0x15bb39,_0x42bd41){_0x15bb39=_0x15bb39-0x0;var _0x88fadc=_0xa1e4[_0x15bb39];return _0x88fadc;};'use strict';var schema=require(_0x4a1e('0x0'));var sh=require(_0x4a1e('0x1'));var _=require(_0x4a1e('0x2'));var utils=require(_0x4a1e('0x3'));var logger=require(_0x4a1e('0x4'))(_0x4a1e('0x5'));var system=schema({'command':{'type':_0x4a1e('0x6'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports['consequence']=function(_0x2a02ea,_0x4e7abe){return function(_0x3e56b6){try{var _0x472a1e={'command':_0x4e7abe[0x0]};var _0x1b1635=system[_0x4a1e('0x0')](_0x472a1e,{'typecast':!![]});if(_0x1b1635[_0x4a1e('0x7')]){logger[_0x4a1e('0x8')]('[%s][SYSTEM]\x20%s',_0x2a02ea,_[_0x4a1e('0x9')](_0x1b1635,_0x4a1e('0xa'))[_0x4a1e('0xb')](',\x20'));logger['info'](_0x4a1e('0xc'),_0x2a02ea);_0x3e56b6[_0x4a1e('0xd')]();}else{var _0x7c0e9b=this;var _0x384dab=utils['getMustacheRender'](_0x4e7abe[0x0],this);logger['info'](_0x4a1e('0xe'),_0x2a02ea,_0x384dab);sh[_0x4a1e('0xf')](_[_0x4a1e('0x10')](_0x384dab),function(_0xa130da,_0x13cc41){logger['info']('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x2a02ea,_0xa130da);if(_0xa130da==0x0){var _0x3254f0=_0x13cc41[_0x4a1e('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0x4a1e('0x12')](_0x4e7abe[0x1])||_[_0x4a1e('0x13')](_0x4e7abe[0x1])){logger[_0x4a1e('0x14')](_0x4a1e('0x15'),_0x2a02ea);_0x7c0e9b[_0x4a1e('0x16')][_0x4e7abe[0x1]]=_0x3254f0;}else{logger[_0x4a1e('0x14')](_0x4a1e('0x17'),_0x2a02ea,_0x4e7abe[0x1],_0x3254f0);_0x7c0e9b[_0x4a1e('0x16')][_0x4e7abe[0x1]]=_0x3254f0;}}_0x3e56b6[_0x4a1e('0xd')]();});}}catch(_0x45a85a){logger[_0x4a1e('0x8')](_0x4a1e('0x18'),_0x2a02ea,_[_0x4a1e('0x19')](_0x45a85a)?JSON[_0x4a1e('0x1a')](_0x45a85a):_0x45a85a);logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x2a02ea);_0x3e56b6[_0x4a1e('0xd')]();}};};
\ No newline at end of file
index 3e7b0ff..c92d7e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe229=['[%s][TAG]\x20%s','message','join','info','next','channel','Interaction','addTags','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','error','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','isObject','stringify','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','consequence','length'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0xe229,0x139));var _0x9e22=function(_0x3216a3,_0x465d10){_0x3216a3=_0x3216a3-0x0;var _0xedceec=_0xe229[_0x3216a3];return _0xedceec;};'use strict';var schema=require(_0x9e22('0x0'));var _=require(_0x9e22('0x1'));var rpc={'chatInteraction':require(_0x9e22('0x2')),'openchannelInteraction':require(_0x9e22('0x3')),'smsInteraction':require(_0x9e22('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x9e22('0x5')),'whatsappInteraction':require(_0x9e22('0x6'))};var logger=require(_0x9e22('0x7'))(_0x9e22('0x8'));var tag=schema({'tag':{'type':'number','required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x9e22('0x9')]=function(_0x3a1ed8,_0x4a169a,_0x595145,_0x461d6f){return function(_0x5f7fd1){try{var _0xf6af4c={'tag':_0x4a169a[0x0]};var _0x4a3ca7=tag['validate'](_0xf6af4c,{'typecast':!![]});if(_0x4a3ca7[_0x9e22('0xa')]){logger['error'](_0x9e22('0xb'),_0x3a1ed8,_['map'](_0x4a3ca7,_0x9e22('0xc'))[_0x9e22('0xd')](',\x20'));logger[_0x9e22('0xe')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x3a1ed8);_0x5f7fd1[_0x9e22('0xf')]();}else{var _0x67f71c={'ids':[_0x4a169a[0x0]]};if(rpc[_0x461d6f[_0x9e22('0x10')]+_0x9e22('0x11')]){rpc[_0x461d6f['channel']+_0x9e22('0x11')][_0x9e22('0x12')](_0x461d6f[_0x9e22('0x13')]['id'],_0x67f71c)['then'](function(_0x4130bf){logger[_0x9e22('0xe')](_0x9e22('0x14'),_0x3a1ed8,_0x4a169a[0x1],_0x461d6f['channel'],_0x461d6f['interaction']['id']);})[_0x9e22('0x15')](function(_0x4ae7f0){logger[_0x9e22('0x16')](_0x9e22('0xb'),_0x3a1ed8,JSON['stringify'](_0x4ae7f0));logger['info'](_0x9e22('0x17'),_0x3a1ed8);})[_0x9e22('0x18')](function(){_0x5f7fd1[_0x9e22('0xf')]();});}}}catch(_0xdbbac2){logger[_0x9e22('0x16')](_0x9e22('0xb'),_0x3a1ed8,_[_0x9e22('0x19')](_0xdbbac2)?JSON[_0x9e22('0x1a')](_0xdbbac2):_0xdbbac2);logger['info'](_0x9e22('0x17'),_0x3a1ed8);_0x5f7fd1[_0x9e22('0xf')]();}};};
\ No newline at end of file
+var _0x01ff=['lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','error','[%s][TAG]\x20%s','map','message','join','next','channel','Interaction','addTags','interaction','then','info','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','validate'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x01ff,0x77));var _0xf01f=function(_0x443411,_0x1a16a9){_0x443411=_0x443411-0x0;var _0x5875fa=_0x01ff[_0x443411];return _0x5875fa;};'use strict';var schema=require(_0xf01f('0x0'));var _=require(_0xf01f('0x1'));var rpc={'chatInteraction':require(_0xf01f('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0xf01f('0x3')),'mailInteraction':require(_0xf01f('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xf01f('0x5'))};var logger=require(_0xf01f('0x6'))(_0xf01f('0x7'));var tag=schema({'tag':{'type':'number','required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports['consequence']=function(_0x3a511c,_0x41bc64,_0x27b35b,_0x510ade){return function(_0x3772e7){try{var _0x588147={'tag':_0x41bc64[0x0]};var _0x387760=tag[_0xf01f('0x0')](_0x588147,{'typecast':!![]});if(_0x387760['length']){logger[_0xf01f('0x8')](_0xf01f('0x9'),_0x3a511c,_[_0xf01f('0xa')](_0x387760,_0xf01f('0xb'))[_0xf01f('0xc')](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x3a511c);_0x3772e7[_0xf01f('0xd')]();}else{var _0x35eb35={'ids':[_0x41bc64[0x0]]};if(rpc[_0x510ade[_0xf01f('0xe')]+_0xf01f('0xf')]){rpc[_0x510ade['channel']+'Interaction'][_0xf01f('0x10')](_0x510ade[_0xf01f('0x11')]['id'],_0x35eb35)[_0xf01f('0x12')](function(_0x5029af){logger[_0xf01f('0x13')](_0xf01f('0x14'),_0x3a511c,_0x41bc64[0x1],_0x510ade[_0xf01f('0xe')],_0x510ade[_0xf01f('0x11')]['id']);})['catch'](function(_0x196fee){logger[_0xf01f('0x8')](_0xf01f('0x9'),_0x3a511c,JSON[_0xf01f('0x15')](_0x196fee));logger[_0xf01f('0x13')](_0xf01f('0x16'),_0x3a511c);})[_0xf01f('0x17')](function(){_0x3772e7[_0xf01f('0xd')]();});}}}catch(_0x2cf776){logger['error'](_0xf01f('0x9'),_0x3a511c,_['isObject'](_0x2cf776)?JSON[_0xf01f('0x15')](_0x2cf776):_0x2cf776);logger[_0xf01f('0x13')](_0xf01f('0x16'),_0x3a511c);_0x3772e7[_0xf01f('0xd')]();}};};
\ No newline at end of file
index 699a64f..21e3f2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1a8=['lodash','consequence','replace','push','urlOnAnswer','?params=','urlOnRing','title','2.0','method','params','stringify','utf8','POST','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','[%s][TVOX]\x20%s','isObject','next','../../../../config/logger','routing'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0xa1a8,0x1cc));var _0x8a1a=function(_0x22b320,_0x249627){_0x22b320=_0x22b320-0x0;var _0x2f4adc=_0xa1a8[_0x22b320];return _0x2f4adc;};'use strict';var rp=require('request-promise');var logger=require(_0x8a1a('0x0'))(_0x8a1a('0x1'));var _=require(_0x8a1a('0x2'));var arr=[];exports[_0x8a1a('0x3')]=function(_0x48151a,_0xc70e83){return function(_0x1b7acd){var _0x3bf937=_0xc70e83[0xa];var _0x3dae5c=_0xc70e83[0xb];var _0x19f538=_0xc70e83[0xc];var _0x3e51eb=_0xc70e83[0xd];var _0x53a44e=_0xc70e83[0xe];var _0x4ac66c=_0xc70e83[0xf][_0x8a1a('0x4')](/\n/g,'\x20-\x20');var _0x42d03e=_0xc70e83[0x10][_0x8a1a('0x4')](/\n/g,'\x20');if(!arr['includes'](_0x3dae5c)){arr[_0x8a1a('0x5')](_0x3dae5c);var _0x580dc6=_0xc70e83[0x3];var _0x30f97f=_0xc70e83[0x4];var _0x2ad624=_0xc70e83[0x1];var _0x560cb8=_0xc70e83[0x0];var _0x3fd012={};_0x3fd012[_0x8a1a('0x6')]=_0xc70e83[0x8]+_0x8a1a('0x7')+_0x19f538+'|'+_0x3bf937+'|'+_0x3e51eb+'|'+_0x3dae5c+'|'+_0x53a44e;_0x3fd012[_0x8a1a('0x8')]=_0xc70e83[0x7]+_0x8a1a('0x7')+_0x19f538+'|'+_0x3bf937+'|'+_0x3e51eb+'|'+_0x3dae5c+'|'+_0x53a44e+'|'+_0x4ac66c+'|'+_0x42d03e;_0x3fd012[_0x8a1a('0x9')]=_0xc70e83[0x9];var _0x1bb775={};_0x1bb775['jsonrpc']=_0x8a1a('0xa');_0x1bb775[_0x8a1a('0xb')]='login';var _0x113d98=[];_0x113d98[_0x8a1a('0x5')](_0xc70e83[0x2]);_0x113d98[_0x8a1a('0x5')](_0xc70e83[0x5]);_0x113d98[_0x8a1a('0x5')](_0xc70e83[0x6]);_0x1bb775[_0x8a1a('0xc')]=_0x113d98;_0x1bb775['id']=0x1;var _0x457ee5=JSON[_0x8a1a('0xd')](_0x1bb775);var _0x24cd49={'encoding':_0x8a1a('0xe'),'method':_0x8a1a('0xf'),'timeout':0x2710,'url':_0x580dc6,'headers':{'Content-Type':_0x8a1a('0x10')},'body':_0x457ee5};return rp(_0x24cd49)[_0x8a1a('0x11')](function(_0x212865){const _0x2574e1=JSON[_0x8a1a('0x12')](_0x212865);if(!_0x2574e1[_0x8a1a('0x13')][_0x8a1a('0x14')]){throw new Error(_0x8a1a('0x15'));}var _0x55826e=_0x3dae5c;var _0x1c628f=_0x8a1a('0x16')+_0x2ad624+_0x8a1a('0x17')+_0x560cb8+'&sessionId='+_0x55826e+_0x8a1a('0x18')+JSON['stringify'](_0x3fd012);var _0x43059a=_0x30f97f+'?'+_0x1c628f;return rp(_0x43059a);})[_0x8a1a('0x11')](function(_0x69d09e){logger[_0x8a1a('0x19')](_0x8a1a('0x1a'),_0x48151a,_0x69d09e);_0x1b7acd[_0x8a1a('0x1b')]();})[_0x8a1a('0x1c')](function(_0x3dc23a){logger[_0x8a1a('0x1d')](_0x8a1a('0x1e'),_0x48151a,_[_0x8a1a('0x1f')](_0x3dc23a)?JSON[_0x8a1a('0xd')](_0x3dc23a):_0x3dc23a);_0x1b7acd[_0x8a1a('0x1b')]();});}else{logger[_0x8a1a('0x19')]('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x48151a);_0x1b7acd[_0x8a1a('0x20')]();}};};
\ No newline at end of file
+var _0x15cd=['2.0','login','push','params','stringify','POST','application/json-rpc','then','result','logged','&serviceId=','&sessionId=','&data=','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','error','[%s][TVOX]\x20%s','isObject','info','next','request-promise','../../../../config/logger','lodash','consequence','replace','\x20-\x20','includes','urlOnAnswer','?params=','title','jsonrpc'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x15cd,0xce));var _0xd15c=function(_0x5b84e5,_0x26076b){_0x5b84e5=_0x5b84e5-0x0;var _0xff9066=_0x15cd[_0x5b84e5];return _0xff9066;};'use strict';var rp=require(_0xd15c('0x0'));var logger=require(_0xd15c('0x1'))('routing');var _=require(_0xd15c('0x2'));var arr=[];exports[_0xd15c('0x3')]=function(_0x29508b,_0x4ca304){return function(_0x5a6283){var _0x3ea6ca=_0x4ca304[0xa];var _0x543e16=_0x4ca304[0xb];var _0x56304b=_0x4ca304[0xc];var _0x2eb449=_0x4ca304[0xd];var _0x440a91=_0x4ca304[0xe];var _0x392d5b=_0x4ca304[0xf][_0xd15c('0x4')](/\n/g,_0xd15c('0x5'));var _0x36b696=_0x4ca304[0x10][_0xd15c('0x4')](/\n/g,'\x20');if(!arr[_0xd15c('0x6')](_0x543e16)){arr['push'](_0x543e16);var _0x10bc04=_0x4ca304[0x3];var _0x4990a6=_0x4ca304[0x4];var _0x4c12a2=_0x4ca304[0x1];var _0x1262af=_0x4ca304[0x0];var _0x1c7818={};_0x1c7818[_0xd15c('0x7')]=_0x4ca304[0x8]+'?params='+_0x56304b+'|'+_0x3ea6ca+'|'+_0x2eb449+'|'+_0x543e16+'|'+_0x440a91;_0x1c7818['urlOnRing']=_0x4ca304[0x7]+_0xd15c('0x8')+_0x56304b+'|'+_0x3ea6ca+'|'+_0x2eb449+'|'+_0x543e16+'|'+_0x440a91+'|'+_0x392d5b+'|'+_0x36b696;_0x1c7818[_0xd15c('0x9')]=_0x4ca304[0x9];var _0x41cff9={};_0x41cff9[_0xd15c('0xa')]=_0xd15c('0xb');_0x41cff9['method']=_0xd15c('0xc');var _0x3b9105=[];_0x3b9105[_0xd15c('0xd')](_0x4ca304[0x2]);_0x3b9105[_0xd15c('0xd')](_0x4ca304[0x5]);_0x3b9105[_0xd15c('0xd')](_0x4ca304[0x6]);_0x41cff9[_0xd15c('0xe')]=_0x3b9105;_0x41cff9['id']=0x1;var _0x5e0730=JSON[_0xd15c('0xf')](_0x41cff9);var _0x41073d={'encoding':'utf8','method':_0xd15c('0x10'),'timeout':0x2710,'url':_0x10bc04,'headers':{'Content-Type':_0xd15c('0x11')},'body':_0x5e0730};return rp(_0x41073d)[_0xd15c('0x12')](function(_0x315b12){const _0x3bbe86=JSON['parse'](_0x315b12);if(!_0x3bbe86[_0xd15c('0x13')][_0xd15c('0x14')]){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x3545ac=_0x543e16;var _0x457dc4='channelId='+_0x4c12a2+_0xd15c('0x15')+_0x1262af+_0xd15c('0x16')+_0x3545ac+_0xd15c('0x17')+JSON[_0xd15c('0xf')](_0x1c7818);var _0x418cd6=_0x4990a6+'?'+_0x457dc4;return rp(_0x418cd6);})[_0xd15c('0x12')](function(_0x530cdd){logger['info'](_0xd15c('0x18'),_0x29508b,_0x530cdd);_0x5a6283[_0xd15c('0x19')]();})['catch'](function(_0x57f204){logger[_0xd15c('0x1a')](_0xd15c('0x1b'),_0x29508b,_[_0xd15c('0x1c')](_0x57f204)?JSON[_0xd15c('0xf')](_0x57f204):_0x57f204);_0x5a6283[_0xd15c('0x19')]();});}else{logger[_0xd15c('0x1d')]('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x29508b);_0x5a6283[_0xd15c('0x1e')]();}};};
\ No newline at end of file
index f55aa54..e792df3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x51a5f5,_0x34689b){var _0x524565=function(_0x395b99){while(--_0x395b99){_0x51a5f5['push'](_0x51a5f5['shift']());}};_0x524565(++_0x34689b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x1f4e66,_0x58422f){var _0x41cb76=function(_0x5cc7be){while(--_0x5cc7be){_0x1f4e66['push'](_0x1f4e66['shift']());}};_0x41cb76(++_0x58422f);}(_0xe706,0xa3));var _0x6e70=function(_0x142020,_0x1f7233){_0x142020=_0x142020-0x0;var _0x40da8f=_0xe706[_0x142020];return _0x40da8f;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index c70b529..0b5886f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb9a=['join','app','.js','toLowerCase','appdata','split','push','slice','dialogflow','dialogflowv2','tag','TagId','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','format','%s:%s:%s','./interval','condition','intervals','priority','Push\x20new\x20rule','\x20|\x20','error','execute','info','Applications\x20executed','stringify','matchPath','rules','emit','complete','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','find','chatQueues','available','loggedIn','name','mailQueues','paused','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','path','jayson/promise','./applications/utils','./applications/strategy/util','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','isNil','IntervalId','Intervals','map','interval','listen','channel','message','interaction','transfer','applications','isArray','length','existsSync'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeb9a,0x178));var _0xaeb9=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xeb9a[_0x346737];return _0x1ade2e;};'use strict';var _=require(_0xaeb9('0x0'));var util=require(_0xaeb9('0x1'));var path=require(_0xaeb9('0x2'));var fs=require('fs');var jayson=require(_0xaeb9('0x3'));var BPromise=require('bluebird');var utils=require(_0xaeb9('0x4'));var sUtils=require(_0xaeb9('0x5'));var logger=require('../../../config/logger')(_0xaeb9('0x6'));var rpc={'openchannelQueueReport':require(_0xaeb9('0x7')),'mailQueueReport':require(_0xaeb9('0x8')),'chatQueueReport':require(_0xaeb9('0x9')),'smsQueueReport':require(_0xaeb9('0xa')),'faxQueueReport':require(_0xaeb9('0xb')),'whatsappQueueReport':require(_0xaeb9('0xc'))};var RuleEngine=require(_0xaeb9('0xd'));function getId(_0x4729a5,_0x4a135f,_0x4cf057){return util['format']('%s.%s.%s',_0x4729a5,_0x4a135f||0x0,_0x4cf057||0x0);}function getIntervals(_0x312623,_0x30ba14){var _0x314597=[];if(!_[_0xaeb9('0xe')](_0x30ba14[_0xaeb9('0xf')])&&!_[_0xaeb9('0xe')](_0x312623[_0x30ba14['IntervalId']])&&!_['isNil'](_0x312623[_0x30ba14[_0xaeb9('0xf')]][_0xaeb9('0x10')])){_0x314597=_[_0xaeb9('0x11')](_0x312623[_0x30ba14[_0xaeb9('0xf')]][_0xaeb9('0x10')],'interval');}else if(!_[_0xaeb9('0xe')](_0x30ba14[_0xaeb9('0x12')])){_0x314597=[_0x30ba14['interval']];}return _0x314597;}exports[_0xaeb9('0x13')]=function(_0x3749bf){_0x3749bf['rules']={};return new BPromise(function(_0x2962b8,_0x226c07){var _0x4d3249={'Start':function(_0xe2d32c){var _0x5589ba=this;return new Promise(function(_0x2c1be9,_0x585f05){if(_0xe2d32c){try{var _0x4cee45=[];var _0x21148e=getId(_0xe2d32c[_0xaeb9('0x14')],_0xe2d32c[_0xaeb9('0x15')]?_0xe2d32c['message']['id']:0x0,_0xe2d32c[_0xaeb9('0x16')]?_0xe2d32c[_0xaeb9('0x16')]['id']:0x0);var _0x4196cf=sUtils['checkWaitingNotifications'](_0x3749bf,_0xe2d32c);if(_0xe2d32c[_0xaeb9('0x17')]||!_0x4196cf&&_0xe2d32c[_0xaeb9('0x18')]&&_[_0xaeb9('0x19')](_0xe2d32c[_0xaeb9('0x18')])&&_0xe2d32c[_0xaeb9('0x18')][_0xaeb9('0x1a')]){for(var _0x7bd45f=0x0;_0x7bd45f<_0xe2d32c[_0xaeb9('0x18')]['length'];_0x7bd45f+=0x1){var _0x187a6c=_0xe2d32c[_0xaeb9('0x18')][_0x7bd45f];if(fs[_0xaeb9('0x1b')](path[_0xaeb9('0x1c')](__dirname,'applications',_0x187a6c[_0xaeb9('0x1d')]+_0xaeb9('0x1e')))){var _0x4c672e=[];switch(_0x187a6c['app'][_0xaeb9('0x1f')]()){case'autoreply':var _0x1e5485=_0x187a6c[_0xaeb9('0x20')][_0xaeb9('0x21')](',');if(_0xe2d32c[_0xaeb9('0x14')]==='mail'){_0x4c672e[_0xaeb9('0x22')](_0x1e5485[0x0]);_0x4c672e[_0xaeb9('0x22')](_0x1e5485[0x1]);_0x4c672e[_0xaeb9('0x22')](_0x1e5485[_0xaeb9('0x23')](0x2,_0x1e5485[_0xaeb9('0x1a')])[_0xaeb9('0x1c')](','));}else{_0x4c672e['push'](_0x1e5485[0x0]);_0x4c672e[_0xaeb9('0x22')](_0x1e5485[_0xaeb9('0x23')](0x1,_0x1e5485[_0xaeb9('0x1a')])[_0xaeb9('0x1c')](','));}break;case _0xaeb9('0x24'):var _0x11833f=_0x187a6c[_0xaeb9('0x20')][_0xaeb9('0x21')](',');_0x4c672e[_0xaeb9('0x22')](_0x11833f[0x0]);_0x4c672e[_0xaeb9('0x22')](_0x11833f[0x1]);_0x4c672e[_0xaeb9('0x22')](_0x11833f['slice'](0x2,_0x11833f[_0xaeb9('0x1a')])['join'](','));break;case _0xaeb9('0x25'):var _0x332e7f=_0x187a6c[_0xaeb9('0x20')][_0xaeb9('0x21')](',');_0x4c672e[_0xaeb9('0x22')](_0x332e7f[0x0]);_0x4c672e[_0xaeb9('0x22')](_0x332e7f[0x1]);_0x4c672e[_0xaeb9('0x22')](_0x332e7f[0x2]);_0x4c672e[_0xaeb9('0x22')](_0x332e7f[0x3]);_0x4c672e['push'](_0x332e7f[_0xaeb9('0x23')](0x4,_0x332e7f[_0xaeb9('0x1a')])[_0xaeb9('0x1c')](','));break;case'amazonlex':var _0x358c83=_0x187a6c[_0xaeb9('0x20')][_0xaeb9('0x21')](',');_0x4c672e['push'](_0x358c83[0x0]);_0x4c672e[_0xaeb9('0x22')](_0x358c83[0x1]);_0x4c672e[_0xaeb9('0x22')](_0x358c83[0x2]);_0x4c672e[_0xaeb9('0x22')](_0x358c83[0x3]);_0x4c672e[_0xaeb9('0x22')](_0x358c83[_0xaeb9('0x23')](0x4,_0x358c83['length'])[_0xaeb9('0x1c')](','));break;case _0xaeb9('0x15'):_0x4c672e[_0xaeb9('0x22')](_0x187a6c[_0xaeb9('0x20')]);break;case _0xaeb9('0x26'):_0x4c672e[_0xaeb9('0x22')](_0x187a6c[_0xaeb9('0x27')]);_0x4c672e[_0xaeb9('0x22')](_0x187a6c[_0xaeb9('0x20')]);break;case'tvox':var _0x5bbf20=utils[_0xaeb9('0x28')](_0xe2d32c[_0xaeb9('0x29')][_0xaeb9('0x2a')],_0xe2d32c);var _0x415446=_0x187a6c[_0xaeb9('0x20')][_0xaeb9('0x21')](',');_0x4c672e['push'](_0x415446[0x0]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0x1]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0x2]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0x3]);_0x4c672e['push'](_0x415446[0x4]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0x5]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0x6]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0x7]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0x8]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0x9]);_0x4c672e[_0xaeb9('0x22')](_0x415446[0xa]);_0x4c672e[_0xaeb9('0x22')](_0xe2d32c[_0xaeb9('0x16')]['id']);_0x4c672e[_0xaeb9('0x22')](_0xe2d32c['message']['id']);_0x4c672e[_0xaeb9('0x22')](_0x187a6c[_0xaeb9('0x2b')]);_0x4c672e[_0xaeb9('0x22')](_0xe2d32c['interaction'][_0xaeb9('0x2c')]);_0x4c672e['push'](_0xe2d32c[_0xaeb9('0x2d')][_0xaeb9('0x2d')]);_0x4c672e['push'](_0x5bbf20);break;default:_0x4c672e=_['isNil'](_0x187a6c[_0xaeb9('0x20')])?[]:_0x187a6c[_0xaeb9('0x20')][_0xaeb9('0x21')](',');}var _0x32296c={'id':util[_0xaeb9('0x2e')](_0xaeb9('0x2f'),_0x21148e,_0x187a6c['id'],_0x187a6c['app']),'condition':require(_0xaeb9('0x30'))[_0xaeb9('0x31')](_0x21148e,getIntervals(_0x3749bf[_0xaeb9('0x32')],_0x187a6c),_0x3749bf),'consequence':require('./applications/'+_0x187a6c[_0xaeb9('0x1d')])['consequence'](_0x21148e,_0x4c672e,_0x3749bf,_0xe2d32c),'p':_0x187a6c[_0xaeb9('0x33')]||0x0};logger['info'](_0xaeb9('0x34'),_0x32296c['id'],'on\x20interval',getIntervals(_0x3749bf[_0xaeb9('0x32')],_0x187a6c)['join'](_0xaeb9('0x35')));_0x4cee45[_0xaeb9('0x22')](_0x32296c);}else{logger[_0xaeb9('0x36')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0xaeb9('0x1c')](__dirname,'applications',_0x187a6c[_0xaeb9('0x1d')]+_0xaeb9('0x1e')));}}_0x3749bf['rules'][_0x21148e]=new RuleEngine(_0x4cee45);_0x3749bf['rules'][_0x21148e][_0xaeb9('0x37')](_0xe2d32c,function(_0x26cab2){logger[_0xaeb9('0x38')](_0xaeb9('0x39'),JSON[_0xaeb9('0x3a')](_0x26cab2[_0xaeb9('0x3b')]));if(_0x3749bf['rules'][_0x21148e]){_0x3749bf[_0xaeb9('0x3c')][_0x21148e][_0xaeb9('0x3d')](_0xaeb9('0x3e'));}});return _0x2c1be9({'code':0xc8,'message':_0xe2d32c});}else{if(_0x4196cf){logger[_0xaeb9('0x38')](util[_0xaeb9('0x2e')](_0xaeb9('0x3f'),_0x21148e));}else{logger[_0xaeb9('0x38')](_0xaeb9('0x40'));}return _0x2c1be9({'code':0xc8,'message':_0xe2d32c});}}catch(_0x4c329){logger[_0xaeb9('0x36')](_0x4c329[_0xaeb9('0x41')]);return _0x585f05(_0x5589ba[_0xaeb9('0x36')](0x1f4,_0x4c329));}}return _0x585f05(_0xaeb9('0x42'));});},'AcceptMessage':function(_0x5a8bea){var _0x5cf34f=this;return new Promise(function(_0x53c8c6,_0x436dea){if(_0x5a8bea[_0xaeb9('0x43')]&&_0x5a8bea[_0xaeb9('0x43')]['id']){if(_0x3749bf[_0xaeb9('0x44')][_0x5a8bea[_0xaeb9('0x43')]['id']]){_0x3749bf[_0xaeb9('0x44')][_0x5a8bea[_0xaeb9('0x43')]['id']][_0xaeb9('0x45')]=![];_0x3749bf[_0xaeb9('0x44')][_0x5a8bea['agent']['id']][_0xaeb9('0x46')]=undefined;}}if(_0x5a8bea[_0xaeb9('0x15')]&&_0x5a8bea[_0xaeb9('0x15')]['id']){try{var _0x995fc4=getId(_0x5a8bea[_0xaeb9('0x14')],_0x5a8bea[_0xaeb9('0x15')]?_0x5a8bea[_0xaeb9('0x15')]['id']:0x0,_0x5a8bea[_0xaeb9('0x16')]?_0x5a8bea[_0xaeb9('0x16')]['id']:0x0);if(_0x3749bf[_0xaeb9('0x3c')][_0x995fc4]){_0x3749bf['rules'][_0x995fc4]['emit'](_0xaeb9('0x47'));if(rpc[_0x5a8bea['channel']+_0xaeb9('0x48')]){rpc[_0x5a8bea[_0xaeb9('0x14')]+_0xaeb9('0x48')]['update'](_0x995fc4,{'UserId':_0x5a8bea[_0xaeb9('0x15')][_0xaeb9('0x49')]})[_0xaeb9('0x4a')](function(){logger['error'](_0xaeb9('0x4b'));});}}return _0x53c8c6({'code':0xc8,'message':_0x5a8bea});}catch(_0x7c8123){logger[_0xaeb9('0x36')](_0x7c8123['stack']);return _0x436dea(_0x5cf34f['error'](0x1f4,_0x7c8123));}}logger[_0xaeb9('0x36')](_0xaeb9('0x4c'));return _0x436dea(_0x5cf34f[_0xaeb9('0x36')](0x1f4,_0xaeb9('0x4c')));});},'RejectMessage':function(_0x5ea5ce){var _0x1e97f8=this;return new Promise(function(_0x48db92,_0x24c0a1){if(_0x5ea5ce['agent']&&_0x5ea5ce[_0xaeb9('0x43')]['id']){try{if(_0x3749bf[_0xaeb9('0x44')][_0x5ea5ce[_0xaeb9('0x43')]['id']]){_0x3749bf['agents'][_0x5ea5ce['agent']['id']][_0xaeb9('0x45')]=![];_0x3749bf[_0xaeb9('0x44')][_0x5ea5ce[_0xaeb9('0x43')]['id']]['busyQueue']=undefined;}return _0x48db92({'code':0xc8,'message':_0x5ea5ce});}catch(_0x2cca19){logger[_0xaeb9('0x36')](_0x2cca19['stack']);return _0x24c0a1(_0x1e97f8['error'](0x1f4,_0x2cca19));}}logger[_0xaeb9('0x36')](_0xaeb9('0x4c'));return _0x24c0a1(_0x1e97f8[_0xaeb9('0x36')](0x1f4,_0xaeb9('0x4c')));});},'AbandonInteraction':function(_0x47c6b5){var _0xc185b0=this;return new Promise(function(_0x14a050,_0x1c1256){if(_0x47c6b5[_0xaeb9('0x14')]&&_0x47c6b5[_0xaeb9('0x16')]&&_0x47c6b5[_0xaeb9('0x16')]['id']){try{var _0x2f96d5=getId(_0x47c6b5[_0xaeb9('0x14')],_0x47c6b5[_0xaeb9('0x15')]?_0x47c6b5[_0xaeb9('0x15')]['id']:0x0,_0x47c6b5['interaction']?_0x47c6b5['interaction']['id']:0x0);if(_0x3749bf[_0xaeb9('0x3c')][_0x2f96d5]){_0x3749bf[_0xaeb9('0x3c')][_0x2f96d5][_0xaeb9('0x3d')](_0xaeb9('0x47'));}return _0x14a050({'code':0xc8,'message':_0x47c6b5});}catch(_0x40eb18){logger[_0xaeb9('0x36')](_0x40eb18[_0xaeb9('0x41')]);return _0x1c1256(_0xc185b0[_0xaeb9('0x36')](0x1f4,_0x40eb18));}}logger[_0xaeb9('0x36')](_0xaeb9('0x4c'));return _0x1c1256(_0xc185b0['error'](0x1f4,_0xaeb9('0x4c')));});},'AgentCapacity':function(_0xb169db){var _0x556791=this;return new Promise(function(_0x43bb11,_0x19f853){if(_0x3749bf[_0xaeb9('0x44')]['hasOwnProperty'](_0xb169db['id'])){for(var _0x2958a3 in _0xb169db[_0xaeb9('0x4d')]){if(_0xb169db[_0xaeb9('0x4d')]['hasOwnProperty'](_0x2958a3)){if(_0x3749bf[_0xaeb9('0x44')][_0xb169db['id']][_0xaeb9('0x4e')](_0x2958a3+_0xaeb9('0x4f'))){_0x3749bf[_0xaeb9('0x44')][_0xb169db['id']][_0x2958a3+_0xaeb9('0x4f')]=parseInt(_0xb169db[_0xaeb9('0x4d')][_0x2958a3],0xa);}}}_0x3749bf[_0xaeb9('0x44')][_0xb169db['id']][_0xaeb9('0x50')]();return _0x43bb11({'code':0xc8,'message':_0x3749bf[_0xaeb9('0x44')][_0xb169db['id']]});}else{return _0x19f853(_0x556791[_0xaeb9('0x36')](0x1f4,_0xaeb9('0x51')));}});},'Agents':function(_0x1fae18){return new Promise(function(_0x1a40e9){var _0x295475=_[_0xaeb9('0x52')](_0x3749bf[_0xaeb9('0x44')]);if(_0x1fae18&&_0x1fae18['id']){var _0x5c44cb=_[_0xaeb9('0x53')](_0x295475,function(_0x2e1704){return _0x2e1704['id']===_0x1fae18['id'];});_0x1a40e9(_0x5c44cb);}else{_0x1a40e9({'count':_0x295475[_0xaeb9('0x1a')],'rows':_0x295475});}});},'ChatQueues':function(){return new Promise(function(_0x585d66){var _0x552a57=[];for(var _0x22db2d in _0x3749bf[_0xaeb9('0x54')]){if(_0x3749bf[_0xaeb9('0x54')][_0xaeb9('0x4e')](_0x22db2d)){var _0x4b3890=_0x3749bf[_0xaeb9('0x54')][_0x22db2d];var _0x53caeb={'id':_0x4b3890['id'],'available':_0x4b3890[_0xaeb9('0x55')],'loggedIn':_0x4b3890[_0xaeb9('0x56')],'name':_0x4b3890[_0xaeb9('0x57')],'paused':_0x4b3890['paused'],'waiting':_0x4b3890['waiting']};_0x552a57['push'](_0x53caeb);}}_0x585d66({'count':_0x552a57['length'],'rows':_0x552a57});});},'MailQueues':function(){return new Promise(function(_0x56d56b){var _0x41df21=[];for(var _0x386174 in _0x3749bf[_0xaeb9('0x58')]){if(_0x3749bf['mailQueues']['hasOwnProperty'](_0x386174)){var _0x3e10ab=_0x3749bf[_0xaeb9('0x58')][_0x386174];var _0x134123={'id':_0x3e10ab['id'],'available':_0x3e10ab[_0xaeb9('0x55')],'loggedIn':_0x3e10ab[_0xaeb9('0x56')],'name':_0x3e10ab['name'],'paused':_0x3e10ab[_0xaeb9('0x59')],'waiting':_0x3e10ab[_0xaeb9('0x5a')]};_0x41df21[_0xaeb9('0x22')](_0x134123);}}_0x56d56b({'count':_0x41df21['length'],'rows':_0x41df21});});},'OpenchannelQueues':function(){return new Promise(function(_0x364568){var _0xeb388f=[];for(var _0x7d52da in _0x3749bf['openchannelQueues']){if(_0x3749bf[_0xaeb9('0x5b')][_0xaeb9('0x4e')](_0x7d52da)){var _0x40853b=_0x3749bf[_0xaeb9('0x5b')][_0x7d52da];var _0x195488={'id':_0x40853b['id'],'available':_0x40853b[_0xaeb9('0x55')],'loggedIn':_0x40853b[_0xaeb9('0x56')],'name':_0x40853b[_0xaeb9('0x57')],'paused':_0x40853b['paused'],'waiting':_0x40853b[_0xaeb9('0x5a')]};_0xeb388f[_0xaeb9('0x22')](_0x195488);}}_0x364568({'count':_0xeb388f[_0xaeb9('0x1a')],'rows':_0xeb388f});});},'SmsQueues':function(){return new Promise(function(_0x363b17){var _0x46d4d5=[];for(var _0x4f3c5e in _0x3749bf[_0xaeb9('0x5c')]){if(_0x3749bf[_0xaeb9('0x5c')][_0xaeb9('0x4e')](_0x4f3c5e)){var _0x78e882=_0x3749bf[_0xaeb9('0x5c')][_0x4f3c5e];var _0xd39b73={'id':_0x78e882['id'],'available':_0x78e882[_0xaeb9('0x55')],'loggedIn':_0x78e882[_0xaeb9('0x56')],'name':_0x78e882['name'],'paused':_0x78e882[_0xaeb9('0x59')],'waiting':_0x78e882['waiting']};_0x46d4d5['push'](_0xd39b73);}}_0x363b17({'count':_0x46d4d5[_0xaeb9('0x1a')],'rows':_0x46d4d5});});},'FaxQueues':function(){return new Promise(function(_0xa315f9){var _0x191b98=[];for(var _0x36e5c3 in _0x3749bf[_0xaeb9('0x5d')]){if(_0x3749bf[_0xaeb9('0x5d')][_0xaeb9('0x4e')](_0x36e5c3)){var _0xb5a726=_0x3749bf[_0xaeb9('0x5d')][_0x36e5c3];var _0x657c55={'id':_0xb5a726['id'],'available':_0xb5a726[_0xaeb9('0x55')],'loggedIn':_0xb5a726[_0xaeb9('0x56')],'name':_0xb5a726['name'],'paused':_0xb5a726[_0xaeb9('0x59')],'waiting':_0xb5a726[_0xaeb9('0x5a')]};_0x191b98['push'](_0x657c55);}}_0xa315f9({'count':_0x191b98[_0xaeb9('0x1a')],'rows':_0x191b98});});},'WhatsappQueues':function(){return new Promise(function(_0xaf07aa){var _0x279a18=[];for(var _0x36e78a in _0x3749bf[_0xaeb9('0x5e')]){if(_0x3749bf[_0xaeb9('0x5e')][_0xaeb9('0x4e')](_0x36e78a)){var _0x723443=_0x3749bf[_0xaeb9('0x5e')][_0x36e78a];var _0x517912={'id':_0x723443['id'],'available':_0x723443[_0xaeb9('0x55')],'loggedIn':_0x723443[_0xaeb9('0x56')],'name':_0x723443[_0xaeb9('0x57')],'paused':_0x723443[_0xaeb9('0x59')],'waiting':_0x723443['waiting']};_0x279a18[_0xaeb9('0x22')](_0x517912);}}_0xaf07aa({'count':_0x279a18[_0xaeb9('0x1a')],'rows':_0x279a18});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x2237c9){var _0x1bd1a7=_[_0xaeb9('0x52')](_0x3749bf['chatQueuesWaitingInteractions']);_0x2237c9({'count':_0x1bd1a7[_0xaeb9('0x1a')],'rows':_0x1bd1a7});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0xf19ad7){var _0x5e547d=_[_0xaeb9('0x52')](_0x3749bf['mailQueuesWaitingInteractions']);_0xf19ad7({'count':_0x5e547d[_0xaeb9('0x1a')],'rows':_0x5e547d});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x4206af){var _0x3bab28=_['values'](_0x3749bf[_0xaeb9('0x5f')]);_0x4206af({'count':_0x3bab28[_0xaeb9('0x1a')],'rows':_0x3bab28});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x3436eb){var _0x1b7c3b=_[_0xaeb9('0x52')](_0x3749bf[_0xaeb9('0x60')]);_0x3436eb({'count':_0x1b7c3b[_0xaeb9('0x1a')],'rows':_0x1b7c3b});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x581e95){var _0x290659=_[_0xaeb9('0x52')](_0x3749bf[_0xaeb9('0x61')]);_0x581e95({'count':_0x290659[_0xaeb9('0x1a')],'rows':_0x290659});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x36b403){var _0x55bd95=_[_0xaeb9('0x52')](_0x3749bf['whatsappQueuesWaitingInteractions']);_0x36b403({'count':_0x55bd95[_0xaeb9('0x1a')],'rows':_0x55bd95});});}};var _0x315198=jayson['server'](_0x4d3249)['http']();_0x315198['on']('error',function(_0x2c9af3){logger['error'](JSON[_0xaeb9('0x3a')](_0x2c9af3));return _0x226c07(_0x2c9af3);});_0x315198['listen'](0x232c,_0xaeb9('0x62'),function(){console[_0xaeb9('0x63')](_0xaeb9('0x64'),0x232c);return _0x2962b8('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x3c36=['amazonlex','tag','TagId','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','./interval','condition','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','error','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','Applications\x20executed','stringify','matchPath','emit','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','agent','agents','busy','end','QueueReport','update','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','chatQueues','available','name','paused','waiting','mailQueues','loggedIn','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','path','jayson/promise','bluebird','./applications/strategy/util','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','transfer','applications','length','existsSync','app','toLowerCase','autoreply','appdata','split','mail','push','slice','join','dialogflow'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x3c36,0x10c));var _0x63c3=function(_0x172c82,_0x58cb0a){_0x172c82=_0x172c82-0x0;var _0x45a6b3=_0x3c36[_0x172c82];return _0x45a6b3;};'use strict';var _=require('lodash');var util=require('util');var path=require(_0x63c3('0x0'));var fs=require('fs');var jayson=require(_0x63c3('0x1'));var BPromise=require(_0x63c3('0x2'));var utils=require('./applications/utils');var sUtils=require(_0x63c3('0x3'));var logger=require(_0x63c3('0x4'))(_0x63c3('0x5'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x63c3('0x6')),'chatQueueReport':require(_0x63c3('0x7')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x63c3('0x8'));function getId(_0x5f4422,_0x1e3cf4,_0x5ea273){return util[_0x63c3('0x9')](_0x63c3('0xa'),_0x5f4422,_0x1e3cf4||0x0,_0x5ea273||0x0);}function getIntervals(_0x17d81d,_0x3fd39a){var _0x59b54f=[];if(!_[_0x63c3('0xb')](_0x3fd39a['IntervalId'])&&!_['isNil'](_0x17d81d[_0x3fd39a[_0x63c3('0xc')]])&&!_[_0x63c3('0xb')](_0x17d81d[_0x3fd39a[_0x63c3('0xc')]][_0x63c3('0xd')])){_0x59b54f=_[_0x63c3('0xe')](_0x17d81d[_0x3fd39a[_0x63c3('0xc')]]['Intervals'],'interval');}else if(!_['isNil'](_0x3fd39a['interval'])){_0x59b54f=[_0x3fd39a[_0x63c3('0xf')]];}return _0x59b54f;}exports[_0x63c3('0x10')]=function(_0x222c7d){_0x222c7d[_0x63c3('0x11')]={};return new BPromise(function(_0x4355e2,_0x143550){var _0x5c3a3e={'Start':function(_0x13a600){var _0x2aad91=this;return new Promise(function(_0x1b0cbd,_0x37977f){if(_0x13a600){try{var _0x12cec7=[];var _0xfb1421=getId(_0x13a600[_0x63c3('0x12')],_0x13a600[_0x63c3('0x13')]?_0x13a600[_0x63c3('0x13')]['id']:0x0,_0x13a600[_0x63c3('0x14')]?_0x13a600['interaction']['id']:0x0);var _0x95d113=sUtils['checkWaitingNotifications'](_0x222c7d,_0x13a600);if(_0x13a600[_0x63c3('0x15')]||!_0x95d113&&_0x13a600[_0x63c3('0x16')]&&_['isArray'](_0x13a600[_0x63c3('0x16')])&&_0x13a600[_0x63c3('0x16')][_0x63c3('0x17')]){for(var _0x251e91=0x0;_0x251e91<_0x13a600[_0x63c3('0x16')]['length'];_0x251e91+=0x1){var _0x95271c=_0x13a600[_0x63c3('0x16')][_0x251e91];if(fs[_0x63c3('0x18')](path['join'](__dirname,_0x63c3('0x16'),_0x95271c[_0x63c3('0x19')]+'.js'))){var _0x4e2adf=[];switch(_0x95271c['app'][_0x63c3('0x1a')]()){case _0x63c3('0x1b'):var _0x431e63=_0x95271c[_0x63c3('0x1c')][_0x63c3('0x1d')](',');if(_0x13a600['channel']===_0x63c3('0x1e')){_0x4e2adf[_0x63c3('0x1f')](_0x431e63[0x0]);_0x4e2adf['push'](_0x431e63[0x1]);_0x4e2adf[_0x63c3('0x1f')](_0x431e63[_0x63c3('0x20')](0x2,_0x431e63[_0x63c3('0x17')])[_0x63c3('0x21')](','));}else{_0x4e2adf[_0x63c3('0x1f')](_0x431e63[0x0]);_0x4e2adf[_0x63c3('0x1f')](_0x431e63[_0x63c3('0x20')](0x1,_0x431e63[_0x63c3('0x17')])[_0x63c3('0x21')](','));}break;case _0x63c3('0x22'):var _0x49d3f4=_0x95271c[_0x63c3('0x1c')][_0x63c3('0x1d')](',');_0x4e2adf[_0x63c3('0x1f')](_0x49d3f4[0x0]);_0x4e2adf[_0x63c3('0x1f')](_0x49d3f4[0x1]);_0x4e2adf[_0x63c3('0x1f')](_0x49d3f4[_0x63c3('0x20')](0x2,_0x49d3f4[_0x63c3('0x17')])[_0x63c3('0x21')](','));break;case'dialogflowv2':var _0x354540=_0x95271c[_0x63c3('0x1c')]['split'](',');_0x4e2adf[_0x63c3('0x1f')](_0x354540[0x0]);_0x4e2adf[_0x63c3('0x1f')](_0x354540[0x1]);_0x4e2adf[_0x63c3('0x1f')](_0x354540[0x2]);_0x4e2adf[_0x63c3('0x1f')](_0x354540[0x3]);_0x4e2adf[_0x63c3('0x1f')](_0x354540[_0x63c3('0x20')](0x4,_0x354540[_0x63c3('0x17')])[_0x63c3('0x21')](','));break;case _0x63c3('0x23'):var _0x5867db=_0x95271c[_0x63c3('0x1c')]['split'](',');_0x4e2adf['push'](_0x5867db[0x0]);_0x4e2adf['push'](_0x5867db[0x1]);_0x4e2adf[_0x63c3('0x1f')](_0x5867db[0x2]);_0x4e2adf[_0x63c3('0x1f')](_0x5867db[0x3]);_0x4e2adf['push'](_0x5867db[_0x63c3('0x20')](0x4,_0x5867db[_0x63c3('0x17')])[_0x63c3('0x21')](','));break;case _0x63c3('0x13'):_0x4e2adf[_0x63c3('0x1f')](_0x95271c[_0x63c3('0x1c')]);break;case _0x63c3('0x24'):_0x4e2adf[_0x63c3('0x1f')](_0x95271c[_0x63c3('0x25')]);_0x4e2adf[_0x63c3('0x1f')](_0x95271c[_0x63c3('0x1c')]);break;case'tvox':var _0x3f6f33=utils[_0x63c3('0x26')](_0x13a600[_0x63c3('0x27')][_0x63c3('0x28')],_0x13a600);var _0x32970f=_0x95271c['appdata'][_0x63c3('0x1d')](',');_0x4e2adf[_0x63c3('0x1f')](_0x32970f[0x0]);_0x4e2adf['push'](_0x32970f[0x1]);_0x4e2adf[_0x63c3('0x1f')](_0x32970f[0x2]);_0x4e2adf[_0x63c3('0x1f')](_0x32970f[0x3]);_0x4e2adf['push'](_0x32970f[0x4]);_0x4e2adf[_0x63c3('0x1f')](_0x32970f[0x5]);_0x4e2adf[_0x63c3('0x1f')](_0x32970f[0x6]);_0x4e2adf['push'](_0x32970f[0x7]);_0x4e2adf[_0x63c3('0x1f')](_0x32970f[0x8]);_0x4e2adf[_0x63c3('0x1f')](_0x32970f[0x9]);_0x4e2adf['push'](_0x32970f[0xa]);_0x4e2adf[_0x63c3('0x1f')](_0x13a600['interaction']['id']);_0x4e2adf[_0x63c3('0x1f')](_0x13a600[_0x63c3('0x13')]['id']);_0x4e2adf[_0x63c3('0x1f')](_0x95271c[_0x63c3('0x29')]);_0x4e2adf[_0x63c3('0x1f')](_0x13a600[_0x63c3('0x14')][_0x63c3('0x2a')]);_0x4e2adf[_0x63c3('0x1f')](_0x13a600['body'][_0x63c3('0x2b')]);_0x4e2adf['push'](_0x3f6f33);break;default:_0x4e2adf=_[_0x63c3('0xb')](_0x95271c[_0x63c3('0x1c')])?[]:_0x95271c[_0x63c3('0x1c')][_0x63c3('0x1d')](',');}var _0x31963a={'id':util['format']('%s:%s:%s',_0xfb1421,_0x95271c['id'],_0x95271c[_0x63c3('0x19')]),'condition':require(_0x63c3('0x2c'))[_0x63c3('0x2d')](_0xfb1421,getIntervals(_0x222c7d[_0x63c3('0x2e')],_0x95271c),_0x222c7d),'consequence':require(_0x63c3('0x2f')+_0x95271c['app'])[_0x63c3('0x30')](_0xfb1421,_0x4e2adf,_0x222c7d,_0x13a600),'p':_0x95271c[_0x63c3('0x31')]||0x0};logger[_0x63c3('0x32')](_0x63c3('0x33'),_0x31963a['id'],_0x63c3('0x34'),getIntervals(_0x222c7d[_0x63c3('0x2e')],_0x95271c)['join']('\x20|\x20'));_0x12cec7[_0x63c3('0x1f')](_0x31963a);}else{logger[_0x63c3('0x35')](_0x63c3('0x36'),path[_0x63c3('0x21')](__dirname,_0x63c3('0x16'),_0x95271c[_0x63c3('0x19')]+_0x63c3('0x37')));}}_0x222c7d['rules'][_0xfb1421]=new RuleEngine(_0x12cec7);_0x222c7d[_0x63c3('0x11')][_0xfb1421][_0x63c3('0x38')](_0x13a600,function(_0x5c206e){logger[_0x63c3('0x32')](_0x63c3('0x39'),JSON[_0x63c3('0x3a')](_0x5c206e[_0x63c3('0x3b')]));if(_0x222c7d['rules'][_0xfb1421]){_0x222c7d[_0x63c3('0x11')][_0xfb1421][_0x63c3('0x3c')]('complete');}});return _0x1b0cbd({'code':0xc8,'message':_0x13a600});}else{if(_0x95d113){logger[_0x63c3('0x32')](util[_0x63c3('0x9')](_0x63c3('0x3d'),_0xfb1421));}else{logger[_0x63c3('0x32')](_0x63c3('0x3e'));}return _0x1b0cbd({'code':0xc8,'message':_0x13a600});}}catch(_0xe142e5){logger[_0x63c3('0x35')](_0xe142e5[_0x63c3('0x3f')]);return _0x37977f(_0x2aad91[_0x63c3('0x35')](0x1f4,_0xe142e5));}}return _0x37977f('routing\x20is\x20empty');});},'AcceptMessage':function(_0x54c635){var _0x12590b=this;return new Promise(function(_0x172a44,_0x1ce534){if(_0x54c635[_0x63c3('0x40')]&&_0x54c635['agent']['id']){if(_0x222c7d[_0x63c3('0x41')][_0x54c635[_0x63c3('0x40')]['id']]){_0x222c7d[_0x63c3('0x41')][_0x54c635[_0x63c3('0x40')]['id']][_0x63c3('0x42')]=![];_0x222c7d['agents'][_0x54c635['agent']['id']]['busyQueue']=undefined;}}if(_0x54c635[_0x63c3('0x13')]&&_0x54c635[_0x63c3('0x13')]['id']){try{var _0x3faf49=getId(_0x54c635[_0x63c3('0x12')],_0x54c635[_0x63c3('0x13')]?_0x54c635[_0x63c3('0x13')]['id']:0x0,_0x54c635['interaction']?_0x54c635[_0x63c3('0x14')]['id']:0x0);if(_0x222c7d[_0x63c3('0x11')][_0x3faf49]){_0x222c7d[_0x63c3('0x11')][_0x3faf49][_0x63c3('0x3c')](_0x63c3('0x43'));if(rpc[_0x54c635[_0x63c3('0x12')]+'QueueReport']){rpc[_0x54c635['channel']+_0x63c3('0x44')][_0x63c3('0x45')](_0x3faf49,{'UserId':_0x54c635['message']['UserId']})[_0x63c3('0x46')](function(){logger['error'](_0x63c3('0x47'));});}}return _0x172a44({'code':0xc8,'message':_0x54c635});}catch(_0x12a84c){logger[_0x63c3('0x35')](_0x12a84c[_0x63c3('0x3f')]);return _0x1ce534(_0x12590b[_0x63c3('0x35')](0x1f4,_0x12a84c));}}logger[_0x63c3('0x35')](_0x63c3('0x48'));return _0x1ce534(_0x12590b[_0x63c3('0x35')](0x1f4,_0x63c3('0x48')));});},'RejectMessage':function(_0x35b086){var _0x47f751=this;return new Promise(function(_0x3b7c87,_0x4bcf37){if(_0x35b086['agent']&&_0x35b086[_0x63c3('0x40')]['id']){try{if(_0x222c7d['agents'][_0x35b086[_0x63c3('0x40')]['id']]){_0x222c7d[_0x63c3('0x41')][_0x35b086[_0x63c3('0x40')]['id']][_0x63c3('0x42')]=![];_0x222c7d[_0x63c3('0x41')][_0x35b086[_0x63c3('0x40')]['id']][_0x63c3('0x49')]=undefined;}return _0x3b7c87({'code':0xc8,'message':_0x35b086});}catch(_0x1ee838){logger[_0x63c3('0x35')](_0x1ee838[_0x63c3('0x3f')]);return _0x4bcf37(_0x47f751['error'](0x1f4,_0x1ee838));}}logger[_0x63c3('0x35')](_0x63c3('0x48'));return _0x4bcf37(_0x47f751['error'](0x1f4,_0x63c3('0x48')));});},'AbandonInteraction':function(_0x395f2f){var _0x5d3a16=this;return new Promise(function(_0x5eeee6,_0x4cb022){if(_0x395f2f[_0x63c3('0x12')]&&_0x395f2f[_0x63c3('0x14')]&&_0x395f2f['interaction']['id']){try{var _0x3f5701=getId(_0x395f2f[_0x63c3('0x12')],_0x395f2f[_0x63c3('0x13')]?_0x395f2f['message']['id']:0x0,_0x395f2f['interaction']?_0x395f2f[_0x63c3('0x14')]['id']:0x0);if(_0x222c7d[_0x63c3('0x11')][_0x3f5701]){_0x222c7d[_0x63c3('0x11')][_0x3f5701][_0x63c3('0x3c')](_0x63c3('0x43'));}return _0x5eeee6({'code':0xc8,'message':_0x395f2f});}catch(_0x2d8649){logger[_0x63c3('0x35')](_0x2d8649['stack']);return _0x4cb022(_0x5d3a16[_0x63c3('0x35')](0x1f4,_0x2d8649));}}logger[_0x63c3('0x35')](_0x63c3('0x48'));return _0x4cb022(_0x5d3a16['error'](0x1f4,_0x63c3('0x48')));});},'AgentCapacity':function(_0x1ce6dc){var _0x1e3826=this;return new Promise(function(_0x6a29b4,_0x446266){if(_0x222c7d[_0x63c3('0x41')][_0x63c3('0x4a')](_0x1ce6dc['id'])){for(var _0x358cb in _0x1ce6dc[_0x63c3('0x4b')]){if(_0x1ce6dc[_0x63c3('0x4b')][_0x63c3('0x4a')](_0x358cb)){if(_0x222c7d[_0x63c3('0x41')][_0x1ce6dc['id']][_0x63c3('0x4a')](_0x358cb+_0x63c3('0x4c'))){_0x222c7d[_0x63c3('0x41')][_0x1ce6dc['id']][_0x358cb+_0x63c3('0x4c')]=parseInt(_0x1ce6dc[_0x63c3('0x4b')][_0x358cb],0xa);}}}_0x222c7d[_0x63c3('0x41')][_0x1ce6dc['id']][_0x63c3('0x4d')]();return _0x6a29b4({'code':0xc8,'message':_0x222c7d['agents'][_0x1ce6dc['id']]});}else{return _0x446266(_0x1e3826[_0x63c3('0x35')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x3ddbb4){return new Promise(function(_0x50fd2d){var _0x25f13e=_['values'](_0x222c7d[_0x63c3('0x41')]);if(_0x3ddbb4&&_0x3ddbb4['id']){var _0x1d8430=_['find'](_0x25f13e,function(_0x4b5487){return _0x4b5487['id']===_0x3ddbb4['id'];});_0x50fd2d(_0x1d8430);}else{_0x50fd2d({'count':_0x25f13e['length'],'rows':_0x25f13e});}});},'ChatQueues':function(){return new Promise(function(_0x5497fc){var _0x401901=[];for(var _0x5121d4 in _0x222c7d[_0x63c3('0x4e')]){if(_0x222c7d[_0x63c3('0x4e')]['hasOwnProperty'](_0x5121d4)){var _0xaaa6c6=_0x222c7d[_0x63c3('0x4e')][_0x5121d4];var _0x1d4e11={'id':_0xaaa6c6['id'],'available':_0xaaa6c6[_0x63c3('0x4f')],'loggedIn':_0xaaa6c6['loggedIn'],'name':_0xaaa6c6[_0x63c3('0x50')],'paused':_0xaaa6c6[_0x63c3('0x51')],'waiting':_0xaaa6c6[_0x63c3('0x52')]};_0x401901[_0x63c3('0x1f')](_0x1d4e11);}}_0x5497fc({'count':_0x401901['length'],'rows':_0x401901});});},'MailQueues':function(){return new Promise(function(_0x4bc673){var _0x4f0a6d=[];for(var _0x2d38bd in _0x222c7d['mailQueues']){if(_0x222c7d[_0x63c3('0x53')][_0x63c3('0x4a')](_0x2d38bd)){var _0x24002c=_0x222c7d['mailQueues'][_0x2d38bd];var _0x34f530={'id':_0x24002c['id'],'available':_0x24002c['available'],'loggedIn':_0x24002c[_0x63c3('0x54')],'name':_0x24002c[_0x63c3('0x50')],'paused':_0x24002c[_0x63c3('0x51')],'waiting':_0x24002c['waiting']};_0x4f0a6d[_0x63c3('0x1f')](_0x34f530);}}_0x4bc673({'count':_0x4f0a6d[_0x63c3('0x17')],'rows':_0x4f0a6d});});},'OpenchannelQueues':function(){return new Promise(function(_0x548ad4){var _0x41d5f5=[];for(var _0x572b04 in _0x222c7d['openchannelQueues']){if(_0x222c7d[_0x63c3('0x55')][_0x63c3('0x4a')](_0x572b04)){var _0x13bcc4=_0x222c7d[_0x63c3('0x55')][_0x572b04];var _0x14b43f={'id':_0x13bcc4['id'],'available':_0x13bcc4['available'],'loggedIn':_0x13bcc4[_0x63c3('0x54')],'name':_0x13bcc4[_0x63c3('0x50')],'paused':_0x13bcc4[_0x63c3('0x51')],'waiting':_0x13bcc4['waiting']};_0x41d5f5[_0x63c3('0x1f')](_0x14b43f);}}_0x548ad4({'count':_0x41d5f5[_0x63c3('0x17')],'rows':_0x41d5f5});});},'SmsQueues':function(){return new Promise(function(_0x45f1c7){var _0x3d5da5=[];for(var _0x5375e4 in _0x222c7d['smsQueues']){if(_0x222c7d[_0x63c3('0x56')][_0x63c3('0x4a')](_0x5375e4)){var _0x585eca=_0x222c7d[_0x63c3('0x56')][_0x5375e4];var _0x3a3517={'id':_0x585eca['id'],'available':_0x585eca['available'],'loggedIn':_0x585eca[_0x63c3('0x54')],'name':_0x585eca[_0x63c3('0x50')],'paused':_0x585eca[_0x63c3('0x51')],'waiting':_0x585eca[_0x63c3('0x52')]};_0x3d5da5[_0x63c3('0x1f')](_0x3a3517);}}_0x45f1c7({'count':_0x3d5da5[_0x63c3('0x17')],'rows':_0x3d5da5});});},'FaxQueues':function(){return new Promise(function(_0x2d6568){var _0x32b88c=[];for(var _0xe482a in _0x222c7d[_0x63c3('0x57')]){if(_0x222c7d['faxQueues'][_0x63c3('0x4a')](_0xe482a)){var _0x3f5db5=_0x222c7d['faxQueues'][_0xe482a];var _0x385506={'id':_0x3f5db5['id'],'available':_0x3f5db5[_0x63c3('0x4f')],'loggedIn':_0x3f5db5[_0x63c3('0x54')],'name':_0x3f5db5['name'],'paused':_0x3f5db5[_0x63c3('0x51')],'waiting':_0x3f5db5[_0x63c3('0x52')]};_0x32b88c[_0x63c3('0x1f')](_0x385506);}}_0x2d6568({'count':_0x32b88c[_0x63c3('0x17')],'rows':_0x32b88c});});},'WhatsappQueues':function(){return new Promise(function(_0x1cebed){var _0x8c9d02=[];for(var _0x962924 in _0x222c7d[_0x63c3('0x58')]){if(_0x222c7d[_0x63c3('0x58')][_0x63c3('0x4a')](_0x962924)){var _0x53ef88=_0x222c7d[_0x63c3('0x58')][_0x962924];var _0xfabcae={'id':_0x53ef88['id'],'available':_0x53ef88[_0x63c3('0x4f')],'loggedIn':_0x53ef88[_0x63c3('0x54')],'name':_0x53ef88['name'],'paused':_0x53ef88[_0x63c3('0x51')],'waiting':_0x53ef88[_0x63c3('0x52')]};_0x8c9d02[_0x63c3('0x1f')](_0xfabcae);}}_0x1cebed({'count':_0x8c9d02[_0x63c3('0x17')],'rows':_0x8c9d02});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x51061e){var _0x5bc9f8=_[_0x63c3('0x59')](_0x222c7d[_0x63c3('0x5a')]);_0x51061e({'count':_0x5bc9f8[_0x63c3('0x17')],'rows':_0x5bc9f8});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x4227b0){var _0x36f000=_['values'](_0x222c7d[_0x63c3('0x5b')]);_0x4227b0({'count':_0x36f000[_0x63c3('0x17')],'rows':_0x36f000});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x314f80){var _0x3cded0=_[_0x63c3('0x59')](_0x222c7d[_0x63c3('0x5c')]);_0x314f80({'count':_0x3cded0['length'],'rows':_0x3cded0});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x19d988){var _0xb3221a=_['values'](_0x222c7d[_0x63c3('0x5d')]);_0x19d988({'count':_0xb3221a[_0x63c3('0x17')],'rows':_0xb3221a});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x11883f){var _0xa9acd3=_['values'](_0x222c7d[_0x63c3('0x5e')]);_0x11883f({'count':_0xa9acd3[_0x63c3('0x17')],'rows':_0xa9acd3});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x2843af){var _0x535fb4=_[_0x63c3('0x59')](_0x222c7d[_0x63c3('0x5f')]);_0x2843af({'count':_0x535fb4['length'],'rows':_0x535fb4});});}};var _0xfbb4=jayson[_0x63c3('0x60')](_0x5c3a3e)[_0x63c3('0x61')]();_0xfbb4['on'](_0x63c3('0x35'),function(_0x279229){logger[_0x63c3('0x35')](JSON[_0x63c3('0x3a')](_0x279229));return _0x143550(_0x279229);});_0xfbb4['listen'](0x232c,_0x63c3('0x62'),function(){console[_0x63c3('0x63')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x4355e2(_0x63c3('0x64')+0x232c);});});};
\ No newline at end of file
index 827eb1b..299527b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7432=['iftime','../../../config/logger','routing','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','map','some','info','[%s][INTERVAL\x20VALID]\x20%s\x20%s','join','\x20|\x20','when','[%s][INTERVAL\x20NOT\x20VALID]\x20%s\x20%s','lodash','../../../utils/iftime'];(function(_0x1c74ad,_0x284753){var _0x359300=function(_0x27d098){while(--_0x27d098){_0x1c74ad['push'](_0x1c74ad['shift']());}};_0x359300(++_0x284753);}(_0x7432,0x13e));var _0x2743=function(_0x4e5db3,_0x516e94){_0x4e5db3=_0x4e5db3-0x0;var _0x1f3f31=_0x7432[_0x4e5db3];return _0x1f3f31;};'use strict';var _=require(_0x2743('0x0'));var iftime=require(_0x2743('0x1'))[_0x2743('0x2')];var logger=require(_0x2743('0x3'))(_0x2743('0x4'));exports[_0x2743('0x5')]=function(_0x2cd007,_0x2f932e,_0x323c59){return function(_0x43cad9){if(_0x323c59[_0x2743('0x6')]&&!_0x323c59[_0x2743('0x6')][_0x2cd007]){logger['info'](_0x2743('0x7'),_0x2cd007);return _0x43cad9['stop']();}var _0x25b97c=_0x2f932e[_0x2743('0x8')](function(_0x231d7f){return iftime(_0x231d7f);});var _0x3a5616=_[_0x2743('0x9')](_0x25b97c);if(_0x3a5616){logger[_0x2743('0xa')](_0x2743('0xb'),_0x2cd007,_0x2f932e[_0x2743('0xc')](_0x2743('0xd')),_0x3a5616);_0x43cad9[_0x2743('0xe')](_0x3a5616);}else{logger[_0x2743('0xa')](_0x2743('0xf'),_0x2cd007,_0x2f932e[_0x2743('0xc')](_0x2743('0xd')));_0x43cad9['stop']();}};};
\ No newline at end of file
+var _0x4127=['[%s][INTERVAL]\x20ROUTING\x20STOPPED','map','some','[%s][INTERVAL\x20VALID]\x20%s\x20%s','join','\x20|\x20','when','[%s][INTERVAL\x20NOT\x20VALID]\x20%s\x20%s','stop','lodash','iftime','../../../config/logger','condition','rules','info'];(function(_0x204f45,_0x225d77){var _0x30badd=function(_0x318089){while(--_0x318089){_0x204f45['push'](_0x204f45['shift']());}};_0x30badd(++_0x225d77);}(_0x4127,0x72));var _0x7412=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x4127[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7412('0x0'));var iftime=require('../../../utils/iftime')[_0x7412('0x1')];var logger=require(_0x7412('0x2'))('routing');exports[_0x7412('0x3')]=function(_0x249abc,_0x4daa03,_0x2dc124){return function(_0x361219){if(_0x2dc124[_0x7412('0x4')]&&!_0x2dc124[_0x7412('0x4')][_0x249abc]){logger[_0x7412('0x5')](_0x7412('0x6'),_0x249abc);return _0x361219['stop']();}var _0x435b7c=_0x4daa03[_0x7412('0x7')](function(_0x4dfd4c){return iftime(_0x4dfd4c);});var _0x41c816=_[_0x7412('0x8')](_0x435b7c);if(_0x41c816){logger[_0x7412('0x5')](_0x7412('0x9'),_0x249abc,_0x4daa03[_0x7412('0xa')](_0x7412('0xb')),_0x41c816);_0x361219[_0x7412('0xc')](_0x41c816);}else{logger[_0x7412('0x5')](_0x7412('0xd'),_0x249abc,_0x4daa03['join'](_0x7412('0xb')));_0x361219[_0x7412('0xe')]();}};};
\ No newline at end of file
index 9adf89a..5131697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['agentcompleteAt','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','extension','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','transferexten','transfereeuniqueid','calleridname','agentcalledAt','agententerreason','secondtransfererlinkedid','ATTENDED','secondtransfererexten','transferuniqueid','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','splice','agent','complete','lodash','util','format','uniqueid','channel','queue','membername','interface','calleridnum','lastevent','getVoiceQueueByName','then','agentcomplete','acwtime','agentacw','acwTimeout','CreateVoiceAgentReport','[%s][agents][agentcalled]','destuniqueid','now','called','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','debug','agentringnoanswer','agentringnoanswerAt','timeout','talktime','error','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','abandoned','reason','holdtime','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','connectedlinename','ringtime','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentconnect]','isNil','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime'];(function(_0x2f9173,_0x27cef5){var _0x1e46ca=function(_0x2a9cbb){while(--_0x2a9cbb){_0x2f9173['push'](_0x2f9173['shift']());}};_0x1e46ca(++_0x27cef5);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x40df50,_0x1521dc){_0x40df50=_0x40df50-0x0;var _0x21946e=_0xe1e3[_0x40df50];return _0x21946e;};'use strict';var _=require(_0x3e1e('0x0'));var util=require(_0x3e1e('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0xdbdabb,_0x5e9f9a){utils['info'](util[_0x3e1e('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0xdbdabb[_0x3e1e('0x3')],_0xdbdabb[_0x3e1e('0x4')],_0xdbdabb[_0x3e1e('0x5')],_0xdbdabb[_0x3e1e('0x6')],_0xdbdabb[_0x3e1e('0x7')],_0xdbdabb[_0x3e1e('0x8')],_0xdbdabb['connectedlinenum'],_0xdbdabb[_0x3e1e('0x9')]));if(_0xdbdabb[_0x3e1e('0x5')]){utils[_0x3e1e('0xa')](_0xdbdabb[_0x3e1e('0x5')])[_0x3e1e('0xb')](function(_0x1e5173){if(_0x1e5173){_0xdbdabb['type']=_0x1e5173['type'];_0xdbdabb['agentacw']=_0xdbdabb[_0x3e1e('0xc')]?_0x1e5173['acw']:![];_0xdbdabb[_0x3e1e('0xd')]=_0xdbdabb[_0x3e1e('0xe')]?_0x1e5173[_0x3e1e('0xf')]:0x0;}utils['request'](_0x3e1e('0x10'),_0xdbdabb);});}else{utils['request']('CreateVoiceAgentReport',_0xdbdabb);}if(_0x5e9f9a){delete transfers[_0xdbdabb['uniqueid']];}else{delete agents[_0xdbdabb['destuniqueid']];}}exports['agentcalled']=function(_0x14ad58){try{utils['debug'](util['format'](_0x3e1e('0x11'),_0x14ad58[_0x3e1e('0x3')]),_0x14ad58);agents[_0x14ad58[_0x3e1e('0x12')]]=_0x14ad58;agents[_0x14ad58['destuniqueid']]['agentcalledAt']=utils[_0x3e1e('0x13')]();agents[_0x14ad58[_0x3e1e('0x12')]]['lastevent']=_0x3e1e('0x14');agents[_0x14ad58[_0x3e1e('0x12')]]['connectedlinenum']=null;agents[_0x14ad58[_0x3e1e('0x12')]]['connectedlinename']=null;utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x16'),_0x14ad58[_0x3e1e('0x3')],agents[_0x14ad58[_0x3e1e('0x12')]][_0x3e1e('0x6')],_0x14ad58['destuniqueid']));}catch(_0x5dccb8){utils['error'](util[_0x3e1e('0x2')](_0x3e1e('0x11'),_0x14ad58[_0x3e1e('0x3')]),_0x5dccb8);}};exports['agentringnoanswer']=function(_0x1c5acd){try{if(!_['isNil'](agents[_0x1c5acd[_0x3e1e('0x12')]])){utils[_0x3e1e('0x17')](util[_0x3e1e('0x2')]('[%s][agents][agentringnoanswer]',_0x1c5acd[_0x3e1e('0x3')]),_0x1c5acd);utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x1c5acd['uniqueid'],agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x6')],_0x1c5acd['destuniqueid']));agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x18')]=!![];agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x19')]=utils[_0x3e1e('0x13')]();agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x9')]=_0x3e1e('0x1a');agents[_0x1c5acd['destuniqueid']]['reason']=_0x3e1e('0x1a');agents[_0x1c5acd[_0x3e1e('0x12')]]['holdtime']=_0x1c5acd['ringtime']?parseInt(_0x1c5acd['ringtime'])/0x3e8:0x0;agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x1b')]=0x0;unanswered['push'](_0x1c5acd[_0x3e1e('0x12')]);}}catch(_0x5ac814){utils[_0x3e1e('0x1c')](util[_0x3e1e('0x2')]('[%s][agents][agentringnoanswer]',_0x1c5acd[_0x3e1e('0x3')]),_0x5ac814);}};exports[_0x3e1e('0x1d')]=function(_0x45ed0e){try{_['forIn'](agents,function(_0xdef39,_0x4ec149){if(_0xdef39['uniqueid']==_0x45ed0e['uniqueid']&&!_[_0x3e1e('0x1e')](unanswered,_0xdef39['destuniqueid'])){utils['debug'](util[_0x3e1e('0x2')](_0x3e1e('0x1f'),_0x45ed0e[_0x3e1e('0x3')]),_0x45ed0e);utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x45ed0e['uniqueid'],_0xdef39['membername'],_0xdef39['destuniqueid']));_0xdef39[_0x3e1e('0x18')]=!![];_0xdef39[_0x3e1e('0x19')]=utils[_0x3e1e('0x13')]();_0xdef39[_0x3e1e('0x9')]=_0x3e1e('0x20');_0xdef39[_0x3e1e('0x21')]=_0x3e1e('0x20');_0xdef39[_0x3e1e('0x22')]=_0x45ed0e['holdtime'];_0xdef39[_0x3e1e('0x1b')]=0x0;writeDB(_0xdef39);}});}catch(_0x348ef5){utils['error'](util[_0x3e1e('0x2')](_0x3e1e('0x1f'),_0x45ed0e[_0x3e1e('0x3')]),_0x348ef5);}};exports[_0x3e1e('0x23')]=function(_0x55a082){try{if(agents[_0x55a082['destuniqueid']]){utils[_0x3e1e('0x17')](util[_0x3e1e('0x2')]('[%s][agents][agentconnect]',_0x55a082[_0x3e1e('0x3')]),_0x55a082);utils[_0x3e1e('0x15')](util['format'](_0x3e1e('0x24'),_0x55a082[_0x3e1e('0x3')],agents[_0x55a082[_0x3e1e('0x12')]][_0x3e1e('0x6')],_0x55a082[_0x3e1e('0x12')]));agents[_0x55a082['destuniqueid']][_0x3e1e('0x25')]=utils[_0x3e1e('0x13')]();agents[_0x55a082[_0x3e1e('0x12')]][_0x3e1e('0x26')]=_0x55a082['connectedlinenum'];agents[_0x55a082[_0x3e1e('0x12')]][_0x3e1e('0x27')]=_0x55a082[_0x3e1e('0x27')];agents[_0x55a082[_0x3e1e('0x12')]][_0x3e1e('0x22')]=_0x55a082[_0x3e1e('0x28')];agents[_0x55a082[_0x3e1e('0x12')]]['lastevent']=_0x3e1e('0x29');_['forIn'](agents,function(_0x53bdf5,_0x4f598e){if(_0x53bdf5[_0x3e1e('0x12')]!=_0x55a082[_0x3e1e('0x12')]&&_0x53bdf5['uniqueid']==_0x55a082[_0x3e1e('0x3')]){_0x53bdf5[_0x3e1e('0x1b')]=0x0;_0x53bdf5['holdtime']=_0x55a082[_0x3e1e('0x28')];_0x53bdf5[_0x3e1e('0x18')]=!![];_0x53bdf5['agentringnoanswerAt']=utils['now']();_0x53bdf5[_0x3e1e('0x9')]='answered_elsewhere';_0x53bdf5['reason']=_0x3e1e('0x2a');_0x53bdf5[_0x3e1e('0x2b')]=_0x55a082[_0x3e1e('0x12')];_0x53bdf5[_0x3e1e('0x2c')]=_0x55a082[_0x3e1e('0x6')];writeDB(_0x53bdf5);}});}}catch(_0x55ea1d){utils['error'](util[_0x3e1e('0x2')](_0x3e1e('0x2d'),_0x55a082[_0x3e1e('0x3')]),_0x55ea1d);}};exports['agentcomplete']=function(_0x1124d0){try{if(!_[_0x3e1e('0x2e')](agents[_0x1124d0[_0x3e1e('0x12')]])){utils['debug'](util[_0x3e1e('0x2')]('[%s][agents][agentcomplete]',_0x1124d0['uniqueid']),_0x1124d0);utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x2f'),_0x1124d0[_0x3e1e('0x3')],agents[_0x1124d0['destuniqueid']]['membername'],_0x1124d0['destuniqueid']));agents[_0x1124d0['destuniqueid']][_0x3e1e('0xc')]=!![];agents[_0x1124d0[_0x3e1e('0x12')]]['agentcompleteAt']=utils['now']();agents[_0x1124d0[_0x3e1e('0x12')]][_0x3e1e('0x1b')]=utils[_0x3e1e('0x30')](agents[_0x1124d0['destuniqueid']][_0x3e1e('0x31')],agents[_0x1124d0['destuniqueid']][_0x3e1e('0x25')]);agents[_0x1124d0[_0x3e1e('0x12')]][_0x3e1e('0x21')]=_0x1124d0[_0x3e1e('0x21')];agents[_0x1124d0[_0x3e1e('0x12')]][_0x3e1e('0x9')]='complete';writeDB(agents[_0x1124d0[_0x3e1e('0x12')]]);}}catch(_0x1ce1cd){utils['error'](util[_0x3e1e('0x2')](_0x3e1e('0x32'),_0x1124d0['uniqueid']),_0x1ce1cd);}};exports[_0x3e1e('0x33')]=function(_0x347b3f){try{if(!_[_0x3e1e('0x2e')](agents[_0x347b3f[_0x3e1e('0x34')]])){utils['debug'](util[_0x3e1e('0x2')](_0x3e1e('0x35'),_0x347b3f[_0x3e1e('0x3')]),_0x347b3f);utils[_0x3e1e('0x15')](util['format'](_0x3e1e('0x36'),_0x347b3f[_0x3e1e('0x3')],agents[_0x347b3f[_0x3e1e('0x34')]][_0x3e1e('0x6')],agents[_0x347b3f[_0x3e1e('0x34')]][_0x3e1e('0x3')]));agents[_0x347b3f[_0x3e1e('0x34')]][_0x3e1e('0x37')]=!![];agents[_0x347b3f['transfereruniqueid']][_0x3e1e('0x38')]='blind';agents[_0x347b3f['transfereruniqueid']]['transferexten']=_0x347b3f[_0x3e1e('0x39')];agents[_0x347b3f[_0x3e1e('0x34')]]['transferuniqueid']=agents[_0x347b3f[_0x3e1e('0x34')]]['uniqueid'];}}catch(_0x5b2416){utils[_0x3e1e('0x1c')](util['format']('[%s][agents][blindtransfer]',_0x347b3f['uniqueid']),_0x5b2416);}};exports[_0x3e1e('0x3a')]=function(_0xe577b2){try{utils[_0x3e1e('0x17')](util[_0x3e1e('0x2')](_0x3e1e('0x3b'),_0xe577b2[_0x3e1e('0x3c')]),_0xe577b2);if(_0xe577b2[_0x3e1e('0x3c')]==_0xe577b2['origtransfererlinkedid']){if(!_[_0x3e1e('0x2e')](agents[_0xe577b2['secondtransfereruniqueid']])){utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x3d'),_0xe577b2['origtransfereruniqueid'],agents[_0xe577b2['secondtransfereruniqueid']][_0x3e1e('0x6')]));agents[_0xe577b2[_0x3e1e('0x3e')]]['transfer']=!![];agents[_0xe577b2[_0x3e1e('0x3e')]]['transfertype']='ATTENDED';agents[_0xe577b2[_0x3e1e('0x3e')]][_0x3e1e('0x3f')]=_0xe577b2['origtransfererexten'];agents[_0xe577b2[_0x3e1e('0x3e')]]['transferuniqueid']=_0xe577b2['origtransfereruniqueid'];}if(_0xe577b2[_0x3e1e('0x40')]&&agents[_0xe577b2['transfereeuniqueid']]){agents[_0xe577b2[_0x3e1e('0x40')]]['agententerreason']=0x1;transfers[_0xe577b2[_0x3e1e('0x40')]]=_['clone'](agents[_0xe577b2[_0x3e1e('0x40')]]);transfers[_0xe577b2[_0x3e1e('0x40')]]['calleridnum']=agents[_0xe577b2['secondtransfereruniqueid']]['calleridnum'];transfers[_0xe577b2[_0x3e1e('0x40')]][_0x3e1e('0x41')]=agents[_0xe577b2[_0x3e1e('0x3e')]]['calleridname'];transfers[_0xe577b2[_0x3e1e('0x40')]][_0x3e1e('0x42')]=utils[_0x3e1e('0x13')]();transfers[_0xe577b2['transfereeuniqueid']]['agentconnectAt']=utils[_0x3e1e('0x13')]();transfers[_0xe577b2['transfereeuniqueid']][_0x3e1e('0x22')]=0x0;transfers[_0xe577b2[_0x3e1e('0x40')]][_0x3e1e('0x43')]=0x2;}}else if(_0xe577b2['secondtransfereruniqueid']==_0xe577b2[_0x3e1e('0x44')]){if(!_['isNil'](agents[_0xe577b2[_0x3e1e('0x3c')]])){utils[_0x3e1e('0x15')](util['format'](_0x3e1e('0x3d'),_0xe577b2['origtransfereruniqueid'],agents[_0xe577b2[_0x3e1e('0x3c')]]['membername']));agents[_0xe577b2[_0x3e1e('0x3c')]]['transfer']=!![];agents[_0xe577b2[_0x3e1e('0x3c')]][_0x3e1e('0x38')]=_0x3e1e('0x45');agents[_0xe577b2['origtransfereruniqueid']][_0x3e1e('0x3f')]=_0xe577b2[_0x3e1e('0x46')];agents[_0xe577b2['origtransfereruniqueid']][_0x3e1e('0x47')]=_0xe577b2['secondtransfereruniqueid'];}if(_0xe577b2['transfertargetuniqueid']&&agents[_0xe577b2['transfertargetuniqueid']]){agents[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x43')]=0x1;transfers[_0xe577b2[_0x3e1e('0x48')]]=_[_0x3e1e('0x49')](agents[_0xe577b2[_0x3e1e('0x48')]]);transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x8')]=agents[_0xe577b2['origtransfereruniqueid']][_0x3e1e('0x8')];transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x41')]=agents[_0xe577b2[_0x3e1e('0x3c')]][_0x3e1e('0x41')];transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x42')]=utils[_0x3e1e('0x13')]();transfers[_0xe577b2['transfertargetuniqueid']]['agentconnectAt']=utils[_0x3e1e('0x13')]();transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x22')]=0x0;transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x43')]=0x2;}}}catch(_0x2e950d){utils[_0x3e1e('0x1c')](util[_0x3e1e('0x2')](_0x3e1e('0x3b'),_0xe577b2[_0x3e1e('0x3c')]),_0x2e950d);}};exports[_0x3e1e('0x4a')]=function(_0x50ba57){try{utils['debug'](util['format'](_0x3e1e('0x4b'),_0x50ba57[_0x3e1e('0x3')]),_0x50ba57);if(agents[_0x50ba57[_0x3e1e('0x3')]]&&agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')]==='timeout'){if(_0x50ba57[_0x3e1e('0x4c')]==='21'){agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')]=_0x3e1e('0x4d');agents[_0x50ba57[_0x3e1e('0x3')]]['lastevent']=_0x3e1e('0x4d');}utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x4e'),_0x50ba57[_0x3e1e('0x3')],agents[_0x50ba57[_0x3e1e('0x3')]]['membername'],agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')],agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x9')]));writeDB(agents[_0x50ba57[_0x3e1e('0x3')]]);var _0x372581=unanswered['indexOf'](_0x50ba57[_0x3e1e('0x3')]);if(_0x372581>-0x1){unanswered[_0x3e1e('0x4f')](_0x372581,0x1);}}if(transfers[_0x50ba57[_0x3e1e('0x3')]]){transfers[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0xc')]=!![];transfers[_0x50ba57[_0x3e1e('0x3')]]['agentcompleteAt']=utils[_0x3e1e('0x13')]();transfers[_0x50ba57['uniqueid']][_0x3e1e('0x1b')]=utils[_0x3e1e('0x30')](transfers[_0x50ba57['uniqueid']][_0x3e1e('0x31')],transfers[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x25')]);transfers[_0x50ba57[_0x3e1e('0x3')]]['reason']=_0x3e1e('0x50');transfers[_0x50ba57['uniqueid']][_0x3e1e('0x9')]=_0x3e1e('0x51');utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x4e'),_0x50ba57[_0x3e1e('0x3')],transfers[_0x50ba57['uniqueid']][_0x3e1e('0x6')],transfers[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')],transfers[_0x50ba57[_0x3e1e('0x3')]]['lastevent']));writeDB(transfers[_0x50ba57[_0x3e1e('0x3')]],!![]);}if(agents[_0x50ba57[_0x3e1e('0x3')]]&&agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x25')]){agents[_0x50ba57['uniqueid']][_0x3e1e('0xc')]=!![];agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x31')]=utils[_0x3e1e('0x13')]();agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x1b')]=utils['diffTime'](agents[_0x50ba57['uniqueid']]['agentcompleteAt'],agents[_0x50ba57[_0x3e1e('0x3')]]['agentconnectAt']);agents[_0x50ba57[_0x3e1e('0x3')]]['reason']=agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x37')]?_0x3e1e('0x37'):_0x3e1e('0x50');agents[_0x50ba57['uniqueid']][_0x3e1e('0x9')]='complete';utils[_0x3e1e('0x15')](util['format'](_0x3e1e('0x4e'),_0x50ba57[_0x3e1e('0x3')],agents[_0x50ba57['uniqueid']][_0x3e1e('0x6')],agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')],agents[_0x50ba57['uniqueid']]['lastevent']));writeDB(agents[_0x50ba57[_0x3e1e('0x3')]]);}}catch(_0x20bb6d){utils[_0x3e1e('0x1c')](util['format'](_0x3e1e('0x4b'),_0x50ba57['uniqueid']),_0x20bb6d);}};
\ No newline at end of file
+var _0x087b=['calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','diffTime','lodash','util','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentcomplete','acw','acwtime','agentacw','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentringnoanswer]','agentringnoanswerAt','reason','timeout','holdtime','ringtime','talktime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswer','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','answeredelsewheredestinationuniqueid','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','isNil','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone'];(function(_0x404cd2,_0x1a8a08){var _0x5e8497=function(_0xbcc2a2){while(--_0xbcc2a2){_0x404cd2['push'](_0x404cd2['shift']());}};_0x5e8497(++_0x1a8a08);}(_0x087b,0x11a));var _0xb087=function(_0x47fd36,_0x41535d){_0x47fd36=_0x47fd36-0x0;var _0x21a0fc=_0x087b[_0x47fd36];return _0x21a0fc;};'use strict';var _=require(_0xb087('0x0'));var util=require(_0xb087('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x5f3606,_0x40e6d6){utils['info'](util[_0xb087('0x2')](_0xb087('0x3'),_0x5f3606[_0xb087('0x4')],_0x5f3606[_0xb087('0x5')],_0x5f3606[_0xb087('0x6')],_0x5f3606[_0xb087('0x7')],_0x5f3606[_0xb087('0x8')],_0x5f3606[_0xb087('0x9')],_0x5f3606[_0xb087('0xa')],_0x5f3606[_0xb087('0xb')]));if(_0x5f3606[_0xb087('0x6')]){utils[_0xb087('0xc')](_0x5f3606[_0xb087('0x6')])[_0xb087('0xd')](function(_0x2f14bc){if(_0x2f14bc){_0x5f3606[_0xb087('0xe')]=_0x2f14bc[_0xb087('0xe')];_0x5f3606['agentacw']=_0x5f3606[_0xb087('0xf')]?_0x2f14bc[_0xb087('0x10')]:![];_0x5f3606[_0xb087('0x11')]=_0x5f3606[_0xb087('0x12')]?_0x2f14bc[_0xb087('0x13')]:0x0;}utils[_0xb087('0x14')](_0xb087('0x15'),_0x5f3606);});}else{utils['request'](_0xb087('0x15'),_0x5f3606);}if(_0x40e6d6){delete transfers[_0x5f3606[_0xb087('0x4')]];}else{delete agents[_0x5f3606[_0xb087('0x16')]];}}exports['agentcalled']=function(_0x3001e3){try{utils[_0xb087('0x17')](util[_0xb087('0x2')](_0xb087('0x18'),_0x3001e3[_0xb087('0x4')]),_0x3001e3);agents[_0x3001e3[_0xb087('0x16')]]=_0x3001e3;agents[_0x3001e3[_0xb087('0x16')]][_0xb087('0x19')]=utils[_0xb087('0x1a')]();agents[_0x3001e3[_0xb087('0x16')]]['lastevent']=_0xb087('0x1b');agents[_0x3001e3[_0xb087('0x16')]]['connectedlinenum']=null;agents[_0x3001e3[_0xb087('0x16')]][_0xb087('0x1c')]=null;utils[_0xb087('0x1d')](util['format'](_0xb087('0x1e'),_0x3001e3[_0xb087('0x4')],agents[_0x3001e3[_0xb087('0x16')]][_0xb087('0x7')],_0x3001e3['destuniqueid']));}catch(_0x13d534){utils[_0xb087('0x1f')](util[_0xb087('0x2')](_0xb087('0x18'),_0x3001e3['uniqueid']),_0x13d534);}};exports['agentringnoanswer']=function(_0x5ea3dc){try{if(!_['isNil'](agents[_0x5ea3dc[_0xb087('0x16')]])){utils[_0xb087('0x17')](util[_0xb087('0x2')](_0xb087('0x20'),_0x5ea3dc[_0xb087('0x4')]),_0x5ea3dc);utils[_0xb087('0x1d')](util[_0xb087('0x2')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x5ea3dc[_0xb087('0x4')],agents[_0x5ea3dc[_0xb087('0x16')]][_0xb087('0x7')],_0x5ea3dc[_0xb087('0x16')]));agents[_0x5ea3dc[_0xb087('0x16')]]['agentringnoanswer']=!![];agents[_0x5ea3dc[_0xb087('0x16')]][_0xb087('0x21')]=utils['now']();agents[_0x5ea3dc['destuniqueid']]['lastevent']='timeout';agents[_0x5ea3dc['destuniqueid']][_0xb087('0x22')]=_0xb087('0x23');agents[_0x5ea3dc[_0xb087('0x16')]][_0xb087('0x24')]=_0x5ea3dc[_0xb087('0x25')]?parseInt(_0x5ea3dc[_0xb087('0x25')])/0x3e8:0x0;agents[_0x5ea3dc[_0xb087('0x16')]][_0xb087('0x26')]=0x0;unanswered[_0xb087('0x27')](_0x5ea3dc[_0xb087('0x16')]);}}catch(_0x18058c){utils[_0xb087('0x1f')](util[_0xb087('0x2')](_0xb087('0x20'),_0x5ea3dc['uniqueid']),_0x18058c);}};exports[_0xb087('0x28')]=function(_0x1335d9){try{_[_0xb087('0x29')](agents,function(_0x15c9ac,_0x22d441){if(_0x15c9ac[_0xb087('0x4')]==_0x1335d9[_0xb087('0x4')]&&!_[_0xb087('0x2a')](unanswered,_0x15c9ac['destuniqueid'])){utils['debug'](util[_0xb087('0x2')](_0xb087('0x2b'),_0x1335d9['uniqueid']),_0x1335d9);utils[_0xb087('0x1d')](util[_0xb087('0x2')](_0xb087('0x2c'),_0x1335d9[_0xb087('0x4')],_0x15c9ac[_0xb087('0x7')],_0x15c9ac[_0xb087('0x16')]));_0x15c9ac[_0xb087('0x2d')]=!![];_0x15c9ac[_0xb087('0x21')]=utils[_0xb087('0x1a')]();_0x15c9ac[_0xb087('0xb')]=_0xb087('0x2e');_0x15c9ac[_0xb087('0x22')]='abandoned';_0x15c9ac[_0xb087('0x24')]=_0x1335d9['holdtime'];_0x15c9ac[_0xb087('0x26')]=0x0;writeDB(_0x15c9ac);}});}catch(_0x296e9b){utils[_0xb087('0x1f')](util[_0xb087('0x2')](_0xb087('0x2b'),_0x1335d9[_0xb087('0x4')]),_0x296e9b);}};exports[_0xb087('0x2f')]=function(_0x29df58){try{if(agents[_0x29df58[_0xb087('0x16')]]){utils['debug'](util['format'](_0xb087('0x30'),_0x29df58[_0xb087('0x4')]),_0x29df58);utils[_0xb087('0x1d')](util[_0xb087('0x2')](_0xb087('0x31'),_0x29df58['uniqueid'],agents[_0x29df58[_0xb087('0x16')]][_0xb087('0x7')],_0x29df58['destuniqueid']));agents[_0x29df58['destuniqueid']][_0xb087('0x32')]=utils[_0xb087('0x1a')]();agents[_0x29df58[_0xb087('0x16')]]['connectedlinenum']=_0x29df58[_0xb087('0xa')];agents[_0x29df58[_0xb087('0x16')]][_0xb087('0x1c')]=_0x29df58[_0xb087('0x1c')];agents[_0x29df58[_0xb087('0x16')]]['holdtime']=_0x29df58[_0xb087('0x25')];agents[_0x29df58['destuniqueid']][_0xb087('0xb')]='connect';_[_0xb087('0x29')](agents,function(_0xc9f9e9,_0x513332){if(_0xc9f9e9[_0xb087('0x16')]!=_0x29df58['destuniqueid']&&_0xc9f9e9[_0xb087('0x4')]==_0x29df58['uniqueid']){_0xc9f9e9[_0xb087('0x26')]=0x0;_0xc9f9e9[_0xb087('0x24')]=_0x29df58[_0xb087('0x25')];_0xc9f9e9[_0xb087('0x2d')]=!![];_0xc9f9e9[_0xb087('0x21')]=utils[_0xb087('0x1a')]();_0xc9f9e9[_0xb087('0xb')]='answered_elsewhere';_0xc9f9e9[_0xb087('0x22')]='answered_elsewhere';_0xc9f9e9[_0xb087('0x33')]=_0x29df58[_0xb087('0x16')];_0xc9f9e9['answeredelsewheremembername']=_0x29df58[_0xb087('0x7')];writeDB(_0xc9f9e9);}});}}catch(_0x45dc6f){utils[_0xb087('0x1f')](util['format'](_0xb087('0x30'),_0x29df58['uniqueid']),_0x45dc6f);}};exports[_0xb087('0xf')]=function(_0x32b9d3){try{if(!_['isNil'](agents[_0x32b9d3[_0xb087('0x16')]])){utils[_0xb087('0x17')](util['format'](_0xb087('0x34'),_0x32b9d3[_0xb087('0x4')]),_0x32b9d3);utils['info'](util[_0xb087('0x2')](_0xb087('0x35'),_0x32b9d3[_0xb087('0x4')],agents[_0x32b9d3[_0xb087('0x16')]]['membername'],_0x32b9d3['destuniqueid']));agents[_0x32b9d3[_0xb087('0x16')]][_0xb087('0xf')]=!![];agents[_0x32b9d3[_0xb087('0x16')]][_0xb087('0x36')]=utils[_0xb087('0x1a')]();agents[_0x32b9d3[_0xb087('0x16')]]['talktime']=utils['diffTime'](agents[_0x32b9d3[_0xb087('0x16')]]['agentcompleteAt'],agents[_0x32b9d3[_0xb087('0x16')]][_0xb087('0x32')]);agents[_0x32b9d3[_0xb087('0x16')]][_0xb087('0x22')]=_0x32b9d3['reason'];agents[_0x32b9d3[_0xb087('0x16')]]['lastevent']=_0xb087('0x37');writeDB(agents[_0x32b9d3[_0xb087('0x16')]]);}}catch(_0xcb56c7){utils[_0xb087('0x1f')](util[_0xb087('0x2')]('[%s][agents][agentcomplete]',_0x32b9d3[_0xb087('0x4')]),_0xcb56c7);}};exports[_0xb087('0x38')]=function(_0x588d96){try{if(!_['isNil'](agents[_0x588d96[_0xb087('0x39')]])){utils['debug'](util['format'](_0xb087('0x3a'),_0x588d96[_0xb087('0x4')]),_0x588d96);utils['info'](util[_0xb087('0x2')](_0xb087('0x3b'),_0x588d96[_0xb087('0x4')],agents[_0x588d96['transfereruniqueid']]['membername'],agents[_0x588d96[_0xb087('0x39')]]['uniqueid']));agents[_0x588d96['transfereruniqueid']][_0xb087('0x3c')]=!![];agents[_0x588d96[_0xb087('0x39')]][_0xb087('0x3d')]=_0xb087('0x3e');agents[_0x588d96[_0xb087('0x39')]][_0xb087('0x3f')]=_0x588d96[_0xb087('0x40')];agents[_0x588d96[_0xb087('0x39')]][_0xb087('0x41')]=agents[_0x588d96[_0xb087('0x39')]][_0xb087('0x4')];}}catch(_0x2cfc44){utils['error'](util[_0xb087('0x2')](_0xb087('0x3a'),_0x588d96['uniqueid']),_0x2cfc44);}};exports[_0xb087('0x42')]=function(_0x458301){try{utils[_0xb087('0x17')](util[_0xb087('0x2')](_0xb087('0x43'),_0x458301[_0xb087('0x44')]),_0x458301);if(_0x458301[_0xb087('0x44')]==_0x458301[_0xb087('0x45')]){if(!_[_0xb087('0x46')](agents[_0x458301[_0xb087('0x47')]])){utils[_0xb087('0x1d')](util['format'](_0xb087('0x48'),_0x458301['origtransfereruniqueid'],agents[_0x458301[_0xb087('0x47')]]['membername']));agents[_0x458301[_0xb087('0x47')]][_0xb087('0x3c')]=!![];agents[_0x458301[_0xb087('0x47')]][_0xb087('0x3d')]=_0xb087('0x49');agents[_0x458301[_0xb087('0x47')]][_0xb087('0x3f')]=_0x458301[_0xb087('0x4a')];agents[_0x458301[_0xb087('0x47')]][_0xb087('0x41')]=_0x458301[_0xb087('0x44')];}if(_0x458301[_0xb087('0x4b')]&&agents[_0x458301[_0xb087('0x4b')]]){agents[_0x458301[_0xb087('0x4b')]][_0xb087('0x4c')]=0x1;transfers[_0x458301[_0xb087('0x4b')]]=_[_0xb087('0x4d')](agents[_0x458301[_0xb087('0x4b')]]);transfers[_0x458301[_0xb087('0x4b')]][_0xb087('0x9')]=agents[_0x458301[_0xb087('0x47')]][_0xb087('0x9')];transfers[_0x458301['transfereeuniqueid']][_0xb087('0x4e')]=agents[_0x458301[_0xb087('0x47')]][_0xb087('0x4e')];transfers[_0x458301['transfereeuniqueid']][_0xb087('0x19')]=utils[_0xb087('0x1a')]();transfers[_0x458301['transfereeuniqueid']][_0xb087('0x32')]=utils[_0xb087('0x1a')]();transfers[_0x458301[_0xb087('0x4b')]]['holdtime']=0x0;transfers[_0x458301[_0xb087('0x4b')]][_0xb087('0x4c')]=0x2;}}else if(_0x458301[_0xb087('0x47')]==_0x458301[_0xb087('0x4f')]){if(!_[_0xb087('0x46')](agents[_0x458301[_0xb087('0x44')]])){utils[_0xb087('0x1d')](util[_0xb087('0x2')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x458301[_0xb087('0x44')],agents[_0x458301[_0xb087('0x44')]][_0xb087('0x7')]));agents[_0x458301['origtransfereruniqueid']][_0xb087('0x3c')]=!![];agents[_0x458301['origtransfereruniqueid']]['transfertype']=_0xb087('0x49');agents[_0x458301[_0xb087('0x44')]]['transferexten']=_0x458301[_0xb087('0x50')];agents[_0x458301['origtransfereruniqueid']][_0xb087('0x41')]=_0x458301[_0xb087('0x47')];}if(_0x458301['transfertargetuniqueid']&&agents[_0x458301['transfertargetuniqueid']]){agents[_0x458301[_0xb087('0x51')]]['agententerreason']=0x1;transfers[_0x458301['transfertargetuniqueid']]=_[_0xb087('0x4d')](agents[_0x458301['transfertargetuniqueid']]);transfers[_0x458301[_0xb087('0x51')]]['calleridnum']=agents[_0x458301[_0xb087('0x44')]][_0xb087('0x9')];transfers[_0x458301[_0xb087('0x51')]][_0xb087('0x4e')]=agents[_0x458301[_0xb087('0x44')]][_0xb087('0x4e')];transfers[_0x458301['transfertargetuniqueid']][_0xb087('0x19')]=utils['now']();transfers[_0x458301[_0xb087('0x51')]][_0xb087('0x32')]=utils[_0xb087('0x1a')]();transfers[_0x458301['transfertargetuniqueid']][_0xb087('0x24')]=0x0;transfers[_0x458301['transfertargetuniqueid']][_0xb087('0x4c')]=0x2;}}}catch(_0x3784f7){utils[_0xb087('0x1f')](util[_0xb087('0x2')](_0xb087('0x43'),_0x458301[_0xb087('0x44')]),_0x3784f7);}};exports['hangup']=function(_0x245d68){try{utils[_0xb087('0x17')](util['format'](_0xb087('0x52'),_0x245d68['uniqueid']),_0x245d68);if(agents[_0x245d68[_0xb087('0x4')]]&&agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x22')]===_0xb087('0x23')){if(_0x245d68[_0xb087('0x53')]==='21'){agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x22')]=_0xb087('0x54');agents[_0x245d68['uniqueid']]['lastevent']='rejected';}utils[_0xb087('0x1d')](util['format'](_0xb087('0x55'),_0x245d68['uniqueid'],agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x7')],agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x22')],agents[_0x245d68['uniqueid']][_0xb087('0xb')]));writeDB(agents[_0x245d68['uniqueid']]);var _0x185102=unanswered[_0xb087('0x56')](_0x245d68[_0xb087('0x4')]);if(_0x185102>-0x1){unanswered[_0xb087('0x57')](_0x185102,0x1);}}if(transfers[_0x245d68['uniqueid']]){transfers[_0x245d68['uniqueid']][_0xb087('0xf')]=!![];transfers[_0x245d68['uniqueid']][_0xb087('0x36')]=utils[_0xb087('0x1a')]();transfers[_0x245d68[_0xb087('0x4')]][_0xb087('0x26')]=utils['diffTime'](transfers[_0x245d68['uniqueid']][_0xb087('0x36')],transfers[_0x245d68['uniqueid']][_0xb087('0x32')]);transfers[_0x245d68[_0xb087('0x4')]][_0xb087('0x22')]=_0xb087('0x58');transfers[_0x245d68[_0xb087('0x4')]]['lastevent']=_0xb087('0x37');utils[_0xb087('0x1d')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x245d68['uniqueid'],transfers[_0x245d68[_0xb087('0x4')]][_0xb087('0x7')],transfers[_0x245d68[_0xb087('0x4')]][_0xb087('0x22')],transfers[_0x245d68[_0xb087('0x4')]][_0xb087('0xb')]));writeDB(transfers[_0x245d68['uniqueid']],!![]);}if(agents[_0x245d68[_0xb087('0x4')]]&&agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x32')]){agents[_0x245d68[_0xb087('0x4')]][_0xb087('0xf')]=!![];agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x36')]=utils['now']();agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x26')]=utils[_0xb087('0x59')](agents[_0x245d68['uniqueid']][_0xb087('0x36')],agents[_0x245d68['uniqueid']][_0xb087('0x32')]);agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x22')]=agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x3c')]?_0xb087('0x3c'):'agent';agents[_0x245d68['uniqueid']][_0xb087('0xb')]=_0xb087('0x37');utils['info'](util[_0xb087('0x2')](_0xb087('0x55'),_0x245d68[_0xb087('0x4')],agents[_0x245d68[_0xb087('0x4')]][_0xb087('0x7')],agents[_0x245d68[_0xb087('0x4')]]['reason'],agents[_0x245d68[_0xb087('0x4')]][_0xb087('0xb')]));writeDB(agents[_0x245d68[_0xb087('0x4')]]);}}catch(_0x3114ce){utils[_0xb087('0x1f')](util[_0xb087('0x2')](_0xb087('0x52'),_0x245d68[_0xb087('0x4')]),_0x3114ce);}};
\ No newline at end of file
index a8f544e..369bb6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x444e=['sipcallid','newexten','[%s][calls][newexten]','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','noop','execif','gotoif','application','appdata','util','FAILED','NO\x20ANSWER','ANSWERED','BUSY','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','[%s][calls][newchannel]','OutgoingSpoolFailed','context','exten','error','newstate','debug','isNil','channelstate','info','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','now','linkedid','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','diffTime','starttime','billableseconds','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstartAt','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','variable','xmd-phone','xmd-callerid-preview','xmd-callerid','xmd-queue','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x444e,0x138));var _0xe444=function(_0x3cba18,_0x102e50){_0x3cba18=_0x3cba18-0x0;var _0x22c545=_0x444e[_0x3cba18];return _0x22c545;};'use strict';var _=require('lodash');var util=require(_0xe444('0x0'));var utils=require('./utils');var dispositions=['NO\x20ANSWER','FAILED',_0xe444('0x1'),_0xe444('0x2'),_0xe444('0x2'),'NO\x20ANSWER',_0xe444('0x3'),_0xe444('0x4'),'FAILED',_0xe444('0x1'),_0xe444('0x1')];var channels={};function writeDB(_0x58722a){utils['info'](util[_0xe444('0x5')](_0xe444('0x6'),_0x58722a[_0xe444('0x7')],_0x58722a[_0xe444('0x8')],_0x58722a[_0xe444('0x9')],_0x58722a[_0xe444('0xa')],_0x58722a[_0xe444('0xb')],_0x58722a[_0xe444('0xc')],_0x58722a[_0xe444('0xd')],_0x58722a[_0xe444('0xe')]));if(_0x58722a[_0xe444('0xf')]){utils[_0xe444('0x10')](_0x58722a[_0xe444('0xf')])[_0xe444('0x11')](function(_0x3ccd25){if(_0x3ccd25){_0x58722a[_0xe444('0x12')]=_0x3ccd25['id'];}utils[_0xe444('0x13')](_0xe444('0x14'),_0x58722a);});}else{utils['request'](_0xe444('0x14'),_0x58722a);}if(channels[_0x58722a['uniqueid']]){delete channels[_0x58722a[_0xe444('0x7')]];}}exports['newchannel']=function(_0x35a58a){try{utils['debug'](util[_0xe444('0x5')](_0xe444('0x15'),_0x35a58a[_0xe444('0x7')]),_0x35a58a);if(_0x35a58a['uniqueid']==_0x35a58a['linkedid']&&_0x35a58a[_0xe444('0x8')]!=_0xe444('0x16')){utils['info'](util['format']('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x35a58a[_0xe444('0x7')],_0x35a58a[_0xe444('0x17')],_0x35a58a[_0xe444('0x18')]));channels[_0x35a58a['uniqueid']]={'uniqueid':_0x35a58a[_0xe444('0x7')],'accountcode':_0x35a58a['accountcode'],'source':_0x35a58a[_0xe444('0xc')],'destination':_0x35a58a[_0xe444('0x18')],'destinationcontext':_0x35a58a[_0xe444('0x17')],'channel':_0x35a58a[_0xe444('0x8')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xe444('0x2'),'amaflags':'DOCUMENTATION'};}}catch(_0x502625){utils[_0xe444('0x19')](util[_0xe444('0x5')](_0xe444('0x15'),_0x35a58a['uniqueid']),_0x502625);}};exports[_0xe444('0x1a')]=function(_0x3a7ee3){try{utils[_0xe444('0x1b')](util[_0xe444('0x5')]('[%s][calls][newstate]',_0x3a7ee3['uniqueid']),_0x3a7ee3);if(!_[_0xe444('0x1c')](channels[_0x3a7ee3[_0xe444('0x7')]])&&_0x3a7ee3[_0xe444('0x1d')]==0x6){utils[_0xe444('0x1e')](util['format'](_0xe444('0x1f'),_0x3a7ee3[_0xe444('0x7')],_0x3a7ee3[_0xe444('0x17')],_0x3a7ee3[_0xe444('0x8')]));if(_['isNil'](channels[_0x3a7ee3[_0xe444('0x7')]][_0xe444('0x20')])){channels[_0x3a7ee3[_0xe444('0x7')]]['systemanswertime']=utils[_0xe444('0x21')]();}}else if(!_['isNil'](channels[_0x3a7ee3[_0xe444('0x22')]])&&_0x3a7ee3['channelstate']==0x6&&_0x3a7ee3[_0xe444('0x17')]!='transfer'){utils[_0xe444('0x1e')](util[_0xe444('0x5')](_0xe444('0x23'),_0x3a7ee3[_0xe444('0x7')],_0x3a7ee3['linkedid'],_0x3a7ee3[_0xe444('0x17')],_0x3a7ee3[_0xe444('0x8')]));channels[_0x3a7ee3[_0xe444('0x22')]]['accountcode']=_0x3a7ee3[_0xe444('0xf')];channels[_0x3a7ee3[_0xe444('0x22')]][_0xe444('0x24')]=_0x3a7ee3['channel'];if(_[_0xe444('0x1c')](channels[_0x3a7ee3['linkedid']][_0xe444('0x25')])){channels[_0x3a7ee3[_0xe444('0x22')]][_0xe444('0x25')]=utils[_0xe444('0x21')]();}channels[_0x3a7ee3['linkedid']]['disposition']=dispositions[_[_0xe444('0x26')](_0x3a7ee3[_0xe444('0x1d')])]||'ANSWERED';}}catch(_0x5db2b4){utils[_0xe444('0x19')](util['format']('[%s][calls][newstate]',_0x3a7ee3['uniqueid']),_0x5db2b4);}};exports[_0xe444('0x27')]=function(_0x3cae3a){try{if(!_[_0xe444('0x1c')](channels[_0x3cae3a['uniqueid']])){utils[_0xe444('0x1b')](util['format'](_0xe444('0x28'),_0x3cae3a[_0xe444('0x7')]),_0x3cae3a);if(_[_0xe444('0x1c')](channels[_0x3cae3a[_0xe444('0x7')]][_0xe444('0x29')])){channels[_0x3cae3a[_0xe444('0x7')]]['callerid']=_0x3cae3a[_0xe444('0x2a')]+'\x20<'+_0x3cae3a[_0xe444('0xc')]+'>';}utils['info'](util[_0xe444('0x5')](_0xe444('0x2b'),_0x3cae3a[_0xe444('0x7')],channels[_0x3cae3a[_0xe444('0x7')]]['callerid'],_0x3cae3a[_0xe444('0x2c')]));channels[_0x3cae3a[_0xe444('0x7')]][_0xe444('0x2d')]=utils[_0xe444('0x21')]();channels[_0x3cae3a[_0xe444('0x7')]]['duration']=utils[_0xe444('0x2e')](channels[_0x3cae3a[_0xe444('0x7')]]['endtime'],channels[_0x3cae3a[_0xe444('0x7')]][_0xe444('0x2f')]);channels[_0x3cae3a[_0xe444('0x7')]][_0xe444('0x30')]=channels[_0x3cae3a['uniqueid']][_0xe444('0x25')]?utils[_0xe444('0x2e')](channels[_0x3cae3a['uniqueid']][_0xe444('0x2d')],channels[_0x3cae3a[_0xe444('0x7')]]['answertime']):0x0;writeDB(channels[_0x3cae3a[_0xe444('0x7')]]);}}catch(_0x10f435){utils[_0xe444('0x19')](util[_0xe444('0x5')](_0xe444('0x28'),_0x3cae3a[_0xe444('0x7')]),_0x10f435);}};exports['attendedtransfer']=function(_0x37fd48){try{if(!_[_0xe444('0x1c')](channels[_0x37fd48[_0xe444('0x31')]])){utils['debug'](util[_0xe444('0x5')]('[%s][calls][attendedtransfer]',_0x37fd48['origtransfereruniqueid']),_0x37fd48);if(channels[_0x37fd48['localtwolinkedid']]['channel']==_0x37fd48[_0xe444('0x32')]){utils['info'](util[_0xe444('0x5')](_0xe444('0x33'),_0x37fd48[_0xe444('0x34')],_0x37fd48[_0xe444('0x31')],_0x37fd48[_0xe444('0x35')]));channels[_0x37fd48['localtwolinkedid']][_0xe444('0x24')]=_0x37fd48[_0xe444('0x35')];channels[_0x37fd48[_0xe444('0x31')]][_0xe444('0x36')]=_0xe444('0x37');}else if(channels[_0x37fd48[_0xe444('0x31')]][_0xe444('0x8')]=_0x37fd48[_0xe444('0x38')]){utils[_0xe444('0x1e')](util[_0xe444('0x5')](_0xe444('0x33'),_0x37fd48[_0xe444('0x34')],_0x37fd48['localtwolinkedid'],_0x37fd48[_0xe444('0x39')]));channels[_0x37fd48[_0xe444('0x31')]][_0xe444('0x24')]=_0x37fd48[_0xe444('0x39')];channels[_0x37fd48[_0xe444('0x31')]][_0xe444('0x36')]=_0xe444('0x37');}}}catch(_0x2ddc58){utils[_0xe444('0x19')](util[_0xe444('0x5')]('[%s][calls][attendedtransfer]',_0x37fd48[_0xe444('0x34')]),_0x2ddc58);}};exports['musiconholdstart']=function(_0x33499b){try{if(!_['isNil'](channels[_0x33499b['uniqueid']])){utils['debug'](util[_0xe444('0x5')]('[%s][calls][musiconholdstart]',_0x33499b['uniqueid']),_0x33499b);channels[_0x33499b[_0xe444('0x7')]]['musiconholdstartAt']=utils[_0xe444('0x21')]();utils[_0xe444('0x1e')](util[_0xe444('0x5')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x33499b['uniqueid'],channels[_0x33499b[_0xe444('0x7')]][_0xe444('0x3a')]));}}catch(_0x349880){utils[_0xe444('0x19')](util['format'](_0xe444('0x3b'),_0x33499b['uniqueid']),_0x349880);}};exports[_0xe444('0x3c')]=function(_0x8fac09){try{if(!_['isNil'](channels[_0x8fac09[_0xe444('0x7')]])){utils[_0xe444('0x1b')](util[_0xe444('0x5')](_0xe444('0x3d'),_0x8fac09[_0xe444('0x7')]),_0x8fac09);if(!_[_0xe444('0x1c')](channels[_0x8fac09['uniqueid']][_0xe444('0x3a')])){channels[_0x8fac09[_0xe444('0x7')]]['mohtime']+=utils['diffTime'](utils[_0xe444('0x21')](),channels[_0x8fac09[_0xe444('0x7')]][_0xe444('0x3a')]);utils[_0xe444('0x1e')](util[_0xe444('0x5')](_0xe444('0x3e'),_0x8fac09[_0xe444('0x7')],channels[_0x8fac09[_0xe444('0x7')]]['mohtime']));delete channels[_0x8fac09[_0xe444('0x7')]][_0xe444('0x3a')];}}}catch(_0x2fb09a){utils[_0xe444('0x19')](util['format'](_0xe444('0x3d'),_0x8fac09['uniqueid']),_0x2fb09a);}};exports[_0xe444('0x3f')]=function(_0x1c34af){try{if(!_['isNil'](channels[_0x1c34af[_0xe444('0x7')]])){utils[_0xe444('0x1b')](util[_0xe444('0x5')](_0xe444('0x40'),_0x1c34af[_0xe444('0x7')]),_0x1c34af);if(!_[_0xe444('0x1c')](_0x1c34af['variable'][_0xe444('0x41')])){utils[_0xe444('0x1e')](util[_0xe444('0x5')](_0xe444('0x42'),_0x1c34af[_0xe444('0x7')],_0x1c34af[_0xe444('0x43')]));channels[_0x1c34af[_0xe444('0x7')]][_0xe444('0x44')]=_0x1c34af['value'];}if(!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')][_0xe444('0x46')])){utils[_0xe444('0x1e')](util[_0xe444('0x5')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x1c34af['uniqueid'],_0x1c34af['value']));channels[_0x1c34af[_0xe444('0x7')]]['destination']=_0x1c34af[_0xe444('0x43')];channels[_0x1c34af['uniqueid']]['callerid']='\x22'+_0x1c34af[_0xe444('0x43')]+'\x22\x20<'+_0x1c34af['value']+'>';}if(!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')][_0xe444('0x47')])||!_[_0xe444('0x1c')](_0x1c34af['variable'][_0xe444('0x48')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x1c34af[_0xe444('0x7')],!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')]['xmd-callerid-preview'])?_0xe444('0x47'):_0xe444('0x48'),_0x1c34af['value']));channels[_0x1c34af['uniqueid']][_0xe444('0x29')]=_0x1c34af[_0xe444('0x43')];}if(!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')][_0xe444('0x49')])||!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')][_0xe444('0x4a')])){utils['info'](util[_0xe444('0x5')](_0xe444('0x4b'),_0x1c34af[_0xe444('0x7')],!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')][_0xe444('0x49')])?'xmd-queue':_0xe444('0x4a'),_0x1c34af[_0xe444('0x43')]));channels[_0x1c34af[_0xe444('0x7')]]['lastapplication']=_0xe444('0x4c');channels[_0x1c34af[_0xe444('0x7')]][_0xe444('0x4d')]=_0x1c34af[_0xe444('0x43')];channels[_0x1c34af[_0xe444('0x7')]][_0xe444('0x9')]=!![];}if(!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')][_0xe444('0x4e')])){utils['info'](util['format'](_0xe444('0x4f'),_0x1c34af[_0xe444('0x7')],_0x1c34af[_0xe444('0x43')]));channels[_0x1c34af[_0xe444('0x7')]]['ContactId']=_0x1c34af[_0xe444('0x43')];}if(!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')][_0xe444('0x50')])){utils['info'](util[_0xe444('0x5')](_0xe444('0x51'),_0x1c34af[_0xe444('0x7')],_0x1c34af[_0xe444('0x43')]));channels[_0x1c34af[_0xe444('0x7')]]['type']=_0x1c34af['value'];}if(!_['isNil'](_0x1c34af[_0xe444('0x45')][_0xe444('0x52')])){utils['info'](util[_0xe444('0x5')](_0xe444('0x53'),_0x1c34af[_0xe444('0x7')],_0x1c34af[_0xe444('0x43')]));channels[_0x1c34af[_0xe444('0x7')]]['routeid']=_0x1c34af[_0xe444('0x43')];}if(!_[_0xe444('0x1c')](_0x1c34af[_0xe444('0x45')]['sipcallid'])){utils[_0xe444('0x1e')](util[_0xe444('0x5')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x1c34af[_0xe444('0x7')],_0x1c34af[_0xe444('0x43')]));channels[_0x1c34af[_0xe444('0x7')]][_0xe444('0x54')]=_0x1c34af[_0xe444('0x43')];}}}catch(_0x440754){utils[_0xe444('0x19')](util[_0xe444('0x5')]('[%s][calls][varset]',_0x1c34af[_0xe444('0x7')]),_0x440754);}};exports[_0xe444('0x55')]=function(_0x1a1494){try{if(!_['isNil'](channels[_0x1a1494[_0xe444('0x7')]])){utils['debug'](util[_0xe444('0x5')](_0xe444('0x56'),_0x1a1494[_0xe444('0x7')]),_0x1a1494);utils['info'](util[_0xe444('0x5')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x1a1494[_0xe444('0x7')],_0x1a1494['application'],_0x1a1494['appdata']));if(_0x1a1494['application'][_0xe444('0x57')]()==_0xe444('0x58')&&_[_0xe444('0x59')](_0x1a1494['appdata']['toLowerCase'](),_0xe444('0x5a'))){var _0x40e1ed=_0x1a1494['appdata'][_0xe444('0x5b')]('=');var _0x4e729b=_0x40e1ed[0x0][_0xe444('0x5c')](_0x40e1ed[0x0][_0xe444('0x5d')]('(')+0x1,_0x40e1ed[0x0][_0xe444('0x5d')](')'));var _0x3b7410=_0x40e1ed[0x1];channels[_0x1a1494[_0xe444('0x7')]][_0x4e729b]=_0x3b7410;}if(!_['includes']([_0xe444('0x27'),_0xe444('0x5e'),_0xe444('0x5f'),_0xe444('0x58'),_0xe444('0x60')],_0x1a1494[_0xe444('0x61')]['toLowerCase']())){channels[_0x1a1494[_0xe444('0x7')]]['lastapplication']=_0x1a1494[_0xe444('0x61')];channels[_0x1a1494[_0xe444('0x7')]][_0xe444('0x4d')]=_0x1a1494[_0xe444('0x62')];}}}catch(_0x2da0b5){utils[_0xe444('0x19')](util['format'](_0xe444('0x56'),_0x1a1494['uniqueid']),_0x2da0b5);}};
\ No newline at end of file
+var _0x5b35=['xmd-queue','lastapplication','Queue','lastdata','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','cdr','substring','lastIndexOf','noop','execif','gotoif','[%s][calls][newexten]','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','calleridnum','connectedlinenum','lastevent','getUserByInternal','accountcode','UserId','CreateVoiceCallReport','request','uniqueid','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','context','DOCUMENTATION','error','[%s][calls][newstate]','isNil','channelstate','systemanswertime','now','transfer','destinationchannel','answertime','disposition','toNumber','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','duration','diffTime','billableseconds','endtime','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][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','xmcs-queue'];(function(_0x241b49,_0x42f57a){var _0x4c1f03=function(_0x2819a3){while(--_0x2819a3){_0x241b49['push'](_0x241b49['shift']());}};_0x4c1f03(++_0x42f57a);}(_0x5b35,0x15a));var _0x55b3=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x5b35[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x55b3('0x0'));var util=require(_0x55b3('0x1'));var utils=require(_0x55b3('0x2'));var dispositions=[_0x55b3('0x3'),_0x55b3('0x4'),_0x55b3('0x4'),_0x55b3('0x3'),_0x55b3('0x3'),_0x55b3('0x3'),_0x55b3('0x5'),_0x55b3('0x6'),_0x55b3('0x4'),_0x55b3('0x4'),'FAILED'];var channels={};function writeDB(_0x589a9e){utils[_0x55b3('0x7')](util[_0x55b3('0x8')](_0x55b3('0x9'),_0x589a9e['uniqueid'],_0x589a9e[_0x55b3('0xa')],_0x589a9e['queue'],_0x589a9e['membername'],_0x589a9e['interface'],_0x589a9e[_0x55b3('0xb')],_0x589a9e[_0x55b3('0xc')],_0x589a9e[_0x55b3('0xd')]));if(_0x589a9e['accountcode']){utils[_0x55b3('0xe')](_0x589a9e[_0x55b3('0xf')])['then'](function(_0x35859e){if(_0x35859e){_0x589a9e[_0x55b3('0x10')]=_0x35859e['id'];}utils['request'](_0x55b3('0x11'),_0x589a9e);});}else{utils[_0x55b3('0x12')](_0x55b3('0x11'),_0x589a9e);}if(channels[_0x589a9e['uniqueid']]){delete channels[_0x589a9e[_0x55b3('0x13')]];}}exports[_0x55b3('0x14')]=function(_0x4fa72f){try{utils[_0x55b3('0x15')](util[_0x55b3('0x8')](_0x55b3('0x16'),_0x4fa72f['uniqueid']),_0x4fa72f);if(_0x4fa72f[_0x55b3('0x13')]==_0x4fa72f[_0x55b3('0x17')]&&_0x4fa72f[_0x55b3('0xa')]!=_0x55b3('0x18')){utils['info'](util[_0x55b3('0x8')](_0x55b3('0x19'),_0x4fa72f['uniqueid'],_0x4fa72f['context'],_0x4fa72f[_0x55b3('0x1a')]));channels[_0x4fa72f['uniqueid']]={'uniqueid':_0x4fa72f['uniqueid'],'accountcode':_0x4fa72f['accountcode'],'source':_0x4fa72f[_0x55b3('0xb')],'destination':_0x4fa72f['exten'],'destinationcontext':_0x4fa72f[_0x55b3('0x1b')],'channel':_0x4fa72f[_0x55b3('0xa')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0x55b3('0x1c')};}}catch(_0x1dac5b){utils[_0x55b3('0x1d')](util['format'](_0x55b3('0x16'),_0x4fa72f[_0x55b3('0x13')]),_0x1dac5b);}};exports['newstate']=function(_0x2ff952){try{utils[_0x55b3('0x15')](util[_0x55b3('0x8')](_0x55b3('0x1e'),_0x2ff952[_0x55b3('0x13')]),_0x2ff952);if(!_[_0x55b3('0x1f')](channels[_0x2ff952[_0x55b3('0x13')]])&&_0x2ff952[_0x55b3('0x20')]==0x6){utils['info'](util[_0x55b3('0x8')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x2ff952[_0x55b3('0x13')],_0x2ff952[_0x55b3('0x1b')],_0x2ff952['channel']));if(_[_0x55b3('0x1f')](channels[_0x2ff952[_0x55b3('0x13')]]['systemanswertime'])){channels[_0x2ff952[_0x55b3('0x13')]][_0x55b3('0x21')]=utils[_0x55b3('0x22')]();}}else if(!_[_0x55b3('0x1f')](channels[_0x2ff952[_0x55b3('0x17')]])&&_0x2ff952[_0x55b3('0x20')]==0x6&&_0x2ff952[_0x55b3('0x1b')]!=_0x55b3('0x23')){utils[_0x55b3('0x7')](util['format']('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x2ff952[_0x55b3('0x13')],_0x2ff952['linkedid'],_0x2ff952[_0x55b3('0x1b')],_0x2ff952[_0x55b3('0xa')]));channels[_0x2ff952[_0x55b3('0x17')]]['accountcode']=_0x2ff952[_0x55b3('0xf')];channels[_0x2ff952[_0x55b3('0x17')]][_0x55b3('0x24')]=_0x2ff952[_0x55b3('0xa')];if(_[_0x55b3('0x1f')](channels[_0x2ff952[_0x55b3('0x17')]][_0x55b3('0x25')])){channels[_0x2ff952[_0x55b3('0x17')]][_0x55b3('0x25')]=utils[_0x55b3('0x22')]();}channels[_0x2ff952[_0x55b3('0x17')]][_0x55b3('0x26')]=dispositions[_[_0x55b3('0x27')](_0x2ff952[_0x55b3('0x20')])]||_0x55b3('0x5');}}catch(_0x35389c){utils[_0x55b3('0x1d')](util['format'](_0x55b3('0x1e'),_0x2ff952[_0x55b3('0x13')]),_0x35389c);}};exports[_0x55b3('0x28')]=function(_0x23f0d3){try{if(!_[_0x55b3('0x1f')](channels[_0x23f0d3[_0x55b3('0x13')]])){utils[_0x55b3('0x15')](util['format']('[%s][calls][hangup]',_0x23f0d3[_0x55b3('0x13')]),_0x23f0d3);if(_[_0x55b3('0x1f')](channels[_0x23f0d3['uniqueid']]['callerid'])){channels[_0x23f0d3[_0x55b3('0x13')]][_0x55b3('0x29')]=_0x23f0d3[_0x55b3('0x2a')]+'\x20<'+_0x23f0d3[_0x55b3('0xb')]+'>';}utils['info'](util[_0x55b3('0x8')](_0x55b3('0x2b'),_0x23f0d3['uniqueid'],channels[_0x23f0d3['uniqueid']][_0x55b3('0x29')],_0x23f0d3[_0x55b3('0x2c')]));channels[_0x23f0d3[_0x55b3('0x13')]]['endtime']=utils[_0x55b3('0x22')]();channels[_0x23f0d3[_0x55b3('0x13')]][_0x55b3('0x2d')]=utils[_0x55b3('0x2e')](channels[_0x23f0d3[_0x55b3('0x13')]]['endtime'],channels[_0x23f0d3[_0x55b3('0x13')]]['starttime']);channels[_0x23f0d3['uniqueid']][_0x55b3('0x2f')]=channels[_0x23f0d3[_0x55b3('0x13')]][_0x55b3('0x25')]?utils[_0x55b3('0x2e')](channels[_0x23f0d3[_0x55b3('0x13')]][_0x55b3('0x30')],channels[_0x23f0d3['uniqueid']]['answertime']):0x0;writeDB(channels[_0x23f0d3[_0x55b3('0x13')]]);}}catch(_0x52e211){utils['error'](util['format'](_0x55b3('0x31'),_0x23f0d3['uniqueid']),_0x52e211);}};exports[_0x55b3('0x32')]=function(_0x587886){try{if(!_[_0x55b3('0x1f')](channels[_0x587886[_0x55b3('0x33')]])){utils[_0x55b3('0x15')](util[_0x55b3('0x8')](_0x55b3('0x34'),_0x587886['origtransfereruniqueid']),_0x587886);if(channels[_0x587886[_0x55b3('0x33')]][_0x55b3('0xa')]==_0x587886[_0x55b3('0x35')]){utils[_0x55b3('0x7')](util['format'](_0x55b3('0x36'),_0x587886[_0x55b3('0x37')],_0x587886[_0x55b3('0x33')],_0x587886[_0x55b3('0x38')]));channels[_0x587886[_0x55b3('0x33')]][_0x55b3('0x24')]=_0x587886[_0x55b3('0x38')];channels[_0x587886[_0x55b3('0x33')]][_0x55b3('0x39')]=_0x55b3('0x3a');}else if(channels[_0x587886['localtwolinkedid']]['channel']=_0x587886['transfertargetchannel']){utils['info'](util[_0x55b3('0x8')](_0x55b3('0x36'),_0x587886[_0x55b3('0x37')],_0x587886[_0x55b3('0x33')],_0x587886[_0x55b3('0x3b')]));channels[_0x587886['localtwolinkedid']][_0x55b3('0x24')]=_0x587886[_0x55b3('0x3b')];channels[_0x587886[_0x55b3('0x33')]][_0x55b3('0x39')]=_0x55b3('0x3a');}}}catch(_0x32f99b){utils['error'](util[_0x55b3('0x8')]('[%s][calls][attendedtransfer]',_0x587886[_0x55b3('0x37')]),_0x32f99b);}};exports[_0x55b3('0x3c')]=function(_0x40790a){try{if(!_['isNil'](channels[_0x40790a[_0x55b3('0x13')]])){utils[_0x55b3('0x15')](util[_0x55b3('0x8')]('[%s][calls][musiconholdstart]',_0x40790a[_0x55b3('0x13')]),_0x40790a);channels[_0x40790a[_0x55b3('0x13')]]['musiconholdstartAt']=utils[_0x55b3('0x22')]();utils[_0x55b3('0x7')](util[_0x55b3('0x8')](_0x55b3('0x3d'),_0x40790a[_0x55b3('0x13')],channels[_0x40790a[_0x55b3('0x13')]][_0x55b3('0x3e')]));}}catch(_0x3d5a79){utils[_0x55b3('0x1d')](util[_0x55b3('0x8')](_0x55b3('0x3f'),_0x40790a[_0x55b3('0x13')]),_0x3d5a79);}};exports[_0x55b3('0x40')]=function(_0x1a2bd2){try{if(!_[_0x55b3('0x1f')](channels[_0x1a2bd2[_0x55b3('0x13')]])){utils[_0x55b3('0x15')](util['format'](_0x55b3('0x41'),_0x1a2bd2[_0x55b3('0x13')]),_0x1a2bd2);if(!_[_0x55b3('0x1f')](channels[_0x1a2bd2[_0x55b3('0x13')]][_0x55b3('0x3e')])){channels[_0x1a2bd2['uniqueid']][_0x55b3('0x42')]+=utils[_0x55b3('0x2e')](utils['now'](),channels[_0x1a2bd2[_0x55b3('0x13')]][_0x55b3('0x3e')]);utils[_0x55b3('0x7')](util[_0x55b3('0x8')](_0x55b3('0x43'),_0x1a2bd2[_0x55b3('0x13')],channels[_0x1a2bd2[_0x55b3('0x13')]][_0x55b3('0x42')]));delete channels[_0x1a2bd2[_0x55b3('0x13')]][_0x55b3('0x3e')];}}}catch(_0x12551c){utils['error'](util[_0x55b3('0x8')](_0x55b3('0x41'),_0x1a2bd2[_0x55b3('0x13')]),_0x12551c);}};exports[_0x55b3('0x44')]=function(_0x532010){try{if(!_[_0x55b3('0x1f')](channels[_0x532010[_0x55b3('0x13')]])){utils[_0x55b3('0x15')](util[_0x55b3('0x8')](_0x55b3('0x45'),_0x532010[_0x55b3('0x13')]),_0x532010);if(!_[_0x55b3('0x1f')](_0x532010['variable'][_0x55b3('0x46')])){utils[_0x55b3('0x7')](util['format']('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x532010[_0x55b3('0x13')],_0x532010[_0x55b3('0x47')]));channels[_0x532010['uniqueid']][_0x55b3('0x48')]=_0x532010[_0x55b3('0x47')];}if(!_[_0x55b3('0x1f')](_0x532010[_0x55b3('0x49')][_0x55b3('0x4a')])){utils[_0x55b3('0x7')](util['format'](_0x55b3('0x4b'),_0x532010['uniqueid'],_0x532010[_0x55b3('0x47')]));channels[_0x532010[_0x55b3('0x13')]][_0x55b3('0x4c')]=_0x532010[_0x55b3('0x47')];channels[_0x532010[_0x55b3('0x13')]][_0x55b3('0x29')]='\x22'+_0x532010['value']+_0x55b3('0x4d')+_0x532010[_0x55b3('0x47')]+'>';}if(!_[_0x55b3('0x1f')](_0x532010[_0x55b3('0x49')][_0x55b3('0x4e')])||!_[_0x55b3('0x1f')](_0x532010[_0x55b3('0x49')][_0x55b3('0x4f')])){utils['info'](util[_0x55b3('0x8')](_0x55b3('0x50'),_0x532010[_0x55b3('0x13')],!_[_0x55b3('0x1f')](_0x532010[_0x55b3('0x49')][_0x55b3('0x4e')])?_0x55b3('0x4e'):_0x55b3('0x4f'),_0x532010['value']));channels[_0x532010[_0x55b3('0x13')]][_0x55b3('0x29')]=_0x532010['value'];}if(!_[_0x55b3('0x1f')](_0x532010[_0x55b3('0x49')]['xmd-queue'])||!_[_0x55b3('0x1f')](_0x532010[_0x55b3('0x49')][_0x55b3('0x51')])){utils[_0x55b3('0x7')](util[_0x55b3('0x8')](_0x55b3('0x50'),_0x532010[_0x55b3('0x13')],!_[_0x55b3('0x1f')](_0x532010[_0x55b3('0x49')][_0x55b3('0x52')])?'xmd-queue':'xmcs-queue',_0x532010[_0x55b3('0x47')]));channels[_0x532010[_0x55b3('0x13')]][_0x55b3('0x53')]=_0x55b3('0x54');channels[_0x532010[_0x55b3('0x13')]][_0x55b3('0x55')]=_0x532010[_0x55b3('0x47')];channels[_0x532010['uniqueid']][_0x55b3('0x56')]=!![];}if(!_[_0x55b3('0x1f')](_0x532010['variable'][_0x55b3('0x57')])){utils[_0x55b3('0x7')](util[_0x55b3('0x8')](_0x55b3('0x58'),_0x532010['uniqueid'],_0x532010[_0x55b3('0x47')]));channels[_0x532010[_0x55b3('0x13')]][_0x55b3('0x59')]=_0x532010['value'];}if(!_[_0x55b3('0x1f')](_0x532010['variable']['xmd-cdrtype'])){utils[_0x55b3('0x7')](util['format'](_0x55b3('0x5a'),_0x532010[_0x55b3('0x13')],_0x532010[_0x55b3('0x47')]));channels[_0x532010[_0x55b3('0x13')]][_0x55b3('0x5b')]=_0x532010['value'];}if(!_['isNil'](_0x532010[_0x55b3('0x49')][_0x55b3('0x5c')])){utils['info'](util[_0x55b3('0x8')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x532010[_0x55b3('0x13')],_0x532010['value']));channels[_0x532010[_0x55b3('0x13')]][_0x55b3('0x5d')]=_0x532010[_0x55b3('0x47')];}if(!_[_0x55b3('0x1f')](_0x532010[_0x55b3('0x49')][_0x55b3('0x5e')])){utils[_0x55b3('0x7')](util[_0x55b3('0x8')](_0x55b3('0x5f'),_0x532010[_0x55b3('0x13')],_0x532010[_0x55b3('0x47')]));channels[_0x532010['uniqueid']]['sipcallid']=_0x532010[_0x55b3('0x47')];}}}catch(_0x96eb58){utils['error'](util[_0x55b3('0x8')](_0x55b3('0x45'),_0x532010[_0x55b3('0x13')]),_0x96eb58);}};exports['newexten']=function(_0x1f30c4){try{if(!_[_0x55b3('0x1f')](channels[_0x1f30c4[_0x55b3('0x13')]])){utils[_0x55b3('0x15')](util[_0x55b3('0x8')]('[%s][calls][newexten]',_0x1f30c4['uniqueid']),_0x1f30c4);utils[_0x55b3('0x7')](util['format'](_0x55b3('0x60'),_0x1f30c4['uniqueid'],_0x1f30c4[_0x55b3('0x61')],_0x1f30c4[_0x55b3('0x62')]));if(_0x1f30c4[_0x55b3('0x61')][_0x55b3('0x63')]()=='set'&&_['startsWith'](_0x1f30c4['appdata']['toLowerCase'](),_0x55b3('0x64'))){var _0x23a85e=_0x1f30c4[_0x55b3('0x62')]['split']('=');var _0x17d12c=_0x23a85e[0x0][_0x55b3('0x65')](_0x23a85e[0x0]['lastIndexOf']('(')+0x1,_0x23a85e[0x0][_0x55b3('0x66')](')'));var _0x42dc5f=_0x23a85e[0x1];channels[_0x1f30c4[_0x55b3('0x13')]][_0x17d12c]=_0x42dc5f;}if(!_['includes']([_0x55b3('0x28'),_0x55b3('0x67'),_0x55b3('0x68'),'set',_0x55b3('0x69')],_0x1f30c4[_0x55b3('0x61')]['toLowerCase']())){channels[_0x1f30c4[_0x55b3('0x13')]][_0x55b3('0x53')]=_0x1f30c4[_0x55b3('0x61')];channels[_0x1f30c4[_0x55b3('0x13')]][_0x55b3('0x55')]=_0x1f30c4[_0x55b3('0x62')];}}}catch(_0x289cf3){utils['error'](util[_0x55b3('0x8')](_0x55b3('0x6a'),_0x1f30c4[_0x55b3('0x13')]),_0x289cf3);}};
\ No newline at end of file
index 09403b5..890979c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a4e=['close','[core]\x20close','managerevent','./utils','info','[core]\x20connected','shutdown','fullybooted','[core]\x20fullybooted','error'];(function(_0x101094,_0x5d3900){var _0x3d6d75=function(_0x10aa02){while(--_0x10aa02){_0x101094['push'](_0x101094['shift']());}};_0x3d6d75(++_0x5d3900);}(_0x0a4e,0xad));var _0xe0a4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0a4e[_0x3dd15e];return _0x231fd0;};'use strict';var utils=require(_0xe0a4('0x0'));exports['connect']=function(){utils[_0xe0a4('0x1')](_0xe0a4('0x2'));};exports[_0xe0a4('0x3')]=function(){utils[_0xe0a4('0x1')]('[core]\x20shutdown');};exports[_0xe0a4('0x4')]=function(){utils[_0xe0a4('0x1')](_0xe0a4('0x5'));};exports[_0xe0a4('0x6')]=function(_0x51872c){utils[_0xe0a4('0x6')]('[core]\x20error',_0x51872c);};exports[_0xe0a4('0x7')]=function(){utils['info'](_0xe0a4('0x8'));};exports[_0xe0a4('0x9')]=function(_0xbc5881){};
\ No newline at end of file
+var _0x2dc3=['[core]\x20shutdown','fullybooted','info','[core]\x20fullybooted','error','close','./utils','shutdown'];(function(_0x372590,_0x1ebb65){var _0x21abe6=function(_0xce83f4){while(--_0xce83f4){_0x372590['push'](_0x372590['shift']());}};_0x21abe6(++_0x1ebb65);}(_0x2dc3,0x16e));var _0x32dc=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x2dc3[_0x2dafbe];return _0x58a45a;};'use strict';var utils=require(_0x32dc('0x0'));exports['connect']=function(){utils['info']('[core]\x20connected');};exports[_0x32dc('0x1')]=function(){utils['info'](_0x32dc('0x2'));};exports[_0x32dc('0x3')]=function(){utils[_0x32dc('0x4')](_0x32dc('0x5'));};exports[_0x32dc('0x6')]=function(_0x3c5d06){utils[_0x32dc('0x6')]('[core]\x20error',_0x3c5d06);};exports[_0x32dc('0x7')]=function(){utils['info']('[core]\x20close');};exports['managerevent']=function(_0x14b99c){};
\ No newline at end of file
index 0eca13a..f7a84aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2140=['varset','[%s][dials][varset]','isNil','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','error','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','dialstatus','ANSWER','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','diffTime','holdtime','endtime','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','dialstring','calleridnum','CreateVoiceDialReport','debug','[%s][dials][newexten]','uniqueid','[%s][dials][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','startsWith','cdr(routeid)'];(function(_0x17a46d,_0x520721){var _0x5897d1=function(_0x3e4468){while(--_0x3e4468){_0x17a46d['push'](_0x17a46d['shift']());}};_0x5897d1(++_0x520721);}(_0x2140,0x1d6));var _0x0214=function(_0xa944e2,_0x3092ca){_0xa944e2=_0xa944e2-0x0;var _0x3d352f=_0x2140[_0xa944e2];return _0x3d352f;};'use strict';var _=require(_0x0214('0x0'));var util=require(_0x0214('0x1'));var utils=require(_0x0214('0x2'));var dials={};function writeDB(_0x5ec590){utils[_0x0214('0x3')](util[_0x0214('0x4')](_0x0214('0x5'),_0x5ec590['uniqueid'],_0x5ec590[_0x0214('0x6')],_0x5ec590[_0x0214('0x7')],_0x5ec590[_0x0214('0x8')],_0x5ec590['connectedlinenum'],_0x5ec590['dialstatus']));utils['request'](_0x0214('0x9'),_0x5ec590);delete dials[_0x5ec590['uniqueid']];}exports['newexten']=function(_0x197e3b){try{utils[_0x0214('0xa')](util[_0x0214('0x4')](_0x0214('0xb'),_0x197e3b[_0x0214('0xc')]),_0x197e3b);utils[_0x0214('0x3')](util[_0x0214('0x4')](_0x0214('0xd'),_0x197e3b[_0x0214('0xc')],_0x197e3b['application'],_0x197e3b[_0x0214('0xe')]));if(_0x197e3b[_0x0214('0xf')][_0x0214('0x10')]()==_0x0214('0x11')&&_[_0x0214('0x12')](_0x197e3b[_0x0214('0xe')][_0x0214('0x10')](),_0x0214('0x13'))){var _0x161fbb=_0x197e3b[_0x0214('0xe')]['split']('=');dials[_0x197e3b[_0x0214('0xc')]]={'routeId':_0x161fbb[0x1]};}}catch(_0x4b9a17){utils['error'](util[_0x0214('0x4')]('[%s][dials][newexten]',_0x197e3b['uniqueid']),_0x4b9a17);}};exports[_0x0214('0x14')]=function(_0x36c2d0){try{utils[_0x0214('0xa')](util[_0x0214('0x4')](_0x0214('0x15'),_0x36c2d0['uniqueid']),_0x36c2d0);if(!_[_0x0214('0x16')](_0x36c2d0['variable'][_0x0214('0x17')])){utils['info'](util[_0x0214('0x4')](_0x0214('0x18'),_0x36c2d0[_0x0214('0xc')],_0x36c2d0['value']));dials[_0x36c2d0[_0x0214('0xc')]]={'routeId':_0x36c2d0['value']};}}catch(_0x31b3ae){utils[_0x0214('0x19')](util['format']('[%s][dials][varset]',_0x36c2d0[_0x0214('0xc')]),_0x31b3ae);}};exports[_0x0214('0x1a')]=function(_0x53ca83){try{if(!_['isNil'](dials[_0x53ca83['uniqueid']])){utils[_0x0214('0xa')](util['format'](_0x0214('0x1b'),_0x53ca83[_0x0214('0xc')]),_0x53ca83);dials[_0x53ca83[_0x0214('0xc')]]=_[_0x0214('0x1c')](dials[_0x53ca83['uniqueid']],_0x53ca83);dials[_0x53ca83[_0x0214('0xc')]][_0x0214('0x1d')]=utils[_0x0214('0x1e')]();dials[_0x53ca83[_0x0214('0xc')]][_0x0214('0x1f')]='called';utils['info'](util[_0x0214('0x4')](_0x0214('0x20'),_0x53ca83[_0x0214('0xc')],dials[_0x53ca83['uniqueid']][_0x0214('0x1d')]));}}catch(_0x5465b0){utils[_0x0214('0x19')](util['format'](_0x0214('0x1b'),_0x53ca83[_0x0214('0xc')]),_0x5465b0);}};exports[_0x0214('0x21')]=function(_0x33bdb2){try{if(!_[_0x0214('0x16')](dials[_0x33bdb2[_0x0214('0xc')]])){utils[_0x0214('0xa')](util[_0x0214('0x4')](_0x0214('0x22'),_0x33bdb2[_0x0214('0xc')]),_0x33bdb2);dials[_0x33bdb2[_0x0214('0xc')]][_0x0214('0x23')]=_0x33bdb2[_0x0214('0x23')];if(_0x33bdb2[_0x0214('0x23')]==_0x0214('0x24')){dials[_0x33bdb2[_0x0214('0xc')]]=_[_0x0214('0x1c')](dials[_0x33bdb2[_0x0214('0xc')]],_0x33bdb2);dials[_0x33bdb2[_0x0214('0xc')]][_0x0214('0x25')]=utils[_0x0214('0x1e')]();dials[_0x33bdb2['uniqueid']][_0x0214('0x1f')]=_0x0214('0x26');utils['info'](util[_0x0214('0x4')](_0x0214('0x27'),_0x33bdb2[_0x0214('0xc')],_0x33bdb2[_0x0214('0x23')],dials[_0x33bdb2[_0x0214('0xc')]][_0x0214('0x25')]));}else{utils['info'](util[_0x0214('0x4')](_0x0214('0x28'),_0x33bdb2[_0x0214('0xc')],_0x33bdb2[_0x0214('0x23')]));}}}catch(_0x5787d2){utils['error'](util['format'](_0x0214('0x22'),_0x33bdb2['uniqueid']),_0x5787d2);}};exports['hangup']=function(_0x2a0b9b){try{if(!_[_0x0214('0x16')](dials[_0x2a0b9b[_0x0214('0xc')]])){utils[_0x0214('0xa')](util['format'](_0x0214('0x29'),_0x2a0b9b[_0x0214('0xc')]),_0x2a0b9b);utils[_0x0214('0x3')](util[_0x0214('0x4')](_0x0214('0x2a'),_0x2a0b9b[_0x0214('0xc')],_0x2a0b9b[_0x0214('0x8')],_0x2a0b9b[_0x0214('0x2b')],_0x2a0b9b[_0x0214('0x2c')]));dials[_0x2a0b9b['uniqueid']]=_[_0x0214('0x1c')](dials[_0x2a0b9b[_0x0214('0xc')]],{'endtime':utils[_0x0214('0x1e')](),'lastevent':_0x0214('0x2d')});dials[_0x2a0b9b[_0x0214('0xc')]]['duration']=utils[_0x0214('0x2e')](dials[_0x2a0b9b[_0x0214('0xc')]]['endtime'],dials[_0x2a0b9b[_0x0214('0xc')]][_0x0214('0x1d')]);dials[_0x2a0b9b[_0x0214('0xc')]][_0x0214('0x2f')]=utils[_0x0214('0x2e')](dials[_0x2a0b9b[_0x0214('0xc')]][_0x0214('0x25')]||dials[_0x2a0b9b[_0x0214('0xc')]][_0x0214('0x30')],dials[_0x2a0b9b[_0x0214('0xc')]][_0x0214('0x1d')]);dials[_0x2a0b9b['uniqueid']]['billableseconds']=dials[_0x2a0b9b[_0x0214('0xc')]][_0x0214('0x25')]?utils[_0x0214('0x2e')](dials[_0x2a0b9b[_0x0214('0xc')]][_0x0214('0x30')],dials[_0x2a0b9b[_0x0214('0xc')]][_0x0214('0x25')]):0x0;writeDB(dials[_0x2a0b9b['uniqueid']]);}}catch(_0x5eaeb4){utils[_0x0214('0x19')](util[_0x0214('0x4')]('[%s][dials][hangup]',_0x2a0b9b[_0x0214('0xc')]),_0x5eaeb4);}};
\ No newline at end of file
+var _0xe5b3=['channel','dialstring','calleridnum','request','CreateVoiceDialReport','uniqueid','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','split','error','varset','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][varset]','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','isNil','[%s][dials][dialend]','dialstatus','ANSWER','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','diffTime','endtime','holdtime','billableseconds','./utils','info','format'];(function(_0x6a1e55,_0x3f22b7){var _0x31fe0a=function(_0x4c5bf6){while(--_0x4c5bf6){_0x6a1e55['push'](_0x6a1e55['shift']());}};_0x31fe0a(++_0x3f22b7);}(_0xe5b3,0xc1));var _0x3e5b=function(_0x2b28bb,_0x2b1ca7){_0x2b28bb=_0x2b28bb-0x0;var _0x1b4b59=_0xe5b3[_0x2b28bb];return _0x1b4b59;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x3e5b('0x0'));var dials={};function writeDB(_0x10601d){utils[_0x3e5b('0x1')](util[_0x3e5b('0x2')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x10601d['uniqueid'],_0x10601d[_0x3e5b('0x3')],_0x10601d[_0x3e5b('0x4')],_0x10601d[_0x3e5b('0x5')],_0x10601d['connectedlinenum'],_0x10601d['dialstatus']));utils[_0x3e5b('0x6')](_0x3e5b('0x7'),_0x10601d);delete dials[_0x10601d[_0x3e5b('0x8')]];}exports[_0x3e5b('0x9')]=function(_0x975694){try{utils[_0x3e5b('0xa')](util[_0x3e5b('0x2')](_0x3e5b('0xb'),_0x975694[_0x3e5b('0x8')]),_0x975694);utils[_0x3e5b('0x1')](util[_0x3e5b('0x2')](_0x3e5b('0xc'),_0x975694[_0x3e5b('0x8')],_0x975694[_0x3e5b('0xd')],_0x975694[_0x3e5b('0xe')]));if(_0x975694[_0x3e5b('0xd')][_0x3e5b('0xf')]()==_0x3e5b('0x10')&&_[_0x3e5b('0x11')](_0x975694['appdata'][_0x3e5b('0xf')](),'cdr(routeid)')){var _0x15ed1d=_0x975694['appdata'][_0x3e5b('0x12')]('=');dials[_0x975694[_0x3e5b('0x8')]]={'routeId':_0x15ed1d[0x1]};}}catch(_0x26f2e9){utils[_0x3e5b('0x13')](util['format'](_0x3e5b('0xb'),_0x975694[_0x3e5b('0x8')]),_0x26f2e9);}};exports[_0x3e5b('0x14')]=function(_0x127a0d){try{utils[_0x3e5b('0xa')](util[_0x3e5b('0x2')]('[%s][dials][varset]',_0x127a0d['uniqueid']),_0x127a0d);if(!_['isNil'](_0x127a0d[_0x3e5b('0x15')][_0x3e5b('0x16')])){utils['info'](util[_0x3e5b('0x2')](_0x3e5b('0x17'),_0x127a0d['uniqueid'],_0x127a0d[_0x3e5b('0x18')]));dials[_0x127a0d['uniqueid']]={'routeId':_0x127a0d['value']};}}catch(_0x16ac30){utils[_0x3e5b('0x13')](util['format'](_0x3e5b('0x19'),_0x127a0d[_0x3e5b('0x8')]),_0x16ac30);}};exports[_0x3e5b('0x1a')]=function(_0x20c1ea){try{if(!_['isNil'](dials[_0x20c1ea[_0x3e5b('0x8')]])){utils[_0x3e5b('0xa')](util[_0x3e5b('0x2')](_0x3e5b('0x1b'),_0x20c1ea[_0x3e5b('0x8')]),_0x20c1ea);dials[_0x20c1ea[_0x3e5b('0x8')]]=_[_0x3e5b('0x1c')](dials[_0x20c1ea['uniqueid']],_0x20c1ea);dials[_0x20c1ea[_0x3e5b('0x8')]][_0x3e5b('0x1d')]=utils[_0x3e5b('0x1e')]();dials[_0x20c1ea[_0x3e5b('0x8')]][_0x3e5b('0x1f')]=_0x3e5b('0x20');utils[_0x3e5b('0x1')](util[_0x3e5b('0x2')](_0x3e5b('0x21'),_0x20c1ea[_0x3e5b('0x8')],dials[_0x20c1ea[_0x3e5b('0x8')]][_0x3e5b('0x1d')]));}}catch(_0x34cd1b){utils[_0x3e5b('0x13')](util[_0x3e5b('0x2')](_0x3e5b('0x1b'),_0x20c1ea['uniqueid']),_0x34cd1b);}};exports[_0x3e5b('0x22')]=function(_0x37ab15){try{if(!_[_0x3e5b('0x23')](dials[_0x37ab15[_0x3e5b('0x8')]])){utils['debug'](util[_0x3e5b('0x2')](_0x3e5b('0x24'),_0x37ab15[_0x3e5b('0x8')]),_0x37ab15);dials[_0x37ab15[_0x3e5b('0x8')]][_0x3e5b('0x25')]=_0x37ab15[_0x3e5b('0x25')];if(_0x37ab15[_0x3e5b('0x25')]==_0x3e5b('0x26')){dials[_0x37ab15['uniqueid']]=_[_0x3e5b('0x1c')](dials[_0x37ab15[_0x3e5b('0x8')]],_0x37ab15);dials[_0x37ab15[_0x3e5b('0x8')]][_0x3e5b('0x27')]=utils[_0x3e5b('0x1e')]();dials[_0x37ab15[_0x3e5b('0x8')]]['lastevent']=_0x3e5b('0x28');utils['info'](util[_0x3e5b('0x2')](_0x3e5b('0x29'),_0x37ab15[_0x3e5b('0x8')],_0x37ab15[_0x3e5b('0x25')],dials[_0x37ab15[_0x3e5b('0x8')]][_0x3e5b('0x27')]));}else{utils[_0x3e5b('0x1')](util[_0x3e5b('0x2')](_0x3e5b('0x2a'),_0x37ab15[_0x3e5b('0x8')],_0x37ab15[_0x3e5b('0x25')]));}}}catch(_0xfe54f3){utils[_0x3e5b('0x13')](util[_0x3e5b('0x2')](_0x3e5b('0x24'),_0x37ab15['uniqueid']),_0xfe54f3);}};exports[_0x3e5b('0x2b')]=function(_0x40d0e1){try{if(!_[_0x3e5b('0x23')](dials[_0x40d0e1[_0x3e5b('0x8')]])){utils[_0x3e5b('0xa')](util['format'](_0x3e5b('0x2c'),_0x40d0e1[_0x3e5b('0x8')]),_0x40d0e1);utils[_0x3e5b('0x1')](util[_0x3e5b('0x2')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x40d0e1[_0x3e5b('0x8')],_0x40d0e1[_0x3e5b('0x5')],_0x40d0e1['calleridname'],_0x40d0e1['cause-txt']));dials[_0x40d0e1[_0x3e5b('0x8')]]=_['assign'](dials[_0x40d0e1[_0x3e5b('0x8')]],{'endtime':utils[_0x3e5b('0x1e')](),'lastevent':'complete'});dials[_0x40d0e1['uniqueid']]['duration']=utils[_0x3e5b('0x2d')](dials[_0x40d0e1[_0x3e5b('0x8')]][_0x3e5b('0x2e')],dials[_0x40d0e1[_0x3e5b('0x8')]][_0x3e5b('0x1d')]);dials[_0x40d0e1[_0x3e5b('0x8')]][_0x3e5b('0x2f')]=utils[_0x3e5b('0x2d')](dials[_0x40d0e1['uniqueid']][_0x3e5b('0x27')]||dials[_0x40d0e1[_0x3e5b('0x8')]]['endtime'],dials[_0x40d0e1[_0x3e5b('0x8')]][_0x3e5b('0x1d')]);dials[_0x40d0e1['uniqueid']][_0x3e5b('0x30')]=dials[_0x40d0e1[_0x3e5b('0x8')]][_0x3e5b('0x27')]?utils[_0x3e5b('0x2d')](dials[_0x40d0e1[_0x3e5b('0x8')]][_0x3e5b('0x2e')],dials[_0x40d0e1[_0x3e5b('0x8')]][_0x3e5b('0x27')]):0x0;writeDB(dials[_0x40d0e1[_0x3e5b('0x8')]]);}}catch(_0x3e097b){utils['error'](util[_0x3e5b('0x2')](_0x3e5b('0x2c'),_0x40d0e1[_0x3e5b('0x8')]),_0x3e097b);}};
\ No newline at end of file
index 2d5afed..c425949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ab=['[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','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','[%s][index][varset]','varset','newexten','[%s][index][newexten]','[%s][index][newchannel]','newchannel','[%s][index][dialbegin]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','env','production','local','port','asterisk','password','keepConnected','XDR\x20DISABLED','info','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','agentcalled','uniqueid','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon'];(function(_0x13fd59,_0x2e05b1){var _0x2e6ce7=function(_0x519a4b){while(--_0x519a4b){_0x13fd59['push'](_0x13fd59['shift']());}};_0x2e6ce7(++_0x2e05b1);}(_0x41ab,0xfc));var _0xb41a=function(_0x471e93,_0x2a7085){_0x471e93=_0x471e93-0x0;var _0x289d56=_0x41ab[_0x471e93];return _0x289d56;};var AsteriskManager=require(_0xb41a('0x0'));var config=require(_0xb41a('0x1'));var utils=require(_0xb41a('0x2'));var util=require(_0xb41a('0x3'));var isXDREnabled=config[_0xb41a('0x4')]&&config[_0xb41a('0x4')][_0xb41a('0x5')]?!config['xdr'][_0xb41a('0x5')]:!![];var isProduction=config[_0xb41a('0x6')]===_0xb41a('0x7')||![];var isLocalAsterisk=config[_0xb41a('0x4')]&&config[_0xb41a('0x4')][_0xb41a('0x8')]===!![]||![];var ami=new AsteriskManager(config['asterisk'][_0xb41a('0x9')],config[_0xb41a('0xa')]['ip'],config['asterisk']['username'],config['asterisk'][_0xb41a('0xb')],!![]);ami[_0xb41a('0xc')]();if(!isXDREnabled){utils['info'](_0xb41a('0xd'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xb41a('0xe')]('Asterisk\x20disabled\x20on\x20localhost');}else{var agents=require(_0xb41a('0xf'));var calls=require(_0xb41a('0x10'));var queues=require(_0xb41a('0x11'));var recordings=require(_0xb41a('0x12'));var members=require(_0xb41a('0x13'));var dials=require(_0xb41a('0x14'));var transfers=require(_0xb41a('0x15'));var core=require(_0xb41a('0x16'));ami['on'](_0xb41a('0x17'),core[_0xb41a('0x17')]);ami['on'](_0xb41a('0x18'),core[_0xb41a('0x18')]);ami['on'](_0xb41a('0x19'),core['fullybooted']);ami['on']('error',core[_0xb41a('0x1a')]);ami['on'](_0xb41a('0x1b'),core['close']);ami['on']('managerevent',core[_0xb41a('0x1c')]);ami['on'](_0xb41a('0x1d'),function(_0x3c713c){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x20'),_0x3c713c[_0xb41a('0x21')]),_0x3c713c);members[_0xb41a('0x1d')](_0x3c713c);}catch(_0xdd78ba){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')](_0xb41a('0x20'),_0x3c713c['device']),_0xdd78ba);}});ami['on'](_0xb41a('0x22'),function(_0x5da8b6){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')]('[%s][index][agentcalled]',_0x5da8b6[_0xb41a('0x23')]),_0x5da8b6);agents[_0xb41a('0x22')](_0x5da8b6);}catch(_0x8ac6ed){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')](_0xb41a('0x24'),_0x5da8b6['uniqueid']),_0x8ac6ed);}});ami['on'](_0xb41a('0x25'),function(_0x5a5342){try{utils[_0xb41a('0x1e')](util['format']('[%s][index][agentringnoanswer]',_0x5a5342[_0xb41a('0x23')]),_0x5a5342);agents[_0xb41a('0x25')](_0x5a5342);}catch(_0x23251c){utils[_0xb41a('0x1a')](util['format'](_0xb41a('0x26'),_0x5a5342[_0xb41a('0x23')]),_0x23251c);}});ami['on'](_0xb41a('0x27'),function(_0x70aa12){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x28'),_0x70aa12[_0xb41a('0x23')]),_0x70aa12);agents[_0xb41a('0x27')](_0x70aa12);queues[_0xb41a('0x27')](_0x70aa12);}catch(_0x590e72){utils['error'](util[_0xb41a('0x1f')](_0xb41a('0x28'),_0x70aa12[_0xb41a('0x23')]),_0x590e72);}});ami['on'](_0xb41a('0x29'),function(_0x34286f){try{utils[_0xb41a('0x1e')](util['format']('[%s][index][agentcomplete]',_0x34286f[_0xb41a('0x23')]),_0x34286f);agents[_0xb41a('0x29')](_0x34286f);queues['agentcomplete'](_0x34286f);members[_0xb41a('0x29')](_0x34286f);}catch(_0x273581){utils['error'](util[_0xb41a('0x1f')](_0xb41a('0x2a'),_0x34286f[_0xb41a('0x23')]),_0x273581);}});ami['on']('queuecallerabandon',function(_0x36840b){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')]('[%s][index][queuecallerabandon]',_0x36840b['uniqueid']),_0x36840b);agents[_0xb41a('0x2b')](_0x36840b);queues[_0xb41a('0x2b')](_0x36840b);}catch(_0x573d2d){utils['error'](util[_0xb41a('0x1f')](_0xb41a('0x2c'),_0x36840b[_0xb41a('0x23')]),_0x573d2d);}});ami['on']('queuecallerjoin',function(_0x292db7){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x2d'),_0x292db7['uniqueid']),_0x292db7);queues[_0xb41a('0x2e')](_0x292db7);recordings[_0xb41a('0x2e')](_0x292db7);}catch(_0x438c4f){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')](_0xb41a('0x2d'),_0x292db7[_0xb41a('0x23')]),_0x438c4f);}});ami['on'](_0xb41a('0x2f'),function(_0x1c215e){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x30'),_0x1c215e[_0xb41a('0x23')]),_0x1c215e);queues[_0xb41a('0x2f')](_0x1c215e);}catch(_0xa99164){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')]('[%s][index][queuecallerleave]',_0x1c215e[_0xb41a('0x23')]),_0xa99164);}});ami['on'](_0xb41a('0x31'),function(_0x49d01b){try{utils['debug'](util[_0xb41a('0x1f')]('[%s][index][musiconholdstart]',_0x49d01b['uniqueid']),_0x49d01b);queues[_0xb41a('0x31')](_0x49d01b);calls['musiconholdstart'](_0x49d01b);}catch(_0x58ae3b){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')]('[%s][index][musiconholdstart]',_0x49d01b['uniqueid']),_0x58ae3b);}});ami['on'](_0xb41a('0x32'),function(_0x32e6ce){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x33'),_0x32e6ce[_0xb41a('0x23')]),_0x32e6ce);queues[_0xb41a('0x32')](_0x32e6ce);calls[_0xb41a('0x32')](_0x32e6ce);}catch(_0x57632e){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')]('[%s][index][musiconholdstop]',_0x32e6ce[_0xb41a('0x23')]),_0x57632e);}});ami['on'](_0xb41a('0x34'),function(_0xf130e8){try{utils['debug'](util['format']('[%s][index][newstate]',_0xf130e8[_0xb41a('0x23')]),_0xf130e8);calls[_0xb41a('0x34')](_0xf130e8);recordings['newstate'](_0xf130e8);}catch(_0x3bb37e){utils['error'](util[_0xb41a('0x1f')](_0xb41a('0x35'),_0xf130e8[_0xb41a('0x23')]),_0x3bb37e);}});ami['on'](_0xb41a('0x36'),function(_0x29b7e4){try{utils['debug'](util[_0xb41a('0x1f')](_0xb41a('0x37'),_0x29b7e4[_0xb41a('0x23')]),_0x29b7e4);calls[_0xb41a('0x36')](_0x29b7e4);recordings['hangup'](_0x29b7e4);dials['hangup'](_0x29b7e4);agents[_0xb41a('0x36')](_0x29b7e4);queues[_0xb41a('0x36')](_0x29b7e4);}catch(_0xa306e7){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')]('[%s][index][hangup]',_0x29b7e4[_0xb41a('0x23')]),_0xa306e7);}});ami['on'](_0xb41a('0x38'),function(_0x20bb67){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x39'),_0x20bb67[_0xb41a('0x23')]),_0x20bb67);members[_0xb41a('0x38')](_0x20bb67);}catch(_0x302df0){utils['error'](util[_0xb41a('0x1f')](_0xb41a('0x39'),_0x20bb67['uniqueid']),_0x302df0);}});ami['on']('blindtransfer',function(_0x16dd22){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x3a'),_0x16dd22[_0xb41a('0x23')]),_0x16dd22);queues[_0xb41a('0x3b')](_0x16dd22);agents[_0xb41a('0x3b')](_0x16dd22);transfers[_0xb41a('0x3b')](_0x16dd22);}catch(_0x420cfc){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')](_0xb41a('0x3a'),_0x16dd22['uniqueid']),_0x420cfc);}});ami['on'](_0xb41a('0x3c'),function(_0x4ebf8a){try{utils[_0xb41a('0x1e')](util['format'](_0xb41a('0x3d'),_0x4ebf8a[_0xb41a('0x3e')]),_0x4ebf8a);queues[_0xb41a('0x3c')](_0x4ebf8a);transfers[_0xb41a('0x3c')](_0x4ebf8a);agents['attendedtransfer'](_0x4ebf8a);calls[_0xb41a('0x3c')](_0x4ebf8a);}catch(_0x10ef52){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')](_0xb41a('0x3d'),_0x4ebf8a[_0xb41a('0x3e')]),_0x10ef52);}});ami['on']('varset',function(_0x4a5e63){try{utils[_0xb41a('0x1e')](util['format'](_0xb41a('0x3f'),_0x4a5e63['uniqueid']),_0x4a5e63);queues['varset'](_0x4a5e63);recordings[_0xb41a('0x40')](_0x4a5e63);calls['varset'](_0x4a5e63);dials['varset'](_0x4a5e63);}catch(_0x16c46b){utils['error'](util[_0xb41a('0x1f')]('[%s][index][varset]',_0x4a5e63[_0xb41a('0x23')]),_0x16c46b);}});ami['on'](_0xb41a('0x41'),function(_0x507af0){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x42'),_0x507af0['uniqueid']),_0x507af0);calls[_0xb41a('0x41')](_0x507af0);recordings[_0xb41a('0x41')](_0x507af0);dials[_0xb41a('0x41')](_0x507af0);}catch(_0x7b9fc9){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')](_0xb41a('0x42'),_0x507af0[_0xb41a('0x23')]),_0x7b9fc9);}});ami['on']('newchannel',function(_0x61f7c1){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x43'),_0x61f7c1[_0xb41a('0x23')]),_0x61f7c1);calls[_0xb41a('0x44')](_0x61f7c1);recordings[_0xb41a('0x44')](_0x61f7c1);}catch(_0x159c06){utils[_0xb41a('0x1a')](util[_0xb41a('0x1f')](_0xb41a('0x43'),_0x61f7c1[_0xb41a('0x23')]),_0x159c06);}});ami['on']('dialbegin',function(_0x41ed42){try{utils['debug'](util[_0xb41a('0x1f')](_0xb41a('0x45'),_0x41ed42[_0xb41a('0x23')]),_0x41ed42);dials[_0xb41a('0x46')](_0x41ed42);}catch(_0x1f804f){utils[_0xb41a('0x1a')](util['format'](_0xb41a('0x47'),_0x41ed42[_0xb41a('0x23')]),_0x1f804f);}});ami['on'](_0xb41a('0x48'),function(_0x14057a){try{utils[_0xb41a('0x1e')](util[_0xb41a('0x1f')](_0xb41a('0x49'),_0x14057a[_0xb41a('0x23')]),_0x14057a);dials[_0xb41a('0x48')](_0x14057a);}catch(_0xc9bad5){utils['error'](util[_0xb41a('0x1f')]('[%s][index][dialend]',_0x14057a['uniqueid']),_0xc9bad5);}});}
\ No newline at end of file
+var _0xfadd=['asterisk','username','password','keepConnected','XDR\x20DISABLED','info','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./recordings.controller','./members.controller','./dials.controller','connect','shutdown','fullybooted','close','managerevent','format','[%s][index][devicestatechange]','device','devicestatechange','error','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','attendedtransfer','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','xdr','disabled','env','local'];(function(_0x4bcb3c,_0x192122){var _0xfe09bb=function(_0xcd8ad2){while(--_0xcd8ad2){_0x4bcb3c['push'](_0x4bcb3c['shift']());}};_0xfe09bb(++_0x192122);}(_0xfadd,0x102));var _0xdfad=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfadd[_0x20a584];return _0x4b41a8;};var AsteriskManager=require(_0xdfad('0x0'));var config=require(_0xdfad('0x1'));var utils=require('./utils');var util=require('util');var isXDREnabled=config[_0xdfad('0x2')]&&config['xdr'][_0xdfad('0x3')]?!config[_0xdfad('0x2')][_0xdfad('0x3')]:!![];var isProduction=config[_0xdfad('0x4')]==='production'||![];var isLocalAsterisk=config['xdr']&&config[_0xdfad('0x2')][_0xdfad('0x5')]===!![]||![];var ami=new AsteriskManager(config[_0xdfad('0x6')]['port'],config[_0xdfad('0x6')]['ip'],config[_0xdfad('0x6')][_0xdfad('0x7')],config['asterisk'][_0xdfad('0x8')],!![]);ami[_0xdfad('0x9')]();if(!isXDREnabled){utils['info'](_0xdfad('0xa'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xdfad('0xb')](_0xdfad('0xc'));}else{var agents=require(_0xdfad('0xd'));var calls=require(_0xdfad('0xe'));var queues=require('./queues.controller');var recordings=require(_0xdfad('0xf'));var members=require(_0xdfad('0x10'));var dials=require(_0xdfad('0x11'));var transfers=require('./transfers.controller');var core=require('./core.controller');ami['on'](_0xdfad('0x12'),core[_0xdfad('0x12')]);ami['on'](_0xdfad('0x13'),core[_0xdfad('0x13')]);ami['on'](_0xdfad('0x14'),core[_0xdfad('0x14')]);ami['on']('error',core['error']);ami['on'](_0xdfad('0x15'),core['close']);ami['on'](_0xdfad('0x16'),core['managerevent']);ami['on']('devicestatechange',function(_0x26244c){try{utils['debug'](util[_0xdfad('0x17')](_0xdfad('0x18'),_0x26244c[_0xdfad('0x19')]),_0x26244c);members[_0xdfad('0x1a')](_0x26244c);}catch(_0x58443d){utils[_0xdfad('0x1b')](util['format'](_0xdfad('0x18'),_0x26244c[_0xdfad('0x19')]),_0x58443d);}});ami['on'](_0xdfad('0x1c'),function(_0x33f765){try{utils[_0xdfad('0x1d')](util['format'](_0xdfad('0x1e'),_0x33f765[_0xdfad('0x1f')]),_0x33f765);agents[_0xdfad('0x1c')](_0x33f765);}catch(_0x49dc1a){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')](_0xdfad('0x1e'),_0x33f765[_0xdfad('0x1f')]),_0x49dc1a);}});ami['on'](_0xdfad('0x20'),function(_0x9dad22){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')](_0xdfad('0x21'),_0x9dad22[_0xdfad('0x1f')]),_0x9dad22);agents['agentringnoanswer'](_0x9dad22);}catch(_0x8555ff){utils['error'](util[_0xdfad('0x17')]('[%s][index][agentringnoanswer]',_0x9dad22['uniqueid']),_0x8555ff);}});ami['on'](_0xdfad('0x22'),function(_0x5c838e){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')](_0xdfad('0x23'),_0x5c838e['uniqueid']),_0x5c838e);agents[_0xdfad('0x22')](_0x5c838e);queues[_0xdfad('0x22')](_0x5c838e);}catch(_0x394396){utils['error'](util[_0xdfad('0x17')](_0xdfad('0x23'),_0x5c838e[_0xdfad('0x1f')]),_0x394396);}});ami['on']('agentcomplete',function(_0x4b7161){try{utils['debug'](util[_0xdfad('0x17')](_0xdfad('0x24'),_0x4b7161[_0xdfad('0x1f')]),_0x4b7161);agents[_0xdfad('0x25')](_0x4b7161);queues['agentcomplete'](_0x4b7161);members[_0xdfad('0x25')](_0x4b7161);}catch(_0x52a4ff){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')](_0xdfad('0x24'),_0x4b7161['uniqueid']),_0x52a4ff);}});ami['on'](_0xdfad('0x26'),function(_0x152787){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')](_0xdfad('0x27'),_0x152787[_0xdfad('0x1f')]),_0x152787);agents['queuecallerabandon'](_0x152787);queues[_0xdfad('0x26')](_0x152787);}catch(_0x125484){utils[_0xdfad('0x1b')](util['format'](_0xdfad('0x27'),_0x152787[_0xdfad('0x1f')]),_0x125484);}});ami['on'](_0xdfad('0x28'),function(_0x745c74){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')]('[%s][index][queuecallerjoin]',_0x745c74[_0xdfad('0x1f')]),_0x745c74);queues[_0xdfad('0x28')](_0x745c74);recordings[_0xdfad('0x28')](_0x745c74);}catch(_0x2f4040){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')]('[%s][index][queuecallerjoin]',_0x745c74[_0xdfad('0x1f')]),_0x2f4040);}});ami['on'](_0xdfad('0x29'),function(_0x2ef0cc){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')]('[%s][index][queuecallerleave]',_0x2ef0cc[_0xdfad('0x1f')]),_0x2ef0cc);queues[_0xdfad('0x29')](_0x2ef0cc);}catch(_0x50f8ed){utils[_0xdfad('0x1b')](util['format'](_0xdfad('0x2a'),_0x2ef0cc[_0xdfad('0x1f')]),_0x50f8ed);}});ami['on'](_0xdfad('0x2b'),function(_0x473253){try{utils['debug'](util[_0xdfad('0x17')]('[%s][index][musiconholdstart]',_0x473253[_0xdfad('0x1f')]),_0x473253);queues[_0xdfad('0x2b')](_0x473253);calls[_0xdfad('0x2b')](_0x473253);}catch(_0x5afae3){utils['error'](util[_0xdfad('0x17')]('[%s][index][musiconholdstart]',_0x473253[_0xdfad('0x1f')]),_0x5afae3);}});ami['on'](_0xdfad('0x2c'),function(_0x23c2c8){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')](_0xdfad('0x2d'),_0x23c2c8[_0xdfad('0x1f')]),_0x23c2c8);queues['musiconholdstop'](_0x23c2c8);calls[_0xdfad('0x2c')](_0x23c2c8);}catch(_0x4cddb0){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')](_0xdfad('0x2d'),_0x23c2c8[_0xdfad('0x1f')]),_0x4cddb0);}});ami['on'](_0xdfad('0x2e'),function(_0x3624bc){try{utils['debug'](util[_0xdfad('0x17')](_0xdfad('0x2f'),_0x3624bc[_0xdfad('0x1f')]),_0x3624bc);calls[_0xdfad('0x2e')](_0x3624bc);recordings[_0xdfad('0x2e')](_0x3624bc);}catch(_0x54f104){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')]('[%s][index][newstate]',_0x3624bc['uniqueid']),_0x54f104);}});ami['on'](_0xdfad('0x30'),function(_0x3bafab){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')]('[%s][index][hangup]',_0x3bafab[_0xdfad('0x1f')]),_0x3bafab);calls[_0xdfad('0x30')](_0x3bafab);recordings[_0xdfad('0x30')](_0x3bafab);dials[_0xdfad('0x30')](_0x3bafab);agents[_0xdfad('0x30')](_0x3bafab);queues[_0xdfad('0x30')](_0x3bafab);}catch(_0x2fe1ab){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')](_0xdfad('0x31'),_0x3bafab[_0xdfad('0x1f')]),_0x2fe1ab);}});ami['on'](_0xdfad('0x32'),function(_0x1b6486){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')]('[%s][index][cdr]',_0x1b6486[_0xdfad('0x1f')]),_0x1b6486);members[_0xdfad('0x32')](_0x1b6486);}catch(_0x5ce196){utils['error'](util[_0xdfad('0x17')](_0xdfad('0x33'),_0x1b6486[_0xdfad('0x1f')]),_0x5ce196);}});ami['on'](_0xdfad('0x34'),function(_0x32bc93){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')]('[%s][index][blindtransfer]',_0x32bc93['uniqueid']),_0x32bc93);queues['blindtransfer'](_0x32bc93);agents[_0xdfad('0x34')](_0x32bc93);transfers['blindtransfer'](_0x32bc93);}catch(_0x57462b){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')]('[%s][index][blindtransfer]',_0x32bc93[_0xdfad('0x1f')]),_0x57462b);}});ami['on'](_0xdfad('0x35'),function(_0x1dd409){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')]('[%s][index][attendedtransfer]',_0x1dd409[_0xdfad('0x36')]),_0x1dd409);queues[_0xdfad('0x35')](_0x1dd409);transfers[_0xdfad('0x35')](_0x1dd409);agents[_0xdfad('0x35')](_0x1dd409);calls[_0xdfad('0x35')](_0x1dd409);}catch(_0x38220e){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')]('[%s][index][attendedtransfer]',_0x1dd409[_0xdfad('0x36')]),_0x38220e);}});ami['on'](_0xdfad('0x37'),function(_0x30a106){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')](_0xdfad('0x38'),_0x30a106[_0xdfad('0x1f')]),_0x30a106);queues[_0xdfad('0x37')](_0x30a106);recordings['varset'](_0x30a106);calls['varset'](_0x30a106);dials[_0xdfad('0x37')](_0x30a106);}catch(_0x4942a9){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')](_0xdfad('0x38'),_0x30a106['uniqueid']),_0x4942a9);}});ami['on'](_0xdfad('0x39'),function(_0x28f59b){try{utils['debug'](util[_0xdfad('0x17')](_0xdfad('0x3a'),_0x28f59b[_0xdfad('0x1f')]),_0x28f59b);calls[_0xdfad('0x39')](_0x28f59b);recordings[_0xdfad('0x39')](_0x28f59b);dials[_0xdfad('0x39')](_0x28f59b);}catch(_0x46913d){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')](_0xdfad('0x3a'),_0x28f59b[_0xdfad('0x1f')]),_0x46913d);}});ami['on'](_0xdfad('0x3b'),function(_0x210494){try{utils['debug'](util[_0xdfad('0x17')](_0xdfad('0x3c'),_0x210494[_0xdfad('0x1f')]),_0x210494);calls[_0xdfad('0x3b')](_0x210494);recordings[_0xdfad('0x3b')](_0x210494);}catch(_0x405b84){utils['error'](util[_0xdfad('0x17')]('[%s][index][newchannel]',_0x210494[_0xdfad('0x1f')]),_0x405b84);}});ami['on'](_0xdfad('0x3d'),function(_0x5a3492){try{utils['debug'](util['format'](_0xdfad('0x3e'),_0x5a3492[_0xdfad('0x1f')]),_0x5a3492);dials['dialbegin'](_0x5a3492);}catch(_0x3eb8cf){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')](_0xdfad('0x3f'),_0x5a3492[_0xdfad('0x1f')]),_0x3eb8cf);}});ami['on'](_0xdfad('0x40'),function(_0x13252e){try{utils[_0xdfad('0x1d')](util[_0xdfad('0x17')](_0xdfad('0x41'),_0x13252e[_0xdfad('0x1f')]),_0x13252e);dials[_0xdfad('0x40')](_0x13252e);}catch(_0x480709){utils[_0xdfad('0x1b')](util[_0xdfad('0x17')]('[%s][index][dialend]',_0x13252e[_0xdfad('0x1f')]),_0x480709);}});}
\ No newline at end of file
index 7aaa50d..b28d1ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa882=['startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','state','INUSE','BUSY','TALKING','now','agent','isNil','exitAt','enterAt','[%s][members][agentcomplete]','queue','assign','cdr','[%s][members][cdr]','channel','data1','source','data3','destination','destinationchannel','split','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','lodash','util','./utils','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','data2','type','getUserByInterface','then','name','internal','request','CreateMemberReport','error','[%s][members][writeDB]','some'];(function(_0x720e20,_0x1a827){var _0xfef46e=function(_0x4b3c31){while(--_0x4b3c31){_0x720e20['push'](_0x720e20['shift']());}};_0xfef46e(++_0x1a827);}(_0xa882,0x135));var _0x2a88=function(_0x5ac84c,_0x287781){_0x5ac84c=_0x5ac84c-0x0;var _0x3c53d2=_0xa882[_0x5ac84c];return _0x3c53d2;};'use strict';var _=require(_0x2a88('0x0'));var util=require(_0x2a88('0x1'));var utils=require(_0x2a88('0x2'));var members={};var exclude=['Local/_attended@transfer',_0x2a88('0x3')];function writeDB(_0x5b37f0){utils[_0x2a88('0x4')](util[_0x2a88('0x5')](_0x2a88('0x6'),_0x5b37f0[_0x2a88('0x7')],_0x5b37f0[_0x2a88('0x8')],_0x5b37f0['channel'],_0x5b37f0[_0x2a88('0x9')],_0x5b37f0['membername'],_0x5b37f0[_0x2a88('0xa')]));if(_0x5b37f0['interface']){utils[_0x2a88('0xb')](_0x5b37f0[_0x2a88('0x8')])[_0x2a88('0xc')](function(_0x3ed5bd){if(_0x3ed5bd){_0x5b37f0['membername']=_0x3ed5bd[_0x2a88('0xd')];_0x5b37f0[_0x2a88('0xe')]=_0x3ed5bd[_0x2a88('0xe')];utils[_0x2a88('0xf')](_0x2a88('0x10'),_0x5b37f0);}else{utils['getUserByName'](_0x5b37f0[_0x2a88('0x8')]['split']('/')[0x1])[_0x2a88('0xc')](function(_0x355bc3){if(_0x355bc3){_0x5b37f0['membername']=_0x355bc3['name'];_0x5b37f0[_0x2a88('0xe')]=_0x355bc3[_0x2a88('0xe')];utils[_0x2a88('0xf')]('CreateMemberReport',_0x5b37f0);}});}})['catch'](function(_0x1a38c5){utils[_0x2a88('0x11')](util[_0x2a88('0x5')](_0x2a88('0x12'),_0x5b37f0['uniqueid']),_0x1a38c5);});}delete members[_0x5b37f0[_0x2a88('0x8')]];}function startsWith(_0x44bc85,_0x257e6d){return _[_0x2a88('0x13')](_0x44bc85,function(_0x2ebfe3){return _[_0x2a88('0x14')](_0x257e6d,_0x2ebfe3);});}exports[_0x2a88('0x15')]=function(_0x28ecef){try{utils[_0x2a88('0x16')](util[_0x2a88('0x5')](_0x2a88('0x17'),members[_0x28ecef[_0x2a88('0x18')]]?members[_0x28ecef['device']][_0x2a88('0x7')]:_0x28ecef[_0x2a88('0x18')]),_0x28ecef);utils[_0x2a88('0x4')](util['format']('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x28ecef[_0x2a88('0x18')]]?members[_0x28ecef['device']]['uniqueid']:_0x28ecef['device'],_0x28ecef[_0x2a88('0x19')],_0x28ecef['device']));switch(_0x28ecef[_0x2a88('0x19')]){case _0x2a88('0x1a'):case _0x2a88('0x1b'):if(!startsWith(exclude,_0x28ecef['device'])){members[_0x28ecef['device']]={'channel':'voice','interface':_0x28ecef[_0x2a88('0x18')],'type':_0x2a88('0x1c'),'enterAt':utils[_0x2a88('0x1d')](),'role':_0x2a88('0x1e')};}break;case'NOT_INUSE':if(!_[_0x2a88('0x1f')](members[_0x28ecef['device']])){members[_0x28ecef['device']][_0x2a88('0x20')]=utils[_0x2a88('0x1d')]();members[_0x28ecef[_0x2a88('0x18')]]['duration']=utils['diffTime'](members[_0x28ecef[_0x2a88('0x18')]]['exitAt'],members[_0x28ecef[_0x2a88('0x18')]][_0x2a88('0x21')]);if(members[_0x28ecef[_0x2a88('0x18')]][_0x2a88('0x7')]){writeDB(members[_0x28ecef[_0x2a88('0x18')]]);}}break;default:break;}}catch(_0x29df69){utils['error'](util[_0x2a88('0x5')](_0x2a88('0x17'),members[_0x28ecef[_0x2a88('0x18')]]?members[_0x28ecef[_0x2a88('0x18')]][_0x2a88('0x7')]:_0x28ecef[_0x2a88('0x18')]),_0x29df69);}};exports['agentcomplete']=function(_0xe43f46){try{if(!_[_0x2a88('0x1f')](members[_0xe43f46['interface']])){utils[_0x2a88('0x16')](util[_0x2a88('0x5')](_0x2a88('0x22'),_0xe43f46[_0x2a88('0x7')]),_0xe43f46);utils[_0x2a88('0x4')](util[_0x2a88('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0xe43f46[_0x2a88('0x7')],_0xe43f46['interface'],_0xe43f46[_0x2a88('0x23')]));members[_0xe43f46['interface']]=_[_0x2a88('0x24')](members[_0xe43f46[_0x2a88('0x8')]],{'data4':_0xe43f46['queue'],'uniqueid':_0xe43f46[_0x2a88('0x7')]});}}catch(_0x59b3e6){utils['error'](util[_0x2a88('0x5')](_0x2a88('0x22'),_0xe43f46[_0x2a88('0x7')]),_0x59b3e6);}};exports[_0x2a88('0x25')]=function(_0x7bff94){try{utils['debug'](util[_0x2a88('0x5')](_0x2a88('0x26'),_0x7bff94[_0x2a88('0x7')]),_0x7bff94);if(_0x7bff94[_0x2a88('0x27')]){var _0x4c8754=_0x7bff94[_0x2a88('0x27')]['split']('-')[0x0];if(!_['isNil'](members[_0x4c8754])){members[_0x4c8754]=_['assign'](members[_0x4c8754],{'data1':members[_0x4c8754][_0x2a88('0x28')]||_0x7bff94['type'],'data2':members[_0x4c8754][_0x2a88('0x9')]||_0x7bff94[_0x2a88('0x29')],'data3':members[_0x4c8754][_0x2a88('0x2a')]||_0x7bff94[_0x2a88('0x2b')],'uniqueid':members[_0x4c8754][_0x2a88('0x7')]||_0x7bff94[_0x2a88('0x7')]});utils[_0x2a88('0x4')](util[_0x2a88('0x5')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x7bff94[_0x2a88('0x7')],members[_0x4c8754][_0x2a88('0x28')],members[_0x4c8754][_0x2a88('0x9')],members[_0x4c8754][_0x2a88('0x2a')]));if(members[_0x4c8754][_0x2a88('0x20')]){writeDB(members[_0x4c8754]);}}}if(_0x7bff94[_0x2a88('0x2c')]){var _0x4cda94=_0x7bff94[_0x2a88('0x2c')][_0x2a88('0x2d')]('-')[0x0];if(!_[_0x2a88('0x1f')](members[_0x4cda94])){members[_0x4cda94]=_[_0x2a88('0x24')](members[_0x4cda94],{'data1':members[_0x4cda94][_0x2a88('0x28')]||_0x7bff94[_0x2a88('0xa')],'data2':members[_0x4cda94]['data2']||_0x7bff94[_0x2a88('0x29')],'data3':members[_0x4cda94]['data3']||_0x7bff94[_0x2a88('0x2b')],'uniqueid':members[_0x4cda94][_0x2a88('0x7')]||_0x7bff94[_0x2a88('0x7')]});utils[_0x2a88('0x4')](util['format'](_0x2a88('0x2e'),_0x7bff94[_0x2a88('0x7')],members[_0x4cda94][_0x2a88('0x28')],members[_0x4cda94]['data2'],members[_0x4cda94][_0x2a88('0x2a')]));if(members[_0x4cda94][_0x2a88('0x20')]){writeDB(members[_0x4cda94]);}}}}catch(_0x26a943){utils['error'](util['format'](_0x2a88('0x26'),_0x7bff94[_0x2a88('0x7')]),_0x26a943);}};
\ No newline at end of file
+var _0x3e8e=['[%s][members][cdr]','source','data3','data1','destinationchannel','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','util','./utils','Local/_attended@transfer','Queue:','info','format','interface','channel','data2','membername','type','name','internal','request','CreateMemberReport','getUserByName','split','then','[%s][members][writeDB]','uniqueid','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','agent','NOT_INUSE','isNil','exitAt','now','duration','diffTime','error','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr'];(function(_0x186953,_0x7f2629){var _0x493989=function(_0x2f796b){while(--_0x2f796b){_0x186953['push'](_0x186953['shift']());}};_0x493989(++_0x7f2629);}(_0x3e8e,0x106));var _0xe3e8=function(_0x58872b,_0x160525){_0x58872b=_0x58872b-0x0;var _0x43ee45=_0x3e8e[_0x58872b];return _0x43ee45;};'use strict';var _=require('lodash');var util=require(_0xe3e8('0x0'));var utils=require(_0xe3e8('0x1'));var members={};var exclude=[_0xe3e8('0x2'),_0xe3e8('0x3')];function writeDB(_0x421254){utils[_0xe3e8('0x4')](util[_0xe3e8('0x5')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x421254['uniqueid'],_0x421254[_0xe3e8('0x6')],_0x421254[_0xe3e8('0x7')],_0x421254[_0xe3e8('0x8')],_0x421254[_0xe3e8('0x9')],_0x421254[_0xe3e8('0xa')]));if(_0x421254[_0xe3e8('0x6')]){utils['getUserByInterface'](_0x421254[_0xe3e8('0x6')])['then'](function(_0x4d8759){if(_0x4d8759){_0x421254[_0xe3e8('0x9')]=_0x4d8759[_0xe3e8('0xb')];_0x421254['internal']=_0x4d8759[_0xe3e8('0xc')];utils[_0xe3e8('0xd')](_0xe3e8('0xe'),_0x421254);}else{utils[_0xe3e8('0xf')](_0x421254[_0xe3e8('0x6')][_0xe3e8('0x10')]('/')[0x1])[_0xe3e8('0x11')](function(_0x54ac89){if(_0x54ac89){_0x421254[_0xe3e8('0x9')]=_0x54ac89['name'];_0x421254[_0xe3e8('0xc')]=_0x54ac89[_0xe3e8('0xc')];utils['request'](_0xe3e8('0xe'),_0x421254);}});}})['catch'](function(_0x58b19b){utils['error'](util[_0xe3e8('0x5')](_0xe3e8('0x12'),_0x421254[_0xe3e8('0x13')]),_0x58b19b);});}delete members[_0x421254[_0xe3e8('0x6')]];}function startsWith(_0x4324f1,_0x5ded97){return _['some'](_0x4324f1,function(_0x4f95c6){return _[_0xe3e8('0x14')](_0x5ded97,_0x4f95c6);});}exports[_0xe3e8('0x15')]=function(_0x5455a8){try{utils[_0xe3e8('0x16')](util[_0xe3e8('0x5')](_0xe3e8('0x17'),members[_0x5455a8[_0xe3e8('0x18')]]?members[_0x5455a8[_0xe3e8('0x18')]][_0xe3e8('0x13')]:_0x5455a8[_0xe3e8('0x18')]),_0x5455a8);utils[_0xe3e8('0x4')](util[_0xe3e8('0x5')](_0xe3e8('0x19'),members[_0x5455a8[_0xe3e8('0x18')]]?members[_0x5455a8[_0xe3e8('0x18')]][_0xe3e8('0x13')]:_0x5455a8[_0xe3e8('0x18')],_0x5455a8[_0xe3e8('0x1a')],_0x5455a8[_0xe3e8('0x18')]));switch(_0x5455a8[_0xe3e8('0x1a')]){case'INUSE':case _0xe3e8('0x1b'):if(!startsWith(exclude,_0x5455a8[_0xe3e8('0x18')])){members[_0x5455a8[_0xe3e8('0x18')]]={'channel':_0xe3e8('0x1c'),'interface':_0x5455a8[_0xe3e8('0x18')],'type':_0xe3e8('0x1d'),'enterAt':utils['now'](),'role':_0xe3e8('0x1e')};}break;case _0xe3e8('0x1f'):if(!_[_0xe3e8('0x20')](members[_0x5455a8['device']])){members[_0x5455a8['device']][_0xe3e8('0x21')]=utils[_0xe3e8('0x22')]();members[_0x5455a8['device']][_0xe3e8('0x23')]=utils[_0xe3e8('0x24')](members[_0x5455a8[_0xe3e8('0x18')]][_0xe3e8('0x21')],members[_0x5455a8['device']]['enterAt']);if(members[_0x5455a8['device']]['uniqueid']){writeDB(members[_0x5455a8[_0xe3e8('0x18')]]);}}break;default:break;}}catch(_0x14a093){utils[_0xe3e8('0x25')](util['format']('[%s][members][devicestatechange]',members[_0x5455a8['device']]?members[_0x5455a8[_0xe3e8('0x18')]][_0xe3e8('0x13')]:_0x5455a8[_0xe3e8('0x18')]),_0x14a093);}};exports[_0xe3e8('0x26')]=function(_0x14f144){try{if(!_['isNil'](members[_0x14f144[_0xe3e8('0x6')]])){utils[_0xe3e8('0x16')](util['format'](_0xe3e8('0x27'),_0x14f144[_0xe3e8('0x13')]),_0x14f144);utils['info'](util[_0xe3e8('0x5')](_0xe3e8('0x28'),_0x14f144[_0xe3e8('0x13')],_0x14f144['interface'],_0x14f144[_0xe3e8('0x29')]));members[_0x14f144[_0xe3e8('0x6')]]=_[_0xe3e8('0x2a')](members[_0x14f144['interface']],{'data4':_0x14f144[_0xe3e8('0x29')],'uniqueid':_0x14f144['uniqueid']});}}catch(_0x1b794e){utils[_0xe3e8('0x25')](util[_0xe3e8('0x5')](_0xe3e8('0x27'),_0x14f144[_0xe3e8('0x13')]),_0x1b794e);}};exports[_0xe3e8('0x2b')]=function(_0x2b9537){try{utils[_0xe3e8('0x16')](util['format'](_0xe3e8('0x2c'),_0x2b9537[_0xe3e8('0x13')]),_0x2b9537);if(_0x2b9537['channel']){var _0x50430f=_0x2b9537[_0xe3e8('0x7')][_0xe3e8('0x10')]('-')[0x0];if(!_[_0xe3e8('0x20')](members[_0x50430f])){members[_0x50430f]=_['assign'](members[_0x50430f],{'data1':members[_0x50430f]['data1']||_0x2b9537[_0xe3e8('0xa')],'data2':members[_0x50430f][_0xe3e8('0x8')]||_0x2b9537[_0xe3e8('0x2d')],'data3':members[_0x50430f][_0xe3e8('0x2e')]||_0x2b9537['destination'],'uniqueid':members[_0x50430f][_0xe3e8('0x13')]||_0x2b9537[_0xe3e8('0x13')]});utils[_0xe3e8('0x4')](util[_0xe3e8('0x5')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x2b9537[_0xe3e8('0x13')],members[_0x50430f][_0xe3e8('0x2f')],members[_0x50430f]['data2'],members[_0x50430f][_0xe3e8('0x2e')]));if(members[_0x50430f][_0xe3e8('0x21')]){writeDB(members[_0x50430f]);}}}if(_0x2b9537[_0xe3e8('0x30')]){var _0x30049f=_0x2b9537['destinationchannel']['split']('-')[0x0];if(!_[_0xe3e8('0x20')](members[_0x30049f])){members[_0x30049f]=_[_0xe3e8('0x2a')](members[_0x30049f],{'data1':members[_0x30049f][_0xe3e8('0x2f')]||_0x2b9537[_0xe3e8('0xa')],'data2':members[_0x30049f][_0xe3e8('0x8')]||_0x2b9537[_0xe3e8('0x2d')],'data3':members[_0x30049f][_0xe3e8('0x2e')]||_0x2b9537[_0xe3e8('0x31')],'uniqueid':members[_0x30049f][_0xe3e8('0x13')]||_0x2b9537['uniqueid']});utils['info'](util['format'](_0xe3e8('0x32'),_0x2b9537[_0xe3e8('0x13')],members[_0x30049f]['data1'],members[_0x30049f][_0xe3e8('0x8')],members[_0x30049f]['data3']));if(members[_0x30049f][_0xe3e8('0x21')]){writeDB(members[_0x30049f]);}}}}catch(_0x5b9f95){utils[_0xe3e8('0x25')](util['format']('[%s][members][cdr]',_0x2b9537[_0xe3e8('0x13')]),_0x5b9f95);}};
\ No newline at end of file
index d0bcd62..c4283eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b1=['queuecallerleaveAt','queuecallerabandon','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','varset','variable','value','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexit','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','[%s][queues][queuecallerabandon]','queuecallerexitAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','connectedlinenum','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','queuecallercomplete','reason','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','transfereelinkedid','queuecallerenterreason','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','musiconholdstartAt','[%s][queues][musiconholdstop]','lodash','util','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','accountcode','queuecallerexitreason','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','format','position','assign','now','error','[%s][queues][queuecallerjoin]','hangup','isNil','debug','[%s][queues][hangup]'];(function(_0x2c1923,_0x5446e9){var _0x73c9b4=function(_0x1c0f5d){while(--_0x1c0f5d){_0x2c1923['push'](_0x2c1923['shift']());}};_0x73c9b4(++_0x5446e9);}(_0xb6b1,0x12b));var _0x1b6b=function(_0x500785,_0x15e5ff){_0x500785=_0x500785-0x0;var _0x1f8bcc=_0xb6b1[_0x500785];return _0x1f8bcc;};'use strict';var _=require(_0x1b6b('0x0'));var util=require(_0x1b6b('0x1'));var utils=require(_0x1b6b('0x2'));var queues={};function writeDB(_0x359f6e){utils[_0x1b6b('0x3')](util['format'](_0x1b6b('0x4'),_0x359f6e[_0x1b6b('0x5')],_0x359f6e[_0x1b6b('0x6')],_0x359f6e['queue'],_0x359f6e[_0x1b6b('0x7')],_0x359f6e['calleridnum'],_0x359f6e[_0x1b6b('0x8')],_0x359f6e[_0x1b6b('0x9')]));if(_0x359f6e[_0x1b6b('0xa')]){utils[_0x1b6b('0xb')](_0x359f6e[_0x1b6b('0xa')])[_0x1b6b('0xc')](function(_0x1df718){if(_0x1df718){_0x359f6e[_0x1b6b('0xd')]=_0x1df718[_0x1b6b('0xd')];}utils[_0x1b6b('0xe')](_0x1b6b('0xf'),_0x359f6e);});}else{utils['request'](_0x1b6b('0xf'),_0x359f6e);}if(_0x359f6e['transfereduniqueid']){delete queues[_0x359f6e[_0x1b6b('0x10')]];}else{delete queues[_0x359f6e[_0x1b6b('0x5')]];}}exports[_0x1b6b('0x11')]=function(_0x180cc0){try{utils['debug'](util[_0x1b6b('0x12')]('[%s][queues][queuecallerjoin]',_0x180cc0[_0x1b6b('0x5')]),_0x180cc0);utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x180cc0[_0x1b6b('0x5')],_0x180cc0[_0x1b6b('0xa')],_0x180cc0[_0x1b6b('0x13')]));queues[_0x180cc0[_0x1b6b('0x5')]]=_[_0x1b6b('0x14')](_0x180cc0,{'originalposition':_0x180cc0[_0x1b6b('0x13')],'queuecallerjoinAt':utils[_0x1b6b('0x15')](),'mohtime':0x0});}catch(_0x2e06a0){utils[_0x1b6b('0x16')](util[_0x1b6b('0x12')](_0x1b6b('0x17'),_0x180cc0[_0x1b6b('0x5')]),_0x2e06a0);}};exports[_0x1b6b('0x18')]=function(_0x3fe7e1){try{if(!_[_0x1b6b('0x19')](queues[_0x3fe7e1[_0x1b6b('0x5')]])){utils[_0x1b6b('0x1a')](util[_0x1b6b('0x12')](_0x1b6b('0x1b'),_0x3fe7e1[_0x1b6b('0x5')]),_0x3fe7e1);if(queues[_0x3fe7e1['uniqueid']][_0x1b6b('0x1c')]){if(!queues[_0x3fe7e1[_0x1b6b('0x5')]][_0x1b6b('0x1d')]&&!queues[_0x3fe7e1['uniqueid']]['queuecallerexit']){queues[_0x3fe7e1[_0x1b6b('0x5')]]['queuecallercomplete']=!![];queues[_0x3fe7e1[_0x1b6b('0x5')]][_0x1b6b('0x1e')]=utils[_0x1b6b('0x15')]();queues[_0x3fe7e1[_0x1b6b('0x5')]][_0x1b6b('0x9')]=_0x1b6b('0x1f');}utils[_0x1b6b('0x3')](util['format'](_0x1b6b('0x20'),_0x3fe7e1[_0x1b6b('0x5')],queues[_0x3fe7e1[_0x1b6b('0x5')]][_0x1b6b('0x21')],queues[_0x3fe7e1[_0x1b6b('0x5')]][_0x1b6b('0x9')]));writeDB(queues[_0x3fe7e1['uniqueid']]);}else if(queues[_0x3fe7e1[_0x1b6b('0x5')]][_0x1b6b('0x10')]){utils['info'](util[_0x1b6b('0x12')](_0x1b6b('0x22'),_0x3fe7e1[_0x1b6b('0x5')],queues[_0x3fe7e1[_0x1b6b('0x5')]][_0x1b6b('0x21')],queues[_0x3fe7e1['uniqueid']][_0x1b6b('0x10')]));queues[queues[_0x3fe7e1[_0x1b6b('0x5')]]['transfereduniqueid']]=queues[_0x3fe7e1['uniqueid']];queues[queues[_0x3fe7e1[_0x1b6b('0x5')]][_0x1b6b('0x10')]]['queuecallerenterreason']=0x2;delete queues[_0x3fe7e1[_0x1b6b('0x5')]];}}}catch(_0x28e598){utils[_0x1b6b('0x16')](util['format'](_0x1b6b('0x1b'),_0x3fe7e1[_0x1b6b('0x5')]),_0x28e598);}};exports[_0x1b6b('0x23')]=function(_0x50f9e4){try{utils[_0x1b6b('0x1a')](util[_0x1b6b('0x12')]('[%s][queues][varset]',_0x50f9e4[_0x1b6b('0x5')]),_0x50f9e4);if(!_['isNil'](_0x50f9e4[_0x1b6b('0x24')]['queuestatus'])&&_0x50f9e4[_0x1b6b('0x25')][_0x1b6b('0x26')]()!==_0x1b6b('0x27')){if(!_['isNil'](queues[_0x50f9e4[_0x1b6b('0x5')]])){queues[_0x50f9e4[_0x1b6b('0x5')]][_0x1b6b('0x1d')]=![];queues[_0x50f9e4[_0x1b6b('0x5')]][_0x1b6b('0x28')]=null;queues[_0x50f9e4[_0x1b6b('0x5')]][_0x1b6b('0x29')]=!![];queues[_0x50f9e4[_0x1b6b('0x5')]]['queuecallerexitAt']=utils['now']();queues[_0x50f9e4[_0x1b6b('0x5')]][_0x1b6b('0x9')]=_0x50f9e4[_0x1b6b('0x25')][_0x1b6b('0x26')]();utils[_0x1b6b('0x3')](util['format'](_0x1b6b('0x2a'),_0x50f9e4['uniqueid'],queues[_0x50f9e4[_0x1b6b('0x5')]][_0x1b6b('0x21')],_0x50f9e4[_0x1b6b('0x25')],queues[_0x50f9e4[_0x1b6b('0x5')]][_0x1b6b('0x9')]));writeDB(queues[_0x50f9e4['uniqueid']]);}}else if(!_['isNil'](_0x50f9e4[_0x1b6b('0x24')][_0x1b6b('0x2b')])){if(!_[_0x1b6b('0x19')](queues[_0x50f9e4[_0x1b6b('0x5')]])&&!queues[_0x50f9e4['uniqueid']][_0x1b6b('0x1d')]){queues[_0x50f9e4[_0x1b6b('0x5')]][_0x1b6b('0x1d')]=![];queues[_0x50f9e4[_0x1b6b('0x5')]]['queuecallerabandonAt']=null;queues[_0x50f9e4['uniqueid']][_0x1b6b('0x29')]=!![];queues[_0x50f9e4[_0x1b6b('0x5')]]['queuecallerexitAt']=utils['now']();queues[_0x50f9e4[_0x1b6b('0x5')]]['queuecallerexitreason']=_0x1b6b('0x2c');utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')](_0x1b6b('0x2d'),_0x50f9e4[_0x1b6b('0x5')],queues[_0x50f9e4[_0x1b6b('0x5')]][_0x1b6b('0x21')],_0x50f9e4[_0x1b6b('0x25')],queues[_0x50f9e4['uniqueid']][_0x1b6b('0x9')]));}}}catch(_0x1d375e){utils[_0x1b6b('0x16')](util[_0x1b6b('0x12')](_0x1b6b('0x2e'),_0x50f9e4[_0x1b6b('0x5')]),_0x1d375e);}};exports['queuecallerabandon']=function(_0x21ed1a){try{if(!_[_0x1b6b('0x19')](queues[_0x21ed1a[_0x1b6b('0x5')]])){utils['debug'](util['format'](_0x1b6b('0x2f'),_0x21ed1a['uniqueid']),_0x21ed1a);queues[_0x21ed1a[_0x1b6b('0x5')]]['queuecallerexit']=![];queues[_0x21ed1a[_0x1b6b('0x5')]][_0x1b6b('0x30')]=null;queues[_0x21ed1a[_0x1b6b('0x5')]]['queuecallerabandon']=!![];queues[_0x21ed1a[_0x1b6b('0x5')]][_0x1b6b('0x28')]=utils['now']();queues[_0x21ed1a['uniqueid']]['queuecallerexitreason']=_0x1b6b('0x31');utils[_0x1b6b('0x3')](util['format'](_0x1b6b('0x32'),_0x21ed1a[_0x1b6b('0x5')],queues[_0x21ed1a[_0x1b6b('0x5')]]['name'],queues[_0x21ed1a[_0x1b6b('0x5')]]['queuecallerexitreason']));}}catch(_0x38823e){utils[_0x1b6b('0x16')](util['format'](_0x1b6b('0x2f'),_0x21ed1a[_0x1b6b('0x5')]),_0x38823e);}};exports[_0x1b6b('0x33')]=function(_0x13ae91){try{if(!_[_0x1b6b('0x19')](queues[_0x13ae91[_0x1b6b('0x5')]])){utils[_0x1b6b('0x1a')](util['format']('[%s][queues][queuecallerleave]',_0x13ae91[_0x1b6b('0x5')]),_0x13ae91);utils[_0x1b6b('0x3')](util['format']('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x13ae91[_0x1b6b('0x5')],queues[_0x13ae91[_0x1b6b('0x5')]][_0x1b6b('0x21')],_0x13ae91[_0x1b6b('0x34')],_0x13ae91[_0x1b6b('0x35')]));queues[_0x13ae91[_0x1b6b('0x5')]][_0x1b6b('0x33')]=!![];queues[_0x13ae91[_0x1b6b('0x5')]]['queuecallerleaveAt']=utils[_0x1b6b('0x15')]();queues[_0x13ae91[_0x1b6b('0x5')]][_0x1b6b('0x36')]=utils[_0x1b6b('0x37')](queues[_0x13ae91[_0x1b6b('0x5')]][_0x1b6b('0x1c')],queues[_0x13ae91[_0x1b6b('0x5')]][_0x1b6b('0x38')]);queues[_0x13ae91[_0x1b6b('0x5')]][_0x1b6b('0x13')]=_0x13ae91[_0x1b6b('0x13')];queues[_0x13ae91['uniqueid']][_0x1b6b('0x39')]=_0x13ae91[_0x1b6b('0x39')];queues[_0x13ae91[_0x1b6b('0x5')]]['connectedlinenum']=_0x13ae91['connectedlinenum'];queues[_0x13ae91[_0x1b6b('0x5')]][_0x1b6b('0x35')]=_0x13ae91[_0x1b6b('0x35')];}}catch(_0x283632){utils[_0x1b6b('0x16')](util[_0x1b6b('0x12')](_0x1b6b('0x3a'),_0x13ae91[_0x1b6b('0x5')]),_0x283632);}};exports[_0x1b6b('0x3b')]=function(_0x390193){try{if(!_[_0x1b6b('0x19')](queues[_0x390193[_0x1b6b('0x5')]])){utils[_0x1b6b('0x1a')](util['format'](_0x1b6b('0x3c'),_0x390193[_0x1b6b('0x5')]),_0x390193);utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')](_0x1b6b('0x3d'),_0x390193[_0x1b6b('0x5')],queues[_0x390193[_0x1b6b('0x5')]]['name'],_0x390193[_0x1b6b('0x3e')],_0x390193[_0x1b6b('0x3f')]));queues[_0x390193[_0x1b6b('0x5')]][_0x1b6b('0x1d')]=![];queues[_0x390193['uniqueid']][_0x1b6b('0x1d')]=![];queues[_0x390193['uniqueid']][_0x1b6b('0x28')]=null;queues[_0x390193[_0x1b6b('0x5')]][_0x1b6b('0x29')]=![];queues[_0x390193[_0x1b6b('0x5')]][_0x1b6b('0x9')]=null;queues[_0x390193[_0x1b6b('0x5')]][_0x1b6b('0x30')]=null;queues[_0x390193['uniqueid']][_0x1b6b('0x40')]=!![];queues[_0x390193[_0x1b6b('0x5')]][_0x1b6b('0x8')]=_0x390193[_0x1b6b('0x3f')];queues[_0x390193['uniqueid']]['lastAssignedTo']=_0x390193[_0x1b6b('0x3e')];}}catch(_0x40fe31){utils['error'](util[_0x1b6b('0x12')]('[%s][queues][agentconnect]',_0x390193[_0x1b6b('0x5')]),_0x40fe31);}};exports[_0x1b6b('0x41')]=function(_0x56a40f){try{if(!_[_0x1b6b('0x19')](queues[_0x56a40f[_0x1b6b('0x5')]])){if(queues[_0x56a40f[_0x1b6b('0x5')]][_0x1b6b('0x1c')]){utils[_0x1b6b('0x1a')](util['format'](_0x1b6b('0x42'),_0x56a40f[_0x1b6b('0x5')]),_0x56a40f);queues[_0x56a40f[_0x1b6b('0x5')]]['queuecallerabandon']=![];queues[_0x56a40f[_0x1b6b('0x5')]][_0x1b6b('0x1d')]=![];queues[_0x56a40f[_0x1b6b('0x5')]][_0x1b6b('0x28')]=null;queues[_0x56a40f['uniqueid']]['queuecallerexit']=![];queues[_0x56a40f[_0x1b6b('0x5')]][_0x1b6b('0x30')]=null;queues[_0x56a40f[_0x1b6b('0x5')]][_0x1b6b('0x40')]=!![];queues[_0x56a40f[_0x1b6b('0x5')]][_0x1b6b('0x7')]=_0x56a40f[_0x1b6b('0x3e')];queues[_0x56a40f[_0x1b6b('0x5')]][_0x1b6b('0x43')]=!![];queues[_0x56a40f[_0x1b6b('0x5')]]['queuecallercompleteAt']=utils['now']();if(_0x56a40f[_0x1b6b('0x44')]=='transfer'){if(!queues[_0x56a40f['uniqueid']][_0x1b6b('0x45')]){queues[_0x56a40f['uniqueid']][_0x1b6b('0x9')]='TRANSFER';}}else{queues[_0x56a40f[_0x1b6b('0x5')]][_0x1b6b('0x9')]=_0x1b6b('0x46')+_0x56a40f['reason']['toUpperCase']();}utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')](_0x1b6b('0x47'),_0x56a40f[_0x1b6b('0x5')],queues[_0x56a40f['uniqueid']]['name'],_0x56a40f[_0x1b6b('0x3e')],queues[_0x56a40f['uniqueid']][_0x1b6b('0x9')]));writeDB(queues[_0x56a40f[_0x1b6b('0x5')]]);}}}catch(_0x49ece2){utils[_0x1b6b('0x16')](util[_0x1b6b('0x12')]('[%s][queues][agentcomplete]',_0x56a40f[_0x1b6b('0x5')]),_0x49ece2);}};exports[_0x1b6b('0x48')]=function(_0x1c268f){try{if(!_[_0x1b6b('0x19')](queues[_0x1c268f['transfereeuniqueid']])){utils['debug'](util[_0x1b6b('0x12')](_0x1b6b('0x49'),_0x1c268f['uniqueid']),_0x1c268f);queues[_0x1c268f[_0x1b6b('0x4a')]]['transfer']=!![];queues[_0x1c268f[_0x1b6b('0x4a')]][_0x1b6b('0x4b')]=_0x1b6b('0x4c');queues[_0x1c268f[_0x1b6b('0x4a')]][_0x1b6b('0x4d')]=_0x1c268f[_0x1b6b('0x4e')];queues[_0x1c268f[_0x1b6b('0x4a')]][_0x1b6b('0x4f')]=_0x1c268f[_0x1b6b('0x4a')];queues[_0x1c268f['transfereeuniqueid']][_0x1b6b('0x9')]=_0x1b6b('0x50');utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')](_0x1b6b('0x51'),_0x1c268f[_0x1b6b('0x5')],queues[_0x1c268f[_0x1b6b('0x4a')]]['name'],_0x1c268f[_0x1b6b('0x4a')],_0x1c268f[_0x1b6b('0x4e')]));}}catch(_0x2c91ec){utils[_0x1b6b('0x16')](util['format'](_0x1b6b('0x49'),_0x1c268f[_0x1b6b('0x5')]),_0x2c91ec);}};exports[_0x1b6b('0x52')]=function(_0x114a3a){try{utils['debug'](util[_0x1b6b('0x12')](_0x1b6b('0x53'),_0x114a3a[_0x1b6b('0x54')]),_0x114a3a);if(_0x114a3a[_0x1b6b('0x54')]==_0x114a3a[_0x1b6b('0x55')]){if(!_[_0x1b6b('0x19')](queues[_0x114a3a[_0x1b6b('0x56')]])){utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')](_0x1b6b('0x57'),_0x114a3a[_0x1b6b('0x54')],queues[_0x114a3a[_0x1b6b('0x56')]][_0x1b6b('0x21')],_0x114a3a[_0x1b6b('0x58')]));queues[_0x114a3a[_0x1b6b('0x56')]]['transfer']=!![];queues[_0x114a3a[_0x1b6b('0x56')]][_0x1b6b('0x4b')]=_0x1b6b('0x59');queues[_0x114a3a[_0x1b6b('0x56')]][_0x1b6b('0x4d')]=_0x114a3a[_0x1b6b('0x58')];queues[_0x114a3a[_0x1b6b('0x56')]][_0x1b6b('0x4f')]=_0x114a3a[_0x1b6b('0x54')];queues[_0x114a3a['secondtransfererlinkedid']][_0x1b6b('0x9')]='ATTENDEDTRANSFER';}if(!_[_0x1b6b('0x19')](queues[_0x114a3a[_0x1b6b('0x55')]])){if(_0x114a3a[_0x1b6b('0x5a')]&&queues[_0x114a3a['transfereelinkedid']]){queues[_0x114a3a[_0x1b6b('0x5a')]][_0x1b6b('0x5b')]=0x1;queues[_0x114a3a[_0x1b6b('0x4a')]]=_['clone'](queues[_0x114a3a['transfereelinkedid']]);queues[_0x114a3a['transfereeuniqueid']][_0x1b6b('0x10')]=_0x114a3a[_0x1b6b('0x5c')];queues[_0x114a3a[_0x1b6b('0x4a')]]['queuecallerenterreason']=0x2;queues[_0x114a3a[_0x1b6b('0x4a')]][_0x1b6b('0x5d')]=queues[_0x114a3a[_0x1b6b('0x56')]][_0x1b6b('0x5d')];queues[_0x114a3a[_0x1b6b('0x4a')]][_0x1b6b('0x5e')]=queues[_0x114a3a[_0x1b6b('0x56')]][_0x1b6b('0x5e')];queues[_0x114a3a[_0x1b6b('0x4a')]][_0x1b6b('0x38')]=utils['now']();queues[_0x114a3a['transfereeuniqueid']][_0x1b6b('0x1c')]=utils[_0x1b6b('0x15')]();queues[_0x114a3a[_0x1b6b('0x4a')]][_0x1b6b('0x36')]=0x0;queues[_0x114a3a[_0x1b6b('0x4a')]][_0x1b6b('0x5f')]=0x0;utils[_0x1b6b('0x3')](util['format'](_0x1b6b('0x60'),_0x114a3a['origtransfereruniqueid'],queues[_0x114a3a['transfereeuniqueid']]['name'],queues[_0x114a3a[_0x1b6b('0x4a')]][_0x1b6b('0x5d')],queues[_0x114a3a[_0x1b6b('0x4a')]][_0x1b6b('0x5e')]));}else{utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')](_0x1b6b('0x61'),_0x114a3a['origtransfereruniqueid'],queues[_0x114a3a[_0x1b6b('0x55')]]['name'],_0x114a3a['secondtransfererlinkedid']));queues[_0x114a3a['origtransfererlinkedid']][_0x1b6b('0x10')]=_0x114a3a[_0x1b6b('0x56')];}}}else if(_0x114a3a[_0x1b6b('0x62')]==_0x114a3a[_0x1b6b('0x56')]){if(!_[_0x1b6b('0x19')](queues[_0x114a3a['origtransfererlinkedid']])){utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')](_0x1b6b('0x63'),_0x114a3a['origtransfereruniqueid'],queues[_0x114a3a['origtransfererlinkedid']][_0x1b6b('0x21')],_0x114a3a['secondtransfereruniqueid'],_0x114a3a['secondtransfererexten']));queues[_0x114a3a[_0x1b6b('0x55')]]['transfer']=!![];queues[_0x114a3a[_0x1b6b('0x55')]]['transfertype']=_0x1b6b('0x59');queues[_0x114a3a[_0x1b6b('0x55')]]['transferexten']=_0x114a3a['secondtransfererexten'];queues[_0x114a3a[_0x1b6b('0x55')]][_0x1b6b('0x4f')]=_0x114a3a[_0x1b6b('0x62')];queues[_0x114a3a[_0x1b6b('0x55')]]['queuecallerexitreason']='ATTENDEDTRANSFER';}if(!_[_0x1b6b('0x19')](queues[_0x114a3a[_0x1b6b('0x56')]])){if(_0x114a3a['transfertargetlinkedid']&&queues[_0x114a3a[_0x1b6b('0x64')]]){queues[_0x114a3a[_0x1b6b('0x64')]]['queuecallerenterreason']=0x1;queues[_0x114a3a[_0x1b6b('0x5c')]]=_[_0x1b6b('0x65')](queues[_0x114a3a[_0x1b6b('0x64')]]);queues[_0x114a3a[_0x1b6b('0x5c')]][_0x1b6b('0x10')]=_0x114a3a['transfertargetuniqueid'];queues[_0x114a3a['transfertargetuniqueid']][_0x1b6b('0x5b')]=0x2;queues[_0x114a3a[_0x1b6b('0x5c')]][_0x1b6b('0x5d')]=queues[_0x114a3a[_0x1b6b('0x55')]]['calleridnum'];queues[_0x114a3a[_0x1b6b('0x5c')]][_0x1b6b('0x5e')]=queues[_0x114a3a[_0x1b6b('0x55')]][_0x1b6b('0x5e')];queues[_0x114a3a[_0x1b6b('0x5c')]]['queuecallerjoinAt']=utils[_0x1b6b('0x15')]();queues[_0x114a3a[_0x1b6b('0x5c')]][_0x1b6b('0x1c')]=utils[_0x1b6b('0x15')]();queues[_0x114a3a['transfertargetuniqueid']][_0x1b6b('0x36')]=0x0;queues[_0x114a3a[_0x1b6b('0x5c')]][_0x1b6b('0x5f')]=0x0;utils['info'](util[_0x1b6b('0x12')](_0x1b6b('0x66'),_0x114a3a['origtransfereruniqueid'],queues[_0x114a3a[_0x1b6b('0x5c')]][_0x1b6b('0x21')],queues[_0x114a3a['transfertargetuniqueid']][_0x1b6b('0x10')],queues[_0x114a3a[_0x1b6b('0x5c')]][_0x1b6b('0x5d')],queues[_0x114a3a['transfertargetuniqueid']]['calleridname']));}else{utils[_0x1b6b('0x3')](util[_0x1b6b('0x12')](_0x1b6b('0x61'),_0x114a3a['origtransfereruniqueid'],queues[_0x114a3a[_0x1b6b('0x56')]][_0x1b6b('0x21')],_0x114a3a['origtransfererlinkedid']));queues[_0x114a3a[_0x1b6b('0x56')]]['transfereduniqueid']=_0x114a3a[_0x1b6b('0x55')];}}}}catch(_0x2153d0){utils[_0x1b6b('0x16')](util[_0x1b6b('0x12')](_0x1b6b('0x53'),_0x114a3a[_0x1b6b('0x54')]),_0x2153d0);}};exports[_0x1b6b('0x67')]=function(_0x207103){try{if(!_['isNil'](queues[_0x207103[_0x1b6b('0x5')]])){utils[_0x1b6b('0x1a')](util['format'](_0x1b6b('0x68'),_0x207103[_0x1b6b('0x5')]),_0x207103);queues[_0x207103['uniqueid']]['musiconholdstartAt']=utils[_0x1b6b('0x15')]();utils[_0x1b6b('0x3')](util['format'](_0x1b6b('0x69'),_0x207103['uniqueid'],queues[_0x207103[_0x1b6b('0x5')]][_0x1b6b('0x21')],queues[_0x207103[_0x1b6b('0x5')]]['musiconholdstartAt']));}}catch(_0x34512f){utils[_0x1b6b('0x16')](util[_0x1b6b('0x12')](_0x1b6b('0x68'),_0x207103[_0x1b6b('0x5')]),_0x34512f);}};exports[_0x1b6b('0x6a')]=function(_0x23f84a){try{if(!_['isNil'](queues[_0x23f84a[_0x1b6b('0x5')]])){if(!_['isNil'](queues[_0x23f84a['uniqueid']][_0x1b6b('0x6b')])){utils[_0x1b6b('0x1a')](util[_0x1b6b('0x12')]('[%s][queues][musiconholdstop]',_0x23f84a[_0x1b6b('0x5')]),_0x23f84a);queues[_0x23f84a[_0x1b6b('0x5')]][_0x1b6b('0x5f')]+=utils[_0x1b6b('0x37')](utils[_0x1b6b('0x15')](),queues[_0x23f84a['uniqueid']][_0x1b6b('0x6b')]);utils['info'](util[_0x1b6b('0x12')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x23f84a['uniqueid'],queues[_0x23f84a[_0x1b6b('0x5')]][_0x1b6b('0x21')],queues[_0x23f84a[_0x1b6b('0x5')]][_0x1b6b('0x5f')]));delete queues[_0x23f84a['uniqueid']]['musiconholdstartAt'];}}}catch(_0x4cb70e){utils[_0x1b6b('0x16')](util[_0x1b6b('0x12')](_0x1b6b('0x6c'),_0x23f84a[_0x1b6b('0x5')]),_0x4cb70e);}};
\ No newline at end of file
+var _0x5ae5=['[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','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','ATTENDEDTRANSFER','transfereelinkedid','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','ATTENDED','transfertargetlinkedid','clone','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','util','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','calleridnum','accountcode','queue','type','CreateVoiceQueueReport','request','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','info','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexit','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','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','holdtime','diffTime','queuecallerjoinAt','count','connectedlinenum','connectedlinename','agentconnect'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x5ae5,0x171));var _0x55ae=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x5ae5[_0x2bf141];return _0x48277b;};'use strict';var _=require('lodash');var util=require(_0x55ae('0x0'));var utils=require('./utils');var queues={};function writeDB(_0x2eeef8){utils['info'](util[_0x55ae('0x1')](_0x55ae('0x2'),_0x2eeef8[_0x55ae('0x3')],_0x2eeef8[_0x55ae('0x4')],_0x2eeef8['queue'],_0x2eeef8[_0x55ae('0x5')],_0x2eeef8[_0x55ae('0x6')],_0x2eeef8[_0x55ae('0x7')],_0x2eeef8['queuecallerexitreason']));if(_0x2eeef8[_0x55ae('0x8')]){utils['getVoiceQueueByName'](_0x2eeef8[_0x55ae('0x8')])['then'](function(_0x2e9544){if(_0x2e9544){_0x2eeef8['type']=_0x2e9544[_0x55ae('0x9')];}utils['request'](_0x55ae('0xa'),_0x2eeef8);});}else{utils[_0x55ae('0xb')]('CreateVoiceQueueReport',_0x2eeef8);}if(_0x2eeef8[_0x55ae('0xc')]){delete queues[_0x2eeef8['transfereduniqueid']];}else{delete queues[_0x2eeef8['uniqueid']];}}exports[_0x55ae('0xd')]=function(_0x4a16e3){try{utils[_0x55ae('0xe')](util[_0x55ae('0x1')](_0x55ae('0xf'),_0x4a16e3['uniqueid']),_0x4a16e3);utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x11'),_0x4a16e3['uniqueid'],_0x4a16e3[_0x55ae('0x8')],_0x4a16e3[_0x55ae('0x12')]));queues[_0x4a16e3['uniqueid']]=_[_0x55ae('0x13')](_0x4a16e3,{'originalposition':_0x4a16e3['position'],'queuecallerjoinAt':utils[_0x55ae('0x14')](),'mohtime':0x0});}catch(_0x5818e9){utils[_0x55ae('0x15')](util[_0x55ae('0x1')](_0x55ae('0xf'),_0x4a16e3[_0x55ae('0x3')]),_0x5818e9);}};exports[_0x55ae('0x16')]=function(_0x3f5288){try{if(!_[_0x55ae('0x17')](queues[_0x3f5288['uniqueid']])){utils[_0x55ae('0xe')](util[_0x55ae('0x1')](_0x55ae('0x18'),_0x3f5288[_0x55ae('0x3')]),_0x3f5288);if(queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0x19')]){if(!queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0x1a')]&&!queues[_0x3f5288[_0x55ae('0x3')]]['queuecallerexit']){queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0x1b')]=!![];queues[_0x3f5288['uniqueid']][_0x55ae('0x1c')]=utils['now']();queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0x1d')]='COMPLETEDBYAGENT';}utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x1e'),_0x3f5288[_0x55ae('0x3')],queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0x1f')],queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0x1d')]));writeDB(queues[_0x3f5288[_0x55ae('0x3')]]);}else if(queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0xc')]){utils[_0x55ae('0x10')](util['format']('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x3f5288[_0x55ae('0x3')],queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0x1f')],queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0xc')]));queues[queues[_0x3f5288['uniqueid']][_0x55ae('0xc')]]=queues[_0x3f5288[_0x55ae('0x3')]];queues[queues[_0x3f5288[_0x55ae('0x3')]][_0x55ae('0xc')]][_0x55ae('0x20')]=0x2;delete queues[_0x3f5288['uniqueid']];}}}catch(_0x45bf90){utils[_0x55ae('0x15')](util['format']('[%s][queues][hangup]',_0x3f5288['uniqueid']),_0x45bf90);}};exports[_0x55ae('0x21')]=function(_0x3d9307){try{utils[_0x55ae('0xe')](util[_0x55ae('0x1')](_0x55ae('0x22'),_0x3d9307[_0x55ae('0x3')]),_0x3d9307);if(!_[_0x55ae('0x17')](_0x3d9307[_0x55ae('0x23')][_0x55ae('0x24')])&&_0x3d9307[_0x55ae('0x25')][_0x55ae('0x26')]()!==_0x55ae('0x27')){if(!_['isNil'](queues[_0x3d9307[_0x55ae('0x3')]])){queues[_0x3d9307[_0x55ae('0x3')]][_0x55ae('0x1a')]=![];queues[_0x3d9307['uniqueid']][_0x55ae('0x28')]=null;queues[_0x3d9307[_0x55ae('0x3')]][_0x55ae('0x29')]=!![];queues[_0x3d9307[_0x55ae('0x3')]]['queuecallerexitAt']=utils[_0x55ae('0x14')]();queues[_0x3d9307[_0x55ae('0x3')]][_0x55ae('0x1d')]=_0x3d9307[_0x55ae('0x25')][_0x55ae('0x26')]();utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x2a'),_0x3d9307[_0x55ae('0x3')],queues[_0x3d9307[_0x55ae('0x3')]]['name'],_0x3d9307[_0x55ae('0x25')],queues[_0x3d9307[_0x55ae('0x3')]][_0x55ae('0x1d')]));writeDB(queues[_0x3d9307[_0x55ae('0x3')]]);}}else if(!_[_0x55ae('0x17')](_0x3d9307[_0x55ae('0x23')][_0x55ae('0x2b')])){if(!_[_0x55ae('0x17')](queues[_0x3d9307[_0x55ae('0x3')]])&&!queues[_0x3d9307['uniqueid']][_0x55ae('0x1a')]){queues[_0x3d9307[_0x55ae('0x3')]][_0x55ae('0x1a')]=![];queues[_0x3d9307['uniqueid']][_0x55ae('0x28')]=null;queues[_0x3d9307[_0x55ae('0x3')]][_0x55ae('0x29')]=!![];queues[_0x3d9307[_0x55ae('0x3')]][_0x55ae('0x2c')]=utils[_0x55ae('0x14')]();queues[_0x3d9307['uniqueid']][_0x55ae('0x1d')]=_0x55ae('0x2d');utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x2e'),_0x3d9307[_0x55ae('0x3')],queues[_0x3d9307['uniqueid']]['name'],_0x3d9307[_0x55ae('0x25')],queues[_0x3d9307['uniqueid']][_0x55ae('0x1d')]));}}}catch(_0x394e74){utils[_0x55ae('0x15')](util[_0x55ae('0x1')]('[%s][queues][varset]',_0x3d9307[_0x55ae('0x3')]),_0x394e74);}};exports['queuecallerabandon']=function(_0x5a3b09){try{if(!_[_0x55ae('0x17')](queues[_0x5a3b09[_0x55ae('0x3')]])){utils[_0x55ae('0xe')](util['format'](_0x55ae('0x2f'),_0x5a3b09[_0x55ae('0x3')]),_0x5a3b09);queues[_0x5a3b09[_0x55ae('0x3')]][_0x55ae('0x29')]=![];queues[_0x5a3b09[_0x55ae('0x3')]]['queuecallerexitAt']=null;queues[_0x5a3b09[_0x55ae('0x3')]]['queuecallerabandon']=!![];queues[_0x5a3b09['uniqueid']][_0x55ae('0x28')]=utils['now']();queues[_0x5a3b09[_0x55ae('0x3')]]['queuecallerexitreason']='ABANDONED';utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x30'),_0x5a3b09['uniqueid'],queues[_0x5a3b09[_0x55ae('0x3')]][_0x55ae('0x1f')],queues[_0x5a3b09[_0x55ae('0x3')]][_0x55ae('0x1d')]));}}catch(_0x55841b){utils[_0x55ae('0x15')](util[_0x55ae('0x1')](_0x55ae('0x2f'),_0x5a3b09[_0x55ae('0x3')]),_0x55841b);}};exports[_0x55ae('0x31')]=function(_0x4bab79){try{if(!_['isNil'](queues[_0x4bab79[_0x55ae('0x3')]])){utils[_0x55ae('0xe')](util[_0x55ae('0x1')](_0x55ae('0x32'),_0x4bab79[_0x55ae('0x3')]),_0x4bab79);utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x33'),_0x4bab79[_0x55ae('0x3')],queues[_0x4bab79['uniqueid']][_0x55ae('0x1f')],_0x4bab79['connectedlinenum'],_0x4bab79['connectedlinename']));queues[_0x4bab79[_0x55ae('0x3')]]['queuecallerleave']=!![];queues[_0x4bab79[_0x55ae('0x3')]][_0x55ae('0x19')]=utils[_0x55ae('0x14')]();queues[_0x4bab79[_0x55ae('0x3')]][_0x55ae('0x34')]=utils[_0x55ae('0x35')](queues[_0x4bab79[_0x55ae('0x3')]][_0x55ae('0x19')],queues[_0x4bab79['uniqueid']][_0x55ae('0x36')]);queues[_0x4bab79[_0x55ae('0x3')]][_0x55ae('0x12')]=_0x4bab79[_0x55ae('0x12')];queues[_0x4bab79[_0x55ae('0x3')]][_0x55ae('0x37')]=_0x4bab79['count'];queues[_0x4bab79[_0x55ae('0x3')]][_0x55ae('0x38')]=_0x4bab79['connectedlinenum'];queues[_0x4bab79['uniqueid']][_0x55ae('0x39')]=_0x4bab79[_0x55ae('0x39')];}}catch(_0x34edfe){utils[_0x55ae('0x15')](util[_0x55ae('0x1')](_0x55ae('0x32'),_0x4bab79['uniqueid']),_0x34edfe);}};exports[_0x55ae('0x3a')]=function(_0x24e073){try{if(!_[_0x55ae('0x17')](queues[_0x24e073[_0x55ae('0x3')]])){utils['debug'](util[_0x55ae('0x1')](_0x55ae('0x3b'),_0x24e073[_0x55ae('0x3')]),_0x24e073);utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x3c'),_0x24e073[_0x55ae('0x3')],queues[_0x24e073['uniqueid']][_0x55ae('0x1f')],_0x24e073[_0x55ae('0x3d')],_0x24e073['destaccountcode']));queues[_0x24e073[_0x55ae('0x3')]]['queuecallerabandon']=![];queues[_0x24e073['uniqueid']][_0x55ae('0x1a')]=![];queues[_0x24e073[_0x55ae('0x3')]]['queuecallerabandonAt']=null;queues[_0x24e073[_0x55ae('0x3')]][_0x55ae('0x29')]=![];queues[_0x24e073[_0x55ae('0x3')]][_0x55ae('0x1d')]=null;queues[_0x24e073['uniqueid']]['queuecallerexitAt']=null;queues[_0x24e073['uniqueid']][_0x55ae('0x3e')]=!![];queues[_0x24e073[_0x55ae('0x3')]][_0x55ae('0x7')]=_0x24e073[_0x55ae('0x3f')];queues[_0x24e073['uniqueid']]['lastAssignedTo']=_0x24e073[_0x55ae('0x3d')];}}catch(_0x3e66fd){utils['error'](util[_0x55ae('0x1')](_0x55ae('0x3b'),_0x24e073[_0x55ae('0x3')]),_0x3e66fd);}};exports[_0x55ae('0x40')]=function(_0x557624){try{if(!_['isNil'](queues[_0x557624[_0x55ae('0x3')]])){if(queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x19')]){utils[_0x55ae('0xe')](util[_0x55ae('0x1')](_0x55ae('0x41'),_0x557624[_0x55ae('0x3')]),_0x557624);queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x1a')]=![];queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x1a')]=![];queues[_0x557624['uniqueid']][_0x55ae('0x28')]=null;queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x29')]=![];queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x2c')]=null;queues[_0x557624[_0x55ae('0x3')]]['assigned']=!![];queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x5')]=_0x557624['membername'];queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x1b')]=!![];queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x1c')]=utils[_0x55ae('0x14')]();if(_0x557624[_0x55ae('0x42')]==_0x55ae('0x43')){if(!queues[_0x557624[_0x55ae('0x3')]]['transfer']){queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x1d')]=_0x55ae('0x44');}}else{queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x1d')]=_0x55ae('0x45')+_0x557624['reason'][_0x55ae('0x26')]();}utils['info'](util[_0x55ae('0x1')](_0x55ae('0x46'),_0x557624['uniqueid'],queues[_0x557624[_0x55ae('0x3')]]['name'],_0x557624[_0x55ae('0x3d')],queues[_0x557624[_0x55ae('0x3')]][_0x55ae('0x1d')]));writeDB(queues[_0x557624[_0x55ae('0x3')]]);}}}catch(_0x21b2bb){utils[_0x55ae('0x15')](util[_0x55ae('0x1')](_0x55ae('0x41'),_0x557624[_0x55ae('0x3')]),_0x21b2bb);}};exports[_0x55ae('0x47')]=function(_0x74d8d5){try{if(!_[_0x55ae('0x17')](queues[_0x74d8d5[_0x55ae('0x48')]])){utils[_0x55ae('0xe')](util['format'](_0x55ae('0x49'),_0x74d8d5[_0x55ae('0x3')]),_0x74d8d5);queues[_0x74d8d5[_0x55ae('0x48')]][_0x55ae('0x43')]=!![];queues[_0x74d8d5[_0x55ae('0x48')]][_0x55ae('0x4a')]='BLIND';queues[_0x74d8d5['transfereeuniqueid']][_0x55ae('0x4b')]=_0x74d8d5[_0x55ae('0x4c')];queues[_0x74d8d5['transfereeuniqueid']][_0x55ae('0x4d')]=_0x74d8d5[_0x55ae('0x48')];queues[_0x74d8d5[_0x55ae('0x48')]][_0x55ae('0x1d')]=_0x55ae('0x4e');utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x4f'),_0x74d8d5[_0x55ae('0x3')],queues[_0x74d8d5[_0x55ae('0x48')]][_0x55ae('0x1f')],_0x74d8d5[_0x55ae('0x48')],_0x74d8d5[_0x55ae('0x4c')]));}}catch(_0x5294fc){utils[_0x55ae('0x15')](util[_0x55ae('0x1')](_0x55ae('0x49'),_0x74d8d5[_0x55ae('0x3')]),_0x5294fc);}};exports[_0x55ae('0x50')]=function(_0x1156b8){try{utils['debug'](util[_0x55ae('0x1')](_0x55ae('0x51'),_0x1156b8[_0x55ae('0x52')]),_0x1156b8);if(_0x1156b8['origtransfereruniqueid']==_0x1156b8[_0x55ae('0x53')]){if(!_['isNil'](queues[_0x1156b8[_0x55ae('0x54')]])){utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x55'),_0x1156b8[_0x55ae('0x52')],queues[_0x1156b8[_0x55ae('0x54')]]['name'],_0x1156b8['origtransfererexten']));queues[_0x1156b8[_0x55ae('0x54')]][_0x55ae('0x43')]=!![];queues[_0x1156b8['secondtransfererlinkedid']]['transfertype']='ATTENDED';queues[_0x1156b8[_0x55ae('0x54')]][_0x55ae('0x4b')]=_0x1156b8[_0x55ae('0x56')];queues[_0x1156b8[_0x55ae('0x54')]][_0x55ae('0x4d')]=_0x1156b8['origtransfereruniqueid'];queues[_0x1156b8['secondtransfererlinkedid']][_0x55ae('0x1d')]=_0x55ae('0x57');}if(!_['isNil'](queues[_0x1156b8[_0x55ae('0x53')]])){if(_0x1156b8[_0x55ae('0x58')]&&queues[_0x1156b8[_0x55ae('0x58')]]){queues[_0x1156b8[_0x55ae('0x58')]]['queuecallerenterreason']=0x1;queues[_0x1156b8[_0x55ae('0x48')]]=_['clone'](queues[_0x1156b8[_0x55ae('0x58')]]);queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0xc')]=_0x1156b8[_0x55ae('0x59')];queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x20')]=0x2;queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x6')]=queues[_0x1156b8[_0x55ae('0x54')]][_0x55ae('0x6')];queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x5a')]=queues[_0x1156b8['secondtransfererlinkedid']]['calleridname'];queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x36')]=utils[_0x55ae('0x14')]();queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x19')]=utils[_0x55ae('0x14')]();queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x34')]=0x0;queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x5b')]=0x0;utils[_0x55ae('0x10')](util['format'](_0x55ae('0x5c'),_0x1156b8[_0x55ae('0x52')],queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x1f')],queues[_0x1156b8[_0x55ae('0x48')]]['calleridnum'],queues[_0x1156b8[_0x55ae('0x48')]][_0x55ae('0x5a')]));}else{utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x5d'),_0x1156b8[_0x55ae('0x52')],queues[_0x1156b8[_0x55ae('0x53')]][_0x55ae('0x1f')],_0x1156b8[_0x55ae('0x54')]));queues[_0x1156b8[_0x55ae('0x53')]][_0x55ae('0xc')]=_0x1156b8['secondtransfererlinkedid'];}}}else if(_0x1156b8[_0x55ae('0x5e')]==_0x1156b8['secondtransfererlinkedid']){if(!_[_0x55ae('0x17')](queues[_0x1156b8[_0x55ae('0x53')]])){utils['info'](util['format'](_0x55ae('0x5f'),_0x1156b8['origtransfereruniqueid'],queues[_0x1156b8[_0x55ae('0x53')]][_0x55ae('0x1f')],_0x1156b8[_0x55ae('0x5e')],_0x1156b8[_0x55ae('0x60')]));queues[_0x1156b8[_0x55ae('0x53')]]['transfer']=!![];queues[_0x1156b8[_0x55ae('0x53')]][_0x55ae('0x4a')]=_0x55ae('0x61');queues[_0x1156b8[_0x55ae('0x53')]][_0x55ae('0x4b')]=_0x1156b8[_0x55ae('0x60')];queues[_0x1156b8['origtransfererlinkedid']]['transferuniqueid']=_0x1156b8[_0x55ae('0x5e')];queues[_0x1156b8['origtransfererlinkedid']]['queuecallerexitreason']=_0x55ae('0x57');}if(!_['isNil'](queues[_0x1156b8['secondtransfererlinkedid']])){if(_0x1156b8[_0x55ae('0x62')]&&queues[_0x1156b8[_0x55ae('0x62')]]){queues[_0x1156b8[_0x55ae('0x62')]][_0x55ae('0x20')]=0x1;queues[_0x1156b8[_0x55ae('0x59')]]=_[_0x55ae('0x63')](queues[_0x1156b8[_0x55ae('0x62')]]);queues[_0x1156b8[_0x55ae('0x59')]]['transfereduniqueid']=_0x1156b8[_0x55ae('0x59')];queues[_0x1156b8[_0x55ae('0x59')]][_0x55ae('0x20')]=0x2;queues[_0x1156b8[_0x55ae('0x59')]][_0x55ae('0x6')]=queues[_0x1156b8[_0x55ae('0x53')]][_0x55ae('0x6')];queues[_0x1156b8['transfertargetuniqueid']]['calleridname']=queues[_0x1156b8['origtransfererlinkedid']][_0x55ae('0x5a')];queues[_0x1156b8[_0x55ae('0x59')]][_0x55ae('0x36')]=utils[_0x55ae('0x14')]();queues[_0x1156b8['transfertargetuniqueid']][_0x55ae('0x19')]=utils[_0x55ae('0x14')]();queues[_0x1156b8[_0x55ae('0x59')]]['holdtime']=0x0;queues[_0x1156b8[_0x55ae('0x59')]][_0x55ae('0x5b')]=0x0;utils[_0x55ae('0x10')](util[_0x55ae('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x1156b8[_0x55ae('0x52')],queues[_0x1156b8[_0x55ae('0x59')]][_0x55ae('0x1f')],queues[_0x1156b8['transfertargetuniqueid']][_0x55ae('0xc')],queues[_0x1156b8[_0x55ae('0x59')]][_0x55ae('0x6')],queues[_0x1156b8[_0x55ae('0x59')]][_0x55ae('0x5a')]));}else{utils[_0x55ae('0x10')](util[_0x55ae('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x1156b8[_0x55ae('0x52')],queues[_0x1156b8['secondtransfererlinkedid']][_0x55ae('0x1f')],_0x1156b8[_0x55ae('0x53')]));queues[_0x1156b8[_0x55ae('0x54')]][_0x55ae('0xc')]=_0x1156b8[_0x55ae('0x53')];}}}}catch(_0x1b73cd){utils[_0x55ae('0x15')](util[_0x55ae('0x1')](_0x55ae('0x51'),_0x1156b8[_0x55ae('0x52')]),_0x1b73cd);}};exports[_0x55ae('0x64')]=function(_0x199b63){try{if(!_[_0x55ae('0x17')](queues[_0x199b63[_0x55ae('0x3')]])){utils['debug'](util[_0x55ae('0x1')](_0x55ae('0x65'),_0x199b63[_0x55ae('0x3')]),_0x199b63);queues[_0x199b63[_0x55ae('0x3')]][_0x55ae('0x66')]=utils['now']();utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x67'),_0x199b63[_0x55ae('0x3')],queues[_0x199b63[_0x55ae('0x3')]][_0x55ae('0x1f')],queues[_0x199b63['uniqueid']][_0x55ae('0x66')]));}}catch(_0x59e016){utils[_0x55ae('0x15')](util['format'](_0x55ae('0x65'),_0x199b63[_0x55ae('0x3')]),_0x59e016);}};exports[_0x55ae('0x68')]=function(_0x10109a){try{if(!_[_0x55ae('0x17')](queues[_0x10109a['uniqueid']])){if(!_[_0x55ae('0x17')](queues[_0x10109a['uniqueid']][_0x55ae('0x66')])){utils['debug'](util[_0x55ae('0x1')](_0x55ae('0x69'),_0x10109a[_0x55ae('0x3')]),_0x10109a);queues[_0x10109a[_0x55ae('0x3')]][_0x55ae('0x5b')]+=utils[_0x55ae('0x35')](utils[_0x55ae('0x14')](),queues[_0x10109a[_0x55ae('0x3')]][_0x55ae('0x66')]);utils[_0x55ae('0x10')](util[_0x55ae('0x1')](_0x55ae('0x6a'),_0x10109a[_0x55ae('0x3')],queues[_0x10109a[_0x55ae('0x3')]][_0x55ae('0x1f')],queues[_0x10109a[_0x55ae('0x3')]][_0x55ae('0x5b')]));delete queues[_0x10109a[_0x55ae('0x3')]][_0x55ae('0x66')];}}}catch(_0x163823){utils[_0x55ae('0x15')](util[_0x55ae('0x1')]('[%s][queues][musiconholdstop]',_0x10109a['uniqueid']),_0x163823);}};
\ No newline at end of file
index eed2b7f..5341e75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a0c=['calleridnum','cause-txt','calleridname','connectedlinenum','connectedlinename','type','outbound','forEach','clone','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','split','lastIndexOf','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','lodash','util','./utils','info','format','uniqueid','accountcode','getUserByInternal','then','membername','UserId','request','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','error','newstate','debug','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','.wav49','replace','.WAV','monitors','value','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x0a0c,0x19b));var _0xc0a0=function(_0x44a3fc,_0x33a73d){_0x44a3fc=_0x44a3fc-0x0;var _0x20622e=_0x0a0c[_0x44a3fc];return _0x20622e;};'use strict';var _=require(_0xc0a0('0x0'));var util=require(_0xc0a0('0x1'));var utils=require(_0xc0a0('0x2'));var recordings={};function writeDB(_0xacc2f4){utils[_0xc0a0('0x3')](util[_0xc0a0('0x4')]('[%s][recordings][writeDB]',_0xacc2f4[_0xc0a0('0x5')]));if(_0xacc2f4[_0xc0a0('0x6')]){utils[_0xc0a0('0x7')](_0xacc2f4[_0xc0a0('0x6')])[_0xc0a0('0x8')](function(_0x3bb25a){if(_0x3bb25a){_0xacc2f4[_0xc0a0('0x9')]=_0x3bb25a['name'];_0xacc2f4[_0xc0a0('0xa')]=_0x3bb25a['id'];}utils[_0xc0a0('0xb')](_0xc0a0('0xc'),_0xacc2f4);});}else{utils[_0xc0a0('0xb')]('CreateVoiceRecording',_0xacc2f4);}}exports[_0xc0a0('0xd')]=function(_0x176d94){try{utils['debug'](util[_0xc0a0('0x4')](_0xc0a0('0xe'),_0x176d94[_0xc0a0('0x5')]),_0x176d94);if(_0x176d94[_0xc0a0('0x5')]==_0x176d94[_0xc0a0('0xf')]){utils[_0xc0a0('0x3')](util[_0xc0a0('0x4')](_0xc0a0('0x10'),_0x176d94[_0xc0a0('0x5')],_0x176d94['context'],_0x176d94['exten']));recordings[_0x176d94[_0xc0a0('0x5')]]={'uniqueid':_0x176d94[_0xc0a0('0x5')],'accountcode':_0x176d94['accountcode'],'exten':_0x176d94[_0xc0a0('0x11')],'context':_0x176d94[_0xc0a0('0x12')],'channel':_0x176d94[_0xc0a0('0x13')],'monitors':[]};}}catch(_0x289794){utils[_0xc0a0('0x14')](util[_0xc0a0('0x4')]('[%s][recordings][newchannel]',_0x176d94[_0xc0a0('0x5')]),_0x289794);}};exports[_0xc0a0('0x15')]=function(_0x41752f){try{utils[_0xc0a0('0x16')](util[_0xc0a0('0x4')](_0xc0a0('0x17'),_0x41752f[_0xc0a0('0x5')]),_0x41752f);if(!_[_0xc0a0('0x18')](recordings[_0x41752f[_0xc0a0('0x5')]])&&_0x41752f[_0xc0a0('0x19')]==0x6){utils[_0xc0a0('0x3')](util[_0xc0a0('0x4')](_0xc0a0('0x1a'),_0x41752f[_0xc0a0('0x5')],_0x41752f[_0xc0a0('0x12')],_0x41752f[_0xc0a0('0x13')]));}else if(!_[_0xc0a0('0x18')](recordings[_0x41752f[_0xc0a0('0xf')]])&&_0x41752f['channelstate']==0x6&&_0x41752f[_0xc0a0('0x12')]!=_0xc0a0('0x1b')){utils[_0xc0a0('0x3')](util['format'](_0xc0a0('0x1c'),_0x41752f[_0xc0a0('0x5')],_0x41752f['linkedid'],_0x41752f[_0xc0a0('0x12')],_0x41752f[_0xc0a0('0x13')]));recordings[_0x41752f[_0xc0a0('0xf')]]['accountcode']=_0x41752f['accountcode'];}}catch(_0x54cc7d){utils[_0xc0a0('0x14')](util[_0xc0a0('0x4')]('[%s][recordings][newstate]',_0x41752f[_0xc0a0('0x5')]),_0x54cc7d);}};exports[_0xc0a0('0x1d')]=function(_0x438213){try{if(!_['isNil'](_0x438213[_0xc0a0('0x1e')])&&!_['isNil'](_0x438213[_0xc0a0('0x1e')][_0xc0a0('0x1f')])){utils[_0xc0a0('0x16')](util[_0xc0a0('0x4')](_0xc0a0('0x20'),_0x438213[_0xc0a0('0x5')]),_0x438213);utils[_0xc0a0('0x3')](util[_0xc0a0('0x4')](_0xc0a0('0x21'),_0x438213[_0xc0a0('0x5')],_0x438213[_0xc0a0('0x1e')],_0x438213['value']));if(_[_0xc0a0('0x22')](_0x438213['value'],_0xc0a0('0x23'))){_0x438213['value']=_0x438213['value'][_0xc0a0('0x24')]('.wav49',_0xc0a0('0x25'));}if(recordings[_0x438213[_0xc0a0('0xf')]]){var _0x48a576=_['find'](recordings[_0x438213[_0xc0a0('0xf')]][_0xc0a0('0x26')],{'value':_0x438213[_0xc0a0('0x27')]});if(_[_0xc0a0('0x18')](_0x48a576)){recordings[_0x438213['linkedid']]['monitors'][_0xc0a0('0x28')]({'value':_0x438213[_0xc0a0('0x27')]});}}}}catch(_0x1ebbb8){utils['error'](util[_0xc0a0('0x4')](_0xc0a0('0x20'),_0x438213['uniqueid']),_0x1ebbb8);}};exports[_0xc0a0('0x29')]=function(_0xd13f34){try{if(!_[_0xc0a0('0x18')](recordings[_0xd13f34['uniqueid']])){utils[_0xc0a0('0x16')](util[_0xc0a0('0x4')](_0xc0a0('0x2a'),_0xd13f34['uniqueid']),_0xd13f34);utils['info'](util[_0xc0a0('0x4')](_0xc0a0('0x2b'),_0xd13f34[_0xc0a0('0x5')],_0xd13f34[_0xc0a0('0x2c')],_0xd13f34['calleridname'],_0xd13f34[_0xc0a0('0x2d')]));recordings[_0xd13f34['uniqueid']][_0xc0a0('0x2c')]=_0xd13f34[_0xc0a0('0x2c')];recordings[_0xd13f34['uniqueid']][_0xc0a0('0x2e')]=_0xd13f34[_0xc0a0('0x2e')];recordings[_0xd13f34['uniqueid']][_0xc0a0('0x2f')]=_0xd13f34[_0xc0a0('0x2f')];recordings[_0xd13f34[_0xc0a0('0x5')]]['connectedlinename']=_0xd13f34[_0xc0a0('0x30')];if(recordings[_0xd13f34[_0xc0a0('0x5')]][_0xc0a0('0x31')]==_0xc0a0('0x32')&&recordings[_0xd13f34[_0xc0a0('0x5')]]['accountcode']){recordings[_0xd13f34['uniqueid']][_0xc0a0('0x2f')]=recordings[_0xd13f34[_0xc0a0('0x5')]][_0xc0a0('0x6')];recordings[_0xd13f34[_0xc0a0('0x5')]]['connectedlinename']='';}recordings[_0xd13f34[_0xc0a0('0x5')]]['monitors'][_0xc0a0('0x33')](function(_0x51e802){var _0x3271f9=_[_0xc0a0('0x34')](recordings[_0xd13f34[_0xc0a0('0x5')]]);_0x3271f9['value']=_0x51e802[_0xc0a0('0x27')];writeDB(_0x3271f9);});delete recordings[_0xd13f34[_0xc0a0('0x5')]];}}catch(_0x141391){utils[_0xc0a0('0x14')](util[_0xc0a0('0x4')](_0xc0a0('0x2a'),_0xd13f34[_0xc0a0('0x5')]),_0x141391);}};exports['newexten']=function(_0x574961){try{if(!_['isNil'](recordings[_0x574961[_0xc0a0('0x5')]])){utils[_0xc0a0('0x16')](util[_0xc0a0('0x4')](_0xc0a0('0x35'),_0x574961[_0xc0a0('0x5')]),_0x574961);utils[_0xc0a0('0x3')](util['format'](_0xc0a0('0x36'),_0x574961[_0xc0a0('0x5')],_0x574961[_0xc0a0('0x37')],_0x574961[_0xc0a0('0x38')]));if(_0x574961[_0xc0a0('0x37')][_0xc0a0('0x39')]()==_0xc0a0('0x3a')&&_['startsWith'](_0x574961[_0xc0a0('0x38')][_0xc0a0('0x39')](),_0xc0a0('0x3b'))){var _0x153576=_0x574961[_0xc0a0('0x38')][_0xc0a0('0x3c')]('=');var _0x29f2d1=_0x153576[0x0]['substring'](_0x153576[0x0][_0xc0a0('0x3d')]('(')+0x1,_0x153576[0x0][_0xc0a0('0x3d')](')'));var _0x4650ad=_0x153576[0x1];recordings[_0x574961[_0xc0a0('0x5')]][_0x29f2d1]=_0x4650ad;}}}catch(_0x3580f9){utils[_0xc0a0('0x14')](util[_0xc0a0('0x4')](_0xc0a0('0x35'),_0x574961[_0xc0a0('0x5')]),_0x3580f9);}};exports['queuecallerjoin']=function(_0x5eed44){try{if(!_[_0xc0a0('0x18')](recordings[_0x5eed44['uniqueid']])){utils['debug'](util[_0xc0a0('0x4')]('[%s][recordings][queuecallerjoin]',_0x5eed44[_0xc0a0('0x5')]),_0x5eed44);utils[_0xc0a0('0x3')](util['format'](_0xc0a0('0x3e'),_0x5eed44[_0xc0a0('0x5')],_0x5eed44[_0xc0a0('0x3f')]));recordings[_0x5eed44[_0xc0a0('0x5')]][_0xc0a0('0x3f')]=_0x5eed44[_0xc0a0('0x3f')];}}catch(_0x47d5c6){utils['error'](util[_0xc0a0('0x4')](_0xc0a0('0x40'),_0x5eed44[_0xc0a0('0x5')]),_0x47d5c6);}};
\ No newline at end of file
+var _0x4aeb=['./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','name','request','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','error','newstate','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','linkedid','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','variable','mixmonitor_filename','endsWith','value','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][varset]','hangup','debug','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','outbound','forEach','clone','[%s][recordings][hangup]','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','queue','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4aeb,0x1b0));var _0xb4ae=function(_0x306ddc,_0x9c4d60){_0x306ddc=_0x306ddc-0x0;var _0x11767f=_0x4aeb[_0x306ddc];return _0x11767f;};'use strict';var _=require(_0xb4ae('0x0'));var util=require(_0xb4ae('0x1'));var utils=require(_0xb4ae('0x2'));var recordings={};function writeDB(_0x551976){utils[_0xb4ae('0x3')](util[_0xb4ae('0x4')](_0xb4ae('0x5'),_0x551976[_0xb4ae('0x6')]));if(_0x551976[_0xb4ae('0x7')]){utils[_0xb4ae('0x8')](_0x551976[_0xb4ae('0x7')])[_0xb4ae('0x9')](function(_0x481824){if(_0x481824){_0x551976[_0xb4ae('0xa')]=_0x481824[_0xb4ae('0xb')];_0x551976['UserId']=_0x481824['id'];}utils[_0xb4ae('0xc')](_0xb4ae('0xd'),_0x551976);});}else{utils[_0xb4ae('0xc')](_0xb4ae('0xd'),_0x551976);}}exports[_0xb4ae('0xe')]=function(_0x4336d1){try{utils['debug'](util[_0xb4ae('0x4')](_0xb4ae('0xf'),_0x4336d1[_0xb4ae('0x6')]),_0x4336d1);if(_0x4336d1['uniqueid']==_0x4336d1['linkedid']){utils[_0xb4ae('0x3')](util[_0xb4ae('0x4')](_0xb4ae('0x10'),_0x4336d1[_0xb4ae('0x6')],_0x4336d1[_0xb4ae('0x11')],_0x4336d1[_0xb4ae('0x12')]));recordings[_0x4336d1[_0xb4ae('0x6')]]={'uniqueid':_0x4336d1['uniqueid'],'accountcode':_0x4336d1[_0xb4ae('0x7')],'exten':_0x4336d1[_0xb4ae('0x12')],'context':_0x4336d1[_0xb4ae('0x11')],'channel':_0x4336d1['channel'],'monitors':[]};}}catch(_0x16aced){utils[_0xb4ae('0x13')](util[_0xb4ae('0x4')]('[%s][recordings][newchannel]',_0x4336d1[_0xb4ae('0x6')]),_0x16aced);}};exports[_0xb4ae('0x14')]=function(_0x2cbe29){try{utils['debug'](util[_0xb4ae('0x4')]('[%s][recordings][newstate]',_0x2cbe29[_0xb4ae('0x6')]),_0x2cbe29);if(!_[_0xb4ae('0x15')](recordings[_0x2cbe29['uniqueid']])&&_0x2cbe29[_0xb4ae('0x16')]==0x6){utils[_0xb4ae('0x3')](util[_0xb4ae('0x4')](_0xb4ae('0x17'),_0x2cbe29[_0xb4ae('0x6')],_0x2cbe29[_0xb4ae('0x11')],_0x2cbe29['channel']));}else if(!_['isNil'](recordings[_0x2cbe29[_0xb4ae('0x18')]])&&_0x2cbe29[_0xb4ae('0x16')]==0x6&&_0x2cbe29['context']!=_0xb4ae('0x19')){utils[_0xb4ae('0x3')](util[_0xb4ae('0x4')](_0xb4ae('0x1a'),_0x2cbe29['uniqueid'],_0x2cbe29[_0xb4ae('0x18')],_0x2cbe29[_0xb4ae('0x11')],_0x2cbe29['channel']));recordings[_0x2cbe29[_0xb4ae('0x18')]]['accountcode']=_0x2cbe29[_0xb4ae('0x7')];}}catch(_0x50e4b0){utils['error'](util[_0xb4ae('0x4')]('[%s][recordings][newstate]',_0x2cbe29[_0xb4ae('0x6')]),_0x50e4b0);}};exports['varset']=function(_0x45c7f7){try{if(!_[_0xb4ae('0x15')](_0x45c7f7[_0xb4ae('0x1b')])&&!_['isNil'](_0x45c7f7[_0xb4ae('0x1b')][_0xb4ae('0x1c')])){utils['debug'](util[_0xb4ae('0x4')]('[%s][recordings][varset]',_0x45c7f7[_0xb4ae('0x6')]),_0x45c7f7);utils[_0xb4ae('0x3')](util[_0xb4ae('0x4')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x45c7f7[_0xb4ae('0x6')],_0x45c7f7['variable'],_0x45c7f7['value']));if(_[_0xb4ae('0x1d')](_0x45c7f7[_0xb4ae('0x1e')],_0xb4ae('0x1f'))){_0x45c7f7[_0xb4ae('0x1e')]=_0x45c7f7[_0xb4ae('0x1e')][_0xb4ae('0x20')]('.wav49',_0xb4ae('0x21'));}if(recordings[_0x45c7f7[_0xb4ae('0x18')]]){var _0x12ef35=_[_0xb4ae('0x22')](recordings[_0x45c7f7[_0xb4ae('0x18')]][_0xb4ae('0x23')],{'value':_0x45c7f7[_0xb4ae('0x1e')]});if(_[_0xb4ae('0x15')](_0x12ef35)){recordings[_0x45c7f7[_0xb4ae('0x18')]]['monitors'][_0xb4ae('0x24')]({'value':_0x45c7f7[_0xb4ae('0x1e')]});}}}}catch(_0x26501f){utils[_0xb4ae('0x13')](util[_0xb4ae('0x4')](_0xb4ae('0x25'),_0x45c7f7['uniqueid']),_0x26501f);}};exports[_0xb4ae('0x26')]=function(_0x2342a0){try{if(!_[_0xb4ae('0x15')](recordings[_0x2342a0[_0xb4ae('0x6')]])){utils[_0xb4ae('0x27')](util['format']('[%s][recordings][hangup]',_0x2342a0['uniqueid']),_0x2342a0);utils[_0xb4ae('0x3')](util[_0xb4ae('0x4')](_0xb4ae('0x28'),_0x2342a0['uniqueid'],_0x2342a0[_0xb4ae('0x29')],_0x2342a0[_0xb4ae('0x2a')],_0x2342a0['cause-txt']));recordings[_0x2342a0[_0xb4ae('0x6')]]['calleridnum']=_0x2342a0[_0xb4ae('0x29')];recordings[_0x2342a0[_0xb4ae('0x6')]][_0xb4ae('0x2a')]=_0x2342a0[_0xb4ae('0x2a')];recordings[_0x2342a0[_0xb4ae('0x6')]][_0xb4ae('0x2b')]=_0x2342a0[_0xb4ae('0x2b')];recordings[_0x2342a0[_0xb4ae('0x6')]][_0xb4ae('0x2c')]=_0x2342a0[_0xb4ae('0x2c')];if(recordings[_0x2342a0[_0xb4ae('0x6')]]['type']==_0xb4ae('0x2d')&&recordings[_0x2342a0[_0xb4ae('0x6')]][_0xb4ae('0x7')]){recordings[_0x2342a0[_0xb4ae('0x6')]][_0xb4ae('0x2b')]=recordings[_0x2342a0[_0xb4ae('0x6')]]['accountcode'];recordings[_0x2342a0[_0xb4ae('0x6')]][_0xb4ae('0x2c')]='';}recordings[_0x2342a0['uniqueid']][_0xb4ae('0x23')][_0xb4ae('0x2e')](function(_0x5cfbd2){var _0x148b59=_[_0xb4ae('0x2f')](recordings[_0x2342a0[_0xb4ae('0x6')]]);_0x148b59[_0xb4ae('0x1e')]=_0x5cfbd2[_0xb4ae('0x1e')];writeDB(_0x148b59);});delete recordings[_0x2342a0[_0xb4ae('0x6')]];}}catch(_0x5da203){utils[_0xb4ae('0x13')](util['format'](_0xb4ae('0x30'),_0x2342a0[_0xb4ae('0x6')]),_0x5da203);}};exports['newexten']=function(_0x44743f){try{if(!_[_0xb4ae('0x15')](recordings[_0x44743f[_0xb4ae('0x6')]])){utils['debug'](util[_0xb4ae('0x4')](_0xb4ae('0x31'),_0x44743f[_0xb4ae('0x6')]),_0x44743f);utils[_0xb4ae('0x3')](util[_0xb4ae('0x4')](_0xb4ae('0x32'),_0x44743f[_0xb4ae('0x6')],_0x44743f['application'],_0x44743f[_0xb4ae('0x33')]));if(_0x44743f[_0xb4ae('0x34')][_0xb4ae('0x35')]()==_0xb4ae('0x36')&&_[_0xb4ae('0x37')](_0x44743f[_0xb4ae('0x33')][_0xb4ae('0x35')](),_0xb4ae('0x38'))){var _0x43d86a=_0x44743f[_0xb4ae('0x33')][_0xb4ae('0x39')]('=');var _0x552901=_0x43d86a[0x0][_0xb4ae('0x3a')](_0x43d86a[0x0][_0xb4ae('0x3b')]('(')+0x1,_0x43d86a[0x0][_0xb4ae('0x3b')](')'));var _0x4a11f4=_0x43d86a[0x1];recordings[_0x44743f['uniqueid']][_0x552901]=_0x4a11f4;}}}catch(_0x56c7cc){utils[_0xb4ae('0x13')](util['format']('[%s][recordings][newexten]',_0x44743f[_0xb4ae('0x6')]),_0x56c7cc);}};exports['queuecallerjoin']=function(_0x492715){try{if(!_['isNil'](recordings[_0x492715[_0xb4ae('0x6')]])){utils['debug'](util[_0xb4ae('0x4')](_0xb4ae('0x3c'),_0x492715[_0xb4ae('0x6')]),_0x492715);utils['info'](util['format']('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x492715[_0xb4ae('0x6')],_0x492715[_0xb4ae('0x3d')]));recordings[_0x492715[_0xb4ae('0x6')]][_0xb4ae('0x3d')]=_0x492715[_0xb4ae('0x3d')];}}catch(_0x1a0f7e){utils[_0xb4ae('0x13')](util[_0xb4ae('0x4')](_0xb4ae('0x3c'),_0x492715['uniqueid']),_0x1a0f7e);}};
\ No newline at end of file
index d4e5d89..929808d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb9=['CreateVoiceTransferReport','debug','format','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereecalleridname','type','blind','attendedtransfer','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','secondtransferercontext','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfertargetchannel','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','error','[%s][transfers][attendedtransfer]','info','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid','uniqueid','request'];(function(_0x3d8771,_0xd79cd9){var _0x28ae9d=function(_0x2f464a){while(--_0x2f464a){_0x3d8771['push'](_0x3d8771['shift']());}};_0x28ae9d(++_0xd79cd9);}(_0xbfb9,0x147));var _0x9bfb=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xbfb9[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require('util');var utils=require('./utils');function writeDB(_0x52f7d3){utils[_0x9bfb('0x0')](util['format'](_0x9bfb('0x1'),_0x52f7d3['type']===_0x9bfb('0x2')?_0x52f7d3[_0x9bfb('0x3')]:_0x52f7d3[_0x9bfb('0x4')],_0x52f7d3['type']));utils[_0x9bfb('0x5')](_0x9bfb('0x6'),_0x52f7d3);}exports['blindtransfer']=function(_0x3af332){try{utils[_0x9bfb('0x7')](util[_0x9bfb('0x8')](_0x9bfb('0x9'),_0x3af332[_0x9bfb('0x4')]),_0x3af332);utils['info'](util['format'](_0x9bfb('0xa'),_0x3af332['uniqueid'],_0x3af332['transferercalleridnum'],_0x3af332[_0x9bfb('0xb')],_0x3af332[_0x9bfb('0xc')],_0x3af332[_0x9bfb('0xd')]));_0x3af332[_0x9bfb('0xe')]=_0x9bfb('0xf');writeDB(_0x3af332);}catch(_0x28b730){utils['error'](util['format']('[%s][transfers][blindtransfer]',_0x3af332[_0x9bfb('0x4')]),_0x28b730);}};exports[_0x9bfb('0x10')]=function(_0x41375f){try{utils[_0x9bfb('0x7')](util[_0x9bfb('0x8')]('[%s][transfers][attendedtransfer]',_0x41375f[_0x9bfb('0x3')]),_0x41375f);utils[_0x9bfb('0x0')](util['format'](_0x9bfb('0x11'),_0x41375f[_0x9bfb('0x3')],_0x41375f[_0x9bfb('0x12')],_0x41375f[_0x9bfb('0x13')],_0x41375f[_0x9bfb('0x14')],_0x41375f[_0x9bfb('0x15')]));_0x41375f=_[_0x9bfb('0x16')](_0x41375f,{'transfererchannel':_0x41375f[_0x9bfb('0x17')],'transferercalleridnum':_0x41375f[_0x9bfb('0x12')],'transferercalleridname':_0x41375f[_0x9bfb('0x13')],'transfererconnectedlinenum':_0x41375f[_0x9bfb('0x18')],'transfererconnectedlinename':_0x41375f['secondtransfererconnectedlinename'],'transfereraccountcode':_0x41375f['origtransfereraccountcode'],'transferercontext':_0x41375f[_0x9bfb('0x19')],'transfererexten':_0x41375f['secondtransfererexten'],'transfererlinkedid':_0x41375f[_0x9bfb('0x1a')],'context':_0x41375f[_0x9bfb('0x1b')],'extension':_0x41375f[_0x9bfb('0x1c')],'type':'attended'});if(_[_0x9bfb('0x1d')](_0x41375f['transfereechannel'])){_0x41375f=_[_0x9bfb('0x16')](_0x41375f,{'transfereechannel':_0x41375f[_0x9bfb('0x1e')],'transfereecalleridnum':_0x41375f[_0x9bfb('0x14')],'transfereecalleridname':_0x41375f[_0x9bfb('0x15')],'transfereeconnectedlinenum':_0x41375f['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x41375f[_0x9bfb('0x1f')],'transfereeaccountcode':_0x41375f[_0x9bfb('0x20')],'transfereecontext':_0x41375f[_0x9bfb('0x21')],'transfereeexten':_0x41375f['transfertargetexten'],'transfereelinkedid':_0x41375f[_0x9bfb('0x22')]});}writeDB(_0x41375f);}catch(_0x5336a3){utils[_0x9bfb('0x23')](util[_0x9bfb('0x8')](_0x9bfb('0x24'),_0x41375f['origtransfereruniqueid']),_0x5336a3);}};
\ No newline at end of file
+var _0xf32a=['transfertargetlinkedid','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','CreateVoiceTransferReport','blindtransfer','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','error','[%s][transfers][blindtransfer]','attendedtransfer','debug','[%s][transfers][attendedtransfer]','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transfertargetcalleridname','assign','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','origtransfererexten','isNil','transfereechannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten'];(function(_0x3746fd,_0x596976){var _0x3dd97a=function(_0x4d893a){while(--_0x4d893a){_0x3746fd['push'](_0x3746fd['shift']());}};_0x3dd97a(++_0x596976);}(_0xf32a,0x19b));var _0xaf32=function(_0x9c1b6b,_0x17f5f5){_0x9c1b6b=_0x9c1b6b-0x0;var _0xdf303e=_0xf32a[_0x9c1b6b];return _0xdf303e;};'use strict';var _=require(_0xaf32('0x0'));var util=require(_0xaf32('0x1'));var utils=require(_0xaf32('0x2'));function writeDB(_0x416ed3){utils[_0xaf32('0x3')](util[_0xaf32('0x4')](_0xaf32('0x5'),_0x416ed3[_0xaf32('0x6')]===_0xaf32('0x7')?_0x416ed3['origtransfereruniqueid']:_0x416ed3[_0xaf32('0x8')],_0x416ed3[_0xaf32('0x6')]));utils['request'](_0xaf32('0x9'),_0x416ed3);}exports[_0xaf32('0xa')]=function(_0x3b0085){try{utils['debug'](util['format']('[%s][transfers][blindtransfer]',_0x3b0085[_0xaf32('0x8')]),_0x3b0085);utils[_0xaf32('0x3')](util[_0xaf32('0x4')](_0xaf32('0xb'),_0x3b0085[_0xaf32('0x8')],_0x3b0085[_0xaf32('0xc')],_0x3b0085[_0xaf32('0xd')],_0x3b0085[_0xaf32('0xe')],_0x3b0085[_0xaf32('0xf')]));_0x3b0085['type']=_0xaf32('0x10');writeDB(_0x3b0085);}catch(_0x1d9caf){utils[_0xaf32('0x11')](util[_0xaf32('0x4')](_0xaf32('0x12'),_0x3b0085['uniqueid']),_0x1d9caf);}};exports[_0xaf32('0x13')]=function(_0x50c1a6){try{utils[_0xaf32('0x14')](util[_0xaf32('0x4')](_0xaf32('0x15'),_0x50c1a6[_0xaf32('0x16')]),_0x50c1a6);utils[_0xaf32('0x3')](util[_0xaf32('0x4')](_0xaf32('0x17'),_0x50c1a6[_0xaf32('0x16')],_0x50c1a6['origtransferercalleridnum'],_0x50c1a6['origtransferercalleridname'],_0x50c1a6['transfertargetcalleridnum'],_0x50c1a6[_0xaf32('0x18')]));_0x50c1a6=_[_0xaf32('0x19')](_0x50c1a6,{'transfererchannel':_0x50c1a6['origtransfererchannel'],'transferercalleridnum':_0x50c1a6[_0xaf32('0x1a')],'transferercalleridname':_0x50c1a6[_0xaf32('0x1b')],'transfererconnectedlinenum':_0x50c1a6['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x50c1a6[_0xaf32('0x1c')],'transfereraccountcode':_0x50c1a6[_0xaf32('0x1d')],'transferercontext':_0x50c1a6[_0xaf32('0x1e')],'transfererexten':_0x50c1a6['secondtransfererexten'],'transfererlinkedid':_0x50c1a6[_0xaf32('0x1f')],'context':_0x50c1a6['origtransferercontext'],'extension':_0x50c1a6[_0xaf32('0x20')],'type':'attended'});if(_[_0xaf32('0x21')](_0x50c1a6[_0xaf32('0x22')])){_0x50c1a6=_[_0xaf32('0x19')](_0x50c1a6,{'transfereechannel':_0x50c1a6['transfertargetchannel'],'transfereecalleridnum':_0x50c1a6[_0xaf32('0x23')],'transfereecalleridname':_0x50c1a6[_0xaf32('0x18')],'transfereeconnectedlinenum':_0x50c1a6[_0xaf32('0x24')],'transfereeconnectedlinename':_0x50c1a6[_0xaf32('0x25')],'transfereeaccountcode':_0x50c1a6['transfertargetaccountcode'],'transfereecontext':_0x50c1a6[_0xaf32('0x26')],'transfereeexten':_0x50c1a6[_0xaf32('0x27')],'transfereelinkedid':_0x50c1a6[_0xaf32('0x28')]});}writeDB(_0x50c1a6);}catch(_0x24f196){utils[_0xaf32('0x11')](util[_0xaf32('0x4')]('[%s][transfers][attendedtransfer]',_0x50c1a6['origtransfereruniqueid']),_0x24f196);}};
\ No newline at end of file
index 7f7be35..64b7f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c75=['stringify','result','length','getUserByInternal','then','found','notfound','[utils][getUserByInternal]','getUserByInterface','catch','getUserByName','[utils][getUserByName]','getVoiceQueueByName','name','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','addTime','add','format','YYYY-MM-DD\x20HH:mm:ss','subtract','seconds','diffTime','sumTime','now','isAfter','isBefore','bluebird','client','http','../../config/logger','xdr','info','inspect','debug','error','request','[utils][request]\x20name:%s','internal','interface','[utils][getUser]\x20where:%s'];(function(_0x43e788,_0x46ef81){var _0x27d739=function(_0x23a3d0){while(--_0x23a3d0){_0x43e788['push'](_0x43e788['shift']());}};_0x27d739(++_0x46ef81);}(_0x1c75,0xce));var _0x51c7=function(_0x35639c,_0xfba17c){_0x35639c=_0x35639c-0x0;var _0x1ca47a=_0x1c75[_0x35639c];return _0x1ca47a;};'use strict';var BPromise=require(_0x51c7('0x0'));var jayson=require('jayson/promise');var moment=require('moment');var util=require('util');var client=jayson[_0x51c7('0x1')][_0x51c7('0x2')]({'port':0x2329});var logger=require(_0x51c7('0x3'))(_0x51c7('0x4'));exports[_0x51c7('0x5')]=function(_0x1fc6c4,_0x17e359){logger[_0x51c7('0x5')](_0x1fc6c4,_0x17e359?util[_0x51c7('0x6')](_0x17e359,{'showHidden':![],'depth':null}):'');};exports[_0x51c7('0x7')]=function(_0x283d6b,_0x56b9a0){logger[_0x51c7('0x7')](_0x283d6b,_0x56b9a0?util[_0x51c7('0x6')](_0x56b9a0,{'showHidden':![],'depth':null}):'');};exports[_0x51c7('0x8')]=function(_0x29a8aa,_0x48d756){logger[_0x51c7('0x8')](_0x29a8aa,_0x48d756?util['inspect'](_0x48d756,{'showHidden':![],'depth':null}):'');};exports[_0x51c7('0x9')]=function(_0x5692a7,_0x179902){return client[_0x51c7('0x9')](_0x5692a7,{'body':_0x179902})['then'](function(_0x455681){logger[_0x51c7('0x7')](_0x51c7('0xa'),_0x5692a7,_0x455681?util['inspect'](_0x455681,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x52fa27){logger[_0x51c7('0x8')](_0x51c7('0xa'),_0x5692a7,_0x52fa27?util[_0x51c7('0x6')](_0x52fa27,{'showHidden':![],'depth':null}):'');});};function getUser(_0x5bce14){return client[_0x51c7('0x9')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0x51c7('0xb'),'name',_0x51c7('0xc')],'where':_0x5bce14,'limit':0x1}})['then'](function(_0x730429){logger[_0x51c7('0x7')](_0x51c7('0xd'),JSON[_0x51c7('0xe')](_0x5bce14),_0x730429?util['inspect'](_0x730429,{'showHidden':![],'depth':null}):'');return _0x730429[_0x51c7('0xf')][_0x51c7('0x10')]?_0x730429[_0x51c7('0xf')][0x0]:null;});}exports[_0x51c7('0x11')]=function(_0x209ab3){return new BPromise(function(_0x36b29a,_0x4a64e4){if(_0x209ab3){return getUser({'internal':_0x209ab3})[_0x51c7('0x12')](function(_0x8dd5b0){logger[_0x51c7('0x5')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x209ab3,_0x8dd5b0?_0x51c7('0x13'):_0x51c7('0x14'));return _0x36b29a(_0x8dd5b0);})['catch'](function(_0x588743){logger[_0x51c7('0x8')](_0x51c7('0x15'),_0x588743?util[_0x51c7('0x6')](_0x588743,{'showHidden':![],'depth':null}):'');return _0x36b29a(null);});}return _0x36b29a(null);});};exports[_0x51c7('0x16')]=function(_0x4072b9){return new BPromise(function(_0x3a7c98,_0x2d084e){if(_0x4072b9){return getUser({'interface':_0x4072b9})['then'](function(_0x3dbfbc){logger[_0x51c7('0x5')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x4072b9,_0x3dbfbc?_0x51c7('0x13'):'notfound');return _0x3a7c98(_0x3dbfbc);})[_0x51c7('0x17')](function(_0x3f7858){logger[_0x51c7('0x8')]('[utils][getUserByInterface]',_0x3f7858?util[_0x51c7('0x6')](_0x3f7858,{'showHidden':![],'depth':null}):'');return _0x3a7c98(null);});}return _0x3a7c98(null);});};exports[_0x51c7('0x18')]=function(_0x44b057){return new BPromise(function(_0x13a3ad,_0x44de99){if(_0x44b057){return getUser({'name':_0x44b057})[_0x51c7('0x12')](function(_0x57fe70){logger[_0x51c7('0x5')]('[utils][getUserByName]\x20name:%s\x20%s',_0x44b057,_0x57fe70?_0x51c7('0x13'):_0x51c7('0x14'));return _0x13a3ad(_0x57fe70);})[_0x51c7('0x17')](function(_0x1c29fb){logger[_0x51c7('0x8')](_0x51c7('0x19'),_0x1c29fb?util[_0x51c7('0x6')](_0x1c29fb,{'showHidden':![],'depth':null}):'');return _0x13a3ad(null);});}return _0x13a3ad(null);});};exports[_0x51c7('0x1a')]=function(_0x42745b){return new BPromise(function(_0x2a18e0,_0x104315){if(_0x42745b){return client[_0x51c7('0x9')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0x51c7('0x1b'),_0x51c7('0x1c'),_0x51c7('0x1d'),_0x51c7('0x1e')],'where':{'name':_0x42745b},'limit':0x1}})['then'](function(_0x21ff27){logger[_0x51c7('0x7')](_0x51c7('0x1f'),_0x42745b,_0x21ff27?util[_0x51c7('0x6')](_0x21ff27,{'showHidden':![],'depth':null}):'');logger[_0x51c7('0x5')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x42745b,_0x21ff27?_0x51c7('0x13'):'notfound');return _0x2a18e0(_0x21ff27[_0x51c7('0xf')][_0x51c7('0x10')]?_0x21ff27[_0x51c7('0xf')][0x0]:null);})[_0x51c7('0x17')](function(_0x3d1de8){logger[_0x51c7('0x8')](_0x51c7('0x20'),_0x3d1de8?util[_0x51c7('0x6')](_0x3d1de8,{'showHidden':![],'depth':null}):'');return _0x2a18e0(null);});}return _0x2a18e0(null);});};exports[_0x51c7('0x21')]=function(_0x328814,_0x48aa16){return moment(_0x328814)[_0x51c7('0x22')](_0x48aa16,'seconds')[_0x51c7('0x23')](_0x51c7('0x24'));};exports['subtractTime']=function(_0x458a1a,_0x18ff99){return moment(_0x458a1a)[_0x51c7('0x25')](_0x18ff99,_0x51c7('0x26'))['format'](_0x51c7('0x24'));};exports[_0x51c7('0x27')]=function(_0x424d63,_0x5d7410){return moment(_0x424d63)['diff'](moment(_0x5d7410),_0x51c7('0x26'));};exports[_0x51c7('0x28')]=function(_0x13fa10,_0x39ba1e){return parseInt(_0x13fa10,0xa)+parseInt(_0x39ba1e,0xa);};exports[_0x51c7('0x29')]=function(){return moment()['format'](_0x51c7('0x24'));};exports['isAfter']=function(_0x12281b,_0x5763d8){if(_0x5763d8){return moment(_0x12281b)[_0x51c7('0x2a')](_0x5763d8);}return!![];};exports[_0x51c7('0x2b')]=function(_0x4fa4c4,_0x1586d3){if(_0x1586d3){return moment(_0x4fa4c4)[_0x51c7('0x2b')](_0x1586d3);}else if(_0x4fa4c4){return!![];}return![];};
\ No newline at end of file
+var _0x2e79=['YYYY-MM-DD\x20HH:mm:ss','diffTime','now','isAfter','isBefore','bluebird','moment','util','client','http','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','getVoiceQueueByName','GetVoiceQueue','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','seconds','format','subtractTime','subtract'];(function(_0x3aaf10,_0xfbcca0){var _0x1ace66=function(_0x22fc2f){while(--_0x22fc2f){_0x3aaf10['push'](_0x3aaf10['shift']());}};_0x1ace66(++_0xfbcca0);}(_0x2e79,0x155));var _0x92e7=function(_0xd1fc7,_0x1524f7){_0xd1fc7=_0xd1fc7-0x0;var _0x5b75e7=_0x2e79[_0xd1fc7];return _0x5b75e7;};'use strict';var BPromise=require(_0x92e7('0x0'));var jayson=require('jayson/promise');var moment=require(_0x92e7('0x1'));var util=require(_0x92e7('0x2'));var client=jayson[_0x92e7('0x3')][_0x92e7('0x4')]({'port':0x2329});var logger=require(_0x92e7('0x5'))(_0x92e7('0x6'));exports[_0x92e7('0x7')]=function(_0x2f2f7d,_0x4f115a){logger[_0x92e7('0x7')](_0x2f2f7d,_0x4f115a?util[_0x92e7('0x8')](_0x4f115a,{'showHidden':![],'depth':null}):'');};exports[_0x92e7('0x9')]=function(_0x2cf04c,_0x1d0a5d){logger[_0x92e7('0x9')](_0x2cf04c,_0x1d0a5d?util[_0x92e7('0x8')](_0x1d0a5d,{'showHidden':![],'depth':null}):'');};exports[_0x92e7('0xa')]=function(_0x35a8a3,_0xc6e067){logger['error'](_0x35a8a3,_0xc6e067?util[_0x92e7('0x8')](_0xc6e067,{'showHidden':![],'depth':null}):'');};exports[_0x92e7('0xb')]=function(_0x2c1353,_0x45eb28){return client[_0x92e7('0xb')](_0x2c1353,{'body':_0x45eb28})[_0x92e7('0xc')](function(_0x2c8eaf){logger[_0x92e7('0x9')](_0x92e7('0xd'),_0x2c1353,_0x2c8eaf?util['inspect'](_0x2c8eaf,{'showHidden':![],'depth':null}):'');})[_0x92e7('0xe')](function(_0xa3a6ee){logger[_0x92e7('0xa')](_0x92e7('0xd'),_0x2c1353,_0xa3a6ee?util[_0x92e7('0x8')](_0xa3a6ee,{'showHidden':![],'depth':null}):'');});};function getUser(_0x117025){return client['request'](_0x92e7('0xf'),{'options':{'raw':!![],'attributes':['id',_0x92e7('0x10'),_0x92e7('0x11'),_0x92e7('0x12')],'where':_0x117025,'limit':0x1}})[_0x92e7('0xc')](function(_0x440f60){logger[_0x92e7('0x9')](_0x92e7('0x13'),JSON[_0x92e7('0x14')](_0x117025),_0x440f60?util[_0x92e7('0x8')](_0x440f60,{'showHidden':![],'depth':null}):'');return _0x440f60[_0x92e7('0x15')][_0x92e7('0x16')]?_0x440f60[_0x92e7('0x15')][0x0]:null;});}exports[_0x92e7('0x17')]=function(_0x423013){return new BPromise(function(_0x1757c1,_0xdc53e0){if(_0x423013){return getUser({'internal':_0x423013})[_0x92e7('0xc')](function(_0x5e5c18){logger[_0x92e7('0x7')](_0x92e7('0x18'),_0x423013,_0x5e5c18?_0x92e7('0x19'):_0x92e7('0x1a'));return _0x1757c1(_0x5e5c18);})[_0x92e7('0xe')](function(_0x49d217){logger['error'](_0x92e7('0x1b'),_0x49d217?util[_0x92e7('0x8')](_0x49d217,{'showHidden':![],'depth':null}):'');return _0x1757c1(null);});}return _0x1757c1(null);});};exports[_0x92e7('0x1c')]=function(_0x31f159){return new BPromise(function(_0xda5cc4,_0x535a58){if(_0x31f159){return getUser({'interface':_0x31f159})[_0x92e7('0xc')](function(_0x5589c3){logger[_0x92e7('0x7')](_0x92e7('0x1d'),_0x31f159,_0x5589c3?'found':_0x92e7('0x1a'));return _0xda5cc4(_0x5589c3);})[_0x92e7('0xe')](function(_0x22ad50){logger['error'](_0x92e7('0x1e'),_0x22ad50?util[_0x92e7('0x8')](_0x22ad50,{'showHidden':![],'depth':null}):'');return _0xda5cc4(null);});}return _0xda5cc4(null);});};exports[_0x92e7('0x1f')]=function(_0x5397d9){return new BPromise(function(_0x1ea5fc,_0x265e95){if(_0x5397d9){return getUser({'name':_0x5397d9})['then'](function(_0x540c5e){logger[_0x92e7('0x7')](_0x92e7('0x20'),_0x5397d9,_0x540c5e?_0x92e7('0x19'):_0x92e7('0x1a'));return _0x1ea5fc(_0x540c5e);})[_0x92e7('0xe')](function(_0x4d8fdf){logger[_0x92e7('0xa')]('[utils][getUserByName]',_0x4d8fdf?util[_0x92e7('0x8')](_0x4d8fdf,{'showHidden':![],'depth':null}):'');return _0x1ea5fc(null);});}return _0x1ea5fc(null);});};exports[_0x92e7('0x21')]=function(_0x18d47e){return new BPromise(function(_0x56ef77,_0x11adc9){if(_0x18d47e){return client['request'](_0x92e7('0x22'),{'options':{'raw':!![],'attributes':['id',_0x92e7('0x11'),'type','acw',_0x92e7('0x23')],'where':{'name':_0x18d47e},'limit':0x1}})[_0x92e7('0xc')](function(_0x27b2c6){logger[_0x92e7('0x9')](_0x92e7('0x24'),_0x18d47e,_0x27b2c6?util['inspect'](_0x27b2c6,{'showHidden':![],'depth':null}):'');logger['info'](_0x92e7('0x25'),_0x18d47e,_0x27b2c6?'found':_0x92e7('0x1a'));return _0x56ef77(_0x27b2c6[_0x92e7('0x15')][_0x92e7('0x16')]?_0x27b2c6[_0x92e7('0x15')][0x0]:null);})[_0x92e7('0xe')](function(_0x57d77c){logger[_0x92e7('0xa')](_0x92e7('0x26'),_0x57d77c?util[_0x92e7('0x8')](_0x57d77c,{'showHidden':![],'depth':null}):'');return _0x56ef77(null);});}return _0x56ef77(null);});};exports['addTime']=function(_0x2529dc,_0x3b08ef){return moment(_0x2529dc)['add'](_0x3b08ef,_0x92e7('0x27'))[_0x92e7('0x28')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x92e7('0x29')]=function(_0x3bd8e4,_0x2769bb){return moment(_0x3bd8e4)[_0x92e7('0x2a')](_0x2769bb,_0x92e7('0x27'))[_0x92e7('0x28')](_0x92e7('0x2b'));};exports[_0x92e7('0x2c')]=function(_0x64509b,_0x2059d3){return moment(_0x64509b)['diff'](moment(_0x2059d3),_0x92e7('0x27'));};exports['sumTime']=function(_0x5690a1,_0x290966){return parseInt(_0x5690a1,0xa)+parseInt(_0x290966,0xa);};exports[_0x92e7('0x2d')]=function(){return moment()['format'](_0x92e7('0x2b'));};exports[_0x92e7('0x2e')]=function(_0x58c46a,_0x138e9b){if(_0x138e9b){return moment(_0x58c46a)[_0x92e7('0x2e')](_0x138e9b);}return!![];};exports['isBefore']=function(_0x7b5c54,_0x38adf2){if(_0x38adf2){return moment(_0x7b5c54)[_0x92e7('0x2f')](_0x38adf2);}else if(_0x7b5c54){return!![];}return![];};
\ No newline at end of file
index 78d255d..1f45c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd57=['\x20body=%s','format','headers','remoteAddress','statusCode','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','method','x-forwarded-for','connection','url','agent_name','test','setupLoggers','fs-extra','lodash','path','util','./loggers','fileLogger','safeTemplate','/var','xcally','join','role','name','ensureDir','then','client','catch','log','user','no-user','data','timestamp','error','api','auth','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body'];(function(_0x4c6ad2,_0x51092b){var _0x215c13=function(_0xf76c84){while(--_0xf76c84){_0x4c6ad2['push'](_0x4c6ad2['shift']());}};_0x215c13(++_0x51092b);}(_0xfd57,0x12b));var _0x7fd5=function(_0x593097,_0x4567c2){_0x593097=_0x593097-0x0;var _0x3c46cd=_0xfd57[_0x593097];return _0x3c46cd;};var fs=require(_0x7fd5('0x0'));var _=require(_0x7fd5('0x1'));var ewinston=require('express-winston');var path=require(_0x7fd5('0x2'));var util=require(_0x7fd5('0x3'));var fileLogger=require(_0x7fd5('0x4'))[_0x7fd5('0x5')];var safeTemplate=require('./safe-template')[_0x7fd5('0x6')];var maskSensitiveData=require('./mask-sensitive-data')['maskSensitiveData'];function ClientSideLogger(){function _0x12dedd(_0xa857c4){var _0x29c9d0=path['join'](_0x7fd5('0x7'),'log',_0x7fd5('0x8'));var _0x23ffa9=path[_0x7fd5('0x9')]('client',_0xa857c4[_0x7fd5('0xa')]+'-'+_0xa857c4[_0x7fd5('0xb')]);return fs[_0x7fd5('0xc')](path[_0x7fd5('0x9')](_0x29c9d0,_0x23ffa9))[_0x7fd5('0xd')](function(){var _0x572247=fileLogger(_0x7fd5('0xe'),path[_0x7fd5('0x9')](_0x29c9d0,_0x23ffa9));return _0x572247;})[_0x7fd5('0xf')](function(_0x2cc706){throw _0x2cc706;});}this[_0x7fd5('0x10')]=function(_0x55afb2,_0xaf4657,_0x3e9ed9,_0x35274f){return _0x12dedd(_0x55afb2[_0x7fd5('0x11')])['then'](function(_0xdb0553){var _0x14e08e=_0xdb0553[_0xaf4657];return _0x14e08e;})['then'](function(_0x3858b6){var _0x116314=_0x55afb2[_0x7fd5('0x11')]?_0x55afb2[_0x7fd5('0x11')]['id']:_0x7fd5('0x12');var _0x310025=_0x35274f[_0x7fd5('0x13')];var _0x4aa4fd=_0x35274f[_0x7fd5('0x14')];var _0x21aaf3=new Date(Number(_0x4aa4fd));return _0x3858b6(_0x116314,_0x21aaf3,_0x3e9ed9,_0x310025);})[_0x7fd5('0xf')](function(_0x366069){fileLogger(_0x7fd5('0xe'))[_0x7fd5('0x15')](_0x366069);});};}function setupLoggers(_0x2a6fcf){return new Promise(function(_0x52badb){var _0x2c54c5=new ClientSideLogger();var _0xfa216d=fileLogger(_0x7fd5('0x16'));var _0x132853=fileLogger(_0x7fd5('0x17'));_0x2a6fcf['set'](_0x7fd5('0x18'),_0x2c54c5);_0x2a6fcf[_0x7fd5('0x19')](ewinston[_0x7fd5('0x1a')]({'winstonInstance':_0xfa216d,'meta':![],'statusLevels':!![],'msg':function(_0x3eec2b,_0x14e329){var _0x538d73=_0x7fd5('0x1b');if(!_[_0x7fd5('0x1c')](_0x3eec2b[_0x7fd5('0x1d')])){_0x538d73+=_0x7fd5('0x1e');var _0x51e03e=_0x3eec2b[_0x7fd5('0x1d')];maskSensitiveData(_0x51e03e);}return safeTemplate(util[_0x7fd5('0x1f')](_0x538d73,_0x3eec2b['method'],_0x3eec2b[_0x7fd5('0x20')]['x-forwarded-for']?_0x3eec2b[_0x7fd5('0x20')]['x-forwarded-for']:_0x3eec2b['connection'][_0x7fd5('0x21')]||_0x3eec2b['ip'],_0x3eec2b['url'],_0x14e329[_0x7fd5('0x22')],_0x14e329['responseTime'],_0x3eec2b[_0x7fd5('0x11')]?_0x3eec2b['user']['id']:null,_0x3eec2b[_0x7fd5('0x11')]?_0x3eec2b[_0x7fd5('0x11')][_0x7fd5('0xb')]:null,_0x3eec2b[_0x7fd5('0x11')]?_0x3eec2b[_0x7fd5('0x11')][_0x7fd5('0xa')]:null,_0x51e03e?util[_0x7fd5('0x23')](_0x51e03e,![],null):''));}}));_0x2a6fcf[_0x7fd5('0x19')](ewinston[_0x7fd5('0x1a')]({'winstonInstance':_0x132853,'meta':![],'statusLevels':!![],'msg':function(_0x422eb9,_0x1886ce){var _0x529d8e=_0x7fd5('0x24');if(_0x422eb9[_0x7fd5('0x1d')]&&_0x422eb9[_0x7fd5('0x1d')][_0x7fd5('0x25')]&&_0x422eb9[_0x7fd5('0x1d')][_0x7fd5('0x26')]){_0x529d8e=_0x7fd5('0x27');}return util[_0x7fd5('0x1f')](_0x529d8e,_0x422eb9[_0x7fd5('0x28')],_0x422eb9[_0x7fd5('0x20')][_0x7fd5('0x29')]?_0x422eb9['headers'][_0x7fd5('0x29')]:_0x422eb9[_0x7fd5('0x2a')][_0x7fd5('0x21')]||_0x422eb9['ip'],_0x422eb9[_0x7fd5('0x2b')],_0x1886ce[_0x7fd5('0x22')],_0x1886ce['responseTime'],_0x422eb9[_0x7fd5('0x11')]?_0x422eb9[_0x7fd5('0x11')]['id']:null,_0x422eb9[_0x7fd5('0x11')]?_0x422eb9[_0x7fd5('0x11')]['name']:null,_0x422eb9[_0x7fd5('0x11')]?_0x422eb9[_0x7fd5('0x11')]['role']:null,_0x422eb9[_0x7fd5('0x1d')]&&_0x422eb9[_0x7fd5('0x1d')][_0x7fd5('0x25')]?_0x422eb9['body'][_0x7fd5('0x25')]:'other',_0x422eb9['body']&&_0x422eb9['body']['agent_id']?_0x422eb9[_0x7fd5('0x1d')][_0x7fd5('0x26')]:'',_0x422eb9[_0x7fd5('0x1d')]&&_0x422eb9[_0x7fd5('0x1d')][_0x7fd5('0x2c')]?_0x422eb9[_0x7fd5('0x1d')]['agent_name']:'');},'ignoreRoute':function(_0x42f6e9){var _0x296e48=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x296e48[_0x7fd5('0x2d')](_0x42f6e9[_0x7fd5('0x2b')]);}}));return _0x52badb();});}exports[_0x7fd5('0x2e')]=setupLoggers;
\ No newline at end of file
+var _0xa943=['maskSensitiveData','join','/var','log','xcally','client','role','ensureDir','catch','user','then','no-user','data','error','api','auth','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','\x20body=%s','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','name','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','body','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','setupLoggers','fs-extra','lodash','path','./loggers','./safe-template','./mask-sensitive-data'];(function(_0x4066ef,_0x2694f3){var _0x1049c3=function(_0xdb7606){while(--_0xdb7606){_0x4066ef['push'](_0x4066ef['shift']());}};_0x1049c3(++_0x2694f3);}(_0xa943,0x10e));var _0x3a94=function(_0x1e7ccf,_0x1c602a){_0x1e7ccf=_0x1e7ccf-0x0;var _0x2e6325=_0xa943[_0x1e7ccf];return _0x2e6325;};var fs=require(_0x3a94('0x0'));var _=require(_0x3a94('0x1'));var ewinston=require('express-winston');var path=require(_0x3a94('0x2'));var util=require('util');var fileLogger=require(_0x3a94('0x3'))['fileLogger'];var safeTemplate=require(_0x3a94('0x4'))['safeTemplate'];var maskSensitiveData=require(_0x3a94('0x5'))[_0x3a94('0x6')];function ClientSideLogger(){function _0x5c372f(_0x4b7e61){var _0x480970=path[_0x3a94('0x7')](_0x3a94('0x8'),_0x3a94('0x9'),_0x3a94('0xa'));var _0x2f017c=path['join'](_0x3a94('0xb'),_0x4b7e61[_0x3a94('0xc')]+'-'+_0x4b7e61['name']);return fs[_0x3a94('0xd')](path['join'](_0x480970,_0x2f017c))['then'](function(){var _0x4569ca=fileLogger(_0x3a94('0xb'),path[_0x3a94('0x7')](_0x480970,_0x2f017c));return _0x4569ca;})[_0x3a94('0xe')](function(_0x4437dc){throw _0x4437dc;});}this[_0x3a94('0x9')]=function(_0x5eae99,_0xd0404d,_0x58d32b,_0x1baff1){return _0x5c372f(_0x5eae99[_0x3a94('0xf')])[_0x3a94('0x10')](function(_0x330cc7){var _0x1205be=_0x330cc7[_0xd0404d];return _0x1205be;})[_0x3a94('0x10')](function(_0x592507){var _0x47c8c4=_0x5eae99[_0x3a94('0xf')]?_0x5eae99[_0x3a94('0xf')]['id']:_0x3a94('0x11');var _0x1585f1=_0x1baff1[_0x3a94('0x12')];var _0x412ee7=_0x1baff1['timestamp'];var _0x391218=new Date(Number(_0x412ee7));return _0x592507(_0x47c8c4,_0x391218,_0x58d32b,_0x1585f1);})[_0x3a94('0xe')](function(_0x19ad96){fileLogger(_0x3a94('0xb'))[_0x3a94('0x13')](_0x19ad96);});};}function setupLoggers(_0x119557){return new Promise(function(_0x40ba04){var _0x180479=new ClientSideLogger();var _0xa32bc9=fileLogger(_0x3a94('0x14'));var _0x533e15=fileLogger(_0x3a94('0x15'));_0x119557['set'](_0x3a94('0x16'),_0x180479);_0x119557[_0x3a94('0x17')](ewinston[_0x3a94('0x18')]({'winstonInstance':_0xa32bc9,'meta':![],'statusLevels':!![],'msg':function(_0x1aa839,_0xe44242){var _0x92f8eb=_0x3a94('0x19');if(!_[_0x3a94('0x1a')](_0x1aa839['body'])){_0x92f8eb+=_0x3a94('0x1b');var _0x452586=_0x1aa839['body'];maskSensitiveData(_0x452586);}return safeTemplate(util[_0x3a94('0x1c')](_0x92f8eb,_0x1aa839[_0x3a94('0x1d')],_0x1aa839[_0x3a94('0x1e')][_0x3a94('0x1f')]?_0x1aa839[_0x3a94('0x1e')]['x-forwarded-for']:_0x1aa839[_0x3a94('0x20')][_0x3a94('0x21')]||_0x1aa839['ip'],_0x1aa839[_0x3a94('0x22')],_0xe44242[_0x3a94('0x23')],_0xe44242[_0x3a94('0x24')],_0x1aa839[_0x3a94('0xf')]?_0x1aa839[_0x3a94('0xf')]['id']:null,_0x1aa839[_0x3a94('0xf')]?_0x1aa839[_0x3a94('0xf')][_0x3a94('0x25')]:null,_0x1aa839['user']?_0x1aa839[_0x3a94('0xf')]['role']:null,_0x452586?util['inspect'](_0x452586,![],null):''));}}));_0x119557[_0x3a94('0x17')](ewinston['logger']({'winstonInstance':_0x533e15,'meta':![],'statusLevels':!![],'msg':function(_0x264732,_0xa8e362){var _0x5dfb3e=_0x3a94('0x26');if(_0x264732[_0x3a94('0x27')]&&_0x264732[_0x3a94('0x27')][_0x3a94('0x28')]&&_0x264732[_0x3a94('0x27')][_0x3a94('0x29')]){_0x5dfb3e=_0x3a94('0x2a');}return util[_0x3a94('0x1c')](_0x5dfb3e,_0x264732['method'],_0x264732['headers'][_0x3a94('0x1f')]?_0x264732['headers'][_0x3a94('0x1f')]:_0x264732[_0x3a94('0x20')][_0x3a94('0x21')]||_0x264732['ip'],_0x264732[_0x3a94('0x22')],_0xa8e362['statusCode'],_0xa8e362[_0x3a94('0x24')],_0x264732[_0x3a94('0xf')]?_0x264732['user']['id']:null,_0x264732[_0x3a94('0xf')]?_0x264732['user']['name']:null,_0x264732[_0x3a94('0xf')]?_0x264732[_0x3a94('0xf')][_0x3a94('0xc')]:null,_0x264732['body']&&_0x264732[_0x3a94('0x27')][_0x3a94('0x28')]?_0x264732['body'][_0x3a94('0x28')]:_0x3a94('0x2b'),_0x264732[_0x3a94('0x27')]&&_0x264732[_0x3a94('0x27')]['agent_id']?_0x264732['body']['agent_id']:'',_0x264732[_0x3a94('0x27')]&&_0x264732['body'][_0x3a94('0x2c')]?_0x264732[_0x3a94('0x27')]['agent_name']:'');},'ignoreRoute':function(_0x4d2b57){var _0x166ebd=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x166ebd['test'](_0x4d2b57[_0x3a94('0x22')]);}}));return _0x40ba04();});}exports[_0x3a94('0x2d')]=setupLoggers;
\ No newline at end of file
index be84f75..91f482e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda60=['isValid','split','map','locale','weekdaysShort','toLowerCase','indexOf','slice','concat','exports','circularDoWInterval','monthsShort','circularMonthInterval','clone','minutes','hours','startOf','day','endOf','isBetween','timeCompare','format','ddd','includes','dowCompare','date','min','MMM','monthCompare','guess','test','isMoment','padStart','length','iftime','lodash','moment-timezone','source'];(function(_0x59c129,_0x5e7e14){var _0x2e1d74=function(_0x53f809){while(--_0x53f809){_0x59c129['push'](_0x59c129['shift']());}};_0x2e1d74(++_0x5e7e14);}(_0xda60,0x179));var _0x0da6=function(_0x5f0ecc,_0x51c82e){_0x5f0ecc=_0x5f0ecc-0x0;var _0x5e0cbe=_0xda60[_0x5f0ecc];return _0x5e0cbe;};var _=require(_0x0da6('0x0'));var moment=require(_0x0da6('0x1'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx]['map'](function(_0x31bd79){return _0x31bd79[_0x0da6('0x2')];})['join'](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING='Interval\x20string\x20not\x20valid';var EINVALID_DATE='Date\x20not\x20valid';function throwIfDateNotValid(_0x198632){if(!_0x198632[_0x0da6('0x3')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x58e689){var _0x20ffa6=_0x58e689[_0x0da6('0x4')](':')[_0x0da6('0x5')](function(_0xcf20aa){return parseInt(_0xcf20aa,0xa);});var _0x4982ad=_0x20ffa6[0x0];var _0x30d808=_0x20ffa6[0x1];if(_0x4982ad<0x0||_0x4982ad>0x17||_0x30d808<0x0||_0x30d808>0x3b){throw new Error(EINVALID_DATE);}return[_0x4982ad,_0x30d808];}function circularDoWInterval(_0x4bf0ae,_0x58d1d6){if(_0x4bf0ae===_0x58d1d6){return[_0x4bf0ae];}else{var _0x23ae39=moment[_0x0da6('0x6')]();moment[_0x0da6('0x6')]('en');var _0x7bcc15=moment[_0x0da6('0x7')]()[_0x0da6('0x5')](function(_0x3d10ad){return _0x3d10ad[_0x0da6('0x8')]();});moment[_0x0da6('0x6')](_0x23ae39);var _0x111bdf=_0x7bcc15[_0x0da6('0x9')](_0x4bf0ae);var _0x84c4ae=_0x7bcc15['indexOf'](_0x58d1d6);if(_0x84c4ae>_0x111bdf){return _0x7bcc15[_0x0da6('0xa')](_0x111bdf,_0x84c4ae+0x1);}else{var _0x9d6226=_0x7bcc15['slice'](0x0,_0x84c4ae+0x1);var _0x146ad6=_0x7bcc15[_0x0da6('0xa')](_0x111bdf);return _0x146ad6[_0x0da6('0xb')](_0x9d6226);}}}module[_0x0da6('0xc')][_0x0da6('0xd')]=circularDoWInterval;function circularMonthInterval(_0xa81752,_0x49d017){if(_0xa81752===_0x49d017){return[_0xa81752];}else{var _0x44f9db=moment[_0x0da6('0x6')]();moment['locale']('en');var _0x339c74=moment[_0x0da6('0xe')]()[_0x0da6('0x5')](function(_0x51a945){return _0x51a945[_0x0da6('0x8')]();});moment['locale'](_0x44f9db);var _0x3fdd51=_0x339c74[_0x0da6('0x9')](_0xa81752);var _0x2e7e6a=_0x339c74[_0x0da6('0x9')](_0x49d017);if(_0x2e7e6a>_0x3fdd51){return _0x339c74[_0x0da6('0xa')](_0x3fdd51,_0x2e7e6a+0x1);}else{var _0x46edab=_0x339c74[_0x0da6('0xa')](0x0,_0x2e7e6a+0x1);var _0x375c05=_0x339c74[_0x0da6('0xa')](_0x3fdd51);return _0x375c05[_0x0da6('0xb')](_0x46edab);}}}module[_0x0da6('0xc')][_0x0da6('0xf')]=circularMonthInterval;function parseDom(_0x44a13c){var _0x221b4c=parseInt(_0x44a13c,0xa);if(_0x221b4c<0x1||_0x221b4c>0x1f){throw new Error(EINVALID_DATE);}return _0x221b4c;}function timeCompare(_0x329258,_0x97cb84,_0x4f0d67){var _0x774733=_0x329258[_0x0da6('0x10')]();var _0x5696ad=extractTime(_0x97cb84);var _0x39eed8=_0x5696ad[0x0];var _0x486b8d=_0x5696ad[0x1];var _0x4e8644=_0x329258[_0x0da6('0x10')]()['hours'](_0x39eed8)[_0x0da6('0x11')](_0x486b8d);throwIfDateNotValid(_0x4e8644);var _0x44b760=extractTime(_0x4f0d67);var _0x151b80=_0x44b760[0x0];var _0x486195=_0x44b760[0x1];var _0x56dcee=_0x329258[_0x0da6('0x10')]()[_0x0da6('0x12')](_0x151b80)[_0x0da6('0x11')](_0x486195);throwIfDateNotValid(_0x56dcee);if(_0x56dcee['isBefore'](_0x4e8644)){var _0x224cb5=_0x774733[_0x0da6('0x10')]()[_0x0da6('0x13')](_0x0da6('0x14'));var _0x2c98d0=_0x774733['clone']()[_0x0da6('0x15')](_0x0da6('0x14'));return _0x774733[_0x0da6('0x16')](_0x4e8644,_0x2c98d0,undefined,'[]')||_0x774733['isBetween'](_0x224cb5,_0x56dcee,undefined,'[]');}else{return _0x774733['isBetween'](_0x4e8644,_0x56dcee,undefined,'[]');}}module['exports'][_0x0da6('0x17')]=timeCompare;function dowCompare(_0x394c91,_0x4a7608,_0x38b68b){var _0x7eeea6=_0x394c91['locale']('en')[_0x0da6('0x18')](_0x0da6('0x19'))[_0x0da6('0x8')]();return circularDoWInterval(_0x4a7608,_0x38b68b)[_0x0da6('0x1a')](_0x7eeea6);}module[_0x0da6('0xc')][_0x0da6('0x1b')]=dowCompare;function domCompare(_0x49ec5d,_0x111f7d,_0x30ca04){var _0x20be78=_0x49ec5d[_0x0da6('0x1c')]();if(_0x111f7d===_0x30ca04){return _0x20be78===_0x111f7d;}else{var _0x261f82=_0x49ec5d['daysInMonth']();var _0x487281=_0x111f7d<_0x30ca04;let _0x2f7596=![];var _0x3e62f3=0x0;var _0x1efd6b=0x0;if(_0x487281){_0x3e62f3=Math['max'](0x1,_0x111f7d);_0x1efd6b=Math[_0x0da6('0x1d')](_0x30ca04,_0x261f82);_0x2f7596=_0x20be78>=_0x3e62f3&&_0x20be78<=_0x1efd6b;}else{_0x3e62f3=Math['min'](_0x111f7d,_0x261f82);_0x1efd6b=Math['max'](0x1,_0x30ca04);_0x2f7596=_0x20be78>=_0x3e62f3||_0x20be78<=_0x1efd6b;}return _0x2f7596;}}module['exports']['domCompare']=domCompare;function monthCompare(_0x14a72c,_0x148b68,_0x392bfc){var _0x4c7e0c=_0x14a72c[_0x0da6('0x6')]('en')[_0x0da6('0x18')](_0x0da6('0x1e'))[_0x0da6('0x8')]();return circularMonthInterval(_0x148b68,_0x392bfc)[_0x0da6('0x1a')](_0x4c7e0c);}module[_0x0da6('0xc')][_0x0da6('0x1f')]=monthCompare;function iftime(_0x40c7dc,_0x154cf7=moment['tz'][_0x0da6('0x20')](),_0x3b5a99=moment()){if(!validateRx[_0x0da6('0x21')](_0x40c7dc)){throw new Error(EINVALID_STRING);}else{var _0x4ffe53=(moment[_0x0da6('0x22')](_0x3b5a99)?_0x3b5a99[_0x0da6('0x10')]():moment(_0x3b5a99))['tz'](_0x154cf7)[_0x0da6('0x6')]('en');throwIfDateNotValid(_0x4ffe53);var _0x2c5d73=_0x40c7dc[_0x0da6('0x4')](',');var _0x3f60f8=_0x2c5d73[0x0];var _0x23e161=_0x2c5d73[0x1];var _0x35fc93=_0x2c5d73[0x2];var _0x11fbfe=_0x2c5d73[0x3];let _0x428168=!![];if(_0x3f60f8!=='*'){var _0x13030b=_0x3f60f8[_0x0da6('0x4')]('-');var _0x30725f=_[_0x0da6('0x23')](_0x13030b[0x0],0x5,'0');var _0x3c12ff=_0x13030b[_0x0da6('0x24')]===0x2?_[_0x0da6('0x23')](_0x13030b[0x1],0x5,'0'):_0x30725f;_0x428168=timeCompare(_0x4ffe53,_0x30725f,_0x3c12ff);}let _0xd32291=!![];if(_0x23e161!=='*'){var _0x7534f8=_0x23e161[_0x0da6('0x4')]('-');var _0x36e062=_0x7534f8[0x0];var _0x438139=_0x7534f8['length']===0x2?_0x7534f8[0x1]:_0x36e062;_0xd32291=dowCompare(_0x4ffe53,_0x36e062,_0x438139);}let _0x437e48=!![];if(_0x35fc93!=='*'){var _0xdf1385=_0x35fc93[_0x0da6('0x4')]('-');var _0x10fa8c=parseDom(_0xdf1385[0x0]);var _0x5af016=_0xdf1385['length']===0x2?parseDom(_0xdf1385[0x1]):_0x10fa8c;_0x437e48=domCompare(_0x4ffe53,_0x10fa8c,_0x5af016);}let _0xaae388=!![];if(_0x11fbfe!=='*'){var _0x506f5c=_0x11fbfe[_0x0da6('0x4')]('-');var _0x3b72f0=_0x506f5c[0x0];var _0x1e21aa=_0x506f5c['length']===0x2?_0x506f5c[0x1]:_0x506f5c[0x0];_0xaae388=monthCompare(_0x4ffe53,_0x3b72f0,_0x1e21aa);}return _0x428168&&_0xd32291&&_0x437e48&&_0xaae388;}}module[_0x0da6('0xc')][_0x0da6('0x25')]=iftime;
\ No newline at end of file
+var _0xd80f=['isMoment','padStart','split','length','iftime','lodash','moment-timezone','map','join','Interval\x20string\x20not\x20valid','Date\x20not\x20valid','locale','weekdaysShort','toLowerCase','indexOf','slice','concat','exports','monthsShort','circularMonthInterval','clone','minutes','hours','isBefore','day','endOf','isBetween','timeCompare','ddd','includes','dowCompare','date','daysInMonth','max','min','domCompare','MMM','monthCompare','guess'];(function(_0x482999,_0x2e4c80){var _0x1c5d31=function(_0xa39c23){while(--_0xa39c23){_0x482999['push'](_0x482999['shift']());}};_0x1c5d31(++_0x2e4c80);}(_0xd80f,0x116));var _0xfd80=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd80f[_0x3dd15e];return _0x231fd0;};var _=require(_0xfd80('0x0'));var moment=require(_0xfd80('0x1'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx][_0xfd80('0x2')](function(_0x106cdc){return _0x106cdc['source'];})[_0xfd80('0x3')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0xfd80('0x4');var EINVALID_DATE=_0xfd80('0x5');function throwIfDateNotValid(_0x4272d5){if(!_0x4272d5['isValid']()){throw new Error(EINVALID_DATE);}}function extractTime(_0xff2a2e){var _0x3b3a3a=_0xff2a2e['split'](':')[_0xfd80('0x2')](function(_0x59e306){return parseInt(_0x59e306,0xa);});var _0x58147f=_0x3b3a3a[0x0];var _0x35196f=_0x3b3a3a[0x1];if(_0x58147f<0x0||_0x58147f>0x17||_0x35196f<0x0||_0x35196f>0x3b){throw new Error(EINVALID_DATE);}return[_0x58147f,_0x35196f];}function circularDoWInterval(_0xd260ea,_0x585594){if(_0xd260ea===_0x585594){return[_0xd260ea];}else{var _0x76d21b=moment[_0xfd80('0x6')]();moment[_0xfd80('0x6')]('en');var _0x13dade=moment[_0xfd80('0x7')]()[_0xfd80('0x2')](function(_0x372326){return _0x372326[_0xfd80('0x8')]();});moment[_0xfd80('0x6')](_0x76d21b);var _0x3d3c56=_0x13dade[_0xfd80('0x9')](_0xd260ea);var _0x1bad46=_0x13dade[_0xfd80('0x9')](_0x585594);if(_0x1bad46>_0x3d3c56){return _0x13dade[_0xfd80('0xa')](_0x3d3c56,_0x1bad46+0x1);}else{var _0x74aacf=_0x13dade['slice'](0x0,_0x1bad46+0x1);var _0x2326d9=_0x13dade[_0xfd80('0xa')](_0x3d3c56);return _0x2326d9[_0xfd80('0xb')](_0x74aacf);}}}module[_0xfd80('0xc')]['circularDoWInterval']=circularDoWInterval;function circularMonthInterval(_0x1b7f68,_0x4b9d5d){if(_0x1b7f68===_0x4b9d5d){return[_0x1b7f68];}else{var _0x29e377=moment[_0xfd80('0x6')]();moment[_0xfd80('0x6')]('en');var _0x2d77e9=moment[_0xfd80('0xd')]()[_0xfd80('0x2')](function(_0x28acbb){return _0x28acbb[_0xfd80('0x8')]();});moment[_0xfd80('0x6')](_0x29e377);var _0x1cbcd0=_0x2d77e9[_0xfd80('0x9')](_0x1b7f68);var _0x1f6cfc=_0x2d77e9[_0xfd80('0x9')](_0x4b9d5d);if(_0x1f6cfc>_0x1cbcd0){return _0x2d77e9[_0xfd80('0xa')](_0x1cbcd0,_0x1f6cfc+0x1);}else{var _0x38f65c=_0x2d77e9[_0xfd80('0xa')](0x0,_0x1f6cfc+0x1);var _0x44da2d=_0x2d77e9['slice'](_0x1cbcd0);return _0x44da2d['concat'](_0x38f65c);}}}module[_0xfd80('0xc')][_0xfd80('0xe')]=circularMonthInterval;function parseDom(_0x346274){var _0x56cc0e=parseInt(_0x346274,0xa);if(_0x56cc0e<0x1||_0x56cc0e>0x1f){throw new Error(EINVALID_DATE);}return _0x56cc0e;}function timeCompare(_0x4754fe,_0x529c2a,_0x1a3cec){var _0x19438b=_0x4754fe[_0xfd80('0xf')]();var _0x398ec9=extractTime(_0x529c2a);var _0x3999a2=_0x398ec9[0x0];var _0x234a0d=_0x398ec9[0x1];var _0x2e8035=_0x4754fe[_0xfd80('0xf')]()['hours'](_0x3999a2)[_0xfd80('0x10')](_0x234a0d);throwIfDateNotValid(_0x2e8035);var _0x437e7b=extractTime(_0x1a3cec);var _0x1c8f79=_0x437e7b[0x0];var _0x5670b6=_0x437e7b[0x1];var _0x5d5bed=_0x4754fe['clone']()[_0xfd80('0x11')](_0x1c8f79)[_0xfd80('0x10')](_0x5670b6);throwIfDateNotValid(_0x5d5bed);if(_0x5d5bed[_0xfd80('0x12')](_0x2e8035)){var _0x223caf=_0x19438b['clone']()['startOf'](_0xfd80('0x13'));var _0x479461=_0x19438b[_0xfd80('0xf')]()[_0xfd80('0x14')](_0xfd80('0x13'));return _0x19438b[_0xfd80('0x15')](_0x2e8035,_0x479461,undefined,'[]')||_0x19438b[_0xfd80('0x15')](_0x223caf,_0x5d5bed,undefined,'[]');}else{return _0x19438b[_0xfd80('0x15')](_0x2e8035,_0x5d5bed,undefined,'[]');}}module['exports'][_0xfd80('0x16')]=timeCompare;function dowCompare(_0x14cbfb,_0x546008,_0xa91204){var _0x59e92f=_0x14cbfb['locale']('en')['format'](_0xfd80('0x17'))[_0xfd80('0x8')]();return circularDoWInterval(_0x546008,_0xa91204)[_0xfd80('0x18')](_0x59e92f);}module[_0xfd80('0xc')][_0xfd80('0x19')]=dowCompare;function domCompare(_0x17ef5e,_0x10cd5f,_0x421a67){var _0x47a0c3=_0x17ef5e[_0xfd80('0x1a')]();if(_0x10cd5f===_0x421a67){return _0x47a0c3===_0x10cd5f;}else{var _0x5cb990=_0x17ef5e[_0xfd80('0x1b')]();var _0x2a1ff5=_0x10cd5f<_0x421a67;let _0x4b2d6b=![];var _0x353ace=0x0;var _0xcc01c8=0x0;if(_0x2a1ff5){_0x353ace=Math[_0xfd80('0x1c')](0x1,_0x10cd5f);_0xcc01c8=Math[_0xfd80('0x1d')](_0x421a67,_0x5cb990);_0x4b2d6b=_0x47a0c3>=_0x353ace&&_0x47a0c3<=_0xcc01c8;}else{_0x353ace=Math['min'](_0x10cd5f,_0x5cb990);_0xcc01c8=Math[_0xfd80('0x1c')](0x1,_0x421a67);_0x4b2d6b=_0x47a0c3>=_0x353ace||_0x47a0c3<=_0xcc01c8;}return _0x4b2d6b;}}module[_0xfd80('0xc')][_0xfd80('0x1e')]=domCompare;function monthCompare(_0x4467d1,_0x2fae10,_0x24b06c){var _0x116bfa=_0x4467d1[_0xfd80('0x6')]('en')['format'](_0xfd80('0x1f'))[_0xfd80('0x8')]();return circularMonthInterval(_0x2fae10,_0x24b06c)[_0xfd80('0x18')](_0x116bfa);}module[_0xfd80('0xc')][_0xfd80('0x20')]=monthCompare;function iftime(_0xec9c98,_0x5881a6=moment['tz'][_0xfd80('0x21')](),_0x4039b5=moment()){if(!validateRx['test'](_0xec9c98)){throw new Error(EINVALID_STRING);}else{var _0x230bec=(moment[_0xfd80('0x22')](_0x4039b5)?_0x4039b5[_0xfd80('0xf')]():moment(_0x4039b5))['tz'](_0x5881a6)[_0xfd80('0x6')]('en');throwIfDateNotValid(_0x230bec);var _0x165dbf=_0xec9c98['split'](',');var _0x4ead63=_0x165dbf[0x0];var _0xbb66fb=_0x165dbf[0x1];var _0x4a1034=_0x165dbf[0x2];var _0x2e1895=_0x165dbf[0x3];let _0x151e9b=!![];if(_0x4ead63!=='*'){var _0x4331e1=_0x4ead63['split']('-');var _0x54fa59=_['padStart'](_0x4331e1[0x0],0x5,'0');var _0x663156=_0x4331e1['length']===0x2?_[_0xfd80('0x23')](_0x4331e1[0x1],0x5,'0'):_0x54fa59;_0x151e9b=timeCompare(_0x230bec,_0x54fa59,_0x663156);}let _0x16808f=!![];if(_0xbb66fb!=='*'){var _0x31d25e=_0xbb66fb['split']('-');var _0x33f257=_0x31d25e[0x0];var _0x29b0d4=_0x31d25e['length']===0x2?_0x31d25e[0x1]:_0x33f257;_0x16808f=dowCompare(_0x230bec,_0x33f257,_0x29b0d4);}let _0x57abad=!![];if(_0x4a1034!=='*'){var _0x3812a0=_0x4a1034[_0xfd80('0x24')]('-');var _0x4b4737=parseDom(_0x3812a0[0x0]);var _0x5c8ae7=_0x3812a0[_0xfd80('0x25')]===0x2?parseDom(_0x3812a0[0x1]):_0x4b4737;_0x57abad=domCompare(_0x230bec,_0x4b4737,_0x5c8ae7);}let _0x5263fb=!![];if(_0x2e1895!=='*'){var _0x366521=_0x2e1895['split']('-');var _0x20c4f1=_0x366521[0x0];var _0x3c71db=_0x366521[_0xfd80('0x25')]===0x2?_0x366521[0x1]:_0x366521[0x0];_0x5263fb=monthCompare(_0x230bec,_0x20c4f1,_0x3c71db);}return _0x151e9b&&_0x16808f&&_0x57abad&&_0x5263fb;}}module['exports'][_0xfd80('0x26')]=iftime;
\ No newline at end of file
index 9817313..bcc7d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1c9=['consoleLogger','fileLogger','path','util','moment','winston','../config/environment','debugLevel','info','bold\x20yellow','white','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','join','format','%s-%s.log','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','meta','keys','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','transports','Console','warn','%s-%s','error','File'];(function(_0xfe0d96,_0x595dd0){var _0x4ffd30=function(_0x4a83d8){while(--_0x4a83d8){_0xfe0d96['push'](_0xfe0d96['shift']());}};_0x4ffd30(++_0x595dd0);}(_0xa1c9,0x71));var _0x9a1c=function(_0x2cbd58,_0x278e75){_0x2cbd58=_0x2cbd58-0x0;var _0x42ef2a=_0xa1c9[_0x2cbd58];return _0x42ef2a;};'use strict';var path=require(_0x9a1c('0x0'));var util=require(_0x9a1c('0x1'));var moment=require(_0x9a1c('0x2'));var winston=require(_0x9a1c('0x3'));var config=require(_0x9a1c('0x4'));var debugLevel=config[_0x9a1c('0x5')]?config['debugLevel']['toLowerCase']():_0x9a1c('0x6');var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':'redBG\x20white','error':'red','warn':_0x9a1c('0x7'),'info':_0x9a1c('0x8'),'print':'bold\x20white','success':'bold\x20green','http':_0x9a1c('0x9'),'verbose':_0x9a1c('0xa'),'debug':_0x9a1c('0xb'),'silly':_0x9a1c('0xc')};winston[_0x9a1c('0xd')](XC_LOG_COLORS);function getLogFileName(_0x49c509,_0x2320c9,_0x55729a){var _0x41c00f=_0x49c509||_0x9a1c('0xe');return path[_0x9a1c('0xf')](_0x41c00f,util[_0x9a1c('0x10')](_0x9a1c('0x11'),_0x2320c9,_0x55729a));}function formatter(_0x533136,_0x493013){_0x493013[_0x9a1c('0x12')]=_0x493013[_0x9a1c('0x12')][_0x9a1c('0x13')](/@@{/g,_0x9a1c('0x14'))[_0x9a1c('0x13')](/}@@/g,'}}}')[_0x9a1c('0x13')](/@{/g,'{{')[_0x9a1c('0x13')](/}@/g,'}}');return util['format'](_0x9a1c('0x15'),moment()[_0x9a1c('0x10')](_0x9a1c('0x16')),_0x493013[_0x9a1c('0x17')]['toUpperCase'](),_0x533136,_0x493013['message']);}function fileFormat(_0x71a8dd,_0x5d625e){_0x5d625e[_0x9a1c('0x12')]=_0x5d625e[_0x9a1c('0x12')][_0x9a1c('0x13')](/@@{/g,_0x9a1c('0x14'))['replace'](/}@@/g,'}}}')['replace'](/@{/g,'{{')[_0x9a1c('0x13')](/}@/g,'}}');var _0x4284d8=_0x5d625e[_0x9a1c('0x18')]&&Object[_0x9a1c('0x19')](_0x5d625e[_0x9a1c('0x18')])[_0x9a1c('0x1a')]?'\x0a\x09'+JSON[_0x9a1c('0x1b')](_0x5d625e['meta']):'';return util[_0x9a1c('0x10')](_0x9a1c('0x1c'),moment()[_0x9a1c('0x10')](_0x9a1c('0x16')),_0x5d625e[_0x9a1c('0x17')]['toUpperCase'](),_0x71a8dd,_0x5d625e[_0x9a1c('0x12')],_0x4284d8);}function consoleLogger(){var _0x3d4eaf=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x9a1c('0x1d'))][(_0x9a1c('0x1e'))]({'level':_0x9a1c('0x1f'),'json':![],'formatter':function(_0x2e5e5b){return formatter('',_0x2e5e5b);}})]});return _0x3d4eaf;}function fileLogger(_0x42dcf0,_0x1bdcb1){var _0x1de1a3=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston['transports']['File']({'name':util['format'](_0x9a1c('0x20'),_0x42dcf0,_0x9a1c('0x21')),'filename':getLogFileName(_0x1bdcb1,_0x42dcf0,'error'),'level':_0x9a1c('0x21'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xfbb510){return fileFormat(_0x42dcf0,_0xfbb510);}}),new winston[(_0x9a1c('0x1d'))][(_0x9a1c('0x22'))]({'name':util['format']('%s-%s',_0x42dcf0,debugLevel),'filename':getLogFileName(_0x1bdcb1,_0x42dcf0,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2b5b04){return fileFormat(_0x42dcf0,_0x2b5b04);}}),new winston[(_0x9a1c('0x1d'))][(_0x9a1c('0x1e'))]({'level':_0x9a1c('0x1f'),'json':![],'formatter':function(_0x2ecaa0){return fileFormat(_0x42dcf0,_0x2ecaa0);}})]});return _0x1de1a3;}exports[_0x9a1c('0x23')]=consoleLogger;exports[_0x9a1c('0x24')]=fileLogger;
\ No newline at end of file
+var _0x7eda=['error','warn','consoleLogger','path','util','moment','debugLevel','toLowerCase','redBG\x20white','bold\x20yellow','white','bold\x20white','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','join','format','message','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','meta','keys','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','transports','Console','File','%s-%s'];(function(_0x471b36,_0x2095a9){var _0x1e10c6=function(_0x2077e6){while(--_0x2077e6){_0x471b36['push'](_0x471b36['shift']());}};_0x1e10c6(++_0x2095a9);}(_0x7eda,0xf1));var _0xa7ed=function(_0x5c70d1,_0x233fa2){_0x5c70d1=_0x5c70d1-0x0;var _0x5cef7b=_0x7eda[_0x5c70d1];return _0x5cef7b;};'use strict';var path=require(_0xa7ed('0x0'));var util=require(_0xa7ed('0x1'));var moment=require(_0xa7ed('0x2'));var winston=require('winston');var config=require('../config/environment');var debugLevel=config['debugLevel']?config[_0xa7ed('0x3')][_0xa7ed('0x4')]():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0xa7ed('0x5'),'error':'red','warn':_0xa7ed('0x6'),'info':_0xa7ed('0x7'),'print':_0xa7ed('0x8'),'success':'bold\x20green','http':'gray','verbose':_0xa7ed('0x9'),'debug':_0xa7ed('0xa'),'silly':_0xa7ed('0xb')};winston[_0xa7ed('0xc')](XC_LOG_COLORS);function getLogFileName(_0x1bb580,_0x2e14ec,_0x4e64c0){var _0x3fd6c1=_0x1bb580||'/var/log/xcally';return path[_0xa7ed('0xd')](_0x3fd6c1,util[_0xa7ed('0xe')]('%s-%s.log',_0x2e14ec,_0x4e64c0));}function formatter(_0x57f5f8,_0x110dce){_0x110dce[_0xa7ed('0xf')]=_0x110dce[_0xa7ed('0xf')][_0xa7ed('0x10')](/@@{/g,'{{{')[_0xa7ed('0x10')](/}@@/g,_0xa7ed('0x11'))[_0xa7ed('0x10')](/@{/g,'{{')[_0xa7ed('0x10')](/}@/g,'}}');return util[_0xa7ed('0xe')](_0xa7ed('0x12'),moment()[_0xa7ed('0xe')](_0xa7ed('0x13')),_0x110dce[_0xa7ed('0x14')][_0xa7ed('0x15')](),_0x57f5f8,_0x110dce[_0xa7ed('0xf')]);}function fileFormat(_0x48250d,_0x216683){_0x216683['message']=_0x216683[_0xa7ed('0xf')][_0xa7ed('0x10')](/@@{/g,'{{{')[_0xa7ed('0x10')](/}@@/g,_0xa7ed('0x11'))['replace'](/@{/g,'{{')[_0xa7ed('0x10')](/}@/g,'}}');var _0x20631d=_0x216683[_0xa7ed('0x16')]&&Object[_0xa7ed('0x17')](_0x216683[_0xa7ed('0x16')])[_0xa7ed('0x18')]?'\x0a\x09'+JSON['stringify'](_0x216683['meta']):'';return util['format'](_0xa7ed('0x19'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),_0x216683[_0xa7ed('0x14')]['toUpperCase'](),_0x48250d,_0x216683[_0xa7ed('0xf')],_0x20631d);}function consoleLogger(){var _0x31d758=new winston[(_0xa7ed('0x1a'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xa7ed('0x1b'))][(_0xa7ed('0x1c'))]({'level':'warn','json':![],'formatter':function(_0x9aaceb){return formatter('',_0x9aaceb);}})]});return _0x31d758;}function fileLogger(_0x1f1e98,_0x5791ba){var _0x46390d=new winston[(_0xa7ed('0x1a'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xa7ed('0x1b'))][(_0xa7ed('0x1d'))]({'name':util[_0xa7ed('0xe')](_0xa7ed('0x1e'),_0x1f1e98,_0xa7ed('0x1f')),'filename':getLogFileName(_0x5791ba,_0x1f1e98,'error'),'level':_0xa7ed('0x1f'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xb74a05){return fileFormat(_0x1f1e98,_0xb74a05);}}),new winston[(_0xa7ed('0x1b'))][(_0xa7ed('0x1d'))]({'name':util[_0xa7ed('0xe')](_0xa7ed('0x1e'),_0x1f1e98,debugLevel),'filename':getLogFileName(_0x5791ba,_0x1f1e98,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4746eb){return fileFormat(_0x1f1e98,_0x4746eb);}}),new winston[(_0xa7ed('0x1b'))]['Console']({'level':_0xa7ed('0x20'),'json':![],'formatter':function(_0x4e5210){return fileFormat(_0x1f1e98,_0x4e5210);}})]});return _0x46390d;}exports[_0xa7ed('0x21')]=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
index 2c65f24..07f5542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['}@@','lodash','password','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','tenantId','token','channelSecret','accessToken','authToken','consumerKey','membername','calleridname','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','key','user','pass','localstationid','dsn','secret','registry','oldPassword','isArray','length','isString','replace'];(function(_0x3fa984,_0xfcedd2){var _0x231e6e=function(_0x5e0722){while(--_0x5e0722){_0x3fa984['push'](_0x3fa984['shift']());}};_0x231e6e(++_0xfcedd2);}(_0x0b0e,0x187));var _0xe0b0=function(_0x597c16,_0x2292fe){_0x597c16=_0x597c16-0x0;var _0x30cc2c=_0x0b0e[_0x597c16];return _0x30cc2c;};var _=require(_0xe0b0('0x0'));var sensitiveFields=['username',_0xe0b0('0x1'),'newPassword',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6'),_0xe0b0('0x7'),_0xe0b0('0x8'),_0xe0b0('0x9'),_0xe0b0('0xa'),_0xe0b0('0xb'),_0xe0b0('0xc'),'code','accessKey',_0xe0b0('0xd'),_0xe0b0('0xe'),_0xe0b0('0xf'),_0xe0b0('0x10'),'accessTokenSecret',_0xe0b0('0x11'),_0xe0b0('0x12'),'consumerSecret',_0xe0b0('0x13'),_0xe0b0('0x14'),'calleridnum',_0xe0b0('0x15'),_0xe0b0('0x16'),_0xe0b0('0x17'),'privateKey',_0xe0b0('0x18'),_0xe0b0('0x19'),_0xe0b0('0x1a'),_0xe0b0('0x1b'),_0xe0b0('0x1c'),'accountSid',_0xe0b0('0x1d'),_0xe0b0('0x1e'),_0xe0b0('0x1f'),_0xe0b0('0x20'),_0xe0b0('0x21')];function maskSensitiveData(_0x55d884){const _0x41a7e2=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x55d884)){for(const _0x35cb40 in _0x55d884){if(_[_0xe0b0('0x22')](_0x55d884[_0x35cb40])){for(let _0x519ae8=0x0;_0x519ae8<_0x55d884[_0x35cb40][_0xe0b0('0x23')];_0x519ae8++){maskSensitiveData(_0x55d884[_0x35cb40][_0x519ae8]);}}else if(_['isPlainObject'](_0x55d884[_0x35cb40])){maskSensitiveData(_0x55d884[_0x35cb40]);}else if(_[_0xe0b0('0x24')](_0x55d884[_0x35cb40])){_0x55d884[_0x35cb40]=_0x55d884[_0x35cb40][_0xe0b0('0x25')](/{{{/g,'@@{')['replace'](/}}}/g,_0xe0b0('0x26'))['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x35cb40)){_0x55d884[_0x35cb40]=_0x55d884[_0x35cb40][_0xe0b0('0x25')](_0x41a7e2,'*');}}}}}module['exports']['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
+var _0x7a54=['code','accessKey','token','authToken','consumerKey','membername','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray','length','replace','}@@','includes','exports','maskSensitiveData','lodash','username','password','apiKey','firstName','street','phone','mobile','fax','email','clientSecret'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7a54,0x106));var _0x47a5=function(_0x3eebbd,_0xbb29a5){_0x3eebbd=_0x3eebbd-0x0;var _0x4792d3=_0x7a54[_0x3eebbd];return _0x4792d3;};var _=require(_0x47a5('0x0'));var sensitiveFields=[_0x47a5('0x1'),_0x47a5('0x2'),'newPassword',_0x47a5('0x3'),_0x47a5('0x4'),'lastName',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'clientId',_0x47a5('0xa'),'securityToken',_0x47a5('0xb'),_0x47a5('0xc'),'tenantId',_0x47a5('0xd'),'channelSecret','accessToken','accessTokenSecret',_0x47a5('0xe'),_0x47a5('0xf'),'consumerSecret',_0x47a5('0x10'),'calleridname','calleridnum',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'user',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e')];function maskSensitiveData(_0x190faa){const _0x4e99a8=/(?!^)[\s\S](?!$)/g;if(_[_0x47a5('0x1f')](_0x190faa)){for(const _0x11faf5 in _0x190faa){if(_[_0x47a5('0x20')](_0x190faa[_0x11faf5])){for(let _0x2a2cbb=0x0;_0x2a2cbb<_0x190faa[_0x11faf5][_0x47a5('0x21')];_0x2a2cbb++){maskSensitiveData(_0x190faa[_0x11faf5][_0x2a2cbb]);}}else if(_['isPlainObject'](_0x190faa[_0x11faf5])){maskSensitiveData(_0x190faa[_0x11faf5]);}else if(_['isString'](_0x190faa[_0x11faf5])){_0x190faa[_0x11faf5]=_0x190faa[_0x11faf5][_0x47a5('0x22')](/{{{/g,'@@{')['replace'](/}}}/g,_0x47a5('0x23'))[_0x47a5('0x22')](/{{/g,'@{')[_0x47a5('0x22')](/}}/g,'}@');if(_[_0x47a5('0x24')](sensitiveFields,_0x11faf5)){_0x190faa[_0x11faf5]=_0x190faa[_0x11faf5][_0x47a5('0x22')](_0x4e99a8,'*');}}}}}module[_0x47a5('0x25')][_0x47a5('0x26')]=maskSensitiveData;
\ No newline at end of file
index 91ae279..5949cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['reduce','exports','safeTemplate','lodash','{\x20{\x20','\x20}\x20}','string','replace','map','keys'];(function(_0x56a84c,_0x454c51){var _0x1baebc=function(_0x170597){while(--_0x170597){_0x56a84c['push'](_0x56a84c['shift']());}};_0x1baebc(++_0x454c51);}(_0x4fc2,0x111));var _0x24fc=function(_0x4a363f,_0x36480a){_0x4a363f=_0x4a363f-0x0;var _0x391de0=_0x4fc2[_0x4a363f];return _0x391de0;};var _=require(_0x24fc('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2b05a5){return _0x2b05a5==='{{'?_0x24fc('0x1'):_0x24fc('0x2');}function safeTemplate(_0x5aaa74){var _0x365c56=_0x5aaa74;if(typeof _0x5aaa74===_0x24fc('0x3')){_0x365c56=_0x5aaa74[_0x24fc('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x5aaa74)){_0x365c56=_0x5aaa74[_0x24fc('0x5')](function(_0x3772eb){return safeTemplate(_0x3772eb);});}else if(_['isPlainObject'](_0x5aaa74)){_0x365c56=Object[_0x24fc('0x6')](_0x5aaa74)[_0x24fc('0x7')](function(_0x4889f4,_0x115851){_0x4889f4[_0x115851]=safeTemplate(_0x5aaa74[_0x115851]);return _0x4889f4;},{});}return _0x365c56;}module[_0x24fc('0x8')][_0x24fc('0x9')]=safeTemplate;
\ No newline at end of file
+var _0x5eb8=['{\x20{\x20','\x20}\x20}','string','replace','isArray','map','isPlainObject','keys','reduce','exports','safeTemplate'];(function(_0x430682,_0x5c089e){var _0x4db366=function(_0xd5e0c0){while(--_0xd5e0c0){_0x430682['push'](_0x430682['shift']());}};_0x4db366(++_0x5c089e);}(_0x5eb8,0xb0));var _0x85eb=function(_0x7611ce,_0x4a4441){_0x7611ce=_0x7611ce-0x0;var _0x67d3ab=_0x5eb8[_0x7611ce];return _0x67d3ab;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x57e9bc){return _0x57e9bc==='{{'?_0x85eb('0x0'):_0x85eb('0x1');}function safeTemplate(_0x393a8a){var _0xd2f5dc=_0x393a8a;if(typeof _0x393a8a===_0x85eb('0x2')){_0xd2f5dc=_0x393a8a[_0x85eb('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x85eb('0x4')](_0x393a8a)){_0xd2f5dc=_0x393a8a[_0x85eb('0x5')](function(_0x3c5798){return safeTemplate(_0x3c5798);});}else if(_[_0x85eb('0x6')](_0x393a8a)){_0xd2f5dc=Object[_0x85eb('0x7')](_0x393a8a)[_0x85eb('0x8')](function(_0x4a8814,_0x16d7b9){_0x4a8814[_0x16d7b9]=safeTemplate(_0x393a8a[_0x16d7b9]);return _0x4a8814;},{});}return _0xd2f5dc;}module[_0x85eb('0x9')][_0x85eb('0xa')]=safeTemplate;
\ No newline at end of file
index c7b7935..1d8be47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9fb=['isArray','apps','findIndex','motion2','env','string','NODE_PATH','pathExists','then','readJSON','updated','Updating\x20app.json','writeJSON','fs-extra','../config/environment','resolve','server/app.json','legacy-libs'];(function(_0x470130,_0x1cb1f7){var _0x497974=function(_0x4018da){while(--_0x4018da){_0x470130['push'](_0x470130['shift']());}};_0x497974(++_0x1cb1f7);}(_0xd9fb,0x199));var _0xbd9f=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xd9fb[_0x3c4737];return _0x2bb926;};var fs=require(_0xbd9f('0x0'));var path=require('path');var config=require(_0xbd9f('0x1'));var root=config['root'];var APP_JSON_PATH=path[_0xbd9f('0x2')](root,_0xbd9f('0x3'));var NODEPATH=path['resolve'](root,_0xbd9f('0x4'));function setLegacyLibsNodeEnvPath(_0x4f72ed){let _0x1222fa=![];if(Array[_0xbd9f('0x5')](_0x4f72ed[_0xbd9f('0x6')])){var _0x3b548b=_0x4f72ed[_0xbd9f('0x6')][_0xbd9f('0x7')](function(_0xb8fe9f){return _0xb8fe9f['name']===_0xbd9f('0x8');});if(_0x3b548b>-0x1){var _0x48def4=_0x4f72ed['apps'][_0x3b548b];if(typeof _0x48def4[_0xbd9f('0x9')]['NODE_PATH']!==_0xbd9f('0xa')){_0x48def4[_0xbd9f('0x9')][_0xbd9f('0xb')]=NODEPATH;_0x1222fa=!![];}}return{'appConfig':_0x4f72ed,'updated':_0x1222fa};}}function updateAppConfig(_0x3a1800){return fs[_0xbd9f('0xc')](APP_JSON_PATH)[_0xbd9f('0xd')](function(_0x3f5f64){if(_0x3f5f64){return fs[_0xbd9f('0xe')](APP_JSON_PATH)[_0xbd9f('0xd')](function(_0x33d6c4){var _0x5ea28a=setLegacyLibsNodeEnvPath(_0x33d6c4);if(_0x5ea28a[_0xbd9f('0xf')]){_0x3a1800['info'](_0xbd9f('0x10'));return fs[_0xbd9f('0x11')](APP_JSON_PATH,_0x33d6c4,{'spaces':0x2});}else{return Promise[_0xbd9f('0x2')]();}});}else{return Promise[_0xbd9f('0x2')]();}});}module['exports']=updateAppConfig;
\ No newline at end of file
+var _0xf287=['server/app.json','legacy-libs','apps','findIndex','motion2','env','NODE_PATH','string','pathExists','then','readJSON','info','Updating\x20app.json','writeJSON','fs-extra','path','../config/environment','root','resolve'];(function(_0x23f4ad,_0xb1c02f){var _0x42e2ec=function(_0x4f39e0){while(--_0x4f39e0){_0x23f4ad['push'](_0x23f4ad['shift']());}};_0x42e2ec(++_0xb1c02f);}(_0xf287,0x12b));var _0x7f28=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xf287[_0x2641f9];return _0x585741;};var fs=require(_0x7f28('0x0'));var path=require(_0x7f28('0x1'));var config=require(_0x7f28('0x2'));var root=config[_0x7f28('0x3')];var APP_JSON_PATH=path[_0x7f28('0x4')](root,_0x7f28('0x5'));var NODEPATH=path[_0x7f28('0x4')](root,_0x7f28('0x6'));function setLegacyLibsNodeEnvPath(_0x5ab7c5){let _0x4fc748=![];if(Array['isArray'](_0x5ab7c5[_0x7f28('0x7')])){var _0x1a7cab=_0x5ab7c5[_0x7f28('0x7')][_0x7f28('0x8')](function(_0x35ccfe){return _0x35ccfe['name']===_0x7f28('0x9');});if(_0x1a7cab>-0x1){var _0x5b57f1=_0x5ab7c5[_0x7f28('0x7')][_0x1a7cab];if(typeof _0x5b57f1[_0x7f28('0xa')][_0x7f28('0xb')]!==_0x7f28('0xc')){_0x5b57f1[_0x7f28('0xa')][_0x7f28('0xb')]=NODEPATH;_0x4fc748=!![];}}return{'appConfig':_0x5ab7c5,'updated':_0x4fc748};}}function updateAppConfig(_0x5892d2){return fs[_0x7f28('0xd')](APP_JSON_PATH)[_0x7f28('0xe')](function(_0x2a5839){if(_0x2a5839){return fs[_0x7f28('0xf')](APP_JSON_PATH)[_0x7f28('0xe')](function(_0x2ae215){var _0x5cbd5b=setLegacyLibsNodeEnvPath(_0x2ae215);if(_0x5cbd5b['updated']){_0x5892d2[_0x7f28('0x10')](_0x7f28('0x11'));return fs[_0x7f28('0x12')](APP_JSON_PATH,_0x2ae215,{'spaces':0x2});}else{return Promise[_0x7f28('0x4')]();}});}else{return Promise[_0x7f28('0x4')]();}});}module['exports']=updateAppConfig;
\ No newline at end of file
diff --git a/snippet/3.5.0/scripts/chat.js b/snippet/3.5.0/scripts/chat.js
deleted file mode 100644 (file)
index 49ad0c7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/*! For license information please see chat.js.LICENSE.txt */
-(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["chat"],{"./node_modules/@flowjs/ng-flow/dist/ng-flow.js":(e,t,n)=>{var o=n("./node_modules/@flowjs/flow.js/src/flow.js");angular.module("flow.provider",[]).provider("flowFactory",(function(){"use strict";this.defaults={},this.factory=function(e){return new o(e)},this.events=[],this.on=function(e,t){this.events.push([e,t])},this.$get=function(){var e=this.factory,t=this.defaults,n=this.events;return{create:function(o){var r=e(angular.extend({},t,o));return angular.forEach(n,(function(e){r.on(e[0],e[1])})),r}}}})),angular.module("flow.init",["flow.provider"]).controller("flowCtrl",["$scope","$attrs","$parse","flowFactory",function(e,t,n,o){var r=angular.extend({},e.$eval(t.flowInit)),s=e.$eval(t.flowObject)||o.create(r),a=function(t){var n=Array.prototype.slice.call(arguments);n.shift();var o=e.$broadcast.apply(e,["flow::"+t,s].concat(n));if({progress:1,filesSubmitted:1,fileSuccess:1,fileError:1,complete:1}[t]&&e.$applyAsync(),o.defaultPrevented)return!1};s.on("catchAll",a),e.$on("$destroy",(function(){s.off("catchAll",a)})),e.$flow=s,t.hasOwnProperty("flowName")&&(n(t.flowName).assign(e,s),e.$on("$destroy",(function(){n(t.flowName).assign(e)})))}]).directive("flowInit",[function(){return{scope:!0,controller:"flowCtrl"}}]),angular.module("flow.btn",["flow.init"]).directive("flowBtn",[function(){return{restrict:"EA",scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.hasOwnProperty("flowDirectory"),r=n.hasOwnProperty("flowSingleFile"),s=n.hasOwnProperty("flowAttrs")&&e.$eval(n.flowAttrs);e.$flow.assignBrowse(t,o,r,s)}}}]),angular.module("flow.dragEvents",["flow.init"]).directive("flowPreventDrop",(function(){return{scope:!1,link:function(e,t,n){t.bind("drop dragover",(function(e){e.preventDefault()}))}}})).directive("flowDragEnter",["$timeout",function(e){return{scope:!1,link:function(t,n,o){var r,s=!1;n.bind("dragover",(function(n){var a,i,d;i=!1,d=(a=n).dataTransfer||a.originalEvent.dataTransfer,angular.forEach(d&&d.types,(function(e){"Files"===e&&(i=!0)})),i&&(s||(t.$apply(o.flowDragEnter),s=!0),e.cancel(r),n.preventDefault())})),n.bind("dragleave drop",(function(n){e.cancel(r),r=e((function(){t.$eval(o.flowDragLeave),r=null,s=!1}),100)}))}}}]),angular.module("flow.drop",["flow.init"]).directive("flowDrop",(function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){function o(){e.$flow.assignDrop(t)}n.flowDropEnabled?e.$watch(n.flowDropEnabled,(function(n){n?o():e.$flow.unAssignDrop(t)})):o()}}})),function(e){"use strict";var t=e.module("flow.events",["flow.init"]);e.forEach({fileSuccess:["$file","$message"],fileProgress:["$file"],fileAdded:["$file","$event"],filesAdded:["$files","$event"],filesSubmitted:["$files","$event"],fileRetry:["$file"],fileRemoved:["$file"],fileError:["$file","$message"],uploadStart:[],complete:[],progress:[],error:["$message","$file"]},(function(n,o){var r,s="flow"+((r=o).charAt(0).toUpperCase()+r.slice(1));"flowUploadStart"==s&&(s="flowUploadStarted"),t.directive(s,[function(){return{require:"^flowInit",controller:["$scope","$attrs",function(t,r){t.$on("flow::"+o,(function(){var o=Array.prototype.slice.call(arguments),a=o.shift();if(t.$flow===o.shift()){var i={};e.forEach(n,(function(e,t){i[e]=o[t]})),!1===t.$eval(r[s],i)&&a.preventDefault()}}))}]}}])}))}(angular),angular.module("flow.img",["flow.init"]).directive("flowImg",[function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.flowImg;e.$watch(o,(function(t){if(t){var o=new FileReader;o.readAsDataURL(t.file),o.onload=function(t){e.$apply((function(){n.$set("src",t.target.result)}))}}}))}}}]),angular.module("flow.transfers",["flow.init"]).directive("flowTransfers",[function(){return{scope:!0,require:"^flowInit",link:function(e){e.transfers=e.$flow.files}}}]),angular.module("flow",["flow.provider","flow.init","flow.events","flow.btn","flow.drop","flow.transfers","flow.img","flow.dragEvents"])},"./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js":(e,t,n)=>{"use strict";var o,r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),a=n("./node_modules/@uirouter/angularjs/lib-esm/services.js"),i=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js");function d(e,t,n,o,i){var d=(0,r.parse)("viewDecl.controllerAs"),u=(0,r.parse)("viewDecl.resolveAs");return{restrict:"ECA",priority:-400,compile:function(o){var m=o.html();return o.empty(),function(o,_){var c=_.data("$uiView");if(!c)return _.html(m),void e(_.contents())(o);var h=c.$cfg||{viewDecl:{},getTemplate:r.noop},f=h.path&&new r.ResolveContext(h.path);_.html(h.getTemplate(_,f)||m),r.trace.traceUIViewFill(c.$uiView,_.html());var p=e(_.contents()),M=h.controller,y=d(h),L=u(h),g=f&&(0,a.D)(f);if(o[L]=g,M){var Y=t(M,(0,r.extend)({},g,{$scope:o,$element:_}));y&&(o[y]=Y,o[y][L]=g),_.data("$ngControllerController",Y),_.children().data("$ngControllerController",Y),l(i,n,Y,o,h)}if((0,r.isString)(h.component))var v=(0,r.kebobString)(h.component),k=new RegExp("^(x-|data-)?"+v+"$","i"),j=o.$watch((function(){var e=[].slice.call(_[0].children).filter((function(e){return e&&e.tagName&&k.exec(e.tagName)}));return e&&s.ng.element(e).data("$"+h.component+"Controller")}),(function(e){e&&(l(i,n,e,o,h),j())}));p(o)}}}}o=["$view","$animate","$uiViewScroll","$interpolate","$q",function(e,t,n,o,a){var d={$cfg:{viewDecl:{$context:e._pluginapi._rootViewContext()}},$uiView:{}},u={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(m,l,_){return function(m,l,c){var h,f,p,M,y=c.onload||"",L=c.autoscroll,g=function(e,n,o){s.ng.version.minor>2?t.enter(e,null,n).then(o):t.enter(e,null,n,o)},Y=function(e,n){s.ng.version.minor>2?t.leave(e).then(n):t.leave(e,n)},v=l.inheritedData("$uiView")||d,k=o(c.uiView||c.name||"")(m)||"$default",j={$type:"ng1",id:u.count++,name:k,fqn:v.$uiView.fqn?v.$uiView.fqn+"."+k:k,config:null,configUpdated:function(e){(!e||e instanceof i.qO)&&(M!==e&&(r.trace.traceUIViewConfigUpdated(j,e&&e.viewDecl&&e.viewDecl.$context),M=e,b(e)))},get creationContext(){var e=(0,r.parse)("$cfg.viewDecl.$context")(v),t=(0,r.parse)("$uiView.creationContext")(v);return e||t}};r.trace.traceUIViewEvent("Linking",j),l.data("$uiView",{$uiView:j}),b();var w=e.registerUIView(j);function b(e){var t=m.$new(),o=a.defer(),s=a.defer(),i={$cfg:e,$uiView:j},d={$animEnter:o.promise,$animLeave:s.promise,$$animLeave:s};t.$emit("$viewContentLoading",k);var u=_(t,(function(e){e.data("$uiViewAnim",d),e.data("$uiView",i),g(e,l,(function(){o.resolve(),p&&p.$emit("$viewContentAnimationEnded"),((0,r.isDefined)(L)&&!L||m.$eval(L))&&n(e)})),function(){if(h&&(r.trace.traceUIViewEvent("Removing (previous) el",h.data("$uiView")),h.remove(),h=null),p&&(r.trace.traceUIViewEvent("Destroying scope",j),p.$destroy(),p=null),f){var e=f.data("$uiViewAnim");r.trace.traceUIViewEvent("Animate out",e),Y(f,(function(){e.$$animLeave.resolve(),h=null})),h=f,f=null}}()}));f=u,(p=t).$emit("$viewContentLoaded",e||M),p.$eval(y)}m.$on("$destroy",(function(){r.trace.traceUIViewEvent("Destroying/Unregistering",j),w()}))}}};return u}],d.$inject=["$compile","$controller","$transitions","$view","$q"];var u="function"==typeof s.ng.module("ui.router").component,m=0;function l(e,t,n,o,s){!(0,r.isFunction)(n.$onInit)||(s.viewDecl.component||s.viewDecl.componentProvider)&&u||n.$onInit();var a=(0,r.tail)(s.path).state.self,i={bind:n};if((0,r.isFunction)(n.uiOnParamsChanged)){var d=new r.ResolveContext(s.path).getResolvable("$transition$").data;o.$on("$destroy",t.onSuccess({},(function(e){if(e!==d&&-1===e.exiting().indexOf(a)){var t=e.params("to"),o=e.params("from"),s=function(e){return e.paramSchema},i=e.treeChanges("to").map(s).reduce(r.unnestR,[]),u=e.treeChanges("from").map(s).reduce(r.unnestR,[]),m=i.filter((function(e){var n=u.indexOf(e);return-1===n||!u[n].type.equals(t[e.id],o[e.id])}));if(m.length){var l=m.map((function(e){return e.id})),_=(0,r.filter)(t,(function(e,t){return-1!==l.indexOf(t)}));n.uiOnParamsChanged(_,e)}}}),i))}if((0,r.isFunction)(n.uiCanExit)){var l=m++,_="_uiCanExitIds",c=function(e){return!!e&&(e[_]&&!0===e[_][l]||c(e.redirectedFrom()))},h={exiting:a.name};o.$on("$destroy",t.onBefore(h,(function(t){var o,r=t[_]=t[_]||{};return c(t)||(o=e.when(n.uiCanExit(t))).then((function(e){return r[l]=!1!==e})),o}),i))}}s.ng.module("ui.router.state").directive("uiView",o),s.ng.module("ui.router.state").directive("uiView",d)},"./node_modules/@uirouter/angularjs/lib-esm/interface.js":()=>{},"./node_modules/@uirouter/angularjs/lib-esm/services.js":(e,t,n)=>{"use strict";n.d(t,{D:()=>k});var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js"),a=function(){function e(){var e=this;this._useHttp=o.ng.version.minor<3,this.$get=["$http","$templateCache","$injector",function(t,n,o){return e.$templateRequest=o.has&&o.has("$templateRequest")&&o.get("$templateRequest"),e.$http=t,e.$templateCache=n,e}]}return e.prototype.useHttpService=function(e){this._useHttp=e},e.prototype.fromConfig=function(e,t,n){var o=function(e){return r.services.$q.when(e).then((function(e){return{template:e}}))},s=function(e){return r.services.$q.when(e).then((function(e){return{component:e}}))};return(0,r.isDefined)(e.template)?o(this.fromString(e.template,t)):(0,r.isDefined)(e.templateUrl)?o(this.fromUrl(e.templateUrl,t)):(0,r.isDefined)(e.templateProvider)?o(this.fromProvider(e.templateProvider,t,n)):(0,r.isDefined)(e.component)?s(e.component):(0,r.isDefined)(e.componentProvider)?s(this.fromComponentProvider(e.componentProvider,t,n)):o("<ui-view></ui-view>")},e.prototype.fromString=function(e,t){return(0,r.isFunction)(e)?e(t):e},e.prototype.fromUrl=function(e,t){return(0,r.isFunction)(e)&&(e=e(t)),null==e?null:this._useHttp?this.$http.get(e,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then((function(e){return e.data})):this.$templateRequest(e)},e.prototype.fromProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.fromComponentProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.makeComponentTemplate=function(e,t,n,s){s=s||{};var a=o.ng.version.minor>=3?"::":"",d=function(e){var t=(0,r.kebobString)(e);return/^(x|data)-/.exec(t)?"x-"+t:t},u=function(e){var t=r.services.$injector.get(e+"Directive");if(!t||!t.length)throw new Error("Unable to find component named '"+e+"'");return t.map(i).reduce(r.unnestR,[])}(n).map((function(n){var o=n.name,i=n.type,u=d(o);if(e.attr(u)&&!s[o])return u+"='"+e.attr(u)+"'";var m=s[o]||o;if("@"===i)return u+"='{{"+a+"$resolve."+m+"}}'";if("&"===i){var l=t.getResolvable(m),_=l&&l.data,c=_&&r.services.$injector.annotate(_)||[];return u+"='$resolve."+m+((0,r.isArray)(_)?"["+(_.length-1)+"]":"")+"("+c.join(",")+")'"}return u+"='"+a+"$resolve."+m+"'"})).join(" "),m=d(n);return"<"+m+" "+u+"></"+m+">"},e}(),i=function(e){return(0,r.isObject)(e.bindToController)?d(e.bindToController):d(e.scope)},d=function(e){return Object.keys(e||{}).map((function(t){return[t,/^([=<@&])[?]?(.*)/.exec(e[t])]})).filter((function(e){return(0,r.isDefined)(e)&&(0,r.isArray)(e[1])})).map((function(e){return{name:e[1][2]||e[0],type:e[1][1]}}))},u=n("./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js"),m=function(e){return function(t){var n=t[e],o="onExit"===e?"from":"to";return n?function(e,t){var s=new r.ResolveContext(e.treeChanges(o)).subContext(t.$$state()),a=(0,r.extend)(k(s),{$state$:t,$transition$:e});return r.services.$injector.invoke(n,this,a)}:void 0}},l=function(){function e(e){this._urlListeners=[],this.$locationProvider=e;var t=(0,r.val)(e);(0,r.createProxyFunctions)(t,this,t,["hashPrefix"])}return e.monkeyPatchPathParameterType=function(e){var t=e.urlMatcherFactory.type("path");t.encode=function(e){return null!=e?e.toString().replace(/(~|\/)/g,(function(e){return{"~":"~~","/":"~2F"}[e]})):e},t.decode=function(e){return null!=e?e.toString().replace(/(~~|~2F)/g,(function(e){return{"~~":"~","~2F":"/"}[e]})):e}},e.prototype.dispose=function(){},e.prototype.onChange=function(e){var t=this;return this._urlListeners.push(e),function(){return(0,r.removeFrom)(t._urlListeners)(e)}},e.prototype.html5Mode=function(){var e=this.$locationProvider.html5Mode();return(e=(0,r.isObject)(e)?e.enabled:e)&&this.$sniffer.history},e.prototype.baseHref=function(){return this._baseHref||(this._baseHref=this.$browser.baseHref()||this.$window.location.pathname)},e.prototype.url=function(e,t,n){return void 0===t&&(t=!1),(0,r.isDefined)(e)&&this.$location.url(e),t&&this.$location.replace(),n&&this.$location.state(n),this.$location.url()},e.prototype._runtimeServices=function(e,t,n,o,s){var a=this;this.$location=t,this.$sniffer=n,this.$browser=o,this.$window=s,e.$on("$locationChangeSuccess",(function(e){return a._urlListeners.forEach((function(t){return t(e)}))}));var i=(0,r.val)(t);(0,r.createProxyFunctions)(i,this,i,["replace","path","search","hash"]),(0,r.createProxyFunctions)(i,this,i,["port","protocol","host"])},e}(),_=n("./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js");o.ng.module("ui.router.angular1",[]);var c=o.ng.module("ui.router.init",["ng"]),h=o.ng.module("ui.router.util",["ui.router.init"]),f=o.ng.module("ui.router.router",["ui.router.util"]),p=o.ng.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),M=o.ng.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),y=(o.ng.module("ui.router.compat",["ui.router"]),null);function L(e){(y=this.router=new r.UIRouter).stateProvider=new u.X(y.stateRegistry,y.stateService),y.stateRegistry.decorator("views",s.LB),y.stateRegistry.decorator("onExit",m("onExit")),y.stateRegistry.decorator("onRetain",m("onRetain")),y.stateRegistry.decorator("onEnter",m("onEnter")),y.viewService._pluginapi._viewConfigFactory("ng1",(0,s.OB)()),y.urlService.config._decodeParams=!1;var t=y.locationService=y.locationConfig=new l(e);function n(e,n,o,r,s,a,i){return t._runtimeServices(s,e,r,n,o),delete y.router,delete y.$get,y}return l.monkeyPatchPathParameterType(y),y.router=y,y.$get=n,n.$inject=["$location","$browser","$window","$sniffer","$rootScope","$http","$templateCache"],y}L.$inject=["$locationProvider"];var g=function(e){return["$uiRouterProvider",function(t){var n=t.router[e];return n.$get=function(){return n},n}]};function Y(e,t,n){if(r.services.$injector=e,r.services.$q=t,!Object.prototype.hasOwnProperty.call(e,"strictDi"))try{e.invoke((function(e){}))}catch(t){e.strictDi=!!/strict mode/.exec(t&&t.toString())}n.stateRegistry.get().map((function(e){return e.$$state().resolvables})).reduce(r.unnestR,[]).filter((function(e){return"deferred"===e.deps})).forEach((function(t){return t.deps=e.annotate(t.resolveFn,e.strictDi)}))}function v(e){e.$watch((function(){r.trace.approximateDigests++}))}Y.$inject=["$injector","$q","$uiRouter"],v.$inject=["$rootScope"],c.provider("$uiRouter",L),f.provider("$urlRouter",["$uiRouterProvider",function(e){return e.urlRouterProvider=new _.L(e)}]),h.provider("$urlService",g("urlService")),h.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return y.urlMatcherFactory}]),h.provider("$templateFactory",(function(){return new a})),p.provider("$stateRegistry",g("stateRegistry")),p.provider("$uiRouterGlobals",g("globals")),p.provider("$transitions",g("transitionService")),p.provider("$state",["$uiRouterProvider",function(){return(0,r.extend)(y.stateProvider,{$get:function(){return y.stateService}})}]),p.factory("$stateParams",["$uiRouter",function(e){return e.globals.params}]),M.factory("$view",(function(){return y.viewService})),M.service("$trace",(function(){return r.trace})),M.run(v),h.run(["$urlMatcherFactory",function(e){}]),p.run(["$state",function(e){}]),f.run(["$urlRouter",function(e){}]),c.run(Y);var k=function(e){return e.getTokens().filter(r.isString).map((function(t){var n=e.getResolvable(t);return[t,"NOWAIT"===e.getPolicy(n).async?n.promise:n.data]})).reduce(r.applyPairs,{})}},"./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js");function r(e){var t=function(t,n,o){return e.is(t,n,o)};return t.$stateful=!0,t}function s(e){var t=function(t,n,o){return e.includes(t,n,o)};return t.$stateful=!0,t}r.$inject=["$state"],s.$inject=["$state"],o.ng.module("ui.router.state").filter("isState",r).filter("includedByState",s)},"./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(t,n){this.stateRegistry=t,this.stateService=n,(0,o.createProxyFunctions)((0,o.val)(e.prototype),this,(0,o.val)(this))}return e.prototype.decorator=function(e,t){return this.stateRegistry.decorator(e,t)||this},e.prototype.state=function(e,t){return(0,o.isObject)(e)?t=e:t.name=e,this.stateRegistry.register(t),this},e.prototype.onInvalid=function(e){return this.stateService.onInvalid(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js":(e,t,n)=>{"use strict";n.d(t,{OB:()=>r,LB:()=>a,qO:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/index.js");function r(){var e=null;return function(t,n){return e=e||o.services.$injector.get("$templateFactory"),[new d(t,n,e)]}}var s=function(e,t){return e.reduce((function(e,n){return e||(0,o.isDefined)(t[n])}),!1)};function a(e){if(!e.parent)return{};var t=["component","bindings","componentProvider"],n=["templateProvider","templateUrl","template","notify","async"].concat(["controller","controllerProvider","controllerAs","resolveAs"]),r=t.concat(n);if((0,o.isDefined)(e.views)&&s(r,e))throw new Error("State '"+e.name+"' has a 'views' object. It cannot also have \"view properties\" at the state level.  Move the following properties into a view (in the 'views' object):  "+r.filter((function(t){return(0,o.isDefined)(e[t])})).join(", "));var a={},i=e.views||{$default:(0,o.pick)(e,r)};return(0,o.forEach)(i,(function(r,i){if(i=i||"$default",(0,o.isString)(r)&&(r={component:r}),r=(0,o.extend)({},r),s(t,r)&&s(n,r))throw new Error("Cannot combine: "+t.join("|")+" with: "+n.join("|")+" in stateview: '"+i+"@"+e.name+"'");r.resolveAs=r.resolveAs||"$resolve",r.$type="ng1",r.$context=e,r.$name=i;var d=o.ViewService.normalizeUIViewTarget(r.$context,r.$name);r.$uiViewName=d.uiViewName,r.$uiViewContextAnchor=d.uiViewContextAnchor,a[i]=r})),a}var i=0,d=function(){function e(e,t,n){var o=this;this.path=e,this.viewDecl=t,this.factory=n,this.$id=i++,this.loaded=!1,this.getTemplate=function(e,t){return o.component?o.factory.makeComponentTemplate(e,t,o.component,o.viewDecl.bindings):o.template}}return e.prototype.load=function(){var e=this,t=o.services.$q,n=new o.ResolveContext(this.path),r=this.path.reduce((function(e,t){return(0,o.extend)(e,t.paramValues)}),{}),s={template:t.when(this.factory.fromConfig(this.viewDecl,r,n)),controller:t.when(this.getController(n))};return t.all(s).then((function(t){return o.trace.traceViewServiceEvent("Loaded",e),e.controller=t.controller,(0,o.extend)(e,t.template),e}))},e.prototype.getController=function(e){var t=this.viewDecl.controllerProvider;if(!(0,o.isInjectable)(t))return this.viewDecl.controller;var n=o.services.$injector.annotate(t),r=(0,o.isArray)(t)?(0,o.tail)(t):t;return new o.Resolvable("",r,n).get(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(e){this.router=e}return e.injectableHandler=function(e,t){return function(n){return o.services.$injector.invoke(t,null,{$match:n,$stateParams:e.globals.params})}},e.prototype.$get=function(){var e=this.router.urlService;return this.router.urlRouter.update(!0),e.interceptDeferred||e.listen(),this.router.urlRouter},e.prototype.rule=function(e){var t=this;if(!(0,o.isFunction)(e))throw new Error("'rule' must be a function");var n=new o.BaseUrlRule((function(){return e(o.services.$injector,t.router.locationService)}),o.identity);return this.router.urlService.rules.rule(n),this},e.prototype.otherwise=function(e){var t=this,n=this.router.urlService.rules;if((0,o.isString)(e))n.otherwise(e);else{if(!(0,o.isFunction)(e))throw new Error("'rule' must be a string or function");n.otherwise((function(){return e(o.services.$injector,t.router.locationService)}))}return this},e.prototype.when=function(t,n){return((0,o.isArray)(n)||(0,o.isFunction)(n))&&(n=e.injectableHandler(this.router,n)),this.router.urlService.rules.when(t,n),this},e.prototype.deferIntercept=function(e){this.router.urlService.deferIntercept(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/angularjs/lib-esm/angular.js").ng.module("ui.router.state").provider("$uiViewScroll",(function(){var e=!1;this.useAnchorScroll=function(){e=!0},this.$get=["$anchorScroll","$timeout",function(t,n){return e?t:function(e){return n((function(){e[0].scrollIntoView()}),0,!1)}}]}))},"./node_modules/@uirouter/core/lib-esm/common/common.js":(e,t,n)=>{"use strict";n.d(t,{Jz:()=>i,xZ:()=>u,Qs:()=>m,Ed:()=>l,l7:()=>_,fS:()=>c,yR:()=>h,ZT:()=>f,WR:()=>p,ED:()=>M,d3:()=>y,nA:()=>L,LH:()=>g,Wk:()=>Y,ce:()=>v,LQ:()=>k,mX:()=>j,ei:()=>w,CE:()=>b,hX:()=>D,sE:()=>T,js:()=>S,UI:()=>H,VO:()=>x,XC:()=>E,o8:()=>P,M7:()=>O,FN:()=>$,Ez:()=>A,v_:()=>R,UW:()=>F,sp:()=>W,ym:()=>C,bb:()=>I,Gb:()=>z,JG:()=>J,HX:()=>V,jv:()=>N});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),a=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o},i="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g||void 0,d=i.angular||{},u=d.fromJson||JSON.parse.bind(JSON),m=d.toJson||JSON.stringify.bind(JSON),l=d.forEach||function(e,t,n){if((0,o.kJ)(e))return e.forEach(t,n);Object.keys(e).forEach((function(n){return t(e[n],n)}))},_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];if(n)for(var o=Object.keys(n),r=0;r<o.length;r++)e[o[r]]=n[o[r]]}return e},c=d.equals||function e(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;var s=typeof t;if(s!==typeof n||"object"!==s)return!1;var a,i,d=[t,n];if((0,r.$6)(o.kJ)(d))return i=n,(a=t).length===i.length&&C(a,i).reduce((function(t,n){return t&&e(n[0],n[1])}),!0);if((0,r.$6)(o.J_)(d))return t.getTime()===n.getTime();if((0,r.$6)(o.Kj)(d))return t.toString()===n.toString();if((0,r.$6)(o.mf)(d))return!0;if([o.mf,o.kJ,o.J_,o.Kj].map(r.Yj).reduce((function(e,t){return e||!!t(d)}),!1))return!1;var u={};for(var m in t){if(!e(t[m],n[m]))return!1;u[m]=!0}for(var m in n)if(!u[m])return!1;return!0};function h(e){return e}function f(){}function p(e,t,n,o,r){void 0===r&&(r=!1);var s=function(t){return e()[t].bind(n())};return(o=o||Object.keys(e())).reduce((function(e,n){var o;return e[n]=r?(o=n,function(){return t[o]=s(o),t[o].apply(null,arguments)}):s(n),e}),t)}var M=function(e,t){return _(Object.create(e),t)},y=(0,r.WA)((function(e,t){return-1!==e.indexOf(t)})),L=(0,r.WA)((function(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),e})),g=(0,r.WA)((function(e,t){return e.push(t),t})),Y=function(e){return e.slice().forEach((function(t){"function"==typeof t&&t(),L(e,t)}))};function v(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var o=_.apply(void 0,a([{}],t.reverse()));return _(o,w(e||{},Object.keys(o)))}var k=function(e,t){return _(e,t)};function j(e,t){var n=[];for(var o in e.path){if(e.path[o]!==t.path[o])break;n.push(e.path[o])}return n}function w(e,t){var n={};for(var o in e)-1!==t.indexOf(o)&&(n[o]=e[o]);return n}function b(e,t){return Object.keys(e).filter((0,r.ff)(y(t))).reduce((function(t,n){return t[n]=e[n],t}),{})}function D(e,t){var n=(0,o.kJ)(e),r=n?[]:{},s=n?function(e){return r.push(e)}:function(e,t){return r[t]=e};return l(e,(function(e,n){t(e,n)&&s(e,n)})),r}function T(e,t){var n;return l(e,(function(e,o){n||t(e,o)&&(n=e)})),n}var S=H;function H(e,t,n){return n=n||((0,o.kJ)(e)?[]:{}),l(e,(function(e,o){return n[o]=t(e,o)})),n}var x=function(e){return Object.keys(e).map((function(t){return e[t]}))},E=function(e,t){return e&&t},P=function(e,t){return e||t},O=function(e,t){return e.concat(t)},$=function(e,t){return(0,o.kJ)(t)?e.concat(t.reduce($,[])):A(e,t)};function A(e,t){return e.push(t),e}var R=function(e,t){return y(e,t)?e:A(e,t)},F=function(e){return e.reduce(O,[])},W=function(e,t){return void 0===t&&(t="assert failure"),function(n){var r=e(n);if(!r)throw new Error((0,o.mf)(t)?t(n):t);return r}};function C(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)return[];for(var n=e.reduce((function(e,t){return Math.min(t.length,e)}),9007199254740991),o=[],r=function(t){switch(e.length){case 1:o.push([e[0][t]]);break;case 2:o.push([e[0][t],e[1][t]]);break;case 3:o.push([e[0][t],e[1][t],e[2][t]]);break;case 4:o.push([e[0][t],e[1][t],e[2][t],e[3][t]]);break;default:o.push(e.map((function(e){return e[t]})))}},s=0;s<n;s++)r(s);return o}function I(e,t){var n,r;if((0,o.kJ)(t)&&(n=t[0],r=t[1]),!(0,o.HD)(n))throw new Error("invalid parameters to applyPairs");return e[n]=r,e}function z(e){return e.length&&e[e.length-1]||void 0}function J(e,t){return t&&Object.keys(t).forEach((function(e){return delete t[e]})),t||(t={}),_(t,e)}var V=function(e){return e.catch((function(e){return 0}))&&e},N=function(e){return V(s.u.$q.reject(e))}},"./node_modules/@uirouter/core/lib-esm/common/coreservices.js":(e,t,n)=>{"use strict";n.d(t,{H:()=>o,u:()=>r});var o=function(e,t){return t.reduce((function(t,n){return t[n]=(o=e+"."+n+"()",function(){throw new Error("No implementation for "+o+". The framework specific code did not implement this method.")}),t;var o}),{})},r={$q:void 0,$injector:void 0}},"./node_modules/@uirouter/core/lib-esm/common/glob.js":(e,t,n)=>{"use strict";n.d(t,{r:()=>o});var o=function(){function e(e){this.text=e,this.glob=e.split(".");var t=this.text.split(".").map((function(e){return"**"===e?"(?:|(?:\\.[^.]*)*)":"*"===e?"\\.[^.]*":"\\."+e})).join("");this.regexp=new RegExp("^"+t+"$")}return e.is=function(e){return!!/[!,*]+/.exec(e)},e.fromString=function(t){return e.is(t)?new e(t):null},e.prototype.matches=function(e){return this.regexp.test("."+e)},e}()},"./node_modules/@uirouter/core/lib-esm/common/hof.js":(e,t,n)=>{"use strict";n.d(t,{WA:()=>r,zG:()=>a,vg:()=>i,OH:()=>d,Qc:()=>u,ff:()=>m,xD:()=>l,or:()=>_,$6:()=>c,Yj:()=>h,is:()=>f,P0:()=>p,uj:()=>M});var o=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o};function r(e){return function t(){if(arguments.length>=e.length)return e.apply(this,arguments);var n=Array.prototype.slice.call(arguments);return t.bind.apply(t,o([this],n))}}function s(){var e=arguments,t=e.length-1;return function(){for(var n=t,o=e[t].apply(this,arguments);n--;)o=e[n].call(this,o);return o}}function a(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.apply(null,[].slice.call(arguments).reverse())}var i=function(e){return function(t){return t&&t[e]}},d=r((function(e,t,n){return n&&n[e]===t})),u=function(e){return a.apply(null,e.split(".").map(i))},m=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return!e.apply(null,t)}};function l(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)&&t.apply(null,n)}}function _(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)||t.apply(null,n)}}var c=function(e){return function(t){return t.reduce((function(t,n){return t&&!!e(n)}),!0)}},h=function(e){return function(t){return t.reduce((function(t,n){return t||!!e(n)}),!1)}},f=function(e){return function(t){return null!=t&&t.constructor===e||t instanceof e}},p=function(e){return function(){return e}};function M(e){return function(t){for(var n=0;n<e.length;n++)if(e[n][0](t))return e[n][1](t)}}},"./node_modules/@uirouter/core/lib-esm/common/predicates.js":(e,t,n)=>{"use strict";n.d(t,{o8:()=>a,$K:()=>i,Ft:()=>d,le:()=>u,mf:()=>m,hj:()=>l,HD:()=>_,Kn:()=>c,kJ:()=>h,J_:()=>f,Kj:()=>p,Qh:()=>M,tI:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),r=Object.prototype.toString,s=function(e){return function(t){return typeof t===e}},a=s("undefined"),i=(0,o.ff)(a),d=function(e){return null===e},u=(0,o.or)(d,a),m=s("function"),l=s("number"),_=s("string"),c=function(e){return null!==e&&"object"==typeof e},h=Array.isArray,f=function(e){return"[object Date]"===r.call(e)},p=function(e){return"[object RegExp]"===r.call(e)};function M(e){if(h(e)&&e.length){var t=e.slice(0,-1),n=e.slice(-1);return!(t.filter((0,o.ff)(_)).length||n.filter((0,o.ff)(m)).length)}return m(e)}var y=(0,o.xD)(c,(0,o.zG)((0,o.vg)("then"),m))},"./node_modules/@uirouter/core/lib-esm/common/queue.js":(e,t,n)=>{"use strict";n.d(t,{c:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e,t){void 0===e&&(e=[]),void 0===t&&(t=null),this._items=e,this._limit=t,this._evictListeners=[],this.onEvict=(0,o.LH)(this._evictListeners)}return e.prototype.enqueue=function(e){var t=this._items;return t.push(e),this._limit&&t.length>this._limit&&this.evict(),e},e.prototype.evict=function(){var e=this._items.shift();return this._evictListeners.forEach((function(t){return t(e)})),e},e.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},e.prototype.clear=function(){var e=this._items;return this._items=[],e},e.prototype.size=function(){return this._items.length},e.prototype.remove=function(e){var t=this._items.indexOf(e);return t>-1&&this._items.splice(t,1)[0]},e.prototype.peekTail=function(){return this._items[this._items.length-1]},e.prototype.peekHead=function(){if(this.size())return this._items[0]},e}()},"./node_modules/@uirouter/core/lib-esm/common/safeConsole.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r={log:o.ZT,error:o.ZT,table:o.ZT},s="undefined"!=typeof document&&document.documentMode&&9===document.documentMode?window&&window.console?function(e){var t=function(t){return Function.prototype.bind.call(t,e)};return{log:t(e.log),error:t(e.log),table:t(e.log)}}(window.console):r:console.table&&console.error?console:function(e){var t=e.log.bind(e);return{log:t,error:e.error?e.error.bind(e):t,table:e.table?e.table.bind(e):t}}(console)},"./node_modules/@uirouter/core/lib-esm/common/strings.js":(e,t,n)=>{"use strict";n.d(t,{BS:()=>i,NE:()=>d,L$:()=>u,XF:()=>m,iC:()=>l,Pz:()=>h,Lb:()=>p,cW:()=>M,C7:()=>y,Fb:()=>L,HV:()=>g,PX:()=>Y,iV:()=>v});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");function i(e,t){return t.length<=e?t:t.substr(0,e-3)+"..."}function d(e,t){for(;t.length<e;)t+=" ";return t}function u(e){return e.replace(/^([A-Z])/,(function(e){return e.toLowerCase()})).replace(/([A-Z])/g,(function(e){return"-"+e.toLowerCase()}))}function m(e){var t=l(e),n=t.match(/^(function [^ ]+\([^)]*\))/),o=n?n[1]:t,r=e.name||"";return r&&o.match(/function \(/)?"function "+r+o.substr(9):o}function l(e){var t=(0,o.kJ)(e)?e.slice(-1)[0]:e;return t&&t.toString()||"undefined"}var _=r.i.isRejectionPromise,c=(0,a.uj)([[o.o8,(0,a.P0)("undefined")],[o.Ft,(0,a.P0)("null")],[o.tI,(0,a.P0)("[Promise]")],[_,function(e){return e._transitionRejection.toString()}],[function(e){return(0,o.Kn)(e)&&!(0,o.kJ)(e)&&e.constructor!==Object&&(0,o.mf)(e.toString)},function(e){return e.toString()}],[o.Qh,m],[(0,a.P0)(!0),s.yR]]);function h(e){var t=[];function n(e){if((0,o.Kn)(e)){if(-1!==t.indexOf(e))return"[circular ref]";t.push(e)}return c(e)}return(0,o.o8)(e)?n(e):JSON.stringify(e,(function(e,t){return n(t)})).replace(/\\"/g,'"')}var f=function(e){return function(t){if(!t)return["",""];var n=t.indexOf(e);return-1===n?[t,""]:[t.substr(0,n),t.substr(n+1)]}},p=function(e){return e.replace(/\/[^/]*$/,"")},M=f("#"),y=f("?"),L=f("="),g=function(e){return e?e.replace(/^#/,""):""};function Y(e){var t=new RegExp("("+e+")","g");return function(e){return e.split(t).filter(s.yR)}}function v(e,t){return(0,o.HD)((0,s.Gb)(e))&&(0,o.HD)(t)?e.slice(0,-1).concat((0,s.Gb)(e)+t):(0,s.Ez)(e,t)}},"./node_modules/@uirouter/core/lib-esm/common/trace.js":(e,t,n)=>{"use strict";n.d(t,{g4:()=>c});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js");function d(e){if(!e)return"ui-view (defunct)";var t=e.creationContext?e.creationContext.name||"(root)":"(none)";return"[ui-view#"+e.id+" "+e.$type+":"+e.fqn+" ("+e.name+"@"+t+")]"}function u(e){return(0,s.hj)(e)?o[e]:o[o[e]]}!function(e){e[e.RESOLVE=0]="RESOLVE",e[e.TRANSITION=1]="TRANSITION",e[e.HOOK=2]="HOOK",e[e.UIVIEW=3]="UIVIEW",e[e.VIEWCONFIG=4]="VIEWCONFIG"}(o||(o={}));var m=(0,r.Qc)("$id"),l=(0,r.Qc)("router.$id"),_=function(e){return"Transition #"+m(e)+"-"+l(e)},c=new(function(){function e(){this._enabled={},this.approximateDigests=0}return e.prototype._set=function(e,t){var n=this;t.length||(t=Object.keys(o).map((function(e){return parseInt(e,10)})).filter((function(e){return!isNaN(e)})).map((function(e){return o[e]}))),t.map(u).forEach((function(t){return n._enabled[t]=e}))},e.prototype.enable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!0,e)},e.prototype.disable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!1,e)},e.prototype.enabled=function(e){return!!this._enabled[u(e)]},e.prototype.traceTransitionStart=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Started  -> "+(0,a.Pz)(e))},e.prototype.traceTransitionIgnored=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Ignored  <> "+(0,a.Pz)(e))},e.prototype.traceHookInvocation=function(e,t,n){if(this.enabled(o.HOOK)){var s=(0,r.Qc)("traceData.hookType")(n)||"internal",d=(0,r.Qc)("traceData.context.state.name")(n)||(0,r.Qc)("traceData.context")(n)||"unknown",u=(0,a.XF)(e.registeredHook.callback);i.L.log(_(t)+":   Hook -> "+s+" context: "+d+", "+(0,a.BS)(200,u))}},e.prototype.traceHookResult=function(e,t,n){this.enabled(o.HOOK)&&i.L.log(_(t)+":   <- Hook returned: "+(0,a.BS)(200,(0,a.Pz)(e)))},e.prototype.traceResolvePath=function(e,t,n){this.enabled(o.RESOLVE)&&i.L.log(_(n)+":         Resolving "+e+" ("+t+")")},e.prototype.traceResolvableResolved=function(e,t){this.enabled(o.RESOLVE)&&i.L.log(_(t)+":               <- Resolved  "+e+" to: "+(0,a.BS)(200,(0,a.Pz)(e.data)))},e.prototype.traceError=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Rejected "+(0,a.Pz)(t)+", reason: "+e)},e.prototype.traceSuccess=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Success  "+(0,a.Pz)(t)+", final state: "+e.name)},e.prototype.traceUIViewEvent=function(e,t,n){void 0===n&&(n=""),this.enabled(o.UIVIEW)&&i.L.log("ui-view: "+(0,a.NE)(30,e)+" "+d(t)+n)},e.prototype.traceUIViewConfigUpdated=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Updating",e," with ViewConfig from context='"+t+"'")},e.prototype.traceUIViewFill=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Fill",e," with: "+(0,a.BS)(200,t))},e.prototype.traceViewSync=function(e){if(this.enabled(o.VIEWCONFIG)){var t="uiview component fqn",n=e.map((function(e){var n,o=e.uiView,r=e.viewConfig,s=o&&o.fqn,a=r&&r.viewDecl.$context.name+": ("+r.viewDecl.$name+")";return(n={})[t]=s,n["view config state (view name)"]=a,n})).sort((function(e,n){return(e[t]||"").localeCompare(n[t]||"")}));i.L.table(n)}},e.prototype.traceViewServiceEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+function(e){var t=e.viewDecl,n=t.$context.name||"(root)";return"[View#"+e.$id+" from '"+n+"' state]: target ui-view: '"+t.$uiViewName+"@"+t.$uiViewContextAnchor+"'"}(t))},e.prototype.traceViewServiceUIViewEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+d(t))},e}())},"./node_modules/@uirouter/core/lib-esm/globals.js":(e,t,n)=>{"use strict";n.d(t,{k:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/stateParams.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/queue.js"),s=function(){function e(){this.params=new o.i,this.lastStartedTransitionId=-1,this.transitionHistory=new r.c([],1),this.successfulTransitions=new r.c([],1)}return e.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},e}()},"./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js":(e,t,n)=>{"use strict";n.d(t,{v:()=>s,A:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),r=function(e){var t=e.router,n=e.entering().filter((function(e){return!!e.$$state().lazyLoad})).map((function(t){return a(e,t)}));return o.u.$q.all(n).then((function(){if("url"!==e.originalTransition().options().source){var n=e.targetState();return t.stateService.target(n.identifier(),n.params(),n.options())}var o=t.urlService,r=o.match(o.parts()),s=r&&r.rule;if(s&&"STATE"===s.type){var a=s.state,i=r.match;return t.stateService.target(a,i,e.options())}t.urlService.sync()}))},s=function(e){return e.onBefore({entering:function(e){return!!e.lazyLoad}},r)};function a(e,t){var n=t.$$state().lazyLoad,r=n._promise;return r||(r=n._promise=o.u.$q.when(n(e,t)).then((function(t){return t&&Array.isArray(t.states)&&t.states.forEach((function(t){return e.router.stateRegistry.register(t)})),t})).then((function(e){return delete t.lazyLoad,delete t.$$state().lazyLoad,delete n._promise,e}),(function(e){return delete n._promise,o.u.$q.reject(e)}))),r}},"./node_modules/@uirouter/core/lib-esm/interface.js":(e,t,n)=>{},"./node_modules/@uirouter/core/lib-esm/params/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/params/param.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>o,d:()=>m});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=Object.prototype.hasOwnProperty;!function(e){e[e.PATH=0]="PATH",e[e.SEARCH=1]="SEARCH",e[e.CONFIG=2]="CONFIG"}(o||(o={}));var m=function(){function e(e,t,n,i,m){var l=function(e,t,n){var s=!1===n.reloadOnSearch&&t===o.SEARCH||void 0,i=(0,r.sE)([n.dynamic,s],a.$K),d=(0,a.$K)(i)?{dynamic:i}:{},m=function(e){function t(){return e.value}e=function(e){return 0===["value","type","squash","array","dynamic"].filter(u.bind(e||{})).length}(e)?{value:e}:e,t.__cacheable=!0;var n=(0,a.Qh)(e.value)?e.value:t;return(0,r.l7)(e,{$$fn:n})}(n&&n.params&&n.params[e]);return(0,r.l7)(d,m)}(e,n,m);t=function(e,t,n,r,s){if(e.type&&t&&"string"!==t.name)throw new Error("Param '"+r+"' has two type configurations.");if(e.type&&t&&"string"===t.name&&s.type(e.type))return s.type(e.type);if(t)return t;if(!e.type){var a=n===o.CONFIG?"any":n===o.PATH?"path":n===o.SEARCH?"query":"string";return s.type(a)}return e.type instanceof d._?e.type:s.type(e.type)}(l,t,n,e,i.paramTypes);var _,c,h=(_={array:n===o.SEARCH&&"auto"},c=e.match(/\[\]$/)?{array:!0}:{},(0,r.l7)(_,c,l).array);t=h?t.$asArray(h,n===o.SEARCH):t;var f=void 0!==l.value||n===o.SEARCH,p=(0,a.$K)(l.dynamic)?!!l.dynamic:!!t.dynamic,M=(0,a.$K)(l.raw)?!!l.raw:!!t.raw,y=function(e,t,n){var o=e.squash;if(!t||!1===o)return!1;if(!(0,a.$K)(o)||null==o)return n;if(!0===o||(0,a.HD)(o))return o;throw new Error("Invalid squash policy: '"+o+"'. Valid policies: false, true, or arbitrary string")}(l,f,i.defaultSquashPolicy()),L=function(e,t,n,o){var i=[{from:"",to:n||t?void 0:""},{from:null,to:n||t?void 0:""}],d=(0,a.kJ)(e.replace)?e.replace:[];(0,a.HD)(o)&&d.push({from:o,to:void 0});var u=(0,r.UI)(d,(0,s.vg)("from"));return(0,r.hX)(i,(function(e){return-1===u.indexOf(e.from)})).concat(d)}(l,h,f,y),g=(0,a.$K)(l.inherit)?!!l.inherit:!!t.inherit;(0,r.l7)(this,{id:e,type:t,location:n,isOptional:f,dynamic:p,raw:M,squash:y,replace:L,inherit:g,array:h,config:l})}return e.values=function(e,t){void 0===t&&(t={});for(var n={},o=0,r=e;o<r.length;o++){var s=r[o];n[s.id]=s.value(t[s.id])}return n},e.changed=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e.filter((function(e){return!e.type.equals(t[e.id],n[e.id])}))},e.equals=function(t,n,o){return void 0===n&&(n={}),void 0===o&&(o={}),0===e.changed(t,n,o).length},e.validates=function(e,t){return void 0===t&&(t={}),e.map((function(e){return e.validates(t[e.id])})).reduce(r.XC,!0)},e.prototype.isDefaultValue=function(e){return this.isOptional&&this.type.equals(this.value(),e)},e.prototype.value=function(e){var t=this;return e=function(e){for(var n=0,o=t.replace;n<o.length;n++){var r=o[n];if(r.from===e)return r.to}return e}(e),(0,a.o8)(e)?function(){if(t._defaultValueCache)return t._defaultValueCache.defaultValue;if(!i.u.$injector)throw new Error("Injectable functions cannot be called at configuration time");var e=i.u.$injector.invoke(t.config.$$fn);if(null!=e&&!t.type.is(e))throw new Error("Default value ("+e+") for parameter '"+t.id+"' is not an instance of ParamType ("+t.type.name+")");return t.config.$$fn.__cacheable&&(t._defaultValueCache={defaultValue:e}),e}():this.type.$normalize(e)},e.prototype.isSearch=function(){return this.location===o.SEARCH},e.prototype.validates=function(e){if(((0,a.o8)(e)||null===e)&&this.isOptional)return!0;var t=this.type.$normalize(e);if(!this.type.is(t))return!1;var n=this.type.encode(t);return!((0,a.HD)(n)&&!this.type.pattern.exec(n))},e.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},e}()},"./node_modules/@uirouter/core/lib-esm/params/paramType.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=function(){function e(e){this.pattern=/.*/,this.inherit=!0,(0,o.l7)(this,e)}return e.prototype.is=function(e,t){return!0},e.prototype.encode=function(e,t){return e},e.prototype.decode=function(e,t){return e},e.prototype.equals=function(e,t){return e==t},e.prototype.$subPattern=function(){var e=this.pattern.toString();return e.substr(1,e.length-2)},e.prototype.toString=function(){return"{ParamType:"+this.name+"}"},e.prototype.$normalize=function(e){return this.is(e)?e:this.decode(e)},e.prototype.$asArray=function(e,t){if(!e)return this;if("auto"===e&&!t)throw new Error("'auto' array mode is for query parameters only");return new a(this,e)},e}();function a(e,t){var n=this;function s(e){return(0,r.kJ)(e)?e:(0,r.$K)(e)?[e]:[]}function a(e,n){return function(a){if((0,r.kJ)(a)&&0===a.length)return a;var i=s(a),d=(0,o.UI)(i,e);return!0===n?0===(0,o.hX)(d,(function(e){return!e})).length:function(e){switch(e.length){case 0:return;case 1:return"auto"===t?e[0]:e;default:return e}}(d)}}function i(e){return function(t,n){var o=s(t),r=s(n);if(o.length!==r.length)return!1;for(var a=0;a<o.length;a++)if(!e(o[a],r[a]))return!1;return!0}}["encode","decode","equals","$normalize"].forEach((function(t){var o=e[t].bind(e),r="equals"===t?i:a;n[t]=r(o)})),(0,o.l7)(this,{dynamic:e.dynamic,name:e.name,pattern:e.pattern,inherit:e.inherit,raw:e.raw,is:a(e.is.bind(e),!0),$arrayMode:t})}},"./node_modules/@uirouter/core/lib-esm/params/paramTypes.js":(e,t,n)=>{"use strict";n.d(t,{p:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=function(){function e(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes=(0,r.ei)(e.prototype,["hash","string","query","path","int","bool","date","json","any"]),this.types=(0,r.ED)((0,r.UI)(this.defaultTypes,(function(e,t){return new d._((0,r.l7)({name:t},e))})),{})}return e.prototype.dispose=function(){this.types={}},e.prototype.type=function(e,t,n){if(!(0,s.$K)(t))return this.types[e];if(this.types.hasOwnProperty(e))throw new Error("A type named '"+e+"' has already been defined.");return this.types[e]=new d._((0,r.l7)({name:e},t)),n&&(this.typeQueue.push({name:e,def:n}),this.enqueue||this._flushTypeQueue()),this},e.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var e=this.typeQueue.shift();if(e.pattern)throw new Error("You cannot override a type's .pattern at runtime.");(0,r.l7)(this.types[e.name],i.u.$injector.invoke(e.def))}},e}();o=function(e){var t=function(e){return null!=e?e.toString():e},n={encode:t,decode:t,is:(0,a.is)(String),pattern:/.*/,equals:function(e,t){return e==t}};return(0,r.l7)({},n,e)},(0,r.l7)(u.prototype,{string:o({}),path:o({pattern:/[^/]*/}),query:o({}),hash:o({inherit:!1}),int:o({decode:function(e){return parseInt(e,10)},is:function(e){return!(0,s.le)(e)&&this.decode(e.toString())===e},pattern:/-?\d+/}),bool:o({encode:function(e){return e?1:0},decode:function(e){return 0!==parseInt(e,10)},is:(0,a.is)(Boolean),pattern:/0|1/}),date:o({encode:function(e){return this.is(e)?[e.getFullYear(),("0"+(e.getMonth()+1)).slice(-2),("0"+e.getDate()).slice(-2)].join("-"):void 0},decode:function(e){if(this.is(e))return e;var t=this.capture.exec(e);return t?new Date(t[1],t[2]-1,t[3]):void 0},is:function(e){return e instanceof Date&&!isNaN(e.valueOf())},equals:function(e,t){return["getFullYear","getMonth","getDate"].reduce((function(n,o){return n&&e[o]()===t[o]()}),!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/}),json:o({encode:r.Qs,decode:r.xZ,is:(0,a.is)(Object),equals:r.fS,pattern:/[^/]*/}),any:o({encode:r.yR,decode:r.yR,is:function(){return!0},equals:r.fS})})},"./node_modules/@uirouter/core/lib-esm/params/stateParams.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e){void 0===e&&(e={}),(0,o.l7)(this,e)}return e.prototype.$inherit=function(e,t,n){var r,s=(0,o.mX)(t,n),a={},i=[];for(var d in s)if(s[d]&&s[d].params&&(r=Object.keys(s[d].params)).length)for(var u in r)i.indexOf(r[u])>=0||(i.push(r[u]),a[r[u]]=this[r[u]]);return(0,o.l7)({},a,e)},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathNode.js":(e,t,n)=>{"use strict";n.d(t,{V:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/param.js"),a=function(){function e(t){if(t instanceof e){var n=t;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=(0,o.l7)({},n.paramValues),this.resolvables=n.resolvables.slice(),this.views=n.views&&n.views.slice()}else{var r=t;this.state=r,this.paramSchema=r.parameters({inherit:!1}),this.paramValues={},this.resolvables=r.resolvables.map((function(e){return e.clone()}))}}return e.prototype.clone=function(){return new e(this)},e.prototype.applyRawParams=function(e){return this.paramValues=this.paramSchema.reduce((function(t,n){return(0,o.bb)(t,[(r=n).id,r.value(e[r.id])]);var r}),{}),this},e.prototype.parameter=function(e){return(0,o.sE)(this.paramSchema,(0,r.OH)("id",e))},e.prototype.equals=function(e,t){var n=this.diff(e,t);return n&&0===n.length},e.prototype.diff=function(e,t){if(this.state!==e.state)return!1;var n=t?t(this):this.paramSchema;return s.d.changed(n,this.paramValues,e.paramValues)},e.clone=function(e){return e.clone()},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathUtils.js":(e,t,n)=>{"use strict";n.d(t,{C:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),a=n("./node_modules/@uirouter/core/lib-esm/path/pathNode.js"),i=function(){function e(){}return e.makeTargetState=function(e,t){var n=(0,o.Gb)(t).state;return new s.F(e,n,t.map((0,r.vg)("paramValues")).reduce(o.LQ,{}),{})},e.buildPath=function(e){var t=e.params();return e.$state().path.map((function(e){return new a.V(e).applyRawParams(t)}))},e.buildToPath=function(t,n){var o=e.buildPath(n);return n.options().inherit?e.inheritParams(t,o,Object.keys(n.params())):o},e.applyViewConfigs=function(t,n,r){n.filter((function(e){return(0,o.d3)(r,e.state)})).forEach((function(r){var s=(0,o.VO)(r.state.views||{}),a=e.subPath(n,(function(e){return e===r})),i=s.map((function(e){return t.createViewConfig(a,e)}));r.views=i.reduce(o.M7,[])}))},e.inheritParams=function(e,t,n){void 0===n&&(n=[]);var s=e.map((function(e){return e.paramSchema})).reduce(o.M7,[]).filter((function(e){return!e.inherit})).map((0,r.vg)("id"));return t.map((function(t){var i=(0,o.l7)({},t&&t.paramValues),d=(0,o.ei)(i,n);i=(0,o.CE)(i,n);var u,m,l,_=(0,o.CE)((u=e,m=t.state,l=(0,o.sE)(u,(0,r.OH)("state",m)),(0,o.l7)({},l&&l.paramValues)||{}),s),c=(0,o.l7)(i,_,d);return new a.V(t.state).applyRawParams(c)}))},e.treeChanges=function(t,n,o){for(var r,s,a,i,d,u,m=Math.min(t.length,n.length),l=0;l<m&&t[l].state!==o&&(r=t[l],s=n[l],r.equals(s,e.nonDynamicParams));)l++;i=(a=t).slice(0,l),d=a.slice(l);var _=i.map((function(e,t){var o=e.clone();return o.paramValues=n[t].paramValues,o}));return u=n.slice(l),{from:a,to:_.concat(u),retained:i,retainedWithToParams:_,exiting:d,entering:u}},e.matching=function(e,t,n){var r=!1;return(0,o.ym)(e,t).reduce((function(e,t){var o=t[0],s=t[1];return(r=r||!o.equals(s,n))?e:e.concat(o)}),[])},e.equals=function(t,n,o){return t.length===n.length&&e.matching(t,n,o).length===t.length},e.subPath=function(e,t){var n=(0,o.sE)(e,t),r=e.indexOf(n);return-1===r?void 0:e.slice(0,r+1)},e.nonDynamicParams=function(e){return e.state.parameters({inherit:!1}).filter((function(e){return!e.dynamic}))},e.paramValues=function(e){return e.reduce((function(e,t){return(0,o.l7)(e,t.paramValues)}),{})},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/interface.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var o={when:{LAZY:"LAZY",EAGER:"EAGER"},async:{WAIT:"WAIT",NOWAIT:"NOWAIT"}}},"./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),d=function(){function e(t,n,s,a,d){if(this.resolved=!1,this.promise=void 0,t instanceof e)(0,o.l7)(this,t);else if((0,i.mf)(n)){if((0,i.le)(t))throw new Error("new Resolvable(): token argument is required");if(!(0,i.mf)(n))throw new Error("new Resolvable(): resolveFn argument must be a function");this.token=t,this.policy=a,this.resolveFn=n,this.deps=s||[],this.data=d,this.resolved=void 0!==d,this.promise=this.resolved?r.u.$q.when(this.data):void 0}else if((0,i.Kn)(t)&&t.token&&(t.hasOwnProperty("resolveFn")||t.hasOwnProperty("data"))){var u=t;return new e(u.token,u.resolveFn,u.deps,u.policy,u.data)}}return e.prototype.getPolicy=function(e){var t=this.policy||{},n=e&&e.resolvePolicy||{};return{when:t.when||n.when||"LAZY",async:t.async||n.async||"WAIT"}},e.prototype.resolve=function(e,t){var n=this,a=r.u.$q,d=e.findNode(this),u=d&&d.state,m=this.getPolicy(u).async,l=(0,i.mf)(m)?m:o.yR;return this.promise=a.when().then((function(){return a.all(e.getDependencies(n).map((function(n){return n.get(e,t)})))})).then((function(e){return n.resolveFn.apply(null,e)})).then(l).then((function(e){return n.data=e,n.resolved=!0,n.resolveFn=null,s.g4.traceResolvableResolved(n,t),n.data}))},e.prototype.get=function(e,t){return this.promise||this.resolve(e,t)},e.prototype.toString=function(){return"Resolvable(token: "+(0,a.Pz)(this.token)+", requires: ["+this.deps.map(a.Pz)+"])"},e.prototype.clone=function(){return new e(this)},e.fromData=function(t,n){return new e(t,(function(){return n}),null,null,n)},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>f});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/interface.js"),d=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),u=n("./node_modules/@uirouter/core/lib-esm/path/pathUtils.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),_=i.u.when,c=[_.EAGER,_.LAZY],h=[_.EAGER],f=function(){function e(e){this._path=e}return e.prototype.getTokens=function(){return this._path.reduce((function(e,t){return e.concat(t.resolvables.map((function(e){return e.token})))}),[]).reduce(o.v_,[])},e.prototype.getResolvable=function(e){var t=this._path.map((function(e){return e.resolvables})).reduce(o.M7,[]).filter((function(t){return t.token===e}));return(0,o.Gb)(t)},e.prototype.getPolicy=function(e){var t=this.findNode(e);return e.getPolicy(t.state)},e.prototype.subContext=function(t){return new e(u.C.subPath(this._path,(function(e){return e.state===t})))},e.prototype.addResolvables=function(e,t){var n=(0,o.sE)(this._path,(0,r.OH)("state",t)),s=e.map((function(e){return e.token}));n.resolvables=n.resolvables.filter((function(e){return-1===s.indexOf(e.token)})).concat(e)},e.prototype.resolvePath=function(e,t){var n=this;void 0===e&&(e="LAZY");var d=((0,o.d3)(c,e)?e:"LAZY")===i.u.when.EAGER?h:c;s.g4.traceResolvePath(this._path,e,t);var u=function(e,t){return function(r){return(0,o.d3)(e,n.getPolicy(r)[t])}},m=this._path.reduce((function(e,o){var s=o.resolvables.filter(u(d,"when")),a=s.filter(u(["NOWAIT"],"async")),i=s.filter((0,r.ff)(u(["NOWAIT"],"async"))),m=n.subContext(o.state),l=function(e){return e.get(m,t).then((function(t){return{token:e.token,value:t}}))};return a.forEach(l),e.concat(i.map(l))}),[]);return a.u.$q.all(m)},e.prototype.injector=function(){return this._injector||(this._injector=new p(this))},e.prototype.findNode=function(e){return(0,o.sE)(this._path,(function(t){return(0,o.d3)(t.resolvables,e)}))},e.prototype.getDependencies=function(e){var t=this,n=this.findNode(e),r=(u.C.subPath(this._path,(function(e){return e===n}))||this._path).reduce((function(e,t){return e.concat(t.resolvables)}),[]).filter((function(t){return t!==e}));return e.deps.map((function(e){var n=r.filter((function(t){return t.token===e}));if(n.length)return(0,o.Gb)(n);var s=t.injector().getNative(e);if((0,l.wV)(s))throw new Error("Could not find Dependency Injection token: "+(0,m.Pz)(e));return new d.X(e,(function(){return s}),[],s)}))},e}(),p=function(){function e(e){this.context=e,this.native=this.get("Native Injector")||a.u.$injector}return e.prototype.get=function(e){var t=this.context.getResolvable(e);if(t){if("NOWAIT"===this.context.getPolicy(t).async)return t.get(this.context);if(!t.resolved)throw new Error("Resolvable async .get() not complete:"+(0,m.Pz)(t.token));return t.data}return this.getNative(e)},e.prototype.getAsync=function(e){var t=this.context.getResolvable(e);return t?t.get(this.context):a.u.$q.when(this.native.get(e))},e.prototype.getNative=function(e){return this.native&&this.native.get(e)},e}()},"./node_modules/@uirouter/core/lib-esm/router.js":(e,t,n)=>{"use strict";n.d(t,{a:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRouter.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/transitionService.js"),a=n("./node_modules/@uirouter/core/lib-esm/view/view.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js"),d=n("./node_modules/@uirouter/core/lib-esm/state/stateService.js"),u=n("./node_modules/@uirouter/core/lib-esm/globals.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),_=n("./node_modules/@uirouter/core/lib-esm/url/urlService.js"),c=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),f=0,p=(0,h.HV)("LocationServices",["url","path","search","hash","onChange"]),M=(0,h.HV)("LocationConfig",["port","protocol","host","baseHref","html5Mode","hashPrefix"]),y=function(){function e(e,t){void 0===e&&(e=p),void 0===t&&(t=M),this.locationService=e,this.locationConfig=t,this.$id=f++,this._disposed=!1,this._disposables=[],this.trace=c.g4,this.viewService=new a.s(this),this.globals=new u.k,this.transitionService=new s.Z(this),this.urlMatcherFactory=new o.y(this),this.urlRouter=new r.g(this),this.urlService=new _.i(this),this.stateRegistry=new i.q(this),this.stateService=new d.b(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlService),this.disposable(e),this.disposable(t)}return e.prototype.disposable=function(e){this._disposables.push(e)},e.prototype.dispose=function(e){var t=this;e&&(0,l.mf)(e.dispose)?e.dispose(this):(this._disposed=!0,this._disposables.slice().forEach((function(e){try{"function"==typeof e.dispose&&e.dispose(t),(0,m.nA)(t._disposables,e)}catch(e){}})))},e.prototype.plugin=function(e,t){void 0===t&&(t={});var n=new e(this,t);if(!n.name)throw new Error("Required property `name` missing on plugin: "+n);return this._disposables.push(n),this._plugins[n.name]=n},e.prototype.getPlugin=function(e){return e?this._plugins[e]:(0,m.VO)(this._plugins)},e}()},"./node_modules/@uirouter/core/lib-esm/state/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>M});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js");function u(e){return e.name}function m(e){return e.self.$$state=function(){return e},e.self}function l(e){return e.parent&&e.parent.data&&(e.data=e.self.data=(0,o.ED)(e.parent.data,e.data)),e.data}var _=function(e,t){return function(n){var s=n.self;if(s&&s.url&&s.name&&s.name.match(/\.\*\*$/)){var a={};(0,o.JG)(s,a),a.url+="{remainder:any}",s=a}var i=n.parent,d=function(e){if(!(0,r.HD)(e))return!1;var t="^"===e.charAt(0);return{val:t?e.substring(1):e,root:t}}(s.url),u=d?e.compile(d.val,{state:s}):s.url;if(!u)return null;if(!e.isMatcher(u))throw new Error("Invalid url '"+u+"' in state '"+n+"'");return d&&d.root?u:(i&&i.navigable||t()).url.append(u)}},c=function(e){return function(t){return!e(t)&&t.url?t:t.parent?t.parent.navigable:null}};function h(e){return e.parent?e.parent.path.concat(e):[e]}function f(e){var t=e.parent?(0,o.l7)({},e.parent.includes):{};return t[e.name]=!0,t}function p(e){var t,n,u=function(e){return e.provide||e.token},m=(0,a.uj)([[(0,a.vg)("resolveFn"),function(e){return new i.X(u(e),e.resolveFn,e.deps,e.policy)}],[(0,a.vg)("useFactory"),function(e){return new i.X(u(e),e.useFactory,e.deps||e.dependencies,e.policy)}],[(0,a.vg)("useClass"),function(e){return new i.X(u(e),(function(){return new e.useClass}),[],e.policy)}],[(0,a.vg)("useValue"),function(e){return new i.X(u(e),(function(){return e.useValue}),[],e.policy,e.useValue)}],[(0,a.vg)("useExisting"),function(e){return new i.X(u(e),o.yR,[e.useExisting],e.policy)}]]),l=(0,a.uj)([[(0,a.zG)((0,a.vg)("val"),r.HD),function(e){return new i.X(e.token,o.yR,[e.val],e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.kJ),function(e){return new i.X(e.token,(0,o.Gb)(e.val),e.val.slice(0,-1),e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.mf),function(e){return new i.X(e.token,e.val,(t=e.val,n=d.u.$injector,t.$inject||n&&n.annotate(t,n.strictDi)||"deferred"),e.policy);var t,n}]]),_=(0,a.uj)([[(0,a.is)(i.X),function(e){return e}],[function(e){return!(!e.token||!e.resolveFn)},m],[function(e){return!(!e.provide&&!e.token||!(e.useValue||e.useFactory||e.useExisting||e.useClass))},m],[function(e){return!!(e&&e.val&&((0,r.HD)(e.val)||(0,r.kJ)(e.val)||(0,r.mf)(e.val)))},l],[(0,a.P0)(!0),function(e){throw new Error("Invalid resolve value: "+(0,s.Pz)(e))}]]),c=e.resolve;return((0,r.kJ)(c)?c:(t=c,n=e.resolvePolicy||{},Object.keys(t||{}).map((function(e){return{token:e,val:t[e],deps:void 0,policy:n[e]}})))).map(_)}var M=function(){function e(e,t){this.matcher=e;var n,r=this,s=function(){return e.find("")},i=function(e){return""===e.name};this.builders={name:[u],self:[m],parent:[function(t){return i(t)?null:e.find(r.parentName(t))||s()}],data:[l],url:[_(t,s)],navigable:[c(i)],params:[(n=t.paramFactory,function(e){var t=e.url&&e.url.parameters({inherit:!1})||[],r=(0,o.VO)((0,o.js)((0,o.CE)(e.params||{},t.map((0,a.vg)("id"))),(function(t,o){return n.fromConfig(o,null,e.self)})));return t.concat(r).map((function(e){return[e.id,e]})).reduce(o.bb,{})})],views:[],path:[h],includes:[f],resolvables:[p]}}return e.prototype.builder=function(e,t){var n=this.builders,o=n[e]||[];return(0,r.HD)(e)&&!(0,r.$K)(t)?o.length>1?o:o[0]:(0,r.HD)(e)&&(0,r.mf)(t)?(n[e]=o,n[e].push(t),function(){return n[e].splice(n[e].indexOf(t,1))&&null}):void 0},e.prototype.build=function(e){var t=this.matcher,n=this.builders,r=this.parentName(e);if(r&&!t.find(r,void 0,!1))return null;for(var s in n)if(n.hasOwnProperty(s)){var a=n[s].reduce((function(e,t){return function(n){return t(n,e)}}),o.ZT);e[s]=a(e)}return e},e.prototype.parentName=function(e){var t=e.name||"",n=t.split(".");if("**"===n.pop()&&n.pop(),n.length){if(e.parent)throw new Error("States that specify the 'parent:' property should not have a '.' in their name ("+t+")");return n.join(".")}return e.parent?(0,r.HD)(e.parent)?e.parent:e.parent.name:""},e.prototype.name=function(e){var t=e.name;if(-1!==t.indexOf(".")||!e.parent)return t;var n=(0,r.HD)(e.parent)?e.parent:e.parent.name;return n?n+"."+t:t},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js":(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js"),a=function(){function e(e){this._states=e}return e.prototype.isRelative=function(e){return 0===(e=e||"").indexOf(".")||0===e.indexOf("^")},e.prototype.find=function(e,t,n){if(void 0===n&&(n=!0),e||""===e){var a=(0,o.HD)(e),i=a?e:e.name;this.isRelative(i)&&(i=this.resolvePath(i,t));var d=this._states[i];if(d&&(a||!(a||d!==e&&d.self!==e)))return d;if(a&&n){var u=(0,r.VO)(this._states).filter((function(e){return e.__stateObjectCache.nameGlob&&e.__stateObjectCache.nameGlob.matches(i)}));return u.length>1&&s.L.error("stateMatcher.find: Found multiple matches for "+i+" using glob: ",u.map((function(e){return e.name}))),u[0]}}},e.prototype.resolvePath=function(e,t){if(!t)throw new Error("No reference point given for path '"+e+"'");for(var n=this.find(t),o=e.split("."),r=o.length,s=0,a=n;s<r;s++)if(""!==o[s]||0!==s){if("^"!==o[s])break;if(!a.parent)throw new Error("Path '"+e+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var i=o.slice(s).join(".");return a.name+(a.name&&i?".":"")+i},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateObject.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/glob.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=function(){function e(t){return e.create(t||{})}return e.create=function(t){t=e.isStateClass(t)?new t:t;var n=(0,o.ED)((0,o.ED)(t,e.prototype));return t.$$state=function(){return n},n.self=t,n.__stateObjectCache={nameGlob:s.r.fromString(n.name)},n},e.prototype.is=function(e){return this===e||this.self===e||this.fqn()===e},e.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var e=this.parent.fqn();return e?e+"."+this.name:this.name},e.prototype.root=function(){return this.parent&&this.parent.root()||this},e.prototype.parameters=function(e){return((e=(0,o.ce)(e,{inherit:!0,matchingKeys:null})).inherit&&this.parent&&this.parent.parameters()||[]).concat((0,o.VO)(this.params)).filter((function(t){return!e.matchingKeys||e.matchingKeys.hasOwnProperty(t.id)}))},e.prototype.parameter=function(e,t){return void 0===t&&(t={}),this.url&&this.url.parameter(e,t)||(0,o.sE)((0,o.VO)(this.params),(0,r.OH)("id",e))||t.inherit&&this.parent&&this.parent.parameter(e)},e.prototype.toString=function(){return this.fqn()},e.isStateClass=function(e){return(0,a.mf)(e)&&!0===e.__uiRouterState},e.isStateDeclaration=function(e){return(0,a.mf)(e.$$state)},e.isState=function(e){return(0,a.Kn)(e.__stateObjectCache)},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),s=function(){function e(e,t,n,o){this.router=e,this.states=t,this.builder=n,this.listeners=o,this.queue=[]}return e.prototype.dispose=function(){this.queue=[]},e.prototype.register=function(e){var t=this.queue,n=r.l.create(e),s=n.name;if(!(0,o.HD)(s))throw new Error("State must have a valid name");if(this.states.hasOwnProperty(s)||(0,o.d3)(t.map((0,o.vg)("name")),s))throw new Error("State '"+s+"' is already defined");return t.push(n),this.flush(),n},e.prototype.flush=function(){for(var e=this,t=this,n=t.queue,o=t.states,r=t.builder,s=[],a=[],i={},d=function(t){return e.states.hasOwnProperty(t)&&e.states[t]},u=function(){s.length&&e.listeners.forEach((function(e){return e("registered",s.map((function(e){return e.self})))}))};n.length>0;){var m=n.shift(),l=m.name,_=r.build(m),c=a.indexOf(m);if(_){var h=d(l);if(h&&h.name===l)throw new Error("State '"+l+"' is already defined");var f=d(l+".**");f&&this.router.stateRegistry.deregister(f),o[l]=m,this.attachRoute(m),c>=0&&a.splice(c,1),s.push(m)}else{var p=i[l];if(i[l]=n.length,c>=0&&p===n.length)return n.push(m),u(),o;c<0&&a.push(m),n.push(m)}}return u(),o},e.prototype.attachRoute=function(e){if(!e.abstract&&e.url){var t=this.router.urlService.rules;t.rule(t.urlRuleFactory.create(e))}},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js":(e,t,n)=>{"use strict";n.d(t,{q:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=function(){function e(e){this.router=e,this.states={},this.listeners=[],this.matcher=new o.Q(this.states),this.builder=new r.t(this.matcher,e.urlMatcherFactory),this.stateQueue=new s.L(e,this.states,this.builder,this.listeners),this._registerRoot()}return e.prototype._registerRoot=function(){(this._root=this.stateQueue.register({name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},abstract:!0})).navigable=null},e.prototype.dispose=function(){var e=this;this.stateQueue.dispose(),this.listeners=[],this.get().forEach((function(t){return e.get(t)&&e.deregister(t)}))},e.prototype.onStatesChanged=function(e){return this.listeners.push(e),function(){(0,a.nA)(this.listeners)(e)}.bind(this)},e.prototype.root=function(){return this._root},e.prototype.register=function(e){return this.stateQueue.register(e)},e.prototype._deregisterTree=function(e){var t=this,n=this.get().map((function(e){return e.$$state()})),o=function(e){var t=n.filter((function(t){return-1!==e.indexOf(t.parent)}));return 0===t.length?t:t.concat(o(t))},r=o([e]),s=[e].concat(r).reverse();return s.forEach((function(e){var n=t.router.urlService.rules;n.rules().filter((0,i.OH)("state",e)).forEach((function(e){return n.removeRule(e)})),delete t.states[e.name]})),s},e.prototype.deregister=function(e){var t=this.get(e);if(!t)throw new Error("Can't deregister state; not found: "+e);var n=this._deregisterTree(t.$$state());return this.listeners.forEach((function(e){return e("deregistered",n.map((function(e){return e.self})))})),n},e.prototype.get=function(e,t){var n=this;if(0===arguments.length)return Object.keys(this.states).map((function(e){return n.states[e].self}));var o=this.matcher.find(e,t);return o&&o.self||null},e.prototype.decorator=function(e,t){return this.builder.builder(e,t)},e}()},"./node_modules/@uirouter/core/lib-esm/state/targetState.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=function(){function e(e,t,n,o){this._stateRegistry=e,this._identifier=t,this._identifier=t,this._params=(0,s.l7)({},n||{}),this._options=(0,s.l7)({},o||{}),this._definition=e.matcher.find(t,this._options.relative)}return e.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},e.prototype.identifier=function(){return this._identifier},e.prototype.params=function(){return this._params},e.prototype.$state=function(){return this._definition},e.prototype.state=function(){return this._definition&&this._definition.self},e.prototype.options=function(){return this._options},e.prototype.exists=function(){return!(!this._definition||!this._definition.self)},e.prototype.valid=function(){return!this.error()},e.prototype.error=function(){var e=this.options().relative;if(!this._definition&&e){var t=e.name?e.name:e;return"Could not resolve '"+this.name()+"' from state '"+t+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},e.prototype.toString=function(){return"'"+this.name()+"'"+(0,r.Pz)(this.params())},e.prototype.withState=function(t){return new e(this._stateRegistry,t,this._params,this._options)},e.prototype.withParams=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._params,t);return new e(this._stateRegistry,this._identifier,o,this._options)},e.prototype.withOptions=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._options,t);return new e(this._stateRegistry,this._identifier,this._params,o)},e.isDef=function(e){return e&&e.state&&((0,o.HD)(e.state)||(0,o.Kn)(e.state)&&(0,o.HD)(e.state.name))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),a=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),i=function(){function e(e){this.transition=e}return e.prototype.buildHooksForPhase=function(e){var t=this;return this.transition.router.transitionService._pluginapi._getEvents(e).map((function(e){return t.buildHooks(e)})).reduce(o.M7,[]).filter(o.yR)},e.prototype.buildHooks=function(e){var t=this.transition,n=t.treeChanges(),r=this.getMatchingHooks(e,n,t);if(!r)return[];var i,d={transition:t,current:t.options().current};return r.map((function(r){return r.matches(n,t)[e.criteriaMatchPath.name].map((function(n){var i=(0,o.l7)({bind:r.bind,traceData:{hookType:e.name,context:n}},d),u=e.criteriaMatchPath.scope===s.c.STATE?n.state.self:null,m=new a.I(t,u,r,i);return{hook:r,node:n,transitionHook:m}}))})).reduce(o.M7,[]).sort((i=e.reverseSort,void 0===i&&(i=!1),function(e,t){var n=i?-1:1,o=(e.node.state.path.length-t.node.state.path.length)*n;return 0!==o?o:t.hook.priority-e.hook.priority})).map((function(e){return e.transitionHook}))},e.prototype.getMatchingHooks=function(e,t,n){var a=e.hookPhase===s.k.CREATE,i=this.transition.router.transitionService;return(a?[i]:[this.transition,i]).map((function(t){return t.getHooks(e.name)})).filter((0,o.sp)(r.kJ,"broken event named: "+e.name)).reduce(o.M7,[]).filter((function(e){return e.matches(t,n)}))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js":(e,t,n)=>{"use strict";n.d(t,{cN:()=>s,BU:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js");function s(e,t,n){var r=(0,o.HD)(t)?[t]:t;return!!((0,o.mf)(r)?r:function(e){for(var t=r,n=0;n<t.length;n++){var s=new o.rR(t[n]);if(s&&s.matches(e.name)||!s&&t[n]===e.name)return!0}return!1})(e,n)}var a=function(){function e(e,t,n,o,r,s){void 0===s&&(s={}),this.tranSvc=e,this.eventType=t,this.callback=n,this.matchCriteria=o,this.removeHookFromRegistry=r,this.invokeCount=0,this._deregistered=!1,this.priority=s.priority||0,this.bind=s.bind||null,this.invokeLimit=s.invokeLimit}return e.prototype._matchingNodes=function(e,t,n){if(!0===t)return e;var o=e.filter((function(e){return s(e.state,t,n)}));return o.length?o:null},e.prototype._getDefaultMatchCriteria=function(){return(0,o.js)(this.tranSvc._pluginapi._getPathTypes(),(function(){return!0}))},e.prototype._getMatchingNodes=function(e,t){var n=this,s=(0,o.l7)(this._getDefaultMatchCriteria(),this.matchCriteria);return(0,o.VO)(this.tranSvc._pluginapi._getPathTypes()).reduce((function(a,i){var d=i.scope===r.c.STATE,u=e[i.name]||[],m=d?u:[(0,o.Gb)(u)];return a[i.name]=n._matchingNodes(m,s[i.name],t),a}),{})},e.prototype.matches=function(e,t){var n=this._getMatchingNodes(e,t);return(0,o.VO)(n).every(o.yR)?n:null},e.prototype.deregister=function(){this.removeHookFromRegistry(this),this._deregistered=!0},e}();function i(e,t,n){var r=(e._registeredHooks=e._registeredHooks||{})[n.name]=[],s=(0,o.nA)(r);function i(e,o,i){void 0===i&&(i={});var d=new a(t,n,o,e,s,i);return r.push(d),d.deregister.bind(d)}return e[n.name]=i,i}},"./node_modules/@uirouter/core/lib-esm/transition/interface.js":(e,t,n)=>{"use strict";var o,r;n.d(t,{k:()=>o,c:()=>r}),function(e){e[e.CREATE=0]="CREATE",e[e.BEFORE=1]="BEFORE",e[e.RUN=2]="RUN",e[e.SUCCESS=3]="SUCCESS",e[e.ERROR=4]="ERROR"}(o||(o={})),function(e){e[e.TRANSITION=0]="TRANSITION",e[e.STATE=1]="STATE"}(r||(r={}))},"./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js":(e,t,n)=>{"use strict";n.d(t,{K:()=>o,i:()=>d});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");!function(e){e[e.SUPERSEDED=2]="SUPERSEDED",e[e.ABORTED=3]="ABORTED",e[e.INVALID=4]="INVALID",e[e.IGNORED=5]="IGNORED",e[e.ERROR=6]="ERROR"}(o||(o={}));var i=0,d=function(){function e(e,t,n){this.$id=i++,this.type=e,this.message=t,this.detail=n}return e.isRejectionPromise=function(t){return t&&"function"==typeof t.then&&(0,a.is)(e)(t._transitionRejection)},e.superseded=function(t,n){var r=new e(o.SUPERSEDED,"The transition has been superseded by a different transition",t);return n&&n.redirected&&(r.redirected=!0),r},e.redirected=function(t){return e.superseded(t,{redirected:!0})},e.invalid=function(t){return new e(o.INVALID,"This transition is invalid",t)},e.ignored=function(t){return new e(o.IGNORED,"The transition was ignored",t)},e.aborted=function(t){return new e(o.ABORTED,"The transition has been aborted",t)},e.errored=function(t){return new e(o.ERROR,"The transition errored",t)},e.normalize=function(t){return(0,a.is)(e)(t)?t:e.errored(t)},e.prototype.toString=function(){var e,t=(e=this.detail)&&e.toString!==Object.prototype.toString?e.toString():(0,s.Pz)(e),n=this;return"Transition Rejection($id: "+n.$id+" type: "+n.type+", message: "+n.message+", detail: "+t+")"},e.prototype.toPromise=function(){return(0,r.l7)((0,r.jv)(this),{_transitionRejection:this})},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),r=function(e,t,n,r,s,a,i,d){void 0===s&&(s=!1),void 0===a&&(a=o.I.HANDLE_RESULT),void 0===i&&(i=o.I.REJECT_ERROR),void 0===d&&(d=!1),this.name=e,this.hookPhase=t,this.hookOrder=n,this.criteriaMatchPath=r,this.reverseSort=s,this.getResultHandler=a,this.getErrorHandler=i,this.synchronous=d}},"./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>c});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),u=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),m=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),l=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),_={current:r.ZT,transition:null,traceData:{},bind:null},c=function(){function e(e,t,n,s){var a=this;this.transition=e,this.stateContext=t,this.registeredHook=n,this.options=s,this.isSuperseded=function(){return a.type.hookPhase===o.k.RUN&&!a.options.transition.isActive()},this.options=(0,r.ce)(s,_),this.type=n.eventType}return e.chain=function(e,t){return e.reduce((function(e,t){return e.then((function(){return t.invokeHook()}))}),t||u.u.$q.when())},e.invokeHooks=function(t,n){for(var o=0;o<t.length;o++){var r=t[o].invokeHook();if((0,a.tI)(r)){var s=t.slice(o+1);return e.chain(s,r).then(n)}}return n()},e.runAllHooks=function(e){e.forEach((function(e){return e.invokeHook()}))},e.prototype.logError=function(e){this.transition.router.stateService.defaultErrorHandler()(e)},e.prototype.invokeHook=function(){var e=this,t=this.registeredHook;if(!t._deregistered){var n=this.getNotCurrentRejection();if(n)return n;var o=this.options;d.g4.traceHookInvocation(this,this.transition,o);var r=function(n){return t.eventType.getErrorHandler(e)(n)},s=function(n){return t.eventType.getResultHandler(e)(n)};try{var i=t.callback.call(o.bind,e.transition,e.stateContext);return!this.type.synchronous&&(0,a.tI)(i)?i.catch((function(e){return m.i.normalize(e).toPromise()})).then(s,r):s(i)}catch(e){return r(m.i.normalize(e))}finally{t.invokeLimit&&++t.invokeCount>=t.invokeLimit&&t.deregister()}}},e.prototype.handleHookResult=function(e){var t=this;return this.getNotCurrentRejection()||((0,a.tI)(e)?e.then((function(e){return t.handleHookResult(e)})):(d.g4.traceHookResult(e,this.transition,this.options),!1===e?m.i.aborted("Hook aborted transition").toPromise():(0,i.is)(l.F)(e)?m.i.redirected(e).toPromise():void 0))},e.prototype.getNotCurrentRejection=function(){var e=this.transition.router;return e._disposed?m.i.aborted("UIRouter instance #"+e.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?m.i.aborted().toPromise():this.isSuperseded()?m.i.superseded(this.options.current()).toPromise():void 0},e.prototype.toString=function(){var e=this.options,t=this.registeredHook,n=(0,i.Qc)("traceData.hookType")(e)||"internal",o=(0,i.Qc)("traceData.context.state.name")(e)||(0,i.Qc)("traceData.context")(e)||"unknown",r=(0,s.iC)(t.callback);return n+" context: "+o+", "+(0,s.BS)(200,r)},e.HANDLE_RESULT=function(e){return function(t){return e.handleHookResult(t)}},e.LOG_REJECTED_RESULT=function(e){return function(t){(0,a.tI)(t)&&t.catch((function(t){return e.logError(m.i.normalize(t))}))}},e.LOG_ERROR=function(e){return function(t){return e.logError(t)}},e.REJECT_ERROR=function(e){return function(e){return(0,r.jv)(e)}},e.THROW_ERROR=function(e){return function(e){throw e}},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionService.js":(e,t,n)=>{"use strict";n.d(t,{Z:()=>C,q:()=>W});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/transition.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js"),a=n("./node_modules/@uirouter/core/lib-esm/router.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/index.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/index.js");function u(e){e.addResolvable(i.XU.fromData(a.a,e.router),""),e.addResolvable(i.XU.fromData(r.u,e),""),e.addResolvable(i.XU.fromData("$transition$",e),""),e.addResolvable(i.XU.fromData("$stateParams",e.params()),""),e.entering().forEach((function(t){e.addResolvable(i.XU.fromData("$state$",t),t)}))}var m=["$transition$",r.u],l=(0,d.d3)(m),_=function(e){var t=(0,d.VO)(e.treeChanges()).reduce(d.M7,[]).reduce(d.v_,[]),n=function(e){return l(e.token)?i.XU.fromData(e.token,null):e};t.forEach((function(e){e.resolvables=e.resolvables.map(n)}))},c=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),f=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),p=function(e){var t=e.to().redirectTo;if(t){var n=e.router.stateService;return(0,c.mf)(t)?h.u.$q.when(t(e)).then(o):o(t)}function o(t){if(t)return t instanceof f.F?t:(0,c.HD)(t)?n.target(t,e.params(),e.options()):t.state||t.params?n.target(t.state||e.to(),t.params||e.params(),e.options()):void 0}};function M(e){return function(t,n){return(0,n.$$state()[e])(t,n)}}var y=M("onExit"),L=M("onRetain"),g=M("onEnter"),Y=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),v=n("./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js"),k=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),j=1e3,w=function(e){return new v.l(e.treeChanges().to).resolvePath("EAGER",e).then(Y.ZT)},b=function(e,t){return new v.l(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY",e).then(Y.ZT)},D=function(e){return new v.l(e.treeChanges().to).resolvePath("LAZY",e).then(Y.ZT)},T=function(e){var t=h.u.$q,n=e.views("entering");if(n.length)return t.all(n.map((function(e){return t.when(e.load())}))).then(Y.ZT)},S=function(e){var t=e.views("entering"),n=e.views("exiting");if(t.length||n.length){var o=e.router.viewService;n.forEach((function(e){return o.deactivateViewConfig(e)})),t.forEach((function(e){return o.activateViewConfig(e)})),o.sync()}},H=function(e){var t=e.router.globals,n=function(){t.transition===e&&(t.transition=null)};e.onSuccess({},(function(){t.successfulTransitions.enqueue(e),t.$current=e.$to(),t.current=t.$current.self,(0,Y.JG)(e.params(),t.params)}),{priority:1e4}),e.promise.then(n,n)},x=function(e){var t=e.options(),n=e.router.stateService,o=e.router.urlRouter;if("url"!==t.source&&t.location&&n.$current.navigable){var r={replace:"replace"===t.location};o.push(n.$current.navigable.url,n.params,r)}o.update(!0)},E=n("./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js"),P=n("./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js"),O=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),$=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),A=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js");function R(e){var t=e._ignoredReason();if(t){$.g4.traceTransitionIgnored(e);var n=e.router.globals.transition;return"SameAsCurrent"===t&&n&&n.abort(),A.i.ignored().toPromise()}}function F(e){if(!e.valid())throw new Error(e.error().toString())}var W={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,supercede:!0,custom:{},current:function(){return null},source:"unknown"},C=function(){function e(e){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=e,this.$view=e.viewService,this._deregisterHookFns={},this._pluginapi=(0,Y.WR)((0,k.P0)(this),{},(0,k.P0)(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks(),e.globals.successfulTransitions.onEvict(_)}return e.prototype.onCreate=function(e,t,n){},e.prototype.onBefore=function(e,t,n){},e.prototype.onStart=function(e,t,n){},e.prototype.onExit=function(e,t,n){},e.prototype.onRetain=function(e,t,n){},e.prototype.onEnter=function(e,t,n){},e.prototype.onFinish=function(e,t,n){},e.prototype.onSuccess=function(e,t,n){},e.prototype.onError=function(e,t,n){},e.prototype.dispose=function(e){(0,Y.VO)(this._registeredHooks).forEach((function(e){return e.forEach((function(t){t._deregistered=!0,(0,Y.nA)(e,t)}))}))},e.prototype.create=function(e,t){return new r.u(e,t,this._router)},e.prototype._defineCoreEvents=function(){var e=o.k,t=O.I,n=this._criteriaPaths,r=!1,s=!0;this._defineEvent("onCreate",e.CREATE,0,n.to,r,t.LOG_REJECTED_RESULT,t.THROW_ERROR,s),this._defineEvent("onBefore",e.BEFORE,0,n.to),this._defineEvent("onStart",e.RUN,0,n.to),this._defineEvent("onExit",e.RUN,100,n.exiting,!0),this._defineEvent("onRetain",e.RUN,200,n.retained),this._defineEvent("onEnter",e.RUN,300,n.entering),this._defineEvent("onFinish",e.RUN,400,n.to),this._defineEvent("onSuccess",e.SUCCESS,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s),this._defineEvent("onError",e.ERROR,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s)},e.prototype._defineCorePaths=function(){var e=o.c.STATE,t=o.c.TRANSITION;this._definePathType("to",t),this._definePathType("from",t),this._definePathType("exiting",e),this._definePathType("retained",e),this._definePathType("entering",e)},e.prototype._defineEvent=function(e,t,n,o,r,a,i,d){void 0===r&&(r=!1),void 0===a&&(a=O.I.HANDLE_RESULT),void 0===i&&(i=O.I.REJECT_ERROR),void 0===d&&(d=!1);var u=new P.t(e,t,n,o,r,a,i,d);this._eventTypes.push(u),(0,s.BU)(this,this,u)},e.prototype._getEvents=function(e){return((0,c.$K)(e)?this._eventTypes.filter((function(t){return t.hookPhase===e})):this._eventTypes.slice()).sort((function(e,t){var n=e.hookPhase-t.hookPhase;return 0===n?e.hookOrder-t.hookOrder:n}))},e.prototype._definePathType=function(e,t){this._criteriaPaths[e]={name:e,scope:t}},e.prototype._getPathTypes=function(){return this._criteriaPaths},e.prototype.getHooks=function(e){return this._registeredHooks[e]},e.prototype._registerCoreTransitionHooks=function(){var e=this._deregisterHookFns;e.addCoreResolves=this.onCreate({},u),e.ignored=this.onBefore({},R,{priority:-9999}),e.invalid=function(e){return e.onBefore({},F,{priority:-1e4})}(this),e.redirectTo=function(e){return e.onStart({to:function(e){return!!e.redirectTo}},p)}(this),e.onExit=function(e){return e.onExit({exiting:function(e){return!!e.onExit}},y)}(this),e.onRetain=function(e){return e.onRetain({retained:function(e){return!!e.onRetain}},L)}(this),e.onEnter=function(e){return e.onEnter({entering:function(e){return!!e.onEnter}},g)}(this),e.eagerResolve=function(e){return e.onStart({},w,{priority:j})}(this),e.lazyResolve=function(e){return e.onEnter({entering:(0,k.P0)(!0)},b,{priority:j})}(this),e.resolveAll=function(e){return e.onFinish({},D,{priority:j})}(this),e.loadViews=function(e){return e.onFinish({},T)}(this),e.activateViews=function(e){return e.onSuccess({},S)}(this),e.updateGlobals=function(e){return e.onCreate({},H)}(this),e.updateUrl=function(e){return e.onSuccess({},x,{priority:9999})}(this),e.lazyLoad=(0,E.v)(this)},e}()},"./node_modules/@uirouter/core/lib-esm/url/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/url/urlConfig.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=function(){function e(e){var t=this;this.router=e,this.paramTypes=new o.ParamTypes,this._decodeParams=!0,this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1,this.dispose=function(){return t.paramTypes.dispose()},this.baseHref=function(){return t.router.locationConfig.baseHref()},this.hashPrefix=function(e){return t.router.locationConfig.hashPrefix(e)},this.host=function(){return t.router.locationConfig.host()},this.html5Mode=function(){return t.router.locationConfig.html5Mode()},this.port=function(){return t.router.locationConfig.port()},this.protocol=function(){return t.router.locationConfig.protocol()}}return e.prototype.caseInsensitive=function(e){return this._isCaseInsensitive=(0,r.$K)(e)?e:this._isCaseInsensitive},e.prototype.defaultSquashPolicy=function(e){if((0,r.$K)(e)&&!0!==e&&!1!==e&&!(0,r.HD)(e))throw new Error("Invalid squash policy: "+e+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=(0,r.$K)(e)?e:this._defaultSquashPolicy},e.prototype.strictMode=function(e){return this._isStrictMode=(0,r.$K)(e)?e:this._isStrictMode},e.prototype.type=function(e,t,n){var o=this.paramTypes.type(e,t,n);return(0,r.$K)(t)?this:o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js":(e,t,n)=>{"use strict";n.d(t,{y:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),a=function(){return(a=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=function(){function e(e){this.router=e}return e.prototype.fromConfig=function(e,t,n){return new s.Param(e,t,s.DefType.CONFIG,this.router.urlService.config,n)},e.prototype.fromPath=function(e,t,n){return new s.Param(e,t,s.DefType.PATH,this.router.urlService.config,n)},e.prototype.fromSearch=function(e,t,n){return new s.Param(e,t,s.DefType.SEARCH,this.router.urlService.config,n)},e}(),d=function(){function e(e){var t=this;this.router=e,this.paramFactory=new i(this.router),this.UrlMatcher=r.x,this.Param=s.Param,this.caseInsensitive=function(e){return t.router.urlService.config.caseInsensitive(e)},this.defaultSquashPolicy=function(e){return t.router.urlService.config.defaultSquashPolicy(e)},this.strictMode=function(e){return t.router.urlService.config.strictMode(e)},this.type=function(e,n,o){return t.router.urlService.config.type(e,n,o)||t}}return e.prototype.compile=function(e,t){var n=this.router.urlService.config,s=t&&!t.state&&t.params;t=s?a({state:{params:s}},t):t;var i={strict:n._isStrictMode,caseInsensitive:n._isCaseInsensitive,decodeParams:n._decodeParams};return new r.x(e,n.paramTypes,this.paramFactory,(0,o.l7)(i,t))},e.prototype.isMatcher=function(e){if(!(0,o.Kn)(e))return!1;var t=!0;return(0,o.Ed)(r.x.prototype,(function(n,r){(0,o.mf)(n)&&(t=t&&(0,o.$K)(e[r])&&(0,o.mf)(e[r]))})),t},e.prototype.$get=function(){var e=this.router.urlService.config;return e.paramTypes.enqueue=!1,e.paramTypes._flushTypeQueue(),this},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRouter.js":(e,t,n)=>{"use strict";n.d(t,{g:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js"),s=function(){function e(e){var t=this;this.router=e,this.sync=function(e){return t.router.urlService.sync(e)},this.listen=function(e){return t.router.urlService.listen(e)},this.deferIntercept=function(e){return t.router.urlService.deferIntercept(e)},this.match=function(e){return t.router.urlService.match(e)},this.initial=function(e){return t.router.urlService.rules.initial(e)},this.otherwise=function(e){return t.router.urlService.rules.otherwise(e)},this.removeRule=function(e){return t.router.urlService.rules.removeRule(e)},this.rule=function(e){return t.router.urlService.rules.rule(e)},this.rules=function(){return t.router.urlService.rules.rules()},this.sort=function(e){return t.router.urlService.rules.sort(e)},this.when=function(e,n,o){return t.router.urlService.rules.when(e,n,o)},this.urlRuleFactory=new r.I(e)}return e.prototype.update=function(e){var t=this.router.locationService;e?this.location=t.url():t.url()!==this.location&&t.url(this.location,!0)},e.prototype.push=function(e,t,n){var o=n&&!!n.replace;this.router.urlService.url(e.format(t||{}),o)},e.prototype.href=function(e,t,n){var r=e.format(t);if(null==r)return null;n=n||{absolute:!1};var s=this.router.urlService.config,a=s.html5Mode();if(a||null===r||(r="#"+s.hashPrefix()+r),r=function(e,t,n,r){return"/"===r?e:t?(0,o.Lb)(r)+e:n?r.slice(1)+e:e}(r,a,n.absolute,s.baseHref()),!n.absolute||!r)return r;var i=!a&&r?"/":"",d=s.port(),u=80===d||443===d?"":":"+d;return[s.protocol(),"://",s.host(),u,i,r].join("")},Object.defineProperty(e.prototype,"interceptDeferred",{get:function(){return this.router.urlService.interceptDeferred},enumerable:!1,configurable:!0}),e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRule.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>d,n:()=>u});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),d=function(){function e(e){this.router=e}return e.prototype.compile=function(e){return this.router.urlMatcherFactory.compile(e)},e.prototype.create=function(e,t){var n=this,s=i.l.isState,d=i.l.isStateDeclaration,m=(0,a.uj)([[r.HD,function(e){return m(n.compile(e))}],[(0,a.is)(o.x),function(e){return n.fromUrlMatcher(e,t)}],[(0,a.or)(s,d),function(e){return n.fromState(e,n.router)}],[(0,a.is)(RegExp),function(e){return n.fromRegExp(e,t)}],[r.mf,function(e){return new u(e,t)}]]),l=m(e);if(!l)throw new Error("invalid 'what' in when()");return l},e.prototype.fromUrlMatcher=function(e,t){var n=t;(0,r.HD)(t)&&(t=this.router.urlMatcherFactory.compile(t)),(0,a.is)(o.x)(t)&&(n=function(e){return t.format(e)});var i={urlMatcher:e,matchPriority:function(t){var n=e.parameters().filter((function(e){return e.isOptional}));return n.length?n.filter((function(e){return t[e.id]})).length/n.length:1e-6},type:"URLMATCHER"};return(0,s.l7)(new u((function(t){var n=e.exec(t.path,t.search,t.hash);return e.validates(n)&&n}),n),i)},e.prototype.fromState=function(e,t){var n=i.l.isStateDeclaration(e)?e.$$state():e,o={state:n,type:"STATE"};return(0,s.l7)(this.fromUrlMatcher(n.url,(function(e){var o=t.stateService,r=t.globals;o.href(n,e)!==o.href(r.current,r.params)&&o.transitionTo(n,e,{inherit:!0,source:"url"})})),o)},e.prototype.fromRegExp=function(e,t){if(e.global||e.sticky)throw new Error("Rule RegExp must not be global or sticky");var n=(0,r.HD)(t)?function(e){return t.replace(/\$(\$|\d{1,2})/,(function(t,n){return e["$"===n?0:Number(n)]}))}:t,o={regexp:e,type:"REGEXP"};return(0,s.l7)(new u((function(t){return e.exec(t.path)}),n),o)},e.isUrlRule=function(e){return e&&["type","match","handler"].every((function(t){return(0,r.$K)(e[t])}))},e}(),u=function(e,t){var n=this;this.match=e,this.type="RAW",this.matchPriority=function(e){return 0-n.$id},this.handler=t||s.yR}},"./node_modules/@uirouter/core/lib-esm/url/urlRules.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),i=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js");function d(e){if(!((0,a.mf)(e)||(0,a.HD)(e)||(0,a.is)(r.TargetState)(e)||r.TargetState.isDef(e)))throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");return(0,a.mf)(e)?e:(0,a.P0)(e)}o=function(e,t){var n=function(e,t){return(t.priority||0)-(e.priority||0)}(e,t);return 0!==n||0!==(n=function(e,t){var n={STATE:4,URLMATCHER:4,REGEXP:3,RAW:2,OTHER:1};return(n[e.type]||0)-(n[t.type]||0)}(e,t))||0!==(n=function(e,t){return e.urlMatcher&&t.urlMatcher?s.x.compare(e.urlMatcher,t.urlMatcher):0}(e,t))?n:function(e,t){var n={STATE:!0,URLMATCHER:!0};return n[e.type]&&n[t.type]?0:(e.$id||0)-(t.$id||0)}(e,t)};var u=function(){function e(e){this.router=e,this._sortFn=o,this._rules=[],this._id=0,this.urlRuleFactory=new i.I(e)}return e.prototype.dispose=function(e){this._rules=[],delete this._otherwiseFn},e.prototype.initial=function(e){var t=d(e);this.rule(this.urlRuleFactory.create((function(e,t){return 0===t.globals.transitionHistory.size()&&!!/^\/?$/.exec(e.path)}),t))},e.prototype.otherwise=function(e){var t=d(e);this._otherwiseFn=this.urlRuleFactory.create((0,a.P0)(!0),t),this._sorted=!1},e.prototype.removeRule=function(e){(0,a.nA)(this._rules,e)},e.prototype.rule=function(e){var t=this;if(!i.I.isUrlRule(e))throw new Error("invalid rule");return e.$id=this._id++,e.priority=e.priority||0,this._rules.push(e),this._sorted=!1,function(){return t.removeRule(e)}},e.prototype.rules=function(){return this.ensureSorted(),this._rules.concat(this._otherwiseFn?[this._otherwiseFn]:[])},e.prototype.sort=function(e){for(var t=this.stableSort(this._rules,this._sortFn=e||this._sortFn),n=0,o=0;o<t.length;o++)t[o]._group=n,o<t.length-1&&0!==this._sortFn(t[o],t[o+1])&&n++;this._rules=t,this._sorted=!0},e.prototype.ensureSorted=function(){this._sorted||this.sort()},e.prototype.stableSort=function(e,t){var n=e.map((function(e,t){return{elem:e,idx:t}}));return n.sort((function(e,n){var o=t(e.elem,n.elem);return 0===o?e.idx-n.idx:o})),n.map((function(e){return e.elem}))},e.prototype.when=function(e,t,n){var o=this.urlRuleFactory.create(e,t);return(0,a.$K)(n&&n.priority)&&(o.priority=n.priority),this.rule(o),o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlService.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRules.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlConfig.js"),a=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),i=function(){function e(e){var t=this;this.router=e,this.interceptDeferred=!1,this.rules=new r.h(this.router),this.config=new s.F(this.router),this.url=function(e,n,o){return t.router.locationService.url(e,n,o)},this.path=function(){return t.router.locationService.path()},this.search=function(){return t.router.locationService.search()},this.hash=function(){return t.router.locationService.hash()},this.onChange=function(e){return t.router.locationService.onChange(e)}}return e.prototype.dispose=function(){this.listen(!1),this.rules.dispose()},e.prototype.parts=function(){return{path:this.path(),search:this.search(),hash:this.hash()}},e.prototype.sync=function(e){if(!e||!e.defaultPrevented){var t=this.router,n=t.urlService,r=t.stateService,s={path:n.path(),search:n.search(),hash:n.hash()},i=this.match(s);(0,o.uj)([[o.HD,function(e){return n.url(e,!0)}],[a.TargetState.isDef,function(e){return r.go(e.state,e.params,e.options)}],[(0,o.is)(a.TargetState),function(e){return r.go(e.state(),e.params(),e.options())}]])(i&&i.rule.handler(i.match,s,this.router))}},e.prototype.listen=function(e){var t=this;if(!1!==e)return this._stopListeningFn=this._stopListeningFn||this.router.urlService.onChange((function(e){return t.sync(e)}));this._stopListeningFn&&this._stopListeningFn(),delete this._stopListeningFn},e.prototype.deferIntercept=function(e){void 0===e&&(e=!0),this.interceptDeferred=e},e.prototype.match=function(e){e=(0,o.l7)({path:"",search:{},hash:""},e);for(var t,n,r,s=this.rules.rules(),a=0;a<s.length&&(!t||t.rule._group===s[a]._group);a++){var i=(void 0,(r=(n=s[a]).match(e,this.router))&&{match:r,rule:n,weight:n.matchPriority(r)});t=!t||i&&i.weight>t.weight?i:t}return t},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla.js":(e,t,n)=>{"use strict";n.d(t,{$q:()=>o.$q});var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js":(e,t,n)=>{"use strict";n.d(t,{U:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),s=function(){function e(e,t){var n=this;this.fireAfterUpdate=t,this._listeners=[],this._listener=function(e){return n._listeners.forEach((function(t){return t(e)}))},this.hash=function(){return(0,r.en)(n._get()).hash},this.path=function(){return(0,r.en)(n._get()).path},this.search=function(){return(0,r.Qf)((0,r.en)(n._get()).search)},this._location=o.Jz.location,this._history=o.Jz.history}return e.prototype.url=function(e,t){return void 0===t&&(t=!0),(0,o.$K)(e)&&e!==this._get()&&(this._set(null,null,e,t),this.fireAfterUpdate&&this._listeners.forEach((function(t){return t({url:e})}))),(0,r.Q2)(this)},e.prototype.onChange=function(e){var t=this;return this._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}},e.prototype.dispose=function(e){(0,o.Wk)(this._listeners)},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=function(){function e(e,t){void 0===t&&(t=!1),this._isHtml5=t,this._baseHref=void 0,this._hashPrefix=""}return e.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},e.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},e.prototype.host=function(){return location.hostname},e.prototype.html5Mode=function(){return this._isHtml5},e.prototype.hashPrefix=function(e){return(0,o.$K)(e)?this._hashPrefix=e:this._hashPrefix},e.prototype.baseHref=function(e){return(0,o.$K)(e)&&(this._baseHref=e),(0,o.o8)(this._baseHref)&&(this._baseHref=this.getBaseHref()),this._baseHref},e.prototype.getBaseHref=function(){var e=document.getElementsByTagName("base")[0];return e&&e.href?e.href.replace(/^([^/:]*:)?\/\/[^/]*/,""):this._isHtml5?"/":location.pathname||"/"},e.prototype.dispose=function(){},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js":(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!1)||this;return r.Jz.addEventListener("hashchange",n._listener,!1),n}return a(t,e),t.prototype._get=function(){return(0,r.Ld)(this._location.hash)},t.prototype._set=function(e,t,n,o){this._location.hash=n},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),r.Jz.removeEventListener("hashchange",this._listener)},t}(s.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/injector.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/common/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{W:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=function(){var e=this;this.dispose=r.ZT,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return e._port},this.protocol=function(){return e._protocol},this.host=function(){return e._host},this.baseHref=function(){return e._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(t){return(0,o.$K)(t)?e._hashPrefix=t:e._hashPrefix}}},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>a});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),a=function(e){function t(t){return e.call(this,t,!0)||this}return s(t,e),t.prototype._get=function(){return this._url},t.prototype._set=function(e,t,n,o){this._url=n},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),a=n("./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js"),i=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js"),d=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js");n("./node_modules/@uirouter/core/lib-esm/vanilla/injector.js"),n("./node_modules/@uirouter/core/lib-esm/vanilla/q.js"),n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),(0,s._D)("vanilla.hashBangLocation",!1,r.R,o.u),(0,s._D)("vanilla.pushStateLocation",!0,a.h,o.u),(0,s._D)("vanilla.memoryLocation",!1,i.I,d.W)},"./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!0)||this;return n._config=t.urlService.config,s.Jz.addEventListener("popstate",n._listener,!1),n}return a(t,e),t.prototype._getBasePrefix=function(){return(0,s.Lb)(this._config.baseHref())},t.prototype._get=function(){var e=this._location,t=e.pathname,n=e.hash,o=e.search;o=(0,s.C7)(o)[1],n=(0,s.cW)(n)[1];var r=this._getBasePrefix(),a=t===this._config.baseHref(),i=t.substr(0,r.length)===r;return(t=a?"/":i?t.substring(r.length):t)+(o?"?"+o:"")+(n?"#"+n:"")},t.prototype._set=function(e,t,n,o){var r=this._getBasePrefix(),s=n&&"/"!==n[0]?"/":"",a=""===n||"/"===n?this._config.baseHref():r+s+n;o?this._history.replaceState(e,t,a):this._history.pushState(e,t,a)},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),s.Jz.removeEventListener("popstate",this._listener)},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/q.js":(e,t,n)=>{"use strict";n.d(t,{$q:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r={when:function(e){return new Promise((function(t,n){return t(e)}))},reject:function(e){return new Promise((function(t,n){n(e)}))},defer:function(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e},all:function(e){if((0,o.kJ)(e))return Promise.all(e);if((0,o.Kn)(e)){var t=Object.keys(e).map((function(t){return e[t].then((function(e){return{key:t,val:e}}))}));return r.all(t).then((function(e){return e.reduce((function(e,t){return e[t.key]=t.val,e}),{})}))}}}},"./node_modules/@uirouter/core/lib-esm/vanilla/utils.js":(e,t,n)=>{"use strict";n.d(t,{Qf:()=>s,en:()=>a,Q2:()=>i,_D:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=function(e,t){var n=t[0],r=t[1];return e.hasOwnProperty(n)?(0,o.kJ)(e[n])?e[n].push(r):e[n]=[e[n],r]:e[n]=r,e},s=function(e){return e.split("&").filter(o.yR).map(o.Fb).reduce(r,{})};function a(e){var t=function(e){return e||""},n=(0,o.cW)(e).map(t),r=n[0],s=n[1],a=(0,o.C7)(r).map(t);return{path:a[0],search:a[1],hash:s,url:e}}var i=function(e){var t=e.path(),n=e.search(),r=e.hash(),s=Object.keys(n).map((function(e){var t=n[e];return((0,o.kJ)(t)?t:[t]).map((function(t){return e+"="+t}))})).reduce(o.M7,[]).join("&");return t+(s?"?"+s:"")+(r?"#"+r:"")};function d(e,t,n,o){return function(r){var s=r.locationService=new n(r),a=r.locationConfig=new o(r,t);return{name:e,service:s,configuration:a,dispose:function(e){e.dispose(s),e.dispose(a)}}}}},"./node_modules/@uirouter/core/lib-esm/view/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/view/view.js":(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),i=function(){function e(e){var t=this;this.router=e,this._uiViews=[],this._viewConfigs=[],this._viewConfigFactories={},this._listeners=[],this._pluginapi={_rootViewContext:this._rootViewContext.bind(this),_viewConfigFactory:this._viewConfigFactory.bind(this),_registeredUIView:function(e){return(0,o.sE)(t._uiViews,(function(n){return t.router.$id+"."+n.id===e}))},_registeredUIViews:function(){return t._uiViews},_activeViewConfigs:function(){return t._viewConfigs},_onSync:function(e){return t._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}}}}return e.normalizeUIViewTarget=function(e,t){void 0===t&&(t="");var n=t.split("@"),o=n[0]||"$default",r=(0,s.HD)(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(o);if(a&&(r=a[1],o=a[2]),"!"===o.charAt(0)&&(o=o.substr(1),r=""),/^(\^(?:\.\^)*)$/.exec(r)){var i=r.split(".").reduce((function(e,t){return e.parent}),e);r=i.name}else"."===r&&(r=e.name);return{uiViewName:o,uiViewContextAnchor:r}},e.prototype._rootViewContext=function(e){return this._rootContext=e||this._rootContext},e.prototype._viewConfigFactory=function(e,t){this._viewConfigFactories[e]=t},e.prototype.createViewConfig=function(e,t){var n=this._viewConfigFactories[t.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+t.$type);var o=n(e,t);return(0,s.kJ)(o)?o:[o]},e.prototype.deactivateViewConfig=function(e){a.g4.traceViewServiceEvent("<- Removing",e),(0,o.nA)(this._viewConfigs,e)},e.prototype.activateViewConfig=function(e){a.g4.traceViewServiceEvent("-> Registering",e),this._viewConfigs.push(e)},e.prototype.sync=function(){var t=this,n=this._uiViews.map((function(e){return[e.fqn,e]})).reduce(o.bb,{});function s(e){for(var t=e.viewDecl.$context,n=0;++n&&t.parent;)t=t.parent;return n}var i=(0,r.WA)((function(e,t,n,o){return t*(e(n)-e(o))})),d=this._uiViews.sort(i((function(e){var t=function(e){return e&&e.parent?t(e.parent)+1:1};return 1e4*e.fqn.split(".").length+t(e.creationContext)}),1)).map((function(o){var r=t._viewConfigs.filter(e.matches(n,o));return r.length>1&&r.sort(i(s,-1)),{uiView:o,viewConfig:r[0]}})),u=d.map((function(e){return e.viewConfig})),m=this._viewConfigs.filter((function(e){return!(0,o.d3)(u,e)})).map((function(e){return{uiView:void 0,viewConfig:e}}));d.forEach((function(e){-1!==t._uiViews.indexOf(e.uiView)&&e.uiView.configUpdated(e.viewConfig)}));var l=d.concat(m);this._listeners.forEach((function(e){return e(l)})),a.g4.traceViewSync(l)},e.prototype.registerUIView=function(e){a.g4.traceViewServiceUIViewEvent("-> Registering",e);var t=this._uiViews;return t.filter((function(t){return t.fqn===e.fqn&&t.$type===e.$type})).length&&a.g4.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",e),t.push(e),this.sync(),function(){-1!==t.indexOf(e)?(a.g4.traceViewServiceUIViewEvent("<- Deregistering",e),(0,o.nA)(t)(e)):a.g4.traceViewServiceUIViewEvent("Tried removing non-registered uiView",e)}},e.prototype.available=function(){return this._uiViews.map((0,r.vg)("fqn"))},e.prototype.active=function(){return this._uiViews.filter((0,r.vg)("$config")).map((0,r.vg)("name"))},e.matches=function(e,t){return function(n){if(t.$type!==n.viewDecl.$type)return!1;var r=n.viewDecl,s=r.$uiViewName.split("."),a=t.fqn.split(".");if(!(0,o.fS)(s,a.slice(0-s.length)))return!1;var i=1-s.length||void 0,d=a.slice(0,i).join("."),u=e[d].creationContext;return r.$uiViewContextAnchor===(u&&u.name)}},e}()},"./node_modules/angular-aria/angular-aria.js":()=>{!function(e,t){"use strict";var n="ngAriaDisable",o=t.module("ngAria",["ng"]).info({angularVersion:"1.8.2"}).provider("$aria",(function(){var e={ariaHidden:!0,ariaChecked:!0,ariaReadonly:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeydown:!0,bindRoleForClick:!0};function o(t,o,r,a){return function(i,d,u){if(!u.hasOwnProperty(n)){var m=u.$normalize(o);!e[m]||s(d,r)||u[m]||i.$watch(u[t],(function(e){e=a?!e:!!e,d.attr(o,e)}))}}}this.config=function(n){e=t.extend(e,n)},this.$get=function(){return{config:function(t){return e[t]},$$watchExpr:o}}})),r=["BUTTON","A","INPUT","TEXTAREA","SELECT","DETAILS","SUMMARY"],s=function(e,t){if(-1!==t.indexOf(e[0].nodeName))return!0};o.directive("ngShow",["$aria",function(e){return e.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(e){return e.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(e){return e.$$watchExpr("ngValue","aria-checked",r,!1)}]).directive("ngChecked",["$aria",function(e){return e.$$watchExpr("ngChecked","aria-checked",r,!1)}]).directive("ngReadonly",["$aria",function(e){return e.$$watchExpr("ngReadonly","aria-readonly",r,!1)}]).directive("ngRequired",["$aria",function(e){return e.$$watchExpr("ngRequired","aria-required",r,!1)}]).directive("ngModel",["$aria",function(e){function t(t,n,o,a){return e.config(n)&&!o.attr(t)&&(a||!s(o,r))&&("hidden"!==o.attr("type")||"INPUT"!==o[0].nodeName)}function o(e,t){return!t.attr("role")&&t.attr("type")===e&&!s(t,r)}return{restrict:"A",require:"ngModel",priority:200,compile:function(r,s){if(!s.hasOwnProperty(n)){var a=function(e,t){var n=e.type,o=e.role;return"checkbox"===(n||o)||"menuitemcheckbox"===o?"checkbox":"radio"===(n||o)||"menuitemradio"===o?"radio":"range"===n||"progressbar"===o||"slider"===o?"range":""}(s);return{post:function(n,r,s,i){var d=t("tabindex","tabindex",r,!1);function u(){return i.$modelValue}switch(a){case"radio":case"checkbox":o(a,r)&&r.attr("role",a),t("aria-checked","ariaChecked",r,!1)&&n.$watch(u,"radio"===a?function(e){var t=s.value==i.$viewValue;r.attr("aria-checked",t)}:function(){r.attr("aria-checked",!i.$isEmpty(i.$viewValue))}),d&&r.attr("tabindex",0);break;case"range":if(o(a,r)&&r.attr("role","slider"),e.config("ariaValue")){var m=!r.attr("aria-valuemin")&&(s.hasOwnProperty("min")||s.hasOwnProperty("ngMin")),l=!r.attr("aria-valuemax")&&(s.hasOwnProperty("max")||s.hasOwnProperty("ngMax")),_=!r.attr("aria-valuenow");m&&s.$observe("min",(function(e){r.attr("aria-valuemin",e)})),l&&s.$observe("max",(function(e){r.attr("aria-valuemax",e)})),_&&n.$watch(u,(function(e){r.attr("aria-valuenow",e)}))}d&&r.attr("tabindex",0)}!s.hasOwnProperty("ngRequired")&&i.$validators.required&&t("aria-required","ariaRequired",r,!1)&&s.$observe("required",(function(){r.attr("aria-required",!!s.required)})),t("aria-invalid","ariaInvalid",r,!0)&&n.$watch((function(){return i.$invalid}),(function(e){r.attr("aria-invalid",!!e)}))}}}}}}]).directive("ngDisabled",["$aria",function(e){return e.$$watchExpr("ngDisabled","aria-disabled",r,!1)}]).directive("ngMessages",(function(){return{restrict:"A",require:"?ngMessages",link:function(e,t,o,r){o.hasOwnProperty(n)||t.attr("aria-live")||t.attr("aria-live","assertive")}}})).directive("ngClick",["$aria","$parse",function(e,t){return{restrict:"A",compile:function(o,a){if(!a.hasOwnProperty(n)){var i=t(a.ngClick);return function(t,n,o){s(n,r)||(e.config("bindRoleForClick")&&!n.attr("role")&&n.attr("role","button"),e.config("tabindex")&&!n.attr("tabindex")&&n.attr("tabindex",0),!e.config("bindKeydown")||o.ngKeydown||o.ngKeypress||o.ngKeyup||n.on("keydown",(function(e){var n=e.which||e.keyCode;13!==n&&32!==n||(-1!==r.indexOf(e.target.nodeName)||e.target.isContentEditable||e.preventDefault(),t.$apply((function(){i(t,{$event:e})})))})))}}}}}]).directive("ngDblclick",["$aria",function(e){return function(t,o,a){a.hasOwnProperty(n)||!e.config("tabindex")||o.attr("tabindex")||s(o,r)||o.attr("tabindex",0)}}])}(window,window.angular)},"./node_modules/angular-rateit/dist/ng-rateit.js":()=>{angular.module("ngRateIt",["ng"]).directive("ngRateIt",["$q",function(e){"use strict";return{scope:{ngModel:"=",min:"=?min",max:"=?max",step:"=?step",readOnly:"&?readOnly",pristine:"=?pristine",resetable:"&?resetable",starWidth:"=?starWidth",starHeight:"=?starHeight",canelWidth:"=?canelWidth",cancelHeight:"=?cancelHeight",rated:"&?rated",reset:"&?reset",beforeRated:"&?beforeRated",beforeReset:"&?beforeReset"},templateUrl:"ngRateIt/ng-rate-it.html",require:"ngModel",replace:!0,link:function(t,n,o){o.readOnly||(t.readOnly=function(){return!1}),o.resetable||(t.resetable=function(){return!0}),o.beforeRated||(t.beforeRated=function(){var t=e.defer();return t.resolve(),t.promise}),o.rated||(t.rated=function(){}),o.beforeReset||(t.beforeReset=function(){var t=e.defer();return t.resolve(),t.promise}),o.reset||(t.reset=function(){})},controller:"ngRateItController"}}]).controller("ngRateItController",["$scope","$timeout",function(e,t){"use strict";e.isTouch=!!window.hasOwnProperty("ontouchstart")||window.navigator.msMaxTouchPoints>0,e.orgValue=angular.copy(e.ngModel),e.min=e.min||0,e.max=e.max||5,e.step=e.step||.5,e.pristine=e.orgValue===e.ngModel,e.starWidth=e.starWidth||16,e.starPartWidth=e.starWidth*e.step,e.starHeight=e.starHeight||16,e.canelWidth=e.canelWidth||e.starWidth,e.cancelHeight=e.cancelHeight||e.starHeight;var n=e.max-e.min,o=n/e.step,r=e.$watch("ngModel",(function(){e.pristine=e.orgValue===e.ngModel})),s=function(e){return(e+1)/o*n};e.getStartParts=function(){return new Array(o)},e.getStarOffset=function(t){var n=1/e.step;return-e.starWidth/n*(t%n)},e.isSelected=function(t){return s(t)<=e.ngModel-e.min},e.removeRating=function(){e.resetable()&&!e.readOnly()&&e.beforeReset({rating:e.ngModel}).then((function(){e.ngModel=e.min,e.reset({rating:e.ngModel})}))},e.setValue=function(n){if(!e.readOnly()){var o=angular.copy(e.min+s(n));e.beforeRated({rating:o}).then((function(){e.ngModel=o,t((function(){e.rated({rating:e.ngModel})}))}))}},e.$on("$destroy",(function(){r()}))}]).run(["$templateCache",function(e){"use strict";e.put("ngRateIt/ng-rate-it.html",'<div class="ngrateiti needsclick" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star needsclick"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating needsclick" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star needsclick"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"ng-style="{\'width\': starPartWidth+\'px\', \'height\':starHeight+\'px\', \'background-position\': getStarOffset($index)+\'px 0\'}"></span></div></div>')}])},"./src/js/index.module.js":(e,t,n)=>{"use strict";n("./node_modules/angular-animate/index.js"),n("./node_modules/angular-aria/index.js"),n("./node_modules/angular-messages/index.js"),n("./node_modules/angular-material/index.js"),n("./node_modules/angular-resource/index.js"),n("./node_modules/angular-sanitize/index.js"),n("./node_modules/ng-csv/build/ng-csv.min.js"),n("./node_modules/ng-embed/src/ng-embed.js");var o=n("./node_modules/@uirouter/angularjs/lib-esm/index.js"),r=(n("./node_modules/angular-local-storage/index.js"),n("./node_modules/angular-rateit/dist/ng-rateit.js"),n("./node_modules/@flowjs/ng-flow/dist/ng-flow.js"),n("./node_modules/emojionearea/dist/emojionearea.js"),n("./node_modules/jquery-textcomplete/dist/jquery.textcomplete.js"),n("./node_modules/moment/moment.js")),s=n.n(r),a=n("./node_modules/lodash.map/index.js"),i=n.n(a);function d(e,t,n,o,r,a,d,u,m,l){const _=this;function c(n){a.updateStorage(u,{up:n}).then((o=>{var r;e.layout=o,r=!0===n?"show":"hide",t.parent.postMessage({cmd:r},"*"),l((()=>{e.$apply()}))})).catch(a.onStorageError)}_.$onInit=function(){console.debug("IndexController::onInit() VISITOR",e.visitor),e.status="init";const o=e.settings.color,s=e.settings.textColor,i=e.settings.textButtonColor||e.settings.textColor,d=e.settings.color_button,l=e.settings.backgroundColor,_=Math.max(document.documentElement.clientHeight,window.innerHeight||0),h=document.documentElement.clientWidth;document.documentElement.style.setProperty("--xc-ws-div-color",o),document.documentElement.style.setProperty("--xc-ws-text-color",s),document.documentElement.style.setProperty("--xc-ws-text-button-color",i),document.documentElement.style.setProperty("--xc-ws-button-color",d),document.documentElement.style.setProperty("--xc-ws-background-color",l),document.documentElement.style.setProperty("--xc-ws-client-height",_),document.documentElement.style.setProperty("--xc-ws-client-width",h);let f=!1;const p=t=>null!==t&&t[e.location]||{},M=a.getItem(m).then(p),y=a.getItem(u).then(p);r.all([M,y]).then((r=>{let[a,i]=r;e.visitor=a,e.layout=i,e.visitor.interaction&&e.layout.up?f=!0:e.layout.up=!0,"bottom_right"===e.settings.alignment&&c(f),n.go(function(){var t,n;const o=e.settings.online,r=!(null==e||null===(t=e.visitor)||void 0===t||null===(n=t.interaction)||void 0===n||!n.id),s=Number(e.settings.maxInteractions)&&Number(e.settings.openedInteractions)>=Number(e.settings.maxInteractions);return!!(r||!s&&o)}()?"app.online":"app.offline",null,{location:"replace"});let d="";d=e.settings.online||!e.settings.hideWhenOffline?"init":"offline",t.parent.postMessage({cmd:d,div_color:o,text_color:s,client_height:_,client_width:h},"*");const u=document.createElement("style");document.head.appendChild(u),u.sheet.insertRule(".mdi-send:before {color:"+e.settings.color+"!important}")})).catch(a.onStorageError)},_.close=function(){const t=e.visitor.interaction;if(t&&t.id){const r=o.confirm().parent(angular.element(document.querySelector("#chat-app"))).clickOutsideToClose(!0).title(e.settings.closingQuestion||"Do you want to close the interaction?").ok("Ok").cancel("Cancel");o.show(r).then((function(){return d.chatInteraction.customUpdate({id:t.id,closed:!0,closeReason:"contact"}).$promise})).then((function(){n.go("app.closing",null,{location:"replace"})})).catch((function(e){console.error("keep open",e)}))}},_.toggle=c,_.download=function(){const t=r.defer(),n=e.visitor.interaction;return n&&n.id&&d.chatInteraction.getMessages({intid:n.id,includeAll:!0}).$promise.then((function(n){t.resolve(i()(n.rows.slice(1),(function(t){let n;if("in"===t.direction&&(n=e.settings.customerAlias||e.visitor.from||"Visitor"+t.ContactId),"out"===t.direction)switch(e.settings.agentIdentifier){case"website_alias":n=t.UserId?e.settings.agentAlias+t.UserId:"System";break;case"agent_alias":n=t.UserId?t.User.alias||t.User.fullname:"System";break;case"agent_fullname":n=t.UserId?t.User.fullname:"System";break;default:n=t.UserId?e.settings.agentAlias+t.UserId:"System"}return{sender:n,message:t.body,createdAt:s()(t.createdAt).format("MM/DD/YYYY HH:mm:ss")}})))})).catch((function(e){console.error(e)})),t.promise},_.getHeaderShape=function(){return"rounded"===e.settings.header_shape?"15px":"0px"};const h={online:["online","chat","waiting","closing","unmanaged"],offline:["offline"]};Object.defineProperty(e,"actualTitle",{get(){let t=e.settings.defaultTitle;return h.online.includes(e.status)?t=e.settings.header_online:h.offline.includes(e.status)&&(t=e.settings.header_offline),t}}),window.addEventListener("message",(function(e){"show"===e.data.evt?c(!0):"hide"===e.data.evt&&c(!1)}),!1)}d.$inject=["$rootScope","$window","$state","$mdDialog","$q","RemoteStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","$timeout"];var u=n("./node_modules/lodash.forin/index.js"),m=n.n(u),l=n("./node_modules/lodash.isnil/index.js"),_=n.n(l),c=n("./src/js/chat/chat.tpl.html"),h=n("./src/js/closing/closing.tpl.html"),f=n("./src/js/offline/offline.tpl.html"),p=n("./src/js/online/online.tpl.html"),M=n("./src/js/unmanaged/unmanaged.tpl.html"),y=n("./src/js/waiting/waiting.tpl.html");function L(e,t){const n=t.search();e.settings={cursor:"pointer",hide:!0},m()(n,(function(t,n){""===t||_()(t)||("true"===t&&(t=!0),"false"===t&&(t=!1),e.settings[n]=t)})),e.location=e.settings.location,e.layout={up:!1},e.visitor={}}function g(e,t,n,o,r){t.html5Mode(!0),n.defaults.headers.get||(n.defaults.headers.get={}),n.defaults.headers.get["If-Modified-Since"]="Mon, 26 Jul 1997 05:00:00 GMT",n.defaults.headers.get["Cache-Control"]="no-cache",n.defaults.headers.get.Pragma="no-cache",o.setPrefix(r),e.state("app",{abstract:!0}).state("app.waiting",{url:"/waiting",templateUrl:y,controller:"WaitingController as vm"}).state("app.online",{url:"/online",templateUrl:p,controller:"OnlineController as vm"}).state("app.offline",{url:"/offline",templateUrl:f,controller:"OfflineController as vm"}).state("app.chat",{url:"/chat",templateUrl:c,controller:"ChatController as vm"}).state("app.unmanaged",{url:"/unmanaged",templateUrl:M,controller:"UnmanagedController as vm"}).state("app.closing",{url:"/closing",templateUrl:h,controller:"ClosingController as vm"})}g.$inject=["$stateProvider","$locationProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX"],L.$inject=["$rootScope","$location"];var Y=n("./node_modules/lodash.merge/index.js"),v=n.n(Y);function k(e,t,n,o,r,s,a,i){const d=this;function u(t){return function(o){d.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").position("top");n.show(r)}}function m(){e.loading=!1}function l(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function _(){d.form={},d.upColor=null,d.downColor=null,d.userForm.$setPristine(),d.userForm.$setUntouched(),delete e.visitor.interaction,e.enableDownload=!1}d.$onInit=function(){console.debug("ClosingController::onInit() VISITOR",e.visitor),e.status="closing",r.all([s.removeItem(a).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(s.onStorageError),s.removeItem(i).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(s.onStorageError)]).then((()=>e.loading=!1))},d.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.close(v()({id:e.visitor.interaction.id,ratingType:e.settings.ratingType,customer:e.settings.customerAlias||e.visitor.from},d.form)).$promise.then((function(){delete d.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(_).then(l).catch(u("submit")).finally(m):(m(),u("submit"))},d.skip=function(){_(),l()},d.form={},d.errors={}}function j(e,t){const n={id:"@id",token:e.settings.token},o={};return o.baseUrl=e.settings.remote+"/api/",o.chatWebsite=t(o.baseUrl+"chat/websites/:id",n,{notify:{method:"POST",url:o.baseUrl+"chat/websites/:id/notify"},offline:{method:"POST",url:o.baseUrl+"chat/websites/:id/offline"},getFields:{method:"GET",url:o.baseUrl+"chat/websites/:id/fields"}}),o.chatInteraction=t(o.baseUrl+"chat/interactions/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/interactions/:id"},customUpdate:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/custom_update"},close:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/close"},getMessages:{method:"GET",url:o.baseUrl+"chat/interactions/:intid/my_messages"},uploadAttachment:{method:"POST",url:o.baseUrl+"chat/interactions/:id/attachment_upload",headers:{"Content-Type":void 0},transformRequest:angular.identity},downloadAttachment:{method:"GET",url:o.baseUrl+"chat/interactions/:id/attachment_download"},abandon:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/abandon"}}),o.chatMessage=t(o.baseUrl+"chat/messages/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/messages/:id"}}),o}k.$inject=["$rootScope","$state","$mdToast","api","$q","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"],j.$inject=["$rootScope","$resource"];var w=n("./node_modules/lodash.find/index.js"),b=n.n(w),D=n("./node_modules/lodash.values/index.js"),T=n.n(D),S=n("./node_modules/jquery/dist/jquery.js");function H(e,t,n,r,s,a,i,d,u,m,l,c){const h=this;let f,p,M,y;function L(){o.$q.all([m.removeItem(l).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(m.onStorageError),m.removeItem(c).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(m.onStorageError)]).then((()=>{t.settings.online?a.go("app.online",null,{location:"replace"}):a.go("app.offline",null,{location:"replace"})}))}function g(){n((function(){const e=s[0].getElementsByClassName("chat-messages")[0];e&&(e.scrollTop=e.scrollHeight)}))}function Y(){h.errors={},t.$emit("hide");const e=d.simple().textContent("FILE TOO BIG: The max allowed size is 16MB").toastClass("md-warning-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));d.show(e)}function k(e){return function(t){h.errors[e]=t.data,g()}}function j(e){u.chatWebsite.notify(e).$promise.then((function(e){h.errors={};let n=!1;_()(t.visitor.interaction)&&(t.visitor.interaction={id:e.interaction.id},n=!0),t.visitor.interactionStarted||(t.visitor.interactionStarted=!0,n=!0),n&&m.updateStorage(l,t.visitor).then((e=>{t.visitor=e})).catch(m.onStorageError),f[0].emojioneArea.setText(""),g()})).catch(k("chatMessageError"))}function w(){t.visitor&&t.visitor.interaction&&t.visitor.interaction.id&&u.chatInteraction.get({id:t.visitor.interaction.id}).$promise.then((function(e){delete h.errors.getInteraction,e.closed&&(t.visitor.interaction.closed=!0,m.updateStorage(l,t.visitor).then((e=>{t.visitor=e})).catch(m.onStorageError),"unmanaged"===e.disposition?a.go("app.unmanaged",null,{location:"replace"}):a.go("app.closing",null,{location:"replace"}))})).catch((function(e){switch(e.status){case 403:a.go("app.closing",null,{location:"replace"});break;case 404:L();break;case 405:a.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}function D(e){const n=f[0].emojioneArea.getText();e&&13===e.keyCode&&e.shiftKey||e&&13!==e.keyCode||""!==n&&j(v()({body:n},t.visitor))}function H(){var e,n;null!=t&&null!==(e=t.visitor)&&void 0!==e&&null!==(n=e.interaction)&&void 0!==n&&n.id&&u.chatInteraction.getMessages({intid:t.visitor.interaction.id,includeAgent:!0,id:y||void 0}).$promise.then((function(e){if(delete h.errors.interaction,e.count){let o=!1,r=0;for(r=0,o=!1;r<e.rows.length;r++){const s=b()(t.messages,{id:e.rows[r].id});s?e.rows[r].read&&(s.read=!0):(o=!0,t.messages.push(e.rows[r])),"out"!==e.rows[r].direction||e.rows[r].read||(n=e.rows[r].id,u.chatMessage.update({id:n,read:!0}).$promise.catch((function(e){console.error(e)})))}o&&g(),e.rows[r-1].read&&(y=e.rows[r-1].id),y&&!t.visitor.interactionStarted&&m.updateStorage(l,{...t.visitor,interactionStarted:!0}).then((e=>{t.visitor=e}))}var n})).catch((function(e){switch(e.status){case 403:a.go("app.closing",null,{location:"replace"});break;case 405:a.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}h.errors={},t.messages=[],h.emojiOptions={watchEmbedData:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank"},h.ngFlowOptions={allowDuplicateUploads:!0},h.$onInit=function(){console.debug("ChatController::onInit() VISITOR",t.visitor),t.status="chat",t.loading=!1,t.settings.showMenu=!0,h.replyMessage="",t.visitor.interaction&&t.visitor.interaction.closed?L():(w(),p=r(H,2e3),M=r(w,3e3)),f=S("#emojionearea").emojioneArea({placeholder:t.settings.placeholderMessage||"Type a message",events:{keyup:function(e,t){D(t)},ready:function(){this.setFocus()}}})},h.reply=D,h.reply_button=function(){const e=f[0].emojioneArea.getText();""!==e&&(j(v()({body:e},t.visitor)),f[0].emojioneArea.setFocus())},h.fileAdded=function(e){if(e.size>16777216)return void Y();const n=new FormData;n.append("file",e.file),i.post(t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_upload?token="+t.settings.token,n,{transformRequest:angular.identity,headers:{"Content-Type":void 0}}).then((function(e){(e=e.data).id?(h.errors={},j(v()({body:'<a href="'+t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_download?attachId="+e.id+"&token="+t.settings.token+'" target="_blank">'+e.name+"</a>",AttachmentId:e.id},t.visitor))):k("sendAttachment")}),k("sendAttachment"))},h.handleSizeError=Y,e.$on("$destroy",(function(){r.cancel(p),r.cancel(M),p=null,M=null})),t.$on("$download",(function(e,n){n&&n(T()(t.messages))}))}H.$inject=["$scope","$rootScope","$timeout","$interval","$document","$state","$http","$mdToast","api","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"];var x=n("./node_modules/lodash.random/index.js"),E=n.n(x),P=n("./node_modules/lodash.clonedeep/index.js"),O=n.n(P),$=n("./node_modules/json-form-data/src/jsonToFormData.js"),A=n.n($);function R(e,t,n,o,r,s,a){const i=this;let d=null,u=null;t.typeField="";const m={showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}};function l(){delete i.errors.submit,t.$emit("hide"),i.fields=O()(u),i.form={},i.userForm.$setPristine(),i.userForm.$setUntouched();const e=r.simple().textContent(t.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));r.show(e)}i.trustAsHtml=function(e){return n.trustAsHtml(e)},i.initUploadButton=function(t){const n=i.fields[t],o=s.find(".upload-item");if(o.length){const t=angular.element(o[0].querySelector(".upload-button")),r=angular.element(o[0].querySelector("input[type=file]")),s=t.find("label");s.length&&s.css("display","none"),t.on("click",(()=>{s.css("display","none"),"function"==typeof r.trigger?r.trigger("click"):r[0].click()})),r.on("change",(t=>{e.$apply((function(){"string"==typeof n.props.error&&(n.props.error=null);const e=Array.from(t.target.files),o=1048576*n.config.size;e.some((e=>e.size>=o))?(n.options=[],n.props.error=n.config.sizeErrMessage):n.options=e.map((e=>{const{name:t,size:n,type:o}=e;return{name:t,size:n,type:o,file:e}})),i.form[n.props.title]=n.options}))}))}},i.removeFileItem=function(e,t){e.options.splice(t,1),i.form[e.props.title]=e.options},i.setupFileInput=function(e){console.log("form item setup",e);const t=s.find(".upload-item"),n=angular.element(t[0].querySelector("input[type=file]")),{multipleUpload:o,accept:r}=e.config;o&&n.attr("multiple","multiple"),r&&n[0].setAttribute("accept",r)},i.makeFileOptionsVisible=function(){const e=Array.from(s.find(".filename-label")),t=e[e.length-1];t&&t.scrollIntoView&&t.scrollIntoView()},i.$onInit=function(){console.debug("OfflineController::onInit() VISITOR",t.visitor),t.status="offline",i.visitor={id:t.settings.id,mapKeyOffline:"firstName",from:"Anonymous"+E()(1,1e6)},t.settings.showMenu=!1,t.loading=!1,o.chatWebsite.getFields({id:t.settings.id,online:!1}).$promise.then((function(e){e.count&&(d=e.fromKey,u=O()(e.rows),i.fields=O()(u))})).then((function(){for(let e=0;e<i.fields.length;e++){const n=i.fields[e];if(t.typeField+=n.type,void 0!==n.props&&n.props.helpText){const t=RegExp.prototype.test.bind(/(<([^>]+)>)/i);i.checkHTML[e]=t(n.props.helpText)}}})).catch((function(e){console.error(e)}))},i.submit=function(){t.loading=!0;const e={...i.form};for(let n=0;n<i.fields.length;n++){const o=i.fields[n];o.props&&void 0!==e[o.props.title]&&(_()(o.cmField)||(i.visitor[o.cmField]=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title]),n===d&&(_()(t.settings.mapKeyOffline)||(i.visitor.mapKeyOffline=t.settings.mapKeyOffline,i.visitor.from=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title])),"upload"===o.type&&(e[o.props.title]=e[o.props.title].map((e=>e.file))))}const n=Array.isArray(i.fields)?i.fields.filter((e=>"upload"===e.type)):[],s=v()({body:e},i.visitor),u=null!=e&&n.length>0,c=null!==e&&"{}"!==JSON.stringify(e);var h,f;(u?(h=s,a({url:`${o.baseUrl}chat/websites/${h.id}/offline`,headers:{"Content-Type":void 0},data:A()(h,{...m,initialFormData:new FormData}),method:"POST"})):c?o.chatWebsite.offline(s).$promise:Promise.reject("INVALID_FORM")).then(l).catch((f="submit",function(e){const n=r.simple().textContent(t.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));r.show(n),i.errors[f]=e.data})).finally((()=>{i.form.invalid||(i.form={}),t.loading=!1}))},i.toggle=function(e,t){i.form[e]||(i.form[e]=[]);const n=i.form[e].indexOf(t);n>-1?i.form[e].splice(n,1):i.form[e].push(t)},i.exists=function(e,t){return i.form[e]||(i.form[e]=[]),i.form[e].indexOf(t)>-1},i.checkHTML=[],i.form={},i.errors={},i.userForm={}}function F(e,t,n,o,r,s){const a=this;let i=null;function d(){return e.visitor={id:e.settings.id,mapKey:"firstName",from:"Anonymous"+E()(1,1e6)},e.settings.showMenu=!1,r.updateStorage(s,e.visitor).then((t=>(e.visitor=t,o.chatWebsite.getFields({id:e.settings.id,online:!0}).$promise.then((function(e){e.count&&(i=e.fromKey,a.fields=e.rows)})).then((function(){for(let e=0;e<a.fields.length;e++){const t=a.fields[e];if(t.props.helpText){const n=RegExp.prototype.test.bind(/(<([^>]+)>)/i);a.checkHTML[e]=n(t.props.helpText)}}})).catch((function(e){console.error(e)}))))).catch(r.onStorageError)}a.checkHTML=[],a.form={},a.errors={},a.userForm={},a.disableItem=!1,a.trustAsHtml=function(e){return n.trustAsHtml(e)},a.$onInit=function(){if(console.debug("OnlineController::onInit() VISITOR",e.visitor),e.status="online",e.visitor&&e.visitor.interaction)if(e.visitor.interaction.id)if(!0===e.visitor.interactionStarted)t.go("app.chat",null,{location:"replace"});else{var n,r;const t=e.visitor.interaction.id,s=null==e||null===(n=e.visitor)||void 0===n||null===(r=n.message)||void 0===r?void 0:r.id;if(s){const e={id:t,channel:"chat",interaction:{id:t},message:{id:s},disposition:"abandoned",closed:!0,closeReason:"contact"};o.chatInteraction.abandon(e).$promise.finally((()=>d()))}}else t.go("app.waiting",null,{location:"replace"});else d()},a.submit=function(){let n="New chat request \n";for(let t=0;t<a.fields.length;t++){const o=a.fields[t];o.props&&void 0!==a.form[o.props.title]&&(_()(o.variable)||(e.visitor[o.variable]=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title]),_()(o.cmField)||(e.visitor[o.cmField]=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title]),t===i&&(_()(e.settings.mapKey)||(e.visitor.mapKey=e.settings.mapKey,e.visitor.from=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title])),a.form[o.props.title]&&(n+=o.props.title+": "+a.form[o.props.title]+"\n"))}var d;d=v()({body:n,referer:e.settings.referer,customerIp:e.settings.customerIp},e.visitor),a.disableItem=!0,o.chatWebsite.notify(d).$promise.then((function(n){delete a.errors.chatMessageError,e.visitor.message={id:n.message.id},e.visitor.interaction={id:n.interaction.id},r.updateStorage(s,e.visitor).then((t=>{e.visitor=t})).catch(r.onStorageError),a.disableItem=!1,e.settings.enableCustomerWriting?t.go("app.chat",null,{location:"replace"}):t.go("app.waiting",null,{location:"replace"})})).catch((function(e){a.disableItem=!1,console.error(e)}))},a.toggle=function(e,t){a.form[e]||(a.form[e]=[]);const n=a.form[e].indexOf(t);n>-1?a.form[e].splice(n,1):a.form[e].push(t)},a.exists=function(e,t){return a.form[e]||(a.form[e]=[]),a.form[e].indexOf(t)>-1}}function W(e,t,n,o,r,s,a,i){const d=this;function u(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function m(){d.form={},d.upColor=null,d.downColor=null,d.userForm.$setPristine(),d.userForm.$setUntouched(),e.visitor={},e.enableDownload=!1,e.$emit("hide")}function l(t){return function(o){d.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(r)}}function _(){e.loading=!1}d.form={},d.errors={},d.$onInit=function(){console.debug("UnmanagedController::onInit() VISITOR",e.visitor),e.status="unmanaged",r.all([s.removeItem(a).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(s.onStorageError),s.removeItem(i).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(s.onStorageError)]).then((()=>e.loading=!1))},d.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.customUpdate({id:e.visitor.interaction.id,note:d.form.note}).$promise.then((function(){delete d.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(m).then(u).catch(l("submit")).finally(_):(_(),l("submit"))},d.skip=function(){m(),u()}}function C(e,t,n,o,r,s,a){let i=null;function d(){let t={},n=!1;r.chatInteraction.get({id:e.visitor.interaction.id}).$promise.then((function(n){return t=n,r.chatInteraction.getMessages({intid:e.visitor.interaction.id}).$promise})).then((function(r){n=r.rows.length>1,t.closed?(e.visitor.interaction.closed=!0,s.updateStorage(a,e.visitor).then((n=>{e.visitor=n,"unmanaged"===t.disposition&&o.go("app.unmanaged",null,{location:"replace"})})).catch(s.onStorageError)):(t.UserId||n)&&(t.UserId&&(e.visitor.interaction.UserId=t.UserId),s.updateStorage(a,{...e.visitor,interactionStarted:!0}).then((t=>{e.visitor=t,o.go("app.chat",null,{location:"replace"})})).catch(s.onStorageError))})).catch((function(e){switch(e.status){case 403:o.go("app.closing",null,{location:"replace"});break;case 405:o.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}this.$onInit=function(){console.debug("WaitingController::onInit() VISITOR",e.visitor),e.status="waiting",e.visitor&&e.visitor.interaction&&e.visitor.interaction.id&&(i=n(d,3e3))},t.$on("$destroy",(function(){n.cancel(i)}))}function I(e,t){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.add(e)}function z(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}R.$inject=["$scope","$rootScope","$sce","api","$mdToast","$element","$http"],F.$inject=["$rootScope","$state","$sce","api","RemoteStorageService","STORAGE_VISITOR"],W.$inject=["$rootScope","$state","$mdToast","api","$q","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"],C.$inject=["$rootScope","$scope","$interval","$state","api","RemoteStorageService","STORAGE_VISITOR"];var J=new WeakSet,V=new WeakSet;class N{constructor(e,t,n){I(this,V),I(this,J),this.remoteAddress=new URL(t.settings.address).origin,this.location=t.settings.location,this.$q=n,this.$window=e}setItem(e,t){const n="setItem";return this.$q((o=>{z(this,J,U).call(this,n,e,(()=>{o()})),this.$window.parent.postMessage({action:n,key:e,value:t},this.remoteAddress)}))}getItem(e){const t="getItem";return this.$q((n=>{z(this,J,U).call(this,t,e,((e,t)=>{n(t)})),this.$window.parent.postMessage({action:t,key:e},this.remoteAddress)}))}removeItem(e){const t="removeItem";return this.$q((n=>{z(this,J,U).call(this,t,e,(()=>{n()})),this.$window.parent.postMessage({action:t,key:e},this.remoteAddress)}))}updateStorage(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.getItem(e).then((o=>{const r=z(this,V,q).call(this,o)||{};return n?delete r[this.location]:r[this.location]=t,this.setItem(e,r).then((()=>r[this.location]))}))}onStorageError(e){console.error("Storage Error",e)}}function U(e,t,n){const o=r=>{const s=`${e}Result`;if(r.origin===this.remoteAddress&&t===r.data.key&&s===r.data.action){const{action:e,item:s}=r.data;switch(console.debug(`[Key = ${t}] Action "${e}" event from parent`,r),e){case"setItemResult":n(t);break;case"getItemResult":n(t,s);break;case"removeItemResult":n(t);break;default:console.debug("Unsupported action",e)}this.$window.removeEventListener("message",o,!1)}};this.$window.addEventListener("message",o,!1)}function q(e){let t=e;if("string"==typeof t)try{t=JSON.parse(e)}catch(n){console.warn(`Could not parse "${e}"`,n),t=e}return t}function G(e){return function(t){return e.trustAsHtml(t)}}N.$inject=["$window","$rootScope","$q"],G.$inject=["$sce"],angular.module("motion-chat",["ngAnimate","ngAria","ngMessages","ngMaterial","ngResource","ngSanitize","ngCsv","ngEmbed","ui.router","LocalStorageModule","ngRateIt","flow"]).filter("toTrusted",G).constant("STORAGE_PREFIX","motion_chat").constant("STORAGE_VISITOR","visitor").constant("STORAGE_LAYOUT","layout").service("RemoteStorageService",N).directive("ngEnter",(function(){return function(e,t,n){t.bind("keydown keypress",(function(t){13===t.which&&(e.$apply((function(){e.$eval(n.ngEnter)})),t.preventDefault())}))}})).directive("ngPrint",(function(){return{link:function(e,t){t.on("click",(function(){document.getElementById("chatContent1")&&function(e,t){const n=document.createElement("div"),o=t.visitor,r=t.settings;let a;for(let e=0;e<t.messages.length;e++){const i=t.messages[e];let d="Sender: ";const u="Message: "+i.body,m="Sent At: "+s()(i.createdAt).format("YYYY-MM-DD HH:mm:ss");if(0!==e){switch(t.settings.agentIdentifier){case"website_alias":d+="out"===i.direction?i.UserId?r.agentAlias+i.UserId:"System":r.customerAlias||o.from||"Visitor"+i.ContactId;break;case"agent_alias":d+="out"===i.direction?i.UserId?i.User.alias||i.User.fullname:"System":r.customerAlias||o.from||"Visitor"+i.ContactId;break;case"agent_fullname":d+="out"===i.direction?i.UserId?i.User.fullname:"System":r.customerAlias||o.from||"Visitor"+i.ContactId;break;default:d+="out"===i.direction?i.UserId?(r.agentAlias||"Agent")+i.UserId:"System":r.customerAlias||o.from||"Visitor"+i.ContactId}n.appendChild(document.createTextNode(d)),n.appendChild(document.createElement("br")),n.appendChild(document.createTextNode(u)),n.appendChild(document.createElement("br")),n.appendChild(document.createTextNode(m)),n.appendChild(document.createElement("br")),n.appendChild(document.createElement("br"))}else a=i.createdAt}const i=window.open();i.document.write("<html><head><title>"+document.title+"</title>"),i.document.write("</head><body >"),i.document.write("<h3> Website: "+r.referer+"</h3>"),i.document.write("<h3> Start Time: "+s()(a).format("YYYY-MM-DD HH:mm:ss")+"</h3>"),i.document.write("<h3> Print Time: "+s()().format("YYYY-MM-DD HH:mm:ss")+"</h3>"),i.document.write(n.innerHTML),i.document.write("</body></html>"),i.document.close(),i.focus(),i.print(),i.close()}(0,e)}))},restrict:"A"}})).controller("ChatController",H).controller("ClosingController",k).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("IndexController",d).factory("api",j).config(g).run(L).controller("OfflineController",R).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("OnlineController",F).controller("UnmanagedController",W).controller("WaitingController",C)},"./node_modules/expose-loader/dist/runtime/getGlobalThis.js":(e,t,n)=>{"use strict";e.exports=function(){if("object"==typeof globalThis)return globalThis;var e;try{e=this||new Function("return this")()}catch(e){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==n.g)return n.g}return e}()},"./node_modules/json-form-data/src/jsonToFormData.js":function(e,t){var n,o;(o=this)||(o={}),void 0===(n=function(){return o.jsonToFormData=function(){function e(e){return"[object Array]"==={}.toString.call(e)}function t(t){return!(e(t)||"object"!=typeof t||!t||t instanceof Blob||t instanceof Date)}function n(){return"function"==typeof FormData}function o(){if(n())return new FormData}function r(n,o,s,a){var i=0;for(var d in n){if(n.hasOwnProperty(d)){var u=a||d,m=o.mapping(n[d]);if(a&&t(n)&&(u=a+"["+d+"]"),a&&e(n)&&(u=e(m)||o.showLeafArrayIndexes?a+"["+i+"]":a+"[]"),e(m)||t(m))r(m,o,s,u);else if(m instanceof FileList)for(var l=0;l<m.length;l++)s.append(u+"["+l+"]",m.item(l));else m instanceof Blob?s.append(u,m,m.name):m instanceof Date?s.append(u,m.toISOString()):(null===m&&o.includeNullValues||null!==m)&&void 0!==m&&s.append(u,m)}i++}return s}return function(e,t){if(t&&t.initialFormData){if("function"!=typeof t.initialFormData.append)throw"initialFormData must have an append function."}else if(!n())throw"This environment does not have global form data. options.initialFormData must be specified.";var s=[{initialFormData:o(),showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}},t||{}].reduce((function(e,t){return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}),{});return r(e,s,s.initialFormData)}}()}.apply(t,[]))||(e.exports=n)},"./node_modules/moment/locale/af.js":function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-dz.js":function(e,t,n){!function(e){"use strict";var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(o,r,s,a){var i=t(o),d=n[e][t(o)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,o)}},r=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-kw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ly.js":function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,r,s,a){var i=n(t),d=o[e][n(t)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,t)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ma.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-sa.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-tn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,n,s,a){var i=o(t),d=r[e][o(t)];return 2===i&&(d=d[n?0:1]),d.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/az.js":function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/be.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn-bd.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t?e<4?e:e+12:"ভোর"===t||"সকাল"===t?e:"দুপুর"===t?e>=3?e:e+12:"বিকাল"===t||"সন্ধ্যা"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bo.js":function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/br.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){return e>9?n(e%10):e}var o=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],r=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,s=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:s,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,n){return e<12?"a.m.":"g.m."}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bs.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cs.js":function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),o=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function s(e){return e>1&&e<5&&1!=~~(e/10)}function a(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"pár sekund":"pár sekundami";case"ss":return t||o?r+(s(e)?"sekundy":"sekund"):r+"sekundami";case"m":return t?"minuta":o?"minutu":"minutou";case"mm":return t||o?r+(s(e)?"minuty":"minut"):r+"minutami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?r+(s(e)?"hodiny":"hodin"):r+"hodinami";case"d":return t||o?"den":"dnem";case"dd":return t||o?r+(s(e)?"dny":"dní"):r+"dny";case"M":return t||o?"měsíc":"měsícem";case"MM":return t||o?r+(s(e)?"měsíce":"měsíců"):r+"měsíci";case"y":return t||o?"rok":"rokem";case"yy":return t||o?r+(s(e)?"roky":"let"):r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cy.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/da.js":function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-at.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-ch.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/dv.js":function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/el.js":function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,o=this._calendarEl[e],r=t&&t.hours();return n=o,("undefined"!=typeof Function&&n instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(o=o.apply(t)),o.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-au.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-gb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ie.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-il.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-in.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-nz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-sg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-do.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-mx.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-us.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/et.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?r[n][2]?r[n][2]:r[n][1]:o?r[n][0]:r[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eu.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fa.js":function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fi.js":function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function o(e,o,r,s){var a="";switch(r){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":a=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":a=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":a=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":a=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":a=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":a=s?"vuoden":"vuotta"}return function(e,o){return e<10?o?n[e]:t[e]:e}(e,s)+" "+a}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fil.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr.js":function(e,t,n){!function(e){"use strict";var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fy.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ga.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gd.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gl.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-deva.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-latn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gu.js":function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/he.js":function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hi.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},o=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:o,longMonthsParse:o,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hr.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hu.js":function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,o){var r=e;switch(n){case"s":return o||t?"néhány másodperc":"néhány másodperce";case"ss":return r+(o||t)?" másodperc":" másodperce";case"m":return"egy"+(o||t?" perc":" perce");case"mm":return r+(o||t?" perc":" perce");case"h":return"egy"+(o||t?" óra":" órája");case"hh":return r+(o||t?" óra":" órája");case"d":return"egy"+(o||t?" nap":" napja");case"dd":return r+(o||t?" nap":" napja");case"M":return"egy"+(o||t?" hónap":" hónapja");case"MM":return r+(o||t?" hónap":" hónapja");case"y":return"egy"+(o||t?" év":" éve");case"yy":return r+(o||t?" év":" éve")}return""}function o(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return o.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return o.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hy-am.js":function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/id.js":function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/is.js":function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,o,r){var s=e+" ";switch(o){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?s+(n||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?s+(n||r?"mínútur":"mínútum"):n?s+"mínúta":s+"mínútu";case"hh":return t(e)?s+(n||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return t(e)?n?s+"dagar":s+(r?"daga":"dögum"):n?s+"dagur":s+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return t(e)?n?s+"mánuðir":s+(r?"mánuði":"mánuðum"):n?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return t(e)?s+(n||r?"ár":"árum"):s+(n||r?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ja.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/jv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ka.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,n){return"ი"===n?t+"ში":t+n+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kk.js":function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/km.js":function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kn.js":function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ko.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ku.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:o,monthsShort:o,weekdays:"یه\200cكشه\200cممه\200c_دووشه\200cممه\200c_سێشه\200cممه\200c_چوارشه\200cممه\200c_پێنجشه\200cممه\200c_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysShort:"یه\200cكشه\200cم_دووشه\200cم_سێشه\200cم_چوارشه\200cم_پێنجشه\200cم_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره\200c|به\200cیانی/,isPM:function(e){return/ئێواره\200c/.test(e)},meridiem:function(e,t,n){return e<12?"به\200cیانی":"ئێواره\200c"},calendar:{sameDay:"[ئه\200cمرۆ كاتژمێر] LT",nextDay:"[به\200cیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له\200c %s",past:"%s",s:"چه\200cند چركه\200cیه\200cك",ss:"چركه\200c %d",m:"یه\200cك خوله\200cك",mm:"%d خوله\200cك",h:"یه\200cك كاتژمێر",hh:"%d كاتژمێر",d:"یه\200cك ڕۆژ",dd:"%d ڕۆژ",M:"یه\200cك مانگ",MM:"%d مانگ",y:"یه\200cك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ky.js":function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lb.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?r[n][0]:r[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lt.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,o){return t?r(n)[0]:o?r(n)[1]:r(n)[2]}function o(e){return e%10==0||e>10&&e<20}function r(e){return t[e].split("_")}function s(e,t,s,a){var i=e+" ";return 1===e?i+n(0,t,s[0],a):t?i+(o(e)?r(s)[1]:r(s)[0]):a?i+r(s)[1]:i+(o(e)?r(s)[1]:r(s)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,o){return t?"kelios sekundės":o?"kelių sekundžių":"kelias sekundes"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lv.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function o(e,o,r){return e+" "+n(t[r],e,o)}function r(e,o,r){return n(t[r],e,o)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:o,m:r,mm:o,h:r,hh:o,d:r,dd:o,M:r,MM:o,y:r,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/me.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ml.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mr.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function o(e,t,n,o){var r="";if(t)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,n){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms-my.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/my.js":function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ne.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl-be.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/oc-lnc.js":function(e,t,n){!function(e){"use strict";e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pa-in.js":function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pl.js":function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),o=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,t,n){var o=e+" ";switch(n){case"ss":return o+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return o+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return o+(r(e)?"godziny":"godzin");case"ww":return o+(r(e)?"tygodnie":"tygodni");case"MM":return o+(r(e)?"miesiące":"miesięcy");case"yy":return o+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,o){return e?/D MMMM/.test(o)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:s,M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt-br.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ro.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=" ";return(e%100>=20||e>=100&&e%100==0)&&(o=" de "),e+o+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,w:"o săptămână",ww:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ru.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"минута":"минуту":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,w:"неделя",ww:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sd.js":function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/se.js":function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/si.js":function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්\200dරේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්\200dරහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්\200dරහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්\200dර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sk.js":function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function o(e){return e>1&&e<5}function r(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(o(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(o(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(o(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(o(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(o(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(o(e)?"roky":"rokov"):s+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===e?t?"sekundo":"sekundi":2===e?t||o?"sekundi":"sekundah":e<5?t||o?"sekunde":"sekundah":"sekund");case"m":return t?"ena minuta":"eno minuto";case"mm":return r+(1===e?t?"minuta":"minuto":2===e?t||o?"minuti":"minutama":e<5?t||o?"minute":"minutami":t||o?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return r+(1===e?t?"ura":"uro":2===e?t||o?"uri":"urama":e<5?t||o?"ure":"urami":t||o?"ur":"urami");case"d":return t||o?"en dan":"enim dnem";case"dd":return r+(1===e?t||o?"dan":"dnem":2===e?t||o?"dni":"dnevoma":t||o?"dni":"dnevi");case"M":return t||o?"en mesec":"enim mesecem";case"MM":return r+(1===e?t||o?"mesec":"mesecem":2===e?t||o?"meseca":"mesecema":e<5?t||o?"mesece":"meseci":t||o?"mesecev":"meseci");case"y":return t||o?"eno leto":"enim letom";case"yy":return r+(1===e?t||o?"leto":"letom":2===e?t||o?"leti":"letoma":e<5?t||o?"leta":"leti":t||o?"let":"leti")}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sq.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr-cyrl.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ss.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ta.js":function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/te.js":function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tet.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tg.js":function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/th.js":function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tk.js":function(e,t,n){!function(e){"use strict";var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tl-ph.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tlh.js":function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,o,r){var s=function(e){var n=Math.floor(e%1e3/100),o=Math.floor(e%100/10),r=e%10,s="";return n>0&&(s+=t[n]+"vatlh"),o>0&&(s+=(""!==s?" ":"")+t[o]+"maH"),r>0&&(s+=(""!==s?" ":"")+t[r]),""===s?"pagh":s}(e);switch(o){case"ss":return s+" lup";case"mm":return s+" tup";case"hh":return s+" rep";case"dd":return s+" jaj";case"MM":return s+" jar";case"yy":return s+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tr.js":function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){return e<12?n?"öö":"ÖÖ":n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return o||t?r[n][0]:r[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ug-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"يېرىم كېچە":o<900?"سەھەر":o<1130?"چۈشتىن بۇرۇن":o<1230?"چۈش":o<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uk.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(o=+e,r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ur.js":function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/vi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/x-pseudo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/yo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-hk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1200?"上午":1200===o?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-mo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-tw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":(e,t,n)=>{var o={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn-bd":"./node_modules/moment/locale/bn-bd.js","./bn-bd.js":"./node_modules/moment/locale/bn-bd.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-in":"./node_modules/moment/locale/en-in.js","./en-in.js":"./node_modules/moment/locale/en-in.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./en-sg":"./node_modules/moment/locale/en-sg.js","./en-sg.js":"./node_modules/moment/locale/en-sg.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-mx":"./node_modules/moment/locale/es-mx.js","./es-mx.js":"./node_modules/moment/locale/es-mx.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fil":"./node_modules/moment/locale/fil.js","./fil.js":"./node_modules/moment/locale/fil.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-deva":"./node_modules/moment/locale/gom-deva.js","./gom-deva.js":"./node_modules/moment/locale/gom-deva.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./oc-lnc":"./node_modules/moment/locale/oc-lnc.js","./oc-lnc.js":"./node_modules/moment/locale/oc-lnc.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tk":"./node_modules/moment/locale/tk.js","./tk.js":"./node_modules/moment/locale/tk.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-mo":"./node_modules/moment/locale/zh-mo.js","./zh-mo.js":"./node_modules/moment/locale/zh-mo.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=s,e.exports=r,r.id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},"./node_modules/ng-csv/build/ng-csv.min.js":(e,t)=>{var n;n=window,document,angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(e){angular.isDefined(e.urlSanitizationWhitelist)?e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),e.exports===t&&(e.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(e){var t="\r\n",n={"\\t":"\t","\\b":"\b","\\v":"\v","\\f":"\f","\\r":"\r"};this.stringifyField=function(e,t){return"locale"===t.decimalSep&&this.isFloat(e)?e.toLocaleString():"."!==t.decimalSep&&this.isFloat(e)?e.toString().replace(".",t.decimalSep):"string"==typeof e?(e=e.replace(/"/g,'""'),(t.quoteStrings||e.indexOf(",")>-1||e.indexOf("\n")>-1||e.indexOf("\r")>-1)&&(e=t.txtDelim+e+t.txtDelim),e):"boolean"==typeof e?e?"TRUE":"FALSE":e},this.isFloat=function(e){return+e===e&&(!isFinite(e)||Boolean(e%1))},this.stringify=function(n,o){var r=e.defer(),s=this,a="",i="",d=e.when(n).then((function(e){var n,d;angular.isDefined(o.header)&&o.header&&(n=[],angular.forEach(o.header,(function(e){this.push(s.stringifyField(e,o))}),n),d=n.join(o.fieldSep?o.fieldSep:","),i+=d+t);var u,m,l=[];angular.isArray(e)?l=e:angular.isFunction(e)&&(l=e()),angular.isDefined(o.label)&&o.label&&"boolean"==typeof o.label&&(u=[],angular.forEach(l[0],(function(e,t){this.push(s.stringifyField(t,o))}),u),m=u.join(o.fieldSep?o.fieldSep:","),i+=m+t),angular.forEach(l,(function(e,n){var r,a,d=angular.copy(l[n]);a=[];var u=o.columnOrder?o.columnOrder:d;angular.forEach(u,(function(e){var t=o.columnOrder?d[e]:e;this.push(s.stringifyField(t,o))}),a),r=a.join(o.fieldSep?o.fieldSep:","),i+=n<l.length?r+t:r})),o.addByteOrderMarker&&(a+="\ufeff"),a+=i,r.resolve(a)}));return"function"==typeof d.catch&&d.catch((function(e){r.reject(e)})),r.promise},this.isSpecialChar=function(e){return void 0!==n[e]},this.getSpecialChar=function(e){return n[e]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(e,t,o,r,s){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(e,n,r){e.csv="",angular.isDefined(e.lazyLoad)&&"true"==e.lazyLoad||angular.isArray(e.data)&&e.$watch("data",(function(){e.buildCSV()}),!0),e.getFilename=function(){return e.filename||"download.csv"},e.buildCSV=function(){var s=t.defer();return n.addClass(r.ngCsvLoadingClass||"ng-csv-loading"),o.stringify(e.data(),function(){var t={txtDelim:e.txtDelim?e.txtDelim:'"',decimalSep:e.decimalSep?e.decimalSep:".",quoteStrings:e.quoteStrings,addByteOrderMarker:e.addByteOrderMarker};return angular.isDefined(r.csvHeader)&&(t.header=e.$eval(e.header)),angular.isDefined(r.csvColumnOrder)&&(t.columnOrder=e.$eval(e.columnOrder)),angular.isDefined(r.csvLabel)&&(t.label=e.$eval(e.label)),t.fieldSep=e.fieldSep?e.fieldSep:",",t.fieldSep=o.isSpecialChar(t.fieldSep)?o.getSpecialChar(t.fieldSep):t.fieldSep,t}()).then((function(t){e.csv=t,n.removeClass(r.ngCsvLoadingClass||"ng-csv-loading"),s.resolve(t)})),e.$apply(),s.promise}}],link:function(e,t){t.bind("click",(function(){e.buildCSV().then((function(){!function(){var t=e.charset||"utf-8",o=new Blob([e.csv],{type:"text/csv;charset="+t+";"});if(n.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(o,e.getFilename());else{var a=angular.element('<div data-tap-disabled="true"><a></a></div>'),i=angular.element(a.children()[0]);i.attr("href",n.URL.createObjectURL(o)),i.attr("download",e.getFilename()),i.attr("target","_blank"),r.find("body").append(a),s((function(){i[0].click(),i.remove()}),null)}}()})),e.$apply()}))}}}])},"./src/js/chat/chat.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/dc49a9ba939f8c099868.html"},"./src/js/closing/closing.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/00860aee362cdeeb1080.html"},"./src/js/offline/offline.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/9962474df74f9405ac72.html"},"./src/js/online/online.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/caf0e553108b226443aa.html"},"./src/js/unmanaged/unmanaged.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/3f18dac5f545add792db.html"},"./src/js/waiting/waiting.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/6043a16afdb829ba5934.html"}},e=>{var t=t=>e(e.s=t);e.O(0,["vendor-index","vendor-angular-76f2ed34","vendor-angular-58d021f3","vendor-ng-embed","vendor-moment","vendor-jquery","vendor-jquery.textcomplete","vendor-emojionearea","vendor-emojione","vendor-angular-sanitize","vendor-angular-resource","vendor-angular-messages","vendor-angular-material","vendor-angular-local-storage","vendor-angular-animate","vendor-urlMatcher","vendor-transition","vendor-stateService","vendor-stateDirectives","vendor-flow"],(()=>(t("./node_modules/jquery/dist/jquery.js"),t("./node_modules/angular/index-exposed.js"),t("./node_modules/moment/moment.js"),t("./node_modules/@flowjs/flow.js/src/flow.js"),t("./node_modules/emojione/lib/js/emojione.js"),t("./src/js/index.module.js")))),e.O()}]);
-//# sourceMappingURL=chat.js.map
\ No newline at end of file
diff --git a/snippet/3.5.0/scripts/chat.js.map b/snippet/3.5.0/scripts/chat.js.map
deleted file mode 100644 (file)
index 1f082e3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"scripts/chat.js","mappings":";iMAOAA,QAAQC,OAAO,gBAAiB,IAC/BC,SAAS,eAAe,WACvB,aAMAC,KAAKC,SAAW,GAQhBD,KAAKE,QAAU,SAAUC,GACvB,OAAO,IAAIC,EAAKD,IASlBH,KAAKK,OAAS,GASdL,KAAKM,GAAK,SAAUC,EAAOC,GACzBR,KAAKK,OAAOI,KAAK,CAACF,EAAOC,KAG3BR,KAAKU,KAAO,WACV,IAAIC,EAAKX,KAAKE,QACVD,EAAWD,KAAKC,SAChBI,EAASL,KAAKK,OAClB,MAAO,CACL,OAAU,SAASO,GAEjB,IAAIC,EAAOF,EAAGd,QAAQiB,OAAO,GAAIb,EAAUW,IAI3C,OAHAf,QAAQkB,QAAQV,GAAQ,SAAUE,GAChCM,EAAKP,GAAGC,EAAM,GAAIA,EAAM,OAEnBM,QAKfhB,QAAQC,OAAO,YAAa,CAAC,kBAC1BkB,WAAW,WAAY,CAAC,SAAU,SAAU,SAAU,cACvD,SAAUC,EAAQC,EAAQC,EAAQC,GAEhC,IAAIjB,EAAUN,QAAQiB,OAAO,GAAIG,EAAOI,MAAMH,EAAOI,WAGjDT,EAAQI,EAAOI,MAAMH,EAAOK,aAAeH,EAAYI,OAAOrB,GAE9DsB,EAAkB,SAASC,GAC7B,IAAIC,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtCL,EAAKM,QACL,IAAI1B,EAAQU,EAAOiB,WAAWC,MAAMlB,EAAQ,CAAC,SAAWS,EAAWb,GAAMuB,OAAOT,IAMhF,GALI,CACF,SAAW,EAAG,eAAiB,EAAG,YAAe,EAAG,UAAa,EAAG,SAAY,GAChFD,IACAT,EAAOoB,cAEL9B,EAAM+B,iBACR,OAAO,GAIXzB,EAAKP,GAAG,WAAYmB,GACpBR,EAAOsB,IAAI,YAAY,WACnB1B,EAAK2B,IAAI,WAAYf,MAGzBR,EAAOwB,MAAQ5B,EAEXK,EAAOwB,eAAe,cACxBvB,EAAOD,EAAOyB,UAAUC,OAAO3B,EAAQJ,GACvCI,EAAOsB,IAAI,YAAY,WACrBpB,EAAOD,EAAOyB,UAAUC,OAAO3B,UAIpC4B,UAAU,WAAY,CAAC,WACtB,MAAO,CACLC,OAAO,EACP9B,WAAY,eAGlBnB,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,SAAY,KACZ,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAIC,EAAcD,EAAMN,eAAe,iBACnCQ,EAAeF,EAAMN,eAAe,kBACpCS,EAAaH,EAAMN,eAAe,cAAgBI,EAAMzB,MAAM2B,EAAMI,WACxEN,EAAML,MAAMY,aAAaN,EAASE,EAAaC,EAAcC,QAInEtD,QAAQC,OAAO,kBAAmB,CAAC,cAKhC+C,UAAU,mBAAmB,WAC5B,MAAO,CACL,OAAS,EACT,KAAQ,SAASC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,iBAAiB,SAAU/C,GACtCA,EAAMgD,yBASbV,UAAU,gBAAiB,CAAC,WAAY,SAASW,GAChD,MAAO,CACL,OAAS,EACT,KAAQ,SAASV,EAAOC,EAASC,GAC/B,IAAIS,EACAC,GAAQ,EACZX,EAAQO,KAAK,YAAY,SAAU/C,GAmBnC,IAAoBoD,EACdC,EACAC,EADAD,GAAW,EACXC,GAFcF,EAlBFpD,GAoBasD,cAAgBF,EAAUG,cAAcD,aACrEhE,QAAQkB,QAAQ8C,GAAgBA,EAAaE,OAAO,SAASC,GAC/C,UAARA,IACFJ,GAAW,MAGRA,IAvBFF,IACHZ,EAAMmB,OAAOjB,EAAMkB,eACnBR,GAAQ,GAEVF,EAASW,OAAOV,GAChBlD,EAAMgD,qBAERR,EAAQO,KAAK,kBAAkB,SAAU/C,GACvCiD,EAASW,OAAOV,GAChBA,EAAUD,GAAS,WACjBV,EAAMzB,MAAM2B,EAAMoB,eAClBX,EAAU,KACVC,GAAQ,IACP,aAgBb7D,QAAQC,OAAO,YAAa,CAAC,cAC5B+C,UAAU,YAAY,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAY/B,SAASqB,IACPvB,EAAML,MAAM4B,WAAWtB,GAZrBC,EAAMsB,gBACRxB,EAAMyB,OAAOvB,EAAMsB,iBAAiB,SAAUE,GACxCA,EACFH,IAYJvB,EAAML,MAAMgC,aAAa1B,MANzBsB,SAYP,SAAUxE,GAAU,aACnB,IAAIC,EAASD,EAAQC,OAAO,cAAe,CAAC,cAgB5CD,EAAQkB,QAfK,CACX2D,YAAa,CAAC,QAAS,YACvBC,aAAc,CAAC,SACfC,UAAW,CAAC,QAAS,UACrBC,WAAY,CAAC,SAAU,UACvBC,eAAgB,CAAC,SAAU,UAC3BC,UAAW,CAAC,SACZC,YAAa,CAAC,SACdC,UAAW,CAAC,QAAS,YACrBC,YAAa,GACbC,SAAU,GACVC,SAAU,GACVC,MAAO,CAAC,WAAY,WAGE,SAAUC,EAAW5D,GAC3C,IA4B6B6D,EA5BzBC,EAAO,SA4BkBD,EA5Ba7D,GA6B5B+D,OAAO,GAAGC,cAAgBH,EAAOzD,MAAM,IA5BzC,mBAAR0D,IACFA,EAAO,qBAET1F,EAAO+C,UAAU2C,EAAM,CAAC,WACtB,MAAO,CACLG,QAAS,YACT3E,WAAY,CAAC,SAAU,SAAU,SAAUC,EAAQC,GACjDD,EAAOsB,IAAI,SAAWb,GAAW,WAC/B,IAAIkE,EAAWhE,MAAMC,UAAUC,MAAMC,KAAKC,WACtCzB,EAAQqF,EAAS3D,QAErB,GAAIhB,EAAOwB,QAAUmD,EAAS3D,QAA9B,CAGA,IAAIN,EAAO,GACX9B,EAAQkB,QAAQuE,GAAW,SAASd,EAAOqB,GACzClE,EAAK6C,GAASoB,EAASC,OAEgB,IAArC5E,EAAOI,MAAMH,EAAOsE,GAAO7D,IAC7BpB,EAAMgD,8BAtCnB,CAiDC1D,SAEFA,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAI8C,EAAO9C,EAAM+C,QACjBjD,EAAMyB,OAAOuB,GAAM,SAAUA,GAC3B,GAAKA,EAAL,CAGA,IAAIE,EAAa,IAAIC,WACrBD,EAAWE,cAAcJ,EAAKA,MAC9BE,EAAWG,OAAS,SAAU5F,GAC5BuC,EAAMmB,QAAO,WACXjB,EAAMoD,KAAK,MAAO7F,EAAM8F,OAAOC,qBAO3CzG,QAAQC,OAAO,iBAAkB,CAAC,cACjC+C,UAAU,gBAAiB,CAAC,WAC3B,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,GACfA,EAAMyD,UAAYzD,EAAML,MAAM+D,WAIpC3G,QAAQC,OAAO,OAAQ,CAAC,gBAAiB,YAAa,cAAe,WACnE,YAAa,iBAAkB,WAAY,yHC9JlC2G,4PAkKX,SAASC,EAAmBC,EAAUC,EAAaC,EAAcC,EAAOC,GACpE,IAAIC,GAAkB,IAAAC,OAAM,yBACxBC,GAAe,IAAAD,OAAM,sBACzB,MAAO,CACHE,SAAU,MACVC,UAAW,IACXC,QAAS,SAAUC,GACf,IAAIC,EAAUD,EAASE,OAEvB,OADAF,EAASG,QACF,SAAU3E,EAAO4E,GACpB,IAAIC,EAAOD,EAASC,KAAK,WACzB,IAAKA,EAGD,OAFAD,EAASF,KAAKD,QACdZ,EAASe,EAASE,WAAlBjB,CAA8B7D,GAGlC,IAAI+E,EAAMF,EAAKG,MAAQ,CAAEC,SAAU,GAAIC,YAAa,EAAAC,MAChDC,EAAaL,EAAIM,MAAQ,IAAI,EAAAC,eAAeP,EAAIM,MACpDT,EAASF,KAAKK,EAAIG,YAAYN,EAAUQ,IAAeX,GACvD,EAAAc,MAAA,gBAAsBV,EAAKW,QAASZ,EAASF,QAC7C,IAAIe,EAAO5B,EAASe,EAASE,YACzB5G,EAAa6G,EAAI7G,WACjBwH,EAAexB,EAAgBa,GAC/BY,EAAYvB,EAAaW,GACzBa,EAASR,IAAc,OAAUA,GAErC,GADApF,EAAM2F,GAAaC,EACf1H,EAAY,CACZ,IAAI2H,EAAsB/B,EAAY5F,GAAY,IAAAF,QAAO,GAAI4H,EAAQ,CAAEzH,OAAQ6B,EAAO4E,SAAUA,KAC5Fc,IACA1F,EAAM0F,GAAgBG,EACtB7F,EAAM0F,GAAcC,GAAaC,GAMrChB,EAASC,KAAK,0BAA2BgB,GACzCjB,EAASkB,WAAWjB,KAAK,0BAA2BgB,GACpDE,EAA4B9B,EAAIF,EAAc8B,EAAoB7F,EAAO+E,GAG7E,IAAI,IAAAiB,UAASjB,EAAIkB,WACb,IAAIC,GAAY,IAAAC,aAAYpB,EAAIkB,WAC5BG,EAAc,IAAIC,OAAO,eAAiBH,EAAY,IAAK,KAO3DI,EAAoBtG,EAAMyB,QAND,WACzB,IAAI8E,EAAc,GAAGvH,MAChBC,KAAK2F,EAAS,GAAGkB,UACjBU,QAAO,SAAUC,GAAM,OAAOA,GAAMA,EAAGC,SAAWN,EAAYO,KAAKF,EAAGC,YAC3E,OAAOH,GAAe,aAAgBA,GAAa1B,KAAK,IAAME,EAAIkB,UAAY,iBAErB,SAAUW,GAC9DA,IAELb,EAA4B9B,EAAIF,EAAc6C,EAAc5G,EAAO+E,GACnEuB,QAGRb,EAAKzF,MAzNrB2D,EAAS,CACL,QACA,WACA,gBACA,eACA,KACA,SAAwBK,EAAO6C,EAAUC,EAAeC,EAAc9C,GAwBlE,IAAI+C,EAAW,CACXhC,KAAM,CAAEC,SAAU,CAAEgC,SAAUjD,EAAMkD,WAAWC,qBAC/C3B,QAAS,IAETzF,EAAY,CACZqH,MAAO,EACP/C,SAAU,MACVgD,UAAU,EACV/C,SAAU,IACVgD,WAAY,UACZ/C,QAAS,SAAUC,EAAU+C,EAAQC,GACjC,OAAO,SAAUxH,EAAO4E,EAAU1E,GAC9B,IACIuH,EAAYC,EAAWC,EAAcC,EADrCC,EAAY3H,EAAc,QAAK,GAAI4H,EAAgB5H,EAAkB,WAAG6H,EAjCzE,SAAU9H,EAASsD,EAAQyE,GAC1B,mBAAwB,EACxBnB,EAASjG,MAAMX,EAAS,KAAMsD,GAAQ0E,KAAKD,GAG3CnB,EAASjG,MAAMX,EAAS,KAAMsD,EAAQyE,IA4BkCD,EAzBzE,SAAU9H,EAAS+H,GAClB,mBAAwB,EACxBnB,EAASqB,MAAMjI,GAASgI,KAAKD,GAG7BnB,EAASqB,MAAMjI,EAAS+H,IAoB0EG,EAAYvD,EAASwD,cAAc,YAAcpB,EAAUtE,EAAOqE,EAAa7G,EAAc,QAAKA,EAAY,MAAK,GAAjD6G,CAAqD/G,IAAU,WAEnOqI,EAAe,CACfC,MAAO,MACPC,GAAIxI,EAAUqH,QACd1E,KAAMA,EACN8F,IAAKL,EAAU3C,QAAQgD,IAAML,EAAU3C,QAAQgD,IAAM,IAAM9F,EAAOA,EAClE+F,OAAQ,KACRC,cAWJ,SAA+BD,KACvBA,GAAYA,aAAkB,QAEjBb,IAAYa,IAE7B,EAAAlD,MAAA,yBAA+B8C,EAAcI,GAAUA,EAAOxD,UAAYwD,EAAOxD,SAASgC,UAC1FW,EAAaa,EACbE,EAAWF,MAjBX,sBAEI,IAAIG,GAAsB,IAAAzE,OAAM,yBAAN,CAAgCgE,GAGtDU,GAAgB,IAAA1E,OAAM,0BAAN,CAAiCgE,GACrD,OAAOS,GAAuBC,IAGtC,EAAAtD,MAAA,iBAAuB,UAAW8C,GAUlCzD,EAASC,KAAK,UAAW,CAAEW,QAAS6C,IACpCM,IACA,IAAIG,EAAa9E,EAAM+E,eAAeV,GA2BtC,SAASM,EAAWF,GAChB,IAAIO,EAAWhJ,EAAMiJ,OACjBC,EAAYjF,EAAGkF,QAASC,EAAYnF,EAAGkF,QACvCE,EAAc,CACdrE,KAAMyD,EACNjD,QAAS6C,GAETiB,EAAc,CACdC,WAAYL,EAAUvI,QACtB6I,WAAYJ,EAAUzI,QACtB8I,YAAaL,GAcjBJ,EAASU,MAAM,sBAAuBhH,GACtC,IAAIiH,EAASnC,EAAYwB,GAAU,SAAUY,GACzCA,EAAM/E,KAAK,cAAeyE,GAC1BM,EAAM/E,KAAK,UAAWwE,GACtBtB,EAAe6B,EAAOhF,GAAU,WAC5BsE,EAAUW,UACNlC,GACAA,EAAa+B,MAAM,gCAClB,IAAAI,WAAUhC,KAAmBA,GAAkB9H,EAAMzB,MAAMuJ,KAC5DhB,EAAc8C,MAvD9B,WAWI,GAVInC,IACA,EAAAlC,MAAA,iBAAuB,yBAA0BkC,EAAW5C,KAAK,YACjE4C,EAAWsC,SACXtC,EAAa,MAEbE,IACA,EAAApC,MAAA,iBAAuB,mBAAoB8C,GAC3CV,EAAaqC,WACbrC,EAAe,MAEfD,EAAW,CACX,IAAIuC,EAAcvC,EAAU7C,KAAK,eACjC,EAAAU,MAAA,iBAAuB,cAAe0E,GACtClC,EAAeL,GAAW,WACtBuC,EAAYR,YAAYI,UACxBpC,EAAa,QAEjBA,EAAaC,EACbA,EAAY,MAuCZwC,MAEJxC,EAAYiC,GACZhC,EAAeqB,GAWFU,MAAM,qBAAsBjB,GAAUb,GACnDD,EAAapJ,MAAMsJ,GA7EvB7H,EAAMP,IAAI,YAAY,WAClB,EAAA8F,MAAA,iBAAuB,2BAA4B8C,GACnDS,UAgFhB,OAAO/I,IAGf6D,EAAmBuG,QAAU,CAAC,WAAY,cAAe,eAAgB,QAAS,MAiElF,IAAIC,EAAuE,mBAA7C,YAAe,aAAwB,UAEjEC,EAAe,EAEnB,SAAStE,EAA4B9B,EAAIF,EAAc8B,EAAoB1H,EAAQ4G,KAE3E,IAAAuF,YAAWzE,EAAmB0E,WAC3BxF,EAAIE,SAASgB,WAAalB,EAAIE,SAASuF,oBAAsBJ,GAChEvE,EAAmB0E,UAEvB,IAAIE,GAAY,IAAAC,MAAK3F,EAAIM,MAAMsF,MAAMC,KACjCC,EAAc,CAAErK,KAAMqF,GAE1B,IAAI,IAAAyE,YAAWzE,EAAmBiF,mBAAoB,CAClD,IACIC,EADiB,IAAI,EAAAzF,eAAeP,EAAIM,MACH2F,cAAc,gBAAgBnG,KAyBvE1G,EAAOsB,IAAI,WAAYsE,EAAakH,UAAU,IAvB1B,SAAUC,GAG1B,GAAIA,IAAiBH,IAAsE,IAA/CG,EAAaC,UAAUC,QAAQX,GAA3E,CAEA,IAAIY,EAAWH,EAAaI,OAAO,MAC/BC,EAAaL,EAAaI,OAAO,QACjCE,EAAgB,SAAUC,GAAQ,OAAOA,EAAKC,aAC9CC,EAAWT,EAAaU,YAAY,MAAMC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAC7EC,EAAad,EAAaU,YAAY,QAAQC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAEjFE,EAAkBN,EAASnF,QAAO,SAAU0F,GAC5C,IAAIC,EAAMH,EAAWZ,QAAQc,GAC7B,OAAgB,IAATC,IAAeH,EAAWG,GAAKC,KAAKC,OAAOhB,EAASa,EAAM3D,IAAKgD,EAAWW,EAAM3D,QAG3F,GAAI0D,EAAgBK,OAAQ,CACxB,IAAIC,EAAgBN,EAAgBJ,KAAI,SAAUW,GAAK,OAAOA,EAAEjE,MAE5DkE,GAAY,IAAAjG,QAAO6E,GAAU,SAAUnK,EAAK6B,GAAO,OAAuC,IAAhCwJ,EAAcnB,QAAQrI,MACpF8C,EAAmBiF,kBAAkB2B,EAAWvB,OAGSL,IAGrE,IAAI,IAAAP,YAAWzE,EAAmB6G,WAAY,CAC1C,IAAIC,EAAOtC,IACPuC,EAAc,gBAEdC,EAAqB,SAAUC,GAC/B,QAASA,IAAWA,EAAMF,KAA6C,IAA7BE,EAAMF,GAAaD,IAAmBE,EAAmBC,EAAMC,oBAYzGC,EAAW,CAAE7B,QAASV,EAAU/H,MACpCvE,EAAOsB,IAAI,WAAYsE,EAAakJ,SAASD,GAV3B,SAAUF,GACxB,IAAInM,EACAuM,EAAOJ,EAAMF,GAAeE,EAAMF,IAAgB,GAKtD,OAJKC,EAAmBC,KACpBnM,EAAUsD,EAAGkJ,KAAKtH,EAAmB6G,UAAUI,KACvC7E,MAAK,SAAU/G,GAAO,OAAQgM,EAAIP,IAAgB,IAARzL,KAE/CP,IAGyDkK,KAG5E,YAAe,mBAAmB9K,UAAU,SAAU4D,GACtD,YAAe,mBAAmB5D,UAAU,SAAU6D,sWC9ZlDwJ,EAAiC,WACjC,SAASA,IACL,IAAIC,EAAQnQ,KACGA,KAAKoQ,SAAWvQ,EAAQ,GAAR,cAAwB,EACxCG,KAAKU,KAAO,CACvB,QACA,iBACA,YACA,SAAU2P,EAAOC,EAAgBC,GAI7B,OAHAJ,EAAMK,iBAAmBD,EAAUE,KAAOF,EAAUE,IAAI,qBAAuBF,EAAUG,IAAI,oBAC7FP,EAAME,MAAQA,EACdF,EAAMG,eAAiBA,EAChBH,IAyJnB,OApJAD,EAAgBrO,UAAU8O,eAAiB,SAAUnM,GACjDxE,KAAKoQ,SAAW5L,GAepB0L,EAAgBrO,UAAU+O,WAAa,SAAUrF,EAAQ6C,EAAQyC,GAC7D,IACIC,EAAa,SAAUxK,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGC,SAAUD,OAC3GE,EAAc,SAAU5K,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGjI,UAAWiI,OACjH,OAAO,IAAApE,WAAUrB,EAAO0F,UAClBH,EAAW9Q,KAAKmR,WAAW5F,EAAO0F,SAAU7C,KAC5C,IAAAxB,WAAUrB,EAAO6F,aACbN,EAAW9Q,KAAKqR,QAAQ9F,EAAO6F,YAAahD,KAC5C,IAAAxB,WAAUrB,EAAO+F,kBACbR,EAAW9Q,KAAKuR,aAAahG,EAAO+F,iBAAkBlD,EAAQyC,KAC9D,IAAAjE,WAAUrB,EAAOxC,WACbmI,EAAY3F,EAAOxC,YACnB,IAAA6D,WAAUrB,EAAO+B,mBACb4D,EAAYlR,KAAKwR,sBAAsBjG,EAAO+B,kBAAmBc,EAAQyC,IACzEC,EAbA,wBAwB1BZ,EAAgBrO,UAAUsP,WAAa,SAAUF,EAAU7C,GACvD,OAAO,IAAAhB,YAAW6D,GAAYA,EAAS7C,GAAU6C,GAWrDf,EAAgBrO,UAAUwP,QAAU,SAAUI,EAAKrD,GAG/C,OAFI,IAAAhB,YAAWqE,KACXA,EAAMA,EAAIrD,IACH,MAAPqD,EACO,KACPzR,KAAKoQ,SACEpQ,KAAKqQ,MACPK,IAAIe,EAAK,CAAEC,MAAO1R,KAAKsQ,eAAgBqB,QAAS,CAAEC,OAAQ,eAC1D7G,MAAK,SAAU8G,GAChB,OAAOA,EAASlK,QAGjB3H,KAAKwQ,iBAAiBiB,IAUjCvB,EAAgBrO,UAAU0P,aAAe,SAAUxR,EAAUqO,EAAQyC,GACjE,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAS1BX,EAAgBrO,UAAU2P,sBAAwB,SAAUzR,EAAUqO,EAAQyC,GAC1E,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAgB1BX,EAAgBrO,UAAUqQ,sBAAwB,SAAUzL,EAAQoK,EAAS9H,EAAWoJ,GACpFA,EAAWA,GAAY,GAEvB,IAAIC,EAASvS,EAAQ,GAAR,eAAyB,EAAI,KAAO,GAE7CwS,EAAQ,SAAUC,GAClB,IAAIC,GAAU,IAAAtJ,aAAYqJ,GAC1B,MAAO,aAAa7I,KAAK8I,GAAW,KAAOA,EAAUA,GA6BrDvP,EAQZ,SAA8BwC,GAC1B,IAAIgN,EAAU,EAAAzB,SAAA,cAAuBvL,EAAO,aAC5C,IAAKgN,IAAYA,EAAQpD,OACrB,MAAM,IAAIqD,MAAM,mCAAqCjN,EAAO,KAChE,OAAOgN,EAAQ7D,IAAI+D,GAAa9D,OAAO,EAAAC,QAAS,IAZhC8D,CAAqB5J,GAAW4F,KA3BzB,SAAUiE,GACzB,IAAIpN,EAAOoN,EAAMpN,KAAM0J,EAAO0D,EAAM1D,KAChC2D,EAAWR,EAAM7M,GAIrB,GAAIiB,EAAOqM,KAAKD,KAAcV,EAAS3M,GACnC,OAAOqN,EAAW,KAAOpM,EAAOqM,KAAKD,GAAY,IACrD,IAAIE,EAAcZ,EAAS3M,IAASA,EAGpC,GAAa,MAAT0J,EACA,OAAO2D,EAAW,OAAST,EAAS,YAAcW,EAAc,MAIpE,GAAa,MAAT7D,EAAc,CACd,IAAI8D,EAAMnC,EAAQ/C,cAAciF,GAC5BpS,EAAKqS,GAAOA,EAAIrL,KAChBhG,EAAQhB,GAAM,EAAAoQ,SAAA,mBAA4BpQ,IAAQ,GAGtD,OAAOkS,EAAW,cAAgBE,IADhB,IAAAf,SAAQrR,GAAM,KAAOA,EAAGyO,OAAS,GAAK,IAAM,IACA,IAAMzN,EAAKsR,KAAK,KAAO,KAGzF,OAAOJ,EAAW,KAAOT,EAAS,YAAcW,EAAc,OAEJE,KAAK,KAC/DjK,EAAYqJ,EAAMtJ,GACtB,MAAO,IAAMC,EAAY,IAAMhG,EAAQ,MAAQgG,EAAY,KAExDkH,EArKyB,GAiLhCwC,EAAc,SAAUQ,GACxB,OAAI,IAAAC,UAASD,EAAIE,kBACNC,EAAcH,EAAIE,kBACtBC,EAAcH,EAAIpQ,QAIzBuQ,EAAgB,SAAUC,GAC1B,OAAOC,OAAOC,KAAKF,GAAe,IAE7B3E,KAAI,SAAU9I,GAAO,MAAO,CAACA,EAAK,oBAAoB4D,KAAK6J,EAAYzN,QAEvEyD,QAAO,SAAUmK,GAAS,OAAO,IAAA7G,WAAU6G,KAAU,IAAAzB,SAAQyB,EAAM,OAEnE9E,KAAI,SAAU8E,GAAS,MAAO,CAAGjO,KAAMiO,EAAM,GAAG,IAAMA,EAAM,GAAIvE,KAAMuE,EAAM,GAAG,2ECzL7EC,EAAsB,SAAUC,GACvC,OAAO,SAA0BC,GAC7B,IAAIC,EAAOD,EAAYD,GACnBG,EAAwB,WAAbH,EAAwB,OAAS,KAOhD,OAAOE,EANP,SAA0BjE,EAAOnC,GAC7B,IACIsG,EADiB,IAAI,EAAA3L,eAAewH,EAAMlB,YAAYoF,IAC1BC,WAAWtG,EAAMuG,WAC7CtL,GAAS,IAAA5H,QAAOmT,EAAUF,GAAa,CAAEG,QAASzG,EAAOO,aAAc4B,IAC3E,OAAO,EAAAmB,SAAA,iBAA0B8C,EAAM7T,KAAM0I,SAEhByL,ICfrCC,EAAqC,WACrC,SAASA,EAAoBC,GAEzBrU,KAAKsU,cAAgB,GACrBtU,KAAKqU,kBAAoBA,EACzB,IAAIE,GAAM,IAAAvQ,KAAIqQ,IACd,IAAAG,sBAAqBD,EAAKvU,KAAMuU,EAAK,CAAC,eA8D1C,OAhDAH,EAAoBK,6BAA+B,SAAUC,GACzD,IAAIC,EAAWD,EAAOE,kBAAkB1F,KAAK,QAC7CyF,EAASE,OAAS,SAAUvF,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,WAAW,SAAUC,GAAK,MAAQ,CAAE,IAAK,KAAM,IAAK,OAAQA,MAAU1F,GAElHqF,EAASM,OAAS,SAAU3F,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,aAAa,SAAUC,GAAK,MAAQ,CAAE,KAAM,IAAK,MAAO,KAAMA,MAAU1F,IAIxH8E,EAAoBvS,UAAUqT,QAAU,aACxCd,EAAoBvS,UAAUsT,SAAW,SAAU3U,GAC/C,IAAI2P,EAAQnQ,KAEZ,OADAA,KAAKsU,cAAc7T,KAAKD,GACjB,WAAc,OAAO,IAAA4U,YAAWjF,EAAMmE,cAAjB,CAAgC9T,KAEhE4T,EAAoBvS,UAAUwT,UAAY,WACtC,IAAIA,EAAYrV,KAAKqU,kBAAkBgB,YAEvC,OADAA,GAAY,IAAAlC,UAASkC,GAAaA,EAAUC,QAAUD,IAClCrV,KAAKuV,SAASC,SAEtCpB,EAAoBvS,UAAU4T,SAAW,WACrC,OAAOzV,KAAK0V,YAAc1V,KAAK0V,UAAY1V,KAAK2V,SAASF,YAAczV,KAAK4V,QAAQC,SAAS/B,WAEjGM,EAAoBvS,UAAU4P,IAAM,SAAUqE,EAAQf,EAAStH,GAQ3D,YAPgB,IAAZsH,IAAsBA,GAAU,IAChC,IAAAnI,WAAUkJ,IACV9V,KAAK+V,UAAUtE,IAAIqE,GACnBf,GACA/U,KAAK+V,UAAUhB,UACftH,GACAzN,KAAK+V,UAAUtI,MAAMA,GAClBzN,KAAK+V,UAAUtE,OAE1B2C,EAAoBvS,UAAUmU,iBAAmB,SAAUC,EAAYF,EAAWR,EAAUI,EAAUC,GAClG,IAAIzF,EAAQnQ,KACZA,KAAK+V,UAAYA,EACjB/V,KAAKuV,SAAWA,EAChBvV,KAAK2V,SAAWA,EAChB3V,KAAK4V,QAAUA,EAEfK,EAAW1T,IAAI,0BAA0B,SAAU2T,GAAO,OAAO/F,EAAMmE,cAAcvT,SAAQ,SAAUJ,GAAM,OAAOA,EAAGuV,SACvH,IAAIC,GAAO,IAAAnS,KAAI+R,IAEf,IAAAvB,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,UAAW,OAAQ,SAAU,UAErE,IAAA3B,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,OAAQ,WAAY,UAEzD/B,EApE6B,0ECaxCvU,EAAQ,GAAR,OAAe,qBAAsB,IACrC,IAAIuW,EAAWvW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,OAC7CwW,EAAWxW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,mBAC7CyW,EAAUzW,EAAQ,GAAR,OAAe,mBAAoB,CAAC,mBAC9C0W,EAAY1W,EAAQ,GAAR,OAAe,kBAAmB,CAAC,mBAAoB,iBAAkB,uBACrF2W,EAAW3W,EAAQ,GAAR,OAAe,YAAa,CAAC,iBAAkB,kBAAmB,uBAE7E6U,GADW7U,EAAQ,GAAR,OAAe,mBAAoB,CAAC,cACtC,MAGb,SAAS4W,EAAkBpC,IAEvBK,EAAS1U,KAAK0U,OAAS,IAAI,EAAAgC,UACpBC,cAAgB,IAAI,IAAcjC,EAAOkC,cAAelC,EAAOmC,cAEtEnC,EAAOkC,cAAcE,UAAU,QAAS,MACxCpC,EAAOkC,cAAcE,UAAU,SAAUpD,EAAoB,WAC7DgB,EAAOkC,cAAcE,UAAU,WAAYpD,EAAoB,aAC/DgB,EAAOkC,cAAcE,UAAU,UAAWpD,EAAoB,YAC9DgB,EAAOqC,YAAY/M,WAAWgN,mBAAmB,OAAO,WAExDtC,EAAOuC,WAAW1L,OAAO2L,eAAgB,EACzC,IAAIC,EAAsBzC,EAAO0C,gBAAkB1C,EAAO2C,eAAiB,IAAIjD,EAAoBC,GAMnG,SAAS3T,EAAKqV,EAAWJ,EAAUC,EAASL,EAAUU,EAAY5F,EAAOC,GAIrE,OAHA6G,EAAmBnB,iBAAiBC,EAAYF,EAAWR,EAAUI,EAAUC,UACxElB,EAAe,cACfA,EAAa,KACbA,EAEX,OAXAN,EAAoBK,6BAA6BC,GAEjDA,EAAe,OAAIA,EACnBA,EAAa,KAAIhU,EACjBA,EAAKuM,QAAU,CAAC,YAAa,WAAY,UAAW,WAAY,aAAc,QAAS,kBAOhFyH,EA1BX+B,EAAkBxJ,QAAU,CAAC,qBA4B7B,IAAIqK,EAAiB,SAAUC,GAAe,MAAO,CACjD,oBACA,SAAUC,GACN,IAAIC,EAAUD,EAAK9C,OAAO6C,GAE1B,OADAE,EAAc,KAAI,WAAc,OAAOA,GAChCA,KAKf,SAASC,EAASnH,EAAWxJ,EAAI4Q,GAI7B,GAHA,EAAA5G,SAAA,UAAqBR,EACrB,EAAAQ,SAAA,GAAchK,GAETwM,OAAO1R,UAAUa,eAAeX,KAAKwO,EAAW,YACjD,IACIA,EAAUqH,QAAO,SAAUC,OAE/B,MAAOxS,GACHkL,EAAUuH,WAAa,cAAcrO,KAAKpE,GAASA,EAAMyP,YAKjE6C,EAAUf,cACLlG,MACA/B,KAAI,SAAUW,GAAK,OAAOA,EAAE0E,UAAU+D,eACtCnJ,OAAO,EAAAC,QAAS,IAChBvF,QAAO,SAAUgG,GAAK,MAAkB,aAAXA,EAAEwC,QAC/B/Q,SAAQ,SAAUiX,GAAc,OAAQA,EAAWlG,KAAOvB,EAAU0H,SAASD,EAAWE,UAAW3H,EAAUuH,aAQ/G,SAASK,EAAalC,GACzBA,EAAW1R,QAAO,WACd,EAAA8D,MAAA,wBA9BRqP,EAASzK,QAAU,CAAC,YAAa,KAAM,aA2BvCkL,EAAalL,QAAU,CAAC,cAMxBmJ,EAASrW,SAAS,YAAa0W,GAC/BH,EAAQvW,SAAS,aAAc,CAAC,oBAXL,SAAUqY,GAAY,OAAQA,EAASC,kBAAoB,IAAI,IAAkBD,MAY5G/B,EAAStW,SAAS,cAAeuX,EAAe,eAChDjB,EAAStW,SAAS,qBAAsB,CAAC,oBAAqB,WAAc,OAAO2U,EAAOE,qBAC1FyB,EAAStW,SAAS,oBAAoB,WAAc,OAAO,IAAImQ,KAC/DqG,EAAUxW,SAAS,iBAAkBuX,EAAe,kBACpDf,EAAUxW,SAAS,mBAAoBuX,EAAe,YACtDf,EAAUxW,SAAS,eAAgBuX,EAAe,sBAClDf,EAAUxW,SAAS,SAAU,CAAC,oBAfP,WAAc,OAAO,IAAAe,QAAO4T,EAAOiC,cAAe,CAAEjW,KAAM,WAAc,OAAOgU,EAAOmC,mBAgB7GN,EAAUrW,QAAQ,eAAgB,CAAC,YAAa,SAAUyX,GAAa,OAAOA,EAAUW,QAAQlK,UAChGoI,EAAStW,QAAQ,SAAS,WAAc,OAAOwU,EAAOqC,eACtDP,EAASiB,QAAQ,UAAU,WAAc,OAAO,EAAApP,SAChDmO,EAAS+B,IAAIJ,GACb9B,EAASkC,IAAI,CAAC,qBAAsB,SAAUC,OAC9CjC,EAAUgC,IAAI,CAAC,SAAU,SAAUE,OACnCnC,EAAQiC,IAAI,CAAC,aAAc,SAAUG,OACrCtC,EAASmC,IAAIb,GAEN,IAAIzD,EAAY,SAAU0E,GAO7B,OANaA,EAAIC,YAAYtP,OAAO,EAAAR,UAChB6F,KAAI,SAAU9I,GAC9B,IAAImS,EAAaW,EAAI7K,cAAcjI,GAEnC,MAAO,CAACA,EAAoB,WADX8S,EAAIE,UAAUb,GAAYc,MACJd,EAAWvU,QAAUuU,EAAWrQ,SAE7DiH,OAAO,EAAAmK,WAAY,2JC9GrC,SAASC,EAAeP,GACpB,IAAIQ,EAAW,SAAUxL,EAAOW,EAAQjO,GACpC,OAAOsY,EAAOS,GAAGzL,EAAOW,EAAQjO,IAGpC,OADA8Y,EAASE,WAAY,EACdF,EAaX,SAASG,EAAuBX,GAC5B,IAAIY,EAAiB,SAAU5L,EAAOW,EAAQjO,GAC1C,OAAOsY,EAAOa,SAAS7L,EAAOW,EAAQjO,IAG1C,OADAkZ,EAAeF,WAAY,EACpBE,EAxBXL,EAAe/L,QAAU,CAAC,UAkB1BmM,EAAuBnM,QAAU,CAAC,UAQlC,YAAe,mBAAmB3D,OAAO,UAAW0P,GAAgB1P,OAAO,kBAAmB8P,oKCpB1FG,EAA+B,WAC/B,SAASA,EAAc3C,EAAeC,GAClC7W,KAAK4W,cAAgBA,EACrB5W,KAAK6W,aAAeA,GACpB,IAAArC,uBAAqB,IAAAxQ,KAAIuV,EAAc1X,WAAY7B,MAAM,IAAAgE,KAAIhE,OAgHjE,OArBAuZ,EAAc1X,UAAUiV,UAAY,SAAUtR,EAAMgU,GAChD,OAAOxZ,KAAK4W,cAAcE,UAAUtR,EAAMgU,IAASxZ,MAEvDuZ,EAAc1X,UAAU4L,MAAQ,SAAUjI,EAAMiU,GAQ5C,OAPI,IAAAtG,UAAS3N,GACTiU,EAAajU,EAGbiU,EAAWjU,KAAOA,EAEtBxF,KAAK4W,cAAc8C,SAASD,GACrBzZ,MAOXuZ,EAAc1X,UAAU8X,UAAY,SAAUnZ,GAC1C,OAAOR,KAAK6W,aAAa8C,UAAUnZ,IAEhC+Y,EApHuB,6LCf3B,SAASK,IACZ,IAAIC,EAAkB,KACtB,OAAO,SAAU1R,EAAM2R,GAEnB,OADAD,EAAkBA,GAAmB,EAAA9I,SAAA,cAAuB,oBACrD,CAAC,IAAIgJ,EAAc5R,EAAM2R,EAAMD,KAI9C,IAAIG,EAAY,SAAUxG,EAAMyG,GAAO,OAAOzG,EAAK5E,QAAO,SAAUsL,EAAKrU,GAAO,OAAOqU,IAAO,IAAAtN,WAAUqN,EAAIpU,OAAU,IAY/G,SAASsU,EAAgB1M,GAE5B,IAAKA,EAAM2M,OACP,MAAO,GACX,IAAgKC,EAAW,CAAC,YAAa,WAAY,qBAAsBC,EAA7M,CAAC,mBAAoB,cAAe,WAAY,SAAU,SAAyKlY,OAApJ,CAAC,aAAc,qBAAsB,eAAgB,cAAiHmY,EAAcF,EAASjY,OAAOkY,GAIjS,IAAI,IAAA1N,WAAUa,EAAM+M,QAAUR,EAAUO,EAAa9M,GACjD,MAAM,IAAIgF,MAAM,UAAYhF,EAAMjI,KAAlB,4JAGL+U,EAAYjR,QAAO,SAAUzD,GAAO,OAAO,IAAA+G,WAAUa,EAAM5H,OAAUoN,KAAK,OAEzF,IAAIuH,EAAQ,GAAIC,EAAchN,EAAM+M,OAAS,CAAEE,UAAU,IAAAC,MAAKlN,EAAO8M,IAsBrE,OArBA,IAAAxZ,SAAQ0Z,GAAa,SAAUlP,EAAQ/F,GASnC,GAPAA,EAAOA,GAAQ,YAEX,IAAAsD,UAASyC,KACTA,EAAS,CAAExC,UAAWwC,IAE1BA,GAAS,IAAAzK,QAAO,GAAIyK,GAEhByO,EAAUK,EAAU9O,IAAWyO,EAAUM,EAAa/O,GACtD,MAAM,IAAIkH,MAAM,mBAAqB4H,EAASpH,KAAK,KAAO,UAAYqH,EAAYrH,KAAK,KAAO,mBAAqBzN,EAAO,IAAMiI,EAAMjI,KAAO,KAEjJ+F,EAAO9C,UAAY8C,EAAO9C,WAAa,WACvC8C,EAAOH,MAAQ,MACfG,EAAOxB,SAAW0D,EAClBlC,EAAOqP,MAAQpV,EACf,IAAIqV,EAAa,EAAAC,YAAA,sBAAkCvP,EAAOxB,SAAUwB,EAAOqP,OAC3ErP,EAAOwP,YAAcF,EAAWG,WAChCzP,EAAO0P,qBAAuBJ,EAAWK,oBACzCV,EAAMhV,GAAQ+F,KAEXiP,EAGX,IAAInP,EAAK,EAEL0O,EAA+B,WAC/B,SAASA,EAAc5R,EAAMJ,EAAU7H,GACnC,IAAIiQ,EAAQnQ,KACZA,KAAKmI,KAAOA,EACZnI,KAAK+H,SAAWA,EAChB/H,KAAKE,QAAUA,EACfF,KAAKmb,IAAM9P,IACXrL,KAAKob,QAAS,EACdpb,KAAKgI,YAAc,SAAUvB,EAAQoK,GACjC,OAAOV,EAAMpH,UACPoH,EAAMjQ,QAAQgS,sBAAsBzL,EAAQoK,EAASV,EAAMpH,UAAWoH,EAAMpI,SAASoK,UACrFhC,EAAMc,UAiCpB,OA9BA8I,EAAclY,UAAUwZ,KAAO,WAC3B,IAAIlL,EAAQnQ,KACR+G,EAAK,EAAAgK,SAAA,GACLF,EAAU,IAAI,EAAAzI,eAAepI,KAAKmI,MAClCiG,EAASpO,KAAKmI,KAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,IAAAzN,QAAOoZ,EAAK3L,EAAK+M,eAAiB,IAC1FC,EAAW,CACXtK,SAAUlK,EAAGkJ,KAAKjQ,KAAKE,QAAQ0Q,WAAW5Q,KAAK+H,SAAUqG,EAAQyC,IACjE7P,WAAY+F,EAAGkJ,KAAKjQ,KAAKwb,cAAc3K,KAE3C,OAAO9J,EAAG0U,IAAIF,GAAUxQ,MAAK,SAAU2Q,GAInC,OAHA,EAAArT,MAAA,sBAA4B,SAAU8H,GACtCA,EAAMnP,WAAa0a,EAAQ1a,YAC3B,IAAAF,QAAOqP,EAAOuL,EAAQzK,UACfd,MAQf4J,EAAclY,UAAU2Z,cAAgB,SAAU3K,GAC9C,IAAI9Q,EAAWC,KAAK+H,SAAS4T,mBAC7B,KAAK,IAAAC,cAAa7b,GACd,OAAOC,KAAK+H,SAAS/G,WACzB,IAAI8Q,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAEnBkJ,EA5CuB,wKC9C9B8B,EAAmC,WAEnC,SAASA,EAAiCnH,GACtC1U,KAAK0U,OAASA,EA2KlB,OAzKAmH,EAAkBC,kBAAoB,SAAUpH,EAAQqH,GACpD,OAAO,SAAUC,GAAS,OAAO,EAAAjL,SAAA,iBAA0BgL,EAAS,KAAM,CAAEE,OAAQD,EAAOE,aAAcxH,EAAO4D,QAAQlK,WAG5HyN,EAAkBha,UAAUnB,KAAO,WAC/B,IAAIuW,EAAajX,KAAK0U,OAAOuC,WAI7B,OAHAjX,KAAK0U,OAAOyH,UAAUC,QAAO,GACxBnF,EAAWoF,mBACZpF,EAAWqF,SACRtc,KAAK0U,OAAOyH,WAiCvBN,EAAkBha,UAAU0a,KAAO,SAAUC,GACzC,IAAIrM,EAAQnQ,KACZ,KAAK,IAAAoN,YAAWoP,GACZ,MAAM,IAAI/J,MAAM,6BACpB,IACI8J,EAAO,IAAI,EAAAE,aADH,WAAc,OAAOD,EAAO,EAAAzL,SAAA,UAAoBZ,EAAMuE,OAAO0C,mBACvC,EAAAsF,UAElC,OADA1c,KAAK0U,OAAOuC,WAAW0F,MAAMJ,KAAKA,GAC3Bvc,MA4BX6b,EAAkBha,UAAU+a,UAAY,SAAUL,GAC9C,IAAIpM,EAAQnQ,KACR6c,EAAW7c,KAAK0U,OAAOuC,WAAW0F,MACtC,IAAI,IAAA7T,UAASyT,GACTM,EAASD,UAAUL,OAElB,MAAI,IAAAnP,YAAWmP,GAIhB,MAAM,IAAI9J,MAAM,uCAHhBoK,EAASD,WAAU,WAAc,OAAOL,EAAK,EAAAxL,SAAA,UAAoBZ,EAAMuE,OAAO0C,oBAKlF,OAAOpX,MAwCX6b,EAAkBha,UAAUoO,KAAO,SAAU6M,EAAMf,GAK/C,QAJI,IAAA/J,SAAQ+J,KAAY,IAAA3O,YAAW2O,MAC/BA,EAAUF,EAAkBC,kBAAkB9b,KAAK0U,OAAQqH,IAE/D/b,KAAK0U,OAAOuC,WAAW0F,MAAM1M,KAAK6M,EAAMf,GACjC/b,MAgCX6b,EAAkBha,UAAUkb,eAAiB,SAAU9Q,GACnDjM,KAAK0U,OAAOuC,WAAW8F,eAAe9Q,IAEnC4P,EA9K2B,iJCKtC,UAAe,mBAAmB9b,SAAS,iBApB3C,WACI,IAAIid,GAAkB,EACtBhd,KAAKgd,gBAAkB,WACnBA,GAAkB,GAEtBhd,KAAKU,KAAO,CACR,gBACA,WACA,SAAUuc,EAAezZ,GACrB,OAAIwZ,EACOC,EAEJ,SAAUvV,GACb,OAAOlE,GAAS,WACZkE,EAAS,GAAGwV,mBACb,GAAG,8nBClBlBC,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GAaAK,EAAwB,iBAATlQ,MAAqBA,KAAKA,OAASA,MAAQA,MAC9C,iBAAX,EAAAmQ,GAAuB,EAAAA,EAAOC,SAAW,EAAAD,GAAU,EAAAA,QAC3D,EACAhe,EAAU+d,EAAK/d,SAAW,GACnBke,EAAWle,EAAQke,UAAYC,KAAK/W,MAAM3D,KAAK0a,MAC/CC,EAASpe,EAAQoe,QAAUD,KAAKE,UAAU5a,KAAK0a,MAC/Cjd,EAAUlB,EAAQkB,SAqc7B,SAAkBkZ,EAAKnP,EAAIqF,GACvB,IAAI,QAAQ8J,GACR,OAAOA,EAAIlZ,QAAQ+J,EAAIqF,GAC3BoD,OAAOC,KAAKyG,GAAKlZ,SAAQ,SAAU8E,GAAO,OAAOiF,EAAGmP,EAAIpU,GAAMA,OAvcvD/E,EAASyS,OAAO3Q,QAycpB,SAAiBub,GACpB,IAAK,IAAId,EAAI,EAAGA,EAAIrb,UAAUoN,OAAQiO,IAAK,CACvC,IAAIpD,EAAMjY,UAAUqb,GACpB,GAAKpD,EAGL,IADA,IAAIzG,EAAOD,OAAOC,KAAKyG,GACdyD,EAAI,EAAGA,EAAIlK,EAAKpE,OAAQsO,IAC7BS,EAAM3K,EAAKkK,IAAMzD,EAAIzG,EAAKkK,IAGlC,OAAOS,GAldAhP,EAAStP,EAAQsP,QAod5B,SAASiP,EAAQC,EAAIC,GACjB,GAAID,IAAOC,EACP,OAAO,EACX,GAAW,OAAPD,GAAsB,OAAPC,EACf,OAAO,EACX,GAAID,GAAOA,GAAMC,GAAOA,EACpB,OAAO,EACX,IAAIC,SAAYF,EAChB,GAAIE,WAD4BD,GACR,WAAPC,EACb,OAAO,EACX,IAyBeC,EAAIC,EAzBfC,EAAM,CAACL,EAAIC,GACf,IAAI,QAAI,KAAJ,CAAaI,GACb,OAuBeD,EAvBMH,GAuBVE,EAvBMH,GAwBdjP,SAAWqP,EAAGrP,QAEduP,EAAYH,EAAIC,GAAI7P,QAAO,SAAUgQ,EAAGC,GAAK,OAAOD,GAAKR,EAAQS,EAAE,GAAIA,EAAE,OAAQ,GAzBxF,IAAI,QAAI,KAAJ,CAAYH,GACZ,OAAOL,EAAGS,YAAcR,EAAGQ,UAC/B,IAAI,QAAI,KAAJ,CAAcJ,GACd,OAAOL,EAAGvJ,aAAewJ,EAAGxJ,WAChC,IAAI,QAAI,KAAJ,CAAgB4J,GAChB,OAAO,EAEX,GADiB,CAAC,KAAY,KAAS,KAAQ,MAChC/P,IAAI,MAAKC,QAAO,SAAUgQ,EAAGje,GAAM,OAAOie,KAAOje,EAAG+d,MAAS,GACxE,OAAO,EACX,IAAIlL,EAAO,GAEX,IAAK,IAAI3N,KAAOwY,EAAI,CAChB,IAAKD,EAAQC,EAAGxY,GAAMyY,EAAGzY,IACrB,OAAO,EACX2N,EAAK3N,IAAO,EAEhB,IAAK,IAAIA,KAAOyY,EACZ,IAAK9K,EAAK3N,GACN,OAAO,EAEf,OAAO,GApfJ,SAAS6W,EAASpN,GACrB,OAAOA,EAEJ,SAASrH,KAyDT,SAASuM,EAAqBuK,EAAQ1Y,EAAQ/C,EAAM0b,EAASC,QAC/C,IAAbA,IAAuBA,GAAW,GACtC,IAAIC,EAAe,SAAUC,GAAU,OAAOJ,IAASI,GAAQ7b,KAAKA,MAQpE,OADA0b,EAAUA,GAAWzL,OAAOC,KAAKuL,MAClBnQ,QAAO,SAAUsL,EAAK1U,GAPd,IAAU2Z,EAS7B,OADAjF,EAAI1U,GAAQyZ,GARiBE,EAQW3Z,EAPjC,WAEH,OADAa,EAAO8Y,GAAUD,EAAaC,GACvB9Y,EAAO8Y,GAAQhd,MAAM,KAAMH,aAKUkd,EAAa1Z,GACtD0U,IACR7T,GAMA,IAAI+Y,EAAU,SAAUhF,EAAQiF,GAAS,OAAOve,EAAOyS,OAAO/R,OAAO4Y,GAASiF,IAE1EC,GAAU,SACd,SAAkBC,EAAOtF,GAC5B,OAA+B,IAAxBsF,EAAMrR,QAAQ+L,MAMd7E,GAAa,SACjB,SAAqBmK,EAAOtF,GAC/B,IAAIhL,EAAMsQ,EAAMrR,QAAQ+L,GAGxB,OAFIhL,GAAO,GACPsQ,EAAMC,OAAOvQ,EAAK,GACfsQ,KAGAE,GAAS,SACb,SAAiBC,EAAK1b,GACzB,OAAO0b,EAAIjf,KAAKuD,GAAMA,KAGf2b,EAAW,SAAUC,GAC5B,OAAOA,EAAU9d,QAAQf,SAAQ,SAAUJ,GACzB,mBAAPA,GAAqBA,IAC5ByU,EAAWwK,EAAWjf,OAQvB,SAASV,EAASW,GAErB,IADA,IAAIif,EAAe,GACVC,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCD,EAAaC,EAAK,GAAK9d,UAAU8d,GAErC,IAAIC,EAAcjf,EAAOqB,WAAM,EAAQgb,EAAe,CAAC,IAAK0C,EAAaG,YACzE,OAAOlf,EAAOif,EAAapF,EAAK/Z,GAAQ,GAAI2S,OAAOC,KAAKuM,KAGrD,IAAIE,EAAS,SAAUC,EAAMC,GAAQ,OAAOrf,EAAOof,EAAMC,IAQzD,SAASC,EAAUC,EAAOC,GAC7B,IAAInY,EAAO,GAEX,IAAK,IAAIoY,KAAKF,EAAMlY,KAAM,CACtB,GAAIkY,EAAMlY,KAAKoY,KAAOD,EAAOnY,KAAKoY,GAC9B,MACJpY,EAAK1H,KAAK4f,EAAMlY,KAAKoY,IAEzB,OAAOpY,EAaJ,SAASwS,EAAKV,EAAKuG,GACtB,IAAIC,EAAU,GACd,IAAK,IAAIC,KAASzG,GACoB,IAA9BuG,EAAUtS,QAAQwS,KAClBD,EAAQC,GAASzG,EAAIyG,IAG7B,OAAOD,EAcJ,SAASE,EAAK1G,EAAKuG,GACtB,OAAOjN,OAAOC,KAAKyG,GACd3Q,QAAO,QAAIgW,EAAQkB,KACnB5R,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,GAAOoU,EAAIpU,GAAOqU,IAAS,IASvE,SAAS5Q,EAAOsX,EAAYpgB,GAC/B,IAAIkf,GAAM,QAAQkB,GAAata,EAASoZ,EAAM,GAAK,GAC/CmB,EAASnB,EAAM,SAAUpQ,GAAK,OAAOhJ,EAAO7F,KAAK6O,IAAQ,SAAUA,EAAGzJ,GAAO,OAAQS,EAAOT,GAAOyJ,GAKvG,OAJAvO,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B7c,EAAS2f,EAAM9C,IACfwD,EAAOV,EAAM9C,MAEd/W,EAGJ,SAASwa,EAAKF,EAAYpgB,GAC7B,IAAI8F,EAOJ,OANAvF,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B/W,GAEA9F,EAAS2f,EAAM9C,KACf/W,EAAS6Z,MAEV7Z,EAGJ,IAAIya,EAASpS,EAEb,SAASA,EAAIiS,EAAYpgB,EAAU6F,GAGtC,OAFAA,EAASA,KAAW,QAAQua,GAAc,GAAK,IAC/C7f,EAAQ6f,GAAY,SAAUT,EAAM9C,GAAK,OAAQhX,EAAOgX,GAAK7c,EAAS2f,EAAM9C,MACrEhX,EAYJ,IAAI2a,EAAS,SAAU/G,GAAO,OAAO1G,OAAOC,KAAKyG,GAAKtL,KAAI,SAAU9I,GAAO,OAAOoU,EAAIpU,OAclFob,EAAW,SAAUf,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAclDC,EAAW,SAAUjB,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAUlDrS,EAAU,SAAUqR,EAAMgB,GAAQ,OAAOhB,EAAK9d,OAAO8e,IAWrDE,EAAW,SAAUlB,EAAMgB,GAClC,OAAO,QAAQA,GAAQhB,EAAK9d,OAAO8e,EAAKtS,OAAOwS,EAAU,KAAOC,EAAMnB,EAAMgB,IAMzE,SAASG,EAAM3B,EAAKzF,GAEvB,OADAyF,EAAIjf,KAAKwZ,GACFyF,EAGJ,IAAI4B,EAAQ,SAAUpH,EAAKqH,GAAS,OAAQjC,EAAQpF,EAAKqH,GAASrH,EAAMmH,EAAMnH,EAAKqH,IAW/EC,EAAS,SAAU9B,GAAO,OAAOA,EAAI9Q,OAAOC,EAAS,KAyBrD4S,EAkBJ,SAAkBC,EAAgBC,GAErC,YADe,IAAXA,IAAqBA,EAAS,kBAC3B,SAAU1H,GACb,IAAI3T,EAASob,EAAezH,GAC5B,IAAK3T,EACD,MAAM,IAAImM,OAAM,QAAWkP,GAAUA,EAAO1H,GAAO0H,GAEvD,OAAOrb,IA2BR,SAASqY,IAEZ,IADA,IAAIhd,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,GAAoB,IAAhBne,EAAKyN,OACL,MAAO,GAwBX,IAvBA,IAAIwS,EAAcjgB,EAAKiN,QAAO,SAAUiT,EAAKnC,GAAO,OAAOoC,KAAKD,IAAInC,EAAItQ,OAAQyS,KAAS,kBACrFvb,EAAS,GACTyb,EAAU,SAAU1E,GAGpB,OAAQ1b,EAAKyN,QACT,KAAK,EACD9I,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,KACrB,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACjC,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KAC7C,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACzD,MACJ,QACI/W,EAAO7F,KAAKkB,EAAKgN,KAAI,SAAU4Q,GAAS,OAAOA,EAAMlC,SAIxDA,EAAI,EAAGA,EAAIuE,EAAavE,IAC7B0E,EAAQ1E,GAEZ,OAAO/W,EAsBJ,SAASyS,EAAWmH,EAAM8B,GAC7B,IAAInc,EAAKrB,EAGT,IAFI,QAAQwd,KACRnc,EAAMmc,EAAY,GAAIxd,EAAQwd,EAAY,MACzC,QAASnc,GACV,MAAM,IAAI4M,MAAM,oCAEpB,OADAyN,EAAKra,GAAOrB,EACL0b,EAGJ,SAAS1S,EAAKkS,GACjB,OAAQA,EAAItQ,QAAUsQ,EAAIA,EAAItQ,OAAS,SAAO+E,EAK3C,SAAS8N,EAAKC,EAAKC,GAKtB,OAJIA,GACA5O,OAAOC,KAAK2O,GAAMphB,SAAQ,SAAU8E,GAAO,cAAcsc,EAAKtc,MAC7Dsc,IACDA,EAAO,IACJrhB,EAAOqhB,EAAMD,GA6DjB,IAAIE,EAA2B,SAAU3e,GAAW,OAAOA,EAAQ4e,OAAM,SAAUC,GAAK,OAAO,MAAS7e,GACpG8e,EAAkB,SAAUld,GAAS,OAAO+c,EAAyB,cAAmB/c,qHCxhBnG,IAGWmd,EAAW,SAAU/K,EAASgL,GACrC,OAAOA,EAAQ7T,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,IAJtC6c,EAIoDjL,EAAU,IAAM5R,EAAM,KAJzD,WACpC,MAAM,IAAI4M,MAAM,yBAA2BiQ,EAAS,kEAGiDxI,EAJ5F,IAAUwI,IAI2F,KAE9G3R,EAAW,CACXhK,QAAIoN,EACJ5D,eAAW4D,mGCyCf,IAAIwO,EAAsB,WACtB,SAASA,EAAKC,GACV5iB,KAAK4iB,KAAOA,EACZ5iB,KAAK6iB,KAAOD,EAAKE,MAAM,KACvB,IAAIC,EAAe/iB,KAAK4iB,KACnBE,MAAM,KACNnU,KAAI,SAAUqU,GACf,MAAY,OAARA,EACO,qBACC,MAARA,EACO,WACJ,MAAQA,KAEd/P,KAAK,IACVjT,KAAKijB,OAAS,IAAI9Z,OAAO,IAAM4Z,EAAe,KAalD,OAVAJ,EAAKzJ,GAAK,SAAU0J,GAChB,QAAS,SAASnZ,KAAKmZ,IAG3BD,EAAKxR,WAAa,SAAUyR,GACxB,OAAOD,EAAKzJ,GAAG0J,GAAQ,IAAID,EAAKC,GAAQ,MAE5CD,EAAK9gB,UAAUqhB,QAAU,SAAU1d,GAC/B,OAAOxF,KAAKijB,OAAOE,KAAK,IAAM3d,IAE3Bmd,EA3Bc,+MC1CzB,IAAIxF,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GA2CJ,SAAS6F,EAAMziB,GAClB,OAAO,SAAS0iB,IACZ,GAAIrhB,UAAUoN,QAAUzO,EAAGyO,OACvB,OAAOzO,EAAGwB,MAAMnC,KAAMgC,WAE1B,IAAIL,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtC,OAAOqhB,EAAQ/f,KAAKnB,MAAMkhB,EAASlG,EAAe,CAACnd,MAAO2B,KAS3D,SAAS2hB,IACZ,IAAI3hB,EAAOK,UACPuhB,EAAQ5hB,EAAKyN,OAAS,EAC1B,OAAO,WAEH,IADA,IAAIiO,EAAIkG,EAAOjd,EAAS3E,EAAK4hB,GAAOphB,MAAMnC,KAAMgC,WACzCqb,KACH/W,EAAS3E,EAAK0b,GAAGtb,KAAK/B,KAAMsG,GAChC,OAAOA,GASR,SAASkd,IAEZ,IADA,IAAIC,EAAQ,GACH3D,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpC2D,EAAM3D,GAAM9d,UAAU8d,GAE1B,OAAOwD,EAAQnhB,MAAM,KAAM,GAAGL,MAAMC,KAAKC,WAAWge,WAQjD,IAAI0D,EAAO,SAAUle,GAAQ,OAAO,SAAUyU,GAAO,OAAOA,GAAOA,EAAIzU,KAQnEme,EAASP,GAAM,SAAU5d,EAAMoe,EAAM3J,GAAO,OAAOA,GAAOA,EAAIzU,KAAUoe,KASxE3c,EAAQ,SAAUzB,GAAQ,OAAOge,EAAKrhB,MAAM,KAAMqD,EAAKsd,MAAM,KAAKnU,IAAI+U,KAKtEG,EAAM,SAAUljB,GAAM,OAAO,WAEpC,IADA,IAAIgB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAQnf,EAAGwB,MAAM,KAAMR,KAMpB,SAASmiB,EAAIC,EAAKC,GACrB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IAOjD,SAASsiB,EAAGF,EAAKC,GACpB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IASjD,IAAI8Z,EAAM,SAAUsI,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4U,EAAM,SAAUH,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4J,EAAK,SAAUiL,GAAQ,OAAO,SAAUlK,GAC/C,OAAe,MAAPA,GAAeA,EAAImK,cAAgBD,GAASlK,aAAekK,IAK5DngB,EAAM,SAAUqgB,GAAK,OAAO,WAAc,OAAOA,IA4CrD,SAASC,EAAQC,GACpB,OAAO,SAAUjV,GACb,IAAK,IAAI+N,EAAI,EAAGA,EAAIkH,EAAOnV,OAAQiO,IAC/B,GAAIkH,EAAOlH,GAAG,GAAG/N,GACb,OAAOiV,EAAOlH,GAAG,GAAG/N,uRCjNhCkV,EAAQjR,OAAO1R,UAAUiT,SACzB2P,EAAM,SAAU5F,GAAK,OAAO,SAAUvP,GAAK,cAAcA,IAAMuP,IACxD6F,EAAcD,EAAI,aAClB7X,GAAY,QAAI8X,GAChBC,EAAS,SAAUC,GAAK,OAAa,OAANA,GAC/BC,GAAoB,IAAAZ,IAAGU,EAAQD,GAC/BtX,EAAaqX,EAAI,YACjBK,EAAWL,EAAI,UACf3b,EAAW2b,EAAI,UACftR,EAAW,SAAU7D,GAAK,OAAa,OAANA,GAA2B,iBAANA,GACtD0C,EAAUpQ,MAAMoQ,QAChB+S,EAAS,SAAWzV,GAAK,MAAyB,kBAAlBkV,EAAMziB,KAAKuN,IAC3C0V,EAAW,SAAW1V,GAAK,MAAyB,oBAAlBkV,EAAMziB,KAAKuN,IAOjD,SAASsM,EAAa5X,GACzB,GAAIgO,EAAQhO,IAAQA,EAAIoL,OAAQ,CAC5B,IAAI6V,EAAOjhB,EAAIlC,MAAM,GAAI,GAAI0L,EAAOxJ,EAAIlC,OAAO,GAC/C,QAASmjB,EAAK3b,QAAO,QAAIR,IAAWsG,QAAU5B,EAAKlE,QAAO,QAAI8D,IAAagC,QAE/E,OAAOhC,EAAWpJ,GAOf,IAAIkhB,GAAY,QAAI/R,GAAU,SAAK,QAAK,QAAS/F,uKCvCpD+X,EAAuB,WACvB,SAASA,EAAMC,EAAQC,QACJ,IAAXD,IAAqBA,EAAS,SACnB,IAAXC,IAAqBA,EAAS,MAClCrlB,KAAKolB,OAASA,EACdplB,KAAKqlB,OAASA,EACdrlB,KAAKslB,gBAAkB,GACvBtlB,KAAKulB,SAAU,QAAOvlB,KAAKslB,iBAqC/B,OAnCAH,EAAMtjB,UAAU2jB,QAAU,SAAUrF,GAChC,IAAIsF,EAAQzlB,KAAKolB,OAIjB,OAHAK,EAAMhlB,KAAK0f,GACPngB,KAAKqlB,QAAUI,EAAMrW,OAASpP,KAAKqlB,QACnCrlB,KAAK0lB,QACFvF,GAEXgF,EAAMtjB,UAAU6jB,MAAQ,WACpB,IAAIvF,EAAOngB,KAAKolB,OAAOnjB,QAEvB,OADAjC,KAAKslB,gBAAgBvkB,SAAQ,SAAUJ,GAAM,OAAOA,EAAGwf,MAChDA,GAEXgF,EAAMtjB,UAAU8jB,QAAU,WACtB,GAAI3lB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO5F,OAAO,EAAG,GAAG,IAExC2F,EAAMtjB,UAAUgkB,MAAQ,WACpB,IAAIC,EAAU9lB,KAAKolB,OAEnB,OADAplB,KAAKolB,OAAS,GACPU,GAEXX,EAAMtjB,UAAU+jB,KAAO,WACnB,OAAO5lB,KAAKolB,OAAOhW,QAEvB+V,EAAMtjB,UAAUgL,OAAS,SAAUsT,GAC/B,IAAIlR,EAAMjP,KAAKolB,OAAOlX,QAAQiS,GAC9B,OAAOlR,GAAO,GAAKjP,KAAKolB,OAAO5F,OAAOvQ,EAAK,GAAG,IAElDkW,EAAMtjB,UAAUkkB,SAAW,WACvB,OAAO/lB,KAAKolB,OAAOplB,KAAKolB,OAAOhW,OAAS,IAE5C+V,EAAMtjB,UAAUmkB,SAAW,WACvB,GAAIhmB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO,IAEpBD,EA5Ce,4KCKtBc,EAAkB,CAAEC,IAAK,KAAM7gB,MAAO,KAAM8gB,MAAO,MA4B5CC,EAXyB,oBAAbC,UAA4BA,SAASC,cAA0C,IAA1BD,SAASC,aAEtEC,QAAUA,OAAOC,QAlBhC,SAAoBA,GAChB,IAAIC,EAAQ,SAAU9lB,GAAM,OAAO+lB,SAAS7kB,UAAUyB,KAAKvB,KAAKpB,EAAI6lB,IACpE,MAAO,CACHN,IAAKO,EAAMD,EAAQN,KACnB7gB,MAAOohB,EAAMD,EAAQN,KACrBC,MAAOM,EAAMD,EAAQN,MAaaS,CAAWJ,OAAOC,SAAWP,EAEzDO,QAAQL,OAAUK,QAAQnhB,MAIzBmhB,QAhBf,SAAyBA,GACrB,IAAIN,EAAMM,EAAQN,IAAI5iB,KAAKkjB,GAG3B,MAAO,CAAEN,IAAKA,EAAK7gB,MAFPmhB,EAAQnhB,MAAQmhB,EAAQnhB,MAAM/B,KAAKkjB,GAAWN,EAEzBC,MADrBK,EAAQL,MAAQK,EAAQL,MAAM7iB,KAAKkjB,GAAWN,GAU/CU,CAAgBJ,ieCRxB,SAASK,EAAUC,EAAK9V,GAC3B,OAAIA,EAAI5B,QAAU0X,EACP9V,EACJA,EAAI+V,OAAO,EAAGD,EAAM,GAAK,MAW7B,SAASE,EAAU5X,EAAQ4B,GAC9B,KAAOA,EAAI5B,OAASA,GAChB4B,GAAO,IACX,OAAOA,EAEJ,SAAS/H,EAAYqJ,GACxB,OAAOA,EACFyC,QAAQ,YAAY,SAAUkS,GAAM,OAAOA,EAAGC,iBAC9CnS,QAAQ,YAAY,SAAUkS,GAAM,MAAO,IAAMA,EAAGC,iBAEtD,SAASC,EAAiBxmB,GAC7B,IAAIymB,EAAQC,EAAW1mB,GACnB2mB,EAAqBF,EAAMpL,MAAM,8BACjCwI,EAAQ8C,EAAqBA,EAAmB,GAAKF,EACrDjI,EAASxe,EAAS,MAAK,GAC3B,OAAIwe,GAAUqF,EAAMxI,MAAM,eACf,YAAcmD,EAASqF,EAAMuC,OAAO,GAExCvC,EAEJ,SAAS6C,EAAW1mB,GACvB,IAAI4mB,GAAM,QAAQ5mB,GAAMA,EAAGmB,OAAO,GAAG,GAAKnB,EAC1C,OAAQ4mB,GAAOA,EAAIzS,YAAe,YAEtC,IAAI0S,EAAc,uBAIdC,GAAmB,QAAQ,CAC3B,CAAC,MAAa,QAAI,cAClB,CAAC,MAAQ,QAAI,SACb,CAAC,MAAW,QAAI,cAChB,CAACD,EAAa,SAAUlY,GAAK,OAAOA,EAAEoY,qBAAqB5S,aAC3D,CARc,SAAUmF,GACxB,OAAO,QAASA,MAAS,QAAQA,IAAQA,EAAImK,cAAgB7Q,SAAU,QAAW0G,EAAInF,WAOxE,SAAUxF,GAAK,OAAOA,EAAEwF,aACtC,CAAC,KAAcqS,GACf,EAAC,SAAI,GAAO,QAET,SAASjJ,EAAU0G,GACtB,IAAI+C,EAAO,GACX,SAASC,EAAOpjB,GACZ,IAAI,QAASA,GAAQ,CACjB,IAA6B,IAAzBmjB,EAAKzZ,QAAQ1J,GACb,MAAO,iBACXmjB,EAAKlnB,KAAK+D,GAEd,OAAOijB,EAAiBjjB,GAE5B,OAAI,QAAYogB,GAILgD,EAAOhD,GAEX5G,KAAKE,UAAU0G,GAAG,SAAU/e,EAAKrB,GAAS,OAAOojB,EAAOpjB,MAAWuQ,QAAQ,OAAQ,KAGvF,IAAI8S,EAAoB,SAAUC,GAAQ,OAAO,SAAU9W,GAC9D,IAAKA,EACD,MAAO,CAAC,GAAI,IAChB,IAAI/B,EAAM+B,EAAI9C,QAAQ4Z,GACtB,OAAa,IAAT7Y,EACO,CAAC+B,EAAK,IACV,CAACA,EAAI+V,OAAO,EAAG9X,GAAM+B,EAAI+V,OAAO9X,EAAM,MAGtC8Y,EAAuB,SAAU/W,GAAO,OAAOA,EAAI+D,QAAQ,WAAY,KACvEiT,EAAYH,EAAkB,KAC9BI,EAAaJ,EAAkB,KAC/BK,EAAaL,EAAkB,KAC/BM,EAAc,SAAUnX,GAAO,OAAQA,EAAMA,EAAI+D,QAAQ,KAAM,IAAM,IAWzE,SAASqT,EAAaC,GACzB,IAAIC,EAAK,IAAInf,OAAO,IAAMkf,EAAQ,IAAK,KACvC,OAAO,SAAUrX,GAAO,OAAOA,EAAI8R,MAAMwF,GAAIhf,OAAO,OAcjD,SAASif,EAAerO,EAAK5K,GAChC,OAAI,SAAS,QAAK4K,MAAS,QAAS5K,GACzB4K,EAAIpY,MAAM,GAAI,GAAGM,QAAO,QAAK8X,GAAO5K,IACxC,QAAM4K,EAAK5K,0GCpElBkZ,iQA3BJ,SAASC,EAAaC,GAClB,IAAKA,EACD,MAAO,oBACX,IAAIjb,EAAQib,EAAOC,gBAAkBD,EAAOC,gBAAgBnjB,MAAQ,SAAW,SAC/E,MAAO,YAAckjB,EAAOrd,GAAK,IAAMqd,EAAOtd,MAAQ,IAAMsd,EAAOpd,IAAM,KAAOod,EAAOljB,KAAO,IAAMiI,EAAQ,KAOhH,SAASmb,EAAchW,GACnB,OAAO,QAASA,GAAS4V,EAAS5V,GAAS4V,EAASA,EAAS5V,KAgBjE,SAAW4V,GACPA,EAASA,EAAkB,QAAI,GAAK,UACpCA,EAASA,EAAqB,WAAI,GAAK,aACvCA,EAASA,EAAe,KAAI,GAAK,OACjCA,EAASA,EAAiB,OAAI,GAAK,SACnCA,EAASA,EAAqB,WAAI,GAAK,aAL3C,CAMGA,IAAaA,EAAW,KAE3B,IAAIK,GAAO,QAAM,OACbC,GAAO,QAAM,cACbC,EAAW,SAAUnZ,GAAS,MAAO,eAAiBiZ,EAAKjZ,GAAS,IAAMkZ,EAAKlZ,IA6J/EvH,EAAQ,IAzJe,WAEvB,SAAS2gB,IAELhpB,KAAKipB,SAAW,GAChBjpB,KAAKkpB,mBAAqB,EAwI9B,OArIAF,EAAMnnB,UAAUsnB,KAAO,SAAU7T,EAAS8T,GACtC,IAAIjZ,EAAQnQ,KACPopB,EAAWha,SACZga,EAAa7V,OAAOC,KAAKgV,GACpB7Z,KAAI,SAAU6O,GAAK,OAAO6L,SAAS7L,EAAG,OACtClU,QAAO,SAAUkU,GAAK,OAAQ8L,MAAM9L,MACpC7O,KAAI,SAAU9I,GAAO,OAAO2iB,EAAS3iB,OAE9CujB,EAAWza,IAAIia,GAAe7nB,SAAQ,SAAUwoB,GAAY,OAAQpZ,EAAM8Y,SAASM,GAAYjU,MAEnG0T,EAAMnnB,UAAU2nB,OAAS,WAErB,IADA,IAAIJ,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAMC,IAEpBJ,EAAMnnB,UAAU4nB,QAAU,WAEtB,IADA,IAAIL,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAOC,IAWrBJ,EAAMnnB,UAAUyT,QAAU,SAAUiU,GAChC,QAASvpB,KAAKipB,SAASL,EAAcW,KAGzCP,EAAMnnB,UAAU6nB,qBAAuB,SAAU9Z,GACxC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAU+nB,uBAAyB,SAAUha,GAC1C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAUgoB,oBAAsB,SAAUC,EAAMla,EAAOzP,GACzD,GAAKH,KAAKsV,QAAQkT,EAASuB,MAA3B,CAEA,IAAIxpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAiBskB,EAAKE,eAAexpB,UAC1N,QAAgBuoB,EAASnZ,GAAS,eAAiBrP,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,MAG9GwjB,EAAMnnB,UAAUooB,gBAAkB,SAAUC,EAAYta,EAAOua,GACtDnqB,KAAKsV,QAAQkT,EAASuB,OAE3B,QAAgBhB,EAASnZ,GAAS,0BAA2B,QAAU,KAAK,QAAUsa,MAG1FlB,EAAMnnB,UAAUuoB,iBAAmB,SAAUjiB,EAAM8H,EAAML,GAChD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,uBAAyBzH,EAAO,KAAO8H,EAAO,MAGpF+Y,EAAMnnB,UAAUyoB,wBAA0B,SAAUtS,EAAYpI,GACvD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,gCAAkCoI,EAAa,SAAU,QAAU,KAAK,QAAUA,EAAWrQ,SAGnIqhB,EAAMnnB,UAAU0oB,WAAa,SAAUC,EAAQ5a,GACtC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,aAAe4a,IAG3FxB,EAAMnnB,UAAU4oB,aAAe,SAAUC,EAAY9a,GAC5C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,kBAAoB8a,EAAWllB,OAG3GwjB,EAAMnnB,UAAU8oB,iBAAmB,SAAUpqB,EAAOqqB,EAAUvL,QAC5C,IAAVA,IAAoBA,EAAQ,IAC3Brf,KAAKsV,QAAQkT,EAASqC,SAE3B,QAAgB,aAAc,QAAU,GAAItqB,GAAS,IAAMkoB,EAAamC,GAAYvL,IAGxF2J,EAAMnnB,UAAUipB,yBAA2B,SAAUF,EAAU/Z,GACtD7Q,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,WAAYC,EAAU,kCAAoC/Z,EAAU,MAG9FmY,EAAMnnB,UAAUkpB,gBAAkB,SAAUH,EAAUpjB,GAC7CxH,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,OAAQC,EAAU,WAAY,QAAU,IAAKpjB,KAGvEwhB,EAAMnnB,UAAUmpB,cAAgB,SAAUC,GACtC,GAAKjrB,KAAKsV,QAAQkT,EAAS0C,YAA3B,CAEA,IAAIC,EAAY,uBAEZC,EAAUH,EACTtc,KAAI,SAAU0c,GACf,IAAIC,EACA7kB,EAAS4kB,EAAG5kB,OAAQiE,EAAa2gB,EAAG3gB,WACpC6gB,EAAM9kB,GAAUA,EAAO6E,IACvBzD,EAAM6C,GAAcA,EAAW3C,SAASgC,SAASvE,KAAO,MAAQkF,EAAW3C,SAAS6S,MAAQ,IAChG,OAAO0Q,EAAK,IAAOH,GAAaI,EAAKD,EAPzB,iCAOyCzjB,EAAKyjB,KAEzDE,MAAK,SAAU/N,EAAGmB,GAAK,OAAQnB,EAAE0N,IAAc,IAAIM,cAAc7M,EAAEuM,IAAc,OACtF,UAAkBC,KAGtBpC,EAAMnnB,UAAU6pB,sBAAwB,SAAUnrB,EAAOmK,GAChD1K,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAzK1B,SAAUmK,GAC7B,IAAIoP,EAAOpP,EAAW3C,SAClB0F,EAAQqM,EAAK/P,SAASvE,MAAQ,SAClC,MAAO,SAAWkF,EAAWyQ,IAAM,UAAY1N,EAAQ,8BAAgCqM,EAAKiB,YAAc,IAAMjB,EAAKmB,qBAAuB,IAsKzF0Q,CAAiBjhB,KAGpEse,EAAMnnB,UAAU+pB,4BAA8B,SAAUrrB,EAAOqqB,GACtD5qB,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAAMkoB,EAAamC,KAEzD5B,EA7Ie,oOCxEtB6C,EAAiC,WACjC,SAASA,IAML7rB,KAAKoO,OAAS,IAAI,IAElBpO,KAAK8rB,yBAA2B,EAEhC9rB,KAAK+rB,kBAAoB,IAAI,IAAM,GAAI,GAEvC/rB,KAAKgsB,sBAAwB,IAAI,IAAM,GAAI,GAO/C,OALAH,EAAgBhqB,UAAUqT,QAAU,WAChClV,KAAK+rB,kBAAkBlG,QACvB7lB,KAAKgsB,sBAAsBnG,QAC3B7lB,KAAKisB,WAAa,MAEfJ,EApByB,sLCiBhCK,EAAe,SAAUD,GACzB,IAAIvX,EAASuX,EAAWvX,OAuBpB6G,EAAW0Q,EACVE,WACA7iB,QAAO,SAAUmE,GAAS,QAASA,EAAMuG,UAAUoY,YACnDzd,KAAI,SAAUlB,GAAS,OAAO4e,EAAcJ,EAAYxe,MAC7D,OAAO,WAAgB8N,GAAUxQ,MA1BjC,WACI,GAAyD,QAArDkhB,EAAWK,qBAAqBnsB,UAAU4e,OAAkB,CAG5D,IAAIwN,EAAON,EAAWO,cACtB,OAAO9X,EAAOmC,aAAaxQ,OAAOkmB,EAAKE,aAAcF,EAAKne,SAAUme,EAAKpsB,WAI7E,IAAIusB,EAAOhY,EAAOuC,WACd3Q,EAASomB,EAAK1Q,MAAM0Q,EAAKC,SACzBpQ,EAAOjW,GAAUA,EAAOiW,KAG5B,GAAIA,GAAsB,UAAdA,EAAKrN,KAAkB,CAC/B,IAAIzB,EAAQ8O,EAAK9O,MACbW,EAAS9H,EAAO0V,MACpB,OAAOtH,EAAOmC,aAAaxQ,OAAOoH,EAAOW,EAAQ6d,EAAW9rB,WAGhEuU,EAAOuC,WAAW2V,WAQfC,EAAuB,SAAUC,GACxC,OAAOA,EAAkB/c,SAAS,CAAEoc,SAAU,SAAU1e,GAAS,QAASA,EAAM2e,WAAeF,IAS5F,SAASG,EAAcJ,EAAYxe,GACtC,IAAIsf,EAAatf,EAAMuG,UAAUoY,SAE7B3oB,EAAUspB,EAAqB,SAwBnC,OAvBKtpB,IAWDA,EAAUspB,EAAqB,SAAI,YACzBA,EAAWd,EAAYxe,IAC5B1C,MAIT,SAA6BzE,GAIzB,OAHIA,GAAU1E,MAAMoQ,QAAQ1L,EAAO0mB,SAC/B1mB,EAAO0mB,OAAOjsB,SAAQ,SAAUksB,GAAU,OAAOhB,EAAWvX,OAAOkC,cAAc8C,SAASuT,MAEvF3mB,KAPFyE,MAbS,SAAUzE,GAIpB,cAHOmH,EAAM2e,gBACN3e,EAAMuG,UAAUoY,gBAChBW,EAAqB,SACrBzmB,KAEC,SAAU4mB,GAElB,cADOH,EAAqB,SACrB,cAAmBG,OAc3BzpB,oPCnFP0pB,kUAJAC,EAAS7Z,OAAO1R,UAAUa,gBAK9B,SAAWyqB,GACPA,EAAQA,EAAc,KAAI,GAAK,OAC/BA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAgB,OAAI,GAAK,SAHrC,CAIGA,IAAYA,EAAU,KA2DzB,IAAIE,EAAuB,WACvB,SAASA,EAAMhiB,EAAI6D,EAAM2G,EAAUyX,EAAW7f,GAC1C,IAAIlC,EA3DZ,SAA6BgiB,EAAW1X,EAAUpI,GAC9C,IAAI+f,GAA6C,IAAzB/f,EAAMggB,gBAA4B5X,IAAasX,EAAQO,aAAWvZ,EACtFwZ,GAAU,QAAK,CAAClgB,EAAMkgB,QAASH,GAAmB,MAClDI,GAAgB,QAAUD,GAAW,CAAEA,QAASA,GAAY,GAC5DE,EAGR,SAAyBhmB,GAGrB,SAASimB,IACL,OAAOjmB,EAAIrD,MAHfqD,EAlBc,SAAUA,GACxB,OAAiG,IAA1F,CAAC,QAAS,OAAQ,SAAU,QAAS,WAAWyB,OAAO8jB,EAAO9pB,KAAKuE,GAAO,KAAKuH,OAiBhF2e,CAAYlmB,GAAO,CAAErD,MAAOqD,GAAQA,EAC1CimB,EAAmC,aAAI,EAIvC,IAAIE,GAAO,QAAanmB,EAAIrD,OAASqD,EAAIrD,MAAQspB,EACjD,OAAO,QAAOjmB,EAAK,CAAEmmB,KAAMA,IAVTC,CAAgBxgB,GAASA,EAAMW,QAAUX,EAAMW,OAAOmf,IACxE,OAAO,QAAOK,EAAeC,GAsDZK,CAAoB7iB,EAAIwK,EAAUpI,GAC/CyB,EA5CR,SAAiBrH,EAAKsmB,EAAStY,EAAUxK,EAAI+iB,GACzC,GAAIvmB,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,KAC/B,MAAM,IAAIiN,MAAM,UAAYpH,EAAK,kCACrC,GAAIxD,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,MAAqB4oB,EAAWlf,KAAKrH,EAAIqH,MACxE,OAAOkf,EAAWlf,KAAKrH,EAAIqH,MAC/B,GAAIif,EACA,OAAOA,EACX,IAAKtmB,EAAIqH,KAAM,CACX,IAAIA,EAAO2G,IAAasX,EAAQkB,OAC1B,MACAxY,IAAasX,EAAQmB,KACjB,OACAzY,IAAasX,EAAQO,OACjB,QACA,SACd,OAAOU,EAAWlf,KAAKA,GAE3B,OAAOrH,EAAIqH,gBAAgB,IAAYrH,EAAIqH,KAAOkf,EAAWlf,KAAKrH,EAAIqH,MA2B3Dqf,CAAQhjB,EAAQ2D,EAAM2G,EAAUxK,EAAIiiB,EAAUc,YACrD,IAUQI,EACAC,EAXJC,GAUIF,EAAgB,CAAEjP,MAAO1J,IAAasX,EAAQO,QAAS,QACvDe,EAAyBpjB,EAAG2Q,MAAM,SAAW,CAAEuD,OAAO,GAAS,IAC5D,QAAOiP,EAAeC,EAAwBljB,GAAQgU,OAXjErQ,EAAOwf,EAAYxf,EAAKyf,SAASD,EAAW7Y,IAAasX,EAAQO,QAAUxe,EAC3E,IAAI0f,OAA8Bza,IAAjB5I,EAAO/G,OAAuBqR,IAAasX,EAAQO,OAChEC,GAAU,QAAUpiB,EAAOoiB,WAAapiB,EAAOoiB,UAAYze,EAAKye,QAChEkB,GAAM,QAAUtjB,EAAOsjB,OAAStjB,EAAOsjB,MAAQ3f,EAAK2f,IACpDC,EA9BZ,SAAyBvjB,EAAQqjB,EAAYG,GACzC,IAAID,EAASvjB,EAAOujB,OACpB,IAAKF,IAAyB,IAAXE,EACf,OAAO,EACX,KAAK,QAAUA,IAAqB,MAAVA,EACtB,OAAOC,EACX,IAAe,IAAXD,IAAmB,QAASA,GAC5B,OAAOA,EACX,MAAM,IAAIrc,MAAM,2BAA6Bqc,EAAS,uDAsBrCE,CAAgBzjB,EAAQqjB,EAAYtB,EAAU2B,uBACvDla,EArBZ,SAAoBxJ,EAAQmjB,EAAWE,EAAYE,GAC/C,IAAIC,EAAgB,CAChB,CAAEG,KAAM,GAAIC,GAAIP,GAAcF,OAAYva,EAAY,IACtD,CAAE+a,KAAM,KAAMC,GAAIP,GAAcF,OAAYva,EAAY,KAExDY,GAAU,QAAQxJ,EAAOwJ,SAAWxJ,EAAOwJ,QAAU,IACrD,QAAS+Z,IACT/Z,EAAQtU,KAAK,CAAEyuB,KAAMJ,EAAQK,QAAIhb,IACrC,IAAIib,GAAiB,QAAIra,GAAS,QAAK,SACvC,OAAO,QAAOga,GAAe,SAAU5O,GAAQ,OAA8C,IAAvCiP,EAAelhB,QAAQiS,EAAK+O,SAAiB9sB,OAAO2S,GAYxFsa,CAAW9jB,EAAQmjB,EAAWE,EAAYE,GACpD1P,GAAU,QAAU7T,EAAO6T,WAAa7T,EAAO6T,UAAYlQ,EAAKkQ,SAOpE,QAAOpf,KAAM,CAAEqL,GAAIA,EAAI6D,KAAMA,EAAM2G,SAAUA,EAAU+Y,WAAYA,EAAYjB,QAASA,EAASkB,IAAKA,EAAKC,OAAQA,EAAQ/Z,QAASA,EAASqK,QAASA,EAASG,MAAOmP,EAAWnjB,OAAQA,IAoG7L,OAlGA8hB,EAAMrM,OAAS,SAAU5S,EAAQ4S,QACd,IAAXA,IAAqBA,EAAS,IAElC,IADA,IAAI1F,EAAc,GACTwE,EAAK,EAAGwP,EAAWlhB,EAAQ0R,EAAKwP,EAASlgB,OAAQ0Q,IAAM,CAC5D,IAAI9Q,EAAQsgB,EAASxP,GACrBxE,EAAYtM,EAAM3D,IAAM2D,EAAMxK,MAAMwc,EAAOhS,EAAM3D,KAErD,OAAOiQ,GAaX+R,EAAMkC,QAAU,SAAUnhB,EAAQohB,EAASC,GAGvC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IAC7BrhB,EAAO9E,QAAO,SAAU0F,GAAS,OAAQA,EAAME,KAAKC,OAAOqgB,EAAQxgB,EAAM3D,IAAKokB,EAAQzgB,EAAM3D,SAWvGgiB,EAAMle,OAAS,SAAUf,EAAQohB,EAASC,GAGtC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IACsB,IAAnDpC,EAAMkC,QAAQnhB,EAAQohB,EAASC,GAASrgB,QAGnDie,EAAMqC,UAAY,SAAUthB,EAAQ4S,GAEhC,YADe,IAAXA,IAAqBA,EAAS,IAC3B5S,EAAOO,KAAI,SAAUK,GAAS,OAAOA,EAAM0gB,UAAU1O,EAAOhS,EAAM3D,QAASuD,OAAO,MAAU,IAEvGye,EAAMxrB,UAAU8tB,eAAiB,SAAUnrB,GACvC,OAAOxE,KAAK4uB,YAAc5uB,KAAKkP,KAAKC,OAAOnP,KAAKwE,QAASA,IAM7D6oB,EAAMxrB,UAAU2C,MAAQ,SAAUA,GAC9B,IAAI2L,EAAQnQ,KA0BZ,OADAwE,EAR2B,SAAUR,GACjC,IAAK,IAAI8b,EAAK,EAAGuL,EAAKlb,EAAM4E,QAAS+K,EAAKuL,EAAGjc,OAAQ0Q,IAAM,CACvD,IAAIrM,EAAQ4X,EAAGvL,GACf,GAAIrM,EAAMyb,OAASlrB,EACf,OAAOyP,EAAM0b,GAErB,OAAOnrB,EAEH4rB,CAAqBprB,IACtB,QAAYA,GAtBG,WAClB,GAAI2L,EAAM0f,mBACN,OAAO1f,EAAM0f,mBAAmBC,aACpC,IAAK,cACD,MAAM,IAAIrd,MAAM,+DACpB,IAAIqd,EAAe,qBAA0B3f,EAAM5E,OAAOyiB,MAC1D,GAAI8B,MAAAA,IAAwD3f,EAAMjB,KAAKgK,GAAG4W,GACtE,MAAM,IAAIrd,MAAM,kBAAoBqd,EAAe,oBAAsB3f,EAAM9E,GAAK,sCAAwC8E,EAAMjB,KAAK1J,KAAO,KAIlJ,OAHI2K,EAAM5E,OAAOyiB,KAAkB,cAC/B7d,EAAM0f,mBAAqB,CAAEC,aAAcA,IAExCA,EAWiBC,GAAoB/vB,KAAKkP,KAAK8gB,WAAWxrB,IAEzE6oB,EAAMxrB,UAAUouB,SAAW,WACvB,OAAOjwB,KAAK6V,WAAasX,EAAQO,QAErCL,EAAMxrB,UAAU6tB,UAAY,SAAUlrB,GAElC,KAAK,QAAYA,IAAoB,OAAVA,IAAmBxE,KAAK4uB,WAC/C,OAAO,EAEX,IAAI/T,EAAa7a,KAAKkP,KAAK8gB,WAAWxrB,GACtC,IAAKxE,KAAKkP,KAAKgK,GAAG2B,GACd,OAAO,EAEX,IAAIqV,EAAUlwB,KAAKkP,KAAK2F,OAAOgG,GAC/B,SAAS,QAASqV,KAAalwB,KAAKkP,KAAKoV,QAAQ7a,KAAKymB,KAE1D7C,EAAMxrB,UAAUiT,SAAW,WACvB,MAAO,UAAY9U,KAAKqL,GAAK,IAAMrL,KAAKkP,KAAO,aAAelP,KAAK8uB,OAAS,eAAiB9uB,KAAK4uB,WAAa,KAE5GvB,EAtHe,4OChDtB8C,EAA2B,WAM3B,SAASA,EAAUjd,GAEflT,KAAKskB,QAAU,KAEftkB,KAAKof,SAAU,GACf,QAAOpf,KAAMkT,GAgDjB,OA5CAid,EAAUtuB,UAAUqX,GAAK,SAAUlV,EAAK6B,GACpC,OAAO,GAGXsqB,EAAUtuB,UAAUgT,OAAS,SAAU7Q,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUoT,OAAS,SAAUjR,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUsN,OAAS,SAAUsO,EAAGmB,GAEtC,OAAOnB,GAAKmB,GAEhBuR,EAAUtuB,UAAUuuB,YAAc,WAC9B,IAAIC,EAAMrwB,KAAKskB,QAAQxP,WACvB,OAAOub,EAAItJ,OAAO,EAAGsJ,EAAIjhB,OAAS,IAEtC+gB,EAAUtuB,UAAUiT,SAAW,WAC3B,MAAO,cAAgB9U,KAAKwF,KAAO,KAGvC2qB,EAAUtuB,UAAUmuB,WAAa,SAAUhsB,GACvC,OAAOhE,KAAKkZ,GAAGlV,GAAOA,EAAMhE,KAAKiV,OAAOjR,IAY5CmsB,EAAUtuB,UAAU8sB,SAAW,SAAU2B,EAAML,GAC3C,IAAKK,EACD,OAAOtwB,KACX,GAAa,SAATswB,IAAoBL,EACpB,MAAM,IAAIxd,MAAM,kDACpB,OAAO,IAAI8d,EAAUvwB,KAAMswB,IAExBH,EA3DmB,GA+D9B,SAASI,EAAUrhB,EAAMohB,GACrB,IAAIngB,EAAQnQ,KAEZ,SAASwwB,EAAUxsB,GACf,OAAO,QAAQA,GAAOA,GAAM,QAAUA,GAAO,CAACA,GAAO,GAczD,SAASysB,EAAajwB,EAAUkwB,GAC5B,OAAO,SAAqB1sB,GACxB,IAAI,QAAQA,IAAuB,IAAfA,EAAIoL,OACpB,OAAOpL,EACX,IAAI0b,EAAM8Q,EAAUxsB,GAChBsC,GAAS,QAAIoZ,EAAKlf,GACtB,OAAyB,IAAlBkwB,EAAgF,KAAvD,QAAOpqB,GAAQ,SAAUgJ,GAAK,OAAQA,KAAMF,OAjBpF,SAAqBpL,GACjB,OAAQA,EAAIoL,QACR,KAAK,EACD,OACJ,KAAK,EACD,MAAgB,SAATkhB,EAAkBtsB,EAAI,GAAKA,EACtC,QACI,OAAOA,GAUgF2sB,CAAYrqB,IAI/G,SAASsqB,EAAmBpwB,GACxB,OAAO,SAAqBqwB,EAAMC,GAC9B,IAAIC,EAAOP,EAAUK,GAAOG,EAAQR,EAAUM,GAC9C,GAAIC,EAAK3hB,SAAW4hB,EAAM5hB,OACtB,OAAO,EACX,IAAK,IAAIiO,EAAI,EAAGA,EAAI0T,EAAK3hB,OAAQiO,IAC7B,IAAK7c,EAASuwB,EAAK1T,GAAI2T,EAAM3T,IACzB,OAAO,EAEf,OAAO,GAGf,CAAC,SAAU,SAAU,SAAU,cAActc,SAAQ,SAAUyE,GAC3D,IAAIyrB,EAAc/hB,EAAK1J,GAAMlC,KAAK4L,GAC9BgiB,EAAqB,WAAT1rB,EAAoBorB,EAAqBH,EACzDtgB,EAAM3K,GAAQ0rB,EAAUD,OAE5B,QAAOjxB,KAAM,CACT2tB,QAASze,EAAKye,QACdnoB,KAAM0J,EAAK1J,KACX8e,QAASpV,EAAKoV,QACdlF,QAASlQ,EAAKkQ,QACdyP,IAAK3f,EAAK2f,IACV3V,GAAIuX,EAAavhB,EAAKgK,GAAG5V,KAAK4L,IAAO,GACrCiiB,WAAYb,+GC5DZc,kUApDJC,EAA4B,WAC5B,SAASA,IACLrxB,KAAKwlB,SAAU,EACfxlB,KAAKsxB,UAAY,GACjBtxB,KAAKuxB,cAAe,QAAKF,EAAWxvB,UAAW,CAC3C,OACA,SACA,QACA,OACA,MACA,OACA,OACA,OACA,QAIJ7B,KAAK+D,OAAQ,SAAQ,QAAI/D,KAAKuxB,cADf,SAAU9X,EAAYjU,GAAQ,OAAO,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,OAClC,IA+B3D,OA7BA4X,EAAWxvB,UAAUqT,QAAU,WAC3BlV,KAAK+D,MAAQ,IAOjBstB,EAAWxvB,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpD,KAAK,QAAU/X,GACX,OAAOzZ,KAAK+D,MAAMyB,GACtB,GAAIxF,KAAK+D,MAAMrB,eAAe8C,GAC1B,MAAM,IAAIiN,MAAM,iBAAmBjN,EAAO,+BAO9C,OANAxF,KAAK+D,MAAMyB,GAAQ,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,IACpD+X,IACAxxB,KAAKsxB,UAAU7wB,KAAK,CAAE+E,KAAMA,EAAM0N,IAAKse,IAClCxxB,KAAKwlB,SACNxlB,KAAKyxB,mBAENzxB,MAEXqxB,EAAWxvB,UAAU4vB,gBAAkB,WACnC,KAAOzxB,KAAKsxB,UAAUliB,QAAQ,CAC1B,IAAIF,EAAOlP,KAAKsxB,UAAUrvB,QAC1B,GAAIiN,EAAKoV,QACL,MAAM,IAAI7R,MAAM,sDACpB,QAAOzS,KAAK+D,MAAMmL,EAAK1J,MAAO,qBAA0B0J,EAAKgE,QAG9Dme,EAhDoB,GAoDvBD,EAAkB,SAAUle,GAC5B,IAAIwe,EAAc,SAAU1tB,GAAO,OAAe,MAAPA,EAAcA,EAAI8Q,WAAa9Q,GACtE2tB,EAAkB,CAClB9c,OAAQ6c,EACRzc,OAAQyc,EACRxY,IAAI,IAAAA,IAAG0Y,QACPtN,QAAS,KAETnV,OAAQ,SAAUsO,EAAGmB,GAAK,OAAOnB,GAAKmB,IAE1C,OAAO,QAAO,GAAI+S,EAAiBze,KAGvC,QAAOme,EAAWxvB,UAAW,CACzB0D,OAAQ6rB,EAAgB,IACxBjpB,KAAMipB,EAAgB,CAClB9M,QAAS,UAEbuN,MAAOT,EAAgB,IACvBU,KAAMV,EAAgB,CAClBhS,SAAS,IAEb2S,IAAKX,EAAgB,CACjBnc,OAAQ,SAAUjR,GAAO,OAAOqlB,SAASrlB,EAAK,KAC9CkV,GAAI,SAAUlV,GACV,QAAQ,QAAkBA,IAAQhE,KAAKiV,OAAOjR,EAAI8Q,cAAgB9Q,GAEtEsgB,QAAS,UAEb0N,KAAMZ,EAAgB,CAClBvc,OAAQ,SAAU7Q,GAAO,OAAQA,EAAO,EAAM,GAC9CiR,OAAQ,SAAUjR,GAAO,OAA6B,IAAtBqlB,SAASrlB,EAAK,KAC9CkV,IAAI,IAAAA,IAAG+Y,SACP3N,QAAS,QAEb4N,KAAMd,EAAgB,CAClBvc,OAAQ,SAAU7Q,GACd,OAAQhE,KAAKkZ,GAAGlV,GAEV,CAACA,EAAImuB,eAAgB,KAAOnuB,EAAIouB,WAAa,IAAItwB,OAAO,IAAK,IAAMkC,EAAIquB,WAAWvwB,OAAO,IAAImR,KAAK,UADlGkB,GAGVc,OAAQ,SAAUjR,GACd,GAAIhE,KAAKkZ,GAAGlV,GACR,OAAOA,EACX,IAAIgY,EAAQhc,KAAKsyB,QAAQ7oB,KAAKzF,GAC9B,OAAOgY,EAAQ,IAAIuW,KAAKvW,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,SAAM7H,GAEhE+E,GAAI,SAAUlV,GAAO,OAAOA,aAAeuuB,OAASjJ,MAAMtlB,EAAIwuB,YAC9DrjB,OAAQ,SAAUsjB,EAAGlV,GACjB,MAAO,CAAC,cAAe,WAAY,WAAW3O,QAAO,SAAUsL,EAAKvZ,GAAM,OAAOuZ,GAAOuY,EAAE9xB,OAAU4c,EAAE5c,QAAU,IAEpH2jB,QAAS,0DACTgO,QAAS,0DAEbI,KAAMtB,EAAgB,CAClBvc,OAAQ,KACRI,OAAQ,KACRiE,IAAI,IAAAA,IAAG3F,QACPpE,OAAQ,KACRmV,QAAS,UAGbJ,IAAKkN,EAAgB,CACjBvc,OAAQ,KACRI,OAAQ,KACRiE,GAAI,WAAc,OAAO,GACzB/J,OAAQ,kLCjJhBwjB,EAA6B,WAC7B,SAASA,EAAYvkB,QACF,IAAXA,IAAqBA,EAAS,KAClC,QAAOpO,KAAMoO,GA4BjB,OAlBAukB,EAAY9wB,UAAU+wB,SAAW,SAAUC,EAAWC,EAAUC,GAC5D,IAAIC,EACAC,GAAU,QAAUH,EAAUC,GAAM9nB,EAAY,GAAIioB,EAAc,GACtE,IAAK,IAAI7V,KAAK4V,EACV,GAAKA,EAAQ5V,IAAO4V,EAAQ5V,GAAGjP,SAE/B4kB,EAAezf,OAAOC,KAAKyf,EAAQ5V,GAAGjP,SACpBgB,OAElB,IAAK,IAAIsO,KAAKsV,EACNE,EAAYhlB,QAAQ8kB,EAAatV,KAAO,IAE5CwV,EAAYzyB,KAAKuyB,EAAatV,IAC9BzS,EAAU+nB,EAAatV,IAAM1d,KAAKgzB,EAAatV,KAGvD,OAAO,QAAO,GAAIzS,EAAW4nB,IAE1BF,EA/BqB,+RCS5BQ,EAA0B,WAC1B,SAASA,EAASC,GACd,GAAIA,aAAuBD,EAAU,CACjC,IAAI5kB,EAAO6kB,EACXpzB,KAAKyN,MAAQc,EAAKd,MAClBzN,KAAKwO,YAAcD,EAAKC,YAAY1M,QACpC9B,KAAKsb,aAAc,QAAO,GAAI/M,EAAK+M,aACnCtb,KAAK+X,YAAcxJ,EAAKwJ,YAAYjW,QACpC9B,KAAKwa,MAAQjM,EAAKiM,OAASjM,EAAKiM,MAAM1Y,YAErC,CACD,IAAI2L,EAAQ2lB,EACZpzB,KAAKyN,MAAQA,EACbzN,KAAKwO,YAAcf,EAAM4lB,WAAW,CAAEjU,SAAS,IAC/Cpf,KAAKsb,YAAc,GACnBtb,KAAK+X,YAActK,EAAMsK,YAAYpJ,KAAI,SAAUqE,GAAO,OAAOA,EAAItG,YA+C7E,OA5CAymB,EAAStxB,UAAU6K,MAAQ,WACvB,OAAO,IAAIymB,EAASnzB,OAGxBmzB,EAAStxB,UAAUyxB,eAAiB,SAAUllB,GAG1C,OADApO,KAAKsb,YAActb,KAAKwO,YAAYI,QAAO,SAAUsR,EAAMqT,GAAQ,OAAO,QAAWrT,EADtC,EAAnBsT,EAC2ED,GAD9CloB,GAAImoB,EAAShvB,MAAM4J,EAAOolB,EAASnoB,OAA1E,IAAUmoB,IACsF,IAC3GxzB,MAGXmzB,EAAStxB,UAAU4xB,UAAY,SAAUjuB,GACrC,OAAO,QAAKxF,KAAKwO,aAAa,QAAO,KAAMhJ,KAM/C2tB,EAAStxB,UAAUsN,OAAS,SAAUZ,EAAMmlB,GACxC,IAAIC,EAAO3zB,KAAK2zB,KAAKplB,EAAMmlB,GAC3B,OAAOC,GAAwB,IAAhBA,EAAKvkB,QAcxB+jB,EAAStxB,UAAU8xB,KAAO,SAAUplB,EAAMmlB,GACtC,GAAI1zB,KAAKyN,QAAUc,EAAKd,MACpB,OAAO,EACX,IAAIW,EAASslB,EAAWA,EAAS1zB,MAAQA,KAAKwO,YAC9C,OAAO,YAAcJ,EAAQpO,KAAKsb,YAAa/M,EAAK+M,cAMxD6X,EAASzmB,MAAQ,SAAU6B,GAAQ,OAAOA,EAAK7B,SACxCymB,EA9DkB,mWCHzBS,EAA2B,WAC3B,SAASA,KA4JT,OAzJAA,EAAUC,gBAAkB,SAAUC,EAAU3rB,GAC5C,IAAIsF,GAAQ,QAAKtF,GAAMsF,MACvB,OAAO,IAAI,IAAYqmB,EAAUrmB,EAAOtF,EAAKwG,KAAI,QAAK,gBAAgBC,OAAO,KAAQ,IAAK,KAE9FglB,EAAUG,UAAY,SAAUvH,GAC5B,IAAIre,EAAWqe,EAAYpe,SAC3B,OAAOoe,EAAY/T,SAAStQ,KAAKwG,KAAI,SAAUlB,GAAS,OAAO,IAAI,IAASA,GAAO6lB,eAAenlB,OAGtGylB,EAAUI,YAAc,SAAUC,EAAUzH,GACxC,IAAI0H,EAASN,EAAUG,UAAUvH,GACjC,OAAIA,EAAYrsB,UAAUif,QACfwU,EAAUO,cAAcF,EAAUC,EAAQ3gB,OAAOC,KAAKgZ,EAAYpe,WAEtE8lB,GAOXN,EAAUQ,iBAAmB,SAAUttB,EAAOqB,EAAM6kB,GAEhD7kB,EACKmB,QAAO,SAAUiF,GAAQ,OAAO,QAAQye,EAAQze,EAAKd,UACrD1M,SAAQ,SAAUwN,GACnB,IAAI8lB,GAAY,QAAO9lB,EAAKd,MAAM+M,OAAS,IACvC8Z,EAAUV,EAAUU,QAAQnsB,GAAM,SAAUoY,GAAK,OAAOA,IAAMhS,KAC9DgmB,EAAcF,EAAU1lB,KAAI,SAAUmL,GAAQ,OAAOhT,EAAM0tB,iBAAiBF,EAASxa,MACzFvL,EAAKiM,MAAQ+Z,EAAY3lB,OAAO,KAAS,QAcjDglB,EAAUO,cAAgB,SAAUF,EAAUC,EAAQO,QACnC,IAAXA,IAAqBA,EAAS,IAKlC,IAAIC,EAAYT,EACXtlB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKC,eAClCI,OAAO,KAAS,IAChBtF,QAAO,SAAU0F,GAAS,OAAQA,EAAMoQ,WACxCzQ,KAAI,QAAK,OAiBd,OAAOulB,EAAOvlB,KAZd,SAAiCgmB,GAE7B,IAAIC,GAAc,QAAO,GAAID,GAAUA,EAAOrZ,aAE1CuZ,GAAoB,QAAKD,EAAaH,GAC1CG,GAAc,QAAKA,EAAaH,GAChC,IAnBmBtsB,EAAMsF,EACrBc,EAkBAumB,GAAgB,SAnBD3sB,EAmBoB8rB,EAnBdxmB,EAmBwBknB,EAAOlnB,MAlBpDc,GAAO,QAAKpG,GAAM,QAAO,QAASsF,KAC/B,QAAO,GAAIc,GAAQA,EAAK+M,cAiBmC,IAAIoZ,GAElEK,GAAe,QAAOH,EAAaE,EAAeD,GACtD,OAAO,IAAI,IAASF,EAAOlnB,OAAO6lB,eAAeyB,OAQzDnB,EAAUllB,YAAc,SAAUulB,EAAUC,EAAQc,GAIhD,IAHA,IAE2BC,EAAOC,EAU9BhG,EAAMiG,EAAUlnB,EAASke,EAZzBrF,EAAMhF,KAAKD,IAAIoS,EAAS7kB,OAAQ8kB,EAAO9kB,QACvCgmB,EAAO,EAEJA,EAAOtO,GAAOmN,EAASmB,GAAM3nB,QAAUunB,IADnBC,EAC6ChB,EAASmB,GAD/CF,EACsDhB,EAAOkB,GAD7CH,EAAM9lB,OAAO+lB,EAAOtB,EAAUyB,oBAE5ED,IAUJD,GADAjG,EAAO+E,GACSnyB,MAAM,EAAGszB,GACzBnnB,EAAUihB,EAAKptB,MAAMszB,GAErB,IAAIE,EAAuBH,EAASxmB,KAVpC,SAAuB4mB,EAActmB,GACjC,IAAIxC,EAAS8oB,EAAa7oB,QAE1B,OADAD,EAAO6O,YAAc4Y,EAAOjlB,GAAKqM,YAC1B7O,KAUX,OAFA0f,EAAW+H,EAAOpyB,MAAMszB,GAEjB,CAAElG,KAAMA,EAAMC,GADhBmG,EAAqBlzB,OAAO+pB,GACJgJ,SAAUA,EAAUG,qBAAsBA,EAAsBrnB,QAASA,EAASke,SAAUA,IAiB7HyH,EAAU4B,SAAW,SAAUC,EAAOC,EAAOhC,GACzC,IAAIiC,GAAO,EAEX,OADa,QAAYF,EAAOC,GAClB9mB,QAAO,SAAU4mB,EAAUnK,GACrC,IAAIuK,EAAQvK,EAAG,GAAIwK,EAAQxK,EAAG,GAE9B,OADAsK,EAAOA,IAASC,EAAMzmB,OAAO0mB,EAAOnC,IACtB8B,EAAWA,EAASpzB,OAAOwzB,KAC1C,KAUPhC,EAAUzkB,OAAS,SAAUsmB,EAAOC,EAAOhC,GACvC,OAAO+B,EAAMrmB,SAAWsmB,EAAMtmB,QAAUwkB,EAAU4B,SAASC,EAAOC,EAAOhC,GAAUtkB,SAAWqmB,EAAMrmB,QAYxGwkB,EAAUU,QAAU,SAAUnsB,EAAM2tB,GAChC,IAAIvnB,GAAO,QAAKpG,EAAM2tB,GAClBC,EAAa5tB,EAAK+F,QAAQK,GAC9B,OAAuB,IAAhBwnB,OAAoB5hB,EAAYhM,EAAKrG,MAAM,EAAGi0B,EAAa,IAEtEnC,EAAUyB,iBAAmB,SAAU9mB,GACnC,OAAOA,EAAKd,MAAM4lB,WAAW,CAAEjU,SAAS,IAAS9V,QAAO,SAAU0F,GAAS,OAAQA,EAAM2e,YAG7FiG,EAAUtY,YAAc,SAAUnT,GAAQ,OAAOA,EAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,QAAO2L,EAAK3L,EAAK+M,eAAiB,KACtHsY,EA7JmB,yGCPvB,IAAIoC,EAAkB,CACzB/lB,KAAM,CACFgmB,KAAM,OACNC,MAAO,SAEXpd,MAAO,CACHqd,KAAM,OACNC,OAAQ,sbCgBZnkB,EAA4B,WAC5B,SAASA,EAAWokB,EAAMne,EAAWpG,EAAMwkB,EAAQ3uB,GAG/C,GAFA3H,KAAKu2B,UAAW,EAChBv2B,KAAKyD,aAAU0Q,EACXkiB,aAAgBpkB,GAChB,QAAOjS,KAAMq2B,QAEZ,IAAI,QAAWne,GAAY,CAC5B,IAAI,QAAkBme,GAClB,MAAM,IAAI5jB,MAAM,gDACpB,KAAK,QAAWyF,GACZ,MAAM,IAAIzF,MAAM,2DACpBzS,KAAKuhB,MAAQ8U,EACbr2B,KAAKs2B,OAASA,EACdt2B,KAAKkY,UAAYA,EACjBlY,KAAK8R,KAAOA,GAAQ,GACpB9R,KAAK2H,KAAOA,EACZ3H,KAAKu2B,cAAoBpiB,IAATxM,EAChB3H,KAAKyD,QAAUzD,KAAKu2B,SAAW,YAAiBv2B,KAAK2H,WAAQwM,OAE5D,IAAI,QAASkiB,IAASA,EAAK9U,QAAU8U,EAAK3zB,eAAe,cAAgB2zB,EAAK3zB,eAAe,SAAU,CACxG,IAAI8zB,EAAUH,EACd,OAAO,IAAIpkB,EAAWukB,EAAQjV,MAAOiV,EAAQte,UAAWse,EAAQ1kB,KAAM0kB,EAAQF,OAAQE,EAAQ7uB,OA+DtG,OA5DAsK,EAAWpQ,UAAUgX,UAAY,SAAUpL,GACvC,IAAIgpB,EAAaz2B,KAAKs2B,QAAU,GAC5BI,EAAejpB,GAASA,EAAMkpB,eAAkB,GACpD,MAAO,CACH1mB,KAAMwmB,EAAWxmB,MAAQymB,EAAYzmB,MA5CvC,OA6CE6I,MAAO2d,EAAW3d,OAAS4d,EAAY5d,OA5CxC,SAsDP7G,EAAWpQ,UAAU8K,QAAU,SAAUiqB,EAAgBhnB,GACrD,IAAIO,EAAQnQ,KACR+G,EAAK,OAOLwH,EAAOqoB,EAAeC,SAAS72B,MAC/ByN,EAAQc,GAAQA,EAAKd,MACrBqpB,EAAc92B,KAAK6Y,UAAUpL,GAAOqL,MACpCie,GAAoB,QAAWD,GAAeA,EAAc,KAUhE,OAAQ92B,KAAKyD,QAAUsD,EAClBkJ,OACAlF,MApB2B,WAC5B,OAAOhE,EAAG0U,IAAImb,EAAeI,gBAAgB7mB,GAAOxB,KAAI,SAAUqJ,GAAc,OAAOA,EAAWtH,IAAIkmB,EAAgBhnB,UAoBrH7E,MAjBiB,SAAUksB,GAAgB,OAAO9mB,EAAM+H,UAAU/V,MAAM,KAAM80B,MAkB9ElsB,KAAKgsB,GACLhsB,MAboB,SAAUmsB,GAK/B,OAJA/mB,EAAMxI,KAAOuvB,EACb/mB,EAAMomB,UAAW,EACjBpmB,EAAM+H,UAAY,KAClB,6BAA8B/H,EAAOP,GAC9BO,EAAMxI,SAgBrBsK,EAAWpQ,UAAU6O,IAAM,SAAUkmB,EAAgBhnB,GACjD,OAAO5P,KAAKyD,SAAWzD,KAAK2M,QAAQiqB,EAAgBhnB,IAExDqC,EAAWpQ,UAAUiT,SAAW,WAC5B,MAAO,sBAAuB,QAAU9U,KAAKuhB,OAAS,gBAAkBvhB,KAAK8R,KAAKnD,IAAI,MAAa,MAEvGsD,EAAWpQ,UAAU6K,MAAQ,WACzB,OAAO,IAAIuF,EAAWjS,OAE1BiS,EAAWklB,SAAW,SAAU5V,EAAO5Z,GAAQ,OAAO,IAAIsK,EAAWsP,GAAO,WAAc,OAAO5Z,IAAS,KAAM,KAAMA,IAC/GsK,EArFoB,4qBCd3BmlB,EAAQ,SACRC,EAAY,CAACD,EAAMlB,MAAOkB,EAAMnB,MAChCqB,EAAc,CAACF,EAAMlB,OAarB9tB,EAAgC,WAChC,SAASA,EAAemvB,GACpBv3B,KAAKu3B,MAAQA,EA8IjB,OA3IAnvB,EAAevG,UAAU+W,UAAY,WACjC,OAAO5Y,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO2L,EAAI9X,OAAOmM,EAAKwJ,YAAYpJ,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,YAAe,IAAI3S,OAAO,KAAO,KAQpJxG,EAAevG,UAAUiM,cAAgB,SAAUyT,GAC/C,IAAIiU,EAAWx1B,KAAKu3B,MACf5oB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKwJ,eAClCnJ,OAAO,KAAS,IAChBtF,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC9C,OAAO,QAAKiU,IAGhBptB,EAAevG,UAAUgX,UAAY,SAAUb,GAC3C,IAAIzJ,EAAOvO,KAAK62B,SAAS7e,GACzB,OAAOA,EAAWa,UAAUtK,EAAKd,QAyBrCrF,EAAevG,UAAUkS,WAAa,SAAUtG,GAC5C,OAAO,IAAIrF,EAAe,YAAkBpI,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAOA,EAAKd,QAAUA,OAiBpGrF,EAAevG,UAAU21B,eAAiB,SAAUC,EAAgBhqB,GAChE,IAAIc,GAAO,QAAKvO,KAAKu3B,OAAO,QAAO,QAAS9pB,IACxC+F,EAAOikB,EAAe9oB,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,SACtDhT,EAAKwJ,YAAcxJ,EAAKwJ,YAAYzO,QAAO,SAAUiU,GAAK,OAAkC,IAA3B/J,EAAKtF,QAAQqP,EAAEgE,UAAkBnf,OAAOq1B,IAS7GrvB,EAAevG,UAAU61B,YAAc,SAAUznB,EAAML,GACnD,IAAIO,EAAQnQ,UACC,IAATiQ,IAAmBA,EAAO,QAE9B,IAGI0nB,IAHa,QAAQN,EAAWpnB,GAAQA,EAAO,UAGjB,eAA6BqnB,EAAcD,EAE7E,sBAAuBr3B,KAAKu3B,MAAOtnB,EAAML,GACzC,IAAIgoB,EAAgB,SAAUC,EAAcC,GAAe,OAAO,SAAU9f,GACxE,OAAO,QAAQ6f,EAAc1nB,EAAM0I,UAAUb,GAAY8f,MAIzDvc,EAAWvb,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAC5C,IAAIwpB,EAAkBxpB,EAAKwJ,YAAYzO,OAAOsuB,EAAcD,EAAc,SACtEK,EAASD,EAAgBzuB,OAAOsuB,EAAc,CAAC,UAAW,UAC1DK,EAAOF,EAAgBzuB,QAAO,QAAIsuB,EAAc,CAAC,UAAW,WAE5D7jB,EAAa5D,EAAM4D,WAAWxF,EAAKd,OACnCyqB,EAAY,SAAU3a,GACtB,OAAOA,EACF7M,IAAIqD,EAAYnE,GAEhB7E,MAAK,SAAUvG,GAAS,MAAO,CAAG+c,MAAOhE,EAAEgE,MAAO/c,MAAOA,OAGlE,OADAwzB,EAAOj3B,QAAQm3B,GACRhe,EAAI9X,OAAO61B,EAAKtpB,IAAIupB,MAC5B,IAEH,OAAO,WAAgB3c,IAE3BnT,EAAevG,UAAUs2B,SAAW,WAChC,OAAOn4B,KAAKo4B,YAAcp4B,KAAKo4B,UAAY,IAAIC,EAAer4B,QAElEoI,EAAevG,UAAUg1B,SAAW,SAAU7e,GAC1C,OAAO,QAAKhY,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAO,QAAQA,EAAKwJ,YAAaC,OAO/E5P,EAAevG,UAAUm1B,gBAAkB,SAAUhf,GACjD,IAAI7H,EAAQnQ,KACRuO,EAAOvO,KAAK62B,SAAS7e,GAIrBsgB,GADU,YAAkBt4B,KAAKu3B,OAAO,SAAUjoB,GAAK,OAAOA,IAAMf,MAAYvO,KAAKu3B,OAEpF3oB,QAAO,SAAUsL,EAAKqe,GAAS,OAAOre,EAAI9X,OAAOm2B,EAAMxgB,eAAiB,IACxEzO,QAAO,SAAU0J,GAAO,OAAOA,IAAQgF,KAW5C,OAAOA,EAAWlG,KAAKnD,KAVH,SAAU4S,GAC1B,IAAIiU,EAAW8C,EAAqBhvB,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC7E,GAAIiU,EAASpmB,OACT,OAAO,QAAKomB,GAChB,IAAIgD,EAAeroB,EAAMgoB,WAAWM,UAAUlX,GAC9C,IAAI,QAAYiX,GACZ,MAAM,IAAI/lB,MAAM,+CAAgD,QAAU8O,IAE9E,OAAO,IAAI,IAAWA,GAAO,WAAc,OAAOiX,IAAiB,GAAIA,OAIxEpwB,EAhJwB,GAoJ/BiwB,EAAgC,WAChC,SAASA,EAAexnB,GACpB7Q,KAAK6Q,QAAUA,EACf7Q,KAAK04B,OAAS14B,KAAK0Q,IAlKQ,oBAkKsB,cAwBrD,OAtBA2nB,EAAex2B,UAAU6O,IAAM,SAAU6Q,GACrC,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,GAAIvJ,EAAY,CACZ,GAAiD,WAA7ChY,KAAK6Q,QAAQgI,UAAUb,GAAYc,MACnC,OAAOd,EAAWtH,IAAI1Q,KAAK6Q,SAE/B,IAAKmH,EAAWue,SACZ,MAAM,IAAI9jB,MAAM,yCAA0C,QAAUuF,EAAWuJ,QAEnF,OAAOvJ,EAAWrQ,KAEtB,OAAO3H,KAAKy4B,UAAUlX,IAE1B8W,EAAex2B,UAAU82B,SAAW,SAAUpX,GAC1C,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,OAAIvJ,EACOA,EAAWtH,IAAI1Q,KAAK6Q,SACxB,YAAiB7Q,KAAK04B,OAAOhoB,IAAI6Q,KAE5C8W,EAAex2B,UAAU42B,UAAY,SAAUlX,GAC3C,OAAOvhB,KAAK04B,QAAU14B,KAAK04B,OAAOhoB,IAAI6Q,IAEnC8W,EA3BwB,q2BC/J/BO,EAAkB,EAMlBC,GAAsB,QAAS,mBAJnB,CAAC,MAAO,OAAQ,SAAU,OAAQ,aAM9CC,GAAqB,QAAS,iBAJlB,CAAC,OAAQ,WAAY,OAAQ,WAAY,YAAa,eAUlEpiB,EAA0B,WAQ1B,SAASA,EAASU,EAAiBC,QACP,IAApBD,IAA8BA,EAAkByhB,QAC7B,IAAnBxhB,IAA6BA,EAAiByhB,GAClD94B,KAAKoX,gBAAkBA,EACvBpX,KAAKqX,eAAiBA,EACLrX,KAAKmb,IAAMyd,IACX54B,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAe,GAErCh5B,KAAKqI,MAAQ,KAEbrI,KAAK+W,YAAc,IAAI,IAAY/W,MAEnCA,KAAKsY,QAAU,IAAI,IAEnBtY,KAAK8sB,kBAAoB,IAAI,IAAkB9sB,MAK/CA,KAAK4U,kBAAoB,IAAI,IAAkB5U,MAK/CA,KAAKmc,UAAY,IAAI,IAAUnc,MAE/BA,KAAKiX,WAAa,IAAI,IAAWjX,MAEjCA,KAAK4W,cAAgB,IAAI,IAAc5W,MAEvCA,KAAK6W,aAAe,IAAI,IAAa7W,MAErCA,KAAKi5B,SAAW,GAChBj5B,KAAK+W,YAAY/M,WAAWC,iBAAiBjK,KAAK4W,cAAcgH,QAChE5d,KAAKsY,QAAQwa,SAAW9yB,KAAK4W,cAAcgH,OAC3C5d,KAAKsY,QAAQwN,QAAU9lB,KAAKsY,QAAQwa,SAASplB,KAC7C1N,KAAKk5B,WAAWl5B,KAAKsY,SACrBtY,KAAKk5B,WAAWl5B,KAAK6W,cACrB7W,KAAKk5B,WAAWl5B,KAAK4W,eACrB5W,KAAKk5B,WAAWl5B,KAAK8sB,mBACrB9sB,KAAKk5B,WAAWl5B,KAAKiX,YACrBjX,KAAKk5B,WAAW9hB,GAChBpX,KAAKk5B,WAAW7hB,GAgGpB,OA7FAX,EAAS7U,UAAUq3B,WAAa,SAAUA,GACtCl5B,KAAKg5B,aAAav4B,KAAKy4B,IAa3BxiB,EAAS7U,UAAUqT,QAAU,SAAUgkB,GACnC,IAAI/oB,EAAQnQ,KACRk5B,IAAc,QAAWA,EAAWhkB,SACpCgkB,EAAWhkB,QAAQlV,OAGvBA,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAal3B,QAAQf,SAAQ,SAAUo4B,GACxC,IACyB,mBAAdA,EAAEjkB,SAA0BikB,EAAEjkB,QAAQ/E,IAC7C,QAAWA,EAAM6oB,aAAcG,GAEnC,MAAOC,UAwDf1iB,EAAS7U,UAAUw3B,OAAS,SAAUA,EAAQl5B,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAIm5B,EAAiB,IAAID,EAAOr5B,KAAMG,GACtC,IAAKm5B,EAAe9zB,KAChB,MAAM,IAAIiN,MAAM,+CAAiD6mB,GAErE,OADAt5B,KAAKg5B,aAAav4B,KAAK64B,GACft5B,KAAKi5B,SAASK,EAAe9zB,MAAQ8zB,GAEjD5iB,EAAS7U,UAAU03B,UAAY,SAAUC,GACrC,OAAOA,EAAax5B,KAAKi5B,SAASO,IAAc,QAAOx5B,KAAKi5B,WAEzDviB,EAnJkB,ijBCf7B,SAAS+iB,EAAYhsB,GACjB,OAAOA,EAAMjI,KAEjB,SAASk0B,EAAYjsB,GAEjB,OADAA,EAAMC,KAAKsG,QAAU,WAAc,OAAOvG,GACnCA,EAAMC,KAEjB,SAASisB,EAAYlsB,GAIjB,OAHIA,EAAM2M,QAAU3M,EAAM2M,OAAOzS,OAC7B8F,EAAM9F,KAAO8F,EAAMC,KAAK/F,MAAO,QAAQ8F,EAAM2M,OAAOzS,KAAM8F,EAAM9F,OAE7D8F,EAAM9F,KAEjB,IAAIiyB,EAAgB,SAAUC,EAA4Bjc,GACtD,OAAO,SAAoBhK,GACvB,IAAIkmB,EAAWlmB,EAAYlG,KAG3B,GAAIosB,GAAYA,EAASroB,KAAOqoB,EAASt0B,MAAQs0B,EAASt0B,KAAKwW,MAAM,WAAY,CAC7E,IAAI+d,EAAc,IAClB,QAAKD,EAAUC,GACfA,EAAYtoB,KAAO,kBACnBqoB,EAAWC,EAEf,IAAI3f,EAASxG,EAAYwG,OACrB4f,EA/BG,SAAUvoB,GACrB,KAAK,QAASA,GACV,OAAO,EACX,IAAImM,EAAyB,MAAlBnM,EAAIhM,OAAO,GACtB,MAAO,CAAEzB,IAAK4Z,EAAOnM,EAAIwoB,UAAU,GAAKxoB,EAAKmM,KAAMA,GA2BlCsc,CAASJ,EAASroB,KAC3BA,EAAOuoB,EAAwBH,EAA2BxyB,QAAQ2yB,EAAOh2B,IAAK,CAAEyJ,MAAOqsB,IAAvEA,EAASroB,IAC7B,IAAKA,EACD,OAAO,KACX,IAAKooB,EAA2BM,UAAU1oB,GACtC,MAAM,IAAIgB,MAAM,gBAAkBhB,EAAM,eAAiBmC,EAAc,KAC3E,OAAOomB,GAAUA,EAAOpc,KAAOnM,GAAQ2I,GAAUA,EAAOggB,WAAcxc,KAAQnM,IAAI4oB,OAAO5oB,KAG7F6oB,EAAsB,SAAUC,GAChC,OAAO,SAA0B9sB,GAC7B,OAAQ8sB,EAAO9sB,IAAUA,EAAMgE,IAAMhE,EAAQA,EAAM2M,OAAS3M,EAAM2M,OAAOggB,UAAY,OAc7F,SAASI,EAAY/sB,GACjB,OAAOA,EAAM2M,OAAS3M,EAAM2M,OAAOjS,KAAK/F,OAAOqL,GAAkB,CAACA,GAEtE,SAASgtB,EAAgBhtB,GACrB,IAAI6L,EAAW7L,EAAM2M,QAAS,QAAO,GAAI3M,EAAM2M,OAAOd,UAAY,GAElE,OADAA,EAAS7L,EAAMjI,OAAQ,EAChB8T,EA2CJ,SAASohB,EAAmBjtB,GAE/B,IAA+BktB,EAAY3E,EA2BvC4E,EAAW,SAAUC,GAAK,OAAOA,EAAEC,SAAWD,EAAEtZ,OAEhDwZ,GAAqB,QAAQ,CAC7B,EAAC,QAAK,aAAc,SAAUF,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAE3iB,UAAW2iB,EAAE/oB,KAAM+oB,EAAEvE,UAC7F,EAAC,QAAK,cAAe,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAEG,WAAYH,EAAE/oB,MAAQ+oB,EAAEI,aAAcJ,EAAEvE,UACjH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAO,IAAIA,EAAEK,WAAe,GAAIL,EAAEvE,UACrH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAOA,EAAEM,WAAa,GAAIN,EAAEvE,OAAQuE,EAAEM,YACzH,EAAC,QAAK,eAAgB,SAAUN,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAI,KAAU,CAACA,EAAEO,aAAcP,EAAEvE,YAGrG+E,GAAmB,QAAQ,CAC3B,EAAC,SAAK,QAAK,OAAQ,MAAW,SAAU5nB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO,KAAU,CAAC9N,EAAMzP,KAAMyP,EAAM6iB,UACjH,EAAC,SAAK,QAAK,OAAQ,MAAU,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,OAAO,QAAK9N,EAAMzP,KAAMyP,EAAMzP,IAAIlC,MAAM,GAAI,GAAI2R,EAAM6iB,UAClI,EAAC,SAAK,QAAK,OAAQ,MAAa,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO9N,EAAMzP,KA/BvErD,EA+BqF8S,EAAMzP,IA9B5GuM,EAAY,cAIT5P,EAAY,SAAM4P,GAAaA,EAAU0H,SAAStX,EAAI4P,EAAUuH,WAAc,YA0BiCrE,EAAM6iB,QA/BjH,IAAU31B,EACjB4P,MAiCJ+qB,GAAkB,QAAQ,CAC1B,EAAC,IAAApiB,IAAG,KAAa,SAAUqE,GAAK,OAAOA,IACvC,CA5BmB,SAAUtD,GAAO,SAAUA,EAAIsH,QAAStH,EAAI/B,YA4B5C6iB,GACnB,CA3BoB,SAAU9gB,GAC9B,SAAWA,EAAI6gB,UAAW7gB,EAAIsH,SAAWtH,EAAIkhB,UAAYlhB,EAAI+gB,YAAc/gB,EAAImhB,aAAenhB,EAAIihB,YA0B9EH,GACpB,CAxBiB,SAAU9gB,GAC3B,SAAUA,GAAOA,EAAIjW,OAAQ,QAASiW,EAAIjW,OAAQ,QAAQiW,EAAIjW,OAAQ,QAAWiW,EAAIjW,QAuBpEq3B,GACjB,EAAC,SAAI,GAAO,SAAUphB,GAAO,MAAM,IAAIxH,MAAM,2BAA4B,QAAUwH,QAInFshB,EAAO9tB,EAAMd,QAEjB,QADY,QAAQ4uB,GAAQA,GArDGZ,EAqDmBY,EArDPvF,EAqDavoB,EAAMkpB,eAAiB,GApDpEpjB,OAAOC,KAAKmnB,GAAc,IAAIhsB,KAAI,SAAU4S,GAAS,MAAO,CAC/DA,MAAOA,EACPvd,IAAK22B,EAAWpZ,GAChBzP,UAAMqC,EACNmiB,OAAQN,EAAgBzU,SAiDnB5S,IAAI2sB,GAcrB,IAAIE,EAA8B,WAC9B,SAASA,EAAaC,EAAS7mB,GAC3B5U,KAAKy7B,QAAUA,EACf,IArIyBC,EAqIrBhuB,EAAO1N,KACP4d,EAAO,WAAc,OAAO6d,EAAQ3a,KAAK,KACzCyZ,EAAS,SAAU9sB,GAAS,MAAsB,KAAfA,EAAMjI,MAM7CxF,KAAK27B,SAAW,CACZn2B,KAAM,CAACi0B,GACP/rB,KAAM,CAACgsB,GACPtf,OAAQ,CARZ,SAAuB3M,GACnB,OAAI8sB,EAAO9sB,GACA,KACJguB,EAAQ3a,KAAKpT,EAAKkuB,WAAWnuB,KAAWmQ,MAM/CjW,KAAM,CAACgyB,GAEPloB,IAAK,CAACmoB,EAAchlB,EAAmBgJ,IAEvCwc,UAAW,CAACE,EAAoBC,IAChCnsB,OAAQ,EAtJastB,EAsJK9mB,EAAkB8mB,aArJ7C,SAAuBjuB,GAC1B,IACIouB,EAAapuB,EAAMgE,KAAOhE,EAAMgE,IAAI4hB,WAAW,CAAEjU,SAAS,KAAa,GACvE0c,GAAe,SAAO,SAAO,QAAKruB,EAAMW,QAAU,GAAIytB,EAAUltB,KAAI,QAAK,SAFvD,SAAUpD,EAAQF,GAAM,OAAOqwB,EAAa9qB,WAAWvF,EAAI,KAAMoC,EAAMC,UAG7F,OAAOmuB,EACFz5B,OAAO05B,GACPntB,KAAI,SAAUksB,GAAK,MAAO,CAACA,EAAExvB,GAAIwvB,MACjCjsB,OAAO,KAAY,OAiJpB4L,MAAO,GAEPrS,KAAM,CAACqyB,GAEPlhB,SAAU,CAACmhB,GACX1iB,YAAa,CAAC2iB,IAgEtB,OA7DAc,EAAa35B,UAAUk6B,QAAU,SAAUv2B,EAAM7E,GAC7C,IAAIg7B,EAAW37B,KAAK27B,SAChBpc,EAAQoc,EAASn2B,IAAS,GAE9B,OAAI,QAASA,MAAU,QAAU7E,GACtB4e,EAAMnQ,OAAS,EAAImQ,EAAQA,EAAM,IACvC,QAAS/Z,KAAU,QAAW7E,IAEnCg7B,EAASn2B,GAAQ+Z,EACjBoc,EAASn2B,GAAM/E,KAAKE,GACb,WAAc,OAAOg7B,EAASn2B,GAAMga,OAAOmc,EAASn2B,GAAM0I,QAAQvN,EAAI,KAAO,YAJpF,GAaJ66B,EAAa35B,UAAUm6B,MAAQ,SAAUvuB,GACrC,IAAeguB,EAANz7B,KAAmBy7B,QAASE,EAA5B37B,KAA0C27B,SAC/CvhB,EAASpa,KAAK47B,WAAWnuB,GAC7B,GAAI2M,IAAWqhB,EAAQ3a,KAAK1G,OAAQjG,GAAW,GAC3C,OAAO,KAEX,IAAK,IAAItO,KAAO81B,EACZ,GAAKA,EAASj5B,eAAemD,GAA7B,CAEA,IAAIo2B,EAAQN,EAAS91B,GAAK+I,QAAO,SAAUstB,EAAUpS,GAAQ,OAAO,SAAUmD,GAAU,OAAOnD,EAAKmD,EAAQiP,MAAiB,MAC7HzuB,EAAM5H,GAAOo2B,EAAMxuB,GAEvB,OAAOA,GAEX+tB,EAAa35B,UAAU+5B,WAAa,SAAUnuB,GAE1C,IAAIjI,EAAOiI,EAAMjI,MAAQ,GAErB22B,EAAW32B,EAAKsd,MAAM,KAM1B,GAFoB,OAFFqZ,EAASC,OAGvBD,EAASC,MACTD,EAAS/sB,OAAQ,CACjB,GAAI3B,EAAM2M,OACN,MAAM,IAAI3H,MAAM,mFAAqFjN,EAAO,KAGhH,OAAO22B,EAASlpB,KAAK,KAEzB,OAAKxF,EAAM2M,QAEJ,QAAS3M,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KADjD,IAGfg2B,EAAa35B,UAAU2D,KAAO,SAAUiI,GACpC,IAAIjI,EAAOiI,EAAMjI,KACjB,IAA2B,IAAvBA,EAAK0I,QAAQ,OAAgBT,EAAM2M,OACnC,OAAO5U,EACX,IAAIo2B,GAAa,QAASnuB,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KACtE,OAAOo2B,EAAaA,EAAa,IAAMp2B,EAAOA,GAE3Cg2B,EA5FsB,iTClL7Ba,EAA8B,WAC9B,SAASA,EAAaC,GAClBt8B,KAAKs8B,QAAUA,EAmDnB,OAjDAD,EAAax6B,UAAU06B,WAAa,SAAUC,GAE1C,OAAkC,KADlCA,EAAYA,GAAa,IACRtuB,QAAQ,MAAyC,IAA3BsuB,EAAUtuB,QAAQ,MAE7DmuB,EAAax6B,UAAUif,KAAO,SAAU2b,EAAaC,EAAMC,GAEvD,QADkB,IAAdA,IAAwBA,GAAY,GACnCF,GAA+B,KAAhBA,EAApB,CAEA,IAAIG,GAAQ,QAASH,GACjBj3B,EAAOo3B,EAAQH,EAAcA,EAAYj3B,KACzCxF,KAAKu8B,WAAW/2B,KAChBA,EAAOxF,KAAK03B,YAAYlyB,EAAMk3B,IAClC,IAAIjvB,EAAQzN,KAAKs8B,QAAQ92B,GACzB,GAAIiI,IAAUmvB,KAAWA,GAAUnvB,IAAUgvB,GAAehvB,EAAMC,OAAS+uB,IACvE,OAAOhvB,EAEN,GAAImvB,GAASD,EAAW,CACzB,IACIzZ,GADU,QAAOljB,KAAKs8B,SACJhzB,QAAO,SAAU2jB,GAAU,OAAOA,EAAO4P,mBAAmBC,UAAY7P,EAAO4P,mBAAmBC,SAAS5Z,QAAQ1d,MAIzI,OAHI0d,EAAQ9T,OAAS,GACjB,UAAkB,iDAAmD5J,EAAO,gBAAiB0d,EAAQvU,KAAI,SAAUqN,GAAS,OAAOA,EAAMxW,SAEtI0d,EAAQ,MAIvBmZ,EAAax6B,UAAU61B,YAAc,SAAUlyB,EAAMk3B,GACjD,IAAKA,EACD,MAAM,IAAIjqB,MAAM,sCAAwCjN,EAAO,KAKnE,IAJA,IAAIu3B,EAAY/8B,KAAK8gB,KAAK4b,GACtBM,EAAYx3B,EAAKsd,MAAM,KACvBma,EAAaD,EAAU5tB,OACvBiO,EAAI,EAAGyI,EAAUiX,EACd1f,EAAI4f,EAAY5f,IACnB,GAAqB,KAAjB2f,EAAU3f,IAAmB,IAANA,EAA3B,CAIA,GAAqB,MAAjB2f,EAAU3f,GAMd,MALI,IAAKyI,EAAQ1L,OACT,MAAM,IAAI3H,MAAM,SAAWjN,EAAO,0BAA4Bu3B,EAAUv3B,KAAO,KACnFsgB,EAAUA,EAAQ1L,YANlB0L,EAAUiX,EAWlB,IAAIG,EAAUF,EAAUl7B,MAAMub,GAAGpK,KAAK,KACtC,OAAO6S,EAAQtgB,MAAQsgB,EAAQtgB,MAAQ03B,EAAU,IAAM,IAAMA,GAE1Db,EArDsB,oWCW7Bc,EAA6B,WAE7B,SAASA,EAAY5xB,GACjB,OAAO4xB,EAAY37B,OAAO+J,GAAU,IA4FxC,OAlFA4xB,EAAY37B,OAAS,SAAU47B,GAC3BA,EAAYD,EAAYE,aAAaD,GAAa,IAAIA,EAAcA,EACpE,IAAI3vB,GAAQ,SAAQ,QAAQ2vB,EAAWD,EAAYt7B,YAMnD,OALAu7B,EAAUppB,QAAU,WAAc,OAAOvG,GACzCA,EAAMC,KAAO0vB,EACb3vB,EAAMovB,mBAAqB,CACvBC,SAAU,eAAgBrvB,EAAMjI,OAE7BiI,GAaX0vB,EAAYt7B,UAAUqX,GAAK,SAAUokB,GACjC,OAAOt9B,OAASs9B,GAAOt9B,KAAK0N,OAAS4vB,GAAOt9B,KAAKsL,QAAUgyB,GAM/DH,EAAYt7B,UAAUyJ,IAAM,WACxB,KAAKtL,KAAKoa,QAAYpa,KAAKoa,kBAAkBpa,KAAKokB,aAC9C,OAAOpkB,KAAKwF,KAChB,IAAIA,EAAOxF,KAAKoa,OAAO9O,MACvB,OAAO9F,EAAOA,EAAO,IAAMxF,KAAKwF,KAAOxF,KAAKwF,MAOhD23B,EAAYt7B,UAAU+b,KAAO,WACzB,OAAQ5d,KAAKoa,QAAUpa,KAAKoa,OAAOwD,QAAW5d,MAWlDm9B,EAAYt7B,UAAUwxB,WAAa,SAAUzyB,GAGzC,QAFAA,GAAO,QAASA,EAAM,CAAEwe,SAAS,EAAMme,aAAc,QAC/Bne,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOiZ,cAAiB,IAExEjxB,QAAO,QAAOpC,KAAKoO,SACnB9E,QAAO,SAAU0F,GAAS,OAAQpO,EAAK28B,cAAgB38B,EAAK28B,aAAa76B,eAAesM,EAAM3D,QASvG8xB,EAAYt7B,UAAU4xB,UAAY,SAAUpoB,EAAIzK,GAE5C,YADa,IAATA,IAAmBA,EAAO,IACrBZ,KAAKyR,KAAOzR,KAAKyR,IAAIgiB,UAAUpoB,EAAIzK,KACxC,SAAK,QAAOZ,KAAKoO,SAAS,QAAO,KAAM/C,KACtCzK,EAAKwe,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOqZ,UAAUpoB,IAE9D8xB,EAAYt7B,UAAUiT,SAAW,WAC7B,OAAO9U,KAAKsL,OAGhB6xB,EAAYE,aAAe,SAAUD,GACjC,OAAO,QAAWA,KAA+C,IAAjCA,EAA2B,iBAG/DD,EAAYK,mBAAqB,SAAUvjB,GAAO,OAAO,QAAWA,EAAa,UAEjFkjB,EAAYM,QAAU,SAAUxjB,GAAO,OAAO,QAASA,EAAwB,qBACxEkjB,EA/FqB,kPCZ5BO,EAAmC,WACnC,SAASA,EAAkBhpB,EAAQsY,EAAQ+O,EAAS4B,GAChD39B,KAAK0U,OAASA,EACd1U,KAAKgtB,OAASA,EACdhtB,KAAK+7B,QAAUA,EACf/7B,KAAK29B,UAAYA,EACjB39B,KAAK49B,MAAQ,GA4EjB,OA1EAF,EAAkB77B,UAAUqT,QAAU,WAClClV,KAAK49B,MAAQ,IAEjBF,EAAkB77B,UAAU6X,SAAW,SAAU0jB,GAC7C,IAAIQ,EAAQ59B,KAAK49B,MACbnwB,EAAQ,WAAmB2vB,GAC3B53B,EAAOiI,EAAMjI,KACjB,KAAK,QAASA,GACV,MAAM,IAAIiN,MAAM,gCACpB,GAAIzS,KAAKgtB,OAAOtqB,eAAe8C,KAAS,QAAQo4B,EAAMjvB,KAAI,QAAK,SAAUnJ,GACrE,MAAM,IAAIiN,MAAM,UAAYjN,EAAO,wBAGvC,OAFAo4B,EAAMn9B,KAAKgN,GACXzN,KAAK69B,QACEpwB,GAEXiwB,EAAkB77B,UAAUg8B,MAAQ,WAchC,IAbA,IAAI1tB,EAAQnQ,KACRqrB,EAAKrrB,KAAM49B,EAAQvS,EAAGuS,MAAO5Q,EAAS3B,EAAG2B,OAAQ+O,EAAU1Q,EAAG0Q,QAC9D+B,EAAa,GACjBC,EAAU,GACVC,EAAsB,GAClBC,EAAW,SAAUz4B,GAAQ,OAAO2K,EAAM6c,OAAOtqB,eAAe8C,IAAS2K,EAAM6c,OAAOxnB,IACtF04B,EAAkB,WACdJ,EAAW1uB,QACXe,EAAMwtB,UAAU58B,SAAQ,SAAUo9B,GAC9B,OAAOA,EAAS,aAAcL,EAAWnvB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,aAI1EkwB,EAAMxuB,OAAS,GAAG,CACrB,IAAI3B,EAAQmwB,EAAM37B,QACdm8B,EAAS3wB,EAAMjI,KACfc,EAASy1B,EAAQC,MAAMvuB,GACvB4wB,EAAYN,EAAQ7vB,QAAQT,GAChC,GAAInH,EAAJ,CACI,IAAIg4B,EAAgBL,EAASG,GAC7B,GAAIE,GAAiBA,EAAc94B,OAAS44B,EACxC,MAAM,IAAI3rB,MAAM,UAAY2rB,EAAS,wBAEzC,IAAIG,EAAsBN,EAASG,EAAS,OACxCG,GAEAv+B,KAAK0U,OAAOkC,cAAc4nB,WAAWD,GAEzCvR,EAAOoR,GAAU3wB,EACjBzN,KAAKy+B,YAAYhxB,GACb4wB,GAAa,GACbN,EAAQve,OAAO6e,EAAW,GAC9BP,EAAWr9B,KAAKgN,OAdpB,CAiBA,IAAIixB,EAAOV,EAAoBI,GAE/B,GADAJ,EAAoBI,GAAUR,EAAMxuB,OAChCivB,GAAa,GAAKK,IAASd,EAAMxuB,OAKjC,OAFAwuB,EAAMn9B,KAAKgN,GACXywB,IACOlR,EAEFqR,EAAY,GACjBN,EAAQt9B,KAAKgN,GAEjBmwB,EAAMn9B,KAAKgN,IAGf,OADAywB,IACOlR,GAEX0Q,EAAkB77B,UAAU48B,YAAc,SAAUhxB,GAChD,IAAIA,EAAMkxB,UAAalxB,EAAMgE,IAA7B,CAEA,IAAImtB,EAAW5+B,KAAK0U,OAAOuC,WAAW0F,MACtCiiB,EAASriB,KAAKqiB,EAASC,eAAer9B,OAAOiM,MAE1CiwB,EAlF2B,sbCQlCoB,EAA+B,WAE/B,SAASA,EAAcpqB,GACnB1U,KAAK0U,OAASA,EACd1U,KAAKgtB,OAAS,GAEdhtB,KAAK29B,UAAY,GACjB39B,KAAKy7B,QAAU,IAAI,IAAaz7B,KAAKgtB,QACrChtB,KAAK+7B,QAAU,IAAI,IAAa/7B,KAAKy7B,QAAS/mB,EAAOE,mBACrD5U,KAAK++B,WAAa,IAAI,IAAkBrqB,EAAQ1U,KAAKgtB,OAAQhtB,KAAK+7B,QAAS/7B,KAAK29B,WAChF39B,KAAKg/B,gBAmJT,OAhJAF,EAAcj9B,UAAUm9B,cAAgB,YAUvBh/B,KAAKi/B,MAAQj/B,KAAK++B,WAAWrlB,SATvB,CACflU,KAAM,GACNiM,IAAK,IACL+I,MAAO,KACPpM,OAAQ,CACJ,IAAK,CAAE5J,MAAO,KAAM0K,KAAM,OAAQye,SAAS,IAE/CgR,UAAU,KAGRvE,UAAY,MAGtB0E,EAAcj9B,UAAUqT,QAAU,WAC9B,IAAI/E,EAAQnQ,KACZA,KAAK++B,WAAW7pB,UAChBlV,KAAK29B,UAAY,GACjB39B,KAAK0Q,MAAM3P,SAAQ,SAAU0M,GAAS,OAAO0C,EAAMO,IAAIjD,IAAU0C,EAAMquB,WAAW/wB,OAgCtFqxB,EAAcj9B,UAAUq9B,gBAAkB,SAAUf,GAEhD,OADAn+B,KAAK29B,UAAUl9B,KAAK09B,GACb,YACH,QAAWn+B,KAAK29B,UAAhB,CAA2BQ,IAC7B76B,KAAKtD,OAWX8+B,EAAcj9B,UAAU+b,KAAO,WAC3B,OAAO5d,KAAKi/B,OAchBH,EAAcj9B,UAAU6X,SAAW,SAAUylB,GACzC,OAAOn/B,KAAK++B,WAAWrlB,SAASylB,IAGpCL,EAAcj9B,UAAUu9B,gBAAkB,SAAU3xB,GAChD,IAAI0C,EAAQnQ,KACRyb,EAAMzb,KAAK0Q,MAAM/B,KAAI,SAAUyO,GAAK,OAAOA,EAAEpJ,aAC7CqrB,EAAc,SAAUrS,GACxB,IAAIsS,EAAY7jB,EAAInS,QAAO,SAAU8T,GAAK,OAAqC,IAA9B4P,EAAO9e,QAAQkP,EAAEhD,WAClE,OAA4B,IAArBklB,EAAUlwB,OAAekwB,EAAYA,EAAUl9B,OAAOi9B,EAAYC,KAEzE12B,EAAWy2B,EAAY,CAAC5xB,IACxB8xB,EAAe,CAAC9xB,GAAOrL,OAAOwG,GAAUoX,UAW5C,OAVAuf,EAAax+B,SAAQ,SAAUksB,GAC3B,IAAI2R,EAAWzuB,EAAMuE,OAAOuC,WAAW0F,MAEvCiiB,EACKjiB,QACArT,QAAO,QAAO,QAAS2jB,IACvBlsB,SAAQ,SAAUwb,GAAQ,OAAOqiB,EAASY,WAAWjjB,aAEnDpM,EAAM6c,OAAOC,EAAOznB,SAExB+5B,GAWXT,EAAcj9B,UAAU28B,WAAa,SAAU/B,GAC3C,IAAIxP,EAASjtB,KAAK0Q,IAAI+rB,GACtB,IAAKxP,EACD,MAAM,IAAIxa,MAAM,sCAAwCgqB,GAC5D,IAAIgD,EAAqBz/B,KAAKo/B,gBAAgBnS,EAAOjZ,WAIrD,OAHAhU,KAAK29B,UAAU58B,SAAQ,SAAUo9B,GAC7B,OAAOA,EAAS,eAAgBsB,EAAmB9wB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,YAE5E+xB,GAEXX,EAAcj9B,UAAU6O,IAAM,SAAU+rB,EAAaC,GACjD,IAAIvsB,EAAQnQ,KACZ,GAAyB,IAArBgC,UAAUoN,OACV,OAAOmE,OAAOC,KAAKxT,KAAKgtB,QAAQre,KAAI,SAAUnJ,GAAQ,OAAO2K,EAAM6c,OAAOxnB,GAAMkI,QACpF,IAAIgyB,EAAQ1/B,KAAKy7B,QAAQ3a,KAAK2b,EAAaC,GAC3C,OAAQgD,GAASA,EAAMhyB,MAAS,MAYpCoxB,EAAcj9B,UAAUiV,UAAY,SAAU6oB,EAAUC,GACpD,OAAO5/B,KAAK+7B,QAAQA,QAAQ4D,EAAUC,IAEnCd,EA7JuB,2SCsB9Be,EAA6B,WAe7B,SAASA,EAAYC,EAAgBC,EAAaC,EAASC,GACvDjgC,KAAK8/B,eAAiBA,EACtB9/B,KAAK+/B,YAAcA,EACnB//B,KAAK+/B,YAAcA,EACnB//B,KAAKggC,SAAU,QAAO,GAAIA,GAAW,IACrChgC,KAAKigC,UAAW,QAAO,GAAIA,GAAY,IACvCjgC,KAAKkgC,YAAcJ,EAAerE,QAAQ3a,KAAKif,EAAa//B,KAAKigC,SAASE,UAsF9E,OAnFAN,EAAYh+B,UAAU2D,KAAO,WACzB,OAAQxF,KAAKkgC,aAAelgC,KAAKkgC,YAAY16B,MAASxF,KAAK+/B,aAG/DF,EAAYh+B,UAAU4qB,WAAa,WAC/B,OAAOzsB,KAAK+/B,aAGhBF,EAAYh+B,UAAUuM,OAAS,WAC3B,OAAOpO,KAAKggC,SAGhBH,EAAYh+B,UAAU4W,OAAS,WAC3B,OAAOzY,KAAKkgC,aAGhBL,EAAYh+B,UAAU4L,MAAQ,WAC1B,OAAOzN,KAAKkgC,aAAelgC,KAAKkgC,YAAYxyB,MAGhDmyB,EAAYh+B,UAAU1B,QAAU,WAC5B,OAAOH,KAAKigC,UAGhBJ,EAAYh+B,UAAUu+B,OAAS,WAC3B,SAAUpgC,KAAKkgC,cAAelgC,KAAKkgC,YAAYxyB,OAGnDmyB,EAAYh+B,UAAUw+B,MAAQ,WAC1B,OAAQrgC,KAAKqF,SAGjBw6B,EAAYh+B,UAAUwD,MAAQ,WAC1B,IAAIq3B,EAAO18B,KAAKG,UAAUggC,SAC1B,IAAKngC,KAAKkgC,aAAiBxD,EAAM,CAC7B,IAAIF,EAAYE,EAAKl3B,KAAOk3B,EAAKl3B,KAAOk3B,EACxC,MAAO,sBAAwB18B,KAAKwF,OAAS,iBAAmBg3B,EAAY,IAEhF,OAAKx8B,KAAKkgC,YAELlgC,KAAKkgC,YAAYxyB,UAAtB,EACW,UAAY1N,KAAKwF,OAAS,8BAF1B,kBAAoBxF,KAAKwF,OAAS,KAIjDq6B,EAAYh+B,UAAUiT,SAAW,WAC7B,MAAO,IAAM9U,KAAKwF,OAAS,KAAM,QAAUxF,KAAKoO,WAQpDyxB,EAAYh+B,UAAUy+B,UAAY,SAAU7yB,GACxC,OAAO,IAAIoyB,EAAY7/B,KAAK8/B,eAAgBryB,EAAOzN,KAAKggC,QAAShgC,KAAKigC,WAS1EJ,EAAYh+B,UAAU0+B,WAAa,SAAUnyB,EAAQ2G,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAI8d,EAAY9d,EAAU3G,GAAS,QAAO,GAAIpO,KAAKggC,QAAS5xB,GAC5D,OAAO,IAAIyxB,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAalN,EAAW7yB,KAAKigC,WASlFJ,EAAYh+B,UAAU2+B,YAAc,SAAUrgC,EAAS4U,QACnC,IAAZA,IAAsBA,GAAU,GACpC,IAAI0rB,EAAU1rB,EAAU5U,GAAU,QAAO,GAAIH,KAAKigC,SAAU9/B,GAC5D,OAAO,IAAI0/B,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAa//B,KAAKggC,QAASS,IAGhFZ,EAAYa,MAAQ,SAAUzmB,GAC1B,OAAOA,GAAOA,EAAIxM,SAAU,QAASwM,EAAIxM,SAAW,QAASwM,EAAIxM,SAAU,QAASwM,EAAIxM,MAAMjI,QAE3Fq6B,EA3GqB,iYCf5Bc,EAA6B,WAC7B,SAASA,EAAY1U,GACjBjsB,KAAKisB,WAAaA,EA2EtB,OAzEA0U,EAAY9+B,UAAU++B,mBAAqB,SAAUC,GACjD,IAAI1wB,EAAQnQ,KAEZ,OADmBA,KAAKisB,WAAWvX,OAAOoY,kBACtB9iB,WACf82B,WAAWD,GACXlyB,KAAI,SAAUO,GAAQ,OAAOiB,EAAM4wB,WAAW7xB,MAC9CN,OAAO,KAAS,IAChBtF,OAAO,OAWhBq3B,EAAY9+B,UAAUk/B,WAAa,SAAUC,GACzC,IAAI/U,EAAajsB,KAAKisB,WAClBvd,EAAcud,EAAWvd,cAEzBuyB,EAAgBjhC,KAAKkhC,iBAAiBF,EAAUtyB,EAAaud,GACjE,IAAKgV,EACD,MAAO,GACX,IA4DWE,EA5DPC,EAAkB,CAClBnV,WAAYA,EACZnG,QAASmG,EAAW9rB,UAAU2lB,SAkBlC,OAAOmb,EACFtyB,KAjBqB,SAAUkF,GAMhC,OAJcA,EAAKqP,QAAQxU,EAAaud,GAEZ+U,EAASK,kBAAkB77B,MAElCmJ,KAAI,SAAUJ,GAC/B,IAAI0xB,GAAW,QAAO,CAClB38B,KAAMuQ,EAAKvQ,KACXg+B,UAAW,CAAEN,SAAUA,EAASx7B,KAAMqL,QAAStC,IAChD6yB,GACC3zB,EAAQuzB,EAASK,kBAAkBv+B,QAAU,UAA4ByL,EAAKd,MAAMC,KAAO,KAC3F6zB,EAAiB,IAAI,IAAetV,EAAYxe,EAAOoG,EAAMosB,GACjE,MAAO,CAAEpsB,KAAMA,EAAMtF,KAAMA,EAAMgzB,eAAgBA,SAKpD3yB,OAAO,KAAS,IAChB4c,MAqCM2V,EArCSH,EAASQ,iBAsCR,IAArBL,IAA+BA,GAAmB,GAC/C,SAA+B1O,EAAGlV,GACrC,IAAIkkB,EAASN,GAAoB,EAAI,EACjCO,GAAcjP,EAAElkB,KAAKd,MAAMtF,KAAKiH,OAASmO,EAAEhP,KAAKd,MAAMtF,KAAKiH,QAAUqyB,EACzE,OAAsB,IAAfC,EAAmBA,EAAankB,EAAE1J,KAAKzM,SAAWqrB,EAAE5e,KAAKzM,YAzC3DuH,KAAI,SAAU8E,GAAS,OAAOA,EAAM8tB,mBAa7CZ,EAAY9+B,UAAUq/B,iBAAmB,SAAUF,EAAUtyB,EAAaud,GACtE,IAAI0V,EAAWX,EAASY,YAAc,WAElC/6B,EAAe7G,KAAKisB,WAAWvX,OAAOoY,kBAE1C,OADiB6U,EAAW,CAAC96B,GAAgB,CAAC7G,KAAKisB,WAAYplB,IAE1D8H,KAAI,SAAUkzB,GAAO,OAAOA,EAAIC,SAASd,EAASx7B,SAClD8D,QAAO,QAAgB,KAAS,uBAAyB03B,EAASx7B,OAClEoJ,OAAO,KAAS,IAChBtF,QAAO,SAAUuK,GAAQ,OAAOA,EAAKqP,QAAQxU,EAAaud,OAE5D0U,EA7EqB,+PCDzB,SAASoB,EAAWt0B,EAAOu0B,EAAW/V,GACzC,IAAIgW,GAAU,QAASD,GAAa,CAACA,GAAaA,EAYlD,UADe,QAAWC,GAAWA,EAVrC,SAAoBhV,GAEhB,IADA,IAAIiV,EAAcD,EACT5kB,EAAI,EAAGA,EAAI6kB,EAAY9yB,OAAQiO,IAAK,CACzC,IAAIwF,EAAO,IAAI,KAAKqf,EAAY7kB,IAChC,GAAKwF,GAAQA,EAAKK,QAAQ+J,EAAOznB,QAAYqd,GAAQqf,EAAY7kB,KAAO4P,EAAOznB,KAC3E,OAAO,EAGf,OAAO,IAGMiI,EAAOwe,GAK5B,IAAIkW,EAAgC,WAChC,SAASA,EAAeC,EAASC,EAAW7hC,EAAU8hC,EAAeC,EAAwBpiC,QACzE,IAAZA,IAAsBA,EAAU,IACpCH,KAAKoiC,QAAUA,EACfpiC,KAAKqiC,UAAYA,EACjBriC,KAAKQ,SAAWA,EAChBR,KAAKsiC,cAAgBA,EACrBtiC,KAAKuiC,uBAAyBA,EAC9BviC,KAAKwiC,YAAc,EACnBxiC,KAAKyiC,eAAgB,EACrBziC,KAAKoH,SAAWjH,EAAQiH,UAAY,EACpCpH,KAAKsD,KAAOnD,EAAQmD,MAAQ,KAC5BtD,KAAK0iC,YAAcviC,EAAQuiC,YAqF/B,OApEAP,EAAetgC,UAAU8gC,eAAiB,SAAUC,EAAOZ,EAAW/V,GAClE,IAAkB,IAAd+V,EACA,OAAOY,EACX,IAAIpN,EAAWoN,EAAMt5B,QAAO,SAAUiF,GAAQ,OAAOwzB,EAAWxzB,EAAKd,MAAOu0B,EAAW/V,MACvF,OAAOuJ,EAASpmB,OAASomB,EAAW,MAgBxC2M,EAAetgC,UAAUghC,yBAA2B,WAChD,OAAO,QAAO7iC,KAAKoiC,QAAQp4B,WAAW84B,iBAAiB,WAAc,OAAO,MAiBhFX,EAAetgC,UAAUkhC,kBAAoB,SAAUr0B,EAAaud,GAChE,IAAI9b,EAAQnQ,KACR8P,GAAW,QAAO9P,KAAK6iC,2BAA4B7iC,KAAKsiC,eAE5D,OADY,QAAOtiC,KAAKoiC,QAAQp4B,WAAW84B,iBAC9Bl0B,QAAO,SAAUo0B,EAAIC,GAG9B,IAAIC,EAAcD,EAASngC,QAAU,UACjCqF,EAAOuG,EAAYu0B,EAASz9B,OAAS,GACrCo9B,EAAQM,EAAc/6B,EAAO,EAAC,QAAKA,IAEvC,OADA66B,EAAGC,EAASz9B,MAAQ2K,EAAMwyB,eAAeC,EAAO9yB,EAASmzB,EAASz9B,MAAOymB,GAClE+W,IACR,KAQPb,EAAetgC,UAAUqhB,QAAU,SAAUxU,EAAaud,GACtD,IAAI/I,EAAUljB,KAAK+iC,kBAAkBr0B,EAAaud,GAGlD,OADiB,QAAO/I,GAASigB,MAAM,MACnBjgB,EAAU,MAElCif,EAAetgC,UAAU28B,WAAa,WAClCx+B,KAAKuiC,uBAAuBviC,MAC5BA,KAAKyiC,eAAgB,GAElBN,EAjGwB,GAqG5B,SAASiB,EAAUtP,EAAUhH,EAAmBuV,GAEnD,IACIgB,GADoBvP,EAASwP,iBAAmBxP,EAASwP,kBAAoB,IACnDjB,EAAU78B,MAAQ,GAC5C+9B,GAAe,QAAWF,GAG9B,SAASG,EAAmBC,EAAajjC,EAAUL,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAAI6pB,EAAiB,IAAImY,EAAerV,EAAmBuV,EAAW7hC,EAAUijC,EAAaF,EAAcpjC,GAE3G,OADAkjC,EAAM5iC,KAAKupB,GACJA,EAAewU,WAAWl7B,KAAK0mB,GAE1C,OAPA8J,EAASuO,EAAU78B,MAAQg+B,EAOpBA,2FCpJX,IAAIE,EAQAC,2BAPJ,SAAWD,GACPA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA2B,MAAI,GAAK,QAL5D,CAMGA,IAAwBA,EAAsB,KAEjD,SAAWC,GACPA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA2B,MAAI,GAAK,QAF5D,CAGGA,IAAwBA,EAAsB,8HCP7CC,2LACJ,SAAWA,GAOPA,EAAWA,EAAuB,WAAI,GAAK,aAM3CA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAoB,QAAI,GAAK,UAWxCA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAkB,MAAI,GAAK,QApC1C,CAqCGA,IAAeA,EAAa,KAG/B,IAAIv4B,EAAK,EACLw4B,EAA2B,WAC3B,SAASA,EAAU30B,EAAM40B,EAASC,GAE9B/jC,KAAKmb,IAAM9P,IACXrL,KAAKkP,KAAOA,EACZlP,KAAK8jC,QAAUA,EACf9jC,KAAK+jC,OAASA,EA4DlB,OAzDAF,EAAUG,mBAAqB,SAAU/pB,GACrC,OAAOA,GAA2B,mBAAbA,EAAIlP,OAAuB,IAAAmO,IAAG2qB,EAAH,CAAc5pB,EAAIyN,uBAGtEmc,EAAUI,WAAa,SAAUF,EAAQ5jC,GACrC,IACI+jC,EAAY,IAAIL,EAAUD,EAAWO,WAD3B,+DACgDJ,GAI9D,OAHI5jC,GAAWA,EAAQikC,aACnBF,EAAUE,YAAa,GAEpBF,GAGXL,EAAUO,WAAa,SAAUL,GAC7B,OAAOF,EAAUI,WAAWF,EAAQ,CAAEK,YAAY,KAGtDP,EAAUQ,QAAU,SAAUN,GAE1B,OAAO,IAAIF,EAAUD,EAAWU,QADlB,6BACoCP,IAGtDF,EAAUzK,QAAU,SAAU2K,GAE1B,OAAO,IAAIF,EAAUD,EAAWW,QADlB,6BACoCR,IAGtDF,EAAUW,QAAU,SAAUT,GAE1B,OAAO,IAAIF,EAAUD,EAAWa,QADlB,kCACoCV,IAGtDF,EAAUa,QAAU,SAAUX,GAE1B,OAAO,IAAIF,EAAUD,EAAWe,MADlB,yBACkCZ,IAWpDF,EAAUe,UAAY,SAAUb,GAC5B,OAAO,IAAA7qB,IAAG2qB,EAAH,CAAcE,GAAUA,EAASF,EAAUa,QAAQX,IAE9DF,EAAUhiC,UAAUiT,SAAW,WAC3B,IAA6BqkB,EACzB4K,GADyB5K,EACHn5B,KAAK+jC,SADgB5K,EAAErkB,WAAavB,OAAO1R,UAAUiT,SAAWqkB,EAAErkB,YAAa,QAAUqkB,GAE/G9N,EAAKrrB,KACT,MAAO,6BADcqrB,EAAGlQ,IACoB,UADRkQ,EAAGnc,KACwB,cADRmc,EAAGyY,QAC+B,aAAeC,EAAS,KAErHF,EAAUhiC,UAAUgjC,UAAY,WAC5B,OAAO,SAAO,QAAgB7kC,MAAO,CAAE0nB,qBAAsB1nB,QAE1D6jC,EAlEmB,oMC1C1BiB,EAEA,SAA6Bt/B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QACpG,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5CllC,KAAKwF,KAAOA,EACZxF,KAAK4hC,UAAYA,EACjB5hC,KAAK+kC,UAAYA,EACjB/kC,KAAKqhC,kBAAoBA,EACzBrhC,KAAKwhC,YAAcA,EACnBxhC,KAAKglC,iBAAmBA,EACxBhlC,KAAKilC,gBAAkBA,EACvBjlC,KAAKklC,YAAcA,gsBCVvBC,EAAiB,CACjBrf,QAAS,KACTmG,WAAY,KACZqV,UAAW,GACXh+B,KAAM,MAEN8hC,EAAgC,WAChC,SAASA,EAAenZ,EAAYoZ,EAAcrb,EAAgB7pB,GAC9D,IAAIgQ,EAAQnQ,KACZA,KAAKisB,WAAaA,EAClBjsB,KAAKqlC,aAAeA,EACpBrlC,KAAKgqB,eAAiBA,EACtBhqB,KAAKG,QAAUA,EACfH,KAAKslC,aAAe,WAAc,OAAOn1B,EAAMjB,KAAK0yB,YAAc,UAA4BzxB,EAAMhQ,QAAQ8rB,WAAWsZ,YACvHvlC,KAAKG,SAAU,QAASA,EAASglC,GACjCnlC,KAAKkP,KAAO8a,EAAeqY,UAyK/B,OArJA+C,EAAenJ,MAAQ,SAAUoH,EAAOmC,GAGpC,OAAOnC,EAAMz0B,QADU,SAAU8vB,EAAM+G,GAAY,OAAO/G,EAAK3zB,MAAK,WAAc,OAAO06B,EAASC,kBAC5DF,GAAW,gBAarDJ,EAAeO,YAAc,SAAUtC,EAAOuC,GAC1C,IAAK,IAAI32B,EAAM,EAAGA,EAAMo0B,EAAMj0B,OAAQH,IAAO,CACzC,IAAIib,EAAamZ,EAAMp0B,GAAKy2B,aAC5B,IAAI,QAAUxb,GAAa,CACvB,IAAI2b,EAAiBxC,EAAMvhC,MAAMmN,EAAM,GACvC,OAAOm2B,EAAenJ,MAAM4J,EAAgB3b,GAAYnf,KAAK66B,IAGrE,OAAOA,KAKXR,EAAeU,YAAc,SAAUzC,GACnCA,EAAMtiC,SAAQ,SAAU8S,GAAQ,OAAOA,EAAK6xB,iBAEhDN,EAAevjC,UAAUkkC,SAAW,SAAU7Y,GAC1CltB,KAAKisB,WAAWvX,OAAOmC,aAAamvB,qBAApChmC,CAA0DktB,IAE9DkY,EAAevjC,UAAU6jC,WAAa,WAClC,IAAIv1B,EAAQnQ,KACR6T,EAAO7T,KAAKgqB,eAChB,IAAInW,EAAK4uB,cAAT,CAEA,IAAIwD,EAAajmC,KAAKkmC,yBACtB,GAAID,EACA,OAAOA,EACX,IAAI9lC,EAAUH,KAAKG,QACnB,yBAA0BH,KAAMA,KAAKisB,WAAY9rB,GACjD,IAEIgmC,EAAc,SAAUjZ,GAAO,OAAOrZ,EAAKwuB,UAAU4C,gBAAgB90B,EAA/B0D,CAAsCqZ,IAC5EkZ,EAAe,SAAU9/B,GAAU,OAAOuN,EAAKwuB,UAAU2C,iBAAiB70B,EAAhC0D,CAAuCvN,IACrF,IACI,IAAIA,EALkCuN,EAAKrT,SAASuB,KAAK5B,EAAQmD,KAAM6M,EAAM8b,WAAY9b,EAAMk1B,cAM/F,OAAKrlC,KAAKkP,KAAKg2B,cAAe,QAAU5+B,GAC7BA,EAAO+b,OANH,SAAU6K,GAAO,OAAO,cAAoBA,GAAK2X,eAM1B95B,KAAKq7B,EAAcD,GAG9CC,EAAa9/B,GAG5B,MAAO4mB,GAEH,OAAOiZ,EAAY,cAAoBjZ,IAE3C,QACQrZ,EAAK6uB,eAAiB7uB,EAAK2uB,aAAe3uB,EAAK6uB,aAC/C7uB,EAAK2qB,gBAajB4G,EAAevjC,UAAUwkC,iBAAmB,SAAU//B,GAClD,IAAI6J,EAAQnQ,KAEZ,OADiBA,KAAKkmC,4BAIlB,QAAU5/B,GAEHA,EAAOyE,MAAK,SAAU/G,GAAO,OAAOmM,EAAMk2B,iBAAiBriC,OAEtE,qBAAsBsC,EAAQtG,KAAKisB,WAAYjsB,KAAKG,UAErC,IAAXmG,EAEO,YAAkB,2BAA2Bu+B,aAEpC,IAAA3rB,IAAG,IAEnBotB,CAAchgC,GAEP,eAAqBA,GAAQu+B,iBAFxC,KASJO,EAAevjC,UAAUqkC,uBAAyB,WAC9C,IAAIxxB,EAAS1U,KAAKisB,WAAWvX,OAE7B,OAAIA,EAAOqkB,UACA,YAAkB,sBAAwBrkB,EAAOyG,IAAM,gCAAgC0pB,YAE9F7kC,KAAKisB,WAAWsa,SACT,cAAoB1B,YAI3B7kC,KAAKslC,eAEE,eAAqBtlC,KAAKG,QAAQ2lB,WAAW+e,iBAFxD,GAKJO,EAAevjC,UAAUiT,SAAW,WAChC,IAAe3U,EAANH,KAAmBG,QAAS6pB,EAA5BhqB,KAAgDgqB,eACrDzpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAWwkB,EAAexpB,UAC/M,OAAOD,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,IAMlE4/B,EAAeoB,cAAgB,SAAU3yB,GAAQ,OAAO,SAAUvN,GAC9D,OAAOuN,EAAKwyB,iBAAiB//B,KAMjC8+B,EAAeqB,oBAAsB,SAAU5yB,GAAQ,OAAO,SAAUvN,IACpE,QAAUA,IAAWA,EAAO+b,OAAM,SAAU6K,GAAO,OAAOrZ,EAAKkyB,SAAS,cAAoB7Y,SAOhGkY,EAAesB,UAAY,SAAU7yB,GAAQ,OAAO,SAAUxO,GAAS,OAAOwO,EAAKkyB,SAAS1gC,KAC5F+/B,EAAeuB,aAAe,SAAU9yB,GAAQ,OAAO,SAAUxO,GAAS,OAAO,QAAgBA,KACjG+/B,EAAewB,YAAc,SAAU/yB,GAAQ,OAAO,SAAUxO,GAC5D,MAAMA,IAEH+/B,EAlLwB,qgBCXnC,SAASyB,EAAmBj3B,GACxBA,EAAMk3B,cAAc,cAAoB,IAAUl3B,EAAM8E,QAAS,IACjE9E,EAAMk3B,cAAc,cAAoB,IAAYl3B,GAAQ,IAC5DA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,GAAQ,IAChEA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,EAAMxB,UAAW,IACzEwB,EAAMuc,WAAWprB,SAAQ,SAAU0M,GAC/BmC,EAAMk3B,cAAc,cAAoB,UAAWr5B,GAAQA,MAG5D,IAGHs5B,EAAoB,CAAC,eAAgB,KACrCC,GAAe,QAAQD,GAKhBE,EAAqB,SAAUr3B,GACtC,IAAIgzB,GAAQ,QAAOhzB,EAAMlB,eAAeE,OAAO,KAAS,IAAIA,OAAO,KAAO,IAEtEs4B,EAA4B,SAAU3pB,GACtC,OAAOypB,EAAazpB,EAAEgE,OAAS,cAAoBhE,EAAEgE,MAAO,MAAQhE,GAExEqlB,EAAM7hC,SAAQ,SAAUwN,GACpBA,EAAKwJ,YAAcxJ,EAAKwJ,YAAYpJ,IAAIu4B,+MCnB5CC,EAAiB,SAAUv3B,GAC3B,IAAIw3B,EAAWx3B,EAAMuf,KAAKkY,WAC1B,GAAKD,EAAL,CAEA,IAAI3uB,EAAS7I,EAAM8E,OAAOmC,aAW1B,OAAI,QAAWuwB,GACJ,YAAiBA,EAASx3B,IAAQ7E,KAAKq7B,GAE3CA,EAAagB,GAbpB,SAAShB,EAAa9/B,GAClB,GAAKA,EAEL,OAAIA,aAAkB,IACXA,GACP,QAASA,GACFmS,EAAOpS,OAAOC,EAAQsJ,EAAMxB,SAAUwB,EAAMzP,WACnDmG,EAAc,OAAKA,EAAe,OAC3BmS,EAAOpS,OAAOC,EAAc,OAAKsJ,EAAMuf,KAAM7oB,EAAe,QAAKsJ,EAAMxB,SAAUwB,EAAMzP,gBADlG,IChBR,SAASmnC,EAAwB3zB,GAC7B,OAAO,SAAUsY,EAAYxe,GAGzB,OAAO85B,EAFM95B,EAAMuG,UACCL,IACNsY,EAAYxe,IAYlC,IAAI+5B,EAAaF,EAAwB,UAarCG,EAAeH,EAAwB,YAavCI,EAAcJ,EAAwB,2MC7C/BK,EAAwB,IAU/BC,EAAmB,SAAUh4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,QAAS9nB,GAAO7E,KAAK,OAcnF88B,EAAmB,SAAUj4B,EAAOnC,GACpC,OAAO,IAAI,IAAemC,EAAMlB,cAAcygB,IAAIpb,WAAWtG,EAAMuG,WAAW0jB,YAAY,OAAQ9nB,GAAO7E,KAAK,OAe9G+8B,EAAmB,SAAUl4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,OAAQ9nB,GAAO7E,KAAK,OCnClFg9B,EAAoB,SAAU9b,GAC9B,IAAIllB,EAAK,OACLihC,EAAgB/b,EAAWzR,MAAM,YACrC,GAAKwtB,EAAc54B,OAEnB,OAAOrI,EAAG0U,IAAIusB,EAAcr5B,KAAI,SAAUmL,GAAQ,OAAO/S,EAAGkJ,KAAK6J,EAAKuB,YAAatQ,KAAK,OAexFk9B,EAAgB,SAAUhc,GAC1B,IAAI+b,EAAgB/b,EAAWzR,MAAM,YACjC0tB,EAAejc,EAAWzR,MAAM,WACpC,GAAKwtB,EAAc54B,QAAW84B,EAAa94B,OAA3C,CAEA,IAAItI,EAAQmlB,EAAWvX,OAAOqC,YAC9BmxB,EAAannC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMshC,qBAAqBD,MACvEH,EAAcjnC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMuhC,mBAAmBF,MACtErhC,EAAM8lB,SCzBN0b,EAAoB,SAAU14B,GAC9B,IAAI0I,EAAU1I,EAAM8E,OAAO4D,QAOvBiwB,EAAyB,WAErBjwB,EAAQ2T,aAAerc,IACvB0I,EAAQ2T,WAAa,OAE7Brc,EAAM7B,UAAU,IAXW,WACvBuK,EAAQ0T,sBAAsBxG,QAAQ5V,GACtC0I,EAAQwa,SAAWljB,EAAMmjB,MACzBza,EAAQwN,QAAUxN,EAAQwa,SAASplB,MACnC,QAAKkC,EAAMxB,SAAUkK,EAAQlK,UAOS,CAAEhH,SAAU,MACtDwI,EAAMnM,QAAQsH,KAAKw9B,EAAwBA,ICtB3CC,EAAY,SAAUvc,GACtB,IAAI9rB,EAAU8rB,EAAW9rB,UACrBsY,EAASwT,EAAWvX,OAAOmC,aAC3B6B,EAAauT,EAAWvX,OAAOyH,UAKnC,GAAuB,QAAnBhc,EAAQ4e,QAAoB5e,EAAQ0V,UAAY4C,EAAOqa,SAASsH,UAAW,CAC3E,IAAIqO,EAAa,CAAE1zB,QAA8B,YAArB5U,EAAQ0V,UACpC6C,EAAWjY,KAAKgY,EAAOqa,SAASsH,UAAU3oB,IAAKgH,EAAOrK,OAAQq6B,GAElE/vB,EAAW0D,QAAO,kWCPtB,SAASssB,EAAY94B,GACjB,IAAI+4B,EAAgB/4B,EAAMg5B,iBAC1B,GAAKD,EAAL,CAEAtgC,EAAA,0BAA6BuH,GAC7B,IAAIi5B,EAAUj5B,EAAM8E,OAAO4D,QAAQ2T,WAOnC,MAHsB,kBAAlB0c,GAAqCE,GACrCA,EAAQC,QAEL,cAAoBjE,aCf/B,SAASkE,EAAsBn5B,GAC3B,IAAKA,EAAMywB,QACP,MAAM,IAAI5tB,MAAM7C,EAAMvK,QAAQyP,YAG/B,ICaIk0B,EAAmB,CAC1BnzB,UAAU,EACVsqB,SAAU,KACV/gB,SAAS,EACT6pB,QAAQ,EACRC,QAAQ,EACRC,WAAW,EACXC,OAAQ,GACRtjB,QAAS,WAAc,OAAO,MAC9B/G,OAAQ,WAaRsqB,EAAmC,WAEnC,SAASA,EAAkBC,GAEvBtpC,KAAKupC,iBAAmB,EAExBvpC,KAAKwpC,YAAc,GAEnBxpC,KAAKsjC,iBAAmB,GAExBtjC,KAAKypC,eAAiB,GACtBzpC,KAAKspC,QAAUA,EACftpC,KAAK8G,MAAQwiC,EAAQvyB,YACrB/W,KAAK0pC,mBAAqB,GAC1B1pC,KAAKgK,YAAc,SAAqB,QAAIhK,MAAO,IAAI,QAAIA,MAAO,CAC9D,kBACA,eACA,gBACA,aACA,aAEJA,KAAK2pC,mBACL3pC,KAAK4pC,oBACL5pC,KAAK6pC,+BACLP,EAAQhxB,QAAQ0T,sBAAsBzG,QAAQ0hB,GAuLlD,OA9JAoC,EAAkBxnC,UAAUioC,SAAW,SAAUh6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkO,SAAW,SAAUD,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkoC,QAAU,SAAUj6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUmoC,OAAS,SAAUl6B,EAAUtP,EAAUL,KAInEkpC,EAAkBxnC,UAAUooC,SAAW,SAAUn6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUqoC,QAAU,SAAUp6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUsoC,SAAW,SAAUr6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkM,UAAY,SAAU+B,EAAUtP,EAAUL,KAItEkpC,EAAkBxnC,UAAUuoC,QAAU,SAAUt6B,EAAUtP,EAAUL,KAOpEkpC,EAAkBxnC,UAAUqT,QAAU,SAAUR,IAC5C,QAAO1U,KAAKsjC,kBAAkBviC,SAAQ,SAAUspC,GAC5C,OAAOA,EAAWtpC,SAAQ,SAAU8S,GAChCA,EAAK4uB,eAAgB,GACrB,QAAW4H,EAAYx2B,UAenCw1B,EAAkBxnC,UAAUL,OAAS,SAAUyyB,EAAUzH,GACrD,OAAO,IAAI,IAAWyH,EAAUzH,EAAaxsB,KAAKspC,UAGtDD,EAAkBxnC,UAAU+nC,kBAAoB,WAC5C,IAAIU,EAAQ,IACRC,EAAK,IACLC,EAAQxqC,KAAKypC,eACbgB,GAAc,EACdC,GAAc,EAClB1qC,KAAK2qC,aAAa,WAAYL,EAAMM,OAAQ,EAAGJ,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG3D,YAAa8D,GAC9G1qC,KAAK2qC,aAAa,WAAYL,EAAMO,OAAQ,EAAGL,EAAMrb,IACrDnvB,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,EAAGN,EAAMrb,IACjDnvB,KAAK2qC,aAAa,SAAUL,EAAMQ,IAAK,IAAKN,EAAMv8B,SALV,GAMxCjO,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrV,UACpDn1B,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,IAAKN,EAAMre,UACnDnsB,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrb,IACpDnvB,KAAK2qC,aAAa,YAAaL,EAAMS,QAAS,EAAGP,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,GAC9G1qC,KAAK2qC,aAAa,UAAWL,EAAM3F,MAAO,EAAG6F,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,IAG9GrB,EAAkBxnC,UAAU8nC,iBAAmB,WAC3C,IAAIqB,EAAQ,UAA2BrhB,EAAa,eACpD3pB,KAAKirC,gBAAgB,KAAMthB,GAC3B3pB,KAAKirC,gBAAgB,OAAQthB,GAC7B3pB,KAAKirC,gBAAgB,UAAWD,GAChChrC,KAAKirC,gBAAgB,WAAYD,GACjChrC,KAAKirC,gBAAgB,WAAYD,IAGrC3B,EAAkBxnC,UAAU8oC,aAAe,SAAUnlC,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QAC5H,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5C,IAAI7C,EAAY,IAAI,IAAoB78B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,GACvIllC,KAAKwpC,YAAY/oC,KAAK4hC,IACtB,QAAUriC,KAAMA,KAAMqiC,IAG1BgH,EAAkBxnC,UAAUi/B,WAAa,SAAUD,GAI/C,QAH0B,QAAUA,GAC9B7gC,KAAKwpC,YAAYlgC,QAAO,SAAU4F,GAAQ,OAAOA,EAAK0yB,YAAcf,KACpE7gC,KAAKwpC,YAAY1nC,SACI0pB,MAAK,SAAUiH,EAAGlV,GACzC,IAAI2tB,EAAazY,EAAEmP,UAAYrkB,EAAEqkB,UACjC,OAAsB,IAAfsJ,EAAmBzY,EAAEsS,UAAYxnB,EAAEwnB,UAAYmG,MAgB9D7B,EAAkBxnC,UAAUopC,gBAAkB,SAAUzlC,EAAM2lC,GAC1DnrC,KAAKypC,eAAejkC,GAAQ,CAAEA,KAAMA,EAAM1C,MAAOqoC,IAIrD9B,EAAkBxnC,UAAUihC,cAAgB,WACxC,OAAO9iC,KAAKypC,gBAGhBJ,EAAkBxnC,UAAUigC,SAAW,SAAUnuB,GAC7C,OAAO3T,KAAKsjC,iBAAiB3vB,IAGjC01B,EAAkBxnC,UAAUgoC,6BAA+B,WACvD,IAAIuB,EAAMprC,KAAK0pC,mBACf0B,EAAIC,gBAA6CrrC,KTzN5B8pC,SAAS,GAAIjD,GS0NlCuE,EAAIhS,QAAwCp5B,KF/MvB+P,SAAS,GAAI24B,EAAa,CAAEthC,UAAW,OEgN5DgkC,EAAI/G,QD7N+B,SAAUvX,GACjD,OAAOA,EAAkB/c,SAAS,GAAIg5B,EAAuB,CAAE3hC,UAAW,MC4NxDkkC,CAA8BtrC,MAE5CorC,EAAI/D,WR7MwB,SAAUva,GAC1C,OAAOA,EAAkBid,QAAQ,CAAE5a,GAAI,SAAU1hB,GAAS,QAASA,EAAM45B,aAAiBF,GQ4MrEoE,CAAuBvrC,MAExCorC,EAAIpB,OPtNoB,SAAUld,GACtC,OAAOA,EAAkBkd,OAAO,CAAE/7B,QAAS,SAAUR,GAAS,QAASA,EAAMu8B,SAAaxC,GOqNzEgE,CAAmBxrC,MAChCorC,EAAInB,SP1MsB,SAAUnd,GACxC,OAAOA,EAAkBmd,SAAS,CAAE9U,SAAU,SAAU1nB,GAAS,QAASA,EAAMw8B,WAAexC,GOyM5EgE,CAAqBzrC,MACpCorC,EAAIlB,QP9LqB,SAAUpd,GACvC,OAAOA,EAAkBod,QAAQ,CAAE/d,SAAU,SAAU1e,GAAS,QAASA,EAAMy8B,UAAcxC,GO6L3EgE,CAAoB1rC,MAElCorC,EAAIO,aNjO0B,SAAU7e,GAC5C,OAAOA,EAAkBid,QAAQ,GAAInC,EAAkB,CAAExgC,SAAUugC,IMgO5CiE,CAAyB5rC,MAC5CorC,EAAIS,YNnN0B,SAAU/e,GAC5C,OAAOA,EAAkBod,QAAQ,CAAE/d,UAAU,SAAI,IAAS0b,EAAkB,CAAEzgC,SAAUugC,IMkNlEmE,CAAyB9rC,MAC3CorC,EAAIW,WNpM0B,SAAUjf,GAC5C,OAAOA,EAAkBqd,SAAS,GAAIrC,EAAkB,CAAE1gC,SAAUugC,IMmM/CqE,CAAyBhsC,MAE1CorC,EAAIa,ULpO2B,SAAUnf,GAC7C,OAAOA,EAAkBqd,SAAS,GAAIpC,GKmOlBmE,CAA0BlsC,MAC1CorC,EAAInD,cL9MuB,SAAUnb,GACzC,OAAOA,EAAkB/e,UAAU,GAAIk6B,GK6MfkE,CAAsBnsC,MAE1CorC,EAAIgB,cJ3N2B,SAAUtf,GAC7C,OAAOA,EAAkBgd,SAAS,GAAIxB,GI0Nd+D,CAA0BrsC,MAE9CorC,EAAI5C,UHvOmB,SAAU1b,GACrC,OAAOA,EAAkB/e,UAAU,GAAIy6B,EAAW,CAAEphC,SAAU,OGsO1CklC,CAAkBtsC,MAElCorC,EAAIhf,UAAW,OAAqBpsB,OAEjCqpC,EA/M2B,mSChClCkD,EAA2B,WACV,SAASA,EAA2B73B,GACjD,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKouB,WAAa,IAAI,EAAAiD,WACtBrxB,KAAKkX,eAAgB,EACrBlX,KAAKwsC,oBAAqB,EAC1BxsC,KAAKysC,eAAgB,EACrBzsC,KAAK0sC,sBAAuB,EAC5B1sC,KAAKkV,QAAU,WAAc,OAAO/E,EAAMie,WAAWlZ,WAOtElV,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuE,OAAO2C,eAAe5B,YAUjEzV,KAAK2sC,WAAa,SAAUC,GAAa,OAAOz8B,EAAMuE,OAAO2C,eAAes1B,WAAWC,IAMvF5sC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMuE,OAAO2C,eAAew1B,QAM7D7sC,KAAKqV,UAAY,WAAc,OAAOlF,EAAMuE,OAAO2C,eAAehC,aAMlErV,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMuE,OAAO2C,eAAey1B,QAM7D9sC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMuE,OAAO2C,eAAe01B,YAwFrE,OA1EAR,EAAU1qC,UAAUmrC,gBAAkB,SAAUxoC,GAC5C,OAAQxE,KAAKwsC,oBAAqB,QAAUhoC,GAASA,EAAQxE,KAAKwsC,oBAmBtED,EAAU1qC,UAAUotB,oBAAsB,SAAUzqB,GAChD,IAAI,QAAUA,KAAoB,IAAVA,IAA4B,IAAVA,KAAoB,QAASA,GACnE,MAAM,IAAIiO,MAAM,0BAA4BjO,EAAQ,mDACxD,OAAQxE,KAAK0sC,sBAAuB,QAAUloC,GAASA,EAAQxE,KAAK0sC,sBAcxEH,EAAU1qC,UAAUorC,WAAa,SAAUzoC,GACvC,OAAQxE,KAAKysC,eAAgB,QAAUjoC,GAASA,EAAQxE,KAAKysC,eAgCjEF,EAAU1qC,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACnD,IAAItiB,EAAOlP,KAAKouB,WAAWlf,KAAK1J,EAAMiU,EAAY+X,GAClD,OAAQ,QAAU/X,GAAqBzZ,KAAPkP,GAE7Bq9B,EA1ImB,0SCf1BW,EAAsC,WAStC,OARAA,EAAW35B,OAAO3Q,QAAU,SAASic,GACjC,IAAK,IAAIzB,EAAGC,EAAI,EAAGkD,EAAIve,UAAUoN,OAAQiO,EAAIkD,EAAGlD,IAE5C,IAAK,IAAIwd,KADTzd,EAAIpb,UAAUqb,GACO9J,OAAO1R,UAAUa,eAAeX,KAAKqb,EAAGyd,KACzDhc,EAAEgc,GAAKzd,EAAEyd,IAEjB,OAAOhc,IAEK1c,MAAMnC,KAAMgC,YAK5BmrC,EAA8B,WAC9B,SAASA,EAAaz4B,GAClB1U,KAAK0U,OAASA,EAWlB,OATAy4B,EAAatrC,UAAU+O,WAAa,SAAUvF,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE9E0/B,EAAatrC,UAAUoyB,SAAW,SAAU5oB,EAAI6D,EAAMzB,GAClD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,KAAcntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE5E0/B,EAAatrC,UAAUurC,WAAa,SAAU/hC,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAEvE0/B,EAbsB,GAsB7BE,EAAmC,WAEnC,SAASA,EAAmC34B,GACxC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAEd1U,KAAK07B,aAAe,IAAIyR,EAAantC,KAAK0U,QAE1C1U,KAAKstC,WAAa,IAClBttC,KAAKqtB,MAAQ,EAAAA,MAEbrtB,KAAKgtC,gBAAkB,SAAUxoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAOyhC,gBAAgBxoC,IAEhGxE,KAAKivB,oBAAsB,SAAUzqB,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0jB,oBAAoBzqB,IAExGxE,KAAKitC,WAAa,SAAUzoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0hC,WAAWzoC,IAEtFxE,KAAKkP,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpC,OAAOrhB,EAAMuE,OAAOuC,WAAW1L,OAAO2D,KAAK1J,EAAMiU,EAAY+X,IAAiBrhB,GA+CtF,OArCAk9B,EAAkBxrC,UAAUwF,QAAU,SAAUid,EAAS/Y,GACrD,IAAI+hB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAEnC6C,EAAS7C,IAAWA,EAAOkC,OAASlC,EAAO6C,OAC/C7C,EAAS6C,EAAS8+B,EAAS,CAAEz/B,MAAO,CAAEW,OAAQA,IAAY7C,GAAUA,EACpE,IAAIgiC,EAAe,CACfC,OAAQlgB,EAAUmf,cAClBO,gBAAiB1f,EAAUkf,mBAC3BiB,aAAcngB,EAAUpW,eAE5B,OAAO,IAAI,IAAWoN,EAASgJ,EAAUc,WAAYpuB,KAAK07B,cAAc,QAAO6R,EAAchiC,KASjG8hC,EAAkBxrC,UAAUs4B,UAAY,SAAUuT,GAE9C,KAAK,QAASA,GACV,OAAO,EACX,IAAIpnC,GAAS,EAKb,OAJA,QAAQ,eAAsB,SAAUtC,EAAKwB,IACrC,QAAWxB,KACXsC,EAASA,IAAU,QAAUonC,EAAOloC,MAAU,QAAWkoC,EAAOloC,QAEjEc,GAGX+mC,EAAkBxrC,UAAUnB,KAAO,WAC/B,IAAI4sB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAGvC,OAFA+hB,EAAUc,WAAW5I,SAAU,EAC/B8H,EAAUc,WAAWqD,kBACdzxB,MAEJqtC,EAjE2B,kOCjBlCM,EAA2B,WAE3B,SAASA,EAA2Bj5B,GAChC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAGd1U,KAAK4sB,KAAO,SAAU1W,GAAO,OAAO/F,EAAMuE,OAAOuC,WAAW2V,KAAK1W,IAEjElW,KAAKsc,OAAS,SAAUhH,GAAW,OAAOnF,EAAMuE,OAAOuC,WAAWqF,OAAOhH,IAEzEtV,KAAK+c,eAAiB,SAAU9Q,GAAS,OAAOkE,EAAMuE,OAAOuC,WAAW8F,eAAe9Q,IAEvFjM,KAAKgc,MAAQ,SAAU4xB,GAAY,OAAOz9B,EAAMuE,OAAOuC,WAAW+E,MAAM4xB,IAGxE5tC,KAAKuH,QAAU,SAAUwU,GACrB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMpV,QAAQwU,IAGjD/b,KAAK4c,UAAY,SAAUb,GACvB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMC,UAAUb,IAGnD/b,KAAKw/B,WAAa,SAAUjjB,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAM6iB,WAAWjjB,IAEpFvc,KAAKuc,KAAO,SAAUA,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAMJ,KAAKA,IAExEvc,KAAK2c,MAAQ,WAAc,OAAOxM,EAAMuE,OAAOuC,WAAW0F,MAAMA,SAEhE3c,KAAKwrB,KAAO,SAAUqiB,GAAa,OAAO19B,EAAMuE,OAAOuC,WAAW0F,MAAM6O,KAAKqiB,IAE7E7tC,KAAKiQ,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAAW,OAAOgQ,EAAMuE,OAAOuC,WAAW0F,MAAM1M,KAAKwrB,EAAS1f,EAAS5b,IAC/GH,KAAK6+B,eAAiB,IAAI,IAAenqB,GAyE7C,OAtEAi5B,EAAU9rC,UAAUua,OAAS,SAAU0xB,GACnC,IAAIphB,EAAO1sB,KAAK0U,OAAO0C,gBACnB02B,EACA9tC,KAAK6V,SAAW6W,EAAKjb,MAGrBib,EAAKjb,QAAUzR,KAAK6V,UAExB6W,EAAKjb,IAAIzR,KAAK6V,UAAU,IAY5B83B,EAAU9rC,UAAUpB,KAAO,SAAUstC,EAAY3/B,EAAQjO,GACrD,IAAI4U,EAAU5U,KAAaA,EAAQ4U,QACnC/U,KAAK0U,OAAOuC,WAAWxF,IAAIs8B,EAAWnmB,OAAOxZ,GAAU,IAAK2G,IAqBhE44B,EAAU9rC,UAAUmsC,KAAO,SAAUD,EAAY3/B,EAAQjO,GACrD,IAAIsR,EAAMs8B,EAAWnmB,OAAOxZ,GAC5B,GAAW,MAAPqD,EACA,OAAO,KACXtR,EAAUA,GAAW,CAAE8tC,UAAU,GACjC,IAAIpmC,EAAM7H,KAAK0U,OAAOuC,WAAW1L,OAC7B2iC,EAAUrmC,EAAIwN,YAKlB,GAJK64B,GAAmB,OAARz8B,IACZA,EAAM,IAAM5J,EAAI8kC,aAAel7B,GAEnCA,EA1GR,SAAwBA,EAAKy8B,EAASD,EAAUx4B,GAC5C,MAAiB,MAAbA,EACOhE,EACPy8B,GACO,QAAqBz4B,GAAYhE,EACxCw8B,EACOx4B,EAAS3T,MAAM,GAAK2P,EACxBA,EAmGG08B,CAAe18B,EAAKy8B,EAAS/tC,EAAQ8tC,SAAUpmC,EAAI4N,aACpDtV,EAAQ8tC,WAAax8B,EACtB,OAAOA,EAEX,IAAI28B,GAASF,GAAWz8B,EAAM,IAAM,GAChC48B,EAAUxmC,EAAIilC,OACdA,EAAoB,KAAZuB,GAA8B,MAAZA,EAAkB,GAAK,IAAMA,EAC3D,MAAO,CAACxmC,EAAIklC,WAAY,MAAOllC,EAAIglC,OAAQC,EAAMsB,EAAO38B,GAAKwB,KAAK,KAEtEM,OAAO+6B,eAAeX,EAAU9rC,UAAW,oBAAqB,CAE5D6O,IAAK,WACD,OAAO1Q,KAAK0U,OAAOuC,WAAWoF,mBAElCkyB,YAAY,EACZC,cAAc,IAEXb,EA1GmB,2aCJ1Bc,EAAgC,WAChC,SAASA,EAAe/5B,GACpB1U,KAAK0U,OAASA,EAiKlB,OA/JA+5B,EAAe5sC,UAAUwF,QAAU,SAAU2J,GACzC,OAAOhR,KAAK0U,OAAOE,kBAAkBvN,QAAQ2J,IAEjDy9B,EAAe5sC,UAAUL,OAAS,SAAUsb,EAAMf,GAC9C,IAAI5L,EAAQnQ,KACRy9B,EAAU,YAAqBD,EAAqB,uBACpDkR,GAAW,QAAQ,CACnB,CAAC,KAAU,SAAUC,GAAS,OAAOD,EAASv+B,EAAM9I,QAAQsnC,MAC5D,EAAC,IAAAz1B,IAAG,KAAa,SAAUy1B,GAAS,OAAOx+B,EAAMy+B,eAAeD,EAAO5yB,KACvE,EAAC,IAAAkI,IAAGwZ,EAASD,GAAqB,SAAUmR,GAAS,OAAOx+B,EAAM0+B,UAAUF,EAAOx+B,EAAMuE,UACzF,EAAC,IAAAwE,IAAG/P,QAAS,SAAUwlC,GAAS,OAAOx+B,EAAM2+B,WAAWH,EAAO5yB,KAC/D,CAAC,KAAY,SAAU4yB,GAAS,OAAO,IAAIlyB,EAAYkyB,EAAO5yB,OAE9DQ,EAAOmyB,EAAS5xB,GACpB,IAAKP,EACD,MAAM,IAAI9J,MAAM,4BACpB,OAAO8J,GAsCXkyB,EAAe5sC,UAAU+sC,eAAiB,SAAUb,EAAYhyB,GAC5D,IAAIgzB,EAAWhzB,GACX,QAASA,KACTA,EAAU/b,KAAK0U,OAAOE,kBAAkBvN,QAAQ0U,KAChD,IAAA7C,IAAG,IAAH,CAAe6C,KACfgzB,EAAW,SAAU/yB,GAAS,OAAOD,EAAQ6L,OAAO5L,KAiBxD,IAAIgzB,EAAU,CAAEjB,WAAYA,EAAYkB,cAPxC,SAAuB7gC,GACnB,IAAI8gC,EAAWnB,EAAW1a,aAAa/pB,QAAO,SAAU0F,GAAS,OAAOA,EAAM4f,cAC9E,OAAKsgB,EAAS9/B,OAEA8/B,EAAS5lC,QAAO,SAAU0F,GAAS,OAAOZ,EAAOY,EAAM3D,OACtD+D,OAAS8/B,EAAS9/B,OAFtB,MAIuDF,KAAM,cAC5E,OAAO,QAAO,IAAIuN,GAjBlB,SAA2BhL,GACvB,IAAIrD,EAAS2/B,EAAWtkC,KAAKgI,EAAItJ,KAAMsJ,EAAI09B,OAAQ19B,EAAIqgB,MACvD,OAAOic,EAAWre,UAAUthB,IAAWA,IAeM2gC,GAAWC,IAahEP,EAAe5sC,UAAUgtC,UAAY,SAAUO,EAAa16B,GACxD,IAAIjH,EAAQ,uBAA+B2hC,GAAeA,EAAYp7B,UAAYo7B,EAe9EJ,EAAU,CAAEvhC,MAAOA,EAAOyB,KAAM,SACpC,OAAO,QAAOlP,KAAK4uC,eAAenhC,EAAMgE,KAR1B,SAAUuK,GACpB,IAAIvD,EAAS/D,EAAOmC,aAChByB,EAAU5D,EAAO4D,QACjBG,EAAOu1B,KAAKvgC,EAAOuO,KAAWvD,EAAOu1B,KAAK11B,EAAQwN,QAASxN,EAAQlK,SACnEqK,EAAO42B,aAAa5hC,EAAOuO,EAAO,CAAEoD,SAAS,EAAML,OAAQ,WAIZiwB,IAkC3DP,EAAe5sC,UAAUitC,WAAa,SAAU7rB,EAAQlH,GACpD,GAAIkH,EAAOnF,QAAUmF,EAAOqsB,OACxB,MAAM,IAAI78B,MAAM,4CAMpB,IAIIs8B,GAAW,QAAShzB,GAJJ,SAAUC,GAE1B,OAAOD,EAAQhH,QAAQ,kBAAkB,SAAUC,EAAG8H,GAAQ,OAAOd,EAAe,MAATc,EAAe,EAAIyyB,OAAOzyB,QAEtDf,EAE/CizB,EAAU,CAAE/rB,OAAQA,EAAQ/T,KAAM,UACtC,OAAO,QAAO,IAAIuN,GAFU,SAAUhL,GAAO,OAAOwR,EAAOxZ,KAAKgI,EAAItJ,QAEf4mC,GAAWC,IAEpEP,EAAee,UAAY,SAAUv1B,GAAO,OAAOA,GAAO,CAAC,OAAQ,QAAS,WAAWkpB,OAAM,SAAUt9B,GAAO,OAAO,QAAUoU,EAAIpU,QAC5H4oC,EAnKwB,GA4K/BhyB,EACA,SAAqBT,EAAOD,GACxB,IAAI5L,EAAQnQ,KACZA,KAAKgc,MAAQA,EACbhc,KAAKkP,KAAO,MACZlP,KAAKivC,cAAgB,SAAUjzB,GAAS,OAAO,EAAI7L,EAAMgL,KACzDnb,KAAK+b,QAAUA,GAAW,2GCnK9B0zB,sPAaJ,SAASC,EAAa3zB,GAClB,MAAK,QAAWA,KAAa,QAASA,KAAa,IAAA7C,IAAG,EAAA2mB,YAAH,CAAgB9jB,IAAa,EAAA8jB,YAAA,MAAkB9jB,IAC9F,MAAM,IAAItJ,MAAM,4FAEpB,OAAO,QAAWsJ,GAAWA,GAAU,QAAIA,GAhB/C0zB,EAAoB,SAAUhyB,EAAGmB,GAC7B,IAAI+wB,EA5BW,SAAUlyB,EAAGmB,GAAK,OAAQA,EAAExX,UAAY,IAAMqW,EAAErW,UAAY,GA4BjEwoC,CAAanyB,EAAGmB,GAC1B,OAAY,IAAR+wB,GAGQ,KADZA,EA9BW,SAAUlyB,EAAGmB,GACxB,IAAIixB,EAAU,CAAE7E,MAAO,EAAG8E,WAAY,EAAGC,OAAQ,EAAGC,IAAK,EAAGC,MAAO,GACnE,OAAQJ,EAAQpyB,EAAEvO,OAAS,IAAM2gC,EAAQjxB,EAAE1P,OAAS,GA4B9CghC,CAASzyB,EAAGmB,KAIN,KADZ+wB,EA7BiB,SAAUlyB,EAAGmB,GAC9B,OAAQnB,EAAEswB,YAAenvB,EAAEmvB,WAAiB,YAAmBtwB,EAAEswB,WAAYnvB,EAAEmvB,YAAvC,EA4BlCoC,CAAe1yB,EAAGmB,IAJb+wB,EAtBF,SAAUlyB,EAAGmB,GAEtB,IAAIwxB,EAAmB,CAAEpF,OAAO,EAAM8E,YAAY,GAElD,OADYM,EAAiB3yB,EAAEvO,OAASkhC,EAAiBxxB,EAAE1P,MAC5C,GAAKuO,EAAEtC,KAAO,IAAMyD,EAAEzD,KAAO,GAyBrCk1B,CAAO5yB,EAAGmB,IAkBrB,IAAI0xB,EAA0B,WAE1B,SAASA,EAA0B57B,GAC/B1U,KAAK0U,OAASA,EACG1U,KAAKuwC,QAAUd,EACfzvC,KAAKwwC,OAAS,GACdxwC,KAAKywC,IAAM,EAC5BzwC,KAAK6+B,eAAiB,IAAI,IAAenqB,GA8Q7C,OA3QA47B,EAASzuC,UAAUqT,QAAU,SAAUR,GACnC1U,KAAKwwC,OAAS,UACPxwC,KAAK0wC,cAqChBJ,EAASzuC,UAAU0F,QAAU,SAAUwU,GACnC,IAAI40B,EAAYjB,EAAa3zB,GAI7B/b,KAAKuc,KAAKvc,KAAK6+B,eAAer9B,QAHhB,SAAUosC,EAAUl5B,GAC9B,OAAmD,IAA5CA,EAAO4D,QAAQyT,kBAAkBnG,UAAkB,QAAQnc,KAAKmkC,EAASzlC,QAEtCwoC,KA6ClDL,EAASzuC,UAAU+a,UAAY,SAAUb,GACrC,IAAI40B,EAAYjB,EAAa3zB,GAC7B/b,KAAK0wC,aAAe1wC,KAAK6+B,eAAer9B,QAAO,SAAI,GAAOmvC,GAC1D3wC,KAAK4wC,SAAU,GAOnBN,EAASzuC,UAAU29B,WAAa,SAAUjjB,IACtC,QAAWvc,KAAKwwC,OAAQj0B,IAc5B+zB,EAASzuC,UAAU0a,KAAO,SAAUA,GAChC,IAAIpM,EAAQnQ,KACZ,IAAK,cAAyBuc,GAC1B,MAAM,IAAI9J,MAAM,gBAKpB,OAJA8J,EAAKpB,IAAMnb,KAAKywC,MAChBl0B,EAAKnV,SAAWmV,EAAKnV,UAAY,EACjCpH,KAAKwwC,OAAO/vC,KAAK8b,GACjBvc,KAAK4wC,SAAU,EACR,WAAc,OAAOzgC,EAAMqvB,WAAWjjB,KAOjD+zB,EAASzuC,UAAU8a,MAAQ,WAEvB,OADA3c,KAAK6wC,eACE7wC,KAAKwwC,OAAOpuC,OAAOpC,KAAK0wC,aAAe,CAAC1wC,KAAK0wC,cAAgB,KA4CxEJ,EAASzuC,UAAU2pB,KAAO,SAAUqiB,GAIhC,IAHA,IAAIiD,EAAS9wC,KAAK+wC,WAAW/wC,KAAKwwC,OAASxwC,KAAKuwC,QAAU1C,GAAa7tC,KAAKuwC,SAExES,EAAQ,EACH3zB,EAAI,EAAGA,EAAIyzB,EAAO1hC,OAAQiO,IAC/ByzB,EAAOzzB,GAAG4zB,OAASD,EACf3zB,EAAIyzB,EAAO1hC,OAAS,GAAgD,IAA3CpP,KAAKuwC,QAAQO,EAAOzzB,GAAIyzB,EAAOzzB,EAAI,KAC5D2zB,IAGRhxC,KAAKwwC,OAASM,EACd9wC,KAAK4wC,SAAU,GAGnBN,EAASzuC,UAAUgvC,aAAe,WAC9B7wC,KAAK4wC,SAAW5wC,KAAKwrB,QAGzB8kB,EAASzuC,UAAUkvC,WAAa,SAAUrxB,EAAKmuB,GAC3C,IAAIqD,EAAexxB,EAAI/Q,KAAI,SAAUuS,EAAMjS,GAAO,MAAO,CAAGiS,KAAMA,EAAMjS,IAAKA,MAK7E,OAJAiiC,EAAa1lB,MAAK,SAAU2lB,EAAUC,GAClC,IAAIC,EAAUxD,EAAUsD,EAASjwB,KAAMkwB,EAASlwB,MAChD,OAAmB,IAAZmwB,EAAgBF,EAASliC,IAAMmiC,EAASniC,IAAMoiC,KAElDH,EAAaviC,KAAI,SAAU2iC,GAAW,OAAOA,EAAQpwB,SA6DhEovB,EAASzuC,UAAUoO,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAClD,IAAIoc,EAAOvc,KAAK6+B,eAAer9B,OAAOi6B,EAAS1f,GAI/C,OAHI,QAAU5b,GAAWA,EAAQiH,YAC7BmV,EAAKnV,SAAWjH,EAAQiH,UAC5BpH,KAAKuc,KAAKA,GACHA,GAEJ+zB,EArRkB,8VCpDzBiB,EAA4B,WAE5B,SAASA,EAA4B78B,GACjC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKqc,mBAAoB,EAM1Crc,KAAK2c,MAAQ,IAAI,IAAS3c,KAAK0U,QAM/B1U,KAAKuL,OAAS,IAAI,IAAUvL,KAAK0U,QAsDjC1U,KAAKyR,IAAM,SAAU+/B,EAAQz8B,EAAStH,GAClC,OAAO0C,EAAMuE,OAAO0C,gBAAgB3F,IAAI+/B,EAAQz8B,EAAStH,IAS7DzN,KAAKmI,KAAO,WAAc,OAAOgI,EAAMuE,OAAO0C,gBAAgBjP,QAQ9DnI,KAAKmvC,OAAS,WAAc,OAAOh/B,EAAMuE,OAAO0C,gBAAgB+3B,UAQhEnvC,KAAK8xB,KAAO,WAAc,OAAO3hB,EAAMuE,OAAO0C,gBAAgB0a,QAgB9D9xB,KAAKmV,SAAW,SAAU3U,GAAY,OAAO2P,EAAMuE,OAAO0C,gBAAgBjC,SAAS3U,IA4IvF,OAzIA+wC,EAAW1vC,UAAUqT,QAAU,WAC3BlV,KAAKsc,QAAO,GACZtc,KAAK2c,MAAMzH,WAOfq8B,EAAW1vC,UAAU8qB,MAAQ,WACzB,MAAO,CAAExkB,KAAMnI,KAAKmI,OAAQgnC,OAAQnvC,KAAKmvC,SAAUrd,KAAM9xB,KAAK8xB,SAsBlEyf,EAAW1vC,UAAU+qB,KAAO,SAAU1W,GAClC,IAAIA,IAAOA,EAAI5T,iBAAf,CAEA,IAAI+oB,EAAKrrB,KAAK0U,OAAQuC,EAAaoU,EAAGpU,WAAYJ,EAAewU,EAAGxU,aAChEpF,EAAM,CAAEtJ,KAAM8O,EAAW9O,OAAQgnC,OAAQl4B,EAAWk4B,SAAUrd,KAAM7a,EAAW6a,QAC/E2f,EAAOzxC,KAAKgc,MAAMvK,IACJ,QAAQ,CACtB,CAAC,KAAU,SAAU+/B,GAAU,OAAOv6B,EAAWxF,IAAI+/B,GAAQ,KAC7D,CAAC,EAAA3R,YAAA,MAAmB,SAAU3sB,GAAO,OAAO2D,EAAa66B,GAAGx+B,EAAIzF,MAAOyF,EAAI9E,OAAQ8E,EAAI/S,WACvF,EAAC,IAAA+Y,IAAG,EAAA2mB,aAAc,SAAUx5B,GAAU,OAAOwQ,EAAa66B,GAAGrrC,EAAOoH,QAASpH,EAAO+H,SAAU/H,EAAOlG,cAEzGwxC,CAAYF,GAAQA,EAAKl1B,KAAKR,QAAQ01B,EAAKz1B,MAAOvK,EAAKzR,KAAK0U,WAwBhE68B,EAAW1vC,UAAUya,OAAS,SAAUhH,GACpC,IAAInF,EAAQnQ,KACZ,IAAgB,IAAZsV,EAKA,OAAQtV,KAAK4xC,iBACT5xC,KAAK4xC,kBAAoB5xC,KAAK0U,OAAOuC,WAAW9B,UAAS,SAAUe,GAAO,OAAO/F,EAAMyc,KAAK1W,MALhGlW,KAAK4xC,kBAAoB5xC,KAAK4xC,0BACvB5xC,KAAK4xC,kBA+BpBL,EAAW1vC,UAAUkb,eAAiB,SAAU9Q,QAC9BkI,IAAVlI,IACAA,GAAQ,GACZjM,KAAKqc,kBAAoBpQ,GAQ7BslC,EAAW1vC,UAAUma,MAAQ,SAAUvK,GAEnCA,GAAM,QAAO,CAAEtJ,KAAM,GAAIgnC,OAAQ,GAAIrd,KAAM,IAAMrgB,GAYjD,IAXA,IAUIggC,EARsBl1B,EAClBP,EAHJW,EAAQ3c,KAAK2c,MAAMA,QAWdU,EAAI,EAAGA,EAAIV,EAAMvN,UAElBqiC,GAAQA,EAAKl1B,KAAK00B,SAAWt0B,EAAMU,GAAG4zB,QAFZ5zB,IAAK,CAInC,IAAIyI,QAZA9J,GAAAA,GADkBO,EAaEI,EAAMU,IAZbrB,MAAMvK,EALfzR,KAK0B0U,UAClB,CAAEsH,MAAOA,EAAOO,KAAMA,EAAMs1B,OAAQt1B,EAAK0yB,cAAcjzB,KAavEy1B,GAAQA,GAAS3rB,GAAWA,EAAQ+rB,OAASJ,EAAKI,OAAU/rB,EAAU2rB,EAE1E,OAAOA,GAEJF,EA7PoB,oZCJ3BO,EAAsC,WACtC,SAASA,EAAqBp9B,EAAQq9B,GAClC,IAAI5hC,EAAQnQ,KACZA,KAAK+xC,gBAAkBA,EACvB/xC,KAAKgyC,WAAa,GAClBhyC,KAAKiyC,UAAY,SAAU/7B,GAAO,OAAO/F,EAAM6hC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGoL,OAC5FlW,KAAK8xB,KAAO,WAAc,OAAO,QAAS3hB,EAAM+hC,QAAQpgB,MACxD9xB,KAAKmI,KAAO,WAAc,OAAO,QAASgI,EAAM+hC,QAAQ/pC,MACxDnI,KAAKmvC,OAAS,WAAc,OAAO,SAAU,QAASh/B,EAAM+hC,QAAQ/C,SACpEnvC,KAAKmyC,UAAY,cACjBnyC,KAAKoyC,SAAW,aAoBpB,OAlBAN,EAAqBjwC,UAAU4P,IAAM,SAAUA,EAAKsD,GAQhD,YAPgB,IAAZA,IAAsBA,GAAU,IAChC,QAAUtD,IAAQA,IAAQzR,KAAKkyC,SAC/BlyC,KAAKmpB,KAAK,KAAM,KAAM1X,EAAKsD,GACvB/U,KAAK+xC,iBACL/xC,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAG,CAAE2G,IAAKA,SAG1D,QAASzR,OAEpB8xC,EAAqBjwC,UAAUsT,SAAW,SAAUrK,GAChD,IAAIqF,EAAQnQ,KAEZ,OADAA,KAAKgyC,WAAWvxC,KAAKqK,GACd,WAAc,OAAO,QAAWqF,EAAM6hC,WAAYlnC,KAE7DgnC,EAAqBjwC,UAAUqT,QAAU,SAAUR,IAC/C,QAAS1U,KAAKgyC,aAEXF,EA9B8B,2LCDrCO,EAAuC,WACvC,SAASA,EAAsB39B,EAAQ49B,QAClB,IAAbA,IAAuBA,GAAW,GACtCtyC,KAAKsyC,SAAWA,EAChBtyC,KAAK0V,eAAYvB,EACjBnU,KAAKuyC,YAAc,GAmCvB,OAjCAF,EAAsBxwC,UAAUirC,KAAO,WACnC,OAAIj3B,SAASi3B,KACFyC,OAAO15B,SAASi3B,MAEA,UAApB9sC,KAAK+sC,WAAyB,IAAM,IAE/CsF,EAAsBxwC,UAAUkrC,SAAW,WACvC,OAAOl3B,SAASk3B,SAASh4B,QAAQ,KAAM,KAE3Cs9B,EAAsBxwC,UAAUgrC,KAAO,WACnC,OAAOh3B,SAAS28B,UAEpBH,EAAsBxwC,UAAUwT,UAAY,WACxC,OAAOrV,KAAKsyC,UAEhBD,EAAsBxwC,UAAU8qC,WAAa,SAAUC,GACnD,OAAO,QAAUA,GAAc5sC,KAAKuyC,YAAc3F,EAAa5sC,KAAKuyC,aAExEF,EAAsBxwC,UAAU4T,SAAW,SAAUu4B,GAKjD,OAJI,QAAUA,KACVhuC,KAAK0V,UAAYs4B,IACjB,QAAYhuC,KAAK0V,aACjB1V,KAAK0V,UAAY1V,KAAKyyC,eACnBzyC,KAAK0V,WAEhB28B,EAAsBxwC,UAAU4wC,YAAc,WAC1C,IAAIC,EAAUrsB,SAASssB,qBAAqB,QAAQ,GACpD,OAAID,GAAWA,EAAQ1E,KACZ0E,EAAQ1E,KAAKj5B,QAAQ,uBAAwB,IAEjD/U,KAAKsyC,SAAW,IAAMz8B,SAAS/B,UAAY,KAEtDu+B,EAAsBxwC,UAAUqT,QAAU,aACnCm9B,EAxC+B,uHCDlCO,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAMnFC,EAAqC,SAAUC,GAE/C,SAASD,EAAoBv+B,GACzB,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAU1U,KAEhD,OADA,sBAAsB,aAAcmQ,EAAM8hC,WAAW,GAC9C9hC,EAYX,OAhBA0iC,EAAUI,EAAqBC,GAM/BD,EAAoBpxC,UAAUqwC,KAAO,WACjC,OAAO,QAAYlyC,KAAKmyC,UAAUrgB,OAEtCmhB,EAAoBpxC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAC9D/U,KAAKmyC,UAAUrgB,KAAOrgB,GAE1BwhC,EAAoBpxC,UAAUqT,QAAU,SAAUR,GAC9Cw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,aAAc1U,KAAKiyC,YAEzCgB,EAjB6B,CAkBtC,6cC/BEG,EACA,WACI,IAAIjjC,EAAQnQ,KACZA,KAAKkV,QAAU,KACflV,KAAK0V,UAAY,GACjB1V,KAAKqzC,MAAQ,GACbrzC,KAAKszC,UAAY,OACjBtzC,KAAKuzC,MAAQ,YACbvzC,KAAKuyC,YAAc,GACnBvyC,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMkjC,OACvCrzC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMmjC,WAC3CtzC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMojC,OACvCvzC,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuF,WAC3C1V,KAAKqV,UAAY,WAAc,OAAO,GACtCrV,KAAK2sC,WAAa,SAAU6G,GAAU,OAAQ,QAAUA,GAAWrjC,EAAMoiC,YAAciB,EAAUrjC,EAAMoiC,oIChBvGK,8EADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAKnFS,EAAuC,SAAUP,GAEjD,SAASO,EAAsB/+B,GAC3B,OAAOw+B,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAQ9C,OAVA6yC,EAAUY,EAAuBP,GAIjCO,EAAsB5xC,UAAUqwC,KAAO,WACnC,OAAOlyC,KAAK0zC,MAEhBD,EAAsB5xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAChE/U,KAAK0zC,KAAOjiC,GAETgiC,EAX+B,CAYxC,0tBCZ8B,QAAsB,4BAA4B,EAAO,IAAqB,MAEzE,QAAsB,6BAA6B,EAAM,IAA0B,MAEtF,QAAsB,0BAA0B,EAAO,IAAuB,8HClBxGb,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAUnFW,EAA0C,SAAUT,GAEpD,SAASS,EAAyBj/B,GAC9B,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAG/C,OAFAmQ,EAAMyjC,QAAUl/B,EAAOuC,WAAW1L,OAClC,sBAAsB,WAAY4E,EAAM8hC,WAAW,GAC5C9hC,EA8CX,OAnDA0iC,EAAUc,EAA0BT,GAuBpCS,EAAyB9xC,UAAUgyC,eAAiB,WAChD,OAAO,QAAqB7zC,KAAK4zC,QAAQn+B,aAE7Ck+B,EAAyB9xC,UAAUqwC,KAAO,WACtC,IAAI7mB,EAAKrrB,KAAKmyC,UAAWr+B,EAAWuX,EAAGvX,SAAUge,EAAOzG,EAAGyG,KAAMqd,EAAS9jB,EAAG8jB,OAC7EA,GAAS,QAAWA,GAAQ,GAC5Brd,GAAO,QAAUA,GAAM,GACvB,IAAIgiB,EAAa9zC,KAAK6zC,iBAClBE,EAAqBjgC,IAAa9T,KAAK4zC,QAAQn+B,WAC/Cu+B,EAAiBlgC,EAASiT,OAAO,EAAG+sB,EAAW1kC,UAAY0kC,EAE/D,OADAhgC,EAAWigC,EAAqB,IAAMC,EAAiBlgC,EAASmmB,UAAU6Z,EAAW1kC,QAAU0E,IAC5Eq7B,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE1E6hB,EAAyB9xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GACnE,IAAI++B,EAAa9zC,KAAK6zC,iBAClBzF,EAAQ38B,GAAkB,MAAXA,EAAI,GAAa,IAAM,GACtCwiC,EAAkB,KAARxiC,GAAsB,MAARA,EAAczR,KAAK4zC,QAAQn+B,WAAaq+B,EAAa1F,EAAQ38B,EACrFsD,EACA/U,KAAKoyC,SAAS8B,aAAazmC,EAAO0lC,EAAOc,GAGzCj0C,KAAKoyC,SAAS+B,UAAU1mC,EAAO0lC,EAAOc,IAG9CN,EAAyB9xC,UAAUqT,QAAU,SAAUR,GACnDw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,WAAY1U,KAAKiyC,YAEvC0B,EApDkC,CAqD3C,qKCzDS5sC,EAAK,CAEZkJ,KAAM,SAAUjM,GAAO,OAAO,IAAIowC,SAAQ,SAAUznC,EAAS0nC,GAAU,OAAO1nC,EAAQ3I,OAEtFqwC,OAAQ,SAAUrwC,GACd,OAAO,IAAIowC,SAAQ,SAAUznC,EAAS0nC,GAClCA,EAAOrwC,OAIfiI,MAAO,WACH,IAAIqoC,EAAW,GAKf,OAJAA,EAAS7wC,QAAU,IAAI2wC,SAAQ,SAAUznC,EAAS0nC,GAC9CC,EAAS3nC,QAAUA,EACnB2nC,EAASD,OAASA,KAEfC,GAGX74B,IAAK,SAAUF,GACX,IAAI,QAAQA,GACR,OAAO64B,QAAQ34B,IAAIF,GAEvB,IAAI,QAASA,GAAW,CAGpB,IAAI0gB,EAAQ1oB,OAAOC,KAAK+H,GAAU5M,KAAI,SAAU9I,GAAO,OAAO0V,EAAS1V,GAAKkF,MAAK,SAAU/G,GAAO,MAAO,CAAG6B,IAAKA,EAAK7B,IAAKA,SAE3H,OAAO+C,EAAG0U,IAAIwgB,GAAOlxB,MAAK,SAAUiW,GAChC,OAAOA,EAAOpS,QAAO,SAAUsL,EAAKzG,GAEhC,OADAyG,EAAIzG,EAAM5N,KAAO4N,EAAMzP,IAChBkW,IACR,yMC/CRq6B,EAAmB,SAAUC,EAAOnpB,GAC3C,IAAIxlB,EAAMwlB,EAAG,GAAIrnB,EAAMqnB,EAAG,GAU1B,OATKmpB,EAAM9xC,eAAemD,IAGjB,QAAQ2uC,EAAM3uC,IACnB2uC,EAAM3uC,GAAKpF,KAAKuD,GAGhBwwC,EAAM3uC,GAAO,CAAC2uC,EAAM3uC,GAAM7B,GAN1BwwC,EAAM3uC,GAAO7B,EAQVwwC,GAEAC,EAAY,SAAUC,GAC7B,OAAOA,EAAY5xB,MAAM,KAAKxZ,OAAO,MAAUqF,IAAI,MAAYC,OAAO2lC,EAAkB,KAErF,SAASra,EAASzoB,GACrB,IAAIkjC,EAAgB,SAAUrlC,GAAK,OAAOA,GAAK,IAC3C+b,GAAK,QAAU5Z,GAAK9C,IAAIgmC,GAAgBC,EAAavpB,EAAG,GAAIyG,EAAOzG,EAAG,GACtEC,GAAK,QAAWspB,GAAYjmC,IAAIgmC,GACpC,MAAO,CAAExsC,KADkDmjB,EAAG,GACzC6jB,OADsD7jB,EAAG,GACzCwG,KAAMA,EAAMrgB,IAAKA,GAEnD,IAAIojC,EAAW,SAAUC,GAC5B,IAAI3sC,EAAO2sC,EAAI3sC,OACX4sC,EAAeD,EAAI3F,SACnBrd,EAAOgjB,EAAIhjB,OACXqd,EAAS57B,OAAOC,KAAKuhC,GACpBpmC,KAAI,SAAU9I,GACf,IAAImJ,EAAQ+lC,EAAalvC,GAEzB,QADW,QAAQmJ,GAASA,EAAQ,CAACA,IACzBL,KAAI,SAAU3K,GAAO,OAAO6B,EAAM,IAAM7B,QAEnD4K,OAAO,KAAS,IAChBqE,KAAK,KACV,OAAO9K,GAAQgnC,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE/D,SAASkjB,EAAsBxvC,EAAM0oC,EAAS+G,EAAcC,GAC/D,OAAO,SAAU98B,GACb,IAAIX,EAAWW,EAAShB,gBAAkB,IAAI69B,EAAa78B,GACvD+8B,EAAiB/8B,EAASf,eAAiB,IAAI69B,EAAmB98B,EAAU81B,GAKhF,MAAO,CAAE1oC,KAAMA,EAAMiS,QAASA,EAAS09B,cAAeA,EAAejgC,QAJrE,SAAiBR,GACbA,EAAOQ,QAAQuC,GACf/C,EAAOQ,QAAQigC,kaCvBvBr6B,EAA6B,WAE7B,SAASA,EAA6BpG,GAClC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKo1C,SAAW,GAChBp1C,KAAKq1C,aAAe,GACpBr1C,KAAKs1C,qBAAuB,GAC5Bt1C,KAAKgyC,WAAa,GAEnChyC,KAAKgK,WAAa,CACdC,iBAAkBjK,KAAKiK,iBAAiB3G,KAAKtD,MAC7CgX,mBAAoBhX,KAAKgX,mBAAmB1T,KAAKtD,MACjDu1C,kBAAmB,SAAUlqC,GAAM,OAAO,QAAK8E,EAAMilC,UAAU,SAAUt7B,GAAQ,OAAO3J,EAAMuE,OAAOyG,IAAM,IAAMrB,EAAKzO,KAAOA,MAC7HmqC,mBAAoB,WAAc,OAAOrlC,EAAMilC,UAC/CK,mBAAoB,WAAc,OAAOtlC,EAAMklC,cAC/CK,QAAS,SAAUvX,GAEf,OADAhuB,EAAM6hC,WAAWvxC,KAAK09B,GACf,WAAc,OAAO,QAAWhuB,EAAM6hC,WAAY7T,MAwPrE,OAzOArjB,EAAY66B,sBAAwB,SAAU9kC,EAAS+kC,QAC/B,IAAhBA,IAA0BA,EAAc,IAI5C,IAAIC,EAAgBD,EAAY9yB,MAAM,KAClC9H,EAAa66B,EAAc,IAAM,WACjC36B,GAAsB,QAAS26B,EAAc,IAAMA,EAAc,GAAK,IAGtEC,EAAwB,wBAAwBrsC,KAAKuR,GAYzD,GAXI86B,IAEA56B,EAAsB46B,EAAsB,GAC5C96B,EAAa86B,EAAsB,IAEV,MAAzB96B,EAAWvV,OAAO,KAClBuV,EAAaA,EAAW+L,OAAO,GAC/B7L,EAAsB,IAGN,kBACFzR,KAAKyR,GAAsB,CACzC,IAAI66B,EAAc76B,EAAoB4H,MAAM,KAAKlU,QAAO,SAAUonC,EAAQ1mC,GAAK,OAAO0mC,EAAO57B,SAAWvJ,GACxGqK,EAAsB66B,EAAYvwC,SAEL,MAAxB0V,IACLA,EAAsBrK,EAAQrL,MAElC,MAAO,CAAEwV,WAAYA,EAAYE,oBAAqBA,IAG1DJ,EAAYjZ,UAAUoI,iBAAmB,SAAU4G,GAC/C,OAAQ7Q,KAAKi2C,aAAeplC,GAAW7Q,KAAKi2C,cAGhDn7B,EAAYjZ,UAAUmV,mBAAqB,SAAUk/B,EAAUh2C,GAC3DF,KAAKs1C,qBAAqBY,GAAYh2C,GAE1C4a,EAAYjZ,UAAU2yB,iBAAmB,SAAUrsB,EAAMozB,GACrD,IAAI4a,EAAan2C,KAAKs1C,qBAAqB/Z,EAAKnwB,OAChD,IAAK+qC,EACD,MAAM,IAAI1jC,MAAM,2DAA6D8oB,EAAKnwB,OACtF,IAAIgrC,EAAOD,EAAWhuC,EAAMozB,GAC5B,OAAO,QAAQ6a,GAAQA,EAAO,CAACA,IAUnCt7B,EAAYjZ,UAAUumC,qBAAuB,SAAU19B,GACnD,2BAA4B,cAAeA,IAC3C,QAAW1K,KAAKq1C,aAAc3qC,IAElCoQ,EAAYjZ,UAAUwmC,mBAAqB,SAAU39B,GACjD,2BAA4B,iBAAkBA,GAC9C1K,KAAKq1C,aAAa50C,KAAKiK,IAE3BoQ,EAAYjZ,UAAU+qB,KAAO,WACzB,IAAIzc,EAAQnQ,KACRq2C,EAAer2C,KAAKo1C,SAASzmC,KAAI,SAAU4c,GAAO,MAAO,CAACA,EAAIjgB,IAAKigB,MAAS3c,OAAO,KAAY,IASnG,SAAS0nC,EAAgB/qC,GAErB,IADA,IAAIsF,EAAUtF,EAAOxD,SAASgC,SAAUG,EAAQ,IACvCA,GAAS2G,EAAQuJ,QACtBvJ,EAAUA,EAAQuJ,OACtB,OAAOlQ,EAGX,IAAIqsC,GAAe,SAAM,SAAUC,EAASC,EAAQ1lB,EAAMC,GAAS,OAAOylB,GAAUD,EAAQzlB,GAAQylB,EAAQxlB,OAkBxG0lB,EAAe12C,KAAKo1C,SAAS5pB,KAAK+qB,GA9BtC,SAAqB9vC,GACjB,IAAIkwC,EAAa,SAAU9lC,GAAW,OAAQA,GAAWA,EAAQuJ,OAASu8B,EAAW9lC,EAAQuJ,QAAU,EAAI,GAC3G,OAAsC,IAA/B3T,EAAO6E,IAAIwX,MAAM,KAAK1T,OAAiBunC,EAAWlwC,EAAOkiB,mBA4BJ,IAAIha,KAjB3C,SAAUlI,GAC/B,IAAImwC,EAAkBzmC,EAAMklC,aAAa/rC,OAAOwR,EAAYoI,QAAQmzB,EAAc5vC,IAOlF,OANImwC,EAAgBxnC,OAAS,GAIzBwnC,EAAgBprB,KAAK+qB,EAAaD,GAAkB,IAEjD,CAAE7vC,OAAQA,EAAQiE,WAAYksC,EAAgB,OAUrDC,EAAqBH,EAAa/nC,KAAI,SAAU8E,GAAS,OAAOA,EAAM/I,cACtEosC,EAAwB92C,KAAKq1C,aAC5B/rC,QAAO,SAAUiC,GAAU,QAAQ,QAAQsrC,EAAoBtrC,MAC/DoD,KAAI,SAAUjE,GAAc,MAAO,CAAGjE,YAAQ0N,EAAWzJ,WAAYA,MAC1EgsC,EAAa31C,SAZS,SAAU0S,IAGkB,IAA1CtD,EAAMilC,SAASlnC,QAAQuF,EAAMhN,SAC7BgN,EAAMhN,OAAO+E,cAAciI,EAAM/I,eASzC,IAAIqsC,EAAYL,EAAat0C,OAAO00C,GACpC92C,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGisC,MAClD,mBAAoBA,IAiBxBj8B,EAAYjZ,UAAUgK,eAAiB,SAAUpF,GAC7C,iCAAkC,iBAAkBA,GACpD,IAAIuwC,EAAUh3C,KAAKo1C,SAMnB,OAJI4B,EAAQ1tC,QADY,SAAUiiB,GAAO,OAAOA,EAAIjgB,MAAQ7E,EAAO6E,KAAOigB,EAAIngB,QAAU3E,EAAO2E,SACzDgE,QAClC,iCAAkC,+BAAgC3I,GACtEuwC,EAAQv2C,KAAKgG,GACbzG,KAAK4sB,OACE,YAEU,IADHoqB,EAAQ9oC,QAAQzH,IAK1B,iCAAkC,mBAAoBA,IACtD,QAAWuwC,EAAX,CAAoBvwC,IAJhB,iCAAkC,uCAAwCA,KAYtFqU,EAAYjZ,UAAUo1C,UAAY,WAC9B,OAAOj3C,KAAKo1C,SAASzmC,KAAI,QAAK,SAOlCmM,EAAYjZ,UAAUq1C,OAAS,WAC3B,OAAOl3C,KAAKo1C,SAAS9rC,QAAO,QAAK,YAAYqF,KAAI,QAAK,UA2D1DmM,EAAYoI,QAAU,SAAUmzB,EAAc5vC,GAAU,OAAO,SAAUiE,GAErE,GAAIjE,EAAO2E,QAAUV,EAAW3C,SAASqD,MACrC,OAAO,EAEX,IAAI+8B,EAAKz9B,EAAW3C,SAChBovC,EAAahP,EAAGptB,YAAY+H,MAAM,KAClCs0B,EAAc3wC,EAAO6E,IAAIwX,MAAM,KAGnC,KAAK,QAAOq0B,EAAYC,EAAYt1C,MAAM,EAAIq1C,EAAW/nC,SACrD,OAAO,EAGX,IAAIioC,EAAY,EAAIF,EAAW/nC,aAAU+E,EACrCmjC,EAAoBF,EAAYt1C,MAAM,EAAGu1C,GAAWpkC,KAAK,KACzDskC,EAAgBlB,EAAaiB,GAAmB3uB,gBACpD,OAAOwf,EAAGltB,wBAA0Bs8B,GAAiBA,EAAc/xC,QAEhEsV,EA1QqB,wDCfhC,SAAUyL,EAAQ1mB,GAAU,aAyD5B,IAAI23C,EAAoB,gBAEpBC,EAAe53C,EAAQC,OAAO,SAAU,CAAC,OACrB43C,KAAK,CAAEC,eAAgB,UACvB53C,SAAS,SAkCjC,WACE,IAAIwL,EAAS,CACXqsC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,kBAAkB,GAgCpB,SAASC,EAAUzlC,EAAU0lC,EAAUC,EAAqBC,GAC1D,OAAO,SAAS31C,EAAOoe,EAAMpO,GAC3B,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAIkB,EAAgB5lC,EAAKkd,WAAWuoB,IAChChtC,EAAOmtC,IAAmBC,EAAYz3B,EAAMs3B,IAAyB1lC,EAAK4lC,IAC5E51C,EAAMyB,OAAOuO,EAAKD,IAAW,SAAS+lC,GAEpCA,EAAUH,GAAUG,IAAYA,EAChC13B,EAAKpO,KAAKylC,EAAUK,QAb5B54C,KAAKuL,OAAS,SAASstC,GACrBttC,EAAS1L,EAAQiB,OAAOyK,EAAQstC,IAkElC74C,KAAKU,KAAO,WACV,MAAO,CACL6K,OAAQ,SAAS1F,GACf,OAAO0F,EAAO1F,IAEhBizC,YAAaR,OA5IfE,EAAsB,CAAC,SAAU,IAAK,QAAS,WAAY,SAAU,UAAW,WAEhFG,EAAc,SAASz3B,EAAM63B,GAC/B,IAAiD,IAA7CA,EAAc7qC,QAAQgT,EAAK,GAAG83B,UAChC,OAAO,GA8IXvB,EAAa50C,UAAU,SAAU,CAAC,QAAS,SAASo2C,GAClD,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvDj2C,UAAU,SAAU,CAAC,QAAS,SAASo2C,GACtC,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvDj2C,UAAU,UAAW,CAAC,QAAS,SAASo2C,GACvC,OAAOA,EAAMH,YAAY,UAAW,eAAgBN,GAAqB,MAE1E31C,UAAU,YAAa,CAAC,QAAS,SAASo2C,GACzC,OAAOA,EAAMH,YAAY,YAAa,eAAgBN,GAAqB,MAE5E31C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,UAAW,CAAC,QAAS,SAASo2C,GAEvC,SAASC,EAAiBpmC,EAAMqmC,EAAgBj4B,EAAMk4B,GACpD,OAAOH,EAAM1tC,OAAO4tC,KACjBj4B,EAAKpO,KAAKA,KACVsmC,IAAsBT,EAAYz3B,EAAMs3B,MAClB,WAAtBt3B,EAAKpO,KAAK,SAA6C,UAArBoO,EAAK,GAAG83B,UAG/C,SAASK,EAAiBC,EAAMp4B,GAI9B,OAAQA,EAAKpO,KAAK,SAAYoO,EAAKpO,KAAK,UAAYwmC,IAAUX,EAAYz3B,EAAMs3B,GAYlF,MAAO,CACLrxC,SAAU,IACVxB,QAAS,UACTyB,SAAU,IACVC,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAI+B,EAhBR,SAAkBzmC,EAAMoO,GACtB,IAAIhS,EAAO4D,EAAK5D,KACZoqC,EAAOxmC,EAAKwmC,KAEhB,MAA2B,cAAlBpqC,GAAQoqC,IAAiC,qBAATA,EAA+B,WAC7C,WAAlBpqC,GAAQoqC,IAAiC,kBAATA,EAA4B,QACpD,UAATpqC,GAA0C,gBAAToqC,GAAmC,WAATA,EAAqB,QAAU,GAUpFE,CAAS1mC,GAErB,MAAO,CACL2mC,KAAM,SAAS32C,EAAOoe,EAAMpO,EAAM4mC,GAChC,IAAIC,EAAgBT,EAAiB,WAAY,WAAYh4B,GAAM,GAEnE,SAAS04B,IACP,OAAOF,EAAQG,YAcjB,OAAQN,GACN,IAAK,QACL,IAAK,WACCF,EAAiBE,EAAOr4B,IAC1BA,EAAKpO,KAAK,OAAQymC,GAEhBL,EAAiB,eAAgB,cAAeh4B,GAAM,IACxDpe,EAAMyB,OAAOq1C,EAAiC,UAAVL,EAlB1C,SAA0BO,GAGxB,IAAIlB,EAAW9lC,EAAKtO,OAASk1C,EAAQK,WACrC74B,EAAKpO,KAAK,eAAgB8lC,IAG5B,WACE13B,EAAKpO,KAAK,gBAAiB4mC,EAAQM,SAASN,EAAQK,eAa9CJ,GACFz4B,EAAKpO,KAAK,WAAY,GAExB,MACF,IAAK,QAIH,GAHIumC,EAAiBE,EAAOr4B,IAC1BA,EAAKpO,KAAK,OAAQ,UAEhBmmC,EAAM1tC,OAAO,aAAc,CAC7B,IAAI0uC,GAAqB/4B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDw3C,GAAqBh5B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDy3C,GAAqBj5B,EAAKpO,KAAK,iBAE/BmnC,GACFnnC,EAAKsnC,SAAS,OAAO,SAAgCN,GACnD54B,EAAKpO,KAAK,gBAAiBgnC,MAG3BI,GACFpnC,EAAKsnC,SAAS,OAAO,SAAgCN,GACnD54B,EAAKpO,KAAK,gBAAiBgnC,MAG3BK,GACFr3C,EAAMyB,OAAOq1C,GAAuB,SAAgCE,GAClE54B,EAAKpO,KAAK,gBAAiBgnC,MAI7BH,GACFz4B,EAAKpO,KAAK,WAAY,IAKvBA,EAAKpQ,eAAe,eAAiBg3C,EAAQW,YAAYC,UACzDpB,EAAiB,gBAAiB,eAAgBh4B,GAAM,IAE3DpO,EAAKsnC,SAAS,YAAY,WACxBl5B,EAAKpO,KAAK,kBAAmBA,EAAe,aAI5ComC,EAAiB,eAAgB,cAAeh4B,GAAM,IACxDpe,EAAMyB,QAAO,WACX,OAAOm1C,EAAQa,YACd,SAA+BT,GAChC54B,EAAKpO,KAAK,iBAAkBgnC,cAQzCj3C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,cAAc,WACvB,MAAO,CACLsE,SAAU,IACVxB,QAAS,cACT4C,KAAM,SAASzF,EAAOoe,EAAMpO,EAAM0nC,GAC5B1nC,EAAKpQ,eAAe80C,IAEnBt2B,EAAKpO,KAAK,cACboO,EAAKpO,KAAK,YAAa,kBAK9BjQ,UAAU,UAAU,CAAC,QAAS,SAAU,SAASo2C,EAAO93C,GACvD,MAAO,CACLgG,SAAU,IACVE,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAI72C,EAAKQ,EAAO2R,EAAK2nC,SACrB,OAAO,SAAS33C,EAAOoe,EAAMpO,GAEtB6lC,EAAYz3B,EAAMs3B,KAEjBS,EAAM1tC,OAAO,sBAAwB2V,EAAKpO,KAAK,SACjDoO,EAAKpO,KAAK,OAAQ,UAGhBmmC,EAAM1tC,OAAO,cAAgB2V,EAAKpO,KAAK,aACzCoO,EAAKpO,KAAK,WAAY,IAGpBmmC,EAAM1tC,OAAO,gBAAmBuH,EAAK4nC,WAAc5nC,EAAK6nC,YAAe7nC,EAAK8nC,SAC9E15B,EAAK5gB,GAAG,WAAW,SAASC,GAC1B,IAAIs6C,EAAUt6C,EAAMu6C,OAASv6C,EAAMs6C,QAEnB,KAAZA,GAA8B,KAAZA,KAEwC,IAAxDrC,EAAoBtqC,QAAQ3N,EAAM8F,OAAO2yC,WAAqBz4C,EAAM8F,OAAO00C,mBAG7Ex6C,EAAMgD,iBAERT,EAAMmB,QAGR,WACEtD,EAAGmC,EAAO,CAAEk4C,OAAQz6C,mBASnCsC,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAO,SAASn2C,EAAOoe,EAAMpO,GACvBA,EAAKpQ,eAAe80C,KAEpByB,EAAM1tC,OAAO,aAAgB2V,EAAKpO,KAAK,aAAgB6lC,EAAYz3B,EAAMs3B,IAC3Et3B,EAAKpO,KAAK,WAAY,OA9Z5B,CAoaGyT,OAAQA,OAAO1mB,iECzalBA,QAAQC,OAAO,WAAY,CAAC,OAC3B+C,UAAU,WAAY,CAAC,KAAM,SAAUkE,GACvC,aAgCA,MAAO,CACNjE,MAAM,CACL42C,QAAe,IACf73B,IAAe,QACfiF,IAAe,QACfgD,KAAe,SACfmxB,SAAe,aACfC,SAAe,aACfC,UAAe,cACfC,UAAe,cACfC,WAAe,eACfC,WAAe,eACfC,aAAe,iBACfC,MAAe,UACfC,MAAe,UACfC,YAAe,gBACfC,YAAe,iBAEhBvqC,YAAa,2BACPzL,QAAS,UACToP,SAAS,EACTxM,KAlDI,SAAUtH,EAAQyG,EAAUxG,GAElCA,EAAO+5C,WACVh6C,EAAOg6C,SAAW,WAAW,OAAO,IAGjC/5C,EAAOi6C,YACVl6C,EAAOk6C,UAAY,WAAW,OAAO,IAGlCj6C,EAAOw6C,cACVz6C,EAAOy6C,YAAc,WAAW,IAAIviB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOs6C,QACVv6C,EAAOu6C,MAAQ,cAGZt6C,EAAOy6C,cACV16C,EAAO06C,YAAc,WAAW,IAAIxiB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOu6C,QACVx6C,EAAOw6C,MAAQ,eA4BVz6C,WAAY,yBAInBA,WAAW,qBAAsB,CAAC,SAAU,WAAY,SAAWC,EAAQuC,GAC3E,aAEAvC,EAAO26C,UAAar1B,OAAO7jB,eAAe,iBAAmB6jB,OAAOs1B,UAAUC,iBAAmB,EACjG76C,EAAO86C,SAAWl8C,QAAQoiB,KAAKhhB,EAAOy4C,SAEtCz4C,EAAO4gB,IAAM5gB,EAAO4gB,KAAO,EAC3B5gB,EAAO6lB,IAAM7lB,EAAO6lB,KAAO,EAC3B7lB,EAAO6oB,KAAO7oB,EAAO6oB,MAAQ,GAE7B7oB,EAAOi6C,SAAWj6C,EAAO86C,WAAa96C,EAAOy4C,QAE7Cz4C,EAAOm6C,UAAYn6C,EAAOm6C,WAAa,GACvCn6C,EAAO+6C,cAAgB/6C,EAAOm6C,UAAYn6C,EAAO6oB,KACjD7oB,EAAOo6C,WAAap6C,EAAOo6C,YAAc,GACzCp6C,EAAOq6C,WAAar6C,EAAOq6C,YAAcr6C,EAAOm6C,UAChDn6C,EAAOs6C,aAAet6C,EAAOs6C,cAAgBt6C,EAAOo6C,WAEpD,IAAI1nB,EAAO1yB,EAAO6lB,IAAM7lB,EAAO4gB,IAC/Bo6B,EAAQtoB,EAAO1yB,EAAO6oB,KACtBoyB,EAAUj7C,EAAOsD,OAAO,WAAW,WAClCtD,EAAOi6C,SAAWj6C,EAAO86C,WAAa96C,EAAOy4C,WAG9CyC,EAAW,SAAUC,GACpB,OAAQA,EAAM,GAAKH,EAAQtoB,GAG5B1yB,EAAOo7C,cAAgB,WACtB,OAAO,IAAIz6C,MAAMq6C,IAGlBh7C,EAAOq7C,cAAgB,SAAUF,GAChC,IAAIG,EAAQ,EAAEt7C,EAAO6oB,KAErB,OADW7oB,EAAOm6C,UAAUmB,GAAQH,EAAMG,IAI3Ct7C,EAAOu7C,WAAa,SAAUJ,GAC7B,OAAOD,EAASC,IAAUn7C,EAAOy4C,QAAQz4C,EAAO4gB,KAGjD5gB,EAAOw7C,aAAe,WACjBx7C,EAAOk6C,cAAgBl6C,EAAOg6C,YACjCh6C,EAAO06C,YAAY,CAACe,OAAOz7C,EAAOy4C,UAAU3uC,MAAK,WAChD9J,EAAOy4C,QAAUz4C,EAAO4gB,IACxB5gB,EAAOw6C,MAAM,CAACiB,OAAOz7C,EAAOy4C,cAK/Bz4C,EAAO07C,SAAW,SAAUP,GAC3B,IAAKn7C,EAAOg6C,WAAY,CACvB,IAAI2B,EAAW/8C,QAAQoiB,KAAKhhB,EAAO4gB,IAAMs6B,EAASC,IAElDn7C,EAAOy6C,YAAY,CAACgB,OAAOE,IAAW7xC,MAAK,WAC1C9J,EAAOy4C,QAAUkD,EACjBp5C,GAAS,WACRvC,EAAOu6C,MAAM,CAACkB,OAAOz7C,EAAOy4C,kBAMhCz4C,EAAOsB,IAAI,YAAY,WACtB25C,UAID3jC,IAAI,CAAC,iBAAkB,SAAUjI,GACjC,aAEAA,EAAeusC,IAAI,2BAElB,0iDCtHF,SAASC,EACP7mC,EACAL,EACA6C,EACAskC,EACAh2C,EACAi2C,EACAC,EACAC,EACAC,EACA35C,GAEA,MAAM45C,EAAKp9C,KA4CX,SAASq9C,EAAOC,GAEdN,EAAqBO,cAAcL,EAAgB,CAAEI,GAAAA,IAClDvyC,MAAMvG,IAhBX,IAAqBg5C,EAiBfvnC,EAAWwnC,OAASj5C,EAjBLg5C,GAkBI,IAAPF,EAAc,OAAS,OAjBvC1nC,EAAQwE,OAAOsjC,YACb,CACEF,IAAAA,GAEF,KAcEh6C,GAAS,KACPyS,EAAWhS,eAGdoe,MAAM26B,EAAqBW,gBA6MhCP,EAAG/vC,QArGH,WACEmZ,QAAQo3B,MAAM,oCAAqC3nC,EAAW4nC,SAC9D5nC,EAAW6nC,OAAS,OAEpB,MAAMC,EAAY9nC,EAAW+nC,SAASC,MAChCC,EAAajoC,EAAW+nC,SAASG,UACjCC,EACJnoC,EAAW+nC,SAASK,iBAAmBpoC,EAAW+nC,SAASG,UACvDG,EAAeroC,EAAW+nC,SAASO,aACnCC,EAAmBvoC,EAAW+nC,SAASS,gBACvCC,EAAgB58B,KAAKgF,IACzBT,SAASs4B,gBAAgBC,aACzBr4B,OAAOs4B,aAAe,GAElBC,EAAez4B,SAASs4B,gBAAgBI,YAG9C14B,SAASs4B,gBAAgBK,MAAMC,YAAY,oBAAqBlB,GAChE13B,SAASs4B,gBAAgBK,MAAMC,YAAY,qBAAsBf,GACjE73B,SAASs4B,gBAAgBK,MAAMC,YAC7B,4BACAb,GAEF/3B,SAASs4B,gBAAgBK,MAAMC,YAC7B,uBACAX,GAEFj4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,2BACAT,GAEFn4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,wBACAP,GAEFr4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,uBACAH,GAGF,IAAII,GAAK,EAET,MAAMC,EAA8B36C,GAChB,OAAVA,GAAkBA,EAAMyR,EAAWJ,WAAc,GAGrDupC,EAAwBpC,EAAqBqC,QACjDlC,GACApyC,KAAKo0C,GACDG,EAAuBtC,EAAqBqC,QAChDnC,GACAnyC,KAAKo0C,GACPp4C,EAAG0U,IAAI,CAAC2jC,EAAuBE,IAC5Bv0C,MAAK,IAAiC,IAA/Bw0C,EAAcC,GAAiB,EACrCvpC,EAAW4nC,QAAU0B,EACrBtpC,EAAWwnC,OAAS+B,EAEhBvpC,EAAW4nC,QAAQ4B,aAAexpC,EAAWwnC,OAAOH,GACtD4B,GAAK,EAELjpC,EAAWwnC,OAAOH,IAAK,EAGa,iBAAlCrnC,EAAW+nC,SAAS0B,WACtBrC,EAAO6B,GAxMbzmC,EAAOi5B,GAjBT,WAAoB,QAClB,MAAMiO,EAAS1pC,EAAW+nC,SAAS2B,OAC7B9B,IAAU5nC,MAAAA,GAAA,UAAAA,EAAY4nC,eAAZ,mBAAqB4B,mBAArB,UAAkCp0C,IAE5Cu0C,EACJrQ,OAAOt5B,EAAW+nC,SAAS6B,kBAC3BtQ,OAAOt5B,EAAW+nC,SAAS8B,qBACzBvQ,OAAOt5B,EAAW+nC,SAAS6B,iBAE/B,SAAMhC,IAAa+B,GAAYD,GAQrBI,GAAa,aAAe,cAAe,KAAM,CACzDlqC,SAAU,YA6MR,IAAI2nC,EAAM,GAKRA,EAHAvnC,EAAW+nC,SAAS2B,SACnB1pC,EAAW+nC,SAASgC,gBAEf,OAEA,UAGRpqC,EAAQwE,OAAOsjC,YACb,CACEF,IAAAA,EACAO,UAAAA,EACAG,WAAAA,EACAQ,cAAAA,EACAI,aAAAA,GAEF,KAGF,MAAME,EAAQ34B,SAAS45B,cAAc,SACrC55B,SAASpB,KAAKi7B,YAAYlB,GAC1BA,EAAMmB,MAAMC,WACV,2BAA6BnqC,EAAW+nC,SAASC,MAAQ,kBAG5D57B,MAAM26B,EAAqBW,iBAKhCP,EAAGiD,MA3MH,WACE,MAAMZ,EAAcxpC,EAAW4nC,QAAQ4B,YAEvC,GAAIA,GAAeA,EAAYp0C,GAAI,CAEjC,MAAMi1C,EAAUvD,EACbuD,UACAlmC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,eAC9CC,qBAAoB,GACpBrN,MACCl9B,EAAW+nC,SAASyC,iBAClB,yCAEHC,GAAG,MACHv8C,OAAO,UAEV44C,EACG4D,KAAKL,GACLv1C,MAAK,WACJ,OAAOkyC,EAAI2D,gBAAgBC,aAAa,CACtCx1C,GAAIo0C,EAAYp0C,GAChBy1C,QAAQ,EACRC,YAAa,YAEZC,YAEJj2C,MAAK,WACJ0N,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAGbwM,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM,YAAa6nB,QA4KnCkwB,EAAGC,OAASA,EACZD,EAAG6D,SAxKH,WACE,MAAM3M,EAAWvtC,EAAGkF,QACdwzC,EAAcxpC,EAAW4nC,QAAQ4B,YA2DvC,OAzDIA,GAAeA,EAAYp0C,IAC7B4xC,EAAI2D,gBACDM,YAAY,CACXC,MAAO1B,EAAYp0C,GACnB+1C,YAAY,IAEbJ,SAASj2C,MAAK,SAAUpD,GACvB2sC,EAAS3nC,QACP00C,GAAAA,CAAK15C,EAAK25C,KAAKx/C,MAAM,IAAI,SAAUy/C,GACjC,IAAIC,EASJ,GAPsB,OAAlBD,EAAIE,YACND,EACEvrC,EAAW+nC,SAAS0D,eACpBzrC,EAAW4nC,QAAQ3uB,MACnB,UAAYqyB,EAAII,WAGE,QAAlBJ,EAAIE,UACN,OAAQxrC,EAAW+nC,SAAS4D,iBAC1B,IAAK,gBACHJ,EAASD,EAAIM,OACT5rC,EAAW+nC,SAAS8D,WAAaP,EAAIM,OACrC,SACJ,MAEF,IAAK,cACHL,EAASD,EAAIM,OACTN,EAAIQ,KAAKC,OAAST,EAAIQ,KAAKE,SAC3B,SACJ,MAEF,IAAK,iBACHT,EAASD,EAAIM,OAASN,EAAIQ,KAAKE,SAAW,SAC1C,MAEF,QACET,EAASD,EAAIM,OACT5rC,EAAW+nC,SAAS8D,WAAaP,EAAIM,OACrC,SAKV,MAAO,CACLL,OAAQA,EACR1d,QAASyd,EAAIW,KACbC,UAAWC,GAAAA,CAAOb,EAAIY,WAAWv6B,OAAO,+BAK/CvF,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,MAIbonB,EAAS7wC,SA4GlB25C,EAAGiF,eA5OH,WACE,MAA4C,YAArCpsC,EAAW+nC,SAASsE,aAA6B,OAAS,OA4OnE,MAAMC,EAAgB,CACpB5C,OAAQ,CAAC,SAAU,OAAQ,UAAW,UAAW,aACjD6C,QAAS,CAAC,YAKZjvC,OAAO+6B,eAAer4B,EAAY,cAAe,CAC/CvF,MACE,IAAIpK,EAAS2P,EAAW+nC,SAASyE,aAMjC,OALIF,EAAc5C,OAAOrmC,SAASrD,EAAW6nC,QAC3Cx3C,EAAS2P,EAAW+nC,SAAS0E,cACpBH,EAAcC,QAAQlpC,SAASrD,EAAW6nC,UACnDx3C,EAAS2P,EAAW+nC,SAAS2E,gBAExBr8C,KAIXigB,OAAOq8B,iBACL,WACA,SAAU1sC,GACa,SAAjBA,EAAIvO,KAAKuO,IACXmnC,GAAO,GACmB,SAAjBnnC,EAAIvO,KAAKuO,KAClBmnC,GAAO,MAGX,2eCtTJ,SAASwF,EAAS5sC,EAAYF,GAE5B,MAAM3H,EAAS2H,EAAUo5B,SAGzBl5B,EAAW+nC,SAAW,CACpB8E,OAAQ,UACRC,MAAM,GAGRC,GAAAA,CAAO50C,GAAQ,SAAU5J,EAAOqB,GAChB,KAAVrB,GAAiBy+C,GAAAA,CAAOz+C,KACZ,SAAVA,IACFA,GAAQ,GAGI,UAAVA,IACFA,GAAQ,GAGVyR,EAAW+nC,SAASn4C,GAAOrB,MAI/ByR,EAAWJ,SAAWI,EAAW+nC,SAASnoC,SAC1CI,EAAWwnC,OAAS,CAAEH,IAAI,GAC1BrnC,EAAW4nC,QAAU,GAWvB,SAASqF,EACPC,EACA9uC,EACA+uC,EACAC,EACAC,GAEAjvC,EAAkBgB,WAAU,GAGvB+tC,EAAcnjD,SAAS0R,QAAQjB,MAClC0yC,EAAcnjD,SAAS0R,QAAQjB,IAAM,IAIvC0yC,EAAcnjD,SAAS0R,QAAQjB,IAAI,qBACjC,gCAEF0yC,EAAcnjD,SAAS0R,QAAQjB,IAAI,iBAAmB,WACtD0yC,EAAcnjD,SAAS0R,QAAQjB,IAAI6yC,OAAS,WAG5CF,EAA4BG,UAAUF,GAGtCH,EACG11C,MAAM,MAAO,CACZkxB,UAAU,IAEXlxB,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAaqyC,EACbziD,WAAY,4BAEbyM,MAAM,aAAc,CACnBgE,IAAK,UACLL,YAAasyC,EACb1iD,WAAY,2BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAauyC,EACb3iD,WAAY,4BAEbyM,MAAM,WAAY,CACjBgE,IAAK,QACLL,YAAawyC,EACb5iD,WAAY,yBAEbyM,MAAM,gBAAiB,CACtBgE,IAAK,aACLL,YAAayyC,EACb7iD,WAAY,8BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAa0yC,EACb9iD,WAAY,0OC3FlB,SAAS+iD,EACP9tC,EACAwC,EACAurC,EACA/G,EACAl2C,EACAi2C,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KAIX,SAASmmC,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG6G,OAAOz+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMu8C,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACXC,SAAS,OAEZP,EAASrD,KAAKuD,IAIlB,SAASM,IACPvuC,EAAWwuC,SAAU,EAkBvB,SAASC,IACHzuC,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAAS4lC,IACP2B,EAAGuH,KAAO,GACVvH,EAAGwH,QAAU,KACbxH,EAAGyH,UAAY,KACfzH,EAAG0H,SAASC,eACZ3H,EAAG0H,SAASE,uBAEL/uC,EAAW4nC,QAAQ4B,YAE1BxpC,EAAWgvC,gBAAiB,EAiD9B7H,EAAG/vC,QAjFH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGpB/2C,EAAG0U,IAAI,CACLuhC,EAAqBkI,WAAW/H,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBkI,WAAWhI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,IAAOkL,EAAWwuC,SAAU,KAsEtCrH,EAAG+H,OA1CH,WACElvC,EAAWwuC,SAAU,EAEjBxuC,EAAW4nC,QAAQ4B,aAAexpC,EAAW4nC,QAAQ4B,YAAYp0C,GACnE4xC,EAAI2D,gBACDP,MACC+E,GAAAA,CACE,CACE/5C,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,GACnCg6C,WAAYpvC,EAAW+nC,SAASqH,WAChCC,SACErvC,EAAW+nC,SAAS0D,eAAiBzrC,EAAW4nC,QAAQ3uB,MAE5DkuB,EAAGuH,OAGN3D,SAASj2C,MAAK,kBACNqyC,EAAG6G,OAAOkB,OAEjB,MAAMjB,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASuH,0BAClB,2BAEHjB,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,MAEfn5C,KAAK0wC,GACL1wC,KAAK25C,GACLriC,MAAM8jB,EAAY,WAClBqf,QAAQhB,IAEXA,IACAre,EAAY,YAOhBiX,EAAGqI,KAhDH,WACEhK,IACAiJ,KAgDFtH,EAAGuH,KAAO,GACVvH,EAAG6G,OAAS,GCjId,SAASyB,EAAWzvC,EAAY0vC,GAC9B,MAAMC,EAAgB,CACpBv6C,GAAI,MACJkW,MAAOtL,EAAW+nC,SAASz8B,OAGvB07B,EAAM,GAyEZ,OAvEAA,EAAI4I,QAAU5vC,EAAW+nC,SAAS8H,OAAS,QAE3C7I,EAAI8I,YAAcJ,EAChB1I,EAAI4I,QAAU,oBACdD,EACA,CACE3c,OAAQ,CACN+c,OAAQ,OACRv0C,IAAKwrC,EAAI4I,QAAU,4BAErBrD,QAAS,CACPwD,OAAQ,OACRv0C,IAAKwrC,EAAI4I,QAAU,6BAErBI,UAAW,CACTD,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,8BAKzB5I,EAAI2D,gBAAkB+E,EACpB1I,EAAI4I,QAAU,wBACdD,EACA,CACExpC,OAAQ,CACN4pC,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,yBAErBhF,aAAc,CACZmF,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,uCAErBxF,MAAO,CACL2F,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,+BAErB3E,YAAa,CACX8E,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,wCAErBK,iBAAkB,CAChBF,OAAQ,OACRv0C,IAAKwrC,EAAI4I,QAAU,0CACnBl0C,QAAS,CACP,oBAAgBwC,GAElBgyC,iBAAkBtmD,QAAQ6c,UAE5B0pC,mBAAoB,CAClBJ,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,6CAErBQ,QAAS,CACPL,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,mCAKzB5I,EAAIqJ,YAAcX,EAChB1I,EAAI4I,QAAU,oBACdD,EACA,CACExpC,OAAQ,CACN4pC,OAAQ,MACRv0C,IAAKwrC,EAAI4I,QAAU,uBAKlB5I,mTChET,SAASsJ,EACPtlD,EACAgV,EACAzS,EACAgjD,EACAC,EACAhuC,EACApI,EACA2zC,EACA/G,EACAD,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KACX,IAAI0mD,EACAC,EACAC,EACAC,EA4BJ,SAASC,IAEP//C,EAAAA,GAAAA,IAAO,CACLi2C,EAAqBkI,WAAW/H,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBkI,WAAWhI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,KAhBJkL,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,eAoB/C,SAASkxC,IACPvjD,GAAS,WACP,MAAMT,EAAU0jD,EAAU,GAAGO,uBAAuB,iBAAiB,GAEjEjkD,IACFA,EAAQkkD,UAAYlkD,EAAQmkD,iBAKlC,SAASC,IACP/J,EAAG6G,OAAS,GACZhuC,EAAWzJ,MAAM,QAEjB,MAAM03C,EAAQF,EACXG,SACAC,YACC,8CAEDE,WAAW,yBAA2BruC,EAAW+nC,SAASsE,cAC1DloC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,GAIhB,SAAS/d,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG6G,OAAOz+C,GAAQ0nB,EAAIvlB,KAEtBo/C,KAIJ,SAASK,EAAYtjB,GACnBmZ,EAAI8I,YACD9c,OAAOnF,GACPkd,SAASj2C,MAAK,SAAUpD,GACvBy1C,EAAG6G,OAAS,GACZ,IAAIoD,GAAkB,EAClBpE,GAAAA,CAAOhtC,EAAW4nC,QAAQ4B,eAC5BxpC,EAAW4nC,QAAQ4B,YAAc,CAC/Bp0C,GAAI1D,EAAK83C,YAAYp0C,IAEvBg8C,GAAkB,GAEfpxC,EAAW4nC,QAAQyJ,qBACtBrxC,EAAW4nC,QAAQyJ,oBAAqB,EACxCD,GAAkB,GAGhBA,GACFrK,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAEhC+I,EAAU,GAAGa,aAAaC,QAAQ,IAElCT,OAED1kC,MAAM8jB,EAAY,qBA0EvB,SAASshB,IAELxxC,EAAW4nC,SACX5nC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYp0C,IAE/B4xC,EAAI2D,gBACDlwC,IAAI,CACHrF,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,KAEpC21C,SAASj2C,MAAK,SAAUpD,UAChBy1C,EAAG6G,OAAOwD,eAGb9/C,EAAKm5C,SACP7qC,EAAW4nC,QAAQ4B,YAAYqB,QAAS,EACxC9D,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAEL,cAArBh2C,EAAK+/C,YACPjvC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAE7C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,gBAIhDwM,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACHixC,IACA,MACF,KAAK,IACHruC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAQ1B,SAASy6B,EAAM3M,GACb,MAAMkH,EAAOwE,EAAU,GAAGa,aAAaK,UAEnC5M,GAA6B,KAAnBA,EAAOH,SAAkBG,EAAO6M,UAK1C7M,GAA6B,KAAnBA,EAAOH,SAKR,KAATqH,GAKJkF,EACEhC,GAAAA,CACE,CACElD,KAAMA,GAERjsC,EAAW4nC,UAqCjB,SAASqD,IAAc,QACjBjrC,MAAAA,GAAJ,UAAIA,EAAY4nC,eAAhB,iBAAI,EAAqB4B,mBAAzB,OAAI,EAAkCp0C,IACpC4xC,EAAI2D,gBACDM,YAAY,CACXC,MAAOlrC,EAAW4nC,QAAQ4B,YAAYp0C,GACtCy8C,cAAc,EACdz8C,GAAIw7C,QAAiB1yC,IAEtB6sC,SAASj2C,MAAK,SAAUpD,GAIvB,UAHOy1C,EAAG6G,OAAOxE,YAGb93C,EAAKuC,MAAO,CACd,IAAI69C,GAAQ,EACR1qC,EAAI,EACR,IAAKA,EAAI,EAAG0qC,GAAQ,EAAO1qC,EAAI1V,EAAK25C,KAAKlyC,OAAQiO,IAAK,CACpD,MAAMrI,EAAIgzC,GAAAA,CAAM/xC,EAAWgyC,SAAU,CACnC58C,GAAI1D,EAAK25C,KAAKjkC,GAAGhS,KAEd2J,EAGMrN,EAAK25C,KAAKjkC,GAAGywB,OACtB94B,EAAE84B,MAAO,IAHTia,GAAQ,EACR9xC,EAAWgyC,SAASxnD,KAAKkH,EAAK25C,KAAKjkC,KAMN,QAA3B1V,EAAK25C,KAAKjkC,GAAGokC,WAAwB95C,EAAK25C,KAAKjkC,GAAGywB,OAtC3CziC,EAuCK1D,EAAK25C,KAAKjkC,GAAGhS,GAtChC4xC,EAAIqJ,YACRlqC,OAAO,CACN/Q,GAAIA,EACJyiC,MAAM,IAEPkT,SAAS3+B,OAAM,SAAU6K,GACxB1G,QAAQnhB,MAAM6nB,OAoCN66B,GAEFhB,IAGEp/C,EAAK25C,KAAKjkC,EAAI,GAAGywB,OACnB+Y,EAAgBl/C,EAAK25C,KAAKjkC,EAAI,GAAGhS,IAG/Bw7C,IAAkB5wC,EAAW4nC,QAAQyJ,oBACvCtK,EAAqBO,cAAcJ,EAAiB,IAC/ClnC,EAAW4nC,QACdyJ,oBAAoB,IACnBv8C,MAAMvG,IACPyR,EAAW4nC,QAAUr5C,KAzDnC,IAAuB6G,KA8DhBgX,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OA7V1BkwB,EAAG6G,OAAS,GACZhuC,EAAWgyC,SAAW,GACtB7K,EAAG8K,aAAe,CAChBC,gBAAgB,EAChBC,YAAY,EACZC,OAAO,EACP9/C,MAAM,EACN+/C,WAAY,UAGdlL,EAAGmL,cAAgB,CACjBC,uBAAuB,GA6XzBpL,EAAG/vC,QArCH,WACEmZ,QAAQo3B,MAAM,mCAAoC3nC,EAAW4nC,SAC7D5nC,EAAW6nC,OAAS,OACpB7nC,EAAWwuC,SAAU,EACrBxuC,EAAW+nC,SAASyK,UAAW,EAE/BrL,EAAGsL,aAAe,GAGhBzyC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYqB,OAG/BgG,KAGAW,IAGAd,EAAsBH,EAAUtF,EAAa,KAC7C0F,EAAyBJ,EAAUiB,EAAgB,MAGrDf,EAAYiC,EAAE,iBAAiBpB,aAAa,CAC1CqB,YAAa3yC,EAAW+nC,SAAS6K,oBAAsB,iBACvDxoD,OAAQ,CACNyoD,MAAO,SAAUC,EAAQ/N,GACvB2M,EAAM3M,IAERgO,MAAO,WACLhpD,KAAKipD,gBAQb7L,EAAGuK,MAAQA,EACXvK,EAAG8L,aAzIH,WACE,MAAMhH,EAAOwE,EAAU,GAAGa,aAAaK,UAG1B,KAAT1F,IAKJkF,EACEhC,GAAAA,CACE,CACElD,KAAMA,GAERjsC,EAAW4nC,UAIf6I,EAAU,GAAGa,aAAa0B,aAwH5B7L,EAAGx4C,UAjSH,SAAmB+C,GACjB,GAAIA,EAAKie,KA9GSujC,SAgHhB,YADAhC,IAIF,MAAMiC,EAAK,IAAIC,SAEfD,EAAG/uB,OAAO,OAAQ1yB,EAAK7B,MAEvBuK,EACGopC,KACCxjC,EAAW+nC,SAAS8H,OAClB,0BACA7vC,EAAW4nC,QAAQ4B,YAAYp0C,GAC/B,4BACA4K,EAAW+nC,SAASz8B,MACtB6nC,EACA,CACEjD,iBAAkBtmD,QAAQ6c,SAC1B/K,QAAS,CACP,oBAAgBwC,KAIrBpJ,MAAK,SAAUpD,IACdA,EAAOA,EAAKA,MAEH0D,IACP+xC,EAAG6G,OAAS,GAEZmD,EACEhC,GAAAA,CACE,CACElD,KACE,YACAjsC,EAAW+nC,SAAS8H,OACpB,0BACA7vC,EAAW4nC,QAAQ4B,YAAYp0C,GAC/B,iCACA1D,EAAK0D,GACL,UACA4K,EAAW+nC,SAASz8B,MACpB,qBACA5Z,EAAKnC,KACL,OACF8jD,aAAc3hD,EAAK0D,IAErB4K,EAAW4nC,WAIf1X,EAAY,oBAEbA,EAAY,oBA4OnBiX,EAAG+J,gBAAkBA,EAGrBlmD,EAAOsB,IAAI,YA5OX,WACEikD,EAAUriD,OAAOwiD,GACjBH,EAAUriD,OAAOyiD,GAEjBD,EAAsB,KACtBC,EAAyB,QAwO3B3wC,EAAW1T,IAAI,aArOf,SAAoBoF,EAAMnH,GACpBA,GACFA,EAAS+oD,GAAAA,CAAQtzC,EAAWgyC,sWCvMlC,SAASuB,EACPvoD,EACAgV,EACAwzC,EACAxM,EACA+G,EACAt8C,EACA2I,GAEA,MAAM+sC,EAAKp9C,KACX,IAAI0pD,EAAU,KACVC,EAAgB,KACpB1zC,EAAW2zC,UAAY,GAEvB,MAAMC,EAAkB,CACtBC,sBAAsB,EACtBC,mBAAmB,EACnB3+B,QAAS,SAAU5mB,GACjB,MAAqB,kBAAVA,GACDA,EAAQ,IAAM,IAEjBA,IA6GX,SAASwlD,WACA5M,EAAG6G,OAAOkB,OACjBlvC,EAAWzJ,MAAM,QAGjB4wC,EAAG6M,OAASC,GAAAA,CAAWP,GAEvBvM,EAAGuH,KAAO,GACVvH,EAAG0H,SAASC,eACZ3H,EAAG0H,SAASE,gBAEZ,MAAMd,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASuH,0BAClB,2BAEHjB,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,GA7HhB9G,EAAG+M,YAAc,SAAU5kD,GACzB,OAAOkkD,EAAKU,YAAY5kD,IA+Q1B63C,EAAGgN,iBArDH,SAA0BhO,GAExB,MAAMiO,EAAWjN,EAAG6M,OAAO7N,GACrBkO,EAAa5iD,EAASoZ,KAAK,gBACjC,GAAIwpC,EAAWl7C,OAAQ,CACrB,MAAMm7C,EAAS1qD,QAAQkD,QACrBunD,EAAW,GAAG/J,cAAc,mBAExB3tC,EAAQ/S,QAAQkD,QACpBunD,EAAW,GAAG/J,cAAc,qBAExBiK,EAAQD,EAAOzpC,KAAK,SAEtB0pC,EAAMp7C,QACRo7C,EAAMC,IAAI,UAAW,QAGvBF,EAAOjqD,GAAG,SAAS,KACjBkqD,EAAMC,IAAI,UAAW,QACI,mBAAlB73C,EAAM83C,QACT93C,EAAM83C,QAAQ,SACd93C,EAAM,GAAG+3C,WAGf/3C,EAAMtS,GAAG,UAAWgiB,IAClBrhB,EAAOgD,QAAO,WACwB,iBAAzBomD,EAASO,MAAMvlD,QACxBglD,EAASO,MAAMvlD,MAAQ,MAKzB,MAAMmB,EAAQ5E,MAAMstB,KAAK5M,EAAEjc,OAAOG,OAE5BqkD,EAjSL,QAiSiBR,EAAS9+C,OAAOqa,KACdpf,EAAMskD,MAAMhlD,GAASA,EAAK8f,MAAQilC,KAKpDR,EAASlqD,QAAU,GACnBkqD,EAASO,MAAMvlD,MAAQglD,EAAS9+C,OAAOw/C,gBAEvCV,EAASlqD,QAAUqG,EAAMmI,KAAK7I,IAC5B,MAAM,KAAEN,EAAF,KAAQogB,EAAR,KAAc1W,GAASpJ,EAC7B,MAAO,CAAEN,KAAAA,EAAMogB,KAAAA,EAAM1W,KAAAA,EAAMpJ,KAAAA,MAG/Bs3C,EAAGuH,KAAK0F,EAASO,MAAMzX,OAASkX,EAASlqD,gBAkBjDi9C,EAAG4N,eANH,SAAwBX,EAAUjO,GAGhCiO,EAASlqD,QAAQqf,OAAO48B,EAAO,GAC/BgB,EAAGuH,KAAK0F,EAASO,MAAMzX,OAASkX,EAASlqD,SAuB3Ci9C,EAAG6N,eAfH,SAAwBZ,GACtB7jC,QAAQN,IAAI,kBAAmBmkC,GAC/B,MAAMC,EAAa5iD,EAASoZ,KAAK,gBAC3BlO,EAAQ/S,QAAQkD,QACpBunD,EAAW,GAAG/J,cAAc,sBAExB,eAAE2K,EAAF,OAAkBrqC,GAAWwpC,EAAS9+C,OACxC2/C,GACFt4C,EAAME,KAAK,WAAY,YAErB+N,GACFjO,EAAM,GAAGu4C,aAAa,SAAUtqC,IAapCu8B,EAAGgO,uBAPH,WACE,MAAMC,EAAWzpD,MAAMstB,KAAKxnB,EAASoZ,KAAK,oBACpCwqC,EAAUD,EAASA,EAASj8C,OAAS,GACvCk8C,GAAWA,EAAQpuC,gBACrBouC,EAAQpuC,kBAMZkgC,EAAG/vC,QAjTH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGpBV,EAAGS,QAAU,CACXxyC,GAAI4K,EAAW+nC,SAAS3yC,GACxBkgD,cAAe,YACfr8B,KAhBK,YAAcs8B,GAAAA,CAAQ,EAAG,MAmBhCv1C,EAAW+nC,SAASyK,UAAW,EAC/BxyC,EAAWwuC,SAAU,EAErBxH,EAAI8I,YACDE,UAAU,CACT56C,GAAI4K,EAAW+nC,SAAS3yC,GACxBs0C,QAAQ,IAETqB,SAASj2C,MAAK,SAAUpD,GACnBA,EAAKuC,QACPw/C,EAAU/hD,EAAK+hD,QACfC,EAAgBO,GAAAA,CAAWviD,EAAK25C,MAChClE,EAAG6M,OAASC,GAAAA,CAAWP,OAG1B5+C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI+/B,EAAG6M,OAAO76C,OAAQiO,IAAK,CACzC,MAAMouC,EAAQrO,EAAG6M,OAAO5sC,GAExB,GADApH,EAAW2zC,WAAa6B,EAAMv8C,UACH,IAAhBu8C,EAAMb,OACXa,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAASxiD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C85C,EAAGwO,UAAUvuC,GAAKsuC,EAAOF,EAAMb,MAAMc,eAK5CrpC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,OA2QpBkwB,EAAG+H,OA5LH,WAEElvC,EAAWwuC,SAAU,EAErB,MAAM98C,EAAO,IAAKy1C,EAAGuH,MAErB,IAAK,IAAItnC,EAAI,EAAGA,EAAI+/B,EAAG6M,OAAO76C,OAAQiO,IAAK,CACzC,MAAMouC,EAAQrO,EAAG6M,OAAO5sC,GACpBouC,EAAMb,YAA4C,IAA5BjjD,EAAK8jD,EAAMb,MAAMzX,SAEpC8P,GAAAA,CAAOwI,EAAMI,WAChBzO,EAAGS,QAAQ4N,EAAMI,SAAWjqD,MAAMoQ,QAAQrK,EAAK8jD,EAAMb,MAAMzX,QACvDxrC,EAAK8jD,EAAMb,MAAMzX,OAAOlgC,OACxBtL,EAAK8jD,EAAMb,MAAMzX,QAGnB91B,IAAMqsC,IACHzG,GAAAA,CAAOhtC,EAAW+nC,SAASuN,iBAC9BnO,EAAGS,QAAQ0N,cAAgBt1C,EAAW+nC,SAASuN,cAC/CnO,EAAGS,QAAQ3uB,KAAOttB,MAAMoQ,QAAQrK,EAAK8jD,EAAMb,MAAMzX,QAC7CxrC,EAAK8jD,EAAMb,MAAMzX,OAAOlgC,OACxBtL,EAAK8jD,EAAMb,MAAMzX,SAIN,WAAfsY,EAAMv8C,OACRvH,EAAK8jD,EAAMb,MAAMzX,OAASxrC,EAAK8jD,EAAMb,MAAMzX,OAAOxkC,KAC/C+U,GAASA,EAAK5d,SAMvB,MAAMgmD,EAAelqD,MAAMoQ,QAAQorC,EAAG6M,QAClC7M,EAAG6M,OAAO3gD,QAAQmiD,GAAyB,WAAfA,EAAMv8C,OAClC,GAEE68C,EAAU3G,GAAAA,CACd,CACElD,KAAMv6C,GAERy1C,EAAGS,SAGCmO,EAA4B,MAARrkD,GAAgBmkD,EAAa18C,OAAS,EAC1D68C,EAAyB,OAATtkD,GAA0C,OAAzBqW,KAAKE,UAAUvW,GAnFxD,IAAgBukD,EApCK1mD,GAwHGwmD,GApFRE,EAqFHH,EApFJ17C,EAAM,CACXoB,IAAM,GAAEwrC,EAAI4I,wBAAwBqG,EAAQ7gD,aAC5CsG,QAAS,CAAE,oBAAgBwC,GAC3BxM,KAAMwkD,GAAAA,CAAeD,EAAS,IACzBrC,EACHuC,gBAAiB,IAAI/C,WAEvBrD,OAAQ,UA8ENiG,EACAhP,EAAI8I,YAAYvD,QAAQuJ,GAAS/K,SACjC5M,QAAQC,OAAO,iBAGhBtpC,KAAKi/C,GACL3nC,OAhIgB7c,EAgIE,SAjHZ,SAAU0nB,GACf,MAAMg3B,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,GAEd9G,EAAG6G,OAAOz+C,GAAQ0nB,EAAIvlB,QAsGvB69C,SAAQ,KACFpI,EAAGuH,KAAKtgB,UACX+Y,EAAGuH,KAAO,IAlLhB1uC,EAAWwuC,SAAU,MAsTvBrH,EAAGC,OA9HH,SAAgB73C,EAAM2a,GACfi9B,EAAGuH,KAAKn/C,KACX43C,EAAGuH,KAAKn/C,GAAQ,IAGlB,MAAMyJ,EAAMmuC,EAAGuH,KAAKn/C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTmuC,EAAGuH,KAAKn/C,GAAMga,OAAOvQ,EAAK,GAE1BmuC,EAAGuH,KAAKn/C,GAAM/E,KAAK0f,IAsHvBi9B,EAAGhd,OAlHH,SAAgB56B,EAAM2a,GAKpB,OAJKi9B,EAAGuH,KAAKn/C,KACX43C,EAAGuH,KAAKn/C,GAAQ,IAGX43C,EAAGuH,KAAKn/C,GAAM0I,QAAQiS,IAAS,GA8GxCi9B,EAAGwO,UAAY,GAEfxO,EAAGuH,KAAO,GACVvH,EAAG6G,OAAS,GACZ7G,EAAG0H,SAAW,GCnWhB,SAASuH,EACPp2C,EACAwC,EACAgxC,EACAxM,EACAD,EACAG,GAEA,MAAMC,EAAKp9C,KACX,IAAI0pD,EAAU,KAmJd,SAAS4C,IASP,OARAr2C,EAAW4nC,QAAU,CACnBxyC,GAAI4K,EAAW+nC,SAAS3yC,GACxBkhD,OAAQ,YACRr9B,KAhCK,YAAcs8B,GAAAA,CAAQ,EAAG,MAmChCv1C,EAAW+nC,SAASyK,UAAW,EAExBzL,EAAqBO,cAC1BJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACdy4C,EAAI8I,YACRE,UAAU,CACT56C,GAAI4K,EAAW+nC,SAAS3yC,GACxBs0C,QAAQ,IAETqB,SAASj2C,MAAK,SAAUpD,GACnBA,EAAKuC,QACPw/C,EAAU/hD,EAAK+hD,QACftM,EAAG6M,OAAStiD,EAAK25C,SAGpBv2C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI+/B,EAAG6M,OAAO76C,OAAQiO,IAAK,CACzC,MAAMouC,EAAQrO,EAAG6M,OAAO5sC,GACxB,GAAIouC,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAASxiD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C85C,EAAGwO,UAAUvuC,GAAKsuC,EAAOF,EAAMb,MAAMc,eAI1CrpC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,SAGnB7K,MAAM26B,EAAqBW,gBAzLhCP,EAAGwO,UAAY,GAGfxO,EAAGuH,KAAO,GACVvH,EAAG6G,OAAS,GACZ7G,EAAG0H,SAAW,GACd1H,EAAGoP,aAAc,EAEjBpP,EAAG+M,YAAc,SAAU5kD,GACzB,OAAOkkD,EAAKU,YAAY5kD,IAmO1B63C,EAAG/vC,QAhDH,WAKE,GAJAmZ,QAAQo3B,MAAM,qCAAsC3nC,EAAW4nC,SAE/D5nC,EAAW6nC,OAAS,SAEhB7nC,EAAW4nC,SAAW5nC,EAAW4nC,QAAQ4B,YAC3C,GAAIxpC,EAAW4nC,QAAQ4B,YAAYp0C,GACjC,IAA8C,IAA1C4K,EAAW4nC,QAAQyJ,mBAErB7uC,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,gBAEP,SACL,MAAM42C,EAAoBx2C,EAAW4nC,QAAQ4B,YAAYp0C,GACnDqhD,EAAYz2C,MAAAA,GAAH,UAAGA,EAAY4nC,eAAf,iBAAG,EAAqB/Z,eAAxB,aAAG,EAA8Bz4B,GAChD,GAAIqhD,EAAW,CACb,MAAM/kD,EAAO,CACX0D,GAAIohD,EACJE,QAAS,OACTlN,YAAa,CACXp0C,GAAIohD,GAEN3oB,QAAS,CACPz4B,GAAIqhD,GAENhF,YAAa,YACb5G,QAAQ,EACRC,YAAa,WAIf9D,EAAI2D,gBAAgByF,QAAQ1+C,GAAMq5C,SAASwE,SAAQ,IAC1C8G,YAMb7zC,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,iBAIdy2C,KAMJlP,EAAG+H,OA5KH,WACE,IAAIjD,EAAO,sBAEX,IAAK,IAAI7kC,EAAI,EAAGA,EAAI+/B,EAAG6M,OAAO76C,OAAQiO,IAAK,CACzC,MAAMouC,EAAQrO,EAAG6M,OAAO5sC,GAEpBouC,EAAMb,YAA+C,IAA/BxN,EAAGuH,KAAK8G,EAAMb,MAAMzX,SAEvC8P,GAAAA,CAAOwI,EAAMmB,YAChB32C,EAAW4nC,QAAQ4N,EAAMmB,UAAYhrD,MAAMoQ,QACzCorC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QAElBiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,OAAOlgC,OAC3BmqC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QAGrB8P,GAAAA,CAAOwI,EAAMI,WAChB51C,EAAW4nC,QAAQ4N,EAAMI,SAAWjqD,MAAMoQ,QACxCorC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QAElBiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,OAAOlgC,OAC3BmqC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QAGtB91B,IAAMqsC,IACHzG,GAAAA,CAAOhtC,EAAW+nC,SAASuO,UAC9Bt2C,EAAW4nC,QAAQ0O,OAASt2C,EAAW+nC,SAASuO,OAChDt2C,EAAW4nC,QAAQ3uB,KAAOttB,MAAMoQ,QAAQorC,EAAGuH,KAAK8G,EAAMb,MAAMzX,QACxDiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,OAAOlgC,OAC3BmqC,EAAGuH,KAAK8G,EAAMb,MAAMzX,SAIxBiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,SACtB+O,GAAQuJ,EAAMb,MAAMzX,MAAQ,KAAOiK,EAAGuH,KAAK8G,EAAMb,MAAMzX,OAAS,OAvExE,IAAqBrP,EAAAA,EA8EjBshB,GAAAA,CACE,CACElD,KAAMA,EACN2K,QAAS52C,EAAW+nC,SAAS6O,QAC7BC,WAAY72C,EAAW+nC,SAAS8O,YAElC72C,EAAW4nC,SAnFfT,EAAGoP,aAAc,EAEjBvP,EAAI8I,YACD9c,OAAOnF,GACPkd,SAASj2C,MAAK,SAAUpD,UAChBy1C,EAAG6G,OAAO8I,iBAEjB92C,EAAW4nC,QAAQ/Z,QAAU,CAC3Bz4B,GAAI1D,EAAKm8B,QAAQz4B,IAGnB4K,EAAW4nC,QAAQ4B,YAAc,CAC/Bp0C,GAAI1D,EAAK83C,YAAYp0C,IAIvB2xC,EAAqBO,cAAcJ,EAAiBlnC,EAAW4nC,SAC5D9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAG9BP,EAAGoP,aAAc,EArChBv2C,EAAW+nC,SAASgP,sBAOvBv0C,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,YANZ4C,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAuCXwM,OAAM,SAAU6K,GAEfkwB,EAAGoP,aAAc,EAEjBhmC,QAAQnhB,MAAM6nB,OAiLpBkwB,EAAGC,OArHH,SAAgB73C,EAAM2a,GACfi9B,EAAGuH,KAAKn/C,KACX43C,EAAGuH,KAAKn/C,GAAQ,IAGlB,MAAMyJ,EAAMmuC,EAAGuH,KAAKn/C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTmuC,EAAGuH,KAAKn/C,GAAMga,OAAOvQ,EAAK,GAE1BmuC,EAAGuH,KAAKn/C,GAAM/E,KAAK0f,IA6GvBi9B,EAAGhd,OAzGH,SAAgB56B,EAAM2a,GAKpB,OAJKi9B,EAAGuH,KAAKn/C,KACX43C,EAAGuH,KAAKn/C,GAAQ,IAGX43C,EAAGuH,KAAKn/C,GAAM0I,QAAQiS,IAAS,GCxJ1C,SAAS8sC,EACPh3C,EACAwC,EACAurC,EACA/G,EACAl2C,EACAi2C,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KAQX,SAAS0kD,IACHzuC,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAAS4lC,IACP2B,EAAGuH,KAAO,GACVvH,EAAGwH,QAAU,KACbxH,EAAGyH,UAAY,KACfzH,EAAG0H,SAASC,eACZ3H,EAAG0H,SAASE,gBAEZ/uC,EAAW4nC,QAAU,GAErB5nC,EAAWgvC,gBAAiB,EAC5BhvC,EAAWzJ,MAAM,QAQnB,SAAS25B,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG6G,OAAOz+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMu8C,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,IAIlB,SAASM,IACPvuC,EAAWwuC,SAAU,EAjDvBrH,EAAGuH,KAAO,GACVvH,EAAG6G,OAAS,GAoGZ7G,EAAG/vC,QAhBH,WACEmZ,QAAQo3B,MAAM,wCAAyC3nC,EAAW4nC,SAClE5nC,EAAW6nC,OAAS,YAGpB/2C,EAAG0U,IAAI,CACLuhC,EAAqBkI,WAAW/H,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBkI,WAAWhI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,IAAOkL,EAAWwuC,SAAU,KAKtCrH,EAAG+H,OAlDH,WACElvC,EAAWwuC,SAAU,EAEjBxuC,EAAW4nC,QAAQ4B,aAAexpC,EAAW4nC,QAAQ4B,YAAYp0C,GACnE4xC,EAAI2D,gBACDC,aAAa,CACZx1C,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,GACnC6hD,KAAM9P,EAAGuH,KAAKuI,OAEflM,SAASj2C,MAAK,kBACNqyC,EAAG6G,OAAOkB,OAEjB,MAAMjB,EAAQF,EACXG,SACAC,YACCnuC,EAAW+nC,SAASuH,0BAClB,2BAEHjB,WAAW,oBACXlqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjDyD,EAASrD,KAAKuD,MAEfn5C,KAAK0wC,GACL1wC,KAAK25C,GACLriC,MAAM8jB,EAAY,WAClBqf,QAAQhB,IAEXA,IACAre,EAAY,YAsBhBiX,EAAGqI,KA7EH,WACEhK,IACAiJ,KCxCJ,SAASyI,EACPl3C,EACAhV,EACAulD,EACA/tC,EACAwkC,EACAD,EACAG,GAGA,IAAIiQ,EAA+B,KAGnC,SAAS3F,IACP,IAAIhI,EAAc,GACd4N,GAAO,EAEXpQ,EAAI2D,gBACDlwC,IAAI,CACHrF,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,KAEpC21C,SAASj2C,MAAK,SAAUpD,GAGvB,OAFA83C,EAAc93C,EAEPs1C,EAAI2D,gBAAgBM,YAAY,CACrCC,MAAOlrC,EAAW4nC,QAAQ4B,YAAYp0C,KACrC21C,YAEJj2C,MAAK,SAAUpD,GACd0lD,EAAO1lD,EAAK25C,KAAKlyC,OAAS,EAEtBqwC,EAAYqB,QACd7qC,EAAW4nC,QAAQ4B,YAAYqB,QAAS,EACxC9D,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACW,cAA5Bi7C,EAAYiI,aACdjvC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,eAGhDwM,MAAM26B,EAAqBW,kBACrB8B,EAAYoC,QAAUwL,KAE3B5N,EAAYoC,SACd5rC,EAAW4nC,QAAQ4B,YAAYoC,OAASpC,EAAYoC,QAEtD7E,EAAqBO,cAAcJ,EAAiB,IAC/ClnC,EAAW4nC,QACdyJ,oBAAoB,IAEnBv8C,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,EACrBiU,EAAOi5B,GAAG,WAAY,KAAM,CAAE77B,SAAU,eAEzCwM,MAAM26B,EAAqBW,oBAKjCt7B,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OA9DbltB,KAqFRqN,QAdH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGlB7nC,EAAW4nC,SACX5nC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYp0C,KAG/B+hD,EAA+B5G,EAAUiB,EAAgB,OAQ7DxmD,EAAOsB,IAAI,YAtBX,WACEikD,EAAUriD,OAAOipD,iqBCzFrB,MAAMpQ,EAOJ54B,YAAYxO,EAASK,EAAYlP,GAAI,oBACnC/G,KAAKstD,cAAgB,IAAIC,IAAIt3C,EAAW+nC,SAASwP,SAASC,OAC1DztD,KAAK6V,SAAWI,EAAW+nC,SAASnoC,SACpC7V,KAAK+G,GAAKA,EACV/G,KAAK4V,QAAUA,EA4CjB83C,QAAQ7nD,EAAKrB,GACX,MAAMmpD,EAAS,UACf,OAAO3tD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB2tD,EAAQ9nD,GAAK,KACnC8G,OAEF3M,KAAK4V,QAAQwE,OAAOsjC,YAClB,CAAEiQ,OAAAA,EAAQ9nD,IAAAA,EAAKrB,MAAAA,GACfxE,KAAKstD,kBASXjO,QAAQx5C,GACN,MAAM8nD,EAAS,UACf,OAAO3tD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB2tD,EAAQ9nD,GAAK,CAAC2X,EAAG2C,KACvCxT,EAAQwT,MAEVngB,KAAK4V,QAAQwE,OAAOsjC,YAAY,CAAEiQ,OAAAA,EAAQ9nD,IAAAA,GAAO7F,KAAKstD,kBAQ1DpI,WAAWr/C,GACT,MAAM8nD,EAAS,aACf,OAAO3tD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB2tD,EAAQ9nD,GAAK,KACnC8G,OAEF3M,KAAK4V,QAAQwE,OAAOsjC,YAAY,CAAEiQ,OAAAA,EAAQ9nD,IAAAA,GAAO7F,KAAKstD,kBAuB1D/P,cAAc13C,EAAK8B,GAAsB,IAAhBkF,EAAgB,wDAEvC,OAAO7M,KAAKq/C,QAAQx5C,GAAKkF,MAAMoV,IAC7B,MAAMytC,EAAU,EAAA5tD,KAAA,UAAAA,KAAgBmgB,IAAS,GAMzC,OALItT,SACK+gD,EAAQ5tD,KAAK6V,UAEpB+3C,EAAQ5tD,KAAK6V,UAAYlO,EAEpB3H,KAAK0tD,QAAQ7nD,EAAK+nD,GAAS7iD,MAAK,IAAM6iD,EAAQ5tD,KAAK6V,eAQ9D8nC,eAAezwB,GACb1G,QAAQnhB,MAAM,gBAAiB6nB,eAnHdygC,EAAQ9nD,EAAKrF,GAE9B,MAAM29B,EAAY7b,IAChB,MAAMurC,EAAkB,GAAEF,UAC1B,GACErrC,EAAEmrC,SAAWztD,KAAKstD,eAClBznD,IAAQyc,EAAE3a,KAAK9B,KACfgoD,IAAmBvrC,EAAE3a,KAAKgmD,OAC1B,CACA,MAAM,OAAEA,EAAF,KAAUxtC,GAASmC,EAAE3a,KAE3B,OADA6e,QAAQo3B,MAAO,UAAS/3C,cAAgB8nD,uBAA6BrrC,GAC7DqrC,GACN,IAAK,gBACHntD,EAASqF,GACT,MACF,IAAK,gBACHrF,EAASqF,EAAKsa,GACd,MACF,IAAK,mBACH3f,EAASqF,GACT,MACF,QACE2gB,QAAQo3B,MAAM,qBAAsB+P,GAIxC3tD,KAAK4V,QAAQk4C,oBAAoB,UAAW3vB,GAAU,KAG1Dn+B,KAAK4V,QAAQgtC,iBAAiB,UAAWzkB,GAAU,cAiD1C4vB,GACT,IAAI/zB,EAAS+zB,EACb,GAAsB,iBAAX/zB,EACT,IACEA,EAAShc,KAAK/W,MAAM8mD,GACpB,MAAO1oD,GACPmhB,QAAQwnC,KAAM,oBAAmBD,KAAe1oD,GAChD20B,EAAS+zB,EAGb,OAAO/zB,EC3EX,SAASi0B,EAAgBxE,GACvB,OAAO,SAAUjlD,GACf,OAAOilD,EAAKU,YAAY3lD,+DAqI5B3E,QACGC,OAFiB,cAEG,CACnB,YACA,SACA,aACA,aACA,aACA,aACA,QACA,UACA,YACA,qBACA,WACA,SAEDwJ,OAAO,YAAa2kD,GACpBC,SAAS,iBAAkB,eAC3BA,SAAS,kBAAmB,WAC5BA,SAAS,iBAAkB,UAC3Bz2C,QAAQ,uBAAwBulC,GAChCn6C,UAAU,WAnCb,WACE,OAAO,SAAUC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,oBAAoB,SAAU/C,GACrB,KAAhBA,EAAMu6C,QACRh4C,EAAMmB,QAAO,WACXnB,EAAMzB,MAAM2B,EAAMmrD,YAEpB5tD,EAAMgD,yBA6BXV,UAAU,WArJb,WA0GE,MAAO,CACL0F,KAVF,SAAczF,EAAOC,GACnBA,EAAQzC,GAAG,SAAS,WACE+lB,SAAS+nC,eAAe,iBAlGhD,SAAsBltC,EAAMpe,GAE1B,MAAMurD,EAAMhoC,SAAS45B,cAAc,OAC7BpC,EAAU/6C,EAAM+6C,QAChBG,EAAWl7C,EAAMk7C,SACvB,IAAIsQ,EAEJ,IAAK,IAAIjxC,EAAI,EAAGA,EAAIva,EAAMmlD,SAAS74C,OAAQiO,IAAK,CAC9C,MAAMymB,EAAUhhC,EAAMmlD,SAAS5qC,GAC/B,IAAImkC,EAAS,WACb,MAAMU,EAAO,YAAcpe,EAAQoe,KAC7BqM,EACJ,YAAcnM,GAAAA,CAAOte,EAAQqe,WAAWv6B,OAAO,uBAEjD,GAAU,IAANvK,EAAJ,CAKA,OAAQva,EAAMk7C,SAAS4D,iBACrB,IAAK,gBACHJ,GACwB,QAAtB1d,EAAQ2d,UACJ3d,EAAQ+d,OACN7D,EAAS8D,WAAahe,EAAQ+d,OAC9B,SACF7D,EAAS0D,eACT7D,EAAQ3uB,MACR,UAAY4U,EAAQ6d,UAC1B,MAEF,IAAK,cACHH,GACwB,QAAtB1d,EAAQ2d,UACJ3d,EAAQ+d,OACN/d,EAAQie,KAAKC,OAASle,EAAQie,KAAKE,SACnC,SACFjE,EAAS0D,eACT7D,EAAQ3uB,MACR,UAAY4U,EAAQ6d,UAC1B,MAEF,IAAK,iBACHH,GACwB,QAAtB1d,EAAQ2d,UACJ3d,EAAQ+d,OACN/d,EAAQie,KAAKE,SACb,SACFjE,EAAS0D,eACT7D,EAAQ3uB,MACR,UAAY4U,EAAQ6d,UAC1B,MAEF,QACEH,GACwB,QAAtB1d,EAAQ2d,UACJ3d,EAAQ+d,QACL7D,EAAS8D,YAAc,SAAWhe,EAAQ+d,OAC3C,SACF7D,EAAS0D,eACT7D,EAAQ3uB,MACR,UAAY4U,EAAQ6d,UAG9B0M,EAAInO,YAAY75B,SAASmoC,eAAehN,IACxC6M,EAAInO,YAAY75B,SAAS45B,cAAc,OACvCoO,EAAInO,YAAY75B,SAASmoC,eAAetM,IACxCmM,EAAInO,YAAY75B,SAAS45B,cAAc,OACvCoO,EAAInO,YAAY75B,SAASmoC,eAAeD,IACxCF,EAAInO,YAAY75B,SAAS45B,cAAc,OACvCoO,EAAInO,YAAY75B,SAAS45B,cAAc,YAvDrCqO,EAAYxqB,EAAQqe,UA0DxB,MAAMsM,EAAWloC,OAAO8mC,OAExBoB,EAASpoC,SAASqoC,MAAM,sBAAwBroC,SAAS8sB,MAAQ,YACjEsb,EAASpoC,SAASqoC,MAAM,kBACxBD,EAASpoC,SAASqoC,MAAM,iBAAmB1Q,EAAS6O,QAAU,SAC9D4B,EAASpoC,SAASqoC,MAChB,oBACEtM,GAAAA,CAAOkM,GAAW1mC,OAAO,uBACzB,SAEJ6mC,EAASpoC,SAASqoC,MAChB,oBAAsBtM,GAAAA,GAASx6B,OAAO,uBAAyB,SAEjE6mC,EAASpoC,SAASqoC,MAAML,EAAIM,WAC5BF,EAASpoC,SAASqoC,MAAM,kBAExBD,EAASpoC,SAASg6B,QAClBoO,EAASG,QAETH,EAASI,QACTJ,EAASpO,QAOLyO,CAAaC,EAAajsD,OAO9BqE,SAAU,QA2CXnG,WAAW,iBAAkBulD,GAE7BvlD,WAAW,oBAAqB+iD,GAEhCx4C,OA3BH,sBA2BU,SAAUyjD,GAChBA,EAAmBC,qBAEpBjuD,WAAW,kBAAmB87C,GAE9B58C,QAAQ,MAAOwlD,GAEfn6C,OAAO23C,GACP3qC,IAAIsqC,GAEJ7hD,WAAW,oBAAqBwoD,GAEhCj+C,OAvCH,sBAuCU,SAAUyjD,GAChBA,EAAmBC,qBAEpBjuD,WAAW,mBAAoBqrD,GAE/BrrD,WAAW,sBAAuBisD,GAElCjsD,WAAW,oBAAqBmsD,wFCjNnCrtD,EAAOovD,QAAU,WACf,GAA0B,iBAAfC,WACT,OAAOA,WAGT,IAAItxC,EAEJ,IAGEA,EAAI7d,MAAQ,IAAI0mB,SAAS,cAAb,GACZ,MAAOpE,GAEP,GAAsB,iBAAXiE,OACT,OAAOA,OAIT,GAAoB,iBAAT7Y,KACT,OAAOA,KAIT,QAAsB,IAAX,EAAAmQ,EACT,OAAO,EAAAA,EAIX,OAAOA,EA5BQ,wECHjB,WAoBE7d,QAjBM4d,EAAO,SAON,KAFU,EAAF,WACL,OAAQA,EAAKuuC,eAWjB,WAWJ,SAASn6C,EAAQhO,GAEb,MAAmC,mBAA5B,GAAK8Q,SAAS/S,KAAKiC,GAG9B,SAASorD,EAAaprD,GAElB,QAAQgO,EAAQhO,IAAuB,iBAARA,IAAsBA,GAASA,aAAeqrD,MAAWrrD,aAAeuuB,MAQ3G,SAAS+8B,IAEL,MAA2B,mBAAbjG,SAGlB,SAASkG,IAEL,GAAID,IACA,OAAO,IAAIjG,SAkCnB,SAASmG,EAAmBC,EAAYtvD,EAASuvD,EAAUC,GAEvD,IAAIvT,EAAQ,EAEZ,IAAK,IAAIv2C,KAAO4pD,EAAY,CAExB,GAAIA,EAAW/sD,eAAemD,GAAM,CAEhC,IAAI+pD,EAAWD,GAAa9pD,EACxBrB,EAAQrE,EAAQirB,QAAQqkC,EAAW5pD,IAevC,GAbI8pD,GAAaP,EAAaK,KAC1BG,EAAWD,EAAY,IAAM9pD,EAAM,KAGnC8pD,GAAa39C,EAAQy9C,KAGjBG,EADA59C,EAAQxN,IAAUrE,EAAQ2pD,qBACf6F,EAAY,IAAMvT,EAAQ,IAE1BuT,EAAY,MAI3B39C,EAAQxN,IAAU4qD,EAAa5qD,GAE/BgrD,EAAmBhrD,EAAOrE,EAASuvD,EAAUE,QAE1C,GAAIprD,aAAiBqrD,SAExB,IAAK,IAAInyC,EAAI,EAAGA,EAAIlZ,EAAM4K,OAAQsO,IAC9BgyC,EAASr1B,OAAOu1B,EAAW,IAAMlyC,EAAI,IAAKlZ,EAAM2b,KAAKzC,SAElDlZ,aAAiB6qD,KAExBK,EAASr1B,OAAOu1B,EAAUprD,EAAOA,EAAMgB,MAEhChB,aAAiB+tB,KAExBm9B,EAASr1B,OAAOu1B,EAAUprD,EAAMsrD,gBAEb,OAAVtrD,GAAkBrE,EAAQ4pD,mBAAgC,OAAVvlD,SAA6B2P,IAAV3P,GAE5EkrD,EAASr1B,OAAOu1B,EAAUprD,GAGlC43C,IAEJ,OAAOsT,EAEX,OAhFA,SAAiBD,EAAYtvD,GAEzB,GAAIA,GAAWA,EAAQisD,iBAEnB,GAnB8B,mBAmBDjsD,EAAQisD,gBAnBlB/xB,OAqBf,KAAM,qDAEP,IAAKi1B,IAER,KAAM,8FA3Bd,IA0CQS,EA5DG,CAgDc,CACjB3D,gBAAiBmD,IACjBzF,sBAAsB,EACtBC,mBAAmB,EACnB3+B,QAAS,SAAS5mB,GACd,MAAqB,kBAAVA,GACCA,EAAQ,IAAK,IAElBA,IAIkCrE,GAAW,IA5DlCyO,QAAO,SAAUohD,EAAOC,GAI9C,OAHA18C,OAAOC,KAAKy8C,GAAelvD,SAAQ,SAAUmvD,GACzCF,EAAME,GAAaD,EAAcC,MAE9BF,IACR,IAyDH,OAAOR,EAAmBC,EAAYM,EAAeA,EAAc3D,kBA5EjClsD,IACjC,QAFM,OAEN,oECDD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,8FAA8FttC,MAClG,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1C2tC,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExB+9C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN30C,EAAG,mBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB5yD,CAAQ,EAAQ,8FCOlD,SAAWkiD,GAAU,aAIzB,IAAI2Q,EAAa,SAAUxyC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyyC,EAAU,CACN51C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5tD,EAAQ6tD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3hD,EAAMgiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAriD,EAAMA,EAAImiD,EAAgB,EAAI,IAE3BniD,EAAI+D,QAAQ,MAAO49C,KAGlCvC,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGGhO,EAAO+N,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU99C,GACZ,MAAO,MAAQA,GAEnB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG61C,EAAU,KACbjB,GAAIiB,EAAU,KACdj+C,EAAGi+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd95B,EAAG85B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBQ,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtJyB5yD,CAAQ,EAAQ,8FCDlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wEAAwEttC,MAC5E,KAEJutC,YAAa,wEAAwEvtC,MACjF,KAEJwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,WACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MApDyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPX,EAAa,SAAUxyC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyyC,EAAU,CACN51C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5tD,EAAQ6tD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3hD,EAAMgiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAriD,EAAMA,EAAImiD,EAAgB,EAAI,IAE3BniD,EAAI+D,QAAQ,MAAO49C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGGhO,EAAO+N,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU99C,GACZ,MAAO,MAAQA,GAEnB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG61C,EAAU,KACbjB,GAAIiB,EAAU,KACdj+C,EAAGi+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd95B,EAAG85B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB69C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzKyB5yD,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wEAAwEttC,MAC5E,KAEJutC,YAAa,wEAAwEvtC,MACjF,KAEJwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,WACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5yD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFxR,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,6EAA6EttC,MACjF,KAEJutC,YAAa,6EAA6EvtC,MACtF,KAEJwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU99C,GACZ,MAAO,MAAQA,GAEnB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,WACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO43C,EAAU53C,MAEpBjH,QAAQ,KAAM,MAEvB0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB69C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,yEAAyEttC,MAC7E,KAEJutC,YAAa,yEAAyEvtC,MAClF,KAEJwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,WACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETb,EAAa,SAAUxyC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyyC,EAAU,CACN51C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk9C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk5B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5tD,EAAQ6tD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3hD,EAAMgiD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAriD,EAAMA,EAAImiD,EAAgB,EAAI,IAE3BniD,EAAI+D,QAAQ,MAAO49C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGChO,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,wCAAwCztC,MAAM,KAC7D0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU99C,GACZ,MAAO,MAAQA,GAEnB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG61C,EAAU,KACbjB,GAAIiB,EAAU,KACdj+C,EAAGi+C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd95B,EAAG85B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUpuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO43C,EAAU53C,MAEpBjH,QAAQ,KAAM,MAEvB0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB69C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzLyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EttC,MACnF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,qEAAqExtC,MAC3E,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN30C,EAAG,kBACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAER/B,cAAe,0BACfC,KAAM,SAAU99C,GACZ,MAAO,mBAAmBuQ,KAAKvQ,IAEnC+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,SAGfd,uBAAwB,wCACxBC,QAAS,SAAUC,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl1C,EAAIk1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp2C,IAAMo2C,EAFvBlB,EAAS,IAAOl1C,IAEsBo2C,EADvClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAYzB,SAAS0R,EAAuBnB,EAAQQ,EAAettD,GASnD,MAAY,MAARA,EACOstD,EAAgB,UAAY,UACpB,MAARttD,EACAstD,EAAgB,UAAY,UAE5BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,yBAA2B,yBAC/Cf,GAAI,iBACJE,GAAI,uBACJE,GAAI,kBAOgC3sD,GArBvBid,MAAM,KAChBixC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAyBC5R,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,uGAAuG9E,MAC3G,KAEJmxC,WAAY,qGAAqGnxC,MAC7G,MAGRutC,YAAa,0DAA0DvtC,MACnE,KAEJwtC,SAAU,CACN1oC,OAAQ,0DAA0D9E,MAC9D,KAEJmxC,WAAY,0DAA0DnxC,MAClE,KAEJoxC,SAAU,+CAEd3D,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,mBAEXE,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN30C,EAAG,kBACHpI,EAAG8+C,EACH7B,GAAI6B,EACJ5B,EAAG4B,EACH3B,GAAI2B,EACJ36B,EAAG,QACHi5B,GAAI0B,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,yBACfC,KAAM,SAAU99C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQzB,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFttC,MACxF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,kBACH40C,GAAI,aACJh9C,EAAG,SACHi9C,GAAI,YACJC,EAAG,MACHC,GAAI,UACJh5B,EAAG,MACHi5B,GAAI,UACJiC,EAAG,UACHC,GAAI,aACJjC,EAAG,QACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KArFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IttC,MAClJ,KAEJutC,YAAa,iDAAiDvtC,MAAM,KACpEwtC,SAAU,+CAA+CxtC,MAAM,KAC/DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN30C,EAAG,kBACH40C,GAAI,aACJh9C,EAAG,eACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh5B,EAAG,aACHi5B,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFxR,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,mEAAmEvtC,MAC5E,KAEJwtC,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,uCAAuCztC,MAAM,KAC5D0tC,YAAa,kCAAkC1tC,MAAM,KACrDiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG,eACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAIzBy0C,cAAe,uCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAb5C,GAEa,SAAbA,EADA4C,EAGa,UAAb5C,EACA4C,GAAQ,EAAIA,EAAOA,EAAO,GACb,UAAb5C,GAEa,YAAbA,EADA4C,EAAO,QACX,GAKX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KA9HyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,mEAAmEvtC,MAC5E,KAEJwtC,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,uCAAuCztC,MAAM,KAC5D0tC,YAAa,kCAAkC1tC,MAAM,KACrDiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG,eACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,2BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,QAAb5C,GAAsB4C,GAAQ,GACjB,UAAb5C,GAAwB4C,EAAO,GACnB,UAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qJAAqJttC,MACzJ,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ4xC,iBAAkB,gBAClBC,kBAAkB,EAClBrE,SAAU,gFAAgFxtC,MACtF,KAEJytC,cAAe,oDAAoDztC,MAC/D,KAEJ0tC,YAAa,6BAA6B1tC,MAAM,KAChDiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,QACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,WACJC,EAAG,cACHC,GAAI,YACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,YACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,wCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACpB,YAAb5C,GAA0B4C,EAAO,GACrB,YAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAxHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,SAASwS,EAAyBjC,EAAQQ,EAAettD,GAMrD,OAAO8sD,EAAS,IAoBpB,SAAkB/vC,EAAM+vC,GACpB,OAAe,IAAXA,EAKR,SAAsB/vC,GAClB,IAAIiyC,EAAgB,CAChB7/C,EAAG,IACH4J,EAAG,IACHua,EAAG,KAEP,YAAsChlB,IAAlC0gD,EAAcjyC,EAAKnd,OAAO,IACnBmd,EAEJiyC,EAAcjyC,EAAKnd,OAAO,IAAMmd,EAAKqX,UAAU,GAb3C66B,CAAalyC,GAEjBA,EAxBemyC,CALT,CACT9C,GAAI,WACJK,GAAI,MACJF,GAAI,UAE8BvsD,GAAM8sD,GAchD,SAASqC,EAAWrC,GAChB,OAAIA,EAAS,EACFqC,EAAWrC,EAAS,IAExBA,EAoBX,IAAIsC,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJC,EAAc,6IAqBdC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGC/S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFttC,MACpF,KAEJutC,YAAa,mDAAmDvtC,MAAM,KACtEwtC,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,wBAAwB1tC,MAAM,KAC3CsyC,cAAeD,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBD,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA7CoB,wFA8CpBC,uBA7CyB,2DA8CzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBlE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,SACN30C,EAAG,wBACH40C,GAAI,YACJh9C,EAAG,cACHi9C,GAAI2C,EACJ1C,EAAG,SACHC,GAAI,SACJh5B,EAAG,YACHi5B,GAAIwC,EACJvC,EAAG,SACHC,GAAIsC,EACJrC,EAAG,WACHC,GApIR,SAAiCG,GAC7B,OAAQqC,EAAWrC,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YA6HxBF,uBAAwB,kBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,QAGvCC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,YACfC,KAAM,SAAUnvC,GACZ,MAAiB,SAAVA,GAEXovC,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAOyC,EAAO,GAAK,OAAS,UAnKErzD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,SAASuT,EAAUhD,EAAQQ,EAAettD,GACtC,IAAIS,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXqsD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI7sD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI7sD,GADW,IAAXqsD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIrsD,GADW,IAAXqsD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIrsD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIrsD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,cACH40C,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAG,MACHi5B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAlJyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJ6D,WAAY,oFAAoFnxC,MAC5F,KAEJ8E,OAAQ,qHAAqH9E,MACzH,KAEJoxC,SAAU,mBAEd7D,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,gCACLyE,IAAK,mBACLxE,KAAM,qCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjBvxD,KAAK4wD,QAAgB,MAAQ,MAAQ,QAE9DY,QAAS,WACL,MAAO,YAA+B,IAAjBxxD,KAAK4wD,QAAgB,MAAQ,MAAQ,QAE9Da,SAAU,WACN,MAAO,YAA+B,IAAjBzxD,KAAK4wD,QAAgB,MAAQ,MAAQ,QAE9Dc,QAAS,WACL,MAAO,YAA+B,IAAjB1xD,KAAK4wD,QAAgB,MAAQ,MAAQ,QAE9De,SAAU,WACN,MACI,wBACkB,IAAjB3xD,KAAK4wD,QAAgB,MAAQ,MAC9B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN30C,EAAG,aACH40C,GAAI,YACJh9C,EAAG,WACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA/FyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,oFAAoFttC,MACzF,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJC,EAAc,wJAElB,SAASc,EAAOz1C,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAASo1C,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,IACD,OAAOstD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,UAAY,UAEvCrsD,EAAS,YAExB,IAAK,IACD,OAAO6sD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,SAEtCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,SAEtCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,MAAQ,OAEnCrsD,EAAS,MAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,QAAU,UACjD,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,UAEtCrsD,EAAS,SAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,OAAS,OAEpCrsD,EAAS,QAKvB87C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACb6E,YAAaA,EACbR,iBAAkBQ,EAGlBK,kBAAmB,uKACnBC,uBAAwB,sDACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,mDAAmDxtC,MAAM,KACnEytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN5+B,EAAG,cAEP6+B,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzKyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,gEAAgEttC,MACpE,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,oEAAoExtC,MAC1E,KAEJytC,cAAe,6BAA6BztC,MAAM,KAClD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVC,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUiE,GAMd,OAAOA,GALK,UAAUtsD,KAAKssD,GACrB,MACA,QAAQtsD,KAAKssD,GACb,MACA,QAGVhE,KAAM,YACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,qDAAqDvtC,MAC9D,KAEJwtC,SAAU,+EAA+ExtC,MACrF,KAEJytC,cAAe,+BAA+BztC,MAAM,KACpD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EAEpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI,YACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,MACHC,GAAI,SACJh5B,EAAG,UACHi5B,GAAI,aACJC,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,mCAExBC,QAAS,SAAUC,GACf,IACIoD,EAAS,GAiCb,OAlCQpD,EAyBA,GAEAoD,EADM,KA1BNpD,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACXoD,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBApD,IAkCDA,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA9FyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFttC,MAC1F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,cACH40C,GAAI,cACJh9C,EAAG,WACHi9C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,WACHC,GAAI,aACJC,EAAG,QACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5yD,CAAQ,EAAQ,8FCMlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk9C,EAAG,CAAC,cAAe,gBACnB/4B,EAAG,CAAC,UAAW,aACfi5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cu8C,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAGihD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh5B,EAAG88B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5yD,CAAQ,EAAQ,8FCAlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk9C,EAAG,CAAC,cAAe,gBACnB/4B,EAAG,CAAC,UAAW,aACfi5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cu8C,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAGihD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh5B,EAAG88B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk9C,EAAG,CAAC,cAAe,gBACnB/4B,EAAG,CAAC,UAAW,aACfi5B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG/Cu8C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAGihD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh5B,EAAG88B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJE,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGClO,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUA,EACVC,cAAeD,EACfE,YAAa,qCAAqC1tC,MAAM,KACxDiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,QACfC,KAAM,SAAU99C,GACZ,MAAO,OAASA,GAEpB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,YACN30C,EAAG,iBACH40C,GAAI,cACJh9C,EAAG,WACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,cACJh5B,EAAG,WACHi5B,GAAI,YACJC,EAAG,SACHC,GAAI,UACJC,EAAG,WACHC,GAAI,aAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CACFC,IAAK,EACLC,IAAK,MAxFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAWhBA,EAAO+N,aAAa,KAAM,CAC/B+F,mBAAoB,qHAAqHpzC,MACrI,KAEJqzC,iBAAkB,qHAAqHrzC,MACnI,KAEJstC,OAAQ,SAAUgG,EAAgBxuC,GAC9B,OAAKwuC,EAGiB,iBAAXxuC,GACP,IAAIzE,KAAKyE,EAAOqS,UAAU,EAAGrS,EAAO1Z,QAAQ,UAGrClO,KAAKq2D,kBAAkBD,EAAeE,SAEtCt2D,KAAKu2D,oBAAoBH,EAAeE,SARxCt2D,KAAKu2D,qBAWpBlG,YAAa,oDAAoDvtC,MAAM,KACvEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1C6tC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCJ,KAAM,SAAU99C,GACZ,MAAyC,OAAjCA,EAAQ,IAAIsU,cAAc,IAEtCupC,cAAe,gBACfM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVmF,WAAY,CACRjF,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,gCACX,QACI,MAAO,mCAGnBvC,SAAU,KAEdN,SAAU,SAAUzrD,EAAK4wD,GACrB,IApEY7jD,EAoERmjD,EAAS/1D,KAAK02D,YAAY7wD,GAC1B+qD,EAAQ6F,GAAOA,EAAI7F,QAIvB,OAzEYh+C,EAsEGmjD,GApEM,oBAAbrvC,UAA4B9T,aAAiB8T,UACX,sBAA1CnT,OAAO1R,UAAUiT,SAAS/S,KAAK6Q,MAoE3BmjD,EAASA,EAAO5zD,MAAMs0D,IAEnBV,EAAOhhD,QAAQ,KAAM67C,EAAQ,IAAO,EAAI,MAAQ,SAE3DiB,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,oBACH40C,GAAI,kBACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,WACJC,EAAG,aACHC,GAAI,WACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,2FCMlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FttC,MACjG,KAEJutC,YAAa,oDAAoDvtC,MAAM,KACvEwtC,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,gCAAgCztC,MAAM,KACrD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNyE,KAAM,uCAEVrF,cAAe,cACfC,KAAM,SAAU99C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3BypC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpCQ,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,kBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,WACHi5B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA/DyB5yD,CAAQ,EAAQ,8FCDlD,SAAWkiD,GAAU,aAIzB,IAAIuU,EAAiB,8DAA8D7zC,MAC3E,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEP9S,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbyoC,EAAYr7C,EAAEshD,SAEdK,EAAe3hD,EAAEshD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1xD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3xD,KAAK4wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5yD,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIzB,IAAIuU,EAAiB,8DAA8D7zC,MAC3E,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEP9S,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbyoC,EAAYr7C,EAAEshD,SAEdK,EAAe3hD,EAAEshD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1xD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3xD,KAAK4wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqB12D,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIzB,IAAIuU,EAAiB,8DAA8D7zC,MAC3E,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEP9S,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbyoC,EAAYr7C,EAAEshD,SAEdK,EAAe3hD,EAAEshD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1xD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3xD,KAAK4wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,IAAIuU,EAAiB,8DAA8D7zC,MAC3E,KAEJutC,EAAc,kDAAkDvtC,MAAM,KACtEmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAET9S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbyoC,EAAYr7C,EAAEshD,SAEdK,EAAe3hD,EAAEshD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzxD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1xD,KAAK4wD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3xD,KAAK4wD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqB12D,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACTxK,EAAG,CAAC,eAAgB,cAAe,iBACnC40C,GAAI,CAACW,EAAS,UAAWA,EAAS,YAClC39C,EAAG,CAAC,aAAc,aAClBi9C,GAAI,CAACU,EAAS,UAAWA,EAAS,YAClCT,EAAG,CAAC,YAAa,YAAa,YAC9BC,GAAI,CAACQ,EAAS,SAAUA,EAAS,UACjCx5B,EAAG,CAAC,YAAa,YACjBk5B,EAAG,CAAC,UAAW,WAAY,WAC3BC,GAAI,CAACK,EAAS,OAAQA,EAAS,SAC/BJ,EAAG,CAAC,YAAa,QAAS,aAC1BC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAIQ,EACOvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAElDutD,EAAWxrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG1Cu8C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FttC,MACjG,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJwtC,SAAU,iEAAiExtC,MACvE,KAEJytC,cAAe,gBAAgBztC,MAAM,KACrC0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI,WACJC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,+FAA+FttC,MACnG,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sEAAsExtC,MAC5E,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN5+B,EAAG,WACHmjC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEVxE,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wEAAwEttC,MAC5E,KAEJutC,YAAa,wEAAwEvtC,MACjF,KAEJwtC,SAAU,qDAAoExtC,MAC1E,KAEJytC,cAAe,qDAAoEztC,MAC/E,KAEJ0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,wBACfC,KAAM,SAAU99C,GACZ,MAAO,aAAauQ,KAAKvQ,IAE7B+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,YACH40C,GAAI,WACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EACFwP,QAAQ,UAAU,SAAUiH,GACzB,OAAO43C,EAAU53C,MAEpBjH,QAAQ,KAAM,MAEvB0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB09C,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,MA5GyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyU,EAAc,wEAAwE/zC,MAClF,KAEJg0C,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASlB,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAAS,GACb,OAAQT,GACJ,IAAK,IACD,OAAOutD,EAAW,oBAAsB,kBAC5C,IAAK,KACD9sD,EAAS8sD,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACD9sD,EAAS8sD,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9sD,EAAS8sD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9sD,EAAS8sD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACD9sD,EAAS8sD,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9sD,EAAS8sD,EAAW,SAAW,SAIvC,OAEJ,SAAsBT,EAAQS,GAC1B,OAAOT,EAAS,GACVS,EACI0D,EAAcnE,GACdkE,EAAYlE,GAChBA,EARGoE,CAAapE,EAAQS,GAAY,IAAM9sD,EAW3C87C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,2GAA2GttC,MAC/G,KAEJutC,YAAa,uEAAuEvtC,MAChF,KAEJwtC,SAAU,qEAAqExtC,MAC3E,KAEJytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN5+B,EAAG,WACHmjC,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEVxE,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5yD,CAAQ,EAAQ,4FCIlD,SAAWkiD,GAAU,aAIfA,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,eACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh5B,EAAG,aACHi5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,4EAA4ExtC,MAClF,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN30C,EAAG,YACH40C,GAAI,cACJh9C,EAAG,eACHi9C,GAAI,cACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,YACHi5B,GAAI,WACJC,EAAG,cACHC,GAAI,aACJC,EAAG,UACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB5yD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SAlEjBzyD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAEI8S,EAAc,yKACdD,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGC7S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJoyC,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA3BoB,2FA4BpBC,uBA3ByB,oFA4BzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh5B,EAAG,UACHi5B,GAAI,WACJiC,EAAG,cACHC,GAAI,cACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAI4U,EAAsB,6DAA6Dl0C,MAC/E,KAEJm0C,EAAyB,kDAAkDn0C,MACvE,KAGCs/B,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,iGAAiGttC,MACrG,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqvC,EAAuBjiD,EAAEshD,SAEzBU,EAAoBhiD,EAAEshD,SAJtBU,GAOfrC,kBAAkB,EAClBrE,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG,mBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aA4ChBA,EAAO+N,aAAa,KAAM,CAC/BC,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJC,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJC,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnEC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,YACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,UACHi9C,GAAI,aACJC,EAAG,iBACHC,GAAI,oBACJh5B,EAAG,KACHi5B,GAAI,QACJC,EAAG,KACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aA4ChBA,EAAO+N,aAAa,KAAM,CAC/BC,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJC,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJC,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACN30C,EAAG,gBACH40C,GAAI,YACJh9C,EAAG,UACHi9C,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJh5B,EAAG,QACHi5B,GAAI,WACJC,EAAG,OACHC,GAAI,YACJC,EAAG,WACHC,GAAI,eAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,mDAAmDxtC,MAAM,KACnEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjBvxD,KAAK4wD,QAAgB,KAAO,KAAO,QAE1DY,QAAS,WACL,MAAO,UAA6B,IAAjBxxD,KAAK4wD,QAAgB,KAAO,KAAO,QAE1Da,SAAU,WACN,MAAO,UAA6B,IAAjBzxD,KAAK4wD,QAAgB,KAAO,KAAO,QAE1Dc,QAAS,WACL,MAAO,UAA6B,IAAjB1xD,KAAK4wD,QAAgB,IAAM,KAAO,QAEzDe,SAAU,WACN,MACI,qBAAwC,IAAjB3xD,KAAK4wD,QAAgB,KAAO,KAAO,QAGlEgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU9gD,GACd,OAA0B,IAAtBA,EAAI9C,QAAQ,MACL,IAAM8C,EAEV,MAAQA,GAEnB+gD,KAAM,SACN30C,EAAG,eACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxEyB5yD,CAAQ,EAAQ,iGCGlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,cACvB40C,GAAI,CAACW,EAAS,aAAcA,EAAS,UACrC39C,EAAG,CAAC,aAAc,YAClBi9C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,WAAY,SAChBC,GAAI,CAACQ,EAAS,UAAWA,EAAS,SAClCx5B,EAAG,CAAC,YAAa,UACjBi5B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,gBAAiB,aACrBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,WAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWxrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCu8C,EAAO+N,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,wFAAwFnxC,MAChG,KAEJ8E,OAAQ,mJAAmJ9E,MACvJ,KAEJoxC,SAAU,mBAEd7D,YAAa,4EAA4EvtC,MACrF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,4CAA4CztC,MAAM,KACjE0tC,YAAa,wBAAwB1tC,MAAM,KAC3CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,kBACJC,IAAK,qBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNyE,KAAM,oCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,4BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAb5C,EACA4C,EACa,YAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,UAzHmBrzD,CAAQ,EAAQ,iGCGlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACTxK,EAAG,CAAC,qBAAsB,iBAC1B40C,GAAI,CAACW,EAAS,cAAeA,EAAS,WACtC39C,EAAG,CAAC,aAAc,YAClBi9C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACQ,EAAS,WAAYA,EAAS,UACnCx5B,EAAG,CAAC,YAAa,UACjBi5B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,YAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWxrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCu8C,EAAO+N,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,4EAA4EnxC,MACpF,KAEJ8E,OAAQ,wIAAwI9E,MAC5I,KAEJoxC,SAAU,mBAEd7D,YAAa,4DAA4DvtC,MACrE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,iBACJC,IAAK,oBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNyE,KAAM,mCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,cACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,+BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAzHmBrzD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,yEAAyEvtC,MAClF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,mCAAmCztC,MAAM,KACxD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,gBACJC,IAAK,mBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,WACH40C,GAAI,WACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,UACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAKzBy0C,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,SAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0EAA0EttC,MAC9E,KAEJutC,YAAa,4DAA4DvtC,MACrE,KAEJwtC,SAAU,uCAAuCxtC,MAAM,KACvDytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACN5+B,EAAG,WACHmjC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN30C,EAAG,aACH40C,GAAI,WACJh9C,EAAG,MACHi9C,GAAI,UACJC,EAAG,MACHC,GAAI,SAAUQ,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBx5B,EAAG,MACHi5B,GAAI,SAAUO,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBN,EAAG,OACHC,GAAI,SAAUK,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,WAEpBJ,EAAG,MACHC,GAAI,SAAUG,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,UAGxBlC,cAAe,gEACfC,KAAM,SAAU99C,GACZ,MAAO,8BAA8BuQ,KAAKvQ,IAE9C+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACPzC,EAAU,SAAW,eACrByC,EAAO,GACPzC,EAAU,QAAU,eAEpB,UAzFmB5wD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETqB,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBC7S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,8EAA8E9E,MAClF,KAEJmxC,WAAY,0EAA0EnxC,MAClF,MAGRutC,YAAa,6DAA6DvtC,MACtE,KAEJwtC,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGV4D,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJR,YAAa,+KAEbR,iBAAkB,+KAElBa,kBAAmB,uIAEnBC,uBAAwB,sFAExBlE,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN30C,EAAG,cACH40C,GAAI,WACJh9C,EAAG,UACHi9C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAKzBy0C,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAlKyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,SAASuT,EAAUhD,EAAQQ,EAAettD,GACtC,IAAIS,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXqsD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI7sD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI7sD,GADW,IAAXqsD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIrsD,GADW,IAAXqsD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIrsD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIrsD,GADW,IAAXqsD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,oGAAoG9E,MACxG,KAEJmxC,WAAY,gGAAgGnxC,MACxG,MAGRutC,YAAa,+DAA+DvtC,MACxE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,cACH40C,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAG,MACHi5B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxJyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAI8U,EAAc,gEAAgEp0C,MAC9E,KAEJ,SAAS6yC,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAIW,EAAMpB,EACV,OAAQ9sD,GACJ,IAAK,IACD,OAAOutD,GAAYD,EACb,mBACA,oBACV,IAAK,KACD,OAAOY,GAAOX,GAAYD,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,MAAQ,QAE1D,MAAO,GAEX,SAASP,EAAKQ,GACV,OACKA,EAAW,GAAK,WACjB,IACA8D,EAAYl3D,KAAKm0D,OACjB,aAIC/R,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGttC,MACxG,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,gCAAgCztC,MAAM,KACrD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVZ,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3BypC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,IACW,IAAZE,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzCQ,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOmB,EAAK7wD,KAAK/B,MAAM,IAE3B0xD,QAAS,oBACTC,SAAU,WACN,OAAOiB,EAAK7wD,KAAK/B,MAAM,IAE3B4xD,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,KACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB5yD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,CACJxoC,OAAQ,4GAA4G9E,MAChH,KAEJmxC,WAAY,gGAAgGnxC,MACxG,MAGRutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,gEAAgExtC,MACtE,KAEJytC,cAAe,+BAA+BztC,MAAM,KACpD0tC,YAAa,+BAA+B1tC,MAAM,KAClDiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,sBAEXE,SAAU,WACN,MAAO,8BAEXC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN30C,EAAG,mBACH40C,GAAI,cACJh9C,EAAG,OACHi9C,GAAI,UACJC,EAAG,MACHC,GAAI,SACJh5B,EAAG,KACHi5B,GAAI,QACJC,EAAG,OACHC,GAAI,UACJC,EAAG,OACHC,GAAI,WAER/B,cAAe,oCACfC,KAAM,SAAU99C,GACZ,MAAO,uBAAuBuQ,KAAKvQ,IAEvC+9C,SAAU,SAAU4C,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,YAGfd,uBAAwB,0BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAXzB,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,wBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,GAAoC,UAAbA,EACvB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,eACN30C,EAAG,iBACH40C,GAAI,WACJh9C,EAAG,UACHi9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,SAAS4T,EAAOz1C,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAASo1C,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,IACD,OAAOstD,GAAiBC,EAClB,mBACA,mBACV,IAAK,KACD,OAAI4C,EAAOrD,GAEHrsD,GACC6sD,GAAiBC,EAAW,WAAa,YAG3C9sD,EAAS,UACpB,IAAK,IACD,OAAO6sD,EAAgB,SAAW,SACtC,IAAK,KACD,OAAI6C,EAAOrD,GAEHrsD,GAAU6sD,GAAiBC,EAAW,UAAY,WAE/CD,EACA7sD,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAI0vD,EAAOrD,GAEHrsD,GACC6sD,GAAiBC,EACZ,gBACA,iBAGP9sD,EAAS,cACpB,IAAK,IACD,OAAI6sD,EACO,QAEJC,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACO7sD,EAAS,QAEbA,GAAU8sD,EAAW,OAAS,SAC9BD,EACA7sD,EAAS,QAEbA,GAAU8sD,EAAW,MAAQ,QACxC,IAAK,IACD,OAAID,EACO,UAEJC,EAAW,QAAU,SAChC,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACO7sD,EAAS,UAEbA,GAAU8sD,EAAW,SAAW,WAChCD,EACA7sD,EAAS,UAEbA,GAAU8sD,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOD,GAAiBC,EAAW,KAAO,MAC9C,IAAK,KACD,OAAI4C,EAAOrD,GACArsD,GAAU6sD,GAAiBC,EAAW,KAAO,QAEjD9sD,GAAU6sD,GAAiBC,EAAW,KAAO,QAIvDhR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFttC,MACxF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,mFAAmFxtC,MACzF,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,iBACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAG,cACHC,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,gGAAgGttC,MACpG,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,6BACX,QACI,MAAO,+BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU10C,GACd,OAAQ,YAAY+F,KAAK/F,GAAK,MAAQ,MAAQ,IAAMA,GAExD20C,KAAM,QACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,YACHi9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh5B,EAAG,YACHi5B,GAAI,YACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA9DyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,gGAAgGttC,MACpG,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,WACL,MACI,WACCvxD,KAAK4wD,QAAU,EAAI,OAA0B,IAAjB5wD,KAAK4wD,QAAgB,IAAM,OACxD,OAGRY,QAAS,WACL,MACI,aACCxxD,KAAK4wD,QAAU,EAAI,OAA0B,IAAjB5wD,KAAK4wD,QAAgB,IAAM,OACxD,OAGRa,SAAU,WACN,MACI,WACCzxD,KAAK4wD,QAAU,EAAI,OAA0B,IAAjB5wD,KAAK4wD,QAAgB,IAAM,OACxD,OAGRc,QAAS,WACL,MACI,WACC1xD,KAAK4wD,QAAU,EAAI,OAA0B,IAAjB5wD,KAAK4wD,QAAgB,IAAM,OACxD,OAGRe,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MACI,uBACCn0D,KAAK4wD,QAAU,EACV,OACiB,IAAjB5wD,KAAK4wD,QACL,IACA,OACN,MAER,QACI,MACI,uBACC5wD,KAAK4wD,QAAU,EACV,OACiB,IAAjB5wD,KAAK4wD,QACL,IACA,OACN,QAIhBgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,YACHi9C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh5B,EAAG,YACHi5B,GAAI,YACJiC,EAAG,gBACHC,GAAI,eACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BgH,KAAM,CACF,CACIC,MAAO,aACPC,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7xD,KAAM,KACN8xD,OAAQ,KACRC,KAAM,MAEV,CACIH,MAAO,aACPI,OAAO,IACPH,OAAQ,EACR7xD,KAAM,MACN8xD,OAAQ,KACRC,KAAM,OAGdE,oBAAqB,WACrBC,oBAAqB,SAAU9kD,EAAOoJ,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAIqN,SAASrN,EAAM,IAAMpJ,EAAO,KAE9Dw9C,OAAQ,yCAAyCttC,MAAM,KACvDutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,gBAAgBztC,MAAM,KACrC0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACN5+B,EAAG,aACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEVrF,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAiB,OAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAW5yD,KAAK4yD,OACb,cAEA,WAGflB,QAAS,UACTC,SAAU,SAAUgG,GAChB,OAAI33D,KAAK4yD,SAAW+E,EAAI/E,OACb,cAEA,WAGfhB,SAAU,KAEda,uBAAwB,WACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAXzB,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,MACJh9C,EAAG,KACHi9C,GAAI,MACJC,EAAG,MACHC,GAAI,OACJh5B,EAAG,KACHi5B,GAAI,MACJC,EAAG,MACHC,GAAI,OACJC,EAAG,KACHC,GAAI,SAlJ0BtyD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,+CAA+CxtC,MAAM,KAC/DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,6BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACN30C,EAAG,kBACH40C,GAAI,WACJh9C,EAAG,kBACHi9C,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJh5B,EAAG,WACHi5B,GAAI,YACJC,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGttC,MACzG,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,CACN2D,WAAY,gEAAgEnxC,MACxE,KAEJ8E,OAAQ,iEAAiE9E,MACrE,KAEJoxC,SAAU,iBAEd3D,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU10C,GACd,OAAOA,EAAErI,QAAQ,iCAAiC,SAC9C6iD,EACA3wC,EACA4wC,GAEA,MAAc,MAAPA,EAAa5wC,EAAK,KAAOA,EAAK4wC,EAAK,SAGlD9F,KAAM,SAAU30C,GACZ,MAAI,4BAA4B+F,KAAK/F,GAC1BA,EAAErI,QAAQ,SAAU,UAE3B,OAAOoO,KAAK/F,GACLA,EAAErI,QAAQ,QAAS,YAEvBqI,GAEXA,EAAG,iBACH40C,GAAI,UACJh9C,EAAG,OACHi9C,GAAI,UACJC,EAAG,QACHC,GAAI,WACJh5B,EAAG,MACHi5B,GAAI,SACJC,EAAG,MACHC,GAAI,SACJC,EAAG,OACHC,GAAI,WAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,MAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGAzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,0DAA0DxtC,MAChE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN30C,EAAG,iBACH40C,GAAI,YACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEttC,MAC7E,KAEJutC,YAAa,yEAAyEvtC,MAClF,KAEJwtC,SAAU,iDAAiDxtC,MAAM,KACjEytC,cAAe,oBAAoBztC,MAAM,KACzC0tC,YAAa,oBAAoB1tC,MAAM,KACvCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,cACfC,KAAM,SAAU99C,GACZ,MAAiB,UAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,QAEA,SAGfjC,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN30C,EAAG,iBACH40C,GAAI,YACJh9C,EAAG,UACHi9C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,UACJC,EAAG,QACHC,GAAI,QACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,OACTiB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzB42C,KAAM,CACFC,IAAK,EACLC,IAAK,KApGyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FttC,MACjG,KAEJutC,YAAa,2EAA2EvtC,MACpF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,0DAA0DxtC,MAChE,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,gBACH40C,GAAI,gBACJh9C,EAAG,aACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,SACJC,EAAG,cACHC,GAAI,YACJC,EAAG,YACHC,GAAI,WAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,gCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,UAGfd,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yCAAyCttC,MAAM,KACvDutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,gBAAgBztC,MAAM,KACrC0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACN5+B,EAAG,cACHmjC,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVxE,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,OACN30C,EAAG,MACH40C,GAAI,MACJh9C,EAAG,KACHi9C,GAAI,MACJC,EAAG,OACHC,GAAI,OACJh5B,EAAG,KACHi5B,GAAI,MACJC,EAAG,MACHC,GAAI,MACJC,EAAG,MACHC,GAAI,OAERC,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBlC,cAAe,QACfC,KAAM,SAAUnvC,GACZ,MAAiB,OAAVA,GAEXovC,SAAU,SAAU4C,EAAMC,EAAQsE,GAC9B,OAAOvE,EAAO,GAAK,KAAO,QAxEIrzD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETxD,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGChO,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,0EAA0ExtC,MAChF,KAEJytC,cAAe,2DAA2DztC,MACtE,KAEJ0tC,YAAa,gBAAgB1tC,MAAM,KACnCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,kBACfC,KAAM,SAAU99C,GACZ,MAAO,UAAUuQ,KAAKvQ,IAE1B+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,UAEA,WAGfjC,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,KACN30C,EAAG,kBACH40C,GAAI,WACJh9C,EAAG,cACHi9C,GAAI,YACJC,EAAG,eACHC,GAAI,aACJh5B,EAAG,WACHi5B,GAAI,SACJC,EAAG,YACHC,GAAI,UACJC,EAAG,WACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO43C,EAAU53C,MAEpBjH,QAAQ,KAAM,MAEvB0+C,WAAY,SAAUluD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO03C,EAAU13C,MAEpBjH,QAAQ,KAAM,MAEvB69C,KAAM,CACFC,IAAK,EACLC,IAAK,MApHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGAzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,kFAAkFttC,MACtF,KAEJutC,YAAa,qDAAqDvtC,MAC9D,KAEJwtC,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN30C,EAAG,iBACH40C,GAAI,YACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,wBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlFyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACT5S,EAAG,CAAC,aAAc,gBAClBk9C,EAAG,CAAC,YAAa,eACjB/4B,EAAG,CAAC,UAAW,aACfk5B,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEnB,OAAOY,EAAgBvrC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAuBxD,SAASkyD,EAA4BpF,GAEjC,GADAA,EAAStpC,SAASspC,EAAQ,IACtBrpC,MAAMqpC,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAI4B,EAAY5B,EAAS,GAEzB,OACWoF,EADO,IAAdxD,EADa5B,EAAS,GAIS4B,GAChC,GAAI5B,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAOoF,EAA4BpF,GAInC,OAAOoF,EADPpF,GAAkB,KAKjBvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,+DAA+DvtC,MACxE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,mEAAmExtC,MACzE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,cACJC,IAAK,iBACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVC,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvBtC,aAAc,CACVC,OAhGR,SAA2BvsD,GAEvB,OAAIwyD,EADSxyD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,KAAO3I,EAEX,MAAQA,GA4FXwsD,KA1FR,SAAyBxsD,GAErB,OAAIwyD,EADSxyD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,QAAU3I,EAEd,SAAWA,GAsFd6X,EAAG,kBACH40C,GAAI,cACJh9C,EAAGihD,EACHhE,GAAI,cACJC,EAAG+D,EACH9D,GAAI,aACJh5B,EAAG88B,EACH7D,GAAI,UACJC,EAAG4D,EACH3D,GAAI,WACJC,EAAG0D,EACHzD,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApIyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EttC,MACjF,KAEJutC,YAAa,6EAA6EvtC,MACtF,KAEJwtC,SAAU,sCAAsCxtC,MAAM,KACtDytC,cAAe,oCAAoCztC,MAAM,KACzD0tC,YAAa,mBAAmB1tC,MAAM,KACtCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVZ,cAAe,kBACfC,KAAM,SAAU99C,GACZ,MAAiB,WAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,WAEA,UAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI,YACJh9C,EAAG,SACHi9C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJh5B,EAAG,QACHi5B,GAAI,SACJC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,SAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,MAAO,MAAQA,KA/DezyD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAI4V,EAAQ,CACRhG,GAAI,6BACJh9C,EAAG,wBACHi9C,GAAI,0BACJC,EAAG,2BACHC,GAAI,4BACJh5B,EAAG,qBACHi5B,GAAI,sBACJC,EAAG,uBACHC,GAAI,4BACJC,EAAG,mBACHC,GAAI,oBASR,SAASyF,EAAkBtF,EAAQQ,EAAettD,EAAKutD,GACnD,OAAOD,EACDa,EAAMnuD,GAAK,GACXutD,EACAY,EAAMnuD,GAAK,GACXmuD,EAAMnuD,GAAK,GAErB,SAASqyD,EAAQvF,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,GAEzD,SAASqB,EAAMnuD,GACX,OAAOmyD,EAAMnyD,GAAKid,MAAM,KAE5B,SAAS6yC,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAASqsD,EAAS,IACtB,OAAe,IAAXA,EAEIrsD,EAAS2xD,EAAkBtF,EAAQQ,EAAettD,EAAI,GAAIutD,GAEvDD,EACA7sD,GAAU4xD,EAAQvF,GAAUqB,EAAMnuD,GAAK,GAAKmuD,EAAMnuD,GAAK,IAE1DutD,EACO9sD,EAAS0tD,EAAMnuD,GAAK,GAEpBS,GAAU4xD,EAAQvF,GAAUqB,EAAMnuD,GAAK,GAAKmuD,EAAMnuD,GAAK,IAIjEu8C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,oGAAoG9E,MACxG,KAEJmxC,WAAY,kGAAkGnxC,MAC1G,KAEJoxC,SAAU,+DAEd7D,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,CACN1oC,OAAQ,oFAAoF9E,MACxF,KAEJmxC,WAAY,2FAA2FnxC,MACnG,KAEJoxC,SAAU,cAEd3D,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,iBAAiB1tC,MAAM,KACpCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN5+B,EAAG,aACHmjC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVxE,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAlFR,SAA0Bu1C,EAAQQ,EAAettD,EAAKutD,GAClD,OAAID,EACO,kBAEAC,EAAW,kBAAoB,mBA+EtCpB,GAAI2D,EACJ3gD,EAAGijD,EACHhG,GAAI0D,EACJzD,EAAG+F,EACH9F,GAAIwD,EACJx8B,EAAG8+B,EACH7F,GAAIuD,EACJtD,EAAG4F,EACH3F,GAAIqD,EACJpD,EAAG0F,EACHzF,GAAImD,GAERlD,uBAAwB,cACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,QAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAI4V,EAAQ,CACRhG,GAAI,qCAAqClvC,MAAM,KAC/C9N,EAAG,iCAAiC8N,MAAM,KAC1CmvC,GAAI,iCAAiCnvC,MAAM,KAC3CovC,EAAG,iCAAiCpvC,MAAM,KAC1CqvC,GAAI,iCAAiCrvC,MAAM,KAC3CqW,EAAG,6BAA6BrW,MAAM,KACtCsvC,GAAI,6BAA6BtvC,MAAM,KACvCuvC,EAAG,iCAAiCvvC,MAAM,KAC1CwvC,GAAI,iCAAiCxvC,MAAM,KAC3CyvC,EAAG,wBAAwBzvC,MAAM,KACjC0vC,GAAI,wBAAwB1vC,MAAM,MAKtC,SAAS8E,EAAOosC,EAAOrB,EAAQQ,GAC3B,OAAIA,EAEOR,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAI5DrB,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAG3E,SAASF,EAAuBnB,EAAQQ,EAAettD,GACnD,OAAO8sD,EAAS,IAAM/qC,EAAOowC,EAAMnyD,GAAM8sD,EAAQQ,GAErD,SAASgF,EAAyBxF,EAAQQ,EAAettD,GACrD,OAAO+hB,EAAOowC,EAAMnyD,GAAM8sD,EAAQQ,GAM7B/Q,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uGAAuGttC,MAC3G,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,0EAA0ExtC,MAChF,KAEJytC,cAAe,kBAAkBztC,MAAM,KACvC0tC,YAAa,kBAAkB1tC,MAAM,KACrCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAlCR,SAAyBu1C,EAAQQ,GAC7B,OAAOA,EAAgB,iBAAmB,kBAkCtCnB,GAAI8B,EACJ9+C,EAAGmjD,EACHlG,GAAI6B,EACJ5B,EAAGiG,EACHhG,GAAI2B,EACJ36B,EAAGg/B,EACH/F,GAAI0B,EACJzB,EAAG8F,EACH7F,GAAIwB,EACJvB,EAAG4F,EACH3F,GAAIsB,GAERrB,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,IAAIgW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,SAAU,UAAW,WAC1Bh9C,EAAG,CAAC,cAAe,iBACnBi9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAettD,GACxC,IAAI0yD,EAAUH,EAAWC,MAAMxyD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+jD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjDnW,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFttC,MACvF,KAEJutC,YAAa,2DAA2DvtC,MACpE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgB3xD,KAAKm0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAIoG,EAAWzC,UACf3gD,EAAGojD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx8B,EAAG,MACHi5B,GAAIgG,EAAWzC,UACftD,EAAG,SACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IttC,MAClJ,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJoyC,YAAa,yCACbK,kBAAmB,yCACnBb,iBAAkB,yCAClBc,uBAAwB,yCACxBlF,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,wBAAwBztC,MAAM,KAC7C0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI,YACJh9C,EAAG,YACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,QACHi5B,GAAI,QACJC,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,kBACH40C,GAAI,aACJh9C,EAAG,cACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,aACHC,GAAI,YACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnFyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFttC,MAC7F,KAEJutC,YAAa,yEAAyEvtC,MAClF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,wEAAwExtC,MAC9E,KAEJytC,cAAe,2CAA2CztC,MAAM,KAChE0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,eACHi9C,GAAI,cACJC,EAAG,eACHC,GAAI,cACJh5B,EAAG,YACHi5B,GAAI,WACJC,EAAG,WACHC,GAAI,UACJC,EAAG,WACHC,GAAI,WAER/B,cAAe,gDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACrB,iBAAb5C,GACa,eAAbA,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,YA7EmBrzD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,SAASuT,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,OAAQvtD,GACJ,IAAK,IACD,OAAOstD,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAOR,GAAUQ,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,QACI,OAAOR,GAIVvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,+LAA+LttC,MACnM,KAEJutC,YAAa,6EAA6EvtC,MACtF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVZ,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAiB,OAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,QACI,OAAOA,MAhGezyD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAAS4E,EAAe7F,EAAQQ,EAAe5tD,EAAQ6tD,GACnD,IAAI2C,EAAS,GACb,GAAI5C,EACA,OAAQ5tD,GACJ,IAAK,IACDwwD,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQxwD,GACJ,IAAK,IACDwwD,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAOhhD,QAAQ,MAAO49C,GAGxBvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,gFAAgFvtC,MACzF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAGo7C,EACHxG,GAAIwG,EACJxjD,EAAGwjD,EACHvG,GAAIuG,EACJtG,EAAGsG,EACHrG,GAAIqG,EACJr/B,EAAGq/B,EACHpG,GAAIoG,EACJnG,EAAGmG,EACHlG,GAAIkG,EACJjG,EAAGiG,EACHhG,GAAIgG,GAER7E,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,qCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,GAAqC,UAAbA,EACjB4C,EAEM,WAAb5C,GACa,aAAbA,GACa,WAAbA,EAEO4C,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,GAQX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,GAAQ,GAAKA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvMyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,oFAAoFttC,MACxF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN30C,EAAG,gBACH40C,GAAI,UACJh9C,EAAG,UACHi9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFttC,MACxF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,6CAA6CxtC,MAAM,KAC7DytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN30C,EAAG,gBACH40C,GAAI,UACJh9C,EAAG,UACHi9C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,iEAAiExtC,MACvE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,eACH40C,GAAI,aACJh9C,EAAG,SACHi9C,GAAI,YACJC,EAAG,SACHC,GAAI,aACJh5B,EAAG,UACHi5B,GAAI,YACJC,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,mDAAmDvtC,MAAM,KACtEwtC,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,2BAA2BztC,MAAM,KAChD0tC,YAAa,2BAA2B1tC,MAAM,KAE9CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACN30C,EAAG,kBACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,OACHC,GAAI,OACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzB42C,KAAM,CACFC,IAAK,EACLC,IAAK,KAvFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,WACJiC,EAAG,SACHC,GAAI,UACJjC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFttC,MAC3F,KAEJutC,YAAa,uEAAuEvtC,MAChF,KAEJ6xC,kBAAkB,EAClBrE,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,0CAA0CztC,MAAM,KAC/D0tC,YAAa,4BAA4B1tC,MAAM,KAC/CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVsC,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAGzBy0C,cAAe,yBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,QAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,WACN30C,EAAG,YACH40C,GAAI,aACJh9C,EAAG,WACHi9C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAtHyB5yD,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIzB,IAAI4U,EAAsB,6DAA6Dl0C,MAC/E,KAEJm0C,EAAyB,kDAAkDn0C,MACvE,KAEJmyC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAEP9S,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqvC,EAAuBjiD,EAAEshD,SAEzBU,EAAoBhiD,EAAEshD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6DxtC,MACnE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAI4U,EAAsB,6DAA6Dl0C,MAC/E,KAEJm0C,EAAyB,kDAAkDn0C,MACvE,KAEJmyC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAET9S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,SAAUr7C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqvC,EAAuBjiD,EAAEshD,SAEzBU,EAAoBhiD,EAAEshD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6DxtC,MACnE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN30C,EAAG,oBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJh5B,EAAG,UACHi5B,GAAI,WACJiC,EAAG,WACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArGyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFttC,MACzF,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,qDAAqDxtC,MAAM,KACrEytC,cAAe,+BAA+BztC,MAAM,KACpD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN30C,EAAG,eACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,WACJiC,EAAG,UACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5yD,CAAQ,EAAQ,+FCElD,SAAWkiD,GAAU,aAIbA,EAAO+N,aAAa,SAAU,CACtCC,OAAQ,CACJ6D,WAAY,qFAAqFnxC,MAC7F,KAEJ8E,OAAQ,sHAAsH9E,MAC1H,KAEJoxC,SAAU,mBAEd7D,YAAa,+DAA+DvtC,MACxE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,4BACLyE,IAAK,mBACLxE,KAAM,iCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN30C,EAAG,gBACH40C,GAAI,cACJh9C,EAAG,aACHi9C,GAAI,aACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,WACJC,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFxR,EAAO+N,aAAa,QAAS,CAEpCC,OAAQ,sEAAsEttC,MAC1E,KAEJutC,YAAa,sEAAsEvtC,MAC/E,KAEJwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,iCAAiCztC,MAAM,KACtD0tC,YAAa,iCAAiC1tC,MAAM,KACpDiuC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN30C,EAAG,YACH40C,GAAI,WACJh9C,EAAG,UACHi9C,GAAI,UACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAKzBy0C,cAAe,uBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIqW,EAAmB,mGAAmG31C,MAClH,KAEJ41C,EAAmB,qGAAqG51C,MACpH,KAEJmyC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASe,EAAOz1C,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,EAE3D,SAASo1C,EAAUhD,EAAQQ,EAAettD,GACtC,IAAIS,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,KACD,OAAOS,GAAU0vD,EAAOrD,GAAU,UAAY,UAClD,IAAK,IACD,OAAOQ,EAAgB,SAAW,SACtC,IAAK,KACD,OAAO7sD,GAAU0vD,EAAOrD,GAAU,SAAW,SACjD,IAAK,IACD,OAAOQ,EAAgB,UAAY,UACvC,IAAK,KACD,OAAO7sD,GAAU0vD,EAAOrD,GAAU,UAAY,UAClD,IAAK,KACD,OAAOrsD,GAAU0vD,EAAOrD,GAAU,WAAa,WACnD,IAAK,KACD,OAAOrsD,GAAU0vD,EAAOrD,GAAU,WAAa,YACnD,IAAK,KACD,OAAOrsD,GAAU0vD,EAAOrD,GAAU,OAAS,QAI9CvQ,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,SAAUgG,EAAgBxuC,GAC9B,OAAKwuC,EAEM,SAASjzC,KAAKyE,GACd8wC,EAAiBtC,EAAeE,SAEhCmC,EAAiBrC,EAAeE,SAJhCmC,GAOfpI,YAAa,kDAAkDvtC,MAAM,KACrEmyC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,6DAA6DxtC,MACnE,KAEJytC,cAAe,2BAA2BztC,MAAM,KAChD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,oBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,eACH40C,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAG,UACHi5B,GAAI,SACJiC,EAAG,UACHC,GAAIqB,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,MACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,iFAAiFxtC,MACvF,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf3xD,KAAKm0D,OAA8B,IAAfn0D,KAAKm0D,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN30C,EAAG,kBACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTkE,YAAa,kBAxDqB12D,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FttC,MAC/F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,iFAAiFxtC,MACvF,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf3xD,KAAKm0D,OAA8B,IAAfn0D,KAAKm0D,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN30C,EAAG,WACH40C,GAAI,cACJh9C,EAAG,YACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIzB,SAAS0R,EAAuBnB,EAAQQ,EAAettD,GACnD,IASI8yD,EAAY,IAIhB,OAHIhG,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzDgG,EAAY,QAEThG,EAASgG,EAbH,CACL3G,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJkC,GAAI,YACJhC,GAAI,OACJE,GAAI,OAMuB3sD,GAG9Bu8C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGttC,MACxG,KAEJutC,YAAa,+DAA+DvtC,MACxE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACN30C,EAAG,iBACH40C,GAAI8B,EACJ9+C,EAAG,WACHi9C,GAAI6B,EACJ5B,EAAG,QACHC,GAAI2B,EACJ36B,EAAG,OACHi5B,GAAI0B,EACJO,EAAG,cACHC,GAAIR,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,QACHC,GAAIsB,GAERlB,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAYzB,SAAS0R,EAAuBnB,EAAQQ,EAAettD,GAUnD,MAAY,MAARA,EACOstD,EAAgB,SAAW,SAE3BR,EAAS,KArBFoB,GAqB6BpB,EApB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,sBAAwB,sBAC5ChB,GAAI,iBACJC,GAAI,gBACJkC,GAAI,uBACJhC,GAAI,uBACJE,GAAI,gBAKgC3sD,GApBvBid,MAAM,KAChBixC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAuBR,IAAIiB,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMK7S,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,oFAAoF9E,MACxF,KAEJmxC,WAAY,kFAAkFnxC,MAC1F,MAGRutC,YAAa,CAETzoC,OAAQ,gEAAgE9E,MACpE,KAEJmxC,WAAY,gEAAgEnxC,MACxE,MAGRwtC,SAAU,CACN2D,WAAY,gEAAgEnxC,MACxE,KAEJ8E,OAAQ,gEAAgE9E,MACpE,KAEJoxC,SAAU,iDAEd3D,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CmyC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAGlBC,YAAa,2MAGbR,iBAAkB,2MAGlBa,kBAAmB,wHAGnBC,uBAAwB,6FACxBzE,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAUkG,GAChB,GAAIA,EAAI/E,SAAW5yD,KAAK4yD,OAcpB,OAAmB,IAAf5yD,KAAKm0D,MACE,oBAEA,mBAhBX,OAAQn0D,KAAKm0D,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+BAUvBxC,SAAU,SAAUgG,GAChB,GAAIA,EAAI/E,SAAW5yD,KAAK4yD,OAcpB,OAAmB,IAAf5yD,KAAKm0D,MACE,oBAEA,mBAhBX,OAAQn0D,KAAKm0D,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BAUvBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI8B,EACJ9+C,EAAG8+C,EACH7B,GAAI6B,EACJ5B,EAAG,MACHC,GAAI2B,EACJ36B,EAAG,OACHi5B,GAAI0B,EACJO,EAAG,SACHC,GAAIR,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,wBACfC,KAAM,SAAU99C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1MyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJwI,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAElDxW,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAU99C,GACZ,MAAO,QAAUA,GAErB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN30C,EAAG,YACH40C,GAAI,WACJh9C,EAAG,SACHi9C,GAAI,SACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,WACHi5B,GAAI,WACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,mJAAmJttC,MACvJ,KAEJutC,YAAa,6DAA6DvtC,MACtE,KAEJwtC,SAAU,6EAA6ExtC,MACnF,KAEJytC,cAAe,mCAAmCztC,MAAM,KACxD0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN30C,EAAG,mBACH40C,GAAI,eACJh9C,EAAG,eACHi9C,GAAI,cACJC,EAAG,cACHC,GAAI,aACJh5B,EAAG,cACHi5B,GAAI,cACJC,EAAG,aACHC,GAAI,WACJC,EAAG,aACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAKhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,kGAAkGttC,MACtG,KAEJutC,YAAa,wDAAwDvtC,MACjE,KAEJwtC,SAAU,gEAAgExtC,MACtE,KAEJytC,cAAe,gCAAgCztC,MAAM,KACrD0tC,YAAa,qBAAqB1tC,MAAM,KACxCwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,eACH40C,GAAI,WACJh9C,EAAG,YACHi9C,GAAI,cACJC,EAAG,MACHC,GAAI,SACJh5B,EAAG,OACHi5B,GAAI,SACJC,EAAG,OACHC,GAAI,SACJC,EAAG,MACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,SAEpBlC,cAAe,4BACfC,KAAM,SAAU99C,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,GAE/B+9C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,OAAS,UAEnBA,EAAU,QAAU,aAjED5wD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,oFAAoFttC,MACzF,KAEJutC,EAAc,kDAAkDvtC,MAAM,KAC1E,SAASkzC,EAAOz1C,GACZ,OAAOA,EAAI,GAAKA,EAAI,EAExB,SAASo1C,EAAUhD,EAAQQ,EAAettD,EAAKutD,GAC3C,IAAI9sD,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,IACD,OAAOstD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,UAAY,UAEvCrsD,EAAS,YAExB,IAAK,IACD,OAAO6sD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,SAEtCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,SAAW,SAEtCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,MAAQ,OAEnCrsD,EAAS,QAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,SAAW,WAClD,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,UAAY,YAEvCrsD,EAAS,WAExB,IAAK,IACD,OAAO6sD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9sD,GAAU0vD,EAAOrD,GAAU,OAAS,SAEpCrsD,EAAS,SAKvB87C,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACbC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAGu4C,EACH3D,GAAI2D,EACJ3gD,EAAG2gD,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx8B,EAAGw8B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7IyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAI9sD,EAASqsD,EAAS,IACtB,OAAQ9sD,GACJ,IAAK,IACD,OAAOstD,GAAiBC,EAClB,eACA,kBACV,IAAK,KAUD,OARI9sD,GADW,IAAXqsD,EACUQ,EAAgB,UAAY,UACpB,IAAXR,EACGQ,GAAiBC,EAAW,UAAY,WAC3CT,EAAS,EACNQ,GAAiBC,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOD,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARI7sD,GADW,IAAXqsD,EACUQ,EAAgB,SAAW,SACnB,IAAXR,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOD,EAAgB,UAAY,UACvC,IAAK,KAUD,OARI7sD,GADW,IAAXqsD,EACUQ,EAAgB,MAAQ,MAChB,IAAXR,EACGQ,GAAiBC,EAAW,MAAQ,QACvCT,EAAS,EACNQ,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOD,GAAiBC,EAAW,SAAW,YAClD,IAAK,KAQD,OANI9sD,GADW,IAAXqsD,EACUQ,GAAiBC,EAAW,MAAQ,OAC5B,IAAXT,EACGQ,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,eACpD,IAAK,KAUD,OARI9sD,GADW,IAAXqsD,EACUQ,GAAiBC,EAAW,QAAU,UAC9B,IAAXT,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,aACpD,IAAK,KAUD,OARI9sD,GADW,IAAXqsD,EACUQ,GAAiBC,EAAW,OAAS,QAC7B,IAAXT,EACGQ,GAAiBC,EAAW,OAAS,SACxCT,EAAS,EACNQ,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,SAMrDhR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxKyB5yD,CAAQ,EAAQ,2FCKlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFttC,MACpF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,4DAA4DxtC,MAClE,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,mBAAmB1tC,MAAM,KACtCwwC,oBAAoB,EACpB7C,cAAe,QACfC,KAAM,SAAU99C,GACZ,MAA2B,MAApBA,EAAMnN,OAAO,IAExBkrD,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAOF,EAAQ,GAAK,KAAO,MAE/BG,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,aACN30C,EAAG,eACH40C,GAAI,aACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,UACHC,GAAI,SACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB5yD,CAAQ,EAAQ,gGCElD,SAAWkiD,GAAU,aAIzB,IAAIgW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3Bh9C,EAAG,CAAC,cAAe,gBACnBi9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAettD,GACxC,IAAI0yD,EAAUH,EAAWC,MAAMxyD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+jD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAM7CnW,EAAO+N,aAAa,UAAW,CACxCC,OAAQ,mFAAmFttC,MACvF,KAEJutC,YAAa,2DAA2DvtC,MACpE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgB3xD,KAAKm0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,mBACH40C,GAAIoG,EAAWzC,UACf3gD,EAAGojD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx8B,EAAG,MACHi5B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIgW,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3Bh9C,EAAG,CAAC,cAAe,gBACnBi9C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAettD,GACxC,IAAI0yD,EAAUH,EAAWC,MAAMxyD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+jD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjDnW,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFttC,MACvF,KAEJutC,YAAa,2DAA2DvtC,MACpE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzxD,KAAKm0D,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgB3xD,KAAKm0D,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN30C,EAAG,mBACH40C,GAAIoG,EAAWzC,UACf3gD,EAAGojD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx8B,EAAG,MACHi5B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB5yD,CAAQ,EAAQ,2FCElD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,mHAAmHttC,MACvH,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,sEAAsExtC,MAC5E,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACN30C,EAAG,qBACH40C,GAAI,cACJh9C,EAAG,SACHi9C,GAAI,aACJC,EAAG,SACHC,GAAI,aACJh5B,EAAG,UACHi5B,GAAI,cACJC,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAER/B,cAAe,mCACfE,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGf6D,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,YAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAb5C,GAA0C,YAAbA,EACvB,IAAT4C,EACO,EAEJA,EAAO,QAJX,GAOXd,uBAAwB,UACxBC,QAAS,KACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,oDAAoDxtC,MAAM,KACpEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNwE,IAAK,mBACLC,KAAM,wBAEVxE,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,eACN30C,EAAG,iBACH40C,GAAI,cACJh9C,EAAG,WACHi9C,GAAI,aACJC,EAAG,WACHC,GAAI,YACJh5B,EAAG,SACHi5B,GAAI,WACJC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,GAEM,IAANA,EADA,KAIA,OAIlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFttC,MAC1F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN30C,EAAG,aACH40C,GAAI,aACJh9C,EAAG,cACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,WACJh5B,EAAG,YACHi5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIsR,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJxR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,0FAA0FvtC,MACnG,KAEJwtC,SAAU,8FAA8FxtC,MACpG,KAEJytC,cAAe,mDAAmDztC,MAC9D,KAEJ0tC,YAAa,sBAAsB1tC,MAAM,KACzCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN30C,EAAG,oBACH40C,GAAI,eACJh9C,EAAG,cACHi9C,GAAI,gBACJC,EAAG,gBACHC,GAAI,eACJh5B,EAAG,WACHi5B,GAAI,aACJC,EAAG,YACHC,GAAI,cACJC,EAAG,aACHC,GAAI,eAERC,uBAAwB,aACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBgB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO43C,EAAU53C,OAGzBy3C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO03C,EAAU13C,OAIzBy0C,cAAe,wCACfE,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAGfkB,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,GAAqC,SAAbA,GAEX,YAAbA,GACA4C,GAAQ,GAFRA,EAIAA,EAAO,IAGtBX,KAAM,CACFC,IAAK,EACLC,IAAK,KA/HyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,mEAAmEvtC,MAC5E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,8DAA8DxtC,MACpE,KAEJytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,qBAAqB1tC,MAAM,KACxCiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN30C,EAAG,iBACH40C,GAAI,aACJh9C,EAAG,YACHi9C,GAAI,cACJC,EAAG,SACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,YACJC,EAAG,SACHC,GAAI,WACJC,EAAG,cACHC,GAAI,iBAERC,uBAAwB,WACxBC,QAAS,MACTjC,cAAe,iCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,aAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApFyB5yD,CAAQ,EAAQ,4FCKlD,SAAWkiD,GAAU,aAIfA,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,iCAAiCztC,MAAM,KACtD0tC,YAAa,yBAAyB1tC,MAAM,KAC5CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,YACHi5B,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB5yD,CAAQ,EAAQ,2FCClD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGAzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,qFAAqF9E,MACzF,KAEJmxC,WAAY,yEAAyEnxC,MACjF,MAGRutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,SACN30C,EAAG,eACHpI,EAAG,YACHi9C,GAAI,YACJC,EAAG,UACHC,GAAI,UACJh5B,EAAG,SACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAER/B,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,QAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,OAGfd,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlHyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGttC,MACxG,KAEJutC,YAAa,iEAAiEvtC,MAC1E,KAEJ6xC,kBAAkB,EAClBrE,SAAU,iDAAiDxtC,MAAM,KACjEytC,cAAe,8CAA8CztC,MAAM,KACnE0tC,YAAa,yBAAyB1tC,MAAM,KAC5CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVZ,cAAe,wBACfC,KAAM,SAAU99C,GACZ,MAAiB,eAAVA,GAEX+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN30C,EAAG,eACH40C,GAAI,YACJh9C,EAAG,SACHi9C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJh5B,EAAG,QACHi5B,GAAI,SACJiC,EAAG,YACHC,GAAI,aACJjC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,WA9D0BtyD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EttC,MACnF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN30C,EAAG,iBACHpI,EAAG,YACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl1C,EAAIk1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp2C,IAAMo2C,EAFvBlB,EAAS,IAAOl1C,IAEsBo2C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzFyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,wBAAwB1tC,MAAM,KAC3CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN30C,EAAG,gBACH40C,GAAI,aACJh9C,EAAG,eACHi9C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh5B,EAAG,aACHi5B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5yD,CAAQ,EAAQ,4FCGlD,SAAWkiD,GAAU,aAIzB,IAAIyW,EAAe,iDAAiD/1C,MAAM,KA4B1E,SAAS6yC,EAAUhD,EAAQQ,EAAe5tD,EAAQ6tD,GAC9C,IAAI0F,EAiBR,SAAsBnG,GAClB,IAAIoG,EAAUj3C,KAAKk3C,MAAOrG,EAAS,IAAQ,KACvCsG,EAAMn3C,KAAKk3C,MAAOrG,EAAS,IAAO,IAClCuG,EAAMvG,EAAS,GACfwG,EAAO,GAUX,OATIJ,EAAU,IACVI,GAAQN,EAAaE,GAAW,SAEhCE,EAAM,IACNE,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaI,GAAO,OAEvDC,EAAM,IACNC,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaK,IAEpC,KAATC,EAAc,OAASA,EA/BbC,CAAazG,GAC9B,OAAQptD,GACJ,IAAK,KACD,OAAOuzD,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QAqBtB1W,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,kMAAkMttC,MACtM,KAEJutC,YAAa,0HAA0HvtC,MACnI,KAEJ6xC,kBAAkB,EAClBrE,SAAU,2DAA2DxtC,MACjE,KAEJytC,cAAe,2DAA2DztC,MACtE,KAEJ0tC,YAAa,2DAA2D1tC,MACpE,KAEJiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEdC,aAAc,CACVC,OA/FR,SAAyBiE,GACrB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAO7nD,QAAQ,OACTmrD,EAAKv3D,MAAM,GAAI,GAAK,OACO,IAA3Bi0D,EAAO7nD,QAAQ,OACfmrD,EAAKv3D,MAAM,GAAI,GAAK,OACO,IAA3Bi0D,EAAO7nD,QAAQ,OACfmrD,EAAKv3D,MAAM,GAAI,GAAK,MACpBu3D,EAAO,QAuFbtH,KAnFR,SAAuBgE,GACnB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAO7nD,QAAQ,OACTmrD,EAAKv3D,MAAM,GAAI,GAAK,OACO,IAA3Bi0D,EAAO7nD,QAAQ,OACfmrD,EAAKv3D,MAAM,GAAI,GAAK,OACO,IAA3Bi0D,EAAO7nD,QAAQ,OACfmrD,EAAKv3D,MAAM,GAAI,GAAK,MACpBu3D,EAAO,QA2Ebj8C,EAAG,UACH40C,GAAI2D,EACJ3gD,EAAG,UACHi9C,GAAI0D,EACJzD,EAAG,UACHC,GAAIwD,EACJx8B,EAAG,UACHi5B,GAAIuD,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,UACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3HyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIzB,IAAIyR,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCzR,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EttC,MACjF,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,wDAAwDxtC,MAC9D,KAEJytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1C6tC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCL,cAAe,cACfC,KAAM,SAAU99C,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,GAE7Bm+C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN30C,EAAG,gBACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJiC,EAAG,YACHC,GAAI,WACJjC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl1C,EAAIk1C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp2C,IAAMo2C,EAFvBlB,EAAS,IAAOl1C,IAEsBo2C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5yD,CAAQ,EAAQ,4FCGlD,SAAWkiD,GAAU,aAiEzB,SAAS6T,EAAoBtD,EAAQQ,EAAettD,EAAKutD,GACrD,IAAIxrC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,mBACvB40C,GAAI,CAACW,EAAS,WAAiBA,EAAS,YACxC39C,EAAG,CAAC,UAAW,cACfi9C,GAAI,CAACU,EAAS,SAAeA,EAAS,UACtCT,EAAG,CAAC,UAAW,eACfC,GAAI,CAACQ,EAAS,SAAeA,EAAS,UACtCx5B,EAAG,CAAC,UAAW,eACfi5B,GAAI,CAACO,EAAS,SAAeA,EAAS,UACtCN,EAAG,CAAC,SAAU,aACdC,GAAI,CAACK,EAAS,SAAeA,EAAS,UACtCJ,EAAG,CAAC,QAAS,YACbC,GAAI,CAACG,EAAS,OAAaA,EAAS,SAExC,OAAOS,GAEDD,EADAvrC,EAAO/hB,GAAK,GAGZ+hB,EAAO/hB,GAAK,GA9EZu8C,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,sFAAsFttC,MAC1F,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,sDAAsDxtC,MAAM,KACtEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVZ,cAAe,aACfC,KAAM,SAAU99C,GACZ,MAAO,QAAUA,EAAMsU,eAE3BypC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjCQ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACN30C,EAAG64C,EACHjE,GAAIiE,EACJjhD,EAAGihD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ98B,EAAG88B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB5yD,CAAQ,EAAQ,iGCElD,SAAWkiD,GAAU,aAIXA,EAAO+N,aAAa,WAAY,CAC1CC,OAAQ,wFAAwFttC,MAC5F,KAEJutC,YAAa,wFAAwFvtC,MACjG,KAEJwtC,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,kDAAkDztC,MAAM,KACvE0tC,YAAa,kDAAkD1tC,MAAM,KACrEiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,UACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJh5B,EAAG,MACHi5B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyB5yD,CAAQ,EAAQ,4FCGlD,SAAWkiD,GAAU,aAIfA,EAAO+N,aAAa,MAAO,CACjCC,OAAQ,kFAAkFttC,MACtF,KAEJutC,YAAa,kFAAkFvtC,MAC3F,KAEJwtC,SAAU,kDAAkDxtC,MAAM,KAClEytC,cAAe,kDAAkDztC,MAAM,KACvE0tC,YAAa,kDAAkD1tC,MAAM,KACrEiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACN30C,EAAG,OACH40C,GAAI,UACJh9C,EAAG,QACHi9C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJh5B,EAAG,MACHi5B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyB5yD,CAAQ,EAAQ,8FCGlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,sFAAsFttC,MAC1F,KAEJutC,YAAa,sFAAsFvtC,MAC/F,KAEJwtC,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVZ,cAAe,qDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGM,eAAb5C,GACa,UAAbA,GACa,iBAAbA,EAEO4C,EACa,iBAAb5C,GAA4C,QAAbA,EAC/B4C,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,OAGfhI,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN30C,EAAG,eACH40C,GAAI,YACJh9C,EAAG,YACHi9C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAGRC,uBAAwB,6BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBgB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CAEFC,IAAK,EACLC,IAAK,KA5GyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAYzB,SAAS0R,EAAuBnB,EAAQQ,EAAettD,GASnD,MAAY,MAARA,EACOstD,EAAgB,UAAY,UACpB,MAARttD,EACAstD,EAAgB,SAAW,SAE3BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,sBAAwB,sBAC5Cf,GAAI,gBACJE,GAAI,wBACJE,GAAI,kBAOgC3sD,GArBvBid,MAAM,KAChBixC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAsDR,SAASuF,EAAqBvoD,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBhR,KAAK4wD,QAAiB,IAAM,IAAM,QAIrDxO,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,CACJxoC,OAAQ,yFAAyF9E,MAC7F,KAEJmxC,WAAY,iGAAiGnxC,MACzG,MAGRutC,YAAa,yDAAyDvtC,MAClE,KAEJwtC,SAhDJ,SAA6Bt7C,EAAG4S,GAC5B,IAAI0oC,EAAW,CACPkJ,WAAY,0DAA0D12C,MAClE,KAEJ22C,WAAY,0DAA0D32C,MAClE,KAEJ42C,SAAU,4DAA4D52C,MAClE,MAKZ,OAAU,IAAN9N,EACOs7C,EAAqB,WACvBxuD,MAAM,EAAG,GACTM,OAAOkuD,EAAqB,WAAExuD,MAAM,EAAG,IAE3CkT,EASEs7C,EALI,qBAAqBntC,KAAKyE,GAC/B,aACA,sCAAsCzE,KAAKyE,GAC3C,WACA,cACoB5S,EAAEm/C,OARjB7D,EAAqB,YA6BhCC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAASgI,EAAqB,cAC9B/H,QAAS+H,EAAqB,YAC9B7H,QAAS6H,EAAqB,WAC9B9H,SAAU8H,EAAqB,cAC/B5H,SAAU,WACN,OAAQ3xD,KAAKm0D,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOoF,EAAqB,oBAAoBx3D,KAAK/B,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOu5D,EAAqB,qBAAqBx3D,KAAK/B,QAGlE4xD,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN30C,EAAG,kBACH40C,GAAI8B,EACJ9+C,EAAG8+C,EACH7B,GAAI6B,EACJ5B,EAAG,SACHC,GAAI2B,EACJ36B,EAAG,OACHi5B,GAAI0B,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAGRrD,cAAe,wBACfC,KAAM,SAAU99C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhKyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIzB,IAAIgO,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJwI,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpDxW,EAAO+N,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAU99C,GACZ,MAAO,QAAUA,GAErB+9C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN30C,EAAG,YACH40C,GAAI,WACJh9C,EAAG,UACHi9C,GAAI,SACJC,EAAG,YACHC,GAAI,WACJh5B,EAAG,SACHi5B,GAAI,QACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUpuD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC0+C,WAAY,SAAUluD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC69C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB5yD,CAAQ,EAAQ,gGCElD,SAAWkiD,GAAU,aAIZA,EAAO+N,aAAa,UAAW,CACxCC,OAAQ,6EAA6EttC,MACjF,KAEJutC,YAAa,oDAAoDvtC,MAAM,KACvEwtC,SAAU,+DAA+DxtC,MACrE,KAEJytC,cAAe,kCAAkCztC,MAAM,KACvD0tC,YAAa,yBAAyB1tC,MAAM,KAC5CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACN30C,EAAG,SACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEttC,MAC7E,KAEJutC,YAAa,kDAAkDvtC,MAAM,KACrEwtC,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,8BAA8BztC,MAAM,KACnD0tC,YAAa,uBAAuB1tC,MAAM,KAC1CiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACN30C,EAAG,SACH40C,GAAI,YACJh9C,EAAG,aACHi9C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh5B,EAAG,UACHi5B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB5yD,CAAQ,EAAQ,2FCIlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGttC,MACzG,KAEJutC,YAAa,sFAAsFvtC,MAC/F,KAEJ6xC,kBAAkB,EAClBrE,SAAU,yDAAyDxtC,MAC/D,KAEJytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,uBAAuB1tC,MAAM,KAC1CwwC,oBAAoB,EACpB7C,cAAe,SACfC,KAAM,SAAU99C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExB+9C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACN5+B,EAAG,YACHmjC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,WACH40C,GAAI,UACJh9C,EAAG,WACHi9C,GAAI,UACJC,EAAG,UACHC,GAAI,SACJh5B,EAAG,WACHi5B,GAAI,UACJiC,EAAG,WACHC,GAAI,UACJjC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KA5EyB5yD,CAAQ,EAAQ,iGCElD,SAAWkiD,GAAU,aAIXA,EAAO+N,aAAa,WAAY,CAC1CC,OAAQ,6GAA6GttC,MACjH,KAEJutC,YAAa,8DAA8DvtC,MACvE,KAEJ6xC,kBAAkB,EAClBrE,SAAU,yEAAyExtC,MAC/E,KAEJytC,cAAe,qCAAqCztC,MAAM,KAC1D0tC,YAAa,4BAA4B1tC,MAAM,KAC/CwwC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN30C,EAAG,mBACH40C,GAAI,eACJh9C,EAAG,aACHi9C,GAAI,eACJC,EAAG,YACHC,GAAI,YACJh5B,EAAG,SACHi5B,GAAI,WACJC,EAAG,YACHC,GAAI,cACJC,EAAG,UACHC,GAAI,aAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/zC,EAAI+zC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/zC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBg0C,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB5yD,CAAQ,EAAQ,2FCGlD,SAAWkiD,GAAU,aAIhBA,EAAO+N,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FttC,MAC9F,KAEJutC,YAAa,gEAAgEvtC,MAAM,KACnFwtC,SAAU,uDAAuDxtC,MAAM,KACvEytC,cAAe,sCAAsCztC,MAAM,KAC3D0tC,YAAa,2BAA2B1tC,MAAM,KAC9CiuC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN30C,EAAG,oBACH40C,GAAI,WACJh9C,EAAG,cACHi9C,GAAI,aACJC,EAAG,cACHC,GAAI,aACJh5B,EAAG,WACHi5B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,gBACxBC,QAAS,UACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5yD,CAAQ,EAAQ,8FCKlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wCAAwCttC,MAC5C,KAEJutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5+B,EAAG,WACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAW5yD,KAAK4yD,OACb,WAEA,YAGflB,QAAS,SACTC,SAAU,SAAUgG,GAChB,OAAI33D,KAAK4yD,SAAW+E,EAAI/E,OACb,WAEA,YAGfhB,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,OACJh9C,EAAG,OACHi9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh5B,EAAG,MACHi5B,GAAI,OACJiC,EAAG,MACHC,GAAI,OACJjC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,QAERI,KAAM,CAEFC,IAAK,EACLC,IAAK,KApHyB5yD,CAAQ,EAAQ,8FCIlD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wCAAwCttC,MAC5C,KAEJutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5+B,EAAG,WACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,OACJh9C,EAAG,OACHi9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh5B,EAAG,MACHi5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtyD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wCAAwCttC,MAC5C,KAEJutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5+B,EAAG,WACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,OACJh9C,EAAG,OACHi9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh5B,EAAG,MACHi5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtyD,CAAQ,EAAQ,8FCElD,SAAWkiD,GAAU,aAIdA,EAAO+N,aAAa,QAAS,CACpCC,OAAQ,wCAAwCttC,MAC5C,KAEJutC,YAAa,yCAAyCvtC,MAClD,KAEJwtC,SAAU,8BAA8BxtC,MAAM,KAC9CytC,cAAe,uBAAuBztC,MAAM,KAC5C0tC,YAAa,gBAAgB1tC,MAAM,KACnCiuC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN5+B,EAAG,WACHmjC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN30C,EAAG,KACH40C,GAAI,OACJh9C,EAAG,OACHi9C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh5B,EAAG,MACHi5B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtyD,CAAQ,EAAQ,wGCP1D,IAAIyO,EAAM,CACT,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,WAAY,yCACZ,cAAe,yCACf,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,QAAS,sCACT,aAAc,2CACd,gBAAiB,2CACjB,WAAY,sCACZ,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,yCAIf,SAASgrD,EAAeC,GACvB,IAAIvuD,EAAKwuD,EAAsBD,GAC/B,OAAOE,EAAoBzuD,GAE5B,SAASwuD,EAAsBD,GAC9B,IAAIE,EAAoBl1C,EAAEjW,EAAKirD,GAAM,CACpC,IAAIt3C,EAAI,IAAI7P,MAAM,uBAAyBmnD,EAAM,KAEjD,MADAt3C,EAAEy3C,KAAO,mBACHz3C,EAEP,OAAO3T,EAAIirD,GAEZD,EAAenmD,KAAO,WACrB,OAAOD,OAAOC,KAAK7E,IAEpBgrD,EAAehtD,QAAUktD,EACzB/5D,EAAOovD,QAAUyK,EACjBA,EAAetuD,GAAK,8GClSnB,IAASoS,EAAAA,EAAqiI8I,OAAOF,SAAziIxmB,QAAQC,OAAO,eAAe,IAAI0E,MAAM,eAAe,CAACo5C,OAAM,IAAKryC,OAAO,CAAC,mBAAmB,SAASkS,GAAG5d,QAAQ+M,UAAU6Q,EAAEu8C,0BAA0Bv8C,EAAEu8C,yBAAyB,sCAAsCv8C,EAAEw8C,2BAA2B,yCAAyCp6D,QAAQC,OAAO,mBAAmB,CAAC,mBAAmBD,QAAQC,OAAO,iBAAiB,IAAID,QAAQC,OAAO,QAAQ,CAAC,eAAe,iBAAiB,mBAAmB,eAAwEA,EAAOovD,UAAUA,IAAUpvD,EAAOovD,QAAQ,SAASrvD,QAAQC,OAAO,kBAAkB2X,QAAQ,MAAM,CAAC,KAAK,SAASgG,GAAG,IAAImB,EAAE,OAAaua,EAAE,CAAC,MAAM,KAAI,MAAM,KAAK,MAAM,KAAI,MAAM,KAAK,MAAM,MAAMn5B,KAAKk6D,eAAe,SAASz8C,EAAEmB,GAAG,MAAM,WAAWA,EAAEu7C,YAAYn6D,KAAKo6D,QAAQ38C,GAAGA,EAAE48C,iBAAiB,MAAMz7C,EAAEu7C,YAAYn6D,KAAKo6D,QAAQ38C,GAAGA,EAAE3I,WAAWC,QAAQ,IAAI6J,EAAEu7C,YAAY,iBAAiB18C,GAAGA,EAAEA,EAAE1I,QAAQ,KAAK,OAAO6J,EAAE07C,cAAc78C,EAAEvP,QAAQ,MAAM,GAAGuP,EAAEvP,QAAQ,OAAO,GAAGuP,EAAEvP,QAAQ,OAAO,KAAKuP,EAAEmB,EAAE27C,SAAS98C,EAAEmB,EAAE27C,UAAU98C,GAAG,kBAAkBA,EAAEA,EAAE,OAAO,QAAQA,GAAGzd,KAAKo6D,QAAQ,SAAS38C,GAAG,OAAOA,IAAIA,KAAK+8C,SAAS/8C,IAAIwU,QAAQxU,EAAE,KAAKzd,KAAKke,UAAU,SAASib,EAAE7W,GAAG,IAAI+wC,EAAE51C,EAAExR,QAAQ4R,EAAE7d,KAAKkyD,EAAE,GAAG70C,EAAE,GAAGK,EAAED,EAAExN,KAAKkpB,GAAGpuB,MAAK,SAAS0S,GAA6C,IAAI0b,EAAEzb,EAA7C7d,QAAQ+M,UAAU0V,EAAEm4C,SAASn4C,EAAEm4C,SAAgBthC,EAAE,GAAGt5B,QAAQkB,QAAQuhB,EAAEm4C,QAAO,SAASh9C,GAAGzd,KAAKS,KAAKod,EAAEq8C,eAAez8C,EAAE6E,MAAK6W,GAAGzb,EAAEyb,EAAElmB,KAAKqP,EAAEo4C,SAASp4C,EAAEo4C,SAAS,KAAKr9C,GAAGK,EAAEkB,GAAE,IAAsI6T,EAAEzd,EAApIwI,EAAE,GAAM3d,QAAQmS,QAAQyL,GAAGD,EAAEC,EAAE5d,QAAQuN,WAAWqQ,KAAKD,EAAEC,KAAK5d,QAAQ+M,UAAU0V,EAAEkoC,QAAQloC,EAAEkoC,OAAO,kBAAkBloC,EAAEkoC,QAAe/3B,EAAE,GAAG5yB,QAAQkB,QAAQyc,EAAE,IAAG,SAASC,EAAEmB,GAAG5e,KAAKS,KAAKod,EAAEq8C,eAAet7C,EAAE0D,MAAKmQ,GAAGzd,EAAEyd,EAAExf,KAAKqP,EAAEo4C,SAASp4C,EAAEo4C,SAAS,KAAKr9C,GAAGrI,EAAE4J,GAAE/e,QAAQkB,QAAQyc,GAAE,SAASC,EAAEk9C,GAAG,IAAIxhC,EAAEk6B,EAAEnB,EAAEryD,QAAQoiB,KAAKzE,EAAEm9C,IAAItH,EAAE,GAAG,IAAI31C,EAAE4E,EAAEs4C,YAAYt4C,EAAEs4C,YAAY1I,EAAEryD,QAAQkB,QAAQ2c,GAAE,SAASD,GAAG,IAAImB,EAAE0D,EAAEs4C,YAAY1I,EAAEz0C,GAAGA,EAAEzd,KAAKS,KAAKod,EAAEq8C,eAAet7C,EAAE0D,MAAK+wC,GAAGl6B,EAAEk6B,EAAEpgD,KAAKqP,EAAEo4C,SAASp4C,EAAEo4C,SAAS,KAAKr9C,GAAGs9C,EAAEn9C,EAAEpO,OAAO+pB,EAAEva,EAAEua,KAAI7W,EAAEu4C,qBAAqB3I,GAA9wC,UAAoxCA,GAAG70C,EAAEg2C,EAAE1mD,QAAQulD,MAAK,MAAM,mBAAmBx0C,EAAS,OAAGA,EAAS,OAAE,SAASD,GAAG41C,EAAEhf,OAAO52B,MAAK41C,EAAE5vD,SAASzD,KAAK86D,cAAc,SAASr9C,GAAG,YAAO,IAAS0b,EAAE1b,IAAIzd,KAAK+6D,eAAe,SAASt9C,GAAG,OAAO0b,EAAE1b,OAAO5d,QAAQC,OAAO,oBAAoB+C,UAAU,QAAQ,CAAC,SAAS,KAAK,MAAM,YAAY,WAAW,SAAS+b,EAAE+7C,EAAExhC,EAAE7W,EAAE+wC,GAAG,MAAM,CAAClsD,SAAS,KAAKrE,MAAM,CAAC6E,KAAK,SAASqzD,SAAS,YAAYP,OAAO,aAAaG,YAAY,kBAAkBL,SAAS,iBAAiBJ,WAAW,oBAAoBG,aAAa,gBAAgBI,SAAS,kBAAkBtuC,SAAS,YAAYyuC,mBAAmB,UAAUpgB,QAAQ,IAAIwgB,QAAQ,WAAWzQ,MAAM,aAAaxpD,WAAW,CAAC,SAAS,WAAW,SAAS,cAAc,SAASyc,EAAEmB,EAAE0D,GAAwe7E,EAAEy9C,IAAI,GAAGr7D,QAAQ+M,UAAU6Q,EAAE2O,WAAW,QAAQ3O,EAAE2O,UAAUvsB,QAAQmS,QAAQyL,EAAE9V,OAAO8V,EAAElZ,OAAO,QAAO,WAAWkZ,EAAE09C,cAAY,GAAI19C,EAAE29C,YAAY,WAAW,OAAO39C,EAAEu9C,UAAU,gBAAgBv9C,EAAE09C,SAAS,WAAW,IAAIt9C,EAAE88C,EAAE1uD,QAAQ,OAAO2S,EAAEy8C,SAAS/4C,EAAEg5C,mBAAmB,kBAAkBniC,EAAEjb,UAAUT,EAAE9V,OAAhxB,WAAa,IAAIiX,EAAE,CAAC27C,SAAS98C,EAAE88C,SAAS98C,EAAE88C,SAAS,IAAIJ,WAAW18C,EAAE08C,WAAW18C,EAAE08C,WAAW,IAAIG,aAAa78C,EAAE68C,aAAaO,mBAAmBp9C,EAAEo9C,oBAAoB,OAAOh7D,QAAQ+M,UAAU0V,EAAEi5C,aAAa38C,EAAE67C,OAAOh9C,EAAEpc,MAAMoc,EAAEg9C,SAAS56D,QAAQ+M,UAAU0V,EAAEk5C,kBAAkB58C,EAAEg8C,YAAYn9C,EAAEpc,MAAMoc,EAAEm9C,cAAc/6D,QAAQ+M,UAAU0V,EAAEm5C,YAAY78C,EAAE4rC,MAAM/sC,EAAEpc,MAAMoc,EAAE+sC,QAAQ5rC,EAAE87C,SAASj9C,EAAEi9C,SAASj9C,EAAEi9C,SAAS,IAAI97C,EAAE87C,SAASvhC,EAAE2hC,cAAcl8C,EAAE87C,UAAUvhC,EAAE4hC,eAAen8C,EAAE87C,UAAU97C,EAAE87C,SAAS97C,EAAoTy0C,IAAKtoD,MAAK,SAAS4vD,GAAGl9C,EAAEy9C,IAAIP,EAAE/7C,EAAE88C,YAAYp5C,EAAEg5C,mBAAmB,kBAAkBz9C,EAAElR,QAAQguD,MAAKl9C,EAAExZ,SAAS4Z,EAAEpa,WAAW8E,KAAK,SAASqW,EAAE+7C,GAA8bA,EAAEr3D,KAAK,SAAQ,WAAWsb,EAAEu8C,WAAWpwD,MAAK,YAAve,WAAa,IAAI4vD,EAAE/7C,EAAEq8C,SAAS,QAAQ9hC,EAAE,IAAIk2B,KAAK,CAACzwC,EAAEs8C,KAAK,CAAChsD,KAAK,oBAAoByrD,EAAE,MAAM,GAAGl9C,EAAEo+B,UAAU8f,iBAAiB9f,UAAU+f,WAAWziC,EAAEva,EAAEw8C,mBAAmB,CAAC,IAAIv9C,EAAEhe,QAAQkD,QAAQ,+CAA+CmvD,EAAEryD,QAAQkD,QAAQ8a,EAAEjV,WAAW,IAAIspD,EAAEp/C,KAAK,OAAO2K,EAAE8vC,IAAIsO,gBAAgB1iC,IAAI+4B,EAAEp/C,KAAK,WAAW8L,EAAEw8C,eAAelJ,EAAEp/C,KAAK,SAAS,UAAUwP,EAAExB,KAAK,QAAQuZ,OAAOxc,GAAGw1C,GAAE,WAAWnB,EAAE,GAAGvH,QAAQuH,EAAErlD,WAAU,OAA8DssB,MAAMva,EAAE3a","sources":["webpack://motion-chat/./node_modules/@flowjs/ng-flow/dist/ng-flow.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/templateFactory.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/locationServices.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/services.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/common.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/coreservices.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/glob.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/hof.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/predicates.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/queue.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/safeConsole.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/strings.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/trace.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/globals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/param.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramTypes.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/stateParams.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathNode.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathUtils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/router.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateObject.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/targetState.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/coreResolvables.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/redirectTo.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/resolve.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/views.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/updateGlobals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/url.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/ignoredTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/invalidTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRouter.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRule.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRules.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/q.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/utils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/view/view.js","webpack://motion-chat/./node_modules/angular-aria/angular-aria.js","webpack://motion-chat/./node_modules/angular-rateit/dist/ng-rateit.js","webpack://motion-chat/./src/js/index.controller.js","webpack://motion-chat/./src/js/index.route.js","webpack://motion-chat/./src/js/closing/closing.controller.js","webpack://motion-chat/./src/js/index.factory.js","webpack://motion-chat/./src/js/chat/chat.controller.js","webpack://motion-chat/./src/js/offline/offline.controller.js","webpack://motion-chat/./src/js/online/online.controller.js","webpack://motion-chat/./src/js/unmanaged/unmanaged.controller.js","webpack://motion-chat/./src/js/waiting/waiting.controller.js","webpack://motion-chat/./src/js/common/remote-storage.service.js","webpack://motion-chat/./src/js/index.module.js","webpack://motion-chat/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://motion-chat/./node_modules/json-form-data/src/jsonToFormData.js","webpack://motion-chat/./node_modules/moment/locale/af.js","webpack://motion-chat/./node_modules/moment/locale/ar-dz.js","webpack://motion-chat/./node_modules/moment/locale/ar-kw.js","webpack://motion-chat/./node_modules/moment/locale/ar-ly.js","webpack://motion-chat/./node_modules/moment/locale/ar-ma.js","webpack://motion-chat/./node_modules/moment/locale/ar-sa.js","webpack://motion-chat/./node_modules/moment/locale/ar-tn.js","webpack://motion-chat/./node_modules/moment/locale/ar.js","webpack://motion-chat/./node_modules/moment/locale/az.js","webpack://motion-chat/./node_modules/moment/locale/be.js","webpack://motion-chat/./node_modules/moment/locale/bg.js","webpack://motion-chat/./node_modules/moment/locale/bm.js","webpack://motion-chat/./node_modules/moment/locale/bn-bd.js","webpack://motion-chat/./node_modules/moment/locale/bn.js","webpack://motion-chat/./node_modules/moment/locale/bo.js","webpack://motion-chat/./node_modules/moment/locale/br.js","webpack://motion-chat/./node_modules/moment/locale/bs.js","webpack://motion-chat/./node_modules/moment/locale/ca.js","webpack://motion-chat/./node_modules/moment/locale/cs.js","webpack://motion-chat/./node_modules/moment/locale/cv.js","webpack://motion-chat/./node_modules/moment/locale/cy.js","webpack://motion-chat/./node_modules/moment/locale/da.js","webpack://motion-chat/./node_modules/moment/locale/de-at.js","webpack://motion-chat/./node_modules/moment/locale/de-ch.js","webpack://motion-chat/./node_modules/moment/locale/de.js","webpack://motion-chat/./node_modules/moment/locale/dv.js","webpack://motion-chat/./node_modules/moment/locale/el.js","webpack://motion-chat/./node_modules/moment/locale/en-au.js","webpack://motion-chat/./node_modules/moment/locale/en-ca.js","webpack://motion-chat/./node_modules/moment/locale/en-gb.js","webpack://motion-chat/./node_modules/moment/locale/en-ie.js","webpack://motion-chat/./node_modules/moment/locale/en-il.js","webpack://motion-chat/./node_modules/moment/locale/en-in.js","webpack://motion-chat/./node_modules/moment/locale/en-nz.js","webpack://motion-chat/./node_modules/moment/locale/en-sg.js","webpack://motion-chat/./node_modules/moment/locale/eo.js","webpack://motion-chat/./node_modules/moment/locale/es-do.js","webpack://motion-chat/./node_modules/moment/locale/es-mx.js","webpack://motion-chat/./node_modules/moment/locale/es-us.js","webpack://motion-chat/./node_modules/moment/locale/es.js","webpack://motion-chat/./node_modules/moment/locale/et.js","webpack://motion-chat/./node_modules/moment/locale/eu.js","webpack://motion-chat/./node_modules/moment/locale/fa.js","webpack://motion-chat/./node_modules/moment/locale/fi.js","webpack://motion-chat/./node_modules/moment/locale/fil.js","webpack://motion-chat/./node_modules/moment/locale/fo.js","webpack://motion-chat/./node_modules/moment/locale/fr-ca.js","webpack://motion-chat/./node_modules/moment/locale/fr-ch.js","webpack://motion-chat/./node_modules/moment/locale/fr.js","webpack://motion-chat/./node_modules/moment/locale/fy.js","webpack://motion-chat/./node_modules/moment/locale/ga.js","webpack://motion-chat/./node_modules/moment/locale/gd.js","webpack://motion-chat/./node_modules/moment/locale/gl.js","webpack://motion-chat/./node_modules/moment/locale/gom-deva.js","webpack://motion-chat/./node_modules/moment/locale/gom-latn.js","webpack://motion-chat/./node_modules/moment/locale/gu.js","webpack://motion-chat/./node_modules/moment/locale/he.js","webpack://motion-chat/./node_modules/moment/locale/hi.js","webpack://motion-chat/./node_modules/moment/locale/hr.js","webpack://motion-chat/./node_modules/moment/locale/hu.js","webpack://motion-chat/./node_modules/moment/locale/hy-am.js","webpack://motion-chat/./node_modules/moment/locale/id.js","webpack://motion-chat/./node_modules/moment/locale/is.js","webpack://motion-chat/./node_modules/moment/locale/it-ch.js","webpack://motion-chat/./node_modules/moment/locale/it.js","webpack://motion-chat/./node_modules/moment/locale/ja.js","webpack://motion-chat/./node_modules/moment/locale/jv.js","webpack://motion-chat/./node_modules/moment/locale/ka.js","webpack://motion-chat/./node_modules/moment/locale/kk.js","webpack://motion-chat/./node_modules/moment/locale/km.js","webpack://motion-chat/./node_modules/moment/locale/kn.js","webpack://motion-chat/./node_modules/moment/locale/ko.js","webpack://motion-chat/./node_modules/moment/locale/ku.js","webpack://motion-chat/./node_modules/moment/locale/ky.js","webpack://motion-chat/./node_modules/moment/locale/lb.js","webpack://motion-chat/./node_modules/moment/locale/lo.js","webpack://motion-chat/./node_modules/moment/locale/lt.js","webpack://motion-chat/./node_modules/moment/locale/lv.js","webpack://motion-chat/./node_modules/moment/locale/me.js","webpack://motion-chat/./node_modules/moment/locale/mi.js","webpack://motion-chat/./node_modules/moment/locale/mk.js","webpack://motion-chat/./node_modules/moment/locale/ml.js","webpack://motion-chat/./node_modules/moment/locale/mn.js","webpack://motion-chat/./node_modules/moment/locale/mr.js","webpack://motion-chat/./node_modules/moment/locale/ms-my.js","webpack://motion-chat/./node_modules/moment/locale/ms.js","webpack://motion-chat/./node_modules/moment/locale/mt.js","webpack://motion-chat/./node_modules/moment/locale/my.js","webpack://motion-chat/./node_modules/moment/locale/nb.js","webpack://motion-chat/./node_modules/moment/locale/ne.js","webpack://motion-chat/./node_modules/moment/locale/nl-be.js","webpack://motion-chat/./node_modules/moment/locale/nl.js","webpack://motion-chat/./node_modules/moment/locale/nn.js","webpack://motion-chat/./node_modules/moment/locale/oc-lnc.js","webpack://motion-chat/./node_modules/moment/locale/pa-in.js","webpack://motion-chat/./node_modules/moment/locale/pl.js","webpack://motion-chat/./node_modules/moment/locale/pt-br.js","webpack://motion-chat/./node_modules/moment/locale/pt.js","webpack://motion-chat/./node_modules/moment/locale/ro.js","webpack://motion-chat/./node_modules/moment/locale/ru.js","webpack://motion-chat/./node_modules/moment/locale/sd.js","webpack://motion-chat/./node_modules/moment/locale/se.js","webpack://motion-chat/./node_modules/moment/locale/si.js","webpack://motion-chat/./node_modules/moment/locale/sk.js","webpack://motion-chat/./node_modules/moment/locale/sl.js","webpack://motion-chat/./node_modules/moment/locale/sq.js","webpack://motion-chat/./node_modules/moment/locale/sr-cyrl.js","webpack://motion-chat/./node_modules/moment/locale/sr.js","webpack://motion-chat/./node_modules/moment/locale/ss.js","webpack://motion-chat/./node_modules/moment/locale/sv.js","webpack://motion-chat/./node_modules/moment/locale/sw.js","webpack://motion-chat/./node_modules/moment/locale/ta.js","webpack://motion-chat/./node_modules/moment/locale/te.js","webpack://motion-chat/./node_modules/moment/locale/tet.js","webpack://motion-chat/./node_modules/moment/locale/tg.js","webpack://motion-chat/./node_modules/moment/locale/th.js","webpack://motion-chat/./node_modules/moment/locale/tk.js","webpack://motion-chat/./node_modules/moment/locale/tl-ph.js","webpack://motion-chat/./node_modules/moment/locale/tlh.js","webpack://motion-chat/./node_modules/moment/locale/tr.js","webpack://motion-chat/./node_modules/moment/locale/tzl.js","webpack://motion-chat/./node_modules/moment/locale/tzm-latn.js","webpack://motion-chat/./node_modules/moment/locale/tzm.js","webpack://motion-chat/./node_modules/moment/locale/ug-cn.js","webpack://motion-chat/./node_modules/moment/locale/uk.js","webpack://motion-chat/./node_modules/moment/locale/ur.js","webpack://motion-chat/./node_modules/moment/locale/uz-latn.js","webpack://motion-chat/./node_modules/moment/locale/uz.js","webpack://motion-chat/./node_modules/moment/locale/vi.js","webpack://motion-chat/./node_modules/moment/locale/x-pseudo.js","webpack://motion-chat/./node_modules/moment/locale/yo.js","webpack://motion-chat/./node_modules/moment/locale/zh-cn.js","webpack://motion-chat/./node_modules/moment/locale/zh-hk.js","webpack://motion-chat/./node_modules/moment/locale/zh-mo.js","webpack://motion-chat/./node_modules/moment/locale/zh-tw.js","webpack://motion-chat//home/vito/Development/MOTION_V3/motion-server/motion-chat/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://motion-chat/./node_modules/ng-csv/build/ng-csv.min.js"],"names":["angular","module","provider","this","defaults","factory","options","Flow","events","on","event","callback","push","$get","fn","opts","flow","extend","forEach","controller","$scope","$attrs","$parse","flowFactory","$eval","flowInit","flowObject","create","catchAllHandler","eventName","args","Array","prototype","slice","call","arguments","shift","$broadcast","apply","concat","$applyAsync","defaultPrevented","$on","off","$flow","hasOwnProperty","flowName","assign","directive","scope","element","attrs","isDirectory","isSingleFile","inputAttrs","flowAttrs","assignBrowse","bind","preventDefault","$timeout","promise","enter","dragEvent","fileDrag","dataTransfer","originalEvent","types","val","$apply","flowDragEnter","cancel","flowDragLeave","assignDrop","flowDropEnabled","$watch","value","unAssignDrop","fileSuccess","fileProgress","fileAdded","filesAdded","filesSubmitted","fileRetry","fileRemoved","fileError","uploadStart","complete","progress","error","eventArgs","string","name","charAt","toUpperCase","require","funcArgs","key","file","flowImg","fileReader","FileReader","readAsDataURL","onload","$set","target","result","transfers","files","uiView","$ViewDirectiveFill","$compile","$controller","$transitions","$view","$q","getControllerAs","parse","getResolveAs","restrict","priority","compile","tElement","initial","html","empty","$element","data","contents","cfg","$cfg","viewDecl","getTemplate","noop","resolveCtx","path","ResolveContext","trace","$uiView","link","controllerAs","resolveAs","locals","controllerInstance","children","registerControllerCallbacks","isString","component","kebobName","kebobString","tagRegexp_1","RegExp","deregisterWatch_1","directiveEl","filter","el","tagName","exec","ctrlInstance","$animate","$uiViewScroll","$interpolate","rootData","$context","_pluginapi","_rootViewContext","count","terminal","transclude","tAttrs","$transclude","previousEl","currentEl","currentScope","viewConfig","onloadExp","autoScrollExp","renderer","cb","then","leave","inherited","inheritedData","activeUIView","$type","id","fqn","config","configUpdated","updateView","fromParentTagConfig","fromParentTag","unregister","registerUIView","newScope","$new","animEnter","defer","animLeave","$uiViewData","$uiViewAnim","$animEnter","$animLeave","$$animLeave","$emit","cloned","clone","resolve","isDefined","remove","$destroy","_viewData_1","cleanupLastView","$inject","hasComponentImpl","_uiCanExitId","isFunction","$onInit","componentProvider","viewState","tail","state","self","hookOptions","uiOnParamsChanged","viewCreationTrans_1","getResolvable","onSuccess","$transition$","exiting","indexOf","toParams","params","fromParams","getNodeSchema","node","paramSchema","toSchema","treeChanges","map","reduce","unnestR","fromSchema","changedToParams","param","idx","type","equals","length","changedKeys_1","x","newValues","uiCanExit","id_1","cacheProp_1","prevTruthyAnswer_1","trans","redirectedFrom","criteria","onBefore","ids","when","TemplateFactory","_this","_useHttp","$http","$templateCache","$injector","$templateRequest","has","get","useHttpService","fromConfig","context","asTemplate","services","str","template","asComponent","fromString","templateUrl","fromUrl","templateProvider","fromProvider","fromComponentProvider","url","cache","headers","Accept","response","deps","providerFn","isArray","Resolvable","makeComponentTemplate","bindings","prefix","kebob","camelCase","kebobed","cmpDefs","Error","getBindings","getComponentBindings","input","attrName","attr","resolveName","res","join","def","isObject","bindToController","scopeBindings","bindingsObj","Object","keys","tuple","getStateHookBuilder","hookName","stateObject","hook","pathname","subContext","$$state","getLocals","$state$","undefined","Ng1LocationServices","$locationProvider","_urlListeners","_lp","createProxyFunctions","monkeyPatchPathParameterType","router","pathType","urlMatcherFactory","encode","toString","replace","m","decode","dispose","onChange","removeFrom","html5Mode","enabled","$sniffer","history","baseHref","_baseHref","$browser","$window","location","newUrl","$location","_runtimeServices","$rootScope","evt","_loc","mod_init","mod_util","mod_rtr","mod_state","mod_main","$uiRouterProvider","UIRouter","stateProvider","stateRegistry","stateService","decorator","viewService","_viewConfigFactory","urlService","_decodeParams","ng1LocationService","locationService","locationConfig","getProviderFor","serviceName","$urp","service","runBlock","$uiRouter","invoke","checkStrictDi","strictDi","resolvables","resolvable","annotate","resolveFn","watchDigests","uiRouter","urlRouterProvider","globals","run","$urlMatcherFactory","$state","$urlRouter","ctx","getTokens","getPolicy","async","applyPairs","$IsStateFilter","isFilter","is","$stateful","$IncludedByStateFilter","includesFilter","includes","StateProvider","func","definition","register","onInvalid","getNg1ViewConfigFactory","templateFactory","view","Ng1ViewConfig","hasAnyKey","obj","acc","ng1ViewsBuilder","parent","compKeys","nonCompKeys","allViewKeys","views","viewsObject","$default","pick","$name","normalized","ViewService","$uiViewName","uiViewName","$uiViewContextAnchor","uiViewContextAnchor","$id","loaded","load","paramValues","promises","getController","all","results","controllerProvider","isInjectable","UrlRouterProvider","injectableHandler","handler","match","$match","$stateParams","urlRouter","update","interceptDeferred","listen","rule","ruleFn","BaseUrlRule","identity","rules","otherwise","urlRules","what","deferIntercept","useAnchorScroll","$anchorScroll","scrollIntoView","__spreadArrays","s","i","il","r","k","a","j","jl","root","g","global","fromJson","JSON","toJson","stringify","toObj","_equals","o1","o2","t1","a1","a2","tup","arrayTuples","b","t","getTime","source","fnNames","latebind","bindFunction","fnName","inherit","extra","inArray","array","splice","pushTo","arr","deregAll","functions","defaultsList","_i","defaultVals","reverse","mergeR","memo","item","ancestors","first","second","n","propNames","objCopy","_prop","omit","collection","accept","find","mapObj","values","allTrueR","elem","anyTrueR","flattenR","pushR","uniqR","token","unnest","assertPredicate","predicateOrMap","errMsg","maxArrayLen","min","Math","_loop_1","keyValTuple","copy","src","dest","silenceUncaughtInPromise","catch","e","silentRejection","makeStub","methods","fnname","Glob","text","glob","split","regexpString","seg","regexp","matches","test","curry","curried","compose","start","pipe","funcs","prop","propEq","_val","not","and","fn1","fn2","or","any","ctor","constructor","v","pattern","struct","toStr","tis","isUndefined","isNull","o","isNullOrUndefined","isNumber","isDate","isRegExp","head","isPromise","Queue","_items","_limit","_evictListeners","onEvict","enqueue","items","evict","dequeue","size","clear","current","peekTail","peekHead","noopConsoleStub","log","table","safeConsole","document","documentMode","window","console","bound","Function","ie9Console","fallbackConsole","maxLength","max","substr","padString","$1","toLowerCase","functionToString","fnStr","fnToString","namedFunctionMatch","_fn","isRejection","stringifyPattern","_transitionRejection","seen","format","beforeAfterSubstr","char","stripLastPathElement","splitHash","splitQuery","splitEqual","trimHashVal","splitOnDelim","delim","re","joinNeighborsR","Category","uiViewString","uiview","creationContext","normalizedCat","_tid","_rid","transLbl","Trace","_enabled","approximateDigests","_set","categories","parseInt","isNaN","category","enable","disable","traceTransitionStart","TRANSITION","traceTransitionIgnored","traceHookInvocation","step","HOOK","registeredHook","traceHookResult","hookResult","transitionOptions","traceResolvePath","RESOLVE","traceResolvableResolved","traceError","reason","traceSuccess","finalState","traceUIViewEvent","viewData","UIVIEW","traceUIViewConfigUpdated","traceUIViewFill","traceViewSync","pairs","VIEWCONFIG","uivheader","mapping","_a","_b","uiv","sort","localeCompare","traceViewServiceEvent","viewConfigString","traceViewServiceUIViewEvent","UIRouterGlobals","lastStartedTransitionId","transitionHistory","successfulTransitions","transition","lazyLoadHook","entering","lazyLoad","lazyLoadState","originalTransition","orig","targetState","identifier","$url","parts","sync","registerLazyLoadHook","transitionService","lazyLoadFn","states","_state","err","DefType","hasOwn","Param","urlConfig","paramName","noReloadOnSearch","reloadOnSearch","SEARCH","dynamic","defaultConfig","paramConfig","getStaticDefaultValue","isShorthand","$$fn","unwrapShorthand","getParamDeclaration","urlType","paramTypes","CONFIG","PATH","getType","arrayDefaults","arrayParamNomenclature","arrayMode","$asArray","isOptional","raw","squash","defaultPolicy","getSquashPolicy","defaultSquashPolicy","from","to","configuredKeys","getReplace","params_1","changed","values1","values2","validates","isDefaultValue","replaceSpecialValues","_defaultValueCache","defaultValue","getDefaultValue","$normalize","isSearch","encoded","ParamType","$subPattern","sub","mode","ArrayType","arrayWrap","arrayHandler","allTruthyMode","arrayUnwrap","arrayEqualsHandler","val1","val2","left","right","paramTypeFn","wrapperFn","$arrayMode","makeDefaultType","ParamTypes","typeQueue","defaultTypes","definitionFn","_flushTypeQueue","valToString","defaultTypeBase","String","query","hash","int","bool","Boolean","date","getFullYear","getMonth","getDate","capture","Date","valueOf","l","json","StateParams","$inherit","newParams","$current","$to","parentParams","parents","inheritList","PathNode","stateOrNode","parameters","applyRawParams","pDef","paramDef","parameter","paramsFn","diff","PathUtils","makeTargetState","registry","buildPath","buildToPath","fromPath","toPath","inheritParams","applyViewConfigs","viewDecls","subPath","viewConfigs","createViewConfig","toKeys","noInherit","toNode","toParamVals","incomingParamVals","fromParamVals","ownParamVals","reloadState","node1","node2","retained","keep","nonDynamicParams","retainedWithToParams","retainedNode","matching","pathA","pathB","done","nodeA","nodeB","predicate","elementIdx","resolvePolicies","LAZY","EAGER","WAIT","NOWAIT","arg1","policy","resolved","literal","thisPolicy","statePolicy","resolvePolicy","resolveContext","findNode","asyncPolicy","customAsyncPolicy","getDependencies","resolvedDeps","resolvedValue","fromData","whens","ALL_WHENS","EAGER_WHENS","_path","addResolvables","newResolvables","resolvePath","matchedWhens","matchesPolicy","acceptedVals","whenOrAsync","nodeResolvables","nowait","wait","getResult","injector","_injector","UIInjectorImpl","availableResolvables","_node","fromInjector","getNative","native","getAsync","_routerInstance","locationServiceStub","locationConfigStub","_disposed","_disposables","_plugins","disposable","d","ignored","plugin","pluginInstance","getPlugin","pluginName","nameBuilder","selfBuilder","dataBuilder","getUrlBuilder","$urlMatcherFactoryProvider","stateDec","newStateDec","parsed","substring","parseUrl","isMatcher","navigable","append","getNavigableBuilder","isRoot","pathBuilder","includesBuilder","resolvablesBuilder","resolveObj","getToken","p","provide","literal2Resolvable","useFactory","dependencies","useClass","useValue","useExisting","tuple2Resolvable","item2Resolvable","decl","StateBuilder","matcher","paramFactory","builders","parentName","urlParams","nonUrlParams","builder","build","chain","parentFn","segments","pop","StateMatcher","_states","isRelative","stateName","stateOrName","base","matchGlob","isStr","__stateObjectCache","nameGlob","baseState","splitName","pathLength","relName","StateObject","stateDecl","isStateClass","ref","matchingKeys","isStateDeclaration","isState","StateQueueManager","listeners","queue","flush","registered","orphans","previousQueueLength","getState","notifyListeners","listener","name_1","orphanIdx","existingState","existingFutureState","deregister","attachRoute","prev","abstract","rulesApi","urlRuleFactory","StateRegistry","stateQueue","_registerRoot","_root","onStatesChanged","stateDefinition","_deregisterTree","getChildren","_children","deregistered","removeRule","deregisteredStates","found","property","builderFunction","TargetState","_stateRegistry","_identifier","_params","_options","_definition","relative","exists","valid","withState","withParams","withOptions","newOpts","isDef","HookBuilder","buildHooksForPhase","phase","_getEvents","buildHooks","hookType","matchingHooks","getMatchingHooks","reverseDepthSort","baseHookOptions","criteriaMatchPath","traceData","transitionHook","reverseSort","factor","depthDelta","isCreate","hookPhase","reg","getHooks","matchState","criterion","toMatch","globStrings","RegisteredHook","tranSvc","eventType","matchCriteria","removeHookFromRegistry","invokeCount","_deregistered","invokeLimit","_matchingNodes","nodes","_getDefaultMatchCriteria","_getPathTypes","_getMatchingNodes","mn","pathtype","isStateHook","every","makeEvent","hooks","_registeredHooks","removeHookFn","hookRegistrationFn","matchObject","TransitionHookPhase","TransitionHookScope","RejectType","Rejection","message","detail","isRejectionPromise","superseded","rejection","SUPERSEDED","redirected","invalid","INVALID","IGNORED","aborted","ABORTED","errored","ERROR","normalize","toPromise","TransitionEventType","hookOrder","getResultHandler","getErrorHandler","synchronous","defaultOptions","TransitionHook","stateContext","isSuperseded","isActive","waitFor","nextHook","invokeHook","invokeHooks","doneCallback","remainingHooks","runAllHooks","logError","defaultErrorHandler","notCurrent","getNotCurrentRejection","handleError","handleResult","handleHookResult","isTargetState","_aborted","HANDLE_RESULT","LOG_REJECTED_RESULT","LOG_ERROR","REJECT_ERROR","THROW_ERROR","addCoreResolvables","addResolvable","TRANSITION_TOKENS","isTransition","treeChangesCleanup","replaceTransitionWithNull","redirectToHook","redirect","redirectTo","makeEnterExitRetainHook","hookFn","onExitHook","onRetainHook","onEnterHook","RESOLVE_HOOK_PRIORITY","eagerResolvePath","lazyResolveState","resolveRemaining","loadEnteringViews","enteringViews","activateViews","exitingViews","vc","deactivateViewConfig","activateViewConfig","updateGlobalState","clearCurrentTransition","updateUrl","urlOptions","ignoredHook","ignoredReason","_ignoredReason","pending","abort","invalidTransitionHook","defaultTransOpts","notify","reload","supercede","custom","TransitionService","_router","_transitionCount","_eventTypes","_criteriaPaths","_deregisterHookFns","_defineCorePaths","_defineCoreEvents","_registerCoreTransitionHooks","onCreate","onStart","onExit","onRetain","onEnter","onFinish","onError","hooksArray","Phase","TH","paths","NORMAL_SORT","SYNCHRONOUS","_defineEvent","CREATE","BEFORE","RUN","SUCCESS","STATE","_definePathType","cmpByPhase","hookScope","fns","addCoreResolves","registerInvalidTransitionHook","registerRedirectToHook","registerOnExitHook","registerOnRetainHook","registerOnEnterHook","eagerResolve","registerEagerResolvePath","lazyResolve","registerLazyResolveState","resolveAll","registerResolveRemaining","loadViews","registerLoadEnteringViews","registerActivateViews","updateGlobals","registerUpdateGlobalState","registerUpdateUrl","UrlConfig","_isCaseInsensitive","_isStrictMode","_defaultSquashPolicy","hashPrefix","newprefix","host","port","protocol","caseInsensitive","strictMode","__assign","ParamFactory","fromSearch","UrlMatcherFactory","UrlMatcher","globalConfig","strict","decodeParams","object","UrlRouter","urlParts","compareFn","read","urlMatcher","href","absolute","isHtml5","appendBasePath","slash","cfgPort","defineProperty","enumerable","configurable","UrlRuleFactory","makeRule","_what","fromUrlMatcher","fromState","fromRegExp","_handler","details","matchPriority","optional","search","stateOrDecl","transitionTo","sticky","Number","isUrlRule","defaultRuleSortFn","getHandlerFn","cmp","prioritySort","weights","URLMATCHER","REGEXP","RAW","OTHER","typeSort","urlMatcherSort","useMatchPriority","idSort","UrlRules","_sortFn","_rules","_id","_otherwiseFn","handlerFn","_sorted","ensureSorted","sorted","stableSort","group","_group","arrOfWrapper","wrapperA","wrapperB","cmpDiff","wrapper","UrlService","newurl","best","go","applyResult","_stopListeningFn","weight","BaseLocationServices","fireAfterUpdate","_listeners","_listener","_get","_location","_history","BrowserLocationConfig","_isHtml5","_hashPrefix","hostname","getBaseHref","baseTag","getElementsByTagName","extendStatics","__extends","setPrototypeOf","__proto__","__","HashLocationService","_super","title","MemoryLocationConfig","_port","_protocol","_host","newval","MemoryLocationService","_url","PushStateLocationService","_config","_getBasePrefix","basePrefix","exactBaseHrefMatch","startsWithBase","fullUrl","replaceState","pushState","Promise","reject","deferred","keyValsToObjectR","accum","getParams","queryString","orEmptyString","beforehash","buildUrl","loc","searchObject","locationPluginFactory","serviceClass","configurationClass","configuration","_uiViews","_viewConfigs","_viewConfigFactories","_registeredUIView","_registeredUIViews","_activeViewConfigs","_onSync","normalizeUIViewTarget","rawViewName","viewAtContext","relativeViewNameSugar","anchorState","anchor","_rootContext","viewType","cfgFactory","cfgs","uiViewsByFqn","viewConfigDepth","depthCompare","depthFn","posNeg","uiViewTuples","stateDepth","matchingConfigs","matchedViewConfigs","unmatchedConfigTuples","allTuples","uiViews","available","active","vcSegments","uivSegments","negOffset","fqnToFirstSegment","uiViewContext","ARIA_DISABLE_ATTR","ngAriaModule","info","angularVersion","ariaHidden","ariaChecked","ariaReadonly","ariaDisabled","ariaRequired","ariaInvalid","ariaValue","tabindex","bindKeydown","bindRoleForClick","watchExpr","ariaAttr","nativeAriaNodeNames","negate","ariaCamelName","isNodeOneOf","boolVal","newConfig","$$watchExpr","nodeTypeArray","nodeName","$aria","shouldAttachAttr","normalizedAttr","allowNonAriaNodes","shouldAttachRole","role","shape","getShape","post","ngModel","needsTabIndex","ngAriaWatchModelValue","$modelValue","newVal","$viewValue","$isEmpty","needsAriaValuemin","needsAriaValuemax","needsAriaValuenow","$observe","$validators","required","$invalid","ngMessages","ngClick","ngKeydown","ngKeypress","ngKeyup","keyCode","which","isContentEditable","$event","readOnly","pristine","resetable","starWidth","starHeight","canelWidth","cancelHeight","rated","reset","beforeRated","beforeReset","isTouch","navigator","msMaxTouchPoints","orgValue","starPartWidth","steps","garbage","getValue","index","getStartParts","getStarOffset","ratio","isSelected","removeRating","rating","setValue","tmpValue","put","IndexController","$mdDialog","RemoteStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","vm","toggle","up","updateStorage","cmd","layout","postMessage","onStorageError","debug","visitor","status","div_color","settings","color","text_color","textColor","text_button_color","textButtonColor","button_color","color_button","background_color","backgroundColor","client_height","documentElement","clientHeight","innerHeight","client_width","clientWidth","style","setProperty","tg","getStoredValueWithLocation","visitorStoragePromise","getItem","layoutStoragePromise","visitorValue","layoutValue","interaction","alignment","online","exceeded","maxInteractions","openedInteractions","isOnline","hideWhenOffline","createElement","appendChild","sheet","insertRule","close","confirm","querySelector","clickOutsideToClose","closingQuestion","ok","show","chatInteraction","customUpdate","closed","closeReason","$promise","download","getMessages","intid","includeAll","_map","rows","row","sender","direction","customerAlias","ContactId","agentIdentifier","UserId","agentAlias","User","alias","fullname","body","createdAt","moment","getHeaderShape","header_shape","CHAT_STATUSES","offline","defaultTitle","header_online","header_offline","addEventListener","routeRun","cursor","hide","_forIn","_isNil","routeConfig","$stateProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX","Pragma","setPrefix","waitingTemplate","onlineTemplate","offlineTemplate","chatTemplate","unmanagedTemplate","closingTemplate","ClosingController","$mdToast","errors","toast","simple","textContent","formSubmitFailureMessage","toastClass","position","stopLoading","loading","goToIfTime","form","upColor","downColor","userForm","$setPristine","$setUntouched","enableDownload","removeItem","submit","_merge","ratingType","customer","formSubmitSuccessMessage","finally","skip","apiService","$resource","paramDefaults","baseUrl","remote","chatWebsite","method","getFields","uploadAttachment","transformRequest","downloadAttachment","abandon","chatMessage","ChatController","$interval","$document","emojiArea","getMessagesInterval","getInteractionInterval","lastMessageId","clearStorage","scrollToBottomOfChat","getElementsByClassName","scrollTop","scrollHeight","handleSizeError","sendMessage","updateRootscope","interactionStarted","emojioneArea","setText","getInteraction","disposition","reply","getText","shiftKey","includeAgent","added","_find","messages","emojiOptions","watchEmbedData","fontSmiley","emoji","linkTarget","ngFlowOptions","allowDuplicateUploads","showMenu","replyMessage","$","placeholder","placeholderMessage","keyup","editor","ready","setFocus","reply_button","maxFileSizeMb","fd","FormData","AttachmentId","_values","OfflineController","$sce","fromKey","initialFields","typeField","optJsonFormData","showLeafArrayIndexes","includeNullValues","onSubmitSuccess","fields","_cloneDeep","trustAsHtml","initUploadButton","formItem","uploadItem","button","label","css","trigger","click","props","maxSizeMB","some","sizeErrMessage","removeFileItem","setupFileInput","multipleUpload","setAttribute","makeFileOptionsVisible","fileOpts","lastOpt","mapKeyOffline","_random","field","helpText","isHTML","checkHTML","cmField","uploadFields","payLoad","isFormDataPayload","isJsonPayload","payload","jsonToFormData","initialFormData","OnlineController","initVisitorForm","mapKey","disableItem","chatInteractionId","messageId","channel","variable","referer","customerIp","chatMessageError","enableCustomerWriting","UnmanagedController","note","WaitingController","getInteractionIntervalHandle","open","remoteAddress","URL","address","origin","setItem","action","storage","expectedAction","removeEventListener","stringData","warn","toTrustedFilter","constant","ngEnter","getElementById","div","startTime","sentAt","createTextNode","myWindow","write","innerHTML","focus","print","printElement","elemToPrint","$mdGestureProvider","skipClickHijack","exports","globalThis","isJsonObject","Blob","isGlobalFormDataPresent","getDefaultFormData","convertRecursively","jsonObject","formData","parentKey","propName","FileList","toISOString","mergedOptions","carry","objectToMerge","objectKey","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","h","hh","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","plurals","pluralize","u","withoutSuffix","isFuture","f","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","relativeTimeWithPlural","num","forms","standalone","isFormat","day","period","w","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","translate","ll","lll","llll","output","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","month","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","offset","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","now","$0","$2","isUpper","eifelerRegelAppliesToNumber","units","translateSingular","special","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","separator","days","numbersNouns","numberNoun","hundred","floor","ten","one","word","numberAsNoun","time","hm","processHoursFunction","nominative","accusative","genitive","webpackContext","req","webpackContextResolve","__webpack_require__","code","urlSanitizationWhitelist","aHrefSanitizationWhitelist","stringifyField","decimalSep","isFloat","toLocaleString","quoteStrings","txtDelim","isFinite","header","fieldSep","c","columnOrder","addByteOrderMarker","isSpecialChar","getSpecialChar","filename","charset","csv","buildCSV","getFilename","addClass","ngCsvLoadingClass","csvHeader","csvColumnOrder","csvLabel","removeClass","msSaveOrOpenBlob","msSaveBlob","createObjectURL"],"sourceRoot":""}
\ No newline at end of file
similarity index 69%
rename from snippet/3.5.0/assets/fonts/db15fb94f19c4e36b451.woff
rename to snippet/3.8.0/assets/fonts/db15fb94f19c4e36b451.woff
index c06e349b6d6d8998aac4ac60c76a74dbc02efd17..8828fe066ae5b25bc30166138c2a343fc20f8d5f 100644 (file)
@@ -26,4 +26,4 @@
                 status != 'online' &&
                 status != 'offline' &&
                 status != 'unmanaged'
-              " ng-click="vm.close(); $event.stopPropagation();"><i class="mdi mdi-close mdi-light" ng-click="vm.close(); $event.stopPropagation();"></i></md-button><div ng-if="settings.alignment == 'bottom_right'" aria-label="Reduce"><i class="mdi mdi-light mdi-light" ng-class="layout.up === true ? 'mdi-chevron-down' : 'mdi-chevron-up'"></i></div></div></md-toolbar><md-content class="chat-content"><ui-view></ui-view></md-content></div></div><script>window['buildInfo'] = {"name":"motion-chat","version":"3.5.0","shortHash":"ca0cc42","branch":"develop","tag":"","committedOn":"2022-10-12T16:22:10.000Z","buildDate":"2022-10-21T09:01:40.793Z"};</script><script src="scripts/app.js"></script><script src="scripts/runtime.js"></script><script src="scripts/vendor-index.js"></script><script src="scripts/vendor-angular-76f2ed34.js"></script><script src="scripts/vendor-angular-58d021f3.js"></script><script src="scripts/vendor-ng-embed.js"></script><script src="scripts/vendor-moment.js"></script><script src="scripts/vendor-jquery.js"></script><script src="scripts/vendor-jquery.textcomplete.js"></script><script src="scripts/vendor-emojionearea.js"></script><script src="scripts/vendor-emojione.js"></script><script src="scripts/vendor-angular-sanitize.js"></script><script src="scripts/vendor-angular-resource.js"></script><script src="scripts/vendor-angular-messages.js"></script><script src="scripts/vendor-angular-material.js"></script><script src="scripts/vendor-angular-local-storage.js"></script><script src="scripts/vendor-angular-animate.js"></script><script src="scripts/vendor-urlMatcher.js"></script><script src="scripts/vendor-transition.js"></script><script src="scripts/vendor-stateService.js"></script><script src="scripts/vendor-stateDirectives.js"></script><script src="scripts/vendor-flow.js"></script><script src="scripts/chat.js"></script></body></html>
+              " ng-click="vm.close(); $event.stopPropagation();"><i class="mdi mdi-close mdi-light" ng-click="vm.close(); $event.stopPropagation();"></i></md-button><div ng-if="settings.alignment == 'bottom_right'" aria-label="Reduce"><i class="mdi mdi-light mdi-light" ng-class="layout.up === true ? 'mdi-chevron-down' : 'mdi-chevron-up'"></i></div></div></md-toolbar><md-content class="chat-content"><ui-view></ui-view></md-content></div></div><script>window['buildInfo'] = {"name":"motion-chat","version":"3.8.0","shortHash":"d7a02648","branch":"develop","tag":"","committedOn":"2022-12-05T16:45:28.000Z","buildDate":"2022-12-06T14:13:33.394Z"};</script><script src="scripts/app.js"></script><script src="scripts/runtime.js"></script><script src="scripts/vendor-index.js"></script><script src="scripts/vendor-angular-76f2ed34.js"></script><script src="scripts/vendor-angular-58d021f3.js"></script><script src="scripts/vendor-ng-embed.js"></script><script src="scripts/vendor-moment.js"></script><script src="scripts/vendor-jquery.js"></script><script src="scripts/vendor-jquery.textcomplete.js"></script><script src="scripts/vendor-emojionearea.js"></script><script src="scripts/vendor-emojione.js"></script><script src="scripts/vendor-angular-sanitize.js"></script><script src="scripts/vendor-angular-resource.js"></script><script src="scripts/vendor-angular-messages.js"></script><script src="scripts/vendor-angular-material.js"></script><script src="scripts/vendor-angular-local-storage.js"></script><script src="scripts/vendor-angular-animate.js"></script><script src="scripts/vendor-urlMatcher.js"></script><script src="scripts/vendor-transition.js"></script><script src="scripts/vendor-stateService.js"></script><script src="scripts/vendor-stateDirectives.js"></script><script src="scripts/vendor-flow.js"></script><script src="scripts/chat-e96e9bea.js"></script><script src="scripts/chat-fecd0807.js"></script></body></html>
\ No newline at end of file
similarity index 84%
rename from snippet/3.5.0/assets/fonts/dc116c4c8ce73229b683.ttf
rename to snippet/3.8.0/assets/fonts/dc116c4c8ce73229b683.ttf
index 210848b69e9ca855818b3f8b0571a57672a7a330..9ca88e052d88b2b092c6fd39fac741780a6386b9 100644 (file)
@@ -1,2 +1,2 @@
 /*! For license information please see app.js.LICENSE.txt */
-"use strict";(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["app"],{"./src/styles/app.scss":()=>{}},e=>{e.O(0,["vendor","vendor-index","vendor-angular-76f2ed34","vendor-angular-58d021f3","vendor-ng-embed","vendor-moment","vendor-jquery","vendor-jquery.textcomplete","vendor-emojionearea","vendor-emojione","vendor-angular-sanitize","vendor-angular-resource","vendor-angular-messages","vendor-angular-material","vendor-angular-local-storage","vendor-angular-animate","vendor-urlMatcher","vendor-transition","vendor-stateService","vendor-stateDirectives","vendor-flow","chat"],(()=>("./src/styles/app.scss",e(e.s="./src/styles/app.scss")))),e.O()}]);
\ No newline at end of file
+"use strict";(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["app"],{"./src/styles/app.scss":()=>{}},e=>{e.O(0,["vendor","vendor-index","vendor-angular-76f2ed34","vendor-angular-58d021f3","vendor-ng-embed","vendor-moment","vendor-jquery","vendor-jquery.textcomplete","vendor-emojionearea","vendor-emojione","vendor-angular-sanitize","vendor-angular-resource","vendor-angular-messages","vendor-angular-material","vendor-angular-local-storage","vendor-angular-animate","vendor-urlMatcher","vendor-transition","vendor-stateService","vendor-stateDirectives","vendor-flow","chat-e96e9bea","chat-fecd0807"],(()=>("./src/styles/app.scss",e(e.s="./src/styles/app.scss")))),e.O()}]);
\ No newline at end of file
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..58df15577db2f36426488f951dda87e418e442b5
--- /dev/null
@@ -0,0 +1,3 @@
+/*! For license information please see chat-e96e9bea.js.LICENSE.txt */
+(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["chat-e96e9bea"],{"./node_modules/@flowjs/ng-flow/dist/ng-flow.js":(e,t,n)=>{var o=n("./node_modules/@flowjs/flow.js/src/flow.js");angular.module("flow.provider",[]).provider("flowFactory",(function(){"use strict";this.defaults={},this.factory=function(e){return new o(e)},this.events=[],this.on=function(e,t){this.events.push([e,t])},this.$get=function(){var e=this.factory,t=this.defaults,n=this.events;return{create:function(o){var r=e(angular.extend({},t,o));return angular.forEach(n,(function(e){r.on(e[0],e[1])})),r}}}})),angular.module("flow.init",["flow.provider"]).controller("flowCtrl",["$scope","$attrs","$parse","flowFactory",function(e,t,n,o){var r=angular.extend({},e.$eval(t.flowInit)),s=e.$eval(t.flowObject)||o.create(r),a=function(t){var n=Array.prototype.slice.call(arguments);n.shift();var o=e.$broadcast.apply(e,["flow::"+t,s].concat(n));if({progress:1,filesSubmitted:1,fileSuccess:1,fileError:1,complete:1}[t]&&e.$applyAsync(),o.defaultPrevented)return!1};s.on("catchAll",a),e.$on("$destroy",(function(){s.off("catchAll",a)})),e.$flow=s,t.hasOwnProperty("flowName")&&(n(t.flowName).assign(e,s),e.$on("$destroy",(function(){n(t.flowName).assign(e)})))}]).directive("flowInit",[function(){return{scope:!0,controller:"flowCtrl"}}]),angular.module("flow.btn",["flow.init"]).directive("flowBtn",[function(){return{restrict:"EA",scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.hasOwnProperty("flowDirectory"),r=n.hasOwnProperty("flowSingleFile"),s=n.hasOwnProperty("flowAttrs")&&e.$eval(n.flowAttrs);e.$flow.assignBrowse(t,o,r,s)}}}]),angular.module("flow.dragEvents",["flow.init"]).directive("flowPreventDrop",(function(){return{scope:!1,link:function(e,t,n){t.bind("drop dragover",(function(e){e.preventDefault()}))}}})).directive("flowDragEnter",["$timeout",function(e){return{scope:!1,link:function(t,n,o){var r,s=!1;n.bind("dragover",(function(n){var a,i,d;i=!1,d=(a=n).dataTransfer||a.originalEvent.dataTransfer,angular.forEach(d&&d.types,(function(e){"Files"===e&&(i=!0)})),i&&(s||(t.$apply(o.flowDragEnter),s=!0),e.cancel(r),n.preventDefault())})),n.bind("dragleave drop",(function(n){e.cancel(r),r=e((function(){t.$eval(o.flowDragLeave),r=null,s=!1}),100)}))}}}]),angular.module("flow.drop",["flow.init"]).directive("flowDrop",(function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){function o(){e.$flow.assignDrop(t)}n.flowDropEnabled?e.$watch(n.flowDropEnabled,(function(n){n?o():e.$flow.unAssignDrop(t)})):o()}}})),function(e){"use strict";var t=e.module("flow.events",["flow.init"]);e.forEach({fileSuccess:["$file","$message"],fileProgress:["$file"],fileAdded:["$file","$event"],filesAdded:["$files","$event"],filesSubmitted:["$files","$event"],fileRetry:["$file"],fileRemoved:["$file"],fileError:["$file","$message"],uploadStart:[],complete:[],progress:[],error:["$message","$file"]},(function(n,o){var r,s="flow"+((r=o).charAt(0).toUpperCase()+r.slice(1));"flowUploadStart"==s&&(s="flowUploadStarted"),t.directive(s,[function(){return{require:"^flowInit",controller:["$scope","$attrs",function(t,r){t.$on("flow::"+o,(function(){var o=Array.prototype.slice.call(arguments),a=o.shift();if(t.$flow===o.shift()){var i={};e.forEach(n,(function(e,t){i[e]=o[t]})),!1===t.$eval(r[s],i)&&a.preventDefault()}}))}]}}])}))}(angular),angular.module("flow.img",["flow.init"]).directive("flowImg",[function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.flowImg;e.$watch(o,(function(t){if(t){var o=new FileReader;o.readAsDataURL(t.file),o.onload=function(t){e.$apply((function(){n.$set("src",t.target.result)}))}}}))}}}]),angular.module("flow.transfers",["flow.init"]).directive("flowTransfers",[function(){return{scope:!0,require:"^flowInit",link:function(e){e.transfers=e.$flow.files}}}]),angular.module("flow",["flow.provider","flow.init","flow.events","flow.btn","flow.drop","flow.transfers","flow.img","flow.dragEvents"])},"./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js":(e,t,n)=>{"use strict";var o,r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),a=n("./node_modules/@uirouter/angularjs/lib-esm/services.js"),i=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js");function d(e,t,n,o,i){var d=(0,r.parse)("viewDecl.controllerAs"),u=(0,r.parse)("viewDecl.resolveAs");return{restrict:"ECA",priority:-400,compile:function(o){var m=o.html();return o.empty(),function(o,_){var c=_.data("$uiView");if(!c)return _.html(m),void e(_.contents())(o);var h=c.$cfg||{viewDecl:{},getTemplate:r.noop},f=h.path&&new r.ResolveContext(h.path);_.html(h.getTemplate(_,f)||m),r.trace.traceUIViewFill(c.$uiView,_.html());var p=e(_.contents()),M=h.controller,y=d(h),L=u(h),g=f&&(0,a.D)(f);if(o[L]=g,M){var Y=t(M,(0,r.extend)({},g,{$scope:o,$element:_}));y&&(o[y]=Y,o[y][L]=g),_.data("$ngControllerController",Y),_.children().data("$ngControllerController",Y),l(i,n,Y,o,h)}if((0,r.isString)(h.component))var v=(0,r.kebobString)(h.component),j=new RegExp("^(x-|data-)?"+v+"$","i"),k=o.$watch((function(){var e=[].slice.call(_[0].children).filter((function(e){return e&&e.tagName&&j.exec(e.tagName)}));return e&&s.ng.element(e).data("$"+h.component+"Controller")}),(function(e){e&&(l(i,n,e,o,h),k())}));p(o)}}}}o=["$view","$animate","$uiViewScroll","$interpolate","$q",function(e,t,n,o,a){var d={$cfg:{viewDecl:{$context:e._pluginapi._rootViewContext()}},$uiView:{}},u={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(m,l,_){return function(m,l,c){var h,f,p,M,y=c.onload||"",L=c.autoscroll,g=function(e,n,o){s.ng.version.minor>2?t.enter(e,null,n).then(o):t.enter(e,null,n,o)},Y=function(e,n){s.ng.version.minor>2?t.leave(e).then(n):t.leave(e,n)},v=l.inheritedData("$uiView")||d,j=o(c.uiView||c.name||"")(m)||"$default",k={$type:"ng1",id:u.count++,name:j,fqn:v.$uiView.fqn?v.$uiView.fqn+"."+j:j,config:null,configUpdated:function(e){(!e||e instanceof i.qO)&&(M!==e&&(r.trace.traceUIViewConfigUpdated(k,e&&e.viewDecl&&e.viewDecl.$context),M=e,b(e)))},get creationContext(){var e=(0,r.parse)("$cfg.viewDecl.$context")(v),t=(0,r.parse)("$uiView.creationContext")(v);return e||t}};r.trace.traceUIViewEvent("Linking",k),l.data("$uiView",{$uiView:k}),b();var w=e.registerUIView(k);function b(e){var t=m.$new(),o=a.defer(),s=a.defer(),i={$cfg:e,$uiView:k},d={$animEnter:o.promise,$animLeave:s.promise,$$animLeave:s};t.$emit("$viewContentLoading",j);var u=_(t,(function(e){e.data("$uiViewAnim",d),e.data("$uiView",i),g(e,l,(function(){o.resolve(),p&&p.$emit("$viewContentAnimationEnded"),((0,r.isDefined)(L)&&!L||m.$eval(L))&&n(e)})),function(){if(h&&(r.trace.traceUIViewEvent("Removing (previous) el",h.data("$uiView")),h.remove(),h=null),p&&(r.trace.traceUIViewEvent("Destroying scope",k),p.$destroy(),p=null),f){var e=f.data("$uiViewAnim");r.trace.traceUIViewEvent("Animate out",e),Y(f,(function(){e.$$animLeave.resolve(),h=null})),h=f,f=null}}()}));f=u,(p=t).$emit("$viewContentLoaded",e||M),p.$eval(y)}m.$on("$destroy",(function(){r.trace.traceUIViewEvent("Destroying/Unregistering",k),w()}))}}};return u}],d.$inject=["$compile","$controller","$transitions","$view","$q"];var u="function"==typeof s.ng.module("ui.router").component,m=0;function l(e,t,n,o,s){!(0,r.isFunction)(n.$onInit)||(s.viewDecl.component||s.viewDecl.componentProvider)&&u||n.$onInit();var a=(0,r.tail)(s.path).state.self,i={bind:n};if((0,r.isFunction)(n.uiOnParamsChanged)){var d=new r.ResolveContext(s.path).getResolvable("$transition$").data;o.$on("$destroy",t.onSuccess({},(function(e){if(e!==d&&-1===e.exiting().indexOf(a)){var t=e.params("to"),o=e.params("from"),s=function(e){return e.paramSchema},i=e.treeChanges("to").map(s).reduce(r.unnestR,[]),u=e.treeChanges("from").map(s).reduce(r.unnestR,[]),m=i.filter((function(e){var n=u.indexOf(e);return-1===n||!u[n].type.equals(t[e.id],o[e.id])}));if(m.length){var l=m.map((function(e){return e.id})),_=(0,r.filter)(t,(function(e,t){return-1!==l.indexOf(t)}));n.uiOnParamsChanged(_,e)}}}),i))}if((0,r.isFunction)(n.uiCanExit)){var l=m++,_="_uiCanExitIds",c=function(e){return!!e&&(e[_]&&!0===e[_][l]||c(e.redirectedFrom()))},h={exiting:a.name};o.$on("$destroy",t.onBefore(h,(function(t){var o,r=t[_]=t[_]||{};return c(t)||(o=e.when(n.uiCanExit(t))).then((function(e){return r[l]=!1!==e})),o}),i))}}s.ng.module("ui.router.state").directive("uiView",o),s.ng.module("ui.router.state").directive("uiView",d)},"./node_modules/@uirouter/angularjs/lib-esm/interface.js":()=>{},"./node_modules/@uirouter/angularjs/lib-esm/services.js":(e,t,n)=>{"use strict";n.d(t,{D:()=>j});var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js"),a=function(){function e(){var e=this;this._useHttp=o.ng.version.minor<3,this.$get=["$http","$templateCache","$injector",function(t,n,o){return e.$templateRequest=o.has&&o.has("$templateRequest")&&o.get("$templateRequest"),e.$http=t,e.$templateCache=n,e}]}return e.prototype.useHttpService=function(e){this._useHttp=e},e.prototype.fromConfig=function(e,t,n){var o=function(e){return r.services.$q.when(e).then((function(e){return{template:e}}))},s=function(e){return r.services.$q.when(e).then((function(e){return{component:e}}))};return(0,r.isDefined)(e.template)?o(this.fromString(e.template,t)):(0,r.isDefined)(e.templateUrl)?o(this.fromUrl(e.templateUrl,t)):(0,r.isDefined)(e.templateProvider)?o(this.fromProvider(e.templateProvider,t,n)):(0,r.isDefined)(e.component)?s(e.component):(0,r.isDefined)(e.componentProvider)?s(this.fromComponentProvider(e.componentProvider,t,n)):o("<ui-view></ui-view>")},e.prototype.fromString=function(e,t){return(0,r.isFunction)(e)?e(t):e},e.prototype.fromUrl=function(e,t){return(0,r.isFunction)(e)&&(e=e(t)),null==e?null:this._useHttp?this.$http.get(e,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then((function(e){return e.data})):this.$templateRequest(e)},e.prototype.fromProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.fromComponentProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.makeComponentTemplate=function(e,t,n,s){s=s||{};var a=o.ng.version.minor>=3?"::":"",d=function(e){var t=(0,r.kebobString)(e);return/^(x|data)-/.exec(t)?"x-"+t:t},u=function(e){var t=r.services.$injector.get(e+"Directive");if(!t||!t.length)throw new Error("Unable to find component named '"+e+"'");return t.map(i).reduce(r.unnestR,[])}(n).map((function(n){var o=n.name,i=n.type,u=d(o);if(e.attr(u)&&!s[o])return u+"='"+e.attr(u)+"'";var m=s[o]||o;if("@"===i)return u+"='{{"+a+"$resolve."+m+"}}'";if("&"===i){var l=t.getResolvable(m),_=l&&l.data,c=_&&r.services.$injector.annotate(_)||[];return u+"='$resolve."+m+((0,r.isArray)(_)?"["+(_.length-1)+"]":"")+"("+c.join(",")+")'"}return u+"='"+a+"$resolve."+m+"'"})).join(" "),m=d(n);return"<"+m+" "+u+"></"+m+">"},e}(),i=function(e){return(0,r.isObject)(e.bindToController)?d(e.bindToController):d(e.scope)},d=function(e){return Object.keys(e||{}).map((function(t){return[t,/^([=<@&])[?]?(.*)/.exec(e[t])]})).filter((function(e){return(0,r.isDefined)(e)&&(0,r.isArray)(e[1])})).map((function(e){return{name:e[1][2]||e[0],type:e[1][1]}}))},u=n("./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js"),m=function(e){return function(t){var n=t[e],o="onExit"===e?"from":"to";return n?function(e,t){var s=new r.ResolveContext(e.treeChanges(o)).subContext(t.$$state()),a=(0,r.extend)(j(s),{$state$:t,$transition$:e});return r.services.$injector.invoke(n,this,a)}:void 0}},l=function(){function e(e){this._urlListeners=[],this.$locationProvider=e;var t=(0,r.val)(e);(0,r.createProxyFunctions)(t,this,t,["hashPrefix"])}return e.monkeyPatchPathParameterType=function(e){var t=e.urlMatcherFactory.type("path");t.encode=function(e){return null!=e?e.toString().replace(/(~|\/)/g,(function(e){return{"~":"~~","/":"~2F"}[e]})):e},t.decode=function(e){return null!=e?e.toString().replace(/(~~|~2F)/g,(function(e){return{"~~":"~","~2F":"/"}[e]})):e}},e.prototype.dispose=function(){},e.prototype.onChange=function(e){var t=this;return this._urlListeners.push(e),function(){return(0,r.removeFrom)(t._urlListeners)(e)}},e.prototype.html5Mode=function(){var e=this.$locationProvider.html5Mode();return(e=(0,r.isObject)(e)?e.enabled:e)&&this.$sniffer.history},e.prototype.baseHref=function(){return this._baseHref||(this._baseHref=this.$browser.baseHref()||this.$window.location.pathname)},e.prototype.url=function(e,t,n){return void 0===t&&(t=!1),(0,r.isDefined)(e)&&this.$location.url(e),t&&this.$location.replace(),n&&this.$location.state(n),this.$location.url()},e.prototype._runtimeServices=function(e,t,n,o,s){var a=this;this.$location=t,this.$sniffer=n,this.$browser=o,this.$window=s,e.$on("$locationChangeSuccess",(function(e){return a._urlListeners.forEach((function(t){return t(e)}))}));var i=(0,r.val)(t);(0,r.createProxyFunctions)(i,this,i,["replace","path","search","hash"]),(0,r.createProxyFunctions)(i,this,i,["port","protocol","host"])},e}(),_=n("./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js");o.ng.module("ui.router.angular1",[]);var c=o.ng.module("ui.router.init",["ng"]),h=o.ng.module("ui.router.util",["ui.router.init"]),f=o.ng.module("ui.router.router",["ui.router.util"]),p=o.ng.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),M=o.ng.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),y=(o.ng.module("ui.router.compat",["ui.router"]),null);function L(e){(y=this.router=new r.UIRouter).stateProvider=new u.X(y.stateRegistry,y.stateService),y.stateRegistry.decorator("views",s.LB),y.stateRegistry.decorator("onExit",m("onExit")),y.stateRegistry.decorator("onRetain",m("onRetain")),y.stateRegistry.decorator("onEnter",m("onEnter")),y.viewService._pluginapi._viewConfigFactory("ng1",(0,s.OB)()),y.urlService.config._decodeParams=!1;var t=y.locationService=y.locationConfig=new l(e);function n(e,n,o,r,s,a,i){return t._runtimeServices(s,e,r,n,o),delete y.router,delete y.$get,y}return l.monkeyPatchPathParameterType(y),y.router=y,y.$get=n,n.$inject=["$location","$browser","$window","$sniffer","$rootScope","$http","$templateCache"],y}L.$inject=["$locationProvider"];var g=function(e){return["$uiRouterProvider",function(t){var n=t.router[e];return n.$get=function(){return n},n}]};function Y(e,t,n){if(r.services.$injector=e,r.services.$q=t,!Object.prototype.hasOwnProperty.call(e,"strictDi"))try{e.invoke((function(e){}))}catch(t){e.strictDi=!!/strict mode/.exec(t&&t.toString())}n.stateRegistry.get().map((function(e){return e.$$state().resolvables})).reduce(r.unnestR,[]).filter((function(e){return"deferred"===e.deps})).forEach((function(t){return t.deps=e.annotate(t.resolveFn,e.strictDi)}))}function v(e){e.$watch((function(){r.trace.approximateDigests++}))}Y.$inject=["$injector","$q","$uiRouter"],v.$inject=["$rootScope"],c.provider("$uiRouter",L),f.provider("$urlRouter",["$uiRouterProvider",function(e){return e.urlRouterProvider=new _.L(e)}]),h.provider("$urlService",g("urlService")),h.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return y.urlMatcherFactory}]),h.provider("$templateFactory",(function(){return new a})),p.provider("$stateRegistry",g("stateRegistry")),p.provider("$uiRouterGlobals",g("globals")),p.provider("$transitions",g("transitionService")),p.provider("$state",["$uiRouterProvider",function(){return(0,r.extend)(y.stateProvider,{$get:function(){return y.stateService}})}]),p.factory("$stateParams",["$uiRouter",function(e){return e.globals.params}]),M.factory("$view",(function(){return y.viewService})),M.service("$trace",(function(){return r.trace})),M.run(v),h.run(["$urlMatcherFactory",function(e){}]),p.run(["$state",function(e){}]),f.run(["$urlRouter",function(e){}]),c.run(Y);var j=function(e){return e.getTokens().filter(r.isString).map((function(t){var n=e.getResolvable(t);return[t,"NOWAIT"===e.getPolicy(n).async?n.promise:n.data]})).reduce(r.applyPairs,{})}},"./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js");function r(e){var t=function(t,n,o){return e.is(t,n,o)};return t.$stateful=!0,t}function s(e){var t=function(t,n,o){return e.includes(t,n,o)};return t.$stateful=!0,t}r.$inject=["$state"],s.$inject=["$state"],o.ng.module("ui.router.state").filter("isState",r).filter("includedByState",s)},"./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(t,n){this.stateRegistry=t,this.stateService=n,(0,o.createProxyFunctions)((0,o.val)(e.prototype),this,(0,o.val)(this))}return e.prototype.decorator=function(e,t){return this.stateRegistry.decorator(e,t)||this},e.prototype.state=function(e,t){return(0,o.isObject)(e)?t=e:t.name=e,this.stateRegistry.register(t),this},e.prototype.onInvalid=function(e){return this.stateService.onInvalid(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js":(e,t,n)=>{"use strict";n.d(t,{OB:()=>r,LB:()=>a,qO:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/index.js");function r(){var e=null;return function(t,n){return e=e||o.services.$injector.get("$templateFactory"),[new d(t,n,e)]}}var s=function(e,t){return e.reduce((function(e,n){return e||(0,o.isDefined)(t[n])}),!1)};function a(e){if(!e.parent)return{};var t=["component","bindings","componentProvider"],n=["templateProvider","templateUrl","template","notify","async"].concat(["controller","controllerProvider","controllerAs","resolveAs"]),r=t.concat(n);if((0,o.isDefined)(e.views)&&s(r,e))throw new Error("State '"+e.name+"' has a 'views' object. It cannot also have \"view properties\" at the state level.  Move the following properties into a view (in the 'views' object):  "+r.filter((function(t){return(0,o.isDefined)(e[t])})).join(", "));var a={},i=e.views||{$default:(0,o.pick)(e,r)};return(0,o.forEach)(i,(function(r,i){if(i=i||"$default",(0,o.isString)(r)&&(r={component:r}),r=(0,o.extend)({},r),s(t,r)&&s(n,r))throw new Error("Cannot combine: "+t.join("|")+" with: "+n.join("|")+" in stateview: '"+i+"@"+e.name+"'");r.resolveAs=r.resolveAs||"$resolve",r.$type="ng1",r.$context=e,r.$name=i;var d=o.ViewService.normalizeUIViewTarget(r.$context,r.$name);r.$uiViewName=d.uiViewName,r.$uiViewContextAnchor=d.uiViewContextAnchor,a[i]=r})),a}var i=0,d=function(){function e(e,t,n){var o=this;this.path=e,this.viewDecl=t,this.factory=n,this.$id=i++,this.loaded=!1,this.getTemplate=function(e,t){return o.component?o.factory.makeComponentTemplate(e,t,o.component,o.viewDecl.bindings):o.template}}return e.prototype.load=function(){var e=this,t=o.services.$q,n=new o.ResolveContext(this.path),r=this.path.reduce((function(e,t){return(0,o.extend)(e,t.paramValues)}),{}),s={template:t.when(this.factory.fromConfig(this.viewDecl,r,n)),controller:t.when(this.getController(n))};return t.all(s).then((function(t){return o.trace.traceViewServiceEvent("Loaded",e),e.controller=t.controller,(0,o.extend)(e,t.template),e}))},e.prototype.getController=function(e){var t=this.viewDecl.controllerProvider;if(!(0,o.isInjectable)(t))return this.viewDecl.controller;var n=o.services.$injector.annotate(t),r=(0,o.isArray)(t)?(0,o.tail)(t):t;return new o.Resolvable("",r,n).get(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(e){this.router=e}return e.injectableHandler=function(e,t){return function(n){return o.services.$injector.invoke(t,null,{$match:n,$stateParams:e.globals.params})}},e.prototype.$get=function(){var e=this.router.urlService;return this.router.urlRouter.update(!0),e.interceptDeferred||e.listen(),this.router.urlRouter},e.prototype.rule=function(e){var t=this;if(!(0,o.isFunction)(e))throw new Error("'rule' must be a function");var n=new o.BaseUrlRule((function(){return e(o.services.$injector,t.router.locationService)}),o.identity);return this.router.urlService.rules.rule(n),this},e.prototype.otherwise=function(e){var t=this,n=this.router.urlService.rules;if((0,o.isString)(e))n.otherwise(e);else{if(!(0,o.isFunction)(e))throw new Error("'rule' must be a string or function");n.otherwise((function(){return e(o.services.$injector,t.router.locationService)}))}return this},e.prototype.when=function(t,n){return((0,o.isArray)(n)||(0,o.isFunction)(n))&&(n=e.injectableHandler(this.router,n)),this.router.urlService.rules.when(t,n),this},e.prototype.deferIntercept=function(e){this.router.urlService.deferIntercept(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/angularjs/lib-esm/angular.js").ng.module("ui.router.state").provider("$uiViewScroll",(function(){var e=!1;this.useAnchorScroll=function(){e=!0},this.$get=["$anchorScroll","$timeout",function(t,n){return e?t:function(e){return n((function(){e[0].scrollIntoView()}),0,!1)}}]}))},"./node_modules/@uirouter/core/lib-esm/common/common.js":(e,t,n)=>{"use strict";n.d(t,{Jz:()=>i,xZ:()=>u,Qs:()=>m,Ed:()=>l,l7:()=>_,fS:()=>c,yR:()=>h,ZT:()=>f,WR:()=>p,ED:()=>M,d3:()=>y,nA:()=>L,LH:()=>g,Wk:()=>Y,ce:()=>v,LQ:()=>j,mX:()=>k,ei:()=>w,CE:()=>b,hX:()=>D,sE:()=>T,js:()=>S,UI:()=>H,VO:()=>x,XC:()=>E,o8:()=>P,M7:()=>O,FN:()=>A,Ez:()=>$,v_:()=>R,UW:()=>F,sp:()=>W,ym:()=>C,bb:()=>I,Gb:()=>z,JG:()=>J,HX:()=>V,jv:()=>U});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),a=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o},i="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g||void 0,d=i.angular||{},u=d.fromJson||JSON.parse.bind(JSON),m=d.toJson||JSON.stringify.bind(JSON),l=d.forEach||function(e,t,n){if((0,o.kJ)(e))return e.forEach(t,n);Object.keys(e).forEach((function(n){return t(e[n],n)}))},_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];if(n)for(var o=Object.keys(n),r=0;r<o.length;r++)e[o[r]]=n[o[r]]}return e},c=d.equals||function e(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;var s=typeof t;if(s!==typeof n||"object"!==s)return!1;var a,i,d=[t,n];if((0,r.$6)(o.kJ)(d))return i=n,(a=t).length===i.length&&C(a,i).reduce((function(t,n){return t&&e(n[0],n[1])}),!0);if((0,r.$6)(o.J_)(d))return t.getTime()===n.getTime();if((0,r.$6)(o.Kj)(d))return t.toString()===n.toString();if((0,r.$6)(o.mf)(d))return!0;if([o.mf,o.kJ,o.J_,o.Kj].map(r.Yj).reduce((function(e,t){return e||!!t(d)}),!1))return!1;var u={};for(var m in t){if(!e(t[m],n[m]))return!1;u[m]=!0}for(var m in n)if(!u[m])return!1;return!0};function h(e){return e}function f(){}function p(e,t,n,o,r){void 0===r&&(r=!1);var s=function(t){return e()[t].bind(n())};return(o=o||Object.keys(e())).reduce((function(e,n){var o;return e[n]=r?(o=n,function(){return t[o]=s(o),t[o].apply(null,arguments)}):s(n),e}),t)}var M=function(e,t){return _(Object.create(e),t)},y=(0,r.WA)((function(e,t){return-1!==e.indexOf(t)})),L=(0,r.WA)((function(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),e})),g=(0,r.WA)((function(e,t){return e.push(t),t})),Y=function(e){return e.slice().forEach((function(t){"function"==typeof t&&t(),L(e,t)}))};function v(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var o=_.apply(void 0,a([{}],t.reverse()));return _(o,w(e||{},Object.keys(o)))}var j=function(e,t){return _(e,t)};function k(e,t){var n=[];for(var o in e.path){if(e.path[o]!==t.path[o])break;n.push(e.path[o])}return n}function w(e,t){var n={};for(var o in e)-1!==t.indexOf(o)&&(n[o]=e[o]);return n}function b(e,t){return Object.keys(e).filter((0,r.ff)(y(t))).reduce((function(t,n){return t[n]=e[n],t}),{})}function D(e,t){var n=(0,o.kJ)(e),r=n?[]:{},s=n?function(e){return r.push(e)}:function(e,t){return r[t]=e};return l(e,(function(e,n){t(e,n)&&s(e,n)})),r}function T(e,t){var n;return l(e,(function(e,o){n||t(e,o)&&(n=e)})),n}var S=H;function H(e,t,n){return n=n||((0,o.kJ)(e)?[]:{}),l(e,(function(e,o){return n[o]=t(e,o)})),n}var x=function(e){return Object.keys(e).map((function(t){return e[t]}))},E=function(e,t){return e&&t},P=function(e,t){return e||t},O=function(e,t){return e.concat(t)},A=function(e,t){return(0,o.kJ)(t)?e.concat(t.reduce(A,[])):$(e,t)};function $(e,t){return e.push(t),e}var R=function(e,t){return y(e,t)?e:$(e,t)},F=function(e){return e.reduce(O,[])},W=function(e,t){return void 0===t&&(t="assert failure"),function(n){var r=e(n);if(!r)throw new Error((0,o.mf)(t)?t(n):t);return r}};function C(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)return[];for(var n=e.reduce((function(e,t){return Math.min(t.length,e)}),9007199254740991),o=[],r=function(t){switch(e.length){case 1:o.push([e[0][t]]);break;case 2:o.push([e[0][t],e[1][t]]);break;case 3:o.push([e[0][t],e[1][t],e[2][t]]);break;case 4:o.push([e[0][t],e[1][t],e[2][t],e[3][t]]);break;default:o.push(e.map((function(e){return e[t]})))}},s=0;s<n;s++)r(s);return o}function I(e,t){var n,r;if((0,o.kJ)(t)&&(n=t[0],r=t[1]),!(0,o.HD)(n))throw new Error("invalid parameters to applyPairs");return e[n]=r,e}function z(e){return e.length&&e[e.length-1]||void 0}function J(e,t){return t&&Object.keys(t).forEach((function(e){return delete t[e]})),t||(t={}),_(t,e)}var V=function(e){return e.catch((function(e){return 0}))&&e},U=function(e){return V(s.u.$q.reject(e))}},"./node_modules/@uirouter/core/lib-esm/common/coreservices.js":(e,t,n)=>{"use strict";n.d(t,{H:()=>o,u:()=>r});var o=function(e,t){return t.reduce((function(t,n){return t[n]=(o=e+"."+n+"()",function(){throw new Error("No implementation for "+o+". The framework specific code did not implement this method.")}),t;var o}),{})},r={$q:void 0,$injector:void 0}},"./node_modules/@uirouter/core/lib-esm/common/glob.js":(e,t,n)=>{"use strict";n.d(t,{r:()=>o});var o=function(){function e(e){this.text=e,this.glob=e.split(".");var t=this.text.split(".").map((function(e){return"**"===e?"(?:|(?:\\.[^.]*)*)":"*"===e?"\\.[^.]*":"\\."+e})).join("");this.regexp=new RegExp("^"+t+"$")}return e.is=function(e){return!!/[!,*]+/.exec(e)},e.fromString=function(t){return e.is(t)?new e(t):null},e.prototype.matches=function(e){return this.regexp.test("."+e)},e}()},"./node_modules/@uirouter/core/lib-esm/common/hof.js":(e,t,n)=>{"use strict";n.d(t,{WA:()=>r,zG:()=>a,vg:()=>i,OH:()=>d,Qc:()=>u,ff:()=>m,xD:()=>l,or:()=>_,$6:()=>c,Yj:()=>h,is:()=>f,P0:()=>p,uj:()=>M});var o=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o};function r(e){return function t(){if(arguments.length>=e.length)return e.apply(this,arguments);var n=Array.prototype.slice.call(arguments);return t.bind.apply(t,o([this],n))}}function s(){var e=arguments,t=e.length-1;return function(){for(var n=t,o=e[t].apply(this,arguments);n--;)o=e[n].call(this,o);return o}}function a(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.apply(null,[].slice.call(arguments).reverse())}var i=function(e){return function(t){return t&&t[e]}},d=r((function(e,t,n){return n&&n[e]===t})),u=function(e){return a.apply(null,e.split(".").map(i))},m=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return!e.apply(null,t)}};function l(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)&&t.apply(null,n)}}function _(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)||t.apply(null,n)}}var c=function(e){return function(t){return t.reduce((function(t,n){return t&&!!e(n)}),!0)}},h=function(e){return function(t){return t.reduce((function(t,n){return t||!!e(n)}),!1)}},f=function(e){return function(t){return null!=t&&t.constructor===e||t instanceof e}},p=function(e){return function(){return e}};function M(e){return function(t){for(var n=0;n<e.length;n++)if(e[n][0](t))return e[n][1](t)}}},"./node_modules/@uirouter/core/lib-esm/common/predicates.js":(e,t,n)=>{"use strict";n.d(t,{o8:()=>a,$K:()=>i,Ft:()=>d,le:()=>u,mf:()=>m,hj:()=>l,HD:()=>_,Kn:()=>c,kJ:()=>h,J_:()=>f,Kj:()=>p,Qh:()=>M,tI:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),r=Object.prototype.toString,s=function(e){return function(t){return typeof t===e}},a=s("undefined"),i=(0,o.ff)(a),d=function(e){return null===e},u=(0,o.or)(d,a),m=s("function"),l=s("number"),_=s("string"),c=function(e){return null!==e&&"object"==typeof e},h=Array.isArray,f=function(e){return"[object Date]"===r.call(e)},p=function(e){return"[object RegExp]"===r.call(e)};function M(e){if(h(e)&&e.length){var t=e.slice(0,-1),n=e.slice(-1);return!(t.filter((0,o.ff)(_)).length||n.filter((0,o.ff)(m)).length)}return m(e)}var y=(0,o.xD)(c,(0,o.zG)((0,o.vg)("then"),m))},"./node_modules/@uirouter/core/lib-esm/common/queue.js":(e,t,n)=>{"use strict";n.d(t,{c:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e,t){void 0===e&&(e=[]),void 0===t&&(t=null),this._items=e,this._limit=t,this._evictListeners=[],this.onEvict=(0,o.LH)(this._evictListeners)}return e.prototype.enqueue=function(e){var t=this._items;return t.push(e),this._limit&&t.length>this._limit&&this.evict(),e},e.prototype.evict=function(){var e=this._items.shift();return this._evictListeners.forEach((function(t){return t(e)})),e},e.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},e.prototype.clear=function(){var e=this._items;return this._items=[],e},e.prototype.size=function(){return this._items.length},e.prototype.remove=function(e){var t=this._items.indexOf(e);return t>-1&&this._items.splice(t,1)[0]},e.prototype.peekTail=function(){return this._items[this._items.length-1]},e.prototype.peekHead=function(){if(this.size())return this._items[0]},e}()},"./node_modules/@uirouter/core/lib-esm/common/safeConsole.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r={log:o.ZT,error:o.ZT,table:o.ZT},s="undefined"!=typeof document&&document.documentMode&&9===document.documentMode?window&&window.console?function(e){var t=function(t){return Function.prototype.bind.call(t,e)};return{log:t(e.log),error:t(e.log),table:t(e.log)}}(window.console):r:console.table&&console.error?console:function(e){var t=e.log.bind(e);return{log:t,error:e.error?e.error.bind(e):t,table:e.table?e.table.bind(e):t}}(console)},"./node_modules/@uirouter/core/lib-esm/common/strings.js":(e,t,n)=>{"use strict";n.d(t,{BS:()=>i,NE:()=>d,L$:()=>u,XF:()=>m,iC:()=>l,Pz:()=>h,Lb:()=>p,cW:()=>M,C7:()=>y,Fb:()=>L,HV:()=>g,PX:()=>Y,iV:()=>v});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");function i(e,t){return t.length<=e?t:t.substr(0,e-3)+"..."}function d(e,t){for(;t.length<e;)t+=" ";return t}function u(e){return e.replace(/^([A-Z])/,(function(e){return e.toLowerCase()})).replace(/([A-Z])/g,(function(e){return"-"+e.toLowerCase()}))}function m(e){var t=l(e),n=t.match(/^(function [^ ]+\([^)]*\))/),o=n?n[1]:t,r=e.name||"";return r&&o.match(/function \(/)?"function "+r+o.substr(9):o}function l(e){var t=(0,o.kJ)(e)?e.slice(-1)[0]:e;return t&&t.toString()||"undefined"}var _=r.i.isRejectionPromise,c=(0,a.uj)([[o.o8,(0,a.P0)("undefined")],[o.Ft,(0,a.P0)("null")],[o.tI,(0,a.P0)("[Promise]")],[_,function(e){return e._transitionRejection.toString()}],[function(e){return(0,o.Kn)(e)&&!(0,o.kJ)(e)&&e.constructor!==Object&&(0,o.mf)(e.toString)},function(e){return e.toString()}],[o.Qh,m],[(0,a.P0)(!0),s.yR]]);function h(e){var t=[];function n(e){if((0,o.Kn)(e)){if(-1!==t.indexOf(e))return"[circular ref]";t.push(e)}return c(e)}return(0,o.o8)(e)?n(e):JSON.stringify(e,(function(e,t){return n(t)})).replace(/\\"/g,'"')}var f=function(e){return function(t){if(!t)return["",""];var n=t.indexOf(e);return-1===n?[t,""]:[t.substr(0,n),t.substr(n+1)]}},p=function(e){return e.replace(/\/[^/]*$/,"")},M=f("#"),y=f("?"),L=f("="),g=function(e){return e?e.replace(/^#/,""):""};function Y(e){var t=new RegExp("("+e+")","g");return function(e){return e.split(t).filter(s.yR)}}function v(e,t){return(0,o.HD)((0,s.Gb)(e))&&(0,o.HD)(t)?e.slice(0,-1).concat((0,s.Gb)(e)+t):(0,s.Ez)(e,t)}},"./node_modules/@uirouter/core/lib-esm/common/trace.js":(e,t,n)=>{"use strict";n.d(t,{g4:()=>c});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js");function d(e){if(!e)return"ui-view (defunct)";var t=e.creationContext?e.creationContext.name||"(root)":"(none)";return"[ui-view#"+e.id+" "+e.$type+":"+e.fqn+" ("+e.name+"@"+t+")]"}function u(e){return(0,s.hj)(e)?o[e]:o[o[e]]}!function(e){e[e.RESOLVE=0]="RESOLVE",e[e.TRANSITION=1]="TRANSITION",e[e.HOOK=2]="HOOK",e[e.UIVIEW=3]="UIVIEW",e[e.VIEWCONFIG=4]="VIEWCONFIG"}(o||(o={}));var m=(0,r.Qc)("$id"),l=(0,r.Qc)("router.$id"),_=function(e){return"Transition #"+m(e)+"-"+l(e)},c=new(function(){function e(){this._enabled={},this.approximateDigests=0}return e.prototype._set=function(e,t){var n=this;t.length||(t=Object.keys(o).map((function(e){return parseInt(e,10)})).filter((function(e){return!isNaN(e)})).map((function(e){return o[e]}))),t.map(u).forEach((function(t){return n._enabled[t]=e}))},e.prototype.enable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!0,e)},e.prototype.disable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!1,e)},e.prototype.enabled=function(e){return!!this._enabled[u(e)]},e.prototype.traceTransitionStart=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Started  -> "+(0,a.Pz)(e))},e.prototype.traceTransitionIgnored=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Ignored  <> "+(0,a.Pz)(e))},e.prototype.traceHookInvocation=function(e,t,n){if(this.enabled(o.HOOK)){var s=(0,r.Qc)("traceData.hookType")(n)||"internal",d=(0,r.Qc)("traceData.context.state.name")(n)||(0,r.Qc)("traceData.context")(n)||"unknown",u=(0,a.XF)(e.registeredHook.callback);i.L.log(_(t)+":   Hook -> "+s+" context: "+d+", "+(0,a.BS)(200,u))}},e.prototype.traceHookResult=function(e,t,n){this.enabled(o.HOOK)&&i.L.log(_(t)+":   <- Hook returned: "+(0,a.BS)(200,(0,a.Pz)(e)))},e.prototype.traceResolvePath=function(e,t,n){this.enabled(o.RESOLVE)&&i.L.log(_(n)+":         Resolving "+e+" ("+t+")")},e.prototype.traceResolvableResolved=function(e,t){this.enabled(o.RESOLVE)&&i.L.log(_(t)+":               <- Resolved  "+e+" to: "+(0,a.BS)(200,(0,a.Pz)(e.data)))},e.prototype.traceError=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Rejected "+(0,a.Pz)(t)+", reason: "+e)},e.prototype.traceSuccess=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Success  "+(0,a.Pz)(t)+", final state: "+e.name)},e.prototype.traceUIViewEvent=function(e,t,n){void 0===n&&(n=""),this.enabled(o.UIVIEW)&&i.L.log("ui-view: "+(0,a.NE)(30,e)+" "+d(t)+n)},e.prototype.traceUIViewConfigUpdated=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Updating",e," with ViewConfig from context='"+t+"'")},e.prototype.traceUIViewFill=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Fill",e," with: "+(0,a.BS)(200,t))},e.prototype.traceViewSync=function(e){if(this.enabled(o.VIEWCONFIG)){var t="uiview component fqn",n=e.map((function(e){var n,o=e.uiView,r=e.viewConfig,s=o&&o.fqn,a=r&&r.viewDecl.$context.name+": ("+r.viewDecl.$name+")";return(n={})[t]=s,n["view config state (view name)"]=a,n})).sort((function(e,n){return(e[t]||"").localeCompare(n[t]||"")}));i.L.table(n)}},e.prototype.traceViewServiceEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+function(e){var t=e.viewDecl,n=t.$context.name||"(root)";return"[View#"+e.$id+" from '"+n+"' state]: target ui-view: '"+t.$uiViewName+"@"+t.$uiViewContextAnchor+"'"}(t))},e.prototype.traceViewServiceUIViewEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+d(t))},e}())},"./node_modules/@uirouter/core/lib-esm/globals.js":(e,t,n)=>{"use strict";n.d(t,{k:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/stateParams.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/queue.js"),s=function(){function e(){this.params=new o.i,this.lastStartedTransitionId=-1,this.transitionHistory=new r.c([],1),this.successfulTransitions=new r.c([],1)}return e.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},e}()},"./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js":(e,t,n)=>{"use strict";n.d(t,{v:()=>s,A:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),r=function(e){var t=e.router,n=e.entering().filter((function(e){return!!e.$$state().lazyLoad})).map((function(t){return a(e,t)}));return o.u.$q.all(n).then((function(){if("url"!==e.originalTransition().options().source){var n=e.targetState();return t.stateService.target(n.identifier(),n.params(),n.options())}var o=t.urlService,r=o.match(o.parts()),s=r&&r.rule;if(s&&"STATE"===s.type){var a=s.state,i=r.match;return t.stateService.target(a,i,e.options())}t.urlService.sync()}))},s=function(e){return e.onBefore({entering:function(e){return!!e.lazyLoad}},r)};function a(e,t){var n=t.$$state().lazyLoad,r=n._promise;return r||(r=n._promise=o.u.$q.when(n(e,t)).then((function(t){return t&&Array.isArray(t.states)&&t.states.forEach((function(t){return e.router.stateRegistry.register(t)})),t})).then((function(e){return delete t.lazyLoad,delete t.$$state().lazyLoad,delete n._promise,e}),(function(e){return delete n._promise,o.u.$q.reject(e)}))),r}},"./node_modules/@uirouter/core/lib-esm/interface.js":(e,t,n)=>{},"./node_modules/@uirouter/core/lib-esm/params/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/params/param.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>o,d:()=>m});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=Object.prototype.hasOwnProperty;!function(e){e[e.PATH=0]="PATH",e[e.SEARCH=1]="SEARCH",e[e.CONFIG=2]="CONFIG"}(o||(o={}));var m=function(){function e(e,t,n,i,m){var l=function(e,t,n){var s=!1===n.reloadOnSearch&&t===o.SEARCH||void 0,i=(0,r.sE)([n.dynamic,s],a.$K),d=(0,a.$K)(i)?{dynamic:i}:{},m=function(e){function t(){return e.value}e=function(e){return 0===["value","type","squash","array","dynamic"].filter(u.bind(e||{})).length}(e)?{value:e}:e,t.__cacheable=!0;var n=(0,a.Qh)(e.value)?e.value:t;return(0,r.l7)(e,{$$fn:n})}(n&&n.params&&n.params[e]);return(0,r.l7)(d,m)}(e,n,m);t=function(e,t,n,r,s){if(e.type&&t&&"string"!==t.name)throw new Error("Param '"+r+"' has two type configurations.");if(e.type&&t&&"string"===t.name&&s.type(e.type))return s.type(e.type);if(t)return t;if(!e.type){var a=n===o.CONFIG?"any":n===o.PATH?"path":n===o.SEARCH?"query":"string";return s.type(a)}return e.type instanceof d._?e.type:s.type(e.type)}(l,t,n,e,i.paramTypes);var _,c,h=(_={array:n===o.SEARCH&&"auto"},c=e.match(/\[\]$/)?{array:!0}:{},(0,r.l7)(_,c,l).array);t=h?t.$asArray(h,n===o.SEARCH):t;var f=void 0!==l.value||n===o.SEARCH,p=(0,a.$K)(l.dynamic)?!!l.dynamic:!!t.dynamic,M=(0,a.$K)(l.raw)?!!l.raw:!!t.raw,y=function(e,t,n){var o=e.squash;if(!t||!1===o)return!1;if(!(0,a.$K)(o)||null==o)return n;if(!0===o||(0,a.HD)(o))return o;throw new Error("Invalid squash policy: '"+o+"'. Valid policies: false, true, or arbitrary string")}(l,f,i.defaultSquashPolicy()),L=function(e,t,n,o){var i=[{from:"",to:n||t?void 0:""},{from:null,to:n||t?void 0:""}],d=(0,a.kJ)(e.replace)?e.replace:[];(0,a.HD)(o)&&d.push({from:o,to:void 0});var u=(0,r.UI)(d,(0,s.vg)("from"));return(0,r.hX)(i,(function(e){return-1===u.indexOf(e.from)})).concat(d)}(l,h,f,y),g=(0,a.$K)(l.inherit)?!!l.inherit:!!t.inherit;(0,r.l7)(this,{id:e,type:t,location:n,isOptional:f,dynamic:p,raw:M,squash:y,replace:L,inherit:g,array:h,config:l})}return e.values=function(e,t){void 0===t&&(t={});for(var n={},o=0,r=e;o<r.length;o++){var s=r[o];n[s.id]=s.value(t[s.id])}return n},e.changed=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e.filter((function(e){return!e.type.equals(t[e.id],n[e.id])}))},e.equals=function(t,n,o){return void 0===n&&(n={}),void 0===o&&(o={}),0===e.changed(t,n,o).length},e.validates=function(e,t){return void 0===t&&(t={}),e.map((function(e){return e.validates(t[e.id])})).reduce(r.XC,!0)},e.prototype.isDefaultValue=function(e){return this.isOptional&&this.type.equals(this.value(),e)},e.prototype.value=function(e){var t=this;return e=function(e){for(var n=0,o=t.replace;n<o.length;n++){var r=o[n];if(r.from===e)return r.to}return e}(e),(0,a.o8)(e)?function(){if(t._defaultValueCache)return t._defaultValueCache.defaultValue;if(!i.u.$injector)throw new Error("Injectable functions cannot be called at configuration time");var e=i.u.$injector.invoke(t.config.$$fn);if(null!=e&&!t.type.is(e))throw new Error("Default value ("+e+") for parameter '"+t.id+"' is not an instance of ParamType ("+t.type.name+")");return t.config.$$fn.__cacheable&&(t._defaultValueCache={defaultValue:e}),e}():this.type.$normalize(e)},e.prototype.isSearch=function(){return this.location===o.SEARCH},e.prototype.validates=function(e){if(((0,a.o8)(e)||null===e)&&this.isOptional)return!0;var t=this.type.$normalize(e);if(!this.type.is(t))return!1;var n=this.type.encode(t);return!((0,a.HD)(n)&&!this.type.pattern.exec(n))},e.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},e}()},"./node_modules/@uirouter/core/lib-esm/params/paramType.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=function(){function e(e){this.pattern=/.*/,this.inherit=!0,(0,o.l7)(this,e)}return e.prototype.is=function(e,t){return!0},e.prototype.encode=function(e,t){return e},e.prototype.decode=function(e,t){return e},e.prototype.equals=function(e,t){return e==t},e.prototype.$subPattern=function(){var e=this.pattern.toString();return e.substr(1,e.length-2)},e.prototype.toString=function(){return"{ParamType:"+this.name+"}"},e.prototype.$normalize=function(e){return this.is(e)?e:this.decode(e)},e.prototype.$asArray=function(e,t){if(!e)return this;if("auto"===e&&!t)throw new Error("'auto' array mode is for query parameters only");return new a(this,e)},e}();function a(e,t){var n=this;function s(e){return(0,r.kJ)(e)?e:(0,r.$K)(e)?[e]:[]}function a(e,n){return function(a){if((0,r.kJ)(a)&&0===a.length)return a;var i=s(a),d=(0,o.UI)(i,e);return!0===n?0===(0,o.hX)(d,(function(e){return!e})).length:function(e){switch(e.length){case 0:return;case 1:return"auto"===t?e[0]:e;default:return e}}(d)}}function i(e){return function(t,n){var o=s(t),r=s(n);if(o.length!==r.length)return!1;for(var a=0;a<o.length;a++)if(!e(o[a],r[a]))return!1;return!0}}["encode","decode","equals","$normalize"].forEach((function(t){var o=e[t].bind(e),r="equals"===t?i:a;n[t]=r(o)})),(0,o.l7)(this,{dynamic:e.dynamic,name:e.name,pattern:e.pattern,inherit:e.inherit,raw:e.raw,is:a(e.is.bind(e),!0),$arrayMode:t})}},"./node_modules/@uirouter/core/lib-esm/params/paramTypes.js":(e,t,n)=>{"use strict";n.d(t,{p:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=function(){function e(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes=(0,r.ei)(e.prototype,["hash","string","query","path","int","bool","date","json","any"]),this.types=(0,r.ED)((0,r.UI)(this.defaultTypes,(function(e,t){return new d._((0,r.l7)({name:t},e))})),{})}return e.prototype.dispose=function(){this.types={}},e.prototype.type=function(e,t,n){if(!(0,s.$K)(t))return this.types[e];if(this.types.hasOwnProperty(e))throw new Error("A type named '"+e+"' has already been defined.");return this.types[e]=new d._((0,r.l7)({name:e},t)),n&&(this.typeQueue.push({name:e,def:n}),this.enqueue||this._flushTypeQueue()),this},e.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var e=this.typeQueue.shift();if(e.pattern)throw new Error("You cannot override a type's .pattern at runtime.");(0,r.l7)(this.types[e.name],i.u.$injector.invoke(e.def))}},e}();o=function(e){var t=function(e){return null!=e?e.toString():e},n={encode:t,decode:t,is:(0,a.is)(String),pattern:/.*/,equals:function(e,t){return e==t}};return(0,r.l7)({},n,e)},(0,r.l7)(u.prototype,{string:o({}),path:o({pattern:/[^/]*/}),query:o({}),hash:o({inherit:!1}),int:o({decode:function(e){return parseInt(e,10)},is:function(e){return!(0,s.le)(e)&&this.decode(e.toString())===e},pattern:/-?\d+/}),bool:o({encode:function(e){return e?1:0},decode:function(e){return 0!==parseInt(e,10)},is:(0,a.is)(Boolean),pattern:/0|1/}),date:o({encode:function(e){return this.is(e)?[e.getFullYear(),("0"+(e.getMonth()+1)).slice(-2),("0"+e.getDate()).slice(-2)].join("-"):void 0},decode:function(e){if(this.is(e))return e;var t=this.capture.exec(e);return t?new Date(t[1],t[2]-1,t[3]):void 0},is:function(e){return e instanceof Date&&!isNaN(e.valueOf())},equals:function(e,t){return["getFullYear","getMonth","getDate"].reduce((function(n,o){return n&&e[o]()===t[o]()}),!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/}),json:o({encode:r.Qs,decode:r.xZ,is:(0,a.is)(Object),equals:r.fS,pattern:/[^/]*/}),any:o({encode:r.yR,decode:r.yR,is:function(){return!0},equals:r.fS})})},"./node_modules/@uirouter/core/lib-esm/params/stateParams.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e){void 0===e&&(e={}),(0,o.l7)(this,e)}return e.prototype.$inherit=function(e,t,n){var r,s=(0,o.mX)(t,n),a={},i=[];for(var d in s)if(s[d]&&s[d].params&&(r=Object.keys(s[d].params)).length)for(var u in r)i.indexOf(r[u])>=0||(i.push(r[u]),a[r[u]]=this[r[u]]);return(0,o.l7)({},a,e)},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathNode.js":(e,t,n)=>{"use strict";n.d(t,{V:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/param.js"),a=function(){function e(t){if(t instanceof e){var n=t;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=(0,o.l7)({},n.paramValues),this.resolvables=n.resolvables.slice(),this.views=n.views&&n.views.slice()}else{var r=t;this.state=r,this.paramSchema=r.parameters({inherit:!1}),this.paramValues={},this.resolvables=r.resolvables.map((function(e){return e.clone()}))}}return e.prototype.clone=function(){return new e(this)},e.prototype.applyRawParams=function(e){return this.paramValues=this.paramSchema.reduce((function(t,n){return(0,o.bb)(t,[(r=n).id,r.value(e[r.id])]);var r}),{}),this},e.prototype.parameter=function(e){return(0,o.sE)(this.paramSchema,(0,r.OH)("id",e))},e.prototype.equals=function(e,t){var n=this.diff(e,t);return n&&0===n.length},e.prototype.diff=function(e,t){if(this.state!==e.state)return!1;var n=t?t(this):this.paramSchema;return s.d.changed(n,this.paramValues,e.paramValues)},e.clone=function(e){return e.clone()},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathUtils.js":(e,t,n)=>{"use strict";n.d(t,{C:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),a=n("./node_modules/@uirouter/core/lib-esm/path/pathNode.js"),i=function(){function e(){}return e.makeTargetState=function(e,t){var n=(0,o.Gb)(t).state;return new s.F(e,n,t.map((0,r.vg)("paramValues")).reduce(o.LQ,{}),{})},e.buildPath=function(e){var t=e.params();return e.$state().path.map((function(e){return new a.V(e).applyRawParams(t)}))},e.buildToPath=function(t,n){var o=e.buildPath(n);return n.options().inherit?e.inheritParams(t,o,Object.keys(n.params())):o},e.applyViewConfigs=function(t,n,r){n.filter((function(e){return(0,o.d3)(r,e.state)})).forEach((function(r){var s=(0,o.VO)(r.state.views||{}),a=e.subPath(n,(function(e){return e===r})),i=s.map((function(e){return t.createViewConfig(a,e)}));r.views=i.reduce(o.M7,[])}))},e.inheritParams=function(e,t,n){void 0===n&&(n=[]);var s=e.map((function(e){return e.paramSchema})).reduce(o.M7,[]).filter((function(e){return!e.inherit})).map((0,r.vg)("id"));return t.map((function(t){var i=(0,o.l7)({},t&&t.paramValues),d=(0,o.ei)(i,n);i=(0,o.CE)(i,n);var u,m,l,_=(0,o.CE)((u=e,m=t.state,l=(0,o.sE)(u,(0,r.OH)("state",m)),(0,o.l7)({},l&&l.paramValues)||{}),s),c=(0,o.l7)(i,_,d);return new a.V(t.state).applyRawParams(c)}))},e.treeChanges=function(t,n,o){for(var r,s,a,i,d,u,m=Math.min(t.length,n.length),l=0;l<m&&t[l].state!==o&&(r=t[l],s=n[l],r.equals(s,e.nonDynamicParams));)l++;i=(a=t).slice(0,l),d=a.slice(l);var _=i.map((function(e,t){var o=e.clone();return o.paramValues=n[t].paramValues,o}));return u=n.slice(l),{from:a,to:_.concat(u),retained:i,retainedWithToParams:_,exiting:d,entering:u}},e.matching=function(e,t,n){var r=!1;return(0,o.ym)(e,t).reduce((function(e,t){var o=t[0],s=t[1];return(r=r||!o.equals(s,n))?e:e.concat(o)}),[])},e.equals=function(t,n,o){return t.length===n.length&&e.matching(t,n,o).length===t.length},e.subPath=function(e,t){var n=(0,o.sE)(e,t),r=e.indexOf(n);return-1===r?void 0:e.slice(0,r+1)},e.nonDynamicParams=function(e){return e.state.parameters({inherit:!1}).filter((function(e){return!e.dynamic}))},e.paramValues=function(e){return e.reduce((function(e,t){return(0,o.l7)(e,t.paramValues)}),{})},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/interface.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var o={when:{LAZY:"LAZY",EAGER:"EAGER"},async:{WAIT:"WAIT",NOWAIT:"NOWAIT"}}},"./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),d=function(){function e(t,n,s,a,d){if(this.resolved=!1,this.promise=void 0,t instanceof e)(0,o.l7)(this,t);else if((0,i.mf)(n)){if((0,i.le)(t))throw new Error("new Resolvable(): token argument is required");if(!(0,i.mf)(n))throw new Error("new Resolvable(): resolveFn argument must be a function");this.token=t,this.policy=a,this.resolveFn=n,this.deps=s||[],this.data=d,this.resolved=void 0!==d,this.promise=this.resolved?r.u.$q.when(this.data):void 0}else if((0,i.Kn)(t)&&t.token&&(t.hasOwnProperty("resolveFn")||t.hasOwnProperty("data"))){var u=t;return new e(u.token,u.resolveFn,u.deps,u.policy,u.data)}}return e.prototype.getPolicy=function(e){var t=this.policy||{},n=e&&e.resolvePolicy||{};return{when:t.when||n.when||"LAZY",async:t.async||n.async||"WAIT"}},e.prototype.resolve=function(e,t){var n=this,a=r.u.$q,d=e.findNode(this),u=d&&d.state,m=this.getPolicy(u).async,l=(0,i.mf)(m)?m:o.yR;return this.promise=a.when().then((function(){return a.all(e.getDependencies(n).map((function(n){return n.get(e,t)})))})).then((function(e){return n.resolveFn.apply(null,e)})).then(l).then((function(e){return n.data=e,n.resolved=!0,n.resolveFn=null,s.g4.traceResolvableResolved(n,t),n.data}))},e.prototype.get=function(e,t){return this.promise||this.resolve(e,t)},e.prototype.toString=function(){return"Resolvable(token: "+(0,a.Pz)(this.token)+", requires: ["+this.deps.map(a.Pz)+"])"},e.prototype.clone=function(){return new e(this)},e.fromData=function(t,n){return new e(t,(function(){return n}),null,null,n)},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>f});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/interface.js"),d=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),u=n("./node_modules/@uirouter/core/lib-esm/path/pathUtils.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),_=i.u.when,c=[_.EAGER,_.LAZY],h=[_.EAGER],f=function(){function e(e){this._path=e}return e.prototype.getTokens=function(){return this._path.reduce((function(e,t){return e.concat(t.resolvables.map((function(e){return e.token})))}),[]).reduce(o.v_,[])},e.prototype.getResolvable=function(e){var t=this._path.map((function(e){return e.resolvables})).reduce(o.M7,[]).filter((function(t){return t.token===e}));return(0,o.Gb)(t)},e.prototype.getPolicy=function(e){var t=this.findNode(e);return e.getPolicy(t.state)},e.prototype.subContext=function(t){return new e(u.C.subPath(this._path,(function(e){return e.state===t})))},e.prototype.addResolvables=function(e,t){var n=(0,o.sE)(this._path,(0,r.OH)("state",t)),s=e.map((function(e){return e.token}));n.resolvables=n.resolvables.filter((function(e){return-1===s.indexOf(e.token)})).concat(e)},e.prototype.resolvePath=function(e,t){var n=this;void 0===e&&(e="LAZY");var d=((0,o.d3)(c,e)?e:"LAZY")===i.u.when.EAGER?h:c;s.g4.traceResolvePath(this._path,e,t);var u=function(e,t){return function(r){return(0,o.d3)(e,n.getPolicy(r)[t])}},m=this._path.reduce((function(e,o){var s=o.resolvables.filter(u(d,"when")),a=s.filter(u(["NOWAIT"],"async")),i=s.filter((0,r.ff)(u(["NOWAIT"],"async"))),m=n.subContext(o.state),l=function(e){return e.get(m,t).then((function(t){return{token:e.token,value:t}}))};return a.forEach(l),e.concat(i.map(l))}),[]);return a.u.$q.all(m)},e.prototype.injector=function(){return this._injector||(this._injector=new p(this))},e.prototype.findNode=function(e){return(0,o.sE)(this._path,(function(t){return(0,o.d3)(t.resolvables,e)}))},e.prototype.getDependencies=function(e){var t=this,n=this.findNode(e),r=(u.C.subPath(this._path,(function(e){return e===n}))||this._path).reduce((function(e,t){return e.concat(t.resolvables)}),[]).filter((function(t){return t!==e}));return e.deps.map((function(e){var n=r.filter((function(t){return t.token===e}));if(n.length)return(0,o.Gb)(n);var s=t.injector().getNative(e);if((0,l.wV)(s))throw new Error("Could not find Dependency Injection token: "+(0,m.Pz)(e));return new d.X(e,(function(){return s}),[],s)}))},e}(),p=function(){function e(e){this.context=e,this.native=this.get("Native Injector")||a.u.$injector}return e.prototype.get=function(e){var t=this.context.getResolvable(e);if(t){if("NOWAIT"===this.context.getPolicy(t).async)return t.get(this.context);if(!t.resolved)throw new Error("Resolvable async .get() not complete:"+(0,m.Pz)(t.token));return t.data}return this.getNative(e)},e.prototype.getAsync=function(e){var t=this.context.getResolvable(e);return t?t.get(this.context):a.u.$q.when(this.native.get(e))},e.prototype.getNative=function(e){return this.native&&this.native.get(e)},e}()},"./node_modules/@uirouter/core/lib-esm/router.js":(e,t,n)=>{"use strict";n.d(t,{a:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRouter.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/transitionService.js"),a=n("./node_modules/@uirouter/core/lib-esm/view/view.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js"),d=n("./node_modules/@uirouter/core/lib-esm/state/stateService.js"),u=n("./node_modules/@uirouter/core/lib-esm/globals.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),_=n("./node_modules/@uirouter/core/lib-esm/url/urlService.js"),c=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),f=0,p=(0,h.HV)("LocationServices",["url","path","search","hash","onChange"]),M=(0,h.HV)("LocationConfig",["port","protocol","host","baseHref","html5Mode","hashPrefix"]),y=function(){function e(e,t){void 0===e&&(e=p),void 0===t&&(t=M),this.locationService=e,this.locationConfig=t,this.$id=f++,this._disposed=!1,this._disposables=[],this.trace=c.g4,this.viewService=new a.s(this),this.globals=new u.k,this.transitionService=new s.Z(this),this.urlMatcherFactory=new o.y(this),this.urlRouter=new r.g(this),this.urlService=new _.i(this),this.stateRegistry=new i.q(this),this.stateService=new d.b(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlService),this.disposable(e),this.disposable(t)}return e.prototype.disposable=function(e){this._disposables.push(e)},e.prototype.dispose=function(e){var t=this;e&&(0,l.mf)(e.dispose)?e.dispose(this):(this._disposed=!0,this._disposables.slice().forEach((function(e){try{"function"==typeof e.dispose&&e.dispose(t),(0,m.nA)(t._disposables,e)}catch(e){}})))},e.prototype.plugin=function(e,t){void 0===t&&(t={});var n=new e(this,t);if(!n.name)throw new Error("Required property `name` missing on plugin: "+n);return this._disposables.push(n),this._plugins[n.name]=n},e.prototype.getPlugin=function(e){return e?this._plugins[e]:(0,m.VO)(this._plugins)},e}()},"./node_modules/@uirouter/core/lib-esm/state/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>M});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js");function u(e){return e.name}function m(e){return e.self.$$state=function(){return e},e.self}function l(e){return e.parent&&e.parent.data&&(e.data=e.self.data=(0,o.ED)(e.parent.data,e.data)),e.data}var _=function(e,t){return function(n){var s=n.self;if(s&&s.url&&s.name&&s.name.match(/\.\*\*$/)){var a={};(0,o.JG)(s,a),a.url+="{remainder:any}",s=a}var i=n.parent,d=function(e){if(!(0,r.HD)(e))return!1;var t="^"===e.charAt(0);return{val:t?e.substring(1):e,root:t}}(s.url),u=d?e.compile(d.val,{state:s}):s.url;if(!u)return null;if(!e.isMatcher(u))throw new Error("Invalid url '"+u+"' in state '"+n+"'");return d&&d.root?u:(i&&i.navigable||t()).url.append(u)}},c=function(e){return function(t){return!e(t)&&t.url?t:t.parent?t.parent.navigable:null}};function h(e){return e.parent?e.parent.path.concat(e):[e]}function f(e){var t=e.parent?(0,o.l7)({},e.parent.includes):{};return t[e.name]=!0,t}function p(e){var t,n,u=function(e){return e.provide||e.token},m=(0,a.uj)([[(0,a.vg)("resolveFn"),function(e){return new i.X(u(e),e.resolveFn,e.deps,e.policy)}],[(0,a.vg)("useFactory"),function(e){return new i.X(u(e),e.useFactory,e.deps||e.dependencies,e.policy)}],[(0,a.vg)("useClass"),function(e){return new i.X(u(e),(function(){return new e.useClass}),[],e.policy)}],[(0,a.vg)("useValue"),function(e){return new i.X(u(e),(function(){return e.useValue}),[],e.policy,e.useValue)}],[(0,a.vg)("useExisting"),function(e){return new i.X(u(e),o.yR,[e.useExisting],e.policy)}]]),l=(0,a.uj)([[(0,a.zG)((0,a.vg)("val"),r.HD),function(e){return new i.X(e.token,o.yR,[e.val],e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.kJ),function(e){return new i.X(e.token,(0,o.Gb)(e.val),e.val.slice(0,-1),e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.mf),function(e){return new i.X(e.token,e.val,(t=e.val,n=d.u.$injector,t.$inject||n&&n.annotate(t,n.strictDi)||"deferred"),e.policy);var t,n}]]),_=(0,a.uj)([[(0,a.is)(i.X),function(e){return e}],[function(e){return!(!e.token||!e.resolveFn)},m],[function(e){return!(!e.provide&&!e.token||!(e.useValue||e.useFactory||e.useExisting||e.useClass))},m],[function(e){return!!(e&&e.val&&((0,r.HD)(e.val)||(0,r.kJ)(e.val)||(0,r.mf)(e.val)))},l],[(0,a.P0)(!0),function(e){throw new Error("Invalid resolve value: "+(0,s.Pz)(e))}]]),c=e.resolve;return((0,r.kJ)(c)?c:(t=c,n=e.resolvePolicy||{},Object.keys(t||{}).map((function(e){return{token:e,val:t[e],deps:void 0,policy:n[e]}})))).map(_)}var M=function(){function e(e,t){this.matcher=e;var n,r=this,s=function(){return e.find("")},i=function(e){return""===e.name};this.builders={name:[u],self:[m],parent:[function(t){return i(t)?null:e.find(r.parentName(t))||s()}],data:[l],url:[_(t,s)],navigable:[c(i)],params:[(n=t.paramFactory,function(e){var t=e.url&&e.url.parameters({inherit:!1})||[],r=(0,o.VO)((0,o.js)((0,o.CE)(e.params||{},t.map((0,a.vg)("id"))),(function(t,o){return n.fromConfig(o,null,e.self)})));return t.concat(r).map((function(e){return[e.id,e]})).reduce(o.bb,{})})],views:[],path:[h],includes:[f],resolvables:[p]}}return e.prototype.builder=function(e,t){var n=this.builders,o=n[e]||[];return(0,r.HD)(e)&&!(0,r.$K)(t)?o.length>1?o:o[0]:(0,r.HD)(e)&&(0,r.mf)(t)?(n[e]=o,n[e].push(t),function(){return n[e].splice(n[e].indexOf(t,1))&&null}):void 0},e.prototype.build=function(e){var t=this.matcher,n=this.builders,r=this.parentName(e);if(r&&!t.find(r,void 0,!1))return null;for(var s in n)if(n.hasOwnProperty(s)){var a=n[s].reduce((function(e,t){return function(n){return t(n,e)}}),o.ZT);e[s]=a(e)}return e},e.prototype.parentName=function(e){var t=e.name||"",n=t.split(".");if("**"===n.pop()&&n.pop(),n.length){if(e.parent)throw new Error("States that specify the 'parent:' property should not have a '.' in their name ("+t+")");return n.join(".")}return e.parent?(0,r.HD)(e.parent)?e.parent:e.parent.name:""},e.prototype.name=function(e){var t=e.name;if(-1!==t.indexOf(".")||!e.parent)return t;var n=(0,r.HD)(e.parent)?e.parent:e.parent.name;return n?n+"."+t:t},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js":(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js"),a=function(){function e(e){this._states=e}return e.prototype.isRelative=function(e){return 0===(e=e||"").indexOf(".")||0===e.indexOf("^")},e.prototype.find=function(e,t,n){if(void 0===n&&(n=!0),e||""===e){var a=(0,o.HD)(e),i=a?e:e.name;this.isRelative(i)&&(i=this.resolvePath(i,t));var d=this._states[i];if(d&&(a||!(a||d!==e&&d.self!==e)))return d;if(a&&n){var u=(0,r.VO)(this._states).filter((function(e){return e.__stateObjectCache.nameGlob&&e.__stateObjectCache.nameGlob.matches(i)}));return u.length>1&&s.L.error("stateMatcher.find: Found multiple matches for "+i+" using glob: ",u.map((function(e){return e.name}))),u[0]}}},e.prototype.resolvePath=function(e,t){if(!t)throw new Error("No reference point given for path '"+e+"'");for(var n=this.find(t),o=e.split("."),r=o.length,s=0,a=n;s<r;s++)if(""!==o[s]||0!==s){if("^"!==o[s])break;if(!a.parent)throw new Error("Path '"+e+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var i=o.slice(s).join(".");return a.name+(a.name&&i?".":"")+i},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateObject.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/glob.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=function(){function e(t){return e.create(t||{})}return e.create=function(t){t=e.isStateClass(t)?new t:t;var n=(0,o.ED)((0,o.ED)(t,e.prototype));return t.$$state=function(){return n},n.self=t,n.__stateObjectCache={nameGlob:s.r.fromString(n.name)},n},e.prototype.is=function(e){return this===e||this.self===e||this.fqn()===e},e.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var e=this.parent.fqn();return e?e+"."+this.name:this.name},e.prototype.root=function(){return this.parent&&this.parent.root()||this},e.prototype.parameters=function(e){return((e=(0,o.ce)(e,{inherit:!0,matchingKeys:null})).inherit&&this.parent&&this.parent.parameters()||[]).concat((0,o.VO)(this.params)).filter((function(t){return!e.matchingKeys||e.matchingKeys.hasOwnProperty(t.id)}))},e.prototype.parameter=function(e,t){return void 0===t&&(t={}),this.url&&this.url.parameter(e,t)||(0,o.sE)((0,o.VO)(this.params),(0,r.OH)("id",e))||t.inherit&&this.parent&&this.parent.parameter(e)},e.prototype.toString=function(){return this.fqn()},e.isStateClass=function(e){return(0,a.mf)(e)&&!0===e.__uiRouterState},e.isStateDeclaration=function(e){return(0,a.mf)(e.$$state)},e.isState=function(e){return(0,a.Kn)(e.__stateObjectCache)},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),s=function(){function e(e,t,n,o){this.router=e,this.states=t,this.builder=n,this.listeners=o,this.queue=[]}return e.prototype.dispose=function(){this.queue=[]},e.prototype.register=function(e){var t=this.queue,n=r.l.create(e),s=n.name;if(!(0,o.HD)(s))throw new Error("State must have a valid name");if(this.states.hasOwnProperty(s)||(0,o.d3)(t.map((0,o.vg)("name")),s))throw new Error("State '"+s+"' is already defined");return t.push(n),this.flush(),n},e.prototype.flush=function(){for(var e=this,t=this,n=t.queue,o=t.states,r=t.builder,s=[],a=[],i={},d=function(t){return e.states.hasOwnProperty(t)&&e.states[t]},u=function(){s.length&&e.listeners.forEach((function(e){return e("registered",s.map((function(e){return e.self})))}))};n.length>0;){var m=n.shift(),l=m.name,_=r.build(m),c=a.indexOf(m);if(_){var h=d(l);if(h&&h.name===l)throw new Error("State '"+l+"' is already defined");var f=d(l+".**");f&&this.router.stateRegistry.deregister(f),o[l]=m,this.attachRoute(m),c>=0&&a.splice(c,1),s.push(m)}else{var p=i[l];if(i[l]=n.length,c>=0&&p===n.length)return n.push(m),u(),o;c<0&&a.push(m),n.push(m)}}return u(),o},e.prototype.attachRoute=function(e){if(!e.abstract&&e.url){var t=this.router.urlService.rules;t.rule(t.urlRuleFactory.create(e))}},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js":(e,t,n)=>{"use strict";n.d(t,{q:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=function(){function e(e){this.router=e,this.states={},this.listeners=[],this.matcher=new o.Q(this.states),this.builder=new r.t(this.matcher,e.urlMatcherFactory),this.stateQueue=new s.L(e,this.states,this.builder,this.listeners),this._registerRoot()}return e.prototype._registerRoot=function(){(this._root=this.stateQueue.register({name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},abstract:!0})).navigable=null},e.prototype.dispose=function(){var e=this;this.stateQueue.dispose(),this.listeners=[],this.get().forEach((function(t){return e.get(t)&&e.deregister(t)}))},e.prototype.onStatesChanged=function(e){return this.listeners.push(e),function(){(0,a.nA)(this.listeners)(e)}.bind(this)},e.prototype.root=function(){return this._root},e.prototype.register=function(e){return this.stateQueue.register(e)},e.prototype._deregisterTree=function(e){var t=this,n=this.get().map((function(e){return e.$$state()})),o=function(e){var t=n.filter((function(t){return-1!==e.indexOf(t.parent)}));return 0===t.length?t:t.concat(o(t))},r=o([e]),s=[e].concat(r).reverse();return s.forEach((function(e){var n=t.router.urlService.rules;n.rules().filter((0,i.OH)("state",e)).forEach((function(e){return n.removeRule(e)})),delete t.states[e.name]})),s},e.prototype.deregister=function(e){var t=this.get(e);if(!t)throw new Error("Can't deregister state; not found: "+e);var n=this._deregisterTree(t.$$state());return this.listeners.forEach((function(e){return e("deregistered",n.map((function(e){return e.self})))})),n},e.prototype.get=function(e,t){var n=this;if(0===arguments.length)return Object.keys(this.states).map((function(e){return n.states[e].self}));var o=this.matcher.find(e,t);return o&&o.self||null},e.prototype.decorator=function(e,t){return this.builder.builder(e,t)},e}()},"./node_modules/@uirouter/core/lib-esm/state/targetState.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=function(){function e(e,t,n,o){this._stateRegistry=e,this._identifier=t,this._identifier=t,this._params=(0,s.l7)({},n||{}),this._options=(0,s.l7)({},o||{}),this._definition=e.matcher.find(t,this._options.relative)}return e.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},e.prototype.identifier=function(){return this._identifier},e.prototype.params=function(){return this._params},e.prototype.$state=function(){return this._definition},e.prototype.state=function(){return this._definition&&this._definition.self},e.prototype.options=function(){return this._options},e.prototype.exists=function(){return!(!this._definition||!this._definition.self)},e.prototype.valid=function(){return!this.error()},e.prototype.error=function(){var e=this.options().relative;if(!this._definition&&e){var t=e.name?e.name:e;return"Could not resolve '"+this.name()+"' from state '"+t+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},e.prototype.toString=function(){return"'"+this.name()+"'"+(0,r.Pz)(this.params())},e.prototype.withState=function(t){return new e(this._stateRegistry,t,this._params,this._options)},e.prototype.withParams=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._params,t);return new e(this._stateRegistry,this._identifier,o,this._options)},e.prototype.withOptions=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._options,t);return new e(this._stateRegistry,this._identifier,this._params,o)},e.isDef=function(e){return e&&e.state&&((0,o.HD)(e.state)||(0,o.Kn)(e.state)&&(0,o.HD)(e.state.name))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),a=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),i=function(){function e(e){this.transition=e}return e.prototype.buildHooksForPhase=function(e){var t=this;return this.transition.router.transitionService._pluginapi._getEvents(e).map((function(e){return t.buildHooks(e)})).reduce(o.M7,[]).filter(o.yR)},e.prototype.buildHooks=function(e){var t=this.transition,n=t.treeChanges(),r=this.getMatchingHooks(e,n,t);if(!r)return[];var i,d={transition:t,current:t.options().current};return r.map((function(r){return r.matches(n,t)[e.criteriaMatchPath.name].map((function(n){var i=(0,o.l7)({bind:r.bind,traceData:{hookType:e.name,context:n}},d),u=e.criteriaMatchPath.scope===s.c.STATE?n.state.self:null,m=new a.I(t,u,r,i);return{hook:r,node:n,transitionHook:m}}))})).reduce(o.M7,[]).sort((i=e.reverseSort,void 0===i&&(i=!1),function(e,t){var n=i?-1:1,o=(e.node.state.path.length-t.node.state.path.length)*n;return 0!==o?o:t.hook.priority-e.hook.priority})).map((function(e){return e.transitionHook}))},e.prototype.getMatchingHooks=function(e,t,n){var a=e.hookPhase===s.k.CREATE,i=this.transition.router.transitionService;return(a?[i]:[this.transition,i]).map((function(t){return t.getHooks(e.name)})).filter((0,o.sp)(r.kJ,"broken event named: "+e.name)).reduce(o.M7,[]).filter((function(e){return e.matches(t,n)}))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js":(e,t,n)=>{"use strict";n.d(t,{cN:()=>s,BU:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js");function s(e,t,n){var r=(0,o.HD)(t)?[t]:t;return!!((0,o.mf)(r)?r:function(e){for(var t=r,n=0;n<t.length;n++){var s=new o.rR(t[n]);if(s&&s.matches(e.name)||!s&&t[n]===e.name)return!0}return!1})(e,n)}var a=function(){function e(e,t,n,o,r,s){void 0===s&&(s={}),this.tranSvc=e,this.eventType=t,this.callback=n,this.matchCriteria=o,this.removeHookFromRegistry=r,this.invokeCount=0,this._deregistered=!1,this.priority=s.priority||0,this.bind=s.bind||null,this.invokeLimit=s.invokeLimit}return e.prototype._matchingNodes=function(e,t,n){if(!0===t)return e;var o=e.filter((function(e){return s(e.state,t,n)}));return o.length?o:null},e.prototype._getDefaultMatchCriteria=function(){return(0,o.js)(this.tranSvc._pluginapi._getPathTypes(),(function(){return!0}))},e.prototype._getMatchingNodes=function(e,t){var n=this,s=(0,o.l7)(this._getDefaultMatchCriteria(),this.matchCriteria);return(0,o.VO)(this.tranSvc._pluginapi._getPathTypes()).reduce((function(a,i){var d=i.scope===r.c.STATE,u=e[i.name]||[],m=d?u:[(0,o.Gb)(u)];return a[i.name]=n._matchingNodes(m,s[i.name],t),a}),{})},e.prototype.matches=function(e,t){var n=this._getMatchingNodes(e,t);return(0,o.VO)(n).every(o.yR)?n:null},e.prototype.deregister=function(){this.removeHookFromRegistry(this),this._deregistered=!0},e}();function i(e,t,n){var r=(e._registeredHooks=e._registeredHooks||{})[n.name]=[],s=(0,o.nA)(r);function i(e,o,i){void 0===i&&(i={});var d=new a(t,n,o,e,s,i);return r.push(d),d.deregister.bind(d)}return e[n.name]=i,i}},"./node_modules/@uirouter/core/lib-esm/transition/interface.js":(e,t,n)=>{"use strict";var o,r;n.d(t,{k:()=>o,c:()=>r}),function(e){e[e.CREATE=0]="CREATE",e[e.BEFORE=1]="BEFORE",e[e.RUN=2]="RUN",e[e.SUCCESS=3]="SUCCESS",e[e.ERROR=4]="ERROR"}(o||(o={})),function(e){e[e.TRANSITION=0]="TRANSITION",e[e.STATE=1]="STATE"}(r||(r={}))},"./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js":(e,t,n)=>{"use strict";n.d(t,{K:()=>o,i:()=>d});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");!function(e){e[e.SUPERSEDED=2]="SUPERSEDED",e[e.ABORTED=3]="ABORTED",e[e.INVALID=4]="INVALID",e[e.IGNORED=5]="IGNORED",e[e.ERROR=6]="ERROR"}(o||(o={}));var i=0,d=function(){function e(e,t,n){this.$id=i++,this.type=e,this.message=t,this.detail=n}return e.isRejectionPromise=function(t){return t&&"function"==typeof t.then&&(0,a.is)(e)(t._transitionRejection)},e.superseded=function(t,n){var r=new e(o.SUPERSEDED,"The transition has been superseded by a different transition",t);return n&&n.redirected&&(r.redirected=!0),r},e.redirected=function(t){return e.superseded(t,{redirected:!0})},e.invalid=function(t){return new e(o.INVALID,"This transition is invalid",t)},e.ignored=function(t){return new e(o.IGNORED,"The transition was ignored",t)},e.aborted=function(t){return new e(o.ABORTED,"The transition has been aborted",t)},e.errored=function(t){return new e(o.ERROR,"The transition errored",t)},e.normalize=function(t){return(0,a.is)(e)(t)?t:e.errored(t)},e.prototype.toString=function(){var e,t=(e=this.detail)&&e.toString!==Object.prototype.toString?e.toString():(0,s.Pz)(e),n=this;return"Transition Rejection($id: "+n.$id+" type: "+n.type+", message: "+n.message+", detail: "+t+")"},e.prototype.toPromise=function(){return(0,r.l7)((0,r.jv)(this),{_transitionRejection:this})},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),r=function(e,t,n,r,s,a,i,d){void 0===s&&(s=!1),void 0===a&&(a=o.I.HANDLE_RESULT),void 0===i&&(i=o.I.REJECT_ERROR),void 0===d&&(d=!1),this.name=e,this.hookPhase=t,this.hookOrder=n,this.criteriaMatchPath=r,this.reverseSort=s,this.getResultHandler=a,this.getErrorHandler=i,this.synchronous=d}},"./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>c});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),u=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),m=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),l=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),_={current:r.ZT,transition:null,traceData:{},bind:null},c=function(){function e(e,t,n,s){var a=this;this.transition=e,this.stateContext=t,this.registeredHook=n,this.options=s,this.isSuperseded=function(){return a.type.hookPhase===o.k.RUN&&!a.options.transition.isActive()},this.options=(0,r.ce)(s,_),this.type=n.eventType}return e.chain=function(e,t){return e.reduce((function(e,t){return e.then((function(){return t.invokeHook()}))}),t||u.u.$q.when())},e.invokeHooks=function(t,n){for(var o=0;o<t.length;o++){var r=t[o].invokeHook();if((0,a.tI)(r)){var s=t.slice(o+1);return e.chain(s,r).then(n)}}return n()},e.runAllHooks=function(e){e.forEach((function(e){return e.invokeHook()}))},e.prototype.logError=function(e){this.transition.router.stateService.defaultErrorHandler()(e)},e.prototype.invokeHook=function(){var e=this,t=this.registeredHook;if(!t._deregistered){var n=this.getNotCurrentRejection();if(n)return n;var o=this.options;d.g4.traceHookInvocation(this,this.transition,o);var r=function(n){return t.eventType.getErrorHandler(e)(n)},s=function(n){return t.eventType.getResultHandler(e)(n)};try{var i=t.callback.call(o.bind,e.transition,e.stateContext);return!this.type.synchronous&&(0,a.tI)(i)?i.catch((function(e){return m.i.normalize(e).toPromise()})).then(s,r):s(i)}catch(e){return r(m.i.normalize(e))}finally{t.invokeLimit&&++t.invokeCount>=t.invokeLimit&&t.deregister()}}},e.prototype.handleHookResult=function(e){var t=this;return this.getNotCurrentRejection()||((0,a.tI)(e)?e.then((function(e){return t.handleHookResult(e)})):(d.g4.traceHookResult(e,this.transition,this.options),!1===e?m.i.aborted("Hook aborted transition").toPromise():(0,i.is)(l.F)(e)?m.i.redirected(e).toPromise():void 0))},e.prototype.getNotCurrentRejection=function(){var e=this.transition.router;return e._disposed?m.i.aborted("UIRouter instance #"+e.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?m.i.aborted().toPromise():this.isSuperseded()?m.i.superseded(this.options.current()).toPromise():void 0},e.prototype.toString=function(){var e=this.options,t=this.registeredHook,n=(0,i.Qc)("traceData.hookType")(e)||"internal",o=(0,i.Qc)("traceData.context.state.name")(e)||(0,i.Qc)("traceData.context")(e)||"unknown",r=(0,s.iC)(t.callback);return n+" context: "+o+", "+(0,s.BS)(200,r)},e.HANDLE_RESULT=function(e){return function(t){return e.handleHookResult(t)}},e.LOG_REJECTED_RESULT=function(e){return function(t){(0,a.tI)(t)&&t.catch((function(t){return e.logError(m.i.normalize(t))}))}},e.LOG_ERROR=function(e){return function(t){return e.logError(t)}},e.REJECT_ERROR=function(e){return function(e){return(0,r.jv)(e)}},e.THROW_ERROR=function(e){return function(e){throw e}},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionService.js":(e,t,n)=>{"use strict";n.d(t,{Z:()=>C,q:()=>W});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/transition.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js"),a=n("./node_modules/@uirouter/core/lib-esm/router.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/index.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/index.js");function u(e){e.addResolvable(i.XU.fromData(a.a,e.router),""),e.addResolvable(i.XU.fromData(r.u,e),""),e.addResolvable(i.XU.fromData("$transition$",e),""),e.addResolvable(i.XU.fromData("$stateParams",e.params()),""),e.entering().forEach((function(t){e.addResolvable(i.XU.fromData("$state$",t),t)}))}var m=["$transition$",r.u],l=(0,d.d3)(m),_=function(e){var t=(0,d.VO)(e.treeChanges()).reduce(d.M7,[]).reduce(d.v_,[]),n=function(e){return l(e.token)?i.XU.fromData(e.token,null):e};t.forEach((function(e){e.resolvables=e.resolvables.map(n)}))},c=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),f=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),p=function(e){var t=e.to().redirectTo;if(t){var n=e.router.stateService;return(0,c.mf)(t)?h.u.$q.when(t(e)).then(o):o(t)}function o(t){if(t)return t instanceof f.F?t:(0,c.HD)(t)?n.target(t,e.params(),e.options()):t.state||t.params?n.target(t.state||e.to(),t.params||e.params(),e.options()):void 0}};function M(e){return function(t,n){return(0,n.$$state()[e])(t,n)}}var y=M("onExit"),L=M("onRetain"),g=M("onEnter"),Y=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),v=n("./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js"),j=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),k=1e3,w=function(e){return new v.l(e.treeChanges().to).resolvePath("EAGER",e).then(Y.ZT)},b=function(e,t){return new v.l(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY",e).then(Y.ZT)},D=function(e){return new v.l(e.treeChanges().to).resolvePath("LAZY",e).then(Y.ZT)},T=function(e){var t=h.u.$q,n=e.views("entering");if(n.length)return t.all(n.map((function(e){return t.when(e.load())}))).then(Y.ZT)},S=function(e){var t=e.views("entering"),n=e.views("exiting");if(t.length||n.length){var o=e.router.viewService;n.forEach((function(e){return o.deactivateViewConfig(e)})),t.forEach((function(e){return o.activateViewConfig(e)})),o.sync()}},H=function(e){var t=e.router.globals,n=function(){t.transition===e&&(t.transition=null)};e.onSuccess({},(function(){t.successfulTransitions.enqueue(e),t.$current=e.$to(),t.current=t.$current.self,(0,Y.JG)(e.params(),t.params)}),{priority:1e4}),e.promise.then(n,n)},x=function(e){var t=e.options(),n=e.router.stateService,o=e.router.urlRouter;if("url"!==t.source&&t.location&&n.$current.navigable){var r={replace:"replace"===t.location};o.push(n.$current.navigable.url,n.params,r)}o.update(!0)},E=n("./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js"),P=n("./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js"),O=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),A=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),$=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js");function R(e){var t=e._ignoredReason();if(t){A.g4.traceTransitionIgnored(e);var n=e.router.globals.transition;return"SameAsCurrent"===t&&n&&n.abort(),$.i.ignored().toPromise()}}function F(e){if(!e.valid())throw new Error(e.error().toString())}var W={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,supercede:!0,custom:{},current:function(){return null},source:"unknown"},C=function(){function e(e){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=e,this.$view=e.viewService,this._deregisterHookFns={},this._pluginapi=(0,Y.WR)((0,j.P0)(this),{},(0,j.P0)(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks(),e.globals.successfulTransitions.onEvict(_)}return e.prototype.onCreate=function(e,t,n){},e.prototype.onBefore=function(e,t,n){},e.prototype.onStart=function(e,t,n){},e.prototype.onExit=function(e,t,n){},e.prototype.onRetain=function(e,t,n){},e.prototype.onEnter=function(e,t,n){},e.prototype.onFinish=function(e,t,n){},e.prototype.onSuccess=function(e,t,n){},e.prototype.onError=function(e,t,n){},e.prototype.dispose=function(e){(0,Y.VO)(this._registeredHooks).forEach((function(e){return e.forEach((function(t){t._deregistered=!0,(0,Y.nA)(e,t)}))}))},e.prototype.create=function(e,t){return new r.u(e,t,this._router)},e.prototype._defineCoreEvents=function(){var e=o.k,t=O.I,n=this._criteriaPaths,r=!1,s=!0;this._defineEvent("onCreate",e.CREATE,0,n.to,r,t.LOG_REJECTED_RESULT,t.THROW_ERROR,s),this._defineEvent("onBefore",e.BEFORE,0,n.to),this._defineEvent("onStart",e.RUN,0,n.to),this._defineEvent("onExit",e.RUN,100,n.exiting,!0),this._defineEvent("onRetain",e.RUN,200,n.retained),this._defineEvent("onEnter",e.RUN,300,n.entering),this._defineEvent("onFinish",e.RUN,400,n.to),this._defineEvent("onSuccess",e.SUCCESS,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s),this._defineEvent("onError",e.ERROR,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s)},e.prototype._defineCorePaths=function(){var e=o.c.STATE,t=o.c.TRANSITION;this._definePathType("to",t),this._definePathType("from",t),this._definePathType("exiting",e),this._definePathType("retained",e),this._definePathType("entering",e)},e.prototype._defineEvent=function(e,t,n,o,r,a,i,d){void 0===r&&(r=!1),void 0===a&&(a=O.I.HANDLE_RESULT),void 0===i&&(i=O.I.REJECT_ERROR),void 0===d&&(d=!1);var u=new P.t(e,t,n,o,r,a,i,d);this._eventTypes.push(u),(0,s.BU)(this,this,u)},e.prototype._getEvents=function(e){return((0,c.$K)(e)?this._eventTypes.filter((function(t){return t.hookPhase===e})):this._eventTypes.slice()).sort((function(e,t){var n=e.hookPhase-t.hookPhase;return 0===n?e.hookOrder-t.hookOrder:n}))},e.prototype._definePathType=function(e,t){this._criteriaPaths[e]={name:e,scope:t}},e.prototype._getPathTypes=function(){return this._criteriaPaths},e.prototype.getHooks=function(e){return this._registeredHooks[e]},e.prototype._registerCoreTransitionHooks=function(){var e=this._deregisterHookFns;e.addCoreResolves=this.onCreate({},u),e.ignored=this.onBefore({},R,{priority:-9999}),e.invalid=function(e){return e.onBefore({},F,{priority:-1e4})}(this),e.redirectTo=function(e){return e.onStart({to:function(e){return!!e.redirectTo}},p)}(this),e.onExit=function(e){return e.onExit({exiting:function(e){return!!e.onExit}},y)}(this),e.onRetain=function(e){return e.onRetain({retained:function(e){return!!e.onRetain}},L)}(this),e.onEnter=function(e){return e.onEnter({entering:function(e){return!!e.onEnter}},g)}(this),e.eagerResolve=function(e){return e.onStart({},w,{priority:k})}(this),e.lazyResolve=function(e){return e.onEnter({entering:(0,j.P0)(!0)},b,{priority:k})}(this),e.resolveAll=function(e){return e.onFinish({},D,{priority:k})}(this),e.loadViews=function(e){return e.onFinish({},T)}(this),e.activateViews=function(e){return e.onSuccess({},S)}(this),e.updateGlobals=function(e){return e.onCreate({},H)}(this),e.updateUrl=function(e){return e.onSuccess({},x,{priority:9999})}(this),e.lazyLoad=(0,E.v)(this)},e}()},"./node_modules/@uirouter/core/lib-esm/url/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/url/urlConfig.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=function(){function e(e){var t=this;this.router=e,this.paramTypes=new o.ParamTypes,this._decodeParams=!0,this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1,this.dispose=function(){return t.paramTypes.dispose()},this.baseHref=function(){return t.router.locationConfig.baseHref()},this.hashPrefix=function(e){return t.router.locationConfig.hashPrefix(e)},this.host=function(){return t.router.locationConfig.host()},this.html5Mode=function(){return t.router.locationConfig.html5Mode()},this.port=function(){return t.router.locationConfig.port()},this.protocol=function(){return t.router.locationConfig.protocol()}}return e.prototype.caseInsensitive=function(e){return this._isCaseInsensitive=(0,r.$K)(e)?e:this._isCaseInsensitive},e.prototype.defaultSquashPolicy=function(e){if((0,r.$K)(e)&&!0!==e&&!1!==e&&!(0,r.HD)(e))throw new Error("Invalid squash policy: "+e+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=(0,r.$K)(e)?e:this._defaultSquashPolicy},e.prototype.strictMode=function(e){return this._isStrictMode=(0,r.$K)(e)?e:this._isStrictMode},e.prototype.type=function(e,t,n){var o=this.paramTypes.type(e,t,n);return(0,r.$K)(t)?this:o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js":(e,t,n)=>{"use strict";n.d(t,{y:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),a=function(){return(a=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=function(){function e(e){this.router=e}return e.prototype.fromConfig=function(e,t,n){return new s.Param(e,t,s.DefType.CONFIG,this.router.urlService.config,n)},e.prototype.fromPath=function(e,t,n){return new s.Param(e,t,s.DefType.PATH,this.router.urlService.config,n)},e.prototype.fromSearch=function(e,t,n){return new s.Param(e,t,s.DefType.SEARCH,this.router.urlService.config,n)},e}(),d=function(){function e(e){var t=this;this.router=e,this.paramFactory=new i(this.router),this.UrlMatcher=r.x,this.Param=s.Param,this.caseInsensitive=function(e){return t.router.urlService.config.caseInsensitive(e)},this.defaultSquashPolicy=function(e){return t.router.urlService.config.defaultSquashPolicy(e)},this.strictMode=function(e){return t.router.urlService.config.strictMode(e)},this.type=function(e,n,o){return t.router.urlService.config.type(e,n,o)||t}}return e.prototype.compile=function(e,t){var n=this.router.urlService.config,s=t&&!t.state&&t.params;t=s?a({state:{params:s}},t):t;var i={strict:n._isStrictMode,caseInsensitive:n._isCaseInsensitive,decodeParams:n._decodeParams};return new r.x(e,n.paramTypes,this.paramFactory,(0,o.l7)(i,t))},e.prototype.isMatcher=function(e){if(!(0,o.Kn)(e))return!1;var t=!0;return(0,o.Ed)(r.x.prototype,(function(n,r){(0,o.mf)(n)&&(t=t&&(0,o.$K)(e[r])&&(0,o.mf)(e[r]))})),t},e.prototype.$get=function(){var e=this.router.urlService.config;return e.paramTypes.enqueue=!1,e.paramTypes._flushTypeQueue(),this},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRouter.js":(e,t,n)=>{"use strict";n.d(t,{g:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js"),s=function(){function e(e){var t=this;this.router=e,this.sync=function(e){return t.router.urlService.sync(e)},this.listen=function(e){return t.router.urlService.listen(e)},this.deferIntercept=function(e){return t.router.urlService.deferIntercept(e)},this.match=function(e){return t.router.urlService.match(e)},this.initial=function(e){return t.router.urlService.rules.initial(e)},this.otherwise=function(e){return t.router.urlService.rules.otherwise(e)},this.removeRule=function(e){return t.router.urlService.rules.removeRule(e)},this.rule=function(e){return t.router.urlService.rules.rule(e)},this.rules=function(){return t.router.urlService.rules.rules()},this.sort=function(e){return t.router.urlService.rules.sort(e)},this.when=function(e,n,o){return t.router.urlService.rules.when(e,n,o)},this.urlRuleFactory=new r.I(e)}return e.prototype.update=function(e){var t=this.router.locationService;e?this.location=t.url():t.url()!==this.location&&t.url(this.location,!0)},e.prototype.push=function(e,t,n){var o=n&&!!n.replace;this.router.urlService.url(e.format(t||{}),o)},e.prototype.href=function(e,t,n){var r=e.format(t);if(null==r)return null;n=n||{absolute:!1};var s=this.router.urlService.config,a=s.html5Mode();if(a||null===r||(r="#"+s.hashPrefix()+r),r=function(e,t,n,r){return"/"===r?e:t?(0,o.Lb)(r)+e:n?r.slice(1)+e:e}(r,a,n.absolute,s.baseHref()),!n.absolute||!r)return r;var i=!a&&r?"/":"",d=s.port(),u=80===d||443===d?"":":"+d;return[s.protocol(),"://",s.host(),u,i,r].join("")},Object.defineProperty(e.prototype,"interceptDeferred",{get:function(){return this.router.urlService.interceptDeferred},enumerable:!1,configurable:!0}),e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRule.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>d,n:()=>u});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),d=function(){function e(e){this.router=e}return e.prototype.compile=function(e){return this.router.urlMatcherFactory.compile(e)},e.prototype.create=function(e,t){var n=this,s=i.l.isState,d=i.l.isStateDeclaration,m=(0,a.uj)([[r.HD,function(e){return m(n.compile(e))}],[(0,a.is)(o.x),function(e){return n.fromUrlMatcher(e,t)}],[(0,a.or)(s,d),function(e){return n.fromState(e,n.router)}],[(0,a.is)(RegExp),function(e){return n.fromRegExp(e,t)}],[r.mf,function(e){return new u(e,t)}]]),l=m(e);if(!l)throw new Error("invalid 'what' in when()");return l},e.prototype.fromUrlMatcher=function(e,t){var n=t;(0,r.HD)(t)&&(t=this.router.urlMatcherFactory.compile(t)),(0,a.is)(o.x)(t)&&(n=function(e){return t.format(e)});var i={urlMatcher:e,matchPriority:function(t){var n=e.parameters().filter((function(e){return e.isOptional}));return n.length?n.filter((function(e){return t[e.id]})).length/n.length:1e-6},type:"URLMATCHER"};return(0,s.l7)(new u((function(t){var n=e.exec(t.path,t.search,t.hash);return e.validates(n)&&n}),n),i)},e.prototype.fromState=function(e,t){var n=i.l.isStateDeclaration(e)?e.$$state():e,o={state:n,type:"STATE"};return(0,s.l7)(this.fromUrlMatcher(n.url,(function(e){var o=t.stateService,r=t.globals;o.href(n,e)!==o.href(r.current,r.params)&&o.transitionTo(n,e,{inherit:!0,source:"url"})})),o)},e.prototype.fromRegExp=function(e,t){if(e.global||e.sticky)throw new Error("Rule RegExp must not be global or sticky");var n=(0,r.HD)(t)?function(e){return t.replace(/\$(\$|\d{1,2})/,(function(t,n){return e["$"===n?0:Number(n)]}))}:t,o={regexp:e,type:"REGEXP"};return(0,s.l7)(new u((function(t){return e.exec(t.path)}),n),o)},e.isUrlRule=function(e){return e&&["type","match","handler"].every((function(t){return(0,r.$K)(e[t])}))},e}(),u=function(e,t){var n=this;this.match=e,this.type="RAW",this.matchPriority=function(e){return 0-n.$id},this.handler=t||s.yR}},"./node_modules/@uirouter/core/lib-esm/url/urlRules.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),i=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js");function d(e){if(!((0,a.mf)(e)||(0,a.HD)(e)||(0,a.is)(r.TargetState)(e)||r.TargetState.isDef(e)))throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");return(0,a.mf)(e)?e:(0,a.P0)(e)}o=function(e,t){var n=function(e,t){return(t.priority||0)-(e.priority||0)}(e,t);return 0!==n||0!==(n=function(e,t){var n={STATE:4,URLMATCHER:4,REGEXP:3,RAW:2,OTHER:1};return(n[e.type]||0)-(n[t.type]||0)}(e,t))||0!==(n=function(e,t){return e.urlMatcher&&t.urlMatcher?s.x.compare(e.urlMatcher,t.urlMatcher):0}(e,t))?n:function(e,t){var n={STATE:!0,URLMATCHER:!0};return n[e.type]&&n[t.type]?0:(e.$id||0)-(t.$id||0)}(e,t)};var u=function(){function e(e){this.router=e,this._sortFn=o,this._rules=[],this._id=0,this.urlRuleFactory=new i.I(e)}return e.prototype.dispose=function(e){this._rules=[],delete this._otherwiseFn},e.prototype.initial=function(e){var t=d(e);this.rule(this.urlRuleFactory.create((function(e,t){return 0===t.globals.transitionHistory.size()&&!!/^\/?$/.exec(e.path)}),t))},e.prototype.otherwise=function(e){var t=d(e);this._otherwiseFn=this.urlRuleFactory.create((0,a.P0)(!0),t),this._sorted=!1},e.prototype.removeRule=function(e){(0,a.nA)(this._rules,e)},e.prototype.rule=function(e){var t=this;if(!i.I.isUrlRule(e))throw new Error("invalid rule");return e.$id=this._id++,e.priority=e.priority||0,this._rules.push(e),this._sorted=!1,function(){return t.removeRule(e)}},e.prototype.rules=function(){return this.ensureSorted(),this._rules.concat(this._otherwiseFn?[this._otherwiseFn]:[])},e.prototype.sort=function(e){for(var t=this.stableSort(this._rules,this._sortFn=e||this._sortFn),n=0,o=0;o<t.length;o++)t[o]._group=n,o<t.length-1&&0!==this._sortFn(t[o],t[o+1])&&n++;this._rules=t,this._sorted=!0},e.prototype.ensureSorted=function(){this._sorted||this.sort()},e.prototype.stableSort=function(e,t){var n=e.map((function(e,t){return{elem:e,idx:t}}));return n.sort((function(e,n){var o=t(e.elem,n.elem);return 0===o?e.idx-n.idx:o})),n.map((function(e){return e.elem}))},e.prototype.when=function(e,t,n){var o=this.urlRuleFactory.create(e,t);return(0,a.$K)(n&&n.priority)&&(o.priority=n.priority),this.rule(o),o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlService.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRules.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlConfig.js"),a=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),i=function(){function e(e){var t=this;this.router=e,this.interceptDeferred=!1,this.rules=new r.h(this.router),this.config=new s.F(this.router),this.url=function(e,n,o){return t.router.locationService.url(e,n,o)},this.path=function(){return t.router.locationService.path()},this.search=function(){return t.router.locationService.search()},this.hash=function(){return t.router.locationService.hash()},this.onChange=function(e){return t.router.locationService.onChange(e)}}return e.prototype.dispose=function(){this.listen(!1),this.rules.dispose()},e.prototype.parts=function(){return{path:this.path(),search:this.search(),hash:this.hash()}},e.prototype.sync=function(e){if(!e||!e.defaultPrevented){var t=this.router,n=t.urlService,r=t.stateService,s={path:n.path(),search:n.search(),hash:n.hash()},i=this.match(s);(0,o.uj)([[o.HD,function(e){return n.url(e,!0)}],[a.TargetState.isDef,function(e){return r.go(e.state,e.params,e.options)}],[(0,o.is)(a.TargetState),function(e){return r.go(e.state(),e.params(),e.options())}]])(i&&i.rule.handler(i.match,s,this.router))}},e.prototype.listen=function(e){var t=this;if(!1!==e)return this._stopListeningFn=this._stopListeningFn||this.router.urlService.onChange((function(e){return t.sync(e)}));this._stopListeningFn&&this._stopListeningFn(),delete this._stopListeningFn},e.prototype.deferIntercept=function(e){void 0===e&&(e=!0),this.interceptDeferred=e},e.prototype.match=function(e){e=(0,o.l7)({path:"",search:{},hash:""},e);for(var t,n,r,s=this.rules.rules(),a=0;a<s.length&&(!t||t.rule._group===s[a]._group);a++){var i=(void 0,(r=(n=s[a]).match(e,this.router))&&{match:r,rule:n,weight:n.matchPriority(r)});t=!t||i&&i.weight>t.weight?i:t}return t},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla.js":(e,t,n)=>{"use strict";n.d(t,{$q:()=>o.$q});var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js":(e,t,n)=>{"use strict";n.d(t,{U:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),s=function(){function e(e,t){var n=this;this.fireAfterUpdate=t,this._listeners=[],this._listener=function(e){return n._listeners.forEach((function(t){return t(e)}))},this.hash=function(){return(0,r.en)(n._get()).hash},this.path=function(){return(0,r.en)(n._get()).path},this.search=function(){return(0,r.Qf)((0,r.en)(n._get()).search)},this._location=o.Jz.location,this._history=o.Jz.history}return e.prototype.url=function(e,t){return void 0===t&&(t=!0),(0,o.$K)(e)&&e!==this._get()&&(this._set(null,null,e,t),this.fireAfterUpdate&&this._listeners.forEach((function(t){return t({url:e})}))),(0,r.Q2)(this)},e.prototype.onChange=function(e){var t=this;return this._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}},e.prototype.dispose=function(e){(0,o.Wk)(this._listeners)},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=function(){function e(e,t){void 0===t&&(t=!1),this._isHtml5=t,this._baseHref=void 0,this._hashPrefix=""}return e.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},e.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},e.prototype.host=function(){return location.hostname},e.prototype.html5Mode=function(){return this._isHtml5},e.prototype.hashPrefix=function(e){return(0,o.$K)(e)?this._hashPrefix=e:this._hashPrefix},e.prototype.baseHref=function(e){return(0,o.$K)(e)&&(this._baseHref=e),(0,o.o8)(this._baseHref)&&(this._baseHref=this.getBaseHref()),this._baseHref},e.prototype.getBaseHref=function(){var e=document.getElementsByTagName("base")[0];return e&&e.href?e.href.replace(/^([^/:]*:)?\/\/[^/]*/,""):this._isHtml5?"/":location.pathname||"/"},e.prototype.dispose=function(){},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js":(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!1)||this;return r.Jz.addEventListener("hashchange",n._listener,!1),n}return a(t,e),t.prototype._get=function(){return(0,r.Ld)(this._location.hash)},t.prototype._set=function(e,t,n,o){this._location.hash=n},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),r.Jz.removeEventListener("hashchange",this._listener)},t}(s.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/injector.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/common/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{W:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=function(){var e=this;this.dispose=r.ZT,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return e._port},this.protocol=function(){return e._protocol},this.host=function(){return e._host},this.baseHref=function(){return e._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(t){return(0,o.$K)(t)?e._hashPrefix=t:e._hashPrefix}}},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>a});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),a=function(e){function t(t){return e.call(this,t,!0)||this}return s(t,e),t.prototype._get=function(){return this._url},t.prototype._set=function(e,t,n,o){this._url=n},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),a=n("./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js"),i=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js"),d=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js");n("./node_modules/@uirouter/core/lib-esm/vanilla/injector.js"),n("./node_modules/@uirouter/core/lib-esm/vanilla/q.js"),n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),(0,s._D)("vanilla.hashBangLocation",!1,r.R,o.u),(0,s._D)("vanilla.pushStateLocation",!0,a.h,o.u),(0,s._D)("vanilla.memoryLocation",!1,i.I,d.W)},"./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!0)||this;return n._config=t.urlService.config,s.Jz.addEventListener("popstate",n._listener,!1),n}return a(t,e),t.prototype._getBasePrefix=function(){return(0,s.Lb)(this._config.baseHref())},t.prototype._get=function(){var e=this._location,t=e.pathname,n=e.hash,o=e.search;o=(0,s.C7)(o)[1],n=(0,s.cW)(n)[1];var r=this._getBasePrefix(),a=t===this._config.baseHref(),i=t.substr(0,r.length)===r;return(t=a?"/":i?t.substring(r.length):t)+(o?"?"+o:"")+(n?"#"+n:"")},t.prototype._set=function(e,t,n,o){var r=this._getBasePrefix(),s=n&&"/"!==n[0]?"/":"",a=""===n||"/"===n?this._config.baseHref():r+s+n;o?this._history.replaceState(e,t,a):this._history.pushState(e,t,a)},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),s.Jz.removeEventListener("popstate",this._listener)},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/q.js":(e,t,n)=>{"use strict";n.d(t,{$q:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r={when:function(e){return new Promise((function(t,n){return t(e)}))},reject:function(e){return new Promise((function(t,n){n(e)}))},defer:function(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e},all:function(e){if((0,o.kJ)(e))return Promise.all(e);if((0,o.Kn)(e)){var t=Object.keys(e).map((function(t){return e[t].then((function(e){return{key:t,val:e}}))}));return r.all(t).then((function(e){return e.reduce((function(e,t){return e[t.key]=t.val,e}),{})}))}}}},"./node_modules/@uirouter/core/lib-esm/vanilla/utils.js":(e,t,n)=>{"use strict";n.d(t,{Qf:()=>s,en:()=>a,Q2:()=>i,_D:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=function(e,t){var n=t[0],r=t[1];return e.hasOwnProperty(n)?(0,o.kJ)(e[n])?e[n].push(r):e[n]=[e[n],r]:e[n]=r,e},s=function(e){return e.split("&").filter(o.yR).map(o.Fb).reduce(r,{})};function a(e){var t=function(e){return e||""},n=(0,o.cW)(e).map(t),r=n[0],s=n[1],a=(0,o.C7)(r).map(t);return{path:a[0],search:a[1],hash:s,url:e}}var i=function(e){var t=e.path(),n=e.search(),r=e.hash(),s=Object.keys(n).map((function(e){var t=n[e];return((0,o.kJ)(t)?t:[t]).map((function(t){return e+"="+t}))})).reduce(o.M7,[]).join("&");return t+(s?"?"+s:"")+(r?"#"+r:"")};function d(e,t,n,o){return function(r){var s=r.locationService=new n(r),a=r.locationConfig=new o(r,t);return{name:e,service:s,configuration:a,dispose:function(e){e.dispose(s),e.dispose(a)}}}}},"./node_modules/@uirouter/core/lib-esm/view/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/view/view.js":(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),i=function(){function e(e){var t=this;this.router=e,this._uiViews=[],this._viewConfigs=[],this._viewConfigFactories={},this._listeners=[],this._pluginapi={_rootViewContext:this._rootViewContext.bind(this),_viewConfigFactory:this._viewConfigFactory.bind(this),_registeredUIView:function(e){return(0,o.sE)(t._uiViews,(function(n){return t.router.$id+"."+n.id===e}))},_registeredUIViews:function(){return t._uiViews},_activeViewConfigs:function(){return t._viewConfigs},_onSync:function(e){return t._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}}}}return e.normalizeUIViewTarget=function(e,t){void 0===t&&(t="");var n=t.split("@"),o=n[0]||"$default",r=(0,s.HD)(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(o);if(a&&(r=a[1],o=a[2]),"!"===o.charAt(0)&&(o=o.substr(1),r=""),/^(\^(?:\.\^)*)$/.exec(r)){var i=r.split(".").reduce((function(e,t){return e.parent}),e);r=i.name}else"."===r&&(r=e.name);return{uiViewName:o,uiViewContextAnchor:r}},e.prototype._rootViewContext=function(e){return this._rootContext=e||this._rootContext},e.prototype._viewConfigFactory=function(e,t){this._viewConfigFactories[e]=t},e.prototype.createViewConfig=function(e,t){var n=this._viewConfigFactories[t.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+t.$type);var o=n(e,t);return(0,s.kJ)(o)?o:[o]},e.prototype.deactivateViewConfig=function(e){a.g4.traceViewServiceEvent("<- Removing",e),(0,o.nA)(this._viewConfigs,e)},e.prototype.activateViewConfig=function(e){a.g4.traceViewServiceEvent("-> Registering",e),this._viewConfigs.push(e)},e.prototype.sync=function(){var t=this,n=this._uiViews.map((function(e){return[e.fqn,e]})).reduce(o.bb,{});function s(e){for(var t=e.viewDecl.$context,n=0;++n&&t.parent;)t=t.parent;return n}var i=(0,r.WA)((function(e,t,n,o){return t*(e(n)-e(o))})),d=this._uiViews.sort(i((function(e){var t=function(e){return e&&e.parent?t(e.parent)+1:1};return 1e4*e.fqn.split(".").length+t(e.creationContext)}),1)).map((function(o){var r=t._viewConfigs.filter(e.matches(n,o));return r.length>1&&r.sort(i(s,-1)),{uiView:o,viewConfig:r[0]}})),u=d.map((function(e){return e.viewConfig})),m=this._viewConfigs.filter((function(e){return!(0,o.d3)(u,e)})).map((function(e){return{uiView:void 0,viewConfig:e}}));d.forEach((function(e){-1!==t._uiViews.indexOf(e.uiView)&&e.uiView.configUpdated(e.viewConfig)}));var l=d.concat(m);this._listeners.forEach((function(e){return e(l)})),a.g4.traceViewSync(l)},e.prototype.registerUIView=function(e){a.g4.traceViewServiceUIViewEvent("-> Registering",e);var t=this._uiViews;return t.filter((function(t){return t.fqn===e.fqn&&t.$type===e.$type})).length&&a.g4.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",e),t.push(e),this.sync(),function(){-1!==t.indexOf(e)?(a.g4.traceViewServiceUIViewEvent("<- Deregistering",e),(0,o.nA)(t)(e)):a.g4.traceViewServiceUIViewEvent("Tried removing non-registered uiView",e)}},e.prototype.available=function(){return this._uiViews.map((0,r.vg)("fqn"))},e.prototype.active=function(){return this._uiViews.filter((0,r.vg)("$config")).map((0,r.vg)("name"))},e.matches=function(e,t){return function(n){if(t.$type!==n.viewDecl.$type)return!1;var r=n.viewDecl,s=r.$uiViewName.split("."),a=t.fqn.split(".");if(!(0,o.fS)(s,a.slice(0-s.length)))return!1;var i=1-s.length||void 0,d=a.slice(0,i).join("."),u=e[d].creationContext;return r.$uiViewContextAnchor===(u&&u.name)}},e}()},"./node_modules/angular-aria/angular-aria.js":()=>{!function(e,t){"use strict";var n="ngAriaDisable",o=t.module("ngAria",["ng"]).info({angularVersion:"1.8.2"}).provider("$aria",(function(){var e={ariaHidden:!0,ariaChecked:!0,ariaReadonly:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeydown:!0,bindRoleForClick:!0};function o(t,o,r,a){return function(i,d,u){if(!u.hasOwnProperty(n)){var m=u.$normalize(o);!e[m]||s(d,r)||u[m]||i.$watch(u[t],(function(e){e=a?!e:!!e,d.attr(o,e)}))}}}this.config=function(n){e=t.extend(e,n)},this.$get=function(){return{config:function(t){return e[t]},$$watchExpr:o}}})),r=["BUTTON","A","INPUT","TEXTAREA","SELECT","DETAILS","SUMMARY"],s=function(e,t){if(-1!==t.indexOf(e[0].nodeName))return!0};o.directive("ngShow",["$aria",function(e){return e.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(e){return e.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(e){return e.$$watchExpr("ngValue","aria-checked",r,!1)}]).directive("ngChecked",["$aria",function(e){return e.$$watchExpr("ngChecked","aria-checked",r,!1)}]).directive("ngReadonly",["$aria",function(e){return e.$$watchExpr("ngReadonly","aria-readonly",r,!1)}]).directive("ngRequired",["$aria",function(e){return e.$$watchExpr("ngRequired","aria-required",r,!1)}]).directive("ngModel",["$aria",function(e){function t(t,n,o,a){return e.config(n)&&!o.attr(t)&&(a||!s(o,r))&&("hidden"!==o.attr("type")||"INPUT"!==o[0].nodeName)}function o(e,t){return!t.attr("role")&&t.attr("type")===e&&!s(t,r)}return{restrict:"A",require:"ngModel",priority:200,compile:function(r,s){if(!s.hasOwnProperty(n)){var a=function(e,t){var n=e.type,o=e.role;return"checkbox"===(n||o)||"menuitemcheckbox"===o?"checkbox":"radio"===(n||o)||"menuitemradio"===o?"radio":"range"===n||"progressbar"===o||"slider"===o?"range":""}(s);return{post:function(n,r,s,i){var d=t("tabindex","tabindex",r,!1);function u(){return i.$modelValue}switch(a){case"radio":case"checkbox":o(a,r)&&r.attr("role",a),t("aria-checked","ariaChecked",r,!1)&&n.$watch(u,"radio"===a?function(e){var t=s.value==i.$viewValue;r.attr("aria-checked",t)}:function(){r.attr("aria-checked",!i.$isEmpty(i.$viewValue))}),d&&r.attr("tabindex",0);break;case"range":if(o(a,r)&&r.attr("role","slider"),e.config("ariaValue")){var m=!r.attr("aria-valuemin")&&(s.hasOwnProperty("min")||s.hasOwnProperty("ngMin")),l=!r.attr("aria-valuemax")&&(s.hasOwnProperty("max")||s.hasOwnProperty("ngMax")),_=!r.attr("aria-valuenow");m&&s.$observe("min",(function(e){r.attr("aria-valuemin",e)})),l&&s.$observe("max",(function(e){r.attr("aria-valuemax",e)})),_&&n.$watch(u,(function(e){r.attr("aria-valuenow",e)}))}d&&r.attr("tabindex",0)}!s.hasOwnProperty("ngRequired")&&i.$validators.required&&t("aria-required","ariaRequired",r,!1)&&s.$observe("required",(function(){r.attr("aria-required",!!s.required)})),t("aria-invalid","ariaInvalid",r,!0)&&n.$watch((function(){return i.$invalid}),(function(e){r.attr("aria-invalid",!!e)}))}}}}}}]).directive("ngDisabled",["$aria",function(e){return e.$$watchExpr("ngDisabled","aria-disabled",r,!1)}]).directive("ngMessages",(function(){return{restrict:"A",require:"?ngMessages",link:function(e,t,o,r){o.hasOwnProperty(n)||t.attr("aria-live")||t.attr("aria-live","assertive")}}})).directive("ngClick",["$aria","$parse",function(e,t){return{restrict:"A",compile:function(o,a){if(!a.hasOwnProperty(n)){var i=t(a.ngClick);return function(t,n,o){s(n,r)||(e.config("bindRoleForClick")&&!n.attr("role")&&n.attr("role","button"),e.config("tabindex")&&!n.attr("tabindex")&&n.attr("tabindex",0),!e.config("bindKeydown")||o.ngKeydown||o.ngKeypress||o.ngKeyup||n.on("keydown",(function(e){var n=e.which||e.keyCode;13!==n&&32!==n||(-1!==r.indexOf(e.target.nodeName)||e.target.isContentEditable||e.preventDefault(),t.$apply((function(){i(t,{$event:e})})))})))}}}}}]).directive("ngDblclick",["$aria",function(e){return function(t,o,a){a.hasOwnProperty(n)||!e.config("tabindex")||o.attr("tabindex")||s(o,r)||o.attr("tabindex",0)}}])}(window,window.angular)},"./node_modules/angular-rateit/dist/ng-rateit.js":()=>{angular.module("ngRateIt",["ng"]).directive("ngRateIt",["$q",function(e){"use strict";return{scope:{ngModel:"=",min:"=?min",max:"=?max",step:"=?step",readOnly:"&?readOnly",pristine:"=?pristine",resetable:"&?resetable",starWidth:"=?starWidth",starHeight:"=?starHeight",canelWidth:"=?canelWidth",cancelHeight:"=?cancelHeight",rated:"&?rated",reset:"&?reset",beforeRated:"&?beforeRated",beforeReset:"&?beforeReset"},templateUrl:"ngRateIt/ng-rate-it.html",require:"ngModel",replace:!0,link:function(t,n,o){o.readOnly||(t.readOnly=function(){return!1}),o.resetable||(t.resetable=function(){return!0}),o.beforeRated||(t.beforeRated=function(){var t=e.defer();return t.resolve(),t.promise}),o.rated||(t.rated=function(){}),o.beforeReset||(t.beforeReset=function(){var t=e.defer();return t.resolve(),t.promise}),o.reset||(t.reset=function(){})},controller:"ngRateItController"}}]).controller("ngRateItController",["$scope","$timeout",function(e,t){"use strict";e.isTouch=!!window.hasOwnProperty("ontouchstart")||window.navigator.msMaxTouchPoints>0,e.orgValue=angular.copy(e.ngModel),e.min=e.min||0,e.max=e.max||5,e.step=e.step||.5,e.pristine=e.orgValue===e.ngModel,e.starWidth=e.starWidth||16,e.starPartWidth=e.starWidth*e.step,e.starHeight=e.starHeight||16,e.canelWidth=e.canelWidth||e.starWidth,e.cancelHeight=e.cancelHeight||e.starHeight;var n=e.max-e.min,o=n/e.step,r=e.$watch("ngModel",(function(){e.pristine=e.orgValue===e.ngModel})),s=function(e){return(e+1)/o*n};e.getStartParts=function(){return new Array(o)},e.getStarOffset=function(t){var n=1/e.step;return-e.starWidth/n*(t%n)},e.isSelected=function(t){return s(t)<=e.ngModel-e.min},e.removeRating=function(){e.resetable()&&!e.readOnly()&&e.beforeReset({rating:e.ngModel}).then((function(){e.ngModel=e.min,e.reset({rating:e.ngModel})}))},e.setValue=function(n){if(!e.readOnly()){var o=angular.copy(e.min+s(n));e.beforeRated({rating:o}).then((function(){e.ngModel=o,t((function(){e.rated({rating:e.ngModel})}))}))}},e.$on("$destroy",(function(){r()}))}]).run(["$templateCache",function(e){"use strict";e.put("ngRateIt/ng-rate-it.html",'<div class="ngrateiti needsclick" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star needsclick"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating needsclick" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star needsclick"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"ng-style="{\'width\': starPartWidth+\'px\', \'height\':starHeight+\'px\', \'background-position\': getStarOffset($index)+\'px 0\'}"></span></div></div>')}])},"./src/js/index.module.js":(e,t,n)=>{"use strict";n("./node_modules/angular-animate/index.js"),n("./node_modules/angular-aria/index.js"),n("./node_modules/angular-messages/index.js"),n("./node_modules/angular-material/index.js"),n("./node_modules/angular-resource/index.js"),n("./node_modules/angular-sanitize/index.js"),n("./node_modules/ng-csv/build/ng-csv.min.js"),n("./node_modules/ng-embed/src/ng-embed.js");var o=n("./node_modules/@uirouter/angularjs/lib-esm/index.js"),r=(n("./node_modules/angular-local-storage/index.js"),n("./node_modules/angular-rateit/dist/ng-rateit.js"),n("./node_modules/@flowjs/ng-flow/dist/ng-flow.js"),n("./node_modules/emojionearea/dist/emojionearea.js"),n("./node_modules/jquery-textcomplete/dist/jquery.textcomplete.js"),n("./node_modules/moment/moment.js")),s=n.n(r),a=n("./node_modules/lodash.map/index.js"),i=n.n(a);function d(e,t,n,o,r,a,d,u,m,l){const _=this;function c(n){a.updateStorage(u,{up:n}).then((o=>{var r;e.layout=o,r=!0===n?"show":"hide",t.parent.postMessage({cmd:r},"*"),l((()=>{e.$apply()}))})).catch(a.onStorageError)}_.$onInit=function(){console.debug("IndexController::onInit() VISITOR",e.visitor),e.status="init";const o=e.settings.color,s=e.settings.textColor,i=e.settings.textButtonColor||e.settings.textColor,d=e.settings.color_button,l=e.settings.backgroundColor,_=Math.max(document.documentElement.clientHeight,window.innerHeight||0),h=document.documentElement.clientWidth;document.documentElement.style.setProperty("--xc-ws-div-color",o),document.documentElement.style.setProperty("--xc-ws-text-color",s),document.documentElement.style.setProperty("--xc-ws-text-button-color",i),document.documentElement.style.setProperty("--xc-ws-button-color",d),document.documentElement.style.setProperty("--xc-ws-background-color",l),document.documentElement.style.setProperty("--xc-ws-client-height",_),document.documentElement.style.setProperty("--xc-ws-client-width",h);let f=!1;const p=t=>null!==t&&t[e.location]||{},M=a.getItem(m).then(p),y=a.getItem(u).then(p);r.all([M,y]).then((r=>{let[a,i]=r;e.visitor=a,e.layout=i,e.visitor.interaction&&e.layout.up?f=!0:e.layout.up=!0,"bottom_right"===e.settings.alignment&&c(f),n.go(function(){var t,n;const o=e.settings.online,r=!(null==e||null===(t=e.visitor)||void 0===t||null===(n=t.interaction)||void 0===n||!n.id),s=Number(e.settings.maxInteractions)&&Number(e.settings.openedInteractions)>=Number(e.settings.maxInteractions);return!!(r||!s&&o)}()?"app.online":"app.offline",null,{location:"replace"});let d="";d=e.settings.online||!e.settings.hideWhenOffline?"init":"offline",t.parent.postMessage({cmd:d,div_color:o,text_color:s,client_height:_,client_width:h},"*");const u=document.createElement("style");document.head.appendChild(u),u.sheet.insertRule(".mdi-send:before {color:"+e.settings.color+"!important}")})).catch(a.onStorageError)},_.close=function(){const t=e.visitor.interaction;if(t&&t.id){const r=o.confirm().parent(angular.element(document.querySelector("#chat-app"))).clickOutsideToClose(!0).title(e.settings.closingQuestion||"Do you want to close the interaction?").ok("Ok").cancel("Cancel");o.show(r).then((function(){return d.chatInteraction.customUpdate({id:t.id,closed:!0,closeReason:"contact"}).$promise})).then((function(){n.go("app.closing",null,{location:"replace"})})).catch((function(e){console.error("keep open",e)}))}},_.toggle=c,_.download=function(){const t=r.defer(),n=e.visitor.interaction;return n&&n.id&&d.chatInteraction.getMessages({intid:n.id,includeAll:!0,forceDownload:!0}).$promise.then((function(n){t.resolve(i()(n.rows.slice(1),(function(t){let n;if("in"===t.direction&&(n=e.settings.customerAlias||e.visitor.from||"Visitor"+t.ContactId),"out"===t.direction)switch(e.settings.agentIdentifier){case"website_alias":n=t.UserId?e.settings.agentAlias+t.UserId:"System";break;case"agent_alias":n=t.UserId?t.User.alias||t.User.fullname:"System";break;case"agent_fullname":n=t.UserId?t.User.fullname:"System";break;default:n=t.UserId?e.settings.agentAlias+t.UserId:"System"}return{sender:n,message:t.body,createdAt:s()(t.createdAt).format("MM/DD/YYYY HH:mm:ss")}})))})).catch((function(e){console.error(e)})),t.promise},_.getHeaderShape=function(){return"rounded"===e.settings.header_shape?"15px":"0px"};const h={online:["online","chat","waiting","closing","unmanaged"],offline:["offline"]};Object.defineProperty(e,"actualTitle",{get(){let t=e.settings.defaultTitle;return h.online.includes(e.status)?t=e.settings.header_online:h.offline.includes(e.status)&&(t=e.settings.header_offline),t}}),window.addEventListener("message",(function(e){"show"===e.data.evt?c(!0):"hide"===e.data.evt&&c(!1)}),!1)}d.$inject=["$rootScope","$window","$state","$mdDialog","$q","RemoteStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","$timeout"];var u=n("./node_modules/lodash.forin/index.js"),m=n.n(u),l=n("./node_modules/lodash.isnil/index.js"),_=n.n(l),c=n("./src/js/chat/chat.tpl.html"),h=n("./src/js/closing/closing.tpl.html"),f=n("./src/js/offline/offline.tpl.html"),p=n("./src/js/online/online.tpl.html"),M=n("./src/js/unmanaged/unmanaged.tpl.html"),y=n("./src/js/waiting/waiting.tpl.html");function L(e,t){const n=t.search();e.settings={cursor:"pointer",hide:!0},m()(n,(function(t,n){""===t||_()(t)||("true"===t&&(t=!0),"false"===t&&(t=!1),e.settings[n]=t)})),e.location=e.settings.location,e.layout={up:!1},e.visitor={}}function g(e,t,n,o,r){t.html5Mode(!0),n.defaults.headers.get||(n.defaults.headers.get={}),n.defaults.headers.get["If-Modified-Since"]="Mon, 26 Jul 1997 05:00:00 GMT",n.defaults.headers.get["Cache-Control"]="no-cache",n.defaults.headers.get.Pragma="no-cache",o.setPrefix(r),e.state("app",{abstract:!0}).state("app.waiting",{url:"/waiting",templateUrl:y,controller:"WaitingController as vm"}).state("app.online",{url:"/online",templateUrl:p,controller:"OnlineController as vm"}).state("app.offline",{url:"/offline",templateUrl:f,controller:"OfflineController as vm"}).state("app.chat",{url:"/chat",templateUrl:c,controller:"ChatController as vm"}).state("app.unmanaged",{url:"/unmanaged",templateUrl:M,controller:"UnmanagedController as vm"}).state("app.closing",{url:"/closing",templateUrl:h,controller:"ClosingController as vm"})}g.$inject=["$stateProvider","$locationProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX"],L.$inject=["$rootScope","$location"];var Y=n("./node_modules/lodash.merge/index.js"),v=n.n(Y);function j(e,t,n,o,r,s,a,i){const d=this;function u(t){return function(o){d.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").position("top");n.show(r)}}function m(){e.loading=!1}function l(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function _(){d.form={},d.upColor=null,d.downColor=null,d.userForm.$setPristine(),d.userForm.$setUntouched(),delete e.visitor.interaction,e.enableDownload=!1}d.$onInit=function(){console.debug("ClosingController::onInit() VISITOR",e.visitor),e.status="closing",r.all([s.removeItem(a).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(s.onStorageError),s.removeItem(i).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(s.onStorageError)]).then((()=>e.loading=!1))},d.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.close(v()({id:e.visitor.interaction.id,ratingType:e.settings.ratingType,customer:e.settings.customerAlias||e.visitor.from},d.form)).$promise.then((function(){delete d.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(_).then(l).catch(u("submit")).finally(m):(m(),u("submit"))},d.skip=function(){_(),l()},d.form={},d.errors={}}function k(e,t){const n={id:"@id",token:e.settings.token},o={};return o.baseUrl=e.settings.remote+"/api/",o.chatWebsite=t(o.baseUrl+"chat/websites/:id",n,{notify:{method:"POST",url:o.baseUrl+"chat/websites/:id/notify"},offline:{method:"POST",url:o.baseUrl+"chat/websites/:id/offline"},getFields:{method:"GET",url:o.baseUrl+"chat/websites/:id/fields"}}),o.chatInteraction=t(o.baseUrl+"chat/interactions/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/interactions/:id"},customUpdate:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/custom_update"},close:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/close"},getMessages:{method:"GET",url:o.baseUrl+"chat/interactions/:intid/my_messages"},uploadAttachment:{method:"POST",url:o.baseUrl+"chat/interactions/:id/attachment_upload",headers:{"Content-Type":void 0},transformRequest:angular.identity},downloadAttachment:{method:"GET",url:o.baseUrl+"chat/interactions/:id/attachment_download"},abandon:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/abandon"}}),o.chatMessage=t(o.baseUrl+"chat/messages/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/messages/:id"}}),o}j.$inject=["$rootScope","$state","$mdToast","api","$q","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"],k.$inject=["$rootScope","$resource"],n("./node_modules/core-js/modules/esnext.typed-array.at.js"),n("./node_modules/core-js/modules/es.typed-array.sort.js");var w=n("./node_modules/lodash.find/index.js"),b=n.n(w),D=n("./node_modules/lodash.values/index.js"),T=n.n(D),S=n("./node_modules/jquery/dist/jquery.js");function H(e,t,n,r,s,a,i,d,u,m,l,c,h){const f=this;let p,M,y,L,g=!1;function Y(){o.$q.all([m.removeItem(l).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(m.onStorageError),m.removeItem(c).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(m.onStorageError)]).then((()=>{t.settings.online?a.go("app.online",null,{location:"replace"}):a.go("app.offline",null,{location:"replace"})}))}function j(){n((function(){const e=s[0].getElementsByClassName("chat-messages")[0];e&&(e.scrollTop=e.scrollHeight)}))}function k(e){const n=d.simple().textContent(e).toastClass("md-warning-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));d.show(n)}function w(){f.errors={},k("FILE TOO BIG: The max allowed size is 16MB")}function D(e){return function(n){var o,r,s;403===(null===(o=n.data)||void 0===o?void 0:o.code)&&"OutOfInterval"===(null===(r=n.data)||void 0===r||null===(s=r.details)||void 0===s?void 0:s.type)?(t.settings.online=!1,t.settings.outOfInterval=!0,a.go("app.offline",null,{location:"replace"})):(f.errors[e]=n.data,f.errors={},k("Message not delivered"),j())}}function H(e){g||(g=!0,u.chatWebsite.notify(e).$promise.then((function(e){f.errors={};let n=!1;_()(t.visitor.interaction)&&(t.visitor.interaction={id:e.interaction.id},n=!0),t.visitor.interactionStarted||(t.visitor.interactionStarted=!0,n=!0),n&&m.updateStorage(l,t.visitor).then((e=>{t.visitor=e})).catch(m.onStorageError),p[0].emojioneArea.setText(""),j()})).catch(D("chatMessageError")).finally((()=>{g=!1})))}function x(){t.visitor&&t.visitor.interaction&&t.visitor.interaction.id&&u.chatInteraction.get({id:t.visitor.interaction.id}).$promise.then((function(e){delete f.errors.getInteraction,e.closed&&(t.visitor.interaction.closed=!0,m.updateStorage(l,t.visitor).then((e=>{t.visitor=e})).catch(m.onStorageError),"unmanaged"===e.disposition?a.go("app.unmanaged",null,{location:"replace"}):a.go("app.closing",null,{location:"replace"}))})).catch((function(e){switch(e.status){case 403:a.go("app.closing",null,{location:"replace"});break;case 404:Y();break;case 405:a.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}function E(e){const n=p[0].emojioneArea.getText();e&&13===e.keyCode&&e.shiftKey||e&&13!==e.keyCode||""!==n&&H(v()({body:n},t.visitor))}function P(){var e,n;null!=t&&null!==(e=t.visitor)&&void 0!==e&&null!==(n=e.interaction)&&void 0!==n&&n.id&&u.chatInteraction.getMessages({intid:t.visitor.interaction.id,includeAgent:!0,id:L||void 0}).$promise.then((function(e){if(delete f.errors.interaction,e.count){let o=!1,r=0;for(r=0,o=!1;r<e.rows.length;r++){const s=b()(t.messages,{id:e.rows[r].id});if(s)e.rows[r].read&&(s.read=!0);else{const n=e.rows[r];if(n.AttachmentId&&n.body){const e=angular.element(n.body).prop("href");e.startsWith("http")&&(n.urlFromBody=e)}o=!0,t.messages.push(n)}"out"!==e.rows[r].direction||e.rows[r].read||(n=e.rows[r].id,u.chatMessage.update({id:n,read:!0}).$promise.catch((function(e){console.error(e)})))}o&&j(),e.rows[r-1].read&&(L=e.rows[r-1].id),L&&!t.visitor.interactionStarted&&m.updateStorage(l,{...t.visitor,interactionStarted:!0}).then((e=>{t.visitor=e}))}var n})).catch((function(e){switch(e.status){case 403:a.go("app.closing",null,{location:"replace"});break;case 405:a.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}f.errors={},t.messages=[],f.emojiOptions={watchEmbedData:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank"},f.InputRecorderService=h,f.ngFlow={flow:{}},f.ngFlowOptions={allowDuplicateUploads:!0},f.$onInit=function(){console.debug("ChatController::onInit() VISITOR",t.visitor),t.status="chat",t.loading=!1,t.settings.showMenu=!0,f.replyMessage="",t.visitor.interaction&&t.visitor.interaction.closed?Y():(x(),M=r(P,2e3),y=r(x,3e3)),p=S("#emojionearea").emojioneArea({placeholder:t.settings.placeholderMessage||"Type a message",events:{keyup:function(e,t){E(t)},ready:function(){this.setFocus()}}})},f.reply=E,f.reply_button=function(){const e=p[0].emojioneArea.getText();""!==e&&(H(v()({body:e},t.visitor)),p[0].emojioneArea.setFocus())},f.fileAdded=function(e){if(e.size>16777216)return void w();const n=new FormData;n.append("file",e.file),i.post(t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_upload?token="+t.settings.token,n,{transformRequest:angular.identity,headers:{"Content-Type":void 0}}).then((function(e){(e=e.data).id?(f.errors={},H(v()({body:'<a href="'+t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_download?attachId="+e.id+"&token="+t.settings.token+'" target="_blank">'+e.name+"</a>",AttachmentId:e.id},t.visitor))):D("sendAttachment")}),D("sendAttachment"))},f.recording=!1,f.recordingStopped=!1,f.recordedAudioUrl="",f.onRecordingStart=function(){f.recording?console.error("recording already started"):(console.log("start recording"),f.recording=!0,f.InputRecorderService.init().then((()=>{f.InputRecorderService.startRecording();const e=Date.now();f.recordingStopped=!1;const t=f.InputRecorderService.mediaStream,n=new AudioContext,o=n.createMediaStreamSource(t),r=n.createAnalyser();o.connect(r),r.fftSize=64;const s=new Uint8Array(r.frequencyBinCount),a=255*s.length,i=angular.element(document.getElementsByClassName("record-ripple"))[0],d=angular.element(document.getElementsByClassName("record-time"))[0],u=()=>{if(!f.recording||f.recordingStopped)return i.style.transform="",void(d.innerText="00:00,00");requestAnimationFrame(u),r.getByteFrequencyData(s);let t=0;s.forEach((e=>{t+=e}));const n=Math.min(1,t/a+.36);i.style.transform="scale("+n+")";const o=Date.now()-e,m=o%1e3,l=f.InputRecorderService.toHHMMSS(o/1e3)+","+("00"+Math.round(m/10)).slice(-2);d.innerText=l};u()})).catch((e=>{console.error(e),f.recording=!1})))},f.onRecordingStop=function(){const e=f.stopRecording(),t=URL.createObjectURL(e);f.recordedAudioUrl=t},f.onRecordingSend=function(){const e=f.stopRecording();f.recording=!1,f.recordingStopped=!1,f.InputRecorderService.clear(),f.ngFlow.flow.addFile(e)},f.onRecordingDelete=function(){f.stopRecording(),f.recording=!1,f.recordingStopped=!1,f.InputRecorderService.clear()},f.stopRecording=function(){return f.recordingStopped||(console.log("stoping recording"),f.recordingStopped=!0,f.InputRecorderService.stopRecording()),f.InputRecorderService.download()},f.handleSizeError=w,e.$on("$destroy",(function(){r.cancel(M),r.cancel(y),f.stopRecording(),M=null,y=null})),t.$on("$download",(function(e,n){n&&n(T()(t.messages))}))}H.$inject=["$scope","$rootScope","$timeout","$interval","$document","$state","$http","$mdToast","api","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT","InputRecorderService"];var x=n("./src/js/offline/offline.controller.js"),E=n("./src/js/online/online.controller.js"),P=n("./src/js/unmanaged/unmanaged.controller.js"),O=n("./src/js/waiting/waiting.controller.js");function A(e,t){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.add(e)}function $(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}var R=new WeakSet,F=new WeakSet;class W{constructor(e,t,n){A(this,F),A(this,R),this.remoteAddress=new URL(t.settings.address).origin,this.location=t.settings.location,this.$q=n,this.$window=e}setItem(e,t){const n="setItem";return this.$q((o=>{$(this,R,C).call(this,n,e,(()=>{o()})),this.$window.parent.postMessage({action:n,key:e,value:t},this.remoteAddress)}))}getItem(e){const t="getItem";return this.$q((n=>{$(this,R,C).call(this,t,e,((e,t)=>{n(t)})),this.$window.parent.postMessage({action:t,key:e},this.remoteAddress)}))}removeItem(e){const t="removeItem";return this.$q((n=>{$(this,R,C).call(this,t,e,(()=>{n()})),this.$window.parent.postMessage({action:t,key:e},this.remoteAddress)}))}updateStorage(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this.getItem(e).then((o=>{const r=$(this,F,I).call(this,o)||{};return n?delete r[this.location]:r[this.location]=t,this.setItem(e,r).then((()=>r[this.location]))}))}onStorageError(e){console.error("Storage Error",e)}}function C(e,t,n){const o=r=>{const s=`${e}Result`;if(r.origin===this.remoteAddress&&t===r.data.key&&s===r.data.action){const{action:e,item:s}=r.data;switch(console.debug(`[Key = ${t}] Action "${e}" event from parent`,r),e){case"setItemResult":n(t);break;case"getItemResult":n(t,s);break;case"removeItemResult":n(t);break;default:console.debug("Unsupported action",e)}this.$window.removeEventListener("message",o,!1)}};this.$window.addEventListener("message",o,!1)}function I(e){let t=e;if("string"==typeof t)try{t=JSON.parse(e)}catch(n){console.warn(`Could not parse "${e}"`,n),t=e}return t}W.$inject=["$window","$rootScope","$q"];var z=n("./src/js/input-recorder/input-recorder.service.js");function J(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class V{constructor(e,t){J(this,"source",""),J(this,"options",{showCurrentTime:!0}),J(this,"loading",!0),J(this,"playPause","play_arrow"),J(this,"currentTime","0:00"),J(this,"sliderTime",0),J(this,"totalTime","0:00"),J(this,"progress","0%"),J(this,"type","audio/webm"),this.$scope=e,this.$scope.$onDestroy=this.$onDestroy,this.$element=t}$onInit(){console.debug("AudioPlayerController.onInit"),"audio/wave"===this.type&&(this.type="audio/webm")}$postLink(){console.debug("AudioPlayerController.postLink");const e=this;this.draggableClasses=["pin"],this.currentlyDragged=null,this.handleMethodOnMouseMove=()=>!1,this.audio=this.$element.find("audio")[0]||{},this.audio.onloadedmetadata=()=>{e.audio.duration===1/0?(e.audio.currentTime=1e101,e.audio.ontimeupdate=()=>{e.audio.ontimeupdate=()=>{e.audio.duration!==1/0&&(e.audio.currentTime=0,e.audio.ontimeupdate=()=>{e.timeupdate()})}}):(e.audio.currentTime=0,e.audio.ontimeupdate=()=>{e.timeupdate()})},this.audio.onloadeddata=()=>{console.log("onloadeddata")},this.audio.oncanplay=()=>{this.makePlay()},this.audio.onended=()=>{this.playPause="play_arrow",this.$scope.$digest(),this.audio.currentTime=0},this.audio.load()}togglePlay(){this.audio.paused?(this.audio.currentTime===this.audio.duration&&(this.audio.currentTime=0),this.playPause="pause",this.audio.play()):(this.playPause="play_arrow",this.audio.pause())}makePlay(){this.loading=!1}timeupdate(){this.updateProgress(),this.$scope.$digest()}updateProgress(){const e=this.audio.currentTime,t=e/this.audio.duration*100;this.progress=t+"%",this.sliderTime=t,this.currentTime=this.formatTime(e)}formatTime(e){const t=Math.floor(e/60),n=Math.floor(e%60);return t+":"+(n<10?"0"+n:n)}onSliderTimeChanged(){this.audio.currentTime=this.audio.duration*(this.sliderTime/100)}$onDestroy(){console.debug("AudioPlayerController.destroy"),this.disposeSource&&!1===this.disposeSource&&URL.revokeObjectURL(this.source)}}V.$inject=["$scope","$element"];var U=n("./src/js/audio-player/audio-player.tpl.html");const N=function(){return function(e){if(!e||"string"!=typeof e)return;const t=e.match(/(?<type>\w*)\/(?<tree>([\w-]+\.)+)?(?<subtype>[\w-]+)(\+(?<suffix>[\w\-.]+))?(; (?<parameter>[\w+-.=]+))?/i);return t&&t.groups?t.groups.type:""}};var q=n("./src/js/media-viewer/media-viewer.controller.js"),G=n("./src/js/media-viewer/media-viewer.tpl.html");function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class K{constructor(){B(this,"documentExtension",""),B(this,"documentClassExtension",""),B(this,"documentName",void 0),B(this,"source",void 0)}$onInit(){const e=this.documentName.split(".");1===e.length?this.documentExtension="unkn":this.documentExtension=e.pop(),this.documentExtension.length>4&&(this.documentExtension=this.documentExtension.substring(0,4)+".."),this.documentClassExtension="ext-"+this.documentExtension}downloadDocument(){const e=document.createElement("a"),t=this.source;e.href=t,e.target="_self",e.download=this.documentName,document.body.appendChild(e),e.click()}}K.$inject=[];const Q=K;var X=n("./src/js/document-wrapper/document-wrapper.tpl.html");function Z(e){return function(t){return e.trustAsHtml(t)}}Z.$inject=["$sce"],angular.module("motion-chat",["ngAnimate","ngAria","ngMessages","ngMaterial","ngResource","ngSanitize","ngCsv","ngEmbed","ui.router","LocalStorageModule","ngRateIt","flow"]).filter("toTrusted",Z).constant("STORAGE_PREFIX","motion_chat").constant("STORAGE_VISITOR","visitor").constant("STORAGE_LAYOUT","layout").service("RemoteStorageService",W).service("InputRecorderService",z.t).directive("ngEnter",(function(){return function(e,t,n){t.bind("keydown keypress",(function(t){13===t.which&&(e.$apply((function(){e.$eval(n.ngEnter)})),t.preventDefault())}))}})).directive("ngPrint",(function(){return{link:function(e,t){t.on("click",(function(){e.messages.length>0&&function(e){const t=document.createElement("div"),n=e.visitor,o=e.settings;let r;for(let a=0;a<e.messages.length;a++){const i=e.messages[a];let d="Sender: ";const u="Message: "+i.body,m="Sent At: "+s()(i.createdAt).format("YYYY-MM-DD HH:mm:ss");if(0!==a){switch(e.settings.agentIdentifier){case"website_alias":d+="out"===i.direction?i.UserId?o.agentAlias+i.UserId:"System":o.customerAlias||n.from||"Visitor"+i.ContactId;break;case"agent_alias":d+="out"===i.direction?i.UserId?i.User.alias||i.User.fullname:"System":o.customerAlias||n.from||"Visitor"+i.ContactId;break;case"agent_fullname":d+="out"===i.direction?i.UserId?i.User.fullname:"System":o.customerAlias||n.from||"Visitor"+i.ContactId;break;default:d+="out"===i.direction?i.UserId?(o.agentAlias||"Agent")+i.UserId:"System":o.customerAlias||n.from||"Visitor"+i.ContactId}t.appendChild(document.createTextNode(d)),t.appendChild(document.createElement("br")),t.appendChild(document.createTextNode(u)),t.appendChild(document.createElement("br")),t.appendChild(document.createTextNode(m)),t.appendChild(document.createElement("br")),t.appendChild(document.createElement("br"))}else r=i.createdAt}const a=window.open();a.document.write("<html><head><title>"+document.title+"</title>"),a.document.write("</head><body >"),a.document.write("<h3> Website: "+o.referer+"</h3>"),a.document.write("<h3> Start Time: "+s()(r).format("YYYY-MM-DD HH:mm:ss")+"</h3>"),a.document.write("<h3> Print Time: "+s()().format("YYYY-MM-DD HH:mm:ss")+"</h3>"),a.document.write(t.innerHTML),a.document.write("</body></html>"),a.document.close(),a.focus(),a.print(),a.close()}(e)}))},restrict:"A"}})).controller("ChatController",H).controller("ClosingController",j).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("IndexController",d).factory("api",k).config(g).run(L).controller("OfflineController",x.v).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("OnlineController",E.E).controller("UnmanagedController",P.g).controller("WaitingController",O.H).component("audioPlayer",{templateUrl:U,controller:V,controllerAs:"$ctrl",bindings:{source:"<",type:"<",disposeSource:"<"}}).controller("audioPlayerController",V).filter("typeFromMimeType",N).service("typeFromMimeType",N).component("mediaViewer",{templateUrl:G,controller:q.Z,controllerAs:"$ctrl",bindings:{source:"<",type:"<"}}).component("documentWrapper",{templateUrl:X,controller:Q,controllerAs:"$ctrl",bindings:{source:"<",documentName:"<"}}).directive("adjustImgSize",(function(){return{controller:q.Z,controllerAs:"mediaViewerController",link:function(e,t){e.mediaViewerController.adjustImgSize(t)}}})).directive("adjustVideoSize",(function(){return{controller:q.Z,controllerAs:"mediaViewerController",link:function(e,t){e.mediaViewerController.adjustImgSize(t)}}}))},"./node_modules/core-js/internals/a-function.js":e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},"./node_modules/core-js/internals/a-possible-prototype.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/is-object.js");e.exports=function(e){if(!o(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},"./node_modules/core-js/internals/an-object.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/is-object.js");e.exports=function(e){if(!o(e))throw TypeError(String(e)+" is not an object");return e}},"./node_modules/core-js/internals/array-buffer-native.js":e=>{e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},"./node_modules/core-js/internals/array-buffer-view-core.js":(e,t,n)=>{"use strict";var o,r,s,a=n("./node_modules/core-js/internals/array-buffer-native.js"),i=n("./node_modules/core-js/internals/descriptors.js"),d=n("./node_modules/core-js/internals/global.js"),u=n("./node_modules/core-js/internals/is-object.js"),m=n("./node_modules/core-js/internals/has.js"),l=n("./node_modules/core-js/internals/classof.js"),_=n("./node_modules/core-js/internals/create-non-enumerable-property.js"),c=n("./node_modules/core-js/internals/redefine.js"),h=n("./node_modules/core-js/internals/object-define-property.js").f,f=n("./node_modules/core-js/internals/object-get-prototype-of.js"),p=n("./node_modules/core-js/internals/object-set-prototype-of.js"),M=n("./node_modules/core-js/internals/well-known-symbol.js"),y=n("./node_modules/core-js/internals/uid.js"),L=d.Int8Array,g=L&&L.prototype,Y=d.Uint8ClampedArray,v=Y&&Y.prototype,j=L&&f(L),k=g&&f(g),w=Object.prototype,b=w.isPrototypeOf,D=M("toStringTag"),T=y("TYPED_ARRAY_TAG"),S=y("TYPED_ARRAY_CONSTRUCTOR"),H=a&&!!p&&"Opera"!==l(d.opera),x=!1,E={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},P={BigInt64Array:8,BigUint64Array:8},O=function(e){if(!u(e))return!1;var t=l(e);return m(E,t)||m(P,t)};for(o in E)(s=(r=d[o])&&r.prototype)?_(s,S,r):H=!1;for(o in P)(s=(r=d[o])&&r.prototype)&&_(s,S,r);if((!H||"function"!=typeof j||j===Function.prototype)&&(j=function(){throw TypeError("Incorrect invocation")},H))for(o in E)d[o]&&p(d[o],j);if((!H||!k||k===w)&&(k=j.prototype,H))for(o in E)d[o]&&p(d[o].prototype,k);if(H&&f(v)!==k&&p(v,k),i&&!m(k,D))for(o in x=!0,h(k,D,{get:function(){return u(this)?this[T]:void 0}}),E)d[o]&&_(d[o],T,o);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:H,TYPED_ARRAY_CONSTRUCTOR:S,TYPED_ARRAY_TAG:x&&T,aTypedArray:function(e){if(O(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(p&&!b.call(j,e))throw TypeError("Target is not a typed array constructor");return e},exportTypedArrayMethod:function(e,t,n){if(i){if(n)for(var o in E){var r=d[o];if(r&&m(r.prototype,e))try{delete r.prototype[e]}catch(e){}}k[e]&&!n||c(k,e,n?t:H&&g[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var o,r;if(i){if(p){if(n)for(o in E)if((r=d[o])&&m(r,e))try{delete r[e]}catch(e){}if(j[e]&&!n)return;try{return c(j,e,n?t:H&&j[e]||t)}catch(e){}}for(o in E)!(r=d[o])||r[e]&&!n||c(r,e,t)}},isView:function(e){if(!u(e))return!1;var t=l(e);return"DataView"===t||m(E,t)||m(P,t)},isTypedArray:O,TypedArray:j,TypedArrayPrototype:k}},"./node_modules/core-js/internals/array-sort.js":e=>{var t=Math.floor,n=function(e,s){var a=e.length,i=t(a/2);return a<8?o(e,s):r(n(e.slice(0,i),s),n(e.slice(i),s),s)},o=function(e,t){for(var n,o,r=e.length,s=1;s<r;){for(o=s,n=e[s];o&&t(e[o-1],n)>0;)e[o]=e[--o];o!==s++&&(e[o]=n)}return e},r=function(e,t,n){for(var o=e.length,r=t.length,s=0,a=0,i=[];s<o||a<r;)s<o&&a<r?i.push(n(e[s],t[a])<=0?e[s++]:t[a++]):i.push(s<o?e[s++]:t[a++]);return i};e.exports=n},"./node_modules/core-js/internals/classof-raw.js":e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},"./node_modules/core-js/internals/classof.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/to-string-tag-support.js"),r=n("./node_modules/core-js/internals/classof-raw.js"),s=n("./node_modules/core-js/internals/well-known-symbol.js")("toStringTag"),a="Arguments"==r(function(){return arguments}());e.exports=o?r:function(e){var t,n,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),s))?n:a?r(t):"Object"==(o=r(t))&&"function"==typeof t.callee?"Arguments":o}},"./node_modules/core-js/internals/correct-prototype-getter.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/fails.js");e.exports=!o((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},"./node_modules/core-js/internals/create-non-enumerable-property.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/descriptors.js"),r=n("./node_modules/core-js/internals/object-define-property.js"),s=n("./node_modules/core-js/internals/create-property-descriptor.js");e.exports=o?function(e,t,n){return r.f(e,t,s(1,n))}:function(e,t,n){return e[t]=n,e}},"./node_modules/core-js/internals/create-property-descriptor.js":e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},"./node_modules/core-js/internals/descriptors.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/fails.js");e.exports=!o((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},"./node_modules/core-js/internals/document-create-element.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/global.js"),r=n("./node_modules/core-js/internals/is-object.js"),s=o.document,a=r(s)&&r(s.createElement);e.exports=function(e){return a?s.createElement(e):{}}},"./node_modules/core-js/internals/engine-ff-version.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/engine-user-agent.js").match(/firefox\/(\d+)/i);e.exports=!!o&&+o[1]},"./node_modules/core-js/internals/engine-is-ie-or-edge.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/engine-user-agent.js");e.exports=/MSIE|Trident/.test(o)},"./node_modules/core-js/internals/engine-user-agent.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/get-built-in.js");e.exports=o("navigator","userAgent")||""},"./node_modules/core-js/internals/engine-v8-version.js":(e,t,n)=>{var o,r,s=n("./node_modules/core-js/internals/global.js"),a=n("./node_modules/core-js/internals/engine-user-agent.js"),i=s.process,d=s.Deno,u=i&&i.versions||d&&d.version,m=u&&u.v8;m?r=(o=m.split("."))[0]<4?1:o[0]+o[1]:a&&(!(o=a.match(/Edge\/(\d+)/))||o[1]>=74)&&(o=a.match(/Chrome\/(\d+)/))&&(r=o[1]),e.exports=r&&+r},"./node_modules/core-js/internals/engine-webkit-version.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/engine-user-agent.js").match(/AppleWebKit\/(\d+)\./);e.exports=!!o&&+o[1]},"./node_modules/core-js/internals/fails.js":e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},"./node_modules/core-js/internals/get-built-in.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/global.js"),r=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?r(o[e]):o[e]&&o[e][t]}},"./node_modules/core-js/internals/global.js":(e,t,n)=>{var o=function(e){return e&&e.Math==Math&&e};e.exports=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},"./node_modules/core-js/internals/has.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/to-object.js"),r={}.hasOwnProperty;e.exports=Object.hasOwn||function(e,t){return r.call(o(e),t)}},"./node_modules/core-js/internals/hidden-keys.js":e=>{e.exports={}},"./node_modules/core-js/internals/ie8-dom-define.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/descriptors.js"),r=n("./node_modules/core-js/internals/fails.js"),s=n("./node_modules/core-js/internals/document-create-element.js");e.exports=!o&&!r((function(){return 7!=Object.defineProperty(s("div"),"a",{get:function(){return 7}}).a}))},"./node_modules/core-js/internals/inspect-source.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/shared-store.js"),r=Function.toString;"function"!=typeof o.inspectSource&&(o.inspectSource=function(e){return r.call(e)}),e.exports=o.inspectSource},"./node_modules/core-js/internals/internal-state.js":(e,t,n)=>{var o,r,s,a=n("./node_modules/core-js/internals/native-weak-map.js"),i=n("./node_modules/core-js/internals/global.js"),d=n("./node_modules/core-js/internals/is-object.js"),u=n("./node_modules/core-js/internals/create-non-enumerable-property.js"),m=n("./node_modules/core-js/internals/has.js"),l=n("./node_modules/core-js/internals/shared-store.js"),_=n("./node_modules/core-js/internals/shared-key.js"),c=n("./node_modules/core-js/internals/hidden-keys.js"),h="Object already initialized",f=i.WeakMap;if(a||l.state){var p=l.state||(l.state=new f),M=p.get,y=p.has,L=p.set;o=function(e,t){if(y.call(p,e))throw new TypeError(h);return t.facade=e,L.call(p,e,t),t},r=function(e){return M.call(p,e)||{}},s=function(e){return y.call(p,e)}}else{var g=_("state");c[g]=!0,o=function(e,t){if(m(e,g))throw new TypeError(h);return t.facade=e,u(e,g,t),t},r=function(e){return m(e,g)?e[g]:{}},s=function(e){return m(e,g)}}e.exports={set:o,get:r,has:s,enforce:function(e){return s(e)?r(e):o(e,{})},getterFor:function(e){return function(t){var n;if(!d(t)||(n=r(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},"./node_modules/core-js/internals/is-object.js":e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},"./node_modules/core-js/internals/is-pure.js":e=>{e.exports=!1},"./node_modules/core-js/internals/is-symbol.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/get-built-in.js"),r=n("./node_modules/core-js/internals/use-symbol-as-uid.js");e.exports=r?function(e){return"symbol"==typeof e}:function(e){var t=o("Symbol");return"function"==typeof t&&Object(e)instanceof t}},"./node_modules/core-js/internals/native-symbol.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/engine-v8-version.js"),r=n("./node_modules/core-js/internals/fails.js");e.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&o&&o<41}))},"./node_modules/core-js/internals/native-weak-map.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/global.js"),r=n("./node_modules/core-js/internals/inspect-source.js"),s=o.WeakMap;e.exports="function"==typeof s&&/native code/.test(r(s))},"./node_modules/core-js/internals/object-define-property.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/descriptors.js"),r=n("./node_modules/core-js/internals/ie8-dom-define.js"),s=n("./node_modules/core-js/internals/an-object.js"),a=n("./node_modules/core-js/internals/to-property-key.js"),i=Object.defineProperty;t.f=o?i:function(e,t,n){if(s(e),t=a(t),s(n),r)try{return i(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},"./node_modules/core-js/internals/object-get-prototype-of.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/has.js"),r=n("./node_modules/core-js/internals/to-object.js"),s=n("./node_modules/core-js/internals/shared-key.js"),a=n("./node_modules/core-js/internals/correct-prototype-getter.js"),i=s("IE_PROTO"),d=Object.prototype;e.exports=a?Object.getPrototypeOf:function(e){return e=r(e),o(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?d:null}},"./node_modules/core-js/internals/object-set-prototype-of.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/an-object.js"),r=n("./node_modules/core-js/internals/a-possible-prototype.js");e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,s){return o(n),r(s),t?e.call(n,s):n.__proto__=s,n}}():void 0)},"./node_modules/core-js/internals/ordinary-to-primitive.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/is-object.js");e.exports=function(e,t){var n,r;if("string"===t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if("string"!==t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},"./node_modules/core-js/internals/redefine.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/global.js"),r=n("./node_modules/core-js/internals/create-non-enumerable-property.js"),s=n("./node_modules/core-js/internals/has.js"),a=n("./node_modules/core-js/internals/set-global.js"),i=n("./node_modules/core-js/internals/inspect-source.js"),d=n("./node_modules/core-js/internals/internal-state.js"),u=d.get,m=d.enforce,l=String(String).split("String");(e.exports=function(e,t,n,i){var d,u=!!i&&!!i.unsafe,_=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof n&&("string"!=typeof t||s(n,"name")||r(n,"name",t),(d=m(n)).source||(d.source=l.join("string"==typeof t?t:""))),e!==o?(u?!c&&e[t]&&(_=!0):delete e[t],_?e[t]=n:r(e,t,n)):_?e[t]=n:a(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&u(this).source||i(this)}))},"./node_modules/core-js/internals/require-object-coercible.js":e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},"./node_modules/core-js/internals/set-global.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/global.js");e.exports=function(e,t){try{Object.defineProperty(o,e,{value:t,configurable:!0,writable:!0})}catch(n){o[e]=t}return t}},"./node_modules/core-js/internals/shared-key.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/shared.js"),r=n("./node_modules/core-js/internals/uid.js"),s=o("keys");e.exports=function(e){return s[e]||(s[e]=r(e))}},"./node_modules/core-js/internals/shared-store.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/global.js"),r=n("./node_modules/core-js/internals/set-global.js"),s="__core-js_shared__",a=o[s]||r(s,{});e.exports=a},"./node_modules/core-js/internals/shared.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/is-pure.js"),r=n("./node_modules/core-js/internals/shared-store.js");(e.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.17.1",mode:o?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},"./node_modules/core-js/internals/to-integer.js":e=>{var t=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:t)(e)}},"./node_modules/core-js/internals/to-length.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/to-integer.js"),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},"./node_modules/core-js/internals/to-object.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/require-object-coercible.js");e.exports=function(e){return Object(o(e))}},"./node_modules/core-js/internals/to-primitive.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/is-object.js"),r=n("./node_modules/core-js/internals/is-symbol.js"),s=n("./node_modules/core-js/internals/ordinary-to-primitive.js"),a=n("./node_modules/core-js/internals/well-known-symbol.js")("toPrimitive");e.exports=function(e,t){if(!o(e)||r(e))return e;var n,i=e[a];if(void 0!==i){if(void 0===t&&(t="default"),n=i.call(e,t),!o(n)||r(n))return n;throw TypeError("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},"./node_modules/core-js/internals/to-property-key.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/to-primitive.js"),r=n("./node_modules/core-js/internals/is-symbol.js");e.exports=function(e){var t=o(e,"string");return r(t)?t:String(t)}},"./node_modules/core-js/internals/to-string-tag-support.js":(e,t,n)=>{var o={};o[n("./node_modules/core-js/internals/well-known-symbol.js")("toStringTag")]="z",e.exports="[object z]"===String(o)},"./node_modules/core-js/internals/uid.js":e=>{var t=0,n=Math.random();e.exports=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++t+n).toString(36)}},"./node_modules/core-js/internals/use-symbol-as-uid.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/native-symbol.js");e.exports=o&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},"./node_modules/core-js/internals/well-known-symbol.js":(e,t,n)=>{var o=n("./node_modules/core-js/internals/global.js"),r=n("./node_modules/core-js/internals/shared.js"),s=n("./node_modules/core-js/internals/has.js"),a=n("./node_modules/core-js/internals/uid.js"),i=n("./node_modules/core-js/internals/native-symbol.js"),d=n("./node_modules/core-js/internals/use-symbol-as-uid.js"),u=r("wks"),m=o.Symbol,l=d?m:m&&m.withoutSetter||a;e.exports=function(e){return s(u,e)&&(i||"string"==typeof u[e])||(i&&s(m,e)?u[e]=m[e]:u[e]=l("Symbol."+e)),u[e]}},"./node_modules/core-js/modules/es.typed-array.at.js":(e,t,n)=>{"use strict";var o=n("./node_modules/core-js/internals/array-buffer-view-core.js"),r=n("./node_modules/core-js/internals/to-length.js"),s=n("./node_modules/core-js/internals/to-integer.js"),a=o.aTypedArray;(0,o.exportTypedArrayMethod)("at",(function(e){var t=a(this),n=r(t.length),o=s(e),i=o>=0?o:n+o;return i<0||i>=n?void 0:t[i]}))},"./node_modules/core-js/modules/es.typed-array.sort.js":(e,t,n)=>{"use strict";var o=n("./node_modules/core-js/internals/array-buffer-view-core.js"),r=n("./node_modules/core-js/internals/global.js"),s=n("./node_modules/core-js/internals/fails.js"),a=n("./node_modules/core-js/internals/a-function.js"),i=n("./node_modules/core-js/internals/to-length.js"),d=n("./node_modules/core-js/internals/array-sort.js"),u=n("./node_modules/core-js/internals/engine-ff-version.js"),m=n("./node_modules/core-js/internals/engine-is-ie-or-edge.js"),l=n("./node_modules/core-js/internals/engine-v8-version.js"),_=n("./node_modules/core-js/internals/engine-webkit-version.js"),c=o.aTypedArray,h=o.exportTypedArrayMethod,f=r.Uint16Array,p=f&&f.prototype.sort,M=!!p&&!s((function(){var e=new f(2);e.sort(null),e.sort({})})),y=!!p&&!s((function(){if(l)return l<74;if(u)return u<67;if(m)return!0;if(_)return _<602;var e,t,n=new f(516),o=Array(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,o[e]=e-2*t+3;for(n.sort((function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==o[e])return!0}));h("sort",(function(e){var t=this;if(void 0!==e&&a(e),y)return p.call(t,e);c(t);var n,o=i(t.length),r=Array(o);for(n=0;n<o;n++)r[n]=t[n];for(r=d(t,function(e){return function(t,n){return void 0!==e?+e(t,n)||0:n!=n?-1:t!=t?1:0===t&&0===n?1/t>0&&1/n<0?1:-1:t>n}}(e)),n=0;n<o;n++)t[n]=r[n];return t}),!y||M)},"./node_modules/core-js/modules/esnext.typed-array.at.js":(e,t,n)=>{n("./node_modules/core-js/modules/es.typed-array.at.js")},"./node_modules/expose-loader/dist/runtime/getGlobalThis.js":(e,t,n)=>{"use strict";e.exports=function(){if("object"==typeof globalThis)return globalThis;var e;try{e=this||new Function("return this")()}catch(e){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==n.g)return n.g}return e}()},"./node_modules/json-form-data/src/jsonToFormData.js":function(e,t){var n,o;(o=this)||(o={}),void 0===(n=function(){return o.jsonToFormData=function(){function e(e){return"[object Array]"==={}.toString.call(e)}function t(t){return!(e(t)||"object"!=typeof t||!t||t instanceof Blob||t instanceof Date)}function n(){return"function"==typeof FormData}function o(){if(n())return new FormData}function r(n,o,s,a){var i=0;for(var d in n){if(n.hasOwnProperty(d)){var u=a||d,m=o.mapping(n[d]);if(a&&t(n)&&(u=a+"["+d+"]"),a&&e(n)&&(u=e(m)||o.showLeafArrayIndexes?a+"["+i+"]":a+"[]"),e(m)||t(m))r(m,o,s,u);else if(m instanceof FileList)for(var l=0;l<m.length;l++)s.append(u+"["+l+"]",m.item(l));else m instanceof Blob?s.append(u,m,m.name):m instanceof Date?s.append(u,m.toISOString()):(null===m&&o.includeNullValues||null!==m)&&void 0!==m&&s.append(u,m)}i++}return s}return function(e,t){if(t&&t.initialFormData){if("function"!=typeof t.initialFormData.append)throw"initialFormData must have an append function."}else if(!n())throw"This environment does not have global form data. options.initialFormData must be specified.";var s=[{initialFormData:o(),showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}},t||{}].reduce((function(e,t){return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}),{});return r(e,s,s.initialFormData)}}()}.apply(t,[]))||(e.exports=n)},"./node_modules/moment/locale/af.js":function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-dz.js":function(e,t,n){!function(e){"use strict";var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(o,r,s,a){var i=t(o),d=n[e][t(o)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,o)}},r=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-kw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ly.js":function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,r,s,a){var i=n(t),d=o[e][n(t)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,t)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ma.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-sa.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-tn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,n,s,a){var i=o(t),d=r[e][o(t)];return 2===i&&(d=d[n?0:1]),d.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/az.js":function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/be.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn-bd.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t?e<4?e:e+12:"ভোর"===t||"সকাল"===t?e:"দুপুর"===t?e>=3?e:e+12:"বিকাল"===t||"সন্ধ্যা"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bo.js":function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/br.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){return e>9?n(e%10):e}var o=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],r=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,s=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:s,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,n){return e<12?"a.m.":"g.m."}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bs.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cs.js":function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),o=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function s(e){return e>1&&e<5&&1!=~~(e/10)}function a(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"pár sekund":"pár sekundami";case"ss":return t||o?r+(s(e)?"sekundy":"sekund"):r+"sekundami";case"m":return t?"minuta":o?"minutu":"minutou";case"mm":return t||o?r+(s(e)?"minuty":"minut"):r+"minutami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?r+(s(e)?"hodiny":"hodin"):r+"hodinami";case"d":return t||o?"den":"dnem";case"dd":return t||o?r+(s(e)?"dny":"dní"):r+"dny";case"M":return t||o?"měsíc":"měsícem";case"MM":return t||o?r+(s(e)?"měsíce":"měsíců"):r+"měsíci";case"y":return t||o?"rok":"rokem";case"yy":return t||o?r+(s(e)?"roky":"let"):r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cy.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/da.js":function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-at.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-ch.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/dv.js":function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/el.js":function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,o=this._calendarEl[e],r=t&&t.hours();return n=o,("undefined"!=typeof Function&&n instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(o=o.apply(t)),o.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-au.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-gb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ie.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-il.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-in.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-nz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-sg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-do.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-mx.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-us.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/et.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?r[n][2]?r[n][2]:r[n][1]:o?r[n][0]:r[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eu.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fa.js":function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fi.js":function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function o(e,o,r,s){var a="";switch(r){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":a=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":a=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":a=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":a=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":a=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":a=s?"vuoden":"vuotta"}return function(e,o){return e<10?o?n[e]:t[e]:e}(e,s)+" "+a}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fil.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr.js":function(e,t,n){!function(e){"use strict";var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fy.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ga.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gd.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gl.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-deva.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-latn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gu.js":function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/he.js":function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hi.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},o=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:o,longMonthsParse:o,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hr.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hu.js":function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,o){var r=e;switch(n){case"s":return o||t?"néhány másodperc":"néhány másodperce";case"ss":return r+(o||t)?" másodperc":" másodperce";case"m":return"egy"+(o||t?" perc":" perce");case"mm":return r+(o||t?" perc":" perce");case"h":return"egy"+(o||t?" óra":" órája");case"hh":return r+(o||t?" óra":" órája");case"d":return"egy"+(o||t?" nap":" napja");case"dd":return r+(o||t?" nap":" napja");case"M":return"egy"+(o||t?" hónap":" hónapja");case"MM":return r+(o||t?" hónap":" hónapja");case"y":return"egy"+(o||t?" év":" éve");case"yy":return r+(o||t?" év":" éve")}return""}function o(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return o.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return o.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hy-am.js":function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/id.js":function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/is.js":function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,o,r){var s=e+" ";switch(o){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?s+(n||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?s+(n||r?"mínútur":"mínútum"):n?s+"mínúta":s+"mínútu";case"hh":return t(e)?s+(n||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return t(e)?n?s+"dagar":s+(r?"daga":"dögum"):n?s+"dagur":s+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return t(e)?n?s+"mánuðir":s+(r?"mánuði":"mánuðum"):n?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return t(e)?s+(n||r?"ár":"árum"):s+(n||r?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ja.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/jv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ka.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,n){return"ი"===n?t+"ში":t+n+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kk.js":function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/km.js":function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kn.js":function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ko.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ku.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:o,monthsShort:o,weekdays:"یه\200cكشه\200cممه\200c_دووشه\200cممه\200c_سێشه\200cممه\200c_چوارشه\200cممه\200c_پێنجشه\200cممه\200c_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysShort:"یه\200cكشه\200cم_دووشه\200cم_سێشه\200cم_چوارشه\200cم_پێنجشه\200cم_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره\200c|به\200cیانی/,isPM:function(e){return/ئێواره\200c/.test(e)},meridiem:function(e,t,n){return e<12?"به\200cیانی":"ئێواره\200c"},calendar:{sameDay:"[ئه\200cمرۆ كاتژمێر] LT",nextDay:"[به\200cیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له\200c %s",past:"%s",s:"چه\200cند چركه\200cیه\200cك",ss:"چركه\200c %d",m:"یه\200cك خوله\200cك",mm:"%d خوله\200cك",h:"یه\200cك كاتژمێر",hh:"%d كاتژمێر",d:"یه\200cك ڕۆژ",dd:"%d ڕۆژ",M:"یه\200cك مانگ",MM:"%d مانگ",y:"یه\200cك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ky.js":function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lb.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?r[n][0]:r[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lt.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,o){return t?r(n)[0]:o?r(n)[1]:r(n)[2]}function o(e){return e%10==0||e>10&&e<20}function r(e){return t[e].split("_")}function s(e,t,s,a){var i=e+" ";return 1===e?i+n(0,t,s[0],a):t?i+(o(e)?r(s)[1]:r(s)[0]):a?i+r(s)[1]:i+(o(e)?r(s)[1]:r(s)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,o){return t?"kelios sekundės":o?"kelių sekundžių":"kelias sekundes"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lv.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function o(e,o,r){return e+" "+n(t[r],e,o)}function r(e,o,r){return n(t[r],e,o)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:o,m:r,mm:o,h:r,hh:o,d:r,dd:o,M:r,MM:o,y:r,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/me.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ml.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mr.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function o(e,t,n,o){var r="";if(t)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,n){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms-my.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/my.js":function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ne.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl-be.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/oc-lnc.js":function(e,t,n){!function(e){"use strict";e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pa-in.js":function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pl.js":function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),o=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,t,n){var o=e+" ";switch(n){case"ss":return o+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return o+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return o+(r(e)?"godziny":"godzin");case"ww":return o+(r(e)?"tygodnie":"tygodni");case"MM":return o+(r(e)?"miesiące":"miesięcy");case"yy":return o+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,o){return e?/D MMMM/.test(o)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:s,M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt-br.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ro.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=" ";return(e%100>=20||e>=100&&e%100==0)&&(o=" de "),e+o+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,w:"o săptămână",ww:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ru.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"минута":"минуту":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,w:"неделя",ww:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sd.js":function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/se.js":function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/si.js":function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්\200dරේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්\200dරහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්\200dරහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්\200dර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sk.js":function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function o(e){return e>1&&e<5}function r(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(o(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(o(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(o(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(o(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(o(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(o(e)?"roky":"rokov"):s+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===e?t?"sekundo":"sekundi":2===e?t||o?"sekundi":"sekundah":e<5?t||o?"sekunde":"sekundah":"sekund");case"m":return t?"ena minuta":"eno minuto";case"mm":return r+(1===e?t?"minuta":"minuto":2===e?t||o?"minuti":"minutama":e<5?t||o?"minute":"minutami":t||o?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return r+(1===e?t?"ura":"uro":2===e?t||o?"uri":"urama":e<5?t||o?"ure":"urami":t||o?"ur":"urami");case"d":return t||o?"en dan":"enim dnem";case"dd":return r+(1===e?t||o?"dan":"dnem":2===e?t||o?"dni":"dnevoma":t||o?"dni":"dnevi");case"M":return t||o?"en mesec":"enim mesecem";case"MM":return r+(1===e?t||o?"mesec":"mesecem":2===e?t||o?"meseca":"mesecema":e<5?t||o?"mesece":"meseci":t||o?"mesecev":"meseci");case"y":return t||o?"eno leto":"enim letom";case"yy":return r+(1===e?t||o?"leto":"letom":2===e?t||o?"leti":"letoma":e<5?t||o?"leta":"leti":t||o?"let":"leti")}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sq.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr-cyrl.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ss.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ta.js":function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/te.js":function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tet.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tg.js":function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/th.js":function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tk.js":function(e,t,n){!function(e){"use strict";var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tl-ph.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tlh.js":function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,o,r){var s=function(e){var n=Math.floor(e%1e3/100),o=Math.floor(e%100/10),r=e%10,s="";return n>0&&(s+=t[n]+"vatlh"),o>0&&(s+=(""!==s?" ":"")+t[o]+"maH"),r>0&&(s+=(""!==s?" ":"")+t[r]),""===s?"pagh":s}(e);switch(o){case"ss":return s+" lup";case"mm":return s+" tup";case"hh":return s+" rep";case"dd":return s+" jaj";case"MM":return s+" jar";case"yy":return s+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tr.js":function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){return e<12?n?"öö":"ÖÖ":n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return o||t?r[n][0]:r[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ug-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"يېرىم كېچە":o<900?"سەھەر":o<1130?"چۈشتىن بۇرۇن":o<1230?"چۈش":o<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uk.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(o=+e,r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ur.js":function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/vi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/x-pseudo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/yo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-hk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1200?"上午":1200===o?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-mo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-tw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":(e,t,n)=>{var o={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn-bd":"./node_modules/moment/locale/bn-bd.js","./bn-bd.js":"./node_modules/moment/locale/bn-bd.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-in":"./node_modules/moment/locale/en-in.js","./en-in.js":"./node_modules/moment/locale/en-in.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./en-sg":"./node_modules/moment/locale/en-sg.js","./en-sg.js":"./node_modules/moment/locale/en-sg.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-mx":"./node_modules/moment/locale/es-mx.js","./es-mx.js":"./node_modules/moment/locale/es-mx.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fil":"./node_modules/moment/locale/fil.js","./fil.js":"./node_modules/moment/locale/fil.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-deva":"./node_modules/moment/locale/gom-deva.js","./gom-deva.js":"./node_modules/moment/locale/gom-deva.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./oc-lnc":"./node_modules/moment/locale/oc-lnc.js","./oc-lnc.js":"./node_modules/moment/locale/oc-lnc.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tk":"./node_modules/moment/locale/tk.js","./tk.js":"./node_modules/moment/locale/tk.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-mo":"./node_modules/moment/locale/zh-mo.js","./zh-mo.js":"./node_modules/moment/locale/zh-mo.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=s,e.exports=r,r.id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},"./node_modules/ng-csv/build/ng-csv.min.js":(e,t)=>{var n;n=window,document,angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(e){angular.isDefined(e.urlSanitizationWhitelist)?e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),e.exports===t&&(e.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(e){var t="\r\n",n={"\\t":"\t","\\b":"\b","\\v":"\v","\\f":"\f","\\r":"\r"};this.stringifyField=function(e,t){return"locale"===t.decimalSep&&this.isFloat(e)?e.toLocaleString():"."!==t.decimalSep&&this.isFloat(e)?e.toString().replace(".",t.decimalSep):"string"==typeof e?(e=e.replace(/"/g,'""'),(t.quoteStrings||e.indexOf(",")>-1||e.indexOf("\n")>-1||e.indexOf("\r")>-1)&&(e=t.txtDelim+e+t.txtDelim),e):"boolean"==typeof e?e?"TRUE":"FALSE":e},this.isFloat=function(e){return+e===e&&(!isFinite(e)||Boolean(e%1))},this.stringify=function(n,o){var r=e.defer(),s=this,a="",i="",d=e.when(n).then((function(e){var n,d;angular.isDefined(o.header)&&o.header&&(n=[],angular.forEach(o.header,(function(e){this.push(s.stringifyField(e,o))}),n),d=n.join(o.fieldSep?o.fieldSep:","),i+=d+t);var u,m,l=[];angular.isArray(e)?l=e:angular.isFunction(e)&&(l=e()),angular.isDefined(o.label)&&o.label&&"boolean"==typeof o.label&&(u=[],angular.forEach(l[0],(function(e,t){this.push(s.stringifyField(t,o))}),u),m=u.join(o.fieldSep?o.fieldSep:","),i+=m+t),angular.forEach(l,(function(e,n){var r,a,d=angular.copy(l[n]);a=[];var u=o.columnOrder?o.columnOrder:d;angular.forEach(u,(function(e){var t=o.columnOrder?d[e]:e;this.push(s.stringifyField(t,o))}),a),r=a.join(o.fieldSep?o.fieldSep:","),i+=n<l.length?r+t:r})),o.addByteOrderMarker&&(a+="\ufeff"),a+=i,r.resolve(a)}));return"function"==typeof d.catch&&d.catch((function(e){r.reject(e)})),r.promise},this.isSpecialChar=function(e){return void 0!==n[e]},this.getSpecialChar=function(e){return n[e]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(e,t,o,r,s){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(e,n,r){e.csv="",angular.isDefined(e.lazyLoad)&&"true"==e.lazyLoad||angular.isArray(e.data)&&e.$watch("data",(function(){e.buildCSV()}),!0),e.getFilename=function(){return e.filename||"download.csv"},e.buildCSV=function(){var s=t.defer();return n.addClass(r.ngCsvLoadingClass||"ng-csv-loading"),o.stringify(e.data(),function(){var t={txtDelim:e.txtDelim?e.txtDelim:'"',decimalSep:e.decimalSep?e.decimalSep:".",quoteStrings:e.quoteStrings,addByteOrderMarker:e.addByteOrderMarker};return angular.isDefined(r.csvHeader)&&(t.header=e.$eval(e.header)),angular.isDefined(r.csvColumnOrder)&&(t.columnOrder=e.$eval(e.columnOrder)),angular.isDefined(r.csvLabel)&&(t.label=e.$eval(e.label)),t.fieldSep=e.fieldSep?e.fieldSep:",",t.fieldSep=o.isSpecialChar(t.fieldSep)?o.getSpecialChar(t.fieldSep):t.fieldSep,t}()).then((function(t){e.csv=t,n.removeClass(r.ngCsvLoadingClass||"ng-csv-loading"),s.resolve(t)})),e.$apply(),s.promise}}],link:function(e,t){t.bind("click",(function(){e.buildCSV().then((function(){!function(){var t=e.charset||"utf-8",o=new Blob([e.csv],{type:"text/csv;charset="+t+";"});if(n.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(o,e.getFilename());else{var a=angular.element('<div data-tap-disabled="true"><a></a></div>'),i=angular.element(a.children()[0]);i.attr("href",n.URL.createObjectURL(o)),i.attr("download",e.getFilename()),i.attr("target","_blank"),r.find("body").append(a),s((function(){i[0].click(),i.remove()}),null)}}()})),e.$apply()}))}}}])},"./src/js/audio-player/audio-player.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/fe333c40841e29976a89.html"},"./src/js/chat/chat.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/591bf8c202d03863c86d.html"},"./src/js/closing/closing.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/2444367602029f7ce07b.html"},"./src/js/document-wrapper/document-wrapper.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/7b7643d87e862e440656.html"}}]);
+//# sourceMappingURL=chat-e96e9bea.js.map
\ No newline at end of file
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..dae47cd46981b448d64451890f3464c66e1c4934
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"scripts/chat-e96e9bea.js","mappings":";0MAOAA,QAAQC,OAAO,gBAAiB,IAC/BC,SAAS,eAAe,WACvB,aAMAC,KAAKC,SAAW,GAQhBD,KAAKE,QAAU,SAAUC,GACvB,OAAO,IAAIC,EAAKD,IASlBH,KAAKK,OAAS,GASdL,KAAKM,GAAK,SAAUC,EAAOC,GACzBR,KAAKK,OAAOI,KAAK,CAACF,EAAOC,KAG3BR,KAAKU,KAAO,WACV,IAAIC,EAAKX,KAAKE,QACVD,EAAWD,KAAKC,SAChBI,EAASL,KAAKK,OAClB,MAAO,CACL,OAAU,SAASO,GAEjB,IAAIC,EAAOF,EAAGd,QAAQiB,OAAO,GAAIb,EAAUW,IAI3C,OAHAf,QAAQkB,QAAQV,GAAQ,SAAUE,GAChCM,EAAKP,GAAGC,EAAM,GAAIA,EAAM,OAEnBM,QAKfhB,QAAQC,OAAO,YAAa,CAAC,kBAC1BkB,WAAW,WAAY,CAAC,SAAU,SAAU,SAAU,cACvD,SAAUC,EAAQC,EAAQC,EAAQC,GAEhC,IAAIjB,EAAUN,QAAQiB,OAAO,GAAIG,EAAOI,MAAMH,EAAOI,WAGjDT,EAAQI,EAAOI,MAAMH,EAAOK,aAAeH,EAAYI,OAAOrB,GAE9DsB,EAAkB,SAASC,GAC7B,IAAIC,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtCL,EAAKM,QACL,IAAI1B,EAAQU,EAAOiB,WAAWC,MAAMlB,EAAQ,CAAC,SAAWS,EAAWb,GAAMuB,OAAOT,IAMhF,GALI,CACF,SAAW,EAAG,eAAiB,EAAG,YAAe,EAAG,UAAa,EAAG,SAAY,GAChFD,IACAT,EAAOoB,cAEL9B,EAAM+B,iBACR,OAAO,GAIXzB,EAAKP,GAAG,WAAYmB,GACpBR,EAAOsB,IAAI,YAAY,WACnB1B,EAAK2B,IAAI,WAAYf,MAGzBR,EAAOwB,MAAQ5B,EAEXK,EAAOwB,eAAe,cACxBvB,EAAOD,EAAOyB,UAAUC,OAAO3B,EAAQJ,GACvCI,EAAOsB,IAAI,YAAY,WACrBpB,EAAOD,EAAOyB,UAAUC,OAAO3B,UAIpC4B,UAAU,WAAY,CAAC,WACtB,MAAO,CACLC,OAAO,EACP9B,WAAY,eAGlBnB,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,SAAY,KACZ,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAIC,EAAcD,EAAMN,eAAe,iBACnCQ,EAAeF,EAAMN,eAAe,kBACpCS,EAAaH,EAAMN,eAAe,cAAgBI,EAAMzB,MAAM2B,EAAMI,WACxEN,EAAML,MAAMY,aAAaN,EAASE,EAAaC,EAAcC,QAInEtD,QAAQC,OAAO,kBAAmB,CAAC,cAKhC+C,UAAU,mBAAmB,WAC5B,MAAO,CACL,OAAS,EACT,KAAQ,SAASC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,iBAAiB,SAAU/C,GACtCA,EAAMgD,yBASbV,UAAU,gBAAiB,CAAC,WAAY,SAASW,GAChD,MAAO,CACL,OAAS,EACT,KAAQ,SAASV,EAAOC,EAASC,GAC/B,IAAIS,EACAC,GAAQ,EACZX,EAAQO,KAAK,YAAY,SAAU/C,GAmBnC,IAAoBoD,EACdC,EACAC,EADAD,GAAW,EACXC,GAFcF,EAlBFpD,GAoBasD,cAAgBF,EAAUG,cAAcD,aACrEhE,QAAQkB,QAAQ8C,GAAgBA,EAAaE,OAAO,SAASC,GAC/C,UAARA,IACFJ,GAAW,MAGRA,IAvBFF,IACHZ,EAAMmB,OAAOjB,EAAMkB,eACnBR,GAAQ,GAEVF,EAASW,OAAOV,GAChBlD,EAAMgD,qBAERR,EAAQO,KAAK,kBAAkB,SAAU/C,GACvCiD,EAASW,OAAOV,GAChBA,EAAUD,GAAS,WACjBV,EAAMzB,MAAM2B,EAAMoB,eAClBX,EAAU,KACVC,GAAQ,IACP,aAgBb7D,QAAQC,OAAO,YAAa,CAAC,cAC5B+C,UAAU,YAAY,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAY/B,SAASqB,IACPvB,EAAML,MAAM4B,WAAWtB,GAZrBC,EAAMsB,gBACRxB,EAAMyB,OAAOvB,EAAMsB,iBAAiB,SAAUE,GACxCA,EACFH,IAYJvB,EAAML,MAAMgC,aAAa1B,MANzBsB,SAYP,SAAUxE,GAAU,aACnB,IAAIC,EAASD,EAAQC,OAAO,cAAe,CAAC,cAgB5CD,EAAQkB,QAfK,CACX2D,YAAa,CAAC,QAAS,YACvBC,aAAc,CAAC,SACfC,UAAW,CAAC,QAAS,UACrBC,WAAY,CAAC,SAAU,UACvBC,eAAgB,CAAC,SAAU,UAC3BC,UAAW,CAAC,SACZC,YAAa,CAAC,SACdC,UAAW,CAAC,QAAS,YACrBC,YAAa,GACbC,SAAU,GACVC,SAAU,GACVC,MAAO,CAAC,WAAY,WAGE,SAAUC,EAAW5D,GAC3C,IA4B6B6D,EA5BzBC,EAAO,SA4BkBD,EA5Ba7D,GA6B5B+D,OAAO,GAAGC,cAAgBH,EAAOzD,MAAM,IA5BzC,mBAAR0D,IACFA,EAAO,qBAET1F,EAAO+C,UAAU2C,EAAM,CAAC,WACtB,MAAO,CACLG,QAAS,YACT3E,WAAY,CAAC,SAAU,SAAU,SAAUC,EAAQC,GACjDD,EAAOsB,IAAI,SAAWb,GAAW,WAC/B,IAAIkE,EAAWhE,MAAMC,UAAUC,MAAMC,KAAKC,WACtCzB,EAAQqF,EAAS3D,QAErB,GAAIhB,EAAOwB,QAAUmD,EAAS3D,QAA9B,CAGA,IAAIN,EAAO,GACX9B,EAAQkB,QAAQuE,GAAW,SAASd,EAAOqB,GACzClE,EAAK6C,GAASoB,EAASC,OAEgB,IAArC5E,EAAOI,MAAMH,EAAOsE,GAAO7D,IAC7BpB,EAAMgD,8BAtCnB,CAiDC1D,SAEFA,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAI8C,EAAO9C,EAAM+C,QACjBjD,EAAMyB,OAAOuB,GAAM,SAAUA,GAC3B,GAAKA,EAAL,CAGA,IAAIE,EAAa,IAAIC,WACrBD,EAAWE,cAAcJ,EAAKA,MAC9BE,EAAWG,OAAS,SAAU5F,GAC5BuC,EAAMmB,QAAO,WACXjB,EAAMoD,KAAK,MAAO7F,EAAM8F,OAAOC,qBAO3CzG,QAAQC,OAAO,iBAAkB,CAAC,cACjC+C,UAAU,gBAAiB,CAAC,WAC3B,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,GACfA,EAAMyD,UAAYzD,EAAML,MAAM+D,WAIpC3G,QAAQC,OAAO,OAAQ,CAAC,gBAAiB,YAAa,cAAe,WACnE,YAAa,iBAAkB,WAAY,yHC9JlC2G,4PAkKX,SAASC,EAAmBC,EAAUC,EAAaC,EAAcC,EAAOC,GACpE,IAAIC,GAAkB,IAAAC,OAAM,yBACxBC,GAAe,IAAAD,OAAM,sBACzB,MAAO,CACHE,SAAU,MACVC,UAAW,IACXC,QAAS,SAAUC,GACf,IAAIC,EAAUD,EAASE,OAEvB,OADAF,EAASG,QACF,SAAU3E,EAAO4E,GACpB,IAAIC,EAAOD,EAASC,KAAK,WACzB,IAAKA,EAGD,OAFAD,EAASF,KAAKD,QACdZ,EAASe,EAASE,WAAlBjB,CAA8B7D,GAGlC,IAAI+E,EAAMF,EAAKG,MAAQ,CAAEC,SAAU,GAAIC,YAAa,EAAAC,MAChDC,EAAaL,EAAIM,MAAQ,IAAI,EAAAC,eAAeP,EAAIM,MACpDT,EAASF,KAAKK,EAAIG,YAAYN,EAAUQ,IAAeX,GACvD,EAAAc,MAAA,gBAAsBV,EAAKW,QAASZ,EAASF,QAC7C,IAAIe,EAAO5B,EAASe,EAASE,YACzB5G,EAAa6G,EAAI7G,WACjBwH,EAAexB,EAAgBa,GAC/BY,EAAYvB,EAAaW,GACzBa,EAASR,IAAc,OAAUA,GAErC,GADApF,EAAM2F,GAAaC,EACf1H,EAAY,CACZ,IAAI2H,EAAsB/B,EAAY5F,GAAY,IAAAF,QAAO,GAAI4H,EAAQ,CAAEzH,OAAQ6B,EAAO4E,SAAUA,KAC5Fc,IACA1F,EAAM0F,GAAgBG,EACtB7F,EAAM0F,GAAcC,GAAaC,GAMrChB,EAASC,KAAK,0BAA2BgB,GACzCjB,EAASkB,WAAWjB,KAAK,0BAA2BgB,GACpDE,EAA4B9B,EAAIF,EAAc8B,EAAoB7F,EAAO+E,GAG7E,IAAI,IAAAiB,UAASjB,EAAIkB,WACb,IAAIC,GAAY,IAAAC,aAAYpB,EAAIkB,WAC5BG,EAAc,IAAIC,OAAO,eAAiBH,EAAY,IAAK,KAO3DI,EAAoBtG,EAAMyB,QAND,WACzB,IAAI8E,EAAc,GAAGvH,MAChBC,KAAK2F,EAAS,GAAGkB,UACjBU,QAAO,SAAUC,GAAM,OAAOA,GAAMA,EAAGC,SAAWN,EAAYO,KAAKF,EAAGC,YAC3E,OAAOH,GAAe,aAAgBA,GAAa1B,KAAK,IAAME,EAAIkB,UAAY,iBAErB,SAAUW,GAC9DA,IAELb,EAA4B9B,EAAIF,EAAc6C,EAAc5G,EAAO+E,GACnEuB,QAGRb,EAAKzF,MAzNrB2D,EAAS,CACL,QACA,WACA,gBACA,eACA,KACA,SAAwBK,EAAO6C,EAAUC,EAAeC,EAAc9C,GAwBlE,IAAI+C,EAAW,CACXhC,KAAM,CAAEC,SAAU,CAAEgC,SAAUjD,EAAMkD,WAAWC,qBAC/C3B,QAAS,IAETzF,EAAY,CACZqH,MAAO,EACP/C,SAAU,MACVgD,UAAU,EACV/C,SAAU,IACVgD,WAAY,UACZ/C,QAAS,SAAUC,EAAU+C,EAAQC,GACjC,OAAO,SAAUxH,EAAO4E,EAAU1E,GAC9B,IACIuH,EAAYC,EAAWC,EAAcC,EADrCC,EAAY3H,EAAc,QAAK,GAAI4H,EAAgB5H,EAAkB,WAAG6H,EAjCzE,SAAU9H,EAASsD,EAAQyE,GAC1B,mBAAwB,EACxBnB,EAASjG,MAAMX,EAAS,KAAMsD,GAAQ0E,KAAKD,GAG3CnB,EAASjG,MAAMX,EAAS,KAAMsD,EAAQyE,IA4BkCD,EAzBzE,SAAU9H,EAAS+H,GAClB,mBAAwB,EACxBnB,EAASqB,MAAMjI,GAASgI,KAAKD,GAG7BnB,EAASqB,MAAMjI,EAAS+H,IAoB0EG,EAAYvD,EAASwD,cAAc,YAAcpB,EAAUtE,EAAOqE,EAAa7G,EAAc,QAAKA,EAAY,MAAK,GAAjD6G,CAAqD/G,IAAU,WAEnOqI,EAAe,CACfC,MAAO,MACPC,GAAIxI,EAAUqH,QACd1E,KAAMA,EACN8F,IAAKL,EAAU3C,QAAQgD,IAAML,EAAU3C,QAAQgD,IAAM,IAAM9F,EAAOA,EAClE+F,OAAQ,KACRC,cAWJ,SAA+BD,KACvBA,GAAYA,aAAkB,QAEjBb,IAAYa,IAE7B,EAAAlD,MAAA,yBAA+B8C,EAAcI,GAAUA,EAAOxD,UAAYwD,EAAOxD,SAASgC,UAC1FW,EAAaa,EACbE,EAAWF,MAjBX,sBAEI,IAAIG,GAAsB,IAAAzE,OAAM,yBAAN,CAAgCgE,GAGtDU,GAAgB,IAAA1E,OAAM,0BAAN,CAAiCgE,GACrD,OAAOS,GAAuBC,IAGtC,EAAAtD,MAAA,iBAAuB,UAAW8C,GAUlCzD,EAASC,KAAK,UAAW,CAAEW,QAAS6C,IACpCM,IACA,IAAIG,EAAa9E,EAAM+E,eAAeV,GA2BtC,SAASM,EAAWF,GAChB,IAAIO,EAAWhJ,EAAMiJ,OACjBC,EAAYjF,EAAGkF,QAASC,EAAYnF,EAAGkF,QACvCE,EAAc,CACdrE,KAAMyD,EACNjD,QAAS6C,GAETiB,EAAc,CACdC,WAAYL,EAAUvI,QACtB6I,WAAYJ,EAAUzI,QACtB8I,YAAaL,GAcjBJ,EAASU,MAAM,sBAAuBhH,GACtC,IAAIiH,EAASnC,EAAYwB,GAAU,SAAUY,GACzCA,EAAM/E,KAAK,cAAeyE,GAC1BM,EAAM/E,KAAK,UAAWwE,GACtBtB,EAAe6B,EAAOhF,GAAU,WAC5BsE,EAAUW,UACNlC,GACAA,EAAa+B,MAAM,gCAClB,IAAAI,WAAUhC,KAAmBA,GAAkB9H,EAAMzB,MAAMuJ,KAC5DhB,EAAc8C,MAvD9B,WAWI,GAVInC,IACA,EAAAlC,MAAA,iBAAuB,yBAA0BkC,EAAW5C,KAAK,YACjE4C,EAAWsC,SACXtC,EAAa,MAEbE,IACA,EAAApC,MAAA,iBAAuB,mBAAoB8C,GAC3CV,EAAaqC,WACbrC,EAAe,MAEfD,EAAW,CACX,IAAIuC,EAAcvC,EAAU7C,KAAK,eACjC,EAAAU,MAAA,iBAAuB,cAAe0E,GACtClC,EAAeL,GAAW,WACtBuC,EAAYR,YAAYI,UACxBpC,EAAa,QAEjBA,EAAaC,EACbA,EAAY,MAuCZwC,MAEJxC,EAAYiC,GACZhC,EAAeqB,GAWFU,MAAM,qBAAsBjB,GAAUb,GACnDD,EAAapJ,MAAMsJ,GA7EvB7H,EAAMP,IAAI,YAAY,WAClB,EAAA8F,MAAA,iBAAuB,2BAA4B8C,GACnDS,UAgFhB,OAAO/I,IAGf6D,EAAmBuG,QAAU,CAAC,WAAY,cAAe,eAAgB,QAAS,MAiElF,IAAIC,EAAuE,mBAA7C,YAAe,aAAwB,UAEjEC,EAAe,EAEnB,SAAStE,EAA4B9B,EAAIF,EAAc8B,EAAoB1H,EAAQ4G,KAE3E,IAAAuF,YAAWzE,EAAmB0E,WAC3BxF,EAAIE,SAASgB,WAAalB,EAAIE,SAASuF,oBAAsBJ,GAChEvE,EAAmB0E,UAEvB,IAAIE,GAAY,IAAAC,MAAK3F,EAAIM,MAAMsF,MAAMC,KACjCC,EAAc,CAAErK,KAAMqF,GAE1B,IAAI,IAAAyE,YAAWzE,EAAmBiF,mBAAoB,CAClD,IACIC,EADiB,IAAI,EAAAzF,eAAeP,EAAIM,MACH2F,cAAc,gBAAgBnG,KAyBvE1G,EAAOsB,IAAI,WAAYsE,EAAakH,UAAU,IAvB1B,SAAUC,GAG1B,GAAIA,IAAiBH,IAAsE,IAA/CG,EAAaC,UAAUC,QAAQX,GAA3E,CAEA,IAAIY,EAAWH,EAAaI,OAAO,MAC/BC,EAAaL,EAAaI,OAAO,QACjCE,EAAgB,SAAUC,GAAQ,OAAOA,EAAKC,aAC9CC,EAAWT,EAAaU,YAAY,MAAMC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAC7EC,EAAad,EAAaU,YAAY,QAAQC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAEjFE,EAAkBN,EAASnF,QAAO,SAAU0F,GAC5C,IAAIC,EAAMH,EAAWZ,QAAQc,GAC7B,OAAgB,IAATC,IAAeH,EAAWG,GAAKC,KAAKC,OAAOhB,EAASa,EAAM3D,IAAKgD,EAAWW,EAAM3D,QAG3F,GAAI0D,EAAgBK,OAAQ,CACxB,IAAIC,EAAgBN,EAAgBJ,KAAI,SAAUW,GAAK,OAAOA,EAAEjE,MAE5DkE,GAAY,IAAAjG,QAAO6E,GAAU,SAAUnK,EAAK6B,GAAO,OAAuC,IAAhCwJ,EAAcnB,QAAQrI,MACpF8C,EAAmBiF,kBAAkB2B,EAAWvB,OAGSL,IAGrE,IAAI,IAAAP,YAAWzE,EAAmB6G,WAAY,CAC1C,IAAIC,EAAOtC,IACPuC,EAAc,gBAEdC,EAAqB,SAAUC,GAC/B,QAASA,IAAWA,EAAMF,KAA6C,IAA7BE,EAAMF,GAAaD,IAAmBE,EAAmBC,EAAMC,oBAYzGC,EAAW,CAAE7B,QAASV,EAAU/H,MACpCvE,EAAOsB,IAAI,WAAYsE,EAAakJ,SAASD,GAV3B,SAAUF,GACxB,IAAInM,EACAuM,EAAOJ,EAAMF,GAAeE,EAAMF,IAAgB,GAKtD,OAJKC,EAAmBC,KACpBnM,EAAUsD,EAAGkJ,KAAKtH,EAAmB6G,UAAUI,KACvC7E,MAAK,SAAU/G,GAAO,OAAQgM,EAAIP,IAAgB,IAARzL,KAE/CP,IAGyDkK,KAG5E,YAAe,mBAAmB9K,UAAU,SAAU4D,GACtD,YAAe,mBAAmB5D,UAAU,SAAU6D,sWC9ZlDwJ,EAAiC,WACjC,SAASA,IACL,IAAIC,EAAQnQ,KACGA,KAAKoQ,SAAWvQ,EAAQ,GAAR,cAAwB,EACxCG,KAAKU,KAAO,CACvB,QACA,iBACA,YACA,SAAU2P,EAAOC,EAAgBC,GAI7B,OAHAJ,EAAMK,iBAAmBD,EAAUE,KAAOF,EAAUE,IAAI,qBAAuBF,EAAUG,IAAI,oBAC7FP,EAAME,MAAQA,EACdF,EAAMG,eAAiBA,EAChBH,IAyJnB,OApJAD,EAAgBrO,UAAU8O,eAAiB,SAAUnM,GACjDxE,KAAKoQ,SAAW5L,GAepB0L,EAAgBrO,UAAU+O,WAAa,SAAUrF,EAAQ6C,EAAQyC,GAC7D,IACIC,EAAa,SAAUxK,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGC,SAAUD,OAC3GE,EAAc,SAAU5K,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGjI,UAAWiI,OACjH,OAAO,IAAApE,WAAUrB,EAAO0F,UAClBH,EAAW9Q,KAAKmR,WAAW5F,EAAO0F,SAAU7C,KAC5C,IAAAxB,WAAUrB,EAAO6F,aACbN,EAAW9Q,KAAKqR,QAAQ9F,EAAO6F,YAAahD,KAC5C,IAAAxB,WAAUrB,EAAO+F,kBACbR,EAAW9Q,KAAKuR,aAAahG,EAAO+F,iBAAkBlD,EAAQyC,KAC9D,IAAAjE,WAAUrB,EAAOxC,WACbmI,EAAY3F,EAAOxC,YACnB,IAAA6D,WAAUrB,EAAO+B,mBACb4D,EAAYlR,KAAKwR,sBAAsBjG,EAAO+B,kBAAmBc,EAAQyC,IACzEC,EAbA,wBAwB1BZ,EAAgBrO,UAAUsP,WAAa,SAAUF,EAAU7C,GACvD,OAAO,IAAAhB,YAAW6D,GAAYA,EAAS7C,GAAU6C,GAWrDf,EAAgBrO,UAAUwP,QAAU,SAAUI,EAAKrD,GAG/C,OAFI,IAAAhB,YAAWqE,KACXA,EAAMA,EAAIrD,IACH,MAAPqD,EACO,KACPzR,KAAKoQ,SACEpQ,KAAKqQ,MACPK,IAAIe,EAAK,CAAEC,MAAO1R,KAAKsQ,eAAgBqB,QAAS,CAAEC,OAAQ,eAC1D7G,MAAK,SAAU8G,GAChB,OAAOA,EAASlK,QAGjB3H,KAAKwQ,iBAAiBiB,IAUjCvB,EAAgBrO,UAAU0P,aAAe,SAAUxR,EAAUqO,EAAQyC,GACjE,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAS1BX,EAAgBrO,UAAU2P,sBAAwB,SAAUzR,EAAUqO,EAAQyC,GAC1E,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAgB1BX,EAAgBrO,UAAUqQ,sBAAwB,SAAUzL,EAAQoK,EAAS9H,EAAWoJ,GACpFA,EAAWA,GAAY,GAEvB,IAAIC,EAASvS,EAAQ,GAAR,eAAyB,EAAI,KAAO,GAE7CwS,EAAQ,SAAUC,GAClB,IAAIC,GAAU,IAAAtJ,aAAYqJ,GAC1B,MAAO,aAAa7I,KAAK8I,GAAW,KAAOA,EAAUA,GA6BrDvP,EAQZ,SAA8BwC,GAC1B,IAAIgN,EAAU,EAAAzB,SAAA,cAAuBvL,EAAO,aAC5C,IAAKgN,IAAYA,EAAQpD,OACrB,MAAM,IAAIqD,MAAM,mCAAqCjN,EAAO,KAChE,OAAOgN,EAAQ7D,IAAI+D,GAAa9D,OAAO,EAAAC,QAAS,IAZhC8D,CAAqB5J,GAAW4F,KA3BzB,SAAUiE,GACzB,IAAIpN,EAAOoN,EAAMpN,KAAM0J,EAAO0D,EAAM1D,KAChC2D,EAAWR,EAAM7M,GAIrB,GAAIiB,EAAOqM,KAAKD,KAAcV,EAAS3M,GACnC,OAAOqN,EAAW,KAAOpM,EAAOqM,KAAKD,GAAY,IACrD,IAAIE,EAAcZ,EAAS3M,IAASA,EAGpC,GAAa,MAAT0J,EACA,OAAO2D,EAAW,OAAST,EAAS,YAAcW,EAAc,MAIpE,GAAa,MAAT7D,EAAc,CACd,IAAI8D,EAAMnC,EAAQ/C,cAAciF,GAC5BpS,EAAKqS,GAAOA,EAAIrL,KAChBhG,EAAQhB,GAAM,EAAAoQ,SAAA,mBAA4BpQ,IAAQ,GAGtD,OAAOkS,EAAW,cAAgBE,IADhB,IAAAf,SAAQrR,GAAM,KAAOA,EAAGyO,OAAS,GAAK,IAAM,IACA,IAAMzN,EAAKsR,KAAK,KAAO,KAGzF,OAAOJ,EAAW,KAAOT,EAAS,YAAcW,EAAc,OAEJE,KAAK,KAC/DjK,EAAYqJ,EAAMtJ,GACtB,MAAO,IAAMC,EAAY,IAAMhG,EAAQ,MAAQgG,EAAY,KAExDkH,EArKyB,GAiLhCwC,EAAc,SAAUQ,GACxB,OAAI,IAAAC,UAASD,EAAIE,kBACNC,EAAcH,EAAIE,kBACtBC,EAAcH,EAAIpQ,QAIzBuQ,EAAgB,SAAUC,GAC1B,OAAOC,OAAOC,KAAKF,GAAe,IAE7B3E,KAAI,SAAU9I,GAAO,MAAO,CAACA,EAAK,oBAAoB4D,KAAK6J,EAAYzN,QAEvEyD,QAAO,SAAUmK,GAAS,OAAO,IAAA7G,WAAU6G,KAAU,IAAAzB,SAAQyB,EAAM,OAEnE9E,KAAI,SAAU8E,GAAS,MAAO,CAAGjO,KAAMiO,EAAM,GAAG,IAAMA,EAAM,GAAIvE,KAAMuE,EAAM,GAAG,2ECzL7EC,EAAsB,SAAUC,GACvC,OAAO,SAA0BC,GAC7B,IAAIC,EAAOD,EAAYD,GACnBG,EAAwB,WAAbH,EAAwB,OAAS,KAOhD,OAAOE,EANP,SAA0BjE,EAAOnC,GAC7B,IACIsG,EADiB,IAAI,EAAA3L,eAAewH,EAAMlB,YAAYoF,IAC1BC,WAAWtG,EAAMuG,WAC7CtL,GAAS,IAAA5H,QAAOmT,EAAUF,GAAa,CAAEG,QAASzG,EAAOO,aAAc4B,IAC3E,OAAO,EAAAmB,SAAA,iBAA0B8C,EAAM7T,KAAM0I,SAEhByL,ICfrCC,EAAqC,WACrC,SAASA,EAAoBC,GAEzBrU,KAAKsU,cAAgB,GACrBtU,KAAKqU,kBAAoBA,EACzB,IAAIE,GAAM,IAAAvQ,KAAIqQ,IACd,IAAAG,sBAAqBD,EAAKvU,KAAMuU,EAAK,CAAC,eA8D1C,OAhDAH,EAAoBK,6BAA+B,SAAUC,GACzD,IAAIC,EAAWD,EAAOE,kBAAkB1F,KAAK,QAC7CyF,EAASE,OAAS,SAAUvF,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,WAAW,SAAUC,GAAK,MAAQ,CAAE,IAAK,KAAM,IAAK,OAAQA,MAAU1F,GAElHqF,EAASM,OAAS,SAAU3F,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,aAAa,SAAUC,GAAK,MAAQ,CAAE,KAAM,IAAK,MAAO,KAAMA,MAAU1F,IAIxH8E,EAAoBvS,UAAUqT,QAAU,aACxCd,EAAoBvS,UAAUsT,SAAW,SAAU3U,GAC/C,IAAI2P,EAAQnQ,KAEZ,OADAA,KAAKsU,cAAc7T,KAAKD,GACjB,WAAc,OAAO,IAAA4U,YAAWjF,EAAMmE,cAAjB,CAAgC9T,KAEhE4T,EAAoBvS,UAAUwT,UAAY,WACtC,IAAIA,EAAYrV,KAAKqU,kBAAkBgB,YAEvC,OADAA,GAAY,IAAAlC,UAASkC,GAAaA,EAAUC,QAAUD,IAClCrV,KAAKuV,SAASC,SAEtCpB,EAAoBvS,UAAU4T,SAAW,WACrC,OAAOzV,KAAK0V,YAAc1V,KAAK0V,UAAY1V,KAAK2V,SAASF,YAAczV,KAAK4V,QAAQC,SAAS/B,WAEjGM,EAAoBvS,UAAU4P,IAAM,SAAUqE,EAAQf,EAAStH,GAQ3D,YAPgB,IAAZsH,IAAsBA,GAAU,IAChC,IAAAnI,WAAUkJ,IACV9V,KAAK+V,UAAUtE,IAAIqE,GACnBf,GACA/U,KAAK+V,UAAUhB,UACftH,GACAzN,KAAK+V,UAAUtI,MAAMA,GAClBzN,KAAK+V,UAAUtE,OAE1B2C,EAAoBvS,UAAUmU,iBAAmB,SAAUC,EAAYF,EAAWR,EAAUI,EAAUC,GAClG,IAAIzF,EAAQnQ,KACZA,KAAK+V,UAAYA,EACjB/V,KAAKuV,SAAWA,EAChBvV,KAAK2V,SAAWA,EAChB3V,KAAK4V,QAAUA,EAEfK,EAAW1T,IAAI,0BAA0B,SAAU2T,GAAO,OAAO/F,EAAMmE,cAAcvT,SAAQ,SAAUJ,GAAM,OAAOA,EAAGuV,SACvH,IAAIC,GAAO,IAAAnS,KAAI+R,IAEf,IAAAvB,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,UAAW,OAAQ,SAAU,UAErE,IAAA3B,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,OAAQ,WAAY,UAEzD/B,EApE6B,0ECaxCvU,EAAQ,GAAR,OAAe,qBAAsB,IACrC,IAAIuW,EAAWvW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,OAC7CwW,EAAWxW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,mBAC7CyW,EAAUzW,EAAQ,GAAR,OAAe,mBAAoB,CAAC,mBAC9C0W,EAAY1W,EAAQ,GAAR,OAAe,kBAAmB,CAAC,mBAAoB,iBAAkB,uBACrF2W,EAAW3W,EAAQ,GAAR,OAAe,YAAa,CAAC,iBAAkB,kBAAmB,uBAE7E6U,GADW7U,EAAQ,GAAR,OAAe,mBAAoB,CAAC,cACtC,MAGb,SAAS4W,EAAkBpC,IAEvBK,EAAS1U,KAAK0U,OAAS,IAAI,EAAAgC,UACpBC,cAAgB,IAAI,IAAcjC,EAAOkC,cAAelC,EAAOmC,cAEtEnC,EAAOkC,cAAcE,UAAU,QAAS,MACxCpC,EAAOkC,cAAcE,UAAU,SAAUpD,EAAoB,WAC7DgB,EAAOkC,cAAcE,UAAU,WAAYpD,EAAoB,aAC/DgB,EAAOkC,cAAcE,UAAU,UAAWpD,EAAoB,YAC9DgB,EAAOqC,YAAY/M,WAAWgN,mBAAmB,OAAO,WAExDtC,EAAOuC,WAAW1L,OAAO2L,eAAgB,EACzC,IAAIC,EAAsBzC,EAAO0C,gBAAkB1C,EAAO2C,eAAiB,IAAIjD,EAAoBC,GAMnG,SAAS3T,EAAKqV,EAAWJ,EAAUC,EAASL,EAAUU,EAAY5F,EAAOC,GAIrE,OAHA6G,EAAmBnB,iBAAiBC,EAAYF,EAAWR,EAAUI,EAAUC,UACxElB,EAAe,cACfA,EAAa,KACbA,EAEX,OAXAN,EAAoBK,6BAA6BC,GAEjDA,EAAe,OAAIA,EACnBA,EAAa,KAAIhU,EACjBA,EAAKuM,QAAU,CAAC,YAAa,WAAY,UAAW,WAAY,aAAc,QAAS,kBAOhFyH,EA1BX+B,EAAkBxJ,QAAU,CAAC,qBA4B7B,IAAIqK,EAAiB,SAAUC,GAAe,MAAO,CACjD,oBACA,SAAUC,GACN,IAAIC,EAAUD,EAAK9C,OAAO6C,GAE1B,OADAE,EAAc,KAAI,WAAc,OAAOA,GAChCA,KAKf,SAASC,EAASnH,EAAWxJ,EAAI4Q,GAI7B,GAHA,EAAA5G,SAAA,UAAqBR,EACrB,EAAAQ,SAAA,GAAchK,GAETwM,OAAO1R,UAAUa,eAAeX,KAAKwO,EAAW,YACjD,IACIA,EAAUqH,QAAO,SAAUC,OAE/B,MAAOxS,GACHkL,EAAUuH,WAAa,cAAcrO,KAAKpE,GAASA,EAAMyP,YAKjE6C,EAAUf,cACLlG,MACA/B,KAAI,SAAUW,GAAK,OAAOA,EAAE0E,UAAU+D,eACtCnJ,OAAO,EAAAC,QAAS,IAChBvF,QAAO,SAAUgG,GAAK,MAAkB,aAAXA,EAAEwC,QAC/B/Q,SAAQ,SAAUiX,GAAc,OAAQA,EAAWlG,KAAOvB,EAAU0H,SAASD,EAAWE,UAAW3H,EAAUuH,aAQ/G,SAASK,EAAalC,GACzBA,EAAW1R,QAAO,WACd,EAAA8D,MAAA,wBA9BRqP,EAASzK,QAAU,CAAC,YAAa,KAAM,aA2BvCkL,EAAalL,QAAU,CAAC,cAMxBmJ,EAASrW,SAAS,YAAa0W,GAC/BH,EAAQvW,SAAS,aAAc,CAAC,oBAXL,SAAUqY,GAAY,OAAQA,EAASC,kBAAoB,IAAI,IAAkBD,MAY5G/B,EAAStW,SAAS,cAAeuX,EAAe,eAChDjB,EAAStW,SAAS,qBAAsB,CAAC,oBAAqB,WAAc,OAAO2U,EAAOE,qBAC1FyB,EAAStW,SAAS,oBAAoB,WAAc,OAAO,IAAImQ,KAC/DqG,EAAUxW,SAAS,iBAAkBuX,EAAe,kBACpDf,EAAUxW,SAAS,mBAAoBuX,EAAe,YACtDf,EAAUxW,SAAS,eAAgBuX,EAAe,sBAClDf,EAAUxW,SAAS,SAAU,CAAC,oBAfP,WAAc,OAAO,IAAAe,QAAO4T,EAAOiC,cAAe,CAAEjW,KAAM,WAAc,OAAOgU,EAAOmC,mBAgB7GN,EAAUrW,QAAQ,eAAgB,CAAC,YAAa,SAAUyX,GAAa,OAAOA,EAAUW,QAAQlK,UAChGoI,EAAStW,QAAQ,SAAS,WAAc,OAAOwU,EAAOqC,eACtDP,EAASiB,QAAQ,UAAU,WAAc,OAAO,EAAApP,SAChDmO,EAAS+B,IAAIJ,GACb9B,EAASkC,IAAI,CAAC,qBAAsB,SAAUC,OAC9CjC,EAAUgC,IAAI,CAAC,SAAU,SAAUE,OACnCnC,EAAQiC,IAAI,CAAC,aAAc,SAAUG,OACrCtC,EAASmC,IAAIb,GAEN,IAAIzD,EAAY,SAAU0E,GAO7B,OANaA,EAAIC,YAAYtP,OAAO,EAAAR,UAChB6F,KAAI,SAAU9I,GAC9B,IAAImS,EAAaW,EAAI7K,cAAcjI,GAEnC,MAAO,CAACA,EAAoB,WADX8S,EAAIE,UAAUb,GAAYc,MACJd,EAAWvU,QAAUuU,EAAWrQ,SAE7DiH,OAAO,EAAAmK,WAAY,2JC9GrC,SAASC,EAAeP,GACpB,IAAIQ,EAAW,SAAUxL,EAAOW,EAAQjO,GACpC,OAAOsY,EAAOS,GAAGzL,EAAOW,EAAQjO,IAGpC,OADA8Y,EAASE,WAAY,EACdF,EAaX,SAASG,EAAuBX,GAC5B,IAAIY,EAAiB,SAAU5L,EAAOW,EAAQjO,GAC1C,OAAOsY,EAAOa,SAAS7L,EAAOW,EAAQjO,IAG1C,OADAkZ,EAAeF,WAAY,EACpBE,EAxBXL,EAAe/L,QAAU,CAAC,UAkB1BmM,EAAuBnM,QAAU,CAAC,UAQlC,YAAe,mBAAmB3D,OAAO,UAAW0P,GAAgB1P,OAAO,kBAAmB8P,oKCpB1FG,EAA+B,WAC/B,SAASA,EAAc3C,EAAeC,GAClC7W,KAAK4W,cAAgBA,EACrB5W,KAAK6W,aAAeA,GACpB,IAAArC,uBAAqB,IAAAxQ,KAAIuV,EAAc1X,WAAY7B,MAAM,IAAAgE,KAAIhE,OAgHjE,OArBAuZ,EAAc1X,UAAUiV,UAAY,SAAUtR,EAAMgU,GAChD,OAAOxZ,KAAK4W,cAAcE,UAAUtR,EAAMgU,IAASxZ,MAEvDuZ,EAAc1X,UAAU4L,MAAQ,SAAUjI,EAAMiU,GAQ5C,OAPI,IAAAtG,UAAS3N,GACTiU,EAAajU,EAGbiU,EAAWjU,KAAOA,EAEtBxF,KAAK4W,cAAc8C,SAASD,GACrBzZ,MAOXuZ,EAAc1X,UAAU8X,UAAY,SAAUnZ,GAC1C,OAAOR,KAAK6W,aAAa8C,UAAUnZ,IAEhC+Y,EApHuB,6LCf3B,SAASK,IACZ,IAAIC,EAAkB,KACtB,OAAO,SAAU1R,EAAM2R,GAEnB,OADAD,EAAkBA,GAAmB,EAAA9I,SAAA,cAAuB,oBACrD,CAAC,IAAIgJ,EAAc5R,EAAM2R,EAAMD,KAI9C,IAAIG,EAAY,SAAUxG,EAAMyG,GAAO,OAAOzG,EAAK5E,QAAO,SAAUsL,EAAKrU,GAAO,OAAOqU,IAAO,IAAAtN,WAAUqN,EAAIpU,OAAU,IAY/G,SAASsU,EAAgB1M,GAE5B,IAAKA,EAAM2M,OACP,MAAO,GACX,IAAgKC,EAAW,CAAC,YAAa,WAAY,qBAAsBC,EAA7M,CAAC,mBAAoB,cAAe,WAAY,SAAU,SAAyKlY,OAApJ,CAAC,aAAc,qBAAsB,eAAgB,cAAiHmY,EAAcF,EAASjY,OAAOkY,GAIjS,IAAI,IAAA1N,WAAUa,EAAM+M,QAAUR,EAAUO,EAAa9M,GACjD,MAAM,IAAIgF,MAAM,UAAYhF,EAAMjI,KAAlB,4JAGL+U,EAAYjR,QAAO,SAAUzD,GAAO,OAAO,IAAA+G,WAAUa,EAAM5H,OAAUoN,KAAK,OAEzF,IAAIuH,EAAQ,GAAIC,EAAchN,EAAM+M,OAAS,CAAEE,UAAU,IAAAC,MAAKlN,EAAO8M,IAsBrE,OArBA,IAAAxZ,SAAQ0Z,GAAa,SAAUlP,EAAQ/F,GASnC,GAPAA,EAAOA,GAAQ,YAEX,IAAAsD,UAASyC,KACTA,EAAS,CAAExC,UAAWwC,IAE1BA,GAAS,IAAAzK,QAAO,GAAIyK,GAEhByO,EAAUK,EAAU9O,IAAWyO,EAAUM,EAAa/O,GACtD,MAAM,IAAIkH,MAAM,mBAAqB4H,EAASpH,KAAK,KAAO,UAAYqH,EAAYrH,KAAK,KAAO,mBAAqBzN,EAAO,IAAMiI,EAAMjI,KAAO,KAEjJ+F,EAAO9C,UAAY8C,EAAO9C,WAAa,WACvC8C,EAAOH,MAAQ,MACfG,EAAOxB,SAAW0D,EAClBlC,EAAOqP,MAAQpV,EACf,IAAIqV,EAAa,EAAAC,YAAA,sBAAkCvP,EAAOxB,SAAUwB,EAAOqP,OAC3ErP,EAAOwP,YAAcF,EAAWG,WAChCzP,EAAO0P,qBAAuBJ,EAAWK,oBACzCV,EAAMhV,GAAQ+F,KAEXiP,EAGX,IAAInP,EAAK,EAEL0O,EAA+B,WAC/B,SAASA,EAAc5R,EAAMJ,EAAU7H,GACnC,IAAIiQ,EAAQnQ,KACZA,KAAKmI,KAAOA,EACZnI,KAAK+H,SAAWA,EAChB/H,KAAKE,QAAUA,EACfF,KAAKmb,IAAM9P,IACXrL,KAAKob,QAAS,EACdpb,KAAKgI,YAAc,SAAUvB,EAAQoK,GACjC,OAAOV,EAAMpH,UACPoH,EAAMjQ,QAAQgS,sBAAsBzL,EAAQoK,EAASV,EAAMpH,UAAWoH,EAAMpI,SAASoK,UACrFhC,EAAMc,UAiCpB,OA9BA8I,EAAclY,UAAUwZ,KAAO,WAC3B,IAAIlL,EAAQnQ,KACR+G,EAAK,EAAAgK,SAAA,GACLF,EAAU,IAAI,EAAAzI,eAAepI,KAAKmI,MAClCiG,EAASpO,KAAKmI,KAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,IAAAzN,QAAOoZ,EAAK3L,EAAK+M,eAAiB,IAC1FC,EAAW,CACXtK,SAAUlK,EAAGkJ,KAAKjQ,KAAKE,QAAQ0Q,WAAW5Q,KAAK+H,SAAUqG,EAAQyC,IACjE7P,WAAY+F,EAAGkJ,KAAKjQ,KAAKwb,cAAc3K,KAE3C,OAAO9J,EAAG0U,IAAIF,GAAUxQ,MAAK,SAAU2Q,GAInC,OAHA,EAAArT,MAAA,sBAA4B,SAAU8H,GACtCA,EAAMnP,WAAa0a,EAAQ1a,YAC3B,IAAAF,QAAOqP,EAAOuL,EAAQzK,UACfd,MAQf4J,EAAclY,UAAU2Z,cAAgB,SAAU3K,GAC9C,IAAI9Q,EAAWC,KAAK+H,SAAS4T,mBAC7B,KAAK,IAAAC,cAAa7b,GACd,OAAOC,KAAK+H,SAAS/G,WACzB,IAAI8Q,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAEnBkJ,EA5CuB,wKC9C9B8B,EAAmC,WAEnC,SAASA,EAAiCnH,GACtC1U,KAAK0U,OAASA,EA2KlB,OAzKAmH,EAAkBC,kBAAoB,SAAUpH,EAAQqH,GACpD,OAAO,SAAUC,GAAS,OAAO,EAAAjL,SAAA,iBAA0BgL,EAAS,KAAM,CAAEE,OAAQD,EAAOE,aAAcxH,EAAO4D,QAAQlK,WAG5HyN,EAAkBha,UAAUnB,KAAO,WAC/B,IAAIuW,EAAajX,KAAK0U,OAAOuC,WAI7B,OAHAjX,KAAK0U,OAAOyH,UAAUC,QAAO,GACxBnF,EAAWoF,mBACZpF,EAAWqF,SACRtc,KAAK0U,OAAOyH,WAiCvBN,EAAkBha,UAAU0a,KAAO,SAAUC,GACzC,IAAIrM,EAAQnQ,KACZ,KAAK,IAAAoN,YAAWoP,GACZ,MAAM,IAAI/J,MAAM,6BACpB,IACI8J,EAAO,IAAI,EAAAE,aADH,WAAc,OAAOD,EAAO,EAAAzL,SAAA,UAAoBZ,EAAMuE,OAAO0C,mBACvC,EAAAsF,UAElC,OADA1c,KAAK0U,OAAOuC,WAAW0F,MAAMJ,KAAKA,GAC3Bvc,MA4BX6b,EAAkBha,UAAU+a,UAAY,SAAUL,GAC9C,IAAIpM,EAAQnQ,KACR6c,EAAW7c,KAAK0U,OAAOuC,WAAW0F,MACtC,IAAI,IAAA7T,UAASyT,GACTM,EAASD,UAAUL,OAElB,MAAI,IAAAnP,YAAWmP,GAIhB,MAAM,IAAI9J,MAAM,uCAHhBoK,EAASD,WAAU,WAAc,OAAOL,EAAK,EAAAxL,SAAA,UAAoBZ,EAAMuE,OAAO0C,oBAKlF,OAAOpX,MAwCX6b,EAAkBha,UAAUoO,KAAO,SAAU6M,EAAMf,GAK/C,QAJI,IAAA/J,SAAQ+J,KAAY,IAAA3O,YAAW2O,MAC/BA,EAAUF,EAAkBC,kBAAkB9b,KAAK0U,OAAQqH,IAE/D/b,KAAK0U,OAAOuC,WAAW0F,MAAM1M,KAAK6M,EAAMf,GACjC/b,MAgCX6b,EAAkBha,UAAUkb,eAAiB,SAAU9Q,GACnDjM,KAAK0U,OAAOuC,WAAW8F,eAAe9Q,IAEnC4P,EA9K2B,iJCKtC,UAAe,mBAAmB9b,SAAS,iBApB3C,WACI,IAAIid,GAAkB,EACtBhd,KAAKgd,gBAAkB,WACnBA,GAAkB,GAEtBhd,KAAKU,KAAO,CACR,gBACA,WACA,SAAUuc,EAAezZ,GACrB,OAAIwZ,EACOC,EAEJ,SAAUvV,GACb,OAAOlE,GAAS,WACZkE,EAAS,GAAGwV,mBACb,GAAG,8nBClBlBC,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GAaAK,EAAwB,iBAATlQ,MAAqBA,KAAKA,OAASA,MAAQA,MAC9C,iBAAX,EAAAmQ,GAAuB,EAAAA,EAAOC,SAAW,EAAAD,GAAU,EAAAA,QAC3D,EACAhe,EAAU+d,EAAK/d,SAAW,GACnBke,EAAWle,EAAQke,UAAYC,KAAK/W,MAAM3D,KAAK0a,MAC/CC,EAASpe,EAAQoe,QAAUD,KAAKE,UAAU5a,KAAK0a,MAC/Cjd,EAAUlB,EAAQkB,SAqc7B,SAAkBkZ,EAAKnP,EAAIqF,GACvB,IAAI,QAAQ8J,GACR,OAAOA,EAAIlZ,QAAQ+J,EAAIqF,GAC3BoD,OAAOC,KAAKyG,GAAKlZ,SAAQ,SAAU8E,GAAO,OAAOiF,EAAGmP,EAAIpU,GAAMA,OAvcvD/E,EAASyS,OAAO3Q,QAycpB,SAAiBub,GACpB,IAAK,IAAId,EAAI,EAAGA,EAAIrb,UAAUoN,OAAQiO,IAAK,CACvC,IAAIpD,EAAMjY,UAAUqb,GACpB,GAAKpD,EAGL,IADA,IAAIzG,EAAOD,OAAOC,KAAKyG,GACdyD,EAAI,EAAGA,EAAIlK,EAAKpE,OAAQsO,IAC7BS,EAAM3K,EAAKkK,IAAMzD,EAAIzG,EAAKkK,IAGlC,OAAOS,GAldAhP,EAAStP,EAAQsP,QAod5B,SAASiP,EAAQC,EAAIC,GACjB,GAAID,IAAOC,EACP,OAAO,EACX,GAAW,OAAPD,GAAsB,OAAPC,EACf,OAAO,EACX,GAAID,GAAOA,GAAMC,GAAOA,EACpB,OAAO,EACX,IAAIC,SAAYF,EAChB,GAAIE,WAD4BD,GACR,WAAPC,EACb,OAAO,EACX,IAyBeC,EAAIC,EAzBfC,EAAM,CAACL,EAAIC,GACf,IAAI,QAAI,KAAJ,CAAaI,GACb,OAuBeD,EAvBMH,GAuBVE,EAvBMH,GAwBdjP,SAAWqP,EAAGrP,QAEduP,EAAYH,EAAIC,GAAI7P,QAAO,SAAUgQ,EAAGC,GAAK,OAAOD,GAAKR,EAAQS,EAAE,GAAIA,EAAE,OAAQ,GAzBxF,IAAI,QAAI,KAAJ,CAAYH,GACZ,OAAOL,EAAGS,YAAcR,EAAGQ,UAC/B,IAAI,QAAI,KAAJ,CAAcJ,GACd,OAAOL,EAAGvJ,aAAewJ,EAAGxJ,WAChC,IAAI,QAAI,KAAJ,CAAgB4J,GAChB,OAAO,EAEX,GADiB,CAAC,KAAY,KAAS,KAAQ,MAChC/P,IAAI,MAAKC,QAAO,SAAUgQ,EAAGje,GAAM,OAAOie,KAAOje,EAAG+d,MAAS,GACxE,OAAO,EACX,IAAIlL,EAAO,GAEX,IAAK,IAAI3N,KAAOwY,EAAI,CAChB,IAAKD,EAAQC,EAAGxY,GAAMyY,EAAGzY,IACrB,OAAO,EACX2N,EAAK3N,IAAO,EAEhB,IAAK,IAAIA,KAAOyY,EACZ,IAAK9K,EAAK3N,GACN,OAAO,EAEf,OAAO,GApfJ,SAAS6W,EAASpN,GACrB,OAAOA,EAEJ,SAASrH,KAyDT,SAASuM,EAAqBuK,EAAQ1Y,EAAQ/C,EAAM0b,EAASC,QAC/C,IAAbA,IAAuBA,GAAW,GACtC,IAAIC,EAAe,SAAUC,GAAU,OAAOJ,IAASI,GAAQ7b,KAAKA,MAQpE,OADA0b,EAAUA,GAAWzL,OAAOC,KAAKuL,MAClBnQ,QAAO,SAAUsL,EAAK1U,GAPd,IAAU2Z,EAS7B,OADAjF,EAAI1U,GAAQyZ,GARiBE,EAQW3Z,EAPjC,WAEH,OADAa,EAAO8Y,GAAUD,EAAaC,GACvB9Y,EAAO8Y,GAAQhd,MAAM,KAAMH,aAKUkd,EAAa1Z,GACtD0U,IACR7T,GAMA,IAAI+Y,EAAU,SAAUhF,EAAQiF,GAAS,OAAOve,EAAOyS,OAAO/R,OAAO4Y,GAASiF,IAE1EC,GAAU,SACd,SAAkBC,EAAOtF,GAC5B,OAA+B,IAAxBsF,EAAMrR,QAAQ+L,MAMd7E,GAAa,SACjB,SAAqBmK,EAAOtF,GAC/B,IAAIhL,EAAMsQ,EAAMrR,QAAQ+L,GAGxB,OAFIhL,GAAO,GACPsQ,EAAMC,OAAOvQ,EAAK,GACfsQ,KAGAE,GAAS,SACb,SAAiBC,EAAK1b,GACzB,OAAO0b,EAAIjf,KAAKuD,GAAMA,KAGf2b,EAAW,SAAUC,GAC5B,OAAOA,EAAU9d,QAAQf,SAAQ,SAAUJ,GACzB,mBAAPA,GAAqBA,IAC5ByU,EAAWwK,EAAWjf,OAQvB,SAASV,EAASW,GAErB,IADA,IAAIif,EAAe,GACVC,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCD,EAAaC,EAAK,GAAK9d,UAAU8d,GAErC,IAAIC,EAAcjf,EAAOqB,WAAM,EAAQgb,EAAe,CAAC,IAAK0C,EAAaG,YACzE,OAAOlf,EAAOif,EAAapF,EAAK/Z,GAAQ,GAAI2S,OAAOC,KAAKuM,KAGrD,IAAIE,EAAS,SAAUC,EAAMC,GAAQ,OAAOrf,EAAOof,EAAMC,IAQzD,SAASC,EAAUC,EAAOC,GAC7B,IAAInY,EAAO,GAEX,IAAK,IAAIoY,KAAKF,EAAMlY,KAAM,CACtB,GAAIkY,EAAMlY,KAAKoY,KAAOD,EAAOnY,KAAKoY,GAC9B,MACJpY,EAAK1H,KAAK4f,EAAMlY,KAAKoY,IAEzB,OAAOpY,EAaJ,SAASwS,EAAKV,EAAKuG,GACtB,IAAIC,EAAU,GACd,IAAK,IAAIC,KAASzG,GACoB,IAA9BuG,EAAUtS,QAAQwS,KAClBD,EAAQC,GAASzG,EAAIyG,IAG7B,OAAOD,EAcJ,SAASE,EAAK1G,EAAKuG,GACtB,OAAOjN,OAAOC,KAAKyG,GACd3Q,QAAO,QAAIgW,EAAQkB,KACnB5R,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,GAAOoU,EAAIpU,GAAOqU,IAAS,IASvE,SAAS5Q,EAAOsX,EAAYpgB,GAC/B,IAAIkf,GAAM,QAAQkB,GAAata,EAASoZ,EAAM,GAAK,GAC/CmB,EAASnB,EAAM,SAAUpQ,GAAK,OAAOhJ,EAAO7F,KAAK6O,IAAQ,SAAUA,EAAGzJ,GAAO,OAAQS,EAAOT,GAAOyJ,GAKvG,OAJAvO,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B7c,EAAS2f,EAAM9C,IACfwD,EAAOV,EAAM9C,MAEd/W,EAGJ,SAASwa,EAAKF,EAAYpgB,GAC7B,IAAI8F,EAOJ,OANAvF,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B/W,GAEA9F,EAAS2f,EAAM9C,KACf/W,EAAS6Z,MAEV7Z,EAGJ,IAAIya,EAASpS,EAEb,SAASA,EAAIiS,EAAYpgB,EAAU6F,GAGtC,OAFAA,EAASA,KAAW,QAAQua,GAAc,GAAK,IAC/C7f,EAAQ6f,GAAY,SAAUT,EAAM9C,GAAK,OAAQhX,EAAOgX,GAAK7c,EAAS2f,EAAM9C,MACrEhX,EAYJ,IAAI2a,EAAS,SAAU/G,GAAO,OAAO1G,OAAOC,KAAKyG,GAAKtL,KAAI,SAAU9I,GAAO,OAAOoU,EAAIpU,OAclFob,EAAW,SAAUf,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAclDC,EAAW,SAAUjB,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAUlDrS,EAAU,SAAUqR,EAAMgB,GAAQ,OAAOhB,EAAK9d,OAAO8e,IAWrDE,EAAW,SAAUlB,EAAMgB,GAClC,OAAO,QAAQA,GAAQhB,EAAK9d,OAAO8e,EAAKtS,OAAOwS,EAAU,KAAOC,EAAMnB,EAAMgB,IAMzE,SAASG,EAAM3B,EAAKzF,GAEvB,OADAyF,EAAIjf,KAAKwZ,GACFyF,EAGJ,IAAI4B,EAAQ,SAAUpH,EAAKqH,GAAS,OAAQjC,EAAQpF,EAAKqH,GAASrH,EAAMmH,EAAMnH,EAAKqH,IAW/EC,EAAS,SAAU9B,GAAO,OAAOA,EAAI9Q,OAAOC,EAAS,KAyBrD4S,EAkBJ,SAAkBC,EAAgBC,GAErC,YADe,IAAXA,IAAqBA,EAAS,kBAC3B,SAAU1H,GACb,IAAI3T,EAASob,EAAezH,GAC5B,IAAK3T,EACD,MAAM,IAAImM,OAAM,QAAWkP,GAAUA,EAAO1H,GAAO0H,GAEvD,OAAOrb,IA2BR,SAASqY,IAEZ,IADA,IAAIhd,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,GAAoB,IAAhBne,EAAKyN,OACL,MAAO,GAwBX,IAvBA,IAAIwS,EAAcjgB,EAAKiN,QAAO,SAAUiT,EAAKnC,GAAO,OAAOoC,KAAKD,IAAInC,EAAItQ,OAAQyS,KAAS,kBACrFvb,EAAS,GACTyb,EAAU,SAAU1E,GAGpB,OAAQ1b,EAAKyN,QACT,KAAK,EACD9I,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,KACrB,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACjC,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KAC7C,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACzD,MACJ,QACI/W,EAAO7F,KAAKkB,EAAKgN,KAAI,SAAU4Q,GAAS,OAAOA,EAAMlC,SAIxDA,EAAI,EAAGA,EAAIuE,EAAavE,IAC7B0E,EAAQ1E,GAEZ,OAAO/W,EAsBJ,SAASyS,EAAWmH,EAAM8B,GAC7B,IAAInc,EAAKrB,EAGT,IAFI,QAAQwd,KACRnc,EAAMmc,EAAY,GAAIxd,EAAQwd,EAAY,MACzC,QAASnc,GACV,MAAM,IAAI4M,MAAM,oCAEpB,OADAyN,EAAKra,GAAOrB,EACL0b,EAGJ,SAAS1S,EAAKkS,GACjB,OAAQA,EAAItQ,QAAUsQ,EAAIA,EAAItQ,OAAS,SAAO+E,EAK3C,SAAS8N,EAAKC,EAAKC,GAKtB,OAJIA,GACA5O,OAAOC,KAAK2O,GAAMphB,SAAQ,SAAU8E,GAAO,cAAcsc,EAAKtc,MAC7Dsc,IACDA,EAAO,IACJrhB,EAAOqhB,EAAMD,GA6DjB,IAAIE,EAA2B,SAAU3e,GAAW,OAAOA,EAAQ4e,OAAM,SAAUC,GAAK,OAAO,MAAS7e,GACpG8e,EAAkB,SAAUld,GAAS,OAAO+c,EAAyB,cAAmB/c,qHCxhBnG,IAGWmd,EAAW,SAAU/K,EAASgL,GACrC,OAAOA,EAAQ7T,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,IAJtC6c,EAIoDjL,EAAU,IAAM5R,EAAM,KAJzD,WACpC,MAAM,IAAI4M,MAAM,yBAA2BiQ,EAAS,kEAGiDxI,EAJ5F,IAAUwI,IAI2F,KAE9G3R,EAAW,CACXhK,QAAIoN,EACJ5D,eAAW4D,mGCyCf,IAAIwO,EAAsB,WACtB,SAASA,EAAKC,GACV5iB,KAAK4iB,KAAOA,EACZ5iB,KAAK6iB,KAAOD,EAAKE,MAAM,KACvB,IAAIC,EAAe/iB,KAAK4iB,KACnBE,MAAM,KACNnU,KAAI,SAAUqU,GACf,MAAY,OAARA,EACO,qBACC,MAARA,EACO,WACJ,MAAQA,KAEd/P,KAAK,IACVjT,KAAKijB,OAAS,IAAI9Z,OAAO,IAAM4Z,EAAe,KAalD,OAVAJ,EAAKzJ,GAAK,SAAU0J,GAChB,QAAS,SAASnZ,KAAKmZ,IAG3BD,EAAKxR,WAAa,SAAUyR,GACxB,OAAOD,EAAKzJ,GAAG0J,GAAQ,IAAID,EAAKC,GAAQ,MAE5CD,EAAK9gB,UAAUqhB,QAAU,SAAU1d,GAC/B,OAAOxF,KAAKijB,OAAOE,KAAK,IAAM3d,IAE3Bmd,EA3Bc,+MC1CzB,IAAIxF,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GA2CJ,SAAS6F,EAAMziB,GAClB,OAAO,SAAS0iB,IACZ,GAAIrhB,UAAUoN,QAAUzO,EAAGyO,OACvB,OAAOzO,EAAGwB,MAAMnC,KAAMgC,WAE1B,IAAIL,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtC,OAAOqhB,EAAQ/f,KAAKnB,MAAMkhB,EAASlG,EAAe,CAACnd,MAAO2B,KAS3D,SAAS2hB,IACZ,IAAI3hB,EAAOK,UACPuhB,EAAQ5hB,EAAKyN,OAAS,EAC1B,OAAO,WAEH,IADA,IAAIiO,EAAIkG,EAAOjd,EAAS3E,EAAK4hB,GAAOphB,MAAMnC,KAAMgC,WACzCqb,KACH/W,EAAS3E,EAAK0b,GAAGtb,KAAK/B,KAAMsG,GAChC,OAAOA,GASR,SAASkd,IAEZ,IADA,IAAIC,EAAQ,GACH3D,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpC2D,EAAM3D,GAAM9d,UAAU8d,GAE1B,OAAOwD,EAAQnhB,MAAM,KAAM,GAAGL,MAAMC,KAAKC,WAAWge,WAQjD,IAAI0D,EAAO,SAAUle,GAAQ,OAAO,SAAUyU,GAAO,OAAOA,GAAOA,EAAIzU,KAQnEme,EAASP,GAAM,SAAU5d,EAAMoe,EAAM3J,GAAO,OAAOA,GAAOA,EAAIzU,KAAUoe,KASxE3c,EAAQ,SAAUzB,GAAQ,OAAOge,EAAKrhB,MAAM,KAAMqD,EAAKsd,MAAM,KAAKnU,IAAI+U,KAKtEG,EAAM,SAAUljB,GAAM,OAAO,WAEpC,IADA,IAAIgB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAQnf,EAAGwB,MAAM,KAAMR,KAMpB,SAASmiB,EAAIC,EAAKC,GACrB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IAOjD,SAASsiB,EAAGF,EAAKC,GACpB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IASjD,IAAI8Z,EAAM,SAAUsI,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4U,EAAM,SAAUH,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4J,EAAK,SAAUiL,GAAQ,OAAO,SAAUlK,GAC/C,OAAe,MAAPA,GAAeA,EAAImK,cAAgBD,GAASlK,aAAekK,IAK5DngB,EAAM,SAAUqgB,GAAK,OAAO,WAAc,OAAOA,IA4CrD,SAASC,EAAQC,GACpB,OAAO,SAAUjV,GACb,IAAK,IAAI+N,EAAI,EAAGA,EAAIkH,EAAOnV,OAAQiO,IAC/B,GAAIkH,EAAOlH,GAAG,GAAG/N,GACb,OAAOiV,EAAOlH,GAAG,GAAG/N,uRCjNhCkV,EAAQjR,OAAO1R,UAAUiT,SACzB2P,EAAM,SAAU5F,GAAK,OAAO,SAAUvP,GAAK,cAAcA,IAAMuP,IACxD6F,EAAcD,EAAI,aAClB7X,GAAY,QAAI8X,GAChBC,EAAS,SAAUC,GAAK,OAAa,OAANA,GAC/BC,GAAoB,IAAAZ,IAAGU,EAAQD,GAC/BtX,EAAaqX,EAAI,YACjBK,EAAWL,EAAI,UACf3b,EAAW2b,EAAI,UACftR,EAAW,SAAU7D,GAAK,OAAa,OAANA,GAA2B,iBAANA,GACtD0C,EAAUpQ,MAAMoQ,QAChB+S,EAAS,SAAWzV,GAAK,MAAyB,kBAAlBkV,EAAMziB,KAAKuN,IAC3C0V,EAAW,SAAW1V,GAAK,MAAyB,oBAAlBkV,EAAMziB,KAAKuN,IAOjD,SAASsM,EAAa5X,GACzB,GAAIgO,EAAQhO,IAAQA,EAAIoL,OAAQ,CAC5B,IAAI6V,EAAOjhB,EAAIlC,MAAM,GAAI,GAAI0L,EAAOxJ,EAAIlC,OAAO,GAC/C,QAASmjB,EAAK3b,QAAO,QAAIR,IAAWsG,QAAU5B,EAAKlE,QAAO,QAAI8D,IAAagC,QAE/E,OAAOhC,EAAWpJ,GAOf,IAAIkhB,GAAY,QAAI/R,GAAU,SAAK,QAAK,QAAS/F,uKCvCpD+X,EAAuB,WACvB,SAASA,EAAMC,EAAQC,QACJ,IAAXD,IAAqBA,EAAS,SACnB,IAAXC,IAAqBA,EAAS,MAClCrlB,KAAKolB,OAASA,EACdplB,KAAKqlB,OAASA,EACdrlB,KAAKslB,gBAAkB,GACvBtlB,KAAKulB,SAAU,QAAOvlB,KAAKslB,iBAqC/B,OAnCAH,EAAMtjB,UAAU2jB,QAAU,SAAUrF,GAChC,IAAIsF,EAAQzlB,KAAKolB,OAIjB,OAHAK,EAAMhlB,KAAK0f,GACPngB,KAAKqlB,QAAUI,EAAMrW,OAASpP,KAAKqlB,QACnCrlB,KAAK0lB,QACFvF,GAEXgF,EAAMtjB,UAAU6jB,MAAQ,WACpB,IAAIvF,EAAOngB,KAAKolB,OAAOnjB,QAEvB,OADAjC,KAAKslB,gBAAgBvkB,SAAQ,SAAUJ,GAAM,OAAOA,EAAGwf,MAChDA,GAEXgF,EAAMtjB,UAAU8jB,QAAU,WACtB,GAAI3lB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO5F,OAAO,EAAG,GAAG,IAExC2F,EAAMtjB,UAAUgkB,MAAQ,WACpB,IAAIC,EAAU9lB,KAAKolB,OAEnB,OADAplB,KAAKolB,OAAS,GACPU,GAEXX,EAAMtjB,UAAU+jB,KAAO,WACnB,OAAO5lB,KAAKolB,OAAOhW,QAEvB+V,EAAMtjB,UAAUgL,OAAS,SAAUsT,GAC/B,IAAIlR,EAAMjP,KAAKolB,OAAOlX,QAAQiS,GAC9B,OAAOlR,GAAO,GAAKjP,KAAKolB,OAAO5F,OAAOvQ,EAAK,GAAG,IAElDkW,EAAMtjB,UAAUkkB,SAAW,WACvB,OAAO/lB,KAAKolB,OAAOplB,KAAKolB,OAAOhW,OAAS,IAE5C+V,EAAMtjB,UAAUmkB,SAAW,WACvB,GAAIhmB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO,IAEpBD,EA5Ce,4KCKtBc,EAAkB,CAAEC,IAAK,KAAM7gB,MAAO,KAAM8gB,MAAO,MA4B5CC,EAXyB,oBAAbC,UAA4BA,SAASC,cAA0C,IAA1BD,SAASC,aAEtEC,QAAUA,OAAOC,QAlBhC,SAAoBA,GAChB,IAAIC,EAAQ,SAAU9lB,GAAM,OAAO+lB,SAAS7kB,UAAUyB,KAAKvB,KAAKpB,EAAI6lB,IACpE,MAAO,CACHN,IAAKO,EAAMD,EAAQN,KACnB7gB,MAAOohB,EAAMD,EAAQN,KACrBC,MAAOM,EAAMD,EAAQN,MAaaS,CAAWJ,OAAOC,SAAWP,EAEzDO,QAAQL,OAAUK,QAAQnhB,MAIzBmhB,QAhBf,SAAyBA,GACrB,IAAIN,EAAMM,EAAQN,IAAI5iB,KAAKkjB,GAG3B,MAAO,CAAEN,IAAKA,EAAK7gB,MAFPmhB,EAAQnhB,MAAQmhB,EAAQnhB,MAAM/B,KAAKkjB,GAAWN,EAEzBC,MADrBK,EAAQL,MAAQK,EAAQL,MAAM7iB,KAAKkjB,GAAWN,GAU/CU,CAAgBJ,ieCRxB,SAASK,EAAUC,EAAK9V,GAC3B,OAAIA,EAAI5B,QAAU0X,EACP9V,EACJA,EAAI+V,OAAO,EAAGD,EAAM,GAAK,MAW7B,SAASE,EAAU5X,EAAQ4B,GAC9B,KAAOA,EAAI5B,OAASA,GAChB4B,GAAO,IACX,OAAOA,EAEJ,SAAS/H,EAAYqJ,GACxB,OAAOA,EACFyC,QAAQ,YAAY,SAAUkS,GAAM,OAAOA,EAAGC,iBAC9CnS,QAAQ,YAAY,SAAUkS,GAAM,MAAO,IAAMA,EAAGC,iBAEtD,SAASC,EAAiBxmB,GAC7B,IAAIymB,EAAQC,EAAW1mB,GACnB2mB,EAAqBF,EAAMpL,MAAM,8BACjCwI,EAAQ8C,EAAqBA,EAAmB,GAAKF,EACrDjI,EAASxe,EAAS,MAAK,GAC3B,OAAIwe,GAAUqF,EAAMxI,MAAM,eACf,YAAcmD,EAASqF,EAAMuC,OAAO,GAExCvC,EAEJ,SAAS6C,EAAW1mB,GACvB,IAAI4mB,GAAM,QAAQ5mB,GAAMA,EAAGmB,OAAO,GAAG,GAAKnB,EAC1C,OAAQ4mB,GAAOA,EAAIzS,YAAe,YAEtC,IAAI0S,EAAc,uBAIdC,GAAmB,QAAQ,CAC3B,CAAC,MAAa,QAAI,cAClB,CAAC,MAAQ,QAAI,SACb,CAAC,MAAW,QAAI,cAChB,CAACD,EAAa,SAAUlY,GAAK,OAAOA,EAAEoY,qBAAqB5S,aAC3D,CARc,SAAUmF,GACxB,OAAO,QAASA,MAAS,QAAQA,IAAQA,EAAImK,cAAgB7Q,SAAU,QAAW0G,EAAInF,WAOxE,SAAUxF,GAAK,OAAOA,EAAEwF,aACtC,CAAC,KAAcqS,GACf,EAAC,SAAI,GAAO,QAET,SAASjJ,EAAU0G,GACtB,IAAI+C,EAAO,GACX,SAASC,EAAOpjB,GACZ,IAAI,QAASA,GAAQ,CACjB,IAA6B,IAAzBmjB,EAAKzZ,QAAQ1J,GACb,MAAO,iBACXmjB,EAAKlnB,KAAK+D,GAEd,OAAOijB,EAAiBjjB,GAE5B,OAAI,QAAYogB,GAILgD,EAAOhD,GAEX5G,KAAKE,UAAU0G,GAAG,SAAU/e,EAAKrB,GAAS,OAAOojB,EAAOpjB,MAAWuQ,QAAQ,OAAQ,KAGvF,IAAI8S,EAAoB,SAAUC,GAAQ,OAAO,SAAU9W,GAC9D,IAAKA,EACD,MAAO,CAAC,GAAI,IAChB,IAAI/B,EAAM+B,EAAI9C,QAAQ4Z,GACtB,OAAa,IAAT7Y,EACO,CAAC+B,EAAK,IACV,CAACA,EAAI+V,OAAO,EAAG9X,GAAM+B,EAAI+V,OAAO9X,EAAM,MAGtC8Y,EAAuB,SAAU/W,GAAO,OAAOA,EAAI+D,QAAQ,WAAY,KACvEiT,EAAYH,EAAkB,KAC9BI,EAAaJ,EAAkB,KAC/BK,EAAaL,EAAkB,KAC/BM,EAAc,SAAUnX,GAAO,OAAQA,EAAMA,EAAI+D,QAAQ,KAAM,IAAM,IAWzE,SAASqT,EAAaC,GACzB,IAAIC,EAAK,IAAInf,OAAO,IAAMkf,EAAQ,IAAK,KACvC,OAAO,SAAUrX,GAAO,OAAOA,EAAI8R,MAAMwF,GAAIhf,OAAO,OAcjD,SAASif,EAAerO,EAAK5K,GAChC,OAAI,SAAS,QAAK4K,MAAS,QAAS5K,GACzB4K,EAAIpY,MAAM,GAAI,GAAGM,QAAO,QAAK8X,GAAO5K,IACxC,QAAM4K,EAAK5K,0GCpElBkZ,iQA3BJ,SAASC,EAAaC,GAClB,IAAKA,EACD,MAAO,oBACX,IAAIjb,EAAQib,EAAOC,gBAAkBD,EAAOC,gBAAgBnjB,MAAQ,SAAW,SAC/E,MAAO,YAAckjB,EAAOrd,GAAK,IAAMqd,EAAOtd,MAAQ,IAAMsd,EAAOpd,IAAM,KAAOod,EAAOljB,KAAO,IAAMiI,EAAQ,KAOhH,SAASmb,EAAchW,GACnB,OAAO,QAASA,GAAS4V,EAAS5V,GAAS4V,EAASA,EAAS5V,KAgBjE,SAAW4V,GACPA,EAASA,EAAkB,QAAI,GAAK,UACpCA,EAASA,EAAqB,WAAI,GAAK,aACvCA,EAASA,EAAe,KAAI,GAAK,OACjCA,EAASA,EAAiB,OAAI,GAAK,SACnCA,EAASA,EAAqB,WAAI,GAAK,aAL3C,CAMGA,IAAaA,EAAW,KAE3B,IAAIK,GAAO,QAAM,OACbC,GAAO,QAAM,cACbC,EAAW,SAAUnZ,GAAS,MAAO,eAAiBiZ,EAAKjZ,GAAS,IAAMkZ,EAAKlZ,IA6J/EvH,EAAQ,IAzJe,WAEvB,SAAS2gB,IAELhpB,KAAKipB,SAAW,GAChBjpB,KAAKkpB,mBAAqB,EAwI9B,OArIAF,EAAMnnB,UAAUsnB,KAAO,SAAU7T,EAAS8T,GACtC,IAAIjZ,EAAQnQ,KACPopB,EAAWha,SACZga,EAAa7V,OAAOC,KAAKgV,GACpB7Z,KAAI,SAAU6O,GAAK,OAAO6L,SAAS7L,EAAG,OACtClU,QAAO,SAAUkU,GAAK,OAAQ8L,MAAM9L,MACpC7O,KAAI,SAAU9I,GAAO,OAAO2iB,EAAS3iB,OAE9CujB,EAAWza,IAAIia,GAAe7nB,SAAQ,SAAUwoB,GAAY,OAAQpZ,EAAM8Y,SAASM,GAAYjU,MAEnG0T,EAAMnnB,UAAU2nB,OAAS,WAErB,IADA,IAAIJ,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAMC,IAEpBJ,EAAMnnB,UAAU4nB,QAAU,WAEtB,IADA,IAAIL,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAOC,IAWrBJ,EAAMnnB,UAAUyT,QAAU,SAAUiU,GAChC,QAASvpB,KAAKipB,SAASL,EAAcW,KAGzCP,EAAMnnB,UAAU6nB,qBAAuB,SAAU9Z,GACxC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAU+nB,uBAAyB,SAAUha,GAC1C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAUgoB,oBAAsB,SAAUC,EAAMla,EAAOzP,GACzD,GAAKH,KAAKsV,QAAQkT,EAASuB,MAA3B,CAEA,IAAIxpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAiBskB,EAAKE,eAAexpB,UAC1N,QAAgBuoB,EAASnZ,GAAS,eAAiBrP,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,MAG9GwjB,EAAMnnB,UAAUooB,gBAAkB,SAAUC,EAAYta,EAAOua,GACtDnqB,KAAKsV,QAAQkT,EAASuB,OAE3B,QAAgBhB,EAASnZ,GAAS,0BAA2B,QAAU,KAAK,QAAUsa,MAG1FlB,EAAMnnB,UAAUuoB,iBAAmB,SAAUjiB,EAAM8H,EAAML,GAChD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,uBAAyBzH,EAAO,KAAO8H,EAAO,MAGpF+Y,EAAMnnB,UAAUyoB,wBAA0B,SAAUtS,EAAYpI,GACvD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,gCAAkCoI,EAAa,SAAU,QAAU,KAAK,QAAUA,EAAWrQ,SAGnIqhB,EAAMnnB,UAAU0oB,WAAa,SAAUC,EAAQ5a,GACtC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,aAAe4a,IAG3FxB,EAAMnnB,UAAU4oB,aAAe,SAAUC,EAAY9a,GAC5C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,kBAAoB8a,EAAWllB,OAG3GwjB,EAAMnnB,UAAU8oB,iBAAmB,SAAUpqB,EAAOqqB,EAAUvL,QAC5C,IAAVA,IAAoBA,EAAQ,IAC3Brf,KAAKsV,QAAQkT,EAASqC,SAE3B,QAAgB,aAAc,QAAU,GAAItqB,GAAS,IAAMkoB,EAAamC,GAAYvL,IAGxF2J,EAAMnnB,UAAUipB,yBAA2B,SAAUF,EAAU/Z,GACtD7Q,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,WAAYC,EAAU,kCAAoC/Z,EAAU,MAG9FmY,EAAMnnB,UAAUkpB,gBAAkB,SAAUH,EAAUpjB,GAC7CxH,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,OAAQC,EAAU,WAAY,QAAU,IAAKpjB,KAGvEwhB,EAAMnnB,UAAUmpB,cAAgB,SAAUC,GACtC,GAAKjrB,KAAKsV,QAAQkT,EAAS0C,YAA3B,CAEA,IAAIC,EAAY,uBAEZC,EAAUH,EACTtc,KAAI,SAAU0c,GACf,IAAIC,EACA7kB,EAAS4kB,EAAG5kB,OAAQiE,EAAa2gB,EAAG3gB,WACpC6gB,EAAM9kB,GAAUA,EAAO6E,IACvBzD,EAAM6C,GAAcA,EAAW3C,SAASgC,SAASvE,KAAO,MAAQkF,EAAW3C,SAAS6S,MAAQ,IAChG,OAAO0Q,EAAK,IAAOH,GAAaI,EAAKD,EAPzB,iCAOyCzjB,EAAKyjB,KAEzDE,MAAK,SAAU/N,EAAGmB,GAAK,OAAQnB,EAAE0N,IAAc,IAAIM,cAAc7M,EAAEuM,IAAc,OACtF,UAAkBC,KAGtBpC,EAAMnnB,UAAU6pB,sBAAwB,SAAUnrB,EAAOmK,GAChD1K,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAzK1B,SAAUmK,GAC7B,IAAIoP,EAAOpP,EAAW3C,SAClB0F,EAAQqM,EAAK/P,SAASvE,MAAQ,SAClC,MAAO,SAAWkF,EAAWyQ,IAAM,UAAY1N,EAAQ,8BAAgCqM,EAAKiB,YAAc,IAAMjB,EAAKmB,qBAAuB,IAsKzF0Q,CAAiBjhB,KAGpEse,EAAMnnB,UAAU+pB,4BAA8B,SAAUrrB,EAAOqqB,GACtD5qB,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAAMkoB,EAAamC,KAEzD5B,EA7Ie,oOCxEtB6C,EAAiC,WACjC,SAASA,IAML7rB,KAAKoO,OAAS,IAAI,IAElBpO,KAAK8rB,yBAA2B,EAEhC9rB,KAAK+rB,kBAAoB,IAAI,IAAM,GAAI,GAEvC/rB,KAAKgsB,sBAAwB,IAAI,IAAM,GAAI,GAO/C,OALAH,EAAgBhqB,UAAUqT,QAAU,WAChClV,KAAK+rB,kBAAkBlG,QACvB7lB,KAAKgsB,sBAAsBnG,QAC3B7lB,KAAKisB,WAAa,MAEfJ,EApByB,sLCiBhCK,EAAe,SAAUD,GACzB,IAAIvX,EAASuX,EAAWvX,OAuBpB6G,EAAW0Q,EACVE,WACA7iB,QAAO,SAAUmE,GAAS,QAASA,EAAMuG,UAAUoY,YACnDzd,KAAI,SAAUlB,GAAS,OAAO4e,EAAcJ,EAAYxe,MAC7D,OAAO,WAAgB8N,GAAUxQ,MA1BjC,WACI,GAAyD,QAArDkhB,EAAWK,qBAAqBnsB,UAAU4e,OAAkB,CAG5D,IAAIwN,EAAON,EAAWO,cACtB,OAAO9X,EAAOmC,aAAaxQ,OAAOkmB,EAAKE,aAAcF,EAAKne,SAAUme,EAAKpsB,WAI7E,IAAIusB,EAAOhY,EAAOuC,WACd3Q,EAASomB,EAAK1Q,MAAM0Q,EAAKC,SACzBpQ,EAAOjW,GAAUA,EAAOiW,KAG5B,GAAIA,GAAsB,UAAdA,EAAKrN,KAAkB,CAC/B,IAAIzB,EAAQ8O,EAAK9O,MACbW,EAAS9H,EAAO0V,MACpB,OAAOtH,EAAOmC,aAAaxQ,OAAOoH,EAAOW,EAAQ6d,EAAW9rB,WAGhEuU,EAAOuC,WAAW2V,WAQfC,EAAuB,SAAUC,GACxC,OAAOA,EAAkB/c,SAAS,CAAEoc,SAAU,SAAU1e,GAAS,QAASA,EAAM2e,WAAeF,IAS5F,SAASG,EAAcJ,EAAYxe,GACtC,IAAIsf,EAAatf,EAAMuG,UAAUoY,SAE7B3oB,EAAUspB,EAAqB,SAwBnC,OAvBKtpB,IAWDA,EAAUspB,EAAqB,SAAI,YACzBA,EAAWd,EAAYxe,IAC5B1C,MAIT,SAA6BzE,GAIzB,OAHIA,GAAU1E,MAAMoQ,QAAQ1L,EAAO0mB,SAC/B1mB,EAAO0mB,OAAOjsB,SAAQ,SAAUksB,GAAU,OAAOhB,EAAWvX,OAAOkC,cAAc8C,SAASuT,MAEvF3mB,KAPFyE,MAbS,SAAUzE,GAIpB,cAHOmH,EAAM2e,gBACN3e,EAAMuG,UAAUoY,gBAChBW,EAAqB,SACrBzmB,KAEC,SAAU4mB,GAElB,cADOH,EAAqB,SACrB,cAAmBG,OAc3BzpB,oPCnFP0pB,kUAJAC,EAAS7Z,OAAO1R,UAAUa,gBAK9B,SAAWyqB,GACPA,EAAQA,EAAc,KAAI,GAAK,OAC/BA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAgB,OAAI,GAAK,SAHrC,CAIGA,IAAYA,EAAU,KA2DzB,IAAIE,EAAuB,WACvB,SAASA,EAAMhiB,EAAI6D,EAAM2G,EAAUyX,EAAW7f,GAC1C,IAAIlC,EA3DZ,SAA6BgiB,EAAW1X,EAAUpI,GAC9C,IAAI+f,GAA6C,IAAzB/f,EAAMggB,gBAA4B5X,IAAasX,EAAQO,aAAWvZ,EACtFwZ,GAAU,QAAK,CAAClgB,EAAMkgB,QAASH,GAAmB,MAClDI,GAAgB,QAAUD,GAAW,CAAEA,QAASA,GAAY,GAC5DE,EAGR,SAAyBhmB,GAGrB,SAASimB,IACL,OAAOjmB,EAAIrD,MAHfqD,EAlBc,SAAUA,GACxB,OAAiG,IAA1F,CAAC,QAAS,OAAQ,SAAU,QAAS,WAAWyB,OAAO8jB,EAAO9pB,KAAKuE,GAAO,KAAKuH,OAiBhF2e,CAAYlmB,GAAO,CAAErD,MAAOqD,GAAQA,EAC1CimB,EAAmC,aAAI,EAIvC,IAAIE,GAAO,QAAanmB,EAAIrD,OAASqD,EAAIrD,MAAQspB,EACjD,OAAO,QAAOjmB,EAAK,CAAEmmB,KAAMA,IAVTC,CAAgBxgB,GAASA,EAAMW,QAAUX,EAAMW,OAAOmf,IACxE,OAAO,QAAOK,EAAeC,GAsDZK,CAAoB7iB,EAAIwK,EAAUpI,GAC/CyB,EA5CR,SAAiBrH,EAAKsmB,EAAStY,EAAUxK,EAAI+iB,GACzC,GAAIvmB,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,KAC/B,MAAM,IAAIiN,MAAM,UAAYpH,EAAK,kCACrC,GAAIxD,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,MAAqB4oB,EAAWlf,KAAKrH,EAAIqH,MACxE,OAAOkf,EAAWlf,KAAKrH,EAAIqH,MAC/B,GAAIif,EACA,OAAOA,EACX,IAAKtmB,EAAIqH,KAAM,CACX,IAAIA,EAAO2G,IAAasX,EAAQkB,OAC1B,MACAxY,IAAasX,EAAQmB,KACjB,OACAzY,IAAasX,EAAQO,OACjB,QACA,SACd,OAAOU,EAAWlf,KAAKA,GAE3B,OAAOrH,EAAIqH,gBAAgB,IAAYrH,EAAIqH,KAAOkf,EAAWlf,KAAKrH,EAAIqH,MA2B3Dqf,CAAQhjB,EAAQ2D,EAAM2G,EAAUxK,EAAIiiB,EAAUc,YACrD,IAUQI,EACAC,EAXJC,GAUIF,EAAgB,CAAEjP,MAAO1J,IAAasX,EAAQO,QAAS,QACvDe,EAAyBpjB,EAAG2Q,MAAM,SAAW,CAAEuD,OAAO,GAAS,IAC5D,QAAOiP,EAAeC,EAAwBljB,GAAQgU,OAXjErQ,EAAOwf,EAAYxf,EAAKyf,SAASD,EAAW7Y,IAAasX,EAAQO,QAAUxe,EAC3E,IAAI0f,OAA8Bza,IAAjB5I,EAAO/G,OAAuBqR,IAAasX,EAAQO,OAChEC,GAAU,QAAUpiB,EAAOoiB,WAAapiB,EAAOoiB,UAAYze,EAAKye,QAChEkB,GAAM,QAAUtjB,EAAOsjB,OAAStjB,EAAOsjB,MAAQ3f,EAAK2f,IACpDC,EA9BZ,SAAyBvjB,EAAQqjB,EAAYG,GACzC,IAAID,EAASvjB,EAAOujB,OACpB,IAAKF,IAAyB,IAAXE,EACf,OAAO,EACX,KAAK,QAAUA,IAAqB,MAAVA,EACtB,OAAOC,EACX,IAAe,IAAXD,IAAmB,QAASA,GAC5B,OAAOA,EACX,MAAM,IAAIrc,MAAM,2BAA6Bqc,EAAS,uDAsBrCE,CAAgBzjB,EAAQqjB,EAAYtB,EAAU2B,uBACvDla,EArBZ,SAAoBxJ,EAAQmjB,EAAWE,EAAYE,GAC/C,IAAIC,EAAgB,CAChB,CAAEG,KAAM,GAAIC,GAAIP,GAAcF,OAAYva,EAAY,IACtD,CAAE+a,KAAM,KAAMC,GAAIP,GAAcF,OAAYva,EAAY,KAExDY,GAAU,QAAQxJ,EAAOwJ,SAAWxJ,EAAOwJ,QAAU,IACrD,QAAS+Z,IACT/Z,EAAQtU,KAAK,CAAEyuB,KAAMJ,EAAQK,QAAIhb,IACrC,IAAIib,GAAiB,QAAIra,GAAS,QAAK,SACvC,OAAO,QAAOga,GAAe,SAAU5O,GAAQ,OAA8C,IAAvCiP,EAAelhB,QAAQiS,EAAK+O,SAAiB9sB,OAAO2S,GAYxFsa,CAAW9jB,EAAQmjB,EAAWE,EAAYE,GACpD1P,GAAU,QAAU7T,EAAO6T,WAAa7T,EAAO6T,UAAYlQ,EAAKkQ,SAOpE,QAAOpf,KAAM,CAAEqL,GAAIA,EAAI6D,KAAMA,EAAM2G,SAAUA,EAAU+Y,WAAYA,EAAYjB,QAASA,EAASkB,IAAKA,EAAKC,OAAQA,EAAQ/Z,QAASA,EAASqK,QAASA,EAASG,MAAOmP,EAAWnjB,OAAQA,IAoG7L,OAlGA8hB,EAAMrM,OAAS,SAAU5S,EAAQ4S,QACd,IAAXA,IAAqBA,EAAS,IAElC,IADA,IAAI1F,EAAc,GACTwE,EAAK,EAAGwP,EAAWlhB,EAAQ0R,EAAKwP,EAASlgB,OAAQ0Q,IAAM,CAC5D,IAAI9Q,EAAQsgB,EAASxP,GACrBxE,EAAYtM,EAAM3D,IAAM2D,EAAMxK,MAAMwc,EAAOhS,EAAM3D,KAErD,OAAOiQ,GAaX+R,EAAMkC,QAAU,SAAUnhB,EAAQohB,EAASC,GAGvC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IAC7BrhB,EAAO9E,QAAO,SAAU0F,GAAS,OAAQA,EAAME,KAAKC,OAAOqgB,EAAQxgB,EAAM3D,IAAKokB,EAAQzgB,EAAM3D,SAWvGgiB,EAAMle,OAAS,SAAUf,EAAQohB,EAASC,GAGtC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IACsB,IAAnDpC,EAAMkC,QAAQnhB,EAAQohB,EAASC,GAASrgB,QAGnDie,EAAMqC,UAAY,SAAUthB,EAAQ4S,GAEhC,YADe,IAAXA,IAAqBA,EAAS,IAC3B5S,EAAOO,KAAI,SAAUK,GAAS,OAAOA,EAAM0gB,UAAU1O,EAAOhS,EAAM3D,QAASuD,OAAO,MAAU,IAEvGye,EAAMxrB,UAAU8tB,eAAiB,SAAUnrB,GACvC,OAAOxE,KAAK4uB,YAAc5uB,KAAKkP,KAAKC,OAAOnP,KAAKwE,QAASA,IAM7D6oB,EAAMxrB,UAAU2C,MAAQ,SAAUA,GAC9B,IAAI2L,EAAQnQ,KA0BZ,OADAwE,EAR2B,SAAUR,GACjC,IAAK,IAAI8b,EAAK,EAAGuL,EAAKlb,EAAM4E,QAAS+K,EAAKuL,EAAGjc,OAAQ0Q,IAAM,CACvD,IAAIrM,EAAQ4X,EAAGvL,GACf,GAAIrM,EAAMyb,OAASlrB,EACf,OAAOyP,EAAM0b,GAErB,OAAOnrB,EAEH4rB,CAAqBprB,IACtB,QAAYA,GAtBG,WAClB,GAAI2L,EAAM0f,mBACN,OAAO1f,EAAM0f,mBAAmBC,aACpC,IAAK,cACD,MAAM,IAAIrd,MAAM,+DACpB,IAAIqd,EAAe,qBAA0B3f,EAAM5E,OAAOyiB,MAC1D,GAAI8B,MAAAA,IAAwD3f,EAAMjB,KAAKgK,GAAG4W,GACtE,MAAM,IAAIrd,MAAM,kBAAoBqd,EAAe,oBAAsB3f,EAAM9E,GAAK,sCAAwC8E,EAAMjB,KAAK1J,KAAO,KAIlJ,OAHI2K,EAAM5E,OAAOyiB,KAAkB,cAC/B7d,EAAM0f,mBAAqB,CAAEC,aAAcA,IAExCA,EAWiBC,GAAoB/vB,KAAKkP,KAAK8gB,WAAWxrB,IAEzE6oB,EAAMxrB,UAAUouB,SAAW,WACvB,OAAOjwB,KAAK6V,WAAasX,EAAQO,QAErCL,EAAMxrB,UAAU6tB,UAAY,SAAUlrB,GAElC,KAAK,QAAYA,IAAoB,OAAVA,IAAmBxE,KAAK4uB,WAC/C,OAAO,EAEX,IAAI/T,EAAa7a,KAAKkP,KAAK8gB,WAAWxrB,GACtC,IAAKxE,KAAKkP,KAAKgK,GAAG2B,GACd,OAAO,EAEX,IAAIqV,EAAUlwB,KAAKkP,KAAK2F,OAAOgG,GAC/B,SAAS,QAASqV,KAAalwB,KAAKkP,KAAKoV,QAAQ7a,KAAKymB,KAE1D7C,EAAMxrB,UAAUiT,SAAW,WACvB,MAAO,UAAY9U,KAAKqL,GAAK,IAAMrL,KAAKkP,KAAO,aAAelP,KAAK8uB,OAAS,eAAiB9uB,KAAK4uB,WAAa,KAE5GvB,EAtHe,4OChDtB8C,EAA2B,WAM3B,SAASA,EAAUjd,GAEflT,KAAKskB,QAAU,KAEftkB,KAAKof,SAAU,GACf,QAAOpf,KAAMkT,GAgDjB,OA5CAid,EAAUtuB,UAAUqX,GAAK,SAAUlV,EAAK6B,GACpC,OAAO,GAGXsqB,EAAUtuB,UAAUgT,OAAS,SAAU7Q,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUoT,OAAS,SAAUjR,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUsN,OAAS,SAAUsO,EAAGmB,GAEtC,OAAOnB,GAAKmB,GAEhBuR,EAAUtuB,UAAUuuB,YAAc,WAC9B,IAAIC,EAAMrwB,KAAKskB,QAAQxP,WACvB,OAAOub,EAAItJ,OAAO,EAAGsJ,EAAIjhB,OAAS,IAEtC+gB,EAAUtuB,UAAUiT,SAAW,WAC3B,MAAO,cAAgB9U,KAAKwF,KAAO,KAGvC2qB,EAAUtuB,UAAUmuB,WAAa,SAAUhsB,GACvC,OAAOhE,KAAKkZ,GAAGlV,GAAOA,EAAMhE,KAAKiV,OAAOjR,IAY5CmsB,EAAUtuB,UAAU8sB,SAAW,SAAU2B,EAAML,GAC3C,IAAKK,EACD,OAAOtwB,KACX,GAAa,SAATswB,IAAoBL,EACpB,MAAM,IAAIxd,MAAM,kDACpB,OAAO,IAAI8d,EAAUvwB,KAAMswB,IAExBH,EA3DmB,GA+D9B,SAASI,EAAUrhB,EAAMohB,GACrB,IAAIngB,EAAQnQ,KAEZ,SAASwwB,EAAUxsB,GACf,OAAO,QAAQA,GAAOA,GAAM,QAAUA,GAAO,CAACA,GAAO,GAczD,SAASysB,EAAajwB,EAAUkwB,GAC5B,OAAO,SAAqB1sB,GACxB,IAAI,QAAQA,IAAuB,IAAfA,EAAIoL,OACpB,OAAOpL,EACX,IAAI0b,EAAM8Q,EAAUxsB,GAChBsC,GAAS,QAAIoZ,EAAKlf,GACtB,OAAyB,IAAlBkwB,EAAgF,KAAvD,QAAOpqB,GAAQ,SAAUgJ,GAAK,OAAQA,KAAMF,OAjBpF,SAAqBpL,GACjB,OAAQA,EAAIoL,QACR,KAAK,EACD,OACJ,KAAK,EACD,MAAgB,SAATkhB,EAAkBtsB,EAAI,GAAKA,EACtC,QACI,OAAOA,GAUgF2sB,CAAYrqB,IAI/G,SAASsqB,EAAmBpwB,GACxB,OAAO,SAAqBqwB,EAAMC,GAC9B,IAAIC,EAAOP,EAAUK,GAAOG,EAAQR,EAAUM,GAC9C,GAAIC,EAAK3hB,SAAW4hB,EAAM5hB,OACtB,OAAO,EACX,IAAK,IAAIiO,EAAI,EAAGA,EAAI0T,EAAK3hB,OAAQiO,IAC7B,IAAK7c,EAASuwB,EAAK1T,GAAI2T,EAAM3T,IACzB,OAAO,EAEf,OAAO,GAGf,CAAC,SAAU,SAAU,SAAU,cAActc,SAAQ,SAAUyE,GAC3D,IAAIyrB,EAAc/hB,EAAK1J,GAAMlC,KAAK4L,GAC9BgiB,EAAqB,WAAT1rB,EAAoBorB,EAAqBH,EACzDtgB,EAAM3K,GAAQ0rB,EAAUD,OAE5B,QAAOjxB,KAAM,CACT2tB,QAASze,EAAKye,QACdnoB,KAAM0J,EAAK1J,KACX8e,QAASpV,EAAKoV,QACdlF,QAASlQ,EAAKkQ,QACdyP,IAAK3f,EAAK2f,IACV3V,GAAIuX,EAAavhB,EAAKgK,GAAG5V,KAAK4L,IAAO,GACrCiiB,WAAYb,+GC5DZc,kUApDJC,EAA4B,WAC5B,SAASA,IACLrxB,KAAKwlB,SAAU,EACfxlB,KAAKsxB,UAAY,GACjBtxB,KAAKuxB,cAAe,QAAKF,EAAWxvB,UAAW,CAC3C,OACA,SACA,QACA,OACA,MACA,OACA,OACA,OACA,QAIJ7B,KAAK+D,OAAQ,SAAQ,QAAI/D,KAAKuxB,cADf,SAAU9X,EAAYjU,GAAQ,OAAO,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,OAClC,IA+B3D,OA7BA4X,EAAWxvB,UAAUqT,QAAU,WAC3BlV,KAAK+D,MAAQ,IAOjBstB,EAAWxvB,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpD,KAAK,QAAU/X,GACX,OAAOzZ,KAAK+D,MAAMyB,GACtB,GAAIxF,KAAK+D,MAAMrB,eAAe8C,GAC1B,MAAM,IAAIiN,MAAM,iBAAmBjN,EAAO,+BAO9C,OANAxF,KAAK+D,MAAMyB,GAAQ,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,IACpD+X,IACAxxB,KAAKsxB,UAAU7wB,KAAK,CAAE+E,KAAMA,EAAM0N,IAAKse,IAClCxxB,KAAKwlB,SACNxlB,KAAKyxB,mBAENzxB,MAEXqxB,EAAWxvB,UAAU4vB,gBAAkB,WACnC,KAAOzxB,KAAKsxB,UAAUliB,QAAQ,CAC1B,IAAIF,EAAOlP,KAAKsxB,UAAUrvB,QAC1B,GAAIiN,EAAKoV,QACL,MAAM,IAAI7R,MAAM,sDACpB,QAAOzS,KAAK+D,MAAMmL,EAAK1J,MAAO,qBAA0B0J,EAAKgE,QAG9Dme,EAhDoB,GAoDvBD,EAAkB,SAAUle,GAC5B,IAAIwe,EAAc,SAAU1tB,GAAO,OAAe,MAAPA,EAAcA,EAAI8Q,WAAa9Q,GACtE2tB,EAAkB,CAClB9c,OAAQ6c,EACRzc,OAAQyc,EACRxY,IAAI,IAAAA,IAAG0Y,QACPtN,QAAS,KAETnV,OAAQ,SAAUsO,EAAGmB,GAAK,OAAOnB,GAAKmB,IAE1C,OAAO,QAAO,GAAI+S,EAAiBze,KAGvC,QAAOme,EAAWxvB,UAAW,CACzB0D,OAAQ6rB,EAAgB,IACxBjpB,KAAMipB,EAAgB,CAClB9M,QAAS,UAEbuN,MAAOT,EAAgB,IACvBU,KAAMV,EAAgB,CAClBhS,SAAS,IAEb2S,IAAKX,EAAgB,CACjBnc,OAAQ,SAAUjR,GAAO,OAAOqlB,SAASrlB,EAAK,KAC9CkV,GAAI,SAAUlV,GACV,QAAQ,QAAkBA,IAAQhE,KAAKiV,OAAOjR,EAAI8Q,cAAgB9Q,GAEtEsgB,QAAS,UAEb0N,KAAMZ,EAAgB,CAClBvc,OAAQ,SAAU7Q,GAAO,OAAQA,EAAO,EAAM,GAC9CiR,OAAQ,SAAUjR,GAAO,OAA6B,IAAtBqlB,SAASrlB,EAAK,KAC9CkV,IAAI,IAAAA,IAAG+Y,SACP3N,QAAS,QAEb4N,KAAMd,EAAgB,CAClBvc,OAAQ,SAAU7Q,GACd,OAAQhE,KAAKkZ,GAAGlV,GAEV,CAACA,EAAImuB,eAAgB,KAAOnuB,EAAIouB,WAAa,IAAItwB,OAAO,IAAK,IAAMkC,EAAIquB,WAAWvwB,OAAO,IAAImR,KAAK,UADlGkB,GAGVc,OAAQ,SAAUjR,GACd,GAAIhE,KAAKkZ,GAAGlV,GACR,OAAOA,EACX,IAAIgY,EAAQhc,KAAKsyB,QAAQ7oB,KAAKzF,GAC9B,OAAOgY,EAAQ,IAAIuW,KAAKvW,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,SAAM7H,GAEhE+E,GAAI,SAAUlV,GAAO,OAAOA,aAAeuuB,OAASjJ,MAAMtlB,EAAIwuB,YAC9DrjB,OAAQ,SAAUsjB,EAAGlV,GACjB,MAAO,CAAC,cAAe,WAAY,WAAW3O,QAAO,SAAUsL,EAAKvZ,GAAM,OAAOuZ,GAAOuY,EAAE9xB,OAAU4c,EAAE5c,QAAU,IAEpH2jB,QAAS,0DACTgO,QAAS,0DAEbI,KAAMtB,EAAgB,CAClBvc,OAAQ,KACRI,OAAQ,KACRiE,IAAI,IAAAA,IAAG3F,QACPpE,OAAQ,KACRmV,QAAS,UAGbJ,IAAKkN,EAAgB,CACjBvc,OAAQ,KACRI,OAAQ,KACRiE,GAAI,WAAc,OAAO,GACzB/J,OAAQ,kLCjJhBwjB,EAA6B,WAC7B,SAASA,EAAYvkB,QACF,IAAXA,IAAqBA,EAAS,KAClC,QAAOpO,KAAMoO,GA4BjB,OAlBAukB,EAAY9wB,UAAU+wB,SAAW,SAAUC,EAAWC,EAAUC,GAC5D,IAAIC,EACAC,GAAU,QAAUH,EAAUC,GAAM9nB,EAAY,GAAIioB,EAAc,GACtE,IAAK,IAAI7V,KAAK4V,EACV,GAAKA,EAAQ5V,IAAO4V,EAAQ5V,GAAGjP,SAE/B4kB,EAAezf,OAAOC,KAAKyf,EAAQ5V,GAAGjP,SACpBgB,OAElB,IAAK,IAAIsO,KAAKsV,EACNE,EAAYhlB,QAAQ8kB,EAAatV,KAAO,IAE5CwV,EAAYzyB,KAAKuyB,EAAatV,IAC9BzS,EAAU+nB,EAAatV,IAAM1d,KAAKgzB,EAAatV,KAGvD,OAAO,QAAO,GAAIzS,EAAW4nB,IAE1BF,EA/BqB,+RCS5BQ,EAA0B,WAC1B,SAASA,EAASC,GACd,GAAIA,aAAuBD,EAAU,CACjC,IAAI5kB,EAAO6kB,EACXpzB,KAAKyN,MAAQc,EAAKd,MAClBzN,KAAKwO,YAAcD,EAAKC,YAAY1M,QACpC9B,KAAKsb,aAAc,QAAO,GAAI/M,EAAK+M,aACnCtb,KAAK+X,YAAcxJ,EAAKwJ,YAAYjW,QACpC9B,KAAKwa,MAAQjM,EAAKiM,OAASjM,EAAKiM,MAAM1Y,YAErC,CACD,IAAI2L,EAAQ2lB,EACZpzB,KAAKyN,MAAQA,EACbzN,KAAKwO,YAAcf,EAAM4lB,WAAW,CAAEjU,SAAS,IAC/Cpf,KAAKsb,YAAc,GACnBtb,KAAK+X,YAActK,EAAMsK,YAAYpJ,KAAI,SAAUqE,GAAO,OAAOA,EAAItG,YA+C7E,OA5CAymB,EAAStxB,UAAU6K,MAAQ,WACvB,OAAO,IAAIymB,EAASnzB,OAGxBmzB,EAAStxB,UAAUyxB,eAAiB,SAAUllB,GAG1C,OADApO,KAAKsb,YAActb,KAAKwO,YAAYI,QAAO,SAAUsR,EAAMqT,GAAQ,OAAO,QAAWrT,EADtC,EAAnBsT,EAC2ED,GAD9CloB,GAAImoB,EAAShvB,MAAM4J,EAAOolB,EAASnoB,OAA1E,IAAUmoB,IACsF,IAC3GxzB,MAGXmzB,EAAStxB,UAAU4xB,UAAY,SAAUjuB,GACrC,OAAO,QAAKxF,KAAKwO,aAAa,QAAO,KAAMhJ,KAM/C2tB,EAAStxB,UAAUsN,OAAS,SAAUZ,EAAMmlB,GACxC,IAAIC,EAAO3zB,KAAK2zB,KAAKplB,EAAMmlB,GAC3B,OAAOC,GAAwB,IAAhBA,EAAKvkB,QAcxB+jB,EAAStxB,UAAU8xB,KAAO,SAAUplB,EAAMmlB,GACtC,GAAI1zB,KAAKyN,QAAUc,EAAKd,MACpB,OAAO,EACX,IAAIW,EAASslB,EAAWA,EAAS1zB,MAAQA,KAAKwO,YAC9C,OAAO,YAAcJ,EAAQpO,KAAKsb,YAAa/M,EAAK+M,cAMxD6X,EAASzmB,MAAQ,SAAU6B,GAAQ,OAAOA,EAAK7B,SACxCymB,EA9DkB,mWCHzBS,EAA2B,WAC3B,SAASA,KA4JT,OAzJAA,EAAUC,gBAAkB,SAAUC,EAAU3rB,GAC5C,IAAIsF,GAAQ,QAAKtF,GAAMsF,MACvB,OAAO,IAAI,IAAYqmB,EAAUrmB,EAAOtF,EAAKwG,KAAI,QAAK,gBAAgBC,OAAO,KAAQ,IAAK,KAE9FglB,EAAUG,UAAY,SAAUvH,GAC5B,IAAIre,EAAWqe,EAAYpe,SAC3B,OAAOoe,EAAY/T,SAAStQ,KAAKwG,KAAI,SAAUlB,GAAS,OAAO,IAAI,IAASA,GAAO6lB,eAAenlB,OAGtGylB,EAAUI,YAAc,SAAUC,EAAUzH,GACxC,IAAI0H,EAASN,EAAUG,UAAUvH,GACjC,OAAIA,EAAYrsB,UAAUif,QACfwU,EAAUO,cAAcF,EAAUC,EAAQ3gB,OAAOC,KAAKgZ,EAAYpe,WAEtE8lB,GAOXN,EAAUQ,iBAAmB,SAAUttB,EAAOqB,EAAM6kB,GAEhD7kB,EACKmB,QAAO,SAAUiF,GAAQ,OAAO,QAAQye,EAAQze,EAAKd,UACrD1M,SAAQ,SAAUwN,GACnB,IAAI8lB,GAAY,QAAO9lB,EAAKd,MAAM+M,OAAS,IACvC8Z,EAAUV,EAAUU,QAAQnsB,GAAM,SAAUoY,GAAK,OAAOA,IAAMhS,KAC9DgmB,EAAcF,EAAU1lB,KAAI,SAAUmL,GAAQ,OAAOhT,EAAM0tB,iBAAiBF,EAASxa,MACzFvL,EAAKiM,MAAQ+Z,EAAY3lB,OAAO,KAAS,QAcjDglB,EAAUO,cAAgB,SAAUF,EAAUC,EAAQO,QACnC,IAAXA,IAAqBA,EAAS,IAKlC,IAAIC,EAAYT,EACXtlB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKC,eAClCI,OAAO,KAAS,IAChBtF,QAAO,SAAU0F,GAAS,OAAQA,EAAMoQ,WACxCzQ,KAAI,QAAK,OAiBd,OAAOulB,EAAOvlB,KAZd,SAAiCgmB,GAE7B,IAAIC,GAAc,QAAO,GAAID,GAAUA,EAAOrZ,aAE1CuZ,GAAoB,QAAKD,EAAaH,GAC1CG,GAAc,QAAKA,EAAaH,GAChC,IAnBmBtsB,EAAMsF,EACrBc,EAkBAumB,GAAgB,SAnBD3sB,EAmBoB8rB,EAnBdxmB,EAmBwBknB,EAAOlnB,MAlBpDc,GAAO,QAAKpG,GAAM,QAAO,QAASsF,KAC/B,QAAO,GAAIc,GAAQA,EAAK+M,cAiBmC,IAAIoZ,GAElEK,GAAe,QAAOH,EAAaE,EAAeD,GACtD,OAAO,IAAI,IAASF,EAAOlnB,OAAO6lB,eAAeyB,OAQzDnB,EAAUllB,YAAc,SAAUulB,EAAUC,EAAQc,GAIhD,IAHA,IAE2BC,EAAOC,EAU9BhG,EAAMiG,EAAUlnB,EAASke,EAZzBrF,EAAMhF,KAAKD,IAAIoS,EAAS7kB,OAAQ8kB,EAAO9kB,QACvCgmB,EAAO,EAEJA,EAAOtO,GAAOmN,EAASmB,GAAM3nB,QAAUunB,IADnBC,EAC6ChB,EAASmB,GAD/CF,EACsDhB,EAAOkB,GAD7CH,EAAM9lB,OAAO+lB,EAAOtB,EAAUyB,oBAE5ED,IAUJD,GADAjG,EAAO+E,GACSnyB,MAAM,EAAGszB,GACzBnnB,EAAUihB,EAAKptB,MAAMszB,GAErB,IAAIE,EAAuBH,EAASxmB,KAVpC,SAAuB4mB,EAActmB,GACjC,IAAIxC,EAAS8oB,EAAa7oB,QAE1B,OADAD,EAAO6O,YAAc4Y,EAAOjlB,GAAKqM,YAC1B7O,KAUX,OAFA0f,EAAW+H,EAAOpyB,MAAMszB,GAEjB,CAAElG,KAAMA,EAAMC,GADhBmG,EAAqBlzB,OAAO+pB,GACJgJ,SAAUA,EAAUG,qBAAsBA,EAAsBrnB,QAASA,EAASke,SAAUA,IAiB7HyH,EAAU4B,SAAW,SAAUC,EAAOC,EAAOhC,GACzC,IAAIiC,GAAO,EAEX,OADa,QAAYF,EAAOC,GAClB9mB,QAAO,SAAU4mB,EAAUnK,GACrC,IAAIuK,EAAQvK,EAAG,GAAIwK,EAAQxK,EAAG,GAE9B,OADAsK,EAAOA,IAASC,EAAMzmB,OAAO0mB,EAAOnC,IACtB8B,EAAWA,EAASpzB,OAAOwzB,KAC1C,KAUPhC,EAAUzkB,OAAS,SAAUsmB,EAAOC,EAAOhC,GACvC,OAAO+B,EAAMrmB,SAAWsmB,EAAMtmB,QAAUwkB,EAAU4B,SAASC,EAAOC,EAAOhC,GAAUtkB,SAAWqmB,EAAMrmB,QAYxGwkB,EAAUU,QAAU,SAAUnsB,EAAM2tB,GAChC,IAAIvnB,GAAO,QAAKpG,EAAM2tB,GAClBC,EAAa5tB,EAAK+F,QAAQK,GAC9B,OAAuB,IAAhBwnB,OAAoB5hB,EAAYhM,EAAKrG,MAAM,EAAGi0B,EAAa,IAEtEnC,EAAUyB,iBAAmB,SAAU9mB,GACnC,OAAOA,EAAKd,MAAM4lB,WAAW,CAAEjU,SAAS,IAAS9V,QAAO,SAAU0F,GAAS,OAAQA,EAAM2e,YAG7FiG,EAAUtY,YAAc,SAAUnT,GAAQ,OAAOA,EAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,QAAO2L,EAAK3L,EAAK+M,eAAiB,KACtHsY,EA7JmB,yGCPvB,IAAIoC,EAAkB,CACzB/lB,KAAM,CACFgmB,KAAM,OACNC,MAAO,SAEXpd,MAAO,CACHqd,KAAM,OACNC,OAAQ,sbCgBZnkB,EAA4B,WAC5B,SAASA,EAAWokB,EAAMne,EAAWpG,EAAMwkB,EAAQ3uB,GAG/C,GAFA3H,KAAKu2B,UAAW,EAChBv2B,KAAKyD,aAAU0Q,EACXkiB,aAAgBpkB,GAChB,QAAOjS,KAAMq2B,QAEZ,IAAI,QAAWne,GAAY,CAC5B,IAAI,QAAkBme,GAClB,MAAM,IAAI5jB,MAAM,gDACpB,KAAK,QAAWyF,GACZ,MAAM,IAAIzF,MAAM,2DACpBzS,KAAKuhB,MAAQ8U,EACbr2B,KAAKs2B,OAASA,EACdt2B,KAAKkY,UAAYA,EACjBlY,KAAK8R,KAAOA,GAAQ,GACpB9R,KAAK2H,KAAOA,EACZ3H,KAAKu2B,cAAoBpiB,IAATxM,EAChB3H,KAAKyD,QAAUzD,KAAKu2B,SAAW,YAAiBv2B,KAAK2H,WAAQwM,OAE5D,IAAI,QAASkiB,IAASA,EAAK9U,QAAU8U,EAAK3zB,eAAe,cAAgB2zB,EAAK3zB,eAAe,SAAU,CACxG,IAAI8zB,EAAUH,EACd,OAAO,IAAIpkB,EAAWukB,EAAQjV,MAAOiV,EAAQte,UAAWse,EAAQ1kB,KAAM0kB,EAAQF,OAAQE,EAAQ7uB,OA+DtG,OA5DAsK,EAAWpQ,UAAUgX,UAAY,SAAUpL,GACvC,IAAIgpB,EAAaz2B,KAAKs2B,QAAU,GAC5BI,EAAejpB,GAASA,EAAMkpB,eAAkB,GACpD,MAAO,CACH1mB,KAAMwmB,EAAWxmB,MAAQymB,EAAYzmB,MA5CvC,OA6CE6I,MAAO2d,EAAW3d,OAAS4d,EAAY5d,OA5CxC,SAsDP7G,EAAWpQ,UAAU8K,QAAU,SAAUiqB,EAAgBhnB,GACrD,IAAIO,EAAQnQ,KACR+G,EAAK,OAOLwH,EAAOqoB,EAAeC,SAAS72B,MAC/ByN,EAAQc,GAAQA,EAAKd,MACrBqpB,EAAc92B,KAAK6Y,UAAUpL,GAAOqL,MACpCie,GAAoB,QAAWD,GAAeA,EAAc,KAUhE,OAAQ92B,KAAKyD,QAAUsD,EAClBkJ,OACAlF,MApB2B,WAC5B,OAAOhE,EAAG0U,IAAImb,EAAeI,gBAAgB7mB,GAAOxB,KAAI,SAAUqJ,GAAc,OAAOA,EAAWtH,IAAIkmB,EAAgBhnB,UAoBrH7E,MAjBiB,SAAUksB,GAAgB,OAAO9mB,EAAM+H,UAAU/V,MAAM,KAAM80B,MAkB9ElsB,KAAKgsB,GACLhsB,MAboB,SAAUmsB,GAK/B,OAJA/mB,EAAMxI,KAAOuvB,EACb/mB,EAAMomB,UAAW,EACjBpmB,EAAM+H,UAAY,KAClB,6BAA8B/H,EAAOP,GAC9BO,EAAMxI,SAgBrBsK,EAAWpQ,UAAU6O,IAAM,SAAUkmB,EAAgBhnB,GACjD,OAAO5P,KAAKyD,SAAWzD,KAAK2M,QAAQiqB,EAAgBhnB,IAExDqC,EAAWpQ,UAAUiT,SAAW,WAC5B,MAAO,sBAAuB,QAAU9U,KAAKuhB,OAAS,gBAAkBvhB,KAAK8R,KAAKnD,IAAI,MAAa,MAEvGsD,EAAWpQ,UAAU6K,MAAQ,WACzB,OAAO,IAAIuF,EAAWjS,OAE1BiS,EAAWklB,SAAW,SAAU5V,EAAO5Z,GAAQ,OAAO,IAAIsK,EAAWsP,GAAO,WAAc,OAAO5Z,IAAS,KAAM,KAAMA,IAC/GsK,EArFoB,4qBCd3BmlB,EAAQ,SACRC,EAAY,CAACD,EAAMlB,MAAOkB,EAAMnB,MAChCqB,EAAc,CAACF,EAAMlB,OAarB9tB,EAAgC,WAChC,SAASA,EAAemvB,GACpBv3B,KAAKu3B,MAAQA,EA8IjB,OA3IAnvB,EAAevG,UAAU+W,UAAY,WACjC,OAAO5Y,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO2L,EAAI9X,OAAOmM,EAAKwJ,YAAYpJ,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,YAAe,IAAI3S,OAAO,KAAO,KAQpJxG,EAAevG,UAAUiM,cAAgB,SAAUyT,GAC/C,IAAIiU,EAAWx1B,KAAKu3B,MACf5oB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKwJ,eAClCnJ,OAAO,KAAS,IAChBtF,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC9C,OAAO,QAAKiU,IAGhBptB,EAAevG,UAAUgX,UAAY,SAAUb,GAC3C,IAAIzJ,EAAOvO,KAAK62B,SAAS7e,GACzB,OAAOA,EAAWa,UAAUtK,EAAKd,QAyBrCrF,EAAevG,UAAUkS,WAAa,SAAUtG,GAC5C,OAAO,IAAIrF,EAAe,YAAkBpI,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAOA,EAAKd,QAAUA,OAiBpGrF,EAAevG,UAAU21B,eAAiB,SAAUC,EAAgBhqB,GAChE,IAAIc,GAAO,QAAKvO,KAAKu3B,OAAO,QAAO,QAAS9pB,IACxC+F,EAAOikB,EAAe9oB,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,SACtDhT,EAAKwJ,YAAcxJ,EAAKwJ,YAAYzO,QAAO,SAAUiU,GAAK,OAAkC,IAA3B/J,EAAKtF,QAAQqP,EAAEgE,UAAkBnf,OAAOq1B,IAS7GrvB,EAAevG,UAAU61B,YAAc,SAAUznB,EAAML,GACnD,IAAIO,EAAQnQ,UACC,IAATiQ,IAAmBA,EAAO,QAE9B,IAGI0nB,IAHa,QAAQN,EAAWpnB,GAAQA,EAAO,UAGjB,eAA6BqnB,EAAcD,EAE7E,sBAAuBr3B,KAAKu3B,MAAOtnB,EAAML,GACzC,IAAIgoB,EAAgB,SAAUC,EAAcC,GAAe,OAAO,SAAU9f,GACxE,OAAO,QAAQ6f,EAAc1nB,EAAM0I,UAAUb,GAAY8f,MAIzDvc,EAAWvb,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAC5C,IAAIwpB,EAAkBxpB,EAAKwJ,YAAYzO,OAAOsuB,EAAcD,EAAc,SACtEK,EAASD,EAAgBzuB,OAAOsuB,EAAc,CAAC,UAAW,UAC1DK,EAAOF,EAAgBzuB,QAAO,QAAIsuB,EAAc,CAAC,UAAW,WAE5D7jB,EAAa5D,EAAM4D,WAAWxF,EAAKd,OACnCyqB,EAAY,SAAU3a,GACtB,OAAOA,EACF7M,IAAIqD,EAAYnE,GAEhB7E,MAAK,SAAUvG,GAAS,MAAO,CAAG+c,MAAOhE,EAAEgE,MAAO/c,MAAOA,OAGlE,OADAwzB,EAAOj3B,QAAQm3B,GACRhe,EAAI9X,OAAO61B,EAAKtpB,IAAIupB,MAC5B,IAEH,OAAO,WAAgB3c,IAE3BnT,EAAevG,UAAUs2B,SAAW,WAChC,OAAOn4B,KAAKo4B,YAAcp4B,KAAKo4B,UAAY,IAAIC,EAAer4B,QAElEoI,EAAevG,UAAUg1B,SAAW,SAAU7e,GAC1C,OAAO,QAAKhY,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAO,QAAQA,EAAKwJ,YAAaC,OAO/E5P,EAAevG,UAAUm1B,gBAAkB,SAAUhf,GACjD,IAAI7H,EAAQnQ,KACRuO,EAAOvO,KAAK62B,SAAS7e,GAIrBsgB,GADU,YAAkBt4B,KAAKu3B,OAAO,SAAUjoB,GAAK,OAAOA,IAAMf,MAAYvO,KAAKu3B,OAEpF3oB,QAAO,SAAUsL,EAAKqe,GAAS,OAAOre,EAAI9X,OAAOm2B,EAAMxgB,eAAiB,IACxEzO,QAAO,SAAU0J,GAAO,OAAOA,IAAQgF,KAW5C,OAAOA,EAAWlG,KAAKnD,KAVH,SAAU4S,GAC1B,IAAIiU,EAAW8C,EAAqBhvB,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC7E,GAAIiU,EAASpmB,OACT,OAAO,QAAKomB,GAChB,IAAIgD,EAAeroB,EAAMgoB,WAAWM,UAAUlX,GAC9C,IAAI,QAAYiX,GACZ,MAAM,IAAI/lB,MAAM,+CAAgD,QAAU8O,IAE9E,OAAO,IAAI,IAAWA,GAAO,WAAc,OAAOiX,IAAiB,GAAIA,OAIxEpwB,EAhJwB,GAoJ/BiwB,EAAgC,WAChC,SAASA,EAAexnB,GACpB7Q,KAAK6Q,QAAUA,EACf7Q,KAAK04B,OAAS14B,KAAK0Q,IAlKQ,oBAkKsB,cAwBrD,OAtBA2nB,EAAex2B,UAAU6O,IAAM,SAAU6Q,GACrC,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,GAAIvJ,EAAY,CACZ,GAAiD,WAA7ChY,KAAK6Q,QAAQgI,UAAUb,GAAYc,MACnC,OAAOd,EAAWtH,IAAI1Q,KAAK6Q,SAE/B,IAAKmH,EAAWue,SACZ,MAAM,IAAI9jB,MAAM,yCAA0C,QAAUuF,EAAWuJ,QAEnF,OAAOvJ,EAAWrQ,KAEtB,OAAO3H,KAAKy4B,UAAUlX,IAE1B8W,EAAex2B,UAAU82B,SAAW,SAAUpX,GAC1C,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,OAAIvJ,EACOA,EAAWtH,IAAI1Q,KAAK6Q,SACxB,YAAiB7Q,KAAK04B,OAAOhoB,IAAI6Q,KAE5C8W,EAAex2B,UAAU42B,UAAY,SAAUlX,GAC3C,OAAOvhB,KAAK04B,QAAU14B,KAAK04B,OAAOhoB,IAAI6Q,IAEnC8W,EA3BwB,q2BC/J/BO,EAAkB,EAMlBC,GAAsB,QAAS,mBAJnB,CAAC,MAAO,OAAQ,SAAU,OAAQ,aAM9CC,GAAqB,QAAS,iBAJlB,CAAC,OAAQ,WAAY,OAAQ,WAAY,YAAa,eAUlEpiB,EAA0B,WAQ1B,SAASA,EAASU,EAAiBC,QACP,IAApBD,IAA8BA,EAAkByhB,QAC7B,IAAnBxhB,IAA6BA,EAAiByhB,GAClD94B,KAAKoX,gBAAkBA,EACvBpX,KAAKqX,eAAiBA,EACLrX,KAAKmb,IAAMyd,IACX54B,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAe,GAErCh5B,KAAKqI,MAAQ,KAEbrI,KAAK+W,YAAc,IAAI,IAAY/W,MAEnCA,KAAKsY,QAAU,IAAI,IAEnBtY,KAAK8sB,kBAAoB,IAAI,IAAkB9sB,MAK/CA,KAAK4U,kBAAoB,IAAI,IAAkB5U,MAK/CA,KAAKmc,UAAY,IAAI,IAAUnc,MAE/BA,KAAKiX,WAAa,IAAI,IAAWjX,MAEjCA,KAAK4W,cAAgB,IAAI,IAAc5W,MAEvCA,KAAK6W,aAAe,IAAI,IAAa7W,MAErCA,KAAKi5B,SAAW,GAChBj5B,KAAK+W,YAAY/M,WAAWC,iBAAiBjK,KAAK4W,cAAcgH,QAChE5d,KAAKsY,QAAQwa,SAAW9yB,KAAK4W,cAAcgH,OAC3C5d,KAAKsY,QAAQwN,QAAU9lB,KAAKsY,QAAQwa,SAASplB,KAC7C1N,KAAKk5B,WAAWl5B,KAAKsY,SACrBtY,KAAKk5B,WAAWl5B,KAAK6W,cACrB7W,KAAKk5B,WAAWl5B,KAAK4W,eACrB5W,KAAKk5B,WAAWl5B,KAAK8sB,mBACrB9sB,KAAKk5B,WAAWl5B,KAAKiX,YACrBjX,KAAKk5B,WAAW9hB,GAChBpX,KAAKk5B,WAAW7hB,GAgGpB,OA7FAX,EAAS7U,UAAUq3B,WAAa,SAAUA,GACtCl5B,KAAKg5B,aAAav4B,KAAKy4B,IAa3BxiB,EAAS7U,UAAUqT,QAAU,SAAUgkB,GACnC,IAAI/oB,EAAQnQ,KACRk5B,IAAc,QAAWA,EAAWhkB,SACpCgkB,EAAWhkB,QAAQlV,OAGvBA,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAal3B,QAAQf,SAAQ,SAAUo4B,GACxC,IACyB,mBAAdA,EAAEjkB,SAA0BikB,EAAEjkB,QAAQ/E,IAC7C,QAAWA,EAAM6oB,aAAcG,GAEnC,MAAOC,UAwDf1iB,EAAS7U,UAAUw3B,OAAS,SAAUA,EAAQl5B,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAIm5B,EAAiB,IAAID,EAAOr5B,KAAMG,GACtC,IAAKm5B,EAAe9zB,KAChB,MAAM,IAAIiN,MAAM,+CAAiD6mB,GAErE,OADAt5B,KAAKg5B,aAAav4B,KAAK64B,GACft5B,KAAKi5B,SAASK,EAAe9zB,MAAQ8zB,GAEjD5iB,EAAS7U,UAAU03B,UAAY,SAAUC,GACrC,OAAOA,EAAax5B,KAAKi5B,SAASO,IAAc,QAAOx5B,KAAKi5B,WAEzDviB,EAnJkB,ijBCf7B,SAAS+iB,EAAYhsB,GACjB,OAAOA,EAAMjI,KAEjB,SAASk0B,EAAYjsB,GAEjB,OADAA,EAAMC,KAAKsG,QAAU,WAAc,OAAOvG,GACnCA,EAAMC,KAEjB,SAASisB,EAAYlsB,GAIjB,OAHIA,EAAM2M,QAAU3M,EAAM2M,OAAOzS,OAC7B8F,EAAM9F,KAAO8F,EAAMC,KAAK/F,MAAO,QAAQ8F,EAAM2M,OAAOzS,KAAM8F,EAAM9F,OAE7D8F,EAAM9F,KAEjB,IAAIiyB,EAAgB,SAAUC,EAA4Bjc,GACtD,OAAO,SAAoBhK,GACvB,IAAIkmB,EAAWlmB,EAAYlG,KAG3B,GAAIosB,GAAYA,EAASroB,KAAOqoB,EAASt0B,MAAQs0B,EAASt0B,KAAKwW,MAAM,WAAY,CAC7E,IAAI+d,EAAc,IAClB,QAAKD,EAAUC,GACfA,EAAYtoB,KAAO,kBACnBqoB,EAAWC,EAEf,IAAI3f,EAASxG,EAAYwG,OACrB4f,EA/BG,SAAUvoB,GACrB,KAAK,QAASA,GACV,OAAO,EACX,IAAImM,EAAyB,MAAlBnM,EAAIhM,OAAO,GACtB,MAAO,CAAEzB,IAAK4Z,EAAOnM,EAAIwoB,UAAU,GAAKxoB,EAAKmM,KAAMA,GA2BlCsc,CAASJ,EAASroB,KAC3BA,EAAOuoB,EAAwBH,EAA2BxyB,QAAQ2yB,EAAOh2B,IAAK,CAAEyJ,MAAOqsB,IAAvEA,EAASroB,IAC7B,IAAKA,EACD,OAAO,KACX,IAAKooB,EAA2BM,UAAU1oB,GACtC,MAAM,IAAIgB,MAAM,gBAAkBhB,EAAM,eAAiBmC,EAAc,KAC3E,OAAOomB,GAAUA,EAAOpc,KAAOnM,GAAQ2I,GAAUA,EAAOggB,WAAcxc,KAAQnM,IAAI4oB,OAAO5oB,KAG7F6oB,EAAsB,SAAUC,GAChC,OAAO,SAA0B9sB,GAC7B,OAAQ8sB,EAAO9sB,IAAUA,EAAMgE,IAAMhE,EAAQA,EAAM2M,OAAS3M,EAAM2M,OAAOggB,UAAY,OAc7F,SAASI,EAAY/sB,GACjB,OAAOA,EAAM2M,OAAS3M,EAAM2M,OAAOjS,KAAK/F,OAAOqL,GAAkB,CAACA,GAEtE,SAASgtB,EAAgBhtB,GACrB,IAAI6L,EAAW7L,EAAM2M,QAAS,QAAO,GAAI3M,EAAM2M,OAAOd,UAAY,GAElE,OADAA,EAAS7L,EAAMjI,OAAQ,EAChB8T,EA2CJ,SAASohB,EAAmBjtB,GAE/B,IAA+BktB,EAAY3E,EA2BvC4E,EAAW,SAAUC,GAAK,OAAOA,EAAEC,SAAWD,EAAEtZ,OAEhDwZ,GAAqB,QAAQ,CAC7B,EAAC,QAAK,aAAc,SAAUF,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAE3iB,UAAW2iB,EAAE/oB,KAAM+oB,EAAEvE,UAC7F,EAAC,QAAK,cAAe,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAEG,WAAYH,EAAE/oB,MAAQ+oB,EAAEI,aAAcJ,EAAEvE,UACjH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAO,IAAIA,EAAEK,WAAe,GAAIL,EAAEvE,UACrH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAOA,EAAEM,WAAa,GAAIN,EAAEvE,OAAQuE,EAAEM,YACzH,EAAC,QAAK,eAAgB,SAAUN,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAI,KAAU,CAACA,EAAEO,aAAcP,EAAEvE,YAGrG+E,GAAmB,QAAQ,CAC3B,EAAC,SAAK,QAAK,OAAQ,MAAW,SAAU5nB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO,KAAU,CAAC9N,EAAMzP,KAAMyP,EAAM6iB,UACjH,EAAC,SAAK,QAAK,OAAQ,MAAU,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,OAAO,QAAK9N,EAAMzP,KAAMyP,EAAMzP,IAAIlC,MAAM,GAAI,GAAI2R,EAAM6iB,UAClI,EAAC,SAAK,QAAK,OAAQ,MAAa,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO9N,EAAMzP,KA/BvErD,EA+BqF8S,EAAMzP,IA9B5GuM,EAAY,cAIT5P,EAAY,SAAM4P,GAAaA,EAAU0H,SAAStX,EAAI4P,EAAUuH,WAAc,YA0BiCrE,EAAM6iB,QA/BjH,IAAU31B,EACjB4P,MAiCJ+qB,GAAkB,QAAQ,CAC1B,EAAC,IAAApiB,IAAG,KAAa,SAAUqE,GAAK,OAAOA,IACvC,CA5BmB,SAAUtD,GAAO,SAAUA,EAAIsH,QAAStH,EAAI/B,YA4B5C6iB,GACnB,CA3BoB,SAAU9gB,GAC9B,SAAWA,EAAI6gB,UAAW7gB,EAAIsH,SAAWtH,EAAIkhB,UAAYlhB,EAAI+gB,YAAc/gB,EAAImhB,aAAenhB,EAAIihB,YA0B9EH,GACpB,CAxBiB,SAAU9gB,GAC3B,SAAUA,GAAOA,EAAIjW,OAAQ,QAASiW,EAAIjW,OAAQ,QAAQiW,EAAIjW,OAAQ,QAAWiW,EAAIjW,QAuBpEq3B,GACjB,EAAC,SAAI,GAAO,SAAUphB,GAAO,MAAM,IAAIxH,MAAM,2BAA4B,QAAUwH,QAInFshB,EAAO9tB,EAAMd,QAEjB,QADY,QAAQ4uB,GAAQA,GArDGZ,EAqDmBY,EArDPvF,EAqDavoB,EAAMkpB,eAAiB,GApDpEpjB,OAAOC,KAAKmnB,GAAc,IAAIhsB,KAAI,SAAU4S,GAAS,MAAO,CAC/DA,MAAOA,EACPvd,IAAK22B,EAAWpZ,GAChBzP,UAAMqC,EACNmiB,OAAQN,EAAgBzU,SAiDnB5S,IAAI2sB,GAcrB,IAAIE,EAA8B,WAC9B,SAASA,EAAaC,EAAS7mB,GAC3B5U,KAAKy7B,QAAUA,EACf,IArIyBC,EAqIrBhuB,EAAO1N,KACP4d,EAAO,WAAc,OAAO6d,EAAQ3a,KAAK,KACzCyZ,EAAS,SAAU9sB,GAAS,MAAsB,KAAfA,EAAMjI,MAM7CxF,KAAK27B,SAAW,CACZn2B,KAAM,CAACi0B,GACP/rB,KAAM,CAACgsB,GACPtf,OAAQ,CARZ,SAAuB3M,GACnB,OAAI8sB,EAAO9sB,GACA,KACJguB,EAAQ3a,KAAKpT,EAAKkuB,WAAWnuB,KAAWmQ,MAM/CjW,KAAM,CAACgyB,GAEPloB,IAAK,CAACmoB,EAAchlB,EAAmBgJ,IAEvCwc,UAAW,CAACE,EAAoBC,IAChCnsB,OAAQ,EAtJastB,EAsJK9mB,EAAkB8mB,aArJ7C,SAAuBjuB,GAC1B,IACIouB,EAAapuB,EAAMgE,KAAOhE,EAAMgE,IAAI4hB,WAAW,CAAEjU,SAAS,KAAa,GACvE0c,GAAe,SAAO,SAAO,QAAKruB,EAAMW,QAAU,GAAIytB,EAAUltB,KAAI,QAAK,SAFvD,SAAUpD,EAAQF,GAAM,OAAOqwB,EAAa9qB,WAAWvF,EAAI,KAAMoC,EAAMC,UAG7F,OAAOmuB,EACFz5B,OAAO05B,GACPntB,KAAI,SAAUksB,GAAK,MAAO,CAACA,EAAExvB,GAAIwvB,MACjCjsB,OAAO,KAAY,OAiJpB4L,MAAO,GAEPrS,KAAM,CAACqyB,GAEPlhB,SAAU,CAACmhB,GACX1iB,YAAa,CAAC2iB,IAgEtB,OA7DAc,EAAa35B,UAAUk6B,QAAU,SAAUv2B,EAAM7E,GAC7C,IAAIg7B,EAAW37B,KAAK27B,SAChBpc,EAAQoc,EAASn2B,IAAS,GAE9B,OAAI,QAASA,MAAU,QAAU7E,GACtB4e,EAAMnQ,OAAS,EAAImQ,EAAQA,EAAM,IACvC,QAAS/Z,KAAU,QAAW7E,IAEnCg7B,EAASn2B,GAAQ+Z,EACjBoc,EAASn2B,GAAM/E,KAAKE,GACb,WAAc,OAAOg7B,EAASn2B,GAAMga,OAAOmc,EAASn2B,GAAM0I,QAAQvN,EAAI,KAAO,YAJpF,GAaJ66B,EAAa35B,UAAUm6B,MAAQ,SAAUvuB,GACrC,IAAeguB,EAANz7B,KAAmBy7B,QAASE,EAA5B37B,KAA0C27B,SAC/CvhB,EAASpa,KAAK47B,WAAWnuB,GAC7B,GAAI2M,IAAWqhB,EAAQ3a,KAAK1G,OAAQjG,GAAW,GAC3C,OAAO,KAEX,IAAK,IAAItO,KAAO81B,EACZ,GAAKA,EAASj5B,eAAemD,GAA7B,CAEA,IAAIo2B,EAAQN,EAAS91B,GAAK+I,QAAO,SAAUstB,EAAUpS,GAAQ,OAAO,SAAUmD,GAAU,OAAOnD,EAAKmD,EAAQiP,MAAiB,MAC7HzuB,EAAM5H,GAAOo2B,EAAMxuB,GAEvB,OAAOA,GAEX+tB,EAAa35B,UAAU+5B,WAAa,SAAUnuB,GAE1C,IAAIjI,EAAOiI,EAAMjI,MAAQ,GAErB22B,EAAW32B,EAAKsd,MAAM,KAM1B,GAFoB,OAFFqZ,EAASC,OAGvBD,EAASC,MACTD,EAAS/sB,OAAQ,CACjB,GAAI3B,EAAM2M,OACN,MAAM,IAAI3H,MAAM,mFAAqFjN,EAAO,KAGhH,OAAO22B,EAASlpB,KAAK,KAEzB,OAAKxF,EAAM2M,QAEJ,QAAS3M,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KADjD,IAGfg2B,EAAa35B,UAAU2D,KAAO,SAAUiI,GACpC,IAAIjI,EAAOiI,EAAMjI,KACjB,IAA2B,IAAvBA,EAAK0I,QAAQ,OAAgBT,EAAM2M,OACnC,OAAO5U,EACX,IAAIo2B,GAAa,QAASnuB,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KACtE,OAAOo2B,EAAaA,EAAa,IAAMp2B,EAAOA,GAE3Cg2B,EA5FsB,iTClL7Ba,EAA8B,WAC9B,SAASA,EAAaC,GAClBt8B,KAAKs8B,QAAUA,EAmDnB,OAjDAD,EAAax6B,UAAU06B,WAAa,SAAUC,GAE1C,OAAkC,KADlCA,EAAYA,GAAa,IACRtuB,QAAQ,MAAyC,IAA3BsuB,EAAUtuB,QAAQ,MAE7DmuB,EAAax6B,UAAUif,KAAO,SAAU2b,EAAaC,EAAMC,GAEvD,QADkB,IAAdA,IAAwBA,GAAY,GACnCF,GAA+B,KAAhBA,EAApB,CAEA,IAAIG,GAAQ,QAASH,GACjBj3B,EAAOo3B,EAAQH,EAAcA,EAAYj3B,KACzCxF,KAAKu8B,WAAW/2B,KAChBA,EAAOxF,KAAK03B,YAAYlyB,EAAMk3B,IAClC,IAAIjvB,EAAQzN,KAAKs8B,QAAQ92B,GACzB,GAAIiI,IAAUmvB,KAAWA,GAAUnvB,IAAUgvB,GAAehvB,EAAMC,OAAS+uB,IACvE,OAAOhvB,EAEN,GAAImvB,GAASD,EAAW,CACzB,IACIzZ,GADU,QAAOljB,KAAKs8B,SACJhzB,QAAO,SAAU2jB,GAAU,OAAOA,EAAO4P,mBAAmBC,UAAY7P,EAAO4P,mBAAmBC,SAAS5Z,QAAQ1d,MAIzI,OAHI0d,EAAQ9T,OAAS,GACjB,UAAkB,iDAAmD5J,EAAO,gBAAiB0d,EAAQvU,KAAI,SAAUqN,GAAS,OAAOA,EAAMxW,SAEtI0d,EAAQ,MAIvBmZ,EAAax6B,UAAU61B,YAAc,SAAUlyB,EAAMk3B,GACjD,IAAKA,EACD,MAAM,IAAIjqB,MAAM,sCAAwCjN,EAAO,KAKnE,IAJA,IAAIu3B,EAAY/8B,KAAK8gB,KAAK4b,GACtBM,EAAYx3B,EAAKsd,MAAM,KACvBma,EAAaD,EAAU5tB,OACvBiO,EAAI,EAAGyI,EAAUiX,EACd1f,EAAI4f,EAAY5f,IACnB,GAAqB,KAAjB2f,EAAU3f,IAAmB,IAANA,EAA3B,CAIA,GAAqB,MAAjB2f,EAAU3f,GAMd,MALI,IAAKyI,EAAQ1L,OACT,MAAM,IAAI3H,MAAM,SAAWjN,EAAO,0BAA4Bu3B,EAAUv3B,KAAO,KACnFsgB,EAAUA,EAAQ1L,YANlB0L,EAAUiX,EAWlB,IAAIG,EAAUF,EAAUl7B,MAAMub,GAAGpK,KAAK,KACtC,OAAO6S,EAAQtgB,MAAQsgB,EAAQtgB,MAAQ03B,EAAU,IAAM,IAAMA,GAE1Db,EArDsB,oWCW7Bc,EAA6B,WAE7B,SAASA,EAAY5xB,GACjB,OAAO4xB,EAAY37B,OAAO+J,GAAU,IA4FxC,OAlFA4xB,EAAY37B,OAAS,SAAU47B,GAC3BA,EAAYD,EAAYE,aAAaD,GAAa,IAAIA,EAAcA,EACpE,IAAI3vB,GAAQ,SAAQ,QAAQ2vB,EAAWD,EAAYt7B,YAMnD,OALAu7B,EAAUppB,QAAU,WAAc,OAAOvG,GACzCA,EAAMC,KAAO0vB,EACb3vB,EAAMovB,mBAAqB,CACvBC,SAAU,eAAgBrvB,EAAMjI,OAE7BiI,GAaX0vB,EAAYt7B,UAAUqX,GAAK,SAAUokB,GACjC,OAAOt9B,OAASs9B,GAAOt9B,KAAK0N,OAAS4vB,GAAOt9B,KAAKsL,QAAUgyB,GAM/DH,EAAYt7B,UAAUyJ,IAAM,WACxB,KAAKtL,KAAKoa,QAAYpa,KAAKoa,kBAAkBpa,KAAKokB,aAC9C,OAAOpkB,KAAKwF,KAChB,IAAIA,EAAOxF,KAAKoa,OAAO9O,MACvB,OAAO9F,EAAOA,EAAO,IAAMxF,KAAKwF,KAAOxF,KAAKwF,MAOhD23B,EAAYt7B,UAAU+b,KAAO,WACzB,OAAQ5d,KAAKoa,QAAUpa,KAAKoa,OAAOwD,QAAW5d,MAWlDm9B,EAAYt7B,UAAUwxB,WAAa,SAAUzyB,GAGzC,QAFAA,GAAO,QAASA,EAAM,CAAEwe,SAAS,EAAMme,aAAc,QAC/Bne,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOiZ,cAAiB,IAExEjxB,QAAO,QAAOpC,KAAKoO,SACnB9E,QAAO,SAAU0F,GAAS,OAAQpO,EAAK28B,cAAgB38B,EAAK28B,aAAa76B,eAAesM,EAAM3D,QASvG8xB,EAAYt7B,UAAU4xB,UAAY,SAAUpoB,EAAIzK,GAE5C,YADa,IAATA,IAAmBA,EAAO,IACrBZ,KAAKyR,KAAOzR,KAAKyR,IAAIgiB,UAAUpoB,EAAIzK,KACxC,SAAK,QAAOZ,KAAKoO,SAAS,QAAO,KAAM/C,KACtCzK,EAAKwe,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOqZ,UAAUpoB,IAE9D8xB,EAAYt7B,UAAUiT,SAAW,WAC7B,OAAO9U,KAAKsL,OAGhB6xB,EAAYE,aAAe,SAAUD,GACjC,OAAO,QAAWA,KAA+C,IAAjCA,EAA2B,iBAG/DD,EAAYK,mBAAqB,SAAUvjB,GAAO,OAAO,QAAWA,EAAa,UAEjFkjB,EAAYM,QAAU,SAAUxjB,GAAO,OAAO,QAASA,EAAwB,qBACxEkjB,EA/FqB,kPCZ5BO,EAAmC,WACnC,SAASA,EAAkBhpB,EAAQsY,EAAQ+O,EAAS4B,GAChD39B,KAAK0U,OAASA,EACd1U,KAAKgtB,OAASA,EACdhtB,KAAK+7B,QAAUA,EACf/7B,KAAK29B,UAAYA,EACjB39B,KAAK49B,MAAQ,GA4EjB,OA1EAF,EAAkB77B,UAAUqT,QAAU,WAClClV,KAAK49B,MAAQ,IAEjBF,EAAkB77B,UAAU6X,SAAW,SAAU0jB,GAC7C,IAAIQ,EAAQ59B,KAAK49B,MACbnwB,EAAQ,WAAmB2vB,GAC3B53B,EAAOiI,EAAMjI,KACjB,KAAK,QAASA,GACV,MAAM,IAAIiN,MAAM,gCACpB,GAAIzS,KAAKgtB,OAAOtqB,eAAe8C,KAAS,QAAQo4B,EAAMjvB,KAAI,QAAK,SAAUnJ,GACrE,MAAM,IAAIiN,MAAM,UAAYjN,EAAO,wBAGvC,OAFAo4B,EAAMn9B,KAAKgN,GACXzN,KAAK69B,QACEpwB,GAEXiwB,EAAkB77B,UAAUg8B,MAAQ,WAchC,IAbA,IAAI1tB,EAAQnQ,KACRqrB,EAAKrrB,KAAM49B,EAAQvS,EAAGuS,MAAO5Q,EAAS3B,EAAG2B,OAAQ+O,EAAU1Q,EAAG0Q,QAC9D+B,EAAa,GACjBC,EAAU,GACVC,EAAsB,GAClBC,EAAW,SAAUz4B,GAAQ,OAAO2K,EAAM6c,OAAOtqB,eAAe8C,IAAS2K,EAAM6c,OAAOxnB,IACtF04B,EAAkB,WACdJ,EAAW1uB,QACXe,EAAMwtB,UAAU58B,SAAQ,SAAUo9B,GAC9B,OAAOA,EAAS,aAAcL,EAAWnvB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,aAI1EkwB,EAAMxuB,OAAS,GAAG,CACrB,IAAI3B,EAAQmwB,EAAM37B,QACdm8B,EAAS3wB,EAAMjI,KACfc,EAASy1B,EAAQC,MAAMvuB,GACvB4wB,EAAYN,EAAQ7vB,QAAQT,GAChC,GAAInH,EAAJ,CACI,IAAIg4B,EAAgBL,EAASG,GAC7B,GAAIE,GAAiBA,EAAc94B,OAAS44B,EACxC,MAAM,IAAI3rB,MAAM,UAAY2rB,EAAS,wBAEzC,IAAIG,EAAsBN,EAASG,EAAS,OACxCG,GAEAv+B,KAAK0U,OAAOkC,cAAc4nB,WAAWD,GAEzCvR,EAAOoR,GAAU3wB,EACjBzN,KAAKy+B,YAAYhxB,GACb4wB,GAAa,GACbN,EAAQve,OAAO6e,EAAW,GAC9BP,EAAWr9B,KAAKgN,OAdpB,CAiBA,IAAIixB,EAAOV,EAAoBI,GAE/B,GADAJ,EAAoBI,GAAUR,EAAMxuB,OAChCivB,GAAa,GAAKK,IAASd,EAAMxuB,OAKjC,OAFAwuB,EAAMn9B,KAAKgN,GACXywB,IACOlR,EAEFqR,EAAY,GACjBN,EAAQt9B,KAAKgN,GAEjBmwB,EAAMn9B,KAAKgN,IAGf,OADAywB,IACOlR,GAEX0Q,EAAkB77B,UAAU48B,YAAc,SAAUhxB,GAChD,IAAIA,EAAMkxB,UAAalxB,EAAMgE,IAA7B,CAEA,IAAImtB,EAAW5+B,KAAK0U,OAAOuC,WAAW0F,MACtCiiB,EAASriB,KAAKqiB,EAASC,eAAer9B,OAAOiM,MAE1CiwB,EAlF2B,sbCQlCoB,EAA+B,WAE/B,SAASA,EAAcpqB,GACnB1U,KAAK0U,OAASA,EACd1U,KAAKgtB,OAAS,GAEdhtB,KAAK29B,UAAY,GACjB39B,KAAKy7B,QAAU,IAAI,IAAaz7B,KAAKgtB,QACrChtB,KAAK+7B,QAAU,IAAI,IAAa/7B,KAAKy7B,QAAS/mB,EAAOE,mBACrD5U,KAAK++B,WAAa,IAAI,IAAkBrqB,EAAQ1U,KAAKgtB,OAAQhtB,KAAK+7B,QAAS/7B,KAAK29B,WAChF39B,KAAKg/B,gBAmJT,OAhJAF,EAAcj9B,UAAUm9B,cAAgB,YAUvBh/B,KAAKi/B,MAAQj/B,KAAK++B,WAAWrlB,SATvB,CACflU,KAAM,GACNiM,IAAK,IACL+I,MAAO,KACPpM,OAAQ,CACJ,IAAK,CAAE5J,MAAO,KAAM0K,KAAM,OAAQye,SAAS,IAE/CgR,UAAU,KAGRvE,UAAY,MAGtB0E,EAAcj9B,UAAUqT,QAAU,WAC9B,IAAI/E,EAAQnQ,KACZA,KAAK++B,WAAW7pB,UAChBlV,KAAK29B,UAAY,GACjB39B,KAAK0Q,MAAM3P,SAAQ,SAAU0M,GAAS,OAAO0C,EAAMO,IAAIjD,IAAU0C,EAAMquB,WAAW/wB,OAgCtFqxB,EAAcj9B,UAAUq9B,gBAAkB,SAAUf,GAEhD,OADAn+B,KAAK29B,UAAUl9B,KAAK09B,GACb,YACH,QAAWn+B,KAAK29B,UAAhB,CAA2BQ,IAC7B76B,KAAKtD,OAWX8+B,EAAcj9B,UAAU+b,KAAO,WAC3B,OAAO5d,KAAKi/B,OAchBH,EAAcj9B,UAAU6X,SAAW,SAAUylB,GACzC,OAAOn/B,KAAK++B,WAAWrlB,SAASylB,IAGpCL,EAAcj9B,UAAUu9B,gBAAkB,SAAU3xB,GAChD,IAAI0C,EAAQnQ,KACRyb,EAAMzb,KAAK0Q,MAAM/B,KAAI,SAAUyO,GAAK,OAAOA,EAAEpJ,aAC7CqrB,EAAc,SAAUrS,GACxB,IAAIsS,EAAY7jB,EAAInS,QAAO,SAAU8T,GAAK,OAAqC,IAA9B4P,EAAO9e,QAAQkP,EAAEhD,WAClE,OAA4B,IAArBklB,EAAUlwB,OAAekwB,EAAYA,EAAUl9B,OAAOi9B,EAAYC,KAEzE12B,EAAWy2B,EAAY,CAAC5xB,IACxB8xB,EAAe,CAAC9xB,GAAOrL,OAAOwG,GAAUoX,UAW5C,OAVAuf,EAAax+B,SAAQ,SAAUksB,GAC3B,IAAI2R,EAAWzuB,EAAMuE,OAAOuC,WAAW0F,MAEvCiiB,EACKjiB,QACArT,QAAO,QAAO,QAAS2jB,IACvBlsB,SAAQ,SAAUwb,GAAQ,OAAOqiB,EAASY,WAAWjjB,aAEnDpM,EAAM6c,OAAOC,EAAOznB,SAExB+5B,GAWXT,EAAcj9B,UAAU28B,WAAa,SAAU/B,GAC3C,IAAIxP,EAASjtB,KAAK0Q,IAAI+rB,GACtB,IAAKxP,EACD,MAAM,IAAIxa,MAAM,sCAAwCgqB,GAC5D,IAAIgD,EAAqBz/B,KAAKo/B,gBAAgBnS,EAAOjZ,WAIrD,OAHAhU,KAAK29B,UAAU58B,SAAQ,SAAUo9B,GAC7B,OAAOA,EAAS,eAAgBsB,EAAmB9wB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,YAE5E+xB,GAEXX,EAAcj9B,UAAU6O,IAAM,SAAU+rB,EAAaC,GACjD,IAAIvsB,EAAQnQ,KACZ,GAAyB,IAArBgC,UAAUoN,OACV,OAAOmE,OAAOC,KAAKxT,KAAKgtB,QAAQre,KAAI,SAAUnJ,GAAQ,OAAO2K,EAAM6c,OAAOxnB,GAAMkI,QACpF,IAAIgyB,EAAQ1/B,KAAKy7B,QAAQ3a,KAAK2b,EAAaC,GAC3C,OAAQgD,GAASA,EAAMhyB,MAAS,MAYpCoxB,EAAcj9B,UAAUiV,UAAY,SAAU6oB,EAAUC,GACpD,OAAO5/B,KAAK+7B,QAAQA,QAAQ4D,EAAUC,IAEnCd,EA7JuB,2SCsB9Be,EAA6B,WAe7B,SAASA,EAAYC,EAAgBC,EAAaC,EAASC,GACvDjgC,KAAK8/B,eAAiBA,EACtB9/B,KAAK+/B,YAAcA,EACnB//B,KAAK+/B,YAAcA,EACnB//B,KAAKggC,SAAU,QAAO,GAAIA,GAAW,IACrChgC,KAAKigC,UAAW,QAAO,GAAIA,GAAY,IACvCjgC,KAAKkgC,YAAcJ,EAAerE,QAAQ3a,KAAKif,EAAa//B,KAAKigC,SAASE,UAsF9E,OAnFAN,EAAYh+B,UAAU2D,KAAO,WACzB,OAAQxF,KAAKkgC,aAAelgC,KAAKkgC,YAAY16B,MAASxF,KAAK+/B,aAG/DF,EAAYh+B,UAAU4qB,WAAa,WAC/B,OAAOzsB,KAAK+/B,aAGhBF,EAAYh+B,UAAUuM,OAAS,WAC3B,OAAOpO,KAAKggC,SAGhBH,EAAYh+B,UAAU4W,OAAS,WAC3B,OAAOzY,KAAKkgC,aAGhBL,EAAYh+B,UAAU4L,MAAQ,WAC1B,OAAOzN,KAAKkgC,aAAelgC,KAAKkgC,YAAYxyB,MAGhDmyB,EAAYh+B,UAAU1B,QAAU,WAC5B,OAAOH,KAAKigC,UAGhBJ,EAAYh+B,UAAUu+B,OAAS,WAC3B,SAAUpgC,KAAKkgC,cAAelgC,KAAKkgC,YAAYxyB,OAGnDmyB,EAAYh+B,UAAUw+B,MAAQ,WAC1B,OAAQrgC,KAAKqF,SAGjBw6B,EAAYh+B,UAAUwD,MAAQ,WAC1B,IAAIq3B,EAAO18B,KAAKG,UAAUggC,SAC1B,IAAKngC,KAAKkgC,aAAiBxD,EAAM,CAC7B,IAAIF,EAAYE,EAAKl3B,KAAOk3B,EAAKl3B,KAAOk3B,EACxC,MAAO,sBAAwB18B,KAAKwF,OAAS,iBAAmBg3B,EAAY,IAEhF,OAAKx8B,KAAKkgC,YAELlgC,KAAKkgC,YAAYxyB,UAAtB,EACW,UAAY1N,KAAKwF,OAAS,8BAF1B,kBAAoBxF,KAAKwF,OAAS,KAIjDq6B,EAAYh+B,UAAUiT,SAAW,WAC7B,MAAO,IAAM9U,KAAKwF,OAAS,KAAM,QAAUxF,KAAKoO,WAQpDyxB,EAAYh+B,UAAUy+B,UAAY,SAAU7yB,GACxC,OAAO,IAAIoyB,EAAY7/B,KAAK8/B,eAAgBryB,EAAOzN,KAAKggC,QAAShgC,KAAKigC,WAS1EJ,EAAYh+B,UAAU0+B,WAAa,SAAUnyB,EAAQ2G,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAI8d,EAAY9d,EAAU3G,GAAS,QAAO,GAAIpO,KAAKggC,QAAS5xB,GAC5D,OAAO,IAAIyxB,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAalN,EAAW7yB,KAAKigC,WASlFJ,EAAYh+B,UAAU2+B,YAAc,SAAUrgC,EAAS4U,QACnC,IAAZA,IAAsBA,GAAU,GACpC,IAAI0rB,EAAU1rB,EAAU5U,GAAU,QAAO,GAAIH,KAAKigC,SAAU9/B,GAC5D,OAAO,IAAI0/B,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAa//B,KAAKggC,QAASS,IAGhFZ,EAAYa,MAAQ,SAAUzmB,GAC1B,OAAOA,GAAOA,EAAIxM,SAAU,QAASwM,EAAIxM,SAAW,QAASwM,EAAIxM,SAAU,QAASwM,EAAIxM,MAAMjI,QAE3Fq6B,EA3GqB,iYCf5Bc,EAA6B,WAC7B,SAASA,EAAY1U,GACjBjsB,KAAKisB,WAAaA,EA2EtB,OAzEA0U,EAAY9+B,UAAU++B,mBAAqB,SAAUC,GACjD,IAAI1wB,EAAQnQ,KAEZ,OADmBA,KAAKisB,WAAWvX,OAAOoY,kBACtB9iB,WACf82B,WAAWD,GACXlyB,KAAI,SAAUO,GAAQ,OAAOiB,EAAM4wB,WAAW7xB,MAC9CN,OAAO,KAAS,IAChBtF,OAAO,OAWhBq3B,EAAY9+B,UAAUk/B,WAAa,SAAUC,GACzC,IAAI/U,EAAajsB,KAAKisB,WAClBvd,EAAcud,EAAWvd,cAEzBuyB,EAAgBjhC,KAAKkhC,iBAAiBF,EAAUtyB,EAAaud,GACjE,IAAKgV,EACD,MAAO,GACX,IA4DWE,EA5DPC,EAAkB,CAClBnV,WAAYA,EACZnG,QAASmG,EAAW9rB,UAAU2lB,SAkBlC,OAAOmb,EACFtyB,KAjBqB,SAAUkF,GAMhC,OAJcA,EAAKqP,QAAQxU,EAAaud,GAEZ+U,EAASK,kBAAkB77B,MAElCmJ,KAAI,SAAUJ,GAC/B,IAAI0xB,GAAW,QAAO,CAClB38B,KAAMuQ,EAAKvQ,KACXg+B,UAAW,CAAEN,SAAUA,EAASx7B,KAAMqL,QAAStC,IAChD6yB,GACC3zB,EAAQuzB,EAASK,kBAAkBv+B,QAAU,UAA4ByL,EAAKd,MAAMC,KAAO,KAC3F6zB,EAAiB,IAAI,IAAetV,EAAYxe,EAAOoG,EAAMosB,GACjE,MAAO,CAAEpsB,KAAMA,EAAMtF,KAAMA,EAAMgzB,eAAgBA,SAKpD3yB,OAAO,KAAS,IAChB4c,MAqCM2V,EArCSH,EAASQ,iBAsCR,IAArBL,IAA+BA,GAAmB,GAC/C,SAA+B1O,EAAGlV,GACrC,IAAIkkB,EAASN,GAAoB,EAAI,EACjCO,GAAcjP,EAAElkB,KAAKd,MAAMtF,KAAKiH,OAASmO,EAAEhP,KAAKd,MAAMtF,KAAKiH,QAAUqyB,EACzE,OAAsB,IAAfC,EAAmBA,EAAankB,EAAE1J,KAAKzM,SAAWqrB,EAAE5e,KAAKzM,YAzC3DuH,KAAI,SAAU8E,GAAS,OAAOA,EAAM8tB,mBAa7CZ,EAAY9+B,UAAUq/B,iBAAmB,SAAUF,EAAUtyB,EAAaud,GACtE,IAAI0V,EAAWX,EAASY,YAAc,WAElC/6B,EAAe7G,KAAKisB,WAAWvX,OAAOoY,kBAE1C,OADiB6U,EAAW,CAAC96B,GAAgB,CAAC7G,KAAKisB,WAAYplB,IAE1D8H,KAAI,SAAUkzB,GAAO,OAAOA,EAAIC,SAASd,EAASx7B,SAClD8D,QAAO,QAAgB,KAAS,uBAAyB03B,EAASx7B,OAClEoJ,OAAO,KAAS,IAChBtF,QAAO,SAAUuK,GAAQ,OAAOA,EAAKqP,QAAQxU,EAAaud,OAE5D0U,EA7EqB,+PCDzB,SAASoB,EAAWt0B,EAAOu0B,EAAW/V,GACzC,IAAIgW,GAAU,QAASD,GAAa,CAACA,GAAaA,EAYlD,UADe,QAAWC,GAAWA,EAVrC,SAAoBhV,GAEhB,IADA,IAAIiV,EAAcD,EACT5kB,EAAI,EAAGA,EAAI6kB,EAAY9yB,OAAQiO,IAAK,CACzC,IAAIwF,EAAO,IAAI,KAAKqf,EAAY7kB,IAChC,GAAKwF,GAAQA,EAAKK,QAAQ+J,EAAOznB,QAAYqd,GAAQqf,EAAY7kB,KAAO4P,EAAOznB,KAC3E,OAAO,EAGf,OAAO,IAGMiI,EAAOwe,GAK5B,IAAIkW,EAAgC,WAChC,SAASA,EAAeC,EAASC,EAAW7hC,EAAU8hC,EAAeC,EAAwBpiC,QACzE,IAAZA,IAAsBA,EAAU,IACpCH,KAAKoiC,QAAUA,EACfpiC,KAAKqiC,UAAYA,EACjBriC,KAAKQ,SAAWA,EAChBR,KAAKsiC,cAAgBA,EACrBtiC,KAAKuiC,uBAAyBA,EAC9BviC,KAAKwiC,YAAc,EACnBxiC,KAAKyiC,eAAgB,EACrBziC,KAAKoH,SAAWjH,EAAQiH,UAAY,EACpCpH,KAAKsD,KAAOnD,EAAQmD,MAAQ,KAC5BtD,KAAK0iC,YAAcviC,EAAQuiC,YAqF/B,OApEAP,EAAetgC,UAAU8gC,eAAiB,SAAUC,EAAOZ,EAAW/V,GAClE,IAAkB,IAAd+V,EACA,OAAOY,EACX,IAAIpN,EAAWoN,EAAMt5B,QAAO,SAAUiF,GAAQ,OAAOwzB,EAAWxzB,EAAKd,MAAOu0B,EAAW/V,MACvF,OAAOuJ,EAASpmB,OAASomB,EAAW,MAgBxC2M,EAAetgC,UAAUghC,yBAA2B,WAChD,OAAO,QAAO7iC,KAAKoiC,QAAQp4B,WAAW84B,iBAAiB,WAAc,OAAO,MAiBhFX,EAAetgC,UAAUkhC,kBAAoB,SAAUr0B,EAAaud,GAChE,IAAI9b,EAAQnQ,KACR8P,GAAW,QAAO9P,KAAK6iC,2BAA4B7iC,KAAKsiC,eAE5D,OADY,QAAOtiC,KAAKoiC,QAAQp4B,WAAW84B,iBAC9Bl0B,QAAO,SAAUo0B,EAAIC,GAG9B,IAAIC,EAAcD,EAASngC,QAAU,UACjCqF,EAAOuG,EAAYu0B,EAASz9B,OAAS,GACrCo9B,EAAQM,EAAc/6B,EAAO,EAAC,QAAKA,IAEvC,OADA66B,EAAGC,EAASz9B,MAAQ2K,EAAMwyB,eAAeC,EAAO9yB,EAASmzB,EAASz9B,MAAOymB,GAClE+W,IACR,KAQPb,EAAetgC,UAAUqhB,QAAU,SAAUxU,EAAaud,GACtD,IAAI/I,EAAUljB,KAAK+iC,kBAAkBr0B,EAAaud,GAGlD,OADiB,QAAO/I,GAASigB,MAAM,MACnBjgB,EAAU,MAElCif,EAAetgC,UAAU28B,WAAa,WAClCx+B,KAAKuiC,uBAAuBviC,MAC5BA,KAAKyiC,eAAgB,GAElBN,EAjGwB,GAqG5B,SAASiB,EAAUtP,EAAUhH,EAAmBuV,GAEnD,IACIgB,GADoBvP,EAASwP,iBAAmBxP,EAASwP,kBAAoB,IACnDjB,EAAU78B,MAAQ,GAC5C+9B,GAAe,QAAWF,GAG9B,SAASG,EAAmBC,EAAajjC,EAAUL,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAAI6pB,EAAiB,IAAImY,EAAerV,EAAmBuV,EAAW7hC,EAAUijC,EAAaF,EAAcpjC,GAE3G,OADAkjC,EAAM5iC,KAAKupB,GACJA,EAAewU,WAAWl7B,KAAK0mB,GAE1C,OAPA8J,EAASuO,EAAU78B,MAAQg+B,EAOpBA,2FCpJX,IAAIE,EAQAC,2BAPJ,SAAWD,GACPA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA2B,MAAI,GAAK,QAL5D,CAMGA,IAAwBA,EAAsB,KAEjD,SAAWC,GACPA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA2B,MAAI,GAAK,QAF5D,CAGGA,IAAwBA,EAAsB,8HCP7CC,2LACJ,SAAWA,GAOPA,EAAWA,EAAuB,WAAI,GAAK,aAM3CA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAoB,QAAI,GAAK,UAWxCA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAkB,MAAI,GAAK,QApC1C,CAqCGA,IAAeA,EAAa,KAG/B,IAAIv4B,EAAK,EACLw4B,EAA2B,WAC3B,SAASA,EAAU30B,EAAM40B,EAASC,GAE9B/jC,KAAKmb,IAAM9P,IACXrL,KAAKkP,KAAOA,EACZlP,KAAK8jC,QAAUA,EACf9jC,KAAK+jC,OAASA,EA4DlB,OAzDAF,EAAUG,mBAAqB,SAAU/pB,GACrC,OAAOA,GAA2B,mBAAbA,EAAIlP,OAAuB,IAAAmO,IAAG2qB,EAAH,CAAc5pB,EAAIyN,uBAGtEmc,EAAUI,WAAa,SAAUF,EAAQ5jC,GACrC,IACI+jC,EAAY,IAAIL,EAAUD,EAAWO,WAD3B,+DACgDJ,GAI9D,OAHI5jC,GAAWA,EAAQikC,aACnBF,EAAUE,YAAa,GAEpBF,GAGXL,EAAUO,WAAa,SAAUL,GAC7B,OAAOF,EAAUI,WAAWF,EAAQ,CAAEK,YAAY,KAGtDP,EAAUQ,QAAU,SAAUN,GAE1B,OAAO,IAAIF,EAAUD,EAAWU,QADlB,6BACoCP,IAGtDF,EAAUzK,QAAU,SAAU2K,GAE1B,OAAO,IAAIF,EAAUD,EAAWW,QADlB,6BACoCR,IAGtDF,EAAUW,QAAU,SAAUT,GAE1B,OAAO,IAAIF,EAAUD,EAAWa,QADlB,kCACoCV,IAGtDF,EAAUa,QAAU,SAAUX,GAE1B,OAAO,IAAIF,EAAUD,EAAWe,MADlB,yBACkCZ,IAWpDF,EAAUe,UAAY,SAAUb,GAC5B,OAAO,IAAA7qB,IAAG2qB,EAAH,CAAcE,GAAUA,EAASF,EAAUa,QAAQX,IAE9DF,EAAUhiC,UAAUiT,SAAW,WAC3B,IAA6BqkB,EACzB4K,GADyB5K,EACHn5B,KAAK+jC,SADgB5K,EAAErkB,WAAavB,OAAO1R,UAAUiT,SAAWqkB,EAAErkB,YAAa,QAAUqkB,GAE/G9N,EAAKrrB,KACT,MAAO,6BADcqrB,EAAGlQ,IACoB,UADRkQ,EAAGnc,KACwB,cADRmc,EAAGyY,QAC+B,aAAeC,EAAS,KAErHF,EAAUhiC,UAAUgjC,UAAY,WAC5B,OAAO,SAAO,QAAgB7kC,MAAO,CAAE0nB,qBAAsB1nB,QAE1D6jC,EAlEmB,oMC1C1BiB,EAEA,SAA6Bt/B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QACpG,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5CllC,KAAKwF,KAAOA,EACZxF,KAAK4hC,UAAYA,EACjB5hC,KAAK+kC,UAAYA,EACjB/kC,KAAKqhC,kBAAoBA,EACzBrhC,KAAKwhC,YAAcA,EACnBxhC,KAAKglC,iBAAmBA,EACxBhlC,KAAKilC,gBAAkBA,EACvBjlC,KAAKklC,YAAcA,gsBCVvBC,EAAiB,CACjBrf,QAAS,KACTmG,WAAY,KACZqV,UAAW,GACXh+B,KAAM,MAEN8hC,EAAgC,WAChC,SAASA,EAAenZ,EAAYoZ,EAAcrb,EAAgB7pB,GAC9D,IAAIgQ,EAAQnQ,KACZA,KAAKisB,WAAaA,EAClBjsB,KAAKqlC,aAAeA,EACpBrlC,KAAKgqB,eAAiBA,EACtBhqB,KAAKG,QAAUA,EACfH,KAAKslC,aAAe,WAAc,OAAOn1B,EAAMjB,KAAK0yB,YAAc,UAA4BzxB,EAAMhQ,QAAQ8rB,WAAWsZ,YACvHvlC,KAAKG,SAAU,QAASA,EAASglC,GACjCnlC,KAAKkP,KAAO8a,EAAeqY,UAyK/B,OArJA+C,EAAenJ,MAAQ,SAAUoH,EAAOmC,GAGpC,OAAOnC,EAAMz0B,QADU,SAAU8vB,EAAM+G,GAAY,OAAO/G,EAAK3zB,MAAK,WAAc,OAAO06B,EAASC,kBAC5DF,GAAW,gBAarDJ,EAAeO,YAAc,SAAUtC,EAAOuC,GAC1C,IAAK,IAAI32B,EAAM,EAAGA,EAAMo0B,EAAMj0B,OAAQH,IAAO,CACzC,IAAIib,EAAamZ,EAAMp0B,GAAKy2B,aAC5B,IAAI,QAAUxb,GAAa,CACvB,IAAI2b,EAAiBxC,EAAMvhC,MAAMmN,EAAM,GACvC,OAAOm2B,EAAenJ,MAAM4J,EAAgB3b,GAAYnf,KAAK66B,IAGrE,OAAOA,KAKXR,EAAeU,YAAc,SAAUzC,GACnCA,EAAMtiC,SAAQ,SAAU8S,GAAQ,OAAOA,EAAK6xB,iBAEhDN,EAAevjC,UAAUkkC,SAAW,SAAU7Y,GAC1CltB,KAAKisB,WAAWvX,OAAOmC,aAAamvB,qBAApChmC,CAA0DktB,IAE9DkY,EAAevjC,UAAU6jC,WAAa,WAClC,IAAIv1B,EAAQnQ,KACR6T,EAAO7T,KAAKgqB,eAChB,IAAInW,EAAK4uB,cAAT,CAEA,IAAIwD,EAAajmC,KAAKkmC,yBACtB,GAAID,EACA,OAAOA,EACX,IAAI9lC,EAAUH,KAAKG,QACnB,yBAA0BH,KAAMA,KAAKisB,WAAY9rB,GACjD,IAEIgmC,EAAc,SAAUjZ,GAAO,OAAOrZ,EAAKwuB,UAAU4C,gBAAgB90B,EAA/B0D,CAAsCqZ,IAC5EkZ,EAAe,SAAU9/B,GAAU,OAAOuN,EAAKwuB,UAAU2C,iBAAiB70B,EAAhC0D,CAAuCvN,IACrF,IACI,IAAIA,EALkCuN,EAAKrT,SAASuB,KAAK5B,EAAQmD,KAAM6M,EAAM8b,WAAY9b,EAAMk1B,cAM/F,OAAKrlC,KAAKkP,KAAKg2B,cAAe,QAAU5+B,GAC7BA,EAAO+b,OANH,SAAU6K,GAAO,OAAO,cAAoBA,GAAK2X,eAM1B95B,KAAKq7B,EAAcD,GAG9CC,EAAa9/B,GAG5B,MAAO4mB,GAEH,OAAOiZ,EAAY,cAAoBjZ,IAE3C,QACQrZ,EAAK6uB,eAAiB7uB,EAAK2uB,aAAe3uB,EAAK6uB,aAC/C7uB,EAAK2qB,gBAajB4G,EAAevjC,UAAUwkC,iBAAmB,SAAU//B,GAClD,IAAI6J,EAAQnQ,KAEZ,OADiBA,KAAKkmC,4BAIlB,QAAU5/B,GAEHA,EAAOyE,MAAK,SAAU/G,GAAO,OAAOmM,EAAMk2B,iBAAiBriC,OAEtE,qBAAsBsC,EAAQtG,KAAKisB,WAAYjsB,KAAKG,UAErC,IAAXmG,EAEO,YAAkB,2BAA2Bu+B,aAEpC,IAAA3rB,IAAG,IAEnBotB,CAAchgC,GAEP,eAAqBA,GAAQu+B,iBAFxC,KASJO,EAAevjC,UAAUqkC,uBAAyB,WAC9C,IAAIxxB,EAAS1U,KAAKisB,WAAWvX,OAE7B,OAAIA,EAAOqkB,UACA,YAAkB,sBAAwBrkB,EAAOyG,IAAM,gCAAgC0pB,YAE9F7kC,KAAKisB,WAAWsa,SACT,cAAoB1B,YAI3B7kC,KAAKslC,eAEE,eAAqBtlC,KAAKG,QAAQ2lB,WAAW+e,iBAFxD,GAKJO,EAAevjC,UAAUiT,SAAW,WAChC,IAAe3U,EAANH,KAAmBG,QAAS6pB,EAA5BhqB,KAAgDgqB,eACrDzpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAWwkB,EAAexpB,UAC/M,OAAOD,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,IAMlE4/B,EAAeoB,cAAgB,SAAU3yB,GAAQ,OAAO,SAAUvN,GAC9D,OAAOuN,EAAKwyB,iBAAiB//B,KAMjC8+B,EAAeqB,oBAAsB,SAAU5yB,GAAQ,OAAO,SAAUvN,IACpE,QAAUA,IAAWA,EAAO+b,OAAM,SAAU6K,GAAO,OAAOrZ,EAAKkyB,SAAS,cAAoB7Y,SAOhGkY,EAAesB,UAAY,SAAU7yB,GAAQ,OAAO,SAAUxO,GAAS,OAAOwO,EAAKkyB,SAAS1gC,KAC5F+/B,EAAeuB,aAAe,SAAU9yB,GAAQ,OAAO,SAAUxO,GAAS,OAAO,QAAgBA,KACjG+/B,EAAewB,YAAc,SAAU/yB,GAAQ,OAAO,SAAUxO,GAC5D,MAAMA,IAEH+/B,EAlLwB,qgBCXnC,SAASyB,EAAmBj3B,GACxBA,EAAMk3B,cAAc,cAAoB,IAAUl3B,EAAM8E,QAAS,IACjE9E,EAAMk3B,cAAc,cAAoB,IAAYl3B,GAAQ,IAC5DA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,GAAQ,IAChEA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,EAAMxB,UAAW,IACzEwB,EAAMuc,WAAWprB,SAAQ,SAAU0M,GAC/BmC,EAAMk3B,cAAc,cAAoB,UAAWr5B,GAAQA,MAG5D,IAGHs5B,EAAoB,CAAC,eAAgB,KACrCC,GAAe,QAAQD,GAKhBE,EAAqB,SAAUr3B,GACtC,IAAIgzB,GAAQ,QAAOhzB,EAAMlB,eAAeE,OAAO,KAAS,IAAIA,OAAO,KAAO,IAEtEs4B,EAA4B,SAAU3pB,GACtC,OAAOypB,EAAazpB,EAAEgE,OAAS,cAAoBhE,EAAEgE,MAAO,MAAQhE,GAExEqlB,EAAM7hC,SAAQ,SAAUwN,GACpBA,EAAKwJ,YAAcxJ,EAAKwJ,YAAYpJ,IAAIu4B,+MCnB5CC,EAAiB,SAAUv3B,GAC3B,IAAIw3B,EAAWx3B,EAAMuf,KAAKkY,WAC1B,GAAKD,EAAL,CAEA,IAAI3uB,EAAS7I,EAAM8E,OAAOmC,aAW1B,OAAI,QAAWuwB,GACJ,YAAiBA,EAASx3B,IAAQ7E,KAAKq7B,GAE3CA,EAAagB,GAbpB,SAAShB,EAAa9/B,GAClB,GAAKA,EAEL,OAAIA,aAAkB,IACXA,GACP,QAASA,GACFmS,EAAOpS,OAAOC,EAAQsJ,EAAMxB,SAAUwB,EAAMzP,WACnDmG,EAAc,OAAKA,EAAe,OAC3BmS,EAAOpS,OAAOC,EAAc,OAAKsJ,EAAMuf,KAAM7oB,EAAe,QAAKsJ,EAAMxB,SAAUwB,EAAMzP,gBADlG,IChBR,SAASmnC,EAAwB3zB,GAC7B,OAAO,SAAUsY,EAAYxe,GAGzB,OAAO85B,EAFM95B,EAAMuG,UACCL,IACNsY,EAAYxe,IAYlC,IAAI+5B,EAAaF,EAAwB,UAarCG,EAAeH,EAAwB,YAavCI,EAAcJ,EAAwB,2MC7C/BK,EAAwB,IAU/BC,EAAmB,SAAUh4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,QAAS9nB,GAAO7E,KAAK,OAcnF88B,EAAmB,SAAUj4B,EAAOnC,GACpC,OAAO,IAAI,IAAemC,EAAMlB,cAAcygB,IAAIpb,WAAWtG,EAAMuG,WAAW0jB,YAAY,OAAQ9nB,GAAO7E,KAAK,OAe9G+8B,EAAmB,SAAUl4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,OAAQ9nB,GAAO7E,KAAK,OCnClFg9B,EAAoB,SAAU9b,GAC9B,IAAIllB,EAAK,OACLihC,EAAgB/b,EAAWzR,MAAM,YACrC,GAAKwtB,EAAc54B,OAEnB,OAAOrI,EAAG0U,IAAIusB,EAAcr5B,KAAI,SAAUmL,GAAQ,OAAO/S,EAAGkJ,KAAK6J,EAAKuB,YAAatQ,KAAK,OAexFk9B,EAAgB,SAAUhc,GAC1B,IAAI+b,EAAgB/b,EAAWzR,MAAM,YACjC0tB,EAAejc,EAAWzR,MAAM,WACpC,GAAKwtB,EAAc54B,QAAW84B,EAAa94B,OAA3C,CAEA,IAAItI,EAAQmlB,EAAWvX,OAAOqC,YAC9BmxB,EAAannC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMshC,qBAAqBD,MACvEH,EAAcjnC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMuhC,mBAAmBF,MACtErhC,EAAM8lB,SCzBN0b,EAAoB,SAAU14B,GAC9B,IAAI0I,EAAU1I,EAAM8E,OAAO4D,QAOvBiwB,EAAyB,WAErBjwB,EAAQ2T,aAAerc,IACvB0I,EAAQ2T,WAAa,OAE7Brc,EAAM7B,UAAU,IAXW,WACvBuK,EAAQ0T,sBAAsBxG,QAAQ5V,GACtC0I,EAAQwa,SAAWljB,EAAMmjB,MACzBza,EAAQwN,QAAUxN,EAAQwa,SAASplB,MACnC,QAAKkC,EAAMxB,SAAUkK,EAAQlK,UAOS,CAAEhH,SAAU,MACtDwI,EAAMnM,QAAQsH,KAAKw9B,EAAwBA,ICtB3CC,EAAY,SAAUvc,GACtB,IAAI9rB,EAAU8rB,EAAW9rB,UACrBsY,EAASwT,EAAWvX,OAAOmC,aAC3B6B,EAAauT,EAAWvX,OAAOyH,UAKnC,GAAuB,QAAnBhc,EAAQ4e,QAAoB5e,EAAQ0V,UAAY4C,EAAOqa,SAASsH,UAAW,CAC3E,IAAIqO,EAAa,CAAE1zB,QAA8B,YAArB5U,EAAQ0V,UACpC6C,EAAWjY,KAAKgY,EAAOqa,SAASsH,UAAU3oB,IAAKgH,EAAOrK,OAAQq6B,GAElE/vB,EAAW0D,QAAO,kWCPtB,SAASssB,EAAY94B,GACjB,IAAI+4B,EAAgB/4B,EAAMg5B,iBAC1B,GAAKD,EAAL,CAEAtgC,EAAA,0BAA6BuH,GAC7B,IAAIi5B,EAAUj5B,EAAM8E,OAAO4D,QAAQ2T,WAOnC,MAHsB,kBAAlB0c,GAAqCE,GACrCA,EAAQC,QAEL,cAAoBjE,aCf/B,SAASkE,EAAsBn5B,GAC3B,IAAKA,EAAMywB,QACP,MAAM,IAAI5tB,MAAM7C,EAAMvK,QAAQyP,YAG/B,ICaIk0B,EAAmB,CAC1BnzB,UAAU,EACVsqB,SAAU,KACV/gB,SAAS,EACT6pB,QAAQ,EACRC,QAAQ,EACRC,WAAW,EACXC,OAAQ,GACRtjB,QAAS,WAAc,OAAO,MAC9B/G,OAAQ,WAaRsqB,EAAmC,WAEnC,SAASA,EAAkBC,GAEvBtpC,KAAKupC,iBAAmB,EAExBvpC,KAAKwpC,YAAc,GAEnBxpC,KAAKsjC,iBAAmB,GAExBtjC,KAAKypC,eAAiB,GACtBzpC,KAAKspC,QAAUA,EACftpC,KAAK8G,MAAQwiC,EAAQvyB,YACrB/W,KAAK0pC,mBAAqB,GAC1B1pC,KAAKgK,YAAc,SAAqB,QAAIhK,MAAO,IAAI,QAAIA,MAAO,CAC9D,kBACA,eACA,gBACA,aACA,aAEJA,KAAK2pC,mBACL3pC,KAAK4pC,oBACL5pC,KAAK6pC,+BACLP,EAAQhxB,QAAQ0T,sBAAsBzG,QAAQ0hB,GAuLlD,OA9JAoC,EAAkBxnC,UAAUioC,SAAW,SAAUh6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkO,SAAW,SAAUD,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkoC,QAAU,SAAUj6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUmoC,OAAS,SAAUl6B,EAAUtP,EAAUL,KAInEkpC,EAAkBxnC,UAAUooC,SAAW,SAAUn6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUqoC,QAAU,SAAUp6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUsoC,SAAW,SAAUr6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkM,UAAY,SAAU+B,EAAUtP,EAAUL,KAItEkpC,EAAkBxnC,UAAUuoC,QAAU,SAAUt6B,EAAUtP,EAAUL,KAOpEkpC,EAAkBxnC,UAAUqT,QAAU,SAAUR,IAC5C,QAAO1U,KAAKsjC,kBAAkBviC,SAAQ,SAAUspC,GAC5C,OAAOA,EAAWtpC,SAAQ,SAAU8S,GAChCA,EAAK4uB,eAAgB,GACrB,QAAW4H,EAAYx2B,UAenCw1B,EAAkBxnC,UAAUL,OAAS,SAAUyyB,EAAUzH,GACrD,OAAO,IAAI,IAAWyH,EAAUzH,EAAaxsB,KAAKspC,UAGtDD,EAAkBxnC,UAAU+nC,kBAAoB,WAC5C,IAAIU,EAAQ,IACRC,EAAK,IACLC,EAAQxqC,KAAKypC,eACbgB,GAAc,EACdC,GAAc,EAClB1qC,KAAK2qC,aAAa,WAAYL,EAAMM,OAAQ,EAAGJ,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG3D,YAAa8D,GAC9G1qC,KAAK2qC,aAAa,WAAYL,EAAMO,OAAQ,EAAGL,EAAMrb,IACrDnvB,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,EAAGN,EAAMrb,IACjDnvB,KAAK2qC,aAAa,SAAUL,EAAMQ,IAAK,IAAKN,EAAMv8B,SALV,GAMxCjO,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrV,UACpDn1B,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,IAAKN,EAAMre,UACnDnsB,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrb,IACpDnvB,KAAK2qC,aAAa,YAAaL,EAAMS,QAAS,EAAGP,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,GAC9G1qC,KAAK2qC,aAAa,UAAWL,EAAM3F,MAAO,EAAG6F,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,IAG9GrB,EAAkBxnC,UAAU8nC,iBAAmB,WAC3C,IAAIqB,EAAQ,UAA2BrhB,EAAa,eACpD3pB,KAAKirC,gBAAgB,KAAMthB,GAC3B3pB,KAAKirC,gBAAgB,OAAQthB,GAC7B3pB,KAAKirC,gBAAgB,UAAWD,GAChChrC,KAAKirC,gBAAgB,WAAYD,GACjChrC,KAAKirC,gBAAgB,WAAYD,IAGrC3B,EAAkBxnC,UAAU8oC,aAAe,SAAUnlC,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QAC5H,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5C,IAAI7C,EAAY,IAAI,IAAoB78B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,GACvIllC,KAAKwpC,YAAY/oC,KAAK4hC,IACtB,QAAUriC,KAAMA,KAAMqiC,IAG1BgH,EAAkBxnC,UAAUi/B,WAAa,SAAUD,GAI/C,QAH0B,QAAUA,GAC9B7gC,KAAKwpC,YAAYlgC,QAAO,SAAU4F,GAAQ,OAAOA,EAAK0yB,YAAcf,KACpE7gC,KAAKwpC,YAAY1nC,SACI0pB,MAAK,SAAUiH,EAAGlV,GACzC,IAAI2tB,EAAazY,EAAEmP,UAAYrkB,EAAEqkB,UACjC,OAAsB,IAAfsJ,EAAmBzY,EAAEsS,UAAYxnB,EAAEwnB,UAAYmG,MAgB9D7B,EAAkBxnC,UAAUopC,gBAAkB,SAAUzlC,EAAM2lC,GAC1DnrC,KAAKypC,eAAejkC,GAAQ,CAAEA,KAAMA,EAAM1C,MAAOqoC,IAIrD9B,EAAkBxnC,UAAUihC,cAAgB,WACxC,OAAO9iC,KAAKypC,gBAGhBJ,EAAkBxnC,UAAUigC,SAAW,SAAUnuB,GAC7C,OAAO3T,KAAKsjC,iBAAiB3vB,IAGjC01B,EAAkBxnC,UAAUgoC,6BAA+B,WACvD,IAAIuB,EAAMprC,KAAK0pC,mBACf0B,EAAIC,gBAA6CrrC,KTzN5B8pC,SAAS,GAAIjD,GS0NlCuE,EAAIhS,QAAwCp5B,KF/MvB+P,SAAS,GAAI24B,EAAa,CAAEthC,UAAW,OEgN5DgkC,EAAI/G,QD7N+B,SAAUvX,GACjD,OAAOA,EAAkB/c,SAAS,GAAIg5B,EAAuB,CAAE3hC,UAAW,MC4NxDkkC,CAA8BtrC,MAE5CorC,EAAI/D,WR7MwB,SAAUva,GAC1C,OAAOA,EAAkBid,QAAQ,CAAE5a,GAAI,SAAU1hB,GAAS,QAASA,EAAM45B,aAAiBF,GQ4MrEoE,CAAuBvrC,MAExCorC,EAAIpB,OPtNoB,SAAUld,GACtC,OAAOA,EAAkBkd,OAAO,CAAE/7B,QAAS,SAAUR,GAAS,QAASA,EAAMu8B,SAAaxC,GOqNzEgE,CAAmBxrC,MAChCorC,EAAInB,SP1MsB,SAAUnd,GACxC,OAAOA,EAAkBmd,SAAS,CAAE9U,SAAU,SAAU1nB,GAAS,QAASA,EAAMw8B,WAAexC,GOyM5EgE,CAAqBzrC,MACpCorC,EAAIlB,QP9LqB,SAAUpd,GACvC,OAAOA,EAAkBod,QAAQ,CAAE/d,SAAU,SAAU1e,GAAS,QAASA,EAAMy8B,UAAcxC,GO6L3EgE,CAAoB1rC,MAElCorC,EAAIO,aNjO0B,SAAU7e,GAC5C,OAAOA,EAAkBid,QAAQ,GAAInC,EAAkB,CAAExgC,SAAUugC,IMgO5CiE,CAAyB5rC,MAC5CorC,EAAIS,YNnN0B,SAAU/e,GAC5C,OAAOA,EAAkBod,QAAQ,CAAE/d,UAAU,SAAI,IAAS0b,EAAkB,CAAEzgC,SAAUugC,IMkNlEmE,CAAyB9rC,MAC3CorC,EAAIW,WNpM0B,SAAUjf,GAC5C,OAAOA,EAAkBqd,SAAS,GAAIrC,EAAkB,CAAE1gC,SAAUugC,IMmM/CqE,CAAyBhsC,MAE1CorC,EAAIa,ULpO2B,SAAUnf,GAC7C,OAAOA,EAAkBqd,SAAS,GAAIpC,GKmOlBmE,CAA0BlsC,MAC1CorC,EAAInD,cL9MuB,SAAUnb,GACzC,OAAOA,EAAkB/e,UAAU,GAAIk6B,GK6MfkE,CAAsBnsC,MAE1CorC,EAAIgB,cJ3N2B,SAAUtf,GAC7C,OAAOA,EAAkBgd,SAAS,GAAIxB,GI0Nd+D,CAA0BrsC,MAE9CorC,EAAI5C,UHvOmB,SAAU1b,GACrC,OAAOA,EAAkB/e,UAAU,GAAIy6B,EAAW,CAAEphC,SAAU,OGsO1CklC,CAAkBtsC,MAElCorC,EAAIhf,UAAW,OAAqBpsB,OAEjCqpC,EA/M2B,mSChClCkD,EAA2B,WACV,SAASA,EAA2B73B,GACjD,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKouB,WAAa,IAAI,EAAAiD,WACtBrxB,KAAKkX,eAAgB,EACrBlX,KAAKwsC,oBAAqB,EAC1BxsC,KAAKysC,eAAgB,EACrBzsC,KAAK0sC,sBAAuB,EAC5B1sC,KAAKkV,QAAU,WAAc,OAAO/E,EAAMie,WAAWlZ,WAOtElV,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuE,OAAO2C,eAAe5B,YAUjEzV,KAAK2sC,WAAa,SAAUC,GAAa,OAAOz8B,EAAMuE,OAAO2C,eAAes1B,WAAWC,IAMvF5sC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMuE,OAAO2C,eAAew1B,QAM7D7sC,KAAKqV,UAAY,WAAc,OAAOlF,EAAMuE,OAAO2C,eAAehC,aAMlErV,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMuE,OAAO2C,eAAey1B,QAM7D9sC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMuE,OAAO2C,eAAe01B,YAwFrE,OA1EAR,EAAU1qC,UAAUmrC,gBAAkB,SAAUxoC,GAC5C,OAAQxE,KAAKwsC,oBAAqB,QAAUhoC,GAASA,EAAQxE,KAAKwsC,oBAmBtED,EAAU1qC,UAAUotB,oBAAsB,SAAUzqB,GAChD,IAAI,QAAUA,KAAoB,IAAVA,IAA4B,IAAVA,KAAoB,QAASA,GACnE,MAAM,IAAIiO,MAAM,0BAA4BjO,EAAQ,mDACxD,OAAQxE,KAAK0sC,sBAAuB,QAAUloC,GAASA,EAAQxE,KAAK0sC,sBAcxEH,EAAU1qC,UAAUorC,WAAa,SAAUzoC,GACvC,OAAQxE,KAAKysC,eAAgB,QAAUjoC,GAASA,EAAQxE,KAAKysC,eAgCjEF,EAAU1qC,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACnD,IAAItiB,EAAOlP,KAAKouB,WAAWlf,KAAK1J,EAAMiU,EAAY+X,GAClD,OAAQ,QAAU/X,GAAqBzZ,KAAPkP,GAE7Bq9B,EA1ImB,0SCf1BW,EAAsC,WAStC,OARAA,EAAW35B,OAAO3Q,QAAU,SAASic,GACjC,IAAK,IAAIzB,EAAGC,EAAI,EAAGkD,EAAIve,UAAUoN,OAAQiO,EAAIkD,EAAGlD,IAE5C,IAAK,IAAIwd,KADTzd,EAAIpb,UAAUqb,GACO9J,OAAO1R,UAAUa,eAAeX,KAAKqb,EAAGyd,KACzDhc,EAAEgc,GAAKzd,EAAEyd,IAEjB,OAAOhc,IAEK1c,MAAMnC,KAAMgC,YAK5BmrC,EAA8B,WAC9B,SAASA,EAAaz4B,GAClB1U,KAAK0U,OAASA,EAWlB,OATAy4B,EAAatrC,UAAU+O,WAAa,SAAUvF,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE9E0/B,EAAatrC,UAAUoyB,SAAW,SAAU5oB,EAAI6D,EAAMzB,GAClD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,KAAcntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE5E0/B,EAAatrC,UAAUurC,WAAa,SAAU/hC,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAEvE0/B,EAbsB,GAsB7BE,EAAmC,WAEnC,SAASA,EAAmC34B,GACxC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAEd1U,KAAK07B,aAAe,IAAIyR,EAAantC,KAAK0U,QAE1C1U,KAAKstC,WAAa,IAClBttC,KAAKqtB,MAAQ,EAAAA,MAEbrtB,KAAKgtC,gBAAkB,SAAUxoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAOyhC,gBAAgBxoC,IAEhGxE,KAAKivB,oBAAsB,SAAUzqB,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0jB,oBAAoBzqB,IAExGxE,KAAKitC,WAAa,SAAUzoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0hC,WAAWzoC,IAEtFxE,KAAKkP,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpC,OAAOrhB,EAAMuE,OAAOuC,WAAW1L,OAAO2D,KAAK1J,EAAMiU,EAAY+X,IAAiBrhB,GA+CtF,OArCAk9B,EAAkBxrC,UAAUwF,QAAU,SAAUid,EAAS/Y,GACrD,IAAI+hB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAEnC6C,EAAS7C,IAAWA,EAAOkC,OAASlC,EAAO6C,OAC/C7C,EAAS6C,EAAS8+B,EAAS,CAAEz/B,MAAO,CAAEW,OAAQA,IAAY7C,GAAUA,EACpE,IAAIgiC,EAAe,CACfC,OAAQlgB,EAAUmf,cAClBO,gBAAiB1f,EAAUkf,mBAC3BiB,aAAcngB,EAAUpW,eAE5B,OAAO,IAAI,IAAWoN,EAASgJ,EAAUc,WAAYpuB,KAAK07B,cAAc,QAAO6R,EAAchiC,KASjG8hC,EAAkBxrC,UAAUs4B,UAAY,SAAUuT,GAE9C,KAAK,QAASA,GACV,OAAO,EACX,IAAIpnC,GAAS,EAKb,OAJA,QAAQ,eAAsB,SAAUtC,EAAKwB,IACrC,QAAWxB,KACXsC,EAASA,IAAU,QAAUonC,EAAOloC,MAAU,QAAWkoC,EAAOloC,QAEjEc,GAGX+mC,EAAkBxrC,UAAUnB,KAAO,WAC/B,IAAI4sB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAGvC,OAFA+hB,EAAUc,WAAW5I,SAAU,EAC/B8H,EAAUc,WAAWqD,kBACdzxB,MAEJqtC,EAjE2B,kOCjBlCM,EAA2B,WAE3B,SAASA,EAA2Bj5B,GAChC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAGd1U,KAAK4sB,KAAO,SAAU1W,GAAO,OAAO/F,EAAMuE,OAAOuC,WAAW2V,KAAK1W,IAEjElW,KAAKsc,OAAS,SAAUhH,GAAW,OAAOnF,EAAMuE,OAAOuC,WAAWqF,OAAOhH,IAEzEtV,KAAK+c,eAAiB,SAAU9Q,GAAS,OAAOkE,EAAMuE,OAAOuC,WAAW8F,eAAe9Q,IAEvFjM,KAAKgc,MAAQ,SAAU4xB,GAAY,OAAOz9B,EAAMuE,OAAOuC,WAAW+E,MAAM4xB,IAGxE5tC,KAAKuH,QAAU,SAAUwU,GACrB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMpV,QAAQwU,IAGjD/b,KAAK4c,UAAY,SAAUb,GACvB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMC,UAAUb,IAGnD/b,KAAKw/B,WAAa,SAAUjjB,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAM6iB,WAAWjjB,IAEpFvc,KAAKuc,KAAO,SAAUA,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAMJ,KAAKA,IAExEvc,KAAK2c,MAAQ,WAAc,OAAOxM,EAAMuE,OAAOuC,WAAW0F,MAAMA,SAEhE3c,KAAKwrB,KAAO,SAAUqiB,GAAa,OAAO19B,EAAMuE,OAAOuC,WAAW0F,MAAM6O,KAAKqiB,IAE7E7tC,KAAKiQ,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAAW,OAAOgQ,EAAMuE,OAAOuC,WAAW0F,MAAM1M,KAAKwrB,EAAS1f,EAAS5b,IAC/GH,KAAK6+B,eAAiB,IAAI,IAAenqB,GAyE7C,OAtEAi5B,EAAU9rC,UAAUua,OAAS,SAAU0xB,GACnC,IAAIphB,EAAO1sB,KAAK0U,OAAO0C,gBACnB02B,EACA9tC,KAAK6V,SAAW6W,EAAKjb,MAGrBib,EAAKjb,QAAUzR,KAAK6V,UAExB6W,EAAKjb,IAAIzR,KAAK6V,UAAU,IAY5B83B,EAAU9rC,UAAUpB,KAAO,SAAUstC,EAAY3/B,EAAQjO,GACrD,IAAI4U,EAAU5U,KAAaA,EAAQ4U,QACnC/U,KAAK0U,OAAOuC,WAAWxF,IAAIs8B,EAAWnmB,OAAOxZ,GAAU,IAAK2G,IAqBhE44B,EAAU9rC,UAAUmsC,KAAO,SAAUD,EAAY3/B,EAAQjO,GACrD,IAAIsR,EAAMs8B,EAAWnmB,OAAOxZ,GAC5B,GAAW,MAAPqD,EACA,OAAO,KACXtR,EAAUA,GAAW,CAAE8tC,UAAU,GACjC,IAAIpmC,EAAM7H,KAAK0U,OAAOuC,WAAW1L,OAC7B2iC,EAAUrmC,EAAIwN,YAKlB,GAJK64B,GAAmB,OAARz8B,IACZA,EAAM,IAAM5J,EAAI8kC,aAAel7B,GAEnCA,EA1GR,SAAwBA,EAAKy8B,EAASD,EAAUx4B,GAC5C,MAAiB,MAAbA,EACOhE,EACPy8B,GACO,QAAqBz4B,GAAYhE,EACxCw8B,EACOx4B,EAAS3T,MAAM,GAAK2P,EACxBA,EAmGG08B,CAAe18B,EAAKy8B,EAAS/tC,EAAQ8tC,SAAUpmC,EAAI4N,aACpDtV,EAAQ8tC,WAAax8B,EACtB,OAAOA,EAEX,IAAI28B,GAASF,GAAWz8B,EAAM,IAAM,GAChC48B,EAAUxmC,EAAIilC,OACdA,EAAoB,KAAZuB,GAA8B,MAAZA,EAAkB,GAAK,IAAMA,EAC3D,MAAO,CAACxmC,EAAIklC,WAAY,MAAOllC,EAAIglC,OAAQC,EAAMsB,EAAO38B,GAAKwB,KAAK,KAEtEM,OAAO+6B,eAAeX,EAAU9rC,UAAW,oBAAqB,CAE5D6O,IAAK,WACD,OAAO1Q,KAAK0U,OAAOuC,WAAWoF,mBAElCkyB,YAAY,EACZC,cAAc,IAEXb,EA1GmB,2aCJ1Bc,EAAgC,WAChC,SAASA,EAAe/5B,GACpB1U,KAAK0U,OAASA,EAiKlB,OA/JA+5B,EAAe5sC,UAAUwF,QAAU,SAAU2J,GACzC,OAAOhR,KAAK0U,OAAOE,kBAAkBvN,QAAQ2J,IAEjDy9B,EAAe5sC,UAAUL,OAAS,SAAUsb,EAAMf,GAC9C,IAAI5L,EAAQnQ,KACRy9B,EAAU,YAAqBD,EAAqB,uBACpDkR,GAAW,QAAQ,CACnB,CAAC,KAAU,SAAUC,GAAS,OAAOD,EAASv+B,EAAM9I,QAAQsnC,MAC5D,EAAC,IAAAz1B,IAAG,KAAa,SAAUy1B,GAAS,OAAOx+B,EAAMy+B,eAAeD,EAAO5yB,KACvE,EAAC,IAAAkI,IAAGwZ,EAASD,GAAqB,SAAUmR,GAAS,OAAOx+B,EAAM0+B,UAAUF,EAAOx+B,EAAMuE,UACzF,EAAC,IAAAwE,IAAG/P,QAAS,SAAUwlC,GAAS,OAAOx+B,EAAM2+B,WAAWH,EAAO5yB,KAC/D,CAAC,KAAY,SAAU4yB,GAAS,OAAO,IAAIlyB,EAAYkyB,EAAO5yB,OAE9DQ,EAAOmyB,EAAS5xB,GACpB,IAAKP,EACD,MAAM,IAAI9J,MAAM,4BACpB,OAAO8J,GAsCXkyB,EAAe5sC,UAAU+sC,eAAiB,SAAUb,EAAYhyB,GAC5D,IAAIgzB,EAAWhzB,GACX,QAASA,KACTA,EAAU/b,KAAK0U,OAAOE,kBAAkBvN,QAAQ0U,KAChD,IAAA7C,IAAG,IAAH,CAAe6C,KACfgzB,EAAW,SAAU/yB,GAAS,OAAOD,EAAQ6L,OAAO5L,KAiBxD,IAAIgzB,EAAU,CAAEjB,WAAYA,EAAYkB,cAPxC,SAAuB7gC,GACnB,IAAI8gC,EAAWnB,EAAW1a,aAAa/pB,QAAO,SAAU0F,GAAS,OAAOA,EAAM4f,cAC9E,OAAKsgB,EAAS9/B,OAEA8/B,EAAS5lC,QAAO,SAAU0F,GAAS,OAAOZ,EAAOY,EAAM3D,OACtD+D,OAAS8/B,EAAS9/B,OAFtB,MAIuDF,KAAM,cAC5E,OAAO,QAAO,IAAIuN,GAjBlB,SAA2BhL,GACvB,IAAIrD,EAAS2/B,EAAWtkC,KAAKgI,EAAItJ,KAAMsJ,EAAI09B,OAAQ19B,EAAIqgB,MACvD,OAAOic,EAAWre,UAAUthB,IAAWA,IAeM2gC,GAAWC,IAahEP,EAAe5sC,UAAUgtC,UAAY,SAAUO,EAAa16B,GACxD,IAAIjH,EAAQ,uBAA+B2hC,GAAeA,EAAYp7B,UAAYo7B,EAe9EJ,EAAU,CAAEvhC,MAAOA,EAAOyB,KAAM,SACpC,OAAO,QAAOlP,KAAK4uC,eAAenhC,EAAMgE,KAR1B,SAAUuK,GACpB,IAAIvD,EAAS/D,EAAOmC,aAChByB,EAAU5D,EAAO4D,QACjBG,EAAOu1B,KAAKvgC,EAAOuO,KAAWvD,EAAOu1B,KAAK11B,EAAQwN,QAASxN,EAAQlK,SACnEqK,EAAO42B,aAAa5hC,EAAOuO,EAAO,CAAEoD,SAAS,EAAML,OAAQ,WAIZiwB,IAkC3DP,EAAe5sC,UAAUitC,WAAa,SAAU7rB,EAAQlH,GACpD,GAAIkH,EAAOnF,QAAUmF,EAAOqsB,OACxB,MAAM,IAAI78B,MAAM,4CAMpB,IAIIs8B,GAAW,QAAShzB,GAJJ,SAAUC,GAE1B,OAAOD,EAAQhH,QAAQ,kBAAkB,SAAUC,EAAG8H,GAAQ,OAAOd,EAAe,MAATc,EAAe,EAAIyyB,OAAOzyB,QAEtDf,EAE/CizB,EAAU,CAAE/rB,OAAQA,EAAQ/T,KAAM,UACtC,OAAO,QAAO,IAAIuN,GAFU,SAAUhL,GAAO,OAAOwR,EAAOxZ,KAAKgI,EAAItJ,QAEf4mC,GAAWC,IAEpEP,EAAee,UAAY,SAAUv1B,GAAO,OAAOA,GAAO,CAAC,OAAQ,QAAS,WAAWkpB,OAAM,SAAUt9B,GAAO,OAAO,QAAUoU,EAAIpU,QAC5H4oC,EAnKwB,GA4K/BhyB,EACA,SAAqBT,EAAOD,GACxB,IAAI5L,EAAQnQ,KACZA,KAAKgc,MAAQA,EACbhc,KAAKkP,KAAO,MACZlP,KAAKivC,cAAgB,SAAUjzB,GAAS,OAAO,EAAI7L,EAAMgL,KACzDnb,KAAK+b,QAAUA,GAAW,2GCnK9B0zB,sPAaJ,SAASC,EAAa3zB,GAClB,MAAK,QAAWA,KAAa,QAASA,KAAa,IAAA7C,IAAG,EAAA2mB,YAAH,CAAgB9jB,IAAa,EAAA8jB,YAAA,MAAkB9jB,IAC9F,MAAM,IAAItJ,MAAM,4FAEpB,OAAO,QAAWsJ,GAAWA,GAAU,QAAIA,GAhB/C0zB,EAAoB,SAAUhyB,EAAGmB,GAC7B,IAAI+wB,EA5BW,SAAUlyB,EAAGmB,GAAK,OAAQA,EAAExX,UAAY,IAAMqW,EAAErW,UAAY,GA4BjEwoC,CAAanyB,EAAGmB,GAC1B,OAAY,IAAR+wB,GAGQ,KADZA,EA9BW,SAAUlyB,EAAGmB,GACxB,IAAIixB,EAAU,CAAE7E,MAAO,EAAG8E,WAAY,EAAGC,OAAQ,EAAGC,IAAK,EAAGC,MAAO,GACnE,OAAQJ,EAAQpyB,EAAEvO,OAAS,IAAM2gC,EAAQjxB,EAAE1P,OAAS,GA4B9CghC,CAASzyB,EAAGmB,KAIN,KADZ+wB,EA7BiB,SAAUlyB,EAAGmB,GAC9B,OAAQnB,EAAEswB,YAAenvB,EAAEmvB,WAAiB,YAAmBtwB,EAAEswB,WAAYnvB,EAAEmvB,YAAvC,EA4BlCoC,CAAe1yB,EAAGmB,IAJb+wB,EAtBF,SAAUlyB,EAAGmB,GAEtB,IAAIwxB,EAAmB,CAAEpF,OAAO,EAAM8E,YAAY,GAElD,OADYM,EAAiB3yB,EAAEvO,OAASkhC,EAAiBxxB,EAAE1P,MAC5C,GAAKuO,EAAEtC,KAAO,IAAMyD,EAAEzD,KAAO,GAyBrCk1B,CAAO5yB,EAAGmB,IAkBrB,IAAI0xB,EAA0B,WAE1B,SAASA,EAA0B57B,GAC/B1U,KAAK0U,OAASA,EACG1U,KAAKuwC,QAAUd,EACfzvC,KAAKwwC,OAAS,GACdxwC,KAAKywC,IAAM,EAC5BzwC,KAAK6+B,eAAiB,IAAI,IAAenqB,GA8Q7C,OA3QA47B,EAASzuC,UAAUqT,QAAU,SAAUR,GACnC1U,KAAKwwC,OAAS,UACPxwC,KAAK0wC,cAqChBJ,EAASzuC,UAAU0F,QAAU,SAAUwU,GACnC,IAAI40B,EAAYjB,EAAa3zB,GAI7B/b,KAAKuc,KAAKvc,KAAK6+B,eAAer9B,QAHhB,SAAUosC,EAAUl5B,GAC9B,OAAmD,IAA5CA,EAAO4D,QAAQyT,kBAAkBnG,UAAkB,QAAQnc,KAAKmkC,EAASzlC,QAEtCwoC,KA6ClDL,EAASzuC,UAAU+a,UAAY,SAAUb,GACrC,IAAI40B,EAAYjB,EAAa3zB,GAC7B/b,KAAK0wC,aAAe1wC,KAAK6+B,eAAer9B,QAAO,SAAI,GAAOmvC,GAC1D3wC,KAAK4wC,SAAU,GAOnBN,EAASzuC,UAAU29B,WAAa,SAAUjjB,IACtC,QAAWvc,KAAKwwC,OAAQj0B,IAc5B+zB,EAASzuC,UAAU0a,KAAO,SAAUA,GAChC,IAAIpM,EAAQnQ,KACZ,IAAK,cAAyBuc,GAC1B,MAAM,IAAI9J,MAAM,gBAKpB,OAJA8J,EAAKpB,IAAMnb,KAAKywC,MAChBl0B,EAAKnV,SAAWmV,EAAKnV,UAAY,EACjCpH,KAAKwwC,OAAO/vC,KAAK8b,GACjBvc,KAAK4wC,SAAU,EACR,WAAc,OAAOzgC,EAAMqvB,WAAWjjB,KAOjD+zB,EAASzuC,UAAU8a,MAAQ,WAEvB,OADA3c,KAAK6wC,eACE7wC,KAAKwwC,OAAOpuC,OAAOpC,KAAK0wC,aAAe,CAAC1wC,KAAK0wC,cAAgB,KA4CxEJ,EAASzuC,UAAU2pB,KAAO,SAAUqiB,GAIhC,IAHA,IAAIiD,EAAS9wC,KAAK+wC,WAAW/wC,KAAKwwC,OAASxwC,KAAKuwC,QAAU1C,GAAa7tC,KAAKuwC,SAExES,EAAQ,EACH3zB,EAAI,EAAGA,EAAIyzB,EAAO1hC,OAAQiO,IAC/ByzB,EAAOzzB,GAAG4zB,OAASD,EACf3zB,EAAIyzB,EAAO1hC,OAAS,GAAgD,IAA3CpP,KAAKuwC,QAAQO,EAAOzzB,GAAIyzB,EAAOzzB,EAAI,KAC5D2zB,IAGRhxC,KAAKwwC,OAASM,EACd9wC,KAAK4wC,SAAU,GAGnBN,EAASzuC,UAAUgvC,aAAe,WAC9B7wC,KAAK4wC,SAAW5wC,KAAKwrB,QAGzB8kB,EAASzuC,UAAUkvC,WAAa,SAAUrxB,EAAKmuB,GAC3C,IAAIqD,EAAexxB,EAAI/Q,KAAI,SAAUuS,EAAMjS,GAAO,MAAO,CAAGiS,KAAMA,EAAMjS,IAAKA,MAK7E,OAJAiiC,EAAa1lB,MAAK,SAAU2lB,EAAUC,GAClC,IAAIC,EAAUxD,EAAUsD,EAASjwB,KAAMkwB,EAASlwB,MAChD,OAAmB,IAAZmwB,EAAgBF,EAASliC,IAAMmiC,EAASniC,IAAMoiC,KAElDH,EAAaviC,KAAI,SAAU2iC,GAAW,OAAOA,EAAQpwB,SA6DhEovB,EAASzuC,UAAUoO,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAClD,IAAIoc,EAAOvc,KAAK6+B,eAAer9B,OAAOi6B,EAAS1f,GAI/C,OAHI,QAAU5b,GAAWA,EAAQiH,YAC7BmV,EAAKnV,SAAWjH,EAAQiH,UAC5BpH,KAAKuc,KAAKA,GACHA,GAEJ+zB,EArRkB,8VCpDzBiB,EAA4B,WAE5B,SAASA,EAA4B78B,GACjC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKqc,mBAAoB,EAM1Crc,KAAK2c,MAAQ,IAAI,IAAS3c,KAAK0U,QAM/B1U,KAAKuL,OAAS,IAAI,IAAUvL,KAAK0U,QAsDjC1U,KAAKyR,IAAM,SAAU+/B,EAAQz8B,EAAStH,GAClC,OAAO0C,EAAMuE,OAAO0C,gBAAgB3F,IAAI+/B,EAAQz8B,EAAStH,IAS7DzN,KAAKmI,KAAO,WAAc,OAAOgI,EAAMuE,OAAO0C,gBAAgBjP,QAQ9DnI,KAAKmvC,OAAS,WAAc,OAAOh/B,EAAMuE,OAAO0C,gBAAgB+3B,UAQhEnvC,KAAK8xB,KAAO,WAAc,OAAO3hB,EAAMuE,OAAO0C,gBAAgB0a,QAgB9D9xB,KAAKmV,SAAW,SAAU3U,GAAY,OAAO2P,EAAMuE,OAAO0C,gBAAgBjC,SAAS3U,IA4IvF,OAzIA+wC,EAAW1vC,UAAUqT,QAAU,WAC3BlV,KAAKsc,QAAO,GACZtc,KAAK2c,MAAMzH,WAOfq8B,EAAW1vC,UAAU8qB,MAAQ,WACzB,MAAO,CAAExkB,KAAMnI,KAAKmI,OAAQgnC,OAAQnvC,KAAKmvC,SAAUrd,KAAM9xB,KAAK8xB,SAsBlEyf,EAAW1vC,UAAU+qB,KAAO,SAAU1W,GAClC,IAAIA,IAAOA,EAAI5T,iBAAf,CAEA,IAAI+oB,EAAKrrB,KAAK0U,OAAQuC,EAAaoU,EAAGpU,WAAYJ,EAAewU,EAAGxU,aAChEpF,EAAM,CAAEtJ,KAAM8O,EAAW9O,OAAQgnC,OAAQl4B,EAAWk4B,SAAUrd,KAAM7a,EAAW6a,QAC/E2f,EAAOzxC,KAAKgc,MAAMvK,IACJ,QAAQ,CACtB,CAAC,KAAU,SAAU+/B,GAAU,OAAOv6B,EAAWxF,IAAI+/B,GAAQ,KAC7D,CAAC,EAAA3R,YAAA,MAAmB,SAAU3sB,GAAO,OAAO2D,EAAa66B,GAAGx+B,EAAIzF,MAAOyF,EAAI9E,OAAQ8E,EAAI/S,WACvF,EAAC,IAAA+Y,IAAG,EAAA2mB,aAAc,SAAUx5B,GAAU,OAAOwQ,EAAa66B,GAAGrrC,EAAOoH,QAASpH,EAAO+H,SAAU/H,EAAOlG,cAEzGwxC,CAAYF,GAAQA,EAAKl1B,KAAKR,QAAQ01B,EAAKz1B,MAAOvK,EAAKzR,KAAK0U,WAwBhE68B,EAAW1vC,UAAUya,OAAS,SAAUhH,GACpC,IAAInF,EAAQnQ,KACZ,IAAgB,IAAZsV,EAKA,OAAQtV,KAAK4xC,iBACT5xC,KAAK4xC,kBAAoB5xC,KAAK0U,OAAOuC,WAAW9B,UAAS,SAAUe,GAAO,OAAO/F,EAAMyc,KAAK1W,MALhGlW,KAAK4xC,kBAAoB5xC,KAAK4xC,0BACvB5xC,KAAK4xC,kBA+BpBL,EAAW1vC,UAAUkb,eAAiB,SAAU9Q,QAC9BkI,IAAVlI,IACAA,GAAQ,GACZjM,KAAKqc,kBAAoBpQ,GAQ7BslC,EAAW1vC,UAAUma,MAAQ,SAAUvK,GAEnCA,GAAM,QAAO,CAAEtJ,KAAM,GAAIgnC,OAAQ,GAAIrd,KAAM,IAAMrgB,GAYjD,IAXA,IAUIggC,EARsBl1B,EAClBP,EAHJW,EAAQ3c,KAAK2c,MAAMA,QAWdU,EAAI,EAAGA,EAAIV,EAAMvN,UAElBqiC,GAAQA,EAAKl1B,KAAK00B,SAAWt0B,EAAMU,GAAG4zB,QAFZ5zB,IAAK,CAInC,IAAIyI,QAZA9J,GAAAA,GADkBO,EAaEI,EAAMU,IAZbrB,MAAMvK,EALfzR,KAK0B0U,UAClB,CAAEsH,MAAOA,EAAOO,KAAMA,EAAMs1B,OAAQt1B,EAAK0yB,cAAcjzB,KAavEy1B,GAAQA,GAAS3rB,GAAWA,EAAQ+rB,OAASJ,EAAKI,OAAU/rB,EAAU2rB,EAE1E,OAAOA,GAEJF,EA7PoB,oZCJ3BO,EAAsC,WACtC,SAASA,EAAqBp9B,EAAQq9B,GAClC,IAAI5hC,EAAQnQ,KACZA,KAAK+xC,gBAAkBA,EACvB/xC,KAAKgyC,WAAa,GAClBhyC,KAAKiyC,UAAY,SAAU/7B,GAAO,OAAO/F,EAAM6hC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGoL,OAC5FlW,KAAK8xB,KAAO,WAAc,OAAO,QAAS3hB,EAAM+hC,QAAQpgB,MACxD9xB,KAAKmI,KAAO,WAAc,OAAO,QAASgI,EAAM+hC,QAAQ/pC,MACxDnI,KAAKmvC,OAAS,WAAc,OAAO,SAAU,QAASh/B,EAAM+hC,QAAQ/C,SACpEnvC,KAAKmyC,UAAY,cACjBnyC,KAAKoyC,SAAW,aAoBpB,OAlBAN,EAAqBjwC,UAAU4P,IAAM,SAAUA,EAAKsD,GAQhD,YAPgB,IAAZA,IAAsBA,GAAU,IAChC,QAAUtD,IAAQA,IAAQzR,KAAKkyC,SAC/BlyC,KAAKmpB,KAAK,KAAM,KAAM1X,EAAKsD,GACvB/U,KAAK+xC,iBACL/xC,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAG,CAAE2G,IAAKA,SAG1D,QAASzR,OAEpB8xC,EAAqBjwC,UAAUsT,SAAW,SAAUrK,GAChD,IAAIqF,EAAQnQ,KAEZ,OADAA,KAAKgyC,WAAWvxC,KAAKqK,GACd,WAAc,OAAO,QAAWqF,EAAM6hC,WAAYlnC,KAE7DgnC,EAAqBjwC,UAAUqT,QAAU,SAAUR,IAC/C,QAAS1U,KAAKgyC,aAEXF,EA9B8B,2LCDrCO,EAAuC,WACvC,SAASA,EAAsB39B,EAAQ49B,QAClB,IAAbA,IAAuBA,GAAW,GACtCtyC,KAAKsyC,SAAWA,EAChBtyC,KAAK0V,eAAYvB,EACjBnU,KAAKuyC,YAAc,GAmCvB,OAjCAF,EAAsBxwC,UAAUirC,KAAO,WACnC,OAAIj3B,SAASi3B,KACFyC,OAAO15B,SAASi3B,MAEA,UAApB9sC,KAAK+sC,WAAyB,IAAM,IAE/CsF,EAAsBxwC,UAAUkrC,SAAW,WACvC,OAAOl3B,SAASk3B,SAASh4B,QAAQ,KAAM,KAE3Cs9B,EAAsBxwC,UAAUgrC,KAAO,WACnC,OAAOh3B,SAAS28B,UAEpBH,EAAsBxwC,UAAUwT,UAAY,WACxC,OAAOrV,KAAKsyC,UAEhBD,EAAsBxwC,UAAU8qC,WAAa,SAAUC,GACnD,OAAO,QAAUA,GAAc5sC,KAAKuyC,YAAc3F,EAAa5sC,KAAKuyC,aAExEF,EAAsBxwC,UAAU4T,SAAW,SAAUu4B,GAKjD,OAJI,QAAUA,KACVhuC,KAAK0V,UAAYs4B,IACjB,QAAYhuC,KAAK0V,aACjB1V,KAAK0V,UAAY1V,KAAKyyC,eACnBzyC,KAAK0V,WAEhB28B,EAAsBxwC,UAAU4wC,YAAc,WAC1C,IAAIC,EAAUrsB,SAASssB,qBAAqB,QAAQ,GACpD,OAAID,GAAWA,EAAQ1E,KACZ0E,EAAQ1E,KAAKj5B,QAAQ,uBAAwB,IAEjD/U,KAAKsyC,SAAW,IAAMz8B,SAAS/B,UAAY,KAEtDu+B,EAAsBxwC,UAAUqT,QAAU,aACnCm9B,EAxC+B,uHCDlCO,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAMnFC,EAAqC,SAAUC,GAE/C,SAASD,EAAoBv+B,GACzB,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAU1U,KAEhD,OADA,sBAAsB,aAAcmQ,EAAM8hC,WAAW,GAC9C9hC,EAYX,OAhBA0iC,EAAUI,EAAqBC,GAM/BD,EAAoBpxC,UAAUqwC,KAAO,WACjC,OAAO,QAAYlyC,KAAKmyC,UAAUrgB,OAEtCmhB,EAAoBpxC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAC9D/U,KAAKmyC,UAAUrgB,KAAOrgB,GAE1BwhC,EAAoBpxC,UAAUqT,QAAU,SAAUR,GAC9Cw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,aAAc1U,KAAKiyC,YAEzCgB,EAjB6B,CAkBtC,6cC/BEG,EACA,WACI,IAAIjjC,EAAQnQ,KACZA,KAAKkV,QAAU,KACflV,KAAK0V,UAAY,GACjB1V,KAAKqzC,MAAQ,GACbrzC,KAAKszC,UAAY,OACjBtzC,KAAKuzC,MAAQ,YACbvzC,KAAKuyC,YAAc,GACnBvyC,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMkjC,OACvCrzC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMmjC,WAC3CtzC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMojC,OACvCvzC,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuF,WAC3C1V,KAAKqV,UAAY,WAAc,OAAO,GACtCrV,KAAK2sC,WAAa,SAAU6G,GAAU,OAAQ,QAAUA,GAAWrjC,EAAMoiC,YAAciB,EAAUrjC,EAAMoiC,oIChBvGK,8EADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAKnFS,EAAuC,SAAUP,GAEjD,SAASO,EAAsB/+B,GAC3B,OAAOw+B,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAQ9C,OAVA6yC,EAAUY,EAAuBP,GAIjCO,EAAsB5xC,UAAUqwC,KAAO,WACnC,OAAOlyC,KAAK0zC,MAEhBD,EAAsB5xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAChE/U,KAAK0zC,KAAOjiC,GAETgiC,EAX+B,CAYxC,0tBCZ8B,QAAsB,4BAA4B,EAAO,IAAqB,MAEzE,QAAsB,6BAA6B,EAAM,IAA0B,MAEtF,QAAsB,0BAA0B,EAAO,IAAuB,8HClBxGb,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAUnFW,EAA0C,SAAUT,GAEpD,SAASS,EAAyBj/B,GAC9B,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAG/C,OAFAmQ,EAAMyjC,QAAUl/B,EAAOuC,WAAW1L,OAClC,sBAAsB,WAAY4E,EAAM8hC,WAAW,GAC5C9hC,EA8CX,OAnDA0iC,EAAUc,EAA0BT,GAuBpCS,EAAyB9xC,UAAUgyC,eAAiB,WAChD,OAAO,QAAqB7zC,KAAK4zC,QAAQn+B,aAE7Ck+B,EAAyB9xC,UAAUqwC,KAAO,WACtC,IAAI7mB,EAAKrrB,KAAKmyC,UAAWr+B,EAAWuX,EAAGvX,SAAUge,EAAOzG,EAAGyG,KAAMqd,EAAS9jB,EAAG8jB,OAC7EA,GAAS,QAAWA,GAAQ,GAC5Brd,GAAO,QAAUA,GAAM,GACvB,IAAIgiB,EAAa9zC,KAAK6zC,iBAClBE,EAAqBjgC,IAAa9T,KAAK4zC,QAAQn+B,WAC/Cu+B,EAAiBlgC,EAASiT,OAAO,EAAG+sB,EAAW1kC,UAAY0kC,EAE/D,OADAhgC,EAAWigC,EAAqB,IAAMC,EAAiBlgC,EAASmmB,UAAU6Z,EAAW1kC,QAAU0E,IAC5Eq7B,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE1E6hB,EAAyB9xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GACnE,IAAI++B,EAAa9zC,KAAK6zC,iBAClBzF,EAAQ38B,GAAkB,MAAXA,EAAI,GAAa,IAAM,GACtCwiC,EAAkB,KAARxiC,GAAsB,MAARA,EAAczR,KAAK4zC,QAAQn+B,WAAaq+B,EAAa1F,EAAQ38B,EACrFsD,EACA/U,KAAKoyC,SAAS8B,aAAazmC,EAAO0lC,EAAOc,GAGzCj0C,KAAKoyC,SAAS+B,UAAU1mC,EAAO0lC,EAAOc,IAG9CN,EAAyB9xC,UAAUqT,QAAU,SAAUR,GACnDw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,WAAY1U,KAAKiyC,YAEvC0B,EApDkC,CAqD3C,qKCzDS5sC,EAAK,CAEZkJ,KAAM,SAAUjM,GAAO,OAAO,IAAIowC,SAAQ,SAAUznC,EAAS0nC,GAAU,OAAO1nC,EAAQ3I,OAEtFqwC,OAAQ,SAAUrwC,GACd,OAAO,IAAIowC,SAAQ,SAAUznC,EAAS0nC,GAClCA,EAAOrwC,OAIfiI,MAAO,WACH,IAAIqoC,EAAW,GAKf,OAJAA,EAAS7wC,QAAU,IAAI2wC,SAAQ,SAAUznC,EAAS0nC,GAC9CC,EAAS3nC,QAAUA,EACnB2nC,EAASD,OAASA,KAEfC,GAGX74B,IAAK,SAAUF,GACX,IAAI,QAAQA,GACR,OAAO64B,QAAQ34B,IAAIF,GAEvB,IAAI,QAASA,GAAW,CAGpB,IAAI0gB,EAAQ1oB,OAAOC,KAAK+H,GAAU5M,KAAI,SAAU9I,GAAO,OAAO0V,EAAS1V,GAAKkF,MAAK,SAAU/G,GAAO,MAAO,CAAG6B,IAAKA,EAAK7B,IAAKA,SAE3H,OAAO+C,EAAG0U,IAAIwgB,GAAOlxB,MAAK,SAAUiW,GAChC,OAAOA,EAAOpS,QAAO,SAAUsL,EAAKzG,GAEhC,OADAyG,EAAIzG,EAAM5N,KAAO4N,EAAMzP,IAChBkW,IACR,yMC/CRq6B,EAAmB,SAAUC,EAAOnpB,GAC3C,IAAIxlB,EAAMwlB,EAAG,GAAIrnB,EAAMqnB,EAAG,GAU1B,OATKmpB,EAAM9xC,eAAemD,IAGjB,QAAQ2uC,EAAM3uC,IACnB2uC,EAAM3uC,GAAKpF,KAAKuD,GAGhBwwC,EAAM3uC,GAAO,CAAC2uC,EAAM3uC,GAAM7B,GAN1BwwC,EAAM3uC,GAAO7B,EAQVwwC,GAEAC,EAAY,SAAUC,GAC7B,OAAOA,EAAY5xB,MAAM,KAAKxZ,OAAO,MAAUqF,IAAI,MAAYC,OAAO2lC,EAAkB,KAErF,SAASra,EAASzoB,GACrB,IAAIkjC,EAAgB,SAAUrlC,GAAK,OAAOA,GAAK,IAC3C+b,GAAK,QAAU5Z,GAAK9C,IAAIgmC,GAAgBC,EAAavpB,EAAG,GAAIyG,EAAOzG,EAAG,GACtEC,GAAK,QAAWspB,GAAYjmC,IAAIgmC,GACpC,MAAO,CAAExsC,KADkDmjB,EAAG,GACzC6jB,OADsD7jB,EAAG,GACzCwG,KAAMA,EAAMrgB,IAAKA,GAEnD,IAAIojC,EAAW,SAAUC,GAC5B,IAAI3sC,EAAO2sC,EAAI3sC,OACX4sC,EAAeD,EAAI3F,SACnBrd,EAAOgjB,EAAIhjB,OACXqd,EAAS57B,OAAOC,KAAKuhC,GACpBpmC,KAAI,SAAU9I,GACf,IAAImJ,EAAQ+lC,EAAalvC,GAEzB,QADW,QAAQmJ,GAASA,EAAQ,CAACA,IACzBL,KAAI,SAAU3K,GAAO,OAAO6B,EAAM,IAAM7B,QAEnD4K,OAAO,KAAS,IAChBqE,KAAK,KACV,OAAO9K,GAAQgnC,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE/D,SAASkjB,EAAsBxvC,EAAM0oC,EAAS+G,EAAcC,GAC/D,OAAO,SAAU98B,GACb,IAAIX,EAAWW,EAAShB,gBAAkB,IAAI69B,EAAa78B,GACvD+8B,EAAiB/8B,EAASf,eAAiB,IAAI69B,EAAmB98B,EAAU81B,GAKhF,MAAO,CAAE1oC,KAAMA,EAAMiS,QAASA,EAAS09B,cAAeA,EAAejgC,QAJrE,SAAiBR,GACbA,EAAOQ,QAAQuC,GACf/C,EAAOQ,QAAQigC,kaCvBvBr6B,EAA6B,WAE7B,SAASA,EAA6BpG,GAClC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKo1C,SAAW,GAChBp1C,KAAKq1C,aAAe,GACpBr1C,KAAKs1C,qBAAuB,GAC5Bt1C,KAAKgyC,WAAa,GAEnChyC,KAAKgK,WAAa,CACdC,iBAAkBjK,KAAKiK,iBAAiB3G,KAAKtD,MAC7CgX,mBAAoBhX,KAAKgX,mBAAmB1T,KAAKtD,MACjDu1C,kBAAmB,SAAUlqC,GAAM,OAAO,QAAK8E,EAAMilC,UAAU,SAAUt7B,GAAQ,OAAO3J,EAAMuE,OAAOyG,IAAM,IAAMrB,EAAKzO,KAAOA,MAC7HmqC,mBAAoB,WAAc,OAAOrlC,EAAMilC,UAC/CK,mBAAoB,WAAc,OAAOtlC,EAAMklC,cAC/CK,QAAS,SAAUvX,GAEf,OADAhuB,EAAM6hC,WAAWvxC,KAAK09B,GACf,WAAc,OAAO,QAAWhuB,EAAM6hC,WAAY7T,MAwPrE,OAzOArjB,EAAY66B,sBAAwB,SAAU9kC,EAAS+kC,QAC/B,IAAhBA,IAA0BA,EAAc,IAI5C,IAAIC,EAAgBD,EAAY9yB,MAAM,KAClC9H,EAAa66B,EAAc,IAAM,WACjC36B,GAAsB,QAAS26B,EAAc,IAAMA,EAAc,GAAK,IAGtEC,EAAwB,wBAAwBrsC,KAAKuR,GAYzD,GAXI86B,IAEA56B,EAAsB46B,EAAsB,GAC5C96B,EAAa86B,EAAsB,IAEV,MAAzB96B,EAAWvV,OAAO,KAClBuV,EAAaA,EAAW+L,OAAO,GAC/B7L,EAAsB,IAGN,kBACFzR,KAAKyR,GAAsB,CACzC,IAAI66B,EAAc76B,EAAoB4H,MAAM,KAAKlU,QAAO,SAAUonC,EAAQ1mC,GAAK,OAAO0mC,EAAO57B,SAAWvJ,GACxGqK,EAAsB66B,EAAYvwC,SAEL,MAAxB0V,IACLA,EAAsBrK,EAAQrL,MAElC,MAAO,CAAEwV,WAAYA,EAAYE,oBAAqBA,IAG1DJ,EAAYjZ,UAAUoI,iBAAmB,SAAU4G,GAC/C,OAAQ7Q,KAAKi2C,aAAeplC,GAAW7Q,KAAKi2C,cAGhDn7B,EAAYjZ,UAAUmV,mBAAqB,SAAUk/B,EAAUh2C,GAC3DF,KAAKs1C,qBAAqBY,GAAYh2C,GAE1C4a,EAAYjZ,UAAU2yB,iBAAmB,SAAUrsB,EAAMozB,GACrD,IAAI4a,EAAan2C,KAAKs1C,qBAAqB/Z,EAAKnwB,OAChD,IAAK+qC,EACD,MAAM,IAAI1jC,MAAM,2DAA6D8oB,EAAKnwB,OACtF,IAAIgrC,EAAOD,EAAWhuC,EAAMozB,GAC5B,OAAO,QAAQ6a,GAAQA,EAAO,CAACA,IAUnCt7B,EAAYjZ,UAAUumC,qBAAuB,SAAU19B,GACnD,2BAA4B,cAAeA,IAC3C,QAAW1K,KAAKq1C,aAAc3qC,IAElCoQ,EAAYjZ,UAAUwmC,mBAAqB,SAAU39B,GACjD,2BAA4B,iBAAkBA,GAC9C1K,KAAKq1C,aAAa50C,KAAKiK,IAE3BoQ,EAAYjZ,UAAU+qB,KAAO,WACzB,IAAIzc,EAAQnQ,KACRq2C,EAAer2C,KAAKo1C,SAASzmC,KAAI,SAAU4c,GAAO,MAAO,CAACA,EAAIjgB,IAAKigB,MAAS3c,OAAO,KAAY,IASnG,SAAS0nC,EAAgB/qC,GAErB,IADA,IAAIsF,EAAUtF,EAAOxD,SAASgC,SAAUG,EAAQ,IACvCA,GAAS2G,EAAQuJ,QACtBvJ,EAAUA,EAAQuJ,OACtB,OAAOlQ,EAGX,IAAIqsC,GAAe,SAAM,SAAUC,EAASC,EAAQ1lB,EAAMC,GAAS,OAAOylB,GAAUD,EAAQzlB,GAAQylB,EAAQxlB,OAkBxG0lB,EAAe12C,KAAKo1C,SAAS5pB,KAAK+qB,GA9BtC,SAAqB9vC,GACjB,IAAIkwC,EAAa,SAAU9lC,GAAW,OAAQA,GAAWA,EAAQuJ,OAASu8B,EAAW9lC,EAAQuJ,QAAU,EAAI,GAC3G,OAAsC,IAA/B3T,EAAO6E,IAAIwX,MAAM,KAAK1T,OAAiBunC,EAAWlwC,EAAOkiB,mBA4BJ,IAAIha,KAjB3C,SAAUlI,GAC/B,IAAImwC,EAAkBzmC,EAAMklC,aAAa/rC,OAAOwR,EAAYoI,QAAQmzB,EAAc5vC,IAOlF,OANImwC,EAAgBxnC,OAAS,GAIzBwnC,EAAgBprB,KAAK+qB,EAAaD,GAAkB,IAEjD,CAAE7vC,OAAQA,EAAQiE,WAAYksC,EAAgB,OAUrDC,EAAqBH,EAAa/nC,KAAI,SAAU8E,GAAS,OAAOA,EAAM/I,cACtEosC,EAAwB92C,KAAKq1C,aAC5B/rC,QAAO,SAAUiC,GAAU,QAAQ,QAAQsrC,EAAoBtrC,MAC/DoD,KAAI,SAAUjE,GAAc,MAAO,CAAGjE,YAAQ0N,EAAWzJ,WAAYA,MAC1EgsC,EAAa31C,SAZS,SAAU0S,IAGkB,IAA1CtD,EAAMilC,SAASlnC,QAAQuF,EAAMhN,SAC7BgN,EAAMhN,OAAO+E,cAAciI,EAAM/I,eASzC,IAAIqsC,EAAYL,EAAat0C,OAAO00C,GACpC92C,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGisC,MAClD,mBAAoBA,IAiBxBj8B,EAAYjZ,UAAUgK,eAAiB,SAAUpF,GAC7C,iCAAkC,iBAAkBA,GACpD,IAAIuwC,EAAUh3C,KAAKo1C,SAMnB,OAJI4B,EAAQ1tC,QADY,SAAUiiB,GAAO,OAAOA,EAAIjgB,MAAQ7E,EAAO6E,KAAOigB,EAAIngB,QAAU3E,EAAO2E,SACzDgE,QAClC,iCAAkC,+BAAgC3I,GACtEuwC,EAAQv2C,KAAKgG,GACbzG,KAAK4sB,OACE,YAEU,IADHoqB,EAAQ9oC,QAAQzH,IAK1B,iCAAkC,mBAAoBA,IACtD,QAAWuwC,EAAX,CAAoBvwC,IAJhB,iCAAkC,uCAAwCA,KAYtFqU,EAAYjZ,UAAUo1C,UAAY,WAC9B,OAAOj3C,KAAKo1C,SAASzmC,KAAI,QAAK,SAOlCmM,EAAYjZ,UAAUq1C,OAAS,WAC3B,OAAOl3C,KAAKo1C,SAAS9rC,QAAO,QAAK,YAAYqF,KAAI,QAAK,UA2D1DmM,EAAYoI,QAAU,SAAUmzB,EAAc5vC,GAAU,OAAO,SAAUiE,GAErE,GAAIjE,EAAO2E,QAAUV,EAAW3C,SAASqD,MACrC,OAAO,EAEX,IAAI+8B,EAAKz9B,EAAW3C,SAChBovC,EAAahP,EAAGptB,YAAY+H,MAAM,KAClCs0B,EAAc3wC,EAAO6E,IAAIwX,MAAM,KAGnC,KAAK,QAAOq0B,EAAYC,EAAYt1C,MAAM,EAAIq1C,EAAW/nC,SACrD,OAAO,EAGX,IAAIioC,EAAY,EAAIF,EAAW/nC,aAAU+E,EACrCmjC,EAAoBF,EAAYt1C,MAAM,EAAGu1C,GAAWpkC,KAAK,KACzDskC,EAAgBlB,EAAaiB,GAAmB3uB,gBACpD,OAAOwf,EAAGltB,wBAA0Bs8B,GAAiBA,EAAc/xC,QAEhEsV,EA1QqB,wDCfhC,SAAUyL,EAAQ1mB,GAAU,aAyD5B,IAAI23C,EAAoB,gBAEpBC,EAAe53C,EAAQC,OAAO,SAAU,CAAC,OACrB43C,KAAK,CAAEC,eAAgB,UACvB53C,SAAS,SAkCjC,WACE,IAAIwL,EAAS,CACXqsC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,kBAAkB,GAgCpB,SAASC,EAAUzlC,EAAU0lC,EAAUC,EAAqBC,GAC1D,OAAO,SAAS31C,EAAOoe,EAAMpO,GAC3B,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAIkB,EAAgB5lC,EAAKkd,WAAWuoB,IAChChtC,EAAOmtC,IAAmBC,EAAYz3B,EAAMs3B,IAAyB1lC,EAAK4lC,IAC5E51C,EAAMyB,OAAOuO,EAAKD,IAAW,SAAS+lC,GAEpCA,EAAUH,GAAUG,IAAYA,EAChC13B,EAAKpO,KAAKylC,EAAUK,QAb5B54C,KAAKuL,OAAS,SAASstC,GACrBttC,EAAS1L,EAAQiB,OAAOyK,EAAQstC,IAkElC74C,KAAKU,KAAO,WACV,MAAO,CACL6K,OAAQ,SAAS1F,GACf,OAAO0F,EAAO1F,IAEhBizC,YAAaR,OA5IfE,EAAsB,CAAC,SAAU,IAAK,QAAS,WAAY,SAAU,UAAW,WAEhFG,EAAc,SAASz3B,EAAM63B,GAC/B,IAAiD,IAA7CA,EAAc7qC,QAAQgT,EAAK,GAAG83B,UAChC,OAAO,GA8IXvB,EAAa50C,UAAU,SAAU,CAAC,QAAS,SAASo2C,GAClD,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvDj2C,UAAU,SAAU,CAAC,QAAS,SAASo2C,GACtC,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvDj2C,UAAU,UAAW,CAAC,QAAS,SAASo2C,GACvC,OAAOA,EAAMH,YAAY,UAAW,eAAgBN,GAAqB,MAE1E31C,UAAU,YAAa,CAAC,QAAS,SAASo2C,GACzC,OAAOA,EAAMH,YAAY,YAAa,eAAgBN,GAAqB,MAE5E31C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,UAAW,CAAC,QAAS,SAASo2C,GAEvC,SAASC,EAAiBpmC,EAAMqmC,EAAgBj4B,EAAMk4B,GACpD,OAAOH,EAAM1tC,OAAO4tC,KACjBj4B,EAAKpO,KAAKA,KACVsmC,IAAsBT,EAAYz3B,EAAMs3B,MAClB,WAAtBt3B,EAAKpO,KAAK,SAA6C,UAArBoO,EAAK,GAAG83B,UAG/C,SAASK,EAAiBC,EAAMp4B,GAI9B,OAAQA,EAAKpO,KAAK,SAAYoO,EAAKpO,KAAK,UAAYwmC,IAAUX,EAAYz3B,EAAMs3B,GAYlF,MAAO,CACLrxC,SAAU,IACVxB,QAAS,UACTyB,SAAU,IACVC,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAI+B,EAhBR,SAAkBzmC,EAAMoO,GACtB,IAAIhS,EAAO4D,EAAK5D,KACZoqC,EAAOxmC,EAAKwmC,KAEhB,MAA2B,cAAlBpqC,GAAQoqC,IAAiC,qBAATA,EAA+B,WAC7C,WAAlBpqC,GAAQoqC,IAAiC,kBAATA,EAA4B,QACpD,UAATpqC,GAA0C,gBAAToqC,GAAmC,WAATA,EAAqB,QAAU,GAUpFE,CAAS1mC,GAErB,MAAO,CACL2mC,KAAM,SAAS32C,EAAOoe,EAAMpO,EAAM4mC,GAChC,IAAIC,EAAgBT,EAAiB,WAAY,WAAYh4B,GAAM,GAEnE,SAAS04B,IACP,OAAOF,EAAQG,YAcjB,OAAQN,GACN,IAAK,QACL,IAAK,WACCF,EAAiBE,EAAOr4B,IAC1BA,EAAKpO,KAAK,OAAQymC,GAEhBL,EAAiB,eAAgB,cAAeh4B,GAAM,IACxDpe,EAAMyB,OAAOq1C,EAAiC,UAAVL,EAlB1C,SAA0BO,GAGxB,IAAIlB,EAAW9lC,EAAKtO,OAASk1C,EAAQK,WACrC74B,EAAKpO,KAAK,eAAgB8lC,IAG5B,WACE13B,EAAKpO,KAAK,gBAAiB4mC,EAAQM,SAASN,EAAQK,eAa9CJ,GACFz4B,EAAKpO,KAAK,WAAY,GAExB,MACF,IAAK,QAIH,GAHIumC,EAAiBE,EAAOr4B,IAC1BA,EAAKpO,KAAK,OAAQ,UAEhBmmC,EAAM1tC,OAAO,aAAc,CAC7B,IAAI0uC,GAAqB/4B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDw3C,GAAqBh5B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDy3C,GAAqBj5B,EAAKpO,KAAK,iBAE/BmnC,GACFnnC,EAAKsnC,SAAS,OAAO,SAAgCN,GACnD54B,EAAKpO,KAAK,gBAAiBgnC,MAG3BI,GACFpnC,EAAKsnC,SAAS,OAAO,SAAgCN,GACnD54B,EAAKpO,KAAK,gBAAiBgnC,MAG3BK,GACFr3C,EAAMyB,OAAOq1C,GAAuB,SAAgCE,GAClE54B,EAAKpO,KAAK,gBAAiBgnC,MAI7BH,GACFz4B,EAAKpO,KAAK,WAAY,IAKvBA,EAAKpQ,eAAe,eAAiBg3C,EAAQW,YAAYC,UACzDpB,EAAiB,gBAAiB,eAAgBh4B,GAAM,IAE3DpO,EAAKsnC,SAAS,YAAY,WACxBl5B,EAAKpO,KAAK,kBAAmBA,EAAe,aAI5ComC,EAAiB,eAAgB,cAAeh4B,GAAM,IACxDpe,EAAMyB,QAAO,WACX,OAAOm1C,EAAQa,YACd,SAA+BT,GAChC54B,EAAKpO,KAAK,iBAAkBgnC,cAQzCj3C,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9E31C,UAAU,cAAc,WACvB,MAAO,CACLsE,SAAU,IACVxB,QAAS,cACT4C,KAAM,SAASzF,EAAOoe,EAAMpO,EAAM0nC,GAC5B1nC,EAAKpQ,eAAe80C,IAEnBt2B,EAAKpO,KAAK,cACboO,EAAKpO,KAAK,YAAa,kBAK9BjQ,UAAU,UAAU,CAAC,QAAS,SAAU,SAASo2C,EAAO93C,GACvD,MAAO,CACLgG,SAAU,IACVE,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe80C,GAAxB,CAEA,IAAI72C,EAAKQ,EAAO2R,EAAK2nC,SACrB,OAAO,SAAS33C,EAAOoe,EAAMpO,GAEtB6lC,EAAYz3B,EAAMs3B,KAEjBS,EAAM1tC,OAAO,sBAAwB2V,EAAKpO,KAAK,SACjDoO,EAAKpO,KAAK,OAAQ,UAGhBmmC,EAAM1tC,OAAO,cAAgB2V,EAAKpO,KAAK,aACzCoO,EAAKpO,KAAK,WAAY,IAGpBmmC,EAAM1tC,OAAO,gBAAmBuH,EAAK4nC,WAAc5nC,EAAK6nC,YAAe7nC,EAAK8nC,SAC9E15B,EAAK5gB,GAAG,WAAW,SAASC,GAC1B,IAAIs6C,EAAUt6C,EAAMu6C,OAASv6C,EAAMs6C,QAEnB,KAAZA,GAA8B,KAAZA,KAEwC,IAAxDrC,EAAoBtqC,QAAQ3N,EAAM8F,OAAO2yC,WAAqBz4C,EAAM8F,OAAO00C,mBAG7Ex6C,EAAMgD,iBAERT,EAAMmB,QAGR,WACEtD,EAAGmC,EAAO,CAAEk4C,OAAQz6C,mBASnCsC,UAAU,aAAc,CAAC,QAAS,SAASo2C,GAC1C,OAAO,SAASn2C,EAAOoe,EAAMpO,GACvBA,EAAKpQ,eAAe80C,KAEpByB,EAAM1tC,OAAO,aAAgB2V,EAAKpO,KAAK,aAAgB6lC,EAAYz3B,EAAMs3B,IAC3Et3B,EAAKpO,KAAK,WAAY,OA9Z5B,CAoaGyT,OAAQA,OAAO1mB,iECzalBA,QAAQC,OAAO,WAAY,CAAC,OAC3B+C,UAAU,WAAY,CAAC,KAAM,SAAUkE,GACvC,aAgCA,MAAO,CACNjE,MAAM,CACL42C,QAAe,IACf73B,IAAe,QACfiF,IAAe,QACfgD,KAAe,SACfmxB,SAAe,aACfC,SAAe,aACfC,UAAe,cACfC,UAAe,cACfC,WAAe,eACfC,WAAe,eACfC,aAAe,iBACfC,MAAe,UACfC,MAAe,UACfC,YAAe,gBACfC,YAAe,iBAEhBvqC,YAAa,2BACPzL,QAAS,UACToP,SAAS,EACTxM,KAlDI,SAAUtH,EAAQyG,EAAUxG,GAElCA,EAAO+5C,WACVh6C,EAAOg6C,SAAW,WAAW,OAAO,IAGjC/5C,EAAOi6C,YACVl6C,EAAOk6C,UAAY,WAAW,OAAO,IAGlCj6C,EAAOw6C,cACVz6C,EAAOy6C,YAAc,WAAW,IAAIviB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOs6C,QACVv6C,EAAOu6C,MAAQ,cAGZt6C,EAAOy6C,cACV16C,EAAO06C,YAAc,WAAW,IAAIxiB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOu6C,QACVx6C,EAAOw6C,MAAQ,eA4BVz6C,WAAY,yBAInBA,WAAW,qBAAsB,CAAC,SAAU,WAAY,SAAWC,EAAQuC,GAC3E,aAEAvC,EAAO26C,UAAar1B,OAAO7jB,eAAe,iBAAmB6jB,OAAOs1B,UAAUC,iBAAmB,EACjG76C,EAAO86C,SAAWl8C,QAAQoiB,KAAKhhB,EAAOy4C,SAEtCz4C,EAAO4gB,IAAM5gB,EAAO4gB,KAAO,EAC3B5gB,EAAO6lB,IAAM7lB,EAAO6lB,KAAO,EAC3B7lB,EAAO6oB,KAAO7oB,EAAO6oB,MAAQ,GAE7B7oB,EAAOi6C,SAAWj6C,EAAO86C,WAAa96C,EAAOy4C,QAE7Cz4C,EAAOm6C,UAAYn6C,EAAOm6C,WAAa,GACvCn6C,EAAO+6C,cAAgB/6C,EAAOm6C,UAAYn6C,EAAO6oB,KACjD7oB,EAAOo6C,WAAap6C,EAAOo6C,YAAc,GACzCp6C,EAAOq6C,WAAar6C,EAAOq6C,YAAcr6C,EAAOm6C,UAChDn6C,EAAOs6C,aAAet6C,EAAOs6C,cAAgBt6C,EAAOo6C,WAEpD,IAAI1nB,EAAO1yB,EAAO6lB,IAAM7lB,EAAO4gB,IAC/Bo6B,EAAQtoB,EAAO1yB,EAAO6oB,KACtBoyB,EAAUj7C,EAAOsD,OAAO,WAAW,WAClCtD,EAAOi6C,SAAWj6C,EAAO86C,WAAa96C,EAAOy4C,WAG9CyC,EAAW,SAAUC,GACpB,OAAQA,EAAM,GAAKH,EAAQtoB,GAG5B1yB,EAAOo7C,cAAgB,WACtB,OAAO,IAAIz6C,MAAMq6C,IAGlBh7C,EAAOq7C,cAAgB,SAAUF,GAChC,IAAIG,EAAQ,EAAEt7C,EAAO6oB,KAErB,OADW7oB,EAAOm6C,UAAUmB,GAAQH,EAAMG,IAI3Ct7C,EAAOu7C,WAAa,SAAUJ,GAC7B,OAAOD,EAASC,IAAUn7C,EAAOy4C,QAAQz4C,EAAO4gB,KAGjD5gB,EAAOw7C,aAAe,WACjBx7C,EAAOk6C,cAAgBl6C,EAAOg6C,YACjCh6C,EAAO06C,YAAY,CAACe,OAAOz7C,EAAOy4C,UAAU3uC,MAAK,WAChD9J,EAAOy4C,QAAUz4C,EAAO4gB,IACxB5gB,EAAOw6C,MAAM,CAACiB,OAAOz7C,EAAOy4C,cAK/Bz4C,EAAO07C,SAAW,SAAUP,GAC3B,IAAKn7C,EAAOg6C,WAAY,CACvB,IAAI2B,EAAW/8C,QAAQoiB,KAAKhhB,EAAO4gB,IAAMs6B,EAASC,IAElDn7C,EAAOy6C,YAAY,CAACgB,OAAOE,IAAW7xC,MAAK,WAC1C9J,EAAOy4C,QAAUkD,EACjBp5C,GAAS,WACRvC,EAAOu6C,MAAM,CAACkB,OAAOz7C,EAAOy4C,kBAMhCz4C,EAAOsB,IAAI,YAAY,WACtB25C,UAID3jC,IAAI,CAAC,iBAAkB,SAAUjI,GACjC,aAEAA,EAAeusC,IAAI,2BAElB,0iDCtHF,SAASC,EACP7mC,EACAL,EACA6C,EACAskC,EACAh2C,EACAi2C,EACAC,EACAC,EACAC,EACA35C,GAEA,MAAM45C,EAAKp9C,KA4CX,SAASq9C,EAAOC,GAEdN,EAAqBO,cAAcL,EAAgB,CAAEI,GAAAA,IAClDvyC,MAAMvG,IAhBX,IAAqBg5C,EAiBfvnC,EAAWwnC,OAASj5C,EAjBLg5C,GAkBI,IAAPF,EAAc,OAAS,OAjBvC1nC,EAAQwE,OAAOsjC,YACb,CACEF,IAAAA,GAEF,KAcEh6C,GAAS,KACPyS,EAAWhS,eAGdoe,MAAM26B,EAAqBW,gBA8MhCP,EAAG/vC,QArGH,WACEmZ,QAAQo3B,MAAM,oCAAqC3nC,EAAW4nC,SAC9D5nC,EAAW6nC,OAAS,OAEpB,MAAMC,EAAY9nC,EAAW+nC,SAASC,MAChCC,EAAajoC,EAAW+nC,SAASG,UACjCC,EACJnoC,EAAW+nC,SAASK,iBAAmBpoC,EAAW+nC,SAASG,UACvDG,EAAeroC,EAAW+nC,SAASO,aACnCC,EAAmBvoC,EAAW+nC,SAASS,gBACvCC,EAAgB58B,KAAKgF,IACzBT,SAASs4B,gBAAgBC,aACzBr4B,OAAOs4B,aAAe,GAElBC,EAAez4B,SAASs4B,gBAAgBI,YAG9C14B,SAASs4B,gBAAgBK,MAAMC,YAAY,oBAAqBlB,GAChE13B,SAASs4B,gBAAgBK,MAAMC,YAAY,qBAAsBf,GACjE73B,SAASs4B,gBAAgBK,MAAMC,YAC7B,4BACAb,GAEF/3B,SAASs4B,gBAAgBK,MAAMC,YAC7B,uBACAX,GAEFj4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,2BACAT,GAEFn4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,wBACAP,GAEFr4B,SAASs4B,gBAAgBK,MAAMC,YAC7B,uBACAH,GAGF,IAAII,GAAK,EAET,MAAMC,EAA8B36C,GAChB,OAAVA,GAAkBA,EAAMyR,EAAWJ,WAAc,GAGrDupC,EAAwBpC,EAAqBqC,QACjDlC,GACApyC,KAAKo0C,GACDG,EAAuBtC,EAAqBqC,QAChDnC,GACAnyC,KAAKo0C,GACPp4C,EAAG0U,IAAI,CAAC2jC,EAAuBE,IAC5Bv0C,MAAK,IAAiC,IAA/Bw0C,EAAcC,GAAiB,EACrCvpC,EAAW4nC,QAAU0B,EACrBtpC,EAAWwnC,OAAS+B,EAEhBvpC,EAAW4nC,QAAQ4B,aAAexpC,EAAWwnC,OAAOH,GACtD4B,GAAK,EAELjpC,EAAWwnC,OAAOH,IAAK,EAGa,iBAAlCrnC,EAAW+nC,SAAS0B,WACtBrC,EAAO6B,GAzMbzmC,EAAOi5B,GAjBT,WAAoB,QAClB,MAAMiO,EAAS1pC,EAAW+nC,SAAS2B,OAC7B9B,IAAU5nC,MAAAA,GAAA,UAAAA,EAAY4nC,eAAZ,mBAAqB4B,mBAArB,UAAkCp0C,IAE5Cu0C,EACJrQ,OAAOt5B,EAAW+nC,SAAS6B,kBAC3BtQ,OAAOt5B,EAAW+nC,SAAS8B,qBACzBvQ,OAAOt5B,EAAW+nC,SAAS6B,iBAE/B,SAAMhC,IAAa+B,GAAYD,GAQrBI,GAAa,aAAe,cAAe,KAAM,CACzDlqC,SAAU,YA8MR,IAAI2nC,EAAM,GAKRA,EAHAvnC,EAAW+nC,SAAS2B,SACnB1pC,EAAW+nC,SAASgC,gBAEf,OAEA,UAGRpqC,EAAQwE,OAAOsjC,YACb,CACEF,IAAAA,EACAO,UAAAA,EACAG,WAAAA,EACAQ,cAAAA,EACAI,aAAAA,GAEF,KAGF,MAAME,EAAQ34B,SAAS45B,cAAc,SACrC55B,SAASpB,KAAKi7B,YAAYlB,GAC1BA,EAAMmB,MAAMC,WACV,2BAA6BnqC,EAAW+nC,SAASC,MAAQ,kBAG5D57B,MAAM26B,EAAqBW,iBAKhCP,EAAGiD,MA5MH,WACE,MAAMZ,EAAcxpC,EAAW4nC,QAAQ4B,YAEvC,GAAIA,GAAeA,EAAYp0C,GAAI,CAEjC,MAAMi1C,EAAUvD,EACbuD,UACAlmC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,eAC9CC,qBAAoB,GACpBrN,MACCl9B,EAAW+nC,SAASyC,iBAClB,yCAEHC,GAAG,MACHv8C,OAAO,UAEV44C,EACG4D,KAAKL,GACLv1C,MAAK,WACJ,OAAOkyC,EAAI2D,gBAAgBC,aAAa,CACtCx1C,GAAIo0C,EAAYp0C,GAChBy1C,QAAQ,EACRC,YAAa,YAEZC,YAEJj2C,MAAK,WACJ0N,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAGbwM,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM,YAAa6nB,QA6KnCkwB,EAAGC,OAASA,EACZD,EAAG6D,SAzKH,WACE,MAAM3M,EAAWvtC,EAAGkF,QACdwzC,EAAcxpC,EAAW4nC,QAAQ4B,YA4DvC,OA1DIA,GAAeA,EAAYp0C,IAC7B4xC,EAAI2D,gBACDM,YAAY,CACXC,MAAO1B,EAAYp0C,GACnB+1C,YAAY,EACZC,eAAe,IAEhBL,SAASj2C,MAAK,SAAUpD,GACvB2sC,EAAS3nC,QACP20C,GAAAA,CAAK35C,EAAK45C,KAAKz/C,MAAM,IAAI,SAAU0/C,GACjC,IAAIC,EASJ,GAPsB,OAAlBD,EAAIE,YACND,EACExrC,EAAW+nC,SAAS2D,eACpB1rC,EAAW4nC,QAAQ3uB,MACnB,UAAYsyB,EAAII,WAGE,QAAlBJ,EAAIE,UACN,OAAQzrC,EAAW+nC,SAAS6D,iBAC1B,IAAK,gBACHJ,EAASD,EAAIM,OACT7rC,EAAW+nC,SAAS+D,WAAaP,EAAIM,OACrC,SACJ,MAEF,IAAK,cACHL,EAASD,EAAIM,OACTN,EAAIQ,KAAKC,OAAST,EAAIQ,KAAKE,SAC3B,SACJ,MAEF,IAAK,iBACHT,EAASD,EAAIM,OAASN,EAAIQ,KAAKE,SAAW,SAC1C,MAEF,QACET,EAASD,EAAIM,OACT7rC,EAAW+nC,SAAS+D,WAAaP,EAAIM,OACrC,SAKV,MAAO,CACLL,OAAQA,EACR3d,QAAS0d,EAAIW,KACbC,UAAWC,GAAAA,CAAOb,EAAIY,WAAWx6B,OAAO,+BAK/CvF,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,MAIbonB,EAAS7wC,SA4GlB25C,EAAGkF,eA7OH,WACE,MAA4C,YAArCrsC,EAAW+nC,SAASuE,aAA6B,OAAS,OA6OnE,MAAMC,EAAgB,CACpB7C,OAAQ,CAAC,SAAU,OAAQ,UAAW,UAAW,aACjD8C,QAAS,CAAC,YAKZlvC,OAAO+6B,eAAer4B,EAAY,cAAe,CAC/CvF,MACE,IAAIpK,EAAS2P,EAAW+nC,SAAS0E,aAMjC,OALIF,EAAc7C,OAAOrmC,SAASrD,EAAW6nC,QAC3Cx3C,EAAS2P,EAAW+nC,SAAS2E,cACpBH,EAAcC,QAAQnpC,SAASrD,EAAW6nC,UACnDx3C,EAAS2P,EAAW+nC,SAAS4E,gBAExBt8C,KAIXigB,OAAOs8B,iBACL,WACA,SAAU3sC,GACa,SAAjBA,EAAIvO,KAAKuO,IACXmnC,GAAO,GACmB,SAAjBnnC,EAAIvO,KAAKuO,KAClBmnC,GAAO,MAGX,2eCvTJ,SAASyF,EAAS7sC,EAAYF,GAE5B,MAAM3H,EAAS2H,EAAUo5B,SAGzBl5B,EAAW+nC,SAAW,CACpB+E,OAAQ,UACRC,MAAM,GAGRC,GAAAA,CAAO70C,GAAQ,SAAU5J,EAAOqB,GAChB,KAAVrB,GAAiB0+C,GAAAA,CAAO1+C,KACZ,SAAVA,IACFA,GAAQ,GAGI,UAAVA,IACFA,GAAQ,GAGVyR,EAAW+nC,SAASn4C,GAAOrB,MAI/ByR,EAAWJ,SAAWI,EAAW+nC,SAASnoC,SAC1CI,EAAWwnC,OAAS,CAAEH,IAAI,GAC1BrnC,EAAW4nC,QAAU,GAWvB,SAASsF,EACPC,EACA/uC,EACAgvC,EACAC,EACAC,GAEAlvC,EAAkBgB,WAAU,GAGvBguC,EAAcpjD,SAAS0R,QAAQjB,MAClC2yC,EAAcpjD,SAAS0R,QAAQjB,IAAM,IAIvC2yC,EAAcpjD,SAAS0R,QAAQjB,IAAI,qBACjC,gCAEF2yC,EAAcpjD,SAAS0R,QAAQjB,IAAI,iBAAmB,WACtD2yC,EAAcpjD,SAAS0R,QAAQjB,IAAI8yC,OAAS,WAG5CF,EAA4BG,UAAUF,GAGtCH,EACG31C,MAAM,MAAO,CACZkxB,UAAU,IAEXlxB,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAasyC,EACb1iD,WAAY,4BAEbyM,MAAM,aAAc,CACnBgE,IAAK,UACLL,YAAauyC,EACb3iD,WAAY,2BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAawyC,EACb5iD,WAAY,4BAEbyM,MAAM,WAAY,CACjBgE,IAAK,QACLL,YAAayyC,EACb7iD,WAAY,yBAEbyM,MAAM,gBAAiB,CACtBgE,IAAK,aACLL,YAAa0yC,EACb9iD,WAAY,8BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAa2yC,EACb/iD,WAAY,0OC3FlB,SAASgjD,EACP/tC,EACAwC,EACAwrC,EACAhH,EACAl2C,EACAi2C,EACAG,EACAD,GAEA,MAAME,EAAKp9C,KAIX,SAASmmC,EAAY3gC,GACnB,OAAO,SAAU0nB,GACfkwB,EAAG8G,OAAO1+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMw8C,EAAQF,EACXG,SACAC,YACCpuC,EAAW+nC,SAASsG,0BAClB,yBAEHC,WAAW,oBACXC,SAAS,OAEZP,EAAStD,KAAKwD,IAIlB,SAASM,IACPxuC,EAAWyuC,SAAU,EAkBvB,SAASC,IACH1uC,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAAS4lC,IACP2B,EAAGwH,KAAO,GACVxH,EAAGyH,QAAU,KACbzH,EAAG0H,UAAY,KACf1H,EAAG2H,SAASC,eACZ5H,EAAG2H,SAASE,uBAELhvC,EAAW4nC,QAAQ4B,YAE1BxpC,EAAWivC,gBAAiB,EAiD9B9H,EAAG/vC,QAjFH,WACEmZ,QAAQo3B,MAAM,sCAAuC3nC,EAAW4nC,SAChE5nC,EAAW6nC,OAAS,UAGpB/2C,EAAG0U,IAAI,CACLuhC,EAAqBmI,WAAWhI,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBmI,WAAWjI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,IAAOkL,EAAWyuC,SAAU,KAsEtCtH,EAAGgI,OA1CH,WACEnvC,EAAWyuC,SAAU,EAEjBzuC,EAAW4nC,QAAQ4B,aAAexpC,EAAW4nC,QAAQ4B,YAAYp0C,GACnE4xC,EAAI2D,gBACDP,MACCgF,GAAAA,CACE,CACEh6C,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,GACnCi6C,WAAYrvC,EAAW+nC,SAASsH,WAChCC,SACEtvC,EAAW+nC,SAAS2D,eAAiB1rC,EAAW4nC,QAAQ3uB,MAE5DkuB,EAAGwH,OAGN5D,SAASj2C,MAAK,kBACNqyC,EAAG8G,OAAOkB,OAEjB,MAAMjB,EAAQF,EACXG,SACAC,YACCpuC,EAAW+nC,SAASwH,0BAClB,2BAEHjB,WAAW,oBACXnqC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjD0D,EAAStD,KAAKwD,MAEfp5C,KAAK0wC,GACL1wC,KAAK45C,GACLtiC,MAAM8jB,EAAY,WAClBsf,QAAQhB,IAEXA,IACAte,EAAY,YAOhBiX,EAAGsI,KAhDH,WACEjK,IACAkJ,KAgDFvH,EAAGwH,KAAO,GACVxH,EAAG8G,OAAS,GCjId,SAASyB,EAAW1vC,EAAY2vC,GAC9B,MAAMC,EAAgB,CACpBx6C,GAAI,MACJkW,MAAOtL,EAAW+nC,SAASz8B,OAGvB07B,EAAM,GAyEZ,OAvEAA,EAAI6I,QAAU7vC,EAAW+nC,SAAS+H,OAAS,QAE3C9I,EAAI+I,YAAcJ,EAChB3I,EAAI6I,QAAU,oBACdD,EACA,CACE5c,OAAQ,CACNgd,OAAQ,OACRx0C,IAAKwrC,EAAI6I,QAAU,4BAErBrD,QAAS,CACPwD,OAAQ,OACRx0C,IAAKwrC,EAAI6I,QAAU,6BAErBI,UAAW,CACTD,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,8BAKzB7I,EAAI2D,gBAAkBgF,EACpB3I,EAAI6I,QAAU,wBACdD,EACA,CACEzpC,OAAQ,CACN6pC,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,yBAErBjF,aAAc,CACZoF,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,uCAErBzF,MAAO,CACL4F,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,+BAErB5E,YAAa,CACX+E,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,wCAErBK,iBAAkB,CAChBF,OAAQ,OACRx0C,IAAKwrC,EAAI6I,QAAU,0CACnBn0C,QAAS,CACP,oBAAgBwC,GAElBiyC,iBAAkBvmD,QAAQ6c,UAE5B2pC,mBAAoB,CAClBJ,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,6CAErBQ,QAAS,CACPL,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,mCAKzB7I,EAAIsJ,YAAcX,EAChB3I,EAAI6I,QAAU,oBACdD,EACA,CACEzpC,OAAQ,CACN6pC,OAAQ,MACRx0C,IAAKwrC,EAAI6I,QAAU,uBAKlB7I,2aChET,SAASuJ,EACPvlD,EACAgV,EACAzS,EACAijD,EACAC,EACAjuC,EACApI,EACA4zC,EACAhH,EACAD,EACAG,EACAD,EACAyJ,GAEA,MAAMvJ,EAAKp9C,KACX,IAAI4mD,EACAC,EACAC,EACAC,EAIAC,GAAmB,EAkCvB,SAASC,IAEPlgD,EAAAA,GAAAA,IAAO,CACLi2C,EAAqBmI,WAAWhI,GAC7BpyC,MAAK,IAAMyb,QAAQo3B,MAAM,6BACzBv7B,MAAM26B,EAAqBW,gBAC9BX,EAAqBmI,WAAWjI,GAC7BnyC,MAAK,IAAMyb,QAAQo3B,MAAM,4BACzBv7B,MAAM26B,EAAqBW,kBAC7B5yC,MAAK,KAhBJkL,EAAW+nC,SAAS2B,OACtBlnC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,eAoB/C,SAASqxC,IACP1jD,GAAS,WACP,MAAMT,EAAU2jD,EAAU,GAAGS,uBAAuB,iBAAiB,GAEjEpkD,IACFA,EAAQqkD,UAAYrkD,EAAQskD,iBAKlC,SAASC,EAAexjB,GACtB,MAAMqgB,EAAQF,EACXG,SACAC,YAAYvgB,GACZygB,WAAW,yBAA2BtuC,EAAW+nC,SAASuE,cAC1DnoC,OAAOva,QAAQkD,QAAQsjB,SAASk6B,cAAc,mBAEjD0D,EAAStD,KAAKwD,GAGhB,SAASoD,IACPnK,EAAG8G,OAAS,GACZoD,EACE,8CAKJ,SAASnhB,EAAY3gC,GACnB,OAAO,SAAU0nB,GAAK,UAEC,OAAnB,UAAAA,EAAIvlB,YAAJ,eAAU6/C,OACkB,mBAA5B,UAAAt6B,EAAIvlB,YAAJ,mBAAUqnC,eAAV,eAAmB9/B,OAEnB+G,EAAW+nC,SAAS2B,QAAS,EAC7B1pC,EAAW+nC,SAASyJ,eAAgB,EACpChvC,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,cAGZunC,EAAG8G,OAAO1+C,GAAQ0nB,EAAIvlB,KACtBy1C,EAAG8G,OAAS,GACZoD,EAAe,yBACfJ,MAKN,SAASQ,EAAY5jB,GAEfkjB,IAIJA,GAAmB,EACnB/J,EAAI+I,YACD/c,OAAOnF,GACPkd,SAASj2C,MAAK,SAAUpD,GACvBy1C,EAAG8G,OAAS,GACZ,IAAIyD,GAAkB,EAClBzE,GAAAA,CAAOjtC,EAAW4nC,QAAQ4B,eAC5BxpC,EAAW4nC,QAAQ4B,YAAc,CAC/Bp0C,GAAI1D,EAAK83C,YAAYp0C,IAEvBs8C,GAAkB,GAEf1xC,EAAW4nC,QAAQ+J,qBACtB3xC,EAAW4nC,QAAQ+J,oBAAqB,EACxCD,GAAkB,GAGhBA,GACF3K,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAEhCiJ,EAAU,GAAGiB,aAAaC,QAAQ,IAElCZ,OAED7kC,MAAM8jB,EAAY,qBAClBsf,SAAQ,KACPuB,GAAmB,MA4EzB,SAASe,IAEL9xC,EAAW4nC,SACX5nC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYp0C,IAE/B4xC,EAAI2D,gBACDlwC,IAAI,CACHrF,GAAI4K,EAAW4nC,QAAQ4B,YAAYp0C,KAEpC21C,SAASj2C,MAAK,SAAUpD,UAChBy1C,EAAG8G,OAAO6D,eAGbpgD,EAAKm5C,SACP7qC,EAAW4nC,QAAQ4B,YAAYqB,QAAS,EACxC9D,EAAqBO,cACnBJ,EACAlnC,EAAW4nC,SAEV9yC,MAAMvG,IACLyR,EAAW4nC,QAAUr5C,KAEtB6d,MAAM26B,EAAqBW,gBAEL,cAArBh2C,EAAKqgD,YACPvvC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAE7C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,gBAIhDwM,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACHoxC,IACA,MACF,KAAK,IACHxuC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAQ1B,SAAS+6B,EAAMjN,GACb,MAAMmH,EAAOyE,EAAU,GAAGiB,aAAaK,UAEnClN,GAA6B,KAAnBA,EAAOH,SAAkBG,EAAOmN,UAK1CnN,GAA6B,KAAnBA,EAAOH,SAKR,KAATsH,GAKJuF,EACErC,GAAAA,CACE,CACElD,KAAMA,GAERlsC,EAAW4nC,UAqCjB,SAASqD,IAAc,QACjBjrC,MAAAA,GAAJ,UAAIA,EAAY4nC,eAAhB,iBAAI,EAAqB4B,mBAAzB,OAAI,EAAkCp0C,IACpC4xC,EAAI2D,gBACDM,YAAY,CACXC,MAAOlrC,EAAW4nC,QAAQ4B,YAAYp0C,GACtC+8C,cAAc,EACd/8C,GAAI07C,QAAiB5yC,IAEtB6sC,SAASj2C,MAAK,SAAUpD,GAIvB,UAHOy1C,EAAG8G,OAAOzE,YAGb93C,EAAKuC,MAAO,CACd,IAAIm+C,GAAQ,EACRhrC,EAAI,EACR,IAAKA,EAAI,EAAGgrC,GAAQ,EAAOhrC,EAAI1V,EAAK45C,KAAKnyC,OAAQiO,IAAK,CACpD,MAAMrI,EAAIszC,GAAAA,CAAMryC,EAAWsyC,SAAU,CACnCl9C,GAAI1D,EAAK45C,KAAKlkC,GAAGhS,KAEnB,GAAK2J,EAYMrN,EAAK45C,KAAKlkC,GAAGywB,OACtB94B,EAAE84B,MAAO,OAbH,CACN,MAAMhK,EAAUn8B,EAAK45C,KAAKlkC,GAE1B,GAAIymB,EAAQ0kB,cAAgB1kB,EAAQqe,KAAM,CACxC,MACMnU,EADKnuC,QAAQkD,QAAQ+gC,EAAQqe,MACnBz+B,KAAK,QACjBsqB,EAAKya,WAAW,UAClB3kB,EAAQ4kB,YAAc1a,GAG1Bqa,GAAQ,EACRpyC,EAAWsyC,SAAS9nD,KAAKqjC,GAMI,QAA3Bn8B,EAAK45C,KAAKlkC,GAAGqkC,WAAwB/5C,EAAK45C,KAAKlkC,GAAGywB,OA/C3CziC,EAgDK1D,EAAK45C,KAAKlkC,GAAGhS,GA/ChC4xC,EAAIsJ,YACRnqC,OAAO,CACN/Q,GAAIA,EACJyiC,MAAM,IAEPkT,SAAS3+B,OAAM,SAAU6K,GACxB1G,QAAQnhB,MAAM6nB,OA6CNm7B,GAEFnB,IAGEv/C,EAAK45C,KAAKlkC,EAAI,GAAGywB,OACnBiZ,EAAgBp/C,EAAK45C,KAAKlkC,EAAI,GAAGhS,IAG/B07C,IAAkB9wC,EAAW4nC,QAAQ+J,oBACvC5K,EAAqBO,cAAcJ,EAAiB,IAC/ClnC,EAAW4nC,QACd+J,oBAAoB,IACnB78C,MAAMvG,IACPyR,EAAW4nC,QAAUr5C,KAlEnC,IAAuB6G,KAuEhBgX,OAAM,SAAU6K,GACf,OAAQA,EAAI4wB,QACV,KAAK,IACHrlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OApY1BkwB,EAAG8G,OAAS,GACZjuC,EAAWsyC,SAAW,GACtBnL,EAAGuL,aAAe,CAChBC,gBAAgB,EAChBC,YAAY,EACZC,OAAO,EACPvgD,MAAM,EACNwgD,WAAY,UAEd3L,EAAGuJ,qBAAuBA,EAE1BvJ,EAAG4L,OAAS,CAEVnoD,KAAM,IAGRu8C,EAAG6L,cAAgB,CACjBC,uBAAuB,GA6gBzB9L,EAAG/vC,QApJH,WACEmZ,QAAQo3B,MAAM,mCAAoC3nC,EAAW4nC,SAC7D5nC,EAAW6nC,OAAS,OACpB7nC,EAAWyuC,SAAU,EACrBzuC,EAAW+nC,SAASmL,UAAW,EAE/B/L,EAAGgM,aAAe,GAGhBnzC,EAAW4nC,QAAQ4B,aACnBxpC,EAAW4nC,QAAQ4B,YAAYqB,OAG/BmG,KAGAc,IAGAlB,EAAsBJ,EAAUvF,EAAa,KAC7C4F,EAAyBL,EAAUsB,EAAgB,MAGrDnB,EAAYyC,EAAE,iBAAiBxB,aAAa,CAC1CyB,YAAarzC,EAAW+nC,SAASuL,oBAAsB,iBACvDlpD,OAAQ,CACNmpD,MAAO,SAAUC,EAAQzO,GACvBiN,EAAMjN,IAER0O,MAAO,WACL1pD,KAAK2pD,gBAuHbvM,EAAG6K,MAAQA,EACX7K,EAAGwM,aAjQH,WACE,MAAMzH,EAAOyE,EAAU,GAAGiB,aAAaK,UAG1B,KAAT/F,IAKJuF,EACErC,GAAAA,CACE,CACElD,KAAMA,GAERlsC,EAAW4nC,UAIf+I,EAAU,GAAGiB,aAAa8B,aAgP5BvM,EAAGx4C,UA1ZH,SAAmB+C,GACjB,GAAIA,EAAKie,KA3ISikC,SA6IhB,YADAtC,IAIF,MAAMuC,EAAK,IAAIC,SAEfD,EAAGzvB,OAAO,OAAQ1yB,EAAK7B,MAEvBuK,EACGopC,KACCxjC,EAAW+nC,SAAS+H,OAClB,0BACA9vC,EAAW4nC,QAAQ4B,YAAYp0C,GAC/B,4BACA4K,EAAW+nC,SAASz8B,MACtBuoC,EACA,CACE1D,iBAAkBvmD,QAAQ6c,SAC1B/K,QAAS,CACP,oBAAgBwC,KAIrBpJ,MAAK,SAAUpD,IACdA,EAAOA,EAAKA,MAEH0D,IACP+xC,EAAG8G,OAAS,GAEZwD,EACErC,GAAAA,CACE,CACElD,KACE,YACAlsC,EAAW+nC,SAAS+H,OACpB,0BACA9vC,EAAW4nC,QAAQ4B,YAAYp0C,GAC/B,iCACA1D,EAAK0D,GACL,UACA4K,EAAW+nC,SAASz8B,MACpB,qBACA5Z,EAAKnC,KACL,OACFgjD,aAAc7gD,EAAK0D,IAErB4K,EAAW4nC,WAIf1X,EAAY,oBAEbA,EAAY,oBAsWnBiX,EAAG4M,WAAY,EACf5M,EAAG6M,kBAAmB,EACtB7M,EAAG8M,iBAAmB,GACtB9M,EAAG+M,iBAxHH,WACO/M,EAAG4M,UAgENxjC,QAAQnhB,MAAM,8BA/DdmhB,QAAQN,IAAI,mBACZk3B,EAAG4M,WAAY,EACf5M,EAAGuJ,qBAAqByD,OACrBr/C,MAAK,KACJqyC,EAAGuJ,qBAAqB0D,iBACxB,MAAMC,EAAkB/3B,KAAKg4B,MAC7BnN,EAAG6M,kBAAmB,EAGtB,MAAMO,EAASpN,EAAGuJ,qBAAqB8D,YACjCC,EAAW,IAAIC,aACf5rC,EAAS2rC,EAASE,wBAAwBJ,GAC1CK,EAAWH,EAASI,iBAC1B/rC,EAAOgsC,QAAQF,GAEfA,EAASG,QAAU,GACnB,MAAMC,EAAgB,IAAIC,WAAWL,EAASM,mBACxCrkC,EAA6B,IAAvBmkC,EAAc77C,OAEpBg8C,EAAiBvrD,QAAQkD,QAC7BsjB,SAAS8gC,uBAAuB,kBAChC,GAEIkE,EAAexrD,QAAQkD,QAC3BsjB,SAAS8gC,uBAAuB,gBAChC,GAEI5pC,EAAI,KAER,IAAK6/B,EAAG4M,WAAa5M,EAAG6M,iBAGtB,OAFAmB,EAAepM,MAAMsM,UAAY,QACjCD,EAAaE,UAAY,YAI3BC,sBAAsBjuC,GAEtBstC,EAASY,qBAAqBR,GAC9B,IAAIS,EAAM,EACVT,EAAclqD,SAASyD,IACrBknD,GAAOlnD,KAET,MAAMmnD,EAAW7pC,KAAKD,IAAI,EAAG6pC,EAAM5kC,EAxBzB,KAyBVskC,EAAepM,MAAMsM,UAAY,SAAWK,EAAW,IAEvD,MAAMh4B,EAAOpB,KAAKg4B,MAAQD,EACpBsB,EAAKj4B,EAAO,IAEZk4B,EACJzO,EAAGuJ,qBAAqBmF,SAASn4B,EAAO,KACxC,KACC,KAAO7R,KAAKiqC,MAAMH,EAAK,KAAK9pD,OAAO,GAEtCupD,EAAaE,UAAYM,GAG3BtuC,OAED8E,OAAO2pC,IACNxlC,QAAQnhB,MAAM2mD,GACd5O,EAAG4M,WAAY,OA2DvB5M,EAAG6O,gBA9BH,WACE,MAAMnmD,EAAOs3C,EAAG8O,gBACVC,EAAWC,IAAIC,gBAAgBvmD,GACrCs3C,EAAG8M,iBAAmBiC,GA4BxB/O,EAAGkP,gBA9CH,WACE,MAAMxmD,EAAOs3C,EAAG8O,gBAChB9O,EAAG4M,WAAY,EACf5M,EAAG6M,kBAAmB,EACtB7M,EAAGuJ,qBAAqB9gC,QAIXu3B,EAAG4L,OAAOnoD,KAIlB0rD,QAAQzmD,IAmCfs3C,EAAGoP,kBAtDH,WACEpP,EAAG8O,gBACH9O,EAAG4M,WAAY,EACf5M,EAAG6M,kBAAmB,EACtB7M,EAAGuJ,qBAAqB9gC,SAmD1Bu3B,EAAG8O,cAvBH,WAOE,OANK9O,EAAG6M,mBACNzjC,QAAQN,IAAI,qBACZk3B,EAAG6M,kBAAmB,EACtB7M,EAAGuJ,qBAAqBuF,iBAEb9O,EAAGuJ,qBAAqB1F,YAkBvC7D,EAAGmK,gBAAkBA,EAGrBtmD,EAAOsB,IAAI,YA9WX,WACEkkD,EAAUtiD,OAAO0iD,GACjBJ,EAAUtiD,OAAO2iD,GACjB1J,EAAG8O,gBAEHrF,EAAsB,KACtBC,EAAyB,QAyW3B7wC,EAAW1T,IAAI,aAtWf,SAAoBoF,EAAMnH,GACpBA,GACFA,EAASisD,GAAAA,CAAQx2C,EAAWsyC,kqBC5PlC,MAAMvL,EAOJ54B,YAAYxO,EAASK,EAAYlP,GAAI,oBACnC/G,KAAK0sD,cAAgB,IAAIN,IAAIn2C,EAAW+nC,SAAS2O,SAASC,OAC1D5sD,KAAK6V,SAAWI,EAAW+nC,SAASnoC,SACpC7V,KAAK+G,GAAKA,EACV/G,KAAK4V,QAAUA,EA4CjBi3C,QAAQhnD,EAAKrB,GACX,MAAMsoD,EAAS,UACf,OAAO9sD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB8sD,EAAQjnD,GAAK,KACnC8G,OAEF3M,KAAK4V,QAAQwE,OAAOsjC,YAClB,CAAEoP,OAAAA,EAAQjnD,IAAAA,EAAKrB,MAAAA,GACfxE,KAAK0sD,kBASXrN,QAAQx5C,GACN,MAAMinD,EAAS,UACf,OAAO9sD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB8sD,EAAQjnD,GAAK,CAAC2X,EAAG2C,KACvCxT,EAAQwT,MAEVngB,KAAK4V,QAAQwE,OAAOsjC,YAAY,CAAEoP,OAAAA,EAAQjnD,IAAAA,GAAO7F,KAAK0sD,kBAQ1DvH,WAAWt/C,GACT,MAAMinD,EAAS,aACf,OAAO9sD,KAAK+G,IAAI4F,IACd,EAAA3M,KAAA,UAAAA,KAAwB8sD,EAAQjnD,GAAK,KACnC8G,OAEF3M,KAAK4V,QAAQwE,OAAOsjC,YAAY,CAAEoP,OAAAA,EAAQjnD,IAAAA,GAAO7F,KAAK0sD,kBAuB1DnP,cAAc13C,EAAK8B,GAAsB,IAAhBkF,EAAgB,wDAEvC,OAAO7M,KAAKq/C,QAAQx5C,GAAKkF,MAAMoV,IAC7B,MAAM4sC,EAAU,EAAA/sD,KAAA,UAAAA,KAAgBmgB,IAAS,GAMzC,OALItT,SACKkgD,EAAQ/sD,KAAK6V,UAEpBk3C,EAAQ/sD,KAAK6V,UAAYlO,EAEpB3H,KAAK6sD,QAAQhnD,EAAKknD,GAAShiD,MAAK,IAAMgiD,EAAQ/sD,KAAK6V,eAQ9D8nC,eAAezwB,GACb1G,QAAQnhB,MAAM,gBAAiB6nB,eAnHd4/B,EAAQjnD,EAAKrF,GAE9B,MAAM29B,EAAY7b,IAChB,MAAM0qC,EAAkB,GAAEF,UAC1B,GACExqC,EAAEsqC,SAAW5sD,KAAK0sD,eAClB7mD,IAAQyc,EAAE3a,KAAK9B,KACfmnD,IAAmB1qC,EAAE3a,KAAKmlD,OAC1B,CACA,MAAM,OAAEA,EAAF,KAAU3sC,GAASmC,EAAE3a,KAE3B,OADA6e,QAAQo3B,MAAO,UAAS/3C,cAAgBinD,uBAA6BxqC,GAC7DwqC,GACN,IAAK,gBACHtsD,EAASqF,GACT,MACF,IAAK,gBACHrF,EAASqF,EAAKsa,GACd,MACF,IAAK,mBACH3f,EAASqF,GACT,MACF,QACE2gB,QAAQo3B,MAAM,qBAAsBkP,GAIxC9sD,KAAK4V,QAAQq3C,oBAAoB,UAAW9uB,GAAU,KAG1Dn+B,KAAK4V,QAAQitC,iBAAiB,UAAW1kB,GAAU,cAiD1C+uB,GACT,IAAIlzB,EAASkzB,EACb,GAAsB,iBAAXlzB,EACT,IACEA,EAAShc,KAAK/W,MAAMimD,GACpB,MAAO7nD,GACPmhB,QAAQ2mC,KAAM,oBAAmBD,KAAe7nD,GAChD20B,EAASkzB,EAGb,OAAOlzB,+NCxGX,MAAMozB,EAkBJhpC,YAAYnjB,EAAQyG,GAAU,gBAjBrB,IAiBqB,iBAhBpB,CAGR2lD,iBAAiB,IAaW,kBAXpB,GAWoB,mBAVlB,cAUkB,qBAThB,QASgB,oBARjB,GAQiB,mBAPlB,QAOkB,kBANnB,MAMmB,cALvB,cAMLrtD,KAAKiB,OAASA,EACdjB,KAAKiB,OAAOqsD,WAAattD,KAAKstD,WAC9BttD,KAAK0H,SAAWA,EAGlB2F,UACEmZ,QAAQo3B,MAAM,gCAEI,eAAd59C,KAAKkP,OACPlP,KAAKkP,KAAO,cAIhBq+C,YACE/mC,QAAQo3B,MAAM,kCACd,MAAMR,EAAKp9C,KACXA,KAAKwtD,iBAAmB,CAAC,OACzBxtD,KAAKytD,iBAAmB,KACxBztD,KAAK0tD,wBAA0B,KACtB,EAGT1tD,KAAK2tD,MAAQ3tD,KAAK0H,SAASoZ,KAAK,SAAS,IAAM,GAE/C9gB,KAAK2tD,MAAMC,iBAAmB,KAExBxQ,EAAGuQ,MAAME,WAAaC,EAAAA,GACxB1Q,EAAGuQ,MAAMI,YAAc,MACvB3Q,EAAGuQ,MAAMK,aAAe,KACtB5Q,EAAGuQ,MAAMK,aAAe,KAClB5Q,EAAGuQ,MAAME,WAAaC,EAAAA,IACxB1Q,EAAGuQ,MAAMI,YAAc,EACvB3Q,EAAGuQ,MAAMK,aAAe,KACtB5Q,EAAG6Q,mBAQX7Q,EAAGuQ,MAAMI,YAAc,EACvB3Q,EAAGuQ,MAAMK,aAAe,KACtB5Q,EAAG6Q,gBAKTjuD,KAAK2tD,MAAMO,aAAe,KACxB1nC,QAAQN,IAAI,iBAGdlmB,KAAK2tD,MAAMQ,UAAY,KACrBnuD,KAAKouD,YAGPpuD,KAAK2tD,MAAMU,QAAU,KACnBruD,KAAKsuD,UAAY,aACjBtuD,KAAKiB,OAAOstD,UACZvuD,KAAK2tD,MAAMI,YAAc,GAG3B/tD,KAAK2tD,MAAMtyC,OAGbmzC,aACMxuD,KAAK2tD,MAAMc,QACTzuD,KAAK2tD,MAAMI,cAAgB/tD,KAAK2tD,MAAME,WACxC7tD,KAAK2tD,MAAMI,YAAc,GAE3B/tD,KAAKsuD,UAAY,QACjBtuD,KAAK2tD,MAAMe,SAEX1uD,KAAKsuD,UAAY,aACjBtuD,KAAK2tD,MAAMgB,SAIfP,WACEpuD,KAAK0kD,SAAU,EAGjBuJ,aACEjuD,KAAK4uD,iBACL5uD,KAAKiB,OAAOstD,UAGdK,iBACE,MAAM9oC,EAAU9lB,KAAK2tD,MAAMI,YACrBc,EAAW/oC,EAAU9lB,KAAK2tD,MAAME,SAAY,IAClD7tD,KAAKoF,SAAWypD,EAAU,IAC1B7uD,KAAK8uD,WAAaD,EAClB7uD,KAAK+tD,YAAc/tD,KAAK+uD,WAAWjpC,GAGrCipC,WAAWC,GACT,MAAMntC,EAAMC,KAAKmtC,MAAMD,EAAO,IACxBE,EAAMptC,KAAKmtC,MAAMD,EAAO,IAC9B,OAAOntC,EAAM,KAAOqtC,EAAM,GAAK,IAAMA,EAAMA,GAG7CC,sBACEnvD,KAAK2tD,MAAMI,YAAc/tD,KAAK2tD,MAAME,UAAY7tD,KAAK8uD,WAAa,KAGpExB,aACE9mC,QAAQo3B,MAAM,iCACV59C,KAAKovD,gBAAwC,IAAvBpvD,KAAKovD,eAC7BhD,IAAIiD,gBAAgBrvD,KAAK+e,gGC/G/B,QAjBA,WACE,OAAO,SAAUva,GACf,IAAKA,GAA0B,iBAAVA,EACnB,OAGF,MAAMk7B,EAAQl7B,EAAMwX,MAClB,8GAEF,OAAI0jB,GAASA,EAAM4vB,OACV5vB,EAAM4vB,OAAOpgD,KAEb,4OCXb,MAAMqgD,EASJnrC,cAAc,2BARM,IAQN,gCAPW,IAOX,sDAEd/W,UACE,MAAMsf,EAAQ3sB,KAAKwvD,aAAa1sC,MAAM,KACjB,IAAjB6J,EAAMvd,OACRpP,KAAKyvD,kBAAoB,OAEzBzvD,KAAKyvD,kBAAoB9iC,EAAMyP,MAG7Bp8B,KAAKyvD,kBAAkBrgD,OAAS,IAClCpP,KAAKyvD,kBAAoBzvD,KAAKyvD,kBAAkBx1B,UAAU,EAAG,GAAK,MAEpEj6B,KAAK0vD,uBAAyB,OAAS1vD,KAAKyvD,kBAG9CE,mBACE,MAAMlyC,EAAI4I,SAAS45B,cAAc,KAC3BxuC,EAAMzR,KAAK+e,OACjBtB,EAAEuwB,KAAOv8B,EACTgM,EAAEpX,OAAS,QACXoX,EAAEwjC,SAAWjhD,KAAKwvD,aAClBnpC,SAAS87B,KAAKjC,YAAYziC,GAC1BA,EAAEmyC,sBAIN,yECEA,SAASC,EAAgBC,GACvB,OAAO,SAAUtrD,GACf,OAAOsrD,EAAKC,YAAYvrD,uBAoI5B3E,QACGC,OAFiB,cAEG,CACnB,YACA,SACA,aACA,aACA,aACA,aACA,QACA,UACA,YACA,qBACA,WACA,SAEDwJ,OAAO,YAAaumD,GACpBG,SAAS,iBAAkB,eAC3BA,SAAS,kBAAmB,WAC5BA,SAAS,iBAAkB,UAC3Bv4C,QAAQ,uBAAwBulC,GAChCvlC,QAAQ,uBAAwBkvC,EAAAA,GAChC9jD,UAAU,WApCb,WACE,OAAO,SAAUC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,oBAAoB,SAAU/C,GACrB,KAAhBA,EAAMu6C,QACRh4C,EAAMmB,QAAO,WACXnB,EAAMzB,MAAM2B,EAAMitD,YAEpB1vD,EAAMgD,yBA8BXV,UAAU,WArJb,WAyGE,MAAO,CACL0F,KATF,SAAczF,EAAOC,GACnBA,EAAQzC,GAAG,SAAS,WACdwC,EAAMylD,SAASn5C,OAAS,GAlGhC,SAAsBtM,GAEpB,MAAMotD,EAAM7pC,SAAS45B,cAAc,OAC7BpC,EAAU/6C,EAAM+6C,QAChBG,EAAWl7C,EAAMk7C,SACvB,IAAImS,EAEJ,IAAK,IAAI9yC,EAAI,EAAGA,EAAIva,EAAMylD,SAASn5C,OAAQiO,IAAK,CAC9C,MAAMymB,EAAUhhC,EAAMylD,SAASlrC,GAC/B,IAAIokC,EAAS,WACb,MAAMU,EAAO,YAAcre,EAAQqe,KAC7BiO,EACJ,YAAc/N,GAAAA,CAAOve,EAAQse,WAAWx6B,OAAO,uBAEjD,GAAU,IAANvK,EAAJ,CAKA,OAAQva,EAAMk7C,SAAS6D,iBACrB,IAAK,gBACHJ,GACwB,QAAtB3d,EAAQ4d,UACJ5d,EAAQge,OACN9D,EAAS+D,WAAaje,EAAQge,OAC9B,SACF9D,EAAS2D,eACT9D,EAAQ3uB,MACR,UAAY4U,EAAQ8d,UAC1B,MAEF,IAAK,cACHH,GACwB,QAAtB3d,EAAQ4d,UACJ5d,EAAQge,OACNhe,EAAQke,KAAKC,OAASne,EAAQke,KAAKE,SACnC,SACFlE,EAAS2D,eACT9D,EAAQ3uB,MACR,UAAY4U,EAAQ8d,UAC1B,MAEF,IAAK,iBACHH,GACwB,QAAtB3d,EAAQ4d,UACJ5d,EAAQge,OACNhe,EAAQke,KAAKE,SACb,SACFlE,EAAS2D,eACT9D,EAAQ3uB,MACR,UAAY4U,EAAQ8d,UAC1B,MAEF,QACEH,GACwB,QAAtB3d,EAAQ4d,UACJ5d,EAAQge,QACL9D,EAAS+D,YAAc,SAAWje,EAAQge,OAC3C,SACF9D,EAAS2D,eACT9D,EAAQ3uB,MACR,UAAY4U,EAAQ8d,UAG9BsO,EAAIhQ,YAAY75B,SAASgqC,eAAe5O,IACxCyO,EAAIhQ,YAAY75B,SAAS45B,cAAc,OACvCiQ,EAAIhQ,YAAY75B,SAASgqC,eAAelO,IACxC+N,EAAIhQ,YAAY75B,SAAS45B,cAAc,OACvCiQ,EAAIhQ,YAAY75B,SAASgqC,eAAeD,IACxCF,EAAIhQ,YAAY75B,SAAS45B,cAAc,OACvCiQ,EAAIhQ,YAAY75B,SAAS45B,cAAc,YAvDrCkQ,EAAYrsB,EAAQse,UA0DxB,MAAMkO,EAAW/pC,OAAOgqC,OAExBD,EAASjqC,SAASmqC,MAAM,sBAAwBnqC,SAAS8sB,MAAQ,YACjEmd,EAASjqC,SAASmqC,MAAM,kBACxBF,EAASjqC,SAASmqC,MAAM,iBAAmBxS,EAASyS,QAAU,SAC9DH,EAASjqC,SAASmqC,MAChB,oBACEnO,GAAAA,CAAO8N,GAAWvoC,OAAO,uBACzB,SAEJ0oC,EAASjqC,SAASmqC,MAChB,oBAAsBnO,GAAAA,GAASz6B,OAAO,uBAAyB,SAEjE0oC,EAASjqC,SAASmqC,MAAMN,EAAIQ,WAC5BJ,EAASjqC,SAASmqC,MAAM,kBAExBF,EAASjqC,SAASg6B,QAClBiQ,EAASK,QAETL,EAASM,QACTN,EAASjQ,QAMLwQ,CAAa/tD,OAOjBqE,SAAU,QA4CXnG,WAAW,iBAAkBwlD,GAE7BxlD,WAAW,oBAAqBgjD,GAEhCz4C,OA5BH,sBA4BU,SAAUulD,GAChBA,EAAmBC,qBAEpB/vD,WAAW,kBAAmB87C,GAE9B58C,QAAQ,MAAOylD,GAEfp6C,OAAO43C,GACP5qC,IAAIuqC,GAEJ9hD,WAAW,oBAAqBgwD,EAAAA,GAEhCzlD,OAxCH,sBAwCU,SAAUulD,GAChBA,EAAmBC,qBAEpB/vD,WAAW,mBAAoBiwD,EAAAA,GAE/BjwD,WAAW,sBAAuBkwD,EAAAA,GAElClwD,WAAW,oBAAqBmwD,EAAAA,GAChCpoD,UAAU,cAAe,CACxBqI,YAAaggD,EACbpwD,WAAYosD,EACZ5kD,aAAc,QACd2J,SAAU,CACR4M,OAAQ,IACR7P,KAAM,IACNkgD,cAAe,OAGlBpuD,WAAW,wBAAyBosD,GACpC9jD,OAAO,mBAAoB+nD,GAC3B55C,QAAQ,mBAAoB45C,GAC5BtoD,UAAU,cAAe,CACxBqI,YAAakgD,EACbtwD,WAAYuwD,EAAAA,EACZ/oD,aAAc,QACd2J,SAAU,CACR4M,OAAQ,IACR7P,KAAM,OAGTnG,UAAU,kBAAmB,CAC5BqI,YAAaogD,EACbxwD,WAAYuuD,EACZ/mD,aAAc,QACd2J,SAAU,CACR4M,OAAQ,IACRywC,aAAc,OAGjB3sD,UAAU,iBAAiB,WAC1B,MAAO,CACL7B,WAAYuwD,EAAAA,EACZ/oD,aAAc,wBACdD,KAAM,SAAUtH,EAAQyG,GACtBzG,EAAOwwD,sBAAsBC,cAAchqD,QAIhD7E,UAAU,mBAAmB,WAC5B,MAAO,CACL7B,WAAYuwD,EAAAA,EACZ/oD,aAAc,wBACdD,KAAM,SAAUtH,EAAQyG,GACtBzG,EAAOwwD,sBAAsBC,cAAchqD,8DC3QnD5H,EAAO6xD,QAAU,SAAUC,GACzB,GAAiB,mBAANA,EACT,MAAMC,UAAUjgC,OAAOggC,GAAM,sBAC7B,OAAOA,yECHX,IAAIz+C,EAAW,EAAQ,iDAEvBrT,EAAO6xD,QAAU,SAAUC,GACzB,IAAKz+C,EAASy+C,IAAc,OAAPA,EACnB,MAAMC,UAAU,aAAejgC,OAAOggC,GAAM,mBAC5C,OAAOA,8DCLX,IAAIz+C,EAAW,EAAQ,iDAEvBrT,EAAO6xD,QAAU,SAAUC,GACzB,IAAKz+C,EAASy+C,GACZ,MAAMC,UAAUjgC,OAAOggC,GAAM,qBAC7B,OAAOA,kECJX9xD,EAAO6xD,QAAiC,oBAAhBG,aAAmD,oBAAbC,8FCA9D,IA6BIC,EAAMC,EAAaC,EA7BnBC,EAAsB,EAAQ,2DAC9BC,EAAc,EAAQ,mDACtBt0C,EAAS,EAAQ,8CACjB3K,EAAW,EAAQ,iDACnB1C,EAAM,EAAQ,2CACd4hD,EAAU,EAAQ,+CAClBC,EAA8B,EAAQ,sEACtCC,EAAW,EAAQ,gDACnBjkB,EAAiB,kEACjBkkB,EAAiB,EAAQ,+DACzB1f,EAAiB,EAAQ,+DACzB2f,EAAkB,EAAQ,yDAC1BC,EAAM,EAAQ,2CAEdC,EAAY70C,EAAO60C,UACnBC,EAAqBD,GAAaA,EAAU9wD,UAC5CgxD,EAAoB/0C,EAAO+0C,kBAC3BC,EAA6BD,GAAqBA,EAAkBhxD,UACpEkxD,EAAaJ,GAAaH,EAAeG,GACzCK,EAAsBJ,GAAsBJ,EAAeI,GAC3DK,EAAkB1/C,OAAO1R,UACzBqxD,EAAgBD,EAAgBC,cAEhCC,EAAgBV,EAAgB,eAChCW,EAAkBV,EAAI,mBACtBW,EAA0BX,EAAI,2BAE9BY,EAA4BnB,KAAyBrf,GAA4C,UAA1Buf,EAAQv0C,EAAOy1C,OACtFC,GAA0B,EAG1BC,EAA6B,CAC/Bd,UAAW,EACXzH,WAAY,EACZ2H,kBAAmB,EACnBa,WAAY,EACZC,YAAa,EACbC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,aAAc,GAGZC,EAA8B,CAChCC,cAAe,EACfC,eAAgB,GAWdC,EAAe,SAAUvC,GAC3B,IAAKz+C,EAASy+C,GAAK,OAAO,EAC1B,IAAIwC,EAAQ/B,EAAQT,GACpB,OAAOnhD,EAAIgjD,EAA4BW,IAClC3jD,EAAIujD,EAA6BI,IAqDxC,IAAKpC,KAAQyB,GAEXvB,GADAD,EAAcn0C,EAAOk0C,KACMC,EAAYpwD,WACxBywD,EAA4BJ,EAAWmB,EAAyBpB,GAC1EqB,GAA4B,EAGnC,IAAKtB,KAAQgC,GAEX9B,GADAD,EAAcn0C,EAAOk0C,KACMC,EAAYpwD,YACxBywD,EAA4BJ,EAAWmB,EAAyBpB,GAIjF,KAAKqB,GAAkD,mBAAdP,GAA4BA,IAAersC,SAAS7kB,aAE3FkxD,EAAa,WACX,MAAMlB,UAAU,yBAEdyB,GAA2B,IAAKtB,KAAQyB,EACtC31C,EAAOk0C,IAAOlf,EAAeh1B,EAAOk0C,GAAOe,GAInD,KAAKO,IAA8BN,GAAuBA,IAAwBC,KAChFD,EAAsBD,EAAWlxD,UAC7ByxD,GAA2B,IAAKtB,KAAQyB,EACtC31C,EAAOk0C,IAAOlf,EAAeh1B,EAAOk0C,GAAMnwD,UAAWmxD,GAS7D,GAJIM,GAA6Bd,EAAeM,KAAgCE,GAC9ElgB,EAAeggB,EAA4BE,GAGzCZ,IAAgB3hD,EAAIuiD,EAAqBG,GAK3C,IAAKnB,KAJLwB,GAA0B,EAC1BllB,EAAe0kB,EAAqBG,EAAe,CAAEziD,IAAK,WACxD,OAAOyC,EAASnT,MAAQA,KAAKozD,QAAmBj/C,KAErCs/C,EAAgC31C,EAAOk0C,IAClDM,EAA4Bx0C,EAAOk0C,GAAOoB,EAAiBpB,GAI/DlyD,EAAO6xD,QAAU,CACf2B,0BAA2BA,EAC3BD,wBAAyBA,EACzBD,gBAAiBI,GAA2BJ,EAC5CiB,YApGgB,SAAUzC,GAC1B,GAAIuC,EAAavC,GAAK,OAAOA,EAC7B,MAAMC,UAAU,gCAmGhByC,uBAhG2B,SAAUC,GACrC,GAAIzhB,IAAmBogB,EAAcnxD,KAAKgxD,EAAYwB,GACpD,MAAM1C,UAAU,2CAChB,OAAO0C,GA8FTC,uBA3F2B,SAAUC,EAAK90B,EAAU+0B,GACpD,GAAKtC,EAAL,CACA,GAAIsC,EAAQ,IAAK,IAAIC,KAASlB,EAA4B,CACxD,IAAImB,EAAwB92C,EAAO62C,GACnC,GAAIC,GAAyBnkD,EAAImkD,EAAsB/yD,UAAW4yD,GAAM,WAC/DG,EAAsB/yD,UAAU4yD,GACvC,MAAOpvD,KAEN2tD,EAAoByB,KAAQC,GAC/BnC,EAASS,EAAqByB,EAAKC,EAAS/0B,EACxC2zB,GAA6BV,EAAmB6B,IAAQ90B,KAkF9Dk1B,6BA9EiC,SAAUJ,EAAK90B,EAAU+0B,GAC1D,IAAIC,EAAOC,EACX,GAAKxC,EAAL,CACA,GAAItf,EAAgB,CAClB,GAAI4hB,EAAQ,IAAKC,KAASlB,EAExB,IADAmB,EAAwB92C,EAAO62C,KACFlkD,EAAImkD,EAAuBH,GAAM,WACrDG,EAAsBH,GAC7B,MAAOpvD,IAEX,GAAK0tD,EAAW0B,KAAQC,EAKjB,OAHL,IACE,OAAOnC,EAASQ,EAAY0B,EAAKC,EAAS/0B,EAAW2zB,GAA6BP,EAAW0B,IAAQ90B,GACrG,MAAOt6B,KAGb,IAAKsvD,KAASlB,IACZmB,EAAwB92C,EAAO62C,KACAC,EAAsBH,KAAQC,GAC3DnC,EAASqC,EAAuBH,EAAK90B,KA2DzCm1B,OAvHW,SAAgBlD,GAC3B,IAAKz+C,EAASy+C,GAAK,OAAO,EAC1B,IAAIwC,EAAQ/B,EAAQT,GACpB,MAAiB,aAAVwC,GACF3jD,EAAIgjD,EAA4BW,IAChC3jD,EAAIujD,EAA6BI,IAmHtCD,aAAcA,EACdpB,WAAYA,EACZC,oBAAqBA,yDC1KvB,IAAI/D,EAAQntC,KAAKmtC,MAEb8F,EAAY,SAAUx1C,EAAOy1C,GAC/B,IAAI5lD,EAASmQ,EAAMnQ,OACf6lD,EAAShG,EAAM7/C,EAAS,GAC5B,OAAOA,EAAS,EAAI8lD,EAAc31C,EAAOy1C,GAAaG,EACpDJ,EAAUx1C,EAAMzd,MAAM,EAAGmzD,GAASD,GAClCD,EAAUx1C,EAAMzd,MAAMmzD,GAASD,GAC/BA,IAIAE,EAAgB,SAAU31C,EAAOy1C,GAKnC,IAJA,IAEIjyD,EAAS2a,EAFTtO,EAASmQ,EAAMnQ,OACfiO,EAAI,EAGDA,EAAIjO,GAAQ,CAGjB,IAFAsO,EAAIL,EACJta,EAAUwc,EAAMlC,GACTK,GAAKs3C,EAAUz1C,EAAM7B,EAAI,GAAI3a,GAAW,GAC7Cwc,EAAM7B,GAAK6B,IAAQ7B,GAEjBA,IAAML,MAAKkC,EAAM7B,GAAK3a,GAC1B,OAAOwc,GAGP41C,EAAQ,SAAUpkC,EAAMC,EAAOgkC,GAOjC,IANA,IAAII,EAAUrkC,EAAK3hB,OACfimD,EAAUrkC,EAAM5hB,OAChBkmD,EAAS,EACTC,EAAS,EACTjvD,EAAS,GAENgvD,EAASF,GAAWG,EAASF,GAC9BC,EAASF,GAAWG,EAASF,EAC/B/uD,EAAO7F,KAAKu0D,EAAUjkC,EAAKukC,GAAStkC,EAAMukC,KAAY,EAAIxkC,EAAKukC,KAAYtkC,EAAMukC,MAEjFjvD,EAAO7F,KAAK60D,EAASF,EAAUrkC,EAAKukC,KAAYtkC,EAAMukC,MAExD,OAAOjvD,GAGXxG,EAAO6xD,QAAUoD,yDC5CjB,IAAIjgD,EAAW,GAAGA,SAElBhV,EAAO6xD,QAAU,SAAUC,GACzB,OAAO98C,EAAS/S,KAAK6vD,GAAI9vD,MAAM,GAAI,6DCHrC,IAAI0zD,EAAwB,EAAQ,6DAChCC,EAAa,EAAQ,mDAGrBtC,EAFkB,EAAQ,wDAEVV,CAAgB,eAEhCiD,EAAuE,aAAnDD,EAAW,WAAc,OAAOzzD,UAArB,IAUnClC,EAAO6xD,QAAU6D,EAAwBC,EAAa,SAAU7D,GAC9D,IAAI+D,EAAGC,EAAKtvD,EACZ,YAAc6N,IAAPy9C,EAAmB,YAAqB,OAAPA,EAAc,OAEM,iBAAhDgE,EAXD,SAAUhE,EAAI/rD,GACzB,IACE,OAAO+rD,EAAG/rD,GACV,MAAOR,KAQSwwD,CAAOF,EAAIpiD,OAAOq+C,GAAKuB,IAA8ByC,EAEnEF,EAAoBD,EAAWE,GAEH,WAA3BrvD,EAASmvD,EAAWE,KAAsC,mBAAZA,EAAEG,OAAuB,YAAcxvD,6ECxB5F,IAAIyvD,EAAQ,EAAQ,6CAEpBj2D,EAAO6xD,SAAWoE,GAAM,WACtB,SAASC,KAGT,OAFAA,EAAEn0D,UAAUuiB,YAAc,KAEnB7Q,OAAOi/C,eAAe,IAAIwD,KAASA,EAAEn0D,6FCN9C,IAAIuwD,EAAc,EAAQ,mDACtB6D,EAAuB,EAAQ,8DAC/BC,EAA2B,EAAQ,kEAEvCp2D,EAAO6xD,QAAUS,EAAc,SAAU1kB,EAAQ7nC,EAAKrB,GACpD,OAAOyxD,EAAqBE,EAAEzoB,EAAQ7nC,EAAKqwD,EAAyB,EAAG1xD,KACrE,SAAUkpC,EAAQ7nC,EAAKrB,GAEzB,OADAkpC,EAAO7nC,GAAOrB,EACPkpC,yECRT5tC,EAAO6xD,QAAU,SAAUyE,EAAQ5xD,GACjC,MAAO,CACL+pC,aAAuB,EAAT6nB,GACd5nB,eAAyB,EAAT4nB,GAChBC,WAAqB,EAATD,GACZ5xD,MAAOA,iECLX,IAAIuxD,EAAQ,EAAQ,6CAGpBj2D,EAAO6xD,SAAWoE,GAAM,WAEtB,OAA8E,GAAvExiD,OAAO+6B,eAAe,GAAI,EAAG,CAAE59B,IAAK,WAAc,OAAO,KAAQ,+ECL1E,IAAIoN,EAAS,EAAQ,8CACjB3K,EAAW,EAAQ,iDAEnBkT,EAAWvI,EAAOuI,SAElBiwC,EAASnjD,EAASkT,IAAalT,EAASkT,EAAS45B,eAErDngD,EAAO6xD,QAAU,SAAUC,GACzB,OAAO0E,EAASjwC,EAAS45B,cAAc2R,GAAM,uECR/C,IAEI2E,EAFY,EAAQ,yDAEAv6C,MAAM,mBAE9Blc,EAAO6xD,UAAY4E,IAAYA,EAAQ,yECJvC,IAAIC,EAAK,EAAQ,yDAEjB12D,EAAO6xD,QAAU,eAAexuC,KAAKqzC,sECFrC,IAAIC,EAAa,EAAQ,oDAEzB32D,EAAO6xD,QAAU8E,EAAW,YAAa,cAAgB,sECFzD,IAOIz6C,EAAO06C,EAPP54C,EAAS,EAAQ,8CACjB64C,EAAY,EAAQ,yDAEpBC,EAAU94C,EAAO84C,QACjBC,EAAO/4C,EAAO+4C,KACdC,EAAWF,GAAWA,EAAQE,UAAYD,GAAQA,EAAKH,QACvDK,EAAKD,GAAYA,EAASC,GAG1BA,EAEFL,GADA16C,EAAQ+6C,EAAGj0C,MAAM,MACD,GAAK,EAAI,EAAI9G,EAAM,GAAKA,EAAM,GACrC26C,MACT36C,EAAQ26C,EAAU36C,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQ26C,EAAU36C,MAAM,oBACb06C,EAAU16C,EAAM,IAI/Blc,EAAO6xD,QAAU+E,IAAYA,yECpB7B,IAEIM,EAFY,EAAQ,yDAEDh7C,MAAM,wBAE7Blc,EAAO6xD,UAAYqF,IAAWA,EAAO,oDCJrCl3D,EAAO6xD,QAAU,SAAUloD,GACzB,IACE,QAASA,IACT,MAAOpE,GACP,OAAO,kECJX,IAAIyY,EAAS,EAAQ,8CAEjBm5C,EAAY,SAAUC,GACxB,MAA0B,mBAAZA,EAAyBA,OAAW/iD,GAGpDrU,EAAO6xD,QAAU,SAAUwF,EAAWlR,GACpC,OAAOjkD,UAAUoN,OAAS,EAAI6nD,EAAUn5C,EAAOq5C,IAAcr5C,EAAOq5C,IAAcr5C,EAAOq5C,GAAWlR,4DCPtG,IAAImR,EAAQ,SAAUxF,GACpB,OAAOA,GAAMA,EAAG9vC,MAAQA,MAAQ8vC,GAIlC9xD,EAAO6xD,QAELyF,EAA2B,iBAAdC,YAA0BA,aACvCD,EAAuB,iBAAV7wC,QAAsBA,SAEnC6wC,EAAqB,iBAAR1pD,MAAoBA,OACjC0pD,EAAuB,iBAAV,EAAAv5C,GAAsB,EAAAA,IAEnC,WAAe,OAAO7d,KAAtB,IAAoC0mB,SAAS,cAATA,wDCbtC,IAAI4wC,EAAW,EAAQ,iDAEnB50D,EAAiB,GAAGA,eAExB5C,EAAO6xD,QAAUp+C,OAAO6Z,QAAU,SAAgBwkC,EAAI/rD,GACpD,OAAOnD,EAAeX,KAAKu1D,EAAS1F,GAAK/rD,2DCL3C/F,EAAO6xD,QAAU,mECAjB,IAAIS,EAAc,EAAQ,mDACtB2D,EAAQ,EAAQ,6CAChB9V,EAAgB,EAAQ,+DAG5BngD,EAAO6xD,SAAWS,IAAgB2D,GAAM,WAEtC,OAEQ,GAFDxiD,OAAO+6B,eAAe2R,EAAc,OAAQ,IAAK,CACtDvvC,IAAK,WAAc,OAAO,KACzB+M,qECTL,IAAI85C,EAAQ,EAAQ,oDAEhBpwC,EAAmBT,SAAS5R,SAGE,mBAAvByiD,EAAMC,gBACfD,EAAMC,cAAgB,SAAU5F,GAC9B,OAAOzqC,EAAiBplB,KAAK6vD,KAIjC9xD,EAAO6xD,QAAU4F,EAAMC,8ECXvB,IAWIC,EAAK/mD,EAAKD,EAXVinD,EAAkB,EAAQ,uDAC1B55C,EAAS,EAAQ,8CACjB3K,EAAW,EAAQ,iDACnBm/C,EAA8B,EAAQ,sEACtCqF,EAAY,EAAQ,2CACpBC,EAAS,EAAQ,oDACjBC,EAAY,EAAQ,kDACpBC,EAAa,EAAQ,mDAErBC,EAA6B,6BAC7BC,EAAUl6C,EAAOk6C,QAgBrB,GAAIN,GAAmBE,EAAOnqD,MAAO,CACnC,IAAI8pD,EAAQK,EAAOnqD,QAAUmqD,EAAOnqD,MAAQ,IAAIuqD,GAC5CC,EAAQV,EAAM7mD,IACdwnD,EAAQX,EAAM9mD,IACd0nD,EAAQZ,EAAME,IAClBA,EAAM,SAAU7F,EAAIwG,GAClB,GAAIF,EAAMn2D,KAAKw1D,EAAO3F,GAAK,MAAM,IAAIC,UAAUkG,GAG/C,OAFAK,EAASC,OAASzG,EAClBuG,EAAMp2D,KAAKw1D,EAAO3F,EAAIwG,GACfA,GAET1nD,EAAM,SAAUkhD,GACd,OAAOqG,EAAMl2D,KAAKw1D,EAAO3F,IAAO,IAElCnhD,EAAM,SAAUmhD,GACd,OAAOsG,EAAMn2D,KAAKw1D,EAAO3F,QAEtB,CACL,IAAI5mB,EAAQ6sB,EAAU,SACtBC,EAAW9sB,IAAS,EACpBysB,EAAM,SAAU7F,EAAIwG,GAClB,GAAIT,EAAU/F,EAAI5mB,GAAQ,MAAM,IAAI6mB,UAAUkG,GAG9C,OAFAK,EAASC,OAASzG,EAClBU,EAA4BV,EAAI5mB,EAAOotB,GAChCA,GAET1nD,EAAM,SAAUkhD,GACd,OAAO+F,EAAU/F,EAAI5mB,GAAS4mB,EAAG5mB,GAAS,IAE5Cv6B,EAAM,SAAUmhD,GACd,OAAO+F,EAAU/F,EAAI5mB,IAIzBlrC,EAAO6xD,QAAU,CACf8F,IAAKA,EACL/mD,IAAKA,EACLD,IAAKA,EACL6nD,QAnDY,SAAU1G,GACtB,OAAOnhD,EAAImhD,GAAMlhD,EAAIkhD,GAAM6F,EAAI7F,EAAI,KAmDnC2G,UAhDc,SAAUC,GACxB,OAAO,SAAU5G,GACf,IAAInkD,EACJ,IAAK0F,EAASy+C,KAAQnkD,EAAQiD,EAAIkhD,IAAK1iD,OAASspD,EAC9C,MAAM3G,UAAU,0BAA4B2G,EAAO,aACnD,OAAO/qD,0DCtBb3N,EAAO6xD,QAAU,SAAUC,GACzB,MAAqB,iBAAPA,EAAyB,OAAPA,EAA4B,mBAAPA,sDCDvD9xD,EAAO6xD,SAAU,6DCAjB,IAAI8E,EAAa,EAAQ,oDACrBgC,EAAoB,EAAQ,yDAEhC34D,EAAO6xD,QAAU8G,EAAoB,SAAU7G,GAC7C,MAAoB,iBAANA,GACZ,SAAUA,GACZ,IAAI8G,EAAUjC,EAAW,UACzB,MAAyB,mBAAXiC,GAAyBnlD,OAAOq+C,aAAe8G,kECN/D,IAAIC,EAAa,EAAQ,yDACrB5C,EAAQ,EAAQ,6CAGpBj2D,EAAO6xD,UAAYp+C,OAAOqlD,wBAA0B7C,GAAM,WACxD,IAAI8C,EAASC,SAGb,OAAQlnC,OAAOinC,MAAatlD,OAAOslD,aAAmBC,UAEnDA,OAAOC,MAAQJ,GAAcA,EAAa,uECX/C,IAAI76C,EAAS,EAAQ,8CACjB05C,EAAgB,EAAQ,sDAExBQ,EAAUl6C,EAAOk6C,QAErBl4D,EAAO6xD,QAA6B,mBAAZqG,GAA0B,cAAc70C,KAAKq0C,EAAcQ,4ECLnF,IAAI5F,EAAc,EAAQ,mDACtB4G,EAAiB,EAAQ,sDACzBC,EAAW,EAAQ,iDACnBC,EAAgB,EAAQ,uDAGxBC,EAAkB5lD,OAAO+6B,eAI7BqjB,EAAQwE,EAAI/D,EAAc+G,EAAkB,SAAwBxD,EAAGyD,EAAGC,GAIxE,GAHAJ,EAAStD,GACTyD,EAAIF,EAAcE,GAClBH,EAASI,GACLL,EAAgB,IAClB,OAAOG,EAAgBxD,EAAGyD,EAAGC,GAC7B,MAAOh0D,IACT,GAAI,QAASg0D,GAAc,QAASA,EAAY,MAAMxH,UAAU,2BAEhE,MADI,UAAWwH,IAAY1D,EAAEyD,GAAKC,EAAW70D,OACtCmxD,4ECnBT,IAAIllD,EAAM,EAAQ,2CACd6mD,EAAW,EAAQ,iDACnBO,EAAY,EAAQ,kDACpByB,EAA2B,EAAQ,gEAEnCC,EAAW1B,EAAU,YACrB5E,EAAkB1/C,OAAO1R,UAK7B/B,EAAO6xD,QAAU2H,EAA2B/lD,OAAOi/C,eAAiB,SAAUmD,GAE5E,OADAA,EAAI2B,EAAS3B,GACTllD,EAAIklD,EAAG4D,GAAkB5D,EAAE4D,GACH,mBAAjB5D,EAAEvxC,aAA6BuxC,aAAaA,EAAEvxC,YAChDuxC,EAAEvxC,YAAYviB,UACd8zD,aAAapiD,OAAS0/C,EAAkB,+ECfnD,IAAIgG,EAAW,EAAQ,iDACnBO,EAAqB,EAAQ,4DAMjC15D,EAAO6xD,QAAUp+C,OAAOu/B,iBAAmB,aAAe,GAAK,WAC7D,IAEI2mB,EAFAC,GAAiB,EACjBv2C,EAAO,GAEX,KAEEs2C,EAASlmD,OAAOomD,yBAAyBpmD,OAAO1R,UAAW,aAAa41D,KACjE11D,KAAKohB,EAAM,IAClBu2C,EAAiBv2C,aAAgBvhB,MACjC,MAAOyD,IACT,OAAO,SAAwBswD,EAAGiE,GAKhC,OAJAX,EAAStD,GACT6D,EAAmBI,GACfF,EAAgBD,EAAO13D,KAAK4zD,EAAGiE,GAC9BjE,EAAE5iB,UAAY6mB,EACZjE,GAfoD,QAiBzDxhD,0ECzBN,IAAIhB,EAAW,EAAQ,iDAIvBrT,EAAO6xD,QAAU,SAAU/+C,EAAOinD,GAChC,IAAIl5D,EAAIqD,EACR,GAAa,WAAT61D,GAAqD,mBAAxBl5D,EAAKiS,EAAMkC,YAA4B3B,EAASnP,EAAMrD,EAAGoB,KAAK6Q,IAAS,OAAO5O,EAC/G,GAAmC,mBAAvBrD,EAAKiS,EAAM4f,WAA2Brf,EAASnP,EAAMrD,EAAGoB,KAAK6Q,IAAS,OAAO5O,EACzF,GAAa,WAAT61D,GAAqD,mBAAxBl5D,EAAKiS,EAAMkC,YAA4B3B,EAASnP,EAAMrD,EAAGoB,KAAK6Q,IAAS,OAAO5O,EAC/G,MAAM6tD,UAAU,sGCTlB,IAAI/zC,EAAS,EAAQ,8CACjBw0C,EAA8B,EAAQ,sEACtC7hD,EAAM,EAAQ,2CACdqpD,EAAY,EAAQ,kDACpBtC,EAAgB,EAAQ,sDACxBuC,EAAsB,EAAQ,sDAE9BC,EAAmBD,EAAoBrpD,IACvCupD,EAAuBF,EAAoBzB,QAC3C4B,EAAWtoC,OAAOA,QAAQ9O,MAAM,WAEnChjB,EAAO6xD,QAAU,SAAUgE,EAAG9vD,EAAKrB,EAAOrE,GACzC,IAGIsN,EAHA0sD,IAASh6D,KAAYA,EAAQg6D,OAC7B/V,IAASjkD,KAAYA,EAAQouC,WAC7B6rB,IAAcj6D,KAAYA,EAAQi6D,YAElB,mBAAT51D,IACS,iBAAPqB,GAAoB4K,EAAIjM,EAAO,SACxC8tD,EAA4B9tD,EAAO,OAAQqB,IAE7C4H,EAAQwsD,EAAqBz1D,IAClBua,SACTtR,EAAMsR,OAASm7C,EAASjnD,KAAmB,iBAAPpN,EAAkBA,EAAM,MAG5D8vD,IAAM73C,GAIEq8C,GAEAC,GAAezE,EAAE9vD,KAC3Bu+C,GAAS,UAFFuR,EAAE9vD,GAIPu+C,EAAQuR,EAAE9vD,GAAOrB,EAChB8tD,EAA4BqD,EAAG9vD,EAAKrB,IATnC4/C,EAAQuR,EAAE9vD,GAAOrB,EAChBs1D,EAAUj0D,EAAKrB,KAUrBkiB,SAAS7kB,UAAW,YAAY,WACjC,MAAsB,mBAAR7B,MAAsBg6D,EAAiBh6D,MAAM+e,QAAUy4C,EAAcx3D,6ECpCrFF,EAAO6xD,QAAU,SAAUC,GACzB,GAAUz9C,MAANy9C,EAAiB,MAAMC,UAAU,wBAA0BD,GAC/D,OAAOA,+DCJT,IAAI9zC,EAAS,EAAQ,8CAErBhe,EAAO6xD,QAAU,SAAU9rD,EAAKrB,GAC9B,IAEE+O,OAAO+6B,eAAexwB,EAAQjY,EAAK,CAAErB,MAAOA,EAAOgqC,cAAc,EAAM6nB,UAAU,IACjF,MAAOhxD,GACPyY,EAAOjY,GAAOrB,EACd,OAAOA,+DCRX,IAAIozD,EAAS,EAAQ,8CACjBlF,EAAM,EAAQ,2CAEdl/C,EAAOokD,EAAO,QAElB93D,EAAO6xD,QAAU,SAAU9rD,GACzB,OAAO2N,EAAK3N,KAAS2N,EAAK3N,GAAO6sD,EAAI7sD,mECNvC,IAAIiY,EAAS,EAAQ,8CACjBg8C,EAAY,EAAQ,kDAEpBO,EAAS,qBACT9C,EAAQz5C,EAAOu8C,IAAWP,EAAUO,EAAQ,IAEhDv6D,EAAO6xD,QAAU4F,0DCNjB,IAAI+C,EAAU,EAAQ,+CAClB/C,EAAQ,EAAQ,qDAEnBz3D,EAAO6xD,QAAU,SAAU9rD,EAAKrB,GAC/B,OAAO+yD,EAAM1xD,KAAS0xD,EAAM1xD,QAAiBsO,IAAV3P,EAAsBA,EAAQ,MAChE,WAAY,IAAI/D,KAAK,CACtBi2D,QAAS,SACTpmC,KAAMgqC,EAAU,OAAS,SACzBC,UAAW,+FCRb,IAAIC,EAAO14C,KAAK04C,KACZvL,EAAQntC,KAAKmtC,MAIjBnvD,EAAO6xD,QAAU,SAAU8I,GACzB,OAAOnxC,MAAMmxC,GAAYA,GAAY,GAAKA,EAAW,EAAIxL,EAAQuL,GAAMC,+DCNzE,IAAIC,EAAY,EAAQ,kDAEpB74C,EAAMC,KAAKD,IAIf/hB,EAAO6xD,QAAU,SAAU8I,GACzB,OAAOA,EAAW,EAAI54C,EAAI64C,EAAUD,GAAW,kBAAoB,8DCPrE,IAAIE,EAAyB,EAAQ,gEAIrC76D,EAAO6xD,QAAU,SAAU8I,GACzB,OAAOlnD,OAAOonD,EAAuBF,mECLvC,IAAItnD,EAAW,EAAQ,iDACnBynD,EAAW,EAAQ,iDACnBC,EAAsB,EAAQ,6DAG9BC,EAFkB,EAAQ,wDAEXrI,CAAgB,eAInC3yD,EAAO6xD,QAAU,SAAU/+C,EAAOinD,GAChC,IAAK1mD,EAASP,IAAUgoD,EAAShoD,GAAQ,OAAOA,EAChD,IACItM,EADAy0D,EAAenoD,EAAMkoD,GAEzB,QAAqB3mD,IAAjB4mD,EAA4B,CAG9B,QAFa5mD,IAAT0lD,IAAoBA,EAAO,WAC/BvzD,EAASy0D,EAAah5D,KAAK6Q,EAAOinD,IAC7B1mD,EAAS7M,IAAWs0D,EAASt0D,GAAS,OAAOA,EAClD,MAAMurD,UAAU,2CAGlB,YADa19C,IAAT0lD,IAAoBA,EAAO,UACxBgB,EAAoBjoD,EAAOinD,qECpBpC,IAAImB,EAAc,EAAQ,oDACtBJ,EAAW,EAAQ,iDAIvB96D,EAAO6xD,QAAU,SAAU8I,GACzB,IAAI50D,EAAMm1D,EAAYP,EAAU,UAChC,OAAOG,EAAS/0D,GAAOA,EAAM+rB,OAAO/rB,2ECPtC,IAGIsd,EAAO,GAEXA,EALsB,EAAQ,wDAEVsvC,CAAgB,gBAGd,IAEtB3yD,EAAO6xD,QAA2B,eAAjB//B,OAAOzO,kDCPxB,IAAI9X,EAAK,EACL4vD,EAAUn5C,KAAKo5C,SAEnBp7D,EAAO6xD,QAAU,SAAU9rD,GACzB,MAAO,UAAY+rB,YAAezd,IAARtO,EAAoB,GAAKA,GAAO,QAAUwF,EAAK4vD,GAASnmD,SAAS,wECH7F,IAAIqmD,EAAgB,EAAQ,qDAE5Br7D,EAAO6xD,QAAUwJ,IACXrC,OAAOC,MACkB,iBAAnBD,OAAOsC,4ECLnB,IAAIt9C,EAAS,EAAQ,8CACjB85C,EAAS,EAAQ,8CACjBnnD,EAAM,EAAQ,2CACdiiD,EAAM,EAAQ,2CACdyI,EAAgB,EAAQ,qDACxB1C,EAAoB,EAAQ,yDAE5B4C,EAAwBzD,EAAO,OAC/BkB,EAASh7C,EAAOg7C,OAChBwC,EAAwB7C,EAAoBK,EAASA,GAAUA,EAAOyC,eAAiB7I,EAE3F5yD,EAAO6xD,QAAU,SAAUnsD,GAOvB,OANGiL,EAAI4qD,EAAuB71D,KAAW21D,GAAuD,iBAA/BE,EAAsB71D,MACnF21D,GAAiB1qD,EAAIqoD,EAAQtzD,GAC/B61D,EAAsB71D,GAAQszD,EAAOtzD,GAErC61D,EAAsB71D,GAAQ81D,EAAsB,UAAY91D,IAE3D61D,EAAsB71D,kFCjBjC,IAAIg2D,EAAsB,EAAQ,8DAC9BC,EAAW,EAAQ,iDACnBf,EAAY,EAAQ,kDAEpBrG,EAAcmH,EAAoBnH,aAKtCG,EAJ6BgH,EAAoBhH,wBAI1B,MAAM,SAAYpY,GACvC,IAAIuZ,EAAItB,EAAYr0D,MAChB07D,EAAMD,EAAS9F,EAAEvmD,QACjBusD,EAAgBjB,EAAUte,GAC1B5+B,EAAIm+C,GAAiB,EAAIA,EAAgBD,EAAMC,EACnD,OAAQn+C,EAAI,GAAKA,GAAKk+C,OAAOvnD,EAAYwhD,EAAEn4C,sFCd7C,IAAIg+C,EAAsB,EAAQ,8DAC9B19C,EAAS,EAAQ,8CACjBi4C,EAAQ,EAAQ,6CAChBkB,EAAY,EAAQ,kDACpBwE,EAAW,EAAQ,iDACnBG,EAAe,EAAQ,kDACvBC,EAAK,EAAQ,yDACbC,EAAa,EAAQ,4DACrBC,EAAK,EAAQ,yDACbC,EAAS,EAAQ,6DAEjB3H,EAAcmH,EAAoBnH,YAClCG,EAAyBgH,EAAoBhH,uBAC7Cb,EAAc71C,EAAO61C,YACrBsI,EAAatI,GAAeA,EAAY9xD,UAAU2pB,KAGlD0wC,IAA+BD,IAAelG,GAAM,WACtD,IAAIx2C,EAAQ,IAAIo0C,EAAY,GAC5Bp0C,EAAMiM,KAAK,MACXjM,EAAMiM,KAAK,OAGT2wC,IAAgBF,IAAelG,GAAM,WAEvC,GAAIgG,EAAI,OAAOA,EAAK,GACpB,GAAIF,EAAI,OAAOA,EAAK,GACpB,GAAIC,EAAY,OAAO,EACvB,GAAIE,EAAQ,OAAOA,EAAS,IAE5B,IAEI5f,EAAOggB,EAFP78C,EAAQ,IAAIo0C,EAAY,KACxB0I,EAAWz6D,MAAM,KAGrB,IAAKw6C,EAAQ,EAAGA,EAAQ,IAAKA,IAC3BggB,EAAMhgB,EAAQ,EACd78B,EAAM68B,GAAS,IAAMA,EACrBigB,EAASjgB,GAASA,EAAQ,EAAIggB,EAAM,EAOtC,IAJA78C,EAAMiM,MAAK,SAAU/N,EAAGmB,GACtB,OAAQnB,EAAI,EAAI,IAAMmB,EAAI,EAAI,MAG3Bw9B,EAAQ,EAAGA,EAAQ,IAAKA,IAC3B,GAAI78B,EAAM68B,KAAWigB,EAASjgB,GAAQ,OAAO,KAkBjDoY,EAAuB,QAAQ,SAAcQ,GAC3C,IAAIz1C,EAAQvf,KAEZ,QADkBmU,IAAd6gD,GAAyBiC,EAAUjC,GACnCmH,EAAa,OAAOF,EAAWl6D,KAAKwd,EAAOy1C,GAE/CX,EAAY90C,GACZ,IAEI68B,EAFAkgB,EAAcb,EAASl8C,EAAMnQ,QAC7BqW,EAAQ7jB,MAAM06D,GAGlB,IAAKlgB,EAAQ,EAAGA,EAAQkgB,EAAalgB,IACnC32B,EAAM22B,GAAS78B,EAAM68B,GAKvB,IAFA32B,EAAQm2C,EAAar8C,EA5BF,SAAUy1C,GAC7B,OAAO,SAAU1lD,EAAGitD,GAClB,YAAkBpoD,IAAd6gD,GAAiCA,EAAU1lD,EAAGitD,IAAM,EAEpDA,GAAMA,GAAW,EAEjBjtD,GAAMA,EAAU,EACV,IAANA,GAAiB,IAANitD,EAAgB,EAAIjtD,EAAI,GAAK,EAAIitD,EAAI,EAAI,GAAK,EACtDjtD,EAAIitD,GAoBeC,CAAexH,IAEtC5Y,EAAQ,EAAGA,EAAQkgB,EAAalgB,IACnC78B,EAAM68B,GAAS32B,EAAM22B,GAGvB,OAAO78B,KACL48C,GAAeD,wECpFnB,EAAQ,4ICERp8D,EAAO6xD,QAAU,WACf,GAA0B,iBAAf0F,WACT,OAAOA,WAGT,IAAIx5C,EAEJ,IAGEA,EAAI7d,MAAQ,IAAI0mB,SAAS,cAAb,GACZ,MAAOpE,GAEP,GAAsB,iBAAXiE,OACT,OAAOA,OAIT,GAAoB,iBAAT7Y,KACT,OAAOA,KAIT,QAAsB,IAAX,EAAAmQ,EACT,OAAO,EAAAA,EAIX,OAAOA,EA5BQ,wECHjB,WAoBE7d,QAjBM4d,EAAO,SAON,KAFU,EAAF,WACL,OAAQA,EAAK6+C,eAWjB,WAWJ,SAASzqD,EAAQhO,GAEb,MAAmC,mBAA5B,GAAK8Q,SAAS/S,KAAKiC,GAG9B,SAAS04D,EAAa14D,GAElB,QAAQgO,EAAQhO,IAAuB,iBAARA,IAAsBA,GAASA,aAAe24D,MAAW34D,aAAeuuB,MAQ3G,SAASqqC,IAEL,MAA2B,mBAAb7S,SAGlB,SAAS8S,IAEL,GAAID,IACA,OAAO,IAAI7S,SAkCnB,SAAS+S,EAAmBC,EAAY58D,EAAS68D,EAAUC,GAEvD,IAAI7gB,EAAQ,EAEZ,IAAK,IAAIv2C,KAAOk3D,EAAY,CAExB,GAAIA,EAAWr6D,eAAemD,GAAM,CAEhC,IAAIq3D,EAAWD,GAAap3D,EACxBrB,EAAQrE,EAAQirB,QAAQ2xC,EAAWl3D,IAevC,GAbIo3D,GAAaP,EAAaK,KAC1BG,EAAWD,EAAY,IAAMp3D,EAAM,KAGnCo3D,GAAajrD,EAAQ+qD,KAGjBG,EADAlrD,EAAQxN,IAAUrE,EAAQg9D,qBACfF,EAAY,IAAM7gB,EAAQ,IAE1B6gB,EAAY,MAI3BjrD,EAAQxN,IAAUk4D,EAAal4D,GAE/Bs4D,EAAmBt4D,EAAOrE,EAAS68D,EAAUE,QAE1C,GAAI14D,aAAiB44D,SAExB,IAAK,IAAI1/C,EAAI,EAAGA,EAAIlZ,EAAM4K,OAAQsO,IAC9Bs/C,EAAS3iC,OAAO6iC,EAAW,IAAMx/C,EAAI,IAAKlZ,EAAM2b,KAAKzC,SAElDlZ,aAAiBm4D,KAExBK,EAAS3iC,OAAO6iC,EAAU14D,EAAOA,EAAMgB,MAEhChB,aAAiB+tB,KAExByqC,EAAS3iC,OAAO6iC,EAAU14D,EAAM64D,gBAEb,OAAV74D,GAAkBrE,EAAQm9D,mBAAgC,OAAV94D,SAA6B2P,IAAV3P,GAE5Ew4D,EAAS3iC,OAAO6iC,EAAU14D,GAGlC43C,IAEJ,OAAO4gB,EAEX,OAhFA,SAAiBD,EAAY58D,GAEzB,GAAIA,GAAWA,EAAQo9D,iBAEnB,GAnB8B,mBAmBDp9D,EAAQo9D,gBAnBlBljC,OAqBf,KAAM,qDAEP,IAAKuiC,IAER,KAAM,8FA3Bd,IA0CQY,EA5DG,CAgDc,CACjBD,gBAAiBV,IACjBM,sBAAsB,EACtBG,mBAAmB,EACnBlyC,QAAS,SAAS5mB,GACd,MAAqB,kBAAVA,GACCA,EAAQ,IAAK,IAElBA,IAIkCrE,GAAW,IA5DlCyO,QAAO,SAAU6uD,EAAOC,GAI9C,OAHAnqD,OAAOC,KAAKkqD,GAAe38D,SAAQ,SAAU48D,GACzCF,EAAME,GAAaD,EAAcC,MAE9BF,IACR,IAyDH,OAAOX,EAAmBC,EAAYS,EAAeA,EAAcD,kBA5EjCr9D,IACjC,QAFM,OAEN,oECDD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,8FAA8F/6C,MAClG,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,4DAA4Dj7C,MAClE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1Co7C,cAAe,SACfC,KAAM,SAAUvrD,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExBwrD,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNpiD,EAAG,mBACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,YACJC,EAAG,SACHC,GAAI,SACJzmC,EAAG,SACH0mC,GAAI,SACJC,EAAG,WACHC,GAAI,YACJxD,EAAG,UACHyD,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyBpgE,CAAQ,EAAQ,8FCOlD,SAAWmiD,GAAU,aAIzB,IAAIke,EAAa,SAAUhgD,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVigD,EAAU,CACNpjD,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ2qD,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJxmC,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJ2mC,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJvD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRkE,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAep7D,EAAQq7D,GAC5C,IAAIzK,EAAIoK,EAAWJ,GACfnvD,EAAMwvD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANhK,IACAnlD,EAAMA,EAAI2vD,EAAgB,EAAI,IAE3B3vD,EAAI+D,QAAQ,MAAOorD,KAGlCtC,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGGxb,EAAOub,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,wCAAwCl7C,MAAM,KAC7Dm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAUvrD,GACZ,MAAO,MAAQA,GAEnBwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,IAEA,KAGf/B,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNpiD,EAAGqjD,EAAU,KACbhB,GAAIgB,EAAU,KACdzrD,EAAGyrD,EAAU,KACbf,GAAIe,EAAU,KACdd,EAAGc,EAAU,KACbb,GAAIa,EAAU,KACdtnC,EAAGsnC,EAAU,KACbZ,GAAIY,EAAU,KACdX,EAAGW,EAAU,KACbV,GAAIU,EAAU,KACdlE,EAAGkE,EAAU,KACbT,GAAIS,EAAU,MAElBO,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCqrD,KAAM,CACFC,IAAK,EACLC,IAAK,KAtJyBpgE,CAAQ,EAAQ,8FCDlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wEAAwE/6C,MAC5E,KAEJg7C,YAAa,wEAAwEh7C,MACjF,KAEJi7C,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,wCAAwCl7C,MAAM,KAC7Dm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,OACHqiD,GAAI,WACJzqD,EAAG,QACH0qD,GAAI,WACJC,EAAG,OACHC,GAAI,WACJzmC,EAAG,MACH0mC,GAAI,UACJC,EAAG,MACHC,GAAI,UACJxD,EAAG,MACHyD,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MApDyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPV,EAAa,SAAUhgD,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVigD,EAAU,CACNpjD,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ2qD,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJxmC,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJ2mC,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJvD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRkE,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAep7D,EAAQq7D,GAC5C,IAAIzK,EAAIoK,EAAWJ,GACfnvD,EAAMwvD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANhK,IACAnlD,EAAMA,EAAI2vD,EAAgB,EAAI,IAE3B3vD,EAAI+D,QAAQ,MAAOorD,KAGlCtC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGGxb,EAAOub,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,wCAAwCl7C,MAAM,KAC7Dm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAUvrD,GACZ,MAAO,MAAQA,GAEnBwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,IAEA,KAGf/B,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNpiD,EAAGqjD,EAAU,KACbhB,GAAIgB,EAAU,KACdzrD,EAAGyrD,EAAU,KACbf,GAAIe,EAAU,KACdd,EAAGc,EAAU,KACbb,GAAIa,EAAU,KACdtnC,EAAGsnC,EAAU,KACbZ,GAAIY,EAAU,KACdX,EAAGW,EAAU,KACbV,GAAIU,EAAU,KACdlE,EAAGkE,EAAU,KACbT,GAAIS,EAAU,MAElBS,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCisD,WAAY,SAAUz7D,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOilD,EAAUjlD,MAEpBjH,QAAQ,KAAM,MAEvBqrD,KAAM,CACFC,IAAK,EACLC,IAAK,MAzKyBpgE,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wEAAwE/6C,MAC5E,KAEJg7C,YAAa,wEAAwEh7C,MACjF,KAEJi7C,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,wCAAwCl7C,MAAM,KAC7Dm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,OACHqiD,GAAI,WACJzqD,EAAG,QACH0qD,GAAI,WACJC,EAAG,OACHC,GAAI,WACJzmC,EAAG,MACH0mC,GAAI,UACJC,EAAG,MACHC,GAAI,UACJxD,EAAG,MACHyD,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyBpgE,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF9e,EAAOub,aAAa,QAAS,CACpCC,OAAQ,6EAA6E/6C,MACjF,KAEJg7C,YAAa,6EAA6Eh7C,MACtF,KAEJi7C,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,wCAAwCl7C,MAAM,KAC7Dm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAUvrD,GACZ,MAAO,MAAQA,GAEnBwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,IAEA,KAGf/B,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,OACHqiD,GAAI,WACJzqD,EAAG,QACH0qD,GAAI,WACJC,EAAG,OACHC,GAAI,WACJzmC,EAAG,MACH0mC,GAAI,UACJC,EAAG,MACHC,GAAI,UACJxD,EAAG,MACHyD,GAAI,YAERkB,SAAU,SAAU37D,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAOmlD,EAAUnlD,MAEpBjH,QAAQ,KAAM,MAEvBisD,WAAY,SAAUz7D,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOilD,EAAUjlD,MAEpBjH,QAAQ,KAAM,MAEvBqrD,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,yEAAyE/6C,MAC7E,KAEJg7C,YAAa,yEAAyEh7C,MAClF,KAEJi7C,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,wCAAwCl7C,MAAM,KAC7Dm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,OACHqiD,GAAI,WACJzqD,EAAG,QACH0qD,GAAI,WACJC,EAAG,OACHC,GAAI,WACJzmC,EAAG,MACH0mC,GAAI,UACJC,EAAG,MACHC,GAAI,UACJxD,EAAG,MACHyD,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyBpgE,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETZ,EAAa,SAAUhgD,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVigD,EAAU,CACNpjD,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ2qD,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJxmC,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJ2mC,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJvD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRkE,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAep7D,EAAQq7D,GAC5C,IAAIzK,EAAIoK,EAAWJ,GACfnvD,EAAMwvD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANhK,IACAnlD,EAAMA,EAAI2vD,EAAgB,EAAI,IAE3B3vD,EAAI+D,QAAQ,MAAOorD,KAGlCtC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGCxb,EAAOub,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,wCAAwCl7C,MAAM,KAC7Dm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAUvrD,GACZ,MAAO,MAAQA,GAEnBwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,IAEA,KAGf/B,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNpiD,EAAGqjD,EAAU,KACbhB,GAAIgB,EAAU,KACdzrD,EAAGyrD,EAAU,KACbf,GAAIe,EAAU,KACdd,EAAGc,EAAU,KACbb,GAAIa,EAAU,KACdtnC,EAAGsnC,EAAU,KACbZ,GAAIY,EAAU,KACdX,EAAGW,EAAU,KACbV,GAAIU,EAAU,KACdlE,EAAGkE,EAAU,KACbT,GAAIS,EAAU,MAElBS,SAAU,SAAU37D,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAOmlD,EAAUnlD,MAEpBjH,QAAQ,KAAM,MAEvBisD,WAAY,SAAUz7D,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOilD,EAAUjlD,MAEpBjH,QAAQ,KAAM,MAEvBqrD,KAAM,CACFC,IAAK,EACLC,IAAK,MAzLyBpgE,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAI+e,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC/e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,+EAA+E/6C,MACnF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,qEAAqEj7C,MAC3E,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNpiD,EAAG,kBACHqiD,GAAI,YACJzqD,EAAG,aACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJxD,EAAG,SACHyD,GAAI,SAER9B,cAAe,0BACfC,KAAM,SAAUvrD,GACZ,MAAO,mBAAmBuQ,KAAKvQ,IAEnCwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,SAGfb,uBAAwB,wCACxBC,QAAS,SAAUC,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI1iD,EAAI0iD,EAAS,GAGjB,OAAOA,GAAUiB,EAAS3jD,IAAM2jD,EAFvBjB,EAAS,IAAO1iD,IAEsB2jD,EADvCjB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyBpgE,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAYzB,SAASgf,EAAuBlB,EAAQQ,EAAe96D,GASnD,MAAY,MAARA,EACO86D,EAAgB,UAAY,UACpB,MAAR96D,EACA86D,EAAgB,UAAY,UAE5BR,EAAS,KAtBFmB,GAsB6BnB,EArB3CoB,EAQS,CACT9B,GAAIkB,EAAgB,yBAA2B,yBAC/CjB,GAAIiB,EAAgB,yBAA2B,yBAC/Cf,GAAIe,EAAgB,yBAA2B,yBAC/Cd,GAAI,iBACJE,GAAI,uBACJC,GAAI,kBAOgCn6D,GArBvBid,MAAM,KAChBw+C,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAyBClf,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,CACJj2C,OAAQ,uGAAuG9E,MAC3G,KAEJ0+C,WAAY,qGAAqG1+C,MAC7G,MAGRg7C,YAAa,0DAA0Dh7C,MACnE,KAEJi7C,SAAU,CACNn2C,OAAQ,0DAA0D9E,MAC9D,KAEJ0+C,WAAY,0DAA0D1+C,MAClE,KAEJ2+C,SAAU,+CAEdzD,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,mBAEXE,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNpiD,EAAG,kBACHpI,EAAGqsD,EACH3B,GAAI2B,EACJ1B,EAAG0B,EACHzB,GAAIyB,EACJloC,EAAG,QACH0mC,GAAIwB,EACJvB,EAAG,QACHC,GAAIsB,EACJ9E,EAAG,MACHyD,GAAIqB,GAERnD,cAAe,yBACfC,KAAM,SAAUvrD,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjCwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,UAGfb,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQxB,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyBpgE,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,oFAAoF/6C,MACxF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,yDAAyDj7C,MAC/D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNpiD,EAAG,kBACHqiD,GAAI,aACJzqD,EAAG,SACH0qD,GAAI,YACJC,EAAG,MACHC,GAAI,UACJzmC,EAAG,MACH0mC,GAAI,UACJ+B,EAAG,UACHC,GAAI,aACJ/B,EAAG,QACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI2B,EAAY3B,EAAS,GACrB4B,EAAc5B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB4B,EACA5B,EAAS,MACT4B,EAAc,IAAMA,EAAc,GAClC5B,EAAS,MACK,IAAd2B,EACA3B,EAAS,MACK,IAAd2B,EACA3B,EAAS,MACK,IAAd2B,GAAiC,IAAdA,EACnB3B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KArFyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,8IAA8I/6C,MAClJ,KAEJg7C,YAAa,iDAAiDh7C,MAAM,KACpEi7C,SAAU,+CAA+Cj7C,MAAM,KAC/Dk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNpiD,EAAG,kBACHqiD,GAAI,aACJzqD,EAAG,eACH0qD,GAAI,YACJC,EAAG,aACHC,GAAI,UACJzmC,EAAG,aACH0mC,GAAI,UACJC,EAAG,aACHC,GAAI,UACJxD,EAAG,YACHyD,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF9e,EAAOub,aAAa,QAAS,CACpCC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,mEAAmEh7C,MAC5E,KAEJi7C,SAAU,4DAA4Dj7C,MAClE,KAEJk7C,cAAe,uCAAuCl7C,MAAM,KAC5Dm7C,YAAa,kCAAkCn7C,MAAM,KACrD07C,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNpiD,EAAG,eACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,WACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,SACJxD,EAAG,SACHyD,GAAI,UAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAIzBkiD,cAAe,uCACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,QAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAb1C,GAEa,SAAbA,EADA0C,EAGa,UAAb1C,EACA0C,GAAQ,EAAIA,EAAOA,EAAO,GACb,UAAb1C,GAEa,YAAbA,EADA0C,EAAO,QACX,GAKX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,OAGfV,KAAM,CACFC,IAAK,EACLC,IAAK,KA9HyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,mEAAmEh7C,MAC5E,KAEJi7C,SAAU,4DAA4Dj7C,MAClE,KAEJk7C,cAAe,uCAAuCl7C,MAAM,KAC5Dm7C,YAAa,kCAAkCn7C,MAAM,KACrD07C,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNpiD,EAAG,eACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,WACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,SACJxD,EAAG,SACHyD,GAAI,UAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAGzBkiD,cAAe,2BACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAGO,QAAb1C,GAAsB0C,GAAQ,GACjB,UAAb1C,GAAwB0C,EAAO,GACnB,UAAb1C,EAEO0C,EAAO,GAEPA,GAGf1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,OAGfV,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qJAAqJ/6C,MACzJ,KAEJg7C,YAAa,iEAAiEh7C,MAC1E,KAEJm/C,iBAAkB,gBAClBC,kBAAkB,EAClBnE,SAAU,gFAAgFj7C,MACtF,KAEJk7C,cAAe,oDAAoDl7C,MAC/D,KAEJm7C,YAAa,6BAA6Bn7C,MAAM,KAChD07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAAG,QACHqiD,GAAI,YACJzqD,EAAG,aACH0qD,GAAI,WACJC,EAAG,cACHC,GAAI,YACJzmC,EAAG,WACH0mC,GAAI,UACJC,EAAG,YACHC,GAAI,UACJxD,EAAG,UACHyD,GAAI,SAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAGzBkiD,cAAe,wCACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAGO,WAAb1C,GAAyB0C,GAAQ,GACpB,YAAb1C,GAA0B0C,EAAO,GACrB,YAAb1C,EAEO0C,EAAO,GAEPA,GAGf1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,UAGfV,KAAM,CACFC,IAAK,EACLC,IAAK,KAxHyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,SAAS8f,EAAyBhC,EAAQQ,EAAe96D,GAMrD,OAAOs6D,EAAS,IAoBpB,SAAkBv9C,EAAMu9C,GACpB,OAAe,IAAXA,EAKR,SAAsBv9C,GAClB,IAAIw/C,EAAgB,CAChBptD,EAAG,IACH4J,EAAG,IACHua,EAAG,KAEP,YAAsChlB,IAAlCiuD,EAAcx/C,EAAKnd,OAAO,IACnBmd,EAEJw/C,EAAcx/C,EAAKnd,OAAO,IAAMmd,EAAKqX,UAAU,GAb3CooC,CAAaz/C,GAEjBA,EAxBe0/C,CALT,CACT5C,GAAI,WACJK,GAAI,MACJF,GAAI,UAE8Bh6D,GAAMs6D,GAchD,SAASoC,EAAWpC,GAChB,OAAIA,EAAS,EACFoC,EAAWpC,EAAS,IAExBA,EAoBX,IAAIqC,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJC,EAAc,6IAqBdC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGCrgB,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,gFAAgF/6C,MACpF,KAEJg7C,YAAa,mDAAmDh7C,MAAM,KACtEi7C,SAAU,6CAA6Cj7C,MAAM,KAC7Dk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,wBAAwBn7C,MAAM,KAC3C6/C,cAAeD,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBD,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA7CoB,wFA8CpBC,uBA7CyB,2DA8CzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBhE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,SACNpiD,EAAG,wBACHqiD,GAAI,YACJzqD,EAAG,cACH0qD,GAAIyC,EACJxC,EAAG,SACHC,GAAI,SACJzmC,EAAG,YACH0mC,GAAIsC,EACJrC,EAAG,SACHC,GAAIoC,EACJ5F,EAAG,WACHyD,GApIR,SAAiCG,GAC7B,OAAQoC,EAAWpC,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YA6HxBF,uBAAwB,kBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,QAGvCC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETpC,cAAe,YACfC,KAAM,SAAU58C,GACZ,MAAiB,SAAVA,GAEX68C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAOuC,EAAO,GAAK,OAAS,UAnKE5gE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,SAAS6gB,EAAU/C,EAAQQ,EAAe96D,GACtC,IAAIS,EAAS65D,EAAS,IACtB,OAAQt6D,GACJ,IAAK,KAQD,OANIS,GADW,IAAX65D,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIr6D,GADW,IAAX65D,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIr6D,GADW,IAAX65D,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJI75D,GADW,IAAX65D,EACU,MAEA,QAGlB,IAAK,KAQD,OANI75D,GADW,IAAX65D,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANI75D,GADW,IAAX65D,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjB9d,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qFAAqF/6C,MACzF,KAEJg7C,YAAa,8DAA8Dh7C,MACvE,KAEJo/C,kBAAkB,EAClBnE,SAAU,4DAA4Dj7C,MAClE,KAEJk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBvC,QAAS,eACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAAG,cACHqiD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAGuD,EACHtD,GAAIsD,EACJ/pC,EAAG,MACH0mC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,EACJ3G,EAAG,SACHyD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAlJyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,CACJ2D,WAAY,oFAAoF1+C,MAC5F,KAEJ8E,OAAQ,qHAAqH9E,MACzH,KAEJ2+C,SAAU,mBAEd3D,YAAa,8DAA8Dh7C,MACvE,KAEJo/C,kBAAkB,EAClBnE,SAAU,8DAA8Dj7C,MACpE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJuE,GAAI,aACJtE,IAAK,gCACLuE,IAAK,mBACLtE,KAAM,qCACNuE,KAAM,wBAEVtE,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjBh/D,KAAKq+D,QAAgB,MAAQ,MAAQ,QAE9DY,QAAS,WACL,MAAO,YAA+B,IAAjBj/D,KAAKq+D,QAAgB,MAAQ,MAAQ,QAE9Da,SAAU,WACN,MAAO,YAA+B,IAAjBl/D,KAAKq+D,QAAgB,MAAQ,MAAQ,QAE9Dc,QAAS,WACL,MAAO,YAA+B,IAAjBn/D,KAAKq+D,QAAgB,MAAQ,MAAQ,QAE9De,SAAU,WACN,MACI,wBACkB,IAAjBp/D,KAAKq+D,QAAgB,MAAQ,MAC9B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACNpiD,EAAG,aACHqiD,GAAI,YACJzqD,EAAG,WACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJC,EAAG,SACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQwB,GACvB,IAAI2B,EACW,IAAXnD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXwB,GAA6B,MAAXA,IAClB2B,EAAS,KAENnD,EAASmD,GAEpBlD,KAAM,CACFC,IAAK,EACLC,IAAK,KA/FyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwb,EAAS,oFAAoF/6C,MACzF,KAEJg7C,EAAc,kDAAkDh7C,MAAM,KACtE0/C,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJC,EAAc,wJAElB,SAASc,EAAOhjD,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAAS2iD,EAAU/C,EAAQQ,EAAe96D,EAAK+6D,GAC3C,IAAIt6D,EAAS65D,EAAS,IACtB,OAAQt6D,GACJ,IAAK,IACD,OAAO86D,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,UAAY,UAEvC75D,EAAS,YAExB,IAAK,IACD,OAAOq6D,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,SAAW,SAEtC75D,EAAS,WAExB,IAAK,IACD,OAAOq6D,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,SAAW,SAEtC75D,EAAS,WAExB,IAAK,IACD,OAAOq6D,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,MAAQ,OAEnC75D,EAAS,MAExB,IAAK,IACD,OAAOq6D,GAAiBC,EAAW,QAAU,UACjD,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,SAAW,UAEtC75D,EAAS,SAExB,IAAK,IACD,OAAOq6D,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,OAAS,OAEpC75D,EAAS,QAKvB+7C,EAAOub,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACb2E,YAAaA,EACbR,iBAAkBQ,EAGlBK,kBAAmB,uKACnBC,uBAAwB,sDACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBzE,SAAU,mDAAmDj7C,MAAM,KACnEk7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACNrsC,EAAG,cAEPssC,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,oBAGnBvC,QAAS,eACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,0BAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG8lD,EACHzD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAGuD,EACHtD,GAAIsD,EACJ/pC,EAAG+pC,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,EACJ3G,EAAG2G,EACHlD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzKyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,gEAAgE/6C,MACpE,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,oEAAoEj7C,MAC1E,KAEJk7C,cAAe,6BAA6Bl7C,MAAM,KAClDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVC,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU+D,GAMd,OAAOA,GALK,UAAU75D,KAAK65D,GACrB,MACA,QAAQ75D,KAAK65D,GACb,MACA,QAGV9D,KAAM,YACNpiD,EAAG,iBACHqiD,GAAI,aACJzqD,EAAG,YACH0qD,GAAI,WACJC,EAAG,YACHC,GAAI,WACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,WACHC,GAAI,UACJxD,EAAG,UACHyD,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yFAAyF/6C,MAC7F,KAEJg7C,YAAa,qDAAqDh7C,MAC9D,KAEJi7C,SAAU,+EAA+Ej7C,MACrF,KAEJk7C,cAAe,+BAA+Bl7C,MAAM,KACpDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EAEpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNpiD,EAAG,mBACHqiD,GAAI,YACJzqD,EAAG,QACH0qD,GAAI,WACJC,EAAG,MACHC,GAAI,SACJzmC,EAAG,UACH0mC,GAAI,aACJC,EAAG,MACHC,GAAI,SACJxD,EAAG,WACHyD,GAAI,cAERC,uBAAwB,mCAExBC,QAAS,SAAUC,GACf,IACImD,EAAS,GAiCb,OAlCQnD,EAyBA,GAEAmD,EADM,KA1BNnD,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACXmD,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBAnD,IAkCDA,EAASmD,GAEpBlD,KAAM,CACFC,IAAK,EACLC,IAAK,KA9FyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,sFAAsF/6C,MAC1F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,qDAAqDj7C,MAAM,KACrEk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAAG,cACHqiD,GAAI,cACJzqD,EAAG,WACH0qD,GAAI,cACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJC,EAAG,WACHC,GAAI,aACJxD,EAAG,QACHyD,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyBpgE,CAAQ,EAAQ,8FCMlD,SAAWmiD,GAAU,aAIzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIh5C,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnB2qD,EAAG,CAAC,cAAe,gBACnBxmC,EAAG,CAAC,UAAW,aACf0mC,GAAI,CAACM,EAAS,QAASA,EAAS,UAChCyB,EAAG,CAAC,aAAc,eAClB9B,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACI,EAAS,UAAWA,EAAS,YAClC5D,EAAG,CAAC,WAAY,cAChByD,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgB/4C,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cw8C,EAAOub,aAAa,QAAS,CACpCC,OAAQ,qFAAqF/6C,MACzF,KAEJg7C,YAAa,6DAA6Dh7C,MACtE,KAEJo/C,kBAAkB,EAClBnE,SAAU,8DAA8Dj7C,MACpE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,oBACHqiD,GAAI,cACJzqD,EAAGwuD,EACH9D,GAAI,aACJC,EAAG6D,EACH5D,GAAI,aACJzmC,EAAGqqC,EACH3D,GAAI2D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJ/B,EAAG0D,EACHzD,GAAIyD,EACJjH,EAAGiH,EACHxD,GAAIwD,GAERvD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyBpgE,CAAQ,EAAQ,8FCAlD,SAAWmiD,GAAU,aAIzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIh5C,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnB2qD,EAAG,CAAC,cAAe,gBACnBxmC,EAAG,CAAC,UAAW,aACf0mC,GAAI,CAACM,EAAS,QAASA,EAAS,UAChCyB,EAAG,CAAC,aAAc,eAClB9B,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACI,EAAS,UAAWA,EAAS,YAClC5D,EAAG,CAAC,WAAY,cAChByD,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgB/4C,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cw8C,EAAOub,aAAa,QAAS,CACpCC,OAAQ,qFAAqF/6C,MACzF,KAEJg7C,YAAa,6DAA6Dh7C,MACtE,KAEJo/C,kBAAkB,EAClBnE,SAAU,8DAA8Dj7C,MACpE,KAEJk7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,oBACHqiD,GAAI,cACJzqD,EAAGwuD,EACH9D,GAAI,aACJC,EAAG6D,EACH5D,GAAI,aACJzmC,EAAGqqC,EACH3D,GAAI2D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJ/B,EAAG0D,EACHzD,GAAIyD,EACJjH,EAAGiH,EACHxD,GAAIwD,GAERvD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyBpgE,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIh5C,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnB2qD,EAAG,CAAC,cAAe,gBACnBxmC,EAAG,CAAC,UAAW,aACf0mC,GAAI,CAACM,EAAS,QAASA,EAAS,UAChCyB,EAAG,CAAC,aAAc,eAClB9B,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACI,EAAS,UAAWA,EAAS,YAClC5D,EAAG,CAAC,WAAY,cAChByD,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgB/4C,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG/Cw8C,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qFAAqF/6C,MACzF,KAEJg7C,YAAa,6DAA6Dh7C,MACtE,KAEJo/C,kBAAkB,EAClBnE,SAAU,8DAA8Dj7C,MACpE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,oBACHqiD,GAAI,cACJzqD,EAAGwuD,EACH9D,GAAI,aACJC,EAAG6D,EACH5D,GAAI,aACJzmC,EAAGqqC,EACH3D,GAAI2D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJ/B,EAAG0D,EACHzD,GAAIyD,EACJjH,EAAGiH,EACHxD,GAAIwD,GAERvD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyBpgE,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAIwb,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJE,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGC1b,EAAOub,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUA,EACVC,cAAeD,EACfE,YAAa,qCAAqCn7C,MAAM,KACxD07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,QACfC,KAAM,SAAUvrD,GACZ,MAAO,OAASA,GAEpBwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,KAEA,MAGf/B,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,YACNpiD,EAAG,iBACHqiD,GAAI,cACJzqD,EAAG,WACH0qD,GAAI,YACJC,EAAG,aACHC,GAAI,cACJzmC,EAAG,WACH0mC,GAAI,YACJC,EAAG,SACHC,GAAI,UACJxD,EAAG,WACHyD,GAAI,aAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCisD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCqrD,KAAM,CACFC,IAAK,EACLC,IAAK,MAxFyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAWhBA,EAAOub,aAAa,KAAM,CAC/B6F,mBAAoB,qHAAqH3gD,MACrI,KAEJ4gD,iBAAkB,qHAAqH5gD,MACnI,KAEJ+6C,OAAQ,SAAU8F,EAAgB/7C,GAC9B,OAAK+7C,EAGiB,iBAAX/7C,GACP,IAAIzE,KAAKyE,EAAOqS,UAAU,EAAGrS,EAAO1Z,QAAQ,UAGrClO,KAAK4jE,kBAAkBD,EAAeE,SAEtC7jE,KAAK8jE,oBAAoBH,EAAeE,SARxC7jE,KAAK8jE,qBAWpBhG,YAAa,oDAAoDh7C,MAAM,KACvEi7C,SAAU,yDAAyDj7C,MAC/D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1Cs7C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCJ,KAAM,SAAUvrD,GACZ,MAAyC,OAAjCA,EAAQ,IAAIsU,cAAc,IAEtCg3C,cAAe,gBACfM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEViF,WAAY,CACR/E,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACD,MAAO,gCACX,QACI,MAAO,mCAGnBrC,SAAU,KAEdN,SAAU,SAAUl5D,EAAKm+D,GACrB,IApEYpxD,EAoER0wD,EAAStjE,KAAKikE,YAAYp+D,GAC1Bw4D,EAAQ2F,GAAOA,EAAI3F,QAIvB,OAzEYzrD,EAsEG0wD,GApEM,oBAAb58C,UAA4B9T,aAAiB8T,UACX,sBAA1CnT,OAAO1R,UAAUiT,SAAS/S,KAAK6Q,MAoE3B0wD,EAASA,EAAOnhE,MAAM6hE,IAEnBV,EAAOvuD,QAAQ,KAAMspD,EAAQ,IAAO,EAAI,MAAQ,SAE3DiB,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG,oBACHqiD,GAAI,kBACJzqD,EAAG,YACH0qD,GAAI,WACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,WACH0mC,GAAI,WACJC,EAAG,aACHC,GAAI,WACJxD,EAAG,cACHyD,GAAI,aAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBpgE,CAAQ,EAAQ,2FCMlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,6FAA6F/6C,MACjG,KAEJg7C,YAAa,oDAAoDh7C,MAAM,KACvEi7C,SAAU,qDAAqDj7C,MAAM,KACrEk7C,cAAe,gCAAgCl7C,MAAM,KACrDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNuE,KAAM,uCAEVnF,cAAe,cACfC,KAAM,SAAUvrD,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3Bk3C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpCQ,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNpiD,EAAG,kBACHqiD,GAAI,cACJzqD,EAAG,aACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,WACH0mC,GAAI,WACJC,EAAG,aACHC,GAAI,aACJxD,EAAG,WACHyD,GAAI,YAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA/DyBpgE,CAAQ,EAAQ,8FCDlD,SAAWmiD,GAAU,aAIzB,IAAI6hB,EAAiB,8DAA8DphD,MAC3E,KAEJg7C,EAAc,kDAAkDh7C,MAAM,KACtE0/C,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPpgB,EAAOub,aAAa,QAAS,CACpCC,OAAQ,2FAA2F/6C,MAC/F,KAEJg7C,YAAa,SAAU9oD,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbk2C,EAAY9oD,EAAE6uD,SAEdK,EAAelvD,EAAE6uD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBzE,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBh/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBj/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBl/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjBn/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjBp/D,KAAKq+D,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG,gBACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJ+B,EAAG,aACHC,GAAI,aACJ/B,EAAG,SACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyBpgE,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIzB,IAAI6hB,EAAiB,8DAA8DphD,MAC3E,KAEJg7C,EAAc,kDAAkDh7C,MAAM,KACtE0/C,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPpgB,EAAOub,aAAa,QAAS,CACpCC,OAAQ,2FAA2F/6C,MAC/F,KAEJg7C,YAAa,SAAU9oD,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbk2C,EAAY9oD,EAAE6uD,SAEdK,EAAelvD,EAAE6uD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBzE,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBh/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBj/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBl/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjBn/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjBp/D,KAAKq+D,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG,gBACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJ+B,EAAG,aACHC,GAAI,aACJ/B,EAAG,SACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET6D,YAAa,mBAzGqBjkE,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIzB,IAAI6hB,EAAiB,8DAA8DphD,MAC3E,KAEJg7C,EAAc,kDAAkDh7C,MAAM,KACtE0/C,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPpgB,EAAOub,aAAa,QAAS,CACpCC,OAAQ,2FAA2F/6C,MAC/F,KAEJg7C,YAAa,SAAU9oD,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbk2C,EAAY9oD,EAAE6uD,SAEdK,EAAelvD,EAAE6uD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBzE,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBh/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBj/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBl/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjBn/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjBp/D,KAAKq+D,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG,gBACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJ+B,EAAG,aACHC,GAAI,aACJ/B,EAAG,SACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,IAAI6hB,EAAiB,8DAA8DphD,MAC3E,KAEJg7C,EAAc,kDAAkDh7C,MAAM,KACtE0/C,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAETpgB,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,2FAA2F/6C,MAC/F,KAEJg7C,YAAa,SAAU9oD,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbk2C,EAAY9oD,EAAE6uD,SAEdK,EAAelvD,EAAE6uD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBzE,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBh/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBj/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBl/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjBn/D,KAAKq+D,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjBp/D,KAAKq+D,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG,gBACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJ+B,EAAG,aACHC,GAAI,aACJ/B,EAAG,SACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET6D,YAAa,mBAzGqBjkE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIh5C,EAAS,CACTxK,EAAG,CAAC,eAAgB,cAAe,iBACnCqiD,GAAI,CAACU,EAAS,UAAWA,EAAS,YAClCnrD,EAAG,CAAC,aAAc,aAClB0qD,GAAI,CAACS,EAAS,UAAWA,EAAS,YAClCR,EAAG,CAAC,YAAa,YAAa,YAC9BC,GAAI,CAACO,EAAS,SAAUA,EAAS,UACjChnC,EAAG,CAAC,YAAa,YACjB2mC,EAAG,CAAC,UAAW,WAAY,WAC3BC,GAAI,CAACI,EAAS,OAAQA,EAAS,SAC/B5D,EAAG,CAAC,YAAa,QAAS,aAC1ByD,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAIQ,EACO/4C,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAElD+6D,EAAWh5C,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG1Cw8C,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,6FAA6F/6C,MACjG,KAEJg7C,YAAa,6DAA6Dh7C,MACtE,KAEJi7C,SAAU,iEAAiEj7C,MACvE,KAEJk7C,cAAe,gBAAgBl7C,MAAM,KACrCm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACNpiD,EAAGomD,EACH/D,GAAI+D,EACJxuD,EAAGwuD,EACH9D,GAAI8D,EACJ7D,EAAG6D,EACH5D,GAAI4D,EACJrqC,EAAGqqC,EACH3D,GAAI,WACJC,EAAG0D,EACHzD,GAAIyD,EACJjH,EAAGiH,EACHxD,GAAIwD,GAERvD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,+FAA+F/6C,MACnG,KAEJg7C,YAAa,8DAA8Dh7C,MACvE,KAEJo/C,kBAAkB,EAClBnE,SAAU,sEAAsEj7C,MAC5E,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACNrsC,EAAG,WACH0wC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEVtE,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNpiD,EAAG,iBACHqiD,GAAI,aACJzqD,EAAG,aACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,WACH0mC,GAAI,UACJC,EAAG,eACHC,GAAI,cACJxD,EAAG,WACHyD,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,wEAAwE/6C,MAC5E,KAEJg7C,YAAa,wEAAwEh7C,MACjF,KAEJi7C,SAAU,qDAAoEj7C,MAC1E,KAEJk7C,cAAe,qDAAoEl7C,MAC/E,KAEJm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,wBACfC,KAAM,SAAUvrD,GACZ,MAAO,aAAauQ,KAAKvQ,IAE7BwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,aAEA,cAGf/B,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,YACHqiD,GAAI,WACJzqD,EAAG,WACH0qD,GAAI,WACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,SACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,SACJxD,EAAG,SACHyD,GAAI,UAERkB,SAAU,SAAU37D,GAChB,OAAOA,EACFwP,QAAQ,UAAU,SAAUiH,GACzB,OAAOmlD,EAAUnlD,MAEpBjH,QAAQ,KAAM,MAEvBisD,WAAY,SAAUz7D,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOilD,EAAUjlD,MAEpBjH,QAAQ,KAAM,MAEvBkrD,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,MA5GyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI+hB,EAAc,wEAAwEthD,MAClF,KAEJuhD,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASlB,EAAU/C,EAAQQ,EAAe96D,EAAK+6D,GAC3C,IAAIt6D,EAAS,GACb,OAAQT,GACJ,IAAK,IACD,OAAO+6D,EAAW,oBAAsB,kBAC5C,IAAK,KACDt6D,EAASs6D,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACDt6D,EAASs6D,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDt6D,EAASs6D,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDt6D,EAASs6D,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACDt6D,EAASs6D,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDt6D,EAASs6D,EAAW,SAAW,SAIvC,OAEJ,SAAsBT,EAAQS,GAC1B,OAAOT,EAAS,GACVS,EACIyD,EAAclE,GACdiE,EAAYjE,GAChBA,EARGmE,CAAanE,EAAQS,GAAY,IAAMt6D,EAW3C+7C,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,2GAA2G/6C,MAC/G,KAEJg7C,YAAa,uEAAuEh7C,MAChF,KAEJi7C,SAAU,qEAAqEj7C,MAC3E,KAEJk7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACNrsC,EAAG,WACH0wC,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEVtE,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACNpiD,EAAG8lD,EACHzD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAGuD,EACHtD,GAAIsD,EACJ/pC,EAAG+pC,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,EACJ3G,EAAG2G,EACHlD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyBpgE,CAAQ,EAAQ,4FCIlD,SAAWmiD,GAAU,aAIfA,EAAOub,aAAa,MAAO,CACjCC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,yDAAyDj7C,MAC/D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,wBAAwBn7C,MAAM,KAC3C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,eACH0qD,GAAI,YACJC,EAAG,aACHC,GAAI,UACJzmC,EAAG,aACH0mC,GAAI,UACJC,EAAG,cACHC,GAAI,WACJxD,EAAG,aACHyD,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qFAAqF/6C,MACzF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,4EAA4Ej7C,MAClF,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACNpiD,EAAG,YACHqiD,GAAI,cACJzqD,EAAG,eACH0qD,GAAI,cACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,YACH0mC,GAAI,WACJC,EAAG,cACHC,GAAI,aACJxD,EAAG,UACHyD,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyBpgE,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,uFAAuF/6C,MAC3F,KAEJg7C,YAAa,iEAAiEh7C,MAC1E,KAEJo/C,kBAAkB,EAClBnE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNpiD,EAAG,oBACHqiD,GAAI,cACJzqD,EAAG,aACH0qD,GAAI,aACJC,EAAG,YACHC,GAAI,YACJzmC,EAAG,UACH0mC,GAAI,WACJC,EAAG,UACHC,GAAI,UACJxD,EAAG,QACHyD,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOxB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SAlEjBjgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,uFAAuF/6C,MAC3F,KAEJg7C,YAAa,iEAAiEh7C,MAC1E,KAEJo/C,kBAAkB,EAClBnE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNpiD,EAAG,oBACHqiD,GAAI,cACJzqD,EAAG,aACH0qD,GAAI,aACJC,EAAG,YACHC,GAAI,YACJzmC,EAAG,UACH0mC,GAAI,WACJC,EAAG,UACHC,GAAI,UACJxD,EAAG,QACHyD,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOxB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAEIogB,EAAc,yKACdD,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGCngB,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,uFAAuF/6C,MAC3F,KAEJg7C,YAAa,iEAAiEh7C,MAC1E,KAEJ2/C,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA3BoB,2FA4BpBC,uBA3ByB,oFA4BzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBzE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNpiD,EAAG,oBACHqiD,GAAI,cACJzqD,EAAG,aACH0qD,GAAI,aACJC,EAAG,YACHC,GAAI,YACJzmC,EAAG,UACH0mC,GAAI,WACJ+B,EAAG,cACHC,GAAI,cACJ/B,EAAG,UACHC,GAAI,UACJxD,EAAG,QACHyD,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOxB,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIkiB,EAAsB,6DAA6DzhD,MAC/E,KAEJ0hD,EAAyB,kDAAkD1hD,MACvE,KAGCu/B,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,iGAAiG/6C,MACrG,KAEJg7C,YAAa,SAAU9oD,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACb48C,EAAuBxvD,EAAE6uD,SAEzBU,EAAoBvvD,EAAE6uD,SAJtBU,GAOfrC,kBAAkB,EAClBnE,SAAU,wDAAwDj7C,MAC9D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNpiD,EAAG,mBACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,UACH0mC,GAAI,WACJC,EAAG,aACHC,GAAI,aACJxD,EAAG,WACHyD,GAAI,cAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aA4ChBA,EAAOub,aAAa,KAAM,CAC/BC,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJC,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJoE,kBAAkB,EAClBnE,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJC,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnEC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,YACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,UACH0qD,GAAI,aACJC,EAAG,iBACHC,GAAI,oBACJzmC,EAAG,KACH0mC,GAAI,QACJC,EAAG,KACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,aAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aA4ChBA,EAAOub,aAAa,KAAM,CAC/BC,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJC,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJoE,kBAAkB,EAClBnE,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJC,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACNpiD,EAAG,gBACHqiD,GAAI,YACJzqD,EAAG,UACH0qD,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJzmC,EAAG,QACH0mC,GAAI,WACJC,EAAG,OACHC,GAAI,YACJxD,EAAG,WACHyD,GAAI,eAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yFAAyF/6C,MAC7F,KAEJg7C,YAAa,8DAA8Dh7C,MACvE,KAEJo/C,kBAAkB,EAClBnE,SAAU,mDAAmDj7C,MAAM,KACnEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjBh/D,KAAKq+D,QAAgB,KAAO,KAAO,QAE1DY,QAAS,WACL,MAAO,UAA6B,IAAjBj/D,KAAKq+D,QAAgB,KAAO,KAAO,QAE1Da,SAAU,WACN,MAAO,UAA6B,IAAjBl/D,KAAKq+D,QAAgB,KAAO,KAAO,QAE1Dc,QAAS,WACL,MAAO,UAA6B,IAAjBn/D,KAAKq+D,QAAgB,IAAM,KAAO,QAEzDe,SAAU,WACN,MACI,qBAAwC,IAAjBp/D,KAAKq+D,QAAgB,KAAO,KAAO,QAGlEgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUvuD,GACd,OAA0B,IAAtBA,EAAI9C,QAAQ,MACL,IAAM8C,EAEV,MAAQA,GAEnBwuD,KAAM,SACNpiD,EAAG,eACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,aACJC,EAAG,YACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJC,EAAG,SACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxEyBpgE,CAAQ,EAAQ,iGCGlD,SAAWmiD,GAAU,aAIzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIh5C,EAAS,CACTxK,EAAG,CAAC,kBAAmB,cACvBqiD,GAAI,CAACU,EAAS,aAAcA,EAAS,UACrCnrD,EAAG,CAAC,aAAc,YAClB0qD,GAAI,CAACS,EAAS,YAAaA,EAAS,WACpCR,EAAG,CAAC,WAAY,SAChBC,GAAI,CAACO,EAAS,UAAWA,EAAS,SAClChnC,EAAG,CAAC,YAAa,UACjB0mC,GAAI,CAACM,EAAS,WAAYA,EAAS,QACnCL,EAAG,CAAC,gBAAiB,aACrBC,GAAI,CAACI,EAAS,cAAeA,EAAS,WACtC5D,EAAG,CAAC,aAAc,WAClByD,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWh5C,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCw8C,EAAOub,aAAa,WAAY,CAC1CC,OAAQ,CACJ2D,WAAY,wFAAwF1+C,MAChG,KAEJ8E,OAAQ,mJAAmJ9E,MACvJ,KAEJ2+C,SAAU,mBAEd3D,YAAa,4EAA4Eh7C,MACrF,KAEJo/C,kBAAkB,EAClBnE,SAAU,qDAAqDj7C,MAAM,KACrEk7C,cAAe,4CAA4Cl7C,MAAM,KACjEm7C,YAAa,wBAAwBn7C,MAAM,KAC3C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,kBACJC,IAAK,qBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNuE,KAAM,oCAEVtE,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNpiD,EAAGomD,EACH/D,GAAI+D,EACJxuD,EAAGwuD,EACH9D,GAAI8D,EACJ7D,EAAG6D,EACH5D,GAAI4D,EACJrqC,EAAGqqC,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,EACJjH,EAAGiH,EACHxD,GAAIwD,GAERvD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOxB,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETpC,cAAe,4BACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,SAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAb1C,EACA0C,EACa,YAAb1C,EACA0C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,UAzHmB5gE,CAAQ,EAAQ,iGCGlD,SAAWmiD,GAAU,aAIzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIh5C,EAAS,CACTxK,EAAG,CAAC,qBAAsB,iBAC1BqiD,GAAI,CAACU,EAAS,cAAeA,EAAS,WACtCnrD,EAAG,CAAC,aAAc,YAClB0qD,GAAI,CAACS,EAAS,YAAaA,EAAS,WACpCR,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACO,EAAS,WAAYA,EAAS,UACnChnC,EAAG,CAAC,YAAa,UACjB0mC,GAAI,CAACM,EAAS,WAAYA,EAAS,QACnCL,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACI,EAAS,cAAeA,EAAS,WACtC5D,EAAG,CAAC,aAAc,YAClByD,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWh5C,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCw8C,EAAOub,aAAa,WAAY,CAC1CC,OAAQ,CACJ2D,WAAY,4EAA4E1+C,MACpF,KAEJ8E,OAAQ,wIAAwI9E,MAC5I,KAEJ2+C,SAAU,mBAEd3D,YAAa,4DAA4Dh7C,MACrE,KAEJo/C,kBAAkB,EAClBnE,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,iBACJC,IAAK,oBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNuE,KAAM,mCAEVtE,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNpiD,EAAGomD,EACH/D,GAAI+D,EACJxuD,EAAGwuD,EACH9D,GAAI8D,EACJ7D,EAAG6D,EACH5D,GAAI4D,EACJrqC,EAAGqqC,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,EACJjH,EAAGiH,EACHxD,GAAIwD,GAERvD,uBAAwB,cACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOxB,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETpC,cAAe,+BACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,SAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb1C,EACA0C,EACa,aAAb1C,EACA0C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAzHmB5gE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yFAAyF/6C,MAC7F,KAEJg7C,YAAa,yEAAyEh7C,MAClF,KAEJo/C,kBAAkB,EAClBnE,SAAU,wDAAwDj7C,MAC9D,KAEJk7C,cAAe,mCAAmCl7C,MAAM,KACxDm7C,YAAa,qBAAqBn7C,MAAM,KACxC07C,eAAgB,CACZC,GAAI,gBACJC,IAAK,mBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAAG,WACHqiD,GAAI,WACJzqD,EAAG,WACH0qD,GAAI,WACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,UACJC,EAAG,WACHC,GAAI,WACJxD,EAAG,UACHyD,GAAI,WAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAKzBkiD,cAAe,qBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,QAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb1C,EACA0C,EACa,SAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,OAGfV,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyBpgE,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,0EAA0E/6C,MAC9E,KAEJg7C,YAAa,4DAA4Dh7C,MACrE,KAEJi7C,SAAU,uCAAuCj7C,MAAM,KACvDk7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACNrsC,EAAG,WACH0wC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVtE,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNpiD,EAAG,aACHqiD,GAAI,WACJzqD,EAAG,MACH0qD,GAAI,UACJC,EAAG,MACHC,GAAI,SAAUO,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBhnC,EAAG,MACH0mC,GAAI,SAAUM,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBL,EAAG,OACHC,GAAI,SAAUI,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,WAEpB5D,EAAG,MACHyD,GAAI,SAAUG,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,UAGxBjC,cAAe,gEACfC,KAAM,SAAUvrD,GACZ,MAAO,8BAA8BuQ,KAAKvQ,IAE9CwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACPvC,EAAU,SAAW,eACrBuC,EAAO,GACPvC,EAAU,QAAU,eAEpB,UAzFmBr+D,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETqB,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBCngB,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,CACJj2C,OAAQ,8EAA8E9E,MAClF,KAEJ0+C,WAAY,0EAA0E1+C,MAClF,MAGRg7C,YAAa,6DAA6Dh7C,MACtE,KAEJi7C,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,kCAAkCl7C,MAAM,KACvDm7C,YAAa,qBAAqBn7C,MAAM,KACxC07C,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGV0D,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJR,YAAa,+KAEbR,iBAAkB,+KAElBa,kBAAmB,uIAEnBC,uBAAwB,sFAExBhE,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNpiD,EAAG,cACHqiD,GAAI,WACJzqD,EAAG,UACH0qD,GAAI,UACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,SACH0mC,GAAI,SACJC,EAAG,WACHC,GAAI,WACJxD,EAAG,UACHyD,GAAI,WAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAKzBkiD,cAAe,qBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,QAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb1C,EACA0C,EACa,UAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,OAGfV,KAAM,CACFC,IAAK,EACLC,IAAK,KAlKyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,SAAS6gB,EAAU/C,EAAQQ,EAAe96D,GACtC,IAAIS,EAAS65D,EAAS,IACtB,OAAQt6D,GACJ,IAAK,KAQD,OANIS,GADW,IAAX65D,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIr6D,GADW,IAAX65D,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIr6D,GADW,IAAX65D,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJI75D,GADW,IAAX65D,EACU,MAEA,QAGlB,IAAK,KAQD,OANI75D,GADW,IAAX65D,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANI75D,GADW,IAAX65D,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjB9d,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,CACJj2C,OAAQ,oGAAoG9E,MACxG,KAEJ0+C,WAAY,gGAAgG1+C,MACxG,MAGRg7C,YAAa,+DAA+Dh7C,MACxE,KAEJo/C,kBAAkB,EAClBnE,SAAU,4DAA4Dj7C,MAClE,KAEJk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBvC,QAAS,eACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAAG,cACHqiD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAGuD,EACHtD,GAAIsD,EACJ/pC,EAAG,MACH0mC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,EACJ3G,EAAG,SACHyD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxJyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAIoiB,EAAc,gEAAgE3hD,MAC9E,KAEJ,SAASogD,EAAU/C,EAAQQ,EAAe96D,EAAK+6D,GAC3C,IAAIU,EAAMnB,EACV,OAAQt6D,GACJ,IAAK,IACD,OAAO+6D,GAAYD,EACb,mBACA,oBACV,IAAK,KACD,OAAOW,GAAOV,GAAYD,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOW,GAAOV,GAAYD,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOW,GAAOV,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOW,GAAOV,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAOW,GAAOV,GAAYD,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAOW,GAAOV,GAAYD,EAAgB,MAAQ,QAE1D,MAAO,GAEX,SAASP,EAAKQ,GACV,OACKA,EAAW,GAAK,WACjB,IACA6D,EAAYzkE,KAAK0hE,OACjB,aAICrf,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,oGAAoG/6C,MACxG,KAEJg7C,YAAa,iEAAiEh7C,MAC1E,KAEJo/C,kBAAkB,EAClBnE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,gCAAgCl7C,MAAM,KACrDm7C,YAAa,qBAAqBn7C,MAAM,KACxC07C,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVZ,cAAe,SACfC,KAAM,SAAUvrD,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3Bk3C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,IACW,IAAZE,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzCQ,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOkB,EAAKr+D,KAAK/B,MAAM,IAE3Bm/D,QAAS,oBACTC,SAAU,WACN,OAAOgB,EAAKr+D,KAAK/B,MAAM,IAE3Bq/D,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,KACNpiD,EAAG8lD,EACHzD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAGuD,EACHtD,GAAIsD,EACJ/pC,EAAG+pC,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,EACJ3G,EAAG2G,EACHlD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyBpgE,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,CACJj2C,OAAQ,4GAA4G9E,MAChH,KAEJ0+C,WAAY,gGAAgG1+C,MACxG,MAGRg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,gEAAgEj7C,MACtE,KAEJk7C,cAAe,+BAA+Bl7C,MAAM,KACpDm7C,YAAa,+BAA+Bn7C,MAAM,KAClD07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,sBAEXE,SAAU,WACN,MAAO,8BAEXC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNpiD,EAAG,mBACHqiD,GAAI,cACJzqD,EAAG,OACH0qD,GAAI,UACJC,EAAG,MACHC,GAAI,SACJzmC,EAAG,KACH0mC,GAAI,QACJC,EAAG,OACHC,GAAI,UACJxD,EAAG,OACHyD,GAAI,WAER9B,cAAe,oCACfC,KAAM,SAAUvrD,GACZ,MAAO,uBAAuBuQ,KAAKvQ,IAEvCwrD,SAAU,SAAU0C,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,YAGfb,uBAAwB,0BACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAXxB,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yFAAyF/6C,MAC7F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,6CAA6Cj7C,MAAM,KAC7Dk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,wBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,SAAb1C,EACO0C,EACa,UAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb1C,GAAoC,UAAbA,EACvB0C,EAAO,QADX,GAIX1C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,eACNpiD,EAAG,iBACHqiD,GAAI,WACJzqD,EAAG,UACH0qD,GAAI,WACJC,EAAG,QACHC,GAAI,SACJzmC,EAAG,SACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,WACJxD,EAAG,UACHyD,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,SAASkhB,EAAOhjD,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAAS2iD,EAAU/C,EAAQQ,EAAe96D,EAAK+6D,GAC3C,IAAIt6D,EAAS65D,EAAS,IACtB,OAAQt6D,GACJ,IAAK,IACD,OAAO86D,GAAiBC,EAClB,mBACA,mBACV,IAAK,KACD,OAAI2C,EAAOpD,GAEH75D,GACCq6D,GAAiBC,EAAW,WAAa,YAG3Ct6D,EAAS,UACpB,IAAK,IACD,OAAOq6D,EAAgB,SAAW,SACtC,IAAK,KACD,OAAI4C,EAAOpD,GAEH75D,GAAUq6D,GAAiBC,EAAW,UAAY,WAE/CD,EACAr6D,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAIi9D,EAAOpD,GAEH75D,GACCq6D,GAAiBC,EACZ,gBACA,iBAGPt6D,EAAS,cACpB,IAAK,IACD,OAAIq6D,EACO,QAEJC,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAI2C,EAAOpD,GACHQ,EACOr6D,EAAS,QAEbA,GAAUs6D,EAAW,OAAS,SAC9BD,EACAr6D,EAAS,QAEbA,GAAUs6D,EAAW,MAAQ,QACxC,IAAK,IACD,OAAID,EACO,UAEJC,EAAW,QAAU,SAChC,IAAK,KACD,OAAI2C,EAAOpD,GACHQ,EACOr6D,EAAS,UAEbA,GAAUs6D,EAAW,SAAW,WAChCD,EACAr6D,EAAS,UAEbA,GAAUs6D,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOD,GAAiBC,EAAW,KAAO,MAC9C,IAAK,KACD,OAAI2C,EAAOpD,GACA75D,GAAUq6D,GAAiBC,EAAW,KAAO,QAEjDt6D,GAAUq6D,GAAiBC,EAAW,KAAO,QAIvDve,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,oFAAoF/6C,MACxF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,mFAAmFj7C,MACzF,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,iBACNpiD,EAAG8lD,EACHzD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAG,cACHC,GAAIsD,EACJ/pC,EAAG+pC,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,EACJ3G,EAAG2G,EACHlD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,gGAAgG/6C,MACpG,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACD,MAAO,6BACX,QACI,MAAO,+BAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUniD,GACd,OAAQ,YAAY+F,KAAK/F,GAAK,MAAQ,MAAQ,IAAMA,GAExDoiD,KAAM,QACNpiD,EAAG,iBACHqiD,GAAI,aACJzqD,EAAG,YACH0qD,GAAI,YACJC,EAAG,SACHC,GAAI,SACJzmC,EAAG,YACH0mC,GAAI,YACJC,EAAG,UACHC,GAAI,UACJxD,EAAG,UACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA9DyBpgE,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,gGAAgG/6C,MACpG,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,WACL,MACI,WACCh/D,KAAKq+D,QAAU,EAAI,OAA0B,IAAjBr+D,KAAKq+D,QAAgB,IAAM,OACxD,OAGRY,QAAS,WACL,MACI,aACCj/D,KAAKq+D,QAAU,EAAI,OAA0B,IAAjBr+D,KAAKq+D,QAAgB,IAAM,OACxD,OAGRa,SAAU,WACN,MACI,WACCl/D,KAAKq+D,QAAU,EAAI,OAA0B,IAAjBr+D,KAAKq+D,QAAgB,IAAM,OACxD,OAGRc,QAAS,WACL,MACI,WACCn/D,KAAKq+D,QAAU,EAAI,OAA0B,IAAjBr+D,KAAKq+D,QAAgB,IAAM,OACxD,OAGRe,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACD,MACI,uBACC1hE,KAAKq+D,QAAU,EACV,OACiB,IAAjBr+D,KAAKq+D,QACL,IACA,OACN,MAER,QACI,MACI,uBACCr+D,KAAKq+D,QAAU,EACV,OACiB,IAAjBr+D,KAAKq+D,QACL,IACA,OACN,QAIhBgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNpiD,EAAG,iBACHqiD,GAAI,aACJzqD,EAAG,YACH0qD,GAAI,YACJC,EAAG,SACHC,GAAI,SACJzmC,EAAG,YACH0mC,GAAI,YACJ+B,EAAG,gBACHC,GAAI,eACJ/B,EAAG,UACHC,GAAI,UACJxD,EAAG,UACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyBpgE,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/B8G,KAAM,CACF,CACIC,MAAO,aACPC,OAAQ,EACRp/D,KAAM,KACNq/D,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRp/D,KAAM,KACNq/D,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRp/D,KAAM,KACNq/D,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRp/D,KAAM,KACNq/D,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRp/D,KAAM,KACNq/D,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRp/D,KAAM,KACNq/D,OAAQ,KACRC,KAAM,MAEV,CACIH,MAAO,aACPI,OAAO,IACPH,OAAQ,EACRp/D,KAAM,MACNq/D,OAAQ,KACRC,KAAM,OAGdE,oBAAqB,WACrBC,oBAAqB,SAAUryD,EAAOoJ,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAIqN,SAASrN,EAAM,IAAMpJ,EAAO,KAE9DirD,OAAQ,yCAAyC/6C,MAAM,KACvDg7C,YAAa,yCAAyCh7C,MAClD,KAEJi7C,SAAU,8BAA8Bj7C,MAAM,KAC9Ck7C,cAAe,gBAAgBl7C,MAAM,KACrCm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACNrsC,EAAG,aACH0wC,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEVnF,cAAe,SACfC,KAAM,SAAUvrD,GACZ,MAAiB,OAAVA,GAEXwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,KAEA,MAGf/B,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAU3U,GAChB,OAAIA,EAAI6V,SAAWpgE,KAAKogE,OACb,cAEA,WAGfjB,QAAS,UACTC,SAAU,SAAU7U,GAChB,OAAIvqD,KAAKogE,SAAW7V,EAAI6V,OACb,cAEA,WAGff,SAAU,KAEdY,uBAAwB,WACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAXxB,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBb,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNpiD,EAAG,KACHqiD,GAAI,MACJzqD,EAAG,KACH0qD,GAAI,MACJC,EAAG,MACHC,GAAI,OACJzmC,EAAG,KACH0mC,GAAI,MACJC,EAAG,MACHC,GAAI,OACJxD,EAAG,KACHyD,GAAI,SAlJ0B9/D,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yFAAyF/6C,MAC7F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,+CAA+Cj7C,MAAM,KAC/Dk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,6BACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,WAAb1C,EACO0C,EACa,WAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb1C,GAAsC,UAAbA,EACzB0C,EAAO,QADX,GAIX1C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACNpiD,EAAG,kBACHqiD,GAAI,WACJzqD,EAAG,kBACH0qD,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJzmC,EAAG,WACH0mC,GAAI,YACJC,EAAG,UACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qGAAqG/6C,MACzG,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,CACNyD,WAAY,gEAAgE1+C,MACxE,KAEJ8E,OAAQ,iEAAiE9E,MACrE,KAEJ2+C,SAAU,iBAEdzD,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUniD,GACd,OAAOA,EAAErI,QAAQ,iCAAiC,SAC9CmwD,EACAj+C,EACAk+C,GAEA,MAAc,MAAPA,EAAal+C,EAAK,KAAOA,EAAKk+C,EAAK,SAGlD3F,KAAM,SAAUpiD,GACZ,MAAI,4BAA4B+F,KAAK/F,GAC1BA,EAAErI,QAAQ,SAAU,UAE3B,OAAOoO,KAAK/F,GACLA,EAAErI,QAAQ,QAAS,YAEvBqI,GAEXA,EAAG,iBACHqiD,GAAI,UACJzqD,EAAG,OACH0qD,GAAI,UACJC,EAAG,QACHC,GAAI,WACJzmC,EAAG,MACH0mC,GAAI,SACJC,EAAG,MACHC,GAAI,SACJxD,EAAG,OACHyD,GAAI,WAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,MAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI+e,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA/e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qFAAqF/6C,MACzF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,0DAA0Dj7C,MAChE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNpiD,EAAG,iBACHqiD,GAAI,YACJzqD,EAAG,YACH0qD,GAAI,WACJC,EAAG,YACHC,GAAI,WACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJxD,EAAG,UACHyD,GAAI,UAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUiB,EAASjB,IAAWiB,EAF7BjB,EAAS,KAEmCiB,EAD5CjB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhFyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yEAAyE/6C,MAC7E,KAEJg7C,YAAa,yEAAyEh7C,MAClF,KAEJi7C,SAAU,iDAAiDj7C,MAAM,KACjEk7C,cAAe,oBAAoBl7C,MAAM,KACzCm7C,YAAa,oBAAoBn7C,MAAM,KACvC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,cACfC,KAAM,SAAUvrD,GACZ,MAAiB,UAAVA,GAEXwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,QAEA,SAGf/B,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNpiD,EAAG,iBACHqiD,GAAI,YACJzqD,EAAG,UACH0qD,GAAI,UACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,UACJC,EAAG,QACHC,GAAI,QACJxD,EAAG,WACHyD,GAAI,YAERC,uBAAwB,YACxBC,QAAS,OACTgB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAGzBokD,KAAM,CACFC,IAAK,EACLC,IAAK,KApGyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,6FAA6F/6C,MACjG,KAEJg7C,YAAa,2EAA2Eh7C,MACpF,KAEJo/C,kBAAkB,EAClBnE,SAAU,0DAA0Dj7C,MAChE,KAEJk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,wBAAwBn7C,MAAM,KAC3C07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNpiD,EAAG,gBACHqiD,GAAI,gBACJzqD,EAAG,aACH0qD,GAAI,WACJC,EAAG,YACHC,GAAI,UACJzmC,EAAG,WACH0mC,GAAI,SACJC,EAAG,cACHC,GAAI,YACJxD,EAAG,YACHyD,GAAI,WAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAGzBkiD,cAAe,gCACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,WAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb1C,EACA0C,EACa,aAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,UAGfb,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yCAAyC/6C,MAAM,KACvDg7C,YAAa,yCAAyCh7C,MAClD,KAEJi7C,SAAU,8BAA8Bj7C,MAAM,KAC9Ck7C,cAAe,gBAAgBl7C,MAAM,KACrCm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACNrsC,EAAG,cACH0wC,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVtE,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,OACNpiD,EAAG,MACHqiD,GAAI,MACJzqD,EAAG,KACH0qD,GAAI,MACJC,EAAG,OACHC,GAAI,OACJzmC,EAAG,KACH0mC,GAAI,MACJC,EAAG,MACHC,GAAI,MACJxD,EAAG,MACHyD,GAAI,OAERC,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOxB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBjC,cAAe,QACfC,KAAM,SAAU58C,GACZ,MAAiB,OAAVA,GAEX68C,SAAU,SAAU0C,EAAMC,EAAQqE,GAC9B,OAAOtE,EAAO,GAAK,KAAO,QAxEI5gE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETtD,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGCxb,EAAOub,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,0EAA0Ej7C,MAChF,KAEJk7C,cAAe,2DAA2Dl7C,MACtE,KAEJm7C,YAAa,gBAAgBn7C,MAAM,KACnC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,kBACfC,KAAM,SAAUvrD,GACZ,MAAO,UAAUuQ,KAAKvQ,IAE1BwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,UAEA,WAGf/B,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,KACNpiD,EAAG,kBACHqiD,GAAI,WACJzqD,EAAG,cACH0qD,GAAI,YACJC,EAAG,eACHC,GAAI,aACJzmC,EAAG,WACH0mC,GAAI,SACJC,EAAG,YACHC,GAAI,UACJxD,EAAG,WACHyD,GAAI,UAERkB,SAAU,SAAU37D,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAOmlD,EAAUnlD,MAEpBjH,QAAQ,KAAM,MAEvBisD,WAAY,SAAUz7D,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOilD,EAAUjlD,MAEpBjH,QAAQ,KAAM,MAEvBqrD,KAAM,CACFC,IAAK,EACLC,IAAK,MApHyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI+e,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA/e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,kFAAkF/6C,MACtF,KAEJg7C,YAAa,qDAAqDh7C,MAC9D,KAEJi7C,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNpiD,EAAG,iBACHqiD,GAAI,YACJzqD,EAAG,YACH0qD,GAAI,WACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJxD,EAAG,UACHyD,GAAI,UAERC,uBAAwB,wBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUiB,EAASjB,IAAWiB,EAF7BjB,EAAS,KAEmCiB,EAD5CjB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlFyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIh5C,EAAS,CACT5S,EAAG,CAAC,aAAc,gBAClB2qD,EAAG,CAAC,YAAa,eACjBxmC,EAAG,CAAC,UAAW,aACf2mC,EAAG,CAAC,WAAY,eAChBvD,EAAG,CAAC,UAAW,eAEnB,OAAOoE,EAAgB/4C,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAuBxD,SAASw/D,EAA4BlF,GAEjC,GADAA,EAAS92C,SAAS82C,EAAQ,IACtB72C,MAAM62C,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAI2B,EAAY3B,EAAS,GAEzB,OACWkF,EADO,IAAdvD,EADa3B,EAAS,GAIS2B,GAChC,GAAI3B,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAOkF,EAA4BlF,GAInC,OAAOkF,EADPlF,GAAkB,KAKjB9d,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,uFAAuF/6C,MAC3F,KAEJg7C,YAAa,+DAA+Dh7C,MACxE,KAEJo/C,kBAAkB,EAClBnE,SAAU,mEAAmEj7C,MACzE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,cACJC,IAAK,iBACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVC,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQp/D,KAAK0hE,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvBpC,aAAc,CACVC,OAhGR,SAA2Bh6D,GAEvB,OAAI8/D,EADS9/D,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,KAAO3I,EAEX,MAAQA,GA4FXi6D,KA1FR,SAAyBj6D,GAErB,OAAI8/D,EADS9/D,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,QAAU3I,EAEd,SAAWA,GAsFd6X,EAAG,kBACHqiD,GAAI,cACJzqD,EAAGwuD,EACH9D,GAAI,cACJC,EAAG6D,EACH5D,GAAI,aACJzmC,EAAGqqC,EACH3D,GAAI,UACJC,EAAG0D,EACHzD,GAAI,WACJxD,EAAGiH,EACHxD,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApIyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,6EAA6E/6C,MACjF,KAEJg7C,YAAa,6EAA6Eh7C,MACtF,KAEJi7C,SAAU,sCAAsCj7C,MAAM,KACtDk7C,cAAe,oCAAoCl7C,MAAM,KACzDm7C,YAAa,mBAAmBn7C,MAAM,KACtC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVZ,cAAe,kBACfC,KAAM,SAAUvrD,GACZ,MAAiB,WAAVA,GAEXwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,WAEA,UAGf/B,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNpiD,EAAG,mBACHqiD,GAAI,YACJzqD,EAAG,SACH0qD,GAAI,UACJC,EAAG,YACHC,GAAI,aACJzmC,EAAG,QACH0mC,GAAI,SACJC,EAAG,UACHC,GAAI,WACJxD,EAAG,OACHyD,GAAI,SAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,MAAO,MAAQA,KA/DejgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIijB,EAAQ,CACR7F,GAAI,6BACJzqD,EAAG,wBACH0qD,GAAI,0BACJC,EAAG,2BACHC,GAAI,4BACJzmC,EAAG,qBACH0mC,GAAI,sBACJC,EAAG,uBACHC,GAAI,4BACJxD,EAAG,mBACHyD,GAAI,oBASR,SAASuF,EAAkBpF,EAAQQ,EAAe96D,EAAK+6D,GACnD,OAAOD,EACDY,EAAM17D,GAAK,GACX+6D,EACAW,EAAM17D,GAAK,GACX07D,EAAM17D,GAAK,GAErB,SAAS2/D,EAAQrF,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,GAEzD,SAASoB,EAAM17D,GACX,OAAOy/D,EAAMz/D,GAAKid,MAAM,KAE5B,SAASogD,EAAU/C,EAAQQ,EAAe96D,EAAK+6D,GAC3C,IAAIt6D,EAAS65D,EAAS,IACtB,OAAe,IAAXA,EAEI75D,EAASi/D,EAAkBpF,EAAQQ,EAAe96D,EAAI,GAAI+6D,GAEvDD,EACAr6D,GAAUk/D,EAAQrF,GAAUoB,EAAM17D,GAAK,GAAK07D,EAAM17D,GAAK,IAE1D+6D,EACOt6D,EAASi7D,EAAM17D,GAAK,GAEpBS,GAAUk/D,EAAQrF,GAAUoB,EAAM17D,GAAK,GAAK07D,EAAM17D,GAAK,IAIjEw8C,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,CACJj2C,OAAQ,oGAAoG9E,MACxG,KAEJ0+C,WAAY,kGAAkG1+C,MAC1G,KAEJ2+C,SAAU,+DAEd3D,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,CACNn2C,OAAQ,oFAAoF9E,MACxF,KAEJ0+C,WAAY,2FAA2F1+C,MACnG,KAEJ2+C,SAAU,cAEdzD,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,iBAAiBn7C,MAAM,KACpC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACNrsC,EAAG,aACH0wC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVtE,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAlFR,SAA0B+iD,EAAQQ,EAAe96D,EAAK+6D,GAClD,OAAID,EACO,kBAEAC,EAAW,kBAAoB,mBA+EtCnB,GAAIyD,EACJluD,EAAGuwD,EACH7F,GAAIwD,EACJvD,EAAG4F,EACH3F,GAAIsD,EACJ/pC,EAAGosC,EACH1F,GAAIqD,EACJpD,EAAGyF,EACHxF,GAAImD,EACJ3G,EAAGgJ,EACHvF,GAAIkD,GAERjD,uBAAwB,cACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,QAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAIijB,EAAQ,CACR7F,GAAI,qCAAqC38C,MAAM,KAC/C9N,EAAG,iCAAiC8N,MAAM,KAC1C48C,GAAI,iCAAiC58C,MAAM,KAC3C68C,EAAG,iCAAiC78C,MAAM,KAC1C88C,GAAI,iCAAiC98C,MAAM,KAC3CqW,EAAG,6BAA6BrW,MAAM,KACtC+8C,GAAI,6BAA6B/8C,MAAM,KACvCg9C,EAAG,iCAAiCh9C,MAAM,KAC1Ci9C,GAAI,iCAAiCj9C,MAAM,KAC3Cy5C,EAAG,wBAAwBz5C,MAAM,KACjCk9C,GAAI,wBAAwBl9C,MAAM,MAKtC,SAAS8E,EAAO25C,EAAOpB,EAAQQ,GAC3B,OAAIA,EAEOR,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKoB,EAAM,GAAKA,EAAM,GAI5DpB,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKoB,EAAM,GAAKA,EAAM,GAG3E,SAASF,EAAuBlB,EAAQQ,EAAe96D,GACnD,OAAOs6D,EAAS,IAAMv4C,EAAO09C,EAAMz/D,GAAMs6D,EAAQQ,GAErD,SAAS8E,EAAyBtF,EAAQQ,EAAe96D,GACrD,OAAO+hB,EAAO09C,EAAMz/D,GAAMs6D,EAAQQ,GAM7Bte,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,uGAAuG/6C,MAC3G,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,0EAA0Ej7C,MAChF,KAEJk7C,cAAe,kBAAkBl7C,MAAM,KACvCm7C,YAAa,kBAAkBn7C,MAAM,KACrC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNpiD,EAlCR,SAAyB+iD,EAAQQ,GAC7B,OAAOA,EAAgB,iBAAmB,kBAkCtClB,GAAI4B,EACJrsD,EAAGywD,EACH/F,GAAI2B,EACJ1B,EAAG8F,EACH7F,GAAIyB,EACJloC,EAAGssC,EACH5F,GAAIwB,EACJvB,EAAG2F,EACH1F,GAAIsB,EACJ9E,EAAGkJ,EACHzF,GAAIqB,GAERpB,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,IAAIqjB,EAAa,CACbC,MAAO,CAEHlG,GAAI,CAAC,SAAU,UAAW,WAC1BzqD,EAAG,CAAC,cAAe,iBACnB0qD,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BC,GAAI,CAAC,SAAU,SAAU,WAE7B4F,uBAAwB,SAAUzF,EAAQ0F,GACtC,OAAkB,IAAX1F,EACD0F,EAAQ,GACR1F,GAAU,GAAKA,GAAU,EACzB0F,EAAQ,GACRA,EAAQ,IAElB3C,UAAW,SAAU/C,EAAQQ,EAAe96D,GACxC,IAAIggE,EAAUH,EAAWC,MAAM9/D,GAC/B,OAAmB,IAAfA,EAAIuJ,OACGuxD,EAAgBkF,EAAQ,GAAKA,EAAQ,GAGxC1F,EACA,IACAuF,EAAWE,uBAAuBzF,EAAQ0F,KAMjDxjB,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,mFAAmF/6C,MACvF,KAEJg7C,YAAa,2DAA2Dh7C,MACpE,KAEJo/C,kBAAkB,EAClBnE,SAAU,4DAA4Dj7C,MAClE,KAEJk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBvC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgBp/D,KAAK0hE,QAE7BrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAAG,mBACHqiD,GAAIiG,EAAWxC,UACfluD,EAAG0wD,EAAWxC,UACdxD,GAAIgG,EAAWxC,UACfvD,EAAG+F,EAAWxC,UACdtD,GAAI8F,EAAWxC,UACf/pC,EAAG,MACH0mC,GAAI6F,EAAWxC,UACfpD,EAAG,SACHC,GAAI2F,EAAWxC,UACf3G,EAAG,SACHyD,GAAI0F,EAAWxC,WAEnBjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,8IAA8I/6C,MAClJ,KAEJg7C,YAAa,iEAAiEh7C,MAC1E,KAEJ2/C,YAAa,yCACbK,kBAAmB,yCACnBb,iBAAkB,yCAClBc,uBAAwB,yCACxBhF,SAAU,kDAAkDj7C,MAAM,KAClEk7C,cAAe,wBAAwBl7C,MAAM,KAC7Cm7C,YAAa,wBAAwBn7C,MAAM,KAC3C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACNpiD,EAAG,mBACHqiD,GAAI,YACJzqD,EAAG,YACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,QACH0mC,GAAI,QACJC,EAAG,YACHC,GAAI,YACJxD,EAAG,SACHyD,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,uFAAuF/6C,MAC3F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,wDAAwDj7C,MAC9D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG,kBACHqiD,GAAI,aACJzqD,EAAG,cACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,WACH0mC,GAAI,UACJC,EAAG,aACHC,GAAI,YACJxD,EAAG,cACHyD,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI2B,EAAY3B,EAAS,GACrB4B,EAAc5B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB4B,EACA5B,EAAS,MACT4B,EAAc,IAAMA,EAAc,GAClC5B,EAAS,MACK,IAAd2B,EACA3B,EAAS,MACK,IAAd2B,EACA3B,EAAS,MACK,IAAd2B,GAAiC,IAAdA,EACnB3B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnFyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yFAAyF/6C,MAC7F,KAEJg7C,YAAa,yEAAyEh7C,MAClF,KAEJo/C,kBAAkB,EAClBnE,SAAU,wEAAwEj7C,MAC9E,KAEJk7C,cAAe,2CAA2Cl7C,MAAM,KAChEm7C,YAAa,wBAAwBn7C,MAAM,KAC3C07C,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNpiD,EAAG,gBACHqiD,GAAI,cACJzqD,EAAG,eACH0qD,GAAI,cACJC,EAAG,eACHC,GAAI,cACJzmC,EAAG,YACH0mC,GAAI,WACJC,EAAG,WACHC,GAAI,UACJxD,EAAG,WACHyD,GAAI,WAER9B,cAAe,gDACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAGO,WAAb1C,GAAyB0C,GAAQ,GACrB,iBAAb1C,GACa,eAAbA,EAEO0C,EAAO,GAEPA,GAGf1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,YA7EmB5gE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,SAAS6gB,EAAU/C,EAAQQ,EAAe96D,EAAK+6D,GAC3C,OAAQ/6D,GACJ,IAAK,IACD,OAAO86D,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAOR,GAAUQ,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,QACI,OAAOR,GAIV9d,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,+LAA+L/6C,MACnM,KAEJg7C,YAAa,6EAA6Eh7C,MACtF,KAEJo/C,kBAAkB,EAClBnE,SAAU,6CAA6Cj7C,MAAM,KAC7Dk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVZ,cAAe,SACfC,KAAM,SAAUvrD,GACZ,MAAiB,OAAVA,GAEXwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,KAEA,MAGf/B,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACNpiD,EAAG8lD,EACHzD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAGuD,EACHtD,GAAIsD,EACJ/pC,EAAG+pC,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,EACJ3G,EAAG2G,EACHlD,GAAIkD,GAERjD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOxB,EAAS,QACpB,QACI,OAAOA,MAhGejgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAAS2E,EAAe3F,EAAQQ,EAAep7D,EAAQq7D,GACnD,IAAI0C,EAAS,GACb,GAAI3C,EACA,OAAQp7D,GACJ,IAAK,IACD+9D,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQ/9D,GACJ,IAAK,IACD+9D,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAOvuD,QAAQ,MAAOorD,GAGxB9d,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,gFAAgFh7C,MACzF,KAEJo/C,kBAAkB,EAClBnE,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,kCAAkCl7C,MAAM,KACvDm7C,YAAa,qBAAqBn7C,MAAM,KACxC07C,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNpiD,EAAG0oD,EACHrG,GAAIqG,EACJ9wD,EAAG8wD,EACHpG,GAAIoG,EACJnG,EAAGmG,EACHlG,GAAIkG,EACJ3sC,EAAG2sC,EACHjG,GAAIiG,EACJhG,EAAGgG,EACH/F,GAAI+F,EACJvJ,EAAGuJ,EACH9F,GAAI8F,GAER5E,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAGzBkiD,cAAe,qCACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,UAAb1C,GAAqC,UAAbA,EACjB0C,EAEM,WAAb1C,GACa,aAAbA,GACa,WAAbA,EAEO0C,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,GAQX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,GAAQ,GAAKA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,UAGfV,KAAM,CACFC,IAAK,EACLC,IAAK,KAvMyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,oFAAoF/6C,MACxF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,6CAA6Cj7C,MAAM,KAC7Dk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,SAAb1C,EACO0C,EACa,cAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb1C,GAAsC,UAAbA,EACzB0C,EAAO,QADX,GAIX1C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNpiD,EAAG,gBACHqiD,GAAI,UACJzqD,EAAG,UACH0qD,GAAI,WACJC,EAAG,QACHC,GAAI,SACJzmC,EAAG,SACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,WACJxD,EAAG,UACHyD,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,oFAAoF/6C,MACxF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,6CAA6Cj7C,MAAM,KAC7Dk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,SAAb1C,EACO0C,EACa,cAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb1C,GAAsC,UAAbA,EACzB0C,EAAO,QADX,GAIX1C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNpiD,EAAG,gBACHqiD,GAAI,UACJzqD,EAAG,UACH0qD,GAAI,WACJC,EAAG,QACHC,GAAI,SACJzmC,EAAG,SACH0mC,GAAI,UACJC,EAAG,UACHC,GAAI,WACJxD,EAAG,UACHyD,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,iEAAiEj7C,MACvE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,eACHqiD,GAAI,aACJzqD,EAAG,SACH0qD,GAAI,YACJC,EAAG,SACHC,GAAI,aACJzmC,EAAG,UACH0mC,GAAI,YACJC,EAAG,QACHC,GAAI,UACJxD,EAAG,OACHyD,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyBpgE,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,2FAA2F/6C,MAC/F,KAEJg7C,YAAa,mDAAmDh7C,MAAM,KACtEi7C,SAAU,wDAAwDj7C,MAC9D,KAEJk7C,cAAe,2BAA2Bl7C,MAAM,KAChDm7C,YAAa,2BAA2Bn7C,MAAM,KAE9C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACNpiD,EAAG,kBACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,WACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,SACH0mC,GAAI,SACJC,EAAG,OACHC,GAAI,OACJxD,EAAG,UACHyD,GAAI,WAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAGzBokD,KAAM,CACFC,IAAK,EACLC,IAAK,KAvFyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qFAAqF/6C,MACzF,KAEJg7C,YAAa,6DAA6Dh7C,MACtE,KAEJo/C,kBAAkB,EAClBnE,SAAU,qDAAqDj7C,MAAM,KACrEk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAAG,gBACHqiD,GAAI,cACJzqD,EAAG,aACH0qD,GAAI,cACJC,EAAG,UACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,WACJ+B,EAAG,SACHC,GAAI,UACJ/B,EAAG,WACHC,GAAI,aACJxD,EAAG,SACHyD,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyBpgE,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,uFAAuF/6C,MAC3F,KAEJg7C,YAAa,uEAAuEh7C,MAChF,KAEJo/C,kBAAkB,EAClBnE,SAAU,wDAAwDj7C,MAC9D,KAEJk7C,cAAe,0CAA0Cl7C,MAAM,KAC/Dm7C,YAAa,4BAA4Bn7C,MAAM,KAC/C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVoC,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAGzBkiD,cAAe,yBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,SAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb1C,EACA0C,EACa,WAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,QAGf/B,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,WACNpiD,EAAG,YACHqiD,GAAI,aACJzqD,EAAG,WACH0qD,GAAI,WACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,SACJC,EAAG,WACHC,GAAI,WACJxD,EAAG,UACHyD,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAtHyBpgE,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIzB,IAAIkiB,EAAsB,6DAA6DzhD,MAC/E,KAEJ0hD,EAAyB,kDAAkD1hD,MACvE,KAEJ0/C,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAEPpgB,EAAOub,aAAa,QAAS,CACpCC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,SAAU9oD,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACb48C,EAAuBxvD,EAAE6uD,SAEzBU,EAAoBvvD,EAAE6uD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBzE,SAAU,6DAA6Dj7C,MACnE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNpiD,EAAG,oBACHqiD,GAAI,cACJzqD,EAAG,aACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,SACJzmC,EAAG,UACH0mC,GAAI,WACJC,EAAG,YACHC,GAAI,aACJxD,EAAG,WACHyD,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIkiB,EAAsB,6DAA6DzhD,MAC/E,KAEJ0hD,EAAyB,kDAAkD1hD,MACvE,KAEJ0/C,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAETpgB,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,SAAU9oD,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACb48C,EAAuBxvD,EAAE6uD,SAEzBU,EAAoBvvD,EAAE6uD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBzE,SAAU,6DAA6Dj7C,MACnE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNpiD,EAAG,oBACHqiD,GAAI,cACJzqD,EAAG,aACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,SACJzmC,EAAG,UACH0mC,GAAI,WACJ+B,EAAG,WACHC,GAAI,WACJ/B,EAAG,YACHC,GAAI,aACJxD,EAAG,WACHyD,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArGyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qFAAqF/6C,MACzF,KAEJg7C,YAAa,6DAA6Dh7C,MACtE,KAEJo/C,kBAAkB,EAClBnE,SAAU,qDAAqDj7C,MAAM,KACrEk7C,cAAe,+BAA+Bl7C,MAAM,KACpDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNpiD,EAAG,eACHqiD,GAAI,YACJzqD,EAAG,aACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,UACH0mC,GAAI,WACJ+B,EAAG,UACHC,GAAI,WACJ/B,EAAG,YACHC,GAAI,aACJxD,EAAG,SACHyD,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyBpgE,CAAQ,EAAQ,+FCElD,SAAWmiD,GAAU,aAIbA,EAAOub,aAAa,SAAU,CACtCC,OAAQ,CACJ2D,WAAY,qFAAqF1+C,MAC7F,KAEJ8E,OAAQ,sHAAsH9E,MAC1H,KAEJ2+C,SAAU,mBAEd3D,YAAa,+DAA+Dh7C,MACxE,KAEJo/C,kBAAkB,EAClBnE,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJuE,GAAI,aACJtE,IAAK,4BACLuE,IAAK,mBACLtE,KAAM,iCACNuE,KAAM,wBAEVtE,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACNpiD,EAAG,gBACHqiD,GAAI,cACJzqD,EAAG,aACH0qD,GAAI,aACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,WACJC,EAAG,SACHC,GAAI,WACJxD,EAAG,QACHyD,GAAI,UAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQwB,GACvB,IAAI2B,EACW,IAAXnD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXwB,GAA6B,MAAXA,IAClB2B,EAAS,KAENnD,EAASmD,GAEpBlD,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF9e,EAAOub,aAAa,QAAS,CAEpCC,OAAQ,sEAAsE/6C,MAC1E,KAEJg7C,YAAa,sEAAsEh7C,MAC/E,KAEJi7C,SAAU,yDAAyDj7C,MAC/D,KAEJk7C,cAAe,iCAAiCl7C,MAAM,KACtDm7C,YAAa,iCAAiCn7C,MAAM,KACpD07C,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNpiD,EAAG,YACHqiD,GAAI,WACJzqD,EAAG,UACH0qD,GAAI,UACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,YACHC,GAAI,WACJxD,EAAG,UACHyD,GAAI,UAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAKzBkiD,cAAe,uBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,QAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb1C,EACA0C,EACa,WAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,OAGfV,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI0jB,EAAmB,mGAAmGjjD,MAClH,KAEJkjD,EAAmB,qGAAqGljD,MACpH,KAEJ0/C,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASe,EAAOhjD,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,EAE3D,SAAS2iD,EAAU/C,EAAQQ,EAAe96D,GACtC,IAAIS,EAAS65D,EAAS,IACtB,OAAQt6D,GACJ,IAAK,KACD,OAAOS,GAAUi9D,EAAOpD,GAAU,UAAY,UAClD,IAAK,IACD,OAAOQ,EAAgB,SAAW,SACtC,IAAK,KACD,OAAOr6D,GAAUi9D,EAAOpD,GAAU,SAAW,SACjD,IAAK,IACD,OAAOQ,EAAgB,UAAY,UACvC,IAAK,KACD,OAAOr6D,GAAUi9D,EAAOpD,GAAU,UAAY,UAClD,IAAK,KACD,OAAO75D,GAAUi9D,EAAOpD,GAAU,WAAa,WACnD,IAAK,KACD,OAAO75D,GAAUi9D,EAAOpD,GAAU,WAAa,YACnD,IAAK,KACD,OAAO75D,GAAUi9D,EAAOpD,GAAU,OAAS,QAI9C9d,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,SAAU8F,EAAgB/7C,GAC9B,OAAK+7C,EAEM,SAASxgD,KAAKyE,GACdo+C,EAAiBrC,EAAeE,SAEhCkC,EAAiBpC,EAAeE,SAJhCkC,GAOfjI,YAAa,kDAAkDh7C,MAAM,KACrE0/C,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBzE,SAAU,6DAA6Dj7C,MACnE,KAEJk7C,cAAe,2BAA2Bl7C,MAAM,KAChDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,oBAGnBvC,QAAS,iBACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,2BAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG,eACHqiD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAGuD,EACHtD,GAAIsD,EACJ/pC,EAAG,UACH0mC,GAAI,SACJ+B,EAAG,UACHC,GAAIqB,EACJpD,EAAG,UACHC,GAAImD,EACJ3G,EAAG,MACHyD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,2FAA2F/6C,MAC/F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,iFAAiFj7C,MACvF,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfp/D,KAAK0hE,OAA8B,IAAf1hE,KAAK0hE,MAC1B,wBACA,yBAEVrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNpiD,EAAG,kBACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJC,EAAG,SACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTiE,YAAa,kBAxDqBjkE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,2FAA2F/6C,MAC/F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,iFAAiFj7C,MACvF,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfp/D,KAAK0hE,OAA8B,IAAf1hE,KAAK0hE,MAC1B,wBACA,yBAEVrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNpiD,EAAG,WACHqiD,GAAI,cACJzqD,EAAG,YACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,UACJ+B,EAAG,aACHC,GAAI,aACJ/B,EAAG,SACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyBpgE,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIzB,SAASgf,EAAuBlB,EAAQQ,EAAe96D,GACnD,IASIogE,EAAY,IAIhB,OAHI9F,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzD8F,EAAY,QAET9F,EAAS8F,EAbH,CACLxG,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJgC,GAAI,YACJ9B,GAAI,OACJC,GAAI,OAMuBn6D,GAG9Bw8C,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,oGAAoG/6C,MACxG,KAEJg7C,YAAa,+DAA+Dh7C,MACxE,KAEJo/C,kBAAkB,EAClBnE,SAAU,kDAAkDj7C,MAAM,KAClEk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACNpiD,EAAG,iBACHqiD,GAAI4B,EACJrsD,EAAG,WACH0qD,GAAI2B,EACJ1B,EAAG,QACHC,GAAIyB,EACJloC,EAAG,OACH0mC,GAAIwB,EACJO,EAAG,cACHC,GAAIR,EACJvB,EAAG,SACHC,GAAIsB,EACJ9E,EAAG,QACHyD,GAAIqB,GAERjB,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAYzB,SAASgf,EAAuBlB,EAAQQ,EAAe96D,GAUnD,MAAY,MAARA,EACO86D,EAAgB,SAAW,SAE3BR,EAAS,KArBFmB,GAqB6BnB,EApB3CoB,EAQS,CACT9B,GAAIkB,EAAgB,yBAA2B,yBAC/CjB,GAAIiB,EAAgB,sBAAwB,sBAC5Cf,GAAI,iBACJC,GAAI,gBACJgC,GAAI,uBACJ9B,GAAI,uBACJC,GAAI,gBAKgCn6D,GApBvBid,MAAM,KAChBw+C,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAuBR,IAAIiB,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMKngB,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,CACJj2C,OAAQ,oFAAoF9E,MACxF,KAEJ0+C,WAAY,kFAAkF1+C,MAC1F,MAGRg7C,YAAa,CAETl2C,OAAQ,gEAAgE9E,MACpE,KAEJ0+C,WAAY,gEAAgE1+C,MACxE,MAGRi7C,SAAU,CACNyD,WAAY,gEAAgE1+C,MACxE,KAEJ8E,OAAQ,gEAAgE9E,MACpE,KAEJ2+C,SAAU,iDAEdzD,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C0/C,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAGlBC,YAAa,2MAGbR,iBAAkB,2MAGlBa,kBAAmB,wHAGnBC,uBAAwB,6FACxBvE,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAU3U,GAChB,GAAIA,EAAI6V,SAAWpgE,KAAKogE,OAcpB,OAAmB,IAAfpgE,KAAK0hE,MACE,oBAEA,mBAhBX,OAAQ1hE,KAAK0hE,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+BAUvBtC,SAAU,SAAU7U,GAChB,GAAIA,EAAI6V,SAAWpgE,KAAKogE,OAcpB,OAAmB,IAAfpgE,KAAK0hE,MACE,oBAEA,mBAhBX,OAAQ1hE,KAAK0hE,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BAUvBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNpiD,EAAG,mBACHqiD,GAAI4B,EACJrsD,EAAGqsD,EACH3B,GAAI2B,EACJ1B,EAAG,MACHC,GAAIyB,EACJloC,EAAG,OACH0mC,GAAIwB,EACJO,EAAG,SACHC,GAAIR,EACJvB,EAAG,QACHC,GAAIsB,EACJ9E,EAAG,MACHyD,GAAIqB,GAERnD,cAAe,wBACfC,KAAM,SAAUvrD,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjCwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,UAGfb,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOxB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1MyBpgE,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAIwb,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJqI,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAElD7jB,EAAOub,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUmI,EACVlI,cAAekI,EACfjI,YAAaiI,EACb1H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAUvrD,GACZ,MAAO,QAAUA,GAErBwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,MAEJ,OAEX/B,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNpiD,EAAG,YACHqiD,GAAI,WACJzqD,EAAG,SACH0qD,GAAI,SACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,WACH0mC,GAAI,WACJC,EAAG,WACHC,GAAI,WACJxD,EAAG,SACHyD,GAAI,UAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCisD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCqrD,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,mJAAmJ/6C,MACvJ,KAEJg7C,YAAa,6DAA6Dh7C,MACtE,KAEJi7C,SAAU,6EAA6Ej7C,MACnF,KAEJk7C,cAAe,mCAAmCl7C,MAAM,KACxDm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNpiD,EAAG,mBACHqiD,GAAI,eACJzqD,EAAG,eACH0qD,GAAI,cACJC,EAAG,cACHC,GAAI,aACJzmC,EAAG,cACH0mC,GAAI,cACJC,EAAG,aACHC,GAAI,WACJxD,EAAG,aACHyD,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAKhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,kGAAkG/6C,MACtG,KAEJg7C,YAAa,wDAAwDh7C,MACjE,KAEJi7C,SAAU,gEAAgEj7C,MACtE,KAEJk7C,cAAe,gCAAgCl7C,MAAM,KACrDm7C,YAAa,qBAAqBn7C,MAAM,KACxC+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNpiD,EAAG,eACHqiD,GAAI,WACJzqD,EAAG,YACH0qD,GAAI,cACJC,EAAG,MACHC,GAAI,SACJzmC,EAAG,OACH0mC,GAAI,SACJC,EAAG,OACHC,GAAI,SACJxD,EAAG,MACHyD,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,SAEpBjC,cAAe,4BACfC,KAAM,SAAUvrD,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,GAE/BwrD,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,OAAS,UAEnBA,EAAU,QAAU,aAjEDr+D,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAIwb,EAAS,oFAAoF/6C,MACzF,KAEJg7C,EAAc,kDAAkDh7C,MAAM,KAC1E,SAASygD,EAAOhjD,GACZ,OAAOA,EAAI,GAAKA,EAAI,EAExB,SAAS2iD,EAAU/C,EAAQQ,EAAe96D,EAAK+6D,GAC3C,IAAIt6D,EAAS65D,EAAS,IACtB,OAAQt6D,GACJ,IAAK,IACD,OAAO86D,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,UAAY,UAEvC75D,EAAS,YAExB,IAAK,IACD,OAAOq6D,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,SAAW,SAEtC75D,EAAS,WAExB,IAAK,IACD,OAAOq6D,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,SAAW,SAEtC75D,EAAS,WAExB,IAAK,IACD,OAAOq6D,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,MAAQ,OAEnC75D,EAAS,QAExB,IAAK,IACD,OAAOq6D,GAAiBC,EAAW,SAAW,WAClD,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,UAAY,YAEvC75D,EAAS,WAExB,IAAK,IACD,OAAOq6D,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACVt6D,GAAUi9D,EAAOpD,GAAU,OAAS,SAEpC75D,EAAS,SAKvB+7C,EAAOub,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACbC,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnBvC,QAAS,eACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,yBAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG8lD,EACHzD,GAAIyD,EACJluD,EAAGkuD,EACHxD,GAAIwD,EACJvD,EAAGuD,EACHtD,GAAIsD,EACJ/pC,EAAG+pC,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,EACJ3G,EAAG2G,EACHlD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7IyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIt6D,EAAS65D,EAAS,IACtB,OAAQt6D,GACJ,IAAK,IACD,OAAO86D,GAAiBC,EAClB,eACA,kBACV,IAAK,KAUD,OARIt6D,GADW,IAAX65D,EACUQ,EAAgB,UAAY,UACpB,IAAXR,EACGQ,GAAiBC,EAAW,UAAY,WAC3CT,EAAS,EACNQ,GAAiBC,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOD,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARIr6D,GADW,IAAX65D,EACUQ,EAAgB,SAAW,SACnB,IAAXR,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOD,EAAgB,UAAY,UACvC,IAAK,KAUD,OARIr6D,GADW,IAAX65D,EACUQ,EAAgB,MAAQ,MAChB,IAAXR,EACGQ,GAAiBC,EAAW,MAAQ,QACvCT,EAAS,EACNQ,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOD,GAAiBC,EAAW,SAAW,YAClD,IAAK,KAQD,OANIt6D,GADW,IAAX65D,EACUQ,GAAiBC,EAAW,MAAQ,OAC5B,IAAXT,EACGQ,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,eACpD,IAAK,KAUD,OARIt6D,GADW,IAAX65D,EACUQ,GAAiBC,EAAW,QAAU,UAC9B,IAAXT,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,aACpD,IAAK,KAUD,OARIt6D,GADW,IAAX65D,EACUQ,GAAiBC,EAAW,OAAS,QAC7B,IAAXT,EACGQ,GAAiBC,EAAW,OAAS,SACxCT,EAAS,EACNQ,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,SAMrDve,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,8DAA8Dh7C,MACvE,KAEJo/C,kBAAkB,EAClBnE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnBvC,QAAS,iBACTC,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAGnBrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNpiD,EAAGomD,EACH/D,GAAI+D,EACJxuD,EAAGwuD,EACH9D,GAAI8D,EACJ7D,EAAG6D,EACH5D,GAAI4D,EACJrqC,EAAGqqC,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,EACJjH,EAAGiH,EACHxD,GAAIwD,GAERvD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxKyBpgE,CAAQ,EAAQ,2FCKlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,gFAAgF/6C,MACpF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,4DAA4Dj7C,MAClE,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,mBAAmBn7C,MAAM,KACtC+9C,oBAAoB,EACpB3C,cAAe,QACfC,KAAM,SAAUvrD,GACZ,MAA2B,MAApBA,EAAMnN,OAAO,IAExB24D,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAOF,EAAQ,GAAK,KAAO,MAE/BG,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,aACNpiD,EAAG,eACHqiD,GAAI,aACJzqD,EAAG,aACH0qD,GAAI,YACJC,EAAG,UACHC,GAAI,SACJzmC,EAAG,WACH0mC,GAAI,UACJC,EAAG,WACHC,GAAI,UACJxD,EAAG,UACHyD,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyBpgE,CAAQ,EAAQ,gGCElD,SAAWmiD,GAAU,aAIzB,IAAIqjB,EAAa,CACbC,MAAO,CAEHlG,GAAI,CAAC,UAAW,UAAW,WAC3BzqD,EAAG,CAAC,cAAe,gBACnB0qD,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBC,GAAI,CAAC,SAAU,SAAU,WAE7B4F,uBAAwB,SAAUzF,EAAQ0F,GACtC,OAAkB,IAAX1F,EACD0F,EAAQ,GACR1F,GAAU,GAAKA,GAAU,EACzB0F,EAAQ,GACRA,EAAQ,IAElB3C,UAAW,SAAU/C,EAAQQ,EAAe96D,GACxC,IAAIggE,EAAUH,EAAWC,MAAM9/D,GAC/B,OAAmB,IAAfA,EAAIuJ,OACGuxD,EAAgBkF,EAAQ,GAAKA,EAAQ,GAGxC1F,EACA,IACAuF,EAAWE,uBAAuBzF,EAAQ0F,KAM7CxjB,EAAOub,aAAa,UAAW,CACxCC,OAAQ,mFAAmF/6C,MACvF,KAEJg7C,YAAa,2DAA2Dh7C,MACpE,KAEJo/C,kBAAkB,EAClBnE,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBvC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgBp/D,KAAK0hE,QAE7BrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,mBACHqiD,GAAIiG,EAAWxC,UACfluD,EAAG0wD,EAAWxC,UACdxD,GAAIgG,EAAWxC,UACfvD,EAAG+F,EAAWxC,UACdtD,GAAI8F,EAAWxC,UACf/pC,EAAG,MACH0mC,GAAI6F,EAAWxC,UACfpD,EAAG,QACHC,GAAI2F,EAAWxC,UACf3G,EAAG,SACHyD,GAAI0F,EAAWxC,WAEnBjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjHyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIqjB,EAAa,CACbC,MAAO,CAEHlG,GAAI,CAAC,UAAW,UAAW,WAC3BzqD,EAAG,CAAC,cAAe,gBACnB0qD,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBC,GAAI,CAAC,SAAU,SAAU,WAE7B4F,uBAAwB,SAAUzF,EAAQ0F,GACtC,OAAkB,IAAX1F,EACD0F,EAAQ,GACR1F,GAAU,GAAKA,GAAU,EACzB0F,EAAQ,GACRA,EAAQ,IAElB3C,UAAW,SAAU/C,EAAQQ,EAAe96D,GACxC,IAAIggE,EAAUH,EAAWC,MAAM9/D,GAC/B,OAAmB,IAAfA,EAAIuJ,OACGuxD,EAAgBkF,EAAQ,GAAKA,EAAQ,GAGxC1F,EACA,IACAuF,EAAWE,uBAAuBzF,EAAQ0F,KAMjDxjB,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,mFAAmF/6C,MACvF,KAEJg7C,YAAa,2DAA2Dh7C,MACpE,KAEJo/C,kBAAkB,EAClBnE,SAAU,wDAAwDj7C,MAC9D,KAEJk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQl/D,KAAK0hE,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBvC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgBp/D,KAAK0hE,QAE7BrC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNpiD,EAAG,mBACHqiD,GAAIiG,EAAWxC,UACfluD,EAAG0wD,EAAWxC,UACdxD,GAAIgG,EAAWxC,UACfvD,EAAG+F,EAAWxC,UACdtD,GAAI8F,EAAWxC,UACf/pC,EAAG,MACH0mC,GAAI6F,EAAWxC,UACfpD,EAAG,QACHC,GAAI2F,EAAWxC,UACf3G,EAAG,SACHyD,GAAI0F,EAAWxC,WAEnBjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyBpgE,CAAQ,EAAQ,2FCElD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,mHAAmH/6C,MACvH,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,sEAAsEj7C,MAC5E,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACNpiD,EAAG,qBACHqiD,GAAI,cACJzqD,EAAG,SACH0qD,GAAI,aACJC,EAAG,SACHC,GAAI,aACJzmC,EAAG,UACH0mC,GAAI,cACJC,EAAG,UACHC,GAAI,cACJxD,EAAG,UACHyD,GAAI,eAER9B,cAAe,mCACfE,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGf2D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,YAAb1C,EACO0C,EACa,UAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAb1C,GAA0C,YAAbA,EACvB,IAAT0C,EACO,EAEJA,EAAO,QAJX,GAOXb,uBAAwB,UACxBC,QAAS,KACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,oDAAoDj7C,MAAM,KACpEk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNsE,IAAK,mBACLC,KAAM,wBAEVtE,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,eACNpiD,EAAG,iBACHqiD,GAAI,cACJzqD,EAAG,WACH0qD,GAAI,aACJC,EAAG,WACHC,GAAI,YACJzmC,EAAG,SACH0mC,GAAI,WACJC,EAAG,WACHC,GAAI,aACJxD,EAAG,SACHyD,GAAI,SAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,GAEM,IAANA,EADA,KAIA,OAIlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,sFAAsF/6C,MAC1F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,8DAA8Dj7C,MACpE,KAEJk7C,cAAe,kCAAkCl7C,MAAM,KACvDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNpiD,EAAG,aACHqiD,GAAI,aACJzqD,EAAG,cACH0qD,GAAI,YACJC,EAAG,aACHC,GAAI,WACJzmC,EAAG,YACH0mC,GAAI,UACJC,EAAG,cACHC,GAAI,WACJxD,EAAG,cACHyD,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI4e,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,0FAA0Fh7C,MACnG,KAEJi7C,SAAU,8FAA8Fj7C,MACpG,KAEJk7C,cAAe,mDAAmDl7C,MAC9D,KAEJm7C,YAAa,sBAAsBn7C,MAAM,KACzC07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNpiD,EAAG,oBACHqiD,GAAI,eACJzqD,EAAG,cACH0qD,GAAI,gBACJC,EAAG,gBACHC,GAAI,eACJzmC,EAAG,WACH0mC,GAAI,aACJC,EAAG,YACHC,GAAI,cACJxD,EAAG,aACHyD,GAAI,eAERC,uBAAwB,aACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBe,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOmlD,EAAUnlD,OAGzBglD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOilD,EAAUjlD,OAIzBkiD,cAAe,wCACfE,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAGfkB,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,UAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb1C,GAAqC,SAAbA,GAEX,YAAbA,GACA0C,GAAQ,GAFRA,EAIAA,EAAO,IAGtBV,KAAM,CACFC,IAAK,EACLC,IAAK,KA/HyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,mEAAmEh7C,MAC5E,KAEJo/C,kBAAkB,EAClBnE,SAAU,8DAA8Dj7C,MACpE,KAEJk7C,cAAe,kCAAkCl7C,MAAM,KACvDm7C,YAAa,qBAAqBn7C,MAAM,KACxC07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACNpiD,EAAG,iBACHqiD,GAAI,aACJzqD,EAAG,YACH0qD,GAAI,cACJC,EAAG,SACHC,GAAI,WACJzmC,EAAG,UACH0mC,GAAI,YACJC,EAAG,SACHC,GAAI,WACJxD,EAAG,cACHyD,GAAI,iBAERC,uBAAwB,WACxBC,QAAS,MACThC,cAAe,iCACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,WAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb1C,EACA0C,EACa,cAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,aAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,UAGfV,KAAM,CACFC,IAAK,EACLC,IAAK,KApFyBpgE,CAAQ,EAAQ,4FCKlD,SAAWmiD,GAAU,aAIfA,EAAOub,aAAa,MAAO,CACjCC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,kDAAkDj7C,MAAM,KAClEk7C,cAAe,iCAAiCl7C,MAAM,KACtDm7C,YAAa,yBAAyBn7C,MAAM,KAC5C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,aACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,YACH0mC,GAAI,WACJC,EAAG,YACHC,GAAI,WACJxD,EAAG,YACHyD,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyBpgE,CAAQ,EAAQ,2FCClD,SAAWmiD,GAAU,aAIzB,IAAI+e,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA/e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,CACJj2C,OAAQ,qFAAqF9E,MACzF,KAEJ0+C,WAAY,yEAAyE1+C,MACjF,MAGRg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,yDAAyDj7C,MAC/D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,SACNpiD,EAAG,eACHpI,EAAG,YACH0qD,GAAI,YACJC,EAAG,UACHC,GAAI,UACJzmC,EAAG,SACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,SACJxD,EAAG,SACHyD,GAAI,UAER9B,cAAe,qBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,QAAb1C,EACO0C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb1C,EACA0C,EACa,QAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,UAAb1C,EACA0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,OAGfb,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUiB,EAASjB,IAAWiB,EAF7BjB,EAAS,KAEmCiB,EAD5CjB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlHyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,oGAAoG/6C,MACxG,KAEJg7C,YAAa,iEAAiEh7C,MAC1E,KAEJo/C,kBAAkB,EAClBnE,SAAU,iDAAiDj7C,MAAM,KACjEk7C,cAAe,8CAA8Cl7C,MAAM,KACnEm7C,YAAa,yBAAyBn7C,MAAM,KAC5C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVZ,cAAe,wBACfC,KAAM,SAAUvrD,GACZ,MAAiB,eAAVA,GAEXwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,aAEA,cAGf/B,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNpiD,EAAG,eACHqiD,GAAI,YACJzqD,EAAG,SACH0qD,GAAI,UACJC,EAAG,YACHC,GAAI,aACJzmC,EAAG,QACH0mC,GAAI,SACJ+B,EAAG,YACHC,GAAI,aACJ/B,EAAG,UACHC,GAAI,WACJxD,EAAG,OACHyD,GAAI,WA9D0B9/D,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAI+e,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC/e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,+EAA+E/6C,MACnF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,wDAAwDj7C,MAC9D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNpiD,EAAG,iBACHpI,EAAG,YACH0qD,GAAI,WACJC,EAAG,YACHC,GAAI,WACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJxD,EAAG,UACHyD,GAAI,UAERE,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOxB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI1iD,EAAI0iD,EAAS,GAGjB,OAAOA,GAAUiB,EAAS3jD,IAAM2jD,EAFvBjB,EAAS,IAAO1iD,IAEsB2jD,EADvCjB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzFyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,yDAAyDj7C,MAC/D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,wBAAwBn7C,MAAM,KAC3C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNpiD,EAAG,gBACHqiD,GAAI,aACJzqD,EAAG,eACH0qD,GAAI,YACJC,EAAG,aACHC,GAAI,UACJzmC,EAAG,aACH0mC,GAAI,UACJC,EAAG,cACHC,GAAI,WACJxD,EAAG,aACHyD,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyBpgE,CAAQ,EAAQ,4FCGlD,SAAWmiD,GAAU,aAIzB,IAAI8jB,EAAe,iDAAiDrjD,MAAM,KA4B1E,SAASogD,EAAU/C,EAAQQ,EAAep7D,EAAQq7D,GAC9C,IAAIwF,EAiBR,SAAsBjG,GAClB,IAAIkG,EAAUvkD,KAAKmtC,MAAOkR,EAAS,IAAQ,KACvCmG,EAAMxkD,KAAKmtC,MAAOkR,EAAS,IAAO,IAClCoG,EAAMpG,EAAS,GACfqG,EAAO,GAUX,OATIH,EAAU,IACVG,GAAQL,EAAaE,GAAW,SAEhCC,EAAM,IACNE,IAAkB,KAATA,EAAc,IAAM,IAAML,EAAaG,GAAO,OAEvDC,EAAM,IACNC,IAAkB,KAATA,EAAc,IAAM,IAAML,EAAaI,IAEpC,KAATC,EAAc,OAASA,EA/BbC,CAAatG,GAC9B,OAAQ56D,GACJ,IAAK,KACD,OAAO6gE,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QAqBtB/jB,EAAOub,aAAa,MAAO,CACjCC,OAAQ,kMAAkM/6C,MACtM,KAEJg7C,YAAa,0HAA0Hh7C,MACnI,KAEJo/C,kBAAkB,EAClBnE,SAAU,2DAA2Dj7C,MACjE,KAEJk7C,cAAe,2DAA2Dl7C,MACtE,KAEJm7C,YAAa,2DAA2Dn7C,MACpE,KAEJ07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEdC,aAAc,CACVC,OA/FR,SAAyB+D,GACrB,IAAItU,EAAOsU,EASX,OAP+B,IAA3BA,EAAOp1D,QAAQ,OACT8gD,EAAKltD,MAAM,GAAI,GAAK,OACO,IAA3BwhE,EAAOp1D,QAAQ,OACf8gD,EAAKltD,MAAM,GAAI,GAAK,OACO,IAA3BwhE,EAAOp1D,QAAQ,OACf8gD,EAAKltD,MAAM,GAAI,GAAK,MACpBktD,EAAO,QAuFbwQ,KAnFR,SAAuB8D,GACnB,IAAItU,EAAOsU,EASX,OAP+B,IAA3BA,EAAOp1D,QAAQ,OACT8gD,EAAKltD,MAAM,GAAI,GAAK,OACO,IAA3BwhE,EAAOp1D,QAAQ,OACf8gD,EAAKltD,MAAM,GAAI,GAAK,OACO,IAA3BwhE,EAAOp1D,QAAQ,OACf8gD,EAAKltD,MAAM,GAAI,GAAK,MACpBktD,EAAO,QA2Eb5xC,EAAG,UACHqiD,GAAIyD,EACJluD,EAAG,UACH0qD,GAAIwD,EACJvD,EAAG,UACHC,GAAIsD,EACJ/pC,EAAG,UACH0mC,GAAIqD,EACJpD,EAAG,UACHC,GAAImD,EACJ3G,EAAG,UACHyD,GAAIkD,GAERjD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3HyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIzB,IAAI+e,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC/e,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,6EAA6E/6C,MACjF,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,wDAAwDj7C,MAC9D,KAEJk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1Cs7C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCL,cAAe,cACfC,KAAM,SAAUvrD,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,GAE7B4rD,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACNpiD,EAAG,gBACHqiD,GAAI,YACJzqD,EAAG,aACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,SACJ+B,EAAG,YACHC,GAAI,WACJ/B,EAAG,SACHC,GAAI,QACJxD,EAAG,UACHyD,GAAI,UAERE,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOxB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI1iD,EAAI0iD,EAAS,GAGjB,OAAOA,GAAUiB,EAAS3jD,IAAM2jD,EAFvBjB,EAAS,IAAO1iD,IAEsB2jD,EADvCjB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyBpgE,CAAQ,EAAQ,4FCGlD,SAAWmiD,GAAU,aAiEzB,SAASmhB,EAAoBrD,EAAQQ,EAAe96D,EAAK+6D,GACrD,IAAIh5C,EAAS,CACTxK,EAAG,CAAC,kBAAmB,mBACvBqiD,GAAI,CAACU,EAAS,WAAiBA,EAAS,YACxCnrD,EAAG,CAAC,UAAW,cACf0qD,GAAI,CAACS,EAAS,SAAeA,EAAS,UACtCR,EAAG,CAAC,UAAW,eACfC,GAAI,CAACO,EAAS,SAAeA,EAAS,UACtChnC,EAAG,CAAC,UAAW,eACf0mC,GAAI,CAACM,EAAS,SAAeA,EAAS,UACtCL,EAAG,CAAC,SAAU,aACdC,GAAI,CAACI,EAAS,SAAeA,EAAS,UACtC5D,EAAG,CAAC,QAAS,YACbyD,GAAI,CAACG,EAAS,OAAaA,EAAS,SAExC,OAAOS,GAEDD,EADA/4C,EAAO/hB,GAAK,GAGZ+hB,EAAO/hB,GAAK,GA9EZw8C,EAAOub,aAAa,MAAO,CACjCC,OAAQ,sFAAsF/6C,MAC1F,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,sDAAsDj7C,MAAM,KACtEk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVZ,cAAe,aACfC,KAAM,SAAUvrD,GACZ,MAAO,QAAUA,EAAMsU,eAE3Bk3C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjCQ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACNpiD,EAAGomD,EACH/D,GAAI+D,EACJxuD,EAAGwuD,EACH9D,GAAI8D,EACJ7D,EAAG6D,EACH5D,GAAI4D,EACJrqC,EAAGqqC,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,EACJjH,EAAGiH,EACHxD,GAAIwD,GAERvD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyBpgE,CAAQ,EAAQ,iGCElD,SAAWmiD,GAAU,aAIXA,EAAOub,aAAa,WAAY,CAC1CC,OAAQ,wFAAwF/6C,MAC5F,KAEJg7C,YAAa,wFAAwFh7C,MACjG,KAEJi7C,SAAU,kDAAkDj7C,MAAM,KAClEk7C,cAAe,kDAAkDl7C,MAAM,KACvEm7C,YAAa,kDAAkDn7C,MAAM,KACrE07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACNpiD,EAAG,OACHqiD,GAAI,UACJzqD,EAAG,QACH0qD,GAAI,WACJC,EAAG,OACHC,GAAI,cACJzmC,EAAG,MACH0mC,GAAI,WACJC,EAAG,QACHC,GAAI,YACJxD,EAAG,QACHyD,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyBpgE,CAAQ,EAAQ,4FCGlD,SAAWmiD,GAAU,aAIfA,EAAOub,aAAa,MAAO,CACjCC,OAAQ,kFAAkF/6C,MACtF,KAEJg7C,YAAa,kFAAkFh7C,MAC3F,KAEJi7C,SAAU,kDAAkDj7C,MAAM,KAClEk7C,cAAe,kDAAkDl7C,MAAM,KACvEm7C,YAAa,kDAAkDn7C,MAAM,KACrE07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACNpiD,EAAG,OACHqiD,GAAI,UACJzqD,EAAG,QACH0qD,GAAI,WACJC,EAAG,OACHC,GAAI,cACJzmC,EAAG,MACH0mC,GAAI,WACJC,EAAG,QACHC,GAAI,YACJxD,EAAG,QACHyD,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyBpgE,CAAQ,EAAQ,8FCGlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,sFAAsF/6C,MAC1F,KAEJg7C,YAAa,sFAAsFh7C,MAC/F,KAEJi7C,SAAU,yDAAyDj7C,MAC/D,KAEJk7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVZ,cAAe,qDACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAGM,eAAb1C,GACa,UAAbA,GACa,iBAAbA,EAEO0C,EACa,iBAAb1C,GAA4C,QAAbA,EAC/B0C,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,IAAImI,EAAY,IAAP5F,EAAaC,EACtB,OAAI2F,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,OAGf3H,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNpiD,EAAG,eACHqiD,GAAI,YACJzqD,EAAG,YACH0qD,GAAI,WACJC,EAAG,YACHC,GAAI,WACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,UACHC,GAAI,SACJxD,EAAG,UACHyD,GAAI,UAGRC,uBAAwB,6BACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOxB,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBe,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCisD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCqrD,KAAM,CAEFC,IAAK,EACLC,IAAK,KA5GyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAYzB,SAASgf,EAAuBlB,EAAQQ,EAAe96D,GASnD,MAAY,MAARA,EACO86D,EAAgB,UAAY,UACpB,MAAR96D,EACA86D,EAAgB,SAAW,SAE3BR,EAAS,KAtBFmB,GAsB6BnB,EArB3CoB,EAQS,CACT9B,GAAIkB,EAAgB,yBAA2B,yBAC/CjB,GAAIiB,EAAgB,yBAA2B,yBAC/Cf,GAAIe,EAAgB,sBAAwB,sBAC5Cd,GAAI,gBACJE,GAAI,wBACJC,GAAI,kBAOgCn6D,GArBvBid,MAAM,KAChBw+C,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAsDR,SAASoF,EAAqB31D,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBhR,KAAKq+D,QAAiB,IAAM,IAAM,QAIrDhc,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,CACJj2C,OAAQ,yFAAyF9E,MAC7F,KAEJ0+C,WAAY,iGAAiG1+C,MACzG,MAGRg7C,YAAa,yDAAyDh7C,MAClE,KAEJi7C,SAhDJ,SAA6B/oD,EAAG4S,GAC5B,IAAIm2C,EAAW,CACP6I,WAAY,0DAA0D9jD,MAClE,KAEJ+jD,WAAY,0DAA0D/jD,MAClE,KAEJgkD,SAAU,4DAA4DhkD,MAClE,MAKZ,OAAU,IAAN9N,EACO+oD,EAAqB,WACvBj8D,MAAM,EAAG,GACTM,OAAO27D,EAAqB,WAAEj8D,MAAM,EAAG,IAE3CkT,EASE+oD,EALI,qBAAqB56C,KAAKyE,GAC/B,aACA,sCAAsCzE,KAAKyE,GAC3C,WACA,cACoB5S,EAAE0sD,OARjB3D,EAAqB,YA6BhCC,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS2H,EAAqB,cAC9B1H,QAAS0H,EAAqB,YAC9BxH,QAASwH,EAAqB,WAC9BzH,SAAUyH,EAAqB,cAC/BvH,SAAU,WACN,OAAQp/D,KAAK0hE,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOiF,EAAqB,oBAAoB5kE,KAAK/B,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO2mE,EAAqB,qBAAqB5kE,KAAK/B,QAGlEq/D,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNpiD,EAAG,kBACHqiD,GAAI4B,EACJrsD,EAAGqsD,EACH3B,GAAI2B,EACJ1B,EAAG,SACHC,GAAIyB,EACJloC,EAAG,OACH0mC,GAAIwB,EACJvB,EAAG,SACHC,GAAIsB,EACJ9E,EAAG,MACHyD,GAAIqB,GAGRnD,cAAe,wBACfC,KAAM,SAAUvrD,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjCwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGfb,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOxB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhKyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIzB,IAAIwb,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJqI,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpD7jB,EAAOub,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUmI,EACVlI,cAAekI,EACfjI,YAAaiI,EACb1H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAUvrD,GACZ,MAAO,QAAUA,GAErBwrD,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,OAAIuC,EAAO,GACA,MAEJ,OAEX/B,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNpiD,EAAG,YACHqiD,GAAI,WACJzqD,EAAG,UACH0qD,GAAI,SACJC,EAAG,YACHC,GAAI,WACJzmC,EAAG,SACH0mC,GAAI,QACJC,EAAG,UACHC,GAAI,SACJxD,EAAG,UACHyD,GAAI,UAERkB,SAAU,SAAU37D,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCisD,WAAY,SAAUz7D,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCqrD,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyBpgE,CAAQ,EAAQ,gGCElD,SAAWmiD,GAAU,aAIZA,EAAOub,aAAa,UAAW,CACxCC,OAAQ,6EAA6E/6C,MACjF,KAEJg7C,YAAa,oDAAoDh7C,MAAM,KACvEi7C,SAAU,+DAA+Dj7C,MACrE,KAEJk7C,cAAe,kCAAkCl7C,MAAM,KACvDm7C,YAAa,yBAAyBn7C,MAAM,KAC5C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACNpiD,EAAG,SACHqiD,GAAI,YACJzqD,EAAG,aACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJxD,EAAG,UACHyD,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,yEAAyE/6C,MAC7E,KAEJg7C,YAAa,kDAAkDh7C,MAAM,KACrEi7C,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,8BAA8Bl7C,MAAM,KACnDm7C,YAAa,uBAAuBn7C,MAAM,KAC1C07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACNpiD,EAAG,SACHqiD,GAAI,YACJzqD,EAAG,aACH0qD,GAAI,YACJC,EAAG,WACHC,GAAI,UACJzmC,EAAG,UACH0mC,GAAI,SACJC,EAAG,SACHC,GAAI,QACJxD,EAAG,UACHyD,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyBpgE,CAAQ,EAAQ,2FCIlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,qGAAqG/6C,MACzG,KAEJg7C,YAAa,sFAAsFh7C,MAC/F,KAEJo/C,kBAAkB,EAClBnE,SAAU,yDAAyDj7C,MAC/D,KAEJk7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,uBAAuBn7C,MAAM,KAC1C+9C,oBAAoB,EACpB3C,cAAe,SACfC,KAAM,SAAUvrD,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExBwrD,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACNrsC,EAAG,YACH0wC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVtE,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNpiD,EAAG,WACHqiD,GAAI,UACJzqD,EAAG,WACH0qD,GAAI,UACJC,EAAG,UACHC,GAAI,SACJzmC,EAAG,WACH0mC,GAAI,UACJ+B,EAAG,WACHC,GAAI,UACJ/B,EAAG,YACHC,GAAI,WACJxD,EAAG,UACHyD,GAAI,UAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KA5EyBpgE,CAAQ,EAAQ,iGCElD,SAAWmiD,GAAU,aAIXA,EAAOub,aAAa,WAAY,CAC1CC,OAAQ,6GAA6G/6C,MACjH,KAEJg7C,YAAa,8DAA8Dh7C,MACvE,KAEJo/C,kBAAkB,EAClBnE,SAAU,yEAAyEj7C,MAC/E,KAEJk7C,cAAe,qCAAqCl7C,MAAM,KAC1Dm7C,YAAa,4BAA4Bn7C,MAAM,KAC/C+9C,oBAAoB,EACpBrC,eAAgB,CACZC,GAAI,QACJE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNpiD,EAAG,mBACHqiD,GAAI,eACJzqD,EAAG,aACH0qD,GAAI,eACJC,EAAG,YACHC,GAAI,YACJzmC,EAAG,SACH0mC,GAAI,WACJC,EAAG,YACHC,GAAI,cACJxD,EAAG,UACHyD,GAAI,aAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAIvhD,EAAIuhD,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAANvhD,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBwhD,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyBpgE,CAAQ,EAAQ,2FCGlD,SAAWmiD,GAAU,aAIhBA,EAAOub,aAAa,KAAM,CAC/BC,OAAQ,0FAA0F/6C,MAC9F,KAEJg7C,YAAa,gEAAgEh7C,MAAM,KACnFi7C,SAAU,uDAAuDj7C,MAAM,KACvEk7C,cAAe,sCAAsCl7C,MAAM,KAC3Dm7C,YAAa,2BAA2Bn7C,MAAM,KAC9C07C,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNpiD,EAAG,oBACHqiD,GAAI,WACJzqD,EAAG,cACH0qD,GAAI,aACJC,EAAG,cACHC,GAAI,aACJzmC,EAAG,WACH0mC,GAAI,UACJC,EAAG,WACHC,GAAI,UACJxD,EAAG,YACHyD,GAAI,YAERC,uBAAwB,gBACxBC,QAAS,UACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyBpgE,CAAQ,EAAQ,8FCKlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wCAAwC/6C,MAC5C,KAEJg7C,YAAa,yCAAyCh7C,MAClD,KAEJi7C,SAAU,8BAA8Bj7C,MAAM,KAC9Ck7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNrsC,EAAG,WACH0wC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVnF,cAAe,oBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,OAAb1C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC0C,EACa,OAAb1C,GAAkC,OAAbA,EACrB0C,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,IAAImI,EAAY,IAAP5F,EAAaC,EACtB,OAAI2F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGf3H,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAU3U,GAChB,OAAIA,EAAI6V,SAAWpgE,KAAKogE,OACb,WAEA,YAGfjB,QAAS,SACTC,SAAU,SAAU7U,GAChB,OAAIvqD,KAAKogE,SAAW7V,EAAI6V,OACb,WAEA,YAGff,SAAU,KAEdY,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOxB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBb,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNpiD,EAAG,KACHqiD,GAAI,OACJzqD,EAAG,OACH0qD,GAAI,QACJC,EAAG,OACHC,GAAI,QACJzmC,EAAG,MACH0mC,GAAI,OACJ+B,EAAG,MACHC,GAAI,OACJ/B,EAAG,OACHC,GAAI,QACJxD,EAAG,MACHyD,GAAI,QAERI,KAAM,CAEFC,IAAK,EACLC,IAAK,KApHyBpgE,CAAQ,EAAQ,8FCIlD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wCAAwC/6C,MAC5C,KAEJg7C,YAAa,yCAAyCh7C,MAClD,KAEJi7C,SAAU,8BAA8Bj7C,MAAM,KAC9Ck7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNrsC,EAAG,WACH0wC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVnF,cAAe,oBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,OAAb1C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC0C,EACa,OAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb1C,GAAkC,OAAbA,EACrB0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,IAAImI,EAAY,IAAP5F,EAAaC,EACtB,OAAI2F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,MAGf3H,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEdY,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOxB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBb,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNpiD,EAAG,KACHqiD,GAAI,OACJzqD,EAAG,OACH0qD,GAAI,QACJC,EAAG,OACHC,GAAI,QACJzmC,EAAG,MACH0mC,GAAI,OACJC,EAAG,OACHC,GAAI,QACJxD,EAAG,MACHyD,GAAI,UAhG0B9/D,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wCAAwC/6C,MAC5C,KAEJg7C,YAAa,yCAAyCh7C,MAClD,KAEJi7C,SAAU,8BAA8Bj7C,MAAM,KAC9Ck7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNrsC,EAAG,WACH0wC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVnF,cAAe,oBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,OAAb1C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC0C,EACa,OAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb1C,GAAkC,OAAbA,EACrB0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,IAAImI,EAAY,IAAP5F,EAAaC,EACtB,OAAI2F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGf3H,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdY,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOxB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBb,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNpiD,EAAG,KACHqiD,GAAI,OACJzqD,EAAG,OACH0qD,GAAI,QACJC,EAAG,OACHC,GAAI,QACJzmC,EAAG,MACH0mC,GAAI,OACJC,EAAG,OACHC,GAAI,QACJxD,EAAG,MACHyD,GAAI,UAhG0B9/D,CAAQ,EAAQ,8FCElD,SAAWmiD,GAAU,aAIdA,EAAOub,aAAa,QAAS,CACpCC,OAAQ,wCAAwC/6C,MAC5C,KAEJg7C,YAAa,yCAAyCh7C,MAClD,KAEJi7C,SAAU,8BAA8Bj7C,MAAM,KAC9Ck7C,cAAe,uBAAuBl7C,MAAM,KAC5Cm7C,YAAa,gBAAgBn7C,MAAM,KACnC07C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNrsC,EAAG,WACH0wC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVnF,cAAe,oBACf8D,aAAc,SAAUlB,EAAM1C,GAI1B,OAHa,KAAT0C,IACAA,EAAO,GAEM,OAAb1C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC0C,EACa,OAAb1C,EACA0C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb1C,GAAkC,OAAbA,EACrB0C,EAAO,QADX,GAIX1C,SAAU,SAAU0C,EAAMC,EAAQxC,GAC9B,IAAImI,EAAY,IAAP5F,EAAaC,EACtB,OAAI2F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGf3H,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdY,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQwB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOxB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBb,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNpiD,EAAG,KACHqiD,GAAI,OACJzqD,EAAG,OACH0qD,GAAI,QACJC,EAAG,OACHC,GAAI,QACJzmC,EAAG,MACH0mC,GAAI,OACJC,EAAG,OACHC,GAAI,QACJxD,EAAG,MACHyD,GAAI,UAhG0B9/D,CAAQ,EAAQ,wGCP1D,IAAIyO,EAAM,CACT,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,WAAY,yCACZ,cAAe,yCACf,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,QAAS,sCACT,aAAc,2CACd,gBAAiB,2CACjB,WAAY,sCACZ,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,yCAIf,SAASo4D,EAAeC,GACvB,IAAI37D,EAAK47D,EAAsBD,GAC/B,OAAOE,EAAoB77D,GAE5B,SAAS47D,EAAsBD,GAC9B,IAAIE,EAAoBtiD,EAAEjW,EAAKq4D,GAAM,CACpC,IAAI1kD,EAAI,IAAI7P,MAAM,uBAAyBu0D,EAAM,KAEjD,MADA1kD,EAAEklC,KAAO,mBACHllC,EAEP,OAAO3T,EAAIq4D,GAEZD,EAAevzD,KAAO,WACrB,OAAOD,OAAOC,KAAK7E,IAEpBo4D,EAAep6D,QAAUs6D,EACzBnnE,EAAO6xD,QAAUoV,EACjBA,EAAe17D,GAAK,8GClSnB,IAASoS,EAAAA,EAAqiI8I,OAAOF,SAAziIxmB,QAAQC,OAAO,eAAe,IAAI0E,MAAM,eAAe,CAACo5C,OAAM,IAAKryC,OAAO,CAAC,mBAAmB,SAASkS,GAAG5d,QAAQ+M,UAAU6Q,EAAE0pD,0BAA0B1pD,EAAE0pD,yBAAyB,sCAAsC1pD,EAAE2pD,2BAA2B,yCAAyCvnE,QAAQC,OAAO,mBAAmB,CAAC,mBAAmBD,QAAQC,OAAO,iBAAiB,IAAID,QAAQC,OAAO,QAAQ,CAAC,eAAe,iBAAiB,mBAAmB,eAAwEA,EAAO6xD,UAAUA,IAAU7xD,EAAO6xD,QAAQ,SAAS9xD,QAAQC,OAAO,kBAAkB2X,QAAQ,MAAM,CAAC,KAAK,SAASgG,GAAG,IAAImB,EAAE,OAAaua,EAAE,CAAC,MAAM,KAAI,MAAM,KAAK,MAAM,KAAI,MAAM,KAAK,MAAM,MAAMn5B,KAAKqnE,eAAe,SAAS5pD,EAAEmB,GAAG,MAAM,WAAWA,EAAE0oD,YAAYtnE,KAAKunE,QAAQ9pD,GAAGA,EAAE+pD,iBAAiB,MAAM5oD,EAAE0oD,YAAYtnE,KAAKunE,QAAQ9pD,GAAGA,EAAE3I,WAAWC,QAAQ,IAAI6J,EAAE0oD,YAAY,iBAAiB7pD,GAAGA,EAAEA,EAAE1I,QAAQ,KAAK,OAAO6J,EAAE6oD,cAAchqD,EAAEvP,QAAQ,MAAM,GAAGuP,EAAEvP,QAAQ,OAAO,GAAGuP,EAAEvP,QAAQ,OAAO,KAAKuP,EAAEmB,EAAE8oD,SAASjqD,EAAEmB,EAAE8oD,UAAUjqD,GAAG,kBAAkBA,EAAEA,EAAE,OAAO,QAAQA,GAAGzd,KAAKunE,QAAQ,SAAS9pD,GAAG,OAAOA,IAAIA,KAAKkqD,SAASlqD,IAAIwU,QAAQxU,EAAE,KAAKzd,KAAKke,UAAU,SAASib,EAAE7W,GAAG,IAAI6zC,EAAE14C,EAAExR,QAAQ4R,EAAE7d,KAAK2/D,EAAE,GAAGtiD,EAAE,GAAGK,EAAED,EAAExN,KAAKkpB,GAAGpuB,MAAK,SAAS0S,GAA6C,IAAI0b,EAAEzb,EAA7C7d,QAAQ+M,UAAU0V,EAAEslD,SAAStlD,EAAEslD,SAAgBzuC,EAAE,GAAGt5B,QAAQkB,QAAQuhB,EAAEslD,QAAO,SAASnqD,GAAGzd,KAAKS,KAAKod,EAAEwpD,eAAe5pD,EAAE6E,MAAK6W,GAAGzb,EAAEyb,EAAElmB,KAAKqP,EAAEulD,SAASvlD,EAAEulD,SAAS,KAAKxqD,GAAGK,EAAEkB,GAAE,IAAsI6T,EAAEzd,EAApIwI,EAAE,GAAM3d,QAAQmS,QAAQyL,GAAGD,EAAEC,EAAE5d,QAAQuN,WAAWqQ,KAAKD,EAAEC,KAAK5d,QAAQ+M,UAAU0V,EAAEwlD,QAAQxlD,EAAEwlD,OAAO,kBAAkBxlD,EAAEwlD,QAAer1C,EAAE,GAAG5yB,QAAQkB,QAAQyc,EAAE,IAAG,SAASC,EAAEmB,GAAG5e,KAAKS,KAAKod,EAAEwpD,eAAezoD,EAAE0D,MAAKmQ,GAAGzd,EAAEyd,EAAExf,KAAKqP,EAAEulD,SAASvlD,EAAEulD,SAAS,KAAKxqD,GAAGrI,EAAE4J,GAAE/e,QAAQkB,QAAQyc,GAAE,SAASC,EAAEsqD,GAAG,IAAI5uC,EAAEg9B,EAAEwJ,EAAE9/D,QAAQoiB,KAAKzE,EAAEuqD,IAAI5R,EAAE,GAAG,IAAIz4C,EAAE4E,EAAE0lD,YAAY1lD,EAAE0lD,YAAYrI,EAAE9/D,QAAQkB,QAAQ2c,GAAE,SAASD,GAAG,IAAImB,EAAE0D,EAAE0lD,YAAYrI,EAAEliD,GAAGA,EAAEzd,KAAKS,KAAKod,EAAEwpD,eAAezoD,EAAE0D,MAAK6zC,GAAGh9B,EAAEg9B,EAAEljD,KAAKqP,EAAEulD,SAASvlD,EAAEulD,SAAS,KAAKxqD,GAAG0qD,EAAEvqD,EAAEpO,OAAO+pB,EAAEva,EAAEua,KAAI7W,EAAE2lD,qBAAqBtI,GAA9wC,UAAoxCA,GAAGtiD,EAAE84C,EAAExpD,QAAQgzD,MAAK,MAAM,mBAAmBjiD,EAAS,OAAGA,EAAS,OAAE,SAASD,GAAG04C,EAAE9hB,OAAO52B,MAAK04C,EAAE1yD,SAASzD,KAAKkoE,cAAc,SAASzqD,GAAG,YAAO,IAAS0b,EAAE1b,IAAIzd,KAAKmoE,eAAe,SAAS1qD,GAAG,OAAO0b,EAAE1b,OAAO5d,QAAQC,OAAO,oBAAoB+C,UAAU,QAAQ,CAAC,SAAS,KAAK,MAAM,YAAY,WAAW,SAAS+b,EAAEmpD,EAAE5uC,EAAE7W,EAAE6zC,GAAG,MAAM,CAAChvD,SAAS,KAAKrE,MAAM,CAAC6E,KAAK,SAASygE,SAAS,YAAYR,OAAO,aAAaI,YAAY,kBAAkBN,SAAS,iBAAiBJ,WAAW,oBAAoBG,aAAa,gBAAgBI,SAAS,kBAAkBz7C,SAAS,YAAY67C,mBAAmB,UAAUxtB,QAAQ,IAAI4tB,QAAQ,WAAWP,MAAM,aAAa9mE,WAAW,CAAC,SAAS,WAAW,SAAS,cAAc,SAASyc,EAAEmB,EAAE0D,GAAwe7E,EAAE6qD,IAAI,GAAGzoE,QAAQ+M,UAAU6Q,EAAE2O,WAAW,QAAQ3O,EAAE2O,UAAUvsB,QAAQmS,QAAQyL,EAAE9V,OAAO8V,EAAElZ,OAAO,QAAO,WAAWkZ,EAAE8qD,cAAY,GAAI9qD,EAAE+qD,YAAY,WAAW,OAAO/qD,EAAE2qD,UAAU,gBAAgB3qD,EAAE8qD,SAAS,WAAW,IAAI1qD,EAAEkqD,EAAE97D,QAAQ,OAAO2S,EAAE6pD,SAASnmD,EAAEomD,mBAAmB,kBAAkBvvC,EAAEjb,UAAUT,EAAE9V,OAAhxB,WAAa,IAAIiX,EAAE,CAAC8oD,SAASjqD,EAAEiqD,SAASjqD,EAAEiqD,SAAS,IAAIJ,WAAW7pD,EAAE6pD,WAAW7pD,EAAE6pD,WAAW,IAAIG,aAAahqD,EAAEgqD,aAAaQ,mBAAmBxqD,EAAEwqD,oBAAoB,OAAOpoE,QAAQ+M,UAAU0V,EAAEqmD,aAAa/pD,EAAEgpD,OAAOnqD,EAAEpc,MAAMoc,EAAEmqD,SAAS/nE,QAAQ+M,UAAU0V,EAAEsmD,kBAAkBhqD,EAAEopD,YAAYvqD,EAAEpc,MAAMoc,EAAEuqD,cAAcnoE,QAAQ+M,UAAU0V,EAAEumD,YAAYjqD,EAAEkpD,MAAMrqD,EAAEpc,MAAMoc,EAAEqqD,QAAQlpD,EAAEipD,SAASpqD,EAAEoqD,SAASpqD,EAAEoqD,SAAS,IAAIjpD,EAAEipD,SAAS1uC,EAAE+uC,cAActpD,EAAEipD,UAAU1uC,EAAEgvC,eAAevpD,EAAEipD,UAAUjpD,EAAEipD,SAASjpD,EAAoTu3C,IAAKprD,MAAK,SAASg9D,GAAGtqD,EAAE6qD,IAAIP,EAAEnpD,EAAEkqD,YAAYxmD,EAAEomD,mBAAmB,kBAAkB7qD,EAAElR,QAAQo7D,MAAKtqD,EAAExZ,SAAS4Z,EAAEpa,WAAW8E,KAAK,SAASqW,EAAEmpD,GAA8bA,EAAEzkE,KAAK,SAAQ,WAAWsb,EAAE2pD,WAAWx9D,MAAK,YAAve,WAAa,IAAIg9D,EAAEnpD,EAAEypD,SAAS,QAAQlvC,EAAE,IAAIwjC,KAAK,CAAC/9C,EAAE0pD,KAAK,CAACp5D,KAAK,oBAAoB64D,EAAE,MAAM,GAAGtqD,EAAEo+B,UAAUktB,iBAAiBltB,UAAUmtB,WAAW7vC,EAAEva,EAAE4pD,mBAAmB,CAAC,IAAI3qD,EAAEhe,QAAQkD,QAAQ,+CAA+C48D,EAAE9/D,QAAQkD,QAAQ8a,EAAEjV,WAAW,IAAI+2D,EAAE7sD,KAAK,OAAO2K,EAAE2uC,IAAIC,gBAAgBlzB,IAAIwmC,EAAE7sD,KAAK,WAAW8L,EAAE4pD,eAAe7I,EAAE7sD,KAAK,SAAS,UAAUwP,EAAExB,KAAK,QAAQuZ,OAAOxc,GAAGs4C,GAAE,WAAWwJ,EAAE,GAAG/P,QAAQ+P,EAAE9yD,WAAU,OAA8DssB,MAAMva,EAAE3a","sources":["webpack://motion-chat/./node_modules/@flowjs/ng-flow/dist/ng-flow.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/templateFactory.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/locationServices.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/services.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/common.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/coreservices.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/glob.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/hof.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/predicates.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/queue.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/safeConsole.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/strings.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/trace.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/globals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/param.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramTypes.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/stateParams.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathNode.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathUtils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/router.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateObject.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/targetState.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/coreResolvables.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/redirectTo.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/resolve.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/views.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/updateGlobals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/url.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/ignoredTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/invalidTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRouter.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRule.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRules.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/q.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/utils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/view/view.js","webpack://motion-chat/./node_modules/angular-aria/angular-aria.js","webpack://motion-chat/./node_modules/angular-rateit/dist/ng-rateit.js","webpack://motion-chat/./src/js/index.controller.js","webpack://motion-chat/./src/js/index.route.js","webpack://motion-chat/./src/js/closing/closing.controller.js","webpack://motion-chat/./src/js/index.factory.js","webpack://motion-chat/./src/js/chat/chat.controller.js","webpack://motion-chat/./src/js/common/remote-storage.service.js","webpack://motion-chat/./src/js/audio-player/audio-player.controller.js","webpack://motion-chat/./src/js/common/typeFromMimeType.filter.js","webpack://motion-chat/./src/js/document-wrapper/document-wrapper.controller.js","webpack://motion-chat/./src/js/index.module.js","webpack://motion-chat/./node_modules/core-js/internals/a-function.js","webpack://motion-chat/./node_modules/core-js/internals/a-possible-prototype.js","webpack://motion-chat/./node_modules/core-js/internals/an-object.js","webpack://motion-chat/./node_modules/core-js/internals/array-buffer-native.js","webpack://motion-chat/./node_modules/core-js/internals/array-buffer-view-core.js","webpack://motion-chat/./node_modules/core-js/internals/array-sort.js","webpack://motion-chat/./node_modules/core-js/internals/classof-raw.js","webpack://motion-chat/./node_modules/core-js/internals/classof.js","webpack://motion-chat/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://motion-chat/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://motion-chat/./node_modules/core-js/internals/create-property-descriptor.js","webpack://motion-chat/./node_modules/core-js/internals/descriptors.js","webpack://motion-chat/./node_modules/core-js/internals/document-create-element.js","webpack://motion-chat/./node_modules/core-js/internals/engine-ff-version.js","webpack://motion-chat/./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://motion-chat/./node_modules/core-js/internals/engine-user-agent.js","webpack://motion-chat/./node_modules/core-js/internals/engine-v8-version.js","webpack://motion-chat/./node_modules/core-js/internals/engine-webkit-version.js","webpack://motion-chat/./node_modules/core-js/internals/fails.js","webpack://motion-chat/./node_modules/core-js/internals/get-built-in.js","webpack://motion-chat/./node_modules/core-js/internals/global.js","webpack://motion-chat/./node_modules/core-js/internals/has.js","webpack://motion-chat/./node_modules/core-js/internals/hidden-keys.js","webpack://motion-chat/./node_modules/core-js/internals/ie8-dom-define.js","webpack://motion-chat/./node_modules/core-js/internals/inspect-source.js","webpack://motion-chat/./node_modules/core-js/internals/internal-state.js","webpack://motion-chat/./node_modules/core-js/internals/is-object.js","webpack://motion-chat/./node_modules/core-js/internals/is-pure.js","webpack://motion-chat/./node_modules/core-js/internals/is-symbol.js","webpack://motion-chat/./node_modules/core-js/internals/native-symbol.js","webpack://motion-chat/./node_modules/core-js/internals/native-weak-map.js","webpack://motion-chat/./node_modules/core-js/internals/object-define-property.js","webpack://motion-chat/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://motion-chat/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://motion-chat/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://motion-chat/./node_modules/core-js/internals/redefine.js","webpack://motion-chat/./node_modules/core-js/internals/require-object-coercible.js","webpack://motion-chat/./node_modules/core-js/internals/set-global.js","webpack://motion-chat/./node_modules/core-js/internals/shared-key.js","webpack://motion-chat/./node_modules/core-js/internals/shared-store.js","webpack://motion-chat/./node_modules/core-js/internals/shared.js","webpack://motion-chat/./node_modules/core-js/internals/to-integer.js","webpack://motion-chat/./node_modules/core-js/internals/to-length.js","webpack://motion-chat/./node_modules/core-js/internals/to-object.js","webpack://motion-chat/./node_modules/core-js/internals/to-primitive.js","webpack://motion-chat/./node_modules/core-js/internals/to-property-key.js","webpack://motion-chat/./node_modules/core-js/internals/to-string-tag-support.js","webpack://motion-chat/./node_modules/core-js/internals/uid.js","webpack://motion-chat/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://motion-chat/./node_modules/core-js/internals/well-known-symbol.js","webpack://motion-chat/./node_modules/core-js/modules/es.typed-array.at.js","webpack://motion-chat/./node_modules/core-js/modules/es.typed-array.sort.js","webpack://motion-chat/./node_modules/core-js/modules/esnext.typed-array.at.js","webpack://motion-chat/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://motion-chat/./node_modules/json-form-data/src/jsonToFormData.js","webpack://motion-chat/./node_modules/moment/locale/af.js","webpack://motion-chat/./node_modules/moment/locale/ar-dz.js","webpack://motion-chat/./node_modules/moment/locale/ar-kw.js","webpack://motion-chat/./node_modules/moment/locale/ar-ly.js","webpack://motion-chat/./node_modules/moment/locale/ar-ma.js","webpack://motion-chat/./node_modules/moment/locale/ar-sa.js","webpack://motion-chat/./node_modules/moment/locale/ar-tn.js","webpack://motion-chat/./node_modules/moment/locale/ar.js","webpack://motion-chat/./node_modules/moment/locale/az.js","webpack://motion-chat/./node_modules/moment/locale/be.js","webpack://motion-chat/./node_modules/moment/locale/bg.js","webpack://motion-chat/./node_modules/moment/locale/bm.js","webpack://motion-chat/./node_modules/moment/locale/bn-bd.js","webpack://motion-chat/./node_modules/moment/locale/bn.js","webpack://motion-chat/./node_modules/moment/locale/bo.js","webpack://motion-chat/./node_modules/moment/locale/br.js","webpack://motion-chat/./node_modules/moment/locale/bs.js","webpack://motion-chat/./node_modules/moment/locale/ca.js","webpack://motion-chat/./node_modules/moment/locale/cs.js","webpack://motion-chat/./node_modules/moment/locale/cv.js","webpack://motion-chat/./node_modules/moment/locale/cy.js","webpack://motion-chat/./node_modules/moment/locale/da.js","webpack://motion-chat/./node_modules/moment/locale/de-at.js","webpack://motion-chat/./node_modules/moment/locale/de-ch.js","webpack://motion-chat/./node_modules/moment/locale/de.js","webpack://motion-chat/./node_modules/moment/locale/dv.js","webpack://motion-chat/./node_modules/moment/locale/el.js","webpack://motion-chat/./node_modules/moment/locale/en-au.js","webpack://motion-chat/./node_modules/moment/locale/en-ca.js","webpack://motion-chat/./node_modules/moment/locale/en-gb.js","webpack://motion-chat/./node_modules/moment/locale/en-ie.js","webpack://motion-chat/./node_modules/moment/locale/en-il.js","webpack://motion-chat/./node_modules/moment/locale/en-in.js","webpack://motion-chat/./node_modules/moment/locale/en-nz.js","webpack://motion-chat/./node_modules/moment/locale/en-sg.js","webpack://motion-chat/./node_modules/moment/locale/eo.js","webpack://motion-chat/./node_modules/moment/locale/es-do.js","webpack://motion-chat/./node_modules/moment/locale/es-mx.js","webpack://motion-chat/./node_modules/moment/locale/es-us.js","webpack://motion-chat/./node_modules/moment/locale/es.js","webpack://motion-chat/./node_modules/moment/locale/et.js","webpack://motion-chat/./node_modules/moment/locale/eu.js","webpack://motion-chat/./node_modules/moment/locale/fa.js","webpack://motion-chat/./node_modules/moment/locale/fi.js","webpack://motion-chat/./node_modules/moment/locale/fil.js","webpack://motion-chat/./node_modules/moment/locale/fo.js","webpack://motion-chat/./node_modules/moment/locale/fr-ca.js","webpack://motion-chat/./node_modules/moment/locale/fr-ch.js","webpack://motion-chat/./node_modules/moment/locale/fr.js","webpack://motion-chat/./node_modules/moment/locale/fy.js","webpack://motion-chat/./node_modules/moment/locale/ga.js","webpack://motion-chat/./node_modules/moment/locale/gd.js","webpack://motion-chat/./node_modules/moment/locale/gl.js","webpack://motion-chat/./node_modules/moment/locale/gom-deva.js","webpack://motion-chat/./node_modules/moment/locale/gom-latn.js","webpack://motion-chat/./node_modules/moment/locale/gu.js","webpack://motion-chat/./node_modules/moment/locale/he.js","webpack://motion-chat/./node_modules/moment/locale/hi.js","webpack://motion-chat/./node_modules/moment/locale/hr.js","webpack://motion-chat/./node_modules/moment/locale/hu.js","webpack://motion-chat/./node_modules/moment/locale/hy-am.js","webpack://motion-chat/./node_modules/moment/locale/id.js","webpack://motion-chat/./node_modules/moment/locale/is.js","webpack://motion-chat/./node_modules/moment/locale/it-ch.js","webpack://motion-chat/./node_modules/moment/locale/it.js","webpack://motion-chat/./node_modules/moment/locale/ja.js","webpack://motion-chat/./node_modules/moment/locale/jv.js","webpack://motion-chat/./node_modules/moment/locale/ka.js","webpack://motion-chat/./node_modules/moment/locale/kk.js","webpack://motion-chat/./node_modules/moment/locale/km.js","webpack://motion-chat/./node_modules/moment/locale/kn.js","webpack://motion-chat/./node_modules/moment/locale/ko.js","webpack://motion-chat/./node_modules/moment/locale/ku.js","webpack://motion-chat/./node_modules/moment/locale/ky.js","webpack://motion-chat/./node_modules/moment/locale/lb.js","webpack://motion-chat/./node_modules/moment/locale/lo.js","webpack://motion-chat/./node_modules/moment/locale/lt.js","webpack://motion-chat/./node_modules/moment/locale/lv.js","webpack://motion-chat/./node_modules/moment/locale/me.js","webpack://motion-chat/./node_modules/moment/locale/mi.js","webpack://motion-chat/./node_modules/moment/locale/mk.js","webpack://motion-chat/./node_modules/moment/locale/ml.js","webpack://motion-chat/./node_modules/moment/locale/mn.js","webpack://motion-chat/./node_modules/moment/locale/mr.js","webpack://motion-chat/./node_modules/moment/locale/ms-my.js","webpack://motion-chat/./node_modules/moment/locale/ms.js","webpack://motion-chat/./node_modules/moment/locale/mt.js","webpack://motion-chat/./node_modules/moment/locale/my.js","webpack://motion-chat/./node_modules/moment/locale/nb.js","webpack://motion-chat/./node_modules/moment/locale/ne.js","webpack://motion-chat/./node_modules/moment/locale/nl-be.js","webpack://motion-chat/./node_modules/moment/locale/nl.js","webpack://motion-chat/./node_modules/moment/locale/nn.js","webpack://motion-chat/./node_modules/moment/locale/oc-lnc.js","webpack://motion-chat/./node_modules/moment/locale/pa-in.js","webpack://motion-chat/./node_modules/moment/locale/pl.js","webpack://motion-chat/./node_modules/moment/locale/pt-br.js","webpack://motion-chat/./node_modules/moment/locale/pt.js","webpack://motion-chat/./node_modules/moment/locale/ro.js","webpack://motion-chat/./node_modules/moment/locale/ru.js","webpack://motion-chat/./node_modules/moment/locale/sd.js","webpack://motion-chat/./node_modules/moment/locale/se.js","webpack://motion-chat/./node_modules/moment/locale/si.js","webpack://motion-chat/./node_modules/moment/locale/sk.js","webpack://motion-chat/./node_modules/moment/locale/sl.js","webpack://motion-chat/./node_modules/moment/locale/sq.js","webpack://motion-chat/./node_modules/moment/locale/sr-cyrl.js","webpack://motion-chat/./node_modules/moment/locale/sr.js","webpack://motion-chat/./node_modules/moment/locale/ss.js","webpack://motion-chat/./node_modules/moment/locale/sv.js","webpack://motion-chat/./node_modules/moment/locale/sw.js","webpack://motion-chat/./node_modules/moment/locale/ta.js","webpack://motion-chat/./node_modules/moment/locale/te.js","webpack://motion-chat/./node_modules/moment/locale/tet.js","webpack://motion-chat/./node_modules/moment/locale/tg.js","webpack://motion-chat/./node_modules/moment/locale/th.js","webpack://motion-chat/./node_modules/moment/locale/tk.js","webpack://motion-chat/./node_modules/moment/locale/tl-ph.js","webpack://motion-chat/./node_modules/moment/locale/tlh.js","webpack://motion-chat/./node_modules/moment/locale/tr.js","webpack://motion-chat/./node_modules/moment/locale/tzl.js","webpack://motion-chat/./node_modules/moment/locale/tzm-latn.js","webpack://motion-chat/./node_modules/moment/locale/tzm.js","webpack://motion-chat/./node_modules/moment/locale/ug-cn.js","webpack://motion-chat/./node_modules/moment/locale/uk.js","webpack://motion-chat/./node_modules/moment/locale/ur.js","webpack://motion-chat/./node_modules/moment/locale/uz-latn.js","webpack://motion-chat/./node_modules/moment/locale/uz.js","webpack://motion-chat/./node_modules/moment/locale/vi.js","webpack://motion-chat/./node_modules/moment/locale/x-pseudo.js","webpack://motion-chat/./node_modules/moment/locale/yo.js","webpack://motion-chat/./node_modules/moment/locale/zh-cn.js","webpack://motion-chat/./node_modules/moment/locale/zh-hk.js","webpack://motion-chat/./node_modules/moment/locale/zh-mo.js","webpack://motion-chat/./node_modules/moment/locale/zh-tw.js","webpack://motion-chat//home/fabio/Work/Xenialab/MotionV3/motion-server/motion-chat/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://motion-chat/./node_modules/ng-csv/build/ng-csv.min.js"],"names":["angular","module","provider","this","defaults","factory","options","Flow","events","on","event","callback","push","$get","fn","opts","flow","extend","forEach","controller","$scope","$attrs","$parse","flowFactory","$eval","flowInit","flowObject","create","catchAllHandler","eventName","args","Array","prototype","slice","call","arguments","shift","$broadcast","apply","concat","$applyAsync","defaultPrevented","$on","off","$flow","hasOwnProperty","flowName","assign","directive","scope","element","attrs","isDirectory","isSingleFile","inputAttrs","flowAttrs","assignBrowse","bind","preventDefault","$timeout","promise","enter","dragEvent","fileDrag","dataTransfer","originalEvent","types","val","$apply","flowDragEnter","cancel","flowDragLeave","assignDrop","flowDropEnabled","$watch","value","unAssignDrop","fileSuccess","fileProgress","fileAdded","filesAdded","filesSubmitted","fileRetry","fileRemoved","fileError","uploadStart","complete","progress","error","eventArgs","string","name","charAt","toUpperCase","require","funcArgs","key","file","flowImg","fileReader","FileReader","readAsDataURL","onload","$set","target","result","transfers","files","uiView","$ViewDirectiveFill","$compile","$controller","$transitions","$view","$q","getControllerAs","parse","getResolveAs","restrict","priority","compile","tElement","initial","html","empty","$element","data","contents","cfg","$cfg","viewDecl","getTemplate","noop","resolveCtx","path","ResolveContext","trace","$uiView","link","controllerAs","resolveAs","locals","controllerInstance","children","registerControllerCallbacks","isString","component","kebobName","kebobString","tagRegexp_1","RegExp","deregisterWatch_1","directiveEl","filter","el","tagName","exec","ctrlInstance","$animate","$uiViewScroll","$interpolate","rootData","$context","_pluginapi","_rootViewContext","count","terminal","transclude","tAttrs","$transclude","previousEl","currentEl","currentScope","viewConfig","onloadExp","autoScrollExp","renderer","cb","then","leave","inherited","inheritedData","activeUIView","$type","id","fqn","config","configUpdated","updateView","fromParentTagConfig","fromParentTag","unregister","registerUIView","newScope","$new","animEnter","defer","animLeave","$uiViewData","$uiViewAnim","$animEnter","$animLeave","$$animLeave","$emit","cloned","clone","resolve","isDefined","remove","$destroy","_viewData_1","cleanupLastView","$inject","hasComponentImpl","_uiCanExitId","isFunction","$onInit","componentProvider","viewState","tail","state","self","hookOptions","uiOnParamsChanged","viewCreationTrans_1","getResolvable","onSuccess","$transition$","exiting","indexOf","toParams","params","fromParams","getNodeSchema","node","paramSchema","toSchema","treeChanges","map","reduce","unnestR","fromSchema","changedToParams","param","idx","type","equals","length","changedKeys_1","x","newValues","uiCanExit","id_1","cacheProp_1","prevTruthyAnswer_1","trans","redirectedFrom","criteria","onBefore","ids","when","TemplateFactory","_this","_useHttp","$http","$templateCache","$injector","$templateRequest","has","get","useHttpService","fromConfig","context","asTemplate","services","str","template","asComponent","fromString","templateUrl","fromUrl","templateProvider","fromProvider","fromComponentProvider","url","cache","headers","Accept","response","deps","providerFn","isArray","Resolvable","makeComponentTemplate","bindings","prefix","kebob","camelCase","kebobed","cmpDefs","Error","getBindings","getComponentBindings","input","attrName","attr","resolveName","res","join","def","isObject","bindToController","scopeBindings","bindingsObj","Object","keys","tuple","getStateHookBuilder","hookName","stateObject","hook","pathname","subContext","$$state","getLocals","$state$","undefined","Ng1LocationServices","$locationProvider","_urlListeners","_lp","createProxyFunctions","monkeyPatchPathParameterType","router","pathType","urlMatcherFactory","encode","toString","replace","m","decode","dispose","onChange","removeFrom","html5Mode","enabled","$sniffer","history","baseHref","_baseHref","$browser","$window","location","newUrl","$location","_runtimeServices","$rootScope","evt","_loc","mod_init","mod_util","mod_rtr","mod_state","mod_main","$uiRouterProvider","UIRouter","stateProvider","stateRegistry","stateService","decorator","viewService","_viewConfigFactory","urlService","_decodeParams","ng1LocationService","locationService","locationConfig","getProviderFor","serviceName","$urp","service","runBlock","$uiRouter","invoke","checkStrictDi","strictDi","resolvables","resolvable","annotate","resolveFn","watchDigests","uiRouter","urlRouterProvider","globals","run","$urlMatcherFactory","$state","$urlRouter","ctx","getTokens","getPolicy","async","applyPairs","$IsStateFilter","isFilter","is","$stateful","$IncludedByStateFilter","includesFilter","includes","StateProvider","func","definition","register","onInvalid","getNg1ViewConfigFactory","templateFactory","view","Ng1ViewConfig","hasAnyKey","obj","acc","ng1ViewsBuilder","parent","compKeys","nonCompKeys","allViewKeys","views","viewsObject","$default","pick","$name","normalized","ViewService","$uiViewName","uiViewName","$uiViewContextAnchor","uiViewContextAnchor","$id","loaded","load","paramValues","promises","getController","all","results","controllerProvider","isInjectable","UrlRouterProvider","injectableHandler","handler","match","$match","$stateParams","urlRouter","update","interceptDeferred","listen","rule","ruleFn","BaseUrlRule","identity","rules","otherwise","urlRules","what","deferIntercept","useAnchorScroll","$anchorScroll","scrollIntoView","__spreadArrays","s","i","il","r","k","a","j","jl","root","g","global","fromJson","JSON","toJson","stringify","toObj","_equals","o1","o2","t1","a1","a2","tup","arrayTuples","b","t","getTime","source","fnNames","latebind","bindFunction","fnName","inherit","extra","inArray","array","splice","pushTo","arr","deregAll","functions","defaultsList","_i","defaultVals","reverse","mergeR","memo","item","ancestors","first","second","n","propNames","objCopy","_prop","omit","collection","accept","find","mapObj","values","allTrueR","elem","anyTrueR","flattenR","pushR","uniqR","token","unnest","assertPredicate","predicateOrMap","errMsg","maxArrayLen","min","Math","_loop_1","keyValTuple","copy","src","dest","silenceUncaughtInPromise","catch","e","silentRejection","makeStub","methods","fnname","Glob","text","glob","split","regexpString","seg","regexp","matches","test","curry","curried","compose","start","pipe","funcs","prop","propEq","_val","not","and","fn1","fn2","or","any","ctor","constructor","v","pattern","struct","toStr","tis","isUndefined","isNull","o","isNullOrUndefined","isNumber","isDate","isRegExp","head","isPromise","Queue","_items","_limit","_evictListeners","onEvict","enqueue","items","evict","dequeue","size","clear","current","peekTail","peekHead","noopConsoleStub","log","table","safeConsole","document","documentMode","window","console","bound","Function","ie9Console","fallbackConsole","maxLength","max","substr","padString","$1","toLowerCase","functionToString","fnStr","fnToString","namedFunctionMatch","_fn","isRejection","stringifyPattern","_transitionRejection","seen","format","beforeAfterSubstr","char","stripLastPathElement","splitHash","splitQuery","splitEqual","trimHashVal","splitOnDelim","delim","re","joinNeighborsR","Category","uiViewString","uiview","creationContext","normalizedCat","_tid","_rid","transLbl","Trace","_enabled","approximateDigests","_set","categories","parseInt","isNaN","category","enable","disable","traceTransitionStart","TRANSITION","traceTransitionIgnored","traceHookInvocation","step","HOOK","registeredHook","traceHookResult","hookResult","transitionOptions","traceResolvePath","RESOLVE","traceResolvableResolved","traceError","reason","traceSuccess","finalState","traceUIViewEvent","viewData","UIVIEW","traceUIViewConfigUpdated","traceUIViewFill","traceViewSync","pairs","VIEWCONFIG","uivheader","mapping","_a","_b","uiv","sort","localeCompare","traceViewServiceEvent","viewConfigString","traceViewServiceUIViewEvent","UIRouterGlobals","lastStartedTransitionId","transitionHistory","successfulTransitions","transition","lazyLoadHook","entering","lazyLoad","lazyLoadState","originalTransition","orig","targetState","identifier","$url","parts","sync","registerLazyLoadHook","transitionService","lazyLoadFn","states","_state","err","DefType","hasOwn","Param","urlConfig","paramName","noReloadOnSearch","reloadOnSearch","SEARCH","dynamic","defaultConfig","paramConfig","getStaticDefaultValue","isShorthand","$$fn","unwrapShorthand","getParamDeclaration","urlType","paramTypes","CONFIG","PATH","getType","arrayDefaults","arrayParamNomenclature","arrayMode","$asArray","isOptional","raw","squash","defaultPolicy","getSquashPolicy","defaultSquashPolicy","from","to","configuredKeys","getReplace","params_1","changed","values1","values2","validates","isDefaultValue","replaceSpecialValues","_defaultValueCache","defaultValue","getDefaultValue","$normalize","isSearch","encoded","ParamType","$subPattern","sub","mode","ArrayType","arrayWrap","arrayHandler","allTruthyMode","arrayUnwrap","arrayEqualsHandler","val1","val2","left","right","paramTypeFn","wrapperFn","$arrayMode","makeDefaultType","ParamTypes","typeQueue","defaultTypes","definitionFn","_flushTypeQueue","valToString","defaultTypeBase","String","query","hash","int","bool","Boolean","date","getFullYear","getMonth","getDate","capture","Date","valueOf","l","json","StateParams","$inherit","newParams","$current","$to","parentParams","parents","inheritList","PathNode","stateOrNode","parameters","applyRawParams","pDef","paramDef","parameter","paramsFn","diff","PathUtils","makeTargetState","registry","buildPath","buildToPath","fromPath","toPath","inheritParams","applyViewConfigs","viewDecls","subPath","viewConfigs","createViewConfig","toKeys","noInherit","toNode","toParamVals","incomingParamVals","fromParamVals","ownParamVals","reloadState","node1","node2","retained","keep","nonDynamicParams","retainedWithToParams","retainedNode","matching","pathA","pathB","done","nodeA","nodeB","predicate","elementIdx","resolvePolicies","LAZY","EAGER","WAIT","NOWAIT","arg1","policy","resolved","literal","thisPolicy","statePolicy","resolvePolicy","resolveContext","findNode","asyncPolicy","customAsyncPolicy","getDependencies","resolvedDeps","resolvedValue","fromData","whens","ALL_WHENS","EAGER_WHENS","_path","addResolvables","newResolvables","resolvePath","matchedWhens","matchesPolicy","acceptedVals","whenOrAsync","nodeResolvables","nowait","wait","getResult","injector","_injector","UIInjectorImpl","availableResolvables","_node","fromInjector","getNative","native","getAsync","_routerInstance","locationServiceStub","locationConfigStub","_disposed","_disposables","_plugins","disposable","d","ignored","plugin","pluginInstance","getPlugin","pluginName","nameBuilder","selfBuilder","dataBuilder","getUrlBuilder","$urlMatcherFactoryProvider","stateDec","newStateDec","parsed","substring","parseUrl","isMatcher","navigable","append","getNavigableBuilder","isRoot","pathBuilder","includesBuilder","resolvablesBuilder","resolveObj","getToken","p","provide","literal2Resolvable","useFactory","dependencies","useClass","useValue","useExisting","tuple2Resolvable","item2Resolvable","decl","StateBuilder","matcher","paramFactory","builders","parentName","urlParams","nonUrlParams","builder","build","chain","parentFn","segments","pop","StateMatcher","_states","isRelative","stateName","stateOrName","base","matchGlob","isStr","__stateObjectCache","nameGlob","baseState","splitName","pathLength","relName","StateObject","stateDecl","isStateClass","ref","matchingKeys","isStateDeclaration","isState","StateQueueManager","listeners","queue","flush","registered","orphans","previousQueueLength","getState","notifyListeners","listener","name_1","orphanIdx","existingState","existingFutureState","deregister","attachRoute","prev","abstract","rulesApi","urlRuleFactory","StateRegistry","stateQueue","_registerRoot","_root","onStatesChanged","stateDefinition","_deregisterTree","getChildren","_children","deregistered","removeRule","deregisteredStates","found","property","builderFunction","TargetState","_stateRegistry","_identifier","_params","_options","_definition","relative","exists","valid","withState","withParams","withOptions","newOpts","isDef","HookBuilder","buildHooksForPhase","phase","_getEvents","buildHooks","hookType","matchingHooks","getMatchingHooks","reverseDepthSort","baseHookOptions","criteriaMatchPath","traceData","transitionHook","reverseSort","factor","depthDelta","isCreate","hookPhase","reg","getHooks","matchState","criterion","toMatch","globStrings","RegisteredHook","tranSvc","eventType","matchCriteria","removeHookFromRegistry","invokeCount","_deregistered","invokeLimit","_matchingNodes","nodes","_getDefaultMatchCriteria","_getPathTypes","_getMatchingNodes","mn","pathtype","isStateHook","every","makeEvent","hooks","_registeredHooks","removeHookFn","hookRegistrationFn","matchObject","TransitionHookPhase","TransitionHookScope","RejectType","Rejection","message","detail","isRejectionPromise","superseded","rejection","SUPERSEDED","redirected","invalid","INVALID","IGNORED","aborted","ABORTED","errored","ERROR","normalize","toPromise","TransitionEventType","hookOrder","getResultHandler","getErrorHandler","synchronous","defaultOptions","TransitionHook","stateContext","isSuperseded","isActive","waitFor","nextHook","invokeHook","invokeHooks","doneCallback","remainingHooks","runAllHooks","logError","defaultErrorHandler","notCurrent","getNotCurrentRejection","handleError","handleResult","handleHookResult","isTargetState","_aborted","HANDLE_RESULT","LOG_REJECTED_RESULT","LOG_ERROR","REJECT_ERROR","THROW_ERROR","addCoreResolvables","addResolvable","TRANSITION_TOKENS","isTransition","treeChangesCleanup","replaceTransitionWithNull","redirectToHook","redirect","redirectTo","makeEnterExitRetainHook","hookFn","onExitHook","onRetainHook","onEnterHook","RESOLVE_HOOK_PRIORITY","eagerResolvePath","lazyResolveState","resolveRemaining","loadEnteringViews","enteringViews","activateViews","exitingViews","vc","deactivateViewConfig","activateViewConfig","updateGlobalState","clearCurrentTransition","updateUrl","urlOptions","ignoredHook","ignoredReason","_ignoredReason","pending","abort","invalidTransitionHook","defaultTransOpts","notify","reload","supercede","custom","TransitionService","_router","_transitionCount","_eventTypes","_criteriaPaths","_deregisterHookFns","_defineCorePaths","_defineCoreEvents","_registerCoreTransitionHooks","onCreate","onStart","onExit","onRetain","onEnter","onFinish","onError","hooksArray","Phase","TH","paths","NORMAL_SORT","SYNCHRONOUS","_defineEvent","CREATE","BEFORE","RUN","SUCCESS","STATE","_definePathType","cmpByPhase","hookScope","fns","addCoreResolves","registerInvalidTransitionHook","registerRedirectToHook","registerOnExitHook","registerOnRetainHook","registerOnEnterHook","eagerResolve","registerEagerResolvePath","lazyResolve","registerLazyResolveState","resolveAll","registerResolveRemaining","loadViews","registerLoadEnteringViews","registerActivateViews","updateGlobals","registerUpdateGlobalState","registerUpdateUrl","UrlConfig","_isCaseInsensitive","_isStrictMode","_defaultSquashPolicy","hashPrefix","newprefix","host","port","protocol","caseInsensitive","strictMode","__assign","ParamFactory","fromSearch","UrlMatcherFactory","UrlMatcher","globalConfig","strict","decodeParams","object","UrlRouter","urlParts","compareFn","read","urlMatcher","href","absolute","isHtml5","appendBasePath","slash","cfgPort","defineProperty","enumerable","configurable","UrlRuleFactory","makeRule","_what","fromUrlMatcher","fromState","fromRegExp","_handler","details","matchPriority","optional","search","stateOrDecl","transitionTo","sticky","Number","isUrlRule","defaultRuleSortFn","getHandlerFn","cmp","prioritySort","weights","URLMATCHER","REGEXP","RAW","OTHER","typeSort","urlMatcherSort","useMatchPriority","idSort","UrlRules","_sortFn","_rules","_id","_otherwiseFn","handlerFn","_sorted","ensureSorted","sorted","stableSort","group","_group","arrOfWrapper","wrapperA","wrapperB","cmpDiff","wrapper","UrlService","newurl","best","go","applyResult","_stopListeningFn","weight","BaseLocationServices","fireAfterUpdate","_listeners","_listener","_get","_location","_history","BrowserLocationConfig","_isHtml5","_hashPrefix","hostname","getBaseHref","baseTag","getElementsByTagName","extendStatics","__extends","setPrototypeOf","__proto__","__","HashLocationService","_super","title","MemoryLocationConfig","_port","_protocol","_host","newval","MemoryLocationService","_url","PushStateLocationService","_config","_getBasePrefix","basePrefix","exactBaseHrefMatch","startsWithBase","fullUrl","replaceState","pushState","Promise","reject","deferred","keyValsToObjectR","accum","getParams","queryString","orEmptyString","beforehash","buildUrl","loc","searchObject","locationPluginFactory","serviceClass","configurationClass","configuration","_uiViews","_viewConfigs","_viewConfigFactories","_registeredUIView","_registeredUIViews","_activeViewConfigs","_onSync","normalizeUIViewTarget","rawViewName","viewAtContext","relativeViewNameSugar","anchorState","anchor","_rootContext","viewType","cfgFactory","cfgs","uiViewsByFqn","viewConfigDepth","depthCompare","depthFn","posNeg","uiViewTuples","stateDepth","matchingConfigs","matchedViewConfigs","unmatchedConfigTuples","allTuples","uiViews","available","active","vcSegments","uivSegments","negOffset","fqnToFirstSegment","uiViewContext","ARIA_DISABLE_ATTR","ngAriaModule","info","angularVersion","ariaHidden","ariaChecked","ariaReadonly","ariaDisabled","ariaRequired","ariaInvalid","ariaValue","tabindex","bindKeydown","bindRoleForClick","watchExpr","ariaAttr","nativeAriaNodeNames","negate","ariaCamelName","isNodeOneOf","boolVal","newConfig","$$watchExpr","nodeTypeArray","nodeName","$aria","shouldAttachAttr","normalizedAttr","allowNonAriaNodes","shouldAttachRole","role","shape","getShape","post","ngModel","needsTabIndex","ngAriaWatchModelValue","$modelValue","newVal","$viewValue","$isEmpty","needsAriaValuemin","needsAriaValuemax","needsAriaValuenow","$observe","$validators","required","$invalid","ngMessages","ngClick","ngKeydown","ngKeypress","ngKeyup","keyCode","which","isContentEditable","$event","readOnly","pristine","resetable","starWidth","starHeight","canelWidth","cancelHeight","rated","reset","beforeRated","beforeReset","isTouch","navigator","msMaxTouchPoints","orgValue","starPartWidth","steps","garbage","getValue","index","getStartParts","getStarOffset","ratio","isSelected","removeRating","rating","setValue","tmpValue","put","IndexController","$mdDialog","RemoteStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","vm","toggle","up","updateStorage","cmd","layout","postMessage","onStorageError","debug","visitor","status","div_color","settings","color","text_color","textColor","text_button_color","textButtonColor","button_color","color_button","background_color","backgroundColor","client_height","documentElement","clientHeight","innerHeight","client_width","clientWidth","style","setProperty","tg","getStoredValueWithLocation","visitorStoragePromise","getItem","layoutStoragePromise","visitorValue","layoutValue","interaction","alignment","online","exceeded","maxInteractions","openedInteractions","isOnline","hideWhenOffline","createElement","appendChild","sheet","insertRule","close","confirm","querySelector","clickOutsideToClose","closingQuestion","ok","show","chatInteraction","customUpdate","closed","closeReason","$promise","download","getMessages","intid","includeAll","forceDownload","_map","rows","row","sender","direction","customerAlias","ContactId","agentIdentifier","UserId","agentAlias","User","alias","fullname","body","createdAt","moment","getHeaderShape","header_shape","CHAT_STATUSES","offline","defaultTitle","header_online","header_offline","addEventListener","routeRun","cursor","hide","_forIn","_isNil","routeConfig","$stateProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX","Pragma","setPrefix","waitingTemplate","onlineTemplate","offlineTemplate","chatTemplate","unmanagedTemplate","closingTemplate","ClosingController","$mdToast","errors","toast","simple","textContent","formSubmitFailureMessage","toastClass","position","stopLoading","loading","goToIfTime","form","upColor","downColor","userForm","$setPristine","$setUntouched","enableDownload","removeItem","submit","_merge","ratingType","customer","formSubmitSuccessMessage","finally","skip","apiService","$resource","paramDefaults","baseUrl","remote","chatWebsite","method","getFields","uploadAttachment","transformRequest","downloadAttachment","abandon","chatMessage","ChatController","$interval","$document","InputRecorderService","emojiArea","getMessagesInterval","getInteractionInterval","lastMessageId","isSendingMessage","clearStorage","scrollToBottomOfChat","getElementsByClassName","scrollTop","scrollHeight","toolbarMessage","handleSizeError","code","outOfInterval","sendMessage","updateRootscope","interactionStarted","emojioneArea","setText","getInteraction","disposition","reply","getText","shiftKey","includeAgent","added","_find","messages","AttachmentId","startsWith","urlFromBody","emojiOptions","watchEmbedData","fontSmiley","emoji","linkTarget","ngFlow","ngFlowOptions","allowDuplicateUploads","showMenu","replyMessage","$","placeholder","placeholderMessage","keyup","editor","ready","setFocus","reply_button","maxFileSizeMb","fd","FormData","recording","recordingStopped","recordedAudioUrl","onRecordingStart","init","startRecording","recordStartTime","now","stream","mediaStream","audioCtx","AudioContext","createMediaStreamSource","analyser","createAnalyser","connect","fftSize","frequencyData","Uint8Array","frequencyBinCount","recordRippleEl","recordTimeEl","transform","innerText","requestAnimationFrame","getByteFrequencyData","sum","percents","ms","formatted","toHHMMSS","round","e0","onRecordingStop","stopRecording","audioURL","URL","createObjectURL","onRecordingSend","addFile","onRecordingDelete","_values","remoteAddress","address","origin","setItem","action","storage","expectedAction","removeEventListener","stringData","warn","AudioPlayerController","showCurrentTime","$onDestroy","$postLink","draggableClasses","currentlyDragged","handleMethodOnMouseMove","audio","onloadedmetadata","duration","Infinity","currentTime","ontimeupdate","timeupdate","onloadeddata","oncanplay","makePlay","onended","playPause","$digest","togglePlay","paused","play","pause","updateProgress","percent","sliderTime","formatTime","time","floor","sec","onSliderTimeChanged","disposeSource","revokeObjectURL","groups","DocumentWrapperController","documentName","documentExtension","documentClassExtension","downloadDocument","click","toTrustedFilter","$sce","trustAsHtml","constant","ngEnter","div","startTime","sentAt","createTextNode","myWindow","open","write","referer","innerHTML","focus","print","printElement","$mdGestureProvider","skipClickHijack","OfflineController","OnlineController","UnmanagedController","WaitingController","AudioPlayerTemplate","typeFromMimeType","MediaViewerTemplate","MediaViewerController","DocumentWrapperTemplate","mediaViewerController","adjustImgSize","exports","it","TypeError","ArrayBuffer","DataView","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","classof","createNonEnumerableProperty","redefine","getPrototypeOf","wellKnownSymbol","uid","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","aTypedArray","aTypedArrayConstructor","C","exportTypedArrayMethod","KEY","forced","ARRAY","TypedArrayConstructor","exportTypedArrayStaticMethod","isView","mergeSort","comparefn","middle","insertionSort","merge","llength","rlength","lindex","rindex","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","O","tag","tryGet","callee","fails","F","definePropertyModule","createPropertyDescriptor","f","bitmap","writable","EXISTS","firefox","UA","getBuiltIn","version","userAgent","process","Deno","versions","v8","webkit","aFunction","variable","namespace","check","globalThis","toObject","store","inspectSource","set","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","wmget","wmhas","wmset","metadata","facade","enforce","getterFor","TYPE","USE_SYMBOL_AS_UID","$Symbol","V8_VERSION","getOwnPropertySymbols","symbol","Symbol","sham","IE8_DOM_DEFINE","anObject","toPropertyKey","$defineProperty","P","Attributes","CORRECT_PROTOTYPE_GETTER","IE_PROTO","aPossiblePrototype","setter","CORRECT_SETTER","getOwnPropertyDescriptor","proto","pref","setGlobal","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","noTargetGet","SHARED","IS_PURE","copyright","ceil","argument","toInteger","requireObjectCoercible","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","ArrayBufferViewCore","toLength","len","relativeIndex","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","mod","expected","arrayLength","y","getSortCompare","jsonToFormData","isJsonObject","Blob","isGlobalFormDataPresent","getDefaultFormData","convertRecursively","jsonObject","formData","parentKey","propName","showLeafArrayIndexes","FileList","toISOString","includeNullValues","initialFormData","mergedOptions","carry","objectToMerge","objectKey","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","h","hh","dd","M","MM","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","plurals","pluralize","u","withoutSuffix","isFuture","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","relativeTimeWithPlural","num","forms","standalone","isFormat","day","period","w","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","translate","ll","lll","llll","output","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","month","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","offset","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","$0","$2","isUpper","eifelerRegelAppliesToNumber","units","translateSingular","special","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","separator","days","numbersNouns","numberNoun","hundred","ten","one","word","numberAsNoun","hm","processHoursFunction","nominative","accusative","genitive","webpackContext","req","webpackContextResolve","__webpack_require__","urlSanitizationWhitelist","aHrefSanitizationWhitelist","stringifyField","decimalSep","isFloat","toLocaleString","quoteStrings","txtDelim","isFinite","header","fieldSep","label","c","columnOrder","addByteOrderMarker","isSpecialChar","getSpecialChar","filename","charset","csv","buildCSV","getFilename","addClass","ngCsvLoadingClass","csvHeader","csvColumnOrder","csvLabel","removeClass","msSaveOrOpenBlob","msSaveBlob"],"sourceRoot":""}
\ No newline at end of file
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..08bb36a98fc9a6c7fc4f6fe28ee7b7265c37525c
--- /dev/null
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["chat-fecd0807"],{"./src/js/input-recorder/input-recorder.service.js":(e,t,o)=>{function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}o.d(t,{t:()=>n});class n{constructor(){i(this,"conf",{}),i(this,"recordedBlobs",[]),i(this,"mediaStream",null),i(this,"mediaRecorder",null),this.initProps()}initProps(){this.conf={},this.recordedBlobs=[],this.mediaStream=null,this.mediaRecorder=null}clear(){this.initProps()}async init(){return this.initProps(),this.initMediaDevices()}async initMediaDevices(){if(console.log("initMediaDevices"),this.initDeviceInProgress=!0,"https:"!==location.protocol&&!location.host.includes("localhost"))return void alert("https or localhost required!");const e={audio:!0,video:!1};try{try{const t=await navigator.mediaDevices.getUserMedia(e);this.mediaStream=t}catch(e){console.error("Audio device not available"),console.error(e)}}finally{this.initDeviceInProgress=!1}}startRecording(){const e={mimeType:"audio/webm;codecs=opus"};this.recordedBlobs=[];try{this.mediaRecorder=new MediaRecorder(this.mediaStream,e)}catch(t){console.log("Unable to create MediaRecorder with options Object: ",e,t);try{this.mediaRecorder=new MediaRecorder(this.mediaStream)}catch(e){return alert("MediaRecorder is not supported by this browser."),alert('<iframe> should contain attribute allow="microphone"'),void console.error("Unable to create MediaRecorder",e)}}console.log("Created MediaRecorder",this.mediaRecorder,"with options",e),this.mediaRecorder.onstop=this.handleStop.bind(this),this.mediaRecorder.ondataavailable=this.handleDataAvailable.bind(this),this.mediaRecorder.start(200),console.log("MediaRecorder started",this.mediaRecorder)}stopRecording(){return this.mediaRecorder?(this.mediaRecorder.stop(),this.mediaStream.getAudioTracks().forEach((e=>e.stop())),this):this}handleStop(e){console.log("Recorder stopped: ",e)}handleDataAvailable(e){e.data&&e.data.size>0&&this.recordedBlobs.push(e.data)}download(){return new File(this.recordedBlobs,this.guid()+".ogg",{type:"audio/webm",lastModified:(new Date).getTime()})}guid(){const e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,o=4294967295*Math.random()|0,i=4294967295*Math.random()|0,n=[];for(let e=0;e<256;e++)n[e]=(e<16?"0":"")+e.toString(16);return n[255&e]+n[e>>8&255]+n[e>>16&255]+n[e>>24&255]+"-"+n[255&t]+n[t>>8&255]+"-"+n[t>>16&15|64]+n[t>>24&255]+"-"+n[63&o|128]+n[o>>8&255]+"-"+n[o>>16&255]+n[o>>24&255]+n[255&i]+n[i>>8&255]+n[i>>16&255]+n[i>>24&255]}toHHMMSS(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const o=parseInt(e+"",10),i=Math.floor(o/3600);let n=Math.floor((o-3600*i)/60),r=o-3600*i-60*n;return i&&(t=!0),n<10&&(n=t?"0"+n:n),r<10&&(r="0"+r),(i?i+":":"")+n+":"+r}}n.$inject=[]},"./src/js/media-viewer/media-viewer.controller.js":(e,t,o)=>{function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}o.d(t,{Z:()=>r});class n{constructor(e,t,o){i(this,"boxWidth",240),i(this,"boxHeight",140),i(this,"size",{width:this.boxWidth,height:this.boxHeight}),this.$scope=e,this.$element=t,this.typeFromMimeType=o}adjustImgSize(e){let t=!1;const o=e[0];if(!t){const e=this;o.onload=()=>{const i=e.calcImageInBox(o.width,o.height,e.boxWidth,e.boxHeight);e.size=i,t=!0}}}adjustVideoSize(e){let t=!1;const o=e[0];if(!t){const e=this;o.onloadedmetadata=()=>{const i=e.calcImageInBox(o.videoWidth,o.videoHeight,e.boxWidth,e.boxHeight);e.size=i,t=!0}}}$postLink(){console.debug("MediaViewerController.postLink")}$onDestroy(){console.debug("MediaViewerController.onDestroy")}downloadMedia(){const e=document.createElement("a"),t=this.source;e.href=t,e.target="_self",document.body.appendChild(e),e.click()}calcImageInBox(e,t,o,i){let n=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];if(e<o&&t<i&&n)return{width:e,height:t};let r=o,s=i;return e/t>o/i?s=t*o/e|0:(r=e*i/t|0,r>o&&(s=s*o/r|0,r=o)),n&&r>=e&&s>=t&&(r=e,s=t),{width:r,height:s}}}n.$inject=["$scope","$element","typeFromMimeType"];const r=n},"./src/js/offline/offline.controller.js":(e,t,o)=>{o.d(t,{v:()=>p});var i=o("./node_modules/lodash.isnil/index.js"),n=o.n(i),r=o("./node_modules/lodash.merge/index.js"),s=o.n(r),a=o("./node_modules/lodash.random/index.js"),l=o.n(a),c=o("./node_modules/lodash.clonedeep/index.js"),d=o.n(c),m=o("./node_modules/json-form-data/src/jsonToFormData.js"),u=o.n(m);function p(e,t,o,i,r,a,c){const m=this;let p=null,f=null;t.typeField="";const h={showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}};function g(){delete m.errors.submit,t.$emit("hide"),m.fields=d()(f),m.form={},m.userForm.$setPristine(),m.userForm.$setUntouched();const e=r.simple().textContent(t.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));r.show(e)}m.trustAsHtml=function(e){return o.trustAsHtml(e)},m.initUploadButton=function(o){const i=m.fields[o],n=a.find(".upload-item");if(n.length){const o=angular.element(n[0].querySelector(".upload-button")),s=angular.element(n[0].querySelector("input[type=file]")),a=o.find("label");a.length&&a.css("display","none"),o.on("click",(()=>{a.css("display","none"),"function"==typeof s.trigger?s.trigger("click"):s[0].click()})),s.on("change",(o=>{e.$apply((function(){"string"==typeof i.props.error&&(i.props.error=null);const e=Array.from(o.target.files),n=1048576*i.config.size;e.some((e=>e.size>=n))?(i.options=[],i.props.error=i.config.sizeErrMessage,function(e){m.errors={},t.$emit("hide");const o=r.simple().textContent("FILE TOO BIG: The max allowed size is "+e+"MB").toastClass("md-warning-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));r.show(o)}(i.config.size)):i.options=e.map((e=>{const{name:t,size:o,type:i}=e;return{name:t,size:o,type:i,file:e}})),m.form[i.props.title]=i.options}))}))}},m.removeFileItem=function(e,t){e.options.splice(t,1),m.form[e.props.title]=e.options},m.setupFileInput=function(e){console.log("form item setup",e);const t=a.find(".upload-item"),o=angular.element(t[0].querySelector("input[type=file]")),{multipleUpload:i,accept:n}=e.config;i&&o.attr("multiple","multiple"),n&&o[0].setAttribute("accept",n)},m.makeFileOptionsVisible=function(){const e=Array.from(a.find(".filename-label")),t=e[e.length-1];t&&t.scrollIntoView&&t.scrollIntoView()},m.$onInit=function(){console.debug("OfflineController::onInit() VISITOR",t.visitor),t.status="offline",m.visitor={id:t.settings.id,mapKeyOffline:"firstName",from:"Anonymous"+l()(1,1e6)},t.settings.showMenu=!1,t.loading=!1,i.chatWebsite.getFields({id:t.settings.id,online:!1}).$promise.then((function(e){e.count&&(p=e.fromKey,f=d()(e.rows),m.fields=d()(f))})).then((function(){for(let e=0;e<m.fields.length;e++){const o=m.fields[e];if(t.typeField+=o.type,void 0!==o.props&&o.props.helpText){const t=RegExp.prototype.test.bind(/(<([^>]+)>)/i);m.checkHTML[e]=t(o.props.helpText)}}})).catch((function(e){console.error(e)})).finally((function(){if(t.settings.outOfInterval){t.settings.outOfInterval=!1;const e=r.simple().textContent("Sorry, your message was not sent.\nWe are offline at the moment.").hideDelay(5e3).toastClass("md-warning-toast").parent(angular.element(document.querySelector("#chat-toolbar")));r.show(e)}}))},m.submit=function(){t.loading=!0;const e={...m.form};for(let o=0;o<m.fields.length;o++){const i=m.fields[o];i.props&&void 0!==e[i.props.title]&&(n()(i.cmField)||(m.visitor[i.cmField]=Array.isArray(e[i.props.title])?e[i.props.title].join():e[i.props.title]),o===p&&(n()(t.settings.mapKeyOffline)||(m.visitor.mapKeyOffline=t.settings.mapKeyOffline,m.visitor.from=Array.isArray(e[i.props.title])?e[i.props.title].join():e[i.props.title])),"upload"===i.type&&(e[i.props.title]=e[i.props.title].map((e=>e.file))))}const o=Array.isArray(m.fields)?m.fields.filter((e=>"upload"===e.type)):[],a=s()({body:e},m.visitor),l=null!=e&&o.length>0,d=null!==e&&"{}"!==JSON.stringify(e);var f,v;(l?(f=a,c({url:`${i.baseUrl}chat/websites/${f.id}/offline`,headers:{"Content-Type":void 0},data:u()(f,{...h,initialFormData:new FormData}),method:"POST"})):d?i.chatWebsite.offline(a).$promise:Promise.reject("INVALID_FORM")).then(g).catch((v="submit",function(e){const o=r.simple().textContent(t.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast size "+t.settings.header_shape).parent(angular.element(document.querySelector("#chat-toolbar")));r.show(o),m.errors[v]=e.data})).finally((()=>{m.form.invalid||(m.form={}),t.loading=!1}))},m.toggle=function(e,t){m.form[e]||(m.form[e]=[]);const o=m.form[e].indexOf(t);o>-1?m.form[e].splice(o,1):m.form[e].push(t)},m.exists=function(e,t){return m.form[e]||(m.form[e]=[]),m.form[e].indexOf(t)>-1},m.checkHTML=[],m.form={},m.errors={},m.userForm={}}p.$inject=["$scope","$rootScope","$sce","api","$mdToast","$element","$http"]},"./src/js/online/online.controller.js":(e,t,o)=>{o.d(t,{E:()=>c});var i=o("./node_modules/lodash.isnil/index.js"),n=o.n(i),r=o("./node_modules/lodash.merge/index.js"),s=o.n(r),a=o("./node_modules/lodash.random/index.js"),l=o.n(a);function c(e,t,o,i,r,a){const c=this;let d=null;function m(){e.settings.online?e.settings.enableCustomerWriting?t.go("app.chat",null,{location:"replace"}):t.go("app.waiting",null,{location:"replace"}):(e.settings.outOfInterval=!0,t.go("app.offline",null,{location:"replace"}))}function u(){return e.visitor={id:e.settings.id,mapKey:"firstName",from:"Anonymous"+l()(1,1e6)},e.settings.showMenu=!1,r.updateStorage(a,e.visitor).then((t=>(e.visitor=t,i.chatWebsite.getFields({id:e.settings.id,online:!0}).$promise.then((function(e){e.count&&(d=e.fromKey,c.fields=e.rows)})).then((function(){for(let e=0;e<c.fields.length;e++){const t=c.fields[e];if(t.props.helpText){const o=RegExp.prototype.test.bind(/(<([^>]+)>)/i);c.checkHTML[e]=o(t.props.helpText)}}})).catch((function(e){console.error(e)}))))).catch(r.onStorageError)}c.checkHTML=[],c.form={},c.errors={},c.userForm={},c.disableItem=!1,c.trustAsHtml=function(e){return o.trustAsHtml(e)},c.$onInit=function(){if(console.debug("OnlineController::onInit() VISITOR",e.visitor),e.status="online",e.visitor&&e.visitor.interaction)if(e.visitor.interaction.id)if(!0===e.visitor.interactionStarted)t.go("app.chat",null,{location:"replace"});else{var o,n;const t=e.visitor.interaction.id,r=null==e||null===(o=e.visitor)||void 0===o||null===(n=o.message)||void 0===n?void 0:n.id;if(r){const e={id:t,channel:"chat",interaction:{id:t},message:{id:r},disposition:"abandoned",closed:!0,closeReason:"contact"};i.chatInteraction.abandon(e).$promise.finally((()=>u()))}}else t.go("app.waiting",null,{location:"replace"});else u()},c.submit=function(){let t="New chat request \n";for(let o=0;o<c.fields.length;o++){const i=c.fields[o];i.props&&void 0!==c.form[i.props.title]&&(n()(i.variable)||(e.visitor[i.variable]=Array.isArray(c.form[i.props.title])?c.form[i.props.title].join():c.form[i.props.title]),n()(i.cmField)||(e.visitor[i.cmField]=Array.isArray(c.form[i.props.title])?c.form[i.props.title].join():c.form[i.props.title]),o===d&&(n()(e.settings.mapKey)||(e.visitor.mapKey=e.settings.mapKey,e.visitor.from=Array.isArray(c.form[i.props.title])?c.form[i.props.title].join():c.form[i.props.title])),c.form[i.props.title]&&(t+=i.props.title+": "+c.form[i.props.title]+"\n"))}var o;o=s()({body:t,referer:e.settings.referer,customerIp:e.settings.customerIp},e.visitor),c.disableItem=!0,i.chatWebsite.notify(o).$promise.then((function(t){delete c.errors.chatMessageError,e.visitor.message={id:t.message.id},e.visitor.interaction={id:t.interaction.id},r.updateStorage(a,e.visitor).then((t=>{e.visitor=t})).catch(r.onStorageError),c.disableItem=!1,m()})).catch((function(t){var o,i,n;c.disableItem=!1,403===(null===(o=t.data)||void 0===o?void 0:o.code)&&"OutOfInterval"===(null===(i=t.data)||void 0===i||null===(n=i.details)||void 0===n?void 0:n.type)?(e.settings.online=!1,m()):console.error(t)}))},c.toggle=function(e,t){c.form[e]||(c.form[e]=[]);const o=c.form[e].indexOf(t);o>-1?c.form[e].splice(o,1):c.form[e].push(t)},c.exists=function(e,t){return c.form[e]||(c.form[e]=[]),c.form[e].indexOf(t)>-1}}c.$inject=["$rootScope","$state","$sce","api","RemoteStorageService","STORAGE_VISITOR"]},"./src/js/unmanaged/unmanaged.controller.js":(e,t,o)=>{function i(e,t,o,i,n,r,s,a){const l=this;function c(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function d(){l.form={},l.upColor=null,l.downColor=null,l.userForm.$setPristine(),l.userForm.$setUntouched(),e.visitor={},e.enableDownload=!1,e.$emit("hide")}function m(t){return function(i){l.errors[t]=i.data;const n=o.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));o.show(n)}}function u(){e.loading=!1}l.form={},l.errors={},l.$onInit=function(){console.debug("UnmanagedController::onInit() VISITOR",e.visitor),e.status="unmanaged",n.all([r.removeItem(s).then((()=>console.debug("STORAGE_VISITOR cleared"))).catch(r.onStorageError),r.removeItem(a).then((()=>console.debug("STORAGE_LAYOUT cleared"))).catch(r.onStorageError)]).then((()=>e.loading=!1))},l.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?i.chatInteraction.customUpdate({id:e.visitor.interaction.id,note:l.form.note}).$promise.then((function(){delete l.errors.submit;const t=o.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));o.show(t)})).then(d).then(c).catch(m("submit")).finally(u):(u(),m("submit"))},l.skip=function(){d(),c()}}o.d(t,{g:()=>i}),i.$inject=["$rootScope","$state","$mdToast","api","$q","RemoteStorageService","STORAGE_VISITOR","STORAGE_LAYOUT"]},"./src/js/waiting/waiting.controller.js":(e,t,o)=>{function i(e,t,o,i,n,r,s){let a=null;function l(){let t={},o=!1;n.chatInteraction.get({id:e.visitor.interaction.id}).$promise.then((function(o){return t=o,n.chatInteraction.getMessages({intid:e.visitor.interaction.id}).$promise})).then((function(n){o=n.rows.length>1,t.closed?(e.visitor.interaction.closed=!0,r.updateStorage(s,e.visitor).then((o=>{e.visitor=o,"unmanaged"===t.disposition&&i.go("app.unmanaged",null,{location:"replace"})})).catch(r.onStorageError)):(t.UserId||o)&&(t.UserId&&(e.visitor.interaction.UserId=t.UserId),r.updateStorage(s,{...e.visitor,interactionStarted:!0}).then((t=>{e.visitor=t,i.go("app.chat",null,{location:"replace"})})).catch(r.onStorageError))})).catch((function(e){switch(e.status){case 403:i.go("app.closing",null,{location:"replace"});break;case 405:i.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}this.$onInit=function(){console.debug("WaitingController::onInit() VISITOR",e.visitor),e.status="waiting",e.visitor&&e.visitor.interaction&&e.visitor.interaction.id&&(a=o(l,3e3))},t.$on("$destroy",(function(){o.cancel(a)}))}o.d(t,{H:()=>i}),i.$inject=["$rootScope","$scope","$interval","$state","api","RemoteStorageService","STORAGE_VISITOR"]},"./src/js/media-viewer/media-viewer.tpl.html":(e,t,o)=>{e.exports=o.p+"templates/16cdb681415d17888eb4.html"},"./src/js/offline/offline.tpl.html":(e,t,o)=>{e.exports=o.p+"templates/c1e929900f2af303341f.html"},"./src/js/online/online.tpl.html":(e,t,o)=>{e.exports=o.p+"templates/cd310ba2c496545551ae.html"},"./src/js/unmanaged/unmanaged.tpl.html":(e,t,o)=>{e.exports=o.p+"templates/c6696015a1b93372d614.html"},"./src/js/waiting/waiting.tpl.html":(e,t,o)=>{e.exports=o.p+"templates/66a0b4b6e8658e97c814.html"}},e=>{var t=t=>e(e.s=t);e.O(0,["vendor-index","vendor-angular-76f2ed34","vendor-angular-58d021f3","vendor-ng-embed","vendor-moment","vendor-jquery","vendor-jquery.textcomplete","vendor-emojionearea","vendor-emojione","vendor-angular-sanitize","vendor-angular-resource","vendor-angular-messages","vendor-angular-material","vendor-angular-local-storage","vendor-angular-animate","vendor-urlMatcher","vendor-transition","vendor-stateService","vendor-stateDirectives","vendor-flow","chat-e96e9bea"],(()=>(t("./node_modules/jquery/dist/jquery.js"),t("./node_modules/angular/index-exposed.js"),t("./node_modules/moment/moment.js"),t("./node_modules/@flowjs/flow.js/src/flow.js"),t("./node_modules/emojione/lib/js/emojione.js"),t("./src/js/index.module.js")))),e.O()}]);
+//# sourceMappingURL=chat-fecd0807.js.map
\ No newline at end of file
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..88b5f2c9b77df007ff7daf46387cf9a8451c3ee2
--- /dev/null
@@ -0,0 +1 @@
+{"version":3,"file":"scripts/chat-fecd0807.js","mappings":"6SAEA,MAAMA,EAuBJC,cAAc,cAtBP,IAsBO,uBAjBE,IAiBF,qBAXA,MAWA,uBALE,MAMdC,KAAKC,YAGPA,YACED,KAAKE,KAAO,GAEZF,KAAKG,cAAgB,GAErBH,KAAKI,YAAc,KAEnBJ,KAAKK,cAAgB,KAGvBC,QACEN,KAAKC,YAOG,aAER,OADAD,KAAKC,YACED,KAAKO,mBAUQ,yBAKpB,GAJAC,QAAQC,IAAI,oBACZT,KAAKU,sBAAuB,EAEJ,WAAtBC,SAASC,WAAyBD,SAASE,KAAKC,SAAS,aAGzD,YADAC,MAAM,gCAIR,MAAMC,EAAc,CAClBC,OAAO,EACPC,OAAO,GAIT,IACE,IACE,MAAMC,QAAeC,UAAUC,aAAaC,aAAaN,GACzDhB,KAAKI,YAAce,EACnB,MAAOI,GACPf,QAAQgB,MAAM,8BACdhB,QAAQgB,MAAMD,IANlB,QASEvB,KAAKU,sBAAuB,GAIhCe,iBACE,MAAMC,EAAU,CACdC,SAAU,0BAEZ3B,KAAKG,cAAgB,GACrB,IACEH,KAAKK,cAAgB,IAAIuB,cAAc5B,KAAKI,YAAasB,GACzD,MAAOG,GACPrB,QAAQC,IACN,uDACAiB,EACAG,GAGF,IACE7B,KAAKK,cAAgB,IAAIuB,cAAc5B,KAAKI,aAC5C,MAAO0B,GAIP,OAHAf,MAAM,mDACNA,MAAM,6DACNP,QAAQgB,MAAM,iCAAkCM,IAIpDtB,QAAQC,IACN,wBACAT,KAAKK,cACL,eACAqB,GAKF1B,KAAKK,cAAc0B,OAAS/B,KAAKgC,WAAWC,KAAKjC,MACjDA,KAAKK,cAAc6B,gBAAkBlC,KAAKmC,oBAAoBF,KAAKjC,MACnEA,KAAKK,cAAc+B,MAAM,KACzB5B,QAAQC,IAAI,wBAAyBT,KAAKK,eAG5CgC,gBACE,OAAKrC,KAAKK,eAGVL,KAAKK,cAAciC,OACnBtC,KAAKI,YAAYmC,iBAAiBC,SAASC,GAAUA,EAAMH,SACpDtC,MAJEA,KAOXgC,WAAWU,GACTlC,QAAQC,IAAI,qBAAsBiC,GAGpCP,oBAAoBO,GACdA,EAAMC,MAAQD,EAAMC,KAAKC,KAAO,GAClC5C,KAAKG,cAAc0C,KAAKH,EAAMC,MAIlCG,WAOE,OAJa,IAAIC,KAAK/C,KAAKG,cAAeH,KAAKgD,OAAS,OAAQ,CAC9DC,KAAM,aACNC,cAAc,IAAIC,MAAOC,YAS7BJ,OACE,MAAMK,EAAsB,WAAhBC,KAAKC,SAAyB,EACpCC,EAAsB,WAAhBF,KAAKC,SAAyB,EACpCE,EAAsB,WAAhBH,KAAKC,SAAyB,EACpCG,EAAsB,WAAhBJ,KAAKC,SAAyB,EACpCI,EAAM,GACZ,IAAK,IAAIC,EAAI,EAAGA,EAAI,IAAKA,IACvBD,EAAIC,IAAMA,EAAI,GAAK,IAAM,IAAMA,EAAEC,SAAS,IAE5C,OACEF,EAAS,IAALN,GACJM,EAAKN,GAAM,EAAK,KAChBM,EAAKN,GAAM,GAAM,KACjBM,EAAKN,GAAM,GAAM,KACjB,IACAM,EAAS,IAALH,GACJG,EAAKH,GAAM,EAAK,KAChB,IACAG,EAAMH,GAAM,GAAM,GAAQ,IAC1BG,EAAKH,GAAM,GAAM,KACjB,IACAG,EAAU,GAALF,EAAa,KAClBE,EAAKF,GAAM,EAAK,KAChB,IACAE,EAAKF,GAAM,GAAM,KACjBE,EAAKF,GAAM,GAAM,KACjBE,EAAS,IAALD,GACJC,EAAKD,GAAM,EAAK,KAChBC,EAAKD,GAAM,GAAM,KACjBC,EAAKD,GAAM,GAAM,KAWrBI,SAASC,GAAuB,IAAlBC,EAAkB,wDAC9B,MAAMC,EAAUC,SAASH,EAAM,GAAI,IAC7BI,EAAQb,KAAKc,MAAMH,EAAU,MACnC,IAAII,EAAUf,KAAKc,OAAOH,EAAkB,KAARE,GAAgB,IAChDG,EAAUL,EAAkB,KAARE,EAAyB,GAAVE,EAWvC,OATIF,IACFH,GAAW,GAETK,EAAU,KACZA,EAAUL,EAAW,IAAMK,EAAUA,GAEnCC,EAAU,KACZA,EAAU,IAAMA,IAEVH,EAAQA,EAAQ,IAAM,IAAME,EAAU,IAAMC,G,oNCtNxD,MAAMC,EAYJxE,YAAYyE,EAAQC,EAAUC,GAAkB,kBAXrC,KAWqC,mBAVpC,KAUoC,cATzC,CACLC,MAAO3E,KAAK4E,SACZC,OAAQ7E,KAAK8E,YAQb9E,KAAKwE,OAASA,EACdxE,KAAKyE,SAAWA,EAChBzE,KAAK0E,iBAAmBA,EAG1BK,cAAcN,GACZ,IAAIO,GAAS,EAKb,MAAMC,EAAMR,EAAS,GACrB,IAAKO,EAAQ,CACX,MAAME,EAAOlF,KACbiF,EAAIE,OAAS,KACX,MAAMvC,EAAOsC,EAAKE,eAChBH,EAAIN,MACJM,EAAIJ,OACJK,EAAKN,SACLM,EAAKJ,WAEPI,EAAKtC,KAAOA,EACZoC,GAAS,IAKfK,gBAAgBZ,GACd,IAAIO,GAAS,EAKb,MAAM9D,EAAQuD,EAAS,GACvB,IAAKO,EAAQ,CACX,MAAME,EAAOlF,KACbkB,EAAMoE,iBAAmB,KACvB,MAAM1C,EAAOsC,EAAKE,eAChBlE,EAAMqE,WACNrE,EAAMsE,YACNN,EAAKN,SACLM,EAAKJ,WAEPI,EAAKtC,KAAOA,EACZoC,GAAS,IAKfS,YACEjF,QAAQkF,MAAM,kCAIhBC,aACEnF,QAAQkF,MAAM,mCAGhBE,gBACE,MAAMC,EAAIC,SAASC,cAAc,KAC3BC,EAAMhG,KAAKiG,OACjBJ,EAAEK,KAAOF,EACTH,EAAEM,OAAS,QACXL,SAASM,KAAKC,YAAYR,GAC1BA,EAAES,QAYJlB,eAAemB,EAAQC,EAAQC,EAAMC,GAAqB,IAAfC,IAAe,yDACxD,GAAIJ,EAASE,GAAQD,EAASE,GAAQC,EACpC,MAAO,CAAEhC,MAAO4B,EAAQ1B,OAAQ2B,GAGlC,IAAII,EAAcH,EACdI,EAAcH,EAiBlB,OAfIH,EAASC,EAASC,EAAOC,EAC3BG,EAAgBL,EAASC,EAAQF,EAAU,GAE3CK,EAAgBL,EAASG,EAAQF,EAAU,EACvCI,EAAcH,IAChBI,EAAgBA,EAAcJ,EAAQG,EAAe,EACrDA,EAAcH,IAIdE,GAAUC,GAAeL,GAAUM,GAAeL,IACpDI,EAAcL,EACdM,EAAcL,GAGT,CAAE7B,MAAOiC,EAAa/B,OAAQgC,I,mDAIzC,W,qWClGA,SAASC,EACPtC,EACAuC,EACAC,EACAC,EACAC,EACAzC,EACA0C,GAEA,MAAMC,EAAKpH,KACX,IAAIqH,EAAU,KACVC,EAAgB,KACpBP,EAAWQ,UAAY,GAEvB,MAAMC,EAAkB,CACtBC,sBAAsB,EACtBC,mBAAmB,EACnBC,QAAS,SAAUC,GACjB,MAAqB,kBAAVA,GACDA,EAAQ,IAAM,IAEjBA,IA+IX,SAASC,WACAT,EAAGU,OAAOC,OACjBhB,EAAWiB,MAAM,QAGjBZ,EAAGa,OAASC,GAAAA,CAAWZ,GAEvBF,EAAGe,KAAO,GACVf,EAAGgB,SAASC,eACZjB,EAAGgB,SAASE,gBAEZ,MAAMC,EAAQrB,EACXsB,SACAC,YACC1B,EAAW2B,SAASC,0BAClB,2BAEHC,WAAW,yBAA2B7B,EAAW2B,SAASG,cAC1DC,OAAOC,QAAQC,QAAQlD,SAASmD,cAAc,mBAEjD/B,EAASgC,KAAKX,GA/JhBnB,EAAG+B,YAAc,SAAUC,GACzB,OAAOpC,EAAKmC,YAAYC,IAkT1BhC,EAAGiC,iBAtDH,SAA0BC,GAExB,MAAMC,EAAWnC,EAAGa,OAAOqB,GACrBE,EAAa/E,EAASgF,KAAK,gBACjC,GAAID,EAAWE,OAAQ,CACrB,MAAMC,EAASZ,QAAQC,QACrBQ,EAAW,GAAGP,cAAc,mBAExBW,EAAQb,QAAQC,QACpBQ,EAAW,GAAGP,cAAc,qBAExBY,EAAQF,EAAOF,KAAK,SAEtBI,EAAMH,QACRG,EAAMC,IAAI,UAAW,QAGvBH,EAAOI,GAAG,SAAS,KACjBF,EAAMC,IAAI,UAAW,QACI,mBAAlBF,EAAMI,QACTJ,EAAMI,QAAQ,SACdJ,EAAM,GAAGtD,WAGfsD,EAAMG,GAAG,UAAWE,IAClBzF,EAAO0F,QAAO,WACwB,iBAAzBX,EAASY,MAAM3I,QACxB+H,EAASY,MAAM3I,MAAQ,MAKzB,MAAM4I,EAAQC,MAAMC,KAAKL,EAAE9D,OAAOiE,OAE5BG,EAnUL,QAmUiBhB,EAASiB,OAAO5H,KACdwH,EAAMK,MAAMC,GAASA,EAAK9H,MAAQ2H,KAKpDhB,EAAS7H,QAAU,GACnB6H,EAASY,MAAM3I,MAAQ+H,EAASiB,OAAOG,eAtLjD,SAAyBJ,GACvBnD,EAAGU,OAAS,GACZf,EAAWiB,MAAM,QACjB,MAAMO,EAAQrB,EACXsB,SACAC,YAAY,yCAA2C8B,EAAY,MACnE3B,WAAW,yBAA2B7B,EAAW2B,SAASG,cAC1DC,OAAOC,QAAQC,QAAQlD,SAASmD,cAAc,mBACjD/B,EAASgC,KAAKX,GA+KNqC,CAAgBrB,EAASiB,OAAO5H,OAEhC2G,EAAS7H,QAAU0I,EAAMS,KAAKH,IAC5B,MAAM,KAAEI,EAAF,KAAQlI,EAAR,KAAcK,GAASyH,EAC7B,MAAO,CAAEI,KAAAA,EAAMlI,KAAAA,EAAMK,KAAAA,EAAMyH,KAAAA,MAG/BtD,EAAGe,KAAKoB,EAASY,MAAMY,OAASxB,EAAS7H,gBAkBjD0F,EAAG4D,eANH,SAAwBzB,EAAUD,GAGhCC,EAAS7H,QAAQuJ,OAAO3B,EAAO,GAC/BlC,EAAGe,KAAKoB,EAASY,MAAMY,OAASxB,EAAS7H,SAuB3C0F,EAAG8D,eAfH,SAAwB3B,GACtB/I,QAAQC,IAAI,kBAAmB8I,GAC/B,MAAMC,EAAa/E,EAASgF,KAAK,gBAC3BG,EAAQb,QAAQC,QACpBQ,EAAW,GAAGP,cAAc,sBAExB,eAAEkC,EAAF,OAAkBC,GAAW7B,EAASiB,OACxCW,GACFvB,EAAMyB,KAAK,WAAY,YAErBD,GACFxB,EAAM,GAAG0B,aAAa,SAAUF,IAapChE,EAAGmE,uBAPH,WACE,MAAMC,EAAWnB,MAAMC,KAAK7F,EAASgF,KAAK,oBACpCgC,EAAUD,EAASA,EAAS9B,OAAS,GACvC+B,GAAWA,EAAQC,gBACrBD,EAAQC,kBAMZtE,EAAGuE,QAzUH,WACEnL,QAAQkF,MAAM,sCAAuCqB,EAAW6E,SAChE7E,EAAW8E,OAAS,UAGpBzE,EAAGwE,QAAU,CACXE,GAAI/E,EAAW2B,SAASoD,GACxBC,cAAe,YACfzB,KA3BK,YAAc0B,GAAAA,CAAQ,EAAG,MA8BhCjF,EAAW2B,SAASuD,UAAW,EAC/BlF,EAAWmF,SAAU,EAErBjF,EAAIkF,YACDC,UAAU,CACTN,GAAI/E,EAAW2B,SAASoD,GACxBO,QAAQ,IAETC,SAASC,MAAK,SAAU5J,GACnBA,EAAK6J,QACPnF,EAAU1E,EAAK0E,QACfC,EAAgBY,GAAAA,CAAWvF,EAAK8J,MAChCrF,EAAGa,OAASC,GAAAA,CAAWZ,OAG1BiF,MAAK,WACJ,IAAK,IAAI3I,EAAI,EAAGA,EAAIwD,EAAGa,OAAOyB,OAAQ9F,IAAK,CACzC,MAAM8I,EAAQtF,EAAGa,OAAOrE,GAExB,GADAmD,EAAWQ,WAAamF,EAAMzJ,UACH,IAAhByJ,EAAMvC,OACXuC,EAAMvC,MAAMwC,SAAU,CACxB,MAAMC,EAASC,OAAOC,UAAUC,KAAK9K,KAAK,gBAC1CmF,EAAG4F,UAAUpJ,GAAKgJ,EAAOF,EAAMvC,MAAMwC,eAK5CM,OAAM,SAAU1L,GACff,QAAQgB,MAAMD,MAEf2L,SAAQ,WACP,GAAInG,EAAW2B,SAASyE,cAAe,CACrCpG,EAAW2B,SAASyE,eAAgB,EAEpC,MAAM5E,EAvDLrB,EACJsB,SACAC,YACC,oEAED2E,UAAU,KACVxE,WAAW,oBACXE,OAAOC,QAAQC,QAAQlD,SAASmD,cAAc,mBAiD3C/B,EAASgC,KAAKX,QA4RtBnB,EAAGW,OA7LH,WAEEhB,EAAWmF,SAAU,EAErB,MAAMvJ,EAAO,IAAKyE,EAAGe,MAErB,IAAK,IAAIvE,EAAI,EAAGA,EAAIwD,EAAGa,OAAOyB,OAAQ9F,IAAK,CACzC,MAAM8I,EAAQtF,EAAGa,OAAOrE,GACpB8I,EAAMvC,YAA4C,IAA5BxH,EAAK+J,EAAMvC,MAAMY,SAEpCsC,GAAAA,CAAOX,EAAMY,WAChBlG,EAAGwE,QAAQc,EAAMY,SAAWjD,MAAMkD,QAAQ5K,EAAK+J,EAAMvC,MAAMY,QACvDpI,EAAK+J,EAAMvC,MAAMY,OAAOyC,OACxB7K,EAAK+J,EAAMvC,MAAMY,QAGnBnH,IAAMyD,IACHgG,GAAAA,CAAOtG,EAAW2B,SAASqD,iBAC9B3E,EAAGwE,QAAQG,cAAgBhF,EAAW2B,SAASqD,cAC/C3E,EAAGwE,QAAQtB,KAAOD,MAAMkD,QAAQ5K,EAAK+J,EAAMvC,MAAMY,QAC7CpI,EAAK+J,EAAMvC,MAAMY,OAAOyC,OACxB7K,EAAK+J,EAAMvC,MAAMY,SAIN,WAAf2B,EAAMzJ,OACRN,EAAK+J,EAAMvC,MAAMY,OAASpI,EAAK+J,EAAMvC,MAAMY,OAAOF,KAC/C4C,GAASA,EAAK/C,SAMvB,MAAMgD,EAAerD,MAAMkD,QAAQnG,EAAGa,QAClCb,EAAGa,OAAO0F,QAAQjB,GAAyB,WAAfA,EAAMzJ,OAClC,GAEE2K,EAAUC,GAAAA,CACd,CACEzH,KAAMzD,GAERyE,EAAGwE,SAGCkC,EAA4B,MAARnL,GAAgB+K,EAAahE,OAAS,EAC1DqE,EAAyB,OAATpL,GAA0C,OAAzBqL,KAAKC,UAAUtL,GAnFxD,IAAgBuL,EAnDKpD,GAuIGgD,GApFRI,EAqFHN,EApFJzG,EAAM,CACXnB,IAAM,GAAEiB,EAAIkH,wBAAwBD,EAAQpC,aAC5CsC,QAAS,CAAE,oBAAgBC,GAC3B1L,KAAM2L,GAAAA,CAAeJ,EAAS,IACzB1G,EACH+G,gBAAiB,IAAIC,WAEvBC,OAAQ,UA8ENV,EACA9G,EAAIkF,YAAYuC,QAAQd,GAAStB,SACjCqC,QAAQC,OAAO,iBAGhBrC,KAAK1E,GACLoF,OA/IgBnC,EA+IE,SA9HZ,SAAUvJ,GACf,MAAMgH,EAAQrB,EACXsB,SACAC,YACC1B,EAAW2B,SAASmG,0BAClB,yBAEHjG,WACC,yBAA2B7B,EAAW2B,SAASG,cAEhDC,OAAOC,QAAQC,QAAQlD,SAASmD,cAAc,mBAEjD/B,EAASgC,KAAKX,GAEdnB,EAAGU,OAAOgD,GAAQvJ,EAAIoB,QAiHvBuK,SAAQ,KACF9F,EAAGe,KAAK2G,UACX1H,EAAGe,KAAO,IApNhBpB,EAAWmF,SAAU,MAyVvB9E,EAAG2H,OA/HH,SAAgBjE,EAAMkE,GACf5H,EAAGe,KAAK2C,KACX1D,EAAGe,KAAK2C,GAAQ,IAGlB,MAAMmE,EAAM7H,EAAGe,KAAK2C,GAAMoE,QAAQF,GAC9BC,GAAO,EACT7H,EAAGe,KAAK2C,GAAMG,OAAOgE,EAAK,GAE1B7H,EAAGe,KAAK2C,GAAMjI,KAAKmM,IAuHvB5H,EAAG+H,OAnHH,SAAgBrE,EAAMkE,GAKpB,OAJK5H,EAAGe,KAAK2C,KACX1D,EAAGe,KAAK2C,GAAQ,IAGX1D,EAAGe,KAAK2C,GAAMoE,QAAQF,IAAS,GA+GxC5H,EAAG4F,UAAY,GAEf5F,EAAGe,KAAO,GACVf,EAAGU,OAAS,GACZV,EAAGgB,SAAW,G,oTCtYhB,SAASgH,EACPrI,EACAsI,EACArI,EACAC,EACAqI,EACAC,GAEA,MAAMnI,EAAKpH,KACX,IAAIqH,EAAU,KAed,SAASmI,IACFzI,EAAW2B,SAAS2D,OAKbtF,EAAW2B,SAAS+G,sBAO9BJ,EAAOK,GAAG,WAAY,KAAM,CAC1B/O,SAAU,YANZ0O,EAAOK,GAAG,cAAe,KAAM,CAC7B/O,SAAU,aAPZoG,EAAW2B,SAASyE,eAAgB,EACpCkC,EAAOK,GAAG,cAAe,KAAM,CAC7B/O,SAAU,aA6IhB,SAASgP,IASP,OARA5I,EAAW6E,QAAU,CACnBE,GAAI/E,EAAW2B,SAASoD,GACxB8D,OAAQ,YACRtF,KAhCK,YAAc0B,GAAAA,CAAQ,EAAG,MAmChCjF,EAAW2B,SAASuD,UAAW,EAExBqD,EAAqBO,cAC1BN,EACAxI,EAAW6E,SAEVW,MAAM3E,IACLb,EAAW6E,QAAUhE,EACdX,EAAIkF,YACRC,UAAU,CACTN,GAAI/E,EAAW2B,SAASoD,GACxBO,QAAQ,IAETC,SAASC,MAAK,SAAU5J,GACnBA,EAAK6J,QACPnF,EAAU1E,EAAK0E,QACfD,EAAGa,OAAStF,EAAK8J,SAGpBF,MAAK,WACJ,IAAK,IAAI3I,EAAI,EAAGA,EAAIwD,EAAGa,OAAOyB,OAAQ9F,IAAK,CACzC,MAAM8I,EAAQtF,EAAGa,OAAOrE,GACxB,GAAI8I,EAAMvC,MAAMwC,SAAU,CACxB,MAAMC,EAASC,OAAOC,UAAUC,KAAK9K,KAAK,gBAC1CmF,EAAG4F,UAAUpJ,GAAKgJ,EAAOF,EAAMvC,MAAMwC,eAI1CM,OAAM,SAAU1L,GACff,QAAQgB,MAAMD,SAGnB0L,MAAMqC,EAAqBQ,gBAtMhC1I,EAAG4F,UAAY,GAGf5F,EAAGe,KAAO,GACVf,EAAGU,OAAS,GACZV,EAAGgB,SAAW,GACdhB,EAAG2I,aAAc,EAEjB3I,EAAG+B,YAAc,SAAUC,GACzB,OAAOpC,EAAKmC,YAAYC,IAgP1BhC,EAAGuE,QAhDH,WAKE,GAJAnL,QAAQkF,MAAM,qCAAsCqB,EAAW6E,SAE/D7E,EAAW8E,OAAS,SAEhB9E,EAAW6E,SAAW7E,EAAW6E,QAAQoE,YAC3C,GAAIjJ,EAAW6E,QAAQoE,YAAYlE,GACjC,IAA8C,IAA1C/E,EAAW6E,QAAQqE,mBAErBZ,EAAOK,GAAG,WAAY,KAAM,CAC1B/O,SAAU,gBAEP,SACL,MAAMuP,EAAoBnJ,EAAW6E,QAAQoE,YAAYlE,GACnDqE,EAAYpJ,MAAAA,GAAH,UAAGA,EAAY6E,eAAf,iBAAG,EAAqBwE,eAAxB,aAAG,EAA8BtE,GAChD,GAAIqE,EAAW,CACb,MAAMxN,EAAO,CACXmJ,GAAIoE,EACJG,QAAS,OACTL,YAAa,CACXlE,GAAIoE,GAENE,QAAS,CACPtE,GAAIqE,GAENG,YAAa,YACbC,QAAQ,EACRC,YAAa,WAIfvJ,EAAIwJ,gBAAgBC,QAAQ/N,GAAM2J,SAASY,SAAQ,IAC1CyC,YAMbN,EAAOK,GAAG,cAAe,KAAM,CAC7B/O,SAAU,iBAIdgP,KAMJvI,EAAGW,OA5KH,WACE,IAAI3B,EAAO,sBAEX,IAAK,IAAIxC,EAAI,EAAGA,EAAIwD,EAAGa,OAAOyB,OAAQ9F,IAAK,CACzC,MAAM8I,EAAQtF,EAAGa,OAAOrE,GAEpB8I,EAAMvC,YAA+C,IAA/B/C,EAAGe,KAAKuE,EAAMvC,MAAMY,SAEvCsC,GAAAA,CAAOX,EAAMiE,YAChB5J,EAAW6E,QAAQc,EAAMiE,UAAYtG,MAAMkD,QACzCnG,EAAGe,KAAKuE,EAAMvC,MAAMY,QAElB3D,EAAGe,KAAKuE,EAAMvC,MAAMY,OAAOyC,OAC3BpG,EAAGe,KAAKuE,EAAMvC,MAAMY,QAGrBsC,GAAAA,CAAOX,EAAMY,WAChBvG,EAAW6E,QAAQc,EAAMY,SAAWjD,MAAMkD,QACxCnG,EAAGe,KAAKuE,EAAMvC,MAAMY,QAElB3D,EAAGe,KAAKuE,EAAMvC,MAAMY,OAAOyC,OAC3BpG,EAAGe,KAAKuE,EAAMvC,MAAMY,QAGtBnH,IAAMyD,IACHgG,GAAAA,CAAOtG,EAAW2B,SAASkH,UAC9B7I,EAAW6E,QAAQgE,OAAS7I,EAAW2B,SAASkH,OAChD7I,EAAW6E,QAAQtB,KAAOD,MAAMkD,QAAQnG,EAAGe,KAAKuE,EAAMvC,MAAMY,QACxD3D,EAAGe,KAAKuE,EAAMvC,MAAMY,OAAOyC,OAC3BpG,EAAGe,KAAKuE,EAAMvC,MAAMY,SAIxB3D,EAAGe,KAAKuE,EAAMvC,MAAMY,SACtB3E,GAAQsG,EAAMvC,MAAMY,MAAQ,KAAO3D,EAAGe,KAAKuE,EAAMvC,MAAMY,OAAS,OA/ExE,IAAqBqF,EAAAA,EAsFjBvC,GAAAA,CACE,CACEzH,KAAMA,EACNwK,QAAS7J,EAAW2B,SAASkI,QAC7BC,WAAY9J,EAAW2B,SAASmI,YAElC9J,EAAW6E,SA3FfxE,EAAG2I,aAAc,EAEjB9I,EAAIkF,YACD2E,OAAOV,GACP9D,SAASC,MAAK,SAAU5J,UAChByE,EAAGU,OAAOiJ,iBAEjBhK,EAAW6E,QAAQwE,QAAU,CAC3BtE,GAAInJ,EAAKyN,QAAQtE,IAGnB/E,EAAW6E,QAAQoE,YAAc,CAC/BlE,GAAInJ,EAAKqN,YAAYlE,IAIvBwD,EAAqBO,cAAcN,EAAiBxI,EAAW6E,SAC5DW,MAAM3E,IACLb,EAAW6E,QAAUhE,KAEtBqF,MAAMqC,EAAqBQ,gBAG9B1I,EAAG2I,aAAc,EAGjBP,OAEDvC,OAAM,SAAU1L,GAAK,UAEpB6F,EAAG2I,aAAc,EAGI,OAAnB,UAAAxO,EAAIoB,YAAJ,eAAUqO,OACkB,mBAA5B,UAAAzP,EAAIoB,YAAJ,mBAAUsO,eAAV,eAAmBhO,OAEnB8D,EAAW2B,SAAS2D,QAAS,EAC7BmD,KAEAhP,QAAQgB,MAAMD,OAkLtB6F,EAAG2H,OArHH,SAAgBjE,EAAMkE,GACf5H,EAAGe,KAAK2C,KACX1D,EAAGe,KAAK2C,GAAQ,IAGlB,MAAMmE,EAAM7H,EAAGe,KAAK2C,GAAMoE,QAAQF,GAC9BC,GAAO,EACT7H,EAAGe,KAAK2C,GAAMG,OAAOgE,EAAK,GAE1B7H,EAAGe,KAAK2C,GAAMjI,KAAKmM,IA6GvB5H,EAAG+H,OAzGH,SAAgBrE,EAAMkE,GAKpB,OAJK5H,EAAGe,KAAK2C,KACX1D,EAAGe,KAAK2C,GAAQ,IAGX1D,EAAGe,KAAK2C,GAAMoE,QAAQF,IAAS,G,gJCrK1C,SAASkC,EACPnK,EACAsI,EACAnI,EACAD,EACAkK,EACA7B,EACAC,EACA6B,GAEA,MAAMhK,EAAKpH,KAQX,SAASqR,IACHtK,EAAW2B,SAAS2D,OACtBgD,EAAOK,GAAG,aAAc,KAAM,CAAE/O,SAAU,YAE1C0O,EAAOK,GAAG,cAAe,KAAM,CAAE/O,SAAU,YAI/C,SAAS2Q,IACPlK,EAAGe,KAAO,GACVf,EAAGmK,QAAU,KACbnK,EAAGoK,UAAY,KACfpK,EAAGgB,SAASC,eACZjB,EAAGgB,SAASE,gBAEZvB,EAAW6E,QAAU,GAErB7E,EAAW0K,gBAAiB,EAC5B1K,EAAWiB,MAAM,QAQnB,SAAS0J,EAAY5G,GACnB,OAAO,SAAUvJ,GACf6F,EAAGU,OAAOgD,GAAQvJ,EAAIoB,KAEtB,MAAM4F,EAAQrB,EACXsB,SACAC,YACC1B,EAAW2B,SAASmG,0BAClB,yBAEHjG,WAAW,oBACXE,OAAOC,QAAQC,QAAQlD,SAASmD,cAAc,mBAEjD/B,EAASgC,KAAKX,IAIlB,SAASoJ,IACP5K,EAAWmF,SAAU,EAjDvB9E,EAAGe,KAAO,GACVf,EAAGU,OAAS,GAoGZV,EAAGuE,QAhBH,WACEnL,QAAQkF,MAAM,wCAAyCqB,EAAW6E,SAClE7E,EAAW8E,OAAS,YAGpBsF,EAAGS,IAAI,CACLtC,EAAqBuC,WAAWtC,GAC7BhD,MAAK,IAAM/L,QAAQkF,MAAM,6BACzBuH,MAAMqC,EAAqBQ,gBAC9BR,EAAqBuC,WAAWT,GAC7B7E,MAAK,IAAM/L,QAAQkF,MAAM,4BACzBuH,MAAMqC,EAAqBQ,kBAC7BvD,MAAK,IAAOxF,EAAWmF,SAAU,KAKtC9E,EAAGW,OAlDH,WACEhB,EAAWmF,SAAU,EAEjBnF,EAAW6E,QAAQoE,aAAejJ,EAAW6E,QAAQoE,YAAYlE,GACnE7E,EAAIwJ,gBACDqB,aAAa,CACZhG,GAAI/E,EAAW6E,QAAQoE,YAAYlE,GACnCiG,KAAM3K,EAAGe,KAAK4J,OAEfzF,SAASC,MAAK,kBACNnF,EAAGU,OAAOC,OAEjB,MAAMQ,EAAQrB,EACXsB,SACAC,YACC1B,EAAW2B,SAASC,0BAClB,2BAEHC,WAAW,oBACXE,OAAOC,QAAQC,QAAQlD,SAASmD,cAAc,mBAEjD/B,EAASgC,KAAKX,MAEfgE,KAAK+E,GACL/E,KAAK8E,GACLpE,MAAMyE,EAAY,WAClBxE,QAAQyE,IAEXA,IACAD,EAAY,YAsBhBtK,EAAG4K,KA7EH,WACEV,IACAD,K,uLCxCJ,SAASY,EACPlL,EACAvC,EACA0N,EACA7C,EACApI,EACAqI,EACAC,GAGA,IAAI4C,EAA+B,KAGnC,SAASC,IACP,IAAIpC,EAAc,GACdqC,GAAO,EAEXpL,EAAIwJ,gBACD6B,IAAI,CACHxG,GAAI/E,EAAW6E,QAAQoE,YAAYlE,KAEpCQ,SAASC,MAAK,SAAU5J,GAGvB,OAFAqN,EAAcrN,EAEPsE,EAAIwJ,gBAAgB8B,YAAY,CACrCC,MAAOzL,EAAW6E,QAAQoE,YAAYlE,KACrCQ,YAEJC,MAAK,SAAU5J,GACd0P,EAAO1P,EAAK8J,KAAK/C,OAAS,EAEtBsG,EAAYO,QACdxJ,EAAW6E,QAAQoE,YAAYO,QAAS,EACxCjB,EAAqBO,cACnBN,EACAxI,EAAW6E,SAEVW,MAAM3E,IACLb,EAAW6E,QAAUhE,EACW,cAA5BoI,EAAYM,aACdjB,EAAOK,GAAG,gBAAiB,KAAM,CAAE/O,SAAU,eAGhDsM,MAAMqC,EAAqBQ,kBACrBE,EAAYyC,QAAUJ,KAE3BrC,EAAYyC,SACd1L,EAAW6E,QAAQoE,YAAYyC,OAASzC,EAAYyC,QAEtDnD,EAAqBO,cAAcN,EAAiB,IAC/CxI,EAAW6E,QACdqE,oBAAoB,IAEnB1D,MAAM3E,IACLb,EAAW6E,QAAUhE,EACrByH,EAAOK,GAAG,WAAY,KAAM,CAAE/O,SAAU,eAEzCsM,MAAMqC,EAAqBQ,oBAKjC7C,OAAM,SAAU1L,GACf,OAAQA,EAAIsK,QACV,KAAK,IACHwD,EAAOK,GAAG,cAAe,KAAM,CAAE/O,SAAU,YAC3C,MACF,KAAK,IACH0O,EAAOK,GAAG,gBAAiB,KAAM,CAAE/O,SAAU,YAC7C,MACF,QACEH,QAAQgB,MAAMD,OA9DbvB,KAqFR2L,QAdH,WACEnL,QAAQkF,MAAM,sCAAuCqB,EAAW6E,SAChE7E,EAAW8E,OAAS,UAGlB9E,EAAW6E,SACX7E,EAAW6E,QAAQoE,aACnBjJ,EAAW6E,QAAQoE,YAAYlE,KAG/BqG,EAA+BD,EAAUE,EAAgB,OAQ7D5N,EAAOkO,IAAI,YAtBX,WACER,EAAUS,OAAOR,M","sources":["webpack://motion-chat/./src/js/input-recorder/input-recorder.service.js","webpack://motion-chat/./src/js/media-viewer/media-viewer.controller.js","webpack://motion-chat/./src/js/offline/offline.controller.js","webpack://motion-chat/./src/js/online/online.controller.js","webpack://motion-chat/./src/js/unmanaged/unmanaged.controller.js","webpack://motion-chat/./src/js/waiting/waiting.controller.js"],"names":["InputRecorderService","constructor","this","initProps","conf","recordedBlobs","mediaStream","mediaRecorder","clear","initMediaDevices","console","log","initDeviceInProgress","location","protocol","host","includes","alert","constraints","audio","video","stream","navigator","mediaDevices","getUserMedia","err","error","startRecording","options","mimeType","MediaRecorder","e0","e2","onstop","handleStop","bind","ondataavailable","handleDataAvailable","start","stopRecording","stop","getAudioTracks","forEach","track","event","data","size","push","download","File","guid","type","lastModified","Date","getTime","d0","Math","random","d1","d2","d3","lut","i","toString","toHHMMSS","str","leadZero","sec_num","parseInt","hours","floor","minutes","seconds","MediaViewerController","$scope","$element","typeFromMimeType","width","boxWidth","height","boxHeight","adjustImgSize","loaded","img","ctrl","onload","calcImageInBox","adjustVideoSize","onloadedmetadata","videoWidth","videoHeight","$postLink","debug","$onDestroy","downloadMedia","a","document","createElement","url","source","href","target","body","appendChild","click","imageW","imageH","boxW","boxH","noZoom","boxedImageW","boxedImageH","OfflineController","$rootScope","$sce","api","$mdToast","$http","vm","fromKey","initialFields","typeField","optJsonFormData","showLeafArrayIndexes","includeNullValues","mapping","value","onSubmitSuccess","errors","submit","$emit","fields","_cloneDeep","form","userForm","$setPristine","$setUntouched","toast","simple","textContent","settings","formSubmitSuccessMessage","toastClass","header_shape","parent","angular","element","querySelector","show","trustAsHtml","string","initUploadButton","index","formItem","uploadItem","find","length","button","input","label","css","on","trigger","e","$apply","props","files","Array","from","maxSizeMB","config","some","file","sizeErrMessage","handleSizeError","map","name","title","removeFileItem","splice","setupFileInput","multipleUpload","accept","attr","setAttribute","makeFileOptionsVisible","fileOpts","lastOpt","scrollIntoView","$onInit","visitor","status","id","mapKeyOffline","_random","showMenu","loading","chatWebsite","getFields","online","$promise","then","count","rows","field","helpText","isHTML","RegExp","prototype","test","checkHTML","catch","finally","outOfInterval","hideDelay","_isNil","cmField","isArray","join","prop","uploadFields","filter","payLoad","_merge","isFormDataPayload","isJsonPayload","JSON","stringify","payload","baseUrl","headers","undefined","jsonToFormData","initialFormData","FormData","method","offline","Promise","reject","formSubmitFailureMessage","invalid","toggle","item","idx","indexOf","exists","OnlineController","$state","RemoteStorageService","STORAGE_VISITOR","goToIf","enableCustomerWriting","go","initVisitorForm","mapKey","updateStorage","onStorageError","disableItem","interaction","interactionStarted","chatInteractionId","messageId","message","channel","disposition","closed","closeReason","chatInteraction","abandon","variable","referer","customerIp","notify","chatMessageError","code","details","UnmanagedController","$q","STORAGE_LAYOUT","goToIfTime","reset","upColor","downColor","enableDownload","handleError","stopLoading","all","removeItem","customUpdate","note","skip","WaitingController","$interval","getInteractionIntervalHandle","getInteraction","open","get","getMessages","intid","UserId","$on","cancel"],"sourceRoot":""}
\ No newline at end of file
diff --git a/snippet/3.8.0/scripts/chat-e96e9bea.js b/snippet/3.8.0/scripts/chat-e96e9bea.js
similarity index 100%
rename from
rename to snippet/3.8.0/scripts/chat-e96e9bea.js
diff --git a/snippet/3.8.0/scripts/chat-e96e9bea.js.map b/snippet/3.8.0/scripts/chat-e96e9bea.js.map
similarity index 100%
rename from
rename to snippet/3.8.0/scripts/chat-e96e9bea.js.map
diff --git a/snippet/3.8.0/scripts/chat-fecd0807.js b/snippet/3.8.0/scripts/chat-fecd0807.js
similarity index 100%
rename from
rename to snippet/3.8.0/scripts/chat-fecd0807.js
diff --git a/snippet/3.8.0/scripts/chat-fecd0807.js.map b/snippet/3.8.0/scripts/chat-fecd0807.js.map
similarity index 100%
rename from
rename to snippet/3.8.0/scripts/chat-fecd0807.js.map
similarity index 96%
rename from snippet/3.5.0/scripts/vendor-ng-embed.js.map
rename to snippet/3.8.0/scripts/vendor-ng-embed.js.map
index eee3e316b5ba05ee745bdcd4826f85d802233170..5f22171018c7370dd661356460ef1d5786b972b8 100644 (file)
@@ -23,6 +23,6 @@
  * https://github.com/angular/material
  * @license MIT
  * v1.2.3
- */html,body{height:100%;position:relative}body{margin:0;padding:0}[tabindex="-1"]:focus{outline:none}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:normal;background-color:inherit;text-align:left;border:none;padding:0;margin:0}select,button,textarea,input{vertical-align:baseline}input[type=reset],input[type=submit],html input[type=button],button{cursor:pointer;-webkit-appearance:button}input[type=reset][disabled],input[type=submit][disabled],html input[type=button][disabled],button[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-decoration,input[type=search]::-webkit-search-cancel-button{-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(0.4, 0, 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(0.25, 0.8, 0.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(0.25, 0.8, 0.25, 1),border .9s cubic-bezier(0.25, 0.8, 0.25, 1),width .9s cubic-bezier(0.25, 0.8, 0.25, 1),height .9s cubic-bezier(0.25, 0.8, 0.25, 1),opacity .9s cubic-bezier(0.25, 0.8, 0.25, 1),transform .9s cubic-bezier(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0px)}@media(min-width: 960px){.md-padding{padding:16px}}html[dir=rtl],html[dir=ltr],body[dir=rtl],body[dir=ltr]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}html,body{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:default;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:-0.01em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-0.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:.01em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.01em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.02em}.md-button{letter-spacing:.01em}button,select,html,textarea,input{font-family:Roboto,"Helvetica Neue",sans-serif}select,button,textarea,input{font-size:100%}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}.md-panel-inner-wrapper{position:fixed}._md-panel-offscreen{left:-9999px}._md-panel-hidden{display:none}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:relative}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(0.4, 0, 1, 1)}.md-panel._md-panel-animate-scale-out,.md-panel._md-panel-animate-fade-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:fixed;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(0.4, 0, 1, 1)}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}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:transparent;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] .md-show-clear-button button{display:block;position:absolute;right:0;top:20px;width:30px;height:30px}md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:30px}[dir=rtl] md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:0;padding-left: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 md-input-container,md-autocomplete md-autocomplete-wrap input{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:none;background:transparent;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete .md-show-clear-button 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:transparent;margin:auto 5px}md-autocomplete .md-show-clear-button 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(0.25, 0.8, 0.25, 1)}md-autocomplete .md-show-clear-button button:focus{outline:none}md-autocomplete .md-show-clear-button button:focus:after{transform:scale(1);opacity:1}md-autocomplete .md-show-clear-button button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%, -50%, 0) scale(0.9)}md-autocomplete .md-show-clear-button button md-icon path{stroke-width:0}md-autocomplete .md-show-clear-button button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete .md-show-clear-button button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete .md-show-clear-button button.ng-leave{transition:transform .15s ease-out}md-autocomplete .md-show-clear-button 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 .md-autocomplete-suggestion:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container,.md-standard-list-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);z-index:100;height:100%}.md-virtual-repeat-container.md-autocomplete-suggestions-container .highlight,.md-standard-list-container.md-autocomplete-suggestions-container .highlight{font-weight:bold}.md-standard-list-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;overflow-y:auto;padding:0}.md-virtual-repeat-container.md-not-found,.md-standard-list-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions .md-autocomplete-suggestion{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 .md-autocomplete-suggestion:focus{outline:none}.md-autocomplete-suggestions .md-autocomplete-suggestion:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast: active){md-autocomplete,.md-autocomplete-suggestions{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 400ms}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(0.25, 0.8, 0.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(0.55, 0, 0.55, 0.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:none}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:2px;box-sizing:border-box;user-select:none;outline:none;border:0;padding:0 8px;margin:6px 8px;background:transparent;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(0.25, 0.8, 0.25, 1),background-color .4s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){min-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){line-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){font-size:13px}.md-button:focus{outline:none}.md-button:hover,.md-button:focus{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:none}.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-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(0.55, 0, 0.55, 0.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-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button.md-fab[disabled]{box-shadow:none}.md-button:not([disabled]).md-raised.md-focused,.md-button:not([disabled]).md-fab.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-raised:active,.md-button:not([disabled]).md-fab:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:inherit;background-clip:padding-box;overflow:hidden;-webkit-transform:translateZ(0)}.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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 0px 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0px 0px 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0px 2px 2px 0px}@media screen and (-ms-high-contrast: active){.md-button.md-raised,.md-button.md-fab{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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-icon>svg{height:inherit;width:inherit}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>img,md-card>md-card-header img,md-card md-card-title-media 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-card-actions{margin:8px}md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}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-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}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-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[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-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[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-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-inline-form md-checkbox{margin-top:14px;margin-bottom:auto}md-checkbox{box-sizing:border-box;display:inline-block;white-space:nowrap;cursor:pointer;outline:none;user-select:none;position:relative;min-width:18px;min-height:48px}.md-dense>md-checkbox:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) md-checkbox:not(.md-dense-disabled){min-height:36px}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-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:18px;height:18px;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:18px;height:18px;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:4px;top:0px;display:table;width:6px;height:12px;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:10.8px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox .md-container{top:auto;left:auto;right:auto;margin:3px;margin-top:21px}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-top:10px;margin-bottom:auto;margin-left:36px}[dir=rtl] md-checkbox .md-label{margin-left:0;margin-right:36px}md-checkbox .md-label:empty{margin-left:24px;margin-right:0}[dir=rtl] md-checkbox .md-label:empty{margin-left:0}[dir=rtl] md-checkbox .md-label:empty{margin-right:24px}md-input-container .md-checkbox-link-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;cursor:pointer;top:-21px;margin-left:18px;margin-right:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-left:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-right:18px}.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-name,.md-contact-suggestion .md-contact-email{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}md-chips{display:flex}.md-chips{display:flex;flex-wrap:wrap;flex-grow:1;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:13px;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:28px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:28px}.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:none}.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:transparent;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;min-height:18px;min-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;flex-grow:1;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{width:100%}.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=url],.md-chips .md-chip-input-container input[type=text]{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=url]:focus,.md-chips .md-chip-input-container input[type=text]:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:transparent;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:none}.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:transparent;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-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(0.25, 0.8, 0.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-label.md-calendar-label-clickable{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:normal}.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;vertical-align:middle}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:none;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:none;background:transparent;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:-16px;top:13.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label .md-input{float:none}._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-has-triangle-icon{padding-right:18px;margin-right:-18px}[dir=rtl] ._md-datepicker-has-triangle-icon{padding-right:0;padding-left:18px}[dir=rtl] ._md-datepicker-has-triangle-icon{margin-right:auto;margin-left:-18px}.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:transparent;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(0.25, 0.8, 0.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:transparent;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(0.5, 0, 0.25, 1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:none}.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;bottom:-2.5px;transform:translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform: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-value>label,.md-datepicker-open.md-input-has-placeholder>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(0.25, 0.8, 0.25, 1);transition-delay:.125s}.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:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 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(0.25, 0.8, 0.25, 1);transform:translate(0, 0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate(0, 100%) scale(0.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:none}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-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-dialog-actions{padding-right:16px}[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}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}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-divider,.layout-gt-xs-row:not(.layout-sm-column)>md-divider,.layout-sm-row:not(.layout-sm-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-sm-row:not(.layout-md-column)>md-divider,.layout-md-row:not(.layout-md-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-md-row:not(.layout-lg-column)>md-divider,.layout-lg-row:not(.layout-lg-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>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-trigger,md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item{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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all 200ms 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:-0.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-0.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(0.55, 0, 0.55, 0.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>figure,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile-footer{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-header,md-grid-list md-grid-tile md-grid-tile-footer{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-header h3,md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-footer h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer 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 0px;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 textarea,md-input-container input[type=text],md-input-container input[type=password],md-input-container input[type=datetime],md-input-container input[type=datetime-local],md-input-container input[type=date],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week],md-input-container input[type=number],md-input-container input[type=email],md-input-container input[type=url],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=color]{-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:30px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:30px;-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 label:not(.md-no-float):not(.md-container-ignore),md-input-container .md-placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;padding-right:0;z-index:1;transform:translate3d(0, 28px, 0) scale(1);transition:transform .4s cubic-bezier(0.25, 0.8, 0.25, 1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-left:0}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-right:2px}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{transform-origin:right top}md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-input-has-value .md-placeholder{padding-left:3px;padding-right:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-left:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-right:3px}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):not(.md-input-has-placeholder) input:not(:focus){color:transparent}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-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:none;padding-top:2px;padding-bottom:1px;padding-left:0;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;transition:border-color .4s cubic-bezier(0.25, 0.8, 0.25, 1);width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{padding-left:2px}[dir=rtl] md-input-container .md-input{padding-right:0}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:none}md-input-container .md-input:invalid{outline:none;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-message-animation,md-input-container .md-char-counter{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);opacity:1;margin-top:0;padding-top:8px}md-input-container .md-input-message-animation:not(.md-char-counter),md-input-container .md-char-counter:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter: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.ng-enter-prepare{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter:not(.ng-enter-active){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(0.75);transition:transform cubic-bezier(0.25, 0.8, 0.25, 1) .4s,width cubic-bezier(0.25, 0.8, 0.25, 1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container.md-input-focused .md-input,md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}md-input-container .md-input[disabled],[disabled] md-input-container .md-input{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(0.25, 0.8, 0.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:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder{width:calc(100% - 36px);padding:0}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:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left.md-icon-right>label .md-placeholder{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:transparent;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 0px 8px 0px}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:1.2em}md-list.md-dense:not(.md-dense-disabled) md-list-item,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner{min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item::before,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner::before{content:"";min-height:40px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner md-icon:first-child{width:20px;height:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:36px;margin-top:4px;margin-bottom:4px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px;margin-top:6px;margin-bottom:6px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container .md-secondary.md-button,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container .md-secondary.md-button{margin-top:4px;margin-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container md-checkbox:not(.md-dense-disabled),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container md-checkbox:not(.md-dense-disabled){min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) 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:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px;padding-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style::before{content:"";min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style::before{content:"";min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}md-list.md-dense:not(.md-dense-disabled) .md-subheader-inner{padding-top:12px;padding-bottom:12px}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:0px 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%}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner::before{content:"";min-height:inherit;visibility:hidden;display:inline-block}md-list-item.md-no-proxy,md-list-item .md-no-style{position:relative;padding:0px 16px;flex:1 1 auto}md-list-item.md-no-proxy.md-button,md-list-item .md-no-style.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-proxy.md-button,[dir=rtl] md-list-item .md-no-style.md-button{text-align:right}md-list-item.md-no-proxy.md-button>.md-ripple-container,md-list-item .md-no-style.md-button>.md-ripple-container{border-radius:0}md-list-item.md-no-proxy:focus,md-list-item .md-no-style:focus{outline:none}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::before,md-list-item .md-list-item-inner::before{content:"";min-height:48px;visibility:hidden;display:inline-block}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:first-child:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),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:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox,md-list-item 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-list-item-inner md-checkbox.md-secondary{align-self:center}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,md-list-item 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-list-item-inner md-checkbox.md-secondary .md-label{display:none}md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item .md-list-item-inner>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-checkbox,md-list-item .md-list-item-inner>md-checkbox{width:24px;min-height:40px;margin-left:0px;margin-right:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-left:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-right:0px}md-list-item .md-secondary-container,md-list-item .md-list-item-inner .md-secondary-container{display:flex;align-items:center;position:relative;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-left:0}md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type,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{margin-right:0}[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,[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{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-checkbox,md-list-item .md-list-item-inner .md-secondary-container md-checkbox{margin:0 6px;padding:0 8px;min-height:40px}md-list-item .md-secondary-container md-checkbox:last-child,md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{width:40px;margin-right:0}[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-switch,md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-secondary-container md-switch,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item>p,md-list-item>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item .md-list-item-inner>.md-list-item-inner>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:.01em;margin:0 0 0 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:.01em;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:.01em;margin:0 0 0 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,md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list-item.md-2-line>md-icon:first-child,md-list-item.md-2-line>.md-no-style>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-icon:first-child,md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px;max-height:calc(100vh - 10px);overflow:auto}.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(0.25, 0.8, 0.25, 1);transition-duration:200ms}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:200ms;transition-delay:100ms}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.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:32px}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-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px}md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:right}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:right;margin:0 8px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:left}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-item>.md-button,md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.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:normal;border-radius:0px;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:"▼";position:absolute;top:0px;speak:none;transform:rotate(270deg) scaleY(0.45) scaleX(0.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(0.45) scaleX(0.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:none;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(0.35, 0, 0.25, 1)}.md-button._md-nav-button:focus{outline:none}md-nav-ink-bar{background-color:#000;position:absolute;bottom:0;left:0;width:100%;height:2px;transform-origin:left top;will-change:transform;transition:transform .125s cubic-bezier(0.35, 0, 0.25, 1)}md-nav-ink-bar.ng-animate{transition:none}md-nav-extra-content{min-height:48px;padding-right:12px}@keyframes indeterminate-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block;transform:scale(1, 1)}[dir=rtl] md-progress-circular{transform:scale(-1, 1)}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 1568.63ms 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;transform:scale(1, 1)}[dir=rtl] md-progress-linear{transform:scale(-1, 1)}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:0px -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(0.39, 0.575, 0.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(0.3, 1)}100%{opacity:0;transform:translateX(-50%) scale(0, 1)}}@keyframes buffer{0%{opacity:1;background-position:0px -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(0.1);animation-timing-function:linear}36.6%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.334731432, 0.124819821, 0.785843996, 1)}69.15%{transform:scaleX(0.83);animation-timing-function:cubic-bezier(0.225732004, 0, 0.233648906, 1.3709798)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.1666666667%;animation-timing-function:linear}20%{left:-105.1666666667%;animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(0.302435, 0.38135197, 0.55, 0.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.205028172, 0.057050836, 0.57660995, 0.453970841)}19.15%{transform:scaleX(0.57);animation-timing-function:cubic-bezier(0.152312994, 0.196431957, 0.648373778, 1.00431535)}44.15%{transform:scaleX(0.91);animation-timing-function:cubic-bezier(0.25775882, -0.003163357, 0.211761916, 1.38178961)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(0.15, 0, 0.5150584, 0.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(0.3103299, 0.284057684, 0.8, 0.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(0.4, 0.627034903, 0.6, 0.902025796)}100%{left:117.3888888889%}}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(0.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:focus{outline:none}md-radio-group.md-focused.ng-not-empty .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group.md-focused.ng-empty>md-radio-button:first-child .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}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-radio-button,.layout-xs-row>md-radio-button{margin-bottom:0}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-radio-button,.layout-gt-xs-row:not(.layout-sm-column)>md-radio-button,.layout-sm-row:not(.layout-sm-column)>md-radio-button{margin-bottom:0}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-sm-row:not(.layout-md-column)>md-radio-button,.layout-md-row:not(.layout-md-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-md-row:not(.layout-lg-column)>md-radio-button,.layout-lg-row:not(.layout-lg-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button{margin-bottom:0}}.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 10px 2px 6px;box-sizing:border-box;margin-top:0;margin-bottom:0}.md-inline-form md-radio-group md-radio-button .md-label{top:4px}.md-inline-form md-radio-group md-radio-button .md-container{margin-top:2px}@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(0.25, 0.8, 0.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:not([placeholder]) .md-select-placeholder span:first-child{transform:translate(-2px, -22px) scale(0.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(0.25, 0.8, 0.25, 1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transition-delay:100ms}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:250ms}.md-inline-form md-select{margin-top:20px}md-input-container>md-select,.md-inline-form md-input-container>md-select{margin-top:0px}md-input-container>md-select{order:2}md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select.ng-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}md-select[required].ng-empty.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select.ng-required.ng-empty.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:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x;padding-bottom:2px;padding-top:1px;transform:translateY(1px)}md-select:focus{outline:none}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]):focus .md-select-value{border-bottom-style:solid;border-bottom-width:2px;padding-bottom:0px}md-input-container md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px}md-input-container md-select[disabled] .md-select-value{background-position:bottom -1px left 0}md-input-container md-select .md-select-value{min-height:26px;border-bottom-width:1px;padding-bottom:1px}md-input-container md-select .md-select-value.md-select-placeholder{padding-left:0;padding-right:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-left:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-right:0}.md-select-value{display:flex;align-items:center;padding-top:2px;padding-bottom:1px;padding-left:0;padding-right:2px;border-bottom-width:1px;border-bottom-style:solid;background-color:rgba(0,0,0,0);position:relative;box-sizing:content-box;min-width:88px;min-height:26px;margin-bottom:auto;-ms-flex-item-align:start;flex-grow:1}[dir=rtl] .md-select-value{padding-left:2px}[dir=rtl] .md-select-value{padding-right:0}.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:right;width:24px;transform:translateY(-2px);font-size:1.2rem}[dir=rtl] .md-select-value .md-select-icon{align-items:flex-start}[dir=rtl] .md-select-value .md-select-icon{text-align:left}.md-select-value .md-select-icon:after{display:block;content:"▼";position:relative;top:2px;right:-4px;left:auto;speak:none;font-size:13px;transform:scaleY(0.5)}[dir=rtl] .md-select-value .md-select-icon:after{right:auto}[dir=rtl] .md-select-value .md-select-icon:after{left:-4px}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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:none}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:18px;height:18px;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:18px;height:18px;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:4px;top:0px;display:table;width:6px;height:12px;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:10.8px;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(0.25, 0.8, 0.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.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.md-closed{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-closed.md-locked-open-add{position:static;display:flex;transform:translate3d(0%, 0, 0)}md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active){transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}.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(0.7)}30%{transform:scale(1)}100%{transform:scale(0.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(0.7)}50%{transform:scale(0.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(0.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:none;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(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0.7);transition:all .4s cubic-bezier(0.25, 0.8, 0.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(0.4) translate3d(0, 67.5px, 0);transition:all .3s cubic-bezier(0.35, 0, 0.25, 1)}md-slider .md-sign:after{position:absolute;content:"";left:0px;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(0.35, 0, 0.25, 1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0px}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:bold}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(0.7);opacity:0;transition:all .35s cubic-bezier(0.35, 0, 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(0.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:none}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-track-ticks,md-slider:not([md-discrete]) .md-sign{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(0.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(0.35, 0, 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(0.35, 0, 0.25, 1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(0.35, 0, 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(0.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(0.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:bold}md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete] .md-focused .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(0.25, 0.8, 0.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:0px 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0px 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 0 0 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-swipe-left],[md-swipe-right]{touch-action:pan-y}[md-swipe-up],[md-swipe-down]{touch-action:pan-x}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:none;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:0px;margin-left:8px}md-switch.md-inverted .md-container{margin-right:initial;margin-left:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-right:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-left:initial}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}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:none;height:20px;width:20px;border-radius:50%;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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-container,md-switch:not(.md-dragging) .md-thumb{transition:all .08s linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:.05s}@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:translate(0, 0)}md-tabs-wrapper md-prev-button,md-tabs-wrapper md-next-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(0.35, 0, 0.25, 1)}md-tabs-wrapper md-prev-button:focus,md-tabs-wrapper md-next-button:focus{outline:none}md-tabs-wrapper md-prev-button.md-disabled,md-tabs-wrapper md-next-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-prev-button.ng-leave,md-tabs-wrapper md-next-button.ng-leave{transition:none}md-tabs-wrapper md-prev-button md-icon,md-tabs-wrapper md-next-button md-icon{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}[dir=rtl] md-tabs-wrapper md-prev-button,[dir=rtl] md-tabs-wrapper md-next-button{transform:rotateY(180deg) translateY(-50%)}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:translate(-50%, -50%) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;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:flex;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);position:absolute;left:0;transform:translate(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;justify-content:center}md-pagination-wrapper md-tab-item{min-width:72px}@media(min-width: 600px){md-pagination-wrapper md-tab-item{min-width:160px}}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:flex;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);overflow:auto;transform:translate(0, 0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.ng-leave,md-tab-content.md-no-transition{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;visibility:hidden}[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;visibility:hidden}[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{flex:1 0 100%;min-width:0}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 .125s cubic-bezier(0.35, 0, 0.25, 1),right .25s cubic-bezier(0.35, 0, 0.25, 1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(0.35, 0, 0.25, 1),right .125s cubic-bezier(0.35, 0, 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;transition:background-color .35s cubic-bezier(0.35, 0, 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,.md-tab:focus{box-shadow:none;outline:none}.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,md-toolbar+md-dialog-content md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 8px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-toast .md-toast-content{display:flex;flex-direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 16px;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(0deg);transition:all .4s cubic-bezier(0.25, 0.8, 0.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(0.55, 0, 0.55, 0.2)}md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content,md-toast.md-swipedown .md-toast-content{transition:all .4s cubic-bezier(0.25, 0.8, 0.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:8px}[dir=rtl] md-toast .md-button{margin-right:8px}[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(0.35, 0, 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 *:before,md-toolbar *:after{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-checkbox{margin:inherit}.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(0.35, 0, 0.25, 1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.ng-animate,.md-toolbar-tools .md-button.md-icon-button md-icon.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{display:inline-block;pointer-events:none;border-radius:4px;overflow:hidden;opacity:0;font-weight:500;font-size:14px;white-space:nowrap;text-overflow:ellipsis;height:32px;line-height:32px;padding-right:16px;padding-left:16px}.md-tooltip.md-origin-top{transform-origin:center bottom;margin-top:-24px}.md-tooltip.md-origin-right{transform-origin:left center;margin-left:24px}.md-tooltip.md-origin-bottom{transform-origin:center top;margin-top:24px}.md-tooltip.md-origin-left{transform-origin:right center;margin-left:-24px}@media(min-width: 960px){.md-tooltip{font-size:10px;height:22px;line-height:22px;padding-right:8px;padding-left:8px}.md-tooltip.md-origin-top{margin-top:-14px}.md-tooltip.md-origin-right{margin-left:14px}.md-tooltip.md-origin-bottom{margin-top:14px}.md-tooltip.md-origin-left{margin-left:-14px}}.md-tooltip.md-show-add{transform:scale(0)}.md-tooltip.md-show{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:150ms;transform:scale(1);opacity:.9}.md-tooltip.md-hide{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transform:scale(0);opacity:0}.md-truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.md-truncate.md-clip{text-overflow:clip}.md-truncate.flex{width:0}.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:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0px 1px 5px 0px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0px 1px 8px 0px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 5px 8px 0px rgba(0,0,0,.14),0px 1px 14px 0px rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0px 4px 5px -2px rgba(0,0,0,.2),0px 7px 10px 1px rgba(0,0,0,.14),0px 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0px 5px 6px -3px rgba(0,0,0,.2),0px 9px 12px 1px rgba(0,0,0,.14),0px 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0px 6px 6px -3px rgba(0,0,0,.2),0px 10px 14px 1px rgba(0,0,0,.14),0px 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0px 6px 7px -4px rgba(0,0,0,.2),0px 11px 15px 1px rgba(0,0,0,.14),0px 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0px 7px 9px -4px rgba(0,0,0,.2),0px 14px 21px 2px rgba(0,0,0,.14),0px 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0px 8px 9px -5px rgba(0,0,0,.2),0px 15px 22px 2px rgba(0,0,0,.14),0px 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0px 8px 10px -5px rgba(0,0,0,.2),0px 16px 24px 2px rgba(0,0,0,.14),0px 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0px 8px 11px -5px rgba(0,0,0,.2),0px 17px 26px 2px rgba(0,0,0,.14),0px 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0px 9px 11px -5px rgba(0,0,0,.2),0px 18px 28px 2px rgba(0,0,0,.14),0px 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0px 9px 12px -6px rgba(0,0,0,.2),0px 19px 29px 2px rgba(0,0,0,.14),0px 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 20px 31px 3px rgba(0,0,0,.14),0px 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 21px 33px 3px rgba(0,0,0,.14),0px 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0px 10px 14px -6px rgba(0,0,0,.2),0px 22px 35px 3px rgba(0,0,0,.14),0px 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0px 11px 14px -7px rgba(0,0,0,.2),0px 23px 36px 3px rgba(0,0,0,.14),0px 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 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],[ng-cloak],[data-ng-cloak],[x-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}.offset-0,.flex-offset-0,.layout-margin .flex-offset-0,.layout-margin .offset-0{margin-left:0}[dir=rtl] .offset-0,[dir=rtl] .flex-offset-0,[dir=rtl] .layout-margin .flex-offset-0,[dir=rtl] .layout-margin .offset-0{margin-left:auto;margin-right:0}.offset-5,.flex-offset-5,.layout-margin .flex-offset-5,.layout-margin .offset-5{margin-left:5%}[dir=rtl] .offset-5,[dir=rtl] .flex-offset-5,[dir=rtl] .layout-margin .flex-offset-5,[dir=rtl] .layout-margin .offset-5{margin-left:auto;margin-right:5%}.offset-10,.flex-offset-10,.layout-margin .flex-offset-10,.layout-margin .offset-10{margin-left:10%}[dir=rtl] .offset-10,[dir=rtl] .flex-offset-10,[dir=rtl] .layout-margin .flex-offset-10,[dir=rtl] .layout-margin .offset-10{margin-left:auto;margin-right:10%}.offset-15,.flex-offset-15,.layout-margin .flex-offset-15,.layout-margin .offset-15{margin-left:15%}[dir=rtl] .offset-15,[dir=rtl] .flex-offset-15,[dir=rtl] .layout-margin .flex-offset-15,[dir=rtl] .layout-margin .offset-15{margin-left:auto;margin-right:15%}.offset-20,.flex-offset-20,.layout-margin .flex-offset-20,.layout-margin .offset-20{margin-left:20%}[dir=rtl] .offset-20,[dir=rtl] .flex-offset-20,[dir=rtl] .layout-margin .flex-offset-20,[dir=rtl] .layout-margin .offset-20{margin-left:auto;margin-right:20%}.offset-25,.flex-offset-25,.layout-margin .flex-offset-25,.layout-margin .offset-25{margin-left:25%}[dir=rtl] .offset-25,[dir=rtl] .flex-offset-25,[dir=rtl] .layout-margin .flex-offset-25,[dir=rtl] .layout-margin .offset-25{margin-left:auto;margin-right:25%}.offset-30,.flex-offset-30,.layout-margin .flex-offset-30,.layout-margin .offset-30{margin-left:30%}[dir=rtl] .offset-30,[dir=rtl] .flex-offset-30,[dir=rtl] .layout-margin .flex-offset-30,[dir=rtl] .layout-margin .offset-30{margin-left:auto;margin-right:30%}.offset-35,.flex-offset-35,.layout-margin .flex-offset-35,.layout-margin .offset-35{margin-left:35%}[dir=rtl] .offset-35,[dir=rtl] .flex-offset-35,[dir=rtl] .layout-margin .flex-offset-35,[dir=rtl] .layout-margin .offset-35{margin-left:auto;margin-right:35%}.offset-40,.flex-offset-40,.layout-margin .flex-offset-40,.layout-margin .offset-40{margin-left:40%}[dir=rtl] .offset-40,[dir=rtl] .flex-offset-40,[dir=rtl] .layout-margin .flex-offset-40,[dir=rtl] .layout-margin .offset-40{margin-left:auto;margin-right:40%}.offset-45,.flex-offset-45,.layout-margin .flex-offset-45,.layout-margin .offset-45{margin-left:45%}[dir=rtl] .offset-45,[dir=rtl] .flex-offset-45,[dir=rtl] .layout-margin .flex-offset-45,[dir=rtl] .layout-margin .offset-45{margin-left:auto;margin-right:45%}.offset-50,.flex-offset-50,.layout-margin .flex-offset-50,.layout-margin .offset-50{margin-left:50%}[dir=rtl] .offset-50,[dir=rtl] .flex-offset-50,[dir=rtl] .layout-margin .flex-offset-50,[dir=rtl] .layout-margin .offset-50{margin-left:auto;margin-right:50%}.offset-55,.flex-offset-55,.layout-margin .flex-offset-55,.layout-margin .offset-55{margin-left:55%}[dir=rtl] .offset-55,[dir=rtl] .flex-offset-55,[dir=rtl] .layout-margin .flex-offset-55,[dir=rtl] .layout-margin .offset-55{margin-left:auto;margin-right:55%}.offset-60,.flex-offset-60,.layout-margin .flex-offset-60,.layout-margin .offset-60{margin-left:60%}[dir=rtl] .offset-60,[dir=rtl] .flex-offset-60,[dir=rtl] .layout-margin .flex-offset-60,[dir=rtl] .layout-margin .offset-60{margin-left:auto;margin-right:60%}.offset-65,.flex-offset-65,.layout-margin .flex-offset-65,.layout-margin .offset-65{margin-left:65%}[dir=rtl] .offset-65,[dir=rtl] .flex-offset-65,[dir=rtl] .layout-margin .flex-offset-65,[dir=rtl] .layout-margin .offset-65{margin-left:auto;margin-right:65%}.offset-70,.flex-offset-70,.layout-margin .flex-offset-70,.layout-margin .offset-70{margin-left:70%}[dir=rtl] .offset-70,[dir=rtl] .flex-offset-70,[dir=rtl] .layout-margin .flex-offset-70,[dir=rtl] .layout-margin .offset-70{margin-left:auto;margin-right:70%}.offset-75,.flex-offset-75,.layout-margin .flex-offset-75,.layout-margin .offset-75{margin-left:75%}[dir=rtl] .offset-75,[dir=rtl] .flex-offset-75,[dir=rtl] .layout-margin .flex-offset-75,[dir=rtl] .layout-margin .offset-75{margin-left:auto;margin-right:75%}.offset-80,.flex-offset-80,.layout-margin .flex-offset-80,.layout-margin .offset-80{margin-left:80%}[dir=rtl] .offset-80,[dir=rtl] .flex-offset-80,[dir=rtl] .layout-margin .flex-offset-80,[dir=rtl] .layout-margin .offset-80{margin-left:auto;margin-right:80%}.offset-85,.flex-offset-85,.layout-margin .flex-offset-85,.layout-margin .offset-85{margin-left:85%}[dir=rtl] .offset-85,[dir=rtl] .flex-offset-85,[dir=rtl] .layout-margin .flex-offset-85,[dir=rtl] .layout-margin .offset-85{margin-left:auto;margin-right:85%}.offset-90,.flex-offset-90,.layout-margin .flex-offset-90,.layout-margin .offset-90{margin-left:90%}[dir=rtl] .offset-90,[dir=rtl] .flex-offset-90,[dir=rtl] .layout-margin .flex-offset-90,[dir=rtl] .layout-margin .offset-90{margin-left:auto;margin-right:90%}.offset-95,.flex-offset-95,.layout-margin .flex-offset-95,.layout-margin .offset-95{margin-left:95%}[dir=rtl] .offset-95,[dir=rtl] .flex-offset-95,[dir=rtl] .layout-margin .flex-offset-95,[dir=rtl] .layout-margin .offset-95{margin-left:auto;margin-right:95%}.offset-33,.flex-offset-33,.layout-margin .flex-offset-33,.layout-margin .offset-33{margin-left:33.3333333333%}.offset-66,.flex-offset-66,.layout-margin .flex-offset-66,.layout-margin .offset-66{margin-left:66.6666666667%}[dir=rtl] .offset-66,[dir=rtl] .flex-offset-66,[dir=rtl] .layout-margin .flex-offset-66,[dir=rtl] .layout-margin .offset-66{margin-left:auto;margin-right:66.6666666667%}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-start,.layout-align-center-center,.layout-align-center-end,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-start,.layout-align-end-center,.layout-align-end-end,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-start,.layout-align-space-around-end,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-start,.layout-align-space-between-end,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-start-start,.layout-align-center-start,.layout-align-end-start,.layout-align-space-between-start,.layout-align-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-start-center,.layout-align-center-center,.layout-align-end-center,.layout-align-space-between-center,.layout-align-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-start-center>*,.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-between-center>*,.layout-align-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-start-end,.layout-align-center-end,.layout-align-end-end,.layout-align-space-between-end,.layout-align-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-start-stretch,.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-between-stretch,.layout-align-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 100%;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}.flex-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.flex-66{flex:1 1 100%;max-width:66.66%;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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 100%;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-md,.layout-padding>*,.layout-padding-gt-sm>*,.layout-padding-md>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding-gt-lg>*,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg,.layout-padding>.flex-lg,.layout-padding>.flex-gt-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-md,.layout-margin>*,.layout-margin-gt-sm>*,.layout-margin-md>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin-gt-lg>*,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg,.layout-margin>.flex-gt-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}.offset-xs-0,.flex-offset-xs-0,.layout-margin .flex-offset-xs-0,.layout-margin .offset-xs-0{margin-left:0}[dir=rtl] .offset-xs-0,[dir=rtl] .flex-offset-xs-0,[dir=rtl] .layout-margin .flex-offset-xs-0,[dir=rtl] .layout-margin .offset-xs-0{margin-left:auto;margin-right:0}.offset-xs-5,.flex-offset-xs-5,.layout-margin .flex-offset-xs-5,.layout-margin .offset-xs-5{margin-left:5%}[dir=rtl] .offset-xs-5,[dir=rtl] .flex-offset-xs-5,[dir=rtl] .layout-margin .flex-offset-xs-5,[dir=rtl] .layout-margin .offset-xs-5{margin-left:auto;margin-right:5%}.offset-xs-10,.flex-offset-xs-10,.layout-margin .flex-offset-xs-10,.layout-margin .offset-xs-10{margin-left:10%}[dir=rtl] .offset-xs-10,[dir=rtl] .flex-offset-xs-10,[dir=rtl] .layout-margin .flex-offset-xs-10,[dir=rtl] .layout-margin .offset-xs-10{margin-left:auto;margin-right:10%}.offset-xs-15,.flex-offset-xs-15,.layout-margin .flex-offset-xs-15,.layout-margin .offset-xs-15{margin-left:15%}[dir=rtl] .offset-xs-15,[dir=rtl] .flex-offset-xs-15,[dir=rtl] .layout-margin .flex-offset-xs-15,[dir=rtl] .layout-margin .offset-xs-15{margin-left:auto;margin-right:15%}.offset-xs-20,.flex-offset-xs-20,.layout-margin .flex-offset-xs-20,.layout-margin .offset-xs-20{margin-left:20%}[dir=rtl] .offset-xs-20,[dir=rtl] .flex-offset-xs-20,[dir=rtl] .layout-margin .flex-offset-xs-20,[dir=rtl] .layout-margin .offset-xs-20{margin-left:auto;margin-right:20%}.offset-xs-25,.flex-offset-xs-25,.layout-margin .flex-offset-xs-25,.layout-margin .offset-xs-25{margin-left:25%}[dir=rtl] .offset-xs-25,[dir=rtl] .flex-offset-xs-25,[dir=rtl] .layout-margin .flex-offset-xs-25,[dir=rtl] .layout-margin .offset-xs-25{margin-left:auto;margin-right:25%}.offset-xs-30,.flex-offset-xs-30,.layout-margin .flex-offset-xs-30,.layout-margin .offset-xs-30{margin-left:30%}[dir=rtl] .offset-xs-30,[dir=rtl] .flex-offset-xs-30,[dir=rtl] .layout-margin .flex-offset-xs-30,[dir=rtl] .layout-margin .offset-xs-30{margin-left:auto;margin-right:30%}.offset-xs-35,.flex-offset-xs-35,.layout-margin .flex-offset-xs-35,.layout-margin .offset-xs-35{margin-left:35%}[dir=rtl] .offset-xs-35,[dir=rtl] .flex-offset-xs-35,[dir=rtl] .layout-margin .flex-offset-xs-35,[dir=rtl] .layout-margin .offset-xs-35{margin-left:auto;margin-right:35%}.offset-xs-40,.flex-offset-xs-40,.layout-margin .flex-offset-xs-40,.layout-margin .offset-xs-40{margin-left:40%}[dir=rtl] .offset-xs-40,[dir=rtl] .flex-offset-xs-40,[dir=rtl] .layout-margin .flex-offset-xs-40,[dir=rtl] .layout-margin .offset-xs-40{margin-left:auto;margin-right:40%}.offset-xs-45,.flex-offset-xs-45,.layout-margin .flex-offset-xs-45,.layout-margin .offset-xs-45{margin-left:45%}[dir=rtl] .offset-xs-45,[dir=rtl] .flex-offset-xs-45,[dir=rtl] .layout-margin .flex-offset-xs-45,[dir=rtl] .layout-margin .offset-xs-45{margin-left:auto;margin-right:45%}.offset-xs-50,.flex-offset-xs-50,.layout-margin .flex-offset-xs-50,.layout-margin .offset-xs-50{margin-left:50%}[dir=rtl] .offset-xs-50,[dir=rtl] .flex-offset-xs-50,[dir=rtl] .layout-margin .flex-offset-xs-50,[dir=rtl] .layout-margin .offset-xs-50{margin-left:auto;margin-right:50%}.offset-xs-55,.flex-offset-xs-55,.layout-margin .flex-offset-xs-55,.layout-margin .offset-xs-55{margin-left:55%}[dir=rtl] .offset-xs-55,[dir=rtl] .flex-offset-xs-55,[dir=rtl] .layout-margin .flex-offset-xs-55,[dir=rtl] .layout-margin .offset-xs-55{margin-left:auto;margin-right:55%}.offset-xs-60,.flex-offset-xs-60,.layout-margin .flex-offset-xs-60,.layout-margin .offset-xs-60{margin-left:60%}[dir=rtl] .offset-xs-60,[dir=rtl] .flex-offset-xs-60,[dir=rtl] .layout-margin .flex-offset-xs-60,[dir=rtl] .layout-margin .offset-xs-60{margin-left:auto;margin-right:60%}.offset-xs-65,.flex-offset-xs-65,.layout-margin .flex-offset-xs-65,.layout-margin .offset-xs-65{margin-left:65%}[dir=rtl] .offset-xs-65,[dir=rtl] .flex-offset-xs-65,[dir=rtl] .layout-margin .flex-offset-xs-65,[dir=rtl] .layout-margin .offset-xs-65{margin-left:auto;margin-right:65%}.offset-xs-70,.flex-offset-xs-70,.layout-margin .flex-offset-xs-70,.layout-margin .offset-xs-70{margin-left:70%}[dir=rtl] .offset-xs-70,[dir=rtl] .flex-offset-xs-70,[dir=rtl] .layout-margin .flex-offset-xs-70,[dir=rtl] .layout-margin .offset-xs-70{margin-left:auto;margin-right:70%}.offset-xs-75,.flex-offset-xs-75,.layout-margin .flex-offset-xs-75,.layout-margin .offset-xs-75{margin-left:75%}[dir=rtl] .offset-xs-75,[dir=rtl] .flex-offset-xs-75,[dir=rtl] .layout-margin .flex-offset-xs-75,[dir=rtl] .layout-margin .offset-xs-75{margin-left:auto;margin-right:75%}.offset-xs-80,.flex-offset-xs-80,.layout-margin .flex-offset-xs-80,.layout-margin .offset-xs-80{margin-left:80%}[dir=rtl] .offset-xs-80,[dir=rtl] .flex-offset-xs-80,[dir=rtl] .layout-margin .flex-offset-xs-80,[dir=rtl] .layout-margin .offset-xs-80{margin-left:auto;margin-right:80%}.offset-xs-85,.flex-offset-xs-85,.layout-margin .flex-offset-xs-85,.layout-margin .offset-xs-85{margin-left:85%}[dir=rtl] .offset-xs-85,[dir=rtl] .flex-offset-xs-85,[dir=rtl] .layout-margin .flex-offset-xs-85,[dir=rtl] .layout-margin .offset-xs-85{margin-left:auto;margin-right:85%}.offset-xs-90,.flex-offset-xs-90,.layout-margin .flex-offset-xs-90,.layout-margin .offset-xs-90{margin-left:90%}[dir=rtl] .offset-xs-90,[dir=rtl] .flex-offset-xs-90,[dir=rtl] .layout-margin .flex-offset-xs-90,[dir=rtl] .layout-margin .offset-xs-90{margin-left:auto;margin-right:90%}.offset-xs-95,.flex-offset-xs-95,.layout-margin .flex-offset-xs-95,.layout-margin .offset-xs-95{margin-left:95%}[dir=rtl] .offset-xs-95,[dir=rtl] .flex-offset-xs-95,[dir=rtl] .layout-margin .flex-offset-xs-95,[dir=rtl] .layout-margin .offset-xs-95{margin-left:auto;margin-right:95%}.offset-xs-33,.flex-offset-xs-33,.layout-margin .flex-offset-xs-33,.layout-margin .offset-xs-33{margin-left:33.3333333333%}.offset-xs-66,.flex-offset-xs-66,.layout-margin .flex-offset-xs-66,.layout-margin .offset-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-xs-66,[dir=rtl] .flex-offset-xs-66,[dir=rtl] .layout-margin .flex-offset-xs-66,[dir=rtl] .layout-margin .offset-xs-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-start,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-start,.layout-align-xs-end-center,.layout-align-xs-end-end,.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-start,.layout-align-xs-space-around-end,.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-start,.layout-align-xs-space-between-end,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-start-start,.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-between-start,.layout-align-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-start-center,.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-between-center,.layout-align-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-start-center>*,.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-start-end,.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-between-end,.layout-align-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-start-stretch,.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 100%;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}.offset-gt-xs-0,.flex-offset-gt-xs-0,.layout-margin .flex-offset-gt-xs-0,.layout-margin .offset-gt-xs-0{margin-left:0}[dir=rtl] .offset-gt-xs-0,[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .offset-gt-xs-0{margin-left:auto;margin-right:0}.offset-gt-xs-5,.flex-offset-gt-xs-5,.layout-margin .flex-offset-gt-xs-5,.layout-margin .offset-gt-xs-5{margin-left:5%}[dir=rtl] .offset-gt-xs-5,[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .offset-gt-xs-5{margin-left:auto;margin-right:5%}.offset-gt-xs-10,.flex-offset-gt-xs-10,.layout-margin .flex-offset-gt-xs-10,.layout-margin .offset-gt-xs-10{margin-left:10%}[dir=rtl] .offset-gt-xs-10,[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .offset-gt-xs-10{margin-left:auto;margin-right:10%}.offset-gt-xs-15,.flex-offset-gt-xs-15,.layout-margin .flex-offset-gt-xs-15,.layout-margin .offset-gt-xs-15{margin-left:15%}[dir=rtl] .offset-gt-xs-15,[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .offset-gt-xs-15{margin-left:auto;margin-right:15%}.offset-gt-xs-20,.flex-offset-gt-xs-20,.layout-margin .flex-offset-gt-xs-20,.layout-margin .offset-gt-xs-20{margin-left:20%}[dir=rtl] .offset-gt-xs-20,[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .offset-gt-xs-20{margin-left:auto;margin-right:20%}.offset-gt-xs-25,.flex-offset-gt-xs-25,.layout-margin .flex-offset-gt-xs-25,.layout-margin .offset-gt-xs-25{margin-left:25%}[dir=rtl] .offset-gt-xs-25,[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .offset-gt-xs-25{margin-left:auto;margin-right:25%}.offset-gt-xs-30,.flex-offset-gt-xs-30,.layout-margin .flex-offset-gt-xs-30,.layout-margin .offset-gt-xs-30{margin-left:30%}[dir=rtl] .offset-gt-xs-30,[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .offset-gt-xs-30{margin-left:auto;margin-right:30%}.offset-gt-xs-35,.flex-offset-gt-xs-35,.layout-margin .flex-offset-gt-xs-35,.layout-margin .offset-gt-xs-35{margin-left:35%}[dir=rtl] .offset-gt-xs-35,[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .offset-gt-xs-35{margin-left:auto;margin-right:35%}.offset-gt-xs-40,.flex-offset-gt-xs-40,.layout-margin .flex-offset-gt-xs-40,.layout-margin .offset-gt-xs-40{margin-left:40%}[dir=rtl] .offset-gt-xs-40,[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .offset-gt-xs-40{margin-left:auto;margin-right:40%}.offset-gt-xs-45,.flex-offset-gt-xs-45,.layout-margin .flex-offset-gt-xs-45,.layout-margin .offset-gt-xs-45{margin-left:45%}[dir=rtl] .offset-gt-xs-45,[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .offset-gt-xs-45{margin-left:auto;margin-right:45%}.offset-gt-xs-50,.flex-offset-gt-xs-50,.layout-margin .flex-offset-gt-xs-50,.layout-margin .offset-gt-xs-50{margin-left:50%}[dir=rtl] .offset-gt-xs-50,[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .offset-gt-xs-50{margin-left:auto;margin-right:50%}.offset-gt-xs-55,.flex-offset-gt-xs-55,.layout-margin .flex-offset-gt-xs-55,.layout-margin .offset-gt-xs-55{margin-left:55%}[dir=rtl] .offset-gt-xs-55,[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .offset-gt-xs-55{margin-left:auto;margin-right:55%}.offset-gt-xs-60,.flex-offset-gt-xs-60,.layout-margin .flex-offset-gt-xs-60,.layout-margin .offset-gt-xs-60{margin-left:60%}[dir=rtl] .offset-gt-xs-60,[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .offset-gt-xs-60{margin-left:auto;margin-right:60%}.offset-gt-xs-65,.flex-offset-gt-xs-65,.layout-margin .flex-offset-gt-xs-65,.layout-margin .offset-gt-xs-65{margin-left:65%}[dir=rtl] .offset-gt-xs-65,[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .offset-gt-xs-65{margin-left:auto;margin-right:65%}.offset-gt-xs-70,.flex-offset-gt-xs-70,.layout-margin .flex-offset-gt-xs-70,.layout-margin .offset-gt-xs-70{margin-left:70%}[dir=rtl] .offset-gt-xs-70,[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .offset-gt-xs-70{margin-left:auto;margin-right:70%}.offset-gt-xs-75,.flex-offset-gt-xs-75,.layout-margin .flex-offset-gt-xs-75,.layout-margin .offset-gt-xs-75{margin-left:75%}[dir=rtl] .offset-gt-xs-75,[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .offset-gt-xs-75{margin-left:auto;margin-right:75%}.offset-gt-xs-80,.flex-offset-gt-xs-80,.layout-margin .flex-offset-gt-xs-80,.layout-margin .offset-gt-xs-80{margin-left:80%}[dir=rtl] .offset-gt-xs-80,[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .offset-gt-xs-80{margin-left:auto;margin-right:80%}.offset-gt-xs-85,.flex-offset-gt-xs-85,.layout-margin .flex-offset-gt-xs-85,.layout-margin .offset-gt-xs-85{margin-left:85%}[dir=rtl] .offset-gt-xs-85,[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .offset-gt-xs-85{margin-left:auto;margin-right:85%}.offset-gt-xs-90,.flex-offset-gt-xs-90,.layout-margin .flex-offset-gt-xs-90,.layout-margin .offset-gt-xs-90{margin-left:90%}[dir=rtl] .offset-gt-xs-90,[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .offset-gt-xs-90{margin-left:auto;margin-right:90%}.offset-gt-xs-95,.flex-offset-gt-xs-95,.layout-margin .flex-offset-gt-xs-95,.layout-margin .offset-gt-xs-95{margin-left:95%}[dir=rtl] .offset-gt-xs-95,[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .offset-gt-xs-95{margin-left:auto;margin-right:95%}.offset-gt-xs-33,.flex-offset-gt-xs-33,.layout-margin .flex-offset-gt-xs-33,.layout-margin .offset-gt-xs-33{margin-left:33.3333333333%}.offset-gt-xs-66,.flex-offset-gt-xs-66,.layout-margin .flex-offset-gt-xs-66,.layout-margin .offset-gt-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-xs-66,[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .offset-gt-xs-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.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-start,.layout-align-gt-xs-space-around-end,.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-start,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-start-start,.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-start-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-start-center>*,.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-start-end,.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-start-stretch,.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 100%;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:not(.show-gt-xs):not(.show-sm):not(.show),.hide-gt-xs: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}.offset-sm-0,.flex-offset-sm-0,.layout-margin .flex-offset-sm-0,.layout-margin .offset-sm-0{margin-left:0}[dir=rtl] .offset-sm-0,[dir=rtl] .flex-offset-sm-0,[dir=rtl] .layout-margin .flex-offset-sm-0,[dir=rtl] .layout-margin .offset-sm-0{margin-left:auto;margin-right:0}.offset-sm-5,.flex-offset-sm-5,.layout-margin .flex-offset-sm-5,.layout-margin .offset-sm-5{margin-left:5%}[dir=rtl] .offset-sm-5,[dir=rtl] .flex-offset-sm-5,[dir=rtl] .layout-margin .flex-offset-sm-5,[dir=rtl] .layout-margin .offset-sm-5{margin-left:auto;margin-right:5%}.offset-sm-10,.flex-offset-sm-10,.layout-margin .flex-offset-sm-10,.layout-margin .offset-sm-10{margin-left:10%}[dir=rtl] .offset-sm-10,[dir=rtl] .flex-offset-sm-10,[dir=rtl] .layout-margin .flex-offset-sm-10,[dir=rtl] .layout-margin .offset-sm-10{margin-left:auto;margin-right:10%}.offset-sm-15,.flex-offset-sm-15,.layout-margin .flex-offset-sm-15,.layout-margin .offset-sm-15{margin-left:15%}[dir=rtl] .offset-sm-15,[dir=rtl] .flex-offset-sm-15,[dir=rtl] .layout-margin .flex-offset-sm-15,[dir=rtl] .layout-margin .offset-sm-15{margin-left:auto;margin-right:15%}.offset-sm-20,.flex-offset-sm-20,.layout-margin .flex-offset-sm-20,.layout-margin .offset-sm-20{margin-left:20%}[dir=rtl] .offset-sm-20,[dir=rtl] .flex-offset-sm-20,[dir=rtl] .layout-margin .flex-offset-sm-20,[dir=rtl] .layout-margin .offset-sm-20{margin-left:auto;margin-right:20%}.offset-sm-25,.flex-offset-sm-25,.layout-margin .flex-offset-sm-25,.layout-margin .offset-sm-25{margin-left:25%}[dir=rtl] .offset-sm-25,[dir=rtl] .flex-offset-sm-25,[dir=rtl] .layout-margin .flex-offset-sm-25,[dir=rtl] .layout-margin .offset-sm-25{margin-left:auto;margin-right:25%}.offset-sm-30,.flex-offset-sm-30,.layout-margin .flex-offset-sm-30,.layout-margin .offset-sm-30{margin-left:30%}[dir=rtl] .offset-sm-30,[dir=rtl] .flex-offset-sm-30,[dir=rtl] .layout-margin .flex-offset-sm-30,[dir=rtl] .layout-margin .offset-sm-30{margin-left:auto;margin-right:30%}.offset-sm-35,.flex-offset-sm-35,.layout-margin .flex-offset-sm-35,.layout-margin .offset-sm-35{margin-left:35%}[dir=rtl] .offset-sm-35,[dir=rtl] .flex-offset-sm-35,[dir=rtl] .layout-margin .flex-offset-sm-35,[dir=rtl] .layout-margin .offset-sm-35{margin-left:auto;margin-right:35%}.offset-sm-40,.flex-offset-sm-40,.layout-margin .flex-offset-sm-40,.layout-margin .offset-sm-40{margin-left:40%}[dir=rtl] .offset-sm-40,[dir=rtl] .flex-offset-sm-40,[dir=rtl] .layout-margin .flex-offset-sm-40,[dir=rtl] .layout-margin .offset-sm-40{margin-left:auto;margin-right:40%}.offset-sm-45,.flex-offset-sm-45,.layout-margin .flex-offset-sm-45,.layout-margin .offset-sm-45{margin-left:45%}[dir=rtl] .offset-sm-45,[dir=rtl] .flex-offset-sm-45,[dir=rtl] .layout-margin .flex-offset-sm-45,[dir=rtl] .layout-margin .offset-sm-45{margin-left:auto;margin-right:45%}.offset-sm-50,.flex-offset-sm-50,.layout-margin .flex-offset-sm-50,.layout-margin .offset-sm-50{margin-left:50%}[dir=rtl] .offset-sm-50,[dir=rtl] .flex-offset-sm-50,[dir=rtl] .layout-margin .flex-offset-sm-50,[dir=rtl] .layout-margin .offset-sm-50{margin-left:auto;margin-right:50%}.offset-sm-55,.flex-offset-sm-55,.layout-margin .flex-offset-sm-55,.layout-margin .offset-sm-55{margin-left:55%}[dir=rtl] .offset-sm-55,[dir=rtl] .flex-offset-sm-55,[dir=rtl] .layout-margin .flex-offset-sm-55,[dir=rtl] .layout-margin .offset-sm-55{margin-left:auto;margin-right:55%}.offset-sm-60,.flex-offset-sm-60,.layout-margin .flex-offset-sm-60,.layout-margin .offset-sm-60{margin-left:60%}[dir=rtl] .offset-sm-60,[dir=rtl] .flex-offset-sm-60,[dir=rtl] .layout-margin .flex-offset-sm-60,[dir=rtl] .layout-margin .offset-sm-60{margin-left:auto;margin-right:60%}.offset-sm-65,.flex-offset-sm-65,.layout-margin .flex-offset-sm-65,.layout-margin .offset-sm-65{margin-left:65%}[dir=rtl] .offset-sm-65,[dir=rtl] .flex-offset-sm-65,[dir=rtl] .layout-margin .flex-offset-sm-65,[dir=rtl] .layout-margin .offset-sm-65{margin-left:auto;margin-right:65%}.offset-sm-70,.flex-offset-sm-70,.layout-margin .flex-offset-sm-70,.layout-margin .offset-sm-70{margin-left:70%}[dir=rtl] .offset-sm-70,[dir=rtl] .flex-offset-sm-70,[dir=rtl] .layout-margin .flex-offset-sm-70,[dir=rtl] .layout-margin .offset-sm-70{margin-left:auto;margin-right:70%}.offset-sm-75,.flex-offset-sm-75,.layout-margin .flex-offset-sm-75,.layout-margin .offset-sm-75{margin-left:75%}[dir=rtl] .offset-sm-75,[dir=rtl] .flex-offset-sm-75,[dir=rtl] .layout-margin .flex-offset-sm-75,[dir=rtl] .layout-margin .offset-sm-75{margin-left:auto;margin-right:75%}.offset-sm-80,.flex-offset-sm-80,.layout-margin .flex-offset-sm-80,.layout-margin .offset-sm-80{margin-left:80%}[dir=rtl] .offset-sm-80,[dir=rtl] .flex-offset-sm-80,[dir=rtl] .layout-margin .flex-offset-sm-80,[dir=rtl] .layout-margin .offset-sm-80{margin-left:auto;margin-right:80%}.offset-sm-85,.flex-offset-sm-85,.layout-margin .flex-offset-sm-85,.layout-margin .offset-sm-85{margin-left:85%}[dir=rtl] .offset-sm-85,[dir=rtl] .flex-offset-sm-85,[dir=rtl] .layout-margin .flex-offset-sm-85,[dir=rtl] .layout-margin .offset-sm-85{margin-left:auto;margin-right:85%}.offset-sm-90,.flex-offset-sm-90,.layout-margin .flex-offset-sm-90,.layout-margin .offset-sm-90{margin-left:90%}[dir=rtl] .offset-sm-90,[dir=rtl] .flex-offset-sm-90,[dir=rtl] .layout-margin .flex-offset-sm-90,[dir=rtl] .layout-margin .offset-sm-90{margin-left:auto;margin-right:90%}.offset-sm-95,.flex-offset-sm-95,.layout-margin .flex-offset-sm-95,.layout-margin .offset-sm-95{margin-left:95%}[dir=rtl] .offset-sm-95,[dir=rtl] .flex-offset-sm-95,[dir=rtl] .layout-margin .flex-offset-sm-95,[dir=rtl] .layout-margin .offset-sm-95{margin-left:auto;margin-right:95%}.offset-sm-33,.flex-offset-sm-33,.layout-margin .flex-offset-sm-33,.layout-margin .offset-sm-33{margin-left:33.3333333333%}.offset-sm-66,.flex-offset-sm-66,.layout-margin .flex-offset-sm-66,.layout-margin .offset-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-sm-66,[dir=rtl] .flex-offset-sm-66,[dir=rtl] .layout-margin .flex-offset-sm-66,[dir=rtl] .layout-margin .offset-sm-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-start,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-start,.layout-align-sm-end-center,.layout-align-sm-end-end,.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-start,.layout-align-sm-space-around-end,.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-start,.layout-align-sm-space-between-end,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-start-start,.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-between-start,.layout-align-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-start-center,.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-between-center,.layout-align-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-start-center>*,.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-start-end,.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-between-end,.layout-align-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-start-stretch,.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 100%;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}.offset-gt-sm-0,.flex-offset-gt-sm-0,.layout-margin .flex-offset-gt-sm-0,.layout-margin .offset-gt-sm-0{margin-left:0}[dir=rtl] .offset-gt-sm-0,[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .offset-gt-sm-0{margin-left:auto;margin-right:0}.offset-gt-sm-5,.flex-offset-gt-sm-5,.layout-margin .flex-offset-gt-sm-5,.layout-margin .offset-gt-sm-5{margin-left:5%}[dir=rtl] .offset-gt-sm-5,[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .offset-gt-sm-5{margin-left:auto;margin-right:5%}.offset-gt-sm-10,.flex-offset-gt-sm-10,.layout-margin .flex-offset-gt-sm-10,.layout-margin .offset-gt-sm-10{margin-left:10%}[dir=rtl] .offset-gt-sm-10,[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .offset-gt-sm-10{margin-left:auto;margin-right:10%}.offset-gt-sm-15,.flex-offset-gt-sm-15,.layout-margin .flex-offset-gt-sm-15,.layout-margin .offset-gt-sm-15{margin-left:15%}[dir=rtl] .offset-gt-sm-15,[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .offset-gt-sm-15{margin-left:auto;margin-right:15%}.offset-gt-sm-20,.flex-offset-gt-sm-20,.layout-margin .flex-offset-gt-sm-20,.layout-margin .offset-gt-sm-20{margin-left:20%}[dir=rtl] .offset-gt-sm-20,[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .offset-gt-sm-20{margin-left:auto;margin-right:20%}.offset-gt-sm-25,.flex-offset-gt-sm-25,.layout-margin .flex-offset-gt-sm-25,.layout-margin .offset-gt-sm-25{margin-left:25%}[dir=rtl] .offset-gt-sm-25,[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .offset-gt-sm-25{margin-left:auto;margin-right:25%}.offset-gt-sm-30,.flex-offset-gt-sm-30,.layout-margin .flex-offset-gt-sm-30,.layout-margin .offset-gt-sm-30{margin-left:30%}[dir=rtl] .offset-gt-sm-30,[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .offset-gt-sm-30{margin-left:auto;margin-right:30%}.offset-gt-sm-35,.flex-offset-gt-sm-35,.layout-margin .flex-offset-gt-sm-35,.layout-margin .offset-gt-sm-35{margin-left:35%}[dir=rtl] .offset-gt-sm-35,[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .offset-gt-sm-35{margin-left:auto;margin-right:35%}.offset-gt-sm-40,.flex-offset-gt-sm-40,.layout-margin .flex-offset-gt-sm-40,.layout-margin .offset-gt-sm-40{margin-left:40%}[dir=rtl] .offset-gt-sm-40,[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .offset-gt-sm-40{margin-left:auto;margin-right:40%}.offset-gt-sm-45,.flex-offset-gt-sm-45,.layout-margin .flex-offset-gt-sm-45,.layout-margin .offset-gt-sm-45{margin-left:45%}[dir=rtl] .offset-gt-sm-45,[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .offset-gt-sm-45{margin-left:auto;margin-right:45%}.offset-gt-sm-50,.flex-offset-gt-sm-50,.layout-margin .flex-offset-gt-sm-50,.layout-margin .offset-gt-sm-50{margin-left:50%}[dir=rtl] .offset-gt-sm-50,[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .offset-gt-sm-50{margin-left:auto;margin-right:50%}.offset-gt-sm-55,.flex-offset-gt-sm-55,.layout-margin .flex-offset-gt-sm-55,.layout-margin .offset-gt-sm-55{margin-left:55%}[dir=rtl] .offset-gt-sm-55,[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .offset-gt-sm-55{margin-left:auto;margin-right:55%}.offset-gt-sm-60,.flex-offset-gt-sm-60,.layout-margin .flex-offset-gt-sm-60,.layout-margin .offset-gt-sm-60{margin-left:60%}[dir=rtl] .offset-gt-sm-60,[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .offset-gt-sm-60{margin-left:auto;margin-right:60%}.offset-gt-sm-65,.flex-offset-gt-sm-65,.layout-margin .flex-offset-gt-sm-65,.layout-margin .offset-gt-sm-65{margin-left:65%}[dir=rtl] .offset-gt-sm-65,[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .offset-gt-sm-65{margin-left:auto;margin-right:65%}.offset-gt-sm-70,.flex-offset-gt-sm-70,.layout-margin .flex-offset-gt-sm-70,.layout-margin .offset-gt-sm-70{margin-left:70%}[dir=rtl] .offset-gt-sm-70,[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .offset-gt-sm-70{margin-left:auto;margin-right:70%}.offset-gt-sm-75,.flex-offset-gt-sm-75,.layout-margin .flex-offset-gt-sm-75,.layout-margin .offset-gt-sm-75{margin-left:75%}[dir=rtl] .offset-gt-sm-75,[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .offset-gt-sm-75{margin-left:auto;margin-right:75%}.offset-gt-sm-80,.flex-offset-gt-sm-80,.layout-margin .flex-offset-gt-sm-80,.layout-margin .offset-gt-sm-80{margin-left:80%}[dir=rtl] .offset-gt-sm-80,[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .offset-gt-sm-80{margin-left:auto;margin-right:80%}.offset-gt-sm-85,.flex-offset-gt-sm-85,.layout-margin .flex-offset-gt-sm-85,.layout-margin .offset-gt-sm-85{margin-left:85%}[dir=rtl] .offset-gt-sm-85,[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .offset-gt-sm-85{margin-left:auto;margin-right:85%}.offset-gt-sm-90,.flex-offset-gt-sm-90,.layout-margin .flex-offset-gt-sm-90,.layout-margin .offset-gt-sm-90{margin-left:90%}[dir=rtl] .offset-gt-sm-90,[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .offset-gt-sm-90{margin-left:auto;margin-right:90%}.offset-gt-sm-95,.flex-offset-gt-sm-95,.layout-margin .flex-offset-gt-sm-95,.layout-margin .offset-gt-sm-95{margin-left:95%}[dir=rtl] .offset-gt-sm-95,[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .offset-gt-sm-95{margin-left:auto;margin-right:95%}.offset-gt-sm-33,.flex-offset-gt-sm-33,.layout-margin .flex-offset-gt-sm-33,.layout-margin .offset-gt-sm-33{margin-left:33.3333333333%}.offset-gt-sm-66,.flex-offset-gt-sm-66,.layout-margin .flex-offset-gt-sm-66,.layout-margin .offset-gt-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-sm-66,[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .offset-gt-sm-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.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-start,.layout-align-gt-sm-space-around-end,.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-start,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-start-start,.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-start-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-start-center>*,.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-start-end,.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-start-stretch,.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 100%;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: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-gt-sm: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}.offset-md-0,.flex-offset-md-0,.layout-margin .flex-offset-md-0,.layout-margin .offset-md-0{margin-left:0}[dir=rtl] .offset-md-0,[dir=rtl] .flex-offset-md-0,[dir=rtl] .layout-margin .flex-offset-md-0,[dir=rtl] .layout-margin .offset-md-0{margin-left:auto;margin-right:0}.offset-md-5,.flex-offset-md-5,.layout-margin .flex-offset-md-5,.layout-margin .offset-md-5{margin-left:5%}[dir=rtl] .offset-md-5,[dir=rtl] .flex-offset-md-5,[dir=rtl] .layout-margin .flex-offset-md-5,[dir=rtl] .layout-margin .offset-md-5{margin-left:auto;margin-right:5%}.offset-md-10,.flex-offset-md-10,.layout-margin .flex-offset-md-10,.layout-margin .offset-md-10{margin-left:10%}[dir=rtl] .offset-md-10,[dir=rtl] .flex-offset-md-10,[dir=rtl] .layout-margin .flex-offset-md-10,[dir=rtl] .layout-margin .offset-md-10{margin-left:auto;margin-right:10%}.offset-md-15,.flex-offset-md-15,.layout-margin .flex-offset-md-15,.layout-margin .offset-md-15{margin-left:15%}[dir=rtl] .offset-md-15,[dir=rtl] .flex-offset-md-15,[dir=rtl] .layout-margin .flex-offset-md-15,[dir=rtl] .layout-margin .offset-md-15{margin-left:auto;margin-right:15%}.offset-md-20,.flex-offset-md-20,.layout-margin .flex-offset-md-20,.layout-margin .offset-md-20{margin-left:20%}[dir=rtl] .offset-md-20,[dir=rtl] .flex-offset-md-20,[dir=rtl] .layout-margin .flex-offset-md-20,[dir=rtl] .layout-margin .offset-md-20{margin-left:auto;margin-right:20%}.offset-md-25,.flex-offset-md-25,.layout-margin .flex-offset-md-25,.layout-margin .offset-md-25{margin-left:25%}[dir=rtl] .offset-md-25,[dir=rtl] .flex-offset-md-25,[dir=rtl] .layout-margin .flex-offset-md-25,[dir=rtl] .layout-margin .offset-md-25{margin-left:auto;margin-right:25%}.offset-md-30,.flex-offset-md-30,.layout-margin .flex-offset-md-30,.layout-margin .offset-md-30{margin-left:30%}[dir=rtl] .offset-md-30,[dir=rtl] .flex-offset-md-30,[dir=rtl] .layout-margin .flex-offset-md-30,[dir=rtl] .layout-margin .offset-md-30{margin-left:auto;margin-right:30%}.offset-md-35,.flex-offset-md-35,.layout-margin .flex-offset-md-35,.layout-margin .offset-md-35{margin-left:35%}[dir=rtl] .offset-md-35,[dir=rtl] .flex-offset-md-35,[dir=rtl] .layout-margin .flex-offset-md-35,[dir=rtl] .layout-margin .offset-md-35{margin-left:auto;margin-right:35%}.offset-md-40,.flex-offset-md-40,.layout-margin .flex-offset-md-40,.layout-margin .offset-md-40{margin-left:40%}[dir=rtl] .offset-md-40,[dir=rtl] .flex-offset-md-40,[dir=rtl] .layout-margin .flex-offset-md-40,[dir=rtl] .layout-margin .offset-md-40{margin-left:auto;margin-right:40%}.offset-md-45,.flex-offset-md-45,.layout-margin .flex-offset-md-45,.layout-margin .offset-md-45{margin-left:45%}[dir=rtl] .offset-md-45,[dir=rtl] .flex-offset-md-45,[dir=rtl] .layout-margin .flex-offset-md-45,[dir=rtl] .layout-margin .offset-md-45{margin-left:auto;margin-right:45%}.offset-md-50,.flex-offset-md-50,.layout-margin .flex-offset-md-50,.layout-margin .offset-md-50{margin-left:50%}[dir=rtl] .offset-md-50,[dir=rtl] .flex-offset-md-50,[dir=rtl] .layout-margin .flex-offset-md-50,[dir=rtl] .layout-margin .offset-md-50{margin-left:auto;margin-right:50%}.offset-md-55,.flex-offset-md-55,.layout-margin .flex-offset-md-55,.layout-margin .offset-md-55{margin-left:55%}[dir=rtl] .offset-md-55,[dir=rtl] .flex-offset-md-55,[dir=rtl] .layout-margin .flex-offset-md-55,[dir=rtl] .layout-margin .offset-md-55{margin-left:auto;margin-right:55%}.offset-md-60,.flex-offset-md-60,.layout-margin .flex-offset-md-60,.layout-margin .offset-md-60{margin-left:60%}[dir=rtl] .offset-md-60,[dir=rtl] .flex-offset-md-60,[dir=rtl] .layout-margin .flex-offset-md-60,[dir=rtl] .layout-margin .offset-md-60{margin-left:auto;margin-right:60%}.offset-md-65,.flex-offset-md-65,.layout-margin .flex-offset-md-65,.layout-margin .offset-md-65{margin-left:65%}[dir=rtl] .offset-md-65,[dir=rtl] .flex-offset-md-65,[dir=rtl] .layout-margin .flex-offset-md-65,[dir=rtl] .layout-margin .offset-md-65{margin-left:auto;margin-right:65%}.offset-md-70,.flex-offset-md-70,.layout-margin .flex-offset-md-70,.layout-margin .offset-md-70{margin-left:70%}[dir=rtl] .offset-md-70,[dir=rtl] .flex-offset-md-70,[dir=rtl] .layout-margin .flex-offset-md-70,[dir=rtl] .layout-margin .offset-md-70{margin-left:auto;margin-right:70%}.offset-md-75,.flex-offset-md-75,.layout-margin .flex-offset-md-75,.layout-margin .offset-md-75{margin-left:75%}[dir=rtl] .offset-md-75,[dir=rtl] .flex-offset-md-75,[dir=rtl] .layout-margin .flex-offset-md-75,[dir=rtl] .layout-margin .offset-md-75{margin-left:auto;margin-right:75%}.offset-md-80,.flex-offset-md-80,.layout-margin .flex-offset-md-80,.layout-margin .offset-md-80{margin-left:80%}[dir=rtl] .offset-md-80,[dir=rtl] .flex-offset-md-80,[dir=rtl] .layout-margin .flex-offset-md-80,[dir=rtl] .layout-margin .offset-md-80{margin-left:auto;margin-right:80%}.offset-md-85,.flex-offset-md-85,.layout-margin .flex-offset-md-85,.layout-margin .offset-md-85{margin-left:85%}[dir=rtl] .offset-md-85,[dir=rtl] .flex-offset-md-85,[dir=rtl] .layout-margin .flex-offset-md-85,[dir=rtl] .layout-margin .offset-md-85{margin-left:auto;margin-right:85%}.offset-md-90,.flex-offset-md-90,.layout-margin .flex-offset-md-90,.layout-margin .offset-md-90{margin-left:90%}[dir=rtl] .offset-md-90,[dir=rtl] .flex-offset-md-90,[dir=rtl] .layout-margin .flex-offset-md-90,[dir=rtl] .layout-margin .offset-md-90{margin-left:auto;margin-right:90%}.offset-md-95,.flex-offset-md-95,.layout-margin .flex-offset-md-95,.layout-margin .offset-md-95{margin-left:95%}[dir=rtl] .offset-md-95,[dir=rtl] .flex-offset-md-95,[dir=rtl] .layout-margin .flex-offset-md-95,[dir=rtl] .layout-margin .offset-md-95{margin-left:auto;margin-right:95%}.offset-md-33,.flex-offset-md-33,.layout-margin .flex-offset-md-33,.layout-margin .offset-md-33{margin-left:33.3333333333%}.offset-md-66,.flex-offset-md-66,.layout-margin .flex-offset-md-66,.layout-margin .offset-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-md-66,[dir=rtl] .flex-offset-md-66,[dir=rtl] .layout-margin .flex-offset-md-66,[dir=rtl] .layout-margin .offset-md-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-start,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-start,.layout-align-md-end-center,.layout-align-md-end-end,.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-start,.layout-align-md-space-around-end,.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-start,.layout-align-md-space-between-end,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-start-start,.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-between-start,.layout-align-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-md-start-center,.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-between-center,.layout-align-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-start-center>*,.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-between-center>*,.layout-align-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-start-end,.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-between-end,.layout-align-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-md-start-stretch,.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-between-stretch,.layout-align-md-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 100%;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}.offset-gt-md-0,.flex-offset-gt-md-0,.layout-margin .flex-offset-gt-md-0,.layout-margin .offset-gt-md-0{margin-left:0}[dir=rtl] .offset-gt-md-0,[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .layout-margin .flex-offset-gt-md-0,[dir=rtl] .layout-margin .offset-gt-md-0{margin-left:auto;margin-right:0}.offset-gt-md-5,.flex-offset-gt-md-5,.layout-margin .flex-offset-gt-md-5,.layout-margin .offset-gt-md-5{margin-left:5%}[dir=rtl] .offset-gt-md-5,[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .layout-margin .flex-offset-gt-md-5,[dir=rtl] .layout-margin .offset-gt-md-5{margin-left:auto;margin-right:5%}.offset-gt-md-10,.flex-offset-gt-md-10,.layout-margin .flex-offset-gt-md-10,.layout-margin .offset-gt-md-10{margin-left:10%}[dir=rtl] .offset-gt-md-10,[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .layout-margin .flex-offset-gt-md-10,[dir=rtl] .layout-margin .offset-gt-md-10{margin-left:auto;margin-right:10%}.offset-gt-md-15,.flex-offset-gt-md-15,.layout-margin .flex-offset-gt-md-15,.layout-margin .offset-gt-md-15{margin-left:15%}[dir=rtl] .offset-gt-md-15,[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .layout-margin .flex-offset-gt-md-15,[dir=rtl] .layout-margin .offset-gt-md-15{margin-left:auto;margin-right:15%}.offset-gt-md-20,.flex-offset-gt-md-20,.layout-margin .flex-offset-gt-md-20,.layout-margin .offset-gt-md-20{margin-left:20%}[dir=rtl] .offset-gt-md-20,[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .layout-margin .flex-offset-gt-md-20,[dir=rtl] .layout-margin .offset-gt-md-20{margin-left:auto;margin-right:20%}.offset-gt-md-25,.flex-offset-gt-md-25,.layout-margin .flex-offset-gt-md-25,.layout-margin .offset-gt-md-25{margin-left:25%}[dir=rtl] .offset-gt-md-25,[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .layout-margin .flex-offset-gt-md-25,[dir=rtl] .layout-margin .offset-gt-md-25{margin-left:auto;margin-right:25%}.offset-gt-md-30,.flex-offset-gt-md-30,.layout-margin .flex-offset-gt-md-30,.layout-margin .offset-gt-md-30{margin-left:30%}[dir=rtl] .offset-gt-md-30,[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .layout-margin .flex-offset-gt-md-30,[dir=rtl] .layout-margin .offset-gt-md-30{margin-left:auto;margin-right:30%}.offset-gt-md-35,.flex-offset-gt-md-35,.layout-margin .flex-offset-gt-md-35,.layout-margin .offset-gt-md-35{margin-left:35%}[dir=rtl] .offset-gt-md-35,[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .layout-margin .flex-offset-gt-md-35,[dir=rtl] .layout-margin .offset-gt-md-35{margin-left:auto;margin-right:35%}.offset-gt-md-40,.flex-offset-gt-md-40,.layout-margin .flex-offset-gt-md-40,.layout-margin .offset-gt-md-40{margin-left:40%}[dir=rtl] .offset-gt-md-40,[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .layout-margin .flex-offset-gt-md-40,[dir=rtl] .layout-margin .offset-gt-md-40{margin-left:auto;margin-right:40%}.offset-gt-md-45,.flex-offset-gt-md-45,.layout-margin .flex-offset-gt-md-45,.layout-margin .offset-gt-md-45{margin-left:45%}[dir=rtl] .offset-gt-md-45,[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .layout-margin .flex-offset-gt-md-45,[dir=rtl] .layout-margin .offset-gt-md-45{margin-left:auto;margin-right:45%}.offset-gt-md-50,.flex-offset-gt-md-50,.layout-margin .flex-offset-gt-md-50,.layout-margin .offset-gt-md-50{margin-left:50%}[dir=rtl] .offset-gt-md-50,[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .layout-margin .flex-offset-gt-md-50,[dir=rtl] .layout-margin .offset-gt-md-50{margin-left:auto;margin-right:50%}.offset-gt-md-55,.flex-offset-gt-md-55,.layout-margin .flex-offset-gt-md-55,.layout-margin .offset-gt-md-55{margin-left:55%}[dir=rtl] .offset-gt-md-55,[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .layout-margin .flex-offset-gt-md-55,[dir=rtl] .layout-margin .offset-gt-md-55{margin-left:auto;margin-right:55%}.offset-gt-md-60,.flex-offset-gt-md-60,.layout-margin .flex-offset-gt-md-60,.layout-margin .offset-gt-md-60{margin-left:60%}[dir=rtl] .offset-gt-md-60,[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .layout-margin .flex-offset-gt-md-60,[dir=rtl] .layout-margin .offset-gt-md-60{margin-left:auto;margin-right:60%}.offset-gt-md-65,.flex-offset-gt-md-65,.layout-margin .flex-offset-gt-md-65,.layout-margin .offset-gt-md-65{margin-left:65%}[dir=rtl] .offset-gt-md-65,[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .layout-margin .flex-offset-gt-md-65,[dir=rtl] .layout-margin .offset-gt-md-65{margin-left:auto;margin-right:65%}.offset-gt-md-70,.flex-offset-gt-md-70,.layout-margin .flex-offset-gt-md-70,.layout-margin .offset-gt-md-70{margin-left:70%}[dir=rtl] .offset-gt-md-70,[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .layout-margin .flex-offset-gt-md-70,[dir=rtl] .layout-margin .offset-gt-md-70{margin-left:auto;margin-right:70%}.offset-gt-md-75,.flex-offset-gt-md-75,.layout-margin .flex-offset-gt-md-75,.layout-margin .offset-gt-md-75{margin-left:75%}[dir=rtl] .offset-gt-md-75,[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .layout-margin .flex-offset-gt-md-75,[dir=rtl] .layout-margin .offset-gt-md-75{margin-left:auto;margin-right:75%}.offset-gt-md-80,.flex-offset-gt-md-80,.layout-margin .flex-offset-gt-md-80,.layout-margin .offset-gt-md-80{margin-left:80%}[dir=rtl] .offset-gt-md-80,[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .layout-margin .flex-offset-gt-md-80,[dir=rtl] .layout-margin .offset-gt-md-80{margin-left:auto;margin-right:80%}.offset-gt-md-85,.flex-offset-gt-md-85,.layout-margin .flex-offset-gt-md-85,.layout-margin .offset-gt-md-85{margin-left:85%}[dir=rtl] .offset-gt-md-85,[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .layout-margin .flex-offset-gt-md-85,[dir=rtl] .layout-margin .offset-gt-md-85{margin-left:auto;margin-right:85%}.offset-gt-md-90,.flex-offset-gt-md-90,.layout-margin .flex-offset-gt-md-90,.layout-margin .offset-gt-md-90{margin-left:90%}[dir=rtl] .offset-gt-md-90,[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .layout-margin .flex-offset-gt-md-90,[dir=rtl] .layout-margin .offset-gt-md-90{margin-left:auto;margin-right:90%}.offset-gt-md-95,.flex-offset-gt-md-95,.layout-margin .flex-offset-gt-md-95,.layout-margin .offset-gt-md-95{margin-left:95%}[dir=rtl] .offset-gt-md-95,[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .layout-margin .flex-offset-gt-md-95,[dir=rtl] .layout-margin .offset-gt-md-95{margin-left:auto;margin-right:95%}.offset-gt-md-33,.flex-offset-gt-md-33,.layout-margin .flex-offset-gt-md-33,.layout-margin .offset-gt-md-33{margin-left:33.3333333333%}.offset-gt-md-66,.flex-offset-gt-md-66,.layout-margin .flex-offset-gt-md-66,.layout-margin .offset-gt-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-md-66,[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .layout-margin .flex-offset-gt-md-66,[dir=rtl] .layout-margin .offset-gt-md-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-start,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.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-start,.layout-align-gt-md-space-around-end,.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-start,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-start-start,.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-start-center,.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-start-center>*,.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-start-end,.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-start-stretch,.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 100%;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: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-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-md: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}.offset-lg-0,.flex-offset-lg-0,.layout-margin .flex-offset-lg-0,.layout-margin .offset-lg-0{margin-left:0}[dir=rtl] .offset-lg-0,[dir=rtl] .flex-offset-lg-0,[dir=rtl] .layout-margin .flex-offset-lg-0,[dir=rtl] .layout-margin .offset-lg-0{margin-left:auto;margin-right:0}.offset-lg-5,.flex-offset-lg-5,.layout-margin .flex-offset-lg-5,.layout-margin .offset-lg-5{margin-left:5%}[dir=rtl] .offset-lg-5,[dir=rtl] .flex-offset-lg-5,[dir=rtl] .layout-margin .flex-offset-lg-5,[dir=rtl] .layout-margin .offset-lg-5{margin-left:auto;margin-right:5%}.offset-lg-10,.flex-offset-lg-10,.layout-margin .flex-offset-lg-10,.layout-margin .offset-lg-10{margin-left:10%}[dir=rtl] .offset-lg-10,[dir=rtl] .flex-offset-lg-10,[dir=rtl] .layout-margin .flex-offset-lg-10,[dir=rtl] .layout-margin .offset-lg-10{margin-left:auto;margin-right:10%}.offset-lg-15,.flex-offset-lg-15,.layout-margin .flex-offset-lg-15,.layout-margin .offset-lg-15{margin-left:15%}[dir=rtl] .offset-lg-15,[dir=rtl] .flex-offset-lg-15,[dir=rtl] .layout-margin .flex-offset-lg-15,[dir=rtl] .layout-margin .offset-lg-15{margin-left:auto;margin-right:15%}.offset-lg-20,.flex-offset-lg-20,.layout-margin .flex-offset-lg-20,.layout-margin .offset-lg-20{margin-left:20%}[dir=rtl] .offset-lg-20,[dir=rtl] .flex-offset-lg-20,[dir=rtl] .layout-margin .flex-offset-lg-20,[dir=rtl] .layout-margin .offset-lg-20{margin-left:auto;margin-right:20%}.offset-lg-25,.flex-offset-lg-25,.layout-margin .flex-offset-lg-25,.layout-margin .offset-lg-25{margin-left:25%}[dir=rtl] .offset-lg-25,[dir=rtl] .flex-offset-lg-25,[dir=rtl] .layout-margin .flex-offset-lg-25,[dir=rtl] .layout-margin .offset-lg-25{margin-left:auto;margin-right:25%}.offset-lg-30,.flex-offset-lg-30,.layout-margin .flex-offset-lg-30,.layout-margin .offset-lg-30{margin-left:30%}[dir=rtl] .offset-lg-30,[dir=rtl] .flex-offset-lg-30,[dir=rtl] .layout-margin .flex-offset-lg-30,[dir=rtl] .layout-margin .offset-lg-30{margin-left:auto;margin-right:30%}.offset-lg-35,.flex-offset-lg-35,.layout-margin .flex-offset-lg-35,.layout-margin .offset-lg-35{margin-left:35%}[dir=rtl] .offset-lg-35,[dir=rtl] .flex-offset-lg-35,[dir=rtl] .layout-margin .flex-offset-lg-35,[dir=rtl] .layout-margin .offset-lg-35{margin-left:auto;margin-right:35%}.offset-lg-40,.flex-offset-lg-40,.layout-margin .flex-offset-lg-40,.layout-margin .offset-lg-40{margin-left:40%}[dir=rtl] .offset-lg-40,[dir=rtl] .flex-offset-lg-40,[dir=rtl] .layout-margin .flex-offset-lg-40,[dir=rtl] .layout-margin .offset-lg-40{margin-left:auto;margin-right:40%}.offset-lg-45,.flex-offset-lg-45,.layout-margin .flex-offset-lg-45,.layout-margin .offset-lg-45{margin-left:45%}[dir=rtl] .offset-lg-45,[dir=rtl] .flex-offset-lg-45,[dir=rtl] .layout-margin .flex-offset-lg-45,[dir=rtl] .layout-margin .offset-lg-45{margin-left:auto;margin-right:45%}.offset-lg-50,.flex-offset-lg-50,.layout-margin .flex-offset-lg-50,.layout-margin .offset-lg-50{margin-left:50%}[dir=rtl] .offset-lg-50,[dir=rtl] .flex-offset-lg-50,[dir=rtl] .layout-margin .flex-offset-lg-50,[dir=rtl] .layout-margin .offset-lg-50{margin-left:auto;margin-right:50%}.offset-lg-55,.flex-offset-lg-55,.layout-margin .flex-offset-lg-55,.layout-margin .offset-lg-55{margin-left:55%}[dir=rtl] .offset-lg-55,[dir=rtl] .flex-offset-lg-55,[dir=rtl] .layout-margin .flex-offset-lg-55,[dir=rtl] .layout-margin .offset-lg-55{margin-left:auto;margin-right:55%}.offset-lg-60,.flex-offset-lg-60,.layout-margin .flex-offset-lg-60,.layout-margin .offset-lg-60{margin-left:60%}[dir=rtl] .offset-lg-60,[dir=rtl] .flex-offset-lg-60,[dir=rtl] .layout-margin .flex-offset-lg-60,[dir=rtl] .layout-margin .offset-lg-60{margin-left:auto;margin-right:60%}.offset-lg-65,.flex-offset-lg-65,.layout-margin .flex-offset-lg-65,.layout-margin .offset-lg-65{margin-left:65%}[dir=rtl] .offset-lg-65,[dir=rtl] .flex-offset-lg-65,[dir=rtl] .layout-margin .flex-offset-lg-65,[dir=rtl] .layout-margin .offset-lg-65{margin-left:auto;margin-right:65%}.offset-lg-70,.flex-offset-lg-70,.layout-margin .flex-offset-lg-70,.layout-margin .offset-lg-70{margin-left:70%}[dir=rtl] .offset-lg-70,[dir=rtl] .flex-offset-lg-70,[dir=rtl] .layout-margin .flex-offset-lg-70,[dir=rtl] .layout-margin .offset-lg-70{margin-left:auto;margin-right:70%}.offset-lg-75,.flex-offset-lg-75,.layout-margin .flex-offset-lg-75,.layout-margin .offset-lg-75{margin-left:75%}[dir=rtl] .offset-lg-75,[dir=rtl] .flex-offset-lg-75,[dir=rtl] .layout-margin .flex-offset-lg-75,[dir=rtl] .layout-margin .offset-lg-75{margin-left:auto;margin-right:75%}.offset-lg-80,.flex-offset-lg-80,.layout-margin .flex-offset-lg-80,.layout-margin .offset-lg-80{margin-left:80%}[dir=rtl] .offset-lg-80,[dir=rtl] .flex-offset-lg-80,[dir=rtl] .layout-margin .flex-offset-lg-80,[dir=rtl] .layout-margin .offset-lg-80{margin-left:auto;margin-right:80%}.offset-lg-85,.flex-offset-lg-85,.layout-margin .flex-offset-lg-85,.layout-margin .offset-lg-85{margin-left:85%}[dir=rtl] .offset-lg-85,[dir=rtl] .flex-offset-lg-85,[dir=rtl] .layout-margin .flex-offset-lg-85,[dir=rtl] .layout-margin .offset-lg-85{margin-left:auto;margin-right:85%}.offset-lg-90,.flex-offset-lg-90,.layout-margin .flex-offset-lg-90,.layout-margin .offset-lg-90{margin-left:90%}[dir=rtl] .offset-lg-90,[dir=rtl] .flex-offset-lg-90,[dir=rtl] .layout-margin .flex-offset-lg-90,[dir=rtl] .layout-margin .offset-lg-90{margin-left:auto;margin-right:90%}.offset-lg-95,.flex-offset-lg-95,.layout-margin .flex-offset-lg-95,.layout-margin .offset-lg-95{margin-left:95%}[dir=rtl] .offset-lg-95,[dir=rtl] .flex-offset-lg-95,[dir=rtl] .layout-margin .flex-offset-lg-95,[dir=rtl] .layout-margin .offset-lg-95{margin-left:auto;margin-right:95%}.offset-lg-33,.flex-offset-lg-33,.layout-margin .flex-offset-lg-33,.layout-margin .offset-lg-33{margin-left:33.3333333333%}.offset-lg-66,.flex-offset-lg-66,.layout-margin .flex-offset-lg-66,.layout-margin .offset-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-lg-66,[dir=rtl] .flex-offset-lg-66,[dir=rtl] .layout-margin .flex-offset-lg-66,[dir=rtl] .layout-margin .offset-lg-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-start,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-start,.layout-align-lg-end-center,.layout-align-lg-end-end,.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-start,.layout-align-lg-space-around-end,.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-start,.layout-align-lg-space-between-end,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-start-start,.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-between-start,.layout-align-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-start-center,.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-between-center,.layout-align-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-start-center>*,.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-start-end,.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-between-end,.layout-align-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-start-stretch,.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 100%;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}.offset-gt-lg-0,.flex-offset-gt-lg-0,.layout-margin .flex-offset-gt-lg-0,.layout-margin .offset-gt-lg-0{margin-left:0}[dir=rtl] .offset-gt-lg-0,[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .offset-gt-lg-0{margin-left:auto;margin-right:0}.offset-gt-lg-5,.flex-offset-gt-lg-5,.layout-margin .flex-offset-gt-lg-5,.layout-margin .offset-gt-lg-5{margin-left:5%}[dir=rtl] .offset-gt-lg-5,[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .offset-gt-lg-5{margin-left:auto;margin-right:5%}.offset-gt-lg-10,.flex-offset-gt-lg-10,.layout-margin .flex-offset-gt-lg-10,.layout-margin .offset-gt-lg-10{margin-left:10%}[dir=rtl] .offset-gt-lg-10,[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .offset-gt-lg-10{margin-left:auto;margin-right:10%}.offset-gt-lg-15,.flex-offset-gt-lg-15,.layout-margin .flex-offset-gt-lg-15,.layout-margin .offset-gt-lg-15{margin-left:15%}[dir=rtl] .offset-gt-lg-15,[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .offset-gt-lg-15{margin-left:auto;margin-right:15%}.offset-gt-lg-20,.flex-offset-gt-lg-20,.layout-margin .flex-offset-gt-lg-20,.layout-margin .offset-gt-lg-20{margin-left:20%}[dir=rtl] .offset-gt-lg-20,[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .offset-gt-lg-20{margin-left:auto;margin-right:20%}.offset-gt-lg-25,.flex-offset-gt-lg-25,.layout-margin .flex-offset-gt-lg-25,.layout-margin .offset-gt-lg-25{margin-left:25%}[dir=rtl] .offset-gt-lg-25,[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .offset-gt-lg-25{margin-left:auto;margin-right:25%}.offset-gt-lg-30,.flex-offset-gt-lg-30,.layout-margin .flex-offset-gt-lg-30,.layout-margin .offset-gt-lg-30{margin-left:30%}[dir=rtl] .offset-gt-lg-30,[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .offset-gt-lg-30{margin-left:auto;margin-right:30%}.offset-gt-lg-35,.flex-offset-gt-lg-35,.layout-margin .flex-offset-gt-lg-35,.layout-margin .offset-gt-lg-35{margin-left:35%}[dir=rtl] .offset-gt-lg-35,[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .offset-gt-lg-35{margin-left:auto;margin-right:35%}.offset-gt-lg-40,.flex-offset-gt-lg-40,.layout-margin .flex-offset-gt-lg-40,.layout-margin .offset-gt-lg-40{margin-left:40%}[dir=rtl] .offset-gt-lg-40,[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .offset-gt-lg-40{margin-left:auto;margin-right:40%}.offset-gt-lg-45,.flex-offset-gt-lg-45,.layout-margin .flex-offset-gt-lg-45,.layout-margin .offset-gt-lg-45{margin-left:45%}[dir=rtl] .offset-gt-lg-45,[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .offset-gt-lg-45{margin-left:auto;margin-right:45%}.offset-gt-lg-50,.flex-offset-gt-lg-50,.layout-margin .flex-offset-gt-lg-50,.layout-margin .offset-gt-lg-50{margin-left:50%}[dir=rtl] .offset-gt-lg-50,[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .offset-gt-lg-50{margin-left:auto;margin-right:50%}.offset-gt-lg-55,.flex-offset-gt-lg-55,.layout-margin .flex-offset-gt-lg-55,.layout-margin .offset-gt-lg-55{margin-left:55%}[dir=rtl] .offset-gt-lg-55,[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .offset-gt-lg-55{margin-left:auto;margin-right:55%}.offset-gt-lg-60,.flex-offset-gt-lg-60,.layout-margin .flex-offset-gt-lg-60,.layout-margin .offset-gt-lg-60{margin-left:60%}[dir=rtl] .offset-gt-lg-60,[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .offset-gt-lg-60{margin-left:auto;margin-right:60%}.offset-gt-lg-65,.flex-offset-gt-lg-65,.layout-margin .flex-offset-gt-lg-65,.layout-margin .offset-gt-lg-65{margin-left:65%}[dir=rtl] .offset-gt-lg-65,[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .offset-gt-lg-65{margin-left:auto;margin-right:65%}.offset-gt-lg-70,.flex-offset-gt-lg-70,.layout-margin .flex-offset-gt-lg-70,.layout-margin .offset-gt-lg-70{margin-left:70%}[dir=rtl] .offset-gt-lg-70,[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .offset-gt-lg-70{margin-left:auto;margin-right:70%}.offset-gt-lg-75,.flex-offset-gt-lg-75,.layout-margin .flex-offset-gt-lg-75,.layout-margin .offset-gt-lg-75{margin-left:75%}[dir=rtl] .offset-gt-lg-75,[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .offset-gt-lg-75{margin-left:auto;margin-right:75%}.offset-gt-lg-80,.flex-offset-gt-lg-80,.layout-margin .flex-offset-gt-lg-80,.layout-margin .offset-gt-lg-80{margin-left:80%}[dir=rtl] .offset-gt-lg-80,[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .offset-gt-lg-80{margin-left:auto;margin-right:80%}.offset-gt-lg-85,.flex-offset-gt-lg-85,.layout-margin .flex-offset-gt-lg-85,.layout-margin .offset-gt-lg-85{margin-left:85%}[dir=rtl] .offset-gt-lg-85,[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .offset-gt-lg-85{margin-left:auto;margin-right:85%}.offset-gt-lg-90,.flex-offset-gt-lg-90,.layout-margin .flex-offset-gt-lg-90,.layout-margin .offset-gt-lg-90{margin-left:90%}[dir=rtl] .offset-gt-lg-90,[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .offset-gt-lg-90{margin-left:auto;margin-right:90%}.offset-gt-lg-95,.flex-offset-gt-lg-95,.layout-margin .flex-offset-gt-lg-95,.layout-margin .offset-gt-lg-95{margin-left:95%}[dir=rtl] .offset-gt-lg-95,[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .offset-gt-lg-95{margin-left:auto;margin-right:95%}.offset-gt-lg-33,.flex-offset-gt-lg-33,.layout-margin .flex-offset-gt-lg-33,.layout-margin .offset-gt-lg-33{margin-left:33.3333333333%}.offset-gt-lg-66,.flex-offset-gt-lg-66,.layout-margin .flex-offset-gt-lg-66,.layout-margin .offset-gt-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-lg-66,[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .offset-gt-lg-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.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-start,.layout-align-gt-lg-space-around-end,.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-start,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-start-start,.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-start-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-start-center>*,.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-start-end,.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-start-stretch,.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 100%;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}.offset-xl-0,.flex-offset-xl-0,.layout-margin .flex-offset-xl-0,.layout-margin .offset-xl-0{margin-left:0}[dir=rtl] .offset-xl-0,[dir=rtl] .flex-offset-xl-0,[dir=rtl] .layout-margin .flex-offset-xl-0,[dir=rtl] .layout-margin .offset-xl-0{margin-left:auto;margin-right:0}.offset-xl-5,.flex-offset-xl-5,.layout-margin .flex-offset-xl-5,.layout-margin .offset-xl-5{margin-left:5%}[dir=rtl] .offset-xl-5,[dir=rtl] .flex-offset-xl-5,[dir=rtl] .layout-margin .flex-offset-xl-5,[dir=rtl] .layout-margin .offset-xl-5{margin-left:auto;margin-right:5%}.offset-xl-10,.flex-offset-xl-10,.layout-margin .flex-offset-xl-10,.layout-margin .offset-xl-10{margin-left:10%}[dir=rtl] .offset-xl-10,[dir=rtl] .flex-offset-xl-10,[dir=rtl] .layout-margin .flex-offset-xl-10,[dir=rtl] .layout-margin .offset-xl-10{margin-left:auto;margin-right:10%}.offset-xl-15,.flex-offset-xl-15,.layout-margin .flex-offset-xl-15,.layout-margin .offset-xl-15{margin-left:15%}[dir=rtl] .offset-xl-15,[dir=rtl] .flex-offset-xl-15,[dir=rtl] .layout-margin .flex-offset-xl-15,[dir=rtl] .layout-margin .offset-xl-15{margin-left:auto;margin-right:15%}.offset-xl-20,.flex-offset-xl-20,.layout-margin .flex-offset-xl-20,.layout-margin .offset-xl-20{margin-left:20%}[dir=rtl] .offset-xl-20,[dir=rtl] .flex-offset-xl-20,[dir=rtl] .layout-margin .flex-offset-xl-20,[dir=rtl] .layout-margin .offset-xl-20{margin-left:auto;margin-right:20%}.offset-xl-25,.flex-offset-xl-25,.layout-margin .flex-offset-xl-25,.layout-margin .offset-xl-25{margin-left:25%}[dir=rtl] .offset-xl-25,[dir=rtl] .flex-offset-xl-25,[dir=rtl] .layout-margin .flex-offset-xl-25,[dir=rtl] .layout-margin .offset-xl-25{margin-left:auto;margin-right:25%}.offset-xl-30,.flex-offset-xl-30,.layout-margin .flex-offset-xl-30,.layout-margin .offset-xl-30{margin-left:30%}[dir=rtl] .offset-xl-30,[dir=rtl] .flex-offset-xl-30,[dir=rtl] .layout-margin .flex-offset-xl-30,[dir=rtl] .layout-margin .offset-xl-30{margin-left:auto;margin-right:30%}.offset-xl-35,.flex-offset-xl-35,.layout-margin .flex-offset-xl-35,.layout-margin .offset-xl-35{margin-left:35%}[dir=rtl] .offset-xl-35,[dir=rtl] .flex-offset-xl-35,[dir=rtl] .layout-margin .flex-offset-xl-35,[dir=rtl] .layout-margin .offset-xl-35{margin-left:auto;margin-right:35%}.offset-xl-40,.flex-offset-xl-40,.layout-margin .flex-offset-xl-40,.layout-margin .offset-xl-40{margin-left:40%}[dir=rtl] .offset-xl-40,[dir=rtl] .flex-offset-xl-40,[dir=rtl] .layout-margin .flex-offset-xl-40,[dir=rtl] .layout-margin .offset-xl-40{margin-left:auto;margin-right:40%}.offset-xl-45,.flex-offset-xl-45,.layout-margin .flex-offset-xl-45,.layout-margin .offset-xl-45{margin-left:45%}[dir=rtl] .offset-xl-45,[dir=rtl] .flex-offset-xl-45,[dir=rtl] .layout-margin .flex-offset-xl-45,[dir=rtl] .layout-margin .offset-xl-45{margin-left:auto;margin-right:45%}.offset-xl-50,.flex-offset-xl-50,.layout-margin .flex-offset-xl-50,.layout-margin .offset-xl-50{margin-left:50%}[dir=rtl] .offset-xl-50,[dir=rtl] .flex-offset-xl-50,[dir=rtl] .layout-margin .flex-offset-xl-50,[dir=rtl] .layout-margin .offset-xl-50{margin-left:auto;margin-right:50%}.offset-xl-55,.flex-offset-xl-55,.layout-margin .flex-offset-xl-55,.layout-margin .offset-xl-55{margin-left:55%}[dir=rtl] .offset-xl-55,[dir=rtl] .flex-offset-xl-55,[dir=rtl] .layout-margin .flex-offset-xl-55,[dir=rtl] .layout-margin .offset-xl-55{margin-left:auto;margin-right:55%}.offset-xl-60,.flex-offset-xl-60,.layout-margin .flex-offset-xl-60,.layout-margin .offset-xl-60{margin-left:60%}[dir=rtl] .offset-xl-60,[dir=rtl] .flex-offset-xl-60,[dir=rtl] .layout-margin .flex-offset-xl-60,[dir=rtl] .layout-margin .offset-xl-60{margin-left:auto;margin-right:60%}.offset-xl-65,.flex-offset-xl-65,.layout-margin .flex-offset-xl-65,.layout-margin .offset-xl-65{margin-left:65%}[dir=rtl] .offset-xl-65,[dir=rtl] .flex-offset-xl-65,[dir=rtl] .layout-margin .flex-offset-xl-65,[dir=rtl] .layout-margin .offset-xl-65{margin-left:auto;margin-right:65%}.offset-xl-70,.flex-offset-xl-70,.layout-margin .flex-offset-xl-70,.layout-margin .offset-xl-70{margin-left:70%}[dir=rtl] .offset-xl-70,[dir=rtl] .flex-offset-xl-70,[dir=rtl] .layout-margin .flex-offset-xl-70,[dir=rtl] .layout-margin .offset-xl-70{margin-left:auto;margin-right:70%}.offset-xl-75,.flex-offset-xl-75,.layout-margin .flex-offset-xl-75,.layout-margin .offset-xl-75{margin-left:75%}[dir=rtl] .offset-xl-75,[dir=rtl] .flex-offset-xl-75,[dir=rtl] .layout-margin .flex-offset-xl-75,[dir=rtl] .layout-margin .offset-xl-75{margin-left:auto;margin-right:75%}.offset-xl-80,.flex-offset-xl-80,.layout-margin .flex-offset-xl-80,.layout-margin .offset-xl-80{margin-left:80%}[dir=rtl] .offset-xl-80,[dir=rtl] .flex-offset-xl-80,[dir=rtl] .layout-margin .flex-offset-xl-80,[dir=rtl] .layout-margin .offset-xl-80{margin-left:auto;margin-right:80%}.offset-xl-85,.flex-offset-xl-85,.layout-margin .flex-offset-xl-85,.layout-margin .offset-xl-85{margin-left:85%}[dir=rtl] .offset-xl-85,[dir=rtl] .flex-offset-xl-85,[dir=rtl] .layout-margin .flex-offset-xl-85,[dir=rtl] .layout-margin .offset-xl-85{margin-left:auto;margin-right:85%}.offset-xl-90,.flex-offset-xl-90,.layout-margin .flex-offset-xl-90,.layout-margin .offset-xl-90{margin-left:90%}[dir=rtl] .offset-xl-90,[dir=rtl] .flex-offset-xl-90,[dir=rtl] .layout-margin .flex-offset-xl-90,[dir=rtl] .layout-margin .offset-xl-90{margin-left:auto;margin-right:90%}.offset-xl-95,.flex-offset-xl-95,.layout-margin .flex-offset-xl-95,.layout-margin .offset-xl-95{margin-left:95%}[dir=rtl] .offset-xl-95,[dir=rtl] .flex-offset-xl-95,[dir=rtl] .layout-margin .flex-offset-xl-95,[dir=rtl] .layout-margin .offset-xl-95{margin-left:auto;margin-right:95%}.offset-xl-33,.flex-offset-xl-33,.layout-margin .flex-offset-xl-33,.layout-margin .offset-xl-33{margin-left:33.3333333333%}.offset-xl-66,.flex-offset-xl-66,.layout-margin .flex-offset-xl-66,.layout-margin .offset-xl-66{margin-left:66.6666666667%}[dir=rtl] .offset-xl-66,[dir=rtl] .flex-offset-xl-66,[dir=rtl] .layout-margin .flex-offset-xl-66,[dir=rtl] .layout-margin .offset-xl-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-start,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-start,.layout-align-xl-end-center,.layout-align-xl-end-end,.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-start,.layout-align-xl-space-around-end,.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-start,.layout-align-xl-space-between-end,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-start-start,.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-between-start,.layout-align-xl-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-start-center,.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-between-center,.layout-align-xl-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-start-center>*,.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-start-end,.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-between-end,.layout-align-xl-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-start-stretch,.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 100%;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: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-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-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-lg: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}}:root{--xc-ws-div-color: #011f6a;--xc-ws-text-color: #ffffff;--xc-ws-text-button-color: #ffffff;--xc-ws-button-color: #011f6a;--xc-ws-background-color: #fafafa;--xc-ws-client-height: 450px;--xc-ws-client-width: 295px}span.ng-binding,span.field-description{user-select:none}.centered-text{text-align:center}::-webkit-scrollbar{width:0;background:transparent}::-webkit-scrollbar-thumb{background:transparent;border-radius:0px}.field-description{font-size:13px;line-height:14px;color:gray;padding:5px 0px 5px 0px}.field-description.error{color:#dd2c00}.md-button.upload-button{padding:0 16px;height:36px}md-icon.material-icons{color:inherit !important}.white-label,.md-toolbar-tools .title{user-select:none}.white-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.white-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-fab.upload-button,.md-fab.upload-button.md-button.md-default-theme.md-raised:not([disabled]) md-icon,.md-fab.upload-button.md-button.md-raised:not([disabled]) md-icon{color:var(--xc-ws-text-color) !important;background:var(--xc-ws-div-color) !important}.form-input-container span{word-break:break-all}.chat-online ::-webkit-scrollbar{width:5px;background:var(--xc-ws-div-color)}.chat-online ::-webkit-scrollbar-thumb{background:linear-gradient(13deg, var(--xc-ws-text-color), var(--xc-ws-div-color));border-radius:10px}.chat-online ::-webkit-scrollbar-thumb:hover{background:linear-gradient(13deg, var(--xc-ws-div-color), var(--xc-ws-text-color))}.chat-online form{display:flex;width:100%;height:calc(100% - 20px);overflow:auto;padding:1em 0px 40px 0px;position:relative;max-width:100%;overflow-x:hidden;margin-bottom:10px}.chat-online form .form-field{margin-right:10px;margin-left:10px}.chat-online form .form-input-container{width:100%;height:100%;overflow:auto;scrollbar-width:none}.chat-online form div[ng-switch-when=label] md-content{overflow:hidden}.chat-online form div[ng-switch-when=label] md-content span{overflow:hidden}.chat-online form div.online-button-wrapper,.chat-online form div.offline-button-wrapper{position:fixed;bottom:30px;left:0px;width:calc(100% - 40px);padding:0px 20px;display:flex;background:transparent;align-items:center;justify-content:center}.chat-online form div.online-button-wrapper button,.chat-online form div.offline-button-wrapper button{margin:8px 0px;padding:2px;width:100%}.chat-online form .layout-row,.chat-online form .layout-column{flex-wrap:wrap;justify-content:start}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button,.chat-online form .layout-column md-checkbox,.chat-online form .layout-column md-radio-button{padding:4px 0;margin-left:unset !important;word-break:break-all}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button{min-width:50%;max-width:50%}.chat-online form button.upload-button{margin:6px 8px 6px 0}.chat-online form button.upload-button md-icon{font-size:20px}.chat-unmanaged{display:flex;flex-direction:column}.chat-unmanaged form{flex-grow:1;max-width:100%;overflow-x:hidden}.chat-closing{height:100%;padding:20px;overflow:hidden;align-items:stretch;justify-content:space-between}.chat-closing>md-content,.chat-closing>form{max-width:100%;overflow-x:hidden}.chat-closing>md-content,.chat-closing>md-content span,.chat-closing>form,.chat-closing>form span{width:100%}.logo{width:32px}#attachmentButton:hover .mdi-attachment:before{color:#555 !important;opacity:.85 !important}#input_text{position:relative !important;width:100% !important;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:1px solid #ccc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}#input_text:focus-within{border-color:#66afe9;outline:0;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#attachmentButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}i.icon_color{color:red}#sendButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}.emojionearea,.emojionearea.form-control{display:block;position:relative !important;width:100%;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:0px solid #ccc !important;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-webkit-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mdi mdi-attachment mdi-24px mdi-light ng-scope::before{color:#a9a9a9}.mdi-attachment:hover{color:#555 !important}.mdi-24px.mdi-set,.mdi-24px.mdi:before{color:#a9a9a9}.md-button.md-fab.md-mini{line-height:20px !important;min-height:24px !important}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>img{width:19px !important;height:19px !important;margin:0 1px !important}.emojionearea .emojionearea-picker{width:100% !important;right:0 !important;height:220px !important;top:0px !important}.emojionearea .emojionearea-picker .emojionearea-wrapper{position:relative;height:220px !important;width:100% !important}.emojionearea .emojionearea-picker.emojionearea-picker-position-top{margin-top:-100% !important}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-top{margin-top:-236px !important;width:260px !important;min-width:260px !important}.emojionearea .emojionearea-picker .emojionearea-search>input{width:100px !important;min-width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search{width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search-panel+.emojionearea-scroll-area{height:70% !important}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block{padding:0 !important}.emojionearea .emojionearea-picker .emojionearea-filters{background:#f5f7f9;padding:0 !important;height:40px}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter{width:25px !important;padding:7px 3px 0}#id-row,#chat-app{max-width:100%;width:100%;max-height:100%;height:100%}#chat-app{background-color:transparent}#chat-app .header-button{padding:0;margin:0;font-size:18px;cursor:pointer}ui-view{display:block;width:100%;height:100%}#chat-app .chat-toolbar{height:56px;min-height:56px;cursor:pointer;outline:0}#chat-app .chat-content{flex-grow:1;height:calc(100% - 56px);background:#fff;border:1px solid #d3d3d3;-ms-overflow-style:none;overflow:hidden;box-sizing:border-box}#chat-app .chat-content .chat-messages{height:calc(100% - 60px);overflow:auto;border-bottom:1px solid #d3d3d3}#chat-app .chat-content .chat-online{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .chat-content .chat-unmanaged{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .avatar-wrapper{position:relative;bottom:-3px;right:5px}#chat-app .chat-content .message-row .bubble{word-wrap:break-word;position:relative;max-width:190px;padding:6px 7px 8px 9px;background-color:#fff;border-radius:6px}#chat-app .chat-content .message-row .bubble .message{white-space:pre-wrap}#chat-app .chat-content .message-row .bubble .message-done{color:#dcdcdc}#chat-app .chat-content .message-row .bubble .message-done-all{color:#00bfff}#chat-app .chat-content .message-row .bubble:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADGUExURQAAAP////b29vn5+f///wAAAP///wAAAAAAAP///9ra2v////j4+PHx8fv7++Hh4fHx8f////////////////39/QAAAP////////z8/P////39/f39/fz8/P////////////z8/P////////////z8/P////////////v7+/Hx8f///9bW1vz8/K2trf////39/f39/WJiYgAAAExMTFtbWwAAAN3d3cjIyPr6+vX19QAAAO7u7vz8/NTU1Ofn5zMzM////zGPlXsAAABBdFJOUwAcm/kREh4CCDWL1SneR6TfAQffhMYK/A5nRrLWfRc5DW2ih5f+19Kn+9v4g/1LCJuXHwQUKgahcXS6DNnlDMMKKzPoTgAAAKBJREFUKM+V08USwmAQA+C/0NIWd3d3d8/7vxTMcIPkQK7f7CG7s8bQAOY/SCuwFYQU1P+eiCqIK2gpWCmoCrAgoKQgJ8CHgIqAMjg0MxxSQ3DogEMWFBZtUPAHYGB1CyDQWE6AH7BrfXzlAxGAQhECTGAmwN1Okz0Gb/LW4fEItIfrOfNELMh3tck7u+PhcT2zQ7l77/K8iY8yJwV3BeYFqpc/uSyPGdAAAAAASUVORK5CYII=);content:"";position:absolute;left:-11px;bottom:3px;width:12px;height:19px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain}#chat-app .chat-content .message-row .bubble .time{font-size:10px;text-align:right;margin-bottom:5px}#chat-app .chat-content .message-row.out .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.auto{align-items:flex-end;font-style:italic}#chat-app .chat-content .message-row.auto .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-size:17px;font-style:italic;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in{align-items:flex-end}#chat-app .chat-content .message-row.in2{align-items:flex-end}#chat-app .chat-content .message-row.out{align-items:flex-end}#chat-app .chat-content .message-row.in2 .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in2 .bubble{margin-right:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in2 .bubble:before{left:-11px;right:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=);-webkit-transform:rotate(180deg);transform:rotate(180deg)}#chat-app .chat-content .message-row.in .avatar{order:2;margin:0 0 0 16px;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in .bubble:before{right:-11px;left:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#chat-app .chat-footer{width:100%}#waiting{overflow:visible;height:calc(100% - 64px);background:#fff;text-align:center;flex:1 0 auto;padding:32px}#waiting .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54)}.sk-fading-circle{width:40px;height:40px;position:relative}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:"";display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}md-toast.md-success-toast .md-toast-content{background-color:green}md-toast.md-warning-toast .md-toast-content{background-color:#ffd103;color:#383838}md-toast.md-failure-toast .md-toast-content{background-color:red}md-toast.size .md-toast-content{font-weight:550;padding:0px;text-align:center;height:56px}md-toast.rounded .md-toast-content{border-radius:15px 15px 0px 0px}md-toast.squared .md-toast-content{border-radius:0px 0px 0px 0px}@media(min-device-width: 769px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:block}}@media(max-device-width: 768px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:none}}md-option .md-text{white-space:break-spaces}md-input-container{margin:0px 0px 8px 0px}.no-padding{padding:0 !important}
+ */html,body{height:100%;position:relative}body{margin:0;padding:0}[tabindex="-1"]:focus{outline:none}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:normal;background-color:inherit;text-align:left;border:none;padding:0;margin:0}select,button,textarea,input{vertical-align:baseline}input[type=reset],input[type=submit],html input[type=button],button{cursor:pointer;-webkit-appearance:button}input[type=reset][disabled],input[type=submit][disabled],html input[type=button][disabled],button[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-decoration,input[type=search]::-webkit-search-cancel-button{-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(0.4, 0, 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(0.25, 0.8, 0.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(0.25, 0.8, 0.25, 1),border .9s cubic-bezier(0.25, 0.8, 0.25, 1),width .9s cubic-bezier(0.25, 0.8, 0.25, 1),height .9s cubic-bezier(0.25, 0.8, 0.25, 1),opacity .9s cubic-bezier(0.25, 0.8, 0.25, 1),transform .9s cubic-bezier(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0px)}@media(min-width: 960px){.md-padding{padding:16px}}html[dir=rtl],html[dir=ltr],body[dir=rtl],body[dir=ltr]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}html,body{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:default;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:-0.01em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-0.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:.01em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.01em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.02em}.md-button{letter-spacing:.01em}button,select,html,textarea,input{font-family:Roboto,"Helvetica Neue",sans-serif}select,button,textarea,input{font-size:100%}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}.md-panel-inner-wrapper{position:fixed}._md-panel-offscreen{left:-9999px}._md-panel-hidden{display:none}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:relative}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(0.4, 0, 1, 1)}.md-panel._md-panel-animate-scale-out,.md-panel._md-panel-animate-fade-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:fixed;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(0.4, 0, 1, 1)}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}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:transparent;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] .md-show-clear-button button{display:block;position:absolute;right:0;top:20px;width:30px;height:30px}md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:30px}[dir=rtl] md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:0;padding-left: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 md-input-container,md-autocomplete md-autocomplete-wrap input{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:none;background:transparent;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete .md-show-clear-button 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:transparent;margin:auto 5px}md-autocomplete .md-show-clear-button 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(0.25, 0.8, 0.25, 1)}md-autocomplete .md-show-clear-button button:focus{outline:none}md-autocomplete .md-show-clear-button button:focus:after{transform:scale(1);opacity:1}md-autocomplete .md-show-clear-button button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%, -50%, 0) scale(0.9)}md-autocomplete .md-show-clear-button button md-icon path{stroke-width:0}md-autocomplete .md-show-clear-button button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete .md-show-clear-button button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete .md-show-clear-button button.ng-leave{transition:transform .15s ease-out}md-autocomplete .md-show-clear-button 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 .md-autocomplete-suggestion:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container,.md-standard-list-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);z-index:100;height:100%}.md-virtual-repeat-container.md-autocomplete-suggestions-container .highlight,.md-standard-list-container.md-autocomplete-suggestions-container .highlight{font-weight:bold}.md-standard-list-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;overflow-y:auto;padding:0}.md-virtual-repeat-container.md-not-found,.md-standard-list-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions .md-autocomplete-suggestion{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 .md-autocomplete-suggestion:focus{outline:none}.md-autocomplete-suggestions .md-autocomplete-suggestion:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast: active){md-autocomplete,.md-autocomplete-suggestions{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 400ms}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(0.25, 0.8, 0.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(0.55, 0, 0.55, 0.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:none}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:2px;box-sizing:border-box;user-select:none;outline:none;border:0;padding:0 8px;margin:6px 8px;background:transparent;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(0.25, 0.8, 0.25, 1),background-color .4s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){min-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){line-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){font-size:13px}.md-button:focus{outline:none}.md-button:hover,.md-button:focus{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:none}.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-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(0.55, 0, 0.55, 0.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-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button.md-fab[disabled]{box-shadow:none}.md-button:not([disabled]).md-raised.md-focused,.md-button:not([disabled]).md-fab.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-raised:active,.md-button:not([disabled]).md-fab:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:inherit;background-clip:padding-box;overflow:hidden;-webkit-transform:translateZ(0)}.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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 0px 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0px 0px 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0px 2px 2px 0px}@media screen and (-ms-high-contrast: active){.md-button.md-raised,.md-button.md-fab{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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-icon>svg{height:inherit;width:inherit}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>img,md-card>md-card-header img,md-card md-card-title-media 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-card-actions{margin:8px}md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}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-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}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-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[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-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[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-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-inline-form md-checkbox{margin-top:14px;margin-bottom:auto}md-checkbox{box-sizing:border-box;display:inline-block;white-space:nowrap;cursor:pointer;outline:none;user-select:none;position:relative;min-width:18px;min-height:48px}.md-dense>md-checkbox:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) md-checkbox:not(.md-dense-disabled){min-height:36px}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-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:18px;height:18px;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:18px;height:18px;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:4px;top:0px;display:table;width:6px;height:12px;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:10.8px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox .md-container{top:auto;left:auto;right:auto;margin:3px;margin-top:21px}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-top:10px;margin-bottom:auto;margin-left:36px}[dir=rtl] md-checkbox .md-label{margin-left:0;margin-right:36px}md-checkbox .md-label:empty{margin-left:24px;margin-right:0}[dir=rtl] md-checkbox .md-label:empty{margin-left:0}[dir=rtl] md-checkbox .md-label:empty{margin-right:24px}md-input-container .md-checkbox-link-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;cursor:pointer;top:-21px;margin-left:18px;margin-right:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-left:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-right:18px}.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-name,.md-contact-suggestion .md-contact-email{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}md-chips{display:flex}.md-chips{display:flex;flex-wrap:wrap;flex-grow:1;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:13px;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:28px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:28px}.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:none}.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:transparent;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;min-height:18px;min-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;flex-grow:1;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{width:100%}.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=url],.md-chips .md-chip-input-container input[type=text]{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=url]:focus,.md-chips .md-chip-input-container input[type=text]:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:transparent;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:none}.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:transparent;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-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(0.25, 0.8, 0.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-label.md-calendar-label-clickable{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:normal}.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;vertical-align:middle}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:none;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:none;background:transparent;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:-16px;top:13.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label .md-input{float:none}._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-has-triangle-icon{padding-right:18px;margin-right:-18px}[dir=rtl] ._md-datepicker-has-triangle-icon{padding-right:0;padding-left:18px}[dir=rtl] ._md-datepicker-has-triangle-icon{margin-right:auto;margin-left:-18px}.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:transparent;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(0.25, 0.8, 0.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:transparent;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(0.5, 0, 0.25, 1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:none}.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;bottom:-2.5px;transform:translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform: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-value>label,.md-datepicker-open.md-input-has-placeholder>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(0.25, 0.8, 0.25, 1);transition-delay:.125s}.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:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 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(0.25, 0.8, 0.25, 1);transform:translate(0, 0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate(0, 100%) scale(0.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:none}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-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-dialog-actions{padding-right:16px}[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}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}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-divider,.layout-gt-xs-row:not(.layout-sm-column)>md-divider,.layout-sm-row:not(.layout-sm-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-sm-row:not(.layout-md-column)>md-divider,.layout-md-row:not(.layout-md-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-md-row:not(.layout-lg-column)>md-divider,.layout-lg-row:not(.layout-lg-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>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-trigger,md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item{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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.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(0.55, 0, 0.55, 0.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all 200ms 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:-0.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-0.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(0.55, 0, 0.55, 0.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>figure,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile-footer{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-header,md-grid-list md-grid-tile md-grid-tile-footer{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-header h3,md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-footer h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer 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 0px;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 textarea,md-input-container input[type=text],md-input-container input[type=password],md-input-container input[type=datetime],md-input-container input[type=datetime-local],md-input-container input[type=date],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week],md-input-container input[type=number],md-input-container input[type=email],md-input-container input[type=url],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=color]{-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:30px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:30px;-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 label:not(.md-no-float):not(.md-container-ignore),md-input-container .md-placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;padding-right:0;z-index:1;transform:translate3d(0, 28px, 0) scale(1);transition:transform .4s cubic-bezier(0.25, 0.8, 0.25, 1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-left:0}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-right:2px}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{transform-origin:right top}md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-input-has-value .md-placeholder{padding-left:3px;padding-right:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-left:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-right:3px}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):not(.md-input-has-placeholder) input:not(:focus){color:transparent}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-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:none;padding-top:2px;padding-bottom:1px;padding-left:0;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;transition:border-color .4s cubic-bezier(0.25, 0.8, 0.25, 1);width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{padding-left:2px}[dir=rtl] md-input-container .md-input{padding-right:0}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:none}md-input-container .md-input:invalid{outline:none;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-message-animation,md-input-container .md-char-counter{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);opacity:1;margin-top:0;padding-top:8px}md-input-container .md-input-message-animation:not(.md-char-counter),md-input-container .md-char-counter:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter: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.ng-enter-prepare{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter:not(.ng-enter-active){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(0.75);transition:transform cubic-bezier(0.25, 0.8, 0.25, 1) .4s,width cubic-bezier(0.25, 0.8, 0.25, 1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container.md-input-focused .md-input,md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}md-input-container .md-input[disabled],[disabled] md-input-container .md-input{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(0.25, 0.8, 0.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:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder{width:calc(100% - 36px);padding:0}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:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left.md-icon-right>label .md-placeholder{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:transparent;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 0px 8px 0px}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:1.2em}md-list.md-dense:not(.md-dense-disabled) md-list-item,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner{min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item::before,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner::before{content:"";min-height:40px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner md-icon:first-child{width:20px;height:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:36px;margin-top:4px;margin-bottom:4px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px;margin-top:6px;margin-bottom:6px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container .md-secondary.md-button,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container .md-secondary.md-button{margin-top:4px;margin-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container md-checkbox:not(.md-dense-disabled),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container md-checkbox:not(.md-dense-disabled){min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) 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:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px;padding-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style::before{content:"";min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style::before{content:"";min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}md-list.md-dense:not(.md-dense-disabled) .md-subheader-inner{padding-top:12px;padding-bottom:12px}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:0px 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%}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner::before{content:"";min-height:inherit;visibility:hidden;display:inline-block}md-list-item.md-no-proxy,md-list-item .md-no-style{position:relative;padding:0px 16px;flex:1 1 auto}md-list-item.md-no-proxy.md-button,md-list-item .md-no-style.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-proxy.md-button,[dir=rtl] md-list-item .md-no-style.md-button{text-align:right}md-list-item.md-no-proxy.md-button>.md-ripple-container,md-list-item .md-no-style.md-button>.md-ripple-container{border-radius:0}md-list-item.md-no-proxy:focus,md-list-item .md-no-style:focus{outline:none}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::before,md-list-item .md-list-item-inner::before{content:"";min-height:48px;visibility:hidden;display:inline-block}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:first-child:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),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:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox,md-list-item 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-list-item-inner md-checkbox.md-secondary{align-self:center}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,md-list-item 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-list-item-inner md-checkbox.md-secondary .md-label{display:none}md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item .md-list-item-inner>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-checkbox,md-list-item .md-list-item-inner>md-checkbox{width:24px;min-height:40px;margin-left:0px;margin-right:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-left:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-right:0px}md-list-item .md-secondary-container,md-list-item .md-list-item-inner .md-secondary-container{display:flex;align-items:center;position:relative;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-left:0}md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type,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{margin-right:0}[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,[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{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-checkbox,md-list-item .md-list-item-inner .md-secondary-container md-checkbox{margin:0 6px;padding:0 8px;min-height:40px}md-list-item .md-secondary-container md-checkbox:last-child,md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{width:40px;margin-right:0}[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-switch,md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-secondary-container md-switch,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item>p,md-list-item>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item .md-list-item-inner>.md-list-item-inner>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:.01em;margin:0 0 0 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:.01em;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:.01em;margin:0 0 0 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,md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list-item.md-2-line>md-icon:first-child,md-list-item.md-2-line>.md-no-style>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-icon:first-child,md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px;max-height:calc(100vh - 10px);overflow:auto}.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(0.25, 0.8, 0.25, 1);transition-duration:200ms}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:200ms;transition-delay:100ms}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.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:32px}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-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px}md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:right}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:right;margin:0 8px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:left}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-item>.md-button,md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.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:normal;border-radius:0px;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:"▼";position:absolute;top:0px;speak:none;transform:rotate(270deg) scaleY(0.45) scaleX(0.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(0.45) scaleX(0.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:none;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(0.35, 0, 0.25, 1)}.md-button._md-nav-button:focus{outline:none}md-nav-ink-bar{background-color:#000;position:absolute;bottom:0;left:0;width:100%;height:2px;transform-origin:left top;will-change:transform;transition:transform .125s cubic-bezier(0.35, 0, 0.25, 1)}md-nav-ink-bar.ng-animate{transition:none}md-nav-extra-content{min-height:48px;padding-right:12px}@keyframes indeterminate-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block;transform:scale(1, 1)}[dir=rtl] md-progress-circular{transform:scale(-1, 1)}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 1568.63ms 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;transform:scale(1, 1)}[dir=rtl] md-progress-linear{transform:scale(-1, 1)}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:0px -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(0.39, 0.575, 0.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(0.3, 1)}100%{opacity:0;transform:translateX(-50%) scale(0, 1)}}@keyframes buffer{0%{opacity:1;background-position:0px -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(0.1);animation-timing-function:linear}36.6%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.334731432, 0.124819821, 0.785843996, 1)}69.15%{transform:scaleX(0.83);animation-timing-function:cubic-bezier(0.225732004, 0, 0.233648906, 1.3709798)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.1666666667%;animation-timing-function:linear}20%{left:-105.1666666667%;animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(0.302435, 0.38135197, 0.55, 0.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.205028172, 0.057050836, 0.57660995, 0.453970841)}19.15%{transform:scaleX(0.57);animation-timing-function:cubic-bezier(0.152312994, 0.196431957, 0.648373778, 1.00431535)}44.15%{transform:scaleX(0.91);animation-timing-function:cubic-bezier(0.25775882, -0.003163357, 0.211761916, 1.38178961)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(0.15, 0, 0.5150584, 0.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(0.3103299, 0.284057684, 0.8, 0.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(0.4, 0.627034903, 0.6, 0.902025796)}100%{left:117.3888888889%}}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(0.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:focus{outline:none}md-radio-group.md-focused.ng-not-empty .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group.md-focused.ng-empty>md-radio-button:first-child .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}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-radio-button,.layout-xs-row>md-radio-button{margin-bottom:0}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-radio-button,.layout-gt-xs-row:not(.layout-sm-column)>md-radio-button,.layout-sm-row:not(.layout-sm-column)>md-radio-button{margin-bottom:0}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-sm-row:not(.layout-md-column)>md-radio-button,.layout-md-row:not(.layout-md-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-md-row:not(.layout-lg-column)>md-radio-button,.layout-lg-row:not(.layout-lg-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button{margin-bottom:0}}.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 10px 2px 6px;box-sizing:border-box;margin-top:0;margin-bottom:0}.md-inline-form md-radio-group md-radio-button .md-label{top:4px}.md-inline-form md-radio-group md-radio-button .md-container{margin-top:2px}@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(0.25, 0.8, 0.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:not([placeholder]) .md-select-placeholder span:first-child{transform:translate(-2px, -22px) scale(0.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(0.25, 0.8, 0.25, 1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transition-delay:100ms}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:250ms}.md-inline-form md-select{margin-top:20px}md-input-container>md-select,.md-inline-form md-input-container>md-select{margin-top:0px}md-input-container>md-select{order:2}md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select.ng-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}md-select[required].ng-empty.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select.ng-required.ng-empty.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:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x;padding-bottom:2px;padding-top:1px;transform:translateY(1px)}md-select:focus{outline:none}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]):focus .md-select-value{border-bottom-style:solid;border-bottom-width:2px;padding-bottom:0px}md-input-container md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px}md-input-container md-select[disabled] .md-select-value{background-position:bottom -1px left 0}md-input-container md-select .md-select-value{min-height:26px;border-bottom-width:1px;padding-bottom:1px}md-input-container md-select .md-select-value.md-select-placeholder{padding-left:0;padding-right:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-left:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-right:0}.md-select-value{display:flex;align-items:center;padding-top:2px;padding-bottom:1px;padding-left:0;padding-right:2px;border-bottom-width:1px;border-bottom-style:solid;background-color:rgba(0,0,0,0);position:relative;box-sizing:content-box;min-width:88px;min-height:26px;margin-bottom:auto;-ms-flex-item-align:start;flex-grow:1}[dir=rtl] .md-select-value{padding-left:2px}[dir=rtl] .md-select-value{padding-right:0}.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:right;width:24px;transform:translateY(-2px);font-size:1.2rem}[dir=rtl] .md-select-value .md-select-icon{align-items:flex-start}[dir=rtl] .md-select-value .md-select-icon{text-align:left}.md-select-value .md-select-icon:after{display:block;content:"▼";position:relative;top:2px;right:-4px;left:auto;speak:none;font-size:13px;transform:scaleY(0.5)}[dir=rtl] .md-select-value .md-select-icon:after{right:auto}[dir=rtl] .md-select-value .md-select-icon:after{left:-4px}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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:none}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:18px;height:18px;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:18px;height:18px;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:4px;top:0px;display:table;width:6px;height:12px;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:10.8px;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(0.25, 0.8, 0.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.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.md-closed{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-closed.md-locked-open-add{position:static;display:flex;transform:translate3d(0%, 0, 0)}md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active){transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}.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(0.7)}30%{transform:scale(1)}100%{transform:scale(0.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(0.7)}50%{transform:scale(0.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(0.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:none;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(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0.7);transition:all .4s cubic-bezier(0.25, 0.8, 0.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(0.4) translate3d(0, 67.5px, 0);transition:all .3s cubic-bezier(0.35, 0, 0.25, 1)}md-slider .md-sign:after{position:absolute;content:"";left:0px;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(0.35, 0, 0.25, 1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0px}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:bold}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(0.7);opacity:0;transition:all .35s cubic-bezier(0.35, 0, 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(0.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:none}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-track-ticks,md-slider:not([md-discrete]) .md-sign{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(0.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(0.35, 0, 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(0.35, 0, 0.25, 1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(0.35, 0, 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(0.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(0.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:bold}md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete] .md-focused .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(0.25, 0.8, 0.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:0px 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0px 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 0 0 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-swipe-left],[md-swipe-right]{touch-action:pan-y}[md-swipe-up],[md-swipe-down]{touch-action:pan-x}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:none;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:0px;margin-left:8px}md-switch.md-inverted .md-container{margin-right:initial;margin-left:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-right:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-left:initial}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}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:none;height:20px;width:20px;border-radius:50%;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 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-container,md-switch:not(.md-dragging) .md-thumb{transition:all .08s linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:.05s}@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:translate(0, 0)}md-tabs-wrapper md-prev-button,md-tabs-wrapper md-next-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(0.35, 0, 0.25, 1)}md-tabs-wrapper md-prev-button:focus,md-tabs-wrapper md-next-button:focus{outline:none}md-tabs-wrapper md-prev-button.md-disabled,md-tabs-wrapper md-next-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-prev-button.ng-leave,md-tabs-wrapper md-next-button.ng-leave{transition:none}md-tabs-wrapper md-prev-button md-icon,md-tabs-wrapper md-next-button md-icon{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}[dir=rtl] md-tabs-wrapper md-prev-button,[dir=rtl] md-tabs-wrapper md-next-button{transform:rotateY(180deg) translateY(-50%)}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:translate(-50%, -50%) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;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:flex;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);position:absolute;left:0;transform:translate(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;justify-content:center}md-pagination-wrapper md-tab-item{min-width:72px}@media(min-width: 600px){md-pagination-wrapper md-tab-item{min-width:160px}}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:flex;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);overflow:auto;transform:translate(0, 0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.ng-leave,md-tab-content.md-no-transition{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;visibility:hidden}[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;visibility:hidden}[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{flex:1 0 100%;min-width:0}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 .125s cubic-bezier(0.35, 0, 0.25, 1),right .25s cubic-bezier(0.35, 0, 0.25, 1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(0.35, 0, 0.25, 1),right .125s cubic-bezier(0.35, 0, 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;transition:background-color .35s cubic-bezier(0.35, 0, 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,.md-tab:focus{box-shadow:none;outline:none}.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,md-toolbar+md-dialog-content md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 8px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-toast .md-toast-content{display:flex;flex-direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 16px;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(0deg);transition:all .4s cubic-bezier(0.25, 0.8, 0.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(0.55, 0, 0.55, 0.2)}md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content,md-toast.md-swipedown .md-toast-content{transition:all .4s cubic-bezier(0.25, 0.8, 0.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:8px}[dir=rtl] md-toast .md-button{margin-right:8px}[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(0.35, 0, 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 *:before,md-toolbar *:after{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-checkbox{margin:inherit}.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(0.35, 0, 0.25, 1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.ng-animate,.md-toolbar-tools .md-button.md-icon-button md-icon.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{display:inline-block;pointer-events:none;border-radius:4px;overflow:hidden;opacity:0;font-weight:500;font-size:14px;white-space:nowrap;text-overflow:ellipsis;height:32px;line-height:32px;padding-right:16px;padding-left:16px}.md-tooltip.md-origin-top{transform-origin:center bottom;margin-top:-24px}.md-tooltip.md-origin-right{transform-origin:left center;margin-left:24px}.md-tooltip.md-origin-bottom{transform-origin:center top;margin-top:24px}.md-tooltip.md-origin-left{transform-origin:right center;margin-left:-24px}@media(min-width: 960px){.md-tooltip{font-size:10px;height:22px;line-height:22px;padding-right:8px;padding-left:8px}.md-tooltip.md-origin-top{margin-top:-14px}.md-tooltip.md-origin-right{margin-left:14px}.md-tooltip.md-origin-bottom{margin-top:14px}.md-tooltip.md-origin-left{margin-left:-14px}}.md-tooltip.md-show-add{transform:scale(0)}.md-tooltip.md-show{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:150ms;transform:scale(1);opacity:.9}.md-tooltip.md-hide{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transform:scale(0);opacity:0}.md-truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.md-truncate.md-clip{text-overflow:clip}.md-truncate.flex{width:0}.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:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0px 1px 5px 0px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0px 1px 8px 0px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 5px 8px 0px rgba(0,0,0,.14),0px 1px 14px 0px rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0px 4px 5px -2px rgba(0,0,0,.2),0px 7px 10px 1px rgba(0,0,0,.14),0px 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0px 5px 6px -3px rgba(0,0,0,.2),0px 9px 12px 1px rgba(0,0,0,.14),0px 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0px 6px 6px -3px rgba(0,0,0,.2),0px 10px 14px 1px rgba(0,0,0,.14),0px 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0px 6px 7px -4px rgba(0,0,0,.2),0px 11px 15px 1px rgba(0,0,0,.14),0px 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0px 7px 9px -4px rgba(0,0,0,.2),0px 14px 21px 2px rgba(0,0,0,.14),0px 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0px 8px 9px -5px rgba(0,0,0,.2),0px 15px 22px 2px rgba(0,0,0,.14),0px 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0px 8px 10px -5px rgba(0,0,0,.2),0px 16px 24px 2px rgba(0,0,0,.14),0px 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0px 8px 11px -5px rgba(0,0,0,.2),0px 17px 26px 2px rgba(0,0,0,.14),0px 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0px 9px 11px -5px rgba(0,0,0,.2),0px 18px 28px 2px rgba(0,0,0,.14),0px 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0px 9px 12px -6px rgba(0,0,0,.2),0px 19px 29px 2px rgba(0,0,0,.14),0px 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 20px 31px 3px rgba(0,0,0,.14),0px 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 21px 33px 3px rgba(0,0,0,.14),0px 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0px 10px 14px -6px rgba(0,0,0,.2),0px 22px 35px 3px rgba(0,0,0,.14),0px 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0px 11px 14px -7px rgba(0,0,0,.2),0px 23px 36px 3px rgba(0,0,0,.14),0px 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 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],[ng-cloak],[data-ng-cloak],[x-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}.offset-0,.flex-offset-0,.layout-margin .flex-offset-0,.layout-margin .offset-0{margin-left:0}[dir=rtl] .offset-0,[dir=rtl] .flex-offset-0,[dir=rtl] .layout-margin .flex-offset-0,[dir=rtl] .layout-margin .offset-0{margin-left:auto;margin-right:0}.offset-5,.flex-offset-5,.layout-margin .flex-offset-5,.layout-margin .offset-5{margin-left:5%}[dir=rtl] .offset-5,[dir=rtl] .flex-offset-5,[dir=rtl] .layout-margin .flex-offset-5,[dir=rtl] .layout-margin .offset-5{margin-left:auto;margin-right:5%}.offset-10,.flex-offset-10,.layout-margin .flex-offset-10,.layout-margin .offset-10{margin-left:10%}[dir=rtl] .offset-10,[dir=rtl] .flex-offset-10,[dir=rtl] .layout-margin .flex-offset-10,[dir=rtl] .layout-margin .offset-10{margin-left:auto;margin-right:10%}.offset-15,.flex-offset-15,.layout-margin .flex-offset-15,.layout-margin .offset-15{margin-left:15%}[dir=rtl] .offset-15,[dir=rtl] .flex-offset-15,[dir=rtl] .layout-margin .flex-offset-15,[dir=rtl] .layout-margin .offset-15{margin-left:auto;margin-right:15%}.offset-20,.flex-offset-20,.layout-margin .flex-offset-20,.layout-margin .offset-20{margin-left:20%}[dir=rtl] .offset-20,[dir=rtl] .flex-offset-20,[dir=rtl] .layout-margin .flex-offset-20,[dir=rtl] .layout-margin .offset-20{margin-left:auto;margin-right:20%}.offset-25,.flex-offset-25,.layout-margin .flex-offset-25,.layout-margin .offset-25{margin-left:25%}[dir=rtl] .offset-25,[dir=rtl] .flex-offset-25,[dir=rtl] .layout-margin .flex-offset-25,[dir=rtl] .layout-margin .offset-25{margin-left:auto;margin-right:25%}.offset-30,.flex-offset-30,.layout-margin .flex-offset-30,.layout-margin .offset-30{margin-left:30%}[dir=rtl] .offset-30,[dir=rtl] .flex-offset-30,[dir=rtl] .layout-margin .flex-offset-30,[dir=rtl] .layout-margin .offset-30{margin-left:auto;margin-right:30%}.offset-35,.flex-offset-35,.layout-margin .flex-offset-35,.layout-margin .offset-35{margin-left:35%}[dir=rtl] .offset-35,[dir=rtl] .flex-offset-35,[dir=rtl] .layout-margin .flex-offset-35,[dir=rtl] .layout-margin .offset-35{margin-left:auto;margin-right:35%}.offset-40,.flex-offset-40,.layout-margin .flex-offset-40,.layout-margin .offset-40{margin-left:40%}[dir=rtl] .offset-40,[dir=rtl] .flex-offset-40,[dir=rtl] .layout-margin .flex-offset-40,[dir=rtl] .layout-margin .offset-40{margin-left:auto;margin-right:40%}.offset-45,.flex-offset-45,.layout-margin .flex-offset-45,.layout-margin .offset-45{margin-left:45%}[dir=rtl] .offset-45,[dir=rtl] .flex-offset-45,[dir=rtl] .layout-margin .flex-offset-45,[dir=rtl] .layout-margin .offset-45{margin-left:auto;margin-right:45%}.offset-50,.flex-offset-50,.layout-margin .flex-offset-50,.layout-margin .offset-50{margin-left:50%}[dir=rtl] .offset-50,[dir=rtl] .flex-offset-50,[dir=rtl] .layout-margin .flex-offset-50,[dir=rtl] .layout-margin .offset-50{margin-left:auto;margin-right:50%}.offset-55,.flex-offset-55,.layout-margin .flex-offset-55,.layout-margin .offset-55{margin-left:55%}[dir=rtl] .offset-55,[dir=rtl] .flex-offset-55,[dir=rtl] .layout-margin .flex-offset-55,[dir=rtl] .layout-margin .offset-55{margin-left:auto;margin-right:55%}.offset-60,.flex-offset-60,.layout-margin .flex-offset-60,.layout-margin .offset-60{margin-left:60%}[dir=rtl] .offset-60,[dir=rtl] .flex-offset-60,[dir=rtl] .layout-margin .flex-offset-60,[dir=rtl] .layout-margin .offset-60{margin-left:auto;margin-right:60%}.offset-65,.flex-offset-65,.layout-margin .flex-offset-65,.layout-margin .offset-65{margin-left:65%}[dir=rtl] .offset-65,[dir=rtl] .flex-offset-65,[dir=rtl] .layout-margin .flex-offset-65,[dir=rtl] .layout-margin .offset-65{margin-left:auto;margin-right:65%}.offset-70,.flex-offset-70,.layout-margin .flex-offset-70,.layout-margin .offset-70{margin-left:70%}[dir=rtl] .offset-70,[dir=rtl] .flex-offset-70,[dir=rtl] .layout-margin .flex-offset-70,[dir=rtl] .layout-margin .offset-70{margin-left:auto;margin-right:70%}.offset-75,.flex-offset-75,.layout-margin .flex-offset-75,.layout-margin .offset-75{margin-left:75%}[dir=rtl] .offset-75,[dir=rtl] .flex-offset-75,[dir=rtl] .layout-margin .flex-offset-75,[dir=rtl] .layout-margin .offset-75{margin-left:auto;margin-right:75%}.offset-80,.flex-offset-80,.layout-margin .flex-offset-80,.layout-margin .offset-80{margin-left:80%}[dir=rtl] .offset-80,[dir=rtl] .flex-offset-80,[dir=rtl] .layout-margin .flex-offset-80,[dir=rtl] .layout-margin .offset-80{margin-left:auto;margin-right:80%}.offset-85,.flex-offset-85,.layout-margin .flex-offset-85,.layout-margin .offset-85{margin-left:85%}[dir=rtl] .offset-85,[dir=rtl] .flex-offset-85,[dir=rtl] .layout-margin .flex-offset-85,[dir=rtl] .layout-margin .offset-85{margin-left:auto;margin-right:85%}.offset-90,.flex-offset-90,.layout-margin .flex-offset-90,.layout-margin .offset-90{margin-left:90%}[dir=rtl] .offset-90,[dir=rtl] .flex-offset-90,[dir=rtl] .layout-margin .flex-offset-90,[dir=rtl] .layout-margin .offset-90{margin-left:auto;margin-right:90%}.offset-95,.flex-offset-95,.layout-margin .flex-offset-95,.layout-margin .offset-95{margin-left:95%}[dir=rtl] .offset-95,[dir=rtl] .flex-offset-95,[dir=rtl] .layout-margin .flex-offset-95,[dir=rtl] .layout-margin .offset-95{margin-left:auto;margin-right:95%}.offset-33,.flex-offset-33,.layout-margin .flex-offset-33,.layout-margin .offset-33{margin-left:33.3333333333%}.offset-66,.flex-offset-66,.layout-margin .flex-offset-66,.layout-margin .offset-66{margin-left:66.6666666667%}[dir=rtl] .offset-66,[dir=rtl] .flex-offset-66,[dir=rtl] .layout-margin .flex-offset-66,[dir=rtl] .layout-margin .offset-66{margin-left:auto;margin-right:66.6666666667%}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-start,.layout-align-center-center,.layout-align-center-end,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-start,.layout-align-end-center,.layout-align-end-end,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-start,.layout-align-space-around-end,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-start,.layout-align-space-between-end,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-start-start,.layout-align-center-start,.layout-align-end-start,.layout-align-space-between-start,.layout-align-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-start-center,.layout-align-center-center,.layout-align-end-center,.layout-align-space-between-center,.layout-align-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-start-center>*,.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-between-center>*,.layout-align-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-start-end,.layout-align-center-end,.layout-align-end-end,.layout-align-space-between-end,.layout-align-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-start-stretch,.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-between-stretch,.layout-align-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 100%;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}.flex-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.flex-66{flex:1 1 100%;max-width:66.66%;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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 100%;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-md,.layout-padding>*,.layout-padding-gt-sm>*,.layout-padding-md>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding-gt-lg>*,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg,.layout-padding>.flex-lg,.layout-padding>.flex-gt-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-md,.layout-margin>*,.layout-margin-gt-sm>*,.layout-margin-md>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin-gt-lg>*,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg,.layout-margin>.flex-gt-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}.offset-xs-0,.flex-offset-xs-0,.layout-margin .flex-offset-xs-0,.layout-margin .offset-xs-0{margin-left:0}[dir=rtl] .offset-xs-0,[dir=rtl] .flex-offset-xs-0,[dir=rtl] .layout-margin .flex-offset-xs-0,[dir=rtl] .layout-margin .offset-xs-0{margin-left:auto;margin-right:0}.offset-xs-5,.flex-offset-xs-5,.layout-margin .flex-offset-xs-5,.layout-margin .offset-xs-5{margin-left:5%}[dir=rtl] .offset-xs-5,[dir=rtl] .flex-offset-xs-5,[dir=rtl] .layout-margin .flex-offset-xs-5,[dir=rtl] .layout-margin .offset-xs-5{margin-left:auto;margin-right:5%}.offset-xs-10,.flex-offset-xs-10,.layout-margin .flex-offset-xs-10,.layout-margin .offset-xs-10{margin-left:10%}[dir=rtl] .offset-xs-10,[dir=rtl] .flex-offset-xs-10,[dir=rtl] .layout-margin .flex-offset-xs-10,[dir=rtl] .layout-margin .offset-xs-10{margin-left:auto;margin-right:10%}.offset-xs-15,.flex-offset-xs-15,.layout-margin .flex-offset-xs-15,.layout-margin .offset-xs-15{margin-left:15%}[dir=rtl] .offset-xs-15,[dir=rtl] .flex-offset-xs-15,[dir=rtl] .layout-margin .flex-offset-xs-15,[dir=rtl] .layout-margin .offset-xs-15{margin-left:auto;margin-right:15%}.offset-xs-20,.flex-offset-xs-20,.layout-margin .flex-offset-xs-20,.layout-margin .offset-xs-20{margin-left:20%}[dir=rtl] .offset-xs-20,[dir=rtl] .flex-offset-xs-20,[dir=rtl] .layout-margin .flex-offset-xs-20,[dir=rtl] .layout-margin .offset-xs-20{margin-left:auto;margin-right:20%}.offset-xs-25,.flex-offset-xs-25,.layout-margin .flex-offset-xs-25,.layout-margin .offset-xs-25{margin-left:25%}[dir=rtl] .offset-xs-25,[dir=rtl] .flex-offset-xs-25,[dir=rtl] .layout-margin .flex-offset-xs-25,[dir=rtl] .layout-margin .offset-xs-25{margin-left:auto;margin-right:25%}.offset-xs-30,.flex-offset-xs-30,.layout-margin .flex-offset-xs-30,.layout-margin .offset-xs-30{margin-left:30%}[dir=rtl] .offset-xs-30,[dir=rtl] .flex-offset-xs-30,[dir=rtl] .layout-margin .flex-offset-xs-30,[dir=rtl] .layout-margin .offset-xs-30{margin-left:auto;margin-right:30%}.offset-xs-35,.flex-offset-xs-35,.layout-margin .flex-offset-xs-35,.layout-margin .offset-xs-35{margin-left:35%}[dir=rtl] .offset-xs-35,[dir=rtl] .flex-offset-xs-35,[dir=rtl] .layout-margin .flex-offset-xs-35,[dir=rtl] .layout-margin .offset-xs-35{margin-left:auto;margin-right:35%}.offset-xs-40,.flex-offset-xs-40,.layout-margin .flex-offset-xs-40,.layout-margin .offset-xs-40{margin-left:40%}[dir=rtl] .offset-xs-40,[dir=rtl] .flex-offset-xs-40,[dir=rtl] .layout-margin .flex-offset-xs-40,[dir=rtl] .layout-margin .offset-xs-40{margin-left:auto;margin-right:40%}.offset-xs-45,.flex-offset-xs-45,.layout-margin .flex-offset-xs-45,.layout-margin .offset-xs-45{margin-left:45%}[dir=rtl] .offset-xs-45,[dir=rtl] .flex-offset-xs-45,[dir=rtl] .layout-margin .flex-offset-xs-45,[dir=rtl] .layout-margin .offset-xs-45{margin-left:auto;margin-right:45%}.offset-xs-50,.flex-offset-xs-50,.layout-margin .flex-offset-xs-50,.layout-margin .offset-xs-50{margin-left:50%}[dir=rtl] .offset-xs-50,[dir=rtl] .flex-offset-xs-50,[dir=rtl] .layout-margin .flex-offset-xs-50,[dir=rtl] .layout-margin .offset-xs-50{margin-left:auto;margin-right:50%}.offset-xs-55,.flex-offset-xs-55,.layout-margin .flex-offset-xs-55,.layout-margin .offset-xs-55{margin-left:55%}[dir=rtl] .offset-xs-55,[dir=rtl] .flex-offset-xs-55,[dir=rtl] .layout-margin .flex-offset-xs-55,[dir=rtl] .layout-margin .offset-xs-55{margin-left:auto;margin-right:55%}.offset-xs-60,.flex-offset-xs-60,.layout-margin .flex-offset-xs-60,.layout-margin .offset-xs-60{margin-left:60%}[dir=rtl] .offset-xs-60,[dir=rtl] .flex-offset-xs-60,[dir=rtl] .layout-margin .flex-offset-xs-60,[dir=rtl] .layout-margin .offset-xs-60{margin-left:auto;margin-right:60%}.offset-xs-65,.flex-offset-xs-65,.layout-margin .flex-offset-xs-65,.layout-margin .offset-xs-65{margin-left:65%}[dir=rtl] .offset-xs-65,[dir=rtl] .flex-offset-xs-65,[dir=rtl] .layout-margin .flex-offset-xs-65,[dir=rtl] .layout-margin .offset-xs-65{margin-left:auto;margin-right:65%}.offset-xs-70,.flex-offset-xs-70,.layout-margin .flex-offset-xs-70,.layout-margin .offset-xs-70{margin-left:70%}[dir=rtl] .offset-xs-70,[dir=rtl] .flex-offset-xs-70,[dir=rtl] .layout-margin .flex-offset-xs-70,[dir=rtl] .layout-margin .offset-xs-70{margin-left:auto;margin-right:70%}.offset-xs-75,.flex-offset-xs-75,.layout-margin .flex-offset-xs-75,.layout-margin .offset-xs-75{margin-left:75%}[dir=rtl] .offset-xs-75,[dir=rtl] .flex-offset-xs-75,[dir=rtl] .layout-margin .flex-offset-xs-75,[dir=rtl] .layout-margin .offset-xs-75{margin-left:auto;margin-right:75%}.offset-xs-80,.flex-offset-xs-80,.layout-margin .flex-offset-xs-80,.layout-margin .offset-xs-80{margin-left:80%}[dir=rtl] .offset-xs-80,[dir=rtl] .flex-offset-xs-80,[dir=rtl] .layout-margin .flex-offset-xs-80,[dir=rtl] .layout-margin .offset-xs-80{margin-left:auto;margin-right:80%}.offset-xs-85,.flex-offset-xs-85,.layout-margin .flex-offset-xs-85,.layout-margin .offset-xs-85{margin-left:85%}[dir=rtl] .offset-xs-85,[dir=rtl] .flex-offset-xs-85,[dir=rtl] .layout-margin .flex-offset-xs-85,[dir=rtl] .layout-margin .offset-xs-85{margin-left:auto;margin-right:85%}.offset-xs-90,.flex-offset-xs-90,.layout-margin .flex-offset-xs-90,.layout-margin .offset-xs-90{margin-left:90%}[dir=rtl] .offset-xs-90,[dir=rtl] .flex-offset-xs-90,[dir=rtl] .layout-margin .flex-offset-xs-90,[dir=rtl] .layout-margin .offset-xs-90{margin-left:auto;margin-right:90%}.offset-xs-95,.flex-offset-xs-95,.layout-margin .flex-offset-xs-95,.layout-margin .offset-xs-95{margin-left:95%}[dir=rtl] .offset-xs-95,[dir=rtl] .flex-offset-xs-95,[dir=rtl] .layout-margin .flex-offset-xs-95,[dir=rtl] .layout-margin .offset-xs-95{margin-left:auto;margin-right:95%}.offset-xs-33,.flex-offset-xs-33,.layout-margin .flex-offset-xs-33,.layout-margin .offset-xs-33{margin-left:33.3333333333%}.offset-xs-66,.flex-offset-xs-66,.layout-margin .flex-offset-xs-66,.layout-margin .offset-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-xs-66,[dir=rtl] .flex-offset-xs-66,[dir=rtl] .layout-margin .flex-offset-xs-66,[dir=rtl] .layout-margin .offset-xs-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-start,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-start,.layout-align-xs-end-center,.layout-align-xs-end-end,.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-start,.layout-align-xs-space-around-end,.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-start,.layout-align-xs-space-between-end,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-start-start,.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-between-start,.layout-align-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-start-center,.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-between-center,.layout-align-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-start-center>*,.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-start-end,.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-between-end,.layout-align-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-start-stretch,.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 100%;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}.offset-gt-xs-0,.flex-offset-gt-xs-0,.layout-margin .flex-offset-gt-xs-0,.layout-margin .offset-gt-xs-0{margin-left:0}[dir=rtl] .offset-gt-xs-0,[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .offset-gt-xs-0{margin-left:auto;margin-right:0}.offset-gt-xs-5,.flex-offset-gt-xs-5,.layout-margin .flex-offset-gt-xs-5,.layout-margin .offset-gt-xs-5{margin-left:5%}[dir=rtl] .offset-gt-xs-5,[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .offset-gt-xs-5{margin-left:auto;margin-right:5%}.offset-gt-xs-10,.flex-offset-gt-xs-10,.layout-margin .flex-offset-gt-xs-10,.layout-margin .offset-gt-xs-10{margin-left:10%}[dir=rtl] .offset-gt-xs-10,[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .offset-gt-xs-10{margin-left:auto;margin-right:10%}.offset-gt-xs-15,.flex-offset-gt-xs-15,.layout-margin .flex-offset-gt-xs-15,.layout-margin .offset-gt-xs-15{margin-left:15%}[dir=rtl] .offset-gt-xs-15,[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .offset-gt-xs-15{margin-left:auto;margin-right:15%}.offset-gt-xs-20,.flex-offset-gt-xs-20,.layout-margin .flex-offset-gt-xs-20,.layout-margin .offset-gt-xs-20{margin-left:20%}[dir=rtl] .offset-gt-xs-20,[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .offset-gt-xs-20{margin-left:auto;margin-right:20%}.offset-gt-xs-25,.flex-offset-gt-xs-25,.layout-margin .flex-offset-gt-xs-25,.layout-margin .offset-gt-xs-25{margin-left:25%}[dir=rtl] .offset-gt-xs-25,[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .offset-gt-xs-25{margin-left:auto;margin-right:25%}.offset-gt-xs-30,.flex-offset-gt-xs-30,.layout-margin .flex-offset-gt-xs-30,.layout-margin .offset-gt-xs-30{margin-left:30%}[dir=rtl] .offset-gt-xs-30,[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .offset-gt-xs-30{margin-left:auto;margin-right:30%}.offset-gt-xs-35,.flex-offset-gt-xs-35,.layout-margin .flex-offset-gt-xs-35,.layout-margin .offset-gt-xs-35{margin-left:35%}[dir=rtl] .offset-gt-xs-35,[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .offset-gt-xs-35{margin-left:auto;margin-right:35%}.offset-gt-xs-40,.flex-offset-gt-xs-40,.layout-margin .flex-offset-gt-xs-40,.layout-margin .offset-gt-xs-40{margin-left:40%}[dir=rtl] .offset-gt-xs-40,[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .offset-gt-xs-40{margin-left:auto;margin-right:40%}.offset-gt-xs-45,.flex-offset-gt-xs-45,.layout-margin .flex-offset-gt-xs-45,.layout-margin .offset-gt-xs-45{margin-left:45%}[dir=rtl] .offset-gt-xs-45,[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .offset-gt-xs-45{margin-left:auto;margin-right:45%}.offset-gt-xs-50,.flex-offset-gt-xs-50,.layout-margin .flex-offset-gt-xs-50,.layout-margin .offset-gt-xs-50{margin-left:50%}[dir=rtl] .offset-gt-xs-50,[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .offset-gt-xs-50{margin-left:auto;margin-right:50%}.offset-gt-xs-55,.flex-offset-gt-xs-55,.layout-margin .flex-offset-gt-xs-55,.layout-margin .offset-gt-xs-55{margin-left:55%}[dir=rtl] .offset-gt-xs-55,[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .offset-gt-xs-55{margin-left:auto;margin-right:55%}.offset-gt-xs-60,.flex-offset-gt-xs-60,.layout-margin .flex-offset-gt-xs-60,.layout-margin .offset-gt-xs-60{margin-left:60%}[dir=rtl] .offset-gt-xs-60,[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .offset-gt-xs-60{margin-left:auto;margin-right:60%}.offset-gt-xs-65,.flex-offset-gt-xs-65,.layout-margin .flex-offset-gt-xs-65,.layout-margin .offset-gt-xs-65{margin-left:65%}[dir=rtl] .offset-gt-xs-65,[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .offset-gt-xs-65{margin-left:auto;margin-right:65%}.offset-gt-xs-70,.flex-offset-gt-xs-70,.layout-margin .flex-offset-gt-xs-70,.layout-margin .offset-gt-xs-70{margin-left:70%}[dir=rtl] .offset-gt-xs-70,[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .offset-gt-xs-70{margin-left:auto;margin-right:70%}.offset-gt-xs-75,.flex-offset-gt-xs-75,.layout-margin .flex-offset-gt-xs-75,.layout-margin .offset-gt-xs-75{margin-left:75%}[dir=rtl] .offset-gt-xs-75,[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .offset-gt-xs-75{margin-left:auto;margin-right:75%}.offset-gt-xs-80,.flex-offset-gt-xs-80,.layout-margin .flex-offset-gt-xs-80,.layout-margin .offset-gt-xs-80{margin-left:80%}[dir=rtl] .offset-gt-xs-80,[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .offset-gt-xs-80{margin-left:auto;margin-right:80%}.offset-gt-xs-85,.flex-offset-gt-xs-85,.layout-margin .flex-offset-gt-xs-85,.layout-margin .offset-gt-xs-85{margin-left:85%}[dir=rtl] .offset-gt-xs-85,[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .offset-gt-xs-85{margin-left:auto;margin-right:85%}.offset-gt-xs-90,.flex-offset-gt-xs-90,.layout-margin .flex-offset-gt-xs-90,.layout-margin .offset-gt-xs-90{margin-left:90%}[dir=rtl] .offset-gt-xs-90,[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .offset-gt-xs-90{margin-left:auto;margin-right:90%}.offset-gt-xs-95,.flex-offset-gt-xs-95,.layout-margin .flex-offset-gt-xs-95,.layout-margin .offset-gt-xs-95{margin-left:95%}[dir=rtl] .offset-gt-xs-95,[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .offset-gt-xs-95{margin-left:auto;margin-right:95%}.offset-gt-xs-33,.flex-offset-gt-xs-33,.layout-margin .flex-offset-gt-xs-33,.layout-margin .offset-gt-xs-33{margin-left:33.3333333333%}.offset-gt-xs-66,.flex-offset-gt-xs-66,.layout-margin .flex-offset-gt-xs-66,.layout-margin .offset-gt-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-xs-66,[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .offset-gt-xs-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.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-start,.layout-align-gt-xs-space-around-end,.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-start,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-start-start,.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-start-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-start-center>*,.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-start-end,.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-start-stretch,.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 100%;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:not(.show-gt-xs):not(.show-sm):not(.show),.hide-gt-xs: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}.offset-sm-0,.flex-offset-sm-0,.layout-margin .flex-offset-sm-0,.layout-margin .offset-sm-0{margin-left:0}[dir=rtl] .offset-sm-0,[dir=rtl] .flex-offset-sm-0,[dir=rtl] .layout-margin .flex-offset-sm-0,[dir=rtl] .layout-margin .offset-sm-0{margin-left:auto;margin-right:0}.offset-sm-5,.flex-offset-sm-5,.layout-margin .flex-offset-sm-5,.layout-margin .offset-sm-5{margin-left:5%}[dir=rtl] .offset-sm-5,[dir=rtl] .flex-offset-sm-5,[dir=rtl] .layout-margin .flex-offset-sm-5,[dir=rtl] .layout-margin .offset-sm-5{margin-left:auto;margin-right:5%}.offset-sm-10,.flex-offset-sm-10,.layout-margin .flex-offset-sm-10,.layout-margin .offset-sm-10{margin-left:10%}[dir=rtl] .offset-sm-10,[dir=rtl] .flex-offset-sm-10,[dir=rtl] .layout-margin .flex-offset-sm-10,[dir=rtl] .layout-margin .offset-sm-10{margin-left:auto;margin-right:10%}.offset-sm-15,.flex-offset-sm-15,.layout-margin .flex-offset-sm-15,.layout-margin .offset-sm-15{margin-left:15%}[dir=rtl] .offset-sm-15,[dir=rtl] .flex-offset-sm-15,[dir=rtl] .layout-margin .flex-offset-sm-15,[dir=rtl] .layout-margin .offset-sm-15{margin-left:auto;margin-right:15%}.offset-sm-20,.flex-offset-sm-20,.layout-margin .flex-offset-sm-20,.layout-margin .offset-sm-20{margin-left:20%}[dir=rtl] .offset-sm-20,[dir=rtl] .flex-offset-sm-20,[dir=rtl] .layout-margin .flex-offset-sm-20,[dir=rtl] .layout-margin .offset-sm-20{margin-left:auto;margin-right:20%}.offset-sm-25,.flex-offset-sm-25,.layout-margin .flex-offset-sm-25,.layout-margin .offset-sm-25{margin-left:25%}[dir=rtl] .offset-sm-25,[dir=rtl] .flex-offset-sm-25,[dir=rtl] .layout-margin .flex-offset-sm-25,[dir=rtl] .layout-margin .offset-sm-25{margin-left:auto;margin-right:25%}.offset-sm-30,.flex-offset-sm-30,.layout-margin .flex-offset-sm-30,.layout-margin .offset-sm-30{margin-left:30%}[dir=rtl] .offset-sm-30,[dir=rtl] .flex-offset-sm-30,[dir=rtl] .layout-margin .flex-offset-sm-30,[dir=rtl] .layout-margin .offset-sm-30{margin-left:auto;margin-right:30%}.offset-sm-35,.flex-offset-sm-35,.layout-margin .flex-offset-sm-35,.layout-margin .offset-sm-35{margin-left:35%}[dir=rtl] .offset-sm-35,[dir=rtl] .flex-offset-sm-35,[dir=rtl] .layout-margin .flex-offset-sm-35,[dir=rtl] .layout-margin .offset-sm-35{margin-left:auto;margin-right:35%}.offset-sm-40,.flex-offset-sm-40,.layout-margin .flex-offset-sm-40,.layout-margin .offset-sm-40{margin-left:40%}[dir=rtl] .offset-sm-40,[dir=rtl] .flex-offset-sm-40,[dir=rtl] .layout-margin .flex-offset-sm-40,[dir=rtl] .layout-margin .offset-sm-40{margin-left:auto;margin-right:40%}.offset-sm-45,.flex-offset-sm-45,.layout-margin .flex-offset-sm-45,.layout-margin .offset-sm-45{margin-left:45%}[dir=rtl] .offset-sm-45,[dir=rtl] .flex-offset-sm-45,[dir=rtl] .layout-margin .flex-offset-sm-45,[dir=rtl] .layout-margin .offset-sm-45{margin-left:auto;margin-right:45%}.offset-sm-50,.flex-offset-sm-50,.layout-margin .flex-offset-sm-50,.layout-margin .offset-sm-50{margin-left:50%}[dir=rtl] .offset-sm-50,[dir=rtl] .flex-offset-sm-50,[dir=rtl] .layout-margin .flex-offset-sm-50,[dir=rtl] .layout-margin .offset-sm-50{margin-left:auto;margin-right:50%}.offset-sm-55,.flex-offset-sm-55,.layout-margin .flex-offset-sm-55,.layout-margin .offset-sm-55{margin-left:55%}[dir=rtl] .offset-sm-55,[dir=rtl] .flex-offset-sm-55,[dir=rtl] .layout-margin .flex-offset-sm-55,[dir=rtl] .layout-margin .offset-sm-55{margin-left:auto;margin-right:55%}.offset-sm-60,.flex-offset-sm-60,.layout-margin .flex-offset-sm-60,.layout-margin .offset-sm-60{margin-left:60%}[dir=rtl] .offset-sm-60,[dir=rtl] .flex-offset-sm-60,[dir=rtl] .layout-margin .flex-offset-sm-60,[dir=rtl] .layout-margin .offset-sm-60{margin-left:auto;margin-right:60%}.offset-sm-65,.flex-offset-sm-65,.layout-margin .flex-offset-sm-65,.layout-margin .offset-sm-65{margin-left:65%}[dir=rtl] .offset-sm-65,[dir=rtl] .flex-offset-sm-65,[dir=rtl] .layout-margin .flex-offset-sm-65,[dir=rtl] .layout-margin .offset-sm-65{margin-left:auto;margin-right:65%}.offset-sm-70,.flex-offset-sm-70,.layout-margin .flex-offset-sm-70,.layout-margin .offset-sm-70{margin-left:70%}[dir=rtl] .offset-sm-70,[dir=rtl] .flex-offset-sm-70,[dir=rtl] .layout-margin .flex-offset-sm-70,[dir=rtl] .layout-margin .offset-sm-70{margin-left:auto;margin-right:70%}.offset-sm-75,.flex-offset-sm-75,.layout-margin .flex-offset-sm-75,.layout-margin .offset-sm-75{margin-left:75%}[dir=rtl] .offset-sm-75,[dir=rtl] .flex-offset-sm-75,[dir=rtl] .layout-margin .flex-offset-sm-75,[dir=rtl] .layout-margin .offset-sm-75{margin-left:auto;margin-right:75%}.offset-sm-80,.flex-offset-sm-80,.layout-margin .flex-offset-sm-80,.layout-margin .offset-sm-80{margin-left:80%}[dir=rtl] .offset-sm-80,[dir=rtl] .flex-offset-sm-80,[dir=rtl] .layout-margin .flex-offset-sm-80,[dir=rtl] .layout-margin .offset-sm-80{margin-left:auto;margin-right:80%}.offset-sm-85,.flex-offset-sm-85,.layout-margin .flex-offset-sm-85,.layout-margin .offset-sm-85{margin-left:85%}[dir=rtl] .offset-sm-85,[dir=rtl] .flex-offset-sm-85,[dir=rtl] .layout-margin .flex-offset-sm-85,[dir=rtl] .layout-margin .offset-sm-85{margin-left:auto;margin-right:85%}.offset-sm-90,.flex-offset-sm-90,.layout-margin .flex-offset-sm-90,.layout-margin .offset-sm-90{margin-left:90%}[dir=rtl] .offset-sm-90,[dir=rtl] .flex-offset-sm-90,[dir=rtl] .layout-margin .flex-offset-sm-90,[dir=rtl] .layout-margin .offset-sm-90{margin-left:auto;margin-right:90%}.offset-sm-95,.flex-offset-sm-95,.layout-margin .flex-offset-sm-95,.layout-margin .offset-sm-95{margin-left:95%}[dir=rtl] .offset-sm-95,[dir=rtl] .flex-offset-sm-95,[dir=rtl] .layout-margin .flex-offset-sm-95,[dir=rtl] .layout-margin .offset-sm-95{margin-left:auto;margin-right:95%}.offset-sm-33,.flex-offset-sm-33,.layout-margin .flex-offset-sm-33,.layout-margin .offset-sm-33{margin-left:33.3333333333%}.offset-sm-66,.flex-offset-sm-66,.layout-margin .flex-offset-sm-66,.layout-margin .offset-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-sm-66,[dir=rtl] .flex-offset-sm-66,[dir=rtl] .layout-margin .flex-offset-sm-66,[dir=rtl] .layout-margin .offset-sm-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-start,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-start,.layout-align-sm-end-center,.layout-align-sm-end-end,.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-start,.layout-align-sm-space-around-end,.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-start,.layout-align-sm-space-between-end,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-start-start,.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-between-start,.layout-align-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-start-center,.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-between-center,.layout-align-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-start-center>*,.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-start-end,.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-between-end,.layout-align-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-start-stretch,.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 100%;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}.offset-gt-sm-0,.flex-offset-gt-sm-0,.layout-margin .flex-offset-gt-sm-0,.layout-margin .offset-gt-sm-0{margin-left:0}[dir=rtl] .offset-gt-sm-0,[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .offset-gt-sm-0{margin-left:auto;margin-right:0}.offset-gt-sm-5,.flex-offset-gt-sm-5,.layout-margin .flex-offset-gt-sm-5,.layout-margin .offset-gt-sm-5{margin-left:5%}[dir=rtl] .offset-gt-sm-5,[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .offset-gt-sm-5{margin-left:auto;margin-right:5%}.offset-gt-sm-10,.flex-offset-gt-sm-10,.layout-margin .flex-offset-gt-sm-10,.layout-margin .offset-gt-sm-10{margin-left:10%}[dir=rtl] .offset-gt-sm-10,[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .offset-gt-sm-10{margin-left:auto;margin-right:10%}.offset-gt-sm-15,.flex-offset-gt-sm-15,.layout-margin .flex-offset-gt-sm-15,.layout-margin .offset-gt-sm-15{margin-left:15%}[dir=rtl] .offset-gt-sm-15,[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .offset-gt-sm-15{margin-left:auto;margin-right:15%}.offset-gt-sm-20,.flex-offset-gt-sm-20,.layout-margin .flex-offset-gt-sm-20,.layout-margin .offset-gt-sm-20{margin-left:20%}[dir=rtl] .offset-gt-sm-20,[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .offset-gt-sm-20{margin-left:auto;margin-right:20%}.offset-gt-sm-25,.flex-offset-gt-sm-25,.layout-margin .flex-offset-gt-sm-25,.layout-margin .offset-gt-sm-25{margin-left:25%}[dir=rtl] .offset-gt-sm-25,[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .offset-gt-sm-25{margin-left:auto;margin-right:25%}.offset-gt-sm-30,.flex-offset-gt-sm-30,.layout-margin .flex-offset-gt-sm-30,.layout-margin .offset-gt-sm-30{margin-left:30%}[dir=rtl] .offset-gt-sm-30,[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .offset-gt-sm-30{margin-left:auto;margin-right:30%}.offset-gt-sm-35,.flex-offset-gt-sm-35,.layout-margin .flex-offset-gt-sm-35,.layout-margin .offset-gt-sm-35{margin-left:35%}[dir=rtl] .offset-gt-sm-35,[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .offset-gt-sm-35{margin-left:auto;margin-right:35%}.offset-gt-sm-40,.flex-offset-gt-sm-40,.layout-margin .flex-offset-gt-sm-40,.layout-margin .offset-gt-sm-40{margin-left:40%}[dir=rtl] .offset-gt-sm-40,[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .offset-gt-sm-40{margin-left:auto;margin-right:40%}.offset-gt-sm-45,.flex-offset-gt-sm-45,.layout-margin .flex-offset-gt-sm-45,.layout-margin .offset-gt-sm-45{margin-left:45%}[dir=rtl] .offset-gt-sm-45,[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .offset-gt-sm-45{margin-left:auto;margin-right:45%}.offset-gt-sm-50,.flex-offset-gt-sm-50,.layout-margin .flex-offset-gt-sm-50,.layout-margin .offset-gt-sm-50{margin-left:50%}[dir=rtl] .offset-gt-sm-50,[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .offset-gt-sm-50{margin-left:auto;margin-right:50%}.offset-gt-sm-55,.flex-offset-gt-sm-55,.layout-margin .flex-offset-gt-sm-55,.layout-margin .offset-gt-sm-55{margin-left:55%}[dir=rtl] .offset-gt-sm-55,[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .offset-gt-sm-55{margin-left:auto;margin-right:55%}.offset-gt-sm-60,.flex-offset-gt-sm-60,.layout-margin .flex-offset-gt-sm-60,.layout-margin .offset-gt-sm-60{margin-left:60%}[dir=rtl] .offset-gt-sm-60,[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .offset-gt-sm-60{margin-left:auto;margin-right:60%}.offset-gt-sm-65,.flex-offset-gt-sm-65,.layout-margin .flex-offset-gt-sm-65,.layout-margin .offset-gt-sm-65{margin-left:65%}[dir=rtl] .offset-gt-sm-65,[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .offset-gt-sm-65{margin-left:auto;margin-right:65%}.offset-gt-sm-70,.flex-offset-gt-sm-70,.layout-margin .flex-offset-gt-sm-70,.layout-margin .offset-gt-sm-70{margin-left:70%}[dir=rtl] .offset-gt-sm-70,[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .offset-gt-sm-70{margin-left:auto;margin-right:70%}.offset-gt-sm-75,.flex-offset-gt-sm-75,.layout-margin .flex-offset-gt-sm-75,.layout-margin .offset-gt-sm-75{margin-left:75%}[dir=rtl] .offset-gt-sm-75,[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .offset-gt-sm-75{margin-left:auto;margin-right:75%}.offset-gt-sm-80,.flex-offset-gt-sm-80,.layout-margin .flex-offset-gt-sm-80,.layout-margin .offset-gt-sm-80{margin-left:80%}[dir=rtl] .offset-gt-sm-80,[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .offset-gt-sm-80{margin-left:auto;margin-right:80%}.offset-gt-sm-85,.flex-offset-gt-sm-85,.layout-margin .flex-offset-gt-sm-85,.layout-margin .offset-gt-sm-85{margin-left:85%}[dir=rtl] .offset-gt-sm-85,[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .offset-gt-sm-85{margin-left:auto;margin-right:85%}.offset-gt-sm-90,.flex-offset-gt-sm-90,.layout-margin .flex-offset-gt-sm-90,.layout-margin .offset-gt-sm-90{margin-left:90%}[dir=rtl] .offset-gt-sm-90,[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .offset-gt-sm-90{margin-left:auto;margin-right:90%}.offset-gt-sm-95,.flex-offset-gt-sm-95,.layout-margin .flex-offset-gt-sm-95,.layout-margin .offset-gt-sm-95{margin-left:95%}[dir=rtl] .offset-gt-sm-95,[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .offset-gt-sm-95{margin-left:auto;margin-right:95%}.offset-gt-sm-33,.flex-offset-gt-sm-33,.layout-margin .flex-offset-gt-sm-33,.layout-margin .offset-gt-sm-33{margin-left:33.3333333333%}.offset-gt-sm-66,.flex-offset-gt-sm-66,.layout-margin .flex-offset-gt-sm-66,.layout-margin .offset-gt-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-sm-66,[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .offset-gt-sm-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.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-start,.layout-align-gt-sm-space-around-end,.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-start,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-start-start,.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-start-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-start-center>*,.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-start-end,.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-start-stretch,.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 100%;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: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-gt-sm: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}.offset-md-0,.flex-offset-md-0,.layout-margin .flex-offset-md-0,.layout-margin .offset-md-0{margin-left:0}[dir=rtl] .offset-md-0,[dir=rtl] .flex-offset-md-0,[dir=rtl] .layout-margin .flex-offset-md-0,[dir=rtl] .layout-margin .offset-md-0{margin-left:auto;margin-right:0}.offset-md-5,.flex-offset-md-5,.layout-margin .flex-offset-md-5,.layout-margin .offset-md-5{margin-left:5%}[dir=rtl] .offset-md-5,[dir=rtl] .flex-offset-md-5,[dir=rtl] .layout-margin .flex-offset-md-5,[dir=rtl] .layout-margin .offset-md-5{margin-left:auto;margin-right:5%}.offset-md-10,.flex-offset-md-10,.layout-margin .flex-offset-md-10,.layout-margin .offset-md-10{margin-left:10%}[dir=rtl] .offset-md-10,[dir=rtl] .flex-offset-md-10,[dir=rtl] .layout-margin .flex-offset-md-10,[dir=rtl] .layout-margin .offset-md-10{margin-left:auto;margin-right:10%}.offset-md-15,.flex-offset-md-15,.layout-margin .flex-offset-md-15,.layout-margin .offset-md-15{margin-left:15%}[dir=rtl] .offset-md-15,[dir=rtl] .flex-offset-md-15,[dir=rtl] .layout-margin .flex-offset-md-15,[dir=rtl] .layout-margin .offset-md-15{margin-left:auto;margin-right:15%}.offset-md-20,.flex-offset-md-20,.layout-margin .flex-offset-md-20,.layout-margin .offset-md-20{margin-left:20%}[dir=rtl] .offset-md-20,[dir=rtl] .flex-offset-md-20,[dir=rtl] .layout-margin .flex-offset-md-20,[dir=rtl] .layout-margin .offset-md-20{margin-left:auto;margin-right:20%}.offset-md-25,.flex-offset-md-25,.layout-margin .flex-offset-md-25,.layout-margin .offset-md-25{margin-left:25%}[dir=rtl] .offset-md-25,[dir=rtl] .flex-offset-md-25,[dir=rtl] .layout-margin .flex-offset-md-25,[dir=rtl] .layout-margin .offset-md-25{margin-left:auto;margin-right:25%}.offset-md-30,.flex-offset-md-30,.layout-margin .flex-offset-md-30,.layout-margin .offset-md-30{margin-left:30%}[dir=rtl] .offset-md-30,[dir=rtl] .flex-offset-md-30,[dir=rtl] .layout-margin .flex-offset-md-30,[dir=rtl] .layout-margin .offset-md-30{margin-left:auto;margin-right:30%}.offset-md-35,.flex-offset-md-35,.layout-margin .flex-offset-md-35,.layout-margin .offset-md-35{margin-left:35%}[dir=rtl] .offset-md-35,[dir=rtl] .flex-offset-md-35,[dir=rtl] .layout-margin .flex-offset-md-35,[dir=rtl] .layout-margin .offset-md-35{margin-left:auto;margin-right:35%}.offset-md-40,.flex-offset-md-40,.layout-margin .flex-offset-md-40,.layout-margin .offset-md-40{margin-left:40%}[dir=rtl] .offset-md-40,[dir=rtl] .flex-offset-md-40,[dir=rtl] .layout-margin .flex-offset-md-40,[dir=rtl] .layout-margin .offset-md-40{margin-left:auto;margin-right:40%}.offset-md-45,.flex-offset-md-45,.layout-margin .flex-offset-md-45,.layout-margin .offset-md-45{margin-left:45%}[dir=rtl] .offset-md-45,[dir=rtl] .flex-offset-md-45,[dir=rtl] .layout-margin .flex-offset-md-45,[dir=rtl] .layout-margin .offset-md-45{margin-left:auto;margin-right:45%}.offset-md-50,.flex-offset-md-50,.layout-margin .flex-offset-md-50,.layout-margin .offset-md-50{margin-left:50%}[dir=rtl] .offset-md-50,[dir=rtl] .flex-offset-md-50,[dir=rtl] .layout-margin .flex-offset-md-50,[dir=rtl] .layout-margin .offset-md-50{margin-left:auto;margin-right:50%}.offset-md-55,.flex-offset-md-55,.layout-margin .flex-offset-md-55,.layout-margin .offset-md-55{margin-left:55%}[dir=rtl] .offset-md-55,[dir=rtl] .flex-offset-md-55,[dir=rtl] .layout-margin .flex-offset-md-55,[dir=rtl] .layout-margin .offset-md-55{margin-left:auto;margin-right:55%}.offset-md-60,.flex-offset-md-60,.layout-margin .flex-offset-md-60,.layout-margin .offset-md-60{margin-left:60%}[dir=rtl] .offset-md-60,[dir=rtl] .flex-offset-md-60,[dir=rtl] .layout-margin .flex-offset-md-60,[dir=rtl] .layout-margin .offset-md-60{margin-left:auto;margin-right:60%}.offset-md-65,.flex-offset-md-65,.layout-margin .flex-offset-md-65,.layout-margin .offset-md-65{margin-left:65%}[dir=rtl] .offset-md-65,[dir=rtl] .flex-offset-md-65,[dir=rtl] .layout-margin .flex-offset-md-65,[dir=rtl] .layout-margin .offset-md-65{margin-left:auto;margin-right:65%}.offset-md-70,.flex-offset-md-70,.layout-margin .flex-offset-md-70,.layout-margin .offset-md-70{margin-left:70%}[dir=rtl] .offset-md-70,[dir=rtl] .flex-offset-md-70,[dir=rtl] .layout-margin .flex-offset-md-70,[dir=rtl] .layout-margin .offset-md-70{margin-left:auto;margin-right:70%}.offset-md-75,.flex-offset-md-75,.layout-margin .flex-offset-md-75,.layout-margin .offset-md-75{margin-left:75%}[dir=rtl] .offset-md-75,[dir=rtl] .flex-offset-md-75,[dir=rtl] .layout-margin .flex-offset-md-75,[dir=rtl] .layout-margin .offset-md-75{margin-left:auto;margin-right:75%}.offset-md-80,.flex-offset-md-80,.layout-margin .flex-offset-md-80,.layout-margin .offset-md-80{margin-left:80%}[dir=rtl] .offset-md-80,[dir=rtl] .flex-offset-md-80,[dir=rtl] .layout-margin .flex-offset-md-80,[dir=rtl] .layout-margin .offset-md-80{margin-left:auto;margin-right:80%}.offset-md-85,.flex-offset-md-85,.layout-margin .flex-offset-md-85,.layout-margin .offset-md-85{margin-left:85%}[dir=rtl] .offset-md-85,[dir=rtl] .flex-offset-md-85,[dir=rtl] .layout-margin .flex-offset-md-85,[dir=rtl] .layout-margin .offset-md-85{margin-left:auto;margin-right:85%}.offset-md-90,.flex-offset-md-90,.layout-margin .flex-offset-md-90,.layout-margin .offset-md-90{margin-left:90%}[dir=rtl] .offset-md-90,[dir=rtl] .flex-offset-md-90,[dir=rtl] .layout-margin .flex-offset-md-90,[dir=rtl] .layout-margin .offset-md-90{margin-left:auto;margin-right:90%}.offset-md-95,.flex-offset-md-95,.layout-margin .flex-offset-md-95,.layout-margin .offset-md-95{margin-left:95%}[dir=rtl] .offset-md-95,[dir=rtl] .flex-offset-md-95,[dir=rtl] .layout-margin .flex-offset-md-95,[dir=rtl] .layout-margin .offset-md-95{margin-left:auto;margin-right:95%}.offset-md-33,.flex-offset-md-33,.layout-margin .flex-offset-md-33,.layout-margin .offset-md-33{margin-left:33.3333333333%}.offset-md-66,.flex-offset-md-66,.layout-margin .flex-offset-md-66,.layout-margin .offset-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-md-66,[dir=rtl] .flex-offset-md-66,[dir=rtl] .layout-margin .flex-offset-md-66,[dir=rtl] .layout-margin .offset-md-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-start,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-start,.layout-align-md-end-center,.layout-align-md-end-end,.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-start,.layout-align-md-space-around-end,.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-start,.layout-align-md-space-between-end,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-start-start,.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-between-start,.layout-align-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-md-start-center,.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-between-center,.layout-align-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-start-center>*,.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-between-center>*,.layout-align-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-start-end,.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-between-end,.layout-align-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-md-start-stretch,.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-between-stretch,.layout-align-md-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 100%;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}.offset-gt-md-0,.flex-offset-gt-md-0,.layout-margin .flex-offset-gt-md-0,.layout-margin .offset-gt-md-0{margin-left:0}[dir=rtl] .offset-gt-md-0,[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .layout-margin .flex-offset-gt-md-0,[dir=rtl] .layout-margin .offset-gt-md-0{margin-left:auto;margin-right:0}.offset-gt-md-5,.flex-offset-gt-md-5,.layout-margin .flex-offset-gt-md-5,.layout-margin .offset-gt-md-5{margin-left:5%}[dir=rtl] .offset-gt-md-5,[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .layout-margin .flex-offset-gt-md-5,[dir=rtl] .layout-margin .offset-gt-md-5{margin-left:auto;margin-right:5%}.offset-gt-md-10,.flex-offset-gt-md-10,.layout-margin .flex-offset-gt-md-10,.layout-margin .offset-gt-md-10{margin-left:10%}[dir=rtl] .offset-gt-md-10,[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .layout-margin .flex-offset-gt-md-10,[dir=rtl] .layout-margin .offset-gt-md-10{margin-left:auto;margin-right:10%}.offset-gt-md-15,.flex-offset-gt-md-15,.layout-margin .flex-offset-gt-md-15,.layout-margin .offset-gt-md-15{margin-left:15%}[dir=rtl] .offset-gt-md-15,[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .layout-margin .flex-offset-gt-md-15,[dir=rtl] .layout-margin .offset-gt-md-15{margin-left:auto;margin-right:15%}.offset-gt-md-20,.flex-offset-gt-md-20,.layout-margin .flex-offset-gt-md-20,.layout-margin .offset-gt-md-20{margin-left:20%}[dir=rtl] .offset-gt-md-20,[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .layout-margin .flex-offset-gt-md-20,[dir=rtl] .layout-margin .offset-gt-md-20{margin-left:auto;margin-right:20%}.offset-gt-md-25,.flex-offset-gt-md-25,.layout-margin .flex-offset-gt-md-25,.layout-margin .offset-gt-md-25{margin-left:25%}[dir=rtl] .offset-gt-md-25,[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .layout-margin .flex-offset-gt-md-25,[dir=rtl] .layout-margin .offset-gt-md-25{margin-left:auto;margin-right:25%}.offset-gt-md-30,.flex-offset-gt-md-30,.layout-margin .flex-offset-gt-md-30,.layout-margin .offset-gt-md-30{margin-left:30%}[dir=rtl] .offset-gt-md-30,[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .layout-margin .flex-offset-gt-md-30,[dir=rtl] .layout-margin .offset-gt-md-30{margin-left:auto;margin-right:30%}.offset-gt-md-35,.flex-offset-gt-md-35,.layout-margin .flex-offset-gt-md-35,.layout-margin .offset-gt-md-35{margin-left:35%}[dir=rtl] .offset-gt-md-35,[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .layout-margin .flex-offset-gt-md-35,[dir=rtl] .layout-margin .offset-gt-md-35{margin-left:auto;margin-right:35%}.offset-gt-md-40,.flex-offset-gt-md-40,.layout-margin .flex-offset-gt-md-40,.layout-margin .offset-gt-md-40{margin-left:40%}[dir=rtl] .offset-gt-md-40,[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .layout-margin .flex-offset-gt-md-40,[dir=rtl] .layout-margin .offset-gt-md-40{margin-left:auto;margin-right:40%}.offset-gt-md-45,.flex-offset-gt-md-45,.layout-margin .flex-offset-gt-md-45,.layout-margin .offset-gt-md-45{margin-left:45%}[dir=rtl] .offset-gt-md-45,[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .layout-margin .flex-offset-gt-md-45,[dir=rtl] .layout-margin .offset-gt-md-45{margin-left:auto;margin-right:45%}.offset-gt-md-50,.flex-offset-gt-md-50,.layout-margin .flex-offset-gt-md-50,.layout-margin .offset-gt-md-50{margin-left:50%}[dir=rtl] .offset-gt-md-50,[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .layout-margin .flex-offset-gt-md-50,[dir=rtl] .layout-margin .offset-gt-md-50{margin-left:auto;margin-right:50%}.offset-gt-md-55,.flex-offset-gt-md-55,.layout-margin .flex-offset-gt-md-55,.layout-margin .offset-gt-md-55{margin-left:55%}[dir=rtl] .offset-gt-md-55,[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .layout-margin .flex-offset-gt-md-55,[dir=rtl] .layout-margin .offset-gt-md-55{margin-left:auto;margin-right:55%}.offset-gt-md-60,.flex-offset-gt-md-60,.layout-margin .flex-offset-gt-md-60,.layout-margin .offset-gt-md-60{margin-left:60%}[dir=rtl] .offset-gt-md-60,[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .layout-margin .flex-offset-gt-md-60,[dir=rtl] .layout-margin .offset-gt-md-60{margin-left:auto;margin-right:60%}.offset-gt-md-65,.flex-offset-gt-md-65,.layout-margin .flex-offset-gt-md-65,.layout-margin .offset-gt-md-65{margin-left:65%}[dir=rtl] .offset-gt-md-65,[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .layout-margin .flex-offset-gt-md-65,[dir=rtl] .layout-margin .offset-gt-md-65{margin-left:auto;margin-right:65%}.offset-gt-md-70,.flex-offset-gt-md-70,.layout-margin .flex-offset-gt-md-70,.layout-margin .offset-gt-md-70{margin-left:70%}[dir=rtl] .offset-gt-md-70,[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .layout-margin .flex-offset-gt-md-70,[dir=rtl] .layout-margin .offset-gt-md-70{margin-left:auto;margin-right:70%}.offset-gt-md-75,.flex-offset-gt-md-75,.layout-margin .flex-offset-gt-md-75,.layout-margin .offset-gt-md-75{margin-left:75%}[dir=rtl] .offset-gt-md-75,[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .layout-margin .flex-offset-gt-md-75,[dir=rtl] .layout-margin .offset-gt-md-75{margin-left:auto;margin-right:75%}.offset-gt-md-80,.flex-offset-gt-md-80,.layout-margin .flex-offset-gt-md-80,.layout-margin .offset-gt-md-80{margin-left:80%}[dir=rtl] .offset-gt-md-80,[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .layout-margin .flex-offset-gt-md-80,[dir=rtl] .layout-margin .offset-gt-md-80{margin-left:auto;margin-right:80%}.offset-gt-md-85,.flex-offset-gt-md-85,.layout-margin .flex-offset-gt-md-85,.layout-margin .offset-gt-md-85{margin-left:85%}[dir=rtl] .offset-gt-md-85,[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .layout-margin .flex-offset-gt-md-85,[dir=rtl] .layout-margin .offset-gt-md-85{margin-left:auto;margin-right:85%}.offset-gt-md-90,.flex-offset-gt-md-90,.layout-margin .flex-offset-gt-md-90,.layout-margin .offset-gt-md-90{margin-left:90%}[dir=rtl] .offset-gt-md-90,[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .layout-margin .flex-offset-gt-md-90,[dir=rtl] .layout-margin .offset-gt-md-90{margin-left:auto;margin-right:90%}.offset-gt-md-95,.flex-offset-gt-md-95,.layout-margin .flex-offset-gt-md-95,.layout-margin .offset-gt-md-95{margin-left:95%}[dir=rtl] .offset-gt-md-95,[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .layout-margin .flex-offset-gt-md-95,[dir=rtl] .layout-margin .offset-gt-md-95{margin-left:auto;margin-right:95%}.offset-gt-md-33,.flex-offset-gt-md-33,.layout-margin .flex-offset-gt-md-33,.layout-margin .offset-gt-md-33{margin-left:33.3333333333%}.offset-gt-md-66,.flex-offset-gt-md-66,.layout-margin .flex-offset-gt-md-66,.layout-margin .offset-gt-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-md-66,[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .layout-margin .flex-offset-gt-md-66,[dir=rtl] .layout-margin .offset-gt-md-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-start,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.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-start,.layout-align-gt-md-space-around-end,.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-start,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-start-start,.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-start-center,.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-start-center>*,.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-start-end,.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-start-stretch,.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 100%;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: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-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-md: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}.offset-lg-0,.flex-offset-lg-0,.layout-margin .flex-offset-lg-0,.layout-margin .offset-lg-0{margin-left:0}[dir=rtl] .offset-lg-0,[dir=rtl] .flex-offset-lg-0,[dir=rtl] .layout-margin .flex-offset-lg-0,[dir=rtl] .layout-margin .offset-lg-0{margin-left:auto;margin-right:0}.offset-lg-5,.flex-offset-lg-5,.layout-margin .flex-offset-lg-5,.layout-margin .offset-lg-5{margin-left:5%}[dir=rtl] .offset-lg-5,[dir=rtl] .flex-offset-lg-5,[dir=rtl] .layout-margin .flex-offset-lg-5,[dir=rtl] .layout-margin .offset-lg-5{margin-left:auto;margin-right:5%}.offset-lg-10,.flex-offset-lg-10,.layout-margin .flex-offset-lg-10,.layout-margin .offset-lg-10{margin-left:10%}[dir=rtl] .offset-lg-10,[dir=rtl] .flex-offset-lg-10,[dir=rtl] .layout-margin .flex-offset-lg-10,[dir=rtl] .layout-margin .offset-lg-10{margin-left:auto;margin-right:10%}.offset-lg-15,.flex-offset-lg-15,.layout-margin .flex-offset-lg-15,.layout-margin .offset-lg-15{margin-left:15%}[dir=rtl] .offset-lg-15,[dir=rtl] .flex-offset-lg-15,[dir=rtl] .layout-margin .flex-offset-lg-15,[dir=rtl] .layout-margin .offset-lg-15{margin-left:auto;margin-right:15%}.offset-lg-20,.flex-offset-lg-20,.layout-margin .flex-offset-lg-20,.layout-margin .offset-lg-20{margin-left:20%}[dir=rtl] .offset-lg-20,[dir=rtl] .flex-offset-lg-20,[dir=rtl] .layout-margin .flex-offset-lg-20,[dir=rtl] .layout-margin .offset-lg-20{margin-left:auto;margin-right:20%}.offset-lg-25,.flex-offset-lg-25,.layout-margin .flex-offset-lg-25,.layout-margin .offset-lg-25{margin-left:25%}[dir=rtl] .offset-lg-25,[dir=rtl] .flex-offset-lg-25,[dir=rtl] .layout-margin .flex-offset-lg-25,[dir=rtl] .layout-margin .offset-lg-25{margin-left:auto;margin-right:25%}.offset-lg-30,.flex-offset-lg-30,.layout-margin .flex-offset-lg-30,.layout-margin .offset-lg-30{margin-left:30%}[dir=rtl] .offset-lg-30,[dir=rtl] .flex-offset-lg-30,[dir=rtl] .layout-margin .flex-offset-lg-30,[dir=rtl] .layout-margin .offset-lg-30{margin-left:auto;margin-right:30%}.offset-lg-35,.flex-offset-lg-35,.layout-margin .flex-offset-lg-35,.layout-margin .offset-lg-35{margin-left:35%}[dir=rtl] .offset-lg-35,[dir=rtl] .flex-offset-lg-35,[dir=rtl] .layout-margin .flex-offset-lg-35,[dir=rtl] .layout-margin .offset-lg-35{margin-left:auto;margin-right:35%}.offset-lg-40,.flex-offset-lg-40,.layout-margin .flex-offset-lg-40,.layout-margin .offset-lg-40{margin-left:40%}[dir=rtl] .offset-lg-40,[dir=rtl] .flex-offset-lg-40,[dir=rtl] .layout-margin .flex-offset-lg-40,[dir=rtl] .layout-margin .offset-lg-40{margin-left:auto;margin-right:40%}.offset-lg-45,.flex-offset-lg-45,.layout-margin .flex-offset-lg-45,.layout-margin .offset-lg-45{margin-left:45%}[dir=rtl] .offset-lg-45,[dir=rtl] .flex-offset-lg-45,[dir=rtl] .layout-margin .flex-offset-lg-45,[dir=rtl] .layout-margin .offset-lg-45{margin-left:auto;margin-right:45%}.offset-lg-50,.flex-offset-lg-50,.layout-margin .flex-offset-lg-50,.layout-margin .offset-lg-50{margin-left:50%}[dir=rtl] .offset-lg-50,[dir=rtl] .flex-offset-lg-50,[dir=rtl] .layout-margin .flex-offset-lg-50,[dir=rtl] .layout-margin .offset-lg-50{margin-left:auto;margin-right:50%}.offset-lg-55,.flex-offset-lg-55,.layout-margin .flex-offset-lg-55,.layout-margin .offset-lg-55{margin-left:55%}[dir=rtl] .offset-lg-55,[dir=rtl] .flex-offset-lg-55,[dir=rtl] .layout-margin .flex-offset-lg-55,[dir=rtl] .layout-margin .offset-lg-55{margin-left:auto;margin-right:55%}.offset-lg-60,.flex-offset-lg-60,.layout-margin .flex-offset-lg-60,.layout-margin .offset-lg-60{margin-left:60%}[dir=rtl] .offset-lg-60,[dir=rtl] .flex-offset-lg-60,[dir=rtl] .layout-margin .flex-offset-lg-60,[dir=rtl] .layout-margin .offset-lg-60{margin-left:auto;margin-right:60%}.offset-lg-65,.flex-offset-lg-65,.layout-margin .flex-offset-lg-65,.layout-margin .offset-lg-65{margin-left:65%}[dir=rtl] .offset-lg-65,[dir=rtl] .flex-offset-lg-65,[dir=rtl] .layout-margin .flex-offset-lg-65,[dir=rtl] .layout-margin .offset-lg-65{margin-left:auto;margin-right:65%}.offset-lg-70,.flex-offset-lg-70,.layout-margin .flex-offset-lg-70,.layout-margin .offset-lg-70{margin-left:70%}[dir=rtl] .offset-lg-70,[dir=rtl] .flex-offset-lg-70,[dir=rtl] .layout-margin .flex-offset-lg-70,[dir=rtl] .layout-margin .offset-lg-70{margin-left:auto;margin-right:70%}.offset-lg-75,.flex-offset-lg-75,.layout-margin .flex-offset-lg-75,.layout-margin .offset-lg-75{margin-left:75%}[dir=rtl] .offset-lg-75,[dir=rtl] .flex-offset-lg-75,[dir=rtl] .layout-margin .flex-offset-lg-75,[dir=rtl] .layout-margin .offset-lg-75{margin-left:auto;margin-right:75%}.offset-lg-80,.flex-offset-lg-80,.layout-margin .flex-offset-lg-80,.layout-margin .offset-lg-80{margin-left:80%}[dir=rtl] .offset-lg-80,[dir=rtl] .flex-offset-lg-80,[dir=rtl] .layout-margin .flex-offset-lg-80,[dir=rtl] .layout-margin .offset-lg-80{margin-left:auto;margin-right:80%}.offset-lg-85,.flex-offset-lg-85,.layout-margin .flex-offset-lg-85,.layout-margin .offset-lg-85{margin-left:85%}[dir=rtl] .offset-lg-85,[dir=rtl] .flex-offset-lg-85,[dir=rtl] .layout-margin .flex-offset-lg-85,[dir=rtl] .layout-margin .offset-lg-85{margin-left:auto;margin-right:85%}.offset-lg-90,.flex-offset-lg-90,.layout-margin .flex-offset-lg-90,.layout-margin .offset-lg-90{margin-left:90%}[dir=rtl] .offset-lg-90,[dir=rtl] .flex-offset-lg-90,[dir=rtl] .layout-margin .flex-offset-lg-90,[dir=rtl] .layout-margin .offset-lg-90{margin-left:auto;margin-right:90%}.offset-lg-95,.flex-offset-lg-95,.layout-margin .flex-offset-lg-95,.layout-margin .offset-lg-95{margin-left:95%}[dir=rtl] .offset-lg-95,[dir=rtl] .flex-offset-lg-95,[dir=rtl] .layout-margin .flex-offset-lg-95,[dir=rtl] .layout-margin .offset-lg-95{margin-left:auto;margin-right:95%}.offset-lg-33,.flex-offset-lg-33,.layout-margin .flex-offset-lg-33,.layout-margin .offset-lg-33{margin-left:33.3333333333%}.offset-lg-66,.flex-offset-lg-66,.layout-margin .flex-offset-lg-66,.layout-margin .offset-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-lg-66,[dir=rtl] .flex-offset-lg-66,[dir=rtl] .layout-margin .flex-offset-lg-66,[dir=rtl] .layout-margin .offset-lg-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-start,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-start,.layout-align-lg-end-center,.layout-align-lg-end-end,.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-start,.layout-align-lg-space-around-end,.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-start,.layout-align-lg-space-between-end,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-start-start,.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-between-start,.layout-align-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-start-center,.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-between-center,.layout-align-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-start-center>*,.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-start-end,.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-between-end,.layout-align-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-start-stretch,.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 100%;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}.offset-gt-lg-0,.flex-offset-gt-lg-0,.layout-margin .flex-offset-gt-lg-0,.layout-margin .offset-gt-lg-0{margin-left:0}[dir=rtl] .offset-gt-lg-0,[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .offset-gt-lg-0{margin-left:auto;margin-right:0}.offset-gt-lg-5,.flex-offset-gt-lg-5,.layout-margin .flex-offset-gt-lg-5,.layout-margin .offset-gt-lg-5{margin-left:5%}[dir=rtl] .offset-gt-lg-5,[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .offset-gt-lg-5{margin-left:auto;margin-right:5%}.offset-gt-lg-10,.flex-offset-gt-lg-10,.layout-margin .flex-offset-gt-lg-10,.layout-margin .offset-gt-lg-10{margin-left:10%}[dir=rtl] .offset-gt-lg-10,[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .offset-gt-lg-10{margin-left:auto;margin-right:10%}.offset-gt-lg-15,.flex-offset-gt-lg-15,.layout-margin .flex-offset-gt-lg-15,.layout-margin .offset-gt-lg-15{margin-left:15%}[dir=rtl] .offset-gt-lg-15,[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .offset-gt-lg-15{margin-left:auto;margin-right:15%}.offset-gt-lg-20,.flex-offset-gt-lg-20,.layout-margin .flex-offset-gt-lg-20,.layout-margin .offset-gt-lg-20{margin-left:20%}[dir=rtl] .offset-gt-lg-20,[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .offset-gt-lg-20{margin-left:auto;margin-right:20%}.offset-gt-lg-25,.flex-offset-gt-lg-25,.layout-margin .flex-offset-gt-lg-25,.layout-margin .offset-gt-lg-25{margin-left:25%}[dir=rtl] .offset-gt-lg-25,[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .offset-gt-lg-25{margin-left:auto;margin-right:25%}.offset-gt-lg-30,.flex-offset-gt-lg-30,.layout-margin .flex-offset-gt-lg-30,.layout-margin .offset-gt-lg-30{margin-left:30%}[dir=rtl] .offset-gt-lg-30,[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .offset-gt-lg-30{margin-left:auto;margin-right:30%}.offset-gt-lg-35,.flex-offset-gt-lg-35,.layout-margin .flex-offset-gt-lg-35,.layout-margin .offset-gt-lg-35{margin-left:35%}[dir=rtl] .offset-gt-lg-35,[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .offset-gt-lg-35{margin-left:auto;margin-right:35%}.offset-gt-lg-40,.flex-offset-gt-lg-40,.layout-margin .flex-offset-gt-lg-40,.layout-margin .offset-gt-lg-40{margin-left:40%}[dir=rtl] .offset-gt-lg-40,[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .offset-gt-lg-40{margin-left:auto;margin-right:40%}.offset-gt-lg-45,.flex-offset-gt-lg-45,.layout-margin .flex-offset-gt-lg-45,.layout-margin .offset-gt-lg-45{margin-left:45%}[dir=rtl] .offset-gt-lg-45,[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .offset-gt-lg-45{margin-left:auto;margin-right:45%}.offset-gt-lg-50,.flex-offset-gt-lg-50,.layout-margin .flex-offset-gt-lg-50,.layout-margin .offset-gt-lg-50{margin-left:50%}[dir=rtl] .offset-gt-lg-50,[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .offset-gt-lg-50{margin-left:auto;margin-right:50%}.offset-gt-lg-55,.flex-offset-gt-lg-55,.layout-margin .flex-offset-gt-lg-55,.layout-margin .offset-gt-lg-55{margin-left:55%}[dir=rtl] .offset-gt-lg-55,[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .offset-gt-lg-55{margin-left:auto;margin-right:55%}.offset-gt-lg-60,.flex-offset-gt-lg-60,.layout-margin .flex-offset-gt-lg-60,.layout-margin .offset-gt-lg-60{margin-left:60%}[dir=rtl] .offset-gt-lg-60,[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .offset-gt-lg-60{margin-left:auto;margin-right:60%}.offset-gt-lg-65,.flex-offset-gt-lg-65,.layout-margin .flex-offset-gt-lg-65,.layout-margin .offset-gt-lg-65{margin-left:65%}[dir=rtl] .offset-gt-lg-65,[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .offset-gt-lg-65{margin-left:auto;margin-right:65%}.offset-gt-lg-70,.flex-offset-gt-lg-70,.layout-margin .flex-offset-gt-lg-70,.layout-margin .offset-gt-lg-70{margin-left:70%}[dir=rtl] .offset-gt-lg-70,[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .offset-gt-lg-70{margin-left:auto;margin-right:70%}.offset-gt-lg-75,.flex-offset-gt-lg-75,.layout-margin .flex-offset-gt-lg-75,.layout-margin .offset-gt-lg-75{margin-left:75%}[dir=rtl] .offset-gt-lg-75,[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .offset-gt-lg-75{margin-left:auto;margin-right:75%}.offset-gt-lg-80,.flex-offset-gt-lg-80,.layout-margin .flex-offset-gt-lg-80,.layout-margin .offset-gt-lg-80{margin-left:80%}[dir=rtl] .offset-gt-lg-80,[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .offset-gt-lg-80{margin-left:auto;margin-right:80%}.offset-gt-lg-85,.flex-offset-gt-lg-85,.layout-margin .flex-offset-gt-lg-85,.layout-margin .offset-gt-lg-85{margin-left:85%}[dir=rtl] .offset-gt-lg-85,[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .offset-gt-lg-85{margin-left:auto;margin-right:85%}.offset-gt-lg-90,.flex-offset-gt-lg-90,.layout-margin .flex-offset-gt-lg-90,.layout-margin .offset-gt-lg-90{margin-left:90%}[dir=rtl] .offset-gt-lg-90,[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .offset-gt-lg-90{margin-left:auto;margin-right:90%}.offset-gt-lg-95,.flex-offset-gt-lg-95,.layout-margin .flex-offset-gt-lg-95,.layout-margin .offset-gt-lg-95{margin-left:95%}[dir=rtl] .offset-gt-lg-95,[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .offset-gt-lg-95{margin-left:auto;margin-right:95%}.offset-gt-lg-33,.flex-offset-gt-lg-33,.layout-margin .flex-offset-gt-lg-33,.layout-margin .offset-gt-lg-33{margin-left:33.3333333333%}.offset-gt-lg-66,.flex-offset-gt-lg-66,.layout-margin .flex-offset-gt-lg-66,.layout-margin .offset-gt-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-lg-66,[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .offset-gt-lg-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.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-start,.layout-align-gt-lg-space-around-end,.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-start,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-start-start,.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-start-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-start-center>*,.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-start-end,.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-start-stretch,.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 100%;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}.offset-xl-0,.flex-offset-xl-0,.layout-margin .flex-offset-xl-0,.layout-margin .offset-xl-0{margin-left:0}[dir=rtl] .offset-xl-0,[dir=rtl] .flex-offset-xl-0,[dir=rtl] .layout-margin .flex-offset-xl-0,[dir=rtl] .layout-margin .offset-xl-0{margin-left:auto;margin-right:0}.offset-xl-5,.flex-offset-xl-5,.layout-margin .flex-offset-xl-5,.layout-margin .offset-xl-5{margin-left:5%}[dir=rtl] .offset-xl-5,[dir=rtl] .flex-offset-xl-5,[dir=rtl] .layout-margin .flex-offset-xl-5,[dir=rtl] .layout-margin .offset-xl-5{margin-left:auto;margin-right:5%}.offset-xl-10,.flex-offset-xl-10,.layout-margin .flex-offset-xl-10,.layout-margin .offset-xl-10{margin-left:10%}[dir=rtl] .offset-xl-10,[dir=rtl] .flex-offset-xl-10,[dir=rtl] .layout-margin .flex-offset-xl-10,[dir=rtl] .layout-margin .offset-xl-10{margin-left:auto;margin-right:10%}.offset-xl-15,.flex-offset-xl-15,.layout-margin .flex-offset-xl-15,.layout-margin .offset-xl-15{margin-left:15%}[dir=rtl] .offset-xl-15,[dir=rtl] .flex-offset-xl-15,[dir=rtl] .layout-margin .flex-offset-xl-15,[dir=rtl] .layout-margin .offset-xl-15{margin-left:auto;margin-right:15%}.offset-xl-20,.flex-offset-xl-20,.layout-margin .flex-offset-xl-20,.layout-margin .offset-xl-20{margin-left:20%}[dir=rtl] .offset-xl-20,[dir=rtl] .flex-offset-xl-20,[dir=rtl] .layout-margin .flex-offset-xl-20,[dir=rtl] .layout-margin .offset-xl-20{margin-left:auto;margin-right:20%}.offset-xl-25,.flex-offset-xl-25,.layout-margin .flex-offset-xl-25,.layout-margin .offset-xl-25{margin-left:25%}[dir=rtl] .offset-xl-25,[dir=rtl] .flex-offset-xl-25,[dir=rtl] .layout-margin .flex-offset-xl-25,[dir=rtl] .layout-margin .offset-xl-25{margin-left:auto;margin-right:25%}.offset-xl-30,.flex-offset-xl-30,.layout-margin .flex-offset-xl-30,.layout-margin .offset-xl-30{margin-left:30%}[dir=rtl] .offset-xl-30,[dir=rtl] .flex-offset-xl-30,[dir=rtl] .layout-margin .flex-offset-xl-30,[dir=rtl] .layout-margin .offset-xl-30{margin-left:auto;margin-right:30%}.offset-xl-35,.flex-offset-xl-35,.layout-margin .flex-offset-xl-35,.layout-margin .offset-xl-35{margin-left:35%}[dir=rtl] .offset-xl-35,[dir=rtl] .flex-offset-xl-35,[dir=rtl] .layout-margin .flex-offset-xl-35,[dir=rtl] .layout-margin .offset-xl-35{margin-left:auto;margin-right:35%}.offset-xl-40,.flex-offset-xl-40,.layout-margin .flex-offset-xl-40,.layout-margin .offset-xl-40{margin-left:40%}[dir=rtl] .offset-xl-40,[dir=rtl] .flex-offset-xl-40,[dir=rtl] .layout-margin .flex-offset-xl-40,[dir=rtl] .layout-margin .offset-xl-40{margin-left:auto;margin-right:40%}.offset-xl-45,.flex-offset-xl-45,.layout-margin .flex-offset-xl-45,.layout-margin .offset-xl-45{margin-left:45%}[dir=rtl] .offset-xl-45,[dir=rtl] .flex-offset-xl-45,[dir=rtl] .layout-margin .flex-offset-xl-45,[dir=rtl] .layout-margin .offset-xl-45{margin-left:auto;margin-right:45%}.offset-xl-50,.flex-offset-xl-50,.layout-margin .flex-offset-xl-50,.layout-margin .offset-xl-50{margin-left:50%}[dir=rtl] .offset-xl-50,[dir=rtl] .flex-offset-xl-50,[dir=rtl] .layout-margin .flex-offset-xl-50,[dir=rtl] .layout-margin .offset-xl-50{margin-left:auto;margin-right:50%}.offset-xl-55,.flex-offset-xl-55,.layout-margin .flex-offset-xl-55,.layout-margin .offset-xl-55{margin-left:55%}[dir=rtl] .offset-xl-55,[dir=rtl] .flex-offset-xl-55,[dir=rtl] .layout-margin .flex-offset-xl-55,[dir=rtl] .layout-margin .offset-xl-55{margin-left:auto;margin-right:55%}.offset-xl-60,.flex-offset-xl-60,.layout-margin .flex-offset-xl-60,.layout-margin .offset-xl-60{margin-left:60%}[dir=rtl] .offset-xl-60,[dir=rtl] .flex-offset-xl-60,[dir=rtl] .layout-margin .flex-offset-xl-60,[dir=rtl] .layout-margin .offset-xl-60{margin-left:auto;margin-right:60%}.offset-xl-65,.flex-offset-xl-65,.layout-margin .flex-offset-xl-65,.layout-margin .offset-xl-65{margin-left:65%}[dir=rtl] .offset-xl-65,[dir=rtl] .flex-offset-xl-65,[dir=rtl] .layout-margin .flex-offset-xl-65,[dir=rtl] .layout-margin .offset-xl-65{margin-left:auto;margin-right:65%}.offset-xl-70,.flex-offset-xl-70,.layout-margin .flex-offset-xl-70,.layout-margin .offset-xl-70{margin-left:70%}[dir=rtl] .offset-xl-70,[dir=rtl] .flex-offset-xl-70,[dir=rtl] .layout-margin .flex-offset-xl-70,[dir=rtl] .layout-margin .offset-xl-70{margin-left:auto;margin-right:70%}.offset-xl-75,.flex-offset-xl-75,.layout-margin .flex-offset-xl-75,.layout-margin .offset-xl-75{margin-left:75%}[dir=rtl] .offset-xl-75,[dir=rtl] .flex-offset-xl-75,[dir=rtl] .layout-margin .flex-offset-xl-75,[dir=rtl] .layout-margin .offset-xl-75{margin-left:auto;margin-right:75%}.offset-xl-80,.flex-offset-xl-80,.layout-margin .flex-offset-xl-80,.layout-margin .offset-xl-80{margin-left:80%}[dir=rtl] .offset-xl-80,[dir=rtl] .flex-offset-xl-80,[dir=rtl] .layout-margin .flex-offset-xl-80,[dir=rtl] .layout-margin .offset-xl-80{margin-left:auto;margin-right:80%}.offset-xl-85,.flex-offset-xl-85,.layout-margin .flex-offset-xl-85,.layout-margin .offset-xl-85{margin-left:85%}[dir=rtl] .offset-xl-85,[dir=rtl] .flex-offset-xl-85,[dir=rtl] .layout-margin .flex-offset-xl-85,[dir=rtl] .layout-margin .offset-xl-85{margin-left:auto;margin-right:85%}.offset-xl-90,.flex-offset-xl-90,.layout-margin .flex-offset-xl-90,.layout-margin .offset-xl-90{margin-left:90%}[dir=rtl] .offset-xl-90,[dir=rtl] .flex-offset-xl-90,[dir=rtl] .layout-margin .flex-offset-xl-90,[dir=rtl] .layout-margin .offset-xl-90{margin-left:auto;margin-right:90%}.offset-xl-95,.flex-offset-xl-95,.layout-margin .flex-offset-xl-95,.layout-margin .offset-xl-95{margin-left:95%}[dir=rtl] .offset-xl-95,[dir=rtl] .flex-offset-xl-95,[dir=rtl] .layout-margin .flex-offset-xl-95,[dir=rtl] .layout-margin .offset-xl-95{margin-left:auto;margin-right:95%}.offset-xl-33,.flex-offset-xl-33,.layout-margin .flex-offset-xl-33,.layout-margin .offset-xl-33{margin-left:33.3333333333%}.offset-xl-66,.flex-offset-xl-66,.layout-margin .flex-offset-xl-66,.layout-margin .offset-xl-66{margin-left:66.6666666667%}[dir=rtl] .offset-xl-66,[dir=rtl] .flex-offset-xl-66,[dir=rtl] .layout-margin .flex-offset-xl-66,[dir=rtl] .layout-margin .offset-xl-66{margin-left:auto;margin-right:66.6666666667%}.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-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-start,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-start,.layout-align-xl-end-center,.layout-align-xl-end-end,.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-start,.layout-align-xl-space-around-end,.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-start,.layout-align-xl-space-between-end,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-start-start,.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-between-start,.layout-align-xl-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-start-center,.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-between-center,.layout-align-xl-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-start-center>*,.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-start-end,.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-between-end,.layout-align-xl-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-start-stretch,.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-space-around-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 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 100%;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-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-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-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 100%;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 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 100%;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: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-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-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-lg: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}}:root{--xc-ws-div-color: #011f6a;--xc-ws-text-color: #ffffff;--xc-ws-text-button-color: #ffffff;--xc-ws-button-color: #011f6a;--xc-ws-background-color: #fafafa;--xc-ws-client-height: 450px;--xc-ws-client-width: 295px}span.ng-binding,span.field-description{user-select:none}.centered-text{text-align:center}::-webkit-scrollbar{width:0;background:transparent}::-webkit-scrollbar-thumb{background:transparent;border-radius:0px}.field-description{font-size:13px;line-height:14px;color:gray;padding:5px 0px 5px 0px}.field-description.error{color:#dd2c00}.md-button.upload-button{padding:0 16px;height:36px}md-icon.material-icons{color:inherit !important}.white-label,.md-toolbar-tools .title{user-select:none}.white-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.white-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-fab.upload-button,.md-fab.upload-button.md-button.md-default-theme.md-raised:not([disabled]) md-icon,.md-fab.upload-button.md-button.md-raised:not([disabled]) md-icon{color:var(--xc-ws-text-color) !important;background:var(--xc-ws-div-color) !important}.form-input-container span{word-break:break-all}.chat-online ::-webkit-scrollbar{width:5px;background:var(--xc-ws-div-color)}.chat-online ::-webkit-scrollbar-thumb{background:linear-gradient(13deg, var(--xc-ws-text-color), var(--xc-ws-div-color));border-radius:10px}.chat-online ::-webkit-scrollbar-thumb:hover{background:linear-gradient(13deg, var(--xc-ws-div-color), var(--xc-ws-text-color))}.chat-online form{display:flex;width:100%;height:calc(100% - 20px);overflow:auto;padding:1em 0px 40px 0px;position:relative;max-width:100%;overflow-x:hidden;margin-bottom:10px}.chat-online form .form-field{margin-right:10px;margin-left:10px}.chat-online form .form-input-container{width:100%;height:100%;overflow:auto;scrollbar-width:none}.chat-online form div[ng-switch-when=label] md-content{overflow:hidden}.chat-online form div[ng-switch-when=label] md-content span{overflow:hidden}.chat-online form div.online-button-wrapper,.chat-online form div.offline-button-wrapper{position:fixed;bottom:30px;left:0px;width:calc(100% - 40px);padding:0px 20px;display:flex;background:transparent;align-items:center;justify-content:center}.chat-online form div.online-button-wrapper button,.chat-online form div.offline-button-wrapper button{margin:8px 0px;padding:2px;width:100%}.chat-online form .layout-row,.chat-online form .layout-column{flex-wrap:wrap;justify-content:start}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button,.chat-online form .layout-column md-checkbox,.chat-online form .layout-column md-radio-button{padding:4px 0;margin-left:unset !important;word-break:break-all}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button{min-width:50%;max-width:50%}.chat-online form button.upload-button{margin:6px 8px 6px 0}.chat-online form button.upload-button md-icon{font-size:20px}.chat-unmanaged{display:flex;flex-direction:column}.chat-unmanaged form{flex-grow:1;max-width:100%;overflow-x:hidden}.chat-closing{height:100%;padding:20px;overflow:hidden;align-items:stretch;justify-content:space-between}.chat-closing>md-content,.chat-closing>form{max-width:100%;overflow-x:hidden}.chat-closing>md-content,.chat-closing>md-content span,.chat-closing>form,.chat-closing>form span{width:100%}.logo{width:32px}#attachmentButton:hover .mdi-attachment:before{color:#555 !important;opacity:.85 !important}#input_text{position:relative !important;width:100% !important;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:1px solid #ccc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}#input_text:focus-within{border-color:#66afe9;outline:0;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#attachmentButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}i.icon_color{color:red}.mdi-24px.mdi-warn.mdi:before{color:#ff5722}.mdi-24px.mdi-success.mdi:before{color:#4caf50 !important}#sendButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}.rec-button-group{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}.emojionearea,.emojionearea.form-control{display:block;position:relative !important;width:100%;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:0px solid #ccc !important;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-webkit-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mdi mdi-attachment mdi-24px mdi-light ng-scope::before{color:#a9a9a9}.mdi-attachment:hover{color:#555 !important}.mdi-24px.mdi-set,.mdi-24px.mdi:before{color:#a9a9a9}.md-button.md-fab.md-mini{line-height:20px !important;min-height:24px !important}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>img{width:19px !important;height:19px !important;margin:0 1px !important}.emojionearea .emojionearea-picker{width:100% !important;right:0 !important;height:220px !important;top:0px !important}.emojionearea .emojionearea-picker .emojionearea-wrapper{position:relative;height:220px !important;width:100% !important}.emojionearea .emojionearea-picker.emojionearea-picker-position-top{margin-top:-100% !important}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-top{margin-top:-236px !important;width:260px !important;min-width:260px !important}.emojionearea .emojionearea-picker .emojionearea-search>input{width:100px !important;min-width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search{width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search-panel+.emojionearea-scroll-area{height:70% !important}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block{padding:0 !important}.emojionearea .emojionearea-picker .emojionearea-filters{background:#f5f7f9;padding:0 !important;height:40px}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter{width:25px !important;padding:7px 3px 0}#id-row,#chat-app{max-width:100%;width:100%;max-height:100%;height:100%}#chat-app{background-color:transparent}#chat-app .header-button{padding:0;margin:0;font-size:18px;cursor:pointer}ui-view{display:block;width:100%;height:100%}#chat-app .chat-toolbar{height:56px;min-height:56px;cursor:pointer;outline:0}#chat-app .chat-content{flex-grow:1;height:calc(100% - 56px);background:#fff;border:1px solid #d3d3d3;-ms-overflow-style:none;overflow:hidden;box-sizing:border-box}#chat-app .chat-content .chat-messages{height:calc(100% - 60px);overflow:auto;border-bottom:1px solid #d3d3d3}#chat-app .chat-content .chat-online{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .chat-content .chat-unmanaged{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .avatar-wrapper{position:relative;bottom:-3px;right:5px}#chat-app .chat-content .message-row .bubble{word-wrap:break-word;position:relative;max-width:190px;padding:6px 7px 8px 9px;background-color:#fff;border-radius:6px}#chat-app .chat-content .message-row .bubble .message{white-space:pre-wrap}#chat-app .chat-content .message-row .bubble .message-done{color:#dcdcdc}#chat-app .chat-content .message-row .bubble .message-done-all{color:#00bfff}#chat-app .chat-content .message-row .bubble:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADGUExURQAAAP////b29vn5+f///wAAAP///wAAAAAAAP///9ra2v////j4+PHx8fv7++Hh4fHx8f////////////////39/QAAAP////////z8/P////39/f39/fz8/P////////////z8/P////////////z8/P////////////v7+/Hx8f///9bW1vz8/K2trf////39/f39/WJiYgAAAExMTFtbWwAAAN3d3cjIyPr6+vX19QAAAO7u7vz8/NTU1Ofn5zMzM////zGPlXsAAABBdFJOUwAcm/kREh4CCDWL1SneR6TfAQffhMYK/A5nRrLWfRc5DW2ih5f+19Kn+9v4g/1LCJuXHwQUKgahcXS6DNnlDMMKKzPoTgAAAKBJREFUKM+V08USwmAQA+C/0NIWd3d3d8/7vxTMcIPkQK7f7CG7s8bQAOY/SCuwFYQU1P+eiCqIK2gpWCmoCrAgoKQgJ8CHgIqAMjg0MxxSQ3DogEMWFBZtUPAHYGB1CyDQWE6AH7BrfXzlAxGAQhECTGAmwN1Okz0Gb/LW4fEItIfrOfNELMh3tck7u+PhcT2zQ7l77/K8iY8yJwV3BeYFqpc/uSyPGdAAAAAASUVORK5CYII=);content:"";position:absolute;left:-11px;bottom:3px;width:12px;height:19px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain}#chat-app .chat-content .message-row .bubble .time{font-size:10px;text-align:right;margin-bottom:5px}#chat-app .chat-content .message-row.out .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.auto{align-items:flex-end;font-style:italic}#chat-app .chat-content .message-row.auto .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-size:17px;font-style:italic;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in{align-items:flex-end}#chat-app .chat-content .message-row.in2{align-items:flex-end}#chat-app .chat-content .message-row.out{align-items:flex-end}#chat-app .chat-content .message-row.in2 .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in2 .bubble{margin-right:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in2 .bubble:before{left:-11px;right:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=);-webkit-transform:rotate(180deg);transform:rotate(180deg)}#chat-app .chat-content .message-row.in .avatar{order:2;margin:0 0 0 16px;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in .bubble:before{right:-11px;left:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#chat-app .chat-footer{width:100%}#waiting{overflow:visible;height:calc(100% - 64px);background:#fff;text-align:center;flex:1 0 auto;padding:32px}#waiting .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54)}.sk-fading-circle{width:40px;height:40px;position:relative}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:"";display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}md-toast.md-success-toast .md-toast-content{background-color:green}md-toast.md-warning-toast .md-toast-content{color:#000;background-color:#f0ad4e}md-toast.md-failure-toast .md-toast-content{background-color:red}md-toast .md-toast-text{white-space:pre-line}md-toast.size .md-toast-content{font-weight:550;padding:0px;text-align:center;height:56px}md-toast.rounded .md-toast-content{border-radius:15px 15px 0px 0px}md-toast.squared .md-toast-content{border-radius:0px 0px 0px 0px}@media(min-device-width: 769px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:block}}@media(max-device-width: 768px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:none}}md-option .md-text{white-space:break-spaces}md-input-container{margin:0px 0px 8px 0px}.no-padding{padding:0 !important}.record-ripple{border-radius:50%;background-color:rgba(0,0,0,.2);width:130px;height:130px;transform:scale(0);position:absolute}.btn-send-container{display:flex;align-items:center;justify-content:center}@keyframes recordBlink{0%{opacity:1}50%{opacity:.2}100%{opacity:1}}.record-time{height:44px;line-height:44px}.record-time:after{content:" ";width:10px;height:10px;background-color:#df3f40;border-radius:50%;margin:0 9px;display:inline-block;animation:recordBlink 1.25s infinite}.audio-player{white-space:normal;width:180px;display:flex;justify-content:space-between;align-items:center;box-sizing:content-box;max-width:250px;padding-left:5px;padding-right:5px;border-radius:5px;background-color:#fff;box-shadow:0 4px 16px 0 rgba(0,0,0,.07);height:40px;align-items:center;user-select:none;-webkit-user-select:none}.audio-player .material-icons{font-size:26px;color:#566574;display:table}.audio-player .play-pause-btn{display:block;cursor:pointer}.audio-player .controls{color:#55606e;display:flex;flex-grow:1;justify-content:space-between;align-items:center;margin-left:2px;margin-right:10px}.audio-player .controls .slider{margin-left:15px;margin-right:15px;min-width:100px}.container-media-viewer .media-container{border-radius:inherit}.container-media-viewer .media-container-download-button{opacity:1;min-height:1.7rem;line-height:unset;margin:0px 0px}.container-media-viewer .media-container .mdi-24px:before{font-size:1.5rem;color:#000}.container-media-viewer .media-photo,.container-media-viewer .media-video{object-fit:cover;width:100%;height:100%;border-radius:inherit}.container-media-viewer .attachment{max-width:100%;border-radius:inherit;overflow:hidden;user-select:none;display:flex;justify-content:flex-end;position:relative;flex-direction:column;flex-wrap:nowrap}.container-media-viewer .attachment img,.container-media-viewer .attachment video{max-width:100%}.in .document-ico:after{border-top-color:#e8f5e9;border-right-color:#e8f5e9}.in .document-container *,.in .document-container *:before,.in .document-container *:after{box-sizing:inherit}.out .document-ico:after{border-top-color:#fff;border-right-color:#fff}.out .document-container *,.out .document-container *:before,.out .document-container *:after{box-sizing:inherit}.document-container{box-sizing:border-box}.document-container .document-wrapper{display:flex;flex-direction:column-reverse}.document-container .document-wrapper .middle-ellipsis-element{width:100%;overflow:hidden;display:block;white-space:normal;text-overflow:ellipsis}.document-container .document-wrapper .document{--icon-margin: 0.75rem;height:58px}.document-container .document-wrapper .document-name{line-height:1.4;margin-top:1px;overflow:hidden;text-overflow:ellipsis}.document-container .document-wrapper .document-ico{background-color:var(--background-color);border-radius:.375rem;line-height:1;text-align:center;padding:1.5625rem .25rem 0 .25rem}.document-container .document-wrapper .document-ico:after{--size: 1.125rem;content:"";display:block;position:absolute;top:0;right:0;width:var(--size);height:var(--size);border-bottom-left-radius:.25rem;border-style:solid;border-width:calc(var(--size)/1.8);border-left-color:rgba(0,0,0,.25);border-bottom-color:rgba(0,0,0,.25)}.document-container .document-wrapper .document-ico,.document-container .document-wrapper .document-download{font-size:1.125rem;background-size:contain}.document-container .document-wrapper .document-ico,.document-container .document-wrapper .document-name{text-overflow:ellipsis;white-space:nowrap}.document-container .document-wrapper .document-download{background-color:var(--background-color);border-radius:.375rem}.document-container .document-wrapper .document.ext-zip{--background-color: #fb8c00}.document-container .document-wrapper .document.ext-pdf{--background-color: #df3f40}.document-container .document-wrapper .document.ext-apk,.document-container .document-wrapper .document.ext-csv{--background-color: #43a047}.document-container .document-wrapper .document{--background-color: #4368a0}.document-container .document-wrapper .document.document-with-thumb{--background-color: #fff}.document-container .document-wrapper .document.document-with-thumb .document-ico:after{display:none}.document-container .document-wrapper .document.document-with-thumb .document-download{background-color:rgba(0,0,0,.15)}.document-container .document-wrapper .document-name{white-space:nowrap}.document{--icon-size: 3.375rem;--icon-margin: 0.875rem;--padding-left: calc(var(--icon-size) + var(--icon-margin));padding-left:var(--padding-left);display:flex;flex-direction:column;justify-content:center;cursor:pointer;user-select:none}.document-ico,.document-download{position:absolute;margin-left:calc(var(--padding-left)*-1);width:var(--icon-size);height:var(--icon-size);color:#fff}.document-download{opacity:1;z-index:1;align-items:center;font-size:1.5rem;cursor:pointer;display:flex;justify-content:center}.document-download .mdi-24px:before{color:#fff;font-size:1.5rem}.document-download.ng-hide{opacity:0}.document-download.ng-hide-add,.document-download.ng-hide-remove{transition:opacity .25s ease-in-out}
 
 /*# sourceMappingURL=app.css.map*/
\ No newline at end of file
similarity index 96%
rename from snippet/3.5.0/scripts/vendor-stateDirectives.js
rename to snippet/3.8.0/scripts/vendor-stateDirectives.js
index 88a6983cdc86e7301ec94a1e956dc775724e53c0..138524e087449cb4dbe30b53fd63ab18b2c22f1c 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"styles/app.css","mappings":";;;;;;;;;;;;;;;;;;;;AAEQ,WCFR,mCACE,4CACA,wSACA,mBAKA,kBACA,sBCTF,oBAEE,yDACA,kBACA,oBACA,oBACA,mCACA,kCACA,0BCPE,eACI,kCADJ,eACI,qBADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,2BADJ,eACI,2BADJ,eACI,yBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oCADJ,eACI,sCADJ,eACI,mCADJ,eACI,2CADJ,eACI,6BADJ,eACI,yBADJ,eACI,6BADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,6BADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,mBADJ,eACI,wBADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,0BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,2BADJ,eACI,4BADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,oBADJ,eACI,+BADJ,eACI,uBADJ,eACI,uBADJ,eACI,oBADJ,eACI,qBADJ,eACI,kCADJ,eACI,0BADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,iCADJ,eACI,oCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,4BADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,mCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,uBADJ,eACI,+BADJ,eACI,gCADJ,eACI,4BADJ,eACI,gCADJ,eACI,iCADJ,eACI,uCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,qCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,+BADJ,eACI,gCADJ,eACI,6BADJ,eACI,mCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,yBADJ,eACI,8BADJ,eACI,kCADJ,eACI,0CADJ,eACI,qCADJ,eACI,6CADJ,eACI,8CADJ,eACI,6BADJ,eACI,qCADJ,eACI,6CADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,2BADJ,eACI,+BADJ,eACI,uCADJ,eACI,kCADJ,eACI,0CADJ,eACI,2CADJ,eACI,0BADJ,eACI,kCADJ,eACI,0CADJ,eACI,4BADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,gBADJ,eACI,uBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,+BADJ,eACI,sBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,uBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,oBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,iCADJ,eACI,kCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,sCADJ,eACI,uCADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,6CADJ,eACI,+CADJ,eACI,2BADJ,eACI,8BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,wBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,qBADJ,eACI,uBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,gCADJ,eACI,gCADJ,eACI,kBADJ,eACI,yBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,2BADJ,eACI,mCADJ,eACI,uBADJ,eACI,oCADJ,eACI,+BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,mCADJ,eACI,6BADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,iCADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,uBADJ,eACI,6BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,mBADJ,eACI,mBADJ,eACI,oBADJ,eACI,iBADJ,eACI,4BADJ,eACI,sBADJ,eACI,sBADJ,eACI,iBADJ,eACI,iCADJ,eACI,mCADJ,eACI,+BADJ,eACI,wBADJ,eACI,sBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,yBADJ,eACI,oCADJ,eACI,oCADJ,eACI,qCADJ,eACI,kCADJ,eACI,wBADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,iBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,wBADJ,eACI,2BADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,gCADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,iBADJ,eACI,kBADJ,eACI,2BADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,yBADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,6BADJ,eACI,wBADJ,eACI,gCADJ,eACI,gCADJ,eACI,uBADJ,eACI,sCADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mCADJ,eACI,2CADJ,eACI,oCADJ,eACI,mCADJ,eACI,6BADJ,eACI,oCADJ,eACI,4CADJ,eACI,qCADJ,eACI,qCADJ,eACI,4CADJ,eACI,oDADJ,eACI,6CADJ,eACI,sCADJ,eACI,6CADJ,eACI,qDADJ,eACI,8CADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,wBADJ,eACI,yBADJ,eACI,wBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,0BADJ,eACI,wBADJ,eACI,kBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,kCADJ,eACI,kCADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,uBADJ,eACI,wBADJ,eACI,sBADJ,eACI,uBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,wCADJ,eACI,4BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oCADJ,eACI,8BADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,qBADJ,eACI,0BADJ,eACI,qBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,mCADJ,eACI,8BADJ,eACI,sCADJ,eACI,6BADJ,eACI,kCADJ,eACI,gCADJ,eACI,wCADJ,eACI,8BADJ,eACI,sCADJ,eACI,4BADJ,eACI,oCADJ,eACI,0BADJ,eACI,mCADJ,eACI,2CADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,yBADJ,eACI,+BADJ,eACI,2BADJ,eACI,0BADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,sBADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,mBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kCADJ,eACI,6BADJ,eACI,8BADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,4BADJ,eACI,2BADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,qBADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,oCADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,sBADJ,eACI,4BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,oBADJ,eACI,2BADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,6BADJ,eACI,yBADJ,eACI,2BADJ,eACI,qBADJ,eACI,6BADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,sBADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,6BADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,oBADJ,eACI,4BADJ,eACI,sBADJ,eACI,0BADJ,eACI,iBADJ,eACI,iBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,4BADJ,eACI,6BADJ,eACI,oCADJ,eACI,2BADJ,eACI,kCADJ,eACI,oBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,6BADJ,eACI,2BADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,sBADJ,eACI,+BADJ,eACI,4BADJ,eACI,sBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,2BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,oBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,sBADJ,eACI,4BADJ,eACI,gCADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,sBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,wBADJ,eACI,gCADJ,eACI,kBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,gCADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,kCADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,wBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,6BADJ,eACI,iCADJ,eACI,mCADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,uBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,qBADJ,eACI,kBADJ,eACI,kBADJ,eACI,4BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,mBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,2BADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,6BADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,6BADJ,eACI,mCADJ,eACI,qCADJ,eACI,4BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,2BADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,kBADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,iCADJ,eACI,6BADJ,eACI,sBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,8BADJ,eACI,oCADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,iCADJ,eACI,+BADJ,eACI,+BADJ,eACI,gCADJ,eACI,yBADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,oCADJ,eACI,iCADJ,eACI,oCADJ,eACI,iCADJ,eACI,4CADJ,eACI,0CADJ,eACI,2CADJ,eACI,oCADJ,eACI,oCADJ,eACI,2BADJ,eACI,iCADJ,eACI,+BADJ,eACI,gCADJ,eACI,kCADJ,eACI,uCADJ,eACI,gCADJ,eACI,iCADJ,eACI,+BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,4BADJ,eACI,yBADJ,eACI,kCADJ,eACI,0CADJ,eACI,8BADJ,eACI,gCADJ,eACI,yBADJ,eACI,yCADJ,eACI,yCADJ,eACI,0BADJ,eACI,8BADJ,eACI,0CADJ,eACI,0CADJ,eACI,uCADJ,eACI,gCADJ,eACI,gCADJ,eACI,+BADJ,eACI,oCADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,wBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,wBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,yBADJ,eACI,gCADJ,eACI,gCADJ,eACI,qBADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,yBADJ,eACI,oCADJ,eACI,6BADJ,eACI,mBADJ,eACI,kBADJ,eACI,iBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,4BADJ,eACI,wCADJ,eACI,qCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mCADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,yBADJ,eACI,yBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,iCADJ,eACI,yBADJ,eACI,yBADJ,eACI,6BADJ,eACI,8BADJ,eACI,2BADJ,eACI,iBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,iCADJ,eACI,6BADJ,eACI,wBADJ,eACI,uBADJ,eACI,iCADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,gCADJ,eACI,uBADJ,eACI,2BADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,6BADJ,eACI,iCADJ,eACI,qBADJ,eACI,qBADJ,eACI,yBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,+BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,0BADJ,eACI,0BADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,+BADJ,eACI,6BADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,4BADJ,eACI,2BADJ,eACI,uBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,sCADJ,eACI,uCADJ,eACI,4CADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,kCADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,oBADJ,eACI,mBADJ,eACI,8BADJ,eACI,4BADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,iCADJ,eACI,uBADJ,eACI,wBADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,kBADJ,eACI,oBADJ,eACI,sBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,oBADJ,eACI,iBADJ,eACI,wBADJ,eACI,uBADJ,eACI,sBADJ,eACI,wBADJ,eACI,yBADJ,eACI,sBADJ,eACI,gCADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,iBADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,6BADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,iCADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,kCADJ,eACI,wBADJ,eACI,4BADJ,eACI,iCADJ,eACI,oBADJ,eACI,+BADJ,eACI,wBADJ,eACI,wBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,uBADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,6BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,oBADJ,eACI,uBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,+BADJ,eACI,8BADJ,eACI,iCADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,+BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,2BADJ,eACI,8BADJ,eACI,kCADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,gCADJ,eACI,2BADJ,eACI,gCADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,oBADJ,eACI,uBADJ,eACI,4BADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,iCADJ,eACI,gCADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,sBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qBADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,kCADJ,eACI,sCADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,gCADJ,eACI,kCADJ,eACI,8BADJ,eACI,uBADJ,eACI,0BADJ,eACI,oBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,6BADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,yBADJ,eACI,mBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,sBADJ,eACI,oCADJ,eACI,iBADJ,eACI,kBADJ,eACI,kBADJ,eACI,qBADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,gCADJ,eACI,iDADJ,eACI,wCADJ,eACI,iBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,oBADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,yBADJ,eACI,qBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,mBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,gCADJ,eACI,gCADJ,eACI,sCADJ,eACI,uCADJ,eACI,qBADJ,eACI,8BADJ,eACI,4BADJ,eACI,mBADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,uBADJ,eACI,qBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,qBADJ,eACI,oBADJ,eACI,mBADJ,eACI,iBADJ,eACI,oBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,yBADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,4BADJ,eACI,gCADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,uBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,oCADJ,eACI,mCADJ,eACI,4BADJ,eACI,wBADJ,eACI,gBADJ,eACI,oBADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,+BADJ,eACI,uBADJ,eACI,oBADJ,eACI,oBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kBADJ,eACI,8BADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,oCADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,2BADJ,eACI,6BADJ,eACI,yBADJ,eACI,kBADJ,eACI,kBADJ,eACI,sBADJ,eACI,8BADJ,eACI,yBADJ,eACI,0CADJ,eACI,iCADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,oBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,+BADJ,eACI,qBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,uBADJ,eACI,8BADJ,eACI,qBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,uBADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,qBADJ,eACI,mBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,4BADJ,eACI,wBADJ,eACI,gCADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,iCADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,kBADJ,eACI,kBADJ,eACI,0BADJ,eACI,mBADJ,eACI,oBADJ,eACI,0BADJ,eACI,oBADJ,eACI,uBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,6BADJ,eACI,oBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,iBADJ,eACI,sBADJ,eACI,kBADJ,eACI,wBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,qBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,4BADJ,eACI,qBADJ,eACI,oBADJ,eACI,6BADJ,eACI,kCADJ,eACI,yBADJ,eACI,oBADJ,eACI,gBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,mCADJ,eACI,gCADJ,eACI,iCADJ,eACI,kCADJ,eACI,gCADJ,eACI,iCADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,qBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,6BADJ,eACI,4BADJ,eACI,sBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,mBADJ,eACI,+BADJ,eACI,2BADJ,eACI,wBADJ,eACI,gCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,8BADJ,eACI,4BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,uBADJ,eACI,oBADJ,eACI,uBADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,yBADJ,eACI,8BADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,6BADJ,eACI,8BADJ,eACI,gCADJ,eACI,iBADJ,eACI,uBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,sCADJ,eACI,2BADJ,eACI,kCADJ,eACI,0CADJ,eACI,mBADJ,eACI,mBADJ,eACI,4BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,uBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,2BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,iCADJ,eACI,sCADJ,eACI,iCADJ,eACI,4CADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,wBADJ,eACI,qBADJ,eACI,uBADJ,eACI,4BADJ,eACI,mBADJ,eACI,oBADJ,eACI,wBADJ,eACI,6BADJ,eACI,4BADJ,eACI,yBADJ,eACI,iBADJ,eACI,4BADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,iCADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,4BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qCADJ,eACI,sCADJ,eACI,oBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,iBADJ,eACI,sBADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,qCADJ,eACI,sCADJ,eACI,iCADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,+BADJ,eACI,uBADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,oBADJ,eACI,kBADJ,eACI,mBADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oCADJ,eACI,8BADJ,eACI,4BADJ,eACI,iCADJ,eACI,oCADJ,eACI,gCADJ,eACI,oBADJ,eACI,kBADJ,eACI,qBADJ,eACI,uBADJ,eACI,yBADJ,eACI,4BADJ,eACI,gCADJ,eACI,qBADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,8BADJ,eACI,yBADJ,eACI,+BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,wBADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,iCADJ,eACI,4BADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,8BADJ,eACI,6BADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,qBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,kCADJ,eACI,0BADJ,eACI,mBADJ,eACI,2BADJ,eACI,iBADJ,eACI,yBADJ,eACI,wBADJ,eACI,oBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,8BADJ,eACI,uBADJ,eACI,4BADJ,eACI,kBADJ,eACI,oBADJ,eACI,2BADJ,eACI,8BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,mBADJ,eACI,4BADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,sBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kBADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,kBADJ,eACI,oBADJ,eACI,mCADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,0BADJ,eACI,oCADJ,eACI,kCADJ,eACI,oCADJ,eACI,kCADJ,eACI,qBADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iBADJ,eACI,2BADJ,eACI,yBADJ,eACI,oBADJ,eACI,kCADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,0BADJ,eACI,+BADJ,eACI,kCADJ,eACI,kCADJ,eACI,4BADJ,eACI,iCADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,sBADJ,eACI,0BADJ,eACI,iCADJ,eACI,mCADJ,eACI,8BADJ,eACI,gCADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,oCADJ,eACI,sBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,uBADJ,eACI,mBADJ,eACI,oBADJ,eACI,6BADJ,eACI,0BADJ,eACI,gBADJ,eACI,oBADJ,eACI,uBADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,iBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,oBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,kCADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,iCADJ,eACI,2BADJ,eACI,4BADJ,eACI,iCADJ,eACI,+BADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,oBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,sBADJ,eACI,sCADJ,eACI,gCADJ,eACI,wCADJ,eACI,sCADJ,eACI,iCADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,iBADJ,eACI,kBADJ,eACI,uBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,oBADJ,eACI,kBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,kBADJ,eACI,kBADJ,eACI,6BADJ,eACI,2CADJ,eACI,2CADJ,eACI,0CADJ,eACI,yCADJ,eACI,4CADJ,eACI,6CADJ,eACI,iCADJ,eACI,iBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,kBADJ,eACI,sBADJ,eACI,oCADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,qBADJ,eACI,mBAIR,WACI,kBACA,wCCLI,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,kBAMR,qBACI,+BAEJ,qBACI,mBAIJ,UACI,gCAEJ,0BACI,uBAOA,+BACI,4BACA,wBACA,uBAHJ,+BACI,4BACA,wBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,oBAoBZ,4BACI,qBACA,aACA,mBACA,oBAEJ,4BACI,qBACA,aACA,mBACA,kBC9DJ,6CACI,sCACQ,6BAGZ,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ,sBAId,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ;;;;;ECxBd,CAmkBA,UACE,YACA,kBAGF,KACE,SACA,UAGF,sBACE,aAEF,OACE,aAGF,iCAEE,mBACA,yBACA,gBACA,YACA,UACA,SAGF,6BAIE,wBAIF,oEAIE,eACA,0BAEA,4GACE,eAIJ,SACE,mBACA,cAIA,mBACE,6BACA,uBACA,+BAEA,+FAEE,wBAGJ,uBACE,iBAIJ,oBACE,SACA,mBACA,WACA,YACA,gBACA,UACA,kBACA,oBACA,UAGF,WACE,kBACA,MACA,OACA,SACA,QACA,sBACA,oBAGF,sBA7bE,uCAgcF,sBA5bE,sCAgcF,8BACE,wDAOF,qBACE,oBACA,kBACA,gBACA,OACA,MACA,WACA,YACA,qDAGF,WAEE,kBACA,yCACA,yBACA,UACA,kBACA,4BACE,sRAOF,4BACE,yCAEF,mFACE,WAEF,4BACE,gEAKJ,4BACE,eACA,gBAGF,YACE,YAGF,WACE,WAGF,gBACE,kBACA,6BACA,MACA,QACA,SACA,OACA,UA5oBoB,CA8oBpB,oCACE,cACA,kBACA,yBACA,QACA,MACA,SACA,UAppBsB,CAqpBtB,wCAMJ,gBACE,gCAKF,eACE,yBAGF,yBACE,YACE,cAOF,wDACG,mBAIL,aACE,cACA,2BAEF,aACE,cACA,2BApQA,yBA6CE,4IAnQF,gBA5K0B,CA6K1B,gKACE,aAkQ2E,CAjQ3E,iBA/KwB,EAwY1B,+CAuCE,mRAnQF,gBA5K0B,CA6K1B,iTACE,aAkQ2E,CAjQ3E,iBA/KwB,EA+Y1B,gDAgCE,6ZAnQF,gBA5K0B,CA6K1B,qcACE,aAkQ2E,CAjQ3E,iBA/KwB,EAuZ1B,iDAwBE,ikBAnQF,gBA5K0B,CA6K1B,mnBACE,aAkQ2E,CAjQ3E,iBA/KwB,EAga1B,0BAeE,mzBAnQF,gBA5K0B,CA6K1B,+2BACE,aAkQ2E,CAjQ3E,iBA/KwB,EAipB5B,UACE,0CACA,8BAEA,gBAEA,8BACA,0BAEA,mCACA,kCAMF,cACE,eAhyByB,CAiyBzB,gBACA,uBACA,iBAnyByB,CAqyB3B,cACE,cAryByB,CAsyBzB,gBACA,wBACA,gBAxyByB,CA0yB3B,cACE,cA1yByB,CA2yBzB,gBACA,iBAEF,cACE,cA9yByB,CA+yBzB,gBACA,iBAEF,aACE,cAlzByB,CAmzBzB,gBACA,iBAEF,UA/kBE,cAtOyB,CAuOzB,gBACA,sBAglBF,YA9jBE,cAzPyB,CA0PzB,gBACA,qBACA,iBAikBF,WAllBE,cAzOyB,CA0OzB,gBACA,qBACA,iBAklBF,WA9kBE,cAhPyB,CAiPzB,gBACA,qBACA,iBA8kBF,YACE,cAj0ByB,CAk0BzB,qBAEF,WACE,qBAOF,kCAKE,8CAl2BY,CAq2Bd,6BAIE,eA2bF,wBACE,YACA,OACA,kBACA,MACA,WAGF,wBACE,eAGF,qBACE,aAGF,kBACE,aAIF,2BACE,UACA,gBAGF,UACE,UACA,kBAEA,0BAGE,UACA,gBAGF,kCACE,UACA,6CA7tCa,CAguCf,kCACE,UACA,6CA9tCa,CAiuCf,2EAEE,UAGF,6BACE,YACA,eACA,WAGF,2BACE,YACA,kDAGF,2BACE,kDAIJ,sBACE,gBACA,OACA,gBACA,eACA,eACA,MAQF,gBACE,kBACA,cACA,YACA,kBACA,iBACA,gBAEE,gCACE,eAGJ,mCACE,gBACA,uBACA,YAEA,sDACE,iBAEF,wDACE,YAIA,gEACE,cACA,kBACA,QACA,QA/BuB,CAgCvB,UAjCqB,CAkCrB,WAlCqB,CAqCvB,+DAtmCJ,kBAikC2B,CAhkC3B,yEACE,eAsmCgF,CArmChF,iBA8jCyB,CA2C3B,qCAEE,aACA,mBACA,sBAEA,kBACA,iBACA,YACA,qDACE,WAGF,mGAGE,WACA,sBACA,YAGF,wDACE,kBACA,YACA,OAEA,kEACE,YACA,UACA,SACA,WAEF,+EACE,kBACA,MACA,OACA,WACA,WACA,gBAEA,6FACE,gBACA,WAEF,wFACE,+BACA,wGACE,UAGJ,wFACE,+BACA,wGACE,UAMV,qCAvvCA,eAEA,sBACA,YACA,gBACA,aACA,uBAmvCE,WACA,eACA,iBACA,YAnvCF,gDACE,aAovCF,6CACE,kBACA,iBACA,kBACA,UAjHyB,CAkHzB,WAlHyB,CAmHzB,eACA,YACA,kBACA,UACA,eACA,uBACA,gBACA,mDACE,WACA,kBACA,SACA,WACA,YACA,UACA,kBACA,mBACA,UACA,mDAz5CW,CA25Cb,mDACE,aAEA,yDACE,mBACA,UAGJ,qDACE,kBACA,QACA,SACA,gDACA,0DACE,eAGJ,sDACE,mBACA,mCACA,sEACE,mBAGJ,sDACE,mCACA,sEACE,mBAKN,8CAGE,sBACE,sBAEF,kDACE,YAKN,qIAEE,kBACA,qCACA,WA79CgB,CAi+ChB,YAEA,2JACE,iBAIJ,4BACE,sBACA,cACA,SACA,gBACA,gBACA,UAGF,mFAEE,WA7M4B,CAgN9B,6BACE,SACA,gBACA,UAEA,yDACE,eACA,gBACA,eACA,gBAzN0B,CA0N1B,WA1N0B,CA2N1B,kCACA,SACA,mBACA,uBAEA,+DACE,aAGF,oFACE,eAMN,8CACE,6CAEE,uBAOJ,YACE,yBAEA,kBACA,MACA,SACA,OACA,QAEA,UA3hDiB,CA6hDjB,6BACE,0BACA,WAEF,+BACE,WACA,sBAEF,+BACE,WAEF,qCACE,WAEF,gCACE,WAIF,6BACE,kBAGF,sBAEE,YAEA,+BACE,UAEF,yDACE,YAEF,+BACE,YACA,yBAEF,yDACE,UAeN,gBACE,kBACA,OACA,QACA,SACA,2BACA,UA5lDqB,CA8lDrB,qBACA,uBAEA,kCACA,mDArlDe,CAslDf,8BAEA,8BACE,cAGF,yBACE,UACA,kCAGF,gCACE,UACA,cACA,6CAIF,gCACE,6CACA,mDAtmDY,CAymDd,8BACE,6BACA,8CA7sDU,CA8sDV,gBA1CyB,CA2CzB,UACA,mBAGF,+BACE,qBACA,YACA,WACA,UAGF,6BACE,aACA,aAEA,mCACE,eAKF,qCACE,UACA,mBACA,WArE0B,CA4E9B,wBACE,kBACA,mBACA,cAEA,gCACE,aACA,mBACA,eACA,mBACA,mBAGF,qCACE,sBACA,mBACA,mBAEA,YAEA,cA5uDqB,CA6uDrB,iBA7uDqB,CA+vDrB,yBA1BF,qCAaI,wBACA,wBAFQ,CAKN,yDACE,uBAEF,qDACE,sBASN,gDA9BF,qCAaI,aACA,aAFQ,EAsBV,iDAlCF,qCAaI,wBACA,wBAFQ,EA0BV,0BAtCF,qCAaI,wBACA,wBAFQ,EA+BV,6CACE,aAGF,2DACE,aACA,sBACA,mBACA,WACA,oBAGF,2DACE,6BACA,aACA,sBACA,mBACA,WAGF,mDACE,eAtJwB,CAuJxB,iBACA,eACA,SACA,mBACA,WACA,kBACA,oBACA,gBAOR,8CACE,gBACE,uBA+BJ,mCACE,SAGF,WACE,qBACA,kBACA,eA33CA,eAk2CmB,CA6BnB,cA1BiB,CAr2CjB,gBAk2CmB,CAgCnB,sBACA,mBACA,kBAEA,iBA3CqB,CA4CrB,sBAGA,iBACA,aACA,SAGA,aAzCe,CA0Cf,cA5Cc,CA8Cd,uBACA,mBACA,mBAGA,yBACA,gBAx5CA,cAveyB,CAi4DzB,mBACA,qBACA,oBACA,qBAGA,gBAEA,iHAj6CA,mHAEE,eAg2CuB,CAl2CzB,mHAEE,gBAg2CuB,CAl2CzB,mHAEE,cA61CqB,CAqEvB,iBACE,aAGF,kCACE,qBAMF,uCACE,gBAGF,uBACE,gBAGF,mBACE,UACA,gBAIA,qCA7tDF,uCAkuDA,0BACE,aACA,WAt0DiB,CAu0DjB,YACA,gBA/5DQ,CAg6DR,WAz6DuB,CA06DvB,UAz0DgB,CA00DhB,iBA9GuB,CAiHzB,kBAKE,UAn3DU,CAq3DV,gBA1GqB,CA4GrB,YACA,UAp1De,CAq1Df,WAp1DgB,CAq1DhB,sBAxvDF,uCA2vDE,iBAhIuB,CAiIvB,4BACA,gBAEA,mDAr3DY,CAs3DZ,0DAlpDF,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA+oDA,0BACE,gBAvHwB,CAwHxB,UA1HkB,CA2HlB,WA1HmB,CA6HrB,qDACE,gBAGF,4BACE,gBAOA,6FApxDJ,uCAuxDI,qFAnxDJ,sCAyxDA,gCACE,sBACA,4BACA,gBAIA,gCAQF,kEACE,cAKF,6FAEE,mDA96Da,CA+6Db,kCAEE,4RAEE,kCAON,yGAEE,mDA57Da,CA67Db,mCAEE,oTAEE,mCAMR,iBACE,aACA,OACA,WAEA,4BACE,OAEA,cAEA,gBAEA,QAEA,6BACA,gBAEA,kBACA,uBACA,mBAEA,wCACE,8BAEF,uCACE,uBACA,8BAKN,8CACE,uCAEE,uBAOJ,QACE,sBACA,aACA,sBACA,UA5jEyB,CA8jEzB,0GAriEsB,CAuiEtB,uBACE,YAZW,CAaX,aACA,mBAGE,kDA1yDJ,iBA2yDkD,CA1yDlD,4DACE,iBAyyDsD,CAxyDtD,gBAwyDgD,CAK9C,iDAhzDJ,gBAizDmD,CAhzDnD,2DACE,gBA+yDuD,CA9yDvD,iBA8yDiD,CAIjD,sCACE,WACA,YAEA,oGAEE,kBAGF,8CACE,YACA,kDAEE,eACA,cAIJ,0DACE,gBAEA,oEACE,eAKN,2CACE,aACA,OACA,sBAEA,uDACE,eAKN,uEAGE,sBACA,aACA,cACA,WACA,YAGF,sBACE,uBACA,aACA,cACA,mBAEA,sCACE,cAGF,yCACE,OACA,sBACA,aAEA,qDACE,cACA,eAIA,gEACE,iBAKN,0CACE,gBAEA,uDACE,YACA,WAEF,uDACE,aACA,YAEF,uDACE,aACA,YAKN,wBACE,cACA,YA3HW,CA8HT,sCACE,aAGF,qCACE,gBAIJ,qCACE,aACA,YAIJ,wBACE,UAnsEuB,CAusEnB,sEACE,aAEA,oFACE,aAGF,mFACE,gBAIJ,gEACE,eACA,kBAKN,6CACE,OACA,2BACA,aACA,mBAIA,4EACE,aAEA,0FAz8DN,aA08DqD,CAz8DrD,oGACE,gBAw8DsD,CAv8DtD,cAu8DmD,CAG/C,yFA78DN,cA88DqD,CA78DrD,mGACE,iBA48DsD,CA38DtD,aA28DmD,CAIjD,sEACE,gBACA,iBAEA,oFAt9DN,gBAu9DqD,CAt9DrD,8FACE,gBAq9D2E,CAp9D3E,iBAo9DmD,CAG/C,mFA19DN,iBA29DqD,CA19DrD,6FACE,iBAy9D2E,CAx9D3E,gBAw9DmD,CAIjD,4EACE,OACA,yBACA,aACA,mBAKN,uBACE,gBACA,YAjNW,CAqNf,8CACE,QACE,uBAKF,sBACE,WACA,YAwBF,4BACE,eANkB,CAOlB,mBAIJ,YACE,sBACA,qBACA,mBACA,eACA,aACA,iBACA,kBACA,cA/sEe,CAuXf,eAi0DoB,CAh0DpB,qHAEE,eA+zDwB,CA0BxB,4DACE,UACA,SACA,WACA,YAIA,6EACE,iCA7/DN,0BACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,oCACE,SA4DsB,CA7DxB,oCACE,OA6D0B,CAE1B,iCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,gCACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,+CACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,qBACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,gCACE,yBAEA,sCACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,sBACE,eAIA,4CACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA45DJ,0BAEE,SACA,UACA,WACA,UAlDwB,CAmDxB,gBAGF,sBACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eA9DuB,CA+DvB,mBAlkEF,gBAwgEqB,CAvgErB,gCACE,aAkkEoE,CAjkEpE,iBAqgEmB,CA8DnB,4BA7kEF,gBA+kE8B,CA/kE9B,cAglE+B,CA/kE/B,sCACE,aA6kEiF,CA9kEnF,sCACE,iBA8kEgC,CAKpC,2CACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eAGA,UA/lEA,gBAkmE0B,CAlmE1B,cAmmE2B,CAlmE3B,qDACE,aAgmEiE,CAjmEnE,qDACE,iBAimE4B,CAmB5B,oCAtnEF,kBA+mEqB,CA9mErB,8CACE,kBAqnE+C,CAC7C,uDAxnEJ,UAynE0B,CAxnE1B,iEACE,WAunE8B,CAC1B,2DACE,WApBI,CAqBJ,mBAGJ,qDACE,qBACA,WA1BM,CAhmEZ,eA2nEmD,CA1nEnD,+DACE,gBAynE2D,CAxnE3D,gBAwnEiD,CAKrD,uBACE,YACA,2BACE,WA1BmC,CA2BnC,mBACA,cA3B6B,CA6B/B,wCAvoEA,eA0mE+B,CA+B7B,WA9BsB,CA1mExB,kDACE,gBAsoE8E,CAroE9E,gBAumE6B,CAiC/B,iFACE,qBACA,gBACA,uBAGJ,iCACE,YAEF,SACE,aAEF,UAGE,aACA,eACA,YACA,8CA/8EY,CAg9EZ,cA/De,CAtmEf,mBA6mEkB,CA0DlB,sBAlwEA,gBACE,WACA,cACA,WAyFF,oBACE,mBAoqEwC,CAG1C,+CACE,eAnEU,CAsEZ,4BACE,YAKA,+BA5qEF,kBAmmE0B,CAlmE1B,yCACE,eA2qE6E,CA1qE7E,iBAgmEwB,CA4EtB,gDA/qEJ,iBAgrEqD,CA/qErD,0DACE,eA8qE6D,CA7qE7D,gBA6qEmD,CAMrD,kBACE,eACA,mBACA,cACA,WA1FU,CA2FV,gBA3FU,CAvmEZ,kBA4mEY,CAwFV,qBA5FW,CAxmEb,UAqsEsB,CACpB,sBACA,eACA,kBAvsEF,4BACE,kBAisEmC,CAlsErC,4BACE,WAmsE0B,CAK1B,mCACE,cA3sEJ,UA4sEwB,CACpB,mBACA,eACA,gBACA,uBA/sEJ,6CACE,WA0sE4B,CAK1B,yCACE,aAGJ,mDACE,yBACA,sBACA,wBACA,qBAEF,4CACE,kBArtEJ,OAstEmC,CAC/B,gBAnHoB,CAnmExB,sDACE,UAotEoC,CAntEpC,MAmtEiC,CAGjC,kCACE,kBACA,UA3HQ,CA4HR,WA5HQ,CA6HR,YACA,UACA,uBACA,YACA,gBACA,SACA,kBACA,0CACE,WA9HgB,CA+HhB,UA/HgB,CAgIhB,eAhIgB,CAiIhB,cAjIgB,CAkIhB,kBACA,QACA,SACA,qCAIN,mCACE,cACA,gBAlJU,CAvmEZ,kBA4mEY,CA+IV,SAlJiB,CAmJjB,YA5vEF,UA6vEsB,CA5vEtB,6CACE,kBAwvEmC,CAzvErC,6CACE,WA2vE0B,CAC1B,yCACE,WAEA,0TAME,SACA,WAjKM,CAkKN,gBAlKM,CAmKN,UACA,8VACE,aAIN,2GACE,uBACA,WA3KQ,CA8KR,wEACE,gBAEF,yDACE,kBAGJ,yCACE,SACA,WAvLQ,CAwLR,gBAxLQ,CAyLR,UACA,+CACE,aAGJ,2GACE,WA/LQ,CAiMV,mDACE,gBACA,yDACE,kBAGJ,qDA9yEF,kBA4mEY,CA3mEZ,+DACE,kBA6yEqC,CAErC,yCACE,uBACA,eAIF,iCACE,aAKN,8CACE,iCAEE,sBAEF,yCACE,aAKJ,WAEE,cACA,kBACA,cACA,iCAEA,wBACE,gBACA,kBAEF,wBACE,gBACA,kBAKF,aAlBF,WAmBI,6BAyDJ,YACE,eACA,iBAMF,yBACE,qBACA,gBACA,aAGA,qDAGE,kBACA,iCAEA,wEACE,aAMJ,sDACE,WAKJ,8BAIE,6CAEA,qBACA,aAGA,YAIF,kBAhFE,WAjBsB,CAkBtB,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAKA,8BA33EA,iBA81EyB,CA71EzB,wCACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,6BA/3EA,kBA81EyB,CA71EzB,uCACE,eA83E0E,CA73E1E,iBA21EuB,CAiGzB,4CACE,eAKJ,sCACE,uEAEA,kBACA,qBAEA,UA9G+B,CA+G/B,WA/G+B,CAgH/B,gBAhH+B,CAkH/B,0EACE,eAKJ,yBACE,WA3HsB,CA4HtB,cArHkC,CAsHlC,gBA/9EA,kBAg+EsB,CA/9EtB,mCACE,kBA89EwF,CAE1F,qDACE,eAGF,iCAt+EA,wBAu+E0B,CAt+E1B,2CACE,cAq+EwC,CAG1C,8BACE,sBAKJ,wBAjGE,mBACA,iBACA,yBAkGA,2BAhIA,WAhB0B,CAiB1B,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAwHE,mBAnHF,uCA33EA,iBA81EyB,CA71EzB,iDACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,sCA/3EA,kBA81EyB,CA71EzB,gDACE,eA83E0E,CA73E1E,iBA21EuB,CAqJ3B,aA3GE,mBACA,iBACA,yBA6GA,8BACE,wBACA,0BAMF,yBACE,iCAOF,mDACE,sBACA,uBAcJ,cAEE,mBACA,gBACA,sBAIA,8BACE,gBAKJ,sBACE,qBACA,sBACA,gBACA,sBACA,kBAIA,6BACE,MACA,OACA,SACA,QACA,kBACA,WACA,WAKJ,qBA1oFE,eAEA,sBACA,YACA,gBACA,aACA,uBAsoFA,gBACA,gBACA,gBAroFA,gCACE,aAyoFF,6CAEE,iBAEA,4EACE,YAGF,mEAllFF,UAqlFwB,CACpB,iBACA,WAtlFJ,6EACE,WAmlF4B,CAM9B,yCACE,WAIA,kHAhmFF,UAkmFa,CAlmFb,SAomFuB,CACnB,wBApmFJ,4HACE,UAimF+B,CAlmFjC,4HACE,SAgmFW,CAMX,4FAjmFF,gBAkmFa,CAjmFb,sGACE,gBAimFwD,CAhmFxD,iBA+lFW,CAMf,kCAxmFE,kBA2mF+C,CA3mF/C,kBA4mF6C,CA3mF7C,4CACE,eAymFuF,CAxmFvF,iBAwmF6C,CA1mF/C,4CACE,iBA0mFsF,CAzmFtF,iBAymF2C,CAI/C,+BAEE,kBAEA,wBACA,0BAEA,qBACA,WAEA,+CA1nFA,gBA8gFyB,CA7gFzB,yDACE,gBAynFwE,CAxnFxE,iBA2gFuB,CAgHzB,qDACE,wBAIJ,0CACE,WAIF,6BAKE,kBACA,MACA,WACA,WAp3FsB,CAq3FtB,iBACA,mBACA,uBAEA,mBACA,qBACA,0DAEA,0CACE,mBAKJ,0BACE,WA7IgC,CA8IhC,WA3TkB,CA4TlB,kBACA,gBAEA,uBACA,oBACA,YAIF,wBACE,UAIA,qDAEA,sCACE,UAGF,0CACE,aAOJ,+BAGE,kBACA,QACA,SACA,gCAEA,QACA,SACA,kCACA,mCACA,qBAIF,+BACE,kBA/sFA,OAgtF+B,CAC/B,cAxtFA,yBA2tFwB,CAntFxB,yCACE,UA8sFgC,CA7sFhC,MA6sF6B,CAttF/B,yCACE,0BAytFuC,CAK3C,wDACE,WAxMoC,CAyMpC,UAzMoC,CA0MpC,kBACA,WAzM6B,CA8M7B,uDACE,gCAGF,uDACE,aAKJ,oBACE,gBAEA,sFAEE,gCAGF,mJAGE,aAOJ,sDACE,aAMA,0CACE,4BACA,2DACA,uBAGF,uDACE,wBAMJ,sBACE,gBAGF,qBACE,aACA,uBACA,mBACA,kBACA,MACA,OACA,WACA,YACA,UAjgGe,CAkgGf,gBAGF,UAaE,UACA,gBACA,cACA,eACA,kBACA,cAEA,6GA9iGuB,CAgjGvB,aACA,sBArBA,2BACE,UACA,mDA3/Fa,CA4/Fb,mCAEF,4BACE,UACA,mDAhgGa,CAigGb,wCAeF,eACE,aACA,sBACA,cAGF,6BACE,YAnDa,CAsDf,4BACE,QACA,sBACA,cACA,iCAEA,+EACE,aAGF,kCACE,aAGF,0CACE,SAGF,oDACE,WAGF,uDACE,WACA,sBAIJ,4BACE,aACA,QACA,sBACA,mBACA,yBACA,gBA/2FF,iBArRyB,CAqRzB,iBAi3F6B,CAC3B,gBACA,gBAl3FF,sCACE,kBA82F4C,CA/2F9C,sCACE,gBAvRuB,CA0oGvB,uCACE,iBA3oGqB,CAqRzB,eArRyB,CAqRzB,cAw3F+B,CAC3B,cA9oGqB,CAsRzB,iDACE,aAq3F4C,CAt3F9C,iDACE,gBAvRuB,CAkpGvB,gDACE,qBACA,uBAKN,8CACE,UACE,uBAIJ,yBACE,+BACE,gBACA,eACA,iBAIJ,WACE,cACA,qBACA,uBACA,SAEA,qBAj5FA,gBAk5F+C,CAj5F/C,+BACE,gBAg5FkE,CA/4FlE,iBA+4F6C,CA5rF/C,yBAGI,wEA8rFJ,mBACA,uBACA,0BA7rFA,+CAII,6KAurFJ,mBACA,uBACA,0BAtrFA,gDAKI,qRA+qFJ,mBACA,uBACA,0BA9qFA,iDAMI,uZAsqFJ,mBACA,uBACA,0BArqFA,0BAOI,umBA4pFJ,mBACA,uBACA,0BAGF,kBACE,kBACA,aACA,mBAIA,UA/nGY,CAgPZ,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA84FF,sCAEE,oBAEA,+GAGE,oBAGF,iDAEE,oBAIJ,qCACE,UAppGU,CAwpGV,iDACE,mBAIJ,iCACE,aAGA,YAEA,qDACE,mDAxpGU,CA4pGd,0BACE,sBAEA,yCACE,QAGF,yCACE,sBACA,QAIJ,wBACE,sBAEA,uCACE,QAGF,uCACE,8BACA,QAIJ,0BACE,mBAEA,yCACE,QAGF,yCACE,2BACA,QAEA,6DACE,mDAlsGQ,CAusGd,2BACE,mBAEA,0CACE,QAGF,0CACE,mBACA,QAEA,8DACE,mDAntGQ,CA4tGZ,gHACE,kBAQF,+CACE,UAMF,qEACE,UACA,uBAKF,+CACE,mBACA,mDArvGU,CAwvGV,iCAON,eAME,cAjiGA,mCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,kCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,gCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,+BACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBAiiGF,uCACE,cACA,kBACA,gBAGA,YAGF,8BACE,kBACA,UAjyGU,CAmyGV,qCACE,4BAGF,yDACE,cACA,kBACA,WAEA,UACA,mDAjyGU,CAoyGZ,sCACE,kBACA,WAEA,UAGA,6BAKF,sCAhmGF,OAimGmC,CAhmGnC,gDACE,UA+lGoC,CA9lGpC,MA8lGiC,CAGjC,yCACE,2BAEA,gEAvmGJ,kBAwmGmD,CAvmGnD,0EACE,iBAsmGyD,CArmGzD,iBAqmGiD,CAG/C,gEA3mGJ,mBA4mGmD,CA3mGnD,0EACE,gBA0mG0D,CAzmG1D,oBAymGiD,CAI/C,+DAhnGJ,gBAinGmD,CAhnGnD,yEACE,iBA+mGsD,CA9mGtD,eA8mGiD,CAOjD,uCAxnGF,MAynGmC,CAxnGnC,iDACE,SAunGoC,CAtnGpC,OAsnGiC,CAGjC,0CACE,mBAIJ,0BACE,wCACA,oBACA,WAEA,4CAEE,eACA,eAGF,8CACE,UACA,mBACA,mDA/1GU,CAk2GV,yBAQF,gDACE,gBAEA,wDACE,UAIJ,8CACE,UACA,mBAKN,aACE,sBACA,cACA,kBAEA,6HAIE,sBAGF,0BACE,cACA,kBAEA,iCACE,aACA,mBACA,uBACA,YACA,kBACA,MACA,QACA,SACA,OACA,UACA,SAIF,4FAEE,aACA,mBACA,mBACA,YACA,WACA,2BACA,gBAGA,kBACA,OACA,QAEA,oMAEE,gBACA,kBAGF,kGACE,eAGF,kGACE,eAIJ,8CACE,MAGF,8CACE,SAMN,8CACE,aACE,sBAEF,oBACE,2BAKJ,QACE,YACA,sCACA,qBACA,sBACA,kBACA,WAphHU,CAqhHV,UArhHU,CAwhHV,eAxhHU,CAyhHV,cAzhHU,CA2hHV,YACE,oBACA,cAGF,sBACE,gBAjiHQ,CAkiHR,WAIJ,mBAEE,qBACA,kBACA,WAj8GwB,CAk8GxB,gBACA,sBA33GA,yBACE,WACA,cACA,WA03GF,4BACE,cAKF,qCAxyGA,WAyyGsB,CACpB,eA37GiB,CA87GjB,cA5yGF,+CACE,UAuyG2B,CAO7B,2BACE,kBACA,OA57Gc,CA0IhB,QAmzGqB,CAnzGrB,UAozGsB,CAnzGtB,qCACE,SAizGwB,CAlzG1B,qCACE,SAkzG0B,CAG5B,2iBAgBE,qBACA,wBAEF,+LAKE,gBAEF,4BACE,YACA,gBAEA,qCACE,gBACA,6BAIF,4CACE,YACA,cAIJ,mDACE,kBACA,YAn2GF,MAo2GqB,CAp2GrB,UAq2GsB,CAp2GtB,6DACE,SAk2GsB,CAn2GxB,6DACE,OAm2G0B,CAE1B,qEACE,aACA,eACA,mBAIJ,wGAEE,gBACA,uBACA,mBACA,WACA,QACA,oBACA,mCAt3GF,gBAnKwB,CAmKxB,eAw3G8B,CAC5B,UACA,2CACA,0DAIA,eA/3GF,yBAi4GiC,CAh4GjC,4HACE,cAq3GqD,CAt3GvD,4HACE,iBArKsB,CAoKxB,4HACE,0BA+3GyC,CAGzC,8IAp4GF,gBAs4G+B,CAt4G/B,eAu4GgC,CAt4GhC,kKACE,cAo4G6D,CAr4G/D,kKACE,iBAq4GiC,CAGnC,mCACE,kBACA,MACA,UACA,sCACA,kCAEF,oDACE,UACA,kCAGF,sDACE,gBACA,UAGF,6FACE,kBAEF,q8BAUE,kBAMF,6BACE,QACA,cACA,aAEA,gBACA,eAzkHgB,CA0kHhB,kBAzkHmB,CAoJrB,cAs7G6B,CAt7G7B,iBAnKwB,CA2lHtB,uBACA,gBA/kHgB,CAglHhB,YACA,4BAjlHgB,CAklHhB,gBACA,mBACA,6DAGA,WACA,sBAl8GF,UAu8GsB,CAt8GtB,uCACE,gBArKsB,CAoKxB,uCACE,eAq7GsD,CAt7GxD,uCACE,WAq8G0B,CAE1B,mCACE,aAEF,qCACE,aACA,gBAGF,wCACE,qBAIJ,oCAt9GA,gBAu9G2B,CAv9G3B,iBAnKwB,CAmKxB,cAy9G6B,CAx9G7B,8CACE,eAq9GgC,CAt9GlC,8CACE,eAs9GsD,CAv9GxD,8CACE,gBArKsB,CAkoHxB,gDACE,kBACA,QACA,gBAl+GF,UAm+GsB,CAl+GtB,0DACE,WAi+G0B,CAG5B,mFACE,cAznHoB,CA0nHpB,gBAxnHsB,CAynHtB,gBAEA,mDAprHY,CAurHZ,UACA,aACA,eArwHuB,CAuwHvB,+HAl/GF,iBAo/GgC,CAp/GhC,cAq/G+B,CAp/G/B,mJACE,eAk/GwC,CAn/G1C,mJACE,gBAm/GgC,CAM9B,oFACE,UACA,kBAQJ,gEACE,UACA,kBAIF,8EACE,UACA,kBAOF,8LACE,6CACA,qGAQF,4CACE,gBAKJ,6IAGE,iBACA,uBAIA,+EAIE,uCAGA,wBACA,2BAIJ,iCAEE,2DAEA,uCACE,oBACA,kBAGF,yCACE,OA5sHY,CA0IhB,QAmkHuB,CAnkHvB,UAokHwB,CAnkHxB,mDACE,SAikH0B,CAlkH5B,mDACE,SAkkH4B,CAQ1B,kRAEE,wBACA,UAMN,gCArlHA,iBA5IY,CA4IZ,eAulH8B,CAtlH9B,0CACE,cAolHyC,CArlH3C,0CACE,kBA9IU,CAouHV,sCAxlHF,SA5IY,CA4IZ,UA0lHwB,CAzlHxB,gDACE,SAulHmC,CAxlHrC,gDACE,UA9IU,CA0uHZ,iCA9lHA,cA+lH6B,CA/lH7B,kBA5IY,CA6IZ,2CACE,iBA9IU,CA6IZ,2CACE,eA8lH0C,CAE1C,sDACE,SAnmHJ,SAqmHwB,CArmHxB,SAsmHuB,CArmHvB,gEACE,UAmmH2B,CApmH7B,gEACE,QAomH2B,CAI7B,8CACE,iBAvvHU,CAwvHV,kBAxvHU,CA2vHR,oKAEE,8BAMR,mBAEE,kBAptHA,yBACE,WACA,cACA,WAotHJ,kBACE,kBACA,YACA,OACA,WAtwH2B,CAuwH3B,uBACA,WACA,iBAGF,8CACE,4CACE,WA2CJ,QACE,cACA,wBAEA,sBACE,cAn9HuB,CAo9HvB,gBACA,qBACA,iBA1CsB,CA+CpB,gIAEE,eAxBiB,CAtrHvB,gJACE,WACA,eAorHqB,CAnrHrB,kBACA,qBAgtHI,wKACE,UA5B2B,CA6B3B,WA7B2B,CAgC7B,kNAtsHN,iBAusHqD,CAC7C,cAnEY,CAoEZ,iBApEY,CApoHpB,sOACE,iBAqsHmH,CApsHnH,gBAosHmD,CAI/C,sTA3sHN,iBA4sHqD,CAC7C,eACA,kBA7sHR,8VACE,iBA0sHqH,CAzsHrH,gBAysHmD,CAI/C,sJACE,UACA,UA3C6B,CA4C7B,WA5C6B,CA+C7B,gOACE,cAlFU,CAmFV,iBAnFU,CAqFZ,wPACE,eAv5HS,CAg6HT,8YApuHV,gBAypHwB,CAxpHxB,sbACE,gBAmuHiF,CAluHjF,iBAspHsB,CA+Ed,klCAGE,gBAjEgB,CAkEhB,cAnEc,CAoEd,mBAGF,kXACE,cAzEqB,CAgF3B,6IACE,eArFwB,CAvrHhC,6JACE,WACA,eAqrH8B,CAprH9B,kBACA,qBA2wHM,gVACE,gBAMJ,6IAEE,eAhG0B,CAxrHlC,6JACE,WACA,eAsrHgC,CArrHhC,kBACA,qBAuxHM,wVAEE,gBAKR,6DACE,iBACA,oBAKN,aAEE,kBAEA,oDACE,wCAGF,6BACE,kBAEA,uDAEE,aACA,mBACA,2BAEA,iBACA,SAEA,gBAjzHJ,eAkzH6B,CACzB,mBAlzHJ,iEACE,gBAgzHiC,CAI/B,8EACE,kBACA,MACA,OACA,YAEA,SACA,UAGF,2EAEE,WA90HN,mFACE,WACA,kBA60HqC,CA50HrC,kBACA,qBAk1HF,mDAEE,kBACA,iBAGA,cAEA,uEACE,kBACA,eAp1HJ,eAq1H6B,CACzB,oBACA,WACA,mBACA,uBACA,oBACA,gBACA,SA31HJ,2FACE,gBAm1HiC,CAS/B,iHACE,gBAGJ,+DACE,aAGJ,gCACE,eAGF,wBACE,kBACA,SAr2HF,MAs2HiC,CAC/B,WAt2HF,kCACE,SAo2HkC,CAn2HlC,OAm2H+B,CAE/B,kCAx2HF,SA8pH+B,CA4M3B,wBACA,oBA12HJ,4CACE,SAu2HkE,CAt2HlE,UA2pH6B,CAiN/B,8CAIE,aACA,2BACA,mBAEA,eAxNe,CA2Nf,YA74HF,8DACE,WACA,eAgrHe,CA/qHf,kBACA,qBA44HA,khBAIE,UAtOyB,CAuOzB,gBACA,mBACA,uBAEF,kXAIE,kBACA,kcACE,aAIJ,gIAh5HF,iBAi5HiD,CAh5HjD,oJACE,iBA+4HyG,CA94HzG,gBA84H+C,CAG/C,kJACE,cAjrIqB,CAkrIrB,iBAlrIqB,CA4RzB,iBAu5HiD,CAC7C,kBACA,uBAx5HJ,0LACE,iBAq5H2G,CAp5H3G,gBAo5H+C,CAI/C,oEACE,UACA,UAnQ2B,CAoQ3B,WApQ2B,CAsQ7B,8EACE,YAIA,sFACE,UAzrII,CA0rIJ,WA1rII,CA8rIR,sEACE,WACA,eAzmIe,CAqLnB,eAq7H8B,CAr7H9B,iBAs7H+B,CAr7H/B,0FACE,gBAm7HiC,CAp7HnC,0FACE,gBAo7HmC,CAGnC,8FACE,aACA,mBAGA,kBAMA,cAKA,YAz8HJ,cA28H+B,CA38H/B,gBA48H8B,CA38H9B,kHACE,iBAy8HgC,CA18HlC,kHACE,aA08HkC,CAG9B,sSAx8HN,cA08HqD,CAz8HrD,8UACE,iBAw8HsD,CAv8HtD,aAu8HmD,CAIjD,sHACE,aACA,cACA,eA7oIa,CA+oIb,4IACE,UA/oIU,CA2LlB,cAq9HqD,CAp9HrD,gKACE,iBAm9HsD,CAl9HtD,aAk9HmD,CAIjD,kHACE,aACA,gBA39HN,iBA69HmD,CA59HnD,sIACE,iBA29HuD,CA19HvD,gBA09HiD,CAIjD,4IACE,cACA,SAMF,sHACE,uBACA,uBAEA,0KACE,cA1wImB,CA2wInB,iBA3wImB,CA8wIrB,kMACE,cACA,YACA,uBACA,gBAEA,0OAx/HN,gBAypHwB,CAxpHxB,kRACE,gBAu/H6E,CAt/H7E,iBAspHsB,CAmWlB,8MACE,cAjyIiB,CAkyIjB,gBACA,qBACA,cAzXO,CA0XP,iBAvXgB,CAwXhB,gBACA,mBACA,uBAEF,8MACE,cAzyIiB,CA0yIjB,qBACA,kBAjYO,CAkYP,eAjYY,CAkYZ,iBAjYgB,CAkYhB,gBACA,mBACA,uBAEF,0MACE,cAnzIiB,CAozIjB,gBACA,qBACA,cAzYM,CA0YN,iBAzYW,CAgZjB,2DACE,YAEA,eA/XsB,CAnrH1B,2EACE,WACA,eAirHwB,CAhrHxB,kBACA,qBAijIE,4KACE,gBAGF,mGACE,sBAGF,iGACE,cAMJ,2DACE,YAEA,eAnZwB,CAprH5B,2EACE,WACA,eAkrH0B,CAjrH1B,kBACA,qBAskIE,oLAEE,gBAaR,wBACE,eACA,OACA,MACA,WA/yIa,CAgzIb,UACA,iBAbmB,CAcnB,8BACA,cAEA,wCACE,eACA,kBACA,WACA,eACA,eACA,WAGF,0CACE,UAIF,2CACE,oBAIF,kCACE,UACA,mDAzzIa,CA0zIb,0BACA,oDACE,UACA,mDAzzIU,CA0zIV,0BACA,uBAIJ,iCACE,UACA,mDAj0IY,CAk0IZ,0BAIJ,gBACE,aACA,sBACA,cACA,gBAvDgB,CAwDhB,gBACA,yBACE,gBAzDoB,CA0DpB,sCACE,WA7DmB,CA8DnB,eA9DmB,CAmEzB,aACE,aACA,mBACA,eAvEiB,CAwEjB,WAxEiB,CAyEjB,qBACA,2BAEA,eACE,WACA,cACA,kBACA,mBAQF,yBACE,gBAGF,wBApqIA,eA2qI2B,CAEzB,qBACA,gBACA,cACA,eACA,oBACA,gBACA,YACA,kBACA,mBACA,WAhBA,0CACE,UACA,SAvqIJ,kCACE,gBAyqI+B,CAY/B,gCAvrIF,uBAwrIyB,CAvrIzB,0CACE,uBAsrIsD,CAEtD,0BACE,qBACA,YAEF,6BACE,gBACA,mBAEF,6CACE,sBAMJ,oBACE,YACA,YACA,UAIJ,yBACE,gBACE,gBAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAKN,yBACE,gBACE,eAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAQF,+CACE,iBACA,YACA,aACA,oBAMJ,4BACE,kBACA,WAn9IW,CAu9If,YACE,eACA,cACA,kBACA,UACA,qBACE,qBACA,UACA,kBAEF,mBACE,eACA,eACA,SACA,SACA,6BACA,YAGF,yCACE,WAIJ,0CACE,gBACA,eACA,iEACE,kBACA,yEACE,kBACA,UACA,WACA,QAnxIJ,SAoxImC,CAnxInC,mFACE,SAkxIqD,CAjxIrD,UAixIiC,CAEjC,iKA7xIF,qBA8xI0B,CA7xI1B,qLACE,qBA4xImE,CAGrE,qDACE,aACA,YACA,0DApyIF,UAqyIwB,CApyIxB,oEACE,WAmyI4B,CAE5B,sEAvyIF,WAwyIwB,CACpB,aAxyIJ,gFACE,UAsyI6B,CAI/B,0DACE,aAGF,gIAhzIA,eAizI2B,CAhzI3B,oJACE,gBA+yI+B,CAGjC,mDACE,UACA,8DACE,kBACA,SACA,WACA,oBACA,mBACA,kBArzIJ,iBAszImD,CArzInD,wEACE,cAozIqE,CAnzIrE,kBAmzIiD,CAC/C,oEACE,cACA,YACA,kBACA,QACA,WAn0IN,iDAo0I8B,CA7zI9B,UA8zIqC,CAp0IrC,8EACE,gDAk0IqE,CA5zIvE,8EACE,UA4zIyD,CA3zIzD,SA2zImC,CASvC,YACE,mBACA,qBACA,WALkB,CAMlB,kBAGF,kBACE,aACA,gBACA,SACA,UAGA,sBACA,aACA,mBAGF,2BACE,gBAIF,0BACE,iBACA,aACA,kBACA,gEAEA,gCACE,aAIJ,eAGE,sBACA,kBACA,SACA,OACA,WACA,WACA,0BACA,sBACA,0DAKA,0BACE,gBAKJ,qBACE,gBACA,mBAKF,gCACI,0BACA,+BAIJ,qBACI,kBACA,cAt5IF,qBAw5I0B,CAv5I1B,+BACE,sBAs5IqC,CAErC,oDACI,kBAGJ,+CACI,yDAGJ,yBACI,kBACA,iBACA,MACA,OAMR,mBACE,cACA,kBACA,WACA,UAN2B,CAQ3B,yBACA,2BAn7IA,qBAq7IwB,CAp7IxB,6BACE,sBAm7ImC,CAErC,gDACE,kBAGF,iCACE,cACA,kBACA,gBAEA,WACA,UAvByB,CAyBzB,sCAEA,yCACE,kBAEA,OACA,MACA,SAEA,WACA,UAnCuB,CAsCzB,mDACE,WACA,aACA,kBAEA,aACA,UA5CuB,CA6CvB,WAEA,6BACA,qCACA,8BAGF,oFAKE,gCAQE,wDACE,aAEF,wDACE,0BACA,iEAKJ,8DACE,aAKF,gEACE,8GAGF,gEACE,8GAKJ,wGAEE,eAEA,iHACE,oBAEF,iHACE,oBAON,gDACE,wCAEA,0BAEA,kEACE,cACA,oCAKN,iBACE,GACE,UACA,wCAEF,KACE,UACA,wCAGJ,kBACE,GACE,UACA,8BAEF,IACE,UAEF,KACE,UACA,kCAGJ,oDACE,GACE,sBACA,iCAEF,MACE,sBACA,iFAEF,OACE,uBACA,+EAEF,KACE,uBAGJ,8CACE,GACE,sBACA,iCAEF,IACE,sBACA,sEAEF,OACE,WACA,gFAEF,KACE,qBAGJ,oDACE,GACE,sBACA,0FAEF,OACE,uBACA,0FAEF,OACE,uBACA,0FAEF,KACE,uBAGJ,8CACE,GACE,qBACA,wEAEF,IACE,aACA,iFAEF,OACE,WACA,2EAEF,KACE,sBAoBJ,gBACE,sBACA,cACA,kBAba,CAcb,mBACA,eACA,kBAGA,0BAhBA,eAEA,wCACE,eAiBF,8BACE,kBACA,QACA,2BACA,sBACA,qBACA,UAjCU,CAkCV,WAlCU,CAmCV,eAjqJF,MAkqJqB,CAlqJrB,UAmqJsB,CAlqJtB,wCACE,SAgqJsB,CAjqJxB,wCACE,OAiqJ0B,CAE1B,mDACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAGF,qCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAIJ,mDACG,QAjEY,CAoEf,wBACE,sBACA,kBACA,MACA,OACA,UA5EU,CA6EV,WA7EU,CA8EV,mBACA,iBACA,kBACA,kCAGF,uBACE,sBACA,kBACA,MACA,OACA,UAzFU,CA0FV,WA1FU,CA2FV,kBACA,+BACA,mBAGF,kCACE,qBAGF,0BACE,sBACA,kBACA,qBAruJF,gBAuuJ4B,CAvuJ5B,cAwuJ6B,CAE3B,sBACA,mBACA,oBACA,WA5uJF,oCACE,aAquJ6D,CAtuJ/D,oCACE,iBAsuJ8B,CAUhC,qBACE,aAIA,wEACE,UACA,SACA,WACA,YAIF,oFACE,UACA,SACA,WACA,YAIJ,yCAlIA,eAEA,uDACE,eA36IF,yBAGI,kFA6iJJ,iBA1iJA,+CAII,4LAsiJJ,iBAniJA,gDAKI,ySA8hJJ,iBA3hJA,iDAMI,gbAqhJJ,iBAlhJA,0BAOI,qoBA2gJJ,iBAIA,+BACE,mBACA,+CACE,qBACA,YACA,yBACA,sBACA,aACA,gBAEA,yDACE,QAEF,6DACE,eAMR,8CACE,wCACE,uBA0BA,8EACE,0DAl0JJ,yBAm0JmC,CAl0JnC,wFACE,0BAi0J2C,CAKzC,4HACE,6CAMR,0BACE,eACA,OACA,MACA,UA/iKe,CAgjKf,UACA,aAGA,2BAGA,6CACE,oBAGF,+CACE,cACA,4BAIF,oCACE,cACA,UACA,mDACE,mDAtjKW,CAujKX,0BACA,qDACE,UACA,mDAtjKQ,CAujKR,0BACA,uBAMN,mCACE,UACA,mDAhkKY,CAikKZ,0BAIJ,0BACE,eAnEoB,CAuEpB,0EAEE,cA3Ec,CA6EhB,6BACE,QAUA,4PACE,aACA,eACA,mBAOF,+DACE,0BACA,mBAKN,UACE,aAII,4MACE,aACA,eACA,mBAKN,qCAIE,uCAGA,wBACA,2BAIA,mBACA,gBACA,0BAGF,gBACE,aAEF,0BACE,eAGA,gCACE,eAGA,iDACE,0BACA,wBACA,mBASF,oEACE,uBA9mKqB,CAmnKzB,wDAIE,uCAGJ,8CACE,gBACA,uBA7nKyB,CA8nKzB,mBACA,oEAv+JF,cAw+J+B,CAx+J/B,iBAnKwB,CAoKxB,8EACE,gBArKsB,CAoKxB,8EACE,eAu+JwD,CAK5D,iBACE,aACA,mBACA,eA9LyB,CA+LzB,kBA9L4B,CApzJ5B,cAm/J2B,CAn/J3B,iBAnKwB,CAwpKxB,uBAxM4B,CAyM5B,0BACA,+BACA,kBACA,uBACA,eACA,gBACA,mBACA,0BACA,YA7/JA,2BACE,gBArKsB,CAoKxB,2BACE,eAk/JoD,CAYtD,2CACE,eACA,cACA,uBACA,mBACA,gBAEA,oDACE,eAIJ,iCACE,cA7gKF,oBA8gK4B,CA9gK5B,gBA+gK2B,CACzB,WACA,2BACA,iBAjhKF,2CACE,sBA4gKoC,CA7gKtC,2CACE,eA6gKgC,CAMlC,uCACE,cACA,YACA,kBACA,QAzhKF,UA0hKsB,CA1hKtB,SA2hKqB,CACnB,WACA,eACA,sBA7hKF,iDACE,UAwhK0B,CAzhK5B,iDACE,SAyhKyB,CAM3B,uCACE,aACA,QACA,oBACA,mCACA,UAIJ,eACE,aACA,sBAYA,0GApzKsB,CAqzKtB,iBACA,eA3QqB,CA4QrB,kBA3jKA,yBA6jK+B,CAE/B,mBAlBA,0BACE,8BAIA,4CACE,eAx0KqB,CAy0KrB,kBAz0KqB,CAsRzB,yBACE,0BA2jKuC,CAIzC,0BACE,gBACA,eApRmB,CAqRnB,iBACA,gBAEF,iBACE,UAIJ,UACE,eACA,kBACA,aACA,mBACA,WACA,kCAiBA,sBACA,WArTqB,CAqSrB,oBACE,eAGF,gBACE,aAGF,mBAxtKA,0BAD2B,CAE3B,wBAF2B,CAG3B,uBAH2B,CAI3B,qBAJ2B,CAK3B,oBAL2B,CAM3B,gBAN2B,CA2tKzB,WACA,mBACA,gBACA,uBAMJ,YACE,cACA,kBACE,cACA,eACA,yBACA,aACA,gBAEF,sBACE,kBACA,mBAIJ,8CACE,oBACE,6BAEF,eACE,uBAKF,uDAhoKA,iBAioK6B,CAjoK7B,kBAgzJsB,CA/yJtB,iEACE,iBA8yJoB,CA/yJtB,iEACE,kBAgoKoD,CA9kKtD,qEACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,+EACE,SA4DsB,CA7DxB,+EACE,OA6D0B,CAE1B,4EACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,2EACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,0FACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,gEACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,0EACE,yBAEA,gFACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,iEACE,eAIA,uFACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA0+JF,qEAtoKF,2BAuoK8B,CAvoK9B,iBAwoK+B,CAvoK/B,+EACE,gBAqoK8D,CAtoKhE,+EACE,4BAsoKmC,CASvC,WACE,sBACA,kBACA,sBACA,UA52KgB,CA82KhB,WAVqB,CAWrB,eAXqB,CAYrB,SACA,cACA,iCAEA,cACE,gBASF,qBACE,aAIF,qDAEE,aACA,2BAIF,kGAEE,mDAl4Ka,CAs4Kf,+DAEE,gBACA,aACA,+BAIF,uKAIE,gBACA,aACA,+BAIF,2CACE,gBACA,aACA,+BAIF,wCACE,gBACA,aACA,gCAIF,wEACE,qGAEA,mBACA,uBAIF,+CACE,qGAKF,wCACE,qGAEA,mBACA,uBAKJ,oCACE,aAGF,4BACE,OACA,MACA,gCACA,gDACE,mCAIJ,kBACE,UACA,MACA,8BACA,4BACE,2BAIJ,yBACE,WACE,eA1HoB,EA8HxB,yBACE,WACE,wBACA,4BACA,6BAKJ,8CACE,4BACE,4BAEF,kBACE,4BA8BJ,4BACE,GACE,qBAEF,IACE,mBAEF,KACE,sBAIJ,oCACE,GACE,qBAEF,IACE,qBAEF,KACE,oBAIJ,mCACE,GACE,qBACA,UAEF,IACE,mBACA,UAEF,KACE,oBAaJ,UACE,WAzEa,CA0Eb,eAzEiB,CA0EjB,kBACA,gBACA,iBACA,UACA,cACA,mBAEA,8BACE,sBAGF,6BACE,aACA,WACA,YAGF,6BACE,kBAMF,8BACE,WACA,kBACA,SACA,UApGmB,CAsGrB,oBACE,kBACA,OACA,QACA,YAEF,yBACE,oDACA,iCAEF,0BACE,kBACA,OACA,QACA,YAEF,iCAIE,WACA,YAMF,8BACE,kBA75KF,MA85KiC,CAC/B,QACA,qCACA,oDACA,sCAj6KF,wCACE,SA45KkC,CA35KlC,OA25K+B,CAMjC,oBACE,UA7EF,kBAx1KA,UAy1K+B,CAC/B,SACA,UA/DoB,CAgEpB,WAhEoB,CAiEpB,mBA0FE,qBACA,oDAv7KF,8BACE,SAu1K4C,CAt1K5C,WAs1K6B,CAmF7B,0BACE,WACA,kBACA,UAnJgB,CAoJhB,WApJgB,CAqJhB,mBACA,iBACA,mBACA,mBAQJ,mBAGE,aACA,mBACA,uBAEA,kBACA,WACA,SAtJc,CAuJd,UAxJgB,CAyJhB,WA1JiB,CA2JjB,mBAEA,+CACA,kDAGA,yBACE,kBACA,WAh9KJ,QAi9KmC,CAC/B,kBAxKgB,CAyKhB,SACA,mCACA,oCACA,qBA5KgB,CA6KhB,uBAEA,UACA,kCACA,kDA19KJ,mCACE,SA+8KsF,CA98KtF,SA88KiC,CAajC,kCACE,UACA,eACA,iBAOJ,yBAhJA,kBAx1KA,UAy1K+B,CAC/B,QACA,UArD0B,CAsD1B,WAtD0B,CAuD1B,mBA6IE,qBACA,UAEA,mDA5+KF,mCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAsJ/B,6BAvJA,kBAx1KA,UAy1K+B,CAC/B,SACA,UAsJI,CArJJ,WAsJI,CArJJ,mBAuJE,qBACA,gBAlN2B,CAmN3B,mBACA,aAt/KF,uCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAkK7B,0BACE,UAIJ,gBACE,aAKA,+EAEE,gBAMF,mFAEE,aAKE,gFACE,qBAIA,0FACE,mBACA,UAEF,qFACE,8DAOF,oFACE,mBAWF,oFACE,mBACA,qEAEF,+EACE,sEAMJ,0IACE,mBAEF,4RAEE,UACA,wCAMJ,qDACE,mBAEF,8GAEE,UACA,wCAMJ,mCACE,aAEF,oCACE,UAEF,6CACE,UAEF,8BACE,qBAEF,uCACE,cAIJ,uBACE,sBACA,gBA/Ue,CAgVf,YAEA,0CACE,OACA,iBACA,oBACA,UAvVS,CAwVT,kBACA,aACA,uBAGF,2CACE,YACA,SA5ViB,CA6VjB,MACA,2BAGF,2CACE,SACA,mBACA,qBACA,SAEA,2DACE,SAGF,0DACE,WAIJ,sCACE,SAIA,6CAGE,WACA,SAHW,CAKX,+CAGA,mDACE,SATS,CAUT,UACA,kCACA,eACA,qCACA,sBArXY,CAsXZ,wBAEA,UACA,kCACA,+BAGF,4DACE,UACA,eACA,iBAOF,mMACE,MAMJ,qDACE,mBAEF,8GAEE,UACA,wCAKJ,uDA1sLF,SA2sLuB,CA3sLvB,OA4sLwB,CA3sLxB,iEACE,MAysL2B,CA1sL7B,iEACE,UA0sLyB,CAGvB,iDACE,YACA,MAMR,oBACE,aACA,mBACA,mBAQE,iGACE,cAPU,CAQV,eACA,WATU,CAUV,mDAn7LW,CAo7LX,oCAIJ,iDApuLA,iBAutLe,CAttLf,2DACE,iBAmuL4D,CAluL5D,gBAotLa,CAiBf,gDAxuLA,gBAutLe,CAttLf,0DACE,gBAuuL4D,CAtuL5D,iBAotLa,CAqBf,iCACE,sBAEA,2HAEE,eACA,cACA,kBAKF,0DACE,kBAzvLJ,iBA0vLmD,CAC/C,YACA,iBA3vLJ,oEACE,cAwvLuD,CAvvLvD,kBAuvLiD,CAOrD,8CACE,qCACE,8BAKJ,iBACE,UACA,MACA,OACA,QACA,6BAEA,2CAEA,sCACE,+BACA,oFACE,mDAYN,kCACE,GACE,+BAEF,KACE,wCAPsB,EAU1B,mCACE,GACE,wCAZsB,CAcxB,KACE,gCAMF,gDAKE,+BAJA,8DACE,SAKF,gEACE,UAGF,qEACE,gBAGF,0HACE,oDAMN,cACE,cACA,cAjDoB,CAkDpB,eAhDsB,CAiDtB,eApDsB,CAqDtB,cAjDiB,CAkDjB,kBAEA,kCACE,cACA,YAxDgB,CA2DlB,oCACE,cACA,UACA,kBAIJ,iCACI,mBAGJ,8BACI,mBAUF,0BACE,eAthM8B,CAuhM9B,mBAIJ,UACE,cACA,mBACA,eACA,aACA,iBACA,YACA,iBACA,mBACA,aAl4LA,mBAo4L0B,CAp4L1B,iBAg3Lc,CA/2Ld,oBACE,gBA82LY,CA/2Ld,oBACE,oBAm4LyC,CAE3C,uBAv4LA,mBAw4L4B,CAx4L5B,cAy4L6B,CAx4L7B,iCACE,aAs4LmC,CAv4LrC,iCACE,oBAu4L8B,CAGhC,oBACE,eAEA,kCACE,eAIJ,wBACE,YACA,UA1CW,CA2CX,WA1CY,CA2CZ,kBACA,iBAl5LF,gBAm5L+C,CAC7C,WAn5LF,kCACE,gBAi5LkD,CAh5LlD,eAg5L6C,CAI/C,oCA95LA,oBA+5L6B,CA/5L7B,eAg6L4B,CA/5L5B,8CACE,gBA65LoC,CA95LtC,8CACE,mBA85L+B,CAK/B,2FAEE,gBAKF,sCACE,UACA,SACA,WACA,YAIJ,oBACE,yBACA,eACA,WAGF,kBACE,SACA,WACA,QACA,WAhFgB,CAiFhB,kBACA,kBAGF,8BACE,QACA,OACA,WACA,kBACA,+BACA,UAEF,yCACE,kCAGF,oBACE,kBACA,SACA,OACA,MACA,aACA,WAtGgB,CAuGhB,UAvGgB,CAwGhB,kBACA,0GAptMoB,CAstMpB,2BACE,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,yCACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKF,0HAGE,0BA1rMS,CA2rMT,+CAEF,0EAEE,sBAMN,8CACE,mCACE,sBAEF,8CACE,yBAEF,qCACE,uBAQJ,+BACE,aACA,cACA,gBAGF,YACE,kBACA,MACA,OACA,QACA,SACA,WACA,UAGF,QACE,cACA,SACA,kBACA,gBACA,kBACA,cACA,wDACE,iBAEF,8BACE,mBA7BiB,CA+BjB,8CACE,kBACA,SACA,OACA,QACA,WApCe,CAqCf,UAEF,sDACE,MACA,WAzCe,CA6CjB,kDACE,aACA,kBACA,SACA,UACA,WACA,YACA,iBAGA,mDACE,kBAKJ,0CACE,qBACA,mBAGA,0EACE,SAMR,gBACE,cACA,kBAEA,0BACA,8DACE,YACA,UAlFmB,CAmFnB,kBACA,QACA,2BACA,gBACA,UACA,eACA,eACA,+CACA,iDAhzMgB,CAizMhB,0EACE,aAEF,sFACE,YACA,eAEF,gFACE,gBAEF,8EACE,kBACA,QACA,SACA,gCAIF,kFACE,2CAGJ,+BA3nMA,MA4nMiC,CAC/B,yDA5nMF,yCACE,SA0nMkC,CAznMlC,OAynM+B,CAGjC,+BA/nMA,OAgoMiC,CAC/B,yDAhoMF,yCACE,UA8nMkC,CA7nMlC,MA6nM+B,CAI/B,uCACE,+CAIF,sDACE,WACA,mBACA,kEACE,YAMR,eAEE,kBACA,gBACA,cACA,WA7ImB,CA7mMnB,qBACE,WACA,cACA,WAwvMF,iCACE,kBACA,MA3pMF,MA4pMiC,CA3pMjC,2CACE,SA0pMkC,CAzpMlC,OAypM+B,CAEjC,4BACE,cAEF,8BACE,aACA,sBACA,kBACA,sCACE,WACA,qBAKN,sBAEE,WAnKmB,CAoKnB,aACA,wDACA,kBAjrMA,MAkrM+B,CAC/B,0BArxMA,4BACE,WACA,cACA,WAgGF,gCACE,SAgrMgC,CA/qMhC,OA+qM6B,CAE/B,qCACE,kBACA,uBAEF,kCACE,eAEF,yBACE,kCACE,iBAKN,wBACE,cACA,kBACA,QA1LmB,CA2LnB,OACA,QACA,SACA,gBAGF,eACE,aACA,kBACA,MACA,OACA,QACA,SACA,wDACA,cAEA,0BACA,4BACE,YACA,gBAEF,wDACE,gBAEF,uCAruMA,2BAsuM0B,CACxB,iCACA,kBAvuMF,iDACE,0BAouM2C,CAG3C,yCACE,gCACA,oBAl7MuB,CAm7MvB,kBAGJ,wCA/uMA,0BAgvM0B,CACxB,iCACA,kBAjvMF,kDACE,2BA8uM0C,CAG1C,0CACE,gCACA,oBA57MuB,CA67MvB,kBAGJ,mBACE,cACA,YACA,4BACE,iCAKN,WAGE,kBACA,UACA,WACA,SACA,WACA,mBACE,+FAGF,oBACE,+FAKJ,OACE,kBACA,WACA,aAGF,QACE,eACA,kBACA,iBACA,aACA,gEACA,eACA,mBACA,kBACA,yBAnyMA,UAoyMoB,CACpB,gBACA,sBACA,gBACA,uBAvyMA,kBACE,WAkyMwB,CAK1B,iCACE,gBACA,aAEF,kBACE,eAEF,oBACE,oBACA,mBACA,iBACA,uBACA,WACA,eAEF,iBACE,gBAIJ,wDACE,yBACA,0BAUF,eACE,cAGF,SACE,kBACA,WA/iNc,CAijNd,sBACA,eACA,gBAGA,WA5lNa,CA+lNb,UACA,mDAviNe,CAyiNf,2BACE,aACA,mBACA,mBAEA,iBACA,eAEA,gBAKA,eAEA,uCACA,kBACA,eAEA,gBAGA,6CACA,mDAhkNa,CA6Mf,0BAq3MgC,CAj4MhC,mCACE,WACA,eAi3MiC,CAh3MjC,kBACA,qBASF,qCACE,wBAm3M0C,CAE1C,gCAEE,YACA,sBACA,YAIJ,oBACE,mBAEA,sCACE,mBAKF,2CACE,mDAllNU,CA2lNZ,+JACE,mDAhmNW,CAomNf,kBACE,UACA,oCACE,kCAGA,2CACE,mCAGJ,kCACE,UACA,oDACE,+BASJ,oDACE,UACA,kCAIA,+DACE,kCAIF,iEACE,iCAIF,2DACE,mCAKN,oBACE,iBACA,iBACA,eACA,eACA,yBACA,YAGF,oBACE,YA78MF,cA88M6B,CA98M7B,eAq0M4B,CAp0M5B,8BACE,gBAm0M0B,CAp0M5B,8BACE,aA68MwD,CAI5D,yBACE,SACE,OACA,QACA,WACA,eACA,YACA,gBACA,SACA,UAII,+DACE,kCAIF,iEACE,kCAOV,yBACE,SACE,gBACA,mBACE,SAEF,iBACE,OAEF,kBACE,QAEF,gBACE,MAIF,mBAv/MF,MAw/MmC,CAv/MnC,6BACE,SAs/MoC,CAr/MpC,OAq/MiC,CAGjC,iBA3/MF,OA4/MmC,CA3/MnC,2BACE,UA0/MoC,CAz/MpC,MAy/MiC,CAS7B,iEACE,kCAIF,kEACE,kCAOV,0BAEI,2BACE,iBAKN,8CACE,SACE,uBAMJ,oBACE,2BAiBF,WACE,sBACA,aACA,sBAEA,kBACA,UAEA,eACA,eAtBkB,CAuBlB,WAEA,mCACE,uBA/wNyB,CAgxNzB,yDA/wNgC,CAgxNhC,gDAGF,mEACE,iCAGF,6BACE,WAGF,oDAGE,sBAMF,sBACE,gBAGF,mBACE,YAnDqB,CAoDrB,gBApDqB,CAqDrB,gBArDqB,CAwDvB,0BACE,WA1D4B,CA2D5B,eA3D4B,CA4D5B,eA5D4B,CA8D5B,4CACE,YACA,gBACA,gBAIJ,sBA7mNA,gBA+iNyB,CA9iNzB,gCACE,gBA4mNwE,CA3mNxE,iBA4iNuB,CAmEvB,8BACE,UAGE,iEACE,aAOV,kBACE,cAp6NyB,CAq6NzB,sBACA,sBACA,gBACA,aACA,mBACA,mBAEA,WACA,WAjGkB,CAkGlB,eAlGkB,CAmGlB,eACA,SAEA,+DACE,kBACA,oBACA,eAGF,oBACE,cACA,qBAEF,+BACE,aACA,mBAEF,8BACE,eAEF,6BACE,aACA,gBAEA,iFACE,uBAj3NuB,CAk3NvB,yDAj3N8B,CAk3N9B,gDAKA,uGACE,gBAIN,yCA/qNA,gBAkjN0B,CAjjN1B,mDACE,gBA8qNyE,CA7qNzE,iBA+iNwB,CAgI1B,wCAlrNA,iBAkjN0B,CAjjN1B,kDACE,iBAirNyE,CAhrNzE,gBA+iNwB,CAoI1B,qCAtrNA,iBAkjN0B,CAjjN1B,+CACE,iBAqrNyE,CAprNzE,gBA+iNwB,CAsIxB,gDAxrNF,cAyrNiD,CAxrNjD,0DACE,iBAurNkD,CAtrNlD,aAsrN+C,CAIjD,8CA/DF,kBAgEI,8BAKJ,sEACE,WACE,eAzJgC,CA4JlC,kBACE,WA7JgC,CA8JhC,eA9JgC,EAmKpC,uEACE,WACE,eApKiC,CAuKnC,kBACE,WAxKiC,CAyKjC,eAzKiC,EAwLrC,YACE,qBACA,oBACA,kBACA,gBACA,UACA,gBACA,cAhBoB,CAiBpB,mBACA,uBACA,WAjBkB,CAkBlB,gBAlBkB,CAmBlB,kBAfsB,CAgBtB,iBAhBsB,CAiBtB,0BACE,+BACA,iBAEF,4BACE,6BACA,gBAzBoB,CA2BtB,6BACE,4BACA,eA7BoB,CA+BtB,2BACE,8BACA,kBAGF,yBA/BF,YAgCI,cA1CkB,CA2ClB,WAzCgB,CA0ChB,gBA1CgB,CA2ChB,iBAvCoB,CAwCpB,gBAxCoB,CAyCpB,2CACA,4CA5CoB,CA6CpB,4CA7CoB,CA8CpB,8CAGF,wBACE,mBAEF,oBACE,mDAx+Na,CAy+Nb,0BACA,mBACA,WAEF,oBACE,mDA1+NY,CA2+NZ,0BACA,mBACA,UAIJ,aACE,gBACA,mBAGA,uBAGA,qBACE,mBAIF,kBACE,QAKJ,6BACE,sBACA,cACA,SACA,gBACA,UACA,kBAEA,yDACE,SACA,sBACA,OACA,SACA,kBACA,UACA,kBACA,QACA,MACA,iCAGF,sDACE,sBACA,WACA,cACA,SACA,UACA,UAGF,0DACE,sBACA,OACA,SACA,UACA,kBACA,QACA,MAKF,8EACE,gBACA,kBAGF,+EAGE,WApD6B,CAlzN/B,UAu2NiC,CAC/B,mBAv2NF,yFACE,UAq2NqC,CAp2NrC,SAo2N+B,CAKnC,qCACE,0GAhnOsB,CAknOxB,mBACE,0GAlnOsB,CAonOxB,mBACE,0GApnOsB,CAsnOxB,qCACE,2GAtnOsB,CAwnOxB,mBACE,2GAxnOsB,CA0nOxB,mBACE,4GA1nOsB,CA4nOxB,qCACE,4GA5nOsB,CA8nOxB,mBACE,4GA9nOsB,CAgoOxB,mBACE,4GAhoOsB,CAkoOxB,sCACE,6GAloOuB,CAooOzB,oBACE,6GApoOuB,CAsoOzB,oBACE,6GAtoOuB,CAwoOzB,sCACE,6GAxoOuB,CA0oOzB,oBACE,6GA1oOuB,CA4oOzB,oBACE,6GA5oOuB,CA8oOzB,oBACE,8GA9oOuB,CAgpOzB,oBACE,8GAhpOuB,CAkpOzB,oBACE,8GAlpOuB,CAopOzB,oBACE,8GAppOuB,CAspOzB,oBACE,+GAtpOuB,CAwpOzB,oBACE,+GAxpOuB,CA0pOzB,oBACE,+GA1pOuB,CA4pOzB,oBACE,+GA5pOuB,CA8pOzB,oBACE,+GA9pOuB,CAiqOzB,8CACE,cACE,uBAIJ,aACE,8BACE,uBAOJ,0EACE,wBAaF,4BACE,aACE,SACA,WACA,gBACA,aA/4MA,YACC,QAeD,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SAmBF,gFA5mBF,aA8mByD,CA7mBzD,wHACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,gFA5mBF,cA6mB+D,CA5mB/D,wHACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,oFACE,2BAeF,oFA7oBF,0BA8oBiD,CA7oBjD,4HACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,0CAGE,2BACA,sBACA,oBAIF,6HAME,2BAIF,kIAME,uBAIF,mHAME,yBAIF,gKAME,6BAIF,qKAME,8BAUF,gJAME,uBACA,yBAIF,qJAME,mBACA,qBACA,eAIF,+JAME,eACA,sBAIF,sIAME,qBACA,uBAIF,0JAME,oBACA,sBA9NF,mCAEA,+CACA,kDACA,+CACA,+CACA,mDACA,iDAME,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAGe,YAGjB,uBACE,cACA,eACA,cACA,sBArBF,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAMF,uBACE,cACA,eACA,cACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,UACE,cACA,eACA,gBACA,sBAGF,sBACE,cACA,eACA,gBACA,sBAMF,yBACE,cACA,eACA,gBACA,sBA2BF,8EACA,8EAIA,4FACA,4FAIA,+FACA,+FAIA,0FACA,0FAGA,8BAIA,6FACA,6FAGA,kCA9GF,mCACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,qCACA,+BAkPA,8CAGE,YAGF,mMAaE,YAIF,+KASE,aAKF,4CAGE,WAGF,0LAaE,WAIF,gJAQE,YAGF,aACE,eAGF,eACI,iBAGJ,aACE,SACA,WACA,gBACA,YAwgMJ,yBAGI,iEACE,aAz5MF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAu1MF,yBA/5MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCA61MF,+CAEI,sGACE,aAGJ,mDACE,aA56MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA02MF,yBAl7MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAg3MF,gDAGI,+MACE,aAGJ,oEACE,aAh8MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA63MF,0BAr8MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAk4MF,iDAGI,0VACE,aAGJ,qFACE,aAl9MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAg5MF,0BAx9MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,qCAxEE,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,kCAs5ME,ugBACE,aAGJ,sGACE,cAMJ,aAEE,wCACE,yBN13OJ,MACE,2BACA,4BACA,mCACA,8BACA,kCACA,6BACA,4BAIA,uCAEE,iBAUJ,eACE,kBAIF,oBACE,QACA,uBAGF,0BACE,uBACA,kBAGF,mBACE,eACA,iBACA,WACA,wBAEA,yBACE,cAIJ,yBACE,eACA,YAGF,uBACE,yBAGF,sCAEE,iBAGF,aACE,mBACA,gBACA,uBAIA,kBACE,gBACA,uBACA,mBAKF,2KAGE,yCACA,6CAKF,2BACE,qBAKF,iCACE,UACA,kCAGF,uCACE,mFAKA,mBAEA,6CACE,mFAQJ,kBACE,aACA,WACA,yBACA,cACA,yBACA,kBACA,eACA,kBACA,mBAEA,8BACE,kBACA,iBAGF,wCACE,WACA,YACA,cAEA,qBAIF,uDACE,gBAEA,4DACE,gBAMJ,yFAEE,eACA,YACA,SACA,wBACA,iBACA,aACA,uBACA,mBACA,uBACA,uGACE,eACA,YACA,WAIJ,+DAEE,eACA,sBACA,sLAEE,cACA,6BACA,qBAKF,wFAEE,cACA,cAIJ,uCACE,qBACA,+CACE,eAMR,gBACE,aACA,sBACA,qBACE,YACA,eACA,kBAIJ,cACE,YACA,aACA,gBACA,oBACA,8BAEA,4CAEE,eACA,kBACA,kGAEE,WAKN,MACE,WAGF,+CACE,sBACA,uBAGF,YACE,6BACA,sBACA,YACA,UACA,eACA,SACA,sBACA,sBACA,uBACA,0BACA,kBACA,iDACA,oDACA,4CACA,+EAEA,wEACA,qFAEA,qEAGF,yBACE,qBACA,UACA,8EAEA,iFAEA,yEAIF,kBACE,kCACA,kDACA,sBACA,2BACA,uCAGF,aACE,UAGF,YACE,kCACA,kDACA,sBACA,2BACA,uCAGF,yCAEE,cACA,6BACA,WACA,YACA,UACA,eACA,SACA,sBACA,iCACA,uBACA,0BACA,kBACA,4DACA,+DACA,uDACA,+EAEA,wEACA,qFAEA,qEAGF,wDACE,cAGF,sBACE,sBAGF,uCAEE,cAGF,0BACE,4BAGA,2BAGF,kFAKE,sBACA,uBACA,wBAGF,mCACE,sBACA,mBACA,wBACA,mBAGF,yDACE,kBACA,wBACA,sBAGF,oEACE,4BAGF,4EACE,6BACA,uBACA,2BAGF,8DACE,uBACA,2BAGF,wDACE,uBAGF,wFAIE,sBAGF,0FAIE,qBAGF,yDACE,mBACA,qBACA,YAGF,8EACE,sBACA,kBAGF,kBAEE,eACA,WACA,gBACA,YAOF,UAGE,6BAGF,yBACE,UACA,SACA,eACA,eAIF,QACE,cACA,WACA,YAKF,wBAEE,WAJoB,CAKpB,eALoB,CAQpB,eACA,UAGF,wBAEE,YACA,yBAGA,gBAEA,yBACA,wBACA,gBACA,sBAGF,uCACE,yBACA,cACA,gCAGF,qCACE,yBACA,wBACA,kBACA,gBAGF,wCACE,yBACA,wBACA,kBACA,gBAGF,0BACE,kBACA,YACA,UAGF,6CACE,qBACA,kBACA,gBACA,wBACA,sBACA,kBAGF,sDACE,qBAGF,2DACE,cAGF,+DACE,cAEF,oDACE,yDACA,WACA,kBACA,WACA,WACA,WACA,YACA,4BACA,4BACA,wBAGF,mDACE,eACA,iBACA,kBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,0CACE,qBACA,kBAGF,kDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,eACA,kBACA,gBACA,kBACA,WAGF,wCACE,qBAGF,yCACE,qBAGF,yCACE,qBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,iDACE,kBACA,yBACA,yBACA,QAGF,wDACE,WACA,WACA,yDACA,iCACA,yBAGF,gDACE,QACA,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,gDACE,iBACA,yBACA,yBACA,QAGF,uDACE,YACA,UACA,yDAGF,uBACE,WAIF,SACE,iBACA,yBAEA,gBACA,kBACA,cACA,aAGF,mBACE,cACA,gBACA,sBAGF,kBACE,WACA,YACA,kBAGF,6BACE,WACA,YACA,kBACA,OACA,MAGF,oCACE,WACA,cACA,cACA,UACA,WACA,sBACA,mBACA,oEACA,4DAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,qCACE,8BACA,sBAGF,qCACE,4BACA,oBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,YAGE,UAGF,IACE,WAIJ,8BACE,YAGE,UAGF,IACE,WAIJ,4CACE,uBAGF,4CACE,yBACA,cAGF,4CACE,qBAGF,gCACE,gBACA,YACA,kBACA,YAGF,mCACE,gCAGF,mCACE,8BAGF,gCACE,uDAEE,eAIJ,gCACE,uDAEE,cAIJ,mBACE,yBAGF,mBACE,uBAGF,YACE","sources":["webpack://motion-chat/./src/styles/app.scss","webpack://motion-chat/./node_modules/mdi/scss/_path.scss","webpack://motion-chat/./node_modules/mdi/scss/_core.scss","webpack://motion-chat/./node_modules/mdi/scss/_icons.scss","webpack://motion-chat/./node_modules/mdi/scss/_extras.scss","webpack://motion-chat/./node_modules/mdi/scss/_animated.scss","webpack://motion-chat/./node_modules/angular-material/angular-material.scss"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"styles/app.css","mappings":";;;;;;;;;;;;;;;;;;;;AAEQ,WCFR,mCACE,4CACA,wSACA,mBAKA,kBACA,sBCTF,oBAEE,yDACA,kBACA,oBACA,oBACA,mCACA,kCACA,0BCPE,eACI,kCADJ,eACI,qBADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,2BADJ,eACI,2BADJ,eACI,yBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oCADJ,eACI,sCADJ,eACI,mCADJ,eACI,2CADJ,eACI,6BADJ,eACI,yBADJ,eACI,6BADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,6BADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,mBADJ,eACI,wBADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,0BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,2BADJ,eACI,4BADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,oBADJ,eACI,+BADJ,eACI,uBADJ,eACI,uBADJ,eACI,oBADJ,eACI,qBADJ,eACI,kCADJ,eACI,0BADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,iCADJ,eACI,oCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,4BADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,mCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,uBADJ,eACI,+BADJ,eACI,gCADJ,eACI,4BADJ,eACI,gCADJ,eACI,iCADJ,eACI,uCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,qCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,+BADJ,eACI,gCADJ,eACI,6BADJ,eACI,mCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,yBADJ,eACI,8BADJ,eACI,kCADJ,eACI,0CADJ,eACI,qCADJ,eACI,6CADJ,eACI,8CADJ,eACI,6BADJ,eACI,qCADJ,eACI,6CADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,2BADJ,eACI,+BADJ,eACI,uCADJ,eACI,kCADJ,eACI,0CADJ,eACI,2CADJ,eACI,0BADJ,eACI,kCADJ,eACI,0CADJ,eACI,4BADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,gBADJ,eACI,uBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,+BADJ,eACI,sBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,uBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,oBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,iCADJ,eACI,kCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,sCADJ,eACI,uCADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,6CADJ,eACI,+CADJ,eACI,2BADJ,eACI,8BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,wBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,qBADJ,eACI,uBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,gCADJ,eACI,gCADJ,eACI,kBADJ,eACI,yBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,2BADJ,eACI,mCADJ,eACI,uBADJ,eACI,oCADJ,eACI,+BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,mCADJ,eACI,6BADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,iCADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,uBADJ,eACI,6BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,mBADJ,eACI,mBADJ,eACI,oBADJ,eACI,iBADJ,eACI,4BADJ,eACI,sBADJ,eACI,sBADJ,eACI,iBADJ,eACI,iCADJ,eACI,mCADJ,eACI,+BADJ,eACI,wBADJ,eACI,sBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,yBADJ,eACI,oCADJ,eACI,oCADJ,eACI,qCADJ,eACI,kCADJ,eACI,wBADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,iBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,wBADJ,eACI,2BADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,gCADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,iBADJ,eACI,kBADJ,eACI,2BADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,yBADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,6BADJ,eACI,wBADJ,eACI,gCADJ,eACI,gCADJ,eACI,uBADJ,eACI,sCADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mCADJ,eACI,2CADJ,eACI,oCADJ,eACI,mCADJ,eACI,6BADJ,eACI,oCADJ,eACI,4CADJ,eACI,qCADJ,eACI,qCADJ,eACI,4CADJ,eACI,oDADJ,eACI,6CADJ,eACI,sCADJ,eACI,6CADJ,eACI,qDADJ,eACI,8CADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,wBADJ,eACI,yBADJ,eACI,wBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,0BADJ,eACI,wBADJ,eACI,kBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,kCADJ,eACI,kCADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,uBADJ,eACI,wBADJ,eACI,sBADJ,eACI,uBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,wCADJ,eACI,4BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oCADJ,eACI,8BADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,qBADJ,eACI,0BADJ,eACI,qBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,mCADJ,eACI,8BADJ,eACI,sCADJ,eACI,6BADJ,eACI,kCADJ,eACI,gCADJ,eACI,wCADJ,eACI,8BADJ,eACI,sCADJ,eACI,4BADJ,eACI,oCADJ,eACI,0BADJ,eACI,mCADJ,eACI,2CADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,yBADJ,eACI,+BADJ,eACI,2BADJ,eACI,0BADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,sBADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,mBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kCADJ,eACI,6BADJ,eACI,8BADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,4BADJ,eACI,2BADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,qBADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,oCADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,sBADJ,eACI,4BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,oBADJ,eACI,2BADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,6BADJ,eACI,yBADJ,eACI,2BADJ,eACI,qBADJ,eACI,6BADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,sBADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,6BADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,oBADJ,eACI,4BADJ,eACI,sBADJ,eACI,0BADJ,eACI,iBADJ,eACI,iBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,4BADJ,eACI,6BADJ,eACI,oCADJ,eACI,2BADJ,eACI,kCADJ,eACI,oBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,6BADJ,eACI,2BADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,sBADJ,eACI,+BADJ,eACI,4BADJ,eACI,sBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,2BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,oBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,sBADJ,eACI,4BADJ,eACI,gCADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,sBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,wBADJ,eACI,gCADJ,eACI,kBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,gCADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,kCADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,wBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,6BADJ,eACI,iCADJ,eACI,mCADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,uBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,qBADJ,eACI,kBADJ,eACI,kBADJ,eACI,4BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,mBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,2BADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,6BADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,6BADJ,eACI,mCADJ,eACI,qCADJ,eACI,4BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,2BADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,kBADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,iCADJ,eACI,6BADJ,eACI,sBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,8BADJ,eACI,oCADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,iCADJ,eACI,+BADJ,eACI,+BADJ,eACI,gCADJ,eACI,yBADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,oCADJ,eACI,iCADJ,eACI,oCADJ,eACI,iCADJ,eACI,4CADJ,eACI,0CADJ,eACI,2CADJ,eACI,oCADJ,eACI,oCADJ,eACI,2BADJ,eACI,iCADJ,eACI,+BADJ,eACI,gCADJ,eACI,kCADJ,eACI,uCADJ,eACI,gCADJ,eACI,iCADJ,eACI,+BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,4BADJ,eACI,yBADJ,eACI,kCADJ,eACI,0CADJ,eACI,8BADJ,eACI,gCADJ,eACI,yBADJ,eACI,yCADJ,eACI,yCADJ,eACI,0BADJ,eACI,8BADJ,eACI,0CADJ,eACI,0CADJ,eACI,uCADJ,eACI,gCADJ,eACI,gCADJ,eACI,+BADJ,eACI,oCADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,wBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,wBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,yBADJ,eACI,gCADJ,eACI,gCADJ,eACI,qBADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,yBADJ,eACI,oCADJ,eACI,6BADJ,eACI,mBADJ,eACI,kBADJ,eACI,iBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,4BADJ,eACI,wCADJ,eACI,qCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mCADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,yBADJ,eACI,yBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,iCADJ,eACI,yBADJ,eACI,yBADJ,eACI,6BADJ,eACI,8BADJ,eACI,2BADJ,eACI,iBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,iCADJ,eACI,6BADJ,eACI,wBADJ,eACI,uBADJ,eACI,iCADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,gCADJ,eACI,uBADJ,eACI,2BADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,6BADJ,eACI,iCADJ,eACI,qBADJ,eACI,qBADJ,eACI,yBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,+BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,0BADJ,eACI,0BADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,+BADJ,eACI,6BADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,4BADJ,eACI,2BADJ,eACI,uBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,sCADJ,eACI,uCADJ,eACI,4CADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,kCADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,oBADJ,eACI,mBADJ,eACI,8BADJ,eACI,4BADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,iCADJ,eACI,uBADJ,eACI,wBADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,kBADJ,eACI,oBADJ,eACI,sBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,oBADJ,eACI,iBADJ,eACI,wBADJ,eACI,uBADJ,eACI,sBADJ,eACI,wBADJ,eACI,yBADJ,eACI,sBADJ,eACI,gCADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,iBADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,6BADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,iCADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,kCADJ,eACI,wBADJ,eACI,4BADJ,eACI,iCADJ,eACI,oBADJ,eACI,+BADJ,eACI,wBADJ,eACI,wBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,uBADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,6BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,oBADJ,eACI,uBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,+BADJ,eACI,8BADJ,eACI,iCADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,+BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,2BADJ,eACI,8BADJ,eACI,kCADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,gCADJ,eACI,2BADJ,eACI,gCADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,oBADJ,eACI,uBADJ,eACI,4BADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,iCADJ,eACI,gCADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,sBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qBADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,kCADJ,eACI,sCADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,gCADJ,eACI,kCADJ,eACI,8BADJ,eACI,uBADJ,eACI,0BADJ,eACI,oBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,6BADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,yBADJ,eACI,mBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,sBADJ,eACI,oCADJ,eACI,iBADJ,eACI,kBADJ,eACI,kBADJ,eACI,qBADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,gCADJ,eACI,iDADJ,eACI,wCADJ,eACI,iBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,oBADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,yBADJ,eACI,qBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,mBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,gCADJ,eACI,gCADJ,eACI,sCADJ,eACI,uCADJ,eACI,qBADJ,eACI,8BADJ,eACI,4BADJ,eACI,mBADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,uBADJ,eACI,qBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,qBADJ,eACI,oBADJ,eACI,mBADJ,eACI,iBADJ,eACI,oBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,yBADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,4BADJ,eACI,gCADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,uBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,oCADJ,eACI,mCADJ,eACI,4BADJ,eACI,wBADJ,eACI,gBADJ,eACI,oBADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,+BADJ,eACI,uBADJ,eACI,oBADJ,eACI,oBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kBADJ,eACI,8BADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,oCADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,2BADJ,eACI,6BADJ,eACI,yBADJ,eACI,kBADJ,eACI,kBADJ,eACI,sBADJ,eACI,8BADJ,eACI,yBADJ,eACI,0CADJ,eACI,iCADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,oBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,+BADJ,eACI,qBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,uBADJ,eACI,8BADJ,eACI,qBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,uBADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,qBADJ,eACI,mBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,4BADJ,eACI,wBADJ,eACI,gCADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,iCADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,kBADJ,eACI,kBADJ,eACI,0BADJ,eACI,mBADJ,eACI,oBADJ,eACI,0BADJ,eACI,oBADJ,eACI,uBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,6BADJ,eACI,oBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,iBADJ,eACI,sBADJ,eACI,kBADJ,eACI,wBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,qBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,4BADJ,eACI,qBADJ,eACI,oBADJ,eACI,6BADJ,eACI,kCADJ,eACI,yBADJ,eACI,oBADJ,eACI,gBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,mCADJ,eACI,gCADJ,eACI,iCADJ,eACI,kCADJ,eACI,gCADJ,eACI,iCADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,qBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,6BADJ,eACI,4BADJ,eACI,sBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,mBADJ,eACI,+BADJ,eACI,2BADJ,eACI,wBADJ,eACI,gCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,8BADJ,eACI,4BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,uBADJ,eACI,oBADJ,eACI,uBADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,yBADJ,eACI,8BADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,6BADJ,eACI,8BADJ,eACI,gCADJ,eACI,iBADJ,eACI,uBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,sCADJ,eACI,2BADJ,eACI,kCADJ,eACI,0CADJ,eACI,mBADJ,eACI,mBADJ,eACI,4BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,uBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,2BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,iCADJ,eACI,sCADJ,eACI,iCADJ,eACI,4CADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,wBADJ,eACI,qBADJ,eACI,uBADJ,eACI,4BADJ,eACI,mBADJ,eACI,oBADJ,eACI,wBADJ,eACI,6BADJ,eACI,4BADJ,eACI,yBADJ,eACI,iBADJ,eACI,4BADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,iCADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,4BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qCADJ,eACI,sCADJ,eACI,oBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,iBADJ,eACI,sBADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,qCADJ,eACI,sCADJ,eACI,iCADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,+BADJ,eACI,uBADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,oBADJ,eACI,kBADJ,eACI,mBADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oCADJ,eACI,8BADJ,eACI,4BADJ,eACI,iCADJ,eACI,oCADJ,eACI,gCADJ,eACI,oBADJ,eACI,kBADJ,eACI,qBADJ,eACI,uBADJ,eACI,yBADJ,eACI,4BADJ,eACI,gCADJ,eACI,qBADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,8BADJ,eACI,yBADJ,eACI,+BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,wBADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,iCADJ,eACI,4BADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,8BADJ,eACI,6BADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,qBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,kCADJ,eACI,0BADJ,eACI,mBADJ,eACI,2BADJ,eACI,iBADJ,eACI,yBADJ,eACI,wBADJ,eACI,oBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,8BADJ,eACI,uBADJ,eACI,4BADJ,eACI,kBADJ,eACI,oBADJ,eACI,2BADJ,eACI,8BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,mBADJ,eACI,4BADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,sBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kBADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,kBADJ,eACI,oBADJ,eACI,mCADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,0BADJ,eACI,oCADJ,eACI,kCADJ,eACI,oCADJ,eACI,kCADJ,eACI,qBADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iBADJ,eACI,2BADJ,eACI,yBADJ,eACI,oBADJ,eACI,kCADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,0BADJ,eACI,+BADJ,eACI,kCADJ,eACI,kCADJ,eACI,4BADJ,eACI,iCADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,sBADJ,eACI,0BADJ,eACI,iCADJ,eACI,mCADJ,eACI,8BADJ,eACI,gCADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,oCADJ,eACI,sBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,uBADJ,eACI,mBADJ,eACI,oBADJ,eACI,6BADJ,eACI,0BADJ,eACI,gBADJ,eACI,oBADJ,eACI,uBADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,iBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,oBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,kCADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,iCADJ,eACI,2BADJ,eACI,4BADJ,eACI,iCADJ,eACI,+BADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,oBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,sBADJ,eACI,sCADJ,eACI,gCADJ,eACI,wCADJ,eACI,sCADJ,eACI,iCADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,iBADJ,eACI,kBADJ,eACI,uBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,oBADJ,eACI,kBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,kBADJ,eACI,kBADJ,eACI,6BADJ,eACI,2CADJ,eACI,2CADJ,eACI,0CADJ,eACI,yCADJ,eACI,4CADJ,eACI,6CADJ,eACI,iCADJ,eACI,iBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,kBADJ,eACI,sBADJ,eACI,oCADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,qBADJ,eACI,mBAIR,WACI,kBACA,wCCLI,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,kBAMR,qBACI,+BAEJ,qBACI,mBAIJ,UACI,gCAEJ,0BACI,uBAOA,+BACI,4BACA,wBACA,uBAHJ,+BACI,4BACA,wBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,oBAoBZ,4BACI,qBACA,aACA,mBACA,oBAEJ,4BACI,qBACA,aACA,mBACA,kBC9DJ,6CACI,sCACQ,6BAGZ,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ,sBAId,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ;;;;;ECxBd,CAmkBA,UACE,YACA,kBAGF,KACE,SACA,UAGF,sBACE,aAEF,OACE,aAGF,iCAEE,mBACA,yBACA,gBACA,YACA,UACA,SAGF,6BAIE,wBAIF,oEAIE,eACA,0BAEA,4GACE,eAIJ,SACE,mBACA,cAIA,mBACE,6BACA,uBACA,+BAEA,+FAEE,wBAGJ,uBACE,iBAIJ,oBACE,SACA,mBACA,WACA,YACA,gBACA,UACA,kBACA,oBACA,UAGF,WACE,kBACA,MACA,OACA,SACA,QACA,sBACA,oBAGF,sBA7bE,uCAgcF,sBA5bE,sCAgcF,8BACE,wDAOF,qBACE,oBACA,kBACA,gBACA,OACA,MACA,WACA,YACA,qDAGF,WAEE,kBACA,yCACA,yBACA,UACA,kBACA,4BACE,sRAOF,4BACE,yCAEF,mFACE,WAEF,4BACE,gEAKJ,4BACE,eACA,gBAGF,YACE,YAGF,WACE,WAGF,gBACE,kBACA,6BACA,MACA,QACA,SACA,OACA,UA5oBoB,CA8oBpB,oCACE,cACA,kBACA,yBACA,QACA,MACA,SACA,UAppBsB,CAqpBtB,wCAMJ,gBACE,gCAKF,eACE,yBAGF,yBACE,YACE,cAOF,wDACG,mBAIL,aACE,cACA,2BAEF,aACE,cACA,2BApQA,yBA6CE,4IAnQF,gBA5K0B,CA6K1B,gKACE,aAkQ2E,CAjQ3E,iBA/KwB,EAwY1B,+CAuCE,mRAnQF,gBA5K0B,CA6K1B,iTACE,aAkQ2E,CAjQ3E,iBA/KwB,EA+Y1B,gDAgCE,6ZAnQF,gBA5K0B,CA6K1B,qcACE,aAkQ2E,CAjQ3E,iBA/KwB,EAuZ1B,iDAwBE,ikBAnQF,gBA5K0B,CA6K1B,mnBACE,aAkQ2E,CAjQ3E,iBA/KwB,EAga1B,0BAeE,mzBAnQF,gBA5K0B,CA6K1B,+2BACE,aAkQ2E,CAjQ3E,iBA/KwB,EAipB5B,UACE,0CACA,8BAEA,gBAEA,8BACA,0BAEA,mCACA,kCAMF,cACE,eAhyByB,CAiyBzB,gBACA,uBACA,iBAnyByB,CAqyB3B,cACE,cAryByB,CAsyBzB,gBACA,wBACA,gBAxyByB,CA0yB3B,cACE,cA1yByB,CA2yBzB,gBACA,iBAEF,cACE,cA9yByB,CA+yBzB,gBACA,iBAEF,aACE,cAlzByB,CAmzBzB,gBACA,iBAEF,UA/kBE,cAtOyB,CAuOzB,gBACA,sBAglBF,YA9jBE,cAzPyB,CA0PzB,gBACA,qBACA,iBAikBF,WAllBE,cAzOyB,CA0OzB,gBACA,qBACA,iBAklBF,WA9kBE,cAhPyB,CAiPzB,gBACA,qBACA,iBA8kBF,YACE,cAj0ByB,CAk0BzB,qBAEF,WACE,qBAOF,kCAKE,8CAl2BY,CAq2Bd,6BAIE,eA2bF,wBACE,YACA,OACA,kBACA,MACA,WAGF,wBACE,eAGF,qBACE,aAGF,kBACE,aAIF,2BACE,UACA,gBAGF,UACE,UACA,kBAEA,0BAGE,UACA,gBAGF,kCACE,UACA,6CA7tCa,CAguCf,kCACE,UACA,6CA9tCa,CAiuCf,2EAEE,UAGF,6BACE,YACA,eACA,WAGF,2BACE,YACA,kDAGF,2BACE,kDAIJ,sBACE,gBACA,OACA,gBACA,eACA,eACA,MAQF,gBACE,kBACA,cACA,YACA,kBACA,iBACA,gBAEE,gCACE,eAGJ,mCACE,gBACA,uBACA,YAEA,sDACE,iBAEF,wDACE,YAIA,gEACE,cACA,kBACA,QACA,QA/BuB,CAgCvB,UAjCqB,CAkCrB,WAlCqB,CAqCvB,+DAtmCJ,kBAikC2B,CAhkC3B,yEACE,eAsmCgF,CArmChF,iBA8jCyB,CA2C3B,qCAEE,aACA,mBACA,sBAEA,kBACA,iBACA,YACA,qDACE,WAGF,mGAGE,WACA,sBACA,YAGF,wDACE,kBACA,YACA,OAEA,kEACE,YACA,UACA,SACA,WAEF,+EACE,kBACA,MACA,OACA,WACA,WACA,gBAEA,6FACE,gBACA,WAEF,wFACE,+BACA,wGACE,UAGJ,wFACE,+BACA,wGACE,UAMV,qCAvvCA,eAEA,sBACA,YACA,gBACA,aACA,uBAmvCE,WACA,eACA,iBACA,YAnvCF,gDACE,aAovCF,6CACE,kBACA,iBACA,kBACA,UAjHyB,CAkHzB,WAlHyB,CAmHzB,eACA,YACA,kBACA,UACA,eACA,uBACA,gBACA,mDACE,WACA,kBACA,SACA,WACA,YACA,UACA,kBACA,mBACA,UACA,mDAz5CW,CA25Cb,mDACE,aAEA,yDACE,mBACA,UAGJ,qDACE,kBACA,QACA,SACA,gDACA,0DACE,eAGJ,sDACE,mBACA,mCACA,sEACE,mBAGJ,sDACE,mCACA,sEACE,mBAKN,8CAGE,sBACE,sBAEF,kDACE,YAKN,qIAEE,kBACA,qCACA,WA79CgB,CAi+ChB,YAEA,2JACE,iBAIJ,4BACE,sBACA,cACA,SACA,gBACA,gBACA,UAGF,mFAEE,WA7M4B,CAgN9B,6BACE,SACA,gBACA,UAEA,yDACE,eACA,gBACA,eACA,gBAzN0B,CA0N1B,WA1N0B,CA2N1B,kCACA,SACA,mBACA,uBAEA,+DACE,aAGF,oFACE,eAMN,8CACE,6CAEE,uBAOJ,YACE,yBAEA,kBACA,MACA,SACA,OACA,QAEA,UA3hDiB,CA6hDjB,6BACE,0BACA,WAEF,+BACE,WACA,sBAEF,+BACE,WAEF,qCACE,WAEF,gCACE,WAIF,6BACE,kBAGF,sBAEE,YAEA,+BACE,UAEF,yDACE,YAEF,+BACE,YACA,yBAEF,yDACE,UAeN,gBACE,kBACA,OACA,QACA,SACA,2BACA,UA5lDqB,CA8lDrB,qBACA,uBAEA,kCACA,mDArlDe,CAslDf,8BAEA,8BACE,cAGF,yBACE,UACA,kCAGF,gCACE,UACA,cACA,6CAIF,gCACE,6CACA,mDAtmDY,CAymDd,8BACE,6BACA,8CA7sDU,CA8sDV,gBA1CyB,CA2CzB,UACA,mBAGF,+BACE,qBACA,YACA,WACA,UAGF,6BACE,aACA,aAEA,mCACE,eAKF,qCACE,UACA,mBACA,WArE0B,CA4E9B,wBACE,kBACA,mBACA,cAEA,gCACE,aACA,mBACA,eACA,mBACA,mBAGF,qCACE,sBACA,mBACA,mBAEA,YAEA,cA5uDqB,CA6uDrB,iBA7uDqB,CA+vDrB,yBA1BF,qCAaI,wBACA,wBAFQ,CAKN,yDACE,uBAEF,qDACE,sBASN,gDA9BF,qCAaI,aACA,aAFQ,EAsBV,iDAlCF,qCAaI,wBACA,wBAFQ,EA0BV,0BAtCF,qCAaI,wBACA,wBAFQ,EA+BV,6CACE,aAGF,2DACE,aACA,sBACA,mBACA,WACA,oBAGF,2DACE,6BACA,aACA,sBACA,mBACA,WAGF,mDACE,eAtJwB,CAuJxB,iBACA,eACA,SACA,mBACA,WACA,kBACA,oBACA,gBAOR,8CACE,gBACE,uBA+BJ,mCACE,SAGF,WACE,qBACA,kBACA,eA33CA,eAk2CmB,CA6BnB,cA1BiB,CAr2CjB,gBAk2CmB,CAgCnB,sBACA,mBACA,kBAEA,iBA3CqB,CA4CrB,sBAGA,iBACA,aACA,SAGA,aAzCe,CA0Cf,cA5Cc,CA8Cd,uBACA,mBACA,mBAGA,yBACA,gBAx5CA,cAveyB,CAi4DzB,mBACA,qBACA,oBACA,qBAGA,gBAEA,iHAj6CA,mHAEE,eAg2CuB,CAl2CzB,mHAEE,gBAg2CuB,CAl2CzB,mHAEE,cA61CqB,CAqEvB,iBACE,aAGF,kCACE,qBAMF,uCACE,gBAGF,uBACE,gBAGF,mBACE,UACA,gBAIA,qCA7tDF,uCAkuDA,0BACE,aACA,WAt0DiB,CAu0DjB,YACA,gBA/5DQ,CAg6DR,WAz6DuB,CA06DvB,UAz0DgB,CA00DhB,iBA9GuB,CAiHzB,kBAKE,UAn3DU,CAq3DV,gBA1GqB,CA4GrB,YACA,UAp1De,CAq1Df,WAp1DgB,CAq1DhB,sBAxvDF,uCA2vDE,iBAhIuB,CAiIvB,4BACA,gBAEA,mDAr3DY,CAs3DZ,0DAlpDF,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA+oDA,0BACE,gBAvHwB,CAwHxB,UA1HkB,CA2HlB,WA1HmB,CA6HrB,qDACE,gBAGF,4BACE,gBAOA,6FApxDJ,uCAuxDI,qFAnxDJ,sCAyxDA,gCACE,sBACA,4BACA,gBAIA,gCAQF,kEACE,cAKF,6FAEE,mDA96Da,CA+6Db,kCAEE,4RAEE,kCAON,yGAEE,mDA57Da,CA67Db,mCAEE,oTAEE,mCAMR,iBACE,aACA,OACA,WAEA,4BACE,OAEA,cAEA,gBAEA,QAEA,6BACA,gBAEA,kBACA,uBACA,mBAEA,wCACE,8BAEF,uCACE,uBACA,8BAKN,8CACE,uCAEE,uBAOJ,QACE,sBACA,aACA,sBACA,UA5jEyB,CA8jEzB,0GAriEsB,CAuiEtB,uBACE,YAZW,CAaX,aACA,mBAGE,kDA1yDJ,iBA2yDkD,CA1yDlD,4DACE,iBAyyDsD,CAxyDtD,gBAwyDgD,CAK9C,iDAhzDJ,gBAizDmD,CAhzDnD,2DACE,gBA+yDuD,CA9yDvD,iBA8yDiD,CAIjD,sCACE,WACA,YAEA,oGAEE,kBAGF,8CACE,YACA,kDAEE,eACA,cAIJ,0DACE,gBAEA,oEACE,eAKN,2CACE,aACA,OACA,sBAEA,uDACE,eAKN,uEAGE,sBACA,aACA,cACA,WACA,YAGF,sBACE,uBACA,aACA,cACA,mBAEA,sCACE,cAGF,yCACE,OACA,sBACA,aAEA,qDACE,cACA,eAIA,gEACE,iBAKN,0CACE,gBAEA,uDACE,YACA,WAEF,uDACE,aACA,YAEF,uDACE,aACA,YAKN,wBACE,cACA,YA3HW,CA8HT,sCACE,aAGF,qCACE,gBAIJ,qCACE,aACA,YAIJ,wBACE,UAnsEuB,CAusEnB,sEACE,aAEA,oFACE,aAGF,mFACE,gBAIJ,gEACE,eACA,kBAKN,6CACE,OACA,2BACA,aACA,mBAIA,4EACE,aAEA,0FAz8DN,aA08DqD,CAz8DrD,oGACE,gBAw8DsD,CAv8DtD,cAu8DmD,CAG/C,yFA78DN,cA88DqD,CA78DrD,mGACE,iBA48DsD,CA38DtD,aA28DmD,CAIjD,sEACE,gBACA,iBAEA,oFAt9DN,gBAu9DqD,CAt9DrD,8FACE,gBAq9D2E,CAp9D3E,iBAo9DmD,CAG/C,mFA19DN,iBA29DqD,CA19DrD,6FACE,iBAy9D2E,CAx9D3E,gBAw9DmD,CAIjD,4EACE,OACA,yBACA,aACA,mBAKN,uBACE,gBACA,YAjNW,CAqNf,8CACE,QACE,uBAKF,sBACE,WACA,YAwBF,4BACE,eANkB,CAOlB,mBAIJ,YACE,sBACA,qBACA,mBACA,eACA,aACA,iBACA,kBACA,cA/sEe,CAuXf,eAi0DoB,CAh0DpB,qHAEE,eA+zDwB,CA0BxB,4DACE,UACA,SACA,WACA,YAIA,6EACE,iCA7/DN,0BACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,oCACE,SA4DsB,CA7DxB,oCACE,OA6D0B,CAE1B,iCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,gCACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,+CACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,qBACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,gCACE,yBAEA,sCACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,sBACE,eAIA,4CACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA45DJ,0BAEE,SACA,UACA,WACA,UAlDwB,CAmDxB,gBAGF,sBACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eA9DuB,CA+DvB,mBAlkEF,gBAwgEqB,CAvgErB,gCACE,aAkkEoE,CAjkEpE,iBAqgEmB,CA8DnB,4BA7kEF,gBA+kE8B,CA/kE9B,cAglE+B,CA/kE/B,sCACE,aA6kEiF,CA9kEnF,sCACE,iBA8kEgC,CAKpC,2CACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eAGA,UA/lEA,gBAkmE0B,CAlmE1B,cAmmE2B,CAlmE3B,qDACE,aAgmEiE,CAjmEnE,qDACE,iBAimE4B,CAmB5B,oCAtnEF,kBA+mEqB,CA9mErB,8CACE,kBAqnE+C,CAC7C,uDAxnEJ,UAynE0B,CAxnE1B,iEACE,WAunE8B,CAC1B,2DACE,WApBI,CAqBJ,mBAGJ,qDACE,qBACA,WA1BM,CAhmEZ,eA2nEmD,CA1nEnD,+DACE,gBAynE2D,CAxnE3D,gBAwnEiD,CAKrD,uBACE,YACA,2BACE,WA1BmC,CA2BnC,mBACA,cA3B6B,CA6B/B,wCAvoEA,eA0mE+B,CA+B7B,WA9BsB,CA1mExB,kDACE,gBAsoE8E,CAroE9E,gBAumE6B,CAiC/B,iFACE,qBACA,gBACA,uBAGJ,iCACE,YAEF,SACE,aAEF,UAGE,aACA,eACA,YACA,8CA/8EY,CAg9EZ,cA/De,CAtmEf,mBA6mEkB,CA0DlB,sBAlwEA,gBACE,WACA,cACA,WAyFF,oBACE,mBAoqEwC,CAG1C,+CACE,eAnEU,CAsEZ,4BACE,YAKA,+BA5qEF,kBAmmE0B,CAlmE1B,yCACE,eA2qE6E,CA1qE7E,iBAgmEwB,CA4EtB,gDA/qEJ,iBAgrEqD,CA/qErD,0DACE,eA8qE6D,CA7qE7D,gBA6qEmD,CAMrD,kBACE,eACA,mBACA,cACA,WA1FU,CA2FV,gBA3FU,CAvmEZ,kBA4mEY,CAwFV,qBA5FW,CAxmEb,UAqsEsB,CACpB,sBACA,eACA,kBAvsEF,4BACE,kBAisEmC,CAlsErC,4BACE,WAmsE0B,CAK1B,mCACE,cA3sEJ,UA4sEwB,CACpB,mBACA,eACA,gBACA,uBA/sEJ,6CACE,WA0sE4B,CAK1B,yCACE,aAGJ,mDACE,yBACA,sBACA,wBACA,qBAEF,4CACE,kBArtEJ,OAstEmC,CAC/B,gBAnHoB,CAnmExB,sDACE,UAotEoC,CAntEpC,MAmtEiC,CAGjC,kCACE,kBACA,UA3HQ,CA4HR,WA5HQ,CA6HR,YACA,UACA,uBACA,YACA,gBACA,SACA,kBACA,0CACE,WA9HgB,CA+HhB,UA/HgB,CAgIhB,eAhIgB,CAiIhB,cAjIgB,CAkIhB,kBACA,QACA,SACA,qCAIN,mCACE,cACA,gBAlJU,CAvmEZ,kBA4mEY,CA+IV,SAlJiB,CAmJjB,YA5vEF,UA6vEsB,CA5vEtB,6CACE,kBAwvEmC,CAzvErC,6CACE,WA2vE0B,CAC1B,yCACE,WAEA,0TAME,SACA,WAjKM,CAkKN,gBAlKM,CAmKN,UACA,8VACE,aAIN,2GACE,uBACA,WA3KQ,CA8KR,wEACE,gBAEF,yDACE,kBAGJ,yCACE,SACA,WAvLQ,CAwLR,gBAxLQ,CAyLR,UACA,+CACE,aAGJ,2GACE,WA/LQ,CAiMV,mDACE,gBACA,yDACE,kBAGJ,qDA9yEF,kBA4mEY,CA3mEZ,+DACE,kBA6yEqC,CAErC,yCACE,uBACA,eAIF,iCACE,aAKN,8CACE,iCAEE,sBAEF,yCACE,aAKJ,WAEE,cACA,kBACA,cACA,iCAEA,wBACE,gBACA,kBAEF,wBACE,gBACA,kBAKF,aAlBF,WAmBI,6BAyDJ,YACE,eACA,iBAMF,yBACE,qBACA,gBACA,aAGA,qDAGE,kBACA,iCAEA,wEACE,aAMJ,sDACE,WAKJ,8BAIE,6CAEA,qBACA,aAGA,YAIF,kBAhFE,WAjBsB,CAkBtB,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAKA,8BA33EA,iBA81EyB,CA71EzB,wCACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,6BA/3EA,kBA81EyB,CA71EzB,uCACE,eA83E0E,CA73E1E,iBA21EuB,CAiGzB,4CACE,eAKJ,sCACE,uEAEA,kBACA,qBAEA,UA9G+B,CA+G/B,WA/G+B,CAgH/B,gBAhH+B,CAkH/B,0EACE,eAKJ,yBACE,WA3HsB,CA4HtB,cArHkC,CAsHlC,gBA/9EA,kBAg+EsB,CA/9EtB,mCACE,kBA89EwF,CAE1F,qDACE,eAGF,iCAt+EA,wBAu+E0B,CAt+E1B,2CACE,cAq+EwC,CAG1C,8BACE,sBAKJ,wBAjGE,mBACA,iBACA,yBAkGA,2BAhIA,WAhB0B,CAiB1B,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAwHE,mBAnHF,uCA33EA,iBA81EyB,CA71EzB,iDACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,sCA/3EA,kBA81EyB,CA71EzB,gDACE,eA83E0E,CA73E1E,iBA21EuB,CAqJ3B,aA3GE,mBACA,iBACA,yBA6GA,8BACE,wBACA,0BAMF,yBACE,iCAOF,mDACE,sBACA,uBAcJ,cAEE,mBACA,gBACA,sBAIA,8BACE,gBAKJ,sBACE,qBACA,sBACA,gBACA,sBACA,kBAIA,6BACE,MACA,OACA,SACA,QACA,kBACA,WACA,WAKJ,qBA1oFE,eAEA,sBACA,YACA,gBACA,aACA,uBAsoFA,gBACA,gBACA,gBAroFA,gCACE,aAyoFF,6CAEE,iBAEA,4EACE,YAGF,mEAllFF,UAqlFwB,CACpB,iBACA,WAtlFJ,6EACE,WAmlF4B,CAM9B,yCACE,WAIA,kHAhmFF,UAkmFa,CAlmFb,SAomFuB,CACnB,wBApmFJ,4HACE,UAimF+B,CAlmFjC,4HACE,SAgmFW,CAMX,4FAjmFF,gBAkmFa,CAjmFb,sGACE,gBAimFwD,CAhmFxD,iBA+lFW,CAMf,kCAxmFE,kBA2mF+C,CA3mF/C,kBA4mF6C,CA3mF7C,4CACE,eAymFuF,CAxmFvF,iBAwmF6C,CA1mF/C,4CACE,iBA0mFsF,CAzmFtF,iBAymF2C,CAI/C,+BAEE,kBAEA,wBACA,0BAEA,qBACA,WAEA,+CA1nFA,gBA8gFyB,CA7gFzB,yDACE,gBAynFwE,CAxnFxE,iBA2gFuB,CAgHzB,qDACE,wBAIJ,0CACE,WAIF,6BAKE,kBACA,MACA,WACA,WAp3FsB,CAq3FtB,iBACA,mBACA,uBAEA,mBACA,qBACA,0DAEA,0CACE,mBAKJ,0BACE,WA7IgC,CA8IhC,WA3TkB,CA4TlB,kBACA,gBAEA,uBACA,oBACA,YAIF,wBACE,UAIA,qDAEA,sCACE,UAGF,0CACE,aAOJ,+BAGE,kBACA,QACA,SACA,gCAEA,QACA,SACA,kCACA,mCACA,qBAIF,+BACE,kBA/sFA,OAgtF+B,CAC/B,cAxtFA,yBA2tFwB,CAntFxB,yCACE,UA8sFgC,CA7sFhC,MA6sF6B,CAttF/B,yCACE,0BAytFuC,CAK3C,wDACE,WAxMoC,CAyMpC,UAzMoC,CA0MpC,kBACA,WAzM6B,CA8M7B,uDACE,gCAGF,uDACE,aAKJ,oBACE,gBAEA,sFAEE,gCAGF,mJAGE,aAOJ,sDACE,aAMA,0CACE,4BACA,2DACA,uBAGF,uDACE,wBAMJ,sBACE,gBAGF,qBACE,aACA,uBACA,mBACA,kBACA,MACA,OACA,WACA,YACA,UAjgGe,CAkgGf,gBAGF,UAaE,UACA,gBACA,cACA,eACA,kBACA,cAEA,6GA9iGuB,CAgjGvB,aACA,sBArBA,2BACE,UACA,mDA3/Fa,CA4/Fb,mCAEF,4BACE,UACA,mDAhgGa,CAigGb,wCAeF,eACE,aACA,sBACA,cAGF,6BACE,YAnDa,CAsDf,4BACE,QACA,sBACA,cACA,iCAEA,+EACE,aAGF,kCACE,aAGF,0CACE,SAGF,oDACE,WAGF,uDACE,WACA,sBAIJ,4BACE,aACA,QACA,sBACA,mBACA,yBACA,gBA/2FF,iBArRyB,CAqRzB,iBAi3F6B,CAC3B,gBACA,gBAl3FF,sCACE,kBA82F4C,CA/2F9C,sCACE,gBAvRuB,CA0oGvB,uCACE,iBA3oGqB,CAqRzB,eArRyB,CAqRzB,cAw3F+B,CAC3B,cA9oGqB,CAsRzB,iDACE,aAq3F4C,CAt3F9C,iDACE,gBAvRuB,CAkpGvB,gDACE,qBACA,uBAKN,8CACE,UACE,uBAIJ,yBACE,+BACE,gBACA,eACA,iBAIJ,WACE,cACA,qBACA,uBACA,SAEA,qBAj5FA,gBAk5F+C,CAj5F/C,+BACE,gBAg5FkE,CA/4FlE,iBA+4F6C,CA5rF/C,yBAGI,wEA8rFJ,mBACA,uBACA,0BA7rFA,+CAII,6KAurFJ,mBACA,uBACA,0BAtrFA,gDAKI,qRA+qFJ,mBACA,uBACA,0BA9qFA,iDAMI,uZAsqFJ,mBACA,uBACA,0BArqFA,0BAOI,umBA4pFJ,mBACA,uBACA,0BAGF,kBACE,kBACA,aACA,mBAIA,UA/nGY,CAgPZ,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA84FF,sCAEE,oBAEA,+GAGE,oBAGF,iDAEE,oBAIJ,qCACE,UAppGU,CAwpGV,iDACE,mBAIJ,iCACE,aAGA,YAEA,qDACE,mDAxpGU,CA4pGd,0BACE,sBAEA,yCACE,QAGF,yCACE,sBACA,QAIJ,wBACE,sBAEA,uCACE,QAGF,uCACE,8BACA,QAIJ,0BACE,mBAEA,yCACE,QAGF,yCACE,2BACA,QAEA,6DACE,mDAlsGQ,CAusGd,2BACE,mBAEA,0CACE,QAGF,0CACE,mBACA,QAEA,8DACE,mDAntGQ,CA4tGZ,gHACE,kBAQF,+CACE,UAMF,qEACE,UACA,uBAKF,+CACE,mBACA,mDArvGU,CAwvGV,iCAON,eAME,cAjiGA,mCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,kCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,gCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,+BACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBAiiGF,uCACE,cACA,kBACA,gBAGA,YAGF,8BACE,kBACA,UAjyGU,CAmyGV,qCACE,4BAGF,yDACE,cACA,kBACA,WAEA,UACA,mDAjyGU,CAoyGZ,sCACE,kBACA,WAEA,UAGA,6BAKF,sCAhmGF,OAimGmC,CAhmGnC,gDACE,UA+lGoC,CA9lGpC,MA8lGiC,CAGjC,yCACE,2BAEA,gEAvmGJ,kBAwmGmD,CAvmGnD,0EACE,iBAsmGyD,CArmGzD,iBAqmGiD,CAG/C,gEA3mGJ,mBA4mGmD,CA3mGnD,0EACE,gBA0mG0D,CAzmG1D,oBAymGiD,CAI/C,+DAhnGJ,gBAinGmD,CAhnGnD,yEACE,iBA+mGsD,CA9mGtD,eA8mGiD,CAOjD,uCAxnGF,MAynGmC,CAxnGnC,iDACE,SAunGoC,CAtnGpC,OAsnGiC,CAGjC,0CACE,mBAIJ,0BACE,wCACA,oBACA,WAEA,4CAEE,eACA,eAGF,8CACE,UACA,mBACA,mDA/1GU,CAk2GV,yBAQF,gDACE,gBAEA,wDACE,UAIJ,8CACE,UACA,mBAKN,aACE,sBACA,cACA,kBAEA,6HAIE,sBAGF,0BACE,cACA,kBAEA,iCACE,aACA,mBACA,uBACA,YACA,kBACA,MACA,QACA,SACA,OACA,UACA,SAIF,4FAEE,aACA,mBACA,mBACA,YACA,WACA,2BACA,gBAGA,kBACA,OACA,QAEA,oMAEE,gBACA,kBAGF,kGACE,eAGF,kGACE,eAIJ,8CACE,MAGF,8CACE,SAMN,8CACE,aACE,sBAEF,oBACE,2BAKJ,QACE,YACA,sCACA,qBACA,sBACA,kBACA,WAphHU,CAqhHV,UArhHU,CAwhHV,eAxhHU,CAyhHV,cAzhHU,CA2hHV,YACE,oBACA,cAGF,sBACE,gBAjiHQ,CAkiHR,WAIJ,mBAEE,qBACA,kBACA,WAj8GwB,CAk8GxB,gBACA,sBA33GA,yBACE,WACA,cACA,WA03GF,4BACE,cAKF,qCAxyGA,WAyyGsB,CACpB,eA37GiB,CA87GjB,cA5yGF,+CACE,UAuyG2B,CAO7B,2BACE,kBACA,OA57Gc,CA0IhB,QAmzGqB,CAnzGrB,UAozGsB,CAnzGtB,qCACE,SAizGwB,CAlzG1B,qCACE,SAkzG0B,CAG5B,2iBAgBE,qBACA,wBAEF,+LAKE,gBAEF,4BACE,YACA,gBAEA,qCACE,gBACA,6BAIF,4CACE,YACA,cAIJ,mDACE,kBACA,YAn2GF,MAo2GqB,CAp2GrB,UAq2GsB,CAp2GtB,6DACE,SAk2GsB,CAn2GxB,6DACE,OAm2G0B,CAE1B,qEACE,aACA,eACA,mBAIJ,wGAEE,gBACA,uBACA,mBACA,WACA,QACA,oBACA,mCAt3GF,gBAnKwB,CAmKxB,eAw3G8B,CAC5B,UACA,2CACA,0DAIA,eA/3GF,yBAi4GiC,CAh4GjC,4HACE,cAq3GqD,CAt3GvD,4HACE,iBArKsB,CAoKxB,4HACE,0BA+3GyC,CAGzC,8IAp4GF,gBAs4G+B,CAt4G/B,eAu4GgC,CAt4GhC,kKACE,cAo4G6D,CAr4G/D,kKACE,iBAq4GiC,CAGnC,mCACE,kBACA,MACA,UACA,sCACA,kCAEF,oDACE,UACA,kCAGF,sDACE,gBACA,UAGF,6FACE,kBAEF,q8BAUE,kBAMF,6BACE,QACA,cACA,aAEA,gBACA,eAzkHgB,CA0kHhB,kBAzkHmB,CAoJrB,cAs7G6B,CAt7G7B,iBAnKwB,CA2lHtB,uBACA,gBA/kHgB,CAglHhB,YACA,4BAjlHgB,CAklHhB,gBACA,mBACA,6DAGA,WACA,sBAl8GF,UAu8GsB,CAt8GtB,uCACE,gBArKsB,CAoKxB,uCACE,eAq7GsD,CAt7GxD,uCACE,WAq8G0B,CAE1B,mCACE,aAEF,qCACE,aACA,gBAGF,wCACE,qBAIJ,oCAt9GA,gBAu9G2B,CAv9G3B,iBAnKwB,CAmKxB,cAy9G6B,CAx9G7B,8CACE,eAq9GgC,CAt9GlC,8CACE,eAs9GsD,CAv9GxD,8CACE,gBArKsB,CAkoHxB,gDACE,kBACA,QACA,gBAl+GF,UAm+GsB,CAl+GtB,0DACE,WAi+G0B,CAG5B,mFACE,cAznHoB,CA0nHpB,gBAxnHsB,CAynHtB,gBAEA,mDAprHY,CAurHZ,UACA,aACA,eArwHuB,CAuwHvB,+HAl/GF,iBAo/GgC,CAp/GhC,cAq/G+B,CAp/G/B,mJACE,eAk/GwC,CAn/G1C,mJACE,gBAm/GgC,CAM9B,oFACE,UACA,kBAQJ,gEACE,UACA,kBAIF,8EACE,UACA,kBAOF,8LACE,6CACA,qGAQF,4CACE,gBAKJ,6IAGE,iBACA,uBAIA,+EAIE,uCAGA,wBACA,2BAIJ,iCAEE,2DAEA,uCACE,oBACA,kBAGF,yCACE,OA5sHY,CA0IhB,QAmkHuB,CAnkHvB,UAokHwB,CAnkHxB,mDACE,SAikH0B,CAlkH5B,mDACE,SAkkH4B,CAQ1B,kRAEE,wBACA,UAMN,gCArlHA,iBA5IY,CA4IZ,eAulH8B,CAtlH9B,0CACE,cAolHyC,CArlH3C,0CACE,kBA9IU,CAouHV,sCAxlHF,SA5IY,CA4IZ,UA0lHwB,CAzlHxB,gDACE,SAulHmC,CAxlHrC,gDACE,UA9IU,CA0uHZ,iCA9lHA,cA+lH6B,CA/lH7B,kBA5IY,CA6IZ,2CACE,iBA9IU,CA6IZ,2CACE,eA8lH0C,CAE1C,sDACE,SAnmHJ,SAqmHwB,CArmHxB,SAsmHuB,CArmHvB,gEACE,UAmmH2B,CApmH7B,gEACE,QAomH2B,CAI7B,8CACE,iBAvvHU,CAwvHV,kBAxvHU,CA2vHR,oKAEE,8BAMR,mBAEE,kBAptHA,yBACE,WACA,cACA,WAotHJ,kBACE,kBACA,YACA,OACA,WAtwH2B,CAuwH3B,uBACA,WACA,iBAGF,8CACE,4CACE,WA2CJ,QACE,cACA,wBAEA,sBACE,cAn9HuB,CAo9HvB,gBACA,qBACA,iBA1CsB,CA+CpB,gIAEE,eAxBiB,CAtrHvB,gJACE,WACA,eAorHqB,CAnrHrB,kBACA,qBAgtHI,wKACE,UA5B2B,CA6B3B,WA7B2B,CAgC7B,kNAtsHN,iBAusHqD,CAC7C,cAnEY,CAoEZ,iBApEY,CApoHpB,sOACE,iBAqsHmH,CApsHnH,gBAosHmD,CAI/C,sTA3sHN,iBA4sHqD,CAC7C,eACA,kBA7sHR,8VACE,iBA0sHqH,CAzsHrH,gBAysHmD,CAI/C,sJACE,UACA,UA3C6B,CA4C7B,WA5C6B,CA+C7B,gOACE,cAlFU,CAmFV,iBAnFU,CAqFZ,wPACE,eAv5HS,CAg6HT,8YApuHV,gBAypHwB,CAxpHxB,sbACE,gBAmuHiF,CAluHjF,iBAspHsB,CA+Ed,klCAGE,gBAjEgB,CAkEhB,cAnEc,CAoEd,mBAGF,kXACE,cAzEqB,CAgF3B,6IACE,eArFwB,CAvrHhC,6JACE,WACA,eAqrH8B,CAprH9B,kBACA,qBA2wHM,gVACE,gBAMJ,6IAEE,eAhG0B,CAxrHlC,6JACE,WACA,eAsrHgC,CArrHhC,kBACA,qBAuxHM,wVAEE,gBAKR,6DACE,iBACA,oBAKN,aAEE,kBAEA,oDACE,wCAGF,6BACE,kBAEA,uDAEE,aACA,mBACA,2BAEA,iBACA,SAEA,gBAjzHJ,eAkzH6B,CACzB,mBAlzHJ,iEACE,gBAgzHiC,CAI/B,8EACE,kBACA,MACA,OACA,YAEA,SACA,UAGF,2EAEE,WA90HN,mFACE,WACA,kBA60HqC,CA50HrC,kBACA,qBAk1HF,mDAEE,kBACA,iBAGA,cAEA,uEACE,kBACA,eAp1HJ,eAq1H6B,CACzB,oBACA,WACA,mBACA,uBACA,oBACA,gBACA,SA31HJ,2FACE,gBAm1HiC,CAS/B,iHACE,gBAGJ,+DACE,aAGJ,gCACE,eAGF,wBACE,kBACA,SAr2HF,MAs2HiC,CAC/B,WAt2HF,kCACE,SAo2HkC,CAn2HlC,OAm2H+B,CAE/B,kCAx2HF,SA8pH+B,CA4M3B,wBACA,oBA12HJ,4CACE,SAu2HkE,CAt2HlE,UA2pH6B,CAiN/B,8CAIE,aACA,2BACA,mBAEA,eAxNe,CA2Nf,YA74HF,8DACE,WACA,eAgrHe,CA/qHf,kBACA,qBA44HA,khBAIE,UAtOyB,CAuOzB,gBACA,mBACA,uBAEF,kXAIE,kBACA,kcACE,aAIJ,gIAh5HF,iBAi5HiD,CAh5HjD,oJACE,iBA+4HyG,CA94HzG,gBA84H+C,CAG/C,kJACE,cAjrIqB,CAkrIrB,iBAlrIqB,CA4RzB,iBAu5HiD,CAC7C,kBACA,uBAx5HJ,0LACE,iBAq5H2G,CAp5H3G,gBAo5H+C,CAI/C,oEACE,UACA,UAnQ2B,CAoQ3B,WApQ2B,CAsQ7B,8EACE,YAIA,sFACE,UAzrII,CA0rIJ,WA1rII,CA8rIR,sEACE,WACA,eAzmIe,CAqLnB,eAq7H8B,CAr7H9B,iBAs7H+B,CAr7H/B,0FACE,gBAm7HiC,CAp7HnC,0FACE,gBAo7HmC,CAGnC,8FACE,aACA,mBAGA,kBAMA,cAKA,YAz8HJ,cA28H+B,CA38H/B,gBA48H8B,CA38H9B,kHACE,iBAy8HgC,CA18HlC,kHACE,aA08HkC,CAG9B,sSAx8HN,cA08HqD,CAz8HrD,8UACE,iBAw8HsD,CAv8HtD,aAu8HmD,CAIjD,sHACE,aACA,cACA,eA7oIa,CA+oIb,4IACE,UA/oIU,CA2LlB,cAq9HqD,CAp9HrD,gKACE,iBAm9HsD,CAl9HtD,aAk9HmD,CAIjD,kHACE,aACA,gBA39HN,iBA69HmD,CA59HnD,sIACE,iBA29HuD,CA19HvD,gBA09HiD,CAIjD,4IACE,cACA,SAMF,sHACE,uBACA,uBAEA,0KACE,cA1wImB,CA2wInB,iBA3wImB,CA8wIrB,kMACE,cACA,YACA,uBACA,gBAEA,0OAx/HN,gBAypHwB,CAxpHxB,kRACE,gBAu/H6E,CAt/H7E,iBAspHsB,CAmWlB,8MACE,cAjyIiB,CAkyIjB,gBACA,qBACA,cAzXO,CA0XP,iBAvXgB,CAwXhB,gBACA,mBACA,uBAEF,8MACE,cAzyIiB,CA0yIjB,qBACA,kBAjYO,CAkYP,eAjYY,CAkYZ,iBAjYgB,CAkYhB,gBACA,mBACA,uBAEF,0MACE,cAnzIiB,CAozIjB,gBACA,qBACA,cAzYM,CA0YN,iBAzYW,CAgZjB,2DACE,YAEA,eA/XsB,CAnrH1B,2EACE,WACA,eAirHwB,CAhrHxB,kBACA,qBAijIE,4KACE,gBAGF,mGACE,sBAGF,iGACE,cAMJ,2DACE,YAEA,eAnZwB,CAprH5B,2EACE,WACA,eAkrH0B,CAjrH1B,kBACA,qBAskIE,oLAEE,gBAaR,wBACE,eACA,OACA,MACA,WA/yIa,CAgzIb,UACA,iBAbmB,CAcnB,8BACA,cAEA,wCACE,eACA,kBACA,WACA,eACA,eACA,WAGF,0CACE,UAIF,2CACE,oBAIF,kCACE,UACA,mDAzzIa,CA0zIb,0BACA,oDACE,UACA,mDAzzIU,CA0zIV,0BACA,uBAIJ,iCACE,UACA,mDAj0IY,CAk0IZ,0BAIJ,gBACE,aACA,sBACA,cACA,gBAvDgB,CAwDhB,gBACA,yBACE,gBAzDoB,CA0DpB,sCACE,WA7DmB,CA8DnB,eA9DmB,CAmEzB,aACE,aACA,mBACA,eAvEiB,CAwEjB,WAxEiB,CAyEjB,qBACA,2BAEA,eACE,WACA,cACA,kBACA,mBAQF,yBACE,gBAGF,wBApqIA,eA2qI2B,CAEzB,qBACA,gBACA,cACA,eACA,oBACA,gBACA,YACA,kBACA,mBACA,WAhBA,0CACE,UACA,SAvqIJ,kCACE,gBAyqI+B,CAY/B,gCAvrIF,uBAwrIyB,CAvrIzB,0CACE,uBAsrIsD,CAEtD,0BACE,qBACA,YAEF,6BACE,gBACA,mBAEF,6CACE,sBAMJ,oBACE,YACA,YACA,UAIJ,yBACE,gBACE,gBAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAKN,yBACE,gBACE,eAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAQF,+CACE,iBACA,YACA,aACA,oBAMJ,4BACE,kBACA,WAn9IW,CAu9If,YACE,eACA,cACA,kBACA,UACA,qBACE,qBACA,UACA,kBAEF,mBACE,eACA,eACA,SACA,SACA,6BACA,YAGF,yCACE,WAIJ,0CACE,gBACA,eACA,iEACE,kBACA,yEACE,kBACA,UACA,WACA,QAnxIJ,SAoxImC,CAnxInC,mFACE,SAkxIqD,CAjxIrD,UAixIiC,CAEjC,iKA7xIF,qBA8xI0B,CA7xI1B,qLACE,qBA4xImE,CAGrE,qDACE,aACA,YACA,0DApyIF,UAqyIwB,CApyIxB,oEACE,WAmyI4B,CAE5B,sEAvyIF,WAwyIwB,CACpB,aAxyIJ,gFACE,UAsyI6B,CAI/B,0DACE,aAGF,gIAhzIA,eAizI2B,CAhzI3B,oJACE,gBA+yI+B,CAGjC,mDACE,UACA,8DACE,kBACA,SACA,WACA,oBACA,mBACA,kBArzIJ,iBAszImD,CArzInD,wEACE,cAozIqE,CAnzIrE,kBAmzIiD,CAC/C,oEACE,cACA,YACA,kBACA,QACA,WAn0IN,iDAo0I8B,CA7zI9B,UA8zIqC,CAp0IrC,8EACE,gDAk0IqE,CA5zIvE,8EACE,UA4zIyD,CA3zIzD,SA2zImC,CASvC,YACE,mBACA,qBACA,WALkB,CAMlB,kBAGF,kBACE,aACA,gBACA,SACA,UAGA,sBACA,aACA,mBAGF,2BACE,gBAIF,0BACE,iBACA,aACA,kBACA,gEAEA,gCACE,aAIJ,eAGE,sBACA,kBACA,SACA,OACA,WACA,WACA,0BACA,sBACA,0DAKA,0BACE,gBAKJ,qBACE,gBACA,mBAKF,gCACI,0BACA,+BAIJ,qBACI,kBACA,cAt5IF,qBAw5I0B,CAv5I1B,+BACE,sBAs5IqC,CAErC,oDACI,kBAGJ,+CACI,yDAGJ,yBACI,kBACA,iBACA,MACA,OAMR,mBACE,cACA,kBACA,WACA,UAN2B,CAQ3B,yBACA,2BAn7IA,qBAq7IwB,CAp7IxB,6BACE,sBAm7ImC,CAErC,gDACE,kBAGF,iCACE,cACA,kBACA,gBAEA,WACA,UAvByB,CAyBzB,sCAEA,yCACE,kBAEA,OACA,MACA,SAEA,WACA,UAnCuB,CAsCzB,mDACE,WACA,aACA,kBAEA,aACA,UA5CuB,CA6CvB,WAEA,6BACA,qCACA,8BAGF,oFAKE,gCAQE,wDACE,aAEF,wDACE,0BACA,iEAKJ,8DACE,aAKF,gEACE,8GAGF,gEACE,8GAKJ,wGAEE,eAEA,iHACE,oBAEF,iHACE,oBAON,gDACE,wCAEA,0BAEA,kEACE,cACA,oCAKN,iBACE,GACE,UACA,wCAEF,KACE,UACA,wCAGJ,kBACE,GACE,UACA,8BAEF,IACE,UAEF,KACE,UACA,kCAGJ,oDACE,GACE,sBACA,iCAEF,MACE,sBACA,iFAEF,OACE,uBACA,+EAEF,KACE,uBAGJ,8CACE,GACE,sBACA,iCAEF,IACE,sBACA,sEAEF,OACE,WACA,gFAEF,KACE,qBAGJ,oDACE,GACE,sBACA,0FAEF,OACE,uBACA,0FAEF,OACE,uBACA,0FAEF,KACE,uBAGJ,8CACE,GACE,qBACA,wEAEF,IACE,aACA,iFAEF,OACE,WACA,2EAEF,KACE,sBAoBJ,gBACE,sBACA,cACA,kBAba,CAcb,mBACA,eACA,kBAGA,0BAhBA,eAEA,wCACE,eAiBF,8BACE,kBACA,QACA,2BACA,sBACA,qBACA,UAjCU,CAkCV,WAlCU,CAmCV,eAjqJF,MAkqJqB,CAlqJrB,UAmqJsB,CAlqJtB,wCACE,SAgqJsB,CAjqJxB,wCACE,OAiqJ0B,CAE1B,mDACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAGF,qCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAIJ,mDACG,QAjEY,CAoEf,wBACE,sBACA,kBACA,MACA,OACA,UA5EU,CA6EV,WA7EU,CA8EV,mBACA,iBACA,kBACA,kCAGF,uBACE,sBACA,kBACA,MACA,OACA,UAzFU,CA0FV,WA1FU,CA2FV,kBACA,+BACA,mBAGF,kCACE,qBAGF,0BACE,sBACA,kBACA,qBAruJF,gBAuuJ4B,CAvuJ5B,cAwuJ6B,CAE3B,sBACA,mBACA,oBACA,WA5uJF,oCACE,aAquJ6D,CAtuJ/D,oCACE,iBAsuJ8B,CAUhC,qBACE,aAIA,wEACE,UACA,SACA,WACA,YAIF,oFACE,UACA,SACA,WACA,YAIJ,yCAlIA,eAEA,uDACE,eA36IF,yBAGI,kFA6iJJ,iBA1iJA,+CAII,4LAsiJJ,iBAniJA,gDAKI,ySA8hJJ,iBA3hJA,iDAMI,gbAqhJJ,iBAlhJA,0BAOI,qoBA2gJJ,iBAIA,+BACE,mBACA,+CACE,qBACA,YACA,yBACA,sBACA,aACA,gBAEA,yDACE,QAEF,6DACE,eAMR,8CACE,wCACE,uBA0BA,8EACE,0DAl0JJ,yBAm0JmC,CAl0JnC,wFACE,0BAi0J2C,CAKzC,4HACE,6CAMR,0BACE,eACA,OACA,MACA,UA/iKe,CAgjKf,UACA,aAGA,2BAGA,6CACE,oBAGF,+CACE,cACA,4BAIF,oCACE,cACA,UACA,mDACE,mDAtjKW,CAujKX,0BACA,qDACE,UACA,mDAtjKQ,CAujKR,0BACA,uBAMN,mCACE,UACA,mDAhkKY,CAikKZ,0BAIJ,0BACE,eAnEoB,CAuEpB,0EAEE,cA3Ec,CA6EhB,6BACE,QAUA,4PACE,aACA,eACA,mBAOF,+DACE,0BACA,mBAKN,UACE,aAII,4MACE,aACA,eACA,mBAKN,qCAIE,uCAGA,wBACA,2BAIA,mBACA,gBACA,0BAGF,gBACE,aAEF,0BACE,eAGA,gCACE,eAGA,iDACE,0BACA,wBACA,mBASF,oEACE,uBA9mKqB,CAmnKzB,wDAIE,uCAGJ,8CACE,gBACA,uBA7nKyB,CA8nKzB,mBACA,oEAv+JF,cAw+J+B,CAx+J/B,iBAnKwB,CAoKxB,8EACE,gBArKsB,CAoKxB,8EACE,eAu+JwD,CAK5D,iBACE,aACA,mBACA,eA9LyB,CA+LzB,kBA9L4B,CApzJ5B,cAm/J2B,CAn/J3B,iBAnKwB,CAwpKxB,uBAxM4B,CAyM5B,0BACA,+BACA,kBACA,uBACA,eACA,gBACA,mBACA,0BACA,YA7/JA,2BACE,gBArKsB,CAoKxB,2BACE,eAk/JoD,CAYtD,2CACE,eACA,cACA,uBACA,mBACA,gBAEA,oDACE,eAIJ,iCACE,cA7gKF,oBA8gK4B,CA9gK5B,gBA+gK2B,CACzB,WACA,2BACA,iBAjhKF,2CACE,sBA4gKoC,CA7gKtC,2CACE,eA6gKgC,CAMlC,uCACE,cACA,YACA,kBACA,QAzhKF,UA0hKsB,CA1hKtB,SA2hKqB,CACnB,WACA,eACA,sBA7hKF,iDACE,UAwhK0B,CAzhK5B,iDACE,SAyhKyB,CAM3B,uCACE,aACA,QACA,oBACA,mCACA,UAIJ,eACE,aACA,sBAYA,0GApzKsB,CAqzKtB,iBACA,eA3QqB,CA4QrB,kBA3jKA,yBA6jK+B,CAE/B,mBAlBA,0BACE,8BAIA,4CACE,eAx0KqB,CAy0KrB,kBAz0KqB,CAsRzB,yBACE,0BA2jKuC,CAIzC,0BACE,gBACA,eApRmB,CAqRnB,iBACA,gBAEF,iBACE,UAIJ,UACE,eACA,kBACA,aACA,mBACA,WACA,kCAiBA,sBACA,WArTqB,CAqSrB,oBACE,eAGF,gBACE,aAGF,mBAxtKA,0BAD2B,CAE3B,wBAF2B,CAG3B,uBAH2B,CAI3B,qBAJ2B,CAK3B,oBAL2B,CAM3B,gBAN2B,CA2tKzB,WACA,mBACA,gBACA,uBAMJ,YACE,cACA,kBACE,cACA,eACA,yBACA,aACA,gBAEF,sBACE,kBACA,mBAIJ,8CACE,oBACE,6BAEF,eACE,uBAKF,uDAhoKA,iBAioK6B,CAjoK7B,kBAgzJsB,CA/yJtB,iEACE,iBA8yJoB,CA/yJtB,iEACE,kBAgoKoD,CA9kKtD,qEACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,+EACE,SA4DsB,CA7DxB,+EACE,OA6D0B,CAE1B,4EACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,2EACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,0FACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,gEACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,0EACE,yBAEA,gFACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,iEACE,eAIA,uFACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA0+JF,qEAtoKF,2BAuoK8B,CAvoK9B,iBAwoK+B,CAvoK/B,+EACE,gBAqoK8D,CAtoKhE,+EACE,4BAsoKmC,CASvC,WACE,sBACA,kBACA,sBACA,UA52KgB,CA82KhB,WAVqB,CAWrB,eAXqB,CAYrB,SACA,cACA,iCAEA,cACE,gBASF,qBACE,aAIF,qDAEE,aACA,2BAIF,kGAEE,mDAl4Ka,CAs4Kf,+DAEE,gBACA,aACA,+BAIF,uKAIE,gBACA,aACA,+BAIF,2CACE,gBACA,aACA,+BAIF,wCACE,gBACA,aACA,gCAIF,wEACE,qGAEA,mBACA,uBAIF,+CACE,qGAKF,wCACE,qGAEA,mBACA,uBAKJ,oCACE,aAGF,4BACE,OACA,MACA,gCACA,gDACE,mCAIJ,kBACE,UACA,MACA,8BACA,4BACE,2BAIJ,yBACE,WACE,eA1HoB,EA8HxB,yBACE,WACE,wBACA,4BACA,6BAKJ,8CACE,4BACE,4BAEF,kBACE,4BA8BJ,4BACE,GACE,qBAEF,IACE,mBAEF,KACE,sBAIJ,oCACE,GACE,qBAEF,IACE,qBAEF,KACE,oBAIJ,mCACE,GACE,qBACA,UAEF,IACE,mBACA,UAEF,KACE,oBAaJ,UACE,WAzEa,CA0Eb,eAzEiB,CA0EjB,kBACA,gBACA,iBACA,UACA,cACA,mBAEA,8BACE,sBAGF,6BACE,aACA,WACA,YAGF,6BACE,kBAMF,8BACE,WACA,kBACA,SACA,UApGmB,CAsGrB,oBACE,kBACA,OACA,QACA,YAEF,yBACE,oDACA,iCAEF,0BACE,kBACA,OACA,QACA,YAEF,iCAIE,WACA,YAMF,8BACE,kBA75KF,MA85KiC,CAC/B,QACA,qCACA,oDACA,sCAj6KF,wCACE,SA45KkC,CA35KlC,OA25K+B,CAMjC,oBACE,UA7EF,kBAx1KA,UAy1K+B,CAC/B,SACA,UA/DoB,CAgEpB,WAhEoB,CAiEpB,mBA0FE,qBACA,oDAv7KF,8BACE,SAu1K4C,CAt1K5C,WAs1K6B,CAmF7B,0BACE,WACA,kBACA,UAnJgB,CAoJhB,WApJgB,CAqJhB,mBACA,iBACA,mBACA,mBAQJ,mBAGE,aACA,mBACA,uBAEA,kBACA,WACA,SAtJc,CAuJd,UAxJgB,CAyJhB,WA1JiB,CA2JjB,mBAEA,+CACA,kDAGA,yBACE,kBACA,WAh9KJ,QAi9KmC,CAC/B,kBAxKgB,CAyKhB,SACA,mCACA,oCACA,qBA5KgB,CA6KhB,uBAEA,UACA,kCACA,kDA19KJ,mCACE,SA+8KsF,CA98KtF,SA88KiC,CAajC,kCACE,UACA,eACA,iBAOJ,yBAhJA,kBAx1KA,UAy1K+B,CAC/B,QACA,UArD0B,CAsD1B,WAtD0B,CAuD1B,mBA6IE,qBACA,UAEA,mDA5+KF,mCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAsJ/B,6BAvJA,kBAx1KA,UAy1K+B,CAC/B,SACA,UAsJI,CArJJ,WAsJI,CArJJ,mBAuJE,qBACA,gBAlN2B,CAmN3B,mBACA,aAt/KF,uCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAkK7B,0BACE,UAIJ,gBACE,aAKA,+EAEE,gBAMF,mFAEE,aAKE,gFACE,qBAIA,0FACE,mBACA,UAEF,qFACE,8DAOF,oFACE,mBAWF,oFACE,mBACA,qEAEF,+EACE,sEAMJ,0IACE,mBAEF,4RAEE,UACA,wCAMJ,qDACE,mBAEF,8GAEE,UACA,wCAMJ,mCACE,aAEF,oCACE,UAEF,6CACE,UAEF,8BACE,qBAEF,uCACE,cAIJ,uBACE,sBACA,gBA/Ue,CAgVf,YAEA,0CACE,OACA,iBACA,oBACA,UAvVS,CAwVT,kBACA,aACA,uBAGF,2CACE,YACA,SA5ViB,CA6VjB,MACA,2BAGF,2CACE,SACA,mBACA,qBACA,SAEA,2DACE,SAGF,0DACE,WAIJ,sCACE,SAIA,6CAGE,WACA,SAHW,CAKX,+CAGA,mDACE,SATS,CAUT,UACA,kCACA,eACA,qCACA,sBArXY,CAsXZ,wBAEA,UACA,kCACA,+BAGF,4DACE,UACA,eACA,iBAOF,mMACE,MAMJ,qDACE,mBAEF,8GAEE,UACA,wCAKJ,uDA1sLF,SA2sLuB,CA3sLvB,OA4sLwB,CA3sLxB,iEACE,MAysL2B,CA1sL7B,iEACE,UA0sLyB,CAGvB,iDACE,YACA,MAMR,oBACE,aACA,mBACA,mBAQE,iGACE,cAPU,CAQV,eACA,WATU,CAUV,mDAn7LW,CAo7LX,oCAIJ,iDApuLA,iBAutLe,CAttLf,2DACE,iBAmuL4D,CAluL5D,gBAotLa,CAiBf,gDAxuLA,gBAutLe,CAttLf,0DACE,gBAuuL4D,CAtuL5D,iBAotLa,CAqBf,iCACE,sBAEA,2HAEE,eACA,cACA,kBAKF,0DACE,kBAzvLJ,iBA0vLmD,CAC/C,YACA,iBA3vLJ,oEACE,cAwvLuD,CAvvLvD,kBAuvLiD,CAOrD,8CACE,qCACE,8BAKJ,iBACE,UACA,MACA,OACA,QACA,6BAEA,2CAEA,sCACE,+BACA,oFACE,mDAYN,kCACE,GACE,+BAEF,KACE,wCAPsB,EAU1B,mCACE,GACE,wCAZsB,CAcxB,KACE,gCAMF,gDAKE,+BAJA,8DACE,SAKF,gEACE,UAGF,qEACE,gBAGF,0HACE,oDAMN,cACE,cACA,cAjDoB,CAkDpB,eAhDsB,CAiDtB,eApDsB,CAqDtB,cAjDiB,CAkDjB,kBAEA,kCACE,cACA,YAxDgB,CA2DlB,oCACE,cACA,UACA,kBAIJ,iCACI,mBAGJ,8BACI,mBAUF,0BACE,eAthM8B,CAuhM9B,mBAIJ,UACE,cACA,mBACA,eACA,aACA,iBACA,YACA,iBACA,mBACA,aAl4LA,mBAo4L0B,CAp4L1B,iBAg3Lc,CA/2Ld,oBACE,gBA82LY,CA/2Ld,oBACE,oBAm4LyC,CAE3C,uBAv4LA,mBAw4L4B,CAx4L5B,cAy4L6B,CAx4L7B,iCACE,aAs4LmC,CAv4LrC,iCACE,oBAu4L8B,CAGhC,oBACE,eAEA,kCACE,eAIJ,wBACE,YACA,UA1CW,CA2CX,WA1CY,CA2CZ,kBACA,iBAl5LF,gBAm5L+C,CAC7C,WAn5LF,kCACE,gBAi5LkD,CAh5LlD,eAg5L6C,CAI/C,oCA95LA,oBA+5L6B,CA/5L7B,eAg6L4B,CA/5L5B,8CACE,gBA65LoC,CA95LtC,8CACE,mBA85L+B,CAK/B,2FAEE,gBAKF,sCACE,UACA,SACA,WACA,YAIJ,oBACE,yBACA,eACA,WAGF,kBACE,SACA,WACA,QACA,WAhFgB,CAiFhB,kBACA,kBAGF,8BACE,QACA,OACA,WACA,kBACA,+BACA,UAEF,yCACE,kCAGF,oBACE,kBACA,SACA,OACA,MACA,aACA,WAtGgB,CAuGhB,UAvGgB,CAwGhB,kBACA,0GAptMoB,CAstMpB,2BACE,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,yCACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKF,0HAGE,0BA1rMS,CA2rMT,+CAEF,0EAEE,sBAMN,8CACE,mCACE,sBAEF,8CACE,yBAEF,qCACE,uBAQJ,+BACE,aACA,cACA,gBAGF,YACE,kBACA,MACA,OACA,QACA,SACA,WACA,UAGF,QACE,cACA,SACA,kBACA,gBACA,kBACA,cACA,wDACE,iBAEF,8BACE,mBA7BiB,CA+BjB,8CACE,kBACA,SACA,OACA,QACA,WApCe,CAqCf,UAEF,sDACE,MACA,WAzCe,CA6CjB,kDACE,aACA,kBACA,SACA,UACA,WACA,YACA,iBAGA,mDACE,kBAKJ,0CACE,qBACA,mBAGA,0EACE,SAMR,gBACE,cACA,kBAEA,0BACA,8DACE,YACA,UAlFmB,CAmFnB,kBACA,QACA,2BACA,gBACA,UACA,eACA,eACA,+CACA,iDAhzMgB,CAizMhB,0EACE,aAEF,sFACE,YACA,eAEF,gFACE,gBAEF,8EACE,kBACA,QACA,SACA,gCAIF,kFACE,2CAGJ,+BA3nMA,MA4nMiC,CAC/B,yDA5nMF,yCACE,SA0nMkC,CAznMlC,OAynM+B,CAGjC,+BA/nMA,OAgoMiC,CAC/B,yDAhoMF,yCACE,UA8nMkC,CA7nMlC,MA6nM+B,CAI/B,uCACE,+CAIF,sDACE,WACA,mBACA,kEACE,YAMR,eAEE,kBACA,gBACA,cACA,WA7ImB,CA7mMnB,qBACE,WACA,cACA,WAwvMF,iCACE,kBACA,MA3pMF,MA4pMiC,CA3pMjC,2CACE,SA0pMkC,CAzpMlC,OAypM+B,CAEjC,4BACE,cAEF,8BACE,aACA,sBACA,kBACA,sCACE,WACA,qBAKN,sBAEE,WAnKmB,CAoKnB,aACA,wDACA,kBAjrMA,MAkrM+B,CAC/B,0BArxMA,4BACE,WACA,cACA,WAgGF,gCACE,SAgrMgC,CA/qMhC,OA+qM6B,CAE/B,qCACE,kBACA,uBAEF,kCACE,eAEF,yBACE,kCACE,iBAKN,wBACE,cACA,kBACA,QA1LmB,CA2LnB,OACA,QACA,SACA,gBAGF,eACE,aACA,kBACA,MACA,OACA,QACA,SACA,wDACA,cAEA,0BACA,4BACE,YACA,gBAEF,wDACE,gBAEF,uCAruMA,2BAsuM0B,CACxB,iCACA,kBAvuMF,iDACE,0BAouM2C,CAG3C,yCACE,gCACA,oBAl7MuB,CAm7MvB,kBAGJ,wCA/uMA,0BAgvM0B,CACxB,iCACA,kBAjvMF,kDACE,2BA8uM0C,CAG1C,0CACE,gCACA,oBA57MuB,CA67MvB,kBAGJ,mBACE,cACA,YACA,4BACE,iCAKN,WAGE,kBACA,UACA,WACA,SACA,WACA,mBACE,+FAGF,oBACE,+FAKJ,OACE,kBACA,WACA,aAGF,QACE,eACA,kBACA,iBACA,aACA,gEACA,eACA,mBACA,kBACA,yBAnyMA,UAoyMoB,CACpB,gBACA,sBACA,gBACA,uBAvyMA,kBACE,WAkyMwB,CAK1B,iCACE,gBACA,aAEF,kBACE,eAEF,oBACE,oBACA,mBACA,iBACA,uBACA,WACA,eAEF,iBACE,gBAIJ,wDACE,yBACA,0BAUF,eACE,cAGF,SACE,kBACA,WA/iNc,CAijNd,sBACA,eACA,gBAGA,WA5lNa,CA+lNb,UACA,mDAviNe,CAyiNf,2BACE,aACA,mBACA,mBAEA,iBACA,eAEA,gBAKA,eAEA,uCACA,kBACA,eAEA,gBAGA,6CACA,mDAhkNa,CA6Mf,0BAq3MgC,CAj4MhC,mCACE,WACA,eAi3MiC,CAh3MjC,kBACA,qBASF,qCACE,wBAm3M0C,CAE1C,gCAEE,YACA,sBACA,YAIJ,oBACE,mBAEA,sCACE,mBAKF,2CACE,mDAllNU,CA2lNZ,+JACE,mDAhmNW,CAomNf,kBACE,UACA,oCACE,kCAGA,2CACE,mCAGJ,kCACE,UACA,oDACE,+BASJ,oDACE,UACA,kCAIA,+DACE,kCAIF,iEACE,iCAIF,2DACE,mCAKN,oBACE,iBACA,iBACA,eACA,eACA,yBACA,YAGF,oBACE,YA78MF,cA88M6B,CA98M7B,eAq0M4B,CAp0M5B,8BACE,gBAm0M0B,CAp0M5B,8BACE,aA68MwD,CAI5D,yBACE,SACE,OACA,QACA,WACA,eACA,YACA,gBACA,SACA,UAII,+DACE,kCAIF,iEACE,kCAOV,yBACE,SACE,gBACA,mBACE,SAEF,iBACE,OAEF,kBACE,QAEF,gBACE,MAIF,mBAv/MF,MAw/MmC,CAv/MnC,6BACE,SAs/MoC,CAr/MpC,OAq/MiC,CAGjC,iBA3/MF,OA4/MmC,CA3/MnC,2BACE,UA0/MoC,CAz/MpC,MAy/MiC,CAS7B,iEACE,kCAIF,kEACE,kCAOV,0BAEI,2BACE,iBAKN,8CACE,SACE,uBAMJ,oBACE,2BAiBF,WACE,sBACA,aACA,sBAEA,kBACA,UAEA,eACA,eAtBkB,CAuBlB,WAEA,mCACE,uBA/wNyB,CAgxNzB,yDA/wNgC,CAgxNhC,gDAGF,mEACE,iCAGF,6BACE,WAGF,oDAGE,sBAMF,sBACE,gBAGF,mBACE,YAnDqB,CAoDrB,gBApDqB,CAqDrB,gBArDqB,CAwDvB,0BACE,WA1D4B,CA2D5B,eA3D4B,CA4D5B,eA5D4B,CA8D5B,4CACE,YACA,gBACA,gBAIJ,sBA7mNA,gBA+iNyB,CA9iNzB,gCACE,gBA4mNwE,CA3mNxE,iBA4iNuB,CAmEvB,8BACE,UAGE,iEACE,aAOV,kBACE,cAp6NyB,CAq6NzB,sBACA,sBACA,gBACA,aACA,mBACA,mBAEA,WACA,WAjGkB,CAkGlB,eAlGkB,CAmGlB,eACA,SAEA,+DACE,kBACA,oBACA,eAGF,oBACE,cACA,qBAEF,+BACE,aACA,mBAEF,8BACE,eAEF,6BACE,aACA,gBAEA,iFACE,uBAj3NuB,CAk3NvB,yDAj3N8B,CAk3N9B,gDAKA,uGACE,gBAIN,yCA/qNA,gBAkjN0B,CAjjN1B,mDACE,gBA8qNyE,CA7qNzE,iBA+iNwB,CAgI1B,wCAlrNA,iBAkjN0B,CAjjN1B,kDACE,iBAirNyE,CAhrNzE,gBA+iNwB,CAoI1B,qCAtrNA,iBAkjN0B,CAjjN1B,+CACE,iBAqrNyE,CAprNzE,gBA+iNwB,CAsIxB,gDAxrNF,cAyrNiD,CAxrNjD,0DACE,iBAurNkD,CAtrNlD,aAsrN+C,CAIjD,8CA/DF,kBAgEI,8BAKJ,sEACE,WACE,eAzJgC,CA4JlC,kBACE,WA7JgC,CA8JhC,eA9JgC,EAmKpC,uEACE,WACE,eApKiC,CAuKnC,kBACE,WAxKiC,CAyKjC,eAzKiC,EAwLrC,YACE,qBACA,oBACA,kBACA,gBACA,UACA,gBACA,cAhBoB,CAiBpB,mBACA,uBACA,WAjBkB,CAkBlB,gBAlBkB,CAmBlB,kBAfsB,CAgBtB,iBAhBsB,CAiBtB,0BACE,+BACA,iBAEF,4BACE,6BACA,gBAzBoB,CA2BtB,6BACE,4BACA,eA7BoB,CA+BtB,2BACE,8BACA,kBAGF,yBA/BF,YAgCI,cA1CkB,CA2ClB,WAzCgB,CA0ChB,gBA1CgB,CA2ChB,iBAvCoB,CAwCpB,gBAxCoB,CAyCpB,2CACA,4CA5CoB,CA6CpB,4CA7CoB,CA8CpB,8CAGF,wBACE,mBAEF,oBACE,mDAx+Na,CAy+Nb,0BACA,mBACA,WAEF,oBACE,mDA1+NY,CA2+NZ,0BACA,mBACA,UAIJ,aACE,gBACA,mBAGA,uBAGA,qBACE,mBAIF,kBACE,QAKJ,6BACE,sBACA,cACA,SACA,gBACA,UACA,kBAEA,yDACE,SACA,sBACA,OACA,SACA,kBACA,UACA,kBACA,QACA,MACA,iCAGF,sDACE,sBACA,WACA,cACA,SACA,UACA,UAGF,0DACE,sBACA,OACA,SACA,UACA,kBACA,QACA,MAKF,8EACE,gBACA,kBAGF,+EAGE,WApD6B,CAlzN/B,UAu2NiC,CAC/B,mBAv2NF,yFACE,UAq2NqC,CAp2NrC,SAo2N+B,CAKnC,qCACE,0GAhnOsB,CAknOxB,mBACE,0GAlnOsB,CAonOxB,mBACE,0GApnOsB,CAsnOxB,qCACE,2GAtnOsB,CAwnOxB,mBACE,2GAxnOsB,CA0nOxB,mBACE,4GA1nOsB,CA4nOxB,qCACE,4GA5nOsB,CA8nOxB,mBACE,4GA9nOsB,CAgoOxB,mBACE,4GAhoOsB,CAkoOxB,sCACE,6GAloOuB,CAooOzB,oBACE,6GApoOuB,CAsoOzB,oBACE,6GAtoOuB,CAwoOzB,sCACE,6GAxoOuB,CA0oOzB,oBACE,6GA1oOuB,CA4oOzB,oBACE,6GA5oOuB,CA8oOzB,oBACE,8GA9oOuB,CAgpOzB,oBACE,8GAhpOuB,CAkpOzB,oBACE,8GAlpOuB,CAopOzB,oBACE,8GAppOuB,CAspOzB,oBACE,+GAtpOuB,CAwpOzB,oBACE,+GAxpOuB,CA0pOzB,oBACE,+GA1pOuB,CA4pOzB,oBACE,+GA5pOuB,CA8pOzB,oBACE,+GA9pOuB,CAiqOzB,8CACE,cACE,uBAIJ,aACE,8BACE,uBAOJ,0EACE,wBAaF,4BACE,aACE,SACA,WACA,gBACA,aA/4MA,YACC,QAeD,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SAmBF,gFA5mBF,aA8mByD,CA7mBzD,wHACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,gFA5mBF,cA6mB+D,CA5mB/D,wHACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,oFACE,2BAeF,oFA7oBF,0BA8oBiD,CA7oBjD,4HACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,0CAGE,2BACA,sBACA,oBAIF,6HAME,2BAIF,kIAME,uBAIF,mHAME,yBAIF,gKAME,6BAIF,qKAME,8BAUF,gJAME,uBACA,yBAIF,qJAME,mBACA,qBACA,eAIF,+JAME,eACA,sBAIF,sIAME,qBACA,uBAIF,0JAME,oBACA,sBA9NF,mCAEA,+CACA,kDACA,+CACA,+CACA,mDACA,iDAME,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAGe,YAGjB,uBACE,cACA,eACA,cACA,sBArBF,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAMF,uBACE,cACA,eACA,cACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,UACE,cACA,eACA,gBACA,sBAGF,sBACE,cACA,eACA,gBACA,sBAMF,yBACE,cACA,eACA,gBACA,sBA2BF,8EACA,8EAIA,4FACA,4FAIA,+FACA,+FAIA,0FACA,0FAGA,8BAIA,6FACA,6FAGA,kCA9GF,mCACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,qCACA,+BAkPA,8CAGE,YAGF,mMAaE,YAIF,+KASE,aAKF,4CAGE,WAGF,0LAaE,WAIF,gJAQE,YAGF,aACE,eAGF,eACI,iBAGJ,aACE,SACA,WACA,gBACA,YAwgMJ,yBAGI,iEACE,aAz5MF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAu1MF,yBA/5MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCA61MF,+CAEI,sGACE,aAGJ,mDACE,aA56MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA02MF,yBAl7MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAg3MF,gDAGI,+MACE,aAGJ,oEACE,aAh8MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA63MF,0BAr8MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAk4MF,iDAGI,0VACE,aAGJ,qFACE,aAl9MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAg5MF,0BAx9MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,qCAxEE,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,kCAs5ME,ugBACE,aAGJ,sGACE,cAMJ,aAEE,wCACE,yBN13OJ,MACE,2BACA,4BACA,mCACA,8BACA,kCACA,6BACA,4BAIA,uCAEE,iBAUJ,eACE,kBAIF,oBACE,QACA,uBAGF,0BACE,uBACA,kBAGF,mBACE,eACA,iBACA,WACA,wBAEA,yBACE,cAIJ,yBACE,eACA,YAGF,uBACE,yBAGF,sCAEE,iBAGF,aACE,mBACA,gBACA,uBAIA,kBACE,gBACA,uBACA,mBAKF,2KAGE,yCACA,6CAKF,2BACE,qBAKF,iCACE,UACA,kCAGF,uCACE,mFAKA,mBAEA,6CACE,mFAQJ,kBACE,aACA,WACA,yBACA,cACA,yBACA,kBACA,eACA,kBACA,mBAEA,8BACE,kBACA,iBAGF,wCACE,WACA,YACA,cAEA,qBAIF,uDACE,gBAEA,4DACE,gBAMJ,yFAEE,eACA,YACA,SACA,wBACA,iBACA,aACA,uBACA,mBACA,uBACA,uGACE,eACA,YACA,WAIJ,+DAEE,eACA,sBACA,sLAEE,cACA,6BACA,qBAKF,wFAEE,cACA,cAIJ,uCACE,qBACA,+CACE,eAMR,gBACE,aACA,sBACA,qBACE,YACA,eACA,kBAIJ,cACE,YACA,aACA,gBACA,oBACA,8BAEA,4CAEE,eACA,kBACA,kGAEE,WAKN,MACE,WAGF,+CACE,sBACA,uBAGF,YACE,6BACA,sBACA,YACA,UACA,eACA,SACA,sBACA,sBACA,uBACA,0BACA,kBACA,iDACA,oDACA,4CACA,+EAEA,wEACA,qFAEA,qEAGF,yBACE,qBACA,UACA,8EAEA,iFAEA,yEAIF,kBACE,kCACA,kDACA,sBACA,2BACA,uCAGF,aACE,UAGF,8BACE,cAGF,iCACE,yBAGF,YACE,kCACA,kDACA,sBACA,2BACA,uCAGF,kBACE,kCACA,kDACA,sBACA,2BACA,uCAGF,yCAEE,cACA,6BACA,WACA,YACA,UACA,eACA,SACA,sBACA,iCACA,uBACA,0BACA,kBACA,4DACA,+DACA,uDACA,+EAEA,wEACA,qFAEA,qEAGF,wDACE,cAGF,sBACE,sBAGF,uCAEE,cAGF,0BACE,4BAGA,2BAGF,kFAKE,sBACA,uBACA,wBAGF,mCACE,sBACA,mBACA,wBACA,mBAGF,yDACE,kBACA,wBACA,sBAGF,oEACE,4BAGF,4EACE,6BACA,uBACA,2BAGF,8DACE,uBACA,2BAGF,wDACE,uBAGF,wFAIE,sBAGF,0FAIE,qBAGF,yDACE,mBACA,qBACA,YAGF,8EACE,sBACA,kBAGF,kBAEE,eACA,WACA,gBACA,YAOF,UAGE,6BAGF,yBACE,UACA,SACA,eACA,eAIF,QACE,cACA,WACA,YAKF,wBAEE,WAJoB,CAKpB,eALoB,CAQpB,eACA,UAGF,wBAEE,YACA,yBAGA,gBAEA,yBACA,wBACA,gBACA,sBAGF,uCACE,yBACA,cACA,gCAGF,qCACE,yBACA,wBACA,kBACA,gBAGF,wCACE,yBACA,wBACA,kBACA,gBAGF,0BACE,kBACA,YACA,UAGF,6CACE,qBACA,kBACA,gBACA,wBACA,sBACA,kBAGF,sDACE,qBAGF,2DACE,cAGF,+DACE,cAEF,oDACE,yDACA,WACA,kBACA,WACA,WACA,WACA,YACA,4BACA,4BACA,wBAGF,mDACE,eACA,iBACA,kBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,0CACE,qBACA,kBAGF,kDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,eACA,kBACA,gBACA,kBACA,WAGF,wCACE,qBAGF,yCACE,qBAGF,yCACE,qBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,iDACE,kBACA,yBACA,yBACA,QAGF,wDACE,WACA,WACA,yDACA,iCACA,yBAGF,gDACE,QACA,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,gDACE,iBACA,yBACA,yBACA,QAGF,uDACE,YACA,UACA,yDAGF,uBACE,WAIF,SACE,iBACA,yBAEA,gBACA,kBACA,cACA,aAGF,mBACE,cACA,gBACA,sBAGF,kBACE,WACA,YACA,kBAGF,6BACE,WACA,YACA,kBACA,OACA,MAGF,oCACE,WACA,cACA,cACA,UACA,WACA,sBACA,mBACA,oEACA,4DAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,qCACE,8BACA,sBAGF,qCACE,4BACA,oBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,YAGE,UAGF,IACE,WAIJ,8BACE,YAGE,UAGF,IACE,WAIJ,4CACE,uBAGF,4CACE,WACA,yBAGF,4CACE,qBAGF,wBACE,qBAGF,gCACE,gBACA,YACA,kBACA,YAGF,mCACE,gCAGF,mCACE,8BAGF,gCACE,uDAEE,eAIJ,gCACE,uDAEE,cAIJ,mBACE,yBAGF,mBACE,uBAGF,YACE,qBAGF,eACE,kBACA,gCACA,YACA,aACA,mBACA,kBAIF,oBACE,aACA,mBACA,uBAGF,uBACE,GACE,UAGF,IACE,WAGF,KACE,WAIJ,aACE,YACA,iBAEA,mBACE,YACA,WACA,YACA,yBACA,kBACA,aACA,qBACA,qCAIJ,cACE,mBACA,YACA,aACA,8BACA,mBACA,uBACA,gBACA,iBACA,kBACA,kBACA,sBACA,wCACA,YACA,mBACA,iBACA,yBAGA,8BACE,eACA,cACA,cAGF,8BACE,cACA,eAGF,wBACE,cACA,aACA,YACA,8BACA,mBACA,gBACA,kBACA,gCACE,iBACA,kBACA,gBAMJ,yCACE,sBACA,yDACE,UACA,kBACA,kBACA,eAEF,0DACE,iBACA,WAIJ,0EAEE,iBACA,WACA,YACA,sBAEF,oCACE,eACA,sBACA,gBACA,iBACA,aACA,yBACA,kBACA,sBACA,iBAGA,kFAEE,eAQA,wBACE,yBACA,2BAKJ,2FAGE,mBAQA,yBACE,sBACA,wBAKJ,8FAGE,mBAKN,oBACE,sBACA,sCACE,aACA,8BAEA,+DACE,WACA,gBACA,cACA,mBACA,uBAGF,gDAEE,uBACA,YAEA,qDACE,gBACA,eACA,gBACA,uBAGF,oDACE,yCACA,qBAbc,CAcd,cACA,kBACA,kCAEA,0DACE,iBACA,WACA,cACA,kBACA,MACA,QACA,kBACA,mBACA,iCACA,mBACA,mCACA,kCACA,oCAIJ,6GAEE,mBACA,wBAGF,yGAEE,uBACA,mBAGF,yDACE,yCACA,qBAjDc,CAoDhB,wDACE,4BAGF,wDACE,4BAGF,gHAEE,4BAGF,gDACE,4BAGF,oEACE,yBAGE,wFACE,aAIJ,uFACE,iCAIJ,qDACE,mBAMR,UACE,sBACA,wBACA,4DACA,iCACA,aACA,sBACA,uBACA,eACA,iBAEA,iCAEE,kBACA,yCACA,uBACA,wBACA,WAGF,mBACE,UACA,UACA,mBACA,iBACA,eACA,aACA,uBACA,oCACE,WACA,iBAIJ,2BACE,UAGF,iEAEE","sources":["webpack://motion-chat/./src/styles/app.scss","webpack://motion-chat/./node_modules/mdi/scss/_path.scss","webpack://motion-chat/./node_modules/mdi/scss/_core.scss","webpack://motion-chat/./node_modules/mdi/scss/_icons.scss","webpack://motion-chat/./node_modules/mdi/scss/_extras.scss","webpack://motion-chat/./node_modules/mdi/scss/_animated.scss","webpack://motion-chat/./node_modules/angular-material/angular-material.scss"],"names":[],"sourceRoot":""}
\ No newline at end of file
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..0d2e9d682a439f63ce9eda7c56435b4d5c805106
--- /dev/null
@@ -0,0 +1,36 @@
+<div class="container-media-viewer">
+  <div
+    ng-if="$ctrl.source"
+    ng-switch="$ctrl.type | typeFromMimeType"
+    class="attachment media-container"
+    ng-style="{'width': $ctrl.size.width, 'height': $ctrl.size.height }"
+  >
+    <img
+      ng-switch-when="image"
+      adjust-img-size
+      class="media-photo"
+      ng-src="{{$ctrl.source}}"
+      ng-style="{'opacity' : ($ctrl.hover === true) ? .75 : 1}"
+    />
+
+    <video
+      ng-switch-when="video"
+      adjust-video-size
+      playsinline="true"
+      controls
+      disablepictureinpicture
+      controlslist="nodownload nofullscreen noplaybackrate"
+      class="media-video"
+      ng-click="$ctrl.onVideoClick($event)"
+      ng-src="{{$ctrl.source}}"
+    ></video>
+    <md-button
+      title="{{settings.closingMessageButton}}"
+      class="md-raised media-container-download-button"
+      ng-click="$ctrl.downloadMedia()"
+      ng-style="{'background-color': '{{settings.color_button}}', 'color': '{{settings.textButtonColor || settings.textColor}}'}"
+    >
+      <i class="mdi mdi-download mdi-24px"></i>
+    </md-button>
+  </div>
+</div>
similarity index 63%
rename from snippet/3.5.0/scripts/vendor-urlMatcher.js.map
rename to snippet/3.8.0/scripts/vendor-urlMatcher.js.map
index e580e96e96922e0faeeec5bcfd99e1b6dd7ecc88..9a58f6f305491ed2b0299f63c246c9658caf0809 100644 (file)
       <div
         ng-class="{'in': message.direction === 'in', 'out': message.direction ==='out' && message.UserId, 'auto': message.direction ==='out' && !message.UserId}"
       >
-        <div
-          ng-if="message.AttachmentId"
-          ng-bind-html="message.body"
-          class="message"
-        ></div>
+        <div ng-if="message.AttachmentId">
+          <div ng-switch="message.Attachment.type | typeFromMimeType">
+            <audio-player
+              ng-switch-when="audio"
+              source="message.urlFromBody"
+              type="message.Attachment.type"
+              dispose-source="true"
+            ></audio-player>
+            <media-viewer
+              ng-switch-when="image|video"
+              ng-switch-when-separator="|"
+              source="message.urlFromBody"
+              type="message.Attachment.type"
+              dispose-source="true"
+            ></media-viewer>
+            <document-wrapper
+              ng-switch-default
+              source="message.urlFromBody"
+              document-name="message.Attachment.name"
+            ></document-wrapper>
+          </div>
+        </div>
         <div
           ng-if="!message.AttachmentId"
           ng-bind-html="message.body | embed:vm.emojiOptions"
 <!-- / CHAT CONTENT -->
 
 <!-- CHAT FOOTER -->
-<div layout="row" layout-align="center center" class="chat-footer md-padding">
+<div
+  ng-show="!vm.recording"
+  ng-hide="vm.recording"
+  layout="row"
+  layout-align="center center"
+  class="chat-footer md-padding"
+>
   <div id="input_text" layout="row" layout-align="end center">
     <input id="emojionearea" />
-
     <md-button
       id="attachmentButton"
       ng-if="settings.enableCustomerAttachment"
       type="button"
       flow-init="vm.ngFlowOptions"
       flow-btn
+      flow-name="vm.ngFlow.flow"
       flow-file-added="vm.fileAdded($file, $event, $flow)"
     >
       <i class="mdi mdi-attachment mdi-24px mdi-light"></i>
     </md-button>
+
+    <!-- Rec button -->
+    <md-button
+      id="recButton"
+      ng-if="settings.enableCustomerAudioRecording"
+      class="md-fab md-mini md-warn rec-button-group"
+      type="button"
+      ng-click="vm.onRecordingStart($event)"
+    >
+      <i
+        id="recButton_icon"
+        class="mdi mdi-microphone mdi-24px mdi-light icon_color"
+      ></i>
+    </md-button>
   </div>
 
   <md-button
     ></i>
   </md-button>
 </div>
+
+<!-- Rec controls -->
+<div
+  ng-if="settings.enableCustomerAudioRecording"
+  ng-show="vm.recording"
+  ng-hide="!vm.recording"
+  layout="row"
+  layout-align="end end"
+  class="chat-footer md-padding"
+>
+  <!-- record time -->
+  <div class="record-time" ng-if="!vm.recordingStopped"></div>
+
+  <!-- audio player -->
+  <div ng-if="vm.recordingStopped" style="margin: 1px">
+    <audio-player source="vm.recordedAudioUrl" dispose-source="true" />
+  </div>
+
+  <!-- stop recording button -->
+  <md-button
+    ng-if="!vm.recordingStopped"
+    id="stop_rec_button"
+    class="md-icon-button"
+    style="margin: 1px"
+    ng-click="vm.onRecordingStop()"
+  >
+    <i class="mdi mdi-stop mdi-24px icon_color"></i>
+  </md-button>
+
+  <!-- delete recording button -->
+  <md-button
+    id="delete_rec_button"
+    class="md-icon-button md-warn md-mini"
+    style="margin: 1px"
+    ng-click="vm.onRecordingDelete()"
+  >
+    <i class="mdi mdi-delete mdi-24px mdi-warn"></i>
+  </md-button>
+
+  <!-- send recording button -->
+  <div class="btn-send-container" style="margin: 1px">
+    <div class="record-ripple"></div>
+    <md-button
+      id="send_rec_button"
+      class="md-icon-button md-mini"
+      ng-click="vm.onRecordingSend()"
+      flow-init
+      flow-name="vm.ngFlow.flow"
+      flow-file-added="vm.fileAdded($file, $event, $flow)"
+    >
+      <i class="mdi mdi-send mdi-24px mdi-success"></i>
+    </md-button>
+  </div>
+</div>
 <!-- / CHAT FOOTER -->
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..70aa42ab84ff8bba1693e0c82dbd2f50832227bf
--- /dev/null
@@ -0,0 +1,18 @@
+<div
+  class="document-container"
+  ng-mouseenter="$ctrl.hover = true"
+  ng-mouseleave="$ctrl.hover = false"
+  ng-click="$ctrl.downloadDocument()"
+>
+  <div class="document-wrapper">
+    <div class="document {{$ctrl.documentClassExtension}}">
+      <div class="document-ico">{{$ctrl.documentExtension}}</div>
+      <div class="document-name">
+        <div class="middle-ellipsis-element">{{$ctrl.documentName}}</div>
+      </div>
+      <div class="document-download" ng-show="$ctrl.hover">
+        <i class="mdi mdi-download mdi-24px"></i>
+      </div>
+    </div>
+  </div>
+</div>
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..e2119a76e0246fe40c3d1855e242dcc38616928e
--- /dev/null
@@ -0,0 +1,42 @@
+<div class="audio-player">
+  <div ng-switch="$ctrl.loading">
+    <!-- loading spinner -->
+    <md-progress-circular
+      ng-switch-when="true"
+      class="md-hue-2"
+      md-diameter="26px"
+    ></md-progress-circular>
+
+    <!-- PLAY/PAUSE BUTTON -->
+    <div
+      ng-switch-when="false"
+      class="play-pause-btn"
+      ng-click="$ctrl.togglePlay()"
+    >
+      <span class="material-icons playPause"> {{$ctrl.playPause}} </span>
+    </div>
+  </div>
+
+  <div class="controls">
+    <div ng-if="$ctrl.options.showCurrentTime" class="current-time">
+      {{$ctrl.currentTime}}
+    </div>
+    <md-slider
+      ng-disabled="$ctrl.loading"
+      ng-model="$ctrl.sliderTime"
+      ng-change="$ctrl.onSliderTimeChanged()"
+      min="0"
+      max="100"
+      aria-label="blue"
+      id="blue-slider"
+      class="md-primary slider"
+    >
+    </md-slider>
+    <span ng-if="$ctrl.options.showTotalTime" class="total-time"
+      >{{$ctrl.totalTime}}</span
+    >
+  </div>
+  <audio crossorigin ng-hide="true" preload="metadata">
+    <source ng-src="{{$ctrl.source}}" type="{{$ctrl.type}}" />
+  </audio>
+</div>